king-2.21.120420/0000755000000000000000000000000011756425773011634 5ustar rootrootking-2.21.120420/king/0000755000000000000000000000000011756425772012563 5ustar rootrootking-2.21.120420/king/Manifest.mf0000644000000000000000000000007211531212702014626 0ustar rootrootMain-Class: king.KingMain Class-Path: itext.jar jogl.jar king-2.21.120420/king/build.xml0000644000000000000000000002431411677362242014402 0ustar rootroot KiNG kinemage viewer king-2.21.120420/king/tutorial/0000755000000000000000000000000011744310054014405 5ustar rootrootking-2.21.120420/king/tutorial/JoglTumblingObject.html0000644000000000000000000000024411531212656021022 0ustar rootroot JoglTumblingObject requires that the JOGL native libraries be installed, so it is available as an application rather than an applet. king-2.21.120420/king/tutorial/src/0000755000000000000000000000000011744310054015174 5ustar rootrootking-2.21.120420/king/tutorial/src/JoglTumblingObject.java0000644000000000000000000001114311531212656021566 0ustar rootrootpackage king.tutorial; import king.core.*; import king.points.*; import king.painters.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.Timer; import javax.media.opengl.*; import javax.media.opengl.glu.*; /** * JoglTumblingObject creates a decorative spiral ornament and sets it rotating. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Fri Dec 8 13:27:16 EST 2006 */ public class JoglTumblingObject extends JFrame implements ActionListener, GLEventListener { final boolean use3d = true; Kinemage kin = null; KView view = null; Engine2D engine2 = null; JoglEngine3D engine3 = null; GLCanvas canvas = null; Dimension glSize = new Dimension(); Timer timer = null; static public void main(String[] args) { new JoglTumblingObject(); } public JoglTumblingObject() { super("JoglTumblingObject"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); kin = createKinemage(); view = new KView(kin); view.setSpan(1.2f * view.getSpan()); engine2 = new Engine2D(); engine2.usePerspective = true; engine3 = new JoglEngine3D(); engine3.usePerspective = true; // Create and listen to an OpenGL canvas GLCapabilities capabilities = new GLCapabilities(); capabilities.setDoubleBuffered(true); // usually enabled by default, but to be safe... int fsaaNumSamples = 4; capabilities.setSampleBuffers(fsaaNumSamples > 1); // enables/disables full-scene antialiasing (FSAA) capabilities.setNumSamples(fsaaNumSamples); // sets number of samples for FSAA (default is 2) canvas = new GLCanvas(capabilities); canvas.addGLEventListener(this); // calls display(), reshape(), etc. canvas.setPreferredSize(new Dimension(400,400)); this.getContentPane().add(canvas); this.pack(); this.show(); timer = new Timer(1000 / 30, this); timer.start(); } Kinemage createKinemage() { Kinemage k = new Kinemage(); KGroup g = new KGroup(); k.add(g); KPaint[] colors = { KPalette.red, KPalette.green, KPalette.gold, KPaint.createLightweightHSV("silver", 240, 3, 90, 240, 3, 10) }; for(int c = 0; c < colors.length; c++) { KList list = new KList(KList.BALL); //list.setOn(false); list.setColor(colors[c]); list.setRadius(0.1f); g.add(list); double offset = (2.0 * Math.PI * c) / colors.length; for(double y = -1; y <= 1.001; y += list.getRadius()) { double r = 1 - Math.abs(y); double theta = (2.0 * Math.PI * y) + offset; BallPoint pt = new BallPoint(""); pt.setXYZ(r * Math.cos(theta), y, r * Math.sin(theta)); list.add(pt); } } for(int c = 0; c < colors.length; c++) { KList list = new KList(KList.VECTOR); //list.setOn(false); list.setColor(colors[c]); list.setWidth(4); g.add(list); double offset = (2.0 * Math.PI * c) / colors.length; VectorPoint prevPt = null; for(double y = -1; y <= 1.001; y += 0.02) { double r = 1 - Math.abs(y); double theta = (2.0 * Math.PI * y) + offset; VectorPoint pt = new VectorPoint("", prevPt); pt.setXYZ(r * Math.cos(theta), y, r * Math.sin(theta)); list.add(pt); prevPt = pt; } } return k; } public void actionPerformed(ActionEvent ev) { view.rotateY( (float) Math.toRadians(1.0) ); canvas.repaint(); } public void init(GLAutoDrawable drawable) {} public void display(GLAutoDrawable drawable) { if(use3d) { engine3.render(kin, view, new Rectangle(this.glSize), drawable.getGL()); } else { JoglPainter painter = new JoglPainter(drawable); engine2.render(kin, view, new Rectangle(this.glSize), painter); } } public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { this.glSize.setSize(width, height); } public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} }//class king-2.21.120420/king/tutorial/src/JoglDiveDebug.java0000644000000000000000000003114411531212656020517 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tutorial; import king.core.*; import king.points.*; import king.painters.*; import driftwood.r3.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.Timer; import javax.media.opengl.*; import javax.media.opengl.glu.*; //}}} /** * JoglDiveDebug is used for testing out rendering methods for * the Duke DiVE (6-sided VR cave). * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Fri Dec 8 13:27:16 EST 2006 */ public class JoglDiveDebug extends JFrame implements ActionListener { //{{{ CLASS: Screen //############################################################################## public class Screen implements GLEventListener { public GLCanvas canvas = null; public JoglEngine3D engine = null; public Dimension glSize = new Dimension(); String label; public Screen(GLCapabilities capabilities, String label) { this.label = label; canvas = new GLCanvas(capabilities); canvas.addGLEventListener(this); // calls display(), reshape(), etc. engine = new JoglEngine3D(); engine.usePerspective = true; engine.setFont(18); engine.caveClipping = true; } public void init(GLAutoDrawable drawable) {} public void display(GLAutoDrawable drawable) { //System.err.println(label); GL gl = drawable.getGL(); //byte[] b = new byte[1]; //gl.glGetBooleanv(GL.GL_STEREO, b, 0); //gl.glGetBooleanv(GL.GL_DOUBLEBUFFER, b, 0); //System.err.println(b[0]); //int[] i = new int[1]; //gl.glGetIntegerv(GL.GL_DRAW_BUFFER, i, 0); //System.err.println(i[0]+" === "+GL.GL_BACK_LEFT+" =/= "+GL.GL_BACK_RIGHT); engine.render(kin, view, new Rectangle(glSize), gl, eyePos); } public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { this.glSize.setSize(width, height); } public void displayChanged(GLAutoDrawable drawable, boolean modeChanged, boolean deviceChanged) {} } //}}} //{{{ Variable definitions //############################################################################## Kinemage kin = null; KView view = null; Triple eyePos = new Triple(0, 0, 0); Screen[] screens = null; Timer timer = null; boolean stereo = false; //}}} //{{{ main, Constructor(s) //############################################################################## static public void main(String[] args) { new JoglDiveDebug(); } public JoglDiveDebug() { super("JoglDiveDebug"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setUndecorated(true); // no window border or controls kin = createKinemage(); view = new KView(kin); view.setSpan(1.2f * view.getSpan()); view.setClip(3); // extra depth //view.setCenter(0, 0, 2); //createScreens(); createAltScreens(); Container cp = new Panel(); cp.setLayout(null); for(Screen s : screens) if(s != null) cp.add(s.canvas); this.setContentPane(cp); this.pack(); this.show(); // Only way to hide the mouse cursor in Java -- make it transparent. int[] pixels = new int[16 * 16]; Image image = Toolkit.getDefaultToolkit().createImage(new java.awt.image.MemoryImageSource(16, 16, pixels, 0, 16)); Cursor transparentCursor = Toolkit.getDefaultToolkit().createCustomCursor(image, new Point(0, 0), "invisiblecursor"); this.setCursor(transparentCursor); // Puts the window in full screen mode. Seems to work OK with JOGL. GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice gd = ge.getDefaultScreenDevice(); gd.setFullScreenWindow(this); // should be done after becoming visible timer = new Timer(1000 / 30, this); timer.start(); } //}}} //{{{ createScreens //############################################################################## /** 6 walls of a CAVE -- unfolded cube */ void createScreens() { // Set up parameters for rendering GLCapabilities capabilities = new GLCapabilities(); capabilities.setDoubleBuffered(true); // usually enabled by default, but to be safe... int fsaaNumSamples = 4; capabilities.setSampleBuffers(fsaaNumSamples > 1); // enables/disables full-scene antialiasing (FSAA) capabilities.setNumSamples(fsaaNumSamples); // sets number of samples for FSAA (default is 2) capabilities.setStereo(stereo); // Allocate screens[] this.screens = new Screen[6]; Screen s; GLCanvas c; JoglEngine3D e; final int size = 300; // center / straight ahead s = screens[0] = new Screen(capabilities, "front"); e = s.engine; e.screenCenterPos = new Triple(0, 0, -size/2.0); e.screenNormalVec = new Triple(0, 0, 1); c = s.canvas; c.setBounds(1*size, 1*size, size, size); // right s = screens[1] = new Screen(capabilities, "right"); e = s.engine; e.screenCenterPos = new Triple(size/2.0, 0, 0); e.screenNormalVec = new Triple(-1, 0, 0); c = s.canvas; c.setBounds(2*size, 1*size, size, size); // left s = screens[2] = new Screen(capabilities, "left"); e = s.engine; e.screenCenterPos = new Triple(-size/2.0, 0, 0); e.screenNormalVec = new Triple(1, 0, 0); c = s.canvas; c.setBounds(0*size, 1*size, size, size); // Top and bottom have very unusual "up" vectors. // I'm not sure why these values are the right answers, // but they produce the expected results. // top s = screens[3] = new Screen(capabilities, "top"); e = s.engine; e.screenCenterPos = new Triple(0, size/2.0, 0); e.screenNormalVec = new Triple(0, -1, 0); e.screenUpVec = new Triple(0, 0, 1); // can't be || to normal c = s.canvas; c.setBounds(1*size, 0*size, size, size); // bottom s = screens[4] = new Screen(capabilities, "bottom"); e = s.engine; e.screenCenterPos = new Triple(0, -size/2.0, 0); e.screenNormalVec = new Triple(0, 1, 0); e.screenUpVec = new Triple(0, 0, -1); // can't be || to normal c = s.canvas; c.setBounds(1*size, 2*size, size, size); // back s = screens[5] = new Screen(capabilities, "back"); e = s.engine; e.screenCenterPos = new Triple(0, 0, size/2.0); e.screenNormalVec = new Triple(0, 0, -1); e.screenUpVec = new Triple(0, 1, 0); c = s.canvas; c.setBounds(3*size, 1*size, size, size); } //}}} //{{{ createAltScreens //############################################################################## /** 5 screens side-by-side -- tiled wall display */ void createAltScreens() { // Set up parameters for rendering GLCapabilities capabilities = new GLCapabilities(); capabilities.setDoubleBuffered(true); // usually enabled by default, but to be safe... int fsaaNumSamples = 4; capabilities.setSampleBuffers(fsaaNumSamples > 1); // enables/disables full-scene antialiasing (FSAA) capabilities.setNumSamples(fsaaNumSamples); // sets number of samples for FSAA (default is 2) capabilities.setStereo(stereo); // Allocate screens[] this.screens = new Screen[6]; Screen s; GLCanvas c; JoglEngine3D e; final int size = 300; // center / straight ahead s = screens[0] = new Screen(capabilities, "front"); e = s.engine; e.screenCenterPos = new Triple(0, 0, -size/2.0); c = s.canvas; c.setBounds(1*size, 1*size, size, size); // right s = screens[1] = new Screen(capabilities, "right"); e = s.engine; e.screenCenterPos = new Triple(size, 0, -size/2.0); c = s.canvas; c.setBounds(2*size, 1*size, size, size); // left s = screens[2] = new Screen(capabilities, "left"); e = s.engine; e.screenCenterPos = new Triple(-size, 0, -size/2.0); c = s.canvas; c.setBounds(0*size, 1*size, size, size); // top s = screens[3] = new Screen(capabilities, "top"); e = s.engine; e.screenCenterPos = new Triple(0, size, -size/2.0); c = s.canvas; c.setBounds(1*size, 0*size, size, size); // bottom s = screens[4] = new Screen(capabilities, "bottom"); e = s.engine; e.screenCenterPos = new Triple(0, -size, -size/2.0); c = s.canvas; c.setBounds(1*size, 2*size, size, size); } //}}} //{{{ createKinemage //############################################################################## Kinemage createKinemage() { Kinemage k = new Kinemage(); KGroup g = new KGroup(); k.add(g); KPaint[] colors = { KPalette.red, KPalette.green, KPalette.gold, KPaint.createLightweightHSV("silver", 240, 3, 90, 240, 3, 10) }; for(int c = 0; c < colors.length; c++) { KList list = new KList(KList.BALL); //list.setOn(false); list.setColor(colors[c]); list.setRadius(0.1f); g.add(list); double offset = (2.0 * Math.PI * c) / colors.length; for(double y = -1; y <= 1.001; y += list.getRadius()) { double r = 1 - Math.abs(y); double theta = (2.0 * Math.PI * y) + offset; BallPoint pt = new BallPoint(""); pt.setXYZ(r * Math.cos(theta), y, r * Math.sin(theta)); list.add(pt); } } for(int c = 0; c < colors.length; c++) { KList list = new KList(KList.VECTOR); //list.setOn(false); list.setColor(colors[c]); list.setWidth(4); g.add(list); double offset = (2.0 * Math.PI * c) / colors.length; VectorPoint prevPt = null; for(double y = -1; y <= 1.001; y += 0.02) { double r = 1 - Math.abs(y); double theta = (2.0 * Math.PI * y) + offset; VectorPoint pt = new VectorPoint("", prevPt); pt.setXYZ(r * Math.cos(theta), y, r * Math.sin(theta)); list.add(pt); prevPt = pt; } } KList list = new KList(KList.TRIANGLE); list.setOn(false); list.setColor(KPalette.gray); g.add(list); TrianglePoint prevPt = null; for(double y = -1; y <= 1.001; y += 0.02) { double r = 1 - Math.abs(y); double theta = (2.0 * Math.PI * y); TrianglePoint pt = new TrianglePoint("", prevPt); pt.setXYZ(r * Math.cos(theta), y-0.1, r * Math.sin(theta)); list.add(pt); prevPt = pt; pt = new TrianglePoint("", prevPt); pt.setXYZ(r * Math.cos(theta), y+0.1, r * Math.sin(theta)); list.add(pt); prevPt = pt; } list = new KList(KList.LABEL); //list.setOn(false); list.setColor(KPalette.deadwhite); g.add(list); LabelPoint l1 = new LabelPoint("X-axis"); l1.setXYZ(0.5, 0, 0); l1.setColor(KPalette.pinktint); list.add(l1); LabelPoint l2 = new LabelPoint("Y-axis"); l2.setXYZ(0, 0.5, 0); l2.setColor(KPalette.greentint); list.add(l2); LabelPoint l3 = new LabelPoint("Z-axis"); l3.setXYZ(0, 0, 0.5); l3.setColor(KPalette.bluetint); list.add(l3); return k; } //}}} //{{{ actionPerformed //############################################################################## public void actionPerformed(ActionEvent ev) { view.rotateY( (float) Math.toRadians(1.0) ); for(Screen s : screens) if(s != null) s.canvas.repaint(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/tutorial/src/TumblingObject.java0000644000000000000000000000477011531212656020762 0ustar rootrootpackage king.tutorial; import king.core.*; import king.points.*; import king.painters.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.Timer; /** * TumblingObject creates a decorative spiral ornament and sets it rotating. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Fri Dec 8 13:27:16 EST 2006 */ public class TumblingObject extends JApplet implements ActionListener { Kinemage kin = null; KView view = null; Engine2D engine = null; HighQualityPainter painter = null; Timer timer = null; public void init() { super.init(); kin = createKinemage(); view = new KView(kin); view.setSpan(1.2f * view.getSpan()); engine = new Engine2D(); engine.usePerspective = true; painter = new HighQualityPainter(true); timer = new Timer(1000 / 30, this); } public void start() { super.start(); timer.start(); } public void stop() { timer.stop(); super.stop(); } public void destroy() { kin = null; view = null; engine = null; painter = null; super.destroy(); } Kinemage createKinemage() { Kinemage k = new Kinemage(); KGroup g = new KGroup(); k.add(g); KPaint[] colors = { KPalette.red, KPalette.green, KPalette.gold, KPaint.createLightweightHSV("silver", 240, 3, 90, 240, 3, 10) }; for(int c = 0; c < colors.length; c++) { KList list = new KList(KList.BALL); list.setColor(colors[c]); list.setRadius(0.05f); g.add(list); double offset = (2.0 * Math.PI * c) / colors.length; for(double y = -1; y <= 1; y += 0.05) { double r = 1 - Math.abs(y); double theta = (2.0 * Math.PI * y) + offset; BallPoint pt = new BallPoint(""); pt.setXYZ(r * Math.cos(theta), y, r * Math.sin(theta)); list.add(pt); } } return k; } public void actionPerformed(ActionEvent ev) { view.rotateY( (float) Math.toRadians(1.0) ); this.repaint(); } public void paint(Graphics g) { painter.setGraphics( (Graphics2D) g ); engine.render(kin, view, this.getBounds(), painter); } }//class king-2.21.120420/king/tutorial/TumblingObject.html0000644000000000000000000000021211531212656020201 0ustar rootroot king-2.21.120420/king/1.x_src/0000755000000000000000000000000011744310052014015 5ustar rootrootking-2.21.120420/king/1.x_src/king/0000755000000000000000000000000011744310054014747 5ustar rootrootking-2.21.120420/king/1.x_src/king/EDMapPlugin.java0000644000000000000000000003235711531212674017734 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.beans.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.isosurface.*; import driftwood.util.*; //}}} /** * EDMapPlugin provides file/URL opening services * to launch the EDMapWindows that control individual maps. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Tue Apr 1 13:45:27 EST 2003 */ public class EDMapPlugin extends Plugin implements ListSelectionListener { //{{{ Constants static final String MAPTYPE_O = "O map (DSN6/Brix)"; static final String MAPTYPE_XPLOR = "XPLOR map (ASCII format)"; static final String MAPTYPE_CCP4 = "CCP4 map (type 2)"; //}}} //{{{ Variable definitions //################################################################################################## JFileChooser filechooser = null; JDialog urlchooser = null; JList urlList = null; JTextField urlField = null; boolean urlChooserOK = false; SuffixFileFilter omapFilter, xmapFilter, ccp4Filter, mapFilter; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public EDMapPlugin(ToolBox tb) { super(tb); makeFileFilters(); } //}}} //{{{ makeFileFilters //################################################################################################## void makeFileFilters() { omapFilter = new SuffixFileFilter("O maps (DSN6/Brix)"); omapFilter.addSuffix(".brix"); omapFilter.addSuffix(".brix.gz"); omapFilter.addSuffix(".dsn6"); omapFilter.addSuffix(".dsn6.gz"); omapFilter.addSuffix(".dn6"); omapFilter.addSuffix(".dn6.gz"); omapFilter.addSuffix(".omap"); omapFilter.addSuffix(".omap.gz"); xmapFilter = new SuffixFileFilter("XPLOR maps (ASCII format)"); xmapFilter.addSuffix(".xmap"); xmapFilter.addSuffix(".xmap.gz"); xmapFilter.addSuffix(".xplor"); xmapFilter.addSuffix(".xplor.gz"); ccp4Filter = new SuffixFileFilter("CCP4 maps (type 2)"); ccp4Filter.addSuffix(".ccp4"); ccp4Filter.addSuffix(".ccp4.gz"); ccp4Filter.addSuffix(".mbk"); ccp4Filter.addSuffix(".mbk.gz"); mapFilter = new SuffixFileFilter("All electron density maps"); mapFilter.addSuffix(".ccp4"); mapFilter.addSuffix(".ccp4.gz"); mapFilter.addSuffix(".mbk"); mapFilter.addSuffix(".mbk.gz"); mapFilter.addSuffix(".xmap"); mapFilter.addSuffix(".xmap.gz"); mapFilter.addSuffix(".xplor"); mapFilter.addSuffix(".xplor.gz"); mapFilter.addSuffix(".brix"); mapFilter.addSuffix(".brix.gz"); mapFilter.addSuffix(".dsn6"); mapFilter.addSuffix(".dsn6.gz"); mapFilter.addSuffix(".dn6"); mapFilter.addSuffix(".dn6.gz"); mapFilter.addSuffix(".omap"); mapFilter.addSuffix(".omap.gz"); mapFilter.addSuffix(".map"); mapFilter.addSuffix(".map.gz"); } //}}} //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); filechooser.addChoosableFileFilter(mapFilter); filechooser.addChoosableFileFilter(omapFilter); filechooser.addChoosableFileFilter(xmapFilter); filechooser.addChoosableFileFilter(ccp4Filter); filechooser.setFileFilter(mapFilter); } //}}} //{{{ makeURLChooser //################################################################################################## void makeURLChooser() { // Make actual URL chooser urlList = new FatJList(150, 12); JApplet applet = kMain.getApplet(); if(applet != null) { String maps = applet.getParameter("edmapList"); if(maps != null) { String[] maplist = Strings.explode(maps, ' '); urlList.setListData(maplist); } } urlList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); urlList.addListSelectionListener(this); JScrollPane listScroll = new JScrollPane(urlList); // Make an (editable) URL line urlField = new JTextField(20); // Make the command buttons JButton btnOK = new JButton(new ReflectiveAction("OK", null, this, "onUrlOk")); JButton btnCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onUrlCancel")); // Put it all together in a content pane TablePane2 cp = new TablePane2(); cp.center().middle().insets(6).memorize(); cp.addCell(listScroll,2,1); cp.newRow(); cp.weights(0,1).addCell(new JLabel("URL:")).hfill(true).addCell(urlField); cp.newRow().startSubtable(2,1).center().insets(1,4,1,4).memorize(); cp.addCell(btnOK).addCell(btnCancel).endSubtable(); urlchooser = new JDialog(kMain.getTopWindow(), "ED Map URLs", true); urlchooser.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); urlchooser.setContentPane(cp); urlchooser.pack(); urlchooser.setLocationRelativeTo(kMain.getTopWindow()); } //}}} //{{{ getToolsMenuItem, toString //################################################################################################## /** * Creates a new JMenuItem to be displayed in the Tools menu, * which will allow the user to access function(s) associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several functionalities under it. * * The Plugin may return null to indicate that it has no * associated menu item. */ public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onOpenMap")); } public String toString() { return "Electron density maps"; } //}}} //{{{ getHelpMenuItem, getHelpAnchor //################################################################################################## /** * Creates a new JMenuItem to be displayed in the Help menu, * which will allow the user to access help information associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several items under it. However, * Plugins are encouraged to consolidate all documentation * into one location. The king.HTMLHelp class may be of use here. * * The Plugin may return null to indicate that it has no * associated menu item. */ public JMenuItem getHelpMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onHelp")); } public String getHelpAnchor() { return "#edmap-plugin"; } //}}} //{{{ onOpenMap, askMapFormat //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onOpenMap(ActionEvent ev) { if(kMain.getKinemage() == null) return; try { if(kMain.getApplet() != null) openMapURL(); else openMapFile(); } catch(IOException ex) // includes MalformedURLException { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong map format was chosen, or map is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } String askMapFormat(String f) // filename or URL { Object[] choices = {MAPTYPE_O, MAPTYPE_XPLOR, MAPTYPE_CCP4}; String defaultChoice = MAPTYPE_O; if(omapFilter.accept(f)) defaultChoice = MAPTYPE_O; else if(xmapFilter.accept(f)) defaultChoice = MAPTYPE_XPLOR; else if(ccp4Filter.accept(f)) defaultChoice = MAPTYPE_CCP4; String choice = (String)JOptionPane.showInputDialog(kMain.getTopWindow(), "What format is this map in?", "Choose format", JOptionPane.PLAIN_MESSAGE, null, choices, defaultChoice); return choice; } //}}} //{{{ openMapFile //################################################################################################## void openMapFile() throws IOException { // Create file chooser on demand if(filechooser == null) makeFileChooser(); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { File f = filechooser.getSelectedFile(); if(f != null && f.exists()) { String choice = askMapFormat(f.getName()); CrystalVertexSource map; if(MAPTYPE_O.equals(choice)) map = new OMapVertexSource(new FileInputStream(f)); else if(MAPTYPE_XPLOR.equals(choice)) map = new XplorVertexSource(new FileInputStream(f)); else if(MAPTYPE_CCP4.equals(choice)) map = new Ccp4VertexSource(new FileInputStream(f)); else throw new IllegalArgumentException("Map type not specified"); EDMapWindow win = new EDMapWindow(parent, map, f.getName()); kCanvas.repaint(); // otherwise we get partial-redraw artifacts } } } //}}} //{{{ openMapURL, onUrlCancel, onUrlOk //################################################################################################## void openMapURL() throws MalformedURLException, IOException { // Create chooser on demand if(urlchooser == null) makeURLChooser(); //urlchooser.pack(); -- gets too wide when urlField has a long URL in it urlchooser.setVisible(true); // execution halts until dialog is closed... if(urlChooserOK) { CrystalVertexSource map; URL mapURL = new URL(urlField.getText()); InputStream is = new BufferedInputStream(mapURL.openStream()); String choice = askMapFormat(urlField.getText()); if(MAPTYPE_O.equals(choice)) map = new OMapVertexSource(is); else if(MAPTYPE_XPLOR.equals(choice)) map = new XplorVertexSource(is); else if(MAPTYPE_CCP4.equals(choice)) map = new Ccp4VertexSource(is); else throw new IllegalArgumentException("Map type not specified"); EDMapWindow win = new EDMapWindow(parent, map, mapURL.getFile()); kCanvas.repaint(); // otherwise we get partial-redraw artifacts } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUrlCancel(ActionEvent ev) { urlChooserOK = false; urlchooser.setVisible(false); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUrlOk(ActionEvent ev) { urlChooserOK = true; urlchooser.setVisible(false); } //}}} //{{{ valueChanged //################################################################################################## /* Gets called when a new URL is picked from the list */ public void valueChanged(ListSelectionEvent ev) { Object o = urlList.getSelectedValue(); if(o == null) {} else { String name = o.toString(); urlField.setText("http://"+name); JApplet applet = kMain.getApplet(); if(applet != null) { try { URL mapURL = new URL(applet.getDocumentBase(), applet.getParameter("edmapBase")+"/"+name); urlField.setText(mapURL.toString()); } catch(MalformedURLException ex) { SoftLog.err.println(applet.getDocumentBase()); SoftLog.err.println(applet.getParameter("edmapBase")); SoftLog.err.println(name); ex.printStackTrace(SoftLog.err); } } } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/UIText.java0000644000000000000000000001443211531212674017003 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: package king; import king.core.*; import java.awt.*; import java.awt.event.*; //import java.io.*; //import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; /** * UIText is the kinemage text manager. * It takes care of displaying and editing the text. * *

Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. *
Begun on Sun Jun 9 19:06:25 EDT 2002 */ public class UIText implements MouseListener { //{{{ Static fields //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JFrame frame; JTextArea textarea; JButton popupButton; Collection mageHypertextListeners = new ArrayList(); //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public UIText(KingMain kmain) { kMain = kmain; popupButton = new JButton(new ReflectiveAction("Show text", null, this, "onPopupButton")); frame = new JFrame("Text window"); frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); frame.setIconImage(kMain.getPrefs().windowIcon); textarea = new JTextArea(); textarea.setEditable(true); textarea.setLineWrap(true); textarea.setWrapStyleWord(true); textarea.addMouseListener(this); textarea.setBorder(BorderFactory.createEmptyBorder(6,6,6,6)); //textarea.setFont(new Font("Monospaced", Font.PLAIN, (int)Math.round(12 * kMain.getPrefs().getFloat("fontMagnification")))); JScrollPane textScroll = new JScrollPane(textarea); textScroll.setPreferredSize(new Dimension(500,400)); new TextCutCopyPasteMenu(textarea); this.addHypertextListener(new MageHypertexter(kMain)); frame.getContentPane().add(textScroll, BorderLayout.CENTER); } //}}} //{{{ get/set/appendText() //################################################################################################## public String getText() { return textarea.getText(); } public void setText(String txt) { textarea.setText(txt); textarea.setCaretPosition(0); // at the top } public void appendText(String txt) { txt = getText().concat(txt); // Keep the text window from moving around too much int caret = textarea.getCaretPosition(); caret = Math.min(caret, txt.length()); textarea.setText(txt); textarea.setCaretPosition(caret); } //}}} //{{{ shutdown //################################################################################################## /** Initiates shutdown by calling dispose() on the frame. */ public void shutdown() { frame.dispose(); } //}}} //{{{ cascadeBehind, onPopupButton, getButton //################################################################################################## /** * Positions this window above, left, and behind the specified window. */ public void cascadeBehind(Window w) { if(w == null) return; frame.pack(); Point p = w.getLocation(); frame.setLocation(p); frame.setVisible(true); p.x += 24; p.y += 24; w.setLocation(p); w.toFront(); w.requestFocus(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onPopupButton(ActionEvent ev) { if(!frame.isVisible()) { frame.pack(); //frame.setLocationRelativeTo(kMain.getTopWindow()); // centers frame frame.setVisible(true); } else { frame.toFront(); //frame.requestFocus(); } } public JButton getButton() { return popupButton; } //}}} //{{{ Mouse listeners (for hypertext) //################################################################################################## public void mouseClicked(MouseEvent ev) { int where = textarea.viewToModel(ev.getPoint()); //System.err.println("Click occurred at position "+where); String text = this.getText(); int prevOpen, prevClose, nextOpen, nextClose; // "where-#" terms below ensure that link is active out through the space between } and * // Original code used "where" in all four places, cutting the link short. // Passing a negative start index to (last)IndexOf is the same as passing zero. prevOpen = text.lastIndexOf("*{", where); prevClose = text.lastIndexOf("}*", where-2); nextOpen = text.indexOf("*{", where); nextClose = text.indexOf("}*", where-1); //System.err.println("prevs:" + prevOpen + "," + prevClose + "; nexts:" + nextOpen + "," + nextClose); // Still works if prevClose == -1 Might not be a next hyperlink... if(prevOpen != -1 && prevOpen > prevClose && nextClose != -1 && (nextClose < nextOpen || nextOpen == -1)) { String link = text.substring(prevOpen+2, nextClose); textarea.select(prevOpen, nextClose+2); //System.err.println("Hit hypertext: '"+link+"'"); for(Iterator iter = mageHypertextListeners.iterator(); iter.hasNext(); ) { MageHypertextListener listener = (MageHypertextListener) iter.next(); listener.mageHypertextHit(link); } } } public void mouseEntered(MouseEvent ev) {} public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) {} public void mouseReleased(MouseEvent ev) {} //}}} //{{{ add/removeHypertextListener //################################################################################################## /** Registers a listener for hypertext events. */ public void addHypertextListener(MageHypertextListener listener) { mageHypertextListeners.add(listener); } /** Registers a listener for hypertext events. */ public void removeHypertextListener(MageHypertextListener listener) { mageHypertextListeners.remove(listener); } //}}} }//class king-2.21.120420/king/1.x_src/king/HTMLHelp.java0000644000000000000000000001047311531212674017177 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; //import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.html.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * HTMLHelp is a simple HTML browser for displaying help information. * *

Begun on Wed Jun 26 22:15:35 EDT 2002 *
Copyright (C) 2002 by Ian W. Davis. All rights reserved. */ public class HTMLHelp implements HyperlinkListener { //{{{ Static fields //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JFrame frame; JEditorPane editpane; URL homepage; URL prevpage = null; LinkedList history; //}}} //{{{ Constructors //################################################################################################## /** * Creates a new help-system window. */ public HTMLHelp(KingMain kmain, URL start) { kMain = kmain; homepage = start; history = new LinkedList(); frame = new JFrame("KiNG Help"); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setIconImage(kMain.prefs.windowIcon); editpane = new JEditorPane(); editpane.addHyperlinkListener(this); editpane.setEditable(false); JScrollPane scroll = new JScrollPane(editpane); scroll.setPreferredSize(new Dimension(600,400)); JToolBar toolbar = new JToolBar(); toolbar.setFloatable(false); toolbar.add(new JButton(new ReflectiveAction("Back", kMain.prefs.htmlBackIcon, this, "onBack"))); toolbar.addSeparator(); toolbar.add(new JButton(new ReflectiveAction("Home", kMain.prefs.htmlHomeIcon, this, "onHome"))); frame.getContentPane().add(toolbar, BorderLayout.NORTH); frame.getContentPane().add(scroll, BorderLayout.CENTER); } //}}} //{{{ show/hide //################################################################################################## public void show() { try { editpane.setPage(homepage); history = new LinkedList(); // clear the history prevpage = homepage; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } frame.pack(); frame.setVisible(true); } public void hide() { frame.dispose(); } //}}} //{{{ hyperlinkUpdate, onBack, onHome //################################################################################################## // This was ganked from the JEditorPane documentation. public void hyperlinkUpdate(HyperlinkEvent ev) { if(ev.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { if(ev instanceof HTMLFrameHyperlinkEvent) { HTMLDocument doc = (HTMLDocument)editpane.getDocument(); doc.processHTMLFrameHyperlinkEvent((HTMLFrameHyperlinkEvent)ev); } else { try { if(prevpage != null) history.addLast(prevpage); while(history.size() > 100) history.removeFirst(); URL url = ev.getURL(); editpane.setPage(url); prevpage = url; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onBack(ActionEvent ev) { if(history.size() < 1) return; try { URL url = (URL)history.removeLast(); editpane.setPage(url); prevpage = url; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHome(ActionEvent ev) { try { history = new LinkedList(); // Clear the history editpane.setPage(homepage); prevpage = homepage; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } //}}} }//class king-2.21.120420/king/1.x_src/king/ContentPane.java0000644000000000000000000003210611531212674020035 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; //import java.io.*; //import java.util.*; import javax.swing.*; import javax.swing.tree.*; import driftwood.gui.*; //}}} /** * ContentPane contains all of the GUI elements, * except for the menu bar (which is held by the top-level window or applet). * *

Begun on Wed Apr 24 11:22:51 EDT 2002 *
Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. */ public class ContentPane extends JPanel // implements ... { //{{{ Variables //################################################################################################## KingMain kMain = null; JScrollPane buttonScroll = null; JSplitPane minorSplit = null; // hold buttons and graphics area JSplitPane majorSplit = null; // hold minor split and zoom/clip sliders //}}} //{{{ Constructor //################################################################################################## /** * Does minimal initialization for a main window. * Call buildGUI() to construct all the GUI elements before calling pack() and setVisible(). * @param kmain the KingMain that owns this window */ public ContentPane(KingMain kmain) { super(new BorderLayout()); kMain = kmain; // Set up keystrokes for animations ActionMap am = this.getActionMap(); InputMap im = this.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_A , 0), "anim1fwd" ); am.put("anim1fwd", new ReflectiveAction(null, null, this, "onAnimForward" ) ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_A , KeyEvent.SHIFT_MASK), "anim1back" ); am.put("anim1back", new ReflectiveAction(null, null, this, "onAnimBackward" ) ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_B , 0), "anim2fwd" ); am.put("anim2fwd", new ReflectiveAction(null, null, this, "onAnim2Forward" ) ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_B , KeyEvent.SHIFT_MASK), "anim2back" ); am.put("anim2back", new ReflectiveAction(null, null, this, "onAnim2Backward" ) ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS , 0), "accum1" ); am.put("accum1", new ReflectiveAction(null, null, this, "onAccumulate" ) ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS , KeyEvent.SHIFT_MASK), "accum2" ); am.put("accum2", new ReflectiveAction(null, null, this, "onAccumulate2" ) ); } //}}} //{{{ notifyChange //################################################################################################## // Called by KingMain when something happens. // Shouldn't be called directly under normal circumstances. static final int REDO_BUTTONS = KingMain.EM_SWITCH | KingMain.EM_CLOSE | KingMain.EM_CLOSEALL | KingMain.EM_EDIT_GROSS; void notifyChange(int event_mask) { // Take care of yourself if((event_mask & REDO_BUTTONS) != 0) { Kinemage kin = kMain.getKinemage(); if(kin != null) setButtons(kin.buildButtons()); else setButtons(Box.createVerticalBox()); } // Notify children } //}}} //{{{ buildGUI() //################################################################################################## /** Defaults to showing both button panel and slider panel */ public void buildGUI() { buildGUI(true, true); } /** * Called after the constructor has finished, this starts a cascade that creates all subcomponents and initializes them. * After calling this, be sure to call pack() and setVisible(true) to make everything appear on screen. */ public void buildGUI(boolean useButtons, boolean useSliders) { Container content = this; Component graphicsArea, buttonArea, topArea, bottomArea, totalArea; // Build major sub-components graphicsArea = buildGraphicsArea(); buttonArea = buildButtons(); bottomArea = buildBottomArea(); // Build top component -- horizontal splitter if(useButtons) { minorSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, graphicsArea, buttonArea); minorSplit.setOneTouchExpandable(true); minorSplit.setResizeWeight(1.0); // gives all extra space to the left side (graphics) topArea = minorSplit; } else { minorSplit = null; topArea = graphicsArea; } // Build total GUI -- vertical splitter if(useSliders) { majorSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, topArea, bottomArea); majorSplit.setOneTouchExpandable(true); majorSplit.setResizeWeight(1.0); // gives all extra space to the top side (graphics) content.add(majorSplit, BorderLayout.CENTER); } else { majorSplit = null; content.add(topArea, BorderLayout.CENTER); } } //}}} //{{{ buildGraphicsArea, get/setGraphicsComponent //################################################################################################## // Assembles the area in which graphics are drawn. Component buildGraphicsArea() { return kMain.getCanvas(); } /** Sets the component that will occupy KinCanvas's usual space */ public void setGraphicsComponent(Component c) { if(minorSplit == null) { if(majorSplit == null) this.add(c, BorderLayout.CENTER); else majorSplit.setTopComponent(c); } else minorSplit.setLeftComponent(c); } /** Gets the component currently acting as the drawing surface */ public Component getGraphicsComponent() { if(minorSplit == null) { if(majorSplit == null) return this.getComponents()[0]; else return majorSplit.getTopComponent(); } else return minorSplit.getLeftComponent(); } //}}} //{{{ buildButtons //################################################################################################## JComponent buildButtons() { // Build the buttons later; create a scrolling panel for them now buttonScroll = new JScrollPane(); buttonScroll.setPreferredSize(new Dimension(150,200)); // Build the kinemage chooser JScrollPane chooserScroll = new JScrollPane(kMain.getStable().getChooser()); // Put tabbed panel into another panel along with kin chooser JPanel overpanel = new JPanel(new BorderLayout()); overpanel.add(chooserScroll, BorderLayout.NORTH); overpanel.add(buttonScroll, BorderLayout.CENTER); return overpanel; } //}}} //{{{ buildBottomArea() //################################################################################################## // Assembles the area that holds depth clipping, show markers, pickcenter, etc. Component buildBottomArea() { JLabel zoomLabel = new JLabel("Zoom"); JSlider zoomSlider = new JSlider(kMain.getCanvas().getZoomModel()); JLabel clipLabel = new JLabel("Clipping"); JSlider clipSlider = new JSlider(kMain.getCanvas().getClipModel()); JButton hierarchyButton = new JButton(new ReflectiveAction("Show hierarchy", null, this, "onShowHierarchy")); hierarchyButton.setToolTipText("Show an editable tree view of the kinemage"); GridBagPanel bottomPane = new GridBagPanel(); bottomPane.setBorder( BorderFactory.createEmptyBorder(4,1,2,1) ); //TLBR // zoom & clip bottomPane.gbc.insets = new Insets(0, 3, 0, 1); //TLBR bottomPane.add(zoomLabel, 0, 0); bottomPane.add(clipLabel, 0, 1); bottomPane.gbc.insets = new Insets(0, 1, 0, 3); //TLBR bottomPane.add(zoomSlider, 1, 0, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER, 1.0, 0.0); bottomPane.add(clipSlider, 1, 1, 1, 1, GridBagConstraints.HORIZONTAL, GridBagConstraints.CENTER, 1.0, 0.0); // pickcenter and markers bottomPane.gbc.insets = new Insets(0, 3, 0, 3); //TLBR bottomPane.gbc.fill = GridBagConstraints.HORIZONTAL; bottomPane.gbc.weightx = 0.01; bottomPane.add(kMain.getCanvas().getPickcenterButton(), 2, 0, 1, 1); bottomPane.add(kMain.getCanvas().getMarkersButton(), 2, 1, 1, 1); // text & tools if(kMain.getTextWindow() != null) { JButton textButton = kMain.getTextWindow().getButton(); textButton.setToolTipText("Display/edit the textual annotation of this kinemage"); bottomPane.add(textButton, 3, 0, 1, 1); } bottomPane.add(hierarchyButton, 3, 1, 1, 1); return bottomPane; } //}}} //{{{ setButtons() //################################################################################################## public void setButtons(Component c) { KingPrefs prefs = kMain.getPrefs(); Kinemage kin = kMain.getKinemage(); if(kin == null || prefs == null) { buttonScroll.setViewportView(c); return; } TablePane2 cp = new TablePane2(); cp.hfill(true).vfill(true).insets(0).addCell(c,2,1).newRow(); cp.weights(1,0).insets(1).memorize(); if(kin.hasAnimateGroups()) { JButton backButton = new JButton(new ReflectiveAction(null, prefs.stepBackIcon, this, "onAnimBackward")); backButton.setToolTipText("Step backward one frame in the main animation"); JButton fwdButton = new JButton(new ReflectiveAction(null, prefs.stepForwardIcon, this, "onAnimForward")); fwdButton.setToolTipText("Step forward one frame in the main animation"); cp.addCell(cp.strut(0,8),2,1).newRow(); cp.center().addCell(new JLabel("Animate"),2,1).newRow(); cp.right().addCell(backButton).left().addCell(fwdButton).newRow(); } if(kin.has2AnimateGroups()) { JButton backButton = new JButton(new ReflectiveAction(null, prefs.stepBackIcon, this, "onAnim2Backward")); backButton.setToolTipText("Step backward one frame in the secondary animation"); JButton fwdButton = new JButton(new ReflectiveAction(null, prefs.stepForwardIcon, this, "onAnim2Forward")); fwdButton.setToolTipText("Step forward one frame in the secondary animation"); cp.addCell(cp.strut(0,8),2,1).newRow(); cp.center().addCell(new JLabel("2-Animate"),2,1).newRow(); cp.right().addCell(backButton).left().addCell(fwdButton).newRow(); } buttonScroll.setViewportView(cp); // Makes sure that the brushed metal look appears on OS X. // java.swing.Boxes apparently don't draw their background correctly. // Aiieee! This just makes it worse. Half stripped, half metal! //JPanel wrapper = new JPanel(new BorderLayout()); //wrapper.add(c, BorderLayout.CENTER); //buttonScroll.setViewportView(wrapper); } //}}} //{{{ onAnim(2)Forward, onAnim(2)Backward, onShowHierarchy //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAnimForward(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null) k.animate(1); kMain.getCanvas().repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAnimBackward(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null) k.animate(-1); kMain.getCanvas().repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAnim2Forward(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null) k.animate2(1); kMain.getCanvas().repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAnim2Backward(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null) k.animate2(-1); kMain.getCanvas().repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowHierarchy(ActionEvent ev) { KinTree win = kMain.getKinTree(); if(win != null) win.show(); } //}}} //{{{ onAccumulate, onAccumulate2 //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAccumulate(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null) k.accumulate(); kMain.getCanvas().repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAccumulate2(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null) k.accumulate2(); kMain.getCanvas().repaint(); } //}}} }//class king-2.21.120420/king/1.x_src/king/ColorPicker.java0000644000000000000000000002353511531212674020041 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; //}}} /** * ColorPicker is a graphical color picker * for KPaint objects. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Jun 26 11:46:23 EDT 2003 */ public class ColorPicker extends TablePane implements MouseListener { //{{{ Constants //}}} //{{{ CLASS: ColorPatch //################################################################################################## /** A little patch of color that responds to mouse clicks. */ protected class ColorPatch extends JComponent implements MouseListener { KPaint paint; boolean isSelected = false; protected ColorPatch(KPaint paint) { super(); this.paint = paint; setMinimumSize(patchSize); setPreferredSize(patchSize); setMaximumSize(patchSize); setToolTipText(paint.toString()); addMouseListener(this); } /** Paints our component to the screen */ protected void paintComponent(Graphics g) { super.paintComponent(g); // this does nothing b/c we have no UI delegate Graphics2D g2 = (Graphics2D)g; Dimension dim = this.getSize(); Paint[] colors = paint.getPaints(backgroundMode); // First band occupies half height, others divide remainder evenly int start = 0, height = dim.height/2; for(int i = KPaint.COLOR_LEVELS-1 ; i >= 0; i--) { g2.setPaint(colors[i]); g2.fillRect(0, start, dim.width, height); start += height; height = (dim.height - start) / (i<1 ? 1 : i); } if(isSelected) { g2.setPaint(highlight); g2.drawRect(0, 0, dim.width-1, dim.height-1); } } public void mouseClicked(MouseEvent ev) { selectPatch(this); } public void mouseEntered(MouseEvent ev) {} public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) {} public void mouseReleased(MouseEvent ev) {} } //}}} //{{{ Variable definitions //################################################################################################## int backgroundMode; Dimension patchSize; Component filler; SwapBox extraPatchBox; Color background; Color highlight; ColorPatch selectedPatch = null; /** Map<String, ColorPatch> for setSelection() */ Map patchMap = new HashMap(); Map extraMap = new HashMap(); /** List of listeners for ChangeEvents */ Collection changeListeners = new ArrayList(); //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public ColorPicker(int backgroundMode, int patchWidth) { super(); this.patchSize = new Dimension(patchWidth, patchWidth); this.filler = Box.createRigidArea(patchSize); this.extraPatchBox = new SwapBox(null); // empty for now this.setBackgroundMode(backgroundMode); this.setToolTipText("Click empty space to deselect all colors"); this.addMouseListener(this); addPatch(KPalette.red); addPatch(KPalette.pink); addPatch(KPalette.pinktint); addFiller(); newRow(); addPatch(KPalette.orange); addPatch(KPalette.peach); addPatch(KPalette.peachtint); addFiller(); newRow(); addPatch(KPalette.gold); addFiller(); addFiller(); addFiller(); newRow(); addPatch(KPalette.yellow); addPatch(KPalette.yellow); addPatch(KPalette.yellowtint); addFiller(); newRow(); addPatch(KPalette.lime); addFiller(); addFiller(); addFiller(); newRow(); addPatch(KPalette.green); addPatch(KPalette.sea); addPatch(KPalette.greentint); addFiller(); newRow(); addPatch(KPalette.sea); addFiller(); addFiller(); addPatch(KPalette.white); newRow(); addPatch(KPalette.cyan); addFiller(); addFiller(); addPatch(KPalette.gray); newRow(); addPatch(KPalette.sky); addFiller(); addFiller(); addPatch(KPalette.brown); newRow(); addPatch(KPalette.blue); addPatch(KPalette.sky); addPatch(KPalette.bluetint); addFiller(); newRow(); addPatch(KPalette.purple); addPatch(KPalette.lilac); addPatch(KPalette.lilactint); addFiller(); newRow(); addPatch(KPalette.magenta); addFiller(); addFiller(); addPatch(KPalette.deadwhite); newRow(); addPatch(KPalette.hotpink); addFiller(); addPatch(KPalette.invisible); addPatch(KPalette.deadblack); newRow(); insets(0).hfill(true).vfill(true); addCell(extraPatchBox, 4, 1); } //}}} //{{{ addPatch, addFiller, selectPatch //################################################################################################## private void addPatch(KPaint paint) { ColorPatch patch = new ColorPatch(paint); this.addCell(patch); patchMap.put(paint.toString(), patch); } private void addFiller() { this.addCell(filler); } void selectPatch(ColorPatch newSelection) { if(selectedPatch != null) { selectedPatch.isSelected = false; selectedPatch.repaint(); } selectedPatch = newSelection; if(selectedPatch != null) { selectedPatch.isSelected = true; selectedPatch.repaint(); } fireStateChanged(); } //}}} //{{{ add/removeChangeListener, fireStateChanged //################################################################################################## public void addChangeListener(ChangeListener l) { changeListeners.add(l); } public void removeChangeListener(ChangeListener l) { changeListeners.remove(l); } /** Notifies all listeners and repaints this component */ protected void fireStateChanged() { ChangeEvent ev = new ChangeEvent(this); for(Iterator iter = changeListeners.iterator(); iter.hasNext(); ) { ((ChangeListener)iter.next()).stateChanged(ev); } } //}}} //{{{ get/set{Selection, BackgroundMode} //################################################################################################## /** Returns the selected KPaint, or null for none */ public KPaint getSelection() { if(selectedPatch == null) return null; else return selectedPatch.paint; } public void setSelection(String color) { ColorPatch patch = (ColorPatch)patchMap.get(color); if(patch == null) patch = (ColorPatch)extraMap.get(color); selectPatch(patch); } public void setSelection(KPaint color) { if(color == null) setSelection((String)null); else setSelection(color.toString()); } /** Returns one of the KPaint background mode integers. */ public int getBackgroundMode() { return backgroundMode; } public void setBackgroundMode(int mode) { this.backgroundMode = mode; if(backgroundMode == KPaint.BLACK_COLOR) { background = KPaint.black; highlight = KPaint.white; } else if(backgroundMode == KPaint.BLACK_MONO) { background = KPaint.black; highlight = KPaint.white; } else if(backgroundMode == KPaint.WHITE_COLOR) { background = KPaint.white; highlight = KPaint.black; } else if(backgroundMode == KPaint.WHITE_MONO) { background = KPaint.white; highlight = KPaint.black; } setOpaque(true); setBackground(background); repaint(); } //}}} //{{{ setExtras //################################################################################################## /** * Allows this component to display extra colors, e.g. from colorsets. * Usually fed the output of Kinemage.getNewPaintMap().values(). * @param kPaints a Collection<KPaint>; may be null. */ public void setExtras(Collection kPaints) { extraPatchBox.setTarget(null); extraMap.clear(); if(kPaints == null) return; int i = 0; TablePane tp = new TablePane(); tp.setOpaque(false); // lets black/white show through for(Iterator iter = kPaints.iterator(); iter.hasNext(); i++) { KPaint paint = (KPaint)iter.next(); ColorPatch patch = new ColorPatch(paint); tp.addCell(patch); extraMap.put(paint.toString(), patch); if(++i % 4 == 0) tp.newRow(); } extraPatchBox.setTarget(tp); } //}}} //{{{ mouse{Clicked, Entered, Exited, Pressed, Released} //################################################################################################## public void mouseClicked(MouseEvent ev) { selectPatch(null); } public void mouseEntered(MouseEvent ev) {} public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) {} public void mouseReleased(MouseEvent ev) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/ReflectiveRunnable.java0000644000000000000000000000371211531212674021377 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; //import java.awt.*; //import java.io.*; import java.lang.reflect.*; //import java.text.*; //import java.util.*; //import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * ReflectiveRunnable uses the Reflection API to redirect calls to run() to any method in any class. * It operates much like ReflectiveAction. * This is also known (apparently) as a trampoline, because it bounces you from one method to another. * I got the idea and most of the implementation from http://java.sun.com/docs/books/performance/ * *

Begun on Wed Jun 12 09:33:00 EDT 2002 *
Copyright (C) 2002-2003 by Ian W. Davis. All rights reserved. */ public class ReflectiveRunnable implements Runnable { //{{{ Static fields //}}} //{{{ Variable definitions //################################################################################################## Object targetObject; String methodName; //}}} //{{{ Constructors //################################################################################################## /** * Creates a run()-redirector. * @param target the object to receive the function call * @param method the name of the method to call; method must be declared as public void some_method(). */ public ReflectiveRunnable(Object target, String method) { targetObject = target; methodName = method; } //}}} //{{{ run() //################################################################################################## public void run() { try { Class[] formalParams = { }; Method m = targetObject.getClass().getMethod(methodName, formalParams); Object[] params = { }; m.invoke(targetObject, params); } catch(Exception ex) { ex.printStackTrace(SoftLog.err); } } //}}} }//class king-2.21.120420/king/1.x_src/king/MainWindow.java0000644000000000000000000000262611531212674017677 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; //import java.io.*; //import java.util.*; import javax.swing.*; import javax.swing.tree.*; import driftwood.gui.*; //}}} /** * MainWindow is a top-level holder for a ContentPane and a menu bar. * Other than that, it doesn't do much! * *

Begun on Wed Apr 24 11:22:51 EDT 2002 *
Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. */ public class MainWindow extends JFrame // implements ... { //{{{ Variables //################################################################################################## //}}} //{{{ Constructor //################################################################################################## /** * Does minimal initialization for a main window. * @param kmain the KingMain that owns this window */ public MainWindow(KingMain kmain) { super("KiNG "+kmain.getPrefs().getString("version")); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); setIconImage(kmain.prefs.windowIcon); } //}}} //{{{ shutdown //################################################################################################## /** Initiates shutdown by calling dispose() on the window. */ public void shutdown() { this.dispose(); } //}}} }//class king-2.21.120420/king/1.x_src/king/KinLoadListener.java0000644000000000000000000000222111531212674020641 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * KinLoadListener is an interface for monitoring * the progress of a kinemage that's being loaded in the * background. All these methods are called from the * Swing event-handling thread. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Fri Apr 11 10:07:14 EDT 2003 */ public interface KinLoadListener //extends ... implements ... { /** * Messaged periodically as the parser reads the file. */ public void updateProgress(long charsRead); /** * Messaged if anything is thrown during the loading process. * This generally means loadingComplete() won't be called. */ public void loadingException(Throwable t); /** * Messaged if and when loading finished successfully. */ public void loadingComplete(KinfileParser parser); }//class king-2.21.120420/king/1.x_src/king/core/0000755000000000000000000000000011744310054015677 5ustar rootrootking-2.21.120420/king/1.x_src/king/core/AGE.java0000644000000000000000000002435711531212670017150 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.border.Border; import javax.swing.tree.*; import driftwood.gui.*; import driftwood.r3.*; //}}} /** * AGE (Abstract Grouping Element) is the basis for all groups, subgroups, lists, kinemages, etc. * *

Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 10:50:36 EDT 2002 */ abstract public class AGE extends AHEImpl implements MutableTreeNode { //{{{ Variable definitions //################################################################################################## static final Border cboxBorder = BorderFactory.createEmptyBorder(1,2,1,2); public java.util.List children = null; public ArrayList masters = null; boolean on = true; JCheckBox cbox = null; boolean nobutton = false; boolean dominant = false; boolean recessiveon = false; boolean lens = false; //}}} //{{{ clone //################################################################################################## /** * Creates a deep copy of this AGE and all its children, * including make full copies of all the points. * Not all AGEs implement Cloneable, so this operation could fail. */ public Object clone() throws CloneNotSupportedException { return clone(true); } /** * Creates a copy of this AGE and all its children. * Not all AGEs implement Cloneable, so this operation could fail. * @param clonePoints whether to clone even the individual points, * or whether we should use instance= at the list level instead. */ public Object clone(boolean clonePoints) throws CloneNotSupportedException { return super.clone(); } //}}} //{{{ setName, iterator //################################################################################################## /** Sets the name of this element */ public void setName(String nm) { super.setName(nm); cbox = new JCheckBox(new ReflectiveAction(getName(), null, this, "cboxHit")); cbox.setAlignmentX(Component.LEFT_ALIGNMENT); cbox.setBorder(cboxBorder); cbox.setSelected(on); } /** Returns an iterator over the children of this element. All children will be AHE's. */ public ListIterator iterator() { return children.listIterator(); } //}}} //{{{ is/setOn, (set)hasButton, is/setDominant, is/setRecessiveOn, is/setLens //################################################################################################## /** Indicates whether this element will paint itself, given the chance */ public boolean isOn() { return on; } /** Sets the painting status of this element */ public void setOn(boolean paint) { on = paint; cbox.setSelected(on); } /** Indicates whether this element would display a button, given the chance */ public boolean hasButton() { return !nobutton; } /** Sets whether this element would display a button, given the chance */ public void setHasButton(boolean b) { nobutton = !b; } /** Indicates whether this element supresses buttons of elements below it */ public boolean isDominant() { return dominant; } /** Sets whether this element supresses buttons of elements below it */ public void setDominant(boolean b) { dominant = b; } /** Indicates whether this element supresses buttons of elements below it WHEN OFF */ public boolean isRecessiveOn() { return recessiveon; } /** Sets whether this element supresses buttons of elements below it WHEN OFF */ public void setRecessiveOn(boolean b) { recessiveon = b; } /** * Indicates whether or not the points under this element * should be hidden if they are more than a certain distance * from the current center of viewing. * The name comes from the visualization community, where * this function is likened to a magnifying glass. */ public boolean isLens() { return lens; } public void setLens(boolean b) { lens = b; } //}}} //{{{ cboxHit(), notifyCboxHit(), buildButtons() //################################################################################################## /** Called when the associated checkbox is turned on/off */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void cboxHit(ActionEvent ev) { on = cbox.isSelected(); notifyCboxHit(); } /** Propagates notice upward that a checkbox was turned on/off */ public void notifyCboxHit() { getOwner().notifyCboxHit(); } /** Builds a grouping of Mage-style on/off buttons in the specified container. */ protected void buildButtons(Container cont) { if(hasButton()) cont.add(cbox); if(!isDominant()) { AlignBox subbox = new AlignBox(BoxLayout.Y_AXIS); subbox.setAlignmentX(Component.LEFT_ALIGNMENT); for(Iterator iter = children.iterator(); iter.hasNext(); ) { ((AGE)iter.next()).buildButtons(subbox); } IndentBox ibox; if(isRecessiveOn()) ibox = new FoldingBox(cbox, subbox); else ibox = new IndentBox(subbox); ibox.setIndent(8); cont.add(ibox); } } //}}} //{{{ calcBoundingBox() and calcRadiusSq() //################################################################################################## /** * Gets a bounding box for the current model. * @param bound the first 6 elements get set to { minX, minY, minZ, maxX, maxY, maxZ }. * Should be called with { +inf, +inf, +inf, -inf, -inf, -inf } */ public void calcBoundingBox(float[] bound) { Iterator iter = children.iterator(); while(iter.hasNext()) ((AHE)iter.next()).calcBoundingBox(bound); } /** * Gets the square of the radius of this model from the specified center. * @param center an array with the x, y, and z coordinates of the center * @return the square of the radius of this element, centered at center */ public float calcRadiusSq(float[] center) { float max = 0f; Iterator iter = children.iterator(); while(iter.hasNext()) max = Math.max(max, ((AHE)iter.next()).calcRadiusSq(center)); return max; } //}}} //{{{ signalTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void signalTransform(Engine engine, Transform xform) { // If the button is off, this will never be rendered if(!isOn()) return; // Not using iterators speeds this up by a few tens of ms int i, end_i; end_i = children.size(); for(i = 0; i < end_i; i++) ((AHE)children.get(i)).signalTransform(engine, xform); } //}}} //{{{ addMaster, removeMaster, hasMaster, masterIterator //################################################################################################## /** Makes the named master control this AGE */ public void addMaster(String masterName) { if(masters == null) masters = new ArrayList(5); if(!masters.contains(masterName)) { masters.add(masterName); } } /** Stops the named master from controlling this AGE. No action if it wasn't ever added. */ public void removeMaster(String masterName) { if(masters == null) return; int i; if((i = masters.lastIndexOf(masterName)) != -1) { masters.remove(i); } } /** Returns true iff the named master controls this AGE */ public boolean hasMaster(String masterName) { if(masters == null) return false; else return masters.contains(masterName); } /** Returns an iterator over this AGE's masters (as Strings), or null if there are none. */ public Iterator masterIterator() { if(masters == null) return null; else return masters.iterator(); } //}}} //{{{ MutableTreeNode functions //################################################################################################## // Required to be a TreeNode public Enumeration children() { return Collections.enumeration(children); } public boolean getAllowsChildren() { return true; } public TreeNode getChildAt(int childIndex) { return (TreeNode)children.get(childIndex); } public int getChildCount() { return children.size(); } public int getIndex(TreeNode node) { return children.indexOf(node); } public TreeNode getParent() { return getOwner(); } public boolean isLeaf() { return false; } // Required to be a MutableTreeNode // public void insert(MutableTreeNode child, int index) public void remove(int index) { children.remove(index); } public void remove(MutableTreeNode node) { children.remove(node); } public void removeFromParent() { getOwner().remove(this); } public void setParent(MutableTreeNode newParent) { setOwner((AGE)newParent); } public void setUserObject(Object obj) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/KList.java0000644000000000000000000002611311531212670017572 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.tree.*; import driftwood.r3.*; //}}} /** * KList implements the concept of a list in a kinemage. * *

Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 12:37:31 EDT 2002 */ public class KList extends AGE implements Cloneable { //{{{ Constants public static final String UNKNOWN = ""; public static final String VECTOR = "vector"; public static final String DOT = "dot"; public static final String MARK = "mark"; public static final String LABEL = "label"; public static final String TRIANGLE = "triangle"; public static final String RIBBON = "ribbon"; public static final String RING = "ring"; public static final String BALL = "ball"; public static final String SPHERE = "sphere"; public static final String ARROW = "arrow"; public static final int NOHILITE = 0x00000001; // no highlight on balls //}}} //{{{ Variable definitions //################################################################################################## KSubgroup parent = null; KList instance = null; // the list that this one is an instance= {xxx} of, or null public String type = UNKNOWN; // type of object represented by this list public KPaint color = KPalette.defaultColor; public int alpha = 255; // 255 = opaque, 0 = fully transparent public float radius = 0.2f; // seems to be default in Mage; also used for arrow tine length (radius=) public int width = 2; public int flags = 0; // nohighlight for balls, style for markers, etc Object clipMode = null; // null for default, else some object key int dimension = 3; // for high-dimensional kinemages // Parameters used for arrowlists; see ArrowPoint for explanation // of tine PERPendicular and PARallel components. float angle = 20f; float tinePerp = (float)(radius * Math.sin(Math.toRadians(angle))); float tinePar = (float)(radius * Math.cos(Math.toRadians(angle))); //}}} //{{{ Constructor(s) //################################################################################################## /** Constructor */ public KList() { children = new ArrayList(20); setName(null); } /** Constructor */ public KList(KSubgroup owner, String nm) { children = new ArrayList(20); setOwner(owner); setName(nm); } //}}} //{{{ clone //################################################################################################## /** * Creates a copy of this group and all its children. * @param clonePoints whether to clone even the individual points, * or whether we should use instance= at the list level instead. */ public Object clone(boolean clonePoints) { try { KList x = (KList) super.clone(clonePoints); x.setName( x.getName() ); // tricks it into creating a new JCheckBox object x.children = new ArrayList(); if(clonePoints) { // Deep copy of children from original source KList orig = this; while(orig.getInstance() != null) orig = orig.getInstance(); KPoint prev = null; for(Iterator iter = orig.children.iterator(); iter.hasNext(); ) { KPoint child = (KPoint) iter.next(); KPoint clone = (KPoint) child.clone(); clone.setOwner(x); x.add(clone); // Everything has been deep copied; we just need // to correct the linked-list pointers for // VectorPoints and TrianglePoints. if(clone.getPrev() != null) clone.setPrev(prev); prev = clone; } } else // we'll use instance= to fake it! { if(this.getInstance() == null) x.setInstance(this); else x.setInstance(this.getInstance()); } // Semi-deep copy of masters, which just contains Strings if(this.masters != null) x.masters = new ArrayList(this.masters); return x; } catch(CloneNotSupportedException ex) { throw new Error("Clone failed in cloneable object"); } } //}}} //{{{ get/setOwner, get/setInstance //################################################################################################## /** Determines the owner (parent) of this element */ public AGE getOwner() { return parent; } /** Establishes the owner (parent) of this element */ public void setOwner(AGE owner) { parent = (KSubgroup)owner; } /** Sets which list this one is an instance of, or null for none. */ public void setInstance(KList inst) { this.instance = inst; } /** Gets which list this one is an instance of, or null for none. */ public KList getInstance() { return this.instance; } //}}} //{{{ get/set{Type, Color, Width, Radius, Angle, Style, ClipMode} //################################################################################################## /** Determines the type of points held by this list */ public String getType() { return type; } /** Establishes the type of points held by this list */ public void setType(String t) { type = t; } /** Determines the default color of points held by this list */ public KPaint getColor() { return color; } /** Establishes the default color of points held by this list */ public void setColor(KPaint c) { color = c; } /** Determines the default width of points held by this list */ public int getWidth() { return width; } /** Establishes the default width of points held by this list */ public void setWidth(int w) { if(w > 7) width = 7; else if(w < 1) width = 1; else width = w; } public float getRadius() { return radius; } public void setRadius(float r) { radius = r; tinePerp = (float)(radius * Math.sin(Math.toRadians(angle))); tinePar = (float)(radius * Math.cos(Math.toRadians(angle))); } /** For use with ArrowPoint */ public float getAngle() { return angle; } public void setAngle(float a) { angle = a; tinePerp = (float)(radius * Math.sin(Math.toRadians(angle))); tinePar = (float)(radius * Math.cos(Math.toRadians(angle))); } /** For use with MarkerPoint */ public int getStyle() { return flags; } public void setStyle(int s) { flags = s; } /** Gets the clipping mode key for this list. Usually null. See Engine.chooseClipMode(). */ public Object getClipMode() { return clipMode; } /** Sets the clipping mode for this list. */ public void setClipMode(Object key) { this.clipMode = key; } /** Returns the nominal number of coordinates per point in this list. */ public int getDimension() { return this.dimension; } /** Sets the nominal number of coordinates per point in this list. */ public void setDimension(int d) { this.dimension = d; } //}}} //{{{ add, clear //################################################################################################## /** Adds a child to this element */ public void add(KPoint child) { children.add(child); } /** Removes all children from this element */ public void clear() { children.clear(); } //}}} //{{{ buildButtons() //################################################################################################## protected void buildButtons(Container cont) { if(hasButton()) cont.add(cbox); } //}}} //{{{ signalTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void signalTransform(Engine engine, Transform xform) { // If the button is off, this will never be rendered if(!isOn()) return; int i, end_i; if(this.clipMode != null) engine.chooseClipMode(this.clipMode); // set alt clipping // If we're an instance of someone else, transform those points too if(instance != null) { engine.setActingParent(this); end_i = instance.children.size(); for(i = 0; i < end_i; i++) ((KPoint)instance.children.get(i)).signalTransform(engine, xform, engine.zoom3D); } // Not using iterators speeds this up by a few tens of ms engine.setActingParent(null); end_i = children.size(); for(i = 0; i < end_i; i++) ((KPoint)children.get(i)).signalTransform(engine, xform, engine.zoom3D); if(this.clipMode != null) engine.chooseClipMode(null); // reset to default } //}}} //{{{ MutableTreeNode functions //################################################################################################## // Required to be a TreeNode public Enumeration children() { return null; } public boolean getAllowsChildren() { return false; } public TreeNode getChildAt(int childIndex) { return null; } /** Returns 0 for JTree so points won't be visible; not equal to children.size(). */ public int getChildCount() { return 0; } public int getIndex(TreeNode node) { return 0; } public TreeNode getParent() { return getOwner(); } public boolean isLeaf() { return true; } // Required to be a MutableTreeNode public void insert(MutableTreeNode child, int index) {} public void remove(int index) {} public void remove(MutableTreeNode node) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/MarkerPoint.java0000644000000000000000000000734311531212670021003 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; //import java.io.*; //import java.text.*; //import java.util.*; //import javax.swing.*; //}}} /** * MarkerPoint is a "screen-oriented displayable" that can take on many different looks. * It servers as a marker for picked points and may come in list form, e.g. for graphs. * *

Begun on Sun Jun 23 15:33:28 EDT 2002 *
Copyright (C) 2002 by Ian W. Davis. All rights reserved. */ public class MarkerPoint extends AbstractPoint // implements ... { //{{{ Static fields public static final int CROSS_S = 0x00000001; public static final int CROSS_M = 0x00000002; public static final int CROSS_L = 0x00000004; public static final int CROSS_2 = 0x00000008; public static final int X_S = 0x00000010; public static final int X_M = 0x00000020; public static final int X_L = 0x00000040; public static final int X_2 = 0x00000080; public static final int SQUARE_S = 0x00000100; public static final int SQUARE_M = 0x00000200; public static final int SQUARE_L = 0x00000400; public static final int BOX_S = 0x00001000; public static final int BOX_M = 0x00002000; public static final int BOX_L = 0x00004000; public static final int RING_S = 0x00010000; public static final int RING_M = 0x00020000; public static final int RING_L = 0x00040000; public static final int DISC_S = 0x00100000; public static final int DISC_M = 0x00200000; public static final int DISC_L = 0x00400000; //}}} //{{{ Variable definitions //################################################################################################## int style = 0; //}}} //{{{ Constructors //################################################################################################## /** * Creates a new data point displayed as some type of marker. * * @param list the list that contains this point * @param label the pointID of this point */ public MarkerPoint(KList list, String label) { super(list, label); } /** Quick way to follow a point -- creates an unpickable marker named "marker" */ public MarkerPoint(KPoint p, KPaint color, int style_mask) { super(null, "marker"); setColor(color); setStyle(style_mask); setUnpickable(true); x0 = (float)p.getX(); y0 = (float)p.getY(); z0 = (float)p.getZ(); } //}}} //{{{ get/setStyle() //################################################################################################## /** Retrieves the style code for this marker */ public int getStyle() { return style; } /** Sets the style for this marker. Use a Boolean OR of fields defined in this class. */ public void setStyle(int s) { style = s; } //}}} //{{{ paintStandard //################################################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paintStandard(Engine engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; Paint paint = maincolor.getPaint(engine.backgroundMode, engine.colorCue); int width = engine.markerSize; // Point style dominants over list style int paintStyle = 0; if(this.getStyle() != 0) paintStyle = this.getStyle(); else if(parent != null && parent.getStyle() != 0) paintStyle = parent.getStyle(); engine.painter.paintMarker(paint, x, y, z, width, paintStyle); } //}}} }//class king-2.21.120420/king/1.x_src/king/core/Painter.java0000644000000000000000000000405311531212670020145 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * Painter is a standard interface for classes that are capable of * rendering transformed KPoints as 2-D images (usually on the screen). * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Fri May 21 19:11:16 EDT 2004 */ public interface Painter //extends ... implements ... { public void paintBall(Paint paint, double x, double y, double z, double r, boolean showHighlight); public void paintDot(Paint paint, double x, double y, double z, int width); public void paintLabel(Paint paint, String label, double x, double y, double z); public void paintMarker(Paint paint, double x, double y, double z, int width, int paintStyle); public void paintSphereDisk(Paint paint, double x, double y, double z, double r); public void paintTriangle(Paint paint, double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3); public void paintVector(Paint paint, int width, int widthCue, double x1, double y1, double z1, double x2, double y2, double z2); // Used by the auger tool for its targeting circle /** x,y,z is CENTER, not edge like it is for Java AWT functions */ public void drawOval(Paint paint, double x, double y, double z, double width, double height); public void drawOval(Paint paint, int linewidth, int widthCue, double x, double y, double z, double width, double height); public void setFont(Font f); public int getLabelWidth(String s); public int getLabelAscent(String s); public int getLabelDescent(String s); public void setViewport(int x, int y, int width, int height); public void clearCanvas(Color color); // setViewport() must be called first! }//class king-2.21.120420/king/1.x_src/king/core/VectorPoint.java0000644000000000000000000003304011531212670021015 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.geom.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * VectorPoint represents the endpoint of a line. * *

Copyright (C) 2002-2003 by Ian W. Davis. All rights reserved. *
Begun on Fri Apr 26 16:46:09 EDT 2002 */ public class VectorPoint extends AbstractPoint // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## VectorPoint from = null; int width = 0; // width of this line (0 => use parent.width) //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new data point representing one end of a line. * * @param list the list that contains this point * @param label the pointID of this point * @param start where this line is drawn from, or null if it's the starting point */ public VectorPoint(KList list, String label, VectorPoint start) { super(list, label); setPrev(start); } //}}} //{{{ get/setPrev, isBreak, get/setWidth //################################################################################################## /** * Sets the point that precedes this one. * This matters to "chainable" points, like vectors and triangles. * For other points, it does nothing. * @param pt the point preceding this one in seqence */ public void setPrev(KPoint pt) { super.setPrev(pt); from = (VectorPoint)pt; } /** * Gets the point preceding this one in the chain. * @return the preceding point, or null if (a) this is a break in the chain or (b) this is not a chainable point type. */ public KPoint getPrev() { return from; } /** * True iff this is a chainable point type (e.g. vector, triangle) AND there is a chain break. */ public boolean isBreak() { return (from == null); } /** Gets the line width of this point, if applicable */ public int getWidth() { return width; } /** Sets the line width of this point */ public void setWidth(int w) { if(w > 7) width = 7; else if(w < 0) width = 0; else width = w; } //}}} //{{{ signalTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. * @param zoom the zoom factor encoded by the Transform, * as a convenience for resizing things. */ public void signalTransform(Engine engine, Transform xform, double zoom) { // Don't call super.signalTransform() b/c we do it all here xform.transform(this, engine.work1); setDrawXYZ(engine.work1); // This only works because starting points are listed before ending points // in a kinemage, thus, from has already been transformed when we get here! // The idea is to add points based on the midpoint of the *visible* range. if(from != null) { if(from.z < z && from.z <= engine.clipFront && z >= engine.clipBack) { engine.addPaintable(this, (Math.max(from.z, engine.clipBack)+Math.min(z, engine.clipFront)) / 2.0); } else if(from.z >= engine.clipBack && z <= engine.clipFront) // && from.z >= z { engine.addPaintable(this, (Math.max(z, engine.clipBack)+Math.min(from.z, engine.clipFront)) / 2.0); } // else don't paint } else engine.addPaintable(this, z); // won't be painted, but will be pickable } //}}} //{{{ isPickedBy //################################################################################################## /** * Returns true if the specified pick hits this point, else returns false * Pays no attention to whether this point is marked as unpickable. * @param radius the desired picking radius * @param objPick whether we should try to pick solid objects in addition to points * @return the KPoint that should be counted as being picked, or null for none. * Usually this, but maybe not for object picking. */ public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { if(objPick && from != null) { VectorPoint A = this, B = from; // first check: bounding box if(xx > (Math.min(A.x,B.x) - radius) && xx < (Math.max(A.x,B.x)+radius) && yy > (Math.min(A.y,B.y) - radius) && yy < (Math.max(A.y,B.y)+radius)) { // line as ax + by + d = 0, like a plane float a = B.y - A.y, b = A.x - B.x; double num = a*xx + b*yy - (a*A.x + b*A.y); // parenthesized term is -d double d2 = (num*num) / (a*a + b*b); // square of distance to the line //System.err.println("x = "+xx+" : "+Math.min(A.x,B.x)+" - "+Math.max(A.x,B.x)); //System.err.println("y = "+yy+" : "+Math.min(A.y,B.y)+" - "+Math.max(A.y,B.y)); //System.err.println("a = "+a+"; b = "+b+"; d = "+(-(a*A.x + b*A.y))); //System.err.println("D^2 = "+d2); // Always return the "line to" point, so that color changes work as expected if(d2 < radius*radius) return this; /*{ float dx, dy, dA, dB; dx = xx - A.x; dy = yy - A.y; dA = dx*dx + dy*dy; dx = xx - B.x; dy = yy - B.y; dB = dx*dx + dy*dy; if(dA <= dB) return A; else return B; }*/ } } // Not else {...} b/c this can be true for line ends even outside the bounding box: return super.isPickedBy(xx, yy, radius, objPick); } //}}} //{{{ paintStandard //################################################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paintStandard(Engine engine) { //if(from == null || equals(from)) return; if(from == null || (x0 == from.x0 && y0 == from.y0 && z0 == from.z0)) return; KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; // [IWD, 4 May 2005] // For Mage/Prekin, it's enough for EITHER end of the line to be off to // not draw it. The line below could be replaced with a custom pmHit() // that ORs this.pm_mask with from.pm_mask before deciding on a hit. // That would be faster (precomputed) but seems riskier at the moment... // // Oops, the real problem is the FROM side not being marked with a pointmaster, // which means... what? How does this end up being a problem again? // // if(from.getDrawingColor(engine).isInvisible()) return; //Paint paint = maincolor.getPaint(engine.backgroundMode, engine.colorCue); int alpha = (parent == null ? 255 : parent.alpha); Paint paint = maincolor.getPaint(engine.backgroundMode, 1, engine.colorCue, alpha); // If we REALLY wanted to clip line segments to the visible volume, we // could use 6 planes defining a box / truncated pyramid. // See ArrowPoint for ideas on Cohen-Sutherland clipping. // To intersect a line with a plane, from Comp.Graphics.Algorithms FAQ 5: // If the plane is defined as: // a*x + b*y + c*z + d = 0 // and the line is defined as: // x = x1 + (x2 - x1)*t = x1 + i*t // y = y1 + (y2 - y1)*t = y1 + j*t // z = z1 + (z2 - z1)*t = z1 + k*t // Then just substitute these into the plane equation. You end up with: // t = - (a*x1 + b*y1 + c*z1 + d)/(a*i + b*j + c*k) // When the denominator is zero, the line is contained in the plane if // the numerator is also zero (the point at t=0 satisfies the plane // equation), otherwise the line is parallel to the plane. //{{{ Determine who's in back and who's in front. double xb, yb, zb, shortenb, xf, yf, zf, shortenf; // Back and Front boolean fromIsFront; // are the "f" (front) points this or this.from? if(from.z < z) { fromIsFront = false; xb = from.x; yb = from.y; zb = from.z; shortenb = engine.getShortening(from); xf = x; yf = y; zf = z; shortenf = engine.getShortening(this); } else // from.z >= z { fromIsFront = true; xf = from.x; yf = from.y; zf = from.z; shortenf = engine.getShortening(from); xb = x; yb = y; zb = z; shortenb = engine.getShortening(this); } //}}} Determine who's in back and who's in front. //{{{ Shorten to fit in clipping plane, outside of balls // If line ends extend outside clipping area, calc. its intersection w/ clipping plane // If a ball resides at one end point, shorten the line by the radius of the ball double dz, dxdz, dydz, dzb, dzf, sx, sy, sz, s; dz = zf - zb; dxdz = (xf - xb)/dz; // == (dx/dz) dydz = (yf - yb)/dz; // == (dy/dz) dzb = engine.clipBack - zb; dzf = engine.clipFront - zf; // Clipping or shortening for back point. if(shortenb > 0) { s = Math.sqrt(shortenb*shortenb / ((dxdz*dxdz + dydz*dydz + 1)*dz*dz)); sz = s*dz; sx = sz*dxdz; sy = sz*dydz; if(sz > dzb) { xb += sx; yb += sy; zb += sz; } else if(zb < engine.clipBack) { xb = xb + dxdz*dzb; yb = yb + dydz*dzb; zb = engine.clipBack; } } else if(zb < engine.clipBack) { xb = xb + dxdz*dzb; yb = yb + dydz*dzb; zb = engine.clipBack; } // Clipping or shortening for front point. if(shortenf > 0) { s = Math.sqrt(shortenf*shortenf / ((dxdz*dxdz + dydz*dydz + 1)*dz*dz)); sz = s*dz; sx = sz*dxdz; sy = sz*dydz; if(sz > -dzf) { xf -= sx; yf -= sy; zf -= sz; } else if(zf > engine.clipFront) { xf = xf + dxdz*dzf; yf = yf + dydz*dzf; zf = engine.clipFront; } } else if(zf > engine.clipFront) { xf = xf + dxdz*dzf; yf = yf + dydz*dzf; zf = engine.clipFront; } //}}} Shorten to fit in clipping plane, outside of balls //engine.painter.paintVector(paint, calcLineWidth(engine), engine.widthCue, // xb, yb, zb, xf, yf, zf); if(fromIsFront) paintStandard2(engine, paint, xf, yf, zf, xb, yb, zb); else paintStandard2(engine, paint, xb, yb, zb, xf, yf, zf); } //}}} //{{{ paintStandard2 //################################################################################################## /** * This function exists solely for the convenience of ArrowPoints; * a good JIT will optimize it away for VectorPoints. * Coordinates are already transformed, perspective corrected, and clipped by Z planes. * They have NOT been clipped to the drawing area yet. */ void paintStandard2(Engine engine, Paint paint, double fromX, double fromY, double fromZ, double toX, double toY, double toZ) { int lineWidth = calcLineWidth(engine); engine.painter.paintVector(paint, lineWidth, engine.widthCue, fromX, fromY, fromZ, toX, toY, toZ); } //}}} //{{{ calcLineWidth //################################################################################################## // Vector way of finding the right line width to use, given the settings in the engine int calcLineWidth(Engine engine) { if(engine.thinLines) return 1; int wid = 2; if(this.width > 0) wid = this.width; else if(parent != null) wid = parent.width; return wid; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/AbstractPoint.java0000644000000000000000000005325111531212670021324 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.data.TinyMap; import driftwood.r3.*; //}}} /** * AbstractPoint is a generic, non-instantiable representation of a 'point' in a kinemage. * This class and its subclasses contain the code for drawing all the different graphics primitives in Mage. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 12:57:57 EDT 2002 */ abstract public class AbstractPoint extends AHEImpl implements KPoint { //{{{ Constants // Bit allocation for 'multi': // kngpt points future tinymap // skkkkkkkppppppppffffffffmmmmmmmm /** Isolates all the bits used by tinymap */ public static final int TINYMAP_AND = 0xff; /** tinymap keys, 0 - 7 */ public static final int ASPECTS_KEY = (1<<0); public static final int COMMENT_KEY = (1<<1); public static final int COORDS_KEY = (1<<2); // for kins with >3 dimensions /** If this bit is set, the point is 'live' and should be painted */ public static final int ON_BIT = 0x40000000; /** If this bit is set, the point will not be picked by a mouse click */ public static final int UNPICKABLE = 0x20000000; /** Used by e.g. TrianglePoints to tell whose normal to in lighting effects */ public static final int SEQ_EVEN_BIT = 0x10000000; /** A flag used by Mage only; point is visible but not written to PDB output. */ public static final int GHOST_BIT = 0x08000000; //}}} //{{{ Variable definitions //################################################################################################## float x0 = 0f, y0 = 0f, z0 = 0f; // permanent coords float x = 0f, y = 0f, z = 0f; // transformed coords KList parent = null; // list that contains this point Object[] tmValues = null; // holds (ASPECTS), , etc. int pm_mask = 0; // bit flags for pointmasters /** Color this point is drawn in; null means take from list */ KPaint color = null; /** higher bits are used as flags */ public int multi = 0 | ON_BIT; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public AbstractPoint() { } /** * Constructor */ public AbstractPoint(KList owner, String nm) { setOwner(owner); setName(nm); } //}}} //{{{ clone //################################################################################################## public Object clone() { try { return super.clone(); } catch(CloneNotSupportedException ex) { throw new Error("Clone failed in cloneable object"); } } //}}} //{{{ get/setOrigX/Y/Z //################################################################################################## /** Returns the untransformed coordinate for this point. * @deprecated In favor of getX(). */ public float getOrigX() { return x0; } /** Returns the untransformed coordinate for this point. * @deprecated In favor of getY(). */ public float getOrigY() { return y0; } /** Returns the untransformed coordinate for this point. * @deprecated In favor of getZ). */ public float getOrigZ() { return z0; } /** Assigns a value to the untransformed coordinate for this point. * @deprecated In favor of setX(). */ public void setOrigX(double xx) { x0 = (float)xx; } /** Assigns a value to the untransformed coordinate for this point. * @deprecated In favor of setY(). */ public void setOrigY(double yy) { y0 = (float)yy; } /** Assigns a value to the untransformed coordinate for this point. * @deprecated In favor of setZ(). */ public void setOrigZ(double zz) { z0 = (float)zz; } /** Assigns a value to the untransformed coordinates for this point. * @deprecated In favor of setXYZ(). */ public void setOrigXYZ(Tuple3 t) { this.setOrigX(t.getX()); this.setOrigY(t.getY()); this.setOrigZ(t.getZ()); } //}}} //{{{ get/setX/Y/Z //################################################################################################## /** Returns the untransformed coordinate for this point */ public double getX() { return x0; } /** Returns the untransformed coordinate for this point */ public double getY() { return y0; } /** Returns the untransformed coordinate for this point */ public double getZ() { return z0; } /** Assigns a value to the untransformed coordinate for this point */ public void setX(double xx) { x0 = (float)xx; } /** Assigns a value to the untransformed coordinate for this point */ public void setY(double yy) { y0 = (float)yy; } /** Assigns a value to the untransformed coordinate for this point */ public void setZ(double zz) { z0 = (float)zz; } /** Assigns a value to the untransformed coordinates for this point */ public void setXYZ(double xx, double yy, double zz) { x0 = (float)xx; y0 = (float)yy; z0 = (float)zz; } //}}} //{{{ get/setDrawX/Y/Z //################################################################################################## /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawX() { return x; } /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawY() { return y; } /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawZ() { return z; } /** Assigns a value to the fully transformed (drawing) coordinate for this point */ public void setDrawX(double xx) { x = (float)xx; } /** Assigns a value to the fully transformed (drawing) coordinate for this point */ public void setDrawY(double yy) { y = (float)yy; } /** Assigns a value to the fully transformed (drawing) coordinate for this point */ public void setDrawZ(double zz) { z = (float)zz; } /** Assigns a value to the fully transformed (drawing) coordinates for this point */ public void setDrawXYZ(Tuple3 t) { x = (float)t.getX(); y = (float)t.getY(); z = (float)t.getZ(); } //}}} //{{{ get/setAllCoords, useCoordsXYZ //################################################################################################## /** * Stores an array of coordinates for "high-dimensional" points. * The float[] is stored without cloning and so is subject to overwrite. */ public void setAllCoords(float[] coords) { tmPut(COORDS_KEY, coords); } /** * Retrieves the "high-dimensional" coordinates of this point, or null if not set. * The float[] is returned without cloning and so is subject to overwrite. */ public float[] getAllCoords() { return (float[]) tmGet(COORDS_KEY); } /** * Copies the high-dimensional coordinates at the specified indices * into this point's (untransformed) X, Y, and Z fields. * If a index is out of range (0-based), it is ignored and the value is not changed. */ public void useCoordsXYZ(int xIndex, int yIndex, int zIndex) { float[] coords = this.getAllCoords(); if(coords == null) return; if((xIndex >= 0) && (xIndex < coords.length)) this.setX( coords[xIndex] ); if((yIndex >= 0) && (yIndex < coords.length)) this.setY( coords[yIndex] ); if((zIndex >= 0) && (zIndex < coords.length)) this.setZ( coords[zIndex] ); } //}}} //{{{ get/setOwner, get/setPrev, isBreak //################################################################################################## /** Determines the owner (parent) of this element */ public AGE getOwner() { return parent; } /** Establishes the owner (parent) of this element */ public void setOwner(AGE owner) { parent = (KList)owner; } /** * Sets the point that precedes this one. * This matters to "chainable" points, like vectors and triangles. * For other points, it does nothing. * @param pt the point preceding this one in seqence */ public void setPrev(KPoint pt) { if(pt == null) multi &= ~SEQ_EVEN_BIT; // turn off else if(pt instanceof AbstractPoint) { AbstractPoint apt = (AbstractPoint) pt; if((apt.multi & SEQ_EVEN_BIT) != 0) multi &= ~SEQ_EVEN_BIT; // turn off else multi |= SEQ_EVEN_BIT; // turn on } else multi &= ~SEQ_EVEN_BIT; // turn off } /** * Gets the point preceding this one in the chain. * @return the preceding point, or null if (a) this is a break in the chain or (b) this is not a chainable point type. */ public KPoint getPrev() { return null; } /** * True iff this is a chainable point type (e.g. vector, triangle) AND there is a chain break. */ public boolean isBreak() { return false; } //}}} //{{{ is/get/set{On, Unpickable, Ghost, Color, Aspects, Width, Radius, Comment} //################################################################################################## /** Indicates whether this element will paint itself, given the chance */ public boolean isOn() { return ((multi & ON_BIT) != 0); } /** Sets the painting status of this element */ public void setOn(boolean paint) { if(paint) multi |= ON_BIT; else multi &= ~ON_BIT; } /** Indicates whether this point can be picked with the mouse */ public boolean isUnpickable() { return ((multi & UNPICKABLE) != 0); } /** Sets the picking status of this point */ public void setUnpickable(boolean b) { if(b) multi |= UNPICKABLE; else multi &= ~UNPICKABLE; } /** Indicates whether this point is a "ghost" for Mage */ public boolean isGhost() { return ((multi & GHOST_BIT) != 0); } /** Sets the ghost status of this point */ public void setGhost(boolean b) { if(b) multi |= GHOST_BIT; else multi &= ~GHOST_BIT; } /** Returns the color of this point, or null if it inherits from its list */ public KPaint getColor() { return color; } /** Sets the color of this point. */ public void setColor(KPaint c) { color = c; } /** Gets the aspect string of this point */ public String getAspects() { return (String) tmGet(ASPECTS_KEY); } /** Sets the aspect string of this point */ public void setAspects(String a) { tmPut(ASPECTS_KEY, a); } /** Gets the line width of this point, if applicable */ public int getWidth() { return 0; } /** Sets the line width of this point, if applicable */ public void setWidth(int w) {} /** Gets the radius of this point, if applicable */ public float getRadius() { return 0; } /** Sets the radius of this point, if applicable */ public void setRadius(float radius) {} /** Sets the point comment for this point. */ public void setComment(String cmt) { tmPut(COMMENT_KEY, cmt); } /** Gets the comment for this point, which defaults to null. */ public String getComment() { return (String) tmGet(COMMENT_KEY); } //}}} //{{{ getDrawingColor //################################################################################################## /** Returns the color that will be used to draw this point (ignoring aspects). Never null. */ public KPaint getDrawingColor() { KPaint paint = null; //boolean byList = (engine.colorByList && parent != null); // If live bit has been unset by a pointmaster, we're invisible! if(!isOn()) paint = KPalette.invisible; //else if(byList) paint = parent.color; else if(color != null) paint = color; else if(parent != null) paint = parent.color; if(paint == null) paint = KPalette.defaultColor; return paint; } /** Returns the color that will be used to draw this point, taking aspects into account. Never null. */ public KPaint getDrawingColor(Engine engine) { KPaint paint = null, tmppaint = null; boolean byList = (engine.colorByList && parent != null); String aspects = this.getAspects(); boolean doAspects = (engine.activeAspect > 0 && aspects != null && aspects.length() >= engine.activeAspect); // If live bit has been unset by a pointmaster, we're invisible! if(!isOn()) paint = KPalette.invisible; else if(byList) paint = parent.color; // This way, we only use the aspect if we recognize the character else if(doAspects && (tmppaint = KPalette.forAspect(aspects.charAt(engine.activeAspect-1))) != null) paint = tmppaint; else if(color != null) paint = color; else if(parent != null) paint = parent.color; if(paint == null) paint = KPalette.defaultColor; return paint; } //}}} //{{{ pmHit, pmWouldHit, get/setPmMask //################################################################################################## /** * Processes a pointmaster on/off request. * @param mask the bitmask indicating which masters are being turned on/off * @param offmask the bitmask indicating which masters are already off * @param turnon true if affected points are to be turned on, * false if affected points are to be turned off. */ public void pmHit(int mask, int offmask, boolean turnon) { //Turn OFF if we're affected by this pointmaster, period. //Turn ON if and only if all our other pointmasters are also ON already. if(turnon) { if(( mask & pm_mask) != 0 && (offmask & pm_mask) == 0) setOn(true); } else { if((mask & pm_mask) != 0) setOn(false); } } /** Indicates whether or not the given pointmaster set would affect this point. */ public boolean pmWouldHit(int mask) { return (mask & pm_mask) != 0; } public int getPmMask() { return pm_mask; } public void setPmMask(int mask) { this.pm_mask = mask; } //}}} //{{{ calcBoundingBox() and calcRadiusSq() //################################################################################################## /** * Gets a bounding box for the current model. * @param bound the first 6 elements get set to { minX, minY, minZ, maxX, maxY, maxZ }. * Should be called with { +inf, +inf, +inf, -inf, -inf, -inf } */ public void calcBoundingBox(float[] bound) { if(x0 < bound[0]) bound[0] = x0; if(y0 < bound[1]) bound[1] = y0; if(z0 < bound[2]) bound[2] = z0; if(x0 > bound[3]) bound[3] = x0; if(y0 > bound[4]) bound[4] = y0; if(z0 > bound[5]) bound[5] = z0; } /** * Gets the square of the radius of this model from the specified center. * @param center an array with the x, y, and z coordinates of the center * @return the square of the radius of this element, centered at center */ public float calcRadiusSq(float[] center) { float dx, dy, dz; dx = x0 - center[0]; dy = y0 - center[1]; dz = z0 - center[2]; return (dx*dx + dy*dy + dz*dz); } //}}} //{{{ signalTransform //################################################################################################## public void signalTransform(Engine engine, Transform xform) { signalTransform(engine, xform, 1.0); } /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. * @param zoom the zoom factor encoded by the Transform, * as a convenience for resizing things. */ public void signalTransform(Engine engine, Transform xform, double zoom) { // We have to transform whether we're on or not, because dependent points // (vectors, triangles) may be on and expect our coords to be valid. // Point-on is checked during drawing and picking by getDrawingColor. xform.transform(this, engine.work1); setDrawXYZ(engine.work1); engine.addPaintable(this, z); } //}}} //{{{ isPickedBy //################################################################################################## /** * Returns true if the specified pick hits this point, else returns false * Pays no attention to whether this point is marked as unpickable. * @param radius the desired picking radius * @param objPick whether we should try to pick solid objects in addition to points * @return the KPoint that should be counted as being picked, or null for none. * Usually this, but maybe not for object picking. */ public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { return _isPickedBy(xx, yy, radius, objPick); } // For BallPoint and RingPoint, because Java doesn't allow super.super: KPoint _isPickedBy(float xx, float yy, float radius, boolean objPick) { float deltax, deltay; deltax = (x - xx); deltay = (y - yy); if((deltax*deltax + deltay*deltay) <= radius*radius) return this; else return null; } //}}} //{{{ equals(), hashCode() //################################################################################################## // These functions are for identifying points that occupy the same location in space. /** Tests two KPoints to see if they occupy the same space */ public boolean equals(Object obj) { if(obj == null || !(obj instanceof KPoint)) return false; KPoint p = (KPoint)obj; if(getX() == p.getX() && getY() == p.getY() && getZ() == p.getZ()) return true; else return false; } /** Generates a hashcode based on the coordinates of this point */ public int hashCode() { /* I stole this from Colt: */ // this avoids excessive hashCollisions // in the case values are of the form (1.0, 2.0, 3.0, ...) int b1 = Float.floatToIntBits(x0*663608941.737f); int b2 = Float.floatToIntBits(y0*663608941.737f); int b3 = Float.floatToIntBits(z0*663608941.737f); // The rotation of bits is my own idea return (b1 ^ (b2<<11 | b2>>>21) ^ (b3<<22 | b3>>>10)); /* I stole this from Colt: */ /* Old version * / int b1 = Float.floatToIntBits(x0); int b2 = Float.floatToIntBits(y0); int b3 = Float.floatToIntBits(z0); // The rotation of bits is my own idea return (b1 ^ b2 ^ b3); /* Old version */ } //}}} //{{{ tmGet, tmPut, tmRemove //############################################################################## /** * Returns the value associated with the given key, * or null if this map does not contain that key. */ Object tmGet(int key) { int keyMap = this.multi & TINYMAP_AND; if(!TinyMap.contains(key, keyMap)) return null; else return tmValues[TinyMap.indexOf(key, keyMap)]; } /** * Associates a new value with key and returns the old value, * or null if none was set. */ Object tmPut(int key, Object value) { int keyMap = this.multi & TINYMAP_AND; int i = TinyMap.indexOf(key, keyMap); if(TinyMap.contains(key, keyMap)) { Object old = tmValues[i]; tmValues[i] = value; return old; } else { int tmValues_length = TinyMap.size(keyMap); //tmValues may be null! this.multi |= (1 << key) & TINYMAP_AND; Object[] newvals = new Object[tmValues_length+1]; for(int j = 0; j < i; j++) newvals[j] = tmValues[j]; newvals[i] = value; for(int j = i; j < tmValues_length; j++) newvals[j+1] = tmValues[j]; tmValues = newvals; return null; } } /** Removes the value for the given key, if present. */ Object tmRemove(int key) { int keyMap = this.multi & TINYMAP_AND; if(!TinyMap.contains(key, keyMap)) return null; int i = TinyMap.indexOf(key, keyMap); Object old = tmValues[i]; this.multi &= ~((1 << key) & TINYMAP_AND); Object[] newvals = new Object[tmValues.length-1]; for(int j = 0; j < i; j++) newvals[j] = tmValues[j]; for(int j = i+1; j < tmValues.length; j++) newvals[j-1] = tmValues[j]; tmValues = newvals; if(tmValues.length == 0) tmValues = null; // just to save space return old; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/KPalette.java0000644000000000000000000003112711531212670020256 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; //}}} /** * KPalette organizes the canonical Mage colors. * This class is an incompatible, 3rd-generation replacement * for ColorManager. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Wed Jun 25 15:37:14 EDT 2003 */ public class KPalette //extends ... implements ... { //{{{ Pens /** Scaling factors for width at different depth-cue levels */ public static final float[] widthScale = new float[KPaint.COLOR_LEVELS]; /** A zero-width pen for objects that should be filled instead. */ public static final BasicStroke pen0 = new BasicStroke(0, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); /** A one pixel thick pen for ordinary drawing. */ public static final BasicStroke pen1 = new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); /** The set of various pens for drawing depth-cued lines in different widths. */ public static final BasicStroke[][] pens = new BasicStroke[7][KPaint.COLOR_LEVELS]; /** The set of line widths used for basic drawing, adjusted by widthScale. */ public static final int[][] lineWidths = new int[7][KPaint.COLOR_LEVELS]; /** * This version of line widths emulates MAGE. * Line width multipliers scale linearly from 0.5 to 2.0. * It's not realistic with respect to the laws of optical perspective, * but it is more pronounced than my old version. */ static { for(int i = 0; i < KPaint.COLOR_LEVELS; i++) { double a = i / (KPaint.COLOR_LEVELS-1.0); widthScale[i] = (float)(a*2.0 + (1-a)*0.5); } // No depth cueing by width for really thin lines for(int j = 0; j < KPaint.COLOR_LEVELS; j++) { lineWidths[0][j] = 1; pens[0][j] = pen1; } // All other line thicknesses get depth cueing for(int i = 1; i < 7; i++) { for(int j = 0; j < KPaint.COLOR_LEVELS; j++) { lineWidths[i][j] = Math.max(1, (int)((i+1)*widthScale[j] + 0.5)); pens[i][j] = new BasicStroke((i+1)*widthScale[j], BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); } } } /** Jane feels this doesn't give a strong enough effect * / // I don't remember what this code is calculating anymore. // I think it has to do with perspective, so that lines // shrink in the background as though they were cylinders // according to the normal rules of perspective. static { double half = (KPaint.COLOR_LEVELS-1.0) / 2.0; double quot = 3.0 * half; for(int i = 0; i < KPaint.COLOR_LEVELS; i++) { widthScale[i] = (float)(1.0 / (1.0 - (i-half)/quot)); } for(int i = 0; i < 7; i++) { for(int j = 0; j < KPaint.COLOR_LEVELS; j++) { pens[i][j] = new BasicStroke((i+1)*widthScale[j], BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); } } } /** Jane feels this doesn't give a strong enough effect */ //}}} //{{{ Colors //################################################################################################## // Create standard entries // name hue bSat wSat bVal wVal //public static final KPaint defaultColor = KPaint.createHSV("default", 0, 0, 0, 100, 0); public static final KPaint red = KPaint.createHSV("red", 0, 100, 100, 100, 80); public static final KPaint orange = KPaint.createHSV("orange", 20, 100, 100, 100, 90); //public static final KPaint rust = KPaint.createHSV("rust", 20, 100, 100, 100, 90); public static final KPaint gold = KPaint.createHSV("gold", 40, 100, 100, 100, 90); public static final KPaint yellow = KPaint.createHSV("yellow", 60, 100, 100, 100, 90); public static final KPaint lime = KPaint.createHSV("lime", 80, 100, 100, 100, 85); public static final KPaint green = KPaint.createHSV("green", 120, 80, 90, 100, 75); public static final KPaint sea = KPaint.createHSV("sea", 150, 100, 100, 100, 85); //public static final KPaint seagreen = KPaint.createHSV("seagreen", 150, 100, 100, 100, 85); public static final KPaint cyan = KPaint.createHSV("cyan", 180, 100, 85, 85, 80); public static final KPaint sky = KPaint.createHSV("sky", 210, 75, 80, 95, 90); //public static final KPaint skyblue = KPaint.createHSV("skyblue", 210, 75, 80, 95, 90); public static final KPaint blue = KPaint.createHSV("blue", 240, 70, 80, 100, 100); public static final KPaint purple = KPaint.createHSV("purple", 275, 75, 100, 100, 85); public static final KPaint magenta = KPaint.createHSV("magenta", 300, 95, 100, 100, 90); public static final KPaint hotpink = KPaint.createHSV("hotpink", 335, 100, 100, 100, 90); public static final KPaint pink = KPaint.createHSV("pink", 350, 55, 75, 100, 90); public static final KPaint peach = KPaint.createHSV("peach", 25, 75, 75, 100, 90); public static final KPaint lilac = KPaint.createHSV("lilac", 275, 55, 75, 100, 80); public static final KPaint pinktint = KPaint.createHSV("pinktint", 340, 30, 100, 100, 55); public static final KPaint peachtint = KPaint.createHSV("peachtint", 25, 50, 100, 100, 60); public static final KPaint yellowtint = KPaint.createHSV("yellowtint",60, 50, 100, 100, 75); //public static final KPaint paleyellow = KPaint.createHSV("paleyellow",60, 50, 100, 100, 75); public static final KPaint greentint = KPaint.createHSV("greentint", 135, 40, 100, 100, 35); public static final KPaint bluetint = KPaint.createHSV("bluetint", 220, 40, 100, 100, 50); public static final KPaint lilactint = KPaint.createHSV("lilactint", 275, 35, 100, 100, 45); public static final KPaint white = KPaint.createHSV("white", 0, 0, 0, 100, 0); public static final KPaint gray = KPaint.createHSV("gray", 0, 0, 0, 50, 40); //public static final KPaint grey = KPaint.createHSV("grey", 0, 0, 0, 50, 40); public static final KPaint brown = KPaint.createHSV("brown", 20, 45, 45, 75, 55); public static final KPaint deadwhite = KPaint.createSolid("deadwhite", KPaint.white); public static final KPaint deadblack = KPaint.createSolid("deadblack", KPaint.black); //public static final KPaint black = KPaint.createSolid("black", Color.black); public static final KPaint invisible = KPaint.createInvisible("invisible"); public static final KPaint defaultColor = white; //}}} //{{{ Color map //################################################################################################## private static final Map stdColorMap; // unmodifiable once created private static final Map fullColorMap; // unmodifiable once created static { Map map = new UberMap(); map.put(red.toString(), red); map.put(pink.toString(), pink); map.put(pinktint.toString(), pinktint); map.put(orange.toString(), orange); map.put(peach.toString(), peach); map.put(peachtint.toString(), peachtint); map.put(gold.toString(), gold); map.put(yellow.toString(), yellow); map.put(yellowtint.toString(), yellowtint); map.put(lime.toString(), lime); map.put(green.toString(), green); map.put(greentint.toString(), greentint); map.put(sea.toString(), sea); map.put(cyan.toString(), cyan); map.put(sky.toString(), sky); map.put(blue.toString(), blue); map.put(bluetint.toString(), bluetint); map.put(purple.toString(), purple); map.put(lilac.toString(), lilac); map.put(lilactint.toString(), lilactint); map.put(magenta.toString(), magenta); map.put(hotpink.toString(), hotpink); map.put(white.toString(), white); map.put(gray.toString(), gray); map.put(brown.toString(), brown); map.put(deadwhite.toString(), deadwhite); map.put(deadblack.toString(), deadblack); map.put(invisible.toString(), invisible); stdColorMap = Collections.unmodifiableMap(map); map = new UberMap(map); map.put("default", defaultColor); map.put("rust", orange); map.put("seagreen", sea); map.put("skyblue", sky); map.put("paleyellow", yellowtint); map.put("grey", gray); map.put("black", deadblack); fullColorMap = Collections.unmodifiableMap(map); } //}}} //{{{ Aspect table //################################################################################################## private static final KPaint[] aspectTable; static { aspectTable = new KPaint[256]; Arrays.fill(aspectTable, null); addAspect('A', red); addAspect('B', orange); addAspect('C', gold); addAspect('D', yellow); addAspect('E', lime); addAspect('F', green); addAspect('G', sea); addAspect('H', cyan); addAspect('I', sky); addAspect('J', blue); addAspect('K', purple); addAspect('L', magenta); addAspect('M', hotpink); addAspect('N', pink); addAspect('O', lilac); addAspect('P', peach); addAspect('Q', peachtint); addAspect('R', yellowtint); addAspect('S', greentint); addAspect('T', bluetint); addAspect('U', lilactint); addAspect('V', pinktint); addAspect('W', white); addAspect('X', gray); addAspect('Y', brown); addAspect('Z', invisible); } static private void addAspect(char key, KPaint color) { int upper = Character.toUpperCase(key); int lower = Character.toLowerCase(key); aspectTable[upper] = aspectTable[lower] = color; } //}}} //{{{ Constructor(s) //################################################################################################## /** * Not instantiable */ private KPalette() { } //}}} //{{{ forName, forAspect, getStandard/FullMap //################################################################################################## /** Returns the named KPaint or null if none is known. */ static public KPaint forName(String name) { return (KPaint)fullColorMap.get(name); } /** Returns the KPaint for the given aspect, or null if bad aspect */ static public KPaint forAspect(char aspect) { if(aspect < 0 || aspect > 255) return null; else return aspectTable[aspect]; } /** * Returns a Map<String, KPaint> of the predefined Mage colors. * This map includes one entry for each unique color, using its preferred name. */ static public Map getStandardMap() { return stdColorMap; } /** * Returns a Map<String, KPaint> of the predefined Mage colors. * This map includes extra entries for alternate spellings and * older, deprecated color names. */ static public Map getFullMap() { return fullColorMap; } //}}} //{{{ setContrast //################################################################################################## /** * Adjusts the contrast for the entire palette. * A contrast of less than 1.0 is flat, and greater than 1.0 is exagerated. */ static public void setContrast(double alpha) { for(Iterator iter = getFullMap().values().iterator(); iter.hasNext(); ) { KPaint p = (KPaint) iter.next(); p.setContrast(alpha); } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/TransformSignal.java0000644000000000000000000001124011531212670021650 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * TransformSignal provides a reusable framework * for publish-subscribe message passing. * This signal is used to transform a 3-D object and paint it * on a flat 2-D display (the screen, a printer, etc). * * This signal is not thread-safe. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Mar 27 10:11:30 EST 2003 */ public class TransformSignal implements TransformSignalSubscriber { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## ArrayList subscribers; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public TransformSignal() { subscribers = new ArrayList(); } //}}} //{{{ signalTransform //################################################################################################## /** * A call to this method will publish this signal (i.e., call this method) * for each subscriber, one at a time, in the current thread. * Because this class also implements the subscriber interface, * these signals can be chained together to create deep networks. * *

A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void signalTransform(Engine engine, Transform xform) { TransformSignalSubscriber subscriber; Iterator iter = subscribers.iterator(); while(iter.hasNext()) { subscriber = (TransformSignalSubscriber)iter.next(); subscriber.signalTransform(engine, xform); } } //}}} //{{{ subscribe, getSubscribers //################################################################################################## /** * Adds a subscriber to this signal. The subscriber will be notified * whenever this signal is activated. Every subscriber must be unique, * so if there is some current subscriber oldSubscriber such that * newSubscriber.equals(oldSubscriber), then oldSubscriber * will be removed before newSubscriber is added. * *

Subscribers are notified in the same order they were added; however, * they should NOT rely on this as it may change in future implementations. */ public void subscribe(TransformSignalSubscriber newSubscriber) { if(newSubscriber == null) return; int i = subscribers.indexOf(newSubscriber); if(i != -1) subscribers.remove(i); subscribers.add(newSubscriber); } /** Returns an unmodifiable Collection of the current subscriber list */ public Collection getSubscribers() { return Collections.unmodifiableCollection(subscribers); } //}}} //{{{ unsubscribe, unsubscribeAll //################################################################################################## /** * Removes a subscriber from this signal; the subscriber will no * longer be notified when this signal is activated. * @return the subscriber that was removed, or null if oldSubscriber was not subscribed */ public TransformSignalSubscriber unsubscribe(TransformSignalSubscriber oldSubscriber) { if(oldSubscriber == null) return null; int i = subscribers.indexOf(oldSubscriber); if(i != -1) return (TransformSignalSubscriber)subscribers.remove(i); else return null; } /** * Removes all subscribers from this signal's distribution list. */ public void unsubscribeAll() { subscribers.clear(); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/RecursivePointIterator.java0000644000000000000000000001006311531212670023234 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * RecursivePointIterator is an iterator over * all the points beneath a given AGE. It is used by * searching functions, etc. * *

This function may fail with a java.util.ConcurrentModificationException * if the structure of the kinemage is modified during the search * (i.e., add/remove groups, subgroups, or lists). * *

Copyright (C) 2002-2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Dec 19 10:57:57 EST 2002 */ public class RecursivePointIterator //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## LinkedList iterStack; Iterator iter; KPoint next; boolean findTurnedOff; // ignore points/AGEs that are not ON boolean findUnpickable; // ignore points that are unpickable //}}} //{{{ Constructor(s) //################################################################################################## public RecursivePointIterator(AGE top, boolean findTurnedOff, boolean findUnpickable) { iterStack = new LinkedList(); iter = top.iterator(); next = null; this.findTurnedOff = findTurnedOff; this.findUnpickable = findUnpickable; } public RecursivePointIterator(AGE top) { this(top, false, false); } //}}} //{{{ nextImpl //################################################################################################## /** * Function that searches the tree for the next KPoint * and places it into the variable next. * If there are no more points, next == null. */ private void nextImpl() { // True tail-recursion has been replaced by a while-loop pseudo-recursion // because otherwise we tend to get StackOverflowErrors. // If Java was smarter it would perform this optimization for us... ;) while(true) { if(iter.hasNext()) { Object o = iter.next(); if(o instanceof KPoint && (findTurnedOff || ((KPoint)o).isOn()) && (findUnpickable || !((KPoint)o).isUnpickable()) ) { next = (KPoint)o; return; // recursion bottoms out here (success) } else if(o instanceof AGE && (findTurnedOff || ((AGE)o).isOn()) ) { iterStack.addLast(iter); iter = ((AGE)o).iterator(); // recurses } // else recurses: we can ignore it and move on } else if(!iterStack.isEmpty()) { iter = (Iterator)iterStack.removeLast(); // recurses } else { next = null; return; // recursion bottoms out here (failure) } } } //}}} //{{{ next, hasNext //################################################################################################## /** * Returns the next KPoint, if there is one, or null if there isn't. */ public KPoint next() { // hasNext() may have already stocked next for us if(next == null) nextImpl(); KPoint retval = next; // mark this value as consumed next = null; return retval; } /** * Returns true if there is another point available (and it's not null, * but lists should never contain null points). */ public boolean hasNext() { if(next == null) nextImpl(); return (next != null); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/Engine.java0000644000000000000000000007014311531212670017753 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.geom.*; import java.util.*; import javax.swing.*; import driftwood.r3.*; import driftwood.util.*;; //}}} /** * Engine is responsible for transforming coordinates, Z-buffering, * and requesting that points render themselves. * *

Begun on Mon Apr 22 17:21:31 EDT 2002 *
Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. */ public class Engine //extends ... implements ... { //{{{ Constants //}}} //{{{ Variables //################################################################################################## /** READ ONLY: The highest layer in the rendering Z-buffer */ public final int TOP_LAYER; // READ ONLY: Parameters for transforming geometry public Transform xform3D = null; public Transform xform2D = null; public double zoom3D = 1; public double zoom2D = 1; public double clipBack = 0; public double clipFront = 1; public double clipDepth = 1; public double perspDist = 2000; // READ ONLY: Parameters for painting points public Painter painter = null; public boolean useObjPicking = false; // should we pick triangles, lines, balls as solid objects? public boolean useStereo = false; public float stereoRotation = 0; public boolean bigMarkers = false; public boolean bigLabels = false; public boolean cueIntensity = true; public boolean monochrome = false; public int widthCue = 0; // cue passed to point, between 0 and 4 public int colorCue = 0; // cue passed to point, between 0 and 4 public int activeAspect = 0; // 0 -> don't use aspects, x -> use aspect x if present public int markerSize = 1; public Font labelFont = null; public int backgroundMode = -1; public Triple lightingVector = new Triple(-1, 1, 3).unit(); public Rectangle pickingRect = new Rectangle(); // bounds of one side of stero area or whole canvas // READ ONLY: These are set from Kinemage obj by KinCanvas on every drawing pass. // Changing them here will have NO EFFECT because they'll be overwritten. public boolean usePerspective = false; public boolean cueThickness = false; public boolean thinLines = false; public boolean whiteBackground = false; public boolean colorByList = false; // READ/WRITE: Shared "scratch" objects that points can use public Triple work1 = new Triple(); public Triple work2 = new Triple(); public Dimension dim1 = new Dimension(); // FOR USE BY ENGINE ONLY ArrayList[] zbuffer; HashMap ballmap; // Map for line shortening ArrayList[] parents; // KList that is acting parent for each pt in zbuffer; default is null KList actingParent = null; // KList that is parent for each pt as added; null = no change // See setActingParent() for a description of the stupid hijinks we're pulling here. // Things needed to support multiple clipping planes: double viewClipBack = -1, viewClipFront = 1, viewClipScaling = 1; Map frontClipMap = new HashMap(), backClipMap = new HashMap(); Font bigFont, smallFont; Rectangle canvasRect = new Rectangle(); float pickingRadius = 5f; boolean warnedPickingRegion = false; // have we warned user about out-of-bounds picks? boolean transparentBackground = false; // used only for certain export features //}}} //{{{ Constructor //################################################################################################## /** * Creates a new rendering engine. */ public Engine() { TOP_LAYER = 1000; flushZBuffer(); stereoRotation = (float)Math.toRadians(6.0); bigFont = new Font("SansSerif", Font.PLAIN, 24); smallFont = new Font("SansSerif", Font.PLAIN, 12); } //}}} //{{{ render //################################################################################################## /** * Transforms the given TransformSignalSubscriber and renders it to a graphics context. * @param subscriber the subscriber that will be transformed and rendered * @param view a KingView representing the current rotation/zoom/clip * @param bounds the bounds of the area to render to * @param painter the Painter that should be used for rendering stuff this pass */ public void render(TransformSignalSubscriber subscriber, KingView view, Rectangle bounds, Painter painter) { // The game plan: // 1. Paint background // 2. Load drawing variables // 3. For each region (there are 2 for stereo): // a. Transform the coordinates from model-space to screen-space, // add transformed objects to Z-buffer. // b. Paint all objects in Z-buffer, from back to front. this.painter = painter; this.canvasRect.setBounds(bounds); // Get colors and prepare the graphics device painter.setViewport(bounds.x, bounds.y, bounds.width, bounds.height); Color backgroundClearColor; if(whiteBackground) { if(monochrome) backgroundMode = KPaint.WHITE_MONO; else backgroundMode = KPaint.WHITE_COLOR; backgroundClearColor = KPaint.white; } else { if(monochrome) backgroundMode = KPaint.BLACK_MONO; else backgroundMode = KPaint.BLACK_COLOR; backgroundClearColor = KPaint.black; } if(this.transparentBackground) { backgroundClearColor = new Color( backgroundClearColor.getRed(), backgroundClearColor.getGreen(), backgroundClearColor.getBlue(), 0); // alpha = 0 --> transparent this.transparentBackground = false; // disabled after one pass } painter.clearCanvas(backgroundClearColor); // Set some last-minute drawing variables markerSize = (bigMarkers ? 2 : 1); labelFont = (bigLabels ? bigFont : smallFont); painter.setFont(labelFont); if(useStereo) { int halfwidth = Math.max(0, bounds.width/2 - 10); // This way, toggling cross-eye vs wall-eye just swaps the two images! // This makes figure-making much easier, as you can easily do both versions. KingView leftView = (KingView)view.clone(), rightView = (KingView)view.clone(); if(stereoRotation < 0) leftView.rotateY(stereoRotation); else rightView.rotateY(-stereoRotation); Rectangle clipRgn = new Rectangle(); clipRgn.setBounds( bounds.x, bounds.y, halfwidth, bounds.height); painter.setViewport(bounds.x, bounds.y, halfwidth, bounds.height); renderLoop(subscriber, leftView, clipRgn); clipRgn.setBounds( (bounds.x + bounds.width - halfwidth), bounds.y, halfwidth, bounds.height); painter.setViewport((bounds.x + bounds.width - halfwidth), bounds.y, halfwidth, bounds.height); renderLoop(subscriber, rightView, clipRgn); // Have to re-activate all of the screen for drawing during overpaint painter.setViewport(bounds.x, bounds.y, bounds.width, bounds.height); } else//!useStereo { renderLoop(subscriber, view, bounds); } } //}}} //{{{ renderLoop //################################################################################################## /** * Transforms the given TransformSignalSubscriber and renders it to a graphics context. * @param subscriber the subscriber that will be transformed and rendered * @param view a KingView representing the current rotation/zoom/clip * @param bounds the bounds of the area to render to. * Note that this function does not clip g to ensure that it only paints within these bounds! */ void renderLoop(TransformSignalSubscriber subscriber, KingView view, Rectangle bounds) { int i, j, end_j; // loop over z-buffer, thru z-buffer ArrayList zb; // == zbuffer[i], saves array lookups ArrayList pnt; // == parents[i], saves array lookups // Clear the cache of old paintables for(i = 0; i <= TOP_LAYER; i++) { zbuffer[i].clear(); parents[i].clear(); } ballmap.clear(); // Transform the paintables xform3D = create3DTransform(view, bounds); xform2D = create2DTransform(bounds); this.chooseClipMode(null); // default to std clipping planes subscriber.signalTransform(this, xform3D); pickingRect.setBounds(bounds); // save these bounds as the picking region // Now paint them to the graphics for(i = 0; i <= TOP_LAYER; i++) { // Calculate depth-cueing constants for this level if(cueIntensity) colorCue = (KPaint.COLOR_LEVELS*i)/(TOP_LAYER+1); else colorCue = KPaint.COLOR_LEVELS - 1; if(cueThickness) widthCue = (KPaint.COLOR_LEVELS*i)/(TOP_LAYER+1); else widthCue = (KPaint.COLOR_LEVELS-1) / 2; //if(colorCue >= KPaint.COLOR_LEVELS) // SoftLog.err.println("colorCue = "+colorCue+"; i = "+i+"; TOP_LAYER = "+TOP_LAYER); // Render all points at this level (faster to not use iterators) zb = zbuffer[i]; pnt = parents[i]; end_j = zb.size(); for(j = 0; j < end_j; j++) { KPoint pt = (KPoint) zb.get(j); KList l = (KList) pnt.get(j); if(l == null) pt.paintStandard(this); else // see setActingParent() for an explanation { AGE oldPnt = pt.getOwner(); pt.setOwner(l); pt.paintStandard(this); pt.setOwner(oldPnt); } } } } //}}} //{{{ create3DTransform //################################################################################################## /** * Builds a Transform suitable for use with TransformSignal. * @param view a KingView describing the current rotation, zoom, and clipping * @param bounds the region of the Component where the Paintables will be rendered */ public Transform create3DTransform(KingView view, Rectangle bounds) { double width, height, size, xOff, yOff; width = bounds.getWidth(); height = bounds.getHeight(); size = Math.min(width, height); xOff = bounds.getX() + width/2.0; yOff = bounds.getY() + height/2.0; this.viewClipScaling = size/2.0; // Get information from the current view double cx, cy, cz, R11, R12, R13, R21, R22, R23, R31, R32, R33; synchronized(view) { view.compile(); zoom3D = size / view.getSpan(); cx = view.cx; cy = view.cy; cz = view.cz; R11 = view.R11; R12 = view.R12; R13 = view.R13; R21 = view.R21; R22 = view.R22; R23 = view.R23; R31 = view.R31; R32 = view.R32; R33 = view.R33; viewClipFront = view.getClip(); viewClipBack = -viewClipFront; } // Build our transform Transform ret = new Transform(), work = new Transform(); work.likeTranslation(-cx, -cy, -cz); // center on rotation center ret.append(work); work.likeMatrix(R11, R12, R13, R21, R22, R23, R31, R32, R33); // rotate ret.append(work); work.likeScale(zoom3D); // zoom ret.append(work); if(usePerspective) { perspDist = 5.0 * size; work.likePerspective(perspDist); ret.append(work); } work.likeScale(1, -1, 1); // invert Y axis ret.append(work); work.likeTranslation(xOff, yOff, 0); // center on screen ret.append(work); return ret; } //}}} //{{{ create2DTransform //################################################################################################## /** * Builds a Transform suitable for use with TransformSignal. * @param bounds the region of the Component where the Paintables will be rendered */ public Transform create2DTransform(Rectangle bounds) { double width, height, size, xOff, yOff; width = bounds.getWidth(); height = bounds.getHeight(); size = Math.min(width, height); xOff = bounds.getX() + width/2.0; yOff = bounds.getY() + height/2.0; zoom2D = size / 400.0; // Build our transform Transform ret = new Transform(), work = new Transform(); work.likeScale(zoom2D); // resize to fill screen ret.append(work); work.likeScale(1, -1, 1); // invert Y axis ret.append(work); work.likeTranslation(xOff, yOff, 0); // center on screen ret.append(work); return ret; } //}}} //{{{ setActingParent //################################################################################################## /** * This is a *really* dumb hack that allows us to implement Mage's instance= * feature fairly cheaply in terms of both time and space. * The idea is that each point in the zbuffer will be associated with a KList * object that *should* own it for drawing purposes. * For most KPoints, this should be the one KList they belong to, * but we choose to record null instead to save a few operations. * If something else is stored, we set the point's owner to the specified list * just for the duration of the drawing operation, to ensure it appears in the * correct color, width, radius, etc. *

Most normal lists should call this function with the parameter null * before beginning to transform their points. * Lists that are "instances" of other lists will instead pass in this * (but should remember to reset to null after transforming all their points). */ public void setActingParent(KList pnt) { this.actingParent = pnt; } //}}} //{{{ chooseClipMode, putClipMode //################################################################################################## /** * Enables an arbitrary number of clipping planes (all normal to the line of sight) * to be used for clipping various parts of the kinemage. * @param key a unique identifier for this set of planes (e.g. new Object()) * @param front the front clipping plane, in view units (positive) * @param back the back clipping plane, in view units (negative) */ public void putClipMode(Object key, double front, double back) { if(key == null) return; frontClipMap.put(key, new Double(front)); backClipMap.put(key, new Double(back)); } /** * Selects a clipping mode based on the key used for putClipMode(). * A null key selects the default (KingView) clipping planes. */ public void chooseClipMode(Object key) { this.clipFront = this.viewClipFront; this.clipBack = this.viewClipBack; if(key != null) { Double d = (Double) frontClipMap.get(key); if(d != null) this.clipFront = d.doubleValue(); d = (Double) backClipMap.get(key); if(d != null) this.clipBack = d.doubleValue(); } // Convert from KingView units to pixel units this.clipFront *= viewClipScaling; this.clipBack *= viewClipScaling; if(usePerspective) { // We also have to move clipping planes // because this alters z coords too. // See driftwood.r3.Transform.likePerspective() // for more detailed explanation. clipFront = perspDist*clipFront / (perspDist - clipFront); clipBack = perspDist*clipBack / (perspDist - clipBack); } this.clipDepth = clipFront - clipBack; } //}}} //{{{ addPaintable, addPaintableToLayer, flushZBuffer //################################################################################################## /** * Registers a paintable to be drawn to the screen. * @param p the KPoint to be rendered. * @param zcoord the Z coordinate of the transformed object. * A layer number is calculated automatically from this. */ public void addPaintable(KPoint p, double zcoord) { addPaintableToLayer(p, (int)(TOP_LAYER*(zcoord-clipBack)/clipDepth)); } /** * Registers a paintable to be drawn to the screen. * @param p the KPoint to be rendered. * @param layer a number between 0 and TOP_LAYER, inclusive, that * determines the order of rendering. Objects at 0 are furthest from * the observer and are rendered first; objects in the TOP_LAYER are * closest to the observer and are rendered last. */ public void addPaintableToLayer(KPoint p, int layer) { if(layer < 0 || layer > TOP_LAYER || p == null) return; zbuffer[layer].add(p); parents[layer].add(actingParent); } /** * This may need to be called to reclaim memory when kinemages are closed. */ public void flushZBuffer() { zbuffer = null; zbuffer = new ArrayList[TOP_LAYER+1]; for(int i = 0; i <= TOP_LAYER; i++) { zbuffer[i] = new ArrayList(10); } parents = null; parents = new ArrayList[TOP_LAYER+1]; for(int i = 0; i <= TOP_LAYER; i++) { parents[i] = new ArrayList(10); } ballmap = null; ballmap = new HashMap(1000); //ballmap = new OdHash(1000); } //}}} //{{{ addShortener, getShortening //################################################################################################## /** * Registers the given point as having some radius that other * objects should respect. In particular, this radius will be * used to shorten lines that originate/terminate at this location. */ public void addShortener(KPoint p, double radius) { Double old = (Double)ballmap.get(p); if(old == null || old.doubleValue() < radius) ballmap.put(p, new Double(radius)); //double old = ballmap.get(p, 0); //if(old < radius) ballmap.put(p, radius); } /** * Returns the amount of shortening, between 0 and +inf, * that should be applied at the given point. */ public double getShortening(KPoint p) { Double radius = (Double)ballmap.get(p); if(radius == null) return 0; else return radius.doubleValue(); //return ballmap.get(p, 0); } //}}} //{{{ updatePrefs, syncToKin //################################################################################################## // Called by KingMain when something happens. // Shouldn't be called directly under normal circumstances. public void updatePrefs(Props prefs) { stereoRotation = (float)Math.toRadians(prefs.getDouble("stereoAngle")); bigFont = new Font("SansSerif", Font.PLAIN, prefs.getInt("fontSizeBig")); smallFont = new Font("SansSerif", Font.PLAIN, prefs.getInt("fontSizeSmall")); this.setPickingRadius( prefs.getDouble("pickingRadius") ); useObjPicking = prefs.getBoolean("pickObjects"); } /** Takes needed display settings from the kinemage */ public void syncToKin(Kinemage kin) { if(kin.currAspect == null) this.activeAspect = 0; else this.activeAspect = kin.currAspect.getIndex().intValue(); this.usePerspective = kin.atPerspective; this.cueThickness = ! kin.atOnewidth; this.thinLines = kin.atThinline; this.whiteBackground = kin.atWhitebackground; this.colorByList = kin.atListcolordominant; } //}}} //{{{ pickPoint, setPickingRadius //################################################################################################## /** * Finds the point clicked on with the mouse. * @param xcoord the x coord of the pick, relative to the drawing surface * @param ycoord the y coord of the pick, relative to the drawing surface * @param superpick if true, even pick points marked as unpickable * @return the KPoint that was selected */ public KPoint pickPoint(int xcoord, int ycoord, boolean superpick) { if(!pickingRect.contains(xcoord, ycoord)) { if(!warnedPickingRegion) { JCheckBox dontWarn = new JCheckBox("Don't warn me again", false); JOptionPane.showMessageDialog(null, new Object[] { "When using stereo, only the right-hand half\n"+ "of the screen is active for picking.", dontWarn }, "Out-of-bounds pick", JOptionPane.WARNING_MESSAGE); warnedPickingRegion = dontWarn.isSelected(); } return null; } // Iterate over all levels and all points in each level, searching for "the one" int i, j, end_j; // loop over z-buffer ArrayList zb; // == zbuffer[i], saves array lookups KPoint theone = null, p, q; // Note: looping front to back, rather than back to front as in render() for(i = TOP_LAYER; i >= 0 && theone == null; i--) { zb = zbuffer[i]; end_j = zb.size(); for(j = 0; j < end_j && theone == null; j++) { p = (KPoint)zb.get(j); // q will usually be p or null, but sometimes not for object picking q = p.isPickedBy(xcoord, ycoord, pickingRadius, useObjPicking); // Off points have to be transformed anyway in case they're used by // other ends of lines or triangles, so we have to check it here. // Using getDrawingColor() checks for invisible, aspect-invisible, *and* off points if( q != null && (!q.isUnpickable() || superpick) && !q.getDrawingColor(this).isInvisible()) theone = q; } } return theone; } public void setPickingRadius(double r) { if(r > 1) this.pickingRadius = (float)r; } //}}} //{{{ pickAll3D //################################################################################################## /** * Finds all points within the specified radius of the given coordinates. * All coordinates are device coordinates -- i.e., coordinates in the transformed space. * The units, therefore, are pixels. * @return all the KPoints that were selected */ public Collection pickAll3D(double xcoord, double ycoord, double zcoord, boolean superpick, double radius) { // Iterate over all levels and all points in each level, searching for "the one" int i, j, end_j; // loop over z-buffer ArrayList zb; // == zbuffer[i], saves array lookups KPoint p; ArrayList found = new ArrayList(); double r2 = radius*radius; // Note: looping front to back, rather than back to front as in render() // start layer == (int)(TOP_LAYER*(zcoord-clipBack)/clipDepth) final int frontLayer = TOP_LAYER, backLayer = 0; for(i = frontLayer; i >= backLayer; i--) { zb = zbuffer[i]; end_j = zb.size(); for(j = 0; j < end_j; j++) { p = (KPoint)zb.get(j); double dx = p.getDrawX() - xcoord; double dy = p.getDrawY() - ycoord; double dz = p.getDrawZ() - zcoord; // Using getDrawingColor() checks for invisible, aspect-invisible, *and* off points if((dx*dx + dy*dy + dz*dz) <= r2 && (!p.isUnpickable() || superpick) && !p.getDrawingColor(this).isInvisible()) found.add(p); } } return found; } //}}} //{{{ pickAll2D //################################################################################################## /** * Finds all points within the specified radius of the given x-y coordinates, * regardless of the z coordinate. * All coordinates are device coordinates -- i.e., coordinates in the transformed space. * The units, therefore, are pixels. * @return all the KPoints that were selected */ public Collection pickAll2D(double xcoord, double ycoord, boolean superpick, double radius) { // Iterate over all levels and all points in each level, searching for "the one" int i, j, end_j; // loop over z-buffer ArrayList zb; // == zbuffer[i], saves array lookups KPoint p; ArrayList found = new ArrayList(); double r2 = radius*radius; // Note: looping front to back, rather than back to front as in render() // start layer == (int)(TOP_LAYER*(zcoord-clipBack)/clipDepth) final int frontLayer = TOP_LAYER, backLayer = 0; for(i = frontLayer; i >= backLayer; i--) { zb = zbuffer[i]; end_j = zb.size(); for(j = 0; j < end_j; j++) { p = (KPoint)zb.get(j); double dx = p.getDrawX() - xcoord; double dy = p.getDrawY() - ycoord; // Using getDrawingColor() checks for invisible, aspect-invisible, *and* off points if((dx*dx + dy*dy) <= r2 && (!p.isUnpickable() || superpick) && !p.getDrawingColor(this).isInvisible()) found.add(p); } } return found; } //}}} //{{{ getNumberPainted, getCanvasSize, setTransparentBackground //################################################################################################## /** Calculates the number of KPoint objects that were "painted" in the last cycle. */ public int getNumberPainted() { int num = 0; for(int i = 0; i < zbuffer.length; i++) num += zbuffer[i].size(); return num; } /** Returns the size of the last rendering operation. */ public Dimension getCanvasSize() { return new Dimension(canvasRect.width, canvasRect.height); } /** * Makes the background be rendered as transparent for the next pass ONLY. * This is useful for certain export features that don't want a black/white * box hanging around behind the image. */ public void setTransparentBackground() { this.transparentBackground = true; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/RingPoint.java0000644000000000000000000001403711531212670020457 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.geom.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * RingPoint represents a screen-oriented annulus around a particular point. * Ring size scales up and down like balls; i.e. it's a real size rather than a display size. * It implements Mage ringlists. * *

Begun on Sat Apr 27 11:02:02 EDT 2002 *
Copyright (C) 2002 by Ian W. Davis. All rights reserved. */ public class RingPoint extends AbstractPoint // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## public float r0 = 0f, r = 0f; // radius ( r0 >= 0 => use list radius ) //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new data point representing one end of a line. * * @param list the list that contains this point * @param label the pointID of this point */ public RingPoint(KList list, String label) { super(list, label); } //}}} //{{{ get/setRadius //################################################################################################## /** Sets the radius of this point, if applicable */ public void setRadius(float radius) { if(radius >= 0) r0 = radius; } public float getRadius() { return r0; } //}}} //{{{ signalTransform //################################################################################################## /** Rings require a zoom factor, so this throws UnsupportedOperationException */ public void signalTransform(Engine engine, Transform xform) { throw new UnsupportedOperationException(this.getClass()+".signalTransform() requires a zoom factor"); } /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. * @param zoom the zoom factor encoded by the Transform, * as a convenience for resizing things. */ public void signalTransform(Engine engine, Transform xform, double zoom) { // Don't call super.signalTransform() b/c we do it all here if(r0 <= 0 && parent != null) r = (float)(parent.radius * zoom); else r = (float)(r0 * zoom); xform.transform(this, engine.work1); setDrawXYZ(engine.work1); if(engine.usePerspective) { // multiply radius by perspDist/(perspDist - originalZ) // This is a very subtle effect -- barely notable. r *= (engine.perspDist) / (engine.perspDist - z); // This is the old code -- seems to be wrong. (031017) //r *= (engine.perspDist + z) / engine.perspDist; } // Can't handle (artificial) thickness cues here // b/c engine.widthCue isn't set yet. engine.addPaintable(this, z); // Rings don't do line shortening around them -- the point is to see the center. } //}}} //{{{ isPickedBy //################################################################################################## /** * Returns true if the specified pick hits this point, else returns false * Pays no attention to whether this point is marked as unpickable. * @param radius the desired picking radius * @param objPick whether we should try to pick solid objects in addition to points * @return the KPoint that should be counted as being picked, or null for none. * Usually this, but maybe not for object picking. */ public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { float dx, dy; dx = (x - xx); dy = (y - yy); //if( Math.abs( Math.sqrt(dx*dx + dy*dy) - r ) <= radius ) return this; float sqDist = (dx*dx + dy*dy); float minDist = r - radius; if(minDist > 0) minDist *= minDist; float maxDist = r + radius; maxDist *= maxDist; if(minDist <= sqDist && sqDist <= maxDist) return this; else return null; } //}}} //{{{ paintStandard //################################################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paintStandard(Engine engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; int alpha = (parent == null ? 255 : parent.alpha); Paint paint = maincolor.getPaint(engine.backgroundMode, 1, engine.colorCue, alpha); // For now we ignore the linewidth issue double d = 2*r; engine.painter.drawOval(paint, calcLineWidth(engine), engine.widthCue, x, y, z, d, d); } //}}} //{{{ calcLineWidth //################################################################################################## // Default way of finding the right line width to use, given the settings in the engine int calcLineWidth(Engine engine) { if(engine.thinLines) return 1; else if(parent != null) return parent.width; else return 2; } //}}} }//class king-2.21.120420/king/1.x_src/king/core/AHEImpl.java0000644000000000000000000000440311531212670017761 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * AHEImpl (Abstract Hierarchy Element implementation) * provides the basic services used by AGEs and most KPoints. * *

Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 10:50:32 EDT 2002 */ abstract public class AHEImpl implements AHE { //{{{ Variable definitions //################################################################################################## String name = ""; //}}} //{{{ get/setName, toString //################################################################################################## /** Gets the name of this element */ public String getName() { return name; } /** Sets the name of this element */ public void setName(String nm) { name = nm; } /** Gets the name of this element (same as getName()*/ public String toString() { return getName(); } //}}} //{{{ getKinemage //################################################################################################## /** Retrieves the Kinemage object holding this element, or null if none. */ public Kinemage getKinemage() { AGE owner = getOwner(); if(owner == null) return null; else return owner.getKinemage(); } //}}} //{{{ isVisible, isTotallyOn //################################################################################################## /** Indicates whether this element will actually be painted (i.e., is it and all its parents on?) */ public boolean isVisible() { return (getOwner().isVisible() && isOn()); } /** Returns true iff this element is On, it's owner is On, it's owner's owner is On, and so on */ public boolean isTotallyOn() { if(this.getOwner() == null) return this.isOn(); else return (this.isOn() && this.getOwner().isTotallyOn()); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/ParaParams.java0000644000000000000000000002174611531212670020602 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * ParaParams manages switching a kinemage in and out of * parallel coordinates display of its high dimensional data. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Fri Nov 17 11:35:12 EST 2006 */ public class ParaParams //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Kinemage kin; int numDim; double[] min; double[] max; double[] range; Map normalChildren; Map parallelChildren; KingView normalView; KingView parallelView; boolean inParallelMode = false; KGroup axisGroup = null; //}}} //{{{ Constructor(s) //############################################################################## public ParaParams(Kinemage kin) { super(); this.kin = kin; this.numDim = Math.max(2, kin.dimensionNames.size()); // if less, denom -> 0 this.min = new double[numDim]; this.max = new double[numDim]; this.range = new double[numDim]; List minmax = kin.dimensionMinMax; for(int i = 0; i < numDim; i++) { if(minmax.size() > 2*i) min[i] = ((Number) minmax.get(2*i)).doubleValue(); else min[i] = 0; if(minmax.size() > 2*i + 1) max[i] = ((Number) minmax.get(2*i + 1)).doubleValue(); else max[i] = 360; range[i] = max[i] - min[i]; } this.normalChildren = new HashMap(); this.parallelChildren = new HashMap(); this.normalView = new KingView(kin); // will never be used this.parallelView = new KingView(kin); parallelView.setCenter(0.5f, 0.5f, 0f); parallelView.setSpan(1.2f); parallelView.setName("PC Overview"); kin.addView((KingView) parallelView.clone()); kin.signal.signalKinemage(kin, KinemageSignal.STRUCTURE); } //}}} //{{{ getMin/Max/Range/NumDim //############################################################################## /** Returns the minimum value to be shown on axis i */ public double getMin(int dimension_i) { return this.min[dimension_i]; } /** Returns the maximum value to be shown on axis i */ public double getMax(int dimension_i) { return this.max[dimension_i]; } /** Returns max[i] - min[i] */ public double getRange(int dimension_i) { return this.range[dimension_i]; } /** Returns the total number of dimension axes to be displayed */ public int getNumDim() { return this.numDim; } //}}} //{{{ swap //############################################################################## /** Toggles between "normal" and parallel coordinates modes. */ public void swap() { if(inParallelMode) fromParallelCoords(); else toParallelCoords(); inParallelMode = !inParallelMode; } //}}} //{{{ toParallelCoords //############################################################################## void toParallelCoords() { normalChildren.clear(); // to remove any stale entries for(Iterator ki = kin.iterator(); ki.hasNext(); ) { KGroup g = (KGroup) ki.next(); for(Iterator gi = g.iterator(); gi.hasNext(); ) { KSubgroup s = (KSubgroup) gi.next(); for(Iterator si = s.iterator(); si.hasNext(); ) { KList l = (KList) si.next(); List newChildren = (List) parallelChildren.get(l); if(newChildren == null) { newChildren = makeParallelPlot(l); parallelChildren.put(l, newChildren); } normalChildren.put(l, l.children); l.children = newChildren; } } } makeParallelAxes(); kin.calcSize(); // bounding box, etc. has changed! normalView = kin.getCurrentView(); parallelView.setViewingAxes(normalView.getViewingAxes()); parallelView.selectedFromMenu(null); } //}}} //{{{ fromParallelCoords //############################################################################## void fromParallelCoords() { parallelChildren.clear(); // to remove any stale entries for(Iterator ki = kin.iterator(); ki.hasNext(); ) { KGroup g = (KGroup) ki.next(); for(Iterator gi = g.iterator(); gi.hasNext(); ) { KSubgroup s = (KSubgroup) gi.next(); for(Iterator si = s.iterator(); si.hasNext(); ) { KList l = (KList) si.next(); List newChildren = (List) normalChildren.get(l); if(newChildren == null) { newChildren = new ArrayList(); normalChildren.put(l, newChildren); } parallelChildren.put(l, l.children); l.children = newChildren; } } } kin.calcSize(); // bounding box, etc. has changed! parallelView = kin.getCurrentView(); normalView.setViewingAxes(parallelView.getViewingAxes()); normalView.selectedFromMenu(null); } //}}} //{{{ makeParallelPlot //############################################################################## List makeParallelPlot(KList list) { ArrayList out = new ArrayList(); for(Iterator iter = list.iterator(); iter.hasNext(); ) { KPoint normalPt = (KPoint) iter.next(); float[] allCoords = normalPt.getAllCoords(); if(allCoords == null) continue; if(normalPt instanceof MarkerPoint || normalPt instanceof ProxyPoint || normalPt instanceof VectorPoint || normalPt instanceof TrianglePoint) continue; ParaPoint ppLast = null; for(int i = 0; i < allCoords.length; i++) { ParaPoint pp = new ParaPoint(normalPt, i, ppLast, this); out.add(pp); ppLast = pp; } } return out; } //}}} //{{{ makeParallelAxes //############################################################################## void makeParallelAxes() { boolean newAxes = (axisGroup == null); if(newAxes) { axisGroup = new KGroup(kin, "PC axes"); kin.add(axisGroup); } else axisGroup.children.clear(); KSubgroup subgroup = new KSubgroup(axisGroup, ""); subgroup.setHasButton(false); axisGroup.add(subgroup); KList axisList = new KList(subgroup, "axes"); axisList.setType(KList.VECTOR); axisList.setColor(KPalette.white); subgroup.add(axisList); KList labelList = new KList(subgroup, "labels"); labelList.setType(KList.LABEL); labelList.setColor(KPalette.white); subgroup.add(labelList); String[] dimNames = (String[]) kin.dimensionNames.toArray(new String[numDim]); DecimalFormat df = new DecimalFormat("0.###"); for(int i = 0; i < numDim; i++) { VectorPoint v1 = new VectorPoint(axisList, "", null); v1.setXYZ((double)i / (double)(numDim-1), 0, 0); v1.setUnpickable(true); axisList.add(v1); VectorPoint v2 = new VectorPoint(axisList, "", v1); v2.setXYZ((double)i / (double)(numDim-1), 1, 0); v2.setUnpickable(true); axisList.add(v2); LabelPoint l1 = new LabelPoint(labelList, dimNames[i]); l1.setXYZ((double)i / (double)(numDim-1), 1.05, 0); l1.setUnpickable(true); l1.setHorizontalAlignment(LabelPoint.CENTER); labelList.add(l1); l1 = new LabelPoint(labelList, df.format(max[i])); l1.setXYZ((double)i / (double)(numDim-1), 1.02, 0); l1.setUnpickable(true); l1.setHorizontalAlignment(LabelPoint.CENTER); labelList.add(l1); l1 = new LabelPoint(labelList, df.format(min[i])); l1.setXYZ((double)i / (double)(numDim-1), -0.03, 0); l1.setUnpickable(true); l1.setHorizontalAlignment(LabelPoint.CENTER); labelList.add(l1); } kin.signal.signalKinemage(kin, KinemageSignal.STRUCTURE | KinemageSignal.APPEARANCE); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/KPaint.java0000644000000000000000000004746311531212670017745 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * KPaint encapsulates all the data about a single * named Mage color, like "red" or "lilactint" or "invisible". * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Wed Jun 25 14:37:56 EDT 2003 */ abstract public class KPaint //extends ... implements ... { //{{{ Constants /** The nominal "black" color to be used as a background, etc. */ public static final Color black = new Color(0.00f, 0.00f, 0.00f); /** The nominal "white" color to be used as a background, etc. */ public static final Color white = new Color(1.00f, 1.00f, 1.00f); //public static final Color white = new Color(0.95f, 0.95f, 0.95f); /** The number of different depth-cueing levels available */ public static final int COLOR_LEVELS = 16; /** * The minimum value multiplier on a black background. * Smaller numbers mean we fade closer to black before clipping. */ static final float BVAL = 0.36f; /** The minimum value multiplier on a white background. */ static final float WVAL = 0.40f; /** The minimum saturation multiplier on a white background. */ static final float WSAT = 0.36f; /** Shading parameters for ribbons / triangles */ static final double AMBIENT_COEFF = 0.4; static final double DIFFUSE_COEFF = 0.6; public static final int BLACK_COLOR = 0; public static final int WHITE_COLOR = 1; public static final int BLACK_MONO = 2; public static final int WHITE_MONO = 3; public static final int N_BACKGROUNDS = 4; //}}} //{{{ Constants for ribbon shading /** Background colors for ribbon shading calcs. */ static final Color[][] SHADE_BACKGROUNDS = new Color[N_BACKGROUNDS][COLOR_LEVELS]; static { Color[] background = new Color[COLOR_LEVELS]; for(int i = 0; i < COLOR_LEVELS; i++) background[i] = black; SHADE_BACKGROUNDS[BLACK_COLOR] = background; SHADE_BACKGROUNDS[BLACK_MONO] = background; // Instead of blending toward black, we're going to blend // toward black depthcued on a white background: // XXX: needs to be updated to use KPaint.white ... float[] values = interpolate(1-WVAL, 0, COLOR_LEVELS); background = new Color[COLOR_LEVELS]; for(int i = 0; i < COLOR_LEVELS; i++) background[i] = new Color(Color.HSBtoRGB(0f, 0f, values[i])); SHADE_BACKGROUNDS[WHITE_COLOR] = background; SHADE_BACKGROUNDS[WHITE_MONO] = background; } //}}} //{{{ Variable definitions //################################################################################################## String name; KPaint aliasOf; boolean isInvisible; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor -- use create___() functions instead */ KPaint() { } //}}} //{{{ createHSV, getHSB //################################################################################################## /** * Creates a new color definition based on hue (0-360), saturation (0-100), * and relative value (0-100; usually 75-100). */ static public KPaint createHSV(String name, float hue, float blackSat, float whiteSat, float blackVal, float whiteVal) { if(name == null) throw new NullPointerException("Must give paint a name"); HeavyKPaint p = new HeavyKPaint(); p.name = name; p.aliasOf = null; p.paints = new Paint[N_BACKGROUNDS][]; p.paintsBackup = p.paints; p.isInvisible = false; hue /= 360f; blackSat /= 100f; whiteSat /= 100f; blackVal /= 100f; whiteVal /= 100f; // value decreases going back Color[] bcolors = new Color[COLOR_LEVELS]; float[] bvalues = interpolate(BVAL, 1, COLOR_LEVELS); for(int i = 0; i < COLOR_LEVELS; i++) bcolors[i] = getHSB(hue, blackSat, bvalues[i]*blackVal); // value increases, saturation decreases going back Color[] wcolors = new Color[COLOR_LEVELS]; float[] wsats = interpolate(WSAT, 1, COLOR_LEVELS); // Low end is a blend between specified value and pure white value float[] wvalues = interpolate( (WVAL*whiteVal + (1f-WVAL)*1f) , whiteVal, COLOR_LEVELS); for(int i = 0; i < COLOR_LEVELS; i++) wcolors[i] = getHSB(hue, wsats[i]*whiteSat, wvalues[i]); p.paints[BLACK_COLOR] = bcolors; p.paints[WHITE_COLOR] = wcolors; p.paints[BLACK_MONO] = makeMonochrome((Color[])p.paints[BLACK_COLOR]); p.paints[WHITE_MONO] = makeMonochrome((Color[])p.paints[WHITE_COLOR]); return p; } static private Color getHSB(float hue, float sat, float val) { return new Color(Color.HSBtoRGB(hue, sat, val)); } //}}} //{{{ createLightweightHSV //################################################################################################## /** * Creates a new color definition based on hue (0-360), saturation (0-100), * and relative value (0-100; usually 75-100). */ static public KPaint createLightweightHSV(String name, float bHue, float bSat, float bVal, float wHue, float wSat, float wVal) { if(name == null) throw new NullPointerException("Must give paint a name"); KPaint p = new LightKPaint(bHue / 360f, bSat / 100f, bVal / 100f, wHue / 360f, wSat / 100f, wVal / 100f); p.name = name; p.aliasOf = null; p.isInvisible = false; return p; } //}}} //{{{ createSolid //################################################################################################## /** * Creates a paint that is the same regardless of shading, depth-cueing, etc. */ static public KPaint createSolid(String name, Paint solid) { if(name == null) throw new NullPointerException("Must give paint a name"); if(solid == null) throw new NullPointerException("Must provide a valid Paint"); HeavyKPaint p = new HeavyKPaint(); p.name = name; p.aliasOf = null; p.paints = new Paint[N_BACKGROUNDS][COLOR_LEVELS]; p.paintsBackup = p.paints; p.isInvisible = false; for(int i = 0; i < N_BACKGROUNDS; i++) for(int j = 0; j < COLOR_LEVELS; j++) p.paints[i][j] = solid; return p; } //}}} //{{{ createAlias, createInvisible //################################################################################################## /** * Creates a new color that is simply an alias to some existing color. */ static public KPaint createAlias(String name, KPaint target) { if(name == null) throw new NullPointerException("Must give paint a name"); if(target == null) throw new NullPointerException("Must give paint alias an existing paint to reference"); HeavyKPaint t = (HeavyKPaint) target; HeavyKPaint p = new HeavyKPaint(); p.name = name; p.aliasOf = t; p.paints = t.paints; p.paintsBackup = p.paints; p.isInvisible = t.isInvisible; return p; } /** * Create a color marked as invisible that is very * distinctive if actually painted. */ static public KPaint createInvisible(String name) { Paint invis = new GradientPaint(0, 0, Color.red, 11, 3, Color.green, true); KPaint p = createSolid(name, invis); p.isInvisible = true; return p; } //}}} //{{{ getPaint(s) //################################################################################################## /** * Returns the correct Paint object to use for rendering. * Based on the value of dotprod, a simple * lighting model (diffuse and ambient) is applied: * *

C = Fa*Lc*Oc + Fd*Lc*Oc*(On . -Ln) * *

where C is the resulting color, Fa and Fd are the ambient * and diffuse lighting coefficients, Lc and Oc are color curves * for the light source and the object, and Ln and On are normals * for the light source and the object. * * These color objects are calculated on the fly rather than being cached. * * @param backgroundMode one of BLACK_COLOR, WHITE_COLOR, BLACK_MONO, or WHITE_MONO. * @param dotprod the (normalized) dot product of the surface normal with the lighting vector. * @param depth the depth cue number, from 0 (far away) to COLOR_LEVELS-1 (near by). * @param alpha the transparency, from 0 (transparent) to 255 (opaque). */ public Paint getPaint(int backgroundMode, double dotprod, int depth, int alpha) { Paint basePaint = getPaint(backgroundMode, depth); if(dotprod < 0) dotprod = -dotprod; if(dotprod > 1) dotprod = 1; if(dotprod == 1 && alpha == 255) return basePaint; try { double weight = AMBIENT_COEFF + (DIFFUSE_COEFF*dotprod); return blendColors( (Color)basePaint, weight, SHADE_BACKGROUNDS[backgroundMode][depth], (1-weight), alpha); } catch(ClassCastException ex) { // Cast will only fail for the Invisible color, which // uses a gradient paint. BUT we should never be calling // this method if we already know our paint is invisible! return basePaint; } } /** * Returns the correct Paint object to use for rendering, * assuming direct lighting of the surface and no transparency. * @param backgroundMode one of BLACK_COLOR, WHITE_COLOR, BLACK_MONO, or WHITE_MONO. * @param depth the depth cue number, from 0 (far away) to COLOR_LEVELS-1 (near by). */ abstract public Paint getPaint(int backgroundMode, int depth); /** * Returns the set of depth-cued Paint objects to use for rendering, * indexed from 0 (far away) to COLOR_LEVELS-1 (near by), * assuming direct lighting of the surface and no transparency. * @param backgroundMode one of BLACK_COLOR, WHITE_COLOR, BLACK_MONO, or WHITE_MONO. */ abstract public Paint[] getPaints(int backgroundMode); //}}} //{{{ blendColors, makeMonochrome //################################################################################################## /** * Returns a blend of two colors, weighted by the given coefficients. * Alpha ranges from 0 (transparent) to 255 (opaque) and is not taken from either c1 or c2. */ private static Color blendColors(Color c1, double w1, Color c2, double w2, int alpha) { int red = (int)(c1.getRed()*w1 + c2.getRed()*w2); int green = (int)(c1.getGreen()*w1 + c2.getGreen()*w2); int blue = (int)(c1.getBlue()*w1 + c2.getBlue()*w2); if(red < 0) red = 0; else if(red > 255) red = 255; if(green < 0) green = 0; else if(green > 255) green = 255; if(blue < 0) blue = 0; else if(blue > 255) blue = 255; return new Color(red, green, blue, alpha); } /** * Duplicates an array of colors while translating each one into monochrome. * The formula used was taken from the POV-Ray documentation: * gray value = Red*29.7% + Green*58.9% + Blue*11.4%. * Presumably this roughly matches the response of B&W film, * based on some articles I've read elsewhere. *

See also http://www.poynton.com/notes/colour_and_gamma/GammaFAQ.html, * which offers this equation: Y(709) = 0.2126*R + 0.7152*G + 0.0722*B. * However, using it directly here would probably be out of context... */ private static Color[] makeMonochrome(Color[] src) { Color[] targ = new Color[src.length]; for(int i = 0; i < src.length; i++) targ[i] = makeMonochrome(src[i]); return targ; } /** * Translates a color into monochrome. * The formula used was taken from the POV-Ray documentation: * gray value = Red*29.7% + Green*58.9% + Blue*11.4%. * Presumably this roughly matches the response of B&W film, * based on some articles I've read elsewhere. *

See also http://www.poynton.com/notes/colour_and_gamma/GammaFAQ.html, * which offers this equation: Y(709) = 0.2126*R + 0.7152*G + 0.0722*B. * However, using it directly here would probably be out of context... */ static Color makeMonochrome(Color sc) { float gray = (0.297f*sc.getRed() + 0.589f*sc.getGreen() + 0.114f*sc.getBlue()) / 255f; if(gray < 0) gray = 0; if(gray > 1) gray = 1; return new Color(gray, gray, gray, sc.getAlpha()/255f); } //}}} //{{{ interpolate //################################################################################################## /** Blends linearly from start to end, with steps-2 intervening steps. */ static float[] interpolate(double start, double end, int steps) { float[] result = new float[steps]; for(int i = 0; i < steps; i++) { double a = (double)i / (double)(steps-1); result[i] = (float)((1-a)*start + a*end); } return result; } //}}} //{{{ get{Black, White}Exemplar //################################################################################################## /** * Returns the most typical paint for this named color. * If this Paint is an instance of Color, the hue, saturation, and value * can be fed back into createHSV to recreate this color (probably). * Remember to convert from the [0,1] scale to the [0,360] / [0,100] scale! */ public Paint getBlackExemplar() { return getPaint(BLACK_COLOR, COLOR_LEVELS-1); } /** * Returns the most typical paint for this named color. * If this Paint is an instance of Color, the hue, saturation, and value * can be fed back into createHSV to recreate this color (probably). * Remember to convert from the [0,1] scale to the [0,360] / [0,100] scale! */ public Paint getWhiteExemplar() { return getPaint(WHITE_COLOR, COLOR_LEVELS-1); } //}}} //{{{ isInvisible, isAlias, getAlias, toString //################################################################################################## /** Returns true iff objects of this color should not be rendered. */ public boolean isInvisible() { return isInvisible; } /** Returns true iff this KPaint is just another name for some canonical KPaint. */ public boolean isAlias() { return aliasOf != null; } /** * Returns the KPaint that this object is an alias of. * @throws UnsupportedOperationException if this object is not an alias. */ public KPaint getAlias() { if(aliasOf != null) return aliasOf; else throw new UnsupportedOperationException(this+" is not an alias of some other KPaint"); } /** Returns the name this KPaint was created with. Will never be null. */ public String toString() { return name; } //}}} //{{{ setContrast //################################################################################################## /** * Set the relative contrast of the color palette. * A contrast of less than 1.0 is flat, and greater than 1.0 is exagerated. *

Adjustment is done as linear interpolation/extrapolation to a mid-level gray. * See http://www.sgi.com/misc/grafica/interp/ or * P. Haeberli and D. Voorhies. Image Processing by Linear Interpolation and * Extrapolation. IRIS Universe Magazine No. 28, Silicon Graphics, Aug, 1994. * * Only implemented for HeavyKPaint. */ public void setContrast(double alpha) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class /** A lightweight paint class for user-defined colors. */ class LightKPaint extends KPaint //{{{ { float bHue, bSat, bVal; float wHue, wSat, wVal; public LightKPaint(float bHue, float bSat, float bVal, float wHue, float wSat, float wVal) { super(); this.bHue = bHue; this.wHue = wHue; this.bSat = bSat; this.wSat = wSat; this.bVal = bVal; this.wVal = wVal; } public Paint getPaint(int backgroundMode, int depth) { double modHue, modSat, modVal; Color color; // Interpolation coefficient determined by depth double d = (double)depth / (double)(COLOR_LEVELS-1); if(backgroundMode == WHITE_COLOR || backgroundMode == WHITE_MONO) { modHue = wHue; // Saturation interpolated from sat*WSAT at the back to sat*1.0 at the front modSat = wSat * ((1-d)*WSAT + (d)*1); // Value interpolated from a blend of val and pure white at the back // to plain old val at the front. modVal = (1-d)*(WVAL*wVal + (1f-WVAL)*1f) + (d)*wVal; } else // BLACK_COLOR || BLACK_MONO { modHue = bHue; // Saturation is unchanged modSat = bSat; // Value interpolated from val*BVAL at the back to val*1.0 at the front modVal = bVal * ((1-d)*BVAL + (d)*1); } color = new Color(Color.HSBtoRGB((float) modHue, (float) modSat, (float) modVal)); if(backgroundMode == WHITE_MONO || backgroundMode == BLACK_MONO) color = makeMonochrome(color); return color; } public Paint[] getPaints(int backgroundMode) { Paint[] paints = new Paint[COLOR_LEVELS]; for(int i = 0; i < COLOR_LEVELS; i++) paints[i] = getPaint(backgroundMode, i); return paints; } }//}}} /** A memory-intensive (~2500 bytes) paint class for built-in colors. */ class HeavyKPaint extends KPaint //{{{ { Paint[][] paints; Paint[][] paintsBackup; // Usually == to paints. See setContrast(). public Paint getPaint(int backgroundMode, int depth) { return paints[backgroundMode][depth]; } public Paint[] getPaints(int backgroundMode) { return paints[backgroundMode]; } public void setContrast(double alpha) { this.paints = new Paint[N_BACKGROUNDS][COLOR_LEVELS]; final double midgray = 0.5; final double one_minus_alpha = 1.0 - alpha; for(int i = 0; i < N_BACKGROUNDS; i++) { for(int j = 0; j < COLOR_LEVELS; j++) { Paint p = (Paint) paintsBackup[i][j]; if(p instanceof Color) { Color c = (Color) p; float r = (float)(alpha * c.getRed()/255.0 + one_minus_alpha * midgray); r = Math.max(Math.min(1, r), 0); float g = (float)(alpha * c.getGreen()/255.0 + one_minus_alpha * midgray); g = Math.max(Math.min(1, g), 0); float b = (float)(alpha * c.getBlue()/255.0 + one_minus_alpha * midgray); b = Math.max(Math.min(1, b), 0); paints[i][j] = new Color(r, g, b); } else { paints[i][j] = p; } } } } }//}}} king-2.21.120420/king/1.x_src/king/core/TrianglePoint.java0000644000000000000000000002260311531212670021323 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.geom.*; //import java.io.*; //import java.text.*; //import java.util.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * TrianglePoint provides filled, shaded triangles for triangle lists and ribbon lists. * In a list of N points, there are N - 2 triangles: 1-2-3, 2-3-4, 3-4-5, etc. * *

Begun on Mon Jun 24 21:09:57 EDT 2002 *
Copyright (C) 2002-2003 by Ian W. Davis. All rights reserved. */ public class TrianglePoint extends AbstractPoint // implements ... { //{{{ Static fields /** This bit is set if the point is followed by an 'L' or a 'D'; this triangle takes its normal from previous one */ //static final int LINETO_BIT = 0x00800000; //}}} //{{{ Variable definitions //################################################################################################## TrianglePoint from; //}}} //{{{ Constructors //################################################################################################## /** * Creates a new data point representing one point of a triangle. * * @param list the list that contains this point * @param label the pointID of this point * @param start where this line is drawn from, or null if it's the starting point */ public TrianglePoint(KList list, String label, TrianglePoint start) { super(list, label); setPrev(start); } //}}} //{{{ signalTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. * @param zoom the zoom factor encoded by the Transform, * as a convenience for resizing things. */ public void signalTransform(Engine engine, Transform xform, double zoom) { // Don't call super.signalTransform() b/c we do it all here xform.transform(this, engine.work1); setDrawXYZ(engine.work1); double triangleZ; if(from == null || from.from == null) triangleZ = z; //else triangleZ = (z + from.z + from.from.z)/3.0; // Sort by average of two backmost vertices (midpoint of back edge). // This helps for triangles "outlined" by vectors, because if the vectors will always // sort in front of or equal to the triangle, so if they come after the triangles // in the kinemage, they'll always be visible. Helps with e.g. protein ribbons. else { if(z < from.z) { if(from.z < from.from.z) triangleZ = (z + from.z)/2.0; else triangleZ = (z + from.from.z)/2.0; } else { if(z < from.from.z) triangleZ = (z + from.z)/2.0; else triangleZ = (from.z + from.from.z)/2.0; } } engine.addPaintable(this, triangleZ); } //}}} //{{{ isPickedBy //################################################################################################## /** * Returns true if the specified pick hits this point, else returns false * Pays no attention to whether this point is marked as unpickable. * @param radius the desired picking radius * @param objPick whether we should try to pick solid objects in addition to points * @return the KPoint that should be counted as being picked, or null for none. * Usually this, but maybe not for object picking. */ public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { if(objPick && from != null && from.from != null) { // deliberately using transformed coordinates, b/c they're projected flat TrianglePoint A = this, B = from, C = from.from; // first, make sure this is really a triangle, i.e. A != B != C // otherwise, the signed area is always zero and it looks like we hit the edge if(!((A.x == B.x && A.y == B.y) || (B.x == C.x && B.y == C.y) || (C.x == A.x && C.y == A.y))) { // then, do Andrew Ban's nifty intersection test if(Builder.checkTriangle(xx, yy, A.x, A.y, B.x, B.y, C.x, C.y)) return this; // always this, so changing colors works as expected /*{ float dx, dy, dA, dB, dC; dx = xx - A.x; dy = yy - A.y; dA = dx*dx + dy*dy; dx = xx - B.x; dy = yy - B.y; dB = dx*dx + dy*dy; dx = xx - B.x; dy = yy - C.y; dC = dx*dx + dy*dy; if(dA <= dB && dA <= dC) return A; else if(dB <= dC) return B; else return C; }*/ } } return super.isPickedBy(xx, yy, radius, objPick); } //}}} //{{{ paintStandard //################################################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paintStandard(Engine engine) { KPaint maincolor = getDrawingColor(engine); if(from == null || from.from == null || maincolor.isInvisible()) return; TrianglePoint A, B, C = from.from.from; int colorCue = engine.colorCue; // If this is a ribbon list, color the triangles in pairs (code for dependent triangles) if((multi & SEQ_EVEN_BIT) != 0 && parent != null && parent.getType() == KList.RIBBON && C != null) { A = from; B = from.from; //C = from.from.from; -- already set // We must match depth cueing AND lighting angle if we want ribbons to look uniform // This is a huge pain in the butt -- code derived from signalTransform(). double triangleZ; if(A.z < B.z) { if(B.z < C.z) triangleZ = (A.z + B.z)/2.0; else triangleZ = (A.z + C.z)/2.0; } else { if(A.z < C.z) triangleZ = (A.z + B.z)/2.0; else triangleZ = (B.z + C.z)/2.0; } // wrong, too simple: //colorCue = (int)Math.floor(KPaint.COLOR_LEVELS * (triangleZ - engine.clipBack) / engine.clipDepth); // right, multiple round off: int i = (int)(engine.TOP_LAYER*(triangleZ-engine.clipBack)/engine.clipDepth); colorCue = (KPaint.COLOR_LEVELS*i)/(engine.TOP_LAYER+1); // int division (floor) if(colorCue < 0) colorCue = 0; else if(colorCue >= KPaint.COLOR_LEVELS) colorCue = KPaint.COLOR_LEVELS-1; } // Otherwise, color each triangle individually (also independent triangles in ribbons) else { A = this; B = from; C = from.from; //colorCue = engine.colorCue; -- already set } // Do dot product of surface normal with lighting vector // to determine diffuse lighting. //engine.work1.likeVector(B, A); engine.work1.setXYZ( A.getDrawX()-B.getDrawX(), A.getDrawY()-B.getDrawY(), A.getDrawZ()-B.getDrawZ() ); //engine.work2.likeVector(B, C); engine.work2.setXYZ( C.getDrawX()-B.getDrawX(), C.getDrawY()-B.getDrawY(), C.getDrawZ()-B.getDrawZ() ); engine.work1.cross(engine.work2).unit(); double dotprod = engine.work1.dot(engine.lightingVector); int alpha = (parent == null ? 255 : parent.alpha); Paint paint = maincolor.getPaint(engine.backgroundMode, dotprod, colorCue, alpha); engine.painter.paintTriangle(paint, x, y, z, from.x, from.y, from.z, from.from.x, from.from.y, from.from.z ); } //}}} //{{{ get/setPrev(), isBreak() //################################################################################################## /** * Sets the point that precedes this one. * This matters to "chainable" points, like vectors and triangles. * For other points, it does nothing. * @param pt the point preceding this one in seqence */ public void setPrev(KPoint pt) { super.setPrev(pt); from = (TrianglePoint)pt; } /** * Gets the point preceding this one in the chain. * @return the preceding point, or null if (a) this is a break in the chain or (b) this is not a chainable point type. */ public KPoint getPrev() { return from; } /** * True iff this is a chainable point type (e.g. vector, triangle) AND there is a chain break. */ public boolean isBreak() { return (from == null); } //}}} }//class king-2.21.120420/king/1.x_src/king/core/DotPoint.java0000644000000000000000000000471711531212670020312 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.geom.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * DotPoint represents a contact dot or other small point. * These dots are not depth-cued by size, though the size can be set at time of creation. * "Dots" are actually square, so a radius between 1 and 3 is probably desireable. * *

Copyright (C) 2002-2003 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 12:57:57 EDT 2002 */ public class DotPoint extends AbstractPoint // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new data point representing a "dot". * * @param list the list that contains this point * @param label the pointID of this point */ public DotPoint(KList list, String label) { super(list, label); } //}}} //{{{ paintStandard //################################################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paintStandard(Engine engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; Paint paint = maincolor.getPaint(engine.backgroundMode, engine.colorCue); int width = calcLineWidth(engine); engine.painter.paintDot(paint, x, y, z, width); } //}}} //{{{ calcLineWidth //################################################################################################## // Default way of finding the right line width to use, given the settings in the engine // Dots never do depth cueing by width, because big square dots look crappy. int calcLineWidth(Engine engine) { if(engine.thinLines) return 1; else if(parent != null) return parent.width; else return 2; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/BallPoint.java0000644000000000000000000001135011531212670020425 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.geom.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * BallPoint represents a 3-D sphere. * It implements Mage balllists. * *

Begun on Sat Apr 27 11:02:02 EDT 2002 *
Copyright (C) 2002 by Ian W. Davis. All rights reserved. */ public class BallPoint extends RingPoint // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new data point representing one end of a line. * * @param list the list that contains this point * @param label the pointID of this point */ public BallPoint(KList list, String label) { super(list, label); } //}}} //{{{ signalTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. * @param zoom the zoom factor encoded by the Transform, * as a convenience for resizing things. */ public void signalTransform(Engine engine, Transform xform, double zoom) { // RingPoint signal transform handles most stuff super.signalTransform(engine, xform, zoom); // We still need to ask for line shortening, though // Otherwise we create gaps around lines when our pointmaster is off. // If ball is translucent, we should see line going to its center (?) if(!this.getDrawingColor(engine).isInvisible() && (parent == null || parent.alpha > 192)) engine.addShortener(this, r); } //}}} //{{{ isPickedBy //################################################################################################## /** * Returns true if the specified pick hits this point, else returns false * Pays no attention to whether this point is marked as unpickable. * @param radius the desired picking radius * @param objPick whether we should try to pick solid objects in addition to points * @return the KPoint that should be counted as being picked, or null for none. * Usually this, but maybe not for object picking. */ public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { // We have this goofy call to the AbstractPoint implementation // because Java doesn't allow super.super.foo() return _isPickedBy(xx, yy, Math.max(radius, r), objPick); // Balls should always act in "object pick" mode //if(objPick) return super.isPickedBy(xx, yy, Math.max(radius, r), objPick); //else return super.isPickedBy(xx, yy, radius, objPick); } //}}} //{{{ paintStandard //################################################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paintStandard(Engine engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; int alpha = (parent == null ? 255 : parent.alpha); Paint paint = maincolor.getPaint(engine.backgroundMode, 1, engine.colorCue, alpha); // We *can* do extra depth cueing hints for balls, but I prefer not to. // It works for small, isolated balls (e.g. waters), but it is confusing // and downright misleading when many balls are close together, because // the sizes of the balls are consistently and substantially inflated. // // We have to do this here b/c now widthCue is set //if(engine.cueThickness) r *= KPalette.widthScale[ engine.widthCue ]; engine.painter.paintBall(paint, x, y, z, r, ((parent.flags & KList.NOHILITE) == 0)); } //}}} }//class king-2.21.120420/king/1.x_src/king/core/JoglPainter.java0000644000000000000000000004120411531212670020760 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; import javax.media.opengl.*; import javax.media.opengl.glu.*; import com.sun.opengl.util.*; // for GLUT //}}} /** * JoglPainter is a hardware-accelerated Painter that uses * the JOGL Java bindings for OpenGL. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Sat Jun 5 16:15:26 EDT 2004 */ public class JoglPainter implements Painter { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## GL gl; GLU glu; GLUT glut; Rectangle clipRgn = new Rectangle(); int currFont = GLUT.BITMAP_HELVETICA_12; int[] xPoints = new int[6]; int[] yPoints = new int[6]; float[] circle4, circle8, circle16, circle32; //}}} //{{{ Constructor(s) //############################################################################## public JoglPainter(GLAutoDrawable drawable) { super(); gl = drawable.getGL(); //glu = drawable.getGLU(); glu = new GLU(); glut = new GLUT(); // This is necessary for antialiasing, but also for transparent objects. gl.glEnable(gl.GL_BLEND); gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA); // Antialiasing for points and lines. // Almost everything we draw is done as polygons, so this doesn't help. //gl.glEnable(gl.GL_POINT_SMOOTH); //gl.glEnable(gl.GL_LINE_SMOOTH); // Antialiasing doesn't work for polygons (easily). // Best bet is to render multiple times with slight offset to accum. buffer. // See notes in JoglCanvas. // THIS CODE DOESN"T WORK: //gl.glBlendFunc(gl.GL_SRC_ALPHA_SATURATE, gl.GL_ONE); //gl.glEnable(gl.GL_POLYGON_SMOOTH); //gl.glDisable(gl.GL_DEPTH_TEST); circle4 = makeCircle(4); circle8 = makeCircle(8); circle16 = makeCircle(16); circle32 = makeCircle(32); } //}}} //{{{ makeCircle, fillOval, drawOval //############################################################################## float[] makeCircle(int nVertices) { float[] c = new float[2*nVertices]; for(int i = 0; i < nVertices; i++) { double angle = 2 * Math.PI * (double)i / (double)nVertices; // The /2 is a correction for using diameter instead of radius in fillOval() c[2*i] = (float)(Math.cos(angle) / 2); c[2*i+1] = (float)(Math.sin(angle) / 2); } return c; } void fillOval(double x, double y, double width, double height) { float[] circle; double diam = (width > height ? width : height); if(diam <= 3) circle = circle4; else if(diam <= 8) circle = circle8; else if(diam <= 16) circle = circle16; else circle = circle32; double cx = x + width/2; double cy = y + height/2; gl.glBegin(gl.GL_POLYGON); for(int i = 0; i < circle.length; i+=2) { gl.glVertex2i((int)(cx + width*circle[i]), -(int)(cy + height*circle[i+1])); } gl.glEnd(); } void drawOval(double x, double y, double width, double height) { float[] circle; double diam = (width > height ? width : height); if(diam <= 3) circle = circle4; else if(diam <= 8) circle = circle8; else if(diam <= 16) circle = circle16; else circle = circle32; double cx = x + width/2; double cy = y + height/2; gl.glBegin(gl.GL_LINE_LOOP); for(int i = 0; i < circle.length; i+=2) { gl.glVertex2i((int)(cx + width*circle[i]), -(int)(cy + height*circle[i+1])); } gl.glEnd(); } //}}} //{{{ drawLine, fillRect, drawRect //############################################################################## void drawLine(int x1, int y1, int x2, int y2) { gl.glBegin(gl.GL_LINES); gl.glVertex2i(x1, -y1); gl.glVertex2i(x2, -y2); gl.glEnd(); } void fillRect(int x, int y, int width, int height) { gl.glRecti(x, -y, x+width, -(y+height)); } void drawRect(int x, int y, int width, int height) { gl.glBegin(gl.GL_LINE_LOOP); gl.glVertex2i(x, -y); gl.glVertex2i(x, -(y+height)); gl.glVertex2i(x+width, -(y+height)); gl.glVertex2i(x+width, -y); gl.glEnd(); } //}}} //{{{ paintBall //################################################################################################## public void paintBall(Paint paint, double x, double y, double z, double r, boolean showHighlight) { int d = (int)(2.0*r + 0.5); if(d < 2) d = 2; // make sure balls don't disappear // one disk setPaint(paint); fillOval(x-r, y-r, d, d); // Black rim, causes ~10% speed penalty but useful for visualization! try { Color c = (Color) paint; if(d >= 10 && c.getAlpha() == 255) { setPaint(KPaint.black); // wants to merge with the background drawOval(x-r, y-r, d, d); } } catch(ClassCastException ex) { ex.printStackTrace(); System.err.println("JoglPainter: tried painting with non-Color type of Paint"); } // highlight if(showHighlight) { double off = 0.5 * r; d = (int)(0.3*r)+1; setPaint(Color.white); // wants to be bright white no matter what fillOval(x-off, y-off, d, d); } } //}}} //{{{ paintDot //################################################################################################## public void paintDot(Paint paint, double x, double y, double z, int width) { double off = width/2; setPaint(paint); if(width == 1) fillRect((int)(x-off), (int)(y-off), width, width); else { width += 1; // not big enough otherwise fillOval(x-off, y-off, width, width); } } //}}} //{{{ paintLabel //################################################################################################## public void paintLabel(Paint paint, String label, double x, double y, double z) { setPaint(paint); gl.glRasterPos2d(x, -y); //glut.glutBitmapString(gl, currFont, label); glut.glutBitmapString(currFont, label); } //}}} //{{{ paintMarker //################################################################################################## public void paintMarker(Paint paint, double x, double y, double z, int width, int paintStyle) { int cx = (int)x, cy = (int)y; int one = width, two = 2*width, three = 3*width, four = 4*width, five = 5*width, six = 6*width, seven = 7*width, ten = 10*width, eleven = 11*width; this.setPaint(paint); // Large discs and boxes if((paintStyle & MarkerPoint.BOX_L) != 0) this.fillRect(cx-five, cy-five, eleven, eleven); else if((paintStyle & MarkerPoint.DISC_L) != 0) this.fillOval(cx-five, cy-five, eleven, eleven); // Medium discs and boxes if((paintStyle & MarkerPoint.BOX_M) != 0) this.fillRect(cx-three, cy-three, seven, seven); else if((paintStyle & MarkerPoint.DISC_M) != 0) this.fillOval(cx-three, cy-three, seven, seven); // Small discs and boxes if((paintStyle & MarkerPoint.BOX_S) != 0) this.fillRect(cx-one, cy-one, three, three); else if((paintStyle & MarkerPoint.DISC_S) != 0) this.fillOval(cx-one, cy-one, three, three); // Crosses if((paintStyle & MarkerPoint.CROSS_S) != 0) { this.drawLine(cx, cy-one, cx, cy+one); this.drawLine(cx-one, cy, cx+one, cy); } if((paintStyle & MarkerPoint.CROSS_M) != 0) { this.drawLine(cx, cy-three, cx, cy+three); this.drawLine(cx-three, cy, cx+three, cy); } if((paintStyle & MarkerPoint.CROSS_L) != 0) { this.drawLine(cx, cy-five, cx, cy+five); this.drawLine(cx-five, cy, cx+five, cy); } if((paintStyle & MarkerPoint.CROSS_2) != 0) { this.drawLine(cx-one, cy-five, cx-one, cy+five); this.drawLine(cx+one, cy-five, cx+one, cy+five); this.drawLine(cx-five, cy-one, cx+five, cy-one); this.drawLine(cx-five, cy+one, cx+five, cy+one); } // X's if((paintStyle & MarkerPoint.X_S) != 0) { this.drawLine(cx-one, cy-one, cx+one, cy+one); this.drawLine(cx-one, cy+one, cx+one, cy-one); } if((paintStyle & MarkerPoint.X_M) != 0) { this.drawLine(cx-three, cy-three, cx+three, cy+three); this.drawLine(cx-three, cy+three, cx+three, cy-three); } if((paintStyle & MarkerPoint.X_L) != 0) { this.drawLine(cx-five, cy-five, cx+five, cy+five); this.drawLine(cx-five, cy+five, cx+five, cy-five); } if((paintStyle & MarkerPoint.X_2) != 0) { this.drawLine(cx-four, cy-five, cx+five, cy+four); this.drawLine(cx-five, cy-four, cx+four, cy+five); this.drawLine(cx-four, cy+five, cx+five, cy-four); this.drawLine(cx-five, cy+four, cx+four, cy-five); } // Squares if((paintStyle & MarkerPoint.SQUARE_S) != 0) this.drawRect(cx-one, cy-one, two, two); if((paintStyle & MarkerPoint.SQUARE_M) != 0) this.drawRect(cx-three, cy-three, six, six); if((paintStyle & MarkerPoint.SQUARE_L) != 0) this.drawRect(cx-five, cy-five, ten, ten); // Circles if((paintStyle & MarkerPoint.RING_S) != 0) this.drawOval(cx-one, cy-one, two, two); if((paintStyle & MarkerPoint.RING_M) != 0) this.drawOval(cx-three, cy-three, six, six); if((paintStyle & MarkerPoint.RING_L) != 0) this.drawOval(cx-five, cy-five, ten, ten); } //}}} //{{{ paintSphereDisk //################################################################################################## public void paintSphereDisk(Paint paint, double x, double y, double z, double r) { int d = (int)(2.0*r + 0.5); if(d < 2) d = 2; // make sure balls don't disappear // one disk setPaint(paint); fillOval(x-r, y-r, d, d); } //}}} //{{{ paintTriangle //################################################################################################## public void paintTriangle(Paint paint, double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3) { setPaint(paint); gl.glBegin(GL.GL_TRIANGLES); gl.glVertex2i((int)x1, -(int)y1); gl.glVertex2i((int)x2, -(int)y2); gl.glVertex2i((int)x3, -(int)y3); gl.glEnd(); } //}}} //{{{ paintVector //################################################################################################## public void paintVector(Paint paint, int width, int widthCue, double x1, double y1, double z1, double x2, double y2, double z2) { setPaint(paint); prettyLine((int)x1, (int)y1, (int)x2, (int)y2, KPalette.lineWidths[width-1][widthCue]); } //}}} //{{{ prettyLine //################################################################################################## /** Draws a thick line with nice ends, using fillPolygon(). Slightly slower (30-35%) than fastLine(). */ void prettyLine(int x1, int y1, int x2, int y2, int width) { int s, e, abs_x2_x1, abs_y2_y1; s = -width / 2; // Start offset e = s + width; // End offset abs_x2_x1 = Math.abs(x2 - x1); abs_y2_y1 = Math.abs(y2 - y1); // horizontal -- if( abs_x2_x1 > abs_y2_y1 ) { // left to right if( x1 < x2 ) { xPoints[0] = x1 ; xPoints[1] = x1+s; xPoints[2] = x1; xPoints[3] = x2; xPoints[4] = x2-s; xPoints[5] = x2; yPoints[0] = y1+s; yPoints[1] = y1; yPoints[2] = y1+e; yPoints[3] = y2+e; yPoints[4] = y2; yPoints[5] = y2+s; } // right to left else { xPoints[0] = x1 ; xPoints[1] = x1-s; xPoints[2] = x1; xPoints[3] = x2; xPoints[4] = x2+s; xPoints[5] = x2; yPoints[0] = y1+s; yPoints[1] = y1; yPoints[2] = y1+e; yPoints[3] = y2+e; yPoints[4] = y2; yPoints[5] = y2+s; } } // vertical | else { // top to bottom if( y1 < y2 ) { xPoints[0] = x1+s; xPoints[1] = x1; xPoints[2] = x1+e; xPoints[3] = x2+e; xPoints[4] = x2; xPoints[5] = x2+s; yPoints[0] = y1 ; yPoints[1] = y1+s; yPoints[2] = y1; yPoints[3] = y2; yPoints[4] = y2-s; yPoints[5] = y2; } // bottom to top else { xPoints[0] = x1+s; xPoints[1] = x1; xPoints[2] = x1+e; xPoints[3] = x2+e; xPoints[4] = x2; xPoints[5] = x2+s; yPoints[0] = y1 ; yPoints[1] = y1-s; yPoints[2] = y1; yPoints[3] = y2; yPoints[4] = y2+s; yPoints[5] = y2; } } gl.glBegin(GL.GL_POLYGON); gl.glVertex2i((int)xPoints[0], -(int)yPoints[0]); gl.glVertex2i((int)xPoints[1], -(int)yPoints[1]); gl.glVertex2i((int)xPoints[2], -(int)yPoints[2]); gl.glVertex2i((int)xPoints[3], -(int)yPoints[3]); gl.glVertex2i((int)xPoints[4], -(int)yPoints[4]); gl.glVertex2i((int)xPoints[5], -(int)yPoints[5]); gl.glEnd(); } //}}} //{{{ drawOval //################################################################################################## public void drawOval(Paint paint, double x, double y, double z, double width, double height) { setPaint(paint); drawOval((x - width/2), (y - height/2), width, height); } public void drawOval(Paint paint, int linewidth, int widthCue, double x, double y, double z, double width, double height) { setPaint(paint); double startx = (x - width/2.0 - linewidth/2.0); double starty = (y - height/2.0 - linewidth/2.0); double diamx = ( width + linewidth); double diamy = (height + linewidth); for(int i = 0; i < linewidth; i++) { drawOval(startx, starty, diamx, diamy); startx += 1; starty += 1; diamx -= 2; diamy -= 2; } } //}}} //{{{ setFont, getLabelWidth/Ascent/Descent //############################################################################## public void setFont(Font f) { int sz = f.getSize(); if(sz <= 10) currFont = GLUT.BITMAP_HELVETICA_10; else if(sz <= 14) currFont = GLUT.BITMAP_HELVETICA_12; else currFont = GLUT.BITMAP_HELVETICA_18; } public int getLabelWidth(String s) { return glut.glutBitmapLength(currFont, s); } public int getLabelAscent(String s) { if(currFont == GLUT.BITMAP_HELVETICA_10) return 10; else if(currFont == GLUT.BITMAP_HELVETICA_12) return 12; else if(currFont == GLUT.BITMAP_HELVETICA_18) return 18; else return 1; } public int getLabelDescent(String s) { return getLabelAscent(s)/4; } //}}} //{{{ setPaint, setViewport, clearCanvas //############################################################################## void setPaint(Paint p) { try { Color c = (Color) p; gl.glColor4f( c.getRed()/255f, c.getGreen()/255f, c.getBlue()/255f, c.getAlpha()/255f); } catch(ClassCastException ex) { ex.printStackTrace(); System.err.println("JoglPainter: tried painting with non-Color type of Paint"); } } public void setViewport(int x, int y, int width, int height) { clipRgn.setBounds(x, y, width, height); gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); //glu.gluOrtho2D(0.0, width, -height, 0.0); glu.gluOrtho2D(x, x+width, y-height, y); gl.glViewport(x, y, width, height); } public void clearCanvas(Color c) { gl.glClearColor(c.getRed()/255f, c.getGreen()/255f, c.getBlue()/255f, c.getAlpha()/255f); gl.glClear(GL.GL_COLOR_BUFFER_BIT); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/KinfileParser.java0000644000000000000000000014540111531212670021304 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * KinfileParser is a second-generation kinemage * file loader. It contains the logic for interpretting all * the tokens in the file, and returns one or more new kinemages * when it's finished. * * Make sure to call initAll() on the resulting kinemages! * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Wed Apr 9 08:23:25 EDT 2003 */ public class KinfileParser //extends ... implements ... { //{{{ Constants public static final String DEFAULT_KINEMAGE_NAME = "Kinemage #"; static final String DEFAULT_GROUP_NAME = ""; static final String IMPLIED_GROUP_NAME = "(implied)"; static final int MAX_ERRORS_REPORTED = 30; //}}} //{{{ Variable definitions //################################################################################################## // Needed for basic function LineNumberReader input; KinfileTokenizer token; // For tracking our position in the hierarchy Kinemage kinemage = null; KGroup group = null; KSubgroup subgroup = null; KList list = null; // Info generated by this parser Collection kinemages = new ArrayList(); StringBuffer atText = new StringBuffer(); Map viewMap = null; // created when kinemage is // Used for implementing clone= and instance= Map groupsByName = null; // created when kinemage is Map subgroupsByName = null; // created when kinemage is Map listsByName = null; // created when kinemage is // Used for storing bondrots TreeMap bondRots = null; ArrayList closedBondRots = null; int nonIntCount = 1; // Used for high-dimensional kinemages int groupDimension = 3; int subgroupDimension = 3; //}}} //{{{ Constructor(s), parse //################################################################################################## /** * Creates a new KinfileParser. * Call parse() to read and interpret a file. */ public KinfileParser() { input = null; token = null; } /** * Reads and interprets the kinemage file supplied. * Make sure to call initAll() on the resulting kinemages! * * @throws IOException if input stream throws any such exceptions during parsing */ public void parse(LineNumberReader in) throws IOException { input = in; token = new KinfileTokenizer(input); keywordLoop(); } //}}} //{{{ getKinemages, getText, getErrors, error, getCharsRead //################################################################################################## /** * Returns an unmodifiable Collection of Kinemage objects contained in this file * * Make sure to call initAll() on the resulting kinemages! */ public Collection getKinemages() { return Collections.unmodifiableCollection(kinemages); } /** Returns the concatenated result of all @text sections in this file */ public String getText() { return atText.toString(); } void error(String msg) { SoftLog.err.println("[line "+(input.getLineNumber()+1)+"] "+msg); } /** Returns the number of characters read in thus far */ public long getCharsRead() { if(token != null) return token.getCharsRead(); else return 0; } //}}} //{{{ keywordLoop //################################################################################################## void keywordLoop() throws IOException { String s; while(!token.isEOF()) { // Kinder to user to be case insensitive for keywords, at least s = token.getString().toLowerCase(); if(!token.isKeyword()) { error("Dangling token '"+s+"' outside any keywords"); token.advanceToKeyword(); } // METADATA else if(s.equals("@text")) doText(); else if(s.equals("@title")) doTitle(); else if(s.equals("@copyright")) doCopyright(); else if(s.equals("@caption")) doCaption(); else if(s.equals("@mage")) token.advanceToKeyword();//ignored else if(s.equals("@prekin")) token.advanceToKeyword();//ignored else if(s.equals("@pdbfile")) doPdbFile(); else if(s.equals("@command")) doCommand(); else if(s.equals("@dimensions")) doDimensions(); else if(s.equals("@dimension")) doDimensions(); //deprecated else if(s.equals("@dimminmax")) doDimMinMax(); // VIEWS else if(s.endsWith("viewid")) doViewID(); else if(s.endsWith("zoom")) doZoom(); else if(s.endsWith("span")) doSpan(); else if(s.endsWith("zslab")) doClip(); else if(s.endsWith("zclip")) doClip(); //deprecated else if(s.endsWith("ztran")) token.advanceToKeyword(); //ignored else if(s.endsWith("center")) doCenter(); else if(s.endsWith("matrix")) doMatrix(); else if(s.endsWith("axischoice")) doAxisChoice(); // DISPLAY OPTIONS else if(s.equals("@whitebackground")) doWhiteBackground(); else if(s.equals("@whiteback")) doWhiteBackground(); //deprecated else if(s.equals("@whitebkg")) doWhiteBackground(); //deprecated else if(s.equals("@onewidth")) doOnewidth(); else if(s.equals("@thinline")) doThinline(); else if(s.equals("@perspective")) doPerspective(); else if(s.equals("@flat")) doFlat(); else if(s.equals("@flatland")) doFlat(); //deprecated else if(s.equals("@xytranslation")) doFlat(); //deprecated else if(s.equals("@listcolordominant")) doListColorDominant(); else if(s.equals("@listcolordom")) doListColorDominant(); //deprecated else if(s.equals("@lens")) doLens(); // MASTERS, ASPECTS, AND COLORS else if(s.endsWith("aspect")) doAspect(); else if(s.equals("@master")) doMaster(); else if(s.equals("@pointmaster")) doPointmaster(); else if(s.equals("@colorset")) doColorset(); else if(s.equals("@hsvcolor")) doHsvColor(); else if(s.equals("@hsvcolour")) doHsvColor(); // KINEMAGES, GROUPS, AND SUBGROUPS else if(s.equals("@kinemage")) doKinemage(); else if(s.equals("@group")) doGroup(); else if(s.equals("@subgroup")) doSubgroup(); else if(s.equals("@set")) doSubgroup(); //deprecated // LISTS else if(s.equals("@vectorlist")) doList(KList.VECTOR); else if(s.equals("@vector")) doList(KList.VECTOR); //deprecated else if(s.equals("@labellist")) doList(KList.LABEL); else if(s.equals("@label")) doList(KList.LABEL); //deprecated else if(s.equals("@dotlist")) doList(KList.DOT); else if(s.equals("@dot")) doList(KList.DOT); //deprecated else if(s.equals("@ringlist")) doList(KList.RING); else if(s.equals("@ring")) doList(KList.RING); //deprecated else if(s.equals("@balllist")) doList(KList.BALL); else if(s.equals("@ball")) doList(KList.BALL); //deprecated else if(s.equals("@spherelist")) doList(KList.SPHERE); else if(s.equals("@sphere")) doList(KList.SPHERE); //deprecated else if(s.equals("@trianglelist")) doList(KList.TRIANGLE); else if(s.equals("@triangle")) doList(KList.TRIANGLE); //deprecated else if(s.equals("@ribbonlist")) doList(KList.RIBBON); else if(s.equals("@ribbon")) doList(KList.RIBBON); //deprecated else if(s.equals("@marklist")) doList(KList.MARK); else if(s.equals("@mark")) doList(KList.MARK); //deprecated else if(s.equals("@arrowlist")) doList(KList.ARROW); else if(s.equals("@arrow")) doList(KList.ARROW); //deprecated else { // In the future, we'd like to save this as-is. error("Unrecognized keyword '"+s+"' will be ignored"); token.advanceToKeyword(); } }//while not EOF if(kinemage != null) kinemage.setBondRots(closeBondRots()); closedBondRots = new ArrayList(); } //}}} //{{{ doKinemage, checkKinemage //################################################################################################## void doKinemage() throws IOException { if (kinemage != null) { kinemage.setBondRots(closeBondRots()); closedBondRots = new ArrayList(); } kinemage = new Kinemage(DEFAULT_KINEMAGE_NAME+(kinemages.size()+1)); kinemages.add(kinemage); group = null; subgroup = null; list = null; viewMap = new HashMap(); groupsByName = new HashMap(); subgroupsByName = new HashMap(); listsByName = new HashMap(); bondRots = new TreeMap(); closedBondRots = new ArrayList(); token.advance(); while(!token.isEOF() && !token.isKeyword()) { if(token.isInteger()) kinemage.setName(DEFAULT_KINEMAGE_NAME+token.getInt()); else if(token.isIdentifier()) kinemage.setName(token.getString()); //KiNG extension else error("Unrecognized token '"+token.getString()+"' will be ignored"); token.advance(); } } void checkKinemage() { if(kinemage == null) { kinemage = new Kinemage(DEFAULT_KINEMAGE_NAME+(kinemages.size()+1)); kinemages.add(kinemage); group = null; subgroup = null; list = null; viewMap = new HashMap(); groupsByName = new HashMap(); subgroupsByName = new HashMap(); listsByName = new HashMap(); bondRots = new TreeMap(); closedBondRots = new ArrayList(); error("'"+token.getString()+"' was found before encountering @kinemage"); } } //}}} //{{{ doGroup, checkGroup //################################################################################################## void doGroup() throws IOException { checkKinemage(); group = new KGroup(kinemage, DEFAULT_GROUP_NAME); kinemage.add(group); subgroup = null; list = null; groupDimension = 3; token.advance(); // Entire @group must be on a single line while(!token.isEOF() && !token.isKeyword() && !token.isBOL()) { if(token.isIdentifier()) { group.setName(token.getString()); token.advance(); } else if(token.isLiteral()) { String s = token.getString(); if(s.equals("animate")) group.setAnimate(true); else if(s.equals("2animate")) group.set2Animate(true); else if(s.equals("off")) group.setOn(false); else if(s.equals("dominant")) group.setDominant(true); else if(s.equals("recessiveon") || s.equals("collapsable") || s.equals("collapsible")) group.setRecessiveOn(true); else if(s.equals("nobutton")) group.setHasButton(false); else if(s.equals("lens")) group.setLens(true); else error("Unrecognized literal '"+s+"' will be ignored"); token.advance(); } else if(token.isProperty()) { String s = token.getString(); token.advance(); // past key if(s.equals("master=")) { if(token.isIdentifier()) { kinemage.ensureMasterExists(token.getString()); group.addMaster(token.getString()); } else error("master= was not followed by an identifier"); } // Clone is a full or "deep" copy of the original // Instance is a lightweight copy that uses the same underlying point data else if(s.equals("clone=") || s.equals("instance=")) { if(token.isIdentifier()) { KGroup template = (KGroup) groupsByName.get(token.getString()); if(template != null) group.children = ((KGroup)template.clone(s.equals("clone="))).children; } else error(s+" was not followed by an identifier"); } else if(s.equals("dimension=")) { if(token.isInteger()) groupDimension = token.getInt(); else error(s+" was not followed by an integer"); } else error("Unrecognized property '"+s+" "+token.getString()+"' will be ignored"); token.advance(); // past value } else { error("Unrecognized token '"+token.getString()+"' will be ignored"); token.advance(); } } // Done last, after we have our final name groupsByName.put(group.getName(), group); } void checkGroup() { checkKinemage(); if(group == null) { group = new KGroup(kinemage, IMPLIED_GROUP_NAME); group.setHasButton(false); kinemage.add(group); subgroup = null; list = null; groupDimension = 3; } } //}}} //{{{ doSubgroup, checkSubgroup //################################################################################################## void doSubgroup() throws IOException { checkGroup(); subgroup = new KSubgroup(group, DEFAULT_GROUP_NAME); group.add(subgroup); list = null; subgroupDimension = 3; token.advance(); // Entire @subgroup must be on a single line while(!token.isEOF() && !token.isKeyword() && !token.isBOL()) { if(token.isIdentifier()) { subgroup.setName(token.getString()); token.advance(); } else if(token.isLiteral()) { String s = token.getString(); if(s.equals("off")) subgroup.setOn(false); else if(s.equals("dominant")) subgroup.setDominant(true); else if(s.equals("recessiveon") || s.equals("collapsable") || s.equals("collapsible")) subgroup.setRecessiveOn(true); else if(s.equals("nobutton")) subgroup.setHasButton(false); else if(s.equals("lens")) subgroup.setLens(true); else error("Unrecognized literal '"+s+"' will be ignored"); token.advance(); } else if(token.isProperty()) { String s = token.getString(); token.advance(); // past key if(s.equals("master=")) { if(token.isIdentifier()) { kinemage.ensureMasterExists(token.getString()); subgroup.addMaster(token.getString()); } else error("master= was not followed by an identifier"); } // Clone is a full or "deep" copy of the original // Instance is a lightweight copy that uses the same underlying point data else if(s.equals("clone=") || s.equals("instance=")) { if(token.isIdentifier()) { KSubgroup template = (KSubgroup) subgroupsByName.get(token.getString()); if(template != null) subgroup.children = ((KSubgroup)template.clone(s.equals("clone="))).children; } else error(s+" was not followed by an identifier"); } else if(s.equals("dimension=")) { if(token.isInteger()) subgroupDimension = token.getInt(); else error(s+" was not followed by an integer"); } else error("Unrecognized property '"+s+" "+token.getString()+"' will be ignored"); token.advance(); // past value } else { error("Unrecognized token '"+token.getString()+"' will be ignored"); token.advance(); } } // Done last, after we have our final name subgroupsByName.put(subgroup.getName(), subgroup); } void checkSubgroup() { checkGroup(); if(subgroup == null) { subgroup = new KSubgroup(group, IMPLIED_GROUP_NAME); subgroup.setHasButton(false); group.add(subgroup); list = null; subgroupDimension = 3; } } //}}} //{{{ doList //################################################################################################## void doList(String kListType) throws IOException { checkSubgroup(); list = new KList(subgroup, DEFAULT_GROUP_NAME); list.setType(kListType); subgroup.add(list); list.setDimension(3); if(subgroupDimension != 3) list.setDimension(subgroupDimension); else if(groupDimension != 3) list.setDimension(groupDimension); if(kListType == KList.MARK) list.setStyle(MarkerPoint.SQUARE_L); token.advance(); // Entire @list must be on a single line and may be terminated by the first point ID boolean listIdFound = false; while(!token.isEOF() && !token.isKeyword() && (!token.isIdentifier() || !listIdFound) && !token.isBOL()) { if(token.isIdentifier()) { list.setName(token.getString()); listIdFound = true; token.advance(); } else if(token.isLiteral()) { String s = token.getString(); if(s.equals("off")) list.setOn(false); else if(s.equals("nobutton")) list.setHasButton(false); else if(s.equals("lens")) list.setLens(true); else if(s.startsWith("nohi")) list.flags |= KList.NOHILITE; // for doing bondrots else if(s.endsWith("bondrot")) { double angle = 0; char firstChar = s.charAt(0); int bondNum = -1; if (Character.isDigit(firstChar)) { bondNum = Character.getNumericValue(firstChar); } else { bondNum = nonIntCount; nonIntCount++; } token.advance(); if(token.isNumber()) { angle = token.getFloat(); } else { error("angle for bondrot not number"); } storeBondRot(bondNum, list.getName(), angle); } else error("Unrecognized literal '"+s+"' will be ignored"); token.advance(); } else if(token.isProperty()) { String s = token.getString(); token.advance(); // past key if(s.equals("color=") || s.equals("colour=")) { // e.g. red e.g. @colorset {HelixCap} if( (token.isLiteral() || token.isIdentifier()) && kinemage.getAllPaintMap().containsKey(token.getString()) ) { list.setColor(kinemage.getPaintForName(token.getString())); } else error("color= was followed by unknown color '"+token.getString()+"'"); } else if(s.equals("master=")) { if(token.isIdentifier()) { kinemage.ensureMasterExists(token.getString()); list.addMaster(token.getString()); } else error("master= was not followed by an identifier"); } // Clone is a full or "deep" copy of the original else if(s.equals("clone=")) { if(token.isIdentifier()) { KList template = (KList) listsByName.get(token.getString()); if(template != null) list.children = ((KList)template.clone(true)).children; } else error("clone= was not followed by an identifier"); } // Instance is a lightweight copy that uses the same underlying point data else if(s.equals("instance=")) { if(token.isIdentifier()) { KList template = (KList) listsByName.get(token.getString()); if(template != null) list.setInstance(template); } else error("instance= was not followed by an identifier"); } else if(s.equals("radius=")) { if(token.isNumber()) list.setRadius(token.getFloat()); else error("radius= was not followed by a number"); } else if(s.equals("angle=")) { if(token.isNumber()) list.setAngle(token.getFloat()); else error("angle= was not followed by a number"); } else if(s.equals("alpha=")) // opacity, from 1 (opaque) to 0 (transparent) { if(token.isNumber()) { double alpha = token.getFloat(); if(alpha < 0) alpha = 0; else if(alpha > 1) alpha = 1; list.alpha = (int)(alpha*255 + 0.5); } else error("alpha= was not followed by a number"); } else if(s.equals("width=")) { if(token.isInteger()) list.setWidth(token.getInt()); else error("width= was not followed by an integer"); } else if(s.equals("size=")) { if(token.isInteger()) {} // useless property from legacy kins else error("size= was not followed by an integer"); } else if(s.equals("dimension=")) { if(token.isInteger()) list.setDimension(token.getInt()); else error(s+" was not followed by an integer"); } else error("Unrecognized property '"+s+" "+token.getString()+"' will be ignored"); token.advance(); // past value } else { error("Unrecognized token '"+token.getString()+"' will be ignored"); token.advance(); } } // Done last, after we have our final name listsByName.put(list.getName(), list); // Read in points until we hit another keyword or EOF KPoint prevPoint = null; while(!token.isEOF() && !token.isKeyword()) { prevPoint = doPoint(kListType, prevPoint, list.getDimension()); } // only stores list as bondRot if bondRot mode is on. if (rotModeIsOn()) { storeRotList(list); } } //}}} //{{{ doPoint //################################################################################################## /** Only called by doList() */ KPoint doPoint(String kListType, KPoint prevPoint, int dimension) throws IOException { KPoint point; String defaultPointID; if(prevPoint == null) defaultPointID = list.getName(); else defaultPointID = prevPoint.getName(); if(kListType.equals(KList.VECTOR)) point = new VectorPoint(list, defaultPointID, (VectorPoint)prevPoint); else if(kListType.equals(KList.DOT)) point = new DotPoint(list, defaultPointID); else if(kListType.equals(KList.MARK)) point = new MarkerPoint(list, defaultPointID); else if(kListType.equals(KList.LABEL)) point = new LabelPoint(list, defaultPointID); else if(kListType.equals(KList.TRIANGLE)) point = new TrianglePoint(list, defaultPointID, (TrianglePoint)prevPoint); else if(kListType.equals(KList.RIBBON)) point = new TrianglePoint(list, defaultPointID, (TrianglePoint)prevPoint); else if(kListType.equals(KList.RING)) point = new RingPoint(list, defaultPointID); else if(kListType.equals(KList.BALL)) point = new BallPoint(list, defaultPointID); else if(kListType.equals(KList.SPHERE)) point = new SpherePoint(list, defaultPointID); else if(kListType.equals(KList.ARROW)) point = new ArrowPoint(list, defaultPointID, (VectorPoint)prevPoint); else throw new IllegalArgumentException("Unrecognized list type '"+kListType+"'"); float[] allCoords = null; if(dimension > 3) { allCoords = new float[dimension]; point.setAllCoords(allCoords); } boolean pointIdFound = false; int coordsFound = 0; while(!token.isEOF() && !token.isKeyword() && (!token.isIdentifier() || !pointIdFound) && coordsFound < dimension) { if(token.isIdentifier()) { pointIdFound = true; if(!token.getString().equals("\"")) point.setName(token.getString()); } else if(token.isNumber()) { float f = token.getFloat(); if(coordsFound == 0) point.setX(f); else if(coordsFound == 1) point.setY(f); else if(coordsFound == 2) point.setZ(f); if(allCoords != null) allCoords[coordsFound] = f; coordsFound++; } else if(token.isAspect()) point.setAspects(token.getString()); else if(token.isSingleQuote()) point.setPmMask(kinemage.toPmBitmask(token.getString(), true, true)); else if(token.isLiteral()) { String s = token.getString(); if(s.equals("P") || s.equals("p") || s.equals("M") || s.equals("m")) { if(kListType.equals(KList.TRIANGLE) || kListType.equals(KList.RIBBON)) {} // see "X" flag, below else point.setPrev(null); } else if(s.equals("X") || s.equals("x")) point.setPrev(null); // P doesn't work for triangle, ribbon else if(s.equals("L") || s.equals("l") || s.equals("D") || s.equals("d")) {} else if(s.equals("T") || s.equals("t")) {} // to avoid error messages for Mage ribbon/triangle lists else if(s.equals("U") || s.equals("u")) point.setUnpickable(true); else if(s.equals("ghost")) point.setGhost(true); else if(s.startsWith("width")) { try { point.setWidth(Integer.parseInt(s.substring(5))); } catch(NumberFormatException ex) {} } else if(kinemage.getAllPaintMap().containsKey(s)) point.setColor(kinemage.getPaintForName(s)); else error("Unrecognized literal '"+s+"' will be ignored"); } else if(token.isProperty()) { String s = token.getString(); token.advance(); // past key if(s.equals("r=")) { if(token.isNumber()) point.setRadius(token.getFloat()); else error("r= was not followed by a number"); } else error("Unrecognized property '"+s+" "+token.getString()+"' will be ignored"); } else if(token.isComment()) { point.setComment(token.getString()); } else error("Unrecognized token '"+token.getString()+"' will be ignored"); token.advance(); } // Avoid creating bogus points from trailing junk, like empty comments. if(pointIdFound || coordsFound > 0) { list.add(point); return point; } else { error("Junk point will be ignored (no ID, no coordinates)"); return null; // point not added to list, so it's GC'd } } //}}} //{{{ do{Text, Caption, Title, Copyright, PdbFile, Command} //################################################################################################## void doText() throws IOException { atText.append(token.advanceToKeyword().trim()).append("\n\n"); } void doCaption() throws IOException { checkKinemage(); atText.append("CAPTION for "+kinemage.getName()+":\n "); atText.append(token.advanceToKeyword().trim()).append("\n\n"); } void doTitle() throws IOException { checkKinemage(); token.advance(); if(token.isIdentifier()) { kinemage.setName(token.getString()); token.advance(); } else error("@title was not followed by an identifier; found '"+token.getString()+"' instead"); } void doCopyright() throws IOException { token.advance(); if(token.isIdentifier()) { if(kinemage != null) atText.append("'"+kinemage.getName()+"' is "); atText.append("COPYRIGHT (C) ").append(token.getString()).append("\n\n"); token.advance(); } else error("@copyright was not followed by an identifier; found '"+token.getString()+"' instead"); } void doPdbFile() throws IOException { checkKinemage(); token.advance(); if(token.isIdentifier()) { kinemage.atPdbfile = token.getString(); token.advance(); } else error("@pdbfile was not followed by an identifier; found '"+token.getString()+"' instead"); } void doCommand() throws IOException { checkKinemage(); token.advance(); if(token.isIdentifier()) { kinemage.atCommand = token.getString(); token.advance(); } else error("@command was not followed by an identifier; found '"+token.getString()+"' instead"); } //}}} //{{{ getView, do{ViewID, Zoom, Span, Clip} //################################################################################################## KingView getView() { checkKinemage(); String s = token.getString(); StringBuffer keybuf = new StringBuffer(); int i; for(char c = s.charAt(i = 1); Character.isDigit(c); c = s.charAt(++i)) { keybuf.append(c); } String key = keybuf.toString(); if(key.equals("")) key = "1"; KingView view = (KingView)viewMap.get(key); if(view == null) { view = new KingView(kinemage); kinemage.addView(view); viewMap.put(key, view); } return view; } void doViewID() throws IOException { KingView view = getView(); token.advance(); if(token.isIdentifier()) { view.setName(token.getString()); token.advance(); } else error("@viewid was not followed by an identifier; found '"+token.getString()+"' instead"); } void doZoom() throws IOException { KingView view = getView(); token.advance(); if(token.isNumber()) { view.setZoom(token.getFloat()); token.advance(); } else error("@zoom was not followed by a number; found '"+token.getString()+"' instead"); } void doSpan() throws IOException { KingView view = getView(); token.advance(); if(token.isNumber()) { view.setSpan(token.getFloat()); token.advance(); } else error("@span was not followed by a number; found '"+token.getString()+"' instead"); } void doClip() throws IOException { KingView view = getView(); token.advance(); if(token.isNumber()) { view.setClip(token.getFloat() / 200f); token.advance(); } else error("@zslab was not followed by a number; found '"+token.getString()+"' instead"); } //}}} //{{{ do{Center, Matrix, AxisChoice} //################################################################################################## void doCenter() throws IOException { KingView view = getView(); try { float cx, cy, cz; token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); cx = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); cy = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); cz = token.getFloat(); token.advance(); view.setCenter(cx, cy, cz); } catch(IllegalArgumentException ex) { error("@center was not followed by 3 numbers; found '"+token.getString()+"' instead"); } } void doAxisChoice() throws IOException { KingView view = getView(); try { int ix, iy, iz; token.advance(); if(!token.isInteger()) throw new IllegalArgumentException(); ix = token.getInt(); token.advance(); if(!token.isInteger()) throw new IllegalArgumentException(); iy = token.getInt(); token.advance(); if(!token.isInteger()) throw new IllegalArgumentException(); iz = token.getInt(); token.advance(); view.setViewingAxes(new int[] { Math.max(ix-1, 0), Math.max(iy-1, 0), Math.max(iz-1, 0) }); } catch(IllegalArgumentException ex) { error("@axischoice was not followed by 3 integers; found '"+token.getString()+"' instead"); } } void doMatrix() throws IOException { KingView view = getView(); try { // This KiNG-style (premultiplied) transformation matrix // is the transpose of the Mage-style (postmultiplied) matrix. float[][] km = new float[3][3]; token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[0][0] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[1][0] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[2][0] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[0][1] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[1][1] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[2][1] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[0][2] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[1][2] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[2][2] = token.getFloat(); token.advance(); view.setMatrix(km); } catch(IllegalArgumentException ex) { error("@matrix was not followed by 9 numbers; found '"+token.getString()+"' instead"); } } //}}} //{{{ do{WhiteBackground, Onewidth, Thinline, Perspective, Flat, ListColorDominant, Lens} //################################################################################################## void doWhiteBackground() throws IOException { checkKinemage(); kinemage.atWhitebackground = true; token.advance(); } void doOnewidth() throws IOException { checkKinemage(); kinemage.atOnewidth = true; token.advance(); } void doThinline() throws IOException { checkKinemage(); kinemage.atThinline = true; token.advance(); } void doPerspective() throws IOException { checkKinemage(); kinemage.atPerspective = true; token.advance(); } void doFlat() throws IOException { checkKinemage(); kinemage.atFlat = true; token.advance(); } void doListColorDominant() throws IOException { checkKinemage(); kinemage.atListcolordominant = true; token.advance(); } void doLens() throws IOException { checkKinemage(); token.advance(); if(token.isNumber()) { kinemage.atLens = token.getDouble(); token.advance(); } else error("@lens was not followed by a number; found '"+token.getString()+"' instead"); } //}}} //{{{ do{Colorset, HsvColor} //################################################################################################## void doColorset() throws IOException { checkKinemage(); Map pmap = kinemage.getAllPaintMap(); try { String cset, color; token.advance(); if(!token.isIdentifier()) throw new IllegalArgumentException(); cset = token.getString(); token.advance(); if(!token.isLiteral()) throw new IllegalArgumentException(); color = token.getString(); if(!pmap.containsKey(color)) throw new IllegalArgumentException(); token.advance(); KPaint paint = KPaint.createAlias(cset, kinemage.getPaintForName(color)); kinemage.addPaint(paint); } catch(IllegalArgumentException ex) { error("@colorset was not followed by an identifier and a recognized color; found '"+token.getString()+"' instead"); } } void doHsvColor() throws IOException { checkKinemage(); try { String colorName; float bHue, bSat, bVal, wHue, wSat, wVal; token.advance(); if(!token.isIdentifier()) throw new IllegalArgumentException(); colorName = token.getString(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); bHue = wHue = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); bSat = wSat = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); bVal = wVal = token.getFloat(); token.advance(); if(token.isNumber()) { wHue = token.getFloat(); token.advance(); if(token.isNumber()) { wSat = token.getFloat(); token.advance(); if(token.isNumber()) { wVal = token.getFloat(); token.advance(); } } } KPaint paint = KPaint.createLightweightHSV(colorName, bHue, bSat, bVal, wHue, wSat, wVal); kinemage.addPaint(paint); } catch(IllegalArgumentException ex) { error("@hsvcolor was not followed by an identifier and 3 - 6 numbers; found '"+token.getString()+"' instead"); } } //}}} //{{{ do{Master, Pointmaster} //################################################################################################## // This just creates the master button ahead of time, // so it will appear in the specified order later on. void doMaster() throws IOException { checkKinemage(); token.advance(); if(token.isIdentifier()) { MasterGroup master = kinemage.getMasterByName(token.getString()); token.advance(); while(!token.isEOF() && !token.isKeyword()) { if(token.isLiteral()) { if(token.getString().equals("indent")) master.indent = true; else if(token.getString().equals("on")) master.setOnForced(true); // will turn on ALL target groups during sync else if(token.getString().equals("off")) master.setOnForced(false); // will turn off ALL target groups during sync else error("Unrecognized literal '"+token.getString()+"' will be ignored"); } else error("Unrecognized token '"+token.getString()+"' will be ignored"); token.advance(); } } else error("@master was not followed by an identifier; found '"+token.getString()+"' instead"); } // This both creates the master and sets its pointmaster bitflags // Syntax: // @pointmaster 'x' {Button name} [indent] // Possible to do the following (but why?): // @pointmaster 'abc' {Multi-master} [indent] void doPointmaster() throws IOException { checkKinemage(); try { String charFlags, masterName; token.advance(); if(!token.isSingleQuote()) throw new IllegalArgumentException(); charFlags = token.getString(); token.advance(); if(!token.isIdentifier()) throw new IllegalArgumentException(); masterName = token.getString(); token.advance(); MasterGroup master = kinemage.getMasterByName(masterName); master.setPmMask(charFlags); while(!token.isEOF() && !token.isKeyword()) { if(token.isLiteral()) { if(token.getString().equals("indent")) master.indent = true; else if(token.getString().equals("on")) master.setOnForced(true); // will turn on ALL target pts during sync (no effect) else if(token.getString().equals("off")) master.setOnForced(false); // will turn off ALL target pts during sync else error("Unrecognized literal '"+token.getString()+"' will be ignored"); } else error("Unrecognized token '"+token.getString()+"' will be ignored"); token.advance(); } } catch(IllegalArgumentException ex) { error("@pointmaster was not followed by a single-quoted string and an identifier; found '"+token.getString()+"' instead"); } } //}}} //{{{ doAspect //################################################################################################## void doAspect() throws IOException { checkKinemage(); String s = token.getString(); StringBuffer keybuf = new StringBuffer(); int i; for(char c = s.charAt(i = 1); Character.isDigit(c); c = s.charAt(++i)) { keybuf.append(c); } String key = keybuf.toString(); if(key.equals("")) key = "1"; try { int index = Integer.parseInt(key); token.advance(); if(!token.isIdentifier()) throw new IllegalArgumentException(); kinemage.createAspect(token.getString(), new Integer(index)); token.advance(); } catch(NumberFormatException ex) { error("@aspect was not recognized; '"+key+"' is not an integer"); } catch(IllegalArgumentException ex) { error("@aspect was not followed by an identifier; found '"+token.getString()+"' instead"); } } //}}} //{{{ doDimensions, doDimMinMax //################################################################################################## void doDimensions() throws IOException { checkKinemage(); token.advance(); if(token.isIdentifier()) while(token.isIdentifier()) { kinemage.dimensionNames.add(token.getString()); token.advance(); } else error("@dimensions was not followed by 1+ identifiers; found '"+token.getString()+"' instead"); } void doDimMinMax() throws IOException { checkKinemage(); token.advance(); if(token.isNumber()) while(token.isNumber()) { kinemage.dimensionMinMax.add(new Double(token.getDouble())); token.advance(); } else error("@dimminmax was not followed by 1+ numbers; found '"+token.getString()+"' instead"); } //}}} //{{{ storeBondRot, storeRotList //################################################################################################## /** * Private functions used to store bondrots. Numbered BondRots work by creating a new bond rot * everytime a #bondrot is encountered in the kinemage. A bondrot is closed whenever a new #bondrot * is encountered with a # less than or equal to the bondrot. **/ private void storeBondRot(int bondNum, String nm, double angle) { Integer bondInt = new Integer(bondNum); Map higherRots = new TreeMap(); if (bondNum != -1) { higherRots = bondRots.tailMap(bondInt); } if (!(higherRots.isEmpty())) { Collection closingRots = higherRots.values(); Iterator iter = closingRots.iterator(); while (iter.hasNext()) { BondRot toBeClosed = (BondRot) iter.next(); toBeClosed.setOpen(false); closedBondRots.add(toBeClosed); //System.out.println("Bond rots less than or equal to " + bondInt + " closed"); } } if (bondNum != -1) { bondRots = new TreeMap(bondRots.headMap(bondInt)); //to clear map of all bondrots with higher numbers } BondRot newRot = new BondRot(bondNum, nm, angle); bondRots.put(bondInt, newRot); } // for putting a klist into all currently open bondrots. private void storeRotList(KList list) { Collection bondRotColl = bondRots.values(); Iterator iter = bondRotColl.iterator(); while (iter.hasNext()) { BondRot rot = (BondRot) iter.next(); if (rot.isOpen()) { rot.add(list); } } } //}}} //{{{ closeBondRots, rotModeIsOn //################################################################################################## private ArrayList closeBondRots() { //need to close all open bondrots if (bondRots != null) { Collection closingRots = bondRots.values(); Iterator closeIter = closingRots.iterator(); while (closeIter.hasNext()) { BondRot toBeClosed = (BondRot) closeIter.next(); toBeClosed.setOpen(false); closedBondRots.add(toBeClosed); } bondRots = null; } return closedBondRots; } /** * Returns whether bondRots have been encountered in the kinemage. **/ public boolean rotModeIsOn() { return !(bondRots.isEmpty()); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ Main() and main() //################################################################################################## /** * Main() function for running as an application. * Takes a kinemage on stdin and writes tokens to stdout */ public void Main() { System.out.println("Read "+kinemages.size()+" kinemages:"); for(Iterator ki = kinemages.iterator(); ki.hasNext(); ) { kinemage = (Kinemage)ki.next(); System.out.println(" Kinemage: "+kinemage.getName()+" ("+kinemage.children.size()+" groups)"); for(Iterator gi = kinemage.iterator(); gi.hasNext(); ) { group = (KGroup)gi.next(); System.out.println(" Group: "+group.getName()+" ("+group.children.size()+" subgroups)"); for(Iterator si = group.iterator(); si.hasNext(); ) { subgroup = (KSubgroup)si.next(); System.out.println(" Subgroup: "+subgroup.getName()+" ("+subgroup.children.size()+" lists)"); for(Iterator li = subgroup.iterator(); li.hasNext(); ) { list = (KList)li.next(); System.out.println(" List: "+list.getName()+" ("+list.children.size()+" points)"); } } } } System.out.println(); System.out.println(); } public static void main(String[] args) { try { Reader input = new InputStreamReader(System.in); if(args.length > 0) { System.err.println("*** Takes a kinemage on stdin or as first arg and writes structure to stdout."); input = new FileReader(args[0]); } long time = System.currentTimeMillis(); KinfileParser parser = new KinfileParser(); parser.parse(new LineNumberReader(input)); time = System.currentTimeMillis() - time; System.out.println("END OF FILE ("+time+" ms)"); System.gc(); System.out.println("Using "+(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory())+" bytes"); parser.Main(); } catch(Throwable t) { t.printStackTrace(SoftLog.err); } } //}}} }//class king-2.21.120420/king/1.x_src/king/core/StandardPainter.java0000644000000000000000000003360011531212670021626 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * StandardPainter paints kinemage graphics using standard calls * on a java.awt.Graphics object. Must be initialized with setGraphics() * before use! * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Fri May 21 19:11:16 EDT 2004 */ public class StandardPainter implements Painter { //{{{ Constants /* * Useful for benchmarking. Setting to false keeps us from drawing to screen. * This should optimize away at compile time, like #ifdef in C. * * On my G4 PowerBook, transforming and all the paint calcs account for * only about 10% of the total time required to render one frame. */ protected static final boolean REALLY_PAINT = true; //}}} //{{{ Variable definitions //############################################################################## boolean forceAA; Graphics2D g = null; Font font = null; FontMetrics metrics = null; Rectangle clipRgn = new Rectangle(0,0,1,1); int[] xPoints = new int[6]; int[] yPoints = new int[6]; //}}} //{{{ Constructor(s) //############################################################################## public StandardPainter(boolean forceAntialiasing) { super(); this.forceAA = forceAntialiasing; } //}}} //{{{ paintBall //################################################################################################## public void paintBall(Paint paint, double x, double y, double z, double r, boolean showHighlight) { int d = (int)(2.0*r + 0.5); if(d < 2) d = 2; // make sure balls don't disappear // one disk g.setPaint(paint); if(REALLY_PAINT) g.fillOval((int)(x-r), (int)(y-r), d, d); // Black rim, causes ~10% speed penalty but useful for visualization! try { Color c = (Color) paint; if(d >= 10 && c.getAlpha() == 255) { g.setPaint(KPaint.black); // wants to merge with the background if(REALLY_PAINT) g.drawOval((int)(x-r), (int)(y-r), d, d); } } catch(ClassCastException ex) { ex.printStackTrace(); System.err.println("StandardPainter: tried painting with non-Color type of Paint"); } // highlight if(showHighlight) { double off = 0.5 * r; d = (int)(0.3*r)+1; g.setPaint(Color.white); // wants to be bright white no matter what if(REALLY_PAINT) g.fillOval((int)(x-off), (int)(y-off), d, d); } } //}}} //{{{ paintDot //################################################################################################## public void paintDot(Paint paint, double x, double y, double z, int width) { int off = width/2; g.setPaint(paint); if(REALLY_PAINT) g.fillRect((int)(x-off), (int)(y-off), width, width); } //}}} //{{{ paintLabel //################################################################################################## public void paintLabel(Paint paint, String label, double x, double y, double z) { g.setPaint(paint); g.setFont(font); if(REALLY_PAINT) g.drawString(label, (int)x, (int)y); } //}}} //{{{ paintMarker //################################################################################################## public void paintMarker(Paint paint, double x, double y, double z, int width, int paintStyle) { int cx = (int)x, cy = (int)y; int one = width, two = 2*width, three = 3*width, four = 4*width, five = 5*width, six = 6*width, seven = 7*width, ten = 10*width, eleven = 11*width; g.setPaint(paint); if(REALLY_PAINT) { // Large discs and boxes if((paintStyle & MarkerPoint.BOX_L) != 0) g.fillRect(cx-five, cy-five, eleven, eleven); else if((paintStyle & MarkerPoint.DISC_L) != 0) g.fillOval(cx-five, cy-five, eleven, eleven); // Medium discs and boxes if((paintStyle & MarkerPoint.BOX_M) != 0) g.fillRect(cx-three, cy-three, seven, seven); else if((paintStyle & MarkerPoint.DISC_M) != 0) g.fillOval(cx-three, cy-three, seven, seven); // Small discs and boxes if((paintStyle & MarkerPoint.BOX_S) != 0) g.fillRect(cx-one, cy-one, three, three); else if((paintStyle & MarkerPoint.DISC_S) != 0) g.fillOval(cx-one, cy-one, three, three); // Crosses if((paintStyle & MarkerPoint.CROSS_S) != 0) { g.drawLine(cx, cy-one, cx, cy+one); g.drawLine(cx-one, cy, cx+one, cy); } if((paintStyle & MarkerPoint.CROSS_M) != 0) { g.drawLine(cx, cy-three, cx, cy+three); g.drawLine(cx-three, cy, cx+three, cy); } if((paintStyle & MarkerPoint.CROSS_L) != 0) { g.drawLine(cx, cy-five, cx, cy+five); g.drawLine(cx-five, cy, cx+five, cy); } if((paintStyle & MarkerPoint.CROSS_2) != 0) { g.drawLine(cx-one, cy-five, cx-one, cy+five); g.drawLine(cx+one, cy-five, cx+one, cy+five); g.drawLine(cx-five, cy-one, cx+five, cy-one); g.drawLine(cx-five, cy+one, cx+five, cy+one); } // X's if((paintStyle & MarkerPoint.X_S) != 0) { g.drawLine(cx-one, cy-one, cx+one, cy+one); g.drawLine(cx-one, cy+one, cx+one, cy-one); } if((paintStyle & MarkerPoint.X_M) != 0) { g.drawLine(cx-three, cy-three, cx+three, cy+three); g.drawLine(cx-three, cy+three, cx+three, cy-three); } if((paintStyle & MarkerPoint.X_L) != 0) { g.drawLine(cx-five, cy-five, cx+five, cy+five); g.drawLine(cx-five, cy+five, cx+five, cy-five); } if((paintStyle & MarkerPoint.X_2) != 0) { g.drawLine(cx-four, cy-five, cx+five, cy+four); g.drawLine(cx-five, cy-four, cx+four, cy+five); g.drawLine(cx-four, cy+five, cx+five, cy-four); g.drawLine(cx-five, cy+four, cx+four, cy-five); } // Squares if((paintStyle & MarkerPoint.SQUARE_S) != 0) g.drawRect(cx-one, cy-one, two, two); if((paintStyle & MarkerPoint.SQUARE_M) != 0) g.drawRect(cx-three, cy-three, six, six); if((paintStyle & MarkerPoint.SQUARE_L) != 0) g.drawRect(cx-five, cy-five, ten, ten); // Circles if((paintStyle & MarkerPoint.RING_S) != 0) g.drawOval(cx-one, cy-one, two, two); if((paintStyle & MarkerPoint.RING_M) != 0) g.drawOval(cx-three, cy-three, six, six); if((paintStyle & MarkerPoint.RING_L) != 0) g.drawOval(cx-five, cy-five, ten, ten); } } //}}} //{{{ paintSphereDisk //################################################################################################## public void paintSphereDisk(Paint paint, double x, double y, double z, double r) { int d = (int)(2.0*r + 0.5); if(d < 2) d = 2; // make sure balls don't disappear // one disk g.setPaint(paint); if(REALLY_PAINT) g.fillOval((int)(x-r), (int)(y-r), d, d); } //}}} //{{{ paintTriangle //################################################################################################## public void paintTriangle(Paint paint, double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3) { g.setPaint(paint); xPoints[0] = (int)x1; yPoints[0] = (int)y1; xPoints[1] = (int)x2; yPoints[1] = (int)y2; xPoints[2] = (int)x3; yPoints[2] = (int)y3; if(REALLY_PAINT) g.fillPolygon(xPoints, yPoints, 3); } //}}} //{{{ paintVector //################################################################################################## public void paintVector(Paint paint, int width, int widthCue, double x1, double y1, double z1, double x2, double y2, double z2) { g.setPaint(paint); if(REALLY_PAINT) prettyLine((int)x1, (int)y1, (int)x2, (int)y2, KPalette.lineWidths[width-1][widthCue]); } //}}} //{{{ prettyLine //################################################################################################## /** Draws a thick line with nice ends, using fillPolygon(). Slightly slower (30-35%) than fastLine(). */ void prettyLine(int x1, int y1, int x2, int y2, int width) { int s, e, abs_x2_x1, abs_y2_y1; s = -width / 2; // Start offset e = s + width; // End offset abs_x2_x1 = Math.abs(x2 - x1); abs_y2_y1 = Math.abs(y2 - y1); // horizontal -- if( abs_x2_x1 > abs_y2_y1 ) { // left to right if( x1 < x2 ) { xPoints[0] = x1 ; xPoints[1] = x1+s; xPoints[2] = x1; xPoints[3] = x2; xPoints[4] = x2-s; xPoints[5] = x2; yPoints[0] = y1+s; yPoints[1] = y1; yPoints[2] = y1+e; yPoints[3] = y2+e; yPoints[4] = y2; yPoints[5] = y2+s; } // right to left else { xPoints[0] = x1 ; xPoints[1] = x1-s; xPoints[2] = x1; xPoints[3] = x2; xPoints[4] = x2+s; xPoints[5] = x2; yPoints[0] = y1+s; yPoints[1] = y1; yPoints[2] = y1+e; yPoints[3] = y2+e; yPoints[4] = y2; yPoints[5] = y2+s; } } // vertical | else { // top to bottom if( y1 < y2 ) { xPoints[0] = x1+s; xPoints[1] = x1; xPoints[2] = x1+e; xPoints[3] = x2+e; xPoints[4] = x2; xPoints[5] = x2+s; yPoints[0] = y1 ; yPoints[1] = y1+s; yPoints[2] = y1; yPoints[3] = y2; yPoints[4] = y2-s; yPoints[5] = y2; } // bottom to top else { xPoints[0] = x1+s; xPoints[1] = x1; xPoints[2] = x1+e; xPoints[3] = x2+e; xPoints[4] = x2; xPoints[5] = x2+s; yPoints[0] = y1 ; yPoints[1] = y1-s; yPoints[2] = y1; yPoints[3] = y2; yPoints[4] = y2+s; yPoints[5] = y2; } } g.fillPolygon(xPoints, yPoints, 6); } //}}} //{{{ fastLine //################################################################################################## /** Draws a thick line using multiple calls to drawLine(). Not as robust as prettyLine(), but slightly faster. */ void fastLine(int x1, int y1, int x2, int y2, int width) { g.drawLine(x1, y1, x2, y2); // Then, draw more lines until we get to the approximate thickness. // This idea is borrowed from JavaMage, and possibly regular Mage, too. // The plan is to step along x if it's a mostly vertical line, along y if it's mostly horizontal int start, end, i; start = -width/2; end = start + width; // step along y if( Math.abs(x2-x1) > Math.abs(y2-y1) ) { for(i = start; i < 0; i++) g.drawLine(x1, y1+i, x2, y2+i); for(i = 1; i < end; i++) g.drawLine(x1, y1+i, x2, y2+i); } // step along x else { for(i = start; i < 0; i++) g.drawLine(x1+i, y1, x2+i, y2); for(i = 1; i < end; i++) g.drawLine(x1+i, y1, x2+i, y2); } } //}}} //{{{ drawOval //################################################################################################## public void drawOval(Paint paint, double x, double y, double z, double width, double height) { // one disk g.setPaint(paint); if(REALLY_PAINT) g.drawOval((int)(x - width/2), (int)(y - height/2), (int)width, (int)height); } public void drawOval(Paint paint, int linewidth, int widthCue, double x, double y, double z, double width, double height) { g.setPaint(paint); int startx = (int)(x - width/2.0 - linewidth/2.0); int starty = (int)(y - height/2.0 - linewidth/2.0); int diamx = (int)( width + linewidth); int diamy = (int)(height + linewidth); if(REALLY_PAINT) { for(int i = 0; i < linewidth; i++) { g.drawOval(startx, starty, diamx, diamy); startx += 1; starty += 1; diamx -= 2; diamy -= 2; } } } //}}} //{{{ setGraphics, setFont, getLabelWidth/Ascent/Descent //############################################################################## /** Sets the Graphics object this painter will use for painting. */ public void setGraphics(Graphics2D g2) { this.g = g2; if(forceAA) this.g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); if(font != null) this.metrics = g.getFontMetrics(font); } public void setFont(Font f) { this.font = f; if(g != null) this.metrics = g.getFontMetrics(f); } public int getLabelWidth(String s) { return metrics.stringWidth(s); } public int getLabelAscent(String s) { return metrics.getAscent(); } public int getLabelDescent(String s) { return metrics.getDescent(); } //}}} //{{{ setViewport, clearCanvas //############################################################################## public void setViewport(int x, int y, int width, int height) { clipRgn.setBounds(x, y, width, height); g.setClip(clipRgn); } public void clearCanvas(Color color) { g.setColor(color); if(REALLY_PAINT) g.fillRect(clipRgn.x, clipRgn.y, clipRgn.width, clipRgn.height); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/KinfileTokenizer.java0000644000000000000000000004352111531212670022022 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * KinfileTokenizer is a second-generation implementation * of a tokenizer that complies with the Kinemage File Format, v1.0. * * It takes in a stream of characters and outputs discrete tokens, * stripped of whitespace and quoting characters. * [Equals signs (=) and at signs (@) are preserved.] * * It currently does not check for the presence of illegal characters. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Apr 7 13:34:38 EDT 2003 */ public class KinfileTokenizer //extends ... implements ... { //{{{ Constants static final String TYPE_NONE = "nil-type"; static final String TYPE_IDENTIFIER = "identifier"; static final String TYPE_COMMENT = "comment"; static final String TYPE_ASPECT = "aspect"; static final String TYPE_SINGLE_QUOTE = "s-quote"; static final String TYPE_DOUBLE_QUOTE = "d-quote"; static final String TYPE_KEYWORD = "keyword"; static final String TYPE_PROPERTY = "property"; static final String TYPE_INTEGER = "integer"; static final String TYPE_NUMBER = "number"; static final String TYPE_LITERAL = "literal"; static final int NIL_CHARACTER = -1; //}}} //{{{ Variable definitions //################################################################################################## LineNumberReader in; char[] buffer = new char[256]; int bufferIndex = 0; int firstChar; // first char of next token long charsRead; // a count of how many characters we've read String stringValue; double doubleValue; String type; boolean isBOL; boolean isEOF; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new KinfileTokenizer on the given input stream, * and advances it to the first token. * @throws IOException if there's a problem reading from the input stream */ public KinfileTokenizer(LineNumberReader input) throws IOException { in = input; charsRead = 0; isEOF = false; // A trick -- this makes the tokenizer think that // the first token is at the beginning of a line. firstChar = '\n'; advance(); } //}}} //{{{ buffer{Append, ToString, Clear} //################################################################################################## /** * We use our own custom buffer system because * StringBuffers allocate memory 16 chars (32 bytes) * at a time, which is then wasted when we convert * them to Strings. */ void bufferAppend(char ch) { if(bufferIndex >= buffer.length) { char[] newBuffer = new char[buffer.length * 2]; System.arraycopy(buffer, 0, newBuffer, 0, buffer.length); buffer = newBuffer; error("Token too long; increased buffer size to "+buffer.length); } buffer[bufferIndex++] = ch; } /** Returns the current buffer contents as a string */ String bufferToString() { return new String(buffer, 0, bufferIndex); } /** Empties the buffer contents */ void bufferClear() { bufferIndex = 0; } //}}} //{{{ in_read, getCharsRead, error //################################################################################################## /** * A replacement for in.read() that allows us to track the * total number of character read so far. * Causes a performance penalty of less than 1%. */ int in_read() throws IOException { charsRead++; return in.read(); } /** Returns the number of characters read in thus far */ public long getCharsRead() { return charsRead; } void error(String msg) { SoftLog.err.println("[line "+(in.getLineNumber()+1)+"] "+msg); } //}}} //{{{ advance //################################################################################################## /** * Advances this tokenizer to the next token in the stream. * The type of token can be queried with the isXXX() functions, * and the value (in the appropriate form) can be retrieved with the getXXX() functions. * @throws IOException if there's a problem reading from the input stream */ public void advance() throws IOException { int c; // Init variables stringValue = null; doubleValue = Double.NaN; type = TYPE_NONE; isBOL = false; bufferClear(); // Get first character (from stream or previously read) if(firstChar > 0) c = firstChar; else c = in_read(); firstChar = NIL_CHARACTER; // Skip leading whitespace while(c == ' ' || c == '\n' || c == ',' || c == '\t' || c == '\f') { // LNR translates all linefeeds into '\n' isBOL = (c == '\n'); c = in_read(); } // Guess token type based on first character if(c == -1) { isEOF = true; return; } else if(c == '{') { readQuoted('{', '}'); type = TYPE_IDENTIFIER; } else if(c == '<') { readQuoted('<', '>'); type = TYPE_COMMENT; } else if(c == '(') { readQuoted('(', ')'); type = TYPE_ASPECT; } else if(c == '\'') { readQuoted('\''); type = TYPE_SINGLE_QUOTE; } else if(c == '"') { readQuoted('"'); type = TYPE_DOUBLE_QUOTE; } else { bufferAppend((char)c); readUnquoted(); // type is set in readUnquoted() } bufferClear(); } //}}} //{{{ advanceToKeyword //################################################################################################## /** * Reads ahead until encountering a keyword token, * one that begins with an at sign (@) at the beginning of a line. * All the characters from the current position to the * start of the keyword are returned by this function. * @throws IOException if there's a problem reading from the input stream */ public String advanceToKeyword() throws IOException { int c; // Init variables stringValue = null; doubleValue = Double.NaN; type = TYPE_NONE; isBOL = false; bufferClear(); // Get first character (from stream or previously read) if(firstChar > 0) c = firstChar; else c = in_read(); firstChar = NIL_CHARACTER; // Read until we find a keyword StringBuffer longBuf = new StringBuffer(1024); while(!(isBOL && c == '@')) { longBuf.append((char)c); // LNR translates all linefeeds into '\n' isBOL = (c == '\n'); c = in_read(); if(c == -1) { isEOF = true; return longBuf.toString(); } } String retVal = longBuf.toString(); bufferAppend((char)c); readUnquoted(); bufferClear(); return retVal; } //}}} //{{{ readQuoted //################################################################################################## /** Sets stringValue and doubleValue; appends characters to buffer */ void readQuoted(char open, char close) throws IOException { int c, depth = 1; while(depth > 0) { c = in_read(); if(c == -1) { depth = 0; error("Quoted token terminated by EOF; type = "+open+""+close); } else if(c == open) { ++depth; bufferAppend((char)c); } else if(c == close) { if(--depth > 0) bufferAppend((char)c); } else bufferAppend((char)c); } stringValue = bufferToString(); doubleValue = Double.NaN; } /** Sets stringValue and doubleValue; appends characters to buffer */ void readQuoted(char close) throws IOException { int c, depth = 1; while(depth > 0) { c = in_read(); if(c == -1) { depth = 0; error("Quoted token terminated by EOF; type = "+close+""+close); } else if(c == close) depth--; else bufferAppend((char)c); } stringValue = bufferToString(); doubleValue = Double.NaN; } //}}} //{{{ readUnquoted //################################################################################################## /** Sets stringValue, doubleValue, and type; appends characters to buffer */ void readUnquoted() throws IOException { int c; while(true) { c = in_read(); if(c == -1 || c == ' ' || c == '\n' || c == ',' || c == '\t' || c == '\f' || c == '{' || c == '<' || c == '(' || c == '\'' || c == '"') { firstChar = c; break; } else if(c == '=') { bufferAppend((char)c); break; } else bufferAppend((char)c); } /* This block allows spaces (but not newlines) to come between the word and the equals sign */ while(c == ' ' || c == ',' || c == '\t') { c = in_read(); if(c == '=') { bufferAppend('='); firstChar = NIL_CHARACTER; } else firstChar = c; } /* This block allows spaces (but not newlines) to come between the word and the equals sign */ stringValue = bufferToString(); doubleValue = Double.NaN; c = stringValue.charAt(0); if(stringValue.startsWith("@") && isBOL()) type = TYPE_KEYWORD; else if(stringValue.endsWith("=")) type = TYPE_PROPERTY; else if(('0' <= c && c <= '9') || c == '.' || c == '-' || c == '+') { try { doubleValue = Double.parseDouble(stringValue); if(doubleValue == Math.rint(doubleValue)) type = TYPE_INTEGER; else type = TYPE_NUMBER; } catch(NumberFormatException ex) { type = TYPE_LITERAL; } } else type = TYPE_LITERAL; } //}}} //{{{ is{BOL, EOF, etc}, getType //################################################################################################## /** Returns true if the current token occured at the Beginning Of a Line */ public boolean isBOL() { return isBOL; } /** Returns true if we've reached the End Of File */ public boolean isEOF() { return isEOF; } /** Returns true if the current token is an identifier */ public boolean isIdentifier() { return (type == TYPE_IDENTIFIER); } /** Returns true if the current token is a comment */ public boolean isComment() { return (type == TYPE_COMMENT); } /** Returns true if the current token is an aspect */ public boolean isAspect() { return (type == TYPE_ASPECT); } /** Returns true if the current token is single quoted */ public boolean isSingleQuote() { return (type == TYPE_SINGLE_QUOTE); } /** Returns true if the current token is double quoted */ public boolean isDoubleQuote() { return (type == TYPE_DOUBLE_QUOTE); } /** Returns true if the current token is a keyword */ public boolean isKeyword() { return (type == TYPE_KEYWORD); } /** Returns true if the current token is a property */ public boolean isProperty() { return (type == TYPE_PROPERTY); } /** Returns true if the current token is an integer */ public boolean isInteger() { return (type == TYPE_INTEGER); } /** Returns true if the current token is some kind of number */ public boolean isNumber() { return (type == TYPE_NUMBER || type == TYPE_INTEGER); } /** Returns true if the current token is a string literal */ public boolean isLiteral() { return (type == TYPE_LITERAL); } /** Returns the type of the current token as a string */ public String getType() { return type; } //}}} //{{{ get{String, Int, Float, Double} //################################################################################################## /** * Returns the value of the current token as a string, * or null if there is no token available. */ public String getString() { //if(stringValue == null) // throw new IllegalStateException("No token is available"); return stringValue; } /** * Returns the value of the current token as an integer. * @throws IllegalStateException if the token is not an integer */ public int getInt() { if(!isInteger() || Double.isNaN(doubleValue) || doubleValue != Math.rint(doubleValue)) throw new IllegalStateException("[line "+(in.getLineNumber()+1)+"] Token is not an integer"); return (int)doubleValue; } /** * Returns the value of the current token as a float. * @throws IllegalStateException if the token is not a number */ public float getFloat() { if(!isNumber() || Double.isNaN(doubleValue)) throw new IllegalStateException("[line "+(in.getLineNumber()+1)+"] Token is not a number"); return (float)doubleValue; } /** * Returns the value of the current token as a double. * @throws IllegalStateException if the token is not a number */ public double getDouble() { if(!isNumber() || Double.isNaN(doubleValue)) throw new IllegalStateException("[line "+(in.getLineNumber()+1)+"] Token is not a number"); return doubleValue; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ Main() and main() //################################################################################################## /** * Main() function for running as an application. * Takes a kinemage on stdin and writes tokens to stdout */ public void Main(boolean doCSS) throws IOException { if(doCSS) { System.out.println("

"); while(!isEOF()) { String start, end, s = getString(); if(isBOL()) System.out.print("\n
"); if(isIdentifier()) { start = "{"; end = "}"; } else if(isComment()) { start = "<"; end = ">"; } else if(isAspect()) { start = "("; end = ")"; } else if(isSingleQuote()) { start = "'"; end = "'"; } else if(isDoubleQuote()) { start = "\""; end = "\""; } else { start = ""; end = ""; } System.out.print(""+start+s+end+" "); if(isKeyword() && (s.equals("@text") || s.equals("@caption"))) { System.out.print("\n
");
                    System.out.print(advanceToKeyword());
                    System.out.print("
\n"); } else advance(); } System.out.println("\n
"); } else { String s; long time = System.currentTimeMillis(); while(!isEOF()) { s = getString(); if(isKeyword() && (s.equals("@text") || s.equals("@caption"))) { System.out.println("[>>> "+s+"]"); System.out.println(advanceToKeyword()); System.out.println("[<<< "+s+"]"); } else { if(isBOL()) System.out.println("[BOL:"+justifyLeft(getType(), 10)+"] "+s); else System.out.println("[ "+justifyLeft(getType(), 10)+"] "+s); advance(); } } time = System.currentTimeMillis() - time; System.out.println("END OF FILE ("+time+" ms)"); System.out.println(); System.out.println(); } } public static void main(String[] args) { boolean doCSS = false; for(int i = 0; i < args.length; i++) { if("-css".equals(args[i])) doCSS = true; else System.err.println("*** Takes a kinemage on stdin and writes tokens to stdout."); } try { new KinfileTokenizer(new LineNumberReader(new InputStreamReader(System.in))).Main(doCSS); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } //}}} //{{{ justifyLeft //################################################################################################## /** * Pads a string with spaces and left-justifies it. * * @param s the string to justify * @param len the desired length */ public static String justifyLeft(String s, int len) { StringBuffer sb = new StringBuffer(s); sb.ensureCapacity(len); for(int i = s.length(); i < len; i++) sb.append(' '); return sb.toString(); } //}}} }//class king-2.21.120420/king/1.x_src/king/core/TransformSignalSubscriber.java0000644000000000000000000000253211531212670023700 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * TransformSignalSubscriber allows objects to * receive signals from a TransformSignal. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Mar 27 10:32:24 EST 2003 */ public interface TransformSignalSubscriber //extends ... implements ... { /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void signalTransform(Engine engine, Transform xform); }//class king-2.21.120420/king/1.x_src/king/core/KinemageSignal.java0000644000000000000000000001025611531212670021423 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * KinemageSignal provides a reusable framework * for publish-subscribe message passing. * This signal is used to notify listeners of changes to a kinemage. * * This signal is not thread-safe. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Mar 27 10:11:30 EST 2003 */ public class KinemageSignal implements KinemageSignalSubscriber { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## ArrayList subscribers; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public KinemageSignal() { subscribers = new ArrayList(); } //}}} //{{{ signalKinemage //################################################################################################## /** * A call to this method will publish this signal (i.e., call this method) * for each subscriber, one at a time, in the current thread. * Because this class also implements the subscriber interface, * these signals can be chained together to create deep networks. * * @param kinemage the Kinemage object that has changed * @param bitmask a set of flags describing which properties have changed. */ public void signalKinemage(Kinemage kinemage, int bitmask) { KinemageSignalSubscriber subscriber; Iterator iter = subscribers.iterator(); while(iter.hasNext()) { subscriber = (KinemageSignalSubscriber)iter.next(); subscriber.signalKinemage(kinemage, bitmask); } } //}}} //{{{ subscribe, getSubscribers //################################################################################################## /** * Adds a subscriber to this signal. The subscriber will be notified * whenever this signal is activated. Every subscriber must be unique, * so if there is some current subscriber oldSubscriber such that * newSubscriber.equals(oldSubscriber), then oldSubscriber * will be removed before newSubscriber is added. * *

Subscribers are notified in the same order they were added; however, * they should NOT rely on this as it may change in future implementations. */ public void subscribe(KinemageSignalSubscriber newSubscriber) { if(newSubscriber == null) return; int i = subscribers.indexOf(newSubscriber); if(i != -1) subscribers.remove(i); subscribers.add(newSubscriber); } /** Returns an unmodifiable Collection of the current subscriber list */ public Collection getSubscribers() { return Collections.unmodifiableCollection(subscribers); } //}}} //{{{ unsubscribe, unsubscribeAll //################################################################################################## /** * Removes a subscriber from this signal; the subscriber will no * longer be notified when this signal is activated. * @return the subscriber that was removed, or null if oldSubscriber was not subscribed */ public KinemageSignalSubscriber unsubscribe(KinemageSignalSubscriber oldSubscriber) { if(oldSubscriber == null) return null; int i = subscribers.indexOf(oldSubscriber); if(i != -1) return (KinemageSignalSubscriber)subscribers.remove(i); else return null; } /** * Removes all subscribers from this signal's distribution list. */ public void unsubscribeAll() { subscribers.clear(); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/KSubgroup.java0000644000000000000000000000705311531212670020467 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import javax.swing.tree.*; //}}} /** * KSubgroup is the KiNG implementation of a Mage subgroup. * *

Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 12:10:01 EDT 2002 */ public class KSubgroup extends AGE implements Cloneable { //{{{ Variable definitions //################################################################################################## KGroup parent = null; //}}} //{{{ Constructor(s) //################################################################################################## /** Constructor */ public KSubgroup() { children = new ArrayList(10); setName(null); } /** Constructor */ public KSubgroup(KGroup owner, String nm) { children = new ArrayList(10); setOwner(owner); setName(nm); } //}}} //{{{ clone //################################################################################################## /** * Creates a copy of this group and all its children. * @param clonePoints whether to clone even the individual points, * or whether we should use instance= at the list level instead. */ public Object clone(boolean clonePoints) { try { KSubgroup x = (KSubgroup) super.clone(clonePoints); x.setName( x.getName() ); // tricks it into creating a new JCheckBox object // Deep copy of children x.children = new ArrayList(); for(Iterator iter = this.children.iterator(); iter.hasNext(); ) { KList child = (KList) iter.next(); KList clone = (KList) child.clone(clonePoints); clone.setOwner(x); x.add(clone); } // Semi-deep copy of masters, which just contains Strings if(this.masters != null) x.masters = new ArrayList(this.masters); return x; } catch(CloneNotSupportedException ex) { throw new Error("Clone failed in cloneable object"); } } //}}} //{{{ get/setOwner() //################################################################################################## /** Determines the owner (parent) of this element */ public AGE getOwner() { return parent; } /** Establishes the owner (parent) of this element */ public void setOwner(AGE owner) { parent = (KGroup)owner; } //}}} //{{{ add() //################################################################################################## /** Adds a child to this element */ public void add(KList child) { children.add(child); } //}}} //{{{ MutableTreeNode functions -- insert() //################################################################################################## public void insert(MutableTreeNode child, int index) { if(! (child instanceof KList)) throw new IllegalArgumentException("Subgroups can only contain lists!"); if(index < 0 || index > children.size()) children.add(child); else children.add(index, child); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/Kinemage.java0000644000000000000000000007417611531212670020300 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.tree.*; import driftwood.data.*; import java.util.List; //}}} /** * Kinemage is the top-level container that holds one whole kinemage worth of data. * *

Copyright (C) 2002-2003 by Ian W. Davis. All rights reserved. *
Begun on Fri May 24 21:45:03 EDT 2002 */ public class Kinemage extends AGE // implements ... { //{{{ Variable definitions //################################################################################################## /** Called when stuff changes */ public KinemageSignal signal = new KinemageSignal(); /** * A Map for storing arbitrary information that should be associated with the kinemage. * Everyone is expected to play nice and use some sort of unique String as a key. */ public Map metadata = new HashMap(); // Variables that control the appearance of this kinemage // These are updated by the user picking from the Display menu public boolean atWhitebackground = false; public boolean atOnewidth = false; public boolean atThinline = false; public boolean atPerspective = false; public boolean atFlat = false; public boolean atListcolordominant = false; public double atLens = 0.0; // Other information fields often contained in a kinemage public String atPdbfile = null; public String atCommand = null; // Collection of labels for high-D kins public Collection dimensionNames = new ArrayList(); // Collection of min,max,min,max,... for high-D kins public List dimensionMinMax = new ArrayList(); KingView currView = null; java.util.List viewList = new ArrayList(); float[] boundingBox = null; float[] center = {0f, 0f, 0f}; float span = 0f; // For looking up standard and custom colors Map allColorMap; Map newColorMap; Map unmodAllColorMap = null; Map unmodNewColorMap = null; // For managing aspects public Aspect currAspect = null; java.util.List aspectList = new ArrayList(); // For looking up masters by name Map mastersMap = new HashMap(); // For iterating thru the masters in order of creation java.util.List mastersList = new ArrayList(); Component masterSpacer = Box.createRigidArea(new Dimension(0,15)); // For assigning pointmasters to bitfield positions public String pmLookup = ""; // no pointmasters defined initially // Each kinemage has its own TreeModel DefaultTreeModel treeModel; // For tracking whether edits have been saved boolean modified = false; // For storing bondRots Collection bondRots = null; //}}} //{{{ Constructors //################################################################################################## /** * Creates a new container in the data hierarchy. * * @param nm the ID of this group */ public Kinemage(String nm) { children = new ArrayList(10); setName(nm); treeModel = new DefaultTreeModel(this, true); allColorMap = new UberMap(KPalette.getFullMap()); newColorMap = new UberMap(); } //}}} //{{{ appendKinemage //################################################################################################## /** Merges a kinemage into this one. That kinemage should be discarded afterwards. */ public void appendKinemage(Kinemage that) { atWhitebackground = this.atWhitebackground || that.atWhitebackground; atOnewidth = this.atOnewidth || that.atOnewidth; atThinline = this.atThinline || that.atThinline; atPerspective = this.atPerspective || that.atPerspective; atFlat = this.atFlat || that.atFlat; atListcolordominant = this.atListcolordominant || that.atListcolordominant; if(this.atPdbfile == null) atPdbfile = that.atPdbfile; if(this.atCommand == null) atCommand = that.atCommand; //viewList.addAll( that.viewList); for(Iterator iter = that.viewList.iterator(); iter.hasNext(); ) { KingView view = (KingView) iter.next(); view.parent = this; this.viewList.add(view); } //aspectList.addAll( that.aspectList); for(Iterator iter = that.aspectList.iterator(); iter.hasNext(); ) { Aspect aspect = (Aspect) iter.next(); aspect.parent = this; this.aspectList.add(aspect); } // Merge the colorsets for(Iterator iter = that.getNewPaintMap().values().iterator(); iter.hasNext(); ) this.addPaint((KPaint)iter.next()); // Merge the masters. This is a little tricky due to pointmasters. boolean convertPointmasters = false; for(Iterator iter = that.mastersList.iterator(); iter.hasNext(); ) { MasterGroup m2 = (MasterGroup)iter.next(); // Convert bitmasks from old kin to new kin correspondences if(m2.pm_mask != 0) { m2.pm_mask = this.toPmBitmask(that.fromPmBitmask(m2.pm_mask), true, false); convertPointmasters = true; } MasterGroup m1 = (MasterGroup)this.mastersMap.get(m2.getName()); if(m1 == null) { m2.setOwner(this); this.mastersMap.put(m2.getName(), m2); this.mastersList.add(m2); } else { // This isn't ideal -- what if the bits in m2 are also set // in some other master belonging to this? // But it's about the best we can do. m1.pm_mask |= m2.pm_mask; } } // Finish merging the masters by converting point's pointmaster masks. // Each point is visited just once b/c instance= lists have no children of their own. if(convertPointmasters) { RecursivePointIterator iter = new RecursivePointIterator(that); while(iter.hasNext()) { KPoint p = iter.next(); p.setPmMask(this.toPmBitmask(that.fromPmBitmask(p.getPmMask()))); } } for(Iterator iter = that.iterator(); iter.hasNext(); ) { KGroup group = (KGroup)iter.next(); group.setOwner(this); this.add(group); } // Pass false to avoid removing unused groups, masters in kinemage "this". // Otherwise, (for instance) we may delete the mobile sidechain used by Chiropraxis tools. this.initAll(false); // gets us back to a consistent state } //}}} //{{{ get/setOwner, getKinemage //################################################################################################## /** Determines the owner (parent) of this element */ public AGE getOwner() { return null; } /** Establishes the owner (parent) of this element */ public void setOwner(AGE owner) {} /** Retrieves the Kinemage object holding this element */ public Kinemage getKinemage() { return this; } //}}} //{{{ is/setOn, (set)hasButton, is/setDominant //################################################################################################## /** Indicates whether this element will paint itself, given the chance */ public boolean isOn() { return true; } /** Sets the painting status of this element */ public void setOn(boolean paint) {} /** Indicates whether this element would display a button, given the chance */ public boolean hasButton() { return false; } /** Sets whether this element would display a button, given the chance */ public void setHasButton(boolean b) {} /** Indicates whether this element supresses buttons of elements below it */ public boolean isDominant() { return false; } /** Sets whether this element supresses buttons of elements below it */ public void setDominant(boolean b) {} //}}} //{{{ add, replace, initAll, getTreeModel, MutableTreeNode functions //################################################################################################## /** Adds a child to this element */ public void add(KGroup child) { children.add(child); } /** * Replaces oldChild with newChild, or performs an add() * of newChild if oldChild couldn't be found as part of the kinemage. * This is very useful for things like Mage's Remote Update. * @return the group actually replaced, or null for none */ public KGroup replace(KGroup oldChild, KGroup newChild) { int idx = children.indexOf(oldChild); if(idx == -1) { add(newChild); return null; } else return (KGroup)children.set(idx, newChild); } /** * Convenience function to call after constructing a kinemage from a file * and before displaying it. This takes care of the following: *

    *
  1. calcSize() -- re-computes size of the kinemage
  2. *
  3. ensureAllMastersExist() -- creates any missing masters
  4. *
  5. syncAllMasters() -- set masters' states appropriately
  6. *
  7. initAllViews() -- converts zooms to spans as necessary
  8. *
  9. animate(0) and animate2(0) -- initializes animations
  10. *
* @param cleanEmpties if true (the default), remove groups/subgroups/lists * that contain no points and remove unused masters. */ public void initAll(boolean cleanEmpties) { if(cleanEmpties) removeEmptyAGEs(); calcSize(); ensureAllMastersExist(); if(cleanEmpties) removeUnusedMasters(); syncAllMasters(); initAllViews(); animate(0); if(!hasAnimateGroups()) animate2(0); // turns off animate group that was just turned on } public void initAll() { initAll(true); } public DefaultTreeModel getTreeModel() { return treeModel; } public void insert(MutableTreeNode child, int index) { if(! (child instanceof KGroup)) throw new IllegalArgumentException("Kinemages can only contain groups!"); if(index < 0 || index > children.size()) children.add(child); else children.add(index, child); } public void removeFromParent() {} //}}} //{{{ cboxHit, notifyCboxHit, buildButtons //################################################################################################## /** Called when the associated checkbox is turned on/off */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void cboxHit(ActionEvent ev) {} /** Propagates notice upward that a checkbox was turned on/off */ public void notifyCboxHit() { //kMain.notifyChange(kMain.EM_ON_OFF); signal.signalKinemage(this, signal.APPEARANCE); } /** Builds a grouping of Mage-style on/off buttons in the specified container. */ public Container buildButtons() { ensureAllMastersExist(); Box buttonBox = Box.createVerticalBox(); Iterator iter = children.iterator(); while(iter.hasNext()) { ((KGroup)iter.next()).buildButtons(buttonBox); } buttonBox.add(masterSpacer); iter = mastersList.iterator(); while(iter.hasNext()) { ((MasterGroup)iter.next()).buildButtons(buttonBox); } return buttonBox; } //}}} //{{{ calcSize, getSpan, getCenter //################################################################################################## /** * Calculates the bounding box and sphere, and center and span of this kinemage. */ public void calcSize() { // Produces NaN for the center when kinemage is empty //float[] bounds = { Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, //Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY }; float[] bounds = { Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE }; calcBoundingBox(bounds); boundingBox = bounds; center[0] = (boundingBox[3] + boundingBox[0])/2f; center[1] = (boundingBox[4] + boundingBox[1])/2f; center[2] = (boundingBox[5] + boundingBox[2])/2f; span = 2f * (float)Math.sqrt(calcRadiusSq(center)); if(span == 0) span = 1; // in case there's only one point in the kin } /** * Calculates the span of this kinemage according to the algorithm used by Mage. * @return the diameter of a sphere that encloses the bounding box that encloses this kinemage */ public float getSpan() { if(boundingBox == null) calcSize(); return span; } /** * Calculates the center of this kinemage according to the algorithm used by Mage. * @return the center of the bounding box that encloses this kinemage */ public float[] getCenter() { if(boundingBox == null) calcSize(); return (float[])center.clone(); } //}}} //{{{ getCurrentView, addView, getViewIterator, getViewList, notifyViewSelected, initAllViews //################################################################################################## /** Gets the current view for this kinemage */ public KingView getCurrentView() { if(currView == null) { if(viewList.size() < 1) { KingView stdView = new KingView(this); addView(stdView); stdView.getSpan(); // converts zoom to span signal.signalKinemage(this, signal.STRUCTURE); } currView = (KingView)((KingView)viewList.get(0)).clone(); } return currView; } /** For use creating new views inside the application. Note: doesn't add v to the viewMap. */ public void addView(KingView v) { viewList.add(v); } /** Returns an iterator over all the saved views of this kinemage. */ public Iterator getViewIterator() { return viewList.iterator(); } /** * Returns a List of all the saved views of this kinemage. * This list may be modified in order to remove or reorder * the views present in this kinemage. */ public java.util.List getViewList() { return viewList; } /** Called by a view when the view is picked from a menu */ public void notifyViewSelected(KingView newview) { currView = (KingView)newview.clone(); //kMain.notifyChange(kMain.EM_NEWVIEW); signal.signalKinemage(this, signal.APPEARANCE); } /** Calls getSpan() on all views, which converts any values specified as zooms into spans. */ public void initAllViews() { KingView v; for(Iterator iter = this.getViewIterator(); iter.hasNext(); ) { v = (KingView)iter.next(); v.getSpan(); } } //}}} //{{{ syncAllMasters, ensureMasterExists, ensureAllMastersExist //################################################################################################## /** Sets all masters to reflect the state of the group(s) they control */ public void syncAllMasters() { for(Iterator iter = mastersList.iterator(); iter.hasNext(); ) { ((MasterGroup)iter.next()).syncState(); } } /** Finds a MasterGroup with the given name, creating one if it didn't already exist. */ public void ensureMasterExists(String name) { getMasterByName(name); } /** * Builds MasterGroup objects for every master named by a group/subgroup/list. * This WILL NOT pick up on any pointmasters that aren't also used by one of the above. */ public void ensureAllMastersExist() { Iterator grIter, suIter, liIter, maIter; KGroup group; KSubgroup subgroup; KList list; for(grIter = this.iterator(); grIter.hasNext(); ) { group = (KGroup)grIter.next(); buildMasters(group); for(suIter = group.iterator(); suIter.hasNext(); ) { subgroup = (KSubgroup)suIter.next(); buildMasters(subgroup); for(liIter = subgroup.iterator(); liIter.hasNext(); ) { list = (KList)liIter.next(); buildMasters(list); }//lists }//subgroups }//groups } //}}} //{{{ buildMasters, getMasterByName, createMaster, masterIter //################################################################################################## /** Iterate over all masters in age */ private void buildMasters(AGE age) { MasterGroup master; String masterName; for(Iterator iter = age.masterIterator(); iter != null && iter.hasNext(); ) { masterName = iter.next().toString(); if(!mastersMap.containsKey(masterName)) { master = createMaster(masterName); // We can call this now, assuming the whole file has been read in // and all groups to be pasted, have been. master.syncState(); //System.err.println("Created master '"+masterName+"'"); } } } /** Returns a MasterGroup with the given name, creating one if it didn't already exist. */ public MasterGroup getMasterByName(String name) { if(mastersMap.containsKey(name)) return (MasterGroup)mastersMap.get(name); else return createMaster(name); } MasterGroup createMaster(String name) { MasterGroup m = new MasterGroup(this, name); mastersMap.put(name, m); mastersList.add(m); return m; } /** Returns an unmodifiable Collection of the masters */ public Collection masterList() { return Collections.unmodifiableCollection(mastersList); } //}}} //{{{ toPmBitmask, fromPmBitmask //################################################################################################## /** * Converts a string of characters to a bit mask for pointmasters. * The particular mapping of characters to bits is unique to each kinemage, * but only up to 32 different characters (case-sensitive) are supported). * @param addFlags if true, assign unrecognized characters to bit positions, * but don't necessarily create masters for them. Defaults to false. * @param addMasters if true, for newly-assigned characters also create * a master to control that flag. Defaults to false. */ public int toPmBitmask(String s, boolean addFlags, boolean addMasters) { int i, end_i, bit, mask = 0; end_i = s.length(); for(i = 0; i < end_i; i++) { bit = pmLookup.indexOf(s.charAt(i)); if(bit >= 0 && bit < 32) mask |= 1 << bit; else if(addFlags && bit == -1) { pmLookup = pmLookup+s.charAt(i); bit = pmLookup.indexOf(s.charAt(i)); if(bit >= 0 && bit < 32) mask |= 1 << bit; if(addMasters) { MasterGroup master = getMasterByName(s.substring(i,i+1)); master.setPmMask(s.substring(i,i+1)); } } } return mask; } public int toPmBitmask(String s) { return toPmBitmask(s, false, false); } /** Does the inverse of toPmBitmask() */ public String fromPmBitmask(int mask) { StringBuffer result = new StringBuffer(); int probe = 1, end = Math.min(32, pmLookup.length()); for(int i = 0; i < end; i++) { if((mask & probe) != 0) result.append(pmLookup.charAt(i)); probe = probe << 1; } return result.toString(); } //}}} //{{{ animate, animate2, doAnimation //################################################################################################## /** * Drives the animation forward (+1), backward (-1), or to having just one * group on (0) for all groups marked 'animate'. * All '2animate' groups are turned off. */ public void animate(int incr) { doAnimation(getAnimateGroups(), get2AnimateGroups(), incr); } /** * Drives the animation forward (+1), backward (-1), or to having just one * group on (0) for all groups marked '2animate'. * All 'animate' groups are turned off. */ public void animate2(int incr) { doAnimation(get2AnimateGroups(), getAnimateGroups(), incr); } void doAnimation(AGE[] ages, AGE[] offages, int incr) { int firstOn = -1; for(int i = 0; i < ages.length; i++) { if(ages[i].isOn()) { firstOn = i; break; } } int turnOn = (firstOn == -1 ? 0 : firstOn+incr); if(turnOn < 0) turnOn = ages.length-1; else if(turnOn >= ages.length) turnOn = 0; for(int i = 0; i < ages.length; i++) ages[i].setOn(i == turnOn); for(int i = 0; i < offages.length; i++) offages[i].setOn(false); } //}}} //{{{ accumulate, accumulate2, doAccumulate //################################################################################################## /** Turns on the next 'animate' group. '2animate' groups are not affected. */ public void accumulate() { doAccumulate(getAnimateGroups()); } /** Turns on the next '2animate' group. 'animate' groups are not affected. */ public void accumulate2() { doAccumulate(get2AnimateGroups()); } /** * In order for this to work as expected, we want to turn on the first off group * that we encounter AFTER the first on group, in a circular way. */ void doAccumulate(AGE[] ages) { int firstOn = -1; for(int i = 0; i < ages.length; i++) { if(ages[i].isOn()) { firstOn = i; break; } } for(int i = firstOn+1; i < firstOn+ages.length; i++) { if( !ages[i % ages.length].isOn() ) { ages[i % ages.length].setOn(true); break; } } } //}}} //{{{ has(2)AnimateGroups, get(2)AnimateGroups //################################################################################################## public boolean hasAnimateGroups() { for(Iterator iter = children.iterator(); iter.hasNext(); ) { KGroup group = (KGroup) iter.next(); if(group.isAnimate()) return true; } return false; } public boolean has2AnimateGroups() { for(Iterator iter = children.iterator(); iter.hasNext(); ) { KGroup group = (KGroup) iter.next(); if(group.is2Animate()) return true; } return false; } KGroup[] getAnimateGroups() { ArrayList animateGroups = new ArrayList(); for(Iterator iter = children.iterator(); iter.hasNext(); ) { KGroup group = (KGroup) iter.next(); if(group.isAnimate()) animateGroups.add(group); } return (KGroup[]) animateGroups.toArray(new KGroup[animateGroups.size()]); } KGroup[] get2AnimateGroups() { ArrayList animateGroups = new ArrayList(); for(Iterator iter = children.iterator(); iter.hasNext(); ) { KGroup group = (KGroup) iter.next(); if(group.is2Animate()) animateGroups.add(group); } return (KGroup[]) animateGroups.toArray(new KGroup[animateGroups.size()]); } //}}} //{{{ addPaint, getPaintForName, getAll/NewPaintMap //################################################################################################## /** Registers the given paint as a legal color for objects in this kinemage. */ public void addPaint(KPaint paint) { if(paint == null) throw new NullPointerException("Can't add a null paint"); allColorMap.put(paint.toString(), paint); newColorMap.put(paint.toString(), paint); } /** Returns the KPaint with the given name, or null if unknown. */ public KPaint getPaintForName(String name) { KPaint paint = (KPaint)allColorMap.get(name); // this will catch things like rust, skyblue, paleyellow, grey, etc. if(paint == null) paint = KPalette.forName(name); return paint; } /** Returns an unmodifiable Map<String, KPaint> of known colors */ public Map getAllPaintMap() { if(unmodAllColorMap == null) unmodAllColorMap = Collections.unmodifiableMap(allColorMap); return unmodAllColorMap; } /** Returns an unmodifiable Map<String, KPaint> of colors that have been defined just for this kinemage */ public Map getNewPaintMap() { if(unmodNewColorMap == null) unmodNewColorMap = Collections.unmodifiableMap(newColorMap); return unmodNewColorMap; } //}}} //{{{ Aspect functions //################################################################################################## /** Gets the current aspect for this kinemage (may be null) */ public Aspect getCurrentAspect() { return currAspect; } public void createAspect(String name, Integer index) { Aspect a = new Aspect(this, name, index); aspectList.add(a); } /** Returns an iterator over all the saved aspects of this kinemage. */ public ListIterator getAspectIterator() { return aspectList.listIterator(); } /** Called by an aspect when the aspect is picked from a menu */ public void notifyAspectSelected(Aspect newAspect) { currAspect = newAspect; //kMain.notifyChange(kMain.EM_DISPLAY); signal.signalKinemage(this, signal.APPEARANCE); } //}}} //{{{ is/setModified //################################################################################################## /** * If true, then the kinemage has been modified since it was loaded * and the changes have not yet been saved. * This property is used for save-on-exit traps. */ public boolean isModified() { return modified; } /** Sets the value of isModified(). */ public void setModified(boolean b) { modified = b; } //}}} //{{{ setBondRots, getBondRots //################################################################################################## public void setBondRots(Collection br) { bondRots = br; } public Collection getBondRots() { return bondRots; } //}}} //{{{ removeUnusedMasters //################################################################################################## /** Deletes all masters that don't affect any group/subgroup/list/point */ public void removeUnusedMasters() { Iterator grIter, suIter, liIter, ptIter; KGroup group; KSubgroup subgroup; KList list; KPoint point; Set usedNames = new HashSet(); int pm_mask = 0; // First, tally all masters and pointmasters for(grIter = this.iterator(); grIter.hasNext(); ) { group = (KGroup)grIter.next(); if(group.masters != null) usedNames.addAll(group.masters); for(suIter = group.iterator(); suIter.hasNext(); ) { subgroup = (KSubgroup)suIter.next(); if(subgroup.masters != null) usedNames.addAll(subgroup.masters); for(liIter = subgroup.iterator(); liIter.hasNext(); ) { list = (KList)liIter.next(); if(list.masters != null) usedNames.addAll(list.masters); for(ptIter = list.iterator(); ptIter.hasNext(); ) { point = (KPoint)ptIter.next(); pm_mask |= point.getPmMask(); }//points }//lists }//subgroups }//groups // Now, remove masters that aren't used for(Iterator iter = mastersMap.entrySet().iterator(); iter.hasNext(); ) { Map.Entry e = (Map.Entry) iter.next(); String name = (String) e.getKey(); MasterGroup master = (MasterGroup) e.getValue(); if( !usedNames.contains(name) && (master.pm_mask & pm_mask) == 0) { iter.remove(); mastersList.remove(master); } } } //}}} //{{{ removeEmptyAGEs //################################################################################################## /** Deletes all groups/subgroups/lists that have no points under them */ public void removeEmptyAGEs() { Iterator grIter, suIter, liIter; KGroup group; KSubgroup subgroup; KList list; for(grIter = this.iterator(); grIter.hasNext(); ) { group = (KGroup)grIter.next(); for(suIter = group.iterator(); suIter.hasNext(); ) { subgroup = (KSubgroup)suIter.next(); for(liIter = subgroup.iterator(); liIter.hasNext(); ) { list = (KList)liIter.next(); if(list.children.size() == 0 && list.getInstance() == null) liIter.remove(); }//lists if(subgroup.children.size() == 0) suIter.remove(); }//subgroups if(group.children.size() == 0) grIter.remove(); }//groups } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/KinWriter.java0000644000000000000000000003224611531212670020466 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.Color; //import java.awt.event.*; import java.io.*; //import java.net.*; import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * KinWriter writes out traditional kinemage files. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 3 09:51:11 EDT 2002 */ public class KinWriter //extends ... implements ... { //{{{ Constants static final DecimalFormat df = driftwood.util.Strings.usDecimalFormat("0.####"); //}}} //{{{ Variable definitions //################################################################################################## PrintWriter out = null; String lastPointID = null; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public KinWriter() { } //}}} //{{{ save() //################################################################################################## /** Writes out all the currently open kinemages */ public void save(Writer destination, String text, Collection kinemages) { Kinemage kin; int index = 1; out = new PrintWriter(new BufferedWriter(destination)); out.println("@text"); out.println(text.trim()); for(Iterator iter = kinemages.iterator(); iter.hasNext(); index++) { kin = (Kinemage)iter.next(); writeKinemage(kin, index); } out.flush(); } //}}} //{{{ writeKinemage() //################################################################################################## void writeKinemage(Kinemage kin, int index) { Iterator iter; out.println("@kinemage "+index); if(!kin.getName().startsWith(KinfileParser.DEFAULT_KINEMAGE_NAME)) { out.println("@title {"+kin.getName()+"}"); } if(kin.atWhitebackground) out.println("@whitebackground"); if(kin.atOnewidth) out.println("@onewidth"); else if(kin.atThinline) out.println("@thinline"); if(kin.atPerspective) out.println("@perspective"); if(kin.atFlat) out.println("@flat"); if(kin.atListcolordominant) out.println("@listcolordominant"); if(kin.atLens > 0.0) out.println("@lens "+df.format(kin.atLens)); if(kin.atPdbfile != null) out.println("@pdbfile {"+kin.atPdbfile+"}"); if(kin.atCommand != null) out.println("@command {"+kin.atCommand+"}"); Collection colorsets = kin.getNewPaintMap().values(); for(iter = colorsets.iterator(); iter.hasNext(); ) { KPaint paint = (KPaint)iter.next(); if(paint.isAlias()) out.println("@colorset {"+paint+"} "+paint.getAlias()); else { //out.println("< Couldn't save new color "+paint+" >"); out.print("@hsvcolor {"+paint+"}"); Color color = (Color) paint.getBlackExemplar(); float[] hsv = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null); out.print(" "+df.format(360*hsv[0])+" "+df.format(100*hsv[1])+" "+df.format(100*hsv[2])); color = (Color) paint.getWhiteExemplar(); hsv = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null); out.print(" "+df.format(360*hsv[0])+" "+df.format(100*hsv[1])+" "+df.format(100*hsv[2])); out.println(); } } Aspect aspect; for(iter = kin.getAspectIterator(); iter.hasNext(); ) { aspect = (Aspect)iter.next(); out.println("@"+aspect.getIndex()+"aspect {"+aspect.getName()+"}"); } int idx = 1; for(iter = kin.getViewIterator(); iter.hasNext(); idx++) { writeView((KingView)iter.next(), idx); } for(iter = kin.masterList().iterator(); iter.hasNext(); ) { writeMaster((MasterGroup)iter.next(), kin); } if(kin.dimensionNames.size() > 0) { out.print("@dimensions"); for(iter = kin.dimensionNames.iterator(); iter.hasNext(); ) out.print(" {"+iter.next()+"}"); out.println(); } if(kin.dimensionMinMax.size() > 0) { out.print("@dimminmax"); for(iter = kin.dimensionMinMax.iterator(); iter.hasNext(); ) out.print(" "+df.format(((Number)iter.next()).doubleValue())); out.println(); } // etc. KGroup group; for(iter = kin.iterator(); iter.hasNext(); ) { group = (KGroup)iter.next(); writeGroup(group, kin); } } //}}} //{{{ writeGroup() //################################################################################################## void writeGroup(KGroup group, Kinemage kin) { Iterator iter; out.print("@group {"+group.getName()+"}"); if(! group.isOn()) out.print(" off"); if(! group.hasButton()) out.print(" nobutton"); if( group.isDominant()) out.print(" dominant"); if( group.isRecessiveOn()) out.print(" recessiveon"); if( group.isAnimate()) out.print(" animate"); if( group.is2Animate()) out.print(" 2animate"); if( group.isLens()) out.print(" lens"); /*MasterGroup master; for(iter = kin.masterIter(); iter.hasNext(); ) { master = (MasterGroup)iter.next(); if(master.isTarget(group)) out.print(" master= {"+master.getName()+"}"); }*/ for(iter = group.masterIterator(); iter != null && iter.hasNext(); ) { out.print(" master= {"+iter.next().toString()+"}"); } out.println(); KSubgroup subgroup; for(iter = group.iterator(); iter.hasNext(); ) { subgroup = (KSubgroup)iter.next(); writeSubgroup(subgroup, kin); } } //}}} //{{{ writeSubgroup() //################################################################################################## void writeSubgroup(KSubgroup subgroup, Kinemage kin) { Iterator iter; out.print("@subgroup {"+subgroup.getName()+"}"); if(! subgroup.isOn()) out.print(" off"); if(! subgroup.hasButton()) out.print(" nobutton"); if( subgroup.isDominant()) out.print(" dominant"); if( subgroup.isRecessiveOn()) out.print(" recessiveon"); if( subgroup.isLens()) out.print(" lens"); /*MasterGroup master; for(iter = kin.masterIter(); iter.hasNext(); ) { master = (MasterGroup)iter.next(); if(master.isTarget(subgroup)) out.print(" master= {"+master.getName()+"}"); }*/ for(iter = subgroup.masterIterator(); iter != null && iter.hasNext(); ) { out.print(" master= {"+iter.next().toString()+"}"); } out.println(); KList list; for(iter = subgroup.iterator(); iter.hasNext(); ) { list = (KList)iter.next(); writeList(list, kin); } } //}}} //{{{ writeList() //################################################################################################## void writeList(KList list, Kinemage kin) { Iterator iter; out.print("@"+list.getType()+"list {"+list.getName()+"}"); if(list.getInstance() != null) out.print(" instance= {"+list.getInstance().getName()+"}"); if(! list.isOn()) out.print(" off"); if(! list.hasButton()) out.print(" nobutton"); if( list.isLens()) out.print(" lens"); KPaint paint = list.getColor(); if(paint == null) paint = KPalette.defaultColor; if(paint.isAlias()) out.print(" color= {"+paint+"}"); else out.print(" color= "+paint); if(list.getType() == KList.VECTOR || list.getType() == KList.DOT) { if(list.width != 2) out.print(" width= "+list.width); } else if(list.getType() == KList.BALL || list.getType() == KList.SPHERE || list.getType() == KList.RING) { out.print(" radius= "+df.format(list.radius)); if((list.flags & KList.NOHILITE) != 0) out.print(" nohilite"); } else if(list.getType() == KList.ARROW) { out.print(" radius= "+df.format(list.getRadius())); out.print(" angle= "+df.format(list.getAngle())); } if(list.alpha != 255) out.print(" alpha= "+df.format(list.alpha/255.0)); for(iter = list.masterIterator(); iter != null && iter.hasNext(); ) { out.print(" master= {"+iter.next().toString()+"}"); } if(list.getDimension() != 3) out.print(" dimension= "+list.getDimension()); out.println(); KPoint point; lastPointID = null; for(iter = list.iterator(); iter.hasNext(); ) { point = (KPoint)iter.next(); writePoint(point, list, kin); lastPointID = point.getName(); } } //}}} //{{{ writePoint() //################################################################################################## void writePoint(KPoint point, KList list, Kinemage kin) { Iterator iter; if(point.getComment() != null) out.print("<"+point.getComment()+">"); String pointID = point.getName(); if(pointID.equals(lastPointID)) out.print("{\"}"); else out.print("{"+pointID+"}"); if(point.getPmMask() != 0) out.print("'"+kin.fromPmBitmask(point.getPmMask())+"' "); if(point.getAspects() != null) out.print("("+point.getAspects()+") "); if(point.isBreak()) out.print("P "); if(point.isUnpickable()) out.print("U "); if(point.isGhost()) out.print("ghost "); if(point instanceof TrianglePoint && point.isBreak()) out.print("X "); // because triangle- and ribbonlists don't break for P else if(point instanceof VectorPoint) { VectorPoint v = (VectorPoint)point; if(v.width > 0 && v.width != list.width) out.print("width"+v.width+" "); } else if(point instanceof BallPoint) { BallPoint b = (BallPoint)point; if(b.r0 > 0f) out.print("r="+df.format(b.r0)+" "); } else if(point instanceof MarkerPoint) { MarkerPoint m = (MarkerPoint)point; if(m.getStyle() != 0) out.print("s="+m.getStyle()+" "); } /* XXX-DEBUG * / else if(point instanceof TrianglePoint) { if((point.multi & point.SEQ_EVEN_BIT) != 0) out.print(" "); else out.print(" "); } /* XXX-DEBUG */ KPaint paint = point.getColor(); if(paint != null && paint != list.getColor()) out.print(paint+" "); float[] coords = point.getAllCoords(); if(coords == null) out.println(df.format(point.getOrigX())+" "+df.format(point.getOrigY())+" "+df.format(point.getOrigZ())); else { for(int i = 0; i < coords.length; i++) out.print(df.format(coords[i])+" "); out.println(); } } //}}} //{{{ writeView(), writeMaster() //################################################################################################## void writeView(KingView view, int index) { out.println("@"+index+"viewid {"+view.getName()+"}"); out.println("@"+index+"span "+view.getSpan()); out.println("@"+index+"zslab "+(view.getClip()*200f)); float[] center = view.getCenter(); out.println("@"+index+"center "+df.format(center[0])+" "+df.format(center[1])+" "+df.format(center[2])); int[] axes = view.getViewingAxes(); if(axes != null) out.println("@"+index+"axischoice "+(axes[0]+1)+" "+(axes[1]+1)+" "+(axes[2]+1)); // Writen out Mage-style, for a post-multiplied matrix out.print("@"+index+"matrix"); for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) out.print(" "+df.format(view.xform[j][i])); } out.println(); } void writeMaster(MasterGroup master, Kinemage kin) { out.print("@master {"+master.getName()+"}"); //if(! master.isOn()) out.print(" off"); if(! master.hasButton()) out.print(" nobutton"); if(master.indent) out.print(" indent"); out.println(); if(master.pm_mask != 0) { out.println("@pointmaster '"+kin.fromPmBitmask(master.pm_mask)+"' {"+master.getName()+"}"); } } ///}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/KPoint.java0000644000000000000000000002371711531212670017757 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.r3.*; //}}} /** * KPoint is a generic, non-instantiable representation of a 'point' in a kinemage. * This class and its subclasses contain the code for drawing all the different graphics primitives in Mage. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 12:57:57 EDT 2002 */ public interface KPoint extends AHE, Cloneable, MutableTuple3 { //{{{ Constants //}}} //{{{ clone //################################################################################################## public Object clone(); //}}} //{{{ get/setOrigX/Y/Z //################################################################################################## /** Returns the untransformed coordinate for this point. * @deprecated In favor of getX(). */ public float getOrigX(); /** Returns the untransformed coordinate for this point. * @deprecated In favor of getY(). */ public float getOrigY(); /** Returns the untransformed coordinate for this point. * @deprecated In favor of getZ). */ public float getOrigZ(); /** Assigns a value to the untransformed coordinate for this point. * @deprecated In favor of setX(). */ public void setOrigX(double xx); /** Assigns a value to the untransformed coordinate for this point. * @deprecated In favor of setY(). */ public void setOrigY(double yy); /** Assigns a value to the untransformed coordinate for this point. * @deprecated In favor of setZ(). */ public void setOrigZ(double zz); /** Assigns a value to the untransformed coordinates for this point. * @deprecated In favor of setXYZ(). */ public void setOrigXYZ(Tuple3 t); //}}} //{{{ get/setX/Y/Z //################################################################################################## /** Returns the untransformed coordinate for this point */ public double getX(); /** Returns the untransformed coordinate for this point */ public double getY(); /** Returns the untransformed coordinate for this point */ public double getZ(); /** Assigns a value to the untransformed coordinate for this point */ public void setX(double xx); /** Assigns a value to the untransformed coordinate for this point */ public void setY(double yy); /** Assigns a value to the untransformed coordinate for this point */ public void setZ(double zz); /** Assigns a value to the untransformed coordinates for this point */ public void setXYZ(double xx, double yy, double zz); //}}} //{{{ get/setDrawX/Y/Z //################################################################################################## /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawX(); /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawY(); /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawZ(); /** Assigns a value to the fully transformed (drawing) coordinate for this point */ public void setDrawX(double xx); /** Assigns a value to the fully transformed (drawing) coordinate for this point */ public void setDrawY(double yy); /** Assigns a value to the fully transformed (drawing) coordinate for this point */ public void setDrawZ(double zz); /** Assigns a value to the fully transformed (drawing) coordinates for this point */ public void setDrawXYZ(Tuple3 t); //}}} //{{{ get/setAllCoords, useCoordsXYZ //################################################################################################## /** * Stores an array of coordinates for "high-dimensional" points. * The float[] is stored without cloning and so is subject to overwrite. */ public void setAllCoords(float[] coords); /** * Retrieves the "high-dimensional" coordinates of this point, or null if not set. * The float[] is returned without cloning and so is subject to overwrite. */ public float[] getAllCoords(); /** * Copies the high-dimensional coordinates at the specified indices * into this point's (untransformed) X, Y, and Z fields. * If a index is out of range (0-based), it is ignored and the value is not changed. */ public void useCoordsXYZ(int xIndex, int yIndex, int zIndex); //}}} //{{{ get/setPrev, isBreak //################################################################################################## /** * Sets the point that precedes this one. * This matters to "chainable" points, like vectors and triangles. * For other points, it does nothing. * @param pt the point preceding this one in seqence */ public void setPrev(KPoint pt); /** * Gets the point preceding this one in the chain. * @return the preceding point, or null if (a) this is a break in the chain or (b) this is not a chainable point type. */ public KPoint getPrev(); /** * True iff this is a chainable point type (e.g. vector, triangle) AND there is a chain break. */ public boolean isBreak(); //}}} //{{{ is/get/set{On, Unpickable, Ghost, Color, Aspects, Width, Radius, Comment} //################################################################################################## /** Indicates whether this point can be picked with the mouse */ public boolean isUnpickable(); /** Sets the picking status of this point */ public void setUnpickable(boolean b); /** Indicates whether this point is a "ghost" for Mage */ public boolean isGhost(); /** Sets the ghost status of this point */ public void setGhost(boolean b); /** Returns the color of this point, or null if it inherits from its list */ public KPaint getColor(); /** Sets the color of this point. */ public void setColor(KPaint c); /** Gets the aspect string of this point */ public String getAspects(); /** Sets the aspect string of this point */ public void setAspects(String a); /** Gets the line width of this point, if applicable */ public int getWidth(); /** Sets the line width of this point, if applicable */ public void setWidth(int w); /** Gets the radius of this point, if applicable */ public float getRadius(); /** Sets the radius of this point, if applicable */ public void setRadius(float radius); /** Sets the point comment for this point. */ public void setComment(String cmt); /** Gets the comment for this point, which defaults to null. */ public String getComment(); //}}} //{{{ getDrawingColor //################################################################################################## /** Returns the color that will be used to draw this point (ignoring aspects). Never null. */ public KPaint getDrawingColor(); /** Returns the color that will be used to draw this point, taking aspects into account. Never null. */ public KPaint getDrawingColor(Engine engine); //}}} //{{{ pmHit, pmWouldHit, get/setPmMask //################################################################################################## /** * Processes a pointmaster on/off request. * @param mask the bitmask indicating which masters are being turned on/off * @param offmask the bitmask indicating which masters are already off * @param turnon true if affected points are to be turned on, * false if affected points are to be turned off. */ public void pmHit(int mask, int offmask, boolean turnon); /** Indicates whether or not the given pointmaster set would affect this point. */ public boolean pmWouldHit(int mask); public int getPmMask(); public void setPmMask(int mask); //}}} //{{{ signalTransform //################################################################################################## public void signalTransform(Engine engine, Transform xform); /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. * @param zoom the zoom factor encoded by the Transform, * as a convenience for resizing things. */ public void signalTransform(Engine engine, Transform xform, double zoom); //}}} //{{{ paintStandard, isPickedBy //################################################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paintStandard(Engine engine); /** * Returns true if the specified pick hits this point, else returns false * Pays no attention to whether this point is marked as unpickable. * @param radius the desired picking radius * @param objPick whether we should try to pick solid objects in addition to points * @return the KPoint that should be counted as being picked, or null for none. * Usually this, but maybe not for object picking. */ public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick); //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/SpherePoint.java0000644000000000000000000001201511531212670021000 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * SpherePoint is like a BallPoint, except it renders a whole stack * of disks like Mage does for @spherelists. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Mon Oct 18 10:26:11 EDT 2004 */ public class SpherePoint extends BallPoint { //{{{ Constants static final int N_DISKS = 16; static final double[] sin = new double[N_DISKS]; static final double[] cos = new double[N_DISKS]; static { // Sin is fwd offset from largest disk, moving toward viewer. // Sin spacing is such that disk spacing is equal. // Cos is for scaling disk radius. for(int i = 0; i < N_DISKS; i++) { sin[i] = (double)i/(double)N_DISKS; cos[i] = Math.sqrt(1.0 - sin[i]*sin[i]); } } //}}} //{{{ CLASS: DiskProxyPoint //############################################################################## /** * DiskProxyPoint is used to represent one disk in the stack for drawing and * picking purposes only. */ static class DiskProxyPoint extends ProxyPoint { int diskLevel; public DiskProxyPoint(BallPoint proxyFor, int diskLevel) { super(proxyFor); this.diskLevel = diskLevel; } /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paintStandard(Engine engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; // Don't use alpha, b/c it won't look right for stacked disks Paint paint = maincolor.getPaint(engine.backgroundMode, SpherePoint.sin[diskLevel], engine.colorCue, 255); double r = SpherePoint.cos[diskLevel] * ((BallPoint)proxyFor).r; engine.painter.paintSphereDisk(paint, getDrawX(), getDrawY(), getDrawZ(), r); } } //}}} //{{{ Variable definitions //############################################################################## DiskProxyPoint[] proxies; //}}} //{{{ Constructor(s) //############################################################################## public SpherePoint(KList list, String label) { super(list, label); // Need one less b/c "this" acts as the base layer this.proxies = new DiskProxyPoint[N_DISKS-1]; for(int i = 1; i < N_DISKS; i++) { this.proxies[i-1] = new DiskProxyPoint(this, i); } } //}}} //{{{ signalTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. * @param zoom the zoom factor encoded by the Transform, * as a convenience for resizing things. */ public void signalTransform(Engine engine, Transform xform, double zoom) { super.signalTransform(engine, xform, zoom); // "this" has already been added at i == 0 for(int i = 1; i < N_DISKS; i++) { engine.addPaintable(proxies[i-1], z + sin[i]*r); } } //}}} //{{{ paintStandard //############################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paintStandard(Engine engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; // Don't use alpha, b/c it won't look right for stacked disks Paint paint = maincolor.getPaint(engine.backgroundMode, 0, engine.colorCue, 255); // Can't do depth cueing by width -- causes really weird problems!! // // We have to do this here b/c now widthCue is set //if(engine.cueThickness) r *= KPalette.widthScale[ engine.widthCue ]; engine.painter.paintSphereDisk(paint, x, y, z, r); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/ArrowPoint.java0000644000000000000000000001434411531212670020653 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.geom.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * ArrowPoint represents the endpoint of a line * and has an arrowhead on it. * *

Copyright (C) 2002-2003 by Ian W. Davis. All rights reserved. *
Begun on Fri Apr 26 16:46:09 EDT 2002 */ public class ArrowPoint extends VectorPoint // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new data point representing one end of a line. * * @param list the list that contains this point * @param label the pointID of this point * @param start where this line is drawn from, or null if it's the starting point */ public ArrowPoint(KList list, String label, VectorPoint start) { super(list, label, start); } //}}} //{{{ paintStandard2 //################################################################################################## /** * This function exists solely for the convenience of ArrowPoints; * a good JIT will optimize it away for VectorPoints. * Coordinates are already transformed, perspective corrected, and clipped by Z planes. * They have NOT been clipped to the drawing area yet. */ void paintStandard2(Engine engine, Paint paint, double fromX, double fromY, double fromZ, double toX, double toY, double toZ) { int lineWidth = calcLineWidth(engine); // Arrow tines are faked at the real "to" endpoint OR at the edge of the screen. // Each tine is a vector with a component perpedicular to the arrow body and a component parallel. // The parallel is foreshortened by the dot product of the body with <0,0,1>; // the perpendicular is unchanged, which keeps the arrow "facing" the screen as much as possible. // Perspective effects are ignored b/c the arrowheads are small. double tinePerp = 10, tinePar = 20; // in pixels if(parent != null) { tinePerp = parent.tinePerp * engine.zoom3D; tinePar = parent.tinePar * engine.zoom3D; } // Unit vector from arrow head toward arrow tail engine.work1.setXYZ( fromX-toX, fromY-toY, fromZ-toZ ); if(engine.work1.mag2() < 1e-10) engine.work1.setXYZ(0,0,1); else engine.work1.unit(); // Z vector and dot product (for foreshortening of tines) engine.work2.setXYZ(0,0,1); tinePar *= 1 - Math.abs( engine.work2.dot(engine.work1) ); // Unit vector from arrow head toward arrow tail, in the plane of the screen! engine.work1.setXYZ( fromX-toX, fromY-toY, 0 ); if(engine.work1.mag2() < 1e-10) engine.work1.setXYZ(1,0,0); else engine.work1.unit(); // "To" ends of the line (where arrow head is drawn) must be clipped to // the edges of the screen so we can see outbound arrows when zoomed in. // This code ignores Z, which is why we calc'd foreshortening first. // We use the Cohen-Sutherland algorithm for clipping a line to a box. // Int flags represent being out of bounds on each of four sides: final int LEFT = 1, RIGHT = 2, BOTTOM = 4, TOP = 8; final double xmin = engine.pickingRect.x, ymin = engine.pickingRect.y; final double xmax = xmin+engine.pickingRect.width, ymax = ymin+engine.pickingRect.height; int toOutcode = 0, fromOutcode = 0; if(toX < xmin) toOutcode |= LEFT; else if(toX > xmax) toOutcode |= RIGHT; if(toY < ymin) toOutcode |= TOP; else if(toY > ymax) toOutcode |= BOTTOM; if(fromX < xmin) fromOutcode |= LEFT; else if(fromX > xmax) fromOutcode |= RIGHT; if(fromY < ymin) fromOutcode |= TOP; else if(fromY > ymax) fromOutcode |= BOTTOM; // If outcode is zero, the point is inside the clipping region. // If the AND of the outcodes is nonzero, thw whole line is outside the clipping region. if(toOutcode != 0 && (toOutcode & fromOutcode) == 0) { //paint = Color.red; if(toX < xmin) { toY = fromY + (toY-fromY)*(xmin-fromX)/(toX-fromX); toX = xmin; } else if(toX > xmax) { toY = fromY + (toY-fromY)*(xmax-fromX)/(toX-fromX); toX = xmax; } // Even though we've corrected the side-to-side clipping, // the top-to-bottom clipping may also need work // (e.g. if we're projecting out thru a corner of the canvas) if(toY < ymin) { toX = fromX + (toX-fromX)*(ymin-fromY)/(toY-fromY); toY = ymin; } else if(toY > ymax) { toX = fromX + (toX-fromX)*(ymax-fromY)/(toY-fromY); toY = ymax; } } // (-y,x) and (y,-x) are orthogonal to (x,y) // x and y offsets each have components from perpedicular and parallel. double dx, dy; dx = tinePar*engine.work1.getX() - tinePerp*engine.work1.getY(); dy = tinePar*engine.work1.getY() + tinePerp*engine.work1.getX(); engine.painter.paintVector(paint, lineWidth, engine.widthCue, toX, toY, toZ, toX+dx, toY+dy, toZ); dx = tinePar*engine.work1.getX() + tinePerp*engine.work1.getY(); dy = tinePar*engine.work1.getY() - tinePerp*engine.work1.getX(); engine.painter.paintVector(paint, lineWidth, engine.widthCue, toX, toY, toZ, toX+dx, toY+dy, toZ); // Main arrow body engine.painter.paintVector(paint, lineWidth, engine.widthCue, fromX, fromY, fromZ, toX, toY, toZ); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/HighQualityPainter.java0000644000000000000000000001264611531212670022325 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.geom.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * HighQualityPainter paints kinemage graphics using the new-style * Shape calls from a java.awt.Graphics2D object. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Fri May 21 19:20:49 EDT 2004 */ public class HighQualityPainter extends StandardPainter { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Line2D.Double line1 = new Line2D.Double(); Ellipse2D.Double ellipse1 = new Ellipse2D.Double(); GeneralPath path1 = new GeneralPath(); //}}} //{{{ Constructor(s) //############################################################################## public HighQualityPainter(boolean forceAntialiasing) { super(forceAntialiasing); } //}}} //{{{ paintBall //################################################################################################## public void paintBall(Paint paint, double x, double y, double z, double r, boolean showHighlight) { if(r < 0.5) r = 0.5; // make sure balls don't disappear double d = 2.0*r; // one disk g.setPaint(paint); g.setStroke(KPalette.pen0); ellipse1.setFrame((x-r), (y-r), d, d); if(REALLY_PAINT) g.fill(ellipse1); // Black rim, causes ~10% speed penalty but useful for visualization! try { Color c = (Color) paint; if(d >= 10 && c.getAlpha() == 255) { g.setPaint(KPaint.black); // wants to merge with the background g.setStroke(KPalette.pen1); if(REALLY_PAINT) g.draw(ellipse1); } } catch(ClassCastException ex) { ex.printStackTrace(); System.err.println("HighQualityPainter: tried painting with non-Color type of Paint"); } // highlight if(showHighlight) { double off = 0.5 * r; d = 0.3*r; g.setPaint(Color.white); // wants to be bright white no matter what g.setStroke(KPalette.pen0); ellipse1.setFrame((x-off), (y-off), d, d); if(REALLY_PAINT) g.fill(ellipse1); } } //}}} //{{{ paintDot //################################################################################################## public void paintDot(Paint paint, double x, double y, double z, int width) { int off = width/2; g.setPaint(paint); g.setStroke(KPalette.pen0); ellipse1.setFrame((x-off), (y-off), width, width); if(REALLY_PAINT) g.fill(ellipse1); } //}}} //{{{ paintSphereDisk //################################################################################################## public void paintSphereDisk(Paint paint, double x, double y, double z, double r) { if(r < 0.5) r = 0.5; // make sure balls don't disappear double d = 2.0*r; // one disk g.setPaint(paint); g.setStroke(KPalette.pen0); ellipse1.setFrame((x-r), (y-r), d, d); if(REALLY_PAINT) g.fill(ellipse1); } //}}} //{{{ paintTriangle //################################################################################################## public void paintTriangle(Paint paint, double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3) { g.setPaint(paint); g.setStroke(KPalette.pen1); path1.reset(); path1.moveTo((float)x1, (float)y1); path1.lineTo((float)x2, (float)y2); path1.lineTo((float)x3, (float)y3); path1.closePath(); if(REALLY_PAINT) { g.fill(path1); g.draw(path1); // closes up the hairline cracks between triangles (?) } } //}}} //{{{ paintVector //################################################################################################## public void paintVector(Paint paint, int width, int widthCue, double x1, double y1, double z1, double x2, double y2, double z2) { g.setPaint(paint); g.setStroke(KPalette.pens[width-1][widthCue]); line1.setLine(x1, y1, x2, y2); if(REALLY_PAINT) g.draw(line1); } //}}} //{{{ drawOval //################################################################################################## public void drawOval(Paint paint, double x, double y, double z, double width, double height) { g.setPaint(paint); g.setStroke(KPalette.pen1); ellipse1.setFrame((x - width/2), (y - height/2), width, height); if(REALLY_PAINT) g.draw(ellipse1); } public void drawOval(Paint paint, int linewidth, int widthCue, double x, double y, double z, double width, double height) { g.setPaint(paint); g.setStroke(KPalette.pens[linewidth-1][widthCue]); ellipse1.setFrame((x - width/2), (y - height/2), width, height); if(REALLY_PAINT) g.draw(ellipse1); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/ParaPoint.java0000644000000000000000000003727611531212670020455 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * ParaPoint is proxy point used for parallel coordinates. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Fri Nov 17 11:34:49 EST 2006 */ public class ParaPoint extends VectorPoint { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## KPoint proxyFor; int dimIdx; ParaParams params; //}}} //{{{ Constructor(s) //############################################################################## /** * Creates a new data point representing one end of a line. * * @param proxyFor the (Ball)Point that this line represents * @param dimIdx the dimension / axis of proxyFor to represent, from 0 ... D * (Could probably be figured by tracing back along start.) * @param start where this line is drawn from, or null if it's the starting point */ public ParaPoint(KPoint proxyFor, int dimIdx, ParaPoint start, ParaParams params) { super((KList)proxyFor.getOwner(), proxyFor.getName(), start); this.proxyFor = proxyFor; this.dimIdx = dimIdx; this.params = params; syncCoords(); } //}}} //{{{ syncCoords //############################################################################## protected void syncCoords() { float[] allCoords = proxyFor.getAllCoords(); if(allCoords == null || allCoords.length <= dimIdx) throw new IllegalArgumentException("Not enough coordinates in proxy to support parallel coords"); this.x0 = (float) (1.0 * dimIdx / (params.getNumDim() - 1)); // [0, 1] this.y0 = (float) ((allCoords[dimIdx] - params.getMin(dimIdx)) / params.getRange(dimIdx)); // [0, 1] this.z0 = 0; // may use this for something later, not now } //}}} //{{{ get/setOrigX/Y/Z //################################################################################################## /** Returns the untransformed coordinate for this point. * @deprecated In favor of getX(). */ public float getOrigX() { return (float) this.getX(); } /** Returns the untransformed coordinate for this point. * @deprecated In favor of getY(). */ public float getOrigY() { return (float) this.getY(); } /** Returns the untransformed coordinate for this point. * @deprecated In favor of getZ). */ public float getOrigZ() { return (float) this.getZ(); } /** Assigns a value to the untransformed coordinate for this point. * @deprecated In favor of setX(). */ public void setOrigX(double xx) { this.setX(xx); } /** Assigns a value to the untransformed coordinate for this point. * @deprecated In favor of setY(). */ public void setOrigY(double yy) { this.setY(yy); } /** Assigns a value to the untransformed coordinate for this point. * @deprecated In favor of setZ(). */ public void setOrigZ(double zz) { this.setZ(zz); } /** Assigns a value to the untransformed coordinates for this point. * @deprecated In favor of setXYZ(). */ public void setOrigXYZ(Tuple3 t) {} //}}} //{{{ get/setX/Y/Z //################################################################################################## /** Returns the untransformed coordinate for this point */ //public double getX() { return proxyFor.getX(); } /** Returns the untransformed coordinate for this point */ //public double getY() { return proxyFor.getY(); } /** Returns the untransformed coordinate for this point */ //public double getZ() { return proxyFor.getZ(); } /** Assigns a value to the untransformed coordinate for this point */ public void setX(double xx) {} /** Assigns a value to the untransformed coordinate for this point */ public void setY(double yy) {} /** Assigns a value to the untransformed coordinate for this point */ public void setZ(double zz) {} /** Assigns a value to the untransformed coordinates for this point */ public void setXYZ(double xx, double yy, double zz) {} //}}} //{{{ get/setDrawX/Y/Z //################################################################################################## /** Returns the fully transformed (drawing) coordinate for this point */ //public float getDrawX() { return proxyFor.getDrawX(); } /** Returns the fully transformed (drawing) coordinate for this point */ //public float getDrawY() { return proxyFor.getDrawY(); } /** Returns the fully transformed (drawing) coordinate for this point */ //public float getDrawZ() { return proxyFor.getDrawZ(); } /** Assigns a value to the fully transformed (drawing) coordinate for this point */ //public void setDrawX(double xx) { proxyFor.setDrawX(xx); } /** Assigns a value to the fully transformed (drawing) coordinate for this point */ //public void setDrawY(double yy) { proxyFor.setDrawY(yy); } /** Assigns a value to the fully transformed (drawing) coordinate for this point */ //public void setDrawZ(double zz) { proxyFor.setDrawZ(zz); } /** Assigns a value to the fully transformed (drawing) coordinates for this point */ //public void setDrawXYZ(Tuple3 t) { proxyFor.setDrawXYZ(t); } //}}} //{{{ get/setAllCoords, useCoordsXYZ //################################################################################################## /** * Stores an array of coordinates for "high-dimensional" points. * The float[] is stored without cloning and so is subject to overwrite. */ //public void setAllCoords(float[] coords) { proxyFor.setAllCoords(coords); } /** * Retrieves the "high-dimensional" coordinates of this point, or null if not set. * The float[] is returned without cloning and so is subject to overwrite. */ //public float[] getAllCoords() { return proxyFor.getAllCoords(); } /** * Copies the high-dimensional coordinates at the specified indices * into this point's (untransformed) X, Y, and Z fields. * If a index is out of range (0-based), it is ignored and the value is not changed. */ public void useCoordsXYZ(int xIndex, int yIndex, int zIndex) { proxyFor.useCoordsXYZ(xIndex, yIndex, zIndex); } //}}} //{{{ get/setPrev, isBreak //################################################################################################## /** * Sets the point that precedes this one. * This matters to "chainable" points, like vectors and triangles. * For other points, it does nothing. * @param pt the point preceding this one in seqence */ //public void setPrev(KPoint pt) { proxyFor.setPrev(pt); } /** * Gets the point preceding this one in the chain. * @return the preceding point, or null if (a) this is a break in the chain or (b) this is not a chainable point type. */ //public KPoint getPrev() { return proxyFor.getPrev(); } /** * True iff this is a chainable point type (e.g. vector, triangle) AND there is a chain break. */ //public boolean isBreak() { return proxyFor.isBreak(); } //}}} //{{{ is/get/set{On, Unpickable, Ghost, Color, Aspects, Width, Radius, Comment} //################################################################################################## /** Indicates whether this element will paint itself, given the chance */ public boolean isOn() { return proxyFor.isOn(); } /** Sets the painting status of this element */ public void setOn(boolean paint) { proxyFor.setOn(paint); } /** Indicates whether this point can be picked with the mouse */ public boolean isUnpickable() { return proxyFor.isUnpickable(); } /** Sets the picking status of this point */ public void setUnpickable(boolean b) { proxyFor.setUnpickable(b); } /** Indicates whether this point is a "ghost" for Mage */ public boolean isGhost() { return proxyFor.isGhost(); } /** Sets the ghost status of this point */ public void setGhost(boolean b) { proxyFor.setGhost(b); } /** Returns the color of this point, or null if it inherits from its list */ public KPaint getColor() { return proxyFor.getColor(); } /** Sets the color of this point. */ public void setColor(KPaint c) { proxyFor.setColor(c); } /** Gets the aspect string of this point */ public String getAspects() { return proxyFor.getAspects(); } /** Sets the aspect string of this point */ public void setAspects(String a) { proxyFor.setAspects(a); } /** Gets the line width of this point, if applicable */ //public int getWidth() { return proxyFor.getWidth(); } /** Sets the line width of this point, if applicable */ //public void setWidth(int w) { proxyFor.setWidth(w); } /** Gets the radius of this point, if applicable */ public float getRadius() { return proxyFor.getRadius(); } /** Sets the radius of this point, if applicable */ public void setRadius(float radius) { proxyFor.setRadius(radius); } /** Sets the point comment for this point. */ public void setComment(String cmt) { proxyFor.setComment(cmt); } /** Gets the comment for this point, which defaults to null. */ public String getComment() { return proxyFor.getComment(); } //}}} //{{{ getDrawingColor //################################################################################################## /** Returns the color that will be used to draw this point (ignoring aspects). Never null. */ public KPaint getDrawingColor() { return proxyFor.getDrawingColor(); } /** Returns the color that will be used to draw this point, taking aspects into account. Never null. */ public KPaint getDrawingColor(Engine engine) { return proxyFor.getDrawingColor(engine); } //}}} //{{{ pmHit, pmWouldHit, get/setPmMask //################################################################################################## /** * Processes a pointmaster on/off request. * @param mask the bitmask indicating which masters are being turned on/off * @param offmask the bitmask indicating which masters are already off * @param turnon true if affected points are to be turned on, * false if affected points are to be turned off. */ public void pmHit(int mask, int offmask, boolean turnon) { proxyFor.pmHit(mask, offmask, turnon); } /** Indicates whether or not the given pointmaster set would affect this point. */ public boolean pmWouldHit(int mask) { return proxyFor.pmWouldHit(mask); } public int getPmMask() { return proxyFor.getPmMask(); } public void setPmMask(int mask) { proxyFor.setPmMask(mask); } //}}} //{{{ calcBoundingBox, calcRadiusSq //################################################################################################## /** * Gets a bounding box for the current model. * @param bound the first 6 elements get set to { minX, minY, minZ, maxX, maxY, maxZ }. * Should be called with { +inf, +inf, +inf, -inf, -inf, -inf } */ public void calcBoundingBox(float[] bound) { syncCoords(); // just to be safe super.calcBoundingBox(bound); } /** * Gets the square of the radius of this model from the specified center. * @param center an array with the x, y, and z coordinates of the center * @return the square of the radius of this element, centered at center */ public float calcRadiusSq(float[] center) { syncCoords(); // just to be safe return super.calcRadiusSq(center); } //}}} //{{{ signalTransform //################################################################################################## public void signalTransform(Engine engine, Transform xform) { syncCoords(); // just to be safe super.signalTransform(engine, xform); } /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. * @param zoom the zoom factor encoded by the Transform, * as a convenience for resizing things. */ public void signalTransform(Engine engine, Transform xform, double zoom) { syncCoords(); // just to be safe super.signalTransform(engine, xform, zoom); } //}}} //{{{ paintStandard, isPickedBy //################################################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paintStandard(Engine engine) { //syncCoords(); // just to be safe super.paintStandard(engine); } /** * Returns true if the specified pick hits this point, else returns false * Pays no attention to whether this point is marked as unpickable. * @param radius the desired picking radius * @param objPick whether we should try to pick solid objects in addition to points * @return the KPoint that should be counted as being picked, or null for none. * Usually this, but maybe not for object picking. */ public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { //syncCoords(); // just to be safe return super.isPickedBy(xx, yy, radius, objPick); } //}}} //{{{ get/setName, get/setOwner, toString //################################################################################################## /** Gets the name of this element */ public String getName() { return proxyFor.getName(); } /** Sets the name of this element */ public void setName(String nm) { if(proxyFor == null) super.setName(nm); // called by constructor else proxyFor.setName(nm); } /** Determines the owner (parent) of this element */ public AGE getOwner() { return proxyFor.getOwner(); } /** Establishes the owner (parent) of this element */ public void setOwner(AGE owner) { if(proxyFor == null) super.setOwner(owner); // called by constructor else proxyFor.setOwner(owner); } /** Gets the name of this element (same as getName()*/ public String toString() { return proxyFor.toString(); } //}}} //{{{ getKinemage //################################################################################################## /** Retrieves the Kinemage object holding this element, or null if none. */ public Kinemage getKinemage() { return proxyFor.getKinemage(); } //}}} //{{{ isVisible, isTotallyOn //################################################################################################## /** Indicates whether this element will actually be painted (i.e., is it and all its parents on?) */ public boolean isVisible() { return proxyFor.isVisible(); } /** Returns true iff this element is On, it's owner is On, it's owner's owner is On, and so on */ public boolean isTotallyOn() { return proxyFor.isTotallyOn(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/BondRot.java0000644000000000000000000000642011531212670020112 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import king.*; //import java.awt.*; //import java.awt.event.*; //import java.io.*; //import java.net.*; //import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.gui.*; //import driftwood.util.SoftLog; //}}} /** * BondRot is an object to represent a BondRot for doing bond rotations like in Mage. * *

Copyright (C) 2004 Vincent B. Chen. All rights reserved. *
Begun in June 2004 **/ public class BondRot { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## int bondRotNum = -1; ArrayList bondLists = null; boolean isOpen = false; String name = null; double origAng = 0; double currAng = 0; HashMap colorMap = null; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public BondRot(int rotNum) { bondLists = new ArrayList(); bondRotNum = rotNum; isOpen = true; colorMap = new HashMap(); } //}}} /** * Constructor **/ public BondRot(int rotNum, String nm, double angle) { bondLists = new ArrayList(); bondRotNum = rotNum; name = nm; origAng = angle; currAng = angle; isOpen = true; colorMap = new HashMap(); } //{{{ Methods //################################################################################################## //{{{ Add //################################################################################################## /** * Adds a KList to this bondrot. **/ public void add(KList list) { bondLists.add(list); colorMap.put(list, list.getColor()); } //{{{ public void setOpen(boolean status) { isOpen = status; } public void setColor(KPaint color) { Iterator iter = bondLists.iterator(); while (iter.hasNext()) { KList list = (KList) iter.next(); list.setColor(color); } } public void setAxisColor(KPaint color) { Iterator iter = bondLists.iterator(); KList list = (KList) iter.next(); list.setColor(color); } public void setCurrentAngle(double ang) { currAng = ang; } public void restoreOrigColor() { Iterator iter = bondLists.iterator(); while (iter.hasNext()) { KList list = (KList) iter.next(); KPaint color = (KPaint) colorMap.get(list); list.setColor(color); } } public Iterator iterator() { return bondLists.iterator(); } public KList getAxisList() { return (KList) bondLists.get(0); } public double getOrigAngle() { return origAng; } public double getCurrentAngle() { return currAng; } public String getName() { return name; } public boolean isOpen() { return isOpen; } public String toString() { //return ("BondRot " + bondRotNum + ", Contains: " + bondLists.size() + " lists"); return name; } public boolean equals(Object obj) { if (obj == null || !(obj instanceof BondRot)) return false; BondRot rot = (BondRot) obj; if (name.equals(rot.getName())) return true; else return false; } public int hashCode() { return name.hashCode(); } } king-2.21.120420/king/1.x_src/king/core/LabelPoint.java0000644000000000000000000000633111531212670020575 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; //import java.io.*; //import java.text.*; //import java.util.*; //import javax.swing.*; //}}} /** * LabelPoint implements a floating label at some point in space. * *

Begun on Mon Jun 24 21:09:57 EDT 2002 *
Copyright (C) 2002 by Ian W. Davis. All rights reserved. */ public class LabelPoint extends AbstractPoint // implements ... { //{{{ Static fields public static final int LEFT = 0; public static final int CENTER = 0x00800000; public static final int RIGHT = 0x00400000; public static final int HALIGN_MASK = ~(CENTER | RIGHT); //}}} //{{{ Variable definitions //################################################################################################## int minx = 0, miny = 0, maxx = 0, maxy = 0; //}}} //{{{ Constructors //################################################################################################## /** * Creates a new data point representing a label. * * @param list the list that contains this point * @param label the pointID of this point */ public LabelPoint(KList list, String label) { super(list, label); } //}}} //{{{ paintStandard //################################################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paintStandard(Engine engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; Paint paint = maincolor.getPaint(engine.backgroundMode, engine.colorCue); int width, ascent, descent; width = engine.painter.getLabelWidth(this.toString()); ascent = engine.painter.getLabelAscent(this.toString()); descent = engine.painter.getLabelDescent(this.toString()); maxy = (int)y + descent; // screen coords: big y is down miny = (int)y - ascent; // " if((multi & CENTER) != 0) { minx = (int)x - width/2; } else if((multi & RIGHT) != 0) { minx = (int)x - width; } else { minx = (int)x; } maxx = minx + width; engine.painter.paintLabel(paint, this.toString(), minx, y, z); } //}}} //{{{ alignment functions //################################################################################################## public void setHorizontalAlignment(int align) { multi = (multi & HALIGN_MASK) | align; } //}}} //{{{ isPickedBy() //################################################################################################## /** Returns this if the specified pick hits it, else returns null. */ public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { // Labels should always act in "object pick" mode //if(objPick && minx <= xx && xx <= maxx && miny <= yy && yy <= maxy) if(minx <= xx && xx <= maxx && miny <= yy && yy <= maxy) return this; else return super.isPickedBy(xx, yy, radius, objPick); } //}}} }//class king-2.21.120420/king/1.x_src/king/core/KinemageSignalSubscriber.java0000644000000000000000000000333411531212670023446 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * KinemageSignalSubscriber allows objects to * receive signals from a KinemageSignal, which reflects * state changes in the kinemage. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Mar 27 10:32:24 EST 2003 */ public interface KinemageSignalSubscriber //extends ... implements ... { /** * The hierarchical, logical structure of the kinemage has changed. * This includes addition/deletion of groups, subgroups, lists, * masters, and views (but not points). * Also included are changes to the animate, 2animate, dominant, * and nobutton properties. */ public static final int STRUCTURE = 1<<0; /** * The 3-D visual manifestation of the kinemage has changed. * This includes addition/deletion of points. * Also included are rotations, selection of a new viewpoint, * selection of a new aspect, and changes to point or list display properties. */ public static final int APPEARANCE = 1<<1; /** * A call to this method indicates that the specified * kinemage has changed somehow. * *

This method will be called in response to KinemageSignal.signalKinemage(). * * @param kinemage the Kinemage object that has changed * @param bitmask a set of flags describing which properties have changed. */ public void signalKinemage(Kinemage kinemage, int bitmask); }//class king-2.21.120420/king/1.x_src/king/core/Aspect.java0000644000000000000000000000410011531212670017753 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * Aspect has not yet been documented. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Wed Dec 4 10:26:15 EST 2002 */ public class Aspect //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## Kinemage parent; Integer index; String name; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @param parent the kinemage this aspect belongs to. * @param name a descriptive name for this aspect. * @param index the index of this aspect in the aspect string, * where the first position is index 1. */ public Aspect(Kinemage parent, String name, Integer index) { this.parent = parent; this.name = name; this.index = index; } //}}} //{{{ getName, getIndex //################################################################################################## public String getName() { return name; } public Integer getIndex() { return index; } //}}} //{{{ selectedFromMenu //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void selectedFromMenu(ActionEvent ev) { if(parent != null) parent.notifyAspectSelected(this); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/ProxyPoint.java0000644000000000000000000003435411531212670020705 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * ProxyPoint implements all the functions of KPoint by delegating * them to another KPoint. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Mon Oct 18 09:33:32 EDT 2004 */ public class ProxyPoint implements KPoint { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## KPoint proxyFor; //}}} //{{{ Constructor(s) //############################################################################## public ProxyPoint(KPoint proxyFor) { super(); this.proxyFor = proxyFor; } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ clone //################################################################################################## public Object clone() { return proxyFor.clone(); } //}}} //{{{ get/setOrigX/Y/Z //################################################################################################## /** Returns the untransformed coordinate for this point. * @deprecated In favor of getX(). */ public float getOrigX() { return proxyFor.getOrigX(); } /** Returns the untransformed coordinate for this point. * @deprecated In favor of getY(). */ public float getOrigY() { return proxyFor.getOrigY(); } /** Returns the untransformed coordinate for this point. * @deprecated In favor of getZ). */ public float getOrigZ() { return proxyFor.getOrigZ(); } /** Assigns a value to the untransformed coordinate for this point. * @deprecated In favor of setX(). */ public void setOrigX(double xx) { proxyFor.setOrigX(xx); } /** Assigns a value to the untransformed coordinate for this point. * @deprecated In favor of setY(). */ public void setOrigY(double yy) { proxyFor.setOrigY(yy); } /** Assigns a value to the untransformed coordinate for this point. * @deprecated In favor of setZ(). */ public void setOrigZ(double zz) { proxyFor.setOrigZ(zz); } /** Assigns a value to the untransformed coordinates for this point. * @deprecated In favor of setXYZ(). */ public void setOrigXYZ(Tuple3 t) { proxyFor.setOrigXYZ(t); } //}}} //{{{ get/setX/Y/Z //################################################################################################## /** Returns the untransformed coordinate for this point */ public double getX() { return proxyFor.getX(); } /** Returns the untransformed coordinate for this point */ public double getY() { return proxyFor.getY(); } /** Returns the untransformed coordinate for this point */ public double getZ() { return proxyFor.getZ(); } /** Assigns a value to the untransformed coordinate for this point */ public void setX(double xx) { proxyFor.setX(xx); } /** Assigns a value to the untransformed coordinate for this point */ public void setY(double yy) { proxyFor.setY(yy); } /** Assigns a value to the untransformed coordinate for this point */ public void setZ(double zz) { proxyFor.setZ(zz); } /** Assigns a value to the untransformed coordinates for this point */ public void setXYZ(double xx, double yy, double zz) { proxyFor.setXYZ(xx, yy, zz); } //}}} //{{{ get/setDrawX/Y/Z //################################################################################################## /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawX() { return proxyFor.getDrawX(); } /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawY() { return proxyFor.getDrawY(); } /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawZ() { return proxyFor.getDrawZ(); } /** Assigns a value to the fully transformed (drawing) coordinate for this point */ public void setDrawX(double xx) { proxyFor.setDrawX(xx); } /** Assigns a value to the fully transformed (drawing) coordinate for this point */ public void setDrawY(double yy) { proxyFor.setDrawY(yy); } /** Assigns a value to the fully transformed (drawing) coordinate for this point */ public void setDrawZ(double zz) { proxyFor.setDrawZ(zz); } /** Assigns a value to the fully transformed (drawing) coordinates for this point */ public void setDrawXYZ(Tuple3 t) { proxyFor.setDrawXYZ(t); } //}}} //{{{ get/setAllCoords, useCoordsXYZ //################################################################################################## /** * Stores an array of coordinates for "high-dimensional" points. * The float[] is stored without cloning and so is subject to overwrite. */ public void setAllCoords(float[] coords) { proxyFor.setAllCoords(coords); } /** * Retrieves the "high-dimensional" coordinates of this point, or null if not set. * The float[] is returned without cloning and so is subject to overwrite. */ public float[] getAllCoords() { return proxyFor.getAllCoords(); } /** * Copies the high-dimensional coordinates at the specified indices * into this point's (untransformed) X, Y, and Z fields. * If a index is out of range (0-based), it is ignored and the value is not changed. */ public void useCoordsXYZ(int xIndex, int yIndex, int zIndex) { proxyFor.useCoordsXYZ(xIndex, yIndex, zIndex); } //}}} //{{{ get/setPrev, isBreak //################################################################################################## /** * Sets the point that precedes this one. * This matters to "chainable" points, like vectors and triangles. * For other points, it does nothing. * @param pt the point preceding this one in seqence */ public void setPrev(KPoint pt) { proxyFor.setPrev(pt); } /** * Gets the point preceding this one in the chain. * @return the preceding point, or null if (a) this is a break in the chain or (b) this is not a chainable point type. */ public KPoint getPrev() { return proxyFor.getPrev(); } /** * True iff this is a chainable point type (e.g. vector, triangle) AND there is a chain break. */ public boolean isBreak() { return proxyFor.isBreak(); } //}}} //{{{ is/get/set{On, Unpickable, Ghost, Color, Aspects, Width, Radius, Comment} //################################################################################################## /** Indicates whether this element will paint itself, given the chance */ public boolean isOn() { return proxyFor.isOn(); } /** Sets the painting status of this element */ public void setOn(boolean paint) { proxyFor.setOn(paint); } /** Indicates whether this point can be picked with the mouse */ public boolean isUnpickable() { return proxyFor.isUnpickable(); } /** Sets the picking status of this point */ public void setUnpickable(boolean b) { proxyFor.setUnpickable(b); } /** Indicates whether this point is a "ghost" for Mage */ public boolean isGhost() { return proxyFor.isGhost(); } /** Sets the ghost status of this point */ public void setGhost(boolean b) { proxyFor.setGhost(b); } /** Returns the color of this point, or null if it inherits from its list */ public KPaint getColor() { return proxyFor.getColor(); } /** Sets the color of this point. */ public void setColor(KPaint c) { proxyFor.setColor(c); } /** Gets the aspect string of this point */ public String getAspects() { return proxyFor.getAspects(); } /** Sets the aspect string of this point */ public void setAspects(String a) { proxyFor.setAspects(a); } /** Gets the line width of this point, if applicable */ public int getWidth() { return proxyFor.getWidth(); } /** Sets the line width of this point, if applicable */ public void setWidth(int w) { proxyFor.setWidth(w); } /** Gets the radius of this point, if applicable */ public float getRadius() { return proxyFor.getRadius(); } /** Sets the radius of this point, if applicable */ public void setRadius(float radius) { proxyFor.setRadius(radius); } /** Sets the point comment for this point. */ public void setComment(String cmt) { proxyFor.setComment(cmt); } /** Gets the comment for this point, which defaults to null. */ public String getComment() { return proxyFor.getComment(); } //}}} //{{{ getDrawingColor //################################################################################################## /** Returns the color that will be used to draw this point (ignoring aspects). Never null. */ public KPaint getDrawingColor() { return proxyFor.getDrawingColor(); } /** Returns the color that will be used to draw this point, taking aspects into account. Never null. */ public KPaint getDrawingColor(Engine engine) { return proxyFor.getDrawingColor(engine); } //}}} //{{{ pmHit, pmWouldHit, get/setPmMask //################################################################################################## /** * Processes a pointmaster on/off request. * @param mask the bitmask indicating which masters are being turned on/off * @param offmask the bitmask indicating which masters are already off * @param turnon true if affected points are to be turned on, * false if affected points are to be turned off. */ public void pmHit(int mask, int offmask, boolean turnon) { proxyFor.pmHit(mask, offmask, turnon); } /** Indicates whether or not the given pointmaster set would affect this point. */ public boolean pmWouldHit(int mask) { return proxyFor.pmWouldHit(mask); } public int getPmMask() { return proxyFor.getPmMask(); } public void setPmMask(int mask) { proxyFor.setPmMask(mask); } //}}} //{{{ calcBoundingBox, calcRadiusSq //################################################################################################## /** * Gets a bounding box for the current model. * @param bound the first 6 elements get set to { minX, minY, minZ, maxX, maxY, maxZ }. * Should be called with { +inf, +inf, +inf, -inf, -inf, -inf } */ public void calcBoundingBox(float[] bound) { proxyFor.calcBoundingBox(bound); } /** * Gets the square of the radius of this model from the specified center. * @param center an array with the x, y, and z coordinates of the center * @return the square of the radius of this element, centered at center */ public float calcRadiusSq(float[] center) { return proxyFor.calcRadiusSq(center); } //}}} //{{{ signalTransform //################################################################################################## public void signalTransform(Engine engine, Transform xform) { proxyFor.signalTransform(engine, xform); } /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. * @param zoom the zoom factor encoded by the Transform, * as a convenience for resizing things. */ public void signalTransform(Engine engine, Transform xform, double zoom) { proxyFor.signalTransform(engine, xform, zoom); } //}}} //{{{ paintStandard, isPickedBy //################################################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paintStandard(Engine engine) { proxyFor.paintStandard(engine); } /** * Returns true if the specified pick hits this point, else returns false * Pays no attention to whether this point is marked as unpickable. * @param radius the desired picking radius * @param objPick whether we should try to pick solid objects in addition to points * @return the KPoint that should be counted as being picked, or null for none. * Usually this, but maybe not for object picking. */ public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { return proxyFor.isPickedBy(xx, yy, radius, objPick); } //}}} //{{{ get/setName, get/setOwner, toString //################################################################################################## /** Gets the name of this element */ public String getName() { return proxyFor.getName(); } /** Sets the name of this element */ public void setName(String nm) { proxyFor.setName(nm); } /** Determines the owner (parent) of this element */ public AGE getOwner() { return proxyFor.getOwner(); } /** Establishes the owner (parent) of this element */ public void setOwner(AGE owner) { proxyFor.setOwner(owner); } /** Gets the name of this element (same as getName()*/ public String toString() { return proxyFor.toString(); } //}}} //{{{ getKinemage //################################################################################################## /** Retrieves the Kinemage object holding this element, or null if none. */ public Kinemage getKinemage() { return proxyFor.getKinemage(); } //}}} //{{{ isVisible, isTotallyOn //################################################################################################## /** Indicates whether this element will actually be painted (i.e., is it and all its parents on?) */ public boolean isVisible() { return proxyFor.isVisible(); } /** Returns true iff this element is On, it's owner is On, it's owner's owner is On, and so on */ public boolean isTotallyOn() { return proxyFor.isTotallyOn(); } //}}} }//class king-2.21.120420/king/1.x_src/king/core/MasterGroup.java0000644000000000000000000002727311531212670021024 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.tree.*; import driftwood.gui.IndentBox; //}}} /** * MasterGroup is used to implements masters. * *

Copyright (C) 2002-2003 by Ian W. Davis. All rights reserved. *
Begun on Sun Jun 2 18:54:11 EDT 2002 */ public class MasterGroup extends AGE // implements ... { //{{{ Static fields //}}} //{{{ Variable definitions //################################################################################################## public int pm_mask = 0; // no point masters to start with boolean indent = false; boolean forceOnOff = false; // was state specified in kin? See setOnForced() Kinemage parent; //}}} //{{{ get/setOwner() //################################################################################################## /** Determines the owner (parent) of this element */ public AGE getOwner() { return parent; } /** Establishes the owner (parent) of this element */ public void setOwner(AGE owner) { parent = (Kinemage)owner; } //}}} //{{{ Constructors //################################################################################################## /** * Creates a new master control. * * @param owner the Kinemage that owns this master * @param label the ID of this master */ public MasterGroup(Kinemage owner, String label) { children = new ArrayList(10); setOwner(owner); setName(label); } //}}} //{{{ cboxHit, setOn{Limited, Forced}, buildButtons //################################################################################################## /** Called when the associated checkbox is turned on/off */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void cboxHit(ActionEvent ev) { this.setOn(cbox.getModel().isSelected()); notifyCboxHit(); } /** * Turns the checkbox on/off from within the program. * Automatically makes the same change to all groups immediately under this one. * Doesn't automatically trigger a redraw. */ public void setOn(boolean alive) { super.setOn(alive); touchMaster(alive); if(pm_mask != 0) pmHit(pm_mask, alive); } /** * Has the effect of setOn(), but without triggering the master. * That is, all groups/subgroups/lists/points that are under the control * of this master WILL NOT be affected by this function call. */ public void setOnLimited(boolean alive) { super.setOn(alive); } /** * Has the effect of setOn(), but delays triggering the master until * syncState() is called. This is useful for explicit 'on' and 'off' * designations of masters in the kinemage file. */ public void setOnForced(boolean alive) { setOnLimited(alive); this.forceOnOff = true; } /** Builds a grouping of Mage-style on/off buttons in the specified container. */ protected void buildButtons(Container cont) { if(hasButton()) { if(indent) { IndentBox ibox = new IndentBox(cbox); ibox.setIndent(8); cont.add(ibox); } else cont.add(cbox); } } //}}} //{{{ touchMaster, touchAGE //################################################################################################## /** * Traverses the kinemage, realizing the effects of turning on/off a single master. * @param state true for on, false for off */ private void touchMaster(boolean state) { if(parent == null) return; // Build a list of names of masters that are off ArrayList mastersOff = new ArrayList(); for(Iterator iter = parent.masterList().iterator(); iter.hasNext(); ) { MasterGroup m = (MasterGroup)iter.next(); if(!m.isOn()) mastersOff.add(m.getName()); } String[] mOff = (String[])mastersOff.toArray(new String[mastersOff.size()]); String mName = this.getName(); Iterator grIter, suIter, liIter; // Traverse the hierarchy applying the master for(grIter = parent.iterator(); grIter.hasNext(); ) { KGroup group = (KGroup)grIter.next(); touchAGE(group, state, mName, mOff); for(suIter = group.iterator(); suIter.hasNext(); ) { KSubgroup subgroup = (KSubgroup)suIter.next(); touchAGE(subgroup, state, mName, mOff); for(liIter = subgroup.iterator(); liIter.hasNext(); ) { KList list = (KList)liIter.next(); touchAGE(list, state, mName, mOff); }//lists }//subgroups }//groups } /** * Makes a master take affect on a single AGE. * If state is false (off), the AGE is turned off. * If state is true (on), *and* the AGE isn't controlled by a master that's off, it's turned on. * @param mName the master adopting the state 'state' * @param mOff all other masters that are already off */ private void touchAGE(AGE age, boolean state, String mName, String[] mOff) { if(age.hasMaster(mName) && age.isOn() != state) { // master was just turned on and age is off if(state) { for(int i = 0; i < mOff.length; i++) if(age.hasMaster(mOff[i])) return; age.setOn(true); } // master was just turned off and age is on else age.setOn(false); } } //}}} //{{{ syncState //################################################################################################## /** * Traverses the kinemage, examining the states of its targets. * If the master is on, it will be turned off iff none of its targets are on. * If the master is off, all targets will be turned off. * Assume that pointmastered points will be on. */ public void syncState() { if(parent == null) return; if(this.forceOnOff) { // This *WILL* trigger the master to turn things it controls ON or OFF this.setOn( this.isOn() ); //this.forceOnOff = false; } else if(this.isOn()) { Iterator grIter, suIter, liIter, ptIter; KGroup group; KSubgroup subgroup; KList list; KPoint point; String masterName = this.getName(); boolean state = false; for(grIter = parent.iterator(); !state && grIter.hasNext(); ) { group = (KGroup)grIter.next(); if(group.hasMaster(masterName)) state = state || group.isOn(); for(suIter = group.iterator(); !state && suIter.hasNext(); ) { subgroup = (KSubgroup)suIter.next(); if(subgroup.hasMaster(masterName)) state = state || subgroup.isOn(); for(liIter = subgroup.iterator(); !state && liIter.hasNext(); ) { list = (KList)liIter.next(); if(list.hasMaster(masterName)) state = state || list.isOn(); if(pm_mask != 0) // only do this if we're a pointmaster { for(ptIter = list.iterator(); !state && ptIter.hasNext(); ) { point = (KPoint)ptIter.next(); state = state || point.pmWouldHit(pm_mask); }//points }//if pointmaster }//lists }//subgroups }//groups // This won't trigger the master to turn on groups that are off this.setOnLimited(state); }//if this master was on to start with... else { // Master wasn't on, but wasn't forced (ie wasn't explicitly specified in the kin). // This should never happen, but if it did no action would be needed. } } //}}} //{{{ setPmMask, pmHit //################################################################################################## /** Sets the point master flags of this button based on a string */ public void setPmMask(String mask) { if(parent != null) pm_mask = parent.toPmBitmask(mask, true, false); // assume that if we have points, at least some of them are on // therefore, this master should start out on, too ///super.setOn(true); } /** * Processes a pointmaster on/off request. * @param mask the bitmask indicating which masters are being turned on/off * @param turnon true if affected groups are to be turned on, * false if affected groups are to be turned off. */ public void pmHit(int mask, boolean turnon) { if(parent == null) return; // Build a mask of master bits that are off; we're already on int offmask = 0; for(Iterator iter = parent.masterList().iterator(); iter.hasNext(); ) { MasterGroup m = (MasterGroup)iter.next(); if(!m.isOn()) offmask |= m.pm_mask; } if(turnon && (mask & ~offmask) == 0) return; //System.err.println(" turnon = "+turnon); //System.err.println(" mask = "+Integer.toBinaryString(mask)); //System.err.println("offmask = "+Integer.toBinaryString(offmask)); Iterator grIter, suIter, liIter, ptIter; KGroup group; KSubgroup subgroup; KList list; KPoint point; for(grIter = parent.iterator(); grIter.hasNext(); ) { group = (KGroup)grIter.next(); for(suIter = group.iterator(); suIter.hasNext(); ) { subgroup = (KSubgroup)suIter.next(); for(liIter = subgroup.iterator(); liIter.hasNext(); ) { list = (KList)liIter.next(); for(ptIter = list.iterator(); ptIter.hasNext(); ) { point = (KPoint)ptIter.next(); point.pmHit(mask, offmask, turnon); }//points }//lists }//subgroups }//groups }//pmHit() //}}} //{{{ MutableTreeNode functions //################################################################################################## public void insert(MutableTreeNode child, int index) { throw new UnsupportedOperationException("Masters can't be manipulated as part of the tree!"); } //}}} //{{{ addMaster, removeMaster, hasMaster, masterIterator //################################################################################################## /** Not supported */ public void addMaster(String masterName) { throw new UnsupportedOperationException("Not supported by MasterGroup"); } /** Not supported */ public void removeMaster(String masterName) { throw new UnsupportedOperationException("Not supported by MasterGroup"); } /** Not supported */ public boolean hasMaster(String masterName) { throw new UnsupportedOperationException("Not supported by MasterGroup"); } /** Not supported */ public Iterator masterIterator() { throw new UnsupportedOperationException("Not supported by MasterGroup"); } //}}} }//class king-2.21.120420/king/1.x_src/king/core/AHE.java0000644000000000000000000000377211531212670017147 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * AHE (Abstract Hierarchy Element) is the basis for all points, lists, groups, etc. * *

Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 10:50:32 EDT 2002 */ public interface AHE extends TransformSignalSubscriber { /** Gets the name of this element */ public String getName(); /** Sets the name of this element */ public void setName(String nm); /** Determines the owner (parent) of this element */ public AGE getOwner(); /** Establishes the owner (parent) of this element */ public void setOwner(AGE owner); /** Retrieves the Kinemage object holding this element, or null if none. */ public Kinemage getKinemage(); /** Indicates whether this element will paint itself, given the chance */ public boolean isOn(); /** Sets the painting status of this element */ public void setOn(boolean paint); /** Indicates whether this element will actually be painted (i.e., is it and all its parents on?) */ public boolean isVisible(); /** Returns true iff this element is On, it's owner is On, it's owner's owner is On, and so on */ public boolean isTotallyOn(); /** * Gets a bounding box for the current model. * @param bound the first 6 elements get set to { minX, minY, minZ, maxX, maxY, maxZ }. * Should be called with { +inf, +inf, +inf, -inf, -inf, -inf } */ public void calcBoundingBox(float[] bound); /** * Gets the square of the radius of this model from the specified center. * @param center an array with the x, y, and z coordinates of the center * @return the square of the radius of this element, centered at center */ public float calcRadiusSq(float[] center); }//class king-2.21.120420/king/1.x_src/king/core/KGroup.java0000644000000000000000000001163711531212670017760 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.tree.*; import driftwood.gui.*; //}}} /** * KGroup is the KiNG implementation of a Mage group. * *

Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 12:10:01 EDT 2002 */ public class KGroup extends AGE implements Cloneable { //{{{ Variable definitions //################################################################################################## Kinemage parent = null; boolean animate = false; boolean animate2 = false; //}}} //{{{ Constructor(s) //################################################################################################## /** Constructor */ public KGroup() { children = new ArrayList(10); setName(null); } /** Constructor */ public KGroup(Kinemage owner, String nm) { children = new ArrayList(10); setOwner(owner); setName(nm); } //}}} //{{{ clone //################################################################################################## /** * Creates a copy of this group and all its children. * @param clonePoints whether to clone even the individual points, * or whether we should use instance= at the list level instead. */ public Object clone(boolean clonePoints) { try { KGroup x = (KGroup) super.clone(clonePoints); x.setName( x.getName() ); // tricks it into creating a new JCheckBox object // Deep copy of children x.children = new ArrayList(); for(Iterator iter = this.children.iterator(); iter.hasNext(); ) { KSubgroup child = (KSubgroup) iter.next(); KSubgroup clone = (KSubgroup) child.clone(clonePoints); clone.setOwner(x); x.add(clone); } // Semi-deep copy of masters, which just contains Strings if(this.masters != null) x.masters = new ArrayList(this.masters); return x; } catch(CloneNotSupportedException ex) { throw new Error("Clone failed in cloneable object"); } } //}}} //{{{ setName() //################################################################################################## /** Sets the name of this element */ public void setName(String nm) { super.setName(nm); StringBuffer buttonName = new StringBuffer(); if(this.isAnimate()) buttonName.append("*"); if(this.is2Animate()) buttonName.append("%"); if(this.isAnimate() || this.is2Animate()) buttonName.append(" "); buttonName.append(nm); cbox.setText(buttonName.toString()); } //}}} //{{{ get/setOwner() //################################################################################################## /** Determines the owner (parent) of this element */ public AGE getOwner() { return parent; } /** Establishes the owner (parent) of this element */ public void setOwner(AGE owner) { parent = (Kinemage)owner; } //}}} //{{{ is/set(2)Animate() //################################################################################################## /** Checks to see if this group should be animated. */ public boolean isAnimate() { return animate; } /** Sets the animate property. Animations still must be regenerated manually! */ public void setAnimate(boolean b) { animate = b; setName(getName()); } /** Checks to see if this group should be animated. */ public boolean is2Animate() { return animate2; } /** Sets the animate property. Animations still must be regenerated manually! */ public void set2Animate(boolean b) { animate2 = b; setName(getName()); } //}}} //{{{ add() //################################################################################################## /** Adds a child to this element */ public void add(KSubgroup child) { children.add(child); } //}}} //{{{ MutableTreeNode functions -- insert() //################################################################################################## public void insert(MutableTreeNode child, int index) { if(! (child instanceof KSubgroup)) throw new IllegalArgumentException("Groups can only contain subgroups!"); if(index < 0 || index > children.size()) children.add(child); else children.add(index, child); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/core/KingView.java0000644000000000000000000003730611531212670020275 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: package king.core; import java.awt.event.*; import java.io.*; //import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; /** * KingView holds a rotation matrix that specifies the current view or some saved view. * Views are thread-safe, although most King components are not. * This allows e.g. an auto-rocker to update the view in the background even if the event thread is repainting the window. * *

Zooms and clipping are specified such that a zoom factor of 1.0 means the object will fill the available * display space without extending outside it, regardless of its orientation. * A clipping value of 1.0 means that at a zoom of 1.0, no part of the object will be clipped. * *

Note that changing the rotation, zoom, etc. does NOT trigger a repaint of the graphics window -- * that is the responsibility of the caller. * *

Begun on Thu May 23 21:08:29 EDT 2002 *
Copyright (C) 2002 by Ian W. Davis. All rights reserved. */ public class KingView { //{{{ Static fields static final int N_UPDATES_ALLOWED = 100; //}}} //{{{ Variable definitions //################################################################################################## Kinemage parent = null; // The label used on the View menu String ID = "Unnamed view"; // The rotation matrix public float[][] xform = { {1f, 0f, 0f}, {0f, 1f, 0f}, {0f, 0f, 1f} }; // Coordinates (in real-space) of the center of rotation float[] center = null; /** The zooming factor */ float zoom = 0f; /** The span factor, an alternate representation of zoom. */ float span = 0f; /** The clipping factor */ float clip = 1f; /** The elements of the transformation matrix, in real-space. Call compile() before using them! */ public float R11 = 1f, R12 = 0f, R13 = 0f, R21 = 0f, R22 = 1f, R23 = 0f, R31 = 0f, R32 = 0f, R33 = 1f; /** The center of rotation, in real-space. Call compile() before using them! */ public float cx = 0f, cy = 0f, cz = 0f; /** 0-based indices of which viewing axes to use when this view is activated. */ int[] viewingAxes = null; // null -> don't change axes when selected // A counter for when this matrix needs to be 'cleaned' int nUpdates = 0; //}}} //{{{ Constructors & clone() //################################################################################################## /** * Constructor */ public KingView(Kinemage kin) { parent = kin; } /** Duplicates this object */ public synchronized Object clone() { KingView ret = new KingView(parent); ret.ID = ID; ret.xform = (float[][])xform.clone(); if(center == null) ret.center = getCenter(); else ret.center = (float[])center.clone(); ret.zoom = zoom; ret.span = span; ret.clip = clip; ret.compile(); return ret; } //}}} //{{{ get/setName(), toString() //################################################################################################## /** Gets the name of this element */ public String getName() { return ID; } /** Sets the name of this element */ public synchronized void setName(String nm) { ID = nm; } /** Gets the name of this element (same as getName()*/ public String toString() { return getName(); } //}}} //{{{ Matrix math routines //################################################################################################## // Multiplies two 3x3 matrices float[][] mmult(float[][] A, float[][] B) { float[][] R = new float[3][3]; int i, j, k; float r; for(i = 0; i < 3; i++) {// row loop for(j = 0; j < 3; j++) {// column loop r = 0f; // index loop for(k = 0; k < 3; k++) r += A[i][k] * B[k][j]; R[i][j] = r; }// column loop }// row loop return R; } // Multiplies a 3x3 matrix with a 3x1 vector float[] mmult(float[][] A, float[] X) { float[] R = new float[3]; int i, j; float r; for(i = 0; i < 3; i++) {// row loop r = 0f; // index loop for(j = 0; j < 3; j++) r += A[i][j] * X[j]; R[i] = r; } return R; } /** * Adjusts matrix values for self-consistency -- http://www.makegames.com/3drotation/ * * R is special orthogonal (I'll trust their math): * R R' = I (R times its transpose is identity) * det R = 1 (determinant of R equals 1) * * "A more helpful set of properties is provided by Michael E. Pique in Graphics Gems (Glassner, Academic Press, 1990): * 1. R is normalized: the squares of the elements in any row or column sum to 1. * 2. R is orthogonal: the dot product of any pair of rows or any pair of columns is 0. * 3. The rows of R represent the coordinates in the original space of unit vectors along the coordinate axes of the rotated space. (Figure 1). * 4. The columns of R represent the coordinates in the rotated space of unit vectors along the axes of the original space." * * Here I follow the procedure described above for building a "good" rotation matrix (sort of), * but without using what they call a World Up vector, since we're in a molecule & that doesn't mean anything. * I call the rows X*, Y*, and Z*, as per (3) above */ void normalize(float[][] A) { float mag; // Don't change 3rd row (Z*) except to normalize it (magnitude --> 1) mag = (float)Math.sqrt(A[2][0]*A[2][0] + A[2][1]*A[2][1] + A[2][2]*A[2][2]); A[2][0] = A[2][0]/mag; A[2][1] = A[2][1]/mag; A[2][2] = A[2][2]/mag; // Normalize 2nd row (Y*), then take cross product to get the first ( Y* x Z* = X* ) // X* will be normalized b/c Y* and Z* are. // x = mag = (float)Math.sqrt(A[1][0]*A[1][0] + A[1][1]*A[1][1] + A[1][2]*A[1][2]); A[1][0] = A[1][0]/mag; A[1][1] = A[1][1]/mag; A[1][2] = A[1][2]/mag; A[0][0] = A[1][1]*A[2][2] - A[1][2]*A[2][1]; A[0][1] = A[1][2]*A[2][0] - A[1][0]*A[2][2]; A[0][2] = A[1][0]*A[2][1] - A[1][1]*A[2][0]; // Now let Y* = Z* x X* so it's perpendicular to both! // x = A[1][0] = A[2][1]*A[0][2] - A[2][2]*A[0][1]; A[1][1] = A[2][2]*A[0][0] - A[2][0]*A[0][2]; A[1][2] = A[2][0]*A[0][1] - A[2][1]*A[0][0]; } // Constructs the transpose of a 3x3 matrix float[][] transpose(float[][] A) { float[][] R = new float[3][3]; int i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) R[i][j] = A[j][i]; } return R; } //}}} Matrix math routines //{{{ Compositing (compile()) //################################################################################################## /** * Updates this view's public fields to reflect the current internal state. */ public synchronized void compile() { R11 = xform[0][0];// * zoom; R12 = xform[0][1];// * zoom; R13 = xform[0][2];// * zoom; R21 = xform[1][0];// * zoom; R22 = xform[1][1];// * zoom; R23 = xform[1][2];// * zoom; R31 = xform[2][0];// * zoom; R32 = xform[2][1];// * zoom; R33 = xform[2][2];// * zoom; if(center == null) getCenter(); cx = center[0]; cy = center[1]; cz = center[2]; } //}}} //{{{ Rotation functions //################################################################################################## /** * Rotates about the axis defined as 'x' by the basis of this tranform. * @param t the amount of rotation, in radians */ public synchronized void rotateX(float t) { float sin, cos; sin = (float)Math.sin(t); cos = (float)Math.cos(t); float[][] rot = { {1f, 0f, 0f}, {0f, cos, -sin}, {0f, sin, cos} }; xform = mmult(rot, xform); if(++nUpdates % N_UPDATES_ALLOWED == 0) { nUpdates = 0; normalize(xform); } } /** * Rotates about the axis defined as 'y' by the basis of this tranform. * @param t the amount of rotation, in radians */ public synchronized void rotateY(float t) { float sin, cos; sin = (float)Math.sin(t); cos = (float)Math.cos(t); float[][] rot = { {cos, 0f, sin}, {0f, 1f, 0f}, {-sin, 0f, cos} }; xform = mmult(rot, xform); if(++nUpdates % N_UPDATES_ALLOWED == 0) { nUpdates = 0; normalize(xform); } } /** * Rotates about the axis defined as 'z' by the basis of this tranform. * @param t the amount of rotation, in radians */ public synchronized void rotateZ(float t) { float sin, cos; sin = (float)Math.sin(t); cos = (float)Math.cos(t); float[][] rot = { {cos, -sin, 0f}, {sin, cos, 0f}, {0f, 0f, 1f} }; xform = mmult(rot, xform); if(++nUpdates % N_UPDATES_ALLOWED == 0) { nUpdates = 0; normalize(xform); } } //}}} //{{{ get/set/adjust functions //################################################################################################## /** * Sets the label used to identify this view. * Identical to setName(). * @param name the name of this view */ public synchronized void setID(String name) { setName(name); } /** * Sets the matrix used by this view * @param matrix a 3x3 matrix, matrix[row][col] */ public synchronized void setMatrix(float[][] matrix) { xform = (float[][])matrix.clone(); } /** * Sets the current zoom factor. * The zoom factor is defined as the ratio of the span of the kinemage * to the span of this view, such that values less than 1 appear to be * distant, and values greater than 1 appear to be zoomed in. * *

Calling this function will overwrite the previous value for span. * * @param z the desired zoom */ public synchronized void setZoom(float z) { zoom = z; span = 0f; } /** * Gets the span of this view, * i.e., the desired width of the graphics area in model units. */ public float getSpan() { if(span <= 0f) { if(zoom <= 0f) zoom = 1.0f; span = parent.getSpan() / zoom; } return span; } /** * Set the span of this view, which (if no zoom has been set or zoom is <= 0) * will set the zoom such that an object s units across fits on screen. */ public synchronized void setSpan(float s) { span = s; } /** * Returns the current clip factor. * @return the current clip */ public float getClip() { return clip; } /** * Sets the current clip factor. * @param c the desired clip */ public synchronized void setClip(float c) { clip = c; } /** Returns the coordinates of the current center as a float[] = {x,y,z} */ public synchronized float[] getCenter() { if(center == null) { if(parent != null) center = parent.getCenter(); else { float[] dummy = { 0f, 0f, 0f }; center = dummy; } } return (float[])center.clone(); } /** * Set the center point for this transform. * @param x the x coordinate * @param y the y coordinate * @param z the z coordinate */ public synchronized void setCenter(float x, float y, float z) { if(center == null) center = new float[3]; center[0] = x; center[1] = y; center[2] = z; } /** * Given a pixel offset in rotated and scaled coordinates, calculate an offset in "real" coordinates. * If x and y are taken from screen coordinates, remember to invert y! */ public synchronized float[] translateRotated(int x, int y, int z, int screenSize) { float cx, cy, cz, correctedZoom; correctedZoom = (float)screenSize / getSpan(); //getZoom() * (float)screenSize / parent.getSpan(); cx = (float)x / correctedZoom; cy = (float)y / correctedZoom; cz = (float)z / correctedZoom; float[] tcoord = { cx, cy, cz }; float[] coord = mmult(transpose(xform), tcoord); return coord; } /** * Given a pixel offset in rotated and scaled coordinates, calculate a new center point. * If x and y are taken from screen coordinates, remember to invert y! */ public synchronized void viewTranslateRotated(int x, int y, int z, int screenSize) { float[] coord = translateRotated(x, y, z, screenSize); float[] orig = getCenter(); setCenter(orig[0]-coord[0], orig[1]-coord[1], orig[2]-coord[2]); } //}}} //{{{ selectedFromMenu, get/setViewingAxes //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void selectedFromMenu(ActionEvent ev) { if(parent != null) { parent.notifyViewSelected(this); if(viewingAxes != null) setAxes(parent, viewingAxes[0], viewingAxes[1], viewingAxes[2]); } } /** * Stores a set of 0-based indices for the coordinates axes that should be * placed into X, Y, Z when this view is activated. * Indices are stored as an int[3], or null (meaning no change). * This does NOT automatically update the coordinates in the kinemage, * even if called on the currently active view. * Coordinates ARE automatically updated when this view is next chosen from the menu. */ public void setViewingAxes(int[] indices) { if(indices == null) this.viewingAxes = null; else this.viewingAxes = (int[]) indices.clone(); } /** Returns the value set by setViewingAxes() (may be null) */ public int[] getViewingAxes() { return this.viewingAxes; } //}}} //{{{ setAxes //############################################################################## /** * Copies the high-dimensional coordinates at the specified indices * into all point's (untransformed) X, Y, and Z fields. * If a index is out of range (0-based), it is ignored and the value is not changed. */ static public void setAxes(Kinemage kin, int xIndex, int yIndex, int zIndex) { for(Iterator gi = kin.iterator(); gi.hasNext(); ) { KGroup group = (KGroup) gi.next(); for(Iterator si = group.iterator(); si.hasNext(); ) { KSubgroup subgroup = (KSubgroup) si.next(); for(Iterator li = subgroup.iterator(); li.hasNext(); ) { KList list = (KList) li.next(); // We will miss points with extra coordinates if // list.dimension wasn't set... if(list.getDimension() <= 3) continue; for(Iterator pi = list.iterator(); pi.hasNext(); ) { KPoint pt = (KPoint) pi.next(); pt.useCoordsXYZ(xIndex, yIndex, zIndex); } } } } kin.getCurrentView().setViewingAxes(new int[] {xIndex, yIndex, zIndex}); kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/Plugin.java0000644000000000000000000001342111531212674017054 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; //import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * Plugin is a way for arbitrary, specialized * functionalities to be incorporated into KiNG in a * highly modular manner. * * To be a Plugin, a class should at a minimum implement getToolsMenuItem(), * getHelpMenuItem(), and toString(). * It's often easier to implement getHelpAnchor() than getHelpMenuItem(). * More complicated plugins should implement getDependencies() and isAppletSafe(). * * Plugins are very similar to Tools, except that Plugins * do not receive mouse events from the graphics window; and * Plugins are not exclusive, whereas activating one Tool * necessarily de-activates the previous one. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Tue Apr 1 12:23:40 EST 2003 */ abstract public class Plugin //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## // These are protected so that the Plugin can be subclassed // outside of the "king" package. protected ToolBox parent; protected KingMain kMain; protected KinCanvas kCanvas; protected ToolServices services; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public Plugin(ToolBox tb) { parent = tb; kMain = tb.kMain; kCanvas = tb.kCanvas; services = tb.services; } //}}} //{{{ getToolsMenuItem, getHelpMenuItem //################################################################################################## /** * Creates a new JMenuItem to be displayed in the Tools menu, * which will allow the user to access function(s) associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several functionalities under it. * * The Plugin may return null to indicate that it has no * associated menu item. */ abstract public JMenuItem getToolsMenuItem(); /** * Creates a new JMenuItem to be displayed in the Help menu, * which will allow the user to access help information associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several items under it. However, * Plugins are encouraged to consolidate all documentation * into one location. The king.HTMLHelp class may be of use here. * * By default, a menu item will be created that signals the onHelp() * function, which in turn displays the HTML page named by getHelpURL(). * * The Plugin may return null to indicate that it has no * associated menu item. */ public JMenuItem getHelpMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onHelp")); } //}}} //{{{ onHelp, getHelpURL, getHelpAnchor //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelp(ActionEvent ev) { URL start = this.getHelpURL(); if(start != null) new HTMLHelp(kMain, start).show(); else JOptionPane.showMessageDialog(kMain.getTopWindow(), "Unable to find documentation for this plugin.", "Sorry!", JOptionPane.ERROR_MESSAGE); } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/king/html/king-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this plugin. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#edmap-plugin" (or null) */ public String getHelpAnchor() { return null; } //}}} //{{{ getDependencies, isAppletSafe //################################################################################################## /** * Returns a Collection<String> of all Plugins that must be instantiated * before this one is. If one or more dependencies cannot be resolved, * the plugin will generally not be loaded; * thus, be careful to avoid circular dependencies. * @return a Collection of the fully-qualified names of all plugins that * this Plugin depends on, as Strings. The default is no dependencies. */ static public Collection getDependencies() { return Collections.EMPTY_LIST; } /** * Returns true if and only if this plugin is safe to instantiate when * KiNG is running as an applet in a web browser. * Plugins that access the file system or arbitrary URLs (among other things) * should override this method to return true. * @return the default value of false */ static public boolean isAppletSafe() { return true; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/ToolBoxMW.java0000644000000000000000000000335611531212674017456 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * ToolBoxMW extends ToolBox with mouse-wheel functionality. * This class needs Java 1.4 or later, it is NOT compatible with Java 1.3. * It should never be referenced directly from anywhere in the KiNG program; * only references generated through the Reflection API are safe. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Mon Dec 9 10:35:21 EST 2002 */ public class ToolBoxMW extends ToolBox implements MouseWheelListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public ToolBoxMW(KingMain kmain, KinCanvas kcanv) { super(kmain, kcanv); } //}}} //{{{ listenTo //################################################################################################## /** Does all the work to make the ToolBox listen to the specified component. */ public void listenTo(Component c) { super.listenTo(c); c.addMouseWheelListener(this); } //}}} //{{{ mouseWheelMoved //################################################################################################## public void mouseWheelMoved(MouseWheelEvent ev) { this.mouseWheelMoved(ev, ev.getWheelRotation()); } //}}} }//class king-2.21.120420/king/1.x_src/king/BasicTool.java0000644000000000000000000004272711531212674017510 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.net.*; //import java.text.*; import java.util.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * BasicTool implements the most common manipulation functions. * It is intended to serve as a basis for the construction of new tools, which should override * one or more of the xx_click(), xx_drag(), and xx_wheel() functions. * Note that some of these functions have default activities; * descendents may want to replace one or more with null functions. * *

Begun on Fri Jun 21 09:30:40 EDT 2002 *
Copyright (C) 2002 by Ian W. Davis. All rights reserved. */ public class BasicTool extends Plugin implements MouseListener, MouseMotionListener, TransformSignalSubscriber, WindowListener { //{{{ Static fields static final Object MODE_UNDECIDED = new Object(); static final Object MODE_VERTICAL = new Object(); static final Object MODE_HORIZONTAL = new Object(); //}}} //{{{ Variable definitions //################################################################################################## protected int lastXCoord = 0, lastYCoord = 0; protected int pressXCoord = 0, pressYCoord = 0; protected boolean isNearTop = false, isNearBottom = false; protected Object mouseDragMode = MODE_UNDECIDED; protected JDialog dialog = null; private boolean hasBeenCentered = false; //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public BasicTool(ToolBox tb) { super(tb); } //}}} //{{{ start/stop/reset functions //################################################################################################## public void start() { show(); } public void stop() { hide(); } public void reset() {} //}}} //{{{ initDialog, show, hide //################################################################################################## protected void initDialog() { Container content = this.getToolPanel(); if(content == null) return; dialog = new JDialog(kMain.getTopWindow(), this.toString(), false); // false => not modal //dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dialog.addWindowListener(this); // to make the window close button work dialog.setContentPane(content); //dialog.invalidate(); //dialog.validate(); dialog.pack(); } protected void show() { if(dialog == null) initDialog(); if(dialog == null) return; if(!dialog.isVisible()) { dialog.pack(); Container w = kMain.getContentContainer(); if(w != null) { Point p = w.getLocation(); Dimension dimDlg = dialog.getSize(); Dimension dimWin = w.getSize(); p.x += dimWin.width - (dimDlg.width / 2) ; p.y += (dimWin.height - dimDlg.height) / 2; dialog.setLocation(p); } dialog.setVisible(true); } else { dialog.toFront(); } } protected void hide() { if(dialog != null) dialog.setVisible(false); } //}}} //{{{ xx_click() functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { services.pick(p); if(p != null && p.getComment() != null) clickActionHandler(p.getComment()); } /** Override this function for right-button/shift clicks */ public void s_click(int x, int y, KPoint p, MouseEvent ev) { services.centerOnPoint(p); } /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { click(x, y, p, ev); } /** Override this function for shift-control clicks */ public void sc_click(int x, int y, KPoint p, MouseEvent ev) { click(x, y, p, ev); } //}}} //{{{ xx_drag() functions //################################################################################################## /** Override this function for (left-button) drags */ public void drag(int dx, int dy, MouseEvent ev) { if(services.doFlatland.isSelected()) { if(isNearTop) services.ztranslate(dx); else services.translate(dx, dy); } else { if(isNearTop) services.pinwheel(dx); else services.rotate(dx, dy); } } /** Override this function for right-button/shift drags */ public void s_drag(int dx, int dy, MouseEvent ev) { if(mouseDragMode == MODE_VERTICAL) services.adjustZoom(dy); else if(mouseDragMode == MODE_HORIZONTAL) services.adjustClipping(dx); } /** Override this function for middle-button/control drags */ public void c_drag(int dx, int dy, MouseEvent ev) { if(isNearTop) services.ztranslate(dx); else services.translate(dx, dy); } /** Override this function for shift-control drags */ public void sc_drag(int dx, int dy, MouseEvent ev) { // Like normal rotation, but can only rotate about Y axis if(isNearTop) services.pinwheel(dx); else services.rotate(dx, 0); } //}}} //{{{ xx_wheel() functions //################################################################################################## /** Override this function for mouse wheel motion */ public void wheel(int rotation, MouseEvent ev) { services.adjustZoom(rotation*18f); } /** Override this function for mouse wheel motion with shift down */ public void s_wheel(int rotation, MouseEvent ev) { services.adjustClipping(-rotation*18f); } /** Override this function for mouse wheel motion with control down */ public void c_wheel(int rotation, MouseEvent ev) { wheel(rotation, ev); } /** Override this function for mouse wheel motion with shift AND control down */ public void sc_wheel(int rotation, MouseEvent ev) { s_wheel(rotation, ev); } //}}} //{{{ clickActionHandler //################################################################################################## /** * This function gets called by BasicTool.click() iff the currently selected * point has a point comment associated with it. Subclasses that wish to * implement custom actions (which match /^[a-zA-Z]+:.+/ ) * stored in point comments can override this method. * @param comment the point comment for the picked point * @return true if the action was handled, false if not * @since 1.34 */ protected boolean clickActionHandler(String comment) { if(comment.startsWith("http:")) { try { URL url; // Saying "http:foo/bar.html" allows us to use relative URLs in applets if(!comment.startsWith("http://") && kMain.getApplet() != null) url = new URL(kMain.getApplet().getDocumentBase(), comment.substring(5)); else url = new URL(comment); new HTMLHelp(kMain, url).show(); return true; } catch(MalformedURLException ex) { SoftLog.err.println("Bad HTTP URL in point comment: "+comment); return false; } } else return false; } //}}} //{{{ Mouse motion listeners //################################################################################################## /** * This function is compatible with Java 1.3, so * we can define keyboard equivalents, etc. */ public void mouseWheelMoved(MouseEvent ev, int rotation) { boolean isShift, isCtrl; isShift = ev.isShiftDown(); isCtrl = ev.isControlDown(); if(isShift && isCtrl) sc_wheel(rotation, ev); else if(isCtrl) c_wheel(rotation, ev); else if(isShift) s_wheel(rotation, ev); else wheel(rotation, ev); } public void mouseDragged(MouseEvent ev) { Dimension dim = kCanvas.getCanvasSize(); Point where = ev.getPoint(); int dx, dy; dx = where.x - lastXCoord; dy = where.y - lastYCoord; // Force a (strong?) committment to either horizonal // or vertical motion before we take action /*if(mouseDragMode == MODE_UNDECIDED) { if(Math.abs(dy) > 0+Math.abs(dx)) mouseDragMode = MODE_VERTICAL; else if(Math.abs(dx) > 0+Math.abs(dy)) mouseDragMode = MODE_HORIZONTAL; }*/ if(mouseDragMode == MODE_UNDECIDED) { int tdx = Math.abs(where.x - pressXCoord); int tdy = Math.abs(where.y - pressYCoord); if(tdx/2 >= tdy+1) mouseDragMode = MODE_HORIZONTAL; else if(tdy/2 >= tdx+1) mouseDragMode = MODE_VERTICAL; } boolean isShift, isCtrl, isShiftCtrl; isShift = SwingUtilities.isRightMouseButton(ev) || ev.isShiftDown(); isCtrl = SwingUtilities.isMiddleMouseButton(ev) || ev.isControlDown(); isShiftCtrl = (isShift && isCtrl) || (SwingUtilities.isLeftMouseButton(ev) && SwingUtilities.isRightMouseButton(ev)); if(isShiftCtrl) sc_drag(dx, dy, ev); else if(isCtrl) c_drag(dx, dy, ev); else if(isShift) s_drag(dx, dy, ev); else drag(dx, dy, ev); lastXCoord = where.x; lastYCoord = where.y; } public void mouseMoved(MouseEvent ev) {} //}}} //{{{ Mouse click listners //################################################################################################## public void mouseClicked(MouseEvent ev) { // Handle picking, etc. here int x = ev.getX(), y = ev.getY(); KPoint p = null; if(kMain.getKinemage() != null) p = kCanvas.getEngine().pickPoint(x, y, services.doSuperpick.isSelected()); // otherwise, we just create a nonsensical warning message about stereo picking /* Mouse debugging * / // Java: RMB == Meta, MMB == Alt // Apple: RMB == Control (not in Java?) (2 btn but not 3 btn mouse?) if(SwingUtilities.isLeftMouseButton(ev)) SoftLog.err.print("Left "); if(SwingUtilities.isMiddleMouseButton(ev)) SoftLog.err.print("Middle "); if(SwingUtilities.isRightMouseButton(ev)) SoftLog.err.print("Right "); if(ev.isShiftDown()) SoftLog.err.print("Shift "); if(ev.isControlDown()) SoftLog.err.print("Control "); if(ev.isMetaDown()) SoftLog.err.print("Meta "); if(ev.isAltDown()) SoftLog.err.print("Alt "); SoftLog.err.println(Integer.toBinaryString(ev.getModifiers())); /* Mouse debugging */ boolean isShift, isCtrl; isShift = SwingUtilities.isRightMouseButton(ev) || ev.isShiftDown(); isCtrl = SwingUtilities.isMiddleMouseButton(ev) || ev.isControlDown(); /** * This "if" statement is to correct for a Java 1.5 issue where * pressing mouse and releasing counts as a click as well, so * using the right mouse to zoom would also recenter if you released * over a point. See java bug # 5039416. **/ if (mouseDragMode.equals(MODE_UNDECIDED)) { if(isShift && isCtrl) sc_click(x, y, p, ev); else if(isCtrl) c_click(x, y, p, ev); else if(isShift) s_click(x, y, p, ev); else click(x, y, p, ev); } } public void mouseEntered(MouseEvent ev) {} public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) { Dimension dim = kCanvas.getCanvasSize(); isNearBottom = isNearTop = false; if(ev.getY() < (dim.height / 6)) isNearTop = true; else if(ev.getY() > ((dim.height * 5) / 6)) isNearBottom = true; Point where = ev.getPoint(); pressXCoord = lastXCoord = where.x; pressYCoord = lastYCoord = where.y; mouseDragMode = MODE_UNDECIDED; } public void mouseReleased(MouseEvent ev) {} //}}} //{{{ Window listeners //################################################################################################## public void windowActivated(WindowEvent ev) {} public void windowClosed(WindowEvent ev) {} public void windowClosing(WindowEvent ev) { parent.activateDefaultTool(); } public void windowDeactivated(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowOpened(WindowEvent ev) {} //}}} //{{{ onArrowUp/Down/Right/Left //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowUp(ActionEvent ev) { // fake event, except for modifiers MouseEvent mev = new MouseEvent(kCanvas, 0, 0, ev.getModifiers(), 0, 0, 0, false); mouseWheelMoved(mev, -1); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowDown(ActionEvent ev) { // fake event, except for modifiers MouseEvent mev = new MouseEvent(kCanvas, 0, 0, ev.getModifiers(), 0, 0, 0, false); mouseWheelMoved(mev, 1); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowRight(ActionEvent ev) { KingView v = kMain.getView(); if(v == null) return; v.rotateY((float)(Math.PI/180.0) * 2f); kCanvas.repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowLeft(ActionEvent ev) { KingView v = kMain.getView(); if(v == null) return; v.rotateY((float)(Math.PI/180.0) * -2f); kCanvas.repaint(); } //}}} //{{{ signalTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void signalTransform(Engine engine, Transform xform) { } //}}} //{{{ overpaintCanvas //################################################################################################## /** * Called by KinCanvas after all kinemage painting is complete, * this gives the tools a chance to write additional info * (e.g., point IDs) to the graphics area. * @param painter the Painter that can paint on the current canvas */ public void overpaintCanvas(Painter painter) { } //}}} //{{{ getToolsMenuItem, onToolActivate, getToolPanel, getHelpAnchor, toString //################################################################################################## /** * Creates a new JRadioButtonMenuItem to be displayed in the Tools menu, * which will allow the user to access function(s) associated * with this Tool. * * A tool that wants to return null here should probably be a Plugin instead. * @return a JRadioButtonMenuItem (not just a regular JMenuItem) */ public JMenuItem getToolsMenuItem() { JRadioButtonMenuItem btn = new JRadioButtonMenuItem( new ReflectiveAction(this.toString(), null, this, "onToolActivate")); btn.setSelected(false); return btn; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onToolActivate(ActionEvent ev) { parent.toolActivated(this); } /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return "#navigate-tool"; } public String toString() { return "Navigate"; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/EDMapPlotter.java0000644000000000000000000001306311531212674020120 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.isosurface.*; //}}} /** * EDMapPlotter creates an isosurface * by instantiating VectorPoints directly. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Tue Mar 4 14:35:25 EST 2003 */ public class EDMapPlotter implements EdgePlotter { //{{{ Constants DecimalFormat df2 = driftwood.util.Strings.usDecimalFormat("0.##"); //}}} //{{{ Variable definitions //################################################################################################## KList list; VectorPoint prevV; TrianglePoint prevT; String level; Object mode; boolean unpickable; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @param mode is one of the MarchingCubes.MODE_xxx constants. */ public EDMapPlotter(boolean pickable, Object mode) { list = null; prevV = null; prevT = null; level = null; unpickable = !pickable; if(mode != MarchingCubes.MODE_MESH && mode != MarchingCubes.MODE_TRIANGLE) throw new IllegalArgumentException("Illegal MarchingCubes MODE constant: "+mode); this.mode = mode; } //}}} //{{{ startIsosurface //################################################################################################## /** * Called before the isosurface generator starts plotting anything. * Gives this plotter a chance to initialize any needed data structures, streams, etc. * @param lvl the level for which an isosurface will be generated */ public void startIsosurface(double lvl) { level = df2.format(lvl); list = new KList(); list.setName("ED map @ "+level); list.setType((mode == MarchingCubes.MODE_MESH ? KList.VECTOR : KList.TRIANGLE)); list.setWidth(1); if(mode == MarchingCubes.MODE_TRIANGLE) list.alpha = (int)(0.25 * 255); } //}}} //{{{ startCell //################################################################################################## /** * Called before the isosurface generator starts each cell. * @param i the minimum x index of the current cell * @param j the minimum y index of the current cell * @param k the minimum z index of the current cell */ public void startCell(int i, int j, int k) { prevV = null; prevT = null; } //}}} //{{{ plotEdge //################################################################################################## /** * Called for each edge in the isosurface mesh. * @param x the x coordinate of the current point * @param y the y coordinate of the current point * @param z the z coordinate of the current point * @param lineto if true, a line should be drawn from the last point to this one. * if false, the pen should move to this point without drawing. */ public void plotEdge(double x, double y, double z, boolean lineto) { KPoint p; if(mode == MarchingCubes.MODE_MESH) { if(lineto) p = new VectorPoint(list, level, prevV); else p = new VectorPoint(list, level, null); prevV = (VectorPoint)p; } else//mode == MarchingCubes.MODE_TRIANGLE { if(lineto) p = new TrianglePoint(list, level, prevT); else p = new TrianglePoint(list, level, null); prevT = (TrianglePoint)p; } p.setOrigX(x); p.setOrigY(y); p.setOrigZ(z); p.setUnpickable(unpickable); list.add(p); } //}}} //{{{ endCell //################################################################################################## /** * Called after the isosurface generator finishes each cell. * @param i the minimum x index of the current cell * @param j the minimum y index of the current cell * @param k the minimum z index of the current cell */ public void endCell(int i, int j, int k) { } //}}} //{{{ endIsosurface //################################################################################################## /** * Called after the isosurface generator finishes plotting everything. * Gives this plotter a chance to release memory, close streams, etc. * @param level the level for which an isosurface will be generated */ public void endIsosurface(double level) { } //}}} //{{{ getList, freeList //################################################################################################## /** Releases the last surface generated */ public void freeList() { list = null; } /** Retrieves the last surface generated (could be null)*/ public KList getList() { return list; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/FileDropHandler.java0000644000000000000000000000531411531212674020622 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import java.awt.*; import java.awt.datatransfer.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.util.*; //}}} /** * FileDropHandler allows Drag-n-Drop opening of kinemages * on the KinCanvas -- but it requires Java 1.4. * Thus, KiNG code should only reference this class via reflection, * so as to preserve backwards compatibility with Java 1.3. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Thu Feb 26 15:31:04 EST 2004 */ public class FileDropHandler extends TransferHandler { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## KingMain kMain; //}}} //{{{ Constructor(s) //############################################################################## public FileDropHandler(KingMain kMain, JComponent kCanvas) { super(); this.kMain = kMain; kCanvas.setTransferHandler(this); } //}}} //{{{ canImport //############################################################################## public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) { // we can ignore comp because this handler isn't shared by multiple components for(int i = 0; i < transferFlavors.length; i++) { if(DataFlavor.javaFileListFlavor.equals(transferFlavors[i])) return true; } return false; } //}}} //{{{ importData //############################################################################## public boolean importData(JComponent comp, Transferable t) { // we can ignore comp because this handler isn't shared by multiple components if(canImport(comp, t.getTransferDataFlavors())) { try { KinfileIO io = kMain.getKinIO(); java.util.List filelist = (java.util.List) t.getTransferData(DataFlavor.javaFileListFlavor); for(Iterator iter = filelist.iterator(); iter.hasNext(); ) io.loadFile((File)iter.next(), null); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } catch(UnsupportedFlavorException ex) { ex.printStackTrace(SoftLog.err); } } return false; } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/UIDisplayMenu.java0000644000000000000000000005444011531212674020314 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; //}}} /** * UIDisplayMenu encapsulates all the functions * listed in KiNG's "Display" menu. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon May 26 12:30:25 EDT 2003 */ public class UIDisplayMenu //extends ... implements ... { //{{{ Constants //}}} //{{{ INNER CLASS: DispQualityList //################################################################################################## class DispQualityList extends MenuList { Map map; public DispQualityList(Map stringToIntegerMap, Collection strings, String defaultItem) { super(strings, defaultItem); map = stringToIntegerMap; } protected void itemSelected(Object item) { if(item == null) return; KinCanvas canvas = kMain.getCanvas(); canvas.setQuality( ((Integer)map.get(item)).intValue() ); canvas.repaint(); } } //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JMenu menu = null; JMenu aspectMenu = null; JCheckBoxMenuItem cbPersp = null, cbBigMarkers = null, cbBigLabels = null, cbThickness = null, cbThin = null, cbIntensity = null, cbBackground = null, cbMonochrome = null, cbColorByList = null, cbStereo = null, cbCrosseye = null; JCheckBoxMenuItem autoRockMenuItem = null; // Timers, etc for auto-xxx functions javax.swing.Timer autoRockTimer = null; float rockStepSize = 0; int rockStepCount = 0; int rockMaxSteps = 0; boolean rockRight = true; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public UIDisplayMenu(KingMain kmain) { kMain = kmain; int steptime = kMain.prefs.getInt("autoRockCycleTime") / kMain.prefs.getInt("autoRockCycleSteps"); autoRockTimer = new javax.swing.Timer(steptime, new ReflectiveAction(null, null, this, "onDispAutoRockStep")); autoRockTimer.setRepeats(true); autoRockTimer.setCoalesce(false); rockMaxSteps = kMain.prefs.getInt("autoRockCycleSteps") / 2; rockStepCount = rockMaxSteps / 2; rockStepSize = (float)Math.toRadians(2.0 * kMain.prefs.getDouble("autoRockDegrees") / (double)rockMaxSteps); } //}}} //{{{ getMenu //################################################################################################## public JMenu getMenu() { if(menu != null) return menu; menu = new JMenu("Display"); menu.setMnemonic(KeyEvent.VK_D); aspectMenu = new JMenu("Aspects"); aspectMenu.setMnemonic(KeyEvent.VK_A); menu.add(aspectMenu); rebuildAspectsMenu(); menu.addSeparator(); cbPersp = new JCheckBoxMenuItem(new ReflectiveAction("Use perspective", null, this, "onDispPersp")); cbPersp.setMnemonic(KeyEvent.VK_U); cbPersp.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, 0)); // 0 => no modifiers menu.add(cbPersp); cbStereo = new JCheckBoxMenuItem(new ReflectiveAction("Use stereo", null, this, "onDispStereo")); cbStereo.setMnemonic(KeyEvent.VK_S); cbStereo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, 0)); // 0 => no modifiers menu.add(cbStereo); cbCrosseye = new JCheckBoxMenuItem(new ReflectiveAction("Crosseye stereo", null, this, "onDispCrosseye")); cbCrosseye.setMnemonic(KeyEvent.VK_C); cbCrosseye.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, 0)); // 0 => no modifiers menu.add(cbCrosseye); menu.addSeparator(); cbBigMarkers = new JCheckBoxMenuItem(new ReflectiveAction("Big markers", null, this, "onDispBigMarkers")); cbBigMarkers.setMnemonic(KeyEvent.VK_B); cbBigMarkers.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, 0)); menu.add(cbBigMarkers); cbBigLabels = new JCheckBoxMenuItem(new ReflectiveAction("Big labels", null, this, "onDispBigLabels")); cbBigLabels.setMnemonic(KeyEvent.VK_G); cbBigLabels.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, 0)); menu.add(cbBigLabels); cbThickness = new JCheckBoxMenuItem(new ReflectiveAction("Cue by thickness", null, this, "onDispThickness")); cbThickness.setMnemonic(KeyEvent.VK_T); cbThickness.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, KeyEvent.SHIFT_MASK)); menu.add(cbThickness); cbThin = new JCheckBoxMenuItem(new ReflectiveAction("Thin lines", null, this, "onDispThin")); cbThin.setMnemonic(KeyEvent.VK_N); cbThin.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, 0)); // 0 => no modifiers menu.add(cbThin); Map map = new HashMap(); map.put("Standard", new Integer(KinCanvas.QUALITY_GOOD)); map.put("Better", new Integer(KinCanvas.QUALITY_BETTER)); map.put("Best", new Integer(KinCanvas.QUALITY_BEST)); map.put("OpenGL", new Integer(KinCanvas.QUALITY_JOGL)); Collection list = Arrays.asList(new String[] {"Standard", "Better", "Best", "OpenGL"}); String defQual = "Standard"; if(kMain.getCanvas().renderQuality == KinCanvas.QUALITY_BETTER) defQual = "Better"; // for OS X else if(kMain.getCanvas().renderQuality == KinCanvas.QUALITY_JOGL) defQual = "OpenGL"; // for king_prefs:joglByDefault = true JMenuItem submenu = new DispQualityList(map, list, defQual).getMenu(); submenu.setText("Rendering quality"); menu.add(submenu); menu.addSeparator(); JMenuItem item = new JMenuItem(new ReflectiveAction("Set contrast...", null, this, "onDispContrast")); item.setMnemonic(KeyEvent.VK_O); //item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, 0)); // 0 => no modifiers menu.add(item); cbIntensity = new JCheckBoxMenuItem(new ReflectiveAction("Cue by intensity", null, this, "onDispIntensity")); cbIntensity.setMnemonic(KeyEvent.VK_I); cbIntensity.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, 0)); // 0 => no modifiers menu.add(cbIntensity); cbBackground = new JCheckBoxMenuItem(new ReflectiveAction("White background", null, this, "onDispBackground")); cbBackground.setMnemonic(KeyEvent.VK_W); cbBackground.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, 0)); // 0 => no modifiers menu.add(cbBackground); cbMonochrome = new JCheckBoxMenuItem(new ReflectiveAction("Monochrome", null, this, "onDispMonochrome")); cbMonochrome.setMnemonic(KeyEvent.VK_M); menu.add(cbMonochrome); cbColorByList = new JCheckBoxMenuItem(new ReflectiveAction("Color by list", null, this, "onDispColorByList")); cbColorByList.setMnemonic(KeyEvent.VK_L); cbColorByList.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, 0)); // 0 => no modifiers menu.add(cbColorByList); menu.addSeparator(); autoRockMenuItem = new JCheckBoxMenuItem(new ReflectiveAction("Auto-rock", null, this, "onDispAutoRockStartStop")); autoRockMenuItem.setMnemonic(KeyEvent.VK_R); autoRockMenuItem.setSelected(autoRockTimer.isRunning()); autoRockMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, 0)); // 0 => no modifiers menu.add(autoRockMenuItem); syncCheckboxes(); return menu; } //}}} //{{{ syncCheckboxes //################################################################################################## /** * Adjusts the selection state of checkboxes in the Display menu to match parameters in the engine */ void syncCheckboxes() { if(menu == null) return; KinCanvas kCanvas = kMain.getCanvas(); Engine engine = kCanvas.getEngine(); cbPersp.setSelected(engine.usePerspective); cbStereo.setSelected(engine.useStereo); cbCrosseye.setSelected(engine.stereoRotation < 0); cbBigMarkers.setSelected(engine.bigMarkers); cbBigLabels.setSelected(engine.bigLabels); cbThickness.setSelected(engine.cueThickness); cbThin.setSelected(engine.thinLines); cbIntensity.setSelected(engine.cueIntensity); cbBackground.setSelected(engine.whiteBackground); cbMonochrome.setSelected(engine.monochrome); cbColorByList.setSelected(engine.colorByList); Kinemage kin = kMain.getKinemage(); if(kin == null) return; cbPersp.setSelected(kin.atPerspective); cbThickness.setSelected(!kin.atOnewidth); cbThin.setSelected(kin.atThinline); cbBackground.setSelected(kin.atWhitebackground); cbColorByList.setSelected(kin.atListcolordominant); } //}}} //{{{ rebuildAspectsMenu //################################################################################################## /** * Refills the Display | Aspects menu from the * specified iterator of Aspect objects */ public void rebuildAspectsMenu() { if(aspectMenu == null) return; aspectMenu.removeAll(); JMenuItem item; JRadioButtonMenuItem ritem; ButtonGroup rgroup = new ButtonGroup(); Kinemage kin = kMain.getKinemage(); if(kin != null) { ritem = new JRadioButtonMenuItem(new ReflectiveAction("Aspects off", null, this, "onDisplayAspectsOff")); ritem.setMnemonic(KeyEvent.VK_O); ritem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SLASH, 0)); // 0 => no modifiers rgroup.add(ritem); aspectMenu.add(ritem); aspectMenu.addSeparator(); int i = 1; for(Iterator iter = kin.getAspectIterator(); iter.hasNext(); i++) { Aspect aspect = (Aspect)iter.next(); ritem = new JRadioButtonMenuItem(new ReflectiveAction((i+" "+aspect.getName()), null, aspect, "selectedFromMenu")); rgroup.add(ritem); aspectMenu.add(ritem); } /* Next / Previous */ if(i > 1) aspectMenu.addSeparator(); item = new JMenuItem(new ReflectiveAction("Next aspect", null, this, "onDisplayAspectsNext")); item.setMnemonic(KeyEvent.VK_N); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_CLOSE_BRACKET, 0)); // 0 => no modifiers aspectMenu.add(item); item = new JMenuItem(new ReflectiveAction("Previous aspect", null, this, "onDisplayAspectsPrevious")); item.setMnemonic(KeyEvent.VK_P); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, 0)); aspectMenu.add(item); /* Next / Previous */ } else { item = new JMenuItem("No aspects available"); item.setEnabled(false); aspectMenu.add(item); } // This step is ESSENTIAL for the menu to appear & keep working! //menubar.revalidate(); } //}}} //{{{ onDisplayAspects{Off, Next, Previous} //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDisplayAspectsOff(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.currAspect = null; kMain.notifyChange(KingMain.EM_DISPLAY); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDisplayAspectsNext(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; Aspect currAspect = kin.getCurrentAspect(); if(currAspect == null) // if nothing's selected yet { Iterator iter = kin.getAspectIterator(); if(iter.hasNext()) { currAspect = (Aspect)iter.next(); if(currAspect != null) currAspect.selectedFromMenu(null); } } else // if something's already selected { for(Iterator iter = kin.getAspectIterator(); iter.hasNext(); ) { if(iter.next() == currAspect) { // If current was last, choose first if(!iter.hasNext()) iter = kin.getAspectIterator(); // If there's a next one, choose it if(iter.hasNext()) { currAspect = (Aspect)iter.next(); if(currAspect != null) currAspect.selectedFromMenu(null); break; } } } } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDisplayAspectsPrevious(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; Aspect currAspect = kin.getCurrentAspect(); if(currAspect == null) // if nothing's selected yet { Iterator iter = kin.getAspectIterator(); while(iter.hasNext()) currAspect = (Aspect)iter.next(); if(currAspect != null) currAspect.selectedFromMenu(null); } else // if something's already selected { Aspect curr, prev = null; for(Iterator iter = kin.getAspectIterator(); iter.hasNext(); ) { curr = (Aspect)iter.next(); if(curr == currAspect) { // If current was first, choose last if(prev == null) { while(iter.hasNext()) currAspect = (Aspect)iter.next(); if(currAspect != null) { currAspect.selectedFromMenu(null); break; } } // If there's a previous one, choose it else { prev.selectedFromMenu(null); break; } } prev = curr; } } } //}}} //{{{ onDisp{Persp, Stereo, Crosseye} //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispPersp(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin != null) { kin.atPerspective = cbPersp.isSelected(); // Deliberately don't mark kin as modified kMain.notifyChange(KingMain.EM_DISPLAY); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispStereo(ActionEvent ev) { if(kMain.getCanvas() != null) { Engine engine = kMain.getCanvas().getEngine(); if(engine != null) engine.useStereo = cbStereo.isSelected(); kMain.notifyChange(kMain.EM_DISPLAY); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispCrosseye(ActionEvent ev) { if(kMain.getCanvas() != null) { Engine engine = kMain.getCanvas().getEngine(); if(engine != null) { engine.stereoRotation = (cbCrosseye.isSelected() ^ engine.stereoRotation < 0) ? -engine.stereoRotation : engine.stereoRotation; } kMain.notifyChange(kMain.EM_DISPLAY); } } //}}} //{{{ onDisp{BigMarkers, BigLabels, Thickness, Thin} //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispBigMarkers(ActionEvent ev) { if(kMain.getCanvas() != null) { Engine engine = kMain.getCanvas().getEngine(); if(engine != null) engine.bigMarkers = cbBigMarkers.isSelected(); kMain.notifyChange(kMain.EM_DISPLAY); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispBigLabels(ActionEvent ev) { if(kMain.getCanvas() != null) { Engine engine = kMain.getCanvas().getEngine(); if(engine != null) engine.bigLabels = cbBigLabels.isSelected(); kMain.notifyChange(kMain.EM_DISPLAY); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispThickness(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin != null) { kin.atOnewidth = ! cbThickness.isSelected(); // Deliberately don't mark kin as modified kMain.notifyChange(KingMain.EM_DISPLAY); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispThin(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin != null) { kin.atThinline = cbThin.isSelected(); // Deliberately don't mark kin as modified // Assume we don't want width depth cues with thinline if(cbThin.isSelected()) { kin.atOnewidth = true; cbThickness.setSelected(false); } kMain.notifyChange(KingMain.EM_DISPLAY); } } //}}} //{{{ onDisp{Intensity, Background, Monochrome, ColorByList} //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispIntensity(ActionEvent ev) { if(kMain.getCanvas() != null) { Engine engine = kMain.getCanvas().getEngine(); if(engine != null) engine.cueIntensity = cbIntensity.isSelected(); kMain.notifyChange(kMain.EM_DISPLAY); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispBackground(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin != null) { kin.atWhitebackground = cbBackground.isSelected(); // Deliberately don't mark kin as modified kMain.notifyChange(KingMain.EM_DISPLAY); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispMonochrome(ActionEvent ev) { if(kMain.getCanvas() != null) { Engine engine = kMain.getCanvas().getEngine(); if(engine != null) { boolean sel = cbMonochrome.isSelected(); engine.monochrome = sel; // assume we want white background with monochrome if(sel == true) { engine.whiteBackground = true; cbBackground.setSelected(true); } } kMain.notifyChange(kMain.EM_DISPLAY); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispColorByList(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin != null) { kin.atListcolordominant = cbColorByList.isSelected(); // Deliberately don't mark kin as modified kMain.notifyChange(KingMain.EM_DISPLAY); } } //}}} //{{{ onDisplayAutoRock{StartStop, Step} //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispAutoRockStartStop(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k == null) return; if(autoRockMenuItem.isSelected()) { rockStepCount = rockMaxSteps / 2; rockRight = true; autoRockTimer.start(); } else { autoRockTimer.stop(); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispAutoRockStep(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k == null) return; KingView v = k.getCurrentView(); if(rockStepCount >= rockMaxSteps) { rockStepCount = 0; rockRight = !rockRight; } // Stiff bouncing: //if(rockRight) v.rotateY( rockStepSize); //else v.rotateY(-rockStepSize); // Slows and pauses at either end: if(rockRight) v.rotateY((float)(2 * rockStepSize * Math.sin((Math.PI*rockStepCount)/rockMaxSteps))); else v.rotateY((float)(2 * -rockStepSize * Math.sin((Math.PI*rockStepCount)/rockMaxSteps))); rockStepCount++; kMain.notifyChange(kMain.EM_DISPLAY); } //}}} //{{{ onDispContrast //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispContrast(ActionEvent ev) { JSlider slider = new JSlider(0, 100, 50); int response = JOptionPane.showConfirmDialog(kMain.getTopWindow(), slider, "Set display contrast", JOptionPane.OK_CANCEL_OPTION , JOptionPane.PLAIN_MESSAGE); if(response == JOptionPane.OK_OPTION) { int contrast = slider.getValue() - 50; KPalette.setContrast(1.0 + contrast/50.0); kMain.notifyChange(kMain.EM_DISPLAY); } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/KingMain.java0000644000000000000000000004672311531212674017326 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; //import java.awt.geom.*; import java.io.*; import java.lang.reflect.*; import java.net.*; //import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.tree.*; import javax.swing.plaf.metal.MetalLookAndFeel; import driftwood.util.*; import driftwood.isosurface.*; import driftwood.gui.*; //}}} /** * KingMain is the control center of the King program. * *

Begun on Mon Apr 22 17:18:36 EDT 2002 *
Copyright (C) 2002-2004 by Ian W. Davis */ public class KingMain implements WindowListener, KinemageSignalSubscriber { static { // This allows JMenus to overlap the JOGL canvas, which stopped // happening automatically with the release of Java 1.5. // This should happen once, before any KingMains are created. JPopupMenu.setDefaultLightWeightPopupEnabled(false); } public static void main(String[] args) { new KingMain(args).Main(); } //{{{ Event masks /** Event mask: current kinemage has been switched */ public static final int EM_SWITCH = 0x00000001; /** Event mask: all kinemages have been closed */ public static final int EM_CLOSEALL = 0x00000002; /** Event mask: new view was chosen from the Views menu */ public static final int EM_NEWVIEW = 0x00000004; /** Event mask: large-scale editing was performed (group/list level) */ public static final int EM_EDIT_GROSS = 0x00000008; /** Event mask: small-scale editing was performed (point level) */ public static final int EM_EDIT_FINE = 0x00000010; /** Event mask: buttons were turned on/off, or points became (in)visible for some other reason (master, animate) */ public static final int EM_ON_OFF = 0x00000020; /** Event mask: display mode changed */ public static final int EM_DISPLAY = 0x00000040; /** Event mask: current kinemage has been closed */ public static final int EM_CLOSE = 0x00000080; /** Event mask: preferences were updated */ public static final int EM_PREFS = 0x00000100; //}}} //{{{ Variables //################################################################################################## // Used for counting # of clones still alive, so we don't // call System.exit() prematurely! static int instanceCount = 0; KingPrefs prefs = null; KinStable kinStable = null; KinfileIO kinIO = null; KinCanvas kinCanvas = null; UIMenus uiMenus = null; UIText uiText = null; KinTree kinTree = null; MainWindow mainWin = null; ContentPane contentPane = null; JApplet theApplet = null; boolean isAppletFlat = true; ArrayList filesToOpen = null; boolean doMerge = true; //}}} //{{{ Constructors //################################################################################################## /** Simple constructor for embedded apps */ public KingMain() { this(new String[] {}); } /** * Constructor for application */ public KingMain(String[] args) { // This prevents number formatting problems when writing kins in // e.g. Germany. Kludgy, but KiNG isn't internationalized anyway. // Ideally, this will go away one day. try { Locale.setDefault(Locale.US); } catch(SecurityException ex) { SoftLog.err.println("Can't change to US locale; numbers may be garbled on kinemage write."); } prefs = new KingPrefs(); if(prefs.getBoolean("checkNewVersion")) { // "Timeout" after 2.000 seconds try { prefs.checkVersion(new URL("http://kinemage.biochem.duke.edu/downloads/software/king/king.version.props"), 2000); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } } parseArguments(args); instanceCount++; } /** * Constructor for applet */ public KingMain(JApplet plet, boolean isFlat) { prefs = new KingPrefs(); theApplet = plet; isAppletFlat = isFlat; // Load custom config from URL String king_prefs = theApplet.getParameter("king_prefs"); if(king_prefs != null) try { URL prefsURL = new URL(theApplet.getDocumentBase(), king_prefs); prefs.loadFromURL(prefsURL); } catch(MalformedURLException ex) { SoftLog.err.println(" king_prefs specified an unresolvable URL."); } instanceCount++; } //}}} //{{{ createComponents //################################################################################################## public void createComponents() { createComponents(true, true); } /** * Creates all the major components of a running KiNG instance: * KinStable, ContentPane, KinfileIO, KinCanvas, UIMenus, UIText, KinTree. * Call this after the constructor but before trying to assemble the overall GUI. */ public void createComponents(boolean useButtons, boolean useSliders) { kinStable = new KinStable(this); contentPane = new ContentPane(this); // doesn't create GUI yet kinIO = new KinfileIO(this); // progress dlg. references main window kinCanvas = new KinCanvas(this); uiMenus = new UIMenus(this); uiText = new UIText(this); kinTree = new KinTree(this); contentPane.buildGUI(useButtons, useSliders); } //}}} //{{{ shutdown //################################################################################################## /** * Initiates shutdown, albeit in a crude way. Called by Kinglet.stop() and the window close listeners. */ public void shutdown() { if(uiText != null) uiText.shutdown(); if(mainWin != null) mainWin.shutdown(); if(kinCanvas != null) kinCanvas.shutdown(); instanceCount--; if(instanceCount <= 0 && theApplet == null) { try { System.exit(0); } catch(Throwable t) {} //catch(SecurityException ex) {} } } //}}} //{{{ Main //################################################################################################## /** * Main() function for running as an application */ public void Main() { // This compensates for incorrect drawing primitives on Mac OS X //try { System.setProperty("apple.awt.antialiasing", "on"); } //catch(SecurityException ex) { SoftLog.err.println("Not allowed to activate antialiasing."); } // No effect -- must be done using -D from Java cmd line // Start in a reasonable directory if launched by double-click / drag-n-drop try { if(System.getProperty("user.dir").equals("/Applications")) System.setProperty("user.dir", System.getProperty("user.home")); //System.err.println("Current dir: "+System.getProperty("user.dir")); } catch(Exception ex) {}//{ ex.printStackTrace(); } // It's just too hard to change this after we've already started up! float magnification = prefs.getFloat("fontMagnification"); if(magnification != 1) { MetalLookAndFeel.setCurrentTheme(new MagnifiedTheme(magnification)); // This forces initialization of the LAF, which keeps Java 1.5 // from replacing our theme with their "Ocean" theme. try { UIManager.setLookAndFeel( UIManager.getLookAndFeel() ); } catch(Exception ex) { ex.printStackTrace(); } } if(!SoftLog.replaceSystemStreams()) SoftLog.err.println("Unable to subvert System.err; some exception traces may be lost."); if(theApplet == null || !isAppletFlat) mainWin = new MainWindow(this); // doesn't create GUI yet, but other dlgs may depend on this one (?) createComponents(); // actually creates most of the stuff KiNG uses if(theApplet == null || !isAppletFlat) { mainWin.setContentPane(contentPane); mainWin.setJMenuBar(uiMenus.getMenuBar()); mainWin.addWindowListener(this); mainWin.pack(); mainWin.setVisible(true); if(prefs.getBoolean("textOpenOnStart")) uiText.cascadeBehind(mainWin); } else { kinCanvas.setPreferredSize(null); // so we don't crowd off other components kinCanvas.setMinimumSize(null); theApplet.setContentPane(contentPane); theApplet.setJMenuBar(uiMenus.getMenuBar()); theApplet.validate(); // make sure text window gets opened as needed } // Drag & Drop support for opening kinemages if(theApplet == null) { // Mac OS X only! - adds support for Drag & Drop to Dock icon and for program launch try { //MacDropTarget.bindTo(this); Class macDropClass = Class.forName("king.MacDropTarget"); Method bindTo = macDropClass.getMethod("bindTo", new Class[] {KingMain.class}); bindTo.invoke(null, new Object[] {this}); } catch(Throwable t) {} // Java 1.4+ only! - adds support for Drag & Drop to KinCanvas try { //new FileDropHandler(this, kinCanvas); Class dropClass = Class.forName("king.FileDropHandler"); Constructor dropConstr = dropClass.getConstructor(new Class[] { KingMain.class, KinCanvas.class }); dropConstr.newInstance(new Object[] { this, kinCanvas }); } catch(Throwable t) {} } if(theApplet == null) SwingUtilities.invokeLater(new ReflectiveRunnable(this, "loadFiles")); else SwingUtilities.invokeLater(new ReflectiveRunnable(this, "appletLoadFiles")); } //}}} //{{{ loadFiles //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void loadFiles() { if(filesToOpen == null || filesToOpen.size() <= 0) return; Kinemage kin = null; if(doMerge && filesToOpen.size() > 1) kin = new Kinemage(KinfileParser.DEFAULT_KINEMAGE_NAME+"1"); KinfileIO io = this.getKinIO(); for(Iterator iter = filesToOpen.iterator(); iter.hasNext(); ) { io.loadFile((File)iter.next(), kin); } if(kin != null) this.getStable().append(Arrays.asList(new Kinemage[] {kin})); } //}}} //{{{ appletLoadFiles, getAppletKinURL //################################################################################################## /** * File loading in event dispatch thread */ public void appletLoadFiles() { KinCanvas kCanvas = this.getCanvas(); ToolBox toolbox; if(kCanvas == null) toolbox = null; else toolbox = kCanvas.getToolBox(); try { URL kinURL = getAppletKinURL(); if(kinURL != null) this.getKinIO().loadURL(kinURL, null); } catch(MalformedURLException ex) { SoftLog.err.println(" kinSource specified an unresolvable URL."); } // Try multiple names for this parameter boolean isOmap = false; String mapsrc = theApplet.getParameter("xmap"); if(mapsrc == null) { mapsrc = theApplet.getParameter("omap"); isOmap = true; } if(mapsrc != null && toolbox != null) { try { URL mapURL = new URL(theApplet.getDocumentBase(), mapsrc); CrystalVertexSource map; if(isOmap) { map = new OMapVertexSource(mapURL.openStream()); } else { map = new XplorVertexSource(mapURL.openStream()); } new EDMapWindow(toolbox, map, mapURL.getFile()); } catch(MalformedURLException ex) { SoftLog.err.println(" xmap/omap specified an unresolvable URL."); } catch(IOException ex) { JOptionPane.showMessageDialog(this.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(this.getTopWindow(), "Wrong map format was chosen, or map is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } } /** Returns the URL of the primary kinemage this applet was invoked to show, or null for none. */ public URL getAppletKinURL() throws MalformedURLException { // Try multiple names for this parameter String kinsrc = theApplet.getParameter("kinSource"); if(kinsrc == null) kinsrc = theApplet.getParameter("kinFile"); if(kinsrc == null) kinsrc = theApplet.getParameter("kinURL"); if(kinsrc == null) kinsrc = theApplet.getParameter("kinemage"); if(kinsrc == null) kinsrc = theApplet.getParameter("kin"); if(kinsrc != null) return new URL(theApplet.getDocumentBase(), kinsrc); else return null; } //}}} //{{{ signalKinemage, notifyChange //################################################################################################## /** * A call to this method indicates that the specified * kinemage has changed somehow. * *

This method will be called in response to KinemageSignal.signalKinemage(). * * @param kinemage the Kinemage object that has changed * @param bitmask a set of flags describing which properties have changed. */ public void signalKinemage(Kinemage kinemage, int bitmask) { int evmask = 0; if((bitmask & APPEARANCE) != 0) evmask |= EM_ON_OFF | EM_DISPLAY | EM_NEWVIEW | EM_EDIT_FINE; //evmask |= EM_ON_OFF | EM_DISPLAY | EM_EDIT_FINE; if((bitmask & STRUCTURE) != 0) evmask |= EM_SWITCH | EM_EDIT_GROSS; // force menus to be remade if(evmask != 0) this.notifyChange(evmask); } /** * Notifies all existing sub-components of a change to the state of the program. * Only notifies components directly owned by KingMain; * for instance KinCanvas is reponsible for propagating this to Engine. * @param event_mask the bitwise OR of the flag(s) representing the change */ public void notifyChange(int event_mask) { if(kinStable != null) kinStable.notifyChange(event_mask); if(contentPane != null) contentPane.notifyChange(event_mask); if(kinIO != null) kinIO.notifyChange(event_mask); if(kinCanvas != null) kinCanvas.notifyChange(event_mask); if(uiMenus != null) uiMenus.notifyChange(event_mask); if(kinTree != null) kinTree.notifyChange(event_mask); } //}}} //{{{ getXXX functions //################################################################################################## /** Returns the object holding our content: either a JFrame or a JApplet. Never null. */ public Container getContentContainer() { return (mainWin == null ? (Container)theApplet : (Container)mainWin); } /** Returns the ContentPane object that holds all the GUI elements. Never null. */ public ContentPane getContentPane() { return contentPane; } /** Returns the top-level window, if there is one; null otherwise. */ public Frame getTopWindow() { return mainWin; } /** Returns the data model that holds all data for this session (never null) */ public KinStable getStable() { return kinStable; } /** Returns the kinemage reader/writer (never null) */ public KinfileIO getKinIO() { return kinIO; } /** Returns the active drawing canvas (never null) */ public KinCanvas getCanvas() { return kinCanvas; } /** Returns the applet this was spawned from (may be null) */ public JApplet getApplet() { return theApplet; } /** Returns the collection of UI actions and menus that manage user input (may be null) */ public UIMenus getMenus() { return uiMenus; } /** Returns the text storage/edit/display system (never null) */ public UIText getTextWindow() { return uiText; } /** Returns the tree controller (may be null) */ public KinTree getKinTree() { return kinTree; } /** Returns the preferences storage object */ public KingPrefs getPrefs() { return prefs; } /** Convenience function for getStable().getKinemage().getTreeModel() (may be null) */ public DefaultTreeModel getTreeModel() { Kinemage kin = kinStable.getKinemage(); if(kin == null) return null; return kin.getTreeModel(); } /** Convenience function for getStable().getKinemage() (may be null) */ public Kinemage getKinemage() { return kinStable.getKinemage(); } /** Convenience function for getStable().getKinemage().getCurrentView() (may be null) */ public KingView getView() { Kinemage kin = kinStable.getKinemage(); if(kin == null) return null; return kin.getCurrentView(); } //}}} //{{{ parseArguments //################################################################################################## // Interpret command-line arguments void parseArguments(String[] args) { filesToOpen = new ArrayList(); String arg; for(int i = 0; i < args.length; i++) { arg = args[i]; // this is an option if(arg.startsWith("-")) { if(arg.equals("-h") || arg.equals("-help")) { SoftLog.err.println("Help not available. Sorry!"); System.exit(0); } else if(arg.equals("-version")) { SoftLog.err.println("KingMain, version "+getPrefs().getString("version")+"\nCopyright (C) 2002-2003 by Ian W. Davis"); System.exit(0); } else if(arg.equals("-m") || arg.equals("-merge")) { doMerge = true; } else if(arg.equals("-s") || arg.equals("-single")) { doMerge = false; } else { SoftLog.err.println("*** Unrecognized option: "+arg); } } // this is a file, etc. else { filesToOpen.add(new File(arg)); } } } //}}} //{{{ Window events //################################################################################################## public void windowActivated(WindowEvent ev) {} public void windowClosed(WindowEvent ev) {} public void windowClosing(WindowEvent ev) { if(uiMenus != null) uiMenus.onFileExit(null); else shutdown(); } public void windowDeactivated(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowOpened(WindowEvent ev) {} //}}} }//class king-2.21.120420/king/1.x_src/king/ViewEditor.java0000644000000000000000000002113011531212674017673 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; //}}} /** * ViewEditor has not yet been documented. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Thu Dec 5 09:46:29 EST 2002 */ public class ViewEditor //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JDialog dialog; JList list; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public ViewEditor(KingMain kmain) { kMain = kmain; dialog = new JDialog(kMain.getTopWindow(), "Edit views", true); dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); list = new FatJList(0, 20); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); list.setVisibleRowCount(12); list.setBorder( BorderFactory.createEtchedBorder() ); JScrollPane listScroll = new JScrollPane(list); JButton close = new JButton(new ReflectiveAction("Close", null, this, "onClose")); JButton up = new JButton(new ReflectiveAction("Move up", kMain.prefs.moveUpIcon, this, "onMoveUp")); JButton down = new JButton(new ReflectiveAction("Move down", kMain.prefs.moveDownIcon, this, "onMoveDown")); JButton go = new JButton(new ReflectiveAction("Go to", null, this, "onGoTo")); JButton gonext = new JButton(new ReflectiveAction("Go Next", kMain.prefs.stepForwardIcon, this, "onGoNext")); JButton goprev = new JButton(new ReflectiveAction("Go Prev", kMain.prefs.stepBackIcon, this, "onGoPrev")); JButton rename = new JButton(new ReflectiveAction("Rename", null, this, "onRename")); JButton delete = new JButton(new ReflectiveAction("Delete", kMain.prefs.deleteIcon, this, "onDelete")); up.setMnemonic(KeyEvent.VK_U); down.setMnemonic(KeyEvent.VK_D); rename.setMnemonic(KeyEvent.VK_R); go.setMnemonic(KeyEvent.VK_G); close.setMnemonic(KeyEvent.VK_C); TablePane cp = new TablePane(); cp.insets(2).hfill(true).weights(0,0); cp.save().weights(1,1).vfill(true).hfill(true).addCell(listScroll, 1, 9).restore(); cp.addCell(go).newRow(); cp.addCell(gonext).newRow(); cp.addCell(goprev).newRow(); cp.save().weights(0,1).insets(0).addCell(Box.createVerticalStrut(10)).restore().newRow(); cp.addCell(rename).newRow(); cp.addCell(delete).newRow(); cp.save().weights(0,1).insets(0).addCell(Box.createVerticalStrut(10)).restore().newRow(); cp.addCell(up).newRow(); cp.addCell(down).newRow(); cp.center().hfill(false).addCell(close, 2, 1); dialog.setContentPane(cp); dialog.getRootPane().setDefaultButton(close); } //}}} //{{{ onClose, onMoveUp, onMoveDown //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onClose(ActionEvent ev) { dialog.dispose(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onMoveUp(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; KingView view = (KingView)list.getSelectedValue(); if(view == null) return; java.util.List viewList = kin.getViewList(); ListIterator iter = viewList.listIterator(); Object swap = null, next = null; do { swap = next; next = iter.next(); } while(!view.equals(next)); if(swap != null) { iter.set(swap); iter.previous(); //back to next... iter.previous(); //back to swap... iter.set(view); } kin.setModified(true); // Re-fill the list so names are updated list.setListData( viewList.toArray() ); list.setSelectedValue(view, true); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onMoveDown(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; KingView view = (KingView)list.getSelectedValue(); if(view == null) return; java.util.List viewList = kin.getViewList(); ListIterator iter = viewList.listIterator(); while(!view.equals(iter.next())) {} if(iter.hasNext()) { Object swap = iter.next(); iter.set(view); iter.previous(); //back to swap... iter.previous(); //back to view... iter.set(swap); } kin.setModified(true); // Re-fill the list so names are updated list.setListData( viewList.toArray() ); list.setSelectedValue(view, true); } //}}} //{{{ onGoTo, onRename, onDelete //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onGoTo(ActionEvent ev) { KingView view = (KingView)list.getSelectedValue(); if(view == null) return; view.selectedFromMenu(null); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRename(ActionEvent ev) { KingView view = (KingView)list.getSelectedValue(); if(view == null) return; String viewname = (String)JOptionPane.showInputDialog(kMain.getTopWindow(), "Name for this view:", "Rename view", JOptionPane.PLAIN_MESSAGE, null,//icon null,//selections view.getName()); if(viewname == null) return; view.setName(viewname); // Re-fill the list so names are updated Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.setModified(true); list.setListData( kin.getViewList().toArray() ); list.setSelectedValue(view, true); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDelete(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; KingView view = (KingView)list.getSelectedValue(); if(view == null) return; java.util.List viewList = kin.getViewList(); viewList.remove(view); kin.setModified(true); // Re-fill the list so names are updated list.setListData( viewList.toArray() ); } //}}} //{{{ onGoNext, onGoPrev //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onGoNext(ActionEvent ev) { int index = list.getSelectedIndex()+1; if(index >= 0 && index < list.getModel().getSize()) { list.setSelectedIndex(index); onGoTo(null); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onGoPrev(ActionEvent ev) { int index = list.getSelectedIndex()-1; if(index >= 0 && index < list.getModel().getSize()) { list.setSelectedIndex(index); onGoTo(null); } } //}}} //{{{ editViews //################################################################################################## /** Display the view-editing dialog box */ public void editViews() { // Fill the list Kinemage kin = kMain.getKinemage(); if(kin == null) return; list.setListData( kin.getViewList().toArray() ); // Display dialog box dialog.pack(); dialog.setLocationRelativeTo(kMain.getTopWindow()); dialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed UIMenus menus = kMain.getMenus(); if(menus != null) menus.rebuildViewsMenu(kin.getViewIterator()); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/PrefsEditor.java0000644000000000000000000002424511531212674020052 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.data.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * PrefsEditor provides a GUI for editing preferences. * Because the list of loaded plugins could change at any time, * instances of this class should only be used once and then discarded. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Thu Dec 12 13:32:25 EST 2002 */ public class PrefsEditor //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JDialog dialog; JTabbedPane tabPane; JTextField fontMagnification, fontSizeSmall, fontSizeBig; JTextField stereoAngle; JCheckBox joglByDefault, textOpenOnStart; JCheckBox treeConfirmDelete, treeConfirmMerge; JCheckBox checkNewVersion; Map pluginMenuMap; // maps plugin class name to a JComboBox JButton btnDone, btnDefaults, btnSave; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PrefsEditor(KingMain kmain) { kMain = kmain; buildGUI(); } //}}} //{{{ buildGUI //################################################################################################## private void buildGUI() { btnDone = new JButton(new ReflectiveAction("Close", null, this, "onDone")); btnDefaults = new JButton(new ReflectiveAction("Reset to defaults", null, this, "onDefaults")); btnSave = new JButton(new ReflectiveAction("Save to disk", null, this, "onSave")); if(kMain.getApplet() != null) btnSave.setEnabled(false); Component generalPane = buildGeneralPane(); Component pluginPane = buildPluginsPane(); tabPane = new JTabbedPane(); tabPane.addTab("General", generalPane); tabPane.addTab("Plugins", pluginPane); TablePane2 content = new TablePane2(); content.hfill(true).vfill(true).addCell(tabPane, 2, 1); content.newRow(); content.center().memorize(); content.addCell(btnDefaults).addCell(btnSave); content.newRow(); content.addCell(btnDone, 2, 1); dialog = new JDialog(kMain.getTopWindow(), "Configure KiNG", true); dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialog.setContentPane(content); } //}}} //{{{ buildGeneralPane //################################################################################################## private Component buildGeneralPane() { fontMagnification = new JTextField(4); fontSizeSmall = new JTextField(4); fontSizeBig = new JTextField(4); stereoAngle = new JTextField(4); joglByDefault = new JCheckBox("Start in OpenGL mode"); textOpenOnStart = new JCheckBox("Open text window on startup"); treeConfirmDelete = new JCheckBox("Ask before deleting groups"); treeConfirmMerge = new JCheckBox("Ask before merging groups"); checkNewVersion = new JCheckBox("Check for new version online"); TablePane2 innerPane = new TablePane2(); innerPane.addCell(new JLabel("Menu font magnification (requires restart)")).addCell(fontMagnification).newRow(); innerPane.addCell(new JLabel("Font size (normal)")).addCell(fontSizeSmall).newRow(); innerPane.addCell(new JLabel("Font size (large)")).addCell(fontSizeBig).newRow(); innerPane.addCell(new JLabel("Stereo angle (- cross, + wall)")).addCell(stereoAngle).newRow(); innerPane.addCell(joglByDefault, 2, 1).newRow(); innerPane.addCell(textOpenOnStart, 2, 1).newRow(); innerPane.addCell(treeConfirmDelete, 2, 1).newRow(); innerPane.addCell(treeConfirmMerge, 2, 1).newRow(); innerPane.addCell(checkNewVersion, 2, 1).newRow(); return innerPane; } //}}} //{{{ buildPluginsPane //################################################################################################## private Component buildPluginsPane() { ToolBox toolbox = kMain.getCanvas().getToolBox(); Collection plugins = toolbox.getPluginList(); // Make a list of all unique submenu names UberSet menuNames = new UberSet(); menuNames.add(ToolBox.MENU_NONE); menuNames.add(ToolBox.MENU_MAIN); menuNames.add(ToolBox.MENU_IMPORT); menuNames.add(ToolBox.MENU_EXPORT); for(Iterator iter = plugins.iterator(); iter.hasNext(); ) menuNames.add(toolbox.getPluginMenuName((Plugin)iter.next())); Object[] items = menuNames.toArray(); // Add GUI components for all plugins, one per row pluginMenuMap = new HashMap(); TablePane2 content = new TablePane2(); content.addCell(new JLabel("Choose a menu for each tool, or type in a new menu name."), 3, 1).newRow(); for(Iterator iter = plugins.iterator(); iter.hasNext(); ) { Plugin p = (Plugin) iter.next(); JComboBox combo = new JComboBox(items); combo.setSelectedItem(toolbox.getPluginMenuName(p)); combo.setEditable(true); content.addCell(new JLabel(p.toString())); content.addCell(content.strut(10,0)); content.hfill(true).addCell(combo); content.newRow(); pluginMenuMap.put(p.getClass().getName(), combo); } JScrollPane scroll = new JScrollPane(content); scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); // Keep the list from being too tall in the dialog Dimension dim = scroll.getPreferredSize(); dim.height = 100; scroll.setPreferredSize(dim); return scroll; } //}}} //{{{ edit, editPlugins //################################################################################################## public void edit() { toGUI(); dialog.pack(); dialog.setLocationRelativeTo(kMain.getTopWindow()); dialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed } public void editPlugins() { int index = tabPane.indexOfTab("Plugins"); if(index != -1) tabPane.setSelectedIndex(index); this.edit(); } //}}} //{{{ toGUI, fromGUI //################################################################################################## private void toGUI() { KingPrefs p = kMain.prefs; if(p == null) return; fontMagnification.setText(p.getString("fontMagnification")); fontSizeSmall.setText(p.getString("fontSizeSmall")); fontSizeBig.setText(p.getString("fontSizeBig")); stereoAngle.setText(p.getString("stereoAngle")); joglByDefault.setSelected(p.getBoolean("joglByDefault")); textOpenOnStart.setSelected(p.getBoolean("textOpenOnStart")); treeConfirmDelete.setSelected(p.getBoolean("treeConfirmDelete")); treeConfirmMerge.setSelected(p.getBoolean("treeConfirmMerge")); checkNewVersion.setSelected(p.getBoolean("checkNewVersion")); } private void fromGUI() { KingPrefs p = kMain.prefs; if(p == null) return; try { Float f = new Float(fontMagnification.getText().trim()); p.setProperty("fontMagnification", f.toString()); } catch(NumberFormatException ex) {} try { Integer i = new Integer(fontSizeSmall.getText().trim()); p.setProperty("fontSizeSmall", i.toString()); } catch(NumberFormatException ex) {} try { Integer i = new Integer(fontSizeBig.getText().trim()); p.setProperty("fontSizeBig", i.toString()); } catch(NumberFormatException ex) {} try { Float f = new Float(stereoAngle.getText().trim()); p.setProperty("stereoAngle", f.toString()); } catch(NumberFormatException ex) {} p.setProperty("joglByDefault", new Boolean(joglByDefault.isSelected()).toString()); p.setProperty("textOpenOnStart", new Boolean(textOpenOnStart.isSelected()).toString()); p.setProperty("treeConfirmDelete", new Boolean(treeConfirmDelete.isSelected()).toString()); p.setProperty("treeConfirmMerge", new Boolean(treeConfirmMerge.isSelected()).toString()); p.setProperty("checkNewVersion", new Boolean(checkNewVersion.isSelected()).toString()); for(Iterator iter = pluginMenuMap.keySet().iterator(); iter.hasNext(); ) { String pluginName = (String) iter.next(); JComboBox combo = (JComboBox) pluginMenuMap.get(pluginName); String menuName = (String) combo.getSelectedItem(); p.setProperty(pluginName+".menuName", menuName); } } //}}} //{{{ onDone, onSave, onDefaults //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDone(ActionEvent ev) { fromGUI(); dialog.setVisible(false); kMain.notifyChange(KingMain.EM_PREFS); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSave(ActionEvent ev) { fromGUI(); try { kMain.prefs.storeToFile(); } catch(SecurityException ex) { ex.printStackTrace(SoftLog.err); } toGUI(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDefaults(ActionEvent ev) { KingPrefs prefs = kMain.getPrefs(); prefs.clear(); toGUI(); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/KinStable.java0000644000000000000000000001604511531212674017477 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.io.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.tree.*; /** * KinStable holds all of the data about one or more kin files. * It acts as the root for the hierarchy of groups. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Wed Apr 24 11:22:51 EDT 2002 */ public class KinStable implements ListSelectionListener { //{{{ Variables KingMain kMain = null; java.util.List children; Kinemage currentKinemage = null; // the current kinemage within the file volatile boolean isLocked = false; JList kinChooser = null; // a list of all kinemages present in the stable //}}} //{{{ Constructor //################################################################################################## /** * Constructor */ public KinStable(KingMain kmain) { kMain = kmain; children = new ArrayList(10); kinChooser = new JList(new DefaultListModel()); kinChooser.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); kinChooser.setVisibleRowCount(4); kinChooser.setFixedCellWidth(100); kinChooser.addListSelectionListener(this); } //}}} //{{{ iterator, getKins //################################################################################################## /** Returns an iterator over the children of this element. All children will be Kinemages. */ public ListIterator iterator() { return children.listIterator(); } /** Returns an unmodifiable list of all open kinemages. */ public java.util.List getKins() { return Collections.unmodifiableList(children); } //}}} //{{{ notifyChange //################################################################################################## // Called by KingMain when something happens. // Shouldn't be called directly under normal circumstances. void notifyChange(int event_mask) { // Take care of yourself // Notify children Kinemage kin = this.getKinemage(); KinCanvas canvas = kMain.getCanvas(); Engine engine = (canvas==null? null : canvas.getEngine()); if((event_mask & KingMain.EM_SWITCH) != 0 && kin != null && engine != null) { canvas.getToolBox().services.doFlatland.setSelected(kin.atFlat); engine.whiteBackground = kin.atWhitebackground; engine.usePerspective = kin.atPerspective; engine.colorByList = kin.atListcolordominant; if(kin.atOnewidth) { engine.cueThickness = false; engine.thinLines = false; } else if(kin.atThinline) { engine.cueThickness = false; engine.thinLines = true; } else { //engine.cueThickness = true; engine.thinLines = false; } UIMenus menus = kMain.getMenus(); if(menus != null) menus.displayMenu.syncCheckboxes(); // canvas will redraw itself in a moment, anyway... } } //}}} //{{{ closeAll, closeCurrent, append //################################################################################################## public void closeAll() { children.clear(); currentKinemage = null; kMain.getTextWindow().setText(""); //kinChooser.removeAllItems(); // leaks memory! // This leak is a bug in JComboBox.removeAllItems() // as of v1.4.1 and has been reported to Sun by IWD. // The following is a work-around: kinChooser.setModel(new DefaultListModel()); kMain.notifyChange(kMain.EM_CLOSEALL); } public void closeCurrent() { children.remove(currentKinemage); currentKinemage = null; int selPos = kinChooser.getSelectedIndex(); Object selection = kinChooser.getSelectedValue(); DefaultListModel model = (DefaultListModel)kinChooser.getModel(); model.removeElement(selection); selPos = Math.min(selPos, kinChooser.getModel().getSize() - 1); if(selPos >= 0) kinChooser.setSelectedIndex(selPos); kMain.notifyChange(kMain.EM_CLOSE); } /** * Adds in the specified collection of kinemages. * If there is no current kinemage, then the first of these becomes the current kinemage. * @param kins a group of Kinemage objects to add (not null) */ public void append(Collection kins) { children.addAll(kins); DefaultListModel model = (DefaultListModel)kinChooser.getModel(); Iterator iter = kins.iterator(); if(iter.hasNext()) { currentKinemage = (Kinemage)iter.next(); currentKinemage.signal.subscribe(kMain); model.addElement(currentKinemage); kinChooser.setSelectedValue(currentKinemage, true); } while(iter.hasNext()) { Kinemage k = (Kinemage)iter.next(); k.signal.subscribe(kMain); model.addElement(k); } /** * This if statement corrects for a bug(?) in java 1.5 * which was causing king to not select a kinemage if one * was opened using the menu and there were no prior open * kins. **/ if(kinChooser.getSelectedIndex()==-1){ kinChooser.setSelectedIndex(0); } kMain.notifyChange(kMain.EM_SWITCH); } ///}}} //{{{ valueChanged, setLocked //################################################################################################## /* Gets called when a new kinemage is picked from the list (kinChooser) */ public void valueChanged(ListSelectionEvent ev) { currentKinemage = (Kinemage)kinChooser.getSelectedValue(); kMain.notifyChange(kMain.EM_SWITCH); } /** Used to control access to kinemage during file loading */ public synchronized void setLocked(boolean l) { if(isLocked != l) { isLocked = l; kMain.notifyChange(kMain.EM_SWITCH); } } //}}} //{{{ getKinemage, getChooser, changeCurrentKinemage //################################################################################################## /** Returns the Kingemage that contains all of the 3-D data being displayed. */ public synchronized Kinemage getKinemage() { if(isLocked) return null; else return currentKinemage; } /** Returns a JList that lists all the loaded kinemages. */ public Component getChooser() { return kinChooser; } public void changeCurrentKinemage(int kinNum) { int i = 1; for(Iterator iter = this.iterator(); iter.hasNext(); i++) { Kinemage kin = (Kinemage) iter.next(); if(i == kinNum) kinChooser.setSelectedValue(kin, true); } } //}}} }//class king-2.21.120420/king/1.x_src/king/EDMapWindow.java0000644000000000000000000003507111531212674017741 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.isosurface.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * EDMapWindow has controls for one * electron density map, contoured at two levels. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Wed Mar 5 09:00:11 EST 2003 */ public class EDMapWindow implements ChangeListener, ActionListener, TransformSignalSubscriber { //{{{ Constants DecimalFormat df1 = new DecimalFormat("0.0"); //}}} //{{{ Variable definitions //################################################################################################## protected KingMain kMain; protected KinCanvas kCanvas; ToolBox parent; CrystalVertexSource map; MarchingCubes mc1, mc2; EDMapPlotter plotter1, plotter2; String title; protected JDialog dialog; JSlider extent, slider1, slider2; JCheckBox label1, label2; JComboBox color1, color2; JCheckBox useTriangles, useLowRes; JButton discard, export; float ctrX, ctrY, ctrZ; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public EDMapWindow(ToolBox parent, CrystalVertexSource map, String title) { this.parent = parent; kMain = parent.kMain; kCanvas = parent.kCanvas; parent.sigTransform.subscribe(this); this.map = map; this.title = title; ctrX = ctrY = ctrZ = Float.NaN; // Plotters need to be non-null for signalTransform() // These are never used though; overwritten on first updateMesh() Object mode = MarchingCubes.MODE_TRIANGLE; plotter1 = new EDMapPlotter(false, mode); plotter2 = new EDMapPlotter(false, mode); //mc1 = new MarchingCubes(map, map, plotter1, mode); //mc2 = new MarchingCubes(map, map, plotter2, mode); buildGUI(); dialog.pack(); dialog.setLocationRelativeTo(kMain.getTopWindow()); dialog.setVisible(true); } //}}} //{{{ buildGUI //################################################################################################## void buildGUI() { dialog = new JDialog(kMain.getTopWindow(), title+" - EDMap", false); dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); label1 = new JCheckBox("1.2 sigma", true); label2 = new JCheckBox("3.0 sigma", false); color1 = new JComboBox(kMain.getKinemage().getAllPaintMap().values().toArray()); color1.setSelectedItem(KPalette.gray); color2 = new JComboBox(kMain.getKinemage().getAllPaintMap().values().toArray()); color2.setSelectedItem(KPalette.purple); extent = new JSlider(0, 30, 10); extent.setMajorTickSpacing(10); extent.setMinorTickSpacing(2); extent.setPaintTicks(true); //extent.setSnapToTicks(true); -- this seems to be buggy/weird extent.setPaintLabels(true); slider1 = new JSlider(-80, 80, 12); slider1.setMajorTickSpacing(10); slider1.setPaintTicks(true); //slider1.setSnapToTicks(true); -- this seems to be buggy/weird slider1.setPaintLabels(false); slider2 = new JSlider(-80, 80, 30); slider2.setMajorTickSpacing(10); slider2.setPaintTicks(true); //slider2.setSnapToTicks(true); -- this seems to be buggy/weird slider2.setPaintLabels(false); useTriangles = new JCheckBox(new ReflectiveAction("Translucent surface", null, this, "onTriangles")); useTriangles.setToolTipText("Enables a translucent triangle-mesh surface; use with Best rendering quality."); useLowRes = new JCheckBox(new ReflectiveAction("Coarser mesh", null, this, "onCoarseMesh")); discard = new JButton(new ReflectiveAction("Discard this map", null, this, "onMapDiscard")); export = new JButton(new ReflectiveAction("Export to kinemage", null, this, "onMapExport")); label1.addActionListener(this); label2.addActionListener(this); color1.addActionListener(this); color2.addActionListener(this); extent.addChangeListener(this); slider1.addChangeListener(this); slider2.addChangeListener(this); TablePane pane = new TablePane(); pane.save().hfill(true).addCell(extent, 2, 1).restore(); pane.newRow(); pane.add(pane.strut(0,8)); pane.newRow(); pane.add(label1); pane.add(color1); pane.newRow(); pane.save().hfill(true).addCell(slider1, 2, 1).restore(); pane.newRow(); pane.add(pane.strut(0,4)); pane.newRow(); pane.add(label2); pane.add(color2); pane.newRow(); pane.save().hfill(true).addCell(slider2, 2, 1).restore(); pane.newRow(); pane.add(pane.strut(0,4)); pane.newRow(); pane.add(useTriangles, 2, 1); pane.newRow(); pane.add(useLowRes, 2, 1); pane.newRow(); pane.center().hfill(true); pane.add(export, 2, 1); pane.newRow(); pane.add(discard, 2, 1); dialog.setContentPane(pane); JMenuBar menubar = new JMenuBar(); JMenu menu; JMenuItem item; menu = new JMenu("Presets"); menu.setMnemonic(KeyEvent.VK_P); menubar.add(menu); item = new JMenuItem(new ReflectiveAction("2Fo - Fc", null, this, "on2FoFc")); item.setMnemonic(KeyEvent.VK_2); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2, UIMenus.MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Fo - Fc", null, this, "onFoFc")); item.setMnemonic(KeyEvent.VK_1); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, UIMenus.MENU_ACCEL_MASK)); menu.add(item); dialog.setJMenuBar(menubar); } //}}} //{{{ stateChanged, actionPerformed, onTriangles, calcSliderValue //################################################################################################## public void stateChanged(ChangeEvent ev) { double val; val = calcSliderValue(slider1); label1.setText(df1.format(val)+" sigma"); val = calcSliderValue(slider2); label2.setText(df1.format(val)+" sigma"); if(!extent.getValueIsAdjusting() && !slider1.getValueIsAdjusting() && !slider2.getValueIsAdjusting()) { updateMesh(); kCanvas.repaint(); } } public void actionPerformed(ActionEvent ev) { kCanvas.repaint(); } // target of reflection public void onTriangles(ActionEvent ev) { updateMesh(); kCanvas.repaint(); } // target of reflection public void onCoarseMesh(ActionEvent ev) { updateMesh(); kCanvas.repaint(); } double calcSliderValue(JSlider slider) { int i = slider.getValue(); if(-60 <= i && i <= 60) return i/10.0; else if(i > 60) return (6.0 + (i-60)*2.0); else if(i < -60) return -(6.0 + (-i-60)*2.0); else throw new Error("assertion failure"); } //}}} //{{{ centerChanged //################################################################################################## /** * Reports on whether the viewing center has been changed. * Has the side effect of updating the internal center to match the current view. */ protected boolean centerChanged() { KingView v = kMain.getView(); if(v == null) return false; float[] ctr = v.getCenter(); boolean ret = (ctrX != ctr[0] || ctrY != ctr[1] || ctrZ != ctr[2]); ctrX = ctr[0]; ctrY = ctr[1]; ctrZ = ctr[2]; return ret; } //}}} //{{{ updateMesh //################################################################################################## protected void updateMesh() { if(Float.isNaN(ctrX) || Float.isNaN(ctrY) || Float.isNaN(ctrZ)) return; // Regenerate our plotting apparatus here in case the user's // preference for std. mesh vs. cobwebs has changed. Object mode = (useTriangles.isSelected() ? MarchingCubes.MODE_TRIANGLE : MarchingCubes.MODE_MESH); plotter1 = new EDMapPlotter(false, mode); plotter2 = new EDMapPlotter(false, mode); double val, size = extent.getValue() / 2.0; int[] corner1 = new int[3], corner2 = new int[3]; if(useLowRes.isSelected()) { LowResolutionVertexSource lores = new LowResolutionVertexSource(map, 2); mc1 = new MarchingCubes(lores, lores, plotter1, mode); mc2 = new MarchingCubes(lores, lores, plotter2, mode); lores.findVertexForPoint(ctrX-size, ctrY-size, ctrZ-size, corner1); lores.findVertexForPoint(ctrX+size, ctrY+size, ctrZ+size, corner2); } else { mc1 = new MarchingCubes(map, map, plotter1, mode); mc2 = new MarchingCubes(map, map, plotter2, mode); map.findVertexForPoint(ctrX-size, ctrY-size, ctrZ-size, corner1); map.findVertexForPoint(ctrX+size, ctrY+size, ctrZ+size, corner2); } /*double[] xyz = new double[3]; map.locateVertex(corner1[0], corner1[1], corner1[2], xyz); SoftLog.err.println("findVertex("+(ctrX-size)+" "+(ctrY-size)+" " +(ctrZ-size)+") -> "+xyz[0]+" "+xyz[1]+" "+xyz[2]); map.locateVertex(corner2[0], corner2[1], corner2[2], xyz); SoftLog.err.println("findVertex("+(ctrX+size)+" "+(ctrY+size)+" " +(ctrZ+size)+") -> "+xyz[0]+" "+xyz[1]+" "+xyz[2]);*/ val = calcSliderValue(slider1); mc1.march(corner1[0], corner1[1], corner1[2], corner2[0], corner2[1], corner2[2], val*map.sigma); val = calcSliderValue(slider2); mc2.march(corner1[0], corner1[1], corner1[2], corner2[0], corner2[1], corner2[2], val*map.sigma); //SoftLog.err.println("Updated mesh: "+corner1[0]+" "+corner1[1]+" "+corner1[2]+" / "+corner2[0]+" "+corner2[1]+" "+corner2[2]); } //}}} //{{{ signalTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void signalTransform(Engine engine, Transform xform) { KList list; if(centerChanged()) updateMesh(); list = plotter1.getList(); if(list != null && label1.isSelected()) { list.setColor((KPaint)color1.getSelectedItem()); list.signalTransform(engine, xform); } list = plotter2.getList(); if(list != null && label2.isSelected()) { list.setColor((KPaint)color2.getSelectedItem()); list.signalTransform(engine, xform); } //SoftLog.err.println("Painted maps."); } //}}} //{{{ on2FoFc, onFoFc //################################################################################################## // Preset values for 2Fo-Fc maps // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void on2FoFc(ActionEvent ev) { slider1.setValue(12); // +1.2 slider2.setValue(30); // +3.0 color1.setSelectedItem(KPalette.gray); color2.setSelectedItem(KPalette.purple); updateMesh(); kCanvas.repaint(); } // Preset values for Fo-Fc (difference) maps // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFoFc(ActionEvent ev) { slider1.setValue(-35); // -3.5 slider2.setValue( 35); // +3.5 color1.setSelectedItem(KPalette.orange); color2.setSelectedItem(KPalette.sky); label1.setSelected(true); label2.setSelected(true); updateMesh(); kCanvas.repaint(); } //}}} //{{{ onMapDiscard, onMapExport //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onMapDiscard(ActionEvent ev) { dialog.dispose(); parent.sigTransform.unsubscribe(this); kCanvas.repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onMapExport(ActionEvent ev) { // insert lists into kinemage Kinemage kin = kMain.getKinemage(); KGroup group = new KGroup(kin, "ED map"); kin.add(group); kin.setModified(true); KSubgroup subgroup = new KSubgroup(group, "ED map"); subgroup.setHasButton(false); group.add(subgroup); KList list1, list2; list1 = plotter1.getList(); plotter1.freeList(); list2 = plotter2.getList(); plotter2.freeList(); if(list1 != null && label1.isSelected()) { list1.setOwner(subgroup); subgroup.add(list1); } if(list2 != null && label2.isSelected()) { list2.setOwner(subgroup); subgroup.add(list2); } updateMesh(); // regenerate the meshes we just exported kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/KinfileLoader.java0000644000000000000000000001034311531212674020326 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; //import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; import java.util.zip.*; //import java.util.regex.*; import javax.swing.*; //import driftwood.*; //}}} /** * KinfileLoader is a system for loading * kinemages in a background thread. It messages a * KinLoadListener with the results of its actions. * This is the level where auto-detection of gzipped * kinemages takes place. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Fri Apr 11 10:07:14 EDT 2003 */ public class KinfileLoader implements ActionListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; InputStream input; KinLoadListener listener; Thread thread; javax.swing.Timer timer; KinfileParser parser; Throwable thrown = null; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a loader with the given input and listener, * starts the job in the background, and returns as soon * as the job has begun. */ public KinfileLoader(KingMain kmain, InputStream input, KinLoadListener listener) { this.kMain = kmain; this.input = input; this.listener = listener; parser = new KinfileParser(); timer = new javax.swing.Timer(1000, this); // update every 1000ms thread = new Thread(new ReflectiveRunnable(this, "backgroundWorker")); thread.setDaemon(true); timer.start(); thread.start(); } //}}} //{{{ backgroundWorker //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** Should not be called directly. Does loading in the background. */ public void backgroundWorker() { try { LineNumberReader lnr; // Test for GZIPped files input = new BufferedInputStream(input); input.mark(10); if(input.read() == 31 && input.read() == 139) { // We've found the gzip magic numbers... input.reset(); input = new GZIPInputStream(input); } else input.reset(); lnr = new LineNumberReader(new InputStreamReader(input)); parser.parse(lnr); SwingUtilities.invokeLater(new ReflectiveRunnable(this, "successCallback")); lnr.close(); } catch(Throwable t) { thrown = t; SwingUtilities.invokeLater(new ReflectiveRunnable(this, "errorCallback")); } } //}}} //{{{ actionPerformed //################################################################################################## /** Messaged when the progress needs to be updated */ public void actionPerformed(ActionEvent ev) { listener.updateProgress(parser.getCharsRead()); } //}}} //{{{ successCallback, errorCallback //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** Should not be called directly. Notifies listener that kinemage has been loaded. */ public void successCallback() { timer.stop(); listener.loadingComplete(parser); parser = null; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** Should not be called directly. Notifies listener of I/O or other error. */ public void errorCallback() { timer.stop(); listener.loadingException(thrown); parser = null; thrown = null; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/MageHypertextListener.java0000644000000000000000000000175311531212674022117 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * MageHypertextListener is able to get events when the user * selects a Mage-style *{hyperlink}* from the text window. * * @see UIText#addHypertextListener(MageHypertextListener) * @see UIText#removeHypertextListener(MageHypertextListener) * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Fri Jul 16 11:47:37 EDT 2004 */ public interface MageHypertextListener //extends ... implements ... { /** * Called by UIText whenever the user selects any Mage-style * hyperlink, which is bracked by *{ and *}. * @param link the text of the link, minus the flanking brackets */ public void mageHypertextHit(String link); }//class king-2.21.120420/king/1.x_src/king/MageHypertexter.java0000644000000000000000000000737611531212674020747 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.SoftLog; //}}} public class MageHypertexter implements MageHypertextListener { //{{{ Static fields //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public MageHypertexter(KingMain kmain) { this.kMain = kmain; } //}}} //{{{ mageHypertextHit //################################################################################################## public void mageHypertextHit(String link) { try { KinfileTokenizer token = new KinfileTokenizer(new LineNumberReader(new StringReader(link))); while(!token.isEOF()) { //if(!(token.isLiteral() || token.isProperty())) continue; String cmd = token.getString().toLowerCase(); token.advance(); if(cmd.equals("kinemage") || cmd.equals("kin")) doKinToken(token); else if(cmd.equals("view") || cmd.equals("v=")) doViewToken(token); else if(cmd.startsWith("master") || cmd.equals("m=")) doMasterToken(token); else if(cmd.equals("alloff")) doAllOffToken(); //else SoftLog.err.println("Unexpected hypertext token: "+cmd); } } catch(IOException ex) {} } //}}} //{{{ doKinToken, doViewToken //################################################################################################## public void doKinToken(KinfileTokenizer token) throws IOException { if(token.isInteger()) { kMain.getStable().changeCurrentKinemage(token.getInt()); token.advance(); } } public void doViewToken(KinfileTokenizer token) throws IOException { if(token.isInteger()) { try { Kinemage kin = kMain.getStable().getKinemage(); KingView view = (KingView)kin.getViewList().get(token.getInt() - 1); kin.notifyViewSelected(view); } catch(IndexOutOfBoundsException ex) {} token.advance(); } } //}}} //{{{ doMasterToken, doAllOffToken //################################################################################################## public void doMasterToken(KinfileTokenizer token) throws IOException { if(token.isIdentifier()) { String masterName = token.getString(); token.advance(); if(token.isLiteral()) { String masterAlive = token.getString().toLowerCase(); token.advance(); Kinemage kin = kMain.getKinemage(); if(masterAlive.equals("on")) kin.getMasterByName(masterName).setOn(true); else if(masterAlive.equals("off")) kin.getMasterByName(masterName).setOn(false); kMain.notifyChange(KingMain.EM_ON_OFF); } } } public void doAllOffToken() { Kinemage kin = kMain.getKinemage(); Collection masters = kin.masterList(); Iterator iter = masters.iterator(); while (iter.hasNext()) { MasterGroup master = (MasterGroup) iter.next(); master.setOn(false); } } //}}} }//class king-2.21.120420/king/1.x_src/king/KinCanvas.java0000644000000000000000000004216311531212674017500 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.print.*; //import java.io.*; import java.lang.reflect.*; import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.*; //}}} /** * KinCanvas is the display surface for the 3-D model. * *

Begun on Mon Apr 22 17:19:48 EDT 2002 *
Copyright (C) 2002-2003 by Ian W. Davis. All rights reserved. */ public class KinCanvas extends JComponent implements TransformSignalSubscriber, ChangeListener, Printable { //{{{ Static fields static final double LOG_2 = Math.log(2.0); static final int SLIDER_SCALE = 16; public static final int QUALITY_GOOD = 0; public static final int QUALITY_BETTER = 1; public static final int QUALITY_BEST = 2; public static final int QUALITY_JOGL = 10; //}}} //{{{ Variables //################################################################################################## KingMain kMain = null; Engine engine = null; ToolBox toolbox = null; StandardPainter goodPainter = new StandardPainter(false); StandardPainter betterPainter = new StandardPainter(true); HighQualityPainter bestPainter = new HighQualityPainter(true); Component joglCanvas = null; ReflectiveAction joglAction = null; DefaultBoundedRangeModel zoommodel = null; DefaultBoundedRangeModel clipmodel = null; Image logo = null; int renderQuality = QUALITY_GOOD; boolean writeFPS; //}}} //{{{ Constructor //################################################################################################## /** * Creates a new drawing surface that displays the given set of visible lists. * * @param kmain the program instance that owns this canvas */ public KinCanvas(KingMain kmain) { super(); kMain = kmain; // Set default graphics mode for OS X // This partly compensates for broken graphics primitives // on Mac implementations through at least 1.4.1... try { String os = System.getProperty("os.name").toLowerCase(); if(os.indexOf("mac") != -1 || os.indexOf("apple") != -1) renderQuality = QUALITY_BETTER; } catch(SecurityException ex) { SoftLog.err.println(ex.getMessage()); } // Determine the screen size: Rectangle screenBounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().getBounds(); int screenSize = (3*Math.min(screenBounds.width, screenBounds.height)) / 4; Props props = kMain.getPrefs(); Dimension canvasSize = new Dimension(screenSize, screenSize); Dimension minCanvasSize = new Dimension(200, 200); if(props.hasProperty("graphicsWidth" ) && props.getInt("graphicsWidth") >= minCanvasSize.width) canvasSize.width = props.getInt("graphicsWidth"); if(props.hasProperty("graphicsHeight") && props.getInt("graphicsHeight") >= minCanvasSize.height) canvasSize.height = props.getInt("graphicsHeight"); writeFPS = props.getBoolean("writeFPS", false); // This will be overriden in KingMain if we're a // webpage-embedded applet setPreferredSize(canvasSize); setMinimumSize(minCanvasSize); setOpaque(true); zoommodel = new DefaultBoundedRangeModel(0, 0, -3*SLIDER_SCALE, 7*SLIDER_SCALE); zoommodel.addChangeListener(this); clipmodel = new DefaultBoundedRangeModel(200, 0, 0, 800); clipmodel.addChangeListener(this); engine = new Engine(); engine.updatePrefs(kMain.prefs); // set font sizes etc logo = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("images/king-logo.gif")); // We do this to enable mouse wheel in Java 1.4 without // causing a NoClassDefFoundError in Java 1.3. // For ToolBoxMW to not be loaded automatically, // there must not be any "hard" references to it from // main(). Thus, we use reflection instead. // A similar approach is used for XML. if(System.getProperty("java.version").compareTo("1.4") >= 0) { try { // What I'd like to do: //ToolBoxMW toolboxmw = new ToolBoxMW(kMain, this); //addMouseWheelListener(toolboxmw); //toolbox = toolboxmw; // Create a ToolBoxMW instance Class mwClass = Class.forName("king.ToolBoxMW"); Constructor mwConstr = mwClass.getConstructor(new Class[] { KingMain.class, KinCanvas.class }); toolbox = (ToolBox)mwConstr.newInstance(new Object[] { kMain, this }); } catch(Throwable t) { t.printStackTrace(SoftLog.err); toolbox = new ToolBox(kMain, this); } } else { toolbox = new ToolBox(kMain, this); } toolbox.listenTo(this); // If we do this here, everything JOGL needs is already created. I think. // It seems to work, at least, which isn't true if this code comes earlier! if(kMain.getPrefs().getBoolean("joglByDefault")) { try { //SoftLog.err.println("Trying to init OpenGL..."); //this.setQuality(QUALITY_JOGL); -- generates an error dialog this.loadJOGL(); this.renderQuality = QUALITY_JOGL; } catch(Throwable t) {}//{ t.printStackTrace(SoftLog.err); } } } //}}} //{{{ notifyChange, shutdown //################################################################################################## // Called by KingMain when something happens. // Shouldn't be called directly under normal circumstances. void notifyChange(int event_mask) { // Notify children if(engine != null) { if((event_mask & KingMain.EM_PREFS) != 0) engine.updatePrefs(kMain.prefs); if((event_mask & (KingMain.EM_CLOSE|KingMain.EM_CLOSEALL)) != 0) engine.flushZBuffer(); // prevents memory leaks } if(toolbox != null) toolbox.notifyChange(event_mask); // Take care of yourself if(event_mask != 0) this.repaint(); KingView view = kMain.getView(); if(view != null && (event_mask & (KingMain.EM_NEWVIEW | KingMain.EM_SWITCH)) != 0) { double viewspan = view.getSpan(); double kinspan = kMain.getKinemage().getSpan(); zoommodel.setValue((int)Math.round((double)SLIDER_SCALE * Math.log(kinspan/viewspan) / LOG_2)); clipmodel.setValue((int)(view.getClip() * 200.0)); } } void shutdown() { } //}}} //{{{ painting //################################################################################################## /** Override of JPanel.paintComponent -- wrapper for paintCanvas. */ protected void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D)g; paintCanvas(g2, this.getSize(), renderQuality); } /** Does the rendering, with Engine.render() doing most of the real work. */ public void paintCanvas(Graphics2D g2, Dimension dim, int quality) { /* A quick query for analyzing graphics performance java.awt.image.VolatileImage vi = createVolatileImage(getWidth(), getHeight()); if(vi != null) { ImageCapabilities ic = vi.getCapabilities(); SoftLog.err.println("isAccelerated = "+ic.isAccelerated()+"; isTrueVolatile = "+ic.isTrueVolatile()); }*/ Kinemage kin = kMain.getKinemage(); if(kin == null) { g2.setColor(Color.black); g2.fillRect(0, 0, dim.width, dim.height); if(logo != null) g2.drawImage(logo, (dim.width-logo.getWidth(this))/2, (dim.height-logo.getHeight(this))/2, this); if(kMain.getPrefs().newerVersionAvailable()) announceNewVersion(g2); } // This is not the usual way in which the JOGL canvas is redrawn, // and in fact, it may NEVER get called any more because the actual // KinCanvas object is never displayed while the JOGL canvas is. else if(quality >= QUALITY_JOGL && joglAction != null) joglAction.actionPerformed(null); else { Painter painter = null; if(quality == QUALITY_BETTER) { betterPainter.setGraphics(g2); painter = betterPainter; } else if(quality == QUALITY_BEST) { bestPainter.setGraphics(g2); painter = bestPainter; } else //(quality == QUALITY_GOOD) { goodPainter.setGraphics(g2); painter = goodPainter; } long timestamp = System.currentTimeMillis(); KingView view = kin.getCurrentView(); Rectangle bounds = new Rectangle(dim); engine.syncToKin(kin); engine.render(this, view, bounds, painter); if(toolbox != null) toolbox.overpaintCanvas(painter); timestamp = System.currentTimeMillis() - timestamp; if(writeFPS) SoftLog.err.println(timestamp+" ms ("+(timestamp > 0 ? Long.toString(1000/timestamp) : ">1000") +" FPS) - "+engine.getNumberPainted()+" objects painted"); } } //}}} //{{{ announceNewVersion //################################################################################################## void announceNewVersion(Graphics2D g2) { String msg = "A new version of KiNG is now available"; Dimension d = this.getSize(); Font font = new Font("SansSerif", Font.BOLD, 16); g2.setFont(font); g2.setColor(Color.white); FontMetrics metrics = g2.getFontMetrics(); Rectangle2D r = metrics.getStringBounds(msg, g2); g2.drawString(msg, (d.width - (int)r.getWidth())/2, (d.height - (int)r.getHeight())/2 + 170); } //}}} //{{{ printing //################################################################################################## /** * Printer callback -- calls KingRenderingEngine to do the real work. * This code was copied directly from paintComponent */ public int print(Graphics g, PageFormat format, int pageindex) { Graphics2D g2 = (Graphics2D)g; Dimension dim = getCanvasSize(); Kinemage kin = kMain.getKinemage(); if(kin == null || pageindex > 0) return NO_SUCH_PAGE; else { KingView view = kin.getCurrentView(); // Scale the paper to match the graphics window: double scale = Math.min( (double)(format.getImageableWidth() / dim.width), (double)(format.getImageableHeight()/dim.height) ); g2.scale(scale, scale); g2.setClip((int)(format.getImageableX()/scale), (int)(format.getImageableY()/scale), dim.width, dim.height); Rectangle bounds = new Rectangle(dim); bounds.setLocation((int)(format.getImageableX()/scale), (int)(format.getImageableY()/scale)); engine.syncToKin(kin); bestPainter.setGraphics(g2); engine.render(this, view, bounds, bestPainter); if(toolbox != null) toolbox.overpaintCanvas(bestPainter); return PAGE_EXISTS; } } //}}} //{{{ signalTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void signalTransform(Engine engine, Transform xform) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signalTransform(engine, xform); if(toolbox != null) toolbox.signalTransform(engine, xform); } //}}} //{{{ get/set functions //################################################################################################## public BoundedRangeModel getZoomModel() { return zoommodel; } public BoundedRangeModel getClipModel() { return clipmodel; } /** Returns a button that arms the pick-center function */ public Component getPickcenterButton() { return toolbox.services.doPickcenter; } /** Returns a button that shows markers */ public Component getMarkersButton() { return toolbox.services.doMarkers; } /** The size of the drawing surface (!= this.getSize() in OpenGL mode) */ public Dimension getCanvasSize() { return engine.getCanvasSize(); }; /** Returns the drawing engine this canvas uses for rendering. */ public Engine getEngine() { return engine; } /** Returns the toolbox used for interacting with this canvas. */ public ToolBox getToolBox() { return toolbox; } /** Sets the rendering quality to one of the QUALITY_XXX constants */ public void setQuality(int q) { renderQuality = q; // JOGL canvas is reusable in some situations but not others: // eg it crashes on FC2 with Java 1.5. For some reason, we must set the // graphics component here -- it doesn't work in paintComponent()! if(q == QUALITY_JOGL)// && joglCanvas == null) { try { loadJOGL(); } catch(Throwable t) { t.printStackTrace(SoftLog.err); joglCanvas = null; joglAction = null; JOptionPane.showMessageDialog(kMain.getTopWindow(), "Unable to initialize OpenGL graphics.\nSee user manual for details on enabling this feature.", "No OpenGL", JOptionPane.ERROR_MESSAGE); } } else if(q < QUALITY_JOGL) kMain.getContentPane().setGraphicsComponent(this); } //}}} //{{{ stateChanged //################################################################################################## public void stateChanged(ChangeEvent ev) { KingView view = kMain.getView(); if(view == null) return; if(ev.getSource() == zoommodel) { double kinspan = kMain.getKinemage().getSpan(); double newspan = kinspan / Math.pow(2, (double)zoommodel.getValue() / (double)SLIDER_SCALE); view.setSpan((float)newspan); this.repaint(); } else if(ev.getSource() == clipmodel) { double newclip = (double)clipmodel.getValue() / 200.0; view.setClip((float)newclip); this.repaint(); } } //}}} //{{{ isFocusTraversable() //################################################################################################## // Has been replaced with isFocusable() in 1.4+ public boolean isFocusTraversable() { return true; } public boolean isFocusable() { return true; } //}}} //{{{ repaint, loadJOGL //################################################################################################## /** To ensure OpenGL painting is done even when the canvas is hidden. */ public void repaint() { super.repaint(); if(renderQuality >= QUALITY_JOGL && joglAction != null) { // Is this check really needed? if(kMain.getContentPane().getGraphicsComponent() != joglCanvas) kMain.getContentPane().setGraphicsComponent(joglCanvas); joglAction.actionPerformed(null); } } // lazily loads the JOGL Painter just before we need it private void loadJOGL() throws Throwable { // Try to create a JOGL painter, via reflection Class joglClass = Class.forName("king.JoglCanvas"); Constructor joglConstr = joglClass.getConstructor(new Class[] { KingMain.class, Engine.class, ToolBox.class }); joglCanvas = (Component)joglConstr.newInstance(new Object[] { kMain, engine, toolbox }); joglAction = new ReflectiveAction(null, null, joglCanvas, "requestRepaint"); } //}}} //{{{ empty //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/PointEditor.java0000644000000000000000000003426711531212674020071 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; //}}} /** * PointEditor allows editing of point properties, * for single points and for groups of points. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Fri Dec 13 08:34:44 EST 2002 */ public class PointEditor implements ChangeListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; GroupEditor groupEditor; JDialog ptDialog; JTextField ptID, ptComment, ptAspects, ptMasters, ptWidthRadius, ptX, ptY, ptZ; ColorPicker ptPicker; JCheckBox ptUnpickable; JLabel ptIndex; JButton split; boolean ptFirstShow = true; KPoint thePoint = null; KPaint ptOrigColor = null; int index = 0; //index of this point in the KList //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PointEditor(KingMain kmain) { kMain = kmain; groupEditor = new GroupEditor(kMain, kMain.getTopWindow()); makePointDialog(); } //}}} //{{{ makePointDialog //################################################################################################## private void makePointDialog() { ptDialog = new JDialog(kMain.getTopWindow(), "Edit point", true); ptDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); ptID = new JTextField(20); ptComment = new JTextField(20); ptAspects = new JTextField(8); ptMasters = new JTextField(8); ptWidthRadius = new JTextField(8); ptX = new JTextField(8); ptY = new JTextField(8); ptZ = new JTextField(8); ptUnpickable = new JCheckBox("Unpickable"); ptIndex = new JLabel("Index is x/xxx"); KingPrefs prefs = kMain.getPrefs(); int patchSize = (prefs==null? 20 : prefs.getInt("colorSwatchSize")); ptPicker = new ColorPicker(KPaint.BLACK_COLOR, patchSize); ptPicker.addChangeListener(this); split = new JButton(new ReflectiveAction("Split list before this", null, this, "onPointSplit")); JButton ok = new JButton(new ReflectiveAction("OK", null, this, "onPointOK")); JButton cancel = new JButton(new ReflectiveAction("Cancel", null, this, "onPointCancel")); JButton editGroup = new JButton(new ReflectiveAction("Edit group", null, this, "onEditGroup")); JButton editSubgroup = new JButton(new ReflectiveAction("Edit subgroup", null, this, "onEditSubgroup")); JButton editList = new JButton(new ReflectiveAction("Edit list", null, this, "onEditList")); TablePane tp = new TablePane(); //tp.insets(4); tp.hfill(true); tp.startSubtable(); tp.add(new JLabel("Point ID")); tp.add(ptID, 3, 1); tp.newRow();//---------- tp.add(new JLabel("Comment")); tp.add(ptComment, 3, 1); tp.newRow();//---------- tp.skip(); tp.add(ptUnpickable); tp.add(ptPicker, 1, 10); tp.newRow();//---------- tp.add(new JLabel("Aspects")); tp.add(ptAspects); tp.newRow();//---------- tp.add(new JLabel("Pointmasters")); tp.add(ptMasters); tp.newRow();//---------- tp.add(new JLabel("Width/Radius")); tp.add(ptWidthRadius); tp.newRow();//---------- tp.skip(); tp.add(new JLabel("0 => from list")); tp.newRow();//---------- tp.add(new JLabel("X coord")); tp.add(ptX); tp.newRow();//---------- tp.add(new JLabel("Y coord")); tp.add(ptY); tp.newRow();//---------- tp.add(new JLabel("Z coord")); tp.add(ptZ); tp.newRow();//---------- tp.add(ptIndex); tp.center().add(split); tp.newRow();//---------- tp.add(Box.createVerticalGlue(), 2, 1); // allows for extra height of color picker tp.endSubtable(); tp.newRow();//---------- tp.skip(); tp.newRow();//---------- tp.startSubtable(); tp.center(); tp.add(editList); tp.add(editSubgroup); tp.add(editGroup); tp.endSubtable(); tp.newRow();//---------- tp.add(tp.strut(0,4)); tp.newRow();//---------- tp.startSubtable(); tp.center(); tp.add(ok); tp.add(cancel); tp.endSubtable(); ptDialog.setContentPane(tp); } //}}} //{{{ editPoint //################################################################################################## public void editPoint(KPoint p) { if(p == null) return; KList list = (KList)p.getOwner(); if(list == null) return; Kinemage kin = p.getKinemage(); if(kin == null) return; thePoint = p; // Write values to GUI ptID.setText(p.getName()); String comment = p.getComment(); if(comment == null) ptComment.setText(""); else ptComment.setText(comment); ptAspects.setText(p.getAspects()); ptMasters.setText(kin.fromPmBitmask(p.getPmMask())); ptX.setText(Float.toString(p.getOrigX())); ptY.setText(Float.toString(p.getOrigY())); ptZ.setText(Float.toString(p.getOrigZ())); ptUnpickable.setSelected(p.isUnpickable()); // Color ptOrigColor = p.getColor(); ptPicker.setBackgroundMode(kMain.getCanvas().getEngine().backgroundMode); ptPicker.setExtras(kMain.getKinemage().getNewPaintMap().values()); ptPicker.setSelection(ptOrigColor); // Width / Radius if(p instanceof VectorPoint) { ptWidthRadius.setEnabled(true); ptWidthRadius.setText(Integer.toString(p.getWidth())); } else if(p instanceof BallPoint) { ptWidthRadius.setEnabled(true); ptWidthRadius.setText(Float.toString(((BallPoint)p).r0)); } else { ptWidthRadius.setEnabled(false); ptWidthRadius.setText("n/a"); } // Index int size; index = 0; Iterator iter = list.iterator(); for(size = 0; iter.hasNext(); size++) { // KPoint.equals() just compares coordinates. if(p == iter.next()) index = size; } ptIndex.setText("Index is "+(index+1)+"/"+size); if(index == 0) split.setEnabled(false); else split.setEnabled(true); ptDialog.pack(); if(ptFirstShow) { ptDialog.setLocationRelativeTo(kMain.getTopWindow()); ptFirstShow = false; } ptDialog.setVisible(true); // thread stops here until we hit OK/Cancel } //}}} //{{{ onPointOK, onPointCancel, onPointColor //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onPointOK(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); thePoint.setName(ptID.getText()); String comment = ptComment.getText().trim(); if(comment.length() == 0) thePoint.setComment(null); else thePoint.setComment(comment); String aspects = ptAspects.getText().trim().toUpperCase(); if(aspects.length() > 0) thePoint.setAspects(aspects); else thePoint.setAspects(null); if(kin != null) thePoint.setPmMask(kin.toPmBitmask(ptMasters.getText().trim(), true, true)); thePoint.setUnpickable(ptUnpickable.isSelected()); try { thePoint.setOrigX(Float.parseFloat(ptX.getText().trim())); } catch(NumberFormatException ex) {} try { thePoint.setOrigY(Float.parseFloat(ptY.getText().trim())); } catch(NumberFormatException ex) {} try { thePoint.setOrigZ(Float.parseFloat(ptZ.getText().trim())); } catch(NumberFormatException ex) {} // Let "" be the same as zero here if(ptWidthRadius.getText().trim().equals("")) ptWidthRadius.setText("0"); try { if(thePoint instanceof VectorPoint) { int w = Integer.parseInt(ptWidthRadius.getText().trim()); if(w > 7) w = 7; if(w < 0) w = 0; thePoint.setWidth(w); } else if(thePoint instanceof BallPoint) { float r = Float.parseFloat(ptWidthRadius.getText().trim()); ((BallPoint)thePoint).r0 = r; } } catch(NumberFormatException ex) {} ptDialog.dispose(); thePoint = null; // avoid memory leaks if(kin != null) kin.setModified(true); kMain.notifyChange(KingMain.EM_EDIT_FINE); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onPointCancel(ActionEvent ev) { thePoint.setColor(ptOrigColor); ptDialog.dispose(); thePoint = null; // avoid memory leaks } public void stateChanged(ChangeEvent ev) { Kinemage kin = thePoint.getKinemage(); if(kin == null) return; thePoint.setColor(ptPicker.getSelection()); kMain.notifyChange(KingMain.EM_EDIT_FINE); } //}}} //{{{ onPointSplit //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onPointSplit(ActionEvent ev) { KList origlist = (KList)thePoint.getOwner(); if(origlist == null) return; KSubgroup subgroup = (KSubgroup)origlist.getOwner(); if(subgroup == null) return; java.util.List allkids = origlist.children; if(index < 1 || index >= allkids.size()) return; KList newlist = new KList(subgroup, origlist.getName()); subgroup.add(newlist); newlist.type = origlist.type; newlist.color = origlist.color; newlist.radius = origlist.radius; newlist.width = origlist.width; newlist.flags = origlist.flags; newlist.masters = new ArrayList(origlist.masters); newlist.setOn(origlist.isOn()); newlist.setHasButton(origlist.hasButton()); //newlist.setDominant(origlist.isDominant()); origlist.children = new ArrayList( allkids.subList(0,index) ); newlist.children = new ArrayList( allkids.subList(index,allkids.size()) ); for(Iterator iter = newlist.iterator(); iter.hasNext(); ) { ((KPoint)iter.next()).setOwner(newlist); } // We may need to duplicate this point to avoid breaks in the list if(thePoint.getPrev() != null) { if(thePoint instanceof VectorPoint) { VectorPoint prev , origvp, newvp; origvp = (VectorPoint)thePoint; prev = (VectorPoint)origvp.getPrev(); newvp = new VectorPoint(origlist, origvp.getName(), prev); newvp.setOrigX(origvp.getOrigX()); newvp.setOrigY(origvp.getOrigY()); newvp.setOrigZ(origvp.getOrigZ()); newvp.setAspects(origvp.getAspects()); newvp.setPmMask(origvp.getPmMask()); newvp.multi = origvp.multi; newvp.setWidth(origvp.getWidth()); origlist.add(newvp); origvp.setPrev(null); } else if(thePoint instanceof TrianglePoint) { TrianglePoint prev , origtp, newtp; origtp = (TrianglePoint)thePoint; prev = (TrianglePoint)origtp.getPrev(); newtp = new TrianglePoint(origlist, origtp.getName(), prev); newtp.setOrigX(origtp.getOrigX()); newtp.setOrigY(origtp.getOrigY()); newtp.setOrigZ(origtp.getOrigZ()); newtp.setAspects(origtp.getAspects()); newtp.setPmMask(origtp.getPmMask()); newtp.multi = origtp.multi; origlist.add(newtp); origtp.setPrev(null); } } Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_EDIT_FINE); } //}}} //{{{ onEditGroup, onEditSubgroup, onEditList //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditGroup(ActionEvent ev) { KList list = (KList)thePoint.getOwner(); if(list == null) return; KSubgroup subgroup = (KSubgroup)list.getOwner(); if(subgroup == null) return; KGroup group = (KGroup)subgroup.getOwner(); if(group == null) return; if(groupEditor.editGroup(group)) kMain.notifyChange(KingMain.EM_EDIT_GROSS); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditSubgroup(ActionEvent ev) { KList list = (KList)thePoint.getOwner(); if(list == null) return; KSubgroup subgroup = (KSubgroup)list.getOwner(); if(subgroup == null) return; if(groupEditor.editSubgroup(subgroup)) kMain.notifyChange(KingMain.EM_EDIT_GROSS); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditList(ActionEvent ev) { KList list = (KList)thePoint.getOwner(); if(list == null) return; if(groupEditor.editList(list)) kMain.notifyChange(KingMain.EM_EDIT_GROSS); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/UIMenus.java0000644000000000000000000010053011531212674017141 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.awt.print.*; import java.io.*; import java.lang.reflect.*; import java.net.*; import java.text.*; import java.util.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * UIMenus contains all the menus and their corresponding * Action objects for various actions the user can take. * *

Begun on Sat Apr 27 20:34:46 EDT 2002 *
Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. */ public class UIMenus //extends ... implements ... { static final DecimalFormat df = new DecimalFormat("###,###,##0"); public static /*final*/ int MENU_ACCEL_MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); //{{{ Variable definitions //################################################################################################## KingMain kMain; JMenuBar menubar; UIDisplayMenu displayMenu; // Tool-like objects JFileChooser fileChooser = null; SuffixFileFilter fileFilter; PointFinder finder; ViewEditor viewEditor; // Elements of menus that get rebuilt frequently JMenu oldViewMenu = null; JMenu fileMenu, toolsMenu; //}}} //{{{ Constructor, getMenuBar() //################################################################################################## public UIMenus(KingMain kmain) { kMain = kmain; // CTRL-x shortcuts are still useful in a Mac browser. // There's no good option for Windows / Linux broswers though. if(kMain.getApplet() != null) MENU_ACCEL_MASK = Event.CTRL_MASK; // Will throw an exception if we're running as an Applet try { fileFilter = new SuffixFileFilter("Kinemage files (*.kin)"); fileFilter.addSuffix(".kin"); fileFilter.addSuffix(".kip"); fileFilter.addSuffix(".kip1"); fileFilter.addSuffix(".kip2"); fileFilter.addSuffix(".kip3"); fileFilter.addSuffix(".kip4"); fileFilter.addSuffix(".kip5"); fileFilter.addSuffix(".kip6"); fileFilter.addSuffix(".kip7"); fileFilter.addSuffix(".kip8"); fileFilter.addSuffix(".kip9"); fileChooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) fileChooser.setCurrentDirectory(new File(currdir)); fileChooser.addChoosableFileFilter(fileFilter); fileChooser.setFileFilter(fileFilter); } catch(SecurityException ex) {} finder = new PointFinder(kMain); viewEditor = new ViewEditor(kMain); buildMenus(); } /** Returns the menu bar */ public JMenuBar getMenuBar() { return menubar; } //}}} //{{{ buildMenus() //################################################################################################## // Construct all the menus and their actions for the menubar. void buildMenus() { menubar = new JMenuBar(); JMenu menu, submenu; JMenuItem item; JCheckBoxMenuItem cbitem; KinCanvas kCanvas; // File menu fileMenu = menu = new JMenu("File"); menu.setMnemonic(KeyEvent.VK_F); menubar.add(menu); rebuildFileMenu(); //{{{ Edit menu menu = new JMenu("Edit"); menu.setMnemonic(KeyEvent.VK_E); menubar.add(menu); item = new JMenuItem(new ReflectiveAction("Find point...", null, this, "onEditFind")); item.setMnemonic(KeyEvent.VK_F); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Find next", null, this, "onEditFindNext")); item.setMnemonic(KeyEvent.VK_N); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, MENU_ACCEL_MASK)); menu.add(item); menu.addSeparator(); item = new JMenuItem(new ReflectiveAction("Kinemage properties...", null, this, "onEditKinProps")); item.setMnemonic(KeyEvent.VK_K); //item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Edit text...", null, this, "onEditText")); item.setMnemonic(KeyEvent.VK_T); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Edit hierarchy...", null, this, "onEditHierarchy")); item.setMnemonic(KeyEvent.VK_H); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, MENU_ACCEL_MASK)); menu.add(item); menu.addSeparator(); item = new JMenuItem(new ReflectiveAction("Configure KiNG...", null, this, "onEditConfigure")); item.setMnemonic(KeyEvent.VK_C); menu.add(item); //}}} // Views menu rebuildViewsMenu(null); // Display menu displayMenu = new UIDisplayMenu(kMain); menubar.add(displayMenu.getMenu()); // Tools menu toolsMenu = menu = new JMenu("Tools"); menu.setMnemonic(KeyEvent.VK_T); menubar.add(menu); rebuildToolsMenu(); //{{{ Help menu menu = new JMenu("Help"); menu.setMnemonic(KeyEvent.VK_H); menubar.add(menu); item = new JMenuItem(new ReflectiveAction("User manual...", null, this, "onHelpManual")); item.setMnemonic(KeyEvent.VK_M); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0)); // 0 => no modifiers menu.add(item); submenu = new JMenu("Tools"); submenu.setMnemonic(KeyEvent.VK_T); menu.add(submenu); kCanvas = kMain.getCanvas(); if(kCanvas != null) { ToolBox tb = kCanvas.getToolBox(); if(tb != null) tb.addPluginsToHelpMenu(submenu); } item = new JMenuItem(new ReflectiveAction("Keyboard shortcuts...", null, this, "onHelpKeyboardShortcuts")); item.setMnemonic(KeyEvent.VK_S); //item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0)); // 0 => no modifiers menu.add(item); submenu = new JMenu("Built-in kinemages"); submenu.setMnemonic(KeyEvent.VK_K); menu.add(submenu); item = new JMenuItem(new ReflectiveAction("Internal palette", null, this, "onHelpKinPalette")); item.setMnemonic(KeyEvent.VK_P); submenu.add(item); item = new JMenuItem(new ReflectiveAction("Color cone", null, this, "onHelpKinCone")); item.setMnemonic(KeyEvent.VK_C); submenu.add(item); item = new JMenuItem(new ReflectiveAction("Falling teddy bear", null, this, "onHelpKinBear")); item.setMnemonic(KeyEvent.VK_B); submenu.add(item); item = new JMenuItem(new ReflectiveAction("Error log...", null, this, "onHelpLog")); item.setMnemonic(KeyEvent.VK_E); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, MENU_ACCEL_MASK)); // 0 => no modifiers menu.add(item); item = new JMenuItem(new ReflectiveAction("About KiNG...", null, this, "onHelpAbout")); item.setMnemonic(KeyEvent.VK_A); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_K, MENU_ACCEL_MASK)); // 0 => no modifiers menu.add(item); //}}} } //}}} //{{{ rebuildFileMenu //################################################################################################## public void rebuildFileMenu() { JMenuItem item; JMenu menu = fileMenu; menu.removeAll(); JApplet applet = kMain.getApplet(); if(applet == null) // => not in an applet { item = new JMenuItem(new ReflectiveAction("New KiNG window", null, this, "onFileNewKing")); item.setMnemonic(KeyEvent.VK_N); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, MENU_ACCEL_MASK)); menu.add(item); menu.addSeparator(); } item = new JMenuItem(new ReflectiveAction("Open...", null, this, "onFileOpen")); item.setMnemonic(KeyEvent.VK_O); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Append...", null, this, "onFileMerge")); item.setMnemonic(KeyEvent.VK_A); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, MENU_ACCEL_MASK)); menu.add(item); if(applet == null) // not in an applet { KinCanvas kCanvas = kMain.getCanvas(); if(kCanvas != null) { ToolBox tb = kCanvas.getToolBox(); if(tb != null) { JMenu importMenu = new JMenu("Import"); importMenu.setMnemonic(KeyEvent.VK_I); tb.addPluginsToSpecialMenu(ToolBox.MENU_IMPORT, importMenu); if(importMenu.getItemCount() > 0) { menu.add(importMenu); } } } } item = new JMenuItem(new ReflectiveAction("Close", null, this, "onFileClose")); item.setMnemonic(KeyEvent.VK_C); menu.add(item); item = new JMenuItem(new ReflectiveAction("Close all", null, this, "onFileCloseAll")); item.setMnemonic(KeyEvent.VK_L); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, MENU_ACCEL_MASK)); menu.add(item); menu.addSeparator(); if(applet == null || applet.getParameter("kinfileSaveHandler") != null) { item = new JMenuItem(new ReflectiveAction("Save as...", null, this, "onFileSaveAs")); item.setMnemonic(KeyEvent.VK_S); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, MENU_ACCEL_MASK)); menu.add(item); } if(applet == null) // => not in an applet { KinCanvas kCanvas = kMain.getCanvas(); if(kCanvas != null) { ToolBox tb = kCanvas.getToolBox(); if(tb != null) { JMenu exportMenu = new JMenu("Export"); exportMenu.setMnemonic(KeyEvent.VK_E); tb.addPluginsToSpecialMenu(ToolBox.MENU_EXPORT, exportMenu); if(exportMenu.getItemCount() > 0) { menu.add(exportMenu); } } } } // This might throw a SecurityException, if the user denies us permission... item = new JMenuItem(new ReflectiveAction("Print...", null, this, "onFilePrint")); item.setMnemonic(KeyEvent.VK_P); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, MENU_ACCEL_MASK)); menu.add(item); if(applet == null) // => not in an applet { menu.addSeparator(); item = new JMenuItem(new ReflectiveAction("Exit", null, this, "onFileExit")); item.setMnemonic(KeyEvent.VK_X); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, MENU_ACCEL_MASK)); menu.add(item); } } //}}} //{{{ rebuildViewsMenu //################################################################################################## /** * Creates a new Views menu from the specified iterator of KingView objects * @param viewiter Iterator of KingViews, or null for an empty menu */ public void rebuildViewsMenu(Iterator viewiter) { JMenu menu = new JMenu("Views"); menu.setMnemonic(KeyEvent.VK_V); JMenuItem item; JRadioButtonMenuItem ritem; ButtonGroup rgroup = new ButtonGroup(); if(viewiter != null) { item = new JMenuItem(new ReflectiveAction("Save current view", null, this, "onViewSave")); item.setMnemonic(KeyEvent.VK_S); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Edit saved views...", null, this, "onViewEdit")); item.setMnemonic(KeyEvent.VK_E); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, MENU_ACCEL_MASK | KeyEvent.SHIFT_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Choose viewing axes...", null, this, "onViewChooseAxes")); item.setMnemonic(KeyEvent.VK_C); //item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, MENU_ACCEL_MASK | KeyEvent.SHIFT_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Parallel coordinates", null, this, "onViewParallelCoords")); item.setMnemonic(KeyEvent.VK_P); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_SLASH, 0)); menu.add(item); menu.addSeparator(); JMenu currMenu = menu; for(int i = 1; viewiter.hasNext(); i++) { // Every 25 views, chain them into a new menu if(i != 1 && i % 25 == 1) { JMenu newMenu = new JMenu("More views"); currMenu.add(newMenu); currMenu = newMenu; } KingView view = (KingView)viewiter.next(); ritem = new JRadioButtonMenuItem(new ReflectiveAction((i+" "+view.toString()), null, view, "selectedFromMenu")); rgroup.add(ritem); currMenu.add(ritem); } } else { item = new JMenuItem("No views available"); item.setEnabled(false); menu.add(item); } if(oldViewMenu != null) { int viewIndex = menubar.getComponentIndex(oldViewMenu); menubar.remove(oldViewMenu); menubar.add(menu, viewIndex); } else { menubar.add(menu); } // This step is ESSENTIAL for the menu to appear & keep working! menubar.revalidate(); oldViewMenu = menu; } //}}} //{{{ rebuildToolsMenu //################################################################################################## public void rebuildToolsMenu() { JMenuItem item; JCheckBoxMenuItem cbitem; JMenu menu = toolsMenu; menu.removeAll(); cbitem = kMain.getCanvas().getToolBox().services.doFlatland; cbitem.setMnemonic(KeyEvent.VK_L); cbitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, 0)); menu.add(cbitem); cbitem = kMain.getCanvas().getToolBox().services.doXYZ; cbitem.setMnemonic(KeyEvent.VK_X); //cbitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, MENU_ACCEL_MASK)); menu.add(cbitem); cbitem = kMain.getCanvas().getToolBox().services.doMeasureAll; cbitem.setMnemonic(KeyEvent.VK_M); cbitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M, 0)); menu.add(cbitem); cbitem = kMain.getCanvas().getToolBox().services.doObjectPick; cbitem.setMnemonic(KeyEvent.VK_O); menu.add(cbitem); cbitem = kMain.getCanvas().getToolBox().services.doSuperpick; cbitem.setMnemonic(KeyEvent.VK_S); menu.add(cbitem); KinCanvas kCanvas = kMain.getCanvas(); if(kCanvas != null) { ToolBox tb = kCanvas.getToolBox(); if(tb != null) { menu.addSeparator(); tb.addPluginsToToolsMenu(menu); } } menu.addSeparator(); item = new JMenuItem(new ReflectiveAction("Customize Tools menu...", null, this, "onEditConfigurePlugins")); item.setMnemonic(KeyEvent.VK_C); menu.add(item); } //}}} //{{{ reporter() -- the dummy action //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void reporter(ActionEvent ev) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "This feature has not been implemented yet.", "Sorry!", JOptionPane.INFORMATION_MESSAGE); } //}}} //{{{ onFileXXX handlers //################################################################################################## //### "File" functions ############################################################################# //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileNewKing(ActionEvent ev) { new KingMain(new String[] {}).Main(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileOpen(ActionEvent ev) { KinfileIO io = kMain.getKinIO(); if(kMain.getApplet() != null) io.askLoadURL(null); else io.askLoadFile(null); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileMerge(ActionEvent ev) { KinfileIO io = kMain.getKinIO(); Kinemage kin = kMain.getKinemage(); if(kin == null) { kin = new Kinemage(KinfileParser.DEFAULT_KINEMAGE_NAME+"1"); boolean success = false; if(kMain.getApplet() != null) success = io.askLoadURL(kin); else success = io.askLoadFile(kin); if(success) kMain.getStable().append(Arrays.asList(new Kinemage[] {kin})); // This way we don't create an empty if append is canceled } else { if(kMain.getApplet() != null) io.askLoadURL(kin); else io.askLoadFile(kin); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileClose(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null && k.isModified()) { int confirm = JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This kinemage has been modified.\nDo you want to save it before closing?", "Save before closing?", JOptionPane.YES_NO_CANCEL_OPTION); if(confirm == JOptionPane.CANCEL_OPTION) return; else if(confirm == JOptionPane.YES_OPTION) onFileSaveAs(ev); } kMain.getStable().closeCurrent(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileCloseAll(ActionEvent ev) { boolean modified = false; for(Iterator iter = kMain.getStable().iterator(); iter.hasNext(); ) { Kinemage k = (Kinemage) iter.next(); if(k.isModified()) modified = true; } if(modified) { int confirm = JOptionPane.showConfirmDialog(kMain.getTopWindow(), "One or more open kinemages have been modified.\nDo you want to save them before closing?", "Save before closing?", JOptionPane.YES_NO_CANCEL_OPTION); if(confirm == JOptionPane.CANCEL_OPTION) return; else if(confirm == JOptionPane.YES_OPTION) onFileSaveAs(ev); } kMain.getStable().closeAll(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileSaveAs(ActionEvent ev) { KinfileIO io = kMain.getKinIO(); if(kMain.getApplet() != null) io.askSaveURL(); else { int numKins = kMain.getStable().getKins().size(); if(numKins > 1) { JRadioButton btnBoth = new JRadioButton((numKins == 2 ? "Save both in one file" : "Save all "+numKins+" in one file"), true); JRadioButton btnCurr = new JRadioButton("Save only the currently selected kinemage", false); ButtonGroup btnGroup = new ButtonGroup(); btnGroup.add(btnBoth); btnGroup.add(btnCurr); int result = JOptionPane.showConfirmDialog(kMain.getTopWindow(), new Object[] { "There are currently "+numKins+" open kinemages.", "What do you want to do?", btnBoth, btnCurr }, "Saving multiple kinemages", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if(result == JOptionPane.NO_OPTION || result == JOptionPane.CANCEL_OPTION) {} else if(btnBoth.isSelected()) io.askSaveFile(); else if(btnCurr.isSelected()) io.askSaveFile(kMain.getKinemage()); } else io.askSaveFile(); } } // This might throw a SecurityException, if the user denies us permission... // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFilePrint(ActionEvent ev) { try { PrinterJob job = PrinterJob.getPrinterJob(); job.setPrintable(kMain.getCanvas()); if(job.printDialog()) job.print(); } catch(Exception ex) { ex.printStackTrace(SoftLog.err); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileExit(ActionEvent ev) { onFileCloseAll(ev); // checks for modifications and prompts to save if(kMain.getStable().getKins().size() == 0) kMain.shutdown(); // else we must have pressed Cancel } //}}} //{{{ onEditXXX handlers //################################################################################################## //### "Edit" functions ############################################################################# //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditFind(ActionEvent ev) { finder.show(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditFindNext(ActionEvent ev) { // If we can't find a next point, offer to search again. if( finder.findNext() == false ) onEditFind(ev); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditText(ActionEvent ev) { UIText win = kMain.getTextWindow(); if(win != null) win.onPopupButton(null); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditKinProps(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; GroupEditor groupEd = new GroupEditor(kMain, kMain.getTopWindow()); groupEd.editKinemage(kin); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditHierarchy(ActionEvent ev) { KinTree win = kMain.getKinTree(); if(win != null) win.show(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditConfigure(ActionEvent ev) { PrefsEditor prefsEditor = new PrefsEditor(kMain); prefsEditor.edit(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditConfigurePlugins(ActionEvent ev) { PrefsEditor prefsEditor = new PrefsEditor(kMain); prefsEditor.editPlugins(); } //}}} //{{{ onViewXXX handlers //################################################################################################## //### "Views" functions ############################################################################ //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onViewSave(ActionEvent ev) { String viewname = JOptionPane.showInputDialog(kMain.getTopWindow(), "Name for this view:", "Save view", JOptionPane.PLAIN_MESSAGE); if(viewname == null) return; KingView view = kMain.getView(); if(view == null) return; view = (KingView)view.clone(); view.setID(viewname); // User should choose to save axes positions or not (?) // If the data is high-D data, views only really make sense // in the context of the dimensions that were being viewed! //view.setViewingAxes(null); Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.addView(view); kin.setModified(true); rebuildViewsMenu(kin.getViewIterator()); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onViewEdit(ActionEvent ev) { viewEditor.editViews(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onViewChooseAxes(ActionEvent ev) { new AxisChooser(kMain, kMain.getKinemage()); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onViewParallelCoords(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; String key = ParaParams.class.getName()+".instance"; ParaParams params = (ParaParams) kin.metadata.get(key); if(params == null) { params = new ParaParams(kin); kin.metadata.put(key, params); } params.swap(); kin.signal.signalKinemage(kin, KinemageSignal.STRUCTURE | KinemageSignal.APPEARANCE); } //}}} //{{{ onHelpXXX handlers //################################################################################################## //### "Help" functions ############################################################################ //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpManual(ActionEvent ev) { URL start = getClass().getResource("html/king-manual.html"); if(start != null) new HTMLHelp(kMain, start).show(); else SoftLog.err.println("Couldn't find the specified resource!"); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpKeyboardShortcuts(ActionEvent ev) { URL start = getClass().getResource("html/kbd-shortcuts.html"); if(start != null) new HTMLHelp(kMain, start).show(); else SoftLog.err.println("Couldn't find the specified resource!"); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpKinPalette(ActionEvent ev) { URL palkin = getClass().getResource("kins/pal5.kin"); if(palkin != null) kMain.getKinIO().loadURL(palkin, null); else SoftLog.err.println("Couldn't find the specified resource!"); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpKinCone(ActionEvent ev) { URL kin = getClass().getResource("kins/cone.kin"); if(kin != null) kMain.getKinIO().loadURL(kin, null); else SoftLog.err.println("Couldn't find the specified resource!"); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpKinBear(ActionEvent ev) { URL kin = getClass().getResource("kins/fallingbear.kin"); if(kin != null) kMain.getKinIO().loadURL(kin, null); else SoftLog.err.println("Couldn't find the specified resource!"); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpLog(ActionEvent ev) { new LogViewer(kMain.getTopWindow(), "KiNG error log", SoftLog.err); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpAbout(ActionEvent ev) { ArrayList msgs = new ArrayList(); KingPrefs prefs = kMain.getPrefs(); Runtime runtime = Runtime.getRuntime(); int i, total0 = 0, free0 = 0, total1 = 0, free1 = 0, used; // in kilobytes msgs.add(new JLabel("KiNG (Kinetic Image, Next Generation)")); msgs.add(new JLabel("Version "+kMain.getPrefs().getString("version"))); msgs.add(new JLabel("Build "+kMain.getPrefs().getString("buildnum"))); try { if(prefs.jarFileDirectory != null) msgs.add(new JLabel("Installed in "+prefs.jarFileDirectory.getCanonicalPath())); } catch(IOException ex) {} msgs.add(new JLabel(" ")); msgs.add(new JLabel("Created in the Richardson lab at Duke University")); msgs.add(new JLabel("http://kinemage.biochem.duke.edu")); msgs.add(new JLabel(" ")); msgs.add(new JLabel("Copyright (C) 2002-2005 Ian W. Davis and Vincent B. Chen")); msgs.add(new JLabel("All rights reserved.")); msgs.add(new JLabel(" ")); msgs.add(new JLabel("Using Java "+System.getProperty("java.version", "(unknown version)"))); try { msgs.add(new JLabel(System.getProperty("java.home", "(path not found)"))); } catch(SecurityException ex) {} // We're not listing the versions of iText, JOGL, etc. here ... //msgs.add(new JLabel("Using gnu.regexp "+gnu.regexp.RE.version())); // Take up to 10 tries at garbage collection for(i = 0; i < 10; i++) { total1 = (int)(runtime.totalMemory() >> 10); free1 = (int)(runtime.freeMemory() >> 10); if(total1 == total0 && free1 == free0) break; else { System.gc(); //try { Thread.sleep(500); } catch(InterruptedException ex) {} total0 = total1; free0 = free1; } } used = total1 - free1; msgs.add(new JLabel(" ")); //msgs.add(new JLabel("Garbage collection freed "+df.format(free2-free1)+"kb")); JProgressBar mem = new JProgressBar(0, total1); mem.setStringPainted(true); mem.setString(df.format(used)+"kb / "+df.format(total1)+"kb"); mem.setValue(used); msgs.add(mem); JOptionPane.showMessageDialog(kMain.getTopWindow(), msgs.toArray(), "About KiNG", JOptionPane.INFORMATION_MESSAGE); } /** I use this from JDB for tracking down memory leaks */ public static String showMem() { Runtime runtime = Runtime.getRuntime(); int i, total0 = 0, free0 = 0, total1 = 0, free1 = 0, used; // in kilobytes // Take up to 10 tries at garbage collection for(i = 0; i < 10; i++) { total1 = (int)(runtime.totalMemory() >> 10); free1 = (int)(runtime.freeMemory() >> 10); if(total1 == total0 && free1 == free0) break; else { System.gc(); //try { Thread.sleep(500); } catch(InterruptedException ex) {} total0 = total1; free0 = free1; } } used = total1 - free1; return df.format(used)+"kb / "+df.format(total1)+"kb"; } //}}} //{{{ notifyChange //################################################################################################## // Called by KingMain when something happens. // Shouldn't be called directly under normal circumstances. static final int REDO_MENUS = KingMain.EM_SWITCH | KingMain.EM_CLOSE | KingMain.EM_CLOSEALL; void notifyChange(int event_mask) { // Take care of yourself if((event_mask & REDO_MENUS) != 0) { Kinemage kin = kMain.getKinemage(); if(kin != null) { rebuildViewsMenu(kin.getViewIterator()); } else { rebuildViewsMenu(null); } displayMenu.rebuildAspectsMenu(); finder.clearSearch(); } if((event_mask & KingMain.EM_PREFS) != 0) { // Plugin placement may have changed rebuildFileMenu(); rebuildToolsMenu(); } // Notify children } //}}} }//class king-2.21.120420/king/1.x_src/king/Kinglet.java0000644000000000000000000000444111531212674017215 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; //import java.text.*; //import java.util.*; import javax.swing.*; //import driftwood.util.SoftLog; //}}} /** * Kinglet is the KiNG loader applet, to allow KiNG to be used in browsers. * *

Begun on Sun Jun 9 14:53:42 EDT 2002 *
Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. */ public class Kinglet extends JApplet implements MouseListener { public static final String NORMAL = "normal"; public static final String FLAT = "flat"; public static final String LAUNCHER = "launcher"; KingMain kMain = null; String mode = null; public void init() { String m = getParameter("mode"); if(m == null) mode = NORMAL; else { m = m.toLowerCase(); if(m.equals("flat")) mode = FLAT; else if(m.equals("launcher")) mode = LAUNCHER; else mode = NORMAL; } if(mode.equals(NORMAL)) { Icon kingletIcon = new ImageIcon(getClass().getResource("images/kinglet-logo.jpg")); getContentPane().add(new JLabel(kingletIcon), BorderLayout.CENTER); validate(); } else if(mode.equals(LAUNCHER)) { Icon kingletIcon = new ImageIcon(getClass().getResource("images/king-btn.png")); getContentPane().add(new JLabel(kingletIcon), BorderLayout.CENTER); addMouseListener(this); validate(); } } public void start() { if(!mode.equals(LAUNCHER)) launch(); } public void mouseClicked(MouseEvent ev) { launch(); } void launch() { kMain = new KingMain(this, (mode.equals(FLAT))); kMain.Main(); } /** Initiates shutdown by calling dispose() on the windows. */ public void stop() { if(kMain != null) kMain.shutdown(); kMain = null; // so it can be GC'd } public void mouseEntered(MouseEvent ev) {} public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) {} public void mouseReleased(MouseEvent ev) {} }//class king-2.21.120420/king/1.x_src/king/MacDropTarget.java0000644000000000000000000000554211531212674020317 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import com.apple.eawt.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * MacDropTarget provides drag-and-drop document opening * under Mac OS X. This file will not compile on non-Mac platforms * and should be removed (no other code depends on it). * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Fri Nov 7 09:41:14 EST 2003 */ public class MacDropTarget implements ApplicationListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## static Application application = null; KingMain kMain; //}}} //{{{ Constructor(s) //############################################################################## private MacDropTarget(KingMain kmain) { super(); kMain = kmain; } //}}} //{{{ bindTo //############################################################################## static public void bindTo(KingMain kMain) { if(application == null) application = new Application(); MacDropTarget drop = new MacDropTarget(kMain); application.addApplicationListener(drop); } //}}} //{{{ Unhandled events //############################################################################## public void handleAbout(ApplicationEvent e) { } public void handleOpenApplication(ApplicationEvent e) { } public void handleReOpenApplication(ApplicationEvent e) { } public void handlePreferences(ApplicationEvent e) { } public void handlePrintFile(ApplicationEvent e) { } //}}} //{{{ handleOpenFile, handleQuit //############################################################################## public void handleOpenFile(ApplicationEvent ev) { //SoftLog.err.println("Received notification of file drop!"); KinfileIO io = kMain.getKinIO(); File f = new File(ev.getFilename()); if(f.exists()) { io.loadFile(f, null); ev.setHandled(true); } else SoftLog.err.println("Filename does not exist: '"+ev.getFilename()+"'"); } public void handleQuit(ApplicationEvent ev) { // Necessary in order for Cmd-Q to work ev.setHandled(true); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/ToolBox.java0000644000000000000000000006453711531212674017222 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.lang.reflect.*; //import java.text.*; import java.util.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.*; //}}} /** * ToolBox instantiates and coordinates all the tools and plugins, * using the Reflection API and a service provider (SPI) model, * like the one in javax.imageio.ImageIO.scanForPlugins(). * We scan all jar files on the classpath for lists of Plugins that could be loaded by KiNG. * We also scan all jar files in the folder named "plugins" that lives in the same * place as king.jar, if such a folder exists. * Plugins are listed in a plain text file META-INF/services/king.Plugin * that's part of one or more JARs on the classpath. * One fully-qualified class name is given per line, and nothing else. * *

Likewise, the submenu of Tools that a plugin belongs to, if any, is determined * in the preferences file by the classname.menuName property. * The special values <main menu> and <not shown> * put the plugin in the main Tools menu or don't put in anywhere at all, respectively. * KingPrefs scans all jars for files named king/king_prefs, * so plugins bundled in separate jars can include such a file to describe * which menus they belong in. * *

Begun on Fri Jun 21 09:30:40 EDT 2002 *
Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. */ public class ToolBox implements MouseListener, MouseMotionListener, TransformSignalSubscriber { //{{{ Static fields /** The menu name that will put a Plugin in the main menu rather than a submenu. */ static final String MENU_MAIN = "

"; /** The menu name that will keep a Plugin out of the Tools menu entirely. */ static final String MENU_NONE = ""; /** The menu under File for importing non-kin files */ static final String MENU_IMPORT = ""; /** The menu under File for exporting non-kin files */ static final String MENU_EXPORT = ""; //}}} //{{{ CLASS: PluginComparator, MenuComparator //################################################################################################## /** Sorts tools before plugins, then alphabetically by name. */ static class PluginComparator implements Comparator { public int compare(Object o1, Object o2) { boolean tool1 = (o1 instanceof BasicTool); boolean tool2 = (o2 instanceof BasicTool); if(tool1 && !tool2) return -1; else if(tool2 && !tool1) return 1; else return o1.toString().compareTo(o2.toString()); } } /** Sorts JMenus alphabetically by name. */ static class MenuComparator implements Comparator { public int compare(Object o1, Object o2) { JMenu m1 = (JMenu) o1; JMenu m2 = (JMenu) o2; return m1.getText().compareTo(m2.getText()); } } //}}} //{{{ Variable definitions //################################################################################################## // These are public so tools in any package can access them. public KingMain kMain; public KinCanvas kCanvas; public ToolServices services; public TransformSignal sigTransform; ArrayList plugins; BasicTool activeTool; final BasicTool defaultTool; JMenuItem activeToolMI = null, defaultToolMI = null; ClassLoader pluginClassLoader; //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public ToolBox(KingMain kmain, KinCanvas kcanv) { // These are referenced by the tools kMain = kmain; kCanvas = kcanv; services = new ToolServices(this); sigTransform = new TransformSignal(); pluginClassLoader = this.makeClassLoader(); plugins = new ArrayList(); defaultTool = activeTool = new BasicTool(this); plugins.add(activeTool); loadPlugins(); activeTool.start(); } //}}} //{{{ makeClassLoader //################################################################################################## /** * Creates a special class loader for loading plugins. * If the named class cannot be found, it also searches the plugins/ * directory where king.jar is found or (for applets) the URL(s) named * in the PLUGIN1, PLUGIN2, PLUGIN3, ... applet PARAMs. */ protected ClassLoader makeClassLoader() { ClassLoader defaultLoader = this.getClass().getClassLoader(); try { JApplet applet = kMain.getApplet(); ArrayList urls = new ArrayList(); // Case: we're running in an applet if(applet != null) { /*************************************************************** * Throws an exception if we create a class loader... * java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:269) at java.security.AccessController.checkPermission(AccessController.java:401) at java.lang.SecurityManager.checkPermission(SecurityManager.java:524) at java.lang.SecurityManager.checkCreateClassLoader(SecurityManager.java:586) at java.lang.ClassLoader.(ClassLoader.java:186) at java.security.SecureClassLoader.(SecureClassLoader.java:53) at java.net.URLClassLoader.(URLClassLoader.java:81) at king.ToolBox.makeClassLoader(ToolBox.java:169) at king.ToolBox.(ToolBox.java:109) // Numbering can start at 0 or 1, but must be continuous thereafter. for(int i = 0; true; i++) { String relURL = applet.getParameter("plugin"+i); if(relURL != null) { try { urls.add(new URL(applet.getDocumentBase(), relURL)); } catch(MalformedURLException ex) { ex.printStackTrace(); } } else if(i >= 1) break; // out of for loop } ***************************************************************/ } // Case: we're running as a standalone application (NOT an applet) else { File pluginFolder = new File(kMain.getPrefs().jarFileDirectory, "plugins"); if(!pluginFolder.exists() || !pluginFolder.canRead() || !pluginFolder.isDirectory()) return defaultLoader; File[] files = pluginFolder.listFiles(); for(int i = 0; i < files.length; i++) { if(files[i].exists() && files[i].canRead() && files[i].isFile() && files[i].getName().toLowerCase().endsWith(".jar")) { try { urls.add(files[i].toURL()); } catch(MalformedURLException ex) { SoftLog.err.println(ex.getMessage()); } } } } URLClassLoader jarLoader = new URLClassLoader( (URL[]) urls.toArray(new URL[urls.size()]), defaultLoader); return jarLoader; } catch(Exception ex) //IO, Security, MalformedURL, etc. etc. { ex.printStackTrace(SoftLog.err); } return defaultLoader; } //}}} //{{{ loadPlugins //################################################################################################## /** * Automatically loads all the tools and plugins that are currently available * to the system, while respecting their dependencies and applet safety. */ void loadPlugins() { // returned list might not be mutable, so make a copy Collection toLoad = new ArrayList(scanForPlugins()); int oldSize; do // cycle through all remaining names until no more can be loaded { oldSize = toLoad.size(); for(Iterator iter = toLoad.iterator(); iter.hasNext(); ) { String name = (String) iter.next(); if(canLoadPlugin(name)) { // Only try once, because we should succeed. addPluginByName(name); iter.remove(); } } } while(oldSize > toLoad.size()); Collections.sort(plugins, new PluginComparator()); } //}}} //{{{ scanForPlugins //################################################################################################## /** * Using a service-provider (SPI) model like the one in ImageIO.scanForPlugins(), * we scan all jar files on the classpath for lists of Plugins that * could be loaded by KiNG. * Plugins are listed in a plain text file META-INF/services/king.Plugin * that's part of one or more JARs on the classpath. * @return a Collection<String> of fully-qualified plugin names. */ Collection scanForPlugins() { // This is how we load menu preferences for external plugins try { // Write menu preferences into the defaults section of Prefs Props pluginProps = (Props) kMain.getPrefs().getDefaults(); // No leading slashes when using this method Enumeration urls = pluginClassLoader.getResources("king/king_prefs"); while(urls.hasMoreElements()) { URL url = (URL) urls.nextElement(); try { InputStream is = url.openStream(); pluginProps.load(is); is.close(); } catch(IOException ex) { SoftLog.err.println("Plugin SPI error: "+ex.getMessage()); } } } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } // Now load the actual list of plugins Collection pluginNames = new ArrayList(); try { // No leading slashes when using this method Enumeration urls = pluginClassLoader.getResources("META-INF/services/king.Plugin"); while(urls.hasMoreElements()) { URL url = (URL) urls.nextElement(); try { LineNumberReader in = new LineNumberReader(new InputStreamReader(url.openStream())); String s; while((s = in.readLine()) != null) { s = s.trim(); if(!s.equals("") && !s.startsWith("#")) pluginNames.add(s); } } catch(IOException ex) { SoftLog.err.println("Plugin SPI error: "+ex.getMessage()); } } } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } return pluginNames; } //}}} //{{{ canLoadPlugin //################################################################################################## /** * Returns true iff the following conditions are met: * (1) the named class can be located and loaded * (2) the plugin is applet-safe, or we're running as an application * (3) all the plugins this one depends on are already loaded. * @param className the fully qualified name of the Plugin class to check */ boolean canLoadPlugin(String className) { // Make a list of the full names of loaded plugins Set loadedPlugins = new HashSet(); for(Iterator iter = plugins.iterator(); iter.hasNext(); ) loadedPlugins.add(iter.next().getClass().getName()); try { Class pluginClass = Class.forName(className, true, pluginClassLoader); Method appletSafe = pluginClass.getMethod("isAppletSafe", new Class[] {}); Boolean safe = (Boolean) appletSafe.invoke(null, new Object[] {}); if(kMain.getApplet() != null && safe.booleanValue() == false) return false; // can't load because we're not applet safe Method getDepend = pluginClass.getMethod("getDependencies", new Class[] {}); Collection deps = (Collection) getDepend.invoke(null, new Object[] {}); for(Iterator iter = deps.iterator(); iter.hasNext(); ) { if(!loadedPlugins.contains(iter.next())) return false; // can't load because of a dependency } return true; // can load; we've passed all the tests } catch(Throwable t) { t.printStackTrace(SoftLog.err); return false; // can't load because of a reflection error } } //}}} //{{{ getPluginList, getPluginMenuName //################################################################################################## /** Returns an unmodifiable List of all installed plugins */ public java.util.List getPluginList() { return Collections.unmodifiableList(plugins); } /** Returns the name of the menu the given Plugin belongs in right now */ public String getPluginMenuName(Plugin p) { // Read from user prefs + defaults KingPrefs prefs = kMain.getPrefs(); String menuName = prefs.getString(p.getClass().getName()+".menuName", MENU_MAIN).trim(); if(menuName.equals("")) menuName = MENU_MAIN; return menuName; } //}}} //{{{ addPluginByName //################################################################################################## /** * Tries to instantiate a plugin of the named class and insert it into the Toolbox, * by using the Reflection API. * @param name the fully qualified Java name of the plugin class, e.g. "king.BasicPlugin" * @return true on success, false on failure */ private boolean addPluginByName(String name) { Plugin theplugin; // First, check to see if we already have one. for(Iterator iter = plugins.iterator(); iter.hasNext(); ) { theplugin = (Plugin)iter.next(); if(theplugin.getClass().getName().equals(name)) return true; } // If not, try to load one dynamically. try { Class[] constargs = { ToolBox.class }; Object[] initargs = { this }; Class pluginclass = Class.forName(name, true, pluginClassLoader); Constructor pluginconst = pluginclass.getConstructor(constargs); theplugin = (Plugin)pluginconst.newInstance(initargs); plugins.add(theplugin); } catch(Throwable t) { t.printStackTrace(SoftLog.err); SoftLog.err.println("While trying to load '"+name+"': "+t.getMessage()); return false; } return true; } //}}} //{{{ addPluginsToToolsMenu //################################################################################################## /** Appends menu items for using the loaded plugins */ public void addPluginsToToolsMenu(JMenu menu) { Plugin p; JMenuItem item; defaultToolMI = activeToolMI = null; Map submenus = new HashMap(); // Map ButtonGroup group = new ButtonGroup(); // Add things to primary menu and create submenus for(Iterator iter = plugins.iterator(); iter.hasNext(); ) { p = (Plugin)iter.next(); item = p.getToolsMenuItem(); if(item != null) { String menuName = getPluginMenuName(p); if(MENU_MAIN.equals(menuName)) menu.add(item); else if(MENU_NONE.equals(menuName)) {} // don't add to any menu else if(MENU_IMPORT.equals(menuName)) {} // don't add to any menu else if(MENU_EXPORT.equals(menuName)) {} // don't add to any menu else // add to the named submenu { JMenu submenu = (JMenu) submenus.get(menuName); if(submenu == null) { submenu = new JMenu(menuName); submenus.put(menuName, submenu); } submenu.add(item); } } if(p instanceof BasicTool && item != null) { group.add(item); if(p == defaultTool) defaultToolMI = item; if(p == activeTool) activeToolMI = item; } } // Sort the submenus alphabetically and add them at the end ArrayList submenuList = new ArrayList(submenus.values()); Collections.sort(submenuList, new MenuComparator()); for(Iterator iter = submenuList.iterator(); iter.hasNext(); ) { JMenu submenu = (JMenu) iter.next(); menu.add(submenu); } // Mark the active tool as such if(activeToolMI != null) activeToolMI.setSelected(true); } //}}} //{{{ addPluginsToHelpMenu //################################################################################################## /** Appends menu items for understanding the loaded plugins */ public void addPluginsToHelpMenu(JMenu menu) { Plugin p; JMenuItem item; for(Iterator iter = plugins.iterator(); iter.hasNext(); ) { p = (Plugin)iter.next(); item = p.getHelpMenuItem(); if(item != null) menu.add(item); } } //}}} //{{{ addPluginsToSpecialMenu //################################################################################################## /** Appends menu items for using the loaded plugins */ public void addPluginsToSpecialMenu(String whichMenu, JMenu menu) { Plugin p; JMenuItem item; for(Iterator iter = plugins.iterator(); iter.hasNext(); ) { p = (Plugin)iter.next(); String menuName = getPluginMenuName(p); if(whichMenu.equals(menuName)) { item = p.getToolsMenuItem(); if(item != null) menu.add(item); } } } //}}} //{{{ toolActivated, activateDefaultTool, notifyChange //################################################################################################## /** Called by Tools when their radio button gets hit. */ public void toolActivated(BasicTool t) { activeTool.stop(); //services.clearEverything(); activeTool = t; activeTool.start(); } /** Programmatically selects the Navigate tool. */ public void activateDefaultTool() { if(defaultToolMI != null) defaultToolMI.setSelected(true); toolActivated(defaultTool); } /** * Called by KinCanvas when something happens. * Shouldn't be called directly under normal circumstances. */ public void notifyChange(int event_mask) { int reset_tool = KingMain.EM_SWITCH | KingMain.EM_CLOSE | KingMain.EM_CLOSEALL; if((event_mask & reset_tool) != 0) { services.clearEverything(); activeTool.reset(); } } //}}} //{{{ listenTo //################################################################################################## /** Does all the work to make the ToolBox listen to the specified component. */ public void listenTo(Component c) { c.addMouseListener(this); c.addMouseMotionListener(this); if(c instanceof JComponent) { JComponent jc = (JComponent) c; ActionMap am = jc.getActionMap(); InputMap im = jc.getInputMap(JComponent.WHEN_FOCUSED); // This version doesn't work, for unknown reasons. //JComponent contentPane = kMain.getContentPane(); //ActionMap am = contentPane.getActionMap(); //InputMap im = contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); Action arrowUp = new ReflectiveAction("", null, this, "onArrowUp" ); Action arrowDown = new ReflectiveAction("", null, this, "onArrowDown" ); Action arrowLeft = new ReflectiveAction("", null, this, "onArrowLeft" ); Action arrowRight = new ReflectiveAction("", null, this, "onArrowRight"); // Register listeners for arrows with all combinations of Shift and Ctrl am.put("arrow-up", arrowUp ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP , 0), "arrow-up" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP , KeyEvent.SHIFT_MASK), "arrow-up" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP , KeyEvent.CTRL_MASK), "arrow-up" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP , KeyEvent.SHIFT_MASK|KeyEvent.CTRL_MASK), "arrow-up" ); am.put("arrow-down", arrowDown ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN , 0), "arrow-down" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN , KeyEvent.SHIFT_MASK), "arrow-down" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN , KeyEvent.CTRL_MASK), "arrow-down" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN , KeyEvent.SHIFT_MASK|KeyEvent.CTRL_MASK), "arrow-down" ); am.put("arrow-left", arrowLeft ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT , 0), "arrow-left" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT , KeyEvent.SHIFT_MASK), "arrow-left" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT , KeyEvent.CTRL_MASK), "arrow-left" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT , KeyEvent.SHIFT_MASK|KeyEvent.CTRL_MASK), "arrow-left" ); am.put("arrow-right", arrowRight ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT , 0), "arrow-right" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT , KeyEvent.SHIFT_MASK), "arrow-right" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT , KeyEvent.CTRL_MASK), "arrow-right" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT , KeyEvent.SHIFT_MASK|KeyEvent.CTRL_MASK), "arrow-right" ); } } //}}} //{{{ Mouse listeners //################################################################################################## // All of these just 'bounce' the event to the current active tool public void mouseDragged(MouseEvent ev) { activeTool.mouseDragged(ev); } public void mouseMoved(MouseEvent ev) { activeTool.mouseMoved(ev); } public void mouseClicked(MouseEvent ev) { activeTool.mouseClicked(ev); } public void mouseEntered(MouseEvent ev) { activeTool.mouseEntered(ev); } public void mouseExited(MouseEvent ev) { activeTool.mouseExited(ev); } public void mousePressed(MouseEvent ev) { // required for the keyboard arrows, etc // to pick up events! kCanvas.requestFocus(); activeTool.mousePressed(ev); } public void mouseReleased(MouseEvent ev) { activeTool.mouseReleased(ev); } /** * Not a real listener. Exists for other systems to "fake" * mouse wheel events, e.g. through arrow keys. * If we're in Java 1.4, real wheel events will be * redirected here by ToolBoxMW. */ public void mouseWheelMoved(MouseEvent ev, int rotation) { activeTool.mouseWheelMoved(ev, rotation); } //}}} //{{{ onArrowUp/Down/Right/Left //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowUp(ActionEvent ev) { activeTool.onArrowUp(ev); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowDown(ActionEvent ev) { activeTool.onArrowDown(ev); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowRight(ActionEvent ev) { activeTool.onArrowRight(ev); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowLeft(ActionEvent ev) { activeTool.onArrowLeft(ev); } //}}} //{{{ signalTransform, overpaintCanvas //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void signalTransform(Engine engine, Transform xform) { // Plugins: sigTransform.signalTransform(engine, xform); // Markers: services.signalTransform(engine, xform); // Active tool: activeTool.signalTransform(engine, xform); } /** * Called by KinCanvas after all kinemage painting is complete, * this gives the tools a chance to write additional info * (e.g., point IDs) to the graphics area. * @param painter the Painter that can paint on the current canvas */ public void overpaintCanvas(Painter painter) { services.overpaintCanvas(painter); activeTool.overpaintCanvas(painter); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/JoglCanvas.java0000644000000000000000000002635411531212674017656 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.color.ColorSpace; import java.awt.event.*; import java.awt.image.*; import java.awt.geom.AffineTransform; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.r3.*; import driftwood.util.*; import javax.media.opengl.*; import javax.media.opengl.glu.*; //}}} /** * JoglCanvas is a wrapper for a Painter that uses * the OpenGL libraries for hardware-accelerated 2D rendering * via the JOGL Java library. * *

Despite dire warnings about mixing heavyweight and lightweight components, * it doesn't appear to be a problem unless a lightweight component were * supposed to paint over top of this one... * *

Painting with a Graphics2D *is* possible via a mostly-transparent * image with its own Graphics2D. * However, Java prefers ARGB-int graphics and OpenGL requires RGBA-byte graphics. * For some reason, it's MUCH faster to let Java draw on the ARGB graphics and * then map the bytes into an array ourselves than it is to draw directly on a * BufferedImage backed by a byte array. * The two perform at roughly comparable speeds (30 - 35 ms) if nothing is drawn. * However, the speeds are ~50 ms vs 1-2 SECONDS if even one text string is drawn. *

This mode of doing the canvas overpaint has been replaced by one that uses * the JoglPainter directly (which then uses the GLUT font functions for text). * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Sat Jun 5 15:47:31 EDT 2004 */ public class JoglCanvas extends JPanel implements GLEventListener, TransformSignalSubscriber, MouseListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## KingMain kMain; Engine engine; ToolBox toolbox; GLCanvas canvas; Dimension glSize = new Dimension(); // Variables for doing text with a Graphics2D then overlaying it //WritableRaster raster = null; //BufferedImage overlayImg = null; //byte[] overlayData = null; //}}} //{{{ Constructor(s) //############################################################################## public JoglCanvas(KingMain kMain, Engine engine, ToolBox toolbox) { super(new BorderLayout()); this.kMain = kMain; this.engine = engine; this.toolbox = toolbox; // Java 1.4+ only! - adds support for Drag & Drop to the canvas new FileDropHandler(kMain, this); // Create and listen to an OpenGL canvas GLCapabilities capabilities = new GLCapabilities(); capabilities.setDoubleBuffered(true); // usually enabled by default, but to be safe... int fsaaNumSamples = kMain.getPrefs().getInt("joglNumSamples"); capabilities.setSampleBuffers(fsaaNumSamples > 1); // enables/disables full-scene antialiasing (FSAA) capabilities.setNumSamples(fsaaNumSamples); // sets number of samples for FSAA (default is 2) //canvas = GLDrawableFactory.getFactory().createGLCanvas(capabilities); canvas = new GLCanvas(capabilities); canvas.addGLEventListener(this); // calls display(), reshape(), etc. canvas.addMouseListener(this); // cursor related; see this.mouseEntered(). toolbox.listenTo(canvas); this.add(canvas, BorderLayout.CENTER); } //}}} //{{{ init, display, reshape, displayChanged //############################################################################## public void init(GLAutoDrawable drawable) {} public void display(GLAutoDrawable drawable) { GL gl = drawable.getGL(); Kinemage kin = kMain.getKinemage(); if(kin == null) { gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); gl.glClear(GL.GL_COLOR_BUFFER_BIT); } else { JoglPainter painter = new JoglPainter(drawable); long timestamp = System.currentTimeMillis(); KingView view = kin.getCurrentView(); Rectangle bounds = new Rectangle(this.glSize); engine.syncToKin(kin); engine.render(this, view, bounds, painter); if(toolbox != null) toolbox.overpaintCanvas(painter); timestamp = System.currentTimeMillis() - timestamp; if(kMain.getCanvas().writeFPS) SoftLog.err.println(timestamp+" ms ("+(timestamp > 0 ? Long.toString(1000/timestamp) : ">1000") +" FPS) - "+engine.getNumberPainted()+" objects painted"); } } public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { GL gl = drawable.getGL(); //GLU glu = drawable.getGLU(); GLU glu = new GLU(); this.glSize.setSize(width, height); gl.glViewport(0, 0, width, height); // left, right, width, height gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); glu.gluOrtho2D(0.0, width, -height, 0.0); // left, right, bottom, top } public void displayChanged(GLAutoDrawable drawable, boolean modeChnaged, boolean deviceChanged) {} //}}} //{{{ getPreferred/MinimumSize, requestRepaint //############################################################################## public Dimension getPreferredSize() { return kMain.getCanvas().getPreferredSize(); } public Dimension getMinimumSize() { return kMain.getCanvas().getMinimumSize(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void requestRepaint(ActionEvent ev) { canvas.repaint(); } //}}} //{{{ signalTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void signalTransform(Engine engine, Transform xform) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signalTransform(engine, xform); if(toolbox != null) toolbox.signalTransform(engine, xform); } //}}} //{{{ SLOW - setupOverlay, getOverlayBytes //############################################################################## /* Graphics2D setupOverlay() { if(overlayImg == null || overlayImg.getWidth() != glSize.width || overlayImg.getHeight() != glSize.height) { // Magic spells from the "Jumping into JOGL" article raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, glSize.width, glSize.height, 4, null); ComponentColorModel colorModel = new ComponentColorModel( ColorSpace.getInstance(ColorSpace.CS_sRGB), new int[] {8,8,8,8}, true, false, ComponentColorModel.TRANSLUCENT, DataBuffer.TYPE_BYTE); overlayImg = new BufferedImage(colorModel, raster, false, null); } Graphics2D g = overlayImg.createGraphics(); // Wipe out all data currently in image with invisible black. // The for loop is MUCH faster -- maybe 10x or more. //g.setColor(new Color(0,0,0,0)); //g.fillRect(0, 0, glSize.width, glSize.height); byte[] overlayData = ((DataBufferByte)raster.getDataBuffer()).getData(); for(int i = 0; i < overlayData.length; i++) overlayData[i] = 0; // Compensate for OpenGL Y-axis running the other way 'round AffineTransform t = new AffineTransform(); t.translate(0, glSize.height); t.scale(1.0, -1.0); g.transform(t); return g; } byte[] getOverlayBytes() { return ((DataBufferByte)raster.getDataBuffer()).getData(); } */ //}}} //{{{ FAST - setupOverlay, getOverlayBytes //############################################################################## /* Graphics2D setupOverlay() { if(overlayImg == null || overlayImg.getWidth() != glSize.width || overlayImg.getHeight() != glSize.height) { overlayImg = new BufferedImage(glSize.width, glSize.height, BufferedImage.TYPE_INT_ARGB); int[] data = ((DataBufferInt)overlayImg.getRaster().getDataBuffer()).getData(); overlayData = new byte[4 * data.length]; } Graphics2D g = overlayImg.createGraphics(); // Wipe out all data currently in image with invisible black. // The for loop is MUCH faster -- maybe 10x or more. //g.setColor(new Color(0,0,0,0)); //g.fillRect(0, 0, glSize.width, glSize.height); int[] data = ((DataBufferInt)overlayImg.getRaster().getDataBuffer()).getData(); for(int i = 0; i < data.length; i++) data[i] = 0; // Compensate for OpenGL Y-axis running the other way 'round AffineTransform t = new AffineTransform(); t.translate(0, glSize.height); t.scale(1.0, -1.0); g.transform(t); return g; } byte[] getOverlayBytes() { int i = 0, j = 0; int[] data = ((DataBufferInt)overlayImg.getRaster().getDataBuffer()).getData(); while(i < data.length) { int d = data[i]; if(d == 0) { overlayData[j] = overlayData[j+1] = overlayData[j+2] = overlayData[j+3] = 0; } else // pack into RGBA order from ARGB ints { overlayData[j] = (byte)((d>>16) & 0xff); overlayData[j+1] = (byte)((d>> 8) & 0xff); overlayData[j+2] = (byte)((d ) & 0xff); overlayData[j+3] = (byte)((d>>24) & 0xff); } i+=1; j+=4; } return overlayData; } */ //}}} //{{{ Mouse listeners (for cursor) //################################################################################################## public void mouseEntered(MouseEvent ev) { // This is the only thing that removes the <-|-> cursor from the split pane. // Forces update of cursor for top level native peer (i.e. window, not GL canvas): this.setCursor( Cursor.getDefaultCursor() ); //canvas.setCursor( Cursor.getDefaultCursor() ); // not needed } public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) {} public void mouseReleased(MouseEvent ev) {} public void mouseClicked(MouseEvent ev) {} //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/GridBagPanel.java0000644000000000000000000001451711531212674020104 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; //import java.io.*; //import java.net.*; //import java.text.*; //import java.util.*; import javax.swing.*; //import gnu.regexp.*; //}}} /** * GridBagPanel is just a JPanel with a GridBagLayout and some convenience functions. * To set default constraints, access the gbc member variable. * *

Functions that set alignment properties, etc. take effect only until the next add() is called. * They return a reference to this same GridBagPanel so function calls can be "chained", like * java.lang.StringBuffer allows. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *

Begun on Tue Jul 2 09:08:06 EDT 2002 */ public class GridBagPanel extends JPanel // implements ... { //{{{ Static fields //}}} //{{{ Variable definitions //################################################################################################## GridBagLayout gbl; /** These are the default constraints for all objects added to the panel */ public GridBagConstraints gbc; /** These are the derived constraints for the next component to be added */ GridBagConstraints derived; //}}} //{{{ Constructors //################################################################################################## /** * Creates a new panel and installs a GridBagLayout on it. */ public GridBagPanel() { super(); gbl = new GridBagLayout(); gbc = new GridBagConstraints(); derived = null; setLayout(gbl); } //}}} //{{{ add(...) functions //################################################################################################## public void add(Component comp, int x, int y) { if(derived == null) rederive(); if(x == -1) derived.gridx = GridBagConstraints.RELATIVE; else derived.gridx = x; if(y == -1) derived.gridy = GridBagConstraints.RELATIVE; else derived.gridy = y; gbl.setConstraints(comp, derived); this.add(comp); derived = null; } public void add(Component comp, int x, int y, int w, int h) { if(derived == null) rederive(); span(w, h).add(comp, x, y); } public void add(Component comp, int x, int y, int w, int h, int fill, int anchor) { if(derived == null) rederive(); derived.fill = fill; derived.anchor = anchor; span(w, h).add(comp, x, y); } public void add(Component comp, int x, int y, int w, int h, int fill, int anchor, double wx, double wy) { if(derived == null) rederive(); derived.fill = fill; derived.anchor = anchor; span(w, h).weight(wx, wy).add(comp, x, y); } //}}} //{{{ rederive, span, weight, insets //################################################################################################## /** Resets derived properties to be the same as defaults. */ void rederive() { derived = (GridBagConstraints)gbc.clone(); } /** Sets gridwidth and gridheight for the next component added */ public GridBagPanel span(int x, int y) { if(derived == null) rederive(); derived.gridwidth = x; derived.gridheight = y; return this; } /** Sets weightx and weighty for the next component added */ public GridBagPanel weight(double x, double y) { if(derived == null) rederive(); derived.weightx = x; derived.weighty = y; return this; } /** Sets the insets for the next component added */ public GridBagPanel insets(int top, int left, int bottom, int right) { if(derived == null) rederive(); derived.insets = new Insets(top, left, bottom, right); return this; } //}}} //{{{ fillNone, fillH, fillV, fillBoth //################################################################################################## public GridBagPanel fillNone() { if(derived == null) rederive(); derived.fill = GridBagConstraints.NONE; return this; } public GridBagPanel fillH() { if(derived == null) rederive(); derived.fill = GridBagConstraints.HORIZONTAL; return this; } public GridBagPanel fillV() { if(derived == null) rederive(); derived.fill = GridBagConstraints.VERTICAL; return this; } public GridBagPanel fillBoth() { if(derived == null) rederive(); derived.fill = GridBagConstraints.BOTH; return this; } //}}} //{{{ anchor functions (center, north, northwest, etc.) //################################################################################################## public GridBagPanel center() { if(derived == null) rederive(); derived.anchor = GridBagConstraints.CENTER; return this; } public GridBagPanel north() { if(derived == null) rederive(); derived.anchor = GridBagConstraints.NORTH; return this; } public GridBagPanel northeast() { if(derived == null) rederive(); derived.anchor = GridBagConstraints.NORTHEAST; return this; } public GridBagPanel east() { if(derived == null) rederive(); derived.anchor = GridBagConstraints.EAST; return this; } public GridBagPanel southeast() { if(derived == null) rederive(); derived.anchor = GridBagConstraints.SOUTHEAST; return this; } public GridBagPanel south() { if(derived == null) rederive(); derived.anchor = GridBagConstraints.SOUTH; return this; } public GridBagPanel southwest() { if(derived == null) rederive(); derived.anchor = GridBagConstraints.SOUTHWEST; return this; } public GridBagPanel west() { if(derived == null) rederive(); derived.anchor = GridBagConstraints.WEST; return this; } public GridBagPanel northwest() { if(derived == null) rederive(); derived.anchor = GridBagConstraints.NORTHWEST; return this; } //}}} //{{{ empty //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/AxisChooser.java0000644000000000000000000001072311531212674020047 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; //}}} /** * AxisChooser is the GUI for mapping high-dimensional kinemages * onto the X, Y, and Z axes. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Tue Jun 13 16:10:45 EDT 2006 */ public class AxisChooser //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## KingMain kMain; Kinemage kin; int kinDimension; Collection dimNames; JList xAxisList, yAxisList, zAxisList; //}}} //{{{ Constructor(s) //############################################################################## public AxisChooser(KingMain kMain, Kinemage kin) { super(); this.kMain = kMain; this.kin = kin; this.kinDimension = getKinDimension(kin); this.dimNames = new ArrayList(kin.dimensionNames); for(int i = dimNames.size(); i < kinDimension; i++) dimNames.add("Axis "+(i+1)); buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { final int visibleRows = 10; xAxisList = new FatJList(0, 10); xAxisList.setVisibleRowCount(visibleRows); xAxisList.setListData(dimNames.toArray()); xAxisList.setSelectedIndex(Math.min(0, dimNames.size()-1)); yAxisList = new FatJList(0, 10); yAxisList.setVisibleRowCount(visibleRows); yAxisList.setListData(dimNames.toArray()); yAxisList.setSelectedIndex(Math.min(1, dimNames.size()-1)); zAxisList = new FatJList(0, 10); zAxisList.setVisibleRowCount(visibleRows); zAxisList.setListData(dimNames.toArray()); zAxisList.setSelectedIndex(Math.min(2, dimNames.size()-1)); JButton btnOK = new JButton(new ReflectiveAction("Set axes", null, this, "onSetAxes")); TablePane2 cp = new TablePane2(); cp.insets(10).memorize(); cp.add(new JLabel("X axis")); cp.add(new JLabel("Y axis")); cp.add(new JLabel("Z axis")); cp.newRow(); cp.add(new JScrollPane(xAxisList)); cp.add(new JScrollPane(yAxisList)); cp.add(new JScrollPane(zAxisList)); cp.newRow(); cp.startSubtable(3,1).center().addCell(btnOK).endSubtable(); JDialog dialog = new JDialog(kMain.getTopWindow(), "Choose axes", false /* not modal */); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setContentPane(cp); dialog.pack(); dialog.show(); // will return immediately, b/c dialog is non-modal } //}}} //{{{ onSetAxes //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSetAxes(ActionEvent ev) { int xIndex = Math.max(0, xAxisList.getSelectedIndex()); int yIndex = Math.max(1, yAxisList.getSelectedIndex()); int zIndex = Math.max(2, zAxisList.getSelectedIndex()); KingView.setAxes(kin, xIndex, yIndex, zIndex); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ getKinDimension //############################################################################## /** * Figures out how many axes are present in this kinemage (i.e. its dimension). */ static public int getKinDimension(Kinemage kin) { int numAxes = 0; for(Iterator gi = kin.iterator(); gi.hasNext(); ) { KGroup group = (KGroup) gi.next(); for(Iterator si = group.iterator(); si.hasNext(); ) { KSubgroup subgroup = (KSubgroup) si.next(); for(Iterator li = subgroup.iterator(); li.hasNext(); ) { KList list = (KList) li.next(); numAxes = Math.max(numAxes, list.getDimension()); } } } return numAxes; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/tool/0000755000000000000000000000000011744310054015724 5ustar rootrootking-2.21.120420/king/1.x_src/king/tool/util/0000755000000000000000000000000011744310054016701 5ustar rootrootking-2.21.120420/king/1.x_src/king/tool/util/SelfUpdatePlugin.java0000644000000000000000000002565511531212672022775 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.util; import king.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; import java.util.zip.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.*; import king.ReflectiveRunnable; import javax.swing.Timer; // not java.util.Timer //}}} /** * SelfUpdatePlugin allows the user to download the newest KiNG * version and install it from within the KiNG program itself. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Sat May 22 11:53:49 EDT 2004 */ public class SelfUpdatePlugin extends Plugin { //{{{ Constants static final String UPDATE_ANYWAY = "It appears that either you already have the latest version of KiNG,\n"+ "or that you are not connected to the network at this time.\n"+ "\n"+ "Do you still want to try updating KiNG?"; static final String ARE_YOU_SURE1 = "This plugin will download the latest version of KiNG\n"+ "that is publicly available on the Kinemage website.\n"+ "It will then be installed over top of your current KiNG\n"+ "("; static final String ARE_YOU_SURE2 = "),\n"+ "completely replacing it.\n"+ "\n"+ "This action cannot be undone. Furthermore, there is always\n"+ "a small chance it may not perform correctly, potentially\n"+ "rendering KiNG unusable and forcing you to reinstall manually.\n"+ "Are you sure you want to continue?"; static final String UPDATE_FAILED = "Due to circumstances beyond our control, the update failed.\n"+ "The most likely source of error is that you don't have permission\n"+ "to overwrite the KiNG installation, or that the network is down.\n"+ "More details about the error are available under Help | Error Log.\n"+ "\n"+ "Your copy of KiNG is probably OK, but it COULD have been damaged --\n"+ "if it acts strangely or refuses to start, you may have to reinstall.\n"+ "You can get a new copy of KiNG from http://kinemage.biochem.duke.edu.\n"+ "\n"+ "We are very sorry this happened. If you believe this is the result of\n"+ "a bug in KiNG or in this plugin, please report it to the author/maintainter,\n"+ "whose email address is listed in the user manual."; static final String ABORT_OK = "The update has been aborted.\n"+ "No changes have been made to KiNG."; static final String UPDATE_OK = "The update appears to have succeeded.\n"+ "Cross your fingers and restart KiNG\n"+ "for changes to take effect."; //}}} //{{{ Variable definitions //############################################################################## Timer progressTimer; JProgressBar progressBar; JDialog dialog; volatile int totalSize = 1, downloadedSize = 0; volatile boolean abortFlag = false; volatile Throwable backgroundError = null; //}}} //{{{ Constructor(s) //############################################################################## public SelfUpdatePlugin(ToolBox tb) { super(tb); progressTimer = new Timer(1000, new ReflectiveAction(null, null, this, "onProgressTimer")); progressTimer.setCoalesce(true); progressBar = new JProgressBar(0, 100); progressBar.setStringPainted(true); JButton btnCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onDownloadCancel")); TablePane2 cp = new TablePane2(); cp.insets(4).memorize(); cp.addCell(new JLabel("Downloading new version of KiNG from")).newRow(); cp.addCell(new JLabel("http://kinemage.biochem.duke.edu ...")).newRow(); cp.hfill(true).addCell(progressBar).newRow(); cp.center().addCell(btnCancel); dialog = new JDialog(kMain.getTopWindow(), true); dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dialog.setContentPane(cp); } //}}} //{{{ toString, isAppletSafe, getToolsMenuItem, getHelpAnchor //############################################################################## public String toString() { return "Update KiNG"; } public static boolean isAppletSafe() { return false; } public JMenuItem getToolsMenuItem() { JMenuItem item = new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onBeginUpdate")); return item; } public String getHelpAnchor() { return "#update-plugin"; } //}}} //{{{ onProgressTimer, onDownloadCancel //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onProgressTimer(ActionEvent ev) { progressBar.setValue((100*downloadedSize)/totalSize); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDownloadCancel(ActionEvent ev) { abortFlag = true; } //}}} //{{{ onBeginUpdate //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onBeginUpdate(ActionEvent ev) { KingPrefs prefs = kMain.getPrefs(); // Check with user before starting if(! prefs.newerVersionAvailable() && JOptionPane.YES_OPTION != JOptionPane.showConfirmDialog(kMain.getTopWindow(), UPDATE_ANYWAY, "Update anyway?", JOptionPane.YES_NO_OPTION)) return; String msg; try { msg = ARE_YOU_SURE1 + prefs.jarFileDirectory.getCanonicalPath() + ARE_YOU_SURE2; } catch(Exception ex) { msg = ARE_YOU_SURE1 + "unknown location" + ARE_YOU_SURE2; } // io, null ptr, security? if(JOptionPane.YES_OPTION != JOptionPane.showConfirmDialog(kMain.getTopWindow(), msg, "Update KiNG?", JOptionPane.YES_NO_OPTION)) return; this.downloadedSize = 0; this.abortFlag = false; this.backgroundError = null; this.progressBar.setValue(0); Thread backgroundJob = new Thread(new ReflectiveRunnable(this, "downloadFile")); backgroundJob.start(); this.progressTimer.start(); this.dialog.pack(); this.dialog.setLocationRelativeTo(kMain.getTopWindow()); this.dialog.setVisible(true); // execution halts here until the dialog is closed } //}}} //{{{ downloadFile //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void downloadFile() { try { URL updateURL = new URL("http://kinemage.biochem.duke.edu/downloads/software/king/current"); URLConnection urlConn = updateURL.openConnection(); this.totalSize = urlConn.getContentLength(); this.downloadedSize = 0; InputStream is = urlConn.getInputStream(); File tmpFile = File.createTempFile("kingupdate", null); tmpFile.deleteOnExit(); OutputStream os = new BufferedOutputStream(new FileOutputStream(tmpFile)); //streamcopy(is, os); byte[] buffer = new byte[2048]; int len; while((len = is.read(buffer)) != -1 && !abortFlag) { os.write(buffer, 0, len); this.downloadedSize += len; } os.close(); is.close(); if(!abortFlag) { ZipFile f = new ZipFile(tmpFile); installZipFile(f); f.close(); abortFlag = false; // just in case there was a sync. problem } } catch(Throwable t) { this.backgroundError = t; } SwingUtilities.invokeLater(new ReflectiveRunnable(this, "onFinishUpdate")); } //}}} //{{{ installZipFile, streamcopy //############################################################################## /** * Unpacks the ZIP file into the directory where king.jar is currently located, * after stripping off the initial king-x.xx/ path */ private void installZipFile(ZipFile zipfile) throws IOException { File dest = kMain.getPrefs().jarFileDirectory; if(!dest.exists() || !dest.isDirectory() || !dest.canWrite()) throw new IOException("Unable to unpack downloaded ZIP into "+dest+"; check permissions/ownership?"); Enumeration entries = zipfile.entries(); while(entries.hasMoreElements()) { ZipEntry e = (ZipEntry) entries.nextElement(); // Clip off king-x.xx/ prefix String name = e.getName(); int i = name.indexOf("/"); if(i != -1) name = name.substring(i); if(name.equals("")) continue; // Create directory or write file File f = new File(dest, name).getCanonicalFile(); if(e.isDirectory()) { f.mkdirs(); } else { InputStream is = zipfile.getInputStream(e); OutputStream os = new BufferedOutputStream(new FileOutputStream(f)); streamcopy(is, os); os.close(); is.close(); } } } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ onFinishUpdate //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFinishUpdate() { this.progressTimer.stop(); this.dialog.setVisible(false); if(backgroundError != null) { backgroundError.printStackTrace(SoftLog.err); JOptionPane.showMessageDialog(kMain.getTopWindow(), UPDATE_FAILED, "Update failed", JOptionPane.ERROR_MESSAGE); } else if(abortFlag) { // Don't really need to do anything. JOptionPane.showMessageDialog(kMain.getTopWindow(), ABORT_OK, "Update aborted", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), UPDATE_OK, "Update succeeded", JOptionPane.INFORMATION_MESSAGE); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/tool/draw/0000755000000000000000000000000011744310054016661 5ustar rootrootking-2.21.120420/king/1.x_src/king/tool/draw/DrawingTool.java0000644000000000000000000013206311531212672021763 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.draw; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.lang.ref.SoftReference; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; //}}} /** * DrawingTool provides many of the Mage "Draw New" functions. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Thu Feb 26 16:25:47 EST 2004 */ public class DrawingTool extends BasicTool { //{{{ Constants static final int AUGER_RADIUS = 40; //}}} //{{{ Interface: UndoStep //############################################################################## interface UndoStep { /** Triggers the undo action */ public void undo(); } //}}} //{{{ Class: ListChildrenUndo //############################################################################## /* * Provides a simple undo mechanism for all the drawing tools. * Every time a list is changed, its children field * is cloned and saved here. The editing action can then be undone * simply by copying this over top of the current children. */ static class ListChildrenUndo implements UndoStep { KList list; ArrayList children; KPoint modPoint = null; KPoint modPrev = null; /* Saves the state of list l */ public ListChildrenUndo(KList l) { super(); this.list = l; this.children = new ArrayList(l.children); } /** Saves the state of a point who's value of "prev" was set to null */ public void savePoint(KPoint p) { this.modPoint = p; this.modPrev = p.getPrev(); } /** Triggers the undo action */ public void undo() { list.children = this.children; if(modPoint != null) modPoint.setPrev(modPrev); } } //}}} //{{{ Class: PointCoordsUndo //############################################################################## /** Allows us to undo moving points, eg when we drag them around. */ static class PointCoordsUndo implements UndoStep { KPoint[] points; Triple[] coords; public PointCoordsUndo(KPoint[] pts) { super(); this.points = (KPoint[]) pts.clone(); this.coords = new Triple[ points.length ]; for(int i = 0; i < points.length; i++) coords[i] = new Triple(points[i]); } public void undo() { for(int i = 0; i < points.length; i++) points[i].setXYZ(coords[i].getX(), coords[i].getY(), coords[i].getZ()); } } //}}} //{{{ Variable definitions //############################################################################## TablePane2 ui; JRadioButton rbDoNothing, rbRevealList, rbEditGroup, rbEditSubgroup, rbEditList, rbEditPoint, rbPaintPoints, rbMovePoint; JRadioButton rbLineSegment, rbDottedLine, rbArcSegment, rbBalls, rbLabels, rbDots, rbTriangle; JRadioButton rbPunch, rbPrune, rbAuger, rbSphereCrop; Builder builder = new Builder(); KPoint lineseg1 = null, lineseg2 = null; KPoint triang1 = null, triang2 = null, triang3 = null; KPoint arcseg1 = null, arcseg2 = null, arcseg3 = null; GroupEditor grEditor; PointEditor ptEditor; KPoint draggedPoint = null; KPoint[] allPoints = null; JComboBox cmPointPaint; JTextField tfShortenLine; JCheckBox cbLabelIsID; JTextField tfNumDots; JTextField tfArcDegrees, tfArcShorten; JCheckBox cbArcArrowhead; JTextField tfTriangleSize; JTextField tfCropRadius; /** Use add/removeLast() to enque UndoSteps wrapped in SoftReferences */ LinkedList undoStack; /** Used by getDrawingList() to create new lists when subgroup is updated */ int subgroupCounter = 0; /** Used by Auger for doing its marker drawing */ int lastAugerX, lastAugerY; //}}} //{{{ Constructor(s) //############################################################################## public DrawingTool(ToolBox tb) { super(tb); grEditor = new GroupEditor(kMain, kMain.getTopWindow()); ptEditor = new PointEditor(kMain); undoStack = new LinkedList(); buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { ButtonGroup buttonGroup = new ButtonGroup(); // Build all the radio buttons for different drawing modes rbDoNothing = new JRadioButton("Do nothing (navigate)"); buttonGroup.add(rbDoNothing); rbRevealList = new JRadioButton("Reveal in hierarchy"); buttonGroup.add(rbRevealList); rbEditGroup = new JRadioButton("Edit group props"); buttonGroup.add(rbEditGroup); rbEditSubgroup = new JRadioButton("Edit subgroup props"); buttonGroup.add(rbEditSubgroup); rbEditList = new JRadioButton("Edit list props"); buttonGroup.add(rbEditList); rbEditPoint = new JRadioButton("Edit point props"); buttonGroup.add(rbEditPoint); rbPaintPoints = new JRadioButton("Paint points"); buttonGroup.add(rbPaintPoints); rbMovePoint = new JRadioButton("Move points"); buttonGroup.add(rbMovePoint); rbLineSegment = new JRadioButton("Draw line segments"); buttonGroup.add(rbLineSegment); rbDottedLine = new JRadioButton("Draw dotted lines"); buttonGroup.add(rbDottedLine); rbArcSegment = new JRadioButton("Draw curved arc"); buttonGroup.add(rbArcSegment); rbBalls = new JRadioButton("Draw balls"); buttonGroup.add(rbBalls); rbLabels = new JRadioButton("Draw labels"); buttonGroup.add(rbLabels); rbDots = new JRadioButton("Draw dots"); buttonGroup.add(rbDots); rbTriangle = new JRadioButton("Draw triangles"); buttonGroup.add(rbTriangle); rbPunch = new JRadioButton("Punch one point"); buttonGroup.add(rbPunch); rbPrune = new JRadioButton("Prune a polyline"); buttonGroup.add(rbPrune); rbAuger = new JRadioButton("Auger a region"); buttonGroup.add(rbAuger); rbSphereCrop = new JRadioButton("Spherical crop"); buttonGroup.add(rbSphereCrop); // Create the extra control panels cmPointPaint = new JComboBox(KPalette.getStandardMap().values().toArray()); cmPointPaint.setSelectedItem(KPalette.green); TablePane tpPaintPts = new TablePane(); tpPaintPts.addCell(new JLabel("Use color:")); tpPaintPts.addCell(cmPointPaint); FoldingBox fbPaintPts = new FoldingBox(rbPaintPoints, tpPaintPts); fbPaintPts.setAutoPack(true); fbPaintPts.setIndent(10); tfShortenLine = new JTextField("0.0", 6); TablePane tpLineSeg = new TablePane(); tpLineSeg.addCell(new JLabel("Shorten lines by:")); tpLineSeg.addCell(tfShortenLine); FoldingBox fbLineSeg = new FoldingBox(rbLineSegment, tpLineSeg); fbLineSeg.setAutoPack(true); fbLineSeg.setIndent(10); tfNumDots = new JTextField("10", 6); TablePane tpDottedLine = new TablePane(); tpDottedLine.addCell(new JLabel("Number of dots:")); tpDottedLine.addCell(tfNumDots); FoldingBox fbDottedLine = new FoldingBox(rbDottedLine, tpDottedLine); fbDottedLine.setAutoPack(true); fbDottedLine.setIndent(10); tfArcDegrees = new JTextField("120", 6); tfArcShorten = new JTextField("0", 6); cbArcArrowhead = new JCheckBox("Arrowhead", false); TablePane tpArcSegment = new TablePane(); tpArcSegment.addCell(new JLabel("Curvature (degrees):")); tpArcSegment.addCell(tfArcDegrees); tpArcSegment.newRow(); tpArcSegment.addCell(new JLabel("Shorten by (degrees):")); tpArcSegment.addCell(tfArcShorten); tpArcSegment.newRow(); tpArcSegment.addCell(cbArcArrowhead); FoldingBox fbArcSegment = new FoldingBox(rbArcSegment, tpArcSegment); fbArcSegment.setAutoPack(true); fbArcSegment.setIndent(10); cbLabelIsID = new JCheckBox("Use ID of picked point for label", false); TablePane tpLabels = new TablePane(); tpLabels.addCell(cbLabelIsID); FoldingBox fbLabels = new FoldingBox(rbLabels, tpLabels); fbLabels.setAutoPack(true); fbLabels.setIndent(10); tfTriangleSize = new JTextField("1.0", 6); TablePane tpTriangle = new TablePane(); tpTriangle.addCell(new JLabel("Fractional size:")); tpTriangle.addCell(tfTriangleSize); FoldingBox fbTriangle = new FoldingBox(rbTriangle, tpTriangle); fbTriangle.setAutoPack(true); fbTriangle.setIndent(10); tfCropRadius = new JTextField("10", 6); TablePane tpSphereCrop = new TablePane(); tpSphereCrop.addCell(new JLabel("Crop radius:")); tpSphereCrop.addCell(tfCropRadius); FoldingBox fbSphereCrop = new FoldingBox(rbSphereCrop, tpSphereCrop); fbSphereCrop.setAutoPack(true); fbSphereCrop.setIndent(10); // Choose default drawing tool rbEditList.setSelected(true); // Create the UNDO button, etc JButton btnUndo = new JButton(new ReflectiveAction("Undo drawing", null, this, "onUndo")); JButton btnNewSubgroup = new JButton(new ReflectiveAction("New subgroup", null, this, "onNewSubgroup")); // Put the UI together ui = new TablePane2(); ui.hfill(true).vfill(true).insets(0,1,0,1).memorize(); ui.addCell(rbDoNothing).newRow(); ui.addCell(rbRevealList).newRow(); ui.addCell(rbEditGroup).newRow(); ui.addCell(rbEditSubgroup).newRow(); ui.addCell(rbEditList).newRow(); ui.addCell(rbEditPoint).newRow(); ui.addCell(rbPaintPoints).newRow(); ui.addCell(fbPaintPts).newRow(); ui.addCell(rbMovePoint).newRow(); ui.addCell(ui.strut(0,6)).newRow(); ui.addCell(rbLineSegment).newRow(); ui.addCell(fbLineSeg).newRow(); ui.addCell(rbDottedLine).newRow(); ui.addCell(fbDottedLine).newRow(); ui.addCell(rbArcSegment).newRow(); ui.addCell(fbArcSegment).newRow(); ui.addCell(rbBalls).newRow(); ui.addCell(rbLabels).newRow(); ui.addCell(fbLabels).newRow(); ui.addCell(rbDots).newRow(); ui.addCell(rbTriangle).newRow(); ui.addCell(fbTriangle).newRow(); ui.addCell(ui.strut(0,6)).newRow(); ui.addCell(rbPunch).newRow(); ui.addCell(rbPrune).newRow(); ui.addCell(rbAuger).newRow(); ui.addCell(rbSphereCrop).newRow(); ui.addCell(fbSphereCrop).newRow(); ui.addCell(btnNewSubgroup).newRow(); ui.addCell(btnUndo).newRow(); } //}}} //{{{ xx_click() functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); if(rbDoNothing.isSelected()) return; // don't mark kin as modified else if(rbRevealList.isSelected()) doRevealList(x, y, p, ev); else if(rbEditGroup.isSelected()) doEditGroup(x, y, p, ev); else if(rbEditSubgroup.isSelected()) doEditSubgroup(x, y, p, ev); else if(rbEditList.isSelected()) doEditList(x, y, p, ev); else if(rbEditPoint.isSelected()) doEditPoint(x, y, p, ev); else if(rbPaintPoints.isSelected()) doPaintPoints(x, y, p, ev); else if(rbMovePoint.isSelected()) return; // don't mark kin as modified else if(rbLineSegment.isSelected()) doLineSegment(x, y, p, ev); else if(rbDottedLine.isSelected()) doDottedLine(x, y, p, ev); else if(rbArcSegment.isSelected()) doArcSegment(x, y, p, ev); else if(rbBalls.isSelected()) doBalls(x, y, p, ev); else if(rbLabels.isSelected()) doLabels(x, y, p, ev); else if(rbDots.isSelected()) doDots(x, y, p, ev); else if(rbTriangle.isSelected()) doTriangle(x, y, p, ev); else if(rbPunch.isSelected()) doPunch(x, y, p, ev); else if(rbPrune.isSelected()) doPrune(x, y, p, ev); else if(rbAuger.isSelected()) doAuger(x, y, p, ev); else if(rbSphereCrop.isSelected()) doSphereCrop(x, y, p, ev); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); } //}}} //{{{ onUndo //############################################################################## // target of reflection public void onUndo(ActionEvent ev) { if(undoStack.size() < 1) return; SoftReference ref = (SoftReference) undoStack.removeLast(); UndoStep step = (UndoStep) ref.get(); if(step == null) undoStack.clear(); // we should discard any other undos too else step.undo(); Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } // target of reflection public void onNewSubgroup(ActionEvent ev) { // Forces creation of a new subgroup // and triggers message to kinemage this.getDrawingSubgroup(true); } //}}} //{{{ getDrawingGroup, getDrawingSubgroup //############################################################################## /** Returns null if no kinemage is loaded */ protected KGroup getDrawingGroup() { Kinemage kin = kMain.getKinemage(); if(kin == null) return null; KGroup group = (KGroup)kin.metadata.get(this.getClass().getName()+".drawNewGroup"); if(group == null || group.getKinemage() == null) // signals that it's not bound to a kinemage -- has been deleted { group = new KGroup(kin, "Drawn objs"); //group.setDominant(true); kin.add(group); kin.metadata.put(this.getClass().getName()+".drawNewGroup", group); kin.signal.signalKinemage(kin, KinemageSignal.STRUCTURE); // the new alternative to notifyChange() } return group; } /** Returns null if no kinemage is loaded */ protected KSubgroup getDrawingSubgroup(boolean forceCreate) { Kinemage kin = kMain.getKinemage(); if(kin == null) return null; KGroup group = this.getDrawingGroup(); KSubgroup subgroup = (KSubgroup)kin.metadata.get(this.getClass().getName()+".drawNewSubgroup"); if(subgroup == null || forceCreate || subgroup.getKinemage() == null) // signals that it's not bound to a kinemage -- has been deleted { subgroupCounter++; subgroup = new KSubgroup(group, "Drawn objs "+subgroupCounter); subgroup.setDominant(true); group.add(subgroup); kin.metadata.put(this.getClass().getName()+".drawNewSubgroup", subgroup); kin.signal.signalKinemage(kin, KinemageSignal.STRUCTURE); // the new alternative to notifyChange() } return subgroup; } //}}} //{{{ getDrawingList //############################################################################## /** * @param listType is one of the KList constants * @param id is an identifier so one can have e.g. multiple vector lists * @return null if no kinemage is loaded */ protected KList getDrawingList(String listType, String id) { Kinemage kin = kMain.getKinemage(); if(kin == null) return null; KSubgroup subgroup = this.getDrawingSubgroup(false); String listName = this.getClass().getName()+".drawNewList."+listType+"."+id+"."+subgroupCounter; KList list = (KList)kin.metadata.get(listName); if(list == null || list.getKinemage() == null) // signals that it's not bound to a kinemage -- has been deleted { list = new KList(subgroup, "Drawn "+listType+"s"); list.setType(listType); KPaint[] colors = {KPalette.magenta, KPalette.green, KPalette.gold}; list.setColor(colors[subgroupCounter % colors.length]); subgroup.add(list); kin.metadata.put(listName, list); kin.signal.signalKinemage(kin, KinemageSignal.STRUCTURE); // the new alternative to notifyChange() } return list; } //}}} //{{{ doRevealList, doEditGroup/Subgroup/List/Point //############################################################################## public void doRevealList(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = (KList)p.getOwner(); if(list == null) return; kMain.getKinTree().reveal(list); kMain.getKinTree().show(); } public void doEditGroup(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = (KList)p.getOwner(); if(list == null) return; KSubgroup subgroup = (KSubgroup)list.getOwner(); if(subgroup == null) return; KGroup group = (KGroup)subgroup.getOwner(); if(group == null) return; if(grEditor.editGroup(group)) kMain.notifyChange(KingMain.EM_EDIT_GROSS); } public void doEditSubgroup(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = (KList)p.getOwner(); if(list == null) return; KSubgroup subgroup = (KSubgroup)list.getOwner(); if(subgroup == null) return; if(grEditor.editSubgroup(subgroup)) kMain.notifyChange(KingMain.EM_EDIT_GROSS); } public void doEditList(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = (KList)p.getOwner(); if(list == null) return; if(grEditor.editList(list)) kMain.notifyChange(KingMain.EM_EDIT_GROSS); } public void doEditPoint(int x, int y, KPoint p, MouseEvent ev) { if(p != null) ptEditor.editPoint(p); } //}}} //{{{ doPaintPoints //############################################################################## protected void doPaintPoints(int x, int y, KPoint p, MouseEvent ev) { Engine engine = kCanvas.getEngine(); Collection points = engine.pickAll2D(x, y, services.doSuperpick.isSelected(), AUGER_RADIUS); // Painting can't be undone because so many // points following those removed might be modified. // Remove all the points KPaint paintColor = (KPaint) cmPointPaint.getSelectedItem(); for(Iterator iter = points.iterator(); iter.hasNext(); ) { p = (KPoint) iter.next(); p.setColor(paintColor); } Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } //}}} //{{{ doLineSegment //############################################################################## protected void doLineSegment(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; if(lineseg1 == null) { lineseg1 = p; } else// if(lineseg2 == null) { lineseg2 = p; KList list = this.getDrawingList(KList.VECTOR, "lineSegment"); if(list == null) return; undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); // Calculate line shortening double shorten = 0.0; try { shorten = Double.parseDouble(tfShortenLine.getText()); } catch(NumberFormatException ex) {} double xlen = lineseg1.getOrigX() - lineseg2.getOrigX(); double ylen = lineseg1.getOrigY() - lineseg2.getOrigY(); double zlen = lineseg1.getOrigZ() - lineseg2.getOrigZ(); double len = Math.sqrt(xlen*xlen + ylen*ylen + zlen*zlen); double a = 1.0 - shorten/len; // the multiplier used below VectorPoint v1 = new VectorPoint(list, "drawn", null); v1.setOrigX(a*lineseg1.getOrigX() + (1-a)*lineseg2.getOrigX()); v1.setOrigY(a*lineseg1.getOrigY() + (1-a)*lineseg2.getOrigY()); v1.setOrigZ(a*lineseg1.getOrigZ() + (1-a)*lineseg2.getOrigZ()); list.add(v1); VectorPoint v2 = new VectorPoint(list, "drawn", v1); v2.setOrigX(a*lineseg2.getOrigX() + (1-a)*lineseg1.getOrigX()); v2.setOrigY(a*lineseg2.getOrigY() + (1-a)*lineseg1.getOrigY()); v2.setOrigZ(a*lineseg2.getOrigZ() + (1-a)*lineseg1.getOrigZ()); list.add(v2); lineseg1 = lineseg2 = null; Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } } //}}} //{{{ doBalls, doLabels //############################################################################## protected void doBalls(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = this.getDrawingList(KList.BALL, "balls"); if(list == null) return; undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); BallPoint b = new BallPoint(list, "drawn"); b.setOrigX(p.getOrigX()); b.setOrigY(p.getOrigY()); b.setOrigZ(p.getOrigZ()); list.add(b); Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } protected void doLabels(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = this.getDrawingList(KList.LABEL, "labels"); if(list == null) return; Object labelText = p.getName(); if(!cbLabelIsID.isSelected()) { labelText = JOptionPane.showInputDialog(kMain.getTopWindow(), "Enter label text", "Enter label text", JOptionPane.QUESTION_MESSAGE, null, null, labelText); if(labelText == null) return; } undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); LabelPoint lbl = new LabelPoint(list, labelText.toString()); lbl.setOrigX(p.getOrigX()); lbl.setOrigY(p.getOrigY()); lbl.setOrigZ(p.getOrigZ()); list.add(lbl); Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } //}}} //{{{ doDots //############################################################################## protected void doDots(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = this.getDrawingList(KList.DOT, "dots"); if(list == null) return; undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); DotPoint dt = new DotPoint(list, "drawn"); dt.setOrigX(p.getOrigX()); dt.setOrigY(p.getOrigY()); dt.setOrigZ(p.getOrigZ()); list.add(dt); Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } //}}} //{{{ doDottedLine //############################################################################## protected void doDottedLine(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; if(lineseg1 == null) { lineseg1 = p; } else// if(lineseg2 == null) { lineseg2 = p; KList list = this.getDrawingList(KList.DOT, "dottedLine"); if(list == null) return; undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); // Endpoints and working registers Triple p1 = new Triple(lineseg1.getOrigX(), lineseg1.getOrigY(), lineseg1.getOrigZ()); Triple p2 = new Triple(lineseg2.getOrigX(), lineseg2.getOrigY(), lineseg2.getOrigZ()); Triple x1 = new Triple(), x2 = new Triple(); // Number of dots int nDots = 10; try { nDots = Math.max(1, Integer.parseInt(tfNumDots.getText())); } catch(NumberFormatException ex) {} // Draw dots for(double i = 1; i <= nDots; i++) { x1.likeProd(1.0-(i/(nDots+1.0)), p1); x2.likeProd(i/(nDots+1.0), p2); x1.add(x2); DotPoint dt = new DotPoint(list, "drawn"); dt.setOrigX(x1.getX()); dt.setOrigY(x1.getY()); dt.setOrigZ(x1.getZ()); list.add(dt); } lineseg1 = lineseg2 = null; Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } } //}}} //{{{ doArcSegment //############################################################################## protected void doArcSegment(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; if(arcseg1 == null) arcseg1 = p; // reference position else if(arcseg2 == null) arcseg2 = p; // arc tail else// if(arcseg3 == null) { arcseg3 = p; // arc head KList list = this.getDrawingList(KList.VECTOR, "arcSegment"); if(list == null) return; undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); // R // // P---M-->Q // . . . // . . . // C Triple R = new Triple(arcseg1.getOrigX(), arcseg1.getOrigY(), arcseg1.getOrigZ()); Triple P = new Triple(arcseg2.getOrigX(), arcseg2.getOrigY(), arcseg2.getOrigZ()); Triple Q = new Triple(arcseg3.getOrigX(), arcseg3.getOrigY(), arcseg3.getOrigZ()); Triple M = new Triple().likeMidpoint(P, Q); double arcDegrees = 90; try { arcDegrees = Double.parseDouble(tfArcDegrees.getText()); } catch(NumberFormatException ex) {} if(arcDegrees < 1) arcDegrees = 1; if(arcDegrees > 360) arcDegrees = 360; double phi = (arcDegrees < 180 ? arcDegrees : 360 - arcDegrees); double distPQ = P.distance(Q); double distMQ = distPQ / 2; double distMC = distMQ / Math.tan(Math.toRadians(phi/2)); Triple C = builder.construct4(R, Q, M, distMC, 90, (arcDegrees < 180 ? 180 : 0)); Triple Cx = new Triple().likeNormal(P, R, Q).add(C); // Not good if angle=180 and Q, C, P are colinear! //if(arcDegrees < 180) Cx.likeNormal(Q, C, P).add(C); //else Cx.likeNormal(P, C, Q).add(C); double shortenDegrees = 0; try { shortenDegrees = Double.parseDouble(tfArcShorten.getText()); } catch(NumberFormatException ex) {} Triple rotPoint = new Triple(); Transform xform = new Transform(); VectorPoint v1 = null, prev = null; for(double rotDegrees = shortenDegrees/2; rotDegrees <= (arcDegrees-shortenDegrees/2); rotDegrees+=1.0) { xform.likeRotation(C, Cx, rotDegrees); xform.transform(P, rotPoint); prev = v1; v1 = new VectorPoint(list, "drawn", prev); v1.setOrigX(rotPoint.getX()); v1.setOrigY(rotPoint.getY()); v1.setOrigZ(rotPoint.getZ()); list.add(v1); } // Add arrowheads here if(cbArcArrowhead.isSelected()) { Triple arrowBase = new Triple(prev.getOrigX(), prev.getOrigY(), prev.getOrigZ()); Triple arrowTip = new Triple(v1.getOrigX(), v1.getOrigY(), v1.getOrigZ()); makeArrowhead(R, arrowBase, arrowTip, 0.12*distPQ, 30, 4, list); } arcseg1 = arcseg2 = arcseg3 = null; Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } } //}}} //{{{ makeArrowhead //############################################################################## /** * Creates an arrowhead. * @param tine the first tine around the base-tip axis will point toward this point * @param base the base of the arrow body * @param tip the tip of the arrow * @param tineLength the length of each tine * @param tineAngle the angle of the tines to the arrow body * @param tineCount how many tines will be created * @param list the list in which to create the tines */ void makeArrowhead(Tuple3 tine, Tuple3 base, Tuple3 tip, double tineLength, double tineAngle, int tineCount, KList list) { for(int i = 0; i < tineCount; i++) { Triple tineTip = builder.construct4(tine, base, tip, tineLength, tineAngle, (360.0*i)/tineCount); VectorPoint v1 = new VectorPoint(list, "drawn", null); v1.setOrigXYZ(tip); list.add(v1); VectorPoint v2 = new VectorPoint(list, "drawn", v1); v2.setOrigXYZ(tineTip); list.add(v2); } } //}}} //{{{ doTriangle //############################################################################## protected void doTriangle(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; if(triang1 == null) triang1 = p; else if(triang2 == null) triang2 = p; else// if(triang3 == null) { triang3 = p; KList list = this.getDrawingList(KList.TRIANGLE, "triangle"); if(list == null) return; undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); // Corner points Triple p1 = new Triple(triang1.getOrigX(), triang1.getOrigY(), triang1.getOrigZ()); Triple p2 = new Triple(triang2.getOrigX(), triang2.getOrigY(), triang2.getOrigZ()); Triple p3 = new Triple(triang3.getOrigX(), triang3.getOrigY(), triang3.getOrigZ()); // Center point Triple ctr = new Triple().add(p1).add(p2).add(p3).mult(1.0/3.0); // Amount of shrinkage double a = 1.0; try { a = Math.abs(Double.parseDouble(tfTriangleSize.getText())); } catch(NumberFormatException ex) {} // Draw triangle TrianglePoint t1 = new TrianglePoint(list, "drawn", null); t1.setOrigX(a*p1.getX() + (1-a)*ctr.getX()); t1.setOrigY(a*p1.getY() + (1-a)*ctr.getY()); t1.setOrigZ(a*p1.getZ() + (1-a)*ctr.getZ()); list.add(t1); TrianglePoint t2 = new TrianglePoint(list, "drawn", t1); t2.setOrigX(a*p2.getX() + (1-a)*ctr.getX()); t2.setOrigY(a*p2.getY() + (1-a)*ctr.getY()); t2.setOrigZ(a*p2.getZ() + (1-a)*ctr.getZ()); list.add(t2); TrianglePoint t3 = new TrianglePoint(list, "drawn", t2); t3.setOrigX(a*p3.getX() + (1-a)*ctr.getX()); t3.setOrigY(a*p3.getY() + (1-a)*ctr.getY()); t3.setOrigZ(a*p3.getZ() + (1-a)*ctr.getZ()); list.add(t3); triang1 = triang2 = triang3 = null; Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } } //}}} //{{{ doPunch, excisePoint //############################################################################## protected void doPunch(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = (KList) p.getOwner(); if(list == null) return; ListChildrenUndo step = new ListChildrenUndo(list); undoStack.addLast(new SoftReference(step)); excisePoint(p, step); Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } // Used by Punch and Auger -- not undoable in & of itself // Step can be null, or it will be used to save the modified point. private void excisePoint(KPoint p, ListChildrenUndo step) { if(p == null) return; KList list = (KList) p.getOwner(); if(list == null) return; for(ListIterator iter = list.children.listIterator(); iter.hasNext(); ) { KPoint q = (KPoint) iter.next(); if(q == p) { iter.remove(); if(iter.hasNext()) { q = (KPoint) iter.next(); if(step != null) step.savePoint(q); q.setPrev(null); } break; }//if we found the point }//for all points in the list } //}}} //{{{ doPrune //############################################################################## protected void doPrune(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = (KList) p.getOwner(); if(list == null) return; ListChildrenUndo step = new ListChildrenUndo(list); undoStack.addLast(new SoftReference(step)); for(ListIterator iter = list.children.listIterator(); iter.hasNext(); ) { KPoint q = (KPoint) iter.next(); if(q == p) { iter.remove(); if(q.getPrev() != null) { while(iter.hasPrevious()) // remove preceding points { q = (KPoint) iter.previous(); iter.remove(); if(q.getPrev() == null) break; } } while(iter.hasNext()) // remove following points { q = (KPoint) iter.next(); if(q.getPrev() == null) break; iter.remove(); } break; } } Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } //}}} //{{{ doAuger //############################################################################## protected void doAuger(int x, int y, KPoint p, MouseEvent ev) { Engine engine = kCanvas.getEngine(); Collection points = engine.pickAll2D(x, y, services.doSuperpick.isSelected(), AUGER_RADIUS); // Augering can't be undone because so many // points following those removed might be modified. // Remove all the points for(Iterator iter = points.iterator(); iter.hasNext(); ) { p = (KPoint) iter.next(); excisePoint(p, null); } Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } //}}} //{{{ doSphereCrop //############################################################################## protected void doSphereCrop(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; Kinemage kin = p.getKinemage(); if(kin == null) return; double r = 10; try { r = Double.parseDouble(tfCropRadius.getText()); } catch(NumberFormatException ex) {} double r2 = r*r; // Cropping can't be undone because so many // points following those removed might be modified. // Find all the points THAT ARE CURRENTLY VISIBLE // and outside the cropping sphere. RecursivePointIterator rpi = new RecursivePointIterator(kin, false, true); // inc. unpickables ArrayList toRemove = new ArrayList(); while(rpi.hasNext()) { KPoint q = rpi.next(); double dx = p.getOrigX() - q.getOrigX(); double dy = p.getOrigY() - q.getOrigY(); double dz = p.getOrigZ() - q.getOrigZ(); if(dx*dx + dy*dy + dz*dz > r2 && q.isTotallyOn()) toRemove.add(q); } // Now remove them for(Iterator iter = toRemove.iterator(); iter.hasNext(); ) excisePoint( (KPoint)iter.next(), null ); kin.signal.signalKinemage(kin, KinemageSignal.APPEARANCE); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ xx_drag() functions //################################################################################################## /** Override this function for (left-button) drags */ public void drag(int dx, int dy, MouseEvent ev) { KingView v = kMain.getView(); if(rbMovePoint.isSelected() && v != null && allPoints != null) { Dimension dim = kCanvas.getCanvasSize(); for(int k = 0; k < allPoints.length; k++) { float[] offset = v.translateRotated(dx, -dy, 0, Math.min(dim.width, dim.height)); // Check to make sure this isn't just a SpherePoint disk: if(allPoints[k] instanceof ProxyPoint) continue; allPoints[k].setOrigX(allPoints[k].getOrigX() + offset[0]); allPoints[k].setOrigY(allPoints[k].getOrigY() + offset[1]); allPoints[k].setOrigZ(allPoints[k].getOrigZ() + offset[2]); } Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); kCanvas.repaint(); } else super.drag(dx, dy, ev); } /** Override this function for middle-button/control drags */ public void c_drag(int dx, int dy, MouseEvent ev) { KingView v = kMain.getView(); if(rbMovePoint.isSelected() && v != null && draggedPoint != null) { Dimension dim = kCanvas.getCanvasSize(); float[] offset = v.translateRotated(dx, -dy, 0, Math.min(dim.width, dim.height)); draggedPoint.setOrigX(draggedPoint.getOrigX() + offset[0]); draggedPoint.setOrigY(draggedPoint.getOrigY() + offset[1]); draggedPoint.setOrigZ(draggedPoint.getOrigZ() + offset[2]); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); kCanvas.repaint(); } else super.c_drag(dx, dy, ev); } //}}} //{{{ xx_wheel() functions //################################################################################################## /** Override this function for mouse wheel motion */ public void wheel(int rotation, MouseEvent ev) { KingView v = kMain.getView(); if(rbMovePoint.isSelected() && v != null && draggedPoint != null) { Dimension dim = kCanvas.getCanvasSize(); for(int k = 0; k < allPoints.length; k++) { float[] offset = v.translateRotated(0, 0, 6*rotation, Math.min(dim.width, dim.height)); allPoints[k].setOrigX(allPoints[k].getOrigX() + offset[0]); allPoints[k].setOrigY(allPoints[k].getOrigY() + offset[1]); allPoints[k].setOrigZ(allPoints[k].getOrigZ() + offset[2]); } Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); kCanvas.repaint(); } else super.wheel(rotation, ev); } /** Override this function for mouse wheel motion with control down */ public void c_wheel(int rotation, MouseEvent ev) { KingView v = kMain.getView(); if(rbMovePoint.isSelected() && v != null && draggedPoint != null) { Dimension dim = kCanvas.getCanvasSize(); float[] offset = v.translateRotated(0, 0, 6*rotation, Math.min(dim.width, dim.height)); draggedPoint.setOrigX(draggedPoint.getOrigX() + offset[0]); draggedPoint.setOrigY(draggedPoint.getOrigY() + offset[1]); draggedPoint.setOrigZ(draggedPoint.getOrigZ() + offset[2]); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); kCanvas.repaint(); } else super.c_wheel(rotation, ev); } //}}} //{{{ mousePressed, mouseReleased //################################################################################################## public void mousePressed(MouseEvent ev) { super.mousePressed(ev); if(kMain.getKinemage() != null) draggedPoint = kCanvas.getEngine().pickPoint(ev.getX(), ev.getY(), services.doSuperpick.isSelected()); else draggedPoint = null; // Otherwise, we just create a nonsensical warning message about stereo picking if(draggedPoint == null) allPoints = null; else if(draggedPoint instanceof LabelPoint) { // Labels should never drag other points with them! allPoints = new KPoint[] {draggedPoint}; } else { // The 0.5 allows for a little roundoff error, // both in the kinemage itself and our floating point numbers. Collection all = kCanvas.getEngine().pickAll3D( draggedPoint.getDrawX(), draggedPoint.getDrawY(), draggedPoint.getDrawZ(), services.doSuperpick.isSelected(), 0.5); allPoints = (KPoint[])all.toArray( new KPoint[all.size()] ); } if(allPoints != null && rbMovePoint.isSelected()) undoStack.addLast(new SoftReference(new PointCoordsUndo(allPoints))); } public void mouseReleased(MouseEvent ev) { // Let's keep the point around so we can Z-translate too //draggedPoint = null; } //}}} //{{{ mouseMoved/Dragged/Exited, needAugerCircle, overpaintCanvas //################################################################################################## public void mouseMoved(MouseEvent ev) { super.mouseMoved(ev); lastAugerX = ev.getX(); lastAugerY = ev.getY(); if(needAugerCircle()) // trigger a redraw kCanvas.repaint(); } public void mouseDragged(MouseEvent ev) { super.mouseDragged(ev); lastAugerX = ev.getX(); lastAugerY = ev.getY(); // repaint will occur anyway } public void mouseExited(MouseEvent ev) { super.mouseExited(ev); // Stop painting the marker at all when mouse leaves drawing area lastAugerX = lastAugerY = -1; if(needAugerCircle()) // trigger a redraw kCanvas.repaint(); } /** Do we need to see the circle that marks area of effect for Auger and similar tools? */ boolean needAugerCircle() { return rbAuger.isSelected() || rbPaintPoints.isSelected(); } /** * Called by KinCanvas after all kinemage painting is complete, * this gives the tools a chance to write additional info * (e.g., point IDs) to the graphics area. *

We use it as an indication that the canvas has just been * redrawn, so we may need to paint the area of effect for Auger. * @param painter the Painter that can paint on the current canvas */ public void overpaintCanvas(Painter painter) { if(lastAugerX < 0 || lastAugerY < 0) return; if(needAugerCircle()) { double diam = AUGER_RADIUS * 2; painter.drawOval(new Color(0xcc0000), lastAugerX, lastAugerY, 0, diam, diam); } } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return ui; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return "#drawnew-tool"; } public String toString() { return "Edit / draw / delete"; } //}}} }//class king-2.21.120420/king/1.x_src/king/tool/export/0000755000000000000000000000000011744310054017245 5ustar rootrootking-2.21.120420/king/1.x_src/king/tool/export/PdfExport.java0000644000000000000000000001643511531212672022035 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.export; import king.*; import king.core.Engine; import java.awt.*; import java.awt.image.*; import java.awt.event.*; import java.beans.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.util.SoftLog; import com.lowagie.text.*; import com.lowagie.text.pdf.*; //}}} /** * PdfExport uses the iText library to export the current graphics * as a (vector) PDF file. The exact image is preserved, including * the font on this platform and the rendering quality -- fully WYSIWYG. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Sep 29 09:33:14 EDT 2003 */ public class PdfExport extends Plugin implements PropertyChangeListener, Runnable { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## JFileChooser chooser; SuffixFileFilter pdfFilter, pdftFilter; //}}} //{{{ Constructor(s) //############################################################################## public PdfExport(ToolBox tb) { super(tb); buildChooser(); } //}}} //{{{ buildChooser //############################################################################## private void buildChooser() { pdfFilter = new SuffixFileFilter("Portable Document Format (PDF)"); pdfFilter.addSuffix(".pdf"); pdftFilter = new SuffixFileFilter("PDF with transparent background"); pdftFilter.addSuffix(".pdf"); String currdir = System.getProperty("user.dir"); chooser = new JFileChooser(); chooser.addChoosableFileFilter(pdfFilter); chooser.addChoosableFileFilter(pdftFilter); chooser.setFileFilter(pdfFilter); if(currdir != null) chooser.setCurrentDirectory(new File(currdir)); chooser.addPropertyChangeListener(this); } //}}} //{{{ exportPDF //############################################################################## static public void exportPDF(KinCanvas kCanvas, File outfile) throws IOException, DocumentException { exportPDF(kCanvas, false, outfile); } static public void exportPDF(KinCanvas kCanvas, boolean transparentBackground, File outfile) throws IOException, DocumentException { Dimension dim = kCanvas.getCanvasSize(); Document doc = new Document(PageSize.LETTER, 72, 72, 72, 72); // 1" margins PdfWriter pdf = PdfWriter.getInstance(doc, new FileOutputStream(outfile)); doc.addCreator("KiNG by Ian W. Davis"); // add header and footer now, before opening document doc.open(); // Drawing code goes here. We use a template to simplify scaling/placement. PdfContentByte content = pdf.getDirectContent(); PdfTemplate template = content.createTemplate((float)dim.getWidth(), (float)dim.getHeight()); Graphics2D g2 = template.createGraphics((float)dim.getWidth(), (float)dim.getHeight()); if(transparentBackground) kCanvas.getEngine().setTransparentBackground(); kCanvas.paintCanvas(g2, dim, KinCanvas.QUALITY_BEST); g2.dispose(); // Post-multiplied transformation matrix: // [ x ] [ a b 0 ] [ x' ] [ x'/q ] // [ y ] * [ c d 0 ] = [ y' ] = [ y'/q ] // [ 1 ] [ e f 1 ] [ q ] [ 1 ] // Top, left, botttom, and right already include margins. // Coordinate system has bottom left corner as (0, 0) double w = doc.right() - doc.left(); double h = doc.top() - doc.bottom(); float scale = (float)Math.min(w/dim.getWidth(), h/dim.getHeight()); // Place image at top left corner of page, respecting margins content.addTemplate(template, scale, 0f, 0f, scale, doc.left(), (float)(doc.top() - scale*dim.getHeight())); // Closing the document writes everything to file doc.close(); } //}}} //{{{ askExport //############################################################################## public void askExport() { // Auto-generate a file name propertyChange(null); // Show the Save dialog if(JFileChooser.APPROVE_OPTION == chooser.showSaveDialog(kMain.getTopWindow())) { File f = chooser.getSelectedFile(); if(!pdfFilter.accept(f) && JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file has the wrong extension. Append '.pdf' to the name?", "Fix extension?", JOptionPane.YES_NO_OPTION)) { f = new File(f+".pdf"); } if(!f.exists() || JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION)) { try { exportPDF(kMain.getCanvas(), pdftFilter.equals(chooser.getFileFilter()), f); } catch(Exception ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } } } //}}} //{{{ propertyChange, run //################################################################################################## public void propertyChange(PropertyChangeEvent ev) { if(ev == null || JFileChooser.FILE_FILTER_CHANGED_PROPERTY.equals(ev.getPropertyName()) || JFileChooser.DIRECTORY_CHANGED_PROPERTY.equals(ev.getPropertyName())) { // Has to be done "asynchronously" or file name will be corrupted SwingUtilities.invokeLater(this); } } public void run() { String fmt = "pdf"; // Autogenerate an output name. for(int i = 1; i < 1000; i++) { File f = new File(chooser.getCurrentDirectory(), "kingsnap"+i+"."+fmt); if(!f.exists()) { chooser.setSelectedFile(f); break; } } } //}}} //{{{ getToolsMenuItem, getHelpMenuItem, toString, onExport, isAppletSafe //################################################################################################## public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString()+"...", null, this, "onExport")); } public JMenuItem getHelpMenuItem() { return null; } public String toString() { return "PDF document"; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onExport(ActionEvent ev) { this.askExport(); } static public boolean isAppletSafe() { return false; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/tool/export/ImageExport.java0000644000000000000000000002465611531212672022352 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.export; import king.*; import king.core.Engine; import java.awt.*; import java.awt.image.*; import java.awt.event.*; import java.beans.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.imageio.*; // J2SE 1.4+ import javax.imageio.stream.*; // J2SE 1.4+ import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * ImageExport allows the current graphics to be quickly * exported as an image. The exact image is preserved, including * the font on this platform and the rendering quality -- fully WYSIWYG. * Only works in Java 1.4 or later. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Sep 29 09:33:14 EDT 2003 */ public class ImageExport extends Plugin implements PropertyChangeListener, Runnable { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## JFileChooser chooser; SuffixFileFilter jpgFilter, pngFilter, pngtFilter; //}}} //{{{ Constructor(s) //############################################################################## public ImageExport(ToolBox tb) { super(tb); buildChooser(); } //}}} //{{{ buildChooser //############################################################################## private void buildChooser() { jpgFilter = new SuffixFileFilter("Joint Photographic Experts Group (JPEG)"); jpgFilter.addSuffix(".jpg"); jpgFilter.addSuffix(".jpe"); jpgFilter.addSuffix(".jpeg"); pngFilter = new SuffixFileFilter("Portable Network Graphics (PNG)"); pngFilter.addSuffix(".png"); pngtFilter = new SuffixFileFilter("PNG with transparent background"); pngtFilter.addSuffix(".png"); String currdir = System.getProperty("user.dir"); chooser = new JFileChooser(); chooser.addChoosableFileFilter(jpgFilter); chooser.addChoosableFileFilter(pngFilter); chooser.addChoosableFileFilter(pngtFilter); chooser.setAcceptAllFileFilterUsed(false); chooser.setFileFilter(jpgFilter); if(currdir != null) chooser.setCurrentDirectory(new File(currdir)); chooser.addPropertyChangeListener(this); } //}}} //{{{ exportImage //############################################################################## static public void exportImage(KinCanvas kCanvas, String format, File outfile) throws IOException { exportImage(kCanvas, format, false, 1, outfile); } static public void exportImage(KinCanvas kCanvas, String format, boolean transparentBackground, int resol, File outfile) throws IOException { Dimension dim = kCanvas.getCanvasSize(); BufferedImage img; if(format.equals("png")) img = new BufferedImage(resol*dim.width, resol*dim.height, BufferedImage.TYPE_INT_ARGB); // needed so we can get transparency in output else img = new BufferedImage(resol*dim.width, resol*dim.height, BufferedImage.TYPE_INT_BGR); // this avoids color problems with JPEG and gives smaller files (?) Graphics2D g2 = img.createGraphics(); g2.scale(resol, resol); if(transparentBackground) kCanvas.getEngine().setTransparentBackground(); kCanvas.paintCanvas(g2, dim, KinCanvas.QUALITY_BEST); /* Easy enough to do in Keynote that it's not worth including here! // Tasteful border - 1px, medium gray if(!transparentBackground) { g2.setColor(new Color(0.5f, 0.5f, 0.5f, 1.0f)); g2.setStroke(new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); g2.drawRect(0, 0, dim.width, dim.height); } */ // This ensures we get high-quality JPEGs if(format.equals("jpg")) writeAtHighestQuality(img, format, outfile); else ImageIO.write(img, format, outfile); } //}}} //{{{ writeAtHighestQuality //############################################################################## /** * Saves the image in the specified format with the * highest quality encoding available. * A lot of this code was borrowed from a Java Tech Tip. */ static void writeAtHighestQuality(BufferedImage img, String format, File outfile) throws IOException { ImageWriter bestWriter = null; ImageWriteParam bestWriteParam = null; float bestQual = 0; for(Iterator iter = ImageIO.getImageWritersByFormatName(format); iter.hasNext(); ) { ImageWriter iw = (ImageWriter) iter.next(); //System.err.println("New "+format+" writer ["+iw.getClass().getName()+"]:"); ImageWriteParam iwp = iw.getDefaultWriteParam(); iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); float best = 0; float values[] = iwp.getCompressionQualityValues(); for(int i = 0; i < values.length; i++) { //System.err.println(" "+values[i]); best = Math.max(best, values[i]); } if(best > bestQual) { iwp.setCompressionQuality(best); bestWriter = iw; bestWriteParam = iwp; bestQual = best; } } if(bestWriter == null) return; FileImageOutputStream output = new FileImageOutputStream(outfile); bestWriter.setOutput(output); IIOImage image = new IIOImage(img, null, null); bestWriter.write(null, image, bestWriteParam); // These two lines copied from javax.imageio.ImageIO.write() // in hopes of writing out complete JPEGs under Windows output.flush(); bestWriter.dispose(); output.close(); } //}}} //{{{ askExport //############################################################################## public void askExport() { // Auto-generate a file name propertyChange(null); // Show the Save dialog if(JFileChooser.APPROVE_OPTION == chooser.showSaveDialog(kMain.getTopWindow())) { String fmt = getFormat(); javax.swing.filechooser.FileFilter filter = chooser.getFileFilter(); File f = chooser.getSelectedFile(); if(!filter.accept(f) && JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file has the wrong extension. Append '."+fmt+"' to the name?", "Fix extension?", JOptionPane.YES_NO_OPTION)) { f = new File(f+"."+fmt); } if(!f.exists() || JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION)) { try { exportImage(kMain.getCanvas(), fmt, pngtFilter.equals(filter), kMain.getPrefs().getInt("imageExportMultiplier"), f); } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while saving the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } } } //}}} //{{{ getFormat, propertyChange, run //################################################################################################## String getFormat() { String fmt; javax.swing.filechooser.FileFilter filter = chooser.getFileFilter(); if(pngFilter.equals(filter)) fmt = "png"; else if(pngtFilter.equals(filter)) fmt = "png"; else if(jpgFilter.equals(filter)) fmt = "jpg"; else fmt = "jpg"; // shouldn't happen return fmt; } public void propertyChange(PropertyChangeEvent ev) { if(ev == null || JFileChooser.FILE_FILTER_CHANGED_PROPERTY.equals(ev.getPropertyName()) || JFileChooser.DIRECTORY_CHANGED_PROPERTY.equals(ev.getPropertyName())) { // Has to be done "asynchronously" or file name will be corrupted SwingUtilities.invokeLater(this); } } public void run() { String fmt = getFormat(); // Autogenerate an output name. for(int i = 1; i < 1000; i++) { File f = new File(chooser.getCurrentDirectory(), "kingsnap"+i+"."+fmt); if(!f.exists()) { chooser.setSelectedFile(f); break; } } } //}}} //{{{ diagnostics //############################################################################## /** Writes diagnostic info about javax.imageio to SoftLog.err */ static public void diagnostics() { SoftLog.err.println("Can write the following formats:"); String[] types = ImageIO.getWriterMIMETypes(); for(int i = 0; i < types.length; i++) SoftLog.err.println(" "+i+":\t"+types[i]); for(int i = 0; i < types.length; i++) { SoftLog.err.println("Writers for "+types[i]+":"); for(Iterator iter = ImageIO.getImageWritersByMIMEType(types[i]); iter.hasNext(); ) SoftLog.err.println(" "+iter.next()); } } //}}} //{{{ getToolsMenuItem, getHelpMenuItem, toString, onExport, isAppletSafe //################################################################################################## public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString()+"...", null, this, "onExport")); } public JMenuItem getHelpMenuItem() { return null; } public String toString() { return "Image file (JPG, PNG)"; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onExport(ActionEvent ev) { this.askExport(); } static public boolean isAppletSafe() { return false; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/tool/bondrot/0000755000000000000000000000000011744310054017373 5ustar rootrootking-2.21.120420/king/1.x_src/king/tool/bondrot/SuiteRotationTool.java0000644000000000000000000002061511531212672023712 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.bondrot; import king.*; import king.core.*; import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.util.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.r3.*; //}}} public class SuiteRotationTool extends BasicTool implements ChangeListener, ListSelectionListener, ActionListener, MageHypertextListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## AngleDial rotDial; TablePane pane; JList rotJList; JList hypJList; JTextField angField; HyperRotParser hyptyp; BondRotHandler handler; BondRot oldRot = null; //BondRot hyperRot = null; boolean valueChanging = false; ArrayList highlightedLists = null; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public SuiteRotationTool(ToolBox tb) { super(tb); buildGUI(); } //}}} private void buildGUI() { rotDial = new AngleDial(); rotJList = new JList(); hypJList = new JList(); angField = new JTextField("", 5); angField.addActionListener(this); pane = new TablePane(); pane.addCell(rotJList); pane.addCell(rotDial); pane.addCell(hypJList); pane.newRow(); pane.skip(); pane.addCell(angField); } public void start() { //buildGUI(); Collection brColl = kMain.getKinemage().getBondRots(); if (brColl.size() > 0) { handler = new BondRotHandler(brColl); //kMain.getTextWindow().addHypertextListener(this); hyptyp = new HyperRotParser(kMain.getTextWindow().getText()); //hypJList.setListData(hyptyp.getHypList()); DefaultListModel hypModel = new DefaultListModel(); String[] stringArray = hyptyp.getHypList(); //System.out.println(stringArray.length); for (int i = 0; iArrayList of bondRots String[] hypNames; //JList hypList; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public HyperRotParser(String input) { hypMap = new HashMap(); findLinks(new String(input)); } //}}} private void buildGUI() { } public void findLinks(String text) { //System.out.println(text); ArrayList hypList = new ArrayList(); int startHyp = 0; int endHyp = 0; while (startHyp >= 0) { startHyp = text.indexOf("*{"); endHyp = text.indexOf("}*"); if (startHyp >= 0) { String hypText = text.substring(startHyp + 2, endHyp); if (isHyper(hypText)) { hypList.add(hypText); } text = text.substring(endHyp + 2); } } Iterator iter = hypList.iterator(); hypNames = new String[hypList.size()]; int i = 0; while (iter.hasNext()) { String hypText = (String) iter.next(); String hypName = hypText.substring(0, hypText.indexOf(" ")); String rots = hypText.substring(hypText.indexOf("rot=")); hypNames[i] = hypName; i++; hypMap.put(hypName, extractRotInfo(rots)); } } public ArrayList extractRotInfo(String text) { String rotName = null; int startName = 0; int endName = -1; double rotAng = -1; ArrayList bondRots = new ArrayList(); while (startName >= 0) { startName = text.indexOf("rot={"); if (startName >= 0) { endName = text.indexOf("}"); rotName = text.substring(startName + 5, endName); //System.out.println(rotName); text = text.substring(endName + 1).trim(); //System.out.println("rest: " + text); int endAngSp = text.indexOf(" "); int endAngNL = text.indexOf("\n"); int endAng; if (endAngSp < 0) endAng = endAngNL; else if (endAngNL < 0) endAng = endAngSp; else if (endAngSp < endAngNL) endAng = endAngSp; else endAng = endAngNL; //System.out.println("endAng " + endAng); if (endAng >= 0) { rotAng = Double.parseDouble(text.substring(0, endAng)); text = text.substring(endAng + 1); } else { rotAng = Double.parseDouble(text); } BondRot store = new BondRot(1, rotName, rotAng); bondRots.add(store); } } return bondRots; } /* public String extractRotName(String text) { String rotName = null; int startName = text.indexOf("rot={"); if (startName > 0) { int endName = text.indexOf("}"); rotName = text.substring(startName + 5, endName); System.out.println(rotName); } return rotName; }*/ public String[] getHypList() { return hypNames; } public ArrayList getRotList(String rotName) { return (ArrayList) hypMap.get(rotName); } private boolean isHyper(String text) { return (text.indexOf("rot=")>0); } public void valueChanged(ListSelectionEvent ev) { } //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## public String toString() { return "HyperRotParser"; } //}}} public void debug() { /* BondRot[] bondRots = new BondRot[dialMap.size()]; Iterator iter = (dialMap.values()).iterator(); for (int i = 0; i < dialMap.size(); i++) { bondRots[i] = (BondRot) iter.next(); } rotList = new JList(bondRots); rotList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); rotList.addListSelectionListener(this); */ } }//class king-2.21.120420/king/1.x_src/king/tool/bondrot/BondRotHandler.java0000644000000000000000000001034711531212672023111 0ustar rootrootpackage king.tool.bondrot; import king.*; import king.core.*; import java.util.*; import driftwood.r3.*; import java.text.*; public class BondRotHandler { DecimalFormat df2 = new DecimalFormat("0.00"); HashMap origMap; HashSet origSet; HashMap pointMap; HashMap rotMap; BondRot[] bondRotArray = null; public BondRotHandler(Collection brColl) { origMap = new HashMap(); origSet = new HashSet(); pointMap = new HashMap(); rotMap = new HashMap(); Iterator bondRotIter = brColl.iterator(); Iterator listIter; int i = 0; bondRotArray = new BondRot[brColl.size()]; //ArrayList bondRotList = new ArrayList(); while (bondRotIter.hasNext()) { BondRot bonds = (BondRot) bondRotIter.next(); //System.out.println(bonds); bondRotArray[i] = bonds; i++; rotMap.put(bonds.getName(), bonds); ArrayList origList = new ArrayList(); ArrayList ptsList = new ArrayList(); origMap.put(bonds, origList); pointMap.put(bonds, ptsList); listIter = bonds.iterator(); while (listIter.hasNext()) { KList bondList = (KList) listIter.next(); //bondList.setColor(KPalette.white); storeCoords(bondList, ptsList, origList); } //origSet.clear(); } //BondRot[] bondRots = new BondRot[brColl.size()]; //Iterator iter = bondRotList.iterator(); //for (int i = 0; i < bondRotList.size(); i++) { // bondRots[i] = (BondRot) iter.next(); //} } private void storeCoords(KList list, ArrayList ptsList, ArrayList origList) { Iterator iter = list.iterator(); while (iter.hasNext()) { KPoint p = (KPoint) iter.next(); ptsList.add(p); Triple trip = new Triple(p); if (origSet.contains(trip)) { Iterator origIter = origSet.iterator(); while (origIter.hasNext()) { Triple temp = (Triple) origIter.next(); if (temp.equals(trip)) { trip = temp; } } } origList.add(trip); origSet.add(trip); } //System.out.print("points size: " + ptsList.size()); //System.out.println(" origCoords size: " + origList.size()); } public void doRotation(BondRot rot, double angle) { if (rot != null) { KList axis = rot.getAxisList(); Iterator axisIter = axis.iterator(); Triple firstTrip = new Triple((KPoint) axisIter.next()); Triple secondTrip = new Triple((KPoint) axisIter.next()); // calc transform Transform rotate = new Transform(); rotate = rotate.likeRotation(firstTrip, secondTrip, angle - rot.getCurrentAngle()); // apply transform Iterator origIter = ((ArrayList) origMap.get(rot)).iterator(); Iterator pointIter = ((ArrayList) pointMap.get(rot)).iterator(); //System.out.println(rot + " being set"); while (pointIter.hasNext()) { KPoint point = (KPoint) pointIter.next(); //Triple origTrip = (Triple) origIter.next(); //Triple trip = (Triple) origTrip.clone(); Triple trip = new Triple(point); rotate.transform(trip); //System.out.print(point + " " + df2.format(point.getOrigX()) + ", " + df2.format(point.getOrigY()) + ", " + df2.format(point.getOrigZ()) + " set to: "); point.setOrigX(trip.getX()); point.setOrigY(trip.getY()); point.setOrigZ(trip.getZ()); //System.out.println(df2.format(point.getOrigX()) + ", " + df2.format(point.getOrigY()) + ", " + df2.format(point.getOrigZ())); //rot.setCurrentAngle(angle); //trip = origTrip; //origTrip.setXYZ(trip.getX(), trip.getY(), trip.getZ()); } rot.setCurrentAngle(angle); } //rot.setCurrentAngle(angle); } public void updateCoords(BondRot rot) { //need to update origMap with new triples of points... ArrayList origList = (ArrayList) origMap.get(rot); ArrayList ptsList = (ArrayList) pointMap.get(rot); //origList.clear(); Iterator pointIter = ptsList.iterator(); Iterator origIter = origList.iterator(); while (pointIter.hasNext()) { KPoint p = (KPoint) pointIter.next(); Triple trip = (Triple) origIter.next(); trip.setXYZ(p.getOrigX(), p.getOrigY(), p.getOrigZ()); //Triple trip = new Triple(p); //origList.add(trip); } //System.out.println("updating coords"); } public BondRot getBondRot(String name) { return ((BondRot) rotMap.get(name)); } public BondRot[] getBondRotArray() { return bondRotArray; } } king-2.21.120420/king/1.x_src/king/GroupEditor.java0000644000000000000000000007433411531212674020073 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.r3.*; //}}} /** * GroupEditor produces a dialog box for editing group/list properties. * It also manages the Transform (translate/rotate/scale) operation on groups/lists. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Tue Sep 24 10:04:44 UTC 2002 */ public class GroupEditor implements ChangeListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; Frame ownerWindow; // Kinemage JDialog kiDialog; GridBagPanel kiPanel; JTextField kiName; JCheckBox kiWhiteback, kiOnewidth, kiThinline, kiPerspec, kiFlat, kiListcolor; JButton kiOK, kiCancel; // Groups JDialog grDialog; GridBagPanel grPanel; JTextField grName; JCheckBox grIsOff, grNoButton, grDominant, grRecessiveOn, grAnimate, gr2Animate; JButton grOK, grCancel; // Subgroups JDialog suDialog; GridBagPanel suPanel; JTextField suName; JCheckBox suIsOff, suNoButton, suDominant, suRecessiveOn; JButton suOK, suCancel; // Lists JDialog liDialog; boolean liFirstShow = true; TablePane liPanel; JTextField liName; JCheckBox liIsOff, liNoButton, liNoHilite; JTextField liWidth, liRadius, liAlpha; ColorPicker liPicker; KPaint originalColor = null; KList theKList = null; JButton liOK, liCancel; // Transform JDialog trDialog; boolean trFirstShow = true; TablePane2 trPanel; JTextField trTransX, trTransY, trTransZ; // translate, not transform JTextField trRotX, trRotY, trRotZ; JTextField trScale, trScaleX, trScaleY, trScaleZ; JCheckBox trAboutOrigin; JButton trBtnTrans, trBtnRot, trBtnAniso, trBtnScale, trClose; AGE trTarget = null; boolean acceptChanges = false; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public GroupEditor(KingMain kmain, Frame ownerWindow) { kMain = kmain; this.ownerWindow = ownerWindow; makeKinemageDialog(); makeGroupDialog(); makeSubgroupDialog(); makeListDialog(); makeTransformDialog(); } //}}} //{{{ make___Dialog //################################################################################################## void makeKinemageDialog() { kiDialog = new JDialog(ownerWindow, "Edit kinemage properties", true); kiDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); kiPanel = new GridBagPanel(); kiDialog.setContentPane(kiPanel); kiName = new JTextField(20); kiWhiteback = new JCheckBox("@whiteback (Default to white background)"); kiOnewidth = new JCheckBox("@onewidth (No depth cueing by line width)"); kiThinline = new JCheckBox("@thinline (All lines are thin)"); kiPerspec = new JCheckBox("@perspective (Use realistic perspective)"); kiFlat = new JCheckBox("@flat (2-D display and navigation)"); kiListcolor = new JCheckBox("@listcolordominant (Default to list color)"); kiOK = new JButton(new ReflectiveAction("OK", null, this, "onKinemageOK")); kiCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onKinemageCancel")); kiDialog.getRootPane().setDefaultButton(kiOK); kiPanel.setBorder(BorderFactory.createEmptyBorder(8,8,8,8)); kiPanel.gbc.weightx = 1.0; kiPanel.gbc.weighty = 1.0; kiPanel.gbc.anchor = GridBagConstraints.WEST; kiPanel.add(new JLabel("Kinemage title:"), 0, 0, 2, 1); kiPanel.add(kiName, 0, 1, 2, 1); kiPanel.add(new JLabel("Preferred display options:"), 0, -1, 2, 1); kiPanel.add(kiWhiteback, 0, -1, 2, 1); kiPanel.add(kiOnewidth, 0, -1, 2, 1); kiPanel.add(kiThinline, 0, -1, 2, 1); kiPanel.add(kiPerspec, 0, -1, 2, 1); kiPanel.add(kiFlat, 0, -1, 2, 1); kiPanel.add(kiListcolor, 0, -1, 2, 1); kiPanel.gbc.anchor = GridBagConstraints.CENTER; kiPanel.add(kiOK, 0, -1); kiPanel.add(kiCancel, 1, -1); } void makeGroupDialog() { grDialog = new JDialog(ownerWindow, "Edit group properties", true); grDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); grPanel = new GridBagPanel(); grDialog.setContentPane(grPanel); grName = new JTextField(20); grIsOff = new JCheckBox("off (Hide this and all children)"); grNoButton = new JCheckBox("nobutton (Don't provide on/off button)"); grDominant = new JCheckBox("dominant (Supress all children's buttons)"); grRecessiveOn = new JCheckBox("collapsable (Dominant only when off)"); grAnimate = new JCheckBox("animate (Include in ANIMATE animation)"); gr2Animate = new JCheckBox("2animate (Include in 2ANIMATE animation)"); grOK = new JButton(new ReflectiveAction("OK", null, this, "onGroupOK")); grCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onGroupCancel")); grDialog.getRootPane().setDefaultButton(grOK); grPanel.setBorder(BorderFactory.createEmptyBorder(8,8,8,8)); grPanel.gbc.weightx = 1.0; grPanel.gbc.weighty = 1.0; grPanel.gbc.anchor = GridBagConstraints.WEST; grPanel.add(new JLabel("Group name/identifier:"), 0, 0, 2, 1); grPanel.add(grName, 0, 1, 2, 1); grPanel.add(grIsOff, 0, -1, 2, 1); grPanel.add(grNoButton, 0, -1, 2, 1); grPanel.add(grDominant, 0, -1, 2, 1); grPanel.add(grRecessiveOn, 0, -1, 2, 1); grPanel.add(grAnimate, 0, -1, 2, 1); grPanel.add(gr2Animate, 0, -1, 2, 1); grPanel.gbc.anchor = GridBagConstraints.CENTER; grPanel.add(grOK, 0, -1); grPanel.add(grCancel, 1, -1); } void makeSubgroupDialog() { suDialog = new JDialog(ownerWindow, "Edit subgroup properties", true); suDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); suPanel = new GridBagPanel(); suDialog.setContentPane(suPanel); suName = new JTextField(20); suIsOff = new JCheckBox("off (Hide this and all children)"); suNoButton = new JCheckBox("nobutton (Don't provide on/off button)"); suDominant = new JCheckBox("dominant (Supress all children's buttons)"); suRecessiveOn = new JCheckBox("collapsable (Dominant only when off)"); suOK = new JButton(new ReflectiveAction("OK", null, this, "onSubgroupOK")); suCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onSubgroupCancel")); suDialog.getRootPane().setDefaultButton(suOK); suPanel.setBorder(BorderFactory.createEmptyBorder(8,8,8,8)); suPanel.gbc.weightx = 1.0; suPanel.gbc.weighty = 1.0; suPanel.gbc.anchor = GridBagConstraints.WEST; suPanel.add(new JLabel("Subgroup name/identifier:"), 0, 0, 2, 1); suPanel.add(suName, 0, 1, 2, 1); suPanel.add(suIsOff, 0, -1, 2, 1); suPanel.add(suNoButton, 0, -1, 2, 1); suPanel.add(suDominant, 0, -1, 2, 1); suPanel.add(suRecessiveOn, 0, -1, 2, 1); suPanel.gbc.anchor = GridBagConstraints.CENTER; suPanel.add(suOK, 0, -1); suPanel.add(suCancel, 1, -1); } void makeListDialog() { liDialog = new JDialog(ownerWindow, "Edit list properties", true); liDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); liPanel = new TablePane(); liDialog.setContentPane(liPanel); liName = new JTextField(20); liIsOff = new JCheckBox("off (Hide this list from view)"); liNoButton = new JCheckBox("nobutton (Don't provide on/off button)"); liNoHilite = new JCheckBox("nohighlight (No highlight on balls)"); liWidth = new JTextField(6); JLabel widthLabel = new JLabel("Line width:"); widthLabel.setLabelFor(liWidth); liRadius = new JTextField(6); JLabel radiusLabel = new JLabel("Ball radius:"); radiusLabel.setLabelFor(liRadius); liAlpha = new JTextField(6); JLabel alphaLabel = new JLabel("Alpha (0-255):"); alphaLabel.setLabelFor(liAlpha); KingPrefs prefs = kMain.getPrefs(); int patchSize = (prefs==null? 20 : prefs.getInt("colorSwatchSize")); liPicker = new ColorPicker(KPaint.BLACK_COLOR, patchSize); liPicker.addChangeListener(this); liOK = new JButton(new ReflectiveAction("OK", null, this, "onListOK")); liCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onListCancel")); liDialog.getRootPane().setDefaultButton(liOK); liPanel.setBorder(BorderFactory.createEmptyBorder(8,8,8,8)); liPanel.insets(2).hfill(true).vfill(false).top(); liPanel.startSubtable(); // most stuff liPanel.addCell(new JLabel("List name/identifier:"), 2, 1).newRow(); liPanel.addCell(liName, 2, 1).newRow(); liPanel.addCell(liIsOff, 2, 1).newRow(); liPanel.addCell(liNoButton, 2, 1).newRow(); liPanel.addCell(liNoHilite, 2, 1).newRow(); liPanel.addCell(widthLabel).addCell(liWidth).newRow(); liPanel.addCell(radiusLabel).addCell(liRadius).newRow(); liPanel.addCell(alphaLabel).addCell(liAlpha).newRow(); liPanel.endSubtable(); liPanel.startSubtable(1,2); // colors liPanel.addCell(new JLabel("List color:")); liPanel.newRow(); liPanel.addCell(liPicker); liPanel.endSubtable(); liPanel.newRow(); liPanel.bottom().startSubtable(); // ok and cancel liPanel.center(); liPanel.add(liOK); liPanel.add(liCancel); liPanel.endSubtable(); } //}}} //{{{ makeTransformDialog, transform, trClearFields //################################################################################################## private void makeTransformDialog() { trDialog = new JDialog(ownerWindow, "Transform coordinates", true); trDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); trTransX = new JTextField(6); trTransY = new JTextField(6); trTransZ = new JTextField(6); trRotX = new JTextField(6); trRotY = new JTextField(6); trRotZ = new JTextField(6); trScale = new JTextField(6); trScaleX = new JTextField(6); trScaleY = new JTextField(6); trScaleZ = new JTextField(6); trBtnTrans = new JButton(new ReflectiveAction("Translate", null, this, "onTransformTranslate")); trBtnRot = new JButton(new ReflectiveAction("Rotate", null, this, "onTransformRotate")); trBtnAniso = new JButton(new ReflectiveAction("Stretch", null, this, "onTransformAnisoScale")); trBtnScale = new JButton(new ReflectiveAction("Scale", null, this, "onTransformScale")); trClose = new JButton(new ReflectiveAction("Close", null, this, "onTransformClose")); trAboutOrigin = new JCheckBox("Rotate/scale about origin", false); trPanel = new TablePane2(); trPanel.insets(2).weights(1,1).memorize(); trPanel.add(new JLabel("X")); trPanel.add(new JLabel("Y")); trPanel.add(new JLabel("Z")); trPanel.newRow(); trPanel.add(trTransX); trPanel.add(trTransY); trPanel.add(trTransZ); trPanel.hfill(true).add(trBtnTrans); trPanel.newRow(); trPanel.add(trRotX); trPanel.add(trRotY); trPanel.add(trRotZ); trPanel.hfill(true).add(trBtnRot); trPanel.newRow(); trPanel.add(trScaleX); trPanel.add(trScaleY); trPanel.add(trScaleZ); trPanel.hfill(true).add(trBtnAniso); trPanel.newRow(); trPanel.center().add(new JLabel("Scale factor:"), 2, 1); trPanel.add(trScale); trPanel.hfill(true).add(trBtnScale); trPanel.newRow(); trPanel.center().add(trAboutOrigin, 4, 1); trPanel.newRow(); trPanel.center().add(trClose, 4, 1); trDialog.setContentPane(trPanel); } /** * Displays a dialog for transforming the selected group, subgroup, or list. */ public void transform(AGE target) { trTarget = target; trClearFields(); // Display dialog box trDialog.pack(); if(trFirstShow) { trDialog.setLocationRelativeTo(ownerWindow); trFirstShow = false; } trDialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed } private void trClearFields() { trTransX.setText("0.0"); trTransY.setText("0.0"); trTransZ.setText("0.0"); trRotX.setText("0.0"); trRotY.setText("0.0"); trRotZ.setText("0.0"); trScale.setText("1.0"); trScaleX.setText("1.0"); trScaleY.setText("1.0"); trScaleZ.setText("1.0"); } //}}} //{{{ edit___ //################################################################################################## /** * Edits properties of the specified kinemage. * @return true if the specified kinemage was modified in any way */ public boolean editKinemage(Kinemage kinemage) { // Copy info from kinemage to dialog components kiName.setText(kinemage.getName()); kiName.selectAll(); kiName.requestFocus(); kiWhiteback.setSelected( kinemage.atWhitebackground); kiOnewidth.setSelected( kinemage.atOnewidth); kiThinline.setSelected( kinemage.atThinline); kiPerspec.setSelected( kinemage.atPerspective); kiFlat.setSelected( kinemage.atFlat); kiListcolor.setSelected( kinemage.atListcolordominant); // Display dialog box kiDialog.pack(); kiDialog.setLocationRelativeTo(ownerWindow); kiDialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed // Read info from dialog into kinemage if(acceptChanges) { kinemage.setName( kiName.getText()); kinemage.atWhitebackground = kiWhiteback.isSelected(); kinemage.atOnewidth = kiOnewidth.isSelected(); kinemage.atThinline = kiThinline.isSelected(); kinemage.atPerspective = kiPerspec.isSelected(); kinemage.atFlat = kiFlat.isSelected(); kinemage.atListcolordominant = kiListcolor.isSelected(); markKinModified(kinemage); kMain.getMenus().displayMenu.syncCheckboxes(); } return acceptChanges; } /** * Edits properties of the specified group. * @return true if the specified group was modified in any way */ public boolean editGroup(KGroup group) { // Copy info from group to dialog components grName.setText(group.getName()); grName.selectAll(); grName.requestFocus(); grIsOff.setSelected( !group.isOn()); grNoButton.setSelected( !group.hasButton()); grDominant.setSelected( group.isDominant()); grRecessiveOn.setSelected( group.isRecessiveOn()); grAnimate.setSelected( group.isAnimate()); gr2Animate.setSelected( group.is2Animate()); // Display dialog box grDialog.pack(); grDialog.setLocationRelativeTo(ownerWindow); grDialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed // Read info from dialog into group if(acceptChanges) { group.setName( grName.getText()); group.setOn( !grIsOff.isSelected()); group.setHasButton( !grNoButton.isSelected()); group.setDominant( grDominant.isSelected()); group.setRecessiveOn( grRecessiveOn.isSelected()); group.setAnimate( grAnimate.isSelected()); group.set2Animate( gr2Animate.isSelected()); markKinModified(group); } return acceptChanges; } /** * Edits properties of the specified subgroup. * @return true if the specified subgroup was modified in any way */ public boolean editSubgroup(KSubgroup subgroup) { // Copy info from subgroup to dialog components suName.setText(subgroup.getName()); suName.selectAll(); suName.requestFocus(); suIsOff.setSelected( !subgroup.isOn()); suNoButton.setSelected( !subgroup.hasButton()); suDominant.setSelected( subgroup.isDominant()); suRecessiveOn.setSelected( subgroup.isRecessiveOn()); // Display dialog box suDialog.pack(); suDialog.setLocationRelativeTo(ownerWindow); suDialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed // Read info from dialog into subgroup if(acceptChanges) { subgroup.setName( suName.getText()); subgroup.setOn( !suIsOff.isSelected()); subgroup.setHasButton( !suNoButton.isSelected()); subgroup.setDominant( suDominant.isSelected()); subgroup.setRecessiveOn(suRecessiveOn.isSelected()); markKinModified(subgroup); } return acceptChanges; } /** * Edits properties of the specified list. * @return true if the specified list was modified in any way */ public boolean editList(KList list) { // Copy info from list to dialog components theKList = list; liName.setText(list.getName()); liName.selectAll(); liName.requestFocus(); liIsOff.setSelected( !list.isOn()); liNoButton.setSelected( !list.hasButton()); liNoHilite.setSelected((list.flags & KList.NOHILITE) != 0); liWidth.setText(Integer.toString(list.width)); liRadius.setText(Float.toString(list.radius)); liAlpha.setText(Integer.toString(list.alpha)); originalColor = list.getColor(); liPicker.setBackgroundMode(kMain.getCanvas().getEngine().backgroundMode); liPicker.setExtras(kMain.getKinemage().getNewPaintMap().values()); liPicker.setSelection(originalColor); // Display dialog box liDialog.pack(); if(liFirstShow) { liDialog.setLocationRelativeTo(ownerWindow); liFirstShow = false; } liDialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed // Read info from dialog into list if(acceptChanges) { list.setName( liName.getText()); list.setOn( !liIsOff.isSelected()); list.setHasButton( !liNoButton.isSelected()); if(liNoHilite.isSelected()) list.flags |= KList.NOHILITE; else list.flags &= ~KList.NOHILITE; try { list.width = Integer.parseInt(liWidth.getText()); } catch(NumberFormatException ex) {} if(list.width < 1) list.width = 1; if(list.width > 7) list.width = 7; try { list.radius = Float.parseFloat(liRadius.getText()); } catch(NumberFormatException ex) {} try { list.alpha = Integer.parseInt(liAlpha.getText()); } catch(NumberFormatException ex) {} if(list.alpha < 0) list.alpha = 0; if(list.alpha > 255) list.alpha = 255; // Color is handled as soon as the choice is registered, // so we don't need to deal with it here. markKinModified(list); } else { list.setColor(originalColor); kMain.notifyChange(KingMain.EM_DISPLAY); } theKList = null; // to avoid memory leaks return acceptChanges; } //}}} //{{{ on__OK, on__Cancel //################################################################################################## /** Event handler for OK button */ public void onKinemageOK(ActionEvent ev) { acceptChanges = true; kiDialog.dispose(); } /** Event handler for Cancel button */ public void onKinemageCancel(ActionEvent ev) { acceptChanges = false; kiDialog.dispose(); } /** Event handler for OK button */ public void onGroupOK(ActionEvent ev) { acceptChanges = true; grDialog.dispose(); } /** Event handler for Cancel button */ public void onGroupCancel(ActionEvent ev) { acceptChanges = false; grDialog.dispose(); } /** Event handler for OK button */ public void onSubgroupOK(ActionEvent ev) { acceptChanges = true; suDialog.dispose(); } /** Event handler for Cancel button */ public void onSubgroupCancel(ActionEvent ev) { acceptChanges = false; suDialog.dispose(); } /** Event handler for OK button */ public void onListOK(ActionEvent ev) { acceptChanges = true; liDialog.dispose(); } /** Event handler for Cancel button */ public void onListCancel(ActionEvent ev) { acceptChanges = false; liDialog.dispose(); } //}}} //{{{ onTransform___ //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTransformClose(ActionEvent ev) { trDialog.dispose(); trTarget = null; // to avoid memory leaks } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTransformTranslate(ActionEvent ev) { try { float x, y, z; x = Float.parseFloat(trTransX.getText().trim()); y = Float.parseFloat(trTransY.getText().trim()); z = Float.parseFloat(trTransZ.getText().trim()); translate(trTarget, x, y, z); markKinModified(trTarget); } catch(NumberFormatException ex) {} trClearFields(); kMain.notifyChange(KingMain.EM_EDIT_FINE); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTransformRotate(ActionEvent ev) { float[] bounds = { Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY }; float x, y, z; if(trAboutOrigin.isSelected()) { x = y = z = 0; } else { trTarget.calcBoundingBox(bounds); x = (bounds[3] + bounds[0])/2f; y = (bounds[4] + bounds[1])/2f; z = (bounds[5] + bounds[2])/2f; } Transform rot = new Transform().likeTranslation(-x, -y, -z); Transform tmp = new Transform(); try { double xd, yd, zd; xd = Double.parseDouble(trRotX.getText().trim()); yd = Double.parseDouble(trRotY.getText().trim()); zd = Double.parseDouble(trRotZ.getText().trim()); tmp.likeRotation(new Triple(1,0,0), xd); rot.append(tmp); tmp.likeRotation(new Triple(0,1,0), yd); rot.append(tmp); tmp.likeRotation(new Triple(0,0,1), zd); rot.append(tmp); tmp.likeTranslation(x, y, z); rot.append(tmp); rotate(trTarget, rot); markKinModified(trTarget); } catch(NumberFormatException ex) {} trClearFields(); kMain.notifyChange(KingMain.EM_EDIT_FINE); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTransformScale(ActionEvent ev) { float[] bounds = { Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY }; float x, y, z; if(trAboutOrigin.isSelected()) { x = y = z = 0; } else { trTarget.calcBoundingBox(bounds); x = (bounds[3] + bounds[0])/2f; y = (bounds[4] + bounds[1])/2f; z = (bounds[5] + bounds[2])/2f; } try { float s; s = Float.parseFloat(trScale.getText().trim()); scale(trTarget, x, y, z, s, s, s); markKinModified(trTarget); } catch(NumberFormatException ex) {} trClearFields(); kMain.notifyChange(KingMain.EM_EDIT_FINE); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTransformAnisoScale(ActionEvent ev) { float[] bounds = { Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY }; float x, y, z; if(trAboutOrigin.isSelected()) { x = y = z = 0; } else { trTarget.calcBoundingBox(bounds); x = (bounds[3] + bounds[0])/2f; y = (bounds[4] + bounds[1])/2f; z = (bounds[5] + bounds[2])/2f; } try { float sx = Float.parseFloat(trScaleX.getText().trim()); float sy = Float.parseFloat(trScaleY.getText().trim()); float sz = Float.parseFloat(trScaleZ.getText().trim()); scale(trTarget, x, y, z, sx, sy, sz); markKinModified(trTarget); } catch(NumberFormatException ex) {} trClearFields(); kMain.notifyChange(KingMain.EM_EDIT_FINE); } //}}} //{{{ translate, rotate, scale //################################################################################################## /** * Permanently alters the base coordinates of all the points * beneath the selected AGE. */ public static void translate(AGE target, float x, float y, float z) { KPoint pt; Iterator iter; if(target instanceof KList) { for(iter = target.iterator(); iter.hasNext(); ) { pt = (KPoint)iter.next(); pt.setOrigX(pt.getOrigX() + x); pt.setOrigY(pt.getOrigY() + y); pt.setOrigZ(pt.getOrigZ() + z); } } else { for(iter = target.iterator(); iter.hasNext(); ) { translate((AGE)iter.next(), x, y, z); } } } /** * Permanently alters the base coordinates of all the points * beneath the selected AGE. */ public static void rotate(AGE target, Transform r) { KPoint pt; Iterator iter; if(target instanceof KList) { Triple proxy = new Triple(); for(iter = target.iterator(); iter.hasNext(); ) { pt = (KPoint)iter.next(); proxy.setXYZ(pt.getOrigX(), pt.getOrigY(), pt.getOrigZ()); r.transform(proxy); pt.setOrigX(proxy.getX()); pt.setOrigY(proxy.getY()); pt.setOrigZ(proxy.getZ()); } } else { for(iter = target.iterator(); iter.hasNext(); ) { rotate((AGE)iter.next(), r); } } } /** * Permanently alters the base coordinates of all the points * beneath the selected AGE. * Points are scaled such that (x,y,z) remains fixed in space * and other points expand/contract around it. */ public static void scale(AGE target, float x, float y, float z, float sx, float sy, float sz) { KPoint pt; Iterator iter; if(target instanceof KList) { // There's no perfect answer here, but this seems reasonable at least... float s = (float) Math.sqrt((sx*sx + sy*sy + sz*sz)/3.0); ((KList)target).radius *= s; for(iter = target.iterator(); iter.hasNext(); ) { pt = (KPoint)iter.next(); pt.setOrigX( (pt.getOrigX()-x)*sx + x); pt.setOrigY( (pt.getOrigY()-y)*sy + y); pt.setOrigZ( (pt.getOrigZ()-z)*sz + z); if(pt instanceof BallPoint) ((BallPoint)pt).r0 *= s; } } else { for(iter = target.iterator(); iter.hasNext(); ) { scale((AGE)iter.next(), x, y, z, sx, sy, sz); } } } //}}} //{{{ stateChanged, markKinModified //################################################################################################## public void stateChanged(ChangeEvent ev) { theKList.setColor( liPicker.getSelection() ); kMain.notifyChange(KingMain.EM_DISPLAY); } void markKinModified(AGE age) { Kinemage k = age.getKinemage(); if(k != null) k.setModified(true); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/ToolServices.java0000644000000000000000000005375411531212674020254 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; //import java.io.*; import java.text.DecimalFormat; import java.util.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.SoftLog; import java.util.List; //}}} /** * ToolServices implements the most common manipulation functions, * including picking, pickcentering, rotation, translation, measures, and markers. * There is one ToolServices object in each ToolBox, and all the Tools in that ToolBox * should use it for their interactions. * *

Begun on Fri Jun 21 09:30:40 EDT 2002 *
Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. */ public class ToolServices implements TransformSignalSubscriber { //{{{ Static fields static final DecimalFormat df_3 = new DecimalFormat("###,###,##0.###"); static final DecimalFormat df_1 = new DecimalFormat("##0.#"); /*static final int[] marker_styles = { MarkerPoint.CROSS_2 | MarkerPoint.X_2, MarkerPoint.CROSS_L | MarkerPoint.X_L, MarkerPoint.CROSS_M | MarkerPoint.X_M, MarkerPoint.CROSS_M, MarkerPoint.RING_L };*/ static final int[] marker_styles = { MarkerPoint.SQUARE_L | MarkerPoint.SQUARE_M | MarkerPoint.CROSS_2, MarkerPoint.RING_L | MarkerPoint.RING_M | MarkerPoint.CROSS_L, MarkerPoint.SQUARE_M | MarkerPoint.CROSS_M, MarkerPoint.RING_M | MarkerPoint.CROSS_M, MarkerPoint.DISC_L | MarkerPoint.DISC_M | MarkerPoint.DISC_S // shouldn't ever see this one! }; //}}} //{{{ Variable definitions //################################################################################################## ToolBox parent; KingMain kMain; KinCanvas kCanvas; // Delta zoom and clip that are not "used" by the quantized // models are saved and applied to the next mouse move float delta_zoom = 0f; float delta_clip = 0f; // Strings to paint String pointID = null; String distance = null; String aspect = null; String coords = null; // Control service options public JCheckBoxMenuItem doXYZ; public JCheckBox doMarkers; public JCheckBoxMenuItem doFlatland; public JCheckBoxMenuItem doSuperpick; public JCheckBoxMenuItem doObjectPick; public JCheckBoxMenuItem doMeasureAll; public JCheckBox doPickcenter; // Markers and point backlog LinkedList trackedPoints; final int maxTrackedPoints = 5; //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public ToolServices(ToolBox tb) { parent = tb; kMain = tb.kMain; kCanvas = tb.kCanvas; trackedPoints = new LinkedList(); doXYZ = new JCheckBoxMenuItem(new ReflectiveAction("Show XYZ coordinates", null, this, "onShowXYZ")); doXYZ.setSelected(false); doMarkers = new JCheckBox(new ReflectiveAction("Markers", null, this, "onShowMarkers")); doMarkers.setSelected(false); doMarkers.setToolTipText("Markers painted on points you've selected with the mouse"); doFlatland = new JCheckBoxMenuItem("Flatland", false); doFlatland.setToolTipText("Translate in X-Y instead of rotating"); doSuperpick = new JCheckBoxMenuItem("Superpick", false); doSuperpick.setToolTipText("Pick points that are otherwise unpickable"); doObjectPick = new JCheckBoxMenuItem(new ReflectiveAction("Pick objects", null, this, "onObjectPick")); doObjectPick.setSelected(kCanvas.getEngine().useObjPicking); doObjectPick.setToolTipText("Pick lines and faces in addition to points"); doMeasureAll = new JCheckBoxMenuItem(new ReflectiveAction("Measure angle & dihedral", null, this, "onShowMeasures")); doMeasureAll.setSelected(false); doPickcenter = new JCheckBox("Pick center", false); doPickcenter.setToolTipText("Click this, then choose a new center of rotation"); } //}}} //{{{ pick //################################################################################################## /** * Displays the ID of the point in the appropriate text box, * and registers this point with the marker-tracking system. */ public void pick(KPoint p) { if(doPickcenter.isSelected()) { doPickcenter.setSelected(false); centerOnPoint(p); } else { identify(p); if(doMeasureAll.isSelected()) measureAll(p); else measure(p); mark(p); } } //}}} //{{{ identify, measure, mark //################################################################################################## public void identify(KPoint p) { if(kMain.getView() == null || p == null) { setID(null); setDist(null); setCoords(null); } else { setID(p.getName()); setCoords(df_3.format(p.getOrigX())+" "+df_3.format(p.getOrigY())+" "+df_3.format(p.getOrigZ())); } kCanvas.repaint(); } public void measure(KPoint p) { KPoint q = getLastPicked(0); if(kMain.getView() == null || p == null) { setDist(null); } else if(q != null) { float dist, dx, dy, dz; dx = p.getOrigX() - q.getOrigX(); dy = p.getOrigY() - q.getOrigY(); dz = p.getOrigZ() - q.getOrigZ(); dist = (float)Math.sqrt(dx*dx + dy*dy + dz*dz); setDist(df_3.format(dist)); } kCanvas.repaint(); } /** * "Officialy" picks a point -- puts a marker there and * considers it a point in the sequence of measures. * Be sure to call this AFTER measure() / measureAll() */ public void mark(KPoint p) { if(p != null) trackedPoints.addFirst(p); while(trackedPoints.size() > maxTrackedPoints) trackedPoints.removeLast(); if(doMarkers.isSelected()) kCanvas.repaint(); } //}}} //{{{ measureAll //################################################################################################## public void measureAll(KPoint p) { StringBuffer msg = new StringBuffer(); KPoint q = getLastPicked(0); if(kMain.getView() == null || p == null) setDist(null); else if(q != null) { // Naming scheme: // points are p, q, r, and s, from most recently picked to least recently picked // vectors are d (from q to p), e (from r to q), and f (from s to r) // normal to the s-r-q plane is u, normal to the r-q-p plane is v float dmag, dx, dy, dz; dx = p.getOrigX() - q.getOrigX(); dy = p.getOrigY() - q.getOrigY(); dz = p.getOrigZ() - q.getOrigZ(); dmag = (float)Math.sqrt(dx*dx + dy*dy + dz*dz); msg.append("dist: ").append(df_3.format(dmag)); KPoint r = getLastPicked(1); if(r != null) { float angle, emag, ex, ey, ez; ex = q.getOrigX() - r.getOrigX(); ey = q.getOrigY() - r.getOrigY(); ez = q.getOrigZ() - r.getOrigZ(); emag = (float)Math.sqrt(ex*ex + ey*ey + ez*ez); // Dot product: d . e = d e cos(a) = dxex + dyey + dzez // But notice 'e' has the wrong sign here for this to work right... angle = (float)Math.toDegrees(Math.acos((dx*ex + dy*ey + dz*ez) / (dmag * -emag))); msg.append(" angl: ").append(df_1.format(angle)); KPoint s = getLastPicked(2); if(s != null) { float fmag, fx, fy, fz; fx = r.getOrigX() - s.getOrigX(); fy = r.getOrigY() - s.getOrigY(); fz = r.getOrigZ() - s.getOrigZ(); fmag = (float)Math.sqrt(fx*fx + fy*fy + fz*fz); // Cross product: a x b = (aybz-azby, -axbz+azbx, axby-aybx) // 'u' and 'v' are normals to planes // u = f x e, v = e x d float umag, ux, uy, uz, vmag, vx, vy, vz; ux = fy*ez - fz*ey; uy = fz*ex - fx*ez; uz = fx*ey - fy*ex; umag = (float)Math.sqrt(ux*ux + uy*uy + uz*uz); vx = ey*dz - ez*dy; vy = ez*dx - ex*dz; vz = ex*dy - ey*dx; vmag = (float)Math.sqrt(vx*vx + vy*vy + vz*vz); // Dot product again angle = (float)Math.toDegrees(Math.acos((ux*vx + uy*vy + uz*vz) / (umag * vmag))); // BUT, that doesn't solve the handedness (sign) problem for the dihedral! // To do that, we look at the angle between 'f' and 'v' // Dot product again if( Math.toDegrees(Math.acos((fx*vx + fy*vy + fz*vz) / (fmag * vmag))) > 90.0 ) { angle = -angle; } msg.append(" dihd: ").append(df_1.format(angle)); if(kMain.getPrefs().getBoolean("measureVectorVectorAngle")) { // Angle between an axis (r-s) and a vector (q-p) // Dot product: d . f = d f cos(a) = dxfx + dyfy + dzfz // But notice 'f' has the wrong sign here for this to work right... angle = (float)Math.toDegrees(Math.acos((dx*fx + dy*fy + dz*fz) / (dmag * -fmag))); msg.append(" vect: ").append(df_1.format(angle)); } }//dihedral }//angle setDist(msg.toString()); }//distance kCanvas.repaint(); }//measureAll() //}}} //{{{ centerOnPoint //################################################################################################## /** Centers the view on the point */ public void centerOnPoint(KPoint p) { KingView v = kMain.getView(); if(v == null || p == null) return; v.setCenter(p.getOrigX(), p.getOrigY(), p.getOrigZ()); kCanvas.repaint(); } //}}} //{{{ rotate, pinwheel //################################################################################################## /** Given offsets in pixels, does normal kinemage rotation */ public void rotate(float dx, float dy) { KingView v = kMain.getView(); if(v == null) return; v.rotateX((float)(2.0*Math.PI) * dy / 600f); v.rotateY((float)(2.0*Math.PI) * dx / 600f); kCanvas.repaint(); } /** Given a distance in pixels, does pinwheel rotation */ public void pinwheel(float dist) { KingView v = kMain.getView(); if(v == null) return; v.rotateZ((float)(-2.0*Math.PI) * dist / 600f); kCanvas.repaint(); } //}}} //{{{ translate, ztranslate //################################################################################################## /** Given offsets in pixels, does a flatland translation */ public void translate(int dx, int dy) { KingView v = kMain.getView(); if(v == null) return; Dimension dim = kCanvas.getCanvasSize(); v.viewTranslateRotated(dx, -dy, 0, (dim.width < dim.height ? dim.width : dim.height)); kCanvas.repaint(); } /** Given an offset in pixels, does translation into/out of the screen */ public void ztranslate(int d) { KingView v = kMain.getView(); if(v == null) return; Dimension dim = kCanvas.getCanvasSize(); v.viewTranslateRotated(0, 0, d, (dim.width < dim.height ? dim.width : dim.height)); kCanvas.repaint(); } //}}} //{{{ adjustZoom, adjustClipping //################################################################################################## /** Given a pixel offset, does zooming */ public void adjustZoom(float dist) { KingView v = kMain.getView(); if(v == null) return; BoundedRangeModel model = kCanvas.getZoomModel(); // Delta zoom that's not "used" by the quantized zoommodel is saved and applied to the next mouse move delta_zoom += dist / 6f; model.setValue(model.getValue() + (int)delta_zoom); delta_zoom -= (int)delta_zoom; // repaint is automatic when zoom is adjusted } /** Given a pixel distance, adjusts clipping */ public void adjustClipping(float dist) { KingView v = kMain.getView(); if(v == null) return; BoundedRangeModel model = kCanvas.getClipModel(); // Delta clip that's not "used" by the quantized clipmodel is saved and applied to the next mouse move delta_clip += dist / 1f; model.setValue(model.getValue() + (int)delta_clip); delta_clip -= (int)delta_clip; // repaint is automatic when clip is adjusted } //}}} //{{{ getLastPicked, clearLastPicked, clearEverything //################################################################################################## /** Gets last point picked (0), or two points ago (1), or three (2), etc. */ public KPoint getLastPicked(int which) { KPoint ret = null; try { ret = (KPoint)trackedPoints.get(which); } catch(IndexOutOfBoundsException ex) {} return ret; } /** Removes the backlog of picked points */ public void clearLastPicked() { trackedPoints.clear(); } /** Clears out all markers and starts over */ public void clearEverything() { clearLastPicked(); setID(null); setDist(null); setAspect(null); setCoords(null); } //}}} //{{{ onShowMarkers, onShowXYZ, onShowMeasures, onObjectPick //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowMarkers(ActionEvent ev) { kMain.notifyChange(KingMain.EM_ON_OFF); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowMeasures(ActionEvent ev) { // Measures turned on if(doMeasureAll.isSelected()) { clearLastPicked(); doMarkers.setSelected(true); } // Measures turned off else { setDist(null); doMarkers.setSelected(false); } kMain.notifyChange(KingMain.EM_ON_OFF); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowXYZ(ActionEvent ev) { kCanvas.repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onObjectPick(ActionEvent ev) { kCanvas.getEngine().useObjPicking = doObjectPick.isSelected(); } //}}} //{{{ empty //################################################################################################## //}}} //{{{ makeNormalMarkers //################################################################################################## KList makeNormalMarkers(List points, int howmany) { KList marks = new KList(); marks.setColor(KPalette.white); for(int i = 0; i < howmany && i < points.size(); i++) { KPoint p = (KPoint) points.get(i); MarkerPoint mark = new MarkerPoint(p, KPalette.white, marker_styles[i]); mark.setOwner(marks); marks.add(mark); } return marks; } //}}} //{{{ makeMageMeasures //################################################################################################## /** * Constructs a subgroup that looks like Mage's measures from recently picked points. * Most recently picked is at the head of the list. */ KSubgroup makeMageMeasures(List points) { KSubgroup subgroup = new KSubgroup(); KList lines = new KList(subgroup, "lines"); subgroup.add(lines); lines.setWidth(5); lines.setColor(KPalette.white); KPoint tracked; VectorPoint prev = null; for(int i = 3; i >= 0; i--) { if(points.size() > i) { tracked = (KPoint) points.get(i); VectorPoint curr = new VectorPoint(lines, "", prev); curr.setOrigX(tracked.getOrigX()); curr.setOrigY(tracked.getOrigY()); curr.setOrigZ(tracked.getOrigZ()); curr.setUnpickable(true); prev = curr; lines.add(curr); } } KList dots = new KList(subgroup, "dots"); subgroup.add(dots); dots.setWidth(2); dots.setColor(KPalette.hotpink); double x = 0, y = 0, z = 0; for(int i = 0; i < 4; i++) { if(points.size() > i) { tracked = (KPoint) points.get(i); x += tracked.getOrigX(); y += tracked.getOrigY(); z += tracked.getOrigZ(); if(i > 0) { DotPoint dot = new DotPoint(dots, ""); dot.setOrigX( x / (i+1) ); dot.setOrigY( y / (i+1) ); dot.setOrigZ( z / (i+1) ); dots.add(dot); } } } return subgroup; } //}}} //{{{ signalTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.signalTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void signalTransform(Engine engine, Transform xform) { if(doMarkers.isSelected()) { if(doMeasureAll.isSelected()) { KSubgroup subgroup = makeMageMeasures(trackedPoints); subgroup.signalTransform(engine, xform); } else { KList marks = makeNormalMarkers(trackedPoints, 2); marks.signalTransform(engine, xform); } } } //}}} //{{{ overpaintCanvas //################################################################################################## /** * Called by KinCanvas after all kinemage painting is complete, * this gives the tools a chance to write additional info * (e.g., point IDs) to the graphics area. * @param painter the Painter that can paint on the current canvas */ public void overpaintCanvas(Painter painter) { Engine engine = kCanvas.getEngine(); if(engine == null) return; Dimension size = kCanvas.getCanvasSize(); painter.setFont(engine.labelFont); Color fontColor = (engine.whiteBackground ? Color.black : Color.white); int ascent = painter.getLabelAscent("X"); int descent = painter.getLabelDescent("X"); int vOffset1 = ascent + 4; // just down from the top int vOffset2 = size.height - descent - 4; // just up from the bottom int vOffset3 = vOffset2 - (ascent + descent + 4); // just above that int hOffset1 = 4; // left side int hOffset2 = size.width/2 + 4; // the middle // Display aspect name Aspect a = kMain.getKinemage().getCurrentAspect(); if(a != null) setAspect(a.getName()); else setAspect(null); if(aspect != null) painter.paintLabel(fontColor, aspect, hOffset1, vOffset1, 0); if(coords != null && doXYZ.isSelected()) painter.paintLabel(fontColor, coords, hOffset2, vOffset1, 0); if(pointID != null) { int lblWidth = painter.getLabelWidth(pointID); // pointID is bumped up one line if it's really long if(hOffset1 + lblWidth >= hOffset2) { painter.paintLabel(fontColor, pointID, hOffset1, vOffset3, 0); if(hOffset1 + lblWidth >= size.width) // REALLY long: print to std out SoftLog.out.println(pointID); } else painter.paintLabel(fontColor, pointID, hOffset1, vOffset2, 0); } if(distance != null) painter.paintLabel(fontColor, distance, hOffset2, vOffset2, 0); } //}}} //{{{ setID/Dist/Aspect/Coords //################################################################################################## /** Bottom left label */ public void setID(String s) { pointID = s; } /** Bottom center label */ public void setDist(String s) { distance = s; } /** Top left label -- no one can change this */ private void setAspect(String s) { aspect = s; } /** Top center label */ public void setCoords(String s) { coords = s; if(coords != null && doXYZ.isSelected()) System.err.println(coords); } //}}} }//class king-2.21.120420/king/1.x_src/king/PointFinder.java0000644000000000000000000002507011531212674020042 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; //import java.io.*; //import java.text.*; import java.util.*; import javax.swing.*; import gnu.regexp.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * PointFinder is responsible for the Edit | Find dialog. * *

Begun on Fri Jun 14 21:19:49 EDT 2002 *
Copyright (C) 2002 by Ian W. Davis. All rights reserved. */ public class PointFinder implements WindowListener { //{{{ Static fields static final String WHOLE_WORDS = "Whole words"; static final String SUBSTRINGS = "Substrings"; static final String SIMPLE_REGEX = "Globs: ?=1, *=any"; static final String PERL_REGEX = "Perl5 regex"; static final String[] SEARCH_TYPES = { WHOLE_WORDS, SUBSTRINGS, SIMPLE_REGEX, PERL_REGEX }; //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JDialog dialog; JTextField searchField; JComboBox searchType; JCheckBox caseSensitive; JCheckBox centerOnFound; RecursivePointIterator ptIter; Collection query; //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public PointFinder(KingMain kmain) { kMain = kmain; dialog = new JDialog(kMain.getTopWindow(), "Find point", true); dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialog.addWindowListener(this); // Layout setup GridBagLayout gbl = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridwidth = gbc.gridheight = 1; gbc.fill = gbc.NONE; gbc.ipadx = gbc.ipady = 0; gbc.insets = new Insets(4,4,4,4); gbc.anchor = gbc.CENTER; gbc.weightx = gbc.weighty = 0.0; // Search pane construction Container searchPane = dialog.getContentPane(); searchPane.setLayout(gbl); ReflectiveAction searchAction = new ReflectiveAction("Search", null, this, "onSearch"); ReflectiveAction closeAction = new ReflectiveAction("Close", null, this, "onClose"); JButton btnClose = new JButton(closeAction); closeAction.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)); closeAction.bindWindow(btnClose); searchField = new JTextField(20); searchField.addActionListener(searchAction); gbc.gridx = 0; gbc.gridy = 0; gbc.gridwidth = 2; gbl.setConstraints(searchField, gbc); searchPane.add(searchField); searchType = new JComboBox(SEARCH_TYPES); searchType.setEditable(false); gbc.gridx = 1; gbc.gridy = 1; gbc.gridwidth = 1; gbl.setConstraints(searchType, gbc); searchPane.add(searchType); caseSensitive = new JCheckBox("Case sensitive", false); gbc.gridx = 0; gbc.gridy = 1; gbc.gridwidth = 1; gbl.setConstraints(caseSensitive, gbc); searchPane.add(caseSensitive); centerOnFound = new JCheckBox("Go to found point (re-center)", true); gbc.gridx = 0; gbc.gridy = 2; gbc.gridwidth = 2; gbc.anchor = gbc.WEST; gbl.setConstraints(centerOnFound, gbc); searchPane.add(centerOnFound); gbc.anchor = gbc.CENTER; Box box = Box.createHorizontalBox(); box.add(new JButton(searchAction)); box.add(Box.createRigidArea(new Dimension(16,0))); box.add(btnClose); gbc.gridx = 0; gbc.gridy = 3; gbc.gridwidth = 2; gbl.setConstraints(box, gbc); searchPane.add(box); clearSearch(); } //}}} //{{{ onXXX() functions, show() //################################################################################################## public void show() { dialog.pack(); dialog.setLocationRelativeTo(kMain.getTopWindow()); searchField.selectAll(); searchField.requestFocus(); // may not take effect since dlg isn't visible? dialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSearch(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; Object mode = searchType.getSelectedItem(); ArrayList newQuery = new ArrayList(); String token; RE search; // For whole words & substrings, quote metacharacters with backslashes // Things to quote: \ ^ $ . [ ] ( ) | * + ? { } RE protector = new UncheckedRE("([\\\\\\^\\$\\.\\[\\]\\(\\)\\|\\*\\+\\?\\{\\}])"); // For "simple regex" searches \ ^ $ . [ ] ( ) | + { } RE simpleProtector = new UncheckedRE("([\\\\\\^\\$\\.\\[\\]\\(\\)\\|\\+\\{\\}])"); RE simpleRenamer = new UncheckedRE("([\\*])"); int cflags = ( caseSensitive.isSelected() ? 0 : RE.REG_ICASE ); if(mode == WHOLE_WORDS) { try { StringTokenizer st = new StringTokenizer(searchField.getText()); while(st.hasMoreTokens()) { token = protector.substituteAll(st.nextToken(), "\\$1"); //search = new RE(".*\\b"+token+"\\b.*", cflags); search = new RE("(?:.*[ ,;:])?"+token+"(?:[ ,;:].*)?", cflags); //System.err.println("Search term: "+search); newQuery.add(search); } } catch(REException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "The string you entered was not a valid regular expression.\n"+ex.getMessage(), "Regex error", JOptionPane.ERROR_MESSAGE); } } else if(mode == SUBSTRINGS) { try { StringTokenizer st = new StringTokenizer(searchField.getText()); while(st.hasMoreTokens()) { token = protector.substituteAll(st.nextToken(), "\\$1"); search = new RE(".*"+token+".*", cflags); newQuery.add(search); } } catch(REException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "The string you entered was not a valid regular expression.\n"+ex.getMessage(), "Regex error", JOptionPane.ERROR_MESSAGE); } } else if(mode == SIMPLE_REGEX) { try { // Rewrite most special chars; rewrite * and ? as .* and . token = searchField.getText(); token = simpleProtector.substituteAll(token, "\\$1"); token = simpleRenamer.substituteAll(token, ".$1"); token = token.replace('?', '.'); search = new RE(".*"+token+".*", cflags); newQuery.add(search); } catch(REException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "The string you entered was not a valid regular expression.\n"+ex.getMessage(), "Regex error", JOptionPane.ERROR_MESSAGE); } } else if(mode == PERL_REGEX) { try { search = new RE(".*"+searchField.getText()+".*", cflags); newQuery.add(search); } catch(REException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "The string you entered was not a valid regular expression.\n"+ex.getMessage(), "Regex error", JOptionPane.ERROR_MESSAGE); } } else {return;} // Using dispose() instead of setVisible(false) prevents redraw and focus problems dialog.dispose(); query = newQuery; ptIter = new RecursivePointIterator(kin); findNext(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onClose(ActionEvent ev) { // Using dispose() instead of setVisible(false) prevents redraw and focus problems dialog.dispose(); } //}}} //{{{ clearSearch, findNext //################################################################################################## /** Clears out the parameters used by the previous search */ public void clearSearch() { ptIter = null; query = null; } /** Centers on the next found point, or else returns false. */ public boolean findNext() { if(ptIter == null || query == null) return false; KPoint p; RE re; RE[] allREs = (RE[])query.toArray(new RE[ query.size() ]); boolean matchesAll; Iterator reIter; try { while(ptIter.hasNext()) { p = ptIter.next(); matchesAll = p.isTotallyOn(); //for(reIter = query.iterator(); matchesAll && reIter.hasNext(); ) for(int i = 0; matchesAll && i < allREs.length; i++) { //re = (RE)reIter.next(); re = allREs[i]; if(!re.isMatch(p.getName())) { matchesAll = false; } }//for each regex if(matchesAll)//center on the found point { if(kMain.getView() != null) { ToolServices ts = kMain.getCanvas().getToolBox().services; ts.pick(p); if(centerOnFound.isSelected()) ts.centerOnPoint(p); } return true; }//if match }//for each point } catch(ConcurrentModificationException ex) { SoftLog.err.println("Find Next failed due to concurrent modification of the kinemage."); } return false; } //}}} //{{{ Window events //################################################################################################## public void windowActivated(WindowEvent ev) { searchField.requestFocus(); } public void windowClosed(WindowEvent ev) {} public void windowClosing(WindowEvent ev) {} public void windowDeactivated(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowOpened(WindowEvent ev) {} //}}} }//class king-2.21.120420/king/1.x_src/king/KingPrefs.java0000644000000000000000000003111311531212674017504 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; //import java.text.*; import java.util.*; import javax.swing.*; import driftwood.util.*; //}}} /** * KingPrefs holds information about the preferrences of * the user running this instance of KiNG. * For documentation of the available options, see resource/king/king_prefs. * *

Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. *
Begun on Fri Jun 21 09:10:40 EDT 2002 */ public class KingPrefs extends Props // implements ... { //{{{ Constants //################################################################################################## static final String PROPS_HEADER = "#\n"+ "# This file contains your customized settings for running KiNG.\n"+ "# Place this in your home directory, or in an applet's\n"+ "# tag.\n"+ "# KiNG must be restarted for changes to take effect.\n"+ "#\n"+ "# For more information on all the possible properties that can be set,\n"+ "# including some which cannot be accessed from the GUI,\n"+ "# see the sample .king_prefs in the doc/ folder of your KiNG distribution.\n"+ "#"; // store() adds a newline for us //}}} //{{{ Variable definitions //################################################################################################## /** Whether a newer version of KiNG is present on the server. */ volatile boolean newerVersionAvail = false; volatile URL remoteVersionURL = null; /** The local dir where the main jar file resides, or null for none. */ public File jarFileDirectory; /** The image icon to display on the corner of the window, in the task bar, etc. */ public Image windowIcon; /** The icon for animating in the reverse direction */ public Icon stepBackIcon; /** The icon for animating in the forward direction */ public Icon stepForwardIcon; /** The icon for move-up type actions */ public Icon moveUpIcon; /** The icon for move-down type actions */ public Icon moveDownIcon; /** The icon for add/new actions (paper+) */ public Icon addIcon; /** The icon for cut actions (scissors) */ public Icon cutIcon; /** The icon for copy actions (two pages) */ public Icon copyIcon; /** The icon for paste actions (clipboard) */ public Icon pasteIcon; /** The icon for delete actions (a trash can) */ public Icon deleteIcon; /** The icon for getting help */ public Icon helpIcon; /** The icon for returning to a previous HTML page */ public Icon htmlBackIcon; /** The icon for returning to the initial HTML page */ public Icon htmlHomeIcon; /** The icon for groups, etc. in the tree that are on */ public Icon treeOnIcon; /** The icon for groups, etc. in the tree that are off */ public Icon treeOffIcon; /** Icons for rotations, coded by Axis and Plus/Minus */ public Icon rotXpIcon, rotXmIcon, rotYpIcon, rotYmIcon, rotZpIcon, rotZmIcon; //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public KingPrefs() { super(); // Self-awareness jarFileDirectory = locateJarFile(); // Default settings Props defaults = new Props(); loadFromJar(defaults); this.setDefaults(defaults); // User settings loadFromFile(); //this.list(SoftLog.err); // Resources // Icon that's displayed in the corner of the main window windowIcon = new ImageIcon(getClass().getResource("images/kingicon20.png")).getImage(); stepBackIcon = new ImageIcon(getClass().getResource("images/StepBack16.gif")); stepForwardIcon = new ImageIcon(getClass().getResource("images/StepForward16.gif")); moveUpIcon = new ImageIcon(getClass().getResource("images/Up16.gif")); moveDownIcon = new ImageIcon(getClass().getResource("images/Down16.gif")); addIcon = new ImageIcon(getClass().getResource("images/Add16.gif")); cutIcon = new ImageIcon(getClass().getResource("images/Cut16.gif")); copyIcon = new ImageIcon(getClass().getResource("images/Copy16.gif")); pasteIcon = new ImageIcon(getClass().getResource("images/Paste16.gif")); deleteIcon = new ImageIcon(getClass().getResource("images/Delete16.gif")); helpIcon = new ImageIcon(getClass().getResource("images/Help16.gif")); htmlBackIcon = new ImageIcon(getClass().getResource("images/Back24.gif")); htmlHomeIcon = new ImageIcon(getClass().getResource("images/Home24.gif")); treeOnIcon = new ImageIcon(getClass().getResource("images/tree-on.png")); treeOffIcon = new ImageIcon(getClass().getResource("images/tree-off.png")); rotXpIcon = new ImageIcon(getClass().getResource("images/rotxp.png")); rotXmIcon = new ImageIcon(getClass().getResource("images/rotxm.png")); rotYpIcon = new ImageIcon(getClass().getResource("images/rotyp.png")); rotYmIcon = new ImageIcon(getClass().getResource("images/rotym.png")); rotZpIcon = new ImageIcon(getClass().getResource("images/rotzp.png")); rotZmIcon = new ImageIcon(getClass().getResource("images/rotzm.png")); } //}}} //{{{ locateJarFile //################################################################################################## /** * Calculates the current location in the local filesystem * of the JAR file that holds king/version.props * (presumbably, king.jar). * @return null if the JAR cannot be located or is not local */ File locateJarFile() { URL url = this.getClass().getResource("version.props"); File f = null; try { f = Strings.jarUrlToFile(url); if(!f.isDirectory()) f = f.getParentFile(); } catch(IllegalArgumentException ex) { ex.printStackTrace(SoftLog.err); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } catch(SecurityException ex) { ex.printStackTrace(SoftLog.err); } return f; } //}}} //{{{ loadFromJar, loadFromFile, loadFromURL //################################################################################################## /** Returns true on success, false on failure */ boolean loadFromJar(Properties loadInto) { try { /* Plugins aren't usually on the real classpath, so this isn't needed. * / // Defaults from JAR file: ClassLoader loader = this.getClass().getClassLoader(); Enumeration urls = loader.getResources("king/king_prefs"); // no leading slash while(urls.hasMoreElements()) { try { InputStream is = ((URL)urls.nextElement()).openStream(); loadInto.load(is); is.close(); } catch(IOException ex) { SoftLog.err.println("Preferences loading error: "+ex.getMessage()); } } /* Plugins aren't usually on the real classpath, so this isn't needed. */ // Single file code: InputStream is = this.getClass().getResourceAsStream("king_prefs"); loadInto.load(is); is.close(); is = this.getClass().getResourceAsStream("version.props"); loadInto.load(is); is.close(); is = this.getClass().getResourceAsStream("buildnum.props"); loadInto.load(is); is.close(); } catch(NullPointerException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); return false; } return true; } /** Returns true on success, false on failure */ public boolean loadFromFile() { try { // Home directory: .king_prefs File propfile = new File(System.getProperty("user.home") + System.getProperty("file.separator") + ".king_prefs"); if(propfile.exists()) { InputStream is = new BufferedInputStream(new FileInputStream(propfile)); this.load(is); is.close(); SoftLog.err.println("Loaded preferences from "+propfile.toString()); } } catch(NullPointerException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(SecurityException ex) { return false; } return true; } /** Returns true on success, false on failure */ public boolean loadFromURL(URL url) { try { // Defaults from JAR file: InputStream is = url.openStream(); this.load(is); is.close(); } catch(NullPointerException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(SecurityException ex) { ex.printStackTrace(SoftLog.err); return false; } return true; } //}}} //{{{ storeToFile //################################################################################################## /** Returns true on success, false on failure */ public boolean storeToFile() { this.minimizeDifferences(); // store only changes from the defaults try { // Home directory: .king_prefs File propfile = new File(System.getProperty("user.home") + System.getProperty("file.separator") + ".king_prefs"); PrintStream os = new PrintStream(new BufferedOutputStream(new FileOutputStream(propfile))); os.println(PROPS_HEADER); this.store(os, ""); os.close(); SoftLog.err.println("Stored preferences to "+propfile.toString()); } catch(NullPointerException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(SecurityException ex) { return false; } return true; } //}}} //{{{ checkVersion, newerVersionAvailable //################################################################################################## /** Retrieves a properties file from the given URL and compares version numbers. */ public void checkVersion(URL propsURL, long timeoutMillis) { remoteVersionURL = propsURL; Thread checkThread = new Thread(new ReflectiveRunnable(this, "checkVersionBackground")); checkThread.start(); // NOT run()! start() spawns a new thread; run() would just do the action from here! // If the URL hasn't connected in time, we leave it running and return to our business. try { checkThread.join(timeoutMillis); } catch(InterruptedException ex) {} } /** Do not call this directly! A target of reflection. */ public void checkVersionBackground() { if(remoteVersionURL == null) return; Props remote = new Props(); try { InputStream is = remoteVersionURL.openStream(); remote.load(is); is.close(); } //catch(NullPointerException ex) { ex.printStackTrace(SoftLog.err); return; } //catch(IOException ex) { ex.printStackTrace(SoftLog.err); return; } //catch(SecurityException ex) { ex.printStackTrace(SoftLog.err); return; } catch(Exception ex) { SoftLog.err.println("Unable to check for new version: "+ex.getMessage()); SoftLog.err.println("You can disable version checking under Edit | Configure."); return; } String ourVer = this.getString("version"); String newVer = remote.getString("version", null); if(newVer != null && Strings.compareVersions(ourVer, newVer) < 0) this.newerVersionAvail = true; // volatile } public boolean newerVersionAvailable() { return newerVersionAvail; } //}}} //{{{ empty //################################################################################################## //}}} }//class king-2.21.120420/king/1.x_src/king/KinTree.java0000644000000000000000000010405011531212674017156 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; //import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.tree.*; //import gnu.regexp.*; import driftwood.gui.*; import driftwood.util.*; //}}} /** * KinTree is the kinemage-browsing tree component used for group-level editing. * Note that tree models are implemented by individual kinemages since Java 1.3 doesn't allow * an empty (i.e. root == null) tree model. * *

Begun on Sun Jun 30 20:20:49 EDT 2002 *
Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. */ public class KinTree //extends ... implements ... { //{{{ Static fields //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JFrame frame; JTree tree; JPopupMenu menu; GroupEditor groupEditor; ReflectiveAction acNew, acDelete, acProperties, acTransform, acVisible, acCut, acCopy, acPaste, acUp, acDown; MutableTreeNode clipboard = null; // destination for cut/paste events boolean didEdit = false; // did this component initiate the edit? //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public KinTree(KingMain kmain) { kMain = kmain; DefaultTreeModel model = kMain.getTreeModel(); if(model != null) model.reload(); tree = new JTree(model); tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); tree.setEditable(false); tree.setRootVisible(true); tree.setShowsRootHandles(true); // This will eliminate the annoying menu/tree interactions // where Alt-X also selects an item beginning with 'X' tree.setUI(new NullTreeUI()); // Provides feedback on whether things are on or off tree.setCellRenderer(new OnOffRenderer()); initActions(); buildMenu(); buildGUI(); groupEditor = new GroupEditor(kMain, frame); } //}}} //{{{ initActions //################################################################################################## private void initActions() { KingPrefs prefs = kMain.getPrefs(); acNew = new ReflectiveAction("New (sub)group", prefs.addIcon, this, "onNewGroup"); acNew.setTooltip("Create a new group or subgroup below the highlighted one"); acNew.setMnemonic(KeyEvent.VK_N); acNew.setCommandKey("new"); acNew.setAccelerator(KeyEvent.VK_INSERT, 0); acNew.bind(tree); acDelete = new ReflectiveAction("Delete", prefs.deleteIcon, this, "onDelete"); acDelete.setTooltip("Discard the highlighted object from the hierarchy"); acDelete.setMnemonic(KeyEvent.VK_D); acDelete.setCommandKey("delete"); acDelete.setAccelerator(KeyEvent.VK_DELETE, 0); acDelete.bind(tree); acProperties = new ReflectiveAction("Properties", null, this, "onProperties"); acProperties.setTooltip("Edit properties associated with this object"); acProperties.setMnemonic(KeyEvent.VK_R); acProperties.setCommandKey("properties"); acProperties.setAccelerator(KeyEvent.VK_ENTER, 0); acProperties.bind(tree); acTransform = new ReflectiveAction("Transform", null, this, "onTransform"); acTransform.setTooltip("Rotate, translate, or scale the highlighted object"); acTransform.setMnemonic(KeyEvent.VK_T); acVisible = new ReflectiveAction("Show/Hide", null, this, "onToggleVisibility"); acVisible.setTooltip("Turn on (off) the button that controls this object"); acVisible.setMnemonic(KeyEvent.VK_S); acVisible.setCommandKey("toggle-visible"); acVisible.setAccelerator(KeyEvent.VK_SLASH, 0); acVisible.bind(tree); acCut = new ReflectiveAction("Cut", prefs.cutIcon, this, "onCut"); acCut.setTooltip("Extract this object so it can be re-inserted elsewhere"); acCut.setMnemonic(KeyEvent.VK_C); acCut.setCommandKey("cut"); acCut.setAccelerator(KeyEvent.VK_X, UIMenus.MENU_ACCEL_MASK); acCut.bind(tree); acCopy = new ReflectiveAction("Copy", prefs.copyIcon, this, "onCopy"); acCopy.setTooltip("Duplicate this object and place it on the clipboard"); acCopy.setMnemonic(KeyEvent.VK_Y); acCopy.setCommandKey("copy"); acCopy.setAccelerator(KeyEvent.VK_C, UIMenus.MENU_ACCEL_MASK); acCopy.bind(tree); acPaste = new ReflectiveAction("Paste", prefs.pasteIcon, this, "onPaste"); acPaste.setTooltip("Re-insert the last object that was Cut or Copied from the hierarchy"); acPaste.setMnemonic(KeyEvent.VK_P); acPaste.setCommandKey("paste"); acPaste.setAccelerator(KeyEvent.VK_V, UIMenus.MENU_ACCEL_MASK); acPaste.bind(tree); acUp = new ReflectiveAction("Move up", prefs.moveUpIcon, this, "onUp"); acUp.setTooltip("Move this object toward the top of the list of its peers"); acUp.setMnemonic(KeyEvent.VK_U); acUp.setCommandKey("up"); acUp.setAccelerator(KeyEvent.VK_UP, UIMenus.MENU_ACCEL_MASK); acUp.bind(tree); acDown = new ReflectiveAction("Move down", prefs.moveDownIcon, this, "onDown"); acDown.setTooltip("Move this object toward the bottom of the list of its peers"); acDown.setMnemonic(KeyEvent.VK_O); acDown.setCommandKey("down"); acDown.setAccelerator(KeyEvent.VK_DOWN, UIMenus.MENU_ACCEL_MASK); acDown.bind(tree); } //}}} //{{{ buildMenu //################################################################################################## private void buildMenu() { menu = new JPopupMenu(); menu.setInvoker(this.getTree()); JMenuItem mNew = new JMenuItem(acNew); JMenuItem mDelete = new JMenuItem(acDelete); JMenuItem mProperties = new JMenuItem(acProperties); JMenuItem mTransform = new JMenuItem(acTransform); JMenuItem mVisible = new JMenuItem(acVisible); JMenuItem mCut = new JMenuItem(acCut); JMenuItem mCopy = new JMenuItem(acCopy); JMenuItem mPaste = new JMenuItem(acPaste); JMenuItem mUp = new JMenuItem(acUp); JMenuItem mDown = new JMenuItem(acDown); // assemble menu here! menu.add(mVisible); menu.add(mProperties); menu.addSeparator(); menu.add(mCut); menu.add(mCopy); menu.add(mPaste); menu.add(mDelete); } //}}} //{{{ buildGUI //################################################################################################## private void buildGUI() { frame = new JFrame(); frame = new JFrame("Hierarchy window"); frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); frame.setIconImage(kMain.getPrefs().windowIcon); Container content = frame.getContentPane(); content.setLayout(new BorderLayout()); JScrollPane treeScroll = new JScrollPane(this.getTree()); Dimension dim = treeScroll.getPreferredSize(); dim.width = 300; treeScroll.setPreferredSize(dim); content.add(treeScroll, BorderLayout.CENTER); JButton btnNew = new JButton(acNew); btnNew.setHorizontalAlignment(SwingConstants.LEFT); JButton btnCut = new JButton(acCut); btnCut.setHorizontalAlignment(SwingConstants.LEFT); JButton btnCopy = new JButton(acCopy); btnCopy.setHorizontalAlignment(SwingConstants.LEFT); JButton btnPaste = new JButton(acPaste); btnPaste.setHorizontalAlignment(SwingConstants.LEFT); JButton btnUp = new JButton(acUp); btnUp.setHorizontalAlignment(SwingConstants.LEFT); JButton btnDown = new JButton(acDown); btnDown.setHorizontalAlignment(SwingConstants.LEFT); JButton btnDelete = new JButton(acDelete); btnDelete.setHorizontalAlignment(SwingConstants.LEFT); JButton btnVisible = new JButton(acVisible); btnVisible.setHorizontalAlignment(SwingConstants.LEFT); JButton btnProperties = new JButton(acProperties); btnProperties.setHorizontalAlignment(SwingConstants.LEFT); JButton btnTransform = new JButton(acTransform); btnTransform.setHorizontalAlignment(SwingConstants.LEFT); TablePane lBtns = new TablePane(); lBtns.weights(1,0).center().hfill(true); lBtns.addCell(btnVisible).newRow(); lBtns.addCell(btnProperties).newRow(); lBtns.addCell(btnTransform).newRow(); lBtns.addCell(lBtns.strut(0,16)).newRow(); lBtns.addCell(btnNew).newRow(); lBtns.addCell(btnCut).newRow(); lBtns.addCell(btnCopy).newRow(); lBtns.addCell(btnPaste).newRow(); lBtns.addCell(btnUp).newRow(); lBtns.addCell(btnDown).newRow(); lBtns.addCell(lBtns.strut(0,16)).newRow(); lBtns.addCell(btnDelete).newRow(); content.add(lBtns, BorderLayout.WEST); /*TablePane rBtns = new TablePane(); rBtns.weights(1,0).center().hfill(true); rBtns.addCell(btnVisible).newRow(); rBtns.addCell(btnProperties).newRow(); rBtns.addCell(btnTransform).newRow(); content.add(rBtns, BorderLayout.EAST);*/ frame.pack(); } //}}} //{{{ show, hide //################################################################################################## public void show() { if(!frame.isVisible()) { //Window w = kMain.getTopWindow(); //if(w != null) frame.setLocationRelativeTo(w); frame.setLocationRelativeTo(kMain.getTopWindow()); // OK if it's null frame.setVisible(true); } else { frame.toFront(); } } public void hide() { frame.dispose(); } //}}} //{{{ reveal, getTreePath //################################################################################################## /** Makes sure the given AGE is visible in the tree window */ public void reveal(AGE target) { TreePath path = getTreePath(target); tree.scrollPathToVisible(path); tree.setSelectionPath(path); } private TreePath getTreePath(TreeNode leaf) { TreeNode parent = leaf.getParent(); if(parent == null) return new TreePath(leaf); else return getTreePath(parent).pathByAddingChild(leaf); } //}}} //{{{ notifyChange, getTree //################################################################################################## // Called by KingMain when something happens. // Shouldn't be called directly under normal circumstances. void notifyChange(int event_mask) { int doReload = KingMain.EM_SWITCH | KingMain.EM_CLOSE | KingMain.EM_CLOSEALL | (didEdit ? 0 : KingMain.EM_EDIT_GROSS); didEdit = false; if((event_mask & doReload) != 0) { DefaultTreeModel model = kMain.getTreeModel(); tree.setModel(model); if(model != null) model.reload(); } // The combination of these two calls ensures that // the tree is displaying what the model currently holds. tree.treeDidChange(); tree.revalidate(); } public JTree getTree() { return tree; } //}}} //{{{ onToggleVisibility //################################################################################################## /** Turns the selected group/subgroup/list on or off, regardless of whether it has a button accessible. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onToggleVisibility(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; Object node = path.getLastPathComponent(); if(node == null || ! (node instanceof AGE)) return; AGE ag = (AGE)node; ag.setOn(!ag.isOn()); kMain.notifyChange(KingMain.EM_ON_OFF); } //}}} //{{{ onProperties //################################################################################################## public void onProperties(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; Object node = path.getLastPathComponent(); if(node == null || ! (node instanceof AGE)) return; boolean changed = false; if(node instanceof Kinemage) { changed = groupEditor.editKinemage((Kinemage)node); } else if(node instanceof KGroup) { changed = groupEditor.editGroup((KGroup)node); } else if(node instanceof KSubgroup) { changed = groupEditor.editSubgroup((KSubgroup)node); } else if(node instanceof KList) { changed = groupEditor.editList((KList)node); } else { JOptionPane.showMessageDialog(frame, "You can't edit this object's properties.", "Sorry!", JOptionPane.INFORMATION_MESSAGE); } if(changed) { didEdit = true; kMain.notifyChange(KingMain.EM_ON_OFF | KingMain.EM_EDIT_GROSS); } } //}}} //{{{ onTransform //################################################################################################## /** Allows one to translate, rotate, and scale all points beneath the selected group/list. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTransform(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; Object node = path.getLastPathComponent(); if(node == null || ! (node instanceof AGE)) return; groupEditor.transform((AGE)node); // Unnecessary -- occurs when command is exec'd. //kMain.notifyChange(KingMain.EM_EDIT_FINE); } //}}} //{{{ onDelete //################################################################################################## /** Deletes the selected group/subgroup/list completely, removing it from the kinemage */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDelete(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; MutableTreeNode node = (MutableTreeNode)path.getLastPathComponent(); if(node == null) return; if(node instanceof Kinemage) { if(JOptionPane.showConfirmDialog(frame, "Really close the current kinemage?", "Confirm delete", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) { kMain.getStable().closeCurrent(); } return; } DefaultTreeModel model = (DefaultTreeModel)tree.getModel(); if(model != null) { if(!kMain.prefs.getBoolean("treeConfirmDelete") || JOptionPane.showConfirmDialog(frame, "Really delete the selected item, '"+node.toString()+"'?", "Confirm delete", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) { model.removeNodeFromParent(node); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } } didEdit = true; kMain.notifyChange(KingMain.EM_EDIT_GROSS); } //}}} //{{{ onCut, onPaste //################################################################################################## /** Deletes the selected group/subgroup/list from the kinemage, saving it for the next paste command. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onCut(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; MutableTreeNode node = (MutableTreeNode)path.getLastPathComponent(); if(node == null || node instanceof Kinemage) return; DefaultTreeModel model = (DefaultTreeModel)tree.getModel(); if(model != null) { if(clipboard == null || JOptionPane.showConfirmDialog(frame, "An unpasted item is still in the clipboard -- discard it?", "Confirm delete", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) { clipboard = node; model.removeNodeFromParent(node); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } } didEdit = true; kMain.notifyChange(KingMain.EM_EDIT_GROSS); } /** Places the previously cut group/whatever into the currently selected group. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onPaste(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; MutableTreeNode node = (MutableTreeNode)path.getLastPathComponent(); if(node == null) return; DefaultTreeModel model = (DefaultTreeModel)tree.getModel(); if(model != null && clipboard != null) { if(node instanceof Kinemage) { Kinemage kin = (Kinemage)node; if(clipboard instanceof KGroup) { model.insertNodeInto(clipboard, kin, kin.getChildCount()); clipboard.setParent(kin); tree.setSelectionPath(path.pathByAddingChild(clipboard)); clipboard = null; } else if(clipboard instanceof KSubgroup) { KGroup group = new KGroup(kin, "New group"); model.insertNodeInto(group, node, node.getChildCount()); path = path.pathByAddingChild(group); model.insertNodeInto(clipboard, group, group.getChildCount()); clipboard.setParent(group); tree.setSelectionPath(path.pathByAddingChild(clipboard)); clipboard = null; } else if(clipboard instanceof KList) { KGroup group = new KGroup(kin, "New group"); model.insertNodeInto(group, node, node.getChildCount()); path = path.pathByAddingChild(group); KSubgroup subgroup = new KSubgroup(group, "New subgroup"); model.insertNodeInto(subgroup, group, group.getChildCount()); path = path.pathByAddingChild(subgroup); model.insertNodeInto(clipboard, subgroup, subgroup.getChildCount()); clipboard.setParent(subgroup); tree.setSelectionPath(path.pathByAddingChild(clipboard)); clipboard = null; } else failPaste(); }//node is Kinemage else if(node instanceof KGroup) { KGroup group = (KGroup)node; if(clipboard instanceof KGroup && (!kMain.prefs.getBoolean("treeConfirmMerge") || JOptionPane.showConfirmDialog(frame, "Merge these two groups?", "Confirm merge", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION)) { KSubgroup toInsert; for(Iterator iter = ((AGE)clipboard).iterator(); iter.hasNext(); ) { toInsert = (KSubgroup)iter.next(); model.insertNodeInto(toInsert, group, group.getChildCount()); toInsert.setParent(group); } tree.setSelectionPath(path); clipboard = null; } else if(clipboard instanceof KSubgroup) { model.insertNodeInto(clipboard, group, group.getChildCount()); clipboard.setParent(group); tree.setSelectionPath(path.pathByAddingChild(clipboard)); clipboard = null; } else if(clipboard instanceof KList) { KSubgroup subgroup = new KSubgroup(group, "New subgroup"); model.insertNodeInto(subgroup, group, group.getChildCount()); path = path.pathByAddingChild(subgroup); model.insertNodeInto(clipboard, subgroup, subgroup.getChildCount()); clipboard.setParent(subgroup); tree.setSelectionPath(path.pathByAddingChild(clipboard)); clipboard = null; } else failPaste(); }//node is KGroup else if(node instanceof KSubgroup) { KSubgroup subgroup = (KSubgroup)node; if(clipboard instanceof KSubgroup && (!kMain.prefs.getBoolean("treeConfirmMerge") || JOptionPane.showConfirmDialog(frame, "Merge these two subgroups?", "Confirm merge", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION)) { KList toInsert; for(Iterator iter = ((AGE)clipboard).iterator(); iter.hasNext(); ) { toInsert = (KList)iter.next(); model.insertNodeInto(toInsert, subgroup, subgroup.getChildCount()); toInsert.setParent(subgroup); } tree.setSelectionPath(path); clipboard = null; } else if(clipboard instanceof KList) { model.insertNodeInto(clipboard, subgroup, subgroup.getChildCount()); clipboard.setParent(subgroup); tree.setSelectionPath(path.pathByAddingChild(clipboard)); clipboard = null; } else failPaste(); }//node is KSubgroup else if(node instanceof KList) { KList list = (KList)node; if(clipboard instanceof KList) { KList toMerge = (KList)clipboard; if(! toMerge.getType().equals(list.getType()) ) { JOptionPane.showMessageDialog(frame, "Cannot merge lists: type mismatch.", "Sorry!", JOptionPane.ERROR_MESSAGE); } else if(!kMain.prefs.getBoolean("treeConfirmMerge") || JOptionPane.showConfirmDialog(frame, "Merge these two lists? (Some properties\nof the pasted list may be lost or altered.)", "Confirm merge", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) { list.children.addAll(toMerge.children); for(Iterator iter = toMerge.iterator(); iter.hasNext(); ) { ((KPoint)iter.next()).setOwner(list); } tree.setSelectionPath(path); clipboard = null; } } else failPaste(); }//node is KList else failPaste(); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } didEdit = true; kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); } void failPaste() { JOptionPane.showMessageDialog(frame, "You can't paste that here.\nPut it higher up in the hierarchy.", "Sorry!", JOptionPane.ERROR_MESSAGE); } //}}} //{{{ onCopy //################################################################################################## /** Duplicates the selected group/subgroup/list from the kinemage, saving it for the next paste command. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onCopy(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; MutableTreeNode node = (MutableTreeNode)path.getLastPathComponent(); if(node == null || node instanceof Kinemage) return; DefaultTreeModel model = (DefaultTreeModel)tree.getModel(); if(model != null) { if(clipboard == null || JOptionPane.showConfirmDialog(frame, "An unpasted item is still in the clipboard -- discard it?", "Confirm delete", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) { try { clipboard = (MutableTreeNode) ((AGE)node).clone(); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } catch(CloneNotSupportedException ex) { ex.printStackTrace(SoftLog.err); } catch(ClassCastException ex) { ex.printStackTrace(SoftLog.err); } } } didEdit = true; kMain.notifyChange(KingMain.EM_EDIT_GROSS); } //}}} //{{{ onUp, onDown //################################################################################################## /** Moves the selected group/subgroup/list "up" the list of buttons. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUp(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; TreePath parentpath = path.getParentPath(); if(parentpath == null) return; MutableTreeNode childnode = (MutableTreeNode)path.getLastPathComponent(); MutableTreeNode parentnode = (MutableTreeNode)parentpath.getLastPathComponent(); if(childnode == null || parentnode == null) return; DefaultTreeModel model = (DefaultTreeModel)tree.getModel(); if(model != null) { int index = model.getIndexOfChild(parentnode, childnode); if(index > 0) { model.removeNodeFromParent(childnode); model.insertNodeInto(childnode, parentnode, index-1); tree.setSelectionPath(path); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } } didEdit = true; kMain.notifyChange(KingMain.EM_EDIT_GROSS); } /** Moves the selected group/subgroup/list "down" the list of buttons. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDown(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; TreePath parentpath = path.getParentPath(); if(parentpath == null) return; MutableTreeNode childnode = (MutableTreeNode)path.getLastPathComponent(); MutableTreeNode parentnode = (MutableTreeNode)parentpath.getLastPathComponent(); if(childnode == null || parentnode == null) return; DefaultTreeModel model = (DefaultTreeModel)tree.getModel(); if(model != null) { int index = model.getIndexOfChild(parentnode, childnode); if(index < model.getChildCount(parentnode) - 1) { model.removeNodeFromParent(childnode); model.insertNodeInto(childnode, parentnode, index+1); tree.setSelectionPath(path); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } } didEdit = true; kMain.notifyChange(KingMain.EM_EDIT_GROSS); } //}}} //{{{ onNewGroup //################################################################################################## /** Places a new, empty group into the currently selected group. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onNewGroup(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; MutableTreeNode node = (MutableTreeNode)path.getLastPathComponent(); if(node == null || ! (node instanceof AGE)) return; DefaultTreeModel model = (DefaultTreeModel)tree.getModel(); if(model == null) return; if(node instanceof Kinemage) { KGroup group = new KGroup((Kinemage)node, "New group"); model.insertNodeInto(group, node, 0); tree.setSelectionPath(path.pathByAddingChild(group)); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); didEdit = true; kMain.notifyChange(KingMain.EM_EDIT_GROSS); } else if(node instanceof KGroup) { KSubgroup subgroup = new KSubgroup((KGroup)node, "New subgroup"); model.insertNodeInto(subgroup, node, 0); tree.setSelectionPath(path.pathByAddingChild(subgroup)); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); didEdit = true; kMain.notifyChange(KingMain.EM_EDIT_GROSS); } else { JOptionPane.showMessageDialog(frame, "You can't create a group/subgroup here.\nSelect the kinemage or a group and try again.", "Sorry!", JOptionPane.INFORMATION_MESSAGE); } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ INNER CLASS: OnOffRenderer //################################################################################################## class OnOffRenderer extends DefaultTreeCellRenderer { public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { Component renderer = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); TreePath path = tree.getPathForRow(row); if(path != null) { TreeNode node = (TreeNode) path.getLastPathComponent(); if(node != null && node instanceof AGE) { AGE age = (AGE) node; if(age.isOn()) this.setIcon(kMain.getPrefs().treeOnIcon); else this.setIcon(kMain.getPrefs().treeOffIcon); } } return renderer; } } //}}} //{{{ INNER CLASS: NullTreeUI //################################################################################################## //### NullTreeUI ################################################################################## //################################################################################################## /** * Avoids selecting tree items by letter when using menu mnemonic keys. * Ignores all normal key presses, but navigation is handled through * InputMap/ActionMap, so we don't have any problems. * * See http://forum.java.sun.com/thread.jsp?forum=57&thread=242078 */ class NullTreeUI extends javax.swing.plaf.basic.BasicTreeUI { protected KeyListener createKeyListener() { return new NullKeyHandler(); } protected MouseListener createMouseListener() { return new PopupMouseHandler(); } /** A key handler that doesn't highlight things based on letters typed */ class NullKeyHandler extends javax.swing.plaf.basic.BasicTreeUI.KeyHandler { public void keyTyped(KeyEvent ev) { // This would ignore only Ctrl/Alt + keypress //if((ev.getModifiers() & (KeyEvent.ALT_MASK|KeyEvent.CTRL_MASK)) == 0) super.keyTyped(ev); } } /** A mouse handler that can do menu popup on RMB and Edit Properties on double click */ class PopupMouseHandler extends javax.swing.plaf.basic.BasicTreeUI.MouseHandler { public void mouseClicked(MouseEvent ev) { // I can't seem to prevent double click // from expanding / collapsing the tree. if(ev.getClickCount() == 2) KinTree.this.onProperties(null); else super.mouseClicked(ev); } public void mousePressed(MouseEvent ev) { if(ev.isPopupTrigger()) { MouseEvent fakeout = new MouseEvent(ev.getComponent(), ev.getID(), ev.getWhen(), ev.getModifiers() | MouseEvent.BUTTON1_MASK, ev.getX(), ev.getY(), ev.getClickCount(), true); // We have to fake that this is a LMB event in // order for the tree to make a selection! super.mousePressed(fakeout); menu.show(ev.getComponent(), ev.getX(), ev.getY()); } else super.mousePressed(ev); } } }//class(NullTreeUI) //}}} }//class king-2.21.120420/king/1.x_src/king/KinfileIO.java0000644000000000000000000005530111531212674017432 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.util.*; //}}} /** * KinfileIO is a uniform front-end for normal * reading and writing of kinemage files. It handles tracking * of file name and current directory, file name mangling, etc. * * It also allows files to be opened in a background thread * while a progress bar is displayed, thus enhancing the user experience. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Apr 10 14:38:35 EDT 2003 */ public class KinfileIO implements KinLoadListener, ListSelectionListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JFileChooser fileOpenChooser = null; // stays null if we're in an Applet JFileChooser fileSaveChooser = null; // stays null if we're in an Applet File lastOpenedFile = null; File lastSavedFile = null; JDialog urlchooser = null; JList urlList = null; JTextField urlField = null; boolean urlChooserOK = false; JDialog progDialog = null; JProgressBar progBar = null; // These are necessary to make the callback mechanism work, // but we have to be very careful of memory leaks! String fName = null; Kinemage mergeTarget = null; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public KinfileIO(KingMain kmain) { kMain = kmain; initFileChooser(); initURLChooser(); initProgressDialog(); } //}}} //{{{ initFileChooser //################################################################################################## private void initFileChooser() { // Will throw an exception if we're running as an Applet try { SuffixFileFilter fileFilter = new SuffixFileFilter("Kinemage files (*.kin)"); // New suffixes: fileFilter.addSuffix(".kin"); fileFilter.addSuffix(".kin.gz"); // compressed with gzip fileFilter.addSuffix(".kinz"); // compressed with gzip // Old suffixes: fileFilter.addSuffix(".kip"); fileFilter.addSuffix(".kip1"); fileFilter.addSuffix(".kip2"); fileFilter.addSuffix(".kip3"); fileFilter.addSuffix(".kip4"); fileFilter.addSuffix(".kip5"); fileFilter.addSuffix(".kip6"); fileFilter.addSuffix(".kip7"); fileFilter.addSuffix(".kip8"); fileFilter.addSuffix(".kip9"); fileOpenChooser = new JFileChooser(); fileOpenChooser.addChoosableFileFilter(fileFilter); fileOpenChooser.setFileFilter(fileFilter); fileSaveChooser = new JFileChooser(); fileSaveChooser.addChoosableFileFilter(fileFilter); fileSaveChooser.setFileFilter(fileFilter); String currdir = System.getProperty("user.dir"); if(currdir != null) { fileOpenChooser.setCurrentDirectory(new File(currdir)); fileSaveChooser.setCurrentDirectory(new File(currdir)); } } catch(SecurityException ex) {} } //}}} //{{{ initURLChooser //################################################################################################## void initURLChooser() { // Make actual URL chooser urlList = new FatJList(150, 12); JApplet applet = kMain.getApplet(); if(applet != null) { String kins = applet.getParameter("kinfileList"); if(kins != null) { String[] kinlist = Strings.explode(kins, ' '); urlList.setListData(kinlist); } } urlList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); urlList.addListSelectionListener(this); JScrollPane listScroll = new JScrollPane(urlList); // Make an (editable) URL line urlField = new JTextField(20); // Make the command buttons JButton btnOK = new JButton(new ReflectiveAction("OK", null, this, "onUrlOk")); JButton btnCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onUrlCancel")); // Put it all together in a content pane TablePane2 cp = new TablePane2(); cp.center().middle().insets(6).memorize(); cp.addCell(listScroll,2,1); cp.newRow(); cp.weights(0,1).addCell(new JLabel("URL:")).hfill(true).addCell(urlField); cp.newRow().startSubtable(2,1).center().insets(1,4,1,4).memorize(); cp.addCell(btnOK).addCell(btnCancel).endSubtable(); urlchooser = new JDialog(kMain.getTopWindow(), "Kinemage URLs", true); urlchooser.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); urlchooser.setContentPane(cp); urlchooser.pack(); urlchooser.setLocationRelativeTo(kMain.getTopWindow()); } //}}} //{{{ initProgressDialog //################################################################################################## private void initProgressDialog() { // Build the progress display dialog... progBar = new JProgressBar(); progBar.setStringPainted(true); // shows % complete progBar.setBorder(BorderFactory.createEmptyBorder(6,6,6,6)); // If this isn't included, progDialog doesn't paint (bug in Java 1.4.0) (reported) JLabel labelNote = new JLabel("Loading kinemage(s)..."); labelNote.setHorizontalAlignment(JLabel.CENTER); labelNote.setBorder(BorderFactory.createEmptyBorder(6,6,6,6)); progDialog = new JDialog(kMain.getTopWindow(), "", true); // true => modal progDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); progDialog.getContentPane().add(progBar, BorderLayout.SOUTH); progDialog.getContentPane().add(labelNote, BorderLayout.NORTH); } //}}} //{{{ notifyChange //################################################################################################## // Called by KingMain when something happens. // Shouldn't be called directly under normal circumstances. void notifyChange(int event_mask) { } //}}} //{{{ askLoadFile, loadFile //################################################################################################## /** * Asks the user to choose a kinemage file to load. * All the kinemages it contains will be added to the stable * or appended to the specified kinemage. * * This function MUST be called from the event-dispatch thread. * This function will not return until all the kinemages have * been loaded. * * @param kin the kinemage into which the opened kinemage(s) * should be merged, or null for them to stand alone. * @return true iff the user choose to open a file */ public boolean askLoadFile(Kinemage kin) { if(fileOpenChooser == null) return false; if(fileOpenChooser.APPROVE_OPTION == fileOpenChooser.showOpenDialog(kMain.getTopWindow())) { File f = fileOpenChooser.getSelectedFile(); loadFile(f, kin); return true; } else return false; } /** Like askLoadFile, but it doesn't ask */ public void loadFile(File f, Kinemage kin) { try { fName = f.getName(); mergeTarget = kin; new KinfileLoader(kMain, new FileInputStream(f), this); // Only reset the filenames if we do a true open if(kin == null) { lastOpenedFile = f; lastSavedFile = null; } progBar.setMaximum((int)f.length()); progBar.setValue(0); progDialog.pack(); progDialog.setLocationRelativeTo(kMain.getTopWindow()); progDialog.setVisible(true); // Execution halts here until ioException() // or loadingComplete() closes the dialog. } catch(IOException ex) { loadingException(ex); } } //}}} //{{{ askLoadURL, onUrlCancel, onUrlOk //################################################################################################## /** * Asks the user to choose a kinemage file to load. * All the kinemages it contains will be added to the stable * or appended to the specified kinemage. * * This function MUST be called from the event-dispatch thread. * This function will not return until all the kinemages have * been loaded. * * @param kin the kinemage into which the opened kinemage(s) * should be merged, or null for them to stand alone. * @return true iff the user choose to open a file */ public boolean askLoadURL(Kinemage kin) { if(urlchooser == null) return false; // Always set the default URL to be the one in kinSource (if specified) try { URL kinURL = kMain.getAppletKinURL(); if(kinURL != null) urlField.setText(kinURL.toString()); } catch(MalformedURLException ex) {} urlchooser.setVisible(true); // execution halts until dialog is closed... if(urlChooserOK) { try { URL kinURL = new URL(urlField.getText()); loadURL(kinURL, kin); return true; } catch(MalformedURLException ex) { loadingException(ex); } } return false; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUrlCancel(ActionEvent ev) { urlChooserOK = false; urlchooser.setVisible(false); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUrlOk(ActionEvent ev) { urlChooserOK = true; urlchooser.setVisible(false); } //}}} //{{{ valueChanged //################################################################################################## /* Gets called when a new URL is picked from the list */ public void valueChanged(ListSelectionEvent ev) { Object o = urlList.getSelectedValue(); if(o == null) {} else { String name = o.toString(); urlField.setText("http://"+name); JApplet applet = kMain.getApplet(); if(applet != null) { try { URL kinURL = new URL(applet.getDocumentBase(), applet.getParameter("kinfileBase")+"/"+name); urlField.setText(kinURL.toString()); } catch(MalformedURLException ex) { SoftLog.err.println(applet.getDocumentBase()); SoftLog.err.println(applet.getParameter("kinfileBase")); SoftLog.err.println(name); ex.printStackTrace(SoftLog.err); } } } } //}}} //{{{ loadURL, loadStream //################################################################################################## /** Like loadFile, but it takes a URL */ public void loadURL(URL url, Kinemage kin) { try { fName = url.getFile(); URLConnection uconn = url.openConnection(); uconn.setAllowUserInteraction(false); uconn.connect(); loadStream(uconn.getInputStream(), uconn.getContentLength(), kin); // Execution halts here until ioException() // or loadingComplete() closes the dialog. } catch(IOException ex) { loadingException(ex); } } /** Like loadFile, but it takes an InputStream. */ public void loadStream(InputStream in, int dataLen, Kinemage kin) { mergeTarget = kin; new KinfileLoader(kMain, in, this); progBar.setMaximum(dataLen); progBar.setValue(0); progDialog.pack(); progDialog.setLocationRelativeTo(kMain.getTopWindow()); progDialog.setVisible(true); // Execution halts here until ioException() // or loadingComplete() closes the dialog. } //}}} //{{{ updateProgress //################################################################################################## /** * Messaged periodically as the parser reads the file. */ public void updateProgress(long charsRead) { progBar.setValue((int)charsRead); } //}}} //{{{ loadingException //################################################################################################## /** * Messaged if anything is thrown during the loading process. * This generally means loadingComplete() won't be called. */ public void loadingException(Throwable t) { progDialog.setVisible(false); t.printStackTrace(SoftLog.err); JOptionPane.showMessageDialog(kMain.getTopWindow(), "The file '"+fName+"'\ncould not be opened due to an exception:\n"+t.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); // Avoid memory leaks! mergeTarget = null; } //}}} //{{{ loadingComplete //################################################################################################## /** * Messaged if and when loading finished successfully. */ public void loadingComplete(KinfileParser parser) { for(Iterator kinIter = parser.getKinemages().iterator(); kinIter.hasNext(); ) { ((Kinemage)kinIter.next()).initAll(); } if(mergeTarget == null) { kMain.getStable().append(parser.getKinemages()); } else { for(Iterator kinIter = parser.getKinemages().iterator(); kinIter.hasNext(); ) { mergeTarget.appendKinemage((Kinemage)kinIter.next()); } kMain.notifyChange(KingMain.EM_SWITCH | KingMain.EM_NEWVIEW | KingMain.EM_EDIT_GROSS); } if(kMain.getTextWindow() != null) { kMain.getTextWindow().appendText(parser.getText()); } // Avoid memory leaks! mergeTarget = null; // Last step: close the dialog and let execution continue in the calling thread progDialog.setVisible(false); } //}}} //{{{ askSaveFile, saveFile //################################################################################################## public void askSaveFile() { askSaveFile(kMain.getStable().children); } public void askSaveFile(Kinemage kin) { askSaveFile(Collections.singleton(kin)); } /** * Asks the user to choose a file where all open kinemages will be written. * * This function MUST be called from the event-dispatch thread. * This function will not return until all the kinemages have * been saved. */ public void askSaveFile(Collection kinsToSave) { if(fileSaveChooser == null) return; setMangledName(); if(fileSaveChooser.APPROVE_OPTION == fileSaveChooser.showSaveDialog(kMain.getTopWindow())) { File f = fileSaveChooser.getSelectedFile(); if( !f.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { saveFile(f, kinsToSave); } } } public void saveFile(File f) { saveFile(f, kMain.getStable().children); } /** Like askSaveFile, but doesn't ask */ public void saveFile(File f, Collection kinsToSave) { // Don't write out empty groups/subgroups/lists or useless masters for(Iterator iter = kinsToSave.iterator(); iter.hasNext(); ) { Kinemage k = (Kinemage) iter.next(); k.removeEmptyAGEs(); k.removeUnusedMasters(); } try { Writer w = new FileWriter(f); KinWriter kw = new KinWriter(); kw.save(w, kMain.getTextWindow().getText(), kinsToSave); lastSavedFile = f; w.close(); for(Iterator iter = kinsToSave.iterator(); iter.hasNext(); ) { Kinemage k = (Kinemage) iter.next(); k.setModified(false); } } catch(IOException ex) { ex.printStackTrace(SoftLog.err); JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } // We may have removed masters/groups/etc on save kMain.notifyChange(KingMain.EM_EDIT_GROSS); } //}}} //{{{ setMangledName //################################################################################################## /** * Sets the filename in the fileSaveChooser to reflect the standard versioning scheme: * foo.kin, foo.1.kin, foo.2.kin, ... , foo.9.kin, foo.a.kin, ... , foo.z.kin */ void setMangledName() { if(fileSaveChooser == null) return; File f; if(lastSavedFile != null) f = lastSavedFile; else if(lastOpenedFile != null) f = lastOpenedFile; else return; String name = f.getName(); // Remove .gz extension -- we're not compressed anymore if(name.endsWith(".gz")) name = name.substring(0, name.length()-3); // Do version numbering for .kin files if(name.endsWith(".kin")) { if(name.length() > 6 && name.charAt(name.length()-6) == '.') { String prefix = name.substring(0, name.length()-6); char version = name.charAt(name.length()-5); if('0' <= version && version < '9') name = prefix+"."+(++version)+".kin"; else if(version == '9') name = prefix+".a.kin"; else if('a' <= version && version < 'z') name = prefix+"."+(++version)+".kin"; else name = prefix+"."+version+".1.kin"; } else { String prefix = name.substring(0, name.length()-4); name = prefix+".1.kin"; } } f = new File(f.getParent(), name); fileSaveChooser.setCurrentDirectory(f); fileSaveChooser.setSelectedFile(f); } //}}} //{{{ askSaveURL, saveURL //################################################################################################## /** * Asks the user to choose a file where all open kinemages will be written. * * This function MUST be called from the event-dispatch thread. * This function will not return until all the kinemages have * been saved. */ public void askSaveURL() { String fileName = (String) JOptionPane.showInputDialog(kMain.getTopWindow(), "Enter a new name for the file (overwrite generally NOT allowed):", "Save file as", JOptionPane.PLAIN_MESSAGE); if(fileName != null) saveURL(fileName); } /** Like askSaveURL, but doesn't ask */ public void saveURL(String fileName) { try { JApplet applet = kMain.getApplet(); if(applet == null) return; String handlerURL = applet.getParameter("kinfileSaveHandler"); if(handlerURL == null) return; URL url = new URL(applet.getDocumentBase(), handlerURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // This is nice for maximum web-server / java-client compatibility, // but is technically optional. //conn.setRequestProperty("Content-Length", encData.length()); conn.setRequestProperty("User-Agent", "Mozilla/4.0"); conn.setRequestMethod("POST"); URLEncodedOutputStream ueos = new URLEncodedOutputStream(new BufferedOutputStream(conn.getOutputStream())); Writer w = new OutputStreamWriter(ueos); ueos.setEncoding(false); w.write("fileName="); w.flush(); ueos.setEncoding(true); w.write(fileName); w.flush(); ueos.setEncoding(false); w.write("&fileContents="); w.flush(); ueos.setEncoding(true); KinWriter kw = new KinWriter(); kw.save(w, kMain.getTextWindow().getText(), kMain.getStable().children); w.close(); SoftLog.err.println("HTTP response: "+conn.getResponseCode()+" "+conn.getResponseMessage()); streamcopy(conn.getInputStream(), SoftLog.err); for(Iterator iter = kMain.getStable().iterator(); iter.hasNext(); ) { Kinemage k = (Kinemage) iter.next(); k.setModified(false); } } catch(Exception ex) // IOException or MalformedURLException { ex.printStackTrace(SoftLog.err); JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/installer/0000755000000000000000000000000011756425773014561 5ustar rootrootking-2.21.120420/king/installer/king/0000755000000000000000000000000011744310054015467 5ustar rootrootking-2.21.120420/king/installer/king/kinglocales/0000755000000000000000000000000011744310054017762 5ustar rootrootking-2.21.120420/king/installer/king/kinglocales/custom_en0000644000000000000000000001131011531212656021700 0ustar rootroot#External strings for en #Tue Feb 07 11:25:35 EST 2006 ShortcutLocAction.5351b996a760.macPrompt=Where would you like to create aliases? InstallBundle.5351b977a760.bundleName=Application Billboard.5351b96ea760.imageName=billboard_default.png InstallFinishAction.5351b9a9a760.rebootRequiredMessage=You need to restart the system to complete the installation. InstallSummary.5351b9a4a760.title=Pre-Installation Summary InstallFinishAction.5351b9a9a760.installSuccessMessage=Congratulations\! $PRODUCT_NAME$ has been successfully installed to\:\n\n $USER_INSTALL_DIR$\n\nPress "Done" to quit the installer. CreateShortcut.4186f7408536.destinationName=KiNG user's manual ShortcutLocAction.5351b996a760.winTitle=Choose Shortcut Folder InstallFinishAction.5351b9a9a760.rebootNotNeededMessage= InstallSet.53607f1ca766.imagePath=com/zerog/ia/installer/images/ CreateShortcut.5351d368a765.workingDir= InstallDirAction.5351b991a760.prompt=Where Would You Like to Install? InstallerInfoData.5351b8bfa760.vendorName=The Richardson Lab at Duke University InstallSet.53607f1ca766.installSetName=Custom CreateShortcut.535afb16a766.workingDir= Installer.5351b8a1a760.installLabels.05=Install Complete Installer.5351b8a1a760.installLabels.04=Installing... InstallFinishAction.5351b9a9a760.installErrorMessage=The installation of $PRODUCT_NAME$ is finished, but some errors occurred during the install. Please see the installation log for details. Installer.5351b8a1a760.installLabels.03=Pre-Installation Summary MakeExecutable.5351d34da762.destinationName=king Installer.5351b8a1a760.installLabels.02=Choose $SHORTCUT_NAME$ Folder Installer.5351b8a1a760.installLabels.01=Choose Install Folder Installer.5351b8a1a760.installLabels.00=Introduction InstallSet.5351b976a760.imageName=typical.png InstallSet.5351b976a760.description=This will install all the files for your application. InstallerInfoData.5351b8bfa760.installerName=kinginst CreateShortcut.535afb16a766.args= InstallFinishAction.5351b9a9a760.installFatalMessage=The installation of $PRODUCT_NAME$ is finished, but some serious errors occurred during the install. Please see the installation log for details. CreateShortcut.4186f7408536.args= InstallerInfoData.5351b8bfa760.vendorURL=http\://kinemage.biochem.duke.edu CreateShortcut.535afb16a766.destinationName=KiNG user's manual (PDF) CreateShortcut.5351d368a765.destinationName=KiNG ShortcutLocAction.5351b996a760.unixTitle=Choose Link Folder InstallFrameConfigurator.5351b8e6a760.uninstallerTitle=Uninstall $PRODUCT_NAME$ ShortcutLocAction.5351b996a760.unixPrompt=Where would you like to create links? Installer.5351b8a1a760.rulesFailedMessage=The installer cannot run on your configuration. It will now quit. Billboard.5351b96ea760.imagePath=com/zerog/ia/installer/images/ InstallDirAction.5351b991a760.stepTitle=Choose Install Folder InstallFinishAction.5351b9a9a760.windowTitle=Install Complete InstallFinishAction.5351b9a9a760.installWarningMessage=The installation of $PRODUCT_NAME$ is finished, but some warnings occurred during the install. Please see the installation log for details. InstallSet.53607f1ca766.imageName=customIcon.png InstallSummary.5351b9a4a760.stepPrompt=Please Review the Following Before Continuing\: ShortcutLocAction.5351b996a760.macTitle=Choose Alias Folder InstallSet.53607f1ca766.description=Choose this option to customize the features to be installed. InstallerInfoData.5351b8bfa760.supportURL=http\://kinemage.biochem.duke.edu IntroAction.5351b98aa760.message=InstallAnywhere will guide you through the installation of $PRODUCT_NAME$.\n\nIt is strongly recommended that you quit all programs before continuing with this installation.\n\nClick the 'Next' button to proceed to the next screen. If you want to change something on a previous screen, click the 'Previous' button.\n\nYou may cancel this installation at any time by clicking the 'Cancel' button. CreateShortcut.5351d368a765.args= CreateShortcut.4186f7408536.workingDir= InstallerInfoData.5351b8bfa760.productDescription= InstallerInfoData.5351b8bfa760.email=ian.davis@duke.edu InstallerInfoData.5351b8bfa760.productName=KiNG InstallFinishAction.5351b9a9a760.rebootRecommendedMessage=You should restart the system to complete the installation. InstallSet.5351b976a760.imagePath=com/zerog/ia/installer/images/ InstallBundle.5351b977a760.description=This installs the application feature. IntroAction.5351b98aa760.stepTitle=Introduction InstallerInfoData.5351b8bfa760.productURL=http\://kinemage.biochem.duke.edu ShortcutLocAction.5351b996a760.winPrompt=Where would you like to create product icons? InstallDirAction.5351b991a760.additionalText= InstallUninstaller.5351ba0ca760.destinationName=Uninstall king InstallerInfoData.5351b8bfa760.installerTitle=KiNG InstallSet.5351b976a760.installSetName=Full Install king-2.21.120420/king/installer/king/kinglocales/ProjectLocalizationInfo.txt0000644000000000000000000001544011531212656025325 0ustar rootroot# InstallAnywhere Localization Information and Mapping File # # This file provides information for the mappings of localization properties # to the action for which the localization is provided. This file is meant # to be used in conjunction with the custom_xx files found in the same # directory. # # Notes on the conventions used in this file: # '+--' denotes a data object that belongs to another given object (it # defines some portion of the properties of its owner object). This # data object possesses one or more properties that are localizable # '|--' denotes a parent-child relationship between two objects (typically, # this relationship is represented visually as a hierarchy or nesting # in the Install task of InstallAnywhere's Advanced Designer) # 'NoEP' denotes an object that exists in the tree, but does not possess any # externalizable/localizable properties # # The relationships described above can be used to help identify the correct # property to configure an object when working with the custom_xx files. # # Product Name: KiNG # Project File: /Users/ian/javadev/king/installer/king/king.iap_xml # Generated: Tue Feb 07 11:25:35 EST 2006 ---- PRE-INSTALL ACTIONS ---- -- IntroAction.5351b98aa760 +-- Help.5351b98ba760 -- InstallDirAction.5351b991a760 +-- Help.5351b992a760 -- ShortcutLocAction.5351b996a760 +-- Help.5351b997a760 -- InstallSummary.5351b9a4a760 +-- Help.5351b9a5a760 ---- POST-INSTALL ACTIONS ---- -- InstallFinishAction.5351b9a9a760 +-- Help.5351b9aaa760 -- RebootAction.5351b9aea760 (NoEP) ---- EXTERNAL ID TREE ---- -- Installer.5351b8a1a760 +-- Help.5351b8b6a760 +-- InstallFrameConfigurator.5351b8e6a760 +-- InstallerInfoData.5351b8bfa760 |-- InstallSet.5351b976a760 |-- InstallBundle.5351b977a760 |-- GhostDirectory.5351b966a760 (NoEP) | |-- InstallDirectory.5351b9b8a760 (NoEP) | | |-- InstallUninstaller.5351ba0ca760 | |-- MakeExecutable.5351d34da762 |-- GhostDirectory.5351d369a765 (NoEP) | |-- CreateShortcut.5351d368a765 | |-- CreateShortcut.4186f7408536 |-- Billboard.5351b96ea760 ---- LEGEND ---- ASCIIFileManipulator ==> Modify Text File - Single File ASCIIFileManipulatorZip ==> Modify Text File - In Archive Billboard ==> Billboard ChooseFile ==> Panel: Choose File ChooseFolder ==> Panel: Choose Folder ChooseInstallSetAction ==> Panel: Choose Install Sets ChooseInstallSetActionConsole ==> Console: Choose Install Sets ChooseJavaVMAction ==> Panel: Choose Java VM ChooseJavaVMActionConsole ==> Console: Choose Java VM CompareRegExpression ==> Match Regular Expression CompareVariable ==> Compare InstallAnywhere Variables CreateDialog ==> Panel: Get User Input - Simple CreateShortcut ==> Create Alias, Link, Shortcut CustomizeBundles ==> Panel: Choose Product Components DisplayMessage ==> Panel: Display Message DisplayMessageConsole ==> Console: Display Message DisplayScrollingMessage ==> Panel: Scrolling Message EditEnvironment ==> Set System Environment Variable Exec ==> Execute Command FindFileOrFolder ==> Panel: Find File/Folder GetPassword ==> Panel: Get Password GetPasswordConsole ==> Console: Get Password GetUserInput ==> Panel: Get User Input - Advanced GetUserInputConsole ==> Console: Get User Input ImportantNoteAction ==> Panel: Important Note ImportantNoteActionConsole ==> Console: Important Note InstallBundle ==> Product Feature InstallCompleteAction ==> Panel: Install Complete InstallCompleteActionConsole ==> Console: Install Complete InstallDirAction ==> Panel: Choose Install Folder InstallDirActionConsole ==> Console: Choose Install Folder InstallFailedAction ==> Panel: Install Failed InstallFailedActionConsole ==> Console: Install Failed InstallFinishAction ==> Panel: Install Complete InstallPanelAction ==> Panel: Custom Code InstallProgressAction ==> Install Progress InstallSet ==> Install Set InstallSummary ==> Panel: Pre-Install Summary InstallSummaryConsole ==> Console: Pre-Install Summary InstallUninstaller ==> Create Uninstaller IntroAction ==> Panel: Introduction IntroActionConsole ==> Console: Introduction LaunchDefaultBrowser ==> Launch Default Browser LicenseAgrAction ==> Panel: License Agreement LicenseAgrActionConsole ==> Console: License Agreement MakeExecutable ==> Create LaunchAnywhere for Java Application MakeRegEntry ==> Set Windows Registry - Single Entry NTServiceController ==> Start, Stop, Pause Windows Service PrintToConsole ==> Output Text to Console PromptUserConsole ==> Console: Show Message Console 'Dialog' ReadyToInstallActionConsole ==> Console: Ready To Install SetSerialNumber ==> Panel: Get Serial Number SetSerialNumberConsole ==> Console: Get Serial Number ShortcutLocAction ==> Panel: Choose Alias, Link, Shortcut Folder ShortcutLocActionConsole ==> Console: Choose Link Folder ShowDialogAction ==> Show Message Dialog SpeedASCIIFileManipulator ==> Modify Text File - Multiple Files UninstallAllOrFeaturesAction ==> Panel: Uninstall All or Specific Features UninstallCompleteAction ==> UninstallCompleteAction UninstallCompleteActionConsole ==> UninstallCompleteActionConsole UninstallIntroAction ==> UninstallIntroAction UninstallIntroActionConsole ==> Console: Uninstall Introduction UninstallProgressAction ==> Uninstall Progress king-2.21.120420/king/installer/king/king.iap_xml0000644000000000000000000023651011531212656020004 0ustar rootroot 53,46,53,46,49,32,78,111,119,32,66,117,105,108,100,32,50,48,51,50 12,42,11,90,83,49,52,48,53,76,81,66,70,67,78,72 3,13,71,77,97,99,32,79,83,32,88,44,32,49,48,46,52,46,52,44,32,112,112,99,59,32,74,97,118,97,32,49,46,51,46,49,95,49,54,44,32,65,112,112,108,101,32,67,111,109,112,117,116,101,114,44,32,73,110,99,46,44,32,104,116,116,112,58,47,47,97,112,112,108,101,46,99,111,109,47,59,32,101,110,44,32,85,83,59,32,77,97,99,82,111,109,97,110 1,0,0,0,72,95,0,0,80,112,112,97,87,98,113,97,113,65,81,51,74,65,78,68,71,68,64,69,66,69,48,79,87,5,2,11,10,21,117,9,1,0,0 false true true false true 522604 false 0 false true 766153 false 0 4 2 2 true true false false 0 false 1 224 438 0 1 0 3 2 0 false 1 false true 2 1 false 1 2 2 false 1 false true true true false false false true 2 3 false 1 2 5 false true true true 2 true 155 2 false false true true true true false 1 -1 false 1 50 0 0 true false false false true true 4 1 0 0 0 false true true false false true false true false false true true false true 3267 false 0 false true 4600 false 0 false true 2063987 false 0 false true 26430 false 0 false true 4449 false 0 false true 23851 false 0 false true 90566 false 0 false true 1671 false 0 true true false true 292526 false 0 false true 85654 false 0 false true 237568 false 0 true true 210723 false 0 false true 148269 false 0 false true 25279 false 0 false true 72918 false 0 false true false false false true 225368 false 0 false true false false false false king-2.21.120420/king/installer/kingicon16.gif0000644000000000000000000000105511531212656017202 0ustar rootrootGIF89aSSV  /.'$#WTF (#/* }d  '*\N5}.7p*u/ @MBu4ڼTYM#;pa->ѶYDTJQ5/mNE%Z{v݋˃|qKyxoPܭROD#NAI=BWJ/(D]O#Kn3LBf82ӂkؒòx}rMqǶ|]пqЗ˿{t]ȢƦsDA8   A@?,iZhX SP5Hd\R+ T-2/?^8O(B*].9I L@^aMDVEJ3;Y>[%1"bU < g6$Fc0=:jjKG4Q`7N_,)C&!#ANx 0@3\Yư@;king-2.21.120420/king/installer/kingicon32.png0000644000000000000000000000350511531212656017221 0ustar rootrootPNG  IHDR szzgAMA|Q cHRMz%u0`:oIDATxbd``0 rw@ h!!4@c<@ >b#9)p1j0|}ݧ 01<}hq103hkk2h+33J3|a2I2<{E/'CXCqy͋~p0C+`5Dl iI q ,~{ *tS B| 6ƒ Vs8@Mo2ßߺ`ll8:][&O>3Π(Y3KO_3L_A^F. 2psq0>apL4XP\pPÿVxɰjmp~3iO o3Wamlgd!1,t/ l `x8&M!3pðWK.5iii1@ý'_`P9ߎ38a+ !A 쬿]+ÜU22hj3{qǏ `pw2e(bb#Û|°u}`fcx 3Wn`gPPRcxL ~`04b8?ߞ0,X{aӞ{-\p9u5 2<{xATO_Ο1,aD[gX da&z _?f`f}3)0q$A p㎏ҁ |  ߞ`8} 0c "2RTfбd:(wpcnK%8M@$9@EE b `vgv)ógOBY6 HrXI8a _cQdر$CZ>% h0Mwpc W`BpSW3l;H [wefp4&\Bq$CUCl*Ze30bxpa6 Êm_} [3_\mp=r{m%"\ ":eh1Df͘` Xs3ܺX\&/`( Gd; `Cg#6o? #AIARs _0\r_D dd0c{-` a(Hg`uOҖ-˳ _0\a'e&CKU$ '[1$fûG~Za`1ȉ p? b" X~^a&0ſ`hpXO 3Ӏ,?BQ'^|0Mw?C B8(!eT9&&f6/_3\ f T=6P!MA_ GN`X.õ;`B , 3󗼎7=?b: @ h@S].IENDB`king-2.21.120420/king/installer/kingicon-orig.png0000644000000000000000000003613311531212656020015 0ustar rootrootPNG  IHDRppK pHYs  gAMA|Q cHRMz%u0`:o_F;IDATxb?@YYYULLL ?~d+w21110222ҁ"77 W^',,֭ Fb"h*;;"Т.\``ā"p@aŰeF? k޿7UTTԀŵ̙3 E ,G#CҲrr޽{K!@a@555U!!!ii]ׯG߿9GOr |ӫF"G(ҥKl ,`HJ9 p/X#F(8FD$8 O>*((#,@L~ji"Grh l bdv+&ia ,Sn޼ *MPr("#nDʅAlb}bRt<x: l0"G";9bvA\q"VAְVDDDǏzV `E"rg[| 4ㄕE@P z @uNX†F[Bf`U/`Ii @L߿G!bu d1 ǏX;ԕCD1IP qi*1cAJM?ƪŽK9x/'3y?yh zG 17eM XBDpx4\P У`7R'"?Pc:0I T3Uli6%H SXNuIr%ȥbsEV W2˨q ,!1nX߃T]cxnqwx`e5}Fw0Qu&t{X8a?fL*uįO9sWA$ UD X,U#Y4Df33 NXj0d9G*9P(ƽz [FF+Gr8Y"Rٶ0Z0f=.`KK"_c#WlGHta o%掂0Md5>H<`ee+x[!,$)B!𕨛XYv L1cж2ɾobJQ|rIPׂ't~\,nɘ(ZCQa 7/D{M965W+pЧQZXϘdน3p S8pL;-w2&&Ũi@,'#[\, ?0DE0`Menn.+y: 3[3\=!Ï _dx7h@nlBo J ^^ e Bb@y`g&_nQa)mY_2X9/ndرs3&Áρz>e>Rvv1!`ɠ*`l ,=CY8@A"_bd3Wa`bxauh"Ľ֙d HAܚO͋` RRz.l:~(ҏzNhX}1S|D햹#f,9Uő`8nGZL`ތxijJ@,tE\AZG,Q{_I2Ig1u[ybsSI sTi[.=ۗX$.  A F. B ~GhbfeX6e) >دlY`;3^ dvbgR+ ) Zn?Ͽ8vopbm9` E%$ .89dd``ax$×o*Sa>19+.^q/oe L?v/ Agv? jJ Y F<6.=,aL@sI~g}ԛg`8~)[> n t>`V/HǀNA!`;;#Ard*,mu@A ts=wp ,Iv10}pR{OA!`$}'+V1H'oh1a'o1\}`` ^]Ypd:r4F `e3X@Cl e8)ؕfb8eX00<{o }`x-۟ 13MP֣`,& w`9_ >a9y"b#\z O@D 1X1+3|:5{ #ç/xu$oO@?vOxp]節 h y JbRl&gx#062$2HMe`{Wp" c 4 {_ynpKI v̛DՓ?8` !!i$1U~1O>3~A\" ~-_`5qK0<{ď M# АX126[n0GgeA Y-g@σJ0 fx 4jl[jD( ذ;?~v+9Ll4U| X,Ұ#d|?<[F`b+ ,7/`}l2|Rρ*|d /` X .[X1WAfx,b~IR@,A} и 9ok_ E&Ш/ nePW$}!9>xp]/>1| `30s'~c6f: J< L, FE 8nPs?70222XWY s4 n3vK>`/åk._{[w*j?ց_^`iT'u\ h?}& 9뇿/^2;;oǐh)2s`.@7Ex#3;O i qSG/_cD (p; i) :V 23VG:48A~9GNK71pֽb701v̀m!!bMcbad` $H od|ǃ~ l 7. $PF%`n`1'w_~t!H䁊M9I`tw  l~cXA_=a4>'ÃNpXbưuy 0  o}f8v !e`>bEvD~10H ~zq¾6x?÷'z0HA\F[EӇꐋ]O\xf3|<+Zl4TxbR4 Á/;]ˠ*AR\"4 Ù+/pG`ߔr"jld *) prw;\[`wOw;؛};14{sX ҄?Bt/`]'OVlsCtbu ]a`xpd l~4, ߰l5O~ u {:x~ qà + ɀ<+/1XsHG3^df}xן8Ft 3R ҒzxcOO320F!,@ >},6MsI%]pd] /lc1d&p#pO?&@ X[|YM1 ַW,u&F,(gz;pQ50ư23sV;mUd|/<\%UlLl V20g d`]_?? |;tÅ_hDP.? I22\ˊϏ7|_6.7qAqY#>M`vXh?OHýb Tfocց 1r0[P ANXB2ܸs o6 B2H0OsO߷{I@9 \b`sH2⏋X C0~@A  52Ȑ?_Hw,`Ud2H?cPRTf ʭ cv#ç rZj Z*xXXૼ>Űif +Wo+@ l;3|Oc ,l$* xyX!cl^;0r3<}3fI & ma .JAT|d{407XC"Tױ22v 53Π=gX=7BïoWYf 0p2|<g dU6@v_x ,-D&&Nx"7`5Gk5) J!=v_ N1ywAYX\#ikw!sP.LzE@svl \NÝ+[Mf5b4|ܩ ?6amҠYv;L0py箾e8HMd@ԋ@FH+Q`d`ֽw 7k1|pQ VPS@XAZ\!h2&\ߟ__g4KO'aa.^g<貋ps`<0@Q-A7P &`@ൗ3F2<{7 oO o٠lо: >Ay6@ f`P,xՃ AX o䤴-_FhЫ f8z.N  *fo:/ЙF$Вo?AFa-[h'ܗǁEOip}Zijr202Ճ8DE&xO!0Vft9ÑW8jރ_@^Ω0"]c'IfL cwf10y@XX8.;Ȑ߳ [?f9 '?A??΁1v , 5`@۳@fdٽkགྷl,L"ѓ ~ѽHeSmK3ݿ ".v."`ϠZ ٓ8T!A5h<M\AHB E OЪ71i=c73Loucxu~f "'}TFp] *I;!{e"{vV}n`g?3 K0z08 A @׏[_a`?Nv݃`},̠+V Î:A`=?`q0r@.Ndd9AGi2 >e2(g'+xhve y!~6IyK`Qʂ6^Cklh9G?^**Jcdx7ǀR?ouLdc̃;hp@/Pdb&jXq:nn/G  t`seĄn!ןL |`x ( ÿ_o8ؙL 5@'p0Hh@PI0AbG4`0pmfdbKBo ?50l bL=~Af_pY?.1pI߿ߟ2+3ؘ2K3\@:Y#% 2N <|5[9 B r\[2|H 0g3޾Z4# >;0΅4s"Ȩ{[|(Yx898+@cwbx_h.AA\&s56.i`lмff035vAf:i.GhI1B OGv$EXX/'-?t~^C`TS98` wn]֕??hBs4s!@ u,! >yܪʱ3Ëp?o10 - OY._)v1n`-q`lfɠPlE)@ Y$,u=񋛀w"i?7 _f/͇?~d/_1G/.?c6iP3(zˠ`e* s1 =@ mbv!4x$x?Ï$GLO6/04;7X2h؀׿G??v3` c|`| -__vG=fx?l/$$mTd`4(# ҒT`S n " )[P? _|f}-{??>IQ`^V<  ~Je [`0k!!@.>`i .Xb|; x𵦠_< b#x 4&;^^6ˠڴ)#Չ?m3_34V&,ed`c}C*-%ԕyQ7o^cwHWۗ-d)Wo=ax|pؠ to`Vaa ^vQ$ JEۙLi0!@ Xř5xE6 z  A>`Z,^zi1._Z# Fg~E!? NdA#TWAG|f >fl^60S&zqASSs1ffD͋{ oLa`޿p]~2łw'}ԅ7et7Fp[ॉM? Wnewm70A} тyH2(H221ϣȢ V߿{w1ava~H?MЂ^V$9+au' I"  xp>cdPT`xF'6^19p;'n`e >A` ؐ b|?"?}cfx_U` g&6`W'@p%\4hs@@i`$20# F cfd`!h%Cû^#ec ta_r"$1[uR3K1ߵAA-(t@ƂGtc{/0<}<O(ߗsXBTCO=% |^(ebx ;?2s+ x)/g@n/`ꆠ58`TcgPQcSbWeg o BW`@b!`aa`F<0$0hBЁ>\"@O3yAA៥1}~r~ CNbϠ ƐĠo / Obt&#lmn{#á#gKjPn0С<32\*=>WvU>~>˰w_Fዠe3*0p- & 0efdPSe8|3ǿ'$@'?[VbX\z" O``". 9oQ`95+߼zAcC- || " lmįs@M*:@ǑTA5922}x۠ObX65Bxtû 3v>pp㆔z>. ^ ÇW uAE槏8nݾyAL?=n+ }w'DMmSiii5 mv .w1~z t–w:"Aءf4# ~@QVn)Tr3fPSP#`w ū/?g6Au >YŒ+A,i3|gS>94f :+MCRMWO RSA`޾{pL^fV`wI1L <" Ol:d`d\tRO17S`ael ** >+ wą1sӓV0b05g1 b& Hϛ_@ 3 &^_+[v=ϰd'2CRPu_.eb8v)=A) &vYQ%Y/AE`bpG`K\$[ 8@A%W`7x) x*@wxzar%o 2r _1H<?C |3"X~2|zqm.P7k nb0ȧ 쫽z ` | >g !J4 8xo` 3f3f0c6,>|^j4|p)0.0;z|8 _⁵G@G4> #yFH i\%l T@7 :)Ct&ÛDP X2q+#6` A cД '3   |5P7><b;k' U 2r=yH-:7Ql"12[ϟ?fS`{+ +50h|ax>Re0|p #< `f,#O3˂4a?< !ܷa7@,AHֆAPLA(x700LofP;`e >~@@K@C|jmQ/ÃLXt4dxE47)" 8@;Ŋ˟J?to3ܼ؜*#*ưaQ9{euu 0GB` Ww>1;tu"@pЪ73\Ȱvm3 ʖ]6.qk \expZ&w fXq3|< V|k5Ӂzxx́gUv)W7O1UG@1ud}% < +CKo F rw_?y?eaw1i~{s wa7n)H.aPbOmH5R #3 ?M~+=p7p瓁o!ӠjE\,C$eu٧;]L|~Ob8q9ܚe4V`/3xQ W]G~ 1X&}f͝8z QDD%ABK*5(QQO8:v[nvgwfQ]gˆ:$G?^Qﰓ7կvg((T$jH wkl}-`$cƟigS =|զ׷(.ZM4'$P,7<~ғ@f ]:pnKm,$9AO44 c8E3bKA _v-+@p,KEoz B{ JlGы ̈́Mfٝ- ÉHEAlކi9;zgfX:P{gk77 Lld:RH!=xhB\ V=:jP$9Ӹ y>h::BZ$mE1 қ4pT CvXdMiA,]nbb*'ڌx 8@E*@1qr=6C -D9 "fDk 3͛7`˃$VMpH,>KAq2 xxxAuFDX. bGi-gGh1:d,#tT ؠRP$2#FXE xB?d#:Çӓ'O;0;#E *: w;w [@jjjc!7#q(9;~ɠz8ݿ۷o>$T|"A9r4("2 ~8 xs-&B.Ja8Z`c\!ttug0uPy ,2hjj2CXQ +NG6kqT"O]Cs=(`je0Ç Fcc@6a97m"#+ ں/&5Z~:7778E45HHYyl WPX+*)1?ԾGnE (+ѿ@40y~SNf@@d ((l3A#F!& K]]]P3߿.3DHl<6?8Ç"d@ // l25 BBB;޽;O$N jgL߿+Pw)nݺM @/*$IENDB`king-2.21.120420/king/installer/win_2.11_050121/0000755000000000000000000000000011744310054016605 5ustar rootrootking-2.21.120420/king/installer/win_2.11_050121/probe.exe0000644000000000000000000072000011531212656020421 0ustar rootrootMZ@ !L!This program cannot be run in DOS mode. $ RH  @@.data0p0@U4VWE BtE@E @M !u B$a B$bEU B E `u B$` BaEM A(U bu B$` BaEj`%`EԋEԋMHTu }u }ԃUԃ0REPMԃQB UԋEBHMԋUQLEԋMHPUԊEBXMM̋UUUEEEEMQ_EЋUR|_EEPj_E}t}t }t}u\h00BZ}t MQ_}t UR^}t EP^}t MQ^3UԋEЉB\E MMU;UEԋH\UEMUEE M܃M܋U;U}[EԋH\UM܋UEMUE E؃E؋M;M}UԋB\ME܋ UVE_^]U}t?EH\P]MQ\P]MQ\R]EP]]UEM tU E @BMU AZtEM PQ@ A MU AZtEM PQ@AM UYAuE MPIHUE BX AuMU AB I J$UE BX(AuMU AB(IJ,]UEE (M U EjE XM EiU ZE E@M YU EB E X M EA(U Z(]UEM tU E @BMU AZtEM PQ@ A MU AZtEM PQ@AMU AZAuEM PQ@AMU A Z AuEM P Q @$A$MU A(Z(AuEM P(Q(@,A,]UE PMHQUDRE@PM(Q\UE HXJfUB@M Q\MIDE@H UBMQ@E H\E@D URHM ]UEM!UrT B$[\M UBE`MqT B$d[{\UE@MaUrT B$4[K\M]U$C(CE EE}q}M`CP0BE UU}q}[EP0BEME`CMA(CAu UB(CMA $CAu UB $C떋]UE `CA]UE `CA]UE `CA ]UE `CA]UE `CA]UE `CA]UQ}t (CE $CME]UE `CA#E ]UxEEEMU U}@ M3(%@$$@UBEMAM}U$i%@EHM܀}1t}2tEEEEEEEE EE2vE5mEdE[E RU uMQEuEVE+E "EcEdEeEg_ EHM؋U؃CU؃}E$%@EE}E tEEdE[EREEBEE2E E"EEEEMQUԋEԃAEԃ}w=U3Ɋ1&@$&@E"EEEEKEHMЋUЃAUЃ}E$C&@EEEEEE{EEkEbEYEEIE E9E E)E! E"E#EEdMQŰẼCẼ}wkU3Ɋ&@$&@E$^EENEE>EE.EEE EEEEHMȋUȃCUȃ}w{M3&@$&@E%`E&WE'NEE>EE.EEEEE E4UBEċMăCMă}w{E3Ҋ%'@$'@E(`E)WE*NEE>EE.EEEEE EMQUEAE}w{U3ɊY'@$5'@E+`E,WE-NEE>EE.EEEEE EEHMUEU} M3}'@$i'@UBPVtEEE.EbE/ERMQRnVtEEE0EE1EEE8EHM}Nt}Rt E3E4 UBRuE6MQU}At}It}UtE7E8E9EHMUDU} w4M3'@$'@E:E;E<E=gUBEMAM}E3Ҋ'@$'@E>EE?EEEE@EwEAEgEEWEBNEE>EE.E EE EEEsMQU}St EEEEFEHMUAU}woM3(@$'@EFE[EGEKEHE;EI2EJ)EK ELEME EUBEMAM}wFE3Ҋ@(@$$(@EN+EO"EPEQERESGMQUEBE}w_U3Ɋu(@$U(@ETEKEUBEVE2EW)EX EYEZE EEHMUAU} wPE$(@E[=E\4E]+E^"E_E`EaEbQMQEuEfMT t2EE u UD_EEMT EE뵋MQEUR OuEPMQhCBhCMUREPhCBhCME]@@@@@@@@K@@A@Y@@@@ @ @!@!@!@"@&"@M"@  @1@=@I@@U@@a@j@@s@@@|@@@@@@@@@@@@@@@@%@.@@@@>@G@P@`@p@@@@@@@@@@@@)@@5@H@T@`@@i@@@@y@@@@@@@@@@@-@=@M@]@@m@@@@@@@@@@_@D@o@M@@@@V@@@@@@@@(@8@F@z@@@@@@@@@@@(@;@N@^@n@~@@@@@@   2 @B @R @b @k @t @} @ @ @ @ @ @ @ @ @!@1!@A!@J!@Z!@c!@l!@u!@~!@!@!@!@!@!@!@!@!@!@!@!@!@!@#@#@"@"@#@b#@w#@"@"@#@"@#@#@"@"@"@#@#@"@#@#@"@"@#@#@#@;#@D#@M#@V#@]#@UQEJ E}t`E PMQURE PMQURJEPMQ-UREPMQ U REPM Q E]U,VWEEDB}fh,h,CE P$ h,C%uh,C3&tk}uMQ E؋UREP}uh4DBA,h,C5&tMQURh,CEP9hlDBh,CJ,CEjhtDBMQtJ trjh|DBUR]J t[jhDBEPFJ tDjhDBMQ/J t-U(t"jhDBMQ J t U)u$MQ E؋UREPrjhDBMQI uUREP FjhDBMQI t.jhDBURI tjhDBEPmI u6}tMQURahDB?@EP3@M#t EuU@EhDBM܃QHEԃ}tGUREPhDBMQ$FUREPMQUREPMQ=URHhDB?E܃P~?hEBo?MQc?_^]UEEEEE}EMUU}tEMURE PMQ ֋UE@E MM}}UED MAUB,EH0QCUBPEMM}tUEMQBދUzXtEHXQBUBXEPB]U4EEEEEEE} :E xPM QPUEM}URE P_M QEh,h,CU RO ]} t&h,Ch EBEPC MQUREPMQUREPh,CUMQURE PMQRoE UUE M;H}-UE L MUEJ H8R$P}~ EEMQREPhFBMQ>UEMU}Exu%MQ RAPMQh@FBUR>Exu8MQRAPMQRAPMQ RAPMQhdFBURE>$hExuCMQRAPMQRAPMQ$RA PMQ RAPMQhFBUR=,EHQURhFBEP=MQUEM}UBH\QUB@X$MQBT$EHQPREHQPREH QPREHQ\B&PMQB\HQUBH\Q'REHQ\!REHQeREH`QURhGBEP =P=fEM QPUEM}t UUEPMQhDGBUR<h`GBEP<]UQEE M } U BX$E @T$M Q<E}tUUEhHBEP7MA }hpHBj;E}UR;EXhtHBj;E}vMQg;UZ hxHBj;E}HEP9;MY(h|HBjq;E}UR ;EX0hHBjC;E}MQ:UZ@hHBj;E}EP:MYHhHBj:E}UR:EXPhHBj:E}tfMQW:UZXhHBj:E}t)EXhIBjv)E}MQ"tUR)EXhIBj8)E}t\MQQ"tUR(EXhIBj(E}t"MQ"tUR(EX ]UEEEEE}} EEMU}t E@M UEM}t*UBEMU}tEHAEUUEE}t7MUExtMQURU}tEMUU뽋]UE@,MQ0R]UVWEx,~6My,}-UB,MA,u UB,M|, 3_^]UEx,~MQ,EP,]UQEx,~MQ,EL,MEE]UQ}tVEPM QEUEkP !MAUztEPMQRE Px M]U}t+EMytUBP MA]UQE?E !BMEMɃ$ "]UpEL>E (!B$-$ !EEE%FJEW?EPMQ)]ȋUREP,]EE+EE MMU;UbE (!Bu]ԋEPMQ(M]UREP+M]E]MQUR+M$ E}}EE EEM;M}tE !BEu]E !Bu]UREP'M]܋MQUR+M]E;E|EnMkU E܉ ED EMEMMkU \ EMEMEkM \UăU/3}EEċ]UEM UEBHMUAJ]UEP$*]UEMUBEXMAUZE]UEP]E B@u+MuUE@uMYUBuEXE]UEPN]E B@u4E u]ME UEEHMYUEJEXE]UEM UEM @AUZEM @AUZE]UEM !UEM @aUZEM @aUZE]UEM UE BHMU AJ]UE M!MUEMAU BE`MMYUBE @MaMUZE]UEM @IUE BHMUE BM UIEXM UIEM @ UZE]UEM !]UE B`]MU Ab]EMEMEM]UE PMQ$6(]UEM !UEM @aUZEM @aUZEPE]UE@?MAA UBBE@@MA A$UB(B,?E@0@4MA8A<UB@BDE@H@LMAPAT?UBXB\E@`@dMAhAlUBpBtE@x@|?E]U EM UE BH MU AJ@E @`]M UIEM @I(UE BHHM Ah]U EJMU AJ0EM @IPU Bp]E MHUE BH8MU AJXE @x]MUEAMUQEA MUQEAE B@u+MuUE@uMYUBuEXE]U SVWE EE}E MM}UE‹MDE UU}}FEMȋUEuE}] ߋ} ыMUыEmLE_^[]U0EMPUEHM؋P U܋EHMЋPUE !B$ ]E !B$#] Be]EPkEMMEMEMMEMUZEMMEMEXEMMEMMY EMMEUZ(EMMEMEX0EMMEMMY@EMMEMUZHEMMEEXPE]UE PM UA`RQdEM PQh@ AlMU ABpIJtE ]UEPMQUR PPMQU REP>MQUREPB PQUREPMQUR E]UPEPM QUR PEPM QUR P]EP]MQ]EM0!BtEEEM}$"]E]UEPMQU REPV PMQU REPA P hQUREPMQ PUREPM Q P UR]hP]EM0!BtEE,hQUREM$ "]PPMQUR7 PP+]EM0!BtDžHDžL2hQPRbEM$!ݝH݅H @!B8!BAuE]E]UQECRClCpEh=lCuMQ EE]U}t4EQUEHQUBEP3]UCE=C|u,j|9(Eh,EPMQ) ENjE]UrE=C(t9=Ct-=Ct!=Ct=Ct =C-u"(Eh-EPMQ E똋E]UCE=C,u,j,n(Eh,EPMQ^ ENjE]UE=C(u!j(Ej) =Cu0hEh.jEP E=CujE=Cu *E=Cu dE=C-uNj-h=CujeE'hIBMQ*UR lC-hIB4Pb*4Q[ lCE]UEE CPh4QE CMhURu} u,EPh@Eh-MQUR E=C-j-XE=C-uj->EE CPh4E CMhURu} u,EPh@dEh-MQUR EEx-t My-uhAUREP Eh/MQUR EE]UEEE C hCMjhJBURv u3EHQ[tE0j jUR  EjhJBEP, uJMQRau EH_u*UB_uMA E2U3BETjh JBMQ uJUBPu MQ_u*EH_uUB E3E3ɊHMjh$JBURj u3EHQOtE1j jUR  Ejh,JBEP  MQRQu EH_ulE9UU EEMtE_uU ڋEPE}uhMQEjh4JBURy EHQu UB_ulE?MM UUEtU_uM ڋURE}uhEPE[h8JBMQuE6E3huE8EhJBEPthJBMQuE8EphJBURthJBEPuE8E 3hJBMQuE8E@ hJBURtuE8E hKBEPLuE8E h KBMQ$uE8E hKBURt?h$KBEPt*h0KBMQth8KBURuE8E, h@KBEPt?hHKBMQt*hTKBURkth\KBEPVuE8E hdKBMQ.thlKBURuE8E htKBEPuE8E` hKBMQthKBURu7E5hKBE}uhhKBE hKBEPhthKBMQSu7E5hKB+E}uhhKBUE hKBURthKBEPu7E5hKBE}uhhKBE= hKBMQthKBURu7E5hKBiE}uhhKBE hKBEPEthKBMQ0u7E5hKBE}uhhKB2E{ hKBUR thKBEP u7E5hKBE}uhhKBE hKBMQ thKBURn u7E5hKBFE}uhhKBpE hKBEP" thKBMQ u7E5hKBE}uhhKBEX hLBUR thLBEP u7E5hLBE}uhh LBEhLBMQ` thLBURK u7E5hLB#E}uhhLBMEh LBEP th$LBMQ u7E5h(LBE}uhh,LBE5h0LBUR th4LBEP u7E5h8LBaE}uhhE}uhhlLBhEhpLBMQ thtLBUR u7E5hxLBE}uhh|LBEPhLBEP thLBMQ u7E5hLB|E}uhhLBEhLBURX thLBEPC u7E5hLBE}uhhLBEEhLBMQthLBURu7E5hLBE}uhhLBE-hLBEPthLBMQu7E5hLBYE}uhhLBEhLBUR5u7E5hLB E}uhhLB7EhLBEPu7E5hLB E}uhhLB E4hLBMQu7E5hLBu E}uhhLB EhLBURQu7E5hLB) E}uhhLBS EhLBEPu7E5hLB E}uhhLB EPhLBMQu7E5hMB E}uhhMB EhMBURmu7E5h MBE E}uhhMBo EhMBEP!u7E5hMB E}uhhMB# Eljh MBMQ UBPu MQ_ulE5EE MMUtM_uE ڋMQT E}uhUR| Ejh$MBEP< u3MQR!tE:j jEP` E{jh(MBMQ u3UBPtE;j jMQ E1jh,MBUR u3EHQtE<j jUR Ejh0MBEP^ u3MQRCtE=j jEP Ejh4MBMQ uGUBPIu MQ_u'EH_uUB E@E3ɊHM?URh8MB$P $QlCE7EUREPEh&E]UEEEEEEjh>cEh}t#=CuCEh1}t$=Cu C]h|E}t:=Cu.hXMB ChCRzuh5EE?}t=C-uj- E}t'=CuE C]h4}t'=Cu CM]hE}t=C,u j,EE?}t=C-uj-bE}t'=CuE C]h04}t'=Cu CM]hE}t=C,u j,EE?}t=C-uj-E}t'=CuE C]h4}t'=Cu CM]hYE}t&EMHUEBMUQEMH'h\MBUReEPalCE]UQj E}tNEMUE BMUQE@ MAUBE@MA hxMBE]UQj PE}tOEMAUEBMU Q E@MAUBE@ hMBE]UdC;Eu bCHhMBMQ(UR$EPhMBMQF URlC]UEhC]U$CMURCCE} t} t } t} uWMQsu }.E3҃}.‰UEEMCCP-uI C.t'CQuC_}} C.u EACQtCPE C_uE }c| hMBCMURCC3MMUCEEMƁC}t,URjhCr C CEKEPjhC< CE}tMU舑CEEMƁCE}NuwCPoOu` CQRWTuHCHQu2CCCC CE}W CRICHQTCBPHuk CQRIuSCHQNu<CBPu% C C CEBUR+EEMCCP|u7 C_t)C*tC't C"uN}c| hMBCM܋URCCMMUCeEEMƁChCjE}uhhCEU CE0}u CE CEE`E]UQhCE MM}~"URE hCQuE3]UQEPE hC| hNBUIBL| hNBhChChCM lCIBChChCMIBD IBMQhChCPhC]UQ}u pCYEHMU,U}w>E$@MQRtCEQtC UB pC=pC~ pC tCtC]]@]@q@@@@U} t!E PMQh,NBUR]U} uE HMU,U}E$Ή@h0NBMQ\U PMQh4NBUR9E HQURh@$&@})}}@f}o}}}a}}@,}@}} 8}}},}}}}hOBUR h OBEPhOBMQh OBURh,OBEP|h8OBMQfh@OBURPhHOBEPp:hPOBMQZ$h\OBURDhhOBEP.hlOBMQhxOBURhOBEPhOBMQhOBURhOBEPwhOBMQdhOBURQhOBEPq>hOBMQ^+hOBURKE H QhOBUR1 \hPBEPFhPBMQ0U B 5H!B$h PBEPM A 5H!B$h PBURE H Qh4PBUR E H Qh@PBUR{ E H QhLPBUR^ E y4uU BH QhXPBUR0 yE y-u*U HQ RE B Ph\PBMQAhdPBhPBURE QUR"hPBEPhPBMQU Bx4uM QB PhPBMQz }U Bx-u,M QBH QU BQ RhPBEP?BhPBhPBMQU BPMQhhPBURhPBEPM QRhQBEP ]-@@@ @I@f@@@k@@n@@%@@@‡@@@߃@@$@A@@@@@ׅ@Q@U=Cu) CPPM QhQBUR=Cu CPM Qh$QBUR=Cu&C$E Ph,QBMQ=CuU Rh4QBEP b=CuM Qh =xQBKdQBPH QBQم$E$hRBRP QB$QB$hRBQJRQB$QB$QB$QB$hSBP(Q{`Ch!Bu`C0!BAu/`C$hHSBRP&QB`!BuQBX!BAu/QB$h`SBQMRQB P!B$QB$hxSBP Qu}tGQB$QB$QB$hSBR P:t/م$hSBQ~R=$Ct hSB=LCt/QB$hTBP0Q=(Cu h0TB=|QBu=QBuh\TBD=|QBu hTBg=QBuhTBQ=,Cu hTB9=QBt hTB#tF=TCuh UB.=TCuh(UB=TCu hLUB=4Ct'=QBthUB hUB=QBt hUB=tQBu hVBv=QBu hDVB`=QBu hVBJ=QBu hVB4=XCt hVB}u h0WB }t)=TCu }uuhdWBURSxQBPhtWBQB R\C=xQBt2=\C~)\CPhWBQ RmxQBPhWBMQ EURI`C=xQBt2=\C~)`CPhWBQ RxQBPhWBMQp EURPXtIMQjURjPQVjURPjaMQR,OEbEEẺEċMЉMȋUĉUEȉEE䚙E虙?MM܋UUE܉EԋMMh?URja } E=$CujjjjEPQUR؝PM QURPQRjjhhCPMQREPQRjjEPQUREPTDžDžMUEDžUUMEM  MU REPhWBhWBMQhWBjh@Rh6@EPQ|tRxQBPQhw@Rh@PhCQhw@R觗 EPg}EhC襺QUREEPEQDž=xQBtEhWB]lQBRNpQBPh XBQ R%PNDžQODž3]UEE E}u3Myu MUBEHQjUPMQOE}U=$Ct'EHQ9uURN3jjEHQjUB PMQCRUB8uMQEH UB`EHQUBQLt*UBMQMQEH UBEHUB\MQ\EBE]UQE E}t"MytUBPLMAURN]UlVWEEEE}Wu(}u(}MMUE}tMQU(Rz݋Eċp}Mċq}UREP{jMċQREċH QjbUREPCIEȋMăyt}u h(XB=$CUă:t=jjEPMQUċBPMċQREċHQ.UĉBEMċQUEM}t+UB%tMyuUB MANjUUEM}t+UB%tMyuUB MAjjUREPMċQREċHQUċBPlMċQHREċHDQUċB@PMċQE PMDQ$Rh]BEPsi=\Ctjj h]BMQ蕞$Rc$Pdc$QjjU,RE$PM QUREPMQURt[(}0jE PMQUREPMQ0 t%jURʄjEP躄ujMQ襄E}4ta}Lt UL DžCE@PMM QUDR$Ph ^BMQg=\Ctjj h^BUR&} +=xQBt}0t}4u h,^B$$PjM,QU$RE PMQUREPMQ[$}0}4uUTREPPh<^BhH^BMQSjU REPMQUREP茂 }4un}Lt ML DžT^BRh\^BEP `C$QB$E$$E($h|^BMQ(t%jUR貁jEP袁ujMQ荁E}4t_}Lt UL DžCE@PMMTQUPRh^Bh^BEP?j$Qh_BjjURzmuETPMPQh _Bh_BUR}Ht3}Lt EL Dž$_BQh,_BUR E Pj$QhD_BURc} =xQB}4hP_BETPMPQh`_Bhl_BURY}Lt EL Džx_BQh_BUR `C$QB$E$$E($h_BEP(QB$QB$QB$h_BMQ t%jUR~jEP~ujMQ~E}4tE}Lt$ULRh`BE8PMQh`BUR6E8PMQh(`BUREPh0`BMQ $R\^]UEEjEEPP=EMQhQBRE PhD`BMQUPMQhT`BUR|E EEM;M}Qh\`BUE Q@E}t Eh`BEl`BUE QUREP ht`BMQ]UQEE EE}q})M QjUR2$EMR軟 ȋE Pjjf2$hC號 ]UQEE EE}q}MUPğ݋]Uhx`BhC<h`BhC*h`BhCh`BhCh0aBhCh\aBhChaBhChaBhChaBhC}uhbBhChtbBhC}hbBhCkhbBhCYhcBhCGh@cBhC5hcBhC#hcBhCh0dBhChddBhChdBhChdBhChdBhCh4eBhChpeBhCheBhCheBhCoheBhC]h0fBhCKhtfBhC9hfBhC'hfBhCh4gBhChdgBhCQB$hgBhCӿQB$hgBhC赿hhBhC裿h8hBhC葿h`hBhChhBhCmhhBhC[hhBhCIhE M$?U(E,M@UDEHM0U4E8M<}LtDULEL@MLAULB EL@MLUPQEL@DžEDž   ;U' M UE-U;U|BEHu7EPPQUREPhpC EjhBMQ tjjhBUR t tjhBEP蜰 txQBKjhBMQs txQB"jhȃBURJ t$CjhԃBEP! t$CjhBMQ tU,jhBEPЯ tM,jhBUR訯 t"j PMQ U9jhBEPa tZj QUR踭 EMQBAu UQBMQBAu UQBjhBMQ u%jh BUR轮 txj PMQ QBQB0!BuQBx!BAu/QB$hB$R踻$P荫jh]U EEEEM @LALEE]U (RE(Pj]E BAuEM]uEE]UQE PMQjEMu EEE]UQE PMQjeU]U@EEEEEEEH@MUBDEMQHUEEEEEEEHfUBX;MUBTE(Y(At}MUE@TjY0AtdMUE@TjY8AtKMUE@TBY(u2MUE@TB Y0uMUE@TB(Y8t3@MQUREPMQU(R)EEMMЋUUEE̋MMUUă}}E}}E}}EEHH9M~ UBHEЋMQL9U~ EHLM̋UBP9E~ MQPUċEE M܃M܋U;U(EE M؃M؋U;UEE MԃMԋU;UEH\U܋M؋Eԋ M UBE}MQ\EH\R;Qt׃=XC~EH\Q;dCt뻋EHeUBe;tMQe tEHe t돋UREPMQJ E}t/UBEM HUU EH#Mt UȃU>E@}t}} EEMUE ]U E}u(E QBAu EEEE5}}(E QBAu EEMMEE]UEEEEE$PM QZE3ҊU(RE$PM QUREPM QUR@E}t0EEMkUыEMEkMȋUE]UQVWEjP|E}tXEMUQEM Hu}u}(UEB@MUQDEM HH h\Bl|E_^]UVWEEDž`DždEDž<EDž@DžtEDžhDžDEDž8EDžlEEƅp EExu MATQBt EUBMUExuMQ0etECEUB%t$EMQt E EMQtEDž```M`;A `kMqHURHPM(Qb UEBL$HPa xQHRE(Pa Dž<EؚyDEMtEUU E܋HM܃}"QBlu܃(}E܋HLM݅xe݅xeEeEeEeEeEEEEu Dž, Dž,,dDž@=(Cu\EHtOU܋BtBMQu2E܋Hu"UB\H'U܋B\P';u Dž@E܃xuMATQBt@t=,Cu$UB%tM܋QtdE܃xMQUREP ٝDمD]sDž4Dž0MQ`tzE܋H`tjDž4UB%@tM܋Q u+EH tU܋B%@u Dž( Dž((0U܋B#E4t 0ts4t QB$ QB$$lمl؝DAuEDMDžtDžtE&UzuE܃xuDžtDMDž<U܉U<tEH#M u Dž<<nUU E܋HM܃}SU܃zE܃xMEa(UEb(ɋEE`0MEa0UEb8EE`8MALUJLu Dž  Dž Eԃ}tDž<MyU܋B%MEa(UEb(ɋEE`0MEa0UEb8EE`8MALUJLu Dž DžEԃ}t Dž<<E BAuDž8Džhtt*}t$E؅l]EMٝ8DžhhttIEMٝ8DžhUB%uMQtم8 QBٝ8EMٝ8DžhhtExMyUم8BL$HPc[ MQHRE(P[ huN=QBtEMQUREP$ٝ MQUBLPMQLR$ ؝CEPhQE=XCu=QBt hZ=XCu=QBt h|?=XCt=QBt}t'=XC=QBhUBt^MQtQEHuiu EHBhTBURiu E`BhhBEPhu EtBahBMQhu EBChBURhu EB%hBEPhu EBEBE]UE]UDž CDž̍BDž܍BDžBDžBDž BDž$BEEEEEEƅ E PhBMQfa }u)$Ph4BMQE M؃M؋U;U}"E؃PMԋTRh|BEPXhBMQX]U$E伲CE蘑BE쨑BEBEȑBEԑB} t4}tEPhܑBMQFX URhBEP/X MQhBURX E E܃E܃}E MM}qgUkE‹M܋U}t>E܋LQURPhBEPWMQ@PE}=QBt(UztEPMQDRvEE$B}t}u_}tYEPMQE}t!EPjjMQUREPEMM}t4QBRjEPMQ=QB~jUREP MQUREPS MȉM=xQBt/=QBt&UB\HQUB\!PhBhCDD}MMUE}MQ#UEPjjM QjUR,EEPjjMQUREP E}t4 QBQjUREP=QB~jMQUR EPMQURO MȉM=xQBt/=QBt&UB\HQUB\!PhBhC@CE]ULVWEEEEEExt Myu3WUBMU܋ExuMQ@&tE܈CE U؃U؋E܋M;UkE܋p}MQURE(P# EM M UBE}MyuUzExtzMEa(UEb(ɋEE`0MEa0UEb8EE`8MALUJLu EEEE}t EM}t MME_^]U4VWDž8Dž4EEDž,Dž@Dž0DžDEDž<DžHDžLDž(DžP}t}t Dž Dž((uEE=8CthȖBMQ@Dž@Dž0DžHHHH Hu E M8888s 8BPdE8Q#UtQPPjjMQj8RE(t%PPjjMQUR8PE}jjMQ8R4CPMQ8RB DDtDt D =xQBt5=QBt,8H\QR8H\!QhBhC?8B 8A=tQBt*8Bj8HQ艮8ZL8@T Bt8ATٝ8BTٝم!Bu8@X!Bu-8Qt8@8ALUU EHM}UzEHQGts8BT Bt8@Tٝ8ATٝم!Bu(8BX!BtEHUJT8H#MJ8B%48y$8B%8UEM}tg8EJ\;H\uVUBP:u@8QeEHe;u+UBT BAu8H8J닋8Hs} tb(tYHuPDž$jh:$$t-8$󥋕$0$08B 8A8B 8A8B%8A84PPjh>MQj8RE(t(PPjh>MQUR8P蹳EDžLMM UBE}]MQDE@L BٕQ$4(QU(R0 ٝ DžEHDž<<<<;L]UDž0Dž4}t}u Dž0 Dž00k0kdCC0kıC0kC0k$C0k0khCC0kȱC0kC0k(C0k0klCC0ḵC0kC0k,C0k0kpCC0kбC0kC0k0C0k0ktCC0kԱC0kC0k4C0k0kxCC0kرC0kC0k8C}*Dž444444dC|C44CC44ıCܱC44C C44$C' h BEP-' xCQtCRpCP lCQhCRdCPh\BMQ& CRCP CQCRCP CQhBUR& رCP ԱCQбCṞCP ȱCQıCRhBEP& CQCRCP CQCRCPhBMQI& 8CR4CP 0CQ,CR(CP $CQhBUR& =xQBh ChLB8P/ 8QdhPB8R/8PA xCQtCRpCP lCQhCRdCPhB8Qr/ 8RCP CQCRCP CQCRh̶B8P'/ 8QرCRԱCP бCQ̱CRȱCP ıCQhB8R. 8P` CQCRCP CQCRCPh,B8Q. 8R8CP 4CQ0CR,CP (CQ$CRh\B8PF. 8Q]UQjPhIJCEP) E}} C3M CIJC]UEEE}t EH tEU 2}EHUJEx|M%EMEMQ;7EUU}@t}#uE}tEP/E}t} u E} ulMQEPMy| UMUMUR6EEE} tMQUR6EE;E}M MUEEM ME]UQ}t=jhBEP% uMQP#/r EEE3]UQ}t=jhBEP$ uMQ#/r EEE3]U}tE@ Q@3]UQ}t=jhBEPX$ uMQ"r EEE3]UQ}t=jhBEP $ uMQK"r EEE3]UjjEP ]UjjEP ]UjjEP ]UE@]U jj6EPa tjj6MQ ]EE?EU]U jjEH\!QBRO)u!EH\!QBR2)EB E EM9tmUztdEH\!QUP(tFM`QUBP(t,}uMQtEMP QEP낋MQRt!EHuUB MA&UBPtMQEPEEMQ7E`P BQ(tbhXBU`RuEHUJ1h`BE`PuMQEPEM`QBR'tEEEH\!QHBRb'toEPB E EM9tUUztLEH\!QUP#'t.M`QUBP 'tMUA BMAaUB% t#M`QBR&t E/EH@t EUB% tE}MQ@tEH@UJEHtUB @MAUBEMM}+E3ҊU`A$1`AMQ@EPMQ EPvMQ EPbMQ EPNMQ"EP:MQ"EP&MQ"EPMQ"EP}tMQEP]sZAbZAZAZAZAZA\_As_A_A_A_A_A_A_A_AUE} E HMU,U}kE$PeAM REPt EM QREPEMMEU PMQntU BPMQWEEUUE QUR.@EEH\U A +B @EMQ\E J+H AMUB\H'U +J AMEHe tUBeM ;A t EEUU[EH\U A+B @E?M EH\R ;QEH\U BI;H  EEUUE H Q P/EUREH\!QU B PP @EM QUREEM P#Q UE H QPEURE`PM Q RiP< @E5E H QDPgEUREH\QU B PP @EEEMATU B 5H!BAu Dž| Dž||EMATU B 5H!Bt Džx DžxxEQM A UZXAu Džt DžttEM A UZXt Džp DžppEMQ\B&M +A @EU x -uM H lU H lUB\l;HNU Bx -uM QH hU BH hUB\H;h Džd DžddU$E HQhhBURS EP+E]`AaADaA bAcaAaAaAaAaALbAbcAncAbAbAzcAcAcA/dAbAcAfdAdAUEM Ah(]UE @j0]MU B i8]EMEMEME M Au EEE]UjE PMQ ]UjE PMQi ]UE EE}9 }M,CEB U UE8tMQ]U}n} dEtkUP>EMQtBEHQ EUBtMQREE EE E MME UUEEE:M E QEU BtlM QREE HtBU BPuEM QtE HQWEE UU E EEE MMUUE EEE MME}t.UDuE tEHMHt UDuEHEPE}E촅CEMQUREPh CtEGpMQh$CtEAUURh8CtEC:EPhLCtEUMQh`CetETE E UUE:EPEEE]UE EEMt;EM‰EE%E}tMU3щUE3EE벋E3ҹ9 ‹]UEEEEEQdEU,CE}uMAUE,CMREQE}Uzt+EHREQE}~ UBE̋Myt}tUEHJUEB4MQUBHQUBPMRhtChCEO}}EMHUE,C1MQUBPMQREQhChCEE]UEEP ,CM}t&UPMQ E}~ UBEԃ}t }t E MQUEEEE]UE EE}9 }fMQh CUR E ,CM UBE}t MQREQhCURh(CEP눋]UEPh,ChCa ]UEPh0ChCF ]UEPh@ChC+ ]UEPhLChC j]UEEE}t} }3EE EMUUEUEMMU0|#E9Mk UDЉEERM+u}u E:U-u}uEEEPt}uJ}t MىMUUE]U$EEEE?EE}t} } !BEE EMUUEUEMMU0|?E96!BMM0ME]}t E B]EqU+u}u EYE-u}uEEE3M.u}u EURt}uEMU܋]UQE EEM;M}UUE E ݋]U}t} u3E POEE MMU;UEEQEU UPEM;M|6Ut,E.t#M+tU-tEPutMU;t EiE]U EEMtEQOu3]UQE EEM;M }UMMu3OE UUE;E}1Mu%EQu UU3]Vt$t$V YVt P?YY^j5C B^5Ct$YYÃ|$w"t$Yu9D$tt$"Yu3Vt$;5LCw VYuuj^Vj5C B^UQQSVV5XC*EY؋EYQf%Qf=$uUb)YY~-~u#ESQQ$j R"pVSn*EYYbE BSQQ$EQQ$j j=(]E]YYuVS.*EYY" uESQQ$EQQ$j j3"^[*Cf*øؠAlCmAhCpCӝAtCAxCA|CU}fE fEm}mEUUVWu.EPu uc/uV/_^]áCVj^u;}ƣCjP8YCYu!jV5C8YCYujY3ɸpCC =C|3ҹC‹Ctu BC|^9=Ct8̋L$tAt@u~Ѓ3ƒtAt2t$tt͍AL$+ÍAL$+ÍAL$+ÍAL$+Ã=C~ht$9YYËD$ CfA%Ã=C~jt$b9YYËD$ CAÃ=C~jt$:9YYËD$ CAÃ=C~ht$9YYËD$ CfA%Vt$WF @t:t4V8V9v>9 }Ft PfYǃf _^`;uPt$t$t$9j@t$ t$ UWVSM&ً}3ˋu F3:GwtIIы[^_UV3PPPPPPPPU I tB$uA tF$r ^UQQVWVh?L&Ef%Yf=YulEQQ$$YHYtLHt9EHWt! BQQ$EQQ$jj.LQQ$j;VW%EYY+VW%EYYE V%WEEE%EYY_^Vt$=C~jP#7YY CAtFjjVYPV2:@^U SVu Wj3Y}j_ʋ#DFuUuCj[#L5ttBڊtj#XL5uB"B_+^C#[USVu W7}-eNu]EEE }+3@w/uWVSMm m}E E0WSP ]EE;ƉEw SPUYY~+};v SWUYY}u;}Wr u SE+ˋփ I+;|0M ;sU E +MEE9;F ;sM EE EE0E;+}_^[UEW} ;v=MSVE ]u ;wSVUYY~uuWS+} ;}w^[_]ËD$L$;VtT$JtSr@ANu[^̋T$L$u<:u. t&:au% t:Au t:au uҋ3Ð@ËtB:uA ttf:u t:au t̃$ : ÍT$9R<$tPf<$t-x#Bz=C9 C9-z#BzJ9u|$u-C=C9 C:Z̃$T$D$ ÍT$ 9P<$f<$t8T$8L$aj8u=C8 C/9=C8 C9ZÍT$c8D$uA3D$u33% D$uÍT$&8D$ %=u T$uutQ$\$q;Yat08BD$ % D$؋D$t=xl$D$t-Ct77% D$u77-Cٱu CٛuU EVEEEEBPEu EP]% MxE EPj<YY^̃$6 ÍT$6R<$tPf<$t-x#Bz=C6 C6-z#Bz*6u|$u-C=Cr6 Ck7Z̃$=6 ÍT$5R<$D$ tQf<$t5u=C6 C6u,u%|$uu5"u|$u%t-C=C5 C6Z̃$}5 ÍT$(5R<$tmf<$t4=?s-=CI5 0CF5w8D$ % D$u't4u|$u-C=C4 0C5ZUQ=CSuEaz ]}(=C~ jSM.YY CXukCDJte E] j e ]jXMjjjQPEPh5C,: tuE EM [W|$j$L$WtAt;u~Ѓ3ƒtAt#ttt͍y yyyL$ tAtdGu~Ѓ3‹tt4t'ttljD$_fD$G_fD$_ÈD$_UV3PPPPPPPPU I tB$u t F$sF ^SUVt$W CNǍ,INI3Ɋ)#BA #B#C@|  v @Pa v@PT:v@PG:6@P;jd[ FAPQ"ȋFS^RQ0 `_^][ËD$Vj YL$j ^0D$ A^A0UVu>}38:=~X= }Q+DCEEPu?=HCYVs<YLC)EEPE?YF V0?V<<YYt+LC+DCWjMtádCth0Bh0Bh0Bh0Bjjt$  jjt$  Wj_9=Cut$ BP B|$ S\$=CCuS\$VtAt$F ut2u.~uV_@Y;Fu ~u@F @t8t@^[F F$ F %Vt$F @t F f F u V?YFvvv@ FtltgV ‚u4NWtu;CuM; Cu%CMB_^[áC CVW3;u0DPP5CW5C8 B;taCCC ChAj5C4 B;ljFt*jh hW4 B;ljF uvW5C B3N>~CF_^UQMSVWqA3ۅ|Cj?iZ0DE@@Jujy hhW4 Bup;w-3ɅQ<>-E u-@~HWx C_3h"B8 CQ4}YYtEF A80t<^Ky-Ad|jd^ÙA |j ^ÙYE ^[]À=CSUl$VWt*C\$5C;uG3Ƀ>-͋0`0D$QQ$<<\$$VFP3>-P;>-uE-}FjWY0YG~AjWvCYvGY}(=Ct;|SWISj0W<_^][USVW}QQ$;CHI] C3Ƀ8-PSM V:CHI9 C C@HC|!;}t Fu FSu WA uSu W_^[]t$Ct$t$t$g%Ct$ Ct$ t$ H%C U}et2}Et,}fuuu u ]uuu uuuu u]W|$ tVt$ VS@PVV0^_Vt$v;YtwCu3 CucjXCfF uR^fN jX_[^3^Ã|$Vt"t$ F t)V f f&fY^ËD$ @ tP Y^UHSVW} 3Gۉuu} M3Mu39U |xÊ"B3"BE$9AMỦU؉UUUUxà t;t-tHHtYMPMGM>M5M,*u#EPYEM؉EEˍDAU*uEPYEMˍDAЉEIt.ht ltwMMM ?6u4uGGM} lUЋ CUDAtEPuP G} EPuPf %ÃgeXxCHHtpHHtl fE0uMuuEPfEYȉMu CMENf8@@E M@;ʉ}EfE0uMfEEPt;0PPV8 E}2E)Zt2 tHYEEEPYt3Ht,EtMEEeMCEPu guEEũEuHM@EPPEPhCut}uPtCYguuPlCY-u M}WsYiHHtQHHE'<+u CMNt8t@+EEEEt]EE0QEEHEEt;M5EPE Yt fMfME#M@E Et EPYAE t!E@EPt Y%YE@EPtYY3E@t|s؃ڀMEu}} Ee ueEEEM t;ERPWVEUQ6uċ؃0uWV59~]ԋEM뵍E+EEEEtM90uu M@M0E}]@t&tE-tE+ t E Eu+u+u uEPuVj EPEuuP2tuEPuVj0}tA}~;E]xfCPEPCw4YY~2MQuPEPOuEPuuuEtEPuVj q} Gۉ} E_^[÷AAAA+A3AhAAUM IxE QuaYYEu]]VW|$O~!t$Vt$t$ >tO_^S\$ KVW~&|$t$WFt$Pu ?tK_^[ËD$@ËD$AQËD$f@ÃDSUVWhYujY5CC ;sfF CD$PT Bf|$BD$D0h;.|95C}RChYt8C ;s`@ 95C|5C3~Ft6Mt.u PP BtNjCȋ MHGE;|3ۡC<4uMFujX HPL BtWP Bt %>uN@u NNC|5CH B_^][DSVt$ Wt$w uj^3w*;LCw S1Yu+Vj5C Bu"=CtVYtSjW0 _^[3VWj3^95C~DCt/@ t PFYtG|C4$CY$F;5C|_^Vt$u VY^V#Yt^F @tv1Y^3^SVt$ 3WF ȃu7ft1F>+~&WPv1 ;uF t$F N Ff_^[jYSVW33395C~MCt8H t0|$uP.YtC|$utPYu F;5C||$t_^[UQEHw CARV5CDV^teMEj eEjXM jjjQPEPj2uE #E SUVW|$;=CNjCD0tiWt5Yt<tuj]5jT5Y;YtWH5YP\ Bu X B3W4Yd0t U+3Y3%\CXC _^][Vt$F ttvff 3YFF^UQQSV5TCW} 3ۉ]]@u tF t2tn-Cƅpݽ`aAuƅp-C uS u~ uu tƅp-Cu t=Xݽ`au-C tƅp-Cƅp u-C-Cٛݽ`aAuݽ`aݽ`ٛu Cٛt øVtV$$vft^tUQQE BEV33s]9Eu49UuWE BweE Brm0CEj^9Mu#9UuE BwBE Bs9E u19UE Bv(CwE Bsge9M ue9Uu`EQQ$XE BYYv(Cu]E'E BsuHC]EE^UQQEQQ$rAYYuIEQQ$]E]YYu,E5 BQQ]E$]YYujjX3USVu F ^@tfN$F F fe $ f F u"CtCu S#YuV0 YfF WtdF>+HNIN~WPSv% E 3tËCC@ t jjS@ FMjE_WPS#% E 9} _tN E% F ^[]Ujh#BhlAdPd%SVWe39=CuFWWj[Sh#BVWl BtC"WWSh#BVWh B"C9}~uuYYECuuuuuu uh B9} uCE WWuuE$@Pu d B؉];}$=@eĉE܃MjXËe3}܃M]9}tfSuuuju d BtMWWSuu ul Bu;t2E t@9};uuuSuu ul B3eȋMd _^[E6$?e܉]MjXËe33ۃMu;tVSuuu ul Bt9}WWuWWuuVSh u ` B;qlT$D$VJt 8t@Iu8^u+D$ËÃ=Cu CQSUVW3h$B3-CC؎Cq@Y;hC B;C lCk&C;tPV虻YY 5CV޵@P$ ;ţCVP jV5ЎC>ЎC`>-ujF_Vc=Y0i DC<+t:|<9F>:uNFV5=k:u#FV =Y DCȉ DC:|<9F;tى DC;ţHCtjV5ԎCY=ԎC `ԎC _^][YSVW39=HCu3Lt$j[F;؎Cu ;C9=C CQf9=C CQ CQ CQu CWQ CQ CQPS CQW CWQPWSjC,f9=\CPhCPfCPdCPu(`CWPbCP^CPvSW,BbCPW^CWPvWWWWjWWSjPSSWWWjWWjj vSW{X܎CCN;};;;~;}_^[;|;;~;Fk<Fk<i;u3;C3;CU} S]VE]eu mu35P_Y&UUL0D0t ? u $E ME;ME<< t GEI9MsE@8 uE^ GEsEjPEEjP40p Bu X BuG}tAD0HtE< t GD1);} u } u jju%2 } t GM9MGt0@u +} }E%\CXC _^[USu5Y Xu `jX  CMM CH xC|CV;}4I+э4C& Ju5C=u Cp=u C]=u CJ=u C7=u C$=u C=u C5CjY5CY^`QYE C u t B[]ËT$ C9CVCt4I4C ;s9u I^ C;s9t3S39CVWu65C3:t<=tGV*YtPcY;5Cuj 茽Y=C8t9UWYE?=t"U.;Yuj ]YW6*YY8u]5CѥYC_^C[UQQS39CVWu$6ChVSx BC5C8tEPEPSSWMEMP莥;uj軼YEPEPEPVWEH5xC_^tC[UMESV!uW} Et7} 8"uDP@"t)t%Ct tF@tՊFt&F8"uF@CtF@Ct tF@ t t ūuHtfe8 t u@8t7} UE3ۀ8\u@C8"u,u%39}t x"Pu}} 39U‰UKtCt\FKutJ}u t? t:}t.tCtF@FCt@@Xt&Ft'E_^[]QQCSU- BVW333;u3Ջ;t C( B;C;u Ջ;f9t@@f9u@@f9u+Ƌ=` BSS@SSPVSSD$4׋;t2U;YD$t#SSUPt$$VSSׅut$詢Y\$\$V BSuL;u  B;t<8t @8u@8u+@U蔢Y;u3 UWV2 W| B3_^][YYUSVWUjjhAuF]_^[]ËL$AtD$T$SVWD$PjhAd5d%D$ Xp t.;t$$t(4v L$H |uhD@Td _^[3d yAuQ R 9QuSQC SQCMKCk Y[VC20XC00USVWU] E@EEEECs {ta v|tEVUkT]^] t3x<{SkVS vjDaC T{ v4롸UkjS]]_^[]UL$)APAPy]Ct u*=DCu!hCYthYUU3ɸC;t A=(C|V;CCu =DC\hPjx Bu\h('BPYY\WP\v@Y1uBW@PWV<_^[]U VEWPEPOYuYh Cjj f*HC"C@C_ CDCLC$C@C^UQU SVWfB%#ωE Bپ%ۉut;t<(!3;u;uEXfXK<] ȋE M Huɋ ٍ XߋM fH_^[̋T$ L$tG3D$Wr-كt+шGIuʃttGJuD$_ËD$jYËD$;Cr3Ëȃ CD@UEu]Ã=CufM fw9jX]ÍMeQj5CPE jPh 5C` Bt}t XC*]SVD$ uL$D$3؋D$ Aȋ\$T$D$ ud$ȋD$r;T$wr;D$ vN3ҋ^[SD$ uL$D$ 3D$3Pȋ\$T$ D$ ud$d$r;T$ wr;D$v+D$T$+D$T$ ؃[D$;Cs=ȋ CDt%PYP BuX B3t\CXC UMS; CVWyCD0W39}}}u3W t jWQC @E 9}E}M+M ;Ms)ME uE @@ȍ+ʁ|̋+EjPWP40 BtCEE;| E+E ;Er3E;9}t_jX9EuLXC \CX BEǍMWQuu 0 Bt E}EX BEuY=D0@t E 8XC=\C+E%\CXC _^[Ujh@'BhlAdPd%SVWePC3;u>EPj^Vh#BV BtEPVh#BVS BjXPCu$E;uCuuu uP B9]uCESSuu E @Pud BE;tc]<ǃ$euWSV3 jXËe33M;t)uVuu jud B;tuPVu B3e̋Md _^[ËL$3҉ \CpC;t B=ؑC|r$wXC ËtCXCÁrXCv XCSVW33Ct7;s@t+Ƌ؃uTG C|CV=Yt3C C;s`@ _^[ËD$V;CWsRȋEEE t `C#Muj^@t Mt t t؃;u%\CXC>jVuEPuuu B;tVP BuV\ BX BPYuM@ uMVSYEY E YYt=0Cu VYu6֭Y_^[l$l$D$5tCuËD$ %tg=t`|$D$ ?%D$ l$ D$%t C Cl$ C Cl$ËD$ D$uËD$ %u|$D$ ?%D$ l$ D$%t=t2D$s*D$r C|$l$ɛl$l$Ã,?$>C,Ã,,Ã,,,,,|$ <$|$ l$ Ƀ,Ã,<$|$ l$ Ƀ,Ã,|$ <$|$ ^l$ ,<$|$ J,|$ <$:l$ ,|$ <$&,|$ <$|$ l$ ʃ,Ã,<$|$ l$ ʃ,Ã,|$ <$|$ l$ ,<$|$ Ƀ,|$ <$l$ ,|$ <$Ƀ,|$ <$|$ jl$ ˃,Ã,<$|$ Kl$ ˃,Ã,|$ <$|$ $l$ ,<$|$ ʃ,|$ <$l$ ,|$ <$ʃ,|$ <$|$ l$ ̃,Ã,<$|$ l$ ̃,Ã,|$ <$|$ l$ ,<$|$ h˃,|$ <$Tl$ ,|$ <$<˃,|$ <$|$ "l$ ̓,Ã,<$|$ l$ ̓,Ã,|$ <$|$ l$ ,<$|$ ̃,|$ <$l$ ,|$ <$̃,|$ <$|$ ~l$ ΃,Ã,<$|$ _l$ ΃,Ã,|$ <$|$ 8l$ ,<$|$ ̓,|$ <$ l$ ,|$ <$̓,|$ <$|$ l$ σ,Ã,<$|$ l$ σ,Ã,|$ <$|$ l$ ,<$|$ |΃,|$ <$hl$ ,|$ <$P΃,Ã,<$|$ ;,Ã,|$ <$(,PD$%=t3%8t D$XɃ <$D$,$Ƀ Xt$XPD$ %=t3%8t D$kXɃ <$D$V,$Ƀ Xt$XP%8t D$/XɃ <$D$,$Ƀ XP%8t D$XɃ <$D$,$Ƀ XPD$%=t3%8t D$XɃ <$D$,$Ƀ X|$XPD$ %=t3%8t D$~XɃ <$D$i,$Ƀ X|$XP%8t D$BXɃ <$D$-,$Ƀ XP%8t D$XɃ <$D$,$Ƀ XP,<$|$ ,XP,|$ <$,XPSQD$5 CpD$%=\D$.%M=BD$,6D$*D$%?\$0+w^D$% \$0+l$(D$\$0+؃+ˋ؁ ˉL$l$D$|$(ul$|$|$4D$4 ?D$8l$8D$%\$0+؃? ˋD$\$0% ؉\$l$l$(%u ,CɃu\$0|$(l$-4Cl$(l$4t l$l$(tV|$<t|$4D$4 D$8l$8 Cl$4D$ScvYt/PTv;Yv<8=uWSP tӋD83_^[USVWuY;5pCuj3;V3ҸC90tr0B=C|EPV B$j@3YC}5pC󫪉C}MA;C@j@3YC4R]C;t,Qt%;wUCC@;vAA9uE}rECPpCCCYCUAAyHjXC@=rVYCCC3C 9XCt3_^[ËD$%XCuXC% BuXC% BuCXCËD$-t"t t Ht3øøøøWj@Y3C3CpCCC_UEVP5pC B3@;rEƅ t7SWU ;w+ȍA ˃BBBu_[j5C5pCPVPjPj5pCVPVPV5C脹j5pCVPVPh5C\\3ftCCtC 〠C@AA;rI3ArZwCȀ CarzwC Ȁ C@;r^Ã=Cuj,YCUWVu M};v;xur)$BǺr $B$B$,BBBB#ъFGFGr$BI#ъFGr$B#ъFGr$BIB|BtBlBdB\BTBLBDDDDDDDDDDDDDD$BBBBBE^_ÐE^_ÐFGE^_ÍIFGFGE^_Ðt1|9u$r $0B$BIǺr +$8B$0BHBhBBF#шGNOr$0BIF#шGFGr$0BF#шGFGFGZ$0BIBBBBB BB'BDDDDDDDDD D DDDD$0B@BHBXBlBE^_ÐFGE^_ÍIFGFGE^_ÐFGFGFGE^_S39\CVWuBh|'B B;tg5@ Bhp'BWօ\CtPh`'BWhL'BW`C֣dC`CtЋ؅tdCtSЋt$t$t$S\C_^[3T$Vt$ 3 2;r;sjXT$^ Vt$W|$V76 tFPj0 tFFPw0 tFFPw0 _^ËD$VW0x04? H׉p _H^ËD$VWPH ΉH _P^UE S]3;VEN@SSvQWE}SpSjEPSSZEeeEEPSEMu3_9Su(KC EsӾsuSEYfE^fC [UES]VȾ#fWEEEEEEEEEEEE?EtC-C } fuu9}uf#C CC0f;uzf;u}t@uh'BFftu }u.h'B;u#}uh'BCP[xYCYenh'BCP>xYCY‹ϋiMfej NfUkM} EEPEP f}?rEFPEPoYYEf3t}}~j_u?feEEP.MYu}ށ~ EP?NYuOCɉE~PMu}EPEPEPEPwEPEMe0EMuEHHH5K|0;r89u0H;s@f*,CdE_^[;r 80uH;sf#C C0cjXUS]V3;CËCDjVS EjVS W} +~ohVPhS?E ;}PPS t+~׃=\Cu XC u SYY@}>ju S\SP BNuXC X B\CjuS _ XC ^[U$S] VufK 3WEE܉EEfF 3##ʁf=Ufff?w3:fuEVu39Fu 9uo3f;uESu9Cu9u FFkEEEE E} ~IƍKEE MEEM MQP1 tEfEmMuȃEEM } Ef}~%EuEPEYf}f}9Ef}}+EEEtEEPKYu}tMf}wE%=u5}u,e}uef}u EfEfEEEދEf=sfM fMNMNfF ff&~_^[U SC3Ƀ`9M tc}E C؉E `9MuEf9M tAVWE T} ;t'@f<4r }MuVurYY39M u_^[̋D$L$ ȋL$ u D$S؋D$d$؋D$[U}u3]5pCuu uuj5Cu]Ã]QSUV5CW3;tN` BWWWWjPWjӋ;t>U c;YD$t/WWUPj6WjӅtWt$ FY;Yu3_^][YÃD$V;CsZȃ CTLt>%9t$ u |$ @uɀ f%^XC XC ^Ujh'BhlAdPd%0SVWe39lCj_u@W#BPWPSS Bt=lC#W#BPWPSS BlCu;~Vu YYu9]~uuYYElCuuuVuu u B;9] uCE ;t 9];uujXx9}~l;AEPu  BQ;~,}r"E8]tP:tM :r:v@@8uj9]~1}rE8]tP:tM :r:x@@8uzSSVuj u d BE;]$eĉE܃MjXËe3ۉ]܃Muj_9]uuVuWu 5d BօtySSuuj u ֋u;ta}6$e}؃MjXËe33Mu;t-VWuuju d BtVWuuu u B3eMd _^[UQQSVW39}tUj=uMY;Yut@9ut;C38^;Cu PYC;uT9} t9=Ct?t>_^[; j^_;YCt߉89=CujC_;YCtĉ8+u=C}VuYY|C?t>t24<^Y?t GFPuTYYt<5E2uz}ލPW,YY@M dC} tFuJa@@P^YYt.uVmY+EYE @#SV BV+^Y3V5CWt-|$WPt$ u 8<=ttFu׋+C_^Ë+CW|$3Ʌu3_Ã?Gt AuSUVP]Yuj tY߅tPY&^][_S\$UVWut$~]Yt$uS;]Y33SQuY;5LCwDVSUA} t)V{xYt$CH;rPSWSU0uuj^Vj5C BtACH;rPSW9SUtuj^VSj5C8 Bu=CtVY_^][U=Cuu uYY]ËMfft:CtQAt 9E t9U t A3]ÍA]ЋE +#]Vt$tV^@P[YYt VPjYY^3^% B((((( )),)@)R)`)n)|))))))))**"*2*@*V*l*|*******+0+<+H+\+n++++++++++,,@??h㈵>MbP?ư>?푪Fߑ?.DT!)@.DT!@.DT! @-C6?V@gyܥL@Y@?qh?H.?-C6$@@@?333333?ٿ333333ӿɿ333333??ffffff?T@$@AA_yn_y1_y0frexpfmod_hypot_cabsldexpmodffabsfloorceiltancossinsqrtatan2atanacosasintanhcoshsinhlog10logpowexp~PAGAIsProcessorFeaturePresentKERNEL32e+000EEE50P (8PX700WP `h````ppxxxx(null)(null)?5h!>@@AAAASunMonTueWedThuFriSatJanFebMarAprMayJunJulAugSepOctNovDecTZ@runtime error TLOSS error SING error DOMAIN error R6028 - unable to initialize heap R6027 - not enough space for lowio initialization R6026 - not enough space for stdio initialization R6025 - pure virtual function call R6024 - not enough space for _onexit/atexit table R6019 - unable to open console device R6018 - unexpected heap error R6017 - unexpected multithread lock error R6016 - not enough space for thread data abnormal program termination R6009 - not enough space for environment R6008 - not enough space for arguments R6002 - floating point not loaded Microsoft Visual C++ Runtime Library Runtime Error! Program: ...AAGetLastActivePopupGetActiveWindowMessageBoxAuser32.dll1#QNAN1#INF1#IND1#SNAN>BBBBB'0, ((((( )),)@)R)`)n)|))))))))**"*2*@*V*l*|*******+0+<+H+\+n++++++++++,,HeapFreeHeapAllocpGetTimeZoneInformation]GetSystemTimeGetLocalTime}ExitProcessTerminateProcessGetCurrentProcessGetCommandLineAtGetVersionHeapDestroyHeapCreateVirtualFreeVirtualAllocHeapReAlloc RaiseException>GetProcAddress&GetModuleHandleAmSetHandleCountRGetStdHandleGetFileTypePGetStartupInfoAGetLastErrorCloseHandleWideCharToMultiByteMultiByteToWideCharLCMapStringALCMapStringWReadFileUnhandledExceptionFilter$GetModuleFileNameAFreeEnvironmentStringsAFreeEnvironmentStringsWGetEnvironmentStringsGetEnvironmentStringsW/RtlUnwindWriteFileFlushFileBuffersSGetStringTypeAVGetStringTypeW|SetStdHandle4CreateFileAjSetFilePointerGetCPInfoGetACP1GetOEMCPLoadLibraryAaSetEndOfFile!CompareStringA"CompareStringWbSetEnvironmentVariableAKERNEL32.dllrA/BnsAcould not create atom binsp>B?t>B|>B>B>B•?>>B>B?>>B>B?>>B>B?>>B>B?33?E?>B>Bff??333?>B>B33??(?>B >Bff?ff?̌?>B >Bff?33??>B!>B@ff@H?>BV">B33?@•??B ?Bff?ff?z? ?B?B\?\?p}??B# ?B???$?B25,?Bff@ff@q=?0?B88?B??? D?B33s?33s?Q?H?B P?B??R?T?B5\?Bq=?q=?z@`?B; h?Bff&?ff&??l?Bt?Bp}?p}?p?x?B<?BL?L???B(?Bp=?p=?p??B ?B333?333?Q??BB?B(?(?33??B#?BQ8?Q8?H??Bi?B5?5???BO%?Bp?p?{@?BZ&?B̌?̌???B=*?B{n?{n???B /?BG?G?@?B0?Bh?h?33??B31@B)\O?)\O?ff?@B"7@BQ?Q?@@B8@B??@ @BO(@B̌?̌??,@B0P4@B??R?8@BaQ@@BQ?Q? @D@BGRL@B= W?= W?q=?P@BdX@Bq=J?q=J? ?\@B!d@BH:?H:?(?h@B^4p@BQx?Qx?H?t@BX>|@Bq=?q=??@B,@@Bff?ff??@BhF@B??ף?@BeJ@B(?(?33?@BLN@BG!?G!?)\?@Bc\@B ׃? ׃?\?@B.@B??@B@BR>R>fff?@B@BL>L>(\?@BA @B??@BW@Bff@ff@•?@B@B??ABUAB{.?{.?G> AB`AB@?@?R?AB+ AB??\?$AB- ,AB???0AB6$8ABף@ף@33? %g, %g, %g) %sSAVE transformation (level %d) %sRESTORE transformation (level %d) %sUNKNOWN transformation (type %d) %s CONST bias function %g %s POLYNOMIAL bias function %g*(x - %g)^%g %s COSINE bias function %g*(%g - cos(%g*(x - %g)))/2 %s UNKNOWN bias function type: %d %s %4.4s%c%3.3s %c%4d%c %8.3f%8.3f%8.3f%6.2f%6.2f %s %sread %d GO statements NULL xformDatabase ATOM %4d %4.4s%c%3.3s %c%4d%c %8.3f%8.3f%8.3f%6.2f%6.2f auto could not create transformation databasecould not create transformation stackcould not create transformation: NULLBONDROTROTTRANSSAVERESTORE:/NULL/::::::::::TRANSFORMATION where start == end (step reset)could not create Xform atom recordcould not create atom sorted-order arrayatom duplicated in autobondrot input%g could not create 'go to' record:::could not create 'basis function' record: CONSTPOLYCOS::::syntax: minus sign requires a number syntax: improper feature FILECHAINALTMODELATOMSEGALLNONEALPHABETAMAINCHAINMCBACKBONESIDECHAINSCBASENITROGENCARBONOXYGENSULFURPHOSPHORUSHYDROGENH2OWATERHETHETATMPROTEINPEPTIDEDNARNAMETALMETHYLDONORACCEPTORNONPOLARHYDROPHOBICHPHOBICPHOBICPOLARHYDROPHILICHPHILICPHILICCHARGEDCHARGEAROMATICGLYGGLYGLYALAAALAALAVALVVALVALPHEFPHEPHEPROPPROPROMETMMETMETILEIILEILELEULLEULEUASPDASPASPGLUEGLUGLULYSKLYSLYSARGRARGARGSERSSERSERTHRTTHRTHRTYRYTYRTYRHISHHISHISCYSCCYSCYSASNNASNASNGLNQGLNGLNTRPWTRPTRPACEACEACEASXASXASXGLXGLXGLXMSEMSEMSEPCAPCAPCANH2NH2NH2NMENMENMEFORFORFORRESOLTOGTBLTBGTINSsyntax: unknown identifier: %sOFsyntax: parsing WITHIN: out of memory in makeNode()out of memory in makeTerminal()improper syntax expect match code: %dnumber too longsymbol too longsymbol table fullsymbol name array full ( or )( and )not()%d <= resno <= %dfile=%dmodel=%dchain='%c'alt='%c'*atom="%s%s"*segID="%s%s"resno=%d*res="%s%s"atoms within %.1f of %.3f, %.3f, %.3falphabetamainchainsidechainNitrogenCarbonOxygenSulfurPhosphorusHydrogenH2Ohet-groupproteindna/rnametalmethyldonoracceptorA,V,L,I,M,C,F,W,Y (but not G,P!)S,T,N,QD,E,K,R(+H)aromatic-atomsproperty=%dallnoneoccupancy < %.2foccupancy > %.2fBval < %dBval > %dinsert='%c'%d%d%c***INTERNAL DEFECT - EXPECT AND***() <= resno <= %d%d%c***INTERNAL DEFECT - EXPECT AND***() /* warning: insert codes ignored in ranges */<>%s"%s"%s%d%s%g%sNOT%sWITHIN%s(end of pattern)%s'%c'QBRB0RBdRB?L??_q?> A@?̾> ף>name:pat:type:srcAtom:targAtom:min-gap:gap:kissEdge2BullsEye:dot2BE:dot2SC:spike:score:stype:ttype:x:y:z:sBval:tBval>>name:pat:type:srcAtom:targAtom:min-gap:gap:spX:spY:spZ:spikeLen:score:stype:ttype:x:y:z:sBval:tBvalSelfIntersectprocessing modelNumber== %d command:program:dotsselection: self name: %s density: %.1f dots per A^2 probeRad: %.3f A VDWrad: (r * %.3f) + %.3f A score weights: gapWt=%g, bumpWt=%g, HBWt=%g self dots1->1self_dots# command:# software:self_dotsSelfIntersectSelfIntersect command:@captiondots@group dominant {%s M%d} animate dots@group dominant {%s} self dotsIntersectOncecommand:program:dotsselection: once name: %s density: %.1f dots per A^2 probeRad: %.3f A VDWrad: (r * %.3f) + %.3f A score weights: gapWt=%g, bumpWt=%g, HBWt=%g once dots1->2once_dots# command:# software:once_dotsIntersectOnceIntersectOnce command:@captiondots@group dominant {%s} once dotsIntersectBothWayscommand:program:dotsselection: both name: %s density: %.1f dots per A^2 probeRad: %.3f A VDWrad: (r * %.3f) + %.3f A score weights: gapWt=%g, bumpWt=%g, HBWt=%g # command:# software: command:@captiondots@group {%s} 1->21->21->21->21->2IntersectBothWays 1->21->2IntersectBothWays 1->22->12->12->12->12->1IntersectBothWays 2->12->1IntersectBothWays 2->1ExternalSurfacecommand:program:dotsselection: external name: %s density: %.1f dots per A^2 probeRad: %.3f A VDWrad: (r * %.3f) + %.3f A extern dots1->noneextern_dots# command:# software:extern_dots command:@captiondots@group dominant {%s} extern dotsdumpAtomInfocommand:program:dotsselection: self name: %s density: %.1f dots per A^2 probeRad: %.3f A VDWrad: (r * %.3f) + %.3f A score weights: gapWt=%g, bumpWt=%g, HBWt=%g #%d %s %s%s %d %s atoms selected: %d %s %s, run %s%s %s  *' %s "%s" Syntax: probe input.pdb >> out.kin or: probe [flags] "src pattern" ["target pattern"] pdbfiles... >> out.kin Flags: -SElf self intersection: src -> src (default) -Both intersect both ways: src <=> targ -ONce single intersection: src -> targ -OUt external van der Waals surface of src (solvent contact surface) -AUTObondrot filename read and process an autobondrot file shortcuts: <>, -SCSurface, -EXPOsed, -ASurface, -ACCESS, -SCAN0, -SCAN1 shortcuts: <>same as: -4H -mc -het -self "altA ogt33" -DEFAULTs same as: <>, but allows some other flags -SCSurface same as: -drop -rad1.4 -out "not water" -EXPOsed same as: -drop -rad1.4 -out (note: user supplies pattern) -ASurface same as: -drop -rad0.0 -add1.4 -out "not water" -ACCESS same as: -drop -rad0.0 -add1.4 -out (note: user supplies pattern) -SCAN0 same as: -4H -mc -self "alta blt40 ogt33" -SCAN1 same as: -4H -once "sc alta blt40 ogt33" "alta blt40 ogt65,(not water ogt33)" -DUMPAtominfo count the atoms in the selection: src (note that BOTH and ONCE require two patterns while OUT, SELF and DUMPATOMINFO require just one pattern) -Implicit implicit hydrogens -Explicit explicit hydrogens (default) -DEnsity# set dot density (default 16 dots/sq A) -Radius#.# set probe radius (default 0.25 A) -ADDvdw#.# offset added to Van der Waals radii (default 0.0) -SCALEvdw#.# scale factor for Van der Waals radii (default 1.0) -COSCale#.# scale C=O carbon Van der Waals radii (default 0.94) -SPike draw spike instead of dots (default) -SPike#.# set spike scale (default=0.5) -NOSpike draw only dots -HBRegular#.# max overlap for regular Hbonds(default=%.1f) -HBCharged#.# max overlap for charged Hbonds(default=%.1f) -Keep keep nonselected atoms (default) -DRop drop nonselected atoms -LIMit limit bump dots to max dist when kissing (default) -NOLIMit do not limit bump dots -LENs add lens keyword to kin file -NOLENs do not add lens keyword to kin file (default) -MC include mainchain->mainchain interactions -HETs include dots to non-water HET groups (default) -NOHETs exclude dots to non-water HET groups -WATers include dots to water (default) -NOWATers exclude dots to water -WAT2wat show dots between waters -DUMPH2O include water H? vectorlist in output -4H extend bond chain dot removal to 4 for H (default) -3 limit bond chain dot removal to 3 -2 limit bond chain dot removal to 2 -1 limit bond chain dot removal to 1 -IGNORE "pattern" explicit drop: ignore atoms selected by pattern -DOCHO recognize CH..O Hbonds -CHO#.# scale factor for CH..O Hbond score (default=%.1f) -PolarH use short radii of polar hydrogens (default) -NOPolarH do not shorten radii of polar hydrogens -NOFACEhbond do not identify HBonds to aromatic faces -Name "name" specify the group name (default "dots") -Countdots produce a count of dots-not a dotlist -Unformated output raw dot info -OFORMAT output dot info formatted for display in O -XVFORMAT output dot info formatted for display in XtalView -ONELINE output one line :contacts:by:severity:type: -GAPcolor color dots by gap amount (default) -ATOMcolor color dots by atom type -BASEcolor color dots by nucleic acid base type -COLORBase color dots by gap and nucleic acid base type -OUTCOLor "name" specify the point color for -OUT (default "gray") -GAPWeight# set weight for scoring gaps (default 0.25) -BUMPWeight# set relative scale for scoring bumps (default 10.0) -HBWeight# set relative scale for scoring Hbonds (default 4.0) -DIVLow#.# Division for Bump categories (default -0.4) -DIVHigh#.# Division for Contact categories (default 0.25) -MINOCCupancy#.# Occupancy below this is same as zero (default 0.02) -KINemage add @kinemage 1 statement to top of .kin format output -NOGroup do not generate @group statement in .kin format output -ELEMent add master buttons for different elements in kin output -NOHBOUT do not output contacts for HBonds -NOCLASHOUT do not output contacts for clashes -NOVDWOUT do not output contacts for van der Waals interactions -ONLYBADOUT onlybadout output bad clashes (severe overlap contacts) -SUMMARY output summary list of contacts and clashes -ONELINE output summary list on oneline -NOTICKs do not display the residue name ticker during processing -STDBONDs assume only standard bonding patterns in standard residues -NOPARENT do not bond hydrogens based on table of parent heavy atoms -SEGID use the PDB SegID field to descriminate between residues -OLDU generate old style -u output: kissEdge2BullsEye, etc -VErbose verbose mode (default) -REFerence display reference string -CHANGEs display a list of program changes -Quiet quiet mode -Help show expanded help notice (includes other flags) -VERSION one line version to stdout Pattern elements: (should be put in quotes on the command line) FILE# within file # MODEL# within model # CHAINa within chain a SEGaaaa segment identifier aaaa (where _ represents blank) ALTa alternate conformation a ATOMaaaa atom name aaaa (where _ represents blank) (all 4 characters are used so H would be ATOM_H__) RESaaa residue aaa # residue # #a residue #, insert a #-# residue range # (insert codes ignored) a residue type by one letter codes (eg. y) aaa residue type by three letter codes (eg. tyr) ALL,PROTEIN,MC,SC,BASE,ALPHA,BETA,NITROGEN,CARBON,OXYGEN, SULFUR,PHOSPHORUS,HYDROGEN,METAL,POLAR,NONPOLAR,CHARGED, DONOR,ACCEPTOR,AROMATIC,METHYL,HET,WATER,DNA,RNA all or a subset of the atoms OLT# Occupancy less than # (integer percent) OGT# Occupancy greater than # (integer percent) BLT# B-value less than # (integer) BGT# B-value greater than # (integer) INSa Insert code a (where _ represents blank) WITHIN #.# OF #.#, #.#, #.# atoms within distance from point # residue number #a residue #, insert a #-# residue number range a OR aaa residue type by one or three letter codes FILE#,MODEL#,CHAINa,SEGaaaa,ALTa,ATOMaaaa,RESaaa, ALL,PROTEIN,MC,SC,BASE,ALPHA,BETA,NITROGEN,CARBON,OXYGEN, SULFUR,PHOSPHORUS,HYDROGEN,METAL,POLAR,NONPOLAR,CHARGED, DONOR,ACCEPTOR,AROMATIC,METHYL,HET,WATER,DNA,RNA, OLT#, OGT#, BLT#, BGT#, INSa, WITHIN #.# OF #.#, #.#, #.# Patterns can be combined into comma separated lists such as "trp,phe,tyr" meaning TRP or PHE or TYR. Patterns that are sepatated by blanks must all be true such as "chainb 1-5" meaning residues 1 to 5 in chain B. You can also group patterns with parenthesis, separate multiple patterns with | meaning 'or' and choose the complement with NOT as in "not file1" meaning not in file 1. An autobondrot file is similar to other PDB input files but it includes information identifying atoms subject to rotations and other transformations. Example autobondrot file fragment showing Calpha-Cbeta bond rotation and a periodic torsion penalty function for this rotation ATOM 1 CB TYR 61 34.219 17.937 4.659 1.00 0.00 bondrot:chi1:78.7: 0:359:5:33.138:18.517: 5.531:34.219:17.937: 4.659 cos:-3:60:3: ATOM 1 1HB TYR 61 34.766 18.777 4.206 1.00 0.00 ATOM 1 2HB TYR 61 34.927 17.409 5.315 1.00 0.00 ATOM 1 CG TYR 61 33.836 16.989 3.546 1.00 0.00 ... Autobondrot commands use colons to separate values Transformations: BONDROT:id:currAng:start:end:stepSz:x1:y1:z1:x2:y2:z2 TRANS: id:currpos:start:end:stepSz:x1:y1:z1:x2:y2:z2 NULL # dummy Bias functions: COS:scale:phaseOffset:frequency POLY:scale:offset:polynomialDegree CONST:value Branching: SAVE and RESTORE or "(" and ")" (e.g. to rotate each Chi and the methyls for isoleucine the sequence is: rotChi1/SAVE/rotChi2/rotCD1/RESTORE/rotCG2) Set orientation: GO:angle1:angle2:... Include files: @filename Comments: # comment text %s %s HELPVERSIONVERBOSEQUIETEXPLICITIMPLICITDROPKEEPDENSITYRADIUSSCALEVDWVDWSCALEinvalid scale factor: -scalevdw%gADDVDWinvalid vdw offset: -addvdw%gSPIKENOSPIKEKINEMAGENOGROUPELEMENTCOUNTDOTSUNFORMATEDOUTSIDEONCEBOTHSELFDUMPATOMINFOSCSURFACEnot waterSCSEXPOSEDSCSASURFACEnot waterASACCESSASSCANalta blt40 ogt33sc alta blt40 ogt33alta blt40 ogt65,(not water ogt33)invalid scan type %d, for more info use -helpSEGIDLIMITNOLIMITLENSNOLENSMCDUMPH2OHETSNOHETSWAT2WATWATERSNOWATERS4H321POLARHNOPOLARHNOFACEHBONDNAMEno group name after -Name flagIGNOREno pattern after -IGNORE flagCOSCALEHBREGULARHBCHARGEDDOCHOCHOATOMCOLORGAPCOLORBASECOLORCOLORBASEGAPWEIGHTBUMPWEIGHTHBWEIGHTDIVLowDIVHighMINOCCupancyOFORMATXVFORMATONELINESUMMARYDEFAULTSaltA ogt33NOHBOUTNOCLASHOUTNOVDWOUTONLYBADOUTNOTICKSSTDBONDSOLDUNOPARENTOUTCOLORno color name after -OUTCOLolor flagAUTObondrot%s flag instead of filename after -AUTObondrotrcould not open -AUTOBONDROT file: %sno filename after -AUTObondrot flagREFerencePlease cite: %sFor more information see %sCHANGEsDEBUGunrecognized flag, %srcould not open file %d: %s*SIMPLE SELF DOTS (for more info use -help flag and look for <>)altA ogt33rcould not open file %d: %sno input filesHIS:his HD1: hd1: HE2: he2OXT N O modelNumber[%d]==%d RES{%s%d%c}[%d] ring(%p) %s :ASX:GLX:ASN:GLN: O atom %s will be treated as oxygencould not allocate space for new atomcould not allocate space for new dot N C N C P O3*: O3' P O3*: O3'CYS SG CYS SG %4.4s%c%3.3s %c%4d%c(%c%d), %d: %4.4s%c%3.3s %c%4d%c(%c%d) %s%d %s%d %s%d %s%d greentint blue sky sea green yellowtint yellow orange red hotpink pale_green cornflower_blue sky_blue aquamarine green yellow_green yellow orange red orange_red light_grayredredgreengreenbluecornflower_bluecyancyanyellowyellowmagentamagentawhitewhitepinksalmonorangeorangepurplepurpleskysky_bluebrownbrowngraylight_grayblackblackgoldgoldyellowtintyellow_greenseaaquamarinepinktintpinkbluetintlight_bluegreentintpale_greenhotpinkorange_redinvisibleblacklight_graywide contactclose contactsmall overlapbad overlapH-bondssurface@subgroup dominant {%s} @master {%s} @master {%s} @master {%s} @master {%s} @master {%s} @master {%s} @pointmaster '%c' {McMc contacts} @pointmaster '%c' {ScSc contacts} @pointmaster '%c' {McSc contacts} @pointmaster '%c' {Hets contacts} lens@dotlist {x} color=%s master={%s dots} master={%s}%s lens@dotlist {x} color=%s master={%s}%s @vectorlist {x} color=%s master={%s dots} master={%s} @vectorlist {x} color=%s master={%s} @dotlist {x} color=%s master={%s dots} master={%s} @dotlist {x} color=%s master={%s} %s%c %s%d%c{%s}{"}%s P %s%.3f,%.3f,%.3f {"}%s %s%.3f,%.3f,%.3f %s%.3f,%.3f,%.3f WCCCSOBOHBbegin_object %s%d mode solid --none--124colour %s move %.3f %.3f %.3f line %.3f %.3f %.3f sphere_xyz %.3f %.3f %.3f 0.03 end_object begin_object %s begin_object contsurf instance %s%d end_object wide contactclose contactsmall overlapbad overlapH-bonds# begin %s # begin object # group: %s # group: %s # (%s %s) 124%.3f %.3f %.3f %.3f %.3f %.3f %s %.3f %.3f %.3f %.3f %.3f %.3f %s # end %s # endgroup: %s # end object # endgroup: %s wcccsobohb%s:%s:%s:%c%4d%c%s %s%c:%c%4d%c%s %s%c:%.3f:%.3f:%.3f:%.3f:%.3f:%.3f:%.4f%.3f:%.3f:%.3f:%.3f:%.3f:%.3f:%.4f::::::::%s:%s:%.3f:%.3f:%.3f:%.2f:%.2f :%.2f: wide_contact close_contact small_overlap bad_overlap H-bond subgroup: %s atoms selected: %d potential dots: %d potential area: %.1f A^2 empty selection type # %% score score/A^2 x 1000 type # %% external_dots %3s %s %7.0f %5.1f%% %9.1f %9.2f %7.0f %5.1f%% %9.1f %9.2f %7.0f %5.1f%% %9.1f %9.2f %7.0f %5.1f%% tot contact: %7.0f %5.1f%% %9.1f %9.2f tot overlap: %7.0f %5.1f%% %9.1f %9.2f tot H-bond: %7.0f %5.1f%% %9.1f %9.2f grand tot: %7.0f %5.1f%% %9.1f %9.2f contact surface area: %.1f A^2 tot: %7.0f %5.1f%% contact surface area: %.1f A^2 accessible surface area: %.1f A^2 %9.3f%9.3f %s#%s %s %s %9.3f%9.3f%9.3f %s#%s %s %s %s%d %s%d @vectorlist {water H?} color= gray %s%d H? HETATM%5d H%-2d%c%3.3s %c%4d%c %8.3f%8.3f%8.3f%6.2f%6.2f new H {%4.4s%c%3.3s %c%4d%c}P %8.3f%8.3f%8.3f {%4.4s%c%3.3s %c%4d%c}L %8.3f%8.3f%8.3f Probe change log: Note: Not captured prior to Aug 1998. JMW = J Michael Word 8/ 7/98 - JMW - added segID parsing for XPLOR compatibility 8/10/98 - JMW - added formatting for O and XtalView output 11/12/98 - JMW - use table to parent H atoms in std. residues, made GAPweight expand with expanded radius, and reorganized O format output in chunks and changed xview format colors and modified hydrogen name parsing for HG## and HE## 11/15/98 - JMW - added -stdbonds and -noparent flags and built a complete std AA and NA connectivity table 11/23/98 - JMW - extended std bond table for truncated H names 3/ 8/99 - JMW - atom names can include * and ' characters 3/11/99 - JMW - fixed HBond problem with implicit hydrogens and altered the skipping of MCMC to skip them only if within a single chain and not a HET 3/16/99 - JMW - Made water donor/acceptor insensitive to names and extended atom name parsing for wierd HETS 4/05/99 - JMW - Fixed typo in error checking in parse.c for processing within _ of _,_,_ 4/06/99 - JMW - Updated stdbond table for NT and OXT 4/07/99 - JMW - Cleaned up compiler warnings on initialization and unused variables 5/10/99 - JMW - Added AIB,ABU and MSE to mc hbond NH & O list and added HN to the list of aliases for H 7/12/99 - JMW - Begin changes for version 2 7/17/99 - JMW - Added support for autobondrot, display ref. 8/ 3/99 - JMW - Fixed typo in UpdateHydrogenInfo about bins 8/ 5/99 - JMW - Sort autobondrot atoms in residue order, add include file processing to autobondrot, add -notick and -kinemage probe options list process Nt/Ct/res for moving atoms 8/16/99 - JMW - Flag -kinemage forces kin format (for -auto) added CA-CB for gly in stdbonds for mutants 9/ 2/99 - JMW - Added stdbond info to support alternate name C5A for the methyl on a THY nucleic acid base 10/ 5/99 - JMW - Dropped unused variables flagged by compiler 12/ 6/99 - JMW - -OUT shows the contact surface area and the solvent accessible surface area -ADDVDW for radius offset(-SCALEVDW for scale) -OUTColor sets the point color for -OUT 12/13/99 - JMW - added shortcuts: -SCSurface, -CONTACT, -SASurface, -ACCESS 12/13/99 - JMW - renamed: -SASurface to -ASurface 1/ 3/00 - JMW - added names to surface shortcuts 1/13/00 - JMW - renamed: -CONTACT to -EXPOsed 1/14/00 - JMW - fixed TRANS keyword in autobondrot 5/ 4/00 - JMW - changed -u output to print spike coords and added -oldu flag to give the old output added -ignore flag to drop data from input 5/31/00 - JMW - Added modified bases used in tRNAs Included new properties TEST_ACCEPT_ANGLE and CH_DONOR 6/ 9/00 - JMW - constructed chain of residues view of atomlist in order to support ring normals 7/ 5/00 - JMW - inlined inRange for speed, remembered inosine, dropped dummy atoms, added -segid flag, fixed bug when water was used with -auto 7/27/00 - JMW - added code to free extra memory at end of run 10/31/00 - JMW - added O2* & O2' to NABackbone list (oversite) 11/ 6/00 - JMW - changed malloc.h and memory.h to stdlib.h 11/14/00 - JMW - added -basecolor & -colorbase to color DNA/RNA 11/19/00 - JMW - fixed naBase typo for 7MG and added -nofaceHB 11/27/00 - JMW - updated properties of odd bases in select.c 11/28/00 - JMW - added H2U to base class table and moved PSU 12/01/00 - JMW - fixed H atomclass bug with -colorbase 2/14/01 - JMW - changed LowGoodCut from -0.2 to -0.4 7/11/01 - JMW - dots no longer broken out by element in .kin, added -element to generate old style output 7/25/01 - JMW - negative residue numbers in patterns 10/ 1/01 - JMW - allow Nterminal fragnents to Hbond 10/ 9/01 - JMW - take out Nterm code and make CHX HBs an option 1/23/03 - 2.09 - JMW - Run default now:-3 -mc -het -self "altA ogt33" was: -het -self "altA" Default for -ignore is now "olt1" Recognise insert codes like 123a, 2B-3, & insC Fixed bounding box water-H bug in autobondrot! 10/14/03 - 2.10 - JMW - Fixed bug (found by Patrick Reardon) caused by filtering out non-target contacts too early Also made sure atoms in different models can not interact in any way. Also changed how alternate conformations in in different residues interact. Now altA and altB never see one another. Previously, they could if alts A and B weren't the same res. Added -minocc flag with a default of 0.02 as the minimum non-zero occupancy. Added -changes flag to dump change log. Oct 2004: DCR code annotations, fixups, default modifiations 10/07/04 - 2.10 dcr041007 now presumes atom named _SE_ is Selenium i.e. refmac or cns missadjusted name. halides flagged as negative ions and H-bond acceptors default: probe infile > outfile same as: probe -3 -mc -het -self "altA ogt33" infile > outfile try : probe -4H -mc -het -self "altA ogt33" infile > outfile dcr041009 pointmasters M==McMc, S==ScSc, O==Other(McSc,Het--) dcr041010 -onlybadout option for Bad clashes only dcr041017 default -4H, pointtmaster P==McSc, report counts dcr041020 master= {surface}, more work on count reports dcr041020 annotated (NOT implemented) writeHbonds JACKnANDREA dcr041023 2D array of count information dcr041026 NOT report count IntersectBothWays re probe update dcr041101 -summary colon deliminated multi-count report dcr041101 -oneline summary all on oneline dcr041101 -DEFAULTs same as: <>, but allows flags like -summary or -oneline 2.11.041112 by agreement of 041110: maintained now by dcr 041112 -nomodeltest for mage/probe (Lmodeltest) see 050121 041114 more fussing with NMR models 050111,17,18,19 flow, esp. autobondrot, annotations... 050119 very low occ atoms have presence but not show contacts 050121 remove -nomodeltest stuff, mage now sends model # : %s :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld : @text probe: %s %s :CONTACT: WIDE : CLOSE : SMALL : BAD : H-BOND : SUM : :MCMC :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld : :SCSC :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld : :MCSC :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld : :OTHER :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld : :SUM :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld : %s:CONTACT: WIDE : CLOSE : SMALL : BAD : H-BOND : SUM ::MCMC :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld ::SCSC :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld ::MCSC :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld ::OTHER :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld ::SUM :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :ATOMHETATERMODEL@BHB|BBBBBB,BDBpBBBоBBB BLBlBxBBBBȿBBBB$B@BHBhBpBBBBBB@BpBBBBBBBBBBB|BBBBBBClBCkB Cm(B$CnXB(ColBBBB B4BC>C >C,>C4>C@>CL>CX>Cd>Cp>C|>C>C>C>C>C>C>C>C>C>C>C?C?C?C?C(?C0?C "%s") %s WARNING: %s ERROR: %s ERROR: %s ?us rA7rA7rACCcos?powsinsqrtacosjA"B"B"B"B"B"B!"B|"B t"Bl"Bd"B\"BX"BT"B P"B H"B @"B8"B0"B("B "B"B"B"B""B#"B$!BD0AAAAAA\#BL#B CC ((((( H .C5h!??  ܧ׹fq @ @6C ??expQAAAApPSTPDTPCC  &B&B \&B 8&B &B%B%B%BT%B,%B$B$B$Bx$Byt$Bzd$B`$BP$B&5 @         ! 5A CPR S WY l m pr   )     p??_ ?C;??AAAAAAAAAAAAAA*A>ANAnAsAAAAAAAAA1A6AVAjAAAAAAAAA&A:AZA_AyA~AAAAAAAA"ABAVAnAAAAAAAAA;Zx0Nm:Yw/Ml`y!@~ڣ @ڣ AϢ[@~QQ^ _j21~@@@@ @P@$@@ @4@N@ p+ŝi@]%O@qוC)@D@<զIx@oGAkU'9p|Bݎ~QCv)/&D(DJzEeǑF e uuvHMXB䧓9;5SM]=];Z] T7aZ%]g']݀nLɛ R`%u?q= ףp= ף?Zd;On?,eX?#GGŧ?@il7?3=BzՔ?aw̫?/L[Mľ?S;uD?g9Eϔ?$#⼺;1az?aUY~S|_?/D?$?9'*?}d|FU>c{#Tw=:zc%C1=59VJm=/1@`x3 cPg`c0s6 ;_D`X{rB?'; 0Q`C F s#@Q ؽ!lcbIENDB`king-2.21.120420/king/installer/kingicon48.png0000644000000000000000000000654111531212656017233 0ustar rootrootPNG  IHDR00WgAMA|Q cHRMz%u0`:o IDATxbd``0@1 (4=@C4=@C4=@C L, @V * IoL"LڨtдX[RR< ~CWmS3*-Xa Čq ̫{KQFXdX TT4d45XX9=ǰ|n5ú_<6k ՙB $E39a w|dpbra  f| ή va 2Z " Bpu߾exy(%޳'qz],&.b6t=w] V| " {]f@n<`& \ a !EexÍx .LB ab/0kN?b5UF!4Љ!#AJZ ?^a:Ï< Ғ@3>{'DX3D*2T.dPְb8}h)ˀ񗁇× w|eLOgq ``o `,;CwO[@Ý;mOcdc`ư( 3#`}a F@$y@mZ)yCf2AI? ێb8|i>peO(qzǟ ?B1O,)ľ ?bP ?~ .,1 u[0D@UF!7gV2~\.0w-n1!ߛ[u<022<{?p3 4ӓlNlg`~A\\ԥ/ Gνaw1g00"< iɁ fxw0?Ze8s\ ^V0g?I&/`b8{A*4=f,>#">d@Dy@Q ayY b ~20l=ܕgpuB|"U}.n ?~WeIfjgm-f Æ-nobDޖA]۞  '7G߀iJŤ S?/3p9ex e5Ub(,`g}AJ.3?z'in"ؔUTN|Q\7'O?5dgxvf_3(K1,XAMM6Qa^/?y-Ȱy"n^v9e#g1||@K t U^Vffn_0y!=&9 ._,?pK\D0 10\82AE 0ó0C:??'$=Yq2 1話Rj$DDEo2?>|S %n~`;Б3 _=ddH cndE!/3o`#ÆM~go1ٻ珏 evU< QF`5_?ހ L@lf`8s#֯zppK5לAS2'``hIO@L@0 n|dú}߁? ,+Ν͠ĐltA C p;c? zJ `w4ehjpd?o(ÖOf-Bؿ3j 3p2\'  F* ?ex0!ce ?:@(`gaVdv'0x'23]apS?'^2|!BM11j1ܼ1^.NW?2wbx X d7>3ܾsAR ?n~19O>3Z3V411 l@!3%08zF0ܹ~ T$3| .ReYo3,Xw0 Òo ^1F20ld 'v0aLG/E`pv_;/`31 *r\ ?2y`gWvLxD83|˒!6i _mw1/0ie-{c _;=:/ }``ACǂAgxaE24¥\ؘ##;؟~ew.+` C\g7x;$ó? AEJ YI ̌? Z l2rtoz,Bo?fx q%X 3 0HI0~a V^dx2+73AOKY $0C*<. Nbu t@H1b< 6fJ B  i4;>08\ے Et :Nex7z5@X=Dg pg?eu'dd "hh4=@C4=@C4=@CF鶝&?IENDB`king-2.21.120420/king/installer/king-glass.32.gif0000644000000000000000000000302611531212656017514 0ustar rootrootGIF87a b ҞbzRf~B~v>jƶ"vBJ^z>6f*v&>.z>Ƣ҂BVښ~"ʚ^nv⦊Ʀ~Š*~̖BƚRƦnfv2vZ⺶nܞJڒ2⺒ږ2z.ҲvҢNnިfҚBζzҒ:r*.޾ڪzzjvž>:ʢRڂ2ʎnžڂžBfjΖvV^ޒ.֊Vƚ6~bڮv͞Fں~.κVښ:v>t ƪ~J涖ʲޒ*~ɞNھ~"β^fֶ~ڎ"Զjv~Ƃ&ҾʞRҚ2zBzή~*.v>ڮZ⺞r^>:BF:~BzʺJ¾.Nޮfz~vzʦVԶҶvފ.ºچ&ҞRંRږ2jҲ:ޞ>~FšڂΒ.bz>rF~r~*z΢J~zz>fJ.>V>fz*²Ɔ>ҊZނ2Ҿ6zʶn⶚ޖ.~’Nڂzڂ*–ڊК2^FN:, `HO*|@H"6lXM$D JQ<Ĕ \:s-P4Z:ʲֺ'^$i$%-L Rpdዷ59cwS):+X.U.&8xYM =fHx"e3d_pƔx;eE?Qʜ(eDed`/dh EWkY* L9'Ŧ}q_K/T"A>@FukJt> rJ!2BF,P` :2T+#"p*,ZDQH{q#H(D#8P]+u!ƭK!6(vH R􂯉&@Bcwr#SERtM'HA +:|Ξ 4h@LL `6@ `D˜ ub@ad򛁋ac`bag`eea՛/ ?~(F h LXz310qp2%am0FV >cx+ d]83|}ww o>adxJW >}eD`&-v <EXeP6fWa$XY nd8v/gLBD28h1D2Z=ݩ g_`b0fՖbxÅ+_Q A OcZfj`h )g+ - "9@AP&``kǐV)3o&֋ j ** GνGfUAB/opU0<Ë99~^n!v6&_xpߏ5~YdD3D80u1ȩ2M OgÓ 2_=|Yӧ > ( p30heHOObnfbxt :/83gd`fd_e2/ e`N8凂X) \| ongzzM^^n!Ni?wN^[ 3`d&yN) 6.I ~30;) 3`I?Xd$ttt|&w0|灅+Cv^1oD_hf`AQJCwp0O bX"_1 2ynF{CN֞ z ?~f8>÷o~``v;k/yVO`K/O`ra+&6eiĠk:x0HUa7>| *h~ӟ> "+84j[g=r_32|cF 3>qś  vnq z _=g7ÿ=bxV`Hu*Ac+^\ɠ$'%%ÁSO?$xz/^ T Ԃǐ`f vf C~)2\aꢋ '=zONAXL|7kv.Q`Xu2_g/>Cs󼽹8CqE'>_Ƞ,/v /cؼ:/C9#?Drpc4Q`K߼~]uY_X}a[ '>{55%!a~0g( O`^']`% |?Ù#+>?^Π* . O߰0ua %p@$##0c &u1 / ,3ZNe8r. 4X s~>`%_T`)9vVf-cUb8˫ J2 ?~0a3 .`M H 6 jJ| `w=? )`e8pOPp10+A*~dd-8fH} .*yB 1a `/HDb00X80Iȁw/-cd@o a?!!.]0J_?8?2~J9CrdyNn/c/ <#a /n+ jjW OfQa+3| L>a2b "R`'#l}vgxCF+CNtUl 71H | 09a E~ \*s33X2|*5YVf?`K7`#oT}@ L`30op  s8NoNb{,3db{)>~A umYx޽yʰki4;nNV`3\'Bu$i?yAef~= /?R '1I0\9ۗ <" c3`w&"~DX03|e8AJ 츷2ya c8v7$;çxX0 FVa Nls?1gaW6fxp7û{k$<~ ) %h_\MEAmy5UUV0ѳo L^/ \L [g3ܿw?U2p[ ^1/ Daq..P@y?> ((AZJA[] ػ'+ 5 ;L \}y & ff[ |?2p3>;ߌ wex0G|T SM@IALL% *}WBۧ ܌ꎕɓ.{`ˠ*E;7v `[%? 6 Ƚ/yKGع_=m ՘pPfTWwV0O " l]pg*B L!>l-1HI1{j0h@,x4? /d5ye}?\A fU}/11< XXقB )kh4+ R@ ` sl-`f Bb`p;gt_g~/S~ˠ,+é /. L-=kHIITkb6t мC >y z2 >Gb<9̿xt`Ì%g./`YAB7003762Ȱ0H1I03<}t _O"l[5Y2d0d2=޹wdX:CQtN.^70AZB{O3o?` ahYQaZ `B|=1}U.`]XMgx5Ihm$K{}3?͠, 03=aS >aF>cd`l %}`W`J rgMU)!!!7?0H1D0Df080 cx:B `ƒgfv`m/?A(AGGA9v`#F!!֝j"Çm(cPy,?L G/|f48`ÝnAc O67e59ye?_0Aؑ!0$; AS׆3 ?ڐ Pà)?[kS/2Ʃ l/mX4&d0x0[U3H+203s1=U B>38pg_n?bdX1 E-?P)V 68}Ll *A^ÜA^S 53|xrAEE2x Is2i`H`zϠ F0ÿ?~`#//=070:9@ @p[I1\CDhJ`HG$dPVQdf`cb fA 7N.`ynǯs^Ï?M>c  qC0CbCH"#`AFt3]w1|AB R'F1tK'2nϐ"Ð3+×_^,3pp  rXs02vaɺk >K J+@H; 4Ct~wOA`KP4Xo?~-bbLaӮ >gdh-(%8%`v6 ?iY=ɰt9M{\aX@TJ1XJ3X+3* 2c`c 0|0ܼ̅G v`  o}ax#ë7C GrX4UĀ)\VNy'`ךz : he402k*z_'?%I[ H[@G3Ġ, [- @t^+<8_@ @#>h@4 x&5@#uW'ƱIENDB`king-2.21.120420/king/installer/kingicon20.png0000644000000000000000000000173211531212656017216 0ustar rootrootPNG  IHDR gAMA|Q cHRMz%u0`:oeIDATxbd``@E@L4  >I~>n11Q1I_?2ܸy˷py9Q+Sew/0pgj/CJr,:???7 yvyVP S^b ΛȠ a OH0q2pe`eXÏwa `ni#kZ0 [WW#ýGQIENDB`king-2.21.120420/king/installer/KiNG.icns0000644000000000000000000014463711531212656016227 0ustar rootrooticnsɟICN#?<xo1\k9G8yo????????????????????????icl4  .˿о ܱ -(˿Ẽ ++ icl8X _ V-44 V W. , W+ 4^3 - +4^ W4,4X WY ,4 +5X*.X3,55^X44_5-,_ /^4- , X _^4 XX+ -.4 ^ 4YW*, X X _,.^- 4X  XVil32ii T D)# 5BBfXH #&|֑Pϸ #cŮܔrZ #bV=n ´b^I # E^D | #sӥ.U #yݻñI #~œ U #1Ӡ #aۨ, # Ɖ֛ # طB # y7yö  # c%tm #(nF8 # O]Ԍ K؇а9 # ⩼y xެͲ# ##IJ5 oӔ# #  ) )W C j hii T D)# />>]pF= # v}H輜 #[۷iٸP #YK6_|UQ@ #Ÿ<X< ~l #mճ'J #j? #n ùѧJ #+鵋 #[$ # ݤm # 7 # h,`  # ] f]\ #"ɾ_tm86 #浭?Uʷz=ogu΢0 # qȍi fÑʹ #ws. _ # # )W C  j hii T D)#31?0  # `<+u8I #?ЉDAB[?NoNZT, #=aO(?^/dVK,)" # یU!C7U hH6 #WRFxFTzsD% #Y4TKH #2Q@Z_zO$ # 5]NB #I/]#6^ #|=\ W< #TJ!e # s[2 EL # LVT n #g;ʓW-%G / #UV[9S; [ s #']on*_cO3 (e5W`I  #ESRPJ7 'TST:  # )W D j hl8mkO]IOMich#H?_?*I^)8=ru" /OW+ɓ?O Y,WEI'ich4ޯ ͯ* +̼˿бŸ бܻ˭˯ܱ , ۺ  (,-*, ۿҟ(+ _( ,.+,˻߯ich8 VVୂ߭V,^4_^,,-^,,-4-W+3X4X4X_-4|+-. 3-4W-4],4- ]-3.34-43.W,4 4W%W34W+2.33.-3W+]3X.-V^- WWX4XV4-3,_ -^\+XWX,+- ^Y-3,X32-4-,4 433^X43^W.-3-4W4-4,-W_ -,_ -X- X_4-4+4-35^_---43.45X .,3- ].__3 X -_4_-33.3/^X XW2.-^_4-W^4-^54342.3%W 4-4._^]%--3{3-.4-X_,+X4-- Y23X-4W .4,-43--.- -.33^-- - 3.^WX33X3X-.3.^VVVih32SS   Ճp d? +)% 5bjTN- % 9mܠR $uo  % %iͿʉ Lܕ  %W濪ˡ݂jT % `޶͸hh] %!SزGGGٶȠJ.?6  % ݺ7r'ãO %]g ިƙ* %&܅¦+ %ޟ $`ϭq %!xEú %&nzɤ( % ), ع) % ߜB % ;߱ % hЏr % ¾~ %ޣՙg %g)u/ %G, Qƞi % ~vl^ %.Y Iܞ.q{>   %)\ :6 qasȋ+`7 % lS`!g~|ͨP % vwŽͩ@&Ðǹ9 %Y”! -^  %4wxA =͎8  %   $66#  % 0\ G"I5cV  UJIUST   Ճp d? +)%   ,YZCA( % 0aۋC gXuv  % _̻Ȯy B˺  % L糒q`سþK % P٠[ԙż[{೭S %!I??΢õ? ~ڨB(70 %0i"E  %Sߴ\Ç$ % ã" zýv{% %̹ ۆŸSƖc  %i<ŧ쟦}  %|an®" %#& κ" % ų|ƻ4 % 3Ñoĕ % aؖ¿rpa % dŬ %ezgV %ļY!]h°% %@񪿮%A~Tͅ % np]WM %&vN?ڶ%Zd0  %!諲O 1.\ÔM\nn$Y- % yݲúUDyߵSʈQbbȔE % `Ȇ_7ɨuҶ0 %NĿº #O %/ji9 2{. %   // % 0\ G" I6cV  UJIUST   Ճp d? +)%  ="  % 9yG 9Ӵ4 4 % >ɬܞOB !ЙyA_F % *C?@HZU: >hLU\UR+ %VPIF-{$dU0SߍMSRQPQ2 %&TWL"&/`Q"axNOF# %wWOLWGWRgYIH# %3KS55QVJuGEH %S_O]TAIH@ %YVEնdT%EG2 %OVT8#!eIXKA %3NM4 Ke=]eNJ  % >WQњPQ  % dWe_ % ia" :dB % H,]a' ]f" % zDUS ,fT % jWVC " [f %F_T,  aX %,HVU-}, %v{YU8, _z %]1)!QUE ") ^E % P`#gVS  \* " 1E  %KW_e ^|US( "r, vP %GZtn {tKOHDoH;qIM %)pfUV\eWWLPE YUb\bZTX  %>QPMG4BWRRT9 %  % 0\ H" I6cV  UJIUh8mk M_M?MM-MMics#Hk?P??ics4὾˻ۭѻics8VVVW^-^34-X,^X-.,XW33,-_4+XX^WX4^Y-4^3-^is32f@!"@">)hrO o|ȯqȞ_%q<ڈt%L'o¢  jʤ6`+htѷ"!ӎ OB,$@!"@">&dhKl ikkS"b9um F"l [6M}r%}[no}{OB,$@!"@"5VC   ,Q ﳈ˟Y % '+v̋cc`]g6 % 3pkt6 jҲe&Mdb_dߤQ=    % 5h}Яq1 ?ռ})2aܸxbb_gρWO%  0BEGF8 % 5T„ϭl4 6đ? &;۩g_baeܳftu8/\]0 %/ 8K̉ѲyI&  AǞO%&PՎ``edd†ii>7^͵^3 %. 8Lщؼa@+7pˣ\%/c֗e`igdx^ɡЀ5 %- !Bϊ˟jFBQ`{܍ʤ\$6cbntompi`ׂM %, G䅺ōZ旭ǣ\# !IcfutÉɯM % B||y˜kj܅Ğ])[kd| ˼: %* #M\ÖpY|뛆ͻP!,m̆gp蛡¾) % ![zl|į~A!1uǏyw||ſ7  %  9r߅źd, 0xͽ5  % 9rހ»yD0y݈ δr-  %& .YþxM$ +p݅ ǙN!  %  5Wyʁ dB" %Vك Ƨb5 %  +@Xo~ ylXB+ ;lȁ g8!  %  "+3:<= <;71'   0NtqI+"  %      %  %  &%%  /&%  A%&  *b$& O"&! "&$  E"$ -$!  =" &    ]   K= 'ǀ 2  6  ! Z   KŃ <  -ߓ; +܆ЄQ(H}ρJ"%Kޏ23Uކ 4 2 R  U˃0   ) ٵ*   5   *ɀ X    N    8  ( A  /!  # c"$ R?$$  *.%%  &%%  %  %(('),+% %  /0+/:B?77@MRA$  %  !!#&'()'&*. /5>{ödKG[jM&  %   '.6@Qd]77 &3Lžw[PNTdyvK % !5GV|^ni0 +Jʸ|NLwQ % *Mgn5  ">x֐jȷQ %  ",^wЮ8   "O検ʻP % %%'_tͣϻ8 5~䕣ɿR % & %Mzuiloɽ8  7ȿy> % &!*ekгkkѽ~1A噀 F % &!9ehpmƾq'#Nr L % '!<׹z{oov׾pb 'n|}Q %  =}³yaG62jЀR's¶Q % #9{ȶxR/hjπ@  &ܟfSguqrL % ( 'Ł_2o̿2 'x|W6 -,.-+ % )#^ȻP" $zĿs' +r]3  %  G˽O2uc .mm=  % ( z^QӀ$fQ 0lV( %  M׀ Ⱦt/  z"aA  2iu? % +uͽI "c4 8ͮkh/ % Dÿo&'%mľq& DΘdX$ % $ahоN:x~þa J͈tI % / ”;5 Zހf¿O Szzy> % : qſl$ w\?csr5 % !Kɂɀ[ Zɿ.l|n2  %  #pzȿO# )fƾl%i㒇n.  % $~žG ! >|tƾN`嫀r/  % #xɾ: !Yeľfmr0  % $k̼[  qWtzx2  % #h_˺Y$  Yɾŝv{;  % .Gd>  -cɽ}B % 1Ta;  @}oǽ¯R %  8UTTUS: Xh~ľļ_ %   r[Ϳƥƾs& % Y̽s k %  ,aȾɔ; % @|kʾƚU}Ŀɺc!  % Zku¾þa]mu˙C % v^zνɘvqpvƾǿr(  %  \νǩhlnɥJ % -`̽khlqɽ~. % FgĿȸzdhjyĿ˲V % "atkξlbfhοɍ5 % #crϾ{acbgƾǻd!  % $ _{˾zp`a_~ʙ? %  /^¿k]ha_fǾq#  %  LaЀT;`u^\]s¿̧E % lvjȀ;#Au\Y\\οz&  %   e{#.SrYYX^ƿͲO %  , f[8gbVXTqˌ4 %  V!zľ9'Ly]XU[λ\  % рm8boTSTeϙ? %  )$ςžG  $C{\RSRou, %  Vоw!/X}WQPRѭO  % þJ  :pcMON_ʋ9  %  Fνq(OSMOMdӼp. % (/<.MU1 !zѽ;2]mONMLsΥR* % )YQf-  YŀX =yeONLPϿ@0  % +Qf¹c* 3Ľo &(M^NNLQ©fC=':@EC0 % *?pл_+ +Ŀ3 &0dŸQLNMQ}Q\_, &RU& %/ -:tӽf; 3{B% AưpLLOOPpjR]3.UϱpG( %. 0HrƷwZF_nD!"XϬlQUz}q  % Nw΁ɵcXfp5&^ɦubahkh|+ %  3cƾW# %a˿ʿu)  %  3dƾk9%cɀb"  %  )NwjB ![Ǿ A % /Lk tX9 H T)  %  %9Odr| wl`M9% .[V-  %  &-36766540)!'Aaprsro_>$  %     %  %  &%%  /&%  A%&  *b$& O"&! "&$  E"$ -$!  =" &     ]   L= (ƀ 2  6  " Z   KŃ <  -ߓ; +܆ЄQ(H}ρJ"%Kޏ23Uކ 4 2 R  U˃0   ) ٵ*   !5   +ɀ X    M    8  ( A  /!  # c"$ R?$$  *.%%  &%%  %     %   ( %    %Q1*  %  !2hÝ  WʡR0/ % *1B[)Z̖g;--JO2 % Jf DmTM)MwmW3 %  'm-VvWL! }~u.JhwYFA2 % " FMNQUY\\Uwu\BQlUII!"JSX(/EJNgkURRJH4 % $`3;4')*-//@=]`RTLL#fbkmhWRVVQMH)  % %+#A97MIJMQZb~G,f}QVULM-3RR^\YUSSTV RPM- % &Y.TUVVQV1 F8CgR OPQMROHIIPR2 % ' o.SkQQNLMH3 %^UVVOU"QuCGXMPPMPSK>4@D<==D-  % ' U+UZQSPOP<| mwUVVLNQ;#QVLNMNVJ3   % (#I5cSTROO2F(zeUVUIDR@MGFIUH % WnRVUPQ,gqVKI q̔A8MDCIS> % I?^UVTLE5ubTVUPBN DKABMR1 % 8yRVVQO/.}_TVQY9CTO@BNN# % l ^yTVUNN0̀ :^UVPV+ EUN?BPI % "TeUVTHBbN}ZUVNM"#H+SKBBOD %  xVTE7 j aoUVVNG1I.NGCCQA % )qVSTQMQS5Oi YqRU_P>EFWIJSN % 8jLJLNOO>" ~hpRXPCIWMLOR %  TI=?GN=! $rlRXSKEKZPNKU( %  35344 2.{bRVZ1\UPMX3 %  48wTdMqZF_TR[B % WT:uPl"EYT\m) % *AxU%3ooS]z8 % (bsRSNEX4 DbTrc % "(y_S]g b|U^9 % 33}RVTg (hRmo % Y G}QVTf" TWU{K %  F\xRVTW yqQhx %  FqdTVR{G ?cU{Z % !1{TVVRq1  X}T`}, % [ 6RVVQ^ (~gSnh  % e\tTVUNH TYY{? % bv\UVUK8 ) %{lSko % [1}UVVQY& $) E^X{N % ?؀-ekUVVMX %  eyUhs % |YVVTSD   !eV{W % TuWVVQ](  YWd}( % (rubTVVMP % vsY~\  % t)CuWVVRY: !!  )qt* %  cfTVVQU -#  Kvm % 3ʀ w3rRVVRXC&6"  g{E % j [bTVUSS  ?9 "}w %   a7qQVVSY@2A(=U  %  $g nRVVTRQ 29  Mx. %   m5d8'M[bTVURZ* ;3 NQ %  eja3  C5]TVVR[= 5O@ JhX&!2>6 %  'tR`a, m-jUVVRQL $XeB  -A*  4n: % )xQSha( q:WXUUSRS Gke4  Dd/8tң %  n)xQV[{Z6Ucc`WM KIIUZOC-7jhRSU TOYgD$ %  ,]܃jjpuEpEpEp蚜 CEE܋@ttuFt@%t$txuttRPtt믋EttuFt@%t$txuttRPtt믃jjpuEpEpEp訛 EpHEpDEp@Epu =<t#4uh5dt~$ Pr PrPjju,u$u uuuuj0}0}4u uTuPhhu ju uuuuՔ }4EL}Lu Dž#h(ud$$d$$E$d$$E(d$$h`u\0d$$d$$d$$hu% t-ju轓Ãju諓ju萓}4t^ uuu8EL}Lu Dž.u(juDu Ph.u؎@u(juDu u$Phui0}4tDu(EL}Lu Dž.u$Phu q=u&uDPhjju| B=uD uTuPhhux uDPhjju~ =ujjhuɩ=tjj hu觩 uTuPhh'u }Htr=~7EL}Lu Dž#h@u2EL}Lu Dž#hbu u uDPhu;u } =<t}0t}4u hx!Pjju,u$u uuuuf0}0}4u uTuPhhu ju uuuuƐ }4EL}Lu Dž#hud$$d$$E$d$$E(d$$h`uM0d$$d$$d$$hu t-ju讏Ãju蜏ju聏}4t^ uuu8EL}Lu Dž.u(juDu Ph.uɊ@( u(juDu u$PhuZ0 }4tDu(EL}Lu Dž.u$Phu =u&uDPhjju}x v =uD uTuPhhui uDPhjjuz ) =ujjhxu躥 =tjj hxu蘥 uTuPhh'u }Ht2EL}Lu Dž#hbu u uDPhulq o } t=<t}0t}4u hZ}0}4b uTuPhhu( EL}Lu Dž#hud$$d$$E$d$$E(d$$h`u0d$$d$$d$$hu }4t=u=u uTuPhhu< V uTuPhh'u }Ht2EL}Lu Dž#huPjju,u$u uuuu]a0}0 ju uuuu譋 t-juIÃju7ju}4t^ uuu8EL}Lu Dž.u(juDu Phud@Lu(juDu u$Phu~0}4tDu(EL}Lu Dž.u$Phuz =u/uDPh}HPjut =u,uDPh}HPjuv \=ujjhud= u uDPhum =tjj hu% P P_]UEE jFE EPPE u5$u hu E0uhuEE;E|iEEh4EEE4}t EEuu>E덃hu$UEE}p~3u ju5d$$EEP芡EŃu jj4d$$ht]UEE}p~ EEP蜡EUh5dtUh 5dt?hp5dt)h5dth5dth5dth@5dth5dth5dt}uh5dt@hV5dtnh5dtXh5dtBh 5dt,h`5dth5dth5dth`5dth5dth5dth 5dth@ 5dt|h 5dtfh 5dtPh 5dt:h@ 5dt$h 5dth 5dth 5dth 5dth 5dth 5dth` 5dtd$$h 5dtjd$$h 5dtJh 5dt4h@ 5dth 5dth 5dth 5dth`5dth5dth5dth 5dth`5dtnh5dtXh5dtBh 5dt,h`5dth5dth5dth@5dth5dth5dtd$$h 5dth5dtrh5dt\h5dtFh@5dt0h5dth5dth5dth@5dth5dth5dth 5dth`5dth5dtjh5dtTh@5dt>h5dt(h5dth@5dth5dth5dth 5dth5dth5dth@5dtxh5dtbh5dtLh 5dt6h5dt h5dt h5dth`5dth5dth 5dth5dth5dth 5dtph`5dtZh5dtDh5dt.h5dth@5dt}h5dth5dth5dth5dth@5dth5dtth5dt^h 5dtHh 5dt2h@ 5dth 5dth 5dth!5dth@!5dth!5dth!5dth"5dth@"5dtlh"5dtVh"5dt@h#5dt*h@#5dthw#5dth#5dth#5dth@ 5dth#5dth $5dth`$5dtuh@!5dt_h!5dtIh$5dt3h$5dthw#5dth %5dth`%5dthw#5dth%5dth%5dthw#5dth &5dtmh`&5dtWh&5dtAh5dt+h'5dth@'5dth'5dt}h'5dth (5dth`(5dth(5dth )5dtqh )5dt[h)5dtEh)5dt/h)*5dth@*5dth*5dth*5dth@+5dth+5dth+5dth,5dth@,5dtih,5dtSh,5dt=h@-5dt'h-5dth-5dt5 h-5dt jU5$h- jUEEEEEhtDžEEEAE>E E$?E(E,E@EDEHE0E4E8E<}LtDELEL@EL@EL@ EL@ULEPBEL@EEEE;E|%EE EE8-E;E|9E@8u0E uPuu5ht jh-E@Pt jjh-E@P̯t ijh-E@P觯t<?jh-E@P}t<jh-E@PSt4jh-E@P)t4jh-E@PtE,jh-E@P֮tE,ojh.E@P譮E}tj E@Pu E0jh .E@PnE}tfj E@PuͬEEEt EEEtEjh.E@PE}u%jh.E@PȭE}uj E@Pu"`3Eth3Etd$$h@.P P自jhb.E@PE}j E@Puzp3Eth3Etqd$$hi.PR Pߩ9jh.E@PwE}t8E EE@8j E@Pu轪E$jh.E@PtE jh.E@Pt*EHE(E@sjh.E@P豫tEDJjh.E@P舫t jh.E@P^tE(jh.E@P5tE@jh.E@P tEEjh.E@PܪtEEnjh.E@P謪tEE>jh.E@P|tEEjh.E@PLtEEjh.E@Pt@EEEE0.E,E33?E<.jh.E@Pt0EEE,E33?E<.8jh/E@PvtJEEEE0.E,33?EE</jh/E@Pt:EEE,33?EE</~jh/E@P輨E}j E@Put t;qEEEE0/d@ EEEE00/E4`/d h/P蓿 P z jh/E@P踧txP jh/E@P莧tP& jh/E@PdtP jh/E@P:tT jh/E@PtT jh/E@Pt@~ jh/E@P輦t`T jh/E@P蒦tD* jh/E@PhtD jh0E@P>tLH jh 0E@P tH jh0E@PtHx jh0E@P趥tdN jh 0E@P茥td$ jh"0E@Pbtd jh$0E@P8td jh&0E@Pt8 jh-0E@Pt8| jh60E@P躤t|R jhB0E@P萤t 蠱,uuh2P P街E}&}}E08E0E h3E0U1Ed@DEh/2uNtLuht茱 uPuu# 腰Kuuh2P P膖 hK3S jUEE}~"UEUED E֋E@@E@DE@HE@LE@PE}~UEDTEUEEExTE E}uE@X@;EE@%@ E@aPEE} t}At}1t E,}Bt}2t E}Ct}3tE}~3UE|TEURPEURPEE$E}~UEDTEUuu uUE}} UE BHE}~UUE<tIUE@XU@;BDu+EU@L;BDuUE UE@ @AEE}~YUE| tLUED @XU@;BHu-EU@P;BHuUEL UED @ AE럃 u$UEE}~DUE<t8UE@X@;E uUE UE@ @AEUEE}~HUE| t;UED @X@;E uUEL UED @ AEUEE@@E}~UED EE}~UEE}t UE BDUEE @X!Phx31E@TE \Ph3t\ E @aPqE} t}At}1tE@X*}Bt}2tE@\}Ct}3tE@`E @% E p'u4ExLuUE @X@BLE @XpuE xuTE xa tE xaAt E xa1t7E@@Ex@uiUE @X@BPE @XpuAE \h3Pשt&UE @X@BPE @XpuE @%FE \h3PME PXAD;BuE U RPE}~>UE<u+}tUEDU @X;BXtMUE EE}~>UE<u+}tUEDU @X;BXtMUE E뺋E \h3P7uOE}~@UE| u,}tUEDU @X;BXtMUE D EUEEE E?EEE hPEE}uEEUEEEE@X@;Eu!E@X@&:EuE@X@':Eu}tuu䍅hPE@X@':EPuhPEE@X@':EPuhPE@X@EE@X@&EE@X@'EEPXEBu荅hPEE}tuu䍅hP'juhP,UWVEEEE E?EeE܃ hP u{E}u u}tE? u|u uA}ug u}QuuuuE}uE@X@;Eu!E@X@&:EuE@X@':Eu}tuu hPE@X@':EPuhPEE@X@':EPuhPzE@X@EE@X@&EE@X@'EEPXEBuhP=4t) Epu uTE@$3tEE@,3t,E@43t u} u+EUǍr$EUxr$UE EE uE$PuE8uEU܉EJu܋E0JtU܋EUE܉EUEBXEPXEB u{( u{EEu=<4u5h35dt}tuu hPqjuhPv uE e^_UEEEE54 E3]EPu EP|pE}tMEE}u?}uEU@!ЅuE@uuu8vEE빋EUEE} t E ]=4t u] u]EMUWVE j4蓡E}tKEEU xEUx}tUEUEEe^_UEEEE}uEE u-EEUE j(٠E}tZEE@E@ E@E@' E@ E@& E@E@E@EU}t} u E|EE;E tgEU @;BuREU @&:B&uDEU @':B'u6EU @;Bu(=xt&E UPR譟uEEEEU}t Ep uڠUEEEE}uEE uEEUEEEE}uEpEpE@&PEpE!Ph35dt h35dtԞE@E}t4E@X;Et'E\Ph35dt蛞EEƃh5dt{EEBU}t u袟UEEEE}uEE uEEUSE jdE}UEBXEE@E@E@E@E@E@X!Pu#wE\PuGwEPXEBEPXE B EPXEBEXX u2vC'EXX uvCEXX uvC&E@X@] uyvCaE@b?E@X!Ph3tWEx]AuN]5<h3UCE\Ph4xP  xPk]5<E\PCE@ Ep&u7E@ =lt[]E\PE@X!PC 7EURP =ht"]E\PE@X!PיC 55|usPu蟊=\t] u芇C E$PuuMUE@DB@A<] u?t[P] uht[TE@XPu{u]u2PEp[H] Ep[L h@4踁E]UEEE}u=DuE@%=HuE@%uy} t$u utMUE BA}t$uuݒtMUE BA}tuu賒t E@EE;UEEEEU @HBHEE]E $PE$Pw]Eh4EtEMEtEEUu uOwEMUu ulwE]EEEUSTEEEEEEE@ =Tt Dž8 Dž.EtuР Ph9uWo }t}tt}tn=t= Et u"Puv Ph@9un EtuK Ph9uni=t: Et u负Pu Ph9un &Etu Ph:ugnƅ}uE@EExD u ƅ/ƅ ƅ'E@Dƅ'ƅ ƅE@X@&PE@XpE@X!PE@aPE\Ph#:8Pfo 8PRmt58PPpo8Ph/:uvmh4:uam=XtLExt*uEp@oEuu'm5h3u m}t}tb}t\ Ep8p4Ep0p,Ep(p$PuEp pEppEpp Ph@:ulP5 Ep pEppEpp Phk:ugl0EEEEe^_UWVPE.E.}:} t}t EEEE} u}t EEEEE}~uEth:ukh:ukE}p~GEܿ:UEEE}t u貜PE}u=Xt)ExtuEp@kEE:E;Etuh:ujEE܃}t}tQ}tKEp8p4Ep0p,Ep(p$Ep pEppEpp h:uj@+Ep pEppEpp h ;uRj EEEh@;u(jER}} tuhL;uih];uiE}~;EE;E|#E@PEtht;uiEӍE뽃h@;uie^_UWV0E.}Ⱦ;} t6}tuh;uguh*<u&ge^_UhEPE$PE $PCE@Hd$$EP CEPE$PEPdCEPuE]EEEUhEPE $PE$P\CE @Hd$$EPBEPE $PEPBEPuD]EEEUE]E MEE EEd$$fM]EEEUWVĀ}L<E}p~E}~UEEE}u Etu uh`<u^e E@EE@aPE\PE@X!PE@X@&PE@XpE@X@'Phj<u e E@E}/E@aPE\PE@X!PE@X@&PE@XpE@X@'Phj<ud EU@HBHd$$E$PE$P`]E@@E=ttSuEpHEpH-]uuE P ]uuE P~]jE$PE P]E}wlE<E5]EUEUEMd$$sd]'|م|M] M]=tt[Eud$$Ed$$Ed$$Ed$$Ed$$Ed$$Ed$$h<u%c@kEud$$Ed$$Ep8p4Ep0p,Ep(p$Ed$$Ed$$h<ub@h<ubEp pEppEpp }t Ep 舓EE.uuk Ph<uUb0}t/E@Td$$E@Td$$h<u"b E@Td$$h<ubEEmE;Ee^_UWVX8=u hL=uaE(u,d$$u(uh=ua }~}(~h=u^a} th=u@ah >u+aEEĉẺEȉEЉEԸEEEEE}p~6E}~EEE؉EE܉EEUEEE}E}tG}$uEXP DžPB>Pud PhQ>uN`}u} e}t}thE]E@@EE5]EU@D݅@Md$$`]EE]EE]}t}twE]E@@ٝLE@@EtOمL@]EE]ء<مu^0}t}t]E@E(d$$Eu,d$$E@E(d$$Ed$$hY>u]0E@E(d$$Eu,d$$E@E(d$$Ed$$hY>uJ]04E@E(d$$Ed$$ht>u] EE]EE]EE]EE]EE]EE]}u EE]EE} E@E(d$$Eu,d$$E@E(d$$Eԍd$$h>uY\0E@E(d$$Eu,d$$E@E(d$$E̍d$$h>u\0E@E(d$$Eu,d$$E@E(d$$EЍd$$h ?u[0E@E(d$$Eu,d$$EEE@E(d$$EEEЍd$$h`?uE[0EEEu,d$$h?u"[tE@E(d$$Eԍd$$h?uZ Eu,d$$h @uZ}uEu,d$$h`@uZe^_UE4U8EU}~ }$~}ujjh@ueZ}tuuh@uGZE08tu0hu)ZE,8u E 8uTh/h@uYE,8tu,huYE 8tu huYhuYWEĉẺEȉEЉEԸEEEEE}p~E}~EE؉EE܉EEUEEE}E}uk}J}t}t_E]E@@EE5]EUEUEMd$$yY]EE]EE]}t}tnE]E@@]E@@EtuE@]EE]ء|م|M]EE]EE]kE]E@@]E@@EtuE@]EE]M]EE]EE] E]EE}t6EE]EE]EE]EE]EE]EE]EE}u%EEEu(d$$h@u2WE}t"Eu(Ed$$h@u WEEd$$h@uVE08tu0huVE,8u E 8uTh/h@uVE,8tu,huVE 8tu hugVhuTVUEEEE}uEU @!ЅtEEEڋEU(EEEEEEE}t }tEEEEE}uEU@!ЅEPjju ju肼 E}t!EPjjuuu] EEE}t25djuu=d~juu}uuuWE=<t/=pt&E@XpE@X!Ph!55dtTEE}EE}uEU@!ЅEPjju juq EEPjjuuuR E}t25djuu=d~juuzuuuTE=<t/=pt&E@XpE@X!Ph!55dtSEE EUWV`EEEEEExt Ext EPE@EEExu uyAtEtEUE;|MUЍA}4EPEPE$Pz/EE E}uExu}ExttExtkEE`$EE`$ɋEE`,EE`,EE`4EE`4EU@HJHE}t EE@E_}tEEEEEe^_UWVSLEEEEEEEEEEEEEEDž}t}t DžE}uEE=`th@uBQEEE}~ }u E EE}u Epց9EEU@!ЅtCEPjjuju護 E܃}tEPjjuuu舷 E܃}jjuu5\uuEȃ}t}t } t=<t/=pt&E@XpE@X!Ph!55dtOEURP=8t#E@]jEpӭ[HE@PٝE@PEtمAEtE@TAt#E@%tE@E@HE܉E؃}uE؃xu~ EpthE@PٝE@PEtمAt)E@TAEtE؋U؋RPE؋@E`EU@!ЅE@%ExE@%twEE؃}tiEU؋@X;BXtY Ep#u9EU؊@a:Bau+E@PAEtEURPE؋E둋E@%W} t]}tW}uQDž jdMt+Ulj󥋕ẺE̋UE@ BUE@ BUE@%BEEEPjh>uju E܃}t"EPjh>uuu EEE܉E؃}u0E؋@%E@HAٝPE$PE؃$PkٝDžE؋@%EE;E|vM؋EAX;BXuZE@%tDEمل EtUE؉U DžE뀃u(}w"UE؉U EE؋@EEEE;E|EE؋E؋@% jdKEԃ}~EԋUlj}tEԋUЉEԉEUԋEUEԉPE$PE؃$P'Eل AEt!Eل AAEtaEل AEt ݝ>Eل ݝA݅ݝ݅ݝݝ݅ݝPQ&Eԃ$PPE$P&E@E@E@]ԃjEp[H]ԃ Ep{[Lh@Eԃ\PKUԋEԋ@ BUԋEԋ@%B}t E Eu=`_=E@Td$$E@Pd$$Ep8p4Ep0p,Ep(p$Eԋ@X@&PEԋ@XpEԋ@X@'PEԋ@X!PE@aPEujhA5dtHPEp8p4Ep0p,Ep(p$E@X@&PE@XpE@X@'PE@X!PE@aPE\Ph`AuIH@Ep8p4Ep0p,Ep(p$Eԋ@X@&PEԋ@XpEԋ@X@'PEԋ@X!PE@aPEԃ\PhAuG@}uEEE1EU@!Ѕt>E@%u/ExtExt Ex tEURPEErE:}t*EE}uE8u UEЉ EE܋E̍e[^_UhBuGhuGh BuFhGBuFhuFhBuFhBuFh@CuFhCu{FhDuhFh`DuUFhDuBFh Eu/FhEuFhEu Fh@FuEhFuEhGuEh`GuEhGuEh HuEhHuEhHuqEh Iu^Eh`IuKEhIu8EhJu%Eh`JuEhJuDhKuDh`KuDhKuDh LuDhLuDhLuDh@MuzDhMugDhNuTDh`NuADhNu.Dh OuDhOuDhOuCh PuChPuChPuChQuCh@QuChQuChQupChRu]Ch`RuJChRu7Ch Su$Ch`SuChSuBhTuBh`TuBhTuBhUuBh`UuBhUuBh VuyBhVufBhVuSBh@Wu@BhWu-BhXuBh`XuBhXuAhXuAh@YuAhYuAhYuAh ZuAhZuAhZuoAh@[u\Ah[uIAh[u6Ah@\u#Ah\uAh]u@h`]u@h]u@h^u@h`^u@h^u@h _u@h_ux@h_ue@h `uR@h``u?@h`u,@hau@h@au@hau?hau?h@bu?hbu?hbu?hcu?h@cu?hcun?hcu[?hduH?h@du5?hdu"?hdu?heu>h@eu>heu>heu>hfu>h@fu> j?USDž$Dž }t}u Dž$ Dž$$Ѝ$Ѝ $ $`$ $Ѝ$Ѝ $$$d$ $Ѝ$Ѝ $($h$ $Ѝ$Ѝ $,$l$ $Ѝ$Ѝ $0$p$ $Ѝ$Ѝ $4$t$ }Dž ~   8 `x   cDž ~_    `   떃}Dž ~  8   x``   "}t }t } 5555555555555t5p5l5h5d5`54505,5(5$5 555555hthfu8ĐXhEjɍd$$&5d$$4}fE fEm]mEE%FJEW?uuh3]uut5]EUEEE;E~EjE]Ѓuu2E]uu5E]Eݝxuu4܍xd$$3}fE fEm]m}EEE;E|}tEjEE]EjE]ȃuu12M]uu:4M]E;E| EEUЍM EUTUЍE EMEM\UЍE EMEM\EE}EEAEEE]UWVSLEEEjEtE@E U @"Ed$$#2j}fE fEm]mE U @ bEd$$1j}fE fEm]mE U @(bEd$$1j}fE fEm]m j`0EUEBTEU ljEU xrE0PuEPU UE܉BHUE؉BLUEԉBPUEBXE܉EЋEE؉E̋EEEԉEȃ EPH0Eă EP30E EP0E}t}t }t}ul hj}t u1}t u0}t u0}t u0EUEĉB\EE;E|UE R\E E؍EEE;E|UER\E E EԍEEE;E|8UE R\E EE뾍EnE+EEEe[^_U}tG E@\0/ E@\0/ Ep\/ u~/UEU EtM EPQEU @BEtM EP @AQ EU @BEtM EP@AQEU BEtM EPAQEU @B EtM EP @A Q$EU @B(EtM EP@A(Q,UU E EU E E@ZU E E@ZU E E@ZU E E@ Z U E E@(Z(UEU EtM EPQEU @BEtM EP @AQ EU @BEtM EP@AQEU @BEtM EP@AQEU @ B EtM EP$@ A Q$EU @(B(EtM EP,@(A(Q,UVS u EDPE@PEtE\PhLu;E@X!PhS{t$E\Pha`uEEUEEE@ u uiE@X!P5tEURP6} t0E@X!PhwuEURPE@X!P5lUE@ BE@X!P5p\tEURPdE@X!P5t)tEURP1E@X!P5tEURPE\EExt Ep`@tE8Au?hhu%uEURP[EURPGE8BuEURP(h9uuEURPhmE@PuEURPhqE@PmuEURPuhuEURPwhuuEURPOhu uEURP'u5t5tEURPE@u}EURPlE@X!P5| tMUE@ BE\P5 tEURPEURPE@E}weUEURPHEUR P7EUR@P&EURʀPEURP Ep=uEURPjEp5>tEUR@PjEp >tEUR P}t!E@%tEURPE@%tQExuEURP Ep<EURPExt-Ext$Ex t Ep<tJE@X!P5l uCE@X!P5| u$E@X!P5 uEE8txExumE@X!PE0T tGE\PEp8 t+}uE@%tMUE@ BAE 뀃 Ep;tKE@%uu|uE6EkhBuRuE7EAhGu(uE8EhMuuE8EhRut.h\uth_uuE8Ehhu|t.hruethuuNuE8E=hzu$uE8EhuuE8E huuE8E@huuE8Ehu|uE8EkhuRuE8EAhu(thuuE8EhuthuuE8EhuthɌuuE8E~hьuethՌuNuE8E =hٌu$uE8E@hߌuuE8EhuuE8EhuuE8Ehu|tEhuet.h uNthu7uE8E&hu tEhut.h+uth3uuE8Eh:uthBuuE8EvhIu]uE8ELhRu3thVuuAE5 hRE} hhRE hXuth\uuAE5 hX{E} hhXEn h^uUthbu>uAE5 h^ E} hh^7E hduthhuuAE5 hdE} hhdE hjuwthnu`uAE5 hj.E}> hhjYE! hputhtuuAE5 hpE} hhpE hvuthzuuAE5 hvPE}` hhv{EC h|u*thuuAE5 h|E} hh| E huthuuAE5 hrE} hhEe huLthu5uAE5 hE} hh.E huthuuAE5 hE} hhE hunthuWuAE5 h%E}5 hhPE huthuuAE5 hE}hhEhuthuyuAE5 hGE}WhhrE:hu!thu uAE5 hE}hhEhuthuuAE5 hiE}yhhE\huCthu,uAE5 hE} hh%EhuthuuAE5 hE}hhE~huethuNuAE5 hE},hhGEhčuthȍuuAE5 hčE}hhčEhʍuuAE5 hʍUE}ehhʍEHh΍u/uAE5 h΍E} hh΍(EhҍuuAE5 hҍE}hhҍEh֍uuAE5 h֍ME}]hh֍xE@hڍu'uAE5 hڍ E}hhڍ EhލuuAE5 hލ E}hhލ EhuwuAE5 hE E}Uhhp E8huuAE5 h E}hh EjhuuEffu E8_tmE5EEE8uE8_uE E EP7 E}GhEP` E(jhuuDEf%ft!E:j juUEjhu`uDEf%ft!E;j juEnjhuuD7Ef%ft!E<j juEjhuuDEf%ft!E=j ju>EjhuIuW}Effu E8_t)E8_u E E@EEDuh P PPpE7EuuE hqEUEEEEEEjh>E h}t&=uE h4}t'=u] hE}t>=u2h?4@u hrEE?}t=-u j-FE}t*=uE ] h9}t,=u E] hE}t=,u j,EE?}t=-u j-E}t*=uE ] hY9}t,=u E] h'E}t=,u j,EE?}t=-u j-E}t*=uE ] h9}t,=u E] hoE}t&UEBUEBUEBUEB3hBhP hPpEU j E}tNUEUE BUEBE@ E@E@E@E@ h[LEU j E}tOEE@UEBUE B E@E@E@E@ hEUx;Eu kShEPh EPguhEP EPApUE@US$ PE} t݃} t׃} tу} tEf%fu }.tE}.EEEHf%fuO8.t1f%fu8_t}}8.u ELf%ft PE8_uE }b~ hǎE] PBEE}t1ujhEujhwE}tE썐EEEE}Nux POu_ @PoTuEbffu"E}W PI @PT PHux PIu\ PNu@ffuE:DEf%fEEffu*8_t 8*t8't 8"tE}b~ h׎+E] PqEE hfE}uhhEEE)}uEEEE]UlE}+Eu4@uEEEEEU u9El@=~ hEh@=~ hllE Dlh@Eh@hul4@"lU}u tiE@E}.t5}. },|E }1t/8 Epx E0x E@ t=t~ txxU} t$u uhupU} uh E @-,E}7 Uhu&E 0uhuE puhuhuE 0uChuE puhutzh!u\E 0uhu6<E @p E p h&uE p h8uE p h@uE p hIuE p hTu E p n Pw E]E_uE p 9 Ph`u<B E p  Pzw E]E_uE p PhluE p hyu E p  Pw E]E_uE p c PhuflE @d$$E @d$$E @d$$E @d$$hu0 E @ E}Q}}}8}}}Z5}})}}} d}@r}}}1}T} } }}}@}d}}}}/}}hƏuh̏usyhяu[ahۏuCIhu+1huhuhuhuhuhuhuh!ukqh)uSYh1u;Ah7u#)h>u hDuh`uhuhuhuE p huu{hu]chuEKE @ d$$hu!E @ d$$hʐuE p hېuE p huE p huE x4uE @p huh~E x-u'E @p E p hu3I h ?huE 0uhuhCuE @x4u!E @p huE @x-u)E @@p E @p huoJ h {huJE puhu#h`uE phuU=u* 5Pu hu\=u5u hu2=u( d$$u h u =uu hua=uu hu==uu h u5u h3utEUE}p~E@wEE}p~pEЉEEE@wE@Et E@E@ Et E@ EUE@w@UE@w@UE@w@ EEUE@w@EEUE@w@EEUE@w@U}t ] ]EUE@wE #BUEEE E}@ UhE@AEȃ}m UȋlEẼ}1t }2tD EE1 EE E E E E E E2 E5 E E E E8 uE8EuEVE E t Ech Ed\ EeP EgD E@CEă}- UċЕEE E  EE E E EE EE E E E E Ez En E@AE}W UE? E3 E' E E E@AE}UdEEEEEEEEEE~EEkE EXE EEE!9E"-E#!EEE@CE}wwUE$EEEEEEEEE EEEqE@CE}ZUE%BE&6E'*EEEEEEEEE EE@CE}U`E(E)E*EEqEE^EEKEE8E E%E@AE}UE+E,E-EEEEEEEEE EE@E}Fte}F }Et}Gta}O EPtEEE.E E/E EPtEEE0EE1EEEE@E}Nt }RtwE3kE4_E@8RRE6FE@E}It(}I }At%}UtE7E8E9E@E}Gt.}G }Dt}Nt#}Ot)E:E;E<E=E@AE}UE>E^E?EKEE8E@E%EAEEEEBEEEEE EE EEEE@St EEzEEgE@AE}U,EFE1EGEEHE EIEJEKELEME EE@AE}UENEOEPuEQiER]ESQE@BE}wnUԘETEEUEVEEWEXEYEZE EE@AE} UE[E\E]yE^pE_gE`^EaUEbLE@8EuCEf:E@8Bu1Eh(E@E}Nt}Rt EiEj}EEE@AtttLEEEEE uE iE2]E5QEdEEe9Ec-E||Lt:|L|Gt|St&|Ut)E EEEE8EE(E8DE,E8IuvE8mExxNt(xN xGt AxOt6E;-E<$E=E8NuEiE}} E_E_E_E_EEEE8tE E}uXExuuhu vExtExtExuuhuѰExuuhu谰E@ EEx uEuhu聰Ep4p0Ep,p(Ep$p EpphuJ0EplphEpdp`Ep\pXEpTpPEpLpHEpDp@uhu@kExuEuuh uدEExu#uuh`u路}~ EEpuhu葯EE}uExu$ Ep puhuR Exu3 EppEppEp puh u0^Exu<EppEppEp$p Ep puh`uή0Epuhu賮EE!E@E}uE@@XPE@@Td$$E@@Pd$$EppEppEp pE@@X@&PE@@XpE@@X@'PE@@X!PE@@aPE@\PuhuPEECEEEE @PE}uEEEuuh u薭h9u聭UE} uE @Td$$E @Pd$$E p8p4E p0p,E p(p$E @X@&PE @XpE @X@'PE @X!PE @aPE \PEuh`u߬PE E `UEEE j\ȬE}u h茓E h蓬E}u0 hW}t u薭EEUBE@E}~UED EE@,E}~MUEED0Eރ uUE@TBPE@XEEEUE}tm h茫E}u h@PEAEE@E@EǀuuEEEUSEEE@ E@E@E@@E@ @$E@(@,E@0@4E@8@<E@@@DE@H@LE@P@TE@X@\E@`@dE@h@l EpPψh`u 聫E}hbu EEjheu&uE@jh}utjhuuE@jhu轪u E@\jhu蘪t E8(t E@-jhuit E8)t E@ExtExth`jHEEE UU}uEjuNUB }h`jE}] uΨ[h`jɩE}] u蛨[ h`j薩E}m] uh[(h`jcE}:] u5[0h`j0E}] u[@h`jE}] uϧ[Hh`jʨE}] u蜧[Ph`j藨E}tr] um[Xh`jhE}tC] u>[`h`j9E}t] u[hEU@ B(EtMEP4@0A0Q4ZEU@ B(Et MEP4@0A0Q4! hE@0@4@Ex u] h襥C ]UEEEEE}E@E}u$EEuu uEEԋEUB@Ex t Ep 藦E@ EE}u'EEE uZEEыEǀEEE u&EU}t=} t7E8uEU E@Ext EPE UE BUE}t\} tVuuu GE}t9ExuEUPE@Ext EPEUEBUWVS E} j E}u hՊE_E]uuE ЃCExtUE@zp$ uͤEEEEe[^_UEEE}tzEExXtMEMEAX<u.MEAX@EUEEEE뺃}t} tuuE ЃUE}tFExtuEpE ЃE@EEE u迣EUEE}t[EEE}u;Ext ExtUEBME‹ED EEE뽋UEBUEEEE}EEE}u*E@E}uEEEEE΃ EP葡E}u hvE@XEEE}u=E@E}u"E UE EEE֋EE뻋EEhjuu<UEBXUEEE EEEEEE@EE@EEHXEPXA':B'~ EKEHXEPXA':B'} E+EHXEPXA;B~ E EHXEPXA;B} EEHXEPXA&:B&~ EEHXEPXA&:B&} EEU@^:B^~ EEU@^:B^} EwE\U\PRPE}t EEJEU@a:Ba~ E0EU@a:Ba} EE@$hE@$Et EE@$hE@$Et EE@,hE@,Et EE@,hE@,Et EiE@4hE@4Et E?E@4hE@4Et E h@EEUWVP}ExDžDžE}؍pX8PEPEU@8bݝEPE@PEXP{PEP= EPxPEPp8P8PP1~EpP8PP~ExEPE@PEXPy EPwpEt:EU@8bd$$EPxEpPEP EpP'{e^_UWV EEDžDž} u hPzEE}uExuhPuuExu0 u$ h u<}t6PhPEpP|h E@E}uKE@Ux$rhP$PzEE뭋EEDžExXtrDžDžMAX<uCMAX@뢋e^_USDEEEEEEEE}g} ]EEE EEUE;B|2}~3UED p>name:pat:type:srcAtom:targAtom:min-gap:gap:kissEdge2BullsEye:dot2BE:dot2SC:spike:score:stype:ttype:x:y:z:sBval:tBval>>name:pat:type:srcAtom:targAtom:min-gap:gap:spX:spY:spZ:spikeLen:score:stype:ttype:x:y:z:sBval:tBvalSelfIntersectprocessing modelNumber== %d command:program:dotsselection: self name: %s density: %.1f dots per A^2 probeRad: %.3f A VDWrad: (r * %.3f) + %.3f A score weights: gapWt=%g, bumpWt=%g, HBWt=%g self dots1->1self_dots# command:# software: command:@caption@group dominant {%s M%d} animate @group dominant {%s} IntersectOnceselection: once name: %s once dots1->2once_dotsIntersectBothWaysselection: both name: %s @group {%s} IntersectBothWays 1->22->1IntersectBothWays 2->1ExternalSurfaceselection: external name: %s extern dots1->noneextern_dotsdumpAtomInfo%d %s %s%s %d %s atoms selected: %d %s %s, run %s%s %s  *' %s "%s" Syntax: probe input.pdb >> out.kin or: probe [flags] "src pattern" ["target pattern"] pdbfiles... >> out.kin Flags: -SElf self intersection: src -> src (default) -Both intersect both ways: src <=> targ -ONce single intersection: src -> targ -OUt external van der Waals surface of src (solvent contact surface) -AUTObondrot filename read and process an autobondrot file shortcuts: <>, -SCSurface, -EXPOsed, -ASurface, -ACCESS, -SCAN0, -SCAN1 shortcuts: <>same as: -4H -mc -het -self "altA ogt33" -DEFAULTs same as: <>, but allows some other flags -SCSurface same as: -drop -rad1.4 -out "not water" -EXPOsed same as: -drop -rad1.4 -out (note: user supplies pattern) -ASurface same as: -drop -rad0.0 -add1.4 -out "not water" -ACCESS same as: -drop -rad0.0 -add1.4 -out (note: user supplies pattern) -SCAN0 same as: -4H -mc -self "alta blt40 ogt33" -SCAN1 same as: -4H -once "sc alta blt40 ogt33" "alta blt40 ogt65,(not water ogt33)" -DUMPAtominfo count the atoms in the selection: src (note that BOTH and ONCE require two patterns while OUT, SELF and DUMPATOMINFO require just one pattern) -Implicit implicit hydrogens -Explicit explicit hydrogens (default) -DEnsity# set dot density (default 16 dots/sq A) -Radius#.# set probe radius (default 0.25 A) -ADDvdw#.# offset added to Van der Waals radii (default 0.0) -SCALEvdw#.# scale factor for Van der Waals radii (default 1.0) -COSCale#.# scale C=O carbon Van der Waals radii (default 0.94) -SPike draw spike instead of dots (default) -SPike#.# set spike scale (default=0.5) -NOSpike draw only dots -HBRegular#.# max overlap for regular Hbonds(default=%.1f) -HBCharged#.# max overlap for charged Hbonds(default=%.1f) -Keep keep nonselected atoms (default) -DRop drop nonselected atoms -LIMit limit bump dots to max dist when kissing (default) -NOLIMit do not limit bump dots -LENs add lens keyword to kin file -NOLENs do not add lens keyword to kin file (default) -MC include mainchain->mainchain interactions -HETs include dots to non-water HET groups (default) -NOHETs exclude dots to non-water HET groups -WATers include dots to water (default) -NOWATers exclude dots to water -WAT2wat show dots between waters -DUMPH2O include water H? vectorlist in output -4H extend bond chain dot removal to 4 for H (default) -3 limit bond chain dot removal to 3 -2 limit bond chain dot removal to 2 -1 limit bond chain dot removal to 1 -IGNORE "pattern" explicit drop: ignore atoms selected by pattern -DOCHO recognize CH..O Hbonds -CHO#.# scale factor for CH..O Hbond score (default=%.1f) -PolarH use short radii of polar hydrogens (default) -NOPolarH do not shorten radii of polar hydrogens -NOFACEhbond do not identify HBonds to aromatic faces -Name "name" specify the group name (default "dots") -Countdots produce a count of dots-not a dotlist -Unformated output raw dot info -OFORMAT output dot info formatted for display in O -XVFORMAT output dot info formatted for display in XtalView -ONELINE output one line :contacts:by:severity:type: -GAPcolor color dots by gap amount (default) -ATOMcolor color dots by atom type -BASEcolor color dots by nucleic acid base type -COLORBase color dots by gap and nucleic acid base type -OUTCOLor "name" specify the point color for -OUT (default "gray") -GAPWeight# set weight for scoring gaps (default 0.25) -BUMPWeight# set relative scale for scoring bumps (default 10.0) -HBWeight# set relative scale for scoring Hbonds (default 4.0) -DIVLow#.# Division for Bump categories (default -0.4) -DIVHigh#.# Division for Contact categories (default 0.25) -MINOCCupancy#.# Occupancy below this is same as zero (default 0.02) -KINemage add @kinemage 1 statement to top of .kin format output -NOGroup do not generate @group statement in .kin format output -ELEMent add master buttons for different elements in kin output -NOHBOUT do not output contacts for HBonds -NOCLASHOUT do not output contacts for clashes -NOVDWOUT do not output contacts for van der Waals interactions -ONLYBADOUT onlybadout output bad clashes (severe overlap contacts) -SUMMARY output summary list of contacts and clashes -ONELINE output summary list on oneline -NOTICKs do not display the residue name ticker during processing -STDBONDs assume only standard bonding patterns in standard residues -NOPARENT do not bond hydrogens based on table of parent heavy atoms -SEGID use the PDB SegID field to descriminate between residues -OLDU generate old style -u output: kissEdge2BullsEye, etc -VErbose verbose mode (default) -REFerence display reference string -CHANGEs display a list of program changes -Quiet quiet mode -Help show expanded help notice (includes other flags) -VERSION one line version to stdout Pattern elements: (should be put in quotes on the command line) FILE# within file # MODEL# within model # CHAINa within chain a SEGaaaa segment identifier aaaa (where _ represents blank) ALTa alternate conformation a ATOMaaaa atom name aaaa (where _ represents blank) (all 4 characters are used so H would be ATOM_H__) RESaaa residue aaa # residue # #a residue #, insert a #-# residue range # (insert codes ignored) a residue type by one letter codes (eg. y) aaa residue type by three letter codes (eg. tyr) ALL,PROTEIN,MC,SC,BASE,ALPHA,BETA,NITROGEN,CARBON,OXYGEN, SULFUR,PHOSPHORUS,HYDROGEN,METAL,POLAR,NONPOLAR,CHARGED, DONOR,ACCEPTOR,AROMATIC,METHYL,HET,WATER,DNA,RNA all or a subset of the atoms OLT# Occupancy less than # (integer percent) OGT# Occupancy greater than # (integer percent) BLT# B-value less than # (integer) BGT# B-value greater than # (integer) INSa Insert code a (where _ represents blank) WITHIN #.# OF #.#, #.#, #.# atoms within distance from point # residue number #-# residue number range a OR aaa residue type by one or three letter codes FILE#,MODEL#,CHAINa,SEGaaaa,ALTa,ATOMaaaa,RESaaa, DONOR,ACCEPTOR,AROMATIC,METHYL,HET,WATER,DNA,RNA, OLT#, OGT#, BLT#, BGT#, INSa, WITHIN #.# OF #.#, #.#, #.# Patterns can be combined into comma separated lists such as "trp,phe,tyr" meaning TRP or PHE or TYR. Patterns that are sepatated by blanks must all be true such as "chainb 1-5" meaning residues 1 to 5 in chain B. You can also group patterns with parenthesis, separate multiple patterns with | meaning 'or' and choose the complement with NOT as in "not file1" meaning not in file 1. An autobondrot file is similar to other PDB input files but it includes information identifying atoms subject to rotations and other transformations. Example autobondrot file fragment showing Calpha-Cbeta bond rotation and a periodic torsion penalty function for this rotation ATOM 1 CB TYR 61 34.219 17.937 4.659 1.00 0.00 bondrot:chi1:78.7: 0:359:5:33.138:18.517: 5.531:34.219:17.937: 4.659 cos:-3:60:3: ATOM 1 1HB TYR 61 34.766 18.777 4.206 1.00 0.00 ATOM 1 2HB TYR 61 34.927 17.409 5.315 1.00 0.00 ATOM 1 CG TYR 61 33.836 16.989 3.546 1.00 0.00 ... Autobondrot commands use colons to separate values Transformations: BONDROT:id:currAng:start:end:stepSz:x1:y1:z1:x2:y2:z2 TRANS: id:currpos:start:end:stepSz:x1:y1:z1:x2:y2:z2 NULL # dummy Bias functions: COS:scale:phaseOffset:frequency POLY:scale:offset:polynomialDegree CONST:value Branching: SAVE and RESTORE or "(" and ")" (e.g. to rotate each Chi and the methyls for isoleucine the sequence is: rotChi1/SAVE/rotChi2/rotCD1/RESTORE/rotCG2) Set orientation: GO:angle1:angle2:... Include files: @filename Comments: # comment text %s %s HELPVERSIONVERBOSEQUIETEXPLICITIMPLICITDROPKEEPDENSITYRADIUSSCALEVDWVDWSCALEinvalid scale factor: -scalevdw%gADDVDWinvalid vdw offset: -addvdw%gSPIKENOSPIKEKINEMAGENOGROUPELEMENTCOUNTDOTSUNFORMATEDOUTSIDEONCEBOTHSELFDUMPATOMINFOSCSURFACEnot waterSCSEXPOSEDASURFACEASACCESSSCANalta blt40 ogt33sc alta blt40 ogt33alta blt40 ogt65,(not water ogt33)invalid scan type %d, for more info use -helpSEGIDLIMITNOLIMITLENSNOLENSMCDUMPH2OHETSNOHETSWAT2WATWATERSNOWATERS4H321POLARHNOPOLARHNOFACEHBONDNAMEno group name after -Name flagIGNOREno pattern after -IGNORE flagCOSCALEHBREGULARHBCHARGEDDOCHOCHOATOMCOLORGAPCOLORBASECOLORCOLORBASEGAPWEIGHTBUMPWEIGHTHBWEIGHTDIVLowDIVHighMINOCCupancyOFORMATXVFORMATONELINESUMMARYDEFAULTSaltA ogt33NOHBOUTNOCLASHOUTNOVDWOUTONLYBADOUTNOTICKSSTDBONDSOLDUNOPARENTOUTCOLORno color name after -OUTCOLolor flagAUTObondrot%s flag instead of filename after -AUTObondrotrcould not open -AUTOBONDROT file: %sno filename after -AUTObondrot flagREFerencePlease cite: %sCHANGEsDEBUGunrecognized flag, %scould not open file %d: %s*SIMPLE SELF DOTS (for more info use -help flag and look for <>)no input files-C6?@@$HIS:his HD1: hd1: HE2: he2OXT N O modelNumber[%d]==%d @?RES{%s%d%c}[%d] ring(%p) %s :ASX:GLX:ASN:GLN:atom %s will be treated as oxygencould not allocate space for new atomMbP?could not allocate space for new dot C P O3*: O3'CYS SG ?333333?%4.4s%c%3.3s %c%4d%c(%c%d), %d: %4.4s%c%3.3s %c%4d%c(%c%d)%s%d greentint blue sky sea green yellowtint yellow orange red hotpink ffffff??333333?ɿ333333ӿٿpale_green cornflower_blue sky_blue aquamarine yellow_green orange_red ffffff??333333?ɿ333333ӿٿlight_grayredgreenbluecornflower_bluecyanyellowmagentawhitepinksalmonorangepurpleskysky_bluebrownblackgoldyellowtintyellow_greenseaaquamarinepinktintbluetintlight_bluegreentintpale_greenhotpinkorange_redinvisiblewide contactclose contactsmall overlapbad overlapH-bonds*777E7S7_7surface@subgroup dominant {%s} @master {%s} @pointmaster '%c' {McMc contacts} @pointmaster '%c' {ScSc contacts} @pointmaster '%c' {McSc contacts} @pointmaster '%c' {Hets contacts} lens@dotlist {x} color=%s master={%s dots} master={%s}%s @dotlist {x} color=%s master={%s}%s @vectorlist {x} color=%s master={%s dots} master={%s} @vectorlist {x} color=%s master={%s} @dotlist {x} color=%s master={%s dots} master={%s} @dotlist {x} color=%s master={%s} %s%c %s%d%c{%s}{"}P %s%.3f,%.3f,%.3f {"}%s %s%.3f,%.3f,%.3f %s%.3f,%.3f,%.3f WCCCSOBOHB}:::::begin_object %s%d mode solid --none--124colour %s move %.3f %.3f %.3f line %.3f %.3f %.3f sphere_xyz %.3f %.3f %.3f 0.03 end_object begin_object %s begin_object contsurf instance %s%d *777E7S7_7# begin %s # begin object # group: %s # group: %s # (%s %s) %.3f %.3f %.3f %.3f %.3f %.3f %s # end %s # endgroup: %s # end object # endgroup: %s wcccsobohb;<><A<D<G<%s:%s:%s:%c%4d%c%s %s%c:%.3f:%.3f:%.3f:%.3f:%.3f:%.3f:%.4f::::::::%s:%s:%.3f:%.3f:%.3f:%.2f:%.2f :%.2f: %%%%%wide_contact close_contact small_overlap bad_overlap H-bond << ==(= subgroup: %s atoms selected: %d potential dots: %d potential area: %.1f A^2 empty selection type # %% score score/A^2 x 1000 type # %% external_dots %3s %s %7.0f %5.1f%% %9.1f %9.2f %7.0f %5.1f%% tot contact: %7.0f %5.1f%% %9.1f %9.2f tot overlap: %7.0f %5.1f%% %9.1f %9.2f tot H-bond: %7.0f %5.1f%% %9.1f %9.2f grand tot: %7.0f %5.1f%% %9.1f %9.2f contact surface area: %.1f A^2 tot: %7.0f %5.1f%% contact surface area: %.1f A^2 accessible surface area: %.1f A^2 ?@@Y@%9.3f%s?@vectorlist {water H?} color= gray H? HETATM%5d H%-2d%c%3.3s %c%4d%c %8.3f%8.3f%8.3f%6.2f%6.2f new H {%4.4s%c%3.3s %c%4d%c}P %8.3f%8.3f%8.3f {%4.4s%c%3.3s %c%4d%c}L %8.3f%8.3f%8.3f ?T@?@333333?Probe change log: Note: Not captured prior to Aug 1998. JMW = J Michael Word 8/ 7/98 - JMW - added segID parsing for XPLOR compatibility 8/10/98 - JMW - added formatting for O and XtalView output 11/12/98 - JMW - use table to parent H atoms in std. residues, made GAPweight expand with expanded radius, and reorganized O format output in chunks and changed xview format colors and modified hydrogen name parsing for HG## and HE## 11/15/98 - JMW - added -stdbonds and -noparent flags and built a complete std AA and NA connectivity table 11/23/98 - JMW - extended std bond table for truncated H names 3/ 8/99 - JMW - atom names can include * and ' characters 3/11/99 - JMW - fixed HBond problem with implicit hydrogens and altered the skipping of MCMC to skip them only if within a single chain and not a HET 3/16/99 - JMW - Made water donor/acceptor insensitive to names and extended atom name parsing for wierd HETS 4/05/99 - JMW - Fixed typo in error checking in parse.c for processing within _ of _,_,_ 4/06/99 - JMW - Updated stdbond table for NT and OXT 4/07/99 - JMW - Cleaned up compiler warnings on initialization and unused variables 5/10/99 - JMW - Added AIB,ABU and MSE to mc hbond NH & O list and added HN to the list of aliases for H 7/12/99 - JMW - Begin changes for version 2 7/17/99 - JMW - Added support for autobondrot, display ref. 8/ 3/99 - JMW - Fixed typo in UpdateHydrogenInfo about bins 8/ 5/99 - JMW - Sort autobondrot atoms in residue order, add include file processing to autobondrot, add -notick and -kinemage probe options list process Nt/Ct/res for moving atoms 8/16/99 - JMW - Flag -kinemage forces kin format (for -auto) added CA-CB for gly in stdbonds for mutants 9/ 2/99 - JMW - Added stdbond info to support alternate name C5A for the methyl on a THY nucleic acid base 10/ 5/99 - JMW - Dropped unused variables flagged by compiler 12/ 6/99 - JMW - -OUT shows the contact surface area and the solvent accessible surface area -ADDVDW for radius offset(-SCALEVDW for scale) -OUTColor sets the point color for -OUT 12/13/99 - JMW - added shortcuts: -SCSurface, -CONTACT, -SASurface, -ACCESS 12/13/99 - JMW - renamed: -SASurface to -ASurface 1/ 3/00 - JMW - added names to surface shortcuts 1/13/00 - JMW - renamed: -CONTACT to -EXPOsed 1/14/00 - JMW - fixed TRANS keyword in autobondrot 5/ 4/00 - JMW - changed -u output to print spike coords and added -oldu flag to give the old output added -ignore flag to drop data from input 5/31/00 - JMW - Added modified bases used in tRNAs Included new properties TEST_ACCEPT_ANGLE and CH_DONOR 6/ 9/00 - JMW - constructed chain of residues view of atomlist in order to support ring normals 7/ 5/00 - JMW - inlined inRange for speed, remembered inosine, dropped dummy atoms, added -segid flag, fixed bug when water was used with -auto 7/27/00 - JMW - added code to free extra memory at end of run 10/31/00 - JMW - added O2* & O2' to NABackbone list (oversite) 11/ 6/00 - JMW - changed malloc.h and memory.h to stdlib.h 11/14/00 - JMW - added -basecolor & -colorbase to color DNA/RNA 11/19/00 - JMW - fixed naBase typo for 7MG and added -nofaceHB 11/27/00 - JMW - updated properties of odd bases in select.c 11/28/00 - JMW - added H2U to base class table and moved PSU 12/01/00 - JMW - fixed H atomclass bug with -colorbase 2/14/01 - JMW - changed LowGoodCut from -0.2 to -0.4 7/11/01 - JMW - dots no longer broken out by element in .kin, added -element to generate old style output 7/25/01 - JMW - negative residue numbers in patterns 10/ 1/01 - JMW - allow Nterminal fragnents to Hbond 10/ 9/01 - JMW - take out Nterm code and make CHX HBs an option 1/23/03 - 2.09 - JMW - Run default now:-3 -mc -het -self "altA ogt33" was: -het -self "altA" Default for -ignore is now "olt1" Recognise insert codes like 123a, 2B-3, & insC Fixed bounding box water-H bug in autobondrot! 10/14/03 - 2.10 - JMW - Fixed bug (found by Patrick Reardon) caused by filtering out non-target contacts too early Also made sure atoms in different models can not interact in any way. Also changed how alternate conformations in in different residues interact. Now altA and altB never see one another. Previously, they could if alts A and B weren't the same res. Added -minocc flag with a default of 0.02 as the minimum non-zero occupancy. Added -changes flag to dump change log. Oct 2004: DCR code annotations, fixups, default modifiations 10/07/04 - 2.10 dcr041007 now presumes atom named _SE_ is Selenium i.e. refmac or cns missadjusted name. halides flagged as negative ions and H-bond acceptors default: probe infile > outfile same as: probe -3 -mc -het -self "altA ogt33" infile > outfile try : probe -4H -mc -het -self "altA ogt33" infile > outfile dcr041009 pointmasters M==McMc, S==ScSc, O==Other(McSc,Het--) dcr041010 -onlybadout option for Bad clashes only dcr041017 default -4H, pointtmaster P==McSc, report counts dcr041020 master= {surface}, more work on count reports dcr041020 annotated (NOT implemented) writeHbonds JACKnANDREA dcr041023 2D array of count information dcr041026 NOT report count IntersectBothWays re probe update dcr041101 -summary colon deliminated multi-count report dcr041101 -oneline summary all on oneline dcr041101 -DEFAULTs same as: <>, but allows flags like -summary or -oneline 2.11.041112 by agreement of 041110: maintained now by dcr 041112 -nomodeltest for mage/probe (Lmodeltest) see 050121 041114 more fussing with NMR models 050111,17,18,19 flow, esp. autobondrot, annotations... 050119 very low occ atoms have presence but not show contacts 050121 remove -nomodeltest stuff, mage now sends model # : %s :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld : @text probe: %s :CONTACT: WIDE : CLOSE : SMALL : BAD : H-BOND : SUM : :MCMC :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld : :SCSC :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld : :MCSC :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld : :OTHER :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld : :SUM :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld : :CONTACT: WIDE : CLOSE : SMALL : BAD : H-BOND : SUM ::MCMC :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld ::SCSC :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld ::MCSC :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld ::OTHER :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld ::SUM :%9ld :%9ld :%9ld :%9ld :%9ld :%9ld :.DT!)@.DT! @.DT!@could not create atom bins?@ATOMHETATERMODEL푪Fߑ?-C6?-C6?gyܥL@V@%s WARNING: %s ERROR: %s $@?%s: :PHE:: HD1: HD2: HE1: HE2: HZ : DD1: DD2: DE1: DE2: DZ ::HIS:: HD1: HD2: HE1: HE2: DD1: DD2: DE1: DE2::TYR::TRP:: HD1: HE1: HE3: HZ2: HZ3: HH2: DD1: DE1: DE3: DZ2: DZ3: DH2:: U:URA:UTP:UDP:UMP:: H3 : HN3: H5 : H6 : D3 : DN3: D5 : D6 :: T:THY:TTP:TDP:TMP:5MU:: H3 : HN3: H6 : D3 : DN3: D6 :: A:ADE:ATP:ADP:AMP:1MA:RIA:T6A:: H8 : H2 : D8 : D2 :: C:CYT:CTP:CDP:CMP:5MC:OMC:: H5 : H6 : D5 : D6 :: G:GUA:GTP:GDP:GMP:GSP:2MG:M2G:7MG:OMG:: H8 : H1 : HN1: D8 : D1 : DN1:: YG:1MG:: H8 : D8 ::PSU:: H6 : D6 : H1 : HN1: D1 : DN1: H3 : HN3: D3 : DN3:: I:: H8 : H2 : H1 : HN1: D8 : D2 : D1 : DN1:: CG : CD1: CD2: CE1: CE2: CZ :: ND1: CD2: CE1: NE2: CG :: CG : CD1: CD2: NE1: CE2: CE3: CZ2: CZ3: CH2:: U:URA:UTP:UDP:UMP:PSU:: N1 : C2 : N3 : C4 : C5 : C6 :: A:ADE:ATP:ADP:AMP:1MA:RIA:T6A: I:: N1 : C2 : N3 : C4 : C5 : C6 : N7 : C8 : N9 :: G:GUA:GTP:GDP:GMP:GSP:1MG:2MG:M2G:7MG:OMG:: YG:: N1 : C2 : N3 : C4 : C5 : C6 : N7 : C8 : N9 : : N2 : C11: C12::HEM:: N A: C1A: C2A: C3A: C4A: N B: C1B: C2B: C3B: C4B:: N C: C1C: C2C: C3C: C4C: N D: C1D: C2D: C3D: C4D::GLY:ALA:VAL:PHE:PRO:MET:ILE:LEU:ASP:GLU:LYS:ARG:SER:THR:TYR:HIS:CYS:ASN:GLN:TRP:ASX:GLX:ACE:FOR:NH2:NME:MSE:AIB:ABU:PCA::ALA:VAL:PHE:MET:ILE:LEU:TYR:CYS:TRP:MSE:AIB:ABU::SER:THR:ASN:GLN::PHE:HIS:TYR:TRP:HEM:: C: G: A: T: U:CYT:GUA:ADE:THY:URA:CTP:CDP:CMP:GTP:GDP:GMP:ATP:ADP:AMP:TTP:TDP:TMP:UTP:UDP:UMP:GSP:H2U:PSU:1MG:2MG:M2G:7MG:5MC:5MU:T6A:1MA:RIA:OMC:OMG: YG: I:: P : O1P: O2P: PA : PB : PG :: O1A: O2A: O3A: O1B: O2B: O3B: O1G: O2G: O3G: S1G:: O5*: C5*: C4*: O4*: C3*: O3*: C2*: O2*: C1*:: O5': C5': C4': O4': C3': O3': C2': O2': C1':: H1*: H1': H3*: H3': H4*: H4':1H5*::2H5*:*H51:*H52:H5'': H5':1H2*:2H2*:: H2*:H2'':2HO*:*HO2: H2': H3T: H5T::3HO*:*HO3:5HO*:*HO5:: U:URA:UTP:UDP:UMP: T:THY:TTP:TDP:TMP:5MU:: I: YG:H2U:PSU::THR:ALA:MET:LEU:VAL:ILE: T:THY:AIB:ABU:ACE:MSE:NME:HEM: :OMG:OMC:1MA:1MG:2MG:M2G:5MU:5MC:7MG: YG:T6A::THR:: CG2:1HG2:2HG2:3HG2:HG21:HG22:HG23::ALA:: CB :1HB :2HB :3HB : HB1: HB2: HB3::MET:: CE :1HE :2HE :3HE : HE1: HE2: HE3::LEU:: CD1:1HD1:2HD1:3HD1:HD11:HD12:HD13: : CD2:1HD2:2HD2:3HD2:HD21:HD22:HD23::VAL:: CG1:1HG1:2HG1:3HG1:HG11:HG12:HG13: : CG2:1HG2:2HG2:3HG2:HG21:HG22:HG23::ILE:: CG2:1HG2:2HG2:3HG2:HG21:HG22:HG23: : CD1:1HD1:2HD1:3HD1:HD11:HD12:HD13:: T:: C5M:1H5M:2H5M:3H5M:H5M1:H5M2:H5M3::THY:: C5A:1H5 :2H5 :3H5 : H51: H52: H53::AIB:: CB1:1HB1:2HB1:3HB1:HB11:HB12:HB13: : CB2:1HB2:2HB2:3HB2:HB21:HB22:HB23::ABU:: CG :1HG :2HG :3HG : HG1: HG2: HG3::ACE:: CH3:1HH3:2HH3:3HH3:HH31:HH32:HH33::MSE::NME:: CMA:1HMA:2HMA:3HMA:HMA1:HMA2:HMA3: : CMB:1HMB:2HMB:3HMB:HMB1:HMB2:HMB3: : CMC:1HMC:2HMC:3HMC:HMC1:HMC2:HMC3: : CMD:1HMD:2HMD:3HMD:HMD1:HMD2:HMD3::OMG:OMC:: CM2:1HM2:2HM2:3HM2:HM22:HM22:HM23::1MA:1MG:: CM1:1HM1:2HM1:3HM1:HM12:HM12:HM13: C1A:1H1A:2H1A:3H1A::2MG:M2G:: CM1:1HM1:2HM1:3HM1:HM12:HM12:HM13: C1A:1H1A:2H1A:3H1A: : CM2:1HM2:2HM2:3HM2:HM22:HM22:HM23: C2A:1H2A:2H2A:3H2A::5MU:5MC:: CM5:1HM5:2HM5:3HM5:HM52:HM52:HM53: C5A:1H5A:2H5A:3H5A::7MG:: CM7:1HM7:2HM7:3HM7:HM72:HM72:HM73: C7A:1H7A:2H7A:3H7A:: C3 :1H3 :2H3 :3H3 : H32: H32: H33: : C10:1H10:2H10:3H10:H102:H102:H103: : C19:1H19:2H19:3H19:H192:H192:H193: : C24:1H24:2H24:3H24:H242:H242:H243::T6A:: C15:1H15:2H15:3H15:H152:H152:H153::ASP:GLU:LYS:ARG:HIS:HEM::ASP:: OD1: OD2::GLU:: OE1: OE2::LYS::1HZ :2HZ :3HZ :1DZ :2DZ :3DZ : NZ : : HZ1: HZ2: HZ3: DZ1: DZ2: DZ3::ARG:: HE :1HH1:2HH1:1HH2:2HH2: : DE :1DH1:2DH1:1DH2:2DH2: NE : NH1: NH2: :HH11:HH12:HH21:HH22: :DH11:DH12:DH21:DH22:: HD1: HE2: DD1: DE2: ND1: NE2: : CG : CD2: CE1:: O1A: O2A: O1D: O2D::1H :2H :3H :1D :2D :3D : HT1: HT2: HT3: DT1: DT2: DT3: : NT : OXT:1OXT:2OXT:: O : N :: P : O1P: O2P: PA : PB : PG : O1A: O2A: O3A: O1B: O2B: O3B: O1G: O2G: O3G: S1G::HOH:DOD:H2O:D2O:WAT:TIP:SOL:MTO::GLY:ALA:VAL:PHE:PRO:MET:ILE:LEU:ASP:GLU:LYS:ARG: :SER:THR:TYR:HIS:CYS:ASN:GLN:TRP:ASX:GLX:NH2:NME:MSE:AIB:ABU:PCA:: N : NT : H : HT1: HT2: HT3:1H :2H :3H : : HN : D : DT1: DT2: DT3:1D :2D :3D ::GLY:ALA:VAL:PHE:PRO:MET:ILE:LEU:ASP:GLU:LYS:ARG: :SER:THR:TYR:HIS:CYS:ASN:GLN:TRP:ASX:GLX:ACE:FOR:MSE:AIB:ABU:PCA:: O : OXT:1OXT:2OXT::ASN:ASX:: AD1: AD2::1HD1:2HD1:HD11:HD12: :1DD1:2DD1:DD11:DD12::GLN:GLX:: AE1: AE2::1HE1:2HE1:HE11:HE12: :1DE1:2DE1:DE11:DE12::ASN:: OD1:: ND2:1HD2:2HD2:HD21:HD22: :1DD2:2DD2:DD21:DD22::GLN:: OE1:: NE2:1HE2:2HE2:HE21:HE22: :1DE2:2DE2:DE21:DE22:: NZ :1HZ :2HZ :3HZ : HZ1: HZ2: HZ3: :1DZ :2DZ :3DZ : DZ1: DZ2: DZ3:: NE : NH1: NH2: : HE :1HH1:2HH1:1HH2:2HH2:HH11:HH12:HH21:HH22: : DE :1DH1:2DH1:1DH2:2DH2:DH11:DH12:DH21:DH22:: ND1: NE2:: HD1: HE2: DD1: DE2:: HD2: HE1: DD2: DE1::SER:: OG :: HG : DG :: OG1:: HG1: DG1:: OH :: HH : DH ::CYS:: SG :: NE1: HE1: DE1:: SD ::SED ::NH2:: HN1: HN2:1HN :2HN : DN1: DN2:1DN :2DN :: C: G: A: T: U:CYT:GUA:ADE:THY:URA: :CTP:CDP:CMP:GTP:GDP:GMP:ATP:ADP:AMP:TTP:TDP:TMP:UTP:UDP:UMP:GSP: :H2U:PSU:1MG:2MG:M2G:5MC:5MU:T6A:1MA: YG: I:: O2*: O2':: C: G: A: T: U:CYT:GUA:ADE:THY:URA: :CTP:CDP:CMP:GTP:GDP:GMP:ATP:ADP:AMP:TTP:TDP:TMP:UTP:UDP:UMP:GSP: :H2U:PSU:1MG:2MG:M2G:5MC:5MU:T6A:1MA:RIA:OMC:OMG: YG: I::2HO*:3HO*:5HO*: H2': H3': H5': H3T: H5T: :2DO*:3DO*:5DO*: D2': D3': D5': D3T: D5T:: O1P: O2P: O1A: O2A: O3A: O1B: O2B: O3B: O1G: O2G: O3G: S1G: : O3*: O5*: O3': O5':: U:URA:UTP:UDP:UMP:H2U:: N3 : H3 : HN3: D3 : DN3:: N1 : H1 : D1 : HN1: DN1: : N3 : H3 : D3 : HN3: DN3:: U:URA:UTP:UDP:UMP:H2U:PSU:: O2 : O4 :: A:ADE:ATP:ADP:AMP:1MA:RIA:: N6 :1H6 :2H6 : H61: H62:1HN6:2HN6: :1D6 :2D6 : D61: D62:1DN6:2DN6:: A:ADE:ATP:ADP:AMP:RIA:: N1 : N3 : N7 ::1MA: I:: N3 : N7 :: N6 : HN6: DN6: N11: HN1: DN1: H14: D14: : H11: D11: HO4: DO4:: N1 : N3 : N7 : O10:AO13:BO13: O14:: C:CYT:CTP:CDP:CMP:OMC:5MC:: N4 :1H4 :2H4 : H41: H42:1HN4:2HN4: :1D4 :2D4 : D41: D42:1DN4:2DN4:: O2 : N3 :: G:GUA:GTP:GDP:GMP:GSP:OMG:7MG:: N1 : N2 : H1 :1H2 :2H2 : H21: H22: HN1:1HN2:2HN2: : D1 :1D2 :2D2 : D21: D22: DN1:1DN2:2DN2::2MG:: N1 : N2 : H1 : H2 : HN1: HN2: : D1 : D2 : DN1: DN2:: G:GUA:GTP:GDP:GMP:GSP:OMG:1MG:2MG:M2G:: O6 : N3 : N7 :: O6 : N2 : N7 : O17: O17: O22: O23::1MG:: N2 :1H2 :2H2 : H21: H22:1HN2:2HN2: :1D2 :2D2 : D21: D22:1DN2:2DN2::M2G:: N1 : H1 : HN1: D1 : DN1:: O6 : N3 :: H2 : H8 :: G:GUA:GTP:GDP:GMP:GSP:OMG:1MG:2MG:M2G:7MG: YG:: H8 : C :ASP:ASN:ASX:: CG ::GLU:GLN:GLX:: CD :2HA H D : HXT: DXT: HN : N O b|Q|s||||ź unknown pattern type: %dY@|ǂ5RoɃ/YeqŅ 'syntax: minus sign requires a number syntax: improper feature FILECHAINALTMODELATOMSEGALLNONEALPHABETAMAINCHAINMCBACKBONESIDECHAINSCBASENITROGENCARBONOXYGENSULFURPHOSPHORUSHYDROGENH2OWATERHETHETATMPROTEINPEPTIDEDNARNAMETALMETHYLDONORACCEPTORNONPOLARHYDROPHOBICHPHOBICPHOBICPOLARHYDROPHILICHPHILICPHILICCHARGEDCHARGEAROMATICGLYGALAAVALVPHEFPROPMETMILEILEULASPDGLUELYSKARGRSERSTHRTTYRYHISHCYSCASNNGLNQTRPWACEASXGLXMSEPCANH2NMEFORRESOLTOGTBLTBGTINSsyntax: unknown identifier: %sOFsyntax: parsing WITHIN: out of memory in makeNode()out of memory in makeTerminal()improper syntax expect match code: %dnumber too longsymbol too longsymbol table fullsymbol name array full ( or ) and not(%d <= resno <= %dfile=%dmodel=%dchain='%c'alt='%c'*atom="%s%s"segID="%s%s"resno=%dres="%s%s"atoms within %.1f of %.3f, %.3f, %.3falphabetamainchainsidechainNitrogenCarbonOxygenSulfurPhosphorusHydrogenhet-groupproteindna/rnametalmethyldonoracceptorA,V,L,I,M,C,F,W,Y (but not G,P!)S,T,N,QD,E,K,R(+H)aromatic-atomsproperty=%dallnoneoccupancy < %.2foccupancy > %.2fBval < %dBval > %dinsert='%c'%d%d%c***INTERNAL DEFECT - EXPECT AND*** <= resno <= /* warning: insert codes ignored in ranges */<>Y@B Jpʰ #f;eD˶%s"%s"%s%d%s%g%sNOT%sWITHIN%s(end of pattern)%s'%c'?magenta.greyHHarHpolHOdCwhiteNskyOredPpinkSyellowAsSegreenFClBrbrownILiNaAlKMgCaMnFeCoblueNiCuorangeZnRbSrMoAgCdInCsBaAugoldHgTlPbVCrTeSmGdYbWPtUHeBeBNeSiArScTiGaGeKrgreentintYZrSnSbXeLaCeFrRaThNbTcRuRhPdPrNdPmEuTbDyHoErTmLuHfTaReOsIrBiPoAtRnpinktintAcPaNpPuAmCmBkCfEsFmMdNoact/ugseaother nanonbaseWARNING: atom %s will be treated as %s WARNING: atom %s will be treated as %s eeeeeeeeeeeeeeee{ڽ۾xjWUU-,ee˻׻+7Cuȼۼ%8KWco½νȾ (4Ⱦ@ȾȾȾS_k~ȾȾeeeeeeeee,?Reeeeeeeeҿ eAxMY 1DWxBBBBBB BB/P\ht O[gpy9-'B-u]qEQ]iALA: H N : NT ALA: HN ALA:1H ALA:2H ALA:3H ALA: HT1ALA: HT2ALA: HT3ALA: HA CA ALA:1HB CB ALA:2HB ALA:3HB ALA: HB1ALA: HB2ALA: HB3ALA: HT ALA: HB CYS: H CYS: HN CYS:1H CYS:2H CYS:3H CYS: HT1CYS: HT2CYS: HT3CYS: HA CYS:1HB CYS:2HB CYS: HB1CYS: HB2CYS: HG SG CYS: HT CYS: HB ASP: H ASP: HN ASP:1H ASP:2H ASP:3H ASP: HT1ASP: HT2ASP: HT3ASP: HA ASP:1HB ASP:2HB ASP: HB1ASP: HB2ASP: HT ASP: HB GLU: H GLU: HN GLU:1H GLU:2H GLU:3H GLU: HT1GLU: HT2GLU: HT3GLU: HA GLU:1HB GLU:2HB GLU: HB1GLU: HB2GLU:1HG CG GLU:2HG GLU: HG1GLU: HG2GLU: HT GLU: HB GLU: HG PHE: H PHE: HN PHE:1H PHE:2H PHE:3H PHE: HT1PHE: HT2PHE: HT3PHE: HA PHE:1HB PHE:2HB PHE: HB1PHE: HB2PHE: HD1 CD1PHE: HD2 CD2PHE: HE1 CE1PHE: HE2 CE2PHE: HZ CZ PHE: HT PHE: HB PHE: HD CD1: CD2PHE: HE CE1: CE2GLY: H GLY: HN GLY:1H GLY:2H GLY:3H GLY: HT1GLY: HT2GLY: HT3GLY:1HA GLY:2HA GLY: HA1GLY: HA2GLY: HT GLY: HA HIS: H HIS: HN HIS:1H HIS:2H HIS:3H HIS: HT1HIS: HT2HIS: HT3HIS: HA HIS:1HB HIS:2HB HIS: HB1HIS: HB2HIS: HD1 ND1HIS: HD2HIS: HE1HIS: HE2 NE2HIS: HT HIS: HB HIS: HD ND1: CD2HIS: HE CE1: NE2ILE: H ILE: HN ILE:1H ILE:2H ILE:3H ILE: HT1ILE: HT2ILE: HT3ILE: HA ILE: HB ILE:1HG1 CG1ILE:2HG1ILE:HG11ILE:HG12ILE:1HG2 CG2ILE:2HG2ILE:3HG2ILE:HG21ILE:HG22ILE:HG23ILE:1HD1ILE:2HD1ILE:3HD1ILE:HD11ILE:HD12ILE:HD13ILE: HT ILE:1HG CG1: CG2ILE:2HG ILE:3HG ILE:HG1 ILE:HG2 ILE:1HD ILE:2HD ILE:3HD ILE:HD1 LYS: H LYS: HN LYS:1H LYS:2H LYS:3H LYS: HT1LYS: HT2LYS: HT3LYS: HA LYS:1HB LYS:2HB LYS: HB1LYS: HB2LYS:1HG LYS:2HG LYS: HG1LYS: HG2LYS:1HD CD LYS:2HD LYS: HD1LYS: HD2LYS:1HE CE LYS:2HE LYS: HE1LYS: HE2LYS:1HZ NZ LYS:2HZ LYS:3HZ LYS: HZ1LYS: HZ2LYS: HZ3LYS: HT LYS: HB LYS: HG LYS: HD LYS: HE LYS: HZ LEU: H LEU: HN LEU:1H LEU:2H LEU:3H LEU: HT1LEU: HT2LEU: HT3LEU: HA LEU:1HB LEU:2HB LEU: HB1LEU: HB2LEU: HG LEU:1HD1LEU:2HD1LEU:3HD1LEU:HD11LEU:HD12LEU:HD13LEU:1HD2LEU:2HD2LEU:3HD2LEU:HD21LEU:HD22LEU:HD23LEU: HT LEU: HB LEU:1HD LEU:2HD LEU:3HD LEU:HD1 LEU:HD2 MET: H MET: HN MET:1H MET:2H MET:3H MET: HT1MET: HT2MET: HT3MET: HA MET:1HB MET:2HB MET: HB1MET: HB2MET:1HG MET:2HG MET: HG1MET: HG2MET:1HE MET:2HE MET:3HE MET: HE1MET: HE2MET: HE3MET: HT MET: HB MET: HG MET: HE ASN: H ASN: HN ASN:1H ASN:2H ASN:3H ASN: HT1ASN: HT2ASN: HT3ASN: HA ASN:1HB ASN:2HB ASN: HB1ASN: HB2ASN:1HD2 ND2ASN:2HD2ASN:HD21ASN:HD22ASN: HT ASN: HB ASN:1HD ASN:2HD ASN:HD2 PRO:1H PRO:2H PRO: HT1PRO: HT2PRO: HA PRO:1HB PRO:2HB PRO: HB1PRO: HB2PRO:1HG PRO:2HG PRO: HG1PRO: HG2PRO:1HD PRO:2HD PRO: HD1PRO: HD2PRO: HT PRO: HB PRO: HG PRO: HD GLN: H GLN: HN GLN:1H GLN:2H GLN:3H GLN: HT1GLN: HT2GLN: HT3GLN: HA GLN:1HB GLN:2HB GLN: HB1GLN: HB2GLN:1HG GLN:2HG GLN: HG1GLN: HG2GLN:1HE2GLN:2HE2GLN:HE21GLN:HE22GLN: HT GLN: HB GLN: HG GLN:1HE GLN:2HE GLN:HE2 ARG: H ARG: HN ARG:1H ARG:2H ARG:3H ARG: HT1ARG: HT2ARG: HT3ARG: HA ARG:1HB ARG:2HB ARG: HB1ARG: HB2ARG:1HG ARG:2HG ARG: HG1ARG: HG2ARG:1HD ARG:2HD ARG: HD1ARG: HD2ARG: HE NE ARG:1HH1 NH1ARG:2HH1ARG:1HH2 NH2ARG:2HH2ARG:HH11ARG:HH12ARG:HH21ARG:HH22ARG: HT ARG: HB ARG: HG ARG: HD ARG:1HH NH1: NH2ARG:2HH ARG:HH1 ARG:HH2 SER: H SER: HN SER:1H SER:2H SER:3H SER: HT1SER: HT2SER: HT3SER: HA SER:1HB SER:2HB SER: HB1SER: HB2SER: HG OG SER: HT SER: HB THR: H THR: HN THR:1H THR:2H THR:3H THR: HT1THR: HT2THR: HT3THR: HA THR: HB THR: HG1 OG1THR: HG THR:1HG2THR:2HG2THR:3HG2THR:HG21THR:HG22THR:HG23THR: HT THR:1HG THR:2HG THR:3HG THR:HG2 VAL: H VAL: HN VAL:1H VAL:2H VAL:3H VAL: HT1VAL: HT2VAL: HT3VAL: HA VAL: HB VAL:1HG1VAL:2HG1VAL:3HG1VAL:HG11VAL:HG12VAL:HG13VAL:1HG2VAL:2HG2VAL:3HG2VAL:HG21VAL:HG22VAL:HG23VAL: HT VAL:1HG VAL:2HG VAL:3HG VAL:HG1 VAL:HG2 TRP: H TRP: HN TRP:1H TRP:2H TRP:3H TRP: HT1TRP: HT2TRP: HT3TRP: HA TRP:1HB TRP:2HB TRP: HB1TRP: HB2TRP: HD1TRP: HE1 NE1TRP: HE3 CE3TRP: HZ2 CZ2TRP: HZ3 CZ3TRP: HH2 CH2TRP: HT TRP: HB TRP: HD TRP: HE NE1: CE3TRP: HZ CZ2: CZ3TRP: HH TYR: H TYR: HN TYR:1H TYR:2H TYR:3H TYR: HT1TYR: HT2TYR: HT3TYR: HA TYR:1HB TYR:2HB TYR: HB1TYR: HB2TYR: HD1TYR: HD2TYR: HE1TYR: HE2TYR: HH OH TYR: HT TYR: HB TYR: HD TYR: HE ASX: H ASX: HN ASX:1H ASX:2H ASX:3H ASX: HT1ASX: HT2ASX: HT3ASX: HA ASX:1HB ASX:2HB ASX: HB1ASX: HB2ASX: HT ASX: HB GLX: H GLX: HN GLX:1H GLX:2H GLX:3H GLX: HT1GLX: HT2GLX: HT3GLX: HA GLX:1HB GLX:2HB GLX: HB1GLX: HB2GLX:1HG GLX:2HG GLX: HG1GLX: HG2GLX: HT GLX: HB GLX: HG U: H1* C1* U: H1' C1' U: H3* C3* U: H3' C3' U: H4* C4* U: H4' C4' U:1H5* C5* U:2H5* U:*H51 U:*H52 U:H5'' C5' U: H5' U:1H2* C2* U:2H2* U: H2* U:H2'' C2' U: H2' O2': C2' U:2HO* O2* U:*HO2 U: H3T O3*: O3' U: H5T O5*: O5' U:3HO* O3* U:*HO3 U:5HO* O5* U:*HO5 U: HN3 N3 U: H6 C6 U: H1 C1*: C1' U: H4 C4*: C4' U:1H5 C5*: C5' U:2H5 U:*H5 U:H5' U:1H2 C2*: C2' U:2H2 U: H2 C2*: C2': O2*: O2' U:H2' U:2HO O2*: O2' U:*HO O2*: O3*: O5* U:3HO U:5HO U: HN U: H3 N3 : C3*: C3': O3*: O3' U: H5 C5 : C5': C5*: O5*: O5' T: H1* T: H1' T: H3* T: H3' T: H4* T: H4' T:1H5* T:2H5* T:*H51 T:*H52 T:H5'' T: H5' T:1H2* T:2H2* T: H2* T:H2'' T: H2' T:2HO* T:*HO2 T: H3T T: H5T T:3HO* T:*HO3 T:5HO* T:*HO5 T: HN3 T:1H5M C5M T:2H5M T:3H5M T:1HM5 C5M: CM5 T:2HM5 T:3HM5 T:H5M1 T:H5M2 T:H5M3 T:1H5A C5A T:2H5A T:3H5A T:1HA5 C5A: CA5 T:2HA5 T:3HA5 T:H5A1 T:H5A2 T:H5A3 T: H6 T: H1 T: H4 T:*H5 T:H5' T: H5 C5': C5*: O5*: O5' T:1H2 T:2H2 T: H2 T:H2' T:2HO T:*HO T:3HO T:5HO T: HN T:1H5 C5M: C5A: C5*: C5' T:2H5 T:3H5 C5M: C5A T:1HM T:2HM T:3HM T:1HA T:2HA T:3HA T:H5M T:H5A T: H3 A: H1* A: H1' A: H3* A: H3' A: H4* A: H4' A:1H5* A:2H5* A:*H51 A:*H52 A:H5'' A: H5' A:1H2* A:2H2* A: H2* A:H2'' A: H2' A:2HO* A:*HO2 A: H3T A: H5T A:3HO* A:*HO3 A:5HO* A:*HO5 A:1H6 N6 A:2H6 A:1HN6 A:2HN6 A: H61 A: H62 A: H8 C8 A: H1 A: H3 C3*: C3': O3*: O3' A: H4 A:1H5 A:2H5 A:*H5 A:H5' A: H5 A:1H2 A:2H2 A:H2' A:2HO A:*HO A:3HO A:5HO A:1HN A:2HN A: H6 A: H2 C2 : C2*: C2': O2*: O2' C: H1* C: H1' C: H3* C: H3' C: H4* C: H4' C:1H5* C:2H5* C:*H51 C:*H52 C:H5'' C: H5' C:1H2* C:2H2* C: H2* C:H2'' C: H2' C:2HO* C:*HO2 C: H3T C: H5T C:3HO* C:*HO3 C:5HO* C:*HO5 C:1H4 N4 C:2H4 C:1HN4 C:2HN4 C: H41 C: H42 C: H6 C: H1 C: H3 C:1H5 C:2H5 C:*H5 C:H5' C:1H2 C:2H2 C: H2 C:H2' C:2HO C:*HO C:3HO C:5HO C:1HN C:2HN C: H4 N4 : C4*: C4' C: H5 G: H1* G: H1' G: H3* G: H3' G: H4* G: H4' G:1H5* G:2H5* G:*H51 G:*H52 G:H5'' G: H5' G:1H2* G:2H2* G: H2* G:H2'' G: H2' G:2HO* G:*HO2 G: H3T G: H5T G:3HO* G:*HO3 G:5HO* G:*HO5 G: HN1 N1 G:1HN2 N2 G:2HN2 G: H21 G: H22 G: H8 G: H3 G: H4 G:1H5 G:2H5 G:*H5 G:H5' G: H5 G:H2' G:2HO G:*HO G:3HO G:5HO G: HN G:1HN G:2HN G: H2 N2 : C2*: C2': O2*: O2' G: H1 N1 : C1*: C1' G:1H2 N2 : C2*: C2' G:2H2 ALA: N ALA: NT ALA: C CA : O : OXTALA: O C ALA: OXTALA: CA N : NT : C : CB ALA: CB CYS: N CYS: NT CYS: C CYS: O CYS: OXTCYS: CA CYS: CB CA : SG CYS: SG ASP: N ASP: NT ASP: C ASP: O ASP: OXTASP: CA ASP: CB CA : CG ASP: CG CB : OD1: OD2ASP: OD1ASP: OD2GLU: N GLU: NT GLU: C GLU: O GLU: OXTGLU: CA GLU: CB GLU: CG CB : CD GLU: CD CG : OE1: OE2GLU: OE1GLU: OE2PHE: N PHE: NT PHE: C PHE: O PHE: OXTPHE: CA PHE: CB PHE: CG CB : CD1: CD2PHE: CD1 CG : CE1PHE: CD2 CG : CE2PHE: CE1 CD1: CZ PHE: CE2 CD2: CZ PHE: CZ GLY: N GLY: NT GLY: C GLY: O GLY: OXTGLY: CA HIS: N HIS: NT HIS: C HIS: O HIS: OXTHIS: CA HIS: CB HIS: CG CB : ND1: CD2HIS: ND1HIS: CD2 CG : NE2HIS: CE1 ND1: NE2HIS: NE2 CD2: CE1ILE: N ILE: NT ILE: C ILE: O ILE: OXTILE: CA ILE: CB CA : CG1: CG2ILE: CG1 CB : CD1ILE: CG2ILE: CD1LYS: N LYS: NT LYS: C LYS: O LYS: OXTLYS: CA LYS: CB LYS: CG LYS: CD CG : CE LYS: CE CD : NZ LYS: NZ LEU: N LEU: NT LEU: C LEU: O LEU: OXTLEU: CA LEU: CB LEU: CG LEU: CD1LEU: CD2MET: N MET: NT MET: C MET: O MET: OXTMET: CA MET: CB MET: CG CB : SD MET: SD MET: CE SD ASN: N ASN: NT ASN: C ASN: O ASN: OXTASN: CA ASN: CB ASN: CG CB : OD1: ND2ASN: OD1ASN: ND2PRO: N CA : CD PRO: NT PRO: C PRO: O PRO: OXTPRO: CA PRO: CB PRO: CG PRO: CD CG : N : NT GLN: N GLN: NT GLN: C GLN: O GLN: OXTGLN: CA GLN: CB GLN: CG GLN: CD CG : OE1: NE2GLN: OE1GLN: NE2ARG: N ARG: NT ARG: C ARG: O ARG: OXTARG: CA ARG: CB ARG: CG ARG: CD CG : NE ARG: NE CD : CZ ARG: CZ NE : NH1: NH2ARG: NH1ARG: NH2SER: N SER: NT SER: C SER: O SER: OXTSER: CA SER: CB CA : OG SER: OG THR: N THR: NT THR: C THR: O THR: OXTTHR: CA THR: CB CA : OG1: CG2THR: OG1THR: CG2VAL: N VAL: NT VAL: C VAL: O VAL: OXTVAL: CA VAL: CB VAL: CG1VAL: CG2TRP: N TRP: NT TRP: C TRP: O TRP: OXTTRP: CA TRP: CB TRP: CG TRP: CD1 CG : NE1TRP: CD2 CG : CE2: CE3TRP: NE1 CD1: CE2TRP: CE2 NE1: CD2: CZ2TRP: CZ2 CE2: CH2TRP: CE3 CD2: CZ3TRP: CZ3 CE3: CH2TRP: CH2TYR: N TYR: NT TYR: C TYR: O TYR: OXTTYR: CA TYR: CB TYR: CG TYR: CD1TYR: CD2TYR: CE1TYR: CE2TYR: CZ CE1: CE2: OH TYR: OH ASX: N ASX: NT ASX: C ASX: O ASX: OXTASX: CA ASX: CB ASX: CG CB : OD1: ND2: AD1: AD2ASX: OD1ASX: AD1ASX: ND2ASX: AD2GLX: N GLX: NT GLX: C GLX: O GLX: OXTGLX: CA GLX: CB GLX: CG GLX: CD CG : OE1: NE2: AE1: AE2GLX: OE1GLX: AE1GLX: NE2GLX: AE2 U: C1* N1 : C2*: O4* U: C1' N1 : C2': O4' U: C2* C3*: O2*: C1* U: O2* U: C3* C4*: O3*: C2* U: O3* U: C4* C5*: O4*: C3* U: O4* C4*: C1* U: C5* C4*: O5* U: O5* C5*: P : PA U: C2' C3': O2': C1' U: O2' U: C3' C4': O3': C2' U: O3' U: C4' C5': O4': C3' U: O4' C4': C1' U: C5' C4': O5' U: O5' C5': P : PA U: P O5*: O5': O1P: O2P: O3P U: O1P P U: O2P U: O3P U: PA O5*: O5': O1A: O2A: O3A U: O1A PA U: O2A U: O3A PA : PB U: PB O5*: O5': O1B: O2B: O3B U: O1B PB U: O2B U: O3B PB : PG U: PG O5*: O5': O1G: O2G: O3G : S1G U: O1G PG U: O2G U: O3G U: S1G U: N1 C2 : C6 : C1*: C1' U: C2 N1 : N3 : O2 U: N3 C2 : C4 U: C4 N3 : C5 : O4 U: C5 C4 : C6 U: C6 C5 : N1 U: O2 C2 U: O4 C4 T: C1* T: C1' T: C2* T: O2* T: C3* T: O3* T: C4* T: O4* T: C5* T: O5* T: C2' T: O2' T: C3' T: O3' T: C4' T: O4' T: C5' T: O5' T: P T: O1P T: O2P T: O3P T: PA T: O1A T: O2A T: O3A T: PB T: O1B T: O2B T: O3B T: PG T: O1G T: O2G T: O3G T: S1G T: N1 T: C2 T: N3 T: C4 T: C5 C4 : C6 : C5M: C5A: CM5: CA5 T: C6 T: O2 T: O4 T: C5M C5 T: C5A T: CM5 T: CA5 C: C1* C: C1' C: C2* C: O2* C: C3* C: O3* C: C4* C: O4* C: C5* C: O5* C: C2' C: O2' C: C3' C: O3' C: C4' C: O4' C: C5' C: O5' C: P C: O1P C: O2P C: O3P C: PA C: O1A C: O2A C: O3A C: PB C: O1B C: O2B C: O3B C: PG C: O1G C: O2G C: O3G C: S1G C: N1 C: C2 C: N3 C: C4 N3 : C5 : N4 C: C5 C: C6 C: O2 C: N4 A: C1* N9 : C2*: O4* A: C1' N9 : C2': O4' A: C2* A: O2* A: C3* A: O3* A: C4* A: O4* A: C5* A: O5* A: C2' A: O2' A: C3' A: O3' A: C4' A: O4' A: C5' A: O5' A: P A: O1P A: O2P A: O3P A: PA A: O1A A: O2A A: O3A A: PB A: O1B A: O2B A: O3B A: PG A: O1G A: O2G A: O3G A: S1G A: N9 C8 : C4 : C1*: C1' A: C8 N9 : N7 A: N7 C8 : C5 A: C5 N7 : C6 : C4 A: C6 C5 : N6 : N1 A: N6 A: N1 C6 : C2 A: C2 N1 : N3 A: N3 A: C4 N9 : C5 : N3 G: C1* G: C1' G: C2* G: O2* G: C3* G: O3* G: C4* G: O4* G: C5* G: O5* G: C2' G: O2' G: C3' G: O3' G: C4' G: O4' G: C5' G: O5' G: P G: O1P G: O2P G: O3P G: PA G: O1A G: O2A G: O3A G: PB G: O1B G: O2B G: O3B G: PG G: O1G G: O2G G: O3G G: S1G G: N9 G: C8 G: N7 G: C5 G: C6 C5 : O6 : N1 G: O6 G: N1 G: C2 N1 : N2 : N3 G: N2 G: N3 G: C4 :GUA:GTP:GDP:GMP:GSP:ADE:ATP:ADP:AMP:CYT:CTP:CDP:CMP:URA:UTP:UDP:UMP:THY:TTP:TDP:TMP::GUA:GTP:GDP:GMP:GSP::ADE:ATP:ADP:AMP::CYT:CTP:CDP:CMP::URA:UTP:UDP:UMP::THY:TTP:TDP:TMP:ERROR duplicate key: InsertInStdResConnTable("%s", "%s") -- old("%s" @%d) ERROR duplicate key: InsertInStdResConnTable("%s", "%s") - old("%s" @%d) %5d] ("%s" --> "%s") NULL:identity transformation:could not create Identity transformation - Atom skipped BONDROTROTTRANSSAVERESTOREGOCOSPOLYCONSTno transformation to attach bias function:r%s%s could not open include file:unknown record type:REMARK Atoms Rotated To %s h㈵>#%sAUTOBONDROT with %d variables %s %sROT %sTRANS %s orig %g scan from %g to %g by %g %s AXIS(%g, %g, %g -> %g, %g, %g) %sSAVE transformation (level %d) %sRESTORE transformation (level %d) %sUNKNOWN transformation (type %d) %s CONST bias function %g %s POLYNOMIAL bias function %g*(x - %g)^%g %s COSINE bias function %g*(%g - cos(%g*(x - %g)))/2 %s UNKNOWN bias function type: %d %s %4.4s%c%3.3s %c%4d%c %8.3f%8.3f%8.3f%6.2f%6.2f %s %sread %d GO statements NULL xformDatabase ATOM %4d %4.4s%c%3.3s %c%4d%c %8.3f%8.3f%8.3f%6.2f%6.2f auto could not create transformation databasecould not create transformation stackcould not create transformation: NULL/NULL/TRANSFORMATION where start == end (step reset)could not create Xform atom recordcould not create atom sorted-order arrayatom duplicated in autobondrot inputMbP?ư>%g 푪Fߑ??could not create 'go to' recordcould not create 'basis function' records!@?L??_q?> A@?̾> ף<ekkkkkkkl>l`llllmm6m`mmmmmmn nek`nknk`nknnolo o`omoo`oooMp`pMppp`qqqqrssllskmsmosnsso tttttu uEu`uuuv vsvvvvvwSw`wwww uwwMpwxxxxy@yyyz zo`z{ {E{_{e{ q{w{ {{@{|@k|@Mp| }T}`}}~~t9?9`_{e{q{w{{{`kځkk t+t2k>kEQWQk^uowv}z`0m`Ål0lÅυSm~{{%`%q o E`zԉ o 2 @?BJLQ•?>LS?>LW?>L\?>L`?33?E?bhff??333?jn33??(?p tff?ff?̌?v {ff?33??}!@ff@H?LV"33?@•? ff?ff?z?\?\?p}?#???25ff@ff@q=?8???L> 33s?33s?Q?L ??R?L5q=?q=?z@L; ff&?ff&??Lp}?p}?p?L<L?L??L(p=?p=?p?L 333?333?Q?B(?(?33?L#’Q8?Q8?H?Œi̒5?5??LO%ϒp?p?{@LZ&Ғ̌?̌??L=*Ւ{n?{n??L /ؒG?G?@b0ےh?h?33?L31ޒ)\O?)\O?ff?L"7Q?Q?@L8??@LǑ?̌??0P??R?LaQQ?Q? @LGR= W?= W?q=?Ldq=J?q=J? ?L!H:?H:?(?L^4Qx?Qx?H?LX>q=?q=??L,@ff?ff??LhF??ף?LeJ (?(?33?LLN G!?G!?)\?Lc\ ׃? ׃?\?L.??jR>R>fff?LL>L>(\?LA ??vWff@ff@•?L??ŒU!{.?{.?G>L`$@?@?R?L+'??\?L- *???L6$-ף@ף@33?0g':fff?fff??Lj(<E?E?G?LY2?5?5??LT3B @ @z?Lf6E @ @ ף?B79H ׃? ׃?\?L:KR^?R^?{?L*WNQ?Q?+@LNXQ)\?)\?= @L_ZTq=?q=??L?)W(\?(\?33?L]+Z5?5??LS,]Q?Q?{?LQ-`\B?G?ff?LH.cff?ff??LK;f{?{?33?L@<ǐ?̌??LI=l33?33??L'?o???L\Arff?ff??L$Buff?ff??L1Cx??q=?L%D{ ׃? ׃??LbE~\?\??L9G\?\??L/HY?Y?H?L[I(\?(\?33?LPKE?E??LELG?G??L4ML?L??LS•?•?H?LJTp}?p}? ?LUh?h??LRV @ @? Yff?ff?@LF[̌?̌??LD]??(?LM^???L_??ף?L`???La??q=?Lb???L&c???L)dÓ??ff?L:eƓ??ff?LCfɓ??ff?Lk̓vmΓ}lГjnԓ֓oړbpLəәəܙəəəəə ə ).)7)@)I)R)[əd)məvəəəəəəə)ǚ)К)ٚ)ə)ə əəə&ə/ə8əAəJS)\)e)n)wə)əəəəəəəțəћڛ)))) 'ə0)9BəKəTə]əfəoəxəə))))ŜΜӜܜə)"+5ə>əGəPəYəbəkətə}əəəŝəΝəםəəəə) )))(16Μ?ܜHQVə_)hq{əəəəəəĞə͞ə֞ߞ)(1:CLU^gpyəŸ˟ԟݟəəəə əəə%ə.7)@)I)R)[dmvȠѠڠߠڠڠڠڠڠ ə)'09ڠBəKəTə]əfəoəxəə))))ɡҡۡΜΜΜΜΜ#Μ,ə5)>GPYbΜkətə}əəəəəə)Ţ)΢)ע) (1:əC)LU^əgəpəyəəəəə)))ʣ)ӣܣܣܣܣə)ܣܣ ܣ)ə2ə;əDəMV)_)h)q)z¤əˤ)Ԥݤəəəə əəə%ə.7)@)I)R)[dmvQQQQə)QǥQХQ٥əəəəəəəə!*)3)<)E)NW`ir{ĦɦĦҦۦĦĦə)#-#6?ĦHəQəZəcələuə~əə))))Ƨ˧əԧ)ݧəəəəə əəə%.)7@E@NW`ir{əəəèə̨əըəިəəə) &/8AJS\enwəəəəȩəѩəکəəə))))"+49BGPU^clqəz)ləĪəͪə֪əߪəəəə )))')09ΜBܜKT]bək)t}+əəəəəəəūəΫ׫))))ə) əəə(ə1ə:əCəLəU^)g)p)y)ə)ʬϬجݬ#,5>GLGU^c^l^u~ɭӭܭܭ &09CLVL_hGqzz~ƮϮޮɭ $=ʬFجOXajs|GG^^^į~ͯ֯߯ɭܭܭ  '050>0GPZPcPl0u0~0ð̰հް&9 G1z:zCL~U^Ϯgpɭy PıPͱPֱ߱0 ʬج'09BKT]fGoGx^^^~ɭɲܭҲܭ۲ (16&?H\9eLnLwGzz~Ϯȳɭѳڳʬج )2;DMV_hGqGz^^^~´ɭ˴ܭԴܭݴ!*3&<HELNLW`Gizrz{~Ϯɭõ̵۵$ʬج#,5>GGGP^Y^b^k~t}ɭܭܭŶζӶܶܶܶܶ1H9L L)2G;D~MVϮ_hɭqζzܶܶƷϷ޷Ϸ(1ENW`ir{1)ĸ͸1ָ߸ %.7@1I߸R[en}1Ź߸ι׹ (2+;DMV_h1qz1߸ȺѺں %.71@IXak)t}1߸[Żλػ!1*߸3׹<ENW`ir{1߸λɼҼۼ1߸ )3)<ENW1`߸i[r{1߸ɽ[ҽ۽ )12߸;[DMW`js1ʾӾݾ) 1%4)=)FOXajs1|I))Ŀ1Ϳ߸ֿ׹߿ &5>HQ[dnw1߸׹( (11:߸CLenw1߸[ /8GP_^hq~ !*9BLU_hw'050>GQ`$.7<EJ S8\Pe^nqw~ *BUh"+4=0F0OGX`ajs|$7E  8&P/^8qAJS\enw~ *BUh00G"`+4=FOXajs$7EP^q '~0 9B*KBTU]hfox00G`%/8BKZcr{P^q %~. 7@*IBRU[hdmv00G`%8K!*9BKTc7luJ  (\| w s0 o0ooԆr.>N^n~Ήމ.>N^n~Ίފ.>N^GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)GCC: (GNU) 3.2.2 20030222 (Red Hat Linux 3.2.2-5)h$,$  #$ !_IO_stdin_usedh../sysdeps/i386/elf/start.S/usr/src/build/324954-i386/BUILD/glibc-2.3.2-200304020432/csuGNU AS 2.13.90.0.18o/<<#LSLfintN b VLb {MfLO|IS#NZ#  # O#7:# _:!#"#2 &  F  Q %    h  8  @B |XAj# ]k# e=l#m# nO#SSSd  jՅYd<?u[#va#xS#^zl#  {l# RHr}# Ki~# AN# O6# jS#$S#(S#,S#0S#4#8j$@S##S#US# S#&##@O# G=SCOUgxSSd SSbSSSS+G#CS#+#:jL_,492#3j#~,5 9/ 4: " r# $ %a ( H) *  + 7,S - G2: 3\ 9: : * s  > u   jS %  M ]    g -S  S S S e Z :   6 K S  % l \S ; E u q#  #aSa  a d!6S6a }G R5_ 7 8S 9 :S:/usr/src/build/324954-i386/BUILD/glibc-2.3.2-200304020432/build-i386-linux/csu/crti.S/usr/src/build/324954-i386/BUILD/glibc-2.3.2-200304020432/csuGNU AS 2.13.90.0.18(/usr/src/build/324954-i386/BUILD/glibc-2.3.2-200304020432/build-i386-linux/csu/crtn.S/usr/src/build/324954-i386/BUILD/glibc-2.3.2-200304020432/csuGNU AS 2.13.90.0.18%%  : ;  : ; I8 I!I/ $ > $ >  : ; : ;I : ; I : ; I  : ; (  : ;  I' II &I' < !I4: ; I?  %%Q/ ../sysdeps/i386/elfstart.Sh.01:"!VWYW  ../sysdeps/generic/bits../wcsmbs/usr/lib/gcc-lib/i386-redhat-linux/3.2.2/include../sysdeps/gnu../iconvinit.ctypes.hwchar.hstddef.h_G_config.hgconv.hi /usr/src/build/324954-i386/BUILD/glibc-2.3.2-200304020432/build-i386-linux/csucrti.S2,W ",: ,Wdd,,-:i /usr/src/build/324954-i386/BUILD/glibc-2.3.2-200304020432/build-i386-linux/csucrtn.S: | _G_int32_t__time_t__GCONV_INCOMPLETE_INPUT__daddr_t__int32_t__gconv_init_fct_G_iconv_t__rlim64_t__GCONV_ILLEGAL_DESCRIPTOR__gconv_infoshort unsigned intunsigned char__useconds_t__counter__fct__val__value__nsteps_G_int16_t__max_needed_from__gconv_btowc_fct__off_t__ssize_t__statepinit.c__fsfilcnt_t__steps__fsfilcnt64_t__blkcnt_t__blksize_t_G_fpos64_t__gconv_t__trans_end_fct__u_int/usr/src/build/324954-i386/BUILD/glibc-2.3.2-200304020432/csu__GCONV_ILLEGAL_INPUT__gconv_loaded_object__to_name__uint64_t__id_t__GCONV_EMPTY_INPUT__cd__ino_t__GCONV_NOCONV__invocation_counter__pid_t__u_short__count__quad_t__u_long__fsid_t__GCONV_FULL_OUTPUT__max_needed_to__timer_t__stateful__uint32_t__key_t__u_char__gconv_step__shlib_handle__min_needed_toshort int__dev_tlong long int__gconv_trans_data__outbuflong long unsigned int__uid_t__wchb__uint16_twint_t__u_quad_t__gconv_trans_end_fct__flags__outbufend__combined__gconv_trans_init_fct__init_fct__modname__trans_context_fctGNU C 3.2.2 20030222 (Red Hat Linux 3.2.2-5)__trans_fct__rlim_t__wch__intptr_t__suseconds_t__ino64_twchar_t__GCONV_IS_LAST__blkcnt64_t__fsblkcnt64_t__mode_t__qaddr_t__pos__gconv_end_fct_IO_stdin_used__internal_use__GCONV_NODB__clock_t__gconv_step_data__gconv_trans_query_fct__socklen_t__int64_t__GCONV_NOMEM__off64_t__btowc_fct_G_fpos_t__int8_t__GCONV_OK__fsblkcnt_t_G_uint32_t__nlink_t__swblk_t__GCONV_INTERNAL_ERROR__mbstate_t__gid_t__clockid_t__state__gconv_trans_context_fct__next__GCONV_IGNORE_ERRORS__end_fct__trans__uint8_t__gconv_fct__from_name__min_needed_from__gconv_trans_fct__data__caddr_t_G_uint16_t__loff_t__int16_t.symtab.strtab.shstrtab.interp.note.ABI-tag.hash.dynsym.dynstr.gnu.version.gnu.version_r.rel.dyn.rel.plt.init.text.fini.rodata.eh_frame.data.dynamic.ctors.dtors.jcr.got.bss.comment.debug_aranges.debug_pubnames.debug_info.debug_abbrev.debug_line.debug_frame.debug_str# 1((T7 ||?\\wGoԆ\To00`c  l 0 upp{hh 8lww) TUȍ rssss`t`T `0x%- 8 0V+!  (|\Ԇ0   h  rssss`t !dozoodo0d ssslt  s's4BsN| d0ddd $(,048%<-@4D:H@LIPST\Xe\s`}dhlptx|)8Nds0 0`000$/8B Qt_tfury@,lptx|H /= TOtfx||@ehlpt&x0<GR@w_n(~8: y-R /usr/src/build/324954-i386/BUILD/glibc-2.3.2-200304020432/build-i386-linux/config.habi-note.S/usr/src/build/324954-i386/BUILD/glibc-2.3.2-200304020432/build-i386-linux/csu/abi-tag.hinit.c/usr/src/build/324954-i386/BUILD/glibc-2.3.2-200304020432/build-i386-linux/csu/crti.S/usr/src/build/324954-i386/BUILD/glibc-2.3.2-200304020432/build-i386-linux/csu/defs.hinitfini.ccall_gmon_startcrtstuff.c__CTOR_LIST____DTOR_LIST____EH_FRAME_BEGIN____JCR_LIST__p.0completed.1__do_global_dtors_auxframe_dummy__CTOR_END____DTOR_END____FRAME_END____JCR_END____do_global_ctors_aux/usr/src/build/324954-i386/BUILD/glibc-2.3.2-200304020432/build-i386-linux/csu/crtn.Sprobe.cversionStringshortVersionStrreferenceStringelectronicReferenceLautobondrotImplicitHUsePolarHVerboseDoMcMcDoHetDoH2ODoWatWatLimitDotsLensDotsColorGapByNABaseColorDumpNewHOMaxbondedUseStdBondUseHParentShowTicksOldStyleUSplitBySegIDHB2aromFaceAtomMastersPermitCHXHBDebugLevelOutputFmtTypeOutputHBsOutputClashesOutputVDWsOnlyBadOutContactSUMMARYMin_regular_hb_cutoffMin_charged_hb_cutoffRadScaleFactorRadScaleOffsetCORadScaleGAPweightBUMPweightHBweightCHOHBfactorLowGoodCutHighGoodCutOccupancyCutoffOutPointColormcmccontscsccontmcsccontothrcontsummcontmodelCountmodelLimitmodelSrcmodelTargmodelToProcessinputfilenameCOdotsmodelNumberdots.cabin.creadPDBrecs.cgeom3d.cutility.cselect.cAromaticAtomsTblAAListHphobicAAListHphilicAAListAromaticAAListNAListNAbackboneListNAbaseGroupingMethylResListMethylAtomsTblChargedAAListChargedAAAtomsTblAlwaysChargedAtomsListAmbigChargedAtomsListChargedNucAcidAtomsListWaterListDonorAcceptorAtomTblparse.cSymTableinputStrtokenvalrealtokvallookaheadlexbufLexemesLastLexCharLastSymEntryParseErrormodel.0ireturn.1atomprops.cExplMaxRadImplMaxRadAtomTblIndexstdconntable.cStdResTblBucketStandardResAtomConnRecautobondrot.cXFworkBufinitResultsparseAtomNumbercopyCharspopXFStackcos@@GLIBC_2.0atomWithinDistanceloadDotSpheresappendTransformationisModelbuildXDBsortedAtomRecsnonblankrangeidentifyAtomconvertKinColorToXVv3matMulfeof@@GLIBC_2.0parseIntegerlimitItemlookupv3makeVecparseAtomNameungetc@@GLIBC_2.0_DYNAMICstrdup@@GLIBC_2.0v3translationMatInsertInStdResConnTabledeleteAtomgrowBoundingBoxgetCovRadinitStdConnTableparseChaingetAtnolocaltime@@GLIBC_2.0NtermCheckautobondrotstrcmp@@GLIBC_2.0close@@GLIBC_2.0_fp_hwfreeDotSpherefprintf@@GLIBC_2.0modelInPatternmakeTerminalgenDotSurfacesetMainchainBondingmatchPat__fini_array_endwriteAltFmtXVv3lerpv3distancegetImplRadsetPropertieserrmsggapSizeisAtom__dso_handlev3dotindexLevelssetItemdescrCommanddoListCleanupProcessing__libc_csu_finiXFdescribeAtomListgenDotIntersectsetOrientationenumDotSkinbinAtomsAtomTbldot2srcCenterpow@@GLIBC_2.0rawEnumeratedebugBondingListsnumericItemdotSpheresetAromaticPropparseModelloadAtomsinitXformDBdeleteRingInfoListinitEndDataparseXYZnoticedCt_initcompareXDBAtomRecslexStringappendBiasFunctionmalloc@@GLIBC_2.0noticedNtparseOccupancycompArgStrenumerateaddNeighbornaBaseCategorymovingAtomListProcessingv3normalizemarkBondsProcessResInfostrpbrk@@GLIBC_2.0resDiffersFromPrevv3scaleinitBinsv3crossstdout@@GLIBC_2.0stderr@@GLIBC_2.0countSelecteddeleteXformAtomRecordassignGapColorForXVv3negateSearchStdResConnTableparseAltLocCodeparseRealparseTempFactorv3distanceSqprobehelpdiscardXformDBexamineDotsdescribeLookaheadexprItemfreePatterntime@@GLIBC_2.0distItemv3squaredLengthaddGoToRecord_startassignGapColorForOdeleteResidueDatanewResidueDatagetMaxRadiusmovingDoCommandconvertKinColorToOstrstr@@GLIBC_2.0strlen@@GLIBC_2.0writeOutputprintPatternv3addinitalizeAtomTblwriteAltFmtOnewXformAtomRecordqsort@@GLIBC_2.0dumpStdConnTableatof@@GLIBC_2.0parseResidueNamesetHydrogenParentNamepushXFStacktopXFStackcountsummarystrncmp@@GLIBC_2.0getPatsurfDots__fini_array_startresCheckv3angle__libc_csu_initreadTransformationDatabasefloor@@GLIBC_2.0addBBox2BBox__bss_startmaincountSkinupdateHydrogenInforunnameAndTorsionatomHasPropdotTypereadRecordatomsClose__libc_start_main@@GLIBC_2.0dot2bullsEye__init_array_endv3dihedralbinLocexp@@GLIBC_2.0getColordumpResisTerv3identityMattoupper@@GLIBC_2.0noteinRangedata_startasctime@@GLIBC_2.0initializeXFStackparseSegIDprintf@@GLIBC_2.0_fininewDotsqrt@@GLIBC_2.0mainProbeProcfclose@@GLIBC_2.1isdigit@@GLIBC_2.0parseResidueNumberdump_changesnonblankstrcleanupListExtrasgetAtomNamefixupLongBondChainsparseArgsetMethylPropv3lengthstrspn@@GLIBC_2.0exit@@GLIBC_2.0probeversiondeleteTransformationglobPDBrecestNumDotsdeleteMovingAtomnewMovingAtomkissEdge2bullsEye_edatarebuildTmatassignGapColorForKin_GLOBAL_OFFSET_TABLE_free@@GLIBC_2.0_endorientedAtomsselectSourceCtermCheckhaltwriteRawacos@@GLIBC_2.0strncasecmp@@GLIBC_2.0unloadDotSpheresstdin@@GLIBC_2.0getExplRadisPseudoAtomfindTouchingAtomssearchForStdBondingPartnernewAtomdoCommandprocessCommandlineisHetfopen@@GLIBC_2.1v3rotatenewRingInfo__init_array_startlexanupdateBoundingBoxglobPDBrecLeninsertfreeResults_IO_stdin_usedfeatureItemstrtok@@GLIBC_2.0disposeListOfResiduesrecPrintgetPDBrecordparseResidueInsertionCodeidItemsprintf@@GLIBC_2.0makeDotsHashInStdResTbldotClassIndex__data_startsin@@GLIBC_2.0disposeBinsappendAtomRecwarnisCarbonylAtom_IO_getc@@GLIBC_2.0_Jv_RegisterClasses__ctype_b_loc@@GLIBC_2.3v3mulPointMatv3subv3rotationMatmakeNodematchTokgetRadiusdescribeXformDBsaveDothisNHchecknewTransformationdisposeListOfAtomsscanXDBinputText__gmon_start__fillinTransformationRecstrcpy@@GLIBC_2.0king-2.21.120420/king/installer/KiNGdisk0000644000000000000000000000000011531212656016116 0ustar rootrootking-2.21.120420/king/installer/king.iap_xml.indigo0000644000000000000000000021161311531212656020321 0ustar rootroot 53,46,53,46,49,32,78,111,119,32,66,117,105,108,100,32,50,48,51,50 12,42,11,90,83,49,50,54,53,76,81,66,70,67,78,72 3,13,71,76,105,110,117,120,44,32,50,46,52,46,50,48,45,56,44,32,105,51,56,54,59,32,74,97,118,97,32,49,46,51,46,49,95,48,56,44,32,83,117,110,32,77,105,99,114,111,115,121,115,116,101,109,115,32,73,110,99,46,44,32,104,116,116,112,58,47,47,106,97,118,97,46,115,117,110,46,99,111,109,47,59,32,101,110,44,32,85,83,59,32,85,84,70,45,56 1,0,0,-16,-40,101,48,-48,80,112,112,97,87,98,113,97,113,65,81,51,74,65,78,68,71,68,64,69,66,69,48,79,87,5,2,7,8,17,122,7,0,0,0 false true true false true 1368263 false 0 false true 419554 false 0 4 2 2 true true false false 0 false 1 224 438 0 1 0 3 2 0 false 1 false true 2 1 false 1 2 2 false 1 false true true true false false false true 2 3 false 1 2 5 false true true true 2 true 155 2 false false true true true true false 1 -1 false 1 6 0 0 true false false false true true 4 1 0 0 0 false true true false false true false true false false true true false true 3273 false 0 false true 3614 false 0 false true 190191 false 0 false true 176128 false 0 false true 26430 false 0 false true 1671 false 0 false true 86028 false 0 false true false false true true false false king-2.21.120420/king/installer/kingicon32.gif0000644000000000000000000000242611531212656017203 0ustar rootrootGIF89a   1, `K eOt\+"u ghT u6,!}B6 ٱ% ozƣ)((& jY/H=ͮ>մA7/*$ յDNBSG̭CҳFWJ>aS!; RʭIũIBгOHͱP XոT ]]Q%\¨NMGECu6ڽY{k2qb.K@ZO%bq65.E<˱Wew;پ_~?ؽ`j]/_S*jj˲\ªXF> ma5g[2o/*t`0+űk SK.͹t{aukE/+Ąɸ|bZ>̼vSzǹȘ֦өΦSO@۶ļոtYqXc.$H: #)& Ǩ?|i*I>޽MظKAӴKFٺQ7$@:(;5%E?/WP=ID5kpjXztc̸xٽge_  6/  ž b[Mľ , H*\ȰÇ#}aS :>7ppfAx| Zq ECLϱ:lQid¨4a0޲tD’+ȧUnA[b Xds-5ì%YVCxY$@Ӓ\ | {ʈ1놷qpH `?FJb`@2Ng.*CU B!]`ǚ=4P2Y.IKaC;Cv X3̣oO ]Q$r T@ P9.pA fLB(p#HB"Yx0@c)S! AX < tW;(K0M!E Ub 較 $ z!2IHqDA.C$>` i/9Њ[$`>J"D'%1k/b2MGNQE m7  Idꩨ ;king-2.21.120420/king/resource/0000755000000000000000000000000011744310054014371 5ustar rootrootking-2.21.120420/king/resource/king/0000755000000000000000000000000011744310054015321 5ustar rootrootking-2.21.120420/king/resource/king/king.help0000644000000000000000000000072111571452340017126 0ustar rootroot USAGE king [arguments] [input file(s)] INPUT FILES KiNG accepts kinemage, PDB, mmCIF, or electron density files as input. ARGUMENTS -version Print version information. -m[erge] Merge all input files into one kinemage. -s[ingle] Keep all input kin or structure files into separate kinemages. -phenix Use Phenix colors for electron density files entered on command line. king-2.21.120420/king/resource/king/html/0000755000000000000000000000000011744310054016265 5ustar rootrootking-2.21.120420/king/resource/king/html/kbd-shortcuts.html0000644000000000000000000000572311531212640021752 0ustar rootroot

Keyboard shortcuts in KiNG

All keyboard shortcuts also appear next to the corresponding menu item.

AAnimate forward
Shift-AAnimate backward
B2-Animate forward
Shift-B2-Animate backward
CToggle crosseye/walleye stereo
FToggle flatland mode
GToggle black/white background
LToggle color-by-list
MToggle measures on/off
PToggle perspective
QBig markers
RToggle auto-rock
SToggle stereo pair viewing
TToggle thinline
Shift-TToggle multiwidth
WBig labels
YToggle depth cueing by color
]Next aspect
[Previous aspect
\Aspects off
/Toggle parallel coordinates
=Accumulate (animate groups)
+Accumulate (2animate groups)
-"Decumulate" (animate groups)
_"Decumulate" (2animate groups)

Ctrl-AAppend kinemage file
Ctrl-EShow error log
Ctrl-FFind point (dialog)
Ctrl-GFind next point
Ctrl-HShow hierarchy window
Ctrl-KAbout KiNG (version, etc.)
Ctrl-NCreate new KiNG instance
Ctrl-OOpen kinemage file
Ctrl-PPrint current kinemage
Ctrl-QClose this KiNG instance (quit)
Ctrl-SSave all open kinemages (.kin)
Ctrl-TShow text window
Ctrl-VSave current view
Shift-Ctrl-VEdit list of views
Ctrl-WClose the currently open kinemage
Shift-Ctrl-WClose all currently open kinemages

F1User manual


Shortcuts for Hierarchy Editor

InsertNew group
DeleteDelete group
EnterEdit properties
/Toggle visibility on/off
Ctrl-XCut
Ctrl-VPaste
Ctrl-UpMove toward front in list of children
Ctrl-DownMove toward back in list of children
king-2.21.120420/king/resource/king/html/king-manual.html0000644000000000000000000023517611531212640021370 0ustar rootroot The \noun{KiNG} manual

The KING manual

Ian W. Davis

Vincent B. Chen

Abstract

KING (Kinemage, Next Generation) is an interactive system for three-dimensional vector graphics. It supports a set of graphics primitives that make it suitable for many types of graphs, plots, and other illustrations; although its first use was to display macromolecular structures for biophysical research. KING builds on MAGE, JAVAMAGE, and the "kinemage" (kinetic image) concept to deliver a full-featured Java application with a user-friendly interface and integrated editing features. It also operates as a Java applet to promote easy access to kinemages from a web browser.

Contents

1  Getting started
    1.1  What is a kinemage?
    1.2  Starting the KiNG program
        1.2.1  Download KiNG
        1.2.2  Make sure you have Java
        1.2.3  Launch KiNG
    1.3  Opening a kinemage
    1.4  Basic kinemage reading: Using KiNG to view a kinemage
        1.4.1  Basic interaction
            1.4.1.1  Moving the kinemage around
            1.4.1.2  Identifying points
            1.4.1.3  Markers
            1.4.1.4  Turning groups on & off
            1.4.1.5  Re-centering
            1.4.1.6  Zooming in and out
            1.4.1.7  Clipping
            1.4.1.8  More modes of interation
        1.4.2  Reading the kinemage text
        1.4.3  Using different viewpoints
        1.4.4  Other features
2  Input & Output
    2.1  Opening a kinemage
    2.2  Working with multiple kinemages
    2.3  Appending a kinemage
    2.4  Saving kinemages
    2.5  Printing kinemages
    2.6  Exporting kinemages in other formats
        2.6.1  Exporting bitmapped images (JPEG, PNG)
        2.6.2  Exporting vector graphics (PDF, PostScript, etc.)
3  Advanced kinemage reading
    3.1  Finding points by name
        3.1.1  Whole word searches
        3.1.2  Substring searches
        3.1.3  Glob (simple regex) searches
        3.1.4  Perl5 regex searches
        3.1.5  Tips for faster searches
    3.2  Viewing animations
    3.3  Controlling presentation: The Display menu
        3.3.1  Stereo
        3.3.2  OpenGL
    3.4  Master buttons
4  Kinemage authoring: Using KiNG to edit a kinemage
    4.1  Merging kinemages together
    4.2  Editing text
    4.3  Editing views
    4.4  The hierarchy editor
5  The Tools
    5.1  Understanding the Tools and Plug-ins
        5.1.1  Extra measurements
        5.1.2  XYZ coordinates
        5.1.3  Pick objects
    5.2  Using KiNG with a multi-button mouse
    5.3  Navigate: Exploring in 3-D
        5.3.1  Z-rotation ("pinwheel")
        5.3.2  Translation ("flatland")
        5.3.3  Command reference
    5.4  Draw New: Reworking the kinemage
    5.5  Electron Density: Visualizing maps
    5.6  Update KiNG: Upgrading without the hassle
6  Configuring KiNG
7  Launching KiNG
    7.1  Running KiNG as an application
    7.2  Making KiNG an applet in a web page
8  Additional resources
    8.1  Included manuals
    8.2  Included kinemages
    8.3  External documentation
    8.4  Bug reporting and contact info
9  Copyright & acknowledgments
    9.1  Copyright
    9.2  Licenses
    9.3  Acknowledgments
    9.4  Revision status
A  KiNG License
    A.1  What this license applies to
    A.2  The KiNG License
    A.3  Where this license came from

Chapter 1
Getting started

1.1  What is a kinemage?

A kinemage is a "kinetic image," an interactive, three-dimensional illustration. Because kinemages contain simple geometric objects - points, lines, spheres, etc. - they are suited to a great variety of subjects, from simple sketches to sophisticated plots to detailed schematics of 3-D objects. Their strength is in selective presentation of information - they were originally intended as an alternative to flat, static illustrations in scientific journals.
In fact, kinemages were first created as a way of visualizing macromolecular structures, particularly x-ray crystal structures of proteins. However, such a kinemage is a drawing of a molecule, albeit a 3-D drawing, and not the molecule itself. Thus, the kinemage lacks most of the information in a PDB file, and kinemage display program cannot read PDB files directly. Since their creation, kinemages have been extended to a variety of other fields, from the social sciences to ecology to education.
The kinemage concept is the brainchild of Drs. David and Jane Richardson at Duke University in Durham, North Carolina, USA. Their website is at http://kinemage.biochem.duke.edu.

1.2  Starting the KiNG program

If you're reading this, you may already have KiNG running. In that case, feel free to skip this section. If not, we'll guide you through getting KiNG up and running on your system.

1.2.1  Download KiNG

If you don't already have a copy of KiNG, you can download it from http://kinemage.biochem.duke.edu. Even if you have a copy already, you might check periodically for new version that add features and fix bugs. If you run on a Windows or Linux machine and aren't already knowledgeable about Java techonology, we recommend downloading the package that includes a Java Virtual Machine in the bundle. (This isn't an issue for Macintosh owners.)
If you just want to run KiNG as an applet on MolProbity or some other web page, you can skip this step. You can always download a copy later if you want to run it off-line.

1.2.2  Make sure you have Java

KiNG is written in the Java programming language, and so requires that the Java libraries (version 1.5 or later) be present on your computer in order for it to run. Newer Apple computers (those running Mac OS X) come with Java. Most PCs do not, though recently several manufacturers have agreed to pre-install Java on their new computers. Look for the coffee-cup icon in your Windows task bar or in the Control Panel.
If you don't have Java, you may have downloaded a copy of KiNG that was bundled with its own installation of Java. If you ran the InstallAnywhere installation program, this is the copy you have; don't worry about downloading and installing another copy of Java.
If you don't have Java and you didn't download the bundled version of KiNG, point your web browser to http://java.sun.com/getjava/index.html. The software is free and available for Windows, Linux, and Solaris computers. We recommend getting the newest version that is available (1.6.0 as of this writing).

1.2.3  Launch KiNG

Launching KiNG is as simple as double clicking on the "KiNG" icon. If you didn't download a package with an installer, etc. you may need to click on king.jar instead.
For Unix types who want a shell script, we recommend something like this:
#!/bin/sh
exec java -Xms32m -Xmx512m -jar /home/ian/bin/jars/king.jar $@
The -Xms and -Xmx switches control the amount of memory initially allocated to the Java program and the maximum memory it can consume. The default maximum of 64 MB should be enough for almost any kinemage, but a few of the largest require more (hence the -Xmx512m recommendation).
If you just want to run KiNG as an applet from a web page, you can just visit that web page now. If you don't see the "Kinglet" logo after a minute or two, make sure your browser is properly configured to work with Java. How you do this depends on which browser you have; consult its documentation for details.

1.3  Opening a kinemage

If you already have a kinemage you want to look at, this step is simple: just choose Open from the File menu, and select the kinemage you'd like to view. If you don't have anything to look at right now, don't worry! Choose Help - Built-in kinemages, and select one of the provided files to explore. See for more places to get kinemages from.

1.4  Basic kinemage reading: Using KiNG to view a kinemage

1.4.1  Basic interaction

1.4.1.1  Moving the kinemage around

A kinemage is a dynamic, 3-D illustration. The best way to take advantage of that is by rotating it and twisting it around. Just click the mouse near the center of the graphics window and slowly drag right or left, up or down. If you have multiple buttons on your mouse, use the left button or button 1. You can also use the left and right arrow keys for small rotations. If you get lost or disoriented, use the Views menu to get back on familiar ground.

1.4.1.2  Identifying points

By clicking on points with the mouse (left button again), you'll be able to identify them. The label associated with each point will appear in the bottom right of the graphics area. Furthermore, the distance from this point to the last one you clicked will also be displayed.

1.4.1.3  Markers

For keeping track of which point is selected, markers can be displayed. Two markers are displayed normally. The checkbox for markers is just below the graphics area, with the pickcenter checkbox.

1.4.1.4  Turning groups on & off

Most kinemages have many different components to them, grouped together in logical ways. A protein might have one group for each subunit; or one group for mainchain, another for side chains, and yet another for hydrogens. Groups and subgroups are given names and can be made visible or hidden by the viewer - you might want to see only one subunit, or only the backbone (without sidechains and hydrogens cluttering up the view).
The groups and subgroups appear in the button pane, to the right of the graphics area. Each one has a button to turn it on or off. Groups that are on (visible) usually have a check mark or an X in there box; a blank button means the group is hidden. Many kinemages start off with some information hidden, to avoid overwhelming the reader. Always check to see if there's more information available than is being displayed!

1.4.1.5  Re-centering

You can make any point in the kinemage be the center. The center point will be in the middle of the graphics area, and the kinemage will rotate about that point. There are several ways to set the center: you can hold the Shift key while you click the point, or use the right mouse button if you have one. You can also press the Pick center button below the graphics area and then click on the desired point.
Since re-centering brings a point to the center of the screen, using this repeatedly allows one to "walk" through a large structure.

1.4.1.6  Zooming in and out

KiNG allows you to zoom in to see small details in a kinemage. Use the Zoom slider, below the graphics area, to control how far you zoom in. You can click the mouse right or left of the knob for small movements or click the knob and drag it for larger ones. A small motion is usually all that's needed.
For easier access, one can hold Shift and drag (or drag using the right mouse button) in the graphics window. Dragging down zooms in; up zooms out. The up/down arrow keys and mouse wheel (Java 1.4 and later only) also control zooming.

1.4.1.7  Clipping

Objects that are too near the viewer, or too far away, are not displayed; otherwise, zooming in would result in a useless superposition. The depth of the clipping "slab" can be adjusted using the slider along the bottom, or by dragging side-to-side with the right mouse button (or with the Shift key held down).

1.4.1.8  More modes of interation

For more ways to explore the kinemage and interact with it, be sure to read about the Navigate tool (see ).

1.4.2  Reading the kinemage text

Exploring on your own is great, but the best guide to a kinemage is its author. Often, he or she includes a short text of a few paragraphs or pages that explains what the kinemage depicts. You can access this text using the Show text button, located just below the graphics area. An equivalent command is also available in the Edit menu.

1.4.3  Using different viewpoints

Most kinemages have one or more "views" that were selected by the author to highlight some significant feature. These views are accessible from the Views menu. Just click on one of the named views and the kinemage will "jump" to that view. You can then rotate it, zoom in or out, etc. to explore further. You can always return to the original view by selecting it again from the menu.
Kinemages without any predefined views still get an automatic "overview" view. This is a useful way to return to a known starting point if you get lost in a complicated structure.

1.4.4  Other features

The kinemage format also allows for flip-book style animations, automatic searching for points based on their name (the label that appears in the lower left when the point is clicked), and much more. There is also a rich selection of features to control exactly how the graphics are rendered. See to learn more.

Chapter 2
Input & Output

2.1  Opening a kinemage

To open a new kinemage, go the the File menu and choose Open. Browse through your file system and find a kinemage file. These files typically end in .kin. The new version-control convention is to name modified files .1.kin, .2.kin, etc., though older kinemages that have been edited may have revisions named .kip, kip1, kip2, etc. Click the button marked OK and KiNG will begin loading the file. You'll see a progress bar as KiNG loads the contents of the file, and then the first kinemage in that file will be displayed in the graphics area (where the logo used to be).
You can also drag and drop kinemages into the KiNG graphics window in order to open them, but this feature is not supported for Java versions prior to 1.4. On Mac OS X machines, you can also double-click .kin files in the Finder or drag kinemage files onto the KiNG Dock icon to launch KiNG and open the file.
Additionally, files can be specified on the command line, as in king -s foo.kin bar.kin, which will load all the kinemages in those two files upon startup. The -s (or -single) flag is required so that KiNG knows not to merge the two files together.

2.2  Working with multiple kinemages

If your file has more than one kinemage, you can choose which one you want to look at from the drop box on the right, just above the buttons. You can also use File - Open to load additional files; those kinemages will also appear in the drop box. When you're done, use File - Close to get rid of the current kinemage, or use File - Close all to get rid of all the open kinemages.
If you save your file when more than one kinemage is open, they will all be written out to that file, in the order they currently appear in. This is an easy way to create multi-kinemage files, but be careful that you don't save more than you intended to!

2.3  Appending a kinemage

Sometimes you want to combine the contents of multiple kinemages. You might want to combine a graph of your latest sales data with some nicely formated and labeled axes you prepared last month. Or maybe you want to combine a ribbon drawing of your favorite protein with a representation of the atomic detail at its active site. In either case, using File - Append will combine the contents of a new file with the contents of the currently displayed kinemage. Be careful - if the new file contains multiple kinemages, they'll all be merged into the current one!
This behavior can be achieved on the command line by specifying multiple files, as in king -m foo.kin bar.kip1, which will merge all the kinemages in those two files upon startup. The -m (or -merge) flag is optional; merging multiple files is the default behavior.

2.4  Saving kinemages

You can save kinemages using the File - Save as menu; these files are typically given the extension .kin. KiNG will try to help you by automatically appending a number to the filename so that your changes don't overwrite your original. The resulting kinemage file will be plain text that you can view and even edit by hand using any text editor (though of course you don't have to!). If you choose to do this and want use a word processor (like Microsoft Word), make sure that you load and save the file in plain text format.
Note that due to the security restrictions that web browsers place on Java applets, saving will never be possible when KiNG is running inside a web browser.

2.5  Printing kinemages

You can use File - Print to send the image in the graphics area to your printer. The image will fill as much of the page as possible without distorting it. The relative size of the elements will be exactly the same as on screen. Among the consequences of this are that an image printed from a small graphics window will have thicker lines when printed than will the image when printed from a larger graphics window. Don't worry about this too much; just remember printing is WYSIWYG (what-you-see-is-what-you-get). If it looks right on the screen, it should look right on the paper! Some images will fit better in landscape mode than portrait mode; this decision is left up to the user.
Printing should work even when KiNG is running in a web browser, although the user will generally be asked for permission first.

2.6  Exporting kinemages in other formats

Several facilities are provided that can help get data out of kinemage format and into other forms, either for making figures for publication or for further processing. Due to security restrictions placed on applets, the export features are unavailable when KiNG is running in a web browser.

2.6.1  Exporting bitmapped images (JPEG, PNG)

The File - Export menu allows one to save the current graphics image as a standard image file. Image export requires that you have Java 1.4 or newer; otherwise, an error message will appear. Several image formats are supported, including JPEG and PNG; the format can be selected from the export dialog box. These images are very useful for creating web pages, PowerPoint-style presentations, etc. For high-quality publication graphics, however, you'll want to use a vector-based format like PDF.

2.6.2  Exporting vector graphics (PDF, PostScript, etc.)

Rather than sending the image to the printer, it can be captured for inclusion in a publication or later manipulation in a graphics program like Adobe Illustrator. Note that there are several relevant options under the Display menu, particularly White background and Monochrome.
All platforms can generate PDF files using the File - Export menu. This is the simplest and best option for almost any use. "PDF" stands for Portable Document Format, the successor to PostScript as the standard for vector graphics. You can learn more about PDFs at http://www.adobe.com. It does require the (free) iText PDF library from http://www.lowagie.com/iText/, which is distributed with KiNG.
If for some reason you don't want to use PDF export, it is also often possible to hijack the print output into a file. For instance, with Macintosh OS X, both PostScript and PDF output are supported directly from the Print dialog. Under Linux, choosing Print to file from the Print dialog will generate a PostScript file, which can be converted many other formats using e.g. Ghostscript tools like ps2pdf (PDF) and ps2epsi (EPS, Encapsulated PostScript). Under Microsoft Windows, things don't seem to be as straightforward, but one possiblity is to install the generic PostScript printer drivers from Adobe and then direct this "virtual printer" to FILE (rather than, e.g., LPT1). Your mileage may vary; I'd be interested in hearing about better ways to do this from any Windows experts out there.

Chapter 3
Advanced kinemage reading

3.1  Finding points by name

Every point in a kinemage has an associated identifying label, which appears in the graphics area when the point is clicked on. You can find one or more points by searching through those labels for a word or phrase using the Edit - Find point dialog. When you press Search, KiNG will center the view on the first point that matches your criteria (you may need to zoom in/out to see it appropriately). Edit - Find next will then jump to the next matching point, until all matches are exhausted.

3.1.1  Whole word searches

This is the easiest-to-use of the search options, and usually produces the desired results. You can enter one or more words or numbers in the search field (separated by spaces), and KiNG will find all the points that contain all of those words, in any order. A search for "val 17" would find "17 A val cb" but not "valine 117".

3.1.2  Substring searches

This works like whole word searches, but will even find points that have the search terms embedded in a larger word or number. In this case, a search for "val 17" would find "valine 117". This often produces extraneous results but may occasionally be useful.

3.1.3  Glob (simple regex) searches

This search is done with a simple "regular expression", as is often used for specifying file names on the command line. A star (*) matches any group of zero or more characters, and a question mark (?) matches any single character. Notice that the search is treated as a single term, rather than multiple words - the pieces must be in the correct order. Thus a search for "val*17" would find "val17", "val 17", and "valine 117", among others; but would not find "17 val".

3.1.4  Perl5 regex searches

This search is like the simple regex search but uses the full syntax of Perl 5 regular expressions, as implemented by the gnu.regexp library. (I'm no expert, but it seems to be a very complete and official implementation. All but the most esoteric features are available.) Regular expressions are a very involved subject, and many books and on-line references are available for the interested reader.

3.1.5  Tips for faster searches

Remember that KiNG searches through all visible points to find ones matching your criteria. Turning off (i.e., making invisible, hiding, unchecking) large groups that you're not interested in will skip searching those groups. Since all the varieties of search are implemented internally with regular expressions, they are relatively computationally expensive. A search through a large kinemage may take several seconds.

3.2  Viewing animations

Kinemages often include animations. An animation in this sense is not a movie, but more like a flip-book, where similar images are aligned and displayed one at a time, in a series of discrete frames. If a kinemage contains animation(s), there will be forward and reverse buttons for the animation located below the checkboxes for groups and masters.

3.3  Controlling presentation: The Display menu

The Display menu offers several options for controlling how the kinemage is rendered. Of particular interest is the Perspective option. By default, KiNG renders objects with orthographic perspective; objects near the viewer are no larger than those far away. This is the preferred mode for viewing macromolecular structures and many 2-D graphs and figures. However, for geometrical objects and other cases where the eye expects perspective, enabling this option will result in a much more natural-looking image.
There are also several ways of controlling the coloring of the points. Each point may have its own color, and several "aspects" as well. For example, a map might be colored by the aspects of temperature, elevation, and annual rainfall; one could then choose which of these colorings to apply.
The first level of grouping above the individual point is the list; every point belongs to a list. Points that don't have a color specified take their color from the list, but there are times when one might want to suppress the individual colors and color points by the color of the list they belong to. This option is available as well.

3.3.1  Stereo

Upon request, KiNG will render the kinemage as a stereoscopic pair of images. The two views are very nearly the same, except that one is slightly rotated with respect to the other. If you can get one eye to look at each image, you can fool yourself into seeing additional depth information. Stereo can be either "cross-eye" or "wall-eye"; the former is somewhat easier to learn, but the later is more comfortable for long periods of time.
To see cross-eye stereo, cross your eyes and then look at the screen without refocusing. You should see 4 identical (though blurry) images. Relax your eyes slightly, and the center two will overlap. If you can focus on this phantom central image, you'll be seeing in stereo. It may help bring the image into sharp focus to rotate the kinemage slighly using the mouse.
If you've got KiNG set for wall-eye stereo and your eyes set for cross-eye (or vice versa), you will see a stereoscopic image, but the parts that should be in back will be in front, and it will rotate the wrong direction when you move the mouse. Change one or the other to get a more reasonable image.
Incidentally, although KiNG doesn't support multiple simultaneous views of the same kinemage, you can simulate a pair of orthogonal views by setting the stereo separation to 90 degrees in Edit - Configure KiNG. Of course, the views no longer forms a stero image, but they're useful in another way. Particularly applicable for "info-vis" kinemages, you can examine (for instance) the x-y plane and the y-z plane at the same time using this trick. It pairs well with the 90-degree rotations plugin ().

3.3.2  OpenGL

KiNG is capable of using OpenGL rendering commands to take advantage of your graphics hardware and get (hopefully) accelerated graphics performance. You'll need to have an up-to-date version of Java installed, along with the JOGL libraries (https://jogl.dev.java.net/). Make sure you get both jogl.jar and the native library or libraries (they end in .dll, .so, or .jnilib). 2008 update: It is no longer necessary to download separate files; everything needed is included in the platform specific downloads at the JOGL site. The download includes directions for installing JOGL (which discourage dropping the JAR files in the extension directories as originally recommended). Essentially, the JOGL JAR and the GLUEGEN_RT JAR need to be added to the classpath in order for JOGL to work. If you downloaded a platform-specific version of KiNG, the necessary libraries may already be included.
This feature has been tested with various combinations of Java 1.4.2 through Java 1.6.0 and JOGL 1.1 through JOGL 1.1.1. JOGL is still under development, as is this feature, and interacting so directly with the hardware is always risky, so it's possible that OpenGL rendering may hang KiNG on your computer. You've been warned.
Hopefully, a future version of Java (possibly the 1.6.x series) will use OpenGL behind the scenes for all graphics operations, making KiNG much faster and making this feature obsolete. Until then, this is a work-around for large kinemages where performance is an issue.

3.4  Master buttons

Not all the buttons to the right of the graphics control groups and subgroups of points; some are "masters." The master buttons sit below the others, separated by a spacer. When activated, a master turns on all the groups it controls; when deactivated, it turns them all off. The effects are only momentary; the group can be turned on or off directly regardless of the state of the master(s) that control it.
A single group can be controlled by multiple masters. Note that the "off" state of a master is dominant in this case: a master will always turn off the groups it controls, but will turn them on only if they are not also controlled by another master that is already off. Since the buttons of the individual groups, subgroups, and lists are sometimes hidden, one can generate a variety of patterns by turning the masters on and off in specific patterns.

Chapter 4
Kinemage authoring: Using KiNG to edit a kinemage

Kinemage files are stored as human-readable, plain-text files. They're also designed to be easily edited by human beings, using a text editor like Notepad (Windows), TextEdit (Mac), or vi (Unix). You can also use a word processor like Microsoft Word, but you have to be careful to save as plain text (.txt) rather than formatted text (.doc and others). A description of the kinemage file format is distributed with KiNG as a separate document from this manual.

4.1  Merging kinemages together

The most basic sort of editing is to combine two kinemages into one. For this, simply use the File - Append command (see ).

4.2  Editing text

The text of a kinemage is often critical for clarifying and amplifying its meaning. It's analogous to the caption that accompanies a printed figure. You can edit the kinemage text in the same window that you use for reading it (just press the Show text button).

4.3  Editing views

A simple editing tool is Views - Save current view, which records the current orientation and position of the kinemage as a new view in the Views menu. Creating a series of meaningful, clearly labeled views is a great way to make a kinemage more informative. You can delete, rename, and rearrange views using Views - Edit saved views.

4.4  The hierarchy editor

One of the goals of KiNG is to enable simple, visual editing of most parts of a kinemage. Many of the editing commands are activated using a tree-like display of the hierarchical kinemage structure, which will resemble the layout of buttons.
The structure of the kinemage can be rearranged by cutting, copying, and pasting elements; creating new elements and deleting unneeded ones; and reordering elements (using the Up and Down commands). Play with these commands, and their operation will soon become obvious. Elements can even be cut out of one kinemage and pasted into another!
Also, the properties of individual elements can be adjusted, which allows them to be renamed. What other properties are available depends on the level of the hierarchy (kinemage, group, subgroup, or list). Each element can also be toggled on and off, even if it doesn't have a button visible in the button pane.
Using the hierarchy editor effectively depends on a decent understanding of the kinemage format. If you're unfamiliar with kinemages, reading the kinemage format reference may be very helpful to you.

Chapter 5
The Tools

5.1  Understanding the Tools and Plug-ins

The Tools menu has a variety of tools and plug-ins for interacting with the kinemage. Many of these are highly domain-specific - tailored to doing structural biology, for example. Each tool "takes over" the mouse, assigning specific meanings to the various kinds of clicks and drags. Normally, the familiar Navigate tool is active, so mouse motions result in the sort of rotations, pans, and zooms that most users are accustomed to.
Plug-ins, on the other hand, just offer additional functionality that doesn't change what the mouse does. Because of this, you can have several plug-ins active at once, but only one tool.
Some special-purpose tools and plugins have been developed by other people and ship separately from KiNG. Installing these additional tools and plugins for KiNG is easy, though. Just take all plugin files that end with .jar (e.g., chiropraxis.jar, pyking.jar) and put them in the plugins/ folder that's part of your KiNG distribution. There will probably be a few JAR files in there already. Then just close KiNG and restart it to load the new tools and plugins. Note that these will not be available when running KiNG as an applet.
The tools menu also has some other options that are related to how mouse clicks and drags are interpretted, which are discussed below. The tools and plugins listed in the menu can be rearranged, grouped into submenus, or hidden entirely by using the Tools - Customize dialog box, which is also accessible from Edit - Configure KiNG.

5.1.1  Extra measurements

In addition to tracking the distance between the last two points, clicking on points to identify them can track the angle between the last three points and the dihedral angle between the last four. When these measurements are active, the Markers option will display four markers instead of two.

5.1.2  XYZ coordinates

Likewise, KiNG can display the original, unrotated coordinates of the point. This is sometimes helpful when the kinemage is a graph or plot of some data, and the position has some absolute meaning. The display of this information can be enabled in the Tools menu.

5.1.3  Pick objects

Traditionally, one can only "pick" points in a kinemage. Enabling this option allows KiNG to recognize mouse clicks that hit the actual lines drawn between points and the surfaces of triangles. In each case, the result is equivalent to clicking on the point that determines the attributes (color, line width, etc.) of that graphics object.

5.2  Using KiNG with a multi-button mouse

In KiNG, even a one-button mouse is sufficient to access all of the available functions. However, it has also been designed to take full advantage of a three-button wheel mouse. The primary function of every tool is accessed by clicking or dragging with the left (or only) mouse button. This button is referred to as "Normal" in the command reference charts.
Other functions can be accessed either by holding down keyboard keys at the same time, or by using one of the other mouse buttons. Holding the Shift key is equivalent to using the right mouse button, and holding the Control key (often written Ctrl) is equivalent to using the middle mouse button. A few tools assign some function to a mouse action with both the Shift and Control keys held down. In this case, you can get the same effect when dragging by depressing both the left and right mouse button. Because of the difficulty of clicking two buttons at once, however, this shortcut does not apply to Shift+Ctrl+Click.
At the present time, the Shift and Control keys do not work properly in Java on Mac OS X. When using a one-button mouse with OS X, you should use the Command key (a.k.a. Open Apple) instead of Shift to get the same effect as the right mouse button, and you should use the Option key (a.k.a. Alt) instead of Control to get the same effect as the middle mouse button. Hopefully this will be fixed in OS X 10.4 / Java 1.5.
Some tools also use the up & down arrow keys on the keyboard; these have the same effect as using the scroll wheel of a wheel mouse. Once again, these may be combined with the Shift and/or Control keys to give access to more functions. Note that the mouse wheel is never active when running in a Java 1.3.x virtual machine; Java 1.4 or later is needed to take advantage of this control.

5.3  Navigate: Exploring in 3-D

The Navigate tool encompasses all the usual modes of interacting with a kinemage. This is the tool that is active when KiNG is launched, and is probably the only tool many people will ever use. See for an introduction to using the Navigate tool to get around a kinemage. There are also a few more advanced modes of movement which are described below.

5.3.1  Z-rotation ("pinwheel")

Clicking and dragging (with the left mouse button) near the top of the graphics area will cause the kinemage to spin around the Z axis like a pinwheel, rather than the more conventional sort of rotation. This is sometimes useful for putting something right side up.

5.3.2  Translation ("flatland")

Holding Control while dragging (or dragging with the middle mouse button) allows one to slide the kinemage around in the plane of the screen. Dragging at the top of the screen, as for z-rotation, slides the kinemage in and out of the plane of the screen. (Note: enabling perspective in the Diplay menu is very helpful when translating in and out of the plane of the screen.) This sort of motion is sometimes called "panning" or "flatland," and can be made the default mode of movement by selecting Tools - Flatland.

5.3.3  Command reference

Mouse clicks
Normal Mark and identify point; make measurement (pick)
With Shift Center on selected point (pickcenter)
With Ctrl -
With Shift+Ctrl -
Mouse drags
Normal Rotate around X and Y axes; Z-rotate (pinwheel) near top of screen
With Shift Adjust zoom (up/down); Adjust clipping (left/right)
With Ctrl Translate in X-Y plane (flatland); Z-translate near top of screen
With Shift+Ctrl Rotate around Y axis only
Mouse wheel / Up & Down arrow keys
Normal Adjust zoom
With Shift Adjust clipping
With Ctrl -
With Shift+Ctrl -

5.4  Draw New: Reworking the kinemage

The Draw New tool provides a variety of simple tools for creating new objects in the kinemage or removing existing ones on a point-by-point basis.
Edit list props
Picking a point opens the editing window for that point's list, where you can set color, width, radius, etc. You will need to activate the Tools - Superpick option to edit unpickable points.
Edit point props
Picking a point opens the editing window for that point, where you can set color, position, point ID, etc. You will need to activate the Tools - Superpick option to edit unpickable points.
Move points
Allows you to click on individual points and drag them around to new positions. Dragging them with the mouse moves them in the plane of the screen. Using the mouse wheel or up & down arrow keys moves them in and out (this is easier to see with Perspective enabled and Stereo on). A kinemage may have several "points" at the same location in 3-D. Under normal conditions, this tool will move them all together, so that lines stay connected and everything behaves just as you would expect. However, you can also use Ctrl+Drag to pick apart overlapped points and separate them from each other. You will need to activate the Tools - Superpick option to move unpickable points.
Draw line segments
Simply draws a line between the first point picked and the second. Every pair of picks forms a new line. Lines can be shortened from their natural length (or lengthened, using negative numbers), which is sometimes useful for making illustrations.
Draw dotted lines
Like drawing ordinary lines, except a string of dots is created instead of a single line. The number of dots is configurable. This can serve as a "template" for constructing more complex dot-dash patterns when used with line drawing and prune.
Draw curved arc
Draws an arc from the second point picked to the third one, with the arc curving toward the first point picked. The user specifies how many degrees out of a circle will be used to create the arc, so small numbers give flat arcs and large numbers give exagerated ones. The arc can also be shortened by a few degrees so it doesn't quite touch its endpoints, and a four-pronged arrowhead can be added.
Draw balls
Places a small ball at each point picked with the mouse.
Draw labels
Creates a label at the picked point, with its text taken from the picked point's ID. The label text can be changed using Edit Properties.
Draw dots
Creates a dot at each point picked with the mouse.
Draw triangles
Draws a triangle for each set of three points picked. Triangles can also be shrunk (values between 0 and 1) or grown (values greater than 1). A value of zero will make an infinitely small triangle; a value of one will give a triangle that just touches the three points.
Prune one point
Removes the single point picked with the mouse. In the case of polylines and triangle strips, it will stop things from being drawn that depend on the removed point. That is, lines drawn to and from the point will be removed, and all triangles involving the point will be removed. Sometimes kinemages have multiple points that overlap in the same spatial location, so it may take multiple clicks to remove all the objects at a particular point in space.
Punch a polyline
Removes all the line segments in a particular polyline (a series of lines drawn head to tail). This is sometimes useful with vectors and triangles; for other things, it behaves like prune.
Auger a region
Removes all points that fall under the giant eraser. The eraser is drawn as a large circle that follows the mouse around the graphics area. Auger operations cannot be undone, so save your file first and click carefully.
Spherical crop
Removes all points that fall more than a specified distance away from the picked point. Only visible points are cropped. Crop operations cannot be undone, so save your file first and click carefully.
New subgroup
Kinemage elements created by each drawing option are placed into their own list, and all of those lists are placed in one subgroup under the "New group" group created by this tool. Creating a new subgroup starts a fresh list for each option above. This is a good way to separate out the different objects you're drawing. New subgroup can't be undone, but it's pretty harmless.
Undo
The Undo button undoes the last drawing action, with a few exceptions (mentioned above). Undo depth is unlimited, subject to memory constraints. Thus, for kinemages that aren't too large you can often undo all the drawing operations you've performed since loading the kinemage.

5.5  Electron Density: Visualizing maps

This plug-in is for viewing electron density maps while exploring kinemages of crystal structures. (If that doesn't mean anything to you, then you probably don't need this plugin.)
Choose Open from the Tools menu in order to open a map file. Supported formats include X-PLOR (ASCII, not binary), O (DSN6 or Brix), and CCP4 (mode 2, the only one in common use).
Each map opens a new control window, which allows adjustment of its extent, color, and level. The segment of map that is visible at any given time is centered in the current view; when the view changes, the portion that is visible will automatically be updated.
Any dynamic segment of map can be captured as part of a static kinemage; just use the Export button to make the currently visible map segment part of the current kinemage. When you've finished with a map, be sure to Discard it to free up the memory it consumed.
If you don't have an electron density map for the structure you're interested in, you can try looking at the Uppsala Electron Density Server (http://fsrv1.bmc.uu.se/eds/). They offer standard maps for many of the structures deposited in the Protein Data Bank.
Maps can't be loaded from the local filesystem when KiNG is running as an applet due to security restrictions. However, you can use the XMAP or OMAP parameter along with the <PARAM> tag to load a (single) map from a URL. For example:
<PARAM name=omap value=http://example.com/electron/density/my-protein.dsn6.gz>
You can also use the EDMAPBASE and EDMAPLIST parameters to allow the user to select and load a map. EDMAPBASE specifies a path to the maps relative to the current document base URL. EDMAPLIST is a space-separated list of filenames that can be loaded from that path. Users can also enter and modify URLs directly, though obviously this isn't very convenient.

5.6  Update KiNG: Upgrading without the hassle

The Update KiNG plugin allows you to quickly and easily update KiNG to the latest version published on the Kinemage website (kinemage.biochem.duke.edu). After you confirm your intentions, KiNG will begin downloading the new version. If the download proceeds too slowly, you can cancel with no changes to KiNG. Once complete, the downloaded version will be unpacked in the same place as your current installed version of KiNG, and the existing version will be overwritten. You can then quit KiNG and restart to take advantage of new features and capabilities.
The Update plugin has been tested on a variety of platforms under a variety of conditions, but there is always a chance that it won't work quite right on your computer. The chance is greater if you created a non-standard custom installation from the JAR files rather than using the pre-packaged platform-specific installer. If KiNG fails to start after the update, you may have to remove it and then download and install a clean copy by hand.
There are certain things the automatic updater can't update, like the bundled binary programs (probe, etc.) or the displayed version number of the Mac application bundle. For this reason, you may want to periodically remove the existing installation completely and reinstall from scratch.

Chapter 6
Configuring KiNG

By choosing Edit - Configure KiNG, one can adjust several aspects of KiNG's behavior and appearance, such as font sizes, stereo settings, and whether or not certain warnings are issued. The configuration dialog also allows for reorganizing the Tools menu to suit your own work habits. Preferrences may be saved to disk, where they are stored in a simple text file named .king_prefs in the user's home directory. There may be some settings accessible only through this file; that is, they cannot be edited from the graphical interface. Nonetheless, pressing Reset to defaults will restore them to their standard values.
Note that due to security restrictions, configurations cannot be saved when KiNG is running as an applet. However, the web page creator may provide a custom configuration file in the same format as the one saved by KiNG the application, thereby altering the default behavior for all visitors to the website. If you create a preferences file named MyKingPrefs.txt and place it in the same directory as king.jar and your HTML file, add something like this to the APPLET tag of your webpage:
<param name="king_prefs" value="MyKingPrefs.txt">

Chapter 7
Launching KiNG

KiNG runs both as a stand-alone application, and as an applet that can be included in web pages. In any case, KiNG requires a Java Virtual Machine (JVM), version 1.5 or higher. You can get Java from http://java.sun.com.

7.1  Running KiNG as an application

How you launch the KiNG application will depend on what operating system (Windows, Mac OS X, Linux, etc.) you're using. With Windows and the Mac, you can usually just double-click on the king.jar file to start KiNG.
On all operating systems, you can type
java -jar king.jar [-merge  -  -single] [file1 file2 ...]
All the files listed on the command line will be merged together into one kinemage, unless the -s flag is included, in which case all the files will be opened as separate kinemages.
As of KiNG 2.16, the files KiNG can read in from the command line include kinemages, PDB, mmCIF, and electron density maps. For the structure files, QuickKin is used to generate quick-browsing ribbon+stick representations of the structures.

7.2  Making KiNG an applet in a web page

KiNG can also be included as a web page applet. The following HTML code is a simple example that uses the <APPLET> tag, which will work with browsers using a recent JVM. Older browsers may need <OBJECT> or <EMBED> tags; more information on this is available from Sun Microsystems, Inc.
<applet code="king/Kinglet.class" archive="king.jar" width=300 height=150>
<param name="kinSource" value="some_file_name.kin">
</applet>
Just put all the jar files, including king.jar, in the same directory as the HTML file. Users who visit the page will see a 300x150 KiNG logo in the web page, along with a floating KiNG window that looks very much like the stand-alone application. However, due to security restrictions imposed by the browser environment, some functions (e.g., saving files) will be disabled.
Note that the code property really must have the value king/Kinglet.class, even though king.jar is not in a sub-directory called king/. This is the most common problem that people have when trying to run KiNG as an applet. If you did place king.jar somewhere else, that path should precede the jar file name in the archive property instead.
If you want to include additional jar files for plugins and tools, you need to list those in the archive field, after king.jar, separated by commas. For example:
<applet code="king/Kinglet.class" archive="king.jar,chiropraxis.jar,extratools.jar" width=300 height=150>
It is possible to run KiNG in two other applet modes to achieve a slightly different effect. First, the large KiNG logo can be replaced with a small one that serves as a launcher button. Thus, loading the main window is defered until the user clicks the button, at which time the main window appears and the kinemage is loaded. Below is sample HTML for this effect. Note the smaller width and height, to account for the small size of the button.
<applet code="king/Kinglet.class" archive="king.jar" width=60 height=21>
<param name="mode" value="launcher">
<param name="kinSource" value="some_file_name.kin">
</applet>
If you would like a custom image for the launcher, specify its URL with the launcherImage parameter. You may need to change the applet width/height to match. If no image is specified, the default one will be used.
Second, the applet can be embedded in the web page (rather than floating in its own window), by placing this line inside the <applet> tags instead:
<param name="mode" value="flat">
One also probably wants to specify a larger width and/or height, possibly as a fraction of the page size (e.g. 95%). Be warned that using KiNG this way may not work well in some browsers; test your pages thoroughly.
Normally, a KiNG applet displays only the kinemage specified in its kinSource parameter. However, you can also use the kinfileBase and kinfileList parameters to allow the user to open and/or append additional kinemages from a pre-specified set. kinfileBase specifies a path to the maps relative to the current document base URL. kinfileList is a space-separated list of filenames that can be loaded from that path. Users can also enter and modify URLs directly, though obviously this isn't very convenient.
The KiNG applet also supports a kinfileSaveHandler parameter, which is the URL of a CGI script that can accept HTTP POST kinemage output. On a properly configured webserver, this allows users of the KiNG applet to save their modified kinemages directly to the server! However, this is definitely a custom programming job on the server side and so is not an option for most "normal" uses of the KiNG applet.
Some Tools and Plugins may define their own <PARAM> tags, which will be described in their documentation.
As of KiNG version 2.16, the KiNG applet can read PDB or CIF files as well as kinemages. In order to supply a PDB or CIF file for KiNG, instead of the kinSource parameter, use pdbSource or pdbFile. This feature uses QuickKin to generate a quick ribbons and stick representation of the input file.

Chapter 8
Additional resources

8.1  Included manuals

In addition to this User's Guide, KiNG may be accompanied by a guide to the kinemage file format. Kinemage files are simple text files, so that anyone can create kinemage illustrations by hand. This is especially important to fields where no automated tools for kinemage creation yet exist.

8.2  Included kinemages

Under the Help menu, KiNG has several built-in kinemages that demonstrate various capabilities of the graphics system. The palette is particularly useful to kinemage authors when they are designing color schemes.

8.3  External documentation

The best resource for learning more about kinemages is the Richardson lab website, http://kinemage.biochem.duke.edu. Many other resources exist; hopefully, they will be documented here in the future.

8.4  Bug reporting and contact info

Ian Davis, the original author of KiNG, has graduated. KiNG is currently being maintained by Vincent Chen, who may be reached via email at mailto:vbc3@duke.edu. Please, do not hesistate to report bugs and problems with KiNG - your input can only improve the program.

Chapter 9
Copyright & acknowledgments

9.1  Copyright

The KiNG program and all its associated original resources and documentation are copyright (C) 2002-2009 by Ian W. Davis & Vincent B. Chen. KiNG makes use of the gnu.regexp library, which is copyright (C) by Wes Biggs, and of icons copyright (C) by Sun Microsystems provided for use with Java programs. It is also capable of using the iText library for generating PDF files, and the JOGL library for OpenGL rendering.

9.2  Licenses

KiNG is free software available under the terms of its own BSD-style license (see ). The source code and new versions can be downloaded from the Richardson lab website, http://kinemage.biochem.duke.edu. The gnu.regexp library is covered by the GNU Lesser General Public License (LGPL). In accordance with that license, the full source of the gnu.regexp library is available from its website at http://www.cacas.org/java/gnu/regexp/. The iText library is dual-licensed under the LGPL and the Mozilla Public License (MPL). iText is available from http://www.lowagie.com/iText/. JOGL is available under a BSD-style license from https://jogl.dev.java.net/. Many of the icons are the property of Sun Microsystems and have their own license; they are available from http://developer.java.sun.com/developer/techDocs/hi/repository/.
All license documents are provided in the downloaded KiNG bundles and are found in the doc/ directory. Additionally, the KiNG license appears in the Appendix (see ).

9.3  Acknowledgments

I owe an enormous debt of gratitude to many, many people for making this program possible. First and foremost, I thank David and Jane Richardson, who are my bosses and mentors, and who developed the kinemage concept, the file format, and most of the features found in KiNG - my contribution was only the Java implementation. Second, I thank Vincent Chen for his ongoing contributions to KiNG; he has developed many useful plugins and has made significant contributions to the core. I am also grateful to the other members of the Richardson lab, who have supported and encouraged me in developing KiNG, providing invaluable insight into how to improve the program. Of course, this work would not have been possible without support from the National Institutes of Health and the Howard Hughes Medical Institute.
KiNG is free software built on free software. I can't hope to acknowledge all the authors of all the software that has been used to create KiNG, but I can mention a few of the most prominent: Sun Microsystems, the creators of the Java language and libraries; the LYX document processor, used for writing the documentation; jEdit, a fantastic programmer's text editor written entirely in Java; and the entire Linux movement, for providing a real alternative to comercial operating systems. I have also taken advantage of a number of excellent free Java libraries, which are described above.

9.4  Revision status

This manual was last updated 29 August 2009 by VBC for KiNG version 2.17.

Appendix A
KiNG License

A.1  What this license applies to

This license applies to everything in this project that is the original work of the copyright holder(s) and contributor(s), including but not limited to the source code, binary executables, artwork, and documentation. This distribution includes certain third-party libraries and resources which are not covered by this license, and which are governed by their own license terms. See documentation for more details.

A.2  The KiNG License

Copyright (C) 2002-2009 Ian W. Davis & Vincent B. Chen. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. 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.
  3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment:
    This product includes software developed in the Richardon lab at Duke University (http://kinemage.biochem.duke.edu).
    Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear.
  4. The name of the copyright holder, the names of the contributors, and the names KiNG, Kinemage, Next Generation, and Mage must not be used to endorse or promote products derived from this software without prior written permission.
  5. Products derived from this software may not be called KiNG, nor may KiNG appear in their name, without prior written permission.
THIS SOFTWARE IS PROVIDED AS IS AND ANY EXPRESSED 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 HOLDERS 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.

A.3  Where this license came from

This license is based on the BSD and Apache licenses. See http://www.opensource.org/ for more details on these and other licenses.


File translated from TEX by TTH, version 3.85.
On 29 Aug 2009, 01:52.
king-2.21.120420/king/resource/king/kins/0000755000000000000000000000000011744310054016265 5ustar rootrootking-2.21.120420/king/resource/king/kins/fallingbear.kin0000644000000000000000000015307411531212640021244 0ustar rootroot@text @kinemage 1 @perspective @1viewid {From above} @1span 142.25809 @1zslab 232.0 @1center 6.7713 -17.9318 6.0692 @1matrix 0.936 0.1143 -0.3328 0.0977 0.8242 0.5578 0.338 -0.5546 0.7603 @2viewid {From below} @2span 84.587166 @2zslab 315.0 @2center -0.5706 -11.1319 6.6866 @2matrix 0.9994 0.0073 0.0326 -0.0055 0.9985 -0.0554 -0.033 0.0552 0.9979 @3viewid {From side} @3span 52.522617 @3zslab 409.0 @3center -3.8229 8.3012 -0.795 @3matrix 0.0501 -0.016 -0.9986 -0.0002 0.9999 -0.016 0.9987 0.001 0.0501 @4viewid {Bear's eye view} @4span 40.500473 @4zslab 571.0 @4center -0.6817 -36.5219 15.5207 @4matrix -0.9991 -0.0425 0.0058 -0.0176 0.5302 0.8477 -0.0391 0.8468 -0.5305 @group {Bear} dominant @subgroup {bearA} @spherelist {bear body} color= brown radius= 6 nohilite {body} 0 -7.4512 -3.0695 @spherelist {bear limbs} color= peachtint radius= 2 nohilite {Lshoulder} brown 4.5 -4.2901 -3.1559 {Rshoulder} brown -4.5 -4.2901 -3.1559 {Larm} 5 -3.7339 -0.1658 {Rarm} -5 -3.7339 -0.1658 {leg} 4 -12.7473 -0.0777 {leg} -4 -12.7473 -0.0777 @spherelist {bear head} color= gray radius= 4 nohilite {head} 0 0.0664 -5.8057 @spherelist {bear ears} color= brown radius= 1.5 nohilite {Lear} 3 3.0565 -6.3619 {Rear} -3 3.0565 -6.3619 @spherelist {bear earrings} color= gold radius= 0.5 {Learing} 3.5 1.8179 -5.379 @spherelist {bear nose} color= brown radius= 1 nohilite {nose} 0 1.4345 -2.0469 @spherelist {bear eyes} color= bluetint radius= 0.5 {eye} 2 2.0321 -3.3286 {eye} -2 2.0321 -3.3286 @group {Parachute} dominant @subgroup {x} @vectorlist {x} color= pink width= 2 {x} P 37.588 10.48 8.794 {x} 34.641 15.321 12.856 {x} 25.712 23.473 19.696 {x} 13.681 28.794 24.161 {x} 0 30.642 25.712 {x} -13.681 28.794 24.161 {x} -25.712 23.473 19.696 {x} -34.641 15.321 12.856 {x} -37.588 10.48 8.794 @vectorlist {x} color= lilac width= 2 {x} P 37.588 10.48 -8.794 {x} 34.641 15.321 -12.856 {x} 25.712 23.473 -19.696 {x} 13.681 28.794 -24.161 {x} 0 30.642 -25.712 {x} -13.681 28.794 -24.161 {x} -25.712 23.473 -19.696 {x} -34.641 15.321 -12.856 {x} -37.588 10.48 -8.794 @trianglelist {x} color= pinktint {x} P 37.588 10.48 8.794 {x} 37.588 12.226 6.14 {x} 34.641 15.321 12.856 {x} 30.642 22.977 11.539 {x} 25.712 23.473 19.696 {x} 20 30.956 15.547 {x} 13.681 28.794 24.161 {x} 6.946 35.202 17.679 {x} 0 30.642 25.712 {x} -6.946 35.202 17.679 {x} -13.681 28.794 24.161 {x} -20 30.956 15.547 {x} -25.712 23.473 19.696 {x} -30.642 22.977 11.539 {x} -34.641 15.321 12.856 {x} -37.588 12.226 6.14 {x} -37.588 10.48 8.794 @trianglelist {x} color= peachtint {x} P 37.588 13.312 3.155 {x} 37.588 12.226 6.14 {x} 34.641 19.461 4.612 {x} 30.642 22.977 11.539 {x} 25.712 29.816 7.067 {x} 20 30.956 15.547 {x} 13.681 36.575 8.668 {x} 6.946 35.202 17.679 {x} 0 38.922 9.225 {x} -6.946 35.202 17.679 {x} -13.681 36.575 8.668 {x} -20 30.956 15.547 {x} -25.712 29.816 7.067 {x} -30.642 22.977 11.539 {x} -34.641 19.461 4.612 {x} -37.588 12.226 6.14 {x} -37.588 13.312 3.155 @trianglelist {x} color= yellowtint {x} P 37.588 13.312 3.155 {x} 37.588 13.681 0 {x} 34.641 19.461 4.612 {x} 30.642 25.712 0 {x} 25.712 29.816 7.067 {x} 20 34.641 0 {x} 13.681 36.575 8.668 {x} 6.946 39.392 0 {x} 0 38.922 9.225 {x} -6.946 39.392 0 {x} -13.681 36.575 8.668 {x} -20 34.641 0 {x} -25.712 29.816 7.067 {x} -30.642 25.712 0 {x} -34.641 19.461 4.612 {x} -37.588 13.681 0 {x} -37.588 13.312 3.155 @trianglelist {x} color= greentint {x} P 37.588 13.312 -3.155 {x} 37.588 13.681 0 {x} 34.641 19.461 -4.612 {x} 30.642 25.712 0 {x} 25.712 29.816 -7.067 {x} 20 34.641 0 {x} 13.681 36.575 -8.668 {x} 6.946 39.392 0 {x} 0 38.922 -9.225 {x} -6.946 39.392 0 {x} -13.681 36.575 -8.668 {x} -20 34.641 0 {x} -25.712 29.816 -7.067 {x} -30.642 25.712 0 {x} -34.641 19.461 -4.612 {x} -37.588 13.681 0 {x} -37.588 13.312 -3.155 @trianglelist {x} color= bluetint {x} P 37.588 13.312 -3.155 {x} 37.588 12.226 -6.14 {x} 34.641 19.461 -4.612 {x} 30.642 22.977 -11.539 {x} 25.712 29.816 -7.067 {x} 20 30.956 -15.547 {x} 13.681 36.575 -8.668 {x} 6.946 35.202 -17.679 {x} 0 38.922 -9.225 {x} -6.946 35.202 -17.679 {x} -13.681 36.575 -8.668 {x} -20 30.956 -15.547 {x} -25.712 29.816 -7.067 {x} -30.642 22.977 -11.539 {x} -34.641 19.461 -4.612 {x} -37.588 12.226 -6.14 {x} -37.588 13.312 -3.155 @trianglelist {x} color= lilactint {x} P 37.588 10.48 -8.794 {x} 37.588 12.226 -6.14 {x} 34.641 15.321 -12.856 {x} 30.642 22.977 -11.539 {x} 25.712 23.473 -19.696 {x} 20 30.956 -15.547 {x} 13.681 28.794 -24.161 {x} 6.946 35.202 -17.679 {x} 0 30.642 -25.712 {x} -6.946 35.202 -17.679 {x} -13.681 28.794 -24.161 {x} -20 30.956 -15.547 {x} -25.712 23.473 -19.696 {x} -30.642 22.977 -11.539 {x} -34.641 15.321 -12.856 {x} -37.588 12.226 -6.14 {x} -37.588 10.48 -8.794 @vectorlist {strings} color= white width= 1 {Rarm} P -5 -4.5 0 {Rarm} -37.588 10.48 -8.794 {Rarm} -37.588 10.48 8.794 {Rarm} -5 -4.5 0 {Larm} P 5 -4.5 0 {Larm} 37.588 10.48 8.794 {Larm} 37.588 10.48 -8.794 {Larm} 5 -4.5 0 @group {Floor} dominant @subgroup {x} dominant @ribbonlist {x} color= red {x} P -56.5685 -50 -0 {x} -53.7401 -50 -2.8284 {x} -53.7401 -50 2.8284 {x} -50.9117 -50 -0 @ribbonlist {x} color= white {x} P -53.7401 -50 2.8284 {x} -50.9117 -50 -0 {x} -50.9117 -50 5.6569 {x} -48.0833 -50 2.8284 @ribbonlist {x} color= red {x} P -50.9117 -50 5.6569 {x} -48.0833 -50 2.8284 {x} -48.0833 -50 8.4853 {x} -45.2548 -50 5.6569 @ribbonlist {x} color= white {x} P -48.0833 -50 8.4853 {x} -45.2548 -50 5.6569 {x} -45.2548 -50 11.3137 {x} -42.4264 -50 8.4853 @ribbonlist {x} color= red {x} P -45.2548 -50 11.3137 {x} -42.4264 -50 8.4853 {x} -42.4264 -50 14.1421 {x} -39.598 -50 11.3137 @ribbonlist {x} color= white {x} P -42.4264 -50 14.1421 {x} -39.598 -50 11.3137 {x} -39.598 -50 16.9706 {x} -36.7696 -50 14.1421 @ribbonlist {x} color= red {x} P -39.598 -50 16.9706 {x} -36.7696 -50 14.1421 {x} -36.7696 -50 19.799 {x} -33.9411 -50 16.9706 @ribbonlist {x} color= white {x} P -36.7696 -50 19.799 {x} -33.9411 -50 16.9706 {x} -33.9411 -50 22.6274 {x} -31.1127 -50 19.799 @ribbonlist {x} color= red {x} P -33.9411 -50 22.6274 {x} -31.1127 -50 19.799 {x} -31.1127 -50 25.4558 {x} -28.2843 -50 22.6274 @ribbonlist {x} color= white {x} P -31.1127 -50 25.4558 {x} -28.2843 -50 22.6274 {x} -28.2843 -50 28.2843 {x} -25.4558 -50 25.4558 @ribbonlist {x} color= red {x} P -28.2843 -50 28.2843 {x} -25.4558 -50 25.4558 {x} -25.4558 -50 31.1127 {x} -22.6274 -50 28.2843 @ribbonlist {x} color= white {x} P -25.4558 -50 31.1127 {x} -22.6274 -50 28.2843 {x} -22.6274 -50 33.9411 {x} -19.799 -50 31.1127 @ribbonlist {x} color= red {x} P -22.6274 -50 33.9411 {x} -19.799 -50 31.1127 {x} -19.799 -50 36.7696 {x} -16.9706 -50 33.9411 @ribbonlist {x} color= white {x} P -19.799 -50 36.7696 {x} -16.9706 -50 33.9411 {x} -16.9706 -50 39.598 {x} -14.1421 -50 36.7696 @ribbonlist {x} color= red {x} P -16.9706 -50 39.598 {x} -14.1421 -50 36.7696 {x} -14.1421 -50 42.4264 {x} -11.3137 -50 39.598 @ribbonlist {x} color= white {x} P -14.1421 -50 42.4264 {x} -11.3137 -50 39.598 {x} -11.3137 -50 45.2548 {x} -8.4853 -50 42.4264 @ribbonlist {x} color= red {x} P -11.3137 -50 45.2548 {x} -8.4853 -50 42.4264 {x} -8.4853 -50 48.0833 {x} -5.6569 -50 45.2548 @ribbonlist {x} color= white {x} P -8.4853 -50 48.0833 {x} -5.6569 -50 45.2548 {x} -5.6569 -50 50.9117 {x} -2.8284 -50 48.0833 @ribbonlist {x} color= red {x} P -5.6569 -50 50.9117 {x} -2.8284 -50 48.0833 {x} -2.8284 -50 53.7401 {x} -0 -50 50.9117 @ribbonlist {x} color= white {x} P -2.8284 -50 53.7401 {x} -0 -50 50.9117 {x} -0 -50 56.5685 {x} 2.8284 -50 53.7401 @ribbonlist {x} color= white {x} P -53.7401 -50 -2.8284 {x} -50.9117 -50 -5.6569 {x} -50.9117 -50 -0 {x} -48.0833 -50 -2.8284 @ribbonlist {x} color= red {x} P -50.9117 -50 -0 {x} -48.0833 -50 -2.8284 {x} -48.0833 -50 2.8284 {x} -45.2548 -50 -0 @ribbonlist {x} color= white {x} P -48.0833 -50 2.8284 {x} -45.2548 -50 -0 {x} -45.2548 -50 5.6569 {x} -42.4264 -50 2.8284 @ribbonlist {x} color= red {x} P -45.2548 -50 5.6569 {x} -42.4264 -50 2.8284 {x} -42.4264 -50 8.4853 {x} -39.598 -50 5.6569 @ribbonlist {x} color= white {x} P -42.4264 -50 8.4853 {x} -39.598 -50 5.6569 {x} -39.598 -50 11.3137 {x} -36.7696 -50 8.4853 @ribbonlist {x} color= red {x} P -39.598 -50 11.3137 {x} -36.7696 -50 8.4853 {x} -36.7696 -50 14.1421 {x} -33.9411 -50 11.3137 @ribbonlist {x} color= white {x} P -36.7696 -50 14.1421 {x} -33.9411 -50 11.3137 {x} -33.9411 -50 16.9706 {x} -31.1127 -50 14.1421 @ribbonlist {x} color= red {x} P -33.9411 -50 16.9706 {x} -31.1127 -50 14.1421 {x} -31.1127 -50 19.799 {x} -28.2843 -50 16.9706 @ribbonlist {x} color= white {x} P -31.1127 -50 19.799 {x} -28.2843 -50 16.9706 {x} -28.2843 -50 22.6274 {x} -25.4558 -50 19.799 @ribbonlist {x} color= red {x} P -28.2843 -50 22.6274 {x} -25.4558 -50 19.799 {x} -25.4558 -50 25.4558 {x} -22.6274 -50 22.6274 @ribbonlist {x} color= white {x} P -25.4558 -50 25.4558 {x} -22.6274 -50 22.6274 {x} -22.6274 -50 28.2843 {x} -19.799 -50 25.4558 @ribbonlist {x} color= red {x} P -22.6274 -50 28.2843 {x} -19.799 -50 25.4558 {x} -19.799 -50 31.1127 {x} -16.9706 -50 28.2843 @ribbonlist {x} color= white {x} P -19.799 -50 31.1127 {x} -16.9706 -50 28.2843 {x} -16.9706 -50 33.9411 {x} -14.1421 -50 31.1127 @ribbonlist {x} color= red {x} P -16.9706 -50 33.9411 {x} -14.1421 -50 31.1127 {x} -14.1421 -50 36.7696 {x} -11.3137 -50 33.9411 @ribbonlist {x} color= white {x} P -14.1421 -50 36.7696 {x} -11.3137 -50 33.9411 {x} -11.3137 -50 39.598 {x} -8.4853 -50 36.7696 @ribbonlist {x} color= red {x} P -11.3137 -50 39.598 {x} -8.4853 -50 36.7696 {x} -8.4853 -50 42.4264 {x} -5.6569 -50 39.598 @ribbonlist {x} color= white {x} P -8.4853 -50 42.4264 {x} -5.6569 -50 39.598 {x} -5.6569 -50 45.2548 {x} -2.8284 -50 42.4264 @ribbonlist {x} color= red {x} P -5.6569 -50 45.2548 {x} -2.8284 -50 42.4264 {x} -2.8284 -50 48.0833 {x} -0 -50 45.2548 @ribbonlist {x} color= white {x} P -2.8284 -50 48.0833 {x} -0 -50 45.2548 {x} -0 -50 50.9117 {x} 2.8284 -50 48.0833 @ribbonlist {x} color= red {x} P -0 -50 50.9117 {x} 2.8284 -50 48.0833 {x} 2.8284 -50 53.7401 {x} 5.6569 -50 50.9117 @ribbonlist {x} color= red {x} P -50.9117 -50 -5.6569 {x} -48.0833 -50 -8.4853 {x} -48.0833 -50 -2.8284 {x} -45.2548 -50 -5.6569 @ribbonlist {x} color= white {x} P -48.0833 -50 -2.8284 {x} -45.2548 -50 -5.6569 {x} -45.2548 -50 -0 {x} -42.4264 -50 -2.8284 @ribbonlist {x} color= red {x} P -45.2548 -50 -0 {x} -42.4264 -50 -2.8284 {x} -42.4264 -50 2.8284 {x} -39.598 -50 -0 @ribbonlist {x} color= white {x} P -42.4264 -50 2.8284 {x} -39.598 -50 -0 {x} -39.598 -50 5.6569 {x} -36.7696 -50 2.8284 @ribbonlist {x} color= red {x} P -39.598 -50 5.6569 {x} -36.7696 -50 2.8284 {x} -36.7696 -50 8.4853 {x} -33.9411 -50 5.6569 @ribbonlist {x} color= white {x} P -36.7696 -50 8.4853 {x} -33.9411 -50 5.6569 {x} -33.9411 -50 11.3137 {x} -31.1127 -50 8.4853 @ribbonlist {x} color= red {x} P -33.9411 -50 11.3137 {x} -31.1127 -50 8.4853 {x} -31.1127 -50 14.1421 {x} -28.2843 -50 11.3137 @ribbonlist {x} color= white {x} P -31.1127 -50 14.1421 {x} -28.2843 -50 11.3137 {x} -28.2843 -50 16.9706 {x} -25.4558 -50 14.1421 @ribbonlist {x} color= red {x} P -28.2843 -50 16.9706 {x} -25.4558 -50 14.1421 {x} -25.4558 -50 19.799 {x} -22.6274 -50 16.9706 @ribbonlist {x} color= white {x} P -25.4558 -50 19.799 {x} -22.6274 -50 16.9706 {x} -22.6274 -50 22.6274 {x} -19.799 -50 19.799 @ribbonlist {x} color= red {x} P -22.6274 -50 22.6274 {x} -19.799 -50 19.799 {x} -19.799 -50 25.4558 {x} -16.9706 -50 22.6274 @ribbonlist {x} color= white {x} P -19.799 -50 25.4558 {x} -16.9706 -50 22.6274 {x} -16.9706 -50 28.2843 {x} -14.1421 -50 25.4558 @ribbonlist {x} color= red {x} P -16.9706 -50 28.2843 {x} -14.1421 -50 25.4558 {x} -14.1421 -50 31.1127 {x} -11.3137 -50 28.2843 @ribbonlist {x} color= white {x} P -14.1421 -50 31.1127 {x} -11.3137 -50 28.2843 {x} -11.3137 -50 33.9411 {x} -8.4853 -50 31.1127 @ribbonlist {x} color= red {x} P -11.3137 -50 33.9411 {x} -8.4853 -50 31.1127 {x} -8.4853 -50 36.7696 {x} -5.6569 -50 33.9411 @ribbonlist {x} color= white {x} P -8.4853 -50 36.7696 {x} -5.6569 -50 33.9411 {x} -5.6569 -50 39.598 {x} -2.8284 -50 36.7696 @ribbonlist {x} color= red {x} P -5.6569 -50 39.598 {x} -2.8284 -50 36.7696 {x} -2.8284 -50 42.4264 {x} -0 -50 39.598 @ribbonlist {x} color= white {x} P -2.8284 -50 42.4264 {x} -0 -50 39.598 {x} -0 -50 45.2548 {x} 2.8284 -50 42.4264 @ribbonlist {x} color= red {x} P -0 -50 45.2548 {x} 2.8284 -50 42.4264 {x} 2.8284 -50 48.0833 {x} 5.6569 -50 45.2548 @ribbonlist {x} color= white {x} P 2.8284 -50 48.0833 {x} 5.6569 -50 45.2548 {x} 5.6569 -50 50.9117 {x} 8.4853 -50 48.0833 @ribbonlist {x} color= white {x} P -48.0833 -50 -8.4853 {x} -45.2548 -50 -11.3137 {x} -45.2548 -50 -5.6569 {x} -42.4264 -50 -8.4853 @ribbonlist {x} color= red {x} P -45.2548 -50 -5.6569 {x} -42.4264 -50 -8.4853 {x} -42.4264 -50 -2.8284 {x} -39.598 -50 -5.6569 @ribbonlist {x} color= white {x} P -42.4264 -50 -2.8284 {x} -39.598 -50 -5.6569 {x} -39.598 -50 -0 {x} -36.7696 -50 -2.8284 @ribbonlist {x} color= red {x} P -39.598 -50 -0 {x} -36.7696 -50 -2.8284 {x} -36.7696 -50 2.8284 {x} -33.9411 -50 -0 @ribbonlist {x} color= white {x} P -36.7696 -50 2.8284 {x} -33.9411 -50 -0 {x} -33.9411 -50 5.6569 {x} -31.1127 -50 2.8284 @ribbonlist {x} color= red {x} P -33.9411 -50 5.6569 {x} -31.1127 -50 2.8284 {x} -31.1127 -50 8.4853 {x} -28.2843 -50 5.6569 @ribbonlist {x} color= white {x} P -31.1127 -50 8.4853 {x} -28.2843 -50 5.6569 {x} -28.2843 -50 11.3137 {x} -25.4558 -50 8.4853 @ribbonlist {x} color= red {x} P -28.2843 -50 11.3137 {x} -25.4558 -50 8.4853 {x} -25.4558 -50 14.1421 {x} -22.6274 -50 11.3137 @ribbonlist {x} color= white {x} P -25.4558 -50 14.1421 {x} -22.6274 -50 11.3137 {x} -22.6274 -50 16.9706 {x} -19.799 -50 14.1421 @ribbonlist {x} color= red {x} P -22.6274 -50 16.9706 {x} -19.799 -50 14.1421 {x} -19.799 -50 19.799 {x} -16.9706 -50 16.9706 @ribbonlist {x} color= white {x} P -19.799 -50 19.799 {x} -16.9706 -50 16.9706 {x} -16.9706 -50 22.6274 {x} -14.1421 -50 19.799 @ribbonlist {x} color= red {x} P -16.9706 -50 22.6274 {x} -14.1421 -50 19.799 {x} -14.1421 -50 25.4558 {x} -11.3137 -50 22.6274 @ribbonlist {x} color= white {x} P -14.1421 -50 25.4558 {x} -11.3137 -50 22.6274 {x} -11.3137 -50 28.2843 {x} -8.4853 -50 25.4558 @ribbonlist {x} color= red {x} P -11.3137 -50 28.2843 {x} -8.4853 -50 25.4558 {x} -8.4853 -50 31.1127 {x} -5.6569 -50 28.2843 @ribbonlist {x} color= white {x} P -8.4853 -50 31.1127 {x} -5.6569 -50 28.2843 {x} -5.6569 -50 33.9411 {x} -2.8284 -50 31.1127 @ribbonlist {x} color= red {x} P -5.6569 -50 33.9411 {x} -2.8284 -50 31.1127 {x} -2.8284 -50 36.7696 {x} -0 -50 33.9411 @ribbonlist {x} color= white {x} P -2.8284 -50 36.7696 {x} -0 -50 33.9411 {x} -0 -50 39.598 {x} 2.8284 -50 36.7696 @ribbonlist {x} color= red {x} P -0 -50 39.598 {x} 2.8284 -50 36.7696 {x} 2.8284 -50 42.4264 {x} 5.6569 -50 39.598 @ribbonlist {x} color= white {x} P 2.8284 -50 42.4264 {x} 5.6569 -50 39.598 {x} 5.6569 -50 45.2548 {x} 8.4853 -50 42.4264 @ribbonlist {x} color= red {x} P 5.6569 -50 45.2548 {x} 8.4853 -50 42.4264 {x} 8.4853 -50 48.0833 {x} 11.3137 -50 45.2548 @ribbonlist {x} color= red {x} P -45.2548 -50 -11.3137 {x} -42.4264 -50 -14.1421 {x} -42.4264 -50 -8.4853 {x} -39.598 -50 -11.3137 @ribbonlist {x} color= white {x} P -42.4264 -50 -8.4853 {x} -39.598 -50 -11.3137 {x} -39.598 -50 -5.6569 {x} -36.7696 -50 -8.4853 @ribbonlist {x} color= red {x} P -39.598 -50 -5.6569 {x} -36.7696 -50 -8.4853 {x} -36.7696 -50 -2.8284 {x} -33.9411 -50 -5.6569 @ribbonlist {x} color= white {x} P -36.7696 -50 -2.8284 {x} -33.9411 -50 -5.6569 {x} -33.9411 -50 -0 {x} -31.1127 -50 -2.8284 @ribbonlist {x} color= red {x} P -33.9411 -50 -0 {x} -31.1127 -50 -2.8284 {x} -31.1127 -50 2.8284 {x} -28.2843 -50 -0 @ribbonlist {x} color= white {x} P -31.1127 -50 2.8284 {x} -28.2843 -50 -0 {x} -28.2843 -50 5.6569 {x} -25.4558 -50 2.8284 @ribbonlist {x} color= red {x} P -28.2843 -50 5.6569 {x} -25.4558 -50 2.8284 {x} -25.4558 -50 8.4853 {x} -22.6274 -50 5.6569 @ribbonlist {x} color= white {x} P -25.4558 -50 8.4853 {x} -22.6274 -50 5.6569 {x} -22.6274 -50 11.3137 {x} -19.799 -50 8.4853 @ribbonlist {x} color= red {x} P -22.6274 -50 11.3137 {x} -19.799 -50 8.4853 {x} -19.799 -50 14.1421 {x} -16.9706 -50 11.3137 @ribbonlist {x} color= white {x} P -19.799 -50 14.1421 {x} -16.9706 -50 11.3137 {x} -16.9706 -50 16.9706 {x} -14.1421 -50 14.1421 @ribbonlist {x} color= red {x} P -16.9706 -50 16.9706 {x} -14.1421 -50 14.1421 {x} -14.1421 -50 19.799 {x} -11.3137 -50 16.9706 @ribbonlist {x} color= white {x} P -14.1421 -50 19.799 {x} -11.3137 -50 16.9706 {x} -11.3137 -50 22.6274 {x} -8.4853 -50 19.799 @ribbonlist {x} color= red {x} P -11.3137 -50 22.6274 {x} -8.4853 -50 19.799 {x} -8.4853 -50 25.4558 {x} -5.6569 -50 22.6274 @ribbonlist {x} color= white {x} P -8.4853 -50 25.4558 {x} -5.6569 -50 22.6274 {x} -5.6569 -50 28.2843 {x} -2.8284 -50 25.4558 @ribbonlist {x} color= red {x} P -5.6569 -50 28.2843 {x} -2.8284 -50 25.4558 {x} -2.8284 -50 31.1127 {x} -0 -50 28.2843 @ribbonlist {x} color= white {x} P -2.8284 -50 31.1127 {x} -0 -50 28.2843 {x} -0 -50 33.9411 {x} 2.8284 -50 31.1127 @ribbonlist {x} color= red {x} P -0 -50 33.9411 {x} 2.8284 -50 31.1127 {x} 2.8284 -50 36.7696 {x} 5.6569 -50 33.9411 @ribbonlist {x} color= white {x} P 2.8284 -50 36.7696 {x} 5.6569 -50 33.9411 {x} 5.6569 -50 39.598 {x} 8.4853 -50 36.7696 @ribbonlist {x} color= red {x} P 5.6569 -50 39.598 {x} 8.4853 -50 36.7696 {x} 8.4853 -50 42.4264 {x} 11.3137 -50 39.598 @ribbonlist {x} color= white {x} P 8.4853 -50 42.4264 {x} 11.3137 -50 39.598 {x} 11.3137 -50 45.2548 {x} 14.1421 -50 42.4264 @ribbonlist {x} color= white {x} P -42.4264 -50 -14.1421 {x} -39.598 -50 -16.9706 {x} -39.598 -50 -11.3137 {x} -36.7696 -50 -14.1421 @ribbonlist {x} color= red {x} P -39.598 -50 -11.3137 {x} -36.7696 -50 -14.1421 {x} -36.7696 -50 -8.4853 {x} -33.9411 -50 -11.3137 @ribbonlist {x} color= white {x} P -36.7696 -50 -8.4853 {x} -33.9411 -50 -11.3137 {x} -33.9411 -50 -5.6569 {x} -31.1127 -50 -8.4853 @ribbonlist {x} color= red {x} P -33.9411 -50 -5.6569 {x} -31.1127 -50 -8.4853 {x} -31.1127 -50 -2.8284 {x} -28.2843 -50 -5.6569 @ribbonlist {x} color= white {x} P -31.1127 -50 -2.8284 {x} -28.2843 -50 -5.6569 {x} -28.2843 -50 -0 {x} -25.4558 -50 -2.8284 @ribbonlist {x} color= red {x} P -28.2843 -50 -0 {x} -25.4558 -50 -2.8284 {x} -25.4558 -50 2.8284 {x} -22.6274 -50 -0 @ribbonlist {x} color= white {x} P -25.4558 -50 2.8284 {x} -22.6274 -50 -0 {x} -22.6274 -50 5.6569 {x} -19.799 -50 2.8284 @ribbonlist {x} color= red {x} P -22.6274 -50 5.6569 {x} -19.799 -50 2.8284 {x} -19.799 -50 8.4853 {x} -16.9706 -50 5.6569 @ribbonlist {x} color= white {x} P -19.799 -50 8.4853 {x} -16.9706 -50 5.6569 {x} -16.9706 -50 11.3137 {x} -14.1421 -50 8.4853 @ribbonlist {x} color= red {x} P -16.9706 -50 11.3137 {x} -14.1421 -50 8.4853 {x} -14.1421 -50 14.1421 {x} -11.3137 -50 11.3137 @ribbonlist {x} color= white {x} P -14.1421 -50 14.1421 {x} -11.3137 -50 11.3137 {x} -11.3137 -50 16.9706 {x} -8.4853 -50 14.1421 @ribbonlist {x} color= red {x} P -11.3137 -50 16.9706 {x} -8.4853 -50 14.1421 {x} -8.4853 -50 19.799 {x} -5.6569 -50 16.9706 @ribbonlist {x} color= white {x} P -8.4853 -50 19.799 {x} -5.6569 -50 16.9706 {x} -5.6569 -50 22.6274 {x} -2.8284 -50 19.799 @ribbonlist {x} color= red {x} P -5.6569 -50 22.6274 {x} -2.8284 -50 19.799 {x} -2.8284 -50 25.4558 {x} -0 -50 22.6274 @ribbonlist {x} color= white {x} P -2.8284 -50 25.4558 {x} -0 -50 22.6274 {x} -0 -50 28.2843 {x} 2.8284 -50 25.4558 @ribbonlist {x} color= red {x} P -0 -50 28.2843 {x} 2.8284 -50 25.4558 {x} 2.8284 -50 31.1127 {x} 5.6569 -50 28.2843 @ribbonlist {x} color= white {x} P 2.8284 -50 31.1127 {x} 5.6569 -50 28.2843 {x} 5.6569 -50 33.9411 {x} 8.4853 -50 31.1127 @ribbonlist {x} color= red {x} P 5.6569 -50 33.9411 {x} 8.4853 -50 31.1127 {x} 8.4853 -50 36.7696 {x} 11.3137 -50 33.9411 @ribbonlist {x} color= white {x} P 8.4853 -50 36.7696 {x} 11.3137 -50 33.9411 {x} 11.3137 -50 39.598 {x} 14.1421 -50 36.7696 @ribbonlist {x} color= red {x} P 11.3137 -50 39.598 {x} 14.1421 -50 36.7696 {x} 14.1421 -50 42.4264 {x} 16.9706 -50 39.598 @ribbonlist {x} color= red {x} P -39.598 -50 -16.9706 {x} -36.7696 -50 -19.799 {x} -36.7696 -50 -14.1421 {x} -33.9411 -50 -16.9706 @ribbonlist {x} color= white {x} P -36.7696 -50 -14.1421 {x} -33.9411 -50 -16.9706 {x} -33.9411 -50 -11.3137 {x} -31.1127 -50 -14.1421 @ribbonlist {x} color= red {x} P -33.9411 -50 -11.3137 {x} -31.1127 -50 -14.1421 {x} -31.1127 -50 -8.4853 {x} -28.2843 -50 -11.3137 @ribbonlist {x} color= white {x} P -31.1127 -50 -8.4853 {x} -28.2843 -50 -11.3137 {x} -28.2843 -50 -5.6569 {x} -25.4558 -50 -8.4853 @ribbonlist {x} color= red {x} P -28.2843 -50 -5.6569 {x} -25.4558 -50 -8.4853 {x} -25.4558 -50 -2.8284 {x} -22.6274 -50 -5.6569 @ribbonlist {x} color= white {x} P -25.4558 -50 -2.8284 {x} -22.6274 -50 -5.6569 {x} -22.6274 -50 -0 {x} -19.799 -50 -2.8284 @ribbonlist {x} color= red {x} P -22.6274 -50 -0 {x} -19.799 -50 -2.8284 {x} -19.799 -50 2.8284 {x} -16.9706 -50 -0 @ribbonlist {x} color= white {x} P -19.799 -50 2.8284 {x} -16.9706 -50 -0 {x} -16.9706 -50 5.6569 {x} -14.1421 -50 2.8284 @ribbonlist {x} color= red {x} P -16.9706 -50 5.6569 {x} -14.1421 -50 2.8284 {x} -14.1421 -50 8.4853 {x} -11.3137 -50 5.6569 @ribbonlist {x} color= white {x} P -14.1421 -50 8.4853 {x} -11.3137 -50 5.6569 {x} -11.3137 -50 11.3137 {x} -8.4853 -50 8.4853 @ribbonlist {x} color= red {x} P -11.3137 -50 11.3137 {x} -8.4853 -50 8.4853 {x} -8.4853 -50 14.1421 {x} -5.6569 -50 11.3137 @ribbonlist {x} color= white {x} P -8.4853 -50 14.1421 {x} -5.6569 -50 11.3137 {x} -5.6569 -50 16.9706 {x} -2.8284 -50 14.1421 @ribbonlist {x} color= red {x} P -5.6569 -50 16.9706 {x} -2.8284 -50 14.1421 {x} -2.8284 -50 19.799 {x} -0 -50 16.9706 @ribbonlist {x} color= white {x} P -2.8284 -50 19.799 {x} -0 -50 16.9706 {x} -0 -50 22.6274 {x} 2.8284 -50 19.799 @ribbonlist {x} color= red {x} P -0 -50 22.6274 {x} 2.8284 -50 19.799 {x} 2.8284 -50 25.4558 {x} 5.6569 -50 22.6274 @ribbonlist {x} color= white {x} P 2.8284 -50 25.4558 {x} 5.6569 -50 22.6274 {x} 5.6569 -50 28.2843 {x} 8.4853 -50 25.4558 @ribbonlist {x} color= red {x} P 5.6569 -50 28.2843 {x} 8.4853 -50 25.4558 {x} 8.4853 -50 31.1127 {x} 11.3137 -50 28.2843 @ribbonlist {x} color= white {x} P 8.4853 -50 31.1127 {x} 11.3137 -50 28.2843 {x} 11.3137 -50 33.9411 {x} 14.1421 -50 31.1127 @ribbonlist {x} color= red {x} P 11.3137 -50 33.9411 {x} 14.1421 -50 31.1127 {x} 14.1421 -50 36.7696 {x} 16.9706 -50 33.9411 @ribbonlist {x} color= white {x} P 14.1421 -50 36.7696 {x} 16.9706 -50 33.9411 {x} 16.9706 -50 39.598 {x} 19.799 -50 36.7696 @ribbonlist {x} color= white {x} P -36.7696 -50 -19.799 {x} -33.9411 -50 -22.6274 {x} -33.9411 -50 -16.9706 {x} -31.1127 -50 -19.799 @ribbonlist {x} color= red {x} P -33.9411 -50 -16.9706 {x} -31.1127 -50 -19.799 {x} -31.1127 -50 -14.1421 {x} -28.2843 -50 -16.9706 @ribbonlist {x} color= white {x} P -31.1127 -50 -14.1421 {x} -28.2843 -50 -16.9706 {x} -28.2843 -50 -11.3137 {x} -25.4558 -50 -14.1421 @ribbonlist {x} color= red {x} P -28.2843 -50 -11.3137 {x} -25.4558 -50 -14.1421 {x} -25.4558 -50 -8.4853 {x} -22.6274 -50 -11.3137 @ribbonlist {x} color= white {x} P -25.4558 -50 -8.4853 {x} -22.6274 -50 -11.3137 {x} -22.6274 -50 -5.6569 {x} -19.799 -50 -8.4853 @ribbonlist {x} color= red {x} P -22.6274 -50 -5.6569 {x} -19.799 -50 -8.4853 {x} -19.799 -50 -2.8284 {x} -16.9706 -50 -5.6569 @ribbonlist {x} color= white {x} P -19.799 -50 -2.8284 {x} -16.9706 -50 -5.6569 {x} -16.9706 -50 -0 {x} -14.1421 -50 -2.8284 @ribbonlist {x} color= red {x} P -16.9706 -50 -0 {x} -14.1421 -50 -2.8284 {x} -14.1421 -50 2.8284 {x} -11.3137 -50 -0 @ribbonlist {x} color= white {x} P -14.1421 -50 2.8284 {x} -11.3137 -50 -0 {x} -11.3137 -50 5.6569 {x} -8.4853 -50 2.8284 @ribbonlist {x} color= red {x} P -11.3137 -50 5.6569 {x} -8.4853 -50 2.8284 {x} -8.4853 -50 8.4853 {x} -5.6569 -50 5.6569 @ribbonlist {x} color= white {x} P -8.4853 -50 8.4853 {x} -5.6569 -50 5.6569 {x} -5.6569 -50 11.3137 {x} -2.8284 -50 8.4853 @ribbonlist {x} color= red {x} P -5.6569 -50 11.3137 {x} -2.8284 -50 8.4853 {x} -2.8284 -50 14.1421 {x} -0 -50 11.3137 @ribbonlist {x} color= white {x} P -2.8284 -50 14.1421 {x} -0 -50 11.3137 {x} -0 -50 16.9706 {x} 2.8284 -50 14.1421 @ribbonlist {x} color= red {x} P -0 -50 16.9706 {x} 2.8284 -50 14.1421 {x} 2.8284 -50 19.799 {x} 5.6569 -50 16.9706 @ribbonlist {x} color= white {x} P 2.8284 -50 19.799 {x} 5.6569 -50 16.9706 {x} 5.6569 -50 22.6274 {x} 8.4853 -50 19.799 @ribbonlist {x} color= red {x} P 5.6569 -50 22.6274 {x} 8.4853 -50 19.799 {x} 8.4853 -50 25.4558 {x} 11.3137 -50 22.6274 @ribbonlist {x} color= white {x} P 8.4853 -50 25.4558 {x} 11.3137 -50 22.6274 {x} 11.3137 -50 28.2843 {x} 14.1421 -50 25.4558 @ribbonlist {x} color= red {x} P 11.3137 -50 28.2843 {x} 14.1421 -50 25.4558 {x} 14.1421 -50 31.1127 {x} 16.9706 -50 28.2843 @ribbonlist {x} color= white {x} P 14.1421 -50 31.1127 {x} 16.9706 -50 28.2843 {x} 16.9706 -50 33.9411 {x} 19.799 -50 31.1127 @ribbonlist {x} color= red {x} P 16.9706 -50 33.9411 {x} 19.799 -50 31.1127 {x} 19.799 -50 36.7696 {x} 22.6274 -50 33.9411 @ribbonlist {x} color= red {x} P -33.9411 -50 -22.6274 {x} -31.1127 -50 -25.4558 {x} -31.1127 -50 -19.799 {x} -28.2843 -50 -22.6274 @ribbonlist {x} color= white {x} P -31.1127 -50 -19.799 {x} -28.2843 -50 -22.6274 {x} -28.2843 -50 -16.9706 {x} -25.4558 -50 -19.799 @ribbonlist {x} color= red {x} P -28.2843 -50 -16.9706 {x} -25.4558 -50 -19.799 {x} -25.4558 -50 -14.1421 {x} -22.6274 -50 -16.9706 @ribbonlist {x} color= white {x} P -25.4558 -50 -14.1421 {x} -22.6274 -50 -16.9706 {x} -22.6274 -50 -11.3137 {x} -19.799 -50 -14.1421 @ribbonlist {x} color= red {x} P -22.6274 -50 -11.3137 {x} -19.799 -50 -14.1421 {x} -19.799 -50 -8.4853 {x} -16.9706 -50 -11.3137 @ribbonlist {x} color= white {x} P -19.799 -50 -8.4853 {x} -16.9706 -50 -11.3137 {x} -16.9706 -50 -5.6569 {x} -14.1421 -50 -8.4853 @ribbonlist {x} color= red {x} P -16.9706 -50 -5.6569 {x} -14.1421 -50 -8.4853 {x} -14.1421 -50 -2.8284 {x} -11.3137 -50 -5.6569 @ribbonlist {x} color= white {x} P -14.1421 -50 -2.8284 {x} -11.3137 -50 -5.6569 {x} -11.3137 -50 -0 {x} -8.4853 -50 -2.8284 @ribbonlist {x} color= red {x} P -11.3137 -50 -0 {x} -8.4853 -50 -2.8284 {x} -8.4853 -50 2.8284 {x} -5.6569 -50 -0 @ribbonlist {x} color= white {x} P -8.4853 -50 2.8284 {x} -5.6569 -50 -0 {x} -5.6569 -50 5.6569 {x} -2.8284 -50 2.8284 @ribbonlist {x} color= red {x} P -5.6569 -50 5.6569 {x} -2.8284 -50 2.8284 {x} -2.8284 -50 8.4853 {x} -0 -50 5.6569 @ribbonlist {x} color= white {x} P -2.8284 -50 8.4853 {x} -0 -50 5.6569 {x} -0 -50 11.3137 {x} 2.8284 -50 8.4853 @ribbonlist {x} color= red {x} P -0 -50 11.3137 {x} 2.8284 -50 8.4853 {x} 2.8284 -50 14.1421 {x} 5.6569 -50 11.3137 @ribbonlist {x} color= white {x} P 2.8284 -50 14.1421 {x} 5.6569 -50 11.3137 {x} 5.6569 -50 16.9706 {x} 8.4853 -50 14.1421 @ribbonlist {x} color= red {x} P 5.6569 -50 16.9706 {x} 8.4853 -50 14.1421 {x} 8.4853 -50 19.799 {x} 11.3137 -50 16.9706 @ribbonlist {x} color= white {x} P 8.4853 -50 19.799 {x} 11.3137 -50 16.9706 {x} 11.3137 -50 22.6274 {x} 14.1421 -50 19.799 @ribbonlist {x} color= red {x} P 11.3137 -50 22.6274 {x} 14.1421 -50 19.799 {x} 14.1421 -50 25.4558 {x} 16.9706 -50 22.6274 @ribbonlist {x} color= white {x} P 14.1421 -50 25.4558 {x} 16.9706 -50 22.6274 {x} 16.9706 -50 28.2843 {x} 19.799 -50 25.4558 @ribbonlist {x} color= red {x} P 16.9706 -50 28.2843 {x} 19.799 -50 25.4558 {x} 19.799 -50 31.1127 {x} 22.6274 -50 28.2843 @ribbonlist {x} color= white {x} P 19.799 -50 31.1127 {x} 22.6274 -50 28.2843 {x} 22.6274 -50 33.9411 {x} 25.4558 -50 31.1127 @ribbonlist {x} color= white {x} P -31.1127 -50 -25.4558 {x} -28.2843 -50 -28.2843 {x} -28.2843 -50 -22.6274 {x} -25.4558 -50 -25.4558 @ribbonlist {x} color= red {x} P -28.2843 -50 -22.6274 {x} -25.4558 -50 -25.4558 {x} -25.4558 -50 -19.799 {x} -22.6274 -50 -22.6274 @ribbonlist {x} color= white {x} P -25.4558 -50 -19.799 {x} -22.6274 -50 -22.6274 {x} -22.6274 -50 -16.9706 {x} -19.799 -50 -19.799 @ribbonlist {x} color= red {x} P -22.6274 -50 -16.9706 {x} -19.799 -50 -19.799 {x} -19.799 -50 -14.1421 {x} -16.9706 -50 -16.9706 @ribbonlist {x} color= white {x} P -19.799 -50 -14.1421 {x} -16.9706 -50 -16.9706 {x} -16.9706 -50 -11.3137 {x} -14.1421 -50 -14.1421 @ribbonlist {x} color= red {x} P -16.9706 -50 -11.3137 {x} -14.1421 -50 -14.1421 {x} -14.1421 -50 -8.4853 {x} -11.3137 -50 -11.3137 @ribbonlist {x} color= white {x} P -14.1421 -50 -8.4853 {x} -11.3137 -50 -11.3137 {x} -11.3137 -50 -5.6569 {x} -8.4853 -50 -8.4853 @ribbonlist {x} color= red {x} P -11.3137 -50 -5.6569 {x} -8.4853 -50 -8.4853 {x} -8.4853 -50 -2.8284 {x} -5.6569 -50 -5.6569 @ribbonlist {x} color= white {x} P -8.4853 -50 -2.8284 {x} -5.6569 -50 -5.6569 {x} -5.6569 -50 -0 {x} -2.8284 -50 -2.8284 @ribbonlist {x} color= red {x} P -5.6569 -50 -0 {x} -2.8284 -50 -2.8284 {x} -2.8284 -50 2.8284 {x} 0 -50 0 @ribbonlist {x} color= white {x} P -2.8284 -50 2.8284 {x} 0 -50 0 {x} -0 -50 5.6569 {x} 2.8284 -50 2.8284 @ribbonlist {x} color= red {x} P -0 -50 5.6569 {x} 2.8284 -50 2.8284 {x} 2.8284 -50 8.4853 {x} 5.6569 -50 5.6569 @ribbonlist {x} color= white {x} P 2.8284 -50 8.4853 {x} 5.6569 -50 5.6569 {x} 5.6569 -50 11.3137 {x} 8.4853 -50 8.4853 @ribbonlist {x} color= red {x} P 5.6569 -50 11.3137 {x} 8.4853 -50 8.4853 {x} 8.4853 -50 14.1421 {x} 11.3137 -50 11.3137 @ribbonlist {x} color= white {x} P 8.4853 -50 14.1421 {x} 11.3137 -50 11.3137 {x} 11.3137 -50 16.9706 {x} 14.1421 -50 14.1421 @ribbonlist {x} color= red {x} P 11.3137 -50 16.9706 {x} 14.1421 -50 14.1421 {x} 14.1421 -50 19.799 {x} 16.9706 -50 16.9706 @ribbonlist {x} color= white {x} P 14.1421 -50 19.799 {x} 16.9706 -50 16.9706 {x} 16.9706 -50 22.6274 {x} 19.799 -50 19.799 @ribbonlist {x} color= red {x} P 16.9706 -50 22.6274 {x} 19.799 -50 19.799 {x} 19.799 -50 25.4558 {x} 22.6274 -50 22.6274 @ribbonlist {x} color= white {x} P 19.799 -50 25.4558 {x} 22.6274 -50 22.6274 {x} 22.6274 -50 28.2843 {x} 25.4558 -50 25.4558 @ribbonlist {x} color= red {x} P 22.6274 -50 28.2843 {x} 25.4558 -50 25.4558 {x} 25.4558 -50 31.1127 {x} 28.2843 -50 28.2843 @ribbonlist {x} color= red {x} P -28.2843 -50 -28.2843 {x} -25.4558 -50 -31.1127 {x} -25.4558 -50 -25.4558 {x} -22.6274 -50 -28.2843 @ribbonlist {x} color= white {x} P -25.4558 -50 -25.4558 {x} -22.6274 -50 -28.2843 {x} -22.6274 -50 -22.6274 {x} -19.799 -50 -25.4558 @ribbonlist {x} color= red {x} P -22.6274 -50 -22.6274 {x} -19.799 -50 -25.4558 {x} -19.799 -50 -19.799 {x} -16.9706 -50 -22.6274 @ribbonlist {x} color= white {x} P -19.799 -50 -19.799 {x} -16.9706 -50 -22.6274 {x} -16.9706 -50 -16.9706 {x} -14.1421 -50 -19.799 @ribbonlist {x} color= red {x} P -16.9706 -50 -16.9706 {x} -14.1421 -50 -19.799 {x} -14.1421 -50 -14.1421 {x} -11.3137 -50 -16.9706 @ribbonlist {x} color= white {x} P -14.1421 -50 -14.1421 {x} -11.3137 -50 -16.9706 {x} -11.3137 -50 -11.3137 {x} -8.4853 -50 -14.1421 @ribbonlist {x} color= red {x} P -11.3137 -50 -11.3137 {x} -8.4853 -50 -14.1421 {x} -8.4853 -50 -8.4853 {x} -5.6569 -50 -11.3137 @ribbonlist {x} color= white {x} P -8.4853 -50 -8.4853 {x} -5.6569 -50 -11.3137 {x} -5.6569 -50 -5.6569 {x} -2.8284 -50 -8.4853 @ribbonlist {x} color= red {x} P -5.6569 -50 -5.6569 {x} -2.8284 -50 -8.4853 {x} -2.8284 -50 -2.8284 {x} 0 -50 -5.6569 @ribbonlist {x} color= white {x} P -2.8284 -50 -2.8284 {x} 0 -50 -5.6569 {x} 0 -50 0 {x} 2.8284 -50 -2.8284 @ribbonlist {x} color= red {x} P 0 -50 0 {x} 2.8284 -50 -2.8284 {x} 2.8284 -50 2.8284 {x} 5.6569 -50 0 @ribbonlist {x} color= white {x} P 2.8284 -50 2.8284 {x} 5.6569 -50 0 {x} 5.6569 -50 5.6569 {x} 8.4853 -50 2.8284 @ribbonlist {x} color= red {x} P 5.6569 -50 5.6569 {x} 8.4853 -50 2.8284 {x} 8.4853 -50 8.4853 {x} 11.3137 -50 5.6569 @ribbonlist {x} color= white {x} P 8.4853 -50 8.4853 {x} 11.3137 -50 5.6569 {x} 11.3137 -50 11.3137 {x} 14.1421 -50 8.4853 @ribbonlist {x} color= red {x} P 11.3137 -50 11.3137 {x} 14.1421 -50 8.4853 {x} 14.1421 -50 14.1421 {x} 16.9706 -50 11.3137 @ribbonlist {x} color= white {x} P 14.1421 -50 14.1421 {x} 16.9706 -50 11.3137 {x} 16.9706 -50 16.9706 {x} 19.799 -50 14.1421 @ribbonlist {x} color= red {x} P 16.9706 -50 16.9706 {x} 19.799 -50 14.1421 {x} 19.799 -50 19.799 {x} 22.6274 -50 16.9706 @ribbonlist {x} color= white {x} P 19.799 -50 19.799 {x} 22.6274 -50 16.9706 {x} 22.6274 -50 22.6274 {x} 25.4558 -50 19.799 @ribbonlist {x} color= red {x} P 22.6274 -50 22.6274 {x} 25.4558 -50 19.799 {x} 25.4558 -50 25.4558 {x} 28.2843 -50 22.6274 @ribbonlist {x} color= white {x} P 25.4558 -50 25.4558 {x} 28.2843 -50 22.6274 {x} 28.2843 -50 28.2843 {x} 31.1127 -50 25.4558 @ribbonlist {x} color= white {x} P -25.4558 -50 -31.1127 {x} -22.6274 -50 -33.9411 {x} -22.6274 -50 -28.2843 {x} -19.799 -50 -31.1127 @ribbonlist {x} color= red {x} P -22.6274 -50 -28.2843 {x} -19.799 -50 -31.1127 {x} -19.799 -50 -25.4558 {x} -16.9706 -50 -28.2843 @ribbonlist {x} color= white {x} P -19.799 -50 -25.4558 {x} -16.9706 -50 -28.2843 {x} -16.9706 -50 -22.6274 {x} -14.1421 -50 -25.4558 @ribbonlist {x} color= red {x} P -16.9706 -50 -22.6274 {x} -14.1421 -50 -25.4558 {x} -14.1421 -50 -19.799 {x} -11.3137 -50 -22.6274 @ribbonlist {x} color= white {x} P -14.1421 -50 -19.799 {x} -11.3137 -50 -22.6274 {x} -11.3137 -50 -16.9706 {x} -8.4853 -50 -19.799 @ribbonlist {x} color= red {x} P -11.3137 -50 -16.9706 {x} -8.4853 -50 -19.799 {x} -8.4853 -50 -14.1421 {x} -5.6569 -50 -16.9706 @ribbonlist {x} color= white {x} P -8.4853 -50 -14.1421 {x} -5.6569 -50 -16.9706 {x} -5.6569 -50 -11.3137 {x} -2.8284 -50 -14.1421 @ribbonlist {x} color= red {x} P -5.6569 -50 -11.3137 {x} -2.8284 -50 -14.1421 {x} -2.8284 -50 -8.4853 {x} 0 -50 -11.3137 @ribbonlist {x} color= white {x} P -2.8284 -50 -8.4853 {x} 0 -50 -11.3137 {x} 0 -50 -5.6569 {x} 2.8284 -50 -8.4853 @ribbonlist {x} color= red {x} P 0 -50 -5.6569 {x} 2.8284 -50 -8.4853 {x} 2.8284 -50 -2.8284 {x} 5.6569 -50 -5.6569 @ribbonlist {x} color= white {x} P 2.8284 -50 -2.8284 {x} 5.6569 -50 -5.6569 {x} 5.6569 -50 0 {x} 8.4853 -50 -2.8284 @ribbonlist {x} color= red {x} P 5.6569 -50 0 {x} 8.4853 -50 -2.8284 {x} 8.4853 -50 2.8284 {x} 11.3137 -50 0 @ribbonlist {x} color= white {x} P 8.4853 -50 2.8284 {x} 11.3137 -50 0 {x} 11.3137 -50 5.6569 {x} 14.1421 -50 2.8284 @ribbonlist {x} color= red {x} P 11.3137 -50 5.6569 {x} 14.1421 -50 2.8284 {x} 14.1421 -50 8.4853 {x} 16.9706 -50 5.6569 @ribbonlist {x} color= white {x} P 14.1421 -50 8.4853 {x} 16.9706 -50 5.6569 {x} 16.9706 -50 11.3137 {x} 19.799 -50 8.4853 @ribbonlist {x} color= red {x} P 16.9706 -50 11.3137 {x} 19.799 -50 8.4853 {x} 19.799 -50 14.1421 {x} 22.6274 -50 11.3137 @ribbonlist {x} color= white {x} P 19.799 -50 14.1421 {x} 22.6274 -50 11.3137 {x} 22.6274 -50 16.9706 {x} 25.4558 -50 14.1421 @ribbonlist {x} color= red {x} P 22.6274 -50 16.9706 {x} 25.4558 -50 14.1421 {x} 25.4558 -50 19.799 {x} 28.2843 -50 16.9706 @ribbonlist {x} color= white {x} P 25.4558 -50 19.799 {x} 28.2843 -50 16.9706 {x} 28.2843 -50 22.6274 {x} 31.1127 -50 19.799 @ribbonlist {x} color= red {x} P 28.2843 -50 22.6274 {x} 31.1127 -50 19.799 {x} 31.1127 -50 25.4558 {x} 33.9411 -50 22.6274 @ribbonlist {x} color= red {x} P -22.6274 -50 -33.9411 {x} -19.799 -50 -36.7696 {x} -19.799 -50 -31.1127 {x} -16.9706 -50 -33.9411 @ribbonlist {x} color= white {x} P -19.799 -50 -31.1127 {x} -16.9706 -50 -33.9411 {x} -16.9706 -50 -28.2843 {x} -14.1421 -50 -31.1127 @ribbonlist {x} color= red {x} P -16.9706 -50 -28.2843 {x} -14.1421 -50 -31.1127 {x} -14.1421 -50 -25.4558 {x} -11.3137 -50 -28.2843 @ribbonlist {x} color= white {x} P -14.1421 -50 -25.4558 {x} -11.3137 -50 -28.2843 {x} -11.3137 -50 -22.6274 {x} -8.4853 -50 -25.4558 @ribbonlist {x} color= red {x} P -11.3137 -50 -22.6274 {x} -8.4853 -50 -25.4558 {x} -8.4853 -50 -19.799 {x} -5.6569 -50 -22.6274 @ribbonlist {x} color= white {x} P -8.4853 -50 -19.799 {x} -5.6569 -50 -22.6274 {x} -5.6569 -50 -16.9706 {x} -2.8284 -50 -19.799 @ribbonlist {x} color= red {x} P -5.6569 -50 -16.9706 {x} -2.8284 -50 -19.799 {x} -2.8284 -50 -14.1421 {x} 0 -50 -16.9706 @ribbonlist {x} color= white {x} P -2.8284 -50 -14.1421 {x} 0 -50 -16.9706 {x} 0 -50 -11.3137 {x} 2.8284 -50 -14.1421 @ribbonlist {x} color= red {x} P 0 -50 -11.3137 {x} 2.8284 -50 -14.1421 {x} 2.8284 -50 -8.4853 {x} 5.6569 -50 -11.3137 @ribbonlist {x} color= white {x} P 2.8284 -50 -8.4853 {x} 5.6569 -50 -11.3137 {x} 5.6569 -50 -5.6569 {x} 8.4853 -50 -8.4853 @ribbonlist {x} color= red {x} P 5.6569 -50 -5.6569 {x} 8.4853 -50 -8.4853 {x} 8.4853 -50 -2.8284 {x} 11.3137 -50 -5.6569 @ribbonlist {x} color= white {x} P 8.4853 -50 -2.8284 {x} 11.3137 -50 -5.6569 {x} 11.3137 -50 0 {x} 14.1421 -50 -2.8284 @ribbonlist {x} color= red {x} P 11.3137 -50 0 {x} 14.1421 -50 -2.8284 {x} 14.1421 -50 2.8284 {x} 16.9706 -50 0 @ribbonlist {x} color= white {x} P 14.1421 -50 2.8284 {x} 16.9706 -50 0 {x} 16.9706 -50 5.6569 {x} 19.799 -50 2.8284 @ribbonlist {x} color= red {x} P 16.9706 -50 5.6569 {x} 19.799 -50 2.8284 {x} 19.799 -50 8.4853 {x} 22.6274 -50 5.6569 @ribbonlist {x} color= white {x} P 19.799 -50 8.4853 {x} 22.6274 -50 5.6569 {x} 22.6274 -50 11.3137 {x} 25.4558 -50 8.4853 @ribbonlist {x} color= red {x} P 22.6274 -50 11.3137 {x} 25.4558 -50 8.4853 {x} 25.4558 -50 14.1421 {x} 28.2843 -50 11.3137 @ribbonlist {x} color= white {x} P 25.4558 -50 14.1421 {x} 28.2843 -50 11.3137 {x} 28.2843 -50 16.9706 {x} 31.1127 -50 14.1421 @ribbonlist {x} color= red {x} P 28.2843 -50 16.9706 {x} 31.1127 -50 14.1421 {x} 31.1127 -50 19.799 {x} 33.9411 -50 16.9706 @ribbonlist {x} color= white {x} P 31.1127 -50 19.799 {x} 33.9411 -50 16.9706 {x} 33.9411 -50 22.6274 {x} 36.7696 -50 19.799 @ribbonlist {x} color= white {x} P -19.799 -50 -36.7696 {x} -16.9706 -50 -39.598 {x} -16.9706 -50 -33.9411 {x} -14.1421 -50 -36.7696 @ribbonlist {x} color= red {x} P -16.9706 -50 -33.9411 {x} -14.1421 -50 -36.7696 {x} -14.1421 -50 -31.1127 {x} -11.3137 -50 -33.9411 @ribbonlist {x} color= white {x} P -14.1421 -50 -31.1127 {x} -11.3137 -50 -33.9411 {x} -11.3137 -50 -28.2843 {x} -8.4853 -50 -31.1127 @ribbonlist {x} color= red {x} P -11.3137 -50 -28.2843 {x} -8.4853 -50 -31.1127 {x} -8.4853 -50 -25.4558 {x} -5.6569 -50 -28.2843 @ribbonlist {x} color= white {x} P -8.4853 -50 -25.4558 {x} -5.6569 -50 -28.2843 {x} -5.6569 -50 -22.6274 {x} -2.8284 -50 -25.4558 @ribbonlist {x} color= red {x} P -5.6569 -50 -22.6274 {x} -2.8284 -50 -25.4558 {x} -2.8284 -50 -19.799 {x} 0 -50 -22.6274 @ribbonlist {x} color= white {x} P -2.8284 -50 -19.799 {x} 0 -50 -22.6274 {x} 0 -50 -16.9706 {x} 2.8284 -50 -19.799 @ribbonlist {x} color= red {x} P 0 -50 -16.9706 {x} 2.8284 -50 -19.799 {x} 2.8284 -50 -14.1421 {x} 5.6569 -50 -16.9706 @ribbonlist {x} color= white {x} P 2.8284 -50 -14.1421 {x} 5.6569 -50 -16.9706 {x} 5.6569 -50 -11.3137 {x} 8.4853 -50 -14.1421 @ribbonlist {x} color= red {x} P 5.6569 -50 -11.3137 {x} 8.4853 -50 -14.1421 {x} 8.4853 -50 -8.4853 {x} 11.3137 -50 -11.3137 @ribbonlist {x} color= white {x} P 8.4853 -50 -8.4853 {x} 11.3137 -50 -11.3137 {x} 11.3137 -50 -5.6569 {x} 14.1421 -50 -8.4853 @ribbonlist {x} color= red {x} P 11.3137 -50 -5.6569 {x} 14.1421 -50 -8.4853 {x} 14.1421 -50 -2.8284 {x} 16.9706 -50 -5.6569 @ribbonlist {x} color= white {x} P 14.1421 -50 -2.8284 {x} 16.9706 -50 -5.6569 {x} 16.9706 -50 0 {x} 19.799 -50 -2.8284 @ribbonlist {x} color= red {x} P 16.9706 -50 0 {x} 19.799 -50 -2.8284 {x} 19.799 -50 2.8284 {x} 22.6274 -50 0 @ribbonlist {x} color= white {x} P 19.799 -50 2.8284 {x} 22.6274 -50 0 {x} 22.6274 -50 5.6569 {x} 25.4558 -50 2.8284 @ribbonlist {x} color= red {x} P 22.6274 -50 5.6569 {x} 25.4558 -50 2.8284 {x} 25.4558 -50 8.4853 {x} 28.2843 -50 5.6569 @ribbonlist {x} color= white {x} P 25.4558 -50 8.4853 {x} 28.2843 -50 5.6569 {x} 28.2843 -50 11.3137 {x} 31.1127 -50 8.4853 @ribbonlist {x} color= red {x} P 28.2843 -50 11.3137 {x} 31.1127 -50 8.4853 {x} 31.1127 -50 14.1421 {x} 33.9411 -50 11.3137 @ribbonlist {x} color= white {x} P 31.1127 -50 14.1421 {x} 33.9411 -50 11.3137 {x} 33.9411 -50 16.9706 {x} 36.7696 -50 14.1421 @ribbonlist {x} color= red {x} P 33.9411 -50 16.9706 {x} 36.7696 -50 14.1421 {x} 36.7696 -50 19.799 {x} 39.598 -50 16.9706 @ribbonlist {x} color= red {x} P -16.9706 -50 -39.598 {x} -14.1421 -50 -42.4264 {x} -14.1421 -50 -36.7696 {x} -11.3137 -50 -39.598 @ribbonlist {x} color= white {x} P -14.1421 -50 -36.7696 {x} -11.3137 -50 -39.598 {x} -11.3137 -50 -33.9411 {x} -8.4853 -50 -36.7696 @ribbonlist {x} color= red {x} P -11.3137 -50 -33.9411 {x} -8.4853 -50 -36.7696 {x} -8.4853 -50 -31.1127 {x} -5.6569 -50 -33.9411 @ribbonlist {x} color= white {x} P -8.4853 -50 -31.1127 {x} -5.6569 -50 -33.9411 {x} -5.6569 -50 -28.2843 {x} -2.8284 -50 -31.1127 @ribbonlist {x} color= red {x} P -5.6569 -50 -28.2843 {x} -2.8284 -50 -31.1127 {x} -2.8284 -50 -25.4558 {x} 0 -50 -28.2843 @ribbonlist {x} color= white {x} P -2.8284 -50 -25.4558 {x} 0 -50 -28.2843 {x} 0 -50 -22.6274 {x} 2.8284 -50 -25.4558 @ribbonlist {x} color= red {x} P 0 -50 -22.6274 {x} 2.8284 -50 -25.4558 {x} 2.8284 -50 -19.799 {x} 5.6569 -50 -22.6274 @ribbonlist {x} color= white {x} P 2.8284 -50 -19.799 {x} 5.6569 -50 -22.6274 {x} 5.6569 -50 -16.9706 {x} 8.4853 -50 -19.799 @ribbonlist {x} color= red {x} P 5.6569 -50 -16.9706 {x} 8.4853 -50 -19.799 {x} 8.4853 -50 -14.1421 {x} 11.3137 -50 -16.9706 @ribbonlist {x} color= white {x} P 8.4853 -50 -14.1421 {x} 11.3137 -50 -16.9706 {x} 11.3137 -50 -11.3137 {x} 14.1421 -50 -14.1421 @ribbonlist {x} color= red {x} P 11.3137 -50 -11.3137 {x} 14.1421 -50 -14.1421 {x} 14.1421 -50 -8.4853 {x} 16.9706 -50 -11.3137 @ribbonlist {x} color= white {x} P 14.1421 -50 -8.4853 {x} 16.9706 -50 -11.3137 {x} 16.9706 -50 -5.6569 {x} 19.799 -50 -8.4853 @ribbonlist {x} color= red {x} P 16.9706 -50 -5.6569 {x} 19.799 -50 -8.4853 {x} 19.799 -50 -2.8284 {x} 22.6274 -50 -5.6569 @ribbonlist {x} color= white {x} P 19.799 -50 -2.8284 {x} 22.6274 -50 -5.6569 {x} 22.6274 -50 0 {x} 25.4558 -50 -2.8284 @ribbonlist {x} color= red {x} P 22.6274 -50 0 {x} 25.4558 -50 -2.8284 {x} 25.4558 -50 2.8284 {x} 28.2843 -50 0 @ribbonlist {x} color= white {x} P 25.4558 -50 2.8284 {x} 28.2843 -50 0 {x} 28.2843 -50 5.6569 {x} 31.1127 -50 2.8284 @ribbonlist {x} color= red {x} P 28.2843 -50 5.6569 {x} 31.1127 -50 2.8284 {x} 31.1127 -50 8.4853 {x} 33.9411 -50 5.6569 @ribbonlist {x} color= white {x} P 31.1127 -50 8.4853 {x} 33.9411 -50 5.6569 {x} 33.9411 -50 11.3137 {x} 36.7696 -50 8.4853 @ribbonlist {x} color= red {x} P 33.9411 -50 11.3137 {x} 36.7696 -50 8.4853 {x} 36.7696 -50 14.1421 {x} 39.598 -50 11.3137 @ribbonlist {x} color= white {x} P 36.7696 -50 14.1421 {x} 39.598 -50 11.3137 {x} 39.598 -50 16.9706 {x} 42.4264 -50 14.1421 @ribbonlist {x} color= white {x} P -14.1421 -50 -42.4264 {x} -11.3137 -50 -45.2548 {x} -11.3137 -50 -39.598 {x} -8.4853 -50 -42.4264 @ribbonlist {x} color= red {x} P -11.3137 -50 -39.598 {x} -8.4853 -50 -42.4264 {x} -8.4853 -50 -36.7696 {x} -5.6569 -50 -39.598 @ribbonlist {x} color= white {x} P -8.4853 -50 -36.7696 {x} -5.6569 -50 -39.598 {x} -5.6569 -50 -33.9411 {x} -2.8284 -50 -36.7696 @ribbonlist {x} color= red {x} P -5.6569 -50 -33.9411 {x} -2.8284 -50 -36.7696 {x} -2.8284 -50 -31.1127 {x} 0 -50 -33.9411 @ribbonlist {x} color= white {x} P -2.8284 -50 -31.1127 {x} 0 -50 -33.9411 {x} 0 -50 -28.2843 {x} 2.8284 -50 -31.1127 @ribbonlist {x} color= red {x} P 0 -50 -28.2843 {x} 2.8284 -50 -31.1127 {x} 2.8284 -50 -25.4558 {x} 5.6569 -50 -28.2843 @ribbonlist {x} color= white {x} P 2.8284 -50 -25.4558 {x} 5.6569 -50 -28.2843 {x} 5.6569 -50 -22.6274 {x} 8.4853 -50 -25.4558 @ribbonlist {x} color= red {x} P 5.6569 -50 -22.6274 {x} 8.4853 -50 -25.4558 {x} 8.4853 -50 -19.799 {x} 11.3137 -50 -22.6274 @ribbonlist {x} color= white {x} P 8.4853 -50 -19.799 {x} 11.3137 -50 -22.6274 {x} 11.3137 -50 -16.9706 {x} 14.1421 -50 -19.799 @ribbonlist {x} color= red {x} P 11.3137 -50 -16.9706 {x} 14.1421 -50 -19.799 {x} 14.1421 -50 -14.1421 {x} 16.9706 -50 -16.9706 @ribbonlist {x} color= white {x} P 14.1421 -50 -14.1421 {x} 16.9706 -50 -16.9706 {x} 16.9706 -50 -11.3137 {x} 19.799 -50 -14.1421 @ribbonlist {x} color= red {x} P 16.9706 -50 -11.3137 {x} 19.799 -50 -14.1421 {x} 19.799 -50 -8.4853 {x} 22.6274 -50 -11.3137 @ribbonlist {x} color= white {x} P 19.799 -50 -8.4853 {x} 22.6274 -50 -11.3137 {x} 22.6274 -50 -5.6569 {x} 25.4558 -50 -8.4853 @ribbonlist {x} color= red {x} P 22.6274 -50 -5.6569 {x} 25.4558 -50 -8.4853 {x} 25.4558 -50 -2.8284 {x} 28.2843 -50 -5.6569 @ribbonlist {x} color= white {x} P 25.4558 -50 -2.8284 {x} 28.2843 -50 -5.6569 {x} 28.2843 -50 0 {x} 31.1127 -50 -2.8284 @ribbonlist {x} color= red {x} P 28.2843 -50 0 {x} 31.1127 -50 -2.8284 {x} 31.1127 -50 2.8284 {x} 33.9411 -50 0 @ribbonlist {x} color= white {x} P 31.1127 -50 2.8284 {x} 33.9411 -50 0 {x} 33.9411 -50 5.6569 {x} 36.7696 -50 2.8284 @ribbonlist {x} color= red {x} P 33.9411 -50 5.6569 {x} 36.7696 -50 2.8284 {x} 36.7696 -50 8.4853 {x} 39.598 -50 5.6569 @ribbonlist {x} color= white {x} P 36.7696 -50 8.4853 {x} 39.598 -50 5.6569 {x} 39.598 -50 11.3137 {x} 42.4264 -50 8.4853 @ribbonlist {x} color= red {x} P 39.598 -50 11.3137 {x} 42.4264 -50 8.4853 {x} 42.4264 -50 14.1421 {x} 45.2548 -50 11.3137 @ribbonlist {x} color= red {x} P -11.3137 -50 -45.2548 {x} -8.4853 -50 -48.0833 {x} -8.4853 -50 -42.4264 {x} -5.6569 -50 -45.2548 @ribbonlist {x} color= white {x} P -8.4853 -50 -42.4264 {x} -5.6569 -50 -45.2548 {x} -5.6569 -50 -39.598 {x} -2.8284 -50 -42.4264 @ribbonlist {x} color= red {x} P -5.6569 -50 -39.598 {x} -2.8284 -50 -42.4264 {x} -2.8284 -50 -36.7696 {x} 0 -50 -39.598 @ribbonlist {x} color= white {x} P -2.8284 -50 -36.7696 {x} 0 -50 -39.598 {x} 0 -50 -33.9411 {x} 2.8284 -50 -36.7696 @ribbonlist {x} color= red {x} P 0 -50 -33.9411 {x} 2.8284 -50 -36.7696 {x} 2.8284 -50 -31.1127 {x} 5.6569 -50 -33.9411 @ribbonlist {x} color= white {x} P 2.8284 -50 -31.1127 {x} 5.6569 -50 -33.9411 {x} 5.6569 -50 -28.2843 {x} 8.4853 -50 -31.1127 @ribbonlist {x} color= red {x} P 5.6569 -50 -28.2843 {x} 8.4853 -50 -31.1127 {x} 8.4853 -50 -25.4558 {x} 11.3137 -50 -28.2843 @ribbonlist {x} color= white {x} P 8.4853 -50 -25.4558 {x} 11.3137 -50 -28.2843 {x} 11.3137 -50 -22.6274 {x} 14.1421 -50 -25.4558 @ribbonlist {x} color= red {x} P 11.3137 -50 -22.6274 {x} 14.1421 -50 -25.4558 {x} 14.1421 -50 -19.799 {x} 16.9706 -50 -22.6274 @ribbonlist {x} color= white {x} P 14.1421 -50 -19.799 {x} 16.9706 -50 -22.6274 {x} 16.9706 -50 -16.9706 {x} 19.799 -50 -19.799 @ribbonlist {x} color= red {x} P 16.9706 -50 -16.9706 {x} 19.799 -50 -19.799 {x} 19.799 -50 -14.1421 {x} 22.6274 -50 -16.9706 @ribbonlist {x} color= white {x} P 19.799 -50 -14.1421 {x} 22.6274 -50 -16.9706 {x} 22.6274 -50 -11.3137 {x} 25.4558 -50 -14.1421 @ribbonlist {x} color= red {x} P 22.6274 -50 -11.3137 {x} 25.4558 -50 -14.1421 {x} 25.4558 -50 -8.4853 {x} 28.2843 -50 -11.3137 @ribbonlist {x} color= white {x} P 25.4558 -50 -8.4853 {x} 28.2843 -50 -11.3137 {x} 28.2843 -50 -5.6569 {x} 31.1127 -50 -8.4853 @ribbonlist {x} color= red {x} P 28.2843 -50 -5.6569 {x} 31.1127 -50 -8.4853 {x} 31.1127 -50 -2.8284 {x} 33.9411 -50 -5.6569 @ribbonlist {x} color= white {x} P 31.1127 -50 -2.8284 {x} 33.9411 -50 -5.6569 {x} 33.9411 -50 0 {x} 36.7696 -50 -2.8284 @ribbonlist {x} color= red {x} P 33.9411 -50 0 {x} 36.7696 -50 -2.8284 {x} 36.7696 -50 2.8284 {x} 39.598 -50 0 @ribbonlist {x} color= white {x} P 36.7696 -50 2.8284 {x} 39.598 -50 0 {x} 39.598 -50 5.6569 {x} 42.4264 -50 2.8284 @ribbonlist {x} color= red {x} P 39.598 -50 5.6569 {x} 42.4264 -50 2.8284 {x} 42.4264 -50 8.4853 {x} 45.2548 -50 5.6569 @ribbonlist {x} color= white {x} P 42.4264 -50 8.4853 {x} 45.2548 -50 5.6569 {x} 45.2548 -50 11.3137 {x} 48.0833 -50 8.4853 @ribbonlist {x} color= white {x} P -8.4853 -50 -48.0833 {x} -5.6569 -50 -50.9117 {x} -5.6569 -50 -45.2548 {x} -2.8284 -50 -48.0833 @ribbonlist {x} color= red {x} P -5.6569 -50 -45.2548 {x} -2.8284 -50 -48.0833 {x} -2.8284 -50 -42.4264 {x} 0 -50 -45.2548 @ribbonlist {x} color= white {x} P -2.8284 -50 -42.4264 {x} 0 -50 -45.2548 {x} 0 -50 -39.598 {x} 2.8284 -50 -42.4264 @ribbonlist {x} color= red {x} P 0 -50 -39.598 {x} 2.8284 -50 -42.4264 {x} 2.8284 -50 -36.7696 {x} 5.6569 -50 -39.598 @ribbonlist {x} color= white {x} P 2.8284 -50 -36.7696 {x} 5.6569 -50 -39.598 {x} 5.6569 -50 -33.9411 {x} 8.4853 -50 -36.7696 @ribbonlist {x} color= red {x} P 5.6569 -50 -33.9411 {x} 8.4853 -50 -36.7696 {x} 8.4853 -50 -31.1127 {x} 11.3137 -50 -33.9411 @ribbonlist {x} color= white {x} P 8.4853 -50 -31.1127 {x} 11.3137 -50 -33.9411 {x} 11.3137 -50 -28.2843 {x} 14.1421 -50 -31.1127 @ribbonlist {x} color= red {x} P 11.3137 -50 -28.2843 {x} 14.1421 -50 -31.1127 {x} 14.1421 -50 -25.4558 {x} 16.9706 -50 -28.2843 @ribbonlist {x} color= white {x} P 14.1421 -50 -25.4558 {x} 16.9706 -50 -28.2843 {x} 16.9706 -50 -22.6274 {x} 19.799 -50 -25.4558 @ribbonlist {x} color= red {x} P 16.9706 -50 -22.6274 {x} 19.799 -50 -25.4558 {x} 19.799 -50 -19.799 {x} 22.6274 -50 -22.6274 @ribbonlist {x} color= white {x} P 19.799 -50 -19.799 {x} 22.6274 -50 -22.6274 {x} 22.6274 -50 -16.9706 {x} 25.4558 -50 -19.799 @ribbonlist {x} color= red {x} P 22.6274 -50 -16.9706 {x} 25.4558 -50 -19.799 {x} 25.4558 -50 -14.1421 {x} 28.2843 -50 -16.9706 @ribbonlist {x} color= white {x} P 25.4558 -50 -14.1421 {x} 28.2843 -50 -16.9706 {x} 28.2843 -50 -11.3137 {x} 31.1127 -50 -14.1421 @ribbonlist {x} color= red {x} P 28.2843 -50 -11.3137 {x} 31.1127 -50 -14.1421 {x} 31.1127 -50 -8.4853 {x} 33.9411 -50 -11.3137 @ribbonlist {x} color= white {x} P 31.1127 -50 -8.4853 {x} 33.9411 -50 -11.3137 {x} 33.9411 -50 -5.6569 {x} 36.7696 -50 -8.4853 @ribbonlist {x} color= red {x} P 33.9411 -50 -5.6569 {x} 36.7696 -50 -8.4853 {x} 36.7696 -50 -2.8284 {x} 39.598 -50 -5.6569 @ribbonlist {x} color= white {x} P 36.7696 -50 -2.8284 {x} 39.598 -50 -5.6569 {x} 39.598 -50 0 {x} 42.4264 -50 -2.8284 @ribbonlist {x} color= red {x} P 39.598 -50 0 {x} 42.4264 -50 -2.8284 {x} 42.4264 -50 2.8284 {x} 45.2548 -50 0 @ribbonlist {x} color= white {x} P 42.4264 -50 2.8284 {x} 45.2548 -50 0 {x} 45.2548 -50 5.6569 {x} 48.0833 -50 2.8284 @ribbonlist {x} color= red {x} P 45.2548 -50 5.6569 {x} 48.0833 -50 2.8284 {x} 48.0833 -50 8.4853 {x} 50.9117 -50 5.6569 @ribbonlist {x} color= red {x} P -5.6569 -50 -50.9117 {x} -2.8284 -50 -53.7401 {x} -2.8284 -50 -48.0833 {x} 0 -50 -50.9117 @ribbonlist {x} color= white {x} P -2.8284 -50 -48.0833 {x} 0 -50 -50.9117 {x} 0 -50 -45.2548 {x} 2.8284 -50 -48.0833 @ribbonlist {x} color= red {x} P 0 -50 -45.2548 {x} 2.8284 -50 -48.0833 {x} 2.8284 -50 -42.4264 {x} 5.6569 -50 -45.2548 @ribbonlist {x} color= white {x} P 2.8284 -50 -42.4264 {x} 5.6569 -50 -45.2548 {x} 5.6569 -50 -39.598 {x} 8.4853 -50 -42.4264 @ribbonlist {x} color= red {x} P 5.6569 -50 -39.598 {x} 8.4853 -50 -42.4264 {x} 8.4853 -50 -36.7696 {x} 11.3137 -50 -39.598 @ribbonlist {x} color= white {x} P 8.4853 -50 -36.7696 {x} 11.3137 -50 -39.598 {x} 11.3137 -50 -33.9411 {x} 14.1421 -50 -36.7696 @ribbonlist {x} color= red {x} P 11.3137 -50 -33.9411 {x} 14.1421 -50 -36.7696 {x} 14.1421 -50 -31.1127 {x} 16.9706 -50 -33.9411 @ribbonlist {x} color= white {x} P 14.1421 -50 -31.1127 {x} 16.9706 -50 -33.9411 {x} 16.9706 -50 -28.2843 {x} 19.799 -50 -31.1127 @ribbonlist {x} color= red {x} P 16.9706 -50 -28.2843 {x} 19.799 -50 -31.1127 {x} 19.799 -50 -25.4558 {x} 22.6274 -50 -28.2843 @ribbonlist {x} color= white {x} P 19.799 -50 -25.4558 {x} 22.6274 -50 -28.2843 {x} 22.6274 -50 -22.6274 {x} 25.4558 -50 -25.4558 @ribbonlist {x} color= red {x} P 22.6274 -50 -22.6274 {x} 25.4558 -50 -25.4558 {x} 25.4558 -50 -19.799 {x} 28.2843 -50 -22.6274 @ribbonlist {x} color= white {x} P 25.4558 -50 -19.799 {x} 28.2843 -50 -22.6274 {x} 28.2843 -50 -16.9706 {x} 31.1127 -50 -19.799 @ribbonlist {x} color= red {x} P 28.2843 -50 -16.9706 {x} 31.1127 -50 -19.799 {x} 31.1127 -50 -14.1421 {x} 33.9411 -50 -16.9706 @ribbonlist {x} color= white {x} P 31.1127 -50 -14.1421 {x} 33.9411 -50 -16.9706 {x} 33.9411 -50 -11.3137 {x} 36.7696 -50 -14.1421 @ribbonlist {x} color= red {x} P 33.9411 -50 -11.3137 {x} 36.7696 -50 -14.1421 {x} 36.7696 -50 -8.4853 {x} 39.598 -50 -11.3137 @ribbonlist {x} color= white {x} P 36.7696 -50 -8.4853 {x} 39.598 -50 -11.3137 {x} 39.598 -50 -5.6569 {x} 42.4264 -50 -8.4853 @ribbonlist {x} color= red {x} P 39.598 -50 -5.6569 {x} 42.4264 -50 -8.4853 {x} 42.4264 -50 -2.8284 {x} 45.2548 -50 -5.6569 @ribbonlist {x} color= white {x} P 42.4264 -50 -2.8284 {x} 45.2548 -50 -5.6569 {x} 45.2548 -50 0 {x} 48.0833 -50 -2.8284 @ribbonlist {x} color= red {x} P 45.2548 -50 0 {x} 48.0833 -50 -2.8284 {x} 48.0833 -50 2.8284 {x} 50.9117 -50 0 @ribbonlist {x} color= white {x} P 48.0833 -50 2.8284 {x} 50.9117 -50 0 {x} 50.9117 -50 5.6569 {x} 53.7401 -50 2.8284 @ribbonlist {x} color= white {x} P -2.8284 -50 -53.7401 {x} 0 -50 -56.5685 {x} 0 -50 -50.9117 {x} 2.8284 -50 -53.7401 @ribbonlist {x} color= red {x} P 0 -50 -50.9117 {x} 2.8284 -50 -53.7401 {x} 2.8284 -50 -48.0833 {x} 5.6569 -50 -50.9117 @ribbonlist {x} color= white {x} P 2.8284 -50 -48.0833 {x} 5.6569 -50 -50.9117 {x} 5.6569 -50 -45.2548 {x} 8.4853 -50 -48.0833 @ribbonlist {x} color= red {x} P 5.6569 -50 -45.2548 {x} 8.4853 -50 -48.0833 {x} 8.4853 -50 -42.4264 {x} 11.3137 -50 -45.2548 @ribbonlist {x} color= white {x} P 8.4853 -50 -42.4264 {x} 11.3137 -50 -45.2548 {x} 11.3137 -50 -39.598 {x} 14.1421 -50 -42.4264 @ribbonlist {x} color= red {x} P 11.3137 -50 -39.598 {x} 14.1421 -50 -42.4264 {x} 14.1421 -50 -36.7696 {x} 16.9706 -50 -39.598 @ribbonlist {x} color= white {x} P 14.1421 -50 -36.7696 {x} 16.9706 -50 -39.598 {x} 16.9706 -50 -33.9411 {x} 19.799 -50 -36.7696 @ribbonlist {x} color= red {x} P 16.9706 -50 -33.9411 {x} 19.799 -50 -36.7696 {x} 19.799 -50 -31.1127 {x} 22.6274 -50 -33.9411 @ribbonlist {x} color= white {x} P 19.799 -50 -31.1127 {x} 22.6274 -50 -33.9411 {x} 22.6274 -50 -28.2843 {x} 25.4558 -50 -31.1127 @ribbonlist {x} color= red {x} P 22.6274 -50 -28.2843 {x} 25.4558 -50 -31.1127 {x} 25.4558 -50 -25.4558 {x} 28.2843 -50 -28.2843 @ribbonlist {x} color= white {x} P 25.4558 -50 -25.4558 {x} 28.2843 -50 -28.2843 {x} 28.2843 -50 -22.6274 {x} 31.1127 -50 -25.4558 @ribbonlist {x} color= red {x} P 28.2843 -50 -22.6274 {x} 31.1127 -50 -25.4558 {x} 31.1127 -50 -19.799 {x} 33.9411 -50 -22.6274 @ribbonlist {x} color= white {x} P 31.1127 -50 -19.799 {x} 33.9411 -50 -22.6274 {x} 33.9411 -50 -16.9706 {x} 36.7696 -50 -19.799 @ribbonlist {x} color= red {x} P 33.9411 -50 -16.9706 {x} 36.7696 -50 -19.799 {x} 36.7696 -50 -14.1421 {x} 39.598 -50 -16.9706 @ribbonlist {x} color= white {x} P 36.7696 -50 -14.1421 {x} 39.598 -50 -16.9706 {x} 39.598 -50 -11.3137 {x} 42.4264 -50 -14.1421 @ribbonlist {x} color= red {x} P 39.598 -50 -11.3137 {x} 42.4264 -50 -14.1421 {x} 42.4264 -50 -8.4853 {x} 45.2548 -50 -11.3137 @ribbonlist {x} color= white {x} P 42.4264 -50 -8.4853 {x} 45.2548 -50 -11.3137 {x} 45.2548 -50 -5.6569 {x} 48.0833 -50 -8.4853 @ribbonlist {x} color= red {x} P 45.2548 -50 -5.6569 {x} 48.0833 -50 -8.4853 {x} 48.0833 -50 -2.8284 {x} 50.9117 -50 -5.6569 @ribbonlist {x} color= white {x} P 48.0833 -50 -2.8284 {x} 50.9117 -50 -5.6569 {x} 50.9117 -50 0 {x} 53.7401 -50 -2.8284 @ribbonlist {x} color= red {x} P 50.9117 -50 0 {x} 53.7401 -50 -2.8284 {x} 53.7401 -50 2.8284 {x} 56.5685 -50 0 king-2.21.120420/king/resource/king/kins/pal5.kin0000644000000000000000000003413011531212640017626 0ustar rootroot@text COLOR PALETTE KiNG provides a basic set of 25 named colors, which can be used on either a black background or in modified form on a white background. The colors are depth-cued by intensity (that is, they get darker to merge with the background as they get farther away). The white-background colors are depth-cued by saturation, so that they become whiter, or "foggier", as they get farther away. This means that the starting color values when at front need to be somewhat different for the two cases; the extreme example is that the default white becomes black when on a white background. The color names are chosen to fit the black-background colors, since that is the option strongly preferred for molecules. White background is essential for B&W printing, and is also good for 3-D plots where you don't want to lose information at the very back. The palette presently available in KiNG is shown in the graphics window. There are 22 basic colors defined, of which 13 form a spectral color-wheel: red, orange, gold, yellow, lime, green, sea, cyan, sky, blue, purple, magenta, and hotpink. There are six low-saturation pastels: pinktint, peachtint, yellowtint, greentint, bluetint, and lilactint. Pink, peach, yellow, sea, sky, and lilac function as mid-saturation colors. The other 3 colors are white, gray, and brown. If you forget to specify a color, it will be drawn as white (the default). The most important, primitive function of color in any kind of illustration is to distinguish between two different things. There are about a dozen colors out of the set shown here which are distinct at a glance. These are assignable in several combinations, depending on where one starts: for instance, red and gold are quite distinct, as are orange and yellow, but red vs. orange or orange vs. gold might be confused. One commonly-needed distinction is between atom types: the usual convention is to make C white, S yellow, O red, and N blue; by extension, + charges and N-termini are some shade of blue and - charges and C-termini some shade of red, and hydrophobics can be gold (oil-colored) and polars cyan. On a single atom dot or vector the colors must be quite bright and different to be readily distinguished, while quite subtle color differences (such as the "tints") is effective for entire subunits or domains. The second function of color is to provide emphasis. Bright or saturated colors are more strongly noticeable in general, but the eye is less sensitive to blue and red than to green. The most important parts of a kinemage should be colored white, green, yellow, or hotpink; second choices would be cyan, red, or magenta. The parts that need to be observable but definitely not emphasized can be downplayed by coloring them blue, purple, gray, or brown. Labels work well either in gray, or in a different saturation of the same color-hue as the object. Saturation increases noticeability, but complementary colors are unpleasant to look at, because they "clash", or vibrate, with one another; they also give false depth cues, because blue appears to be farther away than red (short wavelength, blue radiation is focussed further out in the eye than the longer-wavelength red). In general, primaries are most effective when used with white or with related but non-saturated colors, rather than just with each other. The third function of color is to show which objects are related, by giving them perceptually-similar colors. Often, one wishes to show relatedness along two different dimensions simultaneously; one such dimension can be hue and another saturation, as for instance in using bluetint and pinktint for the mainchain of two different subunits, sky and pink for their respective sidechains, and blue and hotpink for their prosthetic groups. "Cool" blues and greens appear similar, in contrast to "warm" reds and yellows. The most similar sets within the MAGE palette are those that differ only in saturation: for instance green, sea, greentint, and white. Gray is the most neutral to use along with a color scale (as, for instance, in the palette labels). Rotate the palette, in order to see the effect of intensity change with depth (return by choosing 'View1' under the 'Views' menu). Colors are specified by their names in kinemage files. The one-letter color abbreviations used in point aspects are shown in parentheses where applicable. References: "THE KINEMAGE: A TOOL FOR SCIENTIFIC COMMUNICATION" D.C. Richardson and J.S. Richardson (1992) Protein Science 1:3-9 Trends in Biochem. Sci. (1994) 19: 135-8 International Tables for Crystallography vol. F (1999), chapter 25.2.13 File Demo5_4b.kin @kinemage 1 @onewidth @viewid {Full screen KiNG} @span 115 @zslab 200.0 @center 45.5 -50.0 0.0 @matrix 1.0 0.0 0.0 0.0 1.0 0.0 0.0 0.0 1.0 @master {duplicates} @master {color bars} @master {labels} @group {saturated} dominant @subgroup {red} dominant @labellist {x} color= gray master= {labels} {red (A)} -4 1 0 @vectorlist {x} color= red width= 4 master= {color bars} {}P 0 0 40 {} 20 0 40 {}P 0 -1 20 {} 20 -1 20 {}P 0 -2 0 {} 20 -2 0 {}P 0 -3 -20 {} 20 -3 -20 {}P 0 -4 -40 {} 20 -4 -40 @subgroup {orange} dominant @labellist {x} color= gray master= {labels} {orange (B)} -4 -7 0 @vectorlist {x} color= orange width= 4 master= {color bars} {}P 0 -8 40 {} 20 -8 40 {}P 0 -9 20 {} 20 -9 20 {}P 0 -10 0 {} 20 -10 0 {}P 0 -11 -20 {} 20 -11 -20 {}P 0 -12 -40 {} 20 -12 -40 @subgroup {gold} dominant @labellist {x} color= gray master= {labels} {gold (C)} -4 -15 0 @vectorlist {x} color= gold width= 4 master= {color bars} {}P 0 -16 40 {} 20 -16 40 {}P 0 -17 20 {} 20 -17 20 {}P 0 -18 0 {} 20 -18 0 {}P 0 -19 -20 {} 20 -19 -20 {}P 0 -20 -40 {} 20 -20 -40 @subgroup {yellow} dominant @labellist {x} color= gray master= {labels} {yellow (D)} -4 -23 0 @vectorlist {x} color= yellow width= 4 master= {color bars} {}P 0 -24 40 {} 20 -24 40 {}P 0 -25 20 {} 20 -25 20 {}P 0 -26 0 {} 20 -26 0 {}P 0 -27 -20 {} 20 -27 -20 {}P 0 -28 -40 {} 20 -28 -40 @subgroup {lime} dominant @labellist {x} color= gray master= {labels} {lime (E)} -4 -31 0 @vectorlist {x} color= lime width= 4 master= {color bars} {}P 0 -32 40 {} 20 -32 40 {}P 0 -33 20 {} 20 -33 20 {}P 0 -34 0 {} 20 -34 0 {}P 0 -35 -20 {} 20 -35 -20 {}P 0 -36 -40 {} 20 -36 -40 @subgroup {green} dominant @labellist {x} color= gray master= {labels} {green (F)} -4 -39 0 @vectorlist {x} color= green width= 4 master= {color bars} {}P 0 -40 40 {} 20 -40 40 {}P 0 -41 20 {} 20 -41 20 {}P 0 -42 0 {} 20 -42 0 {}P 0 -43 -20 {} 20 -43 -20 {}P 0 -44 -40 {} 20 -44 -40 @subgroup {sea} dominant @labellist {x} color= gray master= {labels} {sea (G)} -4 -47 0 @vectorlist {x} color= sea width= 4 master= {color bars} {}P 0 -48 40 {} 20 -48 40 {}P 0 -49 20 {} 20 -49 20 {}P 0 -50 0 {} 20 -50 0 {}P 0 -51 -20 {} 20 -51 -20 {}P 0 -52 -40 {} 20 -52 -40 @subgroup {cyan} dominant @labellist {x} color= gray master= {labels} {cyan (H)} -4 -55 0 @vectorlist {x} color= cyan width= 4 master= {color bars} {}P 0 -56 40 {} 20 -56 40 {}P 0 -57 20 {} 20 -57 20 {}P 0 -58 0 {} 20 -58 0 {}P 0 -59 -20 {} 20 -59 -20 {}P 0 -60 -40 {} 20 -60 -40 @subgroup {sky} dominant @labellist {x} color= gray master= {labels} {sky (I)} -4 -63 0 @vectorlist {x} color= sky width= 4 master= {color bars} {}P 0 -64 40 {} 20 -64 40 {}P 0 -65 20 {} 20 -65 20 {}P 0 -66 0 {} 20 -66 0 {}P 0 -67 -20 {} 20 -67 -20 {}P 0 -68 -40 {} 20 -68 -40 @subgroup {blue} dominant @labellist {x} color= gray master= {labels} {blue (J)} -4 -71 0 @vectorlist {x} color= blue width= 4 master= {color bars} {}P 0 -72 40 {} 20 -72 40 {}P 0 -73 20 {} 20 -73 20 {}P 0 -74 0 {} 20 -74 0 {}P 0 -75 -20 {} 20 -75 -20 {}P 0 -76 -40 {} 20 -76 -40 @subgroup {purple} dominant @labellist {x} color= gray master= {labels} {purple (K)} -4 -79 0 @vectorlist {x} color= purple width= 4 master= {color bars} {}P 0 -80 40 {} 20 -80 40 {}P 0 -81 20 {} 20 -81 20 {}P 0 -82 0 {} 20 -82 0 {}P 0 -83 -20 {} 20 -83 -20 {}P 0 -84 -40 {} 20 -84 -40 @subgroup {magenta} dominant @labellist {x} color= gray master= {labels} {magenta (L)} -4 -87 0 @vectorlist {x} color= magenta width= 4 master= {color bars} {}P 0 -88 40 {} 20 -88 40 {}P 0 -89 20 {} 20 -89 20 {}P 0 -90 0 {} 20 -90 0 {}P 0 -91 -20 {} 20 -91 -20 {}P 0 -92 -40 {} 20 -92 -40 @subgroup {hotpink} dominant @labellist {x} color= gray master= {labels} {hotpink (M)} -4 -95 0 @vectorlist {x} color= hotpink width= 4 master= {color bars} {}P 0 -96 40 {} 20 -96 40 {}P 0 -97 20 {} 20 -97 20 {}P 0 -98 0 {} 20 -98 0 {}P 0 -99 -20 {} 20 -99 -20 {}P 0 -100 -40 {} 20 -100 -40 @group {semi-sat} dominant @subgroup {pink} dominant @labellist {x} color= gray master= {labels} {pink (N)} 21 1 0 @vectorlist {x} color= pink width= 4 master= {color bars} {}P 25 0 40 {} 45 0 40 {}P 25 -1 20 {} 45 -1 20 {}P 25 -2 0 {} 45 -2 0 {}P 25 -3 -20 {} 45 -3 -20 {}P 25 -4 -40 {} 45 -4 -40 @subgroup {peach} dominant @labellist {x} color= gray master= {labels} {peach (P)} 21 -7 0 @vectorlist {x} color= peach width= 4 master= {color bars} {}P 25 -8 40 {} 45 -8 40 {}P 25 -9 20 {} 45 -9 20 {}P 25 -10 0 {} 45 -10 0 {}P 25 -11 -20 {} 45 -11 -20 {}P 25 -12 -40 {} 45 -12 -40 @subgroup {yellow} dominant master= {duplicates} @labellist {x} color= gray master= {labels} {yellow (duplicate)} 21 -23 0 @vectorlist {x} color= yellow width= 4 master= {color bars} {}P 25 -24 40 {} 45 -24 40 {}P 25 -25 20 {} 45 -25 20 {}P 25 -26 0 {} 45 -26 0 {}P 25 -27 -20 {} 45 -27 -20 {}P 25 -28 -40 {} 45 -28 -40 @subgroup {sea} dominant master= {duplicates} @labellist {x} color= gray master= {labels} {sea (duplicate)} 21 -39 0 @vectorlist {x} color= sea width= 4 master= {color bars} {}P 25 -40 40 {} 45 -40 40 {}P 25 -41 20 {} 45 -41 20 {}P 25 -42 0 {} 45 -42 0 {}P 25 -43 -20 {} 45 -43 -20 {}P 25 -44 -40 {} 45 -44 -40 @subgroup {sky} dominant master= {duplicates} @labellist {x} color= gray master= {labels} {sky (duplicate)} 21 -71 0 @vectorlist {x} color= sky width= 4 master= {color bars} {}P 25 -72 40 {} 45 -72 40 {}P 25 -73 20 {} 45 -73 20 {}P 25 -74 0 {} 45 -74 0 {}P 25 -75 -20 {} 45 -75 -20 {}P 25 -76 -40 {} 45 -76 -40 @subgroup {lilac} dominant @labellist {x} color= gray master= {labels} {lilac (O)} 21 -79 0 @vectorlist {x} color= lilac width= 4 master= {color bars} {}P 25 -80 40 {} 45 -80 40 {}P 25 -81 20 {} 45 -81 20 {}P 25 -82 0 {} 45 -82 0 {}P 25 -83 -20 {} 45 -83 -20 {}P 25 -84 -40 {} 45 -84 -40 @group {pastels} dominant @subgroup {pinktint} dominant @labellist {x} color= gray master= {labels} {pinktint (V)} 46 1 0 @vectorlist {x} color= pinktint width= 4 master= {color bars} {}P 50 0 40 {} 70 0 40 {}P 50 -1 20 {} 70 -1 20 {}P 50 -2 0 {} 70 -2 0 {}P 50 -3 -20 {} 70 -3 -20 {}P 50 -4 -40 {} 70 -4 -40 @subgroup {peachtint} dominant @labellist {x} color= gray master= {labels} {peachtint (Q)} 46 -7 0 @vectorlist {x} color= peachtint width= 4 master= {color bars} {}P 50 -8 40 {} 70 -8 40 {}P 50 -9 20 {} 70 -9 20 {}P 50 -10 0 {} 70 -10 0 {}P 50 -11 -20 {} 70 -11 -20 {}P 50 -12 -40 {} 70 -12 -40 @subgroup {yellowtint} dominant @labellist {x} color= gray master= {labels} {yellowtint (R)} 46 -23 0 @vectorlist {x} color= yellowtint width= 4 master= {color bars} {}P 50 -24 40 {} 70 -24 40 {}P 50 -25 20 {} 70 -25 20 {}P 50 -26 0 {} 70 -26 0 {}P 50 -27 -20 {} 70 -27 -20 {}P 50 -28 -40 {} 70 -28 -40 @subgroup {greentint} dominant @labellist {x} color= gray master= {labels} {greentint (S)} 46 -39 0 @vectorlist {x} color= greentint width= 4 master= {color bars} {}P 50 -40 40 {} 70 -40 40 {}P 50 -41 20 {} 70 -41 20 {}P 50 -42 0 {} 70 -42 0 {}P 50 -43 -20 {} 70 -43 -20 {}P 50 -44 -40 {} 70 -44 -40 @subgroup {bluetint} dominant @labellist {x} color= gray master= {labels} {bluetint (T)} 46 -71 0 @vectorlist {x} color= bluetint width= 4 master= {color bars} {}P 50 -72 40 {} 70 -72 40 {}P 50 -73 20 {} 70 -73 20 {}P 50 -74 0 {} 70 -74 0 {}P 50 -75 -20 {} 70 -75 -20 {}P 50 -76 -40 {} 70 -76 -40 @subgroup {lilactint} dominant @labellist {x} color= gray master= {labels} {lilactint (U)} 46 -79 0 @vectorlist {x} color= lilactint width= 4 master= {color bars} {}P 50 -80 40 {} 70 -80 40 {}P 50 -81 20 {} 70 -81 20 {}P 50 -82 0 {} 70 -82 0 {}P 50 -83 -20 {} 70 -83 -20 {}P 50 -84 -40 {} 70 -84 -40 @group {neutrals} dominant @subgroup {white} dominant @labellist {x} color= gray master= {labels} {white (W)} 71 -47 0 @vectorlist {x} color= white width= 4 master= {color bars} {}P 75 -48 40 {} 95 -48 40 {}P 75 -49 20 {} 95 -49 20 {}P 75 -50 0 {} 95 -50 0 {}P 75 -51 -20 {} 95 -51 -20 {}P 75 -52 -40 {} 95 -52 -40 @subgroup {gray} dominant @labellist {x} color= gray master= {labels} {gray (X)} 71 -55 0 @vectorlist {x} color= gray width= 4 master= {color bars} {}P 75 -56 40 {} 95 -56 40 {}P 75 -57 20 {} 95 -57 20 {}P 75 -58 0 {} 95 -58 0 {}P 75 -59 -20 {} 95 -59 -20 {}P 75 -60 -40 {} 95 -60 -40 @subgroup {brown} dominant @labellist {x} color= gray master= {labels} {brown (Y)} 71 -63 0 @vectorlist {x} color= brown width= 4 master= {color bars} {}P 75 -64 40 {} 95 -64 40 {}P 75 -65 20 {} 95 -65 20 {}P 75 -66 0 {} 95 -66 0 {}P 75 -67 -20 {} 95 -67 -20 {}P 75 -68 -40 {} 95 -68 -40 @subgroup {invisible} dominant @labellist {x} color= gray master= {labels} {invisible (Z)} 71 -79 0 @vectorlist {x} color= invisible width= 4 master= {color bars} {}P 75 -80 40 {} 95 -80 40 {}P 75 -81 20 {} 95 -81 20 {}P 75 -82 0 {} 95 -82 0 {}P 75 -83 -20 {} 95 -83 -20 {}P 75 -84 -40 {} 95 -84 -40 @subgroup {deadwhite} dominant @labellist {x} color= gray master= {labels} {deadwhite} 71 -87 0 @vectorlist {x} color= deadwhite width= 4 master= {color bars} {}P 75 -88 40 {} 95 -88 40 {}P 75 -89 20 {} 95 -89 20 {}P 75 -90 0 {} 95 -90 0 {}P 75 -91 -20 {} 95 -91 -20 {}P 75 -92 -40 {} 95 -92 -40 @subgroup {deadblack} dominant @labellist {x} color= gray master= {labels} {deadblack} 71 -95 0 @vectorlist {x} color= deadblack width= 4 master= {color bars} {}P 75 -96 40 {} 95 -96 40 {}P 75 -97 20 {} 95 -97 20 {}P 75 -98 0 {} 95 -98 0 {}P 75 -99 -20 {} 95 -99 -20 {}P 75 -100 -40 {} 95 -100 -40 @group {col labels} dominant @subgroup {col labels} @labellist {x} color= white {saturated colors} 0 -105 0 {semi-sat. colors} 25 -105 0 {pastel colors} 50 -105 0 {neutral colors} 75 -105 0 king-2.21.120420/king/resource/king/kins/cone.kin0000644000000000000000000004003411531212640017711 0ustar rootroot@text For general notes on color usage in kinemages, please refer to the palette kinemage. This kinemage is intended to illustrate an HSV "color cone", using the Mage/KiNG palette, where Euclidean distance is approximately proportional to perceptual distance. Coordinates are calculated as follows: x = sin(hue) * saturation * (value/100) y = cos(hue) * saturation * (value/100) z = value where hue is 0 - 360 degrees, saturation is 0 - 100, and value is 0 - 100. The cone narrows because HSV = (a, b, 0) is black, regardless of a and b, but white is HSV = (a, 0, 100). @kinemage 1 @onewidth @group {black} dominant animate @subgroup {black} @balllist {black} radius= 2.5 {red} red 0.0 100.0 100.0 {orange} orange 34.202 93.9693 100.0 {gold} gold 64.2788 76.6044 100.0 {yellow} yellow 86.6025 50.0 100.0 {lime} lime 98.4808 17.3648 100.0 {green} green 69.282 -40.0 100.0 {sea} sea 50.0 -86.6025 100.0 {cyan} cyan 0.0 -85.0 85.0 {sky} sky -35.625 -61.7043 95.0 {blue} blue -60.6218 -35.0 100.0 {purple} purple -74.7146 6.5367 100.0 {magenta} magenta -82.2724 47.5 100.0 {hotpink} hotpink -42.2618 90.6308 100.0 {pink} pink -9.5506 54.1644 100.0 {peach} peach 31.6964 67.9731 100.0 {lilac} lilac -54.7907 4.7936 100.0 {pinktint} pinktint -10.2606 28.1908 100.0 {peachtint} peachtint 21.1309 45.3154 100.0 {yellowtint} yellowtint 43.3013 25.0 100.0 {greentint} greentint 28.2843 -28.2843 100.0 {bluetint} bluetint -25.7115 -30.6418 100.0 {lilactint} lilactint -34.8668 3.0505 100.0 {white} white 0.0 0.0 100.0 {gray} gray 0.0 0.0 50.0 {brown} brown 11.5432 31.7146 75.0 {deadblack} deadblack 0.0 0.0 0.0 @group {white} dominant animate @subgroup {white} @balllist {white} radius= 2.5 {red} red 0.0 80.0 80.0 {orange} orange 30.7818 84.5723 90.0 {gold} gold 57.8509 68.944 90.0 {yellow} yellow 77.9423 45.0 90.0 {lime} lime 83.7087 14.7601 85.0 {green} green 58.4567 -33.75 75.0 {sea} sea 42.5 -73.6122 85.0 {cyan} cyan 0.0 -68.0 80.0 {sky} sky -36.0 -62.3538 90.0 {blue} blue -69.282 -40.0 100.0 {purple} purple -84.6765 7.4082 85.0 {magenta} magenta -77.9423 45.0 90.0 {hotpink} hotpink -38.0356 81.5677 90.0 {pink} pink -11.7213 66.4745 90.0 {peach} peach 28.5267 61.1758 90.0 {lilac} lilac -59.7717 5.2293 80.0 {pinktint} pinktint -18.8111 51.6831 55.0 {peachtint} peachtint 25.3571 54.3785 60.0 {yellowtint} yellowtint 64.9519 37.5 75.0 {greentint} greentint 24.7487 -24.7487 35.0 {bluetint} bluetint -32.1394 -38.3022 50.0 {lilactint} lilactint -44.8288 3.922 45.0 {white} white 0.0 0.0 0.0 {gray} gray 0.0 0.0 40.0 {brown} brown 8.465 23.2574 55.0 {deadwhite} deadwhite 0.0 0.0 100.0 @group {axes} dominant @subgroup {value} @vectorlist {axes} color= gray {value = 0} P 0 0 0 {value = 100} 0 0 100 @labellist {labels} color= gray {0% value} 0 -6 0 {25% value} 0 -3 25 {50% value} 0 0 50 {75% value} 0 3 75 {100% value} 0 6 100 @subgroup {saturation} @labellist {x} color= gray {100% sat.} 102 5 100 {100% sat.} 77 -5 75 {100% sat.} 52 -5 50 {100% sat.} 27 -5 25 {75% sat.} 77 5 100 {50% sat.} 52 5 100 {25% sat.} 27 5 100 @vectorlist {100% saturation} color= gray {100% saturation} 0.0 100.0 100.0 {"} 8.7156 99.6195 100.0 {"} 17.3648 98.4808 100.0 {"} 25.8819 96.5926 100.0 {"} 34.202 93.9693 100.0 {"} 42.2618 90.6308 100.0 {"} 50.0 86.6025 100.0 {"} 57.3576 81.9152 100.0 {"} 64.2788 76.6044 100.0 {"} 70.7107 70.7107 100.0 {"} 76.6044 64.2788 100.0 {"} 81.9152 57.3576 100.0 {"} 86.6025 50.0 100.0 {"} 90.6308 42.2618 100.0 {"} 93.9693 34.202 100.0 {"} 96.5926 25.8819 100.0 {"} 98.4808 17.3648 100.0 {"} 99.6195 8.7156 100.0 {"} 100.0 0.0 100.0 {"} 99.6195 -8.7156 100.0 {"} 98.4808 -17.3648 100.0 {"} 96.5926 -25.8819 100.0 {"} 93.9693 -34.202 100.0 {"} 90.6308 -42.2618 100.0 {"} 86.6025 -50.0 100.0 {"} 81.9152 -57.3576 100.0 {"} 76.6044 -64.2788 100.0 {"} 70.7107 -70.7107 100.0 {"} 64.2788 -76.6044 100.0 {"} 57.3576 -81.9152 100.0 {"} 50.0 -86.6025 100.0 {"} 42.2618 -90.6308 100.0 {"} 34.202 -93.9693 100.0 {"} 25.8819 -96.5926 100.0 {"} 17.3648 -98.4808 100.0 {"} 8.7156 -99.6195 100.0 {"} 0.0 -100.0 100.0 {"} -8.7156 -99.6195 100.0 {"} -17.3648 -98.4808 100.0 {"} -25.8819 -96.5926 100.0 {"} -34.202 -93.9693 100.0 {"} -42.2618 -90.6308 100.0 {"} -50.0 -86.6025 100.0 {"} -57.3576 -81.9152 100.0 {"} -64.2788 -76.6044 100.0 {"} -70.7107 -70.7107 100.0 {"} -76.6044 -64.2788 100.0 {"} -81.9152 -57.3576 100.0 {"} -86.6025 -50.0 100.0 {"} -90.6308 -42.2618 100.0 {"} -93.9693 -34.202 100.0 {"} -96.5926 -25.8819 100.0 {"} -98.4808 -17.3648 100.0 {"} -99.6195 -8.7156 100.0 {"} -100.0 -0.0 100.0 {"} -99.6195 8.7156 100.0 {"} -98.4808 17.3648 100.0 {"} -96.5926 25.8819 100.0 {"} -93.9693 34.202 100.0 {"} -90.6308 42.2618 100.0 {"} -86.6025 50.0 100.0 {"} -81.9152 57.3576 100.0 {"} -76.6044 64.2788 100.0 {"} -70.7107 70.7107 100.0 {"} -64.2788 76.6044 100.0 {"} -57.3576 81.9152 100.0 {"} -50.0 86.6025 100.0 {"} -42.2618 90.6308 100.0 {"} -34.202 93.9693 100.0 {"} -25.8819 96.5926 100.0 {"} -17.3648 98.4808 100.0 {"} -8.7156 99.6195 100.0 {"} -0.0 100.0 100.0 @vectorlist {100% saturation} color= gray {100% saturation} 0.0 75.0 75.0 {"} 6.5367 74.7146 75.0 {"} 13.0236 73.8606 75.0 {"} 19.4114 72.4444 75.0 {"} 25.6515 70.4769 75.0 {"} 31.6964 67.9731 75.0 {"} 37.5 64.9519 75.0 {"} 43.0182 61.4364 75.0 {"} 48.2091 57.4533 75.0 {"} 53.033 53.033 75.0 {"} 57.4533 48.2091 75.0 {"} 61.4364 43.0182 75.0 {"} 64.9519 37.5 75.0 {"} 67.9731 31.6964 75.0 {"} 70.4769 25.6515 75.0 {"} 72.4444 19.4114 75.0 {"} 73.8606 13.0236 75.0 {"} 74.7146 6.5367 75.0 {"} 75.0 0.0 75.0 {"} 74.7146 -6.5367 75.0 {"} 73.8606 -13.0236 75.0 {"} 72.4444 -19.4114 75.0 {"} 70.4769 -25.6515 75.0 {"} 67.9731 -31.6964 75.0 {"} 64.9519 -37.5 75.0 {"} 61.4364 -43.0182 75.0 {"} 57.4533 -48.2091 75.0 {"} 53.033 -53.033 75.0 {"} 48.2091 -57.4533 75.0 {"} 43.0182 -61.4364 75.0 {"} 37.5 -64.9519 75.0 {"} 31.6964 -67.9731 75.0 {"} 25.6515 -70.4769 75.0 {"} 19.4114 -72.4444 75.0 {"} 13.0236 -73.8606 75.0 {"} 6.5367 -74.7146 75.0 {"} 0.0 -75.0 75.0 {"} -6.5367 -74.7146 75.0 {"} -13.0236 -73.8606 75.0 {"} -19.4114 -72.4444 75.0 {"} -25.6515 -70.4769 75.0 {"} -31.6964 -67.9731 75.0 {"} -37.5 -64.9519 75.0 {"} -43.0182 -61.4364 75.0 {"} -48.2091 -57.4533 75.0 {"} -53.033 -53.033 75.0 {"} -57.4533 -48.2091 75.0 {"} -61.4364 -43.0182 75.0 {"} -64.9519 -37.5 75.0 {"} -67.9731 -31.6964 75.0 {"} -70.4769 -25.6515 75.0 {"} -72.4444 -19.4114 75.0 {"} -73.8606 -13.0236 75.0 {"} -74.7146 -6.5367 75.0 {"} -75.0 -0.0 75.0 {"} -74.7146 6.5367 75.0 {"} -73.8606 13.0236 75.0 {"} -72.4444 19.4114 75.0 {"} -70.4769 25.6515 75.0 {"} -67.9731 31.6964 75.0 {"} -64.9519 37.5 75.0 {"} -61.4364 43.0182 75.0 {"} -57.4533 48.2091 75.0 {"} -53.033 53.033 75.0 {"} -48.2091 57.4533 75.0 {"} -43.0182 61.4364 75.0 {"} -37.5 64.9519 75.0 {"} -31.6964 67.9731 75.0 {"} -25.6515 70.4769 75.0 {"} -19.4114 72.4444 75.0 {"} -13.0236 73.8606 75.0 {"} -6.5367 74.7146 75.0 {"} -0.0 75.0 75.0 @vectorlist {100% saturation} color= gray {100% saturation} 0.0 50.0 50.0 {"} 4.3578 49.8097 50.0 {"} 8.6824 49.2404 50.0 {"} 12.941 48.2963 50.0 {"} 17.101 46.9846 50.0 {"} 21.1309 45.3154 50.0 {"} 25.0 43.3013 50.0 {"} 28.6788 40.9576 50.0 {"} 32.1394 38.3022 50.0 {"} 35.3553 35.3553 50.0 {"} 38.3022 32.1394 50.0 {"} 40.9576 28.6788 50.0 {"} 43.3013 25.0 50.0 {"} 45.3154 21.1309 50.0 {"} 46.9846 17.101 50.0 {"} 48.2963 12.941 50.0 {"} 49.2404 8.6824 50.0 {"} 49.8097 4.3578 50.0 {"} 50.0 0.0 50.0 {"} 49.8097 -4.3578 50.0 {"} 49.2404 -8.6824 50.0 {"} 48.2963 -12.941 50.0 {"} 46.9846 -17.101 50.0 {"} 45.3154 -21.1309 50.0 {"} 43.3013 -25.0 50.0 {"} 40.9576 -28.6788 50.0 {"} 38.3022 -32.1394 50.0 {"} 35.3553 -35.3553 50.0 {"} 32.1394 -38.3022 50.0 {"} 28.6788 -40.9576 50.0 {"} 25.0 -43.3013 50.0 {"} 21.1309 -45.3154 50.0 {"} 17.101 -46.9846 50.0 {"} 12.941 -48.2963 50.0 {"} 8.6824 -49.2404 50.0 {"} 4.3578 -49.8097 50.0 {"} 0.0 -50.0 50.0 {"} -4.3578 -49.8097 50.0 {"} -8.6824 -49.2404 50.0 {"} -12.941 -48.2963 50.0 {"} -17.101 -46.9846 50.0 {"} -21.1309 -45.3154 50.0 {"} -25.0 -43.3013 50.0 {"} -28.6788 -40.9576 50.0 {"} -32.1394 -38.3022 50.0 {"} -35.3553 -35.3553 50.0 {"} -38.3022 -32.1394 50.0 {"} -40.9576 -28.6788 50.0 {"} -43.3013 -25.0 50.0 {"} -45.3154 -21.1309 50.0 {"} -46.9846 -17.101 50.0 {"} -48.2963 -12.941 50.0 {"} -49.2404 -8.6824 50.0 {"} -49.8097 -4.3578 50.0 {"} -50.0 -0.0 50.0 {"} -49.8097 4.3578 50.0 {"} -49.2404 8.6824 50.0 {"} -48.2963 12.941 50.0 {"} -46.9846 17.101 50.0 {"} -45.3154 21.1309 50.0 {"} -43.3013 25.0 50.0 {"} -40.9576 28.6788 50.0 {"} -38.3022 32.1394 50.0 {"} -35.3553 35.3553 50.0 {"} -32.1394 38.3022 50.0 {"} -28.6788 40.9576 50.0 {"} -25.0 43.3013 50.0 {"} -21.1309 45.3154 50.0 {"} -17.101 46.9846 50.0 {"} -12.941 48.2963 50.0 {"} -8.6824 49.2404 50.0 {"} -4.3578 49.8097 50.0 {"} -0.0 50.0 50.0 @vectorlist {100% saturation} color= gray {100% saturation} 0.0 25.0 25.0 {"} 2.1789 24.9049 25.0 {"} 4.3412 24.6202 25.0 {"} 6.4705 24.1481 25.0 {"} 8.5505 23.4923 25.0 {"} 10.5655 22.6577 25.0 {"} 12.5 21.6506 25.0 {"} 14.3394 20.4788 25.0 {"} 16.0697 19.1511 25.0 {"} 17.6777 17.6777 25.0 {"} 19.1511 16.0697 25.0 {"} 20.4788 14.3394 25.0 {"} 21.6506 12.5 25.0 {"} 22.6577 10.5655 25.0 {"} 23.4923 8.5505 25.0 {"} 24.1481 6.4705 25.0 {"} 24.6202 4.3412 25.0 {"} 24.9049 2.1789 25.0 {"} 25.0 0.0 25.0 {"} 24.9049 -2.1789 25.0 {"} 24.6202 -4.3412 25.0 {"} 24.1481 -6.4705 25.0 {"} 23.4923 -8.5505 25.0 {"} 22.6577 -10.5655 25.0 {"} 21.6506 -12.5 25.0 {"} 20.4788 -14.3394 25.0 {"} 19.1511 -16.0697 25.0 {"} 17.6777 -17.6777 25.0 {"} 16.0697 -19.1511 25.0 {"} 14.3394 -20.4788 25.0 {"} 12.5 -21.6506 25.0 {"} 10.5655 -22.6577 25.0 {"} 8.5505 -23.4923 25.0 {"} 6.4705 -24.1481 25.0 {"} 4.3412 -24.6202 25.0 {"} 2.1789 -24.9049 25.0 {"} 0.0 -25.0 25.0 {"} -2.1789 -24.9049 25.0 {"} -4.3412 -24.6202 25.0 {"} -6.4705 -24.1481 25.0 {"} -8.5505 -23.4923 25.0 {"} -10.5655 -22.6577 25.0 {"} -12.5 -21.6506 25.0 {"} -14.3394 -20.4788 25.0 {"} -16.0697 -19.1511 25.0 {"} -17.6777 -17.6777 25.0 {"} -19.1511 -16.0697 25.0 {"} -20.4788 -14.3394 25.0 {"} -21.6506 -12.5 25.0 {"} -22.6577 -10.5655 25.0 {"} -23.4923 -8.5505 25.0 {"} -24.1481 -6.4705 25.0 {"} -24.6202 -4.3412 25.0 {"} -24.9049 -2.1789 25.0 {"} -25.0 -0.0 25.0 {"} -24.9049 2.1789 25.0 {"} -24.6202 4.3412 25.0 {"} -24.1481 6.4705 25.0 {"} -23.4923 8.5505 25.0 {"} -22.6577 10.5655 25.0 {"} -21.6506 12.5 25.0 {"} -20.4788 14.3394 25.0 {"} -19.1511 16.0697 25.0 {"} -17.6777 17.6777 25.0 {"} -16.0697 19.1511 25.0 {"} -14.3394 20.4788 25.0 {"} -12.5 21.6506 25.0 {"} -10.5655 22.6577 25.0 {"} -8.5505 23.4923 25.0 {"} -6.4705 24.1481 25.0 {"} -4.3412 24.6202 25.0 {"} -2.1789 24.9049 25.0 {"} -0.0 25.0 25.0 @vectorlist {75% saturation} color= gray {75% saturation} 0.0 75.0 100.0 {"} 6.5367 74.7146 100.0 {"} 13.0236 73.8606 100.0 {"} 19.4114 72.4444 100.0 {"} 25.6515 70.4769 100.0 {"} 31.6964 67.9731 100.0 {"} 37.5 64.9519 100.0 {"} 43.0182 61.4364 100.0 {"} 48.2091 57.4533 100.0 {"} 53.033 53.033 100.0 {"} 57.4533 48.2091 100.0 {"} 61.4364 43.0182 100.0 {"} 64.9519 37.5 100.0 {"} 67.9731 31.6964 100.0 {"} 70.4769 25.6515 100.0 {"} 72.4444 19.4114 100.0 {"} 73.8606 13.0236 100.0 {"} 74.7146 6.5367 100.0 {"} 75.0 0.0 100.0 {"} 74.7146 -6.5367 100.0 {"} 73.8606 -13.0236 100.0 {"} 72.4444 -19.4114 100.0 {"} 70.4769 -25.6515 100.0 {"} 67.9731 -31.6964 100.0 {"} 64.9519 -37.5 100.0 {"} 61.4364 -43.0182 100.0 {"} 57.4533 -48.2091 100.0 {"} 53.033 -53.033 100.0 {"} 48.2091 -57.4533 100.0 {"} 43.0182 -61.4364 100.0 {"} 37.5 -64.9519 100.0 {"} 31.6964 -67.9731 100.0 {"} 25.6515 -70.4769 100.0 {"} 19.4114 -72.4444 100.0 {"} 13.0236 -73.8606 100.0 {"} 6.5367 -74.7146 100.0 {"} 0.0 -75.0 100.0 {"} -6.5367 -74.7146 100.0 {"} -13.0236 -73.8606 100.0 {"} -19.4114 -72.4444 100.0 {"} -25.6515 -70.4769 100.0 {"} -31.6964 -67.9731 100.0 {"} -37.5 -64.9519 100.0 {"} -43.0182 -61.4364 100.0 {"} -48.2091 -57.4533 100.0 {"} -53.033 -53.033 100.0 {"} -57.4533 -48.2091 100.0 {"} -61.4364 -43.0182 100.0 {"} -64.9519 -37.5 100.0 {"} -67.9731 -31.6964 100.0 {"} -70.4769 -25.6515 100.0 {"} -72.4444 -19.4114 100.0 {"} -73.8606 -13.0236 100.0 {"} -74.7146 -6.5367 100.0 {"} -75.0 -0.0 100.0 {"} -74.7146 6.5367 100.0 {"} -73.8606 13.0236 100.0 {"} -72.4444 19.4114 100.0 {"} -70.4769 25.6515 100.0 {"} -67.9731 31.6964 100.0 {"} -64.9519 37.5 100.0 {"} -61.4364 43.0182 100.0 {"} -57.4533 48.2091 100.0 {"} -53.033 53.033 100.0 {"} -48.2091 57.4533 100.0 {"} -43.0182 61.4364 100.0 {"} -37.5 64.9519 100.0 {"} -31.6964 67.9731 100.0 {"} -25.6515 70.4769 100.0 {"} -19.4114 72.4444 100.0 {"} -13.0236 73.8606 100.0 {"} -6.5367 74.7146 100.0 {"} -0.0 75.0 100.0 @vectorlist {50% saturation} color= gray {50% saturation} 0.0 50.0 100.0 {"} 4.3578 49.8097 100.0 {"} 8.6824 49.2404 100.0 {"} 12.941 48.2963 100.0 {"} 17.101 46.9846 100.0 {"} 21.1309 45.3154 100.0 {"} 25.0 43.3013 100.0 {"} 28.6788 40.9576 100.0 {"} 32.1394 38.3022 100.0 {"} 35.3553 35.3553 100.0 {"} 38.3022 32.1394 100.0 {"} 40.9576 28.6788 100.0 {"} 43.3013 25.0 100.0 {"} 45.3154 21.1309 100.0 {"} 46.9846 17.101 100.0 {"} 48.2963 12.941 100.0 {"} 49.2404 8.6824 100.0 {"} 49.8097 4.3578 100.0 {"} 50.0 0.0 100.0 {"} 49.8097 -4.3578 100.0 {"} 49.2404 -8.6824 100.0 {"} 48.2963 -12.941 100.0 {"} 46.9846 -17.101 100.0 {"} 45.3154 -21.1309 100.0 {"} 43.3013 -25.0 100.0 {"} 40.9576 -28.6788 100.0 {"} 38.3022 -32.1394 100.0 {"} 35.3553 -35.3553 100.0 {"} 32.1394 -38.3022 100.0 {"} 28.6788 -40.9576 100.0 {"} 25.0 -43.3013 100.0 {"} 21.1309 -45.3154 100.0 {"} 17.101 -46.9846 100.0 {"} 12.941 -48.2963 100.0 {"} 8.6824 -49.2404 100.0 {"} 4.3578 -49.8097 100.0 {"} 0.0 -50.0 100.0 {"} -4.3578 -49.8097 100.0 {"} -8.6824 -49.2404 100.0 {"} -12.941 -48.2963 100.0 {"} -17.101 -46.9846 100.0 {"} -21.1309 -45.3154 100.0 {"} -25.0 -43.3013 100.0 {"} -28.6788 -40.9576 100.0 {"} -32.1394 -38.3022 100.0 {"} -35.3553 -35.3553 100.0 {"} -38.3022 -32.1394 100.0 {"} -40.9576 -28.6788 100.0 {"} -43.3013 -25.0 100.0 {"} -45.3154 -21.1309 100.0 {"} -46.9846 -17.101 100.0 {"} -48.2963 -12.941 100.0 {"} -49.2404 -8.6824 100.0 {"} -49.8097 -4.3578 100.0 {"} -50.0 -0.0 100.0 {"} -49.8097 4.3578 100.0 {"} -49.2404 8.6824 100.0 {"} -48.2963 12.941 100.0 {"} -46.9846 17.101 100.0 {"} -45.3154 21.1309 100.0 {"} -43.3013 25.0 100.0 {"} -40.9576 28.6788 100.0 {"} -38.3022 32.1394 100.0 {"} -35.3553 35.3553 100.0 {"} -32.1394 38.3022 100.0 {"} -28.6788 40.9576 100.0 {"} -25.0 43.3013 100.0 {"} -21.1309 45.3154 100.0 {"} -17.101 46.9846 100.0 {"} -12.941 48.2963 100.0 {"} -8.6824 49.2404 100.0 {"} -4.3578 49.8097 100.0 {"} -0.0 50.0 100.0 @vectorlist {25% saturation} color= gray {25% saturation} 0.0 25.0 100.0 {"} 2.1789 24.9049 100.0 {"} 4.3412 24.6202 100.0 {"} 6.4705 24.1481 100.0 {"} 8.5505 23.4923 100.0 {"} 10.5655 22.6577 100.0 {"} 12.5 21.6506 100.0 {"} 14.3394 20.4788 100.0 {"} 16.0697 19.1511 100.0 {"} 17.6777 17.6777 100.0 {"} 19.1511 16.0697 100.0 {"} 20.4788 14.3394 100.0 {"} 21.6506 12.5 100.0 {"} 22.6577 10.5655 100.0 {"} 23.4923 8.5505 100.0 {"} 24.1481 6.4705 100.0 {"} 24.6202 4.3412 100.0 {"} 24.9049 2.1789 100.0 {"} 25.0 0.0 100.0 {"} 24.9049 -2.1789 100.0 {"} 24.6202 -4.3412 100.0 {"} 24.1481 -6.4705 100.0 {"} 23.4923 -8.5505 100.0 {"} 22.6577 -10.5655 100.0 {"} 21.6506 -12.5 100.0 {"} 20.4788 -14.3394 100.0 {"} 19.1511 -16.0697 100.0 {"} 17.6777 -17.6777 100.0 {"} 16.0697 -19.1511 100.0 {"} 14.3394 -20.4788 100.0 {"} 12.5 -21.6506 100.0 {"} 10.5655 -22.6577 100.0 {"} 8.5505 -23.4923 100.0 {"} 6.4705 -24.1481 100.0 {"} 4.3412 -24.6202 100.0 {"} 2.1789 -24.9049 100.0 {"} 0.0 -25.0 100.0 {"} -2.1789 -24.9049 100.0 {"} -4.3412 -24.6202 100.0 {"} -6.4705 -24.1481 100.0 {"} -8.5505 -23.4923 100.0 {"} -10.5655 -22.6577 100.0 {"} -12.5 -21.6506 100.0 {"} -14.3394 -20.4788 100.0 {"} -16.0697 -19.1511 100.0 {"} -17.6777 -17.6777 100.0 {"} -19.1511 -16.0697 100.0 {"} -20.4788 -14.3394 100.0 {"} -21.6506 -12.5 100.0 {"} -22.6577 -10.5655 100.0 {"} -23.4923 -8.5505 100.0 {"} -24.1481 -6.4705 100.0 {"} -24.6202 -4.3412 100.0 {"} -24.9049 -2.1789 100.0 {"} -25.0 -0.0 100.0 {"} -24.9049 2.1789 100.0 {"} -24.6202 4.3412 100.0 {"} -24.1481 6.4705 100.0 {"} -23.4923 8.5505 100.0 {"} -22.6577 10.5655 100.0 {"} -21.6506 12.5 100.0 {"} -20.4788 14.3394 100.0 {"} -19.1511 16.0697 100.0 {"} -17.6777 17.6777 100.0 {"} -16.0697 19.1511 100.0 {"} -14.3394 20.4788 100.0 {"} -12.5 21.6506 100.0 {"} -10.5655 22.6577 100.0 {"} -8.5505 23.4923 100.0 {"} -6.4705 24.1481 100.0 {"} -4.3412 24.6202 100.0 {"} -2.1789 24.9049 100.0 {"} -0.0 25.0 100.0 king-2.21.120420/king/resource/king/source_king_prefs0000644000000000000000000001131611531212644020755 0ustar rootroot# # Sample .king_prefs file # # This file contains all the settings used by KiNG, and all # the parameters are set to their default values. Edit this # file as necessary to customize the program's behavior. # # Any personalized version of this file should live # in your home directory, as follows: # Windows C:\Documents and Settings\USERNAME\.king_prefs # Mac OS X /Users/USERNAME/.king_prefs # Linux /home/USERNAME/.king_prefs # # KiNG stores your preferences in this file when you update # them with the Edit | Configure KiNG menu item; however, # many parameters can be set in this file that are not configureable # from the graphical interface inside of KiNG. # # KiNG must be restarted for changes to take effect, and only # applications (NOT applets in web pages) will be affected. # # Lines that start with a hash (#) are comments and will be ignored. # Comments are NOT preserved by Java when saving preferences. # ###################################################################### ### LOOK & FEEL OPTIONS ############################################## ###################################################################### # Make this larger to increase the size of the fonts in the menus, etc. fontMagnification = 1.0 # Make this larger to decrease picking precision pickingRadius = 5 # Can user can pick lines and triangles directly instead of just pts? pickObjects = false # Make this larger to increase the size of swatches in the color picker colorSwatchSize = 20 # Change these to affect the size of point IDs, labels in the kinemage, # XYZ coords, etc. Big/small refers to Display | Big labels. # Sizes are in points. fontSizeSmall = 12 fontSizeBig = 24 # Open the text window behind the main window on startup? textOpenOnStart = true # Start with the text window editable? textDefaultAllowEdits = false # Empty text window when last kinemage is closed, even if changes were made? textEmptyIfAllKinsClosed = false # Size of the graphics window at startup; 0 means auto-determine graphicsWidth = 0 graphicsHeight = 0 # Should we enable OpenGL at startup by default? joglByDefault = true # Number of samples for OpenGL full-scene antialiasing (FSAA). 1 means off. joglNumSamples = 4 ###################################################################### ### DISPLAY OPTIONS ################################################## ###################################################################### # Show frame rate in stderr? writeFPS = false # Should the Measures tool calc the dot product between 1-2 and 3-4? measureVectorVectorAngle = false # The angle for stereo separation, in degrees. # Positive values are wall-eye, negative values are cross-eye. stereoAngle = 6.0 # How long to delay between frames when auto-animating, in msec. autoAnimateDelay = 1500 # These parameters control the auto-rock function. Cycle time in msec. autoRockDegrees = 5 autoRockCycleTime = 2000 autoRockCycleSteps = 20 ###################################################################### ### TOOL OPTIONS ##################################################### ###################################################################### # Resolution of exported images. # 1 is pixel-for-pixel, ~ 72 dpi # 4 is ~ 300 dpi imageExportMultiplier = 4 # Show the command line every time a remote update runs? showHelperCommand = false # Dump standard error from *successful* background runs? # (Errors from failed runs are always shown.) showHelperErrors = false # Dump standard output from *failed* background runs too? showHelperOutput = false # How long can a background job run before being killed? In seconds. helperTimeout = 15 # Use minimizable windows for tools? minimizableTools = false ###################################################################### ### TOOL MENU PLACEMENT ############################################## ###################################################################### king.BasicTool.menuName =
king.tool.edmap.EDMapPlugin.menuName = Structural biology king.tool.export.ImageExport.menuName = king.tool.export.PdfExport.menuName = king.tool.draw.DrawingTool.menuName =
king.tool.util.SelfUpdatePlugin.menuName =
king.tool.bondrot.SuiteRotationTool.menuName = Specialty ###################################################################### ### PROTECTION AND CONFIRMATION ###################################### ###################################################################### # Should we check for a new version at kinemage.biochem.duke.edu? checkNewVersion = true # Should we ask before deleting groups, etc. in the Modify pane? treeConfirmDelete = true # Should we ask before merging groups, etc. in the Modify pane? treeConfirmMerge = true king-2.21.120420/king/resource/king/buildnum.props0000644000000000000000000000007111744310052020221 0ustar rootroot#Fri, 20 Apr 2012 18:34:49 -0400 buildnum=20120420.1834 king-2.21.120420/king/resource/king/king_prefs0000644000000000000000000001147111744310052017375 0ustar rootroot# # Sample .king_prefs file # # This file contains all the settings used by KiNG, and all # the parameters are set to their default values. Edit this # file as necessary to customize the program's behavior. # # Any personalized version of this file should live # in your home directory, as follows: # Windows C:\Documents and Settings\USERNAME\.king_prefs # Mac OS X /Users/USERNAME/.king_prefs # Linux /home/USERNAME/.king_prefs # # KiNG stores your preferences in this file when you update # them with the Edit | Configure KiNG menu item; however, # many parameters can be set in this file that are not configureable # from the graphical interface inside of KiNG. # # KiNG must be restarted for changes to take effect, and only # applications (NOT applets in web pages) will be affected. # # Lines that start with a hash (#) are comments and will be ignored. # Comments are NOT preserved by Java when saving preferences. # ###################################################################### ### LOOK & FEEL OPTIONS ############################################## ###################################################################### # Make this larger to increase the size of the fonts in the menus, etc. fontMagnification = 1.0 # Make this larger to decrease picking precision pickingRadius = 5 # Can user can pick lines and triangles directly instead of just pts? pickObjects = false # Make this larger to increase the size of swatches in the color picker colorSwatchSize = 20 # Change these to affect the size of point IDs, labels in the kinemage, # XYZ coords, etc. Big/small refers to Display | Big labels. # Sizes are in points. fontSizeSmall = 12 fontSizeBig = 24 # Open the text window behind the main window on startup? textOpenOnStart = true # Start with the text window editable? textDefaultAllowEdits = false # Empty text window when last kinemage is closed, even if changes were made? textEmptyIfAllKinsClosed = false # Size of the graphics window at startup; 0 means auto-determine graphicsWidth = 0 graphicsHeight = 0 # Should we enable OpenGL at startup by default? joglByDefault = true # Number of samples for OpenGL full-scene antialiasing (FSAA). 1 means off. joglNumSamples = 4 ###################################################################### ### DISPLAY OPTIONS ################################################## ###################################################################### # Show frame rate in stderr? writeFPS = false # Should the Measures tool calc the dot product between 1-2 and 3-4? measureVectorVectorAngle = false # The angle for stereo separation, in degrees. # Positive values are wall-eye, negative values are cross-eye. stereoAngle = 6.0 # How long to delay between frames when auto-animating, in msec. autoAnimateDelay = 1500 # These parameters control the auto-rock function. Cycle time in msec. autoRockDegrees = 5 autoRockCycleTime = 2000 autoRockCycleSteps = 20 ###################################################################### ### TOOL OPTIONS ##################################################### ###################################################################### # Resolution of exported images. # 1 is pixel-for-pixel, ~ 72 dpi # 4 is ~ 300 dpi imageExportMultiplier = 4 # Show the command line every time a remote update runs? showHelperCommand = false # Dump standard error from *successful* background runs? # (Errors from failed runs are always shown.) showHelperErrors = false # Dump standard output from *failed* background runs too? showHelperOutput = false # How long can a background job run before being killed? In seconds. helperTimeout = 15 # Use minimizable windows for tools? minimizableTools = false ###################################################################### ### TOOL MENU PLACEMENT ############################################## ###################################################################### king.BasicTool.menuName =
king.tool.edmap.EDMapPlugin.menuName = Structural biology king.tool.export.ImageExport.menuName = king.tool.export.PdfExport.menuName = king.tool.draw.DrawingTool.menuName =
king.tool.util.SelfUpdatePlugin.menuName =
king.tool.bondrot.SuiteRotationTool.menuName = Specialty ###################################################################### ### PROTECTION AND CONFIRMATION ###################################### ###################################################################### # Should we check for a new version at kinemage.biochem.duke.edu? checkNewVersion = true # Should we ask before deleting groups, etc. in the Modify pane? treeConfirmDelete = true # Should we ask before merging groups, etc. in the Modify pane? treeConfirmMerge = true molikin.kingplugin.QuickinPlugin.menuName = molikin.kingplugin.MolikinPlugin.menuName = king-2.21.120420/king/resource/king/images/0000755000000000000000000000000011744310054016566 5ustar rootrootking-2.21.120420/king/resource/king/images/rotzm.png0000644000000000000000000000222711531212642020450 0ustar rootrootPNG  IHDR00WgAMABO pHYs  "tEXtSoftwareQuickTime 6.4 (Mac OS X)tIME +!mIDATxIhA_1.4crQ\AJ A=ŋB.xA A". B:Lb\B3dLuSߡUdUhۄW"kH;Rw@N E%V2(E!m\AMB:B"K}+BRr/`*ً4r] Un/,~d)6^RHa|}.s'#6͵yywP z d }ZO ~1x{h.{u_MҶaP}5SXվYV'TΥi}/"Ok2_ȥ#oI+h ~3G{{w#}ZX tRJ=X'!=  Po@O$2HQuNUwGhQx$OMs.$6Z]IxIIG(߀p[xaU zr)wзDJkGnN^ ρbqH $@"'+;y|lkk Z^xtĚp*J z2.Ɉ~پB l*=evAO2.t03ǃh) ^n d-OAlrMRGKE`Ц0~l"Lw5͂¦G6tj `4OA;M YMhQ=gRg2oM ȁ ͊E]2)ݍ&wŬj+֢: A],o?m+ V4d hf8eQvEO&1hښچZEy YM1H`)# A. <,T2XwiKڪG&5!ԍ"UH5tM{Fi7C`ۃD&>6"iDHLkj*&IENDB`king-2.21.120420/king/resource/king/images/StepForward16.gif0000644000000000000000000000031011531212642021654 0ustar rootrootGIF89aff33f!,@:X;A`8p`uH e]Nx.N6JD@-gJ!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;king-2.21.120420/king/resource/king/images/rotzp.png0000644000000000000000000000223011531212642020445 0ustar rootrootPNG  IHDR00WgAMABO pHYs  "tEXtSoftwareQuickTime 6.4 (Mac OS X)tIME +)R@_IDATxYIhA3fѨAEqԃ (J."7 nz1 *^TԈk nјE_jzOLw;H^x^~]U!= gy(-Jf=3ŒD9(l#|@q v10w313%NR:I9 gJt`oLgic*aWX SQH=V~#M[)Y40}!> 3-a6@Sy|JӨTKE; fJ-%Y6JtbNhj)*hJt3xX/ (r%Uz֦j\!RCS 2k,tYO@p+}R!.&J|LP~}/u)'9Q¸qwY4p#Tq{DM̯XECFvzqw١=v+ĽXY8.L]p[_m5t{p;wgC]v%0Kdj1v /C ̊Duv|SwbnO&1G }'˴{kho(JSgEdh2 =m#wٱWF.z`S ILgtY 1% -KcFV4Z_A8kCa$Q%4 *fpzrI6rŤci fkӆ1?QGȿUsdH\/ݢ=mҤQ%sMO'jr}&J>7>:(f31{V Vb#UQ"D"s#aT:-86~YʜOjaAp.6\Ïct,PFAl/hmFKIENDB`king-2.21.120420/king/resource/king/images/king-btn.png0000644000000000000000000000306511531212642021007 0ustar rootrootPNG  IHDR<= pHYs  gAMA|Q cHRMz%u0`:o_FIDATxb#0iql3IW*:  LrlAbѡ*|<߾}6ug~\KN=2H2#Aߟo~޼O|߼ڌ7#^R1Y7P"92P82XZN.}޲ۢ՟pgKh([˵[,XXz{9iGOÓ@1 e>]+œ 8c R"BwOj=W-B|ÁѪ_5[,[΃)Bs40:<~&fNk3#0i!J^|WuJ/~;.‚ 5; ( F?}V_l3~>^&a DF6 &%_\񝕍\&6afL>ׯqg/7~>,A,?߿}G+@8ZN Yt^>`9 .l&& ͠?}#L*^/\ӑBũ\=r f?sIYۿDhﯙ]999.]U#oqv6ƯGj(}'w?AЩ?Օـ TYze98YN/'Gk;>>!: Mbgbfⵟz.4${.",,LveD IENDB`king-2.21.120420/king/resource/king/images/rotxp.png0000644000000000000000000000212611531212642020447 0ustar rootrootPNG  IHDR00WgAMABO pHYs  "tEXtSoftwareQuickTime 6.4 (Mac OS X)tIME + <`IDATxYKA?{n}؇EAS=T[E@RP$=UD_OAiQjYaADDA=q\ݝ{\wvU 3̜9 0J*u+ȯ D#Å{H˃-HPo02ylB?6oD)+Hszc'6D/7g W-ڝ*}Ʈ D*ʁ_9HN#.F;>dQmNO yGa 5p;p#J1u ި4 v@.)("v5j:SliW@u@{Aǁ5RѬrL*A~/:@.Huu \2Ϩe͹[0d3I(Lf kOA2ʆ A&=luZс`t;OCDz'rĬA&ybr{*QiyF0yԙb$JZNÐH}P3G~̄Q,fa#4]'ﲃ}ˎ6aE"* {DHckH|?[pDu: ES*W^25+6Gsm~QOTzS2*8A*B ~¤mL?Q<,/@qhK_g@_$;:'׏0y .X " Lq2wA?unZ'IENDB`king-2.21.120420/king/resource/king/images/Delete16.gif0000644000000000000000000000032011531212642020617 0ustar rootrootGIF89a̙fff333!,Bhn$>d5fB02m7\7@̷C u@0sROU8vU$!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;king-2.21.120420/king/resource/king/images/Help16.gif0000644000000000000000000000122511531212642020312 0ustar rootrootGIF89a^_ˠɟ1^10\04a49g9WW\\]]ˠɞĚʠښƹع3`2ZY_^vuÙ}|{zyxɞ|{Ųձ໸۷ϭʩ~|sr|{濦ťĥ~|Ь !,LHGBAC =<LLI2J&""#B08"%K8'$+L>.4!5@.6$+5?-+F, 57/ ) ( /;13;ta@0 rQAdآH"EC !OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;king-2.21.120420/king/resource/king/images/Up16.gif0000644000000000000000000000027011531212642020005 0ustar rootrootGIF89a!,*H0!^!2\z 8fib[%7k"!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;king-2.21.120420/king/resource/king/images/DownBasic.gif0000644000000000000000000000013211531212642021120 0ustar rootrootGIF89aDDD"""!,H0I8 't@J9u"Vp,R;king-2.21.120420/king/resource/king/images/rotyp.png0000644000000000000000000000220511531212642020446 0ustar rootrootPNG  IHDR00WgAMABO pHYs  "tEXtSoftwareQuickTime 6.4 (Mac OS X)tIME + !IIDATxYHTQ?5M zh2(B[ 2R襍!Z ڠ=(V̬,so͜9w<3C0~s}NXV*.2خ0M$3S^!d64Qh]ubVx+@;`=Rlt@sNAL u(Y GT)Oupu덙HZ3*6_za8k` {0(3=p쒖DӪNa19< I%XpΎ!|av&VB|}k All \HpQ[m;´]*H:+jA(>G޾49du=m*O3Lp[tjBR@:ذudfXڅb?8Ezu/73mUSƘGk ĩ(408E>l[C3"*#>L;fk6 jx:VU'|Ŷmr.p1q᪨/mYjA@*tm68p l5sDޜyc}F3`?bapȽ鍠KWSKQw; D";KTXKo0s;eaFʘRv2QVGEXc<8i㔼wQQm E,sa0F0Շ#8os- Ѻp6v , i yt(#~`>tCٷ̹6b|b|zuv8/D !"t D`f|ڛI<5xl||vEp [؈&hd P^O8)ᅪ&[ ⭄@ 0!c6!lpn] @@ Rs6++X3H*F^] %A Y6Ć$0@#A *"ffA`^z $ eVL$x?l(#31H׏@Z   ؏8`_v H/@ %OP  /͈ӷO'6'i+(yR(BiϷ>ݿW_ =7?ngV^]P glb4; x*IENDB`king-2.21.120420/king/resource/king/images/kingicon20.png0000644000000000000000000000173211531212642021240 0ustar rootrootPNG  IHDR gAMA|Q cHRMz%u0`:oeIDATxbd``@E@L4  >I~>n11Q1I_?2ܸy˷py9Q+Sew/0pgj/CJr,:???7 yvyVP S^b ΛȠ a OH0q2pe`eXÏwa `ni#kZ0 [WW#ýGQIENDB`king-2.21.120420/king/resource/king/images/rotxm.png0000644000000000000000000000213211531212642020441 0ustar rootrootPNG  IHDR00WgAMABO pHYs  "tEXtSoftwareQuickTime 6.4 (Mac OS X)tIME *IDATxݙKl Qǿո"ꝆP%E]H$תKĎ`)!h!DA6JGwt1=3ιK;̜|0e$\R|D:LmDmq\ȡ"^ 8L,Pp^"3cS:d;@COUKEWmnEY{N OkiAw.6]mlG;^z Oud˥ўFSТ`~BzG# 7T q.py& 7`dy.E1: &v ^EO*GCp 2<2`5rS 6OO& !XPDoQ`ËKS$஺9bzwhK 1TW:/QT[è$kڍ }a+2MOdxLt U-ՐNLWAmi0 ݑU5 >JMxKf2rCtc!zezQ,Kq3˦̏ȍ |ulY~SQD=>`0H:!hV{V(Vs =EM44NMbƒ@|=#)Yi֢s+Il`!Dc )MRYz:U*/Q/T:N6:xj.(DŽ:M<'; 0h-b+^*['U$NA;4 '  .E"3n 0g-aD%P@6 )A *[$N=.d-a*@)?$7w 1j(V E? +!2k,_#K1 $  ,  "  61`W ynlbkae\OH A; :5ͺ̹˸t}rxmwlvki`cZaXMF 83w{pKE 7261"!-)  SK &"odXO QI 4/мϻɶȵıð|{u{otishrgdZ_V ^U ]T VM HA 3.ӿҽ˷ǴƳŲıðzyxws~r}qqfpeodj_h^cY\S [R ZQ TL G@ F? ?9 *&}{|p{oujncg]f\`W_VYP RJ KC E> D= =7 0+)%^UIB C< 504/   !,H*\ȰÇ#JHŋ3jȱǏ CIɓ(S\ɲ˗0cʜI͛8sɳϟ@ JѣH*]ʴӧPJJիXjʵׯ`ÊKٳhӪ]˶۷pʝKݻx˷߿ LÈ+^̸ǐ#KL˘3k̹ϠCMӨS^ͺװc˞M۸sͻ Nȓ+_μУKNسkνËOӫ_ϾK]f>|3h` lHj8HN8j !j S;}b:]p+Ŋ.4:*@)d8d.ɍ9nF;seiXfe$YTZZ JT*BΙ㑑Gz9Xi;|b9vgcCI˛V"YW; 禜y=uʨZ%񣋩ֲhC\**nrZL:*Ȫ+Ď9uȲ6," RV"DP"]tą1 ҅#ۦl%(BH ):2l-E"^t 0yWCJ#^\$s$Cb|F>$ҜH[V/:ia$E v$ V ,iL>x$w{1™CO@ڰ pCV 9H v=L" p4$B@{h&ΤI X` SR2Q'OLbGr2P9i 2xA<F4 9H?Z&(dBrB \N/KXބ>jA\(t7zGXش(q) ğpZcPjv(g3dX(F3cgsG@dЄtW?K#~4xjԨN-PՆ7^jxԪf@\M^"'mrZxH5(f;ٺF3lkԦv;gG[ ζ)Q`H1lt.H팚{Ƚp;~@ɹoPWbБ; /8qC& 8%?<؂G _$8"C9.fN i>|6k^軸I\!:G:c[U_H>ڀu&azׅm4dbO;@گxϻ|ayNx7Q[ uI'= 6o>!~ {lb3#@?!a3 8(P 7x Xנ(̠AXX` &x lp ,x9`ˣ,xBA >7FxHhI?фI"I8 Rj@ MIHkji8k QpȆXu؇ip~8g (@x4 Q ؉8g Zsv< ! ؋qыxpȘʸ/̘X`ڨN1ʈTx蘎긎68Y a0!(HPyy y ytw h=f[Q*))b01w( 5Y[Б , gq?ɒuYДNM9bTU@BiOY PK1TIpqYpm8ap uy yzfY~ YH  q y ) T ni aIكP yiA ٛ 9kЛ90))lj_wٛDar0ɝ P8QPyysi06ў)1왜 )yYɞD1I6Q[ ڠ zO : *9ڠ]0 Jlѡ *x "+ʠ~` 4Z6J 7536:;p 1@0`p͐D6jA!5`2Z\ A][3 bTtippJ apڥB*fzn8:@:,5ڦ qMـ:030Jw`:񪬚ꫪ: CQƺ ~  a zʍ.Zaڭښp*0ڮ . pO` c*{a ۰z +B{   K&0,! '#'"A -[J 5*г"F{Hk2{IGuGXOVkzQIUHeAAh1r;qts SvrkO \ trk?[-o۹k;,a˹@{O q0@` [K`pkмśaK$q [˼;ˀ3 о [,A+)s;Pp   |Lb%ۿ[}[|@[D\ 4\6L1T 76l{R5>,-QBĢ03|KO}P^ -t0/2~2.1ND,>P9~2JNn>=J>Aa`2~`'JN2! ln]atluqN@yb~t~Q惞_~A~^N8a霎階0~8~ _l SN~@.G=Ⱦ0^>q`^&;Anݞ*aJ^>q @ ln 0 ' ~_&`_q!*O0_`>@$A_A/F }?1`@EO uMOV?`d_fo$`plHcer?> wOa/{׀!_` _ OO'@@ &K`0b?bbӯϺ۟'߿o!p0b/aH $X }.dC%*tWEMq!3qaE"1eG$̙9!IҧtaQ) wbIRSMZ*N&XjJR^pTezwkڵ3 :[:yskCb%0P5ĉ+[ءőōuÌXcLe3 ΩUfXϥufxǫq@k-[e{[sO9@ִoνc׺$;݃}^o??xĻ?v7(TQS?(̰@Ü/J$v䏢@tEcvA@rH!OqqI&t$|$)D)rK.K0sL24L4TsM6tM8sN:NO@tPB 5PDUtQFuQH#tRJ+RL3tSN;SPCuTRK5TTSUuUV[uUXcuVZkV\s?艓W_%!^5I?ՕL?)gs)k#R9grw-rGtձzm'\Ж[orpv ^_tZ1)d1gjbi`؝rUHt*N'Qُsv|9?Q8dzQ!zdVf!8p9!u6[FL8rm屟b^HbP'i!Bi/2ꆲfoU^dځt>gBY!t;"'9>ƶw'wWw-Xuyu'ڟuFw(q('Hw`n(~ͷZs99w?Yks-YAgv&tqFlo@ ~ B*u<{S DБiC~a E+ҰlHJ2azD$;uY\ Mj8U~PV W-`[ςIYQ,WSl}WcR ZBQb2W:>(N ,1/D-LUVm~SnjƬwpYaI tnf12.dGTXE,{3a%FmKsTƌIH/@#+g][z׽u]c申ȮythvHZr-8y-}!CU&_&׮-]rivr"W.5.i# .\ț5+OqӦfW!:l;4:ګ?ymf#ߎj4-Oy4^7KGLc%5}| 1heohԲK(B-׌b;FV;d*CWrb#b( " Y҃ 0"A3B70ڲ!| 6x3aLj $ QԞD=0y5>⺠&E(0ҚtA1!LAـ=B* BJ **ޛMµPK-L)/ s%-d@Q"äӴ'DC+4:bf9<91#CJ;3y)>ˆ.gjC-;(s) t$3Øٸ~h*sR#%A$M, 1E>, ~pw w*&јlA"sB_'z3i!+8-ÜGw|GxGyGzG{0+ >(/{\ {KULL/`Ǝ6\ HYӬ|Q>4;D ˳I{xI>"FH') l#ȅ6jʼ: Sɀc123t W(2* ": zIċ@O "a1 `ɓ \GLdCEB?3&^* wFoIMK)Oc3>Z۫[LO\BkBʚR>`2|̚9 Ҩ\MIhCiFDbēƌ@<Ѫ4,dCtNu{v˼f=lćAH :Γ+w7ЊDb 9LK`wJ ÞI ;]L[ώ))D*(]a"‰E K4cQ( z:w:N n?LOjSLs𬼲*$-Qj̇@ǎ-CS`va.~`M]p[H!^&^W-`#fb$V'afa]` bf-^W& c6a0dF#a/f%(q P hȀ!pOnKddPXbQ΀4PKভW^ ^ pdWM&a^e-ncfP΀5bVZF憨e&fi&e]h&ie`faFgl6fkflVen^]gZd'U]Fg[f?gnxf_V児J&hmNn腰VȀ:v~@f {ig̀WefeXN\VHi盦]iNiەj|jvꁦj螦fЀd vi忎|Epcրn~l  羾v컆l[l˾k^kЀԾklVl~vlNn klVFjۖ hho0oNo`q8l&oPV~p^^h x pNpop/ppw~ W p ?pgooH/Vq 7rq9qgr ?r'g ׎pPor'o1o 2oqa4Gr>s0Gq)go>q2ss@W6.O4s@o9s?s!8P'ut!˵ t fNof uPZoSuRdXoS_^WpT?]g_!N`OaMZ\Wv](u!>v]Wivb_v wOv(Sgw pRu'0w{jos_ztWp#wXpW7Rbhn\oxhyWgWg7_~vx(yw`poxXwxyyg`zoG _ozw'{0{7gw 8 8p 8 X/ &ӟLJ|ȟʧ#Xͧ8ǟ? a?ȁx|j#~{w~o~ߏzA#A>R8<@RZN< G EJ8!ZؖK5ChT7A#"-HT x.xDH PB .Ё;y$IgDUJJhDhYVz%a9&ey&i&m&q9'uy'y'}' :(z(h(.ʄC0PeGCvbz酑V:D]jԫi"p9Jêˤttz᳠]ñ +|%nZ̲hnEx`KE º{ὠ]nQkd ,b AA Q1Pv }oIQrQ2@ (7Q0;2LT9T@sMHs sE @=|J4X`5H=TtG)=uQQK}fDݳD=m6iUMT8`GMu5M 1]7RO7B3M6VJQ\7HJg}m|K}9AQS^ƘZ)0칋8\`z|! o4<#@A]' o{Nj= .> lεO|R'<u{_GJmxǛRx' )G]/{G=$:lp l@>(M ):8Rh ' x: " :զ^Y8@.N `j>l/6۪Hxp,ڎH12T%h7#64%@5Jc4"FKRhMbhʺQ`AYFOrVyI'#Ja}@$An#XL4IG!B*lbS-DaDAVg"k n9fOD `Mf $:).)$4YP<(g<;fPȔAQгf=vD&%jMwjtŧ>SYQH1<~$%O( RI\R RfZ34*Tvq[%J $M[JTGkW:-^kZ BըQ ntD^գW_Ըy& $sa]])qA"&%E-[ B@J^a:-Avd@ \ ]!%u[޺`HБ|[u.R 5!H1 zk"r՛Eمms#@#pu-mK_2ijnK qSEAQ P1+!(30z'Eq1Pc0970e FXl,#Jr(`+Qfqg&ܜ);yO.?l ~S#:Ƈt7\TM?i|#(#E:n*b :W^r Cv5́.9R\bOޑcyD |ǂH k|QqEQL@y,?(xl _xhBw' cz‹jGQP DqeqOo_XG~O'dE|Qo^$ s`E@u1A . uD!!X @  |FҞD Xb\`Q8`,Z@\ &  p  j`_6 ,AXƉ F$@"q@ $n!ٞ&aXOR .r`R0&`}aA! ` >`B@$=MNT@.M &H""V8Y.݀)V"՝'@+Lb. Ţ'4,v""%"2b  R1 2,Ƣ* Q ,b&&#M0a2v98Q8V@$R3$vIb.U).bnI;7"5F Zmb'~"!'M+@8cjc%E^(cTa$Gvd hG$II@•J$8 Ld(FҤN$OO$PP%QQ%R&R.%S6S>%TFTN%UVU^%VfVn%WvW~%XX%YY%ZZ%[[%\ƥ\%]֥]%^^%__%``&aa&b&e@;king-2.21.120420/king/resource/king/images/Down16.gif0000644000000000000000000000027111531212642020331 0ustar rootrootGIF89a!,+H0IƳm4 p @ciѶS!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;king-2.21.120420/king/resource/king/images/StepBack16.gif0000644000000000000000000000030611531212642021115 0ustar rootrootGIF89aff33f!,@8X<"PFYova2Xgzemߨ0N sdP#!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;king-2.21.120420/king/resource/king/images/Copy16.gif0000644000000000000000000000044011531212642020332 0ustar rootrootGIF89a泳̳̲̲̱˰ɬƪĨ¥!,@J 'd9n*Tn%mtmH֠&B]PPvxYJ!Q6 cM S#$|k!!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;king-2.21.120420/king/resource/king/images/Paste16.gif0000644000000000000000000000045211531212642020477 0ustar rootrootGIF89aϺɶɶ±°̼̻˼õ{{vrfffc11^33!,@T`&dIb2XVaЖ .C*]b K(V4$bhf͇\"W@=ca1ZC!!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;king-2.21.120420/king/resource/king/images/Back24.gif0000644000000000000000000000064611531212642020267 0ustar rootrootGIF89a̽׻չӷѵϵϴͳ̮Ǭƨ33f!1,@ppH,DQy^r StdjBXFeAY4TFCYt;<15H o{azmJpx*u{OQKyiue} # !/0l`A!OCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. JLF GR Ver 1.0 ;king-2.21.120420/king/resource/king/images/kinglet-logo.jpg0000644000000000000000000003346711531212642021676 0ustar rootrootJFIFddDuckyFAdobed    ,  s!1AQa"q2B#R3b$r%C4Scs5D'6Tdt& EFVU(eufv7GWgw8HXhx)9IYiy*:JZjzm!1AQa"q2#BRbr3$4CS%cs5DT &6E'dtU7()󄔤euFVfvGWgw8HXhx9IYiy*:JZjz ?ڌUF*v"`F*HnaJqp2˖)uت /8 dLAgX(8>ءpzSlXI& ,1BbgS8iVUUثWb]v*Uت~SzbZd+,UOMJ >m%!=ҭijè eR4Uj+so5z' 5܋AA`˕ܟ9:ȑdCdy+7df)]=L=OCkX+,XJ7} z}$p| ò8ӏd۩ˎhXփl83 tѪב\ o=rM% S\PqwN,$l& MUL(ZqVWb]v*UثWbOʛՔ)EGā"| U;Q(T&? q)bT0+SڹL9MF=;6Ivsm%t $}_J4#h^GsxbIL{;xe R |; >wMhvsC_ɋR;'\%ĆH]jֵ̐ޛ|I.$3 ŮHF0QlPتbg,8ӊv*UثWb]d 7.)D{`)GC6#,|G\ { ]^gc[(9GC<3lj#3#`.768VҬ怆yą8*(yΧr |tG3[8k PƮb5 FXr4~nn7Y\]>WYb(}g!PsL#xhz;,ɐhWZS:i$y GjC~^ZQ\nY#:_Qj|9qQR|? L5^g>;On#ߚs̺Ri46 Y'sN|"R>^_ϓT9t:bK_:^y3Z KL5 J$]9Z:OqGv,ɒ~{ۏ5iowo:gPG5^N_%26ꇨT %佛j_z3FԖȒ>ZiOw8տ0/̲ZrP:(sd\n{轱0$`ef^yg^]{)ibmldGNvgjrv#s5:(%26{ạݳm)*wsXwΞcv|<}g}%f?gx܂ My2h:)M^2-~B '|ɷfnnЊI@w М4ݱ&ar*/暬s~uG }'WdxJ!$c Y3 ~g[ߊ[7.7?>[>y& MU}zMiFude HM*M;mc)J"22$z 9&" B(,hrIˉYwgfெn&2M+5ff4r2$ >_k3y3AGY/KrA5IaM8bӓ9څb̑ŰzOEig)H@'5G?#P* |l])R9Qd{mp<t)/[Siy"lj~\jkN5#2Aׇpzy$kv*Uت~u=JMSVB1TD|G_0~N}H9' ]ݏWaA,t oOЬueo5 6dz=4Oꜷ yeg?WX󅖗qp^EvK/ @c~٦#J`zcXrQDyFKO:pOV@2w'}9wQ.dn{=QqFvPO>G;c9X;T ֭<=B9 R{;ˡ':P? x7R_Z#FZ쁆zMH6"js74RH-@eR(< utjs::%H9ܲ?͹|o 5co)Nóo 6_ߩßCz揖VIzkڢ|aY [ٝs]R&8NysZ^j׶PD"7u5XS#05CUa d8?|8G/yY6<("BĂ\,0G7vXF,c3?-+T|ū'K;)lHbBdAPOLGkiDW!3g pؒO8=7͟mO*yjAwk ۬5ñHꑫ2PTnjݧKlxEW,.N.~pg>Jŧ:u?1G2X, ÿ#cdc-@u?y>u 3kAA5oȽ/ʚw}4[kKy}dFD)"7 y#N1H띛]\ńDT#g:Wb]v*)9Sz=UdedTX9=MV*_uS6]d|3?` aoܜgR ais$2lQ`؆SPG%!Gn`y|cvscS_5[#F^;n(>y㉪V)FG׺!-ֶ25>LżowSQN9ȯqtM$A^4YL4_ۻiFW}EH(iv>?ۛ2/eEdt˩+bv'n݉ヨ=Ci3Q/W?YEiBV ĩ~ywhd c 5~k82n|iִmJwYYO3{":+wZ>g7 ⺷cI _f6,r AHo=7 kRC(M :mQVV91E𮹤h:捨' )ZGbT0=O9$yH[LM^L_J)[Z͍!Y,eAڐN"{mJXe֦?kq|9?3e]ɴr=Io^jo䮍35#^_\GA:"NX!6|DPvjɐqc8@`#IńhɄߖ~ykIC ܷ&qOT^=<'HnOAq1{.'/09VK2+BWgH/Npݒ5u950e)6 "M/o SKWF+m;MZzP'Fe&A>=h*Kv84sjYR/m)xF;"a:4BT4[뛎eS# 1-7Nusɖ<+u_Ok:孥]LZ!υ ط̞vp#S LLI?3t,WQ\<{̴r_?Uwca,6D|0"#V ثWbSjt-|w8UUXR2e癈 J]=6 H\,i=K{8A۟=Ou#糵>5ԶTaZЃ힧S4DAXbG4(a O2%ý9A<ϵGޡ/"w/Kx^m"W/mpU;r:0\4g, bXI4+;$6G޵oH=6XA cGaNtwF^9z2&hXEx縝ЈD TҀf5Pdž[ =%:е7ץ-=G@HG5݇1F7^wd:(D!EMۿ+3纂?,k8\HjeGlO({q]##Ca{_~cce Zr[` 'jЎӳZlԏv]}eg5Ϻx?zWjӨsǫ69\<}K~̫E׼<-Bc"Is|,wgMWF&k]Z(V7sèQ [(0˭^qo$Nv0[av̉j^CCῥJmF=~$"ID tf!jvGDyߙ9sr1y'u=!*qE˗B'v}#yr=S_N:MȕV|OGMZb>mK6=2i߬^72N+#WD!@h9bcˈgdvx5bQ,9PKej??Nq='i0 I;rs'#F[iRtr`ǒ%] i1?*o*G(O۸wZjws۽,:5 EUCMdLlSN }A^VNL}Qd$G$T~fњEoVkyegI~A{iΥHaw-)+B 0C%qk"d"?Şdv/&_*G(O{/Nhn/&RCQCZ`Db,L^|@j5Ij'Jėz|NY'J.cq{q%eG tbNّ qm͓B\nchRCtl#vP,'.iLAm59,6ugI jPvރ|r2Hl-@]M ,LQ*k&*BÒ$<#1.)OF5>ˎH34Jz_! 2ٺrlD{{Cn?^w֒ϻ3|I 8Ttx&sD4SgK#`CkqF@2'Z*94;v*UZӪr@)DI\'_dpsAA؎$UثTNRިTSSTV)VA*[VW+⪜*6jMsm8nI~?y|^yq_ʩfCUb~G[\#S犭2y(fl2تo苪Ū_\;%hח(u8Ԑ@,7 WcZOaN\#'7gJm \iMr20-J#5DH+.+U8b3Kd:şv@B!٣a$f {*Gxת{ riť֥mد+ 18ay ZkVZ&fX/n әYE\E>Vq ր"2ޞ|doZg6Zk=ܚ$P鿻J< &]^hjB<3[] q02:]\[,nt T@H,TuoAOh˓hK,5&E[xTڴP]Z0ʨ⧏~$ꎜo:#Ͽ} C_=F7ڭPQr#2zr+QZ50kb:rQ͎'}֯S5O%Ϧe( +Qjs㔥e"bktʺǜ vf,T1LFxw>]3e)d\G_k3}u /Iĉ?[[Z- lq Cnڴ 5c#pefdޟ~Qb \jְ{p( Sa,'~)<>X[ݟqmn[O_+Ro_,D^!tkM#Z~6OWVȋq52'+"}Yu2 ľ+ލ&F;St/*`RkOI8$0QPq^,j֔sfxԸk6r1{y3P M0\Nl܃^ ;tu95XF{2ɡI啖= =sH )ejLa#5qlj֪zWp <ďb|)Q _,W|#RKkJʮO; X5"G?;W Àz<͡آ[[{)(bx=PP|VŅpx#~\=&Bty V ?&6Ѭż*q1e'r^D7Aink"LcuЖMY\Gk{ {xUb䲐 #Py+a@ZN4ƣ.Lw5!Ȟa#K页buA˱5w$TtAabUTUp8QXe9\LHWe=Q^qq;DZK_NRN}\J>(bJZ0sRW55Ki:F5Zޠhp?"L͹˜ьy'JW.mL\0yu6֖_WSIJ5~,U*4#Ǯ0Dȋkudr+I/u[9궺mM 1~һ4 H?@d;=Cj:ϧY,D0[[DZt Ğ?^8NRI˝zYK-k?0?Ӭ96$NGڧ˲-8e._ͽqRn<:L%&;Y(d0sӓN9K rޅwms+]SWuR=DZ4s=]5O´:FXx`UDn%7<F`"6B<^C\z鶦+BoT3Z>Lbr9U͍uEB@Պcy[2LmѫX\eIY9?dױlFC$F{ {X.kwz}ŕsӯG$azF6PE(FY-5LH]|ǵRW.1ZBE y4ē`Q u$O2R%}Lt-.#Xnhy(C׮Q !3)ت98ADyitM#SPdI"Yf[5cs#/)2. \jumB5)DIR!?Y@2NEwk[@1X)F/mbeF4&YЀ' 1''a Hn" JGxmmQcȒEEsُ@2I qMM6܅PUثWbm#JB:*%$ӘGҒQ*bhxg~: hǚV*oe.@q/D1՝!r;v*UثTs~Gr+|f:pv*Uثbx{)o|P1V]*V oZ5kk,z!.bzk˚ E]v*UثWb]@בs<W4cm=y&._king-2.21.120420/king/resource/king/images/LICENSE0000644000000000000000000000320711531212642017573 0ustar rootrootCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. Sun grants you ("Licensee") a non-exclusive, royalty free, license to use, and redistribute this software graphics artwork, as individual graphics or as a collection, as part of software code or programs that you develop, provided that i) this copyright notice and license accompany the software graphics artwork; and ii) you do not utilize the software graphics artwork in a manner which is disparaging to Sun. Unless enforcement is prohibited by applicable law, you may not modify the graphics, and must use them true to color and unmodified in every way. This software graphics artwork is provided "AS IS," without a warranty of any kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE GRAPHICS ARTWORK. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE GRAPHICS ARTWORK, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. If any of the above provisions are held to be in violation of applicable law, void, or unenforceable in any jurisdiction, then such provisions are waived to the extent necessary for this Disclaimer to be otherwise enforceable in such jurisdiction. king-2.21.120420/king/resource/king/images/Home24.gif0000644000000000000000000000224611531212642020315 0ustar rootrootGIF89a{zåɠÝ˦ʤǢŨ˭Ъͷ۲կҹ00a==nnnUUz\\^^rrffkknnuuzz||ŞÛɡƠğޝ̥ͧʤȣǢƜѨ̧˦ʥɤǰխѬЫϪΩͷܵڲְԯӮҷ۶ڵٴس׸ܴ׹ܸefklmntuʭҬѩΦʯԬЩͷܷ۳!,H*\Ȑ !V@ >b QE'B\SO  !52\N ,dz=P 6|x8@t?-xpC l(` iDv pqq9h m@G7SD"d 0 A#+D6[2H/@1Atj!0*3` _E2F ?- 6@p€|"۷o' Ib&( (5  A?~O@@ϰ glb4;\IENDB`king-2.21.120420/king/resource/king/images/rotym.png0000644000000000000000000000223211531212642020443 0ustar rootrootPNG  IHDR00WgAMABO pHYs  "tEXtSoftwareQuickTime 6.4 (Mac OS X)tIME +PIDATxYGq_ HDp AAq}A `@$ј<%b "n(,F!H((dq#hhtLӭmM=c֭uNuSV!-vƹ{ODcf.n{CcUg}C?_{cUŁR@Uqܪ8PnvbnK r!}T& NF9m\ ϐ\s@쎵Q-*y͟dJ1[d#RC. h"ԩ*AkٓޮTb5 EB!kIU@-00I0V#dρd=(3$^6wFžqiO9ЗpsKd]xcebY Lm2l`}!Re\2t29k{@摻T2W.\}^4,ȁ-6:rtNdjra) &:c#N,ܖaiD;m]D;tkEg8zO[`saSb Ӝ."@ V.eNb."$_xn0| $2Kɇ8@K9ly| Ɛv-&KWXp| ˎ>bx9{_whsz*?wT ,CCuS|VyjqP_ n README for KiNG

README file for KiNG


What is KiNG?

KiNG is a program for viewing and interacting with three-dimensional illustrations in "kinemage" format. This file describes how to run KiNG and serves as a guide to the other resources in this distribution.

More information on kinemage graphics and their uses in structural biology and in teaching 3-D literacy is available from the homepage of the Richardson laboratory at Duke University: http://kinemage.biochem.duke.edu/

Running KiNG

To run KiNG, simply double-click on the file named king.jar. On most systems, this will launch the Java interpretter and run KiNG -- after a few seconds, the KiNG window(s) should appear on your screen.

If nothing happens, it probably means you don't have Java installed. Only Apple computers running Mac OS X come with Java "out of the box"; Windows and Linux users need to get Java from Sun and install it. Don't worry -- it's not hard and it doesn't cost anything. Just go to this page and you'll be up and running in no time: http://java.sun.com/getjava/index.html

KiNG works on any platform that provides a modern (1.3+) Java Virtual Machine; at the moment, that includes Windows, Apple's OS X, Linux (x86 only), and Solaris. Note that some tools and plugins, like the Backrub tool for refitting protein backbone, require Java 1.4 or later. YOU MUST HAVE JAVA INSTALLED IN ORDER FOR KING TO RUN!!! For more information on Java visit http://java.sun.com/ or http://www.java.com

Unix types may want to create a shell script to launch KiNG on their system; it should look something like this:

#!/bin/sh
exec java -Xms32m -Xmx128m -jar /home/ian/bin/jars/king.jar "$@"

Just enter those two lines into a text file named 'king' (change the path to point to your copy of king.jar, please), run the command 'chmod 755 king', and then move it to someplace that's on your PATH -- maybe '/usr/local/bin' or '~/bin'. The -Xms and -Xmx switches are optional; they are recommendations for initial and maximum memory allocations (respectively) that will handle almost any size kinemage. For very large kinemages, you might increase -Xmx to 256 MB or more.

Users of Apple's OS X may want to include two additional flags, immediately following the exec java part of the command (separated by spaces, of course). Adding -Dapple.awt.antialiasing=on will make the graphics much prettier, and helps offset the fact that the drawing primitives are broken (too large) in Apple's implementation. Adding -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeel will cause KiNG to use the standard Java Look & Feel instead of emulating a native Mac application. The native Mac version is somewhat buggy, so try this if you get unexplained crashes on OS X.

Documentation and license terms

KiNG features a relatively complete user's guide that is accessible from the
Help menu. Individual tools in the Toolbox also have their own documentation.
For those who prefer hard copies, the doc/ directory contains a PDF of the
manual and may contain other relevant documentation as well.

KiNG and most contents of this distribution are covered by the terms of the
license found in the LICENSE file. Other libraries and resources bundled
as part of the distribution are governed by their own terms as described
in the user manual.


Last updated 4 Mar 2004 by IWD for KiNG 1.22 king-2.21.120420/king/deploy-rlab0000644000000000000000000000102011531226044014667 0ustar rootroot#!/bin/bash set verbose ############################################################################## # MUST RUN ant dist BEFORE THIS SCRIPT! ############################################################################## # Save current working directory pushd . cd dist/king-?.?? || { popd; echo "Can't find dist/"; exit; } # Update cluster executable: # scp -r *.jar plugins/ srcer@richardsons.biochem.duke.edu:jars/ scp -r *.jar plugins/ srcer@quiddity.biochem.duke.edu:king_jars/ # Restore current working directory popd king-2.21.120420/king/src/0000755000000000000000000000000011744310054013331 5ustar rootrootking-2.21.120420/king/src/king/0000755000000000000000000000000011744310054014261 5ustar rootrootking-2.21.120420/king/src/king/UIText.java0000644000000000000000000003166211531212654016317 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.util.*; //}}} /** * UIText is the kinemage text manager. * It takes care of displaying and editing the text. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Sun Jun 9 19:06:25 EDT 2002 */ public class UIText implements MouseListener, KMessage.Subscriber { //{{{ Static fields //}}} //{{{ INTERFACE: HypertextListener //############################################################################## /** * HypertextListener is able to get events when the user * selects a Mage-style *{hyperlink}* from the text window. * * @see UIText#addHypertextListener(HypertextListener) * @see UIText#removeHypertextListener(HypertextListener) * *

Copyright (C) 2004-2007 by Ian W. Davis. All rights reserved. *
Begun on Fri Jul 16 11:47:37 EDT 2004 */ public interface HypertextListener //extends ... implements ... { /** * Called by UIText whenever the user selects any Mage-style * hyperlink, which is bracked by *{ and *}. * @param link the text of the link, minus the flanking brackets */ public void mageHypertextHit(String link); }//class //}}} //{{{ CLASS: TextChangeListener //############################################################################## /** * TextChangeListener gets events when the user modifies the text * in the text window, then records that the kinemage has been modified * (so the user can be asked about saving when it's closed). */ public class TextChangeListener implements DocumentListener { UIText uiText; public TextChangeListener(UIText uitext) { this.uiText = uitext; } public void insertUpdate(DocumentEvent e) { // If user actually changed the text, record that here. // PROBLEM: It's hard to tell when a user meaningfully edited // the text him/herself vs. when a 2nd (or 3rd or ...) kinemage // was appended, which technically *changes* the contents of // the text window. /*if(ACTUAL_CHANGE) kMain.getKinemage().setModified(true);*/ } public void removeUpdate(DocumentEvent e) { // If user actually changed the text, record that here. // PROBLEM: It's hard to tell when a user meaningfully edited // the text him/herself vs. when a 2nd (or 3rd or ...) kinemage // was appended, which technically *changes* the contents of // the text window. /*if(ACTUAL_CHANGE) kMain.getKinemage().setModified(true);*/ } public void changedUpdate(DocumentEvent e) { // Plain text components do not fire these events } } //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JFrame frame; JTextArea textarea; JCheckBox allowTextEdits; JButton popupButton; JFileChooser fileSaveChooser; Collection mageHypertextListeners = new ArrayList(); boolean modified = false; // by analogy to Kinemage.modified, but for >= 1 Kinemage //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public UIText(KingMain kmain) { kMain = kmain; popupButton = new JButton(new ReflectiveAction("Show text", null, this, "onPopupButton")); frame = new JFrame("Text window"); frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); frame.setIconImage(kMain.getPrefs().windowIcon); allowTextEdits = new JCheckBox(new ReflectiveAction("Allow text to be edited", null, this, "onAllowTextEdits")); allowTextEdits.setSelected( kMain.getPrefs().getBoolean("textDefaultAllowEdits") ); textarea = new JTextArea(); textarea.setEditable( allowTextEdits.isSelected() ); textarea.setLineWrap(true); textarea.setWrapStyleWord(true); textarea.addMouseListener(this); textarea.setBorder(BorderFactory.createEmptyBorder(6,6,6,6)); //textarea.setFont(new Font("Monospaced", Font.PLAIN, (int)Math.round(12 * kMain.getPrefs().getFloat("fontMagnification")))); JScrollPane textScroll = new JScrollPane(textarea); textScroll.setPreferredSize(new Dimension(500,400)); new TextCutCopyPasteMenu(textarea); this.addHypertextListener(new MageHypertext(kMain)); textarea.getDocument().addDocumentListener(new TextChangeListener(this)); // Key bindings: just type the key to execute -- DAK 101115 InputMap im = frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "close"); ActionMap am = frame.getRootPane().getActionMap(); am.put("close", new ReflectiveAction(null, null, this, "onClose" )); initSaveFileChooser(); JButton exportText = new JButton(new ReflectiveAction("Export text to file", null, this, "onExportText")); //exportText.setPreferredSize(new Dimension(10, 20)); //exportText.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); frame.getContentPane().add(allowTextEdits, BorderLayout.NORTH); frame.getContentPane().add(textScroll, BorderLayout.CENTER); frame.getContentPane().add(exportText, BorderLayout.SOUTH); kMain.subscribe(this); } //}}} //{{{ initSaveFileChooser //################################################################################################## private void initSaveFileChooser() { try { SuffixFileFilter fileFilter = new SuffixFileFilter("text files (*.txt)"); // New suffixes: fileFilter.addSuffix(".txt"); fileSaveChooser = new JFileChooser(); fileSaveChooser.addChoosableFileFilter(fileFilter); fileSaveChooser.setFileFilter(fileFilter); String currdir = System.getProperty("user.dir"); if(currdir != null) { fileSaveChooser.setCurrentDirectory(new File(currdir)); } } catch(SecurityException ex) {} // Temporary fix for Java 6 bug # 6570445: JFileChooser in unsigned applet catch(java.lang.ExceptionInInitializerError ex) { if(!(ex.getCause() instanceof java.security.AccessControlException)) throw ex; } // Subsequent attempts to create JFileChooser cause NoClassDefFound catch(java.lang.NoClassDefFoundError ex) {} } //}}} //{{{ get/set/appendText() //################################################################################################## public String getText() { return textarea.getText(); } public void setText(String txt) { textarea.setText(txt); textarea.setCaretPosition(0); // at the top } public void appendText(String txt) { txt = getText().concat(txt); // Keep the text window from moving around too much int caret = textarea.getCaretPosition(); caret = Math.min(caret, txt.length()); textarea.setText(txt); textarea.setCaretPosition(caret); } //}}} //{{{ deliverMessage //################################################################################################## public void deliverMessage(KMessage msg) { if(msg.testProg(KMessage.ALL_CLOSED)) this.setText(""); if(msg.testProg(KMessage.KING_SHUTDOWN)) frame.dispose(); } //}}} //{{{ cascadeBehind, onPopupButton, onAllowTextEdits, getButton //################################################################################################## /** * Positions this window above, left, and behind the specified window. */ public void cascadeBehind(Window w) { if(w == null) return; frame.pack(); Point p = w.getLocation(); frame.setLocation(p); frame.setVisible(true); p.x += 24; p.y += 24; w.setLocation(p); w.toFront(); w.requestFocus(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onPopupButton(ActionEvent ev) { if(!frame.isVisible()) { frame.pack(); //frame.setLocationRelativeTo(kMain.getTopWindow()); // centers frame frame.setVisible(true); } else { frame.toFront(); //frame.requestFocus(); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAllowTextEdits(ActionEvent ev) { textarea.setEditable( allowTextEdits.isSelected() ); } public JButton getButton() { return popupButton; } //}}} //{{{ onExportText, saveFile, onClose //################################################################################################## public void onExportText(ActionEvent ev) { String currdir = System.getProperty("user.dir"); if(currdir != null) fileSaveChooser.setCurrentDirectory(new File(currdir)); if(fileSaveChooser.APPROVE_OPTION == fileSaveChooser.showSaveDialog(kMain.getTopWindow())) { File f = fileSaveChooser.getSelectedFile(); if( !f.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { saveFile(f, getText()); System.setProperty("user.dir", f.getAbsolutePath()); } } } public void saveFile(File f, String text) { try { PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter(f))); out.println(text); out.flush(); out.close(); } catch (IOException ie) { ie.printStackTrace(SoftLog.err); JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onClose(ActionEvent ev) { frame.dispose(); } //}}} //{{{ Mouse listeners (for hypertext) //################################################################################################## public void mouseClicked(MouseEvent ev) { int where = textarea.viewToModel(ev.getPoint()); //System.err.println("Click occurred at position "+where); String text = this.getText(); int prevOpen, prevClose, nextOpen, nextClose; // "where-#" terms below ensure that link is active out through the space between } and * // Original code used "where" in all four places, cutting the link short. // Passing a negative start index to (last)IndexOf is the same as passing zero. prevOpen = text.lastIndexOf("*{", where); prevClose = text.lastIndexOf("}*", where-2); nextOpen = text.indexOf("*{", where); nextClose = text.indexOf("}*", where-1); //System.err.println("prevs:" + prevOpen + "," + prevClose + "; nexts:" + nextOpen + "," + nextClose); // Still works if prevClose == -1 Might not be a next hyperlink... if(prevOpen != -1 && prevOpen > prevClose && nextClose != -1 && (nextClose < nextOpen || nextOpen == -1)) { String link = text.substring(prevOpen+2, nextClose); textarea.select(prevOpen, nextClose+2); //System.err.println("Hit hypertext: '"+link+"'"); for(Iterator iter = mageHypertextListeners.iterator(); iter.hasNext(); ) { HypertextListener listener = (HypertextListener) iter.next(); listener.mageHypertextHit(link); } } } public void mouseEntered(MouseEvent ev) {} public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) {} public void mouseReleased(MouseEvent ev) {} //}}} //{{{ add/removeHypertextListener //################################################################################################## /** Registers a listener for hypertext events. */ public void addHypertextListener(HypertextListener listener) { mageHypertextListeners.add(listener); } /** Registers a listener for hypertext events. */ public void removeHypertextListener(HypertextListener listener) { mageHypertextListeners.remove(listener); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/HTMLHelp.java0000644000000000000000000001045411531212654016506 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; //import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.text.html.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * HTMLHelp is a simple HTML browser for displaying help information. * *

Begun on Wed Jun 26 22:15:35 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class HTMLHelp implements HyperlinkListener { //{{{ Static fields //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JFrame frame; JEditorPane editpane; URL homepage; URL prevpage = null; LinkedList history; //}}} //{{{ Constructors //################################################################################################## /** * Creates a new help-system window. */ public HTMLHelp(KingMain kmain, URL start) { kMain = kmain; homepage = start; history = new LinkedList(); frame = new JFrame("KiNG Help"); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setIconImage(kMain.prefs.windowIcon); editpane = new JEditorPane(); editpane.addHyperlinkListener(this); editpane.setEditable(false); JScrollPane scroll = new JScrollPane(editpane); scroll.setPreferredSize(new Dimension(600,400)); JToolBar toolbar = new JToolBar(); toolbar.setFloatable(false); toolbar.add(new JButton(new ReflectiveAction("Back", kMain.prefs.htmlBackIcon, this, "onBack"))); toolbar.addSeparator(); toolbar.add(new JButton(new ReflectiveAction("Home", kMain.prefs.htmlHomeIcon, this, "onHome"))); frame.getContentPane().add(toolbar, BorderLayout.NORTH); frame.getContentPane().add(scroll, BorderLayout.CENTER); } //}}} //{{{ show/hide //################################################################################################## public void show() { try { editpane.setPage(homepage); history = new LinkedList(); // clear the history prevpage = homepage; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } frame.pack(); frame.setVisible(true); } public void hide() { frame.dispose(); } //}}} //{{{ hyperlinkUpdate, onBack, onHome //################################################################################################## // This was ganked from the JEditorPane documentation. public void hyperlinkUpdate(HyperlinkEvent ev) { if(ev.getEventType() == HyperlinkEvent.EventType.ACTIVATED) { if(ev instanceof HTMLFrameHyperlinkEvent) { HTMLDocument doc = (HTMLDocument)editpane.getDocument(); doc.processHTMLFrameHyperlinkEvent((HTMLFrameHyperlinkEvent)ev); } else { try { if(prevpage != null) history.addLast(prevpage); while(history.size() > 100) history.removeFirst(); URL url = ev.getURL(); editpane.setPage(url); prevpage = url; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onBack(ActionEvent ev) { if(history.size() < 1) return; try { URL url = (URL)history.removeLast(); editpane.setPage(url); prevpage = url; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHome(ActionEvent ev) { try { history = new LinkedList(); // Clear the history editpane.setPage(homepage); prevpage = homepage; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } //}}} }//class king-2.21.120420/king/src/king/ContentPane.java0000644000000000000000000004305211531212654017347 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; //import java.io.*; import java.util.*; import javax.swing.*; import javax.swing.tree.*; import driftwood.gui.*; //}}} /** * ContentPane contains all of the GUI elements, * except for the menu bar (which is held by the top-level window or applet). * *

Begun on Wed Apr 24 11:22:51 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class ContentPane extends JPanel implements KMessage.Subscriber { //{{{ CLASS: ButtonListener //############################################################################## static class ButtonListener implements ActionListener { JCheckBox cbox; AGE age; public ButtonListener(JCheckBox cbox, AGE age) { this.cbox = cbox; this.age = age; } public void actionPerformed(ActionEvent ev) { age.setOn( cbox.isSelected() ); } } //}}} //{{{ Variables //################################################################################################## KingMain kMain = null; JScrollPane buttonScroll = null; JSplitPane minorSplit = null; // hold buttons and graphics area JSplitPane majorSplit = null; // hold minor split and zoom/clip sliders Map btnMap = new LinkedHashMap(); //}}} //{{{ Constructor //################################################################################################## /** * Does minimal initialization for a main window. * Call buildGUI() to construct all the GUI elements before calling pack() and setVisible(). * @param kmain the KingMain that owns this window */ public ContentPane(KingMain kmain) { super(new BorderLayout()); kMain = kmain; kMain.subscribe(this); // Set up keystrokes for animations ActionMap am = this.getActionMap(); InputMap im = this.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_A , 0), "anim1fwd" ); am.put("anim1fwd", new ReflectiveAction(null, null, this, "onAnimForward" ) ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_A , KeyEvent.SHIFT_MASK), "anim1back" ); am.put("anim1back", new ReflectiveAction(null, null, this, "onAnimBackward" ) ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_B , 0), "anim2fwd" ); am.put("anim2fwd", new ReflectiveAction(null, null, this, "onAnim2Forward" ) ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_B , KeyEvent.SHIFT_MASK), "anim2back" ); am.put("anim2back", new ReflectiveAction(null, null, this, "onAnim2Backward" ) ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS , 0), "accum1" ); am.put("accum1", new ReflectiveAction(null, null, this, "onAccumulate" ) ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_EQUALS , KeyEvent.SHIFT_MASK), "accum2" ); am.put("accum2", new ReflectiveAction(null, null, this, "onAccumulate2" ) ); // DAK 090930 im.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS , 0), "decum1" ); am.put("decum1", new ReflectiveAction(null, null, this, "onDecumulate" ) ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_MINUS , KeyEvent.SHIFT_MASK), "decum2" ); am.put("decum2", new ReflectiveAction(null, null, this, "onDecumulate2" ) ); } //}}} //{{{ deliverMessage //################################################################################################## static final long REBUILD_BUTTONS_P = KMessage.KIN_SWITCHED | KMessage.KIN_CLOSED | KMessage.ALL_CLOSED; static final int REBUILD_BUTTONS_K = AHE.CHANGE_TREE_CONTENTS | AHE.CHANGE_TREE_PROPERTIES // e.g. mark group as animate | AHE.CHANGE_TREE_MASTERS | AHE.CHANGE_POINT_MASTERS | AHE.CHANGE_MASTERS_LIST; static final int RESYNC_BUTTONS = AHE.CHANGE_TREE_ON_OFF; public void deliverMessage(KMessage msg) { Kinemage kin = kMain.getKinemage(); if(kin == null) { btnMap.clear(); // or else we leak memory setButtons(Box.createVerticalBox()); } else if(msg.testProg(REBUILD_BUTTONS_P)) setButtons(rebuildButtons(kin)); else if(msg.testKin(REBUILD_BUTTONS_K)) setButtons(rebuildButtons(kin)); else if(msg.testKin(RESYNC_BUTTONS)) resyncButtons(); } //}}} //{{{ buildGUI //################################################################################################## /** Defaults to showing both button panel and slider panel */ public void buildGUI() { buildGUI(true, true); } /** * Called after the constructor has finished, this starts a cascade that creates all subcomponents and initializes them. * After calling this, be sure to call pack() and setVisible(true) to make everything appear on screen. */ public void buildGUI(boolean useButtons, boolean useSliders) { Container content = this; Component graphicsArea, buttonArea, topArea, bottomArea, totalArea; // Build major sub-components graphicsArea = kMain.getCanvas(); buttonArea = buildButtons(); bottomArea = buildBottomArea(); // Build top component -- horizontal splitter if(useButtons) { minorSplit = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, graphicsArea, buttonArea); minorSplit.setOneTouchExpandable(true); minorSplit.setResizeWeight(1.0); // gives all extra space to the left side (graphics) topArea = minorSplit; } else { minorSplit = null; topArea = graphicsArea; } // Build total GUI -- vertical splitter if(useSliders) { majorSplit = new JSplitPane(JSplitPane.VERTICAL_SPLIT, topArea, bottomArea); majorSplit.setOneTouchExpandable(true); majorSplit.setResizeWeight(1.0); // gives all extra space to the top side (graphics) content.add(majorSplit, BorderLayout.CENTER); } else { majorSplit = null; content.add(topArea, BorderLayout.CENTER); } } //}}} //{{{ get/setGraphicsComponent //################################################################################################## /** Sets the component that will occupy KinCanvas's usual space */ public void setGraphicsComponent(Component c) { if(minorSplit == null) { if(majorSplit == null) { this.removeAll(); this.add(c); } else majorSplit.setTopComponent(c); } else minorSplit.setLeftComponent(c); } /** Gets the component currently acting as the drawing surface */ public Component getGraphicsComponent() { if(minorSplit == null) { if(majorSplit == null) return this.getComponent(0); else return majorSplit.getTopComponent(); } else return minorSplit.getLeftComponent(); } //}}} //{{{ resetSplits //################################################################################################## /** Resizes both splits to their preferred sizes. */ public void resetSplits() { majorSplit.resetToPreferredSizes(); // graphics+buttons vs. zoom/clip minorSplit.resetToPreferredSizes(); // graphics vs. buttons } //}}} //{{{ buildButtons //################################################################################################## JComponent buildButtons() { // Build the buttons later; create a scrolling panel for them now buttonScroll = new JScrollPane(); buttonScroll.setPreferredSize(new Dimension(150,200)); buttonScroll.getVerticalScrollBar().setUnitIncrement(16); // This ^ makes scrolling reasonably fast, like other programs - DAK 090501 // Build the kinemage chooser JScrollPane chooserScroll = new JScrollPane(kMain.getStable().getChooser()); // Put tabbed panel into another panel along with kin chooser JPanel overpanel = new JPanel(new BorderLayout()); overpanel.add(chooserScroll, BorderLayout.NORTH); overpanel.add(buttonScroll, BorderLayout.CENTER); return overpanel; } //}}} //{{{ rebuildButtons, age/masterButtons //############################################################################## public Container rebuildButtons(Kinemage k) { btnMap.clear(); Box buttonBox = Box.createVerticalBox(); for(KGroup g : k) ageButtons(g, buttonBox); buttonBox.add(Box.createRigidArea(new Dimension(0,15))); //k.ensureAllMastersExist(); for(MasterGroup m : k.masterList()) masterButtons(m, buttonBox); return buttonBox; } void ageButtons(AGE age, Container cont) { String name = age.getName(); if(age instanceof KGroup) { KGroup group = (KGroup) age; if(group.isAnimate()) name = "* "+name; else if(group.is2Animate()) name = "% "+name; } JCheckBox cbox = new JCheckBox(name, age.isOn()); cbox.setBorder(BorderFactory.createEmptyBorder(1,2,1,2)); if(age.hasButton()) { cbox.addActionListener(new ButtonListener(cbox, age)); btnMap.put(cbox, age); cont.add(cbox); } if(!age.isDominant() && !(age instanceof KList)) { AlignBox subbox = new AlignBox(BoxLayout.Y_AXIS); subbox.setAlignmentX(Component.LEFT_ALIGNMENT); for(Object ahe : age) ageButtons((AGE) ahe, subbox); IndentBox ibox; if(age.isCollapsible()) ibox = new FoldingBox(cbox, subbox); else ibox = new IndentBox(subbox); ibox.setIndent(8); cont.add(ibox); } } void masterButtons(MasterGroup m, Container cont) { if(m.hasButton()) { JCheckBox cbox = new JCheckBox(m.getName(), m.isOn()); cbox.setBorder(BorderFactory.createEmptyBorder(1,2,1,2)); cbox.addActionListener(new ButtonListener(cbox, m)); btnMap.put(cbox, m); if(m.getIndent()) { IndentBox ibox = new IndentBox(cbox); ibox.setIndent(8); cont.add(ibox); } else cont.add(cbox); } } //}}} //{{{ resyncButtons //############################################################################## void resyncButtons() { for(Map.Entry e : btnMap.entrySet()) { JCheckBox cbox = e.getKey(); AGE age = e.getValue(); // This does not fire an ActionEvent (thankfully) if(cbox.isSelected() != age.isOn()) cbox.setSelected( age.isOn() ); } } //}}} //{{{ buildBottomArea //################################################################################################## // Assembles the area that holds depth clipping, show markers, pickcenter, etc. Component buildBottomArea() { JLabel zoomLabel = new JLabel("Zoom"); JSlider zoomSlider = new JSlider(kMain.getCanvas().getZoomModel()); JLabel clipLabel = new JLabel("Clipping"); JSlider clipSlider = new JSlider(kMain.getCanvas().getClipModel()); JButton hierarchyButton = new JButton(new ReflectiveAction("Show hierarchy", null, this, "onShowHierarchy")); hierarchyButton.setToolTipText("Show an editable tree view of the kinemage"); TablePane2 bottomPane = new TablePane2(); //bottomPane.setBorder( BorderFactory.createEmptyBorder(4,1,2,1) ); //TLBR bottomPane.weights(0,1).insets(1).hfill(true).memorize(); bottomPane.addCell(zoomLabel).weights(1,1).addCell(zoomSlider); bottomPane.addCell(kMain.getCanvas().getPickcenterButton()); if(kMain.getTextWindow() != null) { JButton textButton = kMain.getTextWindow().getButton(); textButton.setToolTipText("Display/edit the textual annotation of this kinemage"); bottomPane.addCell(textButton); } else bottomPane.skip(); bottomPane.newRow(); bottomPane.addCell(clipLabel).weights(1,1).addCell(clipSlider); bottomPane.addCell(kMain.getCanvas().getMarkersButton()); bottomPane.addCell(hierarchyButton); bottomPane.newRow(); return bottomPane; } //}}} //{{{ setButtons //################################################################################################## public void setButtons(Component c) { KingPrefs prefs = kMain.getPrefs(); Kinemage kin = kMain.getKinemage(); if(kin == null || prefs == null) { buttonScroll.setViewportView(c); return; } TablePane2 cp = new TablePane2(); cp.hfill(true).vfill(true).insets(0).addCell(c,2,1).newRow(); cp.weights(1,0).insets(1).memorize(); if(kin.hasAnimateGroups()) { JButton backButton = new JButton(new ReflectiveAction(null, prefs.stepBackIcon, this, "onAnimBackward")); backButton.setToolTipText("Step backward one frame in the main animation"); JButton fwdButton = new JButton(new ReflectiveAction(null, prefs.stepForwardIcon, this, "onAnimForward")); fwdButton.setToolTipText("Step forward one frame in the main animation"); cp.addCell(cp.strut(0,8),2,1).newRow(); cp.center().addCell(new JLabel("Animate"),2,1).newRow(); cp.right().addCell(backButton).left().addCell(fwdButton).newRow(); } if(kin.has2AnimateGroups()) { JButton backButton = new JButton(new ReflectiveAction(null, prefs.stepBackIcon, this, "onAnim2Backward")); backButton.setToolTipText("Step backward one frame in the secondary animation"); JButton fwdButton = new JButton(new ReflectiveAction(null, prefs.stepForwardIcon, this, "onAnim2Forward")); fwdButton.setToolTipText("Step forward one frame in the secondary animation"); cp.addCell(cp.strut(0,8),2,1).newRow(); cp.center().addCell(new JLabel("2-Animate"),2,1).newRow(); cp.right().addCell(backButton).left().addCell(fwdButton).newRow(); } buttonScroll.setViewportView(cp); // Makes sure that the brushed metal look appears on OS X. // java.swing.Boxes apparently don't draw their background correctly. // Aiieee! This just makes it worse. Half stripped, half metal! //JPanel wrapper = new JPanel(new BorderLayout()); //wrapper.add(c, BorderLayout.CENTER); //buttonScroll.setViewportView(wrapper); } //}}} //{{{ onAnim(2)Forward, onAnim(2)Backward, onShowHierarchy //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAnimForward(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null) k.animate(1); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAnimBackward(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null) k.animate(-1); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAnim2Forward(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null) k.animate2(1); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAnim2Backward(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null) k.animate2(-1); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowHierarchy(ActionEvent ev) { KinTree win = kMain.getKinTree(); if(win != null) win.show(); } //}}} //{{{ onAccumulate(2), onDecumulate(2) //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAccumulate(ActionEvent ev) { Kinemage k = kMain.getKinemage(); //if(k != null) k.accumulate(); if(k != null) k.accumulate(1); // now can accumulate or "decumulate" -- DAK 090930 } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAccumulate2(ActionEvent ev) { Kinemage k = kMain.getKinemage(); //if(k != null) k.accumulate2(); if(k != null) k.accumulate2(1); // now can accumulate or "decumulate" -- DAK 090930 } // DAK 090930 // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDecumulate(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null) k.accumulate(-1); } // DAK 090930 // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDecumulate2(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null) k.accumulate2(-1); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/ColorPicker.java0000644000000000000000000002451411531212654017347 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; //}}} /** * ColorPicker is a graphical color picker * for KPaint objects. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Jun 26 11:46:23 EDT 2003 */ public class ColorPicker extends TablePane2 implements MouseListener { //{{{ Constants //}}} //{{{ CLASS: ColorPatch //################################################################################################## /** A little patch of color that responds to mouse clicks. */ protected class ColorPatch extends JComponent implements MouseListener { KPaint paint; boolean isSelected = false; protected ColorPatch(KPaint paint) { super(); this.paint = paint; setMinimumSize(patchSize); setPreferredSize(patchSize); setMaximumSize(patchSize); setToolTipText(paint.toString()); addMouseListener(this); } /** Paints our component to the screen */ protected void paintComponent(Graphics g) { super.paintComponent(g); // this does nothing b/c we have no UI delegate Graphics2D g2 = (Graphics2D)g; Dimension dim = this.getSize(); Paint[] colors = paint.getPaints(backgroundMode); // First band occupies half height, others divide remainder evenly int start = 0, height = dim.height/2; for(int i = KPaint.COLOR_LEVELS-1 ; i >= 0; i--) { g2.setPaint(colors[i]); g2.fillRect(0, start, dim.width, height); start += height; height = (dim.height - start) / (i<1 ? 1 : i); } if(isSelected) { g2.setPaint(highlight); g2.drawRect(0, 0, dim.width-1, dim.height-1); } } public void mouseClicked(MouseEvent ev) { selectPatch(this); } public void mouseEntered(MouseEvent ev) {} public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) {} public void mouseReleased(MouseEvent ev) {} } //}}} //{{{ Variable definitions //################################################################################################## protected int backgroundMode; protected Dimension patchSize; protected Component filler; protected SwapBox extraPatchBox; protected Color background; protected Color highlight; protected ColorPatch selectedPatch = null; /** Map<String, ColorPatch> for setSelection() */ protected Map patchMap = new HashMap(); protected Map extraMap = new HashMap(); /** List of listeners for ChangeEvents */ protected Collection changeListeners = new ArrayList(); /** Seems to be roughly the practical limit for fitting color patches into * 'Edit list/point properties' windows (DAK 090507) */ int maxNumNewColors = 36; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public ColorPicker(int backgroundMode, int patchWidth) { super(); this.patchSize = new Dimension(patchWidth, patchWidth); this.filler = Box.createRigidArea(patchSize); this.extraPatchBox = new SwapBox(null); // empty for now this.setBackgroundMode(backgroundMode); this.setToolTipText("Click empty space to deselect all colors"); this.addMouseListener(this); addPatch(KPalette.red); addPatch(KPalette.pink); addPatch(KPalette.pinktint); addFiller(); newRow(); addPatch(KPalette.orange); addPatch(KPalette.peach); addPatch(KPalette.peachtint); addFiller(); newRow(); addPatch(KPalette.gold); addFiller(); addFiller(); addFiller(); newRow(); addPatch(KPalette.yellow); addPatch(KPalette.yellow); addPatch(KPalette.yellowtint); addFiller(); newRow(); addPatch(KPalette.lime); addFiller(); addFiller(); addFiller(); newRow(); addPatch(KPalette.green); addPatch(KPalette.sea); addPatch(KPalette.greentint); addFiller(); newRow(); addPatch(KPalette.sea); addFiller(); addFiller(); addPatch(KPalette.white); newRow(); addPatch(KPalette.cyan); addFiller(); addFiller(); addPatch(KPalette.gray); newRow(); addPatch(KPalette.sky); addFiller(); addFiller(); addPatch(KPalette.brown); newRow(); addPatch(KPalette.blue); addPatch(KPalette.sky); addPatch(KPalette.bluetint); addFiller(); newRow(); addPatch(KPalette.purple); addPatch(KPalette.lilac); addPatch(KPalette.lilactint); addFiller(); newRow(); addPatch(KPalette.magenta); addFiller(); addFiller(); addPatch(KPalette.deadwhite); newRow(); addPatch(KPalette.hotpink); addFiller(); addPatch(KPalette.invisible); addPatch(KPalette.deadblack); newRow(); insets(0).hfill(true).vfill(true); addCell(extraPatchBox, 4, 1); } //}}} //{{{ addPatch, addFiller, selectPatch //################################################################################################## private void addPatch(KPaint paint) { ColorPatch patch = new ColorPatch(paint); this.addCell(patch); patchMap.put(paint.toString(), patch); } private void addFiller() { this.addCell(filler); } protected void selectPatch(ColorPatch newSelection) { if(selectedPatch != null) { selectedPatch.isSelected = false; selectedPatch.repaint(); } selectedPatch = newSelection; if(selectedPatch != null) { selectedPatch.isSelected = true; selectedPatch.repaint(); } fireStateChanged(); } //}}} //{{{ add/removeChangeListener, fireStateChanged //################################################################################################## public void addChangeListener(ChangeListener l) { changeListeners.add(l); } public void removeChangeListener(ChangeListener l) { changeListeners.remove(l); } /** Notifies all listeners and repaints this component */ protected void fireStateChanged() { ChangeEvent ev = new ChangeEvent(this); for(ChangeListener l : changeListeners) l.stateChanged(ev); } //}}} //{{{ get/set{Selection, BackgroundMode} //################################################################################################## /** Returns the selected KPaint, or null for none */ public KPaint getSelection() { if(selectedPatch == null) return null; else return selectedPatch.paint; } public void setSelection(String color) { ColorPatch patch = patchMap.get(color); if(patch == null) patch = extraMap.get(color); selectPatch(patch); } public void setSelection(KPaint color) { if(color == null) setSelection((String)null); else setSelection(color.toString()); } /** Returns one of the KPaint background mode integers. */ public int getBackgroundMode() { return backgroundMode; } public void setBackgroundMode(int mode) { this.backgroundMode = mode; if(backgroundMode == KPaint.BLACK_COLOR) { background = KPaint.black; highlight = KPaint.white; } else if(backgroundMode == KPaint.BLACK_MONO) { background = KPaint.black; highlight = KPaint.white; } else if(backgroundMode == KPaint.WHITE_COLOR) { background = KPaint.white; highlight = KPaint.black; } else if(backgroundMode == KPaint.WHITE_MONO) { background = KPaint.white; highlight = KPaint.black; } setOpaque(true); setBackground(background); repaint(); } //}}} //{{{ setExtras //################################################################################################## /** * Allows this component to display extra colors, e.g. from colorsets. * Usually fed the output of Kinemage.getNewPaintMap().values(). * @param kPaints a Collection<KPaint>; may be null. */ public void setExtras(Collection kPaints) { extraPatchBox.setTarget(null); extraMap.clear(); if(kPaints == null) return; int i = 0; TablePane2 tp = new TablePane2(); tp.setOpaque(false); // lets black/white show through for(KPaint paint : kPaints) { if(i >= maxNumNewColors) { System.err.println("Too many user-defined colors: "+kPaints.size()+" (max = "+maxNumNewColors+")"); break; } ColorPatch patch = new ColorPatch(paint); tp.addCell(patch); extraMap.put(paint.toString(), patch); if(++i % 4 == 0) tp.newRow(); } extraPatchBox.setTarget(tp); } //}}} //{{{ mouse{Clicked, Entered, Exited, Pressed, Released} //################################################################################################## public void mouseClicked(MouseEvent ev) { selectPatch(null); } public void mouseEntered(MouseEvent ev) {} public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) {} public void mouseReleased(MouseEvent ev) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/KMessage.java0000644000000000000000000001271311531212654016630 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.lang.ref.WeakReference; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * KMessage is a base class for "messages" or "events" to be * passed around KiNG. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Mon Dec 18 14:13:27 EST 2006 */ public class KMessage //extends ... implements ... { /** The interface to be implemented by all listeners / subscribers. */ public interface Subscriber { /** Called when there is a KMessage to deliver to this Subscriber. */ public void deliverMessage(KMessage msg); } //{{{ CLASS: WeakSubscriber //############################################################################## /** * Allows one to sign up as a subscriber with KingMain, but * be automatically unsubscribed when time comes to be GC'd. * Example: * kMain.subscribe( new WeakSubscriber(kMain, realSubscriber) ) */ public static class WeakSubscriber implements Subscriber { WeakReference ref; KingMain kMain; public WeakSubscriber(KingMain kMain, Subscriber sub) { this.kMain = kMain; this.ref = new WeakReference(sub); } public void deliverMessage(KMessage msg) { Subscriber sub = this.ref.get(); if(sub == null) kMain.unsubscribe(this); else sub.deliverMessage(msg); } } //}}} //{{{ Constants /** The program has started up and initial kinemages have been loaded. */ public static final long KING_STARTUP = (1L<<0); /** A new kinemage has been loaded from disk */ public static final long KIN_LOADED = (1L<<1); /** A different kinemage has become the currently active one */ public static final long KIN_SWITCHED = (1L<<2); /** A kinemage (presumably the current one) has been closed */ public static final long KIN_CLOSED = (1L<<3); /** All open kinemages have been closed */ public static final long ALL_CLOSED = (1L<<4); /** We're preparing to save one or more open kinemages. */ public static final long PRE_KIN_SAVE = (1L<<5); /** The KingPrefs object has been updated */ public static final long PREFS_CHANGED = (1L<<6); // Not needed anymore because KView sends kinemage signals itself! ///** The current viewpoint has been altered: center moved, zoom changed, rotated, etc */ //public static final long VIEW_MOVED = (1L<<7); /** A totally different viewpoint has been selected from the Views menu */ public static final long VIEW_SELECTED = (1L<<8); /** The rendering options have changed (background color, etc) */ public static final long DISPLAY_OPTIONS = (1L<<9); /** The program is preparing to shut down -- do your clean up NOW */ public static final long KING_SHUTDOWN = (1L<<10); //}}} //{{{ Variable definitions //############################################################################## protected Object source = null; protected Kinemage kinemage = null; protected int kinChanges = 0; protected long progChanges = 0; //}}} //{{{ Constructor(s) //############################################################################## public KMessage(Object source) { this(source, 0); } /** "source" must not ever be a Kinemage, as a safety measure */ public KMessage(Object source, long progChanges) { super(); if(source instanceof Kinemage) throw new IllegalArgumentException("Source object for program-type events cannot be a Kinemage"); this.source = source; this.progChanges = progChanges; } public KMessage(Kinemage kinemage, int kinChanges) { super(); this.kinemage = kinemage; this.kinChanges = kinChanges; } //}}} //{{{ getSource/Kinemage/{Kinemage, Program}Changes //############################################################################## /** Returns the "source" or originator of this message. (May be null.) */ public Object getSource() { return this.source; } /** Returns the kinemage to which the event flags apply, if this is a kinemage message. (May be null.) */ public Kinemage getKinemage() { return this.kinemage; } public int getKinemageChanges() { return this.kinChanges; } public long getProgramChanges() { return this.progChanges; } //}}} //{{{ testKin/Prog //############################################################################## public boolean testKin(int mask) { return (this.kinChanges & mask) != 0; } public boolean testProg(long mask) { return (this.progChanges & mask) != 0; } //}}} //{{{ toString //############################################################################## public String toString() { return "[kinChanges="+Integer.toHexString(kinChanges) +",progChanges="+Long.toHexString(progChanges)+"]"; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/MainWindow.java0000644000000000000000000000251711531212654017206 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import java.awt.*; import java.awt.event.*; //import java.io.*; //import java.util.*; import javax.swing.*; //}}} /** * MainWindow is a top-level holder for a ContentPane and a menu bar. * Other than that, it doesn't do much! * *

Begun on Wed Apr 24 11:22:51 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class MainWindow extends JFrame // implements ... { //{{{ Variables //################################################################################################## //}}} //{{{ Constructor //################################################################################################## /** * Does minimal initialization for a main window. * @param kmain the KingMain that owns this window */ public MainWindow(KingMain kmain) { super("KiNG "+kmain.getPrefs().getString("version")); setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); setIconImage(kmain.prefs.windowIcon); } //}}} //{{{ shutdown //################################################################################################## /** Initiates shutdown by calling dispose() on the window. */ public void shutdown() { this.dispose(); } //}}} }//class king-2.21.120420/king/src/king/core/0000755000000000000000000000000011744310054015211 5ustar rootrootking-2.21.120420/king/src/king/core/AGE.java0000644000000000000000000002533411531212646016461 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import driftwood.r3.*; //}}} /** * AGE (Abstract Grouping Element) is the basis for * all groups, subgroups, lists, kinemages -- but does not include points. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 10:50:36 EDT 2002 */ abstract public class AGE

extends AHEImpl

implements Iterable { //{{{ Constants protected static final int FLAG_ON = (1<<0); protected static final int FLAG_NOBUTTON = (1<<1); protected static final int FLAG_DOMINANT = (1<<2); protected static final int FLAG_COLLAPSIBLE = (1<<3); protected static final int FLAG_LENS = (1<<4); protected static final int FLAG_ANIMATE = (1<<8); protected static final int FLAG_2ANIMATE = (1<<9); protected static final int FLAG_NOHILITE = (1<<10); protected static final int FLAG_SELECT = (1<<11); //}}} //{{{ Variable definitions //################################################################################################## protected P parent = null; protected ArrayList children = new ArrayList(); protected Collection masters = null; protected Transform transform = null; protected int flags = FLAG_ON; //}}} //{{{ Constructor(s) //################################################################################################## /** Constructor */ public AGE() { } //}}} //{{{ clone, get/setParent //################################################################################################## /** * Creates a deep copy of this AGE and all its children, * including make full copies of all the points. * Not all AGEs implement Cloneable, so this operation could fail. */ public AGE clone() throws CloneNotSupportedException { return clone(true); } /** * Creates a copy of this AGE and all its children. * Not all AGEs implement Cloneable, so this operation could fail. * @param clonePoints whether to clone even the individual points, * or whether we should use instance= at the list level instead. */ public AGE clone(boolean clonePoints) throws CloneNotSupportedException { return (AGE) super.clone(); } public P getParent() { return parent; } public void setParent(P owner) { parent = owner; } //}}} //{{{ add, replace, remove, clear, get/setChildren, iterator //################################################################################################## /** Adds a child to this element */ public void add(C child) { //if(child.getParent() == null) -- I think you always want this behavior child.setParent(this); children.add(child); if(child instanceof AGE) fireKinChanged(CHANGE_TREE_CONTENTS); else fireKinChanged(CHANGE_POINT_CONTENTS); } /** * Replaces oldChild with newChild, or performs an add() * of newChild if oldChild couldn't be found as part of the kinemage. * This is very useful for things like Mage's Remote Update. * @return the group actually replaced, or null for none */ public C replace(C oldChild, C newChild) { int idx = children.indexOf(oldChild); if(idx == -1) { add(newChild); return null; } else { //if(newChild.getParent() == null) newChild.setParent(this); C replaced = children.set(idx, newChild); if(newChild instanceof AGE) fireKinChanged(CHANGE_TREE_CONTENTS); else fireKinChanged(CHANGE_POINT_CONTENTS); return replaced; } } /** Removes a child from this element */ public void remove(C child) { boolean removed = children.remove(child); if(!removed) return; if(child.getParent() == this) child.setParent(null); if(child instanceof AGE) fireKinChanged(CHANGE_TREE_CONTENTS); else fireKinChanged(CHANGE_POINT_CONTENTS); } /** Removes all children from this element */ public void clear() { children.clear(); fireKinChanged(CHANGE_TREE_CONTENTS | CHANGE_POINT_CONTENTS); } /** * Returns the actual object that holds the children. * If you modify it, you must call fireKinChanged() yourself. */ public ArrayList getChildren() { return children; } /** * Replaces the current list of children with the provided one. * Uses the actual object passed in; does not make a copy. * Does NOT call setParent() on all of the new children -- * you have to do that yourself, if necessary. * Fires appropriate change events automatically. */ public void setChildren(ArrayList children) { this.children = children; fireKinChanged(CHANGE_TREE_CONTENTS | CHANGE_POINT_CONTENTS); } public Iterator iterator() { return getChildren().iterator(); } //}}} //{{{ setName, is/setOn, (set)hasButton //################################################################################################## public void setName(String nm) { super.setName(nm); fireKinChanged(CHANGE_TREE_PROPERTIES); } /** Indicates whether this element will paint itself, given the chance */ public boolean isOn() { return (flags & FLAG_ON) == FLAG_ON; } /** Sets the painting status of this element */ public void setOn(boolean b) { int oldFlags = flags; if(b) flags |= FLAG_ON; else flags &= ~FLAG_ON; if(flags != oldFlags) fireKinChanged(CHANGE_TREE_ON_OFF); } /** Indicates whether this element would display a button, given the chance */ public boolean hasButton() { return !((flags & FLAG_NOBUTTON) == FLAG_NOBUTTON); } /** Sets whether this element would display a button, given the chance */ public void setHasButton(boolean b) { int oldFlags = flags; if(!b) flags |= FLAG_NOBUTTON; else flags &= ~FLAG_NOBUTTON; if(flags != oldFlags) fireKinChanged(CHANGE_TREE_PROPERTIES); } //}}} //{{{ is/setDominant, is/setCollapsible, is/setLens //################################################################################################## /** Indicates whether this element supresses buttons of elements below it */ public boolean isDominant() { return (flags & FLAG_DOMINANT) == FLAG_DOMINANT; } /** Sets whether this element supresses buttons of elements below it */ public void setDominant(boolean b) { int oldFlags = flags; if(b) flags |= FLAG_DOMINANT; else flags &= ~FLAG_DOMINANT; if(flags != oldFlags) fireKinChanged(CHANGE_TREE_PROPERTIES); } /** Indicates whether this element supresses buttons of elements below it WHEN OFF */ public boolean isCollapsible() { return (flags & FLAG_COLLAPSIBLE) == FLAG_COLLAPSIBLE; } /** Sets whether this element supresses buttons of elements below it WHEN OFF */ public void setCollapsible(boolean b) { int oldFlags = flags; if(b) flags |= FLAG_COLLAPSIBLE; else flags &= ~FLAG_COLLAPSIBLE; if(flags != oldFlags) fireKinChanged(CHANGE_TREE_PROPERTIES); } /** * Indicates whether or not the points under this element * should be hidden if they are more than a certain distance * from the current center of viewing. * The name comes from the visualization community, where * this function is likened to a magnifying glass. */ public boolean isLens() { return (flags & FLAG_LENS) == FLAG_LENS; } public void setLens(boolean b) { int oldFlags = flags; if(b) flags |= FLAG_LENS; else flags &= ~FLAG_LENS; if(flags != oldFlags) fireKinChanged(FLAG_LENS); } //}}} //{{{ doTransform, get/setTransform, calcBoundingBox, calcRadiusSq //################################################################################################## public void doTransform(Engine engine, Transform xform) { // If the button is off, this will never be rendered if(!isOn()) return; if(this.transform != null) xform = new Transform().like(this.transform).append(xform); // Not using iterators speeds this up by a few tens of ms // Java 1.5 can do this automatically for Lists that implement RandomAccess for(C child : children) child.doTransform(engine, xform); } /** Returns the extra Transform applied to points below this element (may be null) */ public Transform getTransform() { return transform; } /** Sets the extra Transform applied to points below this element (may be null) */ public void setTransform(Transform t) { this.transform = t; } public void calcBoundingBox(float[] bound) { for(C child : children) child.calcBoundingBox(bound); } public float calcRadiusSq(float[] center) { float max = 0f; for(C child : children) max = Math.max(max, child.calcRadiusSq(center)); return max; } //}}} //{{{ addMaster, removeMaster, getMasters //################################################################################################## /** Makes the named master control this AGE */ public void addMaster(String masterName) { if(masters == null) masters = new ArrayList(5); if(!masters.contains(masterName)) { masters.add(masterName); fireKinChanged(CHANGE_TREE_MASTERS); } } /** Stops the named master from controlling this AGE. No action if it wasn't ever added. */ public void removeMaster(String masterName) { if(masters == null) return; if(masters.contains(masterName)) { masters.remove(masterName); fireKinChanged(CHANGE_TREE_MASTERS); } } /** * Returns the actual object that holds the masters. * If you modify it, you must call fireKinChanged() yourself. */ public Collection getMasters() { if(masters == null) return Collections.emptySet(); else return masters; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/core/KList.java0000644000000000000000000003533011531212646017110 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import king.points.*; // (ARK Spring2010) import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import driftwood.r3.*; //}}} /** * KList implements the concept of a list in a kinemage. * *

In principle, we could generify this class to * KList<C extends KPoint> extends AGE<:KGroup,C>, * but due to what I see as a bug in Sun's compiler, references to * KList are then treated as KList<Object> * (which isn't even legal!) rather than as KList<? extends KPoint>. * All the extra typing probably isn't worth it; * there are very few cases where you would actually get improved type safety, * because almost all functions operate on lists of any kind of point. * *

Designating the type of a list has actually turned out to be very hard. * Using an enum is not suitable, as the set of list types must be able to * grow as third parties define new point types. * Using the Class of the point type is possible, but translating it to a string * for output is problematic, and some point types are used to implement * more than one type of kinemage list (eg TrianglePoint for triangle- and ribbon-lists). * So I've fallen back on plain old Strings, which aren't type safe, but are flexible. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 12:37:31 EDT 2002 */ public class KList extends AGE implements Cloneable { //{{{ Constants public static final String VECTOR = "vector"; public static final String DOT = "dot"; public static final String MARK = "mark"; public static final String LABEL = "label"; public static final String TRIANGLE = "triangle"; public static final String RIBBON = "ribbon"; public static final String RING = "ring"; public static final String BALL = "ball"; public static final String SPHERE = "sphere"; public static final String ARROW = "arrow"; //}}} //{{{ Variable definitions //################################################################################################## protected String type; // type of object represented by this list protected KList instance = null; // the list that this one is an instance= {xxx} of (usually null) public String secondaryStructure = null; // (ARK Spring2010) public boolean flipped = false; // (ARK Spring2010), for ribbon sides protected KPaint color = KPalette.defaultColor; protected int alpha = 255; // 255 = opaque, 0 = fully transparent protected float radius = 0.2f; // seems to be default in Mage; also used for arrow tine length (radius=) protected float angle = 20f; // for ArrowPoints protected int width = 2; protected int style = 0; // style for MarkerPoints; could be alignment for labels protected Object clipMode = null; // null for default, else some object key protected int dimension = 3; // for high-dimensional kinemages protected boolean screen = false; // scale w/ screen but don't rotate/translate (like ala_dipept in Mage) (DAK 090212) protected boolean rear = false; // use the rearmost point to determine zbuffer bin. protected boolean fore = false; //}}} //{{{ Constructor(s) //################################################################################################## /** Creates a new KList of the specified type with an empty name. */ public KList(String type) { this(type, ""); } /** Creates a new KList with the specified name. */ public KList(String type, String nm) { super(); this.type = type; setName(nm); } //}}} //{{{ clone //################################################################################################## /** * Creates a copy of this group and all its children. * @param clonePoints whether to clone even the individual points, * or whether we should use instance= at the list level instead. */ public KList clone(boolean clonePoints) { try { KList x = (KList) super.clone(clonePoints); x.children = new ArrayList(); if(clonePoints) { // Deep copy of children from original source KList orig = this.getUltimateInstance(); if(orig == null) orig = this; KPoint prev = null; for(KPoint child : orig.getChildren()) { KPoint clone = (KPoint) child.clone(); x.add(clone); clone.setParent(x); // Everything has been deep copied; we just need // to correct the linked-list pointers for // VectorPoints and TrianglePoints. if(clone.getPrev() != null) clone.setPrev(prev); prev = clone; } } else // we'll use instance= to fake it! { if(this.getInstance() == null) x.setInstance(this); else x.setInstance(this.getInstance()); } // Semi-deep copy of masters, which just contains Strings if(this.masters != null) x.masters = new ArrayList(this.masters); return x; } catch(CloneNotSupportedException ex) { throw new Error("Clone failed in cloneable object"); } } //}}} //{{{ get/set(Ultimate)Instance //################################################################################################## /** Sets which list this one is an instance of, or null for none. */ public void setInstance(KList inst) { this.instance = inst; fireKinChanged(CHANGE_POINT_CONTENTS); } /** Gets which list this one is an instance of, or null for none. */ public KList getInstance() { return this.instance; } /** In case of a chain of instance-of relationships, finds the list at the end of the chain. */ public KList getUltimateInstance() { KList inst = this.getInstance(); if(inst == null) return null; else { while(inst.getInstance() != null) inst = inst.getInstance(); return inst; } } //}}} //{{{ get/set{Type, SecStruc, Color, Width, Radius, Alpha, Screen} //################################################################################################## /** Determines the type of points held by this list */ public String getType() { return type; } /** Determines the SS of points held by this list */ // (ARK Spring2010) public String getSecStruc() { return secondaryStructure; } public void setSecStruc(String secStruc) // (ARK Spring2010) { secondaryStructure = secStruc; fireKinChanged(CHANGE_LIST_PROPERTIES); } /** Determines the default color of points held by this list */ public KPaint getColor() { return color; } /** Establishes the default color of points held by this list */ public void setColor(KPaint c) { color = c; fireKinChanged(CHANGE_LIST_PROPERTIES); } /** Determines the default width of points held by this list */ public int getWidth() { return width; } /** Establishes the default width of points held by this list */ public void setWidth(int w) { if(w > 7) width = 7; else if(w < 1) width = 1; else width = w; fireKinChanged(CHANGE_LIST_PROPERTIES); } public float getRadius() { return radius; } public void setRadius(float r) { radius = r; fireKinChanged(CHANGE_LIST_PROPERTIES); } /** Gets the translucency of points in this list, from 0 (invisible) to 255 (opaque). */ public int getAlpha() { return alpha; } /** Sets the translucency of points in this list, from 0 (invisible) to 255 (opaque). */ public void setAlpha(int a) { alpha = a; } /** Sets screen variable for this list (DAK 090212). */ public void setScreen(boolean scr) { this.screen = scr; // also set width & radius to defaults to avoid scaling-on-zoom confusion? fireKinChanged(CHANGE_LIST_PROPERTIES); } /** Gets screen variable for this list (DAK 090212). */ public boolean getScreen() { return this.screen; } /** Sets rear variable for this list. */ public void setRear(boolean rr) { this.rear = rr; fireKinChanged(CHANGE_LIST_PROPERTIES); } /** Gets rear variable for this list. */ public boolean getRear() { return this.rear; } /** Sets fore variable for this list. */ public void setFore(boolean rr) { this.fore = rr; fireKinChanged(CHANGE_LIST_PROPERTIES); } /** Gets fore variable for this list. */ public boolean getFore() { return this.fore; } //}}} //{{{ get/set{Angle, Style, ClipMode, Dimension, NoHighlight} //################################################################################################## /** For use with ArrowPoint */ public float getAngle() { return angle; } public void setAngle(float a) { angle = a; fireKinChanged(CHANGE_LIST_PROPERTIES); } /** For use with MarkerPoint */ public int getStyle() { return style; } public void setStyle(int s) { style = s; fireKinChanged(CHANGE_LIST_PROPERTIES); } /** Gets the clipping mode key for this list. Usually null. See Engine.chooseClipMode(). */ public Object getClipMode() { return clipMode; } /** Sets the clipping mode for this list. */ public void setClipMode(Object key) { this.clipMode = key; fireKinChanged(CHANGE_LIST_PROPERTIES); } /** Returns the nominal number of coordinates per point in this list. */ public int getDimension() { return this.dimension; } /** Sets the nominal number of coordinates per point in this list. */ public void setDimension(int d) { this.dimension = d; fireKinChanged(CHANGE_LIST_PROPERTIES); } /** Indicates whether BallPoints should have their highlights supressed. */ public boolean getNoHighlight() { return (flags & FLAG_NOHILITE) == FLAG_NOHILITE; } /** Sets whether BallPoints should have their highlights supressed. */ public void setNoHighlight(boolean b) { int oldFlags = flags; if(b) flags |= FLAG_NOHILITE; else flags &= ~FLAG_NOHILITE; if(flags != oldFlags) fireKinChanged(CHANGE_TREE_PROPERTIES); } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform) { // If the button is off, this will never be rendered if(!isOn()) return; if(this.clipMode != null) engine.chooseClipMode(this.clipMode); // set alt clipping // If we're an instance of someone else, transform those points too KList inst = getUltimateInstance(); if(inst != null) { engine.setActingParent(this); Transform myXform = xform; if(inst.getTransform() != null) myXform = new Transform().like(inst.getTransform()).append(xform); for(KPoint child : inst.getChildren()) child.doTransform(engine, myXform, engine.zoom3D); } engine.setActingParent(null); Transform myXform = xform; if(this.getTransform() != null) myXform = new Transform().like(this.getTransform()).append(xform); for(KPoint child : this.getChildren()) child.doTransform(engine, myXform, engine.zoom3D); // Messing with 'screen' keyword on lists for keeping children fixed on screen /* if(this.screen) { for(KPoint child : this.getChildren()) { System.err.println("canvas rect:"+engine.pickingRect); double width, height, size, xOff, yOff; width = engine.pickingRect.getWidth(); height = engine.pickingRect.getHeight(); size = Math.min(width, height); xOff = engine.pickingRect.getX() + width/2.0; yOff = engine.pickingRect.getY() + height/2.0; Transform ret = new Transform(), work = new Transform(); work.likeTranslation(xOff-child.getDrawX(), yOff-child.getDrawY(), 0); ret.append(work); work.likeScale(200.0); // <- ?? ret.append(work); System.err.println(child+" orig : ("+child.getX()+","+child.getY()+","+child.getZ()+")"); //System.err.println(child+" b4 mv: ("+child.getDrawX()+","+child.getDrawY()+","+child.getDrawZ()+")"); child.doTransform(engine, ret, engine.zoom3D); System.err.println(child+" xfrmd: ("+child.getDrawX()+","+child.getDrawY()+","+child.getDrawZ()+")"); System.err.println(child+" xform:\n"+ret); //System.err.println(); } } else for(KPoint child : this.getChildren()) child.doTransform(engine, myXform, engine.zoom3D); */ if(this.clipMode != null) engine.chooseClipMode(null); // reset to default } //}}} //{{{ flipOrder //################################################################################################## /** Changes the order of points to effectively flip a ribbon. ((ARK Spring2010))*/ public void flipOrder() { Triple tempXYZ = new Triple(); // swap every other point with it's successor // last point (arrow tip) stays unchanged for(int i=0; iPainter is a standard interface for classes that are capable of * rendering transformed KPoints as 2-D images (usually on the screen). * *

Copyright (C) 2004-2007 by Ian W. Davis. All rights reserved. *
Begun on Fri May 21 19:11:16 EDT 2004 */ public interface Painter //extends ... implements ... { public void paintBall(Paint paint, double x, double y, double z, double r, boolean showHighlight); public void paintDot(Paint paint, double x, double y, double z, int width); public void paintLabel(Paint paint, String label, double x, double y, double z); public void paintMarker(Paint paint, double x, double y, double z, int width, int paintStyle); public void paintSphereDisk(Paint paint, double x, double y, double z, double r); public void paintTriangle(Paint paint, double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3); public void paintVector(Paint paint, int width, int widthCue, double x1, double y1, double z1, double x2, double y2, double z2); // Used by the auger tool for its targeting circle /** x,y,z is CENTER, not edge like it is for Java AWT functions */ public void drawOval(Paint paint, double x, double y, double z, double width, double height); public void drawOval(Paint paint, int linewidth, int widthCue, double x, double y, double z, double width, double height); public void setFont(Font f); public int getLabelWidth(String s); public int getLabelAscent(String s); public int getLabelDescent(String s); public void setViewport(int x, int y, int width, int height); public void clearCanvas(Color color); // setViewport() must be called first! }//class king-2.21.120420/king/src/king/core/KPalette.java0000644000000000000000000003074111531212646017574 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; //}}} /** * KPalette organizes the canonical Mage colors. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Jun 25 15:37:14 EDT 2003 */ public class KPalette //extends ... implements ... { //{{{ Pens /** Scaling factors for width at different depth-cue levels */ public static final float[] widthScale = new float[KPaint.COLOR_LEVELS]; /** A zero-width pen for objects that should be filled instead. */ public static final BasicStroke pen0 = new BasicStroke(0, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); /** A one pixel thick pen for ordinary drawing. */ public static final BasicStroke pen1 = new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); /** The set of various pens for drawing depth-cued lines in different widths. */ public static final BasicStroke[][] pens = new BasicStroke[7][KPaint.COLOR_LEVELS]; /** The set of line widths used for basic drawing, adjusted by widthScale. */ public static final int[][] lineWidths = new int[7][KPaint.COLOR_LEVELS]; /** * This version of line widths emulates MAGE. * Line width multipliers scale linearly from 0.5 to 2.0. * It's not realistic with respect to the laws of optical perspective, * but it is more pronounced than my old version. */ static { for(int i = 0; i < KPaint.COLOR_LEVELS; i++) { double a = i / (KPaint.COLOR_LEVELS-1.0); widthScale[i] = (float)(a*2.0 + (1-a)*0.5); } // No depth cueing by width for really thin lines for(int j = 0; j < KPaint.COLOR_LEVELS; j++) { lineWidths[0][j] = 1; pens[0][j] = pen1; } // All other line thicknesses get depth cueing for(int i = 1; i < 7; i++) { for(int j = 0; j < KPaint.COLOR_LEVELS; j++) { lineWidths[i][j] = Math.max(1, (int)((i+1)*widthScale[j] + 0.5)); pens[i][j] = new BasicStroke((i+1)*widthScale[j], BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); } } } /** Jane feels this doesn't give a strong enough effect * / // I don't remember what this code is calculating anymore. // I think it has to do with perspective, so that lines // shrink in the background as though they were cylinders // according to the normal rules of perspective. static { double half = (KPaint.COLOR_LEVELS-1.0) / 2.0; double quot = 3.0 * half; for(int i = 0; i < KPaint.COLOR_LEVELS; i++) { widthScale[i] = (float)(1.0 / (1.0 - (i-half)/quot)); } for(int i = 0; i < 7; i++) { for(int j = 0; j < KPaint.COLOR_LEVELS; j++) { pens[i][j] = new BasicStroke((i+1)*widthScale[j], BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); } } } /** Jane feels this doesn't give a strong enough effect */ //}}} //{{{ Colors //################################################################################################## // Create standard entries // name hue bSat wSat bVal wVal //public static final KPaint defaultColor = KPaint.createHSV("default", 0, 0, 0, 100, 0); public static final KPaint red = KPaint.createHSV("red", 0, 100, 100, 100, 80); public static final KPaint orange = KPaint.createHSV("orange", 20, 100, 100, 100, 90); //public static final KPaint rust = KPaint.createHSV("rust", 20, 100, 100, 100, 90); public static final KPaint gold = KPaint.createHSV("gold", 40, 100, 100, 100, 90); public static final KPaint yellow = KPaint.createHSV("yellow", 60, 100, 100, 100, 90); public static final KPaint lime = KPaint.createHSV("lime", 80, 100, 100, 100, 85); public static final KPaint green = KPaint.createHSV("green", 120, 80, 90, 100, 75); public static final KPaint sea = KPaint.createHSV("sea", 150, 100, 100, 100, 85); //public static final KPaint seagreen = KPaint.createHSV("seagreen", 150, 100, 100, 100, 85); public static final KPaint cyan = KPaint.createHSV("cyan", 180, 100, 85, 85, 80); public static final KPaint sky = KPaint.createHSV("sky", 210, 75, 80, 95, 90); //public static final KPaint skyblue = KPaint.createHSV("skyblue", 210, 75, 80, 95, 90); public static final KPaint blue = KPaint.createHSV("blue", 240, 70, 80, 100, 100); public static final KPaint purple = KPaint.createHSV("purple", 275, 75, 100, 100, 85); public static final KPaint magenta = KPaint.createHSV("magenta", 300, 95, 100, 100, 90); public static final KPaint hotpink = KPaint.createHSV("hotpink", 335, 100, 100, 100, 90); public static final KPaint pink = KPaint.createHSV("pink", 350, 55, 75, 100, 90); public static final KPaint peach = KPaint.createHSV("peach", 25, 75, 75, 100, 90); public static final KPaint lilac = KPaint.createHSV("lilac", 275, 55, 75, 100, 80); public static final KPaint pinktint = KPaint.createHSV("pinktint", 340, 30, 100, 100, 55); public static final KPaint peachtint = KPaint.createHSV("peachtint", 25, 50, 100, 100, 60); public static final KPaint yellowtint = KPaint.createHSV("yellowtint",60, 50, 100, 100, 75); //public static final KPaint paleyellow = KPaint.createHSV("paleyellow",60, 50, 100, 100, 75); public static final KPaint greentint = KPaint.createHSV("greentint", 135, 40, 100, 100, 35); public static final KPaint bluetint = KPaint.createHSV("bluetint", 220, 40, 100, 100, 50); public static final KPaint lilactint = KPaint.createHSV("lilactint", 275, 35, 100, 100, 45); public static final KPaint white = KPaint.createHSV("white", 0, 0, 0, 100, 0); public static final KPaint gray = KPaint.createHSV("gray", 0, 0, 0, 50, 40); //public static final KPaint grey = KPaint.createHSV("grey", 0, 0, 0, 50, 40); public static final KPaint brown = KPaint.createHSV("brown", 20, 45, 45, 75, 55); public static final KPaint deadwhite = KPaint.createSolid("deadwhite", KPaint.white); public static final KPaint deadblack = KPaint.createSolid("deadblack", KPaint.black); //public static final KPaint black = KPaint.createSolid("black", Color.black); public static final KPaint invisible = KPaint.createInvisible("invisible"); public static final KPaint defaultColor = white; //}}} //{{{ Color map //################################################################################################## private static final Map stdColorMap; // unmodifiable once created private static final Map fullColorMap; // unmodifiable once created static { Map map = new UberMap(); map.put(red.toString(), red); map.put(pink.toString(), pink); map.put(pinktint.toString(), pinktint); map.put(orange.toString(), orange); map.put(peach.toString(), peach); map.put(peachtint.toString(), peachtint); map.put(gold.toString(), gold); map.put(yellow.toString(), yellow); map.put(yellowtint.toString(), yellowtint); map.put(lime.toString(), lime); map.put(green.toString(), green); map.put(greentint.toString(), greentint); map.put(sea.toString(), sea); map.put(cyan.toString(), cyan); map.put(sky.toString(), sky); map.put(blue.toString(), blue); map.put(bluetint.toString(), bluetint); map.put(purple.toString(), purple); map.put(lilac.toString(), lilac); map.put(lilactint.toString(), lilactint); map.put(magenta.toString(), magenta); map.put(hotpink.toString(), hotpink); map.put(white.toString(), white); map.put(gray.toString(), gray); map.put(brown.toString(), brown); map.put(deadwhite.toString(), deadwhite); map.put(deadblack.toString(), deadblack); map.put(invisible.toString(), invisible); stdColorMap = Collections.unmodifiableMap(map); map = new UberMap(map); map.put("default", defaultColor); map.put("rust", orange); map.put("seagreen", sea); map.put("skyblue", sky); map.put("paleyellow", yellowtint); map.put("grey", gray); map.put("black", deadblack); fullColorMap = Collections.unmodifiableMap(map); } //}}} //{{{ Aspect table //################################################################################################## private static final KPaint[] aspectTable; static { aspectTable = new KPaint[256]; Arrays.fill(aspectTable, null); addAspect('A', red); addAspect('B', orange); addAspect('C', gold); addAspect('D', yellow); addAspect('E', lime); addAspect('F', green); addAspect('G', sea); addAspect('H', cyan); addAspect('I', sky); addAspect('J', blue); addAspect('K', purple); addAspect('L', magenta); addAspect('M', hotpink); addAspect('N', pink); addAspect('O', lilac); addAspect('P', peach); addAspect('Q', peachtint); addAspect('R', yellowtint); addAspect('S', greentint); addAspect('T', bluetint); addAspect('U', lilactint); addAspect('V', pinktint); addAspect('W', white); addAspect('X', gray); addAspect('Y', brown); addAspect('Z', invisible); } static private void addAspect(char key, KPaint color) { int upper = Character.toUpperCase(key); int lower = Character.toLowerCase(key); aspectTable[upper] = aspectTable[lower] = color; } //}}} //{{{ Constructor(s) //################################################################################################## /** * Not instantiable */ private KPalette() { } //}}} //{{{ forName, forAspect, getStandard/FullMap //################################################################################################## /** Returns the named KPaint or null if none is known. */ static public KPaint forName(String name) { return fullColorMap.get(name); } /** Returns the KPaint for the given aspect, or null if bad aspect */ static public KPaint forAspect(char aspect) { if(aspect < 0 || aspect > 255) return null; else return aspectTable[aspect]; } /** * Returns a Map<String, KPaint> of the predefined Mage colors. * This map includes one entry for each unique color, using its preferred name. */ static public Map getStandardMap() { return stdColorMap; } /** * Returns a Map<String, KPaint> of the predefined Mage colors. * This map includes extra entries for alternate spellings and * older, deprecated color names. */ static public Map getFullMap() { return fullColorMap; } //}}} //{{{ setContrast //################################################################################################## /** * Adjusts the contrast for the entire palette. * A contrast of less than 1.0 is flat, and greater than 1.0 is exagerated. */ static public void setContrast(double alpha) { for(KPaint p : getFullMap().values()) p.setContrast(alpha); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/core/Engine.java0000644000000000000000000005540311531212646017272 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.geom.*; import java.util.*; import javax.swing.*; import driftwood.r3.*; import driftwood.util.*;; //}}} /** * Engine is responsible for transforming coordinates, Z-buffering, * and requesting that points render themselves. * Engine itself contains all of the transformation and picking logic. * Engine2D also does "traditional" drawing using java.awt.Graphics objects, * based on the transformed coordinates. * Other Engine subclasses may do drawing e.g. via OpenGL calls, and only * do coordinate transforms in software for the purpose of picking. * *

Because KPoints can only store ONE set of transformed coordinates at a time, * and because there may be multiple Engines rendering different views of the same kinemage, * you MUST re-transform the kinemage immediately prior to doing any picking operations. * *

Begun on Mon Apr 22 17:21:31 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ abstract public class Engine //extends ... implements ... { //{{{ Constants // Parameters for coloing the backsides of alpha and beta ribbons public static final Triple defBackHSValpha = new Triple(360,90,35); // (ARK Spring2010) public static final Triple defBackHSVbeta = new Triple(330,100,100); // (ARK Spring2010) //}}} //{{{ Variables //################################################################################################## /** READ ONLY: The highest layer in the rendering Z-buffer */ public final int TOP_LAYER; // READ ONLY: Parameters for transforming geometry public Transform xform3D = null; public Transform xform2D = null; public double zoom3D = 1; public double zoom2D = 1; public double clipBack = 0; public double clipFront = 1; public double clipDepth = 1; public double perspDist = 2000; // READ ONLY: Parameters for painting points public boolean useObjPicking = false; // should we pick triangles, lines, balls as solid objects? public boolean bigMarkers = false; public boolean bigLabels = false; public boolean cueIntensity = true; public boolean monochrome = false; public int widthCue = 0; // cue passed to point, between 0 and 4 public int colorCue = 0; // cue passed to point, between 0 and 4 public int activeAspect = 0; // 0 -> don't use aspects, x -> use aspect x if present public int markerSize = 1; public Font labelFont = null; public int backgroundMode = -1; public Triple lightingVector = new Triple(-1, 1, 3).unit(); public Rectangle pickingRect = new Rectangle(); // bounds of one side of stero area or whole canvas // READ ONLY: These are set from Kinemage obj by KinCanvas on every drawing pass. // Changing them here will have NO EFFECT because they'll be overwritten. public boolean usePerspective = false; public boolean cueThickness = false; public boolean thinLines = false; public boolean whiteBackground = false; public boolean colorByList = false; public boolean ribbonSidesAlpha = true; // (ARK Spring2010) public boolean ribbonSidesBeta = false; // (ARK Spring2010) // READ/WRITE: Shared "scratch" objects that points can use public Triple work1 = new Triple(); public Triple work2 = new Triple(); public Dimension dim1 = new Dimension(); // FOR USE BY ENGINE ONLY ArrayList[] zbuffer; HashMap ballmap; // for line shortening ArrayList[] parents; // KList that is acting parent for each pt in zbuffer; default is null KList actingParent = null; // KList that is parent for each pt as added; null = no change // See setActingParent() for a description of the stupid hijinks we're pulling here. // Things needed to support multiple clipping planes: protected double viewClipBack = -1; protected double viewClipFront = 1; protected double viewClipScaling = 1; // Objects used as keys are just arbitrary identifiers (can be "new Object()", for instance) Map frontClipMap = new HashMap(); Map backClipMap = new HashMap(); float pickingRadius = 5f; boolean warnedPickingRegion = false; // have we warned user about out-of-bounds picks? public Triple curBackHSValpha = new Triple().like(defBackHSValpha); // (ARK Spring2010) public Triple curBackHSVbeta = new Triple().like(defBackHSVbeta); // (ARK Spring2010) //}}} //{{{ Constructor //################################################################################################## /** * Creates a new rendering engine. */ public Engine() { TOP_LAYER = 1000; flushZBuffer(); } //}}} //{{{ transform //################################################################################################## /** * Transforms the given Transformable, without rendering it to graphics. * If you want transformation AND rendering, you should call render() or equivalent in a subclass. * @param xformable the Transformable that will be transformed. * @param view a KView representing the current rotation/zoom/clip * @param bounds the bounds of the area to render to. * Note that this function does not clip g to ensure that it only paints within these bounds! */ void transform(Transformable xformable, KView view, Rectangle bounds) { ArrayList zb; // == zbuffer[i], saves array lookups ArrayList pnt; // == parents[i], saves array lookups // Clear the cache of old paintables for(int i = 0; i <= TOP_LAYER; i++) { zbuffer[i].clear(); parents[i].clear(); } ballmap.clear(); // Transform the paintables xform3D = create3DTransform(view, bounds); xform2D = create2DTransform(bounds); this.chooseClipMode(null); // default to std clipping planes pickingRect.setBounds(bounds); // save these bounds as the picking region xformable.doTransform(this, xform3D); } //}}} //{{{ create3DTransform //################################################################################################## /** * Builds a Transform suitable for use with Transformables. * @param view a KView describing the current rotation, zoom, and clipping * @param bounds the region of the Component where the paintable points will be rendered */ Transform create3DTransform(KView view, Rectangle bounds) { double width, height, size, xOff, yOff; width = bounds.getWidth(); height = bounds.getHeight(); size = Math.min(width, height); xOff = bounds.getX() + width/2.0; yOff = bounds.getY() + height/2.0; this.viewClipScaling = size/2.0; // Get information from the current view double cx, cy, cz, R11, R12, R13, R21, R22, R23, R31, R32, R33; synchronized(view) { view.compile(); zoom3D = size / view.getSpan(); cx = view.cx; cy = view.cy; cz = view.cz; R11 = view.R11; R12 = view.R12; R13 = view.R13; R21 = view.R21; R22 = view.R22; R23 = view.R23; R31 = view.R31; R32 = view.R32; R33 = view.R33; viewClipFront = view.getClip(); viewClipBack = -viewClipFront; } // Build our transform Transform ret = new Transform(), work = new Transform(); work.likeTranslation(-cx, -cy, -cz); // center on rotation center ret.append(work); work.likeMatrix(R11, R12, R13, R21, R22, R23, R31, R32, R33); // rotate ret.append(work); work.likeScale(zoom3D); // zoom ret.append(work); if(usePerspective) { perspDist = 5.0 * size; work.likePerspective(perspDist); ret.append(work); } work.likeScale(1, -1, 1); // invert Y axis ret.append(work); work.likeTranslation(xOff, yOff, 0); // center on screen ret.append(work); return ret; } //}}} //{{{ create2DTransform //################################################################################################## /** * Builds a Transform suitable for use with Transformables. * @param bounds the region of the Component where the paintable points will be rendered */ Transform create2DTransform(Rectangle bounds) { double width, height, size, xOff, yOff; width = bounds.getWidth(); height = bounds.getHeight(); size = Math.min(width, height); xOff = bounds.getX() + width/2.0; yOff = bounds.getY() + height/2.0; zoom2D = size / 400.0; // Build our transform Transform ret = new Transform(), work = new Transform(); work.likeScale(zoom2D); // resize to fill screen ret.append(work); work.likeScale(1, -1, 1); // invert Y axis ret.append(work); work.likeTranslation(xOff, yOff, 0); // center on screen ret.append(work); return ret; } //}}} //{{{ setActingParent //################################################################################################## /** * This is a *really* dumb hack that allows us to implement Mage's instance= * feature fairly cheaply in terms of both time and space. * The idea is that each point in the zbuffer will be associated with a KList * object that *should* own it for drawing purposes. * For most KPoints, this should be the one KList they belong to, * but we choose to record null instead to save a few operations. * If something else is stored, we set the point's owner to the specified list * just for the duration of the drawing operation, to ensure it appears in the * correct color, width, radius, etc. *

Most normal lists should call this function with the parameter null * before beginning to transform their points. * Lists that are "instances" of other lists will instead pass in this * (but should remember to reset to null after transforming all their points). */ public void setActingParent(KList pnt) { this.actingParent = pnt; } //}}} //{{{ chooseClipMode, putClipMode //################################################################################################## /** * Enables an arbitrary number of clipping planes (all normal to the line of sight) * to be used for clipping various parts of the kinemage. * @param key a unique identifier for this set of planes (e.g. new Object()) * @param front the front clipping plane, in view units (positive) * @param back the back clipping plane, in view units (negative) */ public void putClipMode(Object key, double front, double back) { if(key == null) return; frontClipMap.put(key, new Double(front)); backClipMap.put(key, new Double(back)); } /** * Selects a clipping mode based on the key used for putClipMode(). * A null key selects the default (KView) clipping planes. */ public void chooseClipMode(Object key) { this.clipFront = this.viewClipFront; this.clipBack = this.viewClipBack; if(key != null) { Double d = frontClipMap.get(key); if(d != null) this.clipFront = d.doubleValue(); d = backClipMap.get(key); if(d != null) this.clipBack = d.doubleValue(); } // Convert from KView units to pixel units this.clipFront *= viewClipScaling; this.clipBack *= viewClipScaling; if(usePerspective) { // We also have to move clipping planes // because this alters z coords too. // See driftwood.r3.Transform.likePerspective() // for more detailed explanation. clipFront = perspDist*clipFront / (perspDist - clipFront); clipBack = perspDist*clipBack / (perspDist - clipBack); } this.clipDepth = clipFront - clipBack; } //}}} //{{{ addPaintable, addPaintableToLayer, flushZBuffer //################################################################################################## /** * Registers a paintable to be drawn to the screen. * @param p the KPoint to be rendered. * @param zcoord the Z coordinate of the transformed object. * A layer number is calculated automatically from this. */ public void addPaintable(KPoint p, double zcoord) { addPaintableToLayer(p, (int)(TOP_LAYER*(zcoord-clipBack)/clipDepth)); } /** * Registers a paintable to be drawn to the screen. * @param p the KPoint to be rendered. * @param layer a number between 0 and TOP_LAYER, inclusive, that * determines the order of rendering. Objects at 0 are furthest from * the observer and are rendered first; objects in the TOP_LAYER are * closest to the observer and are rendered last. */ public void addPaintableToLayer(KPoint p, int layer) { if(layer < 0 || layer > TOP_LAYER || p == null) return; // Screen-oriented hack added (DAK 090506). If screen keyword on list, // sets this point to be rendered first and furthest from the observer KList l = (KList)p.getParent(); if(l != null && l.getScreen()) layer = 0; zbuffer[layer].add(p); parents[layer].add(actingParent); } /** * This may need to be called to reclaim memory when kinemages are closed. */ public void flushZBuffer() { zbuffer = null; // Goofy syntax required by Java for no good reason I can see. // Can't do ... = new ArrayList[TOP_LAYER+1] zbuffer = (ArrayList[]) new ArrayList[TOP_LAYER+1]; for(int i = 0; i <= TOP_LAYER; i++) { zbuffer[i] = new ArrayList(10); } parents = null; // Goofy syntax required by Java for no good reason I can see. // Can't do ... = new ArrayList[TOP_LAYER+1] parents = (ArrayList[]) new ArrayList[TOP_LAYER+1]; for(int i = 0; i <= TOP_LAYER; i++) { parents[i] = new ArrayList(10); } ballmap = null; ballmap = new HashMap(1000); } //}}} //{{{ addShortener, getShortening //################################################################################################## /** * Registers the given point as having some radius that other * objects should respect. In particular, this radius will be * used to shorten lines that originate/terminate at this location. */ public void addShortener(KPoint p, double radius) { Double old = ballmap.get(p); if(old == null || old.doubleValue() < radius) ballmap.put(p, new Double(radius)); } /** * Returns the amount of shortening, between 0 and +inf, * that should be applied at the given point. */ public double getShortening(KPoint p) { Double radius = ballmap.get(p); if(radius == null) return 0; else return radius.doubleValue(); } //}}} //{{{ pickPoint, setPickingRadius //################################################################################################## /** * Finds the point clicked on with the mouse. * @param xcoord the x coord of the pick, relative to the drawing surface * @param ycoord the y coord of the pick, relative to the drawing surface * @param superpick if true, even pick points marked as unpickable * @return the KPoint that was selected, or null if none */ public KPoint pickPoint(int xcoord, int ycoord, boolean superpick) { if(!pickingRect.contains(xcoord, ycoord)) { if(!warnedPickingRegion) { try { JCheckBox dontWarn = new JCheckBox("Don't warn me again", false); JOptionPane.showMessageDialog(null, new Object[] { "When using stereo, only the right-hand half\n"+ "of the screen is active for picking.", dontWarn }, "Out-of-bounds pick", JOptionPane.WARNING_MESSAGE); warnedPickingRegion = dontWarn.isSelected(); } catch(HeadlessException ex) {} } return null; } // Iterate over all levels and all points in each level, searching for "the one" KPoint theone = null; // Note: looping front to back, rather than back to front as in render() for(int i = TOP_LAYER; i >= 0 && theone == null; i--) { ArrayList zb = zbuffer[i]; for(int j = 0, end_j = zb.size(); j < end_j && theone == null; j++) { KPoint p = zb.get(j); // q will usually be p or null, but sometimes not for object picking KPoint q = p.isPickedBy(xcoord, ycoord, pickingRadius, useObjPicking); // Off points have to be transformed anyway in case they're used by // other ends of lines or triangles, so we have to check it here. // Using getDrawingColor() checks for invisible, aspect-invisible, *and* off points if(q != null && (!q.isUnpickable() || superpick) && !q.getDrawingColor(this).isInvisible()) theone = q; } } return theone; } public void setPickingRadius(double r) { if(r > 1) this.pickingRadius = (float)r; } //}}} // XXX: this should act with an identity KView so that picking units are real space coords (?) //{{{ pickAll3D //################################################################################################## /** * Finds all points within the specified radius of the given coordinates. * The coordinates are original, untransformed coordinates -- not device coordinates. * @return all the KPoints that were selected */ public Collection pickAll3D(double xcoord, double ycoord, double zcoord, boolean superpick, double radius) { // Iterate over all levels and all points in each level, searching for "the one" int i, j, end_j; // loop over z-buffer ArrayList zb; // == zbuffer[i], saves array lookups KPoint p; ArrayList found = new ArrayList(); double r2 = radius*radius; // Note: looping front to back, rather than back to front as in render() // start layer == (int)(TOP_LAYER*(zcoord-clipBack)/clipDepth) final int frontLayer = TOP_LAYER, backLayer = 0; for(i = frontLayer; i >= backLayer; i--) { zb = zbuffer[i]; end_j = zb.size(); for(j = 0; j < end_j; j++) { p = (KPoint)zb.get(j); double dx = p.getX() - xcoord; double dy = p.getY() - ycoord; double dz = p.getZ() - zcoord; // Using getDrawingColor() checks for invisible, aspect-invisible, *and* off points if((dx*dx + dy*dy + dz*dz) <= r2 && (!p.isUnpickable() || superpick) && !p.getDrawingColor(this).isInvisible()) found.add(p); } } return found; } //}}} //{{{ pickAll2D //################################################################################################## /** * Finds all points within the specified radius of the given x-y coordinates, * regardless of the z coordinate. * All coordinates are device coordinates -- i.e., coordinates in the transformed space. * The units, therefore, are pixels. * @return all the KPoints that were selected */ public Collection pickAll2D(double xcoord, double ycoord, boolean superpick, double radius) { // Iterate over all levels and all points in each level, searching for "the one" ArrayList found = new ArrayList(); // Note: looping front to back, rather than back to front as in render() for(int i = TOP_LAYER; i >= 0; i--) { ArrayList zb = zbuffer[i]; for(int j = 0, end_j = zb.size(); j < end_j; j++) { KPoint p = zb.get(j); // q will usually be p or null, but sometimes not for object picking KPoint q = p.isPickedBy((float)xcoord, (float)ycoord, (float)radius, useObjPicking); // Off points have to be transformed anyway in case they're used by // other ends of lines or triangles, so we have to check it here. // Using getDrawingColor() checks for invisible, aspect-invisible, *and* off points if(q != null && (!q.isUnpickable() || superpick) && !q.getDrawingColor(this).isInvisible()) found.add(q); } } return found; } //}}} //{{{ getNumberPainted //################################################################################################## /** Calculates the number of KPoint objects that were "painted" in the last cycle. */ public int getNumberPainted() { int num = 0; for(int i = 0; i < zbuffer.length; i++) num += zbuffer[i].size(); return num; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/core/AHEImpl.java0000644000000000000000000000442511531212646017302 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * AHEImpl (Abstract Hierarchy Element implementation) * provides the basic services used by AGEs and most KPoints. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 10:50:32 EDT 2002 */ abstract public class AHEImpl

implements AHE

{ //{{{ Variable definitions //################################################################################################## protected String name = ""; //}}} //{{{ get/setName, toString //################################################################################################## public String getName() { return name; } public void setName(String nm) { name = nm; } /** Gets the name of this element (same as getName()*/ public String toString() { return getName(); } //}}} //{{{ getKinemage, getDepth, fireKinChanged //################################################################################################## public Kinemage getKinemage() { AGE parent = getParent(); if(parent == null) return null; else return parent.getKinemage(); } public int getDepth() { int depth = 0; AGE parent = getParent(); while(parent != null) { depth++; parent = parent.getParent(); } return depth; } public void fireKinChanged(int eventFlags) { AGE parent = this.getParent(); if(parent != null) parent.fireKinChanged(eventFlags); } //}}} //{{{ isVisible //################################################################################################## public boolean isVisible() { AGE parent = getParent(); if(parent == null) return this.isOn(); else return this.isOn() && parent.isVisible(); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/core/KIterator.java0000644000000000000000000002064011531212646017764 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * KIterator is a way of iterating over kinemage contents * without writing a recursive function to handle the nesting of KGroups. * It is structured as an iterator rather than some kind of Visitor pattern * because the inversion of control means the tree can be traversed piecewise, * as is needed for Find / Find Next type functions. * *

If you're not sure that this instance will only return AGEs (for instance), * you should declare it as KIterator<AHE> and use instanceof. * *

This function may fail with a java.util.ConcurrentModificationException * if the structure of the kinemage is modified during the search * (i.e., add/remove groups, lists, or points). * Obviously, clients should not rely on this behavior for correctness. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Dec 19 10:57:57 EST 2002 */ public class KIterator implements Iterable, Iterator { //{{{ Constants public enum Opts { KINEMAGE, GROUP, LIST, POINT, VISIBLE_ONLY, PICKABLE_ONLY } //}}} //{{{ Variable definitions //################################################################################################## Set opts; T next; T last; Iterator iter; Iterator iterLast; LinkedList> iterStack; //}}} //{{{ Constructor(s) //################################################################################################## public KIterator(AGE top, Opts opt) { this(top, EnumSet.of(opt)); } public KIterator(AGE top, Opts opt, Opts... opts) { this(top, EnumSet.of(opt, opts)); } public KIterator(AGE top, Set opts) { this.opts = opts; this.next = null; this.last = null; this.iter = (Iterator) Collections.singleton(top).iterator(); this.iterLast = null; this.iterStack = new LinkedList>(); } //}}} //{{{ nextImpl //################################################################################################## /** * Function that searches the tree for the next KPoint * and places it into the variable next. * If there are no more points, next == null. */ private void nextImpl() { // True tail-recursion has been replaced by a while-loop pseudo-recursion // because otherwise we tend to get StackOverflowErrors. // If Java was smarter it would perform this optimization for us... ;) last = null; while(true) { if(iter.hasNext()) { T ahe = iter.next(); iterLast = iter; // "iter" will change if we need to visit children if(ahe instanceof KPoint) { if(shouldVisit((KPoint) ahe)) { next = ahe; return; // recursion bottoms out here (success) } } else if(ahe instanceof AGE) { AGE age = (AGE) ahe; if(shouldVisitChildren(age)) { iterStack.addLast(iter); iter = age.getChildren().iterator(); } if(shouldVisit(age)) { next = ahe; return; // recursion bottoms out here (success) } // else recurses } // else recurses: we can ignore it and move on } else if(!iterStack.isEmpty()) { iter = iterStack.removeLast(); // recurses } else { next = null; return; // recursion bottoms out here (failure) } } } //}}} //{{{ shouldVisit(Children) //################################################################################################## protected boolean shouldVisit(KPoint point) { return (point.isOn() || !opts.contains(Opts.VISIBLE_ONLY)) && !(point.isUnpickable() && opts.contains(Opts.PICKABLE_ONLY)); //&& opts.contains(Opts.POINT); // this has already been checked at the list level } protected boolean shouldVisit(AGE age) { boolean ans = (age.isOn() || !opts.contains(Opts.VISIBLE_ONLY)); if(age instanceof KList) ans &= opts.contains(Opts.LIST); else if(age instanceof KGroup) ans &= opts.contains(Opts.GROUP); else if(age instanceof Kinemage) ans &= opts.contains(Opts.KINEMAGE); return ans; } protected boolean shouldVisitChildren(AGE age) { boolean ans = (age.isOn() || !opts.contains(Opts.VISIBLE_ONLY)); if(age instanceof KList) ans &= opts.contains(Opts.POINT); else if(age instanceof KGroup) ans &= opts.contains(Opts.GROUP) || opts.contains(Opts.LIST) || opts.contains(Opts.POINT); return ans; } //}}} //{{{ next, hasNext, iterator, remove //################################################################################################## /** * Returns the next KPoint, if there is one, or null if there isn't. */ public T next() { // hasNext() may have already stocked next for us if(next == null) nextImpl(); last = next; // mark this value as consumed next = null; return last; } /** * Returns true if there is another point available (and it's not null, * but lists should never contain null points). */ public boolean hasNext() { if(next == null) nextImpl(); return (next != null); } /** * This function is supported only in a limited way: * it works only if you've called next() more recently than hasNext(). * If you've called hasNext() more recently than next(), * then it will fail with an IllegalStateException. * *

Note that parents are visited before children. Calling remove * on any parent will mean that none of its descendants are visited. * *

If this function does not meet your needs, consider performing two iterations: * In the first, build a Collection of all the items to be removed; * in the second, traverse that new Collection and remove its elements from the kinemage * by calling remove() on their parents. */ public void remove() { if(last != null) { AGE parent = last.getParent(); iterLast.remove(); // Don't traverse children, if you were considering it: if(iter != iterLast) { iter = iterStack.removeLast(); assert iter == iterLast; } int change = (last instanceof AGE ? AHE.CHANGE_TREE_CONTENTS : AHE.CHANGE_POINT_CONTENTS); last = null; parent.fireKinChanged(change); } else throw new IllegalStateException(); } public Iterator iterator() { return this; } //}}} //{{{ allLists/Points/NonPoints, visibleLists/Points //################################################################################################## public static KIterator allLists(AGE top) { return new KIterator(top, KIterator.Opts.LIST); } public static KIterator allPoints(AGE top) { return new KIterator(top, KIterator.Opts.POINT); } public static KIterator allNonPoints(AGE top) { return new KIterator(top, KIterator.Opts.LIST, KIterator.Opts.GROUP, KIterator.Opts.KINEMAGE); } public static KIterator visibleLists(AGE top) { return new KIterator(top, KIterator.Opts.LIST, KIterator.Opts.VISIBLE_ONLY); } public static KIterator visiblePoints(AGE top) { return new KIterator(top, KIterator.Opts.POINT, KIterator.Opts.VISIBLE_ONLY); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/core/KPaint.java0000644000000000000000000005315211531212646017252 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; // (ARK Spring2010) //}}} /** * KPaint encapsulates all the data about a single * named Mage color, like "red" or "lilactint" or "invisible". * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Jun 25 14:37:56 EDT 2003 */ abstract public class KPaint //extends ... implements ... { //{{{ Constants /** The nominal "black" color to be used as a background, etc. */ public static final Color black = new Color(0.00f, 0.00f, 0.00f); /** The nominal "white" color to be used as a background, etc. */ public static final Color white = new Color(1.00f, 1.00f, 1.00f); //public static final Color white = new Color(0.95f, 0.95f, 0.95f); /** The number of different depth-cueing levels available */ public static final int COLOR_LEVELS = 16; /** * The minimum value multiplier on a black background. * Smaller numbers mean we fade closer to black before clipping. */ static final float BVAL = 0.36f; /** The minimum value multiplier on a white background. */ static final float WVAL = 0.40f; /** The minimum saturation multiplier on a white background. */ static final float WSAT = 0.36f; /** Shading parameters for ribbons / triangles */ static final double AMBIENT_COEFF = 0.4; static final double DIFFUSE_COEFF = 0.6; public static final int BLACK_COLOR = 0; public static final int WHITE_COLOR = 1; public static final int BLACK_MONO = 2; public static final int WHITE_MONO = 3; public static final int N_BACKGROUNDS = 4; //}}} //{{{ Constants for ribbon shading /** Background colors for ribbon shading calcs. */ static final Color[][] SHADE_BACKGROUNDS = new Color[N_BACKGROUNDS][COLOR_LEVELS]; static { Color[] background = new Color[COLOR_LEVELS]; for(int i = 0; i < COLOR_LEVELS; i++) background[i] = black; SHADE_BACKGROUNDS[BLACK_COLOR] = background; SHADE_BACKGROUNDS[BLACK_MONO] = background; // Instead of blending toward black, we're going to blend // toward black depthcued on a white background: // XXX: needs to be updated to use KPaint.white ... float[] values = interpolate(1-WVAL, 0, COLOR_LEVELS); background = new Color[COLOR_LEVELS]; for(int i = 0; i < COLOR_LEVELS; i++) background[i] = new Color(Color.HSBtoRGB(0f, 0f, values[i])); SHADE_BACKGROUNDS[WHITE_COLOR] = background; SHADE_BACKGROUNDS[WHITE_MONO] = background; } //}}} //{{{ Variable definitions //################################################################################################## String name; KPaint aliasOf; boolean isInvisible; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor -- use create___() functions instead */ KPaint() { } //}}} //{{{ createHSV, getHSB //################################################################################################## /** * Creates a new color definition based on hue (0-360), saturation (0-100), * and relative value (0-100; usually 75-100). */ static public KPaint createHSV(String name, float hue, float blackSat, float whiteSat, float blackVal, float whiteVal) { if(name == null) throw new NullPointerException("Must give paint a name"); HeavyKPaint p = new HeavyKPaint(); p.name = name; p.aliasOf = null; p.paints = new Color[N_BACKGROUNDS][]; p.paintsBackup = p.paints; p.isInvisible = false; hue /= 360f; blackSat /= 100f; whiteSat /= 100f; blackVal /= 100f; whiteVal /= 100f; // value decreases going back Color[] bcolors = new Color[COLOR_LEVELS]; float[] bvalues = interpolate(BVAL, 1, COLOR_LEVELS); for(int i = 0; i < COLOR_LEVELS; i++) bcolors[i] = getHSB(hue, blackSat, bvalues[i]*blackVal); // value increases, saturation decreases going back Color[] wcolors = new Color[COLOR_LEVELS]; float[] wsats = interpolate(WSAT, 1, COLOR_LEVELS); // Low end is a blend between specified value and pure white value float[] wvalues = interpolate( (WVAL*whiteVal + (1f-WVAL)*1f) , whiteVal, COLOR_LEVELS); for(int i = 0; i < COLOR_LEVELS; i++) wcolors[i] = getHSB(hue, wsats[i]*whiteSat, wvalues[i]); p.paints[BLACK_COLOR] = bcolors; p.paints[WHITE_COLOR] = wcolors; p.paints[BLACK_MONO] = makeMonochrome(p.paints[BLACK_COLOR]); p.paints[WHITE_MONO] = makeMonochrome(p.paints[WHITE_COLOR]); return p; } static private Color getHSB(float hue, float sat, float val) { return new Color(Color.HSBtoRGB(hue, sat, val)); } //}}} //{{{ createLightweightHSV //################################################################################################## /** * Creates a new color definition based on hue (0-360), saturation (0-100), * and relative value (0-100; usually 75-100). */ static public KPaint createLightweightHSV(String name, float bHue, float bSat, float bVal, float wHue, float wSat, float wVal) { if(name == null) throw new NullPointerException("Must give paint a name"); KPaint p = new LightKPaint(bHue / 360f, bSat / 100f, bVal / 100f, wHue / 360f, wSat / 100f, wVal / 100f); p.name = name; p.aliasOf = null; p.isInvisible = false; return p; } //}}} //{{{ createSolid //################################################################################################## /** * Creates a paint that is the same regardless of shading, depth-cueing, etc. */ static public KPaint createSolid(String name, Color solid) { if(name == null) throw new NullPointerException("Must give paint a name"); if(solid == null) throw new NullPointerException("Must provide a valid Color"); HeavyKPaint p = new HeavyKPaint(); p.name = name; p.aliasOf = null; p.paints = new Color[N_BACKGROUNDS][COLOR_LEVELS]; p.paintsBackup = p.paints; p.isInvisible = false; for(int i = 0; i < N_BACKGROUNDS; i++) for(int j = 0; j < COLOR_LEVELS; j++) p.paints[i][j] = solid; return p; } //}}} //{{{ createAlias, createInvisible //################################################################################################## /** * Creates a new color that is simply an alias to some existing color. */ static public KPaint createAlias(String name, KPaint target) { if(name == null) throw new NullPointerException("Must give paint a name"); if(target == null) throw new NullPointerException("Must give paint alias an existing paint to reference"); HeavyKPaint t = (HeavyKPaint) target; HeavyKPaint p = new HeavyKPaint(); p.name = name; p.aliasOf = t; p.paints = t.paints; p.paintsBackup = p.paints; p.isInvisible = t.isInvisible; return p; } /** * Create a color marked as invisible that is very * distinctive if actually painted. */ static public KPaint createInvisible(String name) { // Wasn't worth saying Paint instead of Color for this one trick //Paint invis = new GradientPaint(0, 0, Color.red, 11, 3, Color.green, true); Color invis = new Color(51, 51, 51); KPaint p = createSolid(name, invis); p.isInvisible = true; return p; } //}}} //{{{ getPaint(s) //################################################################################################## /** * Returns the correct Color object to use for rendering. * Based on the value of dotprod, a simple * lighting model (diffuse and ambient) is applied: * *

C = Fa*Lc*Oc + Fd*Lc*Oc*(On . -Ln) * *

where C is the resulting color, Fa and Fd are the ambient * and diffuse lighting coefficients, Lc and Oc are color curves * for the light source and the object, and Ln and On are normals * for the light source and the object. * * These color objects are calculated on the fly rather than being cached. * * @param backgroundMode one of BLACK_COLOR, WHITE_COLOR, BLACK_MONO, or WHITE_MONO. * @param dotprod the (normalized) dot product of the surface normal with the lighting vector. * @param depth the depth cue number, from 0 (far away) to COLOR_LEVELS-1 (near by). * @param alpha the transparency, from 0 (transparent) to 255 (opaque). */ public Color getPaint(int backgroundMode, double dotprod, int depth, int alpha) { Color basePaint = getPaint(backgroundMode, depth); if(dotprod < 0) dotprod = -dotprod; if(dotprod > 1) dotprod = 1; if(dotprod == 1 && alpha == 255) return basePaint; try { double weight = AMBIENT_COEFF + (DIFFUSE_COEFF*dotprod); return blendColors( basePaint, weight, SHADE_BACKGROUNDS[backgroundMode][depth], (1-weight), alpha); } catch(ClassCastException ex) { // Cast will only fail for the Invisible color, which // uses a gradient paint. BUT we should never be calling // this method if we already know our paint is invisible! return basePaint; } } /** * Returns the correct offset Color object to use for rendering. * HSV offset is based on the first parameter (a Triple). * * @param HSV offset X = hue offset, Y = saturation offset, Z = value (brightness) offset. * @param backgroundMode one of BLACK_COLOR, WHITE_COLOR, BLACK_MONO, or WHITE_MONO. * @param dotprod the (normalized) dot product of the surface normal with the lighting vector. * @param depth the depth cue number, from 0 (far away) to COLOR_LEVELS-1 (near by). * @param alpha the transparency, from 0 (transparent) to 255 (opaque). */ public Color getOffsetPaint(Triple HSVoffset, int backgroundMode, double dotprod, int depth, int alpha) // (ARK Spring2010) { Color paintColor = (Color) this.getPaint(backgroundMode, dotprod, depth, alpha); float hueDif = (float)HSVoffset.getX(); float satDif = (float)HSVoffset.getY(); float valDif = (float)HSVoffset.getZ(); float[] hsbvals = paintColor.RGBtoHSB(paintColor.getRed(),paintColor.getGreen(),paintColor.getBlue(),null); // To calculate the new color, must do some some scaling: // // RGBtoHSB() returns: // hsbvals[0] = hue (0-1) // hsbvals[1] = saturation (0-1) // hsbvals[2] = brightness (0-1) // // createHSV() takes: // hue (0-360) // blackSat, whiteSat (0-100) // blackVal, whiteVal (0-100; usually 75-100) hsbvals[0]*=360; hsbvals[0]=hsbvals[0]<(360-hueDif) ? hsbvals[0]+hueDif : hsbvals[0]-(360-hueDif); hsbvals[1]*=100; hsbvals[1]*=((double)satDif/100); //hsbvals[1]=hsbvals[1]<(100-satDif) ? hsbvals[1]+satDif : hsbvals[1]-(100-satDif); // **As such, this doesn't allow user to explore the full range of sat or val, // **since their spectrum is linear rather than circular like hue's, // **so we can only decrease the value but have continuous movement in doing so hsbvals[2]=hsbvals[2]*25+75; hsbvals[2]*=((double)valDif/100); return this.createHSV("backColor",hsbvals[0],hsbvals[1],hsbvals[1],hsbvals[2],hsbvals[2]).getPaint(backgroundMode, dotprod, depth, alpha); } /** * Returns the correct Color object to use for rendering, * assuming direct lighting of the surface and no transparency. * @param backgroundMode one of BLACK_COLOR, WHITE_COLOR, BLACK_MONO, or WHITE_MONO. * @param depth the depth cue number, from 0 (far away) to COLOR_LEVELS-1 (near by). */ abstract public Color getPaint(int backgroundMode, int depth); /** * Returns the set of depth-cued Color objects to use for rendering, * indexed from 0 (far away) to COLOR_LEVELS-1 (near by), * assuming direct lighting of the surface and no transparency. * @param backgroundMode one of BLACK_COLOR, WHITE_COLOR, BLACK_MONO, or WHITE_MONO. */ abstract public Color[] getPaints(int backgroundMode); //}}} //{{{ blendColors, makeMonochrome //################################################################################################## /** * Returns a blend of two colors, weighted by the given coefficients. * Alpha ranges from 0 (transparent) to 255 (opaque) and is not taken from either c1 or c2. */ private static Color blendColors(Color c1, double w1, Color c2, double w2, int alpha) { int red = (int)(c1.getRed()*w1 + c2.getRed()*w2); int green = (int)(c1.getGreen()*w1 + c2.getGreen()*w2); int blue = (int)(c1.getBlue()*w1 + c2.getBlue()*w2); if(red < 0) red = 0; else if(red > 255) red = 255; if(green < 0) green = 0; else if(green > 255) green = 255; if(blue < 0) blue = 0; else if(blue > 255) blue = 255; return new Color(red, green, blue, alpha); } /** * Duplicates an array of colors while translating each one into monochrome. * The formula used was taken from the POV-Ray documentation: * gray value = Red*29.7% + Green*58.9% + Blue*11.4%. * Presumably this roughly matches the response of B&W film, * based on some articles I've read elsewhere. *

See also http://www.poynton.com/notes/colour_and_gamma/GammaFAQ.html, * which offers this equation: Y(709) = 0.2126*R + 0.7152*G + 0.0722*B. * However, using it directly here would probably be out of context... */ private static Color[] makeMonochrome(Color[] src) { Color[] targ = new Color[src.length]; for(int i = 0; i < src.length; i++) targ[i] = makeMonochrome(src[i]); return targ; } /** * Translates a color into monochrome. * The formula used was taken from the POV-Ray documentation: * gray value = Red*29.7% + Green*58.9% + Blue*11.4%. * Presumably this roughly matches the response of B&W film, * based on some articles I've read elsewhere. *

See also http://www.poynton.com/notes/colour_and_gamma/GammaFAQ.html, * which offers this equation: Y(709) = 0.2126*R + 0.7152*G + 0.0722*B. * However, using it directly here would probably be out of context... */ static Color makeMonochrome(Color sc) { float gray = (0.297f*sc.getRed() + 0.589f*sc.getGreen() + 0.114f*sc.getBlue()) / 255f; if(gray < 0) gray = 0; if(gray > 1) gray = 1; return new Color(gray, gray, gray, sc.getAlpha()/255f); } //}}} //{{{ interpolate //################################################################################################## /** Blends linearly from start to end, with steps-2 intervening steps. */ static float[] interpolate(double start, double end, int steps) { float[] result = new float[steps]; for(int i = 0; i < steps; i++) { double a = (double)i / (double)(steps-1); result[i] = (float)((1-a)*start + a*end); } return result; } //}}} //{{{ get{Black, White}Exemplar //################################################################################################## /** * Returns the most typical paint for this named color. * The hue, saturation, and value * can be fed back into createHSV to recreate this color (probably). * Remember to convert from the [0,1] scale to the [0,360] / [0,100] scale! */ public Color getBlackExemplar() { return getPaint(BLACK_COLOR, COLOR_LEVELS-1); } /** * Returns the most typical paint for this named color. * The hue, saturation, and value * can be fed back into createHSV to recreate this color (probably). * Remember to convert from the [0,1] scale to the [0,360] / [0,100] scale! */ public Color getWhiteExemplar() { return getPaint(WHITE_COLOR, COLOR_LEVELS-1); } //}}} //{{{ isInvisible, isAlias, getAlias, toString //################################################################################################## /** Returns true iff objects of this color should not be rendered. */ public boolean isInvisible() { return isInvisible; } /** Returns true iff this KPaint is just another name for some canonical KPaint. */ public boolean isAlias() { return aliasOf != null; } /** * Returns the KPaint that this object is an alias of. * @throws UnsupportedOperationException if this object is not an alias. */ public KPaint getAlias() { if(aliasOf != null) return aliasOf; else throw new UnsupportedOperationException(this+" is not an alias of some other KPaint"); } /** Returns the name this KPaint was created with. Will never be null. */ public String toString() { return name; } //}}} //{{{ setContrast //################################################################################################## /** * Set the relative contrast of the color palette. * A contrast of less than 1.0 is flat, and greater than 1.0 is exagerated. *

Adjustment is done as linear interpolation/extrapolation to a mid-level gray. * See http://www.sgi.com/misc/grafica/interp/ or * P. Haeberli and D. Voorhies. Image Processing by Linear Interpolation and * Extrapolation. IRIS Universe Magazine No. 28, Silicon Graphics, Aug, 1994. * * Only implemented for HeavyKPaint. */ public void setContrast(double alpha) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class /** A lightweight paint class for user-defined colors. */ class LightKPaint extends KPaint //{{{ { float bHue, bSat, bVal; float wHue, wSat, wVal; public LightKPaint(float bHue, float bSat, float bVal, float wHue, float wSat, float wVal) { super(); this.bHue = bHue; this.wHue = wHue; this.bSat = bSat; this.wSat = wSat; this.bVal = bVal; this.wVal = wVal; } public Color getPaint(int backgroundMode, int depth) { double modHue, modSat, modVal; Color color; // Interpolation coefficient determined by depth double d = (double)depth / (double)(COLOR_LEVELS-1); if(backgroundMode == WHITE_COLOR || backgroundMode == WHITE_MONO) { modHue = wHue; // Saturation interpolated from sat*WSAT at the back to sat*1.0 at the front modSat = wSat * ((1-d)*WSAT + (d)*1); // Value interpolated from a blend of val and pure white at the back // to plain old val at the front. modVal = (1-d)*(WVAL*wVal + (1f-WVAL)*1f) + (d)*wVal; } else // BLACK_COLOR || BLACK_MONO { modHue = bHue; // Saturation is unchanged modSat = bSat; // Value interpolated from val*BVAL at the back to val*1.0 at the front modVal = bVal * ((1-d)*BVAL + (d)*1); } color = new Color(Color.HSBtoRGB((float) modHue, (float) modSat, (float) modVal)); if(backgroundMode == WHITE_MONO || backgroundMode == BLACK_MONO) color = makeMonochrome(color); return color; } public Color[] getPaints(int backgroundMode) { Color[] paints = new Color[COLOR_LEVELS]; for(int i = 0; i < COLOR_LEVELS; i++) paints[i] = getPaint(backgroundMode, i); return paints; } }//}}} /** A memory-intensive (~2500 bytes) paint class for built-in colors. */ class HeavyKPaint extends KPaint //{{{ { Color[][] paints; Color[][] paintsBackup; // Usually == to paints. See setContrast(). public Color getPaint(int backgroundMode, int depth) { return paints[backgroundMode][depth]; } public Color[] getPaints(int backgroundMode) { return paints[backgroundMode]; } public void setContrast(double alpha) { this.paints = new Color[N_BACKGROUNDS][COLOR_LEVELS]; final double midgray = 0.5; final double one_minus_alpha = 1.0 - alpha; for(int i = 0; i < N_BACKGROUNDS; i++) { for(int j = 0; j < COLOR_LEVELS; j++) { Color p = paintsBackup[i][j]; float r = (float)(alpha * p.getRed()/255.0 + one_minus_alpha * midgray); r = Math.max(Math.min(1, r), 0); float g = (float)(alpha * p.getGreen()/255.0 + one_minus_alpha * midgray); g = Math.max(Math.min(1, g), 0); float b = (float)(alpha * p.getBlue()/255.0 + one_minus_alpha * midgray); b = Math.max(Math.min(1, b), 0); paints[i][j] = new Color(r, g, b); } } } }//}}} king-2.21.120420/king/src/king/core/KView.java0000644000000000000000000004140211531212646017104 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.io.*; //import java.text.*; import java.util.*; //}}} /** * KView holds a rotation matrix that specifies the current view or some saved view. * Views are thread-safe, although most King components are not. * This allows e.g. an auto-rocker to update the view in the background even if the event thread is repainting the window. * *

Zooms and clipping are specified such that a zoom factor of 1.0 means the object will fill the available * display space without extending outside it, regardless of its orientation. * A clipping value of 1.0 means that at a zoom of 1.0, no part of the object will be clipped. * *

Note that changing the rotation, zoom, etc. does NOT trigger a repaint of the graphics window -- * that is the responsibility of the caller. * *

Begun on Thu May 23 21:08:29 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class KView implements Serializable, Cloneable { //{{{ Static fields static final int N_UPDATES_ALLOWED = 100; //}}} //{{{ Variable definitions //################################################################################################## /** * When serializing a view, the kinemage is excluded as it would contribute * a great deal of bulk to the serialization, when it might not be warranted. * If Kinemage itself ever becomes Serializable (which I doubt), * this might be the general pattern: parents are marked transient, and * upon de-serialization parents are responsible for calling setParent() on children. */ transient protected Kinemage parent = null; // The label used on the View menu protected String ID = "Unnamed view"; // The rotation matrix public float[][] xform = { {1f, 0f, 0f}, {0f, 1f, 0f}, {0f, 0f, 1f} }; // Coordinates (in real-space) of the center of rotation protected float[] center = null; /** The zooming factor */ protected float zoom = 0f; /** The span factor, an alternate representation of zoom. */ protected float span = 0f; /** The clipping factor */ protected float clip = 1f; /** The elements of the transformation matrix, in real-space. Call compile() before using them! */ public float R11 = 1f, R12 = 0f, R13 = 0f, R21 = 0f, R22 = 1f, R23 = 0f, R31 = 0f, R32 = 0f, R33 = 1f; /** The center of rotation, in real-space. Call compile() before using them! */ public float cx = 0f, cy = 0f, cz = 0f; /** 0-based indices of which viewing axes to use when this view is activated. */ protected int[] viewingAxes = null; // null -> don't change axes when selected // A counter for when this matrix needs to be 'cleaned' protected int nUpdates = 0; //}}} //{{{ Constructors, clone //################################################################################################## /** Used by the serialization mechanism. */ private KView() { super(); } /** * Constructor */ public KView(Kinemage kin) { parent = kin; } /** Duplicates this object */ public synchronized KView clone() { try { KView that = (KView) super.clone(); that.xform = (float[][]) that.xform.clone(); if(that.center != null) that.center = (float[]) that.center.clone(); // viewingAxes is never written into that.compile(); return that; } catch(CloneNotSupportedException ex) { ex.printStackTrace(); return null; } //KView ret = new KView(parent); //ret.ID = ID; //ret.xform = (float[][])xform.clone(); //if(center == null) ret.center = getCenter(); //else ret.center = (float[])center.clone(); // //ret.zoom = zoom; //ret.span = span; //ret.clip = clip; // //ret.compile(); //return ret; } //}}} //{{{ get/setName, toString //################################################################################################## /** Gets the name of this element */ public String getName() { return ID; } /** Sets the name of this element */ public synchronized void setName(String nm) { ID = nm; if(parent != null) parent.fireKinChanged(AHE.CHANGE_VIEWS_LIST); } /** Gets the name of this element (same as getName()*/ public String toString() { return getName(); } //}}} //{{{ mmult, normalize, transpose //################################################################################################## // Multiplies two 3x3 matrices static protected float[][] mmult(float[][] A, float[][] B) { float[][] R = new float[3][3]; int i, j, k; float r; for(i = 0; i < 3; i++) {// row loop for(j = 0; j < 3; j++) {// column loop r = 0f; // index loop for(k = 0; k < 3; k++) r += A[i][k] * B[k][j]; R[i][j] = r; }// column loop }// row loop return R; } // Multiplies a 3x3 matrix with a 3x1 vector static protected float[] mmult(float[][] A, float[] X) { float[] R = new float[3]; int i, j; float r; for(i = 0; i < 3; i++) {// row loop r = 0f; // index loop for(j = 0; j < 3; j++) r += A[i][j] * X[j]; R[i] = r; } return R; } /** * Adjusts matrix values for self-consistency -- http://www.makegames.com/3drotation/ * * R is special orthogonal (I'll trust their math): * R R' = I (R times its transpose is identity) * det R = 1 (determinant of R equals 1) * * "A more helpful set of properties is provided by Michael E. Pique in Graphics Gems (Glassner, Academic Press, 1990): * 1. R is normalized: the squares of the elements in any row or column sum to 1. * 2. R is orthogonal: the dot product of any pair of rows or any pair of columns is 0. * 3. The rows of R represent the coordinates in the original space of unit vectors along the coordinate axes of the rotated space. (Figure 1). * 4. The columns of R represent the coordinates in the rotated space of unit vectors along the axes of the original space." * * Here I follow the procedure described above for building a "good" rotation matrix (sort of), * but without using what they call a World Up vector, since we're in a molecule & that doesn't mean anything. * I call the rows X*, Y*, and Z*, as per (3) above */ static protected void normalize(float[][] A) { float mag; // Don't change 3rd row (Z*) except to normalize it (magnitude --> 1) mag = (float)Math.sqrt(A[2][0]*A[2][0] + A[2][1]*A[2][1] + A[2][2]*A[2][2]); A[2][0] = A[2][0]/mag; A[2][1] = A[2][1]/mag; A[2][2] = A[2][2]/mag; // Normalize 2nd row (Y*), then take cross product to get the first ( Y* x Z* = X* ) // X* will be normalized b/c Y* and Z* are. // x = mag = (float)Math.sqrt(A[1][0]*A[1][0] + A[1][1]*A[1][1] + A[1][2]*A[1][2]); A[1][0] = A[1][0]/mag; A[1][1] = A[1][1]/mag; A[1][2] = A[1][2]/mag; A[0][0] = A[1][1]*A[2][2] - A[1][2]*A[2][1]; A[0][1] = A[1][2]*A[2][0] - A[1][0]*A[2][2]; A[0][2] = A[1][0]*A[2][1] - A[1][1]*A[2][0]; // Now let Y* = Z* x X* so it's perpendicular to both! // x = A[1][0] = A[2][1]*A[0][2] - A[2][2]*A[0][1]; A[1][1] = A[2][2]*A[0][0] - A[2][0]*A[0][2]; A[1][2] = A[2][0]*A[0][1] - A[2][1]*A[0][0]; } // Constructs the transpose of a 3x3 matrix static protected float[][] transpose(float[][] A) { float[][] R = new float[3][3]; int i, j; for(i = 0; i < 3; i++) { for(j = 0; j < 3; j++) R[i][j] = A[j][i]; } return R; } //}}} Matrix math routines //{{{ compile //################################################################################################## /** * Updates this view's public fields to reflect the current internal state. */ public synchronized void compile() { R11 = xform[0][0];// * zoom; R12 = xform[0][1];// * zoom; R13 = xform[0][2];// * zoom; R21 = xform[1][0];// * zoom; R22 = xform[1][1];// * zoom; R23 = xform[1][2];// * zoom; R31 = xform[2][0];// * zoom; R32 = xform[2][1];// * zoom; R33 = xform[2][2];// * zoom; if(center == null) getCenter(); cx = center[0]; cy = center[1]; cz = center[2]; } //}}} //{{{ rotateX/Y/Z //################################################################################################## /** * Rotates about the axis defined as 'x' by the basis of this tranform. * @param t the amount of rotation, in radians */ public synchronized void rotateX(float t) { float sin, cos; sin = (float)Math.sin(t); cos = (float)Math.cos(t); float[][] rot = { {1f, 0f, 0f}, {0f, cos, -sin}, {0f, sin, cos} }; xform = mmult(rot, xform); if(++nUpdates % N_UPDATES_ALLOWED == 0) { nUpdates = 0; normalize(xform); } if(parent != null) parent.fireKinChanged(AHE.CHANGE_VIEW_TRANSFORM); } /** * Rotates about the axis defined as 'y' by the basis of this tranform. * @param t the amount of rotation, in radians */ public synchronized void rotateY(float t) { float sin, cos; sin = (float)Math.sin(t); cos = (float)Math.cos(t); float[][] rot = { {cos, 0f, sin}, {0f, 1f, 0f}, {-sin, 0f, cos} }; xform = mmult(rot, xform); if(++nUpdates % N_UPDATES_ALLOWED == 0) { nUpdates = 0; normalize(xform); } if(parent != null) parent.fireKinChanged(AHE.CHANGE_VIEW_TRANSFORM); } /** * Rotates about the axis defined as 'z' by the basis of this tranform. * @param t the amount of rotation, in radians */ public synchronized void rotateZ(float t) { float sin, cos; sin = (float)Math.sin(t); cos = (float)Math.cos(t); float[][] rot = { {cos, -sin, 0f}, {sin, cos, 0f}, {0f, 0f, 1f} }; xform = mmult(rot, xform); if(++nUpdates % N_UPDATES_ALLOWED == 0) { nUpdates = 0; normalize(xform); } if(parent != null) parent.fireKinChanged(AHE.CHANGE_VIEW_TRANSFORM); } //}}} //{{{ setMatrix, setZoom, get/setSpan //################################################################################################## /** * Sets the matrix used by this view * @param matrix a 3x3 matrix, matrix[row][col] */ public synchronized void setMatrix(float[][] matrix) { xform = (float[][])matrix.clone(); if(parent != null) parent.fireKinChanged(AHE.CHANGE_VIEW_TRANSFORM); } /** * Sets the current zoom factor. * The zoom factor is defined as the ratio of the span of the kinemage * to the span of this view, such that values less than 1 appear to be * distant, and values greater than 1 appear to be zoomed in. * *

Calling this function will overwrite the previous value for span. * * @param z the desired zoom */ public synchronized void setZoom(float z) { zoom = z; span = 0f; //span = getSpan(); // so span will be calc'd immediately with current kin size if(parent != null) parent.fireKinChanged(AHE.CHANGE_VIEW_TRANSFORM); } /** * Gets the span of this view, * i.e., the desired width of the graphics area in model units. */ public synchronized float getSpan() { if(span <= 0f) { if(zoom <= 0f) zoom = 1.0f; span = parent.getSpan() / zoom; } return span; } /** * Set the span of this view, which (if no zoom has been set or zoom is <= 0) * will set the zoom such that an object s units across fits on screen. */ public synchronized void setSpan(float s) { span = s; if(parent != null) parent.fireKinChanged(AHE.CHANGE_VIEW_TRANSFORM); } //}}} //{{{ get/setClip, get/setCenter //################################################################################################## /** * Returns the current clip factor. * @return the current clip */ public float getClip() { return clip; } /** * Sets the current clip factor. * @param c the desired clip */ public synchronized void setClip(float c) { clip = c; if(parent != null) parent.fireKinChanged(AHE.CHANGE_VIEW_TRANSFORM); } /** Returns the coordinates of the current center as a float[] = {x,y,z} */ public synchronized float[] getCenter() { if(center == null) { if(parent != null) center = parent.getCenter(); else { float[] dummy = { 0f, 0f, 0f }; center = dummy; } } return (float[])center.clone(); } /** * Set the center point for this transform. * @param x the x coordinate * @param y the y coordinate * @param z the z coordinate */ public synchronized void setCenter(float x, float y, float z) { if(center == null) center = new float[3]; center[0] = x; center[1] = y; center[2] = z; if(parent != null) parent.fireKinChanged(AHE.CHANGE_VIEW_TRANSFORM); } //}}} //{{{ translateRotated, viewTranslateRotated //################################################################################################## /** * Given a pixel offset in rotated and scaled coordinates, calculate an offset in "real" coordinates. * If x and y are taken from screen coordinates, remember to invert y! */ public synchronized float[] translateRotated(int x, int y, int z, int screenSize) { float cx, cy, cz, correctedZoom; correctedZoom = (float)screenSize / getSpan(); //getZoom() * (float)screenSize / parent.getSpan(); cx = (float)x / correctedZoom; cy = (float)y / correctedZoom; cz = (float)z / correctedZoom; float[] tcoord = { cx, cy, cz }; float[] coord = mmult(transpose(xform), tcoord); return coord; } /** * Given a pixel offset in rotated and scaled coordinates, calculate a new center point. * If x and y are taken from screen coordinates, remember to invert y! */ public synchronized void viewTranslateRotated(int x, int y, int z, int screenSize) { float[] coord = translateRotated(x, y, z, screenSize); float[] orig = getCenter(); setCenter(orig[0]-coord[0], orig[1]-coord[1], orig[2]-coord[2]); } //}}} //{{{ get/set/activateViewingAxes //################################################################################################## /** * Stores a set of 0-based indices for the coordinates axes that should be * placed into X, Y, Z when this view is activated. * Indices are stored as an int[3], or null (meaning no change). * This does NOT automatically update the coordinates in the kinemage, * even if called on the currently active view. * Coordinates ARE automatically updated when this view is next chosen from the menu. */ public void setViewingAxes(int[] indices) { if(indices == null) this.viewingAxes = null; else this.viewingAxes = (int[]) indices.clone(); } /** Returns the value set by setViewingAxes() (may be null) */ public int[] getViewingAxes() { return this.viewingAxes; } /** * Copies the high-dimensional coordinates at this view's indices * into all point's (untransformed) X, Y, and Z fields. * If a index is out of range (0-based), it is ignored and the value is not changed. */ public void activateViewingAxes() { if(this.viewingAxes == null) return; int xIndex = viewingAxes[0]; int yIndex = viewingAxes[1]; int zIndex = viewingAxes[2]; for(KList list : KIterator.allLists(parent)) { // We will miss points with extra coordinates if // list.dimension wasn't set... if(list.getDimension() <= 3) continue; for(KPoint pt : list) pt.useCoordsXYZ(xIndex, yIndex, zIndex); } parent.fireKinChanged(AHE.CHANGE_POINT_COORDINATES); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/core/Kinemage.java0000644000000000000000000007072411677352606017624 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.io.*; //import java.text.*; import java.util.*; import driftwood.data.*; import driftwood.gui.*; //}}} /** * Kinemage is the top-level container that holds one whole kinemage worth of data. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Fri May 24 21:45:03 EDT 2002 */ public class Kinemage extends AGE // implements ... { //{{{ Variable definitions //################################################################################################## /** * A Map for storing arbitrary information that should be associated with the kinemage. * Everyone is expected to play nice and use some sort of unique String as a key. */ public Map metadata = new HashMap(); // Variables that control the appearance of this kinemage // These are updated by the user picking from the Display menu public boolean atWhitebackground = false; public boolean atOnewidth = false; public boolean atThinline = false; public boolean atPerspective = false; public boolean atFlat = false; public boolean atListcolordominant = false; public boolean atSidedcoloringAlpha = true; // (ARK Spring2010) public boolean atSidedcoloringBeta = false; // (ARK Spring2010) public double atLens = 0.0; // Other information fields often contained in a kinemage public String atPdbfile = null; public String atCommand = null; /** Labels for high-D kins */ public Collection dimensionNames = new ArrayList(); /** min,max,min,max,... for high-D kins */ public List dimensionMinMax = new ArrayList(); /** Scaling factors used to adjust output of "Show XYZ" */ public List dimensionScale = new ArrayList(); /** Translation factors used to adjust output of "Show XYZ" */ public List dimensionOffset = new ArrayList(); protected List viewList = new ArrayList(); protected float[] boundingBox = null; protected float[] center = {0f, 0f, 0f}; protected float span = 0f; /** For looking up standard and custom colors */ protected Map allColorMap; protected Map newColorMap; protected Map unmodAllColorMap = null; protected Map unmodNewColorMap = null; /** For managing aspects */ protected List aspectList = new ArrayList(); /** For looking up masters by name AND iterating thru the masters in order of creation */ protected Map mastersMap = (Map) new UberMap(); /** For assigning pointmasters to bitfield positions */ public String pmLookup = ""; // no pointmasters defined initially /** For tracking whether edits have been saved */ protected boolean modified = false; /** For storing BondRots */ protected Collection bondRots = null; /** Flags set since the last time someone queried changes. */ protected int outerEventFlags = 0; /** Flags set that dirtied internal data which hasn't been cleaned yet. */ protected boolean dirtyMasters = false, dirtySize = false; //}}} //{{{ Constructors //################################################################################################## /** * Creates a new container in the data hierarchy. * * @param nm the ID of this group */ public Kinemage(String nm) { super(); setName(nm); allColorMap = (Map) new UberMap(KPalette.getFullMap()); newColorMap = (Map) new UberMap(); } public Kinemage() { this(""); } //}}} //{{{ appendKinemage //################################################################################################## /** Merges a kinemage into this one. That kinemage should be discarded afterwards. */ public void appendKinemage(Kinemage that) { atWhitebackground = this.atWhitebackground || that.atWhitebackground; atOnewidth = this.atOnewidth || that.atOnewidth; atThinline = this.atThinline || that.atThinline; atPerspective = this.atPerspective || that.atPerspective; atFlat = this.atFlat || that.atFlat; atListcolordominant = this.atListcolordominant || that.atListcolordominant; if(this.atPdbfile == null) atPdbfile = that.atPdbfile; if(this.atCommand == null) atCommand = that.atCommand; for(KView view : that.viewList) { view.parent = this; this.viewList.add(view); } for(Aspect aspect : that.aspectList) { aspect.parent = this; this.aspectList.add(aspect); } // Merge the colorsets for(KPaint paint : that.getNewPaintMap().values()) this.addPaint(paint); // Merge the masters. This is a little tricky due to pointmasters. boolean convertPointmasters = false; for(MasterGroup m2 : that.masterList()) { // Convert bitmasks from old kin to new kin correspondences if(m2.pm_mask != 0) { m2.pm_mask = this.toPmBitmask(that.fromPmBitmask(m2.pm_mask), true, false); convertPointmasters = true; } MasterGroup m1 = this.mastersMap.get(m2.getName()); if(m1 == null) { m2.setParent(this); this.mastersMap.put(m2.getName(), m2); } else { // This isn't ideal -- what if the bits in m2 are also set // in some other master belonging to this? // But it's about the best we can do. m1.pm_mask |= m2.pm_mask; } } // Finish merging the masters by converting point's pointmaster masks. // Each point is visited just once b/c instance= lists have no children of their own. if(convertPointmasters) for(KPoint p : KIterator.allPoints(that)) p.setPmMask(this.toPmBitmask(that.fromPmBitmask(p.getPmMask()))); for(KGroup group : that) { this.add(group); group.setParent(this); } fireKinChanged(CHANGE_EVERYTHING); // Pass false to avoid removing unused groups, masters in kinemage "this". // Otherwise, (for instance) we may delete the mobile sidechain used by Chiropraxis tools. this.initAll(false); // gets us back to a consistent state } //}}} //{{{ get/setParent, getKinemage, is/setOn, (set)hasButton, is/setDominant //################################################################################################## public Kinemage getParent() { return null; } public void setParent(Kinemage owner) { /* NO-OP */ } /** Retrieves the Kinemage object holding this element */ public Kinemage getKinemage() { return this; } public boolean isOn() { return true; } public void setOn(boolean paint) { /* NO-OP */ } public boolean hasButton() { return false; } public void setHasButton(boolean b) { /* NO-OP */ } public boolean isDominant() { return false; } public void setDominant(boolean b) { /* NO-OP */ } //}}} //{{{ fire/queryKinChanged //################################################################################################## protected static final int DIRTY_MASTERS = CHANGE_TREE_CONTENTS | CHANGE_TREE_MASTERS | CHANGE_POINT_CONTENTS | CHANGE_POINT_MASTERS | CHANGE_MASTERS_LIST; protected static final int DIRTY_SIZE = CHANGE_TREE_CONTENTS | CHANGE_POINT_CONTENTS | CHANGE_POINT_COORDINATES; public void fireKinChanged(int eventFlags) { this.outerEventFlags |= eventFlags; if((eventFlags & DIRTY_MASTERS) != 0) dirtyMasters = true; if((eventFlags & DIRTY_SIZE) != 0) dirtySize = true; } /** Returns all changes and clears all flags. */ public int queryKinChanged() { return queryKinChanged(CHANGE_EVERYTHING, CHANGE_EVERYTHING); } /** Returns only the changes corresponding to set bits in the read mask, and clears those set in the clear mask. */ public int queryKinChanged(int read, int clear) { int flags = outerEventFlags & read; outerEventFlags &= ~clear; return flags; } //}}} //{{{ initAll //################################################################################################## /** * Convenience function to call after constructing a kinemage from a file * and before displaying it. This takes care of the following: *

    *
  1. calcSize() -- re-computes size of the kinemage
  2. *
  3. ensureAllMastersExist() -- creates any missing masters
  4. *
  5. syncAllMasters() -- set masters' states appropriately
  6. *
  7. initAllViews() -- converts zooms to spans as necessary
  8. *
  9. animate(0) and animate2(0) -- initializes animations
  10. *
* @param cleanEmpties if true (the default), remove groups/subgroups/lists * that contain no points and remove unused masters. */ public void initAll(boolean cleanEmpties) { if(cleanEmpties) removeEmptyAGEs(); calcSize(); ensureAllMastersExist(); if(cleanEmpties) removeUnusedMasters(); syncAllMasters(); initAllViews(); animate(0); if(!hasAnimateGroups()) animate2(0); // turns off animate group that was just turned on } public void initAll() { initAll(true); } //}}} //{{{ calcSize, getSpan, getCenter //################################################################################################## /** * Calculates the bounding box and sphere, and center and span of this kinemage. */ protected void calcSize() { // Produces NaN for the center when kinemage is empty //float[] bounds = { Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, //Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY }; float[] bounds = { Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE }; calcBoundingBox(bounds); boundingBox = bounds; center[0] = (boundingBox[3] + boundingBox[0])/2f; center[1] = (boundingBox[4] + boundingBox[1])/2f; center[2] = (boundingBox[5] + boundingBox[2])/2f; span = 2f * (float)Math.sqrt(calcRadiusSq(center)); if(span == 0) span = 1; // in case there's only one point in the kin dirtySize = false; } /** * Calculates the span of this kinemage according to the algorithm used by Mage. * @return the diameter of a sphere that encloses the bounding box that encloses this kinemage */ public float getSpan() { if(boundingBox == null || dirtySize) calcSize(); return span; } /** * Calculates the center of this kinemage according to the algorithm used by Mage. * @return the center of the bounding box that encloses this kinemage */ public float[] getCenter() { if(boundingBox == null || dirtySize) calcSize(); return (float[])center.clone(); } //}}} //{{{ addView, getViewList, initAllViews //################################################################################################## /** For use creating new views inside the application. */ public void addView(KView v) { viewList.add(v); fireKinChanged(CHANGE_VIEWS_LIST); } /** * Returns a List of all the saved views of this kinemage. * This list may be modified in order to remove or reorder * the views present in this kinemage. */ public List getViewList() { return viewList; } /** * Calls getSpan() on all views, which converts any values specified as zooms into spans. * Also creates a default view if none exists. */ public void initAllViews() { if(viewList.size() < 1) { KView stdView = new KView(this); this.addView(stdView); } for(KView v : viewList) v.getSpan(); } //}}} //{{{ syncAllMasters, ensureAllMastersExist //################################################################################################## /** Sets all masters to reflect the state of the group(s) they control */ public void syncAllMasters() { for(MasterGroup master : mastersMap.values()) master.syncState(); } /** * Builds MasterGroup objects for every master named by a group/subgroup/list. * This WILL NOT pick up on any pointmasters that aren't also used by one of the above. */ public void ensureAllMastersExist() { for(AGE age : KIterator.allNonPoints(this)) // I'm not sure why the cast is required ... compiler bug? for(String masterName : (Collection) age.getMasters()) if(!mastersMap.containsKey(masterName)) { MasterGroup master = getMasterByName(masterName); // We can call this now, assuming the whole file has been read in // and all groups to be pasted, have been. master.syncState(); } dirtyMasters = false; } //}}} //{{{ getMasterByName, ensureMasterExists, masterList //################################################################################################## /** Returns a MasterGroup with the given name, creating one if it didn't already exist. */ public MasterGroup getMasterByName(String name) { MasterGroup master = mastersMap.get(name); if(master == null) { master = new MasterGroup(this, name); mastersMap.put(name, master); fireKinChanged(CHANGE_MASTERS_LIST); } return master; } /** Finds a MasterGroup with the given name, creating one if it didn't already exist. */ public void ensureMasterExists(String name) { getMasterByName(name); } /** Returns an unmodifiable Collection of the masters */ public Collection masterList() { if(dirtyMasters) ensureAllMastersExist(); return Collections.unmodifiableCollection(mastersMap.values()); } //}}} //{{{ toPmBitmask, fromPmBitmask //################################################################################################## /** * Converts a string of characters to a bit mask for pointmasters. * The particular mapping of characters to bits is unique to each kinemage, * but only up to 32 different characters (case-sensitive) are supported). * @param addFlags if true, assign unrecognized characters to bit positions, * but don't necessarily create masters for them. Defaults to false. * @param addMasters if true, for newly-assigned characters also create * a master to control that flag. Defaults to false. */ public int toPmBitmask(String s, boolean addFlags, boolean addMasters) { int i, end_i, bit, mask = 0; end_i = s.length(); for(i = 0; i < end_i; i++) { bit = pmLookup.indexOf(s.charAt(i)); if(bit >= 0 && bit < 32) mask |= 1 << bit; else if(addFlags && bit == -1) { pmLookup = pmLookup+s.charAt(i); bit = pmLookup.indexOf(s.charAt(i)); if(bit >= 0 && bit < 32) mask |= 1 << bit; if(addMasters) { MasterGroup master = getMasterByName(s.substring(i,i+1)); master.setPmMask(s.substring(i,i+1)); } } } return mask; } public int toPmBitmask(String s) { return toPmBitmask(s, false, false); } /** Does the inverse of toPmBitmask() */ public String fromPmBitmask(int mask) { StringBuffer result = new StringBuffer(); int probe = 1, end = Math.min(32, pmLookup.length()); for(int i = 0; i < end; i++) { if((mask & probe) != 0) result.append(pmLookup.charAt(i)); probe = probe << 1; } return result.toString(); } //}}} //{{{ animate, animate2, doAnimation //################################################################################################## /** * Drives the animation forward (+1), backward (-1), or to having just one * group on (0) for all groups marked 'animate'. * All '2animate' groups are turned off. */ public void animate(int incr) { doAnimation(getAnimateGroups(), get2AnimateGroups(), incr); } /** * Drives the animation forward (+1), backward (-1), or to having just one * group on (0) for all groups marked '2animate'. * All 'animate' groups are turned off. */ public void animate2(int incr) { doAnimation(get2AnimateGroups(), getAnimateGroups(), incr); } protected void doAnimation(AGE[] ages, AGE[] offages, int incr) { int firstOn = -1; for(int i = 0; i < ages.length; i++) { if(ages[i].isOn()) { firstOn = i; break; } } int turnOn = (firstOn == -1 ? 0 : firstOn+incr); if(turnOn < 0) turnOn = ages.length-1; else if(turnOn >= ages.length) turnOn = 0; for(int i = 0; i < ages.length; i++) { ages[i].setOn(i == turnOn); // for doing moviews if ((i == turnOn)&&(((KGroup)ages[i]).isMoview())) { KView view = getViewList().get(((KGroup)ages[i]).getMoview() - 1); String currViewKey = null; for (Map.Entry e : metadata.entrySet()) { if (e.getValue() instanceof KView) { currViewKey = (String)e.getKey(); } } if ((currViewKey != null)&&(view != null)) { metadata.put(currViewKey, view.clone()); view.activateViewingAxes(); fireKinChanged(CHANGE_KIN_METADATA); fireKinChanged(CHANGE_VIEW_TRANSFORM); } } } for(int i = 0; i < offages.length; i++) offages[i].setOn(false); } //}}} //{{{ [accumulate, accumulate2, doAccumulate BEFORE 090930 FOR POSTERITY] //################################################################################################## // /** Turns on the next 'animate' group. '2animate' groups are not affected. */ // public void accumulate() // { doAccumulate(getAnimateGroups()); } // // /** Turns on the next '2animate' group. 'animate' groups are not affected. */ // public void accumulate2() // { doAccumulate(get2AnimateGroups()); } // // /** // * In order for this to work as expected, we want to turn on the first off group // * that we encounter AFTER the first on group, in a circular way. // */ // protected void doAccumulate(AGE[] ages) // { // int firstOn = -1; // for(int i = 0; i < ages.length; i++) // { // if(ages[i].isOn()) // { // firstOn = i; // break; // } // } // // for(int i = firstOn+1; i < firstOn+ages.length; i++) // { // if( !ages[i % ages.length].isOn() ) // { // ages[i % ages.length].setOn(true); // break; // } // } // } //}}} //{{{ accumulate, accumulate2, doAccumulate //################################################################################################## /** * Turns on the next (+1) or turns off the most recent (-1) 'animate' group. * '2animate' groups are not affected. */ public void accumulate(int incr) { doAccumulate(getAnimateGroups(), incr); } /** * Turns on the next (+1) or turns off the most recent (-1) '2animate' group. * 'animate' groups are not affected. */ public void accumulate2(int incr) { doAccumulate(get2AnimateGroups(), incr); } /** * In order for this to work as expected, we want to turn on the first off * group that we encounter AFTER the first on group (+1), in a circular way, * or turn off the LAST on group (-1). */ protected void doAccumulate(AGE[] ages, int incr) { if(incr == -1) { // "Decumulate" int lastOn = -1; for(int i = 0; i < ages.length; i++) { if(ages[i].isOn()) { lastOn = i; } } if(lastOn == -1) return; ages[lastOn].setOn(false); } else { // Accumulate int firstOn = -1; for(int i = 0; i < ages.length; i++) { if(ages[i].isOn()) { firstOn = i; break; } } for(int i = firstOn+1; i < firstOn+ages.length; i++) { if( !ages[i % ages.length].isOn() ) { ages[i % ages.length].setOn(true); break; } } } } //}}} //{{{ has(2)AnimateGroups, get(2)AnimateGroups //################################################################################################## public boolean hasAnimateGroups() { for(KGroup group : children) if(group.isAnimate()) return true; return false; } public boolean has2AnimateGroups() { for(KGroup group : children) if(group.is2Animate()) return true; return false; } public int getNumAnimateGroups() { return getAnimateGroups().length; } public int getNum2AnimateGroups() { return get2AnimateGroups().length; } protected KGroup[] getAnimateGroups() { ArrayList animateGroups = new ArrayList(); for(KGroup group : children) if(group.isAnimate()) animateGroups.add(group); return animateGroups.toArray(new KGroup[animateGroups.size()]); } protected KGroup[] get2AnimateGroups() { ArrayList animateGroups = new ArrayList(); for(KGroup group : children) if(group.is2Animate()) animateGroups.add(group); return animateGroups.toArray(new KGroup[animateGroups.size()]); } //}}} //{{{ addPaint, getPaintForName, getAll/NewPaintMap //################################################################################################## /** Registers the given paint as a legal color for objects in this kinemage. */ public void addPaint(KPaint paint) { if(paint == null) throw new NullPointerException("Can't add a null paint"); allColorMap.put(paint.toString(), paint); newColorMap.put(paint.toString(), paint); fireKinChanged(CHANGE_KIN_METADATA); } /** Returns the KPaint with the given name, or null if unknown. */ public KPaint getPaintForName(String name) { KPaint paint = (KPaint)allColorMap.get(name); // this will catch things like rust, skyblue, paleyellow, grey, etc. if(paint == null) paint = KPalette.forName(name); return paint; } /** Returns an unmodifiable Map<String, KPaint> of known colors */ public Map getAllPaintMap() { if(unmodAllColorMap == null) unmodAllColorMap = Collections.unmodifiableMap(allColorMap); return unmodAllColorMap; } /** Returns an unmodifiable Map<String, KPaint> of colors that have been defined just for this kinemage */ public Map getNewPaintMap() { if(unmodNewColorMap == null) unmodNewColorMap = Collections.unmodifiableMap(newColorMap); return unmodNewColorMap; } //}}} //{{{ createAspect, getAspects //################################################################################################## public void createAspect(String name, Integer index) { Aspect a = new Aspect(this, name, index); aspectList.add(a); fireKinChanged(CHANGE_ASPECTS_LIST); } /** Returns an unmodifiable view of all the saved aspects of this kinemage. */ public List getAspects() { return Collections.unmodifiableList(aspectList); } //}}} //{{{ is/setModified //################################################################################################## /** * If true, then the kinemage has been modified since it was loaded * and the changes have not yet been saved. * This property is used for save-on-exit traps. */ public boolean isModified() { return modified; } /** Sets the value of isModified(). */ public void setModified(boolean b) { modified = b; } //}}} //{{{ get/setBondRots //################################################################################################## public void setBondRots(Collection br) { bondRots = br; } public Collection getBondRots() { return bondRots; } //}}} //{{{ getFileFilters public static SuffixFileFilter getKinFileFilter() { SuffixFileFilter kinFilter = new SuffixFileFilter("Kinemage files"); kinFilter.addSuffix(".kin"); kinFilter.addSuffix(".kip"); kinFilter.addSuffix(".kin.gz"); kinFilter.addSuffix(".kip.gz"); return kinFilter; } //}}} //{{{ removeUnusedMasters //################################################################################################## /** Deletes all masters that don't affect any group/subgroup/list/point */ public void removeUnusedMasters() { Set usedNames = new HashSet(); int pm_mask = 0; // First, tally all masters and pointmasters for(AGE age : KIterator.allNonPoints(this)) usedNames.addAll(age.getMasters()); for(KList list : KIterator.allLists(this)) for(KPoint point : list.getChildren()) pm_mask |= point.getPmMask(); // Now, remove masters that aren't used for(Iterator> iter = mastersMap.entrySet().iterator(); iter.hasNext(); ) { Map.Entry e = iter.next(); String name = e.getKey(); MasterGroup master = e.getValue(); if(!usedNames.contains(name) && (master.pm_mask & pm_mask) == 0) { iter.remove(); fireKinChanged(CHANGE_MASTERS_LIST); } } } //}}} //{{{ removeEmptyAGEs //################################################################################################## /** Deletes all groups/subgroups/lists that have no points under them */ public void removeEmptyAGEs() { removeEmptyAGEs(this); } protected void removeEmptyAGEs(AGE parent) { for(Iterator iter = parent.getChildren().iterator(); iter.hasNext(); ) { AHE ahe = iter.next(); if(ahe instanceof KList) { KList list = (KList) ahe; if(list.getChildren().isEmpty() && list.getInstance() == null) { iter.remove(); if(list.getParent() == parent) list.setParent(null); fireKinChanged(CHANGE_TREE_CONTENTS); } } else if(ahe instanceof AGE) // but not a list { AGE age = (AGE) ahe; removeEmptyAGEs(age); if(age.getChildren().isEmpty()) { iter.remove(); if(age.getParent() == parent) age.setParent(null); fireKinChanged(CHANGE_TREE_CONTENTS); } } } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/core/Transformable.java0000644000000000000000000000247311531212646020663 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * Transformable objects can participate in rendering and picking * operations by having their original coordinates transformed into the * drawing coordinate space. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Mar 27 10:32:24 EST 2003 */ public interface Transformable //extends ... implements ... { /** * A call to this method indicates the object * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void doTransform(Engine engine, Transform xform); }//class king-2.21.120420/king/src/king/core/Engine2D.java0000644000000000000000000002173111677352606017471 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.awt.*; import java.awt.geom.*; import java.util.*; import javax.swing.*; import driftwood.r3.*; import driftwood.util.*;; //}}} /** * Engine2D does "traditional" drawing using java.awt.Graphics objects, * based on the transformed coordinates. * *

Begun on Mon Apr 22 17:21:31 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class Engine2D extends Engine { //{{{ Variables //################################################################################################## // READ ONLY: Parameters for painting points public Painter painter = null; public boolean useStereo = false; public float stereoRotation = 0; public Font bigFont, smallFont; Rectangle canvasRect = new Rectangle(); boolean transparentBackground = false; // used only for certain export features //}}} //{{{ Constructor //################################################################################################## /** * Creates a new rendering engine. */ public Engine2D() { super(); stereoRotation = (float)Math.toRadians(6.0); bigFont = new Font("SansSerif", Font.PLAIN, 24); smallFont = new Font("SansSerif", Font.PLAIN, 12); } //}}} //{{{ render //################################################################################################## /** * Transforms the given Transformable and renders it to a graphics context. * @param xformable the Transformable that will be transformed and rendered * @param view a KView representing the current rotation/zoom/clip * @param bounds the bounds of the area to render to * @param painter the Painter that should be used for rendering stuff this pass */ public void render(Transformable xformable, KView view, Rectangle bounds, Painter painter) { // The game plan: // 1. Paint background // 2. Load drawing variables // 3. For each region (there are 2 for stereo): // a. Transform the coordinates from model-space to screen-space, // add transformed objects to Z-buffer. // b. Paint all objects in Z-buffer, from back to front. this.painter = painter; this.canvasRect.setBounds(bounds); // Get colors and prepare the graphics device painter.setViewport(bounds.x, bounds.y, bounds.width, bounds.height); Color backgroundClearColor; if(whiteBackground) { if(monochrome) backgroundMode = KPaint.WHITE_MONO; else backgroundMode = KPaint.WHITE_COLOR; backgroundClearColor = KPaint.white; } else { if(monochrome) backgroundMode = KPaint.BLACK_MONO; else backgroundMode = KPaint.BLACK_COLOR; backgroundClearColor = KPaint.black; } if(this.transparentBackground) { backgroundClearColor = new Color( backgroundClearColor.getRed(), backgroundClearColor.getGreen(), backgroundClearColor.getBlue(), 0); // alpha = 0 --> transparent this.transparentBackground = false; // disabled after one pass } painter.clearCanvas(backgroundClearColor); // Set some last-minute drawing variables markerSize = (bigMarkers ? 2 : 1); labelFont = (bigLabels ? bigFont : smallFont); painter.setFont(labelFont); if(useStereo) { int halfwidth = Math.max(0, bounds.width/2 - 10); // This way, toggling cross-eye vs wall-eye just swaps the two images! // This makes figure-making much easier, as you can easily do both versions. KView leftView = (KView)view.clone(), rightView = (KView)view.clone(); if(stereoRotation < 0) leftView.rotateY(stereoRotation); else rightView.rotateY(-stereoRotation); Rectangle clipRgn = new Rectangle(); clipRgn.setBounds( bounds.x, bounds.y, halfwidth, bounds.height); painter.setViewport(bounds.x, bounds.y, halfwidth, bounds.height); renderLoop(xformable, leftView, clipRgn); clipRgn.setBounds( (bounds.x + bounds.width - halfwidth), bounds.y, halfwidth, bounds.height); painter.setViewport((bounds.x + bounds.width - halfwidth), bounds.y, halfwidth, bounds.height); renderLoop(xformable, rightView, clipRgn); // Have to re-activate all of the screen for drawing during overpaint painter.setViewport(bounds.x, bounds.y, bounds.width, bounds.height); } else//!useStereo { renderLoop(xformable, view, bounds); } } //}}} //{{{ renderLoop //################################################################################################## /** * Transforms the given Transformable and renders it to a graphics context. * @param xformable the Transformable that will be transformed and rendered * @param view a KView representing the current rotation/zoom/clip * @param bounds the bounds of the area to render to. * Note that this function does not clip g to ensure that it only paints within these bounds! */ void renderLoop(Transformable xformable, KView view, Rectangle bounds) { this.transform(xformable, view, bounds); // Now paint them to the graphics for(int i = 0; i <= TOP_LAYER; i++) { // Calculate depth-cueing constants for this level if(cueIntensity) colorCue = (KPaint.COLOR_LEVELS*i)/(TOP_LAYER+1); else colorCue = KPaint.COLOR_LEVELS - 1; if(cueThickness) widthCue = (KPaint.COLOR_LEVELS*i)/(TOP_LAYER+1); else widthCue = (KPaint.COLOR_LEVELS-1) / 2; //if(colorCue >= KPaint.COLOR_LEVELS) // SoftLog.err.println("colorCue = "+colorCue+"; i = "+i+"; TOP_LAYER = "+TOP_LAYER); // Render all non-screen points at this level (faster to not use iterators) ArrayList zb = zbuffer[i]; ArrayList pnt = parents[i]; for(int j = 0, end_j = zb.size(); j < end_j; j++) { KPoint pt = (KPoint) zb.get(j); KList l = (KList) pnt.get(j); if(l == null) { renderPoint(pt); } else // see setActingParent() for an explanation { KList oldPnt = pt.getParent(); pt.setParent(l); renderPoint(pt); pt.setParent(oldPnt); } } } } //}}} //{{{ renderPoint //################################################################################################## /** * Renders a single point provided by renderLoop(). * This method was added so multiple for-loops in renderLoop() * go through the exact same point-rendering procedure. */ void renderPoint(KPoint pt) { // The stored parent at this point is the proper one, // even if we're doing the weird acting parent hijinx. KList parent = pt.getParent(); if(!parent.getScreen()) pt.paint2D(this); else { // Screen-oriented hack (DAK 090506) // Seems like Ian took pains to speed up operations in this // method, but my hack addition here should be accessed only // rarely and thus shouldn't slow KiNG down too much. int oldColorCue = colorCue; int oldWidthCue = widthCue; colorCue = KPaint.COLOR_LEVELS/2;//-1; widthCue = KPaint.COLOR_LEVELS/2;//-1; pt.paint2D(this); colorCue = oldColorCue; widthCue = oldWidthCue; } } //}}} //{{{ getCanvasSize, setTransparentBackground //################################################################################################## /** Returns the size of the last rendering operation. */ public Dimension getCanvasSize() { return new Dimension(canvasRect.width, canvasRect.height); } /** * Makes the background be rendered as transparent for the next pass ONLY. * This is useful for certain export features that don't want a black/white * box hanging around behind the image. */ public void setTransparentBackground() { this.transparentBackground = true; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/core/KPoint.java0000644000000000000000000002034111531212646017262 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import driftwood.r3.*; //}}} /** * KPoint is a generic, non-instantiable representation of a 'point' in a kinemage. * This class and its subclasses contain the code for drawing all the different graphics primitives in Mage. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 12:57:57 EDT 2002 */ public interface KPoint extends AHE, Cloneable, MutableTuple3 { //{{{ Constants //}}} //{{{ clone //################################################################################################## public KPoint clone(); //}}} //{{{ get/setX/Y/Z //################################################################################################## /** Returns the untransformed coordinate for this point */ public double getX(); /** Returns the untransformed coordinate for this point */ public double getY(); /** Returns the untransformed coordinate for this point */ public double getZ(); /** Assigns a value to the untransformed coordinate for this point */ public void setX(double xx); /** Assigns a value to the untransformed coordinate for this point */ public void setY(double yy); /** Assigns a value to the untransformed coordinate for this point */ public void setZ(double zz); /** Assigns a value to the untransformed coordinates for this point */ public void setXYZ(double xx, double yy, double zz); //}}} //{{{ get/setDrawX/Y/Z //################################################################################################## /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawX(); /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawY(); /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawZ(); //}}} //{{{ get/setAllCoords, useCoordsXYZ //################################################################################################## /** * Stores an array of coordinates for "high-dimensional" points. * The float[] is stored without cloning and so is subject to overwrite. */ public void setAllCoords(float[] coords); /** * Retrieves the "high-dimensional" coordinates of this point, or null if not set. * The float[] is returned without cloning and so is subject to overwrite. */ public float[] getAllCoords(); /** * Copies the high-dimensional coordinates at the specified indices * into this point's (untransformed) X, Y, and Z fields. * If a index is out of range (0-based), it is ignored and the value is not changed. */ public void useCoordsXYZ(int xIndex, int yIndex, int zIndex); //}}} //{{{ get/setPrev, isBreak //################################################################################################## /** * Sets the point that precedes this one. * This matters to "chainable" points, like vectors and triangles. * For other points, it does nothing. * @param pt the point preceding this one in seqence */ public void setPrev(KPoint pt); /** * Gets the point preceding this one in the chain. * @return the preceding point, or null if (a) this is a break in the chain or (b) this is not a chainable point type. */ public KPoint getPrev(); /** * True iff this is a chainable point type (e.g. vector, triangle) AND there is a chain break. */ public boolean isBreak(); //}}} //{{{ is/get/set{On, Unpickable, Ghost, Color, Aspects, Width, Radius, Comment} //################################################################################################## /** Indicates whether this point can be picked with the mouse */ public boolean isUnpickable(); /** Sets the picking status of this point */ public void setUnpickable(boolean b); /** Indicates whether this point is a "ghost" for Mage */ public boolean isGhost(); /** Sets the ghost status of this point */ public void setGhost(boolean b); /** Returns the color of this point, or null if it inherits from its list */ public KPaint getColor(); /** Sets the color of this point. */ public void setColor(KPaint c); /** Gets the aspect string of this point */ public String getAspects(); /** Sets the aspect string of this point */ public void setAspects(String a); /** Gets the line width of this point, if applicable */ public int getWidth(); /** Sets the line width of this point, if applicable */ public void setWidth(int w); /** Gets the radius of this point, if applicable */ public float getRadius(); /** Sets the radius of this point, if applicable */ public void setRadius(float radius); /** Sets the point comment for this point. */ public void setComment(String cmt); /** Gets the comment for this point, which defaults to null. */ public String getComment(); //}}} //{{{ getDrawingColor //################################################################################################## /** Returns the color that will be used to draw this point (ignoring aspects). Never null. */ public KPaint getDrawingColor(); /** Returns the color that will be used to draw this point, taking aspects into account. Never null. */ public KPaint getDrawingColor(Engine engine); //}}} //{{{ pmHit, pmWouldHit, get/setPmMask //################################################################################################## /** * Processes a pointmaster on/off request. * @param mask the bitmask indicating which masters are being turned on/off * @param offmask the bitmask indicating which masters are already off * @param turnon true if affected points are to be turned on, * false if affected points are to be turned off. */ public void pmHit(int mask, int offmask, boolean turnon); /** Indicates whether or not the given pointmaster set would affect this point. */ public boolean pmWouldHit(int mask); public int getPmMask(); public void setPmMask(int mask); //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform); /** /** * A call to this method indicates the object * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. * @param zoom the zoom factor encoded by the Transform, * as a convenience for resizing things. */ public void doTransform(Engine engine, Transform xform, double zoom); //}}} //{{{ paint2D, isPickedBy //################################################################################################## /** * Renders this point to the specified graphics surface, * using the display settings from engine. */ public void paint2D(Engine2D engine); /** * Returns true if the specified pick hits this point, else returns false * Pays no attention to whether this point is marked as unpickable. * @param radius the desired picking radius * @param objPick whether we should try to pick solid objects in addition to points * @return the KPoint that should be counted as being picked, or null for none. * Usually this, but maybe not for object picking. */ public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick); //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/core/BondRot.java0000644000000000000000000000541411531212646017431 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.util.*; //}}} /** * BondRot is an object to represent a BondRot for doing bond rotations like in Mage. * *

Copyright (C) 2004-2007 Vincent B. Chen. All rights reserved. *
Begun in June 2004 */ public class BondRot implements Iterable { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## int bondRotNum = -1; ArrayList bondLists = null; boolean isOpen = false; String name = null; double origAng = 0; double currAng = 0; //}}} //{{{ Constructor(s) //############################################################################## /** * Constructor */ public BondRot(int rotNum) { this(rotNum, null, 0); } /** * Constructor */ public BondRot(int rotNum, String nm, double angle) { bondLists = new ArrayList(); bondRotNum = rotNum; isOpen = true; name = nm; origAng = angle; currAng = angle; } //}}} //{{{ add, is/setOpen, get/setCurrentAngle, getOrigAngle, getName //############################################################################## /** * Adds a KList to this bondrot. */ public void add(KList list) { bondLists.add(list); } public boolean isOpen() { return isOpen; } public void setOpen(boolean status) { isOpen = status; } public double getCurrentAngle() { return currAng; } public void setCurrentAngle(double ang) { currAng = ang; } public double getOrigAngle() { return origAng; } public String getName() { return name; } //}}} //{{{ getAxisList, iterator, toString, equals, hashCode //############################################################################## /** * Returns the first list in this BondRot. * The first two points of said list determine the axis of rotation. */ public KList getAxisList() { return bondLists.get(0); } public Iterator iterator() { return bondLists.iterator(); } public String toString() { //return ("BondRot " + bondRotNum + ", Contains: " + bondLists.size() + " lists"); return name; } public boolean equals(Object obj) { if (obj == null || !(obj instanceof BondRot)) return false; BondRot rot = (BondRot) obj; return (name.equals(rot.getName())); } public int hashCode() { return name.hashCode(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/core/Aspect.java0000644000000000000000000000365511531212646017306 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * Aspect is a lightweight class used for kinemage "aspects", * a kind of alternative point color. * Aspects specify color on a point-by-point basis, but there may be many different * aspects in one kinemage. * They are used for "color-by" schemes, where the same objects may be colored * differently based on different sets of criteria. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Dec 4 10:26:15 EST 2002 */ public class Aspect //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## protected Kinemage parent; protected String name; protected Integer index; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @param parent the kinemage this aspect belongs to. * @param name a descriptive name for this aspect. * @param index the index of this aspect in the aspect string, * where the first position is index 1. */ public Aspect(Kinemage parent, String name, Integer index) { this.parent = parent; this.name = name; this.index = index; } //}}} //{{{ getName, getIndex //################################################################################################## public String getName() { return name; } public Integer getIndex() { return index; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/core/MasterGroup.java0000644000000000000000000001735111531212646020335 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; import java.io.*; //import java.text.*; import java.util.*; //}}} /** * MasterGroup is used to implements masters. * Masters turn on and off disparate elements of the hierarchy with a single button. * Although they're declared as descendants of AGE, they should contain no children. * Instead, use AGE.addMaster(masterGroup.toString()). * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Sun Jun 2 18:54:11 EDT 2002 */ public class MasterGroup extends AGE // implements ... { //{{{ Static fields //}}} //{{{ Variable definitions //################################################################################################## public int pm_mask = 0; // no point masters to start with protected boolean indent = false; protected boolean forceOnOff = false; // was state specified in kin? See setOnForced() //}}} //{{{ Constructors //################################################################################################## /** * Creates a new master control. * * @param owner the Kinemage that owns this master * @param label the ID of this master */ public MasterGroup(Kinemage owner, String label) { super(); setParent(owner); setName(label); } //}}} //{{{ setOn{Limited, Forced} //################################################################################################## /** * Turns the checkbox on/off from within the program. * Automatically makes the same change to all groups immediately under this one. */ public void setOn(boolean alive) { super.setOn(alive); touchMaster(alive); if(pm_mask != 0) pmHit(pm_mask, alive); } /** * Has the effect of setOn(), but without triggering the master. * That is, all groups/subgroups/lists/points that are under the control * of this master WILL NOT be affected by this function call. */ public void setOnLimited(boolean alive) { super.setOn(alive); } /** * Has the effect of setOn(), but delays triggering the master until * syncState() is called. This is useful for explicit 'on' and 'off' * designations of masters in the kinemage file. */ public void setOnForced(boolean alive) { setOnLimited(alive); this.forceOnOff = true; } //}}} //{{{ touchMaster //################################################################################################## /** * Traverses the kinemage, realizing the effects of turning on/off a single master. * @param state true for on, false for off */ private void touchMaster(boolean state) { if(parent == null) return; // Build a list of names of masters that are off ArrayList mastersOff = new ArrayList(); for(MasterGroup m : getKinemage().masterList()) if(!m.isOn()) mastersOff.add(m.getName()); String[] mOff = mastersOff.toArray(new String[mastersOff.size()]); String mName = this.getName(); // Traverse the hierarchy applying the master OUTER: for(AGE age : KIterator.allNonPoints(getKinemage())) { Collection ageMasters = age.getMasters(); if(ageMasters.contains(mName) && age.isOn() != state) { // master was just turned on and age is off if(state) { for(int i = 0; i < mOff.length; i++) if(ageMasters.contains(mOff[i])) continue OUTER; age.setOn(true); } // master was just turned off and age is on else age.setOn(false); } } } //}}} //{{{ syncState //################################################################################################## /** * Traverses the kinemage, examining the states of its targets. * If the master is on, it will be turned off iff none of its targets are on. * If the master is off, all targets will be turned off. * Assume that pointmastered points will be on. */ public void syncState() { if(parent == null) return; if(this.forceOnOff) { // This *WILL* trigger the master to turn things it controls ON or OFF this.setOn( this.isOn() ); //this.forceOnOff = false; } else if(this.isOn()) { // If any AGE controlled by this master is on, this master should be on; else it should be off. boolean state = false; String masterName = this.getName(); for(AGE age : KIterator.allNonPoints(getKinemage())) { if(age.getMasters().contains(masterName)) state |= age.isOn(); if(state) break; } if(this.pm_mask != 0) for(KPoint point : KIterator.allPoints(getKinemage())) { state |= point.pmWouldHit(this.pm_mask); if(state) break; } // This won't trigger the master to turn on groups that are off this.setOnLimited(state); } else { // Master wasn't on, but wasn't forced (ie wasn't explicitly specified in the kin). // This should never happen, but if it did no action would be needed. } } //}}} //{{{ get/setPmMask, pmHit //################################################################################################## public int getPmMask() { return pm_mask; } /** Sets the point master flags of this button based on a string */ public void setPmMask(String mask) { pm_mask = getKinemage().toPmBitmask(mask, true, false); // assume that if we have points, at least some of them are on // therefore, this master should start out on, too ///super.setOn(true); } /** * Processes a pointmaster on/off request. * @param mask the bitmask indicating which masters are being turned on/off * @param turnon true if affected groups are to be turned on, * false if affected groups are to be turned off. */ public void pmHit(int mask, boolean turnon) { if(parent == null) return; // Build a mask of master bits that are off; we're already on int offmask = 0; for(MasterGroup m : getKinemage().masterList()) if(!m.isOn()) offmask |= m.pm_mask; if(turnon && (mask & ~offmask) == 0) return; //System.err.println(" turnon = "+turnon); //System.err.println(" mask = "+Integer.toBinaryString(mask)); //System.err.println("offmask = "+Integer.toBinaryString(offmask)); for(KPoint point : KIterator.allPoints(getKinemage())) point.pmHit(mask, offmask, turnon); } //}}} //{{{ add/removeMaster, getMasters, get/setIndent //################################################################################################## /** Not supported */ public void addMaster(String masterName) { throw new UnsupportedOperationException("Not supported by MasterGroup"); } /** Not supported */ public void removeMaster(String masterName) { throw new UnsupportedOperationException("Not supported by MasterGroup"); } /** Not supported */ public Collection getMasters() { throw new UnsupportedOperationException("Not supported by MasterGroup"); } public boolean getIndent() { return this.indent; } public void setIndent(boolean b) { this.indent = b; } //}}} }//class king-2.21.120420/king/src/king/core/AHE.java0000644000000000000000000001223111531212646016452 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * AHE (Abstract Hierarchy Element) is the basis for all points, lists, groups, etc. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 10:50:32 EDT 2002 */ public interface AHE

extends Transformable { /** "Everything" has changed (if you're not sure which one(s) to use, try this) */ public static final int CHANGE_EVERYTHING = ~0; /** A group/subgroup/list has been added to / removed from the kinemage */ public static final int CHANGE_TREE_CONTENTS = (1<<0); /** Some property (name, dominant, etc) of a group/subgroup/list has changed */ public static final int CHANGE_TREE_PROPERTIES = (1<<1); /** A group/subgroup/list has switched on or off (shown / hidden) */ public static final int CHANGE_TREE_ON_OFF = (1<<2); /** The set of masters controlling a group/subgroup/list has changed */ public static final int CHANGE_TREE_MASTERS = (1<<3); /** Something / everything has changed about a group/subgroup/list */ public static final int CHANGE_TREE = CHANGE_TREE_CONTENTS | CHANGE_TREE_PROPERTIES | CHANGE_TREE_ON_OFF | CHANGE_TREE_MASTERS; /** A point has been added to / removed from the kinemage */ public static final int CHANGE_POINT_CONTENTS = (1<<8); /** Some property (name, dominant, etc) of a point has changed */ public static final int CHANGE_POINT_PROPERTIES = (1<<9); /** A point has switched on or off (shown / hidden) */ public static final int CHANGE_POINT_ON_OFF = (1<<10); /** The set of masters controlling a point has changed */ public static final int CHANGE_POINT_MASTERS = (1<<11); /** The set of masters controlling a point has changed */ public static final int CHANGE_POINT_COORDINATES = (1<<12); /** Something / everything has changed about a point */ public static final int CHANGE_POINT = CHANGE_POINT_CONTENTS | CHANGE_POINT_PROPERTIES | CHANGE_POINT_ON_OFF | CHANGE_POINT_MASTERS | CHANGE_POINT_COORDINATES; /** List properties have changed */ public static final int CHANGE_LIST_PROPERTIES = CHANGE_TREE_PROPERTIES | CHANGE_POINT_PROPERTIES; /** The details of some view in the kinemage (rotation, zoom, clipping) have changed */ public static final int CHANGE_VIEW_TRANSFORM = (1<<16); /** The set of views in the kinemage has changed */ public static final int CHANGE_VIEWS_LIST = (1<<17); /** The set of masters in the kinemage has changed */ public static final int CHANGE_MASTERS_LIST = (1<<18); /** The set of aspects in the kinemage has changed */ public static final int CHANGE_ASPECTS_LIST = (1<<19); /** The metadata in the kinemage has changed. This may have to be fired manually by clients. */ public static final int CHANGE_KIN_METADATA = (1<<20); /** Gets the name of this element */ public String getName(); /** Sets the name of this element */ public void setName(String nm); /** Determines the owner (parent) of this element */ public P getParent(); /** Establishes the owner (parent) of this element */ public void setParent(P owner); /** Retrieves the Kinemage object at the top of this hierarchy, or null if none. */ public Kinemage getKinemage(); /** * Returns the number of steps up the hierarchy to reach the kinemage. * 0 means this object is the kinemage, 1 means it's a group, 2 means a subgroup, etc. */ public int getDepth(); /** Indicates whether this element will paint itself, given the chance */ public boolean isOn(); /** Sets the painting status of this element */ public void setOn(boolean paint); /** Indicates whether this element will actually be painted (ie, whether it and all its parents are "on") */ public boolean isVisible(); /** * Propagates a signal up the kinemage hierarchy that something has been changed. * It is rare for client code to call this function -- it's usually called * automatically when some property is changed. */ public void fireKinChanged(int eventFlags); /** * Gets a bounding box for the current model. * @param bound the first 6 elements get set to { minX, minY, minZ, maxX, maxY, maxZ }. * Should be called with { +inf, +inf, +inf, -inf, -inf, -inf } */ public void calcBoundingBox(float[] bound); /** * Gets the square of the radius of this model from the specified center. * @param center an array with the x, y, and z coordinates of the center * @return the square of the radius of this element, centered at center */ public float calcRadiusSq(float[] center); }//class king-2.21.120420/king/src/king/core/KGroup.java0000644000000000000000000001016311531212646017266 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.core; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //}}} /** * KGroup is the KiNG implementation of a kinemage group, subgroup, etc. * Lists, on the other hand, are implemented as KList. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 12:10:01 EDT 2002 */ public class KGroup extends AGE implements Cloneable { //{{{ Variable definitions //################################################################################################## protected int moview = 0; //}}} //{{{ Constructor(s) //################################################################################################## /** Creates a new KGroup with an empty name. */ public KGroup() { this(""); } /** Creates a new KGroup with the specified name. */ public KGroup(String nm) { super(); setName(nm); } //}}} //{{{ clone //################################################################################################## /** * Creates a copy of this group and all its children. * @param clonePoints whether to clone even the individual points, * or whether we should use instance= at the list level instead. */ public KGroup clone(boolean clonePoints) { try { KGroup x = (KGroup) super.clone(clonePoints); // Deep copy of children x.children = new ArrayList(); for(AGE child : children) { AGE clone = child.clone(clonePoints); x.add(clone); clone.setParent(x); // because it was already set to something else! } // Semi-deep copy of masters, which just contains Strings if(this.masters != null) x.masters = new ArrayList(this.masters); return x; } catch(CloneNotSupportedException ex) { throw new Error("Clone failed in cloneable object"); } } //}}} //{{{ is/set(2)Animate, is/setSelect //################################################################################################## /** Checks to see if this group should be animated. */ public boolean isAnimate() { return (flags & FLAG_ANIMATE) == FLAG_ANIMATE; } /** Sets the animate property. Animations still must be regenerated manually! */ public void setAnimate(boolean b) { int oldFlags = flags; if(b) flags |= FLAG_ANIMATE; else flags &= ~FLAG_ANIMATE; if(flags != oldFlags) fireKinChanged(CHANGE_TREE_PROPERTIES); } /** Checks to see if this group should be animated. */ public boolean is2Animate() { return (flags & FLAG_2ANIMATE) == FLAG_2ANIMATE; } /** Sets the animate property. Animations still must be regenerated manually! */ public void set2Animate(boolean b) { int oldFlags = flags; if(b) flags |= FLAG_2ANIMATE; else flags &= ~FLAG_2ANIMATE; if(flags != oldFlags) fireKinChanged(CHANGE_TREE_PROPERTIES); } /** Checks to see if this group can be selected-by-color. */ public boolean isSelect() { return (flags & FLAG_SELECT) == FLAG_SELECT; } /** Sets the "select" property. */ public void setSelect(boolean b) { int oldFlags = flags; if(b) flags |= FLAG_SELECT; else flags &= ~FLAG_SELECT; if(flags != oldFlags) fireKinChanged(CHANGE_TREE_PROPERTIES); } //}}} //{{{ is/setMoview /** Checks to see if this group has a moview **/ public boolean isMoview() { return (moview > 0); } /** Sets a moview for this group. Should also have animate set, and be greater than 0 **/ public void setMoview(int i) { moview = i; } public int getMoview() { return moview; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/Plugin.java0000644000000000000000000001464411531212654016374 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; //import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * Plugin is a way for arbitrary, specialized * functionalities to be incorporated into KiNG in a * highly modular manner. * * To be a Plugin, a class should at a minimum implement getToolsMenuItem(), * getHelpMenuItem(), and toString(). * It's often easier to implement getHelpAnchor() than getHelpMenuItem(). * More complicated plugins should implement getDependencies() and isAppletSafe(). * * Plugins are very similar to Tools, except that Plugins * do not receive mouse events from the graphics window; and * Plugins are not exclusive, whereas activating one Tool * necessarily de-activates the previous one. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Tue Apr 1 12:23:40 EST 2003 */ abstract public class Plugin //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## // These are protected so that the Plugin can be subclassed // outside of the "king" package. protected ToolBox parent; protected KingMain kMain; protected KinCanvas kCanvas; protected ToolServices services; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public Plugin(ToolBox tb) { parent = tb; kMain = tb.kMain; kCanvas = tb.kCanvas; services = tb.services; } //}}} //{{{ getToolsMenuItem, getHelpMenuItem //################################################################################################## /** * Creates a new JMenuItem to be displayed in the Tools menu, * which will allow the user to access function(s) associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several functionalities under it. * * The Plugin may return null to indicate that it has no * associated menu item. */ abstract public JMenuItem getToolsMenuItem(); /** * Creates a new JMenuItem to be displayed in the Help menu, * which will allow the user to access help information associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several items under it. However, * Plugins are encouraged to consolidate all documentation * into one location. The king.HTMLHelp class may be of use here. * * By default, a menu item will be created that signals the onHelp() * function, which in turn displays the HTML page named by getHelpURL(). * * The Plugin may return null to indicate that it has no * associated menu item. */ public JMenuItem getHelpMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onHelp")); } //}}} //{{{ onHelp, getHelpURL, getHelpAnchor //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelp(ActionEvent ev) { URL start = this.getHelpURL(); if(start != null) new HTMLHelp(kMain, start).show(); else JOptionPane.showMessageDialog(kMain.getTopWindow(), "Unable to find documentation for this plugin.", "Sorry!", JOptionPane.ERROR_MESSAGE); } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/king/html/king-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this plugin. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#edmap-plugin" (or null) */ public String getHelpAnchor() { return null; } //}}} //{{{ getDependencies, isAppletSafe //################################################################################################## /** * Returns a Collection<String> of all Plugins that must be instantiated * before this one is. If one or more dependencies cannot be resolved, * the plugin will generally not be loaded; * thus, be careful to avoid circular dependencies. * @return a Collection of the fully-qualified names of all plugins that * this Plugin depends on, as Strings. The default is no dependencies. */ static public Collection getDependencies() { return Collections.EMPTY_LIST; } /** * Returns true if and only if this plugin is safe to instantiate when * KiNG is running as an applet in a web browser. * Plugins that access the file system or arbitrary URLs (among other things) * should override this method to return false. * * The name is a bit misleading, because plugins that return false will * still be loaded if we're running as a *signed* applet, where they will * have normal full permissions. * * @return the default value of true */ static public boolean isAppletSafe() { return true; } //}}} //{{{ loadFileFromCmdline, loadFromURL /** * Plugins that can work on files from the king cmdline should overwrite this function * Currently, KingMain passes ALL files read in from cmdline to this function, * so any plugin that wants to deal with them should filter the files to only * work on the ones it can deal with. */ public void loadFileFromCmdline(ArrayList files, ArrayList args) {} public void loadFromURL(URL url) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/BasicTool.java0000644000000000000000000004457611531212654017024 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.net.*; //import java.text.*; import java.util.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * BasicTool implements the most common manipulation functions. * It is intended to serve as a basis for the construction of new tools, which should override * one or more of the xx_click(), xx_drag(), and xx_wheel() functions. * Note that some of these functions have default activities; * descendents may want to replace one or more with null functions. * *

Begun on Fri Jun 21 09:30:40 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class BasicTool extends Plugin implements MouseListener, MouseMotionListener, Transformable, WindowListener { //{{{ Static fields static final Object MODE_UNDECIDED = new Object(); static final Object MODE_VERTICAL = new Object(); static final Object MODE_HORIZONTAL = new Object(); //}}} //{{{ Variable definitions //################################################################################################## protected int lastXCoord = 0, lastYCoord = 0; protected int pressXCoord = 0, pressYCoord = 0; protected boolean isNearTop = false, isNearBottom = false; protected Object mouseDragMode = MODE_UNDECIDED; protected JFrame frame = null; protected JDialog dialog = null; private boolean hasBeenCentered = false; KingPrefs prefs = kMain.getPrefs(); //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public BasicTool(ToolBox tb) { super(tb); } //}}} //{{{ start/stop/reset functions //################################################################################################## public void start() { show(); } public void stop() { hide(); } public void reset() {} //}}} //{{{ initDialog, show, hide //################################################################################################## protected void initDialog() { Container content = this.getToolPanel(); if(content == null) return; if (prefs.getBoolean("minimizableTools")) { frame = new JFrame(this.toString()); frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); frame.addWindowListener(this); frame.setContentPane(content); frame.pack(); } else { dialog = new JDialog(kMain.getTopWindow(), this.toString(), false); // false => not modal //dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dialog.addWindowListener(this); // to make the window close button work dialog.setContentPane(content); //dialog.invalidate(); //dialog.validate(); dialog.pack(); } } protected void show() { if (prefs.getBoolean("minimizableTools")) { if(frame == null) initDialog(); if(frame == null) return; if(!frame.isVisible()) { frame.pack(); Container w = kMain.getContentContainer(); if(w != null) { Point p = w.getLocation(); Dimension dimDlg = frame.getSize(); Dimension dimWin = w.getSize(); p.x += dimWin.width - (dimDlg.width / 2) ; p.y += (dimWin.height - dimDlg.height) / 2; frame.setLocation(p); } frame.setVisible(true); } else { frame.toFront(); } } else { if(dialog == null) initDialog(); if(dialog == null) return; if(!dialog.isVisible()) { dialog.pack(); Container w = kMain.getContentContainer(); if(w != null) { Point p = w.getLocation(); Dimension dimDlg = dialog.getSize(); Dimension dimWin = w.getSize(); p.x += dimWin.width - (dimDlg.width / 2) ; p.y += (dimWin.height - dimDlg.height) / 2; dialog.setLocation(p); } dialog.setVisible(true); } else { dialog.toFront(); } } } protected void hide() { if(dialog != null) dialog.setVisible(false); if(frame != null) frame.setVisible(false); } //}}} //{{{ xx_click functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { services.pick(p); if(p != null && p.getComment() != null) clickActionHandler(p.getComment()); } /** Override this function for right-button/shift clicks */ public void s_click(int x, int y, KPoint p, MouseEvent ev) { services.centerOnPoint(p); } /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { click(x, y, p, ev); } /** Override this function for shift-control clicks */ public void sc_click(int x, int y, KPoint p, MouseEvent ev) { click(x, y, p, ev); } //}}} //{{{ xx_drag functions //################################################################################################## /** Override this function for (left-button) drags */ public void drag(int dx, int dy, MouseEvent ev) { if(services.doFlatland.isSelected()) { if(isNearTop) services.ztranslate(dx); else services.translate(dx, dy); } else { if(isNearTop) services.pinwheel(dx); else services.rotate(dx, dy); } } /** Override this function for right-button/shift drags */ public void s_drag(int dx, int dy, MouseEvent ev) { if(mouseDragMode == MODE_VERTICAL) services.adjustZoom(dy); else if(mouseDragMode == MODE_HORIZONTAL) services.adjustClipping(dx); } /** Override this function for middle-button/control drags */ public void c_drag(int dx, int dy, MouseEvent ev) { if(isNearTop) services.ztranslate(dx); else services.translate(dx, dy); } /** Override this function for shift-control drags */ public void sc_drag(int dx, int dy, MouseEvent ev) { // Like normal rotation, but can only rotate about Y axis if(isNearTop) services.pinwheel(dx); else services.rotate(dx, 0); } //}}} //{{{ xx_wheel functions //################################################################################################## /** Override this function for mouse wheel motion */ public void wheel(int rotation, MouseEvent ev) { services.adjustZoom(rotation*18f); } /** Override this function for mouse wheel motion with shift down */ public void s_wheel(int rotation, MouseEvent ev) { services.adjustClipping(-rotation*18f); } /** Override this function for mouse wheel motion with control down */ public void c_wheel(int rotation, MouseEvent ev) { wheel(rotation, ev); } /** Override this function for mouse wheel motion with shift AND control down */ public void sc_wheel(int rotation, MouseEvent ev) { s_wheel(rotation, ev); } //}}} //{{{ clickActionHandler //################################################################################################## /** * This function gets called by BasicTool.click() iff the currently selected * point has a point comment associated with it. Subclasses that wish to * implement custom actions (which match /^[a-zA-Z]+:.+/ ) * stored in point comments can override this method. * @param comment the point comment for the picked point * @return true if the action was handled, false if not * @since 1.34 */ protected boolean clickActionHandler(String comment) { if(comment.startsWith("http:")) { try { URL url; // Saying "http:foo/bar.html" allows us to use relative URLs in applets if(!comment.startsWith("http://") && kMain.getApplet() != null) url = new URL(kMain.getApplet().getDocumentBase(), comment.substring(5)); else url = new URL(comment); new HTMLHelp(kMain, url).show(); return true; } catch(MalformedURLException ex) { SoftLog.err.println("Bad HTTP URL in point comment: "+comment); return false; } } else return false; } //}}} //{{{ Mouse motion listeners //################################################################################################## /** * This function is compatible with Java 1.3, so * we can define keyboard equivalents, etc. */ public void mouseWheelMoved(MouseEvent ev, int rotation) { boolean isShift, isCtrl; isShift = ev.isShiftDown(); isCtrl = ev.isControlDown(); if(isShift && isCtrl) sc_wheel(rotation, ev); else if(isCtrl) c_wheel(rotation, ev); else if(isShift) s_wheel(rotation, ev); else wheel(rotation, ev); } public void mouseDragged(MouseEvent ev) { Dimension dim = kCanvas.getCanvasSize(); Point where = ev.getPoint(); int dx, dy; dx = where.x - lastXCoord; dy = where.y - lastYCoord; // Force a (strong?) committment to either horizonal // or vertical motion before we take action if(mouseDragMode == MODE_UNDECIDED) { int tdx = Math.abs(where.x - pressXCoord); int tdy = Math.abs(where.y - pressYCoord); if(tdx/2 >= tdy+1) mouseDragMode = MODE_HORIZONTAL; else if(tdy/2 >= tdx+1) mouseDragMode = MODE_VERTICAL; } boolean isShift, isCtrl, isShiftCtrl; isShift = SwingUtilities.isRightMouseButton(ev) || ev.isShiftDown(); isCtrl = SwingUtilities.isMiddleMouseButton(ev) || ev.isControlDown(); isShiftCtrl = (isShift && isCtrl) || (SwingUtilities.isLeftMouseButton(ev) && SwingUtilities.isRightMouseButton(ev)); if(isShiftCtrl) sc_drag(dx, dy, ev); else if(isCtrl) c_drag(dx, dy, ev); else if(isShift) s_drag(dx, dy, ev); else drag(dx, dy, ev); lastXCoord = where.x; lastYCoord = where.y; } public void mouseMoved(MouseEvent ev) {} //}}} //{{{ Mouse click listners //################################################################################################## public void mouseClicked(MouseEvent ev) { // Handle picking, etc. here int x = ev.getX(), y = ev.getY(); KPoint p = null; if(kMain.getKinemage() != null) p = kCanvas.getEngine().pickPoint(x, y, services.doSuperpick.isSelected()); // otherwise, we just create a nonsensical warning message about stereo picking /* Mouse debugging * / // Java: RMB == Meta, MMB == Alt // Apple: RMB == Control (not in Java?) (2 btn but not 3 btn mouse?) if(SwingUtilities.isLeftMouseButton(ev)) SoftLog.err.print("Left "); if(SwingUtilities.isMiddleMouseButton(ev)) SoftLog.err.print("Middle "); if(SwingUtilities.isRightMouseButton(ev)) SoftLog.err.print("Right "); if(ev.isShiftDown()) SoftLog.err.print("Shift "); if(ev.isControlDown()) SoftLog.err.print("Control "); if(ev.isMetaDown()) SoftLog.err.print("Meta "); if(ev.isAltDown()) SoftLog.err.print("Alt "); SoftLog.err.println(Integer.toBinaryString(ev.getModifiers())); /* Mouse debugging */ boolean isShift, isCtrl; isShift = SwingUtilities.isRightMouseButton(ev) || ev.isShiftDown(); isCtrl = SwingUtilities.isMiddleMouseButton(ev) || ev.isControlDown(); // This "if" statement is to correct for a Java 1.5 issue where // pressing mouse and releasing counts as a click as well, so // using the right mouse to zoom would also recenter if you released // over a point. See java bug # 5039416. if(mouseDragMode.equals(MODE_UNDECIDED)) { if(isShift && isCtrl) sc_click(x, y, p, ev); else if(isCtrl) c_click(x, y, p, ev); else if(isShift) s_click(x, y, p, ev); else click(x, y, p, ev); } } public void mouseEntered(MouseEvent ev) {} public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) { Dimension dim = kCanvas.getCanvasSize(); isNearBottom = isNearTop = false; if(ev.getY() < (dim.height / 6)) isNearTop = true; else if(ev.getY() > ((dim.height * 5) / 6)) isNearBottom = true; Point where = ev.getPoint(); pressXCoord = lastXCoord = where.x; pressYCoord = lastYCoord = where.y; mouseDragMode = MODE_UNDECIDED; } public void mouseReleased(MouseEvent ev) {} //}}} //{{{ Window listeners //################################################################################################## public void windowActivated(WindowEvent ev) {} public void windowClosed(WindowEvent ev) {} public void windowClosing(WindowEvent ev) { parent.activateDefaultTool(); } public void windowDeactivated(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowOpened(WindowEvent ev) {} //}}} //{{{ onArrowUp/Down/Right/Left //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowUp(ActionEvent ev) { // fake event, except for modifiers MouseEvent mev = new MouseEvent(kCanvas, 0, 0, ev.getModifiers(), 0, 0, 0, false); mouseWheelMoved(mev, -1); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowDown(ActionEvent ev) { // fake event, except for modifiers MouseEvent mev = new MouseEvent(kCanvas, 0, 0, ev.getModifiers(), 0, 0, 0, false); mouseWheelMoved(mev, 1); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowRight(ActionEvent ev) { KView v = kMain.getView(); if(v == null) return; v.rotateY((float)(Math.PI/180.0) * 2f); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowLeft(ActionEvent ev) { KView v = kMain.getView(); if(v == null) return; v.rotateY((float)(Math.PI/180.0) * -2f); } //}}} //{{{ doTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.doTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void doTransform(Engine engine, Transform xform) { } //}}} //{{{ overpaintCanvas //################################################################################################## /** * Called by KinCanvas after all kinemage painting is complete, * this gives the tools a chance to write additional info * (e.g., point IDs) to the graphics area. * @param painter the Painter that can paint on the current canvas */ public void overpaintCanvas(Painter painter) { } //}}} //{{{ getToolsMenuItem, onToolActivate, getToolPanel, getHelpAnchor, toString //################################################################################################## /** * Creates a new JRadioButtonMenuItem to be displayed in the Tools menu, * which will allow the user to access function(s) associated * with this Tool. * * A tool that wants to return null here should probably be a Plugin instead. * @return a JRadioButtonMenuItem (not just a regular JMenuItem) */ public JMenuItem getToolsMenuItem() { JRadioButtonMenuItem btn = new JRadioButtonMenuItem( new ReflectiveAction(this.toString(), null, this, "onToolActivate")); btn.setSelected(false); return btn; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onToolActivate(ActionEvent ev) { parent.toolActivated(this); } /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return "#navigate-tool"; } public String toString() { return "Navigate"; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/FileDropHandler.java0000644000000000000000000001324411531212654020133 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import java.awt.*; import java.awt.datatransfer.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.util.*; //}}} /** * FileDropHandler allows Drag-n-Drop opening of kinemages * on the KinCanvas or some other JComponent. * *

Copyright (C) 2004-2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Feb 26 15:31:04 EST 2004 */ public class FileDropHandler extends TransferHandler { //{{{ INTERFACE: Listener //############################################################################## /** * The toString() method should return a single phrase describing * the action performed by this listener with the dropped files. */ public interface Listener { /** * Returns true if the listener can do something useful with the given * file (like open it), or false otherwise. * Does NOT actually do anything with the file. */ public boolean canHandleDroppedFile(File file); /** * Actually opens/reads/whatever the dropped file. */ public void handleDroppedFile(File file); } //}}} //{{{ CLASS: KinFileOpen //############################################################################## private class KinFileOpen implements Listener { public String toString() { return "Open the kinemage in KiNG"; } public boolean canHandleDroppedFile(File file) { String name = file.getName().toLowerCase(); return name.endsWith(".kin") || name.endsWith(".kin.gz") || name.endsWith(".kip"); } public void handleDroppedFile(File file) { KinfileIO io = kMain.getKinIO(); io.loadFile(file, null); } } //}}} //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## KingMain kMain; ArrayList listeners = new ArrayList(); //}}} //{{{ Constructor(s) //############################################################################## public FileDropHandler(KingMain kMain) { super(); this.kMain = kMain; this.addFileDropListener(new KinFileOpen()); } //}}} //{{{ handleDropsFor, addFileDropListener //############################################################################## /** Sets this as a listener for file drops on the component. */ public void handleDropsFor(JComponent kCanvas) { kCanvas.setTransferHandler(this); } /** Gives the listener a chance to do something with dropped files. */ public void addFileDropListener(Listener listener) { listeners.add(listener); } //}}} //{{{ doFileDrop //############################################################################## public void doFileDrop(File file) { if(!file.exists()) { SoftLog.err.println("Drag-n-drop of non-existant file!? '"+file+"'"); return; } //SoftLog.err.println("Prev working dir: "+System.getProperty("user.dir")); //SoftLog.err.println("File being dropped: "+file); System.setProperty("user.dir", file.getAbsolutePath()); //SoftLog.err.println("Curr working dir: "+System.getProperty("user.dir")); ArrayList ok = new ArrayList(); for(Listener l : listeners) if(l.canHandleDroppedFile(file)) ok.add(l); if(ok.size() == 0) return; // should show error msg? else if(ok.size() == 1) ok.get(0).handleDroppedFile(file); else { Listener theOne = (Listener) JOptionPane.showInputDialog( kMain.getTopWindow(), "What would you like to do with "+file.getName()+"?", "What would you like to do?", JOptionPane.QUESTION_MESSAGE, null, ok.toArray(), ok.get(0) ); if(theOne != null) theOne.handleDroppedFile(file); } } //}}} //{{{ canImport //############################################################################## public boolean canImport(JComponent comp, DataFlavor[] transferFlavors) { // we can ignore comp because this handler is the same for all components for(int i = 0; i < transferFlavors.length; i++) { if(DataFlavor.javaFileListFlavor.equals(transferFlavors[i])) return true; } return false; } //}}} //{{{ importData //############################################################################## public boolean importData(JComponent comp, Transferable t) { // we can ignore comp because this handler is the same for all components if(canImport(comp, t.getTransferDataFlavors())) { try { //KinfileIO io = kMain.getKinIO(); java.util.List filelist = (java.util.List) t.getTransferData(DataFlavor.javaFileListFlavor); for(Iterator iter = filelist.iterator(); iter.hasNext(); ) //io.loadFile((File)iter.next(), null); doFileDrop((File) iter.next()); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } catch(UnsupportedFlavorException ex) { ex.printStackTrace(SoftLog.err); } } return false; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/UIDisplayMenu.java0000644000000000000000000010374511531212654017627 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.r3.*; // (ARK Spring2010) import java.util.List; import javax.swing.Timer; //}}} /** * UIDisplayMenu encapsulates all the functions * listed in KiNG's "Display" menu. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Mon May 26 12:30:25 EDT 2003 */ public class UIDisplayMenu implements KMessage.Subscriber, ChangeListener // added ChangeListener (ARK Spring2010) { //{{{ Constants //}}} //{{{ INNER CLASS: DispQualityList //################################################################################################## class DispQualityList extends MenuList { Map map; public DispQualityList(Map stringToIntegerMap, Collection strings, String defaultItem) { super(strings, defaultItem); map = stringToIntegerMap; } protected void itemSelected(Object item) { if(item == null) return; KinCanvas canvas = kMain.getCanvas(); canvas.setQuality( ((Integer)map.get(item)).intValue() ); canvas.repaint(); } } //}}} //{{{ INNER CLASS: AspectAction //################################################################################################## class AspectAction extends AbstractAction { Aspect aspect; public AspectAction(int i, Aspect a) { super(i+" "+a.getName()); this.aspect = a; } public void actionPerformed(ActionEvent ev) { kMain.getCanvas().setCurrentAspect(aspect); } } //}}} //{{{ INNER CLASS: ResizeCanvasDialog //################################################################################################## class ResizeCanvasDialog extends JDialog { } //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JMenu menu = null; JMenu aspectMenu = null; JCheckBoxMenuItem cbPersp = null, cbBigMarkers = null, cbBigLabels = null, cbThickness = null, cbThin = null, cbIntensity = null, cbBackground = null, cbMonochrome = null, cbColorByList = null, cbStereo = null, cbCrosseye = null; JCheckBoxMenuItem autoRockMenuItem = null, autoAnimMenuItem = null; // Timers, etc for auto-xxx functions Timer autoRockTimer = null; float rockStepSize = 0; int rockStepCount = 0; int rockMaxSteps = 0; boolean rockRight = true; Timer autoAnimTimer = null; // For Ribbon Sides menu (ARK Spring2010) JSlider hASlider, sASlider, vASlider, hBSlider, sBSlider, vBSlider; JCheckBox isOnAlpha, isOnBeta; JButton restoreDefaults; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public UIDisplayMenu(KingMain kmain) { kMain = kmain; int steptime = kMain.prefs.getInt("autoRockCycleTime") / kMain.prefs.getInt("autoRockCycleSteps"); autoRockTimer = new Timer(steptime, new ReflectiveAction(null, null, this, "onDispAutoRockStep")); //autoRockTimer.setRepeats(true); //autoRockTimer.setCoalesce(false); rockMaxSteps = kMain.prefs.getInt("autoRockCycleSteps") / 2; rockStepCount = rockMaxSteps / 2; rockStepSize = (float)Math.toRadians(2.0 * kMain.prefs.getDouble("autoRockDegrees") / (double)rockMaxSteps); autoAnimTimer = new Timer(kMain.prefs.getInt("autoAnimateDelay"), new ReflectiveAction(null, null, this, "onDispAutoAnimStep")); kMain.subscribe(this); } //}}} //{{{ deliverMessage //################################################################################################## static final long SYNC_CHECKBOXES = KMessage.DISPLAY_OPTIONS | KMessage.KIN_SWITCHED; public void deliverMessage(KMessage msg) { if(msg.getSource() != this && msg.testProg(SYNC_CHECKBOXES)) { syncCheckboxes(); } } //}}} //{{{ getMenu //################################################################################################## public JMenu getMenu() { if(menu != null) return menu; menu = new JMenu("Display"); menu.setMnemonic(KeyEvent.VK_D); aspectMenu = new JMenu("Aspects"); aspectMenu.setMnemonic(KeyEvent.VK_A); menu.add(aspectMenu); rebuildAspectsMenu(); menu.addSeparator(); cbPersp = new JCheckBoxMenuItem(new ReflectiveAction("Use perspective", null, this, "onDispPersp")); cbPersp.setMnemonic(KeyEvent.VK_U); cbPersp.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, 0)); // 0 => no modifiers menu.add(cbPersp); cbStereo = new JCheckBoxMenuItem(new ReflectiveAction("Use stereo", null, this, "onDispStereo")); cbStereo.setMnemonic(KeyEvent.VK_S); cbStereo.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, 0)); // 0 => no modifiers menu.add(cbStereo); cbCrosseye = new JCheckBoxMenuItem(new ReflectiveAction("Crosseye stereo", null, this, "onDispCrosseye")); cbCrosseye.setMnemonic(KeyEvent.VK_C); cbCrosseye.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, 0)); // 0 => no modifiers menu.add(cbCrosseye); menu.addSeparator(); cbBigMarkers = new JCheckBoxMenuItem(new ReflectiveAction("Big markers", null, this, "onDispBigMarkers")); cbBigMarkers.setMnemonic(KeyEvent.VK_B); cbBigMarkers.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, 0)); menu.add(cbBigMarkers); cbBigLabels = new JCheckBoxMenuItem(new ReflectiveAction("Big labels", null, this, "onDispBigLabels")); cbBigLabels.setMnemonic(KeyEvent.VK_G); cbBigLabels.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, 0)); menu.add(cbBigLabels); cbThickness = new JCheckBoxMenuItem(new ReflectiveAction("Cue by thickness", null, this, "onDispThickness")); cbThickness.setMnemonic(KeyEvent.VK_T); cbThickness.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, KeyEvent.SHIFT_MASK)); menu.add(cbThickness); cbThin = new JCheckBoxMenuItem(new ReflectiveAction("Thin lines", null, this, "onDispThin")); cbThin.setMnemonic(KeyEvent.VK_N); cbThin.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, 0)); // 0 => no modifiers menu.add(cbThin); Map map = new HashMap(); map.put("Standard", new Integer(KinCanvas.QUALITY_GOOD)); map.put("Better", new Integer(KinCanvas.QUALITY_BETTER)); map.put("Best", new Integer(KinCanvas.QUALITY_BEST)); map.put("OpenGL", new Integer(KinCanvas.QUALITY_JOGL)); Collection list = Arrays.asList(new String[] {"Standard", "Better", "Best", "OpenGL"}); String defQual = "Standard"; if(kMain.getCanvas().renderQuality == KinCanvas.QUALITY_BETTER) defQual = "Better"; // for OS X else if(kMain.getCanvas().renderQuality == KinCanvas.QUALITY_JOGL) defQual = "OpenGL"; // for king_prefs:joglByDefault = true JMenuItem submenu = new DispQualityList(map, list, defQual).getMenu(); submenu.setText("Rendering quality"); menu.add(submenu); menu.addSeparator(); JMenuItem itemCanvasSize = new JMenuItem(new ReflectiveAction("Resize canvas...", null, this, "onResizeCanvas")); itemCanvasSize.setMnemonic(KeyEvent.VK_I); menu.add(itemCanvasSize); JMenuItem itemContrast = new JMenuItem(new ReflectiveAction("Set contrast...", null, this, "onDispContrast")); itemContrast.setMnemonic(KeyEvent.VK_O); //itemContrast.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, 0)); // 0 => no modifiers menu.add(itemContrast); cbIntensity = new JCheckBoxMenuItem(new ReflectiveAction("Cue by intensity", null, this, "onDispIntensity")); cbIntensity.setMnemonic(KeyEvent.VK_I); cbIntensity.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Y, 0)); // 0 => no modifiers menu.add(cbIntensity); cbBackground = new JCheckBoxMenuItem(new ReflectiveAction("White background", null, this, "onDispBackground")); cbBackground.setMnemonic(KeyEvent.VK_W); cbBackground.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, 0)); // 0 => no modifiers menu.add(cbBackground); cbMonochrome = new JCheckBoxMenuItem(new ReflectiveAction("Monochrome", null, this, "onDispMonochrome")); cbMonochrome.setMnemonic(KeyEvent.VK_M); menu.add(cbMonochrome); cbColorByList = new JCheckBoxMenuItem(new ReflectiveAction("Color by list", null, this, "onDispColorByList")); cbColorByList.setMnemonic(KeyEvent.VK_L); cbColorByList.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_L, 0)); // 0 => no modifiers menu.add(cbColorByList); JMenuItem itemRibbonSides = new JMenuItem(new ReflectiveAction("Ribbon sides...", null, this, "onDispRibbonSides")); itemRibbonSides.setMnemonic(KeyEvent.VK_S); menu.add(itemRibbonSides); // (ARK Spring2010) menu.addSeparator(); autoRockMenuItem = new JCheckBoxMenuItem(new ReflectiveAction("Auto-rock", null, this, "onDispAutoRockStartStop")); autoRockMenuItem.setMnemonic(KeyEvent.VK_R); autoRockMenuItem.setSelected(autoRockTimer.isRunning()); autoRockMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, 0)); // 0 => no modifiers menu.add(autoRockMenuItem); autoAnimMenuItem = new JCheckBoxMenuItem(new ReflectiveAction("Auto-animate", null, this, "onDispAutoAnimStartStop")); //autoAnimMenuItem.setMnemonic(KeyEvent.VK_R); autoAnimMenuItem.setSelected(autoAnimTimer.isRunning()); //autoAnimMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, 0)); // 0 => no modifiers menu.add(autoAnimMenuItem); syncCheckboxes(); return menu; } //}}} //{{{ syncCheckboxes //################################################################################################## /** * Adjusts the selection state of checkboxes in the Display menu * to match parameters in the engine and the kinemage. */ void syncCheckboxes() { if(menu == null) return; KinCanvas kCanvas = kMain.getCanvas(); Engine engine = kCanvas.getEngine(); cbPersp.setSelected(engine.usePerspective); if(engine instanceof Engine2D) { Engine2D e2d = (Engine2D) engine; cbStereo.setSelected(e2d.useStereo); cbCrosseye.setSelected(e2d.stereoRotation < 0); } cbBigMarkers.setSelected(engine.bigMarkers); cbBigLabels.setSelected(engine.bigLabels); cbThickness.setSelected(engine.cueThickness); cbThin.setSelected(engine.thinLines); cbIntensity.setSelected(engine.cueIntensity); cbBackground.setSelected(engine.whiteBackground); cbMonochrome.setSelected(engine.monochrome); cbColorByList.setSelected(engine.colorByList); Kinemage kin = kMain.getKinemage(); if(kin == null) return; cbPersp.setSelected(kin.atPerspective); cbThickness.setSelected(!kin.atOnewidth); cbThin.setSelected(kin.atThinline); cbBackground.setSelected(kin.atWhitebackground); cbColorByList.setSelected(kin.atListcolordominant); } //}}} //{{{ rebuildAspectsMenu //################################################################################################## /** * Refills the Display | Aspects menu from the * specified iterator of Aspect objects */ public void rebuildAspectsMenu() { if(aspectMenu == null) return; aspectMenu.removeAll(); JMenuItem item; JRadioButtonMenuItem ritem; ButtonGroup rgroup = new ButtonGroup(); Kinemage kin = kMain.getKinemage(); if(kin != null) { ritem = new JRadioButtonMenuItem(new ReflectiveAction("Aspects off", null, this, "onDisplayAspectsOff")); ritem.setMnemonic(KeyEvent.VK_O); ritem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SLASH, 0)); // 0 => no modifiers rgroup.add(ritem); aspectMenu.add(ritem); aspectMenu.addSeparator(); int i = 1; for(Aspect aspect : kin.getAspects()) { ritem = new JRadioButtonMenuItem(new AspectAction((i++), aspect)); rgroup.add(ritem); aspectMenu.add(ritem); } /* Next / Previous */ if(i > 1) aspectMenu.addSeparator(); item = new JMenuItem(new ReflectiveAction("Next aspect", null, this, "onDisplayAspectsNext")); item.setMnemonic(KeyEvent.VK_N); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_CLOSE_BRACKET, 0)); // 0 => no modifiers aspectMenu.add(item); item = new JMenuItem(new ReflectiveAction("Previous aspect", null, this, "onDisplayAspectsPrevious")); item.setMnemonic(KeyEvent.VK_P); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_OPEN_BRACKET, 0)); aspectMenu.add(item); /* Next / Previous */ } else { item = new JMenuItem("No aspects available"); item.setEnabled(false); aspectMenu.add(item); } // This step is ESSENTIAL for the menu to appear & keep working! //menubar.revalidate(); } //}}} //{{{ onDisplayAspects{Off, Next, Previous} //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDisplayAspectsOff(ActionEvent ev) { kMain.getCanvas().setCurrentAspect(null); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDisplayAspectsNext(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; Aspect currAspect = kMain.getCanvas().getCurrentAspect(); List aspects = kin.getAspects(); if(aspects.size() == 0) kMain.getCanvas().setCurrentAspect(null); else if(currAspect == null) // if nothing's selected yet kMain.getCanvas().setCurrentAspect(aspects.get(0)); else // if something's already selected { int i = aspects.indexOf(currAspect); if(i == aspects.size()-1) i = 0; // if current was last, choose first else i = i+1; kMain.getCanvas().setCurrentAspect(aspects.get(i)); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDisplayAspectsPrevious(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; Aspect currAspect = kMain.getCanvas().getCurrentAspect(); List aspects = kin.getAspects(); if(aspects.size() == 0) kMain.getCanvas().setCurrentAspect(null); else if(currAspect == null) // if nothing's selected yet kMain.getCanvas().setCurrentAspect(aspects.get(aspects.size()-1)); else // if something's already selected { int i = aspects.indexOf(currAspect); if(i == 0) i = aspects.size()-1; // if current was first, choose last else i = i-1; kMain.getCanvas().setCurrentAspect(aspects.get(i)); } } //}}} //{{{ onDisp{Persp, Stereo, Crosseye} //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispPersp(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin != null) { kin.atPerspective = cbPersp.isSelected(); // Deliberately don't mark kin as modified kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispStereo(ActionEvent ev) { if(kMain.getCanvas() != null) { Engine engine = kMain.getCanvas().getEngine(); if(engine != null && engine instanceof Engine2D) ((Engine2D)engine).useStereo = cbStereo.isSelected(); kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispCrosseye(ActionEvent ev) { if(kMain.getCanvas() != null) { Engine engine = kMain.getCanvas().getEngine(); if(engine != null && engine instanceof Engine2D) { Engine2D e2d = (Engine2D) engine; e2d.stereoRotation = (cbCrosseye.isSelected() ^ e2d.stereoRotation < 0) ? -e2d.stereoRotation : e2d.stereoRotation; } kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } //}}} //{{{ onDisp{BigMarkers, BigLabels, Thickness, Thin} //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispBigMarkers(ActionEvent ev) { if(kMain.getCanvas() != null) { Engine engine = kMain.getCanvas().getEngine(); if(engine != null) engine.bigMarkers = cbBigMarkers.isSelected(); kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispBigLabels(ActionEvent ev) { if(kMain.getCanvas() != null) { Engine engine = kMain.getCanvas().getEngine(); if(engine != null) engine.bigLabels = cbBigLabels.isSelected(); kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispThickness(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin != null) { kin.atOnewidth = ! cbThickness.isSelected(); // Deliberately don't mark kin as modified kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispThin(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin != null) { kin.atThinline = cbThin.isSelected(); // Deliberately don't mark kin as modified // Assume we don't want width depth cues with thinline if(cbThin.isSelected()) { kin.atOnewidth = true; cbThickness.setSelected(false); } kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } //}}} //{{{ onDisp{Intensity, Background, Monochrome, ColorByList} //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispIntensity(ActionEvent ev) { if(kMain.getCanvas() != null) { Engine engine = kMain.getCanvas().getEngine(); if(engine != null) engine.cueIntensity = cbIntensity.isSelected(); kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispBackground(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin != null) { kin.atWhitebackground = cbBackground.isSelected(); // Deliberately don't mark kin as modified kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispMonochrome(ActionEvent ev) { if(kMain.getCanvas() != null) { Engine engine = kMain.getCanvas().getEngine(); if(engine != null) { boolean sel = cbMonochrome.isSelected(); engine.monochrome = sel; // assume we want white background with monochrome if(sel == true) { engine.whiteBackground = true; cbBackground.setSelected(true); } } kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispColorByList(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin != null) { kin.atListcolordominant = cbColorByList.isSelected(); // Deliberately don't mark kin as modified kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } //}}} //{{{ onDispAutoRock{StartStop, Step} //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispAutoRockStartStop(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k == null) return; if(autoRockMenuItem.isSelected()) { rockStepCount = rockMaxSteps / 2; rockRight = true; autoRockTimer.start(); } else { autoRockTimer.stop(); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispAutoRockStep(ActionEvent ev) { KView v = kMain.getView(); if(v == null) return; if(rockStepCount >= rockMaxSteps) { rockStepCount = 0; rockRight = !rockRight; } // Stiff bouncing: //if(rockRight) v.rotateY( rockStepSize); //else v.rotateY(-rockStepSize); // Slows and pauses at either end: if(rockRight) v.rotateY((float)(2 * rockStepSize * Math.sin((Math.PI*rockStepCount)/rockMaxSteps))); else v.rotateY((float)(2 * -rockStepSize * Math.sin((Math.PI*rockStepCount)/rockMaxSteps))); rockStepCount++; } //}}} //{{{ onDispAutoAnim{StartStop, Step} //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispAutoAnimStartStop(ActionEvent ev) { //Kinemage k = kMain.getKinemage(); //if(k == null) return; if(autoAnimMenuItem.isSelected()) { String time = JOptionPane.showInputDialog(kMain.getTopWindow(), "Rate of animation? (milliseconds)", Integer.toString(autoAnimTimer.getDelay())); try { autoAnimTimer.setDelay(Integer.parseInt(time)); } catch(NumberFormatException ex) {} autoAnimTimer.start(); } else { autoAnimTimer.stop(); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispAutoAnimStep(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k == null) return; k.animate(1); } //}}} //{{{ onDispContrast //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispContrast(ActionEvent ev) { JSlider slider = new JSlider(0, 100, 50); int response = JOptionPane.showConfirmDialog(kMain.getTopWindow(), slider, "Set display contrast", JOptionPane.OK_CANCEL_OPTION , JOptionPane.PLAIN_MESSAGE); if(response == JOptionPane.OK_OPTION) { int contrast = slider.getValue() - 50; KPalette.setContrast(1.0 + contrast/50.0); kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } //}}} //{{{ onDispRibbonSides //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDispRibbonSides(ActionEvent ev) // (ARK Spring2010) { Engine engine = kMain.getCanvas().getEngine(); Kinemage kin = kMain.getKinemage(); /////??? if(kin!=null && engine!=null){ // Get initial values in case user cancels, there's gotta be an easier way to do this... boolean ribbonSidesAlpha0 = kin.atSidedcoloringAlpha; boolean ribbonSidesBeta0 = kin.atSidedcoloringBeta; // use triple class for its constructors and .like() method, could probably instead use Integer[]... Triple backHSValpha0 = new Triple().like(engine.curBackHSValpha); Triple backHSVbeta0 = new Triple().like(engine.curBackHSVbeta); isOnAlpha = new JCheckBox("Color by side (alpha)"); isOnAlpha.setSelected(kin.atSidedcoloringAlpha); isOnAlpha.addChangeListener(this); isOnBeta = new JCheckBox("Color by side (beta)"); isOnBeta.setSelected(kin.atSidedcoloringBeta); isOnBeta.addChangeListener(this); hASlider = new JSlider(0, 360, (int)engine.curBackHSValpha.getX()); hASlider.addChangeListener(this); sASlider = new JSlider(0, 100, (int)engine.curBackHSValpha.getY()); sASlider.addChangeListener(this); vASlider = new JSlider(0, 100, (int)engine.curBackHSValpha.getZ()); vASlider.addChangeListener(this); hBSlider = new JSlider(0, 360, (int)engine.curBackHSVbeta.getX()); hBSlider.addChangeListener(this); sBSlider = new JSlider(0, 100, (int)engine.curBackHSVbeta.getY()); sBSlider.addChangeListener(this); vBSlider = new JSlider(0, 100, (int)engine.curBackHSVbeta.getZ()); vBSlider.addChangeListener(this); restoreDefaults = new JButton("Restore defaults"); restoreDefaults.addChangeListener(this); Object[] msg = {isOnAlpha,"Alpha hue offset: ", hASlider,"Alpha saturation offset: ", sASlider, "Alpha brightness offset: ", vASlider, new JSeparator(), isOnBeta, "Beta hue offset: ",hBSlider, "Beta saturation offset: ", sBSlider, "Beta brightness offset: ", vBSlider, restoreDefaults}; JOptionPane op = new JOptionPane(msg, JOptionPane.PLAIN_MESSAGE, JOptionPane.OK_CANCEL_OPTION); JDialog dialog = op.createDialog(kMain.getTopWindow(), "Set ribbon backside color offsets"); dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dialog.setVisible(true); if(op.getValue()!=null && ((Integer)op.getValue()).intValue()==JOptionPane.CANCEL_OPTION ){ // restore initial values kin.atSidedcoloringAlpha = ribbonSidesAlpha0; kin.atSidedcoloringBeta = ribbonSidesBeta0; engine.curBackHSValpha.setXYZ(backHSValpha0.getX(),backHSValpha0.getY(),backHSValpha0.getZ()); engine.curBackHSVbeta.setXYZ(backHSVbeta0.getX(),backHSVbeta0.getY(),backHSVbeta0.getZ()); } else kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } //}}} //{{{ onResizeCanvas //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onResizeCanvas(ActionEvent ev) { JDialog dialog = new JDialog(); Object[] sizes = {"1024 x 768", "675 x 675", "500 x 500", "Other..."}; String s = (String) JOptionPane.showInputDialog( dialog, "Resize canvas to:", "Resize canvas", JOptionPane.PLAIN_MESSAGE, null, sizes, "1024 x 768"); if (s != null && s.length() > 0) { // Apparently packing the ContentPane twice is sometimes necessary. // For example, when the monitor size prevents the first pack from // reaching the full preferred size for the KinCanvas graphics area, // the second pack for some reason extends the entire MainWindow // past the monitor's viewing area so the graphics area reaches its // full preferred size. (DAK 100118) if (s.equals("1024 x 768")) resizeCanvas(1024, 768); else if(s.equals("675 x 675" )) resizeCanvas(675 , 675); else if(s.equals("500 x 500" )) resizeCanvas(500 , 500); else if(s.equals("Other..." )) { String t = (String)JOptionPane.showInputDialog(new JDialog(), "Enter desired size (format: \"W x H\" or \"WxH\"):", "Resize canvas to custom size", JOptionPane.PLAIN_MESSAGE, null, null, null); if ((t != null) && (t.length() > 0)) { String u = t.replaceAll("\\s+", ""); // trim whitespace try { int i = u.indexOf("x"); int w = Integer.parseInt(u.substring(0, i)); int h = Integer.parseInt(u.substring(i+1)); resizeCanvas(w, h); } catch(StringIndexOutOfBoundsException ex) { throwResizeCanvasFormatException(); } catch(NullPointerException ex) { throwResizeCanvasFormatException(); } catch(NumberFormatException ex) { throwResizeCanvasFormatException(); } } } } } //}}} //{{{ resizeCanvas //################################################################################################## public void resizeCanvas(int w, int h) { GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); GraphicsDevice[] gs = ge.getScreenDevices(); for (int i = 0; i < gs.length; i++) { GraphicsDevice gd = gs[i]; GraphicsConfiguration gc = gd.getDefaultConfiguration(); Rectangle r = gc.getBounds(); if(r.contains(kMain.getTopWindow().getLocation())) { // KiNG window is on this screen (as opposed to e.g. // the other monitor in a dual display setup) DisplayMode dm = gd.getDisplayMode(); int screenWidth = dm.getWidth(); int screenHeight = dm.getHeight(); if(w > screenWidth || h > screenHeight) { JOptionPane.showMessageDialog(new JDialog(), "Requested canvas size ("+w+" x "+h+") is too big for\nthe KiNG "+ "window's current screen ("+screenWidth+" x "+screenHeight+")!", "That's not gonna fit...", JOptionPane.ERROR_MESSAGE); return; } else // proceed with resize { kMain.getContentPane().resetSplits(); kMain.getCanvas().setPreferredSize(new Dimension(w, h)); kMain.getTopWindow().pack(); kMain.getTopWindow().pack(); kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } } } } void throwResizeCanvasFormatException() { JOptionPane.showMessageDialog( new JDialog(), "Required format: \"W x H\" or \"WxH\"!", "Wrong width-by-height format!", JOptionPane.ERROR_MESSAGE); } //}}} //{{{ stateChanged //################################################################################################## public void stateChanged(ChangeEvent ev) // (ARK Spring2010) { Object src = ev.getSource(); Engine engine = kMain.getCanvas().getEngine(); Kinemage kin = kMain.getKinemage(); /////??? if(src == isOnAlpha) kin.atSidedcoloringAlpha = isOnAlpha.isSelected(); else if(src == isOnBeta) kin.atSidedcoloringBeta = isOnBeta.isSelected(); else if(src == hASlider) engine.curBackHSValpha.setX(hASlider.getValue()); else if(src == sASlider) engine.curBackHSValpha.setY(sASlider.getValue()); else if(src == vASlider) engine.curBackHSValpha.setZ(vASlider.getValue()); else if(src == hBSlider) engine.curBackHSVbeta.setX(hBSlider.getValue()); else if(src == sBSlider) engine.curBackHSVbeta.setY(sBSlider.getValue()); else if(src == vBSlider) engine.curBackHSVbeta.setZ(vBSlider.getValue()); else if(src == restoreDefaults){ engine.curBackHSValpha.setXYZ(engine.defBackHSValpha.getX(),engine.defBackHSValpha.getY(),engine.defBackHSValpha.getZ()); engine.curBackHSVbeta.setXYZ(engine.defBackHSVbeta.getX(),engine.defBackHSVbeta.getY(),engine.defBackHSVbeta.getZ()); hASlider.setValue((int)engine.curBackHSValpha.getX()); sASlider.setValue((int)engine.curBackHSValpha.getY()); vASlider.setValue((int)engine.curBackHSValpha.getZ()); hBSlider.setValue((int)engine.curBackHSVbeta.getX()); sBSlider.setValue((int)engine.curBackHSVbeta.getY()); vBSlider.setValue((int)engine.curBackHSVbeta.getZ()); } else System.err.println("Unknown event source: "+src); kMain.getCanvas().repaint(); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/ParaParams.java0000644000000000000000000003013511531212654017156 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import king.points.*; import java.awt.Dimension; //import java.awt.event.*; import java.io.*; import java.lang.ref.WeakReference; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.Transform; //}}} /** * ParaParams manages switching a kinemage in and out of * parallel coordinates display of its high dimensional data. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Fri Nov 17 11:35:12 EST 2006 */ public class ParaParams implements KMessage.Subscriber, Transformable { //{{{ Constants //}}} //{{{ CLASS: WeakTransformable //############################################################################## static class WeakTransformable implements Transformable { WeakReference ref; ToolBox toolbox; public WeakTransformable(ToolBox toolbox, Transformable tr) { this.toolbox = toolbox; this.ref = new WeakReference(tr); } public void doTransform(Engine engine, Transform xform) { Transformable tr = this.ref.get(); if(tr == null) toolbox.transformables.remove(this); else tr.doTransform(engine, xform); } } //}}} //{{{ Variable definitions //############################################################################## KingMain kMain; Kinemage kin; int numDim; double[] min; double[] max; double[] range; KView normalView; KView parallelView; boolean inParallelMode = false, isUpdating = false; KGroup axisGroup = null; Map> normalChildren; Map> parallelChildren; //}}} //{{{ Constructor(s) //############################################################################## public ParaParams(KingMain kMain, Kinemage kin) { super(); this.kMain = kMain; this.kin = kin; this.numDim = Math.max(2, kin.dimensionNames.size()); // if less, denom -> 0 this.min = new double[numDim]; this.max = new double[numDim]; this.range = new double[numDim]; List minmax = kin.dimensionMinMax; for(int i = 0; i < numDim; i++) { if(minmax.size() > 2*i) min[i] = ((Number) minmax.get(2*i)).doubleValue(); else min[i] = 0; if(minmax.size() > 2*i + 1) max[i] = ((Number) minmax.get(2*i + 1)).doubleValue(); else max[i] = 360; range[i] = max[i] - min[i]; } this.normalChildren = new HashMap>(); this.parallelChildren = new HashMap>(); this.normalView = new KView(kin); // will never be used this.parallelView = new KView(kin); parallelView.setCenter(0.5f, 0.5f, 0f); parallelView.setSpan(1.2f); parallelView.setName("PC Overview"); kin.addView((KView) parallelView.clone()); kMain.subscribe( new KMessage.WeakSubscriber(kMain, this) ); ToolBox toolbox = kMain.getCanvas().getToolBox(); toolbox.transformables.add( new WeakTransformable(toolbox, this) ); } //}}} //{{{ getMin/Max/Range/NumDim //############################################################################## /** Returns the minimum value to be shown on axis i */ public double getMin(int dimension_i) { return this.min[dimension_i]; } /** Returns the maximum value to be shown on axis i */ public double getMax(int dimension_i) { return this.max[dimension_i]; } /** Returns max[i] - min[i] */ public double getRange(int dimension_i) { return this.range[dimension_i]; } /** Returns the total number of dimension axes to be displayed */ public int getNumDim() { return this.numDim; } //}}} //{{{ swap //############################################################################## /** Toggles between "normal" and parallel coordinates modes. */ public void swap() { if(inParallelMode) fromParallelCoords(); else toParallelCoords(); } //}}} //{{{ isInParallelMode public boolean isInParallelMode() { return inParallelMode; } //}}} //{{{ toParallelCoords //############################################################################## public void toParallelCoords() { if(inParallelMode) return; Dimension dim = kMain.getCanvas().getCanvasSize(); ////kCanvas.paintCanvas(g2, dim, KinCanvas.QUALITY_BEST); double width = dim.getWidth(); isUpdating = true; normalChildren.clear(); // to remove any stale entries for(KList l : KIterator.allLists(kin)) { ArrayList newChildren = parallelChildren.get(l); if(newChildren == null) { newChildren = makeParallelPlot(l, width); parallelChildren.put(l, newChildren); } normalChildren.put(l, l.getChildren()); l.setChildren(newChildren); } makeParallelAxes(); //kin.calcSize(); // bounding box, etc. has changed! normalView = kMain.getCanvas().getCurrentView(kin); parallelView.setViewingAxes(normalView.getViewingAxes()); kMain.getCanvas().setCurrentView(parallelView); inParallelMode = true; isUpdating = false; } //}}} //{{{ fromParallelCoords //############################################################################## public void fromParallelCoords() { if(!inParallelMode) return; isUpdating = true; parallelChildren.clear(); // to remove any stale entries for(KList l : KIterator.allLists(kin)) { ArrayList newChildren = normalChildren.get(l); if(newChildren == null) { newChildren = new ArrayList(); normalChildren.put(l, newChildren); } parallelChildren.put(l, l.getChildren()); // Commenting this out forces a "redraw" every time we enter PC l.setChildren(newChildren); } //kin.calcSize(); // bounding box, etc. has changed! parallelView = kMain.getCanvas().getCurrentView(kin); normalView.setViewingAxes(parallelView.getViewingAxes()); kMain.getCanvas().setCurrentView(kin, normalView); inParallelMode = false; // Carry over picking information ToolServices services = kMain.getCanvas().getToolBox().services; KPoint picked = services.getLastPicked(0); if(picked != null && picked instanceof ParaPoint) services.pick( ((ParaPoint) picked).proxyFor ); isUpdating = false; } //}}} //{{{ makeParallelPlot //############################################################################## ArrayList makeParallelPlot(KList list, double width) { ArrayList out = new ArrayList(); for(Iterator iter = list.iterator(); iter.hasNext(); ) { KPoint normalPt = (KPoint) iter.next(); float[] allCoords = normalPt.getAllCoords(); if(allCoords == null) continue; if(normalPt instanceof MarkerPoint || normalPt instanceof VectorPoint || normalPt instanceof TrianglePoint) continue; ParaPoint ppLast = null; for(int i = 0; i < allCoords.length; i++) { ParaPoint pp = new ParaPoint(normalPt, i, ppLast, this, width); out.add(pp); ppLast = pp; } } return out; } //}}} //{{{ makeParallelAxes //############################################################################## void makeParallelAxes() { Dimension dim = kMain.getCanvas().getCanvasSize(); ////kCanvas.paintCanvas(g2, dim, KinCanvas.QUALITY_BEST); double width = dim.getWidth(); //System.out.println(width); boolean newAxes = (axisGroup == null || axisGroup.getKinemage() == null); if(newAxes) { axisGroup = new KGroup("PC axes"); kin.add(axisGroup); } else axisGroup.clear(); KGroup subgroup = new KGroup(""); subgroup.setHasButton(false); axisGroup.add(subgroup); KList axisList = new KList(KList.VECTOR, "axes"); axisList.setColor(KPalette.white); subgroup.add(axisList); KList labelList = new KList(KList.LABEL, "labels"); labelList.setColor(KPalette.white); subgroup.add(labelList); String[] dimNames = kin.dimensionNames.toArray(new String[numDim]); DecimalFormat df = new DecimalFormat("0.###"); for(int i = 0; i < numDim; i++) { if (width < 900) width = 900; double xcoord = (double)i / (double)(numDim-1)+((double)i-(double)numDim/2)/ (double)(numDim-1)*(width-900)/900; VectorPoint v1 = new VectorPoint("", null); v1.setXYZ(xcoord, 0, 0); v1.setUnpickable(true); axisList.add(v1); VectorPoint v2 = new VectorPoint("", v1); v2.setXYZ(xcoord, 1, 0); v2.setUnpickable(true); axisList.add(v2); LabelPoint l1 = new LabelPoint(dimNames[i]); l1.setXYZ(xcoord, 1.05, 0); l1.setUnpickable(true); l1.setHorizontalAlignment(LabelPoint.CENTER); labelList.add(l1); l1 = new LabelPoint(df.format(max[i])); l1.setXYZ(xcoord, 1.02, 0); l1.setUnpickable(true); l1.setHorizontalAlignment(LabelPoint.CENTER); labelList.add(l1); l1 = new LabelPoint(df.format(min[i])); l1.setXYZ(xcoord, -0.03, 0); l1.setUnpickable(true); l1.setHorizontalAlignment(LabelPoint.CENTER); labelList.add(l1); } } //}}} //{{{ deliverMessage, doTransform //############################################################################## public void deliverMessage(KMessage msg) { if(msg.testProg(KMessage.PRE_KIN_SAVE)) { // Otherwise, we could save the temporary PC representation instead! this.fromParallelCoords(); } // Force "redraw" of PC if list contents change, // or else we get e.g. duplications of data points. if(msg.testKin(AHE.CHANGE_POINT_CONTENTS) && !isUpdating && !inParallelMode) { parallelChildren.clear(); } } public void doTransform(Engine engine, Transform xform) { if(kMain.getKinemage() != this.kin) return; // only active when this kin is if(!inParallelMode) return; // only when in PC mode ToolServices services = kMain.getCanvas().getToolBox().services; if(!services.doMarkers.isSelected()) return; // only do this if markers are active KPoint picked = services.getLastPicked(0); if(picked == null) return; // only if something is picked if(picked instanceof ParaPoint) picked = ((ParaPoint) picked).proxyFor; KList marker1 = new KList(KList.VECTOR); marker1.setWidth(4); if(engine.whiteBackground) marker1.setColor(KPalette.deadblack); else marker1.setColor(KPalette.deadwhite); VectorPoint prev = null; for(KPoint p : parallelChildren.get(picked.getParent())) { if(((ParaPoint)p).proxyFor != picked) continue; VectorPoint v = new VectorPoint(p.getName(), prev); v.setXYZ(p.getX(), p.getY(), p.getZ()); marker1.add(v); prev = v; } marker1.doTransform(engine, xform); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/KingMain.java0000644000000000000000000005303011677352606016640 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import king.io.KinfileParser; import java.awt.*; import java.awt.event.*; //import java.awt.geom.*; import java.io.*; import java.lang.reflect.*; import java.net.*; //import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.tree.*; import javax.swing.plaf.metal.MetalLookAndFeel; import driftwood.util.*; import driftwood.isosurface.*; import driftwood.gui.*; import driftwood.moldb2.*; //}}} /** * KingMain is the control center of the King program. * *

Begun on Mon Apr 22 17:18:36 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis */ public class KingMain implements WindowListener { static { // This allows JMenus to overlap the JOGL canvas, which stopped // happening automatically with the release of Java 1.5. // This should happen once, before any KingMains are created. JPopupMenu.setDefaultLightWeightPopupEnabled(false); } public static void main(String[] args) { new KingMain(args).Main(); } //{{{ Variables //################################################################################################## // Used for counting # of clones still alive, so we don't // call System.exit() prematurely! static int instanceCount = 0; public static /*final*/ int MENU_ACCEL_MASK = Toolkit.getDefaultToolkit().getMenuShortcutKeyMask(); KingPrefs prefs = null; KinStable kinStable = null; KinfileIO kinIO = null; FileDropHandler dropHandler = null; KinCanvas kinCanvas = null; UIMenus uiMenus = null; UIText uiText = null; KinTree kinTree = null; MainWindow mainWin = null; ContentPane contentPane = null; JApplet theApplet = null; boolean isAppletFlat = true; ArrayList filesToOpen = null; ArrayList kinFilesToOpen = null; ArrayList pdbFilesToOpen = null; boolean doMerge = true; ArrayList pluginArgs = null; Set subscribers = new LinkedHashSet(); //}}} //{{{ Constructors //################################################################################################## /** Simple constructor for embedded apps */ public KingMain() { this(new String[] {}); } /** * Constructor for application */ public KingMain(String[] args) { pluginArgs = new ArrayList(); // This prevents number formatting problems when writing kins in // e.g. Germany. Kludgy, but KiNG isn't internationalized anyway. // Ideally, this will go away one day. try { Locale.setDefault(Locale.US); } catch(SecurityException ex) { SoftLog.err.println("Can't change to US locale; numbers may be garbled on kinemage write."); } prefs = new KingPrefs(false); if(prefs.getBoolean("checkNewVersion")) { // "Timeout" after 2.000 seconds try { prefs.checkVersion(new URL("http://kinemage.biochem.duke.edu/downloads/software/king/king2.version.props"), 2000); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } } parseArguments(args); instanceCount++; } /** * Constructor for applet */ public KingMain(JApplet plet, boolean isFlat) { pluginArgs = new ArrayList(); prefs = new KingPrefs(true); theApplet = plet; isAppletFlat = isFlat; // Load custom config from URL String king_prefs = theApplet.getParameter("king_prefs"); if(king_prefs != null) try { URL prefsURL = new URL(theApplet.getDocumentBase(), king_prefs); prefs.loadFromURL(prefsURL); } catch(MalformedURLException ex) { SoftLog.err.println(" king_prefs specified an unresolvable URL."); } instanceCount++; } //}}} //{{{ createComponents //################################################################################################## public void createComponents() { createComponents(true, true); } /** * Creates all the major components of a running KiNG instance: * KinStable, ContentPane, KinfileIO, KinCanvas, UIMenus, UIText, KinTree. * Call this after the constructor but before trying to assemble the overall GUI. */ public void createComponents(boolean useButtons, boolean useSliders) { kinStable = new KinStable(this); contentPane = new ContentPane(this); // doesn't create GUI yet kinIO = new KinfileIO(this); // progress dlg. references main window dropHandler = new FileDropHandler(this); kinCanvas = new KinCanvas(this); uiMenus = new UIMenus(this); uiText = new UIText(this); kinTree = new KinTree(this); contentPane.buildGUI(useButtons, useSliders); } //}}} //{{{ shutdown //################################################################################################## /** * Initiates shutdown, albeit in a crude way. Called by Kinglet.stop() and the window close listeners. */ public void shutdown() { if(mainWin != null) mainWin.shutdown(); this.publish(new KMessage(this, KMessage.KING_SHUTDOWN)); instanceCount--; if(instanceCount <= 0 && theApplet == null) { try { System.exit(0); } catch(Throwable t) {} //catch(SecurityException ex) {} } } //}}} //{{{ Main //################################################################################################## /** * Main() function for running as an application */ public void Main() { // This compensates for incorrect drawing primitives on Mac OS X //try { System.setProperty("apple.awt.antialiasing", "on"); } //catch(SecurityException ex) { SoftLog.err.println("Not allowed to activate antialiasing."); } // No effect -- must be done using -D from Java cmd line // CTRL-x shortcuts are still useful in a Mac browser. // There's no good option for Windows / Linux broswers though. if(isApplet()) MENU_ACCEL_MASK = Event.CTRL_MASK; // Start in a reasonable directory if launched by double-click / drag-n-drop try { if(System.getProperty("user.dir").equals("/Applications")) System.setProperty("user.dir", System.getProperty("user.home")); //System.err.println("Current dir: "+System.getProperty("user.dir")); } catch(Exception ex) {}//{ ex.printStackTrace(); } // It's just too hard to change this after we've already started up! float magnification = prefs.getFloat("fontMagnification"); if(magnification != 1) { MetalLookAndFeel.setCurrentTheme(new MagnifiedTheme(magnification)); // This forces initialization of the LAF, which keeps Java 1.5 // from replacing our theme with their "Ocean" theme. try { UIManager.setLookAndFeel( UIManager.getLookAndFeel() ); } catch(Exception ex) { ex.printStackTrace(); } } if(!SoftLog.replaceSystemStreams()) if (theApplet == null) SoftLog.err.println("Unable to subvert System.err; some exception traces may be lost."); if(theApplet == null || !isAppletFlat) mainWin = new MainWindow(this); // doesn't create GUI yet, but other dlgs may depend on this one (?) createComponents(); // actually creates most of the stuff KiNG uses if(theApplet == null || !isAppletFlat) { mainWin.setContentPane(contentPane); mainWin.setJMenuBar(uiMenus.getMenuBar()); mainWin.addWindowListener(this); mainWin.pack(); mainWin.setVisible(true); if(prefs.getBoolean("textOpenOnStart")) uiText.cascadeBehind(mainWin); } else { kinCanvas.setPreferredSize(null); // so we don't crowd off other components kinCanvas.setMinimumSize(null); theApplet.setContentPane(contentPane); theApplet.setJMenuBar(uiMenus.getMenuBar()); theApplet.validate(); // make sure text window gets opened as needed } // Mac OS X only! - adds support for Drag & Drop to Dock icon and for program launch try { //MacDropTarget.bindTo(this); Class macDropClass = Class.forName("king.MacDropTarget"); Method bindTo = macDropClass.getMethod("bindTo", new Class[] {KingMain.class}); bindTo.invoke(null, new Object[] {this}); } catch(Throwable t) {} if(theApplet == null) SwingUtilities.invokeLater(new ReflectiveRunnable(this, "loadFiles")); else SwingUtilities.invokeLater(new ReflectiveRunnable(this, "appletLoadFiles")); } //}}} //{{{ loadFiles //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void loadFiles() { if((filesToOpen != null && filesToOpen.size() > 0)||(pdbFilesToOpen != null && pdbFilesToOpen.size() > 0)||(kinFilesToOpen != null && kinFilesToOpen.size() > 0)) { Kinemage kin = null; if(doMerge && kinFilesToOpen.size() > 1) kin = new Kinemage(KinfileParser.DEFAULT_KINEMAGE_NAME+"1"); for(File f : kinFilesToOpen) kinIO.loadFile(f, kin); if(kin != null) this.getStable().append(Arrays.asList(new Kinemage[] {kin})); Collection plugins = kinCanvas.toolbox.getPluginList(); Iterator iter = plugins.iterator(); if (pdbFilesToOpen != null && pdbFilesToOpen.size() > 0) { while (iter.hasNext()) { Plugin plug = (Plugin) iter.next(); plug.loadFileFromCmdline(pdbFilesToOpen, pluginArgs); } } // the reason I scan through plugins twice is so pdb files get processed // first in order to make sure a kin is available before anything else. iter = plugins.iterator(); while (iter.hasNext()) { Plugin plug = (Plugin) iter.next(); plug.loadFileFromCmdline(filesToOpen, pluginArgs); } } this.publish(new KMessage(this, KMessage.KING_STARTUP)); } //}}} //{{{ appletLoadFiles, getAppletKinURL //################################################################################################## /** * File loading in event dispatch thread */ public void appletLoadFiles() { try { URL kinURL = getAppletKinURL(); if(kinURL != null) this.getKinIO().loadURL(kinURL, null); URL[] kinList = getAppletKinURLList(); if(kinList != null) this.getKinIO().loadURLs(kinList); } catch(MalformedURLException ex) { SoftLog.err.println(" kinSource specified an unresolvable URL."); } try { URL pdbURL = getAppletPdbURL(); if (pdbURL != null) { Collection plugins = kinCanvas.toolbox.getPluginList(); Iterator iter = plugins.iterator(); while (iter.hasNext()) { Plugin plug = (Plugin) iter.next(); try { plug.loadFromURL(pdbURL); } catch (Exception e) { e.printStackTrace(); } } } } catch(MalformedURLException ex) { SoftLog.err.println(" pdbSource specified an unresolvable URL."); } this.publish(new KMessage(this, KMessage.KING_STARTUP)); } /** Returns the URL of the primary kinemage this applet was invoked to show, or null for none. */ public URL getAppletKinURL() throws MalformedURLException { // Try multiple names for this parameter String kinsrc = theApplet.getParameter("kinSource"); if(kinsrc == null) kinsrc = theApplet.getParameter("kinFile"); if(kinsrc == null) kinsrc = theApplet.getParameter("kinURL"); if(kinsrc == null) kinsrc = theApplet.getParameter("kinemage"); if(kinsrc == null) kinsrc = theApplet.getParameter("kin"); if(kinsrc != null) return new URL(theApplet.getDocumentBase(), kinsrc); else return null; } public URL[] getAppletKinURLList() throws MalformedURLException { String kinBase = theApplet.getParameter("kinfileBase"); String kins = theApplet.getParameter("kinfileList"); if(kins != null && kinBase != null) { String[] kinlist = Strings.explode(kins, ' '); URL[] urllist = new URL[kinlist.length]; for (int i = 0; i < kinlist.length; i++) { urllist[i] = new URL(theApplet.getDocumentBase(), kinBase+"/"+kinlist[i]); } return urllist; } return null; } public URL getAppletPdbURL() throws MalformedURLException { String pdbsrc = theApplet.getParameter("pdbSource"); if(pdbsrc == null) pdbsrc = theApplet.getParameter("pdbFile"); if(pdbsrc == null) pdbsrc = theApplet.getParameter("pdbURL"); if(pdbsrc == null) pdbsrc = theApplet.getParameter("pdb"); if(pdbsrc != null) return new URL(theApplet.getDocumentBase(), pdbsrc); else return null; } //}}} //{{{ publish, (un)subscribe //################################################################################################## /** Sign up to receive event messages from KiNG */ public void subscribe(KMessage.Subscriber listener) { subscribers.add(listener); } /** Stop receiving event messages from KiNG */ public void unsubscribe(KMessage.Subscriber listener) { subscribers.remove(listener); } /** * Distribute the message to all current subscribers. * This method runs synchronously, in the current Thread: * it does not return until all subscribers have reacted. */ public void publish(KMessage msg) { // I hate to do this for the overhead (which is in reality probably quite small), // but it's necessary to avoid ConcurrentModificationExceptions if someone // tries to unsubscribe as a result of receiving an event (like EDMapPlugin does). KMessage.Subscriber[] s = subscribers.toArray(new KMessage.Subscriber[subscribers.size()]); for(KMessage.Subscriber subscriber : s) subscriber.deliverMessage(msg); } //}}} //{{{ getXXX functions //################################################################################################## /** Returns the object holding our content: either a JFrame or a JApplet. Never null. */ public Container getContentContainer() { return (mainWin == null ? (Container)theApplet : (Container)mainWin); } /** Returns the ContentPane object that holds all the GUI elements. Never null. */ public ContentPane getContentPane() { return contentPane; } /** Returns the top-level window, if there is one; null otherwise. */ public Frame getTopWindow() { return mainWin; } /** Returns the data model that holds all data for this session (never null) */ public KinStable getStable() { return kinStable; } /** Returns the kinemage reader/writer (never null) */ public KinfileIO getKinIO() { return kinIO; } /** Returns the drag-n-drop handler for files (never null) */ public FileDropHandler getFileDropHandler() { return dropHandler; } /** Returns the active drawing canvas (never null) */ public KinCanvas getCanvas() { return kinCanvas; } /** Returns the collection of UI actions and menus that manage user input (may be null) */ public UIMenus getMenus() { return uiMenus; } /** Returns the text storage/edit/display system (never null) */ public UIText getTextWindow() { return uiText; } /** Returns the tree controller (may be null) */ public KinTree getKinTree() { return kinTree; } /** Returns the preferences storage object */ public KingPrefs getPrefs() { return prefs; } /** Convenience function for getStable().getKinemage() (may be null) */ public Kinemage getKinemage() { return kinStable.getKinemage(); } /** Convenience function for getCanvas().getCurrentView() (may be null) */ public KView getView() { if(kinCanvas == null) return null; else return kinCanvas.getCurrentView(); } /** Convenience for getCanvas().setCurrentView() */ public void setView(KView view) { if(kinCanvas != null) kinCanvas.setCurrentView(view); } /** Returns the applet this was spawned from (may be null) */ public JApplet getApplet() { return theApplet; } /** * Returns true if KiNG is running as an applet. * However, it could be a *trusted* applet, so you are probably * are more interested in isTrusted() instead. */ public boolean isApplet() { return getApplet() != null; } /** * Returns true if this code is allowed to access the filesystem, * open arbitrary URLs, etc -- all the things (unsigned) applets * can't do and ordinary Java desktop applications can. */ public boolean isTrusted() { // need a better implementation later //return isApplet(); // I'm not sure whether signed applets get AllPermission or not. // I know that applications do with Sun's Java 1.5.x SecurityManager sm = System.getSecurityManager(); if(sm == null) return true; try { sm.checkPermission(new java.security.AllPermission()); } catch(SecurityException ex) { return false; } return true; } //}}} //{{{ parseArguments //################################################################################################## // Interpret command-line arguments void parseArguments(String[] args) { SuffixFileFilter pdbFilter = CoordinateFile.getCoordFileFilter(); SuffixFileFilter kinFilter = Kinemage.getKinFileFilter(); filesToOpen = new ArrayList(); kinFilesToOpen = new ArrayList(); pdbFilesToOpen = new ArrayList(); String arg; for(int i = 0; i < args.length; i++) { arg = args[i]; // this is an option if(arg.startsWith("-")) { if(arg.equals("-h") || arg.equals("-help")) { //SoftLog.err.println("Possible arguments for KiNG:"); showHelp(); System.exit(0); } else if(arg.equals("-version")) { SoftLog.err.println("KingMain, version "+getPrefs().getString("version")+"\nCopyright (C) 2002-2011 by Ian W. Davis"); System.exit(0); } else if(arg.equals("-m") || arg.equals("-merge")) { doMerge = true; pluginArgs.add(arg); } else if(arg.equals("-s") || arg.equals("-single")) { doMerge = false; } else if(arg.equals("-phenix")) { pluginArgs.add(arg); } else { SoftLog.err.println("*** Unrecognized option: "+arg); } } // this is a file, etc. else { if (pdbFilter.accept(arg)) pdbFilesToOpen.add(new File(arg)); else if (kinFilter.accept(arg)) kinFilesToOpen.add(new File(arg)); else filesToOpen.add(new File(arg)); } } } //}}} //{{{ showHelp /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ // Display help information void showHelp() { InputStream is = getClass().getResourceAsStream("king.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'king.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } System.err.println("Copyright (C) 2002-2011 by IWD, VBC, DAK. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ Window events //################################################################################################## public void windowActivated(WindowEvent ev) {} public void windowClosed(WindowEvent ev) {} public void windowClosing(WindowEvent ev) { if(uiMenus != null) uiMenus.onFileExit(null); else shutdown(); } public void windowDeactivated(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowOpened(WindowEvent ev) {} //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/ViewEditor.java0000644000000000000000000002552411531212654017216 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import java.util.List; //}}} /** * ViewEditor is a UI for renaming, reordering, deleting, etc views. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Dec 5 09:46:29 EST 2002 */ public class ViewEditor //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JDialog dialog; JList list; JButton close; // DAK 090726 //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public ViewEditor(KingMain kmain) { kMain = kmain; dialog = new JDialog(kMain.getTopWindow(), "Edit views", true); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); list = new FatJList(0, 20); list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); list.setVisibleRowCount(12); list.setBorder( BorderFactory.createEtchedBorder() ); JScrollPane listScroll = new JScrollPane(list); JButton go = new JButton(new ReflectiveAction("Go to", null, this, "onGoTo")); JButton gonext = new JButton(new ReflectiveAction("Go Next", kMain.prefs.stepForwardIcon, this, "onGoNext")); JButton goprev = new JButton(new ReflectiveAction("Go Prev", kMain.prefs.stepBackIcon, this, "onGoPrev")); JButton rename = new JButton(new ReflectiveAction("Rename", null, this, "onRename")); JButton delete = new JButton(new ReflectiveAction("Delete", kMain.prefs.deleteIcon, this, "onDelete")); JButton up = new JButton(new ReflectiveAction("Move up", kMain.prefs.moveUpIcon, this, "onMoveUp")); JButton down = new JButton(new ReflectiveAction("Move down", kMain.prefs.moveDownIcon, this, "onMoveDown")); /*JButton*/ close = new JButton(new ReflectiveAction("Close", null, this, "onClose")); // Mnemonics: require alt+key to execute go.setMnemonic(KeyEvent.VK_G); rename.setMnemonic(KeyEvent.VK_R); delete.setMnemonic(KeyEvent.VK_BACK_SPACE); up.setMnemonic(KeyEvent.VK_U); down.setMnemonic(KeyEvent.VK_D); close.setMnemonic(KeyEvent.VK_C); // Key bindings: just type the key to execute -- DAK 090929 InputMap im = dialog.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_G, 0 ), "goto" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT, KingMain.MENU_ACCEL_MASK), "gonext" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT, KingMain.MENU_ACCEL_MASK), "goprev" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP, KingMain.MENU_ACCEL_MASK), "moveup" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN, KingMain.MENU_ACCEL_MASK), "movedown"); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_R, 0 ), "rename" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0 ), "delete" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_D, 0 ), "delete" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0 ), "close" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_W, KingMain.MENU_ACCEL_MASK), "close" ); ActionMap am = dialog.getRootPane().getActionMap(); am.put("goto" , new ReflectiveAction(null, null, this, "onGoTo" )); am.put("gonext" , new ReflectiveAction(null, null, this, "onGoNext" )); am.put("goprev" , new ReflectiveAction(null, null, this, "onGoPrev" )); am.put("rename" , new ReflectiveAction(null, null, this, "onRename" )); am.put("delete" , new ReflectiveAction(null, null, this, "onDelete" )); am.put("moveup" , new ReflectiveAction(null, null, this, "onMoveUp" )); am.put("movedown", new ReflectiveAction(null, null, this, "onMoveDown")); am.put("close" , new ReflectiveAction(null, null, this, "onClose" )); TablePane cp = new TablePane(); cp.insets(2).hfill(true).weights(0,0); cp.save().weights(1,1).vfill(true).hfill(true).addCell(listScroll, 1, 9).restore(); cp.addCell(go).newRow(); cp.addCell(gonext).newRow(); cp.addCell(goprev).newRow(); cp.save().weights(0,1).insets(0).addCell(Box.createVerticalStrut(10)).restore().newRow(); cp.addCell(rename).newRow(); cp.addCell(delete).newRow(); cp.save().weights(0,1).insets(0).addCell(Box.createVerticalStrut(10)).restore().newRow(); cp.addCell(up).newRow(); cp.addCell(down).newRow(); cp.center().hfill(false).addCell(close, 2, 1); dialog.setContentPane(cp); dialog.getRootPane().setDefaultButton(close); list.requestFocus(); } //}}} //{{{ onClose, onMoveUp, onMoveDown //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onClose(ActionEvent ev) { dialog.dispose(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onMoveUp(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; KView view = (KView)list.getSelectedValue(); if(view == null) return; List viewList = kin.getViewList(); ListIterator iter = viewList.listIterator(); KView swap = null, next = null; do { swap = next; next = iter.next(); } while(!view.equals(next)); if(swap != null) { iter.set(swap); iter.previous(); //back to next... iter.previous(); //back to swap... iter.set(view); } kin.setModified(true); kin.fireKinChanged(AHE.CHANGE_VIEWS_LIST); // Re-fill the list so names are updated list.setListData( viewList.toArray() ); list.setSelectedValue(view, true); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onMoveDown(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; KView view = (KView)list.getSelectedValue(); if(view == null) return; List viewList = kin.getViewList(); ListIterator iter = viewList.listIterator(); while(!view.equals(iter.next())) {} if(iter.hasNext()) { KView swap = iter.next(); iter.set(view); iter.previous(); //back to swap... iter.previous(); //back to view... iter.set(swap); } kin.setModified(true); kin.fireKinChanged(AHE.CHANGE_VIEWS_LIST); // Re-fill the list so names are updated list.setListData( viewList.toArray() ); list.setSelectedValue(view, true); } //}}} //{{{ onGoTo, onRename, onDelete //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onGoTo(ActionEvent ev) { KView view = (KView)list.getSelectedValue(); if(view == null) return; kMain.setView(view); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRename(ActionEvent ev) { KView view = (KView)list.getSelectedValue(); if(view == null) return; String viewname = (String)JOptionPane.showInputDialog(kMain.getTopWindow(), "Name for this view:", "Rename view", JOptionPane.PLAIN_MESSAGE, null,//icon null,//selections view.getName()); if(viewname == null) return; view.setName(viewname); // Re-fill the list so names are updated Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.setModified(true); kin.fireKinChanged(AHE.CHANGE_VIEWS_LIST); list.setListData( kin.getViewList().toArray() ); list.setSelectedValue(view, true); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDelete(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; KView view = (KView)list.getSelectedValue(); if(view == null) return; List viewList = kin.getViewList(); viewList.remove(view); kin.setModified(true); kin.fireKinChanged(AHE.CHANGE_VIEWS_LIST); // Re-fill the list so names are updated list.setListData( viewList.toArray() ); } //}}} //{{{ onGoNext, onGoPrev //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onGoNext(ActionEvent ev) { int index = list.getSelectedIndex()+1; if(index >= 0 && index < list.getModel().getSize()) { list.setSelectedIndex(index); onGoTo(null); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onGoPrev(ActionEvent ev) { int index = list.getSelectedIndex()-1; if(index >= 0 && index < list.getModel().getSize()) { list.setSelectedIndex(index); onGoTo(null); } } //}}} //{{{ editViews //################################################################################################## /** Display the view-editing dialog box */ public void editViews() { // Fill the list Kinemage kin = kMain.getKinemage(); if(kin == null) return; list.setListData( kin.getViewList().toArray() ); // Display dialog box dialog.pack(); dialog.setLocationRelativeTo(kMain.getTopWindow()); dialog.setVisible(true); dialog.getRootPane().setDefaultButton(close); list.requestFocus(); // remember, execution of this thread stops here until dialog is closed } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/PrefsEditor.java0000644000000000000000000002627511531212654017367 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.data.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * PrefsEditor provides a GUI for editing preferences. * Because the list of loaded plugins could change at any time, * instances of this class should only be used once and then discarded. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Dec 12 13:32:25 EST 2002 */ public class PrefsEditor //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JDialog dialog; JTabbedPane tabPane; JTextField fontMagnification, fontSizeSmall, fontSizeBig; JTextField stereoAngle; JCheckBox joglByDefault, textOpenOnStart, textAllowEdits, textEmptyKinsClosed; JCheckBox treeConfirmDelete, treeConfirmMerge; JCheckBox checkNewVersion; JCheckBox minimizableTools; Map pluginMenuMap; // maps plugin class name to a JComboBox JButton btnDone, btnDefaults, btnSave; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PrefsEditor(KingMain kmain) { kMain = kmain; buildGUI(); } //}}} //{{{ buildGUI //################################################################################################## private void buildGUI() { btnDone = new JButton(new ReflectiveAction("Close", null, this, "onDone")); btnDefaults = new JButton(new ReflectiveAction("Reset to defaults", null, this, "onDefaults")); btnSave = new JButton(new ReflectiveAction("Save to disk", null, this, "onSave")); if(!kMain.isTrusted()) btnSave.setEnabled(false); Component generalPane = buildGeneralPane(); Component pluginPane = buildPluginsPane(); tabPane = new JTabbedPane(); tabPane.addTab("General", generalPane); tabPane.addTab("Plugins", pluginPane); TablePane2 content = new TablePane2(); content.hfill(true).vfill(true).addCell(tabPane, 2, 1); content.newRow(); content.center().memorize(); content.addCell(btnDefaults).addCell(btnSave); content.newRow(); content.addCell(btnDone, 2, 1); dialog = new JDialog(kMain.getTopWindow(), "Configure KiNG", true); dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialog.setContentPane(content); } //}}} //{{{ buildGeneralPane //################################################################################################## private Component buildGeneralPane() { fontMagnification = new JTextField(4); fontSizeSmall = new JTextField(4); fontSizeBig = new JTextField(4); stereoAngle = new JTextField(4); joglByDefault = new JCheckBox("Start in OpenGL mode"); textOpenOnStart = new JCheckBox("Open text window on startup"); textAllowEdits = new JCheckBox("Text window starts off editable"); textEmptyKinsClosed = new JCheckBox("Empty text window if all kins closed"); treeConfirmDelete = new JCheckBox("Ask before deleting groups"); treeConfirmMerge = new JCheckBox("Ask before merging groups"); checkNewVersion = new JCheckBox("Check for new version online"); minimizableTools = new JCheckBox("Use minimizable tool windows"); TablePane2 innerPane = new TablePane2(); innerPane.addCell(new JLabel("Menu font magnification (requires restart)")).addCell(fontMagnification).newRow(); innerPane.addCell(new JLabel("Font size (normal)")).addCell(fontSizeSmall).newRow(); innerPane.addCell(new JLabel("Font size (large)")).addCell(fontSizeBig).newRow(); innerPane.addCell(new JLabel("Stereo angle (- cross, + wall)")).addCell(stereoAngle).newRow(); innerPane.addCell(joglByDefault, 2, 1).newRow(); innerPane.addCell(textOpenOnStart, 2, 1).newRow(); innerPane.addCell(textAllowEdits, 2, 1).newRow(); innerPane.addCell(textEmptyKinsClosed, 2, 1).newRow(); innerPane.addCell(treeConfirmDelete, 2, 1).newRow(); innerPane.addCell(treeConfirmMerge, 2, 1).newRow(); innerPane.addCell(checkNewVersion, 2, 1).newRow(); innerPane.addCell(minimizableTools, 2, 1).newRow(); return innerPane; } //}}} //{{{ buildPluginsPane //################################################################################################## private Component buildPluginsPane() { ToolBox toolbox = kMain.getCanvas().getToolBox(); Collection plugins = toolbox.getPluginList(); // Make a list of all unique submenu names UberSet menuNames = new UberSet(); menuNames.add(ToolBox.MENU_NONE); menuNames.add(ToolBox.MENU_MAIN); menuNames.add(ToolBox.MENU_IMPORT); menuNames.add(ToolBox.MENU_EXPORT); for(Iterator iter = plugins.iterator(); iter.hasNext(); ) menuNames.add(toolbox.getPluginMenuName((Plugin)iter.next())); Object[] items = menuNames.toArray(); // Add GUI components for all plugins, one per row pluginMenuMap = new HashMap(); TablePane2 content = new TablePane2(); content.addCell(new JLabel("Choose a menu for each tool, or type in a new menu name."), 3, 1).newRow(); for(Iterator iter = plugins.iterator(); iter.hasNext(); ) { Plugin p = (Plugin) iter.next(); JComboBox combo = new JComboBox(items); combo.setSelectedItem(toolbox.getPluginMenuName(p)); combo.setEditable(true); content.addCell(new JLabel(p.toString())); content.addCell(content.strut(10,0)); content.hfill(true).addCell(combo); content.newRow(); pluginMenuMap.put(p.getClass().getName(), combo); } JScrollPane scroll = new JScrollPane(content); scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); // Keep the list from being too tall in the dialog Dimension dim = scroll.getPreferredSize(); dim.height = 100; scroll.setPreferredSize(dim); return scroll; } //}}} //{{{ edit, editPlugins //################################################################################################## public void edit() { toGUI(); dialog.pack(); dialog.setLocationRelativeTo(kMain.getTopWindow()); dialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed } public void editPlugins() { int index = tabPane.indexOfTab("Plugins"); if(index != -1) tabPane.setSelectedIndex(index); this.edit(); } //}}} //{{{ toGUI, fromGUI //################################################################################################## private void toGUI() { KingPrefs p = kMain.prefs; if(p == null) return; fontMagnification.setText(p.getString("fontMagnification")); fontSizeSmall.setText(p.getString("fontSizeSmall")); fontSizeBig.setText(p.getString("fontSizeBig")); stereoAngle.setText(p.getString("stereoAngle")); joglByDefault.setSelected(p.getBoolean("joglByDefault")); textOpenOnStart.setSelected(p.getBoolean("textOpenOnStart")); textAllowEdits.setSelected(p.getBoolean("textDefaultAllowEdits")); textEmptyKinsClosed.setSelected(p.getBoolean("textEmptyIfAllKinsClosed")); treeConfirmDelete.setSelected(p.getBoolean("treeConfirmDelete")); treeConfirmMerge.setSelected(p.getBoolean("treeConfirmMerge")); checkNewVersion.setSelected(p.getBoolean("checkNewVersion")); minimizableTools.setSelected(p.getBoolean("minimizableTools")); } private void fromGUI() { KingPrefs p = kMain.prefs; if(p == null) return; try { Float f = new Float(fontMagnification.getText().trim()); p.setProperty("fontMagnification", f.toString()); } catch(NumberFormatException ex) {} try { Integer i = new Integer(fontSizeSmall.getText().trim()); p.setProperty("fontSizeSmall", i.toString()); } catch(NumberFormatException ex) {} try { Integer i = new Integer(fontSizeBig.getText().trim()); p.setProperty("fontSizeBig", i.toString()); } catch(NumberFormatException ex) {} try { Float f = new Float(stereoAngle.getText().trim()); p.setProperty("stereoAngle", f.toString()); } catch(NumberFormatException ex) {} p.setProperty("joglByDefault", new Boolean(joglByDefault.isSelected()).toString()); p.setProperty("textOpenOnStart", new Boolean(textOpenOnStart.isSelected()).toString()); p.setProperty("textDefaultAllowEdits", new Boolean(textAllowEdits.isSelected()).toString()); p.setProperty("textEmptyIfAllKinsClosed", new Boolean(textEmptyKinsClosed.isSelected()).toString()); p.setProperty("treeConfirmDelete", new Boolean(treeConfirmDelete.isSelected()).toString()); p.setProperty("treeConfirmMerge", new Boolean(treeConfirmMerge.isSelected()).toString()); p.setProperty("checkNewVersion", new Boolean(checkNewVersion.isSelected()).toString()); p.setProperty("minimizableTools", new Boolean(minimizableTools.isSelected()).toString()); for(Iterator iter = pluginMenuMap.keySet().iterator(); iter.hasNext(); ) { String pluginName = (String) iter.next(); JComboBox combo = (JComboBox) pluginMenuMap.get(pluginName); String menuName = (String) combo.getSelectedItem(); p.setProperty(pluginName+".menuName", menuName); } } //}}} //{{{ onDone, onSave, onDefaults //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDone(ActionEvent ev) { fromGUI(); dialog.setVisible(false); kMain.publish(new KMessage(this, KMessage.PREFS_CHANGED)); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSave(ActionEvent ev) { fromGUI(); try { kMain.prefs.storeToFile(); } catch(SecurityException ex) { ex.printStackTrace(SoftLog.err); } toGUI(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDefaults(ActionEvent ev) { KingPrefs prefs = kMain.getPrefs(); prefs.clear(); toGUI(); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/MageHypertext.java0000644000000000000000000001000711531212654017711 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import king.io.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * MageHypertext parses Mage-style *{hyperlinks}* from the text window. * *

Copyright (C) 2004-2007 by Ian W. Davis. All rights reserved. *
Begun on Fri Jul 16 11:47:37 EDT 2004 */ public class MageHypertext implements UIText.HypertextListener { //{{{ Static fields //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public MageHypertext(KingMain kmain) { this.kMain = kmain; } //}}} //{{{ mageHypertextHit //################################################################################################## public void mageHypertextHit(String link) { try { KinfileTokenizer token = new KinfileTokenizer(new LineNumberReader(new StringReader(link))); while(!token.isEOF()) { //if(!(token.isLiteral() || token.isProperty())) continue; String cmd = token.getString().toLowerCase(); token.advance(); if(cmd.equals("kinemage") || cmd.equals("kin")) doKinToken(token); else if(cmd.equals("view") || cmd.equals("v=")) doViewToken(token); else if(cmd.startsWith("master") || cmd.equals("m=")) doMasterToken(token); else if(cmd.equals("alloff")) doAllOffToken(); //else SoftLog.err.println("Unexpected hypertext token: "+cmd); } } catch(IOException ex) {} } //}}} //{{{ doKinToken, doViewToken //################################################################################################## public void doKinToken(KinfileTokenizer token) throws IOException { if(token.isInteger()) { //kMain.getStable().changeCurrentKinemage(token.getInt()); //switches to wrong kin if file doesn't start with kin 1 kMain.getStable().changeCurrentKinemage("Kinemage #"+token.getString()); token.advance(); } } public void doViewToken(KinfileTokenizer token) throws IOException { if(token.isInteger()) { try { Kinemage kin = kMain.getStable().getKinemage(); KView view = kin.getViewList().get(token.getInt() - 1); kMain.setView(view); } catch(IndexOutOfBoundsException ex) {} token.advance(); } } //}}} //{{{ doMasterToken, doAllOffToken //################################################################################################## public void doMasterToken(KinfileTokenizer token) throws IOException { if(token.isIdentifier()) { String masterName = token.getString(); token.advance(); if(token.isLiteral()) { String masterAlive = token.getString().toLowerCase(); token.advance(); Kinemage kin = kMain.getKinemage(); if(masterAlive.equals("on")) kin.getMasterByName(masterName).setOn(true); else if(masterAlive.equals("off")) kin.getMasterByName(masterName).setOn(false); } } } public void doAllOffToken() { Kinemage kin = kMain.getKinemage(); for(MasterGroup master : kin.masterList()) master.setOn(false); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/KinStable.java0000644000000000000000000001571011531212654017005 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import java.util.List; import javax.swing.Timer; //}}} /** * KinStable holds all of the data about one or more kin files. * It acts as the root for the hierarchy of groups. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Apr 24 11:22:51 EDT 2002 */ public class KinStable implements ListSelectionListener, KMessage.Subscriber, ActionListener { //{{{ Variables KingMain kMain = null; List children; Kinemage currentKinemage = null; // the current kinemage within the file volatile boolean isLocked = false; Timer timer; JList kinChooser = null; // a list of all kinemages present in the stable //}}} //{{{ Constructor //################################################################################################## /** * Constructor */ public KinStable(KingMain kmain) { kMain = kmain; children = new ArrayList(); kinChooser = new JList(new DefaultListModel()); // must specify or get a ClassCastEx later! kinChooser.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); kinChooser.setVisibleRowCount(4); kinChooser.setFixedCellWidth(100); kinChooser.addListSelectionListener(this); kMain.subscribe(this); // Check for changes to the kinemage FPS times per second final int FPS = 30; timer = new Timer(1000/FPS, this); timer.start(); } //}}} //{{{ getKins, actionPerformed //################################################################################################## /** Returns an unmodifiable list of all open kinemages. */ public List getKins() { return Collections.unmodifiableList(children); } /** Called periodically by a Timer to check if anything about the current kinemage has changed. */ public void actionPerformed(ActionEvent ev) { if(currentKinemage == null) return; // We stop the timer in case our duties take longer than its period, // in which case all processor time would be eaten by event notifications. timer.stop(); int changes = currentKinemage.queryKinChanged(); if(changes != 0) kMain.publish(new KMessage(currentKinemage, changes)); timer.start(); } //}}} //{{{ deliverMessage //############################################################################## public void deliverMessage(KMessage msg) { // doesn't react to messages because all updates are made in appropriate functions // (for the most part...) if(msg.testProg(KMessage.KING_SHUTDOWN)) this.closeAll(); // minimizes memory leaks in applet mode } //}}} //{{{ closeAll, closeCurrent, append //################################################################################################## public void closeAll() { children.clear(); currentKinemage = null; //kinChooser.removeAllItems(); // leaks memory! // This leak is a bug in JComboBox.removeAllItems() // as of v1.4.1 and has been reported to Sun by IWD. // The following is a work-around: kinChooser.setModel(new DefaultListModel()); kMain.publish(new KMessage(this, KMessage.ALL_CLOSED)); } public void closeCurrent() { Kinemage oldKin = currentKinemage; children.remove(currentKinemage); currentKinemage = null; int selPos = kinChooser.getSelectedIndex(); Object selection = kinChooser.getSelectedValue(); DefaultListModel model = (DefaultListModel)kinChooser.getModel(); model.removeElement(selection); selPos = Math.min(selPos, kinChooser.getModel().getSize() - 1); if(selPos >= 0) kinChooser.setSelectedIndex(selPos); kMain.publish(new KMessage(this, KMessage.KIN_CLOSED)); } /** * Adds in the specified collection of kinemages. * If there is no current kinemage, then the first of these becomes the current kinemage. * @param newKins a group of Kinemage objects to add (not null) */ public void append(Collection newKins) { children.addAll(newKins); DefaultListModel model = (DefaultListModel) kinChooser.getModel(); boolean first = true; for(Kinemage k : newKins) { model.addElement(k); if(first) { currentKinemage = k; kinChooser.setSelectedValue(k, true); first = false; } } // This if statement corrects for a bug(?) in java 1.5 // which was causing king to not select a kinemage if one // was opened using the menu and there were no prior open // kins. if(kinChooser.getSelectedIndex() == -1) kinChooser.setSelectedIndex(0); kMain.publish(new KMessage(this, KMessage.KIN_SWITCHED)); } ///}}} //{{{ valueChanged, setLocked //################################################################################################## /* Gets called when a new kinemage is picked from the list (kinChooser) */ public void valueChanged(ListSelectionEvent ev) { currentKinemage = (Kinemage) kinChooser.getSelectedValue(); kMain.publish(new KMessage(this, KMessage.KIN_SWITCHED)); } /** Used to control access to kinemage during file loading */ public synchronized void setLocked(boolean l) { if(isLocked != l) { isLocked = l; kMain.publish(new KMessage(this, KMessage.KIN_SWITCHED)); } } //}}} //{{{ getKinemage, getChooser, changeCurrentKinemage //################################################################################################## /** Returns the Kingemage that contains all of the 3-D data being displayed. */ public synchronized Kinemage getKinemage() { if(isLocked) return null; else return currentKinemage; } /** Returns a JList that lists all the loaded kinemages. */ public Component getChooser() { return kinChooser; } /** Indexing starts from 1 */ public void changeCurrentKinemage(int kinNum) { kinNum -= 1; if(0 <= kinNum && kinNum < children.size()) kinChooser.setSelectedValue(children.get(kinNum), true); } public void changeCurrentKinemage(String kinName) { for (Kinemage kin : children) { if (kin.getName().equals(kinName)) kinChooser.setSelectedValue(kin, true); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/points/0000755000000000000000000000000011744310054015575 5ustar rootrootking-2.21.120420/king/src/king/points/MarkerPoint.java0000644000000000000000000000655311531212654020705 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.points; import king.core.*; import java.awt.Paint; //import java.io.*; //import java.text.*; //import java.util.*; //import javax.swing.*; //}}} /** * MarkerPoint is a "screen-oriented displayable" that can take on many different looks. * It servers as a marker for picked points and may come in list form, e.g. for graphs. * *

Begun on Sun Jun 23 15:33:28 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class MarkerPoint extends AbstractPoint // implements ... { //{{{ Static fields public static final int CROSS_S = 0x00000001; public static final int CROSS_M = 0x00000002; public static final int CROSS_L = 0x00000004; public static final int CROSS_2 = 0x00000008; public static final int X_S = 0x00000010; public static final int X_M = 0x00000020; public static final int X_L = 0x00000040; public static final int X_2 = 0x00000080; public static final int SQUARE_S = 0x00000100; public static final int SQUARE_M = 0x00000200; public static final int SQUARE_L = 0x00000400; public static final int BOX_S = 0x00001000; public static final int BOX_M = 0x00002000; public static final int BOX_L = 0x00004000; public static final int RING_S = 0x00010000; public static final int RING_M = 0x00020000; public static final int RING_L = 0x00040000; public static final int DISC_S = 0x00100000; public static final int DISC_M = 0x00200000; public static final int DISC_L = 0x00400000; //}}} //{{{ Variable definitions //################################################################################################## int style = 0; //}}} //{{{ Constructors //################################################################################################## /** * Creates a new data point displayed as some type of marker. * * @param label the pointID of this point */ public MarkerPoint(String label) { super(label); } /** Quick way to follow a point -- creates an unpickable marker named "marker" */ public MarkerPoint(KPoint p, KPaint color, int style_mask) { super("marker"); setColor(color); setStyle(style_mask); setUnpickable(true); x0 = (float)p.getX(); y0 = (float)p.getY(); z0 = (float)p.getZ(); } //}}} //{{{ get/setStyle //################################################################################################## public int getStyle() { return style; } public void setStyle(int s) { style = s; fireKinChanged(CHANGE_POINT_PROPERTIES); } //}}} //{{{ paint2D //################################################################################################## public void paint2D(Engine2D engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; Paint paint = maincolor.getPaint(engine.backgroundMode, engine.colorCue); int width = engine.markerSize; // Point style dominants over list style int paintStyle = this.getStyle(); if(paintStyle == 0 && parent != null) paintStyle = parent.getStyle(); engine.painter.paintMarker(paint, x, y, z, width, paintStyle); } //}}} }//class king-2.21.120420/king/src/king/points/VectorPoint.java0000644000000000000000000003175611531212654020731 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.points; import king.core.*; import java.awt.*; import java.awt.geom.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * VectorPoint represents the endpoint of a line. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Fri Apr 26 16:46:09 EDT 2002 */ public class VectorPoint extends AbstractPoint // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## protected VectorPoint from = null; protected int width = 0; // width of this line (0 => use parent.width) //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new data point representing one end of a line. * * @param label the pointID of this point * @param start where this line is drawn from, or null if it's the starting point */ public VectorPoint(String label, VectorPoint start) { super(label); setPrev(start); } //}}} //{{{ get/setPrev, isBreak, get/setWidth //################################################################################################## public void setPrev(KPoint pt) { super.setPrev(pt); from = (VectorPoint)pt; } public VectorPoint getPrev() { return from; } public boolean isBreak() { return (from == null); } public int getWidth() { return width; } public void setWidth(int w) { if(w > 7) width = 7; else if(w < 0) width = 0; else width = w; fireKinChanged(CHANGE_POINT_PROPERTIES); } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform, double zoom) { // Don't call super.doTransform() b/c we do it all here if(parent.getScreen()) { double width = engine.pickingRect.getWidth(); double height = engine.pickingRect.getHeight(); double x = width /2 + getX()/200.0 * Math.min(width, height)/2; double y = height/2 - getY()/200.0 * Math.min(width, height)/2; setDrawXYZ(new Triple(x, y, getZ())); } else { xform.transform(this, engine.work1); setDrawXYZ(engine.work1); } // This only works because starting points are listed before ending points // in a kinemage, thus, from has already been transformed when we get here! // The idea is to add points based on the midpoint of the *visible* range. if(from != null) { KList par = (KList) this.getParent(); if (par != null && par.getRear() == true) { if (from.z < z && from.z <= engine.clipFront && z >= engine.clipBack) { engine.addPaintable(this, Math.max(from.z, engine.clipBack)-1); } else if (from.z >= engine.clipBack && z <= engine.clipFront) { engine.addPaintable(this, Math.max(z, engine.clipBack)-1); } } else if (par != null && par.getFore() == true) { if (from.z < z && from.z <= engine.clipFront && z >= engine.clipBack) { engine.addPaintable(this, Math.min(z, engine.clipFront)+1); } else if (from.z >= engine.clipBack && z <= engine.clipFront) { engine.addPaintable(this, Math.min(from.z, engine.clipFront)+1); } } else { if(from.z < z && from.z <= engine.clipFront && z >= engine.clipBack) { engine.addPaintable(this, (Math.max(from.z, engine.clipBack)+Math.min(z, engine.clipFront)) / 2.0); } else if(from.z >= engine.clipBack && z <= engine.clipFront) // && from.z >= z { engine.addPaintable(this, (Math.max(z, engine.clipBack)+Math.min(from.z, engine.clipFront)) / 2.0); } // else don't paint } } else engine.addPaintable(this, z); // won't be painted, but will be pickable } //}}} //{{{ isPickedBy //################################################################################################## public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { if(objPick && from != null) { VectorPoint A = this, B = from; // first check: bounding box if(xx > (Math.min(A.x,B.x) - radius) && xx < (Math.max(A.x,B.x)+radius) && yy > (Math.min(A.y,B.y) - radius) && yy < (Math.max(A.y,B.y)+radius)) { // line as ax + by + d = 0, like a plane float a = B.y - A.y, b = A.x - B.x; double num = a*xx + b*yy - (a*A.x + b*A.y); // parenthesized term is -d double d2 = (num*num) / (a*a + b*b); // square of distance to the line //System.err.println("x = "+xx+" : "+Math.min(A.x,B.x)+" - "+Math.max(A.x,B.x)); //System.err.println("y = "+yy+" : "+Math.min(A.y,B.y)+" - "+Math.max(A.y,B.y)); //System.err.println("a = "+a+"; b = "+b+"; d = "+(-(a*A.x + b*A.y))); //System.err.println("D^2 = "+d2); // Always return the "line to" point, so that color changes work as expected if(d2 < radius*radius) return this; /*{ float dx, dy, dA, dB; dx = xx - A.x; dy = yy - A.y; dA = dx*dx + dy*dy; dx = xx - B.x; dy = yy - B.y; dB = dx*dx + dy*dy; if(dA <= dB) return A; else return B; }*/ } } // Not else {...} b/c this can be true for line ends even outside the bounding box: return super.isPickedBy(xx, yy, radius, objPick); } //}}} //{{{ paint2D //################################################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paint2D(Engine2D engine) { //if(from == null || equals(from)) return; if(from == null || (x0 == from.x0 && y0 == from.y0 && z0 == from.z0)) return; KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; // [IWD, 4 May 2005] // For Mage/Prekin, it's enough for EITHER end of the line to be off to // not draw it. The line below could be replaced with a custom pmHit() // that ORs this.pm_mask with from.pm_mask before deciding on a hit. // That would be faster (precomputed) but seems riskier at the moment... // // Oops, the real problem is the FROM side not being marked with a pointmaster, // which means... what? How does this end up being a problem again? // // if(from.getDrawingColor(engine).isInvisible()) return; //Paint paint = maincolor.getPaint(engine.backgroundMode, engine.colorCue); int alpha = (parent == null ? 255 : parent.getAlpha()); Paint paint = maincolor.getPaint(engine.backgroundMode, 1, engine.colorCue, alpha); // If we REALLY wanted to clip line segments to the visible volume, we // could use 6 planes defining a box / truncated pyramid. // See ArrowPoint for ideas on Cohen-Sutherland clipping. // To intersect a line with a plane, from Comp.Graphics.Algorithms FAQ 5: // If the plane is defined as: // a*x + b*y + c*z + d = 0 // and the line is defined as: // x = x1 + (x2 - x1)*t = x1 + i*t // y = y1 + (y2 - y1)*t = y1 + j*t // z = z1 + (z2 - z1)*t = z1 + k*t // Then just substitute these into the plane equation. You end up with: // t = - (a*x1 + b*y1 + c*z1 + d)/(a*i + b*j + c*k) // When the denominator is zero, the line is contained in the plane if // the numerator is also zero (the point at t=0 satisfies the plane // equation), otherwise the line is parallel to the plane. //{{{ Determine who's in back and who's in front. double xb, yb, zb, shortenb, xf, yf, zf, shortenf; // Back and Front boolean fromIsFront; // are the "f" (front) points this or this.from? if(from.z < z) { fromIsFront = false; xb = from.x; yb = from.y; zb = from.z; shortenb = engine.getShortening(from); xf = x; yf = y; zf = z; shortenf = engine.getShortening(this); } else // from.z >= z { fromIsFront = true; xf = from.x; yf = from.y; zf = from.z; shortenf = engine.getShortening(from); xb = x; yb = y; zb = z; shortenb = engine.getShortening(this); } //}}} Determine who's in back and who's in front. //{{{ Shorten to fit in clipping plane, outside of balls // If line ends extend outside clipping area, calc. its intersection w/ clipping plane // If a ball resides at one end point, shorten the line by the radius of the ball double dz, dxdz, dydz, dzb, dzf, sx, sy, sz, s; dz = zf - zb; dxdz = (xf - xb)/dz; // == (dx/dz) dydz = (yf - yb)/dz; // == (dy/dz) dzb = engine.clipBack - zb; dzf = engine.clipFront - zf; // Clipping or shortening for back point. if(shortenb > 0) { s = Math.sqrt(shortenb*shortenb / ((dxdz*dxdz + dydz*dydz + 1)*dz*dz)); sz = s*dz; sx = sz*dxdz; sy = sz*dydz; if(sz > dzb) { xb += sx; yb += sy; zb += sz; } else if(zb < engine.clipBack) { xb = xb + dxdz*dzb; yb = yb + dydz*dzb; zb = engine.clipBack; } } else if(zb < engine.clipBack) { xb = xb + dxdz*dzb; yb = yb + dydz*dzb; zb = engine.clipBack; } // Clipping or shortening for front point. if(shortenf > 0) { s = Math.sqrt(shortenf*shortenf / ((dxdz*dxdz + dydz*dydz + 1)*dz*dz)); sz = s*dz; sx = sz*dxdz; sy = sz*dydz; if(sz > -dzf) { xf -= sx; yf -= sy; zf -= sz; } else if(zf > engine.clipFront) { xf = xf + dxdz*dzf; yf = yf + dydz*dzf; zf = engine.clipFront; } } else if(zf > engine.clipFront) { xf = xf + dxdz*dzf; yf = yf + dydz*dzf; zf = engine.clipFront; } //}}} Shorten to fit in clipping plane, outside of balls //engine.painter.paintVector(paint, calcLineWidth(engine), engine.widthCue, // xb, yb, zb, xf, yf, zf); if(fromIsFront) paintStandard2(engine, paint, xf, yf, zf, xb, yb, zb); else paintStandard2(engine, paint, xb, yb, zb, xf, yf, zf); } //}}} //{{{ paintStandard2 //################################################################################################## /** * This function exists solely for the convenience of ArrowPoints; * a good JIT will optimize it away for VectorPoints. * Coordinates are already transformed, perspective corrected, and clipped by Z planes. * They have NOT been clipped to the drawing area yet. */ protected void paintStandard2(Engine2D engine, Paint paint, double fromX, double fromY, double fromZ, double toX, double toY, double toZ) { int lineWidth = calcLineWidth(engine); engine.painter.paintVector(paint, lineWidth, engine.widthCue, fromX, fromY, fromZ, toX, toY, toZ); } //}}} //{{{ calcLineWidth //################################################################################################## /** Vector way of finding the right line width to use, given the settings in the engine */ protected int calcLineWidth(Engine engine) { if(engine.thinLines) return 1; int wid = 2; if(this.width > 0) wid = this.width; else if(parent != null) wid = parent.getWidth(); return wid; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/points/AbstractPoint.java0000644000000000000000000004176211531212654021230 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.points; import king.core.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import driftwood.data.TinyMap; import driftwood.r3.*; //}}} /** * AbstractPoint is a generic, non-instantiable representation of a 'point' in a kinemage. * This class and its subclasses contain the code for drawing all the different graphics primitives in Mage. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 12:57:57 EDT 2002 */ abstract public class AbstractPoint extends AHEImpl implements KPoint { //{{{ Constants // Bit allocation for 'multi': // kngpt points future tinymap // skkkkkkkppppppppffffffffmmmmmmmm /** Isolates all the bits used by tinymap */ public static final int TINYMAP_AND = 0xff; /** tinymap keys, 0 - 7 */ public static final int ASPECTS_KEY = (1<<0); public static final int COMMENT_KEY = (1<<1); public static final int COORDS_KEY = (1<<2); // for kins with >3 dimensions /** If this bit is set, the point is 'live' and should be painted */ public static final int ON_BIT = 0x40000000; /** If this bit is set, the point will not be picked by a mouse click */ public static final int UNPICKABLE = 0x20000000; /** Used by e.g. TrianglePoints to tell whose normal to in lighting effects */ public static final int SEQ_EVEN_BIT = 0x10000000; /** A flag used by Mage only; point is visible but not written to PDB output. */ public static final int GHOST_BIT = 0x08000000; //}}} //{{{ Variable definitions //################################################################################################## protected float x0 = 0f, y0 = 0f, z0 = 0f; // permanent coords protected float x = 0f, y = 0f, z = 0f; // transformed coords protected KList parent = null; // list that contains this point protected Object[] tmValues = null; // holds (ASPECTS), , etc. protected int pm_mask = 0; // bit flags for pointmasters /** Color this point is drawn in; null means take from list */ protected KPaint color = null; /** higher bits are used as flags */ protected int multi = 0 | ON_BIT; //}}} //{{{ Constructor(s) //################################################################################################## public AbstractPoint() { this(""); } public AbstractPoint(String nm) { super(); setName(nm); } //}}} //{{{ clone //################################################################################################## public KPoint clone() { try { return (KPoint) super.clone(); } catch(CloneNotSupportedException ex) { throw new Error("Clone failed in cloneable object"); } } //}}} //{{{ get/setX/Y/Z //################################################################################################## public double getX() { return x0; } public double getY() { return y0; } public double getZ() { return z0; } public void setX(double xx) { x0 = (float)xx; fireKinChanged(CHANGE_POINT_COORDINATES); } public void setY(double yy) { y0 = (float)yy; fireKinChanged(CHANGE_POINT_COORDINATES); } public void setZ(double zz) { z0 = (float)zz; fireKinChanged(CHANGE_POINT_COORDINATES); } public void setXYZ(double xx, double yy, double zz) { x0 = (float)xx; y0 = (float)yy; z0 = (float)zz; fireKinChanged(CHANGE_POINT_COORDINATES); } //}}} //{{{ get/setDrawX/Y/Z //################################################################################################## public float getDrawX() { return x; } public float getDrawY() { return y; } public float getDrawZ() { return z; } /** Assigns a value to the fully transformed (drawing) coordinates for this point (convenience for subclasses) */ protected void setDrawXYZ(Tuple3 t) { x = (float)t.getX(); y = (float)t.getY(); z = (float)t.getZ(); } //}}} //{{{ get/setAllCoords, useCoordsXYZ //################################################################################################## public void setAllCoords(float[] coords) { tmPut(COORDS_KEY, coords); } public float[] getAllCoords() { return (float[]) tmGet(COORDS_KEY); } public void useCoordsXYZ(int xIndex, int yIndex, int zIndex) { float[] coords = this.getAllCoords(); if(coords == null) return; if((xIndex >= 0) && (xIndex < coords.length)) this.setX( coords[xIndex] ); if((yIndex >= 0) && (yIndex < coords.length)) this.setY( coords[yIndex] ); if((zIndex >= 0) && (zIndex < coords.length)) this.setZ( coords[zIndex] ); } //}}} //{{{ get/setParent, get/setPrev, isBreak //################################################################################################## public KList getParent() { return parent; } public void setParent(KList owner) { parent = owner; fireKinChanged(CHANGE_POINT_PROPERTIES); } public void setPrev(KPoint pt) { if(pt == null) multi &= ~SEQ_EVEN_BIT; // turn off else if(pt instanceof AbstractPoint) { AbstractPoint apt = (AbstractPoint) pt; if((apt.multi & SEQ_EVEN_BIT) != 0) multi &= ~SEQ_EVEN_BIT; // turn off else multi |= SEQ_EVEN_BIT; // turn on } else multi &= ~SEQ_EVEN_BIT; // turn off fireKinChanged(CHANGE_POINT_PROPERTIES); } public KPoint getPrev() { return null; } public boolean isBreak() { return false; } //}}} //{{{ is/get/set{On, Unpickable, Ghost, Color, Aspects, Width, Radius, Comment} //################################################################################################## public boolean isOn() { return ((multi & ON_BIT) != 0); } public void setOn(boolean paint) { if(paint) multi |= ON_BIT; else multi &= ~ON_BIT; fireKinChanged(CHANGE_POINT_ON_OFF); } public boolean isUnpickable() { return ((multi & UNPICKABLE) != 0); } public void setUnpickable(boolean b) { if(b) multi |= UNPICKABLE; else multi &= ~UNPICKABLE; fireKinChanged(CHANGE_POINT_PROPERTIES); } public boolean isGhost() { return ((multi & GHOST_BIT) != 0); } public void setGhost(boolean b) { if(b) multi |= GHOST_BIT; else multi &= ~GHOST_BIT; fireKinChanged(CHANGE_POINT_PROPERTIES); } public KPaint getColor() { return color; } public void setColor(KPaint c) { color = c; fireKinChanged(CHANGE_POINT_PROPERTIES); } public String getAspects() { return (String) tmGet(ASPECTS_KEY); } public void setAspects(String a) { tmPut(ASPECTS_KEY, a); } public int getWidth() { return 0; } public void setWidth(int w) {} public float getRadius() { return 0; } public void setRadius(float radius) {} public void setComment(String cmt) { tmPut(COMMENT_KEY, cmt); } public String getComment() { return (String) tmGet(COMMENT_KEY); } //}}} //{{{ getDrawingColor //################################################################################################## public KPaint getDrawingColor() { KPaint paint = null; // If live bit has been unset by a pointmaster, we're invisible! if(!isOn()) paint = KPalette.invisible; else if(color != null) paint = color; else if(parent != null) paint = parent.getColor(); if(paint == null) paint = KPalette.defaultColor; return paint; } public KPaint getDrawingColor(Engine engine) { KPaint paint = null, tmppaint = null; boolean byList = (engine.colorByList && parent != null); String aspects = this.getAspects(); boolean doAspects = (engine.activeAspect > 0 && aspects != null && aspects.length() >= engine.activeAspect); // If live bit has been unset by a pointmaster, we're invisible! if(!isOn()) paint = KPalette.invisible; else if(byList) paint = parent.getColor(); // This way, we only use the aspect if we recognize the character else if(doAspects && (tmppaint = KPalette.forAspect(aspects.charAt(engine.activeAspect-1))) != null) paint = tmppaint; else if(color != null) paint = color; else if(parent != null) paint = parent.getColor(); if(paint == null) paint = KPalette.defaultColor; return paint; } //}}} //{{{ pmHit, pmWouldHit, get/setPmMask //################################################################################################## public void pmHit(int mask, int offmask, boolean turnon) { //Turn OFF if we're affected by this pointmaster, period. //Turn ON if and only if all our other pointmasters are also ON already. if(turnon) { if(( mask & pm_mask) != 0 && (offmask & pm_mask) == 0) setOn(true); } else { if((mask & pm_mask) != 0) setOn(false); } } public boolean pmWouldHit(int mask) { return (mask & pm_mask) != 0; } public int getPmMask() { return pm_mask; } public void setPmMask(int mask) { this.pm_mask = mask; fireKinChanged(CHANGE_POINT_MASTERS); } //}}} //{{{ calcBoundingBox, calcRadiusSq //################################################################################################## public void calcBoundingBox(float[] bound) { if(!parent.getScreen()) { if(x0 < bound[0]) bound[0] = x0; if(y0 < bound[1]) bound[1] = y0; if(z0 < bound[2]) bound[2] = z0; if(x0 > bound[3]) bound[3] = x0; if(y0 > bound[4]) bound[4] = y0; if(z0 > bound[5]) bound[5] = z0; } } public float calcRadiusSq(float[] center) { float dx, dy, dz; dx = x0 - center[0]; dy = y0 - center[1]; dz = z0 - center[2]; return (dx*dx + dy*dy + dz*dz); } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform) { doTransform(engine, xform, 1.0); } public void doTransform(Engine engine, Transform xform, double zoom) { // We have to transform whether we're on or not, because dependent points // (vectors, triangles) may be on and expect our coords to be valid. // Point-on is checked during drawing and picking by getDrawingColor. if(parent.getScreen()) { //{{{ [old code - ignore] //Kinemage ancestor = getKinemage(); //float span = ancestor.getSpan(); //float[] bounds = { Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE, //-Float.MAX_VALUE, -Float.MAX_VALUE, -Float.MAX_VALUE }; //parent.calcBoundingBox(bounds); //float[] center = new float[3]; //center[0] = (bounds[3] + bounds[0])/2f; //center[1] = (bounds[4] + bounds[1])/2f; //center[2] = (bounds[5] + bounds[2])/2f; //System.out.println("bounds"+bounds[3]+" "+bounds[0]); //System.out.println("bounds"+bounds[4]+" "+bounds[1]); //double width = engine.pickingRect.getWidth(); //double height = engine.pickingRect.getHeight(); //System.out.println("W: "+width+" H: "+height); //double xmult = (width/(bounds[3] - bounds[0])); //double ymult = (height/(bounds[4] - bounds[1])); //float width = center[0]; //float height = center[1]; //r = 50; //System.out.println((getX()+center[0]*xmult/2)*xmult+" "+(-getY()+center[1]*ymult/2)*ymult); //setDrawXYZ(new Triple((getX()-center[0])*xmult, (-getY()-center[1])*ymult, getZ())); //setDrawXYZ(new Triple(getX()+width/2, -getY()+height/2, getZ())); //}}} double width = engine.pickingRect.getWidth(); double height = engine.pickingRect.getHeight(); double x = width /2 + getX()/200.0 * Math.min(width, height)/2; double y = height/2 - getY()/200.0 * Math.min(width, height)/2; setDrawXYZ(new Triple(x, y, getZ())); // Choice of second param shouldn't matter b/c engine handles 'screen' parent lists engine.addPaintable(this, z); } else { xform.transform(this, engine.work1); setDrawXYZ(engine.work1); engine.addPaintable(this, z); } } //}}} //{{{ isPickedBy //################################################################################################## public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { return _isPickedBy(xx, yy, radius, objPick); } // For BallPoint and RingPoint, because Java doesn't allow super.super: protected KPoint _isPickedBy(float xx, float yy, float radius, boolean objPick) { float deltax, deltay; deltax = (x - xx); deltay = (y - yy); if((deltax*deltax + deltay*deltay) <= radius*radius) return this; else return null; } //}}} //{{{ equals, hashCode //################################################################################################## // These functions are for identifying points that occupy the same location in space. /** Tests two KPoints to see if they occupy the same space */ public boolean equals(Object obj) { if(obj == null || !(obj instanceof KPoint)) return false; KPoint p = (KPoint)obj; if(getX() == p.getX() && getY() == p.getY() && getZ() == p.getZ()) return true; else return false; } /** Generates a hashcode based on the coordinates of this point */ public int hashCode() { // I stole this from Colt: // this avoids excessive hashCollisions // in the case values are of the form (1.0, 2.0, 3.0, ...) int b1 = Float.floatToIntBits(x0*663608941.737f); int b2 = Float.floatToIntBits(y0*663608941.737f); int b3 = Float.floatToIntBits(z0*663608941.737f); // The rotation of bits is my own idea return (b1 ^ (b2<<11 | b2>>>21) ^ (b3<<22 | b3>>>10)); } //}}} //{{{ tmGet, tmPut, tmRemove //############################################################################## /** * Returns the value associated with the given key, * or null if this map does not contain that key. */ protected Object tmGet(int key) { int keyMap = this.multi & TINYMAP_AND; if(!TinyMap.contains(key, keyMap)) return null; else return tmValues[TinyMap.indexOf(key, keyMap)]; } /** * Associates a new value with key and returns the old value, * or null if none was set. */ protected Object tmPut(int key, Object value) { int keyMap = this.multi & TINYMAP_AND; int i = TinyMap.indexOf(key, keyMap); if(TinyMap.contains(key, keyMap)) { Object old = tmValues[i]; tmValues[i] = value; fireKinChanged(CHANGE_POINT_PROPERTIES); return old; } else { int tmValues_length = TinyMap.size(keyMap); //tmValues may be null! this.multi |= (1 << key) & TINYMAP_AND; Object[] newvals = new Object[tmValues_length+1]; for(int j = 0; j < i; j++) newvals[j] = tmValues[j]; newvals[i] = value; for(int j = i; j < tmValues_length; j++) newvals[j+1] = tmValues[j]; tmValues = newvals; fireKinChanged(CHANGE_POINT_PROPERTIES); return null; } } /** Removes the value for the given key, if present. */ protected Object tmRemove(int key) { int keyMap = this.multi & TINYMAP_AND; if(!TinyMap.contains(key, keyMap)) return null; int i = TinyMap.indexOf(key, keyMap); Object old = tmValues[i]; this.multi &= ~((1 << key) & TINYMAP_AND); Object[] newvals = new Object[tmValues.length-1]; for(int j = 0; j < i; j++) newvals[j] = tmValues[j]; for(int j = i+1; j < tmValues.length; j++) newvals[j-1] = tmValues[j]; tmValues = newvals; if(tmValues.length == 0) tmValues = null; // just to save space return old; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/points/RingPoint.java0000644000000000000000000001311311531212654020351 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.points; import king.core.*; import java.awt.*; import java.awt.geom.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * RingPoint represents a screen-oriented annulus around a particular point. * Ring size scales up and down like balls; i.e. it's a real size rather than a display size. * It implements Mage ringlists. * *

Begun on Sat Apr 27 11:02:02 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class RingPoint extends AbstractPoint // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## public float r0 = 0f, r = 0f; // radius ( r0 >= 0 => use list radius ) //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new data point representing a ring. * * @param label the pointID of this point */ public RingPoint(String label) { super(label); } //}}} //{{{ get/setRadius //################################################################################################## /** Sets the radius of this point, if applicable */ public void setRadius(float radius) { if(radius >= 0) r0 = radius; fireKinChanged(CHANGE_POINT_PROPERTIES); } public float getRadius() { return r0; } public float getDrawRadius() { return r; } //}}} //{{{ doTransform //################################################################################################## /** Rings require a zoom factor, so this throws UnsupportedOperationException */ public void doTransform(Engine engine, Transform xform) { throw new UnsupportedOperationException(this.getClass()+".doTransform() requires a zoom factor"); } public void doTransform(Engine engine, Transform xform, double zoom) { // Don't call super.doTransform() b/c we do it all here if(parent.getScreen()) { //Kinemage ancestor = getKinemage(); //float span = ancestor.getSpan(); double width = engine.pickingRect.getWidth(); double height = engine.pickingRect.getHeight(); if(r0 <= 0 && parent != null) r = (float)parent.getRadius() * (float)(Math.min(width,height) / 400.0); else r = r0 * (float)(Math.min(width,height) / 400.0); //System.err.println("scaled radius from "+r0+" to "+r+" for zoom "+zoom); super.doTransform(engine, xform, zoom); } else { if(r0 <= 0 && parent != null) r = (float)(parent.getRadius() * zoom); else r = (float)(r0 * zoom); //System.err.println("scaled radius from "+r0+" to "+r); xform.transform(this, engine.work1); setDrawXYZ(engine.work1); if(engine.usePerspective) { // multiply radius by perspDist/(perspDist - originalZ) // This is a very subtle effect -- barely notable. r *= (engine.perspDist) / (engine.perspDist - z); // This is the old code -- seems to be wrong. (031017) //r *= (engine.perspDist + z) / engine.perspDist; } // Can't handle (artificial) thickness cues here // b/c engine.widthCue isn't set yet. engine.addPaintable(this, z); // Rings don't do line shortening around them -- the point is to see the center. } } //}}} //{{{ isPickedBy //################################################################################################## public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { float dx, dy; dx = (x - xx); dy = (y - yy); //if( Math.abs( Math.sqrt(dx*dx + dy*dy) - r ) <= radius ) return this; float sqDist = (dx*dx + dy*dy); float minDist = r - radius; if(minDist > 0) minDist *= minDist; float maxDist = r + radius; maxDist *= maxDist; if(minDist <= sqDist && sqDist <= maxDist) return this; else return null; } //}}} //{{{ paint2D //################################################################################################## public void paint2D(Engine2D engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; int alpha = (parent == null ? 255 : parent.getAlpha()); Paint paint = maincolor.getPaint(engine.backgroundMode, 1, engine.colorCue, alpha); // For now we ignore the linewidth issue double d = 2*r; engine.painter.drawOval(paint, calcLineWidth(engine), engine.widthCue, x, y, z, d, d); } //}}} //{{{ calcLineWidth //################################################################################################## // Default way of finding the right line width to use, given the settings in the engine protected int calcLineWidth(Engine engine) { if(engine.thinLines) return 1; else if(parent != null) return parent.getWidth(); else return 2; } //}}} }//class king-2.21.120420/king/src/king/points/TrianglePoint.java0000644000000000000000000002217611531212654021230 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.points; import king.core.*; import java.awt.*; import java.awt.geom.*; import java.lang.Math; // (ARK Spring2010) //import java.io.*; //import java.text.*; //import java.util.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * TrianglePoint provides filled, shaded triangles for triangle lists and ribbon lists. * In a list of N points, there are N - 2 triangles: 1-2-3, 2-3-4, 3-4-5, etc. * *

Begun on Mon Jun 24 21:09:57 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class TrianglePoint extends AbstractPoint // implements ... { //{{{ Static fields //}}} //{{{ Variable definitions //################################################################################################## TrianglePoint from; //}}} //{{{ Constructors //################################################################################################## /** * Creates a new data point representing one point of a triangle. * * @param label the pointID of this point * @param start where this line is drawn from, or null if it's the starting point */ public TrianglePoint(String label, TrianglePoint start) { super(label); setPrev(start); } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform, double zoom) { // Don't call super.doTransform() b/c we do it all here xform.transform(this, engine.work1); setDrawXYZ(engine.work1); double triangleZ; if(from == null || from.from == null) triangleZ = z; //else triangleZ = (z + from.z + from.from.z)/3.0; // Sort by average of two backmost vertices (midpoint of back edge). // This helps for triangles "outlined" by vectors, because if the vectors will always // sort in front of or equal to the triangle, so if they come after the triangles // in the kinemage, they'll always be visible. Helps with e.g. protein ribbons. else { if(z < from.z) { if(from.z < from.from.z) triangleZ = (z + from.z)/2.0; else triangleZ = (z + from.from.z)/2.0; } else { if(z < from.from.z) triangleZ = (z + from.z)/2.0; else triangleZ = (from.z + from.from.z)/2.0; } } engine.addPaintable(this, triangleZ); } //}}} //{{{ isPickedBy //################################################################################################## public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { if(objPick && from != null && from.from != null) { // deliberately using transformed coordinates, b/c they're projected flat TrianglePoint A = this, B = from, C = from.from; // first, make sure this is really a triangle, i.e. A != B != C // otherwise, the signed area is always zero and it looks like we hit the edge if(!((A.x == B.x && A.y == B.y) || (B.x == C.x && B.y == C.y) || (C.x == A.x && C.y == A.y))) { // then, do Andrew Ban's nifty intersection test if(Builder.checkTriangle(xx, yy, A.x, A.y, B.x, B.y, C.x, C.y)) return this; // always this, so changing colors works as expected /*{ float dx, dy, dA, dB, dC; dx = xx - A.x; dy = yy - A.y; dA = dx*dx + dy*dy; dx = xx - B.x; dy = yy - B.y; dB = dx*dx + dy*dy; dx = xx - B.x; dy = yy - C.y; dC = dx*dx + dy*dy; if(dA <= dB && dA <= dC) return A; else if(dB <= dC) return B; else return C; }*/ } } return super.isPickedBy(xx, yy, radius, objPick); } //}}} //{{{ paint2D //################################################################################################## public void paint2D(Engine2D engine) { boolean onBackside = false; // (ARK Spring2010) boolean doBackside = false; if(parent.secondaryStructure!=null) if(parent.secondaryStructure.equals("alpha") && engine.ribbonSidesAlpha || parent.secondaryStructure.equals("beta") && engine.ribbonSidesBeta) { doBackside = true; } KPaint maincolor = getDrawingColor(engine); if(from == null || from.from == null || maincolor.isInvisible()) return; TrianglePoint A, B, C = from.from.from; TrianglePoint A2, B2, C2 = from.from; // for the other triangle in the pair, (ARK Spring2010) int colorCue = engine.colorCue; // If this is a ribbon list, color the triangles in pairs (code for dependent triangles) if((multi & SEQ_EVEN_BIT) != 0 && parent != null && parent.getType() == KList.RIBBON && C != null){ // added doBackside (ARK Spring2010) A = from; B = from.from; // C = from.from.from; -- already set A2 = this; // (ARK Spring2010) B2 = from; // (ARK Spring2010) // We must match depth cueing AND lighting angle if we want ribbons to look uniform // This is a huge pain in the butt -- code derived from doTransform(). double triangleZ; if(A.z < B.z) { if(B.z < C.z) triangleZ = (A.z + B.z)/2.0; else triangleZ = (A.z + C.z)/2.0; } else { if(A.z < C.z) triangleZ = (A.z + B.z)/2.0; else triangleZ = (B.z + C.z)/2.0; } // wrong, too simple: //colorCue = (int)Math.floor(KPaint.COLOR_LEVELS * (triangleZ - engine.clipBack) / engine.clipDepth); // right, multiple round off: int i = (int)(engine.TOP_LAYER*(triangleZ-engine.clipBack)/engine.clipDepth); colorCue = (KPaint.COLOR_LEVELS*i)/(engine.TOP_LAYER+1); // int division (floor) if(colorCue < 0) colorCue = 0; else if(colorCue >= KPaint.COLOR_LEVELS) colorCue = KPaint.COLOR_LEVELS-1; } // Otherwise, color each triangle individually (also independent triangles in ribbons) else { A = this; B = from; C = from.from; //colorCue = engine.colorCue; -- already set A2 = null; // (ARK Spring2010) B2 = null; // (ARK Spring2010) } // Do dot product of surface normal with lighting vector // to determine diffuse lighting. //engine.work1.likeVector(B, A); engine.work1.setXYZ( A.getDrawX()-B.getDrawX(), A.getDrawY()-B.getDrawY(), A.getDrawZ()-B.getDrawZ() ); //engine.work2.likeVector(B, C); engine.work2.setXYZ( C.getDrawX()-B.getDrawX(), C.getDrawY()-B.getDrawY(), C.getDrawZ()-B.getDrawZ() ); engine.work1.cross(engine.work2).unit(); double dotprod = engine.work1.dot(engine.lightingVector); int alpha = (parent == null ? 255 : parent.getAlpha()); Paint paint = maincolor.getPaint(engine.backgroundMode, dotprod, colorCue, alpha); // Ribbon backside considerations, (ARK Spring2010) // Look at pair of triangles separately if(doBackside && (multi & SEQ_EVEN_BIT) != 0 && parent != null && parent.getType() == KList.RIBBON && C2 != null){ engine.work1.setXYZ( A2.getDrawX()-B2.getDrawX(), A2.getDrawY()-B2.getDrawY(), A2.getDrawZ()-B2.getDrawZ() ); engine.work2.setXYZ( C2.getDrawX()-B2.getDrawX(), C2.getDrawY()-B2.getDrawY(), C2.getDrawZ()-B2.getDrawZ() ); engine.work1.cross(engine.work2).unit(); // surface normal of other triangle in pair if(engine.work1.getZ()<=0.001) onBackside = true; } else if( doBackside ) if(engine.work1.getZ()>=0.001) onBackside = true; if(doBackside && onBackside) { if(parent.getSecStruc().equals("alpha")) paint = maincolor.getOffsetPaint(engine.curBackHSValpha, engine.backgroundMode, dotprod, colorCue, alpha); else if(parent.getSecStruc().equals("beta")) paint = maincolor.getOffsetPaint(engine.curBackHSVbeta, engine.backgroundMode, dotprod, colorCue, alpha); else {} // revert to leaving the paint unchanged } // end backside engine.painter.paintTriangle(paint, x, y, z, from.x, from.y, from.z, from.from.x, from.from.y, from.from.z ); } //}}} //{{{ get/setPrev, isBreak //################################################################################################## public void setPrev(KPoint pt) { super.setPrev(pt); from = (TrianglePoint)pt; } public TrianglePoint getPrev() { return from; } public boolean isBreak() { return (from == null); } //}}} }//class king-2.21.120420/king/src/king/points/DotPoint.java0000644000000000000000000000444711531212654020212 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.points; import king.core.*; import java.awt.*; import java.awt.geom.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * DotPoint represents a contact dot or other small point. * These dots are not depth-cued by size, though the size can be set at time of creation. * "Dots" are actually square, so a radius between 1 and 3 is probably desireable. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 2 12:57:57 EDT 2002 */ public class DotPoint extends AbstractPoint // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new data point representing a "dot". * * @param label the pointID of this point */ public DotPoint(String label) { super(label); } //}}} //{{{ paint2D //################################################################################################## public void paint2D(Engine2D engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; Paint paint = maincolor.getPaint(engine.backgroundMode, engine.colorCue); int width = calcLineWidth(engine); engine.painter.paintDot(paint, x, y, z, width); } //}}} //{{{ calcLineWidth //################################################################################################## // Default way of finding the right line width to use, given the settings in the engine // Dots never do depth cueing by width, because big square dots look crappy. protected int calcLineWidth(Engine engine) { if(engine.thinLines) return 1; else if(parent != null) return parent.getWidth(); else return 2; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/points/BallPoint.java0000644000000000000000000000647211531212654020336 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.points; import king.core.*; import java.awt.*; import java.awt.geom.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * BallPoint represents a 3-D sphere. * It implements Mage balllists. * *

Begun on Sat Apr 27 11:02:02 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class BallPoint extends RingPoint // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new data point representing a ball. * * @param label the pointID of this point */ public BallPoint(String label) { super(label); } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform, double zoom) { // RingPoint signal transform handles most stuff super.doTransform(engine, xform, zoom); // We still need to ask for line shortening, though // Otherwise we create gaps around lines when our pointmaster is off. // If ball is translucent, we should see line going to its center (?) if(!this.getDrawingColor(engine).isInvisible() && (parent == null || parent.getAlpha() > 192)) engine.addShortener(this, r); } //}}} //{{{ isPickedBy //################################################################################################## public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { // We have this goofy call to the AbstractPoint implementation // because Java doesn't allow super.super.foo() return _isPickedBy(xx, yy, Math.max(radius, r), objPick); // Balls should always act in "object pick" mode //if(objPick) return super.isPickedBy(xx, yy, Math.max(radius, r), objPick); //else return super.isPickedBy(xx, yy, radius, objPick); } //}}} //{{{ paint2D //################################################################################################## public void paint2D(Engine2D engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; int alpha = (parent == null ? 255 : parent.getAlpha()); Paint paint = maincolor.getPaint(engine.backgroundMode, 1, engine.colorCue, alpha); // We *can* do extra depth cueing hints for balls, but I prefer not to. // It works for small, isolated balls (e.g. waters), but it is confusing // and downright misleading when many balls are close together, because // the sizes of the balls are consistently and substantially inflated. // // We have to do this here b/c now widthCue is set //if(engine.cueThickness) r *= KPalette.widthScale[ engine.widthCue ]; engine.painter.paintBall(paint, x, y, z, r, !parent.getNoHighlight()); } //}}} }//class king-2.21.120420/king/src/king/points/SpherePoint.java0000644000000000000000000001035111531212654020701 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.points; import king.core.*; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * SpherePoint is like a BallPoint, except it renders a whole stack * of disks like Mage does for @spherelists. * This leads to a much more believable appearance in the case of spheres * that intersect other solid objects, like each other! * *

Copyright (C) 2004-2007 by Ian W. Davis. All rights reserved. *
Begun on Mon Oct 18 10:26:11 EDT 2004 */ public class SpherePoint extends BallPoint { //{{{ Constants static final int N_DISKS = 16; static final double[] sin = new double[N_DISKS]; static final double[] cos = new double[N_DISKS]; static { // Sin is fwd offset from largest disk, moving toward viewer. // Sin spacing is such that disk spacing is equal. // Cos is for scaling disk radius. for(int i = 0; i < N_DISKS; i++) { sin[i] = (double)i/(double)N_DISKS; cos[i] = Math.sqrt(1.0 - sin[i]*sin[i]); } } //}}} //{{{ CLASS: DiskProxyPoint //############################################################################## /** * DiskProxyPoint is used to represent one disk in the stack for drawing and * picking purposes only. */ public static class DiskProxyPoint extends ProxyPoint { int diskLevel; protected DiskProxyPoint(BallPoint proxyFor, int diskLevel) { super(proxyFor); this.diskLevel = diskLevel; } /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paint2D(Engine2D engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; // Don't use alpha, b/c it won't look right for stacked disks Paint paint = maincolor.getPaint(engine.backgroundMode, SpherePoint.sin[diskLevel], engine.colorCue, 255); double r = SpherePoint.cos[diskLevel] * ((BallPoint)proxyFor).r; engine.painter.paintSphereDisk(paint, getDrawX(), getDrawY(), getDrawZ(), r); } } //}}} //{{{ Variable definitions //############################################################################## DiskProxyPoint[] proxies; //}}} //{{{ Constructor(s) //############################################################################## public SpherePoint(String label) { super(label); // Need one less b/c "this" acts as the base layer this.proxies = new DiskProxyPoint[N_DISKS-1]; for(int i = 1; i < N_DISKS; i++) { this.proxies[i-1] = new DiskProxyPoint(this, i); } } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform, double zoom) { super.doTransform(engine, xform, zoom); // "this" has already been added at i == 0 for(int i = 1; i < N_DISKS; i++) { engine.addPaintable(proxies[i-1], z + sin[i]*r); } } //}}} //{{{ paint2D //############################################################################## public void paint2D(Engine2D engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; // Don't use alpha, b/c it won't look right for stacked disks Paint paint = maincolor.getPaint(engine.backgroundMode, 0, engine.colorCue, 255); // Can't do depth cueing by width -- causes really weird problems!! // // We have to do this here b/c now widthCue is set //if(engine.cueThickness) r *= KPalette.widthScale[ engine.widthCue ]; engine.painter.paintSphereDisk(paint, x, y, z, r); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/points/ArrowPoint.java0000644000000000000000000001510611531212654020550 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.points; import king.core.*; import java.awt.*; import java.awt.geom.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * ArrowPoint represents the endpoint of a line * and has an arrowhead on it. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Fri Apr 26 16:46:09 EDT 2002 */ public class ArrowPoint extends VectorPoint // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new data point representing one end of a line. * * @param label the pointID of this point * @param start where this line is drawn from, or null if it's the starting point */ public ArrowPoint(String label, VectorPoint start) { super(label, start); } //}}} //{{{ paintStandard2 //################################################################################################## /** * This function exists solely for the convenience of ArrowPoints; * a good JIT will optimize it away for VectorPoints. * Coordinates are already transformed, perspective corrected, and clipped by Z planes. * They have NOT been clipped to the drawing area yet. */ protected void paintStandard2(Engine2D engine, Paint paint, double fromX, double fromY, double fromZ, double toX, double toY, double toZ) { int lineWidth = calcLineWidth(engine); // Arrow tines are faked at the real "to" endpoint OR at the edge of the screen. // Each tine is a vector with a component perpedicular to the arrow body and a component parallel. // The parallel is foreshortened by the dot product of the body with <0,0,1>; // the perpendicular is unchanged, which keeps the arrow "facing" the screen as much as possible. // Perspective effects are ignored b/c the arrowheads are small. double tinePerp = 10, tinePar = 20; // in pixels if(parent != null) { // Yes, these calculations are not dirt cheap. // But no sensible kinemage has more than a few hundred arrows in it, tops. // So the total cost for repeating this calc for every arrow in the list is small. double angle = Math.toRadians( parent.getAngle() ); double radius = parent.getRadius(); tinePerp = (float)(radius * Math.sin(angle) * engine.zoom3D); tinePar = (float)(radius * Math.cos(angle) * engine.zoom3D); } // Unit vector from arrow head toward arrow tail engine.work1.setXYZ( fromX-toX, fromY-toY, fromZ-toZ ); if(engine.work1.mag2() < 1e-10) engine.work1.setXYZ(0,0,1); else engine.work1.unit(); // Z vector and dot product (for foreshortening of tines) engine.work2.setXYZ(0,0,1); tinePar *= 1 - Math.abs( engine.work2.dot(engine.work1) ); // Unit vector from arrow head toward arrow tail, in the plane of the screen! engine.work1.setXYZ( fromX-toX, fromY-toY, 0 ); if(engine.work1.mag2() < 1e-10) engine.work1.setXYZ(1,0,0); else engine.work1.unit(); // "To" ends of the line (where arrow head is drawn) must be clipped to // the edges of the screen so we can see outbound arrows when zoomed in. // This code ignores Z, which is why we calc'd foreshortening first. // We use the Cohen-Sutherland algorithm for clipping a line to a box. // Int flags represent being out of bounds on each of four sides: final int LEFT = 1, RIGHT = 2, BOTTOM = 4, TOP = 8; final double xmin = engine.pickingRect.x, ymin = engine.pickingRect.y; final double xmax = xmin+engine.pickingRect.width, ymax = ymin+engine.pickingRect.height; int toOutcode = 0, fromOutcode = 0; if(toX < xmin) toOutcode |= LEFT; else if(toX > xmax) toOutcode |= RIGHT; if(toY < ymin) toOutcode |= TOP; else if(toY > ymax) toOutcode |= BOTTOM; if(fromX < xmin) fromOutcode |= LEFT; else if(fromX > xmax) fromOutcode |= RIGHT; if(fromY < ymin) fromOutcode |= TOP; else if(fromY > ymax) fromOutcode |= BOTTOM; // If outcode is zero, the point is inside the clipping region. // If the AND of the outcodes is nonzero, thw whole line is outside the clipping region. if(toOutcode != 0 && (toOutcode & fromOutcode) == 0) { //paint = Color.red; if(toX < xmin) { toY = fromY + (toY-fromY)*(xmin-fromX)/(toX-fromX); toX = xmin; } else if(toX > xmax) { toY = fromY + (toY-fromY)*(xmax-fromX)/(toX-fromX); toX = xmax; } // Even though we've corrected the side-to-side clipping, // the top-to-bottom clipping may also need work // (e.g. if we're projecting out thru a corner of the canvas) if(toY < ymin) { toX = fromX + (toX-fromX)*(ymin-fromY)/(toY-fromY); toY = ymin; } else if(toY > ymax) { toX = fromX + (toX-fromX)*(ymax-fromY)/(toY-fromY); toY = ymax; } } // (-y,x) and (y,-x) are orthogonal to (x,y) // x and y offsets each have components from perpedicular and parallel. double dx, dy; dx = tinePar*engine.work1.getX() - tinePerp*engine.work1.getY(); dy = tinePar*engine.work1.getY() + tinePerp*engine.work1.getX(); engine.painter.paintVector(paint, lineWidth, engine.widthCue, toX, toY, toZ, toX+dx, toY+dy, toZ); dx = tinePar*engine.work1.getX() + tinePerp*engine.work1.getY(); dy = tinePar*engine.work1.getY() - tinePerp*engine.work1.getX(); engine.painter.paintVector(paint, lineWidth, engine.widthCue, toX, toY, toZ, toX+dx, toY+dy, toZ); // Main arrow body engine.painter.paintVector(paint, lineWidth, engine.widthCue, fromX, fromY, fromZ, toX, toY, toZ); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/points/LabelPoint.java0000644000000000000000000000612511531212654020476 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.points; import king.core.*; import java.awt.*; //import java.io.*; //import java.text.*; //import java.util.*; //import javax.swing.*; //}}} /** * LabelPoint implements a floating label at some point in space. * *

Begun on Mon Jun 24 21:09:57 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class LabelPoint extends AbstractPoint // implements ... { //{{{ Static fields public static final int LEFT = 0; public static final int CENTER = 0x00800000; public static final int RIGHT = 0x00400000; public static final int HALIGN_MASK = ~(CENTER | RIGHT); //}}} //{{{ Variable definitions //################################################################################################## int minx = 0, miny = 0, maxx = 0, maxy = 0; //}}} //{{{ Constructors //################################################################################################## /** * Creates a new data point representing a label. * * @param label the pointID of this point */ public LabelPoint(String label) { super(label); } //}}} //{{{ paint2D //################################################################################################## public void paint2D(Engine2D engine) { KPaint maincolor = getDrawingColor(engine); if(maincolor.isInvisible()) return; Paint paint = maincolor.getPaint(engine.backgroundMode, engine.colorCue); String labelText = this.toString(); if(labelText == null) return; int width, ascent, descent; width = engine.painter.getLabelWidth(labelText); ascent = engine.painter.getLabelAscent(labelText); descent = engine.painter.getLabelDescent(labelText); maxy = (int)y + descent; // screen coords: big y is down miny = (int)y - ascent; // " if((multi & CENTER) != 0) { minx = (int)x - width/2; } else if((multi & RIGHT) != 0) { minx = (int)x - width; } else { minx = (int)x; } maxx = minx + width; engine.painter.paintLabel(paint, this.toString(), minx, y, z); } //}}} //{{{ alignment functions //################################################################################################## public void setHorizontalAlignment(int align) { multi = (multi & HALIGN_MASK) | align; fireKinChanged(CHANGE_POINT_PROPERTIES); } //}}} //{{{ isPickedBy //################################################################################################## public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { // Labels should always act in "object pick" mode //if(objPick && minx <= xx && xx <= maxx && miny <= yy && yy <= maxy) if(minx <= xx && xx <= maxx && miny <= yy && yy <= maxy) return this; else return super.isPickedBy(xx, yy, radius, objPick); } //}}} }//class king-2.21.120420/king/src/king/points/ProxyPoint.java0000644000000000000000000002705311531212654020603 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.points; import king.core.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * ProxyPoint implements all the functions of KPoint by delegating * them to another KPoint. * *

Copyright (C) 2004-2007 by Ian W. Davis. All rights reserved. *
Begun on Mon Oct 18 09:33:32 EDT 2004 */ class ProxyPoint implements KPoint { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## KPoint proxyFor; //}}} //{{{ Constructor(s) //############################################################################## public ProxyPoint(KPoint proxyFor) { super(); this.proxyFor = proxyFor; } //}}} //{{{ clone //################################################################################################## public KPoint clone() { return proxyFor.clone(); } //}}} //{{{ get/setX/Y/Z //################################################################################################## /** Returns the untransformed coordinate for this point */ public double getX() { return proxyFor.getX(); } /** Returns the untransformed coordinate for this point */ public double getY() { return proxyFor.getY(); } /** Returns the untransformed coordinate for this point */ public double getZ() { return proxyFor.getZ(); } /** Assigns a value to the untransformed coordinate for this point */ public void setX(double xx) { proxyFor.setX(xx); } /** Assigns a value to the untransformed coordinate for this point */ public void setY(double yy) { proxyFor.setY(yy); } /** Assigns a value to the untransformed coordinate for this point */ public void setZ(double zz) { proxyFor.setZ(zz); } /** Assigns a value to the untransformed coordinates for this point */ public void setXYZ(double xx, double yy, double zz) { proxyFor.setXYZ(xx, yy, zz); } //}}} //{{{ get/setDrawX/Y/Z //################################################################################################## /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawX() { return proxyFor.getDrawX(); } /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawY() { return proxyFor.getDrawY(); } /** Returns the fully transformed (drawing) coordinate for this point */ public float getDrawZ() { return proxyFor.getDrawZ(); } //}}} //{{{ get/setAllCoords, useCoordsXYZ //################################################################################################## /** * Stores an array of coordinates for "high-dimensional" points. * The float[] is stored without cloning and so is subject to overwrite. */ public void setAllCoords(float[] coords) { proxyFor.setAllCoords(coords); } /** * Retrieves the "high-dimensional" coordinates of this point, or null if not set. * The float[] is returned without cloning and so is subject to overwrite. */ public float[] getAllCoords() { return proxyFor.getAllCoords(); } /** * Copies the high-dimensional coordinates at the specified indices * into this point's (untransformed) X, Y, and Z fields. * If a index is out of range (0-based), it is ignored and the value is not changed. */ public void useCoordsXYZ(int xIndex, int yIndex, int zIndex) { proxyFor.useCoordsXYZ(xIndex, yIndex, zIndex); } //}}} //{{{ get/setPrev, isBreak //################################################################################################## /** * Sets the point that precedes this one. * This matters to "chainable" points, like vectors and triangles. * For other points, it does nothing. * @param pt the point preceding this one in seqence */ public void setPrev(KPoint pt) { proxyFor.setPrev(pt); } /** * Gets the point preceding this one in the chain. * @return the preceding point, or null if (a) this is a break in the chain or (b) this is not a chainable point type. */ public KPoint getPrev() { return proxyFor.getPrev(); } /** * True iff this is a chainable point type (e.g. vector, triangle) AND there is a chain break. */ public boolean isBreak() { return proxyFor.isBreak(); } //}}} //{{{ is/get/set{On, Unpickable, Ghost, Color, Aspects, Width, Radius, Comment} //################################################################################################## /** Indicates whether this element will paint itself, given the chance */ public boolean isOn() { return proxyFor.isOn(); } /** Sets the painting status of this element */ public void setOn(boolean paint) { proxyFor.setOn(paint); } /** Indicates whether this point can be picked with the mouse */ public boolean isUnpickable() { return proxyFor.isUnpickable(); } /** Sets the picking status of this point */ public void setUnpickable(boolean b) { proxyFor.setUnpickable(b); } /** Indicates whether this point is a "ghost" for Mage */ public boolean isGhost() { return proxyFor.isGhost(); } /** Sets the ghost status of this point */ public void setGhost(boolean b) { proxyFor.setGhost(b); } /** Returns the color of this point, or null if it inherits from its list */ public KPaint getColor() { return proxyFor.getColor(); } /** Sets the color of this point. */ public void setColor(KPaint c) { proxyFor.setColor(c); } /** Gets the aspect string of this point */ public String getAspects() { return proxyFor.getAspects(); } /** Sets the aspect string of this point */ public void setAspects(String a) { proxyFor.setAspects(a); } /** Gets the line width of this point, if applicable */ public int getWidth() { return proxyFor.getWidth(); } /** Sets the line width of this point, if applicable */ public void setWidth(int w) { proxyFor.setWidth(w); } /** Gets the radius of this point, if applicable */ public float getRadius() { return proxyFor.getRadius(); } /** Sets the radius of this point, if applicable */ public void setRadius(float radius) { proxyFor.setRadius(radius); } /** Sets the point comment for this point. */ public void setComment(String cmt) { proxyFor.setComment(cmt); } /** Gets the comment for this point, which defaults to null. */ public String getComment() { return proxyFor.getComment(); } //}}} //{{{ getDrawingColor //################################################################################################## /** Returns the color that will be used to draw this point (ignoring aspects). Never null. */ public KPaint getDrawingColor() { return proxyFor.getDrawingColor(); } /** Returns the color that will be used to draw this point, taking aspects into account. Never null. */ public KPaint getDrawingColor(Engine engine) { return proxyFor.getDrawingColor(engine); } //}}} //{{{ pmHit, pmWouldHit, get/setPmMask //################################################################################################## /** * Processes a pointmaster on/off request. * @param mask the bitmask indicating which masters are being turned on/off * @param offmask the bitmask indicating which masters are already off * @param turnon true if affected points are to be turned on, * false if affected points are to be turned off. */ public void pmHit(int mask, int offmask, boolean turnon) { proxyFor.pmHit(mask, offmask, turnon); } /** Indicates whether or not the given pointmaster set would affect this point. */ public boolean pmWouldHit(int mask) { return proxyFor.pmWouldHit(mask); } public int getPmMask() { return proxyFor.getPmMask(); } public void setPmMask(int mask) { proxyFor.setPmMask(mask); } //}}} //{{{ calcBoundingBox, calcRadiusSq //################################################################################################## /** * Gets a bounding box for the current model. * @param bound the first 6 elements get set to { minX, minY, minZ, maxX, maxY, maxZ }. * Should be called with { +inf, +inf, +inf, -inf, -inf, -inf } */ public void calcBoundingBox(float[] bound) { proxyFor.calcBoundingBox(bound); } /** * Gets the square of the radius of this model from the specified center. * @param center an array with the x, y, and z coordinates of the center * @return the square of the radius of this element, centered at center */ public float calcRadiusSq(float[] center) { return proxyFor.calcRadiusSq(center); } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform) { proxyFor.doTransform(engine, xform); } public void doTransform(Engine engine, Transform xform, double zoom) { proxyFor.doTransform(engine, xform, zoom); } //}}} //{{{ paint2D, isPickedBy //################################################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paint2D(Engine2D engine) { proxyFor.paint2D(engine); } /** * Returns true if the specified pick hits this point, else returns false * Pays no attention to whether this point is marked as unpickable. * @param radius the desired picking radius * @param objPick whether we should try to pick solid objects in addition to points * @return the KPoint that should be counted as being picked, or null for none. * Usually this, but maybe not for object picking. */ public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { return proxyFor.isPickedBy(xx, yy, radius, objPick); } //}}} //{{{ get/setName, get/setOwner, toString //################################################################################################## /** Gets the name of this element */ public String getName() { return proxyFor.getName(); } /** Sets the name of this element */ public void setName(String nm) { proxyFor.setName(nm); } /** Determines the owner (parent) of this element */ public KList getParent() { return proxyFor.getParent(); } /** Establishes the owner (parent) of this element */ public void setParent(KList owner) { proxyFor.setParent(owner); } /** Gets the name of this element (same as getName()*/ public String toString() { return proxyFor.toString(); } //}}} //{{{ getKinemage, getDepth, fireKinChanged //################################################################################################## /** Retrieves the Kinemage object holding this element, or null if none. */ public Kinemage getKinemage() { return proxyFor.getKinemage(); } public int getDepth() { return proxyFor.getDepth(); } public void fireKinChanged(int event) { proxyFor.fireKinChanged(event); } //}}} //{{{ isVisible //################################################################################################## /** Indicates whether this element will actually be painted (i.e., is it and all its parents on?) */ public boolean isVisible() { return proxyFor.isVisible(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/KinCanvas.java0000644000000000000000000005051411677352606017024 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import king.painters.*; import java.awt.*; import java.awt.event.*; import java.awt.geom.*; import java.awt.print.*; //import java.io.*; import java.lang.reflect.*; import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.*; import java.util.List; //}}} /** * KinCanvas is the display surface for the 3-D model. * *

Begun on Mon Apr 22 17:19:48 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class KinCanvas extends JComponent implements KMessage.Subscriber, Transformable, ChangeListener, Printable { //{{{ Static fields static final double LOG_2 = Math.log(2.0); static final int SLIDER_SCALE = 16; public static final int QUALITY_GOOD = 0; public static final int QUALITY_BETTER = 1; public static final int QUALITY_BEST = 2; public static final int QUALITY_JOGL = 10; //}}} //{{{ Variables //################################################################################################## KingMain kMain = null; Engine2D engine = null; ToolBox toolbox = null; StandardPainter goodPainter = new StandardPainter(false); StandardPainter betterPainter = new StandardPainter(true); HighQualityPainter bestPainter = new HighQualityPainter(true); Component joglCanvas = null; ReflectiveAction joglAction = null; DefaultBoundedRangeModel zoommodel = null; DefaultBoundedRangeModel clipmodel = null; Image logo = null; int renderQuality = QUALITY_GOOD; boolean writeFPS; String currViewKey; String currAspectKey; //}}} //{{{ Constructor //################################################################################################## /** * Creates a new drawing surface that displays the given set of visible lists. * * @param kmain the program instance that owns this canvas */ public KinCanvas(KingMain kmain) { super(); kMain = kmain; this.currViewKey = this.getClass().getName()+"@"+System.identityHashCode(this)+".current_view"; this.currAspectKey = this.getClass().getName()+"@"+System.identityHashCode(this)+".current_aspect"; // Set default graphics mode for OS X // This partly compensates for broken graphics primitives // on Mac implementations through at least 1.4.1... try { String os = System.getProperty("os.name").toLowerCase(); if(os.indexOf("mac") != -1 || os.indexOf("apple") != -1) renderQuality = QUALITY_BETTER; } catch(SecurityException ex) { SoftLog.err.println(ex.getMessage()); } // Determine the screen size: Rectangle screenBounds = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration().getBounds(); int screenSize = (3*Math.min(screenBounds.width, screenBounds.height)) / 4; Props props = kMain.getPrefs(); Dimension canvasSize = new Dimension(screenSize, screenSize); Dimension minCanvasSize = new Dimension(200, 200); if(props.hasProperty("graphicsWidth" ) && props.getInt("graphicsWidth") >= minCanvasSize.width) canvasSize.width = props.getInt("graphicsWidth"); if(props.hasProperty("graphicsHeight") && props.getInt("graphicsHeight") >= minCanvasSize.height) canvasSize.height = props.getInt("graphicsHeight"); writeFPS = props.getBoolean("writeFPS", false); // This will be overriden in KingMain if we're a // webpage-embedded applet setPreferredSize(canvasSize); setMinimumSize(minCanvasSize); setOpaque(true); zoommodel = new DefaultBoundedRangeModel(0, 0, -3*SLIDER_SCALE, 7*SLIDER_SCALE); zoommodel.addChangeListener(this); clipmodel = new DefaultBoundedRangeModel(200, 0, 0, 800); clipmodel.addChangeListener(this); engine = new Engine2D(); updatePrefs(engine, props); logo = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("images/king-logo.gif")); toolbox = new ToolBox(kMain, this); toolbox.listenTo(this); // If we do this here, everything JOGL needs is already created. I think. // It seems to work, at least, which isn't true if this code comes earlier! if(kMain.getPrefs().getBoolean("joglByDefault")) { try { //SoftLog.err.println("Trying to init OpenGL..."); //this.setQuality(QUALITY_JOGL); -- generates an error dialog this.loadJOGL(); this.renderQuality = QUALITY_JOGL; } catch(Throwable t) {}//{ t.printStackTrace(SoftLog.err); } } // Java 1.4+ only! - adds support for Drag & Drop to the canvas kMain.getFileDropHandler().handleDropsFor(this); kMain.subscribe(this); } //}}} //{{{ updatePrefs, syncToKin //################################################################################################## void updatePrefs(Engine2D engine, Props prefs) { engine.setPickingRadius( prefs.getDouble("pickingRadius") ); engine.useObjPicking = prefs.getBoolean("pickObjects"); engine.stereoRotation = (float)Math.toRadians(prefs.getDouble("stereoAngle")); engine.bigFont = new Font("SansSerif", Font.PLAIN, prefs.getInt("fontSizeBig")); engine.smallFont = new Font("SansSerif", Font.PLAIN, prefs.getInt("fontSizeSmall")); } /** Takes needed display settings from the kinemage */ public void syncToKin(Engine engine, Kinemage kin) { engine.usePerspective = kin.atPerspective; engine.cueThickness = ! kin.atOnewidth; engine.thinLines = kin.atThinline; engine.whiteBackground = kin.atWhitebackground; engine.colorByList = kin.atListcolordominant; engine.ribbonSidesAlpha = kin.atSidedcoloringAlpha; // (ARK Spring2010) engine.ribbonSidesBeta = kin.atSidedcoloringBeta; // (ARK Spring2010) Aspect a = this.getCurrentAspect(); if(a == null) engine.activeAspect = 0; else engine.activeAspect = a.getIndex().intValue(); } //}}} //{{{ deliverMessage //################################################################################################## public void deliverMessage(KMessage msg) { // Notify children Kinemage kin = kMain.getKinemage(); if(engine != null) { if(msg.testProg(KMessage.PREFS_CHANGED)) updatePrefs(engine, kMain.getPrefs()); if(msg.testProg(KMessage.KIN_CLOSED | KMessage.ALL_CLOSED)) engine.flushZBuffer(); // prevents memory leaks if(kin != null && msg.testProg(KMessage.KIN_SWITCHED)) syncToKin(engine, kin); } //if(toolbox != null) toolbox.notifyChange(event_mask); // Take care of yourself this.repaint(); KView view = kMain.getView(); if(view != null && msg.testProg(KMessage.KIN_SWITCHED | KMessage.VIEW_SELECTED)) { double viewspan = view.getSpan(); double kinspan = kMain.getKinemage().getSpan(); zoommodel.setValue((int)Math.round((double)SLIDER_SCALE * Math.log(kinspan/viewspan) / LOG_2)); clipmodel.setValue((int)(view.getClip() * 200.0)); } } //}}} //{{{ painting //################################################################################################## /** Override of JPanel.paintComponent -- wrapper for paintCanvas. */ protected void paintComponent(Graphics g) { Graphics2D g2 = (Graphics2D)g; paintCanvas(g2, this.getSize(), renderQuality); } /** Does the rendering, with Engine.render() doing most of the real work. */ public void paintCanvas(Graphics2D g2, Dimension dim, int quality) { /* A quick query for analyzing graphics performance java.awt.image.VolatileImage vi = createVolatileImage(getWidth(), getHeight()); if(vi != null) { ImageCapabilities ic = vi.getCapabilities(); SoftLog.err.println("isAccelerated = "+ic.isAccelerated()+"; isTrueVolatile = "+ic.isTrueVolatile()); }*/ Kinemage kin = kMain.getKinemage(); if(kin == null) { g2.setColor(Color.black); g2.fillRect(0, 0, dim.width, dim.height); if(logo != null) g2.drawImage(logo, (dim.width-logo.getWidth(this))/2, (dim.height-logo.getHeight(this))/2, this); if(kMain.getPrefs().newerVersionAvailable()) announceNewVersion(g2); } // This is not the usual way in which the JOGL canvas is redrawn, // and in fact, it may NEVER get called any more because the actual // KinCanvas object is never displayed while the JOGL canvas is. else if(quality >= QUALITY_JOGL && joglAction != null) joglAction.actionPerformed(null); else { Painter painter = null; if(quality == QUALITY_BETTER) { betterPainter.setGraphics(g2); painter = betterPainter; } else if(quality == QUALITY_BEST) { bestPainter.setGraphics(g2); painter = bestPainter; } else //(quality == QUALITY_GOOD) { goodPainter.setGraphics(g2); painter = goodPainter; } long timestamp = System.currentTimeMillis(); KView view = getCurrentView(); Rectangle bounds = new Rectangle(dim); syncToKin(engine, kin); engine.render(this, view, bounds, painter); if(toolbox != null) toolbox.overpaintCanvas(painter); timestamp = System.currentTimeMillis() - timestamp; if(writeFPS) SoftLog.err.println(timestamp+" ms ("+(timestamp > 0 ? Long.toString(1000/timestamp) : ">1000") +" FPS) - "+engine.getNumberPainted()+" objects painted"); } } //}}} //{{{ announceNewVersion //################################################################################################## void announceNewVersion(Graphics2D g2) { String msg = "A new version of KiNG is now available"; Dimension d = this.getSize(); Font font = new Font("SansSerif", Font.BOLD, 16); g2.setFont(font); g2.setColor(Color.white); FontMetrics metrics = g2.getFontMetrics(); Rectangle2D r = metrics.getStringBounds(msg, g2); g2.drawString(msg, (d.width - (int)r.getWidth())/2, (d.height - (int)r.getHeight())/2 + 210); } //}}} //{{{ printing //################################################################################################## /** * Printer callback -- calls KingRenderingEngine to do the real work. * This code was copied directly from paintComponent */ public int print(Graphics g, PageFormat format, int pageindex) { Graphics2D g2 = (Graphics2D)g; Dimension dim = getCanvasSize(); Kinemage kin = kMain.getKinemage(); if(kin == null || pageindex > 0) return NO_SUCH_PAGE; else { KView view = getCurrentView(); // Scale the paper to match the graphics window: double scale = Math.min( (double)(format.getImageableWidth() / dim.width), (double)(format.getImageableHeight()/dim.height) ); g2.scale(scale, scale); g2.setClip((int)(format.getImageableX()/scale), (int)(format.getImageableY()/scale), dim.width, dim.height); Rectangle bounds = new Rectangle(dim); bounds.setLocation((int)(format.getImageableX()/scale), (int)(format.getImageableY()/scale)); syncToKin(engine, kin); bestPainter.setGraphics(g2); engine.render(this, view, bounds, bestPainter); if(toolbox != null) toolbox.overpaintCanvas(bestPainter); return PAGE_EXISTS; } } //}}} //{{{ doTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.doTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void doTransform(Engine engine, Transform xform) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.doTransform(engine, xform); if(toolbox != null) toolbox.doTransform(engine, xform); } //}}} //{{{ get/set functions //################################################################################################## public BoundedRangeModel getZoomModel() { return zoommodel; } public BoundedRangeModel getClipModel() { return clipmodel; } /** Returns a button that arms the pick-center function */ public Component getPickcenterButton() { return toolbox.services.doPickcenter; } /** Returns a button that shows markers */ public Component getMarkersButton() { return toolbox.services.doMarkers; } /** The size of the drawing surface (!= this.getSize() in OpenGL mode) */ public Dimension getCanvasSize() { return engine.getCanvasSize(); }; /** Returns the drawing engine this canvas uses for rendering. */ public Engine2D getEngine() { return engine; } /** Returns the toolbox used for interacting with this canvas. */ public ToolBox getToolBox() { return toolbox; } /** Sets the rendering quality to one of the QUALITY_XXX constants */ public void setQuality(int q) { renderQuality = q; // JOGL canvas is reusable in some situations but not others: // eg it crashes on FC2 with Java 1.5. For some reason, we must set the // graphics component here -- it doesn't work in paintComponent()! if(q == QUALITY_JOGL)// && joglCanvas == null) { try { loadJOGL(); } catch(Throwable t) { t.printStackTrace(SoftLog.err); joglCanvas = null; joglAction = null; JOptionPane.showMessageDialog(kMain.getTopWindow(), "Unable to initialize OpenGL graphics.\nSee user manual for details on enabling this feature.", "No OpenGL", JOptionPane.ERROR_MESSAGE); } } else if(q < QUALITY_JOGL) kMain.getContentPane().setGraphicsComponent(this); } //}}} //{{{ get/setCurrentView/Aspect //################################################################################################## /** * Returns this canvas' current view of the current kinemage, or null * if there is no current kinemage. */ public KView getCurrentView() { return getCurrentView(kMain.getKinemage()); } public KView getCurrentView(Kinemage kin) { if(kin == null) return null; KView view = (KView) kin.metadata.get(currViewKey); if(view == null) { List views = kin.getViewList(); if(views.size() < 1) kin.addView( new KView(kin) ); view = views.get(0); setCurrentView(kin, view); } return view; } /** * Assigns a new view object as the current view * and notifies all listeners. * Actually, the view object gets cloned so future * modifications don't change the original. */ public void setCurrentView(KView view) { setCurrentView(kMain.getKinemage(), view); } public void setCurrentView(Kinemage kin, KView view) { if(kin == null) return; kin.metadata.put(currViewKey, view.clone()); view.activateViewingAxes(); kMain.publish(new KMessage(this, KMessage.VIEW_SELECTED)); } /** Returns the currently active aspect for this view, or null if none. */ public Aspect getCurrentAspect() { Kinemage kin = kMain.getKinemage(); if(kin == null) return null; return (Aspect) kin.metadata.get(currAspectKey); } /** * Assigns a new aspect object as the current one * (null is also OK) and notifies all listeners. */ public void setCurrentAspect(Aspect aspect) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.metadata.put(currAspectKey, aspect); kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } //}}} //{{{ stateChanged //################################################################################################## public void stateChanged(ChangeEvent ev) { KView view = kMain.getView(); if(view == null) return; if(ev.getSource() == zoommodel) { // Only update the view span if the current slider position is different // from what the view says it should be. // This avoids herky-jerky behavior when the view span is badly quantized by the slider model. double viewspan = view.getSpan(); double kinspan = kMain.getKinemage().getSpan(); int zoomValue = (int)Math.round((double)SLIDER_SCALE * Math.log(kinspan/viewspan) / LOG_2); if(zoomValue != zoommodel.getValue()) { double newspan = kinspan / Math.pow(2, (double)zoommodel.getValue() / (double)SLIDER_SCALE); view.setSpan((float)newspan); } } else if(ev.getSource() == clipmodel) { // Less important for clipping but same principle applies int clipValue = (int)(view.getClip() * 200.0); if(clipValue != clipmodel.getValue()) { double newclip = (double)clipmodel.getValue() / 200.0; view.setClip((float)newclip); } } } //}}} //{{{ isFocusTraversable //################################################################################################## // Has been replaced with isFocusable() in 1.4+ public boolean isFocusTraversable() { return true; } public boolean isFocusable() { return true; } //}}} //{{{ repaint, loadJOGL //################################################################################################## /** To ensure OpenGL painting is done even when the canvas is hidden. */ public void repaint() { super.repaint(); if(renderQuality >= QUALITY_JOGL && joglAction != null) { // Is this check really needed? if(kMain.getContentPane().getGraphicsComponent() != joglCanvas) kMain.getContentPane().setGraphicsComponent(joglCanvas); joglAction.actionPerformed(null); } } // lazily loads the JOGL Painter just before we need it private void loadJOGL() throws Throwable { // Try to create a JOGL painter, via reflection Class joglClass = Class.forName("king.JoglCanvas"); Constructor joglConstr = joglClass.getConstructor(new Class[] { KingMain.class, Engine2D.class, ToolBox.class }); joglCanvas = (Component)joglConstr.newInstance(new Object[] { kMain, engine, toolbox }); joglAction = new ReflectiveAction(null, null, joglCanvas, "requestRepaint"); } //}}} //{{{ empty //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/KinTreeModel.java0000644000000000000000000001062011531212654017446 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.tree.*; //import driftwood.*; //}}} /** * KinTreeModel allows one to display a kinemage hierarchy in a * Swing JTree component. * If the kinemage structure changes, call kinChanged(). * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Dec 21 11:17:14 EST 2006 */ public class KinTreeModel implements TreeModel { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## protected AGE root; protected Collection tmls = new ArrayList(); //}}} //{{{ Constructor(s) //############################################################################## public KinTreeModel(AGE root) { super(); this.root = root; } //}}} //{{{ add/removeTreeModelListener, valueForPathChanged, kinChanged //############################################################################## public void addTreeModelListener(TreeModelListener tml) { tmls.add(tml); } public void removeTreeModelListener(TreeModelListener tml) { tmls.remove(tml); } public void valueForPathChanged(TreePath path, Object newValue) { TreeModelEvent ev = new TreeModelEvent(this, path); for(TreeModelListener tml : tmls) tml.treeNodesChanged(ev); } /** * Sends a TreeModelEvent that the entire tree structure has (potentially) changed. * @param structural if true, the parent-child relationships have changed in * addition to the properties (eg names) of the nodes changing. */ public void kinChanged(boolean structural) { TreeModelEvent ev = new TreeModelEvent(this, new Object[] { getRoot() }); for(TreeModelListener tml : tmls) { if(structural) tml.treeStructureChanged(ev); else tml.treeNodesChanged(ev); } } //}}} //{{{ getRoot, isLeaf, getChildCount, getChild, getIndexOfChild //############################################################################## public Object getRoot() { return this.root; } public boolean isLeaf(Object node) { return (node instanceof KList || ((AGE) node).getChildren().size() == 0); } public int getChildCount(Object parent) { if(parent instanceof KList) return 0; else return ((AGE) parent).getChildren().size(); } public Object getChild(Object parent, int index) { if(isLeaf(parent)) return null; ArrayList children = ((AGE) parent).getChildren(); if(0 <= index && index < children.size()) return children.get(index); else return null; } public int getIndexOfChild(Object parent, Object child) { if(parent == null || child == null || isLeaf(parent)) return -1; else return ((AGE) parent).getChildren().indexOf(child); } //}}} //{{{ memorize/restoreVisibility //################################################################################################## public static Collection memorizeVisibility(JTree tree) { return memorizeVisibility(tree, new TreePath(tree.getModel().getRoot()), null); } public static Collection memorizeVisibility(JTree tree, TreePath path, Collection visible) { if(visible == null) visible = new HashSet(); if(tree.isVisible(path)) visible.add(path); TreeModel model = tree.getModel(); Object node = path.getLastPathComponent(); if(!model.isLeaf(node)) { int size = model.getChildCount(node); for(int i = 0; i < size; i++) memorizeVisibility(tree, path.pathByAddingChild(model.getChild(node, i)), visible); } return visible; } public static void restoreVisibility(JTree tree, Collection visible) { for(TreePath path : visible) tree.makeVisible(path); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/PointEditor.java0000644000000000000000000003132611571452340017374 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import java.util.List; //}}} /** * PointEditor allows editing of point properties, * for single points and for groups of points. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Fri Dec 13 08:34:44 EST 2002 */ public class PointEditor implements ChangeListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; GroupEditor groupEditor; JDialog ptDialog; JTextField ptID, ptComment, ptAspects, ptMasters, ptWidthRadius, ptX, ptY, ptZ; ColorPicker ptPicker; JCheckBox ptUnpickable; JLabel ptIndex; JButton split; JButton ok; boolean ptFirstShow = true; KPoint thePoint = null; KPaint ptOrigColor = null; int index = 0; //index of this point in the KList //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PointEditor(KingMain kmain) { kMain = kmain; groupEditor = new GroupEditor(kMain, kMain.getTopWindow()); makePointDialog(); } //}}} //{{{ makePointDialog //################################################################################################## private void makePointDialog() { ptDialog = new JDialog(kMain.getTopWindow(), "Edit point", true); ptDialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); ptID = new JTextField(20); ptComment = new JTextField(20); ptAspects = new JTextField(8); ptMasters = new JTextField(8); ptWidthRadius = new JTextField(8); ptX = new JTextField(8); ptY = new JTextField(8); ptZ = new JTextField(8); ptUnpickable = new JCheckBox("Unpickable"); ptIndex = new JLabel("Index is x/xxx"); KingPrefs prefs = kMain.getPrefs(); int patchSize = (prefs==null? 20 : prefs.getInt("colorSwatchSize")); ptPicker = new ColorPicker(KPaint.BLACK_COLOR, patchSize); ptPicker.addChangeListener(this); split = new JButton(new ReflectiveAction("Split list before this", null, this, "onPointSplit")); /*JButton*/ ok = new JButton(new ReflectiveAction("OK", null, this, "onPointOK")); JButton cancel = new JButton(new ReflectiveAction("Cancel", null, this, "onPointCancel")); // Key bindings: just type the key to execute -- DAK 110311 InputMap im = ptDialog.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0 ), "ptcancel"); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_W, KingMain.MENU_ACCEL_MASK), "ptcancel"); ActionMap am = ptDialog.getRootPane().getActionMap(); am.put("ptcancel", new ReflectiveAction(null, null, this, "onPointCancel")); JButton editGroup = new JButton(new ReflectiveAction("Edit group", null, this, "onEditGroup")); JButton editSubgroup = new JButton(new ReflectiveAction("Edit subgroup", null, this, "onEditSubgroup")); JButton editList = new JButton(new ReflectiveAction("Edit list", null, this, "onEditList")); TablePane tp = new TablePane(); //tp.insets(4); tp.hfill(true); tp.startSubtable(); tp.add(new JLabel("Point ID")); tp.add(ptID, 3, 1); tp.newRow();//---------- tp.add(new JLabel("Comment")); tp.add(ptComment, 3, 1); tp.newRow();//---------- tp.skip(); tp.add(ptUnpickable); tp.add(ptPicker, 1, 10); tp.newRow();//---------- tp.add(new JLabel("Aspects")); tp.add(ptAspects); tp.newRow();//---------- tp.add(new JLabel("Pointmasters")); tp.add(ptMasters); tp.newRow();//---------- tp.add(new JLabel("Width/Radius")); tp.add(ptWidthRadius); tp.newRow();//---------- tp.skip(); tp.add(new JLabel("0 => from list")); tp.newRow();//---------- tp.add(new JLabel("X coord")); tp.add(ptX); tp.newRow();//---------- tp.add(new JLabel("Y coord")); tp.add(ptY); tp.newRow();//---------- tp.add(new JLabel("Z coord")); tp.add(ptZ); tp.newRow();//---------- tp.add(ptIndex); tp.center().add(split); tp.newRow();//---------- tp.add(Box.createVerticalGlue(), 2, 1); // allows for extra height of color picker tp.endSubtable(); tp.newRow();//---------- tp.skip(); tp.newRow();//---------- tp.startSubtable(); tp.center(); tp.add(editList); tp.add(editSubgroup); tp.add(editGroup); tp.endSubtable(); tp.newRow();//---------- tp.add(tp.strut(0,4)); tp.newRow();//---------- tp.startSubtable(); tp.center(); tp.add(ok); tp.add(cancel); tp.endSubtable(); ptDialog.setContentPane(tp); } //}}} //{{{ editPoint //################################################################################################## public void editPoint(KPoint p) { if(p == null) return; KList list = (KList)p.getParent(); if(list == null) return; Kinemage kin = p.getKinemage(); if(kin == null) return; thePoint = p; // Write values to GUI ptID.setText(p.getName()); String comment = p.getComment(); if(comment == null) ptComment.setText(""); else ptComment.setText(comment); ptAspects.setText(p.getAspects()); ptMasters.setText(kin.fromPmBitmask(p.getPmMask())); ptX.setText(Float.toString((float) p.getX())); ptY.setText(Float.toString((float) p.getY())); ptZ.setText(Float.toString((float) p.getZ())); ptUnpickable.setSelected(p.isUnpickable()); // Color ptOrigColor = p.getColor(); ptPicker.setBackgroundMode(kMain.getCanvas().getEngine().backgroundMode); ptPicker.setExtras(kMain.getKinemage().getNewPaintMap().values()); ptPicker.setSelection(ptOrigColor); // Width / Radius if(p instanceof VectorPoint) { ptWidthRadius.setEnabled(true); ptWidthRadius.setText(Integer.toString(p.getWidth())); } else if(p instanceof BallPoint) { ptWidthRadius.setEnabled(true); ptWidthRadius.setText(Float.toString(((BallPoint)p).r0)); } else { ptWidthRadius.setEnabled(false); ptWidthRadius.setText("n/a"); } // Index int size; index = 0; Iterator iter = list.iterator(); for(size = 0; iter.hasNext(); size++) { // KPoint.equals() just compares coordinates. if(p == iter.next()) index = size; } ptIndex.setText("Index is "+(index+1)+"/"+size); if(index == 0) split.setEnabled(false); else split.setEnabled(true); ptDialog.pack(); ptDialog.getRootPane().setDefaultButton(ok); // DAK July 26 2009 if(ptFirstShow) { ptDialog.setLocationRelativeTo(kMain.getTopWindow()); ptFirstShow = false; } ptDialog.setVisible(true); // thread stops here until we hit OK/Cancel } //}}} //{{{ onPointOK, onPointCancel, onPointColor //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onPointOK(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); thePoint.setName(ptID.getText()); String comment = ptComment.getText().trim(); if(comment.length() == 0) thePoint.setComment(null); else thePoint.setComment(comment); String aspects = ptAspects.getText().trim().toUpperCase(); if(aspects.length() > 0) thePoint.setAspects(aspects); else thePoint.setAspects(null); if(kin != null) thePoint.setPmMask(kin.toPmBitmask(ptMasters.getText().trim(), true, true)); thePoint.setUnpickable(ptUnpickable.isSelected()); try { thePoint.setX(Float.parseFloat(ptX.getText().trim())); } catch(NumberFormatException ex) {} try { thePoint.setY(Float.parseFloat(ptY.getText().trim())); } catch(NumberFormatException ex) {} try { thePoint.setZ(Float.parseFloat(ptZ.getText().trim())); } catch(NumberFormatException ex) {} // Let "" be the same as zero here if(ptWidthRadius.getText().trim().equals("")) ptWidthRadius.setText("0"); try { if(thePoint instanceof VectorPoint) { int w = Integer.parseInt(ptWidthRadius.getText().trim()); if(w > 7) w = 7; if(w < 0) w = 0; thePoint.setWidth(w); } else if(thePoint instanceof BallPoint) { float r = Float.parseFloat(ptWidthRadius.getText().trim()); ((BallPoint)thePoint).r0 = r; } } catch(NumberFormatException ex) {} ptDialog.dispose(); thePoint = null; // avoid memory leaks if(kin != null) kin.setModified(true); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onPointCancel(ActionEvent ev) { thePoint.setColor(ptOrigColor); ptDialog.dispose(); thePoint = null; // avoid memory leaks } public void stateChanged(ChangeEvent ev) { Kinemage kin = thePoint.getKinemage(); if(kin == null) return; thePoint.setColor(ptPicker.getSelection()); } //}}} //{{{ onPointSplit //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onPointSplit(ActionEvent ev) { KList origlist = (KList)thePoint.getParent(); if(origlist == null) return; KGroup subgroup = (KGroup)origlist.getParent(); if(subgroup == null) return; if(index < 1 || index >= origlist.getChildren().size()) return; KList newlist = origlist.clone(true); // do clone points ArrayList origpts = origlist.getChildren(); ArrayList origsubset = new ArrayList( origpts.subList(0, index+1) ); origpts.clear(); origpts.addAll(origsubset); origlist.fireKinChanged(AHE.CHANGE_POINT_CONTENTS); ArrayList newpts = newlist.getChildren(); ArrayList newsubset = new ArrayList( newpts.subList(index, newpts.size()) ); newsubset.get(0).setPrev(null); // break the chain for vector / triangle points newpts.clear(); newpts.addAll(newsubset); subgroup.add(newlist); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } //}}} //{{{ onEditGroup, onEditSubgroup, onEditList //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditGroup(ActionEvent ev) { KList list = (KList)thePoint.getParent(); if(list == null) return; KGroup subgroup = (KGroup)list.getParent(); if(subgroup == null) return; KGroup group = (KGroup)subgroup.getParent(); if(group == null) return; groupEditor.editGroup(group); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditSubgroup(ActionEvent ev) { KList list = (KList)thePoint.getParent(); if(list == null) return; KGroup subgroup = (KGroup)list.getParent(); if(subgroup == null) return; groupEditor.editSubgroup(subgroup); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditList(ActionEvent ev) { KList list = (KList)thePoint.getParent(); if(list == null) return; groupEditor.editList(list); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/UIMenus.java0000644000000000000000000010625411531212654016462 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ package, imports package king; import king.core.*; import king.io.KinfileParser; import java.awt.*; import java.awt.event.*; import java.awt.print.*; import java.io.*; import java.lang.reflect.*; import java.net.*; import java.text.*; import java.util.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * UIMenus contains all the menus and their corresponding * Action objects for various actions the user can take. * *

Begun on Sat Apr 27 20:34:46 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class UIMenus implements KMessage.Subscriber { static final DecimalFormat df = new DecimalFormat("###,###,##0"); //{{{ INNER CLASS: ViewAction //################################################################################################## class ViewAction extends AbstractAction { KView view; public ViewAction(int i, KView v) { super(i+" "+v.getName()); this.view = v; } public void actionPerformed(ActionEvent ev) { kMain.setView(view); } } //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JMenuBar menubar; UIDisplayMenu displayMenu; // Tool-like objects JFileChooser fileChooser = null; SuffixFileFilter fileFilter; PointFinder finder; ViewEditor viewEditor; // Elements of menus that get rebuilt frequently JMenu oldViewMenu = null; JMenu fileMenu, toolsMenu; //}}} //{{{ Constructor, getMenuBar //################################################################################################## public UIMenus(KingMain kmain) { kMain = kmain; // Will throw an exception if we're running as an Applet try { fileFilter = new SuffixFileFilter("Kinemage files (*.kin)"); fileFilter.addSuffix(".kin"); fileFilter.addSuffix(".kip"); fileFilter.addSuffix(".kip1"); fileFilter.addSuffix(".kip2"); fileFilter.addSuffix(".kip3"); fileFilter.addSuffix(".kip4"); fileFilter.addSuffix(".kip5"); fileFilter.addSuffix(".kip6"); fileFilter.addSuffix(".kip7"); fileFilter.addSuffix(".kip8"); fileFilter.addSuffix(".kip9"); fileChooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) fileChooser.setCurrentDirectory(new File(currdir)); fileChooser.addChoosableFileFilter(fileFilter); fileChooser.setFileFilter(fileFilter); } catch(SecurityException ex) {} // Temporary fix for Java 6 bug # 6570445: JFileChooser in unsigned applet catch(java.lang.ExceptionInInitializerError ex) { if(!(ex.getCause() instanceof java.security.AccessControlException)) throw ex; } // Subsequent attempts to create JFileChooser cause NoClassDefFound catch(java.lang.NoClassDefFoundError ex) {} finder = new PointFinder(kMain); viewEditor = new ViewEditor(kMain); buildMenus(); kMain.subscribe(this); } /** Returns the menu bar */ public JMenuBar getMenuBar() { return menubar; } //}}} //{{{ buildMenus //################################################################################################## // Construct all the menus and their actions for the menubar. void buildMenus() { menubar = new JMenuBar(); JMenu menu, submenu; JMenuItem item; JCheckBoxMenuItem cbitem; KinCanvas kCanvas; // File menu fileMenu = menu = new JMenu("File"); menu.setMnemonic(KeyEvent.VK_F); menubar.add(menu); rebuildFileMenu(); //{{{ Edit menu menu = new JMenu("Edit"); menu.setMnemonic(KeyEvent.VK_E); menubar.add(menu); item = new JMenuItem(new ReflectiveAction("Find point...", null, this, "onEditFind")); item.setMnemonic(KeyEvent.VK_F); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, kMain.MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Find next", null, this, "onEditFindNext")); item.setMnemonic(KeyEvent.VK_N); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, kMain.MENU_ACCEL_MASK)); menu.add(item); menu.addSeparator(); item = new JMenuItem(new ReflectiveAction("Kinemage properties...", null, this, "onEditKinProps")); item.setMnemonic(KeyEvent.VK_K); //item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, kMain.MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Edit text...", null, this, "onEditText")); item.setMnemonic(KeyEvent.VK_T); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, kMain.MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Edit hierarchy...", null, this, "onEditHierarchy")); item.setMnemonic(KeyEvent.VK_H); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_H, kMain.MENU_ACCEL_MASK)); menu.add(item); menu.addSeparator(); item = new JMenuItem(new ReflectiveAction("Configure KiNG...", null, this, "onEditConfigure")); item.setMnemonic(KeyEvent.VK_C); menu.add(item); //}}} // Views menu rebuildViewsMenu(); // Display menu displayMenu = new UIDisplayMenu(kMain); menubar.add(displayMenu.getMenu()); // Tools menu toolsMenu = menu = new JMenu("Tools"); menu.setMnemonic(KeyEvent.VK_T); menubar.add(menu); rebuildToolsMenu(); //{{{ Help menu menu = new JMenu("Help"); menu.setMnemonic(KeyEvent.VK_H); menubar.add(menu); item = new JMenuItem(new ReflectiveAction("User manual...", null, this, "onHelpManual")); item.setMnemonic(KeyEvent.VK_M); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0)); // 0 => no modifiers menu.add(item); submenu = new JMenu("Tools"); submenu.setMnemonic(KeyEvent.VK_T); menu.add(submenu); kCanvas = kMain.getCanvas(); if(kCanvas != null) { ToolBox tb = kCanvas.getToolBox(); if(tb != null) tb.addPluginsToHelpMenu(submenu); } item = new JMenuItem(new ReflectiveAction("Keyboard shortcuts...", null, this, "onHelpKeyboardShortcuts")); item.setMnemonic(KeyEvent.VK_S); //item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F1, 0)); // 0 => no modifiers menu.add(item); submenu = new JMenu("Built-in kinemages"); submenu.setMnemonic(KeyEvent.VK_K); menu.add(submenu); item = new JMenuItem(new ReflectiveAction("Internal palette", null, this, "onHelpKinPalette")); item.setMnemonic(KeyEvent.VK_P); submenu.add(item); item = new JMenuItem(new ReflectiveAction("Color cone", null, this, "onHelpKinCone")); item.setMnemonic(KeyEvent.VK_C); submenu.add(item); item = new JMenuItem(new ReflectiveAction("Falling teddy bear", null, this, "onHelpKinBear")); item.setMnemonic(KeyEvent.VK_B); submenu.add(item); item = new JMenuItem(new ReflectiveAction("Error log...", null, this, "onHelpLog")); item.setMnemonic(KeyEvent.VK_E); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, kMain.MENU_ACCEL_MASK)); // 0 => no modifiers menu.add(item); item = new JMenuItem(new ReflectiveAction("About KiNG...", null, this, "onHelpAbout")); item.setMnemonic(KeyEvent.VK_A); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_K, kMain.MENU_ACCEL_MASK)); // 0 => no modifiers menu.add(item); //}}} } //}}} //{{{ rebuildFileMenu //################################################################################################## public void rebuildFileMenu() { JMenuItem item; JMenu menu = fileMenu; menu.removeAll(); boolean trusted = kMain.isTrusted(); if(!kMain.isApplet()) { item = new JMenuItem(new ReflectiveAction("New KiNG window", null, this, "onFileNewKing")); item.setMnemonic(KeyEvent.VK_N); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, kMain.MENU_ACCEL_MASK)); menu.add(item); menu.addSeparator(); } if(trusted) { item = new JMenuItem(new ReflectiveAction("Open file...", null, this, "onFileOpen")); item.setMnemonic(KeyEvent.VK_O); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, kMain.MENU_ACCEL_MASK)); menu.add(item); } if(kMain.isApplet()) { item = new JMenuItem(new ReflectiveAction("Open URL...", null, this, "onFileOpenURL")); if(!trusted) item.setMnemonic(KeyEvent.VK_O); if(!trusted) item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, kMain.MENU_ACCEL_MASK)); menu.add(item); } if(trusted) { item = new JMenuItem(new ReflectiveAction("Append file...", null, this, "onFileMerge")); item.setMnemonic(KeyEvent.VK_A); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, kMain.MENU_ACCEL_MASK)); menu.add(item); } if(kMain.isApplet()) { item = new JMenuItem(new ReflectiveAction("Append URL...", null, this, "onFileMergeURL")); if(!trusted) item.setMnemonic(KeyEvent.VK_A); if(!trusted) item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_A, kMain.MENU_ACCEL_MASK)); menu.add(item); } if(trusted) { KinCanvas kCanvas = kMain.getCanvas(); if(kCanvas != null) { ToolBox tb = kCanvas.getToolBox(); if(tb != null) { JMenu importMenu = new JMenu("Import"); importMenu.setMnemonic(KeyEvent.VK_I); tb.addPluginsToSpecialMenu(ToolBox.MENU_IMPORT, importMenu); if(importMenu.getItemCount() > 0) { menu.add(importMenu); } } } } item = new JMenuItem(new ReflectiveAction("Close", null, this, "onFileClose")); item.setMnemonic(KeyEvent.VK_C); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, kMain.MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Close all", null, this, "onFileCloseAll")); item.setMnemonic(KeyEvent.VK_L); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_W, kMain.MENU_ACCEL_MASK | KeyEvent.SHIFT_MASK)); menu.add(item); menu.addSeparator(); if(trusted) { item = new JMenuItem(new ReflectiveAction("Save as...", null, this, "onFileSaveAs")); item.setMnemonic(KeyEvent.VK_S); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, kMain.MENU_ACCEL_MASK)); menu.add(item); } if(kMain.isApplet() && kMain.getApplet().getParameter("kinfileSaveHandler") != null) { item = new JMenuItem(new ReflectiveAction("Network save...", null, this, "onFileSaveAsURL")); if(!trusted) item.setMnemonic(KeyEvent.VK_S); if(!trusted) item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, kMain.MENU_ACCEL_MASK)); menu.add(item); } if(trusted) { KinCanvas kCanvas = kMain.getCanvas(); if(kCanvas != null) { ToolBox tb = kCanvas.getToolBox(); if(tb != null) { JMenu exportMenu = new JMenu("Export"); exportMenu.setMnemonic(KeyEvent.VK_E); tb.addPluginsToSpecialMenu(ToolBox.MENU_EXPORT, exportMenu); if(exportMenu.getItemCount() > 0) { menu.add(exportMenu); } } } } // This might throw a SecurityException, if the user denies us permission... item = new JMenuItem(new ReflectiveAction("Print...", null, this, "onFilePrint")); item.setMnemonic(KeyEvent.VK_P); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, kMain.MENU_ACCEL_MASK)); menu.add(item); if(!kMain.isApplet()) { menu.addSeparator(); item = new JMenuItem(new ReflectiveAction("Exit", null, this, "onFileExit")); item.setMnemonic(KeyEvent.VK_X); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Q, kMain.MENU_ACCEL_MASK)); menu.add(item); } } //}}} //{{{ rebuildViewsMenu //################################################################################################## /** * Creates a new Views menu */ public void rebuildViewsMenu() { JMenu menu = new JMenu("Views"); menu.setMnemonic(KeyEvent.VK_V); JMenuItem item; JRadioButtonMenuItem ritem; ButtonGroup rgroup = new ButtonGroup(); Kinemage kin = kMain.getKinemage(); if(kin != null) { item = new JMenuItem(new ReflectiveAction("Save current view", null, this, "onViewSave")); item.setMnemonic(KeyEvent.VK_S); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, kMain.MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Edit saved views...", null, this, "onViewEdit")); item.setMnemonic(KeyEvent.VK_E); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, kMain.MENU_ACCEL_MASK | KeyEvent.SHIFT_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Choose viewing axes...", null, this, "onViewChooseAxes")); item.setMnemonic(KeyEvent.VK_C); //item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_V, kMain.MENU_ACCEL_MASK | KeyEvent.SHIFT_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Parallel coordinates", null, this, "onViewParallelCoords")); item.setMnemonic(KeyEvent.VK_P); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_SLASH, 0)); menu.add(item); menu.addSeparator(); JMenu currMenu = menu; Iterator viewiter = kin.getViewList().iterator(); for(int i = 1; viewiter.hasNext(); i++) { // Every 25 views, chain them into a new menu if(i != 1 && i % 25 == 1) { JMenu newMenu = new JMenu("More views"); currMenu.add(newMenu); currMenu = newMenu; } KView view = viewiter.next(); ritem = new JRadioButtonMenuItem(new ViewAction(i, view)); rgroup.add(ritem); currMenu.add(ritem); } } else { item = new JMenuItem("No views available"); item.setEnabled(false); menu.add(item); } if(oldViewMenu != null) { int viewIndex = menubar.getComponentIndex(oldViewMenu); menubar.remove(oldViewMenu); menubar.add(menu, viewIndex); } else { menubar.add(menu); } // This step is ESSENTIAL for the menu to appear & keep working! menubar.revalidate(); oldViewMenu = menu; } //}}} //{{{ rebuildToolsMenu //################################################################################################## public void rebuildToolsMenu() { JMenuItem item; JCheckBoxMenuItem cbitem; JMenu menu = toolsMenu; menu.removeAll(); cbitem = kMain.getCanvas().getToolBox().services.doFlatland; cbitem.setMnemonic(KeyEvent.VK_L); cbitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_F, 0)); menu.add(cbitem); cbitem = kMain.getCanvas().getToolBox().services.doXYZ; cbitem.setMnemonic(KeyEvent.VK_X); //cbitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_G, kMain.MENU_ACCEL_MASK)); menu.add(cbitem); cbitem = kMain.getCanvas().getToolBox().services.doMeasureAll; cbitem.setMnemonic(KeyEvent.VK_M); cbitem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_M, 0)); menu.add(cbitem); cbitem = kMain.getCanvas().getToolBox().services.doObjectPick; cbitem.setMnemonic(KeyEvent.VK_O); menu.add(cbitem); cbitem = kMain.getCanvas().getToolBox().services.doSuperpick; cbitem.setMnemonic(KeyEvent.VK_S); menu.add(cbitem); KinCanvas kCanvas = kMain.getCanvas(); if(kCanvas != null) { ToolBox tb = kCanvas.getToolBox(); if(tb != null) { menu.addSeparator(); tb.addPluginsToToolsMenu(menu); } } menu.addSeparator(); item = new JMenuItem(new ReflectiveAction("Customize Tools menu...", null, this, "onEditConfigurePlugins")); item.setMnemonic(KeyEvent.VK_C); menu.add(item); } //}}} //{{{ reporter -- the dummy action //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void reporter(ActionEvent ev) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "This feature has not been implemented yet.", "Sorry!", JOptionPane.INFORMATION_MESSAGE); } //}}} //{{{ onFileXXX handlers //################################################################################################## //### "File" functions ############################################################################# //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileNewKing(ActionEvent ev) { new KingMain(new String[] {}).Main(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileOpen(ActionEvent ev) { KinfileIO io = kMain.getKinIO(); io.askLoadFile(null); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileOpenURL(ActionEvent ev) { KinfileIO io = kMain.getKinIO(); if(kMain.isApplet()) io.askLoadURL(null); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileMerge(ActionEvent ev) { KinfileIO io = kMain.getKinIO(); Kinemage kin = kMain.getKinemage(); if(kin == null) { kin = new Kinemage(KinfileParser.DEFAULT_KINEMAGE_NAME+"1"); if(io.askLoadFile(kin)) kMain.getStable().append(Arrays.asList(new Kinemage[] {kin})); // This way we don't create an empty if append is canceled } else io.askLoadFile(kin); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileMergeURL(ActionEvent ev) { KinfileIO io = kMain.getKinIO(); Kinemage kin = kMain.getKinemage(); if(kin == null) { kin = new Kinemage(KinfileParser.DEFAULT_KINEMAGE_NAME+"1"); if(kMain.isApplet() && io.askLoadURL(kin)) kMain.getStable().append(Arrays.asList(new Kinemage[] {kin})); // This way we don't create an empty if append is canceled } else if(kMain.isApplet()) io.askLoadURL(kin); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileClose(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k != null && k.isModified()) { int confirm = JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This kinemage has been modified.\nDo you want to save it before closing?", "Save before closing?", JOptionPane.YES_NO_CANCEL_OPTION); if(confirm == JOptionPane.CANCEL_OPTION) return; else if(confirm == JOptionPane.YES_OPTION) onFileSaveAs(ev); } // (Check for changes to text window as well?... See UIText.TextChangeListener) kMain.getStable().closeCurrent(); if(kMain.getStable().getKins().size() == 0) if(kMain.getPrefs().getBoolean("textEmptyIfAllKinsClosed")) kMain.getTextWindow().setText(""); // all kins are closed, so empty text window } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileCloseAll(ActionEvent ev) { boolean modified = false; for(Kinemage k : kMain.getStable().getKins()) if(k.isModified()) modified = true; if(modified) { int confirm = JOptionPane.showConfirmDialog(kMain.getTopWindow(), "One or more open kinemages have been modified.\nDo you want to save them before closing?", "Save before closing?", JOptionPane.YES_NO_CANCEL_OPTION); if(confirm == JOptionPane.CANCEL_OPTION) return; else if(confirm == JOptionPane.YES_OPTION) onFileSaveAs(ev); } // (Check for changes to text window as well?... See UIText.TextChangeListener) kMain.getStable().closeAll(); kMain.getTextWindow().setText(""); // all kins are closed, so empty text window } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileSaveAs(ActionEvent ev) { KinfileIO io = kMain.getKinIO(); int numKins = kMain.getStable().getKins().size(); if(numKins > 1) { JRadioButton btnBoth = new JRadioButton((numKins == 2 ? "Save both in one file" : "Save all "+numKins+" in one file"), true); JRadioButton btnCurr = new JRadioButton("Save only the currently selected kinemage", false); ButtonGroup btnGroup = new ButtonGroup(); btnGroup.add(btnBoth); btnGroup.add(btnCurr); int result = JOptionPane.showConfirmDialog(kMain.getTopWindow(), new Object[] { "There are currently "+numKins+" open kinemages.", "What do you want to do?", btnBoth, btnCurr }, "Saving multiple kinemages", JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if(result == JOptionPane.NO_OPTION || result == JOptionPane.CANCEL_OPTION) {} else if(btnBoth.isSelected()) io.askSaveFile(); else if(btnCurr.isSelected()) io.askSaveFile(kMain.getKinemage()); } else io.askSaveFile(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileSaveAsURL(ActionEvent ev) { KinfileIO io = kMain.getKinIO(); if(kMain.isApplet()) io.askSaveURL(); } // This might throw a SecurityException, if the user denies us permission... // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFilePrint(ActionEvent ev) { try { PrinterJob job = PrinterJob.getPrinterJob(); job.setPrintable(kMain.getCanvas()); if(job.printDialog()) job.print(); } catch(Exception ex) { ex.printStackTrace(SoftLog.err); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFileExit(ActionEvent ev) { onFileCloseAll(ev); // checks for modifications and prompts to save if(kMain.getStable().getKins().size() == 0) kMain.shutdown(); // else we must have pressed Cancel } //}}} //{{{ onEditXXX handlers //################################################################################################## //### "Edit" functions ############################################################################# //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditFind(ActionEvent ev) { finder.show(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditFindNext(ActionEvent ev) { // If we can't find a next point, offer to search again. if( finder.findNext() == false ) onEditFind(ev); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditText(ActionEvent ev) { UIText win = kMain.getTextWindow(); if(win != null) win.onPopupButton(null); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditKinProps(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; GroupEditor groupEd = new GroupEditor(kMain, kMain.getTopWindow()); groupEd.editKinemage(kin); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditHierarchy(ActionEvent ev) { KinTree win = kMain.getKinTree(); if(win != null) win.show(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditConfigure(ActionEvent ev) { PrefsEditor prefsEditor = new PrefsEditor(kMain); prefsEditor.edit(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditConfigurePlugins(ActionEvent ev) { PrefsEditor prefsEditor = new PrefsEditor(kMain); prefsEditor.editPlugins(); } //}}} //{{{ onViewXXX handlers //################################################################################################## //### "Views" functions ############################################################################ //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onViewSave(ActionEvent ev) { String viewname = JOptionPane.showInputDialog(kMain.getTopWindow(), "Name for this view:", "Save view", JOptionPane.PLAIN_MESSAGE); if(viewname == null) return; KView view = kMain.getView(); if(view == null) return; view = (KView)view.clone(); view.setName(viewname); // User should choose to save axes positions or not (?) // If the data is high-D data, views only really make sense // in the context of the dimensions that were being viewed! //view.setViewingAxes(null); Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.addView(view); kin.setModified(true); rebuildViewsMenu(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onViewEdit(ActionEvent ev) { viewEditor.editViews(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onViewChooseAxes(ActionEvent ev) { new AxisChooser(kMain, kMain.getKinemage()); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onViewParallelCoords(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; String key = ParaParams.class.getName()+".instance"; ParaParams params = (ParaParams) kin.metadata.get(key); if(params == null) { params = new ParaParams(kMain, kin); kin.metadata.put(key, params); } params.swap(); } //}}} //{{{ onHelpXXX handlers //################################################################################################## //### "Help" functions ############################################################################ //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpManual(ActionEvent ev) { URL start = getClass().getResource("html/king-manual.html"); if(start != null) new HTMLHelp(kMain, start).show(); else SoftLog.err.println("Couldn't find the specified resource!"); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpKeyboardShortcuts(ActionEvent ev) { URL start = getClass().getResource("html/kbd-shortcuts.html"); if(start != null) new HTMLHelp(kMain, start).show(); else SoftLog.err.println("Couldn't find the specified resource!"); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpKinPalette(ActionEvent ev) { URL palkin = getClass().getResource("kins/pal5.kin"); if(palkin != null) kMain.getKinIO().loadURL(palkin, null); else SoftLog.err.println("Couldn't find the specified resource!"); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpKinCone(ActionEvent ev) { URL kin = getClass().getResource("kins/cone.kin"); if(kin != null) kMain.getKinIO().loadURL(kin, null); else SoftLog.err.println("Couldn't find the specified resource!"); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpKinBear(ActionEvent ev) { URL kin = getClass().getResource("kins/fallingbear.kin"); if(kin != null) kMain.getKinIO().loadURL(kin, null); else SoftLog.err.println("Couldn't find the specified resource!"); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpLog(ActionEvent ev) { new LogViewer(kMain.getTopWindow(), "KiNG error log", SoftLog.err); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHelpAbout(ActionEvent ev) { ArrayList msgs = new ArrayList(); KingPrefs prefs = kMain.getPrefs(); Runtime runtime = Runtime.getRuntime(); int i, total0 = 0, free0 = 0, total1 = 0, free1 = 0, used; // in kilobytes msgs.add(new JLabel("KiNG (Kinetic Image, Next Generation)")); msgs.add(new JLabel("Version "+kMain.getPrefs().getString("version"))); msgs.add(new JLabel("Build "+kMain.getPrefs().getString("buildnum"))); try { if(prefs.jarFileDirectory != null) msgs.add(new JLabel("Installed in "+prefs.jarFileDirectory.getCanonicalPath())); } catch(IOException ex) {} msgs.add(new JLabel(" ")); msgs.add(new JLabel("Installed Plugins:")); Enumeration propNames = prefs.propertyNames(); while (propNames.hasMoreElements()) { String propName = (String) propNames.nextElement(); if (propName.matches(".* version")) { String jarName = propName.substring(0, propName.lastIndexOf(" ")); String buildNum = prefs.getProperty(jarName+" buildnum"); msgs.add(new JLabel(propName+": "+prefs.getProperty(propName)+"."+buildNum)); } } msgs.add(new JLabel(" ")); msgs.add(new JLabel("Created in the Richardson lab at Duke University")); msgs.add(new JLabel("http://kinemage.biochem.duke.edu")); msgs.add(new JLabel(" ")); msgs.add(new JLabel("Copyright (C) 2002-2011")); msgs.add(new JLabel("Ian W. Davis, Vincent B. Chen, Daniel A. Keedy")); msgs.add(new JLabel("All rights reserved.")); msgs.add(new JLabel(" ")); msgs.add(new JLabel("Using Java "+System.getProperty("java.version", "(unknown version)"))); try { msgs.add(new JLabel(System.getProperty("java.home", "(path not found)"))); } catch(SecurityException ex) {} // We're not listing the versions of iText, JOGL, etc. here ... //msgs.add(new JLabel("Using gnu.regexp "+gnu.regexp.RE.version())); // Take up to 10 tries at garbage collection for(i = 0; i < 10; i++) { total1 = (int)(runtime.totalMemory() >> 10); free1 = (int)(runtime.freeMemory() >> 10); if(total1 == total0 && free1 == free0) break; else { System.gc(); //try { Thread.sleep(500); } catch(InterruptedException ex) {} total0 = total1; free0 = free1; } } used = total1 - free1; msgs.add(new JLabel(" ")); //msgs.add(new JLabel("Garbage collection freed "+df.format(free2-free1)+"kb")); JProgressBar mem = new JProgressBar(0, total1); mem.setStringPainted(true); mem.setString(df.format(used)+"kb / "+df.format(total1)+"kb"); mem.setValue(used); msgs.add(mem); JOptionPane.showMessageDialog(kMain.getTopWindow(), msgs.toArray(), "About KiNG", JOptionPane.INFORMATION_MESSAGE); } /** I use this from JDB for tracking down memory leaks */ public static String showMem() { Runtime runtime = Runtime.getRuntime(); int i, total0 = 0, free0 = 0, total1 = 0, free1 = 0, used; // in kilobytes // Take up to 10 tries at garbage collection for(i = 0; i < 10; i++) { total1 = (int)(runtime.totalMemory() >> 10); free1 = (int)(runtime.freeMemory() >> 10); if(total1 == total0 && free1 == free0) break; else { System.gc(); //try { Thread.sleep(500); } catch(InterruptedException ex) {} total0 = total1; free0 = free1; } } used = total1 - free1; return df.format(used)+"kb / "+df.format(total1)+"kb"; } //}}} //{{{ deliverMessage //################################################################################################## static final long REDO_MENUS_P = KMessage.KIN_SWITCHED | KMessage.KIN_CLOSED | KMessage.ALL_CLOSED; static final int REDO_MENUS_K = AHE.CHANGE_VIEWS_LIST | AHE.CHANGE_MASTERS_LIST; public void deliverMessage(KMessage msg) { if(msg.testProg(REDO_MENUS_P) || msg.testKin(REDO_MENUS_K)) { rebuildViewsMenu(); displayMenu.rebuildAspectsMenu(); finder.clearSearch(); } if(msg.testProg(KMessage.PREFS_CHANGED)) { // Plugin placement may have changed rebuildFileMenu(); rebuildToolsMenu(); } } //}}} }//class king-2.21.120420/king/src/king/ParaPoint.java0000644000000000000000000003344711531212654017035 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import king.points.VectorPoint; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * ParaPoint is proxy point used for parallel coordinates. * *

Copyright (C) 2006-2007 by Ian W. Davis. All rights reserved. *
Begun on Fri Nov 17 11:34:49 EST 2006 */ public class ParaPoint extends VectorPoint { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## KPoint proxyFor; int dimIdx; ParaParams params; double width; //}}} //{{{ Constructor(s) //############################################################################## /** * Creates a new data point representing one end of a line. * * @param proxyFor the (Ball)Point that this line represents * @param dimIdx the dimension / axis of proxyFor to represent, from 0 ... D * (Could probably be figured by tracing back along start.) * @param start where this line is drawn from, or null if it's the starting point */ public ParaPoint(KPoint proxyFor, int dimIdx, ParaPoint start, ParaParams params, double width) { super(proxyFor.getName(), start); this.setParent(proxyFor.getParent()); this.proxyFor = proxyFor; this.dimIdx = dimIdx; this.params = params; this.width = width; if (width < 900) this.width = 900; syncCoords(); } //}}} //{{{ syncCoords //############################################################################## protected void syncCoords() { float[] allCoords = proxyFor.getAllCoords(); if(allCoords == null || allCoords.length <= dimIdx) throw new IllegalArgumentException("Not enough coordinates in proxy to support parallel coords"); this.x0 = (float) (1.0 * dimIdx / (params.getNumDim() - 1)+((float)dimIdx-(float)params.getNumDim()/2)/ (float)(params.getNumDim()-1)*(width-900)/900); // [0, 1] this.y0 = (float) ((allCoords[dimIdx] - params.getMin(dimIdx)) / params.getRange(dimIdx)); // [0, 1] this.z0 = 0; // may use this for something later, not now } //}}} //{{{ get/setX/Y/Z //################################################################################################## /** Returns the untransformed coordinate for this point */ //public double getX() { return proxyFor.getX(); } /** Returns the untransformed coordinate for this point */ //public double getY() { return proxyFor.getY(); } /** Returns the untransformed coordinate for this point */ //public double getZ() { return proxyFor.getZ(); } /** Assigns a value to the untransformed coordinate for this point */ public void setX(double xx) {} /** Assigns a value to the untransformed coordinate for this point */ public void setY(double yy) {} /** Assigns a value to the untransformed coordinate for this point */ public void setZ(double zz) {} /** Assigns a value to the untransformed coordinates for this point */ public void setXYZ(double xx, double yy, double zz) {} //}}} //{{{ get/setDrawX/Y/Z //################################################################################################## /** Returns the fully transformed (drawing) coordinate for this point */ //public float getDrawX() { return proxyFor.getDrawX(); } /** Returns the fully transformed (drawing) coordinate for this point */ //public float getDrawY() { return proxyFor.getDrawY(); } /** Returns the fully transformed (drawing) coordinate for this point */ //public float getDrawZ() { return proxyFor.getDrawZ(); } /** Assigns a value to the fully transformed (drawing) coordinate for this point */ //public void setDrawX(double xx) { proxyFor.setDrawX(xx); } /** Assigns a value to the fully transformed (drawing) coordinate for this point */ //public void setDrawY(double yy) { proxyFor.setDrawY(yy); } /** Assigns a value to the fully transformed (drawing) coordinate for this point */ //public void setDrawZ(double zz) { proxyFor.setDrawZ(zz); } /** Assigns a value to the fully transformed (drawing) coordinates for this point */ //public void setDrawXYZ(Tuple3 t) { proxyFor.setDrawXYZ(t); } //}}} //{{{ get/setAllCoords, useCoordsXYZ //################################################################################################## /** * Stores an array of coordinates for "high-dimensional" points. * The float[] is stored without cloning and so is subject to overwrite. */ //public void setAllCoords(float[] coords) { proxyFor.setAllCoords(coords); } /** * Retrieves the "high-dimensional" coordinates of this point, or null if not set. * The float[] is returned without cloning and so is subject to overwrite. */ public float[] getAllCoords() { return proxyFor.getAllCoords(); } /** * Copies the high-dimensional coordinates at the specified indices * into this point's (untransformed) X, Y, and Z fields. * If a index is out of range (0-based), it is ignored and the value is not changed. */ public void useCoordsXYZ(int xIndex, int yIndex, int zIndex) { proxyFor.useCoordsXYZ(xIndex, yIndex, zIndex); } //}}} //{{{ get/setPrev, isBreak //################################################################################################## /** * Sets the point that precedes this one. * This matters to "chainable" points, like vectors and triangles. * For other points, it does nothing. * @param pt the point preceding this one in seqence */ //public void setPrev(KPoint pt) { proxyFor.setPrev(pt); } /** * Gets the point preceding this one in the chain. * @return the preceding point, or null if (a) this is a break in the chain or (b) this is not a chainable point type. */ //public KPoint getPrev() { return proxyFor.getPrev(); } /** * True iff this is a chainable point type (e.g. vector, triangle) AND there is a chain break. */ //public boolean isBreak() { return proxyFor.isBreak(); } //}}} //{{{ is/get/set{On, Unpickable, Ghost, Color, Aspects, Width, Radius, Comment} //################################################################################################## /** Indicates whether this element will paint itself, given the chance */ public boolean isOn() { return proxyFor.isOn(); } /** Sets the painting status of this element */ public void setOn(boolean paint) { proxyFor.setOn(paint); } /** Indicates whether this point can be picked with the mouse */ public boolean isUnpickable() { return proxyFor.isUnpickable(); } /** Sets the picking status of this point */ public void setUnpickable(boolean b) { proxyFor.setUnpickable(b); } /** Indicates whether this point is a "ghost" for Mage */ public boolean isGhost() { return proxyFor.isGhost(); } /** Sets the ghost status of this point */ public void setGhost(boolean b) { proxyFor.setGhost(b); } /** Returns the color of this point, or null if it inherits from its list */ public KPaint getColor() { return proxyFor.getColor(); } /** Sets the color of this point. */ public void setColor(KPaint c) { proxyFor.setColor(c); } /** Gets the aspect string of this point */ public String getAspects() { return proxyFor.getAspects(); } /** Sets the aspect string of this point */ public void setAspects(String a) { proxyFor.setAspects(a); } /** Gets the line width of this point, if applicable */ //public int getWidth() { return proxyFor.getWidth(); } /** Sets the line width of this point, if applicable */ //public void setWidth(int w) { proxyFor.setWidth(w); } /** Gets the radius of this point, if applicable */ public float getRadius() { return proxyFor.getRadius(); } /** Sets the radius of this point, if applicable */ public void setRadius(float radius) { proxyFor.setRadius(radius); } /** Sets the point comment for this point. */ public void setComment(String cmt) { proxyFor.setComment(cmt); } /** Gets the comment for this point, which defaults to null. */ public String getComment() { return proxyFor.getComment(); } //}}} //{{{ getDrawingColor //################################################################################################## /** Returns the color that will be used to draw this point (ignoring aspects). Never null. */ public KPaint getDrawingColor() { return proxyFor.getDrawingColor(); } /** Returns the color that will be used to draw this point, taking aspects into account. Never null. */ public KPaint getDrawingColor(Engine engine) { return proxyFor.getDrawingColor(engine); } //}}} //{{{ pmHit, pmWouldHit, get/setPmMask //################################################################################################## /** * Processes a pointmaster on/off request. * @param mask the bitmask indicating which masters are being turned on/off * @param offmask the bitmask indicating which masters are already off * @param turnon true if affected points are to be turned on, * false if affected points are to be turned off. */ public void pmHit(int mask, int offmask, boolean turnon) { proxyFor.pmHit(mask, offmask, turnon); } /** Indicates whether or not the given pointmaster set would affect this point. */ public boolean pmWouldHit(int mask) { return proxyFor.pmWouldHit(mask); } public int getPmMask() { return proxyFor.getPmMask(); } public void setPmMask(int mask) { proxyFor.setPmMask(mask); } //}}} //{{{ calcBoundingBox, calcRadiusSq //################################################################################################## /** * Gets a bounding box for the current model. * @param bound the first 6 elements get set to { minX, minY, minZ, maxX, maxY, maxZ }. * Should be called with { +inf, +inf, +inf, -inf, -inf, -inf } */ public void calcBoundingBox(float[] bound) { syncCoords(); // just to be safe super.calcBoundingBox(bound); } /** * Gets the square of the radius of this model from the specified center. * @param center an array with the x, y, and z coordinates of the center * @return the square of the radius of this element, centered at center */ public float calcRadiusSq(float[] center) { syncCoords(); // just to be safe return super.calcRadiusSq(center); } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform) { syncCoords(); // just to be safe super.doTransform(engine, xform); } public void doTransform(Engine engine, Transform xform, double zoom) { syncCoords(); // just to be safe super.doTransform(engine, xform, zoom); } //}}} //{{{ paint2D, isPickedBy //################################################################################################## /** * Renders this Paintable to the specified graphics surface, * using the display settings from engine. */ public void paint2D(Engine2D engine) { super.paint2D(engine); } /** * Returns true if the specified pick hits this point, else returns false * Pays no attention to whether this point is marked as unpickable. * @param radius the desired picking radius * @param objPick whether we should try to pick solid objects in addition to points * @return the KPoint that should be counted as being picked, or null for none. * Usually this, but maybe not for object picking. */ public KPoint isPickedBy(float xx, float yy, float radius, boolean objPick) { //syncCoords(); // just to be safe return super.isPickedBy(xx, yy, radius, objPick); } //}}} //{{{ get/setName, get/setParent, toString //################################################################################################## /** Gets the name of this element */ public String getName() { return proxyFor.getName(); } /** Sets the name of this element */ public void setName(String nm) { if(proxyFor == null) super.setName(nm); // called by constructor else proxyFor.setName(nm); } /** Determines the owner (parent) of this element */ public KList getParent() { if(proxyFor == null) return super.getParent(); // called by constructor else return proxyFor.getParent(); } /** Establishes the owner (parent) of this element */ public void setParent(KList owner) { if(proxyFor == null) super.setParent(owner); // called by constructor else proxyFor.setParent(owner); } /** Gets the name of this element (same as getName()*/ public String toString() { return proxyFor.toString(); } //}}} //{{{ getKinemage //################################################################################################## /** Retrieves the Kinemage object holding this element, or null if none. */ public Kinemage getKinemage() { return proxyFor.getKinemage(); } //}}} //{{{ isVisible, isTotallyOn //################################################################################################## /** Indicates whether this element will actually be painted (i.e., is it and all its parents on?) */ public boolean isVisible() { return proxyFor.isVisible(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/io/0000755000000000000000000000000011744310054014670 5ustar rootrootking-2.21.120420/king/src/king/io/KinfileWriter.java0000644000000000000000000003011411531212652020307 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.io; import king.core.*; import king.points.*; import java.awt.Color; //import java.awt.event.*; import java.io.*; //import java.net.*; import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * KinfileWriter writes out traditional kinemage files. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 3 09:51:11 EDT 2002 */ public class KinfileWriter //extends ... implements ... { //{{{ Constants static final DecimalFormat df = driftwood.util.Strings.usDecimalFormat("0.####"); //}}} //{{{ Variable definitions //################################################################################################## PrintWriter out = null; String lastPointID = null; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public KinfileWriter() { } //}}} //{{{ save //################################################################################################## /** Writes out all the currently open kinemages */ public void save(Writer destination, String text, Collection kinemages) { out = new PrintWriter(new BufferedWriter(destination)); out.println("@text"); out.println(text.trim()); int index = 1; for(Kinemage kin : kinemages) writeKinemage(kin, index++); out.flush(); } //}}} //{{{ writeKinemage //################################################################################################## void writeKinemage(Kinemage kin, int index) { out.println("@kinemage "+index); if(!kin.getName().startsWith(KinfileParser.DEFAULT_KINEMAGE_NAME)) { out.println("@title {"+kin.getName()+"}"); } if(kin.atWhitebackground) out.println("@whitebackground"); if(kin.atOnewidth) out.println("@onewidth"); else if(kin.atThinline) out.println("@thinline"); if(kin.atPerspective) out.println("@perspective"); if(kin.atFlat) out.println("@flat"); if(kin.atListcolordominant) out.println("@listcolordominant"); if(kin.atLens > 0.0) out.println("@lens "+df.format(kin.atLens)); if(kin.atPdbfile != null) out.println("@pdbfile {"+kin.atPdbfile+"}"); if(kin.atCommand != null) out.println("@command {"+kin.atCommand+"}"); for(KPaint paint : kin.getNewPaintMap().values()) { if(paint.isAlias()) out.println("@colorset {"+paint+"} "+paint.getAlias()); else { //out.println("< Couldn't save new color "+paint+" >"); out.print("@hsvcolor {"+paint+"}"); Color color = (Color) paint.getBlackExemplar(); float[] hsv = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null); out.print(" "+df.format(360*hsv[0])+" "+df.format(100*hsv[1])+" "+df.format(100*hsv[2])); color = (Color) paint.getWhiteExemplar(); hsv = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), null); out.print(" "+df.format(360*hsv[0])+" "+df.format(100*hsv[1])+" "+df.format(100*hsv[2])); out.println(); } } for(Aspect aspect : kin.getAspects()) out.println("@"+aspect.getIndex()+"aspect {"+aspect.getName()+"}"); int idx = 1; for(KView view : kin.getViewList()) writeView(view, idx++); for(MasterGroup master : kin.masterList()) writeMaster(master, kin); if(kin.dimensionNames.size() > 0) { out.print("@dimensions"); for(String name : kin.dimensionNames) out.print(" {"+name+"}"); out.println(); } if(kin.dimensionMinMax.size() > 0) { out.print("@dimminmax"); for(Number number : kin.dimensionMinMax) out.print(" "+df.format(number.doubleValue())); out.println(); } if(kin.dimensionScale.size() > 0) { out.print("@dimscale"); for(Number number : kin.dimensionScale) out.print(" "+df.format(number.doubleValue())); out.println(); } if(kin.dimensionOffset.size() > 0) { out.print("@dimoffset"); for(Number number : kin.dimensionOffset) out.print(" "+df.format(number.doubleValue())); out.println(); } // etc. for(KGroup group : kin) writeGroup(group, kin); } //}}} //{{{ writeGroup //################################################################################################## void writeGroup(KGroup group, Kinemage kin) { int depth = group.getDepth(); if(depth == 1) { out.print("@group {"+group.getName()+"}"); if( group.isAnimate()) out.print(" animate"); if( group.is2Animate()) out.print(" 2animate"); if( group.isSelect()) out.print(" select"); } else if(depth == 2) { out.print("@subgroup {"+group.getName()+"}"); } if(depth == 1 || depth == 2) { if(! group.isOn()) out.print(" off"); if(! group.hasButton()) out.print(" nobutton"); if( group.isDominant()) out.print(" dominant"); if( group.isCollapsible()) out.print(" collapsible"); if( group.isLens()) out.print(" lens"); for(String master : group.getMasters()) out.print(" master= {"+master+"}"); out.println(); } // Even if we don't write a @(sub)group line, recurse thru children for(AGE age : group) { if(age instanceof KList) writeList((KList) age, kin); else if(age instanceof KGroup) writeGroup((KGroup) age, kin); } } //}}} //{{{ writeList //################################################################################################## void writeList(KList list, Kinemage kin) { out.print("@"+list.getType()+"list {"+list.getName()+"}"); if(list.getInstance() != null) out.print(" instance= {"+list.getInstance().getName()+"}"); if(! list.isOn()) out.print(" off"); if(! list.hasButton()) out.print(" nobutton"); if( list.isLens()) out.print(" lens"); KPaint paint = list.getColor(); if(paint == null) paint = KPalette.defaultColor; if(paint.isAlias()) out.print(" color= {"+paint+"}"); else out.print(" color= "+paint); if(list.getType() == KList.VECTOR || list.getType() == KList.DOT) { if(list.getWidth() != 2) out.print(" width= "+list.getWidth()); } else if(list.getType() == KList.BALL || list.getType() == KList.SPHERE || list.getType() == KList.RING) { out.print(" radius= "+df.format(list.getRadius())); if(list.getNoHighlight()) out.print(" nohighlight"); } else if(list.getType() == KList.ARROW) { out.print(" radius= "+df.format(list.getRadius())); out.print(" angle= "+df.format(list.getAngle())); } if(list.getAlpha() != 255) out.print(" alpha= "+df.format(list.getAlpha()/255.0)); for(String master : list.getMasters()) out.print(" master= {"+master+"}"); //if(list.getDimension() != 3) out.print(" dimension= "+list.getDimension()); if(list.getDimension() > 3) out.print(" dimension= "+list.getDimension()); if(list.getScreen()) out.print(" screen"); if(list.getRear()) out.print(" rear"); if(list.getFore()) out.print(" fore"); out.println(); lastPointID = null; for(KPoint point : list) { writePoint(point, list, kin); lastPointID = point.getName(); } } //}}} //{{{ writePoint //################################################################################################## void writePoint(KPoint point, KList list, Kinemage kin) { if(point.getComment() != null) out.print("<"+point.getComment()+">"); String pointID = point.getName(); if(pointID.equals(lastPointID)) out.print("{\"}"); else out.print("{"+pointID+"}"); if(point.getPmMask() != 0) out.print("'"+kin.fromPmBitmask(point.getPmMask())+"' "); if(point.getAspects() != null) out.print("("+point.getAspects()+") "); if(point.isBreak()) out.print("P "); if(point.isUnpickable()) out.print("U "); if(point.isGhost()) out.print("ghost "); if(point instanceof TrianglePoint && point.isBreak()) out.print("X "); // because triangle- and ribbonlists don't break for P else if(point instanceof VectorPoint) { VectorPoint v = (VectorPoint)point; if(v.getWidth() > 0 && v.getWidth() != list.getWidth()) out.print("width"+v.getWidth()+" "); } else if(point instanceof BallPoint) { BallPoint b = (BallPoint)point; if(b.getRadius() > 0f) out.print("r="+df.format(b.getRadius())+" "); } else if(point instanceof MarkerPoint) { MarkerPoint m = (MarkerPoint)point; if(m.getStyle() != 0) out.print("s="+m.getStyle()+" "); } /* XXX-DEBUG * / else if(point instanceof TrianglePoint) { if((point.multi & point.SEQ_EVEN_BIT) != 0) out.print(" "); else out.print(" "); } /* XXX-DEBUG */ KPaint paint = point.getColor(); if(paint != null && paint != list.getColor()) out.print(paint+" "); float[] coords = point.getAllCoords(); if(coords == null) out.println(df.format(point.getX())+" "+df.format(point.getY())+" "+df.format(point.getZ())); else { for(int i = 0; i < coords.length; i++) out.print(df.format(coords[i])+" "); out.println(); } } //}}} //{{{ writeView, writeMaster //################################################################################################## void writeView(KView view, int index) { out.println("@"+index+"viewid {"+view.getName()+"}"); out.println("@"+index+"span "+view.getSpan()); out.println("@"+index+"zslab "+(view.getClip()*200f)); float[] center = view.getCenter(); out.println("@"+index+"center "+df.format(center[0])+" "+df.format(center[1])+" "+df.format(center[2])); int[] axes = view.getViewingAxes(); if(axes != null) out.println("@"+index+"axischoice "+(axes[0]+1)+" "+(axes[1]+1)+" "+(axes[2]+1)); // Writen out Mage-style, for a post-multiplied matrix out.print("@"+index+"matrix"); for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) out.print(" "+df.format(view.xform[j][i])); } out.println(); } void writeMaster(MasterGroup master, Kinemage kin) { out.print("@master {"+master.getName()+"}"); //if(! master.isOn()) out.print(" off"); if(! master.hasButton()) out.print(" nobutton"); if(master.getIndent()) out.print(" indent"); out.println(); if(master.pm_mask != 0) { out.println("@pointmaster '"+kin.fromPmBitmask(master.pm_mask)+"' {"+master.getName()+"}"); } } ///}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/io/KinfileParser.java0000644000000000000000000014775011531212652020306 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.io; import king.core.*; import king.points.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * KinfileParser is a second-generation kinemage * file loader. It contains the logic for interpretting all * the tokens in the file, and returns one or more new kinemages * when it's finished. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Apr 9 08:23:25 EDT 2003 */ public class KinfileParser //extends ... implements ... { //{{{ Constants public static final String DEFAULT_KINEMAGE_NAME = "Kinemage #"; static final String DEFAULT_GROUP_NAME = ""; static final String IMPLIED_GROUP_NAME = "(implied)"; static final int MAX_ERRORS_REPORTED = 30; //}}} //{{{ Variable definitions //################################################################################################## // Needed for basic function LineNumberReader input; KinfileTokenizer token; // For tracking our position in the hierarchy Kinemage kinemage = null; KGroup group = null; KGroup subgroup = null; KList list = null; // Info generated by this parser Collection kinemages = new ArrayList(); StringBuffer atText = new StringBuffer(); Map viewMap = null; // created when kinemage is // Used for implementing clone= and instance= Map groupsByName = null; // created when kinemage is Map subgroupsByName = null; // created when kinemage is Map listsByName = null; // created when kinemage is // Used for storing bondrots TreeMap bondRots = null; ArrayList closedBondRots = null; int nonIntCount = 1; // Used for high-dimensional kinemages int groupDimension = 3; int subgroupDimension = 3; //}}} //{{{ Constructor(s), parse //################################################################################################## /** * Creates a new KinfileParser. * Call parse() to read and interpret a file. */ public KinfileParser() { input = null; token = null; } /** * Reads and interprets the kinemage file supplied. * * @throws IOException if input stream throws any such exceptions during parsing */ public void parse(LineNumberReader in) throws IOException { input = in; token = new KinfileTokenizer(input); keywordLoop(); for(Kinemage k : kinemages) k.initAll(); } //}}} //{{{ getKinemages, getText, getErrors, error, getCharsRead //################################################################################################## /** Returns an unmodifiable Collection of Kinemage objects contained in this file */ public Collection getKinemages() { return Collections.unmodifiableCollection(kinemages); } /** Returns the concatenated result of all @text sections in this file */ public String getText() { return atText.toString(); } void error(String msg) { SoftLog.err.println("[line "+(input.getLineNumber()+1)+"] "+msg); } /** Returns the number of characters read in thus far */ public long getCharsRead() { if(token != null) return token.getCharsRead(); else return 0; } //}}} //{{{ keywordLoop //################################################################################################## void keywordLoop() throws IOException { String s; while(!token.isEOF()) { // Kinder to user to be case insensitive for keywords, at least s = token.getString().toLowerCase(); if(!token.isKeyword()) { error("Dangling token '"+s+"' outside any keywords"); token.advanceToKeyword(); } // METADATA else if(s.equals("@text")) doText(); else if(s.equals("@title")) doTitle(); else if(s.equals("@copyright")) doCopyright(); else if(s.equals("@caption")) doCaption(); else if(s.equals("@mage")) token.advanceToKeyword();//ignored else if(s.equals("@prekin")) token.advanceToKeyword();//ignored else if(s.equals("@pdbfile")) doPdbFile(); else if(s.equals("@command")) doCommand(); else if(s.equals("@dimensions")) doDimensions(); else if(s.equals("@dimension")) doDimensions(); //deprecated else if(s.equals("@dimminmax")) doDimMinMax(); else if(s.equals("@dimscale")) doDimScale(); else if(s.equals("@dimoffset")) doDimOffset(); // VIEWS else if(s.endsWith("viewid")) doViewID(); else if(s.endsWith("zoom")) doZoom(); else if(s.endsWith("span")) doSpan(); else if(s.endsWith("zslab")) doClip(); else if(s.endsWith("zclip")) doClip(); //deprecated else if(s.endsWith("ztran")) token.advanceToKeyword(); //ignored else if(s.endsWith("center")) doCenter(); else if(s.endsWith("matrix")) doMatrix(); else if(s.endsWith("axischoice")) doAxisChoice(); // DISPLAY OPTIONS else if(s.equals("@whitebackground")) doWhiteBackground(); else if(s.equals("@whiteback")) doWhiteBackground(); //deprecated else if(s.equals("@whitebkg")) doWhiteBackground(); //deprecated else if(s.equals("@onewidth")) doOnewidth(); else if(s.equals("@thinline")) doThinline(); else if(s.equals("@perspective")) doPerspective(); else if(s.equals("@flat")) doFlat(); else if(s.equals("@flatland")) doFlat(); //deprecated else if(s.equals("@xytranslation")) doFlat(); //deprecated else if(s.equals("@listcolordominant")) doListColorDominant(); else if(s.equals("@listcolordom")) doListColorDominant(); //deprecated else if(s.equals("@lens")) doLens(); // MASTERS, ASPECTS, AND COLORS else if(s.endsWith("aspect")) doAspect(); else if(s.equals("@master")) doMaster(); else if(s.equals("@pointmaster")) doPointmaster(); else if(s.equals("@colorset")) doColorset(); else if(s.equals("@hsvcolor")) doHsvColor(); else if(s.equals("@hsvcolour")) doHsvColor(); // KINEMAGES, GROUPS, AND SUBGROUPS else if(s.equals("@kinemage")) doKinemage(); else if(s.equals("@group")) doGroup(); else if(s.equals("@subgroup")) doSubgroup(); else if(s.equals("@set")) doSubgroup(); //deprecated // LISTS else if(s.equals("@vectorlist")) doList(KList.VECTOR); else if(s.equals("@vector")) doList(KList.VECTOR); //deprecated else if(s.equals("@labellist")) doList(KList.LABEL); else if(s.equals("@label")) doList(KList.LABEL); //deprecated else if(s.equals("@dotlist")) doList(KList.DOT); else if(s.equals("@dot")) doList(KList.DOT); //deprecated else if(s.equals("@ringlist")) doList(KList.RING); else if(s.equals("@ring")) doList(KList.RING); //deprecated else if(s.equals("@balllist")) doList(KList.BALL); else if(s.equals("@ball")) doList(KList.BALL); //deprecated else if(s.equals("@spherelist")) doList(KList.SPHERE); else if(s.equals("@sphere")) doList(KList.SPHERE); //deprecated else if(s.equals("@trianglelist")) doList(KList.TRIANGLE); else if(s.equals("@triangle")) doList(KList.TRIANGLE); //deprecated else if(s.equals("@ribbonlist")) doList(KList.RIBBON); else if(s.equals("@ribbon")) doList(KList.RIBBON); //deprecated else if(s.equals("@marklist")) doList(KList.MARK); else if(s.equals("@mark")) doList(KList.MARK); //deprecated else if(s.equals("@arrowlist")) doList(KList.ARROW); else if(s.equals("@arrow")) doList(KList.ARROW); //deprecated else { // In the future, we'd like to save this as-is. error("Unrecognized keyword '"+s+"' will be ignored"); token.advanceToKeyword(); } }//while not EOF if(kinemage != null) kinemage.setBondRots(closeBondRots()); } //}}} //{{{ doKinemage, checkKinemage //################################################################################################## void doKinemage() throws IOException { if(kinemage != null) kinemage.setBondRots(closeBondRots()); kinemage = new Kinemage(DEFAULT_KINEMAGE_NAME+(kinemages.size()+1)); kinemages.add(kinemage); group = null; subgroup = null; list = null; viewMap = new HashMap(); groupsByName = new HashMap(); subgroupsByName = new HashMap(); listsByName = new HashMap(); bondRots = new TreeMap(); closedBondRots = new ArrayList(); token.advance(); while(!token.isEOF() && !token.isKeyword()) { if(token.isInteger()) kinemage.setName(DEFAULT_KINEMAGE_NAME+token.getInt()); else if(token.isIdentifier()) kinemage.setName(token.getString()); //KiNG extension else error("Unrecognized token '"+token.getString()+"' will be ignored"); token.advance(); } } void checkKinemage() { if(kinemage == null) { kinemage = new Kinemage(DEFAULT_KINEMAGE_NAME+(kinemages.size()+1)); kinemages.add(kinemage); group = null; subgroup = null; list = null; viewMap = new HashMap(); groupsByName = new HashMap(); subgroupsByName = new HashMap(); listsByName = new HashMap(); bondRots = new TreeMap(); closedBondRots = new ArrayList(); error("'"+token.getString()+"' was found before encountering @kinemage"); } } //}}} //{{{ doGroup, checkGroup //################################################################################################## void doGroup() throws IOException { checkKinemage(); group = new KGroup(DEFAULT_GROUP_NAME); kinemage.add(group); subgroup = null; list = null; groupDimension = 3; token.advance(); // Entire @group must be on a single line while(!token.isEOF() && !token.isKeyword() && !token.isBOL()) { if(token.isIdentifier()) { group.setName(token.getString()); token.advance(); } else if(token.isLiteral()) { String s = token.getString(); if(s.equals("animate")) group.setAnimate(true); else if(s.equals("2animate")) group.set2Animate(true); else if(s.equals("select")) group.setSelect(true); else if(s.equals("off")) group.setOn(false); else if(s.equals("dominant")) group.setDominant(true); else if(s.equals("recessiveon") || s.equals("collapsable") || s.equals("collapsible")) group.setCollapsible(true); else if(s.equals("nobutton")) group.setHasButton(false); else if(s.equals("lens")) group.setLens(true); else error("Unrecognized literal '"+s+"' will be ignored"); token.advance(); } else if(token.isProperty()) { String s = token.getString(); token.advance(); // past key if(s.equals("master=")) { if(token.isIdentifier()) { kinemage.ensureMasterExists(token.getString()); group.addMaster(token.getString()); } else error("master= was not followed by an identifier"); } // Clone is a full or "deep" copy of the original // Instance is a lightweight copy that uses the same underlying point data else if(s.equals("clone=") || s.equals("instance=")) { if(token.isIdentifier()) { KGroup template = groupsByName.get(token.getString()); if(template != null) group.getChildren().addAll( ((KGroup)template.clone(s.equals("clone="))).getChildren() ); } else error(s+" was not followed by an identifier"); } else if(s.equals("dimension=")) { if(token.isInteger()) groupDimension = token.getInt(); else error(s+" was not followed by an integer"); } else if(s.equals("moview=")) { if(token.isInteger()) group.setMoview(token.getInt()); else error(s+" was not followed by an integer"); } else error("Unrecognized property '"+s+" "+token.getString()+"' will be ignored"); token.advance(); // past value } else { error("Unrecognized token '"+token.getString()+"' will be ignored"); token.advance(); } } // Done last, after we have our final name groupsByName.put(group.getName(), group); } void checkGroup() { checkKinemage(); if(group == null) { group = new KGroup(IMPLIED_GROUP_NAME); group.setHasButton(false); kinemage.add(group); subgroup = null; list = null; groupDimension = 3; } } //}}} //{{{ doSubgroup, checkSubgroup //################################################################################################## void doSubgroup() throws IOException { checkGroup(); subgroup = new KGroup(DEFAULT_GROUP_NAME); group.add(subgroup); list = null; subgroupDimension = 3; token.advance(); // Entire @subgroup must be on a single line while(!token.isEOF() && !token.isKeyword() && !token.isBOL()) { if(token.isIdentifier()) { subgroup.setName(token.getString()); token.advance(); } else if(token.isLiteral()) { String s = token.getString(); if(s.equals("off")) subgroup.setOn(false); else if(s.equals("dominant")) subgroup.setDominant(true); else if(s.equals("recessiveon") || s.equals("collapsable") || s.equals("collapsible")) subgroup.setCollapsible(true); else if(s.equals("nobutton")) subgroup.setHasButton(false); else if(s.equals("lens")) subgroup.setLens(true); else error("Unrecognized literal '"+s+"' will be ignored"); token.advance(); } else if(token.isProperty()) { String s = token.getString(); token.advance(); // past key if(s.equals("master=")) { if(token.isIdentifier()) { kinemage.ensureMasterExists(token.getString()); subgroup.addMaster(token.getString()); } else error("master= was not followed by an identifier"); } // Clone is a full or "deep" copy of the original // Instance is a lightweight copy that uses the same underlying point data else if(s.equals("clone=") || s.equals("instance=")) { if(token.isIdentifier()) { KGroup template = subgroupsByName.get(token.getString()); if(template != null) subgroup.getChildren().addAll( ((KGroup)template.clone(s.equals("clone="))).getChildren() ); } else error(s+" was not followed by an identifier"); } else if(s.equals("dimension=")) { if(token.isInteger()) subgroupDimension = token.getInt(); else error(s+" was not followed by an integer"); } else error("Unrecognized property '"+s+" "+token.getString()+"' will be ignored"); token.advance(); // past value } else { error("Unrecognized token '"+token.getString()+"' will be ignored"); token.advance(); } } // Done last, after we have our final name subgroupsByName.put(subgroup.getName(), subgroup); } void checkSubgroup() { checkGroup(); if(subgroup == null) { subgroup = new KGroup(IMPLIED_GROUP_NAME); subgroup.setHasButton(false); group.add(subgroup); list = null; subgroupDimension = 3; } } //}}} //{{{ doList //################################################################################################## void doList(String kListType) throws IOException { checkSubgroup(); list = new KList(kListType, DEFAULT_GROUP_NAME); subgroup.add(list); list.setDimension(3); if(subgroupDimension != 3) list.setDimension(subgroupDimension); else if(groupDimension != 3) list.setDimension(groupDimension); if(kListType == KList.MARK) list.setStyle(MarkerPoint.SQUARE_L); token.advance(); // Entire @list must be on a single line and may be terminated by the first point ID boolean listIdFound = false; boolean numberFound = false; while(!token.isEOF() && !token.isKeyword() && (!token.isIdentifier() || !listIdFound) && !token.isBOL() && !numberFound) { if(token.isIdentifier()) { list.setName(token.getString()); listIdFound = true; token.advance(); } else if(token.isLiteral()) { String s = token.getString(); if(s.equals("off")) list.setOn(false); else if(s.equals("nobutton")) list.setHasButton(false); else if(s.equals("lens")) list.setLens(true); else if(s.startsWith("nohi")) list.setNoHighlight(true); // for doing bondrots else if(s.endsWith("bondrot")) { double angle = 0; char firstChar = s.charAt(0); int bondNum = -1; if (Character.isDigit(firstChar)) { bondNum = Character.getNumericValue(firstChar); } else { bondNum = nonIntCount; nonIntCount++; } token.advance(); if(token.isNumber()) { angle = token.getFloat(); } else { error("angle for bondrot not number"); } storeBondRot(bondNum, list.getName(), angle); } else if(s.startsWith("screen")) list.setScreen(true); // DAK 090212 else if(s.startsWith("rear")) list.setRear(true); else if(s.startsWith("fore")) list.setFore(true); else error("Unrecognized literal '"+s+"' will be ignored"); token.advance(); } else if(token.isProperty()) { String s = token.getString(); token.advance(); // past key if(s.equals("color=") || s.equals("colour=")) { // e.g. red e.g. @colorset {HelixCap} if( (token.isLiteral() || token.isIdentifier()) && kinemage.getAllPaintMap().containsKey(token.getString()) ) { list.setColor(kinemage.getPaintForName(token.getString())); } else error("color= was followed by unknown color '"+token.getString()+"'"); } else if(s.equals("master=")) { if(token.isIdentifier()) { kinemage.ensureMasterExists(token.getString()); list.addMaster(token.getString()); if(token.getString().equals("alpha") || token.getString().equals("beta")) // (ARK Spring2010) { list.setSecStruc(token.getString()); // (ARK Spring2010) } } else error("master= was not followed by an identifier"); } // Clone is a full or "deep" copy of the original else if(s.equals("clone=")) { if(token.isIdentifier()) { KList template = listsByName.get(token.getString()); if(template != null) list.getChildren().addAll( ((KList)template.clone(true)).getChildren() ); } else error("clone= was not followed by an identifier"); } // Instance is a lightweight copy that uses the same underlying point data else if(s.equals("instance=")) { if(token.isIdentifier()) { KList template = listsByName.get(token.getString()); if(template != null) list.setInstance(template); } else error("instance= was not followed by an identifier"); } else if(s.equals("radius=")) { if(token.isNumber()) list.setRadius(token.getFloat()); else error("radius= was not followed by a number"); } else if(s.equals("angle=")) { if(token.isNumber()) list.setAngle(token.getFloat()); else error("angle= was not followed by a number"); } else if(s.equals("alpha=")) // opacity, from 1 (opaque) to 0 (transparent) { if(token.isNumber()) { double alpha = token.getFloat(); if(alpha < 0) alpha = 0; else if(alpha > 1) alpha = 1; list.setAlpha((int)(alpha*255 + 0.5)); } else error("alpha= was not followed by a number"); } else if(s.equals("width=")) { if(token.isInteger()) list.setWidth(token.getInt()); else error("width= was not followed by an integer"); } else if(s.equals("size=")) { if(token.isInteger()) {} // useless property from legacy kins else error("size= was not followed by an integer"); } else if(s.equals("dimension=")) { if(token.isInteger()) list.setDimension(token.getInt()); else error(s+" was not followed by an integer"); } else error("Unrecognized property '"+s+" "+token.getString()+"' will be ignored"); token.advance(); // past value } else if (token.isNumber()) { error("Lone number list token without property detected; switching to points"); numberFound = true; } else { error("Unrecognized list token '"+token.getString()+"' will be ignored"); token.advance(); } } // Done last, after we have our final name listsByName.put(list.getName(), list); // Read in points until we hit another keyword or EOF KPoint prevPoint = null; while(!token.isEOF() && !token.isKeyword()) { prevPoint = doPoint(kListType, prevPoint, list.getDimension()); } // only stores list as bondRot if bondRot mode is on. if (rotModeIsOn()) { storeRotList(list); } } //}}} //{{{ doPoint //################################################################################################## /** Only called by doList() */ KPoint doPoint(String kListType, KPoint prevPoint, int dimension) throws IOException { KPoint point; String defaultPointID; if(prevPoint == null) defaultPointID = list.getName(); else defaultPointID = prevPoint.getName(); if(kListType.equals(KList.VECTOR)) point = new VectorPoint(defaultPointID, (VectorPoint)prevPoint); else if(kListType.equals(KList.DOT)) point = new DotPoint(defaultPointID); else if(kListType.equals(KList.MARK)) point = new MarkerPoint(defaultPointID); else if(kListType.equals(KList.LABEL)) point = new LabelPoint(defaultPointID); else if(kListType.equals(KList.TRIANGLE)) point = new TrianglePoint(defaultPointID, (TrianglePoint)prevPoint); else if(kListType.equals(KList.RIBBON)) point = new TrianglePoint(defaultPointID, (TrianglePoint)prevPoint); else if(kListType.equals(KList.RING)) point = new RingPoint(defaultPointID); else if(kListType.equals(KList.BALL)) point = new BallPoint(defaultPointID); else if(kListType.equals(KList.SPHERE)) point = new SpherePoint(defaultPointID); else if(kListType.equals(KList.ARROW)) point = new ArrowPoint(defaultPointID, (VectorPoint)prevPoint); else throw new IllegalArgumentException("Unrecognized list type '"+kListType+"'"); float[] allCoords = null; if(dimension > 3) { allCoords = new float[dimension]; point.setAllCoords(allCoords); } boolean pointIdFound = false; int coordsFound = 0; while(!token.isEOF() && !token.isKeyword() && (!token.isIdentifier() || !pointIdFound) && coordsFound < dimension) { if(token.isIdentifier()) { pointIdFound = true; if(!token.getString().equals("\"")) point.setName(token.getString()); } else if(token.isNumber()) { float f = token.getFloat(); if(coordsFound == 0) point.setX(f); else if(coordsFound == 1) point.setY(f); else if(coordsFound == 2) point.setZ(f); if(allCoords != null) allCoords[coordsFound] = f; coordsFound++; } else if(token.isAspect()) point.setAspects(token.getString()); else if(token.isSingleQuote()) point.setPmMask(kinemage.toPmBitmask(token.getString(), true, true)); else if(token.isLiteral()) { String s = token.getString(); if(s.equals("P") || s.equals("p") || s.equals("M") || s.equals("m")) { if(kListType.equals(KList.TRIANGLE) || kListType.equals(KList.RIBBON)) {} // see "X" flag, below else point.setPrev(null); } else if(s.equals("X") || s.equals("x")) point.setPrev(null); // P doesn't work for triangle, ribbon else if(s.equals("L") || s.equals("l") || s.equals("D") || s.equals("d")) {} else if(s.equals("T") || s.equals("t")) {} // to avoid error messages for Mage ribbon/triangle lists else if(s.equals("U") || s.equals("u")) point.setUnpickable(true); else if(s.equals("ghost")) point.setGhost(true); else if(s.startsWith("width")) { try { point.setWidth(Integer.parseInt(s.substring(5))); } catch(NumberFormatException ex) {} } else if(kinemage.getAllPaintMap().containsKey(s)) point.setColor(kinemage.getPaintForName(s)); else error("Unrecognized literal '"+s+"' will be ignored"); } else if(token.isProperty()) { String s = token.getString(); token.advance(); // past key if(s.equals("r=")) { if(token.isNumber()) point.setRadius(token.getFloat()); else error("r= was not followed by a number"); } else error("Unrecognized property '"+s+" "+token.getString()+"' will be ignored"); } else if(token.isComment()) { point.setComment(token.getString()); } else error("Unrecognized token '"+token.getString()+"' will be ignored"); token.advance(); } // Avoid creating bogus points from trailing junk, like empty comments. if(pointIdFound || coordsFound > 0) { list.add(point); return point; } else { error("Junk point will be ignored (no ID, no coordinates)"); return null; // point not added to list, so it's GC'd } } //}}} //{{{ do{Text, Caption, Title, Copyright, PdbFile, Command} //################################################################################################## void doText() throws IOException { atText.append(token.advanceToKeyword().trim()).append("\n\n"); } void doCaption() throws IOException { checkKinemage(); atText.append("CAPTION for "+kinemage.getName()+":\n "); atText.append(token.advanceToKeyword().trim()).append("\n\n"); } void doTitle() throws IOException { checkKinemage(); token.advance(); if(token.isIdentifier()) { kinemage.setName(token.getString()); token.advance(); } else error("@title was not followed by an identifier; found '"+token.getString()+"' instead"); } void doCopyright() throws IOException { token.advance(); if(token.isIdentifier()) { if(kinemage != null) atText.append("'"+kinemage.getName()+"' is "); atText.append("COPYRIGHT (C) ").append(token.getString()).append("\n\n"); token.advance(); } else error("@copyright was not followed by an identifier; found '"+token.getString()+"' instead"); } void doPdbFile() throws IOException { checkKinemage(); token.advance(); if(token.isIdentifier()) { kinemage.atPdbfile = token.getString(); token.advance(); } else error("@pdbfile was not followed by an identifier; found '"+token.getString()+"' instead"); } void doCommand() throws IOException { checkKinemage(); token.advance(); if(token.isIdentifier()) { kinemage.atCommand = token.getString(); token.advance(); } else error("@command was not followed by an identifier; found '"+token.getString()+"' instead"); } //}}} //{{{ getView, do{ViewID, Zoom, Span, Clip} //################################################################################################## KView getView() { checkKinemage(); String s = token.getString(); StringBuffer keybuf = new StringBuffer(); int i; for(char c = s.charAt(i = 1); Character.isDigit(c); c = s.charAt(++i)) { keybuf.append(c); } String key = keybuf.toString(); if(key.equals("")) key = "1"; KView view = viewMap.get(key); if(view == null) { view = new KView(kinemage); kinemage.addView(view); viewMap.put(key, view); } return view; } void doViewID() throws IOException { KView view = getView(); token.advance(); if(token.isIdentifier()) { view.setName(token.getString()); token.advance(); } else error("@viewid was not followed by an identifier; found '"+token.getString()+"' instead"); } void doZoom() throws IOException { KView view = getView(); token.advance(); if(token.isNumber()) { view.setZoom(token.getFloat()); token.advance(); } else error("@zoom was not followed by a number; found '"+token.getString()+"' instead"); } void doSpan() throws IOException { KView view = getView(); token.advance(); if(token.isNumber()) { view.setSpan(token.getFloat()); token.advance(); } else error("@span was not followed by a number; found '"+token.getString()+"' instead"); } void doClip() throws IOException { KView view = getView(); token.advance(); if(token.isNumber()) { view.setClip(token.getFloat() / 200f); token.advance(); } else error("@zslab was not followed by a number; found '"+token.getString()+"' instead"); } //}}} //{{{ do{Center, Matrix, AxisChoice} //################################################################################################## void doCenter() throws IOException { KView view = getView(); try { float cx, cy, cz; token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); cx = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); cy = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); cz = token.getFloat(); token.advance(); view.setCenter(cx, cy, cz); } catch(IllegalArgumentException ex) { error("@center was not followed by 3 numbers; found '"+token.getString()+"' instead"); } } void doAxisChoice() throws IOException { KView view = getView(); try { int ix, iy, iz; token.advance(); if(!token.isInteger()) throw new IllegalArgumentException(); ix = token.getInt(); token.advance(); if(!token.isInteger()) throw new IllegalArgumentException(); iy = token.getInt(); token.advance(); if(!token.isInteger()) throw new IllegalArgumentException(); iz = token.getInt(); token.advance(); view.setViewingAxes(new int[] { Math.max(ix-1, 0), Math.max(iy-1, 0), Math.max(iz-1, 0) }); } catch(IllegalArgumentException ex) { error("@axischoice was not followed by 3 integers; found '"+token.getString()+"' instead"); } } void doMatrix() throws IOException { KView view = getView(); try { // This KiNG-style (premultiplied) transformation matrix // is the transpose of the Mage-style (postmultiplied) matrix. float[][] km = new float[3][3]; token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[0][0] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[1][0] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[2][0] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[0][1] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[1][1] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[2][1] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[0][2] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[1][2] = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); km[2][2] = token.getFloat(); token.advance(); view.setMatrix(km); } catch(IllegalArgumentException ex) { error("@matrix was not followed by 9 numbers; found '"+token.getString()+"' instead"); } } //}}} //{{{ do{WhiteBackground, Onewidth, Thinline, Perspective, Flat, ListColorDominant, Lens} //################################################################################################## void doWhiteBackground() throws IOException { checkKinemage(); kinemage.atWhitebackground = true; token.advance(); } void doOnewidth() throws IOException { checkKinemage(); kinemage.atOnewidth = true; token.advance(); } void doThinline() throws IOException { checkKinemage(); kinemage.atThinline = true; token.advance(); } void doPerspective() throws IOException { checkKinemage(); kinemage.atPerspective = true; token.advance(); } void doFlat() throws IOException { checkKinemage(); kinemage.atFlat = true; token.advance(); } void doListColorDominant() throws IOException { checkKinemage(); kinemage.atListcolordominant = true; token.advance(); } void doLens() throws IOException { checkKinemage(); token.advance(); if(token.isNumber()) { kinemage.atLens = token.getDouble(); token.advance(); } else error("@lens was not followed by a number; found '"+token.getString()+"' instead"); } //}}} //{{{ do{Colorset, HsvColor} //################################################################################################## void doColorset() throws IOException { checkKinemage(); Map pmap = kinemage.getAllPaintMap(); try { String cset, color; token.advance(); if(!token.isIdentifier()) throw new IllegalArgumentException(); cset = token.getString(); token.advance(); if(!token.isLiteral()) throw new IllegalArgumentException(); color = token.getString(); if(!pmap.containsKey(color)) throw new IllegalArgumentException(); token.advance(); KPaint paint = KPaint.createAlias(cset, kinemage.getPaintForName(color)); kinemage.addPaint(paint); } catch(IllegalArgumentException ex) { error("@colorset was not followed by an identifier and a recognized color; found '"+token.getString()+"' instead"); } } void doHsvColor() throws IOException { checkKinemage(); try { String colorName; float bHue, bSat, bVal, wHue, wSat, wVal; token.advance(); if(!token.isIdentifier()) throw new IllegalArgumentException(); colorName = token.getString(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); bHue = wHue = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); bSat = wSat = token.getFloat(); token.advance(); if(!token.isNumber()) throw new IllegalArgumentException(); bVal = wVal = token.getFloat(); token.advance(); if(token.isNumber()) { wHue = token.getFloat(); token.advance(); if(token.isNumber()) { wSat = token.getFloat(); token.advance(); if(token.isNumber()) { wVal = token.getFloat(); token.advance(); } } } KPaint paint = KPaint.createLightweightHSV(colorName, bHue, bSat, bVal, wHue, wSat, wVal); kinemage.addPaint(paint); } catch(IllegalArgumentException ex) { error("@hsvcolor was not followed by an identifier and 3 - 6 numbers; found '"+token.getString()+"' instead"); } } //}}} //{{{ do{Master, Pointmaster} //################################################################################################## // This just creates the master button ahead of time, // so it will appear in the specified order later on. void doMaster() throws IOException { checkKinemage(); token.advance(); if(token.isIdentifier()) { MasterGroup master = kinemage.getMasterByName(token.getString()); token.advance(); while(!token.isEOF() && !token.isKeyword()) { if(token.isLiteral()) { if(token.getString().equals("indent")) master.setIndent(true); else if(token.getString().equals("on")) master.setOnForced(true); // will turn on ALL target groups during sync else if(token.getString().equals("off")) master.setOnForced(false); // will turn off ALL target groups during sync else error("Unrecognized literal '"+token.getString()+"' will be ignored"); } else error("Unrecognized token '"+token.getString()+"' will be ignored"); token.advance(); } } else error("@master was not followed by an identifier; found '"+token.getString()+"' instead"); } // This both creates the master and sets its pointmaster bitflags // Syntax: // @pointmaster 'x' {Button name} [indent] // Possible to do the following (but why?): // @pointmaster 'abc' {Multi-master} [indent] void doPointmaster() throws IOException { checkKinemage(); try { String charFlags, masterName; token.advance(); if(!token.isSingleQuote()) throw new IllegalArgumentException(); charFlags = token.getString(); token.advance(); if(!token.isIdentifier()) throw new IllegalArgumentException(); masterName = token.getString(); token.advance(); MasterGroup master = kinemage.getMasterByName(masterName); master.setPmMask(charFlags); while(!token.isEOF() && !token.isKeyword()) { if(token.isLiteral()) { if(token.getString().equals("indent")) master.setIndent(true); else if(token.getString().equals("on")) master.setOnForced(true); // will turn on ALL target pts during sync (no effect) else if(token.getString().equals("off")) master.setOnForced(false); // will turn off ALL target pts during sync else error("Unrecognized literal '"+token.getString()+"' will be ignored"); } else error("Unrecognized token '"+token.getString()+"' will be ignored"); token.advance(); } } catch(IllegalArgumentException ex) { error("@pointmaster was not followed by a single-quoted string and an identifier; found '"+token.getString()+"' instead"); } } //}}} //{{{ doAspect //################################################################################################## void doAspect() throws IOException { checkKinemage(); String s = token.getString(); StringBuffer keybuf = new StringBuffer(); int i; for(char c = s.charAt(i = 1); Character.isDigit(c); c = s.charAt(++i)) { keybuf.append(c); } String key = keybuf.toString(); if(key.equals("")) key = "1"; try { int index = Integer.parseInt(key); token.advance(); if(!token.isIdentifier()) throw new IllegalArgumentException(); kinemage.createAspect(token.getString(), new Integer(index)); token.advance(); } catch(NumberFormatException ex) { error("@aspect was not recognized; '"+key+"' is not an integer"); } catch(IllegalArgumentException ex) { error("@aspect was not followed by an identifier; found '"+token.getString()+"' instead"); } } //}}} //{{{ doDimensions, doDimMinMax, doDimScale, doDimOffset //################################################################################################## void doDimensions() throws IOException { checkKinemage(); token.advance(); if(token.isIdentifier()) while(token.isIdentifier()) { kinemage.dimensionNames.add(token.getString()); token.advance(); } else error("@dimensions was not followed by 1+ identifiers; found '"+token.getString()+"' instead"); } void doDimMinMax() throws IOException { checkKinemage(); token.advance(); if(token.isNumber()) while(token.isNumber()) { kinemage.dimensionMinMax.add(new Double(token.getDouble())); token.advance(); } else error("@dimminmax was not followed by 1+ numbers; found '"+token.getString()+"' instead"); } void doDimScale() throws IOException { checkKinemage(); token.advance(); if(token.isNumber()) while(token.isNumber()) { kinemage.dimensionScale.add(new Double(token.getDouble())); token.advance(); } else error("@dimscale was not followed by 1+ numbers; found '"+token.getString()+"' instead"); } void doDimOffset() throws IOException { checkKinemage(); token.advance(); if(token.isNumber()) while(token.isNumber()) { kinemage.dimensionOffset.add(new Double(token.getDouble())); token.advance(); } else error("@dimoffset was not followed by 1+ numbers; found '"+token.getString()+"' instead"); } //}}} //{{{ storeBondRot, storeRotList //################################################################################################## /** * Private functions used to store bondrots. Numbered BondRots work by creating a new bond rot * everytime a #bondrot is encountered in the kinemage. A bondrot is closed whenever a new #bondrot * is encountered with a # less than or equal to the bondrot. */ private void storeBondRot(int bondNum, String nm, double angle) { Integer bondInt = new Integer(bondNum); Map higherRots = new TreeMap(); if(bondNum != -1) higherRots = bondRots.tailMap(bondInt); if(!higherRots.isEmpty()) { for(BondRot toBeClosed : higherRots.values()) { toBeClosed.setOpen(false); closedBondRots.add(toBeClosed); //System.out.println("Bond rots less than or equal to " + bondInt + " closed"); } } // to clear map of all bondrots with higher numbers if(bondNum != -1) bondRots = new TreeMap(bondRots.headMap(bondInt)); BondRot newRot = new BondRot(bondNum, nm, angle); bondRots.put(bondInt, newRot); } // for putting a klist into all currently open bondrots. private void storeRotList(KList list) { for(BondRot rot : bondRots.values()) if(rot.isOpen()) rot.add(list); } //}}} //{{{ closeBondRots, rotModeIsOn //################################################################################################## private ArrayList closeBondRots() { // need to close all open bondrots if(bondRots != null) { for(BondRot toBeClosed : bondRots.values()) { toBeClosed.setOpen(false); closedBondRots.add(toBeClosed); } bondRots = null; } return closedBondRots; } /** * Returns whether bondRots have been encountered in the kinemage. */ public boolean rotModeIsOn() { return !bondRots.isEmpty(); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ Main, main //################################################################################################## /** * Main() function for running as an application. * Takes a kinemage on stdin and writes tokens to stdout */ public void Main() { System.out.println("Read "+kinemages.size()+" kinemages:"); for(Kinemage kin : kinemages) { for(AGE age : KIterator.allNonPoints(kin)) { if(age instanceof Kinemage) System.out.println(" Kinemage: "+age.getName()+" ("+age.getChildren().size()+" groups)"); else if(age instanceof KGroup && age.getDepth() == 1) System.out.println(" Group: "+age.getName()+" ("+age.getChildren().size()+" subgroups)"); else if(age instanceof KGroup && age.getDepth() == 2) System.out.println(" Subgroup: "+age.getName()+" ("+age.getChildren().size()+" lists)"); else if(age instanceof KList) System.out.println(" List: "+age.getName()+" ("+age.getChildren().size()+" points)"); } System.out.println(); } System.out.println(); } public static void main(String[] args) { try { Reader input = new InputStreamReader(System.in); if(args.length > 0) { System.err.println("*** Takes a kinemage on stdin or as first arg and writes structure to stdout."); input = new FileReader(args[0]); } long time = System.currentTimeMillis(); KinfileParser parser = new KinfileParser(); parser.parse(new LineNumberReader(input)); time = System.currentTimeMillis() - time; System.out.println("END OF FILE ("+time+" ms)"); System.gc(); System.out.println("Using "+(Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory())+" bytes"); parser.Main(); } catch(Throwable t) { t.printStackTrace(SoftLog.err); } } //}}} }//class king-2.21.120420/king/src/king/io/KinfileLoader.java0000644000000000000000000001207011531212652020242 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.io; import king.io.*; //import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; import java.util.zip.*; //import java.util.regex.*; import javax.swing.*; import driftwood.util.*; //}}} /** * KinfileLoader is a system for loading * kinemages in a background thread. It messages a * Listener with the results of its actions. * This is the level where auto-detection of gzipped * kinemages takes place. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Fri Apr 11 10:07:14 EDT 2003 */ public class KinfileLoader implements ActionListener { //{{{ Constants //}}} //{{{ INTERFACE: Listener //################################################################################################## /** * Listener is an interface for monitoring * the progress of a kinemage that's being loaded in the * background. All these methods are called from the * Swing event-handling thread. */ public interface Listener //extends ... implements ... { /** * Messaged periodically as the parser reads the file. */ public void updateProgress(long charsRead); /** * Messaged if anything is thrown during the loading process. * This generally means loadingComplete() won't be called. */ public void loadingException(Throwable t); /** * Messaged if and when loading finished successfully. */ public void loadingComplete(KinfileParser parser); }//class //}}} //{{{ Variable definitions //################################################################################################## InputStream input; Listener listener; Thread thread; javax.swing.Timer timer; KinfileParser parser; Throwable thrown = null; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a loader with the given input and listener, * starts the job in the background, and returns as soon * as the job has begun. */ public KinfileLoader(InputStream input, Listener listener) { this.input = input; this.listener = listener; parser = new KinfileParser(); timer = new javax.swing.Timer(1000, this); // update every 1000ms thread = new Thread(new ReflectiveRunnable(this, "backgroundWorker")); thread.setDaemon(true); timer.start(); thread.start(); } //}}} //{{{ backgroundWorker //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** Should not be called directly. Does loading in the background. */ public void backgroundWorker() { try { LineNumberReader lnr; // Test for GZIPped files input = new BufferedInputStream(input); input.mark(10); if(input.read() == 31 && input.read() == 139) { // We've found the gzip magic numbers... input.reset(); input = new GZIPInputStream(input); } else input.reset(); lnr = new LineNumberReader(new InputStreamReader(input)); parser.parse(lnr); SwingUtilities.invokeLater(new ReflectiveRunnable(this, "successCallback")); lnr.close(); } catch(Throwable t) { thrown = t; SwingUtilities.invokeLater(new ReflectiveRunnable(this, "errorCallback")); } } //}}} //{{{ actionPerformed //################################################################################################## /** Messaged when the progress needs to be updated */ public void actionPerformed(ActionEvent ev) { listener.updateProgress(parser.getCharsRead()); } //}}} //{{{ successCallback, errorCallback //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** Should not be called directly. Notifies listener that kinemage has been loaded. */ public void successCallback() { timer.stop(); listener.loadingComplete(parser); parser = null; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** Should not be called directly. Notifies listener of I/O or other error. */ public void errorCallback() { timer.stop(); listener.loadingException(thrown); parser = null; thrown = null; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/io/KinfileTokenizer.java0000644000000000000000000004352411531212652021016 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.io; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * KinfileTokenizer is a second-generation implementation * of a tokenizer that complies with the Kinemage File Format, v1.0. * * It takes in a stream of characters and outputs discrete tokens, * stripped of whitespace and quoting characters. * [Equals signs (=) and at signs (@) are preserved.] * * It currently does not check for the presence of illegal characters. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Mon Apr 7 13:34:38 EDT 2003 */ public class KinfileTokenizer //extends ... implements ... { //{{{ Constants static final String TYPE_NONE = "nil-type"; static final String TYPE_IDENTIFIER = "identifier"; static final String TYPE_COMMENT = "comment"; static final String TYPE_ASPECT = "aspect"; static final String TYPE_SINGLE_QUOTE = "s-quote"; static final String TYPE_DOUBLE_QUOTE = "d-quote"; static final String TYPE_KEYWORD = "keyword"; static final String TYPE_PROPERTY = "property"; static final String TYPE_INTEGER = "integer"; static final String TYPE_NUMBER = "number"; static final String TYPE_LITERAL = "literal"; static final int NIL_CHARACTER = -1; //}}} //{{{ Variable definitions //################################################################################################## LineNumberReader in; char[] buffer = new char[256]; int bufferIndex = 0; int firstChar; // first char of next token long charsRead; // a count of how many characters we've read String stringValue; double doubleValue; String type; boolean isBOL; boolean isEOF; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new KinfileTokenizer on the given input stream, * and advances it to the first token. * @throws IOException if there's a problem reading from the input stream */ public KinfileTokenizer(LineNumberReader input) throws IOException { in = input; charsRead = 0; isEOF = false; // A trick -- this makes the tokenizer think that // the first token is at the beginning of a line. firstChar = '\n'; advance(); } //}}} //{{{ buffer{Append, ToString, Clear} //################################################################################################## /** * We use our own custom buffer system because * StringBuffers allocate memory 16 chars (32 bytes) * at a time, which is then wasted when we convert * them to Strings. */ void bufferAppend(char ch) { if(bufferIndex >= buffer.length) { char[] newBuffer = new char[buffer.length * 2]; System.arraycopy(buffer, 0, newBuffer, 0, buffer.length); buffer = newBuffer; error("Token too long; increased buffer size to "+buffer.length); } buffer[bufferIndex++] = ch; } /** Returns the current buffer contents as a string */ String bufferToString() { return new String(buffer, 0, bufferIndex); } /** Empties the buffer contents */ void bufferClear() { bufferIndex = 0; } //}}} //{{{ in_read, getCharsRead, error //################################################################################################## /** * A replacement for in.read() that allows us to track the * total number of character read so far. * Causes a performance penalty of less than 1%. */ int in_read() throws IOException { charsRead++; return in.read(); } /** Returns the number of characters read in thus far */ public long getCharsRead() { return charsRead; } void error(String msg) { SoftLog.err.println("[line "+(in.getLineNumber()+1)+"] "+msg); } //}}} //{{{ advance //################################################################################################## /** * Advances this tokenizer to the next token in the stream. * The type of token can be queried with the isXXX() functions, * and the value (in the appropriate form) can be retrieved with the getXXX() functions. * @throws IOException if there's a problem reading from the input stream */ public void advance() throws IOException { int c; // Init variables stringValue = null; doubleValue = Double.NaN; type = TYPE_NONE; isBOL = false; bufferClear(); // Get first character (from stream or previously read) if(firstChar > 0) c = firstChar; else c = in_read(); firstChar = NIL_CHARACTER; // Skip leading whitespace while(c == ' ' || c == '\n' || c == ',' || c == '\t' || c == '\f') { // LNR translates all linefeeds into '\n' isBOL = (c == '\n'); c = in_read(); } // Guess token type based on first character if(c == -1) { isEOF = true; return; } else if(c == '{') { readQuoted('{', '}'); type = TYPE_IDENTIFIER; } else if(c == '<') { readQuoted('<', '>'); type = TYPE_COMMENT; } else if(c == '(') { readQuoted('(', ')'); type = TYPE_ASPECT; } else if(c == '\'') { readQuoted('\''); type = TYPE_SINGLE_QUOTE; } else if(c == '"') { readQuoted('"'); type = TYPE_DOUBLE_QUOTE; } else { bufferAppend((char)c); readUnquoted(); // type is set in readUnquoted() } bufferClear(); } //}}} //{{{ advanceToKeyword //################################################################################################## /** * Reads ahead until encountering a keyword token, * one that begins with an at sign (@) at the beginning of a line. * All the characters from the current position to the * start of the keyword are returned by this function. * @throws IOException if there's a problem reading from the input stream */ public String advanceToKeyword() throws IOException { int c; // Init variables stringValue = null; doubleValue = Double.NaN; type = TYPE_NONE; isBOL = false; bufferClear(); // Get first character (from stream or previously read) if(firstChar > 0) c = firstChar; else c = in_read(); firstChar = NIL_CHARACTER; // Read until we find a keyword StringBuffer longBuf = new StringBuffer(1024); while(!(isBOL && c == '@')) { longBuf.append((char)c); // LNR translates all linefeeds into '\n' isBOL = (c == '\n'); c = in_read(); if(c == -1) { isEOF = true; return longBuf.toString(); } } String retVal = longBuf.toString(); bufferAppend((char)c); readUnquoted(); bufferClear(); return retVal; } //}}} //{{{ readQuoted //################################################################################################## /** Sets stringValue and doubleValue; appends characters to buffer */ void readQuoted(char open, char close) throws IOException { int c, depth = 1; while(depth > 0) { c = in_read(); if(c == -1) { depth = 0; error("Quoted token terminated by EOF; type = "+open+""+close); } else if(c == open) { ++depth; bufferAppend((char)c); } else if(c == close) { if(--depth > 0) bufferAppend((char)c); } else bufferAppend((char)c); } stringValue = bufferToString(); doubleValue = Double.NaN; } /** Sets stringValue and doubleValue; appends characters to buffer */ void readQuoted(char close) throws IOException { int c, depth = 1; while(depth > 0) { c = in_read(); if(c == -1) { depth = 0; error("Quoted token terminated by EOF; type = "+close+""+close); } else if(c == close) depth--; else bufferAppend((char)c); } stringValue = bufferToString(); doubleValue = Double.NaN; } //}}} //{{{ readUnquoted //################################################################################################## /** Sets stringValue, doubleValue, and type; appends characters to buffer */ void readUnquoted() throws IOException { int c; while(true) { c = in_read(); if(c == -1 || c == ' ' || c == '\n' || c == ',' || c == '\t' || c == '\f' || c == '{' || c == '<' || c == '(' || c == '\'' || c == '"') { firstChar = c; break; } else if(c == '=') { bufferAppend((char)c); break; } else bufferAppend((char)c); } /* This block allows spaces (but not newlines) to come between the word and the equals sign */ while(c == ' ' || c == ',' || c == '\t') { c = in_read(); if(c == '=') { bufferAppend('='); firstChar = NIL_CHARACTER; } else firstChar = c; } /* This block allows spaces (but not newlines) to come between the word and the equals sign */ stringValue = bufferToString(); doubleValue = Double.NaN; c = stringValue.charAt(0); if(stringValue.startsWith("@") && isBOL()) type = TYPE_KEYWORD; else if(stringValue.endsWith("=")) type = TYPE_PROPERTY; else if(('0' <= c && c <= '9') || c == '.' || c == '-' || c == '+') { try { doubleValue = Double.parseDouble(stringValue); if(doubleValue == Math.rint(doubleValue)) type = TYPE_INTEGER; else type = TYPE_NUMBER; } catch(NumberFormatException ex) { type = TYPE_LITERAL; } } else type = TYPE_LITERAL; } //}}} //{{{ is{BOL, EOF, etc}, getType //################################################################################################## /** Returns true if the current token occured at the Beginning Of a Line */ public boolean isBOL() { return isBOL; } /** Returns true if we've reached the End Of File */ public boolean isEOF() { return isEOF; } /** Returns true if the current token is an identifier */ public boolean isIdentifier() { return (type == TYPE_IDENTIFIER); } /** Returns true if the current token is a comment */ public boolean isComment() { return (type == TYPE_COMMENT); } /** Returns true if the current token is an aspect */ public boolean isAspect() { return (type == TYPE_ASPECT); } /** Returns true if the current token is single quoted */ public boolean isSingleQuote() { return (type == TYPE_SINGLE_QUOTE); } /** Returns true if the current token is double quoted */ public boolean isDoubleQuote() { return (type == TYPE_DOUBLE_QUOTE); } /** Returns true if the current token is a keyword */ public boolean isKeyword() { return (type == TYPE_KEYWORD); } /** Returns true if the current token is a property */ public boolean isProperty() { return (type == TYPE_PROPERTY); } /** Returns true if the current token is an integer */ public boolean isInteger() { return (type == TYPE_INTEGER); } /** Returns true if the current token is some kind of number */ public boolean isNumber() { return (type == TYPE_NUMBER || type == TYPE_INTEGER); } /** Returns true if the current token is a string literal */ public boolean isLiteral() { return (type == TYPE_LITERAL); } /** Returns the type of the current token as a string */ public String getType() { return type; } //}}} //{{{ get{String, Int, Float, Double} //################################################################################################## /** * Returns the value of the current token as a string, * or null if there is no token available. */ public String getString() { //if(stringValue == null) // throw new IllegalStateException("No token is available"); return stringValue; } /** * Returns the value of the current token as an integer. * @throws IllegalStateException if the token is not an integer */ public int getInt() { if(!isInteger() || Double.isNaN(doubleValue) || doubleValue != Math.rint(doubleValue)) throw new IllegalStateException("[line "+(in.getLineNumber()+1)+"] Token is not an integer"); return (int)doubleValue; } /** * Returns the value of the current token as a float. * @throws IllegalStateException if the token is not a number */ public float getFloat() { if(!isNumber() || Double.isNaN(doubleValue)) throw new IllegalStateException("[line "+(in.getLineNumber()+1)+"] Token is not a number"); return (float)doubleValue; } /** * Returns the value of the current token as a double. * @throws IllegalStateException if the token is not a number */ public double getDouble() { if(!isNumber() || Double.isNaN(doubleValue)) throw new IllegalStateException("[line "+(in.getLineNumber()+1)+"] Token is not a number"); return doubleValue; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ Main() and main() //################################################################################################## /** * Main() function for running as an application. * Takes a kinemage on stdin and writes tokens to stdout */ public void Main(boolean doCSS) throws IOException { if(doCSS) { System.out.println("

"); while(!isEOF()) { String start, end, s = getString(); if(isBOL()) System.out.print("\n
"); if(isIdentifier()) { start = "{"; end = "}"; } else if(isComment()) { start = "<"; end = ">"; } else if(isAspect()) { start = "("; end = ")"; } else if(isSingleQuote()) { start = "'"; end = "'"; } else if(isDoubleQuote()) { start = "\""; end = "\""; } else { start = ""; end = ""; } System.out.print(""+start+s+end+" "); if(isKeyword() && (s.equals("@text") || s.equals("@caption"))) { System.out.print("\n
");
                    System.out.print(advanceToKeyword());
                    System.out.print("
\n"); } else advance(); } System.out.println("\n
"); } else { String s; long time = System.currentTimeMillis(); while(!isEOF()) { s = getString(); if(isKeyword() && (s.equals("@text") || s.equals("@caption"))) { System.out.println("[>>> "+s+"]"); System.out.println(advanceToKeyword()); System.out.println("[<<< "+s+"]"); } else { if(isBOL()) System.out.println("[BOL:"+justifyLeft(getType(), 10)+"] "+s); else System.out.println("[ "+justifyLeft(getType(), 10)+"] "+s); advance(); } } time = System.currentTimeMillis() - time; System.out.println("END OF FILE ("+time+" ms)"); System.out.println(); System.out.println(); } } public static void main(String[] args) { boolean doCSS = false; for(int i = 0; i < args.length; i++) { if("-css".equals(args[i])) doCSS = true; else System.err.println("*** Takes a kinemage on stdin and writes tokens to stdout."); } try { new KinfileTokenizer(new LineNumberReader(new InputStreamReader(System.in))).Main(doCSS); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } //}}} //{{{ justifyLeft //################################################################################################## /** * Pads a string with spaces and left-justifies it. * * @param s the string to justify * @param len the desired length */ public static String justifyLeft(String s, int len) { StringBuffer sb = new StringBuffer(s); sb.ensureCapacity(len); for(int i = s.length(); i < len; i++) sb.append(' '); return sb.toString(); } //}}} }//class king-2.21.120420/king/src/king/Kinglet.java0000644000000000000000000000515711531212654016532 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; //import java.text.*; //import java.util.*; import javax.swing.*; //import driftwood.util.SoftLog; //}}} /** * Kinglet is the KiNG loader applet, to allow KiNG to be used in browsers. * *

Begun on Sun Jun 9 14:53:42 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class Kinglet extends JApplet implements MouseListener { public static final String NORMAL = "normal"; public static final String FLAT = "flat"; public static final String LAUNCHER = "launcher"; KingMain kMain = null; String mode = null; public void init() { String m = getParameter("mode"); if(m == null) mode = NORMAL; else { m = m.toLowerCase(); if(m.equals("flat")) mode = FLAT; else if(m.equals("launcher")) mode = LAUNCHER; else mode = NORMAL; } if(mode.equals(NORMAL)) { Icon kingletIcon = new ImageIcon(getClass().getResource("images/kinglet-logo.jpg")); getContentPane().add(new JLabel(kingletIcon), BorderLayout.CENTER); validate(); } else if(mode.equals(LAUNCHER)) { Icon kingletIcon = new ImageIcon(getClass().getResource("images/king-btn.png")); try { String launcherButton = this.getParameter("launcherImage"); if(launcherButton != null) kingletIcon = new ImageIcon(new URL(this.getDocumentBase(), launcherButton)); } catch(Exception ex) { System.err.println(ex.getMessage()); } getContentPane().add(new JLabel(kingletIcon), BorderLayout.CENTER); addMouseListener(this); validate(); } } public void start() { if(!mode.equals(LAUNCHER)) launch(); } public void mouseClicked(MouseEvent ev) { launch(); } void launch() { kMain = new KingMain(this, (mode.equals(FLAT))); kMain.Main(); } /** Initiates shutdown by calling dispose() on the windows. */ public void stop() { if(kMain != null) kMain.shutdown(); kMain = null; // so it can be GC'd } public void mouseEntered(MouseEvent ev) {} public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) {} public void mouseReleased(MouseEvent ev) {} }//class king-2.21.120420/king/src/king/painters/0000755000000000000000000000000011744310054016106 5ustar rootrootking-2.21.120420/king/src/king/painters/JoglPainter.java0000644000000000000000000004112411531212644021171 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.painters; import king.core.*; import king.points.MarkerPoint; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; import javax.media.opengl.*; import javax.media.opengl.glu.*; import com.sun.opengl.util.*; // for GLUT //}}} /** * JoglPainter is a hardware-accelerated Painter that uses * the JOGL Java bindings for OpenGL. * *

Copyright (C) 2004-2007 by Ian W. Davis. All rights reserved. *
Begun on Sat Jun 5 16:15:26 EDT 2004 */ public class JoglPainter implements Painter { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## GL gl; GLU glu; GLUT glut; Rectangle clipRgn = new Rectangle(); int currFont = GLUT.BITMAP_HELVETICA_12; double[] xPoints = new double[6]; double[] yPoints = new double[6]; double[] circle4, circle8, circle16, circle32; //}}} //{{{ Constructor(s) //############################################################################## public JoglPainter(GLAutoDrawable drawable) { super(); gl = drawable.getGL(); //glu = drawable.getGLU(); glu = new GLU(); glut = new GLUT(); // This is necessary for antialiasing, but also for transparent objects. gl.glEnable(gl.GL_BLEND); gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA); // Antialiasing for points and lines. // Almost everything we draw is done as polygons, so this doesn't help. //gl.glEnable(gl.GL_POINT_SMOOTH); //gl.glEnable(gl.GL_LINE_SMOOTH); // Antialiasing doesn't work for polygons (easily). // Best bet is to render multiple times with slight offset to accum. buffer. // See notes in JoglCanvas. // THIS CODE DOESN"T WORK: //gl.glBlendFunc(gl.GL_SRC_ALPHA_SATURATE, gl.GL_ONE); //gl.glEnable(gl.GL_POLYGON_SMOOTH); //gl.glDisable(gl.GL_DEPTH_TEST); circle4 = makeCircle(4); circle8 = makeCircle(8); circle16 = makeCircle(16); circle32 = makeCircle(32); } //}}} //{{{ makeCircle, fillOval, drawOval //############################################################################## double[] makeCircle(int nVertices) { double[] c = new double[2*nVertices]; for(int i = 0; i < nVertices; i++) { double angle = 2 * Math.PI * (double)i / (double)nVertices; // The /2 is a correction for using diameter instead of radius in fillOval() c[2*i] = (Math.cos(angle) / 2); c[2*i+1] = (Math.sin(angle) / 2); } return c; } void fillOval(double x, double y, double width, double height) { double[] circle; double diam = (width > height ? width : height); if(diam <= 3) circle = circle4; else if(diam <= 8) circle = circle8; else if(diam <= 16) circle = circle16; else circle = circle32; double cx = x + width/2; double cy = y + height/2; gl.glBegin(gl.GL_POLYGON); for(int i = 0; i < circle.length; i+=2) { gl.glVertex2d((cx + width*circle[i]), -(cy + height*circle[i+1])); } gl.glEnd(); } void drawOval(double x, double y, double width, double height) { double[] circle; double diam = (width > height ? width : height); if(diam <= 3) circle = circle4; else if(diam <= 8) circle = circle8; else if(diam <= 16) circle = circle16; else circle = circle32; double cx = x + width/2; double cy = y + height/2; gl.glBegin(gl.GL_LINE_LOOP); for(int i = 0; i < circle.length; i+=2) { gl.glVertex2d((cx + width*circle[i]), -(cy + height*circle[i+1])); } gl.glEnd(); } //}}} //{{{ drawLine, fillRect, drawRect //############################################################################## void drawLine(double x1, double y1, double x2, double y2) { gl.glBegin(gl.GL_LINES); gl.glVertex2d(x1, -y1); gl.glVertex2d(x2, -y2); gl.glEnd(); } void fillRect(double x, double y, double width, double height) { gl.glRectd(x, -y, x+width, -(y+height)); } void drawRect(double x, double y, double width, double height) { gl.glBegin(gl.GL_LINE_LOOP); gl.glVertex2d(x, -y); gl.glVertex2d(x, -(y+height)); gl.glVertex2d(x+width, -(y+height)); gl.glVertex2d(x+width, -y); gl.glEnd(); } //}}} //{{{ paintBall //################################################################################################## public void paintBall(Paint paint, double x, double y, double z, double r, boolean showHighlight) { double d = (2.0*r); if(d < 2) d = 2; // make sure balls don't disappear // one disk setPaint(paint); fillOval(x-r, y-r, d, d); // Black rim, causes ~10% speed penalty but useful for visualization! try { Color c = (Color) paint; if(d >= 10 && c.getAlpha() == 255) { setPaint(KPaint.black); // wants to merge with the background drawOval(x-r, y-r, d, d); } } catch(ClassCastException ex) { ex.printStackTrace(); System.err.println("JoglPainter: tried painting with non-Color type of Paint"); } // highlight if(showHighlight) { double off = 0.5 * r; d = (int)(0.3*r)+1; setPaint(Color.white); // wants to be bright white no matter what fillOval(x-off, y-off, d, d); } } //}}} //{{{ paintDot //################################################################################################## public void paintDot(Paint paint, double x, double y, double z, int width) { double off = width/2; setPaint(paint); if(width == 1) fillRect((x-off), (y-off), width, width); else { width += 1; // not big enough otherwise fillOval(x-off, y-off, width, width); } } //}}} //{{{ paintLabel //################################################################################################## public void paintLabel(Paint paint, String label, double x, double y, double z) { setPaint(paint); gl.glRasterPos2d(x, -y); //glut.glutBitmapString(gl, currFont, label); glut.glutBitmapString(currFont, label); } //}}} //{{{ paintMarker //################################################################################################## public void paintMarker(Paint paint, double x, double y, double z, int width, int paintStyle) { double cx = x, cy = y; double one = width, two = 2*width, three = 3*width, four = 4*width, five = 5*width, six = 6*width, seven = 7*width, ten = 10*width, eleven = 11*width; this.setPaint(paint); // Large discs and boxes if((paintStyle & MarkerPoint.BOX_L) != 0) this.fillRect(cx-five, cy-five, eleven, eleven); else if((paintStyle & MarkerPoint.DISC_L) != 0) this.fillOval(cx-five, cy-five, eleven, eleven); // Medium discs and boxes if((paintStyle & MarkerPoint.BOX_M) != 0) this.fillRect(cx-three, cy-three, seven, seven); else if((paintStyle & MarkerPoint.DISC_M) != 0) this.fillOval(cx-three, cy-three, seven, seven); // Small discs and boxes if((paintStyle & MarkerPoint.BOX_S) != 0) this.fillRect(cx-one, cy-one, three, three); else if((paintStyle & MarkerPoint.DISC_S) != 0) this.fillOval(cx-one, cy-one, three, three); // Crosses if((paintStyle & MarkerPoint.CROSS_S) != 0) { this.drawLine(cx, cy-one, cx, cy+one); this.drawLine(cx-one, cy, cx+one, cy); } if((paintStyle & MarkerPoint.CROSS_M) != 0) { this.drawLine(cx, cy-three, cx, cy+three); this.drawLine(cx-three, cy, cx+three, cy); } if((paintStyle & MarkerPoint.CROSS_L) != 0) { this.drawLine(cx, cy-five, cx, cy+five); this.drawLine(cx-five, cy, cx+five, cy); } if((paintStyle & MarkerPoint.CROSS_2) != 0) { this.drawLine(cx-one, cy-five, cx-one, cy+five); this.drawLine(cx+one, cy-five, cx+one, cy+five); this.drawLine(cx-five, cy-one, cx+five, cy-one); this.drawLine(cx-five, cy+one, cx+five, cy+one); } // X's if((paintStyle & MarkerPoint.X_S) != 0) { this.drawLine(cx-one, cy-one, cx+one, cy+one); this.drawLine(cx-one, cy+one, cx+one, cy-one); } if((paintStyle & MarkerPoint.X_M) != 0) { this.drawLine(cx-three, cy-three, cx+three, cy+three); this.drawLine(cx-three, cy+three, cx+three, cy-three); } if((paintStyle & MarkerPoint.X_L) != 0) { this.drawLine(cx-five, cy-five, cx+five, cy+five); this.drawLine(cx-five, cy+five, cx+five, cy-five); } if((paintStyle & MarkerPoint.X_2) != 0) { this.drawLine(cx-four, cy-five, cx+five, cy+four); this.drawLine(cx-five, cy-four, cx+four, cy+five); this.drawLine(cx-four, cy+five, cx+five, cy-four); this.drawLine(cx-five, cy+four, cx+four, cy-five); } // Squares if((paintStyle & MarkerPoint.SQUARE_S) != 0) this.drawRect(cx-one, cy-one, two, two); if((paintStyle & MarkerPoint.SQUARE_M) != 0) this.drawRect(cx-three, cy-three, six, six); if((paintStyle & MarkerPoint.SQUARE_L) != 0) this.drawRect(cx-five, cy-five, ten, ten); // Circles if((paintStyle & MarkerPoint.RING_S) != 0) this.drawOval(cx-one, cy-one, two, two); if((paintStyle & MarkerPoint.RING_M) != 0) this.drawOval(cx-three, cy-three, six, six); if((paintStyle & MarkerPoint.RING_L) != 0) this.drawOval(cx-five, cy-five, ten, ten); } //}}} //{{{ paintSphereDisk //################################################################################################## public void paintSphereDisk(Paint paint, double x, double y, double z, double r) { double d = (2.0*r); if(d < 2) d = 2; // make sure balls don't disappear // one disk setPaint(paint); fillOval(x-r, y-r, d, d); } //}}} //{{{ paintTriangle //################################################################################################## public void paintTriangle(Paint paint, double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3) { setPaint(paint); gl.glBegin(GL.GL_TRIANGLES); gl.glVertex2d(x1, -y1); gl.glVertex2d(x2, -y2); gl.glVertex2d(x3, -y3); gl.glEnd(); } //}}} //{{{ paintVector //################################################################################################## public void paintVector(Paint paint, int width, int widthCue, double x1, double y1, double z1, double x2, double y2, double z2) { setPaint(paint); prettyLine(x1, y1, x2, y2, KPalette.lineWidths[width-1][widthCue]); } //}}} //{{{ prettyLine //################################################################################################## /** Draws a thick line with nice ends, using fillPolygon(). Slightly slower (30-35%) than fastLine(). */ void prettyLine(double x1, double y1, double x2, double y2, double width) { double s, e, abs_x2_x1, abs_y2_y1; s = -width / 2; // Start offset e = s + width; // End offset abs_x2_x1 = Math.abs(x2 - x1); abs_y2_y1 = Math.abs(y2 - y1); // horizontal -- if( abs_x2_x1 > abs_y2_y1 ) { // left to right if( x1 < x2 ) { xPoints[0] = x1 ; xPoints[1] = x1+s; xPoints[2] = x1; xPoints[3] = x2; xPoints[4] = x2-s; xPoints[5] = x2; yPoints[0] = y1+s; yPoints[1] = y1; yPoints[2] = y1+e; yPoints[3] = y2+e; yPoints[4] = y2; yPoints[5] = y2+s; } // right to left else { xPoints[0] = x1 ; xPoints[1] = x1-s; xPoints[2] = x1; xPoints[3] = x2; xPoints[4] = x2+s; xPoints[5] = x2; yPoints[0] = y1+s; yPoints[1] = y1; yPoints[2] = y1+e; yPoints[3] = y2+e; yPoints[4] = y2; yPoints[5] = y2+s; } } // vertical | else { // top to bottom if( y1 < y2 ) { xPoints[0] = x1+s; xPoints[1] = x1; xPoints[2] = x1+e; xPoints[3] = x2+e; xPoints[4] = x2; xPoints[5] = x2+s; yPoints[0] = y1 ; yPoints[1] = y1+s; yPoints[2] = y1; yPoints[3] = y2; yPoints[4] = y2-s; yPoints[5] = y2; } // bottom to top else { xPoints[0] = x1+s; xPoints[1] = x1; xPoints[2] = x1+e; xPoints[3] = x2+e; xPoints[4] = x2; xPoints[5] = x2+s; yPoints[0] = y1 ; yPoints[1] = y1-s; yPoints[2] = y1; yPoints[3] = y2; yPoints[4] = y2+s; yPoints[5] = y2; } } gl.glBegin(GL.GL_POLYGON); gl.glVertex2d(xPoints[0], -yPoints[0]); gl.glVertex2d(xPoints[1], -yPoints[1]); gl.glVertex2d(xPoints[2], -yPoints[2]); gl.glVertex2d(xPoints[3], -yPoints[3]); gl.glVertex2d(xPoints[4], -yPoints[4]); gl.glVertex2d(xPoints[5], -yPoints[5]); gl.glEnd(); } //}}} //{{{ drawOval //################################################################################################## public void drawOval(Paint paint, double x, double y, double z, double width, double height) { setPaint(paint); drawOval((x - width/2), (y - height/2), width, height); } public void drawOval(Paint paint, int linewidth, int widthCue, double x, double y, double z, double width, double height) { setPaint(paint); double startx = (x - width/2.0 - linewidth/2.0); double starty = (y - height/2.0 - linewidth/2.0); double diamx = ( width + linewidth); double diamy = (height + linewidth); for(int i = 0; i < linewidth; i++) { drawOval(startx, starty, diamx, diamy); startx += 1; starty += 1; diamx -= 2; diamy -= 2; } } //}}} //{{{ setFont, getLabelWidth/Ascent/Descent //############################################################################## public void setFont(Font f) { int sz = f.getSize(); if(sz <= 10) currFont = GLUT.BITMAP_HELVETICA_10; else if(sz <= 14) currFont = GLUT.BITMAP_HELVETICA_12; else currFont = GLUT.BITMAP_HELVETICA_18; } public int getLabelWidth(String s) { return glut.glutBitmapLength(currFont, s); } public int getLabelAscent(String s) { if(currFont == GLUT.BITMAP_HELVETICA_10) return 10; else if(currFont == GLUT.BITMAP_HELVETICA_12) return 12; else if(currFont == GLUT.BITMAP_HELVETICA_18) return 18; else return 1; } public int getLabelDescent(String s) { return getLabelAscent(s)/4; } //}}} //{{{ setPaint, setViewport, clearCanvas //############################################################################## void setPaint(Paint p) { try { Color c = (Color) p; gl.glColor4f( c.getRed()/255f, c.getGreen()/255f, c.getBlue()/255f, c.getAlpha()/255f); } catch(ClassCastException ex) { ex.printStackTrace(); System.err.println("JoglPainter: tried painting with non-Color type of Paint"); } } public void setViewport(int x, int y, int width, int height) { clipRgn.setBounds(x, y, width, height); gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); //glu.gluOrtho2D(0.0, width, -height, 0.0); glu.gluOrtho2D(x, x+width, y-height, y); gl.glViewport(x, y, width, height); } public void clearCanvas(Color c) { gl.glClearColor(c.getRed()/255f, c.getGreen()/255f, c.getBlue()/255f, c.getAlpha()/255f); gl.glClear(GL.GL_COLOR_BUFFER_BIT); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/painters/StandardPainter.java0000644000000000000000000003367511531212644022052 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.painters; import king.core.*; import king.points.MarkerPoint; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * StandardPainter paints kinemage graphics using standard calls * on a java.awt.Graphics object. Must be initialized with setGraphics() * before use! * *

Copyright (C) 2004-2007 by Ian W. Davis. All rights reserved. *
Begun on Fri May 21 19:11:16 EDT 2004 */ public class StandardPainter implements Painter { //{{{ Constants /* * Useful for benchmarking. Setting to false keeps us from drawing to screen. * This should optimize away at compile time, like #ifdef in C. * * On my G4 PowerBook, transforming and all the paint calcs account for * only about 10% of the total time required to render one frame. */ protected static final boolean REALLY_PAINT = true; //}}} //{{{ Variable definitions //############################################################################## boolean forceAA; Graphics2D g = null; Font font = null; FontMetrics metrics = null; Rectangle clipRgn = new Rectangle(0,0,1,1); int[] xPoints = new int[6]; int[] yPoints = new int[6]; //}}} //{{{ Constructor(s) //############################################################################## public StandardPainter(boolean forceAntialiasing) { super(); this.forceAA = forceAntialiasing; } //}}} //{{{ paintBall //################################################################################################## public void paintBall(Paint paint, double x, double y, double z, double r, boolean showHighlight) { int d = (int)(2.0*r + 0.5); if(d < 2) d = 2; // make sure balls don't disappear // one disk g.setPaint(paint); if(REALLY_PAINT) g.fillOval((int)(x-r), (int)(y-r), d, d); // Black rim, causes ~10% speed penalty but useful for visualization! try { Color c = (Color) paint; if(d >= 10 && c.getAlpha() == 255) { g.setPaint(KPaint.black); // wants to merge with the background if(REALLY_PAINT) g.drawOval((int)(x-r), (int)(y-r), d, d); } } catch(ClassCastException ex) { ex.printStackTrace(); System.err.println("StandardPainter: tried painting with non-Color type of Paint"); } // highlight if(showHighlight) { double off = 0.5 * r; d = (int)(0.3*r)+1; g.setPaint(Color.white); // wants to be bright white no matter what if(REALLY_PAINT) g.fillOval((int)(x-off), (int)(y-off), d, d); } } //}}} //{{{ paintDot //################################################################################################## public void paintDot(Paint paint, double x, double y, double z, int width) { int off = width/2; g.setPaint(paint); if(REALLY_PAINT) g.fillRect((int)(x-off), (int)(y-off), width, width); } //}}} //{{{ paintLabel //################################################################################################## public void paintLabel(Paint paint, String label, double x, double y, double z) { g.setPaint(paint); g.setFont(font); if(REALLY_PAINT) g.drawString(label, (int)x, (int)y); } //}}} //{{{ paintMarker //################################################################################################## public void paintMarker(Paint paint, double x, double y, double z, int width, int paintStyle) { int cx = (int)x, cy = (int)y; int one = width, two = 2*width, three = 3*width, four = 4*width, five = 5*width, six = 6*width, seven = 7*width, ten = 10*width, eleven = 11*width; g.setPaint(paint); if(REALLY_PAINT) { // Large discs and boxes if((paintStyle & MarkerPoint.BOX_L) != 0) g.fillRect(cx-five, cy-five, eleven, eleven); else if((paintStyle & MarkerPoint.DISC_L) != 0) g.fillOval(cx-five, cy-five, eleven, eleven); // Medium discs and boxes if((paintStyle & MarkerPoint.BOX_M) != 0) g.fillRect(cx-three, cy-three, seven, seven); else if((paintStyle & MarkerPoint.DISC_M) != 0) g.fillOval(cx-three, cy-three, seven, seven); // Small discs and boxes if((paintStyle & MarkerPoint.BOX_S) != 0) g.fillRect(cx-one, cy-one, three, three); else if((paintStyle & MarkerPoint.DISC_S) != 0) g.fillOval(cx-one, cy-one, three, three); // Crosses if((paintStyle & MarkerPoint.CROSS_S) != 0) { g.drawLine(cx, cy-one, cx, cy+one); g.drawLine(cx-one, cy, cx+one, cy); } if((paintStyle & MarkerPoint.CROSS_M) != 0) { g.drawLine(cx, cy-three, cx, cy+three); g.drawLine(cx-three, cy, cx+three, cy); } if((paintStyle & MarkerPoint.CROSS_L) != 0) { g.drawLine(cx, cy-five, cx, cy+five); g.drawLine(cx-five, cy, cx+five, cy); } if((paintStyle & MarkerPoint.CROSS_2) != 0) { g.drawLine(cx-one, cy-five, cx-one, cy+five); g.drawLine(cx+one, cy-five, cx+one, cy+five); g.drawLine(cx-five, cy-one, cx+five, cy-one); g.drawLine(cx-five, cy+one, cx+five, cy+one); } // X's if((paintStyle & MarkerPoint.X_S) != 0) { g.drawLine(cx-one, cy-one, cx+one, cy+one); g.drawLine(cx-one, cy+one, cx+one, cy-one); } if((paintStyle & MarkerPoint.X_M) != 0) { g.drawLine(cx-three, cy-three, cx+three, cy+three); g.drawLine(cx-three, cy+three, cx+three, cy-three); } if((paintStyle & MarkerPoint.X_L) != 0) { g.drawLine(cx-five, cy-five, cx+five, cy+five); g.drawLine(cx-five, cy+five, cx+five, cy-five); } if((paintStyle & MarkerPoint.X_2) != 0) { g.drawLine(cx-four, cy-five, cx+five, cy+four); g.drawLine(cx-five, cy-four, cx+four, cy+five); g.drawLine(cx-four, cy+five, cx+five, cy-four); g.drawLine(cx-five, cy+four, cx+four, cy-five); } // Squares if((paintStyle & MarkerPoint.SQUARE_S) != 0) g.drawRect(cx-one, cy-one, two, two); if((paintStyle & MarkerPoint.SQUARE_M) != 0) g.drawRect(cx-three, cy-three, six, six); if((paintStyle & MarkerPoint.SQUARE_L) != 0) g.drawRect(cx-five, cy-five, ten, ten); // Circles if((paintStyle & MarkerPoint.RING_S) != 0) g.drawOval(cx-one, cy-one, two, two); if((paintStyle & MarkerPoint.RING_M) != 0) g.drawOval(cx-three, cy-three, six, six); if((paintStyle & MarkerPoint.RING_L) != 0) g.drawOval(cx-five, cy-five, ten, ten); } } //}}} //{{{ paintSphereDisk //################################################################################################## public void paintSphereDisk(Paint paint, double x, double y, double z, double r) { int d = (int)(2.0*r + 0.5); if(d < 2) d = 2; // make sure balls don't disappear // one disk g.setPaint(paint); if(REALLY_PAINT) g.fillOval((int)(x-r), (int)(y-r), d, d); } //}}} //{{{ paintTriangle //################################################################################################## public void paintTriangle(Paint paint, double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3) { g.setPaint(paint); xPoints[0] = (int)x1; yPoints[0] = (int)y1; xPoints[1] = (int)x2; yPoints[1] = (int)y2; xPoints[2] = (int)x3; yPoints[2] = (int)y3; if(REALLY_PAINT) g.fillPolygon(xPoints, yPoints, 3); } //}}} //{{{ paintVector //################################################################################################## public void paintVector(Paint paint, int width, int widthCue, double x1, double y1, double z1, double x2, double y2, double z2) { g.setPaint(paint); if(REALLY_PAINT) prettyLine((int)x1, (int)y1, (int)x2, (int)y2, KPalette.lineWidths[width-1][widthCue]); } //}}} //{{{ prettyLine //################################################################################################## /** Draws a thick line with nice ends, using fillPolygon(). Slightly slower (30-35%) than fastLine(). */ void prettyLine(int x1, int y1, int x2, int y2, int width) { int s, e, abs_x2_x1, abs_y2_y1; s = -width / 2; // Start offset e = s + width; // End offset abs_x2_x1 = Math.abs(x2 - x1); abs_y2_y1 = Math.abs(y2 - y1); // horizontal -- if( abs_x2_x1 > abs_y2_y1 ) { // left to right if( x1 < x2 ) { xPoints[0] = x1 ; xPoints[1] = x1+s; xPoints[2] = x1; xPoints[3] = x2; xPoints[4] = x2-s; xPoints[5] = x2; yPoints[0] = y1+s; yPoints[1] = y1; yPoints[2] = y1+e; yPoints[3] = y2+e; yPoints[4] = y2; yPoints[5] = y2+s; } // right to left else { xPoints[0] = x1 ; xPoints[1] = x1-s; xPoints[2] = x1; xPoints[3] = x2; xPoints[4] = x2+s; xPoints[5] = x2; yPoints[0] = y1+s; yPoints[1] = y1; yPoints[2] = y1+e; yPoints[3] = y2+e; yPoints[4] = y2; yPoints[5] = y2+s; } } // vertical | else { // top to bottom if( y1 < y2 ) { xPoints[0] = x1+s; xPoints[1] = x1; xPoints[2] = x1+e; xPoints[3] = x2+e; xPoints[4] = x2; xPoints[5] = x2+s; yPoints[0] = y1 ; yPoints[1] = y1+s; yPoints[2] = y1; yPoints[3] = y2; yPoints[4] = y2-s; yPoints[5] = y2; } // bottom to top else { xPoints[0] = x1+s; xPoints[1] = x1; xPoints[2] = x1+e; xPoints[3] = x2+e; xPoints[4] = x2; xPoints[5] = x2+s; yPoints[0] = y1 ; yPoints[1] = y1-s; yPoints[2] = y1; yPoints[3] = y2; yPoints[4] = y2+s; yPoints[5] = y2; } } g.fillPolygon(xPoints, yPoints, 6); } //}}} //{{{ fastLine //################################################################################################## /** Draws a thick line using multiple calls to drawLine(). Not as robust as prettyLine(), but slightly faster. */ void fastLine(int x1, int y1, int x2, int y2, int width) { g.drawLine(x1, y1, x2, y2); // Then, draw more lines until we get to the approximate thickness. // This idea is borrowed from JavaMage, and possibly regular Mage, too. // The plan is to step along x if it's a mostly vertical line, along y if it's mostly horizontal int start, end, i; start = -width/2; end = start + width; // step along y if( Math.abs(x2-x1) > Math.abs(y2-y1) ) { for(i = start; i < 0; i++) g.drawLine(x1, y1+i, x2, y2+i); for(i = 1; i < end; i++) g.drawLine(x1, y1+i, x2, y2+i); } // step along x else { for(i = start; i < 0; i++) g.drawLine(x1+i, y1, x2+i, y2); for(i = 1; i < end; i++) g.drawLine(x1+i, y1, x2+i, y2); } } //}}} //{{{ drawOval //################################################################################################## public void drawOval(Paint paint, double x, double y, double z, double width, double height) { // one disk g.setPaint(paint); if(REALLY_PAINT) g.drawOval((int)(x - width/2), (int)(y - height/2), (int)width, (int)height); } public void drawOval(Paint paint, int linewidth, int widthCue, double x, double y, double z, double width, double height) { g.setPaint(paint); int startx = (int)(x - width/2.0 - linewidth/2.0); int starty = (int)(y - height/2.0 - linewidth/2.0); int diamx = (int)( width + linewidth); int diamy = (int)(height + linewidth); if(REALLY_PAINT) { for(int i = 0; i < linewidth; i++) { g.drawOval(startx, starty, diamx, diamy); startx += 1; starty += 1; diamx -= 2; diamy -= 2; } } } //}}} //{{{ setGraphics, setFont, getLabelWidth/Ascent/Descent //############################################################################## /** Sets the Graphics object this painter will use for painting. */ public void setGraphics(Graphics2D g2) { this.g = g2; if(forceAA) this.g.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); if(font != null) this.metrics = g.getFontMetrics(font); } public void setFont(Font f) { this.font = f; if(g != null) this.metrics = g.getFontMetrics(f); } public int getLabelWidth(String s) { return metrics.stringWidth(s); } public int getLabelAscent(String s) { return metrics.getAscent(); } public int getLabelDescent(String s) { return metrics.getDescent(); } //}}} //{{{ setViewport, clearCanvas //############################################################################## public void setViewport(int x, int y, int width, int height) { clipRgn.setBounds(x, y, width, height); g.setClip(clipRgn); } public void clearCanvas(Color color) { g.setColor(color); if(REALLY_PAINT) g.fillRect(clipRgn.x, clipRgn.y, clipRgn.width, clipRgn.height); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/painters/JoglEngine3D.java0000644000000000000000000011224111531212644021162 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.painters; import king.core.*; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; import javax.media.opengl.*; import javax.media.opengl.glu.*; import com.sun.opengl.util.*; // for GLUT //}}} /** * JoglEngine3D is a kinemage renderer that uses "real" OpenGL * calls to render a 3-dimensional image of the scene. * It does not support all possible options in the kinemage format, so it * should only be used in cases where it has to be (e.g. a CAVE setting). * *

Features that are not currently supported: *

    *
  • Some types of points (arrows, markers, rings -- rendered as dots)
  • *
  • Depth cueing by line width
  • *
  • Translucency
  • *
  • Instanced lists (instance=)
  • *
  • Per-group or per-list transformations
  • *
  • *
  • ... other things I've forgotten ...
  • *
* *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Tue Dec 12 09:21:44 EST 2006 */ public class JoglEngine3D extends Engine { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## /** Location of the screen center in some arbitrary world frame, measured in pixels (1/72" for most displays) */ public Triple screenCenterPos = new Triple(0, 0, 0); /** Unit vector defining the screen normal; points TOWARD the observer */ public Triple screenNormalVec = new Triple(0, 0, 1); /** Unit vector defining the screen / world "up"; needs not be orthogonal to screen normal but should be close */ public Triple screenUpVec = new Triple(0, 1, 0); /** If set, clipping volume always starts very close to the eye, instead of around the screen */ public boolean caveClipping = false; protected GL gl; protected GLU glu; protected GLUT glut; protected float[] clearColor; protected int currFont = GLUT.BITMAP_HELVETICA_12; protected Triple[] icosVerts; protected int[][] icosFaces; protected int ballDL = 0; // display lists for rendering balls //}}} //{{{ Constructor(s), cleanup //############################################################################## public JoglEngine3D() { super(); // From OpenGL Programming Guide, Ch. 2, pg. 56 // Basic unit icosahedron for approximating a sphere final double x = 0.525731112119133606; final double z = 0.850650808352039932; this.icosVerts = new Triple[] { new Triple(-x,0,z), new Triple(x,0,z), new Triple(-x,0,-z), new Triple(x,0,-z), new Triple(0,z,x), new Triple(0,z,-x), new Triple(0,-z,x), new Triple(0,-z,-x), new Triple(z,x,0), new Triple(-z,x,0), new Triple(z,-x,0), new Triple(-z,-x,0) }; this.icosFaces = new int[][] { {0,4,1}, {0,9,4}, {9,5,4}, {4,5,8}, {4,8,1}, {8,10,1}, {8,3,10}, {5,3,8}, {5,2,3}, {2,7,3}, {7,10,3}, {7,6,10}, {7,11,6}, {11,0,6}, {0,1,6}, {6,1,10}, {9,0,11}, {9,11,2}, {9,2,5}, {7,2,11} }; } /** Please call this before discarding the Engine object to release OpenGL resources! */ public void cleanup(GL gl) { // clean up display lists if(ballDL != 0) { gl.glDeleteLists(ballDL, 1); ballDL = 0; } } //}}} //{{{ render //################################################################################################## /** Renders with the observer at (0, 0, perspDist) -- perfect for viewing the default screen. */ public void render(AGE xformable, KView view, Rectangle bounds, GL gl) { render(xformable, view, bounds, gl, new Triple(0, 0, perspDist)); } /** * Transforms the given Transformable and renders it to a graphics context. * @param xformable the Transformable that will be transformed and rendered * @param view a KView representing the current rotation/zoom/clip * @param bounds the bounds of the area to render to. * @param gl the OpenGL graphics context * @param eyePosition location of the observer's eyeball in the arbitrary world frame, * measured in pixels (1/72" for most displays). Interacts with screen position/orientation. */ public void render(AGE xformable, KView view, Rectangle bounds, GL gl, Tuple3 eyePosition) { // init GL this.gl = gl; this.glu = new GLU(); this.glut = new GLUT(); // Display lists DO hold from one render pass to another //this.ballDL = 0; if(whiteBackground) clearColor = new float[] {1, 1, 1, 1}; else clearColor = new float[] {0, 0, 0, 1}; // This is necessary for antialiasing, but also for transparent objects. gl.glEnable(gl.GL_BLEND); gl.glBlendFunc(gl.GL_SRC_ALPHA, gl.GL_ONE_MINUS_SRC_ALPHA); // Antialiasing for points and lines. // Polygons have to be antialiased with full-scene AA. gl.glEnable(gl.GL_POINT_SMOOTH); gl.glEnable(gl.GL_LINE_SMOOTH); // Projection and model-view matrix, and fog Transform R = setupTransforms(view, bounds, eyePosition); // Lighting for spheres, ribbons, etc setupLighting(R); // Clear background // This must happen AFTER the viewport is set in setupTransforms // Actually, for some reason this clears the whole screen, not just my viewport gl.glClearColor(clearColor[0], clearColor[1], clearColor[2], clearColor[3]); gl.glEnable(GL.GL_DEPTH_TEST); gl.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT); for(KList list : KIterator.visibleLists(xformable)) { String type = list.getType(); if(KList.VECTOR.equals(type)) doVectorList(list); else if(KList.DOT.equals(type)) doDotList(list); else if(KList.RIBBON.equals(type)) doTriangleList(list, true); else if(KList.BALL.equals(type)) doBallList(list); else if(KList.SPHERE.equals(type)) doBallList(list); else if(KList.TRIANGLE.equals(type)) doTriangleList(list, false); else if(KList.MARK.equals(type)) doDotList(list); else if(KList.LABEL.equals(type)) doLabelList(list); else if(KList.RING.equals(type)) doDotList(list); else if(KList.ARROW.equals(type)) doDotList(list); else doDotList(list); } // Cleaning up and re-allocating display lists all the time // slows the app down a LOT after a while. // I can't tell if it's Java memory churn or OpenGL, but the effect is big. // Now this is handled in the cleanup() function. // // clean up display lists //if(ballDL != 0) gl.glDeleteLists(ballDL, 1); } //}}} //{{{ setupLighting //############################################################################## protected void setupLighting(Transform R) { // Direction is relative to transformed coordinate space in which observer is defined. // We don't want the light rotating with the model! gl.glMatrixMode(GL.GL_MODELVIEW); gl.glPushMatrix(); gl.glLoadIdentity(); // If we've rotated the world for a nonstandard screen position, // we need to move the light as well. gl.glMultMatrixd(new double[] { R.get(1,1), R.get(2,1), R.get(3,1), R.get(4,1), R.get(1,2), R.get(2,2), R.get(3,2), R.get(4,2), R.get(1,3), R.get(2,3), R.get(3,3), R.get(4,3), R.get(1,4), R.get(2,4), R.get(3,4), R.get(4,4) }, 0); // Lighting is enabled only for specific objects, because lines and points // only are affected by ambient lighting components. //gl.glEnable(GL.GL_LIGHTING); // Correctly scaled normals are essential for lighting! gl.glEnable(GL.GL_NORMALIZE); gl.glEnable(GL.GL_LIGHT0); float I = 1.0f; // overal intensity float a = 0.3f * I; // ambient float d = 0.8f * I; // diffuse float s = 0.0f * I; // specular (doesn't seem to work?) gl.glLightfv(GL.GL_LIGHT0, GL.GL_AMBIENT, new float[] {a, a, a, 1}, 0); gl.glLightfv(GL.GL_LIGHT0, GL.GL_DIFFUSE, new float[] {d, d, d, 1}, 0); gl.glLightfv(GL.GL_LIGHT0, GL.GL_SPECULAR, new float[] {s, s, s, 1}, 0); // Directional light source; vector indicates light direction. Triple lv = this.lightingVector; gl.glLightfv(GL.GL_LIGHT0, GL.GL_POSITION, new float[] {-(float)lv.getX(), -(float)lv.getY(), -(float)lv.getZ(), 0}, 0); gl.glLightModelfv(GL.GL_LIGHT_MODEL_AMBIENT, new float[] {0, 0, 0, 1}, 0); // default is ??? gl.glLightModeli(GL.GL_LIGHT_MODEL_LOCAL_VIEWER, GL.GL_FALSE); // supposedly more efficient gl.glLightModeli(GL.GL_LIGHT_MODEL_TWO_SIDE, GL.GL_TRUE); // will be needed for ribbons! // Base material gl.glEnable(GL.GL_COLOR_MATERIAL); // color will be taken from color statements gl.glColorMaterial(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT_AND_DIFFUSE); // must be enabled to work! //gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_AMBIENT, new float[] {1,0,0,1}, 0); //gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_DIFFUSE, new float[] {1,0,0,1}, 0); gl.glMaterialfv(GL.GL_FRONT_AND_BACK, GL.GL_SPECULAR, new float[] {1,1,1,1}, 0); gl.glMaterialf(GL.GL_FRONT_AND_BACK, GL.GL_SHININESS, 80f); gl.glPopMatrix(); } //}}} //{{{ NOTES ON THE COORDINATE SYSTEM /*############################################################################## KiNG uses a right-handed coordinate system, like Mage. If +X is right and +Y is up, then +Z is toward you and -Z is into the screen. OpenGL also uses a right-handed coordinate system (thankfully). The result of all the usual transformations in KiNG is to leave the center of view at the origin, scaled so that 1 unit = 1 pixel. The observer is on the +Z axis, about 2000 pixels (~27") away from the origin. In OpenGL, the observer is always at the origin, and the view is always down the -Z axis (same direction as KiNG expects, actually, just translated in Z). To simulate any other arrangement, the model should be transformed appropriately. (Transforming the projection matrix instead is possible but causes artifacts.) Scheme for rendering in the DiVE: (do these in reverse order as the "first" (last applied) components of the modelview matrix) center on the observer rotate the screen to the front one Triple per edge can use these to calculate top,bottom,left,right for glFrustum() each screen defines a coordinate frame (right, up, front vectors) these make a rotation matrix; default screen gives identity matrix either this matrix or its transpose (=inverse) is our desired rotation desired rotation matrix is: [ rightX rightY rightZ ] [ upX upY upZ ] [ frontX frontY frontZ ] - default observer is = (0, 0, perspDist) - default screen is at (0,0,0) with up (0,1,0), right (1,0,0), and front (0,0,1) This works because the current "center" (taken from the KView; center of rotation) is always at the origin (0,0,0); the position of the observer and the position of the screen are always relative to this. Thus a screen at (0,0,0) and observer at (0,0,perspDist) mimic the normal KiNG arrangement, with the center of rotation fixed at the center of the screen, in the plane of the screen. }}}*/ //{{{ setupTransforms //################################################################################################## /** Returns the screen positioning transform (needed for light positioning) */ protected Transform setupTransforms(KView view, Rectangle bounds, Tuple3 eyePosition) { double width, height, size, xOff, yOff; width = bounds.getWidth(); height = bounds.getHeight(); size = Math.min(width, height); xOff = bounds.getX() + width/2.0; yOff = bounds.getY() + height/2.0; this.viewClipScaling = size/2.0; // Get information from the current view double cx, cy, cz, R11, R12, R13, R21, R22, R23, R31, R32, R33; synchronized(view) { view.compile(); zoom3D = size / view.getSpan(); cx = view.cx; cy = view.cy; cz = view.cz; R11 = view.R11; R12 = view.R12; R13 = view.R13; R21 = view.R21; R22 = view.R22; R23 = view.R23; R31 = view.R31; R32 = view.R32; R33 = view.R33; viewClipFront = view.getClip(); viewClipBack = -viewClipFront; } // Viewport is independent of anything else -- it just specifies // where within the window (pixel coords) the image will be drawn. gl.glViewport(bounds.x, bounds.y, bounds.width, bounds.height); /*{{{ The original code (which works for the standard observer, standard screen) // Projection matrix // Goal is to transform visible points into the cube from (-1,-1,-1) to (+1,+1,+1) // Anything outside that cube after applying this matrix gets clipped! double near = perspDist - viewClipScaling*viewClipFront; double far = perspDist - viewClipScaling*viewClipBack; double right = (width/2) * (near / perspDist); double left = -right; double top = (height/2) * (near / perspDist); double bottom = -top; gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); // l,r,b,t apply at distance "near" and are X,Y coords // near and far are (positive) distances from the camera for glFrustum // but are Z coords for glOrtho (although they're then negated!). if(usePerspective) gl.glFrustum(left, right, bottom, top, near, far); else gl.glOrtho(left, right, bottom, top, near, far); // Can do other view translation/rotation here, but it screws up the lighting! // Do it at the "end" of the model-view sequence instead (i.e. first calls) }}}*/ /*{{{ The Syzygy way -- this sucks -- too hard to understand double[] matrix = new double[16]; gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, matrix, 0); printMatrix("Standard", matrix); // This one works, but is weird (normal, clipping) //matrix = ar_frustumMatrix(new Triple(0, 0, -perspDist), new Triple(0,0,-1), new Triple(0,1,0), new Triple(0,0,0), // width/2, height/2, near, -viewClipScaling*viewClipBack); // Equivalent to the one above: //matrix = ar_frustumMatrix(new Triple(0, 0, 0), new Triple(0,0,-1), new Triple(0,1,0), new Triple(0, 0, perspDist), // width/2, height/2, near, -viewClipScaling*viewClipBack); matrix = ar_frustumMatrix(new Triple(0, 0, 0), new Triple(-1,0,0), new Triple(0,1,0), new Triple(perspDist, 0, 0), width/2, height/2, near, -viewClipScaling*viewClipBack); printMatrix("Syzygy", matrix); gl.glLoadMatrixd(matrix, 0); }}}*/ // Projection matrix // Goal is to transform visible points into the cube from (-1,-1,-1) to (+1,+1,+1) // Anything outside that cube after applying this matrix gets clipped! gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); // Calculate the unit vectors that form a local coordinate frame for the screen. // We want the rotation that will bring them to match the default screen, // because OpenGl always has the observer at the origin looking down -Z. // These are the screen normal (z), right (x), and up (y) vectors. Triple zHat = new Triple(this.screenNormalVec).unit(); // Results will be nonsensical if screen normal is pointed away from the observer. // That should mean s/he shouldn't be able to see it anyway, but just in case, // we'll render on the back side of the screen. Triple scrToEye = new Triple().likeVector(screenCenterPos, eyePosition); if(scrToEye.dot(zHat) < 0) zHat.neg(); // Build orthogonal up and right vectors via cross products Triple xHat = new Triple(this.screenUpVec).cross(zHat).unit(); Triple yHat = new Triple(zHat).cross(xHat); // Check for yourself: R*xHat = (1,0,0); R*yHat = (0,1,0); R*zHat = (0,0,1) Transform R = new Transform().likeMatrix( xHat.getX(), xHat.getY(), xHat.getZ(), yHat.getX(), yHat.getY(), yHat.getZ(), zHat.getX(), zHat.getY(), zHat.getZ()); //System.err.println(R.transform(xHat, new Triple())); //System.err.println(R.transform(yHat, new Triple())); //System.err.println(R.transform(zHat, new Triple())); // Rotation should be centered around the observer Triple negEyePos = new Triple(eyePosition).neg(); R.prepend( new Transform().likeTranslation(negEyePos) ); //System.err.println(R); // Find position of screen center in the new scheme. // Screen Z < 0 and screen is normal to Z axis, but may be shifted to side or up/down. Triple scrCtr = (Triple) R.transform(this.screenCenterPos, new Triple()); final double minClipDist = size/20; double scrDistZ = (-scrCtr.getZ()); double near = Math.max(scrDistZ - viewClipScaling*viewClipFront, minClipDist); double far = Math.max(scrDistZ - viewClipScaling*viewClipBack, 2*minClipDist); double right = (scrCtr.getX() + (width / 2)) * (near / scrDistZ); double left = (scrCtr.getX() - (width / 2)) * (near / scrDistZ); double top = (scrCtr.getY() + (height / 2)) * (near / scrDistZ); double bottom = (scrCtr.getY() - (height / 2)) * (near / scrDistZ); if(caveClipping) { // Slide the clipping planes forward to very near the observer. // Can't be AT the observer because transform is undef. double offset = near - minClipDist; near -= offset; far -= offset; } //System.err.println("scrCtr = "+scrCtr); //System.err.println("top = "+top+"; bottom = "+bottom); //System.err.println("left = "+left+"; right = "+right); //System.err.println("near = "+near+"; far = "+far); // l,r,b,t apply at distance "near" and are X,Y coords // l,r,b,t apply at distance "near" and are X,Y coords // near and far are (positive) distances from the camera for glFrustum // but are Z coords for glOrtho (although they're then negated!). if(usePerspective) gl.glFrustum(left, right, bottom, top, near, far); else gl.glOrtho(left, right, bottom, top, near, far); // Can do other view translation/rotation here, but it screws up the lighting! // Do it at the "end" of the model-view sequence instead (i.e. first calls) //double[] matrix = new double[16]; //gl.glGetDoublev(GL.GL_PROJECTION_MATRIX, matrix, 0); //printMatrix("Standard", matrix); // Model-view matrix // Transforms are applied to the points in the REVERSE of the order specified. // i.e. glMultMatrixd() is a post-multiply operation. // It is VERY IMPORTANT that we leave the model-view matrix as the active one! gl.glMatrixMode(GL.GL_MODELVIEW); gl.glLoadIdentity(); // Move the world like we moved the screen, so we see what was behind it. // Remember OpenGL lists elements top-to-bottom, then left-to-right. gl.glMultMatrixd(new double[] { R.get(1,1), R.get(2,1), R.get(3,1), R.get(4,1), R.get(1,2), R.get(2,2), R.get(3,2), R.get(4,2), R.get(1,3), R.get(2,3), R.get(3,3), R.get(4,3), R.get(1,4), R.get(2,4), R.get(3,4), R.get(4,4) }, 0); //gl.glTranslated(0, 0, -perspDist); // move camera back to viewing position // rotate: down the first col, then down the second col, etc. gl.glMultMatrixd(new double[] { R11, R21, R31, 0, R12, R22, R32, 0, R13, R23, R33, 0, 0, 0, 0, 1 }, 0); gl.glScaled(zoom3D, zoom3D, zoom3D); // scale gl.glTranslated(-cx, -cy, -cz); // center // Fog gl.glEnable(GL.GL_FOG); gl.glFogi(GL.GL_FOG_MODE, GL.GL_LINEAR); gl.glFogf(GL.GL_FOG_START, (float) near); double farFog = (far - 0.36*near) / (1 - 0.36); gl.glFogf(GL.GL_FOG_END, (float) (farFog)); gl.glFogfv(GL.GL_FOG_COLOR, clearColor, 0); return R; } private void printMatrix(String label, double[] m) { System.err.println(label); System.err.printf("%10g %10g %10g %10g \n", m[0], m[4], m[ 8], m[12]); System.err.printf("%10g %10g %10g %10g \n", m[1], m[5], m[ 9], m[13]); System.err.printf("%10g %10g %10g %10g \n", m[2], m[6], m[10], m[14]); System.err.printf("%10g %10g %10g %10g \n", m[3], m[7], m[11], m[15]); } //}}} //{{{ ar_frustumMatrix [NOT USED] //############################################################################## /** * I believe that all units are in the transformed space, * which makes them pixels in this case. * On a standard display, 72 pixels = 1 inch. * * This really only cares about the angle between the screenNormal and the * screenCenter-eyePosition vector. Putting the screen at a nominal location * of (1,0,0) vs. (0,0,1) doesn't actually rotate the object to view from * a different side as one might expect. * * @param screenCenter (what it sounds like) * @param screenNormal unit vector, e.g. (0,0,1), points AWAY from viewer * @param screenUp unit vector, e.g. (0,1,0) * @param eyePosition (what it sounds like) * @param halfWidth of the screen surface * @param halfHeight of the screen surface * @param nearClip positive distance from eyeball to front clipping plane * @param farClip positive distance from screen to back clipping plane * * Taken from Syzygy (BSD license), /src/math/arMath.cpp * * The derivation of this matrix (as produced by glFrustum()) is also listed * in Appendix G of the OpenGL Programming Guide! */ protected double[] ar_frustumMatrix( Triple screenCenter, Triple screenNormal, Triple screenUp, Triple eyePosition, double halfWidth, double halfHeight, double nearClip, double farClip) { /// copypaste start if(screenNormal.mag() <= 0) return null; // error final Triple zHat = new Triple(screenNormal).unit(); final Triple xHat = new Triple(zHat).cross(screenUp).unit(); final Triple yHat = new Triple(xHat).cross(zHat); /// copypaste end final Triple rightEdge = new Triple(screenCenter).addMult( halfWidth, xHat); final Triple leftEdge = new Triple(screenCenter).addMult(-halfWidth, xHat); final Triple topEdge = new Triple(screenCenter).addMult( halfHeight, yHat); final Triple botEdge = new Triple(screenCenter).addMult(-halfHeight, yHat); // double zEye = (eyePosition - headPosition) % zHat; // '%' = dot product double screenDistance = new Triple(screenCenter).sub(eyePosition).dot(zHat); if (screenDistance == 0) return null; // error final double nearFrust = nearClip; final double distScale = nearFrust / screenDistance; final double rightFrust = distScale*(new Triple(rightEdge).sub(eyePosition).dot(xHat)); final double leftFrust = distScale*(new Triple(leftEdge ).sub(eyePosition).dot(xHat)); final double topFrust = distScale*(new Triple(topEdge ).sub(eyePosition).dot(yHat)); final double botFrust = distScale*(new Triple(botEdge ).sub(eyePosition).dot(yHat)); final double farFrust = screenDistance + farClip; if (rightFrust == leftFrust || topFrust == botFrust || nearFrust == farFrust) return null; // error // this is necessary because g++ 2.96 is messed up. //double funnyElement = (nearFrust+farFrust)/(nearFrust-farFrust); //double[] result = new double[] { //(2*nearFrust)/(rightFrust-leftFrust), 0, (rightFrust+leftFrust)/(rightFrust-leftFrust), 0, //0, (2*nearFrust)/(topFrust-botFrust), (topFrust+botFrust)/(topFrust-botFrust), 0, //0, 0, funnyElement, 2*nearFrust*farFrust/(nearFrust-farFrust), //0, 0, -1, 0 }; // OpenGL order is transposed vs. what any normal person would do. // Coordinate system handedness change may require inverting sign on off-diagonal elements of third row and third column (?) double[] result = new double[] { (2*nearFrust)/(rightFrust-leftFrust), 0, 0, 0, 0, (2*nearFrust)/(topFrust-botFrust), 0, 0, (rightFrust+leftFrust)/(rightFrust-leftFrust), (topFrust+botFrust)/(topFrust-botFrust), (nearFrust+farFrust)/(nearFrust-farFrust), -1, 0, 0, 2*nearFrust*farFrust/(nearFrust-farFrust), 0 }; return result; } //}}} //{{{ doVectorList //############################################################################## protected void doVectorList(KList list) { KPaint currColor = list.getColor(); if(currColor.isInvisible()) return; setPaint(currColor); int currWidth = list.getWidth(); // The +0.5 makes it closer to other KiNG rendering modes (?) gl.glLineWidth(currWidth+0.5f); gl.glBegin(GL.GL_LINE_STRIP); for(KPoint p : list.getChildren()) { if(p.isBreak()) { gl.glEnd(); gl.glBegin(GL.GL_LINE_STRIP); } KPaint ptColor = p.getDrawingColor(this); if(ptColor.isInvisible()) continue; // Supposedly it's good to minimize the number of color changes if(ptColor != currColor) { setPaint(ptColor); currColor = ptColor; } int ptWidth = calcLineWidth(p, list); if(ptWidth != currWidth) { gl.glLineWidth(ptWidth+0.5f); currWidth = ptWidth; } gl.glVertex3d(p.getX(), p.getY(), p.getZ()); } gl.glEnd(); } //}}} //{{{ doDotList //############################################################################## protected void doDotList(KList list) { KPaint currColor = list.getColor(); if(currColor.isInvisible()) return; setPaint(currColor); int currWidth = list.getWidth(); // The +0.5 makes it closer to other KiNG rendering modes (?) gl.glPointSize(currWidth+0.5f); gl.glBegin(GL.GL_POINTS); for(KPoint p : list.getChildren()) { KPaint ptColor = p.getDrawingColor(this); if(ptColor.isInvisible()) continue; // Supposedly it's good to minimize the number of color changes if(ptColor != currColor) { setPaint(ptColor); currColor = ptColor; } int ptWidth = calcLineWidth(p, list); if(ptWidth != currWidth) { gl.glLineWidth(ptWidth+0.5f); currWidth = ptWidth; } gl.glVertex3d(p.getX(), p.getY(), p.getZ()); } gl.glEnd(); } //}}} //{{{ doBallList //############################################################################## protected void doBallList(KList list) { // Radius cutoffs in pixels for different levels of detail final double r1 = 4.0 / zoom3D, r2 = 12.0 / zoom3D, r3 = 128.0 / zoom3D; KPaint currColor = list.getColor(); if(currColor.isInvisible()) return; setPaint(currColor); double listRadius = list.getRadius(); for(KPoint p : list.getChildren()) { KPaint ptColor = p.getDrawingColor(this); if(ptColor.isInvisible()) continue; // Supposedly it's good to minimize the number of color changes if(ptColor != currColor) { setPaint(ptColor); currColor = ptColor; } double radius = p.getRadius(); if(radius == 0) radius = listRadius; gl.glPushMatrix(); gl.glTranslated(p.getX(), p.getY(), p.getZ()); gl.glScaled(radius, radius, radius); if(radius <= r1) drawSphere(0); else if(radius <= r2) drawSphere(1); else if(radius <= r3) drawSphere(2); else drawSphere(3); gl.glPopMatrix(); } } //}}} //{{{ drawSphere, drawSphereFace //############################################################################## /** Depth = 0 means 20 triangles, 1 is 80, 2 is 320, and 3 is 1280. You shouldn't need more than that! */ protected void drawSphere(int depth) { final int maxDepth = 3; // try to save sphere primitives as display lists if(ballDL == 0) { ballDL = gl.glGenLists(maxDepth+1); if(ballDL != 0) { for(int i = 0; i <= maxDepth; i++) { gl.glNewList(ballDL+i, GL.GL_COMPILE); gl.glEnable(GL.GL_LIGHTING); // lines and points aren't lit gl.glBegin(GL.GL_TRIANGLES); for(int[] face : icosFaces) drawSphereFace(icosVerts[face[0]], icosVerts[face[1]], icosVerts[face[2]], i); gl.glEnd(); gl.glDisable(GL.GL_LIGHTING); gl.glEndList(); } } } // use a display list if one is available if(ballDL != 0 && depth <= maxDepth) gl.glCallList(ballDL+depth); // else special case: render it the slow way else { gl.glEnable(GL.GL_LIGHTING); // lines and points aren't lit gl.glBegin(GL.GL_TRIANGLES); for(int[] face : icosFaces) drawSphereFace(icosVerts[face[0]], icosVerts[face[1]], icosVerts[face[2]], depth); gl.glEnd(); gl.glDisable(GL.GL_LIGHTING); } } /** Draws the triangle if depth == 0, else subdivides depth times. */ protected void drawSphereFace(Triple v1, Triple v2, Triple v3, int depth) { // From OpenGL Programming Guide, Ch. 2, pg. 56 if(depth == 0) { // For a unit sphere, the normals are the same as the points! gl.glNormal3d(v1.getX(), v1.getY(), v1.getZ()); gl.glVertex3d(v1.getX(), v1.getY(), v1.getZ()); gl.glNormal3d(v2.getX(), v2.getY(), v2.getZ()); gl.glVertex3d(v2.getX(), v2.getY(), v2.getZ()); gl.glNormal3d(v3.getX(), v3.getY(), v3.getZ()); gl.glVertex3d(v3.getX(), v3.getY(), v3.getZ()); } else { Triple v12 = new Triple().likeMidpoint(v1, v2).unit(); Triple v23 = new Triple().likeMidpoint(v2, v3).unit(); Triple v31 = new Triple().likeMidpoint(v3, v1).unit(); depth -= 1; drawSphereFace(v1, v12, v31, depth); drawSphereFace(v2, v23, v12, depth); drawSphereFace(v3, v31, v23, depth); drawSphereFace(v12, v23, v31, depth); } } //}}} //{{{ doLabelList //############################################################################## protected void doLabelList(KList list) { KPaint currColor = list.getColor(); if(currColor.isInvisible()) return; setPaint(currColor); for(KPoint p : list.getChildren()) { KPaint ptColor = p.getDrawingColor(this); if(ptColor.isInvisible()) continue; // Supposedly it's good to minimize the number of color changes if(ptColor != currColor) { setPaint(ptColor); currColor = ptColor; } gl.glRasterPos3d(p.getX(), p.getY(), p.getZ()); glut.glutBitmapString(currFont, p.getName()); } } //}}} //{{{ doTriangleList //############################################################################## protected void doTriangleList(KList list, boolean ribbonNormals) { KPaint currColor = list.getColor(); if(currColor.isInvisible()) return; setPaint(currColor); gl.glEnable(GL.GL_LIGHTING); // lines and points aren't lit gl.glBegin(GL.GL_TRIANGLE_STRIP); KPoint from = null, fromfrom = null; boolean flipNormal = false; // to get consistent normals -- not really needed for(KPoint p : list.getChildren()) { if(p.isBreak()) { gl.glEnd(); from = fromfrom = null; flipNormal = false; gl.glBegin(GL.GL_TRIANGLE_STRIP); } KPaint ptColor = p.getDrawingColor(this); if(ptColor.isInvisible()) continue; // Supposedly it's good to minimize the number of color changes if(ptColor != currColor) { setPaint(ptColor); currColor = ptColor; } if(from != null && fromfrom != null) { work2.likeVector(fromfrom, from); work1.likeVector(from, p); work1.cross(work2); // not normalized, but has to be re-normalized by OpenGL anyway if(flipNormal) { if(!ribbonNormals) gl.glNormal3d(-work1.getX(), -work1.getY(), -work1.getZ()); // for ribbons, just use the previous normal on every other triangle } else gl.glNormal3d(work1.getX(), work1.getY(), work1.getZ()); } gl.glVertex3d(p.getX(), p.getY(), p.getZ()); fromfrom = from; from = p; flipNormal = !flipNormal; } gl.glEnd(); gl.glDisable(GL.GL_LIGHTING); } //}}} //{{{ setPaint, calcLineWidth //############################################################################## protected void setPaint(KPaint p) { try { Color c = (Color) (whiteBackground ? p.getWhiteExemplar() : p.getBlackExemplar()); gl.glColor4f( c.getRed()/255f, c.getGreen()/255f, c.getBlue()/255f, c.getAlpha()/255f ); } catch(ClassCastException ex) { ex.printStackTrace(); System.err.println("JoglPainter: tried painting with non-Color type of Paint"); } } protected int calcLineWidth(KPoint point, KList parent) { int wid = point.getWidth(); if(this.thinLines) return 1; else if(wid > 0) return wid; else if(parent != null) return parent.getWidth(); else return 2; } //}}} //{{{ setFont, getLabelWidth/Ascent/Descent //############################################################################## public void setFont(Font f) { setFont(f.getSize()); } public void setFont(int sz) { if(sz <= 10) currFont = GLUT.BITMAP_HELVETICA_10; else if(sz <= 14) currFont = GLUT.BITMAP_HELVETICA_12; else currFont = GLUT.BITMAP_HELVETICA_18; } protected int getLabelWidth(String s) { return glut.glutBitmapLength(currFont, s); } protected int getLabelAscent(String s) { if(currFont == GLUT.BITMAP_HELVETICA_10) return 10; else if(currFont == GLUT.BITMAP_HELVETICA_12) return 12; else if(currFont == GLUT.BITMAP_HELVETICA_18) return 18; else return 1; } protected int getLabelDescent(String s) { return getLabelAscent(s)/4; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/painters/HighQualityPainter.java0000644000000000000000000001270311531212644022527 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.painters; import king.core.*; import java.awt.*; import java.awt.geom.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * HighQualityPainter paints kinemage graphics using the new-style * Shape calls from a java.awt.Graphics2D object. * *

Copyright (C) 2004-2007 by Ian W. Davis. All rights reserved. *
Begun on Fri May 21 19:20:49 EDT 2004 */ public class HighQualityPainter extends StandardPainter { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Line2D.Double line1 = new Line2D.Double(); Ellipse2D.Double ellipse1 = new Ellipse2D.Double(); GeneralPath path1 = new GeneralPath(); //}}} //{{{ Constructor(s) //############################################################################## public HighQualityPainter(boolean forceAntialiasing) { super(forceAntialiasing); } //}}} //{{{ paintBall //################################################################################################## public void paintBall(Paint paint, double x, double y, double z, double r, boolean showHighlight) { if(r < 0.5) r = 0.5; // make sure balls don't disappear double d = 2.0*r; // one disk g.setPaint(paint); g.setStroke(KPalette.pen0); ellipse1.setFrame((x-r), (y-r), d, d); if(REALLY_PAINT) g.fill(ellipse1); // Black rim, causes ~10% speed penalty but useful for visualization! try { Color c = (Color) paint; if(d >= 10 && c.getAlpha() == 255) { g.setPaint(KPaint.black); // wants to merge with the background g.setStroke(KPalette.pen1); if(REALLY_PAINT) g.draw(ellipse1); } } catch(ClassCastException ex) { ex.printStackTrace(); System.err.println("HighQualityPainter: tried painting with non-Color type of Paint"); } // highlight if(showHighlight) { double off = 0.5 * r; d = 0.3*r; g.setPaint(Color.white); // wants to be bright white no matter what g.setStroke(KPalette.pen0); ellipse1.setFrame((x-off), (y-off), d, d); if(REALLY_PAINT) g.fill(ellipse1); } } //}}} //{{{ paintDot //################################################################################################## public void paintDot(Paint paint, double x, double y, double z, int width) { int off = width/2; g.setPaint(paint); g.setStroke(KPalette.pen0); ellipse1.setFrame((x-off), (y-off), width, width); if(REALLY_PAINT) g.fill(ellipse1); } //}}} //{{{ paintSphereDisk //################################################################################################## public void paintSphereDisk(Paint paint, double x, double y, double z, double r) { if(r < 0.5) r = 0.5; // make sure balls don't disappear double d = 2.0*r; // one disk g.setPaint(paint); g.setStroke(KPalette.pen0); ellipse1.setFrame((x-r), (y-r), d, d); if(REALLY_PAINT) g.fill(ellipse1); } //}}} //{{{ paintTriangle //################################################################################################## public void paintTriangle(Paint paint, double x1, double y1, double z1, double x2, double y2, double z2, double x3, double y3, double z3) { g.setPaint(paint); g.setStroke(KPalette.pen1); path1.reset(); path1.moveTo((float)x1, (float)y1); path1.lineTo((float)x2, (float)y2); path1.lineTo((float)x3, (float)y3); path1.closePath(); if(REALLY_PAINT) { g.fill(path1); g.draw(path1); // closes up the hairline cracks between triangles (?) } } //}}} //{{{ paintVector //################################################################################################## public void paintVector(Paint paint, int width, int widthCue, double x1, double y1, double z1, double x2, double y2, double z2) { g.setPaint(paint); g.setStroke(KPalette.pens[width-1][widthCue]); line1.setLine(x1, y1, x2, y2); if(REALLY_PAINT) g.draw(line1); } //}}} //{{{ drawOval //################################################################################################## public void drawOval(Paint paint, double x, double y, double z, double width, double height) { g.setPaint(paint); g.setStroke(KPalette.pen1); ellipse1.setFrame((x - width/2), (y - height/2), width, height); if(REALLY_PAINT) g.draw(ellipse1); } public void drawOval(Paint paint, int linewidth, int widthCue, double x, double y, double z, double width, double height) { g.setPaint(paint); g.setStroke(KPalette.pens[linewidth-1][widthCue]); ellipse1.setFrame((x - width/2), (y - height/2), width, height); if(REALLY_PAINT) g.draw(ellipse1); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/MacDropTarget.java0000644000000000000000000000475011531212654017627 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import com.apple.eawt.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * MacDropTarget provides drag-and-drop document opening * under Mac OS X. This file will not compile on non-Mac platforms * and should be removed (no other code depends on it). * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Fri Nov 7 09:41:14 EST 2003 */ public class MacDropTarget implements ApplicationListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## static Application application = null; KingMain kMain; //}}} //{{{ Constructor(s) //############################################################################## private MacDropTarget(KingMain kmain) { super(); kMain = kmain; } //}}} //{{{ bindTo //############################################################################## static public void bindTo(KingMain kMain) { if(application == null) application = new Application(); MacDropTarget drop = new MacDropTarget(kMain); application.addApplicationListener(drop); } //}}} //{{{ Unhandled events //############################################################################## public void handleAbout(ApplicationEvent e) { } public void handleOpenApplication(ApplicationEvent e) { } public void handleReOpenApplication(ApplicationEvent e) { } public void handlePreferences(ApplicationEvent e) { } public void handlePrintFile(ApplicationEvent e) { } //}}} //{{{ handleOpenFile, handleQuit //############################################################################## public void handleOpenFile(ApplicationEvent ev) { //SoftLog.err.println("Received notification of file drop!"); File f = new File(ev.getFilename()); kMain.getFileDropHandler().doFileDrop(f); ev.setHandled(true); } public void handleQuit(ApplicationEvent ev) { // Necessary in order for Cmd-Q to work ev.setHandled(true); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/ToolBox.java0000644000000000000000000007224411531212654016524 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.lang.reflect.*; //import java.text.*; import java.util.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.*; //}}} /** * ToolBox instantiates and coordinates all the tools and plugins, * using the Reflection API and a service provider (SPI) model, * like the one in javax.imageio.ImageIO.scanForPlugins(). * We scan all jar files on the classpath for lists of Plugins that could be loaded by KiNG. * We also scan all jar files in the folder named "plugins" that lives in the same * place as king.jar, if such a folder exists. * Plugins are listed in a plain text file META-INF/services/king.Plugin * that's part of one or more JARs on the classpath. * One fully-qualified class name is given per line, and nothing else. * *

Likewise, the submenu of Tools that a plugin belongs to, if any, is determined * in the preferences file by the classname.menuName property. * The special values <main menu> and <not shown> * put the plugin in the main Tools menu or don't put in anywhere at all, respectively. * KingPrefs scans all jars for files named king/king_prefs, * so plugins bundled in separate jars can include such a file to describe * which menus they belong in. * *

Begun on Fri Jun 21 09:30:40 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class ToolBox implements MouseListener, MouseMotionListener, MouseWheelListener, Transformable, KMessage.Subscriber { //{{{ Static fields /** The menu name that will put a Plugin in the main menu rather than a submenu. */ static final String MENU_MAIN = "

"; /** The menu name that will keep a Plugin out of the Tools menu entirely. */ static final String MENU_NONE = ""; /** The menu under File for importing non-kin files */ static final String MENU_IMPORT = ""; /** The menu under File for exporting non-kin files */ static final String MENU_EXPORT = ""; //}}} //{{{ CLASS: PluginComparator, MenuComparator //################################################################################################## /** Sorts tools before plugins, then alphabetically by name. */ static class PluginComparator implements Comparator { public int compare(Object o1, Object o2) { boolean tool1 = (o1 instanceof BasicTool); boolean tool2 = (o2 instanceof BasicTool); if(tool1 && !tool2) return -1; else if(tool2 && !tool1) return 1; else return o1.toString().compareTo(o2.toString()); } } /** Sorts JMenus alphabetically by name. */ static class MenuComparator implements Comparator { public int compare(Object o1, Object o2) { JMenu m1 = (JMenu) o1; JMenu m2 = (JMenu) o2; return m1.getText().compareTo(m2.getText()); } } //}}} //{{{ Variable definitions //################################################################################################## // These are public so tools in any package can access them. public KingMain kMain; public KinCanvas kCanvas; public ToolServices services; public Collection transformables; ArrayList plugins; BasicTool activeTool; final BasicTool defaultTool; JMenuItem activeToolMI = null, defaultToolMI = null; ClassLoader pluginClassLoader; //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public ToolBox(KingMain kmain, KinCanvas kcanv) { // These are referenced by the tools kMain = kmain; kCanvas = kcanv; services = new ToolServices(this); transformables = new ArrayList(); pluginClassLoader = this.makeClassLoader(); plugins = new ArrayList(); defaultTool = activeTool = new BasicTool(this); plugins.add(activeTool); loadPlugins(); scanForVersion(); activeTool.start(); kMain.subscribe(this); } //}}} //{{{ makeClassLoader //################################################################################################## /** * Creates a special class loader for loading plugins. * If the named class cannot be found, it also searches the plugins/ * directory where king.jar is found or (for applets) the URL(s) named * in the PLUGIN1, PLUGIN2, PLUGIN3, ... applet PARAMs. */ protected ClassLoader makeClassLoader() { ClassLoader defaultLoader = this.getClass().getClassLoader(); try { ArrayList urls = new ArrayList(); // Case: we're running in an applet if(!kMain.isTrusted()) { /*************************************************************** * Throws an exception if we create a class loader... * java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader) at java.security.AccessControlContext.checkPermission(AccessControlContext.java:269) at java.security.AccessController.checkPermission(AccessController.java:401) at java.lang.SecurityManager.checkPermission(SecurityManager.java:524) at java.lang.SecurityManager.checkCreateClassLoader(SecurityManager.java:586) at java.lang.ClassLoader.(ClassLoader.java:186) at java.security.SecureClassLoader.(SecureClassLoader.java:53) at java.net.URLClassLoader.(URLClassLoader.java:81) at king.ToolBox.makeClassLoader(ToolBox.java:169) at king.ToolBox.(ToolBox.java:109) // Numbering can start at 0 or 1, but must be continuous thereafter. for(int i = 0; true; i++) { String relURL = applet.getParameter("plugin"+i); if(relURL != null) { try { urls.add(new URL(applet.getDocumentBase(), relURL)); } catch(MalformedURLException ex) { ex.printStackTrace(); } } else if(i >= 1) break; // out of for loop } ***************************************************************/ } // Case: we're running as a standalone application (NOT an applet) else { File pluginFolder = new File(kMain.getPrefs().jarFileDirectory, "plugins"); if(!pluginFolder.exists() || !pluginFolder.canRead() || !pluginFolder.isDirectory()) return defaultLoader; File[] files = pluginFolder.listFiles(); for(int i = 0; i < files.length; i++) { if(files[i].exists() && files[i].canRead() && files[i].isFile() && files[i].getName().toLowerCase().endsWith(".jar")) { try { urls.add(files[i].toURL()); } catch(MalformedURLException ex) { SoftLog.err.println(ex.getMessage()); } } } //} URLClassLoader jarLoader = new URLClassLoader( (URL[]) urls.toArray(new URL[urls.size()]), defaultLoader); //URL[] test = jarLoader.getURLs(); //for (URL u : test) { // System.out.println(u); //} return jarLoader; } } catch(Exception ex) //IO, Security, MalformedURL, etc. etc. { ex.printStackTrace(SoftLog.err); } return defaultLoader; } //}}} //{{{ loadPlugins //################################################################################################## /** * Automatically loads all the tools and plugins that are currently available * to the system, while respecting their dependencies and applet safety. */ void loadPlugins() { // returned list might not be mutable, so make a copy Collection toLoad = new ArrayList(scanForPlugins()); int oldSize; do // cycle through all remaining names until no more can be loaded { oldSize = toLoad.size(); for(Iterator iter = toLoad.iterator(); iter.hasNext(); ) { String name = (String) iter.next(); if(canLoadPlugin(name)) { // Only try once, because we should succeed. addPluginByName(name); iter.remove(); } } } while(oldSize > toLoad.size()); Collections.sort(plugins, new PluginComparator()); } //}}} //{{{ scanForPlugins //################################################################################################## /** * Using a service-provider (SPI) model like the one in ImageIO.scanForPlugins(), * we scan all jar files on the classpath for lists of Plugins that * could be loaded by KiNG. * Plugins are listed in a plain text file META-INF/services/king.Plugin * that's part of one or more JARs on the classpath. * @return a Collection<String> of fully-qualified plugin names. */ Collection scanForPlugins() { // This is how we load menu preferences for external plugins try { // Write menu preferences into the defaults section of Prefs Props pluginProps = (Props) kMain.getPrefs().getDefaults(); // No leading slashes when using this method Enumeration urls = pluginClassLoader.getResources("king/king_prefs"); while(urls.hasMoreElements()) { URL url = (URL) urls.nextElement(); try { //System.out.println(url.toString()); InputStream is = url.openStream(); pluginProps.load(is); is.close(); } catch(IOException ex) { SoftLog.err.println("Plugin SPI error: "+ex.getMessage()); } } } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } // Now load the actual list of plugins Collection pluginNames = new ArrayList(); try { // No leading slashes when using this method Enumeration urls = pluginClassLoader.getResources("META-INF/services/king.Plugin"); while(urls.hasMoreElements()) { URL url = (URL) urls.nextElement(); try { //System.out.println(url); LineNumberReader in = new LineNumberReader(new InputStreamReader(url.openStream())); String s; while((s = in.readLine()) != null) { s = s.trim(); if(!s.equals("") && !s.startsWith("#")) pluginNames.add(s); } } catch(IOException ex) { SoftLog.err.println("Plugin SPI error: "+ex.getMessage()); } } } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } return pluginNames; } //}}} //{{{ scanForVersion /** * Scans plugins and jars for their version and buildnum info. Adds the info * directly to KingPrefs (mainly for use in the About King panel). **/ public void scanForVersion() { try { // This stupid dance is to get the names of the various plugin jars being loaded // because I don't understand classloaders well enough to just use that. Enumeration urls = pluginClassLoader.getResources("king/king_prefs"); ArrayList jarNames = new ArrayList(); while(urls.hasMoreElements()) { URL url = (URL) urls.nextElement(); //System.out.println(url); String jarFile = (new File(url.getFile())).getParentFile().getParentFile().getName(); if (jarFile.lastIndexOf(".") != -1) { jarNames.add(jarFile.substring(0, jarFile.lastIndexOf("."))); } jarNames.remove("king"); } for (String jar : jarNames) { urls = pluginClassLoader.getResources(jar+"/version.props"); while(urls.hasMoreElements()) { URL url = (URL) urls.nextElement(); LineNumberReader in = new LineNumberReader(new InputStreamReader(url.openStream())); String s; while((s = in.readLine()) != null) { s = s.trim(); if(!s.equals("") && !s.startsWith("#")) { String[] parts = Strings.explode(s, "=".charAt(0)); //System.out.println(jar+"."+parts[0] + "->" + parts[1]); kMain.getPrefs().setProperty(jar+" "+parts[0], parts[1]); } } } } for (String jar : jarNames) { urls = pluginClassLoader.getResources(jar+"/buildnum.props"); while(urls.hasMoreElements()) { URL url = (URL) urls.nextElement(); LineNumberReader in = new LineNumberReader(new InputStreamReader(url.openStream())); String s; while((s = in.readLine()) != null) { s = s.trim(); if(!s.equals("") && !s.startsWith("#")) { String[] parts = Strings.explode(s, "=".charAt(0)); //System.out.println(jar+"."+parts[0] + "->" + parts[1]); kMain.getPrefs().setProperty(jar+" "+parts[0], parts[1]); } } } } } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } //}}} //{{{ canLoadPlugin //################################################################################################## /** * Returns true iff the following conditions are met: * (1) the named class can be located and loaded * (2) the plugin is applet-safe, or we're running as an application * (3) all the plugins this one depends on are already loaded. * @param className the fully qualified name of the Plugin class to check */ boolean canLoadPlugin(String className) { // Make a list of the full names of loaded plugins Set loadedPlugins = new HashSet(); for(Iterator iter = plugins.iterator(); iter.hasNext(); ) loadedPlugins.add(iter.next().getClass().getName()); try { Class pluginClass = Class.forName(className, true, pluginClassLoader); Method appletSafe = pluginClass.getMethod("isAppletSafe", new Class[] {}); Boolean safe = (Boolean) appletSafe.invoke(null, new Object[] {}); if(!kMain.isTrusted() && safe.booleanValue() == false) return false; // can't load because we're not applet safe Method getDepend = pluginClass.getMethod("getDependencies", new Class[] {}); Collection deps = (Collection) getDepend.invoke(null, new Object[] {}); for(Iterator iter = deps.iterator(); iter.hasNext(); ) { if(!loadedPlugins.contains(iter.next())) return false; // can't load because of a dependency } return true; // can load; we've passed all the tests } catch(Throwable t) { //t.printStackTrace(SoftLog.err); if (kMain.isTrusted()) SoftLog.err.println(t.getClass().getSimpleName()+": "+t.getMessage()); return false; // can't load because of a reflection error } } //}}} //{{{ getPluginList, getPluginMenuName //################################################################################################## /** Returns an unmodifiable List of all installed plugins */ public java.util.List getPluginList() { return Collections.unmodifiableList(plugins); } /** Returns the name of the menu the given Plugin belongs in right now */ public String getPluginMenuName(Plugin p) { // Read from user prefs + defaults KingPrefs prefs = kMain.getPrefs(); String menuName = prefs.getString(p.getClass().getName()+".menuName", MENU_MAIN).trim(); if(menuName.equals("")) menuName = MENU_MAIN; return menuName; } //}}} //{{{ addPluginByName //################################################################################################## /** * Tries to instantiate a plugin of the named class and insert it into the Toolbox, * by using the Reflection API. * @param name the fully qualified Java name of the plugin class, e.g. "king.BasicPlugin" * @return true on success, false on failure */ private boolean addPluginByName(String name) { Plugin theplugin; // First, check to see if we already have one. for(Iterator iter = plugins.iterator(); iter.hasNext(); ) { theplugin = (Plugin)iter.next(); if(theplugin.getClass().getName().equals(name)) return true; } // If not, try to load one dynamically. try { Class[] constargs = { ToolBox.class }; Object[] initargs = { this }; Class pluginclass = Class.forName(name, true, pluginClassLoader); Constructor pluginconst = pluginclass.getConstructor(constargs); theplugin = (Plugin)pluginconst.newInstance(initargs); plugins.add(theplugin); } catch(Throwable t) { t.printStackTrace(SoftLog.err); SoftLog.err.println("While trying to load '"+name+"': "+t.getMessage()); return false; } return true; } //}}} //{{{ addPluginsToToolsMenu //################################################################################################## /** Appends menu items for using the loaded plugins */ public void addPluginsToToolsMenu(JMenu menu) { Plugin p; JMenuItem item; defaultToolMI = activeToolMI = null; Map submenus = new HashMap(); // Map ButtonGroup group = new ButtonGroup(); // Add things to primary menu and create submenus for(Iterator iter = plugins.iterator(); iter.hasNext(); ) { p = (Plugin)iter.next(); item = p.getToolsMenuItem(); if(item != null) { String menuName = getPluginMenuName(p); if(MENU_MAIN.equals(menuName)) menu.add(item); else if(MENU_NONE.equals(menuName)) {} // don't add to any menu else if(MENU_IMPORT.equals(menuName)) {} // don't add to any menu else if(MENU_EXPORT.equals(menuName)) {} // don't add to any menu else // add to the named submenu { JMenu submenu = (JMenu) submenus.get(menuName); if(submenu == null) { submenu = new JMenu(menuName); submenus.put(menuName, submenu); } submenu.add(item); } } if(p instanceof BasicTool && item != null) { group.add(item); if(p == defaultTool) defaultToolMI = item; if(p == activeTool) activeToolMI = item; } } // Sort the submenus alphabetically and add them at the end ArrayList submenuList = new ArrayList(submenus.values()); Collections.sort(submenuList, new MenuComparator()); for(Iterator iter = submenuList.iterator(); iter.hasNext(); ) { JMenu submenu = (JMenu) iter.next(); menu.add(submenu); } // Mark the active tool as such if(activeToolMI != null) activeToolMI.setSelected(true); } //}}} //{{{ addPluginsToHelpMenu //################################################################################################## /** Appends menu items for understanding the loaded plugins */ public void addPluginsToHelpMenu(JMenu menu) { Plugin p; JMenuItem item; for(Iterator iter = plugins.iterator(); iter.hasNext(); ) { p = (Plugin)iter.next(); item = p.getHelpMenuItem(); if(item != null) menu.add(item); if (menu.getItemCount() > 20) { JMenu newMenu = new JMenu("more..."); menu.add(newMenu); menu = newMenu; } } } //}}} //{{{ addPluginsToSpecialMenu //################################################################################################## /** Appends menu items for using the loaded plugins */ public void addPluginsToSpecialMenu(String whichMenu, JMenu menu) { Plugin p; JMenuItem item; for(Iterator iter = plugins.iterator(); iter.hasNext(); ) { p = (Plugin)iter.next(); String menuName = getPluginMenuName(p); if(whichMenu.equals(menuName)) { item = p.getToolsMenuItem(); if(item != null) menu.add(item); } } } //}}} //{{{ toolActivated, activateDefaultTool, deliverMessage //################################################################################################## /** Called by Tools when their radio button gets hit. */ public void toolActivated(BasicTool t) { activeTool.stop(); //services.clearEverything(); activeTool = t; activeTool.start(); } /** Programmatically selects the Navigate tool. */ public void activateDefaultTool() { if(defaultToolMI != null) defaultToolMI.setSelected(true); toolActivated(defaultTool); } static final long RESET_TOOL = KMessage.KIN_SWITCHED | KMessage.KIN_CLOSED | KMessage.ALL_CLOSED; public void deliverMessage(KMessage msg) { if(msg.testProg(RESET_TOOL)) { services.clearEverything(); Kinemage kin = kMain.getKinemage(); if(kin != null) services.doFlatland.setSelected(kin.atFlat); activeTool.reset(); } } //}}} //{{{ listenTo //################################################################################################## /** Does all the work to make the ToolBox listen to the specified component. */ public void listenTo(Component c) { c.addMouseListener(this); c.addMouseMotionListener(this); c.addMouseWheelListener(this); if(c instanceof JComponent) { JComponent jc = (JComponent) c; ActionMap am = jc.getActionMap(); InputMap im = jc.getInputMap(JComponent.WHEN_FOCUSED); // This version doesn't work, for unknown reasons. //JComponent contentPane = kMain.getContentPane(); //ActionMap am = contentPane.getActionMap(); //InputMap im = contentPane.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); Action arrowUp = new ReflectiveAction("", null, this, "onArrowUp" ); Action arrowDown = new ReflectiveAction("", null, this, "onArrowDown" ); Action arrowLeft = new ReflectiveAction("", null, this, "onArrowLeft" ); Action arrowRight = new ReflectiveAction("", null, this, "onArrowRight"); // Register listeners for arrows with all combinations of Shift and Ctrl am.put("arrow-up", arrowUp ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP , 0), "arrow-up" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP , KeyEvent.SHIFT_MASK), "arrow-up" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP , KeyEvent.CTRL_MASK), "arrow-up" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_UP , KeyEvent.SHIFT_MASK|KeyEvent.CTRL_MASK), "arrow-up" ); am.put("arrow-down", arrowDown ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN , 0), "arrow-down" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN , KeyEvent.SHIFT_MASK), "arrow-down" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN , KeyEvent.CTRL_MASK), "arrow-down" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_DOWN , KeyEvent.SHIFT_MASK|KeyEvent.CTRL_MASK), "arrow-down" ); am.put("arrow-left", arrowLeft ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT , 0), "arrow-left" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT , KeyEvent.SHIFT_MASK), "arrow-left" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT , KeyEvent.CTRL_MASK), "arrow-left" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_LEFT , KeyEvent.SHIFT_MASK|KeyEvent.CTRL_MASK), "arrow-left" ); am.put("arrow-right", arrowRight ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT , 0), "arrow-right" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT , KeyEvent.SHIFT_MASK), "arrow-right" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT , KeyEvent.CTRL_MASK), "arrow-right" ); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_RIGHT , KeyEvent.SHIFT_MASK|KeyEvent.CTRL_MASK), "arrow-right" ); } } //}}} //{{{ Mouse listeners //################################################################################################## // All of these just 'bounce' the event to the current active tool public void mouseDragged(MouseEvent ev) { activeTool.mouseDragged(ev); } public void mouseMoved(MouseEvent ev) { activeTool.mouseMoved(ev); } public void mouseClicked(MouseEvent ev) { activeTool.mouseClicked(ev); } public void mouseEntered(MouseEvent ev) { activeTool.mouseEntered(ev); } public void mouseExited(MouseEvent ev) { activeTool.mouseExited(ev); } public void mousePressed(MouseEvent ev) { // required for the keyboard arrows, etc // to pick up events! kCanvas.requestFocus(); activeTool.mousePressed(ev); } public void mouseReleased(MouseEvent ev) { activeTool.mouseReleased(ev); } public void mouseWheelMoved(MouseWheelEvent ev) { activeTool.mouseWheelMoved(ev, ev.getWheelRotation()); } //}}} //{{{ onArrowUp/Down/Right/Left //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowUp(ActionEvent ev) { activeTool.onArrowUp(ev); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowDown(ActionEvent ev) { activeTool.onArrowDown(ev); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowRight(ActionEvent ev) { activeTool.onArrowRight(ev); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onArrowLeft(ActionEvent ev) { activeTool.onArrowLeft(ev); } //}}} //{{{ doTransform, overpaintCanvas //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.doTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void doTransform(Engine engine, Transform xform) { // Plugins: for(Transformable t : transformables) t.doTransform(engine, xform); // Markers: services.doTransform(engine, xform); // Active tool: activeTool.doTransform(engine, xform); } /** * Called by KinCanvas after all kinemage painting is complete, * this gives the tools a chance to write additional info * (e.g., point IDs) to the graphics area. * @param painter the Painter that can paint on the current canvas */ public void overpaintCanvas(Painter painter) { services.overpaintCanvas(painter); activeTool.overpaintCanvas(painter); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/JoglCanvas.java0000644000000000000000000003146611677352606017203 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import king.painters.JoglPainter; import java.awt.*; import java.awt.color.ColorSpace; import java.awt.event.*; import java.awt.geom.*; import java.awt.image.*; import java.io.*; import java.net.URL; import java.nio.ByteBuffer; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.r3.*; import driftwood.util.*; import javax.media.opengl.*; import javax.media.opengl.glu.*; //}}} /** * JoglCanvas is a wrapper for a Painter that uses * the OpenGL libraries for hardware-accelerated 2D rendering * via the JOGL Java library. * *

Despite dire warnings about mixing heavyweight and lightweight components, * it doesn't appear to be a problem unless a lightweight component were * supposed to paint over top of this one... * *

Painting with a Graphics2D *is* possible via a mostly-transparent * image with its own Graphics2D. * However, Java prefers ARGB-int graphics and OpenGL requires RGBA-byte graphics. * For some reason, it's MUCH faster to let Java draw on the ARGB graphics and * then map the bytes into an array ourselves than it is to draw directly on a * BufferedImage backed by a byte array. * The two perform at roughly comparable speeds (30 - 35 ms) if nothing is drawn. * However, the speeds are ~50 ms vs 1-2 SECONDS if even one text string is drawn. *

This mode of doing the canvas overpaint has been replaced by one that uses * the JoglPainter directly (which then uses the GLUT font functions for text). *

In the future, it would be nice to use the com.sun.opengl.util.j2d.Overlap * class that appeared in JOGL 1.1.0, but for now we're using the hack method * above to not screw people up who have JOGL 1.0.0 installed. * (Especially since 1.1.0 is still in the Release Candidate stage.) * *

Copyright (C) 2004-2007 by Ian W. Davis. All rights reserved. *
Begun on Sat Jun 5 15:47:31 EDT 2004 */ public class JoglCanvas extends JPanel implements GLEventListener, Transformable, MouseListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## KingMain kMain; Engine2D engine; ToolBox toolbox; GLCanvas canvas; Dimension glSize = new Dimension(); // Variables for doing text with a Graphics2D then overlaying it WritableRaster raster = null; BufferedImage overlayImg = null; ByteBuffer overlayData = null; Image logo = null; //}}} //{{{ Constructor(s) //############################################################################## public JoglCanvas(KingMain kMain, Engine2D engine, ToolBox toolbox) { super(new BorderLayout()); this.kMain = kMain; this.engine = engine; this.toolbox = toolbox; // Not guaranteed to load fully before returning -- gives blank screen. this.logo = Toolkit.getDefaultToolkit().getImage(this.getClass().getResource("images/king-logo.gif")); // Loads fully before returning: this.logo = new ImageIcon(this.getClass().getResource("images/king-logo.gif")).getImage(); // Java 1.4+ only! - adds support for Drag & Drop to the canvas kMain.getFileDropHandler().handleDropsFor(this); // Create and listen to an OpenGL canvas GLCapabilities capabilities = new GLCapabilities(); capabilities.setDoubleBuffered(true); // usually enabled by default, but to be safe... int fsaaNumSamples = kMain.getPrefs().getInt("joglNumSamples"); capabilities.setSampleBuffers(fsaaNumSamples > 1); // enables/disables full-scene antialiasing (FSAA) capabilities.setNumSamples(fsaaNumSamples); // sets number of samples for FSAA (default is 2) //canvas = GLDrawableFactory.getFactory().createGLCanvas(capabilities); canvas = new GLCanvas(capabilities); canvas.addGLEventListener(this); // calls display(), reshape(), etc. canvas.addMouseListener(this); // cursor related; see this.mouseEntered(). toolbox.listenTo(canvas); this.add(canvas, BorderLayout.CENTER); } //}}} //{{{ init, display, reshape, displayChanged //############################################################################## public void init(GLAutoDrawable drawable) {} public void display(GLAutoDrawable drawable) { GL gl = drawable.getGL(); Kinemage kin = kMain.getKinemage(); if(kin == null) { // Blank screen //gl.glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //gl.glClear(GL.GL_COLOR_BUFFER_BIT); // KiNG logo and new version availability // This is probably a bit slow, but for logo display, we don't really care. Graphics2D g2 = setupOverlay(); Dimension dim = glSize; gl.glRasterPos2d(0, -dim.height); // for getting the logo to display in correct spot g2.setColor(Color.black); g2.fillRect(0, 0, dim.width, dim.height); if(logo != null) g2.drawImage(logo, (dim.width-logo.getWidth(this))/2, (dim.height-logo.getHeight(this))/2, this); if(kMain.getPrefs().newerVersionAvailable()) announceNewVersion(g2); g2.dispose(); // Why *unsigned* bytes? Who knows. gl.glDrawPixels(dim.width, dim.height, GL.GL_RGBA, GL.GL_UNSIGNED_BYTE , getOverlayBytes()); } else { JoglPainter painter = new JoglPainter(drawable); long timestamp = System.currentTimeMillis(); KView view = kMain.getView(); Rectangle bounds = new Rectangle(this.glSize); kMain.getCanvas().syncToKin(engine, kin); engine.render(this, view, bounds, painter); if(toolbox != null) toolbox.overpaintCanvas(painter); timestamp = System.currentTimeMillis() - timestamp; if(kMain.getCanvas().writeFPS) SoftLog.err.println(timestamp+" ms ("+(timestamp > 0 ? Long.toString(1000/timestamp) : ">1000") +" FPS) - "+engine.getNumberPainted()+" objects painted"); } } public void reshape(GLAutoDrawable drawable, int x, int y, int width, int height) { GL gl = drawable.getGL(); //GLU glu = drawable.getGLU(); GLU glu = new GLU(); this.glSize.setSize(width, height); gl.glViewport(0, 0, width, height); // left, right, width, height gl.glMatrixMode(GL.GL_PROJECTION); gl.glLoadIdentity(); glu.gluOrtho2D(0.0, width, -height, 0.0); // left, right, bottom, top } public void displayChanged(GLAutoDrawable drawable, boolean modeChnaged, boolean deviceChanged) {} //}}} //{{{ getPreferred/MinimumSize, requestRepaint //############################################################################## public Dimension getPreferredSize() { return kMain.getCanvas().getPreferredSize(); } public Dimension getMinimumSize() { return kMain.getCanvas().getMinimumSize(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void requestRepaint(ActionEvent ev) { canvas.repaint(); } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.doTransform(engine, xform); if(toolbox != null) toolbox.doTransform(engine, xform); } //}}} //{{{ SLOW - setupOverlay, getOverlayBytes //############################################################################## /* Graphics2D setupOverlay() { if(overlayImg == null || overlayImg.getWidth() != glSize.width || overlayImg.getHeight() != glSize.height) { // Magic spells from the "Jumping into JOGL" article raster = Raster.createInterleavedRaster(DataBuffer.TYPE_BYTE, glSize.width, glSize.height, 4, null); ComponentColorModel colorModel = new ComponentColorModel( ColorSpace.getInstance(ColorSpace.CS_sRGB), new int[] {8,8,8,8}, true, false, ComponentColorModel.TRANSLUCENT, DataBuffer.TYPE_BYTE); overlayImg = new BufferedImage(colorModel, raster, false, null); } Graphics2D g = overlayImg.createGraphics(); // Wipe out all data currently in image with invisible black. // The for loop is MUCH faster -- maybe 10x or more. //g.setColor(new Color(0,0,0,0)); //g.fillRect(0, 0, glSize.width, glSize.height); byte[] overlayData = ((DataBufferByte)raster.getDataBuffer()).getData(); for(int i = 0; i < overlayData.length; i++) overlayData[i] = 0; // Compensate for OpenGL Y-axis running the other way 'round AffineTransform t = new AffineTransform(); t.translate(0, glSize.height); t.scale(1.0, -1.0); g.transform(t); return g; } byte[] getOverlayBytes() { return ((DataBufferByte)raster.getDataBuffer()).getData(); } */ //}}} //{{{ FAST - setupOverlay, getOverlayBytes //############################################################################## Graphics2D setupOverlay() { if(overlayImg == null || overlayImg.getWidth() != glSize.width || overlayImg.getHeight() != glSize.height) { overlayImg = new BufferedImage(glSize.width, glSize.height, BufferedImage.TYPE_INT_ARGB); int[] data = ((DataBufferInt)overlayImg.getRaster().getDataBuffer()).getData(); overlayData = ByteBuffer.allocate(4 * data.length); } Graphics2D g = overlayImg.createGraphics(); // Wipe out all data currently in image with invisible black. // The for loop is MUCH faster -- maybe 10x or more. //g.setColor(new Color(0,0,0,0)); //g.fillRect(0, 0, glSize.width, glSize.height); int[] data = ((DataBufferInt)overlayImg.getRaster().getDataBuffer()).getData(); for(int i = 0; i < data.length; i++) data[i] = 0; // Compensate for OpenGL Y-axis running the other way 'round AffineTransform t = new AffineTransform(); t.translate(0, glSize.height); t.scale(1.0, -1.0); g.transform(t); return g; } ByteBuffer getOverlayBytes() { overlayData.clear(); int i = 0; int[] data = ((DataBufferInt)overlayImg.getRaster().getDataBuffer()).getData(); while(i < data.length) { int d = data[i]; //if(d == 0) //{ // overlayData[j] = overlayData[j+1] = overlayData[j+2] = overlayData[j+3] = 0; //} //else // pack into RGBA order from ARGB ints //{ overlayData.put((byte)((d>>16) & 0xff)); overlayData.put((byte)((d>> 8) & 0xff)); overlayData.put((byte)((d ) & 0xff)); overlayData.put((byte)((d>>24) & 0xff)); //} i+=1; } overlayData.rewind(); // or else clients try to read from where we stopped writing return overlayData; } //}}} //{{{ announceNewVersion //################################################################################################## void announceNewVersion(Graphics2D g2) { String msg = "A new version of KiNG is now available"; Dimension d = this.glSize; Font font = new Font("SansSerif", Font.BOLD, 16); g2.setFont(font); g2.setColor(Color.white); FontMetrics metrics = g2.getFontMetrics(); Rectangle2D r = metrics.getStringBounds(msg, g2); g2.drawString(msg, (d.width - (int)r.getWidth())/2, (d.height - (int)r.getHeight())/2 + 210); } //}}} //{{{ Mouse listeners (for cursor) //################################################################################################## public void mouseEntered(MouseEvent ev) { // This is the only thing that removes the <-|-> cursor from the split pane. // Forces update of cursor for top level native peer (i.e. window, not GL canvas): this.setCursor( Cursor.getDefaultCursor() ); //canvas.setCursor( Cursor.getDefaultCursor() ); // not needed } public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) {} public void mouseReleased(MouseEvent ev) {} public void mouseClicked(MouseEvent ev) {} //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/AxisChooser.java0000644000000000000000000001060511531212654017356 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; //}}} /** * AxisChooser is the GUI for mapping high-dimensional kinemages * onto the X, Y, and Z axes. * *

Copyright (C) 2006-2007 by Ian W. Davis. All rights reserved. *
Begun on Tue Jun 13 16:10:45 EDT 2006 */ public class AxisChooser //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## KingMain kMain; Kinemage kin; int kinDimension; Collection dimNames; JList xAxisList, yAxisList, zAxisList; //}}} //{{{ Constructor(s) //############################################################################## public AxisChooser(KingMain kMain, Kinemage kin) { super(); this.kMain = kMain; this.kin = kin; this.kinDimension = getKinDimension(kin); this.dimNames = new ArrayList(kin.dimensionNames); for(int i = dimNames.size(); i < kinDimension; i++) dimNames.add("Axis "+(i+1)); buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { int[] selected = {0, 1, 2}; KView view = kMain.getCanvas().getCurrentView(kin); if(view.getViewingAxes() != null) selected = view.getViewingAxes(); //System.err.println(selected[0]+","+selected[1]+","+selected[2]); final int visibleRows = 10; xAxisList = new FatJList(0, 10); xAxisList.setVisibleRowCount(visibleRows); xAxisList.setListData(dimNames.toArray()); xAxisList.setSelectedIndex(Math.min(selected[0], dimNames.size()-1)); yAxisList = new FatJList(0, 10); yAxisList.setVisibleRowCount(visibleRows); yAxisList.setListData(dimNames.toArray()); yAxisList.setSelectedIndex(Math.min(selected[1], dimNames.size()-1)); zAxisList = new FatJList(0, 10); zAxisList.setVisibleRowCount(visibleRows); zAxisList.setListData(dimNames.toArray()); zAxisList.setSelectedIndex(Math.min(selected[2], dimNames.size()-1)); JButton btnOK = new JButton(new ReflectiveAction("Set axes", null, this, "onSetAxes")); TablePane2 cp = new TablePane2(); cp.insets(10).memorize(); cp.add(new JLabel("X axis")); cp.add(new JLabel("Y axis")); cp.add(new JLabel("Z axis")); cp.newRow(); cp.add(new JScrollPane(xAxisList)); cp.add(new JScrollPane(yAxisList)); cp.add(new JScrollPane(zAxisList)); cp.newRow(); cp.startSubtable(3,1).center().addCell(btnOK).endSubtable(); JDialog dialog = new JDialog(kMain.getTopWindow(), "Choose axes", false /* not modal */); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setContentPane(cp); dialog.pack(); dialog.show(); // will return immediately, b/c dialog is non-modal } //}}} //{{{ onSetAxes //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSetAxes(ActionEvent ev) { int xIndex = Math.max(0, xAxisList.getSelectedIndex()); int yIndex = Math.max(1, yAxisList.getSelectedIndex()); int zIndex = Math.max(2, zAxisList.getSelectedIndex()); KView view = kMain.getView(); if(view == null) return; view.setViewingAxes(new int[] {xIndex, yIndex, zIndex}); view.activateViewingAxes(); } //}}} //{{{ getKinDimension //############################################################################## /** * Figures out how many axes are present in this kinemage (i.e. its dimension). */ static public int getKinDimension(Kinemage kin) { int numAxes = 0; for(KList list : KIterator.allLists(kin)) numAxes = Math.max(numAxes, list.getDimension()); return numAxes; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/tool/0000755000000000000000000000000011744310054015236 5ustar rootrootking-2.21.120420/king/src/king/tool/util/0000755000000000000000000000000011744310054016213 5ustar rootrootking-2.21.120420/king/src/king/tool/util/SelfUpdatePlugin.java0000644000000000000000000003152011531212652022271 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.util; import king.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; import java.util.zip.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.*; import javax.swing.Timer; // not java.util.Timer //}}} /** * SelfUpdatePlugin allows the user to download the newest KiNG * version and install it from within the KiNG program itself. * *

Copyright (C) 2004-2007 by Ian W. Davis. All rights reserved. *
Begun on Sat May 22 11:53:49 EDT 2004 */ public class SelfUpdatePlugin extends Plugin { //{{{ Constants static final String UPDATE_ANYWAY = "It appears that either you already have the latest version of KiNG,\n"+ "or that you are not connected to the network at this time.\n"+ "\n"+ "Do you still want to try updating KiNG?"; static final String ARE_YOU_SURE1 = "This plugin will download the latest version of KiNG and probe\n"+ "that is publicly available on the Kinemage website.\n"+ "It will then be installed over top of your current KiNG\n"+ "("; static final String ARE_YOU_SURE2 = "),\n"+ "completely replacing it.\n"+ "\n"+ "This action cannot be undone. Furthermore, there is always\n"+ "a small chance it may not perform correctly, potentially\n"+ "rendering KiNG unusable and forcing you to reinstall manually.\n"+ "Are you sure you want to continue?"; static final String UPDATE_FAILED = "Due to circumstances beyond our control, the update failed.\n"+ "The most likely source of error is that you don't have permission\n"+ "to overwrite the KiNG installation, or that the network is down.\n"+ "More details about the error are available under Help | Error Log.\n"+ "\n"+ "Your copy of KiNG is probably OK, but it COULD have been damaged --\n"+ "if it acts strangely or refuses to start, you may have to reinstall.\n"+ "You can get a new copy of KiNG from http://kinemage.biochem.duke.edu.\n"+ "\n"+ "We are very sorry this happened. If you believe this is the result of\n"+ "a bug in KiNG or in this plugin, please report it to the author/maintainter,\n"+ "whose email address is listed in the user manual."; static final String ABORT_OK = "The update has been aborted.\n"+ "No changes have been made to KiNG."; static final String UPDATE_OK = "The update appears to have succeeded.\n"+ "Cross your fingers and restart KiNG\n"+ "for changes to take effect."; //}}} //{{{ Variable definitions //############################################################################## Timer progressTimer; JProgressBar progressBar; JDialog dialog; volatile int totalSize = 1, downloadedSize = 0; volatile boolean abortFlag = false; volatile Throwable backgroundError = null; //}}} //{{{ Constructor(s) //############################################################################## public SelfUpdatePlugin(ToolBox tb) { super(tb); //System.out.println(System.getProperty("os.name")); progressTimer = new Timer(1000, new ReflectiveAction(null, null, this, "onProgressTimer")); progressTimer.setCoalesce(true); progressBar = new JProgressBar(0, 100); progressBar.setStringPainted(true); JButton btnCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onDownloadCancel")); TablePane2 cp = new TablePane2(); cp.insets(4).memorize(); cp.addCell(new JLabel("Downloading new version of KiNG from")).newRow(); cp.addCell(new JLabel("http://kinemage.biochem.duke.edu ...")).newRow(); cp.hfill(true).addCell(progressBar).newRow(); cp.center().addCell(btnCancel); dialog = new JDialog(kMain.getTopWindow(), true); dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dialog.setContentPane(cp); } //}}} //{{{ toString, isAppletSafe, getToolsMenuItem, getHelpAnchor //############################################################################## public String toString() { return "Update KiNG"; } public static boolean isAppletSafe() { return false; } public JMenuItem getToolsMenuItem() { JMenuItem item = new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onBeginUpdate")); return item; } public String getHelpAnchor() { return "#update-plugin"; } //}}} //{{{ onProgressTimer, onDownloadCancel //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onProgressTimer(ActionEvent ev) { progressBar.setValue((100*downloadedSize)/totalSize); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDownloadCancel(ActionEvent ev) { abortFlag = true; } //}}} //{{{ onBeginUpdate //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onBeginUpdate(ActionEvent ev) { KingPrefs prefs = kMain.getPrefs(); // Check with user before starting if(! prefs.newerVersionAvailable() && JOptionPane.YES_OPTION != JOptionPane.showConfirmDialog(kMain.getTopWindow(), UPDATE_ANYWAY, "Update anyway?", JOptionPane.YES_NO_OPTION)) return; String msg; try { msg = ARE_YOU_SURE1 + prefs.jarFileDirectory.getCanonicalPath() + ARE_YOU_SURE2; } catch(Exception ex) { msg = ARE_YOU_SURE1 + "unknown location" + ARE_YOU_SURE2; } // io, null ptr, security? if(JOptionPane.YES_OPTION != JOptionPane.showConfirmDialog(kMain.getTopWindow(), msg, "Update KiNG?", JOptionPane.YES_NO_OPTION)) return; this.downloadedSize = 0; this.abortFlag = false; this.backgroundError = null; this.progressBar.setValue(0); Thread backgroundJob = new Thread(new ReflectiveRunnable(this, "downloadFile")); backgroundJob.start(); this.progressTimer.start(); this.dialog.pack(); this.dialog.setLocationRelativeTo(kMain.getTopWindow()); this.dialog.setVisible(true); // execution halts here until the dialog is closed } //}}} //{{{ downloadFile //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void downloadFile() { try { URL updateURL = new URL("http://kinemage.biochem.duke.edu/downloads/software/king/current2"); URLConnection urlConn = updateURL.openConnection(); this.totalSize = urlConn.getContentLength(); this.downloadedSize = 0; InputStream is = urlConn.getInputStream(); File tmpFile = File.createTempFile("kingupdate", null); tmpFile.deleteOnExit(); OutputStream os = new BufferedOutputStream(new FileOutputStream(tmpFile)); //streamcopy(is, os); byte[] buffer = new byte[2048]; int len; while((len = is.read(buffer)) != -1 && !abortFlag) { os.write(buffer, 0, len); this.downloadedSize += len; } os.close(); is.close(); if(!abortFlag) { ZipFile f = new ZipFile(tmpFile); installZipFile(f); f.close(); ZipFile probe = updateProbe(); installZipFile(probe); probe.close(); abortFlag = false; // just in case there was a sync. problem } } catch(Throwable t) { this.backgroundError = t; } SwingUtilities.invokeLater(new ReflectiveRunnable(this, "onFinishUpdate")); } //}}} //{{{ updateProbe /** * Attempt to automatically update probe. This requires determining the OS that KiNG is running * on, and obtaining the correctly compatible version of probe. */ private ZipFile updateProbe() throws Throwable { String osName = System.getProperty("os.name").toLowerCase(); if (osName.indexOf("win") != -1) { return downloadProbe("http://kinemage.biochem.duke.edu/downloads/software/king/windowsprobe"); } else if (osName.indexOf("mac") != -1) { return downloadProbe("http://kinemage.biochem.duke.edu/downloads/software/king/macprobe"); } else if ((osName.indexOf("nix") != -1)||(osName.indexOf("nux") != -1)) { return downloadProbe("http://kinemage.biochem.duke.edu/downloads/software/king/linuxprobe"); } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Unable to determine operating system name, please update manually.", "Update failed", JOptionPane.ERROR_MESSAGE); } return null; } //}}} //{{{ downloadProbe private ZipFile downloadProbe(String url) throws Throwable { URL updateURL = new URL(url); URLConnection urlConn = updateURL.openConnection(); this.totalSize = urlConn.getContentLength(); this.downloadedSize = 0; InputStream is = urlConn.getInputStream(); File tmpFile = File.createTempFile("probeupdate", null); tmpFile.deleteOnExit(); OutputStream os = new BufferedOutputStream(new FileOutputStream(tmpFile)); //streamcopy(is, os); byte[] buffer = new byte[2048]; int len; while((len = is.read(buffer)) != -1 && !abortFlag) { os.write(buffer, 0, len); this.downloadedSize += len; } os.close(); is.close(); return new ZipFile(tmpFile); } //}}} //{{{ installZipFile, streamcopy //############################################################################## /** * Unpacks the ZIP file into the directory where king.jar is currently located, * after stripping off the initial king-x.xx/ path */ private void installZipFile(ZipFile zipfile) throws IOException { File dest = kMain.getPrefs().jarFileDirectory; if(!dest.exists() || !dest.isDirectory() || !dest.canWrite()) throw new IOException("Unable to unpack downloaded ZIP into "+dest+"; check permissions/ownership?"); Enumeration entries = zipfile.entries(); while(entries.hasMoreElements()) { ZipEntry e = (ZipEntry) entries.nextElement(); // Clip off king-x.xx/ prefix String name = e.getName(); int i = name.indexOf("/"); if(i != -1) name = name.substring(i); if(name.equals("")) continue; // Create directory or write file File f = new File(dest, name).getCanonicalFile(); if(e.isDirectory()) { f.mkdirs(); } else { InputStream is = zipfile.getInputStream(e); OutputStream os = new BufferedOutputStream(new FileOutputStream(f)); streamcopy(is, os); os.close(); is.close(); } } } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ onFinishUpdate //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFinishUpdate() { this.progressTimer.stop(); this.dialog.setVisible(false); if(backgroundError != null) { backgroundError.printStackTrace(SoftLog.err); JOptionPane.showMessageDialog(kMain.getTopWindow(), UPDATE_FAILED, "Update failed", JOptionPane.ERROR_MESSAGE); } else if(abortFlag) { // Don't really need to do anything. JOptionPane.showMessageDialog(kMain.getTopWindow(), ABORT_OK, "Update aborted", JOptionPane.INFORMATION_MESSAGE); } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), UPDATE_OK, "Update succeeded", JOptionPane.INFORMATION_MESSAGE); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/tool/draw/0000755000000000000000000000000011744310054016173 5ustar rootrootking-2.21.120420/king/src/king/tool/draw/DrawingTool.java0000644000000000000000000014647711531212650021307 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.draw; import king.*; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.lang.ref.SoftReference; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.data.*; import driftwood.gui.*; import driftwood.r3.*; //}}} /** * DrawingTool provides many of the Mage "Draw New" functions. * *

Copyright (C) 2004-2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Feb 26 16:25:47 EST 2004 */ public class DrawingTool extends BasicTool { //{{{ Constants static final int AUGER_RADIUS = 40; static final String PAINT_CYLINDER = "circle"; static final String PAINT_SPHERE = "sphere"; static final String PAINT_POINT = "one point"; static final String PAINT_POLY = "polyline"; //}}} //{{{ Interface: UndoStep //############################################################################## interface UndoStep { /** Triggers the undo action */ public void undo(); } //}}} //{{{ Class: ListChildrenUndo //############################################################################## /* * Provides a simple undo mechanism for all the drawing tools. * Every time a list is changed, its children field * is cloned and saved here. The editing action can then be undone * simply by copying this over top of the current children. */ static class ListChildrenUndo implements UndoStep { KList list; ArrayList children; KPoint modPoint = null; KPoint modPrev = null; /* Saves the state of list l */ public ListChildrenUndo(KList l) { super(); this.list = l; this.children = new ArrayList(l.getChildren()); } /** Saves the state of a point who's value of "prev" was set to null */ public void savePoint(KPoint p) { this.modPoint = p; this.modPrev = p.getPrev(); } /** Triggers the undo action */ public void undo() { list.setChildren(this.children); if(modPoint != null) modPoint.setPrev(modPrev); } } //}}} //{{{ Class: PointCoordsUndo //############################################################################## /** Allows us to undo moving points, eg when we drag them around. */ static class PointCoordsUndo implements UndoStep { KPoint[] points; Triple[] coords; public PointCoordsUndo(KPoint[] pts) { super(); this.points = (KPoint[]) pts.clone(); this.coords = new Triple[ points.length ]; for(int i = 0; i < points.length; i++) coords[i] = new Triple(points[i]); } public void undo() { for(int i = 0; i < points.length; i++) points[i].setXYZ(coords[i].getX(), coords[i].getY(), coords[i].getZ()); } } //}}} //{{{ Variable definitions //############################################################################## TablePane2 ui; JRadioButton rbDoNothing, rbRevealList, rbEditGroup, rbEditSubgroup, rbEditList, rbEditPoint, rbPaintPoints, rbMovePoint; JRadioButton rbLineSegment, rbDottedLine, rbArcSegment, rbBalls, rbLabels, rbDots, rbTriangle; JRadioButton rbPunch, rbPrune, rbAuger, rbSphereCrop, rbColorAuger, rbDeleteInvis, rbTurnOff; Builder builder = new Builder(); KPoint lineseg1 = null, lineseg2 = null; KPoint triang1 = null, triang2 = null, triang3 = null; KPoint arcseg1 = null, arcseg2 = null, arcseg3 = null; GroupEditor grEditor; PointEditor ptEditor; KPoint draggedPoint = null; KPoint[] allPoints = null; JComboBox cmPaintMode, cmPointPaint, cmAugerPalette; JTextField tfShortenLine; JCheckBox cbLabelIsID; JTextField tfNumDots; JTextField tfArcDegrees, tfArcShorten; JTextField cmPointText; JCheckBox cbArcArrowhead; JTextField tfTriangleSize; JTextField tfCropRadius; JCheckBox cbTurnOffGroup, cbTurnOffSubgroup, cbTurnOffList; /** Use add/removeLast() to enque UndoSteps wrapped in SoftReferences */ LinkedList undoStack; /** Used by getDrawingList() to create new lists when subgroup is updated */ int subgroupCounter = 0; /** Used by Auger for doing its marker drawing */ int lastAugerX, lastAugerY; //}}} //{{{ Constructor(s) //############################################################################## public DrawingTool(ToolBox tb) { super(tb); grEditor = new GroupEditor(kMain, kMain.getTopWindow()); ptEditor = new PointEditor(kMain); undoStack = new LinkedList(); buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { ButtonGroup buttonGroup = new ButtonGroup(); // Build all the radio buttons for different drawing modes rbDoNothing = new JRadioButton("Do nothing (navigate)"); buttonGroup.add(rbDoNothing); rbRevealList = new JRadioButton("Reveal in hierarchy"); buttonGroup.add(rbRevealList); rbEditGroup = new JRadioButton("Edit group props"); buttonGroup.add(rbEditGroup); rbEditSubgroup = new JRadioButton("Edit subgroup props"); buttonGroup.add(rbEditSubgroup); rbEditList = new JRadioButton("Edit list props"); buttonGroup.add(rbEditList); rbEditPoint = new JRadioButton("Edit point props"); buttonGroup.add(rbEditPoint); rbPaintPoints = new JRadioButton("Paint points"); buttonGroup.add(rbPaintPoints); rbMovePoint = new JRadioButton("Move points"); buttonGroup.add(rbMovePoint); rbLineSegment = new JRadioButton("Draw line segments"); buttonGroup.add(rbLineSegment); rbDottedLine = new JRadioButton("Draw dotted lines"); buttonGroup.add(rbDottedLine); rbArcSegment = new JRadioButton("Draw curved arc"); buttonGroup.add(rbArcSegment); rbBalls = new JRadioButton("Draw balls"); buttonGroup.add(rbBalls); rbLabels = new JRadioButton("Draw labels"); buttonGroup.add(rbLabels); rbDots = new JRadioButton("Draw dots"); buttonGroup.add(rbDots); rbTriangle = new JRadioButton("Draw triangles"); buttonGroup.add(rbTriangle); rbPunch = new JRadioButton("Punch one point"); buttonGroup.add(rbPunch); rbPrune = new JRadioButton("Prune a polyline"); buttonGroup.add(rbPrune); rbAuger = new JRadioButton("Auger a region"); buttonGroup.add(rbAuger); rbColorAuger = new JRadioButton("Auger a color"); buttonGroup.add(rbColorAuger); rbSphereCrop = new JRadioButton("Spherical crop"); buttonGroup.add(rbSphereCrop); rbDeleteInvis = new JRadioButton("Delete invisible"); buttonGroup.add(rbDeleteInvis); rbTurnOff = new JRadioButton("Turn off"); buttonGroup.add(rbTurnOff); // Create the extra control panels cmPaintMode = new JComboBox(new String[] { PAINT_CYLINDER, PAINT_SPHERE, PAINT_POINT, PAINT_POLY } ); cmPaintMode.setSelectedItem(PAINT_CYLINDER); cmPointPaint = new JComboBox(KPalette.getStandardMap().values().toArray()); cmPointPaint.setSelectedItem(KPalette.green); cmPointText = new JTextField(); TablePane2 tpPaintPts = new TablePane2(); tpPaintPts.addCell(new JLabel("Use color:")); tpPaintPts.hfill(true).addCell(cmPointPaint); tpPaintPts.newRow(); tpPaintPts.addCell(new JLabel("Selection:")); tpPaintPts.hfill(true).addCell(cmPaintMode); tpPaintPts.newRow(); tpPaintPts.addCell(new JLabel("Contains text:")); tpPaintPts.hfill(true).addCell(cmPointText); FoldingBox fbPaintPts = new FoldingBox(rbPaintPoints, tpPaintPts); fbPaintPts.setAutoPack(true); fbPaintPts.setIndent(10); cmAugerPalette = new JComboBox(KPalette.getStandardMap().values().toArray()); cmAugerPalette.setSelectedItem(KPalette.cyan); TablePane2 tpAugerPalette = new TablePane2(); tpAugerPalette.addCell(new JLabel("Remove color:")); tpAugerPalette.hfill(true).addCell(cmAugerPalette); FoldingBox fbAugerPalette = new FoldingBox(rbColorAuger, tpAugerPalette); fbAugerPalette.setAutoPack(true); fbAugerPalette.setIndent(10); tfShortenLine = new JTextField("0.0", 6); TablePane tpLineSeg = new TablePane(); tpLineSeg.addCell(new JLabel("Shorten lines by:")); tpLineSeg.addCell(tfShortenLine); FoldingBox fbLineSeg = new FoldingBox(rbLineSegment, tpLineSeg); fbLineSeg.setAutoPack(true); fbLineSeg.setIndent(10); tfNumDots = new JTextField("10", 6); TablePane tpDottedLine = new TablePane(); tpDottedLine.addCell(new JLabel("Number of dots:")); tpDottedLine.addCell(tfNumDots); FoldingBox fbDottedLine = new FoldingBox(rbDottedLine, tpDottedLine); fbDottedLine.setAutoPack(true); fbDottedLine.setIndent(10); tfArcDegrees = new JTextField("120", 6); tfArcShorten = new JTextField("0", 6); cbArcArrowhead = new JCheckBox("Arrowhead", false); TablePane tpArcSegment = new TablePane(); tpArcSegment.addCell(new JLabel("Curvature (degrees):")); tpArcSegment.addCell(tfArcDegrees); tpArcSegment.newRow(); tpArcSegment.addCell(new JLabel("Shorten by (degrees):")); tpArcSegment.addCell(tfArcShorten); tpArcSegment.newRow(); tpArcSegment.addCell(cbArcArrowhead); FoldingBox fbArcSegment = new FoldingBox(rbArcSegment, tpArcSegment); fbArcSegment.setAutoPack(true); fbArcSegment.setIndent(10); cbLabelIsID = new JCheckBox("Use ID of picked point for label", false); TablePane tpLabels = new TablePane(); tpLabels.addCell(cbLabelIsID); FoldingBox fbLabels = new FoldingBox(rbLabels, tpLabels); fbLabels.setAutoPack(true); fbLabels.setIndent(10); tfTriangleSize = new JTextField("1.0", 6); TablePane tpTriangle = new TablePane(); tpTriangle.addCell(new JLabel("Fractional size:")); tpTriangle.addCell(tfTriangleSize); FoldingBox fbTriangle = new FoldingBox(rbTriangle, tpTriangle); fbTriangle.setAutoPack(true); fbTriangle.setIndent(10); tfCropRadius = new JTextField("10", 6); TablePane tpSphereCrop = new TablePane(); tpSphereCrop.addCell(new JLabel("Crop radius:")); tpSphereCrop.addCell(tfCropRadius); FoldingBox fbSphereCrop = new FoldingBox(rbSphereCrop, tpSphereCrop); fbSphereCrop.setAutoPack(true); fbSphereCrop.setIndent(10); TablePane tpDeleteInvis = new TablePane(); tpDeleteInvis.addCell(new JLabel("Click on any point! ")); FoldingBox fbDeleteInvis = new FoldingBox(rbDeleteInvis, tpDeleteInvis); fbDeleteInvis.setAutoPack(true); fbDeleteInvis.setIndent(10); cbTurnOffGroup = new JCheckBox("Group", true); cbTurnOffSubgroup = new JCheckBox("Subgroup", false); cbTurnOffList = new JCheckBox("List", false); TablePane tpTurnOff = new TablePane(); tpTurnOff.addCell(cbTurnOffGroup); tpTurnOff.newRow(); tpTurnOff.addCell(cbTurnOffSubgroup); tpTurnOff.newRow(); tpTurnOff.addCell(cbTurnOffList); FoldingBox fbTurnOff = new FoldingBox(rbTurnOff, tpTurnOff); fbTurnOff.setAutoPack(true); fbTurnOff.setIndent(10); // Choose default drawing tool rbEditList.setSelected(true); // Create the UNDO button, etc JButton btnUndo = new JButton(new ReflectiveAction("Undo drawing", null, this, "onUndo")); JButton btnNewSubgroup = new JButton(new ReflectiveAction("New subgroup", null, this, "onNewSubgroup")); // Put the UI together ui = new TablePane2(); ui.hfill(true).vfill(true).insets(0,1,0,1).memorize(); ui.addCell(rbDoNothing).newRow(); ui.addCell(rbRevealList).newRow(); ui.addCell(rbEditGroup).newRow(); ui.addCell(rbEditSubgroup).newRow(); ui.addCell(rbEditList).newRow(); ui.addCell(rbEditPoint).newRow(); ui.addCell(rbPaintPoints).newRow(); ui.addCell(fbPaintPts).newRow(); ui.addCell(rbMovePoint).newRow(); ui.addCell(ui.strut(0,6)).newRow(); ui.addCell(rbLineSegment).newRow(); ui.addCell(fbLineSeg).newRow(); ui.addCell(rbDottedLine).newRow(); ui.addCell(fbDottedLine).newRow(); ui.addCell(rbArcSegment).newRow(); ui.addCell(fbArcSegment).newRow(); ui.addCell(rbBalls).newRow(); ui.addCell(rbLabels).newRow(); ui.addCell(fbLabels).newRow(); ui.addCell(rbDots).newRow(); ui.addCell(rbTriangle).newRow(); ui.addCell(fbTriangle).newRow(); ui.addCell(ui.strut(0,6)).newRow(); ui.addCell(rbPunch).newRow(); ui.addCell(rbPrune).newRow(); ui.addCell(rbAuger).newRow(); ui.addCell(rbColorAuger).newRow(); ui.addCell(fbAugerPalette).newRow(); ui.addCell(rbSphereCrop).newRow(); ui.addCell(fbSphereCrop).newRow(); ui.addCell(rbDeleteInvis).newRow(); ui.addCell(fbDeleteInvis).newRow(); ui.addCell(rbTurnOff).newRow(); ui.addCell(fbTurnOff).newRow(); ui.addCell(btnNewSubgroup).newRow(); ui.addCell(btnUndo).newRow(); } //}}} //{{{ xx_click() functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); if(rbDoNothing.isSelected()) return; // don't mark kin as modified else if(rbRevealList.isSelected()) doRevealList(x, y, p, ev); else if(rbEditGroup.isSelected()) doEditGroup(x, y, p, ev); else if(rbEditSubgroup.isSelected()) doEditSubgroup(x, y, p, ev); else if(rbEditList.isSelected()) doEditList(x, y, p, ev); else if(rbEditPoint.isSelected()) doEditPoint(x, y, p, ev); else if(rbPaintPoints.isSelected()) doPaintPoints(x, y, p, ev); else if(rbMovePoint.isSelected()) return; // don't mark kin as modified else if(rbLineSegment.isSelected()) doLineSegment(x, y, p, ev); else if(rbDottedLine.isSelected()) doDottedLine(x, y, p, ev); else if(rbArcSegment.isSelected()) doArcSegment(x, y, p, ev); else if(rbBalls.isSelected()) doBalls(x, y, p, ev); else if(rbLabels.isSelected()) doLabels(x, y, p, ev); else if(rbDots.isSelected()) doDots(x, y, p, ev); else if(rbTriangle.isSelected()) doTriangle(x, y, p, ev); else if(rbPunch.isSelected()) doPunch(x, y, p, ev); else if(rbPrune.isSelected()) doPrune(x, y, p, ev); else if(rbAuger.isSelected()) doAuger(x, y, p, ev); else if(rbColorAuger.isSelected()) doColorAuger(x ,y, p, ev); else if(rbSphereCrop.isSelected()) doSphereCrop(x, y, p, ev); else if(rbDeleteInvis.isSelected()) doDeleteInvis(x, y, p, ev); else if(rbTurnOff.isSelected()) doTurnOff(x, y, p, ev); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); } //}}} //{{{ onUndo //############################################################################## // target of reflection public void onUndo(ActionEvent ev) { if(undoStack.size() < 1) return; SoftReference ref = (SoftReference) undoStack.removeLast(); UndoStep step = (UndoStep) ref.get(); if(step == null) undoStack.clear(); // we should discard any other undos too else step.undo(); Kinemage kin = kMain.getKinemage(); if(kin == null) return; } // target of reflection public void onNewSubgroup(ActionEvent ev) { // Forces creation of a new subgroup // and triggers message to kinemage this.getDrawingSubgroup(true); } //}}} //{{{ getDrawingGroup, getDrawingSubgroup //############################################################################## /** Returns null if no kinemage is loaded */ protected KGroup getDrawingGroup() { Kinemage kin = kMain.getKinemage(); if(kin == null) return null; KGroup group = (KGroup)kin.metadata.get(this.getClass().getName()+".drawNewGroup"); if(group == null || group.getKinemage() == null) // signals that it's not bound to a kinemage -- has been deleted { group = new KGroup("Drawn objs"); //group.setDominant(true); kin.add(group); kin.metadata.put(this.getClass().getName()+".drawNewGroup", group); } return group; } /** Returns null if no kinemage is loaded */ protected KGroup getDrawingSubgroup(boolean forceCreate) { Kinemage kin = kMain.getKinemage(); if(kin == null) return null; KGroup group = this.getDrawingGroup(); KGroup subgroup = (KGroup)kin.metadata.get(this.getClass().getName()+".drawNewSubgroup"); if(subgroup == null || forceCreate || subgroup.getKinemage() == null) // signals that it's not bound to a kinemage -- has been deleted { subgroupCounter++; subgroup = new KGroup("Drawn objs "+subgroupCounter); subgroup.setDominant(true); group.add(subgroup); kin.metadata.put(this.getClass().getName()+".drawNewSubgroup", subgroup); } return subgroup; } //}}} //{{{ getDrawingList //############################################################################## /** * @param listType is one of the KList constants * @param id is an identifier so one can have e.g. multiple vector lists * @return null if no kinemage is loaded */ protected KList getDrawingList(String listType, String id) { Kinemage kin = kMain.getKinemage(); if(kin == null) return null; KGroup subgroup = this.getDrawingSubgroup(false); String listName = this.getClass().getName()+".drawNewList."+listType+"."+id+"."+subgroupCounter; KList list = (KList)kin.metadata.get(listName); if(list == null || list.getKinemage() == null) // signals that it's not bound to a kinemage -- has been deleted { list = new KList(listType, "Drawn "+listType+"s"); KPaint[] colors = {KPalette.magenta, KPalette.green, KPalette.gold}; list.setColor(colors[subgroupCounter % colors.length]); subgroup.add(list); kin.metadata.put(listName, list); } return list; } //}}} //{{{ doRevealList, doEditGroup/Subgroup/List/Point //############################################################################## public void doRevealList(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = (KList)p.getParent(); if(list == null) return; kMain.getKinTree().reveal(list); kMain.getKinTree().show(); } public void doEditGroup(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = (KList)p.getParent(); if(list == null) return; KGroup subgroup = (KGroup)list.getParent(); if(subgroup == null) return; KGroup group = (KGroup)subgroup.getParent(); if(group == null) return; grEditor.editGroup(group); } public void doEditSubgroup(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = (KList)p.getParent(); if(list == null) return; KGroup subgroup = (KGroup)list.getParent(); if(subgroup == null) return; grEditor.editSubgroup(subgroup); } public void doEditList(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = (KList)p.getParent(); if(list == null) return; grEditor.editList(list); } public void doEditPoint(int x, int y, KPoint p, MouseEvent ev) { if(p != null) ptEditor.editPoint(p); } //}}} //{{{ doPaintPoints //############################################################################## protected void doPaintPoints(int x, int y, KPoint p, MouseEvent ev) { Engine engine = kCanvas.getEngine(); Collection points = Collections.emptySet(); String mode = (String) cmPaintMode.getSelectedItem(); if(mode == PAINT_CYLINDER) points = engine.pickAll2D(x, y, services.doSuperpick.isSelected(), AUGER_RADIUS); else if(mode == PAINT_SPHERE && p != null) points = engine.pickAll3D(p.getX(), p.getY(), p.getZ(), services.doSuperpick.isSelected(), AUGER_RADIUS / engine.zoom3D); else if(mode == PAINT_POINT && p != null) points = Collections.singleton(p); else if(mode == PAINT_POLY && p != null) { KList list = (KList) p.getParent(); if(list == null) { points = Collections.singleton(p); } ArrayList parray = new ArrayList(); for(ListIterator iter = list.getChildren().listIterator(); iter.hasNext(); ) { KPoint q = (KPoint) iter.next(); if(q == p) //find the selected point { while(iter.hasPrevious()) //go to beginning of its polyline { q = (KPoint) iter.previous(); if(q.getPrev() == null) break; } q = (KPoint) iter.next(); //advance one to prevent endless loop parray.add(q); while(iter.hasNext()) //get all members of that polyline { q = (KPoint) iter.next(); if(q.getPrev() == null) break; parray.add(q); } } } points = parray; } // Painting can't be undone because ... ? // Paint all the points KPaint paintColor = (KPaint) cmPointPaint.getSelectedItem(); for(Iterator iter = points.iterator(); iter.hasNext(); ) { p = (KPoint) iter.next(); if ((cmPointText.getText() == null)||(cmPointText.getText().equals(""))) { p.setColor(paintColor); } else { if (p.getName().indexOf(cmPointText.getText())>-1) p.setColor(paintColor); } } } //}}} //{{{ doLineSegment //############################################################################## protected void doLineSegment(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; if(lineseg1 == null) { lineseg1 = p; } else// if(lineseg2 == null) { if (!lineseg1.equals(p)) { // should fix bug where clicking on same point twice causes bugs with zooming lineseg2 = p; KList list = this.getDrawingList(KList.VECTOR, "lineSegment"); if(list == null) return; undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); // Calculate line shortening double shorten = 0.0; try { shorten = Double.parseDouble(tfShortenLine.getText()); } catch(NumberFormatException ex) {} double xlen = lineseg1.getX() - lineseg2.getX(); double ylen = lineseg1.getY() - lineseg2.getY(); double zlen = lineseg1.getZ() - lineseg2.getZ(); double len = Math.sqrt(xlen*xlen + ylen*ylen + zlen*zlen); double a = 1.0 - shorten/len; // the multiplier used below VectorPoint v1 = new VectorPoint("drawn", null); v1.setX(a*lineseg1.getX() + (1-a)*lineseg2.getX()); v1.setY(a*lineseg1.getY() + (1-a)*lineseg2.getY()); v1.setZ(a*lineseg1.getZ() + (1-a)*lineseg2.getZ()); list.add(v1); VectorPoint v2 = new VectorPoint("drawn", v1); v2.setX(a*lineseg2.getX() + (1-a)*lineseg1.getX()); v2.setY(a*lineseg2.getY() + (1-a)*lineseg1.getY()); v2.setZ(a*lineseg2.getZ() + (1-a)*lineseg1.getZ()); list.add(v2); lineseg1 = lineseg2 = null; Kinemage kin = kMain.getKinemage(); if(kin == null) return; } } } //}}} //{{{ doBalls, doLabels //############################################################################## protected void doBalls(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = this.getDrawingList(KList.BALL, "balls"); if(list == null) return; undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); BallPoint b = new BallPoint("drawn"); b.setX(p.getX()); b.setY(p.getY()); b.setZ(p.getZ()); list.add(b); Kinemage kin = kMain.getKinemage(); if(kin == null) return; } protected void doLabels(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = this.getDrawingList(KList.LABEL, "labels"); if(list == null) return; Object labelText = p.getName(); if(!cbLabelIsID.isSelected()) { labelText = JOptionPane.showInputDialog(kMain.getTopWindow(), "Enter label text", "Enter label text", JOptionPane.QUESTION_MESSAGE, null, null, labelText); if(labelText == null) return; } undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); LabelPoint lbl = new LabelPoint(labelText.toString()); lbl.setX(p.getX()); lbl.setY(p.getY()); lbl.setZ(p.getZ()); list.add(lbl); Kinemage kin = kMain.getKinemage(); if(kin == null) return; } //}}} //{{{ doDots //############################################################################## protected void doDots(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = this.getDrawingList(KList.DOT, "dots"); if(list == null) return; undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); DotPoint dt = new DotPoint("drawn"); dt.setX(p.getX()); dt.setY(p.getY()); dt.setZ(p.getZ()); list.add(dt); Kinemage kin = kMain.getKinemage(); if(kin == null) return; } //}}} //{{{ doDottedLine //############################################################################## protected void doDottedLine(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; if(lineseg1 == null) { lineseg1 = p; } else// if(lineseg2 == null) { lineseg2 = p; KList list = this.getDrawingList(KList.DOT, "dottedLine"); if(list == null) return; undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); // Endpoints and working registers Triple p1 = new Triple(lineseg1.getX(), lineseg1.getY(), lineseg1.getZ()); Triple p2 = new Triple(lineseg2.getX(), lineseg2.getY(), lineseg2.getZ()); Triple x1 = new Triple(), x2 = new Triple(); // Number of dots int nDots = 10; try { nDots = Math.max(1, Integer.parseInt(tfNumDots.getText())); } catch(NumberFormatException ex) {} // Draw dots for(double i = 1; i <= nDots; i++) { x1.likeProd(1.0-(i/(nDots+1.0)), p1); x2.likeProd(i/(nDots+1.0), p2); x1.add(x2); DotPoint dt = new DotPoint("drawn"); dt.setX(x1.getX()); dt.setY(x1.getY()); dt.setZ(x1.getZ()); list.add(dt); } lineseg1 = lineseg2 = null; Kinemage kin = kMain.getKinemage(); if(kin == null) return; } } //}}} //{{{ doArcSegment //############################################################################## protected void doArcSegment(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; if(arcseg1 == null) arcseg1 = p; // reference position else if(arcseg2 == null) arcseg2 = p; // arc tail else// if(arcseg3 == null) { arcseg3 = p; // arc head KList list = this.getDrawingList(KList.VECTOR, "arcSegment"); if(list == null) return; undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); // R // // P---M-->Q // . . . // . . . // C Triple R = new Triple(arcseg1.getX(), arcseg1.getY(), arcseg1.getZ()); Triple P = new Triple(arcseg2.getX(), arcseg2.getY(), arcseg2.getZ()); Triple Q = new Triple(arcseg3.getX(), arcseg3.getY(), arcseg3.getZ()); Triple M = new Triple().likeMidpoint(P, Q); double arcDegrees = 90; try { arcDegrees = Double.parseDouble(tfArcDegrees.getText()); } catch(NumberFormatException ex) {} if(arcDegrees < 1) arcDegrees = 1; if(arcDegrees > 360) arcDegrees = 360; double phi = (arcDegrees < 180 ? arcDegrees : 360 - arcDegrees); double distPQ = P.distance(Q); double distMQ = distPQ / 2; double distMC = distMQ / Math.tan(Math.toRadians(phi/2)); Triple C = builder.construct4(R, Q, M, distMC, 90, (arcDegrees < 180 ? 180 : 0)); Triple Cx = new Triple().likeNormal(P, R, Q).add(C); // Not good if angle=180 and Q, C, P are colinear! //if(arcDegrees < 180) Cx.likeNormal(Q, C, P).add(C); //else Cx.likeNormal(P, C, Q).add(C); double shortenDegrees = 0; try { shortenDegrees = Double.parseDouble(tfArcShorten.getText()); } catch(NumberFormatException ex) {} Triple rotPoint = new Triple(); Transform xform = new Transform(); VectorPoint v1 = null, prev = null; for(double rotDegrees = shortenDegrees/2; rotDegrees <= (arcDegrees-shortenDegrees/2); rotDegrees+=1.0) { xform.likeRotation(C, Cx, rotDegrees); xform.transform(P, rotPoint); prev = v1; v1 = new VectorPoint("drawn", prev); v1.setX(rotPoint.getX()); v1.setY(rotPoint.getY()); v1.setZ(rotPoint.getZ()); list.add(v1); } // Add arrowheads here if(cbArcArrowhead.isSelected()) { Triple arrowBase = new Triple(prev.getX(), prev.getY(), prev.getZ()); Triple arrowTip = new Triple(v1.getX(), v1.getY(), v1.getZ()); makeArrowhead(R, arrowBase, arrowTip, 0.12*distPQ, 30, 4, list); } arcseg1 = arcseg2 = arcseg3 = null; Kinemage kin = kMain.getKinemage(); if(kin == null) return; } } //}}} //{{{ makeArrowhead //############################################################################## /** * Creates an arrowhead. * @param tine the first tine around the base-tip axis will point toward this point * @param base the base of the arrow body * @param tip the tip of the arrow * @param tineLength the length of each tine * @param tineAngle the angle of the tines to the arrow body * @param tineCount how many tines will be created * @param list the list in which to create the tines */ void makeArrowhead(Tuple3 tine, Tuple3 base, Tuple3 tip, double tineLength, double tineAngle, int tineCount, KList list) { for(int i = 0; i < tineCount; i++) { Triple tineTip = builder.construct4(tine, base, tip, tineLength, tineAngle, (360.0*i)/tineCount); VectorPoint v1 = new VectorPoint("drawn", null); v1.setXYZ(tip.getX(), tip.getY(), tip.getZ()); list.add(v1); VectorPoint v2 = new VectorPoint("drawn", v1); v2.setXYZ(tineTip.getX(), tineTip.getY(), tineTip.getZ()); list.add(v2); } } //}}} //{{{ doTriangle //############################################################################## protected void doTriangle(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; if(triang1 == null) triang1 = p; else if(triang2 == null) triang2 = p; else// if(triang3 == null) { triang3 = p; KList list = this.getDrawingList(KList.TRIANGLE, "triangle"); if(list == null) return; undoStack.addLast(new SoftReference(new ListChildrenUndo(list))); // Corner points Triple p1 = new Triple(triang1.getX(), triang1.getY(), triang1.getZ()); Triple p2 = new Triple(triang2.getX(), triang2.getY(), triang2.getZ()); Triple p3 = new Triple(triang3.getX(), triang3.getY(), triang3.getZ()); // Center point Triple ctr = new Triple().add(p1).add(p2).add(p3).mult(1.0/3.0); // Amount of shrinkage double a = 1.0; try { a = Math.abs(Double.parseDouble(tfTriangleSize.getText())); } catch(NumberFormatException ex) {} // Draw triangle TrianglePoint t1 = new TrianglePoint("drawn", null); t1.setX(a*p1.getX() + (1-a)*ctr.getX()); t1.setY(a*p1.getY() + (1-a)*ctr.getY()); t1.setZ(a*p1.getZ() + (1-a)*ctr.getZ()); list.add(t1); TrianglePoint t2 = new TrianglePoint("drawn", t1); t2.setX(a*p2.getX() + (1-a)*ctr.getX()); t2.setY(a*p2.getY() + (1-a)*ctr.getY()); t2.setZ(a*p2.getZ() + (1-a)*ctr.getZ()); list.add(t2); TrianglePoint t3 = new TrianglePoint("drawn", t2); t3.setX(a*p3.getX() + (1-a)*ctr.getX()); t3.setY(a*p3.getY() + (1-a)*ctr.getY()); t3.setZ(a*p3.getZ() + (1-a)*ctr.getZ()); list.add(t3); triang1 = triang2 = triang3 = null; Kinemage kin = kMain.getKinemage(); if(kin == null) return; } } //}}} //{{{ doPunch, excisePoint //############################################################################## protected void doPunch(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = (KList) p.getParent(); if(list == null) return; ListChildrenUndo step = new ListChildrenUndo(list); undoStack.addLast(new SoftReference(step)); excisePoint(p, step); Kinemage kin = kMain.getKinemage(); if(kin == null) return; } // Used by Punch and Auger -- not undoable in & of itself // Step can be null, or it will be used to save the modified point. private void excisePoint(KPoint p, ListChildrenUndo step) { if(p == null) return; KList list = (KList) p.getParent(); if(list == null) return; for(ListIterator iter = list.getChildren().listIterator(); iter.hasNext(); ) { KPoint q = (KPoint) iter.next(); if(q == p) { iter.remove(); if(iter.hasNext()) { q = (KPoint) iter.next(); if(step != null) step.savePoint(q); q.setPrev(null); } break; }//if we found the point }//for all points in the list } //}}} //{{{ doPrune //############################################################################## protected void doPrune(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; KList list = (KList) p.getParent(); if(list == null) return; ListChildrenUndo step = new ListChildrenUndo(list); undoStack.addLast(new SoftReference(step)); for(ListIterator iter = list.getChildren().listIterator(); iter.hasNext(); ) { KPoint q = (KPoint) iter.next(); if(q == p) { iter.remove(); if(q.getPrev() != null) { while(iter.hasPrevious()) // remove preceding points { q = (KPoint) iter.previous(); iter.remove(); if(q.getPrev() == null) break; } } while(iter.hasNext()) // remove following points { q = (KPoint) iter.next(); if(q.getPrev() == null) break; iter.remove(); } break; } } Kinemage kin = kMain.getKinemage(); if(kin == null) return; } //}}} //{{{ doAuger //############################################################################## protected void doAuger(int x, int y, KPoint p, MouseEvent ev) { Engine engine = kCanvas.getEngine(); Collection points = engine.pickAll2D(x, y, services.doSuperpick.isSelected(), AUGER_RADIUS); // Augering can't be undone because so many // points following those removed might be modified. // Remove all the points for(Iterator iter = points.iterator(); iter.hasNext(); ) { p = (KPoint) iter.next(); excisePoint(p, null); } Kinemage kin = kMain.getKinemage(); if(kin == null) return; } //}}} //{{{ doColorAuger //############################################################################## protected void doColorAuger(int x, int y, KPoint p, MouseEvent ev) { Engine engine = kCanvas.getEngine(); Collection points = engine.pickAll2D(x, y, services.doSuperpick.isSelected(), AUGER_RADIUS); // Augering can't be undone because so many // points following those removed might be modified. // points matching the selected color (killColor) will be removed KPaint killColor = (KPaint) cmAugerPalette.getSelectedItem(); for(Iterator iter = points.iterator(); iter.hasNext(); ) { p = (KPoint) iter.next(); // if a point hasn't been specifically painted, its color must be retrieved from its parent if (p.getColor() == null) { KList plist = (KList) p.getParent(); if (plist.getColor().equals(killColor)) //matches parent color { excisePoint(p, null); } } else if(p.getColor().equals(killColor)) //matches point color { excisePoint(p, null); } } Kinemage kin = kMain.getKinemage(); if(kin == null) return; } //}}} //{{{ doSphereCrop //############################################################################## protected void doSphereCrop(int x, int y, KPoint p, MouseEvent ev) { if(p == null) return; Kinemage kin = p.getKinemage(); if(kin == null) return; double r = 10; try { r = Double.parseDouble(tfCropRadius.getText()); } catch(NumberFormatException ex) {} double r2 = r*r; // Cropping can't be undone because so many // points following those removed might be modified. // Find all the points THAT ARE CURRENTLY VISIBLE // and outside the cropping sphere. // Have to do this in two steps so we don't get a // ConcurrentModificationException from KIterator. Engine engine = kCanvas.getEngine(); Set toKeep = new CheapSet(new IdentityHashFunction()); toKeep.addAll( engine.pickAll3D(p.getX(), p.getY(), p.getZ(), true, r) ); Collection toRemove = new ArrayList(); for(KPoint q : KIterator.visiblePoints(kin)) if(!toKeep.contains(q)) toRemove.add(q); for(KPoint q : toRemove) excisePoint(q, null); } //}}} //{{{ doDeleteInvis //############################################################################## protected void doDeleteInvis(int x, int y, KPoint p, MouseEvent ev) { // added by DAK 090430 if(p == null) return; Kinemage kin = p.getKinemage(); if(kin == null) return; // Cropping can't be undone because so many // points following those removed might be modified. // Find all the points THAT ARE CURRENTLY *IN*VISIBLE. // Have to do this in two steps so we don't get a // ConcurrentModificationException from KIterator. Engine engine = kCanvas.getEngine(); Set toKeep = new CheapSet(new IdentityHashFunction()); for(KPoint q : KIterator.visiblePoints(kin)) toKeep.add(q); Collection toRemove = new ArrayList(); for(KPoint q : KIterator.allPoints(kin)) if(!toKeep.contains(q)) toRemove.add(q); for(KPoint q : toRemove) excisePoint(q, null); } //}}} //{{{ doTurnOff //############################################################################## protected void doTurnOff(int x, int y, KPoint p, MouseEvent ev) { // added by DAK 090919 if(p == null) return; Kinemage kin = p.getKinemage(); if(kin == null) return; KList list = (KList)p.getParent(); if(list == null) return; if(cbTurnOffList.isSelected()) list.setOn(false); KGroup subgroup = (KGroup)list.getParent(); if(subgroup == null) return; if(cbTurnOffSubgroup.isSelected()) subgroup.setOn(false); KGroup group = (KGroup)subgroup.getParent(); if(group == null) return; if(cbTurnOffGroup.isSelected()) group.setOn(false); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ xx_drag() functions //################################################################################################## /** Override this function for (left-button) drags */ public void drag(int dx, int dy, MouseEvent ev) { KView v = kMain.getView(); if(rbMovePoint.isSelected() && v != null && allPoints != null) { Dimension dim = kCanvas.getCanvasSize(); for(int k = 0; k < allPoints.length; k++) { float[] offset = v.translateRotated(dx, -dy, 0, Math.min(dim.width, dim.height)); // Check to make sure this isn't just a SpherePoint disk: if(allPoints[k] instanceof SpherePoint.DiskProxyPoint) continue; allPoints[k].setX(allPoints[k].getX() + offset[0]); allPoints[k].setY(allPoints[k].getY() + offset[1]); allPoints[k].setZ(allPoints[k].getZ() + offset[2]); } Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); kCanvas.repaint(); } else super.drag(dx, dy, ev); } /** Override this function for middle-button/control drags */ public void c_drag(int dx, int dy, MouseEvent ev) { KView v = kMain.getView(); if(rbMovePoint.isSelected() && v != null && draggedPoint != null) { Dimension dim = kCanvas.getCanvasSize(); float[] offset = v.translateRotated(dx, -dy, 0, Math.min(dim.width, dim.height)); draggedPoint.setX(draggedPoint.getX() + offset[0]); draggedPoint.setY(draggedPoint.getY() + offset[1]); draggedPoint.setZ(draggedPoint.getZ() + offset[2]); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); kCanvas.repaint(); } else super.c_drag(dx, dy, ev); } //}}} //{{{ xx_wheel() functions //################################################################################################## /** Override this function for mouse wheel motion */ public void wheel(int rotation, MouseEvent ev) { KView v = kMain.getView(); if(rbMovePoint.isSelected() && v != null && draggedPoint != null) { Dimension dim = kCanvas.getCanvasSize(); for(int k = 0; k < allPoints.length; k++) { float[] offset = v.translateRotated(0, 0, 6*rotation, Math.min(dim.width, dim.height)); allPoints[k].setX(allPoints[k].getX() + offset[0]); allPoints[k].setY(allPoints[k].getY() + offset[1]); allPoints[k].setZ(allPoints[k].getZ() + offset[2]); } Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); kCanvas.repaint(); } else super.wheel(rotation, ev); } /** Override this function for mouse wheel motion with control down */ public void c_wheel(int rotation, MouseEvent ev) { KView v = kMain.getView(); if(rbMovePoint.isSelected() && v != null && draggedPoint != null) { Dimension dim = kCanvas.getCanvasSize(); float[] offset = v.translateRotated(0, 0, 6*rotation, Math.min(dim.width, dim.height)); draggedPoint.setX(draggedPoint.getX() + offset[0]); draggedPoint.setY(draggedPoint.getY() + offset[1]); draggedPoint.setZ(draggedPoint.getZ() + offset[2]); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); kCanvas.repaint(); } else super.c_wheel(rotation, ev); } //}}} //{{{ mousePressed, mouseReleased //################################################################################################## public void mousePressed(MouseEvent ev) { super.mousePressed(ev); if(kMain.getKinemage() != null) draggedPoint = kCanvas.getEngine().pickPoint(ev.getX(), ev.getY(), services.doSuperpick.isSelected()); else draggedPoint = null; // Otherwise, we just create a nonsensical warning message about stereo picking if(draggedPoint == null) allPoints = null; else if(draggedPoint instanceof LabelPoint) { // Labels should never drag other points with them! allPoints = new KPoint[] {draggedPoint}; } else { // The 0.5 (pixels) allows for a little roundoff error, // both in the kinemage itself and our floating point numbers. Engine engine = kCanvas.getEngine(); Collection all = engine.pickAll3D( draggedPoint.getX(), draggedPoint.getY(), draggedPoint.getZ(), services.doSuperpick.isSelected(), engine.zoom3D * 0.5); allPoints = (KPoint[])all.toArray( new KPoint[all.size()] ); } if(allPoints != null && rbMovePoint.isSelected()) undoStack.addLast(new SoftReference(new PointCoordsUndo(allPoints))); } public void mouseReleased(MouseEvent ev) { // Let's keep the point around so we can Z-translate too //draggedPoint = null; } //}}} //{{{ mouseMoved/Dragged/Exited, needAugerCircle, overpaintCanvas //################################################################################################## public void mouseMoved(MouseEvent ev) { super.mouseMoved(ev); lastAugerX = ev.getX(); lastAugerY = ev.getY(); if(needAugerCircle()) // trigger a redraw kCanvas.repaint(); } public void mouseDragged(MouseEvent ev) { super.mouseDragged(ev); lastAugerX = ev.getX(); lastAugerY = ev.getY(); // repaint will occur anyway } public void mouseExited(MouseEvent ev) { super.mouseExited(ev); // Stop painting the marker at all when mouse leaves drawing area lastAugerX = lastAugerY = -1; if(needAugerCircle()) // trigger a redraw kCanvas.repaint(); } /** Do we need to see the circle that marks area of effect for Auger and similar tools? */ boolean needAugerCircle() { return rbAuger.isSelected() || rbColorAuger.isSelected() || (rbPaintPoints.isSelected() && cmPaintMode.getSelectedItem() != PAINT_POINT && cmPaintMode.getSelectedItem() != PAINT_POLY); } /** * Called by KinCanvas after all kinemage painting is complete, * this gives the tools a chance to write additional info * (e.g., point IDs) to the graphics area. *

We use it as an indication that the canvas has just been * redrawn, so we may need to paint the area of effect for Auger. * @param painter the Painter that can paint on the current canvas */ public void overpaintCanvas(Painter painter) { if(lastAugerX < 0 || lastAugerY < 0) return; if(needAugerCircle()) { double diam = AUGER_RADIUS * 2; painter.drawOval(new Color(0xcc0000), lastAugerX, lastAugerY, 0, diam, diam); } } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return ui; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return "#drawnew-tool"; } public String toString() { return "Edit / draw / delete"; } //}}} }//class king-2.21.120420/king/src/king/tool/export/0000755000000000000000000000000011744310054016557 5ustar rootrootking-2.21.120420/king/src/king/tool/export/PdfExport.java0000644000000000000000000001675411531212650021347 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.export; import king.*; import king.core.Engine; import java.awt.*; import java.awt.image.*; import java.awt.event.*; import java.beans.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.util.SoftLog; import com.lowagie.text.*; import com.lowagie.text.pdf.*; //}}} /** * PdfExport uses the iText library to export the current graphics * as a (vector) PDF file. The exact image is preserved, including * the font on this platform and the rendering quality -- fully WYSIWYG. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Mon Sep 29 09:33:14 EDT 2003 */ public class PdfExport extends Plugin implements PropertyChangeListener, Runnable { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## JFileChooser chooser; SuffixFileFilter pdfFilter, pdftFilter; //}}} //{{{ Constructor(s) //############################################################################## public PdfExport(ToolBox tb) { super(tb); buildChooser(); } //}}} //{{{ buildChooser //############################################################################## private void buildChooser() { pdfFilter = new SuffixFileFilter("Portable Document Format (PDF)"); pdfFilter.addSuffix(".pdf"); pdftFilter = new SuffixFileFilter("PDF with transparent background"); pdftFilter.addSuffix(".pdf"); String currdir = System.getProperty("user.dir"); chooser = new JFileChooser(); chooser.addChoosableFileFilter(pdfFilter); chooser.addChoosableFileFilter(pdftFilter); chooser.setFileFilter(pdfFilter); if(currdir != null) chooser.setCurrentDirectory(new File(currdir)); chooser.addPropertyChangeListener(this); } //}}} //{{{ exportPDF //############################################################################## static public void exportPDF(KinCanvas kCanvas, File outfile) throws IOException, DocumentException { exportPDF(kCanvas, false, outfile); } static public void exportPDF(KinCanvas kCanvas, boolean transparentBackground, File outfile) throws IOException, DocumentException { Dimension dim = kCanvas.getCanvasSize(); Document doc = new Document(PageSize.LETTER, 72, 72, 72, 72); // 1" margins PdfWriter pdf = PdfWriter.getInstance(doc, new FileOutputStream(outfile)); doc.addCreator("KiNG by Ian W. Davis"); // add header and footer now, before opening document doc.open(); // Drawing code goes here. We use a template to simplify scaling/placement. PdfContentByte content = pdf.getDirectContent(); PdfTemplate template = content.createTemplate((float)dim.getWidth(), (float)dim.getHeight()); Graphics2D g2 = template.createGraphics((float)dim.getWidth(), (float)dim.getHeight()); if(transparentBackground) kCanvas.getEngine().setTransparentBackground(); kCanvas.paintCanvas(g2, dim, KinCanvas.QUALITY_BEST); g2.dispose(); // Post-multiplied transformation matrix: // [ x ] [ a b 0 ] [ x' ] [ x'/q ] // [ y ] * [ c d 0 ] = [ y' ] = [ y'/q ] // [ 1 ] [ e f 1 ] [ q ] [ 1 ] // Top, left, botttom, and right already include margins. // Coordinate system has bottom left corner as (0, 0) double w = doc.right() - doc.left(); double h = doc.top() - doc.bottom(); float scale = (float)Math.min(w/dim.getWidth(), h/dim.getHeight()); // Place image at top left corner of page, respecting margins content.addTemplate(template, scale, 0f, 0f, scale, doc.left(), (float)(doc.top() - scale*dim.getHeight())); // Closing the document writes everything to file doc.close(); } //}}} //{{{ askExport //############################################################################## public void askExport() { // Auto-generate a file name propertyChange(null); // Show the Save dialog String currdir = System.getProperty("user.dir"); if(currdir != null) chooser.setCurrentDirectory(new File(currdir)); if(JFileChooser.APPROVE_OPTION == chooser.showSaveDialog(kMain.getTopWindow())) { File f = chooser.getSelectedFile(); if(!pdfFilter.accept(f) && JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file has the wrong extension. Append '.pdf' to the name?", "Fix extension?", JOptionPane.YES_NO_OPTION)) { f = new File(f+".pdf"); } if(!f.exists() || JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION)) { try { exportPDF(kMain.getCanvas(), pdftFilter.equals(chooser.getFileFilter()), f); } catch(Exception ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } System.setProperty("user.dir", f.getAbsolutePath()); } } } //}}} //{{{ propertyChange, run //################################################################################################## public void propertyChange(PropertyChangeEvent ev) { if(ev == null || JFileChooser.FILE_FILTER_CHANGED_PROPERTY.equals(ev.getPropertyName()) || JFileChooser.DIRECTORY_CHANGED_PROPERTY.equals(ev.getPropertyName())) { // Has to be done "asynchronously" or file name will be corrupted SwingUtilities.invokeLater(this); } } public void run() { String fmt = "pdf"; // Autogenerate an output name. for(int i = 1; i < 1000; i++) { File f = new File(chooser.getCurrentDirectory(), "kingsnap"+i+"."+fmt); if(!f.exists()) { chooser.setSelectedFile(f); break; } } } //}}} //{{{ getToolsMenuItem, getHelpMenuItem, toString, onExport, isAppletSafe //################################################################################################## public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString()+"...", null, this, "onExport")); } public JMenuItem getHelpMenuItem() { return null; } public String toString() { return "PDF document"; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onExport(ActionEvent ev) { this.askExport(); } static public boolean isAppletSafe() { return false; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/tool/export/ImageExport.java0000644000000000000000000002577611571460624021676 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.export; import king.*; import king.core.Engine; import java.awt.*; import java.awt.image.*; import java.awt.event.*; import java.beans.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.imageio.*; // J2SE 1.4+ import javax.imageio.stream.*; // J2SE 1.4+ import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * ImageExport allows the current graphics to be quickly * exported as an image. The exact image is preserved, including * the font on this platform and the rendering quality -- fully WYSIWYG. * Only works in Java 1.4 or later. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Mon Sep 29 09:33:14 EDT 2003 */ public class ImageExport extends Plugin implements PropertyChangeListener, Runnable { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## JFileChooser chooser; SuffixFileFilter jpgFilter, pngFilter, pngtFilter; //}}} //{{{ Constructor(s) //############################################################################## public ImageExport(ToolBox tb) { super(tb); buildChooser(); } //}}} //{{{ buildChooser //############################################################################## private void buildChooser() { jpgFilter = new SuffixFileFilter("Joint Photographic Experts Group (JPEG)"); jpgFilter.addSuffix(".jpg"); jpgFilter.addSuffix(".jpe"); jpgFilter.addSuffix(".jpeg"); pngFilter = new SuffixFileFilter("Portable Network Graphics (PNG)"); pngFilter.addSuffix(".png"); pngtFilter = new SuffixFileFilter("PNG with transparent background"); pngtFilter.addSuffix(".png"); String currdir = System.getProperty("user.dir"); chooser = new JFileChooser(); chooser.addChoosableFileFilter(jpgFilter); chooser.addChoosableFileFilter(pngFilter); chooser.addChoosableFileFilter(pngtFilter); chooser.setAcceptAllFileFilterUsed(false); chooser.setFileFilter(jpgFilter); if(currdir != null) chooser.setCurrentDirectory(new File(currdir)); chooser.addPropertyChangeListener(this); } //}}} //{{{ exportImage //############################################################################## static public void exportImage(KinCanvas kCanvas, String format, File outfile) throws IOException { exportImage(kCanvas, format, false, 1, outfile); } static public void exportImage(KinCanvas kCanvas, String format, boolean transparentBackground, int resol, File outfile) throws IOException { Dimension dim = kCanvas.getCanvasSize(); BufferedImage img; if(format.equals("png")) img = new BufferedImage(resol*dim.width, resol*dim.height, BufferedImage.TYPE_INT_ARGB); // needed so we can get transparency in output else img = new BufferedImage(resol*dim.width, resol*dim.height, BufferedImage.TYPE_INT_BGR); // this avoids color problems with JPEG and gives smaller files (?) Graphics2D g2 = img.createGraphics(); g2.scale(resol, resol); if(transparentBackground) kCanvas.getEngine().setTransparentBackground(); kCanvas.paintCanvas(g2, dim, KinCanvas.QUALITY_BEST); /* Easy enough to do in Keynote that it's not worth including here! // Tasteful border - 1px, medium gray if(!transparentBackground) { g2.setColor(new Color(0.5f, 0.5f, 0.5f, 1.0f)); g2.setStroke(new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND)); g2.drawRect(0, 0, dim.width, dim.height); } */ // This ensures we get high-quality JPEGs if(format.equals("jpg")) writeAtHighestQuality(img, format, outfile); else ImageIO.write(img, format, outfile); } //}}} //{{{ writeAtHighestQuality //############################################################################## /** * Saves the image in the specified format with the * highest quality encoding available. * A lot of this code was borrowed from a Java Tech Tip. */ static void writeAtHighestQuality(BufferedImage img, String format, File outfile) throws IOException { ImageWriter bestWriter = null; ImageWriteParam bestWriteParam = null; float bestQual = 0; for(Iterator iter = ImageIO.getImageWritersByFormatName(format); iter.hasNext(); ) { ImageWriter iw = (ImageWriter) iter.next(); //System.err.println("New "+format+" writer ["+iw.getClass().getName()+"]:"); ImageWriteParam iwp = iw.getDefaultWriteParam(); iwp.setCompressionMode(ImageWriteParam.MODE_EXPLICIT); float best = 0; float values[] = iwp.getCompressionQualityValues(); for(int i = 0; i < values.length; i++) { //System.err.println(" "+values[i]); best = Math.max(best, values[i]); } if(best > bestQual) { iwp.setCompressionQuality(best); bestWriter = iw; bestWriteParam = iwp; bestQual = best; } } if(bestWriter == null) return; FileImageOutputStream output = new FileImageOutputStream(outfile); bestWriter.setOutput(output); IIOImage image = new IIOImage(img, null, null); bestWriter.write(null, image, bestWriteParam); // These two lines copied from javax.imageio.ImageIO.write() // in hopes of writing out complete JPEGs under Windows output.flush(); bestWriter.dispose(); output.close(); } //}}} //{{{ askExport //############################################################################## public void askExport() { // Auto-generate a file name propertyChange(null); // Show the Save dialog String currdir = System.getProperty("user.dir"); if(currdir != null) chooser.setCurrentDirectory(new File(currdir)); if(JFileChooser.APPROVE_OPTION == chooser.showSaveDialog(kMain.getTopWindow())) { String fmt = getFormat(); javax.swing.filechooser.FileFilter filter = chooser.getFileFilter(); File f = chooser.getSelectedFile(); if(!filter.accept(f) && JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file has the wrong extension. Append '."+fmt+"' to the name?", "Fix extension?", JOptionPane.YES_NO_OPTION)) { f = new File(f+"."+fmt); } if(!f.exists() || JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION)) { try { exportImage(kMain.getCanvas(), fmt, pngtFilter.equals(filter), kMain.getPrefs().getInt("imageExportMultiplier"), f); } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while saving the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } System.setProperty("user.dir", f.getAbsolutePath()); } } } //}}} //{{{ getFormat, propertyChange, run //################################################################################################## String getFormat() { String fmt; javax.swing.filechooser.FileFilter filter = chooser.getFileFilter(); if(pngFilter.equals(filter)) fmt = "png"; else if(pngtFilter.equals(filter)) fmt = "png"; else if(jpgFilter.equals(filter)) fmt = "jpg"; else fmt = "jpg"; // shouldn't happen return fmt; } public void propertyChange(PropertyChangeEvent ev) { if(ev == null || JFileChooser.FILE_FILTER_CHANGED_PROPERTY.equals(ev.getPropertyName()) || JFileChooser.DIRECTORY_CHANGED_PROPERTY.equals(ev.getPropertyName())) { // Has to be done "asynchronously" or file name will be corrupted SwingUtilities.invokeLater(this); } } public void run() { String fmt = getFormat(); // Autogenerate an output name. //String currdir = System.getProperty("user.dir"); //if(currdir != null) chooser.setCurrentDirectory(new File(currdir)); for(int i = 1; i < 1000; i++) { File f = new File(chooser.getCurrentDirectory(), "kingsnap"+i+"."+fmt); //String baseName = "kingsnap"; //String kinName = kMain.getKinemage().getName(); //if(kinName != null) baseName = kinName+"."; //File f = new File(chooser.getCurrentDirectory(), baseName+i+"."+fmt); if(!f.exists()) { chooser.setSelectedFile(f); break; } } } //}}} //{{{ diagnostics //############################################################################## /** Writes diagnostic info about javax.imageio to SoftLog.err */ static public void diagnostics() { SoftLog.err.println("Can write the following formats:"); String[] types = ImageIO.getWriterMIMETypes(); for(int i = 0; i < types.length; i++) SoftLog.err.println(" "+i+":\t"+types[i]); for(int i = 0; i < types.length; i++) { SoftLog.err.println("Writers for "+types[i]+":"); for(Iterator iter = ImageIO.getImageWritersByMIMEType(types[i]); iter.hasNext(); ) SoftLog.err.println(" "+iter.next()); } } //}}} //{{{ getToolsMenuItem, getHelpMenuItem, toString, onExport, isAppletSafe //################################################################################################## public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString()+"...", null, this, "onExport")); } public JMenuItem getHelpMenuItem() { return null; } public String toString() { return "Image file (JPG, PNG)"; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onExport(ActionEvent ev) { this.askExport(); } static public boolean isAppletSafe() { return false; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/king/src/king/tool/edmap/0000755000000000000000000000000011744310054016324 5ustar rootrootking-2.21.120420/king/src/king/tool/edmap/EDMapPlugin.java0000644000000000000000000004352011571452340021303 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.edmap; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.beans.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.isosurface.*; import driftwood.util.*; //}}} /** * EDMapPlugin provides file/URL opening services * to launch the EDMapWindows that control individual maps. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Tue Apr 1 13:45:27 EST 2003 */ public class EDMapPlugin extends Plugin implements ListSelectionListener, KMessage.Subscriber { //{{{ Constants static final String MAPTYPE_O = "O map (DSN6/Brix)"; static final String MAPTYPE_XPLOR = "XPLOR map (ASCII format)"; static final String MAPTYPE_CCP4 = "CCP4 map (type 2)"; //}}} //{{{ CLASS: MapFileOpen //############################################################################## private class MapFileOpen implements FileDropHandler.Listener { public String toString() { return "Open as electron density map in KiNG"; } public boolean canHandleDroppedFile(File file) { return mapFilter.accept(file); } public void handleDroppedFile(File f) { try { openMapFile(f); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ Variable definitions //################################################################################################## JFileChooser filechooser = null; JDialog urlchooser = null; JList urlList = null; JTextField urlField = null; boolean urlChooserOK = false; SuffixFileFilter omapFilter, xmapFilter, ccp4Filter, mapFilter; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public EDMapPlugin(ToolBox tb) { super(tb); makeFileFilters(); kMain.subscribe(this); kMain.getFileDropHandler().addFileDropListener(new MapFileOpen()); } //}}} //{{{ deliverMessage //################################################################################################## public void deliverMessage(KMessage msg) { if(msg.testProg(KMessage.KING_STARTUP)) { //System.err.println("Might try to load maps now"); kMain.unsubscribe(this); JApplet applet = kMain.getApplet(); if(applet == null) return; KinCanvas canvas = kMain.getCanvas(); if(canvas == null) return; ToolBox toolbox = canvas.getToolBox(); if(toolbox == null) return; // Try multiple names for this parameter boolean isOmap = false; String mapsrc = applet.getParameter("xmap"); if(mapsrc == null) { mapsrc = applet.getParameter("omap"); isOmap = true; } if(mapsrc == null) return; try { URL mapURL = new URL(applet.getDocumentBase(), mapsrc); CrystalVertexSource map; if(isOmap) { map = new OMapVertexSource(mapURL.openStream()); } else { map = new XplorVertexSource(mapURL.openStream()); } new EDMapWindow(toolbox, map, mapURL.getFile(), false); } catch(MalformedURLException ex) { SoftLog.err.println(" xmap/omap specified an unresolvable URL."); } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong map format was chosen, or map is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ makeFileFilters //################################################################################################## void makeFileFilters() { omapFilter = new SuffixFileFilter("O maps (DSN6/Brix)"); omapFilter.addSuffix(".brix"); omapFilter.addSuffix(".brix.gz"); omapFilter.addSuffix(".dsn6"); omapFilter.addSuffix(".dsn6.gz"); omapFilter.addSuffix(".dn6"); omapFilter.addSuffix(".dn6.gz"); omapFilter.addSuffix(".omap"); omapFilter.addSuffix(".omap.gz"); xmapFilter = new SuffixFileFilter("XPLOR maps (ASCII format)"); xmapFilter.addSuffix(".xmap"); xmapFilter.addSuffix(".xmap.gz"); xmapFilter.addSuffix(".xplor"); xmapFilter.addSuffix(".xplor.gz"); ccp4Filter = new SuffixFileFilter("CCP4 maps (type 2)"); ccp4Filter.addSuffix(".ccp4"); ccp4Filter.addSuffix(".ccp4.gz"); ccp4Filter.addSuffix(".mbk"); ccp4Filter.addSuffix(".mbk.gz"); ccp4Filter.addSuffix(".map"); ccp4Filter.addSuffix(".map.gz"); mapFilter = new SuffixFileFilter("All electron density maps"); mapFilter.addSuffix(".ccp4"); mapFilter.addSuffix(".ccp4.gz"); mapFilter.addSuffix(".mbk"); mapFilter.addSuffix(".mbk.gz"); mapFilter.addSuffix(".xmap"); mapFilter.addSuffix(".xmap.gz"); mapFilter.addSuffix(".xplor"); mapFilter.addSuffix(".xplor.gz"); mapFilter.addSuffix(".brix"); mapFilter.addSuffix(".brix.gz"); mapFilter.addSuffix(".dsn6"); mapFilter.addSuffix(".dsn6.gz"); mapFilter.addSuffix(".dn6"); mapFilter.addSuffix(".dn6.gz"); mapFilter.addSuffix(".omap"); mapFilter.addSuffix(".omap.gz"); mapFilter.addSuffix(".map"); mapFilter.addSuffix(".map.gz"); } //}}} //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); filechooser.addChoosableFileFilter(mapFilter); filechooser.addChoosableFileFilter(omapFilter); filechooser.addChoosableFileFilter(xmapFilter); filechooser.addChoosableFileFilter(ccp4Filter); filechooser.setFileFilter(mapFilter); } //}}} //{{{ makeURLChooser //################################################################################################## void makeURLChooser() { // Make actual URL chooser urlList = new FatJList(150, 12); JApplet applet = kMain.getApplet(); if(applet != null) { String maps = applet.getParameter("edmapList"); if(maps != null) { String[] maplist = Strings.explode(maps, ' '); urlList.setListData(maplist); } } urlList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); urlList.addListSelectionListener(this); JScrollPane listScroll = new JScrollPane(urlList); // Make an (editable) URL line urlField = new JTextField(20); // Make the command buttons JButton btnOK = new JButton(new ReflectiveAction("OK", null, this, "onUrlOk")); JButton btnCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onUrlCancel")); // Put it all together in a content pane TablePane2 cp = new TablePane2(); cp.center().middle().insets(6).memorize(); cp.addCell(listScroll,2,1); cp.newRow(); cp.weights(0,1).addCell(new JLabel("URL:")).hfill(true).addCell(urlField); cp.newRow().startSubtable(2,1).center().insets(1,4,1,4).memorize(); cp.addCell(btnOK).addCell(btnCancel).endSubtable(); urlchooser = new JDialog(kMain.getTopWindow(), "ED Map URLs", true); urlchooser.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); urlchooser.setContentPane(cp); urlchooser.pack(); urlchooser.setLocationRelativeTo(kMain.getTopWindow()); } //}}} //{{{ loadFileFromCmdline /** Plugins that can work on files from the king cmdline should overwrite this function */ public void loadFileFromCmdline(ArrayList files, ArrayList args) { for (File f : files) { try { if (mapFilter.accept(f)) { // needed to filter files that could get passed to this which aren't maps if (kMain.getKinemage() != null) { if(ccp4Filter.accept(f)) { openMapFile(f, MAPTYPE_CCP4, args.contains("-phenix")); //auto opens ccp4 maps, for more seemless integration with phenix } else { openMapFile(f); } } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), "In order to run KiNG with a map from cmdline,\n you must also give a kin or PDB file!", "Sorry!", JOptionPane.ERROR_MESSAGE); } } } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ getToolsMenuItem, toString //################################################################################################## /** * Creates a new JMenuItem to be displayed in the Tools menu, * which will allow the user to access function(s) associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several functionalities under it. * * The Plugin may return null to indicate that it has no * associated menu item. */ public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onOpenMap")); } public String toString() { return "Electron density maps"; } //}}} //{{{ getHelpMenuItem, getHelpAnchor //################################################################################################## /** * Creates a new JMenuItem to be displayed in the Help menu, * which will allow the user to access help information associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several items under it. However, * Plugins are encouraged to consolidate all documentation * into one location. The king.HTMLHelp class may be of use here. * * The Plugin may return null to indicate that it has no * associated menu item. */ public JMenuItem getHelpMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onHelp")); } public String getHelpAnchor() { return "#edmap-plugin"; } //}}} //{{{ onOpenMap, askMapFormat //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onOpenMap(ActionEvent ev) { if(kMain.getKinemage() == null) return; try { if(kMain.getApplet() != null) openMapURL(); else openMapFile(); } catch(IOException ex) // includes MalformedURLException { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong map format was chosen, or map is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } String askMapFormat(String f) // filename or URL { Object[] choices = {MAPTYPE_O, MAPTYPE_XPLOR, MAPTYPE_CCP4}; String defaultChoice = MAPTYPE_O; if(omapFilter.accept(f)) defaultChoice = MAPTYPE_O; else if(xmapFilter.accept(f)) defaultChoice = MAPTYPE_XPLOR; else if(ccp4Filter.accept(f)) defaultChoice = MAPTYPE_CCP4; String choice = (String)JOptionPane.showInputDialog(kMain.getTopWindow(), "What format is this map in?", "Choose format", JOptionPane.PLAIN_MESSAGE, null, choices, defaultChoice); return choice; } //}}} //{{{ openMapFile //################################################################################################## void openMapFile() throws IOException { // Create file chooser on demand if(filechooser == null) makeFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { File f = filechooser.getSelectedFile(); openMapFile(f); System.setProperty("user.dir", f.getAbsolutePath()); } } void openMapFile(File f) throws IOException { if(f != null && f.exists()) { openMapFile(f, askMapFormat(f.getName()), false); } } void openMapFile(File f, String choice, boolean phenixColors) throws IOException { if(f != null && f.exists()) { //String choice = askMapFormat(f.getName()); moved this to separate function to allow for auto opening of maps // from cmdline; for more seemless phenix integration CrystalVertexSource map; if(MAPTYPE_O.equals(choice)) map = new OMapVertexSource(new FileInputStream(f)); else if(MAPTYPE_XPLOR.equals(choice)) map = new XplorVertexSource(new FileInputStream(f)); else if(MAPTYPE_CCP4.equals(choice)) map = new Ccp4VertexSource(new FileInputStream(f)); else throw new IllegalArgumentException("Map type not specified"); EDMapWindow win = new EDMapWindow(parent, map, f.getName(), phenixColors); kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_CONTENTS)); } } //}}} //{{{ openMapURL, onUrlCancel, onUrlOk //################################################################################################## void openMapURL() throws MalformedURLException, IOException { // Create chooser on demand if(urlchooser == null) makeURLChooser(); //urlchooser.pack(); -- gets too wide when urlField has a long URL in it urlchooser.setVisible(true); // execution halts until dialog is closed... if(urlChooserOK) { CrystalVertexSource map; URL mapURL = new URL(urlField.getText()); InputStream is = new BufferedInputStream(mapURL.openStream()); String choice = askMapFormat(urlField.getText()); if(MAPTYPE_O.equals(choice)) map = new OMapVertexSource(is); else if(MAPTYPE_XPLOR.equals(choice)) map = new XplorVertexSource(is); else if(MAPTYPE_CCP4.equals(choice)) map = new Ccp4VertexSource(is); else throw new IllegalArgumentException("Map type not specified"); EDMapWindow win = new EDMapWindow(parent, map, mapURL.getFile(), false); kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_CONTENTS)); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUrlCancel(ActionEvent ev) { urlChooserOK = false; urlchooser.setVisible(false); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUrlOk(ActionEvent ev) { urlChooserOK = true; urlchooser.setVisible(false); } //}}} //{{{ valueChanged //################################################################################################## /* Gets called when a new URL is picked from the list */ public void valueChanged(ListSelectionEvent ev) { Object o = urlList.getSelectedValue(); if(o == null) {} else { String name = o.toString(); urlField.setText("http://"+name); JApplet applet = kMain.getApplet(); if(applet != null) { try { URL mapURL = new URL(applet.getDocumentBase(), applet.getParameter("edmapBase")+"/"+name); urlField.setText(mapURL.toString()); } catch(MalformedURLException ex) { SoftLog.err.println(applet.getDocumentBase()); SoftLog.err.println(applet.getParameter("edmapBase")); SoftLog.err.println(name); ex.printStackTrace(SoftLog.err); } } } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/tool/edmap/EDMapPlotter.java0000644000000000000000000001305611531212650021471 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.edmap; import king.*; import king.core.*; import king.points.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.isosurface.*; //}}} /** * EDMapPlotter creates an isosurface * by instantiating VectorPoints directly. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Tue Mar 4 14:35:25 EST 2003 */ public class EDMapPlotter implements EdgePlotter { //{{{ Constants DecimalFormat df2 = driftwood.util.Strings.usDecimalFormat("0.##"); //}}} //{{{ Variable definitions //################################################################################################## KList list; VectorPoint prevV; TrianglePoint prevT; String level; Object mode; boolean unpickable; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @param mode is one of the MarchingCubes.MODE_xxx constants. */ public EDMapPlotter(boolean pickable, Object mode) { list = null; prevV = null; prevT = null; level = null; unpickable = !pickable; if(mode != MarchingCubes.MODE_MESH && mode != MarchingCubes.MODE_TRIANGLE) throw new IllegalArgumentException("Illegal MarchingCubes MODE constant: "+mode); this.mode = mode; } //}}} //{{{ startIsosurface //################################################################################################## /** * Called before the isosurface generator starts plotting anything. * Gives this plotter a chance to initialize any needed data structures, streams, etc. * @param lvl the level for which an isosurface will be generated */ public void startIsosurface(double lvl) { level = df2.format(lvl); list = new KList((mode == MarchingCubes.MODE_MESH ? KList.VECTOR : KList.TRIANGLE)); list.setName("ED map @ "+level); list.setWidth(1); if(mode == MarchingCubes.MODE_TRIANGLE) list.setAlpha((int)(0.25 * 255)); } //}}} //{{{ startCell //################################################################################################## /** * Called before the isosurface generator starts each cell. * @param i the minimum x index of the current cell * @param j the minimum y index of the current cell * @param k the minimum z index of the current cell */ public void startCell(int i, int j, int k) { prevV = null; prevT = null; } //}}} //{{{ plotEdge //################################################################################################## /** * Called for each edge in the isosurface mesh. * @param x the x coordinate of the current point * @param y the y coordinate of the current point * @param z the z coordinate of the current point * @param lineto if true, a line should be drawn from the last point to this one. * if false, the pen should move to this point without drawing. */ public void plotEdge(double x, double y, double z, boolean lineto) { KPoint p; if(mode == MarchingCubes.MODE_MESH) { if(lineto) p = new VectorPoint(level, prevV); else p = new VectorPoint(level, null); prevV = (VectorPoint)p; } else//mode == MarchingCubes.MODE_TRIANGLE { if(lineto) p = new TrianglePoint(level, prevT); else p = new TrianglePoint(level, null); prevT = (TrianglePoint)p; } p.setX(x); p.setY(y); p.setZ(z); p.setUnpickable(unpickable); list.add(p); } //}}} //{{{ endCell //################################################################################################## /** * Called after the isosurface generator finishes each cell. * @param i the minimum x index of the current cell * @param j the minimum y index of the current cell * @param k the minimum z index of the current cell */ public void endCell(int i, int j, int k) { } //}}} //{{{ endIsosurface //################################################################################################## /** * Called after the isosurface generator finishes plotting everything. * Gives this plotter a chance to release memory, close streams, etc. * @param level the level for which an isosurface will be generated */ public void endIsosurface(double level) { } //}}} //{{{ getList, freeList //################################################################################################## /** Releases the last surface generated */ public void freeList() { list = null; } /** Retrieves the last surface generated (could be null)*/ public KList getList() { return list; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/tool/edmap/EDMapWindow.java0000644000000000000000000004754611571452340021330 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.edmap; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; import java.util.regex.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.isosurface.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * EDMapWindow has controls for one * electron density map, contoured at two levels. * * EDMapWindow attempts to decipher what kind of map is being opened * from the file name and set the preset (sigma/colors) appropriately. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Mar 5 09:00:11 EST 2003 */ public class EDMapWindow implements ChangeListener, ActionListener, Transformable { //{{{ Constants DecimalFormat df1 = new DecimalFormat("0.0"); static final String MAP_2FOFC = "2Fo-Fc"; static final String MAP_FOFC = "Fo-Fc"; static final String MAP_ANOMALOUS = "anomalous"; //}}} //{{{ Variable definitions //################################################################################################## protected KingMain kMain; protected KinCanvas kCanvas; ToolBox parent; CrystalVertexSource map; MarchingCubes mc1, mc2; EDMapPlotter plotter1, plotter2; String title; protected Window dialog; JLabel typeLabel; String mapType; JSlider extent, slider1, slider2; JCheckBox label1, label2; JComboBox color1, color2; JCheckBox useTriangles, useLowRes; JButton discard, export; boolean phenixColors = false; float ctrX, ctrY, ctrZ; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public EDMapWindow(ToolBox parent, CrystalVertexSource map, String title, boolean phenixColors) { this.parent = parent; kMain = parent.kMain; kCanvas = parent.kCanvas; this.phenixColors = phenixColors; parent.transformables.add(this); this.map = map; this.title = title; ctrX = ctrY = ctrZ = Float.NaN; // Plotters need to be non-null for signalTransform() // These are never used though; overwritten on first updateMesh() Object mode = MarchingCubes.MODE_TRIANGLE; plotter1 = new EDMapPlotter(false, mode); plotter2 = new EDMapPlotter(false, mode); //mc1 = new MarchingCubes(map, map, plotter1, mode); //mc2 = new MarchingCubes(map, map, plotter2, mode); mapType = parseType(title); //try to figure out what kind of map is being opened Window lastEdMapWindow = null; for(Window win : kMain.getTopWindow().getOwnedWindows()) { // for tiering multiple edens windows: determine which is the most recently opened // EDMap window and store it if (win instanceof Dialog) { Dialog dia = (Dialog) win; //System.out.println(fra.getTitle()); if ((dia.getTitle()!=null)&&(dia.getTitle().endsWith("EDMap"))) { lastEdMapWindow = dia; } } if (win instanceof Frame) { Frame fra = (Frame) win; //System.out.println(fra.getTitle()); if ((fra.getTitle()!=null)&&(fra.getTitle().endsWith("EDMap"))) { lastEdMapWindow = fra; } } } buildGUI(); setType(mapType); //set preset color //if (lastEdMapWindow != null) { // System.out.println(((Dialog)lastEdMapWindow).getTitle()); //} dialog.pack(); Container w = kMain.getContentContainer(); if((w != null)&&(lastEdMapWindow == null)) { Point p = w.getLocation(); Dimension dimDlg = dialog.getSize(); Dimension dimWin = w.getSize(); p.x += dimWin.width - (dimDlg.width / 2) ; p.y += (dimWin.height - dimDlg.height) / 2; dialog.setLocation(p); } else { //for tiering windows for multiple electron density maps //System.out.println("Setting "+title+" relative to "+((Dialog)lastEdMapWindow).getTitle()); Point p = lastEdMapWindow.getLocation(); p.x += 50; p.y += 50; dialog.setLocation(p); } dialog.setVisible(true); } //}}} //{{{ parseTitle /*** * Attempt to parse out the type of map from the file name to set appropriate presets. */ public String parseType(String title) { Pattern twoFoFcRegex = Pattern.compile("2[pm]?[Ff]o(\\-)?[qD]?[Ff]c[^.]*(fill)?"); Pattern oneFoFcRegex = Pattern.compile("[pm]?[Ff]o(\\-)?[qD]?[Ff]c[^.]*(fill)?"); Matcher twoMatcher = twoFoFcRegex.matcher(title); Matcher oneMatcher = oneFoFcRegex.matcher(title); if (twoMatcher.find()) { this.title = twoMatcher.group(); return MAP_2FOFC; } else if (oneMatcher.find()) { this.title = oneMatcher.group(); return MAP_FOFC; } else if (title.matches(".*ANOM\\..*")) { this.title = "Anomalous"; return MAP_ANOMALOUS; } return ""; } //}}} //{{{ buildGUI //################################################################################################## void buildGUI() { typeLabel = new JLabel("Set to: "+mapType); label1 = new JCheckBox("1.2 sigma", true); label2 = new JCheckBox("3.0 sigma", false); color1 = new JComboBox(kMain.getKinemage().getAllPaintMap().values().toArray()); color1.setSelectedItem(KPalette.gray); color2 = new JComboBox(kMain.getKinemage().getAllPaintMap().values().toArray()); color2.setSelectedItem(KPalette.purple); extent = new JSlider(0, 30, 15); extent.setMajorTickSpacing(10); extent.setMinorTickSpacing(2); extent.setPaintTicks(true); //extent.setSnapToTicks(true); -- this seems to be buggy/weird extent.setPaintLabels(true); slider1 = new JSlider(-80, 80, 12); slider1.setMajorTickSpacing(10); slider1.setPaintTicks(true); //slider1.setSnapToTicks(true); -- this seems to be buggy/weird slider1.setPaintLabels(false); slider2 = new JSlider(-80, 80, 30); slider2.setMajorTickSpacing(10); slider2.setPaintTicks(true); //slider2.setSnapToTicks(true); -- this seems to be buggy/weird slider2.setPaintLabels(false); useTriangles = new JCheckBox(new ReflectiveAction("Translucent surface", null, this, "onTriangles")); useTriangles.setToolTipText("Enables a translucent triangle-mesh surface; use with Best rendering quality."); useLowRes = new JCheckBox(new ReflectiveAction("Coarser mesh", null, this, "onCoarseMesh")); discard = new JButton(new ReflectiveAction("Discard this map", null, this, "onMapDiscard")); export = new JButton(new ReflectiveAction("Export to kinemage", null, this, "onMapExport")); label1.addActionListener(this); label2.addActionListener(this); color1.addActionListener(this); color2.addActionListener(this); extent.addChangeListener(this); slider1.addChangeListener(this); slider2.addChangeListener(this); TablePane pane = new TablePane(); if (!mapType.equals("")) { pane.add(typeLabel); pane.newRow(); pane.save().hfill(true).addCell(new JSeparator(),2,1).restore(); } pane.newRow(); pane.save().hfill(true).addCell(extent, 2, 1).restore(); pane.newRow(); pane.add(pane.strut(0,8)); pane.newRow(); pane.add(label1); pane.add(color1); pane.newRow(); pane.save().hfill(true).addCell(slider1, 2, 1).restore(); pane.newRow(); pane.add(pane.strut(0,4)); pane.newRow(); pane.add(label2); pane.add(color2); pane.newRow(); pane.save().hfill(true).addCell(slider2, 2, 1).restore(); pane.newRow(); pane.add(pane.strut(0,4)); pane.newRow(); pane.add(useTriangles, 2, 1); pane.newRow(); pane.add(useLowRes, 2, 1); pane.newRow(); pane.center().hfill(true); pane.add(export, 2, 1); pane.newRow(); pane.add(discard, 2, 1); JMenuBar menubar = new JMenuBar(); JMenu menu; JMenuItem item; menu = new JMenu("Presets"); menu.setIcon(kMain.getPrefs().basicDownIcon); menu.setHorizontalTextPosition(AbstractButton.LEADING); menu.setMnemonic(KeyEvent.VK_P); menubar.add(menu); item = new JMenuItem(new ReflectiveAction("2Fo - Fc", null, this, "on2FoFc")); item.setMnemonic(KeyEvent.VK_2); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_2, KingMain.MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Fo - Fc", null, this, "onFoFc")); item.setMnemonic(KeyEvent.VK_1); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_1, KingMain.MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Coot 2Fo - Fc", null, this, "onCoot2FoFc")); item.setMnemonic(KeyEvent.VK_4); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_4, KingMain.MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Coot Fo - Fc", null, this, "onCootFoFc")); item.setMnemonic(KeyEvent.VK_3); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_3, KingMain.MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Anomalous", null, this, "onAnomalous")); item.setMnemonic(KeyEvent.VK_5); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_5, KingMain.MENU_ACCEL_MASK)); menu.add(item); if (kMain.getPrefs().getBoolean("minimizableTools")) { JFrame fm = new JFrame(title+"-EDMap"); fm.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); fm.setContentPane(pane); fm.setJMenuBar(menubar); dialog = fm; } else { JDialog dial = new JDialog(kMain.getTopWindow(), title+"-EDMap", false); dial.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dial.setContentPane(pane); dial.setJMenuBar(menubar); dialog = dial; } } //}}} //{{{ stateChanged, actionPerformed, onTriangles, calcSliderValue //################################################################################################## public void stateChanged(ChangeEvent ev) { double val; val = calcSliderValue(slider1); label1.setText(df1.format(val)+" sigma"); val = calcSliderValue(slider2); label2.setText(df1.format(val)+" sigma"); if(!extent.getValueIsAdjusting() && !slider1.getValueIsAdjusting() && !slider2.getValueIsAdjusting()) { updateMesh(); kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_CONTENTS)); } } public void actionPerformed(ActionEvent ev) { kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_CONTENTS)); } // target of reflection public void onTriangles(ActionEvent ev) { updateMesh(); kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_CONTENTS)); } // target of reflection public void onCoarseMesh(ActionEvent ev) { updateMesh(); kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_CONTENTS)); } double calcSliderValue(JSlider slider) { int i = slider.getValue(); if(-60 <= i && i <= 60) return i/10.0; else if(i > 60) return (6.0 + (i-60)*2.0); else if(i < -60) return -(6.0 + (-i-60)*2.0); else throw new Error("assertion failure"); } //}}} //{{{ centerChanged //################################################################################################## /** * Reports on whether the viewing center has been changed. * Has the side effect of updating the internal center to match the current view. */ protected boolean centerChanged() { KView v = kMain.getView(); if(v == null) return false; float[] ctr = v.getCenter(); boolean ret = (ctrX != ctr[0] || ctrY != ctr[1] || ctrZ != ctr[2]); ctrX = ctr[0]; ctrY = ctr[1]; ctrZ = ctr[2]; return ret; } //}}} //{{{ updateMesh //################################################################################################## protected void updateMesh() { if(Float.isNaN(ctrX) || Float.isNaN(ctrY) || Float.isNaN(ctrZ)) return; // Regenerate our plotting apparatus here in case the user's // preference for std. mesh vs. cobwebs has changed. Object mode = (useTriangles.isSelected() ? MarchingCubes.MODE_TRIANGLE : MarchingCubes.MODE_MESH); plotter1 = new EDMapPlotter(false, mode); plotter2 = new EDMapPlotter(false, mode); double val, size = extent.getValue() / 2.0; int[] corner1 = new int[3], corner2 = new int[3]; if(useLowRes.isSelected()) { LowResolutionVertexSource lores = new LowResolutionVertexSource(map, 2); mc1 = new MarchingCubes(lores, lores, plotter1, mode); mc2 = new MarchingCubes(lores, lores, plotter2, mode); lores.findVertexForPoint(ctrX-size, ctrY-size, ctrZ-size, corner1); lores.findVertexForPoint(ctrX+size, ctrY+size, ctrZ+size, corner2); } else { mc1 = new MarchingCubes(map, map, plotter1, mode); mc2 = new MarchingCubes(map, map, plotter2, mode); map.findVertexForPoint(ctrX-size, ctrY-size, ctrZ-size, corner1); map.findVertexForPoint(ctrX+size, ctrY+size, ctrZ+size, corner2); } /*double[] xyz = new double[3]; map.locateVertex(corner1[0], corner1[1], corner1[2], xyz); SoftLog.err.println("findVertex("+(ctrX-size)+" "+(ctrY-size)+" " +(ctrZ-size)+") -> "+xyz[0]+" "+xyz[1]+" "+xyz[2]); map.locateVertex(corner2[0], corner2[1], corner2[2], xyz); SoftLog.err.println("findVertex("+(ctrX+size)+" "+(ctrY+size)+" " +(ctrZ+size)+") -> "+xyz[0]+" "+xyz[1]+" "+xyz[2]);*/ val = calcSliderValue(slider1); mc1.march(corner1[0], corner1[1], corner1[2], corner2[0], corner2[1], corner2[2], val*map.sigma); val = calcSliderValue(slider2); mc2.march(corner1[0], corner1[1], corner1[2], corner2[0], corner2[1], corner2[2], val*map.sigma); //SoftLog.err.println("Updated mesh: "+corner1[0]+" "+corner1[1]+" "+corner1[2]+" / "+corner2[0]+" "+corner2[1]+" "+corner2[2]); } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform) { KList list; if(centerChanged()) updateMesh(); list = plotter1.getList(); if(list != null && label1.isSelected()) { list.setColor((KPaint)color1.getSelectedItem()); list.doTransform(engine, xform); } list = plotter2.getList(); if(list != null && label2.isSelected()) { list.setColor((KPaint)color2.getSelectedItem()); list.doTransform(engine, xform); } //SoftLog.err.println("Painted maps."); } //}}} //{{{ setType public void setType(String type) { if (type.equals(MAP_2FOFC)) { if (phenixColors) onCoot2FoFc(null); else on2FoFc(null); } else if (type.equals(MAP_FOFC)) { if (phenixColors) onCootFoFc(null); else onFoFc(null); //new ActionEvent(this, AWTEvent.WINDOW_EVENT_MASK, "") } else if (type.equals(MAP_ANOMALOUS)) { onAnomalous(null); } } //}}} //{{{ on2FoFc, onFoFc //################################################################################################## // Preset values for 2Fo-Fc maps // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void on2FoFc(ActionEvent ev) { slider1.setValue(12); // +1.2 slider2.setValue(30); // +3.0 color1.setSelectedItem(KPalette.gray); color2.setSelectedItem(KPalette.purple); updateMesh(); kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_CONTENTS)); } // Preset values for Fo-Fc (difference) maps // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFoFc(ActionEvent ev) { slider1.setValue(-35); // -3.5 slider2.setValue( 35); // +3.5 color1.setSelectedItem(KPalette.orange); color2.setSelectedItem(KPalette.sky); label1.setSelected(true); label2.setSelected(true); updateMesh(); kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_CONTENTS)); } public void onCoot2FoFc(ActionEvent ev) { slider1.setValue(12); // +1.2 slider2.setValue(30); // +3.0 color1.setSelectedItem(KPalette.sky); color2.setSelectedItem(KPalette.purple); updateMesh(); kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_CONTENTS)); } public void onCootFoFc(ActionEvent ev) { slider1.setValue(-30); // -3.5 slider2.setValue( 30); // +3.5 color1.setSelectedItem(KPalette.red); color2.setSelectedItem(KPalette.green); label1.setSelected(true); label2.setSelected(true); updateMesh(); kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_CONTENTS)); } public void onAnomalous(ActionEvent ev){ slider1.setValue(30); color1.setSelectedItem(KPalette.yellow); label1.setSelected(true); updateMesh(); kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_CONTENTS)); } //}}} //{{{ onMapDiscard, onMapExport //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onMapDiscard(ActionEvent ev) { dialog.dispose(); parent.transformables.remove(this); kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_CONTENTS)); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onMapExport(ActionEvent ev) { // insert lists into kinemage Kinemage kin = kMain.getKinemage(); KGroup group = new KGroup("ED map"); kin.add(group); kin.setModified(true); KGroup subgroup = new KGroup("ED map"); subgroup.setHasButton(false); group.add(subgroup); KList list1, list2; list1 = plotter1.getList(); plotter1.freeList(); list2 = plotter2.getList(); plotter2.freeList(); if(list1 != null && label1.isSelected()) { list1.setParent(subgroup); subgroup.add(list1); } if(list2 != null && label2.isSelected()) { list2.setParent(subgroup); subgroup.add(list2); } updateMesh(); // regenerate the meshes we just exported } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/tool/bondrot/0000755000000000000000000000000011744310054016705 5ustar rootrootking-2.21.120420/king/src/king/tool/bondrot/SuiteRotationTool.java0000644000000000000000000002062611531212650023222 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.bondrot; import king.*; import king.core.*; import javax.swing.*; import java.awt.event.*; import java.awt.*; import java.util.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.r3.*; //}}} public class SuiteRotationTool extends BasicTool implements ChangeListener, ListSelectionListener, ActionListener, UIText.HypertextListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## AngleDial rotDial; TablePane pane; JList rotJList; JList hypJList; JTextField angField; HyperRotParser hyptyp; BondRotHandler handler; BondRot oldRot = null; //BondRot hyperRot = null; boolean valueChanging = false; ArrayList highlightedLists = null; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public SuiteRotationTool(ToolBox tb) { super(tb); buildGUI(); } //}}} private void buildGUI() { rotDial = new AngleDial(); rotJList = new JList(); hypJList = new JList(); angField = new JTextField("", 5); angField.addActionListener(this); pane = new TablePane(); pane.addCell(rotJList); pane.addCell(rotDial); pane.addCell(hypJList); pane.newRow(); pane.skip(); pane.addCell(angField); } public void start() { //buildGUI(); Collection brColl = kMain.getKinemage().getBondRots(); if (brColl.size() > 0) { handler = new BondRotHandler(brColl); //kMain.getTextWindow().addHypertextListener(this); hyptyp = new HyperRotParser(kMain.getTextWindow().getText()); //hypJList.setListData(hyptyp.getHypList()); DefaultListModel hypModel = new DefaultListModel(); String[] stringArray = hyptyp.getHypList(); //System.out.println(stringArray.length); for (int i = 0; iArrayList of bondRots String[] hypNames; //JList hypList; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public HyperRotParser(String input) { hypMap = new HashMap(); findLinks(new String(input)); } //}}} private void buildGUI() { } public void findLinks(String text) { //System.out.println(text); ArrayList hypList = new ArrayList(); int startHyp = 0; int endHyp = 0; while (startHyp >= 0) { startHyp = text.indexOf("*{"); endHyp = text.indexOf("}*"); if (startHyp >= 0) { String hypText = text.substring(startHyp + 2, endHyp); if (isHyper(hypText)) { hypList.add(hypText); } text = text.substring(endHyp + 2); } } Iterator iter = hypList.iterator(); hypNames = new String[hypList.size()]; int i = 0; while (iter.hasNext()) { String hypText = (String) iter.next(); String hypName = hypText.substring(0, hypText.indexOf(" ")); String rots = hypText.substring(hypText.indexOf("rot=")); hypNames[i] = hypName; i++; hypMap.put(hypName, extractRotInfo(rots)); } } public ArrayList extractRotInfo(String text) { String rotName = null; int startName = 0; int endName = -1; double rotAng = -1; ArrayList bondRots = new ArrayList(); while (startName >= 0) { startName = text.indexOf("rot={"); if (startName >= 0) { endName = text.indexOf("}"); rotName = text.substring(startName + 5, endName); //System.out.println(rotName); text = text.substring(endName + 1).trim(); //System.out.println("rest: " + text); int endAngSp = text.indexOf(" "); int endAngNL = text.indexOf("\n"); int endAng; if (endAngSp < 0) endAng = endAngNL; else if (endAngNL < 0) endAng = endAngSp; else if (endAngSp < endAngNL) endAng = endAngSp; else endAng = endAngNL; //System.out.println("endAng " + endAng); if (endAng >= 0) { rotAng = Double.parseDouble(text.substring(0, endAng)); text = text.substring(endAng + 1); } else { rotAng = Double.parseDouble(text); } BondRot store = new BondRot(1, rotName, rotAng); bondRots.add(store); } } return bondRots; } /* public String extractRotName(String text) { String rotName = null; int startName = text.indexOf("rot={"); if (startName > 0) { int endName = text.indexOf("}"); rotName = text.substring(startName + 5, endName); System.out.println(rotName); } return rotName; }*/ public String[] getHypList() { return hypNames; } public ArrayList getRotList(String rotName) { return (ArrayList) hypMap.get(rotName); } private boolean isHyper(String text) { return (text.indexOf("rot=")>0); } public void valueChanged(ListSelectionEvent ev) { } //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## public String toString() { return "HyperRotParser"; } //}}} public void debug() { /* BondRot[] bondRots = new BondRot[dialMap.size()]; Iterator iter = (dialMap.values()).iterator(); for (int i = 0; i < dialMap.size(); i++) { bondRots[i] = (BondRot) iter.next(); } rotList = new JList(bondRots); rotList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); rotList.addListSelectionListener(this); */ } }//class king-2.21.120420/king/src/king/tool/bondrot/BondRotHandler.java0000644000000000000000000001031711531212650022414 0ustar rootrootpackage king.tool.bondrot; import king.*; import king.core.*; import java.util.*; import driftwood.r3.*; import java.text.*; public class BondRotHandler { DecimalFormat df2 = new DecimalFormat("0.00"); HashMap origMap; HashSet origSet; HashMap pointMap; HashMap rotMap; BondRot[] bondRotArray = null; public BondRotHandler(Collection brColl) { origMap = new HashMap(); origSet = new HashSet(); pointMap = new HashMap(); rotMap = new HashMap(); Iterator bondRotIter = brColl.iterator(); Iterator listIter; int i = 0; bondRotArray = new BondRot[brColl.size()]; //ArrayList bondRotList = new ArrayList(); while (bondRotIter.hasNext()) { BondRot bonds = (BondRot) bondRotIter.next(); //System.out.println(bonds); bondRotArray[i] = bonds; i++; rotMap.put(bonds.getName(), bonds); ArrayList origList = new ArrayList(); ArrayList ptsList = new ArrayList(); origMap.put(bonds, origList); pointMap.put(bonds, ptsList); listIter = bonds.iterator(); while (listIter.hasNext()) { KList bondList = (KList) listIter.next(); //bondList.setColor(KPalette.white); storeCoords(bondList, ptsList, origList); } //origSet.clear(); } //BondRot[] bondRots = new BondRot[brColl.size()]; //Iterator iter = bondRotList.iterator(); //for (int i = 0; i < bondRotList.size(); i++) { // bondRots[i] = (BondRot) iter.next(); //} } private void storeCoords(KList list, ArrayList ptsList, ArrayList origList) { Iterator iter = list.iterator(); while (iter.hasNext()) { KPoint p = (KPoint) iter.next(); ptsList.add(p); Triple trip = new Triple(p); if (origSet.contains(trip)) { Iterator origIter = origSet.iterator(); while (origIter.hasNext()) { Triple temp = (Triple) origIter.next(); if (temp.equals(trip)) { trip = temp; } } } origList.add(trip); origSet.add(trip); } //System.out.print("points size: " + ptsList.size()); //System.out.println(" origCoords size: " + origList.size()); } public void doRotation(BondRot rot, double angle) { if (rot != null) { KList axis = rot.getAxisList(); Iterator axisIter = axis.iterator(); Triple firstTrip = new Triple((KPoint) axisIter.next()); Triple secondTrip = new Triple((KPoint) axisIter.next()); // calc transform Transform rotate = new Transform(); rotate = rotate.likeRotation(firstTrip, secondTrip, angle - rot.getCurrentAngle()); // apply transform Iterator origIter = ((ArrayList) origMap.get(rot)).iterator(); Iterator pointIter = ((ArrayList) pointMap.get(rot)).iterator(); //System.out.println(rot + " being set"); while (pointIter.hasNext()) { KPoint point = (KPoint) pointIter.next(); //Triple origTrip = (Triple) origIter.next(); //Triple trip = (Triple) origTrip.clone(); Triple trip = new Triple(point); rotate.transform(trip); //System.out.print(point + " " + df2.format(point.getOrigX()) + ", " + df2.format(point.getOrigY()) + ", " + df2.format(point.getOrigZ()) + " set to: "); point.setX(trip.getX()); point.setY(trip.getY()); point.setZ(trip.getZ()); //System.out.println(df2.format(point.getOrigX()) + ", " + df2.format(point.getOrigY()) + ", " + df2.format(point.getOrigZ())); //rot.setCurrentAngle(angle); //trip = origTrip; //origTrip.setXYZ(trip.getX(), trip.getY(), trip.getZ()); } rot.setCurrentAngle(angle); } //rot.setCurrentAngle(angle); } public void updateCoords(BondRot rot) { //need to update origMap with new triples of points... ArrayList origList = (ArrayList) origMap.get(rot); ArrayList ptsList = (ArrayList) pointMap.get(rot); //origList.clear(); Iterator pointIter = ptsList.iterator(); Iterator origIter = origList.iterator(); while (pointIter.hasNext()) { KPoint p = (KPoint) pointIter.next(); Triple trip = (Triple) origIter.next(); trip.setXYZ(p.getX(), p.getY(), p.getZ()); //Triple trip = new Triple(p); //origList.add(trip); } //System.out.println("updating coords"); } public BondRot getBondRot(String name) { return ((BondRot) rotMap.get(name)); } public BondRot[] getBondRotArray() { return bondRotArray; } } king-2.21.120420/king/src/king/GroupEditor.java0000644000000000000000000012057411531212654017401 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import king.points.BallPoint; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.r3.*; //}}} /** * GroupEditor produces a dialog box for editing group/list properties. * It also manages the Transform (translate/rotate/scale) operation on groups/lists. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Tue Sep 24 10:04:44 UTC 2002 */ public class GroupEditor implements ChangeListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; Frame ownerWindow; // Kinemage JDialog kiDialog; JTextField kiName; JCheckBox kiWhiteback, kiOnewidth, kiThinline, kiPerspec, kiFlat, kiListcolor; JButton kiOK, kiCancel; // Groups JDialog grDialog; JTextField grName; JCheckBox grIsOff, grNoButton, grDominant, grRecessiveOn, grAnimate, gr2Animate, grSelect; JList grMasters; DefaultListModel grMastersModel; JButton grAddMaster, grRemoveMasters; JButton grOK, grCancel; // Subgroups JDialog suDialog; JTextField suName; JCheckBox suIsOff, suNoButton, suDominant, suRecessiveOn; JList suMasters; DefaultListModel suMastersModel; JButton suAddMaster, suRemoveMasters; JButton suOK, suCancel; // Lists JDialog liDialog; boolean originallyFlipped, liFirstShow = true; // added originallyFlipped (ARK Spring2010) TablePane liPanel; JTextField liName; JCheckBox liIsOff, liNoButton, liNoHilite; JTextField liWidth, liRadius, liAlpha; JList liMasters; DefaultListModel liMastersModel; JButton liAddMaster, liRemoveMasters, liRibbonFlip; ColorPicker liPicker; KPaint originalColor = null; KList theKList = null; JButton liOK, liCancel; // Transform JDialog trDialog; boolean trFirstShow = true; TablePane2 trPanel; JTextField trTransX, trTransY, trTransZ; // translate, not transform JTextField trRotX, trRotY, trRotZ; JTextField trScale, trScaleX, trScaleY, trScaleZ; JCheckBox trAboutOrigin; JButton trBtnTrans, trBtnRot, trBtnAniso, trBtnScale, trClose; AGE trTarget = null; boolean acceptChanges = false; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public GroupEditor(KingMain kmain, Frame ownerWindow) { kMain = kmain; this.ownerWindow = ownerWindow; makeKinemageDialog(); makeGroupDialog(); makeSubgroupDialog(); makeListDialog(); makeTransformDialog(); } //}}} //{{{ make___Dialog //################################################################################################## void makeKinemageDialog() { kiDialog = new JDialog(ownerWindow, "Edit kinemage properties", true); kiDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); TablePane2 kiPanel = new TablePane2(); kiDialog.setContentPane(kiPanel); kiName = new JTextField(20); kiWhiteback = new JCheckBox("@whiteback (Default to white background)"); kiOnewidth = new JCheckBox("@onewidth (No depth cueing by line width)"); kiThinline = new JCheckBox("@thinline (All lines are thin)"); kiPerspec = new JCheckBox("@perspective (Use realistic perspective)"); kiFlat = new JCheckBox("@flat (2-D display and navigation)"); kiListcolor = new JCheckBox("@listcolordominant (Default to list color)"); kiOK = new JButton(new ReflectiveAction("OK", null, this, "onKinemageOK")); kiCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onKinemageCancel")); kiDialog.getRootPane().setDefaultButton(kiOK); // Key bindings: just type the key to execute -- DAK 090929 InputMap im = kiDialog.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0 ), "kicancel"); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_W, KingMain.MENU_ACCEL_MASK), "kicancel"); ActionMap am = kiDialog.getRootPane().getActionMap(); am.put("kicancel", new ReflectiveAction(null, null, this, "onKinemageCancel")); kiPanel.setBorder(BorderFactory.createEmptyBorder(8,8,8,8)); kiPanel.addCell(new JLabel("Kinemage title:")).newRow(); kiPanel.addCell(kiName).newRow(); kiPanel.addCell(new JLabel("Preferred display options:")).newRow(); kiPanel.addCell(kiWhiteback).newRow(); kiPanel.addCell(kiOnewidth).newRow(); kiPanel.addCell(kiThinline).newRow(); kiPanel.addCell(kiPerspec).newRow(); kiPanel.addCell(kiFlat).newRow(); kiPanel.addCell(kiListcolor).newRow(); kiPanel.startSubtable(); kiPanel.center().memorize(); kiPanel.addCell(kiOK).addCell(kiCancel); kiPanel.endSubtable(); } void makeGroupDialog() { grDialog = new JDialog(ownerWindow, "Edit group properties", true); grDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); TablePane2 grPanel = new TablePane2(); grDialog.setContentPane(grPanel); grName = new JTextField(20); grIsOff = new JCheckBox("off (Hide this and all children)"); grNoButton = new JCheckBox("nobutton (Don't provide on/off button)"); grDominant = new JCheckBox("dominant (Suppress all children's buttons)"); grRecessiveOn = new JCheckBox("collapsable (Dominant only when off)"); grAnimate = new JCheckBox("animate (Include in ANIMATE animation)"); gr2Animate = new JCheckBox("2animate (Include in 2ANIMATE animation)"); grSelect = new JCheckBox("select (Allow selection-by-color)"); JLabel mastersLabel = new JLabel("Masters:"); mastersLabel.setLabelFor(grMasters); grMastersModel = new DefaultListModel(); grMasters = new JList(grMastersModel); grMasters.setVisibleRowCount(4); grMasters.setFixedCellHeight(18); JScrollPane grMastersScroller = new JScrollPane(grMasters); grMastersScroller.setPreferredSize(new Dimension(140, 100)); grAddMaster = new JButton(new ReflectiveAction("Add", null, this, "onGroupAddMaster")); grRemoveMasters = new JButton(new ReflectiveAction("Remove", null, this, "onGroupRemoveMasters")); grOK = new JButton(new ReflectiveAction("OK", null, this, "onGroupOK")); grCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onGroupCancel")); grDialog.getRootPane().setDefaultButton(grOK); // Key bindings: just type the key to execute -- DAK 090929 InputMap im = grDialog.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0 ), "grcancel"); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_W, KingMain.MENU_ACCEL_MASK), "grcancel"); ActionMap am = grDialog.getRootPane().getActionMap(); am.put("grcancel", new ReflectiveAction(null, null, this, "onGroupCancel")); grPanel.setBorder(BorderFactory.createEmptyBorder(8,8,8,8)); grPanel.startSubtable(); grPanel.addCell(new JLabel("Group name/identifier:")).newRow(); grPanel.addCell(grName).newRow(); grPanel.addCell(grIsOff).newRow(); grPanel.addCell(grNoButton).newRow(); grPanel.addCell(grDominant).newRow(); grPanel.addCell(grRecessiveOn).newRow(); grPanel.addCell(grAnimate).newRow(); grPanel.addCell(gr2Animate).newRow(); grPanel.addCell(grSelect).newRow(); grPanel.addCell(mastersLabel); grPanel.endSubtable().newRow(); grPanel.startSubtable(); grPanel.startSubtable(); grPanel.addCell(grMastersScroller); grPanel.endSubtable(); grPanel.startSubtable(); grPanel.left().addCell(grAddMaster).newRow(); grPanel.left().addCell(grRemoveMasters); grPanel.endSubtable(); grPanel.endSubtable().newRow(); grPanel.startSubtable(); grPanel.center().memorize(); grPanel.addCell(grOK).addCell(grCancel); grPanel.endSubtable(); } void makeSubgroupDialog() { suDialog = new JDialog(ownerWindow, "Edit subgroup properties", true); suDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); TablePane2 suPanel = new TablePane2(); suDialog.setContentPane(suPanel); suName = new JTextField(20); suIsOff = new JCheckBox("off (Hide this and all children)"); suNoButton = new JCheckBox("nobutton (Don't provide on/off button)"); suDominant = new JCheckBox("dominant (Suppress all children's buttons)"); suRecessiveOn = new JCheckBox("collapsable (Dominant only when off)"); JLabel mastersLabel = new JLabel("Masters:"); mastersLabel.setLabelFor(suMasters); suMastersModel = new DefaultListModel(); suMasters = new JList(suMastersModel); suMasters.setVisibleRowCount(4); suMasters.setFixedCellHeight(18); JScrollPane suMastersScroller = new JScrollPane(suMasters); suMastersScroller.setPreferredSize(new Dimension(140, 100)); suAddMaster = new JButton(new ReflectiveAction("Add", null, this, "onSubgroupAddMaster")); suRemoveMasters = new JButton(new ReflectiveAction("Remove", null, this, "onSubgroupRemoveMasters")); suOK = new JButton(new ReflectiveAction("OK", null, this, "onSubgroupOK")); suCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onSubgroupCancel")); suDialog.getRootPane().setDefaultButton(suOK); // Key bindings: just type the key to execute -- DAK 090929 InputMap im = suDialog.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0 ), "sucancel"); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_W, KingMain.MENU_ACCEL_MASK), "sucancel"); ActionMap am = suDialog.getRootPane().getActionMap(); am.put("sucancel", new ReflectiveAction(null, null, this, "onSubgroupCancel")); suPanel.setBorder(BorderFactory.createEmptyBorder(8,8,8,8)); suPanel.startSubtable(); suPanel.addCell(new JLabel("Subgroup name/identifier:")).newRow(); suPanel.addCell(suName).newRow(); suPanel.addCell(suIsOff).newRow(); suPanel.addCell(suNoButton).newRow(); suPanel.addCell(suDominant).newRow(); suPanel.addCell(suRecessiveOn).newRow(); suPanel.addCell(mastersLabel); suPanel.endSubtable().newRow(); suPanel.startSubtable(); suPanel.startSubtable(); suPanel.addCell(suMastersScroller); suPanel.endSubtable(); suPanel.startSubtable(); suPanel.left().addCell(suAddMaster).newRow(); suPanel.left().addCell(suRemoveMasters); suPanel.endSubtable(); suPanel.endSubtable().newRow(); suPanel.startSubtable(); suPanel.center().memorize(); suPanel.addCell(suOK).addCell(suCancel); suPanel.endSubtable(); } void makeListDialog() { liDialog = new JDialog(ownerWindow, "Edit list properties", true); liDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); liPanel = new TablePane(); liDialog.setContentPane(liPanel); liName = new JTextField(20); liIsOff = new JCheckBox("off (Hide this list from view)"); liNoButton = new JCheckBox("nobutton (Don't provide on/off button)"); liNoHilite = new JCheckBox("nohighlight (No highlight on balls)"); liRibbonFlip = new JButton(new ReflectiveAction("Flip Ribbon", null, this, "onRibbonFlip")); // (ARK Spring2010) liWidth = new JTextField(6); JLabel widthLabel = new JLabel("Line width:"); widthLabel.setLabelFor(liWidth); liRadius = new JTextField(6); JLabel radiusLabel = new JLabel("Ball radius:"); radiusLabel.setLabelFor(liRadius); liAlpha = new JTextField(6); JLabel alphaLabel = new JLabel("Alpha (0-255):"); alphaLabel.setLabelFor(liAlpha); JLabel mastersLabel = new JLabel("Masters:"); mastersLabel.setLabelFor(liMasters); liMastersModel = new DefaultListModel(); liMasters = new JList(liMastersModel); liMasters.setVisibleRowCount(6); liMasters.setFixedCellHeight(18); JScrollPane liMastersScroller = new JScrollPane(liMasters); liMastersScroller.setPreferredSize(new Dimension(140, 100)); liAddMaster = new JButton(new ReflectiveAction("Add", null, this, "onListAddMaster")); liRemoveMasters = new JButton(new ReflectiveAction("Remove", null, this, "onListRemoveMasters")); KingPrefs prefs = kMain.getPrefs(); int patchSize = (prefs==null? 20 : prefs.getInt("colorSwatchSize")); liPicker = new ColorPicker(KPaint.BLACK_COLOR, patchSize); liPicker.addChangeListener(this); liOK = new JButton(new ReflectiveAction("OK", null, this, "onListOK")); liCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onListCancel")); liDialog.getRootPane().setDefaultButton(liOK); // Key bindings: just type the key to execute -- DAK 090929 InputMap im = liDialog.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0 ), "licancel"); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_W, KingMain.MENU_ACCEL_MASK), "licancel"); ActionMap am = liDialog.getRootPane().getActionMap(); am.put("licancel", new ReflectiveAction(null, null, this, "onListCancel")); liPanel.setBorder(BorderFactory.createEmptyBorder(8,8,8,8)); liPanel.insets(2).hfill(true).vfill(false).top(); liPanel.startSubtable(); // most stuff liPanel.addCell(new JLabel("List name/identifier:"), 2, 1).newRow(); liPanel.addCell(liName, 2, 1).newRow(); liPanel.addCell(liIsOff, 2, 1).newRow(); liPanel.addCell(liNoButton, 2, 1).newRow(); liPanel.addCell(liNoHilite, 2, 1).newRow(); liPanel.addCell(liRibbonFlip).newRow(); // (ARK Spring2010) liPanel.addCell(widthLabel).addCell(liWidth).newRow(); liPanel.addCell(radiusLabel).addCell(liRadius).newRow(); liPanel.addCell(alphaLabel).addCell(liAlpha).newRow(); liPanel.startSubtable(); liPanel.addCell(mastersLabel).newRow(); liPanel.addCell(liPanel.strut(0,18)).newRow(); liPanel.addCell(liAddMaster).newRow(); liPanel.addCell(liRemoveMasters); liPanel.endSubtable(); liPanel.startSubtable(); liPanel.addCell(liMastersScroller); liPanel.endSubtable(); liPanel.endSubtable(); liPanel.startSubtable(1,2); // colors liPanel.addCell(new JLabel("List color:")); liPanel.newRow(); liPanel.addCell(liPicker); liPanel.endSubtable(); liPanel.newRow(); liPanel.bottom().startSubtable(); // ok and cancel liPanel.center(); liPanel.add(liOK); liPanel.add(liCancel); liPanel.endSubtable(); } //}}} //{{{ makeTransformDialog, transform, trClearFields //################################################################################################## private void makeTransformDialog() { trDialog = new JDialog(ownerWindow, "Transform coordinates", true); trDialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); trTransX = new JTextField(6); trTransY = new JTextField(6); trTransZ = new JTextField(6); trRotX = new JTextField(6); trRotY = new JTextField(6); trRotZ = new JTextField(6); trScale = new JTextField(6); trScaleX = new JTextField(6); trScaleY = new JTextField(6); trScaleZ = new JTextField(6); trBtnTrans = new JButton(new ReflectiveAction("Translate", null, this, "onTransformTranslate")); trBtnRot = new JButton(new ReflectiveAction("Rotate", null, this, "onTransformRotate")); trBtnAniso = new JButton(new ReflectiveAction("Stretch", null, this, "onTransformAnisoScale")); trBtnScale = new JButton(new ReflectiveAction("Scale", null, this, "onTransformScale")); trClose = new JButton(new ReflectiveAction("Close", null, this, "onTransformClose")); trAboutOrigin = new JCheckBox("Rotate/scale about origin", false); trPanel = new TablePane2(); trPanel.insets(2).weights(1,1).memorize(); trPanel.add(new JLabel("X")); trPanel.add(new JLabel("Y")); trPanel.add(new JLabel("Z")); trPanel.newRow(); trPanel.add(trTransX); trPanel.add(trTransY); trPanel.add(trTransZ); trPanel.hfill(true).add(trBtnTrans); trPanel.newRow(); trPanel.add(trRotX); trPanel.add(trRotY); trPanel.add(trRotZ); trPanel.hfill(true).add(trBtnRot); trPanel.newRow(); trPanel.add(trScaleX); trPanel.add(trScaleY); trPanel.add(trScaleZ); trPanel.hfill(true).add(trBtnAniso); trPanel.newRow(); trPanel.center().add(new JLabel("Scale factor:"), 2, 1); trPanel.add(trScale); trPanel.hfill(true).add(trBtnScale); trPanel.newRow(); trPanel.center().add(trAboutOrigin, 4, 1); trPanel.newRow(); trPanel.center().add(trClose, 4, 1); trDialog.setContentPane(trPanel); } /** * Displays a dialog for transforming the selected group, subgroup, or list. */ public void transform(AGE target) { trTarget = target; trClearFields(); // Display dialog box trDialog.pack(); if(trFirstShow) { trDialog.setLocationRelativeTo(ownerWindow); trFirstShow = false; } trDialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed } private void trClearFields() { trTransX.setText("0.0"); trTransY.setText("0.0"); trTransZ.setText("0.0"); trRotX.setText("0.0"); trRotY.setText("0.0"); trRotZ.setText("0.0"); trScale.setText("1.0"); trScaleX.setText("1.0"); trScaleY.setText("1.0"); trScaleZ.setText("1.0"); } //}}} //{{{ edit___ //################################################################################################## /** * Edits properties of the specified kinemage. * @return true if the specified kinemage was modified in any way */ public boolean editKinemage(Kinemage kinemage) { // Copy info from kinemage to dialog components kiName.setText(kinemage.getName()); kiName.selectAll(); kiName.requestFocus(); kiWhiteback.setSelected( kinemage.atWhitebackground); kiOnewidth.setSelected( kinemage.atOnewidth); kiThinline.setSelected( kinemage.atThinline); kiPerspec.setSelected( kinemage.atPerspective); kiFlat.setSelected( kinemage.atFlat); kiListcolor.setSelected( kinemage.atListcolordominant); // Display dialog box kiDialog.pack(); kiDialog.getRootPane().setDefaultButton(kiOK); // DAK 090726 kiDialog.setLocationRelativeTo(ownerWindow); kiDialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed // Read info from dialog into kinemage if(acceptChanges) { kinemage.setName( kiName.getText()); kinemage.atWhitebackground = kiWhiteback.isSelected(); kinemage.atOnewidth = kiOnewidth.isSelected(); kinemage.atThinline = kiThinline.isSelected(); kinemage.atPerspective = kiPerspec.isSelected(); kinemage.atFlat = kiFlat.isSelected(); kinemage.atListcolordominant = kiListcolor.isSelected(); markKinModified(kinemage); kMain.publish(new KMessage(this, KMessage.DISPLAY_OPTIONS)); } return acceptChanges; } /** * Edits properties of the specified group. * @return true if the specified group was modified in any way */ public boolean editGroup(KGroup group) { // Copy info from group to dialog components grName.setText(group.getName()); grName.selectAll(); grName.requestFocus(); grIsOff.setSelected( !group.isOn()); grNoButton.setSelected( !group.hasButton()); grDominant.setSelected( group.isDominant()); grRecessiveOn.setSelected( group.isCollapsible()); grAnimate.setSelected( group.isAnimate()); gr2Animate.setSelected( group.is2Animate()); grSelect.setSelected( group.isSelect()); grMastersModel.clear(); for(Iterator iter = group.getMasters().iterator(); iter.hasNext(); ) grMastersModel.addElement((String) iter.next()); // Display dialog box grDialog.pack(); grDialog.getRootPane().setDefaultButton(grOK); // DAK July 26 2009 grDialog.setLocationRelativeTo(ownerWindow); grDialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed // Read info from dialog into group if(acceptChanges) { group.setName( grName.getText()); group.setOn( !grIsOff.isSelected()); group.setHasButton( !grNoButton.isSelected()); group.setDominant( grDominant.isSelected()); group.setCollapsible( grRecessiveOn.isSelected()); group.setAnimate( grAnimate.isSelected()); group.set2Animate( gr2Animate.isSelected()); group.setSelect( grSelect.isSelected()); Object[] keeps = grMastersModel.toArray(); ArrayList elims = new ArrayList(); for(Object keep : keeps) if(!group.getMasters().contains((String) keep)) group.addMaster((String) keep); // newly added master for(String master : group.getMasters()) if(!grMastersModel.contains(master)) elims.add(master); for(String elim : elims) group.removeMaster(elim); // newly removed master markKinModified(group); } return acceptChanges; } /** * Edits properties of the specified subgroup. * @return true if the specified subgroup was modified in any way */ public boolean editSubgroup(KGroup subgroup) { // Copy info from subgroup to dialog components suName.setText(subgroup.getName()); suName.selectAll(); suName.requestFocus(); suIsOff.setSelected( !subgroup.isOn()); suNoButton.setSelected( !subgroup.hasButton()); suDominant.setSelected( subgroup.isDominant()); suRecessiveOn.setSelected( subgroup.isCollapsible()); suMastersModel.clear(); for(Iterator iter = subgroup.getMasters().iterator(); iter.hasNext(); ) suMastersModel.addElement((String) iter.next()); // Display dialog box suDialog.pack(); suDialog.getRootPane().setDefaultButton(suOK); // DAK July 26 2009 suDialog.setLocationRelativeTo(ownerWindow); suDialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed // Read info from dialog into subgroup if(acceptChanges) { subgroup.setName( suName.getText()); subgroup.setOn( !suIsOff.isSelected()); subgroup.setHasButton( !suNoButton.isSelected()); subgroup.setDominant( suDominant.isSelected()); subgroup.setCollapsible(suRecessiveOn.isSelected()); Object[] keeps = suMastersModel.toArray(); ArrayList elims = new ArrayList(); for(Object keep : keeps) if(!subgroup.getMasters().contains((String) keep)) subgroup.addMaster((String) keep); // newly added master for(String master : subgroup.getMasters()) if(!suMastersModel.contains(master)) elims.add(master); for(String elim : elims) subgroup.removeMaster(elim); // newly removed master markKinModified(subgroup); } return acceptChanges; } /** * Edits properties of the specified list. * @return true if the specified list was modified in any way */ public boolean editList(KList list) { // Copy info from list to dialog components theKList = list; liName.setText(list.getName()); liName.selectAll(); liName.requestFocus(); liIsOff.setSelected( !list.isOn()); liNoButton.setSelected( !list.hasButton()); liNoHilite.setSelected(list.getNoHighlight()); liWidth.setText(Integer.toString(list.getWidth())); liRadius.setText(Float.toString(list.getRadius())); liAlpha.setText(Integer.toString(list.getAlpha())); liMastersModel.clear(); for(Iterator iter = list.getMasters().iterator(); iter.hasNext(); ) liMastersModel.addElement((String) iter.next()); originalColor = list.getColor(); originallyFlipped = list.flipped; liPicker.setBackgroundMode(kMain.getCanvas().getEngine().backgroundMode); liPicker.setExtras(kMain.getKinemage().getNewPaintMap().values()); liPicker.setSelection(originalColor); // Display dialog box liDialog.pack(); liDialog.getRootPane().setDefaultButton(liOK); // DAK July 26 2009 if(liFirstShow) { liDialog.setLocationRelativeTo(ownerWindow); liFirstShow = false; } liDialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed // Read info from dialog into list if(acceptChanges) { list.setName( liName.getText()); list.setOn( !liIsOff.isSelected()); list.setHasButton( !liNoButton.isSelected()); list.setNoHighlight(liNoHilite.isSelected()); try { list.setWidth(Integer.parseInt(liWidth.getText())); } catch(NumberFormatException ex) {} if(list.getWidth() < 1) list.setWidth(1); if(list.getWidth() > 7) list.setWidth(7); try { list.setRadius(Float.parseFloat(liRadius.getText())); } catch(NumberFormatException ex) {} try { list.setAlpha(Integer.parseInt(liAlpha.getText())); } catch(NumberFormatException ex) {} if(list.getAlpha() < 0) list.setAlpha(0); if(list.getAlpha() > 255) list.setAlpha(255); Object[] keeps = liMastersModel.toArray(); ArrayList elims = new ArrayList(); for(Object keep : keeps) if(!list.getMasters().contains((String) keep)) list.addMaster((String) keep); // newly added master for(String master : list.getMasters()) if(!liMastersModel.contains(master)) elims.add(master); for(String elim : elims) list.removeMaster(elim); // newly removed master // Color is handled as soon as the choice is registered, // so we don't need to deal with it here. markKinModified(list); } else { list.setColor(originalColor); if(list.getType().equals("ribbon") && list.flipped!=originallyFlipped) list.flipOrder(); // flip back (ARK Spring2010) } theKList = null; // to avoid memory leaks return acceptChanges; } //}}} //{{{ onRibbonFlip /** Event handler for Flip Ribbon button (ARK Spring2010)*/ public void onRibbonFlip(ActionEvent ev) { if(theKList.getType().equals("ribbon")) theKList.flipOrder(); } //}}} //{{{ on__AddMaster /** Event handler for Add master button */ public void onGroupAddMaster(ActionEvent ev) { String newMaster = (String) JOptionPane.showInputDialog( new JDialog(), "Name of new master:", "Add master to group", JOptionPane.PLAIN_MESSAGE, null, null, null); if(newMaster == null) return; grMastersModel.add(grMastersModel.getSize(), newMaster); } /** Event handler for Add master button */ public void onSubgroupAddMaster(ActionEvent ev) { String newMaster = (String) JOptionPane.showInputDialog( new JDialog(), "Name of new master:", "Add master to subgroup", JOptionPane.PLAIN_MESSAGE, null, null, null); if(newMaster == null) return; suMastersModel.add(suMastersModel.getSize(), newMaster); } /** Event handler for Add master button */ public void onListAddMaster(ActionEvent ev) { String newMaster = (String) JOptionPane.showInputDialog( new JDialog(), "Name of new master:", "Add master to list", JOptionPane.PLAIN_MESSAGE, null, null, null); if(newMaster == null) return; liMastersModel.add(liMastersModel.getSize(), newMaster); } //}}} //{{{ on__RemoveMasters /** Event handler for Remove masters button */ public void onGroupRemoveMasters(ActionEvent ev) { int[] doomed = grMasters.getSelectedIndices(); for(int d : doomed) grMastersModel.remove(d); } /** Event handler for Remove masters button */ public void onSubgroupRemoveMasters(ActionEvent ev) { int[] doomed = suMasters.getSelectedIndices(); for(int d : doomed) suMastersModel.remove(d); } /** Event handler for Remove masters button */ public void onListRemoveMasters(ActionEvent ev) { int[] doomed = liMasters.getSelectedIndices(); for(int d : doomed) liMastersModel.remove(d); } //}}} //{{{ on__OK, on__Cancel //################################################################################################## /** Event handler for OK button */ public void onKinemageOK(ActionEvent ev) { acceptChanges = true; kiDialog.dispose(); } /** Event handler for Cancel button */ public void onKinemageCancel(ActionEvent ev) { acceptChanges = false; kiDialog.dispose(); } /** Event handler for OK button */ public void onGroupOK(ActionEvent ev) { acceptChanges = true; grDialog.dispose(); } /** Event handler for Cancel button */ public void onGroupCancel(ActionEvent ev) { acceptChanges = false; grDialog.dispose(); } /** Event handler for OK button */ public void onSubgroupOK(ActionEvent ev) { acceptChanges = true; suDialog.dispose(); } /** Event handler for Cancel button */ public void onSubgroupCancel(ActionEvent ev) { acceptChanges = false; suDialog.dispose(); } /** Event handler for OK button */ public void onListOK(ActionEvent ev) { acceptChanges = true; liDialog.dispose(); } /** Event handler for Cancel button */ public void onListCancel(ActionEvent ev) { acceptChanges = false; liDialog.dispose(); } //}}} //{{{ onTransform___ //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTransformClose(ActionEvent ev) { trDialog.dispose(); trTarget = null; // to avoid memory leaks } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTransformTranslate(ActionEvent ev) { try { float x, y, z; x = Float.parseFloat(trTransX.getText().trim()); y = Float.parseFloat(trTransY.getText().trim()); z = Float.parseFloat(trTransZ.getText().trim()); translate(trTarget, x, y, z); markKinModified(trTarget); } catch(NumberFormatException ex) {} trClearFields(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTransformRotate(ActionEvent ev) { float[] bounds = { Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY }; float x, y, z; if(trAboutOrigin.isSelected()) { x = y = z = 0; } else { trTarget.calcBoundingBox(bounds); x = (bounds[3] + bounds[0])/2f; y = (bounds[4] + bounds[1])/2f; z = (bounds[5] + bounds[2])/2f; } Transform rot = new Transform().likeTranslation(-x, -y, -z); Transform tmp = new Transform(); try { double xd, yd, zd; xd = Double.parseDouble(trRotX.getText().trim()); yd = Double.parseDouble(trRotY.getText().trim()); zd = Double.parseDouble(trRotZ.getText().trim()); tmp.likeRotation(new Triple(1,0,0), xd); rot.append(tmp); tmp.likeRotation(new Triple(0,1,0), yd); rot.append(tmp); tmp.likeRotation(new Triple(0,0,1), zd); rot.append(tmp); tmp.likeTranslation(x, y, z); rot.append(tmp); rotate(trTarget, rot); markKinModified(trTarget); } catch(NumberFormatException ex) {} trClearFields(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTransformScale(ActionEvent ev) { float[] bounds = { Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY }; float x, y, z; if(trAboutOrigin.isSelected()) { x = y = z = 0; } else { trTarget.calcBoundingBox(bounds); x = (bounds[3] + bounds[0])/2f; y = (bounds[4] + bounds[1])/2f; z = (bounds[5] + bounds[2])/2f; } try { float s; s = Float.parseFloat(trScale.getText().trim()); scale(trTarget, x, y, z, s, s, s); markKinModified(trTarget); } catch(NumberFormatException ex) {} trClearFields(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTransformAnisoScale(ActionEvent ev) { float[] bounds = { Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.POSITIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY, Float.NEGATIVE_INFINITY }; float x, y, z; if(trAboutOrigin.isSelected()) { x = y = z = 0; } else { trTarget.calcBoundingBox(bounds); x = (bounds[3] + bounds[0])/2f; y = (bounds[4] + bounds[1])/2f; z = (bounds[5] + bounds[2])/2f; } try { float sx = Float.parseFloat(trScaleX.getText().trim()); float sy = Float.parseFloat(trScaleY.getText().trim()); float sz = Float.parseFloat(trScaleZ.getText().trim()); scale(trTarget, x, y, z, sx, sy, sz); markKinModified(trTarget); } catch(NumberFormatException ex) {} trClearFields(); } //}}} //{{{ translate, rotate, scale //################################################################################################## /** * Permanently alters the base coordinates of all the points * beneath the selected AGE. */ public static void translate(AGE target, float x, float y, float z) { KPoint pt; Iterator iter; if(target instanceof KList) { for(iter = target.iterator(); iter.hasNext(); ) { pt = (KPoint)iter.next(); pt.setX(pt.getX() + x); pt.setY(pt.getY() + y); pt.setZ(pt.getZ() + z); } } else { for(iter = target.iterator(); iter.hasNext(); ) { translate((AGE)iter.next(), x, y, z); } } } /** * Permanently alters the base coordinates of all the points * beneath the selected AGE. */ public static void rotate(AGE target, Transform r) { KPoint pt; Iterator iter; if(target instanceof KList) { Triple proxy = new Triple(); for(iter = target.iterator(); iter.hasNext(); ) { pt = (KPoint)iter.next(); proxy.setXYZ(pt.getX(), pt.getY(), pt.getZ()); r.transform(proxy); pt.setX(proxy.getX()); pt.setY(proxy.getY()); pt.setZ(proxy.getZ()); } } else { for(iter = target.iterator(); iter.hasNext(); ) { rotate((AGE)iter.next(), r); } } } /** * Permanently alters the base coordinates of all the points * beneath the selected AGE. * Points are scaled such that (x,y,z) remains fixed in space * and other points expand/contract around it. */ public static void scale(AGE target, float x, float y, float z, float sx, float sy, float sz) { KPoint pt; Iterator iter; if(target instanceof KList) { // There's no perfect answer here, but this seems reasonable at least... float s = (float) Math.sqrt((sx*sx + sy*sy + sz*sz)/3.0); KList list = (KList) target; list.setRadius( s * list.getRadius() ); for(iter = target.iterator(); iter.hasNext(); ) { pt = (KPoint)iter.next(); pt.setX( (pt.getX()-x)*sx + x); pt.setY( (pt.getY()-y)*sy + y); pt.setZ( (pt.getZ()-z)*sz + z); if(pt instanceof BallPoint) pt.setRadius( s * pt.getRadius() ); } } else { for(iter = target.iterator(); iter.hasNext(); ) { scale((AGE)iter.next(), x, y, z, sx, sy, sz); } } } //}}} //{{{ stateChanged, markKinModified //################################################################################################## public void stateChanged(ChangeEvent ev) { theKList.setColor( liPicker.getSelection() ); } void markKinModified(AGE age) { Kinemage k = age.getKinemage(); if(k != null) k.setModified(true); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/ToolServices.java0000644000000000000000000006024311531212654017553 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; //import java.io.*; import java.text.DecimalFormat; import java.util.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.SoftLog; import java.util.List; //}}} /** * ToolServices implements the most common manipulation functions, * including picking, pickcentering, rotation, translation, measures, and markers. * There is one ToolServices object in each ToolBox, and all the Tools in that ToolBox * should use it for their interactions. * *

There are still some calls to KinCanvas.repaint() in this class, * but for the moment I think they're legit. * One instance of this class is tightly coupled to a particular canvas, * and only the canvas needs to know that some tool wants a point picked. * *

Begun on Fri Jun 21 09:30:40 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class ToolServices implements Transformable { //{{{ Static fields static final DecimalFormat df_3 = new DecimalFormat("###,###,##0.###"); static final DecimalFormat df_1 = new DecimalFormat("##0.#"); /*static final int[] marker_styles = { MarkerPoint.CROSS_2 | MarkerPoint.X_2, MarkerPoint.CROSS_L | MarkerPoint.X_L, MarkerPoint.CROSS_M | MarkerPoint.X_M, MarkerPoint.CROSS_M, MarkerPoint.RING_L };*/ static final int[] marker_styles = { MarkerPoint.SQUARE_L | MarkerPoint.SQUARE_M | MarkerPoint.CROSS_2, MarkerPoint.RING_L | MarkerPoint.RING_M | MarkerPoint.CROSS_L, MarkerPoint.SQUARE_M | MarkerPoint.CROSS_M, MarkerPoint.RING_M | MarkerPoint.CROSS_M, MarkerPoint.DISC_L | MarkerPoint.DISC_M | MarkerPoint.DISC_S // shouldn't ever see this one! }; //}}} //{{{ Variable definitions //################################################################################################## ToolBox parent; KingMain kMain; KinCanvas kCanvas; // Delta zoom and clip that are not "used" by the quantized // models are saved and applied to the next mouse move float delta_zoom = 0f; float delta_clip = 0f; // Strings to paint String pointID = null; String distance = null; String aspect = null; String coords = null; // Control service options public JCheckBoxMenuItem doXYZ; public JCheckBox doMarkers; public JCheckBoxMenuItem doFlatland; public JCheckBoxMenuItem doSuperpick; public JCheckBoxMenuItem doObjectPick; public JCheckBoxMenuItem doMeasureAll; public JCheckBox doPickcenter; // Markers and point backlog LinkedList trackedPoints; final int maxTrackedPoints = 5; //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public ToolServices(ToolBox tb) { parent = tb; kMain = tb.kMain; kCanvas = tb.kCanvas; trackedPoints = new LinkedList(); doXYZ = new JCheckBoxMenuItem(new ReflectiveAction("Show XYZ coordinates", null, this, "onShowXYZ")); doXYZ.setSelected(false); doMarkers = new JCheckBox(new ReflectiveAction("Markers", null, this, "onShowMarkers")); doMarkers.setSelected(false); doMarkers.setToolTipText("Markers painted on points you've selected with the mouse"); doFlatland = new JCheckBoxMenuItem(new ReflectiveAction("Flatland", null, this, "onFlatland")); doFlatland.setSelected(false); doFlatland.setToolTipText("Translate in X-Y instead of rotating"); doSuperpick = new JCheckBoxMenuItem("Superpick", false); doSuperpick.setToolTipText("Pick points that are otherwise unpickable"); doObjectPick = new JCheckBoxMenuItem(new ReflectiveAction("Pick objects", null, this, "onObjectPick")); doObjectPick.setSelected(kCanvas.getEngine().useObjPicking); doObjectPick.setToolTipText("Pick lines and faces in addition to points"); doMeasureAll = new JCheckBoxMenuItem(new ReflectiveAction("Measure angle & dihedral", null, this, "onShowMeasures")); doMeasureAll.setSelected(false); doPickcenter = new JCheckBox("Pick center", false); doPickcenter.setToolTipText("Click this, then choose a new center of rotation"); } //}}} //{{{ kinCoordsToLogicalXYZ //################################################################################################## /** * For kinemages with @dimscale and/or @dimoffset, return a Tuple3 that converts * the actual X,Y,Z in the kinemage to a "logical" XYZ that makes sense to the user. * @param kin the current kinemage * @param coords the actual XYZ * @param viewAxes from KView.getViewingAxes(), can be null */ private Tuple3 kinCoordsToLogicalXYZ(Kinemage kin, KPoint coords, int[] viewAxes) { Triple xyz = new Triple(coords); if(kin == null) return xyz; // Should this operate for all points, or just high-dimensional ones? if(viewAxes != null && viewAxes.length >= 3)// && coords.getAllCoords() != null) { // @dimoffset _t_, @dimscale _s_ // kin = s * (orig + t) // display = orig = (kin / s) - t double sx = 1, sy = 1, sz = 1, tx = 0, ty = 0, tz = 0; if(kin.dimensionScale.size() > viewAxes[0]) sx = kin.dimensionScale.get(viewAxes[0]).doubleValue(); if(kin.dimensionScale.size() > viewAxes[1]) sy = kin.dimensionScale.get(viewAxes[1]).doubleValue(); if(kin.dimensionScale.size() > viewAxes[2]) sz = kin.dimensionScale.get(viewAxes[2]).doubleValue(); if(kin.dimensionOffset.size() > viewAxes[0]) tx = kin.dimensionOffset.get(viewAxes[0]).doubleValue(); if(kin.dimensionOffset.size() > viewAxes[1]) ty = kin.dimensionOffset.get(viewAxes[1]).doubleValue(); if(kin.dimensionOffset.size() > viewAxes[2]) tz = kin.dimensionOffset.get(viewAxes[2]).doubleValue(); xyz.setX( (xyz.getX() / sx) - tx ); xyz.setY( (xyz.getY() / sy) - ty ); xyz.setZ( (xyz.getZ() / sz) - tz ); } return xyz; } //}}} //{{{ pick //################################################################################################## /** * Displays the ID of the point in the appropriate text box, * and registers this point with the marker-tracking system. */ public void pick(KPoint p) { if(doPickcenter.isSelected()) { doPickcenter.setSelected(false); centerOnPoint(p); } else { identify(p); if(doMeasureAll.isSelected()) measureAll(p); else measure(p); mark(p); } } //}}} //{{{ identify, measure, mark //################################################################################################## public void identify(KPoint p) { if(kMain.getView() == null || p == null) { setID(null); setDist(null); setCoords(null); } else { setID(p.getName()); Tuple3 q = kinCoordsToLogicalXYZ(kMain.getKinemage(), p, kMain.getView().getViewingAxes()); setCoords(df_3.format(q.getX())+" "+df_3.format(q.getY())+" "+df_3.format(q.getZ())); } kCanvas.repaint(); } public void measure(KPoint p) { KPoint q = getLastPicked(0); if(kMain.getView() == null || p == null) { setDist(null); } else if(q != null) { double dx = p.getX() - q.getX(); double dy = p.getY() - q.getY(); double dz = p.getZ() - q.getZ(); double dist = Math.sqrt(dx*dx + dy*dy + dz*dz); setDist(df_3.format(dist)); } kCanvas.repaint(); } /** * "Officialy" picks a point -- puts a marker there and * considers it a point in the sequence of measures. * Be sure to call this AFTER measure() / measureAll() */ public void mark(KPoint p) { if(p != null) trackedPoints.addFirst(p); while(trackedPoints.size() > maxTrackedPoints) trackedPoints.removeLast(); if(doMarkers.isSelected()) kCanvas.repaint(); } //}}} //{{{ measureAll //################################################################################################## public void measureAll(KPoint p) { StringBuffer msg = new StringBuffer(); KPoint q = getLastPicked(0); if(kMain.getView() == null || p == null) setDist(null); else if(q != null) { // Naming scheme: // points are p, q, r, and s, from most recently picked to least recently picked // vectors are d (from q to p), e (from r to q), and f (from s to r) // normal to the s-r-q plane is u, normal to the r-q-p plane is v double dx = p.getX() - q.getX(); double dy = p.getY() - q.getY(); double dz = p.getZ() - q.getZ(); double dmag = Math.sqrt(dx*dx + dy*dy + dz*dz); msg.append("dist: ").append(df_3.format(dmag)); KPoint r = getLastPicked(1); if(r != null) { double ex = q.getX() - r.getX(); double ey = q.getY() - r.getY(); double ez = q.getZ() - r.getZ(); double emag = Math.sqrt(ex*ex + ey*ey + ez*ez); // Dot product: d . e = d e cos(a) = dxex + dyey + dzez // But notice 'e' has the wrong sign here for this to work right... double angle = Math.toDegrees(Math.acos((dx*ex + dy*ey + dz*ez) / (dmag * -emag))); msg.append(" angl: ").append(df_1.format(angle)); KPoint s = getLastPicked(2); if(s != null) { double fx = r.getX() - s.getX(); double fy = r.getY() - s.getY(); double fz = r.getZ() - s.getZ(); double fmag = Math.sqrt(fx*fx + fy*fy + fz*fz); // Cross product: a x b = (aybz-azby, -axbz+azbx, axby-aybx) // 'u' and 'v' are normals to planes // u = f x e, v = e x d double ux = fy*ez - fz*ey; double uy = fz*ex - fx*ez; double uz = fx*ey - fy*ex; double umag = Math.sqrt(ux*ux + uy*uy + uz*uz); double vx = ey*dz - ez*dy; double vy = ez*dx - ex*dz; double vz = ex*dy - ey*dx; double vmag = Math.sqrt(vx*vx + vy*vy + vz*vz); // Dot product again angle = Math.toDegrees(Math.acos((ux*vx + uy*vy + uz*vz) / (umag * vmag))); // BUT, that doesn't solve the handedness (sign) problem for the dihedral! // To do that, we look at the angle between 'f' and 'v' // Dot product again if( Math.toDegrees(Math.acos((fx*vx + fy*vy + fz*vz) / (fmag * vmag))) > 90.0 ) { angle = -angle; } msg.append(" dihd: ").append(df_1.format(angle)); if(kMain.getPrefs().getBoolean("measureVectorVectorAngle")) { // Angle between an axis (r-s) and a vector (q-p) // Dot product: d . f = d f cos(a) = dxfx + dyfy + dzfz // But notice 'f' has the wrong sign here for this to work right... angle = Math.toDegrees(Math.acos((dx*fx + dy*fy + dz*fz) / (dmag * -fmag))); msg.append(" vect: ").append(df_1.format(angle)); } }//dihedral }//angle setDist(msg.toString()); }//distance kCanvas.repaint(); }//measureAll() //}}} //{{{ centerOnPoint //################################################################################################## /** Centers the view on the point */ public void centerOnPoint(KPoint p) { KView v = kMain.getView(); if(v == null || p == null) return; v.setCenter((float)p.getX(), (float)p.getY(), (float)p.getZ()); } //}}} //{{{ rotate, pinwheel //################################################################################################## /** Given offsets in pixels, does normal kinemage rotation */ public void rotate(float dx, float dy) { KView v = kMain.getView(); if(v == null) return; v.rotateX((float)(2.0*Math.PI) * dy / 600f); v.rotateY((float)(2.0*Math.PI) * dx / 600f); } /** Given a distance in pixels, does pinwheel rotation */ public void pinwheel(float dist) { KView v = kMain.getView(); if(v == null) return; v.rotateZ((float)(-2.0*Math.PI) * dist / 600f); } //}}} //{{{ translate, ztranslate //################################################################################################## /** Given offsets in pixels, does a flatland translation */ public void translate(int dx, int dy) { KView v = kMain.getView(); if(v == null) return; Dimension dim = kCanvas.getCanvasSize(); v.viewTranslateRotated(dx, -dy, 0, (dim.width < dim.height ? dim.width : dim.height)); } /** Given an offset in pixels, does translation into/out of the screen */ public void ztranslate(int d) { KView v = kMain.getView(); if(v == null) return; Dimension dim = kCanvas.getCanvasSize(); v.viewTranslateRotated(0, 0, d, (dim.width < dim.height ? dim.width : dim.height)); } //}}} //{{{ adjustZoom, adjustClipping //################################################################################################## /** Given a pixel offset, does zooming */ public void adjustZoom(float dist) { KView v = kMain.getView(); if(v == null) return; BoundedRangeModel model = kCanvas.getZoomModel(); // Delta zoom that's not "used" by the quantized zoommodel is saved and applied to the next mouse move delta_zoom += dist / 6f; model.setValue(model.getValue() + (int)delta_zoom); delta_zoom -= (int)delta_zoom; // repaint is automatic when zoom is adjusted } /** Given a pixel distance, adjusts clipping */ public void adjustClipping(float dist) { KView v = kMain.getView(); if(v == null) return; BoundedRangeModel model = kCanvas.getClipModel(); // Delta clip that's not "used" by the quantized clipmodel is saved and applied to the next mouse move delta_clip += dist / 1f; model.setValue(model.getValue() + (int)delta_clip); delta_clip -= (int)delta_clip; // repaint is automatic when clip is adjusted } //}}} //{{{ getLastPicked, clearLastPicked, clearEverything //################################################################################################## /** Gets last point picked (0), or two points ago (1), or three (2), etc. */ public KPoint getLastPicked(int which) { KPoint ret = null; try { ret = (KPoint)trackedPoints.get(which); } catch(IndexOutOfBoundsException ex) {} return ret; } /** Removes the backlog of picked points */ public void clearLastPicked() { trackedPoints.clear(); } /** Clears out all markers and starts over */ public void clearEverything() { clearLastPicked(); setID(null); setDist(null); setAspect(null); setCoords(null); } //}}} //{{{ onShowMarkers/ShowXYZ/ShowMeasures/ObjectPick/Flatland //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowMarkers(ActionEvent ev) { kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_ON_OFF)); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowMeasures(ActionEvent ev) { // Measures turned on if(doMeasureAll.isSelected()) { clearLastPicked(); doMarkers.setSelected(true); } // Measures turned off else { setDist(null); doMarkers.setSelected(false); } kMain.publish(new KMessage(kMain.getKinemage(), AHE.CHANGE_TREE_ON_OFF)); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowXYZ(ActionEvent ev) { kCanvas.repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onObjectPick(ActionEvent ev) { kCanvas.getEngine().useObjPicking = doObjectPick.isSelected(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onFlatland(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; kin.atFlat = doFlatland.isSelected(); } //}}} //{{{ empty //################################################################################################## //}}} //{{{ makeNormalMarkers //################################################################################################## KList makeNormalMarkers(List points, int howmany) { KList marks = new KList(KList.MARK); marks.setColor(KPalette.white); for(int i = 0; i < howmany && i < points.size(); i++) { KPoint p = (KPoint) points.get(i); MarkerPoint mark = new MarkerPoint(p, KPalette.white, marker_styles[i]); mark.setParent(marks); marks.add(mark); } return marks; } //}}} //{{{ makeMageMeasures //################################################################################################## /** * Constructs a subgroup that looks like Mage's measures from recently picked points. * Most recently picked is at the head of the list. */ KGroup makeMageMeasures(List points) { KGroup subgroup = new KGroup(); KList lines = new KList(KList.VECTOR, "lines"); subgroup.add(lines); lines.setWidth(5); lines.setColor(KPalette.white); KPoint tracked; VectorPoint prev = null; for(int i = 3; i >= 0; i--) { if(points.size() > i) { tracked = (KPoint) points.get(i); VectorPoint curr = new VectorPoint("", prev); curr.setX(tracked.getX()); curr.setY(tracked.getY()); curr.setZ(tracked.getZ()); curr.setUnpickable(true); prev = curr; lines.add(curr); } } KList dots = new KList(KList.DOT, "dots"); subgroup.add(dots); dots.setWidth(2); dots.setColor(KPalette.hotpink); double x = 0, y = 0, z = 0; for(int i = 0; i < 4; i++) { if(points.size() > i) { tracked = (KPoint) points.get(i); x += tracked.getX(); y += tracked.getY(); z += tracked.getZ(); if(i > 0) { DotPoint dot = new DotPoint(""); dot.setX( x / (i+1) ); dot.setY( y / (i+1) ); dot.setZ( z / (i+1) ); dots.add(dot); } } } return subgroup; } //}}} //{{{ doTransform //################################################################################################## /** * A call to this method indicates the subscriber * should transform its coordinates from model-space * to display-space and optionally add one or more * KPoints to the supplied Engine using addPaintable(). * *

This method will be called in response to TransformSignal.doTransform(). * * @param engine the Engine object describing the * dimensions and properties of the space to be painted. * @param xform the Transform to apply. * The subscriber must not modify the original Transform it * receives! Subscibers may, however, copy and modify the * Transform(s) they pass to internal substructures. */ public void doTransform(Engine engine, Transform xform) { if(doMarkers.isSelected()) { if(doMeasureAll.isSelected()) { KGroup subgroup = makeMageMeasures(trackedPoints); subgroup.doTransform(engine, xform); } else { KList marks = makeNormalMarkers(trackedPoints, 2); marks.doTransform(engine, xform); } } } //}}} //{{{ overpaintCanvas //################################################################################################## /** * Called by KinCanvas after all kinemage painting is complete, * this gives the tools a chance to write additional info * (e.g., point IDs) to the graphics area. * @param painter the Painter that can paint on the current canvas */ public void overpaintCanvas(Painter painter) { Engine engine = kCanvas.getEngine(); if(engine == null) return; Dimension size = kCanvas.getCanvasSize(); painter.setFont(engine.labelFont); Color fontColor = (engine.whiteBackground ? Color.black : Color.white); int ascent = painter.getLabelAscent("X"); int descent = painter.getLabelDescent("X"); int vOffset1 = ascent + 4; // just down from the top int vOffset2 = size.height - descent - 4; // just up from the bottom int vOffset3 = vOffset2 - (ascent + descent + 4); // just above that int hOffset1 = 4; // left side int hOffset2 = size.width/2 + 4; // the middle // Display aspect name Aspect a = kCanvas.getCurrentAspect(); if(a != null) setAspect(a.getName()); else setAspect(null); if(aspect != null) painter.paintLabel(fontColor, aspect, hOffset1, vOffset1, 0); if(coords != null && doXYZ.isSelected()) painter.paintLabel(fontColor, coords, hOffset2, vOffset1, 0); if(pointID != null) { int lblWidth = painter.getLabelWidth(pointID); // pointID is bumped up one line if it's really long if(hOffset1 + lblWidth >= hOffset2) { painter.paintLabel(fontColor, pointID, hOffset1, vOffset3, 0); if(hOffset1 + lblWidth >= size.width) // REALLY long: print to std out SoftLog.out.println(pointID); } else painter.paintLabel(fontColor, pointID, hOffset1, vOffset2, 0); } if(distance != null) painter.paintLabel(fontColor, distance, hOffset2, vOffset2, 0); } //}}} //{{{ setID/Dist/Aspect/Coords //################################################################################################## /** Bottom left label */ public void setID(String s) { pointID = s; } /** Bottom center label */ public void setDist(String s) { distance = s; } /** Top left label -- no one can change this */ private void setAspect(String s) { aspect = s; } /** Top center label */ public void setCoords(String s) { coords = s; if(coords != null && doXYZ.isSelected()) System.err.println(coords); } //}}} }//class king-2.21.120420/king/src/king/PointFinder.java0000644000000000000000000002552111531212654017353 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; //import java.io.*; //import java.text.*; import java.util.*; import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * PointFinder is responsible for the Edit | Find dialog. * *

Begun on Fri Jun 14 21:19:49 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class PointFinder implements WindowListener { //{{{ Static fields static final String WHOLE_WORDS = "Whole words"; static final String SUBSTRINGS = "Substrings"; static final String SIMPLE_REGEX = "Globs: ?=1, *=any"; static final String PERL_REGEX = "Perl5 regex"; static final String[] SEARCH_TYPES = { WHOLE_WORDS, SUBSTRINGS, SIMPLE_REGEX, PERL_REGEX }; //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JDialog dialog; JTextField searchField; JComboBox searchType; JCheckBox caseSensitive; JCheckBox centerOnFound; KIterator ptIter; Collection query; //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public PointFinder(KingMain kmain) { kMain = kmain; dialog = new JDialog(kMain.getTopWindow(), "Find point", true); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.addWindowListener(this); // Layout setup GridBagLayout gbl = new GridBagLayout(); GridBagConstraints gbc = new GridBagConstraints(); gbc.gridwidth = gbc.gridheight = 1; gbc.fill = gbc.NONE; gbc.ipadx = gbc.ipady = 0; gbc.insets = new Insets(4,4,4,4); gbc.anchor = gbc.CENTER; gbc.weightx = gbc.weighty = 0.0; // Search pane construction Container searchPane = dialog.getContentPane(); searchPane.setLayout(gbl); ReflectiveAction searchAction = new ReflectiveAction("Search", null, this, "onSearch"); ReflectiveAction closeAction = new ReflectiveAction("Close", null, this, "onClose"); JButton btnClose = new JButton(closeAction); closeAction.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0)); closeAction.bindWindow(btnClose); searchField = new JTextField(20); searchField.addActionListener(searchAction); gbc.gridx = 0; gbc.gridy = 0; gbc.gridwidth = 2; gbl.setConstraints(searchField, gbc); searchPane.add(searchField); searchType = new JComboBox(SEARCH_TYPES); searchType.setEditable(false); gbc.gridx = 1; gbc.gridy = 1; gbc.gridwidth = 1; gbl.setConstraints(searchType, gbc); searchPane.add(searchType); caseSensitive = new JCheckBox("Case sensitive", false); gbc.gridx = 0; gbc.gridy = 1; gbc.gridwidth = 1; gbl.setConstraints(caseSensitive, gbc); searchPane.add(caseSensitive); centerOnFound = new JCheckBox("Go to found point (re-center)", true); gbc.gridx = 0; gbc.gridy = 2; gbc.gridwidth = 2; gbc.anchor = gbc.WEST; gbl.setConstraints(centerOnFound, gbc); searchPane.add(centerOnFound); gbc.anchor = gbc.CENTER; Box box = Box.createHorizontalBox(); box.add(new JButton(searchAction)); box.add(Box.createRigidArea(new Dimension(16,0))); box.add(btnClose); gbc.gridx = 0; gbc.gridy = 3; gbc.gridwidth = 2; gbl.setConstraints(box, gbc); searchPane.add(box); clearSearch(); } //}}} //{{{ show, onSearch, onClose //################################################################################################## public void show() { dialog.pack(); dialog.setLocationRelativeTo(kMain.getTopWindow()); searchField.selectAll(); searchField.requestFocus(); // may not take effect since dlg isn't visible? dialog.setVisible(true); // remember, execution of this thread stops here until dialog is closed } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSearch(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; Object mode = searchType.getSelectedItem(); ArrayList newQuery = new ArrayList(); String token; Matcher search; // For whole words & substrings, quote metacharacters with backslashes // Things to quote: \ ^ $ . [ ] ( ) | * + ? { } Matcher protector = Pattern.compile("([\\\\\\^\\$\\.\\[\\]\\(\\)\\|\\*\\+\\?\\{\\}])").matcher(""); // For "simple regex" searches \ ^ $ . [ ] ( ) | + { } Matcher simpleProtector = Pattern.compile("([\\\\\\^\\$\\.\\[\\]\\(\\)\\|\\+\\{\\}])").matcher(""); Matcher simpleRenamer = Pattern.compile("([\\*])").matcher(""); int cflags = ( caseSensitive.isSelected() ? 0 : Pattern.CASE_INSENSITIVE ); if(mode == WHOLE_WORDS) { try { StringTokenizer st = new StringTokenizer(searchField.getText()); while(st.hasMoreTokens()) { protector.reset(st.nextToken()); token = protector.replaceAll("\\$1"); //search = new RE(".*\\b"+token+"\\b.*", cflags); search = Pattern.compile("(?:.*[ ,;:])?"+token+"(?:[ ,;:].*)?", cflags).matcher(""); //System.err.println("Search term: "+search); newQuery.add(search); } } catch(PatternSyntaxException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "The string you entered was not a valid regular expression.\n"+ex.getMessage(), "Regex error", JOptionPane.ERROR_MESSAGE); } } else if(mode == SUBSTRINGS) { try { StringTokenizer st = new StringTokenizer(searchField.getText()); while(st.hasMoreTokens()) { protector.reset(st.nextToken()); token = protector.replaceAll("\\$1"); search = Pattern.compile(".*"+token+".*", cflags).matcher(""); newQuery.add(search); } } catch(PatternSyntaxException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "The string you entered was not a valid regular expression.\n"+ex.getMessage(), "Regex error", JOptionPane.ERROR_MESSAGE); } } else if(mode == SIMPLE_REGEX) { try { // Rewrite most special chars; rewrite * and ? as .* and . token = searchField.getText(); simpleProtector.reset(token); token = simpleProtector.replaceAll("\\$1"); simpleProtector.reset(token); token = simpleRenamer.replaceAll(".$1"); token = token.replace('?', '.'); search = Pattern.compile(".*"+token+".*", cflags).matcher(""); newQuery.add(search); } catch(PatternSyntaxException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "The string you entered was not a valid regular expression.\n"+ex.getMessage(), "Regex error", JOptionPane.ERROR_MESSAGE); } } else if(mode == PERL_REGEX) { try { search = Pattern.compile(".*"+searchField.getText()+".*", cflags).matcher(""); newQuery.add(search); } catch(PatternSyntaxException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "The string you entered was not a valid regular expression.\n"+ex.getMessage(), "Regex error", JOptionPane.ERROR_MESSAGE); } } else {return;} // Using dispose() instead of setVisible(false) prevents redraw and focus problems dialog.dispose(); query = newQuery; ptIter = KIterator.visiblePoints(kin); findNext(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onClose(ActionEvent ev) { // Using dispose() instead of setVisible(false) prevents redraw and focus problems dialog.dispose(); } //}}} //{{{ clearSearch, findNext //################################################################################################## /** Clears out the parameters used by the previous search */ public void clearSearch() { ptIter = null; query = null; } /** Centers on the next found point, or else returns false. */ public boolean findNext() { if(ptIter == null || query == null) return false; KPoint p; Matcher re; Matcher[] allREs = query.toArray(new Matcher[ query.size() ]); boolean matchesAll; Iterator reIter; try { while(ptIter.hasNext()) { p = ptIter.next(); matchesAll = p.isVisible() && !p.isUnpickable(); for(int i = 0; matchesAll && i < allREs.length; i++) { re = allREs[i]; re.reset(p.getName()); if(!re.matches()) { matchesAll = false; } }//for each regex if(matchesAll)//center on the found point { if(kMain.getView() != null) { ToolServices ts = kMain.getCanvas().getToolBox().services; ts.pick(p); if(centerOnFound.isSelected()) ts.centerOnPoint(p); } return true; }//if match }//for each point } catch(ConcurrentModificationException ex) { SoftLog.err.println("Find Next failed due to concurrent modification of the kinemage."); } return false; } //}}} //{{{ Window events //################################################################################################## public void windowActivated(WindowEvent ev) { searchField.requestFocus(); } public void windowClosed(WindowEvent ev) {} public void windowClosing(WindowEvent ev) {} public void windowDeactivated(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowOpened(WindowEvent ev) {} //}}} }//class king-2.21.120420/king/src/king/KingPrefs.java0000644000000000000000000003143611531212654017024 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; //import java.text.*; import java.util.*; import javax.swing.*; import driftwood.util.*; //}}} /** * KingPrefs holds information about the preferrences of * the user running this instance of KiNG. * For documentation of the available options, see resource/king/king_prefs. * *

Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. *
Begun on Fri Jun 21 09:10:40 EDT 2002 */ public class KingPrefs extends Props // implements ... { //{{{ Constants //################################################################################################## static final String PROPS_HEADER = "#\n"+ "# This file contains your customized settings for running KiNG.\n"+ "# Place this in your home directory, or in an applet's\n"+ "# tag.\n"+ "# KiNG must be restarted for changes to take effect.\n"+ "#\n"+ "# For more information on all the possible properties that can be set,\n"+ "# including some which cannot be accessed from the GUI,\n"+ "# see the sample .king_prefs in the doc/ folder of your KiNG distribution.\n"+ "#"; // store() adds a newline for us //}}} //{{{ Variable definitions //################################################################################################## /** Whether a newer version of KiNG is present on the server. */ volatile boolean newerVersionAvail = false; volatile URL remoteVersionURL = null; /** The local dir where the main jar file resides, or null for none. */ public File jarFileDirectory; /** The image icon to display on the corner of the window, in the task bar, etc. */ public Image windowIcon; /** The icon for animating in the reverse direction */ public Icon stepBackIcon; /** The icon for animating in the forward direction */ public Icon stepForwardIcon; /** The icon for move-up type actions */ public Icon moveUpIcon; /** The icon for move-down type actions */ public Icon moveDownIcon; /** An basic icon for down. Made by VBC for edensity menu */ public Icon basicDownIcon; /** The icon for add/new actions (paper+) */ public Icon addIcon; /** The icon for cut actions (scissors) */ public Icon cutIcon; /** The icon for copy actions (two pages) */ public Icon copyIcon; /** The icon for paste actions (clipboard) */ public Icon pasteIcon; /** The icon for delete actions (a trash can) */ public Icon deleteIcon; /** The icon for getting help */ public Icon helpIcon; /** The icon for returning to a previous HTML page */ public Icon htmlBackIcon; /** The icon for returning to the initial HTML page */ public Icon htmlHomeIcon; /** The icon for groups, etc. in the tree that are on */ public Icon treeOnIcon; /** The icon for groups, etc. in the tree that are off */ public Icon treeOffIcon; /** Icons for rotations, coded by Axis and Plus/Minus */ public Icon rotXpIcon, rotXmIcon, rotYpIcon, rotYmIcon, rotZpIcon, rotZmIcon; //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public KingPrefs(boolean isApplet) { super(); // Self-awareness if (!isApplet) jarFileDirectory = locateJarFile(); // Default settings Props defaults = new Props(); loadFromJar(defaults); this.setDefaults(defaults); // User settings loadFromFile(); //this.list(SoftLog.err); // Resources // Icon that's displayed in the corner of the main window windowIcon = new ImageIcon(getClass().getResource("images/kingicon20.png")).getImage(); stepBackIcon = new ImageIcon(getClass().getResource("images/StepBack16.gif")); stepForwardIcon = new ImageIcon(getClass().getResource("images/StepForward16.gif")); moveUpIcon = new ImageIcon(getClass().getResource("images/Up16.gif")); moveDownIcon = new ImageIcon(getClass().getResource("images/Down16.gif")); basicDownIcon = new ImageIcon(getClass().getResource("images/DownBasic.gif")); addIcon = new ImageIcon(getClass().getResource("images/Add16.gif")); cutIcon = new ImageIcon(getClass().getResource("images/Cut16.gif")); copyIcon = new ImageIcon(getClass().getResource("images/Copy16.gif")); pasteIcon = new ImageIcon(getClass().getResource("images/Paste16.gif")); deleteIcon = new ImageIcon(getClass().getResource("images/Delete16.gif")); helpIcon = new ImageIcon(getClass().getResource("images/Help16.gif")); htmlBackIcon = new ImageIcon(getClass().getResource("images/Back24.gif")); htmlHomeIcon = new ImageIcon(getClass().getResource("images/Home24.gif")); treeOnIcon = new ImageIcon(getClass().getResource("images/tree-on.png")); treeOffIcon = new ImageIcon(getClass().getResource("images/tree-off.png")); rotXpIcon = new ImageIcon(getClass().getResource("images/rotxp.png")); rotXmIcon = new ImageIcon(getClass().getResource("images/rotxm.png")); rotYpIcon = new ImageIcon(getClass().getResource("images/rotyp.png")); rotYmIcon = new ImageIcon(getClass().getResource("images/rotym.png")); rotZpIcon = new ImageIcon(getClass().getResource("images/rotzp.png")); rotZmIcon = new ImageIcon(getClass().getResource("images/rotzm.png")); } //}}} //{{{ locateJarFile //################################################################################################## /** * Calculates the current location in the local filesystem * of the JAR file that holds king/version.props * (presumbably, king.jar). * @return null if the JAR cannot be located or is not local */ File locateJarFile() { URL url = this.getClass().getResource("version.props"); File f = null; try { f = Strings.jarUrlToFile(url); if(!f.isDirectory()) f = f.getParentFile(); } catch(IllegalArgumentException ex) { ex.printStackTrace(SoftLog.err); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } catch(SecurityException ex) { ex.printStackTrace(SoftLog.err); } return f; } //}}} //{{{ loadFromJar, loadFromFile, loadFromURL //################################################################################################## /** Returns true on success, false on failure */ boolean loadFromJar(Properties loadInto) { try { /* Plugins aren't usually on the real classpath, so this isn't needed. * / // Defaults from JAR file: ClassLoader loader = this.getClass().getClassLoader(); Enumeration urls = loader.getResources("king/king_prefs"); // no leading slash while(urls.hasMoreElements()) { try { InputStream is = ((URL)urls.nextElement()).openStream(); loadInto.load(is); is.close(); } catch(IOException ex) { SoftLog.err.println("Preferences loading error: "+ex.getMessage()); } } /* Plugins aren't usually on the real classpath, so this isn't needed. */ // Single file code: InputStream is = this.getClass().getResourceAsStream("king_prefs"); loadInto.load(is); is.close(); is = this.getClass().getResourceAsStream("version.props"); loadInto.load(is); is.close(); is = this.getClass().getResourceAsStream("buildnum.props"); loadInto.load(is); is.close(); } catch(NullPointerException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); return false; } return true; } /** Returns true on success, false on failure */ public boolean loadFromFile() { try { // Home directory: .king_prefs File propfile = new File(System.getProperty("user.home") + System.getProperty("file.separator") + ".king_prefs"); if(propfile.exists()) { InputStream is = new BufferedInputStream(new FileInputStream(propfile)); this.load(is); is.close(); SoftLog.err.println("Loaded preferences from "+propfile.toString()); } } catch(NullPointerException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(SecurityException ex) { return false; } return true; } /** Returns true on success, false on failure */ public boolean loadFromURL(URL url) { try { // Defaults from JAR file: InputStream is = url.openStream(); this.load(is); is.close(); } catch(NullPointerException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(SecurityException ex) { ex.printStackTrace(SoftLog.err); return false; } return true; } //}}} //{{{ storeToFile //################################################################################################## /** Returns true on success, false on failure */ public boolean storeToFile() { this.minimizeDifferences(); // store only changes from the defaults try { // Home directory: .king_prefs File propfile = new File(System.getProperty("user.home") + System.getProperty("file.separator") + ".king_prefs"); PrintStream os = new PrintStream(new BufferedOutputStream(new FileOutputStream(propfile))); os.println(PROPS_HEADER); this.store(os, ""); os.close(); SoftLog.err.println("Stored preferences to "+propfile.toString()); } catch(NullPointerException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(IOException ex) { ex.printStackTrace(SoftLog.err); return false; } catch(SecurityException ex) { return false; } return true; } //}}} //{{{ checkVersion, newerVersionAvailable //################################################################################################## /** Retrieves a properties file from the given URL and compares version numbers. */ public void checkVersion(URL propsURL, long timeoutMillis) { remoteVersionURL = propsURL; Thread checkThread = new Thread(new ReflectiveRunnable(this, "checkVersionBackground")); checkThread.start(); // NOT run()! start() spawns a new thread; run() would just do the action from here! // If the URL hasn't connected in time, we leave it running and return to our business. try { checkThread.join(timeoutMillis); } catch(InterruptedException ex) {} } /** Do not call this directly! A target of reflection. */ public void checkVersionBackground() { if(remoteVersionURL == null) return; Props remote = new Props(); try { InputStream is = remoteVersionURL.openStream(); remote.load(is); is.close(); } //catch(NullPointerException ex) { ex.printStackTrace(SoftLog.err); return; } //catch(IOException ex) { ex.printStackTrace(SoftLog.err); return; } //catch(SecurityException ex) { ex.printStackTrace(SoftLog.err); return; } catch(Exception ex) { SoftLog.err.println("Unable to check for new version: "+ex.getMessage()); SoftLog.err.println("You can disable version checking under Edit | Configure."); return; } String ourVer = this.getString("version"); String newVer = remote.getString("version", null); if(newVer != null && Strings.compareVersions(ourVer, newVer) < 0) this.newerVersionAvail = true; // volatile } public boolean newerVersionAvailable() { return newerVersionAvail; } //}}} //{{{ empty //################################################################################################## //}}} }//class king-2.21.120420/king/src/king/KinTree.java0000644000000000000000000007461111531212654016477 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import java.awt.*; import java.awt.event.*; //import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; import javax.swing.*; import javax.swing.tree.*; //import gnu.regexp.*; import driftwood.gui.*; import driftwood.util.*; //}}} /** * KinTree is the kinemage-browsing tree component used for group-level editing. * One day this should be refactored to yield a reusable tree component for tools, etc. * *

Begun on Sun Jun 30 20:20:49 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class KinTree implements KMessage.Subscriber { //{{{ Static fields //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JFrame frame; JTree tree; JPopupMenu menu; GroupEditor groupEditor; ReflectiveAction acNew, acDelete, acProperties, acTransform, acVisible, acCut, acCopy, acPaste, acUp, acDown; AGE clipboard = null; // destination for cut/paste events int clipboardDepth = -1; // previous getDepth() value for cut object //}}} //{{{ Constructors //################################################################################################## /** * Constructor */ public KinTree(KingMain kmain) { kMain = kmain; tree = new JTree(new KinTreeModel(new Kinemage())); // otherwise we get a "sample" TreeModel tree.setRootVisible(false); tree.getSelectionModel().setSelectionMode(TreeSelectionModel.SINGLE_TREE_SELECTION); tree.setEditable(false); tree.setShowsRootHandles(true); // This will eliminate the annoying menu/tree interactions // where Alt-X also selects an item beginning with 'X' tree.setUI(new NullTreeUI()); // Provides feedback on whether things are on or off tree.setCellRenderer(new OnOffRenderer()); // JTree doesn't get built-in drop support until Java 1.6, // so there's no mechanism for dropping nodes in a particular place. //tree.setDragEnabled(true); initActions(); buildMenu(); buildGUI(); groupEditor = new GroupEditor(kMain, frame); kMain.subscribe(this); } //}}} //{{{ initActions //################################################################################################## private void initActions() { KingPrefs prefs = kMain.getPrefs(); acNew = new ReflectiveAction("New (sub)group", prefs.addIcon, this, "onNewGroup"); acNew.setTooltip("Create a new group or subgroup below the highlighted one"); acNew.setMnemonic(KeyEvent.VK_N); acNew.setCommandKey("new"); acNew.setAccelerator(KeyEvent.VK_INSERT, 0); acNew.bind(tree); acDelete = new ReflectiveAction("Delete", prefs.deleteIcon, this, "onDelete"); acDelete.setTooltip("Discard the highlighted object from the hierarchy"); acDelete.setMnemonic(KeyEvent.VK_D); acDelete.setCommandKey("delete"); acDelete.setAccelerator(KeyEvent.VK_DELETE, 0); acDelete.bind(tree); acProperties = new ReflectiveAction("Properties", null, this, "onProperties"); acProperties.setTooltip("Edit properties associated with this object"); acProperties.setMnemonic(KeyEvent.VK_R); acProperties.setCommandKey("properties"); acProperties.setAccelerator(KeyEvent.VK_ENTER, 0); acProperties.bind(tree); acTransform = new ReflectiveAction("Transform", null, this, "onTransform"); acTransform.setTooltip("Rotate, translate, or scale the highlighted object"); acTransform.setMnemonic(KeyEvent.VK_T); acVisible = new ReflectiveAction("Show/Hide", null, this, "onToggleVisibility"); acVisible.setTooltip("Turn on (off) the button that controls this object"); acVisible.setMnemonic(KeyEvent.VK_S); acVisible.setCommandKey("toggle-visible"); acVisible.setAccelerator(KeyEvent.VK_SLASH, 0); acVisible.bind(tree); acCut = new ReflectiveAction("Cut", prefs.cutIcon, this, "onCut"); acCut.setTooltip("Extract this object so it can be re-inserted elsewhere"); acCut.setMnemonic(KeyEvent.VK_C); acCut.setCommandKey("cut"); acCut.setAccelerator(KeyEvent.VK_X, KingMain.MENU_ACCEL_MASK); acCut.bind(tree); acCopy = new ReflectiveAction("Copy", prefs.copyIcon, this, "onCopy"); acCopy.setTooltip("Duplicate this object and place it on the clipboard"); acCopy.setMnemonic(KeyEvent.VK_Y); acCopy.setCommandKey("copy"); acCopy.setAccelerator(KeyEvent.VK_C, KingMain.MENU_ACCEL_MASK); acCopy.bind(tree); acPaste = new ReflectiveAction("Paste", prefs.pasteIcon, this, "onPaste"); acPaste.setTooltip("Re-insert the last object that was Cut or Copied from the hierarchy"); acPaste.setMnemonic(KeyEvent.VK_P); acPaste.setCommandKey("paste"); acPaste.setAccelerator(KeyEvent.VK_V, KingMain.MENU_ACCEL_MASK); acPaste.bind(tree); acUp = new ReflectiveAction("Move up", prefs.moveUpIcon, this, "onUp"); acUp.setTooltip("Move this object toward the top of the list of its peers"); acUp.setMnemonic(KeyEvent.VK_U); acUp.setCommandKey("up"); acUp.setAccelerator(KeyEvent.VK_UP, KingMain.MENU_ACCEL_MASK); acUp.bind(tree); acDown = new ReflectiveAction("Move down", prefs.moveDownIcon, this, "onDown"); acDown.setTooltip("Move this object toward the bottom of the list of its peers"); acDown.setMnemonic(KeyEvent.VK_O); acDown.setCommandKey("down"); acDown.setAccelerator(KeyEvent.VK_DOWN, KingMain.MENU_ACCEL_MASK); acDown.bind(tree); } //}}} //{{{ buildMenu //################################################################################################## private void buildMenu() { menu = new JPopupMenu(); menu.setInvoker(this.getTree()); JMenuItem mNew = new JMenuItem(acNew); JMenuItem mDelete = new JMenuItem(acDelete); JMenuItem mProperties = new JMenuItem(acProperties); JMenuItem mTransform = new JMenuItem(acTransform); JMenuItem mVisible = new JMenuItem(acVisible); JMenuItem mCut = new JMenuItem(acCut); JMenuItem mCopy = new JMenuItem(acCopy); JMenuItem mPaste = new JMenuItem(acPaste); JMenuItem mUp = new JMenuItem(acUp); JMenuItem mDown = new JMenuItem(acDown); // assemble menu here! menu.add(mVisible); menu.add(mProperties); menu.addSeparator(); menu.add(mCut); menu.add(mCopy); menu.add(mPaste); menu.add(mDelete); } //}}} //{{{ buildGUI //################################################################################################## private void buildGUI() { frame = new JFrame(); frame = new JFrame("Hierarchy window"); frame.setDefaultCloseOperation(JFrame.HIDE_ON_CLOSE); frame.setIconImage(kMain.getPrefs().windowIcon); Container content = frame.getContentPane(); content.setLayout(new BorderLayout()); JScrollPane treeScroll = new JScrollPane(this.getTree()); Dimension dim = treeScroll.getPreferredSize(); dim.width = 300; treeScroll.setPreferredSize(dim); content.add(treeScroll, BorderLayout.CENTER); JButton btnNew = new JButton(acNew); btnNew.setHorizontalAlignment(SwingConstants.LEFT); JButton btnCut = new JButton(acCut); btnCut.setHorizontalAlignment(SwingConstants.LEFT); JButton btnCopy = new JButton(acCopy); btnCopy.setHorizontalAlignment(SwingConstants.LEFT); JButton btnPaste = new JButton(acPaste); btnPaste.setHorizontalAlignment(SwingConstants.LEFT); JButton btnUp = new JButton(acUp); btnUp.setHorizontalAlignment(SwingConstants.LEFT); JButton btnDown = new JButton(acDown); btnDown.setHorizontalAlignment(SwingConstants.LEFT); JButton btnDelete = new JButton(acDelete); btnDelete.setHorizontalAlignment(SwingConstants.LEFT); JButton btnVisible = new JButton(acVisible); btnVisible.setHorizontalAlignment(SwingConstants.LEFT); JButton btnProperties = new JButton(acProperties); btnProperties.setHorizontalAlignment(SwingConstants.LEFT); JButton btnTransform = new JButton(acTransform); btnTransform.setHorizontalAlignment(SwingConstants.LEFT); // Key bindings: just type the key to execute -- DAK 090929 InputMap im = frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0 ), "hide"); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_W, KingMain.MENU_ACCEL_MASK), "hide"); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_BACK_SPACE, 0 ), "delete"); ActionMap am = frame.getRootPane().getActionMap(); am.put("hide", new ReflectiveAction(null, null, this, "onHide")); am.put("delete", new ReflectiveAction(null, null, this, "onDelete")); TablePane2 lBtns = new TablePane2(); lBtns.weights(1,0).center().hfill(true).memorize(); lBtns.addCell(btnVisible).newRow(); lBtns.addCell(btnProperties).newRow(); lBtns.addCell(btnTransform).newRow(); lBtns.addCell(lBtns.strut(0,16)).newRow(); lBtns.addCell(btnNew).newRow(); lBtns.addCell(btnCut).newRow(); lBtns.addCell(btnCopy).newRow(); lBtns.addCell(btnPaste).newRow(); lBtns.addCell(btnUp).newRow(); lBtns.addCell(btnDown).newRow(); lBtns.addCell(lBtns.strut(0,16)).newRow(); lBtns.addCell(btnDelete).newRow(); content.add(lBtns, BorderLayout.WEST); /*TablePane rBtns = new TablePane(); rBtns.weights(1,0).center().hfill(true); rBtns.addCell(btnVisible).newRow(); rBtns.addCell(btnProperties).newRow(); rBtns.addCell(btnTransform).newRow(); content.add(rBtns, BorderLayout.EAST);*/ frame.pack(); } //}}} //{{{ show, hide, onHide //################################################################################################## public void show() { if(!frame.isVisible()) { //Window w = kMain.getTopWindow(); //if(w != null) frame.setLocationRelativeTo(w); frame.setLocationRelativeTo(kMain.getTopWindow()); // OK if it's null frame.setVisible(true); } else { frame.toFront(); } } public void hide() { frame.dispose(); } // DAK 090929 // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onHide(ActionEvent ev) { frame.dispose(); } //}}} //{{{ reveal, getTreePath //################################################################################################## /** Makes sure the given AGE is visible in the tree window */ public void reveal(AGE target) { TreePath path = getTreePath(target); tree.scrollPathToVisible(path); tree.setSelectionPath(path); } private TreePath getTreePath(AGE leaf) { AGE parent = leaf.getParent(); if(parent == null) return new TreePath(leaf); else return getTreePath(parent).pathByAddingChild(leaf); } //}}} //{{{ deliverMessage, getTree //################################################################################################## static final long RELOAD_TREE_P = KMessage.KIN_SWITCHED | KMessage.KIN_CLOSED | KMessage.ALL_CLOSED; static final int RELOAD_TREE_K = AHE.CHANGE_TREE_PROPERTIES | AHE.CHANGE_TREE_ON_OFF; public void deliverMessage(KMessage msg) { if(msg.testProg(RELOAD_TREE_P)) { Kinemage k = kMain.getKinemage(); if(k == null) { tree.setModel( new KinTreeModel(new Kinemage()) ); tree.setRootVisible(false); } else { tree.setModel( new KinTreeModel(k) ); tree.setRootVisible(true); } } else if(msg.testKin(AHE.CHANGE_TREE_CONTENTS)) { TreeModel m = tree.getModel(); if(m instanceof KinTreeModel) { // It's hard for us to tell which part(s) of the kinemage tree // changed, but JTree wipes out all selection and expandedness // information when we send treeStructureChanged(). // So we go through all this to save and restore that info. TreePath selPath = tree.getSelectionPath(); int[] selRow = tree.getSelectionRows(); Collection vis = KinTreeModel.memorizeVisibility(tree); ((KinTreeModel)m).kinChanged(true); KinTreeModel.restoreVisibility(tree, vis); // Select the same node as before, if it's still there if(selPath != null && tree.getRowForPath(selPath) != -1) tree.setSelectionPath(selPath); // Else select same row(s) as before, whether that's a parent, sibling, or other else if(selRow != null) tree.setSelectionRows(selRow); // Select same row(s) as before, whether that's a parent, sibling, or other //if(sel != null) tree.setSelectionRows(sel); //tree.setSelectionPath(sel); // For cases where we removed a node from the tree, select its parent //if(sel != null && tree.getRowForPath(sel) == -1) // tree.setSelectionPath(sel.getParentPath()); } } else if(msg.testKin(RELOAD_TREE_K)) { TreeModel m = tree.getModel(); if(m instanceof KinTreeModel) ((KinTreeModel)m).kinChanged(false); } // The combination of these two calls ensures that // the tree is displaying what the model currently holds. tree.treeDidChange(); // == revalidate(); repaint(); //tree.revalidate(); } public JTree getTree() { return tree; } //}}} //{{{ onToggleVisibility //################################################################################################## /** Turns the selected group/subgroup/list on or off, regardless of whether it has a button accessible. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onToggleVisibility(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; Object node = path.getLastPathComponent(); if(node == null || ! (node instanceof AGE)) return; AGE ag = (AGE)node; ag.setOn(!ag.isOn()); } //}}} //{{{ onProperties //################################################################################################## public void onProperties(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; Object node = path.getLastPathComponent(); if(node == null || ! (node instanceof AGE)) return; boolean changed = false; if(node instanceof Kinemage) { changed = groupEditor.editKinemage((Kinemage)node); } else if(node instanceof KGroup) { KGroup group = (KGroup) node; if(group.getDepth() == 1) changed = groupEditor.editGroup(group); else changed = groupEditor.editSubgroup(group); } else if(node instanceof KList) { changed = groupEditor.editList((KList)node); } else { JOptionPane.showMessageDialog(frame, "You can't edit this object's properties.", "Sorry!", JOptionPane.INFORMATION_MESSAGE); } } //}}} //{{{ onTransform //################################################################################################## /** Allows one to translate, rotate, and scale all points beneath the selected group/list. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTransform(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; Object node = path.getLastPathComponent(); if(node == null || ! (node instanceof AGE)) return; groupEditor.transform((AGE)node); } //}}} //{{{ onDelete //################################################################################################## /** Deletes the selected group/subgroup/list completely, removing it from the kinemage */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDelete(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; AGE node = (AGE)path.getLastPathComponent(); if(node == null) return; if(node instanceof Kinemage) { if(JOptionPane.showConfirmDialog(frame, "Really close the current kinemage?", "Confirm delete", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) { kMain.getStable().closeCurrent(); } return; } AGE parent = node.getParent(); if(parent != null) { if(!kMain.prefs.getBoolean("treeConfirmDelete") || JOptionPane.showConfirmDialog(frame, "Really delete the selected item, '"+node.toString()+"'?", "Confirm delete", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) { parent.remove(node); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } } } //}}} //{{{ onCut //################################################################################################## /** Deletes the selected group/subgroup/list from the kinemage, saving it for the next paste command. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onCut(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; AGE node = (AGE) path.getLastPathComponent(); if(node == null || node instanceof Kinemage) return; AGE parent = node.getParent(); if(parent != null) { if(clipboard == null || JOptionPane.showConfirmDialog(frame, "An unpasted item is still in the clipboard -- discard it?", "Confirm delete", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) { clipboard = node; clipboardDepth = clipboard.getDepth(); parent.remove(node); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } } } //}}} //{{{ onPaste //################################################################################################## /** Places the previously cut group/whatever into the currently selected group. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onPaste(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; AGE insert = (AGE) path.getLastPathComponent(); if(insert == null) return; int insertDepth = insert.getDepth(); if(clipboard == null) failPaste(); else if(insert instanceof Kinemage && clipboard instanceof Kinemage) { ((Kinemage)insert).appendKinemage((Kinemage)clipboard); clipboard = null; } else if(insertDepth <= clipboardDepth - 1) // insert under { while(insertDepth < clipboardDepth - 1) // insert WAY under { KGroup newGroup = new KGroup("new"); newGroup.setHasButton(false); insert.add(newGroup); insert = newGroup; insertDepth++; path = path.pathByAddingChild(newGroup); } // insert directly under insert.add(clipboard); tree.setSelectionPath(path.pathByAddingChild(clipboard)); clipboard = null; } else if(insertDepth == clipboardDepth) // merge or insert after { if(!kMain.prefs.getBoolean("treeConfirmMerge") || JOptionPane.showConfirmDialog(frame, "Merge these two?", "Confirm merge", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) { for(Object child : clipboard) insert.add((AHE)child); clipboard = null; } else // insert after { AGE parent = insert.getParent(); ArrayList children = parent.getChildren(); int pos = children.indexOf(insert); children.add(pos+1, clipboard); clipboard.setParent(parent); parent.fireKinChanged(AHE.CHANGE_TREE_CONTENTS); tree.setSelectionPath(path.getParentPath().pathByAddingChild(clipboard)); clipboard = null; } } else failPaste(); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } void failPaste() { String msg = "You can't paste that here.\nPut it higher up in the hierarchy."; if(clipboard == null) msg = "Nothing on the clipboard to paste!"; JOptionPane.showMessageDialog(frame, msg, "Sorry!", JOptionPane.ERROR_MESSAGE); } //}}} //{{{ onCopy //################################################################################################## /** Duplicates the selected group/subgroup/list from the kinemage, saving it for the next paste command. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onCopy(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; AGE node = (AGE)path.getLastPathComponent(); if(node == null) return; if(clipboard == null || JOptionPane.showConfirmDialog(frame, "An unpasted item is still in the clipboard -- discard it?", "Confirm delete", JOptionPane.YES_NO_OPTION, JOptionPane.WARNING_MESSAGE) == JOptionPane.YES_OPTION) { try { clipboard = node.clone(); clipboardDepth = clipboard.getDepth(); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } catch(CloneNotSupportedException ex) { ex.printStackTrace(SoftLog.err); } catch(ClassCastException ex) { ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ onUp, onDown //################################################################################################## /** Moves the selected group/subgroup/list "up" the list of buttons. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUp(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; AGE node = (AGE)path.getLastPathComponent(); if(node == null) return; AGE parent = node.getParent(); if(parent == null) return; ArrayList children = parent.getChildren(); int i = children.indexOf(node); if(i == -1 || i == 0) return; children.remove(i); children.add(i-1, node); parent.fireKinChanged(AHE.CHANGE_TREE_CONTENTS); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } /** Moves the selected group/subgroup/list "down" the list of buttons. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDown(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; AGE node = (AGE)path.getLastPathComponent(); if(node == null) return; AGE parent = node.getParent(); if(parent == null) return; ArrayList children = parent.getChildren(); int i = children.indexOf(node); if(i == -1 || i == children.size()-1) return; children.remove(i); children.add(i+1, node); parent.fireKinChanged(AHE.CHANGE_TREE_CONTENTS); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } //}}} //{{{ onNewGroup //################################################################################################## /** Places a new, empty group into the currently selected group. */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onNewGroup(ActionEvent ev) { TreePath path = tree.getSelectionPath(); if(path == null) return; AGE node = (AGE)path.getLastPathComponent(); if(node == null) return; if(node instanceof Kinemage) { KGroup group = new KGroup("New group"); ((Kinemage)node).add(group); tree.setSelectionPath(path.pathByAddingChild(group)); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } else if(node instanceof KGroup && node.getDepth() == 1) { KGroup subgroup = new KGroup("New subgroup"); ((KGroup)node).add(subgroup); tree.setSelectionPath(path.pathByAddingChild(subgroup)); Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); } else { JOptionPane.showMessageDialog(frame, "You can't create a group/subgroup here.\nSelect the kinemage or a group and try again.", "Sorry!", JOptionPane.INFORMATION_MESSAGE); } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ INNER CLASS: OnOffRenderer //################################################################################################## class OnOffRenderer extends DefaultTreeCellRenderer { public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) { Component renderer = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); TreePath path = tree.getPathForRow(row); if(path != null) { Object node = path.getLastPathComponent(); if(node != null && node instanceof AGE) { AGE age = (AGE) node; if(age.isOn()) this.setIcon(kMain.getPrefs().treeOnIcon); else this.setIcon(kMain.getPrefs().treeOffIcon); } } return renderer; } } //}}} //{{{ INNER CLASS: NullTreeUI //################################################################################################## //### NullTreeUI ################################################################################## //################################################################################################## /** * Avoids selecting tree items by letter when using menu mnemonic keys. * Ignores all normal key presses, but navigation is handled through * InputMap/ActionMap, so we don't have any problems. * * See http://forum.java.sun.com/thread.jsp?forum=57&thread=242078 */ class NullTreeUI extends javax.swing.plaf.basic.BasicTreeUI { protected KeyListener createKeyListener() { return new NullKeyHandler(); } protected MouseListener createMouseListener() { return new PopupMouseHandler(); } /** A key handler that doesn't highlight things based on letters typed */ class NullKeyHandler extends javax.swing.plaf.basic.BasicTreeUI.KeyHandler { public void keyTyped(KeyEvent ev) { // This would ignore only Ctrl/Alt + keypress //if((ev.getModifiers() & (KeyEvent.ALT_MASK|KeyEvent.CTRL_MASK)) == 0) super.keyTyped(ev); } } /** A mouse handler that can do menu popup on RMB and Edit Properties on double click */ class PopupMouseHandler extends javax.swing.plaf.basic.BasicTreeUI.MouseHandler { public void mouseClicked(MouseEvent ev) { // I can't seem to prevent double click // from expanding / collapsing the tree. if(ev.getClickCount() == 2) KinTree.this.onProperties(null); else super.mouseClicked(ev); } public void mousePressed(MouseEvent ev) { if(ev.isPopupTrigger()) { MouseEvent fakeout = new MouseEvent(ev.getComponent(), ev.getID(), ev.getWhen(), ev.getModifiers() | MouseEvent.BUTTON1_MASK, ev.getX(), ev.getY(), ev.getClickCount(), true); // We have to fake that this is a LMB event in // order for the tree to make a selection! super.mousePressed(fakeout); menu.show(ev.getComponent(), ev.getX(), ev.getY()); } else super.mousePressed(ev); } } }//class(NullTreeUI) //}}} }//class king-2.21.120420/king/src/king/KinfileIO.java0000644000000000000000000006162711677352606016767 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king; import king.core.*; import king.io.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.util.*; //}}} /** * KinfileIO is a uniform front-end for normal * reading and writing of kinemage files. It handles tracking * of file name and current directory, file name mangling, etc. * * It also allows files to be opened in a background thread * while a progress bar is displayed, thus enhancing the user experience. * *

Copyright (C) 2003-2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Apr 10 14:38:35 EDT 2003 */ public class KinfileIO implements KinfileLoader.Listener, ListSelectionListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; JFileChooser fileOpenChooser = null; // stays null if we're in an Applet JFileChooser fileSaveChooser = null; // stays null if we're in an Applet File lastOpenedFile = null; File lastSavedFile = null; JDialog urlchooser = null; JList urlList = null; JTextField urlField = null; boolean urlChooserOK = false; JDialog progDialog = null; JProgressBar progBar = null; // These are necessary to make the callback mechanism work, // but we have to be very careful of memory leaks! String fName = null; Kinemage mergeTarget = null; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public KinfileIO(KingMain kmain) { kMain = kmain; initFileChooser(); initURLChooser(); initProgressDialog(); } //}}} //{{{ initFileChooser //################################################################################################## private void initFileChooser() { // Will throw an exception if we're running as an Applet try { SuffixFileFilter fileFilter = new SuffixFileFilter("Kinemage files (*.kin)"); // New suffixes: fileFilter.addSuffix(".kin"); fileFilter.addSuffix(".kin.gz"); // compressed with gzip fileFilter.addSuffix(".kinz"); // compressed with gzip // Old suffixes: fileFilter.addSuffix(".kip"); fileFilter.addSuffix(".kip1"); fileFilter.addSuffix(".kip2"); fileFilter.addSuffix(".kip3"); fileFilter.addSuffix(".kip4"); fileFilter.addSuffix(".kip5"); fileFilter.addSuffix(".kip6"); fileFilter.addSuffix(".kip7"); fileFilter.addSuffix(".kip8"); fileFilter.addSuffix(".kip9"); fileOpenChooser = new JFileChooser(); fileOpenChooser.addChoosableFileFilter(fileFilter); fileOpenChooser.setFileFilter(fileFilter); fileSaveChooser = new JFileChooser(); fileSaveChooser.addChoosableFileFilter(fileFilter); fileSaveChooser.setFileFilter(fileFilter); String currdir = System.getProperty("user.dir"); if(currdir != null) { fileOpenChooser.setCurrentDirectory(new File(currdir)); fileSaveChooser.setCurrentDirectory(new File(currdir)); } } catch(SecurityException ex) {} // Temporary fix for Java 6 bug # 6570445: JFileChooser in unsigned applet catch(java.lang.ExceptionInInitializerError ex) { if(!(ex.getCause() instanceof java.security.AccessControlException)) throw ex; } // Subsequent attempts to create JFileChooser cause NoClassDefFound catch(java.lang.NoClassDefFoundError ex) {} } //}}} //{{{ initURLChooser //################################################################################################## void initURLChooser() { // Make actual URL chooser urlList = new FatJList(150, 12); JApplet applet = kMain.getApplet(); if(applet != null) { String kins = applet.getParameter("kinfileList"); if(kins != null) { String[] kinlist = Strings.explode(kins, ' '); //for (String kinname : kinlist) SoftLog.err.println(kinname); urlList.setListData(kinlist); //urlList = new FatJList(150, 12); } } urlList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); urlList.addListSelectionListener(this); JScrollPane listScroll = new JScrollPane(urlList); // Make an (editable) URL line urlField = new JTextField(20); // Make the command buttons JButton btnOK = new JButton(new ReflectiveAction("OK", null, this, "onUrlOk")); JButton btnCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onUrlCancel")); // Put it all together in a content pane TablePane2 cp = new TablePane2(); cp.center().middle().insets(6).memorize(); cp.addCell(listScroll,2,1); cp.newRow(); cp.weights(0,1).addCell(new JLabel("URL:")).hfill(true).addCell(urlField); cp.newRow().startSubtable(2,1).center().insets(1,4,1,4).memorize(); cp.addCell(btnOK).addCell(btnCancel).endSubtable(); urlchooser = new JDialog(kMain.getTopWindow(), "Kinemage URLs", true); urlchooser.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); urlchooser.setContentPane(cp); urlchooser.pack(); urlchooser.setLocationRelativeTo(kMain.getTopWindow()); } //}}} //{{{ initProgressDialog //################################################################################################## private void initProgressDialog() { // Build the progress display dialog... progBar = new JProgressBar(); progBar.setStringPainted(true); // shows % complete progBar.setBorder(BorderFactory.createEmptyBorder(6,6,6,6)); // If this isn't included, progDialog doesn't paint (bug in Java 1.4.0) (reported) JLabel labelNote = new JLabel("Loading kinemage(s)..."); labelNote.setHorizontalAlignment(JLabel.CENTER); labelNote.setBorder(BorderFactory.createEmptyBorder(6,6,6,6)); progDialog = new JDialog(kMain.getTopWindow(), "", true); // true => modal progDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); progDialog.getContentPane().add(progBar, BorderLayout.SOUTH); progDialog.getContentPane().add(labelNote, BorderLayout.NORTH); } //}}} //{{{ askLoadFile, loadFile //################################################################################################## /** * Asks the user to choose a kinemage file to load. * All the kinemages it contains will be added to the stable * or appended to the specified kinemage. * * This function MUST be called from the event-dispatch thread. * This function will not return until all the kinemages have * been loaded. * * @param kin the kinemage into which the opened kinemage(s) * should be merged, or null for them to stand alone. * @return true iff the user choose to open a file */ public boolean askLoadFile(Kinemage kin) { if(fileOpenChooser == null) return false; String currdir = System.getProperty("user.dir"); if(currdir != null) fileOpenChooser.setCurrentDirectory(new File(currdir)); if(fileOpenChooser.APPROVE_OPTION == fileOpenChooser.showOpenDialog(kMain.getTopWindow())) { File f = fileOpenChooser.getSelectedFile(); loadFile(f, kin); System.setProperty("user.dir", f.getAbsolutePath()); return true; } else return false; } /** Like askLoadFile, but it doesn't ask */ public void loadFile(File f, Kinemage kin) { try { fName = f.getName(); mergeTarget = kin; new KinfileLoader(new FileInputStream(f), this); // Only reset the filenames if we do a true open if(kin == null) { lastOpenedFile = f; lastSavedFile = null; } progBar.setMaximum((int)f.length()); progBar.setValue(0); progDialog.pack(); progDialog.setLocationRelativeTo(kMain.getTopWindow()); progDialog.setVisible(true); // Execution halts here until ioException() // or loadingComplete() closes the dialog. } catch(IOException ex) { loadingException(ex); } } //}}} //{{{ askLoadURL, onUrlCancel, onUrlOk //################################################################################################## /** * Asks the user to choose a kinemage file to load. * All the kinemages it contains will be added to the stable * or appended to the specified kinemage. * * This function MUST be called from the event-dispatch thread. * This function will not return until all the kinemages have * been loaded. * * @param kin the kinemage into which the opened kinemage(s) * should be merged, or null for them to stand alone. * @return true iff the user choose to open a file */ public boolean askLoadURL(Kinemage kin) { if(urlchooser == null) return false; // Always set the default URL to be the one in kinSource (if specified) try { URL kinURL = kMain.getAppletKinURL(); if(kinURL != null) urlField.setText(kinURL.toString()); } catch(MalformedURLException ex) {} urlchooser.setVisible(true); // execution halts until dialog is closed... if(urlChooserOK) { try { URL kinURL = new URL(urlField.getText()); loadURL(kinURL, kin); return true; } catch(MalformedURLException ex) { loadingException(ex); } } return false; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUrlCancel(ActionEvent ev) { urlChooserOK = false; urlchooser.setVisible(false); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUrlOk(ActionEvent ev) { urlChooserOK = true; urlchooser.setVisible(false); } //}}} //{{{ valueChanged //################################################################################################## /* Gets called when a new URL is picked from the list */ public void valueChanged(ListSelectionEvent ev) { Object o = urlList.getSelectedValue(); if(o == null) {} else { String name = o.toString(); urlField.setText("http://"+name); JApplet applet = kMain.getApplet(); if(applet != null) { try { URL kinURL = new URL(applet.getDocumentBase(), applet.getParameter("kinfileBase")+"/"+name); //SoftLog.err.println(applet.getParameter("kinfileBase")+"/"+name); urlField.setText(kinURL.toString()); } catch(MalformedURLException ex) { SoftLog.err.println(applet.getDocumentBase()); SoftLog.err.println(applet.getParameter("kinfileBase")); SoftLog.err.println(name); ex.printStackTrace(SoftLog.err); } } } } //}}} //{{{ loadURL, loadStream //################################################################################################## /** Like loadFile, but it takes a URL */ public void loadURL(URL url, Kinemage kin) { try { fName = url.getFile(); URLConnection uconn = url.openConnection(); uconn.setAllowUserInteraction(false); uconn.connect(); loadStream(uconn.getInputStream(), uconn.getContentLength(), kin); // Execution halts here until ioException() // or loadingComplete() closes the dialog. } catch(IOException ex) { loadingException(ex); } } /** For loading multiple URLs upon startup of a king applet (use with kinfileBase and kinfileList) **/ public void loadURLs(URL[] kinList) { //for(int i = 0; i < urlList.getModel().getSize(); i++) { // Object o = urlList.getModel().getElementAt(i)); // if(o == null) {} // else // { // String name = o.toString(); JApplet applet = kMain.getApplet(); if(applet != null) { try { //URL kinURL = new URL(applet.getDocumentBase(), applet.getParameter("kinfileBase")+"/"+name); //SoftLog.err.println(applet.getParameter("kinfileBase")+"/"+name); for (URL kinURL : kinList) { fName = kinURL.getFile(); URLConnection uconn = kinURL.openConnection(); uconn.setAllowUserInteraction(false); uconn.connect(); loadStream(uconn.getInputStream(), uconn.getContentLength(), null); // Execution halts here until ioException() // or loadingComplete() closes the dialog. } } catch(IOException ex) { loadingException(ex); } //catch(MalformedURLException ex) //{ // SoftLog.err.println(applet.getDocumentBase()); // SoftLog.err.println(applet.getParameter("kinfileBase")); // //SoftLog.err.println(name); // ex.printStackTrace(SoftLog.err); //} } } //} //} /** Like loadFile, but it takes an InputStream. */ public void loadStream(InputStream in, int dataLen, Kinemage kin) { mergeTarget = kin; new KinfileLoader(in, this); progBar.setMaximum(dataLen); progBar.setValue(0); progDialog.pack(); progDialog.setLocationRelativeTo(kMain.getTopWindow()); progDialog.setVisible(true); // Execution halts here until ioException() // or loadingComplete() closes the dialog. } //}}} //{{{ updateProgress //################################################################################################## /** * Messaged periodically as the parser reads the file. */ public void updateProgress(long charsRead) { progBar.setValue((int)charsRead); } //}}} //{{{ loadingException //################################################################################################## /** * Messaged if anything is thrown during the loading process. * This generally means loadingComplete() won't be called. */ public void loadingException(Throwable t) { progDialog.setVisible(false); t.printStackTrace(SoftLog.err); JOptionPane.showMessageDialog(kMain.getTopWindow(), "The file '"+fName+"'\ncould not be opened due to an exception:\n"+t.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); // Avoid memory leaks! mergeTarget = null; } //}}} //{{{ loadingComplete //################################################################################################## /** * Messaged if and when loading finished successfully. */ public void loadingComplete(KinfileParser parser) { for(Iterator kinIter = parser.getKinemages().iterator(); kinIter.hasNext(); ) { ((Kinemage)kinIter.next()).initAll(); } if(mergeTarget == null) { kMain.getStable().append(parser.getKinemages()); } else { for(Iterator kinIter = parser.getKinemages().iterator(); kinIter.hasNext(); ) { mergeTarget.appendKinemage((Kinemage)kinIter.next()); } } if(kMain.getTextWindow() != null) { kMain.getTextWindow().appendText(parser.getText()); } // Avoid memory leaks! mergeTarget = null; // Last step: close the dialog and let execution continue in the calling thread progDialog.setVisible(false); } //}}} //{{{ askSaveFile, saveFile //################################################################################################## public void askSaveFile() { askSaveFile(kMain.getStable().children); } public void askSaveFile(Kinemage kin) { askSaveFile(Collections.singleton(kin)); } /** * Asks the user to choose a file where all open kinemages will be written. * * This function MUST be called from the event-dispatch thread. * This function will not return until all the kinemages have * been saved. */ public void askSaveFile(Collection kinsToSave) { if(fileSaveChooser == null) return; setMangledName(); String currdir = System.getProperty("user.dir"); if(currdir != null) fileSaveChooser.setCurrentDirectory(new File(currdir)); if(fileSaveChooser.APPROVE_OPTION == fileSaveChooser.showSaveDialog(kMain.getTopWindow())) { File f = fileSaveChooser.getSelectedFile(); if( !f.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { saveFile(f, kinsToSave); System.setProperty("user.dir", f.getAbsolutePath()); } } } public void saveFile(File f) { saveFile(f, kMain.getStable().children); } /** Like askSaveFile, but doesn't ask */ public void saveFile(File f, Collection kinsToSave) { // Notify the world that we're about to save this kinemage. // Things like parallel coordinates should get their houses in order. kMain.publish(new KMessage(this, KMessage.PRE_KIN_SAVE)); // Don't write out empty groups/subgroups/lists or useless masters for(Iterator iter = kinsToSave.iterator(); iter.hasNext(); ) { Kinemage k = (Kinemage) iter.next(); k.removeEmptyAGEs(); k.removeUnusedMasters(); } try { Writer w = new FileWriter(f); KinfileWriter kw = new KinfileWriter(); kw.save(w, kMain.getTextWindow().getText(), kinsToSave); lastSavedFile = f; w.close(); for(Iterator iter = kinsToSave.iterator(); iter.hasNext(); ) { Kinemage k = (Kinemage) iter.next(); k.setModified(false); } } catch(IOException ex) { ex.printStackTrace(SoftLog.err); JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } //}}} //{{{ setMangledName //################################################################################################## /** * Sets the filename in the fileSaveChooser to reflect the standard versioning scheme: * foo.kin, foo.1.kin, foo.2.kin, ... , foo.9.kin, foo.a.kin, ... , foo.z.kin */ void setMangledName() { if(fileSaveChooser == null) return; File f; if(lastSavedFile != null) f = lastSavedFile; else if(lastOpenedFile != null) f = lastOpenedFile; else return; String name = f.getName(); // Remove .gz extension -- we're not compressed anymore if(name.endsWith(".gz")) name = name.substring(0, name.length()-3); // Do version numbering for .kin files if(name.endsWith(".kin")) { if(name.length() > 6 && name.charAt(name.length()-6) == '.') { String prefix = name.substring(0, name.length()-6); char version = name.charAt(name.length()-5); if('0' <= version && version < '9') name = prefix+"."+(++version)+".kin"; else if(version == '9') name = prefix+".a.kin"; else if('a' <= version && version < 'z') name = prefix+"."+(++version)+".kin"; else name = prefix+"."+version+".1.kin"; } else { String prefix = name.substring(0, name.length()-4); name = prefix+".1.kin"; } } f = new File(f.getParent(), name); fileSaveChooser.setCurrentDirectory(f); fileSaveChooser.setSelectedFile(f); } //}}} //{{{ askSaveURL, saveURL //################################################################################################## /** * Asks the user to choose a file where all open kinemages will be written. * * This function MUST be called from the event-dispatch thread. * This function will not return until all the kinemages have * been saved. */ public void askSaveURL() { String fileName = (String) JOptionPane.showInputDialog(kMain.getTopWindow(), "Enter a new name for the file (overwrite generally NOT allowed):", "Save file as", JOptionPane.PLAIN_MESSAGE); if(fileName != null) saveURL(fileName); } /** Like askSaveURL, but doesn't ask */ public void saveURL(String fileName) { try { JApplet applet = kMain.getApplet(); if(applet == null) return; String handlerURL = applet.getParameter("kinfileSaveHandler"); if(handlerURL == null) return; URL url = new URL(applet.getDocumentBase(), handlerURL); HttpURLConnection conn = (HttpURLConnection) url.openConnection(); conn.setDoInput(true); conn.setDoOutput(true); conn.setUseCaches(false); conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); // This is nice for maximum web-server / java-client compatibility, // but is technically optional. //conn.setRequestProperty("Content-Length", encData.length()); conn.setRequestProperty("User-Agent", "Mozilla/4.0"); conn.setRequestMethod("POST"); URLEncodedOutputStream ueos = new URLEncodedOutputStream(new BufferedOutputStream(conn.getOutputStream())); Writer w = new OutputStreamWriter(ueos); ueos.setEncoding(false); w.write("fileName="); w.flush(); ueos.setEncoding(true); w.write(fileName); w.flush(); ueos.setEncoding(false); w.write("&fileContents="); w.flush(); ueos.setEncoding(true); KinfileWriter kw = new KinfileWriter(); kw.save(w, kMain.getTextWindow().getText(), kMain.getStable().children); w.close(); SoftLog.err.println("HTTP response: "+conn.getResponseCode()+" "+conn.getResponseMessage()); streamcopy(conn.getInputStream(), SoftLog.err); for(Kinemage k : kMain.getStable().getKins()) k.setModified(false); } catch(Exception ex) // IOException or MalformedURLException { ex.printStackTrace(SoftLog.err); JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/king/LICENSE.html0000644000000000000000000000632511531212702014513 0ustar rootroot The KiNG License
This license applies to everything in this project that is the original work of the copyright holder(s) and contributor(s), including but not limited to the source code, binary executables, artwork, and documentation. This distribution includes certain third-party libraries and resources which are not covered by this license, and which are governed by their own license terms. See documentation for more details.


The KiNG License

Copyright (C) 2002-2007 Ian W. Davis & Vincent B. Chen. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. 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.
  3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment:

    "This product includes software developed in the Richardon lab at Duke University (http://kinemage.biochem.duke.edu)."

    Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear.

  4. The name of the copyright holder, the names of the contributors, and the names "KiNG", "Kinemage, Next Generation", and "Mage" must not be used to endorse or promote products derived from this software without prior written permission.
  5. Products derived from this software may not be called "KiNG", nor may "KiNG" appear in their name, without prior written permission.
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED 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 HOLDERS 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.



This license is based on the BSD and Apache licenses.
See http://www.opensource.org/ for more details on these and other licenses.

king-2.21.120420/king/BUILDME.html0000644000000000000000000000615511531212702014513 0ustar rootroot BUILDME for KiNG

BUILDME file for KiNG


KiNG is built using Apache Ant, which stores its configuration in build.xml. Ant is the standard build tool for Java projects, like 'make' is for C/C++. It is written in Java and works cross-platform, anywhere that Java does. You can obtain Ant for free at http://ant.apache.org. These build files were written to work with Ant 1.6.1; if you have a newer version, there may have been some changes to the file structure.

To build the JAR and all the classfiles, rename the king-xxxx-src, chiropraxis-xxxx-src, and driftwood-xxxx-src directories to king, chiropraxis, and driftwood, respectively. Then enter the king directory and type ant dist. The necessary Driftwood and Chiropraxis libraries will be built automatically, followed by compilation of the KiNG code, followed by the creation of king.jar (which contains class files and resources from all three trees of code, as well as from the libraries included in the lib directory). The full KiNG distribution package ZIP files will be generated in king/dist. If you'd prefer to just compile the code and build the JAR files (and stop there), use the command ant build instead. The build.xml files also contain several other targets (deploy-xxx and backup, for instance) that are intended only for the use of the primary developer(s). Feel free to modify these so they do something useful on your machine.

KiNG uses some other open-source libraries, which are included in the lib directory for your convenience. Note that their licensing terms may differ substantially from KiNG's; see those distributions for details. If you would like to obtain updated versions of these libraries or simply get more information about them, you can visit their websites. The GNU regular expressions package gnu.regexp is available from http://www.cacas.org/java/gnu/regexp/, and the iText PDF-creation library is available from http://www.lowagie.com/iText/.


Last updated 4 Mar 2004 by IWD for KiNG version 1.22 king-2.21.120420/king/CHANGELOG.html0000644000000000000000000032344511677352606014750 0ustar rootrootCHANGELOG
==============================================================================
===  TO DO  ==================================================================
==============================================================================

    Extra clipping planes don't support line shortening
    Include demo/tutorial kinemage ?
    Add "don't ask me again" boxes to warning messages
    Auto-create unnamed @aspects
    Make Find ignore points that have the invisible aspect (Z) active
    Kinemage title doesn't get updated in the kin list immediately
    @pdbfile should be interpretted relative to the kinemage file location!
    Develop "xkn" file specification / DTD / Schema
    Export as VRML 2.0 (VRML97) / VRML 1.0 -- useful for DiVE too (VRML97)?
    Make hierarchy editor drag-and-drop [requires Java 1.6+]
    Tau minimizer over a range (rebuild peptides too?)
    Do NOEs within d of x,y,z when nothing is mobile (same for Probe?)
    Support wordlists
    Show CB deviation in Hinge when not idealizing sc positions
    Draw: construct 4 and 5, polylines, triangle strips, true sphere, cylinder
    For multi-click draw ops, "miss" should reset?
    Draw tool - autolabel distances, angles
    For Views tool: Center Visible command (use r3.PrincipleAxes)
    Allow user to set focal length for perspective "lens"?
    Think about free-form docking tools
        Probably better to just save KPoint[] and Triple[] ...
    Add choice of experiments to expected NOEs
    Distribute noe-display in packaged KiNG versions?
    Text editor should notice edits to text and mark kin(s) as modified
    Create a java.net or Sourceforge project for KiNG to encourage plugin devel?
    Create HTML+applet mini-tutorials: kin editing, refitting, views, etc. etc.
    Mutate aromatics, Asn, Asp so that bond angles are stretched out ~2 deg.
    Mutated residues should retain B factors where possible (?)
    'space' with (point)masters - what does it mean?
    Create a splash-screen loader for KiNG (via manifest in Java 1.6)
    Optional 2 column button layout?
    Allow applet/prefs to set width of check-button panel
    Start points of invisible lines are still pickable
    Add ability to edit masters/pointmasters
    Look at Pro geometry with Jane
    White background to light gray?
        Rewrite KPaint to use its black/white (but not blendColors - hue shift?)
        Greentint a bit too dark; cyan could be darker?
        OpenGL: "fog" is linear* interp. in RGB space with background color
            Same on black backgr, slightly different on white.
    Expand KingLiteBinaryExport to do views
    KingLiteBinaryExport should automatically rescale coords to fit in 30 bits.
    Implement the 'moview= #' feature of Mage for J. Voet (?) (also 'movieview')
    Triptic (sp?) stereo for making figures?
    Add a movieFade() to beanking for doing transitions!
    Use E+H 2000 geometry for Pro?
    Do something about multiple copies of Driftwood classes -- in every JAR

    
Open PDB in model manager without opening kinemage first?
    Open/save PDB from/to network
    Allow dragging waters/ions from chiropraxis?
    integrate multichart into KiNG?
    open pdb/map dialog boxes (initial dir) with Mac double-click startup
    Edit view menu: list action (double click/enter) should go to view
    Update docs for building, packing
    Remove references to GNU regexp library in docs, licenses
    Add ActionListener support to FatJList
    Add TablePane2.addCell(String [, width, height])
    Exceptions with missing @dimensions, @dimminmax
    MovieMaker needs ...
        an AnimateScene that steps through animate groups too
        to check window size, perspective on, __?__ before rendering
        filename prefix must be less than or equal to 20 characters for QT
        some control for FPS (controls default lengths)
    Logo sometimes ends up off-center (for OpenGL) after a Close All
    90 deg. rotation position tracker doesn't work in OpenGl mode
    Extend DnD to command line?
    Can't open ED maps at startup by DnD (?)
    sel-by-color: warn when using "if not", auto switch out of PC
    bug: moved n-D points will move back when axes are changed (?)
    use @dimoffset, @dimscale in parallel coordinate plots?
    make kinemage (esp views) behave OK when there are no points inside... (?)
    Make update probe a separate plugin?
    King can't seem to find residues with numbers bigger than 1000 when using a 
       gzipped file.
 ** arrowlists are not covered in the documentation! (radius=, angle=)
    Removed MetalLookAndFeel property (from Java.Properties section) from 
       Info.plist for Mac application; this is a workaround to get King to work
       in MacOSX Leopard, but changes the look of King...need to find a real
       fix.
    King bug with stereo!?!?
    algorithm to draw spider webs on beta sheets (a la classic painting)?...

==============================================================================
===  CHANGE LOG  =============================================================
==============================================================================
### 2.21 ###
VBC
- Fixed bug with kinfileBase and kinfileList applet param fields.
- Fixed "A new version of king is available" text display bug.
DAK
- Made 'screen' work properly with instance= & clone= in Engine2D
- Added helper getNumAnimate(2)Groups methods to Kinemage

### 2.20 ###
VBC
- Fixed image export bug preventing directory from being changed.

### 2.19 ###
VBC
- Fixed molikin not drawing disulfides.
- Changed behavior of opening multiple electron density maps: tiered windows,
  automatic deciphering of file name to preset sigma levels and colors.
- Added -phenix command line option to preset edens map colors to be more like coot.
- Added king.help file....finally.
DAK
- Added Esc or Cmd+W keyboard shortcuts for Edit point props

=======

### 2.18 ###
VBC
- support for moview.
- support for foo kins (points that don't start at beginning of line).
- added line in scanforversion in ToolBox to prevent an index out of bounds error
- changed behavior for reading in ccp4 maps to auto open dialog box without having
  to hit ok; requested by Nat for more seemless integration into phenix.
- added arrow to Presets menu in edensity tool.
- made edensity window open slightly to side of graphics window.
- added coot color presets to presets menu.
- added Paint by contains text to edit/draw/delete.
DAK
- Added "Turn off" group/subgroup/list option to DrawingTool
- Added window-closing-oriented keyboard shortcuts (e.g. Esc to close) to 
  ViewEditor, GroupEditor, KinTree
- Changed default in UIMenus so (ctrl|cmd)+W now closes current kin and 
  shift+(ctrl|cmd)+W closes all current kins
- Changes to ContentPane, Kinemage so - and _ keys "decumulate"/"decumulate2" 
  as a counter-move to accumulate/accumulate2 with = and + keys
- Added "Resize canvas" option under Display; required new resizeSplits method
  in ContentPane
- Added error catch for resizing canvas to sizes bigger than the screen. Should
  work for multiple monitors.
- Current working directory is set properly for Mac drag 'n' drops onto icon or 
  actual kin canvas - eliminates a lot of pointless hierarchy navigation
- Added add/remove master(s) option to Edit group/subgroup/list
- Image exports now default to the current directory (where kin was opened from)
- Made text window empty itself when last kin is closed (in king_prefs; off by
  default)
ARK
- For coloring backside of ribbons differently:
- Added "Ribbon sides..." option to Display Menu; allows user to adjust HSV color
  values (stored in Engine, along with defaults)
- Added "Flip ribbon" button to Edit/Draw/Delete > EditListProps Menu to flip 
  sidedness
- Side is determine in TrianglePoint and new color calculated in KPaint

### 2.17 ###
- added paint by polyline to paint points
- added new auger by color tool
- minor change to KinFileWriter to aid "memory" of working directory
- changes to RingPoint, AbstractPoint so 'screen' keyword works right (not there yet...)
- added "Delete invisible" to "Edit / draw / delete"
- upped vertical scroll speed of right-hand-side AGE panel via ContentPane
- added plugins version info to about screen.
- added support for "fore" & "rear" KList keywords.
- Moved PDB suffixes to CoordinateFile from KingMain.
- Added some get functions to ParaParams and ParaPoints to work with highD sliders.
- Added documentation.
- Fixed bug with hypertext going to wrong kin if didn't start with kin 1.
- Added export text to text window.
- Fixed help -> tools menu to not show all tools in one menu that goes off the screen.
## DAK
- changes to Engine and Engine2D so that points in 'screen'-oriented lists are
  drawn at the bottom of the Z-buffer, i.e. truly in the background, and are
  not subject to cue by intensity
- changed VectorPoint so 'screen' keyword "works"
- added a limit in ColorPicker to the # colors visible on 'Edit point/list
  properties' (previously errors when lots of new colors user-defined)
- small tweaks to point classes like AbstractPoint to improve code readability
- minor changes to View/Point/GroupEditors so Enter key redirects to OK button
  on 2nd, 3rd, etc. time window is opened, not just 1st

### 2.16 ###
- fixed bug in parapoints which prevented alpha from showing in PCoords.
- starting to add screen keyword, changes in points, KList, parser.
- shifted order of some commands in transform() in engine to facilitate screen keyword
- added ability for king to read in files (pdbs to quickin) other than kins on command line.
- added ability for king to read in ed maps from cmdline.  
- added gz files to list of accepted pdbs
- changed build file to include molikin in the king jar for use with applet.
- updated startup logo. 
- Fixed error messages that were getting output when running as applet.

### 2.15 ###
- mostly changes in other king packages, I think. 
### 2.14 ###
- Fixed a bug in Drawing line segments where if you clicked on same point twice,
  points with nonsense values would get added to kin, causing issues with zooming.
  
### 2.13 ###
- No major changes except to remove a property from Info.plist for Mac applications;
  MetalLookAndFeel was causing menus to disappear behind the graphics with MacOSX
  Leopard (see above).

### 2.12 ###
- fixed the bug where the king logo wasn't getting put in the right place after 
  any point id was displayed.  Seems like gl.glRasterPos2d was getting called by
  paintLabel, which was also changing the display position for the logo.
- changed SelfUpdatePlugin to update probe also.  Maybe in the future update probe
  should be a separate plugin?
  
### 2.11 ###
- deployed to world with pdb v3 probe.
- added workarounds to JFileChooser creation bug in unsigned applets
  under Java 6 on Windows (Sun bug # 6570445)

### 2.10 ###
- added KMessage.KING_SHUTDOWN message
- made shutdown message cause all kinemages to be closed.
  This should reduce the amount of memory leaked by KiNG as an applet.
  Leaks are basically Java's fault;  all applets run in one VM and AWT/Swing
  tend to retain references that are hard to clean up completely.
- fixed memory leak from ContentPane.btnMap (retained Kinemage ref on close all)
- KinTreeModel appears to leak Kinemage refs, but they're empty placeholders
- applet now releases (at least) kinemage memory when quit/closed
- added .map and .map.gz to the CCP4 filter for electron density maps.
- changed emails in manuals to vbc3

### 2.09 ###
- deployed to world with plugin jars

### 2.08 ###
- added "launcherImage" PARAM for WBA to customize Kinglet, and doc'd it
- moved king.tutorial out of main source tree
- fixed bug where @flatland had no effect, ever
  Thanks to Kevin Keating at Yale for the detailed bug report!
- now store flatland state per-kinemage, like white background, etc
- deployed to world without plugin jars

### 2.07 ###
- updated kinemage format documentation (@dimoffset, @dimscale, select)
- added @dimscale, @dimoffset to Kinemage, Parser/Writer
- Show XYZ (in ToolServices) now uses scale, offset to display numbers
- text window now defaults to read-only, controlled by checkbox and preference
- added GUI for configuring whether text defaults to editable
- deployed to rlab

### 2.06 ###
- re-release due to Molikin if vs else-if bug

### 2.05 ###
- confirmed that noe-display still works using LpxA
- mutate residue, then choose Don't Keep -- residue stays mutated.
  This is a design blemish rather than a bug per se; can use Undo though.
- AGE.clear() wasn't sending update messages, just changed silently
- with changes to BgKinRunner, this finally fixes the problem where dots or
  NOEs displayed by ModelManager don't go away when refitting is finished.
- fixed bug where text window wasn't cleared on Close All
- updated credit image to say 2007
- removed king.dive package to old/ -- Dave Z. doing C++ version
- changed drag-n-drop mechanism so plugins can handle file drops too
- added DnD support for electron density maps
- Mac distro won't start in OpenGL mode for Andrew Ban -- don't know why, sorry
- removed support files / service listing for king.dive
- display of aspects was broken in KinCanvas (never synced to Engine)
- added new point-painting modes: sphere, single point (copied from Mage)
- added support for Mage's "select" property (KGroup, parser, writer, editor)
- fixed some bugs in ParaParams that made axes disappear, points duplicate
- changed Kinemage to set parent to null when deleting empty groups
- released to world

### 2.04 ###
- modified JoglCanvas to display logo and new version alert when no kin
- bug fix: AGE.replace() did not call fireKinChanged()
  This manifested as very slow/erratic Probe dot update and the dots not being
  actually controlled by the "dots" button in the kinemage.
- driftwood.PdbReader fix for VMD atom names
- deployed to cluster
- deployed Mac version with new Universal binary Probe in it

### 2.03 ###
- changed glLineWidth() to glPointSize() when rendering DotPoints
- fixed stupid typo for DiVE defaults that had eyes offset along Y instead of X
- added Display | Auto-animate for Richard J. Feldmann
- fixed long-standing "view jerk" bug in KinCanvas
- changed KiNG 2 to look for updates in a different location -- this way users
  of 1.x won't be prompted to update until 2.x is stable.
  If we want them to update in the future, copy 2.x stuff into 1.x locations.
- first public release of 2.x line!

### 2.02 ###
- added GUI to connect to master for DiveTool
- bug fixes for setting axes with high-dimensional kins
- fixed KView.clone() to include viewing axes and call super.clone()
- fixed borders on checkboxes in ContentPane that made button panel too tall
- deployed to rlab for testing

### 2.01 ###
- made KView notify the kinemage that owns it whenever it's changed
- removed KMessage.VIEW_MOVED as there was no longer a need for it
- this introduces a slight lag, so I upped the rate on the KinStable timer a bit
- added limited support for remove() to KIterator, but it will work in the most
  common use-case (a for loop).
- updated the BeanKing plugin; haven't tested all movie functions yet
- minor fix for ContentPane.get/setGraphicsComponent() that was ruining the
  embedded KiNG example.  Failure to properly replace the graphics component
  caused KiNG to try every time, breaking the mouse drag in the process.
- made LabelPoint not try to paint itself if its point ID is null.  This was
  sometimes a source of NullPointerExceptions when switching to parallel coords.
- started working on a tool / plugin for remote control of the DiVE.
  Basic sanity check succeeds so far.
- added new DiVE Commands: LoadKinemage, SetOnOffState
- split CmdUpdateViewpoint into CmdSetView and CmdSetEyePosition
- experimented with adding compression to ObjectLink, but it's not worth it
  for most of the objects we're currently interested in sending.
- deployed to rlab for testing

### 2.00 ###
- moved over highly modified code from the "prince" project.
  A summary of the changes:
- TARGET LANGUAGE IS NOW JAVA 1.5:
  - features that were previously loaded by reflection to avoid breaking 1.3
    (mouse wheel listener, drag-and-drop) are now part of the mainstream.
  - the kinemage data structures use generics where appropriate
  - the enhanced for loop is used heavily
- PACKAGES WERE REORGANIZED:
  - concrete implementations of KPoint (VectorPoint, etc) moved to king.points
  - kinemage I/O code (KinfileParser, etc) moved to king.io
  - drawing code and Painters moved to king.painters
- KINEMAGE DATA STRUCTURES (Kinemage, KGroup, etc) HAVE BEEN ENHANCED:
  - most changes are detected automatically and tallied in the Kinemage;
    a separate mechanism checks for changes periodically and notifies KiNG.
  - KSubgroup has been eliminated; KGroup now fills both rolls.
    If KGroup.getDepth() == 1, it is a "real" @group. 2 is a @subgroup, etc
  - we are positioned to support "sub-subgroups" but do not yet do so
  - constructors have changed for KGroup, KList, and KPoints to not specify
    the parent explicitly; see next item. KList now must have type specified.
  - explicit calls to setOwner (now setParent) are not usually necessary;
    this is done for the child in response to calling add() on the parent.
  - parts of the kinemage hierarchy no longer implement MutableTreeNode;
    there is now a custom KinTreeModel that manages viewing as a JTree.
  - parts of the kinemage hierarchy no longer have a JCheckBox that has to be
    managed; the button panel is now totally owned by ContentPane
  - any group, subgroup, or list may have a Transform attached to it that
    dynamically changes how it is drawn to screen; this affects only the
    drawing X,Y,Z and not the "original" X,Y,Z (and thus not distances, etc)
    [this feature hasn't been tested yet]
- WE'RE MOVING TOWARD MULTIPLE VIEWS OF ONE KINEMAGE (BUT NOT THERE YET):
  - the current KView and currently selected Aspect are now a property of
    a KinCanvas/Kinemage pair instead of a Kinemage (functions in KinCanvas)
  - stereo is at the moment still implemented by a single canvas, not two;
    one day we might change this (so both sides would be pickable)
  - picking could be made multi-view safe by doing a transform (not necessarily
    drawing) again for the particular canvas before picking, but those changes
    have not yet been made in the KiNG code that does the picking
  - button and master on/off state is still considered fundamentally a property
    of the kinemage, and so it has to be the same for all views still.
- SIGNALING AND MESSAGING WITHIN KING HAS BEEN IMPROVED:
  - notifyChange(EV_*) and KinemageSignal are now replaced by KMessage,
    KMessage.Subscriber, and KingMain.subscribe/unsubscribe
  - new events (like KMessage.KING_STARTUP) may be of interest to tools
  - messages about changes in the kinemage should now happen automatically
  - calls to KinCanvas.repaint() should no longer be necessary
- KING AS AN APPLET SHOULD BE MORE CAPABLE (WHEN SIGNED):
  - turns out that signing applets can be done effectively without having to
    buy a real certificate from VeriSign.
  - a signed applet can read/write local disk and therefore do rebuilding, etc
  - most tests to see if we're running as an applet should instead check
    KingMain.isTrusted; the current implementation may not be optimal though
- PARALLEL COORDINATES HAS SEEN MODEST IMPROVEMENTS:
  - saving kinemage while in parallel mode is now safe
  - picking goes between normal and parallel modes; picked line is highlighted
- SOME THINGS WERE RENAMED OR DROPPED ALTOGETHER:
  - TransformSignalSubscriber.signalTransform became Transformable.doTransform
  - KingView became KView (breaks lots of code!)
  - RecursivePointIterator became KIterator, with improvements
  - KPoint.get/setOrigX,Y,Z were dropped in favor of get/setX,Y,Z
  - AHE.get/setOwner became get/setParent, to fit parent/child naming scheme
  - GridBagPanel was dropped in favor of driftwood.gui.TablePane2
  - the GNU regexp libraries were dropped in favor of java.util.regex.*
  - KSubgroup has been dropped in favor of KGroup (see above)
  - KPoint.isTotallyOn was dropped because it was redundant with isVisible
  - KGroup.is/setRecessiveOn became is/setCollapsible as the latter is now
    the preferred form in kinemage files
  - MageHypertexter and MageHypertextListener became MageHypertext and
    UIText.HypertextListener
  - KPaint switched from java.awt.Paints to java.awt.Colors; only "invisible"
    was affected and it eliminated a lot of dangerous casts
  - the EDMap* classes were moved into king.tool.edmap where they belonged
  - KinLoadListener became king.io.KinfileLoader.Listener
  - KinWriter became KinfileWriter to be consistent with the other I/O classes
- SPACE WAS CREATED FOR TUTORIAL CODE AND HTML:
  - one of the goals was to make king.core into a toolkit for 3-D graphics
    that could be used by programs other than KiNG proper
  - tutorials on how to use king.core are in king/tutorial/ (HTML) and in
    king/src/king/tutorial/ (Java code)
  - hopefully, future releases will see sample plugins here as well, etc,
    though we have to be careful not to clutter the JAR file too much

### 1.60 ###
- Final release of KiNG 1.x series.  No other changes.

### 1.56 ###
- set kMain to null in Kinglet.stop() to encourage garbage collection
- added ParaPoint and ParaParams to implement parallel coordinates
- added Overview view to menu when switching into parallel coordinates
- added axes and labels for parallel coordinates plot
- changed Views | Save to always save which dimensions are active
- found out that viewing axis choices are already read and written -- yay me
- added code to write out custom HSV colors
- added documentation for @hsvcolo[u]r and @dimminmax (not implemented yet)
  This concludes the basic work of adding custom colors.
- added parsing and saving for @dimminmax
- many functions do not work properly outside the US, because Java tries to
  localize number formatting.  For instance, in Germany it uses commas instead
  of decimal points when saving kinemages.  Since KiNG thinks commas are
  whitespace, this destroys the kinemage.  Using Molikin is impossible.
  This will also be a problem for saving PDB files, etc.
- this can be worked around on the command line
  (java -Duser.country=US -Duser.language=en ...)
  or by setting the default locale when KiNG starts (Locale.setDefault()).
  That seems to work even running as an applet, despite the security manager.

### 1.55 ###
- replaced deploy-{rlab,world} targets with shell scripts
- updates to KiNG's build.xml to work better with the shell scripts
- Backrub now defaults to NOT idealizing the end sidechains (JSR)

### 1.54 ###
- confirmed that new update URLs work fine
- added linewidth to RingPoints, but it doesn't look very good
- decided against monospaced font for the text window; doesn't look good
- implemented parsing of @_axischoice
- implemented saving of @_axischoice
- updated docs with high-D stuff and @ringlist
- changed DiVE export to backslash delimited
- added triangles, labels, width/radius to DiVE export
- hacked KPaint to allow for arbitrarily named, lightweight paint colors
- added @hsvcolo[u]r keyword to KinfileParser
- changed stereo code so cross/wall-eye toggle just swaps the images
- hacked on image export code -- JPEGs on Windows were not closed out
- changed ribbon coloring to match lighting AND *depth cue* between paired
  triangles, so now they really copy Mage's intent.  Code is ugly, though.
- added Edit Group, Edit Subgroup, and Reveal in Hierarchy to the DrawingTool
- updated to JSR JOGL 1.0.0 (Mac, Linux, Windows)
- deployed to world on 20 Oct 2006

### 1.53 ###
- added drag-n-drop support to JoglCanvas, so now DnD works in OpenGL mode
- added aniso scaling to Hierarchy | Transform
- added machinery for views to store choice of viewing axes
- fixed some dependency-related bugs for axis selection vs. views
- made buttons, sliders optional for ContentPane
- added RingPoints and KList.RING
- added support to KinWriter and KinfileParser
- updated build file for new kinemage.biochem.duke.edu configuration
- changed URL for auto-update tool
- deployed to world
- removed step that copies king.jar to MolProbity 2.x on kinemage

### 1.52 ###
- changed all JOGL calls over the new "JSR" standard
  Major changes were in several constructors, and location of utilities.
- JOGL now seems to work on Mac with being in /Library/Java/Extensions
  I'm not sure why this didn't work before.  Now we need to upgrade Win, Linux.
- made KiNG's exported images 4x higher resolution.
  Should be easier to make figures now.
- added TinyMap methods to AbstractPoint
- moved aspects and pt comments to TinyMap storage.
- added get/setAllCoords(), useCoordsXYZ() to KPoint, AbstractPoint, ProxyPoint
- KinWriter checks getAllCoords() and writes those values if present
- added get/setDimension() to KList
- KinfileParser can now read dimension= at any level and store it in the list
- KinWriter writes out dimension= for lists that have it != 3
- added support for @dimensions to parser, writer, and Kinemage
- added AxisChooser and Views | Choose axes... menu item
- allowed @dimension as an alias for @dimensions

### 1.51 ###
- fixed driftwood.moldb2.PdbSecondaryStucture bug (IndexOutOfBoundsEx)
- distributed to Rlab
- bug fix: SidechainRotator gave wrong rotamer evals (from prev. conformation)
- changed appendKinemage() to not delete unused groups, masters in the already
  open kinemage.  This was previously causing problems for Chiropraxis tools:
  turning on dots before rotating a sidechain deleted the rotatable sidechain.
- Mac app now starts in user home dir instead of Applications
- NOT A BUG: missing dots on Arg NH? (1BKR Arg 32) [atoms have zero occupancy]
- when running as applet, menu shortcuts are always CTRL-x (nice for Mac users)
- added an Auger-like "Paint Points" tool to the KiNG drawing tool set
- param name="king_prefs" value="config.props" was already documented...
  But I reinstalled LyX on my Mac anyway.
- distributed to Rlab

### 1.50 ###
- Rlab release with VBC tool fixes
- code that cleaned empty masters, AGEs was removing instanced lists

### 1.49 ###
- added king.core.Painter.drawOval(...) to make the circle o' death for Auger
- changed DrawingTool to use drawOval() instead of XOR-ed drawing
- added undo ability to the drawing tool's Move Points option
- fixed: std/OpenGL flipping on Linux causes seg fault
- we remove empty groups/subgroups/lists and unused masters on read and write.
  This keeps our kinemages nice and clean!
- on save with multiple kinemages, we now ask: Save one, or save all?
  (First with drop-down box; later with radio buttons.)
- POV-Ray export tool now exports currently visible kin ONLY, like pdf/png/jpg.
- fixed bug re: pointmasters in elimination of unused masters
- fixed typo in ArrowPoint that caused weird shortening if display area was
  non-square.

### 1.48 ###
- changed KinCanvas to avoid "No OpenGL" error dialog if JOGL not present
- removed deploy-local copy to Sites/molprobity

### 1.47 ###
- minor bug fixes to chiropraxis code ("S" rotamers, BgKinRunner println's)
- documented syntax of Mage hyperlinks, as best I can.
- rewrote MageHypertexter using KinfileTokenizer for parsing. This should be
  more robust to formatting errors than the original code was.
- added small white border to text window to improve readability
- removed .gz from suggested save name b/c files are never compressed on save
- added joglByDefault to king_prefs; it seems to work...
- added joglByDefault to visual prefs editor
- made joglByDefault true in the distro king prefs; it fails silently
- updated JOGL libs to version 1.1.1

### 1.46 ###
- threaded approach to KiNG version check wasn't working b/c I called run()
  instead of calling start() -- thus the thread was never actually spawned.
- merged edit props, move points docs in with draw new tool docs
- updated credits in the About box
- added Richardson lab to splash screen image; updated KinCanvas version notice
- deploy-world now copies ZIP to .current.java and docs to king/docs;
  this will simplify web maintainance and facilitate auto-update.
- did a deploy-world to test the new build file
- had to change 'server' to 'kinemage.biochem.duke.edu' or it breaks at home

### 1.45 ###
- fixed hyperlink code to respect a slightly larger active area.
  It was previously cut too short on the right hand side.
- added border to exported images
- removed border from exported images; easier to do in Keynote/Powerpoint
  (but it does look really good!)
- really long point IDs are sent to stdout when screen is drawn
- Edit Properties and Move Points tools were merged into Draw New tool;
  Move Points also treats labels differently in order to "do the right thing"
- moved the drawing tool to the main menu
- NB: pick objects + move points = weird behavior (wrong end of lines)
- made scroll wheel zoom work again for Draw New tool
- implemented arrowheads (directional vectors, @arrowlist) in ArrowPoint.
  Had to modify VectorPoint and Engine very slightly to accomodate this.
  Implementation is not complete yet (no read/write)
- modified KList, KinfileParser to read in @arrowlists
- modified KinWriter to write out @arrowlists
- deployed to Rlab for testing

### 1.44 ###
- fixed memory specs in KiNG Mac bundle ("16MBm" to "16m" as memory size!)
  This is required for proper operation with Java 1.5.x
- removed File | Exit menu choice when running as an applet
- added extratools.jar to InstallAnywhere script (fixes missing tools on Win)
- added mechanism to supress background painting to Engine
- added transparent-background option to Image and PDF export tools
- we now copy chiropraxis, extratools PDFs into dist/doc/ for exe distro
- updated Kinemage to make animate turn off all 2animate and vice versa,
  which is the standard behavior established by Mage. (fixed for J. Voet)
- fixed current-dir bug re: auto file naming in image/PDF export plugins
- clarified documentation of instance=
- documented the meaning of a space (" ") inside a point's aspect list
- Oops! chiropraxis/extratools PDFs went to wrong folder. Now fixed.
- added docs in king-ver/doc/(chiropraxis|extratools) to InstallAnywhere script

### 1.43 ###
- changed AbstractPoint.getDrawingColor() to ignore unrecognized aspect codes.
- work done to make background Probe runs more reliable, esp. on Windows
- changed default helperTimeout to 15 sec; nicer for slow systems.
- deployed bugfix for Probe remote update to world on 26 May 2005 (r159)

### 1.42 ###
- added king_prefs flag for measureVectorVectorAngle
- added thoughts (but no code) to VectorPoint re: pointmasters on one end only
- modified BeanShell plugin to respect KiNG's fontMagnification setting
- modified KinfileIO to be able to load kins from a raw InputStream
- changes to Chiropraxis and Driftwood to make Probe dot updates faster and to
  make handling of alternate conformations more robust.
- made release version for Dave @ ACA on 24 May 2005 (r157)

### 1.41 ###
- added check for null Graphics in code for auger (DrawingTool)
- removed depth-cue-by-size for balls (already gone for spheres), because their
  sizes get too distorted, and its very misleading when size matters.
- replaced most references to Color.black/white with KPaint.black/white.
  In the future, this might let us do an off-white background, though KPaint
  still needs more work for that to happen correctly.
- rewrote complex expressions in KPaint in terms of linear interpolations,
  but without changing the results at all. Removed unneeded Math.min(1, ...)
- glEnable(GL_LOGIC_OP) + glLogicOp(GL_XOR) only works for indexed color,
  apparently. See p. 310 of the Red Book.
- tried blending tricks to get XOR via OpenGL with no success. Using cached
  Graphics/GL objects produces null result too. For now, give up.
- changed KinCanvas.print() to use getCanvasSize(); now works properly w/ JOGL.
- added size param to KinCanvas.paintCanvas(); this fixes sizing problems for
  image and PDF export encountered when using OpenGL mode.
- small mod. to DrawingTool XOR code for auger to be more correct/robust.
- now recognize 'T' in point declarations. No-op, but avoids an error message.
- included extratools in dist src/ (but not javadocs)
- fixed Windows/Linux installers to have 1GB memory cap (same for OSX app)
- updated all dists (Mac/Win/Linux) to bundle Probe 2.11
- doc: plugin jars go AFTER king.jar with commas (,) in applet ARCHIVE="..."
- moved documentation for extra tools to their own packages
- dist. to world 4 May 2005 (r145)

### 1.40 ###
- updated Mac app to JOGL 1.1b10
- created VM packages for Win, Linux installers with 1.4.2_07 and JOGL 1.1b10
- updated manual b/c install location for JOGL libs under Linux has moved
- fixed MovePointsTool to not process SpherePoint disk proxies
- created dedicated tool for BACKRUB in chiropraxis.kingtools
- added setContrast() to KPaint and KPalette
- added "Set contrast..." function to the Display menu (may need tuning)
- let ToolBox search (relative) URLs specified by applet PARAMs (plugin#=...)
  ... only it can't work, because applets aren't allowed to make class loaders!
- moved most tools and plugins to a separate jar file: extratools.jar
- modified EDMap plugin to do coarser contours for figure production, etc.
- distributed to Rlab on 11 April 2005

### 1.39 ###
- modified VectorPoint and TrianglePoint so object picking always returns the
  last point -- this makes changing colors, etc. much easier and more natural.
- updated manual re: object picking; king_prefs text was OK as-is.
- changed KingLiteBinaryExport to write multi first, as part of change to new format.
- added group/subgroup/list export to KingLiteBinaryExport
- added animation support to KingLiteBinaryExport
- Vince fixed Java 1.5 bugs: no kin selected on open, mouse drag produces click
- fixed sphere rendering bug by not doing depth cue by width for spheres
- deployed to world on 9 March 2005 (r123)

### 1.38 ###
- updated copyright dates in license, manual, About box, logo
- clarified antialiasing code in JoglPainter
- experimented with JOGL antialiasing via the accumulation buffer, but too slow.
- discovered calls to enable full-scene antialiasing in GLCapabilities. Yay!
- BallPoint.signalTransform(): mostly translucent balls no longer shorten lines
- eliminated lingering resize cursor over GL canvas
- Save on Exit is now yes/no/cancel
- removed duplicate constant definitions from KPoint
- fixed picking so invisible, aspect-invisible, and pointmaster off points
  will no longer be picked when they're not visible!
- BallPoint now checks drawing color instead of isOn (similar to above)
- added engine.syncToKin() to printing function, but it still doesn't work...
- object picking is now disabled by default, like in Mage
- removed dot prod angle from measures display
- relabeled drawing tool to reflect presence of auger, prune, etc.
- deployed to Rlab's new server on 27 Jan 2005
- implemented BallPoint.getRadius()
- added KingLiteBinaryExport for writing data to KingLite
- added PalmDB format to exporter
- support list/point color as displayed for KingLite export
- fixed bug in Palm header output (misunderstood meaning of field)
- changed Longs in DataTool to longs
- set -source and -target flags in build.xml
- added bitmask for ball radius in KingLiteBinaryExport
- fixed KingLiteBinaryExport to deal with @colorset colors correctly
- fixed NPEx caused by bond rot code in parser when loading 0-byte file
- reordered items in Draw palette to avoid dot/dotted line confusion
- balls and labels are always "object pickable" now

### 1.37 ###
- added undo stack to BeanKing movie commands
- added editing of "nohighlight" flag for lists to GroupEditor
- added support for multiple, front/back-independent, clipping planes in Engine
- added variable for clipping mode to KList
- added clipping planes tool
- made MagnifiedTheme work with Java 1.5
- made menus correctly overlap JOGL canvas for Java 1.5
- added Go Next/Prev to ViewEditor at Andrew Ban's suggestion
- changed KinStable.changeCurrentKinemage() to count instead of use @title
- made master hyperlinks trigger a re-draw
- deployed to world 4 Jan 2005 (r103)

### 1.36 ###
- masters now have 3 states in kin file: default (auto detect starting state),
  on, and off (these two force the kinemage to match them).
- documented on/off for (point)masters in the kinemage format doc
- fixed pointmaster bug for merging kins introduced in v1.32
- updated BeanKing to have some nice built-in functions. Try 'help();' for info.
- changed JoglPainter to paint single pixels for width=1 dots
- fixed depth-cueing by width in JoglPainter; checked double buffering (OK)
- modified Hierarchy editor GUI -- all buttons on left side now
- second fix for depth cues, thinline, etc.; in KinCanvas.paintCanvas()
- third time's the charm: created Engine.syncToKin() function to be called
- fixed kinemage property editor to sync Display menu checkboxes
- now write out width= for dot lists too
- tried adding black edges to balls for non-translucent balls only
- fixed bug in Engine: clipDepth not calc'd after perspective correction
- fixed bug: writeFPS now works with JoglPainter
- added black rims on balls to all painters (ala Mage)
- fixed bug that broke Views menu after kinemage merge from cmd line (merge bug)
- fixed bug in RecursivePointIterator.nextImpl() that caused StackOverflowErrors
- created Swing thread-safe GUI for BeanKing along with movie-making functions
- added up/down cmd history to BeanKing
- substituting dispose() for setVisible(false) in PointFinder seems to fix
  issues with focusing the search field on subsequent searches.
- tried dispose() in PointEditor, GroupEditor, and KinTree (redraw problems)
  seems somewhat slower, but solves a lot of the redrawing problems!

### 1.35 ###
- fixed EDMapPlotter so mesh/vector ED won't be translucent, only triangle/poly
- removed MasterGroup.pmLookup b/c it's no longer used by anything
- replaced JoglFrame with JoglCanvas, which gets embedded in the usual space.
- fixed sizing bug for JoglCanvas so it's usable in applet mode too!
- fixed comment-actions to support http: vs. http:// correctly
- bug fix: KinCanvas.paintCanvas() uses quality instead of renderQuality
- that fixed the null-output-in-JOGL-mode bug for ImageExport
- removed ref to extra window for JOGL in KiNG manual
- moved 5 display settings to being stored on a per-kin basis: perspective,
  background color, list color dom, thin lines, thickness depth cueing.
- now support 'off' and 'on' for (point)masters, though 'on' has limited effect
- pointmaster-off balls no longer cause line shortening
- released to lab (r92) on 7 Nov 2004

### 1.34 ###
- changed triangle depth-cueing to the average of backmost two points.
  This is compatible with "outlining" triangles with vectors, e.g. for ribbons.
- added support for storing, reading, writing point comments
- now allow editing of point comments from king.PointEditor
- point comments are already documented in the kinemage format doc
- point comments starting with "http:" now open a Java browser for that URL
- started work on POV-Ray export function
- POV export works competently now
- POV export supports smooth triangles and usually gets the normals right
- touch-ups to POV export (dot width, explanatory text)
- allow triangle smoothing for POV export to be disabled
- allowed plugins to appear in File | Import (or Export) instead of Tools menu.
  Required work on exporters, ToolBox, UIMenus.
- moved image, PDF, etc. export tools to king.tool.export
- updated manual re: exporting, esp. for POV-Ray
- deployed to Rlab on 22 Nov 2004 (r90)

### 1.33 ###
- Made AHE into an interface and moved the functionality into AHEImpl
  This will allow us to make KPoint into an interface, leading ultimately
  to lightweight KPoints like the ones we need to do a SpherePoint class.
- converted KPoint into an interface, and moved impl into AbstractPoint
- removed unused function preTransform() and viewTransform() from AHE
- added ProxyPoint as the future basis for SpherePoint disks
- changed ball painting in HighQualityPainter to use doubles, not ints
- added SpherePoint class
- added Painter.paintSphereDisk()
- fixed bug: parser was making @spherelists into @balllists
- finalized math for SpherePoints; checked in (r82)
- fixed bug where KinCanvas.print() didn't bestPainter.setGraphics(), resulting
  in either a NullPointerEx or a stale graphics object.
- added setting for alpha in list editor
- made vectors use alpha
- protect against parent==null in parent.alpha for Ball/Triangle/VectorPoint
- documented kinfileBase, kinfileList, kinfileSaveHandler
- released r85 to the world on 10.26.04

### 1.32 ###
- changed EDMapPlugin so that it asks for map format after you choose a file
- documented mouse keys: use Meta and Alt on Mac, not Shift and Ctrl
- added URL kinemage file opener to KinfileIO that uses applet parameters
  'kinfileBase' and 'kinfileList' like EDMapPlugin does for maps.
- added URL kinemage saver to KinfileIO that POSTs to 'kinfileSaveHandler'
- set up JOGL libraries so anybody using SVN can compile JOGL version
- added JOGL libs to src code distro, so downloaders can compile it too
- add JOGL native libs to the Mac Application Bundle
- AIOOBEx in HiQualPainter line 111 arises when depth cueing by line width is on
- VectorPoint was multiplying by widthCue prematurely in setting line width
- fixed naming swap with "Prune" and "Punch" in Draw New tool
- added "do nothing" button to the draw new tool (can also just ctrl-click)
- reformatted tabs in Kinemage and KinfileParser source code
- moved pointmasters into Kinemage so that 1) each kin can choose 32 different
  chars to be pointmasters and 2) unknown pointmasters are auto-created.
  Tested and debugged on- and off-line using Cb kins and multikins.
- updated pointmaster section in kinemage format document
- made pointmasters behave like masters and like Mage: dominant-off
- updated pointmaster docs again
- distributed to the world on 15 Oct 2004 (r80)

### 1.31 ###
- Ant script now creates javadocs as part of "dist" target
  This makes the source code bundle larger, but nicer for other users
- created a sample_plugins distro with A. Mantler's code, pyking, and beanking
- changed KinfileTokenzier.main() to produce HTML output with the -css switch
- r63 introduced Shuren's changes to the model manager...
- added line numbers to IllegalStateExceptions in KinfileTokenizer
- fixed bug: JSR: KiNG writes two copies of refit atoms, moved and original
- marking these bugs as CANNOT REPRODUCE:
    JSR: measures+xyz+superpick switch themselves off
    JSR: sc rot / ca hinge and the ca hinge dialog disappears
    JSR: rotamers don't always update angle settings (another typo?)
- changed Hierarchy Editor so Paste operations append at the end, not beginning
- modifiers for mouse wheel seem fine (Shift, Ctrl)
- modifiers for clicks are seriously screwed up on the Mac:
  Right and Meta are indistinguishable; Middle and Alt are indistinguishable
  Ctrl-click generates a mousePressed() but not a mouseClicked()
  There are finally better methods to query this in Java 1.4, but we use 1.3.
  Only feasible solution at this point is to document the work-arounds.
- released to cluster only

### 1.30 ###
- modified KPaint.getPaint() to use a cached Color object when possible
- BallPoints now can use tranlucency (alpha)
- elaborated on JOGL install instructions
- changed labeling drawing tool to ask what label text should be, w/ ID as def.
- label drawing tool can now either ask or use default, controlled by checkbox
- added mechanism for tracking whether a kin has been modified to Kinemage
- added checking for modification and prompting for save before exiting KiNG
- saving kinemages through KinfileIO clears their modification flag (if set)
- GroupEditor sets the modified flag on kinemages now
- KinTree and PointEditor cmds now set the modified flag
- ViewsEditor sets the kin-modified flag
- DrawingTool and SolidObjPlugin set the modified flag
- MovePointTool sets the modified flag
- both docking tools set the modified flag
- EDMapWindow now sets modified flag when map pieces are exported
- added mouse-listener hooks to support hypertext in UIText
- View | Save updates the kin-modified flag
- Vincent added bond-rotation support to parser, Kinemage
- removed PyKiNG plugin b/c it's slowing down load times
- modified build.xml:deploy-local to use MacApp jars instead of 2nd copy
- text window now accepts listeners for hypertext events
- added kinemage format doc to KiNG's doc/ folder
- added custom icons to the Hierarchy editor that show on/off state of things
- added kinemage format doc to installers
- swapped pyking out for beanking in installers

### 1.29 ###
- used getValueIsAdjusting() to make ED sliders smooth
- fixed menu configuration system that I broke earlier...
- changed auto-rock to use a sin() function for smooth pauses at either end
- tried to fix file extensions, but they're still broken...
- JPG, PNG, and PDF files now are checked for proper extension at save time
- kept the text window from scolling when new text is added
- revised menus layout for Tools menu
- You can't change java.library.path from within the program. This is a well-
  known-but-poorly-documented deliberate "feature" of Java. I'm not sure why.
  This, at least for the moment, pretty much destroys my hopes of bundling
  the JOGL libraries with KiNG in a convenient way.
- JOGL window now closes when it's KiNG is shut down in multi-window mode.
- changed 'recessiveon' to 'collapsable' in GroupEditor
- added warning about saving with multiple kinemages open
- fixed annoyance that closing one kin would leave nothing selected
- deployed to the world on 16 June 2004

### 1.28 ###
- added the "accumulate" animation function from Mage
- changed the meaning of KPoint.get/setX/Y/Z to refer to the untransformed (original)
  coordinates, and deprecated get/setOrigX/Y/Z(). Added get/setDrawX/Y/Z().
- added note to user manual about installing plugins (but didn't update)
- moved documentation for Chiropraxis tools out of the KiNG manual proper
- ToolBox now loads king_prefs for other tools into the defaults object of
  KingPrefs. This keeps those menu names from appearing in ~/.king_prefs.
- moved all references to the Graphics object out of Points into the Painters
- KinCanvas now creates and manages the painters based on rendering quality
- created clear, clip/viewport, and font methods for Painters
- implemented JoglFrame and JoglPainter;
  JoglPainter does not support markers, labels, or ToolBox overpainting yet.
- replaced calls to KinCanvas.getSize() with getCanvasSize() for OpenGL.
- implemented ToolBox overpainting using images, but it's very, very slow
  if something is actually drawn. Not too bad if nothing drawn (~30ms).
- changed to an alternative scheme that's much faster (30 / 50 ms)
- added "Installed in ..." line to About box and SelfUpdatePlugin
- implemented lazy loading of JOGL libraries in KinCanvas
- fixed stereo offset problem for JOGL; fixed stereo clipping issue in Engine
- implemented label painting using the bitmapped font functions in GLUT
- replaced overpaintCanvas(Graphics2D) with overpaintCanvas(Painter);
  this eliminates JOGL performance problems previously caused by overpainting.
- implemented marker painting for JOGL (not all markers have been tested)
- documented the SelfUpdatePlugin
- documented the OpenGL acceleration feature
- documented new king/chiropraxis dependency structure, new painting in HACKING
- deployed to Rlab on 7 June 2004

### 1.27 ###
- modified Engine and KPoint.isPickedBy() to account for object picking
- implemented object picking for triangles
- added "Pick objects" item to Tools menu
- implemented object picking for balls and spheres
- in picking functions, now pass radius instead of radius^2 (for lines)
- implemented object picking for line segments
- updated the section on Tools and Plugins in HACKING to reflect the dynamic
  service-provider loading model that was implemented in 1.24 / 1.25
- updated documentation (Tools | Pick objects)
- added Mage-like "count" function to the writeFPS output for Jeremy
- moved all the drawing functions into StandardPainter and HighQualityPainter
- king can now find all plugins in the plugins/ folder where king.jar is
- started SelfUpdatePlugin to simplify the task of upgrading to a new KiNG
- machinery works, now all it needs is a UI!
- finished UI for SelfUpdatePlugin, tested it on Windows. Looks ready to go!
- migrated to building with Ant 1.6.1; replaced "antscp" task with now-std "scp"
- moved all the KiNG remodelling tools into chiropraxis
- fixed ToolBox to find menu preferences for JARs that are in plugins/
- deployed to Rlab 25 May 2004
- Oops! migrated tool resources too.

### 1.26 ###
- added Mage's HTML description of the kinemage format
- updated manual intro to make it more clear that kinemages are *illustrations*
- mentioned kinemage format doc in user manual Ch. 4
- updated manual section on viewing animations
- made a note about configuring Tools menu in the manual
- put a "Don't warn me again" control on the stereo-pick warning dialog
- protected against showing warning for pick with no kinemage open
- stopped model manager dialog from jumping around when switching tools
- added the machinery to Engine to allow efficient instance= impl
  Doesn't seem to have broken anything (yet!)
- modified KList to be able to do instance=
- modified KinfileParser and KinWriter to handle instance=
  Groups and subgroups marked as instance= are still handled wrong
- modified clone() for lists/subgroups/groups and KinfileParser
  to correctly support instance= {xxx} for groups and subgroups
  (deep copy of group/subgroup/list, instance= copy of points)

### 1.25 ###
- tools and plugins can be placed in submenus based on the .king_prefs file
- KingPrefs now searches all jars for default settings in king/king_prefs
- multi-jar approach to tool distribution works beautifully
- PrefsEditor now wipes all keys before doing a reset -- truly clean
- now we only store changes from defaults prefs, with a note to look at the
  complete version of king_prefs for more ideas.
- created a GUI for determining which tools are in which menus
- UIMenus now rebuilds the tools menu when preferences are changed
- added EDMapPlugin.toString()
- removed ellipsis from menu items for a few plugins (for uniformity)
- added menu configuration to the bottom of the Tools menu
- ripped out the old AnimationGroup and replaced it with a simpler scheme
- removed Animations menu and AnimationGroup class
- placed animate, 2animate buttons as needed in button pane
- added A, B keyboard shortcuts for animations to ContentPane (+ docs)
- fixed a view-calculation bug for kins with only one point

### 1.24 ###
- factored "fade-out" multipliers into constants in KPaint so they can be tuned.
  With current structure, not practical to configure at runtime, but can be set
  at compile time. Not much benefit for full fade-to-white with kinemage graphics...
- brushed metal look in partly missing for button panel in Safari, but putting
  in an extra JPanel results in unpredictable mixtures of metal and Apple pinstripes.
- updated Hacking KiNG with notes about Jama in the driftwood section
- began erasing the distinction between Tools and Plugins by
  making BasicTool a subclass of Plugin.
- rotamer window now asks Yes/No/Cancel when user tries to close it
- making movies should be done from the POV-Ray exported data, not in KiNG
- fixed chiropraxis bug that left Ala H's oriented randomly upon "idealization"
- migrated to using version.props AND buildnum.props to simplify version control
- merged tool/plugin loading and menu items into a single process in ToolBox
- removed the now-useless getToolsRBMI() from BasicTool
  Theoretically breaks backward compatibility for tools, but not often in practice
- added getDependencies() and isAppletSafe() to Plugin
- filled in the correct values for tools and plugins that needed them
- converted ToolBox to use a service-provider model for discovering plugin names
  and loading them.

### 1.23 ###
- added arc drawing tool
- decided that Aqua LnF still isn't mature -- random NullPointerExceptions
  and problems with file-chooser dialogs (setting selection/name).
- KiNG runs correctly with Java 1.3.1_11, 1.4.2, and 1.5.0_beta1.
  Jane's problem with 1.3.1 must have been Mozilla-specific.
- added setOrigXYZ() to KPoint
- added arrowheads to arc-drawing tool
- added shortening to arc-drawing tool and fixed bug at 180 degrees
- made BgKinRunner timeout configurable in king_prefs
- documented arc tool
- changed Views menu to wrap into multiple menu lists for a LOT of views
- changed the JList in ViewEditor to display lots of views gracefully
- apparently using full-app antialiasing with Metal on the Mac leads
  to that annoying JLabel/JCheckBox ellipsis (...) bug, regardless of layout.
  Bug report has been submitted to Apple but I don't expect a fix anytime soon.
- updated build.xml to copy manual to kinemage website
- changed Mac app bundle to not use full-app antialiasing but keep using Metal.
- KiNG now allows breaks in a ribbon- or trianglelist using the X flag
- added presets to EDMapWindow for 2Fo-Fc and Fo-Fc maps
- added Remove Last button to LSQ docking
- added angle between two vectors to the measures tool
- in point editor, setting point radius/width to "" is now equivalent to "0"

### 1.22 ###
- showHelperOutput was broken for background jobs like Probe;
  it dumped stderr again instead of stdout.
- added PDF export based on the iText PDF library
- integrated iText libraries into my distribution
- removed EPS export
- updated README, BUILDME, and User Manual to reflect replacing EPS with PDF
- current king_prefs is now copied to doc/ folder on every build
- sidechains are now fully idealized by Hinge.
  They were already full optimized upon rotation or (of course) mutation.
- fixed flaw in Kinemage where an empty kin would create a view centered at NaN
- Show XYZ Point now also writes the coordinates to standard error
- in the text window when using Metal, cut/copy/paste uses Ctrl key.
  This is correct behavior b/c it's a cross-platform look AND FEEL.
- added itext.jar to the InstallAnywhere installers
- deployed to the world on 24 Mar 2004
  
### 1.21 ###
- edited KinTree.onDelete() and DrawingTool.getDrawingGroup/Subgroup/List()
  to ensure that it's safe to delete drawing groups and then keep drawing!
- added "clean-all" Ant target to clean all .class files out at once
- it's now possible to not idealize CBs when using Hinge, but only for the ends
- tokenizer now tolerates spaces before equals, so "color = red" is now OK (but discouraged)
- added Jane's explanatory material on colors to my palette kinemage
- JPEG exports are now done at highest available quality setting
- fixed bug in driftwood.moldb2.Model.clone() that was breaking sidechain mutation tool
- modified KPalette.widthScale to make multi-width depth-cueing for lines more like Mage's
- made groups, subgroups, lists, and point cloneable
- added Copy to the hierarchy editor
- added support for the clone= {x} property of groups, subgroups, and lists
- implemented instance= {x} to be the same as clone=, even though it's supposed to be lightweight
- documented the new Copy feature / fixed old refs to it not existing
- documented image export facility
- deployed to Rlab on 3 Mar 2004

### 1.20 ###
- added Drag-n-Drop kinemage opening on the main graphics window, doc'd it
- started king.tool.draw.DrawingTool for Bob Bateman
- fixed stupid NullPointerException that was introduced in "New King Window"
  between 1.13 and now, probably in reorganization of KingMain for applet modes.
- fixed Trp rotamer typo in chiropraxis
- added line segments to drawing tool
- added undo function to drawing tool
- added labels, balls to drawing tool
- added prune to drawing tool
- made KPoints cloneable to try getting around my Prune problem
- made Prune undoable by storing more info in the UndoStep objects
- added punch to drawing tool
- made the undo cache memory sensitive for the drawing tool
- added line shortening for line segments
- added dots and dotted lines to drawing tool
- added multiple subgroups to the drawing tool
- added triangles to the drawing tool
- added auger to drawing tool
- added spherical cropping to drawing tool
- added documentation for drawing tool
- added "collapsable" and "collapsible" as synonyms for "recessiveon"
- deployed to the world 1 Mar 2004

### 1.19 ###
- repaired ED classes to deal with new MarchingCubes code in driftwood
- tested the visual effect of transparent ED (alpha= 0.25)
- translucent mesh is now an option in ED viewer
- ModelManager now tries to guess NOE file format based on extension
- confirmed: cmd line parser handles empty elements ('') correctly
- now NoePanel also has a selection dropbox; and both include "all" as a choice
- fixed a ribbon lighting bug in KPaint where an array was accidentally overwritten
- fixed a logical bug in ribbon lighting + depth-cueing on a white background
- finally allowed for masters to have the 'indent' flag
- converted measures to look more like Mage
- KiNG was failing to write @colorset when it came from a merged file
- updated copyright dates in About | Help
- changed default build target to "dist"
- documented the need for gnu.regexp and org.jibble.epsgraphics
- fixed src ZIP creation so those packages end up in the right path (lib/...)
- Trp rotamers: m110 chi2 doesn't change; W179 in cabenol? False alarm (works for me)
- added "viol" to NOE dropboxes
- updated manual to include JNB's 90* stereo offset trick for orthogonal views
- distributed to the world on 26 Feb 2004

### 1.18 ###
- reworked KPaint to store fewer objects and calculate all lighting-shaded,
  semi-transparent Colors on-the-fly (only used by TrianglePoint right now).
  This causes a minimal performance hit, as far as I can tell.
- added the 'alpha' (transparency) property to all KLists.
- TrianglePoints now use their parent KList's alpha when painting.
- KinfileParser and KinWriter now recognize 'alpha= #.#' in lists (0.0 to 1.0)
- using BEST rendering qualilty produces zig-zags on semi-transparent ribbons;
  width 0 pen gives gaps, and width 0.5 or 1.0 gives overlaps (zig-zags).
- modified ImageExport so PNGs would reflect any transparency in the ribbons
- deployed to cluster 11 Feb 2004

### 1.17 ###
- changed several classes to use driftwood.data.UberMap/Set
  instead of driftwood.gnutil.GnuLinkedHashMap/Set
- expected NOE radius now limited to [1.0, 20.0] and defaults to 4.5
- fixed bug in chiropraxis.* that kept a residue mutated to MSE from being rotated
- Connected the "more options" box in NoePanel to the cmd line
- added config file switches to control extra debug output from background jobs
- added -a (ambiguous) checkbox to NoePanel
- added user mod records for residues that have been moved
- MSE would not rotate properly due to a bug in chiropraxis.sc.SidechainAngles2
- tool.model.ModelPlotter now gives atoms names in Prekin format
- expected NOEs is now available for all models, whether or not you have data loaded
- replaced {1}, {2}, etc. with {pdbfile}, {molten}, {center}, etc.
- updated documentation to reflect new placeholders
- distributed to Rlab on 6 Feb 2004

### 1.16 ###
- changed NoePanel to reside in a collapsing area of the ModelManager
- text boxes in NoePanel no longer need ENTER to update
- ModelState is now cleaned up after a mutation is made, to avoid crashes
- added display of expected NOEs to the ModelManager
- updated docs to reflect Vincent's RNA tool
- fixed bug in moldb2.Model.restoreOrder() that caused new residues to appear
  at the end of the output PDB file.
- mutations that are made now create a USER MOD record.
  This IS NOT rolled back by Undo, but seems to be good enough for now.
- added GUI support for Aria NOE format (*.list files)
- added a symbol for kinemage center to NOEs/dots: {3}
- documented the symbols for NOE, Probe in the manual
- moved EDMapPlugin.FatJList to driftwood.gui
- Probe cmd line is now part of the dialog, instead of a menu item
  In the future, we could make this more elaborate
- something weird is happening with ED map radius for 3AL1: not true
  This is just a weird-shaped molecule, which produces unexpected illusions
- deployed to the world on 2 Feb 2004

### 1.15 ###
- imported king.tool.RNA* -- Vincent Chen's ED peak picker.
  Remaining issues: only parses ED visible when FIRST pick takes place
    doesn't know which lists are ED and which are e.g. molecule
- created a package hierarchy under king.tool to contain growing number of tools.
- ported most of the code in Kinglet over to KingMain. This facilitates
  having a dual purpose (logo/launcher) Kinglet, and would allow us to 
  use reflection in the future (to defer class loading and speed up start-up).
- updated king logo to reflect (C) 2004
- changed Kinglet to optionally act as a launcher button
- LSQ docking resets to Reference radio btn after doing dock
- LSQ docking erases markers when "Clear" is pressed
- Kinglet now offers three modes: normal, launcher, and flat (embedded in page)
- create MainWindow earlier on in KingMain.Main(), b/c ModelManager dlg depends on it
  This was causing the MM dlg to disappear when a file picker was invoked. Weird.
- documented new applet modes
- documented measure of deviation from Karplus' expected tau
- updated HTML and PDF versions of the manual
- really long pointIDs are now bumped up one line to not cover up measurements
- improved algorithm for deciding if mouse drag is primarily verical or horizontal
- removing minimum, preferred size of KinCanvas for embedded applet make layout behave

### 1.14 ###
- made changes to ModelManager2, ModelPlotter, and HingeTool
  to re-establish compatibility with driftwood.moldb2 changes in ver. 0.48
- HingeTool now displays tau deviation from f,y average (Karplus data)
- added sidechain mutation tool (doesn't do anything, yet)
- ModelPlotter now understands MSEs, too
- ModelManager2.replaceModelAndState() is now undoable
- refactored sidechain mutation code into chiropraxis.sc.SidechainIdealizer
- can now select a protonation state for histidine when making mutations
- deployed to Rlab on 13 Jan 2004

### 1.13 ###
- added cross-window picking for things with identical point IDs
- deployed to Rlab

### 1.12 ###
- can now animate through aspects with [, ]
- fixed Edit Props bug where middle click did both point and list
- lathe tool now offers to act only on lists that are currently displayed
- added auto-version check via kinemage.biochem.duke.edu; displayed on splash screen
- added public version update to the deploy-world task
- documented non-std config file URL (name=king_prefs)
- documented tools: LSQ docking, changes to edit props, move points, sidechain, viewpoints
- now do version check in background thread; ignore it if it takes more than 2 sec.
- extended ViewpointPlugin to include "virtual calipers" per Bob I.'s request
- tested and verified the non-std config for Kinglet; it works
- made version check user configurable; supressed stack trace on failure
- deployed to the world on 20 Nov 2003

### 1.11 ###
- moved king_prefs out of config/ subdirectory
- added option to make color swatches larger (accessibility for Jeremy)
- made picking radius user-configurable (accessibility for Jeremy, kids)
- lathe now picks up point colors
- updated lathe to avoid problems with second point on axis of rotation
- fixed KinWriter so it actually writes {"} when point IDs are repeated
- built in (and then commented out) a half-bonds coloring mode
  There are additional clipping problems to be worked out, and
  it really adds unneccessary complexity to a kinemage viewer.
- incorporated chiropraxis and EpsGraphics2D into the src code bundle
- made a Mac application bundle that's updated with new jars on every deploy-local
- enabled custom preferences for kinglets with <PARAM name="king_prefs" value="http://...">
- added support for Drag & Drop in the Mac application bundle
- fixed picking of labels, which was broken when configurable picking radius was added
- moving points has been split off from Edit properties, which now does point/list editing.
- can now move point in Z with mouse wheel or up/down arrow keys
- default mode for move points tool moves ALL kinemage points very near the picked point.
  This resuls in much more intuitive behavior for those unfamiliar with kinemage format.
- deployed to Rlab 7 Nov 2003

### 1.10 ###
- fixed perspective cues on balls
- added thickness cues to balls (exagerated, like for vectors)
- revisited line thickness cueing math to match true perspective more
- working with kinemages from Dezymer has revealed (at least) two issues:
      Parser is case sensitive: won't recognize @vectorList
      Parser: @balllist {points} color = cyan radius = 0.05
      (no space allowed before =)     ^             ^
  These are delibrate "features" of the parser and jive with
  the formal kinemage syntax document.
  I wrote an AWK script to correct these problems in the Dezymer kins.
- added try/catch to searching b/c Find Next would complain if kin had been edited.
- replaced iterator() with an array in search; should speed up searching.
- if Find Next fails, we now re-open the search dialog box.
- fixed that longstanding "view creep" bug
  Error was using "(int)(x+0.5)" instead of Math.round()
- added Edit | Kinemage options...; links to dialog from hierarchy view
- ESC now closes the Find dialog box. Code was as follows:
    closeAction.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0));
    closeAction.bindWindow(btnClose);
  We should add this to other dialogs as appropriate.
- using new EpsGraphics2D libraries, I could eliminate my custom subclass.
- fixed automatic file naming in ImageExport (Java bug; submit failed)
- PointEditor was introducing empty aspects into edited points
- added the +/- 90 degree rotations as ViewpointPlugin (make these menu driven?)
- added least-squares docking tool
- did some cleanup in driftwood and chiropraxis (removed original moldb)
- deployed to the world 4 Nov 2003

### 1.09 ###
- KiNG now defaults to "better" graphics if we're running OS X.
  This saves the user from having to enable antialiasing, but
  it doesn't make the dials and other custom components any prettier.
- mention Mac-specific switches in the new README.
- added color-by and calculation options to NoePanel
- removed setDominant(true) from BgKinRunner -- it was good for Probe but not noe-display
- fixed bug in chiropraxis resources that broke Met rotamers ttt and mmt
- improved handling of seg IDs in driftwood.moldb2.PdbReader
- rewrote ModelManager save function to include all headers, etc.
  This is fairly serious and could have broken model saving for some cases.
  Needs thorough testing before Cold Spring Harbor.
- also set the default state to ignore seg IDs for identifying residues
- deployed to world

### 1.08 ###
- re-implemented VectorPoint.drawFast() to use KPoint.fastLine()
- I can't find anything in OS X that will really draw a thin single line --
  horizontals and verticals are OK, but other things are too thick!
  Polygons with width reduced by 1 works for 2px lines but not 1px.
  Documented as a known problem for drawLine Radar #3308134
- parser no longer treats size= # as an unrecognized token
- apple.awt.antialiasing=on cannot be set from within the program
- Hierarchy | Transform | Scale now also adjusts ball radii at list level
- unclear why redraw after second pt pick in Ca Hinges sometimes fails on Mac
- refactored KinCanvas.paint() to take a quality setting
- image export now always uses the best quality setting for output
- used java.awt.Toolkit to get platform specific menu accel key (Cmd on Mac)
- fixed bug: Canceling File | Append results in an empty kinemage...
- added EPS export using the www.jibble.org EPS Graphics2D class.
- added read/preserve/write support for the 'ghost' attribute of points.
  We don't use this, but Mage does...
- added read/preserve/write support for the 'lens' attribute of lists and (sub)groups.
  We don't use this, but Mage does...
  Also added support for @lens. Again, we don't use it in drawing, but we preserve it.
- made tool close btn == select default tool (Navigate)
- made NoePanel a tab in the Model Manager
- turn off dots and NOEs groups when functions are deactivated
- deployed to Rlab

### 1.07 ###
- Sidechain rotations now idealize the sc first. This has to be undone
  as a separate step from the rotations, but oh well.
- removed Backrub tool from the ToolBox and put it's files in old/
- tried to fix command quoting issues for Probe, Noe-display on
  Windows/Mac/Linux. It's not easy to find something everyone likes...
- Never mind! My parser discards all quotes anyhow... Singles are fine.
- made Noe interface a little nicer, with selection for rescaling
- weirdness for initial rendering of ED maps appears to be related to
  the view and clipping. Other view bugs also exist...
  pick/(identify, measure) cause map to resize correctly
  mark only has effect when markers are on
  All that's necessary is to call kCanvas.repaint(), actually.
  And in fact, that's the fix: call kCanvas.repaint() after loading each map.
  The problem appears to be that Java requests a partial redraw -- the area
  under the dialog box. KiNG wants to redraw everything with the new map,
  but apparently bounds are set such that only the smaller area is updated.
  Another call to repaint() ensures the whole screen is redrawn and the full
  extent of the map is visible right away. This makes the UI more polished.
- added documentation for some tools and plugins.
- fixed a bug in help system caused by package reorganization.
- Allow groups/lists to span multiple lines or not?
  No. Looking for first number as start of points will fail on the syntax for
  bond rotations, which follows a "bondrot" word with unprotected numbers.
- moved sc idealization step into the rotations. Not too slow.
- added image export for PNG, JPEG
- deployed to Rlab

### 1.06 ###
- created the SolidObjPlugin to do lathes, etc.
- Probe, NOEs: quotes around exe name and tmp file name to quote spaces for Windows
- changed '-f rcsb' to '-f' for noe-display
- restored rotamer evaluation for sidechain manip.
- allow higher contour levels for ED (~30 sigma) for anomalous diff. maps
  A better fix would be to sync with the min/max for that map...
- swapped in Bryan's new, better icon (gold on black)
- [MM2:143:setCurrentDirectory()] causes exception *only* when Brian runs
  KiNG remotely using ssh -X from his Windows box. Works everywhere else.
  For the moment, this bug has to be classified as not reproducible.

### 1.05 ###
- moved data structures, reader, writer, and Engine into king.core
- king.core is entirely independent of the rest of the code and could
  thus be used in other projects that need to read and write kinemages.
- fixed bug in KinfileParser that didn't recognize @#aspect tags
- fixed another bug (copy-paste mistake) that discarded too many tokens
- moved most tools into king.tool; all other code is independent of
  the king.tool package, so these can change more easily or be left out.
- new KiNG package hierarchy:
  + driftwood.**    Things I anticipate are recyclable: widgets, helpers, etc.
  + king.*          All GUI elements, user interaction, essential tools, etc.
  + king.core.*     Data structures, reader/writer, rendering code
  + king.tool.*     Tools loaded by reflection that are non-essential
- refactored Remodeler out of ModelingTool
- moved SidechainTwister to SidechainRotator; made ScRotTool.
  These allow sidechains to be modified under the new model manager regime.
- "original" is now a rotamer choice for refitting sidechains
- deployed to Rlab

### 1.04 ###
- increased depth-cueing from 5 levels to 16 (!). Much nicer pictures.
  Can change # by editing COLOR_LEVELS in KPaint, then [clean] then [build].
- deployed to Rlab

### 1.03 ###
- started work on ModelManager2, which will allow multiple tools at once,
  multiple visualizations, and the ability to undo changes to the model.
- added abstract class ModelingTool, which is the parent of the new HingeTool
- added a C-alpha trace to ModelPlotter
- added Undo to ModelManager
- introduced editing of Probe command line
- allowed user to choose model#, alt conf at load time from ModelManager
- bug fix: Cairo end marker goes on kinemage C-alpha, not modified C-alpha
- apparent divergence of color in ribbon lists is due to depth cueing
- removed old ModelPlotter, CairoTool, ModelManager, etc
- added NOE control panel; need Coggins' help to get correct cmd line

### 1.02 ###
- accounted for merger of driftwood.string into driftwood.util
- error messages are now piped through driftwood.util.SoftLog.err
- stack traces are now piped through driftwood.util.SoftLog.err
- slightly increased number of visible kins to 4
- printing DOES use highest quality drawing. Maybe Bryan had an old version.
- added error log viewer under Help.
  This should help novice/GUI users to diagnose problems.
- fixed a subtle bug in Kinemage.appendKinemage() where masters that are
  ONLY pointmasters were lost in any kinemage that got appended to an open one.
- mergers with pointmasters can still cause problems if there's overlap in bits used.
- line shortening was slow in some cases with lots of balls, not because of
  object creation for the HashMap(KPoint, Double) but because the KPoint.hashCode()
  function was causing many collisions when coordinates were (smallish) integers.
- added link to manual in auto-installer packages

### 1.01 ###
- fixed copyright date in license to be 02-03, not 00-03
- Kinemage:90: replaced getStandardMap() with getFullMap()
  This should fix problems with interpretting e.g. 'skyblue'
  and 'default' as legal colors.
- changed build.xml so that deploy-local doesn't change MolProbity
- fixed bug in KinfileParser that would create an extra point at 0,0,0
  if the end of a list was followed by one or more kinemage comments.
- fixed error reporting to give line numbers from 1 instead of 0
- KList: changed default ball radius to 0.2 (seems like Mage)

### 1.00 ###
- updated all version numbers to 1.00 in the documents.
- fixed minor layout bug that could affect sliders in EDWindow
- deployed to World on 15 Aug 2003

### 0.99 ###
- this is release candidate 2
- fixed bug in chiropraxis where only the last peptide twist was being kept
- moved MagnifiedTheme to driftwood.gui
- fixed problem with moldb2's handling of seg IDs that broke on certain Reduce'd PDBs
- added KingPrefs.jarFileDirectory, which is used to locate the Probe exe.
- updated ProbePlotter and BackrubTool to use probe or probe.exe as found,
  or if nothing is found then assume probe is on the path.
- cannot set -Xmx switch in InstallAnywhere binaries (apparently)

### 0.98 ###
- preparing for 1.00 release (this is release candidate 1)
- deployed to Rlab

### 0.58 ###
- started Dock3On3Tool to test my 3-point docking, which will feed into sc mutations.
- verified that the Probe commands do use -drop correctly
- put scollpane around large groups of peptide-twist dials in CairoTool/PeptideTwister
- ED map tool now supports CCP4 maps too

### 0.57 ###
- updated manual format (one huge page)
- changed Tools and Plugins to link to anchors within the main help file
  Now all documentation appears in the PDF too (except licenses and kbd bindings).
- removed 2 unused classes (EmphasisTool, PositionReader)
- replaced Rotation with driftwood.r3.Transform
- help menus have been tested; they all still work
- distributed to the World

### 0.56 ###
- Backrub does better with stuff now, but not double modifications...
- Backrub should now handle even double modifications with dots
- fixed bug in ProbePlotter where group was not properly inserted (?)
- masters now have correct, off-is-dominant behavior
- Emphasize tool has been deprecated and removed from menus
- ModelManager and ProbePlotter were updated so that a temporary PDB file
  from MM reflects previous changes to the model.
- peptide twisting now is available by hand
- found and fixed bug in r3.Triple that caused sc to disappear sometimes
- added cut/copy/paste popup menu for text editing window (thanks to R. Bateman)
- made peptide twisting an optional part of Hinge

### 0.55 ###
- patched a bug in KPoint.getColor() that returned 255 to mean invisible
- documented CairoTool and removed 10-residue limit
- measures now turns on/off markers, too, and clears list of marks
- wrote KPaint and KPalette to pave the way for a new colors architecture
- added installer/king_Build_Output to [clean] target
- finished with new color model; now to test it
- seems to work just fine (needs to be tested with @colorset's)
- created a graphical color picker for use in list and point editors
- redesigned the list editing box to accomodate the color picker
- gave ModelManager the ability to write out entire PDB files
- made ColorPicker support the colors in Kinemage.getNewPaintMap()
- clicking empty part of color picker now deselects all colors
- double click on hierarchy tree now does Edit Properties instead of expand/collapse
- actually, in addition to. I'm not sure how to disable expand/collapse.
- color picker now works with point editor too
- fixed bug where ribbonlists were read as trianglelists
- normals are still not quite right but I can't figure out why
- deployed to Rlab

### 0.54 ###
- created ProbePlotter, which does Remote Update-style dots in a
  worker thread in the background. This ensures that the interactive portion
  remains responsive. It gives a MUCH nicer UI experience.
  Should retrofit Backrub.
- Backrub refit to use GnuLinkedHashMap/Set for 1.3 compat.
- Everything should now be entirely 1.3 safe!!
- Hah! Found a 1.4 JComponent function called on a Box in AGE
- deployed to World
  
### 0.53 ###
- copied BackrubPlotter to ModelPlotter and simplified it to work with moldb2
- modified ModelManager to use MolDB2
- modified CairoTool to use MolDB2 (primitive version now works!)
- started work on export to VRML (dots, spheres, manual color)
- set ModelManager to select @pdbfile automatically
- other improvements to ModelManager UI
- started building UI for CairoTool to make it nicer
- made ModelPlotter turn on/off H's and use std masters
- made monochrome mode MUCH more sophisticated, with colors
  now distinct and based on POV-Ray grayscale algorithm.
- added tau dev and Rama analysis to CairoTool
- model manager can write basic PDB file of changed residues
- CairoTool is fairly useful now; needs dots

### 0.52 ###
- added clear() to KList
- reworked BackrubPlotter to draw into a fixed set of lists
- reworked BackrubTool to place those lists directly into the kinemage
- added 'not water' option to Backrub's Probe dots command
- deployed to Rlab

### 0.51 ###
- started on CairoTool to allow Ca-Ca rotations (hinges)
- moved AngleDial to driftwood.gui; gave it an upgrade
- removed minimize-on-middle-click "feature" of Backrub
- fixed dial layout issue (SidechainTwister needed to be stretched)
- removed a LinkedHashMap from UIDisplayMenu (caused JVM 1.3 to crash)
- moved Configure from File menu to Edit menu (also noted in manual)
- deployed to Rlab

### 0.50 ###
- added "Go To" button to view editor for Jane
- fixed bug in high-qual sphere renderer that misplaced highlights
- started on a model manager plugin that will be the basis of
  C-alpha hinges (working name: Cairo) and sidechain twists
- model manager is finished (at least the first draft!)
- Edit Properties tool now allows click-drag relocation of points
  Should be especially useful for labels!
- fixed logic bug in label-picking code (y-axis sign issue)
- fixed KinfileTokenizer.advanceToKeyword() so it reports EOF correctly
- combined with limit to number of errors reported in parser, this
  should make I/O more robust to being fed absolute crap :)
- changed Backrub rotamer selection to only alter chi angles
- allow lysine tips to rotate
- deployed to cluster

### 0.49 ###
- fixed picking bug for 'P' points in a polyline
- moved all Display menu choices into their own class
- allowed selection of 4 levels of rendering quality from Display menu
- can show frame rate in terminal using preferences file
- allowed SidechainTwister to set new rotamer without multiple Probe runs
- allowed EDMapPlugin to load maps over the web using applet parameters

### 0.48 ###
- added ".mbk" as an O map file extension (the default from CCP4)
- added display of rotamer quality to Backrub
- added tooltips to Backrub's info readouts
- deployed to world for Mid-Atlantic Cryst. conference

### 0.47 ###
- enabled display of rotamer frequency by using chiropraxis.sc.RotamerDef
- may have decreased number of Probe deadlocks by creating all input ahead of time
  and buffering all output before interpretting it.
- if not, driftwood.util.ProcessTank has a timeout counter that should be able
  to kill rogue Probe runs that never produce any output.
- eliminated allocation of new Shape objects during high-quality rendering
- changed AngleDial to use Java2D function calls for painting (draw(Shape), etc)
  This has no effect on the appearance under Mac OS X -- their AWT drawing
  functions are genuinely broken...
- runaway Probe catcher does actually work -- this is a real boon
- deployed to Rlab

### 0.46 ###
- created IndentBox and FoldingBox in driftwood.gui to enable recessiveon behavior
- can read, write the 'recessiveon' property
- can edit the 'recessiveon' property from within KiNG
- added SidechainTwister to enable mobile sidechains, esp. for Backrub
- fixed drawing of 3HG2 in ILE
- added controls for moving sidechain of central residue to Backrub
- added (duplicate) Help menu to Backrub's palette
- added list box for choosing rotamers (now just have to type them all in!)
- chiropraxis.sc now knows all rotamers (still can't assess quality)
- distributed to Rlab

### 0.45 ###
- started work on AngleDial, which will be used in future versions of Backrub
- replaced sliders in BackrubTool with AngleDials
- changed Backrub to minimize on RMS tau deviation
- added code to drain input and error streams from Probe job;
  hopefully, this totally avoids all lockups and hangs
- fixed AngleDial layout bug
- moved Backrub's buttons into menus
- added nice visual cues to AngleDial to show which one's active
- background kinemage loader now catches all Throwables.
  This should ensure the thread can exit (ab)normally, hide the dialog box,
  and return control to the user after a wacky file crashes my parser.
  This should also deal with an OutOfMemory condition...
- hierarchy tree now responds to keyboard shortcuts other than alt-(letter)
- added to Backrub documentation
- deployed to Rlab

### 0.44 ###
- the previous version crashed pretty regularly, though arbitrarily, when
  using Probe dots. The cause seemed to be that sometimes the stderr buffer
  (4096 bytes) would fill up with the progress messages about what was being
  processed. This would cause Probe to block on I/O, and would hang the program
  once KiNGs kinemage loader blocked on Probe's stdout...
- the solution: use -quiet in the Probe command line!
- deployed to Rlab

### 0.43 ###
- removed extraneous view functions from Kinemage
- created a function that appends one kinemage to another
- fixed Append bug: can't initialize an empty kinemage or else you get a nonsense view
- set up the new File | Save system, with auto-versioning and command line awareness
- enabled support for @listcolordominant
- cleaned up marker point handling so we can use them in @marklists
- modified TrianglePoint.paintHighQuality to try to eliminate lines...
- fixed a bug in PrefsEditor (Boolean.toString()) that broke Java 1.3
- updated BackrubPlotter to handle moldb.AminoAcids and their sidechains
- Backrub now carries static sidechains along for the ride when backbone is moved
- fixed BasicTool so user can't close tool dialog manually
- added Probe dots to Backrub
- deployed to Rlab

### 0.42 ###
- started KinfileParser to do cleaner interprettation of kinemage files
- set up functions for reading the primary data: hierarchy + points
- new parser needs too much memory to do its job (>100Mb)
- fixed part of the problem: StringBuffers were wasting space
- fixed the other part: point IDs of {"} were not being handled correctly
- added @title and @command to KinWriter
- added ability to write @colorsets from KinWriter
- finished adding support for all core features to KinfileReader
- implemented reading and writing of @aspect entries
- after much hassle, got the background file loading system up and running

### 0.41 ###
- stoped EDMapPlugin from being loaded when KiNG runs as a applet
- relabeled properties in the Edit Group/Subgroup/List boxes
- added cut, paste, new icons to KingPrefs
- merged HierarchyWindow into KinTree
- created popup menu for the KinTree
- moved ReflectiveAction to driftwood.gui
- added tooltips and mnemonics to hierarchy window
- documented "xmap" and "omap" applet params
- wrote a new tokenizer (KinfileTokenizer) based on the explicit
  kinemage file format v1.0 document I'm developing.
- changed central angle to steps of 0.2 deg in BackrubTool
- fixed a minor bug in KinTree.onDelete handling of kinemages
- deployed to world

### 0.40 ###
- changed kinemage picker into a JList instead of a JComboBox
- renamed Explore menu to Edit
- moved mouse options from Edit to Tools
- removed tree view from main window; removed Modify menu
- made the Modify tree and menu into a floating "Hierarchy window"
- updated user manual
- deployed to Rlab

### 0.39 ###
- made KiNG recognize @marklist, @ringlist, @fanlist
- rings and fans won't look right until we handle marker styles better
- introduced the Plugin abstract class
- added Tools menu to the menu bar to contain Tools and Plugins
- transformed EDMapTool into EDMapPlugin
- added Tools and Help items for EDMapPlugin
- added a PARAM tag to Kinglet ("xmap" or "omap") that allows Applets
  to load (from a URL) and display electron density.
- relocated tools to the Tools menu and removed the ToolBox dialog

### 0.38 ###
- fixed perspective
- fixed ball-triggered line shortening (but it needs more!)
- restored Tools to working order (they now use TransformSignals too)
- added more colors to the ColorManager so we can shade ribbons better
- updated drawing code in TrianglePoint to use new lighting model
- changed Backrub mouse interface to use middle button for selecting a C-alpha
- changed to using a HashMap in Engine to do shortening of lines by balls.
  This is much more robust, though somewhat slower for lots of balls.
- updated Backrub to display all taus, phis, and psis, all of the time
- added *.ki{n,p,p1,p2,p3,...} file mask to File | Open and File | Save as
- deployed to Rlab

### 0.37 ###
- introduced TransformSignal and TransformSignalSubscriber
- introduced PaintRegion and Paintable...
- then decided to remove them again. However, render system will still be
  updated to use TransformSignals and to occur in one pass.
- heavy modification to Engine, all of the KPoint subclasses
- updated transform and drawing in DotPoint, BallPoint, LabelPoint,
  MarkerPoint, TrianglePoint, VectorPoint
- fixed stereo and printing

### 0.36 ###
- added explicit setSelectedDirectory() to Backrub.onOpenPDB()
- removed useless interface chiropraxis.backrub.BackbonePlotter
- improved rendering of multiple backbone modifications
- added buttons to Backrub to keep and discard current changes

### 0.35 ###
- all Tools are now created using the Reflection API,
  so they can reside in external JARs
- added support for @pdbfile in Reader, Writer, Kinemage, and BackrubTool
- distributed to Rlab

### 0.34 ###
- BackrubTool now uses Ramachandran criteria too...
- enabled mouse wheel for moving peptides
- various changes to library classes to improve optimization speed
- even so, I had to settle for two choices -- local and full optimization
- in-memory molecular model updated when done with each residue (choice)

### 0.33 ###
- cleared markers when changing kinemages
- ED Map tool now tries to open a map as soon as it's selected
- made slight change to initial position of ToolBox to prevent it from
  appearing off-screen if the main window is maximized.
  This only seems to be a possibility under Windows, not Linux
- renamed KingEdgePlotter to EDMapPlotter
- created BackrubTool and BackrubPlotter

### 0.32 ###
- fixed fencepost bug in driftwood.isosurface that was causing ArrayIndexOOBEx
- fixed RecursivePointIterator.nextImpl() to skip over points/lists/groups that
  are turned off, or in the case of points, unpickable
- fixed bug that wrote version and buildnum to ~/.king_prefs
- changed README, LICENSE, and BUILDME to HTML
  This avoid translation among LF, CR, and CRLF line endings and provides a
  "friendlier" user experience.
- updated manual (PDF and HTML)
- updated main logo to reflect URL, (C) 2003, bigger (400x400)
- modification to whole words to make word break more stringent
  break is now on space, comma, semi-colon, or colon ONLY
- Find Next now checks to make sure the points it finds are totally visible
- migrated this file (CHANGELOG) to HTML format

### 0.31 ###
- improved map file selection process with better filters
- migrated to building with Apache Ant (ant.apache.org)
- initial window size now depends on screen resolution
- added "Smooth graphics" (anti-aliasing) as a graphics option
- fixed a bug where exported map lists didn't know their owners
- made ReflectiveAction report source of InvocationTargetException rather than ITEx itself
- commented out an error message from KinParser (displayed when it hits 2animate, etc)
- FIRST PUBLIC DISTRIBUTION!!!

### 0.30 ###
- moved TablePane to driftwood.gui and fixed multi-row problems with it
- created File | Export menu and moved XML to it
- registered up/down arrow keys as equivalent to mouse wheel
- all mouse drags can now make vertical/horizontal distinction like zoom/clip
- restored HighlighterTool (now named EmphasisTool)
- started work on ED Map tool
- wrote KingEdgePlotter to create isosurfaces directly from MeshMarchingCubes
- wrote EDMapWindow to display each loaded map
- completed EDMapTool
- bugfix: Engine reported out-of-bounds pick on empty window

### 0.29 ###
- massive refactoring of tool archtecture that should result in much
  cleaner behavior by tools.
- at the moment, only basic tool is available
  (no highlighter or contact map tool)
- text window open at startup is now a preference
- using Explore | Find point is now just like picking the point
- changed Marker rendering and choose new markers for measures
- added HTML help for each tool
- now using radio buttons for tool selection in Toolbox
- bundled gnu.regexp into king.jar -- eliminated dependence on lib/*
- flatland is now a kinemage property
- toolbox opens at startup by default (configurable)
- rotate/scale now done either around object centroid or (0,0,0)
- writing points now writes {"} when appropriate
- added Edit Props tool and "unpickable" in point editor
- added falling bear to internal kinemages

### 0.28 ###
- started working on parser: 26.5 sec
- using my own char buffer instead of StringBuffer: 25.4 sec
- using my parseDouble instead of Double.parseDouble: 27.4 sec (!)
- creating Strings takes about 40% of the total time,
  parsing doubles takes about 30% of the total time.
- numeric tokens (doubles) are about 60% of all tokens
- therefore, there's a potential for parsing in about half the time
  Mage loads this file in less than 15 sec
- my rewritten parser for better doubles: 79 sec (!)
  how am I making this so much worse?
- some logic errors caused lots of exceptions being raised
  now time is down to 19.6 sec
- found one leak in UIMenus.rebuildAnimationsMenu()
- found another in KinReader.install() (kinList was preserved!)
- found another in JComboBox.removeAllItems() (reported to Sun)
- replaced two pane text edit window with the simpler, text-only version
- merge (-m) is default command line behavior when two or more files are specified
- can use (-s, -single) to open kinemages individually
- fixed a bug in KinReader I introduced when hunting memory leaks;
  it caused open-merge to fail on the second kinemage
- updated documentation to reflect changes in 0.28

### 0.27 ###
- enabled File | Configure for applet
- updated documentation (minimal coverage of new features)
- fixed fwd-back-fwd-back bug in HTML help
- added HSV color cone to list of internal kinemages
- changed mnemonic for Modify menu from T (Tree) to M
- made some changes to KinParser to eliminate some NumberFormatExceptions
- added auto-detection and decompression of gzipped kinemage files

### 0.26 ###
- added ability to edit points; splits lists at a point;
  and edit the list, subgroup, and group a point belongs to.
- added ability to merge lists (simpleminded)
- made delete Kinemage have same effect as File | Close current
- added stereo, including menu options and config option
- added ability to transform groups, subgroups, lists, etc.
  Operations are rotate, translate, and scale.
- fixed minor bug in saving views: matrix would sometimes write sci. not.
- created TablePane and used it to re-write the layout of PointEditor
- kinemage-specified display properties are now always set,
  except for cueThickness, which defaults to false for all kinemages in KiNG.
- changed Find functionality to operate like Mage, with Find/Find next

### 0.25 ###
- this version is for stabilization before release...
- changed big markers key to W (Jane)
- changed green and lime color defs slightly
- updated palette kinemage
- put gray background behind explore/modify tabs
- changed pinwheel hotzone to top 1/6 of screen;
  (unused) zone at bottom is also now 1/6 of screen.
- fixed bug in whitebg color creation (bad coefficients)
- adjusted colors extensively, esp. on white background
- removed configuration of some things (buttons, etc)
- text window no longer jumps to center, unless it's been closed
- font magnification is a bitch to set after we've created a GUI
- created GUI for changing preferences and saving them
- made "Big markers" and "Big labels" separate controls
- markers can't depth-cue b/c they use multiple colors as it is
- added HTML documentation of keyboard shortcuts

### 0.24 ###
- improved handling of animate/2animate while still maintaining the
  general purpose facility for animations. Groups were also labeled
  with * and/or % as appropriate.
- rearranged layout of controls, added tooltips to a few
- changed Move & Measure right mouse button to always
  zoom AND slab, but only one or the other per click-n-drag session.
- removed label box; all drawing is now done directly on graphics area.
- added implementation of aspects
- did minor updates for user guide
- added dialog to edit views (rename, delete, reorder)
- upgraded KingPrefs to be descended from Props
- added a tip of the day to the controls panel (optional)
- added Auto-animate feature (configurable timing)
- added font-size preferences
- added Home and Back buttons to the Help browser
- added Auto-rock to Display menu (variable timing, in .king_prefs)
- made text window open automagically by default (configurable)
- made GridBagPanel easier to use (?)
- added ability to edit list width and radius
- added hooks for arrow keys and mouse wheel into tool archetecture
- changed references to XknWriter to be reflective, so XML libraries
  won't be loaded across the network for applets.

### 0.23 ###
- finally solved the JTree Ctrl-X, Ctrl-V mystery -- those keys
  were bound in a parent map of the JTree InputMap.
- added "merge (sub)groups" behavior to paste command
- masters are now properties of groups, subgroups, lists.
  This will facilitate cut-and-paste between kinemages.
- added quoting of < > & in kinemage text for proper HTML display
- masters now start on/off based on whether they have any targets that are on.
  This includes pointmasters, a feature Dave has been requesting.
- added support for @whiteback, @onewidth, @thinline, @perspective
- put clipping on a linear scale 0-800, like in Mage
- reworked views to be span-based, so that views are stable
  even through kinemage merges, etc.
- added ability to edit kinemage properties (@onewidth, etc.)
- renamed Edit menu to Explore; Tree menu to Modify

### 0.22 ###
- restored the ability to write XML, with class XknWriter
- replaced Enumerator with Collections.enumeration()
- improved the highlighter tool
- increased default size of graphics area
- rearranged some elements of the UI to suit Jane

### 0.21 ###
- came up with good formulas for colors on a white background
- replaced Colorset class with functions in ColorManager
- use HSV color palette all the time, for all kinemages
- added point color to output kinemages
- made left/right arrow keys do rotation about Y-axis for Bryan (KinCanvas)
- added Highlighter tool for use with Chiropraxis solutions
- added ability to set font magnification in .king_prefs
- fixed bug with monochrome option that caused invisble things to be shown
- fixed markers in MMTool

### 0.20 ###
- began re-organizing kin/group/subgroup/list/point class hierarchy --
  groups and subgroups are now distinct classes that can't be nested
  arbitrarily
- began creating sub-packages
- decided to organize files into directories but not use additional packages
- made search, kin writing work as external iterators
- improved color/palette system
- added internal palette kinemage to Help menu (like Mage)
- added ability to edit groups/subgroups/lists (including list color)

### 0.18 ###
- made balls write out their individual radii

### 0.17 ###
- added nohilite (nohighlight) tag to balllists
- tried to make point ID the contents of the  tag (undid it -- no good)
- created Palette to replace MagePaints
- added keyword @hsvcolor {name} hue_0-360 [saturation_0-100 [value_0.0-1.0]]
- removed jump-to-letter from kinemage tree display
- added Properties to tree edit menu
- added cut/paste to tree menu
- added up/down to tree menu
- added ability to create new groups from the tree

### 0.16 ###
- made KiNG start in current directory instead of home directory
- created ContactMapTool and adapted it to MolProbity
- fixed sign/handedness problem for dihedral measures in MMTool
- restored "Set Center" to "Pick Center" in KinCanvas, KingPrefs
- decided to keep XML and keep/adapt ContactMapTool
- changed 

tags to tags in KingPoint.emitXML - other small XML changes to more closely match kinemage format - added ability to rename groups from the tree - can write out @animations but XML will crash with old-style 'animate' group flag - made masters the only legal target for AnimateGroups; custom masters are now created on input to control 'animate' groups. ### 0.15 ### - started adding ability to write XML - KiNG can now write out its entire data structure (except animations!) as XML - KiNG can also write out its entire data structure in kinemage format, except animations - improved ability to read old kins without point IDs (WorldMap.kin) -- still not perfect - fixed printing to match resolution of graphics area -- now more WYSIWYG - added pretty printing to VectorPoint and DotPoint - fixed bugs in kinemage writing code - added ability for groups to write animate/2animate attribute to kinemage - added warning before overwriting existing files - reworked the tool architechture, with dynamic loading and @kingtool keyword - added @flat[land] keyword and tool - fixed text propagation, so re-writes get saved to disk - added ability to open multiple windows - fixed bug in KinTree.onDelete that caused reloading of model - added ability to configure via .king_prefs file in home directory, including ability to create this file for the user. - added ability to save views to the Views menu ### 0.14 ### - changed EM_ON_OFF to EM_EDIT_GROSS in KinTree.onDelete() - made printing visible to applets (asks user for permission) - distinguished b/t "Close" and "Close All" -- this will matter for authorship (maybe?) - added reference to host applet in KingMain, to enable future interaction w/ browser - updated user manual with Saving & Printing ### 0.13 ### - wrote a reasonable first draft of the user manual - elaborated on File | Merge to handle multi-kinemage files when there is no current kinemage - reworked the tree mechanism so I can start adding functionality - added 'Toggle visibility' as a tree command - added 'Delete' as a tree command (buggy) - changed AbstractGroup and all descendents to *contain* an ArrayList called children, rather than be directly descended from ArrayList. This allows us to implement MutableTreeNode without naming conflicts. - ironed (most) bugs out of 'Delete' tree command - added GridBagPanel for future construction of dialog boxes - added printing (and thereby, PostScript export). java.awt.print makes this *so* easy -- 10 minutes! - set minimum size for balls (so they can't disappear when zoomed way out) ### 0.12 ### - added 'unpickable' property to points and KinReader - added colorsets: @colorset {colorset_name} mage_color - added z-translation to default tool and decided 'Alt' and 'Meta' are not viable modifiers - changed KinReader to allow list name to come anywhere in list line (but a name is REQUIRED before points will be parsed) - updated icon to a purple 'K' - added label lists (with 'center' or 'right' options per point) - added marker lists (with s= style_code per point) - added triangle lists (shading on ribbonlists remains to be done) - added shading on ribbon lists for P-L type ribbons but not PT-T type ribbons - fixed shading to work with PT-T type ribbons in most cases ### 0.11 ### - Reworked file opening to handle multiple files at once, and files from command line. - added more info to Help About (Java version, home; gnu.regexp version) - added icon to MainWindow - added KingPrefs, which will be expanded in the future - made balls look more like Mage balls - added ToolBox and a DefaultTool which has old functions, plus angle & dihedral - added translation (flatland scroll) - *finally* added line shortening by balls/spheres to rendering system also eliminated drawing of zero-length lines performance takes a slight (3-5% ?) hit, but not too bad - created MarkerPoint and added ability to mark points to the DefaultTool ### 0.10 ### - improved handling of plain text from kinemages - added @_span support to KinReader, fixed centering bug - added most Mage keyboard shortcuts - added System.exit() call to try and force shutdown in application - improved quality of line rendering for VectorPoint, etc. at some cost to speed - added @animation keyword: @animation {anim_name} {master1} {master2} ... - added 'nobutton' to @master - fixed a bug in KinReader's handling of r= and w= point parameters - added Edit | Find point... dialogs using dynamic regexp library - made Views and Animations menus use radio button symbols - made search only apply to live points ### 0.09 ### - altered depth cueing by thickness scheme - moved file loading to background thread and implemented progress meter - began Kinglet, the KiNG loader applet - began text display-and-edit dialog (UIText) - added shutdown handlers - began adding pointmasters -- complete. Supports multiple independent masters a-z and 1-6 - added ReflectiveRunnable and reworked thread-handling in KinReader - added support for animate and 2animate ### 0.08a ### - restructured KinReader for easier incorporation of new features - added masters - added picking of saved views from the menus - fixed preTransform() to only go if button is on -- this is noticable for kinemages with e.g. 100,000 points. - increased level of control of rendering -- added Display menu - updated UI, including 4 new text fields for info display and an edit menu to the tree - added pickcenter button, for old times' sake ;) ### 0.07a ### - resumed development work in my spare time - made transform() traverse the data structure - made time-critical rendering & transform use get() instead of iterator() -- did this really help? - started installKinemage() in KingMain -- we're almost ready to use File | Open... - File | Open works (primitive, but it works) - rebuilt interface - more work on File | open/append/close - added ability to switch among loaded kinemages ### 0.06a ### - Data model can have its root set and will calculate the size of the object, but this needs some work to be clean. - Reworked drawing model a bit, storing attribs in the Engine and adding list colors. - Added partial drawing of lines. It slows us down a measurable amount, but the effect is probably worth it. (?) - We can work with a full CA trace of the ribosome though at about 10 frames/sec, though we get funny orange specs... what are those, waters? - Added balllists and dotlists to Kinemage IO. Orange specs are actually pink lines to nowhere that Prekin builds for het groups, like ions. - Added "point picking" with display of point ID in a label above the kinemage, and simple distance measuring. - Extended capabilities of KinemageIO. Can now read and display -cass, -cbetadev, -aasc, and (probably) more - Eliminated what appeared to be a memory leak in KinemageParser relating to StringBuffer.delete() - Replaced hashCode() in KingList to provide acceptable performance for the tree display... ### 0.05a ### - enabled data tree to build list of currently visible lists - added experimental normalization of matrix... causes very odd effects! - finally got REAL matrix normalization going -- it's basically a matter of normalizing the length of each row vector to one, and taking the cross products to insure the row vectors are mutually orthogonal. - added on/off buttons like Mage has - added menus, which so far control white background and antialiasing - coordinated the two 'show markers' commands - started work on .kin file decoder -- can read in thumbnail.kin (1UBQ from MolProbity) ### 0.04a ### - added tree display and implemented TreeNode in KingGroup and KingList - wrote KinemageParser to simplify picking apart kinemages - added popup menus to tree display - I missed something, somewhere -- using the original Graphics drawLine() and fillOval() methods WITH NO STROKES AND NO ANTIALIASING cut rendering time by a whopping 90%! - took steps toward unifying the data model, so that events can propagate up and down the tree - added picking and centering via right mouse pick ### 0.03a ### - display works and mouse moves the model - restructured data system for self-drawing points and table models. - added VectorPoint, DotPoint, and BallPoint - made depth cueing work - fixed clipping and zooming to be relative to (1) object size and (2) screen size ### 0.02a ### - started constructing a real GUI framework, which so far supports zooming the test figure. - 'turned on' z-buffering (previous logical error) - fixed one problem with the coordinate system (sign of y), but others still seem to exist... ### 0.01a ### - made 'shells' of many important classes for data storage and manipulation - implemented rotation and showed that it works - implemented z-buffering - did first rendering test, of a 5 line figure. 10^6 frames in 5.4 sec! - un-did threading -- too complicated to coordinate large shared data structures - did rendering test w/ Graphics2D and 3 px pen -- as fast or faster (!) - unbelievably, turning on antialiasing actually seems to SPEED THINGS UP by ~20%

king-2.21.120420/king/deploy-world0000644000000000000000000000251111531230014015074 0ustar rootroot#!/bin/bash set verbose ############################################################################## # MUST RUN ant dist BEFORE THIS SCRIPT! ############################################################################## # First, update Rlab's copy: # ./deploy-rlab # Copy src, jars to download site for distribution: scp dist/king.?.??.??????*.zip kinemage.biochem.duke.edu:/websites/kinemage/downloads/software/king/. # Provide ZIP for auto-update: scp dist/king.?.??.??????.zip kinemage.biochem.duke.edu:/websites/kinemage/downloads/software/king/current2 # Update marker for auto-update: scp resource/king/version.props kinemage.biochem.duke.edu:/websites/kinemage/downloads/software/king/king2.version.props # Update docs on website: scp -r dist/king-?.??/doc/. kinemage.biochem.duke.edu:/websites/kinemage/downloads/software/king/docs # Update manual on website: scp resource/king/html/king-manual.html kinemage.biochem.duke.edu:/websites/kinemage/kinemage/king-manual.html # Update manual pdf on website: scp doc/king-manual.pdf kinemage.biochem.duke.edu:/websites/kinemage/downloads/PDFs/king-manual.pdf # # MolProbity will be updated separately, with a new king.jar in Subversion. # echo "*** REMEMBER TO REBUILD THE WINDOW AND LINUX BUNDLES ***" echo "*** REMEMBER TO MAKE A MAC DMG AND UPDATE THE VERSION NUMBER IN INFO.PLIST ***" king-2.21.120420/king/doc/0000755000000000000000000000000011744310054013307 5ustar rootrootking-2.21.120420/king/doc/LICENSE-SUN0000644000000000000000000000320711531212662014761 0ustar rootrootCopyright 2000 by Sun Microsystems, Inc. All Rights Reserved. Sun grants you ("Licensee") a non-exclusive, royalty free, license to use, and redistribute this software graphics artwork, as individual graphics or as a collection, as part of software code or programs that you develop, provided that i) this copyright notice and license accompany the software graphics artwork; and ii) you do not utilize the software graphics artwork in a manner which is disparaging to Sun. Unless enforcement is prohibited by applicable law, you may not modify the graphics, and must use them true to color and unmodified in every way. This software graphics artwork is provided "AS IS," without a warranty of any kind. ALL EXPRESS OR IMPLIED CONDITIONS, REPRESENTATIONS AND WARRANTIES, INCLUDING ANY IMPLIED WARRANTY OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NON-INFRINGEMENT, ARE HEREBY EXCLUDED. SUN AND ITS LICENSORS SHALL NOT BE LIABLE FOR ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING THE SOFTWARE GRAPHICS ARTWORK. IN NO EVENT WILL SUN OR ITS LICENSORS BE LIABLE FOR ANY LOST REVENUE, PROFIT OR DATA, OR FOR DIRECT, INDIRECT, SPECIAL, CONSEQUENTIAL, INCIDENTAL OR PUNITIVE DAMAGES, HOWEVER CAUSED AND REGARDLESS OF THE THEORY OF LIABILITY, ARISING OUT OF THE USE OF OR INABILITY TO USE SOFTWARE GRAPHICS ARTWORK, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. If any of the above provisions are held to be in violation of applicable law, void, or unenforceable in any jurisdiction, then such provisions are waived to the extent necessary for this Disclaimer to be otherwise enforceable in such jurisdiction. king-2.21.120420/king/doc/hacking-king.pdf0000644000000000000000000047316711531212662016356 0ustar rootroot%PDF-1.3 % 2 0 obj << /Length 1 0 R /Filter /FlateDecode >> stream xڝXnF}Wc\ /ES4iڠiPyˊ\kS\f~},uڄaٳgΜF?(iAd)eq#2SKoې Kh׳lFŊ~4ss_ۏPHMO]O7tH{߮Yd\q,Ǩ!},V תe[ʒzMkUJT)ٔnB"іz{9`Z`Ypc`Z](IF%-}07Zn23e}(+ U T++RHa%Y)DxI_3k~k MlGl*> ӫbhXۓsFVȶ) 3O/ar5ӃnX4 T4KmT_, fJnjsh{or)h"t62]ȾWAV^-ZX̀YqXX,Ɩ_U-[DP4X'!pt Z5W)d@۳,jwɟ,x*E1E\(jcֵ4k%7}Jo HM@睼,!h ykvD?S[, Ք%sY\`uA\|,g2nLGT lO6z,|3޸&7 yg9?q eLoE O,f+ jt S6KѪ 4 Q- VmjĖ<.kY8HSpbP oKh;kD 7 Ʃ0 pii]ר-h9 jHp"Z*KlSv:=ll}rI0Pd-YQ̦<˝?1zXX*q~Qp3F^w+5Rg%~V $F#E/_E1#Knē2@h+cι]n<$ cx.n^6Ɲl4Y/ذPZpmCLFrt3}'Yvon^;=P| ϡ-Eus0kbR eBgwm? yՊk_:K}3>҉I r凉H+h'R~f' >32;c I$yΒdUAj#> endobj 6 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F1.0 8 0 R /F3.0 9 0 R >> >> endobj 11 0 obj << /Length 10 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x}OHQǿ%Be&RNW`oʶkξn%B.A1XI:b]"(73ڃ73{@](mzy(;>7PA+Xf$vlqd}䜛] UƬxiO:bM1Wg>q[ 2M'"()Y'ld4䗉2'&Sg^}8&w֚, \V:kݤ;iR;;\u?V\\C9u(JI]BSs_ QP5Fz׋G%t{3qWD0vz \}\$um+٬C;X9:Y^gB,\ACioci]g(L;z9AnI ꭰ4Iݠx#{zwAj}΅Q=8m (o{1cd5Ugҷtlaȱi"\.5汔^8tph0k!~D Thd6챖:>f&mxA4L&%kiĔ?Cqոm&/By#Ց%i'W:XlErr'=_ܗ)i7Ҭ,F|Nٮͯ6rm^ UHW5;?Ͱh endstream endobj 10 0 obj 706 endobj 3 0 obj [ /ICCBased 11 0 R ] endobj 13 0 obj << /Length 12 0 R /Filter /FlateDecode >> stream xڥYے6}Wd4&QONNbo.W^"! `pٯӠD6-WYHB_}7 3L4,<"bFXn!-6f{8bvWd#罍ZZVr[ =u~߿f_0낾#JYg(ꃹ(F Z*Wƣ`v8K),'l֛֊e)٪stm,d:''N'rr٪`s@< tkY%r+]ʼ-aTui9{m>x#}Eo+B!YΕJ%SV4/[뤱䋑p>itgt%vy3,zط4NʎI+u-aX%(1diz1cA}F W`p)s3 ӴRJ 3ƈbqOG !JnEQzI /)i$gr]TVmxp*n+iTnC(/ۗ- c>k_}RʚEH h O"QF%tW>C ҙ ͖#ޗĤ`-NatӠV\mc(OvG1Z/qVL%` V*ЎH#spL% ǒ5$rH R{t!%զ "RT;4$3R%AL$Y&`K_?zZoW҉fj8혆-Sp~UjdCʯvp^q S؉& gũk'ca yۚ)% OPnXׁ & `0Q9g;"s"ҌG?ku|DFE3cdQ'iu _7{tyٛq__^̕wr%E=A/F[Q>4r?^t144{4F04[ x*-A%pN%_y!YpaPY.i%Fܒ-1!kN'q4u=+|; Ϣ@u9x|=,;r~qW׏'©*{8V]ynpZ蒾酤`U[:kNJr^> @Ì]Db~ 9iV"%֓]ka$?*׉b+e['tE4$=++ !~,YpE@Ay@ <+hV@JjШGJcfGUy?-:?X; T]#xs p~PpT!sccJ|c Pwm_N=7?cs>;㹑{n_bg?hލY@uŻr?탣/¬Gz. +(tǖMNHSPYio+mvt5ڽ,gv~;2r0Ydv`gJ/G 8RoѥPF!,Nj@"i5z1nNAp endstream endobj 12 0 obj 2460 endobj 14 0 obj << /Type /Page /Parent 5 0 R /Resources 15 0 R /Contents 13 0 R /MediaBox [ 0 0 612 792 ] >> endobj 15 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F1.0 8 0 R /F4.0 16 0 R /F3.0 9 0 R /F2.0 7 0 R >> >> endobj 18 0 obj << /Length 17 0 R /Filter /FlateDecode >> stream xڭZr8}W11_8Lj2{y LvHQFF&UNNn7F>s? I,hɿIK~Rv7u%<06?wyŤܐw$InC~5> ]M^u[^ZlymxE;=EӸȦb{oK-d{E^|j9RDNzZ1'eúܿ껞5͞,/05dFtPE ӣ ^$paX0_:eӗk5 5a^~&{ٓJFvܺ/~б=y%|}S9l 0 | z4]{d7aES|7k\:SӱS!t}D6]s~TXW+ŶkQ:j"{G'atpj%Jj)ٷAS U S_PQ;YbO\dmR6wH5<^L(F)ZzN/o4M!U6B~8v9"4-9^!\"I#CV}l+( y ;\z& k4b^;>#r"օ̧Ix"PNfm'T (!nd98 Evc5~ǁ]_UOLC>쑉ּ||]%-tqBcmxⲽ棓yy+hAm*rrH odwH7_X]B8Jc'ϐ {o }S2tFM4bUвz`1: h%l k+_Bk% *N&ℙNY_FLHO+59,8BDwRVTtUJh0IJZ3 -j5Pۑb$F2V^F*(P!0Z"9brABmM)"!X%baҬx A#;ck8`;`hA g6`KJ~;1ƽyJĆ2$b~uE! GzAK>301ckshE$tĊ0U!wtx~`vMvwgDGQJlvWA _fseKxB(Fj 4ԻEgɖ1=gbZ`Jn1.'j)D0?'O<=Cs}F /t#D)`fPgݓx{}԰\ go*gOp0I@+m=j cK\epA2TR3kui_IuBLeSfag1= gg;L^ aē@OXŊGڶD[-:VtH`͎S \8ay._P$/ma:W=E|*ͭXBV0m%U+z\Jh4kou}3ؽU5ϗOa>aaKl=)-Ѻ3#ܵ*7KvJC[*ޕ{Zɍ+f~$[4klj卦giF,0EVcۀ n[%arWb]@6ܩL@Y8`> 2 Ml5q.4tƮ. "O%\@(O@NÇEѡW: 3~̀rXtA1k!׮d' &a &˧c ˔y%4_-_ endstream endobj 17 0 obj 2567 endobj 19 0 obj << /Type /Page /Parent 5 0 R /Resources 20 0 R /Contents 18 0 R /MediaBox [ 0 0 612 792 ] >> endobj 20 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F1.0 8 0 R /F4.0 16 0 R /F3.0 9 0 R /F2.0 7 0 R >> >> endobj 22 0 obj << /Length 21 0 R /Filter /FlateDecode >> stream xڭZ]ۺ}ׯ`ۗe$y|"Eson⋢@^hyWRw-YV66[.yf8s 2iB09#ZzkR)[Ƀ?Oӈ5y" OXUM^Pd!/J-7ݣR%UUK{HNW&+}relb[AdVMgH;NL0d4yT^6[(yE_ CKo'R O5B#`GUZ-ZJCK#?>ТCqNB5}6Oސ MiqF0Vp.BhP?,4[G4 )YB"tqo1H$/9_ 8IU? #^K; OzCwؑ#yϩzgĔw\rrF:I f3a4PG&A-==f^uB#E`(=Ⱦs'rX\܅z'e7QΠuLBP E: $S$P,$? 6"Y{hnͲFْS si2ߏh-༹n5Y/inכi.Bkzzo}Zn{8F]A=5FoFՎA<25b7Th6C9~ߔb#QLϫT-YӜ1 al &N!Ȃß)O6MEQ[p@m7ʒ-܃%)P&"e2+@Jcn| {(IbA!JhČ Jـ5<tP B+_{a쀩͓3$#D5?KVCJGll-KE?[h*W s'm<8Pbk_)!ΒB)8E=%` fԍ 2_W;D@<3?pEX '6eкL"cl !U)uGƋ6yd ñw(=4Xx&7 @"tvT+uy~!;wG-uW'1&޸'V6mǃM1𗕏so@-t9r4 -m+Z8cHώAP %V=)@Y>9(tlV1 _[rYVLpfۯW AaB@A4c Ң@q5^Txxݠ'^Vfk\d4}@T^ϼXK gljKSeU]?o b;qy[VߥHg-҆:]2@5Ғ@ŖZp31Pc%ךT݁0ҷ >m @-LnvIx1O 2Sm e(8 <)xo#sFϢW zS +D}j)l9y /(~Ayh}7\Y4a+u)P0<Atj^QKAwŘ i8(ي!M6\LPO8t J@lWp%=5E+p;lrz'JItil2o[;JjJo8P>3 xux0!psCm!oЋf~V],8ŵ6{\rlAIQN1(k܀=:>}GMn,,%%}=$,LE j;S.[%-WŸ<91n/>_ \ik]=cYև>nm4xU$4tw SJ bPK7f, A%(S/f`mqKx78Φrt89<.i8lJK%8n,I;QhOCSd5q&4<8C+\)Άlb R@Co[N߻i=b4OB ~䀽)N9_q\TmyvJpl=X,n2bjwh$<|TƥFpYȼq9K 0^KdL>X84x,XӁO\DN-4aI(BԭG_ endstream endobj 21 0 obj 2805 endobj 23 0 obj << /Type /Page /Parent 5 0 R /Resources 24 0 R /Contents 22 0 R /MediaBox [ 0 0 612 792 ] >> endobj 24 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F5.1 25 0 R /F1.0 8 0 R /F6.0 26 0 R /F4.0 16 0 R /F3.0 9 0 R /F2.0 7 0 R >> >> endobj 28 0 obj << /Length 27 0 R /Filter /FlateDecode >> stream xڥY]:}ؚ1xe/f /$bl+H-;Ȉ fOn}O ⅿ$Y YE‹W:R%~~ᇱ׳, ?,^ pg+;#p{}:;N] .Qs7BÖl͡a]f-Q=5ӚkXI(Ѯav53B ޾YWAIo]DydݝE܍;: [%EhALir@f }+!rPZ'y%ܺ8QE0Lo8vڒWҔdޯxCt+{dGW\qN_iP(0N H)rH4v WqT{1Q߮6(n{uqLufΚ{Ο+F0? /yu<;76Y'I+35؁Ђ("?{F %Yys[Hh8N\sFFF<"r3Z#Ak)a o񷑁K*R!G(dVڄXT>\w<,"/D)kiYOϝuKapq;BkjJs@e8 $Zy[~"V@NO㒇GxoeQ(.yp<*Fa/#Q^YtP) TatHb͒p^+%вZ1-bMrGxUnʳ`=?P*ž OGwEvrǀ?:-;ӴUEK%ҽ4$ a8ػx;k%-a[M ji7bUC#P`$R#+^t4YJsV][ 1R}g|nŇEox%(Rfۚ'c[bE*m%7;Ν- dnH/)+4BPxnt>]K[":3 O ~epb5 \2S53L[z֎eFX Fת ,a}9Ҥ yEOER4w<:;)]Ks_<%PI/I ?IOm/!AYֻu}uOU;4$-uWY;fI8IrwxIbs$x]ܑb br%0/9%hͲn5QvZvk%OP+JKaH/eka%ʪC%WWNq}8< 3PP`_6Rc*, cZWof;Eg蚔ߔ{p?* oq,;h~_j8"aXYC"H{5iul+OP+±?F qQ懖]]qZbQmOlǧW4V{9LO,Z31 >9% ×eznnKEOkQ.e5XKvFE֢ej,?vZ]H{AҮ] Džw]# Tۯ\J '%~0Xom$~ F;6$W)M7!aum[CZIȭt]~VLeqf8; I 8E~aqp2R ,;q'a{G3݉"]J$aÎa-]tAb~am`ťW ~kVKV1qxA׊5 a8׏'1# V4NQ4Jj!(gpVFpaxvv% 15gor GC O3Ie20e4 Q]G17bZ&6{lfEaG/?ޡEnki M"wWk0VibYYD\҉*hbP3*F*ֽo5idYrxQGwKX ڐz-Ao;͖td]QoPCkH4vv&ٙA7D4 ?LP7p2h|7P qj"ˤ<_l } bY>|O]܅O pSNv oaG#ő4).`fg~;]5Ͱy|!.3?VXI濫4:QIX1Jda/^V#m5ny#G%߈ݧ| _;$y"8{%cּ]T~ZX9;hɧw]T endstream endobj 27 0 obj 2553 endobj 29 0 obj << /Type /Page /Parent 5 0 R /Resources 30 0 R /Contents 28 0 R /MediaBox [ 0 0 612 792 ] >> endobj 30 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F5.1 25 0 R /F1.0 8 0 R /F3.0 9 0 R /F2.0 7 0 R >> >> endobj 32 0 obj << /Length 31 0 R /Filter /FlateDecode >> stream xڝY[o8} Z b2N/؝ 3b@^(HJRx~eY.2Тq*<.眏~cYxb(6!ӂjL2|dxK-Ze{ ~F=T珁糀=lٛZ5)WZV/vМW}zLCZ}A?05J[3 ZQ)2Ֆ9+5j-3VF{ 2^3-x -SvǭiKZx~mTX);][/"(¹כ*iϧʌGB7 vmO Қ+:/;\h5EU[@M#;T. LfipXz`_p#TV隼9Ḫ)xc-f{ݦ\nBx*~heթ:B3@Gֶ蜗vv)$AV5m| :[AB\~Q6A[!Կ s97RqiO4ze'F4HtR;M9ν˸8k>8g'S{L^;gm)}X*n(33D)@COK^DMg(kvwK!z* qǓ-A3mOfu\g[ΐG *8ѹ62t@R'uuϠV+bBiAcjqla4@[2/hf6A!֎ Gh!Wp8,øaʿ t6Ub9[N(-:Ms ;z̓> Wa8 2NS)եD] T3%Ki &Ԕ\=3,l?Xnpd K948k֎ )5lՀce+)ǔ03iR1(W- I=m 517?؅gt[ֻvlhڤaǘNKظIf\ꭒ[&\]#~j׾iEr/0L~Sܸ+}nSU~p!`w{Ͼ BMF G}j̉m6Ѝ(mj/P7ݣE W.ati1jm@O{RSVǶ:7L659̺W^A:1k%3s5Yox8;!Z5Z]͏o@P5ꕦH,?= (b g@\)Q\.r;G&c ROJ8Ϊ;@w3 Ŕ~2[ k%e6ҵ}7hw"P:?zUQΘ)( M2s*\˭+{H3x(X+rvAƊXGذEbuiSǓRb-+@чa&LΘdȫѺK#n3Vmu] @tG?^; endstream endobj 31 0 obj 2385 endobj 33 0 obj << /Type /Page /Parent 5 0 R /Resources 34 0 R /Contents 32 0 R /MediaBox [ 0 0 612 792 ] >> endobj 34 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F1.0 8 0 R /F3.0 9 0 R >> >> endobj 36 0 obj << /Length 35 0 R /Filter /FlateDecode >> stream xڭZ[8~lvv؁.(f}ED`[A;_Hv\Қ)͖swJ _IT4aF$+rR$ ]Dq?ґ_^TƩp{Qjɯ$s׽$ I\%ӐD~M}]2a-WwRLȧg|^_{U"DVUXWd'*֐g{y OT9 SFas| kgm?=.F%ϒd(j^m^ڵk+?/ l935kr{% UVޡG\ᰦ L`jb^4[p9 A&O r0Zrtg󕃟_ɵUTanঢ|JL-[Lt.b@6kPE(dG-dmWZ6́XK.b auˌ$- Bvp;Ӽ&7S0?wJJ~}Bձꊤi\LL70k\7e4/& P#KM cAHWۂ%<)omѝ;Q@6+ k٫5V-E:r1u;~骙ޚ3Hέ N8߹zJLgdƴ,iYL*X^Û;z$mUfF`Ƴ0=f'_ng0._Mqqkqyֹl'0@G 4oK0hvio>*","lOńK$¦{EwvQ4X#Pqe4GlX ﷢Y7b5YvZ0 eMZpeglU+@v3lT[p奲9B {s`%7VB:V]oYk\fK4qZ|Mڋ 1&nxadvzjØ(m~{7Nchl[NCH zX/QLL`mg8&z0?$$-n; ajJd`vP`C7y(O#3@P쥬}Z}#Iݝ U]m(jž ٳ"'fԭM ;M OU2u\fA;q6iz!82iOСozh¿@X +%vʠ<ٹV9DYV. m!ϡK0Me#YvMĺ\W]̒lynMx|ʸ[ 47xJ=7$6qla8l5k_ ͣBwM ;tkQlfoxR|/‹ėPJfT鶨J,jp+FY=S;/ȲBaO`UωH.i]se)nCX]J`p#_ E n(uRRgH$B}՞Qe٥$_q>?S|װ96k{?jym&ϘŎm3H㴜-=wڀpNP,wDg8P֐ev֡gw qZ]<@(c,(xM`C m}$%E ;-3%`oq C-@r{ ] 8b՘FTD v+:zA@GˋV`Ǧ% ?ݯ4hp[ 4'k!Q Z cڏSZ$薃$ß_V8Pm&=_deތ S{3h6 ;N0|&䍳q큭,yLpFA嵰KP8ψn\? ).x%c2 `$kmowmcX?Wb=H(6}=Y|¸ }Br aoP^8evx@/\=0QpP sYE U= sRܝv7 ʽ  ܁}'Es Q?EӬN'P P[Q˖`4? nd endstream endobj 35 0 obj 2574 endobj 37 0 obj << /Type /Page /Parent 38 0 R /Resources 39 0 R /Contents 36 0 R /MediaBox [ 0 0 612 792 ] >> endobj 39 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F5.1 25 0 R /F1.0 8 0 R /F3.0 9 0 R /F2.0 7 0 R >> >> endobj 41 0 obj << /Length 40 0 R /Filter /FlateDecode >> stream xڭZr+47gVNLfI;6 I!HK-S]- 88u ?NPD!>3c$oaxB_J'I&v;^Rdy"Y5VSp;V6<#ME6w,oU?%@ز $)+"㱪jբ@QU Fv"{|L3UD4;;g4D-Pb#PW^bh4E7ddTP'xc( 1Kl8Yv ehm-= ;[ˠxJ[,mH3)| מΧ?; iv,Og+vްV@+\Oc℀1i؉H' gx Vьwn5:4ՄFCM#H uӃȱMh@'q؝m>}y3m7`ͩ%9~SI /u0I/8WDDgVÍ 5 LUđv{m?p>q!"9pRC &^CK^%r͐Y|u#cMm=?A}m0> }T&WYhsUjz6m~]PSVXqgG %^rx uG-׾8 a)Y%HKYul0pc%&-!G7m |I}]rܲ@q)dD4< !+C'#˰hڏ%H"Z(Z(-?%8ngxz0Id9*UkLҩylq1voZ_Z[zTz]]WXWyÌj_Og q`W)lU H YqY,Yc,1NDV+]xsZ{\V]UUfUm]%QH}ٰӗ {X ucuA)u/lTmlHGXU?@ZO3-xaЧАəkZA ެdn$WY-ܶ5_TʾɃ«)u}dD^gK=or,!lp m՚u&7 yϐ$~4ZB  `'LMڔ܂ۑNQio%$>kƁܘ$.QMurI)?WVyNp\Vt("(|jm ݶVN=]ǽz^Bz0kbgQbRױCo@$X=aGUKHiIuAc&~wucb8;jTۜ UN{\hhVFu3cK>j3*kBQ;~$oKt|S!FZYk3ȆM 5D-Ξ~n̞Q?/@Zh\_.h*'05024Y!V!<s voy&~psC&ΫFP9P}N$s u$>av鯞AjMh>/D_y~ܛT$ If{[9(acb欌/A8UgwCK7t/z6cGpܔU|xi_8?}Ae1c PT5ʚ8g>ٞ8771\+65gK*ޖ؟CQ5M T#5}TݡgOPkk~$9{ (nIc Nh&煳oOnPW5/=|[I 5aA 7qRc)h\X`?;k-;rN|'EG\'^\ 553i/ǥgQ =7(ao[Od_K8}"u>r+*2Xv#5hc%oנ çoQ5 endstream endobj 40 0 obj 3128 endobj 42 0 obj << /Type /Page /Parent 38 0 R /Resources 43 0 R /Contents 41 0 R /MediaBox [ 0 0 612 792 ] >> endobj 43 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F4.0 16 0 R /F3.0 9 0 R >> >> endobj 45 0 obj << /Length 44 0 R /Filter /FlateDecode >> stream xڭZ]}W]aBq*U^g8fw6/~iAKD4H{Ŭ=lgF9s/$~D\4 "Eb>hhwl,J+"cK\I?=w޾X܉E{(";ߒ0x\Wtm%dSV0JVot#kјv[)VOBvF` YݾVq-őkؽA%a^p|3 X[|'i%0ϧW˺~ꩋ4N(C-%#zU+Fq=׳_7B%j:g'Ib\N;u8'gP~+Mp.EX,nq ps珲}Rh)094=VfS4hC(u[ZgJ]?6ʊ=2/0_+δ>ɳ&ǭ: M.q8w=L[Wm~"M;©-=;-EO8-}9 #,I4bFI"eYn]++[SOO2N"ĺ5;R]Me!:ʵC>DLHg̜U5ry[h'݈uߔԩmG@6ϟgA'.QYkY*REx ćj|5"[LR]mı WSV0,kS>E8_^`"|%sܚrᆅ,G(8 u e,Z3uYC̈́PݑFux EQw \Ɉt#Imea^xFɶf32]JL/琠e ;N0$QF˭KO$^_q}&1x~ao9O ٚ\ǡ[Xr4<U+b@bq:L4F?!x/XBgj}~#U:s%RB}+pA< R-e5rgFSG!sp uWNns|9 sDx(h\*M׼ԑ%lݺ-̼0͢{#eW+I_,A^W̩ ZZ zSbW0iWMz*8[NXʈV(FSYv.1!(c`֝4S&Jdy:1@z9ӻO-T5NF;#}mu[Kl:"tq ;5U_[Ҁ}; :;멒ɴ=/R$\) -H/˶\pƾ71W ڊr\ H&1Gſ!@.8{GbP+%w)x[LO `$=ttaҨ .1xul5m}-VI QJvLۣݞk+x1nnk!pzG" 4:nRw4rހjc% ,mwzܘ{k冷N35,ku}I7*&t84aRO8 S׏ߣ> endobj 47 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F4.0 16 0 R /F3.0 9 0 R >> >> endobj 49 0 obj << /Length 48 0 R /Filter /FlateDecode >> stream xڭZ˒۶+44ߏ-Ǝ]wl !  GvHIh>}/x) ]M]DIL p2HF& y_\Wr~v6$ I^Id>w%~;.阬{BIٳ;E^ҎV=#o>}Ԣ`ՖЦ 5MJFW!5 W {!n\v tf,Xەwyxs oldž)%ey.7+>oNӪƤ`{XO8F^!9k["E]HwؒBDHZ<5W79U)a\ I?j^JH 9pn-{GޕB9F~sQ`?Ցb@} ǁuB@nq4Q΂Ƅ(DQ~}KP 6#i9~N{Bhpw /Oѩi{b 9 ;igiZ%/ҕQF|'tujRn[!79oi1~4ژeKw)BxX1|ط`H B\3E_ N@2Dޱg$J浒ALW$Aτ5 ѷ+%birz^;^4m<=%7;g%g³h- qj; NER8". rz+S=CB#Zׂ+dFɷ^uJc_:70]ϫB=ʋm6+WII2m5yQw 8[HPH\HGЪ\yDg˂Uu:bhI6.1ITmX#s`SGtM{t2 򲢛%c.!:>ח/N]L]G-{>id( n\usx$吋[. )^D nRT%?zD +Cz/Y`;c\}';(B[2RC(Be#mTxF:.mma--!^E =9~|ϑ|꽣M92|Xl]~=˖fj$^^aOh_3(IxoPp 쁋$3Y/\-42J@i8Ā-ʒ'(@1 D  % piYp<[-FḎ,^%D? D(HKbF4oӓ~7%`KD$Z"FIڟ ZH8ų3mM\Ti$40KV+V=TZ,ZL,&PmA]w[7m.~+J{l˙ ?@3`Uuv (.\aArJ|u=sabQ4pȟ7Ul_mu1G0}a+;e/q b8-~)TwȐsJ`]6̅B5qdQ@BXc[/"Dd{2$Ery.8g{ɕy^=֌a~8xx{Fu5m+d׃NLkN 0(`{u dTvD .NC%ی4ݰl^m 6+; tK67~?fO~郕i 3bht2tc0J_D\=62="Ǜ2̼:XDSV1Liw`#07۱9A͖>-KS' KGڟV#Ǐ/-y4pf-f-!_LC`N=tdEfS*̙{]^:ݭ %֢U!QIݗ>WX1۹FiM!Rԗ_J@Pjl_#~X4]AC~!8՜ 7\܌ `_M, RS)簶0^I R<:aD쾱&bce7Hߏ 1cx ,Cc%5 (4P>!*ͣ,sxfϳu))ũia|4XϪy %9 cfZjgQw#R|E)#(&ĭ\\\荡)K@ab$r_N/35$Epd)OY\ Ҿ*~N;.*qx`G(?L?L%/K;2x;gKNA9@*܈A$NW$yo., LGԤ $U? V޹mQ;ª @>P7E[Ӝt4Fl^pBYTջy% 9T_?`"z(߀*欲nBu3N Ⱦorscū98-}JũԆ&^7IY&%%U>?Ώ_d EYճPf*ץoCC ,Ln8wa?Hu˖bd.ͽ  רn5 :Oޫt~hSJ-b-;QPVrE;8#qv{.lLWs~ϻ`;;T#;,Dhu5|]')i@?U=a endstream endobj 48 0 obj 2714 endobj 50 0 obj << /Type /Page /Parent 38 0 R /Resources 51 0 R /Contents 49 0 R /MediaBox [ 0 0 612 792 ] >> endobj 51 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F4.0 16 0 R /F3.0 9 0 R >> >> endobj 53 0 obj << /Length 52 0 R /Filter /FlateDecode >> stream xڵZێF}Wi/Ӯ7 Ag3`FjiÛcT7)RlKLy8UNG ܄$8b۩~g%{F,S_*e= s/w/ث=a.߱[2XYc'[ϪYJ^&[{_d٪ݽV5[}/j l~(Wcϛm.bf Цk {زf9oE>LY\KL¹r%S]㙀Es-NL+T,T?۪=ӪQ+M XɫH?P5>#ptY,xgV|*!Z4+څP<%ސx+ N Zfx0dm2qpTeڊmxbyU BxO.y-z9ߢ28G`$l}c'|Ovp?rw^bm]' ؛ydHJ0BFm,a/B8y#\vו!s>׺8!ϱ8wCYf7Ybnٮk]pX|KaI4yo_N\|/&[W#Bا3gA28xuIiNBo\;mQ5U`pf!;+ZuT_9G+LAɫ˅&g&G]Y WɄ][=R~/R\ı޸fkVn 7/f"gQZ RmйN͏SH$e'r+2ĊO#q*dz*iEundryH'bVc'@@xq4_lb䞁"f D=Ϊk?;\Xȯ)ʼnMLj|SJ [7R煶]`M'^ꂥKȕZSK$SC6 w8 =7B{d\u Ge3W+{_Jw~}OЩ7[s ,+PMz ֌H46YRTwZ riM84KztS^g0ĜQ U~8V:q%S'rF7Ԋ^[ϰK4 C>fZGfZ _MvO69%۠+N99驡3SZtm7>sȳF~$d(S?ւ¸K( Z3c3hfa{,HM" Vuԓ,J߈01zlF^gu]GWBQ?kJM.jHBMmK=- ߵG߇{2[29lj Qx=.ZR/(*\'Mlwi}ƛv6 Mox@--~t Bw?l=PtSz|޶ZhGK-u=Ҫ_yGg:Va”(\7"uؼl^NPHPycDZaۮNV1` 'L6}׋[/pO sgun=* ɰ5zaȦ\xy\\$>^߇x=B3-7}ىYSm?e[I L}@͸FbJx:>Z-e$=SAL̻] Y9˸ĂԼ$Jߩ*قկQ;͉׸ endstream endobj 52 0 obj 2958 endobj 54 0 obj << /Type /Page /Parent 38 0 R /Resources 55 0 R /Contents 53 0 R /MediaBox [ 0 0 612 792 ] >> endobj 55 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F1.0 8 0 R /F4.0 16 0 R /F3.0 9 0 R /F2.0 7 0 R >> >> endobj 57 0 obj << /Length 56 0 R /Filter /FlateDecode >> stream xڭ[Ys6~U%oUZroDټj CbfhMߧJS1ЍOW򉰈x6#? H4vH-ȟ$o)FElK%6u<?I {+k mr_߹&oɛr$k1Ádv ?С:áS E ldV6d+kSIݖ%&\NņT|'*P I%W\5e.6eZy4&s"4"5>KDnAZRHT=kԠeV7؈45wls~9+S|Me5ٴM#ˇ+P /79f'`)GsG:cٕHy>\ij _fҬXqTL#Ȋ$S$6۵5Y^C&yA+^kâYyV rG2s2gz4"k8e6u2BӉc څ:G'RQ"E⪩ۤ5TQ 2׬ "d@uP(:JِdakP+Q_pOTaA{xpe/ B4{BMe_&rPq<ob1*Fm|s7BM-` g#LCx^#W`1r  py,V_ਁ a:Ft0dNtWu9JsF>*3(2޻Zl16,\`GM 2?9I9bMKIyé 2Al0(aWVZƉm%қ2 t< spG)8UNj 9Ʉݺ0 B M?R$ 0oY/ƚ3r1Ph3͏4~wV+mȿgAy`*21L͸SK*+sAs' a\y1q@}!lB>XoveMB\gаdsMx5E' 5Tu|e<6l-Bv ;%\&@~LE[V KOO=-SQat."ߡ}sp\)gd^QMe`=T e 9x =ggkQu %疆YZv) fkf$* 3 õ -ȑm`Fd5MX.w8zހ.G-k$C*puQ E5pupC57xj9Ri@TrV-bqdS/'r3w޴%IiNļ(NM&! 4mikc~"e: p 5+,387-[_brŁ bźhz$J櫖b!cvV{ss{ Ztlӧmk D̷-nlvٓU¥-h«M']&׺F ֤+P[]o;r"Қnp-:"ئ*nTq]ʗI7!= ;(߀: 粐YfF[,dIAS_D3ښ nZ`x豔c3FlD_ز.ae L 4#xx#t7E켽{ IB uj UtpPQˣ@@t0+EI1۪uÛ}z#2A+kSO3'mDX#}}jy8vt C>W9 &talbp)UB2rf2J~)AbdsǶ nּkn8Zk7C=N'M/8',𡫉yy/L[2Qi=5CGtF`V$&+\qB5>b-O+^P%1K H>ɡ?\眐#2_eDzp2vIRp#?CΒi;l J |BqQGgs-5kll"޺hc-z"qݿݩȺ4E4Sڐuݓa>.RΣ_~viT@|l]aIrHms25+~6<=PآON_HYhe z_џf-dDGt- !wsE5Eϙ/j2'Fx[4S@ zW]Qt(:c,x֠v;P1*NFO6Ww?m9S zmzkS;X^ 8 L-\|;gS "L6NQ{EY_B1VW8HkWVwUGE}3"XǯzbY^X@*w}ŝKϼԯ91qCefx< x5 |6rNhxvO4k6uc] o WJOD/X(:a݊ "&8qGC}+JO\~ endstream endobj 56 0 obj 3403 endobj 58 0 obj << /Type /Page /Parent 38 0 R /Resources 59 0 R /Contents 57 0 R /MediaBox [ 0 0 612 792 ] >> endobj 59 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F4.0 16 0 R /F3.0 9 0 R >> >> endobj 61 0 obj << /Length 60 0 R /Filter /FlateDecode >> stream xڭZv۶}W1YFx涒6M4} DBj`IJgMcKWWjY=3{F!NL|ڱ Iy4qI7RWo M ߷߮E>I gčlrSW]jܬɋ?,'9kcy#(w2 ^Y[!ˆݍ2rdO!ږ6cJKr£w9 %IvGm]Esw56#Mi%GV-XEֲ.H_?YËO_}0/p#%#|_)xĉڑޙZspf`:+~AClsVvX-񴅗=fF^Bj[-Z^bkYւ7iM}o dJaY{Qr _+3#<>Ǐ(Yye9`/Qs멽@ȝ/+Q;dbǥx&ؘckn\KaϡRrZO! \4(SYT9oۖ5 |?d( UʖL-0{^3K%Fn6-dZG:'7(q`,540t¹]6|!EOk< Iu/?AlŪf:8A|+,Mf5ECn_O(?!` 0v ̐Bcc;R$7%_߾:@%d5MRLxn_Rr6WC=ݭ E%l-eF ́-hϝ:Q}Xi% ls{5nxz19 9RWECD)uo?zmն{tͰ{*\<9FEg3@iۜ}l!Pi;gy ml& Qll&J2zbAl.F2a5%wN WXRl z>By\NF;h80? ;V֬FWs%Est?yQn]=.*'jQk訰QbKRwMMس\8FW5gj:)wCszfWK/^4MG56L{FvI!=;,֒#$wϐ}l0ybgFm1ښ "Jq֣(aYIX||!HX<3h U::LI6rTu!fښI+Y~Sf2:X  O35:%  l%w\s+9Cr5!s+Xp^4Cs#zd-83>p(9UT $ a%YV6j/$0nkW3%%Zb7a219k6M xw"R[K0b?5ovC{Z׍qa?#)؍Ws*V+QGD!AT)j:d@Hij)C2 8Ӭړ&Ϻv'@"rKk<;@>W7VaY1?!.QBvg =F'ACB=T3~<ss-Vs Bߍ§7l~f$-pNYG>ݓ+5 ]5V,UYxPu3:aj8v|csfq߃<{|LiZiI[H &̬"tƏPxљn0f"oԑrii8qDqo,~ #&> :kdLJpFd<I1xiA-g+ 1#^*צ&NA,t=BL1QWLyNPx)vCwp|&|_ Vw$}U,{MLl} endstream endobj 60 0 obj 3150 endobj 62 0 obj << /Type /Page /Parent 63 0 R /Resources 64 0 R /Contents 61 0 R /MediaBox [ 0 0 612 792 ] >> endobj 64 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F4.0 16 0 R /F3.0 9 0 R >> >> endobj 66 0 obj << /Length 65 0 R /Filter /FlateDecode >> stream xڵZ[o6~ׯ a$XhvA/YK#ѱR9nSD;w3|g~@4!iҜ%ȿIK)4EwiD|sO!w߅'ߒ7w-Lߛ*zzQwwZ}?Sվw vdgټg l;^t;A}]{^WJ֤Dn k[l Y6<7ྼ#z'$ԒVƾ_6D"u J? /ȶ4^)v1xCF=v(bGyC$_fJRD\"Nh5m1Sc):Qt g> 4:/)Jx8UG2(@ze^_!fW]U7#22** z/WĀEe{8I56y(Vdh?gN&ߣVwJ^Ѽ☠/QIOo稒JSߖY!ABɴwq i&ɮr1n4 V%X'9anlf$HNʐ@)'vª%4I>9G½7](yɟ^^; M#rq]SSAˎY='Y}V@5+I#,7ƑАJnC{S5i 7GIJAbn#4d"^uXn-ƌB2;H3vۚJ*7Ϙa`T-bMj FsOXb/Y(Oh2oZu銆[t;G;%'҅[jlZɑ8_ 0i* ZqBIc_եcQ̀gKH8wJUՉF~6M!9\#p ?c n;P' "3#R c!KO||3]?憠O9gfIoEmIxÛW֣5Hh-:Υ[_o=% GGR`rd-l#h0kL].iDpV#]&; eT/oM7@IQ˥S;4ba[9N'Pb0%@ecgluy }ѽ1܁*7_X=OL$-3^,d4;J3D8_9T4ʋKwxbXc,#Chб,A2ם||U<8Ɠ[@,O^cu /lqJ>W(A9}6'YsP;zSzKS8!޵*elE]iLjaRN,,^ o ]a$ )*0o\gn7. Y&](W0@A vnk 4Щ4ܖppd چr8)>%;`s)<u }ȜFPȵv@r(ڢK1&\1F8k=yT P 8>QA KrʒUn$"C4y'nA-G:ͫbB h) ] u?C!L.*McتJ2w̱6O/NY%`ZZsZ3'h#P4A'\=YȚ:Hs40ȿ$Ɩqr{70dM02;$B6L18R@cS{Sd?)xU*7L~STjk7X kMAUlze WNyo> 0n%0rI读R4& s/m\B 3v0{1f<>;Tf׳EPXCOS$Ri[jkhjv,K⪿4:sqppDiN4uϔ_~t$`!;`1ˢ)$}Tfxh,uU`͑BFބq$MAucckx:z>ʕFf* 48K.lvJrL7\XcOޡ|swG]KgG׈/\u endstream endobj 65 0 obj 3135 endobj 67 0 obj << /Type /Page /Parent 63 0 R /Resources 68 0 R /Contents 66 0 R /MediaBox [ 0 0 612 792 ] >> endobj 68 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F7.0 69 0 R /F4.0 16 0 R /F3.0 9 0 R /F2.0 7 0 R >> >> endobj 71 0 obj << /Length 70 0 R /Filter /FlateDecode >> stream xڭZY۸~@ʘ}uzT*1I)Y !gD /7<~I4ϼa5HŽ~ ݂c-6?`}ԊQRx7wքTc[iyA+,:SFժn9$(.qfɅ}DM殗θ9JHfגPg7 b9!Qhy l 50./b'5S7WB~z=g?L& ={&HkfRMON%+>!Y~-Z*ǷĎEҐh9,ȸo|#Ð('!:Ijc.yi ia6\Cw*"Jv̕cb{P  (q(PFIay2T{;hYäŔOU0\[A֏Q^`_vOIFi2a<9PV'C՗:hzZ͑8"0?wg\w>SC zJ] />CV,%y^F_gxiϐ*l+D^PwcnX%{(1>[ ;\3@RB!k`s?7b-hlѥ_uKb89Mj^@bC=Gg i#D58"̹$8ْ5,_5 ImŶL'wOoȧOH~|zCi$wXK\ 3!!zKh׽{ڢ̽)N2;]z isCzA3 MN̍&qDL;ho!C4 BQ܏zs 9Us ~G;("[Y%K+`f]#{.E)c4Yv5JH@Z }fj Bŷ2MWo ɂ+ԏ~Zx+NDa=E8C8"7 χdLSY;KgJ{ C $~fq0Y{ ʨ&!?~ߟ???ܾ|gqI밯I!DXכo߾AH1ndSzb[ʌv/ !Tz\iia<{E 3GQ MA9sb2i΁Sۆ. 0W߉y :#ϣI3l=$>yYLY5e*Brm=& /*֎aLN4گ w,>(&K0u,;`GvW JԷL!iPcKNī9lwc rxM^V]~7*9? endstream endobj 70 0 obj 3007 endobj 72 0 obj << /Type /Page /Parent 63 0 R /Resources 73 0 R /Contents 71 0 R /MediaBox [ 0 0 612 792 ] >> endobj 73 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F3.0 9 0 R >> >> endobj 75 0 obj << /Length 74 0 R /Filter /FlateDecode >> stream xڵ[[o6~ׯجb'MH6 #qfX2%)OPH31EQq&~;_KIR7u=%1If>|&5HkS9|ޥ~ht9ϓ$$yEޓ | \K+ݏ>uGJoyx%дh4ٳZݐɟҤ䚼q$ЧB!BQLA uN MSޱWoސNGNE/q=Kj[H[Y_,>0ӣu[i%Rzx sEX]\r9Df_BِUeS%.YyjP$s+o9!U߈jHPqm EDmy/h˔qy u}gAKtpʉyJljVKVu#u.8%ӣ8uf5"ҹj1Qw~bƀR?^0K@? j 21I]xPƉ,d"l.sSHPV7d+d2(y+ۍե/ '9x[)$F(%1_vȅ.XVu^/ɪYMĺ y{/s >D"3Prgf4v`u㘦 }gei ~` \,vwF4"Fw5slڝmYv~jWݑ CixH6udK^q08EB.!eixINB@@8ơbOp+S'2 J"foW.(ixS: δ]j#R/:?bKp 2ش }vWZ6pVBCPx&˓8i&6✨3u oSm$h  _FZ,7?2=!O{&zLq6q9Gp^N?:L2H?x qUqZ 49rA yYRȋ1f-X T> Halsə [!LЦ`W]GY,Xa/`>pX-st8ǾT'oOs&bFYmکc^AAa(ԐJlגi)[y{%E<19-㣫@'jke.u# l0v|wM[gf8bLXPuB$'yGؽEyOdQ\J>23D+*m);Ij"m^K [k`<η0hx|E]4{ *ѩC|a Mɭ"Xo Q\c \Mlsݘ b9eZ?}/8-_D<ߧ^J]Lऱ4ujnNEuDeAkcF۩n "5 ]^X̌=yϒl4QELw"wF5 )z4f9 r.UMNXS :m06>T]t4Y#Ay}jw.yرkIJ͑k)Xҹdz#+Э Z?e49X\~]I9 ko;al8 iœçR^31gggf(BzΒЦp E΅C}~ha:1 Avjd;X@e [,gU:ƴ;5,A1ŖD2l5lQ&s);rɢjlofjKf?*pl{K\wqdANϻo?ˢ}&SaUm7cT}LڴDMKHf3wӇtcnJ=rtrL]Ke ;_cmoþBLULŸ0o86!)_yj?k/?}Ӗcnfɶ FTM}p,ͼdJxS<֧Y:k5ʹ&o7ZT a$> Cg0ٯ߂PO-oT wYmQ10Xe?>v#zBtfkVo\p1J>ڮ|ϝytjm7F1>>>Ù(~Ԉ}+V0vg;up|GE/-g|?\/i%ħNN%+W f-qje].˴嫕Y#XmV]X[n)b*b\gG2R?%qG/P,DG RiC3h_anX29a ݪn-kKfY:G)MYTߓw&ݡ[(1un \zį8)bUL(Eͦ7”|LIV:osMɵ{6!HEm->2gIT~0%}ͩgK'3&3֊J?Bԁf^Yl歚Bex⣆~nP,#/ fuw]L&",L]fчw"A(|D,JQO8(Nnp_j"wmʢJ ܛFxye/9 ,\pD? |a1 9}>~cPL16j3m0|9y>.-_׾?V@bb%F)E2;^pKOiFΒĈVo S(X\mJ~LS7[/>D6Ja!GHcoq=9M睬i Q}s sX2ZZhOx4D"S37?`ԉ 9 *eRU+bxU>UWs@? endstream endobj 74 0 obj 3216 endobj 76 0 obj << /Type /Page /Parent 63 0 R /Resources 77 0 R /Contents 75 0 R /MediaBox [ 0 0 612 792 ] >> endobj 77 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F4.0 16 0 R /F3.0 9 0 R >> >> endobj 79 0 obj << /Length 78 0 R /Filter /FlateDecode >> stream xڭZ[w6~s~9Ԥimھ"! 1I(iG=wěH=9c\073B _Хnz$Jb|8#&sy%ρ_Oy"Qs/kO\?%YmM/X#-yhIJ?mY/ECDԍ$/gfeIg#=s#JN\}/[2D+4A&ekZVO;eeyOX *#luL͎:o^=:ƩGx8?8՟ϟlxěnAjhxI%u7;Vo!^,kL .9F A^3, *׬~dai ) R@5u4M윦oб6)ADcoӝ > sN/pl 'RJ Bw4|'(MY_񯍕O;LCPH dusIGi8|ꄵ0 +P*%8v[$_V/xS:g0hZl{EHFId< (ڹ b0l"ֹ):L"@ _AՒ-) XO޻u> ,cW.=b^i#0>,*nddKr֗B?P1FJL=PP@(eQ+c5/-?"x'OC+^k-MT[$BL}#PbӇq.i~;'7tEq,)h _Ȧ !oC>`اPORG.{~Q7sbʔ0 EX[&Q#ߴizΕu"KӹH@}`uR*^6;lF0ht 4=/ |E}2s4ޘc$3=#w?XDsF9F}&+ aU(Ц&$ 6"1ٳ* Hj-jk5X%8-qZIydmVu/i]'LbxУ}7hA#^Yq @ײFy+_3-rb$'@/q*s/FK`dO?Wù#ߠYTaf _ke us¦ҘX,@.ڱ~&|ʦ7Yɋ[:K4ȁaPnmJ_. ?~MfZ"J.ؕтw &.rP;(躿 `R/"уp#<Ǹ',:ƎF2R(lQ}]Ԫ4sff*rݏSj{-xxŐS8.ݝ{DßI%jQJ%΋ݡ(Y8%BqtWvgj9Lj.?!L1zd W0Ji, EMSYM| xbJS@syF|a ho?!,q=HA$ZB~'r#춀}x֪S-73A7p\k+w=yMƹL~;{%byw8BRnZ~:dǴȧ d4ևBYq?X6W Ŷf .FvBA^0P80N[@bZnp}tK#c%Wu6砚5.b19DzKh.Y2Y ! U@fei?Jx- 1urWxO2[ Ew* gKOBƻ(`AS\i45xe fY#E^Ӗ#mU"Qhz۲罵YԚM-$^jafviŸXOoD egŁ(mƏl񂜶+AMGg>8 !=, ycKtRiN'DFfMl8Iwfjqs8|J),,B/6]Y[]-H0kB(fP Qf8~dKr0^6: LO݈ "[;o bx973W/J#CTϸ)+K%OӀ\%$JyیR/"^ߓ]l&^+u;ٖ@# ;|d%·Uח NƋE˪jk=AaR¬MPqOCoX>z'vy endstream endobj 78 0 obj 3003 endobj 80 0 obj << /Type /Page /Parent 63 0 R /Resources 81 0 R /Contents 79 0 R /MediaBox [ 0 0 612 792 ] >> endobj 81 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F1.0 8 0 R /F4.0 16 0 R /F3.0 9 0 R /F2.0 7 0 R >> >> endobj 83 0 obj << /Length 82 0 R /Filter /FlateDecode >> stream xڭZے6}WѮ3}/I9Y'w`HHbD A|He[l3 >t؟X^,N X+f߽R>?D i={ybz Rw?|vfjq`?ZurN1y7=w`o{=#|Fn6mc}J~/Bޗ^9ms3IAv\wB ƫ- i[9.&1]JTvž6JWWld3Y㔀^ԝ(Xzcq.,9o>hm{iư8IQLkOadQۋl|֫;&x=6#l oz DQ83HVVy'ء'H*mNqrU>7emqɧ(5>V8l:VH{jY^}"X::΢KG筀W[󲭎d_kvs$R慑ӦےכJOY4]4%=C_~KpZQi]Y= WJP:dK޷~,UI)(NpvU" *4z86N=vN Jg[iNJ"XʋRoy]=SqDo2ϝeni ?  \qnqÑNC9jM =rdPqgyEI:TxI s_yC\Ȩ\5(Z(*QkfNdI9N<v!_sȱR(n\,,pPH8Pˀ҅:NMr΢$;!WYF!$BN׏CDZ!>?be 8^ O FČրk,(P.2Y;wD3Y2|ƽÙӌebmR/dER~mhudl#Z)/\)<~OxQʗ}BI6W-F*7[Tσsjֲt@Pa4$!(Z(CW%<[g-f| |~R yEH, i:(9sX"㷊ܙ)iɮ (BAiGB5"/Ps=q )f`3+ 샀"nAE36#$RC(!vFҸJe)h|zv?h^;Vu_yd߼i"<1vAYv?=jiM_)rBo!Vg͚yJW}fi:d*HzeW%/Wsl,FVGzwaEn S[y@6È=>'佩78A![)Kt"JY-"]+~DERiJ ôk8/@ .@-zZNɷ\`\i3;(O>=[|+'0~`cǏ0 ۜ2g\ֵG=Ȑf؉ Q7x |idچ/5m$+7 S45=Ʊ,rV ݥ9QT;XQd_= Zl$]o|B+wb,Dym0״&"4U7f[Y:`~YpoE(M_{ޙ%\]ھdQ1'|HL#hn[‹omgݝiT&|Gk vu&`i,zjC鞀{$t9U\wXV$lY; N8Qc*$]_Q ,fk۲ީ!=hZsfi/'nSB/e*L eҽGzggϙZ_LkEh43F[,䣢FO^ɬ'.Tu=4H!Eul\n6 endstream endobj 82 0 obj 2896 endobj 84 0 obj << /Type /Page /Parent 63 0 R /Resources 85 0 R /Contents 83 0 R /MediaBox [ 0 0 612 792 ] >> endobj 85 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F1.0 8 0 R /F3.0 9 0 R >> >> endobj 87 0 obj << /Length 86 0 R /Filter /FlateDecode >> stream xڭZ˒6+ #d{98/ ItL@~JHLʪ*O K?(y8ˈ z*dbOUx>~gyY~'3%A~0E µˇ': ÔM]F #3x3 tJoBG߈+֋#nC 1e]/.8AaQU-Wjȉ޲\P'񃖝a#d?J(Ð8aI-)ߑ4*EyƭՎ\~|mB]UESMyJUlvf&+16su<=I]2@\z><*ol0|j:{<=&Sنz#uASJ>7 s^~$כfL1AIgHⱵݓcCo^Qұz8XApRbO3\^E~ףkrw'd W-TjV^Q7[LG=,p..N2/Y QiZThcBAe@ 8ߴd7۞.{4SEd>m䌦.̋['FRX* Das_mHh١ |aQL53^bS0t<% i|E;лg 6w*g>@ȑȱאs*UCꥡhRLS(%ʇQ@j22Ìs-Cg T>{F ެYuۤiAjK᪩ j` e"zƖoi| al=dtNj8 I/G s/=pr0 8 2uj Lscfqh2qu7;{JXYLM5YErj7I[:X>[u*BcցvheǑk;[Xs @0:僒!&Vcf|oOW-|o9ug˒bnPm#lf5ϨA| ̃Ag(y`qM:7Zà@vc@::h1&A!Ng#O%וE!H$<׶&TW,_@k) 5 _/D ` 1]oGطfFw?UPAa6:#2Gq]o~d6gF{l1 }t,$O2&6\.ZDc4\s 7~>L" .KZl՝N!I@)o|K, ?*H,Q-g"HCmN$kX.0 a`(V鷱 y2&}yچet]4MbL]bN3ӀmD֎|ovTN[.m9 3ؽYGBeF fJyvB'FCubߢ,yĚ RލsZOi{t49wj`ۊ3DEaܚYFVdl-HaW Y:p/ 2n2y6flA6rhE@ΆyY8C4Cͨ)'JqXf(O/(eiC?+'&2m><ɼ`F&/'Q-t7a5X 8eQ@Sd$' 4uݘiva̴huaIE'{"ÔIL/n|UQc\ cq5o:вLxhh?&6k k$ykiҦC76δ YA3d`)Q;y[,;#I_XFSKW 'obpl,V|>@@rK_Rl2biMR?=sK^ Nlb֎7.-L_^t?dkWx٣Ћ\z2Ywm+u\]X#v6gC˅n{9!MI"X<e˷l@3Z [O F+WtF`\z mWuӶ+^9>!ؕ{AkʼS`E}oT 4N3K"^ì >W ~c9 E*aJ}z#EvK. (M=w\a?{H_c endstream endobj 86 0 obj 2742 endobj 88 0 obj << /Type /Page /Parent 89 0 R /Resources 90 0 R /Contents 87 0 R /MediaBox [ 0 0 612 792 ] >> endobj 90 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F4.0 16 0 R /F3.0 9 0 R >> >> endobj 92 0 obj << /Length 91 0 R /Filter /FlateDecode >> stream xڥXMs6W1߼:i&$V_ QBV_):>6۷. .qBG>I=h9 }(d Ge~xAםqY +.jx#.PXfMj7ޯ 4$ _C?ǰ48ǐ_!'(#/ ~ u|.D{Ԅsfr_4tiJIK oPK,ܳP?L ٨[`.e) \M3dBcرaĜcIb܈/h4o q(5 %+<3EB4"'IEEF4 |a.t3!>=gX)(Ic ֬bJqEa+(0,)cULZ+ BzנE cY@{eXJa+> J ^$Xb~I4߻ z~F` qd e̞j\mw?'Vx&ﹶkna4I| Uջ >߲17F'm\y2=@dw>t-nuh6AGV{f{k *uE{a}0Cd͵3Ghr^Fh^-4ƭ)Kf"шGeb]q[|i:W0UC P{a3%nDꍧ]VsXq20XdTc{,{ڴñaGZst}]Do%q+(@Cj)q7 ^ 'f`*ps1Q_3S?ATa8M`#^D\gN5ΜY#حx&"Xh 1_OKlQ kwG]R Nk)Z-+|e;oZ漺u7'f1\mx}g--H-7P]%߱P\\iSEaK}iv uc:/CBqĂqߕLޯFmDor(1=Cm69Kyq v3pN[N={|!7U.>܉ֽ6UKн8 ~4`ʷZ| GwNcG !5j g--ns׃5xhK]r}prTVVn[S(Rg~8Μ[ZBp17|hy^ce.BYWH{*9#WN[2Rg ;޹IfS*5:.A F>dRzodb`l/j,?gIlN%IJOqog vSfo ezٙ@~64?NIpK787R^Ւ}#\`^e;ffaz&"65jU`17$SNNv}2c5T!6]kH1o$ X endstream endobj 91 0 obj 1492 endobj 93 0 obj << /Type /Page /Parent 89 0 R /Resources 94 0 R /Contents 92 0 R /MediaBox [ 0 0 612 792 ] >> endobj 94 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F3.0 9 0 R >> >> endobj 96 0 obj << /Length 95 0 R /Filter /FlateDecode >> stream xڭY]o8}ׯcS,YL1]dwgK^hHx=,[vwuQq"~{.'%<[z>[$1KM*v,3̳L=7o蓃'IIJ{ЏC>|fo~^Fֲd]s<|a>XH&؉E?DG&2I:,SaW.zE5k?sfF#LfEde f#{{2fӡ9iEKa"=IlU+ij@Hx71 7l{S4\#-OGZR 7%Ks-vC0^L˶RZixzI.U8ka>jsm䛇 >>7.Ԯ0xYfY $O<1Oak,S:Ǟcfze{5O@yAtB]tix#c Znw;_8ee!\ث* 0<=Zɪ=AiMa{7xbg RU!鹦O*$F Hc m)bd;)eMPǹ%uiT\NaUFX_/c#G τg LԖ∆W@$\xS|Wrcu1Y/Ws(Xfێ~-liHei`.*0+U\[ERusz'SxH|_oe{Al3::; 9CP}4HqVILՖ+ {?NrScl~6=wz+mUq;l֠7dvȥ7`{ %\icO d-6ț[bY@w_ԲP0>cz6n`'E!"[4Gj EP׿$-_Zs.٘nWoƜRm~i RV>+Xe%+I ޲qa!^<=f8]q#?lShLJ:깷,de^1mEvr絧1(48㢧nμv9G)DBƒ (?R9q;Zۙ ?ov컯K 0tH'yokwQiKŞ &u /}M#\cܽ}GNyK7I/Mq0]pHʵݢ/\h5@Z`B̔Y f/ F6 ;tMgew ,#d-Ⱥj@tS=|6l>LFp+ndƩ[[u1aC=m(pq]5Zx+7r zA~KbmNGKr\rV`5G%Gw._r@P3n3 =&x3wH{K ,]8ȜK`p=^~$f4QtqCGqРk!/^8WpQdt`'?x,Hq;;[^RJd\=N L նtrycwmd!4Џp\LRXb̉£,{O^v1} {n/8:~|md)i.^֔ݥ"%;wY7ժA `%|iw=)JDQI8q#,c _u]/t]Oᅬ+_E_ endstream endobj 95 0 obj 2395 endobj 97 0 obj << /Type /Page /Parent 89 0 R /Resources 98 0 R /Contents 96 0 R /MediaBox [ 0 0 612 792 ] >> endobj 98 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F1.0 8 0 R /F3.0 9 0 R >> >> endobj 100 0 obj << /Length 99 0 R /Filter /FlateDecode >> stream xڭZY8~ׯhuYdvw ,Zm%CRq{~VQuX=qEmXWUJ ANb$KIE7Ғt@JM|O}}Wq?U׺%JV*5j [uh9kʘ1FV7!@FxUKT  (&U-*@A埔0(Vd)d{VxsWKx?"JiR fn%nQgE-ދ{&[/ W-}bdKϿߌ%Ч۸p0D j?hϟ cl D OYvFȂ8q0|$!coQdc5b' ^R4J <(r$ש75ȅB@9}n 9,O#Ku}'lq`|uo;K፫y&Kc<l|`kʻ_A݄ڑ.}F 0M uC}I7Ew.۰sd1eQNSe&>™T>-5PX-9D2]\{!U cv695„ƫB/kBFu϶^izXCӞ'H|PE8Yzb%qh (og9eg;*lSkaum9 _sr.T;Vycչ %qכ͂|`r #on" dI۴.2vq R?lKVv>"A0O&8/(Y. B%5:qN#K7,H*Ui}\u3>o1WS/Ro\w4(ٞN<,Zt'Zcy9Hw}Q+ih ٍh {ȲƐ(0,iaKd1@zk+ jkC0%k}ԑa~CgD)Vg8{ 惓±X3^2 ;Tl. kmQ|s~qW*lVA"'/;R)^ Va+ؿ8ΆH ƶm6핅]fyE@$!kc9寭4XӛPPe9UoT>eϢ۳p0VKb `^aG r > AS4#qQN𳯻)M(p`=9m/}mb!#~~7hbx5C<+tX*{/%(׫(zQॏ Nݧ4Y32LGe/} mD. endstream endobj 99 0 obj 2927 endobj 101 0 obj << /Type /Page /Parent 89 0 R /Resources 102 0 R /Contents 100 0 R /MediaBox [ 0 0 612 792 ] >> endobj 102 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F1.0 8 0 R /F4.0 16 0 R /F7.0 69 0 R /F3.0 9 0 R /F2.0 7 0 R >> >> endobj 104 0 obj << /Length 103 0 R /Filter /FlateDecode >> stream xڥKo0slGlْ{Km\hJJRV_])ib v8 LddsX+h̞Cؿ\F`ۄ'IƓ Os' 65f/ D)ڶ^ s(*idsX"H؋,tȄE^ _'/a[.Zk +j7/>a*@{VtqeV /sl&B|頥e^)vF֑OD'4 Pڭ^eTbLJRчc#jI%'mVDZӪ[Twp9\|y4Ї$Q\?:ݡ'SDǧON_. #>٬৤g&iVaKM3r'ز4]%n̖.i* 8ңx)VQSzrCG7cȇ^R{42(orjiw{r>{'2qtahu9M4I=p=ƫ<)Bp0-O=v gS~$$gmsJM<`+-toI=b(fB!9kڢJC9C9D!>Lu: endstream endobj 103 0 obj 782 endobj 105 0 obj << /Type /Page /Parent 89 0 R /Resources 106 0 R /Contents 104 0 R /MediaBox [ 0 0 612 792 ] >> endobj 106 0 obj << /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 3 0 R >> /Font << /F2.0 7 0 R /F1.0 8 0 R >> >> endobj 107 0 obj << /Length 108 0 R /Length1 4676 /Filter /FlateDecode >> stream x՗{XTe|Ι 3  030\`HfxB H^DYuZeu-KY$yE$JkIl"s[=/><{9^}w7CY`\9Ŗ'Ջ( sg*.\V*<;Ҿ9J>{'S ,R/^~݋6.=K\,u~u|JӨ[U>Q^y 6xPY5=C55"#7GZ< uzH) M9`=zpN (⻱L\pIP+ `hf[Y>.lc+aLpц%!rp {P/T A S QB-Han˅4ncep!YHbhq%v}Į yp`=4~ f8$"8z(s?FKw)$c1\ FV,'oǑ ވT \<Lc۠F^s>~o)7R6C!BX7$0B@p Kϥa7·N&Գ9)6H ` \pQ ޝ'gCɺm9^b۸YNGvr5q׮Y !!C#K"-[ĝ11rzjoEXܐ_f9ۛ/JS@7rQlw[3fGeqR>fr+@gX*¼Հ)SyIWZ&ڨmD=Z\~^/fN6~FGga$bM^OALpà8nJ"x૘G4*0}~^1F}hׇ+-m=-ĤnhQ֒'4]VmRJjMYcF0 /[r.[3O8Cb5;N$~ n7lIINΝ]ݕlxfG-Ý{:={=ElGr -Y򈳣N=(.޳ef7jɒm}#m )K#RX{/B 轭`3ӱ PL5O;@ A5gX(u}; 'M̞;iYyqB^}?\U3{:&8V TB/CC!36'-n%$~G"~K$ߐ|< M9|Eu5vψW?!~L#e`E}^?UE/[4,g'iBjS5[P=Cy/y"'ywRϑųz!{\ۨv<BQdjXOJZE䩄 ZJZJ[< hկ Nq.qq6q&X@AԽ>i4Ω$"N!>HLD+Gr.q1qUFMrq"Eق K-F3}y0B}S)H ꧂c-(S[45=h72:Z7vWY~D_ћEo HF};Kg&-3F_:l)wm55 :rAeDZ$j endstream endobj 108 0 obj 2997 endobj 109 0 obj << /Type /FontDescriptor /Ascent 701 /CapHeight 0 /Descent -299 /Flags 4 /FontBBox [ -167 -299 1063 828 ] /FontName /RXSQFO+Symbol /ItalicAngle 0 /StemV 0 /MaxWidth 1042 /FontFile2 107 0 R >> endobj 110 0 obj [ 521 686 439 631 549 549 ] endobj 111 0 obj << /Length 112 0 R /Filter /FlateDecode >> stream x]n0 y Cv@HUJGc{H 4(o8:iXߗNv;' endstream endobj 112 0 obj 263 endobj 25 0 obj << /Type /Font /Subtype /TrueType /BaseFont /RXSQFO+Symbol /FontDescriptor 109 0 R /Widths 110 0 R /FirstChar 33 /LastChar 38 /ToUnicode 111 0 R >> endobj 113 0 obj << /Length 114 0 R /Length1 12268 /Filter /FlateDecode >> stream xڭzy|EpUu1=GȜ9f&3}@&!!$ $@[,7KEw!*+.bŰ?\PpE1nUqחNuU=UU<50BHV!m/'\.ZzWm1+ϿkLOḵ Aܗf4OXЏP ϟ{4 z{g]pu诀9wOm3J珛ۼd0 wkr*}YHY /h2Ҳ`?^߁L_M? }h(?6 #2hdFdE6dŠXS٧% "JD~ľ Qζ8ZPr- _gO"1 0\ы˗ѽhV{p:p I<'=2`N>Z GQ\_`;] / ؄Q&jk;ځ5dJxTFos|6L:8ЛHG{؍=8 6c/ìL4 ->NSv1^~p:4~ @{YSh,kJ{ C2.K̗7t0}zMIUO^~@ H3`>N[Zv t }3 a {G?I.i$+&r\g)O74Ags3\I'wfh9Gø$&dƆe2﨏Nt9@'Xv{;na^.kvq/qxo%{qaz ̇ k; =~;!މ뀛ߘ=J~OFg  $'}^O匏qmV9d4tZZT Hn%B0^F^!oQY_c+ }G`KtKwo(4Y3(1hIZ<);}_աQe-WPQuOvmp™{8EGd]48;ئ&:юm`5y44&6~[KrԨz7^~>ͻ= m[/WLPQGY5@$zxwC۝C<uwݥEC>=6hɫ3cX_{`}SGǐ7; ڰyಃ Ά߹r1U7"x/(xgET.-gua!Xf?ܭ!M)`w5ɚMhjn}VVy*#d7Y4+<zzCW={LTS$׍zjĭ8j,~t9mPcsdC<.~ʅ%o,\2H?Pr'UY#YRwf3瑬w=efi?UZ^쒮5{mUA&ӞFfBb(%SBͷ8HSR_ 8 }&5 hP ; 7wr@i5ef® %㈊zdVa`bz$cs3zO4U\z,Go=Os ҹwyr>˾~+ ?;~rd*mJe (#-8 [Ud2xb^;||Aw]AGFD!#LLEP eQ  >i Ġŵ6x2iЃjuUOO*=OPS:cp):{h C{[??ͫ]3S+~(}.>E V-Q]}]vSH8qn5h]PXhNz1cB9h)JEhqJ(P;8h6w{w;zd*4xR`;,vCy''$3U)Czu+8ӄPp|!xI빥n;ڙ,14`i9;,ˁR$1LRpL$IP>#CVũP2<'p@.Bݵ ebj X=ReenFzzP|[4A[opę$"˥R{@drh?Iv=';O1bL/WDs ʮTu T}n٘X浬qxN_Oy(޸ {>~^xqoXvGecD ĚbB}mm":JbȽƼmbЯV3Ϝys^&G/ݗ.ƅp XӿqO?I-; Cx^8.f42کAFСvM :&%؝h}:ERnPLjH%ʦ,0E12Ε ϞgK^zCz i4j=RQ^Za/"'ffDpq(%8W&p֘;4%SӺprwb%94٩X-ɷXe 8UZnC8GO&L;{PY˦ 4iӀXM]'NS%RV< /S۟ hR`%s"e('(ۚ8]ӢY:YlNr$:6_0vtgOQ:dP'؜>KЩ-ttlqf4CSUhak#ۙogسވE%2 >lÇ2e7SnZsf ScF`0^K<0`p+[ }^#CaNOnt\"]1;m+G$=L?wx큁ϐa3-}+4 jpc:N<Gx=]IܣӲ&G*41#1#EuB%mOi9AjT1(/ehQ.TjT࿢_Q!p|W~p(G-18-s^ q fXqo @QL㘂DɘA O0{G' iؒ/J=Vlڿq#abc"3a牺gs.F9 i\^~L 90I =[t$Z`_CFB%Aʥ55jeđZNէZo9(7DD1b-6k1` j03m*/^[xA+|WzPoURͅ.PM]w,s^q˳G3Kĥ.7͂p4}wѿFQNos|jsW *#[YZik`+&(3zղ9/66iT#{PIkfmR 94$䑪{X7gꅇ RuRp+n^/4#zYz㼢8LNe|1DW [* !9n7/۟yUΛ받~oG5e*ڨx%6@ {&/=Z(?we;t!?ZE7:á'WFlzr68PpjixQe:Ǽ]PuoI9   etRh77ȸjM3HgF ]>"<:ƾ-/ TjqL&Mbӹf WTpn3[Bvf "=`ߙɏg5B7p9K? jVT <4ya鈊2rD'"B}`я.u:jHC5XlT8Eöڪ1&t##6H?x}4Gd OIzVH=| .MM/in*瓾 !?Sg@v?+}\9cvЉ(-Fe v2EY` B Poq9(||7J8AWNr8q`e+}CH FЊ lM<TW_`OzL$~AHfOyGn @0dkM H щ[O3XA yc׮8~8px`lr`hRՔ#Bѣ'u`AnMSz:/m3*`:؇ pzF=Q[n~ݿ$a ;=E>-M\̆3kʢGcAMm3iþ>>cP'lqQ~.xfmnɿV 44UkeX-W{ujM VC7.h0E-h3*anڃ\ֶdH_IPĎCܵk߾]:Ko|E@˕XdS R12l5 bx]&]'hm|#s8m~oƋ7V[QUQvJy{v8B.]א'~Ԓ#]d!x[zRbR/ vC/ɮYE0.0d~њЏܤa]>O}78ZZFEju8B].uU$aFTjqyNK28KuoN} JGթۢZlVgPNO(:qKЧ$wNEfk :0iL?8,(QKz:>-ʩI3[ A 8ـ5Q\/Uc'[w79]x9Tثxxz@ܲLyќD03n6ط/mY8K:y<07|ut,/h;ƪ`hqXR,-s,:B^Њ~M6{L/CKc:tZQ龘\>N;-8uYݸL- ݘ9vQp&sv6TצC8l8n 7\OahY,\9^vv72&9~#XoWpr" Ot2,h-2F{m_¿]w[ *ۖP2lڑ n|ΑK8)-qܼx T?B8Е: ^3P78&%֠ZhBP3c'|u `v `1y V١'ayyFA2e 3Q-'`fO|3wG\rQB@@= 1H'WåQhcS%VIƏQr/ hXYW/.o3ܨE&JKrE@6{W\n .^bm}Y *V$ZW[JEhC^ #8I 1ت%m=8Y?WPzna7@>AL]fᩉ:DO4Ki@,#::AB//їCb7}[|??R+eleFB0emaFwDMTF^DMTAu1”)Xpjv*bg"%@ kZ4"O#$δuG>RFNmyc6=ۖRwkm~E+nU)DTTtxC&I&uPO.R9o%|8^.nwDH0m:ᳵ|#/GtZ5*_ۦZަRsAK\ߨVO7TrS+5@'W!'I39QѼhӪ5`ÀuPczL-h[}v#>邠rrQʂAX0K3r[>Y7Nl}GDȧ~ϛR尧Ri>'8S0Éx{F ]pqRz{ fhy%kc&`b:PnT}@ϫ8&dȝ ]yKuea+}\ETAŨSS HUa,e,s@ %B(]*hj4mvaY:C o%_|1YHٛVL*cAիWܪuR TKe3!=- 3}m'Rʄz|'\skX ;= Sr${%P|j+雿xN)yu] %2)$fzWN(͈ǿ)4GUU5| &V3]6_AuԸ^&7 %NşJC٤Zz>zq9ոQuR+Z,jY8sjszs5,U[ɊB(P#@dyc6A(RrTFUQh4m ǃo?5ڀ WfTa'Ej XrA)tN]"X+Q0N\J]}مvz=P T *Tx)Λ]8G(?x{0 ߺFypuVYJ5oys79A; 8wa_گW?,V,y{WqNd4!gRdyvtyq$gqJ~劤ok~U֐-j^?w/DÏH=͝5Pm_TbPuq4|*'n>tFA#G—Fsz|J[O;AG.=`YTd+25ƭ˟6Z9cO܄篥nK.6^ScUS\}ז}84e nnXi))uZO>4l\`܄5e~[kUUkՌQp(yQZ5eԲcKa> endstream endobj 114 0 obj 9162 endobj 115 0 obj << /Type /FontDescriptor /Ascent 770 /CapHeight 0 /Descent -230 /Flags 32 /FontBBox [ -171 -448 1001 1035 ] /FontName /TENUDT+Helvetica-Bold /ItalicAngle 0 /StemV 0 /MaxWidth 1000 /FontFile2 113 0 R >> endobj 116 0 obj [ 278 722 722 722 722 722 722 722 722 722 389 722 722 722 278 722 722 722 556 556 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 778 722 722 556 722 722 722 722 778 667 722 722 667 722 722 722 722 722 722 722 722 722 722 722 722 722 556 611 556 611 556 333 611 611 278 722 556 278 889 611 611 611 722 389 556 333 611 556 778 556 556 500 ] endobj 8 0 obj << /Type /Font /Subtype /TrueType /BaseFont /TENUDT+Helvetica-Bold /FontDescriptor 115 0 R /Widths 116 0 R /FirstChar 32 /LastChar 122 /Encoding /MacRomanEncoding >> endobj 117 0 obj << /Length 118 0 R /Length1 5384 /Filter /FlateDecode >> stream xW{xU?VWwQIyIN 1J'tM c$HBP@ 08Eta""QGtcaE?VW>q:,ʐ_UG?s{=[+Ĉ(6@2S#F΀-5+/>//HL_вi%2bXظzAu'Xg}]us"k0 @~rf}ӊUD lnlsOMիZsK*b_A4/_vS;QT"䬖eu-W-\Dqcx`ڈXO`lP*zMlof<P@>Dz*a>f\NJI®5M vIM䁶FatIF~S+Q4Pϩ`m52^5HZB_=U\^d+hbV[S{é~@ 6J)CaX:C=*^z AziKmP/i#=IGZeH{y,EYl [zu->k$,W :MohFtVš)%$}bjW?Q6:ӷR̆|VJYv |3w>,R8iXOd%\qveի:ju ``) vl, cA-c@+Aq{@bZc@d>Y*~rf=5㴙"U졓K]kt&2st5>ztYջ ;XbE"a*Wϼn-ha+:P#!x;.>E ĝ@ezfs.~t],f  =!›gCaEeqX#gc˴ݴtUҝONX'BF #l}͈j%K@W#{yxˇ\9T؍3 1xc?姝xs.vϢOin,g q[JCL\B?E6X}z5Ȫ6_zv;&Eii|z @S^_06r7f sl|}~%rma۝Hڣk!ͯzՕA:U8W0 &CmAP]6i4)H3ؖo@ puv6RW!4\I@,WR<)׆ks՗%)-lvu=:=17L5}4h\_\|akȂn\e*""kp\*s 򳳲 l#wd4 MF#GGϋ)1.rѵ6PAF?kh~S[3?"k z{Nxס}W=az}B"2_083$vBoɓT:TR酥҆ҽKKH6~$֭uz##c4#Mb6]o=r@z= HUiV@ HI {\o7z8O\^/GE4?G#b%HϠ)GzҤŰAJ E?3f-C;JJR%RaP%: kt"9|/0S9s(0IqfN*~+uş8/+ x) Gw#@QWX0oP*S0RXTU*n:uW İ^R[ uԡ/a =n!bְFqN3P#\,7{3ȯ/zPq22>+GRc*?9tIcG T%o\\aѫMNݨjzp*]*a!X™ORZ, Zv_aGyaJY2S||W;g9@@y/[Gkl72]:yԨR CSSNaMSy;;uqu*]px'' `'P3FSWs#55 ]5y> endobj 120 0 obj [ 722 ] endobj 26 0 obj << /Type /Font /Subtype /TrueType /BaseFont /RVZLTR+Times-Bold /FontDescriptor 119 0 R /Widths 120 0 R /FirstChar 82 /LastChar 82 /Encoding /MacRomanEncoding >> endobj 121 0 obj << /Length 122 0 R /Length1 12448 /Filter /FlateDecode >> stream xڵz xյwf457K#Y%[e˶dxO81 ,RJiYi $(а@ ۾k;3о}.{9sxFvD!aeC׸ZCzbFۧ!|BLݪk!=^}嵫n~yB+r\_A(xA@?f㦮I7B!/rei:̏J,4$&߃P\l_o.Za#6ԿzC'r Pa3BbhH܏#!4wi,#RJ*DRY8GdD&dFFHU,DFj r }gcjqv@Gʃ?N=_Mh+o@BEhxu>t hWȆ#X14^jAwmh pAQ-AעUt .F]h!:BdBe& Me`GkЍ(ja&5@m ٷ`_,pD0/bvci3VOc9iˮQFTԀf^{ ڃe/R:mξ}C-_T$4Gaѳ;!ڬ?`PhOBj\p'މGۤP#81|?Qp&)]ʷ@+l~\E *!)z7}&D5,p(] 3AנQh  ({Fd>D`qGa@oDK,GɇTҿ0-SN%ۛˮ>w.i Z g<h?z4I"| ~އ4L/o$P }&l}.1Q/Ľb_WAo[`|? !j'R i# Yzl!#vr'G ɿ4y#T P xZODϓ/-;>OzB*wHe@hOmٓth@3wCzK8s5-:h b斴,Qe+ҝ4;޾Hq7-]Fƴ.<=\96eM02qh`=]:VXvqoZ'.uLet'Й&e+G[5gbm/dg_o=""M-{ _opc4;¡,8hwϛw54Ѯk {"Ňl۪CHm9$#l:5, H{{^lJVVU> L,hR"O~@?|et,}Ģ(s 3t8.*|V:2Rsni)2t2Jc{ԏxe>yD((h13H0RRrB0tb55 A5$T!++ $,:TX:M"ϰ7U~1qJ@4S~.X|6546B1ٳnZMJyI`ppM7 uQt66V5v{Vy{g*2ʏU4ǠR' D7x<[X!-i $JMu*2!K5zZCѳC<6e[kxpM;SzCr8Z8ns/&OCamIx+w $JYd)%V u,l/^VE%J"^N>o>gKK{BTib9S):ܤ nK ºM/ޤ8@쿾?~(Uhtک}W/gֲF`yIE?Ropvn~̄$P3Uf s1=퉮n*?UCn[PYV@E~`PR:?3!=h6"p=P*_A8\YQ>pMSlxY M!%dCܗoP)+EXYQ,:ϢޱTF6\3ޞZy품7?uoFok{GƆm^{rbKemϚ]*}g7@۱]*GD d; =}uZ@nTMbq=w$t"#t$EvJftzNʪ@[ypb`ZڰaMj䪊hEIFaO}-rK_~%pg?0&֒Q"g)V4URW&Ud ?\\T Éx~:^hoúݪ}Uދ|N|Cשj_q$oӗ+w7`RiViCFj1TU|ލ&6ҘJoP>oQ4xjwaUT2CR<ҡW^>ȝvdX*elek;:CP;A!^]@,sN+,DrVg8quyOrWj=Chph3"@jZe6nm:B?J ^2R`۸&Pk+|9ydl@O2,\$(m0(iG1^4QΰaҺ Y64SG8.zIr%Hw]~_X%7߽欶V,{inM\qמ޹ =T.7R˙5pU.vxap1)2FPXXD,/R aCѪH(S^. +C"nppo!UVG2l~[;"*WI.WbDc@pkV%bYv9:$/Q>mbFc1P;׶$̏ռCj?w%}*2iO7M^3ԋJ!*7n7z|^ ATMRGUk"7:F";-Y*V*u.ݬ$ yy Uw)5ͮ&e Q)ө*-+ETʥ{Q,a]Y:{b\uj(<&Ṻ-YX$:FO?3Op'!WM+xI I84{ii?Ċ zPWaV\cIcO)w-gn$So1P=:)lbVw^^fH^ %C>NtCd4!^AM Ed4)bUUqYBVJGOej9nj6m4gbLejǣM=g[EE aJZQAm3R kMNh:ʉʘ3]Rj#J7( |X60osui9_hs- )ztxkiY}XH|VbL͎쭝oNyM^v. .E5V-#+Z~Ach[e?'y1rK=b(EޡbR\<`ڀNө!R&x j)vS~<Fd:0/,#z6|8*/'&<+8ĨCt K4Gu\\JVW/2Ɣ_-u(:fr`v^)DJf2TTj_E{YɬYe0TI{*ܔjf# ], |>Ƕ}:-C6 a}]D>ojdnrt!-pn@7ۮue`ٯ;3A|ay>iʜ['b4qA}'F$"W:Yve57= ya9#pu+(IAatn1^_lٽksA]Li95sjϿ:ruHeئ¼EqrneGz'sTͯh34>)p:n#3|XmKԜSvҽ[q;Ο2[V[rY2c,Њ -U[ S2ssbORVj9Gs=)Y}}SKem#|R$_d43ܒ[{ʫ +tj}*W|.ZwOA/PaV+=K=[gq[4{4_3lYYWX BMX5(fVX4%%K]pC`ԟGKdݹJp2}9C>^ж+ {oF:GoGo\K}r SO?~{섨[Q'{w00rµB!_a{1s%ĸM1&s\MnY;R[2ܰ{ۢ%㹨7$ %)3Lۆ2 `9#.ފAo-H“/錈e1^aEQiy 8=2]-eL}y2ɰe*'@!C0 "`),J "ɉo~1b+Gs.0n8jG8}*s_L HQZe&sQx)_L -r7kq'.0s ڍʶY6ЫqDI{&܋ZV\e2TL.0,+[,jԕ{ xb)ѿ Kf~?2[3sw3-^gF('hJi/EY eڬV@x!NI&:* Qi%!eahgtW|?x|ȹV ;19(dW]}q5ZX[l&*˽3 ȹk8J(i CGf8#ڞ%s*Sˆ;iV%{i"o,5 wZ0v9bW,tuzzS+\+w"OxVՕJ%J'v:HS ͕.- dUtIks3rVV+O慜2S"ZZjnqӼHfE5]7q*[[.|]#`\a]Pp\`2' )ƭqS#^}Pw<1u9[*<5w:Ǧry% *CfR\nd<ֺu<e:~[$ԳL|~/Uc2 MيpyDVUAu(.O Q Ze1o)7Up??fɜ5: Z6Ċ"=,ESBX> fY]mjojSIJom3ܬ{s'OJo%P:y $xIӧso6NG "DO;7CẺOP+bT4'H6Ϊ]-tkóEfż8 ;T&&ŤUUyEc.=WwTjr#M^d_mm(er@g׏VǔX~èAy5yߦZ2rxmj؎[Q <.3/VsA ypE;4ƘI5,`1H E"=f s_ĉ_)(CSrDH g'B#4B<u (P H-9 c)NP$/w@}!)bz%{k7h1.¯ A}.cGӊu.UjJIӭ>.mE#@!~:vdޝLƤwօ֬qٕ-OeJCтZQf97E/^ԇ% 9ޙ3d8&c&M_nr?"ρNrN!cO*xsoM2 !70d. eMt6CnɐrU|2CPd ͐dr&C3d3*Cl3(C@1R`#+`"*44r)_" $圔Oii 4R\ʍvPA͙AA˃ 3CsCЌvhj:4MQ8_@|FʽRs4_Ѽ3G9s4h*hs4kASN#;5;5Nh}i])OT5by.yqs|F)Z8 ᳨ >% J>wxs1Kw^ K,BҐqACM/сvYj -]b;Kh` DhQċh@̣ԉh"4r HhrvFD;>|0Pz e=([B=PA@i (p0/uwwKr%Rw|w(ݖn ve -&]YuZkLPDyJ endstream endobj 122 0 obj 9223 endobj 123 0 obj << /Type /FontDescriptor /Ascent 750 /CapHeight 0 /Descent -250 /Flags 96 /FontBBox [ -171 -413 1013 957 ] /FontName /XOZRFU+Times-Italic /ItalicAngle -15 /StemV 0 /MaxWidth 1000 /FontFile2 121 0 R >> endobj 124 0 obj [ 250 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 611 500 500 444 500 444 278 500 500 278 611 611 278 722 500 500 611 611 389 389 278 500 444 667 444 444 ] endobj 16 0 obj << /Type /Font /Subtype /TrueType /BaseFont /XOZRFU+Times-Italic /FontDescriptor 123 0 R /Widths 124 0 R /FirstChar 46 /LastChar 121 /Encoding /MacRomanEncoding >> endobj 125 0 obj << /Length 126 0 R /Length1 17944 /Filter /FlateDecode >> stream xڕ| `Tٷ7Yɼ 3$HL¢R"*VRF]P˰R֥j]j UPKMh?dsLjo}ݳs} z`AZxEO/|Dj~pЊ=׬ P+b_T.uKo]g'_%X_M%WzS /[s4D1_~EսE͘o|{=W,N.We+W4[c~FŽsa$O2})GL+7,WA *Pɳ0LЂ*)q]ܡBhxm~x(c !» chS\x,l"oA=D1܍5a,!d>0Xc"*s1S Jp!!MӹaḳQx"kކDb_|q{FUoU2)L{ p5b;w Wd7{5\V:It 8b! ̋7Aj` H{ J zZۛ >傹|Yp7ԑ4,g>fbd?eOAvF18CDG,$SL%3cOs7]Max;rr{ a q12,gq\w# :bp7</~O"y8n%z VC-FڝKRX?'`/|""f2#+J30 <`^nqߜ+W;cƹ6HݰV}<yxgR WtncrI~K> -τS$:fL{23ig3W3kpU7Gǘ3>7>Ųofl`jNdx_̮aײػ=? Ebn]NJ͊Wǔr,kfܳiq5 wjIixŸYGng1eg$G342ȥd,)6lSW 4"daϐȔAU#ML !v؏ #`6"R'0x`;AV?CE# ɍlR \D%%#)#PGd\܂y=J9.67u);mbZPޒY79ۿH&"g_&eL#S Bfb!}퟾} .RC`!skUa6 )n!u0U|֡i:YaFC$u!ӎFޘ2G"3[@K&S8Ϝ$Tban~ 8/03~[Ӱ4 ⺖6kX nA'JM?6iZ ͞553cĆqcnjN׍MTWUVxqQ, `z.nZ̼hJX@is;-rEIh>҃=gtgCXrnl[n:-/>o)nIP=ԗ#M7"제."9c `PkIS(KCٖKp:ȄڲRءaR3һ898G`@mYe=;Dec=3ۛQV%Fd!Ҙ5r ?&Uɏ -vcݢ~QdQ,AaMY#3Y2}ٵ^ٵ4D}}BGf]+Pсc`_&ׂ'BO_%R#ʹPVi,黴¬k'w<͡mF:z|;l7]n)>toίN,>]'45u$tFHΤ=/RG:[X +Ѱ4ǏV#/ܒB2 4I4aH:+D҅j"8Nז`!pu5$X|xwT!vdnZ>֬9ݽ;[֋Yu韉wX^:;2uPs_wamם+ )/+"%?ݘfY.?LɋTj$EZ|< i w3 ̎͏9'},N+bӞ;u.ɪcHdH.PCH!LC}zlK(bBnoNIwP(EʧNAGkX$CC,sƲnWʏ|Y_noOe*uɏ2ʏ_~6dlFWyκpǔF0r*TPj u#c ;"鎅hu_7&# Z["wu`7!RV̪b-t⸤U1mЁVOvsD϶%ri~&cM볭yENbY,fg9z_FqE=q-DB-}}= "!>ҷm{-w{u/!Pa" H!,SpU*bYƣQqp%OOU?z*`! h OI B~ p#_@Tjk۸-? K?RK9穱f{l=@cZ*GDBB2yaqɵeƟ)^ǔL NΏ*!l6.\@?J{}EXEQk&\ *^A4jV&]vvhxX!~ ϛ/XLm+ĸqȈZ;JIfm%G|}} B4Km416d^{Gü'J3w!irD#Q2CM"R*aВDd!"Qř Ԭul wڐ\:N ߍ|1 -2R,TME&FB2ʽ.g4.zSՄ $ oY99<\?th-qZ}C\7-4] 24cu  BUh\5zH(,M`l*Mp7--AdĢX,ϔ ]VKl0}2RЦVtW78%K9@nV!9ceZ{H2Gcg&[b1fĮ[tdrCerUGGc|~̈́ q'T4|)mNj]&-RJS/PS Ť8SUpS*(9 TLbS =j%#t"PCOv2fuyُ| ϟ!7ʊ U#):GR=I4ea辣(Q_z}0 \ߺßn> *?X|JiS_Ovx(6l"7:7dp@>FqG^NiLJ &4՘h@z^x}H҇!>Y.]Zt)" BV)՜wMwMO/ŶrV, lP"$U2Pj{zCESR\JJY!rrw|y1}*?9) 4T**I(FA-l͝u;c6"rmsuuyrǞ}8\wz3N9]lrT#)dV咊-p | ~k~6{M4YM'4OmC;E9S GI>;푃)*K/x_`8%:ﳉONhZ宲RR:3QrZ(H4) {c%Xjr%{x>Ef<PMLien͑ 1UTR` Bpʲ[~PtӪŰjM䦲u`eYeoT+$D<'p)P^S:] @lp#k3 QfWb1EA%@:NGuLd݁M.<);r#*~?ELLjYj]xJ 43֎PVd1+Q#n _elOpd1ov =[9+UGjq;}T`=8lNy_}jNEBhR4V$]Q )P~$j ؏J)8tj1G3s14л\wJ)_L%2wE?xf;7|ԇV?>C̫pjb$%Oylh?uecs|pkiTE ʾh"l%i8͹zohk .Gs>73fn >N7hm3ȝ(b%wJ^C]mN_k@}8\tf-miڲ6{?yY_H"u;OsvCWg5\Mrvy7Eܩ"q0cזG~B -)|ILgsyqͳ('SQiFњ&cMI6XL|Ta7ֺ1x0818010tKP苉m9Ŷc K,hCJ.iQfB|BhPb V1eUTȼ:I&1.umyoѤDq}Np%jZT(P֦TGfÊjS&>LnV$>%CHyLk!|t z -ڍ ",|TKjI-&wI>ؐڒbRPClK9dx"(U˾+@2d a0#)'čguxdұQͨB~z@|";l%[EYMgx-i@)=)Y=GE 7SߐR;߇;F$Y) r=!ndfS颖i' 3T3fv41Lά#ڂۨMc#RDSFG_4{^'2_[TP7Ƅ$hNӮedyqkRrRBDcsE7JHAZ0\c#-l MMͼAVlZSa2F4%r"(⋘ᢢHD^JCO3ٵt* BfJO8锒cNIxgY\̵;'#Y%fP2.%4Q?NoirOw:Zgt^ROX >}+Y@~dO T ~du#;Ǣv+pNIUo݂HAAE@HAf ` [,B(ĵ&\m(P RPˣDA3H㨟)Y;DPEDg`%SuO.li3c]-7 }q>Bk1"zO| v/"Y=e/#Lm"P%c)ӗJ'U,pl,C<(n #6N⥁[7WIE`ht-FX8S.N,`6?e)H֖ݵZbzUUScL l˿̿οɿůW??@w<)Cc\YxTtv7~+y}'H3Rers9YQ8<[zQ~gnPWG Gr%#Z$Լz19[5 SyjE YfYl{]4z~&6VSmTm2$>wvǸܱ-I6xf У_%y)1t(Ȼ&P!nQ7&!|BtC|tޗFgNb6|iMp8;j$EM5v(h!WDr舐ʉiHm. U6)B9f]Fl̊~=x,zZ 'F®{4bOBL^ҸE"sQ]]VЧxHqK=}RHQI"EbIE0HXx=yd ZCrGj=ƦVk‘H<6y4ZxY ae8h=M$H")Գ ~ЂTjFQk,Hj5m_ +el4Ŀ zOu]YI~wG ,9_X"F@S?y;e04crA0笂[fb^e4iɌK(drUDyrId F!Q$H<dԉFzDʱʒ [,'0 '6O O[gG}j#7)̺-=%c(9LRu# s. DKˤ0hcuLi )>V->פ_C bE#>`5S^Q]ʻ&j5#g:ه\,˂#·)-+VY)z}ʊrm|g*SQc$橳ۑ/]d{i rUv˟F xkd5QU͟IˤZ `) UG,—,w9t?7s+s poЃ} 0| ?`8 0܎ ~ p1~/+0YW|RP\|B[F_?f}zl*sڿUmV%`)|M- ˮ\tj]6yUKNo]z$pھoPUPMQ\O)0 f@Za&ƞ@;\b\4en^$E(xP8>=Xq0spꃎ_:8@RY}0fփ3:vp4 <{1a\$Le0 v4```m^ kJ V #51cxCm0ToЅa1(Y10XNpZXB`*npJi(vJ x{- o0at v RX6(.PC-Q N'7f4f B2Yz$Bá_-4baBCB셆Y rkla\乆ڹ깆fA/p da4fl9>2&2蟑^B^ OL|>TK?&wEA(B IjQ3祔1UE\_/VcʦyQWkjuRF jW5lJFJN93 [ Q3HY+;:Յ aPّ9/4e*LmkteGSTY:qjVzaB~Ё,sE7{CA\߼Ko 8s;@w_ٽ^"7MlSC̪?UgT`RTk6{˽^YUOU3TTcUIUٽ\橳۳O;4wL[Dfvs::0(&g-MSr;fN][Vbvtv;`yh$<^v~(/کv;Z mZ amڨ Th6ganq:l^J)};pϖc;N"Cf޽{ tbGVi"'>"zZyBnbCl|xZ@ Uc^Db3> 54/mVr媕8} R V,] /W~ *ܪ4X endstream endobj 126 0 obj 12458 endobj 127 0 obj << /Type /FontDescriptor /Ascent 833 /CapHeight 0 /Descent -300 /Flags 97 /FontBBox [ -68 -274 788 913 ] /FontName /DYFPSD+CourierNewPS-ItalicMT /ItalicAngle -12 /StemV 0 /MaxWidth 600 /FontFile2 125 0 R >> endobj 128 0 obj [ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] endobj 69 0 obj << /Type /Font /Subtype /TrueType /BaseFont /DYFPSD+CourierNewPS-ItalicMT /FontDescriptor 127 0 R /Widths 128 0 R /FirstChar 46 /LastChar 121 /Encoding /MacRomanEncoding >> endobj 129 0 obj << /Length 130 0 R /Length1 35500 /Filter /FlateDecode >> stream xڬ |E?^Us_==g}dL@H:*"Da! x^x!*G8 ⪋./FY]艹Ix}?!S]U}Lw=ya-A f̝6=!- Q@B)οh_!ň,xBϜv* רEnDx+ο4#9fLt΁w͝v|Ƭ!$BL;sK#@;y *m8mۙ/ z'R= }O~piKHRk:8Հ83Bj; #Q1VJ噊ʪlf@mA!Cgxq3}")|DnȇP`q|O@ށǕ8w\ã[t:;нW@2AODh5 z}R]\#3Z&YM4"L'"+ :C WLL2SթBE[}0דgcqE  c=.TYQ;] w=^ǭd0UX4a1zIG7v"ڇE`M /o Գ'pFazaBcQD&1wz;kC+Uh%Z6w{-G3O#7&0ឞ@Xx M)rd FpOb<*|5x މK$3ud5Ba12*f5|rl`G"JR0Js{|y~h-?\v>AJT؊.{&t;zIǏЧ@oa,.cLfpp+]g/&<ލ_{k BxIރߑI1UL5,cn繗%de/+{k{(Pr%1a^#d9hK wR!??/#ˌ%d"x'p\dUUAbE]kH-yCdG282uLeֲw ~>Pnڽ:BiYo 5sB1 O;0œp7K0Z( mw =JFoZϸ!;. cL%whԡ."Iy<|  tckO[ =x7z܁jLBO'Ffڈd_e_%,\0=$G@G 2"pM-Rh3|&s,|9^O4Y@Z=&Flhfe)^6 57^b:ZW>ѳFƆe*+2T2/H8 }^%8v›9Ѡi5jR2԰pK{SldiOi:;r1vGJp䅧)\էSa@CÁ.ilrN+`۞xfӤ0+r*ɮna{lf2 bX`Q%n&掠nW[0ZN,  2 ś:]`,hSԐڱg7cjEG /sAJ5;4L-Ӵ345h.Whkk4mh~yk5+[]›&_0y܅wn|ޙt>2q:*.)qLa|jW( 22(TnVn,/wFx[f:s]QƛIH9':`lUP(=nYeL,bBd:Vѫ*BɈ!sDBKIeTBi6#)(aOI@E2RT[0PVhC]% *1 B0A06i Pq5Pik"_J?=HAݝ݊m,M1r9NV;!bYWW9泥3y}wQוrq nm뚓β#Ճr;`?h=tgy/}pX~.a0}߃~߸W K&5n=f5 k% כ5jB{c%?CŻ;;\RhzXwȌo]d6|A+؈z;&nY!g0_qbc{NiTV6`QDW͊^s2CKe՘Z`q8؊F25Xlx)D濤;axS즲⏕=ߩߒx=Mp—|eaUGm7cgԽsQR# a[4ՅbRx2~G&>8^GGzGqǏQjF\7.*h@v#Pg`u`h@F4\QRI;)*!7RFv?so=gv>ɗ1.H pGw9]Ti\ţ翿b  0NyN-CIUU9"MwsԮ=Vݲñײ?_Z(d@%6ef&7D @́·mWMm+?X\Ӆ 6x,}N'U+/w%E:T>|w~44A= Z*C-DO6Z" KآI8%ley !,KڶZTہE,XHCnT"+YqֵOҴmm> X}Lqf9a6ln~S*8s<7Ԫs_Uj\nw zC2_P{0Gy/M6 K- ^D@| ð&dr`G&ۘ.rd E^|ddIB`ctzz@\=EOW9:$B . 9ݚ*+:p0ͽxRR3fs3Lϛg[(i+|0Ncb'^W`OP3o0v6dZB Ô J%C^ lj!aCg#"l,A-`)>Ҟ}3L;q$oiyUYlURZf$*2#CH6`Ue!(թXF4$+v!\ UbSQU>pҺrO囕jCF}LWIbAkkG%mf0hq yLF\9G(kҒ2={|tO@R=]ӽ6+Y7Y9V&4Et 11dt$ .g)@QǡE BVVfdR~X2L((v:@l*% j]MϟHu}>\'r͓\N~ WYsκpЂ ˂q=/{M'Ypwr͒M _/6*Z lE-ZZ7C]ɸ ?i'4I#=oRn]dP)hRpq B;e?pw7!ᘳ[X.y2j[h)f\q1.y&̭vY8hBYg'E,`6W= n4`*wEL:eL|o^6P$sb^QT2`e:yIͿX{ʸ$v)gN<,-qƖ+؂:+ah^C?==1X(.=N;;Q\mR jݐΟ:3Ւ0iꚚ>aJD"U Ik.d74f]8 \ؽ٬m[X#悙6gAo(RKz'&@/Sfji5`}H ~| L2:\A| 3U=vx/l Mr [#,z!d 22A< ?rUdqtAJJ-ѕk'>ؐ%;Z&#5&6&br| ;qVNJpA䂢_ d h2&UX,J o2Mh#8` )YCt0R>MBhMuRrAWL pYl7θ._O{ۄȐȭgbb٣g-\!T.V:6uDGü꟧\d:c罺ǟ Fk[)eV#ix]r2yci$Eo߅H.E]8"rHҹNM!&FDϕ(B_ԟӡgȀN0ש@1 wR1ҡT2 _ FKvR$5rc8 }K<]c"+w5l(kP*TW5 UYզ*\US^U)jK[l@8]{9&k2bͅk F YRjD.,/O0FhRD- ^64"Oҙ;Fq4#;(+6(Tg{(C)p-+|5býLPG5Afj[Iɴ8JѼ^T !A֨Wxi5u뷏Yխ{oUѨ7;<μnBT|Ί7Ռ]i+bżJ{/8̼5o@b'vX v,W\jd6weآ3$Kށ+ ~΋ɠz]* ep&^TU{SChgj7dscfo}ч)%@1d,&hW3ŵlmm.JLɢP?hj_$4Kgͤx_0hU"Ju:2 F$C/s.4jݡ;J=U2x㨖=|Vɽ.ft̃ hןB(mv+f I04攠O"d׃E+M3v{56̳j{Gsƀ(Ò Zsh \#Çn?99ܭ8!gHmδUtQpNVH+HkmٴbB5ê'dYS(YӒmʝW&;䮜UyW5~HPPe/?'Og#`OuX:r&^&iNL+*JTv#R`E) SdxNJ&/V Q㍇MYmD<C`0!6+DXLBe(qbCcZ͉Fȕ[A O|.0dH%"VRrHc++W2R[< ȸiN<P#C*yG5܁ǝtEd^zpIv]}nY1n W_W2ʓtZ@3 G kYN.S\SLpd~]guVK%4ŌE>o<$g-:nEBnnϢ=a2ꓞOQH\<4k_B% AhT Q:DlqCAQ:7uiLqnYx!~Q#mA9tG?0X`~(~˳i_yEOz'>)O5La,_K:n1xW! BcC$Cgdx3:VWjܶŜ;3nu:mV(ɱIǒɲpbx>LZ|^@&~1mxܵcݤ<3NZDZz}>_LB?656/llWLblLsءQ"I6Od%އ Ƭz"n 0|ma-BݟJh*r.Skf[2䎸AK]$M#Ur(944b]q 'ea-_Sde<Ԟ[+rx o2v*_Avy:QyI&bH9R'k7&Ǿb6v#KRF}b$mn:GLr#9SjLjjj^je`Jrǻ~ee娅5YEHρq H՗`<,z AcnIJ5)5x0N,swQ]eu!":N >-J)R?(]" H'«q/߶W8o۝M-̃'OhUWzr6rr]dB=@9@]j@:A sQ=om7Y6:;Ӧg-?|RPOmos>mYmFP t)L2Mq@Seyi$7WZ[VM1K^Yd`2(PZrkT%lv5_YJ1̱P! cpVcn 7Ö*|w6iҕn;F'-4]CM* ousXRyqa؃;+GL⚄_$_YN+&vYXN?mx#trқJU)r'hMyVs-*{cʔ7d<:oM+US7{ڻM9C.\#nEV\v)ast"I$V蜄E׀/%yHq<Og5y=cqqǫp򼍙a.g8kڂ1"#E",yeHј4~ 1ivij@V)4«W=ޜo@p"bw6 X,Y`ʀ[& 9Pw`gv":e)"Ȱtѿ@"AO8Bs#IU %r K2P G$Ʋ(eS,{l_e겝d :;f2S+gm'.T.+ؕj~%Jwїٯp!'\ f9̅\0[]l3` fp*M"bP !bsJJ t+$`nڥD,Ί͍pyylI+z׫۽vMjBp л5v~׎eНXlE(>IW%Fv;Rhu@ h0xk;zkcn-dy֓/ `3&oLzp܆vө0GVu Hl2{ -dv6ӂsö l w[鉚u@a;[~K˛O$ij"P>CΧ#/@&evRJЋ#x-<<(;niiv|mn]|F>31j_qH%f1s2n91Ns^Igm0fV3MR g ȰE5LԌ|Dsm~AG3V>YP .Q匨 -.s/zkjQ3[\}{*mZ,f7"W(_[qCKoU~R.P0T{-xM1Sפj!i iNRSL*>H/>*Àh L18&85p:u*yʇRyz#\|wcH$Mq1uT)H |±ͼ\]J[SJ¡;v=zswԱ{/zT(+a&>'31KLpqc4rKn8㹋κswXtyWn3q7NZ+{37f9g^40:::6>m-̊.v ^`Zγ]0vܥPsq>ZqZo[dž5 V-xŸ tY`Xgn]ǫJY"%:dU"# =( &́=V\ 2NaC4ԗ)d_F?Hc]\UW1/Irfٻv'=ƙ3yeoGGrp_Ž10'\Һka7 B!2r|39i8n#Ce6- 8D ^gs~M` }ƮT4.|dbI d00ʊQ l6y5U3'ec;JXc4`">VG>= }d-ؙ%E5sG}cѢ7|xܞ=w~\_ʢC_qWEn^(793,/HB!3__,>tdIoL$<[kײgyS2s'  Ç>!e&_\eߋ=ze]aF R"$T p0CX( ,n0RPvp 0+wm( z-;1 p9,XUd.#Ӣxi)d [8gI&niȪ{rhw4Ga~'qǖLl^UL6zy%x Ym2^~XãtRЩX6+>d)]o1WTLzCbV[yrrBNB9x>0uك'\JɑW/h* >qq!\r}ϸdU/ ɶmv5sܵ 7 q2ʪ^x1 ٓ k"ZOdruxcvuvXw-5}/eсّٹ ae$ik-ȏ~z//C'ղ^hVTTgClά/dhF6dw1k伻jIx<>%P*F"\֚eV o 0"VEy5_l~ȉ!tY4'FZɖE)"OE(9 ~r-EY5VwC(gHoUyV  XƀA誊uB@OB,^1Pe?hVGVj(jo&dKFE4F- Ne oomS;Y&GrusϽ?-֡q-g|}^|c7?(dtȁGH[vU-tKTd&R61ϴ\Pۂ)at>5B5:d:PjEIN>p ܥܧ<>;6mӵÔ ڔ)s8;< UlHT9ؒ.C{zU,@ [;ʹol#QhSidKHU篝眖J(]S\֠H9-zq6#x}h +龘L4խ]C.VUrr zKM'K-Pϟ?RMdщϊn=Acz*oEƌF$t"8rFqdhKʋY'^9-T8sC @ӝ5߹y&x7?vp vݗu 2O+ Ԓ Jc/Фvr$&-嬻v;ǘtE)W$N^/'eEC)g0c1ݡy=VQa]PP" G'߶aN_9B (_C cZ~GU4lld8^Bh4nɳ|X˧EϿyXs~=OtĨw.4Fo8 N5zs9y?+;eL\Nz\ oe6noKҳ~Acky_DN`T{x#trxK\E]C1ָhj`,; d(_i*F՜kBFgZ_7c}F\' wNx @4 M(_/|)o816蓌m W^aFx&:EY-d*b9]w^gtBS2?9eҟNK1f\:#lvI#҇҄dό2o3B\(f*t s|n~`B {ҷ۹=݁=3q? cNpc ?V:t.qIQ)dL))}cqs/A)NAu AjSԓ$?NݔN2?${)xZ55tK ԋ'k#o}z_W_s,"Kv{(6MWN؇V;n}䖱]ɨGLsxZ/732w#f; 1Q2rW7Ae0~+W/̾{cG!GeiـLS(l@ k K&h&kz-%VٮuhZN"\:US*Zrcܱ%4QV >eGdn$KzjKY8+6墾=7w@ ¥ B{6e@OSfyM@#Bȳd -WAw6aWMp7F1V jDRB|>lA R_BXbgܚˊh R0eG"~]!h I#kl mh5c$'he5I,'M!?Y|cA:ѨE"wIjZ&SYb1fSLSu1^ld9cb*p߷uAiMH|o[̒oLi~O{mpq/L`WF*7&c> Qtf/lbbͥ?~>@۠ċCF"uy(/ 7 ,!^d^ϑqa@TDM{=TKx7S%qʕ]n'4$#naoЍНsS}WJzPcb!6MTBCT,B_;dp=bڔF<ޥL.!f˥FǭҜ;?.-$?q ?գ=U/%T:j 5YRR/@m C} 9Rkܧ9K#5IEO7D?oM(ss(\[ ͏PBDȩmf?36.2!x>'-WB8׬l;HxqRI*͵ݽ,r-TVNm:Pre~4uq$%j,hSXHiwuPϪjVu.U^2X mUd 1#i=Bi!m`]ͬԉ2úI#SF2"3ԀO@t!6.HRS-AhHmENmapa-] 1K>h\KahV<_^B L졖{~`-` Eta~,7FJ l`Gz<+]ẘpl의5{L- UxmV5,n6OmfDX -Le G89O-7QE)I8 !CgK"WÅK2_)t%]I&>oFOvG󋿿˒ȱ|NT߼ ׷&O>)6ǽ!|8ys@Я!rzVmz)agB@5@@GLq]@K@5#z|}s~-@/: t( (J (o@ශ?0}씇1~ejvr[^g}#)+a|M/}ҷD8oCTۡ!+уec?!S6NbS28J&BUTYO 糱?5>:xMMݜot;^I m8 < ot ޹[ QLo"1s)Q"xG"8xvY G?ӯ;$AN|H 9ϔ| :A=?sw{߳_~_`m$ߔgg ߐ+2|^,*exa9^+bSG1Gqx!^e\)7D˛ g*mklVcm)[vvn9;cGv!EhahΘb;{v1]Kq+_G]ыKcyͣD;PײhSk6d4ut9ýp6<4Ѳ104wFMK9;{tW!TZ}w^|ZW;qR6xҞgzG$0Y#3yfqޞq0\ww^C2\G TDWŘ&7C/Fb3QvR3gΆ:S5ti:3H:U:3:l=%x+?Աl=ߟt]u<:{>@cюD|h֫GChe=;/M=2om\{%$55y:@>k>~M(:Ta\NHQ]njiYSBEs2D(D۪H1U=fT>M?1pٗhGuА*CCCwZ=D$N : 5 >ܴ^C)L@ߣe3;4{2tC endstream endobj 130 0 obj 23397 endobj 131 0 obj << /Type /FontDescriptor /Ascent 833 /CapHeight 0 /Descent -300 /Flags 33 /FontBBox [ -14 -274 638 783 ] /FontName /ZBPMPV+CourierNewPSMT /ItalicAngle 0 /StemV 0 /MaxWidth 600 /FontFile2 129 0 R >> endobj 132 0 obj [ 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] endobj 9 0 obj << /Type /Font /Subtype /TrueType /BaseFont /ZBPMPV+CourierNewPSMT /FontDescriptor 131 0 R /Widths 132 0 R /FirstChar 32 /LastChar 208 /Encoding /MacRomanEncoding >> endobj 133 0 obj << /Length 134 0 R /Length1 28292 /Filter /FlateDecode >> stream xڬ 6|N-]UVkR/3=3==2l("hDM%DM\b5ʼI INU{}]tթ:<`#4ټ7lZjB/ KV\캿s4ءK/[w_>-cX0}G"t@$ h?h굗Ѷ?se{/ %oټ+3h?pe {=˯X\[j oph^@ P@ A Gkf:hbpr.^? CT:_Ph,6*5Jm]=nj7~TL`T0#/zq] k=p:YALn-xzp7bz9N-h=fC` x `<(eA'ցn# O=?*:$`4[Çn5nx7 63>#"VnA}ÛA y9t ;% .2p9zPo .j^4a9 }2p{ߠ ?3<]}'`Z!xap)t &`62p 0x-GW8V֎[ ?|=K݌ @w@> @k7y6l#v71vxÿB#B#,ZƁ`-nB{x >FcWPd33-03G6ߊ%c3,?(tx;DZ5Z/3R;^$82,x<`b~t8ۅCǽx /w ȕ䓚o-|y< _#8WS}t[o]nANC}d3еө B nsּ3f*0'9CW}ɝium;}X{­{+sy kM3g샛fVnBJ/#s1ТK"O9s8)Rwҩ܆Q@-ݦlG ܆~P9:C_gpʕBm W/Bڨ6io&D\阻mBGFP`w ThGUh"w@i*yj(YÑ~xI &yAƁ$F83j4.V%OʥR[.RĞ@\,%'~t7kr!!y]Lt~K,I{& O.?sbs?rw-dZkrX_אEr Y4"^9m9= YJQʦ;RV'o~zd+ײ'RP^yl3O#K8% 0yqw~QW+q#FpY-Nx`}Sa  vziC$KD: 0MG/wyjmb>+;-N!S0zy1@:y0eEh6'2%-&}ڜзkzM&m]uu[Rq=: ׋u88n1j"W~P!E_Q%ol[zbjBGʡfQ ub(NQ QBcFH9|mDmt,Do[ﵳ.wA:ܲ{EW\ZrzC6_}۫g\08/BX8vl,|y{ƓizxtޜYnc7-?I?-K]k?|5žq_ | vLҬ{%lEԛ^*=vͿ۱h|̠K nVpju:yteB98P$+ڊWoo,V:-NJbs랮uI_W:_= F#~Dva .=h@ӃH&Ҡ\gL֬:=zu?7UD{BΪm(4(-833~ӳi}[އz+·g!]6c>\Ҩ|(ۚ7mmtJn-4lNs*tYh37zz%N*RGOQh=]b?=]yvnBQb'"zZF=u:V Y\isJk''~/i&]!/>ι ;gԹ vwd!|#&\A6x&|lMN[Vmo銄)O,B>d\o>mFZC yN\[C0;)(jjqƳhdcO@7#G bU㡴eM,X{ʀFu  -P-]YU R"A"\hC7M&(ߙ;_~Nx \.(bz{ߓأ% vHѮ ) ;qHPKu#:qN`5pN̪ǾKAp "ydr-qG.-B% @ c! @ AEl=-UT9U)4(2Uu.  TG[m)fXl/ǎ޺MW"?_ntVMJͦ~M{^?sՉ> `_CҠ! 7 84=NhDZzx~-NjAp?# 0b6<H\&GИ*}OǐGw%sP ٜIH+6)0Py{H5Tm1 $?nRǸmZZJݰ!NuzY ͻQ AX+"n7ƻ%dX;1KcvGϤk?īf9!l6f?<ҵfu8sHDO_ ^"HۅJ#0&BRH,T՗:X%A! VU"( +>mUW<.yCGc8v>yD.zSzȇvqiA2uU8CHg<{='&lO+FؾLERBB:#6aݘ23D't"Lo!Lz*x|/yRrCn,pcE7#{3q6 "2a` JanP8-Y8@#9eᇅ+ƧАeS!5Csoo97Ze[U׵8Vd):w>/|#9a(P]E(3Y<6=ړwv> ;XMH_>0iPLzꩴԚɴJi";պQGLy @rGqκpa1YXHI")E)Kکm6b }#?0pv={NChZ8\.H4dpcZ]p0Y i&@k4) :jI whZ j.i *I`h<`2tAF^w/1 =eNJG(J,b5PegD[Nm$+9eC0$RYrfD%1P Š>XG,;M;oF?a\X ?f,S_O'^ŌX]H"%ćNY]F"3m8LΦD`q @QP ޓ&^B$߳u8%:Ь`pGaටCha4Gӵck"!IF rL80/Y\3)R`c1q3;O呑S>%9hme K*詮#$RBb A \z*~*8NjP@0BV^y<"^so2VPW෮lӈGc[:+_9)䨑kqE?'Y{ЏK<_93Nҭ nB M lLE -7y8đyZ4MbbDuc>5:uoN C:O`F1!VRƀ਺ JS[CC<}P+Bo:mҚo_]7;>Ol큠\wӔKN]`&:q҈p)վӃ /l- Y6qN ˄BaZ3 `cjQhBL!ST x/!"|Z^( $JHRK0QQPxs\'aT!>P{]55+:Wa1~i?e9ypԮ-W㷮hq9%S57@08x[Z0:ōo&-^cͻM.J{qc0!Xv 8ȥm^w j$F$ fb m>_,N#"㸋[͌ծD1'pd &O(dk-U&64TC)S }'muWI0Πf eP8 yH й}!Qugov8\{|{O(zQ\A-10~,fDž{9#Ҭa P,T3h,B؜v=-Uπw'xj\\ _s(SU~L:38}ܵjк _Sc=3I+[u~ ܃T++ UnCAB**J(l$->"eey!rЯBX64!J bӵ)IEoT~DȦ*KF4QcHQcU2s<1EyePW|TWY 9HFQc!|WTĐf^=,DG;VbqgipY0 O1zągEX / }Gnd>4nww3n& kCcXP^rzBBNuljH6SHg14L}4xAN &)ˈl`T9 ,> MX[BWvbːj+XY~cݨh[(+#+W"D/mȳVHyǮEX ̐b 0頢άit(-hm pªjmY1"D`8gOEQW޿uN֏HY bEM+8 Dm\-!/b+66C8A0[ F`N#3N=z#ǭ2Q,~jG,ks z:9b'$dK*դS;'jcVc̟ܥOd랎Z%P=KhA$䣨?5.H)ͽ_Z*)qz{iwFV=G||oy;9;Ͼ/_&Ou^k:JeU62bRRj^uk~欸#tFa# 4זĠ p9S"бjާXrdB|c=":>YX>gԙ想z15-$: |AVfWi<.uݞiK=o3:-RۣeZPʭס.o8Bi#x1}ᘟEb8n>ΚS~qՊq8dG<⋳BRb HT=: ]Q4a༶ݫW|S.aOqiyF<eU-0SNἠ;mqpk37o_z4:%u8] ,-n?1;8יcz]T-1>E0@LE'D?^*GWO8xwZ:ע08%,QUXpjяD ēnmsp{*ػ*z&' ZQsmb?H(J_ZGs#Tm<(c<v?d?t|4p ieMNkV3m/?xY˿vw`Z-M/?{X>7`#Z%g)1U:{HZ_1#qTPp%ZqJ2ڱT%:q5q ι'q8`5(!ֲJ0EPuV1Yg>Wg>E8b.2xSSI PV TtwPU\(' UMBO?veS&pkݢ+Yb<=^s-fi'#/%Ffvrʭp6ʾx;'?ᢿ}%&ђ-xtyAЮ 3:}XO@f ~LC8p%=h~J^:DK)4gTH@+d)3(w{ )+N) CV[fQ~ !ָf-)p"ecb6Mju#< ݕc Xhs@ƴG3/u-vqu;..|а`A |\9bPE31*s6JZ-E{._W__ `/Dw䡄t!wx]p7TO5O35t WQRHSw28ںkkkkh1ItZ ND\<1F^V[I3MN'`/ ƍX4b:FseeGJFRj r2V"EBᚱDԝ͕mep͌Jqn"f(-p>`=_#V F'δ>-5 :6ZZcJYQW *iѩ$pEBqw);FU)ge Aqؠ"| EWdRF<6XB\ya3t^ҩ:xwV_Qn79Fw]%hn4dž*9 jx\ 8PJ|=C4zXzMnըpZ5o"9Pq+aY f=>]Q 2[mÞ-?єwcgԼw(O YX|/xD}~#G_z_uK%ŎuګW9t1QZaNJi !v䀵yt!=DOGNH2f)*$G쑑DU^AkeE`JkYE` DU f<)%FFg|j& aO}ѤLغn׏ 5o \&Wﰿ]N5o~:79b/'ҲcމSDJeܜ7X2Lɼi̇F<9.hQb֣nmBmM.K8`6rd]aIa]>M5D.Hd-QIϖ %`B4JU{a΢e9eMlX>UA1V :6ƛ!Z AyE1jzs;n TXLӴ4TXQ@2ͱ;'gو9tB5G}7箘{sm; #9]I#n_ALr4,~xv>qli{c_+0wRbz~2:*zƓ&Tz+&Y)_pF1Z\t=Ri~4mCNjOXz:kl)ߡ~-H2W!q996Q݀AGq8ԆhE4b}D%>ZE\1rBvMڗ_9^x)`5WG_{._c9 ^0yA͌J ;2`,HҌKG`x+VO.wpyEhĈb0V Y*<A4G/p橊d,C9|]a U_%]AiPyC5%=ɌsAok6qnө5_WCv-ǮoݣP{چ:V2evUϬL{Ҽ7$cd;K=1mV6ӛJC 1qVˠ}<>"lZ%{&ӧqժ gLsWԁ_Kҁ :YGαݱA81sFHY-fGG>(+i(BnQrՄW[}hIDǝMH'ZI>QX%aT.NU7GAŜ>.|&٧ZOXvڼs3ξKcgkwҼGߥ+t4Rg'%Mu^a.LZo^4:9Jo1c lܚ9_{իX&KdsYrB;1fj)iTPo.[=@(B#j7J&!ތk9@N(ZJx&Z3 gTY#ίʜyDtp#<|.ȜU <[b̝yonH]皋̸䧣5 kfnэ?XcaCQ{z-WʋHZGt91o l]ѨTl{̈p!_CzS C`':=m5*FU3AFX"ZxfZT/bjYΊu=v.Z5)JGp)lnNJ62^塱<'ZwOW\q7z.׮j+}*KIOp$hO>& =$d2Ώ6#9ԧgBͮmd|"|J1H=ĹIhE6b[|9aD.qF @ѐy4ԟcS[L?|aTtHM+2aFKR9_0:uiGmmZцv }z* y`$+J~- tg7>L1 063wi`In]+E-BA)xEkr& c}2Vi,D> hwntc`6Yjу8(TT|cPl~HuUEV:=RFI-U*#Λ>$9R)P&謄؅jmDuۜK[=Y( >{ Yܲ}2{v7Z>x_/A%u_B8.H4@8BVϨ@ht/ȉK:F Аm$o5v8k[~Wi'*D.sk4֛=[j(dnޓ^ yFGgI YUW~LQ8#:CjJQJLjjMI!*D+1+FX4m{O$6K194[' emR8[Sg6gEzc A8CָyVW661y=y 2 &My^߹ r4]Pl\<I3]|i|Ј _`k*V*dž&O BO2V2JTb8&*_+uTn,L EȪQI7%E~JD8FcDQWq_y>[2*q<30S[G1Vc|E>n˚:婣i R<~ag#HCZ}Z&:59+AG| |lʘ^o AHng|T}fnR3_2؝Nn1wZl9U;%h.(Kֹ.BgݦNhW5KqRp"zh̠B-#D ЊZD`Ӡ"՗eݦ-)bTIG,:$l`;];#F~2:&?]a'4~fipuZ̰x>7$s-!Ma|4I|B#ij{U̙JP"p )B*VD&B*JY-sC$^;k71.5/ͫ;~{p S2S~L9?8.W?d4yS~ho,Сj5AX佾/M&d!H=99udKF:>U鈁spƙsGhquq|(%FM4%7tΫsWکΫP7`y8QR3GO6Ăd &8}x?ڵ+%hit-A't&1n(%DWvpS7Vpdžt\LĈݮTٯWBxė#DJD?XTqP1;DR)P F ܺDpF7^ۺջ_K[X Gm+'n'o-m[HFU+.hOH7^b{LN7Ow-/e/5_\]ìqmf6;vЩN-AQIW0Zq1+PFhae~B5lAj?ps 9U忮xj t9jM<;ЪXSp.{8DIZFkw# W؂S>zQ3DrjtOg,e.91|iFsE{]19.m1Q D+BS[rEK:=͎Q4XjtK0(ӹZ7:&x5#i4EYӕl4fgs,_R =v Qs"T(ziLtdO@+ Jne=p=:++e(UZ##;?2bl*3nX+`ɠ{)']|vm=teْO,[؎9&MƐ I t&60ǔ&m*B)3ڡm 7!@aZX+;&?|~߷5| y9%zOԇәJO]Y9e+^cmϹM"o n ЈaƮ%h<`lGpj6{6 (PD#IoӰz80ZðxD951KmmqKK0E]P9.@Ss(kqHG#xKsx@ssc8*xa:!ޫ5pEIsR3/Z9TW)T{}vՓKh;ihvvVtɄ`ڢKmǚvB+FlQ[&:J/X( ņgRRبD[Z<35\yDaץ:jݮuZᥦiψr(t8}iŠpݼQB܎._s*DPsuā>A{ :[w/r"X)]:S7v4ev EX}'pdtbјӔRWӊ%)$xImsbg Zr60LC)kvEXS{[ *G $'(*. _4}eksu-p:Հ_Q(ZωY.y܄1>KLo$fHp&h4Bّ=_"' 1:0d!IfY*2smf cb%HIr_Ӆ"qtVo-yLJ%Nr}}m̮جV9^w.]RzgG9sHFvT/O9, z;viQ❉lPn]k' $hXY"N@D|5of&?]K.4GQs ~A,6֒trnJg])2HYknEy BR##sxb*ZWlINiqU0}~1*fn#7 '< I=3wv*9bᣞֽ0EÖ{gED+Pk1^gG@icSvmn]5#6.Ze[3,BUsZg_a؝ B7~V n s7pVjMDѠ+,P',6 B D]<<D*m>.=̽M}+>yO'?jź_~_;IƜ ɿ hHGCr<ǠAd(szʷ_땯Jsr"7X"x OkjW5y+7A ߊe6&oAioIoIƿ1!ڦ\muXyM.usCK.NMـ"\bϫ]v\8bJ1IjAx2:cS ;Qjg(&"yr0]_ HWCէk'b,Oh8#]`oxDlJz}j0k!kb}* ߧ[DYԞT/ծW5I34[{矺U4ښ=N+*oHw\Fx#jd^X]-,.F!) AJ N!DX"J(A~+:oQ: 9yEYf~.) t<=wv;Y8'~쾾lLxe!!G{L(>C"{F-re/35y`Y)  .`0GEiBat&&(A* Fi&<Τa&bLLd1AE‹9OB1)),I)R)HQ[+^;Qd?Xd?72;[S[2#˳wvgn8+WxHH:{k ["8C3Cctnrh/u^Il7Ml#յ=svS]+Cum׷3]l537]nڴY endstream endobj 134 0 obj 20960 endobj 135 0 obj << /Type /FontDescriptor /Ascent 750 /CapHeight 0 /Descent -250 /Flags 32 /FontBBox [ -167 -414 967 969 ] /FontName /FLHGXC+Times-Roman /ItalicAngle 0 /StemV 0 /MaxWidth 1000 /FontFile2 133 0 R >> endobj 136 0 obj [ 250 333 408 722 722 722 778 722 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 722 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 722 722 722 722 722 722 722 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 722 200 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 1000 722 722 722 722 722 722 500 1000 444 444 722 333 ] endobj 7 0 obj << /Type /Font /Subtype /TrueType /BaseFont /FLHGXC+Times-Roman /FontDescriptor 135 0 R /Widths 136 0 R /FirstChar 32 /LastChar 213 /Encoding /MacRomanEncoding >> endobj 5 0 obj << /Type /Pages /Parent 137 0 R /Count 6 /Kids [ 4 0 R 14 0 R 19 0 R 23 0 R 29 0 R 33 0 R ] >> endobj 38 0 obj << /Type /Pages /Parent 137 0 R /Count 6 /Kids [ 37 0 R 42 0 R 46 0 R 50 0 R 54 0 R 58 0 R ] >> endobj 63 0 obj << /Type /Pages /Parent 137 0 R /Count 6 /Kids [ 62 0 R 67 0 R 72 0 R 76 0 R 80 0 R 84 0 R ] >> endobj 89 0 obj << /Type /Pages /Parent 137 0 R /Count 5 /Kids [ 88 0 R 93 0 R 97 0 R 101 0 R 105 0 R ] >> endobj 137 0 obj << /Type /Pages /Count 23 /Kids [ 5 0 R 38 0 R 63 0 R 89 0 R ] >> endobj 138 0 obj << /Type /Catalog /Pages 137 0 R >> endobj 139 0 obj << /CreationDate (D:20040606215509-04'00') /Creator (Word) /ModDate (D:20040606215509-04'00') /Producer (Mac OS X 10.3.4 Quartz PDFContext) >> endobj 140 0 obj [ <4a562514e5438677711d53c60e913148> <4a562514e5438677711d53c60e913148> ] endobj xref 0 141 0000000000 65535 f 0000001664 00000 n 0000000022 00000 n 0000002741 00000 n 0000001684 00000 n 0000157653 00000 n 0000001790 00000 n 0000157475 00000 n 0000083046 00000 n 0000135253 00000 n 0000002721 00000 n 0000001912 00000 n 0000005313 00000 n 0000002777 00000 n 0000005334 00000 n 0000005443 00000 n 0000097304 00000 n 0000008222 00000 n 0000005579 00000 n 0000008243 00000 n 0000008352 00000 n 0000011369 00000 n 0000008488 00000 n 0000011390 00000 n 0000011499 00000 n 0000073001 00000 n 0000087246 00000 n 0000014290 00000 n 0000011661 00000 n 0000014311 00000 n 0000014420 00000 n 0000017017 00000 n 0000014556 00000 n 0000017038 00000 n 0000017147 00000 n 0000019920 00000 n 0000017270 00000 n 0000019941 00000 n 0000157763 00000 n 0000020051 00000 n 0000023391 00000 n 0000020187 00000 n 0000023412 00000 n 0000023522 00000 n 0000026533 00000 n 0000023646 00000 n 0000026554 00000 n 0000026664 00000 n 0000029578 00000 n 0000026788 00000 n 0000029599 00000 n 0000029709 00000 n 0000032867 00000 n 0000029833 00000 n 0000032888 00000 n 0000032998 00000 n 0000036613 00000 n 0000033134 00000 n 0000036634 00000 n 0000036744 00000 n 0000040094 00000 n 0000036868 00000 n 0000040115 00000 n 0000157875 00000 n 0000040225 00000 n 0000043560 00000 n 0000040349 00000 n 0000043581 00000 n 0000043691 00000 n 0000110607 00000 n 0000046911 00000 n 0000043828 00000 n 0000046932 00000 n 0000047042 00000 n 0000050445 00000 n 0000047153 00000 n 0000050466 00000 n 0000050576 00000 n 0000053779 00000 n 0000050700 00000 n 0000053800 00000 n 0000053910 00000 n 0000057018 00000 n 0000054046 00000 n 0000057039 00000 n 0000057149 00000 n 0000060090 00000 n 0000057272 00000 n 0000060111 00000 n 0000157987 00000 n 0000060221 00000 n 0000061913 00000 n 0000060345 00000 n 0000061934 00000 n 0000062044 00000 n 0000064626 00000 n 0000062155 00000 n 0000064647 00000 n 0000064757 00000 n 0000067884 00000 n 0000064880 00000 n 0000067905 00000 n 0000068018 00000 n 0000069028 00000 n 0000068168 00000 n 0000069049 00000 n 0000069162 00000 n 0000069274 00000 n 0000072363 00000 n 0000072385 00000 n 0000072594 00000 n 0000072639 00000 n 0000072980 00000 n 0000073165 00000 n 0000082420 00000 n 0000082442 00000 n 0000082661 00000 n 0000083227 00000 n 0000086985 00000 n 0000087007 00000 n 0000087221 00000 n 0000087423 00000 n 0000096739 00000 n 0000096761 00000 n 0000096979 00000 n 0000097484 00000 n 0000110035 00000 n 0000110058 00000 n 0000110282 00000 n 0000110796 00000 n 0000134286 00000 n 0000134309 00000 n 0000134524 00000 n 0000135434 00000 n 0000156487 00000 n 0000156510 00000 n 0000156724 00000 n 0000158094 00000 n 0000158177 00000 n 0000158230 00000 n 0000158390 00000 n trailer << /Size 141 /Root 138 0 R /Info 139 0 R /ID 140 0 R >> startxref 158481 %%EOF king-2.21.120420/king/doc/dot_king_prefs.txt0000644000000000000000000001147111744310052017047 0ustar rootroot# # Sample .king_prefs file # # This file contains all the settings used by KiNG, and all # the parameters are set to their default values. Edit this # file as necessary to customize the program's behavior. # # Any personalized version of this file should live # in your home directory, as follows: # Windows C:\Documents and Settings\USERNAME\.king_prefs # Mac OS X /Users/USERNAME/.king_prefs # Linux /home/USERNAME/.king_prefs # # KiNG stores your preferences in this file when you update # them with the Edit | Configure KiNG menu item; however, # many parameters can be set in this file that are not configureable # from the graphical interface inside of KiNG. # # KiNG must be restarted for changes to take effect, and only # applications (NOT applets in web pages) will be affected. # # Lines that start with a hash (#) are comments and will be ignored. # Comments are NOT preserved by Java when saving preferences. # ###################################################################### ### LOOK & FEEL OPTIONS ############################################## ###################################################################### # Make this larger to increase the size of the fonts in the menus, etc. fontMagnification = 1.0 # Make this larger to decrease picking precision pickingRadius = 5 # Can user can pick lines and triangles directly instead of just pts? pickObjects = false # Make this larger to increase the size of swatches in the color picker colorSwatchSize = 20 # Change these to affect the size of point IDs, labels in the kinemage, # XYZ coords, etc. Big/small refers to Display | Big labels. # Sizes are in points. fontSizeSmall = 12 fontSizeBig = 24 # Open the text window behind the main window on startup? textOpenOnStart = true # Start with the text window editable? textDefaultAllowEdits = false # Empty text window when last kinemage is closed, even if changes were made? textEmptyIfAllKinsClosed = false # Size of the graphics window at startup; 0 means auto-determine graphicsWidth = 0 graphicsHeight = 0 # Should we enable OpenGL at startup by default? joglByDefault = true # Number of samples for OpenGL full-scene antialiasing (FSAA). 1 means off. joglNumSamples = 4 ###################################################################### ### DISPLAY OPTIONS ################################################## ###################################################################### # Show frame rate in stderr? writeFPS = false # Should the Measures tool calc the dot product between 1-2 and 3-4? measureVectorVectorAngle = false # The angle for stereo separation, in degrees. # Positive values are wall-eye, negative values are cross-eye. stereoAngle = 6.0 # How long to delay between frames when auto-animating, in msec. autoAnimateDelay = 1500 # These parameters control the auto-rock function. Cycle time in msec. autoRockDegrees = 5 autoRockCycleTime = 2000 autoRockCycleSteps = 20 ###################################################################### ### TOOL OPTIONS ##################################################### ###################################################################### # Resolution of exported images. # 1 is pixel-for-pixel, ~ 72 dpi # 4 is ~ 300 dpi imageExportMultiplier = 4 # Show the command line every time a remote update runs? showHelperCommand = false # Dump standard error from *successful* background runs? # (Errors from failed runs are always shown.) showHelperErrors = false # Dump standard output from *failed* background runs too? showHelperOutput = false # How long can a background job run before being killed? In seconds. helperTimeout = 15 # Use minimizable windows for tools? minimizableTools = false ###################################################################### ### TOOL MENU PLACEMENT ############################################## ###################################################################### king.BasicTool.menuName =
king.tool.edmap.EDMapPlugin.menuName = Structural biology king.tool.export.ImageExport.menuName = king.tool.export.PdfExport.menuName = king.tool.draw.DrawingTool.menuName =
king.tool.util.SelfUpdatePlugin.menuName =
king.tool.bondrot.SuiteRotationTool.menuName = Specialty ###################################################################### ### PROTECTION AND CONFIRMATION ###################################### ###################################################################### # Should we check for a new version at kinemage.biochem.duke.edu? checkNewVersion = true # Should we ask before deleting groups, etc. in the Modify pane? treeConfirmDelete = true # Should we ask before merging groups, etc. in the Modify pane? treeConfirmMerge = true molikin.kingplugin.QuickinPlugin.menuName = molikin.kingplugin.MolikinPlugin.menuName = king-2.21.120420/king/doc/kinemage-format.html0000644000000000000000000005645311531212662017260 0ustar rootroot Mage Internal Help
This description of the kinemage format, which is taken from Mage's internal help, is very terse and may be incomplete in places. A more complete treatment in included in the KiNG documentation as format-kinemage.pdf, which covers all of the core functionality that Mage and KiNG share. For more information on the format, email Dr. David Richardson (dcr@kinemage.biochem.duke.edu) or Ian Davis (iwd@duke.edu).


Kinemage format from Mage's help:

Kinemage format keywords
Group,Subgroup,List parameters
Hypertext help


keywords ^TOP^


keywords start with @
alternates sometimes shown, but preferred form is listed first
@keyword {text characters} are those enclosed in {}
See 'Properties' listing for object keyword parameters and point attributes
--------text section------
@ of a real keyword must be first character of a new line
keywords here are set in by a space so this text can be read in Mage
@text starts text section
@mage #.## MAGE version (can come before @text),
only keyword recognized WITHIN text section
@kinemage # ESSENTIAL keyword to end text and start kinemage input
--------------------------
--------kinemage input----
# indicates an integer needed, #.## a floating point number.
@start control for reading from a sustained active pipe: start a frame
recognized by pipe handler code
@frame # frame number of image from a sustained active pipe, override
@finish control for reading from a sustained active pipe: finish a frame
@done control for reading from a sustained active pipe, close pipe

@mage #.##
@prekin #.##
@caption --->chars to caption until next recognized keyword---
@text --->any text appended until next recognized keyword (5_75+)

---MAGE object hierarchy: group, subgroup, list, (sets of points) points
points can be in connected line sets, or specify triangles, spheres, etc.
@group {name} [parameters... all on one line...]
@subgroup {name} [parameters... all on one line...] (@set)
@____list {name} [parameters... all on one line...]
some type of list is ESSENTIAL for a kinemage
@vectorlist (@vector)
@labellist (@label)
@wordlist (@word)
@dotlist (@dot)
@balllist (@ball)
@spherelist (@sphere)
@trianglelist (@triangle)
@ribbonlist (@ribbon)
@arrowlist (@arrow)
@marklist (@mark)
@ringlist (@ring)
@fanlist (@fan)

---MAGE points---follow @____list line on the next line
{pointID} [attributes... separated by spaces, commas, new-lines, etc.] x y z
--trailing triple: x,y,z defines scope of a point, x,y,z only required thing
----table cells only: 'tablecell' or 'noxyz' can stand for triple
Generally, list type determines meaning of all its points,
but point attributes can force different meanings within a list
for advanced, special purpose, complicated kinemages.

@kinemage # ends this kinemage input
@noscale
@scale #.##
@compare side-by-side of sequential animate groups, overrides stereo
stereo is reader's choice: menu and keyboard s key
@stereoangle #.## + for wall-eye, - for cross-eye, also under menu control
+ vs - toggled by keyboard c key
@onewidth default is multiwidth, also menu control
@thinline
@perspective
@plotonly
@flat @xytranslation
@pickcenter
@zclipoff
@whitebackground (@whiteback) (@whitebkg)
@viewid {string} @1viewid {string}
@2viewid {string}
...
@##viewid {string}
@zoom #.## @1zoom #.##
@2zoom #.##
...
@##zoom #.##
@span #.## @1span #.##
@2span #.##
...
@##span #.##
@center #.## #.## #.## @1center #.## #.## #.##
@2center #.## #.## #.##
...
@##center #.## #.## #.##
@matrix #.## #.## #.## #.## #.## #.## #.## #.## #.## @1matrix ...
@2matrix #.## #.## #.## #.## #.## #.## #.## #.## #.##
...
@##matrix #.## #.## #.## #.## #.## #.## #.## #.## #.##
@zslab # @1zslab # @zclip # @1zclip #
@2zslab # @2zclip #
... ...
@##zslab # @##zclip #
@ztran # @1ztran #
@2ztran #
...
@##ztran #

@localrotation #.## #.## #.## #.## #.## #.## #.## #.## #.##
a.k.a: @localrotat ... @localmatrix ...
@endlocalrotation @endlocalrot @endlocalmatrix
@localprecenter #.## #.## #.## @localcenter ... applied before matrix
@localpostcenter #.## #.## #.## applied after matrix
@endlocalcenter @endlocalcen @endlocalprecen @endlocalpostcen

@gnomon #.## #.## #.## #.## #.## #.## #.## #.## #.## #.## #.## #.##
place after the @group... line: to belong to that group
points on 3 axes and center (ok if each on separate line)
used by Docking routines to track change to a mobile group
MAGE will add to existing gnomon info or create anew if needed

@fontsizeinfo # @fontsizeinfo #
@fontsizelabels # @fontsizelabel #
@fontsizewords # @fontsizeword #
@tablefontsize # @fontsizetable #
@tableblackbkg black background (and blk bkg palette) for table
@tablewrap # number of columns across before wrap line below
@tablewrap auto-wrap first implemented in Java Mage
@tablewrapdecades auto-wrap # columns rounded down to 10's
@tablecolscale #.## scale calculated column width
@tablemarkradius #.## square marker radius for table selected graphics points
@tablefancore #.## inner radius of table value fan on graphics point
@tablefanradius #.## outer radius of table fan at a graphics point,
this is multiplied by point radius to represent the cell value

@beginselect keyword starts selection range, re: bondrot selection
@endselect keyword ends selection range, re: bondrot selection

(@beginemphasis prototype use only: starts selected range of emphasis)
(@endemphasis prototype use only: ends selected range of emphasis)

@listcolordominant @listcolordom usually point color is dominant: key 'l'
@lens #.## parameter of lens radius for lists marked "lens": key 'e'

@minutes #.## timed test of #.## minutes, results automatically written.
@drawline enables draw new function only for lines between points
@drawlabel enables draw new function only for labels (=pointID) at points
@drawball enables draw new function only for balls at points
(lines, labels, balls are inclusive! See list params answer & result: )
(scoring done only on answerlist type: limited to one type as of Sept 02)
@drawnew enables all draw new functions, useful for practice, etc.
(answer list without @minutes allows user to see scored result)
KINEMAGE menu items enabled to allow users to score and proceed in tests
@nosavealert NOT warn user about new drawings before doing next kinemage
@bigfonts sets toggle (w key) ON
@shortline #.## absolute amount to shorten each end of a new draw line

@comment {xxx yy z} character string just transfered unused to output
@command {xxx yy z} character string to be used for remote update cmd
@control creates a control button Lcontrol, which toggles Lcontrolon
@title {arbitrary kinemage title}
@copyright {date and author(s) }
@mapfile {filename.xmap} optional actual name to use for kin3Dcont
must be before any @group... line to apply to whole kinemage
@pdbfile {filename.pdb} optional actual name to use for prekin or probe
must be before any @group... line to apply to whole kinemage
@grouppdbfile {filename.pdb} specific group pdb to use for prekin or probe
must follow @group... line to apply to that group

--- masters ---
@colorset {name} color unique name and standard color as char strings
usage: @____list {listname} color= {name} ... anywhere in kinemage

@master {name} * forces named master buttons in inputed order
where * is one or more attributes optionally following {name}
"indent" "space" "on" "off" on off particular for pointmaster
@pointmaster 'C' {name} character 'C' associated with master= {name}
usage: {ptID} 'C' #.## #.## #.##

--- aspects ---
@1aspect {name-of-1st} (necessary to define for point aspect colors)
@2aspect {name-of-2nd}
...
@26aspect {name-of-26th}
points can have up to 16 color-codes in parentheses (ABC...)
positions invoked as the order of the numbers # of @#aspect {name}
but each position can have any one of the 26 capital letter color codes
codes in MAGE-HELP/Make kinemage: Internally generated palette kinemage. , Use "]" and "[" keys to cycle through aspects.

@nowfind {string} invokes FIND, input on the fly from an appended file
e.g.append 3 lines to search for string: @start @nowfind {string} @finish
as outputed by File/Save Special/pointID to file

@parameter #.## get up to 10 parameters to play with, e.g. diffractometer

@fullrgbpalette
{ #} #, #, #, {comment} matches: File/Save Special/palette to file
...
first # is 0-255 index of entry, then R,G,B 0-255, (comment ignored)
arbitrary number of entries, 251-254 ignored, entry color name NOT changed

-----obselete or violating reader's prerogatives----------
(@float #.##)
(@integer #)
(@ignore) allowed kinemage file to also be a, e.g., PS300 CHAOS display file
(@keepstereo) valid reader's choice but over-ridden by author's compare
(@keepthinline) artifact as author's choice, reader can use keyboard 't'
(@keepperspective) (@keepperspec) artifact as author's choice, keyboard 'p'
(@specialps) obselete: PostScript output now on menu
(@projection) construct line length * 1/cos(angle): now menu choice
(@constructdot) construct line puts dot instead of a line: now menu choice
(@multibin (#)) obselete, no effect
(@zoomonly) obselete, no effect
(@sideclip) obselete, no effect

END

parameters ^TOP^


--------mage group parameters------
@group {name} [param...]
animate (*prefix)
2animate (%prefix)
off
dominant (no buttons for member subgroups and lists)
nobutton (for this group)
recessiveon (dominant if off, recessive if on)
collapsable collapsible synonyms for recessiveon
master= {name} (common master name) (see NOTES)
instance= {name} (name of a proceeding group) (see NOTES)
clone= {name} (name of a proceeding group) (see NOTES)
moview # (number of a Menu VIEW)
lens (applied to member points)
float (obselete now always do floating point perspective calc:
--- parameters for table groups ---
table (members put into table, invokes Mage to make a table window)
header (members are column headers of table: use labellist or wordlist)
(each table row is a group, uses labellist,wordlist,fanlist)
(point coords meaningless in a table: use "tablecell" for "x,y,z")
table pick picks graphics point with same pointID

--------mage subgroup parameters------
@subgroup {name} [param...]
off
dominant (no buttons for member lists)
nobutton (for this subgroup)
recessiveon (dominant if off, recessive if on)
collapsable collapsible synonyms for recessiveon
master= {name} (common master name) (see NOTES)
instance= {name} (name of a proceeding subgroup) (see NOTES)
clone= {name} (name of a proceeding subgroup) (see NOTES)
lens (applied to member points)

--------mage list types------
vectorlist (Point x,y,z -->Line x,y,z -->Line x,y,z ...)
labellist (pointID displayed at x,y,z)
wordlist ( ,inc. new lines, displayed at x,y,z)
dotlist (line width # pixels at x,y,z
balllist( (disk [highlight] [shortened lines], center at x,y,z)
spherelist (stacked disks [highlight] [shortened lines] at x,y,z)
trianglelist (filled-in triangle)
ribbonlist (sets of 2 filled-in triangles have same normal)
arrowlist (Tail point x,y,z -->Head x,y,z with 4 tines ...)
marklist (screen-oriented squares around x,y,z)
ringlist (screen-oriented annulus around x,y,z)
fanlist (table member: screen-oriented, weighted feathers)
(weighted feathers radiate from x,y,z of asociated graphics point)
(@tablefancore #.## inner radius of table value fan on graphics point
(@tablefanradius #.## outer radius of table fan at a graphics point,

--------mage list parameters------
@_____list {name} [param...]
off
nobutton (for this list)

answer (list used as answer key with @minutes timed test)
(answer dominant nobutton off (hide answer key from user))
(answer must have point types of lines, labels, balls as test asks)
(answer list can be made with drawnew function in Mage.)
(see @minutes, @drawline, @drawlabel, @drawball ... )
result (list from drawnew of an earlier mage run to be scored vs. answer)

color= name colour= name (mage palette named colors)
master= {name} (common master name) (see NOTES)
instance= {name} (name of a proceeding list) (see NOTES)
clone= {name} (name of a proceeding list) (see NOTES)
lens (applied to member points)
detail
radius= # (ball, sphere, mark, ring, arrow-head vane length)
angle= # (arrow-head tine angle)
width= # (pixel width of lines)
static (dynamic rotations not applied to members of this list)
nozclip (applied to points in this list)
nohi nohighlight
face (for characters in wordlist)
font (for characters in wordlist)
size (for characters in wordlist)

--------list parameters for bond rotations--------
see @beginselect and @endselect for artificial scope
otherwise scope of bondrot is from first point of list to last point
before bondrot of equal or lower number, or end of file
Starting angle is arbitrary as far as MAGE is concerned,
should be actual dihedral
Ganged rotations distinguished by listname
(phirotation) obselete March 2002 (flags a ganged rotation)
bondrot #.# (starting angle, one of ganged rotations)
0bondrot #.# (starting angle, trunk)
1bondrot #.# (starting angle, first branch)
2bondrot #.# (starting angle, later branch)
3bondrot #.# (starting angle, ...)
4bondrot #.# (starting angle)
5bondrot #.# (starting angle)
6bondrot #.# (starting angle)
7bondrot #.# (starting angle)
8bondrot #.# (starting angle)
9bondrot #.# (starting angle)
March 2002: recognize up to 20bondrot levels, accept up to 100 bondrots
(99bondrot prototype for monotonically continuing branch from last n)
parameter (Lbrotoption 1)
precession (Lbrotoption 2)
selection (Lbrotoption 3)
xrotation (Lbrotoption 4)
yrotation (Lbrotoption 5)
zrotation (Lbrotoption 6)
xtranslation (Lbrotoption 7)
ytranslation (Lbrotoption 8)
ztranslation (Lbrotoption 9)
samescope2 (2 bondrots have the same scope as first of 2)
samescopt3 (3 bondrots have the same scope as first of 3)
samescope4 (4 bondrots have the same scope as first of 4)
hplot (bondrot value plotted horizontally)
vplot (bondrot value plotted vertically)
zplot (bondrot value plotted in&out, perpendicular to screen)
pattern c... (MAXBONDPATT==37 characters== 0...A or R,Y,G on UNIX slider)
phirotation (Lbrotoption 10 ganged rotation of same-named bondrot lists)

--------mage point attributes------
point attributes are usually separated by white space
as a matter of style and ease of editing, do separate all by white space
but sometimes worth maximal compression to use storage, transmission, etc.
thus whitespace as separator and as field delineator a bit tricky.
----------points---follow @____list line on the next line:
{pointID} [attributes...separated by spaces, commas, new-lines, etc.] x y z
{ final } does not require white space before next attribute.
--trailing triple: x,y,z defines scope of a point, x,y,z only required item
x y z fields delineated by non-numeric whitespace blank , ; : cr lf tab
----table cells only: 'tablecell' or 'noxyz' can stand for triple
saved and outputted for all point types
written to screen for wordlists, written in cell in table groups
if present, written in lower left screen when label is picked
--------single character flags, all except P need trailing white space
P defines new beginning of Point-->Line-->Line-->...polyline in vectorlist
P synonyms are p M m i.e. in Move-->Draw, exception: P ends itself
presumed for first point of a vectorlist. L for 'Line' not essential.
L synonyms are l D d
U (or u) flags point as unpickable, see menu superpick item
B (or b) ball at this point in a vectorlist
S (or s) sphere at this point in a vectorlist
R (or r) screen oriented ring at this point in a vectorlist
Q (or q) screen oriented square at this point in a vectorlist
A (or a) arrow on this point of a vectorlist
T (or t) point is to be interpreted as part of a triangle in a vectorlist

'C' single quotes around character(s) identifying pointmaster(s),
case sensitive, declare before use earlier in kinemage
to avoid single char master name or master-name conflict:
@pointmaster 'C' {name} character 'C' associated with master= {name}

--------multiple character attributes------- need surrounding white space
colorname any of mage palette color names;
colorname! (exclaimation point) forces use of point color.

width1 (or thin) for forced one pixel wide lines
width2 (width#, where #= 1...7) forced # pixel wide lines
Effective pen width = line width specified by point width or list width
where point width is dominant over list width setting.
When not specified, multi-width mode uses pen width for depth cueing
but some display objects (rings and marks) default to a const.

r= f point radius for points that are balls, spheres, rings, etc,
also used for arrow vane length (vane angle is list angle).

dummy (or DUMMY) point is NOT used for setting min,max x,y,z extents
tablecell (or noxyz or NOXYZ) substitutes for x, y, z triple
ghost (or GHOST) point is seen but not in special output (like PDB)

NOTES:
master:
The same master can refer to groups,subgroups,lists, each of which can
have multiple masters, but only 32 unique masters total.
Multiple masters are restrictive: all have to be ON for object to be ON
instance:
Object merely redisplayed at original coordinates, color can be different
but inherits masters, etc.
clone:
Object actually copied, can have changed coords, etc. new object in output.

mage commandline options:
COMMANDLINE, NO GUI, postscript output of each animation view:
mage filename.kin -postscript
produces: filename.kin.1.eps , filename.kin.2.eps , ... for n animate views

COMMANDLINE, NO GUI, meager help to standard out:
mage -help

COMMANDLINE, NO GUI, chronological list of changes to standard out:
mage -changes

COMMANDLINE options along with GUI:
-fontinfo dumps font possibilities to UNIX console
-medium forces use of meduim font for menus, dialogs, text: OK 1024x768
-large forces use of largest font: TOO BIG FOR <= 1024x768 SCREEN!
-macular == -jeremy chooses medium or large font based on screen size
-small forces use of small font, the old default (before 031127)


Capture the foo (besides game mode)
menu:Tools/Kludges/foo in cavity
Pick point for initial foo, grow in cavity, surface the foo.
Foo will coat a surface, and not puff out into the void.
Note: use Show Object Properties: group ignorable (by the foo).
For proper VdW size use: prekin -atomradii ...

END

hypertext ^TOP^


--------mage hypertext help------
The hypertext capabilities of MAGE text has two interrelated functions.
One is for a system of questions presented to the reader that are each
answered in a dialog box that gives the reader access to information from
the most recently picked points.
The other is facility to instruct MAGE to move around in the kinemage
by jumps to specific kinemages and views, find pointID text strings, turn
on and off masters, and reset bond rotations. Of course, these moves can
be part of a scheme of questions. However, they confer an enormous power
to the reader, particularly because the text, including the hypertext, can
be edited during the session!
For Questions, kinemage number and View number are carried forward from
the last time they were set during the linear input of the TEXT window
material. Thus kinemage and view can be presumed for the go-to-graphics
option of a new question. However, if these are to re-defined for the
current question, this must be done before any master-button or FIND
controls are specified. This dependence on the order of controls is
NOT hypertext-like and might frustrate the reader/lecturer if they try to
jump around in the text. The author must balance readability and flow
of the text with robustness.

Format: starts with '*{' includes [options] ends with '}*'
Questions start with Q: but Mage keeps track of the question number.
*{Q: text of question... }*
Thus, if the second question in the kinemage is:
*{Q: Which is the active Ser?}*
Mage shows this in the text, with room for the answer in the underlined space
*{Q: 2 Which is the active Ser?}*___________________________

Change instructions to Mage include:
*{kinemage #, view #, alloff, master={name} on, find {string} }*
abreviations: kinemage kin k, view v, master m, find f
'alloff' turns all masters off, masters are individually set 'on' or 'off'

Bond rotations can be set (and edited and reset!):
*{rot={name 1} #.#, rot={name 2} #.# ...}* abr: 'rot=','rot ','r '
where 'name 1' == the bondrot identifier string seen on the slider bar
and #.# is the new value for that rotation angle
If Update by PROBE active, hypertext 'rot' triggers an update.
PREKIN after version 5.74 makes hypertext commands
for rot/mutated residues

END

king-2.21.120420/king/doc/format-kinemage.pdf0000644000000000000000000043224711531212662017064 0ustar rootroot%PDF-1.4 % 3 0 obj << /Length 1262 /Filter /FlateDecode >> stream xVK6 WHĪHylf&s@􊳲!ulwkM.xzڭx'hV5rى4l-l&WĽ7LebUxWٿO9ϻ*9_"%,mv<&4;ˑQeO>vD~Pnd;Ϊ(o6?zDv&26:&"iZVy%NaI{Q^s^-oR/ǽB$j;3$)/- S0=)_ziN}P7Ȭ ȼ,Ֆ(H. >' 儒\BPBj C~-(:N[Fm\A4<Ҥ,iQrCFf.),H]G٩^;L032/7i4F]y5xh20btN& ׎j I94EyCH8UÑMFZ\5_r8қ3S;8QD|P4 @[7& (`vkvgg7^N1zvC)!{J!z Usց. ̑|y2%^L$ y-ʔ; 2%6`^3W;vzd) tV<;JTYP)ar.ʕsAx+R~$EI751Jے{[fY7y"*pvEUjMh1|i ;(Jeu4LXҧo}lfUX.렶*׶\K#@ue_Tlw/^^bYVW^F +RS endstream endobj 2 0 obj << /Type /Page /Contents 3 0 R /Resources 1 0 R /MediaBox [0 0 612 792] /Parent 10 0 R >> endobj 1 0 obj << /Font << /F61 6 0 R /F63 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 13 0 obj << /Length 1715 /Filter /FlateDecode >> stream xYKs6WVj&b #:iqf:=$9@$ṙLq_}2mIoM^f?ygq8_mQ"(Kq8'WgV31OEILOx׳|3 g[_dټLAr{AvvTė"RA]Tt Fr!3TMUͮn( !BR(>/vIk3x"><%H)Mb`Bw:z6l.S3Cj!<\"Kci, LXR P"*JkAd*gGMeO~vgPpx? @\TB7Cm2p;4 [H8gp9ȴO_-2ׄkQ=w(Z|ave,`D(;ȧrPnhp($Q29RBeĜH`4̢ XlE {%;kp|D|^NV9dg/ g_S%Ɵo>HZ2YFQ q@UTr0:pF(v7w8N=N?~a" ӷK`bgEdTH6Ÿ]n+z0!*?L2gA=@NL8#*z펝A2}TFJb&bSS;ЂߦcP ZwP*!o )*5NBM\|( q0 l⧐~+ endstream endobj 12 0 obj << /Type /Page /Contents 13 0 R /Resources 11 0 R /MediaBox [0 0 612 792] /Parent 10 0 R >> endobj 11 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F14 16 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 22 0 obj << /Length 2895 /Filter /FlateDecode >> stream xڕY[۸~?o+*Q ,Eh$y%f#K)(N"6g<>2]5qSf*Ͳ*Uq٤].ި"~Nȸ֬U=Vs{DH*l񗇟Uҋϥq݇d=$_8kI6!M?}lm.ؽ 8UYT :$Pk]0Њx2nƯ7Y"yZpztRydt`J~+"V81}kDh*[N]SEA1HG9Lhǣe"@˲YuUd~;p^18㖇v cK0:]Va<-܋3G3LA u{UB NKăz:$j3Mτ3=10(C,!A⤝>8p>Lq ni0bVԿ273<<,Bɿl_/#XP8,wR ZاCmAD2͢ "a%K7]`߱*sċ4I8Ù3(`C@{/o9R\S(1S^1xaHՠ섃{aL,8rDn8}:#<$9 G\'{l;,H8K&V %ob~Ĵ#:i'ķnhaH܃SE+P`/G 2?>A֓=NF>"t ,=6m @7=k!j/R`` \{@!F4l\m~d"\/NAT% g`r+lQ̫!8}u:jL O^v%`]}Mb{.d9cH$Rau~4'(L!OMFK4%,ǺmΎg)Q/^o3"/=?be endstream endobj 21 0 obj << /Type /Page /Contents 22 0 R /Resources 20 0 R /MediaBox [0 0 612 792] /Parent 10 0 R >> endobj 20 0 obj << /Font << /F61 6 0 R /F14 16 0 R /F91 25 0 R /F63 9 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 28 0 obj << /Length 2663 /Filter /FlateDecode >> stream xڍɲBF4Ip/IŮl~ ! Y@QK%S:h4廿骉R^T*Uq٤cyɊ$`_^i\%j׽sڿ$_^X5 I6ͪ{Q9lHS/k& 6 r?mՓUnduZG/x˝ʁ)x-3UMÃ봈pᙷmwۖG]xӺ,No'c֟[-wttw2զZdҸ)W-0țC17nDp=^gskP&0me]QޔIdΦ(Ԅ\MJE_YgEF7MְwH/gi(GkLUuoM0$Yے`6 1 }&YHL(!4 B $6sG#bCE$MZuu[/Q93֙T+*N`hޚNZ*ZL-@WC3RKf}KqsXPȊ8̒:錮GM@M$0-)~cN0$u0W! fhyf֛O <I? [P;*r&aMvёd!fUTzj<4㴞n:Vn_IC`FgmSq-ҖD4.Tyf؏#RW _[`0=[~,hRLsbgCxwtpN *5VA&E|y".s7kLHaDFQ3q0 )pL{9r3REpwң7B[ɠػ9#3ePYdmW2oBa nfnxb0|o~ ZYv΍X¿8WҚ$**E0%b웲T]u%F䜶tm/3r\ -&J^lKH^&ѻw󡹳ү]xv@=Q sxIrOwl!Sb~Xk{Zƃ9y,!xfx$8߱vgyzH0 d$> endobj 26 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F75 19 0 R /F14 16 0 R /F91 25 0 R >> /ProcSet [ /PDF /Text ] >> endobj 31 0 obj << /Length 2593 /Filter /FlateDecode >> stream xڭY[۸~?>TbQw(d-hEmG#^]x΍l+HGp88C}zx.U/h_(4_E⧅Z=w&Lu?MQ%O?ASςt;<}*tૢX&(%LJL6Nf&-j♶qUd~%OPپhDz$*s+$_dJ붼2?N3qˡr6I ZޔL hv 3T2ce:?vu`L@(HIMXP^SY73Q6>U` ,*:Ld`s^7q]YAYVV-aݐxؚnv8@'ɜHvfo:t$gOs#2&kA{?2Ŷg:cIQ5u;\xpbQܰ82UdJ鯾[(_AıܜjP _@L#sʎM8 ;B#|rAhn:w@mVIY{ d/ɏ o7viRۏǣ}JC?3ŀr)yW18&zgt'F@'Zxq=Ua-F $|bFf;tiȠ'3lpqafE J*0!Y.E))ʡwa\p}Ņ&~O0(yyg$LUDzU+HoޡϸK0~Kq>Ί7P`v%r=+䜫2p^  Dap 3'H?р5e=^áRr5LHXU#0JP;1X3X( 9S*}rq޿峗3A=EMGI"?O5 @H!xajMYѻqETͅ|f"2Q\$^$0cG LJ8jM6#TܕG;6v2WSs Aj3n\F]0wv 'X5~n_# Tp1H=H7fVN^oCa8p{4-W+k&xv?qW^`' Ib~!^s9>7 ͂ Nؔ#q]ݚp? 35tM\R:-<Z&laK=aV`xQϦiipE) Т!DĐtoBy_-:5 Z endstream endobj 30 0 obj << /Type /Page /Contents 31 0 R /Resources 29 0 R /MediaBox [0 0 612 792] /Parent 10 0 R >> endobj 29 0 obj << /Font << /F61 6 0 R /F14 16 0 R /F91 25 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 34 0 obj << /Length 3068 /Filter /FlateDecode >> stream xڥZݏ߿@"kU%Jj-.EݢK [\9}8EEɲ}A}pH|8޷wWeXjzx\J.VB]ƫ{zdQv[oTI?>|wx_|67Hvwh]X=qY;„8vsO6^L[RW4T^a2W7q$ XethI0њf%j3: sƃnz [SuS"=g~O$Rx8i3ް:<yf=U(Ӄ2: ˛$Eɉf[6 "-eysr iM߃cQxeO b NxvhdS#ZP̓FLa+N5M{#(}tG~Mgz^oR䪂T$@Ƹ1ii2ڰx 춑 ݩµ|';~!fMuȶ@v?2V> `_-Sl@ gjXE@6/)93<;gK٦88P $Пxp7"ۈʽ쪓3f#/-!NCw}A^b dhb Y\HA-tq@,쭧VFgܳy<%x(fFlb7,¤q^$6RKz=3yT=mnl obIG\ nnۄ`~>9pݷGS "@IA{.q`hwݢ75(c~.D`Fo`>q|+44BZ@Mbi8I&3ݟ iv%ԓmDVF"fH]Fr요^> p5=B_H"XYYr[1T* 7q0f*}Iq)_:WA%>&.$#S8lZ+NxOt"A &5m7,0q&V]VЅAW?BLl%$#Jj3:NϬZ=}B<(ί͟ '(~- ӲnOU!UԘiHή{q>*cu#<_2}yͳXr C,080-,gfMY4m5o_TTVIeaTgS#`G`o?JbMQD=T$8-wos,Z*IcN'_ ~Cn\0/K\@p=a ?XߓWT)҄v}ׁ IQ;kLk\X:%pL`”AMV$s0{QI4 *'lIKBh2s6l´N7*o5?ob(=,# %b]&W.Gzg c;\jGKl Ӽ\fi|TZ&%nxdop{u?L+0d:<vB:G4C 8TŰ&0[B{9g Pٔ޳G_ l j=|?Kgms|ţ ou)!ԭqQUT&FH]—%yfbbb )yD$Z VjUS x9<@<@~tm% zCԌL@wjzŰjCc(?khHUFأ}\| טu>lp&{JwXA ?*G#\ >ܨM|ߎ8}7%6d t=./0zi7UOT}徢J?Ye+DfgQ)%W ɰO7!3AV/: B%Όǽl#xFӀ |.WD LĻz*`Upkia=֔ L vr8>hu[~(H?hn,ڹ:i K_{bʱ*B]z2+@+E6eH^A ax#Aga.H[ WAQJ5D~0//>m~8c? xr/p~&Οe^S; uK,QyQڰJ!,JECl',x1q0\]3|Z#"kxRl."~ !PD$•nOe"x:F( ,9x/?p~IcC7Ȟͺf#.Fib@EgS endstream endobj 33 0 obj << /Type /Page /Contents 34 0 R /Resources 32 0 R /MediaBox [0 0 612 792] /Parent 10 0 R >> endobj 32 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F91 25 0 R /F14 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 37 0 obj << /Length 2560 /Filter /FlateDecode >> stream xڍY[۶~?B}25SxONNI29EHH },g߳7Pԡdr,.wWVeXfa8̳biju{Nޮ7:W5joܟ;Uc}V~[oTE{ZESuTG٪>޽{6ZշwQ (Te: PJݏw?Lmlt/qk*m-)`VLk7Tl9ꎗ7M ]D&fD™z Nyz"f[`+ 9P!aj0O?Q_VITx+ IaġZ(xVi`㿠vUfAFG0rm5a$H[a10!Pb {\C>WYcw{oxc NDj'jNc<vt*prv:a9 7C7iq2ʡU0oGdn @ {K%0ai-wFBsDiӄχN`Di,ָH-w%Pb-gd7nu0B83X6~~&zn/$ڴ,l .w үdwA`ހ,wjl&:Ϗb0ŏE= &X#IF@}$8UEѭd7*)؛֡ay⅞q)b0;pD\ul_1_A}PhǛ `kjF=B_m#ANR&TUu~"C!1o$@ 2emG6u[QzF,$diΖeR4ЄMA!9B81$3`wP0JOR3^4gimM]xU a wYun< ov!:y%e/*&ryCC ‰P`'+YK5w҃%i]LB *i \Tc؏ :}WZl>͕ ]a&{߼^Jen `g\x$}4&p)S}"űԋH&5T FρїXO0)j r8Jx^7T̬ '(ѽwItT- {p࿱)Q8;W@Áΐ>5@*♙&+A ~By'V (Rː7 aj%9.Fa!A4q*(^M 3 Br$.42 S1$_ee6X z͐'% \,%Vdkv" #60Mc &y۲֑yY*֊$)TI3[1xd`^xȊL! .Huc [w[2e0a朗N˞t+iy)S)qLå70{}DJ7z''WWQ߬  wf^ u%X/XjPq %byٟdG xGHp\_T^P J5>i/'qK)9~.PSuLp"AA;&uG\!~%!SR-.&C@;?"1OQ'] UcO3!BڮLq (|bo?TE&RV,6/0ϼ,5BotTtぜz8'M| :|HԳ"f7zvjssn>0;`> K{<,TdMW?0'o-(yۀz |]*p]+B jq7a'&DG+ i05|Đ q\!I~z-6c|*,]=;(, 2 .]6(DN\b/:"QAt*엔Z[<)A$@pg7+Q>'oEb8BΟ^3iX%uNoSG:'+JbJs2v_RD{> endobj 35 0 obj << /Font << /F61 6 0 R /F14 16 0 R /F91 25 0 R /F63 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 41 0 obj << /Length 2463 /Filter /FlateDecode >> stream xڭY[۸~_GQn- l@ `<6=f#K^ItZ(Kibyxx;;7LJ?jUUW:.rWYWj>7iD:QET?>JOM&Hj~yHb]gh'A뇿?m\lVL͊8/NuN큢h+#}{rLiLvoCh)]gV0; S=ude˖ 7F{mg6= d_Ѵ7mdR\;&Ծqp4XOLcʘ&TI;}HTS9r#!G;Vm^&hØ$:w&i,C n&\s4qBa-1IȵUc~u!(2mGiL*\qsJRhbXeџCJ}+4ENr'y uK70jfp 4A-@ z &DT 4ay.`&ȿ]S2RʡZ|K[sSF.6FfXB)= ")8NZ *7 G!>KBTznEv2ׇLg4[ v>jDۿݧБRUQ\]{RqaɣB$x?pZJVnkR [=;n& *"9Zs"'Z+cTfk=) huaM&JQ1t$TWgzD ' 7e5k3Sj5) !0laԌ\]( OX|^TEFxa; |Gz,ХS$7au_*4/BYr3 '60OuۓcR(mYf?#1E EPC\^3n֟ U3WDx-,q y\|Cwu b> endobj 39 0 obj << /Font << /F61 6 0 R /F14 16 0 R /F91 25 0 R /F63 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 44 0 obj << /Length 3178 /Filter /FlateDecode >> stream xڍYY~_1of z(3C"edWG]zPuUU]7=ܽ.3.tx7ֆyVg. 3g6N_0VKLLJ}3~fلyw}кpw6ctt鰭?m8gM0){,'"ViƤA%$@(μlLt}1+(xκ~zQb߈gd00J\4Ԝ2 cbx֔*]TNMy[MVOtܬ"ťA7 >D h/HXi~#X#_G` z+ zHk bnO H$vp ytYv11c]b?_+$|(t^¬ql_o2yL_"s6euӹ#t^맧I%cJ$XM"zNh*^NЇИK+0jJf®YNYoYK. J+JժH\k$ʞzSjq~E5)**ktKF QԘ8E;<Tsɕ)H(P}%ϚEeeҥz A%{x!Tz$Ɯg%rm4%vt49}S`P!y0~-#&*tKT,̫ʟU,Hn5Q p*w(ݪDgot^snWK_.`FY&"+_AAޫhWx)%Wp/58̓ϻX ::=4V? ['eSLU;k%&S4SLO<]BۦZ4Q8jI=s6טlY5J!U5 ~XiIH#('M2 ec?uPʏ@gp$, 9&%A'dA[k}h̽vQK..oCk`ݡlVռߗZ# 0D]Ad}Z*4ĥِҤQ?zWK%EḍR\ RF>d,.Dn˼ ( 6$B KnTAvIoV4(GmP~MM/cE蜻G]m͒>Nh h⼆y|90lAGbJ]qBI6 :<ݹ,=9AM-W4YdE? \F07KndEGOT xLNI)ѺEwJ$/sk2X~V?qH]5TO=f4Pϔ% ho6Jӭ2j%3/ _$bd|7",4lY>^YqGe'L{D\ͽ+AגiR>L}KZI@MBZa? Rq,r+{Qybӯ5_X5-]Ve9rFfe0݇W߅i7ֵUu`FQO"pG›$&aĆ.ίr.M}H 3LBr' endstream endobj 43 0 obj << /Type /Page /Contents 44 0 R /Resources 42 0 R /MediaBox [0 0 612 792] /Parent 38 0 R >> endobj 42 0 obj << /Font << /F61 6 0 R /F91 25 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 47 0 obj << /Length 2945 /Filter /FlateDecode >> stream x[Kܶﯘ8Uɑc9cŎ6qY.mSF|̃RI<ڪeN͓g1[d~f8]Y[ܮ_z/WMr^h4c7ްElI/o7/_M&E.@|eݍcyqsl崭^E\DZU-A6yd-hxK};繭;@UҶi έ:UݗVaձ!j~B f];u=+,<$뷇 ֛%c[}; 5thөؑ;h[jkZ6Y}Ey5M?Xga8SmʽgyJ|tov+M:H5 fuW2r. >b+4ke@y+.tPRk|Y< VBcAlڌC7aÝDu68xe)Ttwt @rHWyƆ?Os65wV ob#ũmU"׶z{uhSXdp9T8xPv_Bz?vdI,6ײ(&o!VEBR#gf`.<]HW'͹Y&s%ρpS<>ȌYm?ձcnh``~i/)d>o,DɱezQ" ++Z\Do:8  ϽhYkCHpv]C[ 鮆wW`R޷xr9tcvZm/薆3FU(˶/NW9wUVꮴ8NLofޮ QŖ&I^o'JU띕^9 ?@ ICŠM]F z*(d[( J;CLX>a>Su}^3FCW`l@n=*]H%Sj@1  ?Io ~(޲<9`1ȴŹ*`bu%u~uµ&ox>&59UQ>Qv">yÎla>k[+%^6VM#Kpk13h n1~Yv-qFH7ZIҶV/¼mFMa[%vY kW7nݪ6!C;*ۦ Qv݁r`,{@س/5zK4gڸ~L[~/+e#ƐHCI~SI"vE܅{FzO;zsj``X&H0]͛6M%nz6a <1xƐƐ ]2E}`2t{aeQ;䅈8Cיܟ>=|?W?`k/B$1`S+#+اṔ)+m. L6ۊ$, U6 7 |syhY:B XQG@,(g#-C/I_d~d_J&>^U{/&07S0Z)ж`qz3`frhEk#2p+#Z1kbV&ܮ {30{(#?c{Oܞh Dscr0a{GǗ<4~k;z3x DCZ=&=({O7SOf`Sk}܋I7/$C7v!8~ztX"'A:2Vx%soHnO } ~ۃ]&x?M1yqnj쟓b@1,ЮЏ)OdK޲&zݟ&l&R%5ɼ V\dWS6xa8^|W)gX1Nx#6AUHUTGgo'W3BVε@IEC/aܽ=;Z2/z@{nO r#m!¾-6Ѫjd!OFYO ,ޮ",^[1FU;؆eb. V )Vhki;vksw,M`͖^˲Ol޶nǿm8ŵ^ŵ !thȵOM\ k. ;d`/R9> endobj 45 0 obj << /Font << /F61 6 0 R /F75 19 0 R /F91 25 0 R /F63 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 50 0 obj << /Length 2513 /Filter /FlateDecode >> stream xڕYY8~_᷑X#R1$b13}H [E(wOo0},A 4bX,~_.Qϓpu_0$[%y'ZݕOɗFǁ1]hvr8<_>޼QL Y횛|ʛ`&<[=*WM_6)ی63uVeA8u*n 1`i$SwB"{&KֱVgȂiamX]`ZQ̩NmٛreY7퀾5E~E*?:iBUݩ..ꚉvpE#wZ'"ցwkGu`kyz&.:8edPłsOS%rlF{zu)d hOζv : mX;g~1 5f|C k|i |˨@%F651D'8SX<^"%gshd&!왬„2. l 2mϦH/9+PA8N $LJ8'`3h l R7ܳ"5h$?aEc7bނ29E9o0J 5?-dý@҆a-Po6Af @ 8q" <=':[s-C5n<; dlY g{E6{ݱd @*ewi'g!vC%p^W|W__-7U:`MfKṖۦ7!h2QwҭL/}qu_}:luvGH`vr G8_msz~f`@`\2ʍZt!ʪY嵇.Nv8YÔ-ibE9ua >S>WxPPNNYk#KHVt F{oR"4tp#HږoĺOH 9۱;(:=Q 30 Z*cLAK>v߿NޡuH2J #jY:5R%am~2V*VX3T1 `)ȟ_,ĒT\AF6;#;>+y Ed\-``a~rXfEr1X0u>V/yg|o:b xw`Q]4=I0+˵Ɨ a$a_B˙>\#p(DӈUazi _/Y~KM #+;μ*I> endobj 48 0 obj << /Font << /F61 6 0 R /F75 19 0 R /F91 25 0 R >> /ProcSet [ /PDF /Text ] >> endobj 53 0 obj << /Length 2834 /Filter /FlateDecode >> stream xڍ]۸}{ D}iM;Y\<mEG/ X pIx3)270ϊMVaVc!>4 ~fQ`Vkhpngh]KTZO?߽}SԂ (ԧ/w>E.|qYlBU]d޽LS{XNoTI:Z:NhAE,dw*8ZiAPg|<"ȃtڙa筊Ui뛁7j5޵<B1{PM,;f0Xk&l;s"((RaFiI4qlwyUoǑa`[u2>]?V=L Ś$1NePM#O?e5ߡ"?,O 菅;$ l7-9V ${׶2=pF96cN+3+x3VHҸ|M@P/ Ky:T wq=,yz 030Jt58^(e@3۝iɎG>NuE4Sݪ`ٻK{didd|}NDa"қ0x HĴi7vMOnjU<;BZ0Zjb!b2*3ovlG!GuZ"'8ؙc>: uMj`] Xbmf)8/[ӎ AJ #.TH4ΫAFv#jjJ ;('+?{/AE>YRH-Z3-ɻV"A-FGAGi,7;O0(tFRyjhp;)]SgLF8$Rsk<Ce4R[)X+ftcm,AK`BVD<]&gg܎$ Ν\f};h G]|һwxEX2UZow*Tv[i_l](n s=L~Ii<%òKq xqb_8Mbe;^!Lr__) MHdSR|{_qZGeY魊7eh\H һ7];:Fzɜ;{Nqf9){5u ŃЈQP64U4B+ cinϸg7BL{[!QEx}w< zpbx!O@M*+r2sɊZBmRؗl.O,w2עpt}A'Ѓ]#ٞuu]ve# !fzbgfêF:N.SR5.yZXx4Kl,&Ynri@pF7zC(l h!ɢ.gGgh7%o{HtErVv.ru8fo![e$8, /gWpvkbsk] gÙ*d0egQA  B(~I$.wYբ]5A4wNTb8q[_2_I0ݘR B1MzYyr)=`7se-f#[lqon3VS0%0=Ue-X8O 'yscU12JŬgp0"z/990ɋk@|bp|o|H9z$oUa_qi"tt5WkqQSY*Q2T~0F  g*J>GիGDsyIpo ^3D+k#'(zgV"ӯ+^ҡ _5"l na @PLw'W<Sj-?e{sZ<ׂ0CSN l9?Wv0(w{0(TRq;^z > endobj 51 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 56 0 obj << /Length 2538 /Filter /FlateDecode >> stream xڍɎ_a`F"e2@[ĶE(m"YO?H7u\zIˢuuyj?G۝ʓv2 *](ۯO??!$KWӸLMszd>$X$Nzsz,HSwy.[m㼊2y+Ǯ:O?3<#PQhyd5lFĈ*^S'ї$OOy05p廗%ܥi\ucwȀ<!ß/J3{f{ KΝn3m|] s&9hA w`;P%~{o( ͰD)_$dM?2n:)@BN*M~7 Z7No`oWk{ދ/)o DIY|8 ;;33KWNGxh85y'ŃII0_@%g-"4 H@S`Ցh4h#I KV<lwC^po4laq Mr̰M@0Ԟ&Q 6ƽw*뤄8W!59zւxmV*U6϶q_D+sd~h]o&+=N-O|-d_E ~yT#ϒ|vwʯo~'ы6\|N+tolJct.w-@?B2b&/'s ӉLJ ׷ 59n<1&r [CňH᧊4+ļRܵNQd@&y9a˜nĘ c}s;`H("3;BcYgYeIR` 0)(i% r n!7CC=zOGi (h2 ȚJdekrmSWu30@uhۅ ؟j$#:%bsgLm&u*N"^C ,Qx8khO%BK p30.pblX8+Cc@7~r vco{3 -q!C.unĢXeG@(SzM@Le7!I4bֵL8I3f`~$(,΃;-JPb/oV:V  d*3>h_uGBElj88 3\T endstream endobj 55 0 obj << /Type /Page /Contents 56 0 R /Resources 54 0 R /MediaBox [0 0 612 792] /Parent 57 0 R >> endobj 54 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 60 0 obj << /Length 2529 /Filter /FlateDecode >> stream xYYsF~ׯ#حJlljXnl9~#qJ8ro_"8yzt}Lo/`QE-w ,ii,Mo0Q+ۚFf$Gevm0T wW_`vBg*]oWoުEu])?*#b\E1 d\_tq[=KE.d~%t/Gl=&q[sx2lg;ަt7fu5jmL0g[=ڮqG0l}]ȋUGp bXO+2T޻exzSw?~@2 ii+{r[|@NIZ];voa ]V'?,ɮFg쀧MI~@rToh;-;-plGp'f0'۱(炋A̳M XK9MWA~;' e0EFCp44QT(玲 Z\r" 2ю[4. x)GT1ٍ͖%䄆ӲH(YE6{m;1Ssd`HwؙTh+i ],WY*\jsAI$jRxO0a˶:Ȅ AEXCI+]IP3|kvǭ_Pv` =/"o찺r? 'E<׫ɚ^M7րb{?uɇc";k0P=RHB~W캾 K93-Qea *Wt/[*C%I@)@)2D|B?:B.H$sX@KCـSQJ gQ+((rp` !)&tF{hw?NDcwhS<CL J'E K@F#ű9bdJeI lLP |Y /Tg~|R(ݜ) N V7A"#ܐej}-* IZ{kq~<7lH8e7&Eଶ 8>;@% @ljDl;NgB훍!,ݡ[1Շ?|7</h9RPNJb2eU>^Qe; I"T,*,yJtWmxy׷h^_BW2޵.WFC tIń3ʮ'Įk+A+l5 ܏rd%+| 2NW:GX!+٩ԡXh@܈ޅXGXU,kJx*҃t~2EY.,a[8^ ^pWBVeDsJuH }߿MPl`UotmÜ\kB0EDAkD\iOYʸWy[2fY %;aj! HI,@p^."+&|x3FxJc)y/I}ۡvP% TRӫܹ/Aƶ6_ S/b?Ppm\ݘ|im>;;6Q<;885dini\%"s ˒<FCN;[,v)Jo\䃲1W5ևr]Z؄_>rZ|22" {%ɫhq+(*hs&;ny0oͳ,9:(qWY5?\$]N7"sNx[vTUe_Q"2-A JN"΀15)󍖵mJL]o8_֕[};ׄr5~a}O5}O}jH"!ql9kRh\ taKbɓhwa endstream endobj 59 0 obj << /Type /Page /Contents 60 0 R /Resources 58 0 R /MediaBox [0 0 612 792] /Parent 57 0 R >> endobj 58 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F75 19 0 R /F91 25 0 R >> /ProcSet [ /PDF /Text ] >> endobj 63 0 obj << /Length 1383 /Filter /FlateDecode >> stream xڕWYo8~,Iݶ}I@K-D7wTtQAf|~ƙ9I2/g~ Bо}5[Җ7--I?l+]1BpO7蚎wW_8uμ /4#(%bY 8gˈٛPlM]+R+{p $qʐ(|bW1 r=\%Fp lpיJIu79l|r$E a%!vs _g"G$g*.? Ju㢊lVLxIzǺp@\=ví<-UBBkIH5 ~E1STSk\YA< R#R?T/ `ʥ`(inu=(E$ӣCLNWfUyCSd\$?s8x}6%mCWG0p5;RA+Ҹє5}+űSwJӻ{XPM!%Pa * cg:>(@R0anT{3DJ2y'Pu5D$ɠ,sj6&]t}-PK"7ф/y,=,V.M5He:vd.jlQC69L9 9tO|PK.ݻϛy KUo6Uuz-#Uv+{B-2ـ|cZ}]j "*ۼ IG7xebut܂BOSFm =1 BIa:M8TSp;H2Ш.)x~rVg+\V٦P݄cbW$ԥ9\dy&YRh_8x{L.؛̴xjɦ"H _Mȓ1q?*(@n=^$vbwUjK=fX6K7ra"8xCJ臩IH]zo!*tl$tƊߡҩM}U>j8Ux |?A>@X0:30q j+ +D;y6 endstream endobj 62 0 obj << /Type /Page /Contents 63 0 R /Resources 61 0 R /MediaBox [0 0 612 792] /Parent 57 0 R >> endobj 61 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F91 25 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 66 0 obj << /Length 1557 /Filter /FlateDecode >> stream xڥX](}ϯȣ-51ܧҮ*u[i쵍߁qrVZU-00spa֤.q%i-5>?G>-eE(JʤضvI6 au=A?!ÆeR?77^o+wo\`l e^.׽4szj#g큪i-ث=v`JqQu7<;^"ޥyFA;ga2G3y̵(%IQ{OB$OΟiR(v/IxLkc~@WIdzob7+؃ΖA0OƮjh/2pE2t f !4ˠxkFUT$-g8h!B!zSLY4]У(Bnzsr3uBǴċ&)["Lݺ>6ZdUqq,B 17^g-b- mK/؀kSܔPtwdeH>l4x4/Xd- ߬CJpmdR#:,Jzԁ5}Z.pĵ"e].{\)T.~5/?QNN +YAlICٲs<:$Wܰ HN*! T(C\ÿ}{Y&@ .xg>I`41D:綧u^A~z/L%$u#3hAp<{_PtU/}86|xÇl)b9CQ^p1u`#^"nZ_ FgwnKLғ|$YiH=ˠk? 3&-Zi=gFi&w`ha45jpwruZ8(R !W7,c4-g9˶{1s# U4.۳!*)OZ4=׈i:,44ߜD.Ljs\x)s?c+;OG9/W<9q{N ٳD9b;/deJ*d>=+M>6FڣMk@(o郘c\mzaܝ ˥"4!pns,>tT% |/Yn ]1-kعPQdbqۣ9pVO叵,F"[>5sfu` &W` >z9W}i4>J0~?rFI0vH}҂4)]aVɝ0w/N\Ӓ^H2E]oVB @g$VCق|U_3l1 +WǷerp2Tǘ'˥c#A7!j14ýgfS<؇ҹpߑՅs0W endstream endobj 65 0 obj << /Type /Page /Contents 66 0 R /Resources 64 0 R /MediaBox [0 0 612 792] /Parent 57 0 R >> endobj 64 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 69 0 obj << /Length 2327 /Filter /FlateDecode >> stream xڕXm۸ OwsƵ$[mصavcԱS?4#EʱzC艤(˿h\~- Su:}^D6[DL1خqPj<[Eވ"U$etO+'f08>*ZBg3PR10znIKĽvGSk*֋%i(U&VDu48fih2Z;&&xTI6E[ڒVLQ]Y5p4ݻ7ooi)MWNʦJ%*<"_P R8?Q,^o4/@lCUք HE'dҢ /rQ)(ހ +f퇶ÓZwTyRjvZòh5.e~j;J8(S= gk(I-;RLWg^ {YPNQڮ[`jVszƺdD1?ݕ@Dmw[[zi2fma](lSGWa5Ccة>oi Szp_8tBUk+e؉6uF$BUYtd-=hzڣެ["voy!;ϻHw̓U'x޶R:{ӏ\#ߩkO.,vr"zeY3Ӿw` T'0aoeekTn/^/{t{eWC@ခ+hzg|0lK㏄8'z0hmIWg5s;*,ֻ =X@W 'Rn&2H#IguJ Z9%pIa=WtW…<,Sv9g>!e'N m|~cz#e@[ȅo+8{}f ,*Y=@xuF}`r/r,S( nQgz!8E3&c*3#tSazv^/" & ~qNb?&gl~1-a!upD#45?d{%/gHjvaa2}tGt@s|g4'tqrң 93WTt6xƾBSp/ ƍoDLR+&)ОgGpɃvuWܐ$j>PЌqWzLwB@_iN!jŹPC(evU/d'}T~b~E^ϼJBRpHg3<󧞠ޖ?R{jCXJEQjBj/BHŷT q&z&5O<܇8-e m d+.삆 \9> endobj 67 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F91 25 0 R >> /ProcSet [ /PDF /Text ] >> endobj 72 0 obj << /Length 2224 /Filter /FlateDecode >> stream xX[ ~ϯH #Y>{ŢŢO3(:dd{gP)ǹ"@DQEQGOϋ7os,"WR*o2/8/y.z':Dڊ"2mOfuf*6NDp[MeǷc<}g3&78ȏ0IJskC 2Py46OSD>BWYize@pu3T *˭b7%Ew` `<]:?q8 ] v1gٟK~aKG S(Oa [E<hŐ=H^s 4Wyszџx |Iד&s zO9$_9n3As@x1zXn55w}"8֐ŸRy: "xS&YNsoyqm؝ |QPQdeAq1WT;9u}(BmCTzc3΂󪥲G@ zv|i˗b\n0#y1`ĕr v+N:,)X]v[o:jjФGܭTVJHTn;F+GRA3 Rv+ݜx% 8_wq ;; T[@J- :Be1_"H +h4TѲTwnpmU;qׇ59-}]8$FxIAz 5Kř71:Sv~4 (!@UyhޘxDˀbRYd(j"5+ 5𾲻,WÃOE7}% 講c˅ ]u,랱g|/޹` v2 |ߌIXx=^MyDAI8mPt|MLه$RU(&?L0dt|Bڄvz%fbs_iQq+MycSmKhG (E Bv)? !]f={(jʳ@,#t|<) m.2,u4@";j[^nvf fW<9靈`E^:s8ϿALwo3 y}\jfIT IAnBYh@=nYeތIԏeEqnH2ҿ]~QW!=%,T[BA39ukb]k^G>K]7%1 L͋9t'^')OS@OP%;N endstream endobj 71 0 obj << /Type /Page /Contents 72 0 R /Resources 70 0 R /MediaBox [0 0 612 792] /Parent 57 0 R >> endobj 70 0 obj << /Font << /F61 6 0 R /F91 25 0 R /F63 9 0 R /F75 19 0 R /F14 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 75 0 obj << /Length 1569 /Filter /FlateDecode >> stream x_6 )Vhׅ{٬dspm?'1tv|OTO4DQ2wjJۛq'VIQB4!$n̢; lOIJwŵݶg;ԝ;\{zp}0 [~@˸(qp@7U x2oE&6DDREM0Jy٤d 9QAB\I^EpGca3wP5pnĞʴlڞ8hK]d*Ύ' &w=ldQNmP 5Գ0{`C;]X z>'O{sX*I Ri8C@MMmS)@dƚӼX0~7;Aȅ)w7hjotẼkfk#ʣj KhS**tsNh6-4=ᆻ5&5meQN?Uvô/wM=qZ<[r+ ۨ/!3(ûAf(]5i |tFG 78ZhNh(*'4rfE4%0v ͸(Yy@ahNҌ6Ks4Ce,t1-?M'~MfzA>I%blJ\<OƱg45=tP|EdvsxӺ&N `oȊ?Ϻ ?dP_}CFKv`^GVgHŘTcF @K~ɨ $vI-uŜĮQ<2r$ƽGnIK9籈r9t8V*eOTCMxb{"p3 'iBM䚜&`Ta}Sդ ^ɤex{yj$0֒:mmAsA۲mu+\s&|f2tߘ:Դrm}jROn'/Xէl*J%wuctҺ3>:]30E?w;P sS4ĸ;$OˌH~qV|V$wd>8\ldæf$txvddU"M 5{ +_;Sbyml ı?)(n $%?Ћ>390s t6, 9=hLaSl_Qt|n_ Uo's"\ endstream endobj 74 0 obj << /Type /Page /Contents 75 0 R /Resources 73 0 R /MediaBox [0 0 612 792] /Parent 76 0 R >> endobj 73 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F91 25 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 79 0 obj << /Length 2131 /Filter /FlateDecode >> stream xڭ˒-TՊ!R$_N\Y<v| >$xS _7 EXR!4<b{_}>O}FڧK7FCy'@I$ v~#Č-çh[m폛(E}8 EQlL`<7l={jrE4 c:%@8Lw{EQr50i,4KH"?Eqw"uUu]l`Ѩ6dt{6 'ae uƱtb@K$ W62͂EKx4Nug:˝0a(6k`ލF+EBG[=w3yh~̴-^ WavP}R S Cɠ;;j0\( jۡEľ(o'lx_ɨFtl6.;+e@噏|ᒀ6Ù&&t۵{ܼ҅X";T|npe%gc< g6_ECtWp3lxGI<sYzE)iZLgoLF 1 c /uyzZxB&.T܍/߿OÃN+^y w3;_ʥRI)} +G_~r dI+I=X#jeth=EJr hZHk^C.g1_V~då(b4":'^%|4qmDlD &k8^'-]B?nB5hL .8a.8$,blDZ_σQ˯p iэ -IIܪ)S2Zd:]-~͜m|B_ endstream endobj 78 0 obj << /Type /Page /Contents 79 0 R /Resources 77 0 R /MediaBox [0 0 612 792] /Parent 76 0 R >> endobj 77 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F91 25 0 R /F75 19 0 R /F14 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 82 0 obj << /Length 1931 /Filter /FlateDecode >> stream xڕَ6_G.[ $dfO3@Kȿ.n;Y4bźWO.Ժ"]?*Mm[eZ?o7JEMqåf7*L7.HӏVjßZpT6.Uz.^׫x*r~u\4J ܬ, vH6JҜ@" UO$]=̷v]<,oT,IZyIg2n{T iD0{]dzs#o y0#o$gi2g3 رy\d_pkLbro=7KΧ 28Mӣmwbgx@+6w0wEe]Imw,鷣q6am#XwFv oŁĮj&i`;4eBƸ=~K43Tc#2ٽv Q->Hpfઽ,CU]kA{NЁ6/y?όʣa`Aк"ņȯ>}-\B#nAR;܈3Ee .RIF[ OXt~×TEG$Ho:)4QsIH$ 7| &0-rw\Mgd"[Hiؤ \FwB'$tn R0/05&zBRfUrŸRU0ŨEH(#jQFF']Yy䧪T7Wej/ƪ=8h]MMdvu r}!O֛+Jۺ6d ̋ nx4r$/moɰMͨzozt )uǵ7T@F&Y_NC8diZ2Ny^sqo W1W=4YbFN Geˤ2H jr MϜU̎ރ2 Io8hJA|_Ѓ/]m}綉PՃWyZh1D-jQuk| #nj06@ a1ݣ Q ;3/kX?\=09e7 6XTb|{TyP?T@R20|E,4hc#RRn4$d0xOЁIX8+$ghac VËzD=ŀBQ&l4$`ZNŭDQC=2SPx$(̖o_ˡŃ3A0J7>/n}  TJWIpQQ{CF3Jd* vNzOӟ!0Uߞ{XzqBl5ٙq,Ĺ3\e1[cS5#,$kdX+v2q)Z .)a877P嚻 c,74yF@ݩ`b{h@/0Œ1#wr|8wISW?3=Za0eeh@h/X|+^<^_FLIrE܋rܘ1K^&_1o1^%qSO(bg&4* L> endobj 80 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F91 25 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 85 0 obj << /Length 2227 /Filter /FlateDecode >> stream xڭX[۶~hI]8(`(dҠ%"K.lPNOXpn7O\HiZ,iCAJ܄*SDv#Hmӕc@ǧ_WO+O.KE;꯶$Pgi k10z[vG0h ƔL00$L[ -zw+Sy2\q4:K݄N>tB$*u:A&QCqhG.tp θBa:i L (˶Ll; pj6-#H\{ =35"U AWFF ʛx5MQ đb@%' ޷23M"O̜9鵇SBMgmHX*"U (),M1C{ﹻޔpV8N3qSׂG~3n_iwDÍ^髅،,/=Qpad{E] uiiS`4\BIp\-b*0Tw )">ĩ#z%zGxa hOVu*Q' 5KTqQ'j7bp.8>d-ǖ,cf}TzkĚ;$*玦!*x $ck43Ts% Lb=6}x4t`Ƣ4^Pinur{a$bEi+mB2&*R?(}h3AuX$Av7!f~xg ) E89%67~pPRh4ޕYZA"\:B)yP<[Tp塊H[X)+c,. XJx~.iF".N'#/`ic2(ň,2Nێ~Y e\9,5 k=>q%Ao="aH`B1qF1 ߼GƼ$ڿ΁TgSU N s=l08Pf: :6"K ,`U"[a"05xųxDC#*z5AU\ / !>- 6ЧanXֈM`6&4tClIѴ t|Acdvw\pcKkK[;#^ \@:#nA~9*fϐ&(]-=5np^vVx~N1ߝhݥ i|+n>_mLt4)@w|:ȅ:9lǵeEW_2svyA"ﭝ IP{|؛~8t8gvU6NcsH9G& hwuU3_3h+uX8^~88o1!? endstream endobj 84 0 obj << /Type /Page /Contents 85 0 R /Resources 83 0 R /MediaBox [0 0 612 792] /Parent 76 0 R >> endobj 83 0 obj << /Font << /F61 6 0 R /F75 19 0 R /F63 9 0 R /F91 25 0 R /F99 88 0 R >> /ProcSet [ /PDF /Text ] >> endobj 91 0 obj << /Length 921 /Filter /FlateDecode >> stream xmUM8 WcՒK[EQ.6d[cKYn6)z#Oݗ-i<b礮jKR4#xڥ̒F.VhkqՍ.hCߢ 0%uVFOYgH=HQ@D"hp{PA%cX;2@GJ JOѝ {m M)HEݤ gJӼBpA#vnT'YU@\XI!eG3dp9;SSKx2e oJiYTWaq<+H%&,f\zTx=/=:1 "͎"zV޲7 t1b~,5%f,r!Zݏ1MLz- 5կOP1$4_ioe -zѴȫ7$Qpx>KfxEV'_jd &^طͼQYJ'iNx77< UxCF-y3v6m?=/\ϟ,Z9isOq.s $Uf¤0sb$Hܨl5 g\<=7FB2ޯB6uD]! }nt~Mվ)|:=;J֟!y endstream endobj 90 0 obj << /Type /Page /Contents 91 0 R /Resources 89 0 R /MediaBox [0 0 612 792] /Parent 76 0 R >> endobj 89 0 obj << /Font << /F61 6 0 R /F91 25 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 92 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl/notequal/infinity/lessequal/greaterequal/partialdiff/summation/product/pi/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro/integral/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Omega/radical/approxequal 144/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/Delta/lozenge/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj 87 0 obj << /Length1 1608 /Length2 3065 /Length3 532 /Length 3884 /Filter /FlateDecode >> stream xTy8k$K95Kٲ`,I'=10f̐%;,1ʾg C%d$[(%R wz޹h1>  r 1 b$#aQֈ*@DH M$R4p! $ H8EbP~g!<Gƨ`pDDx@ ='AڭMDSΙ!v[ڋQaQ%$Ї[ Ph"֦ =^D4O2tAPHPwgu1{q{Yp@ "@$Qk,E1:y~7HHRI P8,@,PSZTs"##=q.߽ϿB`LoEx1k5_1ha]RA~:3hG3Cў 4j7F@V^I闘+^Ģ~eNg7~Xt/ NUdዧW&8.6W09eQoHOA"};jr{e C9 EQWnE PݻԖ}@$QR--f:.OVG]k<}G"?7((-rVΥoJɝ#R/;19"-U_BXWc컠,gryoL?Kxs~Lj8D9|7oyE㏻t?ZchYΌgS*~=3_XBy㊤-5psM)r #v|GScxm _NMvNUXpk50\ ;[xoRC]Ŵ>[2?A޻jT۫^ɜiBtB1D7d-w9/(90H}gqBBLE0t$TݷYlϕ%~{PqUxuхkJ&3=;=äbbф J*4K-]nu$2\)'Of#{'3o2O$ZʶxZYȒbոX&8ՌK0_}#6ePZ~w>(U߾q9C_x!1o8=L{M):kGO+dlM4(f'z&WЂ6 1YNH;-mKhWIhRv t@AWs,9=41ɯM=-ħL25IHDBbbuuZ I,:1t}71yCZ]KT0 3/Lb3q3M 6|cИ 4$,j*u=W;TNCU*փl&[+AK(Ú<_yeMOXElkDVqffxc(̔ܘvfFIc:胘NI2+\~kZ^]W\XT}U=A9xkoJWYDTNO=kd,&Osεvp pCW=M_zU`KrZé~!cvliZF'0UwzGy,6 <'7Qd]½ZBZɢF?rV^ϥMcْ۪MO(IA}7/I0kv:Um9x>9銃ʚ}X90:>с>0tN1l sv1od#XpCMh & wos4M`ϳ\ h~?ずvp')CC|MRRO__ CsVȥWl#e!Vɡ+M}=7޹>1MK52x7s3y3wmZ[m hsvK'Y&]yCן A9+;R(FYGiKFƞS7oո$B4O(%?HUN2j(3bqmI)ڿߐ1ىlqSZgKm~;:#6h0uŚuu"< n+=˶æ1ՌyOskmqo%sUj=m$22T/ L|YΫuDuAO߄Lu8>,V:[KՕa3H҉ojD:|3x-uda]tUЅHeB&X͑Y :=#$՘bC&DSJ2etAZ^4,d#hLT+vqaWnS+-U{l¤Jd ͎^)IYezJ|v/=W } uěMF?+oKXȏluJ~?"+{rN:>kӛ]S Zr})n!糚_ZNI]АVh}MH/%"cc Ѩ^-APX ͌s.)Eup#Xvjq{kY OC%]&<˔gE G}/-_I=ԙ7{Mxj2ymphr4˸0pEzF*??rd%x1|ЦM(+T.ۗQXxUTEm)OQWq%4 ~ o |!43[YlGVywĚtkO0ʹ;)I08qO 29I7vG5 Y-VI.d^NgBӲggt1,!Ye[Bсe@虖TvGyt6%-ll܋FRYN.kĊbLdn'J^$U ؇g^_x`&jloKO(YXW;24I" s>DM٣FgFZ_ίyaoa[~ O yPe͔)a$7۬,2j#T,ہPJ2 mF#SOS_l[y$ukAf/%a1|W*KE ysXժ)424h: ) R]K:WR'%464sUOو&AoBBd-bK]~*lGg_~I/ykĂrvrf7#9Ιi֖Jp\'7䥾X{%-: Ak۹U0"=ޥ'װir]ݯZWX Vh/XSRyB, GԹ>͇pFN А)osìܦ-gRUW0ɗ2MkGf>ׅrl@>.|2$~ĵt;za Kc"${} endstream endobj 88 0 obj << /Type /Font /Subtype /Type1 /Encoding 92 0 R /FirstChar 69 /LastChar 101 /Widths 93 0 R /BaseFont /PZTIUL+NimbusSanL-Bold /FontDescriptor 86 0 R >> endobj 86 0 obj << /Ascent 722 /CapHeight 722 /Descent -217 /FontName /PZTIUL+NimbusSanL-Bold /ItalicAngle 0 /StemV 141 /XHeight 532 /FontBBox [-173 -307 1003 949] /Flags 4 /CharSet (/E/e) /FontFile 87 0 R >> endobj 93 0 obj [667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 ] endobj 24 0 obj << /Length1 1618 /Length2 18720 /Length3 532 /Length 19640 /Filter /FlateDecode >> stream xڬcx]%c۶m;;ΎmVTlTl*t=ۧO_Ow1ǜcu$j "@I+ #3/@E$Ϡ t5r PP9M\@&@^ 4Xxxx(b^֖Vj U-::0LkK;r \ k; @LIYGFQ @-&ve7S;k3X88}9̭iͅ/ 44:8]\~]& ׿3puX!n/B#);9[;VU7OW+jXu,F;ҿ|az]MA.W?LskG;9:[5?&v@0 ߺ7qtWÿkW# ߚfk[ZYvs75 v/ sh$Ne>$oE7qF%ZN}a;O!jMG0D@afdEhljf0;5@@g;k&ԭlA. +ҿ3IjhI(7AoD`R^9Ϯ8QQO(/<+:[{vI0 H5W%_fn׽@' ae/&=+õ;oxR\r8̱Q0֡' =bGc4G©,h/UwEM_!eA0aٗ?Z1>[P̚;*o0lp4dfi 񘝨M`_NP&?>P \CSC}tը򉤁hF¿n 1̧ #Q,X˿@g '+8KܯƺI\spo& mK+ h⊺%§ξ9onJgYG+>3H[5OG o%Q9+[yN(>ua^Twy<,eӖo''͜E&MS!Wd%T:/+<Xk4:[SFKPڬBs$y"ȐLǿ}eznWy b"+^0bWۉk1uPV޶c:RGiTPnkd q8XWd+x<"10r\9[4ɼϜ.:-Vű`BMueœ8|iO y2`QIv}|AՒΞRƥ8hM #.'>OQ ʺWyʰ0 iW#b(K 0Aת+?@BMȢa} ޝ B%Z7<уA ]Ks+''vEHb,oCBPixgf|JmAT<)kU( R!@!,6'6lhQ˦Kh2g;WK dЕv|-;![*9YJU"S~pی̌4H9m 'A^vУuTޗ_IҖBL[))!Tp7A|<|G7-,{vy)n0*D̥IěW:XGî<&~)Api7 O0u/-E>oF_rhVODw"ezs 'ƙh,OnVdXxn#c@1ȩ/3ǒCwȟ[|ȀgSaNgCkUSU2GEǫOC2枯!ypv#DRrwn;[]ZAi73A&O1yB& oYƟkH 6>!P:Shh!/ Mz!{㒟{ {BMMl\`"OC9t5ҕ.v`Mi𴗀O rOڟ\A&y2T2T|ܴ ~]/Q4wϵ"\vKeW%pdqT},)}AiӨ*[TWnʨ $* 8RqJe*.q0N7iXjp ֒gMa$Ct6w@5fXg4-Ԏ䆈 d0seq2 w_*]7 'PmTW\&E"ݵhB{Va/MݹIp4GCر͟yLz{ =Wk!>'~3Xgr֓W&4p[>(ߎ\Y/lA%[#hV)l<l7\P,!7+N u5IH jxObs6j7Ŋ9siN'NK4dy sȩ)ث7vL!L?݈<%򌏆{N,9m)t( !w̼v~=KQF̸h;:=wa,p<%/e'a ~X2p=3m{p,]gЎ:=/ӱϗ='2SQ6oKAOZV(Oo΄x f )g!3$%5-[%lZpQ`)P9[rOFn҆P4Jx Kdmo4幂*,hl+g~ò/E =+$`ЉaHvy\ c*GZ*DqQ!EkW )C <ϭͷ`@ŕ^KqO qGQ49ImzF'NUkq c:dk*{ruSy^xv?'y%͢s  N+_1 5b - i?7:D).*{nb^`%8N]ۭYF&p&{fQh;1<[DO hMWqD@7/S*Oٙs_]P.9j9ѣJɔZ;R_8-'nC 쵥8kN4j@J? OD 1Oid>:6^5Zqt?vA^5Lh 'O*%c>{]@ix$f xi>WLx{~PBw`8H`V7b?rkYo ZWA'! 37r/ Ӥ`+JaVq##Nf䦻hUكiX\91*5ݽ'w TcǏ[- psI}Ie9zM.ktr/7-oAO6%H?!([.#ǭ+lHFտ?BYZukq2Q\(JR i7 7~2j"=](fe <4~ase{*YAϺF37O}o H&Ŀg"5TB֭.~7DϋYM&In\ynOQV+MNtD2ʠi_f&va6Yg%cE3X?/nEhNs;'+SӁtjZo*Wr_?w-%܈vw>VJshyօU]tP<.:Ԗ'QKQu ϙ\f e?olQg_fU|'?6͸$~}̽:@s.d叠MFj`Oi&x{}PAnBE>? 5~/}G_+!اcCoZ[s9R]nB3#D <)Zy3@ H^FC*/R@uTS4ȿS#dIA49*pjMy_!|%C$h*ˍz27QpZ&pm[›` \ K_ o6jZ?GgI 챽U㢾ez6WK7:dvLp*hWXu^wQ&#tɎ$,[tXRj$\C.K` e8U6URxypjTi)g֚h y; GU+G?waẃ=OɠNf%];)\C#ye2@I7XBlihbK|Gϛ~@5/zx$LC/FM*YY]/;hI8g\5c#hF Q7J}.Ew FXCj7E:4,ٕx5M2R\e 0Udʓ0|E6$Zf#iaAd}GgʐWmG>i,7=;s4_j/aDզO7u02^ f˂؅sc7% [^TbNu,{@i_-/ck&"*w!UnxӨyң;(7{a,Ů{a)S(ׄ?RSy:LDdVa!]1RpJo銸LhD+2w,I.;4Lpk_΂Z(x*[/֞WͰS~t@W?73 O$ .X>bwR|)uUdRq/F9豴Hqdb7 EC?;H*= cݏ 7A#Z>f!Y`0%TƷA?X>6չ7i*b.2,I|,n8iQ_s &4*=Qmo}9fj ("r_j1RoӶ?*Uql* u4*!.~ (O!^%CJuİJ4 >&uΜ_|p1uwa>j"~E41e29j8`9xv>JXpmXd$|)Y]'%\D\e:`m͔= 5cO+,Rpq"U-:>?\1.X-.ʡ=B͘C!Z̙-/NGS?EF4EKmHމO<Hw7YS>9N!.( ZF4P #{yǑ_혼JߕΥ'nɴЋ'H:Go4;Nxj˾54PYԽث߉h "F걒5H,O[v!R.!2"/$ϡwNV7uI}ou[sQSn D U$f?53b|2@VG;F./.CD]/i hNAx7;^My@+~H]Tώp_ 7^cυKMm%yQ^D3͐bDFK̭[AޙO r(w|&)3dƒͰ%U,6XQ |ޢxݭn+q}f'$&P$3X:Y>g@*3dLN Mgb6&wHO^8S(پ%-wG-fO,q "u:Tđp7-v~ejnjt 41O1趀1{ҠlI;ċюMdL)<\A^څ"uD(qxnw%wR3U0a`Y}[[,'ЦA?Bw\ɾՌ RMOh $oXs9T}ص;$ːHy`Qqd0#GFF(w$awVjA: x9?tSُ0UX ԓ>:ɭ:ŗ=Q4$c7E-..wfNF5cX8|{3fҹg<kG3,օBDd^$rȴboPOwو:N{n@3:nF7 Z'N*p6d]фl9R %qiFTWH;$pqd.D+FWGki%e2kdl(!J }fUhpq9ek|l7DP-)g "WϠ`0Iu#@G$ r˜SVÇ%}Ci =MA@FmQew6|av Efʣ Yh@C]>MTVSZluSo*N Z1b?}5"'SyՓ-d0Tny4YA;A ~q[XYP,*>?4wk&qD&W'u tfPiGh y k}F]/ç[>TZFR qSlPQoxIڂw²]K7UxR;@E/v6d#m7 VUڄ֤ɞ]WPqCr؆%nzGno7{Q ·]ӓ5R{":G"I=6ZK)1tjoB2`V-RV2S{8؝hzFgٌiВ|DB\(~@1 =g ./j^+'ƌ0?tܾՃ;/gXl;~kϚ󰕺 )삶aC(HovBgF5fŊ)Ǥ9Ё1%sTr1 Z"F#:_х`::$v ؇4Ua^]D>^dl-`XZo`bu-ͱrӴ:}gLozWk~JEC1a<#?S=u`NŘl7|%,ň1ZD-`ʽ2[uFFލL/1{\\ hYnuN&}r !z*PrKZȪI@m aFn@%R^^iaQ~[]z{rŨ8& p _I5I9, / XbJa^V_*ď)H`ć>?;*!E0:R"5ՒEMpǍ燸'D:s ^?I!uբNH?#ہ~WvBJw#ْ8oIU!Q cOX)AC -KeדrMolLc.ڵXB~G؄.⟶/W(um.OϙП0xǥ5UKoX2u)l(N>/Җ4UK˾&n8F:5BEw-[Ys<6sQK/TO 1ƃcU>9E \E:B_v.sPb#kF훇#rtd k V=''F/,q>g2h\; |ُ:,xG$\'/0Y9)@ȅ=~ ]oM^z愍tTwz 17:)9Ôg;_ÜkXSWC) CV؉3#n1iARgDͳVW]8Nxlzp2./[d˸[B[(.c%N81mC(dB'=.k=}[*O?{e7=#e|2="0_{4-6s (P(:ϩ 5ʦ'm|vl=!)/M]m,׊Z'GY1hTW;ˌ6 ΞoDf)J1NV:?FndB\I 'K ʱ&%52cTGFWj?x3#;̈=ސիKY)gber.^-ȴ}jMfI-<ۅm71i, 3^hIԽ\Ȓ%MRyqˢm3[0!nwBÖ98jVLtF P K J2DD^¹-KQIh^SNpRmR oɁbJPLӹxkX:VA8!`5v%.h_.(\c$iY81mFc|v{{3-t\8!g%Q\;A#<$2ߓvo֛ h%Anùj:t0L2O!ϲ3)E9oH^?U3)r=xdet,7< 3,?fݺ#2yRп5An&v5ӤR7PKT)t=[vQ<9KX\1.&1)J:hƛe[(4m$t2,%)Rwh sħ {+?M-N8Jg0EfϤT/Nh2A}u5bu[;g soLy3>-R$A!^y׻ٽ0< y44'Jj|7x`T"5 EfJ$haQȷQp>*3es^  ý5% /`// ۭnٛ$ʕc"rj|d:I{AOH^coB&{CFqSeΙh2]2s,>C(eSH 3ÓFsR1(2\ee--lPT,o&L'pxSoK flLf;MШw.yA^J[_L>Jb`wm3ϧnI#T')SMuyV kf.Ԑ:۝n cad#4a? D>Am'呰wSC:k]%E &si(=2RC'=1IZU5k8h ܆WE)Q7\udH 3HwTkUXt5>}"wXβ0pZ>X0Z'gS? 9e$Pb͸P<$e]DW I!Et{]Mx+ \WKjo '81Nk47o?z}nq +,9; ݙ]NmXn0Rke_x /0`m)Fg3Uwp۞yOa%;_}mj/͊n6İ ^I;KH>[sIj}.e8`N*|F~<4qSjXZ+o\pF@/D7!3^4:7 H\>m@"хٱHmI~Wu T^ѥnNrSQEdJil?~j^[ Q\r|rHWAÖH/(oSstp S1{K8PB-4ڤTLA5O"^}6:G!=+:7_Rz.oڇqdCۡ*,sDWH>z˒6!i^1:+̀$~%1R,Hh>6ԤWs \E?;ݓ6bJY:!Uߥ)#qZ*NL%lF2'vIsR,ɨ;I5gdr*t#`\VJWWenp wx9yHag+N+L?+ DzreE8}cIBFl:qznQK<>#B$.Kר)Y H'yeД Q*i+mr )*P|e+x@3\pgЍhg̱ܹfi3g#Gi9r_eQbJHC9ZhӐ& x{ QѼ/#O\ԗw7Yu?m4Wy^@ )MĞK?]hÃ$BhBB5ԇ\"Z:KewUmvBL4*ay4+LU ,$>̇Np<&!5eeC:]̴!')i~K|QȭX_hGd><a#R뤁hojQ61 jѧ"ǁytR};O! ڂTY{lIDyK.Q,禓nj Y1Xdgܠf bhqI16whrGsb`FT?=2ȭX)U p;K2䧊\\q&˕ؿϪsY͚8zTC)g&(Ƌ/m+zg=%p]v )vm^ I2ED׫kef*d1gdo1:g\Ufd f2R %GI'"R]T~4kّ7"~y]>岌gdyy ñ6_vw"uyj|huOǧ13>% kĔli5@5Ak U)xxZ$|Ȼ4+`oMĄ6>ddD ۀq8ES=Ύ}6ܹZͳ6&csG2~CX2WIAb?Mf3r^ϱtBV#0@ovlTi}Gϡko*nN N3/s[@ QX[fI E ̩_1i X#F^Hkn{j3?XF%$UzR [26QF:ֳ20J zQcd}5St:sS Ą/cj(<ƅ)3F ^J. s%{3V ™WK9f튋W@ QsH6JSF߱"änP^1uԜ)xY+pY C , Rq|k9HQ LtZTcg%MȜgt*۠,8Fdskc5-K7Lt"f2R ;~'3eeȬH`YDIE-txg~ٱ1+FY%_ErDENasH]GM|,ֆ`{"=\gG|rBr,TT bߚD>*6b%8`xzfR2,˺'#AyMkoMd16֪"Ђۻ,~8Hʟ) U!9\H?i84 dX ~΅ V8uJ@Ob8 w&KKcVd750,,Isr&UHZ%ͪz$t_!6RlZ4#cUݔY.ye;-"/CSr%= b~7&b'_&x;*}y*9@|mEۍňLQΰ֗.mΗ{8hmZtZPXƓ;樟N} ~^ӆ{rb"k,w 4?t?U2!r >;YUU?+=moĚcaZ:\!]j^zGu@+.֨9BZt5 N\iSFXt6}P/5Աr:dۊ>¶fw4 Tt6>hк˜2F_𖼨H6b_H jبHǾ[ȥV}qܮQw4l7Ts!ȐOQ yUǶԺ"upEZpCzAVe4-dxj$Z]L[=NXBϻ_GF+3" S߲U"4tr3߫`bl\ug? `d5X{i8r[47wފSY1%SXOr ,:pHzfn#"!TN3٥qGEw 8RT=펼:$9|>$Ւ nyi"k2Y{ۋ㰢Ll}jVecKK3*\2rLr-^> endobj 23 0 obj << /Ascent 625 /CapHeight 557 /Descent -150 /FontName /FUWCEM+NimbusMonL-Regu-Extend_850 /ItalicAngle -0 /StemV 41 /XHeight 0 /FontBBox [-12 -237 650 811] /Flags 4 /CharSet (/exclam/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/M/N/P/Q/R/S/T/U/V/X/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/x/y/braceleft/bar/braceright/asciitilde/quotedblleft/quotedblright) /FontFile 24 0 R >> endobj 94 0 obj [510 0 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 0 510 510 0 510 510 510 510 510 510 510 0 510 0 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 0 510 510 510 510 510 510 0 510 510 510 510 510 510 510 510 0 510 510 510 510 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 510 510 ] endobj 18 0 obj << /Length1 1647 /Length2 12045 /Length3 532 /Length 12918 /Filter /FlateDecode >> stream xveTݲ&N ݽ-{pwww'Xp$=:3g5kzT=U6'%U3{  #3/@dkbo`#Ǡpv1|`bN@c  4MJ@ICGGL&D>t&y)91iôX+\<)ooDE= ,<V.qyX}7a&bZ efdff||37T]>Z?7M]>{|Tߗ"-ۛXgeL@:6GTֆ26i\:ux)C{0ևcC՛ FKN_ ɠ9L36'A+ L'M[AŽiZCvZF]{ё? r)ܠ?G8 Wzb5W,fp#`O/}j?.3܁zZ'+SIG>;=ngJ[ÝFݮinqǷbz]*܌ג 1 NN1]aV݋vLfSAuR'ݱASm:0:usUZל^0'\DϮqpbw&-L%h^@[UH4`kv2drK0 tEGHcLo-Z ac$G4 )"Eeeo4H9s4B˗Wt}~;굕d c饚n! J.k37].̘Ljh(-JM 8*!a[cWV$HQQ,-L,}TWLZ>J(q[mn!$d '+\:$$W5C5Q rn7 /Ij#YҽsFE TVtS/æch HpkUfnn5x1ꦄʿȄnQ9Kh2F2kn.֞Ӝye,iFf:j%:'By 1/(&&@]uҠ߽mHmZtm9QCfǚ}Mּton^mF' HZd'Y#+^ oNSLn jx JLrF|n;Ǚyu/O`s,*?A+EXrAΜ4>AOt* wBN[P$Jj[й[V \$|Ʊ#`DcPQ,6 6tBbPs嚹Z~o@֝LjI'b32|OCqN밈׋f_J ,,r;2.rAxjZbB5{U&6w=z/kD֥Ej]ՕdGИBf@Y$Uӫ:}æATQ<ʵ,``Qإ E1@=F)B0Q}o~wNw{Ąa)"lXX9VОtoMsoAͫ@ҺL. rM%LMžN?Sk##Yg["MVob,v v}PQ)(MAKdMy7??]c%UUF`,=%-:.o"5'egq_0Za).DdkĨ8!t^!ˆ~yf{v\S\0Ҧ1 ʶ? Œ/:1a9Sk=qjxMſN3(OF,K5Dm1.طh7bwe8IL 2y' KqC!@Zs`95 KL_/HIK] }m&V-*1`?z[-w69zǴebEVUƚ͘aҰ\ ve9<OQPN) 9''"5!ӑ$68j䁕絝.- b_0iDkKԅ{拏xbcZ sO8Py}kA"5 ЧfC)cNadI'_ߟ(!$wεkM?jf`jtSI}ٸ`MyO4LܜMc;5E8Ml8⢔hTV%W=5HnN2!kx)|/8ZԈ/aZ9T>*w,DC:gv_yUk ـ*cwS4}pJbbr8ת颧 ~kpi~Y77;!c۔W!*]kdA;ic.{A%Y rn,.V`;IX$B8hlO^) F92—3t S.4M:wۻ4ذ;$ThhRܕ0dݨ@.B 췌 uKAZo<`)xW˔;*53g[p(]`*R+MU`k%c򵿺r:Y3m"vhhT)ӯϒX͵:Ə5Z rfhdžޡ`{VvԵ `<bB`!j۳{B`—HAQ:`SSvEjG}ZT|B IsvX /w:LAEk?p9tﲳ)~1PB!&CՆBԎaC2?nHS\[T[Ws)n)C;ֲ<}{C4TzU>hODdX˵8.(l1ff/2om^)O5uD=_2O ۜb[#IR@#i d-!ق&G !_c*2_Kijdw cChkPYV=yc h%v !к8Lhzm%jO}0l8y 2fe݃rjٟC):ؠh`-W:./=> Խ؍{΅ha,Kv<P~=FQnЙYVm~Ǚ'zyZufԯt54A,iy UJ j3m._xAH4zZW,_T F8ZRog$~z{~2^٪Ʋ#P,zQ*hHO3* .ixw*տxrkV+%rq}؋b6BBbaὊ"p~8|KN`x7 yt[w=~Zn5뎡HU# 2lghvabMSRʏLv4_ 5{!~>z{rǸa~6ݫ E">lV}{14*c uʷ~VO+o$W!FD8Ȉ:ytց'џUZ% {P?@@&vHG6}8딄>ȗsvv#Ӣ@H@-A$P$}kS :f6#ҹq ꙉp{X8iwV"n%Tyə_#5_djyL~dG8ʡB~p c[>:4Z?'#m)Z\;C[mїާ Y *EJ]I2s? mO|޻T1ֲ( ӠT]/N!ͧ( '4~ו7:64pgg{t 4D&DKݿ پdOʱ >+d|k3b#17w_H `j+t}9jD'(yYΆ}~tUe Uy [hf\uN@XLS!4)0(h 爛17[:~/= ͅM>I)J4oSVR 3nUJu(UxsdzBSk5. o V r %C:EZOg6t6'˸bg ?B)k\dƪ2`LbB&ГI[{pS٫JY {ȓ@O*Q闙;.> sc869e1m6Bxizbʈ3~y`(JKcṡ>:bFW\ڼ̃Yo^|26.7( rӏ1o9\Ls@ YNû5% c&^_a~Us?ƫZP^#'UYڟ?UncL-eծL|}sfGlL}gJJYM>5W쮪 A<}Ka1V'α~8Q9Py(_j@N-L-] )?FwxjP6B'62%PUnn٩=L|/qߊRpU>bKt U3 ɓ*̃p_W5;Rl0J칯 jkqމ\R Gnɫqk[2g( 6Urp GIŽ[ZU $ J7Ϗ7U3= /Z5~W؄dh4cӀ͎>/f~/?!Qkr/I7~9} g_onNyLC9}/e}RfkVK<^k 3O@qYcTjOSe>#g示kaQ<퐤#/̔N]WEҋqU& J_`x''J wv[o O1לTm!o܃|˘ds%=m>PRꥠqֻ `!,M{}e%Lm-Uʣ9"TwVoR<]ϭF;:_y$n[H5y.#ٹ;E bޕ8*Yُ^h.bd(]T%PxaFa$bv)Ҷ$HiuߘJ4ЃD,/zf"_ɯ]ŶY,X ЧyHIf3<.\[)(׃b,o]Dwdae.C,#(tT0dށ{OBP0-OA6?DcY"4U=tqW؀~jn9`RŜ;jjAƅo=G㹞>&AUE #w3UYS<2Fp{v 0K/`>5P g+%~yEHnTs*mTh!kILKm6O=*5˅t?A!~M=xw2W+| 37Y S"[EtUuTF%m!xrѸk*(L4oݹZ~]fv-pmKfm I$W!=cjpQAERm:{s*SXf5h4fmZB/L評\%jnفdYD#'\x!q*$@o Dcw{vY|-L Zs /`RO4s=РaC;kkƕA` =k8B1"$ZV9Zoskm_˦6kRJ^%\ŵ[`gp$O:jt_$^rH2+Qp0|I"4BK&pe$0iiA-}q*o0(*ط2Sv; z%}*с*gZMJE׿#1=/ I@=JzRrUISh 52)gJ"i(u|Љ5dllZ#cg7LJsv|ܜQH :%į,T/L}d w>z뼅m1H' ixY)]0Rao'+DHr'w$)X %T\5zr9H;֫u_n,.ս4O WxjS/o,Ԛ( 2,E,sP<8VBfJhi@B_Xhq!U<9@' }ik/KMCa4Q1?;)Y} ܬD޺9 ,;\xRL LYo]^Q^/R) fC}{;VGAf[3V"Y\bȇ}ԩٰncg]\r^^"A|t Pӝ!9IT9ie>e,je7tmPXcKkU>t4Ř?wAau b:jz$4c̞@T k ]$Iy];`#U𽒫\4ZkM(HK'\{Cl)ZhRמNjcjuU#%o;T W^`F_K,HVpeU|Khq~[Fȳ; Θ,YZ6WٜkXo`Zַl` AͷsOCߣխ%-;/,E}LvȔ'~D xT$NȐh1؁rF;>r]_ 3̨ҡl}u㧵QTn#7{Wwhw X_+Mop^uIg\z+V#Ym7y|-7$R$*j8#N;>fI%^"ZXMI7v}ފ\brLxm ;{rt1CiBDp/a'䊢oˑq e2ȃZ-)"~ d-C|AV[03>3GݎGb@N-( ӑ(E++lYןM/ldmA5' 4BK0jd%mT^V Da 17Yp&Mb 4V b_c{}BJ^sb[o08OS7O䛦d2Ke`S-+HٰH-㨆iO2&};UȈsj| \J q&w.5`<(z&4p 4[fYdߚؗα6"B+FKr B"0t;+۰(F1p˓36m@כ==\&*0łbMcQD077j5_B,)_̙mC'Yjm߫—J}&r\[S*cPԕ+)\@%n'OhNli)L:3t9y;;Am,]w`7 -ûH,"?{1orX%T{pʧg5c3ZJ(ÈTuY]+%~.bRܜOD2߁OmEndi ;'ի| M㾜f$ (dN$$mEeި"&!p3vTtiۡjWf! |LF: u8g3 /~5̲HZn۠mmp!=ܽ$G-I`J(hVz e~.Dפf>OKb}}Fr5T{~[r@ 8(m71EICv6l||XE,IˌfCM :|OkO E&T l3y=y5_[(aX"T 79 MSńnW\ ӽKR;Yĺ PdHpX(6PԊ 56p@_H sd[ /hCq/="杼FɶW*, ޙiA;Q eE> J{2c`o$Лsjpslrb#9 8lzZPì;tzh8Ŋ~Se m`ϗAtM2+)&'8yLY CJ޲elXA~e pkW0EꘄqV <%^S2piEF؊qe4bdoߺՕo-l?-˔jqn!cK8QXiotEm $.QEŔPa(^38&JK֫klG.{_|^ iX„'L37qUYlb6Jg :QXAM%d>P ;F;3Q^{t]!&'hbokd?K endstream endobj 19 0 obj << /Type /Font /Subtype /Type1 /Encoding 92 0 R /FirstChar 2 /LastChar 121 /Widths 95 0 R /BaseFont /MHLCIR+NimbusRomNo9L-ReguItal /FontDescriptor 17 0 R >> endobj 17 0 obj << /Ascent 668 /CapHeight 668 /Descent -193 /FontName /MHLCIR+NimbusRomNo9L-ReguItal /ItalicAngle -15.5 /StemV 78 /XHeight 441 /FontBBox [-169 -270 1010 924] /Flags 4 /CharSet (/fi/fl/parenleft/parenright/comma/hyphen/period/colon/A/D/L/M/N/O/P/S/U/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y) /FontFile 18 0 R >> endobj 95 0 obj [500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 333 0 0 250 333 250 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 611 0 0 722 0 0 0 0 0 0 0 556 833 667 722 611 0 0 500 0 722 0 0 0 0 0 0 0 0 0 0 0 500 500 444 500 444 278 500 500 278 0 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 ] endobj 15 0 obj << /Length1 750 /Length2 576 /Length3 532 /Length 1110 /Filter /FlateDecode >> stream xSU uLOJu+53Rp 44P03RUu.JM,sI,IR04Tp,MW04U002225RUp/,L(Qp)2WpM-LNSM,HZRQZZTeh\ǥrg^Z9D8&UZT tБ @'T*qJB7ܭ4'/1d<80s3s**s JKR|SRЕB盚Y.Y옗khg`l ,vˬHM ,IPHK)N楠;|`;FxjC,WRY`P "P*ʬP6300*B+2׼̼t#S3ĢJ.` L 2RR+R+./jQMBZ~(ZI? % q.L89WTY*Z 644S077EQ\ZTWN+2AZuZ~uKmm+\_XŪڗ7D쨛Rl:/P1dɫϾ(l=Uhd_OܗEkv-X1tލ`i_y. 1dz:un~Q?3/S}] $e~s]F1ʻ/Q?m򻳷|<ċݺ/q'}I+6EgxT.GgtvՏGU|~]Rޅ_k9:{pG d}dN<6-uBoH=cMvHzqaRK~,K̞}˛myo~v _s>.#ҭߦ{/əkܗ\m|rXϾadj|ǝR/,2p0, HIM,*M,+r endstream endobj 16 0 obj << /Type /Font /Subtype /Type1 /Encoding 96 0 R /FirstChar 15 /LastChar 15 /Widths 97 0 R /BaseFont /AYVRLI+CMSY10 /FontDescriptor 14 0 R >> endobj 14 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /AYVRLI+CMSY10 /ItalicAngle -14.035 /StemV 85 /XHeight 431 /FontBBox [-29 -960 1116 775] /Flags 4 /CharSet (/bullet) /FontFile 15 0 R >> endobj 97 0 obj [500 ] endobj 96 0 obj << /Type /Encoding /Differences [ 0 /.notdef 15/bullet 16/.notdef] >> endobj 8 0 obj << /Length1 1626 /Length2 16841 /Length3 532 /Length 17765 /Filter /FlateDecode >> stream xڬcx%%FŶm۪8dǶmIŶmfŶu=~c?^c9\ko2"E:!c_q[':&zFnBys_Ύʶ\trcs¿v622P`L( 0"df&d!#sw075s"TS֠/?!o !/.+[;k_D @hbn QPԔ W# YʚlT&V>Ӛ#_,!GBCBG;4-wBsGBSC3p%41r6_9 hh`nDy::So?-Ƒ O_BcsG;+C91%t:[g:'ֽm8;9La4r[]1%db\?;C;1AoIB;DoEyo}Ohqg++yC 7#chC!%qZ[%glm'dw$B6eagQ `hddFhbhw^muH çjfndilvl_EAK]TNJ+P8?Z5_`m=9 XX޽%_g9C's7B}326*N67q9;8_oF0k˶Fjܗ>G{1(zRWy?I;8hJ5<ew&? ;XH\H|Rc;Pj O(Fznpirbx\#sp* ey{+Of|J@Um8\=Cglec^/yhE%o=2yptΝx֦TAAĞ*|iBuK@aHB%G5N.Er ՗nk/F(\Dl*Tׁ'f5+#DJZhwgى֣~S*Cjr^㙻ɩUs̽p1Af2߬FB[\8HCS8zF57쥪™aI&"/|JoܟY'֚mĺ.F:{If'z_Mg 9T"P$s$V ܋oUc 6qZ+?t+2c:nr3hryWѱ מ#3<:n=^;F(@*n :.>1jVkpT&8T棍LҽBt^3ӟxSFCJ)lt+D..B>Tl8!Ǫ)3Ҹb1s}w^ j>ʨdJtWh -L##W VѤ^ P)$r2 Mc ߻/K");~ujӪem(u++B~qFPP ?xO2?F)j@.+oQ] >I8_ hWSڍ>5iu\g V7w(kYˣ=Ye HaP] ;y7WVRjgpԓ; ǘئ{Gމ5 w`Jsڻg+$̞eO Zu6[Zs`>y<,V#%ù"T.9\+|tzL" Ҡ2Q wv }j)$F5\LduM/UQ.[T O}(PW,1 hfս@"7+zV:#w*1^,ֱb(Ui@zzHV[ `hkxjww2b3/׸rX%pYn@CPu\ޡ=5p լnAi˹%̤t ϚWY1J QAPmĠ>&ɹzi\cP C3*RHg0Yݸ/#.9TEyÆ;#?nߘoeZ WޗZ͜%lƫFQYaB::[h;b+%*~\M 0sP7eONdiu5K)g0DD^Xb7,-cavTK-|yJ܈"B]%13j(S8OE|0cܚ)9=҆ \┈~#ZoNTN٪B?F\@6~ye:QG9lVV֒v;q V Hў;_iLu;㫍QGT Q :Cc' S&ޤ Ir:#k_}ĦK ;0'Fl٦UyMdXkfu=n7vi2flCEPGz-8X O q#/k] 7ʊ`4a:xA ?my~#GbO>|WRoɢ3.'Y^7M.y|=۹޵;qR:0cGSFFh΂,P={]t;&?m~K2G@2L2Ŝ{fЛv)7J׭aK,"؏碌o;bv Qe 8)x\V cS+IAG1[fӬ5Ƀ jv ?N8b mt6ʰ'K1  P~\qkJgCJv;w᠅%SŬ&tf5P[4J}A`:ìV!ylG~N4;|V_h1 ɳZ2V,6Üh\#[Ӳ[yj[7r FQ5*;x5Hx::/{/~>'_YD.폠>}=X1G|kyH%%$&#- l8ˣf琄}='vQ͐z]ΜƋ̓^s ɾ/:A(<䳌6Ĵ7^8G02F'ZeVjJ"vj|-$VP/MX(X&XO %S'8q4v'u2_ѵdF7'!aD)N_?eC:a(8]m Pߑ2\lW=Տy褰Z\F S ˕@}XQMT8.z~h äLB-.H/;)7R@`22u'_"-%ocIH/n:=&;;+99*3 ںPxDRj1X/9RzR*0*c Lf+h@D~A.:Ԛ^Lg:ja`HԨݘB vy&ZN.\۟np5:ϻfަ(bge%v& hUNXbRwOjijvhT;``$u7 r\{qq+jz<z~t[.7ҏ4UDtz,M;_&A)H ̝FPɻ v_dMwy{jF(S>bVhg \QԸ"8BӚ[ǭJAH^'IFLDPs.vB zPNs/E\ٹ)!O7sWAOl[_1-78OO:Bv"x;AL)4Vd4n MX慯t%$5" .,i=݃.y=3 ݺLqܖ_Χ: 'ÏK7CIܸO <9n}L'΍Zk 0_C10s/VTg4\M!fuSU/Œc'~4E{WgoTĘwp,v ?[_c?M^Ah`{F^\n"o1Ɏ/yl$U*|=# |Wqݽ?TF(sݑO^`'3t7K<фo'a2팒û{j8P'4]ew c#Sbg}}  (ebCmmA4¦=dp{:y@'r|@ˑg&{/v>t2S(8*.ދ>f Op0 0fȵ䗋ZhZFy<e6w-2S}K.> L8CCZP?h#.`%CRIzD*WZ+j2E4 =|ul*E QoȷtAeO}=Y' R><=TaZKQ2Zpdj 9+ƗLrSFB*kP0F[񕒟;C!4]?V?* k'PX좠MƭHg{C k/DI/8C1.lXLd@/{ΆC\M>ۓP#-&€PZ^m,3@{*o!) ܺuK t5&L ܓCߠ7I(`+)A%gqd@ ؄6<.[UZm!} }wP+ITYoKѧSqw}/93/lږRD,v|pSD`tFȏ*<QEJG]W3p=6V KЋ+)%4_cnU'Vw+H.d)F1fߠjgϿTyƄdDmOBD^FSJ n ;uEАdpB<~ 0_LIPM' 6Թ 1h<5o 59v:]]#.Ui+,x %]?䔳WT`֪_+b/Hڈ>ՈO>k+>pIfSC6q:$z5FgfԿ x>fȁ"L/@o띎H5x饆Z{;OѠ|p[ZOٗ$rZrS5C (ĉA\k_5:V!KFuQUu5;),[V>\-\OMԑQ#0 ՞:hbD@`L] :gTdet7HÁ9zwį!%úް}pZfbDqxpds R`d)S_e1fV> W04F؀!MH1`GK!|GVt MR)A;v1P]aJLK`ae^0. l,3]f|IW)x)yCs2a,4vZ2 >;HsꮾX;pc닊 x9^PF W?yR_`B^dtX*,|)cFq?,)F7X̏DDC^K3AߑcVjNq*XQ@,gn"diul<0\ o.,! 8=c(5t ea_ru34+z*A83XCɼ!nn9_T~ˊOǐsĭVHw, @w~ŁߔtxGO)hZX7z9 1{XM̍͸tP_l"F(A`|>!C28'XNZ(Y!:KgaIK('zr/?;\U0 7ςhXoFto/ ߁G&ϬoqE |kKfm'z`B 2&HQxΪع (/r1􀴫 y.Bp v+3o  }TT4)1 "$գi y*tǜWz*6RtU*hm ]! +>N%0]5%:j.'MSyQ`M"K,+lT+|!¾L`Cx4J{z/ln"QoVPtIK1z|U4jW`u ;G=8^1bdyCGb1cJmNxy3G_TDYǯ,y^Wĕ}|h*l/J4o,7#@h Cq<(]=F0?he-iSsM幨2{IcPy4v /vv7qHP7Kf/}E]F3`]4>R)ڲ?~=Z(I5z&tY%-VC)Ur&V6''۔?vހy7 @ŀҽr2y;N鮗[ޙD`]c=' ~Aʂ-JB5K"ޔdMm1<wuZI5\1dWD2k F0]mi:PTQXYEb*y-q!pBUAoIts]Tlxߌ}|l('0[W ߞG݋نz}/Zwq\w+0RVթ@pi&/ ){=!~ *Mv)D6{|lmAUUL폟ɧg*"BB2ܕ9%ꋬn[?]}pdʮ6T@g$]tƤ(=vdAʜlY|~7$J6u'k dW&4M;e"RSĺ4I dCb͖WDbT"ql%oKG(%\ hltBhⓩv?P$ hX5av5#=xm!BLoR{>9Pc:´nX #WRFܷiy/3 {k;18 n<]הxzlirԑ5z4D\h$NТ?Rӳju7Pn^p_ +|Uw^F;Ӊm:O=Q6ӵ X=u? Z4β]2$22-s᷄s"-~vIm\Ur{=h68Jݐ'2Lu4z $Gcb(Ϯd2y5nudv JPv8ύ7S#.Tl/S7P 4ͮIv _Ko~p䚖FGVЛƄkou t8 sS:CrW_޲]Ft%% 2/3T%Lmч۫ơ]AxP6:&睗>fOu&o&j* [sgTl%w^k;!ڪ!87ymSpJbA9;<<0GWޖG}`,DjM]3OϞv,{ʹ%kb={c_K5 u> $jÁD~@WY:c<*%Lm^.ΐVZuwؼ|QGW7;TJLP}L {]|?)@DJN@xs*,J[zPG/?` oo+-3?#t,9PMR:`# HSܖR0İ4 .LYO<>bC%'I~ldhpi駔&߽LN@8 zҿ: 4q=|6Nc,퟾6ƾ";sqW [(|V qS@(F=j8%Q/h%O9GshJ 錿b)Hc7ɨgxfD3[x M@'64,X<^Q.X;} 驗EfJ[OD%G(4Zy Ek+)싵FUݕ4Ɋs[\V)s路\{I6,%5u[!!2D*%`'\2BV!i ӷg JB>|fs{\UbL܎z]Q'`Ts4ixᔍ 5F ^HK7`p0oR{+R$ET {uQeH}- x@֋m6\p ϊ$;AsރI¼!a֑NJLbC 2P2LAy+%`SU`P BA\;?''usRv @@X| g6 _U{U"k~w9F Szݱ#I?B!dʟ֔(:I !]7N[/^=,&ō'd6ﺞeՈ9XNh)myь`Ä^R6SwR:`_Aˤ>kYY5k0_s?3n&2OAQ |"UQjBUXBpx9wN<]bߐzm )W!לWtT5Q'-G!PpΨMu-Crξ ]D݁S&+B@Cܰc0o`HN3RS_&2r;gPfJaZq_dڋT;=WIX4UJtj],.3Tz# E f&i*gtW1>A$70^~i01nb1Kg*388,ImX}m뷋FiC*kݖ`{C`Q|KBUAlh71%tR&+4;1D?E,RhLW{AqM^NbAz)rsۺK0V!fZ:=Y\wkU;e,LRM|j@y sBaGYK71TQș0`C`>qK_ĞnUH9e"G,Evosػo9YMN ,&G2&&_AHE|+cka[XAiQAf!m9Of~M"Hۋ%!'wP^AM6!QUF9BU=P[0uI 簷AO8L|szήVm{ bBa=²#La|Y1`6c?J9Y4G2qݙl[\"R\hdNSnfj ~B pMF7ӝ88f;]ѷ|a# {ISFi="f5MNXG.D0[{ QIqVPLƮ%ub9zl箺{$gC܀oeم|MORN"p-<:$:G  (ݒMx^35ZD;ڡd%S, CPݐP]KO زy'frl}ؕ oE3moPs5"N>pU5[sl\cW"4҄oW,jZoUʙͫ8pL__WB-a˷'mf+Olut"=%֎o?>oe_}ܙ{ nmQ'=?W +01UO='^|_>貧2i\&~yYM 5b75S{y'嚂=E_Vgemo]jOaޔm~R9SN@ճ>0~_?<)9cJܞ_J~TJwvU&a.mQP|z蘇cKM α2{2uK0moz&W10;7yOYu#&sʅ N/\oUn;ɝ9{RbɳǷr/wbQ缍K:cQjfa _լ*|{+Y9yD(j+uLU5/=eǩnY쎞eeɫ=)o(cX.q_?#eaq~¹yN|BgY}_JO=\Yht>=3]:cr 3C7 mx35El\B/l-X>f[m9;8ƒvzD9LZ9:o[}|< L_ڻ(v0@Ňh;Q;/T2}Qٷfnoܐ.wo}'N3~עy~#Kξ>'XXYYݪZw}Y|9o^_ig>>XUzzޢuJzRo3pf[;@O tolTWxxN4E?հ YAP裋)ݗeN\*XwnG%.k!O7O;,Y ר€ĢĢl.r endstream endobj 9 0 obj << /Type /Font /Subtype /Type1 /Encoding 92 0 R /FirstChar 2 /LastChar 125 /Widths 98 0 R /BaseFont /ZVDMIH+NimbusRomNo9L-Medi /FontDescriptor 7 0 R >> endobj 7 0 obj << /Ascent 690 /CapHeight 690 /Descent -209 /FontName /ZVDMIH+NimbusRomNo9L-Medi /ItalicAngle 0 /StemV 140 /XHeight 461 /FontBBox [-168 -341 1000 960] /Flags 4 /CharSet (/fi/fl/numbersign/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/equal/at/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/braceright) /FontFile 8 0 R >> endobj 98 0 obj [556 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 333 333 0 0 250 333 250 278 500 500 500 500 500 500 500 500 500 500 0 0 0 570 0 0 930 722 667 722 722 667 611 778 778 389 0 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 0 0 0 0 0 0 0 500 556 444 556 444 333 500 556 278 0 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 0 394 ] endobj 5 0 obj << /Length1 1630 /Length2 18752 /Length3 532 /Length 19670 /Filter /FlateDecode >> stream xڬctf]&vضm;wl۶bۮ۶*y>}zOk⚸coo*tB&vFvtLy, ௜ Lhg+jl 05L\\\pd;{G3RMY?%PƋ3/ 7lq0$K c)]O9$Z'A ,Սl 9mA9hpc쉸c8!7MEkbNEc@;}ςZgZ9'kБl]S*ND%`1}GdV`SP(#z[%`ROF{:oB$ JUg/8{Û/K8=@LxgCeTcp=$8\ט@:l7K:kv?(['rcDZ|@Ce\-F^ws 2UN3j$vq_9U"\Y ,|-uL:jŌ D'4N}($ į}DZem;-y%K+q9*\٪zȅ;Gd0<$6DLL;sVwoZBګi5A("fr'\bA".\O܂FK^9=Ț"Hh:;hjHA5JN;`8FTHC"Puƣ+yZ^/YXgʧeGVABT"NضkvCl}k9S\3TFFejc XqAyb`cy-V:e=&dZ19'Rd:Z$>*BΪLi3 4L[?5^ӽ uvs'B~21KX ֽ5@,eCa!8+z'5oHfto>Z`i^>Bm&Щ\-T9YyK.ӉgkX֕6+L-ImUv@7H!0AA{%ܣ i+(, *sH^ym){~*Ĕ#?i8}v>nw6K_+`R' rR-!lB.ݍOIןUSg}MdrV6^t2ST?lXdX5?Pt# "Gx?%if O8צ꒲FLoPx^`] ׬i+O2@yLFAI0/fVn#;U'I@%$wqSr/=˓P90(L4\]j=) h.̙6(,eٲO$VtHAHpTp35o~ 7 4]s}gDI+[Y2QU T{Vt#tm{sl5R:ĐU(dALu$ml Ac=^aBsq9}͆RgVK`/lćM14#oxZnu.pM)μX{NF}⇷{Ot?b`Q6PcXIۢNΜ6睤%DcI ҟ0BfJdZgGosM60*ɣRRE i},w㔽j_51(8}?8ո!~v t% `G^JCfi_qTgE3FPG`K!d9)A"1 ͻkz_J槦5~=ĻLЏȅ+.6`{TW s Et"'VCSBQ*F8qѠ(AAJi >MSo,n,'cm=]s)^6`&+%v~媡ɔ;)38/QWV;5QG|h^XȖq(cxKNd#8\@}\Vw(*"v,7K-3r@5<w/PkX4^|"*yR*Aফթ?v=>b3&kz+ `qfŭ ,5GüƂiMG`>dG6I[R>GvU0A–Q;Ǔ^݆Z%BV"w!,Vd#?-_b &? RqGwi)H#l: q"I#\nn >%Kw#eR)ٔLBm`TqX볙}ac_Nk>*l2`tu&3P~V7A8?8;]+upOb"'#6?j߂oZXt!7$(UTb2qx3_AkF{fq^WeLE7ggwiiGY) I fHBZc'uB =` vRPڨi#PvA>vg%%l,"pyY묎^1eH`eP?C$AC- &^ T١=NZ&[]2z(~4jtn!O>'٨uEtQ=bhڷNR HK}l3nu~2JEM.[B៽NׅHO;Vt;!;yi,9#ݠ{rI* K9 '9LO U7SX[8t@j&ǿ ܛ7p'Xj7:os쐗X?0`##4nN&8/Vts n&MQ^@ e6qFmA`;3)1ySf*YtM)YY2cp}~zTUxno!y>oIaf&y(n@$e \LSVT!,މh^ IAM++,)fVd`!"z!e™ZeLr'Řg,4.y'pW o :c@ۼhRvYϱt賰)%`'O}ǥS䎉\\wp2e8 )ȥƀvm{s9#n:Ic_stjcRr7 3[fyXePI*t ¾:S{zZ8GC{ʣ,3C+8}Ё͙E\/3SrD=m7Q_soxU#7bYz\8"~F3Z?-qaF˜'bNs̆zXTC|`+KQean/qIѱZ Mm=+wܮAG9nPnD*);T';FDj<0Zhsq!M^J!^*?iB2K%j$/UaLf U _RdTD%·kƮKNWBZ\V^53_Ǹxd5pyw<3W-cvL1n3\4Y[yh1!XWW2:4> h7%1'/{l boUN_q@!Aà˙P[YذeriR 껿,o~3.՞q=4<+'>Ij2YU'XWfe<-|`J&bկ֡0i'EkjTJT}KD ]tKg/; e'y Q; ()|.Q;lLbnNu$x<$Ch7X~F%4>=[f-543.sn@h<_ٴwiQ1l4ʗko؋Oe2W 6`D.&f@IPԻ1O|:<~?(g}W$Eܟ)yx.eAD^AaŃwXY  c>i]ObLq tTݔftK7! 8 tyM KE^pwĹW⼸0[u+.z)O1!`Cz:ObM}ꡬj%[_1FC7)aFĝ//V RMm5I7^1G{ieln$ nzJop}mB{)rfzuٶ!Et7[)D2sq$2Bv)($탨V/0$sȚH08OU+5k_K ,8Nhޑ'"%"aAkfq' iJ2,KtX dέzo|5ZzwŌ`ԝ-s@c/|F5Mi9m߳{&1^Y3P,a_/$ZG@(oTb*Oc+ yA-{'nX'1\pN0(boX^A_ 5= Gޅ.Ŭvaچ؄Y*kP`G!Vo>d B~&TQOGl'&f|c#gt1%勴HRc3<!-ҝ8Z|o=szhnb8ѪufX(~ko"{$ǴzJL(>M.R]:Ae}|"5[bҒ莍a`T ߼pF S1wEJP3_aC!0eanEۉ),kpXwF̠oseZ fO JGC r <'GZi;G@,*yQv7 )P{iV Ok!p)ZaghYu`D ;^$5SqO]haW۟_LtgsjǼS)tppܾ\6K,r)_\ie*3AbNK!:oZSYAw&k}EEfVyk%d]vj5jaA(̋q7@T&2SRlhugl 37 -HdZe}|y2wx"DdžT]4NXԁu.vYʛ7*".b$}+~dB7f~g3Ѱ&RbG NsOX{^(`5{%Vh}ڣ$Š,f> QuSN%Ig!ύqx^=+mN.=%kviP:a#2a.{hs c2[#4q@!9m;*VF8z ˉ)I>$} .B r/e?UFYfA]=݇BmoڏY~d_PT ɠ_tUc1>}R3@pUqo ?ٗ^hm+WR˒jRѕ8*ϙR#t5=FP*v&,V' u _%Ǖ&xF{J\-Űy*yIJR/|,E/]JM΁Ȩ[WvVֆ5,5('CJ0yJ^;&Z HB:D~pؑ,d,+hҝmlBw/bZq?+UDLbA#숗]/u0 <[M|Uu$nHH{l Px:RKNMDEqu䬚ǂ;jn} "ȷݭL_p,A0шlB2-<Җvm%4ְ6+B7(6Ei_ HGY",, ߖaHIm@_I,DqxAe¡zшNa3Y1^@%V|dbtj|¥Jd@+1 3dL_b;?#Za A&tHw(%%u"ͼ+td^}ORNWB2͸Eh[C+@ zbx' 0RMrfyՑ7'1UH=Q'0q'qnD M9at%SmuzJ΄G0miZ'7V"N_&eZt"4뭼uek-!_b2Bgk>񏒷 ]sTڨG(*%i80JҰ?%Ec2oƪK2(c8Dięf Pqg΋VN툫. uy"DÓ'SೣN;TI7LF O@e}5ř$g$>'_HQTSXypX^bh5ʃf.b}P0 Gj]|æ6t66D-q 6vҁc`,IvM/%~m{d5ėX~ )tCȤm%#M)Ҡqm,9pt/ Z7ah.&c@Uno/{e`+^d' gyVuڰI2_|cִ,۶`ά_"|B^dCshݰ&YiGu*=q̄SM"ps W*.h@),Xg2 `n!w Av-U V?]\fUT;ɍ#k3Um1`ncMI^e [o,Л8pVʪP]$3hDcॿPC-LSSW{ҿR_'PF7RUv}{-yJӣ_W+KPYor^Ϋ\l]ۅ;tƵg@[=E_:ٝ%N{/ad !}IAXd`=à*ݕ̶u-we%L\o+ JŌ|g졞QO."f$K)26&c6Tg;V}ldc ڲ71zΏ,N Շ8BRh/L(=.aAXR'LtѷT ˾byq:}t4XJ@;Tы2S VC/LqmO\`֘O*qNm%lwbK#ҝc?tXM>eft%X{Nx/mn]ƕ"#]i("=w (>.C? f0PgEa%-X PWY~w(9Cڽ=a]ʫ4=LdK{w̍TLOJ(zDMâcrS mt+U}SNxTh#*l]+ bI:1[LХ涵xE%wm5<o!X~ :sQ0 FbFI1 ǒN. J_|ٰ/x -41ԍ ̮w@ nf]?P]p-sř[ -'`tCMvu8=ێT'm‚kmR4w~B4{u^28-tQ70T/q4/Tw5XhW5xՔ6}7 8(qձ! k /6 91,\Y)G^&A+2]I&-x >Poh JaJZ0ߘyRo#.w׼|D}(ƩYp =p$5#zLVec?*q&Zy[D%vg"AY-8]c+M~Qim̻͂Pވ 9awD9 Q6?&dHi3/1*hG  `LmN w^Yo a9Dg.281j\rvW3mڠ_ Vt\z 'etZzE:\I/iΆtbdo%u/} [e}c)ZreG ѡ@+b5hf>:ŚH (>ą?Zxu^5!;Ŵd6,\4Sz>#"H#9"h{V 6liT~Lu+9 bCJMbJ%rrCB_a:*[`0wz?{O:K9 }j ɓ~C i_irÿH`ZFn>E*"hP7;慍7=GyC/J:TZ-kx=K ["ԶЏdRoT(EjkP9g?L !&骙jqb' )p3jM^.ۣuDGWϧB9X&`}oR)f)2Bd'w>-t8]:%\C0x7H-IY<`Yt]x`vp>zR/2tOiSi}VK{y q=ao|qYtSg%whc7`'m&ODL rڳ9⽋My@vACd_h{w൬Rv`4 Ņ?C-kF\" 98G5R YWK>SXv0h A;,RQ1,I}44Fj,G ږ򩞿7Al%cH%;2b6u=H2H? T ;<ͱ- $wTF c_b#MYnVVhgi[h\]ꘓf"7AQIy%,n}PMp,=A:lw<9Eg}`iGxKۏeh#N:uڀM>FiA}B}nw8\;T=%<( dۂ+Gb=e_ݘm%:̅a珦pԽ"g&e{K=tG ѬPuN4oXߴUݹL+u,@87b!cҁ ԁ2M*iLPc,/eT(2.Mჺ4K]$=,/OmO="x P Lwt=A@6L!::YLrmnpBtoA @xj~GXX$1V{T(99 dt,1+%Q9f}ٽH\̭Ѿ k`_=fU/p"cl |EAZId g4"B`=XVб`eMDUmS\2E3 gm[/[o7C]$XnP'գђ7'2>ƙv jσ35Lޘ䳅 y"Ȁ[=WBMxd F{1R_d-}0D3]: 7 nw o;zi.'Q ^bz\@@*7.to:W&) osߍ.tE_u&=zOo\ym_?<39(yaE]|1E_,)  $txNfocnr)q=#2eԟ0,+*lѣ#kZN#[ CcbO6hFu;T(aWk?׍wql(PK']Yo -=]_-&c1ϐ=8>)vс :`5i|AE,xzC/gEş+|2(mւA30j,wkqUzKW&jXԸNǾv]@T2gx=QWz=$ sSTpdioѺ3h1PFs#KU{E&?Cvv 0(#̌vN]rrE8&[̊STGWƙg+{x2C2E$hu']S3S8/ͺ')Z4͵{s,1[{X\ r.Hm(ھ+p%WBx3>M4yK~UU$l2p^!zQeϘvf2Gl!PƧM?MdL7a=goh7.PqU@/?=n Q 4'ˡw SPae*O)ow9p}h?Ec}=?4#|p?6Av)>gs0Xdey8p;}ԍ;XE&:#ؓ< [p;DzAW=)"g?U8Xp)>437zG8EHdt&Oy2uqbh㉸l^KZh6ʕ- U[aRm%@]çIVpj~Nn}m)S4MܝK܊\RJ/½-T .Nc'4h7dܕ]o~ %L}M[jUu-Q7b|GYj .yT%퐅MI\

. 16B$w\5sG`# Ӄpabh>eS& <}sG~?h27mX nOrB `Nc'|շ.oF~hVu톅*鞎&ȥUqIU :[PV"r>GDL~zGk,յ47{I#[J+d X!#[eMjyBb" AN"&ńL+ U(jpW+mIvx#c gz^Ai'#,VzBIfJd9uGϓүI{3Wp1Z>*Hj*)Z,G4`8y<5EDJD8KQ1~3MZȶk[>N_S|̘O9ق䬐Bև%!? 3CDu/2>^GbZ/7'l(Ry;s^3 tTkd7'ãH_UDMyJ =ﰳqdQd3KvXǛ\ mˀ.gHءA>re$ǔ>3U&gA=OEr.@u f>ı%qǴTwB HfEԜ}o 9]=r0 ~(I Ii+;*9:ɒ`*?x¡c! 6!*|a\+vFVYV:-L~%YO^-z?ewCf_FY1v\h6]^w"J)e6=3w|{_$"r|޻nNEy9Ɨ\PF)uR)qQq, hݦA84: m\~u zbJ]/x1SGHdsK4E 24N]{?x|FM/)d)bV;(gaPz2w]OHϴAyc.cI,^//Ģrsz"+a>Kkg;6)efc\eMD'L'KSfvWUE_LRE0rz-{wqn2@dlDiȍsup;+8Eǭ|H 5QX6r/Bx?m2dt>PֿtzZO\c0Mq{- =9o.=2s򁷊 jakuLf̽ٱ:}cj2CjE ).ߋ͌,\6zzw( }OZpP@ecGg,?? ߙ|OvҊke'> endobj 4 0 obj << /Ascent 678 /CapHeight 651 /Descent -216 /FontName /WDYSQA+NimbusRomNo9L-Regu /ItalicAngle 0 /StemV 85 /XHeight 450 /FontBBox [-168 -281 1000 924] /Flags 4 /CharSet (/fi/fl/exclam/numbersign/quoteright/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/quotedblleft/quotedblright/endash/emdash) /FontFile 5 0 R >> endobj 99 0 obj [556 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 500 0 0 0 333 333 333 0 0 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 0 564 0 0 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 0 333 0 0 0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 444 0 500 1000 ] endobj 10 0 obj << /Type /Pages /Count 6 /Parent 100 0 R /Kids [2 0 R 12 0 R 21 0 R 27 0 R 30 0 R 33 0 R] >> endobj 38 0 obj << /Type /Pages /Count 6 /Parent 100 0 R /Kids [36 0 R 40 0 R 43 0 R 46 0 R 49 0 R 52 0 R] >> endobj 57 0 obj << /Type /Pages /Count 6 /Parent 100 0 R /Kids [55 0 R 59 0 R 62 0 R 65 0 R 68 0 R 71 0 R] >> endobj 76 0 obj << /Type /Pages /Count 5 /Parent 100 0 R /Kids [74 0 R 78 0 R 81 0 R 84 0 R 90 0 R] >> endobj 100 0 obj << /Type /Pages /Count 23 /Kids [10 0 R 38 0 R 57 0 R 76 0 R] >> endobj 101 0 obj << /Type /Catalog /Pages 100 0 R >> endobj 102 0 obj << /Producer (pdfeTeX-1.30.4) /Creator (TeX) /CreationDate (D:20061120112721-05'00') /PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.30.4-2.2 (Web2C 7.5.5) kpathsea version 3.5.5) >> endobj xref 0 103 0000000000 65535 f 0000001461 00000 n 0000001356 00000 n 0000000015 00000 n 0000140538 00000 n 0000120580 00000 n 0000140371 00000 n 0000119720 00000 n 0000101667 00000 n 0000119553 00000 n 0000141556 00000 n 0000003443 00000 n 0000003335 00000 n 0000001540 00000 n 0000101351 00000 n 0000099965 00000 n 0000101194 00000 n 0000099290 00000 n 0000086077 00000 n 0000099117 00000 n 0000006630 00000 n 0000006522 00000 n 0000003547 00000 n 0000085005 00000 n 0000065065 00000 n 0000084827 00000 n 0000009597 00000 n 0000009489 00000 n 0000006746 00000 n 0000012494 00000 n 0000012386 00000 n 0000009713 00000 n 0000015855 00000 n 0000015747 00000 n 0000012599 00000 n 0000018707 00000 n 0000018599 00000 n 0000015959 00000 n 0000141665 00000 n 0000021462 00000 n 0000021354 00000 n 0000018811 00000 n 0000024932 00000 n 0000024824 00000 n 0000021566 00000 n 0000028158 00000 n 0000028050 00000 n 0000025025 00000 n 0000030963 00000 n 0000030855 00000 n 0000028262 00000 n 0000034078 00000 n 0000033970 00000 n 0000031056 00000 n 0000036896 00000 n 0000036788 00000 n 0000034170 00000 n 0000141775 00000 n 0000039705 00000 n 0000039597 00000 n 0000036988 00000 n 0000041380 00000 n 0000041272 00000 n 0000039809 00000 n 0000043229 00000 n 0000043121 00000 n 0000041484 00000 n 0000045836 00000 n 0000045728 00000 n 0000043321 00000 n 0000048340 00000 n 0000048232 00000 n 0000045928 00000 n 0000050213 00000 n 0000050105 00000 n 0000048456 00000 n 0000141885 00000 n 0000052636 00000 n 0000052528 00000 n 0000050317 00000 n 0000054871 00000 n 0000054763 00000 n 0000052752 00000 n 0000057390 00000 n 0000057282 00000 n 0000054975 00000 n 0000064767 00000 n 0000060595 00000 n 0000064600 00000 n 0000058615 00000 n 0000058507 00000 n 0000057506 00000 n 0000058708 00000 n 0000064976 00000 n 0000085650 00000 n 0000099624 00000 n 0000101581 00000 n 0000101558 00000 n 0000120168 00000 n 0000141070 00000 n 0000141988 00000 n 0000142070 00000 n 0000142123 00000 n trailer << /Size 103 /Root 101 0 R /Info 102 0 R /ID [<4C2BA89564B5FAEA71AD66B33E8218A0> <4C2BA89564B5FAEA71AD66B33E8218A0>] >> startxref 142329 %%EOF king-2.21.120420/king/doc/king-manual.pdf0000644000000000000000000074036211531212662016221 0ustar rootroot%PDF-1.4 % 3 0 obj << /Length 145 /Filter /FlateDecode >> stream xU B!W1KQ,hqT:Ayӥd#h: ;L<}^W~.}] WN:`վj彘Sy> endobj 1 0 obj << /Font << /F16 4 0 R /F17 5 0 R /F18 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 10 0 obj << /Length 127 /Filter /FlateDecode >> stream x-0 E|d8i``@ Kt9́ [Đ$#j}u>`/wgzOEV<:n{v9 Z;?W" endstream endobj 9 0 obj << /Type /Page /Contents 10 0 R /Resources 8 0 R /MediaBox [0 0 612 792] /Parent 7 0 R >> endobj 8 0 obj << /Font << /F15 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 14 0 obj << /Length 721 /Filter /FlateDecode >> stream x}TMo0 W(gib-Sn-B˰v#Mkl/O&ϻ_Ei[* h<*3Mw~߾'ȣD A?y2=ee'uu'(أݩI-k;SL; 9s-uro]URQn'y1$ snil?rZfkcVlaѮ1 |bq)zEͤ&[F"D{Fu @u٪knvr[`J.Z o)_vym]\V*kA]uZ32-˘/[1ZXKQVxaljj(a4FCDlش<ϷĨ4coN}рz6`NRjXTB[׈T"|4Jbkq e l8x~ ):`ޖdXzs1N_`ZbNkm@m@4Βeê!< ( > d>P8^;tN9w>7 @E]+D)_, u endstream endobj 13 0 obj << /Type /Page /Contents 14 0 R /Resources 12 0 R /MediaBox [0 0 612 792] /Parent 7 0 R >> endobj 12 0 obj << /Font << /F28 15 0 R /F29 16 0 R /F15 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 19 0 obj << /Length 1077 /Filter /FlateDecode >> stream xݘKo8:PKm#AEmڲ-$ZNRDvhJ6=߼F/ 0M(MDH"  #4M/번 -ɋ#,(9. b/bYxu^̢H.kmlŘr"CNAw (JcRs]ۣ [5,4ȋlgY—QL ( KY~)N=9)R}x [}~r6s 8bx ,[7þ׫b Bל N;/!zZfm[ta%X`iOSOJ/mNؙLO&X_gi|n3uҽʳ ]v ufmu{D 2ِbMJ7cHڔ&Z*oN&q5 d|;ɜNP"<*K U6.JڃJC.E}~Z@d.뼺ֹ(Q  dTwt٢>F0q;Q~~\r/r&xy3;Ah"˷qs}ݹyi_V NKPݶǿ槁Aw.nb ݆{_S?w۳ ~ /]w ҐWH7K<GD @ֳ7Gݲ>Eppa&<Vz 70ѫ~păX!B*޾;8H endstream endobj 18 0 obj << /Type /Page /Contents 19 0 R /Resources 17 0 R /MediaBox [0 0 612 792] /Parent 7 0 R >> endobj 17 0 obj << /Font << /F31 20 0 R /F28 15 0 R /F15 11 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 24 0 obj << /Length 1394 /Filter /FlateDecode >> stream xYvF+ u'>3$8Ԗ4`;T B6r[fBBpUatGxs"d(x4L 1adG '؛z2x7Ir'$ɦ~w'uA1Ea̚G b$Byyp( {۞grO1~p;ϻp1x# J_gy,;;f %\)X J^} (ucK,yL C?4ͯ,ːE2_4j"hLVh uh *׏BY/\[hײ(^IPHJ=t~M][l2KL `J/'cJ*t)&Z^=h()4;q_ aJGjHF'b85qlkTv jK]uH*˺j9{/+3h!A.?8MYܸ(cwQ$`Z(ө]ۣ$q *mӖ]sJRSUL(E)hǰ`-RQ>VJ95eP< ҖZ%J7KZWOE%#)1KFv1FF~=1SxD لlrM.JifG><)pZ4VnbOj$FD6eޅuRPɢj~#kIXoECdilGnbzǞ'uXeKA@{mkDSLLR,5mJ$]ͫŒVruM T4yLM.|9I2 GǓh'x>A7V[s-G0!IS&% bHxxSˁY e Ĉޭ|/16siu p6"knְJ㡎t]w'u<e"P:#hW}MXyL4A\ Cf$1F b b1rٌDUЀkl, 3xVM+0π&r5"1۱L}Na(llf%C6tu,[Y8u%4;タGH&hęC֠1JTڏIw ;Qw4y6cc1b{x(jlVT6]4B=/6VL>MZVk vr_*mS0Ol5齙3|qݺlL&vC]q +#8ߑQ|H1@|B׃X endstream endobj 23 0 obj << /Type /Page /Contents 24 0 R /Resources 22 0 R /MediaBox [0 0 612 792] /Parent 7 0 R >> endobj 22 0 obj << /Font << /F28 15 0 R /F15 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 27 0 obj << /Length 398 /Filter /FlateDecode >> stream xՔ=O0 Owǂ( 1DDINPU%w·/s: ǐÌEL($ٔR$W^'mc*|W_ ;/mybH(-ܮ(Ĝ3#oMMH.q5@ʢX& 0tOR1".<[5zD8;#oxv΋8|)`(<ϲ)kEڴy ş-;*8$\$#P>$ h'@_ XۢlB7E4_Jۄu[8K|F~xYa~ik?TcaZt/fҵW곙A!lr)Ib2A(glW endstream endobj 26 0 obj << /Type /Page /Contents 27 0 R /Resources 25 0 R /MediaBox [0 0 612 792] /Parent 7 0 R >> endobj 25 0 obj << /Font << /F28 15 0 R /F15 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 30 0 obj << /Length 1774 /Filter /FlateDecode >> stream xXKs6WjbH|҉4m:4"5h R܋,vޥo_IUE*".jWY]٫z#rn߃,]e2.2%du\ iL#tȊU*c!,%&KtI$~+ꢈ/?24_q]dEbnB.tdv"3Bpa!+!~UghpSfۏZhӚz,&yI4\BeNcpVSA 9^Ձu92 \_3ZRFMxمO2w=y)2sY!u ׹XeYkA/LYg")Z!dZrb&П G~\"9ލD8uM2*7$FQ?䳂6UxJ [;߮^4PbLpS;FkN5ǽ:"0P Fn>zEh^v1_}(](?iIIKԟ;7gzlpX 慸u ]Yd\-ėF͌„*q =G#Sdؿ6.4VR Ҽd$vEgˮdZإ\0i,:i:s\.AeN!L0c{ЬB!.ϟXYWUdeyt3E=}7źiz)gҡwd> endobj 28 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F15 11 0 R /F32 21 0 R /F37 33 0 R /F38 34 0 R >> /ProcSet [ /PDF /Text ] >> endobj 38 0 obj << /Length 2447 /Filter /FlateDecode >> stream xڍْ}BqRejE>خɎU$Ne ;$(r^ h]nJ̢lswڄqY܏tsw۳v'xivS޴yڨN+j9t piu|C˄k}g~'R*w@`E}aIdhȼoGާMVd,8<T/˥r :{o$"k_F ͸+.Q40Ƈ8( .(\57 μmDZ6?)C#@`g|BmB[yVusb$dD.D;7LLʲ&Q ڏAj00ņa2Q&#?]Q Cr<#(K|R8{6 UY* 9G.A` RFvr2%`.=wi؏Kf{YINzG[#7 Ƚ/ vUk\.% sRc}Q-pt{}}J9gkЬ #́s5͓ZbR% GnH$Ye8DbHvqrT XQ|Qe~Iz ELsDIYB wԞ1>O#8$7!_ɰmY&6)\7KwH㒤O҃s#o픜e*%~y›*Ni]l1.JtIP4E.y6#ʜqgNҟ%,O3yq08`ZЂgdu"Qz ,7ʥAl+yj<|x@pr,b!ug~ z Xv#Z1Z6@^LOqs*U+ivwCmghQ*ED\PPbPSzWBs$ A1YHN IQZ{+ҎfԏɷpW~M4Rx$.F>]~KOP|Na;v}⽁;Wa5RcPB/NgdR }k)ECg.XN&?`)saΙ x)7: #B_>i9 ' J},jO[~?6}?}] ȗJ@}(U'Nwݚ%~OJV(!3BϿI@@Πؒ^ UƎsrjcȸi!  K&uFY@WE0?HDW;Ej$0 W%`<YA8NB9z2%=OjW[!_02dY%<~#[ikω a΅C `d{0>`h - vx Ckk# )4ȧZ%[1U=k'b}i!19o))S<@LX2S)^?GBSb U*32vz(Yq`:vF4X2rp_ MO#+e`A0Z~j2!yp'Rn\+L,yg`=;vQ#,20^%WLv65Ձ~Oas'd&I^{OKL%HHϺl|F> endobj 36 0 obj << /Font << /F15 11 0 R /F38 34 0 R /F37 33 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 41 0 obj << /Length 2251 /Filter /FlateDecode >> stream xڍXKP.YjD )x;I*l#C*y_7@QZEhOOzJNdRZE^տ#F6md[ʋZ{4{w_=lUU`]mf߾7)z_'Eԝebޚ]&N o0 J@ELLQNv!Uf| B8[ha'w<5wMVя7F|!Iʼv{ hF:IA'.X*I<á;q RKlSgYn<IѲd]BhݍAaV4P?rqc̡-0-QIW̯AȓO1(BkVǃ#dYϥwiہ߅ Q]L]߿F\_vJb'6FYE7qZ9`aU$ px -8 90%MţDz7WZV>ouڐX9 3 6| Z-B$NRƗFG(KX2,ƽƞedEp\dUJ=f}2ۑl r(t(S(/( }YШE"r%`6^ դb$EWRYDAhٍ8X匏pJ$'ʔ`NzfLߝ Q{.bIZ5295+#,ÅMs{(43F9-@wY`hODAcόBHzIE\fp}Ow/5B֚TP)X8 iLľ7 20(Or.7{ Z//(:vKT d'W^B8.=訮bǮdB<^VpT i[BsVk 4FZSsEi7 Bz? fFMS+HA iφ#\siyCIH!37yunz~{@meTxA(T*Nzzg3e7uBHa|諊XoH֤V ~}C4'P9Kjfh$x [ZŎGB6{ZV^#rK٘Sdǻ; AC#`kM4q A3# tMpfέ)ʜN6xuhБK2,댉hq=9&@=&ןFG  iwVKu/=/?3䔿ؘa -i#$-zrț ŕa'cBRlSe#:4 EW#c&jԞ$`~JW+|A(Tܼ2, G4=%zlgZ!mQ\m)x/yLuƸ;m׳b S )6t2i$`>A$Bg邲5SifQh!ĉ]Yݴ}Ӻ(d(`i)>/_!︻h(^uϨ7دdNiwG{R8>GIQE;lmۙTcdbr_0:ɡT-$cg8?[7ؔErlG<ĵDM)A101O3 Gbu5o S.~_Y,F_ڪg8pT6Txd |*DIR(bf[%4$eZ1rWD:D"0Sn;?x5VE@99ύi=HִS^:WT"םcOٍ~ endstream endobj 40 0 obj << /Type /Page /Contents 41 0 R /Resources 39 0 R /MediaBox [0 0 612 792] /Parent 35 0 R >> endobj 39 0 obj << /Font << /F36 32 0 R /F15 11 0 R /F37 33 0 R /F38 34 0 R /F28 15 0 R >> /ProcSet [ /PDF /Text ] >> endobj 44 0 obj << /Length 2174 /Filter /FlateDecode >> stream xڍXͳ۶POf,$ٜL:I:롩{#! y>PX,^y&nʬ<7qU֛LnvitdiSGu5 "rm.M:J<6AoӨDE#5^ʜt,BDo%yQ dbBge1]Ž>6.D]`i{6-/(^,q>,8 .͛'kUp55\l"&P4$SP㙗.G v]UxG!pȂyV90p}ŎQpxf9›FP8+!#o\zEb4Wm@HcW<*kцDkZZ ,jF-\ йL2aC  @$y:蹞B=.^ pŤE޵SVcz鯸-&o7}}3221⁩!s+k'ۿ`(ӈ"/luˀTȝy;Kc( ]QVvfM`k ʣ?>P(_TKWW\MUs}HS^ЧST࿹~O1S~?6Ll[+١V8ǥ5y׸d:k2%N\42'&n! *%KPk(pru&tݳdmx6jk1[8닼(Ks;2YEBa4PFrb'y%K-$veH64!` S *DCN<M/&=T}u>~rҩ$/3CS];p3?ĹBwl.յ8"ɇj&(vOBL$+yseU^%A~d i1w)2L(@@#7Y7KMQ$q@>˪g?Ty3# Hc7ގbxg4*2{S kd,V@74_Fc.cůB&rwV*_$ /bj& o?|@:4 !q3XJ! DƇԽ]s qVH\-#g P<%[$( b4Qy A֔q7? n݉vaJmJ~6sE~`Ʒ=O_'%Q7K .&,]̓AЊ20ms"Γz+9*\y^ endstream endobj 43 0 obj << /Type /Page /Contents 44 0 R /Resources 42 0 R /MediaBox [0 0 612 792] /Parent 35 0 R >> endobj 42 0 obj << /Font << /F15 11 0 R /F28 15 0 R /F37 33 0 R /F38 34 0 R >> /ProcSet [ /PDF /Text ] >> endobj 47 0 obj << /Length 1066 /Filter /FlateDecode >> stream x}VɎ6WH" s !N [-%Ѡ8_Զ#nZ^m~i6yRoMnLVWͦ*Lr?lPyVd&I\ɏ$5uuknLV33zw9U̟?_>}.UB3M7ij6SyUw?!ɕ=9Mt?ǜ0Q1(׭ޢyN͝ұNw|wWND2w9`8U?u=kRls5 O#BTv8:;/eIZwnyrIgM|a` $`M}묬*Tth$σ#?plje4j{;ø~Gn9`v dDn\3)_p4Vſ%Ɛ 3^ߓPaa>bF#bwHR%RdZ0 9^"je J{}\"ocOug#QvuPܳBɏG/0v x=$.J =Tc5y%@T+̕ovHUkU4syrĀze)'P\\S=Z~-5:0u~d'G"l 'p>pL^M)Ɩ:4e\ZN\:kPVK +c@M<CVg)&,JN߸}wp((Z='gc6٬uMi87 9}‰8'xy;rKB\>"@ِ̞4S%fs= cTxHPwhpdžtц)DSS+v(!k1O7E8So+:<Ā8E{|;v> endobj 45 0 obj << /Font << /F38 34 0 R /F15 11 0 R /F37 33 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 50 0 obj << /Length 2047 /Filter /FlateDecode >> stream xڕ˒F>_"FԃbOٝ aa;{`jmDXQ iDdfe;>jQVeǧZd?ɇSu]$jǯMnyKdK7;SBf =2C(fi6VE,AY۝i<\5M\[GlTx[wlS*) z,q[owqqZuWFﷻ,U1r'wX|v̕(MyfM+#TEG{@L%%[V޼4-('3-7*,򖁁 vf'Nee$u'S§3ٹ_jtgDK$^@[x] 5ofBk3.ɑ*K>4[{LgUK> }Ѩ__k4Q{ȱ .bWj̠xdBTnVɏ@-d6 .RU~s!0S1 'FhvsuۃGK]} }ǥLŲϝR8=ȖH>҅|ǵ9|5в9y z_EƊZJ9@ 2 ]MAP~[#)W9d3uxi~tBƥPζ0YÊA~>yO@/PZ6;|J t;z;%:KȏYT R f)hb 1#_諮.p%j@W&iͦl؅B[.dV@ @/m `EɩW0ORehy; 3f;b=!ġs~G:!Z$~R!nĹf;:҉WOܴ||~-!i=y [-.8qxs1 ;k6[4$0|gEeȷ5ZҋH}Yrs U,v+0gX33CFM#W`N,<k%W3q_ rh<.+w */phYBy֦o`#o+b/QX:1KTJI i992ݷ*6R2/ b!.@==@Fs& +he^2oZgni2LS2JqO@V@`E7]fISx&ν4_sҹoY/vymjWewa `OК,ho J i33==O6hX^!;fr 6cDۈ"8@`G^%ף[N0s{jI?]6z-6.LV /%}q  |jG`M/-a *Dڨ O7;$_wz|;G5a endstream endobj 49 0 obj << /Type /Page /Contents 50 0 R /Resources 48 0 R /MediaBox [0 0 612 792] /Parent 35 0 R >> endobj 48 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F15 11 0 R /F37 33 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 53 0 obj << /Length 2558 /Filter /FlateDecode >> stream xڥٮ}y  )A;h`.04}kjqIy<7l,./yH}zx8a]$ḋ4,jWe3*P?$EL#դq\=_͠{yQuzn,2#|@P4㥓;Njb>)“vH'zirJRWaUֻGcstupv4aa0^>&M 8!);YfEWD-$a ҈(|Q(C`Lg$ft^OY.$ℕt2f$=5p(b|'fM;9)u%uy_e3y:(h-;Xl+ן:BWt8ՑP`تIjou 7 G+hc]+]U73صl~dPfi mq{@PNdHydtJk+_RV0;.6ZCnг' n@,fj'f&a`֗iMZ=)y8 rIH<00HYڲ6 8䘝YY{f'y_j6;,08r5]5v2`P8 V!_ő(05烾¦d0.Di"ތ0Wz.֊w(%x4"FyqwH2!+t8]eŇA_~>ɕЦs̛jOT;e@ǁ0cI 돒Ό1NRyV1ӁV)[c.Bw;=c'qTaVW\=A|OL;hVfN*#!dNneYEz&hvCS)Z2@D/gi&e}8魰Ta'˦B(-Y`Z$WO̕dAuHH]Ȫ߹rz+ ءq(2pTp'k0 TݕIQkW@urXG{uT%9`ݠ)N 3ռQ}ڢ,èUϱ7:!(ʟ1P} asm 8 {;yBqfr̮f&g(#(0QFq7|8-i Y n3Cz 'h.56 OiI%LYϡTrK.cyrlMDeFH=R gzp8.MrBQ"AΨ:f^^) 4C$jI8'Lyӯj |%_' Oeu)k %ZƕbĘG7I)F)w_du(şV7;F*t];*FZ^E!tyf n;88"so|#sm$HnDkaKi.&am}_ɛyzJ|ב iD 5R,2L 35 &;'h@?ђ^!@z#x Pqes+ʇj R儵T !QM$૯ ŨxMCR}8g;]Oo-Œc \pCA #Kbϥ\Ro4aJq>m"*0W,1mXa^.D#_'A44g~lt,TNQlň.G7pex qqbP8,|[[ςCŽv#:tm'_z tYQKuj4L~t4KCU 5r0bVr]VG2~Л:~`5#*o5@bi--9 ;Z=*~"{Op8֫Z>9NhKa" b%^z,;*o:b h,%3 ˠyp&\r|/6QD[X".yȲ(cí@LWdɃ`a{Ћ\R uRH< ~;6j/]d{{y<:2] ܀SNdϘ3{4/ip ւ'uH)0P0#߬Hv)B| *#¼L1Կw>a?*|Wb3_=Lv#I9[XRsjYrZM=B@Ij⌙)&OzV&_pJ3-7΋=*""bwȀ4e endstream endobj 52 0 obj << /Type /Page /Contents 53 0 R /Resources 51 0 R /MediaBox [0 0 612 792] /Parent 54 0 R >> endobj 51 0 obj << /Font << /F15 11 0 R /F32 21 0 R /F36 32 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 57 0 obj << /Length 2577 /Filter /FlateDecode >> stream xڝXY~7S}d61 YllZTK"ǧ.RN<*}݄'Yt ϳ&Ks?ӛ߽V0 {ZǁZg=Y}3>yhf^2kڣrOo,f~|W O[UIy;U8XYDg[\lzwPJBa뎩rvV"6Jr_1=6=H$%q8U9oD d?Xz|M7ljS)gF>e7X:{.fb֠J=iyx_g$6~{] 8 s@gMjU3P8Di𫺮/.#1G.MDZ74LJSOZmj8tԟ̗L/N<;4 {$2e}h#kC Eqv}?DRqym;I=3Fпi;>~p9 'P%KAakiͽAͤ ٿ_C%#h40 Oյ(mŘ-3z%s@X>1cvhw Еj8辞W2 p OėbQ4EyzgFÀgȰp0Hp{኏3cN'LP'ܘ0dzO H!Y08fVLsC\(A@ P&Oo-j`tS ?]|r+zuq@\ [v$"LRD FFyI"/<zj5&1mA]# V3nzI|P 'A͂30HSj!Oh\@_ yeU{Ybwf$G&Ga;@9O˴Cȁ@kga6KZިC]o, ~^!6<UphhU ޻5UoσtfE!'+K)Űc(! !Z3*=C,njx qs lюD@ztEXA]vHZ9z&1PO9S8 6QAaag|i^P%QUN_ZG5& PYIm2 D?Wa ydSJ Cg=I>YzYp$Ћ:C=A'QqG Ee4d_I}Qշmע_j\sqzX k>M[ 9ȏ wOLȔX:*qG0YF<ϥDܡgLI*BݡAz:.Qj^F<{sb}ّϾvX1?@,D($BIq_Ĺ:*:p ǩ.੐0a` lL?T؝QE'#~{)[q,`d [|.F*kwlfd ѻ`s/n)`?ޞN'W\گbZ(Oy >8l2R{尳v+p~L;5(󄅅x(1nª T-/ ,*_I < KMC?KvS y%t"/߶5ؾn7'hΑ$LnC-@:z'bYz+0m:^=UG0I 3T !-2FQNƕUu/;E)q柊 B8o0OkdBNP:0Dj1 cEm&BϪO_WI%dyc U Dc;BBBt` _Գrx v)w e {tNۊ0ϼ8"uWPݙz)M¾4 x>JE4H$Զ8XYt\vzk0hO聧msn >Ny wPE?D 3E[(T0xg?zUJzm-Mk| >궻15q weaXLlf{*uGzn47J$!eQCmw_M_K(FYH5 UوqB1Lt[!G^1n W <0A߶QqYJRM"{ I`TR,Z1T\CNBa9Rd_5"ӛfǾ endstream endobj 56 0 obj << /Type /Page /Contents 57 0 R /Resources 55 0 R /MediaBox [0 0 612 792] /Parent 54 0 R >> endobj 55 0 obj << /Font << /F36 32 0 R /F15 11 0 R /F38 34 0 R /F37 33 0 R /F32 21 0 R /F39 58 0 R >> /ProcSet [ /PDF /Text ] >> endobj 61 0 obj << /Length 1711 /Filter /FlateDecode >> stream xڕX_6 ȣ3\\K,i膶 ú]K̲{wE?|GNXEQ䏤_n_|Ңzu{J(W^F`Hѓ 4ɻ[Lm#ةgȈ3$>)ߝ Q5HUqi lh,Q"9؁/śm:&ֲSsNyfsԼ<Łٶ{aҡ{?.$mB+ѹ%xEZi{<cidDV371{HUi-OV*ʯR+c=5v 5+4IROpchhl%ce=C :lq<7l'I_ 44к0lE?S2**ěB##fc!&Ϭ ]]ą=u b$j2Q@ +;H}h#g@+YpbM<-!G "lz735 l9,MvY4; ,o=/XP`~^Tgfi8Λl ϧPa'pFQͨJ3h02x D])7W(*fqGwH|d/> endobj 59 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F15 11 0 R /F37 33 0 R /F38 34 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 64 0 obj << /Length 2507 /Filter /FlateDecode >> stream xڕXK۸WTj%w|ff׮j/IIP FֿO@I#Ux4FqOyԥ])/ۧjRUTOӿqoˢ.5EB)XB(Ub*Y;ZH.U՞_0گq|ϫĿ3.*=򧼁|,:9/To"qQVʞyv syEEjv6dv0ByOzpÎ<4rI>TV 7;/*i5J7ܖsd>2rYK+`#m[Pi*{3+`ڔǞٙح侀j((jMeޫ.{`cñ縐qB)+&i{{le8'Z-?^5gI ƩmIף7!X705B1 $z{{-TfpF{[ǓGÞF;ޤ-A<2kǧ~`HC TSNK`"h,I4^-ΰ-HJ}o(ք0CrZQDÌesXA|$\7shYc`Xm~8@ r+RdqfEW&[WP!%w~s@NMnf\Ave _mc`ώHRsw tكY%nUiU`) h3o<ޢ_h e)N~+ n"r̝xtĐPSBsnT9"9 r{ QsgDeE~Q;92*0q&*=?`8FE VxGft>₰Qynx\7$oEo35g0>6a3S v7|d%Ju/`}Hͨq [r 䠚˒<͡ݎ:|C0:b%$a9EAL9yݰ ꧼL`U+V *˒?9U tU:70 r64W\R8[ic{g?9b2ai- 8DVNwp<ϩն2rh]3iZTdx =3dB %+ÎHn ^n\3x#X=:TS[^g*e{z2=|Lv@\E=. w R&چg|4 FJGdJV Yk0u8^<|Fx{ ~o+pw8 Hw}?*pHGtBlXl2l̟ؔ˅b2eYA$Ob5G[dJ(/F㈑\'Mj=ƙ;\@jسfҬlߖ6dofU?!9j?5NJʮaK@U|T5SiN}DbzR8˧ u@wܘ>,Wq1SdjsvEpH,:fQ|qb)MHll|`HO}jϋ) 7X9Vd4Zf57 _I_HɍDTl=0xo"s'_Pgk7R(COXqձoO mw<0-@İQlǸӳ9 XVVt@\PP`*4 "3atq3yk6%4b)+.HMVs즷5$ƺ_JTp/6>`YJw#PweyUF//9&E[LIW[rXp ( b}w^d컫Ycxu!雇=֫\6%Vc,%#+аM։P'c?gM61Td~Ns{Dv|Ngsa˙浦(sf>ƑD)ZE3? KC {HP2|u޺Sjblڒ<#_Md/bOѪ$Y㱗8:hNh)B Kß"qnPM:HhEƾ oh›E #>9jBG_@,R&-(wTpRidcFfb<29Eerpi%+K,˜/ȡ˴ d["8͞+DvWp:R1=)T]mSC N%b^ܻWϰ endstream endobj 63 0 obj << /Type /Page /Contents 64 0 R /Resources 62 0 R /MediaBox [0 0 612 792] /Parent 54 0 R >> endobj 62 0 obj << /Font << /F15 11 0 R /F32 21 0 R /F38 34 0 R /F37 33 0 R /F36 32 0 R >> /ProcSet [ /PDF /Text ] >> endobj 67 0 obj << /Length 2796 /Filter /FlateDecode >> stream xڅYKܶWM* dJ)+J$vZ]m*?>_?qF6~Oq~UUW7wWqۢ*mM{arכʃoS0:&כ _O0YtκYz [lU7;]0כ"uB,7MU_Qis|ێLӠv>Ҵ麐־)-dqBjdJ4!=Ƀf2,zJھ Ӳ58d}4n~-_Iv[3I_4T͡!J(FX[Fki tC$6I6`ͣn=)kzQ']` |m8zUCV !/lz6 _;dh4$BM`@oj, v2hj@Ψ> u »A^ȵ.2uC{ab5+nw*[4]29ѩKd䌱lmk N-TP9C^`4cIm%QC?m֎z/#mHlbumθtp:5lhpq/ag=\FtROZQy(]> p'KQ7f+ت'S˂ZU]Xu}iLH$h\9^KCh d$N:eB:*q nLFx6o>lst@U~]f"pеC'3 ۆQѦo4=ػ-O?We@>0(6"XVCcK4"@۩?, .FR̨sRPz<+7 *;9(xE:Ůi@78xidix? Pk>i >OAf3`U,~_Oڷ+,m8yL>)XЀѨ"0ݚs,sz-Y&5ƈGW@pQG<0hQFj \$etk-XO+xxJ+y/gKxDn"֭xEaU nB$Np(S9t2vQae0eXI)LO`k4,UVbKx z9ڼ%UzǛT>^+Fi\j;NJ92lGD 74 /WExiR, ̳,{xORfPKBYU$mkvyO2w؞_j ۰-9+͏CgwG qY ߭TqTexINچ3J@@TQ_MAnzB%"e@TKלkiH'L.^cאa fݱSn5>tZN iOaPm1uB;c9IAwN(ě$WMx#Ŕ iFB`paAyH#iKRRS_7O;Y iQ,sTz3P tGCi .W5[!3qT r q~*Z,r4qg{i2lR>6 ~X4 ]zjCa-?QܿmQ0E*YTxm$ R/-nF~^5lSS@Nwt?(Ҫ`76NFȹZ 9PiHh>~Ѓ$;|ӂ1')ſDM\d߹94σpi3h(lwhf6-w r~8{ fי {4Gj8x VZTOӵ<3%iA}͗aGمyu؛;n|SU C8P1Iy/ 2 8[3M+48,՚*}mؗ'Dg!JK>L\ E+au+M+rp ॸg8L. iMUg'i_z/\aekn+yv)6K=WED4|~maE %$-n{& ))r;~pA69:pqf;FF4댣ǜwv$KKr!|E|*Ʀ;eb)LP8g鬥Ur<&."YzZ祄5Gg$J^ǜd{_hI%.BB(/_OieQZUf/">(qQ;'.o_,9/Z]tԑ+X:^!EoϨVd?qp> endobj 65 0 obj << /Font << /F15 11 0 R /F38 34 0 R /F37 33 0 R /F28 15 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 70 0 obj << /Length 1283 /Filter /FlateDecode >> stream xuVK6-+z[jN-ФHPE@KED Rڭ}]o^p8>dծM:w.+P7:$yQx_,o,¥ԣœ(^`諂V*!fm0}f*$6#RՅ@ٰل5wp7YNŰ(,^bނR\*ӂM rR F;052uxQv·3=&%GW{ ( l.u p)lr+z~1;r\?jФx?wK0@fS}^6Ka$n~_0$I߂J[CHS$z/ 􄉱bj!#CeKNp<43jVb2$:g^o'3Yr e,Α߀ye)Xd T#@L`J[!#7*I`dØ:`%P$( endstream endobj 69 0 obj << /Type /Page /Contents 70 0 R /Resources 68 0 R /MediaBox [0 0 612 792] /Parent 54 0 R >> endobj 68 0 obj << /Font << /F15 11 0 R /F36 32 0 R >> /ProcSet [ /PDF /Text ] >> endobj 73 0 obj << /Length 1487 /Filter /FlateDecode >> stream xڍWK6WUWoim\4(m+HY?3ʻ*EO~|~ھT+ge)vRfUYZd/Wv'{S0z# WBeU]qWd5W$Q H)tnFF-(&@g?Hp5 I }g ^)E|(xV3ʜ}ɥꍧ.9؂%g-nqO5z،F7b^ap9[o Qmg^zՃhok6sܜgM\0x#z#*fhaC!%3:?@=8dɦxĬԍHt>`Nq;ŗ?ۡuha1G`u-(K^ @&Ŀ'V9|2xBs&0%vz[ν-zӣ /! W|E 4v=-_i9-~ 9nG3Zm˂\Y%pP]:VpC_;}Kޓ 8v%mb 6'3xF;H_G2:Q>p5-s!"N=OˬmFg +s>sr"(HG) }ꔂi7# 8ox{F^Q??a;4Nd|ōHhWϏ9\x>y4ܻc@ HF$MIh-8_A w0:Sc#9@x> FPAX/Ef.0VLV~xG/n_ d endstream endobj 72 0 obj << /Type /Page /Contents 73 0 R /Resources 71 0 R /MediaBox [0 0 612 792] /Parent 74 0 R >> endobj 71 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F15 11 0 R /F36 32 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 77 0 obj << /Length 1155 /Filter /FlateDecode >> stream x}VI6WP"Z,Ԣ/E[t98遖h$d#3ѳbΏ?n߼{,RUTj_IҺڬNsUQE2h*q k&J#|FU-Lg'{/U6U^ale爱p{N}f(˚fԻNym"E@(x?apa"tw|p%iSrj> `d]]IL5yw¬5 /": @ v礬LG9hzƬ{ާ$v6zM0nW8RRXJ*#8m{.#.L~nc^s@u@͛`zܝ`7O$[:414dS!6ӱؑk&a~b7{=0E@`NW +\?Byҁ \\ &QN悄ƵC-]q43sYb{~ԭwsy$26CX7c,UbǘNFSj1|g,'w4r1j 0q>=!\ U GfqjGuPw_N!0Uvq1CO"ڱg͸YvE7rQa7+'j!{ _E7Ȯ L*G=<&/.¸#ж(Kΰ[1Hlsu̖˒!@,tw0|5ǍX -" 0H}-'w8[:L'^;9k;GSƷ,9rƹvlW'=?7h*lT|bH^˥y&hK&wj4iy2H<{~Eqxw~[= ~hz՞xZyQ` ȼE"SK>LAfo`ZҰ,pd3Ō :{䲱&\ȪJ7uw<ꆎ5*> endobj 75 0 obj << /Font << /F36 32 0 R /F15 11 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 80 0 obj << /Length 2042 /Filter /FlateDecode >> stream x}˒4𞯘*ؒGE(R,ŁpЎ53"G6IK-nWJPKˢ啊=4/?<o,ݩ,.2EdwJ3&xX@a_Tvbf %y |4Sq?iDtt(SdbKȇ:-wu\T bV71Yr9P%X$Γ"`]mWU40)в3a>HDYiLD ۃ[t5(6~4׾%505,-@d2`m;G31^0yrGwX||Wk*Yߢƒz3928r |#>:69{Gop5mX)O]Et2W:30[Cjoߝ${g:r#1> LY+ vIt;Tr:2!`@Q,SNEY-5avn,\Q(>6CW?N 8+G2C >B! d]QM1BY7PD$ BTlơ=)+4wG^PQ# ;v_M\ pl1"f*gt R;{4rXp1#BgOϼJCH'-(q_^ŞxG<#E#l=WqB  I2$KCOI:b%IF^Sj"jPŽڸ̡oв+^nma bH*NŽ׋Q f.Cs!iW~vo c'2G˽G_ T q> endobj 78 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F15 11 0 R /F37 33 0 R /F32 21 0 R /F38 34 0 R >> /ProcSet [ /PDF /Text ] >> endobj 83 0 obj << /Length 2329 /Filter /FlateDecode >> stream xڅXK۸W蔢jGkO^n6N''q< p'4Fw OiJszܭ4ˢZy4_=DyjIG_&-q&Zko??)Wu\ͶMRiU6絪"bGdE~=Pi5GZNNNPzs0S;΃ lj&mrYG|Ĩ%~hd`q`z贴gۛޛ4}:0 ܞ:煳M[Íb(݃ :cK[3G&dC躳x)T:vkSQYf`tmsQY ⑍4H*mK329TZ.cpBؖ\v |ew$ZmTWS?f虝ށE49|%4tK]wYWY>l#דZsQJ0VmOp. t+{y* Z{/#яZ0%;5Nt L (R` <i:YL)׍?g$`a'pg e00|a#3#TE􇞗q<mز󸕍Ϳ:{v,1"gExrt l7,a5 G|p_q_yŶ \f!Sa:%X%Yf*3Ge2 = {BdAh _[P;lig8e&H|,mwȮ&vya F.`N/)~8wCHXH"+mv!0D=2Kxxg^d.G \A]+Y Z, u&pܝL\Kr.U#T]W,SYN" D8w* 5 N2F 9~0ERH<H\$7[s:i|%uR$*SX%06eOxKhg9T?FO ZNICK7s>C4X 9~j6MSesƃ|se42;TO'*yHىC}>\a!Ky7LtimJY$\ܙ4+uRApS`ǝԠ·jg=V&eCiҚr#ZA&3/=+2.|XC_ WcTd G? 9"pl㌩|)dJ >sKyRx䎳:|wSԚp$Qw^s2iJ YL9H FWNn,Y%zv-.^%T ]ծ$D`c\䋬™ uz=q* EYPHb%7NWVvW8PSi>76>:H9@D_&!/ro+zsߋJBL9"q'oV$l(5?@?Fzx64AdR40:-S.zcZHdӓoҙx-Ut5(,V87!J endstream endobj 82 0 obj << /Type /Page /Contents 83 0 R /Resources 81 0 R /MediaBox [0 0 612 792] /Parent 74 0 R >> endobj 81 0 obj << /Font << /F38 34 0 R /F15 11 0 R /F37 33 0 R /F36 32 0 R >> /ProcSet [ /PDF /Text ] >> endobj 86 0 obj << /Length 2343 /Filter /FlateDecode >> stream xڭYKsW蔢*+xHNٙکJ[h!E3[ۍdѦeńh4w̸bR1Zϸ,3vftƄԳD39_p|.yO.jrs3_H%&׫_z3l!8ܒbBlalڤgY66ﺢ #=ɐɮ塯Y2i ̾heλ 2u~S0<9sZGK*9O蛒q2L_PfGCU,qmLoV4m:of]RP4K[W6zͶ*hA,<*Q- :BI|( l6݂iu@,[Ro+Ag&ִ!"6@sODz'|oxШؙSW4 GK`G[eA~^uM袎uqGO^}koYԯñRW x.4rw[3𧂭A3Re[^+~U cH]3c{G09:h>KION?"݂?I4.*͡;=Lo*R3ySDllfߍ_34bSnԼ} ߛ"o-5|4pMoDwMCe&94ܡݖmcZU9ϖB75L&m2q@ʅC#1M& Z>r¼i{=z &?_55:GE]0zzz!> -onWIWwۗX_6t?R}$|9T+ib(6@s p$&!!î\t?`UǍ;$(Fs): 1t1gu{OT=SUcyb*o Ƥwb4bL$:<c)K9NT}Hn10ظ73 :63>m^ |v@IH3L 4-Ao#ԕigL tA8o:.RcB ֻ.T7 aGv`n`}譏dSmjls3T)F!ªK@XJbн4C> cfH'-Mƒ„,7XV7nshj:yC `#Fq2"WMS 󮢳JfKG3VUiȅ뢅S⇫]p8i\VfR)f27[V0bٝZ})<ߏI148 7p@&t)f#Xt5zE N3xf'YgpUt ߴ5+(@kgXÍτ&Q +x{)hByk:XWyk~5\ L |12&{O=( d9Dh?4&c\oZB>.{. "~M,hhb1&Yebo9J3'P?}qÉLLP6Z|$bYF=`p5q 3_ dPDžFcBNFL`hQ}wɑBCzHh OD!-T(ˑzDi9X oσzC& ]+>.__(sݑpȰE7ow Ov1YB1}/ f **#2  eon{pBmxTz]/FX|qS9 ,Z$B=}3Ws+dpZ6ߟ[ph|d8;/ą~(ǧzqRŧ1;Ltv?D{p߸^Y)fBV =m1!e2063J?*|b%Y!gÿږ~ 뿍T_LWa p&XfM6Q4@qP u{rA{}%Gװ}εO#z.vԓC)$/NXV@3(Pp3TX!4.'k3nR> ӧ7)!l8Z axi8bg65^n4?Kʀۚ2! p%jq 7^+Rȴjf\Qy endstream endobj 85 0 obj << /Type /Page /Contents 86 0 R /Resources 84 0 R /MediaBox [0 0 612 792] /Parent 74 0 R >> endobj 84 0 obj << /Font << /F36 32 0 R /F15 11 0 R /F38 34 0 R /F37 33 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 89 0 obj << /Length 2487 /Filter /FlateDecode >> stream xYKﯘSh37dz8夶C*#b$z(RlU~|EJZ_rF7|o;&ӝ2&..ϊXWfTDnΛɋ6-?7ݞC"@*r?UvWUs\1jhXZRVQ2{OMH$i3Ou7zϝw١٨CMz-A!p+JU&fk`1F,3N4P[Ѫǻ ҄a6#dz˟oϰ}moRhCbv.P!Q {Š"VG~hvAW%ꨫ"z.0O'87]Mv93O^^Dt;6ӱG 0pGfvc"8y p޿CAhof &F_DΒ݊ᔎBO}b8N)SV>7m˺t,CТ>8i9!3*[Ufpr=>Y_|OΟi !1$ [Ҁ` %IkcvGh>̲*2S#yB&v52'drw;M.hM|*C4 `@0Q2Q zd){*J+Ũ)fVP0 #TW0 F9 @OLZL Ag,4v&u/1! vq߶- ~\\|w6S Ѷ̿:~v5eڃ;JGh'*.n3崈,zH0˘8cIJc̖a9O`]LqjmR2N( ˻,,) ӵLx#cz?`i4l Rj >H*#R~9ɒno9γ`sLdVOqXVTJȺ@} N YVFBBMch r0I=a?':-X1荆(X8j{y/f{FIu?iCj;Fv45vxe AdI?:Q0d8h2{en+Z )0LD-d[HL zAElB!2bGd8)334ˌUEN.nmb6'8]JmCϔ2n)6|9PoI˚_E@,F`R*0z7?GG_bD9IbCc!> a󲖣\KHhZMWb3_ʐYR)C.ጒL}e,-en{t$]?_ϕ*4/v[M*P*3%Gh":n۫cROܼ` 27j[PU;=S5U麟]N\5 By r`Ph4ts:z|Ɉdg40Yƴk9΋swYUA qL(2|p֮ہry4ݲyQéT,+xi\%ŗZ kPҸH ?6sMf}릳hn $C4p'#a+;PFǍCLҔ*@ap'Z#cSH˫_p}vf9!/ah~0p٬I7r> endobj 87 0 obj << /Font << /F36 32 0 R /F15 11 0 R /F28 15 0 R /F32 21 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 92 0 obj << /Length 2489 /Filter /FlateDecode >> stream xڝXY~Л)`}d]I`I %bMrƳ>u5Eȃ꫺ίë~IMERl8Mò6E^IooڦIݥUΨaK/UXV&Ky* <:XDŽV .>h# NN˖n ޛm4}e0z؂K7< 8syb:<' T;X<hf'7u-ʣmZsbXʶ^#3Y1,z.+IGը_DG*ޠ@4Q+z6mYyI80oQuffgwyR4\k;&Ȑ'u3S;M82Sjpyt~٪:ニ"z5+tU,ۡJk9 s53*7]KVr19F/5fu-h!H$IM3ʭ%3Bځ9x|wz,qb'l3E(:)gJ'Zgʏ3'i<0+3{cVDM˰SⴘF(oH;Cל!}B"%I=O?&&3/ 3# !dNe}6uÚpv^GB{!;q0 9d̀́eHzŒ|[5`oQ^f_猄 RBg-nOxAI _;Qc}+Ve͗Ui'ixQ3״BK5`zSj9ىrT2ͺKT7elC ,Hwvs)X+q~)BB4$ Xd9^5d5}A7j]",3H !׭1R³uzХqՍAE0pF5 ;TMQFTsAJtNq w q IVNy2yxtԢ^ιw ҋ7(rqtbҥebPn+rt^ҽK\8{-0=Bs6M<czQڐP#μRE G>CQLe[{q$r@bPT).1iDwu7[d ˜PlueMbV8#,`$zǴ1(pfV(BYPe-- eg_J}{pz81] .7CvE=?v<4(y92?h@NȴKQ rH^;Qr&;b~ sؤWv^ P`EۏQkĽ 3'w\ 0@( VU,#qb׷< FjH#Hip3'vMi@3 ,$/Y%! gh$Hu5g3rYS-+F|z^nl[.W j'Nd #&9(Q icP@,$P!am?y /0\^?-TGxYKa V}ڂ(ժ6Z|:-6q^P$WN [g ˜9HGQs 6sj(|7GFU4äZߌm׾b@&q僂[ByQ1}'/"H v= UuoX~XCjt/E1:Ԍfp"+(hprްlc,;kpbU3.1ֈ1Zb]yqzȱc^Kjw Yh>n0eׯ?I 2e(zr'eE K,b:ֶk>aQ}dewhtԓUVX+s'/a}$Ժ8C]NQXN{t:ƛOwwd ģ{AKqG~ܟXˈ 5LvK'w7߮-vL<'ƞVh9ݓؿ@\7Ip ҁf endstream endobj 91 0 obj << /Type /Page /Contents 92 0 R /Resources 90 0 R /MediaBox [0 0 612 792] /Parent 93 0 R >> endobj 90 0 obj << /Font << /F28 15 0 R /F15 11 0 R /F32 21 0 R /F36 32 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 96 0 obj << /Length 2927 /Filter /FlateDecode >> stream xڍr_ҋU"TQ%)e*aNcH1_ PEO3}w﫛ކEY].¤0܏⦾FU(JV{U_vT腺,8vb,qr6bdn,pZ~Ek0X&";'N<~zƁ-#7!*hl 12Qckc+5[ [gF~n~{{àZljpnA݌NrI wr{>2xT63ĠnW7+4PeIRq8sdTF!Oqc<W喀pLRJx "0"_O1ap/ytQ7~D"儜W(#ǎPsp/6VrGYw4>H6M:&TZaL9:ڛƌFۧ+nTځ"¹M*(9½భUFCnѮډ$,$ \ Vr0w8#mHYtFEj\6 x4745!`!Wz 'uBNΒfnn(DԂ/m~<5C  gau[>gbϕ 5j,f<6nnf9wV8NuƬH<2{zpǵhdGȐ8k4A%B۠G^${GvYe_? rviEfRn;^2 짐Er;-w12eb*4-|ٟny+Ns{5ٸ~=kk¦ B.-ɋ+mFΥ;xzFĮ]C]J"@n)У4  y1lj [BL窣ڥOJQmUb[(b(0촗O"HǝsM(놈ŭ'zeٹV^e~xn`E utj1bgfϭ$<kCo,Hq fS:~:U:c`ST0 ,ņYaS&+Qcɫl߽jBY*7^\co0W8G?染}Q:g2FiNd+ܲ/LE$Ywon} endstream endobj 95 0 obj << /Type /Page /Contents 96 0 R /Resources 94 0 R /MediaBox [0 0 612 792] /Parent 93 0 R >> endobj 94 0 obj << /Font << /F15 11 0 R /F37 33 0 R /F36 32 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 99 0 obj << /Length 1387 /Filter /FlateDecode >> stream xuVY6~ϯ[d VEzMm 5Ei[YY4Dj7 [C9o~BfiYb-DUY/Z(>y3,WyrwTiUWIJJ5i-T,Wqh=Tm?ʒX4iS2 "_+YdurԉuV-`!Hl[\H>Zx`x}bD?tOH<3_*1K &8w wQώW2ґJ*-H"F}ZM~M=~cfčx=q=\ո>hl(Z'?zY:fkc[P.22GSh6]Ȓ!r7"ѾQ˶՝!FM]gICԼ sۯDzTzF.&tDF9TvxǾ q(&8:>>8&Eť o{q#T^=|ۺ;Veq&H!єp㩛$\Y{},ћMwH'e.ڥLRN'?b3K#Ix@:O:T]lW"1ظI7ȓkox] CjQ.igV9(O2Fמ|K=:HXr`̥hb?ӡ,AݿCWD:<Օ. uKa&Yj Zfe#>*7HVcN;0cstvXWՁ3oC! x=/1.Bƈ~,{B[c4RqJAS:Zd>LShLJ4NlU 43j\2, F{Wb_z$,O+oF^v1&"9m)U"98}ǀchz1Ì&₌1`Nɫ࿲2<⇎!/)";3AkP .ǔqb&BjqߺQvQ#*ιT%̖7!si) ]|EU`]-N*Hή4.>$!deQĥ 1G+(.B;g=8 +gIi 7077 66Ptk !v}KVBʴ.>~|w I3 ҟ)čE}_yI% 5~gȀNçL;z4q=ApnqPǹϷP-3L%خTtſX%P endstream endobj 98 0 obj << /Type /Page /Contents 99 0 R /Resources 97 0 R /MediaBox [0 0 612 792] /Parent 93 0 R >> endobj 97 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F15 11 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 102 0 obj << /Length 1583 /Filter /FlateDecode >> stream xڅWKs6 Wک):ci@k]ZiCIq<_AAC'ǯ"=QHOE"MI)d2_L>/VfY7Eɉ"RjdsIM ʃUY/AMHSƓ\JX1" cRR3uKtҠV563S5EFͦ* ӕM}4@j+Ne`;v+T1HY`qtUJ.~atWOQzyM< yMaZNfps0׾teyZ. } qtt]o*|e <}+S`p\E` YsdPIR$8ZWre)8 %l'rn]fȤ{hIUm~9>bG}-A1y.8N&RH' E%BgV$ euMLR|$J4\ȕYA3y=m*Jxw+KK: Yfa7> ,B |=l`!:0z e [# $~kuD%@Gr ,2۾튑I%t{9D#Att߂8>$PDwpQnzMk!} T=mGԢo*;+yG cO2MDÛ|1n$SʲVm "j*LDg\횝kp>{xi{KWͮ>*Rς|X /)9:8ں%X߽i񶬬$IEH4gЍ0=t9F#֜sHpq_PdqdlL6;/æ* [&(sU akhGg5 ~Dr)Bh֎%T,CYldd$e|663r*…[VDyrs(ln YC(IC-(Pе~ ~PsunW5W(!zqCQB?MYWW'd; C?rr?pl_\چmf7SzWZ%n3W̽mO%Ӟpp;A[7ؚnC3Rvamgo^͟'H/,RTvuzY8E@&+X<09kzur}zq/OήN^>YD׍cmÌw0J\uo/+s3L\z׳p My-c#7wH2ü'Ա>*}>~r'ʴ-}AA YH~rv[=B 0_{*X$9?( endstream endobj 101 0 obj << /Type /Page /Contents 102 0 R /Resources 100 0 R /MediaBox [0 0 612 792] /Parent 93 0 R >> endobj 100 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F15 11 0 R /F37 33 0 R /F36 32 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 105 0 obj << /Length 2434 /Filter /FlateDecode >> stream xXݏܶ_q/W'4q@sy"I]Œ;_=>/ሜ!g~3wnߩf$YEvgE殾gIl$ zݙ7$Al2N,lg~ۓTk~OM3f.ө5#M޾V$ wQA\OnlU NmHqawn`!Yj!3U7F;<ɞJ?m/ NGD<4`Y 3,sEoL 1 (Z =pk l>dVmDngƣjAO(eaԡNSU|"=:BQ3Z5f{8TwaoYDwVgiKŞ37M94݉pfB^o  ٮi=ؾcuS*A* S?#k,#7N8)aaZЄp%,L 4iF QAw J~1ˉ #7q55fab_;dGND)#v,(ۅiy +[3˜{b} yp t7Dx&xUP!lE8KH~[DŃ3cXڹewx1̟V*,'̃Mѩt8i<,YjCE9ޠ+#o@ C7o6؅?`±ᯥzEXeaSGvEX]cqpw$2?+$'Kr +/]gђ2Bp{ CX4̸<1O peހ=LSeL ,Wrm.Hdoa=Rޑw ed@4~_+tR 4z٩#Vs࠭yx~RA'آ-]3|?P&y>'''m&Hy4mAسUX+QMD;|GE>v8q$ :vV\ FH&i^,6)H׍Z-u貽I+YX0:'F<梡?*02Nkqz/E/nt=JD $2x!Ũ\h{^uq+q|懆_Z3;'J [Vmɹ8DMyiPEnywMz`1W4<!:(MAAqȹxISz? endstream endobj 104 0 obj << /Type /Page /Contents 105 0 R /Resources 103 0 R /MediaBox [0 0 612 792] /Parent 93 0 R >> endobj 103 0 obj << /Font << /F37 33 0 R /F15 11 0 R /F32 21 0 R /F40 106 0 R >> /ProcSet [ /PDF /Text ] >> endobj 109 0 obj << /Length 1211 /Filter /FlateDecode >> stream xڍVK6 pOg֊ޏNgvIM95=mDֳٻ x|yx{/([0<+YQ.O,WIz+/WQJ} D$r}{/_" +TUVπgXfC {^ъulĠh{e O X]ȼZ;W}`@ޗ/, 2qvG=G%T/eAd/0(N-Fvo9ZFE;M̫DGL.gi]u:"/V}lj8wҰc-eVg: $מjhE].WqzhAX 1(T{3I0Ri1;Nj./kYT{-R'qE $cO@f3$ρ(АT5R~1DD+! {Ua4{V1 氲 VG|$B$dZVF1 HzXTwQ$d+v|~lҴ>b\to4* ,("}7(r"QF`sJNqXjceo0QzBqhF)39br*bwAQm*B"qM)^<& s~W\&}jU#_h$(=Gor{UYV0iЪAM s~~ Ӧ P!B5ESjf$k "Zm[<S7x.<$q:KLN>a` Q~귟XQ,8}(9_ \KlZf<cV'v ,ſʽO?94bZWIdD~]bDE[ڸZ4N𠑢&kz0iOMhq M@ 4i$4briun"vb.I8\toڻ?BA~ԣ>RIhY w3σxO~|(ya^KqgQϧJ1\?zO#-Lf&Td'D;Adu4WS 5/ۄ !6HS}?diQ‹_w endstream endobj 108 0 obj << /Type /Page /Contents 109 0 R /Resources 107 0 R /MediaBox [0 0 612 792] /Parent 93 0 R >> endobj 107 0 obj << /Font << /F15 11 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 112 0 obj << /Length 1271 /Filter /FlateDecode >> stream xڍVM6 ﯘ[=@kٲe6iME1AckBlː%Eyv;hrDI=>o,VMYiɪ;''0c Ͳ͎7i8͛f&ʙŶEjxZ*o)˲K:QU(ALۂ%'Vn*:Re"c0oH{H)#ݢ;H WuDv}g9%D'/51^a1ciSZѓ *'+"9;JnwU!j6Fy^=zF,qXK̳igG/eLI ːK JzPἾÛaXKHa-r d>*Ž9H O?/V}xԻDdC(`bB.` Z1zh_Oak%(2'0qF'G"O@T(Bw|,pt.A,֜Ib_zj:=)fur( LkI'8hz0  oֳt{hBӪZ<㟮/[Y*%L0ᬉ0$*;hm@( 5AQ}OɳJy/:s+ϼH2N 5dbM?cq 8Ti-T%cIo>o~& endstream endobj 111 0 obj << /Type /Page /Contents 112 0 R /Resources 110 0 R /MediaBox [0 0 612 792] /Parent 113 0 R >> endobj 110 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F15 11 0 R /F37 33 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 116 0 obj << /Length 1625 /Filter /FlateDecode >> stream xڅWK6 WgbZ|՞&t74nshz%ͬVH:__<(hAblZEdIE$W"lU^mnp|V@MΔYITg S\檈:"1)稊 demMáv5KLM$ ! )ljllLf(Re%`zuX,ae 2TMgx6sm]3ǃovPYTz; ւ As}J7jU\~{:u vm3JJQ$! #ouTbt19E_$~Sjom2=OoJGA5@m=GMGwq }UQ{Ґm`l{ѹگ;=s@NDG8Cz\: H 9\<5I JuL^m&3cΌ}4}2p~pw=K8a 87m~2gmۼ`cf2XOֈ]Ө;qqz}ae y~Eq60S<ќbNCwx/65Rt,zՔwcvt]J\S"('Zˉ ʗ]*7`1MRiDnoL?tQf]Yqeb@26 ڼŧEOj>T=Kچǝ݄-π<\3U钋XC$w`B{Lb5f<>4uk L|ӵX XhkGW5u^d'I,T /B brDu樓i&4a'Wb be&RKʧk4ݙɒK@cM|O&\# W7 'k@E +NDbr(8%lC &JFN p_R=<;j-KR0SPQu*w-m/njr$)Z,;IR-Ni,4Ƃd"bPT,Ip8d3Ņw ?r}][!(#~JSi8$dS&boȓb_NүdԘx=.cxUa⧐RٱT,9c͸">^,{|Y*:+C=kԢrq%7}8g`6\K٥'zwGo"yO 58( t7cg:[\ƎOk0bqth~*ڈdpѦ+R;q}CҒ;nre[Km~ٹ] &`$}o g)O`"zs!G%.GKnܶz'P*l߄67=Bq>j˩&c+1X\ݕ`Ry_5Z®$gŨÉ ]XE.W}Q7nD-N^@M R!glpg" (t;+~U/ endstream endobj 115 0 obj << /Type /Page /Contents 116 0 R /Resources 114 0 R /MediaBox [0 0 612 792] /Parent 113 0 R >> endobj 114 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F15 11 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 119 0 obj << /Length 1570 /Filter /FlateDecode >> stream xڍWK6WX+gsJ9fDMmʓF]e\.͢n28akF;OJ1{/=:;?7r[pؖ*VQ2i2{Ƀun<qXe;gEnߛp+8xӹ$J v`R)r}[&hyp ~ӣahk&;^=0-gN-DAEabϑ/I24o$lU62JEƷt[@(ڎ5͝(ӯJ)I4ʧ8TgN˙nG0-/FI.*PygّTz cXJ/1Um9UW^(<.lG.UK1/X)fjaIU+m71aǣb]+/aT_HSaMX2.((pn1Z͓9=c\pj8vX8LG6N_;9lPB MO"hv@9>3=֓%eR@PoKo"/z I51PPB4 8Oa3vvS7|)O%{T e0"!CV7^궟Vr33x8{G]NHVWF1RZ={ZEؔ}"JTWQl$\rM r3m[45#Y1W-1'㄃ +EŤTCuX-E ĻeV".>uϋ-!JӇ`U0Qh#@RJaxcRb= p+8i~>RD'B?]"WS'ࣂ1cha [cFώ3Y T<kDo` i7:7k[eFR s5#NzA`_"<]cfM#)V ye4 n<j{קV NN6fsyWOˋW=֨Q-R|&b>΋TES{yDė'8NAa\T,rèTO^< endstream endobj 118 0 obj << /Type /Page /Contents 119 0 R /Resources 117 0 R /MediaBox [0 0 612 792] /Parent 113 0 R >> endobj 117 0 obj << /Font << /F36 32 0 R /F15 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 122 0 obj << /Length 1480 /Filter /FlateDecode >> stream xڅWIs6Wh|P3M{nYNR94=P"d!)}$+< ۠wW?L'qQ|TeQJǹ*fvOv/$2Ck*Ϣ,.Rp2[du\~~k3LFd4+%hHT $me;3Yw;>FϔD)Bt$L0`> endobj 120 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F32 21 0 R /F15 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 125 0 obj << /Length 1210 /Filter /FlateDecode >> stream xڕV[6~_)H! ڧp7$4Nfvt" LQ}ŰCT%sc/ Y A:p C[|f} CoX5mkwmo@ "^>#C/u5S شkұ}Q焟mg &3$wJuS}ljg(|i6َab X0|{8'kC)O/)бc50CN޽$^wM mq7OmϺ)V͓;26n)Xt)\ b*n=阡vW s_?Fg&a4Lʕ`3q,/ǡ8VTHXtHKkzPLXzwDYrz lv+ B,PҢ@XH+D֙6bq%A`!?TtIOk\??{=)ɳ`L.SY, sJQiɌ<*> endobj 123 0 obj << /Font << /F15 11 0 R /F36 32 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 126 0 obj << /Length 100 /Filter /FlateDecode >> stream x313T0P04F )\\@$lIr p{IO_T.}g E!'EAz \= endstream endobj 127 0 obj << /Length 176 /Filter /FlateDecode >> stream x313T0P0S5W05P0PH1*21 M!2ɹ\N\ &\@a.}O_T.}gC.}hCX.O `<"Hv$,"=$1$԰1 C7 b an:M5 H xY&\=kA& endstream endobj 128 0 obj << /Length 208 /Filter /FlateDecode >> stream xM=j@*^Gw,C@T*EHL@*KK_I9It*}y2$`fYV . ejީyn4^7Z7jM~%-?\> stream xEϱJ@;xM>alHv L!he!V`ɧS )2ӜNU^nx[(j*.wVWGo?qY|{_G. #LJbcO.yl@ 93v\̄|Xp4B$$ &`vBJRYF Ŭleµ; $ H&Rm\"mK w% endstream endobj 130 0 obj << /Length 191 /Filter /FlateDecode >> stream xڅο 0t(G=i:vtrAPGEWooo1 ._rv+/8ekeX3^YRTrC݊̔Pdw5ǖLgrsNU@r7i* D"ݡC83thH+CPX ~%$BfS& * Mc endstream endobj 131 0 obj << /Length 218 /Filter /FlateDecode >> stream xڍϽ0[x ((&2`A+xPm w`4''q4SW 5o3f! !3B8/}6>VQk* 5bJq2"- d芆EpX*kyw? 4!b>3^`4)5ֺdTi@X氅Y endstream endobj 132 0 obj << /Length 241 /Filter /FlateDecode >> stream xM1K1/xw\ku vTtmRIG k=@wLULմVQrw8oR 3Ų=WOk,'B]תZbP"L?"z0#~$E0,9 O⇐0sKϿ#_^t"9nE n˄ w74m0_2o-K6ҷp,xJpG endstream endobj 133 0 obj << /Length 206 /Filter /FlateDecode >> stream xEʱj03xͦ{Ʃ!Ki PH!S1CBz4?A!2߭ 5{zh񌝴FV9p;}n+ᅮO#hwth9Ⱓ*:u2\ Rw.&? ,44y*$D*BZ qLAŤT3 SEkk_sc endstream endobj 134 0 obj << /Length 185 /Filter /FlateDecode >> stream xUͽ 1 B> lϯp*AAAQp*>= N$Cn7"E}ex\Q0A\-J3GY,Ɣ:#A3}+RfwkҊ+ s W[C ؈uC*F\Lv endstream endobj 106 0 obj << /Type /Font /Subtype /Type3 /Name /F40 /FontMatrix [0.01204 0 0 0.01204 0 0] /FontBBox [ 5 -18 50 58 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 46 /LastChar 114 /Widths 135 0 R /Encoding 136 0 R /CharProcs 137 0 R >> endobj 135 0 obj [43.59 43.59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43.59 0 0 0 0 0 43.59 0 43.59 43.59 43.59 0 0 43.59 0 0 0 43.59 ] endobj 136 0 obj << /Type /Encoding /Differences [46/a46/a47 48/.notdef 97/a97 98/.notdef 103/a103 104/.notdef 105/a105/a106/a107 108/.notdef 110/a110 111/.notdef 114/a114] >> endobj 137 0 obj << /a46 126 0 R /a47 127 0 R /a97 128 0 R /a103 129 0 R /a105 130 0 R /a106 131 0 R /a107 132 0 R /a110 133 0 R /a114 134 0 R >> endobj 138 0 obj << /Length 109 /Filter /FlateDecode >> stream x363P0P04F & )\\@$lIr p{IO_T.}gC.}hCX.O3pzrrb' endstream endobj 139 0 obj << /Length 213 /Filter /FlateDecode >> stream x}j@!0;/nVz X AГ=Xګ(ysX2,"?¿g깘q^ӅgZT䶜g\=%+m) endstream endobj 140 0 obj << /Length 231 /Filter /FlateDecode >> stream xڅ=N@F KaY\)?R\ AE(ޣ(>K'3+i̛&ox!u}Q4]s}SzMK3ׁT|:~Pyܲ;~Op=^ze'#PL@)nxN=" g$J4Ke?rF&c92&m #k\d^S̈g`^EvpA%lڷDpt endstream endobj 141 0 obj << /Length 197 /Filter /FlateDecode >> stream xڝ10GH 컀BbHLtr0N Q8BG4yR@+I$]%>0/iBc~Mft?g3@L d=wZ@[b@a6ƴƞC-3zWkp=s:*i&*Qn*<&JgiwHp:my@ endstream endobj 58 0 obj << /Type /Font /Subtype /Type3 /Name /F39 /FontMatrix [0.01004 0 0 0.01004 0 0] /FontBBox [ 9 -1 53 64 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 46 /LastChar 116 /Widths 142 0 R /Encoding 143 0 R /CharProcs 144 0 R >> endobj 142 0 obj [34.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51.72 0 51.72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37.43 ] endobj 143 0 obj << /Type /Encoding /Differences [46/a46 47/.notdef 99/a99 100/.notdef 101/a101 102/.notdef 116/a116] >> endobj 144 0 obj << /a46 138 0 R /a99 139 0 R /a101 140 0 R /a116 141 0 R >> endobj 145 0 obj << /Length 233 /Filter /FlateDecode >> stream xڝ=n@raisq:K`$\ %E*PR$JZ|̳҅Y}7>'t*D<ũ$/LJ6k36K$lʕ|n^)=B#5QPDW:%#Jc9уr4vh| }*qlz={[#3CS5=97 endstream endobj 146 0 obj << /Length 224 /Filter /FlateDecode >> stream xڝ1@EPL $&ZY+h+pJ "θL&4ٿv<Fq0!liza zlza:m+TM܉JRNIPhSh50O"gRE4;hhZz&/z( ɟ|{=eo }⁝vw]Svˎuҹ?࿀ykxB{ endstream endobj 147 0 obj << /Length 149 /Filter /FlateDecode >> stream x3634R0PP5T02U04UH1*24(@s< ͸=\ %E\N \. ц \. ?@g? r@h6 5 ?~0~`$1 endstream endobj 148 0 obj << /Length 105 /Filter /FlateDecode >> stream x3634R0Pb#CSCB. m@ $ɥs{IO_T.}gC.}hCX.O!'W ( endstream endobj 149 0 obj << /Length 218 /Filter /FlateDecode >> stream xUJ@ tayݬi\  SœCEobk| eYɋS[p'%/K{募ZLsO[2-7;jjVI#P#6 ORK?zsɻrHvQ5 n Z endstream endobj 150 0 obj << /Length 96 /Filter /FlateDecode >> stream x3636Q0P0T0P06T02WH1*2 (XB$s<,=BIQi*S!BA,\\\5^ endstream endobj 151 0 obj << /Length 216 /Filter /FlateDecode >> stream xUP i̼M! + +Pe=GGզDm>DWϟG-}n' hCqhQh-KIM9I 'xݯH}H x?th /j ܆j9Wi`h>΢w敼8XBJ"ZD%{wvE{yW[8>inOJW[ endstream endobj 152 0 obj << /Length 203 /Filter /FlateDecode >> stream x= `MN vlRk"NI4:՛p14}>n]t|<x144} '5;B@r/db MTB *7@w"#DI.> stream x3332Q0P0bSKsCB.S3 I$r9yr+q{E=}JJS ]  b<] 78z0;b?0eBS`H(0KAH (.WO@.M endstream endobj 154 0 obj << /Length 235 /Filter /FlateDecode >> stream xڥ @\z Z< fNSuPԹG> stream xŒ=N@ M!$)fE"T (AKrSXؓ,=S$_> stream xҽ 0-}V NlGpPz&M@ᗄ$$BgK|<p8s93d-!%_Vve9rȑx)QTŔxe4GzMa)["ei=AikLM!Ch.TC#ig^woJ-$KHWeN'Q<6?K endstream endobj 157 0 obj << /Length 208 /Filter /FlateDecode >> stream xڍҽ 0[[' I'|д@ໄ\.]=0փa:=)%!i> 2xށc@&]CuŘPq"p3q%ѫN(WUyx98 V6q1 D=$D/$|d endstream endobj 158 0 obj << /Length 173 /Filter /FlateDecode >> stream x3731R0P0b3S3 CB.3rAɹ\N\ f\@Q.}O_T.}gC.}hCX.O@>`AJ3Biz(m4?f 43+F3| @3hf4;`+hz~v1HiP~ r ϐ endstream endobj 159 0 obj << /Length 300 /Filter /FlateDecode >> stream xҽN@P\2 p Xg"V*4Q5&*< ƙ`Q{,̿,OsL1Ǔ 3/)7(r^L<k^gHVAƇ k4#g̫`Id KD-XHTHQd[;'n1i/j{;_ZX\?b. 꿫Q_%5tIs&AciUݠhNN SӤ#vPHDH&4MnLϕO!|&%Ig] r endstream endobj 160 0 obj << /Length 172 /Filter /FlateDecode >> stream x35׳0S0P0V5T05R0PH1*2 (YBds<L,=\ %E\N \. ц \. ' "FI)D??8IPC?0a Td` 0pzrr endstream endobj 161 0 obj << /Length 290 /Filter /FlateDecode >> stream xڍ=N@%[l2 G`O hL0XF[h#PRlwgv@~vvڋ_wOh8>az'vPŻPÍo>ceF4BHn, !QiADIT!Iޛ=ܲ EsgY}/+̳ Lq+qaNXp\$FkU_*K١UqO,-4,iTU< x nx? endstream endobj 162 0 obj << /Length 149 /Filter /FlateDecode >> stream x3336T0P0b3#3 CB.Ss I$r9yr+s{E=}JJS ]ry( h 4?8h{443fPB3\=a endstream endobj 163 0 obj << /Length 278 /Filter /FlateDecode >> stream xڍMJ0. o Hd8]ʅjtBQ讽WM0ϼW:(yĚt+ܲfshsat}e^-o.V?^RV T+xi[D2h; _Џ.#ğ Gf ,D# H_W3H| gQPMAP]r:)8P]ʂiP]͂.Yc႒4<]:l_@c0ώá%+/]z endstream endobj 164 0 obj << /Length 277 /Filter /FlateDecode >> stream xm1NP!$p*l!YD ,6Vjid;<e`Ia93o,(H~<+mTъvE-Ur+pcH[>ŲϏW,7Tc]M[ !@‰:,]W`t~]'!LdDUHZKZi:j4DGDiU6LKGT:ҴJ*M¤%#Qt'%#Q2bⴉ&N#&N8m+L\T+wetA f U,(we#ĿRWY›XM endstream endobj 165 0 obj << /Length 286 /Filter /FlateDecode >> stream xڽN0 sb!~U1U:H01s(};R!F:$_؎k{sqV xZa%>Wu kyzm 7,C ۻ+du쳇vι:>H%0h}GONhIl+"$>x$OA93H:7ICc0C0” d4rGZƹ3h醥A:w*8,;$qQRrWEg{ !Љ̳A:>6@ chٰu } endstream endobj 166 0 obj << /Length 185 /Filter /FlateDecode >> stream x3735V0PasC3 CB.3s I$r9yr+s{E=}JJS ]  b<]co100U@  P3 v,f[=n/O~085 )cpzrr\ endstream endobj 167 0 obj << /Length 251 /Filter /FlateDecode >> stream xڭ1n0: w֠4YDH!d̐h9 G`j1RaKd}22yPD zIP"eDݓ̛ ŖdbQQdoiSEN܍WƩuJ3dkYAW fuM<7'Mn݀ASwMR \So'%uvrCh2<>\+#_2ocibBר?i h endstream endobj 168 0 obj << /Length 305 /Filter /FlateDecode >> stream xmJPO"pyfaa]Vbv ɣQ)#\83w.x9zuhI5t^Sҽj-%]2on۸+n$>?^];z,i<H90w{1c]< h=Q=6 zh,݌$d1b׆ا#XA}ăiM֩S-dpAí$ r0cGݑ"y*\'5 К?)ԜhVVQnܽ endstream endobj 169 0 obj << /Length 162 /Filter /FlateDecode >> stream x37׳4T0P0bs3sCB.3K I$r9yr+Yr{E=}JJS ]ry(D11o``!`G0 5#Fʨ e02`'\\\T. endstream endobj 170 0 obj << /Length 208 /Filter /FlateDecode >> stream x= @G, &"),J--mMQ> stream xڝN@!H5Z5!%5I=y0ԣ&x#:3/d-:;>Wr!O䑒J|VM(EB./kObߤDt["JbGnֺ8Wtx@NC8YkccU%ScUS$FSy(wPARpXiV@}jH-DqL jymVFyKV/U5/J/j{HLeŋ2+WrA0'' ">5"Sq'<7 endstream endobj 172 0 obj << /Length 322 /Filter /FlateDecode >> stream xڍN0E'Ji$ᵡ,)@T@I6 "#n0?rDǶ{'مi ?ݱ9sox?xzuYuX_.x|z}{iZ75#3\k:@@ TT95'X!NH\bȄD&:QNbȄHL.}$]*SO[$]M }*mߤS?IٯY7%1gAETqy1WbNٜnRNdRړLJt2)ɤ|X7C zah endstream endobj 173 0 obj << /Length 251 /Filter /FlateDecode >> stream xұN02D%{Ef H01 &ء&V$}J dz ؝DĎ)<\SIr p$=V'^8m=/St}ϨB7glrt-Z(x#Hc܋@2@֫4( PtCպ{2M]T[!1UaZXcY Xȍ ^$7jo*s0ΔwoJGmL ۇܑ"=?ԩ›> stream xڍѱJ@9R7p p$p` A+J--m<=J!e|3\{% U*4V'o{apqxjC.gU^|$_ LTOG"'9|d@: f$j%Y#e%!-#,BW .$# 䄔;Y"Hg3xF^Blqb kmCSlʤ*)Y$%ˤKJvIɼtys>|^& endstream endobj 175 0 obj << /Length 232 /Filter /FlateDecode >> stream x}ϽN0Jl;Ta?pۜ7kBjikVb7/;8jC'_o6RsS-3[&0`Q0|T*M *pӌ_2 $Lo1ÔJc4|ݜ~82;eSz)<8`͊N9y{2hl endstream endobj 176 0 obj << /Length 229 /Filter /FlateDecode >> stream xő; @72M4(SZYZZ( h"8P+q3z ;MVYmcsd4ٟ9ą!8~̸+fܒ^ ke"e, tGd?˄b$U5Ҋfl$*lMgn CJhVʷ3Fip endstream endobj 177 0 obj << /Length 214 /Filter /FlateDecode >> stream xڭ1 @E'l&G\@7E1#BBBQRgEv>'S &3!3c4#NqRdn uS:]L> stream x1 0yд*N`A'qRGEx 7бC=q(8 vي1&]lwqy,N1y 6n_pa8&:2)љBztUUN+IZ^>j$qIMMR'*mse cL@I 9Lwni endstream endobj 179 0 obj << /Length 226 /Filter /FlateDecode >> stream xu=n@gbi|eYGH@TDjh> X VyyD%JC80/*v[ dvջ\/_Gvxv+١hJʞ2Ն(W FOFFl@&%`}b zdeL,>2~dgygL[41Ƕ hKyJ BasQ D endstream endobj 180 0 obj << /Length 167 /Filter /FlateDecode >> stream x3632V0PacsCB.cK I$r9yr+[r{E=}JJS ]  b<]700P?aA<$AD0H0 A6b#4o@ endstream endobj 181 0 obj << /Length 281 /Filter /FlateDecode >> stream xڕ=N0’!sHE"T ()@`)<؋$'{Iן5-5tA-ukZw75oZOv3RpC/^Rk-=ԣ/qZqg XxqdWjIpnIUi+W%KK"5-CiK #;A58E, k΢SvYlK S^`%*#G4dPɲ1:^.eiiC%>+^ ~ endstream endobj 182 0 obj << /Length 167 /Filter /FlateDecode >> stream x3332Q0Pa3 TH1*25\Dr.'~)PKW4K)YKE!P EObPFS@ >? uBP?(lԁD(.WO@.Jm endstream endobj 183 0 obj << /Length 131 /Filter /FlateDecode >> stream x3634R0P0b#KsCB.#1s<L=\ %E\N \. ц \. 5 7?D # P?P1?H{pzrrD endstream endobj 184 0 obj << /Length 186 /Filter /FlateDecode >> stream xՐ@ kH#;#q"ALD'㤎xPK~m<S "PcmNJf_w8cfPn)(V4+]'zNʜv=@A/ q.n1x<}!77AuuڤK<Ӿ+ >փ endstream endobj 185 0 obj << /Length 220 /Filter /FlateDecode >> stream xϱn0 HrObB*L 22*+cc" F,YϲA/~o:ϜuʰXoiTYp'3d|6dFcLxsr‘"?D+c~DRdZ+-ЭAR.ZT7rBʰU. (]«],D> 4Hsz/iNW^`ص endstream endobj 186 0 obj << /Length 107 /Filter /FlateDecode >> stream x3634R0P0bc3KCB.#S I$r9yr+r{E=}JJS ]  b<]0q7c.WO@.S endstream endobj 187 0 obj << /Length 209 /Filter /FlateDecode >> stream x? P C!;Bs_ZA,T;:9::( n>'GoqQzJcߗdڍZE5eujh}OSXcu4vB{%gQh@&lJ2DxbΪUdK 9T`P+XU.> stream x3332Q0Pa3 ebUej 䃹 \.'O.pSS.}(BIQi*S!BA,C}?7T10@ 6P?|'W [ endstream endobj 189 0 obj << /Length 213 /Filter /FlateDecode >> stream xڥ1 P #B[SV N⤎h=JбC1&E\|>?dј>c &tA$GOX4 "4 %]/#d5#MJ[h6%y=\0`..Y尀AK<@\@Q#6-WQwu;Sw ?kBKn&j״1a>7k.sk|]ŏf endstream endobj 190 0 obj << /Length 227 /Filter /FlateDecode >> stream xڵѱjAY,i|tNWbe!V&e->B|-XDTX>euڝLJ+Hޗ,ה?8G۹)ϲYo؎^$e;E*ɒPS݁T+(5OT@u%BMwF=poH-eua~nl]Tȇ`1)6AbXi DA O  endstream endobj 191 0 obj << /Length 161 /Filter /FlateDecode >> stream x3137U0P0bcSCB.cK I$r9yr+[r{E=}JJS ]  b<]oH?1"~`? L7?bl'W n endstream endobj 192 0 obj << /Length 223 /Filter /FlateDecode >> stream xE1N@ E?b%790;"E"T (AKq%GH"4o4v]_+^sk{w6[{T^o(=fKdJ~|Q_stgj8UR:EZ ʷcVG@VjU'3rع: Fg u1vM#bj2;4@* endstream endobj 193 0 obj << /Length 173 /Filter /FlateDecode >> stream x3135S0P0R5T0P03VH1*26 (@ds<M=\ %E\N \. ц \. Xv8'=3,X w'C=`?`A<7@ ? r  ,t endstream endobj 194 0 obj << /Length 166 /Filter /FlateDecode >> stream x+@i*6#06&$  (D@@/G[58"e9P!Zj Z)%eʡ^Rv3:N[|LuM+C]MD ! a9PIcУd/-x>o;w*!aVB78\ d endstream endobj 195 0 obj << /Length 216 /Filter /FlateDecode >> stream x}=j` `-A䳋M)PH !SڱCC |'ꫯo4J$QLS<Üh'+v 3v/ز^e`7O$e7e*Ɋ*#3Qs;*ؗ /@ih#2+1@[|iơy(sG=ַ G#ʳpH endstream endobj 196 0 obj << /Length 276 /Filter /FlateDecode >> stream xڍJ@ 970&X9z l o=3wR<,gN1SZqBxyy*N}8_Ӆz7\-HDHC!ڐ%ZCƫ%\:Pm)(0#tB%S@=ERPGK(b'$GWP$d9Gmj9h m@Mi^Hv:vP{*j1uE!7blEDna^ԟ(¯n  endstream endobj 197 0 obj << /Length 234 /Filter /FlateDecode >> stream x}N0(C['4R[$2 ĀlUGK$/ 0ղOeu%\s][E;jjXƇZw䟸-?_o-p НiB1E mQ,GE!A0)29÷N3DhIA i17VpH4Y0Ml3ÐEgP1jDEKێ(k endstream endobj 198 0 obj << /Length 267 /Filter /FlateDecode >> stream x}ϽJ@Rn7p h~(b`]VbB !y&)Sdw̙SRqKu&Zso\iLs9 gRiή1笹ַRpBGn6b-eFGZ0Ucc^pG))$)Y= Ư㗥itjuGj wAlhA_Bg6UT2u2Ho^_˄>> endstream endobj 199 0 obj << /Length 126 /Filter /FlateDecode >> stream x3530T0Pb 3SCB.c I$r9yr+[p{E=}JJS ]ry(000```` H0@,0%#zl'W  endstream endobj 200 0 obj << /Length 266 /Filter /FlateDecode >> stream xmбN0|G/qCyfίF0t^ߟlߣO;O$9 1!rHdڈ4f&pBl9{Ð68,ִ/vKqbҷ+tي%+NC7"EB8сVP #RI*h~j:Rᕤ[Il`Φʗ'& endstream endobj 201 0 obj << /Length 258 /Filter /FlateDecode >> stream xڅN` {@ $g%^Ltr0NzGh< @= icu]RHRb)U?XHUw>5?1r~geΛ{p~z< 7g!ґRUcR;Q2QP:X Ja2m0{tƔyl[J8 XϠ-AvHxiOzMYSgčV6oGbǝ2ClčLU[ϟ]~(6?d endstream endobj 202 0 obj << /Length 216 /Filter /FlateDecode >> stream xڭбjP r7DpI *NJ'utP-4|-7_խmzޏs/{Ck#ґS]ŲdbkFR̋&1 {*|ZL4XL_m̛3ul󇚴] I@BI /s'sABNjAOB/#&-'5o#Rԑ endstream endobj 203 0 obj << /Length 253 /Filter /FlateDecode >> stream xڥ1N0 `?uGx^:bF4G  Gءj]&`>EIc;Gy:r>fG}=~@{M;vyJn-2ЀL]_~EI-jV8Yz&? }Bs훃$ShjMM|wSSYN-Nm8NZT2f5JD 2Mr[μ̐51= x_d endstream endobj 204 0 obj << /Length 264 /Filter /FlateDecode >> stream x}пJ@9Lso &p6p` A+ RK EGG#s&~lvf IYI)A+ A+~ub)u?{MZցٷ~sy*h[nB@""^H1j$eLЯ; tY;suVfL5*}:;8CDx:H:n2ffuYrViL=݁z!mN@Hö h+y- endstream endobj 34 0 obj << /Type /Font /Subtype /Type3 /Name /F38 /FontMatrix [0.01004 0 0 0.01004 0 0] /FontBBox [ -6 -25 114 75 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 16 /LastChar 121 /Widths 205 0 R /Encoding 206 0 R /CharProcs 207 0 R >> endobj 205 0 obj [39.19 39.19 0 0 0 0 0 0 0 0 0 65.35 0 62.24 0 0 0 0 0 0 0 0 0 0 43.56 43.56 0 0 31.12 37.34 31.12 0 0 56.01 56.01 56.01 56.01 56.01 56.01 0 0 0 0 0 0 0 0 0 0 0 79.64 80.91 85.86 73.53 70.42 88.05 0 0 57.86 87.71 67.31 106.26 87.59 84.13 76.53 0 83.56 62.24 77.91 86.09 0 115.71 84.59 84.59 68.46 0 0 0 0 0 0 54.46 62.24 49.79 62.24 51.11 34.23 56.01 62.24 31.12 34.23 59.12 31.12 93.35 62.24 56.01 62.24 0 45.75 44.19 43.56 62.24 59.12 80.91 59.12 59.12 ] endobj 206 0 obj << /Type /Encoding /Differences [16/a16/a17 18/.notdef 27/a27 28/.notdef 29/a29 30/.notdef 40/a40/a41 42/.notdef 44/a44/a45/a46 47/.notdef 49/a49/a50/a51/a52/a53/a54 55/.notdef 66/a66/a67/a68/a69/a70/a71 72/.notdef 74/a74/a75/a76/a77/a78/a79/a80 81/.notdef 82/a82/a83/a84/a85 86/.notdef 87/a87/a88/a89/a90 91/.notdef 97/a97/a98/a99/a100/a101/a102/a103/a104/a105/a106/a107/a108/a109/a110/a111/a112 113/.notdef 114/a114/a115/a116/a117/a118/a119/a120/a121] >> endobj 207 0 obj << /a16 151 0 R /a17 149 0 R /a27 152 0 R /a29 153 0 R /a40 145 0 R /a41 146 0 R /a44 147 0 R /a45 150 0 R /a46 148 0 R /a49 199 0 R /a50 200 0 R /a51 201 0 R /a52 202 0 R /a53 203 0 R /a54 204 0 R /a66 154 0 R /a67 155 0 R /a68 156 0 R /a69 157 0 R /a70 158 0 R /a71 159 0 R /a74 160 0 R /a75 161 0 R /a76 162 0 R /a77 163 0 R /a78 164 0 R /a79 165 0 R /a80 166 0 R /a82 167 0 R /a83 168 0 R /a84 169 0 R /a85 170 0 R /a87 171 0 R /a88 172 0 R /a89 173 0 R /a90 174 0 R /a97 175 0 R /a98 176 0 R /a99 177 0 R /a100 178 0 R /a101 179 0 R /a102 180 0 R /a103 181 0 R /a104 182 0 R /a105 183 0 R /a106 184 0 R /a107 185 0 R /a108 186 0 R /a109 187 0 R /a110 188 0 R /a111 189 0 R /a112 190 0 R /a114 191 0 R /a115 192 0 R /a116 193 0 R /a117 194 0 R /a118 195 0 R /a119 196 0 R /a120 197 0 R /a121 198 0 R >> endobj 208 0 obj << /Length 167 /Filter /FlateDecode >> stream x313T0P0U0Q0T01SH1*26(%s<=\ %E\N \. ц \. L@$AD=$? ?@P&VV̌...SG;&.WO@.n= endstream endobj 209 0 obj << /Length 96 /Filter /FlateDecode >> stream x313T0P0T5W02S0PH1*2 (Bes≮=\ %E\N \. ц \. (\\\&Q# endstream endobj 210 0 obj << /Length 162 /Filter /FlateDecode >> stream x] 0->KNZ N⤎>cbMN8>] y GGbO%T2[0YFK&pOdLSAZZFHW 2"L}Tߩoﻭ "Іֺ? endstream endobj 211 0 obj << /Length 114 /Filter /FlateDecode >> stream x313T0P04W5W01T0PH1*22(Bs<=\ %E\N \. ц \. a`?r 5ez endstream endobj 212 0 obj << /Length 116 /Filter /FlateDecode >> stream x313T0P0V5W02W0PH1*22 (Bds<=\ %E\N \. ц \. c``pzrrlI endstream endobj 213 0 obj << /Length 104 /Filter /FlateDecode >> stream x313T0P0UеP0T5RH1*26 (A$s<≠=}JJS ]  b<]'W * endstream endobj 214 0 obj << /Length 113 /Filter /FlateDecode >> stream x313T0P04F F )\\@ IrW04 s{*r;8+E]zb<] P\=AQ@ endstream endobj 215 0 obj << /Length 136 /Filter /FlateDecode >> stream x313T0P04U54R0 R M F0\.'O.pC.}BIQi*S!BA,???PP'W ,5 endstream endobj 216 0 obj << /Length 99 /Filter /FlateDecode >> stream x313T0P04F )\\@$lIr p{IO_T.}g E!'EA0XAՓ+ ; endstream endobj 217 0 obj << /Length 157 /Filter /FlateDecode >> stream x313T0P0U5W0T0PH1*26 (Bds<=\ %E\N \. ц \. @#HD؁:Q'@&> f0d82>3 df Dpzrr@: endstream endobj 218 0 obj << /Length 107 /Filter /FlateDecode >> stream x313T0P04F f )\\@ IrW04 s{*r;8+E]zb<]:\={-= endstream endobj 219 0 obj << /Length 110 /Filter /FlateDecode >> stream x313T0P0V04S01T06QH1*26 (Z@ds<͹=\ %E\N \. ц \.  \\\A endstream endobj 220 0 obj << /Length 177 /Filter /FlateDecode >> stream xEɱ @4z t`955DS5Eh>x]8|7Q4sN#Őc5ӕUFr2rB2.9"Y!He  t?b@XmXa[`9>^'oᙠĈ~W:ށ0JrA endstream endobj 221 0 obj << /Length 103 /Filter /FlateDecode >> stream x313T0P0W04S06W02TH1*2 (B$s<,=L=}JJS ]  b<]0 szrr$~ endstream endobj 222 0 obj << /Length 117 /Filter /FlateDecode >> stream x313T0PT02W06U05RH1*22 ()Lr.'~8PKLz*r;8+r(D*ry(01l;cNJ l r \+ endstream endobj 223 0 obj << /Length 168 /Filter /FlateDecode >> stream x313T0P0bCSCCB.cs I$r9yr+s{E=}JJS|hCX.Ov;: PNF01`u@Qf f2J~ 񀿁;'W Ǟs endstream endobj 224 0 obj << /Length 251 /Filter /FlateDecode >> stream xڅJA'\!Ls ޱƅ+,J--;y4B[O"hWf,4s n,͡c%:IRc{l3yz|c;9?Tj fDTP&E{h+9G2D~>/BGE$E7~ }KvmV:$,H@%j}W}azH O#bA=b2~|0 endstream endobj 225 0 obj << /Length 239 /Filter /FlateDecode >> stream xڍ1N0Dg"o|$Q6ZZHPQ *!p!eU8i=opZ-uC玝|H?Я\~4wJ3޻MÍ?ε/2"P<> ufA@5ã`cO4s1d1gʮɧ:eP~Kٜ-˺QvOh9X܅H$% RM Zlmb dr)}A!> stream xm=` .߁1D'㤎]ċ8p n #~$(}L> stream x}0K:#pO`i1NI4 Kd0FMj\ijx@½%\PPGL2P[2;|=7P~K<Ls 9y|9#l K#vӜ_[ZCN _CF,a8[NXTQ endstream endobj 228 0 obj << /Length 218 /Filter /FlateDecode >> stream xڝ1N@4QY AT (Ar 3AzWJ_kN|y9H/vI'Zun8-)\ؙBwoVWg)6r}Gݚ3J~ ZTMa.)- o̤/`tR27V֯ifhh`+-RN]dvg9 endstream endobj 229 0 obj << /Length 183 /Filter /FlateDecode >> stream x313T0P0bCSCCB.c I$r9yr+[p{E=}JJS|hCX.OD|?b0 AD}&> f0H0b!On%rv?s?>  `szrrǁG endstream endobj 230 0 obj << /Length 147 /Filter /FlateDecode >> stream x313T0P0b#SCCB.c HrW0r{*r;8+. ц \.    `|$lthvb)،6 Q .WO@.̌r endstream endobj 231 0 obj << /Length 145 /Filter /FlateDecode >> stream x313T0P0bCSCCB.c I$r9yr+[p{E=}JJS|hCX.OH" $`@CLmQD !( ,x endstream endobj 232 0 obj << /Length 227 /Filter /FlateDecode >> stream xڍ=N@\4PY AT(PR$ގk 7eUI"Q|{;5袥aC]8> stream x313T0P0b#SCCB.c HrW0r{*r;8+. ц \. ?c4 N%'W  endstream endobj 234 0 obj << /Length 108 /Filter /FlateDecode >> stream x313T0P0bc SCCB.crAɹ\N\ \@Q.}O_T.}g E!P E >Փ+ HX~ endstream endobj 235 0 obj << /Length 218 /Filter /FlateDecode >> stream xE=n@E.,MvNm M,#EPR%)SB9QPr.]lȢOLt&c&FRf1K~|U.k9s endstream endobj 236 0 obj << /Length 123 /Filter /FlateDecode >> stream x313T0P0bCSCCB.cs I$r9yr+s{E=}JJS|hCX.OLŘN|? ?*f endstream endobj 237 0 obj << /Length 177 /Filter /FlateDecode >> stream x313T0P0b#SCCB.c HrW0r{*r;8+. ц \.  B`W${1y 01h͇q|Fa  l?`!'W , endstream endobj 238 0 obj << /Length 194 /Filter /FlateDecode >> stream xU-@%&c 迨 P$u[GEev K1h8&nL؃-;CFXA_>pi ?!&+R"c(ɉ(N+ƵGSroW\"Ϡ+tIߣmśh5| dXB]/qs| endstream endobj 239 0 obj << /Length 170 /Filter /FlateDecode >> stream xŐ1 @ERxt)R-n!he!VB9EqW7seϨxAƘxң3U5ݮr 쀾"h `,T'uID x/H 9 Zpqol endstream endobj 240 0 obj << /Length 174 /Filter /FlateDecode >> stream x313T0P0bSCCB.cs I$r9yr+s{E=}JJS|hCX.O0"370`H؃@`?#^^Q`Cƃ-Y  f $700 F"b\\\wN endstream endobj 241 0 obj << /Length 197 /Filter /FlateDecode >> stream xڕС0jrf{::"#a e0XvtmCOh)T^ aLiOvG ֤FscT,r0ʖSiNfEN`Y9Q3pqNN3O0n ZJ4&}5ty+A -ؼ+ԀW2>z endstream endobj 242 0 obj << /Length 236 /Filter /FlateDecode >> stream xu1N@ E"a|$H" * DH$*\!G2HQwmT 娔DJsՠg?x#Um<>r\Iq+wn˜24wC0MLNLtA 9a=tC68yF̛aO2/a<&E>oxv endstream endobj 243 0 obj << /Length 124 /Filter /FlateDecode >> stream x313T0P0b#SCCB.c HrW0r{*r;8+. ц \. @†H0 z(QՓ+ +T endstream endobj 244 0 obj << /Length 167 /Filter /FlateDecode >> stream x1@G(LtYY +D ,ZZhq@IaGhf'_Ϭgɂ#}SqblF.b27+e=Z3bÏB&.ْ`9:Rs)U*H]J^w¤%HRQC/~*hGo8 endstream endobj 245 0 obj << /Length 189 /Filter /FlateDecode >> stream xe;@!$p,1q ,ZZh.F5\5o2s? q98^}G|9^0vV2#kgdfAYL{NELi iww?>, ʐ ] xBi LHʛ1VL0JRaVuZ-Vi endstream endobj 246 0 obj << /Length 197 /Filter /FlateDecode >> stream xڍϯ P#)>tœ &5m.b_CYN wzto,NvE69Wh .-rZeD/@sL@56Mo%n} :}v%$@FTiXz[V!zyM-+_X=Ey>J3CN.{K endstream endobj 247 0 obj << /Length 226 /Filter /FlateDecode >> stream xE1n@б\ M<'m JHqT)"*L(iRZt)GLᏱEW23ɢ}ɟ\YV>>xUs&Ւg9pzy^Jz-NS={kg`g?EJEAJ>.dt &JI0r熻qM 5.M_f[݆{GZ>_?WKq{ endstream endobj 248 0 obj << /Length 182 /Filter /FlateDecode >> stream xڥϱ @ Y| j;:9::(}{{3!HŔĔ'tIio _Q[z>^WnEWtL(>a]Q3-c'4a|` BAI=EzNGKC8e  p&ȕ5 l endstream endobj 249 0 obj << /Length 191 /Filter /FlateDecode >> stream xm= @ x Ղ?` A+ RK E[)S,;h%Xfh< }:ex\T:8^pVQ>EmqF;)C}FE$ sXBט^Hȃ@?|bezYETZ_q-`R!a~K<.Kj/\ endstream endobj 250 0 obj << /Length 187 /Filter /FlateDecode >> stream xڝ= @g"#Xraˀ!N;GYg!BR@[]/w%ܔ|q&?,Lƹ+x"ҡ@yRx -0遍~*?umֽr!0e] EӐ`%Ж*sz endstream endobj 251 0 obj << /Length 182 /Filter /FlateDecode >> stream xڍ1 @EIk9 n!he!Vjihh%GL2Φօ}g?ofǜlS>'t#k5?;2{Zd܆L]rBC\"iJzD=[5/jLAOQ~ߏ@B_Zh4J5Ϋ^RMuZ9uEJ endstream endobj 252 0 obj << /Length 193 /Filter /FlateDecode >> stream xڕα@ .<} L &`qRG;[pqᾤ 5)+H+9s<^&|XLפ*L,r0S⺡MNMC $z11wx!"><Zi&N?>cH RaH'c ˁ:ѴmO, YK endstream endobj 253 0 obj << /Length 201 /Filter /FlateDecode >> stream xmPE4K BBrmM>}}V́;ܹiԥS=T'u9&a+NFF⻥OK+ VZ[( f#2;܃J>PDCv@Z }•cC 7'* 4u.7mp b2rcZI_ endstream endobj 254 0 obj << /Length 154 /Filter /FlateDecode >> stream x313T0P0asSCCB.c1s<=\ %E\N @BA,@Az H?*;&p4Aka[~ `1.WO@.^ endstream endobj 255 0 obj << /Length 253 /Filter /FlateDecode >> stream x}J@#E`}!k.p` A+ RK E#U(y[,gǰzqꜟJz`;볟 Z.(wk~x|ws%{/xv4lnfxYDdItSn\#7@efd=`El6X4jB*`f}E_h0bj1SL̀,x>v*!*:MƢ:?-y%ۧF@-7> endstream endobj 256 0 obj << /Length 161 /Filter /FlateDecode >> stream x313T0P0bcSCCB.1s<L =\ %E\N @B4Pe,B @d ?  B~oAd $?HzI8'W z endstream endobj 257 0 obj << /Length 132 /Filter /FlateDecode >> stream x313T0P0bcKS#CB.cC I$r9yr+r{E=}JJS. @-\.  @x@@?C1;}pA|.WO@.O) endstream endobj 258 0 obj << /Length 169 /Filter /FlateDecode >> stream x͏= @_#d.͟ B Fp !VbnxK q\`eW񊉣~2c!GOj .mO1dXV|-M -X endstream endobj 259 0 obj << /Length 198 /Filter /FlateDecode >> stream xڝ;@%$p.H)L0VjiVW(x[_~0E_cƃ=2b4gA ΄Sp)-8lsQy endstream endobj 260 0 obj << /Length 115 /Filter /FlateDecode >> stream x313T0P0b ebUel䃹 \.'O.pc.}(BIQi*Sm`Pz<7,{\W endstream endobj 261 0 obj << /Length 171 /Filter /FlateDecode >> stream xڽ= @[&G\@7!Q1#X^,7[n8ȃW3r9Al&]'-\,cx܎` s0 n ==Cbq1 SeKvI'mr/)T8R`5zf endstream endobj 262 0 obj << /Length 155 /Filter /FlateDecode >> stream x313T0P0bcc3CB.1s<L =\ %E\N @QhX.O$$PD2`$ȃ@H&?:7 q.WO@.ll endstream endobj 263 0 obj << /Length 183 /Filter /FlateDecode >> stream x}=@XLvNBLH0XF[٣Q8ab^2}KJ)*%Kw4 +@@)juE]VQzB[_P :9o.A@9(dq%7@'a/=ߵG.^Tyh p A!\\[>P: endstream endobj 264 0 obj << /Length 200 /Filter /FlateDecode >> stream xڥ= @g fI"SZYZZ(ښͣ[.(wS|7q4HRYs_8 LWCNv?$#(%p:lHj&5pGٌs V,S*7;(&A]t, -GT@8=F> $_ȥF<5ޯ endstream endobj 265 0 obj << /Length 158 /Filter /FlateDecode >> stream xڭ1 @ПJuj!Fp A+ RKAEh9JAqc![̃I`4-ØԈmjw쎜{Vky\Y\/|9êe_Hx+5C8#$RC\B"xo<Iw endstream endobj 266 0 obj << /Length 185 /Filter /FlateDecode >> stream xM1 @4!s7q5@T0XErr,,2ԎgDM&rv=pr^ًYMyaoY!RrGB7 }KD#"eZSW!("PB Ca}96A=> stream x313T0P0bc 3CB.cS I$r9yr+r{E=}JJS ]  b<] @AH2`h AA~[@ Lx:B endstream endobj 268 0 obj << /Length 148 /Filter /FlateDecode >> stream x313T0P0bcc3CB.1s<L =\ %E\N @QhX.O` $0()D? d=H2cģd> endstream endobj 269 0 obj << /Length 186 /Filter /FlateDecode >> stream x5= 0W:oN`B`A'qRGE7^̭ ء4ؔ? ,&Q@>0[}pb*Q)QzܟvI>>yG:J^]S |-,ZHZX:^<r[C准qzb&gaQ$L endstream endobj 270 0 obj << /Length 174 /Filter /FlateDecode >> stream x313T0P0bcc3CB.1s<L =\ %E\N @QhX.O `?aC00~ @2?Dv`N2~+ߎ #ȏߏ`` ?G#g``?A6 H@RՓ+ ɝm endstream endobj 271 0 obj << /Length 202 /Filter /FlateDecode >> stream xE; PEoH!LUBBBN!۲t @!L@,a̻{ې lfOÄܒZrɌOp>ܘW!kJ/LnRQ;H(+p{h/ O.ok> 44W&F&R$}xY& endstream endobj 272 0 obj << /Length 237 /Filter /FlateDecode >> stream xEαj@ dz)CB=ҩCɔdnvj:t&=$%p!:d-"zX!ZnhyxDQd}LKႲ)ֳ[{vȭ+OPy5 @U-G[;z[*lB;v\ɼHer;SHR Z88 ~Ka{ endstream endobj 273 0 obj << /Length 176 /Filter /FlateDecode >> stream x}1 P S2Y<9*BV N⤎G(Ϥc|?!?'S3>gt#͔+^wr~ÏB.9#W!H"Px+"B I / >i`$f_$hj(D{{-ӎ~b endstream endobj 274 0 obj << /Length 203 /Filter /FlateDecode >> stream xڝ= @_L#8MLRL!he!Vjih'({!q-6߲`}t!'<8 91 ũ piNfqJf)c2ot=̜w{@^m W÷x: dTLdO_'X`*w]!WҢqz9KU" }}d endstream endobj 275 0 obj << /Length 141 /Filter /FlateDecode >> stream x313T0Pac S#CB.# I$r9yr+Yp{E=}JJS ]  b<] X큸7001;j?0FJ endstream endobj 276 0 obj << /Length 222 /Filter /FlateDecode >> stream xe1N1E*i| .-V Ab $(UAݣ(>B,?kWEwk.i;O%/$=iI^>$nF6x0ڄʬ ͎X⌾T~fGvlgOȠ<|HTGǂ+ˇD5WTL3*=2,<8h endstream endobj 277 0 obj << /Length 226 /Filter /FlateDecode >> stream xEнN0 J^ @ZHHCL @>ZlDZTe}9W|Qps}ů}PYkP|N#5[ Sj~??ScNzDDFM&4=:4WL hLVښQ5A1;,wKi sęǐ dw;-y"ͧ\ۼ>[z3Vc4 endstream endobj 278 0 obj << /Length 207 /Filter /FlateDecode >> stream xڥ= @4{t&)!BBB,xxqFE惝}ov)ZRGk;Sʱڬ)Nюe6aܠOi(Zb>$\Cǹ.5Tº)7 P \)'ߘ'-,e$9ґ i `AY ֚ G9-c endstream endobj 279 0 obj << /Length 241 /Filter /FlateDecode >> stream xm1N0E"4 @TE"Th+)S ͓=3uE5w|pWs/ 5gFGn{n5j+UknS=6@! `dHp糢0g0p \ύF<'"DMbLz[Zj6]*7DE??(jALP5ˠGԡ(OY*G@BR栛 5pI endstream endobj 33 0 obj << /Type /Font /Subtype /Type3 /Name /F37 /FontMatrix [0.01204 0 0 0.01204 0 0] /FontBBox [ -1 -19 45 58 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 17 /LastChar 124 /Widths 280 0 R /Encoding 281 0 R /CharProcs 282 0 R >> endobj 280 0 obj [43.59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43.59 43.59 43.59 43.59 0 0 0 0 0 0 0 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 0 43.59 43.59 0 0 0 43.59 0 43.59 43.59 43.59 0 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 0 43.59 43.59 43.59 43.59 43.59 43.59 0 43.59 43.59 43.59 43.59 43.59 43.59 43.59 0 43.59 43.59 0 43.59 0 43.59 0 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 0 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 0 43.59 ] endobj 281 0 obj << /Type /Encoding /Differences [17/a17 18/.notdef 33/a33/a34/a35/a36 37/.notdef 44/a44/a45/a46/a47/a48/a49/a50/a51 52/.notdef 53/a53/a54 55/.notdef 58/a58 59/.notdef 60/a60/a61/a62 63/.notdef 64/a64/a65/a66/a67/a68/a69/a70/a71/a72/a73 74/.notdef 75/a75/a76/a77/a78/a79/a80 81/.notdef 82/a82/a83/a84/a85/a86/a87/a88 89/.notdef 90/a90/a91 92/.notdef 93/a93 94/.notdef 95/a95 96/.notdef 97/a97/a98/a99/a100/a101/a102/a103/a104/a105/a106/a107/a108/a109/a110/a111/a112 113/.notdef 114/a114/a115/a116/a117/a118/a119/a120/a121/a122 123/.notdef 124/a124] >> endobj 282 0 obj << /a17 220 0 R /a33 214 0 R /a34 222 0 R /a35 223 0 R /a36 224 0 R /a44 215 0 R /a45 221 0 R /a46 216 0 R /a47 217 0 R /a48 274 0 R /a49 275 0 R /a50 276 0 R /a51 277 0 R /a53 278 0 R /a54 279 0 R /a58 218 0 R /a60 208 0 R /a61 219 0 R /a62 210 0 R /a64 225 0 R /a65 226 0 R /a66 227 0 R /a67 228 0 R /a68 229 0 R /a69 230 0 R /a70 231 0 R /a71 232 0 R /a72 233 0 R /a73 234 0 R /a75 235 0 R /a76 236 0 R /a77 237 0 R /a78 238 0 R /a79 239 0 R /a80 240 0 R /a82 241 0 R /a83 242 0 R /a84 243 0 R /a85 244 0 R /a86 245 0 R /a87 246 0 R /a88 247 0 R /a90 248 0 R /a91 211 0 R /a93 212 0 R /a95 213 0 R /a97 249 0 R /a98 250 0 R /a99 251 0 R /a100 252 0 R /a101 253 0 R /a102 254 0 R /a103 255 0 R /a104 256 0 R /a105 257 0 R /a106 258 0 R /a107 259 0 R /a108 260 0 R /a109 261 0 R /a110 262 0 R /a111 263 0 R /a112 264 0 R /a114 265 0 R /a115 266 0 R /a116 267 0 R /a117 268 0 R /a118 269 0 R /a119 270 0 R /a120 271 0 R /a121 272 0 R /a122 273 0 R /a124 209 0 R >> endobj 283 0 obj << /Length 106 /Filter /FlateDecode >> stream x3635Q0P04F f )\\@$2ɹ\N\@.}0PRTʥ`ȥm`@#\\\hE*a endstream endobj 284 0 obj << /Length 116 /Filter /FlateDecode >> stream x3635Q0P04F )\\f  ,ɥ`hƥU()*Mw pV0wQ6T0tQ` OoG!\=nB endstream endobj 285 0 obj << /Length 95 /Filter /FlateDecode >> stream x31ֳ0U0P0T02T06W06RH1*2  !2ɹ\N\ Ʀ\@a.}O_T.}g E!P E?< r WGz endstream endobj 286 0 obj << /Length 245 /Filter /FlateDecode >> stream xڭN0 ]u䥏?iO=qHt@1#(}( $盳vC n颣߰ӾVWۡY }^R@-583@ڰ (98"\Ppt,^d^F4FdOg7+\K5@N'U}2*` ReʨPŌ>r.dWF$sx5~ԇ endstream endobj 287 0 obj << /Length 327 /Filter /FlateDecode >> stream xڕӿj0q%C `*B]WC:Nm-vG#dt&?RiD ~i]_\V;WzG*I꒚M dߑ%)YRtZ@m^HwYmVaܶbN4RbXMΔ\uNnnb| mbީLE捴]$ⱱ7!3ilz.2Ob'z>уt!򸴏97 טC.k&) 7Lʬ k ͹!!KkK!#ܥm<Fk(4J@?mG/c endstream endobj 288 0 obj << /Length 267 /Filter /FlateDecode >> stream xڵ=n@Ǣ@f9Al%"C$SX+V*;eDIpJ zְ̊շy^O=JftॽEzKIzWQ+DXQ:]L@GjQPizV8Jy<_oSrJ^CoCK(vRਾB,|.WKuɡ`DuO6KN6_i JGT+ɭ KPJ~ s uy endstream endobj 289 0 obj << /Length 338 /Filter /FlateDecode >> stream x͓?N@gC6QڸHaRK vF8%^0 Z-;;3|qvrXЧhsJL6~Em*iS^o*\R[}OT@WdR;Ȉ,QG9Ci 7rXK0A@$s;:>GOÔ11PVGG { r(ܑ  J}1*7S($;SheIL>oC^fi0ӤIΧ C4qHGnJ谬cC +{7Z۶> ࿢*E!en/ endstream endobj 290 0 obj << /Length 258 /Filter /FlateDecode >> stream x1n0` x'b R"5SS۱Cd(9BFcWGRZ}l_Y1S#=e}EeEzYNzm6|<>I/O^捪ko?n>CK(I֪ov^سs`'rVr\w I˼ދ/np=g?;ؗ= 13rً E7Z1ӌk kmgj.=WMs endstream endobj 291 0 obj << /Length 228 /Filter /FlateDecode >> stream xڕ= t y G('v3#NI4:(IӾH~iՍE[LK;nc<`gq\$A95(8;H(beYc6,wh*.9)"1RH HP+whyś(/*P#qRDҥLSc_擽P[+^& I)Jt*Jl)sŪJSN2\U\ endstream endobj 292 0 obj << /Length 192 /Filter /FlateDecode >> stream xڳ033S0P0bs  #CB.sc I$r9yr+s{E=}JJS ]  b<]CbY ?00e1 Xp?g1YpUgYxY, Dp,y8be,^$'}TaAfRX\\\1=# endstream endobj 293 0 obj << /Length 349 /Filter /FlateDecode >> stream xՓN0 ]uPU"D$02`nyMNIܻEJ8v?ϊ xc\=83,OݣZ*ƲR9UZ_Jt79f^! 5Dň6X;ЖuH@cN.|͎r.m@γۯF|=Mb ִ`]Üb{)$U2ئ' ÄcW|rƬ,e9sOx^cfu=z.{6S1;Ae&oVgۛ`_#7ğ)NG YmvM٭f !&\oVW ?! endstream endobj 294 0 obj << /Length 105 /Filter /FlateDecode >> stream x331Q0P0bS #CB.C I$r9yr+r{E=}JJS. @-\. A(9TH:հ endstream endobj 295 0 obj << /Length 344 /Filter /FlateDecode >> stream xڕӱN@%$sT$Ha:--4Zã(<qH  wlwUܘ\۳8μS{{ͷ>V:}6^vTՃy:=d:F]jQہVpe `)v⨇v⺁IH6G9͑줅9͑KD:KD:̈1adP[=xW5-7|1ĴN'ڬk%E{^K_= Ї\;"=a7o;uSRJ?[ endstream endobj 296 0 obj << /Length 157 /Filter /FlateDecode >> stream x330T0P0bs #CB.3K I$r9yr+Yr{E=}JJS ]ry( 0!(c2~f0H`0fc0P<ƨ1C0;cC r 6n6 endstream endobj 297 0 obj << /Length 311 /Filter /FlateDecode >> stream xڍԱN0o#O \<'H3D'㤎H GBI%)+,`z aJOJ}o 9ƙ={MyqB<>@<1f#q8&t3x=%T]_'V1 S>8|bGx ~ه_(Jf2Lc# ן8~w[stJptU,r,]#c},=3ֳTc)frLiGvKA;+DE 1]*YB8k ~oL endstream endobj 298 0 obj << /Length 316 /Filter /FlateDecode >> stream xu1N0qG"yLJȀbF Rc@n@G*9~,d4iZZ?Vݣ^6RVyy~}ԺܘT܏R*<Vs[(;(rOηwp(X;уr,8=Sp`b dOx`Op4Lh }S8:S8^b ab`x'ܷ؂ ~|8'`5l8qN Xx> >kJ@ endstream endobj 299 0 obj << /Length 325 /Filter /FlateDecode >> stream x͓N0 @PK?h Hכ*D$02`~J?c&rNldH^؎{U.+,p'%ΰ:ޠ%On _ K,!C#44~d32DCĚZAO3%,Fb= _&g2dFLdt^c;ȓhMZE=p8}ډݴ1Mt=[liq<3Mu;oϚ0qfUȱ:ؠqZwѻ$D#BHI!ihD W xkD endstream endobj 300 0 obj << /Length 209 /Filter /FlateDecode >> stream xڳԳ0U0P0b c #CB.s I$r9yr+[p{E=}JJS ]  b<]8J,fn0ªc5CX@Y bGb}e1ce H,ln~ #BBP`pb~Y 0SFY䱠I'W T4# endstream endobj 301 0 obj << /Length 290 /Filter /FlateDecode >> stream xڵӱN `H&GJkNM3NIM{4"Rȍ%) ~ٜoK<+>Lcuz^aہxĦqkAtwb{%>X> stream x}ѱJ@?lv_@p] !p` A+ RK E;!hM7HqfwO`vv23)Vf0WI%X8=Uk3UqaUASSbmn*Sުvm| 82"7@б, }8$tHIR2>JJ =MT;4[6R׳ā~D}~k.:6ʃHϐDJwk81ۇ=Isz6WBJI7l:ahJ7Cަ85,φkVq< /XYd|vRJJ}I endstream endobj 303 0 obj << /Length 176 /Filter /FlateDecode >> stream xڳ431W0P0b 3 CCB. rAɹ\N\ \@Q.}O_T.}g E!P E?!u?3bSWbWbWa1gXu0V6V eG,eƒ'c1%r C< endstream endobj 304 0 obj << /Length 233 /Filter /FlateDecode >> stream x퓱 @ S:Y|]I(>BGLZD''|r7Ѧ;M CA> 0Ym՜՘eTфU8A5!hHpɾe PVr{y%رW Kp,+&uaJNEIM4y0犉%ޭ^ AlH4ȗ6eOE8`| endstream endobj 305 0 obj << /Length 347 /Filter /FlateDecode >> stream xڕұJ0 Y hw vyIݎkx7 /ׄH#MHYO =S}TDNC!e9qc}:/Or^F_eWQ3]|oAwZhp !j- G #gMr>6n3xf[22>Gޖ_t2r NɆݲaw{VdS"ؐ9rm"s22q D,xc'SoD̼18,0Ndo> c[o DeaXw ]Gom𺷂uzg|UNj yli[5J^ endstream endobj 306 0 obj << /Length 459 /Filter /FlateDecode >> stream xڭӱn0q p#/8$)PکCѩءE ,z=GPZNݸ[wUzmnݷZqu~}ӫOC^׫{w@g/z"Ew l셀;ii24> stream xڕJ@'LsL 'BB> stream xݑ=N@FJisX[N"GTPR; 9BJGZ0; Jifw<~EqUQAg9T )fT3j4wTN\IM}MoOhf7s,hSv`ځ_ hv= {H 񞡱B [r%kT3. 0=;  ڿv>;bC _\Af #c,'4/+;hq1h?7p% endstream endobj 309 0 obj << /Length 243 /Filter /FlateDecode >> stream xڵN0/`?BdS` Heꀘh XI-#d`stgۿ~Iy)x 5_XQ&oG\7vWEF<z{O5 Tb!ȣO!2J`@;PP<;Gg3E9c̈*l09t / inm';)),bߘ^Jq݂zlgF endstream endobj 310 0 obj << /Length 253 /Filter /FlateDecode >> stream xҽN0T"GȽu~n! & 7+Q!ʟĄd嗋l4\jU<sMo4HQ {N^Kls/dKɮꑚgʱw_ s=$p8E . (sׅ42*ȱ| ]6&ܴLpڋ_IHGN!X>] 7#f".F?^Q 3ҙ b= endstream endobj 311 0 obj << /Length 244 /Filter /FlateDecode >> stream xڅJ1g"0M!`Dy[ZYZZ(ںy}<•aǙP1|?IO :1H=>cTPc;Ocw!^_[^ʙ;V8?dmgPj\Rq :dĄ* |Vbn;gE d1o( ؁ahDBc!D[o1En %in6N:\Z` æ]H_I<?y뭜 endstream endobj 312 0 obj << /Length 175 /Filter /FlateDecode >> stream xн 0>B L*)j3:9vtPtnG#8f:M|~3z> stream xڥ?J@'X&G\@HBL!he!RK E֛L2ɮ9o[,Ƴw565>UU7v1.tqoYKtq ˣ|QђCDF"RcB|&;J e%wpU3B?O|G(^'f ]THد|X9/O8E.> stream x373P0P0bsC cCB.33 I$r9yr+q{E=}JJS ]  b<]0$0a aÐef0x:`P?H e00?C(v q'W l2 endstream endobj 315 0 obj << /Length 138 /Filter /FlateDecode >> stream x3635Q0Pacc CB.# I$r9yr+Yp{E=}JJS ]  b<]``0f+ɃԂ 0a@\\\٥; endstream endobj 316 0 obj << /Length 243 /Filter /FlateDecode >> stream xѱJ@)nMD BzQ|-#w_Z˷euG|]KkhFrw[r??ܓ[]rKn7-74B,? X -,fXNpMV%\{`r_ |7fZlP \X~r['-pG NZpZY̊4_HWn$ endstream endobj 317 0 obj << /Length 107 /Filter /FlateDecode >> stream x3635Q0Pac cCB.#K I$r9yr+Yr{E=}JJS ]  b<]0a\= endstream endobj 318 0 obj << /Length 232 /Filter /FlateDecode >> stream xҽjA W#>WZL+vrp!ET+ -vXqt;';됱j-->xsiNY-gOّy+#CYEI O$Rx%4DJʤn ׮UH@Y$߸Np⧤D@(Ax^ 9Eۄip xviC endstream endobj 319 0 obj << /Length 184 /Filter /FlateDecode >> stream xѱ@ & &]xHLtr0NUy{ጃ zw6d4JBGqlfiG{1+P)QEz@-ibc|!Pi ౮!`{.TV6ߡA_y48+po endstream endobj 320 0 obj << /Length 231 /Filter /FlateDecode >> stream xڵ0kHnЂ0 &2`A3<#02^KL%!_s{I!.qa@CT9 +@P% 7 v+@x0> stream x͒N@ ]uG_.!MBH 02<Gx۹F:.˓"J:lN錞c|,5<WO(m(KѭEGWbtK=b$(#!@5@oJ 4{aŌfJ`o}4.lO%wm_mte4](z`_TU` endstream endobj 322 0 obj << /Length 169 /Filter /FlateDecode >> stream x;0 t#' VbTD$02`nQzT dj20XY陞c+4xRps?aq@iA W<ix=   E^6ɱC:_:Wѫ}O_ /h m Ij^ endstream endobj 323 0 obj << /Length 259 /Filter /FlateDecode >> stream x]1N@4;ۊB$\ Q%ڬ\vY)yTk.拊57 UIJ/Kn6O\k*ybx[~|nXp8HDF#々~7'QȔ^;LKZ+45qj@.dtv!"ieh֔j]dV絳Su ?hgcfKxhGZ endstream endobj 324 0 obj << /Length 186 /Filter /FlateDecode >> stream x3534S0P0R5T01Q07SH1*21 (Cds<L =\ %E\N @QhX.OON2bH$;&=A$3?8HAN7PJ`$H `( E` qzrr:p endstream endobj 325 0 obj << /Length 187 /Filter /FlateDecode >> stream x1 @   fl1[ZYZZ(Zkyt {O!(VhpZ0(j. 匴F91J3FNPf4W.dI K#ZX+ސ8 w6 .n N<sUv848n endstream endobj 326 0 obj << /Length 252 /Filter /FlateDecode >> stream xڅбJ@YR#d^@7l 'BB+RgvE8X>Y؟/Η%YJyN^RaaB> stream xڕ1j@7Xx6l6@RXR%)S$$fB.2Ni!7.V?u~f*U+uW9o(fKUn*< ݖIu>?_dRLjG/zV!C؃@p` 'h'đv3k"t{O<8 F evb883MmH Є̎io“z>Ba"0i5s?hb8T0c00c*Cٻ1 i<8^gvJpi\DXו!) endstream endobj 328 0 obj << /Length 270 /Filter /FlateDecode >> stream xڅN@EPL'~ >X<&ZY+h+| K$\gfX){ʪߗu%B-k_Weʡ/ϯ7/nyS壼'7e"0қ0Dr92DI-٨l+s@!٘b4Hfoq!C?I?b`6|tC t} lLD2r1uIU'TuIk*T%5P%5!.>Z/1 endstream endobj 329 0 obj << /Length 310 /Filter /FlateDecode >> stream xڅ1N@б\XG\8M,  * D "To+l"0DQXO]yx:NbYٔOG8'M~ea חG/pl%ގqtg%Qm3 "Vϊ<X1f3j ԄMVl!ey o+ =̃Zy[coFG\{SZƛЦQ?䍉`߈=m;4M?l½};YTjĭjө IPZlklku釾2#}UJ.҆Rymaɽ endstream endobj 330 0 obj << /Length 232 /Filter /FlateDecode >> stream xm1j@*x-"cUZp@R)b.X:#T!vRYH ~Y7zVƷY v_ԿQ[ݓ;N{{W߹ʭ޵۹[J0)\$x " LY$> LQ~ 3 afˈLXF,@' .L h22#戜#䑁rm\-jhp endstream endobj 331 0 obj << /Length 137 /Filter /FlateDecode >> stream x3337W0P04  )\\&f  ,ɥ`bƥU()*Mw pV0wQ6T0tQ```c;0D0I~0Y"I ?&D(I"\=VI endstream endobj 332 0 obj << /Length 301 /Filter /FlateDecode >> stream x}MJ0)YؖG_]x>.]W҅h=Je? گiftߟ ChÞ6 s/\knCs%ux^ߟ\s>k o@B,D'DdZ"-,-B/63"x甙k p7q|$pF暿 dL@AvZHFӬYM5k|,ZdIeb4j`Mg!@Tt`[Bͻ.A8Ew̕bԊW'bt7}t endstream endobj 333 0 obj << /Length 305 /Filter /FlateDecode >> stream xڍN@LJlA gEr&ZY+h=> @IA烋 |gf.K xQz!eY^#[E{_o8_c#>UX>)EৣNGG#"qhfH8fEAEI=-Β%$#쵂H\Wfä hgcgݺi8iZG`s+,25\i`2[[E3)D/bZ1.8G IUuuR:X&oݴ]֯"Mߴo endstream endobj 334 0 obj << /Length 225 /Filter /FlateDecode >> stream xڽнj0 ['Pt!tP2;4qh~?G$C@Bw&,+]po1}R28^~в$IF~{͒/wu|'ܯ8&旘knLM@;&ED-tw>5 pU/jh:؊,PW+D5^ԝhma#:YVp=Dӊb~9ag/uwiS]]q endstream endobj 335 0 obj << /Length 285 /Filter /FlateDecode >> stream xڭѽJ@Y lGȼ&H +PN-`bu>r"X?L6']x\c[awO}͚L> stream xڍ=N0'’!sHRd E"T ()@ Qa-G#LyxcOx~ar Լ=>٦fqR57-ϱm__l<ږ[Od%2 9SQvTy2S T 2NXFvY _C!"%R/Q("!V$M x#$0"W ΈPr($7y?"^\%Id^EARiP7@t4F}ҷ CGɞ~\ endstream endobj 337 0 obj << /Length 239 /Filter /FlateDecode >> stream xڭұj0`[heTA@=)Cd̐nQ58@mpCo'J,3~T>LVс%cMq<'$%$w>H?^Y\GGT %1s <(Gϋ(nhɝ> stream xU1N0E'JM`_)ҲH@Q- HaycARI?t5Uoqg|rzUA5TsϪnjwWU> stream xڍJ@E_H10y?(uSZY,Vjih|J>!easN2s߽Y'M+u)?Vֵ+nót㺶ȶɖ l]ū{m`Oè@A"dekv"DL8O92!~l@Nc@z.1aiŒBڠv?Qt>pC 4s9H]>0B/@ IL}~-&\^+vqpڃ :TN&Xa*E3q}Nd!ѫId/;{k?nf endstream endobj 32 0 obj << /Type /Font /Subtype /Type3 /Name /F36 /FontMatrix [0.00836 0 0 0.00836 0 0] /FontBBox [ 1 -25 134 84 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 45 /LastChar 122 /Widths 340 0 R /Encoding 341 0 R /CharProcs 342 0 R >> endobj 340 0 obj [43.85 36.54 0 0 65.77 65.77 65.77 65.77 65.77 65.77 65.77 65.77 65.77 36.54 0 0 0 0 62.12 0 99.31 93.5 95.01 100.81 86.31 82.66 103.39 0 48.44 0 102.96 79.01 124.77 102.84 98.78 89.85 0 97.76 73.08 91.47 101.07 99.31 135.85 0 0 0 0 0 0 0 0 0 65.77 73.08 58.47 73.08 59.81 40.2 65.77 73.08 36.54 0 69.43 36.54 109.62 73.08 65.77 73.08 0 53.39 51.89 51.16 73.08 69.43 95.01 69.43 69.43 58.47 ] endobj 341 0 obj << /Type /Encoding /Differences [45/a45/a46 47/.notdef 49/a49/a50/a51/a52/a53/a54/a55/a56/a57/a58 59/.notdef 63/a63 64/.notdef 65/a65/a66/a67/a68/a69/a70/a71 72/.notdef 73/a73 74/.notdef 75/a75/a76/a77/a78/a79/a80 81/.notdef 82/a82/a83/a84/a85/a86/a87 88/.notdef 97/a97/a98/a99/a100/a101/a102/a103/a104/a105 106/.notdef 107/a107/a108/a109/a110/a111/a112 113/.notdef 114/a114/a115/a116/a117/a118/a119/a120/a121/a122] >> endobj 342 0 obj << /a45 285 0 R /a46 283 0 R /a49 331 0 R /a50 332 0 R /a51 333 0 R /a52 334 0 R /a53 335 0 R /a54 336 0 R /a55 337 0 R /a56 338 0 R /a57 339 0 R /a58 284 0 R /a63 286 0 R /a65 287 0 R /a66 288 0 R /a67 289 0 R /a68 290 0 R /a69 291 0 R /a70 292 0 R /a71 293 0 R /a73 294 0 R /a75 295 0 R /a76 296 0 R /a77 297 0 R /a78 298 0 R /a79 299 0 R /a80 300 0 R /a82 301 0 R /a83 302 0 R /a84 303 0 R /a85 304 0 R /a86 305 0 R /a87 306 0 R /a97 307 0 R /a98 308 0 R /a99 309 0 R /a100 310 0 R /a101 311 0 R /a102 312 0 R /a103 313 0 R /a104 314 0 R /a105 315 0 R /a107 316 0 R /a108 317 0 R /a109 318 0 R /a110 319 0 R /a111 320 0 R /a112 321 0 R /a114 322 0 R /a115 323 0 R /a116 324 0 R /a117 325 0 R /a118 326 0 R /a119 327 0 R /a120 328 0 R /a121 329 0 R /a122 330 0 R >> endobj 343 0 obj << /Length 417 /Filter /FlateDecode >> stream xڭձJ0,y SyI]m-GxChlڦW(ᗃ./O|~|o6 =5{ݹ}fȟsyőn5ֹ˶UY֋N]ef\rjZcamƥzɵ̲#S`il7cK2p@S`Kl!cL#9 fD 75 ANDM O$S2`Kl! (0hY@0t#n@Cиw rB'rw댙wXBNP99s ̲# gpc8g?L_6-u<ܻ.Xda.[ϧ[6-#0t endstream endobj 344 0 obj << /Length 478 /Filter /FlateDecode >> stream x啽N0/`~6EBb!`b@LɣQ3D6w社B +;\Qqxr즮+fLSa^MQhA6?94Yd~>yf~YڋBh`x:B ]yrCTcґ b <=^N`.|b5? endstream endobj 345 0 obj << /Length 356 /Filter /FlateDecode >> stream xڵN0 Su%UMCL &`dJZx7v0D뫓(>᠂e 'KԣZ>Y">UkXԪ8iU4r)TXMF5kBErψqJ{82jtL6[Ga&>GQ8P*Q̸nj@I-ۋI9cƫHYrTAr Edm]sG%e8݄mI?[DsF]{Ca6$^mC#$RcX:-qwH%!@BF]/j endstream endobj 346 0 obj << /Length 325 /Filter /FlateDecode >> stream xӿN0&]^@ajr &:9A3Zn+ ?_ 3\A!i?Ejw ؇YWJ܊w7b^BǮ] =\|~zz KQ-#Aj3YFntM06 H_ȩ++ۧE 2P ~BFc~L*vنI|O wQN1?u(o!{e2ja>d,Lw- ȽVmp`۩gS|Z8ęx˖G endstream endobj 347 0 obj << /Length 316 /Filter /FlateDecode >> stream xڝ=N0G\#ABeiY$R AEJ =%GHE3vR$=ycu%Tpg5WRw6~.FԪW#*o*;zUjUᩆj5!2qπ\ 몛^=oaf+ endstream endobj 348 0 obj << /Length 225 /Filter /FlateDecode >> stream xӽ 0H-}FPAAAMG#tXz&Պ.!#&:ؒmh8WȄs[r= ]|1w5ޤ2=<o̠e7f~vVmm(OMFZ#:ih[Rmg(G%2˲*'/'ڬN>t\rWSWЃ)\Sn endstream endobj 349 0 obj << /Length 159 /Filter /FlateDecode >> stream x3537U0Pa3C#CCB.ARɹ\N\ &\ a.}O_T.}g E!P E A D M6l}#U@ȥ?@.%#\\\"_Z endstream endobj 350 0 obj << /Length 217 /Filter /FlateDecode >> stream xӱ @ ByvP N&G*v(TAq~.t:qpaږRkj+n_{>xdAARax nStHAFt,\[2R҈G1ۤĔ7(:i|\/}ًQ ?o<9/*Ӄ}Y = \` endstream endobj 351 0 obj << /Length 323 /Filter /FlateDecode >> stream xN0K8̅G`^@٬ʉd]9ɃٓzhYl-h~pQ | endstream endobj 352 0 obj << /Length 201 /Filter /FlateDecode >> stream x? P H!GhNkQZI]mQz'v(|UM)a'm+aG>8g[[܏X%h)h"qê?j( _%GC!\M1.Jk@babu8Cj(ȅέ 5}x~> stream xұ 0[Z UN⤎GQ|IEEP\ *D-l IupA0 l$9090{d2"P | :zlƬB7 7YEl(ݛ~҆:srmH'lGa/\^eVOa 0 endstream endobj 354 0 obj << /Length 365 /Filter /FlateDecode >> stream xڥ;n0mQ #> stream x˱ @ ۲#'.V: N|!?i1ÀTc^#Q'+TCo 4 j5o3f@0 h8uFE:)Z8ͷډ/cdɯ2>jj endstream endobj 356 0 obj << /Length 401 /Filter /FlateDecode >> stream xڍӿN0pG,y#O@VtTD$02`}<|#寨T;wVڮűOWOj9^Gު.;/˪^ؗխ/OmVm7VaNW9%{mA[ PnKB] P{ьS+$tX 3TD'9::JrGD u"~F?x,<áP50~Cpb*򄁿ďohQ'h.6㙂FQM-%5 'F};iiiWҮFo7d"H0CPkm=: > stream xڅN0y%)R)`b@L9}4?J!c*> x~Ν;}YvfW^۲ۗҼ``Yצx)n)[jݕ-M=zcRG#Q18c: >*T-z$V d Ds )iMLCs3e(*F$*΍(U!f$uR@?(## GD8&(YR"7AP3S$GrRVBDfLdLnL푛Vr9N!RF q8$>}2Ko|tG) (RA{Vͺا.)狪|/,-LJ!&߈F |AXBܛo-q endstream endobj 358 0 obj << /Length 280 /Filter /FlateDecode >> stream x;N0Љ\Dz`PYHPQ *A ; ; X{ Ym#܁s(EnAdW%;˒^ʼnu쵳+VX]%iSvPjF))3#O}A >(;dިWSJ:HJ)PkP甆z(RTtC!CTTaP )j h d1 b:(m64&Րg?ԏ]?y_JNKobg endstream endobj 359 0 obj << /Length 381 /Filter /FlateDecode >> stream xMJ0Hlziav! ҅*z,JȠKz}Uu2_^ZֺR/jY |YUeK\Wes^ߟT>ו*7z[ٝj6Z <:A: `+"8 x=L .aL\E-#+ I SVQm0V YFBwXVR0%ꋃ<,cgZ |7=L E>c=.`dChK;FSP1g|^>$Sg!D; JnC3r}Ds^Y܋o=S YCyFݨOr endstream endobj 360 0 obj << /Length 423 /Filter /FlateDecode >> stream xڭԽN0D"y#/i(maTD$02`%~<x;)** ѡga;葞=}roJufSlD]ߩRz6U bynU1?;ҥ*ԣ+\~u/hD5c$І l vm -*hpN}RˊvQi昆М,PV5/̪uA)[/> stream xұN0`G"y#^RPR)`b@kGˣ2zb&wي: %|Rο}:55]@QR9(.b obSBdcAd|~|ls Jd[xRމj keH=9ie%RG:ڈ3,ɐ: -QE z& 7?"(nH*%NjP4b F-fSp"x2lQs_̑|[RBi/:^'@iDEI U(S(9QOGp XHC endstream endobj 362 0 obj << /Length 482 /Filter /FlateDecode >> stream xڅ0c&`d²;PYZ)@T Gˣ7H" "SDcd^onɟK?7h=V>>{;\?~=?鋽> stream xڭJ0 97yܦ {ɃxRBh}>B=~~`*8$_|r'fdfĜ,Lߎy"m/z^̦::-YKta33z(hr@ÊQo`Y([BQ!vxHL-$,y(?P=w.9R1\Ak|j]xM6nG?vN_ZZ?Ye 'a|fG-E(L+$(ź Y'EC3"פR[ J,&tLY47H<>+UNʽR &)\م\Bo)]J'؈#fK>֢.]F@"Sv񥪸yeUpD."dk#Ό@z~;+Uo7c endstream endobj 31 0 obj << /Type /Font /Subtype /Type3 /Name /F34 /FontMatrix [0.00581 0 0 0.00581 0 0] /FontBBox [ 2 -33 132 121 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 49 /LastChar 120 /Widths 364 0 R /Encoding 365 0 R /CharProcs 366 0 R >> endobj 364 0 obj [91.35 91.35 91.35 91.35 91.35 91.35 91.35 91.35 91.35 0 0 0 0 0 0 0 137.86 0 131.96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 91.35 0 0 101.5 82.6 0 0 101.5 50.75 0 0 0 0 101.5 0 101.5 0 73.39 0 71.05 0 0 0 96.43 ] endobj 365 0 obj << /Type /Encoding /Differences [49/a49/a50/a51/a52/a53/a54/a55/a56/a57 58/.notdef 65/a65 66/.notdef 67/a67 68/.notdef 97/a97 98/.notdef 100/a100/a101 102/.notdef 104/a104/a105 106/.notdef 110/a110 111/.notdef 112/a112 113/.notdef 114/a114 115/.notdef 116/a116 117/.notdef 120/a120] >> endobj 366 0 obj << /a49 355 0 R /a50 356 0 R /a51 357 0 R /a52 358 0 R /a53 359 0 R /a54 360 0 R /a55 361 0 R /a56 362 0 R /a57 363 0 R /a65 343 0 R /a67 344 0 R /a97 345 0 R /a100 346 0 R /a101 347 0 R /a104 348 0 R /a105 349 0 R /a110 350 0 R /a112 351 0 R /a114 352 0 R /a116 353 0 R /a120 354 0 R >> endobj 367 0 obj << /Length 204 /Filter /FlateDecode >> stream xڕб 0+ (z/I E*AAAQp(Q|^mE\$|K.Ij:zm}> stream xڕн 0+C4_( šV08СG#ttp0! r$T< Nz4xBɮSlM#}dzA,]NI h#oQg‰JrۗHNN#80om[ӵx"mT#lG[X)iue0ۀ3+|RA endstream endobj 369 0 obj << /Length 137 /Filter /FlateDecode >> stream x3231S0P0P06V06R0PH1*24(Bs< =\ %E\N \. ц \. ?!?70aCd,@!.WO@."m endstream endobj 370 0 obj << /Length 136 /Filter /FlateDecode >> stream x3231S0P0S54S02PTH1*24 (Bes< =\ %E\N \. ц \. ?  ?o`0`(`H 0703310XB \\\˗! endstream endobj 371 0 obj << /Length 93 /Filter /FlateDecode >> stream x3231S0PbCK bU@tr.'~%U()*Mw pV0wQ6T0tQcoo u 6 \\\Tt endstream endobj 372 0 obj << /Length 164 /Filter /FlateDecode >> stream x3131Q0P0T52T05T03RH1*2(XCs<L,=\ %E\N \. ц \. ؀L1C)0 PB@B|PX5ـX :NcV  \\\- endstream endobj 373 0 obj << /Length 117 /Filter /FlateDecode >> stream x3231S0Pb#3c3CB.C HrW04r{*r;8+r(D*ry(001g | !h 'W % endstream endobj 374 0 obj << /Length 96 /Filter /FlateDecode >> stream x337T0P0W04S0T02TH1*2 (B$s<Á\ \ %E\N @AhX.O??}r Iz endstream endobj 375 0 obj << /Length 162 /Filter /FlateDecode >> stream x=; @ )iru @V"j)(Xh{=BJK'/Cc(&IhI ukL#] tr;JyFĽx *ᢚ+#5@}؛SƗUZWÅ 7 endstream endobj 376 0 obj << /Length 249 /Filter /FlateDecode >> stream x]ѱN0ٮfZwnB{G4Q @dNAB^=IݠTd%s]Ksbrh6@^^43{2豹zD!;(d`!mXm ZB$BRm7WKPě_ ׊ endstream endobj 377 0 obj << /Length 208 /Filter /FlateDecode >> stream xe;0 T H*0V*  & ۣ(=BG`O1$N;f22LКhxLSg(J[4NA+]'z)9RLPQjN-rĄTD#ɉ~T?BfrOMPըs`;v)G/O7r$i%O#}jI$֣w{?(a/5sR endstream endobj 378 0 obj << /Length 261 /Filter /FlateDecode >> stream xMAJ0)]fa/sm+"BЕ quBQpG ihMIyM:dhOsj錎Oi'a?bKE67xK/lﮨfGO8ceID``g&@Y953ؕ#˙ fW<@ Es>(R :$V.bA*3J ʘsJڛ?&JI_B)Jr&| eDX#d? endstream endobj 379 0 obj << /Length 255 /Filter /FlateDecode >> stream xeбJ@?Lqy1;y),J--ɣR\g&w|'[1Ϲ#^<PSL[.V_ʘ^ߟ(__7|=PaH(fTA#{Ľ8=Nݯ#_+Atj֛4H`~AWQ~,@EkflF[b[Ϡ~-(N[NA/V袦?Fj endstream endobj 380 0 obj << /Length 214 /Filter /FlateDecode >> stream xUϱj@ `ZB'㐫S0NBc )-t͏G!z3HKh{~\.hN )')+,9qs<\>1-_ -ޱwz𐴶L 73nb. fV cFI, m%5Ҁ+IIbM/1Nb5'1UWwݦpt endstream endobj 381 0 obj << /Length 253 /Filter /FlateDecode >> stream xUAJ1[4]@3SH[A+J] UQzY(/(E !Y}:rO,[3VlΆWZ2' %פWPsHr1Z p8#l"kdGvR !P)J,.RAE&M#GטbToY=$-C0dLm.FÒbj~)kB endstream endobj 382 0 obj << /Length 212 /Filter /FlateDecode >> stream xM?@oH1\@ȻNbjະ)+P $`Nog7)SdgFA/}q7`o:Ph>ggiLjaDGIſ|:w/Hxx@@6/cGP!R^!'TH3=,њR;gXK%Hs$h%Ƣug+> stream xMϿ@-70&aÀVW՝rWGˣlg[QsŧMyK)!Jp1|pԠ:_gzPzJ S ĎԬjukzE Q)]xĎ/լeQPxўc=r_0%t,!_ endstream endobj 384 0 obj << /Length 186 /Filter /FlateDecode >> stream x]ο POG@] b`955DS5f&>$)5}6+X8!C %jPfJ`Rjן旭Zz FB!‚_C4KhEoM> endstream endobj 385 0 obj << /Length 237 /Filter /FlateDecode >> stream xUαN@PL#0/ H3D+ cH 7Y0@IAXcClbv?;92Id#GdO!g^&^xWUc奼=]Iz/$w\G ~=BO \N nkm``\MdG :5">fg|w3ތT8ڦLH[e"48 6I|k endstream endobj 386 0 obj << /Length 193 /Filter /FlateDecode >> stream xm=@!$ S $&ZY+hfx=%-l,f&LC9QQф)LLs IK^nGՌ9owT p< AZ-@:hM,љTY(P zG߁ؐIavU.R8Uk Z B endstream endobj 387 0 obj << /Length 216 /Filter /FlateDecode >> stream xڕб @ !? 4?Z`A'qRGEC~Z?O[&\A.rIf>n,؃ҵṊw0 A.vAN(2pڂFh pi0@!D-%\"ōr"R\uTP\(z>Saا#|sfCuL1>|S$^Ik,b&rs\ ;] endstream endobj 388 0 obj << /Length 236 /Filter /FlateDecode >> stream xEοJ1YL2/ٸ{y[Z]!Vz ({h_$",I曯^SE 5=:|zӊ%+mmvssAUn @E2 Ȩ1JAE8Ab„rg|FÄ d]2Gd3Kꖂ''Bǥx`:!s\I`~zNx /[_TdW endstream endobj 389 0 obj << /Length 229 /Filter /FlateDecode >> stream xUϱJ@7^~@gfaŁuSne!Vj)`̧S"@-Fa0a.wӪ,NJ~CW5;;׈7vu{)%۵ܗ2{z- DfJHG"|Z֦Û)`tfTvh"?|@QZ計VШ@01E-e҃nO;`DhI|Ud" endstream endobj 390 0 obj << /Length 187 /Filter /FlateDecode >> stream xڅ1 @R,L^@ܹn),J-m5M)Sq793?<~Qq̇.6Ҍ􆣀žIgK]Gj!oCv^a JH˸;%BX[O ԎgU[kM4FF~xϕӁBT hњ~; 9 endstream endobj 391 0 obj << /Length 215 /Filter /FlateDecode >> stream xڕ;j@_0La]Dsy?* I"]I Eu4GXw[ Ɲf|8☣,> stream xUαJ@YXrM.A\8O0Xe _|XFlR,3m/ʽe4ݜg4/6G,r|{eSVgrvy~L9]]c"-"46"n"ja g\ô 꽅}abZvLRȴWWqz=A腁=AFZp2Ǥ>}m1fxԑ0S!9TxR^ endstream endobj 393 0 obj << /Length 172 /Filter /FlateDecode >> stream x}1 @bم #BBRPQH!(9eٵ(E!/I )txAM )e8E!Q,LF.vQīI m%;L>?9:^j7N=j AvG ) E endstream endobj 394 0 obj << /Length 266 /Filter /FlateDecode >> stream xUAJ0?dQ^`0v:B[La.]WRU'GQ2xɢt|MUG^dy*W',WOxقt,ErHh,Z}> stream xUϱjP? 9/Pc0$Bj;u(ڎV2HQ#dt`]8x)?DxgDGNx/4/)|8Yb o7/ K7Sd蓺@7=bTEVӊUш?I4M;@AmQSuj#S}7~9`^B 詤tU endstream endobj 396 0 obj << /Length 190 /Filter /FlateDecode >> stream x=ο POG@]A(AAM T EmB/fo#AB߁;ˁ.=t谿6;)#ɭI;~=7~.ɄO.;gJ +92 = Y5"$*GE1_kMAێfb)n! a!"t5}6)G endstream endobj 397 0 obj << /Length 238 /Filter /FlateDecode >> stream x]ϿN0/!Қ?"R)ĀZF@j?y=D $|jr=.YMxzH]lo-_iVSȪNTBᆥ:'zzLfU/2k`&[~6bT~4Ѓ{Νh{FRDJ*+oFt:^Cf\8،&и%FӶt[ӂ~Jl endstream endobj 398 0 obj << /Length 182 /Filter /FlateDecode >> stream xU1 0_:`/PMCv(j3:9: U:zI!78QL#NN"# ÈDkg%- lcdrE,_ω#+h(  0RGC:k3dV4P` {@1gy9xΡoi|KZCf1.$n > stream x=ͱj`27h 6] fԡtҎ*:H|(V;QX\Fje%E)MT̂k1RvO1j}H9S B47Z4^7^;r<ȇ0)z!Be,; e__=FʼW|/Hd endstream endobj 400 0 obj << /Length 178 /Filter /FlateDecode >> stream x]1 @ )tMBą-,J-+GQrBt |(1%2EϨR.#ʒ;baPI(\4 ^nrJ1ʒ61E[4%o!Au4x@u/YqDwk;ppjhWO: m 837ġB endstream endobj 401 0 obj << /Length 216 /Filter /FlateDecode >> stream x51J@o";MBuS,he!Vj)x9a)BpSo\^]s-_Tܴ\ZKӶ5w1S WT##M~!J& zt9Fauޝ"Ya b&91ĐMJ^-}?9:o,Uێ;VF endstream endobj 402 0 obj << /Length 205 /Filter /FlateDecode >> stream xU1j@/L!]Xsx^"W.B*' v+h:aKxl%4ol9dxaa苬2g@˚%t§'3+~3Sb$PTh$&w;.Cչ Yw A HD)Ԁ TC8!#_^P=WDC)k VA endstream endobj 403 0 obj << /Length 238 /Filter /FlateDecode >> stream xUϱJ@?l0 ,GH`<Vb) rGGG2ENS8`vfv,]W|測y]7* c]WtsYP~-iʻx||s{Ɏ-?8.2" 5B+h&Q[Xo}f?BAqa#G L0P3 (E>QZAj4Nq12!Qydq-`l.vL@Wa endstream endobj 404 0 obj << /Length 216 /Filter /FlateDecode >> stream xEͱJ@R "y/Iv"f!XW0bBKGGGe,+SS_l8 .K6R;s6iy~]Kف͖%S+ek.(c{AzDjUW>snVn-t +ʼ23;_| J%r,cQv$F)XF\@7-=sJ endstream endobj 405 0 obj << /Length 243 /Filter /FlateDecode >> stream xUпJ@/l¼HSge!Vj)DN.>Z:_ca;SQ9m~ )T38,>')f(eHzB %m.ALsI7zkv+FQ"q I`{}w3 faB=3 ӍKM;t~='s.C˱ |GewUû%sLrȕ|ob3 endstream endobj 406 0 obj << /Length 230 /Filter /FlateDecode >> stream x]бJA?l0> %w'6 ^!he!Vjihw_le+B\&L/lEe/ˬb2b|y~e-Ag%Է*ayw>=IR4tI6FZt#?jvOG,I#1>- k`#؎ yD}Ñq ~`[ u^#g endstream endobj 407 0 obj << /Length 277 /Filter /FlateDecode >> stream x-J@gIy/I/a<V"E!bkk#lGfvbzZќNTQYSn^ͬb1r> stream xMJ@E`$wy)+P,m-r3_XXfvrqV녞.<תҧB^eYkUv_dJvZk%koYmAڍHf{`8""`~`'i8،i'~aa 73PcRK\O0! РgV:. P4IJSa ‡U+[f9 endstream endobj 21 0 obj << /Type /Font /Subtype /Type3 /Name /F32 /FontMatrix [0.01204 0 0 0.01204 0 0] /FontBBox [ -3 -21 72 62 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 34 /LastChar 121 /Widths 409 0 R /Encoding 410 0 R /CharProcs 411 0 R >> endobj 409 0 obj [42.44 0 0 0 0 25.46 33.95 33.95 0 0 25.46 29.71 25.46 42.44 42.44 0 42.44 0 0 0 0 0 42.44 0 25.46 0 0 0 0 0 0 0 0 0 62.69 0 0 0 0 0 0 0 0 0 0 0 56.33 0 60.57 46.68 59.42 61.72 0 0 0 0 0 0 0 0 0 0 0 42.44 38.2 38.2 42.44 38.2 25.46 38.2 42.44 25.46 25.46 38.2 21.22 67.91 46.68 42.44 42.44 0 35.01 33.95 27.59 44.56 38.2 55.17 38.52 40.32 ] endobj 410 0 obj << /Type /Encoding /Differences [34/a34 35/.notdef 39/a39/a40/a41 42/.notdef 44/a44/a45/a46/a47/a48 49/.notdef 50/a50 51/.notdef 56/a56 57/.notdef 58/a58 59/.notdef 68/a68 69/.notdef 80/a80 81/.notdef 82/a82/a83/a84/a85 86/.notdef 97/a97/a98/a99/a100/a101/a102/a103/a104/a105/a106/a107/a108/a109/a110/a111/a112 113/.notdef 114/a114/a115/a116/a117/a118/a119/a120/a121] >> endobj 411 0 obj << /a34 375 0 R /a39 369 0 R /a40 367 0 R /a41 368 0 R /a44 370 0 R /a45 374 0 R /a46 371 0 R /a47 372 0 R /a48 406 0 R /a50 407 0 R /a56 408 0 R /a58 373 0 R /a68 376 0 R /a80 377 0 R /a82 378 0 R /a83 379 0 R /a84 380 0 R /a85 381 0 R /a97 382 0 R /a98 383 0 R /a99 384 0 R /a100 385 0 R /a101 386 0 R /a102 387 0 R /a103 388 0 R /a104 389 0 R /a105 390 0 R /a106 391 0 R /a107 392 0 R /a108 393 0 R /a109 394 0 R /a110 395 0 R /a111 396 0 R /a112 397 0 R /a114 398 0 R /a115 399 0 R /a116 400 0 R /a117 401 0 R /a118 402 0 R /a119 403 0 R /a120 404 0 R /a121 405 0 R >> endobj 412 0 obj << /Length 130 /Filter /FlateDecode >> stream x333T0P0& F )\\F&@ IrW02 s{*r;8+r(D tQ`c`??*jj2(F endstream endobj 413 0 obj << /Length 280 /Filter /FlateDecode >> stream x핿J@7L#dݑZL!he!Vjihh>=B+F2)~ɷЙ9K4xi\xaL>>fAw zuwz 5* *e%8ayr#̮m:z(|J*xeJӖ7ɨR4iR[^V lOgJ$љ,M/ V%&N^eT-*w?SxGtvFZh~YGz iG endstream endobj 414 0 obj << /Length 754 /Filter /FlateDecode >> stream xڭ10'Ja)M`_fe,S AE7*ٓn۳1jCiQTi]Z4 KۅoL?[DX\!F*V\ڛQɑjZn+t"6{9m\sK9DRZ5\B,G!L{$dW-&:R(kToG4EPp~" ,W2#Q wqyI˿793K s#!萢j~hQӬHR ѣΊ8'2!jtf D .5ǕPiGt M{:K*ZCǒ*N%J`#XT(]A$BF.J Ȏ9pF)wI$lt7G 럶Ib#KG Lн8to{ endstream endobj 415 0 obj << /Length 497 /Filter /FlateDecode >> stream xڽֽ0D."#$O@.pw\g8$@]Wv7#Gp5&xĤ 6?^nn:g>\t'~x?~|t=CWŧU0WB?HR $Lh}>1wOQ;:BKIh%}."/HP}!QCb$L 5o4!w%TЭU)ƄQ5JHpW#v "MU%$U/+Bc$LdzlPT8=l"\F(|f5&>'\ L'e,yH.4 l5(=2mŷY,!Ԙey l?ءvZCR$]l` %fw-b,of5&x6 FGRKIUl,vߞG} endstream endobj 416 0 obj << /Length 569 /Filter /FlateDecode >> stream xn  `^ z)MR{1T͵U(<>X0 kƶcv x ի~뽾pZM t";y}ڛ}V?/> stream x=0&G/3Y H"1T ()@P;7*92EA. )&ϱuώ8F<ݓ;}c)0E?}egvxg^v}Btp'ޛ?H{msi@Zhzlʴ IPas55/U82C7 @F]Si Z٬(@SF!*Fj(ikCHKN:!YE뫦Q$^UjSjҘ5e%\9ɿKp/I{2~kcИAx_Q~CSS)z/U(^'N=YHHCFmƌ!՗DHsF9IXyU)i+$Ro)<YuLW#S/2>_$H'i!l4*dÖlU>ݳ,[b.䅘*${5˴ $9ܵ*噽eQ1A endstream endobj 418 0 obj << /Length 116 /Filter /FlateDecode >> stream x330W0P0bsC#CB.3JrW03 s{*r;8+r(D*ry(1Q(cAW'W  endstream endobj 419 0 obj << /Length 544 /Filter /FlateDecode >> stream xڽֱN@\XƏ`?O@!R@QB{4?=4WXݙw¦Cg8_~:}ykzC;K~o}uM˳n?fz8(IʘY>  Ⱦ> R*WA"> jfAQ8 _UJ": gAQ0 3j|5H$_ R3 jJ)T ճP aj&aj gq5D\ WC3j@҈_W"R-1bGIƤ:H)%/i#@[I0cJ:بZcӤ> j5t4L&r4;:},Y\!m7CBFx7DvLNh#I& I'K!ip AHZ0(C%$D9␼j)Q8$orJ# 7(KC0N[>%D^eDy>QBV9 >&~/{}iP endstream endobj 420 0 obj << /Length 202 /Filter /FlateDecode >> stream x1 P BѩP+A'qRGEz4 ƶvCϔ)C!!E! v@UPrĀc=.zfq:@ `RgnN8ye˖-gTb\ Vv* zVX2dAW#E_RIf. zJUIZ<|jd endstream endobj 421 0 obj << /Length 478 /Filter /FlateDecode >> stream xڍֿJ@ 7n#4E+NZN⤎)b_ T:X~A}n|ɐGgGS9GCYc-^D}r@|xne;!K墚]ɷ'QMe-^̦rƎ觅>SmN؂e1]$6Xa^U񶆐 qV@ACBrr![!X-AmA#80 mC+haq|H\Hh.\\h.$4g..4 5 ̆̆DfCzEfCb3!fb3!rLHl&$6aKl:AVҶŦdt2MæBSqT2`* [ֆX`ayq2X5 + ,'%!lh%aayq2˜r8lT|`ƄVƻL\čE endstream endobj 422 0 obj << /Length 510 /Filter /FlateDecode >> stream x햱N0 @SP)K?(=+ H01 &`d~Z>>cSLT!`C>8vJ|*?iGz̏ZANó\oevZ.;̶WIfslrut/%'F'%pC^IڪLmbFZ h( Q:)A sKkؚ㠢>+>t.F).(+1-s&X(0MT8pnF![lS/ReJjfLjM$1%G0H#,zK~11?FJv$;,7~|;{i2 <ˬ&JjTcBvyP"TWQͧUc$a]hZV-0bD;UA 鞽Ңi\){Iǯi$2@ ,L,]fV>I"T7n&/F~& endstream endobj 423 0 obj << /Length 227 /Filter /FlateDecode >> stream x; @ 49B&k>Vb&GQru7݉),$"?|s}Cpr8}I^0wT9 O|r㊣p49cVEl!Ҡ`E  Ӡ%!pՁAF J@P  iTWB+USF, 07=1I  endstream endobj 424 0 obj << /Length 328 /Filter /FlateDecode >> stream xֱN0Ћ2DORWiSR$2 Ā:A XI?OȘq, Ȟg|>/KəsResěP e|f W_vbUlS"DZˏϭHW7Z>6XK;k"kp#8A^Ø'O> stream xڽN0[e%`$@%BR H01 &`d!y&xH,>9vh%jsw|E~_,UjPETz(ij(KJd7,EvaEV]חGNU!3u[NTgjfG ̏vNp ``,#9nj,d i|9swV\=PHm`jr 6.@3΁ 0)@p j.> 0 ;`ZBW Ջ,@măCal1Pyyun&V)YH  `t]@lbC0n @p:vd0y|XR x Xa%UTbk V|5]Kũ㦎Ȍ!{܅|c畸_z endstream endobj 426 0 obj << /Length 357 /Filter /FlateDecode >> stream xՓN@!L#/ӣ<)LXF[QxJ roX~,;ULJRD*tuJxMǥ}u ^- ?wӐ.!m7:rWc/ %bvR6PQ)T*R֍<4\m:bE^n@,Iie$Ψ  [6 }ߣ.`q Ǟo1r4p ?_mO~уU`3g;'sJhjXgd9cv؄G53X& {4$Vuk3|6(DStSX&ᬆ+x&8HF endstream endobj 427 0 obj << /Length 361 /Filter /FlateDecode >> stream x핱N0KHDzMd08Fgx4G`d {N[ !\'/6y+Kq"xBgz"7/|WQO;<݋')g^ @;?&yx|*tTT#cFGߚjK RFgIAc! 1 'tU1@IoIe3C qG`,Rh-Rdd.RBy 6Sisfo{OuZGu||{f~AHZ؁S`*p@eI+b`(#)&0?&Ϭ endstream endobj 428 0 obj << /Length 360 /Filter /FlateDecode >> stream xڽN@Ǘl6<aD<)LXFkx4G 3;;ǡ^q^;sG+N\q3b9:W9l7M:mZ]'nn.\fӭenuoShh %"0qhj9uT1''ad⪖ʷn|̇l@ Ç|s,Tx?ѷjk(l0 AL;Q78?`'%L~I0>`D{=c/G+y) BĮo"6tϼxu6ڤDAMj^_49Z9G4-dG5kKC揑H\^/@ endstream endobj 429 0 obj << /Length 530 /Filter /FlateDecode >> stream x͕?0&G/I`YfFZ)؊Q%Z&T\+RxFD! \??۟=]=}W]>&6{x-5vp{ܼ|;םo߸7GvS Sp!`<ğ{M%~ ԱlHRQ _F*JQ1Pb jd *bhPZZ@@P*LUNdw71kIm_NAK:mvPri<'gʒ/;~''2Tأ ^@|-d^eЯqBPiʁ;+|(q!q0"R 9fjiR` O5PJS>;$_H抭aq==d sO`=dΡ׬MヾJ ?^Zr(CqJZC8d\̭X녶%"ju{ww7t6 endstream endobj 430 0 obj << /Length 266 /Filter /FlateDecode >> stream xԽJA )2OhDxD,$IiNȉysXGG ɸ?IafabvTP^At=)H ~ ky3@9;B5xBE"vIG5kժT%)K7f̫څWjƫe.h]:2-cBRh v*(?Xٟ(U_m~?\0Aֽ endstream endobj 431 0 obj << /Length 174 /Filter /FlateDecode >> stream x333T0P0bSCCB.3JrW01 s{*r;8+r(DMtQ``o````H2$IpRHd &Cl⒡aX _#HQr8Փ+ W endstream endobj 432 0 obj << /Length 388 /Filter /FlateDecode >> stream xձN@`.$#O l;L0XXX><%ƅey\dgg680:GgfqzP&]Kiy{JJsVDW: AD% A#"Dz/̨T!0oqj@Q>+[@+ @TfHeF  E\!"bDF?5^J䳽"rP !m +"'屨vu$A1.wa?..qM0g$ p ɳnf -m1> stream x333T0P0bSSCcCB.b%r9yr+s{=}JJS ]&ry(000700DI2؃Iv$y%? JCrzrr! endstream endobj 434 0 obj << /Length 339 /Filter /FlateDecode >> stream x=J@L70s(uSZYZZ(  ;basXX(s}ɲV(6H2g$(ʇ;޶繹2`D]IicKn}b¤]tjOrrj`2#6Hx!FsaG‚@ QpsҤ%`P%A}9`⸆(C!QaWHa׫[ng*}5/w ͦP>lB]'P{ͦZ7E 5[XW\9V;_A,/4{92JO endstream endobj 435 0 obj << /Length 256 /Filter /FlateDecode >> stream xԽjA4>]C6 LeR%)SD.p,Haqrpqv%X$Mp`?~bҗMnsM+z2FD; F11Ij 1xHogT  e.D ͏rwTcyzMjgԴPg?Q(n!v5|WyeoP^jWrJK**(?Yٯ(=-%ůc-?[ endstream endobj 436 0 obj << /Length 347 /Filter /FlateDecode >> stream xՔ;N0&Gع$F,)@T@I:9#Laec;,+p|38N@`} O| 43r}s oϼ\ 'D 34!!ȄrԌ_ Q1V-E:u=GJil"eS>s?gvU\z*@ӝ8fX63.8wإ\D6'՞[Te>Uaȣ -sY1/g_gzO]ЧI> stream x핱N@P\ Š*L0X!|1><%aY@FoٽN;z5W{:TP]hy-u0y CX H+ҏݥJKδ eRB$Ja>  jɡؒK1k(p,y$BL"m#Q# XcEɨLlThLM$# eOC*: jC$(Ӕ~f/Q'N~Cрoԍ]P>m>*#r7}iwFHycNV4DUc@v\uRt<†P > stream xj@sy7Q@ T= TOd endstream endobj 439 0 obj << /Length 394 /Filter /FlateDecode >> stream xuN@ etK!TJ;E*EL @0Ǐ$k Z*!zڿo:Xla,¼nVrj{Sۺ2ٔb]rgz4RȉdZ"!_ah u^ߺGX?JL 3 <@1dȐ*$  0ShTz 5Dbބ°40Drc-e\FUdh)SV1\\L d ))8 'A'0Bq݃nbz>q['e2~ှfIrFpa^7ex!d{eOs7wB}d endstream endobj 440 0 obj << /Length 243 /Filter /FlateDecode >> stream xӱ0H-y hVP?8(}b ZEL nmk [6 ߛ[b'5uPw ToG j32y+O@>FXA\GU C;s)+य़k,La8ŹIjK3 DF#behLB,VӨ?"?Ґ endstream endobj 441 0 obj << /Length 258 /Filter /FlateDecode >> stream xJ1,{e@4!P+AO'CE#8B"x9$|$O'j8#B3H0CX)pw(d\s/ϯOF7HxO'Ќ.LU/3G2(_ɄM$dʬvw*~rMmMUID'N-eUx?&\BJ(^y4l4pV_ ;kY]׊[6-e ,J endstream endobj 442 0 obj << /Length 369 /Filter /FlateDecode >> stream xڵ1N@!$p kɺ&RheaRK /Fb5,0cboHH_X)X$b!2'NG.#sl|n20x|ny]秗{//OJHy^1?Kf/ SԘ)ӺTQ j@)Ni‰QpԢ4QRN(D5T>*U AT0t"x©@A|>Rx5q n!PnwCR"EdVm?#lF2ۆu܏s$=rFLg8?SU?*|<#FwU)_/zcA endstream endobj 443 0 obj << /Length 499 /Filter /FlateDecode >> stream xڽձn0` p#/r)PکCѩ!AZ|3Q5b;R<&Ue2 O>N]w{uWwէw>yS-xuq{|:ު_[eegb{X^.WnH,R헡~%rQ!҄d.S'X>Rr/I"5)L&J\n@CA#/A#1w=)XAtJays@r%ٸiHS"_CF5&! |܍d |i 4&ZHA— H:S`?zJSM)_Gbl2"LLh9R_ 9JcWLS&#/P' IG@$hdJJc&7C9K{I3 $Wb,W7@]DҸ69#O-pJI#7Bx*Q"ۄ>$9MI ?_3^ endstream endobj 444 0 obj << /Length 492 /Filter /FlateDecode >> stream xڵԱ0qG"y#/S oċEb5ݚ1CcoE]Hm\T:gnԫꋖߤnWW{ysGeo#;ϯyZiYߪOZ5wx{B^!Q3 rpvU}˃ʉ4U] i@^+W+cʢV||> /&T5||9-q!B<-DPEGm L\=ާ{堑BxA{O@ k Ara!H}m r+es/=$zd eX6׌g$ m }JaN2*rV*+'TT]-00)a: cy@?OQnp*؇}n)Do ҝT *Oyɬd '!Y|&&rE0Pi&tHw8UQ~ؤQ endstream endobj 20 0 obj << /Type /Font /Subtype /Type3 /Name /F31 /FontMatrix [0.00484 0 0 0.00484 0 0] /FontBBox [ 4 -42 176 145 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 28 /LastChar 121 /Widths 445 0 R /Encoding 446 0 R /CharProcs 447 0 R >> endobj 445 0 obj [120.19 0 0 0 0 0 0 0 0 0 168.27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60.1 0 0 0 0 0 0 163.21 0 156.25 0 0 0 170.01 0 79.07 0 169.21 129.82 0 169.07 162.4 0 0 0 0 150.38 166.14 0 0 0 0 0 0 0 0 0 0 0 108.17 0 96.15 120.19 97.59 0 108.17 120.19 60.1 0 114.18 60.1 180.29 120.19 108.17 120.19 0 86.55 85.34 84.13 120.19 114.18 156.25 0 114.18 ] endobj 446 0 obj << /Type /Encoding /Differences [28/a28 29/.notdef 38/a38 39/.notdef 58/a58 59/.notdef 65/a65 66/.notdef 67/a67 68/.notdef 71/a71 72/.notdef 73/a73 74/.notdef 75/a75/a76 77/.notdef 78/a78/a79 80/.notdef 84/a84/a85 86/.notdef 97/a97 98/.notdef 99/a99/a100/a101 102/.notdef 103/a103/a104/a105 106/.notdef 107/a107/a108/a109/a110/a111/a112 113/.notdef 114/a114/a115/a116/a117/a118/a119 120/.notdef 121/a121] >> endobj 447 0 obj << /a28 413 0 R /a38 414 0 R /a58 412 0 R /a65 415 0 R /a67 416 0 R /a71 417 0 R /a73 418 0 R /a75 419 0 R /a76 420 0 R /a78 421 0 R /a79 422 0 R /a84 423 0 R /a85 424 0 R /a97 425 0 R /a99 426 0 R /a100 427 0 R /a101 428 0 R /a103 429 0 R /a104 430 0 R /a105 431 0 R /a107 432 0 R /a108 433 0 R /a109 434 0 R /a110 435 0 R /a111 436 0 R /a112 437 0 R /a114 438 0 R /a115 439 0 R /a116 440 0 R /a117 441 0 R /a118 442 0 R /a119 443 0 R /a121 444 0 R >> endobj 448 0 obj << /Length 264 /Filter /FlateDecode >> stream xڵѱN02Tŏ{LJȀHy4?Jx# Us(QŊK.c+Ҵ ZT^soX("yzMkoyuK/oHXa%ᮗ]V{K\?bDm-5eta)QL'tH|DdXnrfa[C?ΎI0mœDQU'y!}~j3;C?c&,ʍr<bV{/; endstream endobj 449 0 obj << /Length 166 /Filter /FlateDecode >> stream x3130U0P0Q5R01T05WH1*26 (ZBds<͸=\ %E\N \. ц \. @"1000=o`#0o  ?0X0?`a?~?V` endstream endobj 450 0 obj << /Length 245 /Filter /FlateDecode >> stream x]ѿJ@ )S\^ }l˥;8O0XB7% ɸ; bcvwwWa4[ݹ߹k>NW\݆U;\S3wG'"D{&2 QR63 la'39hd=L- jY0#3%/v>OͬMyQlOuc"CЯq/ 58PUߟ5ʋ IE|΄e endstream endobj 451 0 obj << /Length 240 /Filter /FlateDecode >> stream xuJ@Y- \{y9:I, QI*s2rR[^\89GI~!O,/OJn0|%cZQ DZ(I0m ^`ӆCش`QPDaKt1h: fh)xfoaqC | endstream endobj 452 0 obj << /Length 242 /Filter /FlateDecode >> stream x]бJ@YRG<Ϋ A9JD:>>>B!΄#W  ?ˮ7%Yk_Xoy/[t7|7t+鱢 =N$t=!|&I|΋MXZQlRhTpb ZI/pê; b/$fKaS3 ղhw f319ߏ-?1 endstream endobj 453 0 obj << /Length 199 /Filter /FlateDecode >> stream x]ͽ@1] n?` A[\A--NhM)뮹k33 ,ٶR @*2Yh=?"33%t> stream x3136R0P0acCB.cK I$r9yr+[r{E=}JJS ]  b<]0fD ,8& F8$`.,66 x2pDԀ@׳Bpzrr`w endstream endobj 455 0 obj << /Length 217 /Filter /FlateDecode >> stream xڕ1n@o4`+"T(PR(o##t03,Чy+|ÏA)ܷ[2^YRg<& %%sa9R21AF@t Ft~+!h d%Өhת#-Zj뼵{4;fv4kN.gI3GF endstream endobj 456 0 obj << /Length 103 /Filter /FlateDecode >> stream x323T0P0b#ccCB.C I$r9yr+Zp{E=}JJS ]ry(00+Փ+ A endstream endobj 457 0 obj << /Length 213 /Filter /FlateDecode >> stream x]1jA 8#B@2"V F![I"BIZ#{=–[ˬ^i:bC~Lxl9*-)%YN K^9!3珄's>Sc|J׀.."Ub'2':_W(\kĨVعyzլws+g_5"7`C= endstream endobj 16 0 obj << /Type /Font /Subtype /Type3 /Name /F29 /FontMatrix [0.01204 0 0 0.01204 0 0] /FontBBox [ 2 -2 77 59 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 71 /LastChar 118 /Widths 458 0 R /Encoding 459 0 R /CharProcs 460 0 R >> endobj 458 0 obj [70.7 0 0 47.05 70 0 82.11 67.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50.93 0 0 0 46.32 0 53.24 0 25.1 0 0 0 0 0 0 0 0 0 0 0 0 50.93 ] endobj 459 0 obj << /Type /Encoding /Differences [71/a71 72/.notdef 74/a74/a75 76/.notdef 77/a77/a78 79/.notdef 97/a97 98/.notdef 101/a101 102/.notdef 103/a103 104/.notdef 105/a105 106/.notdef 118/a118] >> endobj 460 0 obj << /a71 448 0 R /a74 449 0 R /a75 450 0 R /a77 451 0 R /a78 452 0 R /a97 453 0 R /a101 454 0 R /a103 455 0 R /a105 456 0 R /a118 457 0 R >> endobj 461 0 obj << /Length 102 /Filter /FlateDecode >> stream x3235V0P0b#CCcCB.C Hr=BIQi*S!BA,A'W !$ endstream endobj 462 0 obj << /Length 111 /Filter /FlateDecode >> stream x3235V0P0b#CcsCB.C HrW04r{*r;8+r(D*ry(7?P70`szrrD7 endstream endobj 463 0 obj << /Length 96 /Filter /FlateDecode >> stream x}+0DQ?4TI  (@" y!#9i isZE 7 E 0@bVHѕTHQi&Ċ)/=- endstream endobj 464 0 obj << /Length 170 /Filter /FlateDecode >> stream xՐ1 A E]8;v N!he!Vjih{9GdQސ<~~ ~p\p/J^[ѠL}V[9J2 >2tȖL ŒB@.Y*t}4Ik\7B> stream xѱ@ .<}#FxNI4:ã(72(eqbK._޵7\gDv6tN%czp`a0Q`*FfMQYTKKMI>Akb2p:[v䠲; zU^_mTЌ} 2H/;EgMCλR endstream endobj 466 0 obj << /Length 328 /Filter /FlateDecode >> stream xmAJ0WdLrT:qtB\Kh=JAKҺ-4b`iva [Q > stream xڕͱ @ !K?t*hotr'utPt~Z?>CiL ֩y!.N94$ L fOif-hbMA#ڂ jfcBÈ +. b?n^p @Q-^p"͠y #Sgs\3w]\YE`_ endstream endobj 468 0 obj << /Length 256 /Filter /FlateDecode >> stream x}бN0[#[w7kѮ)5ڂ,HY1FuE1$̝`ڳ$] ciiǒM6jT%0`t)ߚڣ0R7 A\tdC@f;w75>/G% endstream endobj 469 0 obj << /Length 263 /Filter /FlateDecode >> stream xڽ=N@ !L"nCeHJ $GQr-7qF}#[9մgXsoSxmWt5Zx|Ö (ETV";Yepš{J9~P(eRXfdH- Xq*K8/~byoƃq?}`0fW';j#cͪy< ^ux߳= endstream endobj 470 0 obj << /Length 196 /Filter /FlateDecode >> stream x3732V0Pa3 SsCB.3 I$r9yr+p{E=}JJS ]  b<]@ ?p,B@@4#P2J@@hyt?iBAu?aa ?[@?P\\\2oə endstream endobj 471 0 obj << /Length 184 /Filter /FlateDecode >> stream x}б 0+-}'0t I옡ۤVr~>S hR(#^- &َ"lU"kgdfA!!)isޝKT oY<py~# ?@IzS=ZAh1s!o9)ʦ:#ǥ-~ endstream endobj 472 0 obj << /Length 262 /Filter /FlateDecode >> stream xڽѱN02D%{p<-R$2 Āsh~> stream x3632T0P0aSsCB.crAɹ\N\ \@Q.}O_T.}gC.}h1\. 0 u'.WO@.y9 endstream endobj 474 0 obj << /Length 263 /Filter /FlateDecode >> stream x}ѱN0`W"ݒG'6"" &T`mhM""ʑ϶|./Ky[WZ> stream x3531V0PaScSsCB.K I$r9yr+Xr{E=}JJS ]  b<]V0RP %B٣P?bP8(.WO@. endstream endobj 476 0 obj << /Length 253 /Filter /FlateDecode >> stream x}ұj0 {ʦIBPvP:;~~? &S !HIwWŜ :[U4߱I_6|> stream xeѽJ@YR#dM\p` A+ RK EAI|Sgwv/'W,fnQE4tuw8\/nqѢ=ܢmOjKvI@Ƽ U;=zŋ'|+|1#GR (2))RT58B )*B 0Dtc㈒(rTd<\B"!OLm%!) Yxnĺ endstream endobj 478 0 obj << /Length 249 /Filter /FlateDecode >> stream xڵ1N@EQ M#\* $\D*J(SAG\2 "J˻]>{m,|Dr!B~zóӥdȜ t$Pϊ˹vdW3V-pu/ Ɨ=:`Nzw8r,Vpڞݥxdn&8둉;b9޳0rEӪUXЂyjA^:'?ƿI endstream endobj 479 0 obj << /Length 165 /Filter /FlateDecode >> stream x333P0P0b3SsCB.S3 I$r9yr+q{E=}JJS ]  b<]A ?Q( 2%O&b Pk!: @'@q%vՓ+ 0( endstream endobj 480 0 obj << /Length 233 /Filter /FlateDecode >> stream xڥѽ 0->B4bۭAAAk(>BG3͇uP=AYځK]k̵p&˜Mgd ok|xp +@Z/0d73(M\5|3WU =e0> endstream endobj 481 0 obj << /Length 263 /Filter /FlateDecode >> stream xeϱN@ ?y/iJ"JȀD' X{hy^cꊙD5=:駓|_.(_ I4BCjz8nZ:76 endstream endobj 482 0 obj << /Length 152 /Filter /FlateDecode >> stream x3331V0Pa3cS3CB.SK I$r9yr+Zr{E=}JJS ]  b<]ANi Z@5`NWiffI3i04?(p\\\wG endstream endobj 483 0 obj << /Length 196 /Filter /FlateDecode >> stream x1P .^@?'ILtr0NG(сP[C_۴ˏ0$y4h CmJ9&#&5!d 4rJ>6>y[Rb\ [Bgpq Db 7 %Xz’+pC7 M=$qY+|T endstream endobj 484 0 obj << /Length 246 /Filter /FlateDecode >> stream xm1J@/l!&7scuSZYZZ( fRn1d|c yLsutkik-j\ȇwYR>U+J߹7)׮rjW=Kq>O0Dt2uT'H{@PL?jfG'X Ռet% 2ӿLaTf IeLǙYf41?Ef<2fU^֝ endstream endobj 485 0 obj << /Length 199 /Filter /FlateDecode >> stream xuν 0+['0~I훙G#t =猪!ARG4!3vYW}؟pRP>@}vD?YM)C?mFAh0Wp(Ԇ&R_GWRM1|w5F ]5IW'C{p:V# \ 8.y endstream endobj 486 0 obj << /Length 191 /Filter /FlateDecode >> stream xڵϱ 0H- Lj3:9::(:O'dP{^CEĐ<%$Q`c^ c4 }p̀4]Pf*[1.h&GA}1t@%c55l)1(*zúg ?q[넭Da_=@M 4Bڐ3'`a`Ot턀 endstream endobj 487 0 obj << /Length 184 /Filter /FlateDecode >> stream xڕ; @ )Bnb*#X٣(9BKY#X[?MbJ]-(9ktRSZ*KJPUtH(>> stream xڵ= @FR2'p$!v-,J--o d3<6{A\Ƹ+ [΁Di,7P3P#eƸ֠5->E)tDL̔Z&U!˧m,Jy"LXI?嵏]&^-VgǞZn$̴ɦp h endstream endobj 489 0 obj << /Length 191 /Filter /FlateDecode >> stream x]ν 0S:w#>mб N(Q3 \'3ʇE)rF2:Rߥ}ה$S2{Z|)/&QR:tCuňC:DvG|iFyV;tPo07{KxN. P5 ҂5-Qle endstream endobj 490 0 obj << /Length 155 /Filter /FlateDecode >> stream x33P0P0a S CB.c I$r9yr+p{E=}JJS ]  b<]?000?FF1 b bҍXo5 endstream endobj 491 0 obj << /Length 264 /Filter /FlateDecode >> stream xڅN0 ]1Drop @ZUt`b81# xlB$7bBb"~??;㺧j|ƶoE]p3A{)~=\SvK;rJxP0w4{\ .c9N]"Yp&Zmm1B`XX 212sP)HrL51UW[$tUݒYņ'r endstream endobj 492 0 obj << /Length 157 /Filter /FlateDecode >> stream x3530U0P0bS#S CB. I$r9yr+Xp{E=}JJS ]  b<]3$;d%YH2$@A6W  H$r  WH endstream endobj 493 0 obj << /Length 122 /Filter /FlateDecode >> stream x3235V0Pa#SSKCB.#C I$r9yr+r{E=}JJS. @-\. 0!("3#! F#.WO@.Nq endstream endobj 494 0 obj << /Length 198 /Filter /FlateDecode >> stream xڵб 0J-}TZV Nj}G!̝:w'dfiYNf6\`w4=]/tbMf u~CQӈ*SKc;[ȩXeٰcF:ԋ!1H޿B !%ԉ=ۈec'l_ق0aOP endstream endobj 495 0 obj << /Length 105 /Filter /FlateDecode >> stream x3235V0Pa#3S CB.## I$r9yr+q{E=}JJS ]  b<]3GBqzrrW endstream endobj 496 0 obj << /Length 188 /Filter /FlateDecode >> stream x= ` C!GhN"  N(kyo =7:8pӺ.fϣRv39;6X|6|GB%%9 " 4Drr{EfV5 RגS^r_,IQiN[)%[y/ [> stream x3530U0P0bS#csCB. I$r9yr+Xp{E=}JJS ]  b<]1` g$m7>0`l@"$'W  endstream endobj 498 0 obj << /Length 176 /Filter /FlateDecode >> stream x3137U0P0bScsCB.C I$r9yr+r{E=}JJS. @-\. 000$700cA2 \ i$ ?l 4b>.d!p!dr~$_\\\-in endstream endobj 499 0 obj << /Length 193 /Filter /FlateDecode >> stream xڭп0$ h[I;`A3>#02+hMK`#8c1qgaSQH-1A9O=t1A*õA]OPöJAy)Ir&~mk]{77xܿf}N$nC&L-, endstream endobj 500 0 obj << /Length 144 /Filter /FlateDecode >> stream x336V0P0bcsJ1*26" \.'O.pc.}(BIQi*S!BA,? DM}?`@8P$` 4'Apzrr8W endstream endobj 501 0 obj << /Length 187 /Filter /FlateDecode >> stream x%= P7.BBBQy[Hθb2+$+]n: 2/*NrN7rZmx]9]bJV9q*> stream x3634Q0P0bc#ScCB.#K I$r9yr+Yr{E=}JJS ]  b<]0<z @?bT 7~`@400cr pR endstream endobj 503 0 obj << /Length 149 /Filter /FlateDecode >> stream x3530U0P0bS#csCB. I$r9yr+Xp{E=}JJS ]  b<]30??@5J2"0?;lA*r  endstream endobj 504 0 obj << /Length 199 /Filter /FlateDecode >> stream xe̱@7&`8ɚ( BX+ RK EBɧ"8qaZ=y$/$I+w良`=,g+b*qz;D$K.&Q~8-x)؇% Vd.hUAmP[0+|D0|D] zy^֐}bUc\6??#Zh endstream endobj 505 0 obj << /Length 236 /Filter /FlateDecode >> stream xuαJ@9R,Lop'p=pSZY՝pE h({]#ZFcf˳朻Em%a⹐QWthMB{[ݝx|A6%ڭy*M\K&#d!#POI* MD // R2h``R̓m\Ջz=@>6m8}F}:1Μ> ,Ef]O sSq0iTxj endstream endobj 506 0 obj << /Length 245 /Filter /FlateDecode >> stream xeϱJ@YR &^SZYZZ( W$/%E[nnY|,3[%t@{!4?dS5}{e ݹ5nyyJb"fo87a L{kqEoڛA IsLlL;q6,)"pk'a 6jTvMt%yp7c%^ +~o endstream endobj 507 0 obj << /Length 122 /Filter /FlateDecode >> stream x3137U0P0bCSCB.cc I$r9yr+s{E=}JJS ]  b<]DbvQ$G%AÈB\ endstream endobj 508 0 obj << /Length 231 /Filter /FlateDecode >> stream xmJ0,%Z%c7!02I|zGƭVx|,͝Gif4ۛ IodyA# ՌJ&E8]&Rj Ф KX"9߰C"N +oq @F2h.pFmLF IA.gOլ endstream endobj 509 0 obj << /Length 237 /Filter /FlateDecode >> stream x}J@ba> stream xڕϱ @  Y6O`[ҥTAAAQPG#ttt $Byp :D%;摤8ߨ0XnlBuحVK>/'2%;%|AtG*A0`/PuF199a{Db#j3X5SS imhO_o`{ endstream endobj 511 0 obj << /Length 229 /Filter /FlateDecode >> stream xڅϱN@ `G"yh_p([+"5:T #^%pcHe``\wm# i䶔߸jQD^yݱKղߢ̾{{)oPFn(F ѩjd|L@6mБT /刏sg`|8c¨5 M◔i\Qn+ yrevEsᇎw 4s endstream endobj 512 0 obj << /Length 235 /Filter /FlateDecode >> stream xu=N0M#x.NV[YZHPQ *Ap%G0EagY<]6\瓚CMϴXiXq~hݒŊ܅K~}y{$:܆ok0`2Rӗr@IrBGbd2lRV;xF!#SIgk4IY;!Gabݸi^aeb_Ȼ+:(4 endstream endobj 513 0 obj << /Length 200 /Filter /FlateDecode >> stream xڝϱ `{2As3!!(hzĺt~8a@ R0G=9q|s:.{tń8Mh3L+"dL-VKx{pprm%@%*!ifȣ1ֺhfGݨZF> stream xE;N1 `G)Fr#/jH"1T ()@Pg)S{Al)iwiC]4M4O2;nyy~Âm82-}~|p#=yH`xpv $",t?JIRsTR/v 6#`f3G&-]\\\EV>RtU?p"F !SS`% ^/x?}ϓ endstream endobj 515 0 obj << /Length 237 /Filter /FlateDecode >> stream xm1N@o4s؊R $(UA WM#šapJ]_;勆ۖzƆ5wdJ۞^m1U-P↪?6\?Qc i&d r2!.G?pS8|9]'?XPT)L%[2/jNl>9ے5FX = WUUG@~U햎 endstream endobj 15 0 obj << /Type /Font /Subtype /Type3 /Name /F28 /FontMatrix [0.01204 0 0 0.01204 0 0] /FontBBox [ 1 -17 88 59 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 27 /LastChar 121 /Widths 516 0 R /Encoding 517 0 R /CharProcs 518 0 R >> endobj 516 0 obj [55.7 53.05 0 0 0 0 0 0 0 0 0 74.27 0 0 0 0 0 0 31.83 26.53 0 0 47.75 47.75 47.75 47.75 47.75 47.75 47.75 47.75 47.75 26.53 0 0 0 0 45.09 0 72.2 0 68.97 73.23 62.74 0 75.08 0 36.21 0 74.85 57.43 90.65 74.73 71.73 65.28 0 71.62 53.05 66.43 73.46 0 0 0 0 58.36 0 0 0 0 0 0 46.42 53.05 42.44 53.05 43.77 29.18 47.75 53.05 26.53 0 50.4 26.53 79.58 53.05 47.75 53.05 0 39.33 37.67 37.14 53.05 50.4 68.97 0 50.4 ] endobj 517 0 obj << /Type /Encoding /Differences [27/a27/a28 29/.notdef 38/a38 39/.notdef 45/a45/a46 47/.notdef 49/a49/a50/a51/a52/a53/a54/a55/a56/a57/a58 59/.notdef 63/a63 64/.notdef 65/a65 66/.notdef 67/a67/a68/a69 70/.notdef 71/a71 72/.notdef 73/a73 74/.notdef 75/a75/a76/a77/a78/a79/a80 81/.notdef 82/a82/a83/a84/a85 86/.notdef 90/a90 91/.notdef 97/a97/a98/a99/a100/a101/a102/a103/a104/a105 106/.notdef 107/a107/a108/a109/a110/a111/a112 113/.notdef 114/a114/a115/a116/a117/a118/a119 120/.notdef 121/a121] >> endobj 518 0 obj << /a27 465 0 R /a28 464 0 R /a38 466 0 R /a45 463 0 R /a46 461 0 R /a49 507 0 R /a50 508 0 R /a51 509 0 R /a52 510 0 R /a53 511 0 R /a54 512 0 R /a55 513 0 R /a56 514 0 R /a57 515 0 R /a58 462 0 R /a63 467 0 R /a65 468 0 R /a67 469 0 R /a68 470 0 R /a69 471 0 R /a71 472 0 R /a73 473 0 R /a75 474 0 R /a76 475 0 R /a77 476 0 R /a78 477 0 R /a79 478 0 R /a80 479 0 R /a82 480 0 R /a83 481 0 R /a84 482 0 R /a85 483 0 R /a90 484 0 R /a97 485 0 R /a98 486 0 R /a99 487 0 R /a100 488 0 R /a101 489 0 R /a102 490 0 R /a103 491 0 R /a104 492 0 R /a105 493 0 R /a107 494 0 R /a108 495 0 R /a109 496 0 R /a110 497 0 R /a111 498 0 R /a112 499 0 R /a114 500 0 R /a115 501 0 R /a116 502 0 R /a117 503 0 R /a118 504 0 R /a119 505 0 R /a121 506 0 R >> endobj 519 0 obj << /Length 189 /Filter /FlateDecode >> stream xڝ1 @EL70s @BBZZ( 9Z#XZ:IVt« 3Or#xjBN%7nt8SjImYǤ+]'RzΚT;l@TJ @ hxjze/ ]a;AdD/ak+?iTRS" }G@ endstream endobj 520 0 obj << /Length 188 /Filter /FlateDecode >> stream xڝ1 @EL/ :ͮA"EVbE$Nxg1q߄l">h.!Ǧ^OXRcR 7'e|ޏՌ5ٔs@ th~//iKxO`LГtIVx?>(=Cuڕ/@RriniMoEBs endstream endobj 521 0 obj << /Length 165 /Filter /FlateDecode >> stream x333P0P0W5RLLR L @ "ɥ`jU()*Mw pV0wQ6T0tQ``LɁI`⇈@R)&U@c B@5@  j-\;@e\=+ endstream endobj 522 0 obj << /Length 96 /Filter /FlateDecode >> stream x3230W0PT52T04Q03RH1*2 (XCes<L=\ %E\N \. ц \.  \=^ endstream endobj 523 0 obj << /Length 161 /Filter /FlateDecode >> stream x333P0P0W5RLLR L @ "ɥ`jU()*Mw pV0wQ6T0tQxJBS \! %@5bٖA)~d%P PrFC-Z+$QLzDKr d* endstream endobj 524 0 obj << /Length 103 /Filter /FlateDecode >> stream x333P0P0W5T2u MR L @*ɥ`j`¥PRTʥ`ȥm`PP *- + endstream endobj 525 0 obj << /Length 109 /Filter /FlateDecode >> stream x3230W0PaCs3CB.K 'r9yr+Xr{=}JJS ]  b<]d7zl+ -@>'W / endstream endobj 526 0 obj << /Length 130 /Filter /FlateDecode >> stream x-ɱ 0 g 2'0-k3:9 TGAEfڢ|7lXU:x@='e; m;P=fpq}kw+*\ǣҟ;ZFy2ddL*R!sBY ,P# endstream endobj 527 0 obj << /Length 164 /Filter /FlateDecode >> stream x3135R0P0U02S06W03RH1*26 (Ads< =\ %E\N @QhX.O8qs憺 ꛛn 10`` 6P $RR  2d>@nr TD endstream endobj 528 0 obj << /Length 105 /Filter /FlateDecode >> stream x333P0P0U5S03P0PH1*25 M 2ɹ\N\@.}0PRTʥ`ȥm``C'W ) endstream endobj 529 0 obj << /Length 131 /Filter /FlateDecode >> stream x-1 @E?^ xЙmV"RP:ٙ&Nwo\%红V\xA=y1:nwՇ Y/ t4M22DT&2+<*B# endstream endobj 530 0 obj << /Length 94 /Filter /FlateDecode >> stream x3230W0PaCsKCB.K &r9yr+Xr{O_T.}gC.}hCX.Oz 0X [\w endstream endobj 531 0 obj << /Length 153 /Filter /FlateDecode >> stream xڅ̽A ɉ̗eSH" ͣxwN5gvZ88Kb񀷲>7TzOoײC _.)k̓<j*zP R.NO|[ƧmdSL6e\6NdV;x* endstream endobj 532 0 obj << /Length 101 /Filter /FlateDecode >> stream x3230W0PaCsc3CB.K 'r9yr+Xr{=}JJS ]  b<]d7`= 1S'W fp" endstream endobj 533 0 obj << /Length 140 /Filter /FlateDecode >> stream x3230W0P0W54S0P06SH1*24PAS#Tr.'~PKW4K)YKE!P EA 30` Px҂!Փ+ &, endstream endobj 534 0 obj << /Length 162 /Filter /FlateDecode >> stream xUA @7 u XJ0fԪEB ,jmAi"=xj1k)%g/ I|<$7}Mlx]I'$K>&ȔGȽm~i\ԅΏG8¢x8M lj0 b+12 endstream endobj 535 0 obj << /Length 94 /Filter /FlateDecode >> stream xM=@PEx$^!R { T߱4J2:*54`ƴ"f@BJJ7"i endstream endobj 536 0 obj << /Length 165 /Filter /FlateDecode >> stream x323P0P5T06V0P0PH1*2(Bs<Áj=\ %E\N \. ц \. 10703H01X010000$E@PPc0n`0\@r ;g0 endstream endobj 537 0 obj << /Length 91 /Filter /FlateDecode >> stream xڳ030Q0B#C c#cCB. # D"9ɓK?\ˆKCHx*r;8+r(D*ry(HL.WO@.' endstream endobj 538 0 obj << /Length 122 /Filter /FlateDecode >> stream x3135R0PT0T06V0TH1*22 (Ces<=\ %E\N \. ц \. 5 5g" 1*Êl*,,0'W /67 endstream endobj 539 0 obj << /Length 351 /Filter /FlateDecode >> stream x5J0Eo Xb6? Vf`T AW.Dԥbe|B]w6H{-O&79,Lylʹy7]Tr$:)zSQ/w9z槞PgS@="m͢"{tS_\L:eR@5Rl# L7^ Z7] gO.Py&#MYY.IgϞp?GTl]fb& endstream endobj 540 0 obj << /Length 172 /Filter /FlateDecode >> stream x3134V0P0bSKCB.# I$r9yr+q{E=}JJS ]*c<]0A?  @CA2@5@D!dPICd \\\^ endstream endobj 541 0 obj << /Length 175 /Filter /FlateDecode >> stream x331Q0P0bScSKCB.S1s<L =\ %E\N @QhX.O g``~?`g N}`o`F¢0?Q\\\ endstream endobj 542 0 obj << /Length 154 /Filter /FlateDecode >> stream x3134V0P0bSKCB.# I$r9yr+q{E=}JJS ]*c<]0AI~ i"?P3@JR|Z0 @&\=) endstream endobj 543 0 obj << /Length 208 /Filter /FlateDecode >> stream xѱ@?Xf!FHJ"BJ--|1}_aau=΁egM]p,+qeL?&wXis)|›p1$Myƀv3|-{Pe!,GpPghFdPCWT-kCj( gf"{![ޗAftC endstream endobj 544 0 obj << /Length 330 /Filter /FlateDecode >> stream xe1K0 WbV hUw'AAAStp7?S>C>BG{I<J@MTY2Wn檜G>yv36sB<[B7^* kΛ[ojW^ar*Gɿ*ohȡYP~h)?_o``@t6J[LmS/t ]#zIm&+S %-% -3_P}Ҙw4&!YkC1R۠u㛥Ft(X@;x1lY1NN|1`'1:?%r endstream endobj 545 0 obj << /Length 185 /Filter /FlateDecode >> stream xڍ1 @ LMBVbv9Z#L!W0as_DhO-%CX턏ӆt2r@:兜YMz&cPpte] 0.,$+IJ_Fn_o^:, v;r endstream endobj 546 0 obj << /Length 235 /Filter /FlateDecode >> stream xmj1 ^=;Od-$AhO=Xބͣ{N"Q6>fB&?N'izmf4Z||DJƠz.rM/T%V~rEP@X8 \IU{3bY1Ez$'i=Sː†LBp6Pu 8:R [49޲&&Z'XΝ_%m endstream endobj 547 0 obj << /Length 209 /Filter /FlateDecode >> stream xڕ00#pO`Amd3ALd08Fgh< @ڴ_e4f, kӄqH2@5(xEB3 i3 5C8ZA/:L^pXpkFbIF2qUNCE>_c+vdn&~VP endstream endobj 548 0 obj << /Length 260 /Filter /FlateDecode >> stream xڭѱJ@? LaZ 4ܪ[-'BBRP̛*y+uvg!B#n;MG4Zly\Ѣ瞚-Sӟ-5#%_v^QdRPDZTRR OԵ@*(AWE],RIR57P&?2oƐ(~#FLg5=dF#zvL;mf&,mXJ[a # }R:%e-vvS=U:霾es endstream endobj 549 0 obj << /Length 194 /Filter /FlateDecode >> stream x3331V0PaS SsCB.S I$r9yr+p{E=}JJS ]  b<]Bc``D@.0L1S?UB7@`JJ=SP (<9P@=mrC%hAC!@ y`> stream xuб 0  /0 D4?/iLsqINƪ&v)9 O44FQ5o3j ioKk2 DdFLƤ1(C8^QDɰ|p1۽."byҀ)gk׿R?U~ endstream endobj 551 0 obj << /Length 166 /Filter /FlateDecode >> stream x353R0P0bSCSsCB.s I$r9yr+s{E=}JJS ]  b<]d `6`RAI68؀L2`%Hv0)"G'!P5Ⱥ AJ$ `G@%\=Mx endstream endobj 552 0 obj << /Length 254 /Filter /FlateDecode >> stream xڭѱJ@?l&yM"&`p` A+ :--7`kMg+ & XKf]{t\)pp{ =SuV=UvT]j__Z]>5(6S`-̗oնd IS03aLlB".!1Ox&pcJ&HۅrI)ܔ_,v0{ltT颧 endstream endobj 553 0 obj << /Length 125 /Filter /FlateDecode >> stream x333P0P0bSKSsCB.SS I$r9yr+r{E=}JJS ]  b<]?T b78) s)hb y.WO@.!7 endstream endobj 554 0 obj << /Length 106 /Filter /FlateDecode >> stream x3ԳT0P0aKSsCB.#3 I$r9yr+q{E=}JJS ]  b<]acW3v\ endstream endobj 555 0 obj << /Length 165 /Filter /FlateDecode >> stream x3133W0P0V5R0T05WH1*26 (ZBds<M=\ %E\N \. ц \. ?@"000=o`#?0o  0X0`ao`27Áq \\\` endstream endobj 556 0 obj << /Length 243 /Filter /FlateDecode >> stream x]J@Yr̡@&A[sjsɃxj= Qj(y=HДeDz~,//Ue7~_G8"Ǎ;ΟGΗoKWn6^D8I F"!:+2oa[87`d`+hLMfp&byiguf0~5jRryd* Sk_ N9Lxods-5P endstream endobj 557 0 obj << /Length 140 /Filter /FlateDecode >> stream x35ԳT0P0bKSsCB.S I$r9yr+r{E=}JJS ]  b<]d3 eR/i& 0 d`L?`@!\=Afl endstream endobj 558 0 obj << /Length 244 /Filter /FlateDecode >> stream xu?kP{<0p '% ur(vtـ]G|X#y=8. [~< 8:İ˵W|Ք.1wQ@jH>yo瘣1 ý 8hFx]*18yTB,a PM 2< fep\$I5+zG4VY5D NZ@fW'coQ! endstream endobj 559 0 obj << /Length 243 /Filter /FlateDecode >> stream xUпJ@/.0fMN?Sge!VjihkR\AKT֩$EuwM1f``w%=.>jRWRkRnKO/VSYZR7T@fm큼0 {düۘ=4]L3Ȧa@bli@T|`MLjb4L1dtFW$G *.|ؙtI6Dc endstream endobj 560 0 obj << /Length 239 /Filter /FlateDecode >> stream xڭ08#^@D'D::htGxWm~_LyxJsNgo(I5M7?/&~I#K CԼ*x1F%)dB 񑊅A8EjGU(Nk4, ~j}> stream x3535T0P0bS#SsCB.K I$r9yr+Xr{E=}JJS ]ry( , LS? 0adT Y;PCuP7 .ĵ'W K endstream endobj 562 0 obj << /Length 309 /Filter /FlateDecode >> stream xڭJ@ba 3/I B<ZYii(6Y>D|I":$Eٙٙ/ -K3&tGt|My Z˽gxE7)%Z[Vz=EdꀚKzN.{7A|$sQЄ>j"vDmvs#Lÿb~dG[VueajEyȳvY:%*?ʵJ~D`q@\qBc̚p` jڷ<q}^+ 6 endstream endobj 563 0 obj << /Length 221 /Filter /FlateDecode >> stream xڕѽ 0𖂁#x/i*U ~I(}JK "&HrtF*8 q0Y Ȁf4  ״ 2o@.08BDu uf,HW lf(ze~ަ_Q@6+L6elZv,XKP~EԺe֩N=v< endstream endobj 564 0 obj << /Length 256 /Filter /FlateDecode >> stream xUϱN0 )K~h{=B @!Z̏F%Psw|J8êt0r^jE>U KWk=?ܻbuyJz_uEk?ƌ!fl#>3Z;@'7x &&ȖNm9R0!G/aEFD+E$ьMX^>a-M=:upǴ-i}GA^{sywָ+=# endstream endobj 565 0 obj << /Length 150 /Filter /FlateDecode >> stream x3Գ4W0P0bSsJ1*2" Fr.'~1PKW4K)YKE!P E?<@0g`A bP>T*L`)`J+F Hʃr Wr endstream endobj 566 0 obj << /Length 191 /Filter /FlateDecode >> stream x= @B\@7JL!he!Vj)h9G,Sl3X,fuVsmnFlzl @Hw4HH/I'S>[ِ҃C#^(>l \3X~ZPCAJ'BEH?4u7{-'ROr%xVݙ÷C qBszxa endstream endobj 567 0 obj << /Length 240 /Filter /FlateDecode >> stream xm1j0g1> stream xu1K0W v8b vtr@?')ΝCMHH^K^Y/PX.8\> stream x]AJ0CМ.8]ʅ҅&uW<3ѐ.OXSZ[svn Ik_> stream xαJAYL"y.p1bLBASP=p2E8n@,ofgɌKWR+s8 5srzJ 5W7Y ~k%vTZ^{cٳUoC0˖*STB`ζ&%EQ0b43e}"_馡}l endstream endobj 571 0 obj << /Length 232 /Filter /FlateDecode >> stream xU1J@/&Gw@B,āuSZY `-G#liv|ߋ`fȟiʓRuMϕK]ټOӺVEͅF6}8rBG g@p voDD,ZNE- -FI2vpeDZdbtkt`el6X"d=y<"W.;_t endstream endobj 572 0 obj << /Length 204 /Filter /FlateDecode >> stream xm; @ . Vf.1L!he!Vji(X({8Qښ}i<"Ńf{Qj{T3Qes:.{TŘ4 5E&6%/_x/PAP02g0yp&dBw:+0}ATyM6Ӣ5l.5iK|T endstream endobj 573 0 obj << /Length 198 /Filter /FlateDecode >> stream x3134V0P0R5T01V0PH1*21PASKLr.'~PKW4K)YKE!P ETD0S$00|`A; 00* ?8Q"I&PMb`߁q ̍:]'W ckA endstream endobj 574 0 obj << /Length 182 /Filter /FlateDecode >> stream xڍA `'?(   AZDjX.̣y҅Tcu 7f: 5P L % MBb%_/#jƒ&Ύ҄Z{Ue5TƩ-ՇW6j@-OӉ;*`{^[bTd7 wSZ= endstream endobj 575 0 obj << /Length 198 /Filter /FlateDecode >> stream x3134V0P0V5T01Q0PH1*21PASKLr.'~PKW4K)YKE!P ETz !HԱ` |P=iu D)ph<krF=A?0`> stream x]1 @\B/ 8M(+Tr!bI q23;9nvdC)lGUgwIBf6$32d@fr@&m)2ϩ\^sϵ2HQRQO5QJrh MTrL@V@ endstream endobj 577 0 obj << /Length 141 /Filter /FlateDecode >> stream x3236W0P0bcSKCB.# I$r9yr+Yp{E=}JJS ]*c<]70| C`003a`\=&[ endstream endobj 578 0 obj << /Length 237 /Filter /FlateDecode >> stream xڍJ1ƿ00 v^@9Å+T[}> stream x3134V0P0bS CB.C I$r9yr+r{E=}JJS. @-\. ?&iNa`D~700n?D䇁$7 \\\y endstream endobj 580 0 obj << /Length 122 /Filter /FlateDecode >> stream x3230W0P0aCS3CB.C I$r9yr+Zp{E=}JJS ]  b<]0@A@8~? q0\=(CE` endstream endobj 581 0 obj << /Length 150 /Filter /FlateDecode >> stream x3236W0P5Q54W0P05SH1*22 (s< =\ %E\N @QhX.O  P?`E6?gc?P~.WO@.W endstream endobj 582 0 obj << /Length 196 /Filter /FlateDecode >> stream xڵ1 @Еir3'p.#BBRPQr0E:? d37u.{ʧHrCqJzƁGz$15x2`ts [R?L3؂rkm;x3HKv@%.oԐ nn**ɍ@ÔDr endstream endobj 583 0 obj << /Length 108 /Filter /FlateDecode >> stream x3230W0P0aCS CB.C I$r9yr+Zp{E=}JJS ]  b<]?0! ̃`qzrrƂQ. endstream endobj 584 0 obj << /Length 177 /Filter /FlateDecode >> stream x33R0Pa3scsCB.3 I$r9yr+p{E=}JJS ]  b<]?`@=:773n? Da`N``` O7Nszrr#߈ endstream endobj 585 0 obj << /Length 147 /Filter /FlateDecode >> stream x3134V0P0bcsCB.C I$r9yr+r{E=}JJS. @-\. ?00`D~70n?D䇁$0I.WO@.e% endstream endobj 586 0 obj << /Length 188 /Filter /FlateDecode >> stream xڍ1@E #0e6 &naRK v9GTd)HN^f̦ǚ95(EqߜR{cRkI ? ldM*H&g8^WSQdHVR!J*- i~ nN/ookg$AH> wlzZIK endstream endobj 587 0 obj << /Length 196 /Filter /FlateDecode >> stream xڝα @ HByuj;:9::(>Zp"]qQ |CB?2ܓ1G!#I:Ramd$V$fO"tٓH$R^K6ʯ\UW0/%>T5*4hy~> stream x31ֳ0R0P0V54S01Q06WH1*21PAScTr.'~PKW4K)YKE!P E0a<|?`0?> stream x3635R0PacCcsCB.# I$r9yr+Yp{E=}JJS ]  b<]3P?n3 ~o0ah`?PszrrjF endstream endobj 590 0 obj << /Length 195 /Filter /FlateDecode >> stream x=αJ@Xf x{`TSwZ * W6`"8%Gf|q~K.4pR^j<> stream x363T0P0T5T0P05TH1*22 (Ads≮=\ %E\N \. ц \.   W  @ @,?(fQ 0pC sC3=;?f.WO@.uH endstream endobj 592 0 obj << /Length 153 /Filter /FlateDecode >> stream x3134V0P0R5T01Q06WH1*21 ([@ds<L =\ %E\N @QhX.O `J`pB`왏I@.WO@.1c endstream endobj 593 0 obj << /Length 183 /Filter /FlateDecode >> stream xU̱ P#k[WJ' rjj Ɔh>`Phj @ B\Q#HEldȗ$"Sg3:.{|LVkRj_ ..X ,g0i) <p&A=j|c(vk]b=(ԿOI |F? endstream endobj 594 0 obj << /Length 233 /Filter /FlateDecode >> stream xU=KPs Xxv(zb`A' Q|A7|~Lx`7UN?8g!Aj"z$r~nhdHڙdrO/$GcHN* WUP6Aߴ45q " bx%tq_cGŲh;L t5<fOk2|+ZlECd(IBY_ endstream endobj 595 0 obj << /Length 210 /Filter /FlateDecode >> stream xMν @ )(> stream xUj@Yi nZ$sSEGQ|x I;=F(N8^D!qiIs ǔB3I-1QYAg//74gZv* 0ÿ+]SCE@QsϰF,IqSn/'gCb^mmjg`1'>ڟK endstream endobj 597 0 obj << /Length 183 /Filter /FlateDecode >> stream x%1 @@$|'0+AA),DQI:IUuO)Fh~!;:c̐ېዬQ֑)HpIH]RY#H[m(l2Oe-?uC endstream endobj 598 0 obj << /Length 188 /Filter /FlateDecode >> stream xڵ1 @EH!L#d.ͺB` A+ RK EBbGRRl6Pt+ǬƬ5$Ii;Xf$#aI,Dv$f,I(K~ |[jWopG!SE /zO6x+ӸY~uд` endstream endobj 599 0 obj << /Length 121 /Filter /FlateDecode >> stream x3135R0P0bc3SSCB.# I$r9yr+Yp{E=}JJS ]  b<]0001; aX*6T?0'W N endstream endobj 600 0 obj << /Length 228 /Filter /FlateDecode >> stream xmαJ@o"0M^ป'pWSZY `eh>J+5E~;Yct_^iC-/+9u'Zst }{} ,, %s'l"aAZқMY'W Tc| endstream endobj 601 0 obj << /Length 235 /Filter /FlateDecode >> stream xu1N0ЉRX`3',ZiY$R AE GQr[0"OʌǓ/^ҟ+Vɾݭ%+yxb>F:iy-29Q EPE6fLV&b&e6fՎY (y/ifU _ cBԨM>y2_ |Ǜjh endstream endobj 602 0 obj << /Length 188 /Filter /FlateDecode >> stream xڕν @ + At-('𮶵kotrP?Q_ I+F!=ړ,o)$G$'KROt8oH&{$S^zVSBĢ iAf1h.p;`Z \2oߛy544` endstream endobj 603 0 obj << /Length 226 /Filter /FlateDecode >> stream xڕϿjAna s=b!j WJ!`R nGG8̜EH:_1;dySpnyΟ9)_6[d?9oR&[}";YL9#;e銊Һ„pQ*+j .+xs7xĕ\ }rR /:tKuNTc'ې'jiT2Dׂ+X endstream endobj 604 0 obj << /Length 243 /Filter /FlateDecode >> stream xmJ@O"p}dXW0 j)h()SDm>{uuVZjG+9}Mjag"VNbkx|JV+-*@ Ps&[ D>#E@rI~2> stream xڕα @ HB}Ѽ]`A'u(GQ|TZ?$w#3ihdȎhC!s8cТZp*Yz?WS2f5wHPQY 4a:B@ 8 1n -SQR-8 d_Ѯ+J_> stream xMJ@Eo[8м$AB`B]W҅E ;#Ǜ*y{wquLZZj}%OR7KmN~&wlֺ₲<>H\i%Jo*-o])L O[ `;d1a3X`LpM6{{xSHp|tO01l6 i4,e3zwgRS@v伕+c endstream endobj 607 0 obj << /Length 237 /Filter /FlateDecode >> stream xu1N0бRD@\lBTE"T AKr!e3 gi_'aE5tB 2(_pӢ&1^_v7T]M=[b.'0S2*(ٌ`&p B!t 灼__Rc%ɞ 6{6C!Ic)A?XZ1IN+OVqY- m9 endstream endobj 11 0 obj << /Type /Font /Subtype /Type3 /Name /F15 /FontMatrix [0.01204 0 0 0.01204 0 0] /FontBBox [ -4 -21 83 62 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 16 /LastChar 124 /Widths 608 0 R /Encoding 609 0 R /CharProcs 610 0 R >> endobj 608 0 obj [27.68 27.68 0 0 0 0 83.04 0 0 0 0 48.44 46.13 46.13 69.2 0 0 23.07 41.52 0 0 69.2 64.58 23.07 32.29 32.29 41.52 64.58 23.07 27.68 23.07 41.52 41.52 41.52 41.52 41.52 41.52 41.52 41.52 41.52 41.52 41.52 23.07 23.07 64.58 0 64.58 39.21 0 62.28 58.82 59.97 63.43 56.51 54.2 65.16 62.28 29.99 42.67 64.58 51.9 76.12 62.28 64.58 56.51 64.58 61.12 46.13 59.97 62.28 62.28 85.34 62.28 62.28 50.74 0 0 0 0 64.58 0 41.52 46.13 36.91 46.13 36.91 25.37 41.52 46.13 23.07 25.37 43.82 23.07 69.2 46.13 41.52 46.13 43.82 32.52 32.75 32.29 46.13 43.82 59.97 43.82 43.82 36.91 0 23.07 ] endobj 609 0 obj << /Type /Encoding /Differences [16/a16/a17 18/.notdef 22/a22 23/.notdef 27/a27/a28/a29/a30 31/.notdef 33/a33/a34 35/.notdef 37/a37/a38/a39/a40/a41/a42/a43/a44/a45/a46/a47/a48/a49/a50/a51/a52/a53/a54/a55/a56/a57/a58/a59/a60 61/.notdef 62/a62/a63 64/.notdef 65/a65/a66/a67/a68/a69/a70/a71/a72/a73/a74/a75/a76/a77/a78/a79/a80/a81/a82/a83/a84/a85/a86/a87/a88/a89/a90 91/.notdef 95/a95 96/.notdef 97/a97/a98/a99/a100/a101/a102/a103/a104/a105/a106/a107/a108/a109/a110/a111/a112/a113/a114/a115/a116/a117/a118/a119/a120/a121/a122 123/.notdef 124/a124] >> endobj 610 0 obj << /a16 536 0 R /a17 534 0 R /a22 537 0 R /a27 541 0 R /a28 540 0 R /a29 542 0 R /a30 543 0 R /a33 525 0 R /a34 538 0 R /a37 539 0 R /a38 544 0 R /a39 526 0 R /a40 519 0 R /a41 520 0 R /a42 527 0 R /a43 528 0 R /a44 529 0 R /a45 535 0 R /a46 530 0 R /a47 531 0 R /a48 598 0 R /a49 599 0 R /a50 600 0 R /a51 601 0 R /a52 602 0 R /a53 603 0 R /a54 604 0 R /a55 605 0 R /a56 606 0 R /a57 607 0 R /a58 532 0 R /a59 533 0 R /a60 521 0 R /a62 523 0 R /a63 545 0 R /a65 546 0 R /a66 547 0 R /a67 548 0 R /a68 549 0 R /a69 550 0 R /a70 551 0 R /a71 552 0 R /a72 553 0 R /a73 554 0 R /a74 555 0 R /a75 556 0 R /a76 557 0 R /a77 558 0 R /a78 559 0 R /a79 560 0 R /a80 561 0 R /a81 562 0 R /a82 563 0 R /a83 564 0 R /a84 565 0 R /a85 566 0 R /a86 567 0 R /a87 568 0 R /a88 569 0 R /a89 570 0 R /a90 571 0 R /a95 524 0 R /a97 572 0 R /a98 573 0 R /a99 574 0 R /a100 575 0 R /a101 576 0 R /a102 577 0 R /a103 578 0 R /a104 579 0 R /a105 580 0 R /a106 581 0 R /a107 582 0 R /a108 583 0 R /a109 584 0 R /a110 585 0 R /a111 586 0 R /a112 587 0 R /a113 588 0 R /a114 589 0 R /a115 590 0 R /a116 591 0 R /a117 592 0 R /a118 593 0 R /a119 594 0 R /a120 595 0 R /a121 596 0 R /a122 597 0 R /a124 522 0 R >> endobj 611 0 obj << /Length 136 /Filter /FlateDecode >> stream x323P0PP5T02P04PH1*24(YBs< =\ %E\N @QhX.O9   fv6> $'W  ' endstream endobj 612 0 obj << /Length 257 /Filter /FlateDecode >> stream xuбj0d=A-pHRB;u(@19G#d`d |' 󟖋;}O5\RQ`ȻO}c~[zIc%a,D!Q$mbG2bWh*^jL/.i AjS]3}`qd;<z<ĠuH> stream xڝN0?+C$/~ @pKV*E"L02`ȣD`7я$7d*:}$ X endstream endobj 614 0 obj << /Length 213 /Filter /FlateDecode >> stream xMͱN@б\DTd""R.HE) h!kfg:[\ꗺXS)Ks"Z;׌oY2=7Ro0ͬ&a8YZi4 %:1X[z83L̺E[y!8}?+O2dWtm8 \\ղuY endstream endobj 615 0 obj << /Length 160 /Filter /FlateDecode >> stream x36׳4R0P0R5T06V03TH1*26PA3#Lr.'~PKW4K)YKE!P Ea9$luPفX$N#Ccagc{  00?r Jm endstream endobj 616 0 obj << /Length 162 /Filter /FlateDecode >> stream x1 @ᷤL fqC@Vb--+'Gˑ<@Ⱥ!X l3pjZ>DŽm:L#c^[z?.6 6KNJV- -reByDz 7U}`(D,uxI0nҷWR hhKob endstream endobj 617 0 obj << /Length 207 /Filter /FlateDecode >> stream xڽ P FҡмVn?`A'qRGE7f}>BŚނ*3$|9VuQۀ}+5͞1%kTڤ|18Ux*%V738 \A&rOP deyܿ>X ?c\%#'q(IfNĴ) endstream endobj 618 0 obj << /Length 259 /Filter /FlateDecode >> stream x]J@Of!"." E0pA.Z v |˝gH0??pNNmnҮwYUϹ勧7wk"nssa q[{_AꭅBaD4%;>#p{%*édlW]HO˷df 3ÂױtK҇FoMfl=o,"E"pLΉ~WhFF*4& !3DWZnvj endstream endobj 619 0 obj << /Length 262 /Filter /FlateDecode >> stream xuJ@O};/I$7 \` A+ RKAE;Gˣ#L2&" _ɚ3.5%LErHk.2J__(\rNorn2 h!P#a]a:x-}bh~mh!?0B~! ?#;CsŨ^JԴIPG^`M !A#`xBo~^}gt tچpYzLG%NC:k>y endstream endobj 6 0 obj << /Type /Font /Subtype /Type3 /Name /F18 /FontMatrix [0.01004 0 0 0.01004 0 0] /FontBBox [ 2 -21 70 71 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 44 /LastChar 117 /Widths 620 0 R /Encoding 621 0 R /CharProcs 622 0 R >> endobj 620 0 obj [27.08 0 0 0 48.75 0 48.75 0 0 0 0 0 0 48.75 0 0 0 0 0 0 0 73.09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48.75 0 0 0 0 0 0 0 0 0 0 0 38.46 37.92 54.17 ] endobj 621 0 obj << /Type /Encoding /Differences [44/a44 45/.notdef 48/a48 49/.notdef 50/a50 51/.notdef 57/a57 58/.notdef 65/a65 66/.notdef 103/a103 104/.notdef 115/a115/a116/a117] >> endobj 622 0 obj << /a44 611 0 R /a48 617 0 R /a50 618 0 R /a57 619 0 R /a65 612 0 R /a103 613 0 R /a115 614 0 R /a116 615 0 R /a117 616 0 R >> endobj 623 0 obj << /Length 408 /Filter /FlateDecode >> stream xԱN0P["y'?K%KHd@uF`C/UCcv'JM_j-<<:ޅM0\y%˯dsgyy!^Y><3q#E1gL|U \ ̘%! 7lƘ !DS㭶Ԭ$m'UmQxKc%:20֚]H=kn;+ᳪ#٧<}r;ytV;[wvɦ?*}VRh0ϰ7UF4?>2]=n%kӝ 0ys熂lɦ=[ 3DgTʕ}T endstream endobj 624 0 obj << /Length 397 /Filter /FlateDecode >> stream xڍԱN0`G,y~*UTD$02@P)yYY1!Nު{ endstream endobj 625 0 obj << /Length 328 /Filter /FlateDecode >> stream xmJ0  ܥ{`<'As7oRߠ*Ԏ5SBH $[NN30Y1/:_7+zSK^N+t5wѽ.Uf/P@FǰǰQjbX!fKb1"<.£8#zF6bfK,6§h#|nfg&FbO!{fb@`6ĊY Đ@Kb!&WbPd RBy,SogLċM endstream endobj 626 0 obj << /Length 114 /Filter /FlateDecode >> stream x3137S0Pbc3ssCB.# HrW02r{*r;8+r(D*ry(2fQ Px'W 6w endstream endobj 5 0 obj << /Type /Font /Subtype /Type3 /Name /F17 /FontMatrix [0.00697 0 0 0.00697 0 0] /FontBBox [ 9 -2 104 100 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 71 /LastChar 105 /Widths 627 0 R /Encoding 628 0 R /CharProcs 629 0 R >> endobj 627 0 obj [111.37 0 0 0 110.27 0 0 106.41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43.76 ] endobj 628 0 obj << /Type /Encoding /Differences [71/a71 72/.notdef 75/a75 76/.notdef 78/a78 79/.notdef 105/a105] >> endobj 629 0 obj << /a71 623 0 R /a75 624 0 R /a78 625 0 R /a105 626 0 R >> endobj 630 0 obj << /Length 190 /Filter /FlateDecode >> stream xڳ436W0P0bK#K CB. 3 I$r9yr+Xq{E=}JJS ]  b<]" ` )dQe21 8pfAfiA&iΔg22Ge^L0 @ Փ+  endstream endobj 631 0 obj << /Length 287 /Filter /FlateDecode >> stream xڕѽN0> stream xڝJ1'lq0޼fpVb]hy}-86L /;q5%QwFO-kHfr;r +ZoyaC 2i寙5z>%k<&r,`vd+q3ߒ1^+ \oxE<@G*q/|Aoٸ=,8U(`ش fA-pڟڤPj"{mI倷YR endstream endobj 633 0 obj << /Length 219 /Filter /FlateDecode >> stream x37ѳT0P0bsCCCB.33JrW03 s{*r;8+r(D*ry(00`P"0C=~d3@@C P?P 8xq83qe0w`0H+p32> f qՓ+ P endstream endobj 634 0 obj << /Length 123 /Filter /FlateDecode >> stream x3631R0P0bc#CCB.#3JrW02 s{*r;8+r(D*ry(070o`G1 d endstream endobj 635 0 obj << /Length 252 /Filter /FlateDecode >> stream xұJ1;|Iej`]),APKAEn"v[ |]\k܄[vGXN n2rב)MZ/W4mɟ˟1cɷ'E37.\P;s0 ]*\T3&03vrHM%.,^{aK u`m)4`BO5䀳"mDV_—B.fY/ë/AG-!A B endstream endobj 636 0 obj << /Length 207 /Filter /FlateDecode >> stream xѡ0[*#pO@@ %0&H@! $h%#L"uDKzz٢"\1CtAݓSi֫u{СuB U|0ۀؖB%/Q@Px_Qv؁ʲ#rO ^7\gpx'A~^ɼP/nC|U endstream endobj 637 0 obj << /Length 203 /Filter /FlateDecode >> stream xҿAr $7/eQII\!R Q,'s0eQ"ܟ3?(%V U Вn(6Y4n+|א<>ȭh\ E&tj8 endstream endobj 4 0 obj << /Type /Font /Subtype /Type3 /Name /F16 /FontMatrix [0.00697 0 0 0.00697 0 0] /FontBBox [ 4 -1 109 100 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 84 /LastChar 117 /Widths 638 0 R /Encoding 639 0 R /CharProcs 640 0 R >> endobj 638 0 obj [97.37 0 0 0 0 0 0 0 0 0 0 0 0 67.4 0 0 0 59.9 0 0 74.89 0 0 0 37.42 112.36 74.89 0 0 0 0 0 0 74.89 ] endobj 639 0 obj << /Type /Encoding /Differences [84/a84 85/.notdef 97/a97 98/.notdef 101/a101 102/.notdef 104/a104 105/.notdef 108/a108/a109/a110 111/.notdef 117/a117] >> endobj 640 0 obj << /a84 630 0 R /a97 631 0 R /a101 632 0 R /a104 633 0 R /a108 634 0 R /a109 635 0 R /a110 636 0 R /a117 637 0 R >> endobj 7 0 obj << /Type /Pages /Count 6 /Parent 641 0 R /Kids [2 0 R 9 0 R 13 0 R 18 0 R 23 0 R 26 0 R] >> endobj 35 0 obj << /Type /Pages /Count 6 /Parent 641 0 R /Kids [29 0 R 37 0 R 40 0 R 43 0 R 46 0 R 49 0 R] >> endobj 54 0 obj << /Type /Pages /Count 6 /Parent 641 0 R /Kids [52 0 R 56 0 R 60 0 R 63 0 R 66 0 R 69 0 R] >> endobj 74 0 obj << /Type /Pages /Count 6 /Parent 641 0 R /Kids [72 0 R 76 0 R 79 0 R 82 0 R 85 0 R 88 0 R] >> endobj 93 0 obj << /Type /Pages /Count 6 /Parent 641 0 R /Kids [91 0 R 95 0 R 98 0 R 101 0 R 104 0 R 108 0 R] >> endobj 113 0 obj << /Type /Pages /Count 5 /Parent 641 0 R /Kids [111 0 R 115 0 R 118 0 R 121 0 R 124 0 R] >> endobj 641 0 obj << /Type /Pages /Count 35 /Kids [7 0 R 35 0 R 54 0 R 74 0 R 93 0 R 113 0 R] >> endobj 642 0 obj << /Type /Catalog /Pages 641 0 R >> endobj 643 0 obj << /Producer (MiKTeX pdfTeX-1.40.9) /Creator (TeX) /CreationDate (D:20090829015040-04'00') /ModDate (D:20090829015040-04'00') /Trapped /False /PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.7.3235 (1.40.9)) >> endobj xref 0 644 0000000000 65535 f 0000000343 00000 n 0000000239 00000 n 0000000015 00000 n 0000231258 00000 n 0000228311 00000 n 0000225960 00000 n 0000231931 00000 n 0000000745 00000 n 0000000640 00000 n 0000000433 00000 n 0000220692 00000 n 0000001722 00000 n 0000001615 00000 n 0000000814 00000 n 0000194931 00000 n 0000178936 00000 n 0000003080 00000 n 0000002973 00000 n 0000001816 00000 n 0000174569 00000 n 0000158328 00000 n 0000004767 00000 n 0000004660 00000 n 0000003186 00000 n 0000005434 00000 n 0000005327 00000 n 0000004849 00000 n 0000007478 00000 n 0000007370 00000 n 0000005516 00000 n 0000145169 00000 n 0000134716 00000 n 0000113663 00000 n 0000093470 00000 n 0000232038 00000 n 0000010255 00000 n 0000010147 00000 n 0000007620 00000 n 0000012800 00000 n 0000012692 00000 n 0000010361 00000 n 0000015280 00000 n 0000015172 00000 n 0000012918 00000 n 0000016640 00000 n 0000016532 00000 n 0000015386 00000 n 0000018981 00000 n 0000018873 00000 n 0000016746 00000 n 0000021857 00000 n 0000021749 00000 n 0000019111 00000 n 0000232148 00000 n 0000024728 00000 n 0000024620 00000 n 0000021963 00000 n 0000074854 00000 n 0000026757 00000 n 0000026649 00000 n 0000024858 00000 n 0000029594 00000 n 0000029486 00000 n 0000026899 00000 n 0000032696 00000 n 0000032588 00000 n 0000029712 00000 n 0000034285 00000 n 0000034177 00000 n 0000032814 00000 n 0000036042 00000 n 0000035934 00000 n 0000034367 00000 n 0000232258 00000 n 0000037503 00000 n 0000037395 00000 n 0000036160 00000 n 0000039827 00000 n 0000039719 00000 n 0000037597 00000 n 0000042486 00000 n 0000042378 00000 n 0000039969 00000 n 0000045123 00000 n 0000045015 00000 n 0000042592 00000 n 0000047916 00000 n 0000047808 00000 n 0000045241 00000 n 0000050711 00000 n 0000050603 00000 n 0000048034 00000 n 0000232368 00000 n 0000053944 00000 n 0000053836 00000 n 0000050829 00000 n 0000055625 00000 n 0000055517 00000 n 0000054050 00000 n 0000057506 00000 n 0000057395 00000 n 0000055731 00000 n 0000060263 00000 n 0000060152 00000 n 0000057637 00000 n 0000073014 00000 n 0000061774 00000 n 0000061663 00000 n 0000060371 00000 n 0000063321 00000 n 0000063209 00000 n 0000061857 00000 n 0000232481 00000 n 0000065270 00000 n 0000065158 00000 n 0000063452 00000 n 0000067152 00000 n 0000067040 00000 n 0000065389 00000 n 0000068908 00000 n 0000068796 00000 n 0000067235 00000 n 0000070430 00000 n 0000070318 00000 n 0000069027 00000 n 0000070525 00000 n 0000070706 00000 n 0000070963 00000 n 0000071252 00000 n 0000071568 00000 n 0000071840 00000 n 0000072139 00000 n 0000072461 00000 n 0000072748 00000 n 0000073264 00000 n 0000073458 00000 n 0000073634 00000 n 0000073780 00000 n 0000073970 00000 n 0000074264 00000 n 0000074576 00000 n 0000075102 00000 n 0000075280 00000 n 0000075401 00000 n 0000075478 00000 n 0000075792 00000 n 0000076097 00000 n 0000076327 00000 n 0000076513 00000 n 0000076812 00000 n 0000076989 00000 n 0000077286 00000 n 0000077570 00000 n 0000077817 00000 n 0000078133 00000 n 0000078520 00000 n 0000078830 00000 n 0000079119 00000 n 0000079373 00000 n 0000079754 00000 n 0000080007 00000 n 0000080378 00000 n 0000080608 00000 n 0000080967 00000 n 0000081325 00000 n 0000081692 00000 n 0000081958 00000 n 0000082290 00000 n 0000082675 00000 n 0000082918 00000 n 0000083207 00000 n 0000083666 00000 n 0000084069 00000 n 0000084401 00000 n 0000084749 00000 n 0000085062 00000 n 0000085372 00000 n 0000085667 00000 n 0000085969 00000 n 0000086276 00000 n 0000086524 00000 n 0000086886 00000 n 0000087134 00000 n 0000087346 00000 n 0000087613 00000 n 0000087914 00000 n 0000088102 00000 n 0000088392 00000 n 0000088635 00000 n 0000088929 00000 n 0000089237 00000 n 0000089479 00000 n 0000089783 00000 n 0000090037 00000 n 0000090284 00000 n 0000090581 00000 n 0000090938 00000 n 0000091253 00000 n 0000091601 00000 n 0000091808 00000 n 0000092155 00000 n 0000092494 00000 n 0000092791 00000 n 0000093125 00000 n 0000093721 00000 n 0000094195 00000 n 0000094669 00000 n 0000095493 00000 n 0000095741 00000 n 0000095918 00000 n 0000096161 00000 n 0000096356 00000 n 0000096553 00000 n 0000096738 00000 n 0000096932 00000 n 0000097149 00000 n 0000097329 00000 n 0000097567 00000 n 0000097755 00000 n 0000097946 00000 n 0000098204 00000 n 0000098388 00000 n 0000098586 00000 n 0000098835 00000 n 0000099167 00000 n 0000099487 00000 n 0000099752 00000 n 0000100023 00000 n 0000100322 00000 n 0000100586 00000 n 0000100814 00000 n 0000101040 00000 n 0000101348 00000 n 0000101549 00000 n 0000101738 00000 n 0000102037 00000 n 0000102241 00000 n 0000102499 00000 n 0000102774 00000 n 0000103025 00000 n 0000103280 00000 n 0000103558 00000 n 0000103875 00000 n 0000104080 00000 n 0000104328 00000 n 0000104598 00000 n 0000104876 00000 n 0000105183 00000 n 0000105446 00000 n 0000105718 00000 n 0000105986 00000 n 0000106249 00000 n 0000106523 00000 n 0000106805 00000 n 0000107040 00000 n 0000107374 00000 n 0000107616 00000 n 0000107829 00000 n 0000108079 00000 n 0000108358 00000 n 0000108554 00000 n 0000108806 00000 n 0000109042 00000 n 0000109306 00000 n 0000109587 00000 n 0000109826 00000 n 0000110092 00000 n 0000110328 00000 n 0000110557 00000 n 0000110824 00000 n 0000111079 00000 n 0000111362 00000 n 0000111680 00000 n 0000111937 00000 n 0000112221 00000 n 0000112443 00000 n 0000112746 00000 n 0000113053 00000 n 0000113341 00000 n 0000113913 00000 n 0000114437 00000 n 0000115005 00000 n 0000115987 00000 n 0000116174 00000 n 0000116371 00000 n 0000116547 00000 n 0000116873 00000 n 0000117281 00000 n 0000117629 00000 n 0000118048 00000 n 0000118387 00000 n 0000118696 00000 n 0000118969 00000 n 0000119399 00000 n 0000119585 00000 n 0000120010 00000 n 0000120248 00000 n 0000120640 00000 n 0000121037 00000 n 0000121443 00000 n 0000121733 00000 n 0000122104 00000 n 0000122531 00000 n 0000122788 00000 n 0000123102 00000 n 0000123530 00000 n 0000124070 00000 n 0000124421 00000 n 0000124759 00000 n 0000125083 00000 n 0000125417 00000 n 0000125742 00000 n 0000125998 00000 n 0000126403 00000 n 0000126670 00000 n 0000126889 00000 n 0000127213 00000 n 0000127401 00000 n 0000127714 00000 n 0000127979 00000 n 0000128291 00000 n 0000128627 00000 n 0000128877 00000 n 0000129217 00000 n 0000129484 00000 n 0000129752 00000 n 0000130085 00000 n 0000130475 00000 n 0000130826 00000 n 0000131217 00000 n 0000131530 00000 n 0000131748 00000 n 0000132130 00000 n 0000132516 00000 n 0000132822 00000 n 0000133188 00000 n 0000133583 00000 n 0000133903 00000 n 0000134323 00000 n 0000134966 00000 n 0000135376 00000 n 0000135812 00000 n 0000136597 00000 n 0000137095 00000 n 0000137654 00000 n 0000138091 00000 n 0000138497 00000 n 0000138894 00000 n 0000139200 00000 n 0000139440 00000 n 0000139738 00000 n 0000140142 00000 n 0000140424 00000 n 0000140723 00000 n 0000141169 00000 n 0000141400 00000 n 0000141882 00000 n 0000142388 00000 n 0000142749 00000 n 0000143211 00000 n 0000143715 00000 n 0000144097 00000 n 0000144660 00000 n 0000145420 00000 n 0000145669 00000 n 0000145972 00000 n 0000146277 00000 n 0000146562 00000 n 0000146837 00000 n 0000147055 00000 n 0000147272 00000 n 0000147446 00000 n 0000147691 00000 n 0000147889 00000 n 0000148066 00000 n 0000148309 00000 n 0000148639 00000 n 0000148928 00000 n 0000149270 00000 n 0000149606 00000 n 0000149901 00000 n 0000150235 00000 n 0000150528 00000 n 0000150822 00000 n 0000151089 00000 n 0000151407 00000 n 0000151681 00000 n 0000151978 00000 n 0000152295 00000 n 0000152605 00000 n 0000152873 00000 n 0000153169 00000 n 0000153498 00000 n 0000153751 00000 n 0000154098 00000 n 0000154404 00000 n 0000154675 00000 n 0000154994 00000 n 0000155257 00000 n 0000155538 00000 n 0000155797 00000 n 0000156094 00000 n 0000156380 00000 n 0000156699 00000 n 0000156996 00000 n 0000157320 00000 n 0000157631 00000 n 0000157989 00000 n 0000158578 00000 n 0000158936 00000 n 0000159324 00000 n 0000159914 00000 n 0000160125 00000 n 0000160486 00000 n 0000161321 00000 n 0000161899 00000 n 0000162549 00000 n 0000163196 00000 n 0000163393 00000 n 0000164018 00000 n 0000164301 00000 n 0000164860 00000 n 0000165451 00000 n 0000165759 00000 n 0000166168 00000 n 0000166668 00000 n 0000167106 00000 n 0000167547 00000 n 0000167988 00000 n 0000168599 00000 n 0000168946 00000 n 0000169201 00000 n 0000169670 00000 n 0000169873 00000 n 0000170293 00000 n 0000170630 00000 n 0000171058 00000 n 0000171519 00000 n 0000171828 00000 n 0000172303 00000 n 0000172627 00000 n 0000172966 00000 n 0000173416 00000 n 0000173996 00000 n 0000174820 00000 n 0000175180 00000 n 0000175605 00000 n 0000176075 00000 n 0000176420 00000 n 0000176667 00000 n 0000176993 00000 n 0000177314 00000 n 0000177637 00000 n 0000177917 00000 n 0000178160 00000 n 0000178458 00000 n 0000178642 00000 n 0000179184 00000 n 0000179335 00000 n 0000179541 00000 n 0000179698 00000 n 0000179881 00000 n 0000180073 00000 n 0000180250 00000 n 0000180501 00000 n 0000180768 00000 n 0000181177 00000 n 0000181452 00000 n 0000181789 00000 n 0000182133 00000 n 0000182410 00000 n 0000182675 00000 n 0000183018 00000 n 0000183200 00000 n 0000183544 00000 n 0000183763 00000 n 0000184097 00000 n 0000184439 00000 n 0000184769 00000 n 0000185015 00000 n 0000185329 00000 n 0000185673 00000 n 0000185906 00000 n 0000186183 00000 n 0000186510 00000 n 0000186790 00000 n 0000187062 00000 n 0000187327 00000 n 0000187604 00000 n 0000187876 00000 n 0000188112 00000 n 0000188457 00000 n 0000188695 00000 n 0000188898 00000 n 0000189177 00000 n 0000189363 00000 n 0000189632 00000 n 0000189864 00000 n 0000190121 00000 n 0000190394 00000 n 0000190619 00000 n 0000190887 00000 n 0000191118 00000 n 0000191348 00000 n 0000191628 00000 n 0000191945 00000 n 0000192271 00000 n 0000192474 00000 n 0000192786 00000 n 0000193104 00000 n 0000193373 00000 n 0000193683 00000 n 0000193999 00000 n 0000194280 00000 n 0000194613 00000 n 0000195180 00000 n 0000195605 00000 n 0000196117 00000 n 0000196874 00000 n 0000197144 00000 n 0000197413 00000 n 0000197659 00000 n 0000197836 00000 n 0000198078 00000 n 0000198262 00000 n 0000198452 00000 n 0000198663 00000 n 0000198908 00000 n 0000199094 00000 n 0000199306 00000 n 0000199481 00000 n 0000199715 00000 n 0000199897 00000 n 0000200118 00000 n 0000200361 00000 n 0000200536 00000 n 0000200782 00000 n 0000200954 00000 n 0000201157 00000 n 0000201589 00000 n 0000201842 00000 n 0000202098 00000 n 0000202332 00000 n 0000202621 00000 n 0000203032 00000 n 0000203298 00000 n 0000203614 00000 n 0000203904 00000 n 0000204245 00000 n 0000204520 00000 n 0000204782 00000 n 0000205029 00000 n 0000205364 00000 n 0000205570 00000 n 0000205757 00000 n 0000206003 00000 n 0000206327 00000 n 0000206548 00000 n 0000206873 00000 n 0000207197 00000 n 0000207517 00000 n 0000207765 00000 n 0000208155 00000 n 0000208457 00000 n 0000208794 00000 n 0000209025 00000 n 0000209297 00000 n 0000209618 00000 n 0000210006 00000 n 0000210366 00000 n 0000210678 00000 n 0000210991 00000 n 0000211276 00000 n 0000211555 00000 n 0000211818 00000 n 0000212097 00000 n 0000212367 00000 n 0000212589 00000 n 0000212907 00000 n 0000213143 00000 n 0000213346 00000 n 0000213577 00000 n 0000213854 00000 n 0000214043 00000 n 0000214301 00000 n 0000214529 00000 n 0000214798 00000 n 0000215075 00000 n 0000215358 00000 n 0000215579 00000 n 0000215855 00000 n 0000216087 00000 n 0000216321 00000 n 0000216585 00000 n 0000216899 00000 n 0000217190 00000 n 0000217490 00000 n 0000217754 00000 n 0000218023 00000 n 0000218225 00000 n 0000218534 00000 n 0000218850 00000 n 0000219119 00000 n 0000219426 00000 n 0000219750 00000 n 0000220028 00000 n 0000220374 00000 n 0000220942 00000 n 0000221531 00000 n 0000222096 00000 n 0000223300 00000 n 0000223517 00000 n 0000223855 00000 n 0000224211 00000 n 0000224505 00000 n 0000224746 00000 n 0000224989 00000 n 0000225277 00000 n 0000225617 00000 n 0000226208 00000 n 0000226412 00000 n 0000226596 00000 n 0000226740 00000 n 0000227229 00000 n 0000227707 00000 n 0000228116 00000 n 0000228560 00000 n 0000228669 00000 n 0000228786 00000 n 0000228862 00000 n 0000229133 00000 n 0000229501 00000 n 0000229849 00000 n 0000230149 00000 n 0000230353 00000 n 0000230686 00000 n 0000230974 00000 n 0000231507 00000 n 0000231626 00000 n 0000231798 00000 n 0000232590 00000 n 0000232686 00000 n 0000232739 00000 n trailer << /Size 644 /Root 642 0 R /Info 643 0 R /ID [<8AFD4FC1F88A52898BE2876DBC6177ED> <8AFD4FC1F88A52898BE2876DBC6177ED>] >> startxref 232960 %%EOF king-2.21.120420/king/doc/work/0000755000000000000000000000000011744310054014271 5ustar rootrootking-2.21.120420/king/doc/work/hacking-king.doc0000644000000000000000000034100011531212662017310 0ustar rootrootࡱ> @  jbjbqq NlfffffffNNNNNt,N/fpjjjjjjjR/T/T/T/T/T/T/,0 3t/fjjjjj/~)ffjj~)~)~)jfjfjR/~)zdffffjR/~)~)R/ffR/ ?{NN($VR/R///R/3~)3R/~)Hacking KiNG This document is intended to provide a field guide to the code for KiNG and its associated libraries, Driftwood and Chiropraxis. For more information, please see the relevant Javadocs, and ultimately, the code itself. In particular, most of the references for the various published algorithms are somewhere in the Javadocs. Some parts of the code are better commented than others, but its mostly pretty comprehensible. If not, you can often use the incomprehensible parts without having to understand how they work. The first part of this discussion will provide an overview of all the code, starting with driftwood, building chiropraxis on top of that, and finally building king on top of them both. The second part will cover the organizational principles behind the layout of code and resources, compiling and building, maintaining documentation, and distributing finished applications. KiNG is always changing. This document was written in the early spring of 2004 (roughly version 1.22), and within a few months, several major changes have already occurred. So, take this document with a grain of salt; the final authority is the Javadocs and the code. In brief, here are some of the major changes. The drawing system has been reworked to use a Painter that basically replaces a java.awt.Graphics object. This allows us to do other types of non-Java rendering, such as OpenGL (via the JOGL library). The plugin system has been totally overhauled to follow a service-provider model, which is partially reflected in this document; some of the changes may not have made it in, though. All the structural biology-specific tools that used to be in the king.tool.* packages have been moved into chiropraxis.kingtools. This effectively inverts the dependency relationship KiNG no longer depends on Chiropraxis to compile, but compiling Chiropraxis now requires that KiNG be present. Last updated 6 June 2004 by IWD for KiNG 1.28. Overview of the code Packages driftwood.* and Jama.* This group of classes defines a lot of the low-level, highly-reusable functions I needed to build KiNG and the various macromolecular modeling tools. Most of the classes have few dependencies, and fall into small clusters of related functionalties. Some of the sub-packages do depend on the others (e.g. driftwood.moldb2 uses the data structures from driftwood.data), but I try to keep these to a minimum. In no case will any class in this group of packages depend on anything outside the group, except for the standard Java libraries. Thus, it should be easy to reuse these classes, in whole or in part, in other projects. OK, I lied a little. I realized I was going to need some standard linear algebra operations, and I didnt want to write them. So I incorporated the JAMA Java Matrix Libraries into the driftwood tree, and some of the things in driftwood.r3 depend on them. JAMA is public domain code released by the U.S. government ( HYPERLINK "http://math.nist.gov/javanumerics/jama/" http://math.nist.gov/javanumerics/jama/) and has been stable since 9/11/2000 (version 1.0.1). Should a new version be released, the code can be dropped into the tree as-is; Ive made no modifications to it. Driftwood got its name because its one of the few words that contains my initials in order (IWD), and because its an apt metaphor for these little bits of floating code. driftwood.data This package defines my own implementation of a hash table plus doubly linked list. Java provides this in the form of java.util.LinkedHashMap, but only as of version 1.4. Also, the standard implemention lacks any means of walking the linked list from an arbitrary starting point, which is basically what makes this data structure useful (in my opinion). The algorithms are adapted from "Introduction to Algorithms" by Cormen, Leiserson, Rivest, and Stein. UberMap is the hash table implementation, and UberSet is a lightweight implementation backed by an UberMap instance. This is the same relationship java.util.HashMap and java.util.HashSet have. driftwood.gui This package contains a multitude of utility classes for constructing graphical user interfaces (GUIs), usually using the Swing toolkit that is part of Java. Many of them are fairly simple and wont be mentioned here, but several are worth elaborating on. ReflectiveAction is used extensively throughout KiNG. In the standard Java event model, most GUI widgets generate an ActionEvent when something happens to them (e.g. a button is pressed). Each component is monitored by a class implementing ActionListener, which then responds appropriately. Unfortunately, this typically means creating one small class for every event that can happen in the UI, which for large programs is very expensive both in terms of disk space and run-time memory. By using the Java reflection API, ReflectiveAction allows one to redirect ActionEvents from a specific component to a named function in some arbitrary class (usually this). This is much more efficient, although you do lose some compile-time safety because you could name a function that doesnt really exist. AngleDial is a custom widget that allows the user to graphically select an angle by dragging a pointer around the circular dial. Its used in several of the tools in KiNG, and is fairly configurable. FoldingBox and its ancestors (IndentBox, AlignBox, and SwapBox) allow for fold-out sections of the GUI that are (de)activated by a checkbox. This is how the recessiveon property is implemented in KiNG. TablePane makes the process of hand-coding a GUI much like using TABLE tags in HTML. Its actually just a wrapper on top of the standard GridBagLayout, but I find it makes layout code much more compact and comprehensible. driftwood.isosurface This package contains all the code for loading and contouring electron density. Its named isosurface because in principle it is capable of generating isosurfaces for any function sampled in three dimensions. However, the focus so far has been on electron density. The core functionality is in the MarchingCubes class, which implements the marching cubes algorithm. The basic idea is that you have a grid of data samples, and you see that grid as lots of little cubes that have one data sample at each corner. Classifying each corner (or vertex) as above or below the contour level (a.k.a. isosurface threshold) yields 256 different patterns, which can be reduced to 15 unique cases by rotation, etc. The algorithm marches through the cubes one at a time, and contours each one individually. The remarkable thing is that these pieces almost always fit together to make the correct surface. One occasionally gets holes, but the truly topologically correct algorithms are much harder to implement. My code is capable of generating either wireframe (mesh) or triangle (solid) surfaces. Data samples are identified by three integer indices. Thus, the MarchingCubes class needs two kinds of input: a class that implements VertexLocator to translates the indices into a point in Cartesian coordinates, and a class that implements VertexEvaluator to look up the actual data value at the specified indices. In practice, a single data source usually implements both interfaces. Output of the marching cubes algorithm can be directed to anything that implements the EdgePlotter interface. MarchingCubes feeds the EdgePlotter a series of kinemage-style move-draw commands that define either a wireframe mesh or a series of triangle strips, depending on how MarchingCubes was configured. Three input formats are currently supported: O maps (DSN6 or Brix), XPLOR maps, and CCP4 maps. Each map type is read by its own class, all of which are descended from CrystalVertexSource. Only primitive output capabilities are provided in this package: KinfileEdgePlotter writes a kinemage file from the mesh output of MarchingCubes. (KiNG implements its own EdgePlotter that constructs the contours directly in memory, rather than first writing a kinemage file and then parsing it.) driftwood.moldb2 This package implements data structures for working with macromolecules. ModelGroup represents the contents of a PDB file, and contains one or more Models. These in turn contain Residues, which contain Atoms. The information in this tree is only the naming and relatedness (parent / child) information. To store coordinates, B-factors, occupancies, etc, each Atom has one or more AtomStates. The AtomStates for a particular Model are collected together into one or more ModelStates, each of which represents e.g. a particular alternate conformation. Each ModelState contains either zero or one AtomStates for each Atom in the Model, and thus represents a single, unique, unambiguous conformation (with the possibility that some Atoms are undefined, usually leading to an AtomException). ModelStates inherit from one another to avoid duplication of information, so that (for instance) the B conformation only needs to define positions that differ from A. This also makes it easy to model a change to one residue as a small mask that rides on top of the original conformation. ModelStates are implemented using hash tables (often driftwood.data.UberMap, in fact) so that look-up of the state for a particular Atom is a fast (constant-time) operation. AminoAcid provides some static functions for evaluating Residues that happen to be amino acids. You can measure (, (, and (; determine if the residue is pre-Pro; etc. Things like Ramachandran and rotamer evaluations are done in the chiropraxis.rotarama package. Im still not entirely satisfied with this library, although its the best Ive managed so far. AtomException really should have been a checked exception, because uncaught AtomExceptions are always crashing my code somewhere. Still, it would put a fairly substantial burden on clients of the library, because a lot of fundamental operations can throw this exception. I dont particularly like the way all the original conformations read in from the PDB file are bundled with the Model, but I dont have a good alternative yet. And I dont have any support yet for bonds (CONECT records and traversing a network of bonded atoms) or for ANISOU records. driftwood.r3 The r3 package provides basic support for 3-D geometric calculations; i.e. for calculations on points in R3. There are two interfaces (Tuple3 and MutableTuple3) and one concrete implementation (Triple) of points in 3-D. Triple represents either points or vectors, depending on context, and provides functions for dot product, cross product, etc. Transform uses a 4x4 matrix to define rotations, translations, etc; Transforms can be pre- or post-multiplied together. Finally, three utility classes. Builder encodes some basic geometrical constructions, like Daves construct4 in Mage. SuperPoser implements an algorithm for least-squares superpositioning of two sets of points. LsqPlane uses the singular value decomposition from JAMA to find the least-squares plane through a cloud of points. driftwood.util This package contains miscellaneous utility classes for string manipulation and I/O. Strings provides several common parsing and formatting operations. Props is an enhanced version of java.util.Preferences, with automated parsing of numeric strings and fail-fast behavior by default. OutputStreamTee, SoftOutputStream and SoftLog together provide memory-sensitive caching of messages written to standard output and standard error. StreamTank collects output like an OutputStream, then lets you read it back out as an InputStream. ProcessTank leverages that to collect output from some external process. Packages chiropraxis.* The classes in the chiropraxis group encapsulate a lot of higher-level molecular modeling operations that provide a lot of the core functionality of the modeling tools in KiNG. They are intermediate in complexity and in number of dependencies between those of driftwood and those of king. In particular, they depend heavily on driftwood.r3 and driftwood.moldb2, so using chiropraxis in another project will mandate including the driftwood code as well. However, nothing in this package depends on anything in KiNG. Chiropraxis is a general name for remodeling the backbone of macromolecular structures, and was dreamed up by Laura Weston Murray and David Richardson. chiropraxis.mc This package implements functions for (re)modeling protein mainchains. If we develop tools to refit RNA backbone in the future, they would likely go here. CaRotation implements the Backrub motion a simple rigid-body rotation around an imaginary axis between two alpha carbons. It can handle either a single rotation for two C(s that are any distance apart, or all the peptide rotations between those two C(s. The math is straightforward, but tedious and somewhat error-prone, so its nice to have it all packaged up here. The package also includes two utility programs. HingeFit tries to iteratively superimpose two loop conformations using only Backrub-like moves, by selecting the hinge motion that most improves the C( RMSD at each iteration. Suppose is a utility for doing least-squares superpositions. It was a test bed for me to play with C( difference-distance plots, vector and unsigned-sum methods of collapsing the difference-distance information, and Lesks method of choosing an optimal subset of atoms to superimpose on. Its pretty limited in usability, because it requires two PDBs with the same number of alpha carbons in them. It seems relatively straightforward to enhance it with the ability to select ranges, align on something other than C(s, etc. However, I wrote it in a hurry so the codes kind of a mess, and the design would probably require substantial reworking. So far, I dont see the payoff in reinventing the wheel (ProFit and LSQMAN). I just edit my PDBs to be the same length, then run the alignment that way! chiropraxis.minimize This is sort of a toy package written so I could learn about steepest-descent and conjugate-gradient minimizers. GradientMinimizer supports both modes of operation, but the implementation is far from optimal, and may not even be correct! If you want to use this for a serious application, you should study something like the Numerical Recipes books or the GNU Scientific Library to learn the ins & outs of doing conjugate gradients robustly. I dont see how I could mess up steepest-descent that badly, but I may have. The minimizer accepts a PotentialFunction. SequenceSpacer uses a SimpleHarmonicPotential in the minimizer to do a 3-D graph layout of a bunch of amino acid sequences. We used this tool to look at the evolutionary relationships among a lot of sequences spit out by Dezymer for scaffolds that had been reshaped with Backrub in different ways. chiropraxis.rotarama This package contains all the code for rotamer and Ramachandran evaluations. Theres not much code, but the lookup tables take up many megabytes, so I wanted to make this stuff easy to separate out that would be a lot of dead weight to carry in a project that didnt use these functions. NDFloatTable is a generic implementation of an N-dimensional array of floating-point numbers. This is the sort of thing you need for doing a four-dimensional histogram of arginine rotamers, for instance. Each dimension can wrap so that 0 is the same as 360, etc. It also has functions for doing density traces in N dimensions, using either Gaussian or cosine smoothing functions. This means you can write a point at some arbitrary location and it will be spread around to the nearby bins; you can read the density at an arbitrary point and it will be estimated via linear interpolation from the nearest neighbors. The code for this is highly recursive and quite hairy. Youve been warned. NDFloatTables can be saved to disk in a binary format and loaded into memory again; this is how the Ramachandran and rotamer data is stored. The silk smoothing package contains a more sophisticated version of this code that can read & write a text-based format, too; it also supports double-precision floating point numbers (which is overkill for this application). The Ramachandran and Rotamer classes are bare-bones evaluators. KiNG uses these to score the results of interactive modeling. However, the evaluations and kinemages produced on MolProbity come from completely separate code in my old hless package (so named because models didnt need Hs to be processed). That code uses a very different set of classes to represent macromolecular models, and since it works just fine I havent bothered to port it all over to the modern driftwood.moldb2 system. Finally, TauByPhiPsi uses data from a 1996 paper by P. A. Karplus to predict the ideal (or at least average) tau angle for a given backbone conformation. chiropraxis.sc This package contains all the functions for working with protein sidechain conformations. RotamerDef is a simple data structure for storing rotamer definitions from the Penultimate Rotamer Library (name, frequency of occurance, canonical ( angles). SidechainAngles2 is the class that allows measuring and adjusting all the sidechain dihedrals, both ( angles and rotatable methyls, etc. Its somewhat fragile in that it relies on atom names being absolutely uniform, rather than trying to make decisions based on spatial data too. Both RotamerDef and SidechainAngles2 use the angle.props resource file that defines all the rotamers and all the angles. SidechainIdealizer contains code both for idealizing whole sidechains and for idealizing just the C( position (and H(s). It uses singlesc.pdb and singleres.pdb, which are slightly adapted versions of the ideal geometry data hard-coded into Prekin. The algorithm for C( idealization is basically the one in Prekin, which constructs ideal positions from both directions and averages them. However, I treat all amino acids like alanine, whereas in fact the ideals are slightly different for the branched betas, etc. This is due to sheer laziness and could be fixed. RotamerSampler is just a quick hack to generate the sampled sidechain conformation libraries that Homme wanted for Dezymer. Packages king.* The code for KiNG is larger and more interconnected than that for driftwood or chiropraxis. Note that most of this code depends on the driftwood libraries, as well as on some third-party libraries (regular expressions, PostScript export). However, only the king.tool.model package, which contains the rebuilding functions, depends on chiropraxis. Thus, its relatively easy to eliminate all the molecular modeling stuff if you just want a 3-D graphics program. Also, a lot of the math in KiNG was done before I had written driftwood.r3, so theres some duplication of effort (dot products, cross products, matrix multiplication, etc.). Ive slowly been trying to replace the original code with calls to standard stuff in driftwood.r3, but the transition is incomplete. Incidentally, the name KiNG isnt me being conceited; its an acronym for Kinemage, Next Generation. The word kinemage is itself a contraction of kinetic image. king.core This package comprises the minimal subset of classes to parse kinemage format files, store and manipulate them in memory, and write them back out. For just creating kinemages from scratch, its usually easier to write the file yourself, directly. However, this package could conceivably be used by another kinemage editing or display program to handle the input and output. A note: I sometimes use the term group to refer specifically to a kinemage group, and sometimes I use it generically to mean group, subgroup, or list. The intended meaning should be fairly clear from the context. The data structure is the object-oriented, hierarchical tree that you would expect; it mirrors the structure of kinemage files. Thus a Kinemage object is at the top, it contains KGroups, they contain KSubgroups, they contain KLists, and they contain various subclasses of KPoint. Note that all the kinds of lists are identical internally; its the kind of points in them that determines what kind of list you have. This means that technically, you can have all different kinds of points in the same list if you wanted to (although theres no support for writing this out to a file). Im not sure I would do it this way again if I were to start overI might have multiple kinds of lists and only one kind of point insteadbut thats water under the bridge now. Two abstract classes, AHE and AGE, provide much of the shared functionality for the data structure classes. AHE (Abstract Hierarchy Element) is the parent of all the KPoints and of AGE and its descendants (see below). It provides the concepts of having a name (point ID or list/subgroup/group name), of belonging to a parent (e.g. the parent of a list is a subgroup) and belonging to a kinemage, and of being on (i.e., its checkbox is checked) and being visible (i.e., all its parents are also on). AHE also provides the basic hooks for being rotated and drawn to the screen, because it implements TransformSignalSubscriber. This mechanism will be discussed further in the section on KiNGs rendering engine. AGE (Abstract Grouping Element) extends AHE to provide the shared functionality for everything that contains child nodes: Kinemages, KGroups, KSubgroups, and KLists. This is the level where masters, lens, dominant, and similar properties are implemented. All of these grouping or container classes are part of a doubly-linked tree rooted in the kinemage itself; i.e. every node knows both its parent and its children. Unfortunately, this isnt really coordinated very well, so to (for example) add a new subgroup to an existing group, add() has to be called on the group and setOwner() has to be called on the subgroup. Ive done a better job coordinating maintenance of the same sort of tree structure in driftwood.moldb2, but by now this awkward system is fairly well enshrined in the KiNG code. There are at least two functionalities that are implemented directly as part of AGE that really should not have been part of these classes: the checkboxes for turning groups on and off, and the TreeNode interface. The problem with the buttons was that the button had to be renamed whenever the group/subgroup/list was renamed. The better solution would have been to recreate all the buttons every time a renaming occurred, so that the button itself didnt have to be part of the AGE class. As a result, we are limited to one and only one checkbox controlling any particular AGE, which totally rules out multiple views of the same kinemage (for better or worse). Implementing TreeNode directly in AGE means that groups/subgroups/lists can be used directly in the JTree component of the hierarchy editor, and it simplifies implementing the cut/copy/paste operations. The downside is that it makes AGE unnecessarily complicated and may limit us to only one JTree at a time (I dont know). A better solution would have been to create MutableTreeNode wrappers around the AGEs. Rounding out the container classes are MasterGroup and AnimationGroup, which are and were originally (respectively) AGEs too. MasterGroup implements a master button (and pointmasters), but doesnt actually keep track of its children anymore. Masters are implemented by having each AGE keep a list of master names that affect it; when a master is turned on/off, the whole kinemage tree is traversed and groups are flipped on/off as necessary. AnimationGroup is the remains of my grand scheme to enhance the kinemage format with an arbitrary number of highly configurable animations, of which the traditional animate and 2animate would merely be a subset. Unfortunately, it was rather awkward and relied on the original non-standard behavior of the masters. I still havent decided whether Im going to remove it entirely along with the Animations menu, or whether I want to take another crack at creating more complex animations. Now we come to KPoint and its subclasses: BallPoint (also responsible for spheres), DotPoint, LabelPoint, MarkerPoint, TrianglePoint (also responsible for ribbons), and VectorPoint. They implement the standard point properties like color, aspects (via the Aspect class), unpickable-ness, and width/radius that they dont get from AHE, but their main function is to store an coordinate. This is another place where I went tragically wrong. Points store both their original location and their transformed location (after rotation, scaling, etc.). Among other things, this means that implementing stereo is nearly impossible, because you need to track two transformed locations for each point. (I got around this by doing two transform-draw cycles; the downside is that you can then only pick points on whichever side was transformed last.) It also makes it very hard to use the nice linear algebra functions from driftwood.r3, because sometimes you want them to apply to the original coordinates and sometimes to the transformed ones. The upside and original motivation for this decision is that its an efficiency gain, because storing the transformed coordinates outside of the points themselves requires frequently creating and then discarding thousands of short-lived objects, which can be expensive. My understanding is that modern Java VMs have been extensively optimized so that this isnt much of a concern any more. It would be very difficult to accomplish this change because its so fundamental, but if it didnt degrade performance much it would really improve the design. Closely related is the fact that each specialized point type contains all the code for actually drawing it to the screen. This was fine when there was only one way to draw each point, but as I introduced different quality settings for the rendering I realized this was a bad idea. A better arrangement would be to have pluggable drawing engines that know how to draw each type of point, so that you could even have (for example) an OpenGL option without having to change the point code, which should be primarily a very long-lived and slow-changing data structure. Its also worth mentioning that the VectorPoint and TrianglePoint classes maintain a singly linked list running through themselves, with each point knowing who its predecessor is. (Other types of points know which list they belong to but not what order theyre in.) The vectors and triangles use this information to draw themselves if they have a predecessor, they draw from that point to themselves (and are thus L points); if their predecessor is null, they draw nothing (and are thus P points). The advantage to this scheme, relative to having each point know its index in an array, is that it requires little or no updating to insert and remove points from the list. The downside is that traversing the list for other purposes is more difficult; you have to retrieve the full list of children from the list, search for the starting point, and then explore up and down the list from there. Im almost ready to discuss the rendering engine, but first need to introduce a few utility classes. A KPaint object represents each named kinemage color, like green or lilactint. It keeps the java.awt.Color objects used for painting points with various depth-cueing levels on white and black backgrounds, in full color and in monochrome. It also does all the calculations for how colors are depth-cued and how lighting interacts with the triangle and ribbon normals. KPalette actually defines all the different colors in terms of a hue-saturation-value (HSV) model, and maintains the various pens used for depth-cueing line thickness. KingView defines a view in the kinemage sense (center, rotation matrix, zoom or span) and is also used to track the current viewpoint as the kinemage is moved with the mouse. Its all straightforward matrix multiplication and so forth, but it was done way before driftwood.r3.Transform and is quite quirky. Its made even worse by the fact that its thread safe, so it worries about synchronization. I originally anticipated that I wanted a background thread to be able to update the view, so I could get automatic rocking for presentations. However, I ended up using a Timer and doing the actual updates on the main thread anyway, so its all for naught. The drawing process now just pulls the information out and builds a driftwood.r3.Transform to actually work with. I should also mention that the zoom can be stored as either a zoom value or a span value, because thats the way it is in the kinemage format. However, the first time a KingView is used for drawing, it converts everything to a span, based on the current size of the bounding box of the kinemage. I find spans to be more robust, because a view defined in terms of span doesnt change if you change the size of the kinemage. For instance, if you define a view of your models active site and then merge in a larger tetramer of the same structure for comparison, you dont want the active site view to get zoomed out just because the kinemage now occupies a larger volume. Points are actually rendered in two passes in the first pass they are transformed (rotated, scaled, etc.) and register themselves to be painted, and in the second pass they are actually painted to the screen. TransformSignal drives that first pass with a publish/subscribe model. Various TransformSignalSubscribers register with the TransformSignal to be notified when a new rendering is initiated. When someone then publishes a rendering request to the TransformSignal, all subscribers are given the opportunity to transform themselves (via a matrix multiplication) and/or to register to be drawn in the next pass. As mentioned above, all AHEs implement TransformSignalSubscriber. However, typically only the kinemage is registered as a subscriber with TransformSignal because the AGEs (kinemage, groups, subgroups, lists) respond to a signal by simply passing it on to all their children. Thus, the signal trickles down from the kinemage down through its groups to all its points, which are then actually rotated and registered to be drawn. In addition to kinemages, many tools subscribe to a transform signal so that they can render objects that are not actually part of the current kinemage, such as markers or electron density contours. Finally, TransformSignal is itself a TransformSignalSubscriber, so that you could hook up several of them to create a sort of signaling cascade. I guess that means Ive taken to many molecular biology courses, huh? The Engine class coordinates most of the second pass of the rendering process. During the first pass, in response to a TransformSignal, all of the points are rotated and scaled and registered with the Engine to be drawn via the addPaintable() function. Balls and spheres are also recorded in a hashtable via the addShortener() function, so that lines whose endpoints match with the center of the ball can be shortened to make the balls look more realistically three-dimensional. As the rotated points are registered to be drawn, the ones that fall inside the visible slab (clipping planes) are sorted into one of 1000 bins based on their z-coordinate. This allows me to draw them in roughly back-to-front order. (I call the bins a z-buffer, which I think is not quite the correct name for it.) All the points are drawn, regardless of whether theyll be covered up later; there are no provisions for hidden surface removal. In a figure consisting mostly of dots and vectors, I doubt its worth the effort. The z-buffer is wiped clean before every new rendering operation, but between renderings the information is cached and used for picking. Thus the picking algorithm can traverse the z-buffer front to back, looking for points that approximately match the mouse click position. Engine also contains a plethora of public variables that control various aspects of the rendering process (depth-cueing mode, background color, etc.); they mostly match the options in KiNGs Display menu. These values can be adjusted to give different kinds of renderings. The last major functionality in king.core is reading and writing kinemages. KinfileParser is responsible for reading the kinemages, though it delegates the low-level parsing (tokenizing) to KinfileTokenizer. The parser is rather large but is pretty simple. Its recursive-decent, except without the recursive part, because kinemages dont have any recursive (parenthesized) sorts of expressions in them. You feed the parser a stream, and it returns to you (1) a Collection of Kinemage objects and (2) all of the text and caption sections of the kinemage, concatenated together. Note that before using the kinemages you must call initAll() on them, which does things like calculate the bounding box and initialize the views, masters, and animations. KinWriter is also very straightforward; you feed it a Collection of Kinemages, some text, and a stream. All thats left in this package are a few loose ends. KinemageSignal and KinemageSignalSubscriber are modeled after TransformSignal and TransformSignalSubscriber, but to inform listeners about changes to the kinemage (creating and deleting groups, etc.). Unfortunately, I built it rather late so its not used by much of anything; most of KiNG relies on a more primitive notifyChange() method in king.KingMain. RecursivePointIterator is a utility class for visiting all of the KPoints in a kinemage; it gets used by the Find command. king The king package itself contains all the code that makes up KiNG the program largely the graphical user interface (GUI) and its trappings. It also contains the foundations of the tool/plugin system (discussed below), but most of the actual tools and plugins are sequestered in king.tool and its subpackages; king does not depend on them and can easily be compiled without them. KingMain provides the entry point for KiNG running as an application (it contains the main() method), and it serves as a control center throughout the lifetime of a run. KingMain parses the command line, instantiates the major subsystems and lets them find each other (via the get___() methods), coordinates the event notification system via notifyChange(), and manages multiple instances. Most message/event passing is done by clients calling KingMain.notifyChange(), which then trickles down into the notifyChange() methods of all the subsystems. When multiple instances are created in the same Java VM (using the File | New command), a new KingMain instance is created and a static counter is incremented. When a KiNG window and its associated KingMain die (File | Exit or close the window), the counter is decremented. When it reaches zero, System.exit() is called to ensure clean termination of the program. Kinglet provides the entry point for KiNG running as a web page applet. It does very little, except to decide which of three modes its running in (embedded, free-floating window, or launcher button) and instantiate a KingMain object. All remaining tasks are delegated to KingMain, even the processing of applet tags. The first task for KingMain is configuration, including parsing the command line or applet tags. These tasks are performed in the KingMain constructor, whereas the other subsystems are not created until later, in the Main() method (an instance method called after the constructor, not to be confused with the static function main(), where execution starts for the application). It first creates a KingPrefs object to hold all the configuration data. KingPrefs is a souped-up java.util.Properties class that holds lots of key-value pairs (e.g. fontMagnification = 1.0). The default values for all the keys are loaded from king_prefs in the JAR file, but may be overridden by entries the users .king_prefs file (located in his/her home directory as defined by the underlying OS) or by command-line switches. The allowed configuration keys are documented in the king_prefs file and will not be repeated here. KingPrefs is also responsible for loading other resources from the JAR file (e.g. icons), for identifying the location of other programs distributed with KiNG (e.g. Probe), and for querying kinemage.biochem.duke.edu to find out if a newer version of the software is available. The query is just an HTTP GET and can be disabled by the user; it reveals no information about the user except their IP address and that theyre running KiNG. The PrefsEditor class provides a GUI for modifying some of these configurable properties at runtime. As mentioned above, the major subsystems are instantiated in KingMain.Main(), called after the constructor. They include KinStable, MainWindow and ContentPane, KinfileIO, KinCanvas, UIMenus, UIText, and KinTree. These subsystem heads all have references back to the KingMain object that created them, allowing them to retrieve references to each other as needed. At the same time, KingMain sets the font magnification (useful for those who cant see well and for giving presentations), captures standard output and error for logging purposes, and installs drag-and-drop handlers. The drag-and-drop handlers (FileDropHandler for the graphics window, MacDropTarget for the Finder and the Dock) are created using the Java Reflection API, so that the attempt will fail gracefully on machines that dont support it (VMs before 1.4 and non-Macs, respectively). This is a technique I use in several other places, most notably with the tool/plugin architecture. Only after all of this infrastructure is in place are files from the command line or tags actually loaded. KinStable is a container for all the currently open kinemages (think horses stable, not solid-as-a-rock stable). It provides mechanisms to add (open/append) and remove (close) kinemage, and owns the GUI kinemage chooser box. To actually open or save a kinemage, clients call methods in KinfileIO, which may either present a dialog box or not depending on the method chosen. It tracks the name of the last file opened and provides automatic versioned naming (foo.kin, foo.1.kin, foo.2.kin, ). It also displays the progress dialog. KinfileIO implements KinLoadListener so that it can use a KinfileLoader to do the actual parsing in a background thread (this is what makes the progress dialog possible). Clients that dont want to use KinfileIO directly but still want background-thread file loading can implement KinLoadListener themselves and use their own KinfileLoader. Several other classes are also involved in I/O operations. ImageExport saves the current graphics display to disk in bitmap form as a PNG or a JPEG. PdfExport saves the display in Adobes Portable Document Format for 2-D vector graphics. XknWriter tries to save the currently open kinemages as XML, and Vrml97Writer tries to save them as VRML2/VRML97. Both XknWriter and Vrml97Writer are incomplete, out of date, and not maintained; they are kept on with the thought that they may one day be fleshed out. All of these classes except Vrml97Writer use libraries that may not be present on all systems (javax.imageio, the iText PDF library, and javax.xml). Thus, they are instantiated by reflection so that systems with Java 1.3 or without iText can still run KiNG. ContentPane is the root of the GUI hierarchy. It divides the main GUI space into graphics display, kinemage checkboxes, and user controls (zoom, clip, animate, etc.). When it receives a notifyChange() message from KingMain that the kinemage structure has changed, it refreshes the list of checkboxes with help from the current Kinemage object. MainWindow used to perform all of these functions, but they were factored out into ContentPane so that the GUI could be placed into either a free-floating JFrame (like MainWindow) or into a web-page-embedded JApplet (like Kinglet). MainWindow now is an empty shell that does very little except set its title. Obviously, the graphics space dominates the GUI, and it is embodied in the KinCanvas class. It doesnt really do much in and of itself, but it coordinates a lot of things. The one thing that is wholly contained within KinCanvas is the zoom and clipping slider controls, and the math that makes them exponential rather than linear. Otherwise, KinCanvas delegates. It contains a king.core.Engine that it uses to do the primary drawing, both for painting the screen and for printing. It also contains a ToolBox instance, which is the top of the tool/plugin hierarchy. KinCanvas calls the ToolBox to do extra painting, like point ID and distance readouts. The whole drawing hierarchy is implemented using the SignalTransform system described above for king.core. KinCanvas also receives all the mouse and keyboard events for the graphics area, but passes them to the ToolBox, which in turn passes them to the current active tool. ToolBox is a central part of KiNGs model for user interaction, because it manages all the plugins that appear in the Tools menu. At any given time, there is one (and only one) active tool (a specific kind of plugin), which receives all the mouse and keyboard events from the ToolBox, which in turn has received them from KinCanvas. In fact, this is the distinction between tools and plugins: tools receive user input from the graphics area (clicking, dragging, etc.) and (ordinary) plugins do not. Thus, there can be only one tool-type plugin active at a time, but any number of other plugins may be in use. ToolBoxMW is a subclass that adds support for mouse wheel events, which were added in Java 1.4. KinCanvas uses reflection to first try creating a ToolBoxMW, and if that fails, it creates an ordinary ToolBox instead. That way, Java 1.4 users get mouse wheel support but KiNG still runs with Java 1.3. The ToolBox loads the plugins and tools via reflection so that KiNG wont crash if they cant be loaded. This is important both because some tools reside in other JAR files that could be missing, and because some tools require Java 1.4 and will not work with earlier versions of Java. The loading procedure uses a service-provider model like the javax.imageio package. Thus, in every JAR the file /METAINF/services/king.Plugin contains the fully qualified class names of all plugins that should be loaded from that JAR, one per line. Every JAR file on the current classpath can contain such a file, so plugins can be compiled into their own JAR files and be detected by KiNG at runtime, rather than at compile time. In order for KiNG to detect plugin JARs, they must either be in the special plugins/ folder or on the Java classpath. The plugins/ folder is found in the same place as king.jar and will be searched for JAR files containing plugins when the ToolBox is loaded. The plugins/ folder is the preferred method, and the easiest, but JARs may instead be placed directly on the classpath by using the cp switch for java (or by referencing them in the manifest of the king.jar file, but this is strongly discouraged). ToolBox also contains the code to build the Tools menu and the tool-related items in the Help menu. The name of the submenu that each plugin should appear in is determined by an item in the king_prefs file (/king/king_prefs in the JAR or .king_prefs in the users home directory) named fully.qualified.PluginClassName.menuName. The special values

and either place the plugin directly into the Tools menu or suppress its menu item altogether, respectively. The user can customize these settings, so the ones provided in the JAR just serve as a default. ToolBox also contains a ToolServices instance, which has the code for picking, measuring, markers (crosshair and Mage-measures), and the common mouse actions rotate, translate, clip, and zoom. Many of these could have actually been included in the base tool class, but instead the tools just call e.g. rotate() or zoom() in ToolServices when they get a mouse event. However, measures and markers do have to be separate from the tool implementations, because as a user you dont want the markers/measures state to be tied to which tool is active. If that were true, your markers would jump around just because you switched from Edit Properties to Move Point, or a Mage-like construct4 tool wouldnt be able to see the measurements you just made with the Navigate tool. Thus, markers and measures reside in ToolServices. Since they dont have to deal with input from the graphics area, plugins are easier to write than tools, so Ill cover the Plugin class first. Plugin is an abstract base class that all plugins and tools extend, either directly or indirectly. Most plugins should extend Plugin directly. It defines several useful variables for accessing other parts of the drawing/event system: references to the ToolBox, its ToolServices instance, the KinCanvas that owns them, and of course to KingMain. There are only two methods a Plugin must implement. The first is getToolsMenuItem(), which returns a single JMenuItem to appear in KiNGs Tools menu. If you need multiple menu items for your plugin, put them in a JMenu and return that instead. The second is getHelpMenuItem(), which returns a JMenuItem for KiNGs Help menu that provides help on using this plugin. Either of these functions may return null to indicate that they dont have an associated menu item. getToolsMenuItem() must be implemented from scratch for each plugin, but there is already an infrastructure in place for the default Help behavior. If the plugins documentation resides in the KiNG manual, you need only return an HTML anchor from getHelpAnchor(). If the help is in a different HTML file, you can instead override getHelpURL() to return that address. Note that the Java browser only supports HTML 3.2. If youre going to use this default help system instead of overriding getHelpMenuItem(), you should override toString() to return a reasonable name for your plugin. Since its so easy to add plugin documentation, please provide help pages for your plugins! More complex plugins may want to implement some additional methods. Overriding isAppletSafe() to return false will ensure that KiNG does not try to load that plugin when running as an applet. This is useful for plugins that access the file system, use native libraries, and so on. The getDependencies() method returns a list of the fully-qualified class names of other tools or plugins on which this plugin depends. KiNG will only load this plugin if it can successfully load all of its dependencies first. Complex chains can be resolved, but be careful not to introduce circular dependencies, as this will prevent all the plugins involved from being loaded. Tools must be derived from the more complex BasicTool class, but the good news is that BasicTool has no abstract methods that must be overridden its completely functional out of the box. In fact, its actually the implementation of the default Navigate tool that provides Mage-like navigation through the kinemage. Tools have the same menu item requirements as plugins, and the help system is identical. Thus its usually sufficient to override toString() and either getHelpAnchor() or getHelpURL(); with that information, BasicTool will create appropriate items in the Tools and Help menu for you. As mentioned above, only one Tool can be active at a time. Thus, tools receive start() and stop() messages when they are (de)activated. A tool will receive a reset() when the active kinemage changes. Tools can implement MouseListener and MouseMotionListener methods directly, but its usually more convenient to allow BasicTool to parse those into clicks, drags, and mouse wheel events. Each type of mouse event belongs to one of four classes, which are determined by which mouse button is used (for multi-button mice) and/or by which keyboard modifiers were held down. The classes are normal (left mouse button), Shift (right mouse button), Ctrl (middle mouse button), and Shift+Ctrl (left and right mouse buttons together, for drag but not click). Three events and four states lead to twelve listener functions; see the BasicTool code for their default implementations. The click() functions receive the KPoint picked by the mouse (or null if none), the coordinates of the click, and the original MouseEvent. The drag() functions dont get coordinates directly, but instead get the number of pixels the mouse has moved in x and y since the previous call to drag(). The variable mouseDragMode is set to MODE_HORIZONTAL or MODE_VERTICAL if the drag started as primarily horizontal or vertical, which simplifies implementing behaviors like Navigates zoom vs. clip. The variables isNearTop and isNearBottom allow for switching on behaviors like the pinwheel rotation that occurs when you drag near the top of the graphics area. I anticipated that many tools would want to display a non-modal dialog box when they were active, like the Draw New tool does. Thus, if a tool returns a non-null JComponent from getToolPanel(), it will automatically be placed in a dialog that pops up when start() is called (via the show() method) and disappears when stop() is called (via the hide() method). The initDialog() method was added later as a place to do things like add a menu bar to the dialog; because the dialog variable is still null during the constructor. The whole thing is far more trouble and confusion than its worth, but Im too lazy to take it out now and force other tools to implement this behavior for themselves. If you dont want to deal with it, just let getToolPanel() continue to return null and create your own dialog box from scratch. There are two more important methods in BasicTool: signalTransform() and overpaintCanvas(). Yes, just like the active kinemage, the ToolBox, ToolServices, and the active tool are part of the TransformSignal-driven drawing hierarchy. (Plugins must register themselves explicitly to be included, but they can if they want to.) By having the tools signalTransform() call the signalTransform() method of a group, subgroup, or list that it owns, that graphics element can be rendered to the screen or printer without being saved as part of the kinemage. This is how ToolServices manages markers, and is analogous to how electron density is displayed. The overpaintCanvas() method allows the tool to draw directly on the canvas after all the 3-D graphics are rendered; this is how ToolServices paints point ID labels, measurement distances, etc. The best way to learn about writing tools and plugins is to explore the existing code in the king.tool package and its subpackages. See below for more description of the existing tool set. There is actually one plugin that lives in the king package, which is the electron density displayer EDMapPlugin. Its a simple shell that allows the user to select a file and then opens a EDMapWindow for it. As mentioned above, in its constructor the window subscribes to the ToolBoxs TransformSignal, so that it can display the maps without them necessarily being part of the kinemage. EDMapPlotter implements driftwood.isosurface.EdgePlotter and is used by MarchingCubes to create the mesh or translucent triangle surface directly in memory from Vector- or TrianglePoints. EDMapPlugin was included in the main king package because its not optional; the Kinglet applet may try to create EDMapWindows directly in response to certain tags. All thats left is a run-down of the rest of the GUI code. Keep in mind that all of the GUI makes heavy use of driftwood.gui.ReflectiveAction for event handling. Without it, I would have to write hundreds of small anonymous inner classes. That way gives you more compile-time type safety and is the Java standard, but it becomes very costly to store that many classes in the JAR file and in memory (even though theyre small). My way is much more efficient and (I think) much easier to read, at the expense of some compile-time safety checks. KinTree implements the hierarchy editor using a JTree (remember that all the classes descended from AGE implement TreeNode). Its large because of all the tree manipulation functions; Cut, Copy, and Paste are particularly lengthy. None of its terribly complicated though. Some of those functions use the GroupEditor and PointEditor classes, which are also used by the Edit Properties tool to modify groups, subgroups, lists, and points. The editors use instances of ColorPicker to graphically set the color of lists and points. All of the menus are defined and either handled directly or delegated elsewhere in UIMenus, which is another monster file. It also holds the timer for auto-animation, and owns instances of PointFinder (for the Edit | Find dialog) and ViewEditor (for editing views). PointFinder uses gnu.regexp regular expressions to drive the search, because Java didnt come with regular expression packages of its own until version 1.4. Note that UIMenus has mechanisms for rebuilding the Views and Animations menus, which need updating when kinemages are (un)loaded. If I werent so lazy, I would split this into one file per major menu to increase maintainability, which is actually what I did already with the Display menu (UIDisplayMenu). The Display menu items mostly act by changing variables in the KinCanvass Engine instance. Now for a few loose ends. The UIText class manages the kinemage text window and allows the user to edit that text. HTMLHelp is an ultra-simple HTML browser intended for displaying help information, like the user manual. Note that the Java HTML viewer component only supports the HTML 3.2 standard, so you cant do anything too fancy. GridBagPanel is the predecessor to driftwood.gui.TablePane, but harder to use. I would remove it entirely except that some parts of the GUI still havent been upgraded to TablePane. ReflectiveRunnable works just like ReflectiveAction, except that it lets any arbitrary function stand in for the Runnable interface. This is sometimes useful when youre trying to do multi-threaded things (such as file loading). king.tool The king.tool package and its subpackages contain a fair collection of different tools and plugins for doing various things, some related to our research, some not. This is the part of KiNG undergoing the most active development, so this section is almost certainly out of date already. The operation of all these tools and plugins is well described in the user manual, so this overview will seek to highlight features of their implementation that may be of interest to other developers. After all, the existing tools are the best reference on how to write new ones. (See above for a general description of how to create new tools and plugins.) The king.tool.model package for tools that work with PDB structure files is more complex than most of the others, so it will be treated separately in the next section. MovePointTool and EditPropertiesTool are two of the basic kinemage-editing tools. MovePoint tool uses KingView.translateRotated() to convert a movement in the scaled, rotated graphics space back to a change of coordinates in the kinemage model space. It also overrides mousePressed() to find the picked point at the start of a drag, which is something most drag operations dont need. EditProperties is a minimally different from BasicTool; it just uses king.GroupEditor and king.PointEditor to alter the kinemage. Dock3On3Tool is a more sophisticated tool. It overrides BasicTool.getToolPanel() to provide an accessory dialog box, and it has its own data structure for storing picked points. It also overrides signalTransform() to display the numbered markers that describe the alignment to be performed. Its transformAllVisible() method demonstrates how to go about changing the coordinates of kinemage objects using a driftwood.r3.Transform. Finally, it uses driftwood.r3.Builder to do the geometric calculations necessary for the superposition. DockLsqTool is quite similar, except that is uses driftwood.r3.SuperPoser to do the least-squares superposition calculation. ViewpointPlugin is fairly boring, except that it illustrates how to modify the current view directly rather than through the ToolServices.rotate(), zoom(), etc. functions. CrossWindowPickTool shows how two or more KiNG instances in the same Java VM can communicate. (Multiple instances are created with the File | New command.) Each new KiNG instance has its own instance of CrossWindowPickTool, and these all share a static class list of all the CrossWindowPickTool instances. The list is implemented using SoftReferences to avoid memory leaks. Thus, each instance of the tool is able to find out about and communicate with all the others. SolidObjPlugin is interesting in that it does some non-trivial geometric calculations and creates fairly intricate surfaces from TrianglePoints. It also does the cute trick of traversing the kinemage and finding all of the currently visible vector lists. DrawingTool has a whole host of interesting tricks. Its undo mechanism saves the state of a KList by making a copy of its children variable, with the additional complication of saving connectedness information at the end of Vector- and TriangleLists. The undo system also uses SoftReferences to make the undo cache memory sensitive its cleared out in response to memory demand by the Java VM. DrawingTool uses driftwood.gui.FoldingBox with a JRadioButton for a slight twist on the GUI segment that drops down in response to a checkbox. It demonstrates the use of a Kinemages metadata field for storing kinemage-specific information with the kinemage rather than within the tool. This helps avoid memory leaks when kinemages are closed. (The other solution is to use a SoftReference again.) The prune and punch commands demonstrate traversing a KList and making modifications to a line segment or polyline. The auger command shows how to use Engine to pick all the points in a region, and the spherical crop demonstrates the use of king.RecursivePointIterator. Auger also does some interesting work in mouseMoved() to do XOR drawing of its beach ball of death rather than trying to install a large custom mouse cursor. The RNA tools in king.tool.xtal were developed by Vincent Chen during his rotation in the Richardson lab in the fall of 2003. They were derived from EDMapPlugin and friends, but modified so that the user can pick one isolated polygon in the density (like a phosphate peak in RNA) and the tool will group all those vectors together and highlight them. Im sure the mechanics of rearranging the vectorlist connectivity are very interesting here. It also searches the electron density map for the highest-density node with that polygons bounding box, and marks it as a suggested atom location. king.tool.model This package contains a set of highly interdependent tools and plugins for modifying protein structure, as represented in a Protein Data Bank (PDB) coordinate file. The system is centered around the ModelManager2 plugin, which other tools can access via the ToolBoxs getPluginList() method. ModelManager2 requires both a kinemage and a PDB file, unlike Mage: the kinemage must already be loaded in KiNG as usual, and the user is prompted to load a PDB into the model manager as soon as any tool makes a request that requires structural information. It makes correlations between the graphics display and the invisible structural data typically by comparing Cartesian coordinates, but sometimes based on kinemage point ID and atom or residue names. The manager uses the driftwood.moldb2 system to load, store, manipulate, and save structural data. ModelManager2 thinks about structure in terms of a static, frozen conformation that represents the molecule as it currently stands; and zero or more dynamic, molten sections that are currently being manipulated by the modeling tools. The molten sections, with their gaps filled in with coordinates from the frozen conformation, constitute a complete molten conformation for the whole structure (even though many parts of it are not actively being remodeled). Each of these states can be retrieved as either a ModelState object or a (temporary) PDB file. Tools (or plugins) that wish to interact with the model manager must implement the Remodeler interface and then call ModelManager2.registerTool() to register themselves. For convenience, new tools may extend the abstract ModelingTool class, which automates the process of finding a reference to the model mananger. Whenever a tool wants to change the model conformation, it calls ModelManager2.requestStateRefresh(). Each registered Remodeler is then queried in turn fed a starting ModelState and prompted to either return it unchanged, or to create a new ModelState descended from the input, modify it, and return that. Remodelers must not modify the input state directly, but because of the hierarchical/layered design of ModelStates, the cost of making a change is only linear in the size of the change, not linear in the size of the entire model. In this way, each Remodeler composites its own contributions onto the transformation from frozen state to molten state. Thus, one tool might move the backbone, another might rotate a sidechain riding on that backbone, and a third might idealize the covalent geometry of that sidechain. To make a permanent change to the frozen model, a Remodeler calls requestStateChange(). That one tool is then asked to calculate a modified conformation for the frozen state via the same process used to compute the molten state above. The tool is then unregistered (so that it wont apply the same modification again to the molten state) and the molten state recomputed as above. The tool must re-register itself to begin a new round of remodeling; of course, tools can abort a modeling operation by unregistering themselves directly. So far, all the remodeling has changed only the coordinates of atoms. If a tool needs to add, remove, or replace atoms or residues (e.g. mutate a sidechain), it needs to change both the Model and the ModelState. To do this, one calls replaceModelAndState(). This requires that nothing in the model be currently molten, because if the Model is changed while other tools are reshaping it, the atoms they thought they were moving could disappear out from under them! All of the changes to the Model and the frozen ModelState are tracked by ModelManager2s undo system and are fully reversible (provided that the client cloned the original Model and modified the clone instead of modifying the original). The changes to the molten ModelState are of course transient by nature, so theres really nothing to undo for them. In addition to the frozen and molten models and the undo system, ModelManager2 also drives all the interactive model visualizations. A better design of would be to factor the visualizations out of this class and make them operate as registered clients of the model manager instead, more like the tools do. However, I havent gotten to this yet. So at the moment, the manager uses ModelPlotter to make kinemage drawings of the entire frozen state (in sky and yellowtint) and the molten parts of the molten state (in shades of orange). ModelPlotter operates only on proteins and goes strictly by atom names, so its pretty easy to break it. Still, it works most of the time. Its connectivity database is stored in the sc-connect.props resource file. ModelManager2 also calls the command-line C programs probe and noe-display to generate more visualizations, although most of the noe-display logic and interface has been isolated in the NoePanel and ExpectedNoePanel classes. The calls to probe and noe-display are done by BgKinRunner. These programs can take several seconds to run, and then KiNG still has to parse the textual kinemage data they output. Furthermore, running external programs from Java seems to be a little dicey sometimes they hang indefinitely for no apparent reason in a random and irreproducible fashion. For all these reasons, BgKinRunner launches such programs in a background thread and kills them off if they run for too long. It then parses the kinemage data and adds it to the display, replacing the programs previous output (if any). Thus, the probe and noe-display visualizations often lag a few seconds behind the moving molten model, but the UI remains responsive and crashes dont seem to have any adverse, destabilizing effect on KiNG. Finally, to the tools, of which there are three. HingeTool implements the generalized version of the Backrub backbone motion, and uses the PeptideTwister2 component to manage peptide rotations. (Both use chiropraxis.mc.CaRotation to do the actual rotation calculations.) ScMutTool is entirely self-contained, and is the only one that actually changes the Model as well as the ModelState. ScRotTool spawns lots of SidechainRotator windows that do the actual work of reconfiguring sidechains. Organizational principles Source code All of the Java source code is stored in the src/ directory of each top-level packages distribution (driftwood, chiropraxis, king). Subdirectories are named by (sub)package name according to the Java convention. When editing code, I prefer to use the jEdit text editor ( HYPERLINK "http://www.jedit.org" http://www.jedit.org). One of its features is explicit folding of the source code, driven by the triple curly brace markers ({{{ and }}}). I try to keep these folded sections to about 40 lines, so that one of them fits comfortably on the screen when expanded. Thus, whenever possible, I work hard to keep my function definitions to about 40 lines as well. Multiple functions may go in the same fold if theyre short. Theres a fair bit of lore in the CS world that comprehensibility of any chunk suffers badly as soon as you cant see the whole thing at once, and my own experience bears this out. Since I leave a line of space between folded segments for readability, that puts an upper limit of about 20 segments * 40 lines = 800 lines of code in any one file. Beyond this point, you cant even fit the folded overview of a single class on screen at once. Indeed, I find it hard to keep track of all the things going on in a class with 1000 lines of code and sometimes end of stepping on my own toes. With few exceptions, I believe that classes this big are trying to do too much, and should be split into several more focused and modular components. The same philosophy extends to package organization: 10 to 20 classes is a nice number. Finer divisions seem silly unless you expect future growth (as I do for many of the packages documented here), but beyond about 20 classes I find that its hard to get a handle on what a package does and how its parts interrelate. Libraries with hundreds of (public) classes in a package are just plain poorly organized, in my opinion. The main king package is pushing 40 classes now, and I think thats a little unwieldy. On the other hand, king.core is about 30 classes, and I cant see any good way to segment it further, so I wont. I make a real effort to document my source code using Javadoc comments (/** */) for all the functions. I dont worry so much about variables, though I should pay more attention to them. One thing thats currently lacking is package-overview documentation in the Javadocs, but thats basically the purpose of this document, so I may not do much more there. Resource data and user documentation The resource/ directory for each top-level package has a structure parallel to that of src/, again named by (sub)package name. The resource/ directory is incorporated directly into the JAR file, so that the compiled Java class files and their necessary resources end up in the same directory of the JAR. (The code can retrieve this resource data with Class.getResource() and similar functions.) For example, the smoothed rotamer and Ramachandran distributions are stored this way in chiropraxis. KiNG keeps its icons, configuration files, and HTML help in the resource/ tree. Most of the command-line utilities also keep their help information in plain text .help files this way. It is my goal to provide all end-user documentation in HTML format always, and in PDF format when it makes sense. As mentioned, command-line utilities often contain their own plain-text help summaries as well. There are no really great tools that Ive ever run across for producing clean and attractive HTML and PDFs from the same source document. Microsoft Word is a possibility, but it writes atrocious HTML that the Java viewer could never handle and it doesnt run on Linux. The best alternative I found is LyX ( HYPERLINK "http://www.lyx.org" http://www.lyx.org), a what-you-see-is-what-you-mean cross-platform document processor that uses LaTeX as its underlying formatting engine. It produces pretty clean HTML and nice PDFs, and its really good about helping maintain a hierarchical structure (chapters, sections, subsections) and cross references. Every project also has a CHANGELOG.html file, which is really just an HTML wrapper around a plain text file. It records an overview of the changes made for each version, along with notes and ideas for future features, to-dos, and bug reports that are still outstanding. I take care to make sure the nominal current version number from the changelog tracks with the actual version number, stored in the resource/ tree as version.props. Build system The build system is driven by Apache Ant ( HYPERLINK "http://ant.apache.org/" http://ant.apache.org/), which is the Java standard. Ant stores its build instructions in build.xml files, one per top-level project. The major targets are compile (run javac to compile the source), build (construct the JAR file), dist (build source and executable distribution bundles), and clean (remove products of the other three). The compiled .class files are placed into the build/ directory, and the distribution bundles are built up in the dist/ directory. Both directories are removed by clean and recreated as needed. There are also other targets, like backup and deploy-xxx, that exist only for my convenience. You can ignore these or rewrite them for your own use. The build process does make use of version information in resource/packagename/version.props. In fact, it updates the build number every time a build occurs. This makes it easier to track the exact version and build date for a distributed JAR file. I take dependency management seriously, because Im serious about wanting other to reuse my code. I know from the experience of trying to borrow other peoples libraries that unless I can cut out just the small subset of functionality Im interested in, Im not going to use the library who wants to drag around hundreds of kilobytes of dead weight? Thus, as I outlined below, driftwood has no dependencies, chiropraxis depends only on driftwood (and for some functions, other third-party libraries), and king is allowed to depend on both driftwood and chiropraxis. I also try to minimize or eliminate dependencies among the subpackages whenever possible. A great free tool for querying and visualizing these dependencies is Dependency Finder ( HYPERLINK "http://depfind.sourceforge.net/" http://depfind.sourceforge.net/). I use it frequently for dissecting and refactoring my own code, as well as for trying to understand other peoples code. Distribution and installers For those familiar with running Java programs, the JAR files or distribution bundles created by Ant are all thats needed. However, for KiNG users I wanted a more novice-friendly distribution method. I found the registered-but-free basic version of Install Anywhere ( HYPERLINK "http://www.zerog.com/" http://www.zerog.com/) does a very nice job of distributing Java applications bundled with a private copy of the Java VM and runtime libraries. This makes for some large (ten megabytes and up) downloads, but great convenience. I use this method for Windows and Linux, where a Java VM is not part of the standard installation. For the Macintosh, I used the included OS X developer tools to make an application bundle for my JARs. Once youve created that once, you can easily update it just by replacing the JARs inside, without having to go through the whole song and dance again. lu  & 1?$0}~ 7>lsMXy} =Egk !D!Q!!!""""""U#b#$-$p$0J0JjU jU60J\  k l m B0? j @"  k l m  @"s#W%h%&O*U+--11p335"616A8B<W<^>??@CEGGG8JlLp$$$$$$%%%&&"&2&7&Y&]&&&&&&&''>'I'''''''''@(E(k(x({(())))%*)*O*X*********7+K+--3.7.V.W.X.t.z.......G/P/////!0+050?000j1q1111112@2H*56 jt jy jf0J0J\@2B2R2W2^222223%3'32333444444444545=566z7{777q8y899!9(999%;&;<<v>>>>>>@@CC4D8DE!E&E-EEEFF GGHHHHHH I IIIIIII8JJJJJJJJJJJDKEKlLzL:M jb jc ja0J_lLLLNOPP"RRUX[ `ciorwp}ֆmC:MCMGMRMMMMNFNQNOOOOSSSSSSSS TTV VVV]V`VVVVV7W;WWWWWWWGX`XXXXX2Y;Y=YDYFYPYVY\Y&Z*ZZZZZZ[~[[*\-\\\]]^^}^^^^^^Y_\_____``1`<`A`O`~````#a&aaa60Jcaibpbub}bcccccd ddd d"d/dTd_dddddeeEǪS[ѭ٭ ˮҮ!@I^inyCJ[gnrs{lx  -6X`ε׵7<0J660J0J`<du3E*9},BL%3>Cɼ)3?NR^w$ahĿ /6MSlpJP_lw&/4@\flz&2 "38Isz|0JdIZdu!-z36$(Ze #z!&46A[_Rp 27fit|3>CNfm(.8+47=flAJL^o?H60Jchuzu.>CSkw/@*> {u~^djw 3;G17Wemz60Jcy T^OR48jox,1"/]i MX&1 Ve.3CMOXhx60Jcj  l  9LYQJ  CLNY[_%&F J   N V     t#(=>^_`rs+4=JGNTYrw)/lqjU6jU0JjU jU0JCJ KH 5CJOJQJQq EIgpu45bcd'(KLMbc jiU0JjtU jU0J60J&/ =!"#$%DyK (http://math.nist.gov/javanumerics/jama/yK Phttp://math.nist.gov/javanumerics/jama/DyK http://www.jedit.orgyK ,http://www.jedit.org/DyK http://www.lyx.orgyK (http://www.lyx.org/DyK http://ant.apache.org/yK .http://ant.apache.org/DyK  http://depfind.sourceforge.net/yK @http://depfind.sourceforge.net/DyK http://www.zerog.com/yK ,http://www.zerog.com/ i4@4NormalCJOJPJQJmH H@H Heading 1$<@&5CJ KH OJQJF@F Heading 2$<@&56CJOJQJD@D Heading 3$<@&5CJOJQJ<A@<Default Paragraph Font(U@( Hyperlink>*B*.b@. HTML Code CJOJQJ$X@$Emphasis6*B@"* Body TextxD>@2DTitle$<@&a$5CJ KHOJQJN!z!z!z!z!z!z!z!z! z! z! z! z! z z!z!z!z!z!z!z!z!z!zW+B6VBZN\k8zǤmcK jt I E  | i34-p$@2:MaФ<q @"lL  } %= _ r 4c'LbXXXXXX PTGO%!<GZ^481 ? 0 >  7>ls MX ^i"j~# DQUb-p3; >!I!!!!!k"x"{""####O$X$7%K%%%&&5*?*j*z***++++1,@,B,R,W,^,,,,,-%-'-2-y----2.6../////"000l0v000q2y2N3\334}44556 6B6V66666b8k8v88888888h9o999::;;==Q?U??????? AAdp9=X`Ň#'׈߈ V^͉Չ؊ "&:j{‹ ֌ߌpt,9hqs}ltO^x%PY͓Փ!;D09ETjwIXv˖#s|ݘfkz~:FV^hpǚϚؚ+6syʛXaen 28DMX_ОߞnuʟП~Ƞ-4ơ̡nwբܢ>EPWy}ڤox٥ݥ#)*.SZr{LPwѧ٧ ˨ب!ICJ[glx­ 3:qx -6X`ίׯ!'7<dsǰͰ3Cpvαֱ*7}*BJrxͳԳ%1UYtzPWflvzELɶշܷ)1?LR\wyĹ eoMS_l&/4@\flx&0 "18Gemsz|IXds !-zfm Ze #pxz&46ARp 27t|3>CNfm(.8#,+6flAJL^o1:?HYdhuzMUu.>CSai/> {OSu>F~jw 3;G NW We{59fn07yW_ T^x]irz MP"&FN&1CMOXhx NY<C t    q u 8 ;     =JTYuIMH L 0 > 1=j~-Wg''))\*i*++++--"000X0c0@3M3!6%6B6V67799>>AAC CFFJJJNKNSTTT#_'_ffggCoFo6r@ruuTxaxxxeyyIVʂÄȄÅЅ)?Ƈ$),:Yc:GZyڤszdt3C*8}+%2)2ag/5ly&1"2IYz0:2;1:u.>/?{F{BE   (   Y::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: Ian Davis=Macintosh HD:Users:ian:javadev:king:doc:work:hacking-king.doc Ian Davis=Macintosh HD:Users:ian:javadev:king:doc:work:hacking-king.doc Ian Davis=Macintosh HD:Users:ian:javadev:king:doc:work:hacking-king.doc Ian Davis=Macintosh HD:Users:ian:javadev:king:doc:work:hacking-king.doc Ian Davis=Macintosh HD:Users:ian:javadev:king:doc:work:hacking-king.doc Ian Davis=Macintosh HD:Users:ian:javadev:king:doc:work:hacking-king.doc Ian Davis=Macintosh HD:Users:ian:javadev:king:doc:work:hacking-king.doc Ian Davis=Macintosh HD:Users:ian:javadev:king:doc:work:hacking-king.doc Ian Davis=Macintosh HD:Users:ian:javadev:king:doc:work:hacking-king.doc Ian DavisTMacintosh HD:Users:ian:Documents:Microsoft User Data:AutoRecovery save of hacking-ki@jjU|jj P @GTimes New Roman5Symbol3 Arial3Times;Helvetica? Courier New qhEv5҃A't>0pWhere things are in the code Ian Davis Oh+'0  0 < H T`hpx'Where things are in the code1herherherNormalh Ian Davisgs151Microsoft Word 10.1@f^t@JH=@&c%@+M2L' ՜.+,D՜.+,T hp  'Duke Universitytp Where things are in the code Title 8@ _PID_HLINKS'A|$J4http://www.zerog.com/<^  http://depfind.sourceforge.net/%7 http://ant.apache.org/7Zhttp://www.lyx.org/Y/http://www.jedit.org/1Q(http://math.nist.gov/javanumerics/jama/  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Root Entry F)FLData 1Table3WordDocumentNSummaryInformation(DocumentSummaryInformation8CompObjX FMicrosoft Word DocumentNB6WWord.Document.8king-2.21.120420/king/doc/work/new-color-palette.lyx0000644000000000000000000002212711531212662020374 0ustar rootroot#LyX 1.3 created this file. For more info see http://www.lyx.org/ \lyxformat 221 \textclass article \language english \inputencoding auto \fontscheme default \graphics default \paperfontsize default \papersize Default \paperpackage a4 \use_geometry 0 \use_amsmath 0 \use_natbib 0 \use_numerical_citations 0 \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \quotes_times 2 \papercolumns 1 \papersides 1 \paperpagestyle default \layout Title Redesigning the \noun on Mage \noun default palette \layout Section* Introduction \layout Standard \noun on Mage \noun default uses a palette of 25 named colors for rendering graphics objects. Each of the 25 is actually a set of five closely related shades that are used to impart a sense of depth to the image, with the front of the object being rendered in a stronger tone and the rear fading into the background. Also, the graphics may be displayed with either a solid white or a solid black background, so two different complete palettes are required. \layout Standard The result is that \noun on Mage \noun default uses 250 distinct colors to render its graphics. Previously, each of these was designed by eye and specified individually in the red-green-blue (RGB) colorspace. The palette for use with a black background was very good, but the one for a white background was somewhat lacking. This document describes recent efforts to improve both palettes, but especially the white-background one. \layout Standard The following criteria were used in designing the new palette scheme, and are listed roughly in order of importance: \layout Enumerate The colors should be pleasant to look at for an extended period of time on either the black or the white background. \layout Enumerate The shades of each color should convey depth as well as possible. \layout Enumerate It should be possible to organize the named colors into progressions and families based on both hue and lightness/darkness. \layout Enumerate The colors should be maximally distinguishable from one another. \layout Enumerate The colors should retain these properties on a variety of different monitors with differing configurations, as well as on the printed page. \layout Enumerate The color definitions should be simple and intuitive, with a minimal number of parameters to be specified. \layout Section* The HSV scheme \layout Standard As it turns out, the simplified scheme for defining colors was key to achieving the other properties, and so will be described first. The new palette was not defined in RGB colorspace, but rather in hue-saturation -value (HSV) colorspace \begin_inset Foot collapsed true \layout Standard \emph on Brightness \emph default is sometimes used as a synonym for \emph on value \emph default , and so this colorspace is also called HSB. \end_inset . \emph on Hue \emph default is given as an angle on the color wheel, from 0 to 360 degrees, where 0\SpecialChar ~ = 360\SpecialChar ~ = pure\SpecialChar ~ red. \emph on Saturation \emph default is given as a percentage between 0 (a shade of gray, no hue) and 100 (maximum contribution from hue). \emph on Value \emph default indicates the brightness or luminosity, and is given as a percentage with 0\SpecialChar ~ =\SpecialChar ~ black and 100\SpecialChar ~ =\SpecialChar ~ white. \layout Standard Each named color was previously defined with 30 parameters: red, green, and blue values for five shades on two backgrounds. In the revised scheme, each color with is specified with five. The same hue is used on both backgrounds, but saturation and value are specified independently. These numbers define the first or frontmost color in the progression of shades, and the others are calculated from it. \layout Standard The formulas used for deriving the other shades were based on careful observatio n of the original, hand-built palettes. On a black background, hue and saturation were approximately constant for a single named color, but value ( \emph on i.e. \emph default , brightness) decreased as the shades receded into the distance. On a white background, hue held steady, but saturation decreased \emph on and \emph default value increased as the shades receded into the distance. \layout Standard Both cases can be regarded as an interpolation from the frontmost starting shade toward the background color. Any color with a value of 0 is black, regardless of hue or saturation, which explains why only value needs to be manipulated to accomplish a fade towards black. White, however, requires that value be 100 \emph on and \emph default that saturation be 0; thus, both parameters must be varied to get believable fading. \layout Standard Interpolation is done linearly, with constant-size steps between the shades. Since this approach yields a very good palette, no more complicated scheme was sought. \layout Section* Color families \layout Standard The \noun on Mage \noun default named colors are organized in two \begin_inset Quotes eld \end_inset directions \begin_inset Quotes erd \end_inset , as shown in Fig. 1 (TODO). The vertical axis shows progression in hue, with a rainbow of colors. The horizontal axis shows progressions in lightness/darkness, where sets of two or three colors look like they belong together, but differ in saturation and/or value. Note that some colors serve in two different places in the chart. \layout Standard On a black background, the light-to-dark progressions go from the pastels to the semi-saturated colors to the saturated colors. On a white background, however, they go from the semi-saturated colors to the saturated colors to the pastels (which, depite the name, are quite dark). \layout Section* Adjusting the color definitions \layout Standard All of the initial HSV definitions were based on the original \noun on Mage \noun default palette. However, some adjustments were made. \layout Subsection* Hue spacing \layout Standard There are 13 colors that form the primary progression in hue: red, orange, gold, yellow, lime, green, sea, cyan, sky, blue, purple, magenta, and hotpink. There are six \begin_inset Quotes eld \end_inset anchor \begin_inset Quotes erd \end_inset colors whose hues correspond to the standard RGB definitions: red (hue\SpecialChar ~ =\SpecialChar ~ 0), yellow (60), green (120), cyan (180), blue (240), and magenta (300). The other colors are spaced evenly between their flanking anchors, with a few exceptions. Lime is closer to yellow than to green, because colors near green are hard to distinguish from one another on many monitors. Purple is slightly closer to magenta than to blue, again to improve visual separation. Hotpink is also slightly closer to red than to magenta, for the same reason. \layout Standard Most of the light-to-dark progressions ( \emph on e.g. \emph default pinktint-pink-red, bluetint-blue) show some variation in hue; in fact, only yellow and yellowtint share exactly the same hue. This can be attributed to the fact that there are fewer colors in the hue progressions for the semi-saturated and pastel colors, and the hues vary to maximize the distinctiveness of each color. For instance, red and orange are only 20 degrees apart in hue, but pink and peach are 35 degrees apart. \layout Subsection* Value and saturation (black background) \layout Standard For the most part, all colors on the black background start at 100% value. The exceptions are some of the neutrals (gray, brown) and colors near cyan (cyan, sky). For some reason, cyan appears unusally luminous on most computer monitors, and so it starts off at a reduced value to compensate. \layout Standard Levels of saturation are used to distinguish different groups of colors, but with each group there are a few trends worth noting. Green, blue and purple all benefit from a reduction in saturation relative to their peers; at full saturation on a black background, these colors are jarring and almost seem to vibrate. Colors near yellow tolerate the least desaturation; dark and desaturated yellows and oranges quickly become muddy and then turn into brown. \layout Subsection* Value and saturation (white background) \layout Standard Full, 100% value is a disaster against a white background. Those colors are too luminous to be easily separated from the background and strain the eyes. No color except blue has a value above 90%; blue appears so dark in contrast to white that it can tolerate the higher value. (Even for blue, a slighly lower value would be preferable, but the higher one helps with separation from bluetint, which is not much darker but already so dark as to be difficult to distinguish from black.) Both green and greentint have lower values than any of the other members in their hue progressions. This may be due to the fact that human eyes are more sensitive to green wavelengths than to red or blue. \layout Standard Most colors on a white background are fully saturated (except for the neutrals). Again, cyan's high luminosity recommends deemphasizing it, and green and blue also benefit from some reduction in saturation. \the_end king-2.21.120420/king/doc/work/magetext.kip0000644000000000000000000004340011531212662016615 0ustar rootroot@text keywords start with @ alternates sometimes shown, but preferred form is listed first @keyword {text characters} are those enclosed in {} See 'Properties' listing for object keyword parameters and point attributes --------text section------ @ of a real keyword must be first character of a new line keywords here are set in by a space so this text can be read in Mage @text starts text section @mage #.## MAGE version (can come before @text), only keyword recognized WITHIN text section @kinemage # ESSENTIAL keyword to end text and start kinemage input -------------------------- --------kinemage input---- # indicates an integer needed, #.## a floating point number. @start control for reading from a sustained active pipe: start a frame recognized by pipe handler code @frame # frame number of image from a sustained active pipe, override @finish control for reading from a sustained active pipe: finish a frame @done control for reading from a sustained active pipe, close pipe @mage #.## @prekin #.## @caption --->chars to caption until next recognized keyword--- @text --->any text appended until next recognized keyword (5_75+) ---MAGE object hierarchy: group, subgroup, list, (sets of points) points points can be in connected line sets, or specify triangles, spheres, etc. @group {name} [parameters... all on one line...] @subgroup {name} [parameters... all on one line...] (@set) @____list {name} [parameters... all on one line...] some type of list is ESSENTIAL for a kinemage @vectorlist (@vector) @labellist (@label) @wordlist (@word) @dotlist (@dot) @balllist (@ball) @spherelist (@sphere) @trianglelist (@triangle) @ribbonlist (@ribbon) @arrowlist (@arrow) @marklist (@mark) @ringlist (@ring) @fanlist (@fan) ---MAGE points---follow @____list line on the next line {pointID} [attributes... separated by spaces, commas, new-lines, etc.] x y z --trailing triple: x,y,z defines scope of a point, x,y,z only required thing ----table cells only: 'tablecell' or 'noxyz' can stand for triple Generally, list type determines meaning of all its points, but point attributes can force different meanings within a list for advanced, special purpose, complicated kinemages. @kinemage # ends this kinemage input @noscale @scale #.## @compare side-by-side of sequential animate groups, overrides stereo stereo is reader's choice: menu and keyboard s key @stereoangle #.## + for wall-eye, - for cross-eye, also under menu control + vs - toggled by keyboard c key @onewidth default is multiwidth, also menu control @thinline @perspective @plotonly @flat @xytranslation @pickcenter @zclipoff @whitebackground (@whiteback) (@whitebkg) @viewid {string} @1viewid {string} @2viewid {string} ... @##viewid {string} @zoom #.## @1zoom #.## @2zoom #.## ... @##zoom #.## @span #.## @1span #.## @2span #.## ... @##span #.## @center #.## #.## #.## @1center #.## #.## #.## @2center #.## #.## #.## ... @##center #.## #.## #.## @matrix #.## #.## #.## #.## #.## #.## #.## #.## #.## @1matrix ... @2matrix #.## #.## #.## #.## #.## #.## #.## #.## #.## ... @##matrix #.## #.## #.## #.## #.## #.## #.## #.## #.## @zslab # @1zslab # @zclip # @1zclip # @2zslab # @2zclip # ... ... @##zslab # @##zclip # @ztran # @1ztran # @2ztran # ... @##ztran # @localrotation #.## #.## #.## #.## #.## #.## #.## #.## #.## a.k.a: @localrotat ... @localmatrix ... @endlocalrotation @endlocalrot @endlocalmatrix @localprecenter #.## #.## #.## @localcenter ... applied before matrix @localpostcenter #.## #.## #.## applied after matrix @endlocalcenter @endlocalcen @endlocalprecen @endlocalpostcen @gnomon #.## #.## #.## #.## #.## #.## #.## #.## #.## #.## #.## #.## place after the @group... line: to belong to that group points on 3 axes and center (ok if each on separate line) used by Docking routines to track change to a mobile group MAGE will add to existing gnomon info or create anew if needed @fontsizeinfo # @fontsizeinfo # @fontsizelabels # @fontsizelabel # @fontsizewords # @fontsizeword # @tablefontsize # @fontsizetable # @tableblackbkg black background (and blk bkg palette) for table @tablewrap # number of columns across before wrap line below @tablewrap auto-wrap first implemented in Java Mage @tablewrapdecades auto-wrap # columns rounded down to 10's @tablecolscale #.## scale calculated column width @tablemarkradius #.## square marker radius for table selected graphics points @tablefancore #.## inner radius of table value fan on graphics point @tablefanradius #.## outer radius of table fan at a graphics point, this is multiplied by point radius to represent the cell value @beginselect keyword starts selection range, re: bondrot selection @endselect keyword ends selection range, re: bondrot selection (@beginemphasis prototype use only: starts selected range of emphasis) (@endemphasis prototype use only: ends selected range of emphasis) @listcolordominant @listcolordom usually point color is dominant: key 'l' @lens #.## parameter of lens radius for lists marked "lens": key 'e' @minutes #.## timed test of #.## minutes, results automatically written. @drawline enables draw new function only for lines between points @drawlabel enables draw new function only for labels (=pointID) at points @drawball enables draw new function only for balls at points (lines, labels, balls are inclusive! See list params answer & result: ) (scoring done only on answerlist type: limited to one type as of Sept 02) @drawnew enables all draw new functions, useful for practice, etc. (answer list without @minutes allows user to see scored result) KINEMAGE menu items enabled to allow users to score and proceed in tests @nosavealert NOT warn user about new drawings before doing next kinemage @bigfonts sets toggle (w key) ON @shortline #.## absolute amount to shorten each end of a new draw line @comment {xxx yy z} character string just transfered unused to output @command {xxx yy z} character string to be used for remote update cmd @control creates a control button Lcontrol, which toggles Lcontrolon @title {arbitrary kinemage title} @copyright {date and author(s) } @pdbfile {filename.pdb} optional actual name to use for prekin or probe must be before any @group... line to apply to whole kinemage @grouppdbfile {filename.pdb} specific group pdb to use for prekin or probe must follow @group... line to apply to that group @colorset {name} color unique name and standard color as char strings usage: @____list {listname} color= {name} ... anywhere in kinemage @master {name} forces named master buttons in inputed order @pointmaster 'C' {name} character 'C' associated with master= {name} usage: {ptID} 'C' #.## #.## #.## @nowfind {string} invokes FIND, input on the fly from an appended file e.g.append 3 lines to search for string: @start @nowfind {string} @finish as outputed by File/Save Special/pointID to file @parameter #.## get up to 10 parameters to play with, e.g. diffractometer @fullrgbpalette { #} #, #, #, {comment} matches: File/Save Special/palette to file ... first # is 0-255 index of entry, then R,G,B 0-255, (comment ignored 010802) arbitrary number of entries, 251-254 ignored, entry color names NOT changed -----obselete or violating reader's prerogatives---------- (@float #.##) (@integer #) (@ignore) allowed kinemage file to also be a, e.g., PS300 CHAOS display file (@keepstereo) valid reader's choice but over-ridden by author's compare (@keepthinline) artifact as author's choice, reader can use keyboard 't' (@keepperspective) (@keepperspec) artifact as author's choice, keyboard 'p' (@specialps) obselete: PostScript output now on menu (@projection) construct line length * 1/cos(angle) obselete: now menu choice (@constructdot) construct line puts dot at end instead of a line: menu choice (@multibin (#)) obselete, no effect (@zoomonly) obselete, no effect (@sideclip) obselete, no effect END --------mage group parameters------ @group {name} [param...] animate (*prefix) 2animate (%prefix) off dominant (no buttons for member subgroups and lists) nobutton (for this group) recessiveon (dominant if off, recessive if on) master= {name} (common master name) (see NOTES) instance= {name} (name of a proceeding group) (see NOTES) clone= {name} (name of a proceeding group) (see NOTES) moview # (number of a Menu VIEW) lens (applied to member points) float (obselete now always do floating point perspective calc: table (members put into table) header (members are column headers of table) --------mage subgroup parameters------ @subgroup {name} [param...] off dominant (no buttons for member lists) nobutton (for this subgroup) recessiveon (dominant if off, recessive if on) master= {name} (common master name) (see NOTES) instance= {name} (name of a proceeding subgroup) (see NOTES) clone= {name} (name of a proceeding subgroup) (see NOTES) lens (applied to member points) --------mage list types------ vectorlist (Point x,y,z -->Line x,y,z -->Line x,y,z ...) labellist (pointID displayed at x,y,z) wordlist ( ,inc. new lines, displayed at x,y,z) dotlist (line width # pixels at x,y,z balllist( (disk [highlight] [shortened lines], center at x,y,z) spherelist (stacked disks [highlight] [shortened lines] at x,y,z) trianglelist (filled-in triangle) ribbonlist (sets of 2 filled-in triangles have same normal) arrowlist (Tail point x,y,z -->Head x,y,z with 4 tines ...) marklist (screen-oriented squares around x,y,z) ringlist (screen-oriented annulus around x,y,z) fanlist (screen-oriented, weighted feathers fan from x,y,z) --------mage list parameters------ @_____list {name} [param...] off nobutton (for this list) answer (list used as answer key with @minutes timed test) (answer dominant nobutton off (hide answer key from user)) (answer must have point types of lines, labels, balls as test asks) (answer list can be made with drawnew function in Mage.) (see @minutes, @drawline, @drawlabel, @drawball ... ) result (list from drawnew of an earlier mage run to be scored vs. answer) color= name colour= name (mage palette named colors) master= {name} (common master name) (see NOTES) instance= {name} (name of a proceeding list) (see NOTES) clone= {name} (name of a proceeding list) (see NOTES) lens (applied to member points) detail radius= # (ball, sphere, mark, ring, arrow-head vane length) angle= # (arrow-head tine angle) width= # (pixel width of lines) static (dynamic rotations not applied to members of this list) nozclip (applied to points in this list) nohi nohighlight face (for characters in wordlist) font (for characters in wordlist) size (for characters in wordlist) --------list parameters for bond rotations-------- see @beginselect and @endselect for artificial scope otherwise scope of bondrot is from first point of list to last point before bondrot of equal or lower number, or end of file Starting angle is arbitrary as far as MAGE is concerned, should be actual dihedral Ganged rotations distinguished by listname (phirotation) obselete March 2002 (flags a ganged rotation) bondrot #.# (starting angle, one of ganged rotations) 0bondrot #.# (starting angle, trunk) 1bondrot #.# (starting angle, first branch) 2bondrot #.# (starting angle, later branch) 3bondrot #.# (starting angle, ...) 4bondrot #.# (starting angle) 5bondrot #.# (starting angle) 6bondrot #.# (starting angle) 7bondrot #.# (starting angle) 8bondrot #.# (starting angle) 9bondrot #.# (starting angle) March 2002: recognize up to 20bondrot levels, accept up to 100 bondrots (99bondrot prototype for monotonically continuing branch from last n) parameter (Lbrotoption 1) precession (Lbrotoption 2) selection (Lbrotoption 3) xrotation (Lbrotoption 4) yrotation (Lbrotoption 5) zrotation (Lbrotoption 6) xtranslation (Lbrotoption 7) ytranslation (Lbrotoption 8) ztranslation (Lbrotoption 9) samescope2 (2 bondrots have the same scope as first of 2) samescopt3 (3 bondrots have the same scope as first of 3) samescope4 (4 bondrots have the same scope as first of 4) hplot (bondrot value ploted horizontally) vplot (bondrot value ploted vertically) pattern c... (MAXBONDPATT==37 characters== 0...A or R,Y,G on UNIX slider) phirotation (Lbrotoption 10 ganged rotation of same-named bondrot lists) --------mage point attributes------ point attributes are usually separated by white space as a matter of style and ease of editing, do separate all by white space but sometimes worth maximal compression to use storage, transmission, etc. ----------points---follow @____list line on the next line {pointID} [attributes...separated by spaces, commas, new-lines, etc.] x y z { final } does not require white space before next attribute. --trailing triple: x,y,z defines scope of a point, x,y,z only required thing ----table cells only: 'tablecell' or 'noxyz' can stand for triple saved and outputted for all point types written to screen for wordlists, written in cell in table groups if present, written in lower left screen when label is picked --------single character flags, all except P need trailing white space P defines new beginning of Point-->Line-->Line-->...polyline in vectorlist P synonyms are p M m i.e. in Move-->Draw, exception: P ends itself presumed for first point of a vectorlist. L for 'Line' not essential. L synonyms are l D d U (or u) flags point as unpickable, see menu superpick item B (or b) ball at this point in a vectorlist S (or s) sphere at this point in a vectorlist R (or r) screen oriented ring at this point in a vectorlist Q (or q) screen oriented square at this point in a vectorlist A (or a) on this point of a vectorlist T (or t) point is to be interpreted as part of a triangle in a vectorlist 'C' single quotes around single character identifier for pointmaster, case sensitive and must be declared before use earlier in kinemage: @pointmaster 'C' {name} character 'C' associated with master= {name} --------multiple character attributes------- need surrounding white space colorname any of mage palette color names; colorname! (exclaimation point) forces use of point color. width1 (or thin) for forced one pixel wide lines width2 (width#, where #= 1...7) forced # pixel wide lines Effective pen width = line width specified by point width or list width where point width is dominant over list width setting. When not specified, multi-width mode uses pen width for depth cueing but some display objects (rings and marks) default to a const. r= f point radius for points that are balls, spheres, rings, etc, also used for arrow vane length (vane angle is list angle). dummy (or DUMMY) point is NOT used for setting min,max x,y,z extents tablecell (or noxyz or NOXYZ) substitutes for x, y, z triple ghost (or GHOST) point is seen but not in special output (like PDB) NOTES: master: The same master can refer to groups,subgroups,lists, each of which can have multiple masters, but only 32 unique masters total. Multiple masters are restrictive: all have to be ON for object to be ON instance: Object merely redisplayed at original coordinates, color can be different but inherits masters, etc. clone: Object actually copied, can have changed coords, etc. new object in output. END --------mage hypertext help------ The hypertext capabilities of MAGE text has two interrelated functions. One is for a system of questions presented to the reader that are each answered in a dialog box that gives the reader access to information from the most recently picked points. The other is facility to instruct MAGE to move around in the kinemage by jumps to specific kinemages and views, find pointID text strings, turn on and off masters, and reset bond rotations. Of course, these moves can be part of a scheme of questions. However, they confer an enormous power to the reader, particularly because the text, including the hypertext, can be edited during the session! For Questions, kinemage number and View number are carried forward from the last time they were set during the linear input of the TEXT window material. Thus kinemage and view can be presumed for the go-to-graphics option of a new question. However, if these are to re-defined for the current question, this must be done before any master-button or FIND controls are specified. This dependence on the order of controls is NOT hypertext-like and might frustrate the reader/lecturer if they try to jump around in the text. The author must balance readability and flow of the text with robustness. Format: starts with '*{' includes [options] ends with '}*' Questions start with Q: but Mage keeps track of the question number. *{Q: text of question... }* Thus, if the second question in the kinemage is: *{Q: Which is the active Ser?}* Mage shows this in the text, with room for the answer in the underlined space *{Q: 2 Which is the active Ser?}*___________________________ Change instructions to Mage include: *{kinemage #, view #, alloff, master={name} on, find {string} }* abreviations: kinemage kin k, view v, master m, find f 'alloff' turns all masters off, masters are individually set 'on' or 'off' Bond rotations can be set (and edited and reset!): *{rot={name 1} #.#, rot={name 2} #.# ...}* abr: 'rot=','rot ','r ' where 'name 1' == the bondrot identifier string seen on the slider bar and #.# is the new value for that rotation angle If Update by PROBE active, hypertext 'rot' triggers an update. PREKIN after version 5.74 makes hypertext commands for rot/mutated residues END king-2.21.120420/king/doc/work/JTree-key-bindings.txt0000644000000000000000000000364011531212662020427 0ustar rootrootAll the key bindings from the JTree InputMap(WHEN_FOCUSED) and its parent(s) (actually, all of them appear to be bound to its immediate parent) keyCode Up-P -> selectPrevious keyCode End-P -> selectLast keyCode ShiftSpace-P -> extendSelection keyCode Down-P -> selectNext keyCode Home-P -> selectFirst keyCode CtrlV-P -> paste keyCode Ctrl+ShiftPage Up-P -> scrollUpExtendSelection keyCode Left-P -> selectParent keyCode Left-P -> selectParent keyCode ShiftPage Down-P -> scrollDownExtendSelection keyCode CtrlX-P -> cut keyCode Right-P -> selectChild keyCode CtrlUp-P -> selectPreviousChangeLead keyCode Up-P -> selectPrevious keyCode CtrlSpace-P -> toggleSelectionPreserveAnchor keyCode Copy-P -> copy keyCode CtrlDown-P -> selectNextChangeLead keyCode ShiftHome-P -> selectFirstExtendSelection keyCode Right-P -> selectChild keyCode Ctrl/-P -> selectAll keyCode CtrlPage Up-P -> scrollUpChangeLead keyCode CtrlLeft-P -> scrollLeft keyCode Down-P -> selectNext keyCode CtrlPage Down-P -> scrollDownChangeLead keyCode CtrlRight-P -> scrollRight keyCode Paste-P -> paste keyCode ShiftDown-P -> selectNextExtendSelection keyCode ShiftUp-P -> selectPreviousExtendSelection keyCode CtrlEnd-P -> selectLastChangeLead keyCode Ctrl\-P -> clearSelection keyCode CtrlHome-P -> selectFirstChangeLead keyCode ShiftPage Up-P -> scrollUpExtendSelection keyCode F2-P -> startEditing keyCode CtrlA-P -> selectAll keyCode Cut-P -> cut keyCode ShiftDown-P -> selectNextExtendSelection keyCode CtrlLeft-P -> scrollLeft keyCode Ctrl+ShiftPage Down-P -> scrollDownExtendSelection keyCode CtrlUp-P -> selectPreviousChangeLead keyCode CtrlC-P -> copy keyCode ShiftEnd-P -> selectLastExtendSelection keyCode Space-P -> toggleSelectionPreserveAnchor keyCode CtrlRight-P -> scrollRight keyCode Page Up-P -> scrollUpChangeSelection keyCode CtrlDown-P -> selectNextChangeLead keyCode ShiftUp-P -> selectPreviousExtendSelection keyCode Page Down-P -> scrollDownChangeSelection king-2.21.120420/king/doc/work/format-kinemage.pdf0000644000000000000000000044702611531212662020047 0ustar rootroot%PDF-1.4 % 3 0 obj << /Length 1259 /Filter /FlateDecode >> stream xV͎6 S(ג{l]`-ZtAq0edDI&HHaỏ%_*Xm+ވɪUɋT6b6N֢fBGT fA'4K|FG W#d=:xho4E:-B>^ `iwڡ(ښ!jԚF팎.ؼ| txIMh1:Nw׎j I; ةEyÇ#;$eyƁ*qg\; (KGArPM^9 (N:F 33l -Fn @oɞ* *YYWLIr./ohqYwUT{ W^.+I{Q=`It&jTEY{AUdEɚ%>mR M0=pP? mIؙ *1%d \<^픏|#Bk> endobj 1 0 obj << /Font << /F61 6 0 R /F63 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 13 0 obj << /Length 1711 /Filter /FlateDecode >> stream xYKs6WVj&b #:iqf;=$9@$rWH0P-93\ zqX,3?n%ҏtgʏ3޾ūX'" $F&'Aŧr[_dٲ^LAz{AvvTė"ZA]T+Fr%33T7tf?@7i t!L),a ;|y$_5VL<f삉&`V0e{UQ6ޔޙ!d.0[YADU Ad*gGMeO~vgPpx? @\T]6}C8̼OO{o&#d ' =.T#RBpg h0vqx" ʣMc[s)Vq mgz[sډy=[uΗ*:3OXo4eÝgV;G2XÙroS YzVGq D~Ә-]8.d90/`+=oȨ|uQ_"r#]H;nmaضdףW/7fx8lnLXáϸȦrjp=w}o\.$=Ї;]F$}H-zr8Mu@'A.9y#37`vt,l Fֵ6B[4N7lnj A.K7+nMk 'd9hBDl݃?8n G*j7P8b]ڂaa=o@۱ ԥ708?ؑej:]#;eU1ՃWB"v[]3jDoN4% 5ajכOirNOi2m܌&d0 RHҽQЛ.0hg c9y8P1[HD EӬscGX{S%o>H[z2X&Q q@UTr0:pF(v7w8N=Ξ?~a" ӷK`boEdTH6Ÿ]i+z0!*?L2gA=BNL8#*f펝A2}TFJb&bSS;ЂߦgP ZP*!o )*5NBMw\|( q0 m⧐~+, endstream endobj 12 0 obj << /Type /Page /Contents 13 0 R /Resources 11 0 R /MediaBox [0 0 612 792] /Parent 10 0 R >> endobj 11 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F14 16 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 22 0 obj << /Length 2895 /Filter /FlateDecode >> stream xڕY[۸~?o+*Q ,Eh$y%f#K)(N"6g<>2]5qSf*Ͳ*Uq٤].ި"~Nȸ֬U=Vs{DH*l񗇟Uҋϥq݇d=$_8kI6!M?}lm.ؽ 8UYT :$Pk]0Њx2nƯ7Y"yZpztRydt`J~+"V81}kDh*[N]SEA1HG9Lhǣe"@˲YuUd~;p^18㖇v cK0:]Va<-܋3G3LA u{UB NKăz:$j3Mτ3=10(C,!A⤝>8p>Lq ni0bVԿ273<<,Bɿl_/#XP8,wR ZاCmAD2͢ "a%K7]`߱*sċ4I8Ù3(`C@{/o9R\S(1S^1xaHՠ섃{aL,8rDn8}:#<$9 G\'{l;,H8K&V %ob~Ĵ#:i'ķnhaH܃SE+P`/G 2?>A֓=NF>"t ,=6m @7=k!j/R`` \{@!F4l\m~d"\/NAT% g`r+lQ̫!8}u:jL O^v%`]}Mb{.d9cH$Rau~4'(L!OMFK4%,ǺmΎg)Q/^o3"/=?be endstream endobj 21 0 obj << /Type /Page /Contents 22 0 R /Resources 20 0 R /MediaBox [0 0 612 792] /Parent 10 0 R >> endobj 20 0 obj << /Font << /F61 6 0 R /F14 16 0 R /F91 25 0 R /F63 9 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 28 0 obj << /Length 2663 /Filter /FlateDecode >> stream xڍɲBF4Ip/IŮl~ ! Y@QK%S:h4廿骉R^T*Uq٤cyɊ$`_^i\%j׽sڿ$_^X5 I6ͪ{Q9lHS/k& 6 r?mՓUnduZG/x˝ʁ)x-3UMÃ봈pᙷmwۖG]xӺ,No'c֟[-wttw2զZdҸ)W-0țC17nDp=^gskP&0me]QޔIdΦ(Ԅ\MJE_YgEF7MְwH/gi(GkLUuoM0$Yے`6 1 }&YHL(!4 B $6sG#bCE$MZuu[/Q93֙T+*N`hޚNZ*ZL-@WC3RKf}KqsXPȊ8̒:錮GM@M$0-)~cN0$u0W! fhyf֛O <I? [P;*r&aMvёd!fUTzj<4㴞n:Vn_IC`FgmSq-ҖD4.Tyf؏#RW _[`0=[~,hRLsbgCxwtpN *5VA&E|y".s7kLHaDFQ3q0 )pL{9r3REpwң7B[ɠػ9#3ePYdmW2oBa nfnxb0|o~ ZYv΍X¿8WҚ$**E0%b웲T]u%F䜶tm/3r\ -&J^lKH^&ѻw󡹳ү]xv@=Q sxIrOwl!Sb~Xk{Zƃ9y,!xfx$8߱vgyzH0 d$> endobj 26 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F75 19 0 R /F14 16 0 R /F91 25 0 R >> /ProcSet [ /PDF /Text ] >> endobj 31 0 obj << /Length 2647 /Filter /FlateDecode >> stream xڭY~|(x\)P?Ց9aY)w^KQ'^>fgg~3zx]V_qRQgiJO z,{M_~כ(HKZfSjw`U?* WE:E1LPJݏw۸6ޡ*IBJ)P]1;tY֛D77zWjSaj `z$R" ,dtEO4xa+ꧪJd~0IAە3Zfk mlv' GNP4 ݝz.BEYK­́g}):nܪ:9d=(b6 brЋD/梡<*w2s tK"puHDN%#v3!1*hr ւ; 7  ElQ3|P*ޝyR9339"hc b5 `@nz/֎b}|^#+!="\ H>&G u^Zg8wT)?`~l/;-|<Ǻ߰1|WeIHpJšvcי!xۭmӑ?!0‹=Ϸ7h4P8E7' s3ۡMC >f7F.m=WN(WJU E=r)JA HQ5'pؘ~/u|rAVD^S;S&dDwF.VAQ]".CYA >XqA0~8B}bAp"* :A-}ɺderULV8X%P%, Rz *=#|$CYr;K #JVPqz8lʪW(>+*MfORaToKlIWYdX[`~悐r& ,#pWԱG 5,n1y/rds @D2{6,V&έͰ/-Y\!b"0K#?J+|Զ\aFV%X Pd"!4Ӗd p,E1dao|әPyPBv=Pt3AȕKC) B)[yJklga  E/ $+I=x>F>#^ū@IWE.f]}:RrJt8!T֐dl*&ȭ /G@E !.W"0j|f 5)@qOd-k@暲aWu!;a {%G {wj rz " CNX-(hz_ۗ|r&z( H@u]cBYX\*QDӕ='kqV4Y=2m Z \@2 gDE驃U1 = H=' hOZuG'pb5tTB,KX\%sP,_++kHo{XW4Xb.jBq5WYەu Y gA [vWkbD_U+"\mT6s/\d$L>"1"3>QU=> Tkn*٠B<ޱ`N2:}v_ vJRbP=M$U|t&kNzX65>|/^J 6y\$>%7=9`'jTw%,PFNb jP9 V<)zr5W=d_cewWb;A#&y$I_x;]cܕgd F~v_070[o D$irn*gFaSi±ѭ #:2cL;P!c;ݢQ"=hRvo;lǏ7q(lƞ ϟ( p-b<%:[n,p_ԏ endstream endobj 30 0 obj << /Type /Page /Contents 31 0 R /Resources 29 0 R /MediaBox [0 0 612 792] /Parent 10 0 R >> endobj 29 0 obj << /Font << /F61 6 0 R /F14 16 0 R /F91 25 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 34 0 obj << /Length 3068 /Filter /FlateDecode >> stream xڥZݏ߿@"kU%Jj-.EݢK [\9}8EEɲ}A}pH|8޷wWeXjzx\J.VB]ƫ{zdQv[oTI?>|wx_|67Hvwh]X=qY;„8vsO6^L[RW4T^a2W7q$ XethI0њf%j3: sƃnz [SuS"=g~O$Rx8i3ް:<yf=U(Ӄ2: ˛$Eɉf[6 "-eysr iM߃cQxeO b NxvhdS#ZP̓FLa+N5M{#(}tG~Mgz^oR䪂T$@Ƹ1ii2ڰx 춑 ݩµ|';~!fMuȶ@v?2V> `_-Sl@ gjXE@6/)93<;gK٦88P $Пxp7"ۈʽ쪓3f#/-!NCw}A^b dhb Y\HA-tq@,쭧VFgܳy<%x(fFlb7,¤q^$6RKz=3yT=mnl obIG\ nnۄ`~>9pݷGS "@IA{.q`hwݢ75(c~.D`Fo`>q|+44BZ@Mbi8I&3ݟ iv%ԓmDVF"fH]Fr요^> p5=B_H"XYYr[1T* 7q0f*}Iq)_:WA%>&.$#S8lZ+NxOt"A &5m7,0q&V]VЅAW?BLl%$#Jj3:NϬZ=}B<(ί͟ '(~- ӲnOU!UԘiHή{q>*cu#<_2}yͳXr C,080-,gfMY4m5o_TTVIeaTgS#`G`o?JbMQD=T$8-wos,Z*IcN'_ ~Cn\0/K\@p=a ?XߓWT)҄v}ׁ IQ;kLk\X:%pL`”AMV$s0{QI4 *'lIKBh2s6l´N7*o5?ob(=,# %b]&W.Gzg c;\jGKl Ӽ\fi|TZ&%nxdop{u?L+0d:<vB:G4C 8TŰ&0[B{9g Pٔ޳G_ l j=|?Kgms|ţ ou)!ԭqQUT&FH]—%yfbbb )yD$Z VjUS x9<@<@~tm% zCԌL@wjzŰjCc(?khHUFأ}\| טu>lp&{JwXA ?*G#\ >ܨM|ߎ8}7%6d t=./0zi7UOT}徢J?Ye+DfgQ)%W ɰO7!3AV/: B%Όǽl#xFӀ |.WD LĻz*`Upkia=֔ L vr8>hu[~(H?hn,ڹ:i K_{bʱ*B]z2+@+E6eH^A ax#Aga.H[ WAQJ5D~0//>m~8c? xr/p~&Οe^S; uK,QyQڰJ!,JECl',x1q0\]3|Z#"kxRl."~ !PD$•nOe"x:F( ,9x/?p~IcC7Ȟͺf#.Fib@EgS endstream endobj 33 0 obj << /Type /Page /Contents 34 0 R /Resources 32 0 R /MediaBox [0 0 612 792] /Parent 10 0 R >> endobj 32 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F91 25 0 R /F14 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 37 0 obj << /Length 2560 /Filter /FlateDecode >> stream xڍY[۶~?B}25SxONNI29EHH },g߳7Pԡdr,.wWVeXfa8̳biju{Nޮ7:W5joܟ;Uc}V~[oTE{ZESuTG٪>޽{6ZշwQ (Te: PJݏw?Lmlt/qk*m-)`VLk7Tl9ꎗ7M ]D&fD™z Nyz"f[`+ 9P!aj0O?Q_VITx+ IaġZ(xVi`㿠vUfAFG0rm5a$H[a10!Pb {\C>WYcw{oxc NDj'jNc<vt*prv:a9 7C7iq2ʡU0oGdn @ {K%0ai-wFBsDiӄχN`Di,ָH-w%Pb-gd7nu0B83X6~~&zn/$ڴ,l .w үdwA`ހ,wjl&:Ϗb0ŏE= &X#IF@}$8UEѭd7*)؛֡ay⅞q)b0;pD\ul_1_A}PhǛ `kjF=B_m#ANR&TUu~"C!1o$@ 2emG6u[QzF,$diΖeR4ЄMA!9B81$3`wP0JOR3^4gimM]xU a wYun< ov!:y%e/*&ryCC ‰P`'+YK5w҃%i]LB *i \Tc؏ :}WZl>͕ ]a&{߼^Jen `g\x$}4&p)S}"űԋH&5T FρїXO0)j r8Jx^7T̬ '(ѽwItT- {p࿱)Q8;W@Áΐ>5@*♙&+A ~By'V (Rː7 aj%9.Fa!A4q*(^M 3 Br$.42 S1$_ee6X z͐'% \,%Vdkv" #60Mc &y۲֑yY*֊$)TI3[1xd`^xȊL! .Huc [w[2e0a朗N˞t+iy)S)qLå70{}DJ7z''WWQ߬  wf^ u%X/XjPq %byٟdG xGHp\_T^P J5>i/'qK)9~.PSuLp"AA;&uG\!~%!SR-.&C@;?"1OQ'] UcO3!BڮLq (|bo?TE&RV,6/0ϼ,5BotTtぜz8'M| :|HԳ"f7zvjssn>0;`> K{<,TdMW?0'o-(yۀz |]*p]+B jq7a'&DG+ i05|Đ q\!I~z-6c|*,]=;(, 2 .]6(DN\b/:"QAt*엔Z[<)A$@pg7+Q>'oEb8BΟ^3iX%uNoSG:'+JbJs2v_RD{> endobj 35 0 obj << /Font << /F61 6 0 R /F14 16 0 R /F91 25 0 R /F63 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 41 0 obj << /Length 2531 /Filter /FlateDecode >> stream xڭYK0 բHY$=Ah[Ytԋdk3E-XbU_LժT+u*-0-z7כ8׭=C]l+ЯUsʓ$ǧVfQڝ~}x1ZU(EzqX_6~ђ,uBG;weQ컦q<[8VQם,S=Sn!typzc%$ptm_,@;P >_ɉq6^EJzsLNRRn IBTJXnyZLXh?oźeJSvPgWbn[8CHI]}W-ʂ_(ADID2j\kc$9XG*H@0Q:q0#gLiB.2]iσq7?I,%aL!2J9>k2;; mۦ3rsJ"FQ0 4LCOE\=\@t"{J<*-8/mk>}kP|ţ63dCp[[업Z4aøPǖIDQ-T G;[1&=F*6>͢RWA@N4xeFts17i(pcp]"LFwQYC9ؓm1j,dYKwCBz h^gCڠz 7F% zM|~g]u r7^j8 p )Fvr4x 8s?.)P/d{{D`\݋:4c `pRng;CzmfqM0wN">Λ k ͵Z( lSbl rQdF0k AkIvT>pUOp+{M0☈z8LNDĂVKV\Ƨ1l`*Po(wSAߺrQtMW.EZ_l 6 1Ӭh+b8kU\dm5&n ϙuT\*hڠ3Ȳܗ6WPA%x IUI t<m&=f &A`5(.Fp,P9;q!{êoRwg`ka~\qXd]$C^ .xOpdFWZ߯9]+]S5gЫh,ԞkpI15[Mx-GWt8?x]NonhqM/fzn]?Nr U7tFŋ/;MА}$̴ endstream endobj 40 0 obj << /Type /Page /Contents 41 0 R /Resources 39 0 R /MediaBox [0 0 612 792] /Parent 38 0 R >> endobj 39 0 obj << /Font << /F61 6 0 R /F14 16 0 R /F91 25 0 R >> /ProcSet [ /PDF /Text ] >> endobj 44 0 obj << /Length 3195 /Filter /FlateDecode >> stream xڍZY~_Pey:`Fl 0(3"LZd&)^꫺.ûo<獱Ol䱟ft)e g1U?`G&/O?|`6 ٔ?lyy&71:n~|ׄl^1o8C3vg`d^slvaI۟vg ݮ,:0'F(6 8v ۚXI5^K`Ov z|әN"\įu[j XX4C.g]oy/SjSՎP]{(z#6;(Щ}BGbb am{U_˄{, M}}K3Q/XCLr욫bbzҍ&Z +*Pu^Arx!p|:QcMLgp*te^x%w}80 f>UGUɊg;W:]ʘ@!<<>7Bڑncщ8d33' tk5AzT7(h_b[z?ҋРkWx#KOL*$XpebRaDg#(뱮f6%^ 0Ä1ܒA<?=`mM=Jjw(|ngAv#I*OS H&)**̈^ av$4ۃ<|}0Qlӳ*m$4VH, Xb0!rĝiI$ۓ17[p7z|v/98Zi/wV1Y%ޅtn{Ru> .KgYbErJT?DO| 0ǜ4`jKeN%Kʾ*FǪe%0|:T(gIVU{oivo6ԙGyf~^qGeC>x;Cvb!@xצ]H}בn8U&}%<Su{tEE[Q a9z:g G GFq{ >`N,UX'&3=xOs)a.6KAqi,Cݙ%}5@ke-~ ŶHBj$)d%.juU#?E}%hbۥ,@8(0B+ř4f2XeeYɈcUG%y^9aG:Ʀ;cMGȔe߬X !rɘ$. tCcx{[U$VҮi4`'$+}5|;ɖ- UK=2]l:Bc9# ׌dWz|eXI?f&ؑd *2Lq͵hxMVV䡟ƑE{D,'M?-^(oDpձBҘ43chjlz05%J73USSdVq'6HviqЃŠ:QC8,a (Gx|ob?;x(^55t(P@ɾA|.-wZݍw/xdMZn8UH'|\jSEeܫ+G؈0 gIĞH@/DIߴ7XnQZZMD\OahPd ȥEz$Ɯ'%r8%&mK`Q<JH dz$y_G*S$J25#SVқek@鮩3-T%v=I 7qӚ`1+=>fY jEc"&! ]d\bL|0r#P58l~)W9/M lr~)]*J_+M֟'هKlTut)w eCCP lVռ/ap ]Hv =d/Ui ?NO-,Ha0ϕ&ջ:*)"<+j)et퇌Ņmw߆~ઐC?'׵{ pF)䔄ڝaak1Ej4NsףI}3? j#2V8ɠjf 2A/% )Q4%Lj'MsXd{r >M-W0YV2? ܶFB?WK$ <5 =_?Y xLēRZu4I^($s \0ߠ)x,vw$FX|P|H7z~o t?.L"r'aW߫ump 7pVFik%MW&AU+|~ Nfύq[6{0&ԾB(ʲ:WkEZ 6_{n?ǎx` P( endstream endobj 43 0 obj << /Type /Page /Contents 44 0 R /Resources 42 0 R /MediaBox [0 0 612 792] /Parent 38 0 R >> endobj 42 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F91 25 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 47 0 obj << /Length 2933 /Filter /FlateDecode >> stream x[[۶~_7sg,H_I[Ҥ6m?P"Φsp^VKgg~8ɷ1_hc.,E5_l^/K모Yq`-F*^yv_"9Kx_ve\gW!:]A9d\JF0sW/_ [ziˁg&(iv38]ݹ}jK׬UˬrQ<Ɔ%^VRiu-ضUWtg]m]ʪ8s&L"o'qu[WnX<,K7Pe*01EG} p 5pk`r2VV }(:MX4F _e$L1"6GSY- TۮF;%h6fe2xuml1; _gEqOMl̆]/U篮yk@dcPBcI lHֶVF&/o sf}PX'(:[] #d~z/6x0X`ptۄMq酈\C٣[ F>[M^/ m;{Gc=&wWO blh O ]6(H Co6o-fs?"UY?rP T9hZ cgS8i2D(E3Dr„*i:g5vy)Z;u,-xQ[-@1*zgDБ%4J8Mxs֙Aд۪(*Pز7P\KV쎴Nkt+|7lц|lc>z-̅)BR|ڔUKccA5I *xvx) l@ E,xoG}MxAUZSbx|j$Pŭi쬹r2osb5V_M*ܽZ8ӫَwɪW*yHD<ߑh\TڻR{^=gkah_ - _ : g?JlG#7 2 Цy[+/۰@;~ @^V%;cvcTAs769 6^lơ{@78pprB E35G٭(6k5%2h7i )԰)hyTĩ俆agtQk6pE΃Bi틴_,E߆%\6o0fP`nܜsGo+%\,`/B j$v A\/>"d{1 \E, *@ =N3xĻv& Lƀ>_6RI)2} .hIFj'tYe7V&!Ku2\'ln1ͱ%:'#Hu:B ,q~?;B´o,אd 9ij_{#mWv3P(aC|գJo/o 'z8h۽YB8 Y`cб|Ƒ~NpufԹJex:^ ̞*"Ŵ=lq49ܞ@ %R"Irπv~rܱE|vh^E)v[{3Y{.B >=U+` .z0Gi5%ý)FoD'~gw@vo VBv6ge O.g \k|?L< ͐|4VW3|zHo MD×lLփӤe&`J 4Pc|3a5n= k7Ƴ єdʙ ӑvy; S4>Bŝ@ad(_/3ywOwZwP*{su3hwt> endobj 45 0 obj << /Font << /F61 6 0 R /F91 25 0 R /F75 19 0 R /F63 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 50 0 obj << /Length 2648 /Filter /FlateDecode >> stream xڕYY~_ᷕFԭ,bf,<̃lѺ" SdV4*bXXUXm27qMtggjP|q߶;?۪-ySa;}Fi(ݧ;OD*7͡ݗoަ6yng=We٦ B'aQn&Ww%D Q8rR3ѷ[?r-m_#:]ߞzmikp:!#vj(󩼖rh-M'R^m[kZlEia{Խn.چ9K3h$#g`Sߞb?pQ> <ȉܮyϴyVyNˢfH^:r*?h{5 6z{'ׇl57pnY?a:E9~Н`p>FIZ9gSH 1. DfzM%ߒجewI-;;  6A#%eTfaq05YߋDTLz&x`}# ;A7"DN Nbeű1i[0p)鼪k҉ѨJ$q,nQVtsOs]%B8a *y)M%XOdfKc>=[Ӝ~Џg&Wb5]"D#H10Sf zhD 2,#ڎ$ "qIǵdc_}[!I.,/-rؒCk@`hԶ^~f~w]d:Ґ3&2 <9:l Jb_o18[dNBN@\| ̃ 1m˰8wP˯^M/D aSi3Zx,Q<gqʗ*[ٖ9YXA6pC[sRh KI.CȢ#N#G[JOi$G)`@.xTT'`2ɯFeL8:"?}rCyǞ,qEBP 9 `*w`'.`@Ͷ 3XpGO}bEM$/ ( ,FUfUC#,B jLcgr{ HN D&u.-os0, 5{-?#DI,1Bb"Y B+>l"ԄIE&D0V7 ͒KhH /AZ.$JEve/+05(Б\!\bPbyMz S!iDOOېFVm1#XRQoIEܒEO}o<{e9nŗ—C9k Aw`6|Gk)xYvrI $_ +se0]`/6%E\0m43 ft\.b*Wɽ$ޯ $qV<1B4 ?U%]HE;W~HlʞeF; qf\f w.D;w ֭Ctߢ!fӋ|F`cl- 4_XghK! ԩe,otp5sLVE-B Vp+վEBxDĤV6>NEC8L%Vtcʃ\f;*\?s\\ɵRWi(C&RKG?2NeDy19GŌ\Faq*sFڂ{[VG9@j[ŎRJM>"U:Y& *,o%D*@8(bS ~f*h-p8C+LK#K=P͹c΀)ue?Hb5t$ףW0\ot QFaEhUgTޥ)(FR/Z1kcR ōۢy00:ջd*E^xRr8QarVjB> Tg`0)rر"} npKA[/*x2_acpf]tHFn(0~@<{m!/evGLJPJqe@#xCOo cx)T,>@`AVk bA0A-7~ύyˆ8h*&XMPf.e-ՎinYC݇@Yj>/ /> endobj 48 0 obj << /Font << /F61 6 0 R /F75 19 0 R /F91 25 0 R >> /ProcSet [ /PDF /Text ] >> endobj 53 0 obj << /Length 2607 /Filter /FlateDecode >> stream xڍYݏ۸߿=T:З&\mfq}H򠵹z# g(Kk X pILJqgUVaV}>4 ~YgQPNǎQeg`_u|=mhJiۛw7jOMب0thVoo0.GQbulPJͻ6fB%,݆Y4uMCF/^G1"8!pTXBemqB?_( -Rxu,ϦzB |}yިH;oS6B1T?mwI"|/j9V}`<غ.Y8=jx4LOB{!t#%`Mgz|A !RX_eP/Y#shwSp,t7kOhXs*vU=vj!vewC8L,xwF#K!>9_@+w [G[ߌFE]@#I<%Жg40Q^JƛF#oNf̈2GyDrvAZ? umZPa]kuM?/G}hY"~MAw kȕKTM'!CGo/zsOS}=` 0=UkL'ԹYblL%%ob3 8 "=陀190ɟE rH"UaoI9x5'8}/|Y*/X+MJF?sHIl~YҕʥOHˋ DsyFո힀3D3k'\]zN7V"'ŭ+Ex5JGN|6|;)3pKmwqkE=Ԕ}e4yIz!_s[}2|zP1bķ58g*$ %mZr鞴Y_> endobj 51 0 obj << /Font << /F61 6 0 R /F91 25 0 R /F63 9 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 56 0 obj << /Length 2624 /Filter /FlateDecode >> stream xڍɒ>_*LUhsJ'_\L #!C27o 5+t`7,Ԧ"<=oTeQm:Zmڏv$϶H"g:^GFeu3o<IT^J~~Ӄ$ScT\&Ŧ9=siI$Vu9=,PJÿl VH7K,/ct?kidUAbIA2ӹ'O<Ϧ??}ҺtBOI{+;=4l׹^<N 9_[YDo~F@E qxsߪ<<)KIY|8 ;;33KWNGxh2=mI ="a0rTr"{L@)mzud3x~ I;8xÊh ,yoc->"ny_zQUсduʣTI!ztRH6TWxNJ8PDl9zt?7Ji6s*[Q )5Gf ES{23.ɾ4_V隲d!ub?p΁$Wh+9ҽj̳^Trܵ`ˈޞE`SoAjr 801ybH&r [ecAeSE)+P Cx ˘+X\p"_DB2*SƵ{w$< ZfKCK:%\/<"2C d΢V'gMm8QzOUN Fb!%=$OHn -zd{cH ha 0ʮ;b ȉk\ J+Al m PfYNXa~d<XwVW280H:NJ j w-7{tKL~bn*.]`_r8.H&Qg\/) KBW}Vl׸`^DJB][&˓5f[R%hZG(8?M endstream endobj 55 0 obj << /Type /Page /Contents 56 0 R /Resources 54 0 R /MediaBox [0 0 612 792] /Parent 57 0 R >> endobj 54 0 obj << /Font << /F61 6 0 R /F63 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 60 0 obj << /Length 2523 /Filter /FlateDecode >> stream xYIϯt$*Y;)Y&$Bc K5IzJ~yp7UC&"c|-WA;;ҌFY-=|uÍWNEswzQW7ZyxZ+?M|_7:2[9n3vHpG*q0&Lbs^@IBo[)VmڴIF B]w }Ǭ]U$~Yﭭ,9p3g C>5-sa0SAvu?"$RgXA-Wi{Jd~D*:2M7wL?yp$\YwvXIzW@4zTF]B 0U:s@D霷8g~R0e̓@ w3i"B8Ǫ0/G<^xfSpjE:pΚڂae,,xlzkWYe qJA7հL1 1 !j氫;ր"yCɳ O) 9JUr;Kah\ A\PhVhٌ& 0YUxK %`$@S g@)P JmyG]a ]f%Th(d|,/ 83R{ILg@ڻ 2GE/"-pS>CL J]$T 0K@Ap E.i{q|,TeI-l T`UMi_kbB6i&R56R/ b#cE${QƲOPə[{PI@arQ(AFa$F3 sӁ_L!|kDz YW 8)ʎk?ʪA4wo':ev/-MUoMmÚ\kB0EAE\kXG@y1J*vWGe5/ufν7X"~L@J^RJN7?P'Ny<Β!WOr|/_zYP~Rrsw^T2}"X {=M /a_C~;܌tM`*U? endstream endobj 59 0 obj << /Type /Page /Contents 60 0 R /Resources 58 0 R /MediaBox [0 0 612 792] /Parent 57 0 R >> endobj 58 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F75 19 0 R /F91 25 0 R >> /ProcSet [ /PDF /Text ] >> endobj 63 0 obj << /Length 2076 /Filter /FlateDecode >> stream xڕXK8W(gcH9&Yd$"C,m%+߷UԣNfbXG>l~w(j{8mRn0 0Cn/y[6E4닝?{wx)ڪl: O Gχ6o'&'7mVoosUo`"IFAW V~"ZTRR?eeiW _ҿ뺨8q*!`]yzӟQ:(ln-5|*'Y˥* &nvܣqL6/@1t}/ 7 N)jH }ę3! Cia@Lo+GݥJ͝P=nD׮hwA฻`q,*@ӓniP9Ow)iċ d>?|te9\! ڴ骴/qNǑ5>8ݰj_8{v6D^l7xG*^Ir{C?sb|ˡƃxPfpC"t~=Qg aQ!r2{^kY%PhD$Z:1JPFd2_٣4ʺ|E#d2ys'6Ȧ+rjP#KMCM#6-rbP{oNOO B+ Do+,Ɖ ףwxrv{@NP:wW|$֓Ig^WLEnYyg@f1<ӌtEP섘sN9"qCoi]|n~+MVJ @f;ykvrɜl+no<#v'9: 6Pb4_s;dhѽw~~s'Q %aJ'[rg(r' pNۢJ4݌\Xf3c8Hԙ{:}^ppb\AgPdޫ c|oKCV^z- y3bP78Ŕxg:Lq?YJ㣌2$bXXڵNedP/i*VX}q#\}Q_hO "G \yUB|{ݖ}$|0kٰdA>#5DJDcR .mq*Z)Ve?.G.!|n6}O)R|#àѽMr=zxd>pp*I3d_ѮyoV~:B) dM# endstream endobj 62 0 obj << /Type /Page /Contents 63 0 R /Resources 61 0 R /MediaBox [0 0 612 792] /Parent 57 0 R >> endobj 61 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F75 19 0 R /F8 66 0 R /F11 69 0 R /F14 16 0 R /F91 25 0 R >> /ProcSet [ /PDF /Text ] >> endobj 72 0 obj << /Length 947 /Filter /FlateDecode >> stream xڥV[8~ V/ }(SeSX΃h3I_Gȓna |si䯟|Edf~'$͙>c Atu1T!O%VHYջeKc>sYGo=(?=%,`y_ޟ²-c.K$3(Y[~+^؍jgOL.ܮJ gPf/Q9ܱ4nw|J]eIlӄ{c]~ѝAߎE voE;)d$9UX ͛YON82bBy+Yj䠪Z881]iԜ6.j tk ).'li<^w L%fy$ڄp,nƯE(6CX6JJ :?ap Xo ǒ<>&}g][ߩy,: )b+L1ym1O8ܔOH6kW?7j_3' endstream endobj 71 0 obj << /Type /Page /Contents 72 0 R /Resources 70 0 R /MediaBox [0 0 612 792] /Parent 57 0 R >> endobj 70 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 75 0 obj << /Length 2492 /Filter /FlateDecode >> stream xڅY[~_Gx-}.z)sb+u}ZI_Hem1X(ȏ2+2.0.+0+5yNHY\"̣lWO_~=Oǧ(eB; EY'!<}~,V>:N$L2l^3XNEa4 QO7-Œ6q '|uVF4L"r6ve\pl'gMVw<\k[ f/o~ho/@74dIW,/^mwlD.>͍Hv0mYunIr)KZCel|o|)Y+"UOf$TIC,MkZӨ3ނ ,q^щBEL8t' g 7T@?I,ԃcb8 BeT8Ou _Kd9čY9^A>@FR-\ ܁Xlz{=Sϝ: y(QƢ܁)( E `O @wRH6QkԿL"./^ y3D]SsG/<99}f˂@dzushgE7 xպK.(P55 t8H*qAm<r("B?Q 8qܣ@Dر<=i]{iq¸_01C R64Z((tp }\f|*@kG[ՠ,Cͷ aZ+]}!CSl` M VAhQ0~߬NELU4ȟP s*ϳ ;" O(-~ Ei!~9ҫCEќ#db'% ŒJ˘CTf$u\8˙Q }X0h%csq 5 @E8TBXJ_$!{e1>Fq.9e,?~]ٓjPm]QpªTc%SXSdyGwK__sp Wg?1\(N􍁐!pn~|>]O__C .K@EBm,ȣ"m JT@ݔpxOnB+!/~_4LSHXWdNp԰#IQ3,)^ iXQ#{*p=âZ)&AKy/޿^aC{'\D9\3xz~hں endstream endobj 74 0 obj << /Type /Page /Contents 75 0 R /Resources 73 0 R /MediaBox [0 0 612 792] /Parent 57 0 R >> endobj 73 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F75 19 0 R /F91 25 0 R >> /ProcSet [ /PDF /Text ] >> endobj 78 0 obj << /Length 2128 /Filter /FlateDecode >> stream xڍa ԡg䷁>`7-00|*#g][vv+yPdW+iڷ\ʓ~-$*rWYWr{"_m8g騺ՃG Eܼzbׇ\ "_+ޭ\?."YUvAJ7oWB-\%ϊ(N2'v5xfxl5&[NM$"tFjD{A0 Ҋ~Oǣ GAipPʨHtIp#Jd0N!kn$ ҂)tĸV# >5iM*V7R3@v-z{Gf>~Z¶tIo~g#*؀GqetL6h(Lm՘Q & gDDIyhWgg4w{gpo5FS aOe|-A1l+7?B2!6n4֠o72 _l83s&y`T0XVq ,.,p !'"r4vaRp@SީY 3{Tkw-C0v~Fk{5/hNu]{C= x1,MQp|=Ia@1|{؀C2e 8fU},`ƉuA[Q\I,s9qx:cV&@ȁ9w2'o `}"D{<+ >2{RII_Ytrlr PIVLd jPvO4&i4S SgՏL>(9eLU-+NJ}/01IXH@?Nj8!>%ӭo2vôougѠ9bO.1;̜sZu5o<:s1zA UѫWG-;sX6.> O$+0Q%>!M$߸KǀXV /oPhrTZu޹Ȗi9=8l)9W>l8X`aXE\Be8 ,]lyBy8S @E`o&aJ p`С9*wҨOb.E›WF]2x = F[.EPJhg7X6/QK( T0yiԣk[2:"cvŚv_*0[5L*v{쉊*NGhmB)'p )pq=HK6n3 + IͧS<>,%tP Pz^aIPxbJ62!mYwjw3$0Evشb>Ml"2n;ɣ$xVGNf74ͲD2ƅ SY}a 4 yW"&*M/Nkj@gSx&ЫVaJAs3]`dq %i~B+w1hxvL56„T{x0["vpCS]H'-M)jHyN.{> endobj 76 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F91 25 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 81 0 obj << /Length 1771 /Filter /FlateDecode >> stream xXM6 W'_0 hk1`([GI:rj+{n)RdmC(Ky}HU\|'ij^Ty\T|}M8yX\D/"ɣ-c5lJFIx~=~=K~H\هwb뙈j5gi If l-G^x9Xąe{Ѓ2=l^UD _y\уŋ~!AB6-O]{ҝ{"b2"Q1Bgmk<0)2Nw )%:mOvʙImhD 0 UwGbDgێ;jRV.K ,ײMcvooz\;==joz]_J i'xh^G.*:{Gں>wDTLbK4Y:1-E/zcKp[ۛ2czGzi3FoNvmӴ G2$qwP5lnWY6_JPP>MnbB̫:N.zc]0{po]Zl(/9(Lw \/0}q9Tan`lTurvmrb+".wxP9Ў7vT(x!{;=b'4y JP0II=Tt,\, -d7=Sx4=K6c{oڀЇ 1^LȒ_ޞFr4ް.,'sdF(Q֔8S҃H1wM)df= m$'طT,7F 5\Rδ6hS R=-(ǰG{wQ ~QOfMMA"}pҧ^4 (FZKxC<wĹOp/7ЙJ3J,21崚23n:zޥ;b0,bQC?4߶ ҾFu8 `'[kqU1#q0~l,zP"dgYxzF ,{?倻`}@m endstream endobj 80 0 obj << /Type /Page /Contents 81 0 R /Resources 79 0 R /MediaBox [0 0 612 792] /Parent 82 0 R >> endobj 79 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F14 16 0 R /F91 25 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 85 0 obj << /Length 1770 /Filter /FlateDecode >> stream xKs6EXoLisi;qNIHS,Pq/!1&׎^,OzYE-KEA˴H˻Aq zgmWWǵV:h*WZ{n Ȣ2.wGjfȗ @b߽{MND3N$YF 9>Ah]pS̐0^jyYp{ю7ckmPݰ1So̳8(T܄:(tFkU&%4zXY?2zսFT=?8uX[G큃F5ٵg'ԵΙK2LЮòT vOO鰽 mvչ9m^! #cqZް,HIysv!X*L m2eWmӴ0Y=&I򷳝z!!Txyq#@|,a`,]׶vc[G[ʞ]:$4CfCOClM`Mt.լW[ GGK%3K{(1AR")55_%Ʊ@ [;b :>bnBFlbiqc :K϶,8ylf(=D{x6zOAѮ]ilYfE_'utoE(ߣ}P*lj\ @4Htn,} 1lkn@ :PBNnv鬠Y> V_1xU7es^}#v >\9]fTv CXDX22xT(^ ʓy(W&p£5V >(K7 #&(I~F8X|XoPu G8.\F Į~eH'+=l+fk@5 f0jG2EnY*bTYDLk3  ,阢л L@NAAzꨔM헨k4+xWN)=ſ>Ω'"Օ _}s#5=5W RMGne4,( Bȁ2 +%PkSvd qWn1җ}lSKBEhn1?'pbݥm~qc硔`B/ψ[DPy9Sr[r6INҬ!kvR瘡K\ӗ،$- y 'XZtn00 i^}\7 I|+ERuWj.~v # 49h3H .YxC endstream endobj 84 0 obj << /Type /Page /Contents 85 0 R /Resources 83 0 R /MediaBox [0 0 612 792] /Parent 82 0 R >> endobj 83 0 obj << /Font << /F61 6 0 R /F63 9 0 R /F91 25 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 88 0 obj << /Length 1814 /Filter /FlateDecode >> stream xڵXݏ6 _9ų,+vhۆCoC$Zqg9G?+8%#7o_'ly75Ol䱟l}S1moeIT~ܰ: xlի[&;2? uQW>rX>ϳ^0fjvl`Ĉ(u~cc\FEo:H jdAXIx–F[jp]ײTՉvߵUn{4N弦%xE'jU[<T/5h{' *E/;}eW{JyfMU}z!GfᴶA (Srg&O3.ߊN 5 a< m4 ۦ(*{f7([`7U-`mUi:.C&sxi*\iVMmx)yazEszc/k8 8G "h@ \) #[fRve8`6,aGϽD;BGǁpm} v,Ĝ': 5$nlCx05ozj`S<@t )Y4-~Nu'Ĭ{d<|r;"|0ؗ]7.'E}WɫE7J`^h^qϝsBRaOնB-~+|^46b> endobj 86 0 obj << /Font << /F61 6 0 R /F14 16 0 R /F91 25 0 R /F75 19 0 R /F63 9 0 R >> /ProcSet [ /PDF /Text ] >> endobj 91 0 obj << /Length 2144 /Filter /FlateDecode >> stream xڍ]6ݿoK}K{-=y%""KEi+R,?h]*Oϻu$u^e,s)E, N e@#SAo>?Lj<_ׇէ|ݬgIUOsUJREn߭X,U"+XdV 5i 2؞ ?9{ef*6QPUuUwN2r<ڽFZwުI]dq:Mj`*#G&L$30[4}fe0t ^^?3E 8 N7 y{#^PR(J{&$ /vg(NNrģ)4`>;azC>7FnI{BI&s9 V(InP$Q)jڹRgGD`wiϭ<* aB!]FJmw}~)={Ӯʦ$FYcT5lN3>Jys6p cra+!ڝ٭s g<@zM`#  fx1JY7 6XZm5܊*P@4'%x @T@Rk`XeY )^4S`do.)G‡ww`YࢅWkY:VvP ECK>=< U{C= % Zq!;rHHQβƲ780p dj(LeV,ŧ8(8hHFHKL%k* Y@_N( apFmU@<  Q/$IAW!.{Iz)Mudۂiu6DS|G}3 Zw޲}gϔYqA=fx(*5ap/P&B8-pb_J?{ 8oа8VmeBxݠI${K LkBR-B7 űl jxrbK>dA6DYj4&yFPc RS] L(c)ŭmNv#Q*)v{Z9z>mk1p{k)㛩`+؂ *cp}M:fNp}*)WljY`A0аOO&vz7NKƉ.?Ʃno&=d_+B [(SvmNkN7y0N !2NGihG?V/|%Ųg'|GP?~0&U 'VZo*I%7F Ra,)boQ,]C]( s0^i=s<"T22 G7(7h8Lr!7?!7 r78.b1z#8fPᰲ`$w~ /uQRK݌.cUQRKd2}Ȑ R~*$Hyq'vW+1LJBбVX?<4é<b-ތ9 ?} C3yËdd V(+99= ~K'L"e!6 endstream endobj 90 0 obj << /Type /Page /Contents 91 0 R /Resources 89 0 R /MediaBox [0 0 612 792] /Parent 82 0 R >> endobj 89 0 obj << /Font << /F61 6 0 R /F91 25 0 R /F63 9 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 94 0 obj << /Length 2269 /Filter /FlateDecode >> stream xڍX[6~[eH{H.oIPm!:~Br.8"gp曡7?mUy"I"/yEy%}^( ejy8ȂFڡ`R2}y߈m bXDEonycm6M%U}qv$ByߋpԽ۳dE$F9S,xمIY[ WYMSA Ϧ?AYMZ f'~$yw2 tȂfnecWm`(YF8rWPe|12+ TGmC&`1'`"7xIyqLz qa֢"hʎO g1jK$27pC\AÔW3YF4I|2m6b ǡb!_3*N}emQOA[# k >FU\lC EI8J.D Dʣ<|=g} Owe vRxa ގy.aro;vv2&/[3O\q!#Ɍ^AV/똣-7`TΓyHxx2J6ރQ6^,J/taHJqwe2_CV9G>JpYNGg3y*7~%(r`\˅R ef> DjT !*{x89)[fc\ Yp9 "PZ7z:7yb2&+*U ktGF)X욗W0uHnF{LťL[1|:](bY"Z~Y{/\.bN W1K0U5X]T)h?H}`DLC_*6Wvy|UVl, Qxr #դ) G`Цۃ g$A3[H@<xu<Q ;P88EiX9 N/~٣рݵvno&7G-gZw~g`S{2j[!4KB$uW2Ǔߩs!!p玫1I!E^1WU& 1Z\)5rm["٭wH e2\tߔ)^bHr&o7'ARRġ!ž++>fQ6ΖY<ܿy!!A\7$O7˹9Kw ;Vu5(Ap;K@J~W N7 NrQDkg)7.S`MepؑoITTovƈ?`8x.pq<~ma_k:@P)coYͳxNKAp`|h7LRd7+sb/#/$(ڋ_@. x+:ګ !FWeI~PDBx`0 v%UO ,.=Od -7UŭG$9x!*OO :ӭYJDޡ@S-> endobj 92 0 obj << /Font << /F61 6 0 R /F91 25 0 R /F99 97 0 R /F63 9 0 R /F75 19 0 R >> /ProcSet [ /PDF /Text ] >> endobj 98 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl/notequal/infinity/lessequal/greaterequal/partialdiff/summation/product/pi/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro/integral/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Omega/radical/approxequal 144/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/Delta/lozenge/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj 96 0 obj << /Length1 1608 /Length2 3065 /Length3 532 /Length 3887 /Filter /FlateDecode >> stream xTy8k$K9R,`,IʚSØ3C 1Vٍ%K%Fe˒]E)iQJ^_9;5ss? JPţ9Ňdę*hT呖#H2G-A (ihhHzx?NdBl.G'I7p b/GfB-A + z{#sC@0q >.X 0Š@ x"i(<leb$@"(  !y0$7"Gf΀08Iwo" /f $C ̪?yݑ$ 3 ]hlo<'&-黍Е goQb]JeIMe#+BՓp b(e!QN;aoh TƝk12^8E$]O1lJbW FA[Cr_\K1*N4I&\xzWT5OjnpkP\߫t|ղjIGޢ reg.`vTx{}+f![*Ǯb*/-.ڿ_]F'|G3]͝qxXF pSi(J"Eu8D)Xw?"#mZW{]NSWgTtPr YWJkF7? `l;!0=xt߻g3{O`DH_AsS|oqY7Q-F\J$o;ȚC ^ei!N֙g$݃a)V : ušxIf%{w(+w g9mp"3˕\ʃ8.#Y9CǾEDˀhѣ4Tv>oљMыwC֢̀~ &+$,6R$1o:Lv_>3WF IO:Fج쒞ybog.;]r9v=F ֲosK9)~jͶ[SqNu t_,c1SsueAҦ(i?`MI?'EN~Y0^GLցؕ!sZ, A?M}ƋMwq8oG*ݩ|:~4ēP] Q`Xep Ү}jOԟ dvQ-FN0T_ZK*+4ٻZZN7p巭k ~Z˭{̈m?%':|~;".c2Xvr՝cѯdhґo2;v6zcеs6ᘙ:M`yB@ )eQ6ǻ Vl kZmұaA!:Rq )E\46`ӳM7mw|+գ}xA62e%p0ZQ b Zyc1!$1f@fGH':auh>4h[d@=?٤]X~Gϵ_NCW]:ؽ6˶SG`Wj` q'j̈́uo;c/; /dȦ4L]_]^4ZGe- gܮ3u$nrF51t۽وȢlt7w28î;-uwVjrp="ΫVM "_fZw&JbbܜdFdMLKv4mp!Wd}NC]TߐFD3XoiddjJ5ʶ9 Hȩm~0T&jOLy!2 ^gyPlNᷘtvD2RO5N=o7NKǧOa7":^"TNAr)]QzϒNЗ!$gL|[⠙9f8f&jVO|Nhr8췝K#iM48y)bURuB+}u(7҅%NMqIv"wUn!w>REuxL䨷N/sBkʭ&3C=͇>"e*ޥ:k`E/խhК7z$}˦ZS)K^!?ǵAdqFxJ5uྯ`naiZ^5.1z*e2F>ԞEXRoiԤ_wTuP뭹VrcY"Q-J1i,+MEx]td;\[y)'2Erݸ?(ӟi m?af>]}!4@Y!xH*gѝ-~T{ + }Qm=Ͷ_5|:8Xu| MbSM!9dtJB"v>üj]rp[}. ԁÒw}2+}6z,MAx> endobj 95 0 obj << /Ascent 722 /CapHeight 722 /Descent -217 /FontName /UYXQSD+NimbusSanL-Bold /ItalicAngle 0 /StemV 141 /XHeight 532 /FontBBox [-173 -307 1003 949] /Flags 4 /CharSet (/E/e) /FontFile 96 0 R >> endobj 99 0 obj [667 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 556 ] endobj 68 0 obj << /Length1 752 /Length2 1005 /Length3 532 /Length 1548 /Filter /FlateDecode >> stream xiTWUqST#$$P@S ʘi&39 ]ZPX6"EDjjH\ح. )lt}c}( F+ \RY ,.7; @$I&0@.KX\N),%^QP!i: XRA:8bvA 4B* |HPLCe0#X&%%A6j2A@AL` Q ,\9 2,PHEI2GL4D!E .TLS%FAB}!hM*"!%a,W*|:.z(  B2UҐ" bD K($DL%43>A$hI5pRqĘ:faa'b + 5&=0i faIMs-͌(>ljgW̱5&\*7qy+s7zJZGVK`Mup[.%#^p>Pue㖴cN" (bXzL݊_n䰒l nlNYLw5'n{]wݦ66Or(!Ϭm;mM%{7V2ZuϹOcSf-ϙP9cOM=[T!N<0/kyq"CVnLrS8v'=y۳lvm6i߈>CӼ|nN?roҊͣge m˨Ux٥n_f~s f|Si,1w٧w\9&Y+##W:MaAW$vƁM6;5$}S߃n˙o["tcnN%ñOE2|JKFm#;p_PQӭ<ͧ^+{KO?oQ?)JS GkgI}o$(1[HI]+\a)K>C6D|luOSiKDv枼߷bU5;]Lӂe?;kEg >sѪ"}ulCR쓬*ݓk!{m$`qAfgӬCR=HNP(gRc?8\ V^SrߴݍgVgc&k*K!kW6ںz0+m7OhpP4G(O$I\ endstream endobj 69 0 obj << /Type /Font /Subtype /Type1 /Encoding 100 0 R /FirstChar 61 /LastChar 61 /Widths 101 0 R /BaseFont /VGRXIA+CMMI10 /FontDescriptor 67 0 R >> endobj 67 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /VGRXIA+CMMI10 /ItalicAngle -14.04 /StemV 72 /XHeight 431 /FontBBox [-32 -250 1048 750] /Flags 4 /CharSet (/slash) /FontFile 68 0 R >> endobj 101 0 obj [500 ] endobj 100 0 obj << /Type /Encoding /Differences [ 0 /.notdef 61/slash 62/.notdef] >> endobj 65 0 obj << /Length1 807 /Length2 1423 /Length3 532 /Length 2002 /Filter /FlateDecode >> stream xR{8Tf4]Sj 3۴51!i. Ycn Ʈ(QZ;HR[6G8ж<9笵|~>3Ɛ-\0 l8,bP\ʇ`:8GGkҐ9:YwDž"<pe\NeD*? d!t*ȏ\L<A K0 :e5oɋ0C\b 0]i &00"^ L*k^~>,'fq| aeM A$`}Sݕ"d >= 2y_@[`B vظ8Ӆ q/I P,/!"UWgy0bGv˥ơۃTv@ P"İ%#[$D j8T.f"]ၱd_CpsE v8!XG1ߘt9pǐ,?<@:095ZܐVYUlxz/Oy, Ě(Q) H=xN&+7 ~+! sֽOyqk;Eߞ{s^L=FQh ֵ;%kMl0dͼ؊ }'?LINWml nh(U-ʙ^І\<\OmwH. S*+P'MZ=~ANljn nl6P6n1<'籓'J scǒB5rřv(cV4GGKtqg]P8.%ae<RC<ɗ\h!FFs O=wˊ!%k=Āo0ׂ/\op-IJJ>XR\2OSKbʪU}<*BZĨe[MGB\cGV@hmK[ផbҋGFAQ 8IS:dʵrvtKkos;1}% 9?AӃ> ubSuFé)]/ X`/l_l]RZ> Iձ3So<ՙsDGחQ&袾Sᙎ*6`ޛ1ʷ|/El~z* ЩK9YfXnr0iNw9E' (F*X,qJ,?t(DJki+Qy`Ehժ)TyNunۚJ[RzocҀm8nUn0m՞oZe}Ԕ2{BGmߊ^D.ߞ.Bc`PY)?|P3A*W endstream endobj 66 0 obj << /Type /Font /Subtype /Type1 /Encoding 102 0 R /FirstChar 40 /LastChar 61 /Widths 103 0 R /BaseFont /ZKPPJG+CMR10 /FontDescriptor 64 0 R >> endobj 64 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /ZKPPJG+CMR10 /ItalicAngle 0 /StemV 69 /XHeight 431 /FontBBox [-251 -250 1009 969] /Flags 4 /CharSet (/parenleft/parenright/plus/equal) /FontFile 65 0 R >> endobj 103 0 obj [389 389 0 778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 778 ] endobj 102 0 obj << /Type /Encoding /Differences [ 0 /.notdef 40/parenleft/parenright 42/.notdef 43/plus 44/.notdef 61/equal 62/.notdef] >> endobj 24 0 obj << /Length1 1618 /Length2 18720 /Length3 532 /Length 19640 /Filter /FlateDecode >> stream xڬcx]%c۶m;;ΎmVTlTl*t=ۧO_Ow1ǜcu$j "@I+ #3/@E$Ϡ t5r PP9M\@&@^ 4Xxxx(b^֖Vj U-::0LkK;r \ k; @LIYGFQ @-&ve7S;k3X88}9̭iͅ/ 44:8]\~]& ׿3puX!n/B#);9[;VU7OW+jXu,F;ҿ|az]MA.W?LskG;9:[5?&v@0 ߺ7qtWÿkW# ߚfk[ZYvs75 v/ sh$Ne>$oE7qF%ZN}a;O!jMG0D@afdEhljf0;5@@g;k&ԭlA. +ҿ3ɪ(*H*7AoD`R^9Ϯ8QQO(/<+:[{vI0 H5W%_fn׽@' ae/&=+õ;oxR\r8̱Q0֡' =bGc4G©,h/UwEM_!eA0aٗ?Z1>[P̚;*o0lp4dfi 񘝨M`_NP&?>P \CSC}tը򉤁hF¿n 1̧ #Q,X˿@g '+8KܯƺI\spo& mK+ h⊺%§ξ9onJgYG+>3H[5OG o%Q9+[yN(>ua^Twy<,eӖo''͜E&MS!Wd%T:/+<Xk4:[SFKPڬBs$y"ȐLǿ}eznWy b"+^0bWۉk1uPV޶c:RGiTPnkd q8XWd+x<"10r\9[4ɼϜ.:-Vű`BMueœ8|iO y2`QIv}|AՒΞRƥ8hM #.'>OQ ʺWyʰ0 iW#b(K 0Aת+?@BMȢa} ޝ B%Z7<уA ]Ks+''vEHb,oCBPixgf|JmAT<)kU( R!@!,6'6lhQ˦Kh2g;WK dЕv|-;![*9YJU"S~pی̌4H9m 'A^vУuTޗ_IҖBL[))!Tp7A|<|G7-,{vy)n0*D̥IěW:XGî<&~)Api7 O0u/-E>oF_rhVODw"ezs 'ƙh,OnVdXxn#c@1ȩ/3ǒCwȟ[|ȀgSaNgCkUSU2GEǫOC2枯!ypv#DRrwn;[]ZAi73A&O1yB& oYƟkH 6>!P:Shh!/ Mz!{㒟{ {BMMl\`"OC9t5ҕ.v`Mi𴗀O rOڟ\A&y2T2T|ܴ ~]/Q4wϵ"\vKeW%pdqT},)}AiӨ*[TWnʨ $* 8RqJe*.q0N7iXjp ֒gMa$Ct6w@5fXg4-Ԏ䆈 d0seq2 w_*]7 'PmTW\&E"ݵhB{Va/MݹIp4GCر͟yLz{ =Wk!>'~3Xgr֓W&4p[>(ߎ\Y/lA%[#hV)l<l7\P,!7+N u5IH jxObs6j7Ŋ9siN'NK4dy sȩ)ث7vL!L?݈<%򌏆{N,9m)t( !w̼v~=KQF̸h;:=wa,p<%/e'a ~X2p=3m{p,]gЎ:=/ӱϗ='2SQ6oKAOZV(Oo΄x f )g!3$%5-[%lZpQ`)P9[rOFn҆P4Jx Kdmo4幂*,hl+g~ò/E =+$`ЉaHvy\ c*GZ*DqQ!EkW )C <ϭͷ`@ŕ^KqO qGQ49ImzF'NUkq c:dk*{ruSy^xv?'y%͢s  N+_1 5b - i?7:D).*{nb^`%8N]ۭYF&p&{fQh;1<[DO hMWqD@7/S*Oٙs_]P.9j9ѣJɔZ;R_8-'nC 쵥8kN4j@J? OD 1Oid>:6^5Zqt?vA^5Lh 'O*%c>{]@ix$f xi>WLx{~PBw`8H`V7b?rkYo ZWA'! 37r/ Ӥ`+JaVq##Nf䦻hUكiX\91*5ݽ'w TcǏ[- psI}Ie9zM.ktr/7-oAO6%H?!([.#ǭ+lHFտ?BYZukq2Q\(JR i7 7~2j"=](fe <4~ase{*YAϺF37O}o H&Ŀg"5TB֭.~7DϋYM&In\ynOQV+MNtD2ʠi_f&va6Yg%cE3X?/nEhNs;'+SӁtjZo*Wr_?w-%܈vw>VJshyօU]tP<.:Ԗ'QKQu ϙ\f e?olQg_fU|'?6͸$~}̽:@s.d叠MFj`Oi&x{}PAnBE>? 5~/}G_+!اcCoZ[s9R]nB3#D <)Zy3@ H^FC*/R@uTS4ȿS#dIA49*pjMy_!|%C$h*ˍz27QpZ&pm[›` \ K_ o6jZ?GgI 챽U㢾ez6WK7:dvLp*hWXu^wQ&#tɎ$,[tXRj$\C.K` e8U6URxypjTi)g֚h y; GU+G?waẃ=OɠNf%];)\C#ye2@I7XBlihbK|Gϛ~@5/zx$LC/FM*YY]/;hI8g\5c#hF Q7J}.Ew FXCj7E:4,ٕx5M2R\e 0Udʓ0|E6$Zf#iaAd}GgʐWmG>i,7=;s4_j/aDզO7u02^ f˂؅sc7% [^TbNu,{@i_-/ck&"*w!UnxӨyң;(7{a,Ů{a)S(ׄ?RSy:LDdVa!]1RpJo銸LhD+2w,I.;4Lpk_΂Z(x*[/֞WͰS~t@W?73 O$ .X>bwR|)uUdRq/F9豴Hqdb7 EC?;H*= cݏ 7A#Z>f!Y`0%TƷA?X>6չ7i*b.2,I|,n8iQ_s &4*=Qmo}9fj ("r_j1RoӶ?*Uql* u4*!.~ (O!^%CJuİJ4 >&uΜ_|p1uwa>j"~E41e29j8`9xv>JXpmXd$|)Y]'%\D\e:`m͔= 5cO+,Rpq"U-:>?\1.X-.ʡ=B͘C!Z̙-/NGS?EF4EKmHމO<Hw7YS>9N!.( ZF4P #{yǑ_혼JߕΥ'nɴЋ'H:Go4;Nxj˾54PYԽث߉h "F걒5H,O[v!R.!2"/$ϡwNV7uI}ou[sQSn D U$f?53b|2@VG;F./.CD]/i hNAx7;^My@+~H]Tώp_ 7^cυKMm%yQ^D3͐bDFK̭[AޙO r(w|&)3dƒͰ%U,6XQ |ޢxݭn+q}f'$&P$3X:Y>g@*3dLN Mgb6&wHO^8S(پ%-wG-fO,q "u:Tđp7-v~ejnjt 41O1趀1{ҠlI;ċюMdL)<\A^څ"uD(qxnw%wR3U0a`Y}[[,'ЦA?Bw\ɾՌ RMOh $oXs9T}ص;$ːHy`Qqd0#GFF(w$awVjA: x9?tSُ0UX ԓ>:ɭ:ŗ=Q4$c7E-..wfNF5cX8|{3fҹg<kG3,օBDd^$rȴboPOwو:N{n@3:nF7 Z'N*p6d]фl9R %qiFTWH;$pqd.D+FWGki%e2kdl(!J }fUhpq9ek|l7DP-)g "WϠ`0Iu#@G$ r˜SVÇ%}Ci =MA@FmQew6|av Efʣ Yh@C]>MTVSZluSo*N Z1b?}5"'SyՓ-d0Tny4YA;A ~q[XYP,*>?4wk&qD&W'u tfPiGh y k}F]/ç[>TZFR qSlPQoxIڂw²]K7UxR;@E/v6d#m7 VUڄ֤ɞ]WPqCr؆%nzGno7{Q ·]ӓ5R{":G"I=6ZK)1tjoB2`V-RV2S{8؝hzFgٌiВ|DB\(~@1 =g ./j^+'ƌ0?tܾՃ;/gXl;~kϚ󰕺 )삶aC(HovBgF5fŊ)Ǥ9Ё1%sTr1 Z"F#:_х`::$v ؇4Ua^]D>^dl-`XZo`bu-ͱrӴ:}gLozWk~JEC1a<#?S=u`NŘl7|%,ň1ZD-`ʽ2[uFFލL/1{\\ hYnuN&}r !z*PrKZȪI@m aFn@%R^^iaQ~[]z{rŨ8& p _I5I9, / XbJa^V_*ď)H`ć>?;*!E0:R"5ՒEMpǍ燸'D:s ^?I!uբNH?#ہ~WvBJw#ْ8oIU!Q cOX)AC -KeדrMolLc.ڵXB~G؄.⟶/W(um.OϙП0xǥ5UKoX2u)l(N>/Җ4UK˾&n8F:5BEw-[Ys<6sQK/TO 1ƃcU>9E \E:B_v.sPb#kF훇#rtd k V=''F/,q>g2h\; |ُ:,xG$\'/0Y9)@ȅ=~ ]oM^z愍tTwz 17:)9Ôg;_ÜkXSWC) CV؉3#n1iARgDͳVW]8Nxlzp2./[d˸[B[(.c%N81mC(dB'=.k=}[*O?{e7=#e|2="0_{4-6s (P(:ϩ 5ʦ'm|vl=!)/M]m,׊Z'GY1hTW;ˌ6 ΞoDf)J1NV:?FndB\I 'K ʱ&%52cTGFWj?x3#;̈=ސիKY)gber.^-ȴ}jMfI-<ۅm71i, 3^hIԽ\Ȓ%MRyqˢm3[0!nwBÖ98jVLtF P K J2DD^¹-KQIh^SNpRmR oɁbJPLӹxkX:VA8!`5v%.h_.(\c$iY81mFc|v{{3-t\8!g%Q\;A#<$2ߓvo֛ h%Anùj:t0L2O!ϲ3)E9oH^?U3)r=xdet,7< 3,?fݺ#2yRп5An&v5ӤR7PKT)t=[vQ<9KX\1.&1)J:hƛe[(4m$t2,%)Rwh sħ {+?M-N8Jg0EfϤT/Nh2A}u5bu[;g soLy3>-R$A!^y׻ٽ0< y44'Jj|7x`T"5 EfJ$haQȷQp>*3es^  ý5% /`// ۭnٛ$ʕc"rj|d:I{AOH^coB&{CFqSeΙh2]2s,>C(eSH 3ÓFsR1(2\ee--lPT,o&L'pxSoK flLf;MШw.yA^J[_L>Jb`wm3ϧnI#T')SMuyV kf.Ԑ:۝n cad#4a? D>Am'呰wSC:k]%E &si(=2RC'=1IZU5k8h ܆WE)Q7\udH 3HwTkUXt5>}"wXβ0pZ>X0Z'gS? 9e$Pb͸P<$e]DW I!Et{]Mx+ \WKjo '81Nk47o?z}nq +,9; ݙ]NmXn0Rke_x /0`m)Fg3Uwp۞yOa%;_}mj/͊n6İ ^I;KH>[sIj}.e8`N*|F~<4qSjXZ+o\pF@/D7!3^4:7 H\>m@"хٱHmI~Wu T^ѥnNrSQEdJil?~j^[ Q\r|rHWAÖH/(oSstp S1{K8PB-4ڤTLA5O"^}6:G!=+:7_Rz.oڇqdCۡ*,sDWH>z˒6!i^1:+̀$~%1R,Hh>6ԤWs \E?;ݓ6bJY:!Uߥ)#qZ*NL%lF2'vIsR,ɨ;I5gdr*t#`\VJWWenp wx9yHag+N+L?+ DzreE8}cIBFl:qznQK<>#B$.Kר)Y H'yeД Q*i+mr )*P|e+x@3\pgЍhg̱ܹfi3g#Gi9r_eQbJHC9ZhӐ& x{ QѼ/#O\ԗw7Yu?m4Wy^@ )MĞK?]hÃ$BhBB5ԇ\"Z:KewUmvBL4*ay4+LU ,$>̇Np<&!5eeC:]̴!')i~K|QȭX_hGd><a#R뤁hojQ61 jѧ"ǁytR};O! ڂTY{lIDyK.Q,禓nj Y1Xdgܠf bhqI16whrGsb`FT?=2ȭX)U p;K2䧊\\q&˕ؿϪsY͚8zTC)g&(Ƌ/m+zg=%p]v )vm^ I2ED׫kef*d1gdo1:g\Ufd f2R %GI'"R]T~4kّ7"~y]>岌gdyy ñ6_vw"uyj|huOǧ13>% kĔli5@5Ak U)xxZ$|Ȼ4+`oMĄ6>ddD ۀq8ES=Ύ}6ܹZͳ6&csG2~CX2WIAb?Mf3r^ϱtBV#0@ovlTi}Gϡko*nN N3/s[@ QX[fI E ̩_1i X#F^Hkn{j3?XF%$UzR [26QF:ֳ20J zQcd}5St:sS Ą/cj(<ƅ)3F ^J. s%{3V ™WK9f튋W@ QsH6JSF߱"änP^1uԜ)xY+pY C , Rq|k9HQ LtZTcg%MȜgt*۠,8Fdskc5-K7Lt"f2R ;~'3eeȬH`YDIE-txg~ٱ1+FY%_ErDENasH]GM|,ֆ`{"=\gG|rBr,TT bߚD>*6b%8`xzfR2,˺'#AyMkoMd16֪"Ђۻ,~8Hʟ) U!9\H?i84 dX ~΅ V8uJ@Ob8 w&KKcVd750,,Isr&UHZ%ͪz$t_!6RlZ4#cUݔY.ye;-"/CSr%= b~7&b'_&x;*}y*9@|mEۍňLQΰ֗.mΗ{8hmZtZPXƓ;樟N} ~^ӆ{rb"k,w 4?t?U2!r >;YUU?+=moĚcaZ:\!]j^zGu@+.֨9BZt5 N\iSFXt6}P/5Աr:dۊ>¶fw4 Tt6>hк˜2F_𖼨H6b_H jبHǾ[ȥV}qܮQw4l7Ts!ȐOQ yUǶԺ"upEZpCzAVe4-dxj$Z]L[=NXBϻ_GF+3" S߲U"4tr3߫`bl\ug? `d5X{i8r[47wފSY1%SXOr ,:pHzfn#"!TN3٥qGEw 8RT=펼:$9|>$Ւ nyi"k2Y{ۋ㰢Ll}jVecKK3*\2rLr-^> endobj 23 0 obj << /Ascent 625 /CapHeight 557 /Descent -150 /FontName /JQNMFN+NimbusMonL-Regu-Extend_850 /ItalicAngle -0 /StemV 41 /XHeight 0 /FontBBox [-12 -237 650 811] /Flags 4 /CharSet (/exclam/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/M/N/P/Q/R/S/T/U/V/X/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/x/y/braceleft/bar/braceright/asciitilde/quotedblleft/quotedblright) /FontFile 24 0 R >> endobj 104 0 obj [510 0 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 0 510 510 0 510 510 510 510 510 510 510 0 510 0 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 510 0 510 510 510 510 510 510 0 510 510 510 510 510 510 510 510 0 510 510 510 510 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 510 510 ] endobj 18 0 obj << /Length1 1647 /Length2 12045 /Length3 532 /Length 12918 /Filter /FlateDecode >> stream xveTݲ&N ݽ-{pwww'Xp$=:3g5kzT=U6'%U3{  #3/@dkbo`#Ǡpv1|`bN@c  4MJ@ICGGL&D>t&ye%YyôX+\<)ooDE= ,<V.qyX}7a&bZ efdff||37T]>Z?7M]>{|Tߗ"-ۛXgeL@:6GTֆ26i\:ux)C{0ևcC՛ FKN_ ɠ9L36'A+ L'M[AŽiZCvZF]{ё? r)ܠ?G8 Wzb5W,fp#`O/}j?.3܁zZ'+SIG>;=ngJ[ÝFݮinqǷbz]*܌ג 1 NN1]aV݋vLfSAuR'ݱASm:0:usUZל^0'\DϮqpbw&-L%h^@[UH4`kv2drK0 tEGHcLo-Z ac$G4 )"Eeeo4H9s4B˗Wt}~;굕d c饚n! J.k37].̘Ljh(-JM 8*!a[cWV$HQQ,-L,}TWLZ>J(q[mn!$d '+\:$$W5C5Q rn7 /Ij#YҽsFE TVtS/æch HpkUfnn5x1ꦄʿȄnQ9Kh2F2kn.֞Ӝye,iFf:j%:'By 1/(&&@]uҠ߽mHmZtm9QCfǚ}Mּton^mF' HZd'Y#+^ oNSLn jx JLrF|n;Ǚyu/O`s,*?A+EXrAΜ4>AOt* wBN[P$Jj[й[V \$|Ʊ#`DcPQ,6 6tBbPs嚹Z~o@֝LjI'b32|OCqN밈׋f_J ,,r;2.rAxjZbB5{U&6w=z/kD֥Ej]ՕdGИBf@Y$Uӫ:}æATQ<ʵ,``Qإ E1@=F)B0Q}o~wNw{Ąa)"lXX9VОtoMsoAͫ@ҺL. rM%LMžN?Sk##Yg["MVob,v v}PQ)(MAKdMy7??]c%UUF`,=%-:.o"5'egq_0Za).DdkĨ8!t^!ˆ~yf{v\S\0Ҧ1 ʶ? Œ/:1a9Sk=qjxMſN3(OF,K5Dm1.طh7bwe8IL 2y' KqC!@Zs`95 KL_/HIK] }m&V-*1`?z[-w69zǴebEVUƚ͘aҰ\ ve9<OQPN) 9''"5!ӑ$68j䁕絝.- b_0iDkKԅ{拏xbcZ sO8Py}kA"5 ЧfC)cNadI'_ߟ(!$wεkM?jf`jtSI}ٸ`MyO4LܜMc;5E8Ml8⢔hTV%W=5HnN2!kx)|/8ZԈ/aZ9T>*w,DC:gv_yUk ـ*cwS4}pJbbr8ת颧 ~kpi~Y77;!c۔W!*]kdA;ic.{A%Y rn,.V`;IX$B8hlO^) F92—3t S.4M:wۻ4ذ;$ThhRܕ0dݨ@.B 췌 uKAZo<`)xW˔;*53g[p(]`*R+MU`k%c򵿺r:Y3m"vhhT)ӯϒX͵:Ə5Z rfhdžޡ`{VvԵ `<bB`!j۳{B`—HAQ:`SSvEjG}ZT|B IsvX /w:LAEk?p9tﲳ)~1PB!&CՆBԎaC2?nHS\[T[Ws)n)C;ֲ<}{C4TzU>hODdX˵8.(l1ff/2om^)O5uD=_2O ۜb[#IR@#i d-!ق&G !_c*2_Kijdw cChkPYV=yc h%v !к8Lhzm%jO}0l8y 2fe݃rjٟC):ؠh`-W:./=> Խ؍{΅ha,Kv<P~=FQnЙYVm~Ǚ'zyZufԯt54A,iy UJ j3m._xAH4zZW,_T F8ZRog$~z{~2^٪Ʋ#P,zQ*hHO3* .ixw*տxrkV+%rq}؋b6BBbaὊ"p~8|KN`x7 yt[w=~Zn5뎡HU# 2lghvabMSRʏLv4_ 5{!~>z{rǸa~6ݫ E">lV}{14*c uʷ~VO+o$W!FD8Ȉ:ytց'џUZ% {P?@@&vHG6}8딄>ȗsvv#Ӣ@H@-A$P$}kS :f6#ҹq ꙉp{X8iwV"n%Tyə_#5_djyL~dG8ʡB~p c[>:4Z?'#m)Z\;C[mїާ Y *EJ]I2s? mO|޻T1ֲ( ӠT]/N!ͧ( '4~ו7:64pgg{t 4D&DKݿ پdOʱ >+d|k3b#17w_H `j+t}9jD'(yYΆ}~tUe Uy [hf\uN@XLS!4)0(h 爛17[:~/= ͅM>I)J4oSVR 3nUJu(UxsdzBSk5. o V r %C:EZOg6t6'˸bg ?B)k\dƪ2`LbB&ГI[{pS٫JY {ȓ@O*Q闙;.> sc869e1m6Bxizbʈ3~y`(JKcṡ>:bFW\ڼ̃Yo^|26.7( rӏ1o9\Ls@ YNû5% c&^_a~Us?ƫZP^#'UYڟ?UncL-eծL|}sfGlL}gJJYM>5W쮪 A<}Ka1V'α~8Q9Py(_j@N-L-] )?FwxjP6B'62%PUnn٩=L|/qߊRpU>bKt U3 ɓ*̃p_W5;Rl0J칯 jkqމ\R Gnɫqk[2g( 6Urp GIŽ[ZU $ J7Ϗ7U3= /Z5~W؄dh4cӀ͎>/f~/?!Qkr/I7~9} g_onNyLC9}/e}RfkVK<^k 3O@qYcTjOSe>#g示kaQ<퐤#/̔N]WEҋqU& J_`x''J wv[o O1לTm!o܃|˘ds%=m>PRꥠqֻ `!,M{}e%Lm-Uʣ9"TwVoR<]ϭF;:_y$n[H5y.#ٹ;E bޕ8*Yُ^h.bd(]T%PxaFa$bv)Ҷ$HiuߘJ4ЃD,/zf"_ɯ]ŶY,X ЧyHIf3<.\[)(׃b,o]Dwdae.C,#(tT0dށ{OBP0-OA6?DcY"4U=tqW؀~jn9`RŜ;jjAƅo=G㹞>&AUE #w3UYS<2Fp{v 0K/`>5P g+%~yEHnTs*mTh!kILKm6O=*5˅t?A!~M=xw2W+| 37Y S"[EtUuTF%m!xrѸk*(L4oݹZ~]fv-pmKfm I$W!=cjpQAERm:{s*SXf5h4fmZB/L評\%jnفdYD#'\x!q*$@o Dcw{vY|-L Zs /`RO4s=РaC;kkƕA` =k8B1"$ZV9Zoskm_˦6kRJ^%\ŵ[`gp$O:jt_$^rH2+Qp0|I"4BK&pe$0iiA-}q*o0(*ط2Sv; z%}*с*gZMJE׿#1=/ I@=JzRrUISh 52)gJ"i(u|Љ5dllZ#cg7LJsv|ܜQH :%į,T/L}d w>z뼅m1H' ixY)]0Rao'+DHr'w$)X %T\5zr9H;֫u_n,.ս4O WxjS/o,Ԛ( 2,E,sP<8VBfJhi@B_Xhq!U<9@' }ik/KMCa4Q1?;)Y} ܬD޺9 ,;\xRL LYo]^Q^/R) fC}{;VGAf[3V"Y\bȇ}ԩٰncg]\r^^"A|t Pӝ!9IT9ie>e,je7tmPXcKkU>t4Ř?wAau b:jz$4c̞@T k ]$Iy];`#U𽒫\4ZkM(HK'\{Cl)ZhRמNjcjuU#%o;T W^`F_K,HVpeU|Khq~[Fȳ; Θ,YZ6WٜkXo`Zַl` AͷsOCߣխ%-;/,E}LvȔ'~D xT$NȐh1؁rF;>r]_ 3̨ҡl}u㧵QTn#7{Wwhw X_+Mop^uIg\z+V#Ym7y|-7$R$*j8#N;>fI%^"ZXMI7v}ފ\brLxm ;{rt1CiBDp/a'䊢oˑq e2ȃZ-)"~ d-C|AV[03>3GݎGb@N-( ӑ(E++lYןM/ldmA5' 4BK0jd%mT^V Da 17Yp&Mb 4V b_c{}BJ^sb[o08OS7O䛦d2Ke`S-+HٰH-㨆iO2&};UȈsj| \J q&w.5`<(z&4p 4[fYdߚؗα6"B+FKr B"0t;+۰(F1p˓36m@כ==\&*0łbMcQD077j5_B,)_̙mC'Yjm߫—J}&r\[S*cPԕ+)\@%n'OhNli)L:3t9y;;Am,]w`7 -ûH,"?{1orX%T{pʧg5c3ZJ(ÈTuY]+%~.bRܜOD2߁OmEndi ;'ի| M㾜f$ (dN$$mEeި"&!p3vTtiۡjWf! |LF: u8g3 /~5̲HZn۠mmp!=ܽ$G-I`J(hVz e~.Dפf>OKb}}Fr5T{~[r@ 8(m71EICv6l||XE,IˌfCM :|OkO E&T l3y=y5_[(aX"T 79 MSńnW\ ӽKR;Yĺ PdHpX(6PԊ 56p@_H sd[ /hCq/="杼FɶW*, ޙiA;Q eE> J{2c`o$Лsjpslrb#9 8lzZPì;tzh8Ŋ~Se m`ϗAtM2+)&'8yLY CJ޲elXA~e pkW0EꘄqV <%^S2piEF؊qe4bdoߺՕo-l?-˔jqn!cK8QXiotEm $.QEŔPa(^38&JK֫klG.{_|^ iX„'L37qUYlb6Jg :QXAM%d>P ;F;3Q^{t]!&'hbokd?ޮ` endstream endobj 19 0 obj << /Type /Font /Subtype /Type1 /Encoding 98 0 R /FirstChar 2 /LastChar 121 /Widths 105 0 R /BaseFont /MQNPKM+NimbusRomNo9L-ReguItal /FontDescriptor 17 0 R >> endobj 17 0 obj << /Ascent 668 /CapHeight 668 /Descent -193 /FontName /MQNPKM+NimbusRomNo9L-ReguItal /ItalicAngle -15.5 /StemV 78 /XHeight 441 /FontBBox [-169 -270 1010 924] /Flags 4 /CharSet (/fi/fl/parenleft/parenright/comma/hyphen/period/colon/A/D/L/M/N/O/P/S/U/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y) /FontFile 18 0 R >> endobj 105 0 obj [500 500 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 333 0 0 250 333 250 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 0 0 611 0 0 722 0 0 0 0 0 0 0 556 833 667 722 611 0 0 500 0 722 0 0 0 0 0 0 0 0 0 0 0 500 500 444 500 444 278 500 500 278 0 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 ] endobj 15 0 obj << /Length1 767 /Length2 645 /Length3 532 /Length 1194 /Filter /FlateDecode >> stream xSU uLOJu+53Rp 44P03RUu.JM,sI,IR04Tp,MW04U002225RUp/,L(Qp)2WpM-LNSM,HZRQZZTeh\ǥrg^Z9D8&UZT tБ @'T*qJB7ܭ4'/1d<80s3s**s JKR|SRЕB盚Y.Y옗khg`l ,vˬHM ,IPHK)N楠;|`:9kC,WRY`P "P*ʬP6300*B+2׼̼t#S3ĢJ.` L 2RR+R+./jQMBZ~(Z s3JA``Ouj XgNNպF f@ MkQ&敀0|`L`V&sݼlݒ5}[:VsY3~K&npϘiӳn\oҺl"pn⽵zfD_0ݢWn:wȷti;2^?}kr%rx$nOt{f΂ol?}3xm f7tL7 4 ol{ksKDžm>kz_U[$LXROI9)n=y֡ *.\_$:5eHf~"{FC][ *u*\z&+]09(x:y'#Y;4%?uT{{H73 a/|3>[<1lgTeTEiR]6kK?L7=&rzWqcoJQ9E%E\] endstream endobj 16 0 obj << /Type /Font /Subtype /Type1 /Encoding 106 0 R /FirstChar 0 /LastChar 15 /Widths 107 0 R /BaseFont /RMEBAG+CMSY10 /FontDescriptor 14 0 R >> endobj 14 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /RMEBAG+CMSY10 /ItalicAngle -14.035 /StemV 85 /XHeight 431 /FontBBox [-29 -960 1116 775] /Flags 4 /CharSet (/minus/bullet) /FontFile 15 0 R >> endobj 107 0 obj [778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 ] endobj 106 0 obj << /Type /Encoding /Differences [ 0 /minus 1/.notdef 15/bullet 16/.notdef] >> endobj 8 0 obj << /Length1 1626 /Length2 16841 /Length3 532 /Length 17765 /Filter /FlateDecode >> stream xڬcx%%FŶm۪8dǶmIŶmfŶu=~c?^c9\ko2"E:!c_q[':&zFnBys_Ύʶ\trcs¿v622P`L( 0"df&d!#sw075s"TS֠/?!o !/.+[;k_D @hbn QPԔ W# YʚlT&V>Ӛ#_,!GBCBG;4-wBsGBSC3p%41r6_9 hh`nDy::So?-Ƒ O_BcsG;+C91%t:[g:'ֽm8;9La4r[]1%db\?;C;1AoIB;DoEyo}Ohqg++yC 7#chC!%qZ[%glm'dw$B6eagQ `hddFhbhw^muH çjfndilvl_EAJUVDU+P8?Z5_`m=9 XX޽%_g9C's7B}326*N67q9;8_oF0k˶Fjܗ>G{1(zRWy?I;8hJ5<ew&? ;XH\H|Rc;Pj O(Fznpirbx\#sp* ey{+Of|J@Um8\=Cglec^/yhE%o=2yptΝx֦TAAĞ*|iBuK@aHB%G5N.Er ՗nk/F(\Dl*Tׁ'f5+#DJZhwgى֣~S*Cjr^㙻ɩUs̽p1Af2߬FB[\8HCS8zF57쥪™aI&"/|JoܟY'֚mĺ.F:{If'z_Mg 9T"P$s$V ܋oUc 6qZ+?t+2c:nr3hryWѱ מ#3<:n=^;F(@*n :.>1jVkpT&8T棍LҽBt^3ӟxSFCJ)lt+D..B>Tl8!Ǫ)3Ҹb1s}w^ j>ʨdJtWh -L##W VѤ^ P)$r2 Mc ߻/K");~ujӪem(u++B~qFPP ?xO2?F)j@.+oQ] >I8_ hWSڍ>5iu\g V7w(kYˣ=Ye HaP] ;y7WVRjgpԓ; ǘئ{Gމ5 w`Jsڻg+$̞eO Zu6[Zs`>y<,V#%ù"T.9\+|tzL" Ҡ2Q wv }j)$F5\LduM/UQ.[T O}(PW,1 hfս@"7+zV:#w*1^,ֱb(Ui@zzHV[ `hkxjww2b3/׸rX%pYn@CPu\ޡ=5p լnAi˹%̤t ϚWY1J QAPmĠ>&ɹzi\cP C3*RHg0Yݸ/#.9TEyÆ;#?nߘoeZ WޗZ͜%lƫFQYaB::[h;b+%*~\M 0sP7eONdiu5K)g0DD^Xb7,-cavTK-|yJ܈"B]%13j(S8OE|0cܚ)9=҆ \┈~#ZoNTN٪B?F\@6~ye:QG9lVV֒v;q V Hў;_iLu;㫍QGT Q :Cc' S&ޤ Ir:#k_}ĦK ;0'Fl٦UyMdXkfu=n7vi2flCEPGz-8X O q#/k] 7ʊ`4a:xA ?my~#GbO>|WRoɢ3.'Y^7M.y|=۹޵;qR:0cGSFFh΂,P={]t;&?m~K2G@2L2Ŝ{fЛv)7J׭aK,"؏碌o;bv Qe 8)x\V cS+IAG1[fӬ5Ƀ jv ?N8b mt6ʰ'K1  P~\qkJgCJv;w᠅%SŬ&tf5P[4J}A`:ìV!ylG~N4;|V_h1 ɳZ2V,6Üh\#[Ӳ[yj[7r FQ5*;x5Hx::/{/~>'_YD.폠>}=X1G|kyH%%$&#- l8ˣf琄}='vQ͐z]ΜƋ̓^s ɾ/:A(<䳌6Ĵ7^8G02F'ZeVjJ"vj|-$VP/MX(X&XO %S'8q4v'u2_ѵdF7'!aD)N_?eC:a(8]m Pߑ2\lW=Տy褰Z\F S ˕@}XQMT8.z~h äLB-.H/;)7R@`22u'_"-%ocIH/n:=&;;+99*3 ںPxDRj1X/9RzR*0*c Lf+h@D~A.:Ԛ^Lg:ja`HԨݘB vy&ZN.\۟np5:ϻfަ(bge%v& hUNXbRwOjijvhT;``$u7 r\{qq+jz<z~t[.7ҏ4UDtz,M;_&A)H ̝FPɻ v_dMwy{jF(S>bVhg \QԸ"8BӚ[ǭJAH^'IFLDPs.vB zPNs/E\ٹ)!O7sWAOl[_1-78OO:Bv"x;AL)4Vd4n MX慯t%$5" .,i=݃.y=3 ݺLqܖ_Χ: 'ÏK7CIܸO <9n}L'΍Zk 0_C10s/VTg4\M!fuSU/Œc'~4E{WgoTĘwp,v ?[_c?M^Ah`{F^\n"o1Ɏ/yl$U*|=# |Wqݽ?TF(sݑO^`'3t7K<фo'a2팒û{j8P'4]ew c#Sbg}}  (ebCmmA4¦=dp{:y@'r|@ˑg&{/v>t2S(8*.ދ>f Op0 0fȵ䗋ZhZFy<e6w-2S}K.> L8CCZP?h#.`%CRIzD*WZ+j2E4 =|ul*E QoȷtAeO}=Y' R><=TaZKQ2Zpdj 9+ƗLrSFB*kP0F[񕒟;C!4]?V?* k'PX좠MƭHg{C k/DI/8C1.lXLd@/{ΆC\M>ۓP#-&€PZ^m,3@{*o!) ܺuK t5&L ܓCߠ7I(`+)A%gqd@ ؄6<.[UZm!} }wP+ITYoKѧSqw}/93/lږRD,v|pSD`tFȏ*<QEJG]W3p=6V KЋ+)%4_cnU'Vw+H.d)F1fߠjgϿTyƄdDmOBD^FSJ n ;uEАdpB<~ 0_LIPM' 6Թ 1h<5o 59v:]]#.Ui+,x %]?䔳WT`֪_+b/Hڈ>ՈO>k+>pIfSC6q:$z5FgfԿ x>fȁ"L/@o띎H5x饆Z{;OѠ|p[ZOٗ$rZrS5C (ĉA\k_5:V!KFuQUu5;),[V>\-\OMԑQ#0 ՞:hbD@`L] :gTdet7HÁ9zwį!%úް}pZfbDqxpds R`d)S_e1fV> W04F؀!MH1`GK!|GVt MR)A;v1P]aJLK`ae^0. l,3]f|IW)x)yCs2a,4vZ2 >;HsꮾX;pc닊 x9^PF W?yR_`B^dtX*,|)cFq?,)F7X̏DDC^K3AߑcVjNq*XQ@,gn"diul<0\ o.,! 8=c(5t ea_ru34+z*A83XCɼ!nn9_T~ˊOǐsĭVHw, @w~ŁߔtxGO)hZX7z9 1{XM̍͸tP_l"F(A`|>!C28'XNZ(Y!:KgaIK('zr/?;\U0 7ςhXoFto/ ߁G&ϬoqE |kKfm'z`B 2&HQxΪع (/r1􀴫 y.Bp v+3o  }TT4)1 "$գi y*tǜWz*6RtU*hm ]! +>N%0]5%:j.'MSyQ`M"K,+lT+|!¾L`Cx4J{z/ln"QoVPtIK1z|U4jW`u ;G=8^1bdyCGb1cJmNxy3G_TDYǯ,y^Wĕ}|h*l/J4o,7#@h Cq<(]=F0?he-iSsM幨2{IcPy4v /vv7qHP7Kf/}E]F3`]4>R)ڲ?~=Z(I5z&tY%-VC)Ur&V6''۔?vހy7 @ŀҽr2y;N鮗[ޙD`]c=' ~Aʂ-JB5K"ޔdMm1<wuZI5\1dWD2k F0]mi:PTQXYEb*y-q!pBUAoIts]Tlxߌ}|l('0[W ߞG݋نz}/Zwq\w+0RVթ@pi&/ ){=!~ *Mv)D6{|lmAUUL폟ɧg*"BB2ܕ9%ꋬn[?]}pdʮ6T@g$]tƤ(=vdAʜlY|~7$J6u'k dW&4M;e"RSĺ4I dCb͖WDbT"ql%oKG(%\ hltBhⓩv?P$ hX5av5#=xm!BLoR{>9Pc:´nX #WRFܷiy/3 {k;18 n<]הxzlirԑ5z4D\h$NТ?Rӳju7Pn^p_ +|Uw^F;Ӊm:O=Q6ӵ X=u? Z4β]2$22-s᷄s"-~vIm\Ur{=h68Jݐ'2Lu4z $Gcb(Ϯd2y5nudv JPv8ύ7S#.Tl/S7P 4ͮIv _Ko~p䚖FGVЛƄkou t8 sS:CrW_޲]Ft%% 2/3T%Lmч۫ơ]AxP6:&睗>fOu&o&j* [sgTl%w^k;!ڪ!87ymSpJbA9;<<0GWޖG}`,DjM]3OϞv,{ʹ%kb={c_K5 u> $jÁD~@WY:c<*%Lm^.ΐVZuwؼ|QGW7;TJLP}L {]|?)@DJN@xs*,J[zPG/?` oo+-3?#t,9PMR:`# HSܖR0İ4 .LYO<>bC%'I~ldhpi駔&߽LN@8 zҿ: 4q=|6Nc,퟾6ƾ";sqW [(|V qS@(F=j8%Q/h%O9GshJ 錿b)Hc7ɨgxfD3[x M@'64,X<^Q.X;} 驗EfJ[OD%G(4Zy Ek+)싵FUݕ4Ɋs[\V)s路\{I6,%5u[!!2D*%`'\2BV!i ӷg JB>|fs{\UbL܎z]Q'`Ts4ixᔍ 5F ^HK7`p0oR{+R$ET {uQeH}- x@֋m6\p ϊ$;AsރI¼!a֑NJLbC 2P2LAy+%`SU`P BA\;?''usRv @@X| g6 _U{U"k~w9F Szݱ#I?B!dʟ֔(:I !]7N[/^=,&ō'd6ﺞeՈ9XNh)myь`Ä^R6SwR:`_Aˤ>kYY5k0_s?3n&2OAQ |"UQjBUXBpx9wN<]bߐzm )W!לWtT5Q'-G!PpΨMu-Crξ ]D݁S&+B@Cܰc0o`HN3RS_&2r;gPfJaZq_dڋT;=WIX4UJtj],.3Tz# E f&i*gtW1>A$70^~i01nb1Kg*388,ImX}m뷋FiC*kݖ`{C`Q|KBUAlh71%tR&+4;1D?E,RhLW{AqM^NbAz)rsۺK0V!fZ:=Y\wkU;e,LRM|j@y sBaGYK71TQș0`C`>qK_ĞnUH9e"G,Evosػo9YMN ,&G2&&_AHE|+cka[XAiQAf!m9Of~M"Hۋ%!'wP^AM6!QUF9BU=P[0uI 簷AO8L|szήVm{ bBa=²#La|Y1`6c?J9Y4G2qݙl[\"R\hdNSnfj ~B pMF7ӝ88f;]ѷ|a# {ISFi="f5MNXG.D0[{ QIqVPLƮ%ub9zl箺{$gC܀oeم|MORN"p-<:$:G  (ݒMx^35ZD;ڡd%S, CPݐP]KO زy'frl}ؕ oE3moPs5"N>pU5[sl\cW"4҄oW,jZoUʙͫ8pL__WB-a˷'mf+Olut"=%֎o?>oe_}ܙ{ nmQ'=?W +01UO='^|_>貧2i\&~yYM 5b75S{y'嚂=E_Vgemo]jOaޔm~R9SN@ճ>0~_?<)9cJܞ_J~TJwvU&a.mQP|z蘇cKM α2{2uK0moz&W10;7yOYu#&sʅ N/\oUn;ɝ9{RbɳǷr/wbQ缍K:cQjfa _լ*|{+Y9yD(j+uLU5/=eǩnY쎞eeɫ=)o(cX.q_?#eaq~¹yN|BgY}_JO=\Yht>=3]:cr 3C7 mx35El\B/l-X>f[m9;8ƒvzD9LZ9:o[}|< L_ڻ(v0@Ňh;Q;/T2}Qٷfnoܐ.wo}'N3~עy~#Kξ>'XXYYݪZw}Y|9o^_ig>>XUzzޢuJzRo3pf[;@O tolTWxxN4E?հ YAP裋)ݗeN\*XwnG%.k!O7O;,Y ר€ĢĢl.7r endstream endobj 9 0 obj << /Type /Font /Subtype /Type1 /Encoding 98 0 R /FirstChar 2 /LastChar 125 /Widths 108 0 R /BaseFont /ITLCTT+NimbusRomNo9L-Medi /FontDescriptor 7 0 R >> endobj 7 0 obj << /Ascent 690 /CapHeight 690 /Descent -209 /FontName /ITLCTT+NimbusRomNo9L-Medi /ItalicAngle 0 /StemV 140 /XHeight 461 /FontBBox [-168 -341 1000 960] /Flags 4 /CharSet (/fi/fl/numbersign/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/equal/at/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/braceright) /FontFile 8 0 R >> endobj 108 0 obj [556 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 0 0 0 0 333 333 0 0 250 333 250 278 500 500 500 500 500 500 500 500 500 500 0 0 0 570 0 0 930 722 667 722 722 667 611 778 778 389 0 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 0 0 0 0 0 0 0 500 556 444 556 444 333 500 556 278 0 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 0 394 ] endobj 5 0 obj << /Length1 1630 /Length2 18752 /Length3 532 /Length 19670 /Filter /FlateDecode >> stream xڬctf]&vضm;wl۶bۮ۶*y>}zOk⚸coo*tB&vFvtLy, ௜ Lhg+jl 05L\\\pd;{G3RMY?%PƋ3/ 7lq0$K c)]O9$Z'A ,Սl 9mA9hpc쉸c8!7MEkbNEc@;}ςZgZ9'kБl]S*ND%`1}GdV`SP(#z[%`ROF{:oB$ JUg/8{Û/K8=@LxgCeTcp=$8\ט@:l7K:kv?(['rcDZ|@Ce\-F^ws 2UN3j$vq_9U"\Y ,|-uL:jŌ D'4N}($ į}DZem;-y%K+q9*\٪zȅ;Gd0<$6DLL;sVwoZBګi5A("fr'\bA".\O܂FK^9=Ț"Hh:;hjHA5JN;`8FTHC"Puƣ+yZ^/YXgʧeGVABT"NضkvCl}k9S\3TFFejc XqAyb`cy-V:e=&dZ19'Rd:Z$>*BΪLi3 4L[?5^ӽ uvs'B~21KX ֽ5@,eCa!8+z'5oHfto>Z`i^>Bm&Щ\-T9YyK.ӉgkX֕6+L-ImUv@7H!0AA{%ܣ i+(, *sH^ym){~*Ĕ#?i8}v>nw6K_+`R' rR-!lB.ݍOIןUSg}MdrV6^t2ST?lXdX5?Pt# "Gx?%if O8צ꒲FLoPx^`] ׬i+O2@yLFAI0/fVn#;U'I@%$wqSr/=˓P90(L4\]j=) h.̙6(,eٲO$VtHAHpTp35o~ 7 4]s}gDI+[Y2QU T{Vt#tm{sl5R:ĐU(dALu$ml Ac=^aBsq9}͆RgVK`/lćM14#oxZnu.pM)μX{NF}⇷{Ot?b`Q6PcXIۢNΜ6睤%DcI ҟ0BfJdZgGosM60*ɣRRE i},w㔽j_51(8}?8ո!~v t% `G^JCfi_qTgE3FPG`K!d9)A"1 ͻkz_J槦5~=ĻLЏȅ+.6`{TW s Et"'VCSBQ*F8qѠ(AAJi >MSo,n,'cm=]s)^6`&+%v~媡ɔ;)38/QWV;5QG|h^XȖq(cxKNd#8\@}\Vw(*"v,7K-3r@5<w/PkX4^|"*yR*Aফթ?v=>b3&kz+ `qfŭ ,5GüƂiMG`>dG6I[R>GvU0A–Q;Ǔ^݆Z%BV"w!,Vd#?-_b &? RqGwi)H#l: q"I#\nn >%Kw#eR)ٔLBm`TqX볙}ac_Nk>*l2`tu&3P~V7A8?8;]+upOb"'#6?j߂oZXt!7$(UTb2qx3_AkF{fq^WeLE7ggwiiGY) I fHBZc'uB =` vRPڨi#PvA>vg%%l,"pyY묎^1eH`eP?C$AC- &^ T١=NZ&[]2z(~4jtn!O>'٨uEtQ=bhڷNR HK}l3nu~2JEM.[B៽NׅHO;Vt;!;yi,9#ݠ{rI* K9 '9LO U7SX[8t@j&ǿ ܛ7p'Xj7:os쐗X?0`##4nN&8/Vts n&MQ^@ e6qFmA`;3)1ySf*YtM)YY2cp}~zTUxno!y>oIaf&y(n@$e \LSVT!,މh^ IAM++,)fVd`!"z!e™ZeLr'Řg,4.y'pW o :c@ۼhRvYϱt賰)%`'O}ǥS䎉\\wp2e8 )ȥƀvm{s9#n:Ic_stjcRr7 3[fyXePI*t ¾:S{zZ8GC{ʣ,3C+8}Ё͙E\/3SrD=m7Q_soxU#7bYz\8"~F3Z?-qaF˜'bNs̆zXTC|`+KQean/qIѱZ Mm=+wܮAG9nPnD*);T';FDj<0Zhsq!M^J!^*?iB2K%j$/UaLf U _RdTD%·kƮKNWBZ\V^53_Ǹxd5pyw<3W-cvL1n3\4Y[yh1!XWW2:4> h7%1'/{l boUN_q@!Aà˙P[YذeriR 껿,o~3.՞q=4<+'>Ij2YU'XWfe<-|`J&bկ֡0i'EkjTJT}KD ]tKg/; e'y Q; ()|.Q;lLbnNu$x<$Ch7X~F%4>=[f-543.sn@h<_ٴwiQ1l4ʗko؋Oe2W 6`D.&f@IPԻ1O|:<~?(g}W$Eܟ)yx.eAD^AaŃwXY  c>i]ObLq tTݔftK7! 8 tyM KE^pwĹW⼸0[u+.z)O1!`Cz:ObM}ꡬj%[_1FC7)aFĝ//V RMm5I7^1G{ieln$ nzJop}mB{)rfzuٶ!Et7[)D2sq$2Bv)($탨V/0$sȚH08OU+5k_K ,8Nhޑ'"%"aAkfq' iJ2,KtX dέzo|5ZzwŌ`ԝ-s@c/|F5Mi9m߳{&1^Y3P,a_/$ZG@(oTb*Oc+ yA-{'nX'1\pN0(boX^A_ 5= Gޅ.Ŭvaچ؄Y*kP`G!Vo>d B~&TQOGl'&f|c#gt1%勴HRc3<!-ҝ8Z|o=szhnb8ѪufX(~ko"{$ǴzJL(>M.R]:Ae}|"5[bҒ莍a`T ߼pF S1wEJP3_aC!0eanEۉ),kpXwF̠oseZ fO JGC r <'GZi;G@,*yQv7 )P{iV Ok!p)ZaghYu`D ;^$5SqO]haW۟_LtgsjǼS)tppܾ\6K,r)_\ie*3AbNK!:oZSYAw&k}EEfVyk%d]vj5jaA(̋q7@T&2SRlhugl 37 -HdZe}|y2wx"DdžT]4NXԁu.vYʛ7*".b$}+~dB7f~g3Ѱ&RbG NsOX{^(`5{%Vh}ڣ$Š,f> QuSN%Ig!ύqx^=+mN.=%kviP:a#2a.{hs c2[#4q@!9m;*VF8z ˉ)I>$} .B r/e?UFYfA]=݇BmoڏY~d_PT ɠ_tUc1>}R3@pUqo ?ٗ^hm+WR˒jRѕ8*ϙR#t5=FP*v&,V' u _%Ǖ&xF{J\-Űy*yIJR/|,E/]JM΁Ȩ[WvVֆ5,5('CJ0yJ^;&Z HB:D~pؑ,d,+hҝmlBw/bZq?+UDLbA#숗]/u0 <[M|Uu$nHH{l Px:RKNMDEqu䬚ǂ;jn} "ȷݭL_p,A0шlB2-<Җvm%4ְ6+B7(6Ei_ HGY",, ߖaHIm@_I,DqxAe¡zшNa3Y1^@%V|dbtj|¥Jd@+1 3dL_b;?#Za A&tHw(%%u"ͼ+td^}ORNWB2͸Eh[C+@ zbx' 0RMrfyՑ7'1UH=Q'0q'qnD M9at%SmuzJ΄G0miZ'7V"N_&eZt"4뭼uek-!_b2Bgk>񏒷 ]sTڨG(*%i80JҰ?%Ec2oƪK2(c8Dięf Pqg΋VN툫. uy"DÓ'SೣN;TI7LF O@e}5ř$g$>'_HQTSXypX^bh5ʃf.b}P0 Gj]|æ6t66D-q 6vҁc`,IvM/%~m{d5ėX~ )tCȤm%#M)Ҡqm,9pt/ Z7ah.&c@Uno/{e`+^d' gyVuڰI2_|cִ,۶`ά_"|B^dCshݰ&YiGu*=q̄SM"ps W*.h@),Xg2 `n!w Av-U V?]\fUT;ɍ#k3Um1`ncMI^e [o,Л8pVʪP]$3hDcॿPC-LSSW{ҿR_'PF7RUv}{-yJӣ_W+KPYor^Ϋ\l]ۅ;tƵg@[=E_:ٝ%N{/ad !}IAXd`=à*ݕ̶u-we%L\o+ JŌ|g졞QO."f$K)26&c6Tg;V}ldc ڲ71zΏ,N Շ8BRh/L(=.aAXR'LtѷT ˾byq:}t4XJ@;Tы2S VC/LqmO\`֘O*qNm%lwbK#ҝc?tXM>eft%X{Nx/mn]ƕ"#]i("=w (>.C? f0PgEa%-X PWY~w(9Cڽ=a]ʫ4=LdK{w̍TLOJ(zDMâcrS mt+U}SNxTh#*l]+ bI:1[LХ涵xE%wm5<o!X~ :sQ0 FbFI1 ǒN. J_|ٰ/x -41ԍ ̮w@ nf]?P]p-sř[ -'`tCMvu8=ێT'm‚kmR4w~B4{u^28-tQ70T/q4/Tw5XhW5xՔ6}7 8(qձ! k /6 91,\Y)G^&A+2]I&-x >Poh JaJZ0ߘyRo#.w׼|D}(ƩYp =p$5#zLVec?*q&Zy[D%vg"AY-8]c+M~Qim̻͂Pވ 9awD9 Q6?&dHi3/1*hG  `LmN w^Yo a9Dg.281j\rvW3mڠ_ Vt\z 'etZzE:\I/iΆtbdo%u/} [e}c)ZreG ѡ@+b5hf>:ŚH (>ą?Zxu^5!;Ŵd6,\4Sz>#"H#9"h{V 6liT~Lu+9 bCJMbJ%rrCB_a:*[`0wz?{O:K9 }j ɓ~C i_irÿH`ZFn>E*"hP7;慍7=GyC/J:TZ-kx=K ["ԶЏdRoT(EjkP9g?L !&骙jqb' )p3jM^.ۣuDGWϧB9X&`}oR)f)2Bd'w>-t8]:%\C0x7H-IY<`Yt]x`vp>zR/2tOiSi}VK{y q=ao|qYtSg%whc7`'m&ODL rڳ9⽋My@vACd_h{w൬Rv`4 Ņ?C-kF\" 98G5R YWK>SXv0h A;,RQ1,I}44Fj,G ږ򩞿7Al%cH%;2b6u=H2H? T ;<ͱ- $wTF c_b#MYnVVhgi[h\]ꘓf"7AQIy%,n}PMp,=A:lw<9Eg}`iGxKۏeh#N:uڀM>FiA}B}nw8\;T=%<( dۂ+Gb=e_ݘm%:̅a珦pԽ"g&e{K=tG ѬPuN4oXߴUݹL+u,@87b!cҁ ԁ2M*iLPc,/eT(2.Mჺ4K]$=,/OmO="x P Lwt=A@6L!::YLrmnpBtoA @xj~GXX$1V{T(99 dt,1+%Q9f}ٽH\̭Ѿ k`_=fU/p"cl |EAZId g4"B`=XVб`eMDUmS\2E3 gm[/[o7C]$XnP'գђ7'2>ƙv jσ35Lޘ䳅 y"Ȁ[=WBMxd F{1R_d-}0D3]: 7 nw o;zi.'Q ^bz\@@*7.to:W&) osߍ.tE_u&=zOo\ym_?<39(yaE]|1E_,)  $txNfocnr)q=#2eԟ0,+*lѣ#kZN#[ CcbO6hFu;T(aWk?׍wql(PK']Yo -=]_-&c1ϐ=8>)vс :`5i|AE,xzC/gEş+|2(mւA30j,wkqUzKW&jXԸNǾv]@T2gx=QWz=$ sSTpdioѺ3h1PFs#KU{E&?Cvv 0(#̌vN]rrE8&[̊STGWƙg+{x2C2E$hu']S3S8/ͺ')Z4͵{s,1[{X\ r.Hm(ھ+p%WBx3>M4yK~UU$l2p^!zQeϘvf2Gl!PƧM?MdL7a=goh7.PqU@/?=n Q 4'ˡw SPae*O)ow9p}h?Ec}=?4#|p?6Av)>gs0Xdey8p;}ԍ;XE&:#ؓ< [p;DzAW=)"g?U8Xp)>437zG8EHdt&Oy2uqbh㉸l^KZh6ʕ- U[aRm%@]çIVpj~Nn}m)S4MܝK܊\RJ/½-T .Nc'4h7dܕ]o~ %L}M[jUu-Q7b|GYj .yT%퐅MI\

. 16B$w\5sG`# Ӄpabh>eS& <}sG~?h27mX nOrB `Nc'|շ.oF~hVu톅*鞎&ȥUqIU :[PV"r>GDL~zGk,յ47{I#[J+d X!#[eMjyBb" AN"&ńL+ U(jpW+mIvx#c gz^Ai'#,VzBIfJd9uGϓүI{3Wp1Z>*Hj*)Z,G4`8y<5EDJD8KQ1~3MZȶk[>N_S|̘O9ق䬐Bև%!? 3CDu/2>^GbZ/7'l(Ry;s^3 tTkd7'ãH_UDMyJ =ﰳqdQd3KvXǛ\ mˀ.gHءA>re$ǔ>3U&gA=OEr.@u f>ı%qǴTwB HfEԜ}o 9]=r0 ~(I Ii+;*9:ɒ`*?x¡c! 6!*|a\+vFVYV:-L~%YO^-z?ewCf_FY1v\h6]^w"J)e6=3w|{_$"r|޻nNEy9Ɨ\PF)uR)qQq, hݦA84: m\~u zbJ]/x1SGHdsK4E 24N]{?x|FM/)d)bV;(gaPz2w]OHϴAyc.cI,^//Ģrsz"+a>Kkg;6)efc\eMD'L'KSfvWUE_LRE0rz-{wqn2@dlDiȍsup;+8Eǭ|H 5QX6r/Bx?m2dt>PֿtzZO\c0Mq{- =9o.=2s򁷊 jakuLf̽ٱ:}cj2CjE ).ߋ͌,\6zzw( }OZpP@ecGg,?? ߙ|OvҊke'> endobj 4 0 obj << /Ascent 678 /CapHeight 651 /Descent -216 /FontName /DJYFZS+NimbusRomNo9L-Regu /ItalicAngle 0 /StemV 85 /XHeight 450 /FontBBox [-168 -281 1000 924] /Flags 4 /CharSet (/fi/fl/exclam/numbersign/quoteright/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/bracketright/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/quotedblleft/quotedblright/endash/emdash) /FontFile 5 0 R >> endobj 109 0 obj [556 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 500 0 0 0 333 333 333 0 0 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 0 564 0 0 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 0 333 0 0 0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 444 0 500 1000 ] endobj 10 0 obj << /Type /Pages /Count 6 /Parent 110 0 R /Kids [2 0 R 12 0 R 21 0 R 27 0 R 30 0 R 33 0 R] >> endobj 38 0 obj << /Type /Pages /Count 6 /Parent 110 0 R /Kids [36 0 R 40 0 R 43 0 R 46 0 R 49 0 R 52 0 R] >> endobj 57 0 obj << /Type /Pages /Count 6 /Parent 110 0 R /Kids [55 0 R 59 0 R 62 0 R 71 0 R 74 0 R 77 0 R] >> endobj 82 0 obj << /Type /Pages /Count 5 /Parent 110 0 R /Kids [80 0 R 84 0 R 87 0 R 90 0 R 93 0 R] >> endobj 110 0 obj << /Type /Pages /Count 23 /Kids [10 0 R 38 0 R 57 0 R 82 0 R] >> endobj 111 0 obj << /Type /Catalog /Pages 110 0 R >> endobj 112 0 obj << /Producer (pdfeTeX-1.30.4) /Creator (TeX) /CreationDate (D:20070420141556-04'00') /PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.30.4-2.2 (Web2C 7.5.5) kpathsea version 3.5.5) >> endobj xref 0 113 0000000000 65535 f 0000001458 00000 n 0000001353 00000 n 0000000015 00000 n 0000146848 00000 n 0000126889 00000 n 0000146680 00000 n 0000126028 00000 n 0000107974 00000 n 0000125860 00000 n 0000147867 00000 n 0000003436 00000 n 0000003328 00000 n 0000001537 00000 n 0000107610 00000 n 0000106139 00000 n 0000107452 00000 n 0000105463 00000 n 0000092249 00000 n 0000105289 00000 n 0000006623 00000 n 0000006515 00000 n 0000003540 00000 n 0000091176 00000 n 0000071235 00000 n 0000090997 00000 n 0000009590 00000 n 0000009482 00000 n 0000006739 00000 n 0000012541 00000 n 0000012433 00000 n 0000009706 00000 n 0000015902 00000 n 0000015794 00000 n 0000012646 00000 n 0000018754 00000 n 0000018646 00000 n 0000016006 00000 n 0000147976 00000 n 0000021577 00000 n 0000021469 00000 n 0000018858 00000 n 0000025053 00000 n 0000024945 00000 n 0000021670 00000 n 0000028278 00000 n 0000028170 00000 n 0000025157 00000 n 0000031218 00000 n 0000031110 00000 n 0000028382 00000 n 0000034106 00000 n 0000033998 00000 n 0000031311 00000 n 0000037022 00000 n 0000036914 00000 n 0000034210 00000 n 0000148086 00000 n 0000039813 00000 n 0000039705 00000 n 0000037102 00000 n 0000042181 00000 n 0000042073 00000 n 0000039917 00000 n 0000070797 00000 n 0000068517 00000 n 0000070639 00000 n 0000068202 00000 n 0000066375 00000 n 0000068043 00000 n 0000043455 00000 n 0000043347 00000 n 0000042320 00000 n 0000046227 00000 n 0000046119 00000 n 0000043547 00000 n 0000048647 00000 n 0000048539 00000 n 0000046331 00000 n 0000050710 00000 n 0000050602 00000 n 0000048751 00000 n 0000148196 00000 n 0000052784 00000 n 0000052676 00000 n 0000050826 00000 n 0000054890 00000 n 0000054782 00000 n 0000052888 00000 n 0000057338 00000 n 0000057230 00000 n 0000055006 00000 n 0000059899 00000 n 0000059791 00000 n 0000057442 00000 n 0000066077 00000 n 0000061902 00000 n 0000065910 00000 n 0000060015 00000 n 0000066286 00000 n 0000068431 00000 n 0000068407 00000 n 0000071095 00000 n 0000071023 00000 n 0000091821 00000 n 0000105797 00000 n 0000107879 00000 n 0000107823 00000 n 0000126476 00000 n 0000147380 00000 n 0000148299 00000 n 0000148381 00000 n 0000148434 00000 n trailer << /Size 113 /Root 111 0 R /Info 112 0 R /ID [<86790C9A7F4875692EF8979304E5361A> <86790C9A7F4875692EF8979304E5361A>] >> startxref 148640 %%EOF king-2.21.120420/king/doc/work/format-kinemage.lyx0000644000000000000000000025145311531212662020107 0ustar rootroot#LyX 1.4.3 created this file. For more info see http://www.lyx.org/ \lyxformat 245 \begin_document \begin_header \textclass article \begin_preamble \pagenumbering{arabic} \lhead{\nouppercase{\rightmark}} \chead{} \rhead{\thepage} \lfoot{} \cfoot{} \rfoot{} \renewcommand{\headrulewidth}{0.4pt} \renewcommand{\footrulewidth}{0pt} \renewcommand{\sectionmark}[1]{\markboth{}{[\thesection]\ #1}} \renewcommand{\subsectionmark}[1]{\markboth{}{[\thesubsection]\ #1}} \fancypagestyle{plain}{% \fancyhf{}% \renewcommand{\headrulewidth}{0pt}% \renewcommand{\footrulewidth}{0pt}% } \end_preamble \language english \inputencoding auto \fontscheme pslatex \graphics default \paperfontsize default \spacing single \papersize default \use_geometry false \use_amsmath 1 \cite_engine basic \use_bibtopic false \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \papercolumns 1 \papersides 1 \paperpagestyle fancy \tracking_changes false \output_changes true \end_header \begin_body \begin_layout Title The Kinemage File Format, v1.0 \end_layout \begin_layout Author Ian W. Davis, Jane S. Richardson, David C. Richardson \end_layout \begin_layout Abstract This document describes the syntax and semantics of the core feature-set of the kinemage file format. Since even the core features are extensive, the description has been broken into two logical halves. The first section describes the semantics and high-level syntax of kinemage files---all the information typically needed to author a new kinemage file from scratch. The second section formally describes the low-level syntax that underlies the entire format, which is important for programmers writing kinemage parsers. \end_layout \begin_layout Abstract This document does not cover the philosophy, rationale, or history of the kinemage format, nor is it a tutorial in using or creating kinemages. It assumes the user has some experience viewing and interacting with existing kinemages and now wants either (1) to create a new kinemage file by hand or programmatically, starting from scratch, or (2) modify an existing kinemage file by hand at the plain-text level. \end_layout \begin_layout Standard \begin_inset LatexCommand \tableofcontents{} \end_inset \end_layout \begin_layout Part Semantics \end_layout \begin_layout Standard This first part of the document describes the semantics and high-level syntax of kinemage files, giving descriptions of the most commonly used keywords and the various options and parameters that accompany them. This level of detail is important both to kinemage authors and to programmers who want to use the kinemage format. While the core features described here are fairly stable and will remain so, additional features may be added with some frequency. Except as noted, all the features described here work in both Mage and KiNG, which are the two primary kinemage viewers as of this writing. \end_layout \begin_layout Standard A note about syntax: the full description of kinemage syntax appears in the second part of this document, but it's more information than most authors will need. The kinemage format is a fairly intuitive, mostly free-form language that should be easy to pick up. That said, here are three \begin_inset Quotes eld \end_inset gotchas \begin_inset Quotes erd \end_inset that new authors should be aware of: \end_layout \begin_layout Itemize Keywords (words starting with the @ symbol) \emph on must \emph default appear at the very beginning of a line in order to be recognized. Nothing can come before them, not even spaces. \end_layout \begin_layout Itemize Properties (words that end with an = sign) cannot have a space (or anything else) between the word and the = sign. Space after the = is optional, but it is not permitted before. Thus, we can write \family typewriter color=\InsetSpace ~ red \family default or \family typewriter color=red \family default , but not \family typewriter color\InsetSpace ~ =\InsetSpace ~ red \family default . This looks a little awkward at first, but you'll soon get used to it. \end_layout \begin_layout Itemize List definitions must appear all on one line. This is a good rule of thumb for the whole file (though not a requirement): each keyword must start a new line, and all its relevant options and parameters should probably appear on that same line. Regardless, the next keyword must start another line. When defining a list, one point is typically listed per line. \end_layout \begin_layout Section Overview of a kinemage file \end_layout \begin_layout Standard The kinemage file format is a plain-text, human-readable, human-editable format for three-dimensional vector graphics. The overall structure is an optional \family typewriter @tex \family default t block describing the contents of the file, followed by one or more kinemages. The kinemages themselves encode a hierarchical organization of 3-D graphics primitives like lines, balls, and triangles that have been optimized to convey the most possible information about the ideas underlying the visualizati on. Each of these kinemages begins with a \family typewriter @kinemage \family default statement, followed by display options, view and master definitions, \emph on etc. \emph default (the header), and then followed by a series of group, subgroup, list, and point definitions (the body). \end_layout \begin_layout Section Lists \end_layout \begin_layout Standard Depending on how you look at it, either the list or the point could be considere d the fundamental unit of a kinemage. Points specify particular locations in three-dimensional space by listing an X, Y, and Z coordinate. Lists bring together collections of points to describe 3-D \emph on primitives \emph default . Some primitives are defined by only one point (for instance, a ball is specified by it's center), but others need more -- a line segment needs two endpoints, and a triangle needs three corners. Each list has enough points in it to describe one or more primitives, and all the primitives in a list are of the same type \begin_inset Foot status collapsed \begin_layout Standard In some instances, Mage can accomodate various point types within one list. \end_layout \end_inset -- all balls, say, or all triangles. For example, a list might contain all the line segments that form the outline of a cube, or all the dots representing one particular data set on a graph. Where it makes logical sense to group a bunch primitives into a single list, it's a good idea, because it will more efficient than creating a separate list for each one. \end_layout \begin_layout Standard There are seven basic types of list, corresponding to seven different types of primitive: \end_layout \begin_layout Description Ball lists specify spheres of some finite size. They're typically drawn as flat, filled circles plus a little white highlight, which looks quite convincing as a \begin_inset Quotes eld \end_inset real \begin_inset Quotes erd \end_inset rendered sphere. However, they may not look right if they intersect other objects, with one exception: line segements that start or end \emph on exactly \emph default at the ball's center are rendered correctly. \end_layout \begin_layout Description Sphere lists are very similar to ball lists, but hint to the display program that the ball is large and may intersect other objects in a complex way. Depending on the kinemage viewer you're using, the spheres may look more realistic, at the expense of taking more time to render. \end_layout \begin_layout Description Ring lists are screen-oriented circles around a point --- think of them as just the outline of a ball. They're useful in place of balls in situations where you want to see (for example) lines converging on the center point. \end_layout \begin_layout Description Dot lists specify small points in space, like a ball or sphere that's just big enough to see. They're a good alternative to very small balls or spheres, because they're faster to draw. \end_layout \begin_layout Description Label lists specify short text labels anchored to a particular point in space. The label swings around as the kinemage is rotated so it's always facing forward and is right side up. \end_layout \begin_layout Description Vector lists specify a set of line segments, which are often connected head-to-t ail in a \emph on polyline \emph default . However, a vector list can contain any number of separate line segments, too. \end_layout \begin_layout Description Triangle lists specify filled triangles. Like vectors are often chained together into polylines, triangles are chained into \emph on triangle strips \emph default . Points 1, 2, and 3 make up the first triangle; then points 2 and 3 are reused together with point 4 for a second triangle. On it goes, with a 3, 4, and 5 making the third triangle; 4, 5 and 6 making the fourth, and so on. Traditionally, all the triangles in one list have to be part of a single connected strip. \end_layout \begin_layout Description Ribbon lists are very similar to triangle lists, except that pairs of consecutiv e triangles are assumed to lie in the same plane. In fact, the lighting effects are manipulated so that the four points look like they form a flat, four-sided polygon even if they really don't. As the name implies, this is used for ribbons that curl through space but need to look smooth. \end_layout \begin_layout Standard In the kinemage file, lists are specified by an @ symbol followed by the list type and the word \begin_inset Quotes eld \end_inset list \begin_inset Quotes erd \end_inset , all lower case and without any spaces in between. The entire list definition must be on a single line; it cannot be split across multiple lines. The first item after the @list keyword is the name of the list, enclosed in curly braces. The options listed below then follow in any order, as desired: \end_layout \begin_layout Itemize The word \family typewriter off \family default requests that the list not be initially visible when the kinemage is loaded. If it has an on/off button in the button panel, the user may turn it on manually, or it may be turned on by a master button. \end_layout \begin_layout Itemize The word \family typewriter nobutton \family default requests that the list not have an on/off button even if it would have otherwise. Note that many lists will not have an on/off button anyway because their subgroup or group is \family typewriter dominant \family default . \end_layout \begin_layout Itemize \family typewriter radius= #.# \family default and \family typewriter width= # \family default are used to specify the size of balls/spheres/rings and the line width of vectors/dots/rings, respectively. Radius may be a decimal number, but width refers to a number of pixels on the screen and must be an integer between 1 and 7. Lines and dots default to a width of 2. You should always specify a radius for balls, spheres, and rings explicitly. \end_layout \begin_layout Itemize Ball or sphere lists marked with \family typewriter nohighlight \family default will be drawn as flat colored disks and will not have a white highlight drawn to make them look 3-D. \end_layout \begin_layout Itemize \family typewriter color= colorname \family default specifies the base color for objects in the list; however, the list color interacts with the colors of individual points (if any). By default, lists are white. See section \begin_inset LatexCommand \ref{sec:Aspects-and-colors} \end_inset for more information about colors. \end_layout \begin_layout Itemize \family typewriter alpha= #.# \family default specifies the opacity of objects from 1.0 (fully opaque) to 0.0 (invisible). Alpha is currently supported only by KiNG and only for triangle, ribbon, ball, and sphere lists. \end_layout \begin_layout Itemize \family typewriter master= {mastername} \family default specifies that this list is controlled by the named master. A given list may have multiple \family typewriter master= \family default statements, but you should read section \begin_inset LatexCommand \ref{sec:Masters} \end_inset to see how multiple masters interact. \end_layout \begin_layout Itemize \family typewriter clone= {listname} \family default and \family typewriter instance= {listname} \family default specify that this list has the same points in it as the named list, which must be of the same type and must have been declared before the current list. Although is has the same points, this list must have its list properties specified explicitly (color, radius, \emph on etc. \emph default ), even if they are intended to be the same as those of the cloned/instanced list. Clone is purely a convenience for kinemage authors; the current list will be a totally independent copy of the cloned list that just happens to have the same contents. When the kinemage is saved, both lists will be written out in full without using \family typewriter clone= \family default . Instance, on the other hand, actually re-uses the same point data, so editing the points of one list will affect all its instances too. The \family typewriter instance= \family default property \emph on will \emph default appear in the saved kinemage. Instance is a good way to make more efficient use of memory in certain cases, such as when an identical object needs to appear in multiple frames of an animation. \end_layout \begin_layout Itemize \family typewriter dimension= # \family default specifies how many coordinates will be associated with each point in the list (default is 3 --- x, y, z). This is useful for plotting and graphing in high-dimensional spaces. All the lists in a kinemage should either have the same number of dimensions or be normal lists without a dimension specifier. \end_layout \begin_layout Standard A few sample list declarations are shown below. \end_layout \begin_layout LyX-Code @balllist {Circles} radius= 3.5 nohighlight off \end_layout \begin_layout LyX-Code @spherelist {Mars look-alikes} radius= 10000 color= red master= {planets} \end_layout \begin_layout LyX-Code @vectorlist {tiger's tail} color= orange width= 5 nobutton \end_layout \begin_layout LyX-Code @trianglelist {veil} color= yellowtint alpha= 0.25 \end_layout \begin_layout LyX-Code @trianglelist {a newer veil} color= white alpha= 0.3 clone= {veil} \end_layout \begin_layout Section Points \begin_inset LatexCommand \label{sec:Points} \end_inset \end_layout \begin_layout Standard Points determine the actual geometry of the objects in a kinemage file. At a minimum, each point must specify an X, Y, and Z coordinate. (Points in lists with a \family typewriter dimension= \family default may have more or less than three coordinates.) Coordinates are given in a right handed Cartesian system. The \begin_inset Quotes eld \end_inset Cartesian \begin_inset Quotes erd \end_inset part just means that the X, Y, and Z axes are all at right angles to each other. The \begin_inset Quotes eld \end_inset right handed \begin_inset Quotes erd \end_inset part means that if you're looking down the positive Z axis toward the origin, the positive Y axis goes up and the positive X axis goes to the right. Coordinates can be any possible decimal number, but it's a good idea to not make them all really large (say, all in the millions) or really small (thousandths and less), because you may lose accuracy in some kinemage viewers. \end_layout \begin_layout Standard \begin_inset Note Comment status collapsed \begin_layout Standard Is this really true of Mage? \end_layout \end_inset \end_layout \begin_layout Standard In addition to coordinates, it's a very good idea to give every point an ID, even though this is not strictly required. The ID appears when the user picks the point with the mouse, and for points in a label list the ID is actually the text that will be displayed for the label. IDs are allowed to be empty (just a pair of curly braces), and this is preferrable to no ID at all \begin_inset Foot status collapsed \begin_layout Standard KiNG interprets a missing point ID as the empty string, while Mage displays the X,Y,Z coordinates of the point as its ID in this case. \end_layout \end_inset . The special ID \family typewriter { \begin_inset Quotes erd \end_inset } \family default means that the point will have the same ID as the point that preceded it; if all the points in a list have the same ID, all but the first can have \family typewriter { \begin_inset Quotes erd \end_inset } \family default for their ID. \end_layout \begin_layout Standard Points are typically writen one to a line, though they can span multiple lines or more than one point can appear on the same line. The ID must come first, enclosed in curly braces, and the coordinates must come last. In between, there are a lot of per-point options that can be employed in any order: \end_layout \begin_layout Itemize The \family typewriter P \family default flag marks a point in a vectorlist as starting a new polyline. The first point in the list is automatically \family typewriter P \family default , but after that line segements are drawn from one point to another until a \family typewriter P \family default point is encountered. To draw a series of disconnected single line segments, every other point should be marked \family typewriter P \family default (starting with the first one). The \family typewriter P \family default flag does not affect triangle lists. \end_layout \begin_layout Itemize Points marked with the \family typewriter U \family default flag are \begin_inset Quotes eld \end_inset unpickable \begin_inset Quotes erd \end_inset under normal circumstances, meaning that clicking on them with the mouse will not do anything. \end_layout \begin_layout Itemize The \family typewriter X \family default flag can be used to break one triangle list into multiple triangle strips, analogous to the \family typewriter P \family default flag for vector lists. \end_layout \begin_layout Itemize Points can be given their own color just by writing the color name. They can also be assigned alternative colors for different coloring schemes through the use of aspects (see section \begin_inset LatexCommand \ref{sec:Aspects-and-colors} \end_inset ). Aspects are lists of single uppercase letters A - Z enclosed in parentheses. If aspects are used in a file, every point should have the same number of aspects specified. The color of a line segment is the color of its second point, not its first; likewise, the color of a triangle is the color of its third point. \end_layout \begin_layout Itemize Width and radius can also be specified on a point-by-point basis. Widths are specified as \family typewriter width1 \family default , \family typewriter width2 \family default , ... \family typewriter width7 \family default ; radii are specified as \family typewriter r= #.# \family default . \end_layout \begin_layout Itemize The visibility of points can also be controlled by pointmasters, which are analogous to the masters that control lists, subgroups, and groups. Pointmasters are identified by single character codes (the lowercase letters a - z and the numbers 1 - 6) enclosed in single quote marks. Multiple point masters interact differently than multiple masters do; see section \begin_inset LatexCommand \ref{sec:Masters} \end_inset for more information. \end_layout \begin_layout Itemize Each point can have an additional text \begin_inset Quotes eld \end_inset comment \begin_inset Quotes erd \end_inset associated with it, which should be enclosed in angle brackets. Some kinemage viewers use these for special purposes, while others may ignore them altogether. \end_layout \begin_layout Standard Some example point definitions are shown below; these points are not intended to all belong to the same list! \end_layout \begin_layout LyX-Code {clown nose} red r= 2.4 1.0 2.0 3.0 \end_layout \begin_layout LyX-Code {x-axis}P U 0 0 0 \end_layout \begin_layout LyX-Code { \begin_inset Quotes erd \end_inset } U width1 10 0 0 \end_layout \begin_layout LyX-Code {really complicated} 'aeg' (HZTU) 8.31 19.78 42.13 \end_layout \begin_layout Section Kinemages, groups, and subgroups \end_layout \begin_layout Standard Complicated kinemages may have hundreds of lists in them, which would quickly become unmanagable for the user. Groups and subgroups allow us to organize lists hierarchically, so that sets of related objects can be shown or hidden as a unit, and unneccessary detail can be supressed. There are also cases where several kinemages deal with different aspects of the same visualization problem, and the kinemage format provides for collecting these multiple kinemages into a single file. \end_layout \begin_layout Standard Only the start of each kinemage, group, subgroup, or list is marked, and not the end. A kinemage declaration must appear at the start of the file, and everything else in that file is considered part of the kinemage until another kinemage declaration is found. In the same way, a group includes all the subgroups and lists that follow it, until another group is declared or the end of the file is reached. Likewise, subgroups contain all the lists that follow them, until another group or subgroup declaration is encountered. Lists contain all the points that follow them, until another list, subgroup, or group declaration is encountered. In this way, a hierarchical organization is built up with points gathered into lists, lists gathered into subgroups, subgroups gathered into groups, and groups gathered into kinemages. \end_layout \begin_layout Standard Kinemage declarations are very simple: the \family typewriter @kinemage \family default keyword, followed by an identifying number. The first kinemage in a file should be number 1, the second should be number 2, and so on \begin_inset Foot status collapsed \begin_layout Standard Generally, you're OK as long as the numbers are all different and are monotonica lly increasing. \end_layout \end_inset . Thus, every kinemage file starts like this, with nothing preceding it except possibly a \family typewriter @text \family default block (see section \begin_inset LatexCommand \ref{sec:Metadata} \end_inset ): \end_layout \begin_layout LyX-Code @kinemage 1 \end_layout \begin_layout Standard Group and subgroup declarations are only slightly more complicated. They start with \family typewriter @group \family default or \family typewriter @subgroup \family default , respectively, followed by the (sub)group name in curly braces, possibly followed by some of the following flags. As with lists, group and subgroup declarations may not span multiple lines. \end_layout \begin_layout Itemize The word \family typewriter off \family default requests that the (sub)group not be initially visible when the kinemage is loaded. If it has an on/off button in the button panel, the user may turn it on manually, or it may be turned on by a master button. \end_layout \begin_layout Itemize The word \family typewriter nobutton \family default requests that the (sub)group not have an on/off button even if it would have otherwise. Note that some subgroups will not have an on/off button anyway because their group is \family typewriter dominant \family default . \end_layout \begin_layout Itemize The word \family typewriter dominant \family default requests that the buttons of objects below this (sub)group in the hierarchy not be shown. Dominant subgroups hide the buttons of their lists; dominant groups hide the buttons of their subgroups and their lists. \end_layout \begin_layout Itemize The word \family typewriter collapsable \family default is similar to dominant. When a collapsable group is on, the buttons of its subgroups and groups are visible as usual. When the collapsable group is off, however, those buttons are supressed, as though it were \family typewriter dominant \family default . The situation is analogous for collapsable subgroups and the lists under them. \end_layout \begin_layout Itemize \family typewriter master= {mastername} \family default specifies that this (sub)group is controlled by the named master. A given (sub)group may have multiple \family typewriter master= \family default statements, but you should read section \begin_inset LatexCommand \ref{sec:Masters} \end_inset to see how multiple masters interact. \end_layout \begin_layout Itemize \family typewriter dimension= # \family default is a shortcut for specifying \family typewriter dimension= \family default on all the lists in a particular group or subgroup. \end_layout \begin_layout Itemize The words \family typewriter animate \family default and \family typewriter 2animate \family default can only be used with groups. Groups so marked become part of the first or second animation, respectively. When the kinemage is loaded, all animate groups except the first one are turned off, regardless of any \family typewriter off \family default flags. The user can the cycle the animation forward/backward so that the next/previous group is on and all the others are off. Animate groups can be turned on or off by the user without any restrictions, but stepping forward or backward in the animation will again ensure that only one of them is on at a particular time. The \family typewriter 2animate \family default flag lets authors establish a second, unrelated animation that behaves in exactly the same way. In general, no group should be marked with both \family typewriter animate \family default and \family typewriter 2animate \family default . \end_layout \begin_layout Itemize The word \family typewriter select \family default can only be used with groups. Groups so marked are understood to be data points in some kind of plot, so that tools for selecting subsets of data should operate on \family typewriter select \family default groups and ignore other groups. \end_layout \begin_layout Standard The following are typical group and subgroup declarations: \end_layout \begin_layout LyX-Code @group {first frame} dominant animate \end_layout \begin_layout LyX-Code @group {not visible} dominant nobutton master= {use this instead} \end_layout \begin_layout LyX-Code @group {lots of stuff} collapsable \end_layout \begin_layout LyX-Code @subgroup {not very important} off master= {optional stuff} \end_layout \begin_layout Section Masters \begin_inset LatexCommand \label{sec:Masters} \end_inset \end_layout \begin_layout Standard The so-called \begin_inset Quotes eld \end_inset master \begin_inset Quotes erd \end_inset buttons provide an important facility for complex kinemages: the ability to group and organize the elements by a secondary scheme that may be very different from the primary, hierarchical organization. For example, if you were making an interactive map of the world, you might decide to make one group for each continent, and one subgroup for each country. However, it might also be nice to turn on and off all the rivers together, or all the cities. There might be a \family typewriter {rivers} \family default lists in each country, but without masters all of them would have to be toggled individually. With masters, you can have all of the rivers toggled by a single button that lives outside the ordinary hierarchy of groups, subgroups, and lists. \end_layout \begin_layout Standard Masters are automatically created whenever they're mentioned in the \family typewriter master= \family default part of a list, subgroup, or group declaration. Their buttons appear in the same button panel as group/subgroup/list buttons, but after all of those and somewhat separated from them. You can control the order and presentation of masters a little bit better by using the \family typewriter @master \family default keyword, which usually appears in the kinemage \begin_inset Quotes eld \end_inset header \begin_inset Quotes erd \end_inset -- after \family typewriter @kinemage \family default but before the group, subgroup, and list declarations. \family typewriter @master \family default is followed by the master name in curly braces, which must exactly match the name used in \family typewriter master= \family default statements. The name may be followed by the \family typewriter indent \family default flag, which hints that its button should be indented relative to the other master buttons so as to imply the same sort of hierarchy that occurs in the regular buttons. (However, for the masters this is purely cosmetic.) \end_layout \begin_layout Standard The effect of a master on a list, subgroup, or group is transient -- turning something on or off with a master does not prevent the user from turning that item on or off manually. However, for items marked with more than one master, the masters do interact with each other. Consider the following list: \end_layout \begin_layout LyX-Code @dotlist {demo list} master= {A} master= {B} master={C} \end_layout \begin_layout Standard If \emph on any \emph default one of the master buttons is toggled from on to off, our list will be turned off. However, if one of the masters is toggled from off to on, our list will be toggled on if and only if \emph on all \emph default of the other masters that control it are also currently on. (Of course, if the list was already on, it will remain so.) If, for example, masters B and C are off and master A is on, then turning B on will \emph on not \emph default turn the list on (because C is off). Subsequently turning C on \emph on will \emph default , however, turn the list on (because both A and B are also on). \end_layout \begin_layout Standard Individual points can also be controlled by a master-like mechanism, called \emph on pointmasters \emph default . Due to memory limits, there are only 32 possible pointmasters that can be used in a particular kinemage. They are identified by single-character codes; lowercase letters are typical, but any legal character is allowed. One or more of these single-character codes are listed inside of single quote marks for some or all of the points in a kinemage \begin_inset Foot status collapsed \begin_layout Standard Mage does not (yet) support multiple pointmasters for a single point, so it will only accept a single character in single quotes. \end_layout \end_inset . Each pointmaster code is associated with a named master button by a line that starts with \family typewriter @pointmaster \family default , then one (or rarely, more than one) single-character code between single quotes, then the master name in curly braces. If the name matches with the name of an ordinary master, then that button will control both the list/subgroup/group master and the pointmaster. \end_layout \begin_layout Standard As with masters, the \family typewriter @pointmaster \family default declaration is optional; pointmaster buttons will be created automatically if needed. Likewise, multiple pointmasters for a single point interact the same way that multiple masters for a single list do: that is, any master will turn the point off, but all of them must be on in order to turn it back on. \end_layout \begin_layout Standard By default, master and pointmaster buttons will begin in the \begin_inset Quotes eld \end_inset on \begin_inset Quotes erd \end_inset (checked) state, unless \emph on all \emph default of the groups/subgroups/lists controlled by that master are marked as \family typewriter off \family default in the kinemage, in which case the master starts off unchecked. Master and pointmaster declarations can optionally be followed by either \family typewriter on \family default or \family typewriter off \family default , in which case the kinemage acts as though that master was clicked on or off immediately after the kinemage was loaded. This is not used very often, but can be helpful for quickly modifying which groups, \emph on etc. \emph default will be initially visible when the kinemage is loaded. \end_layout \begin_layout Standard Shown below are some typical master and pointmaster declarations: \end_layout \begin_layout LyX-Code @master {rivers} \end_layout \begin_layout LyX-Code @pointmaster 'a' {large cities} \end_layout \begin_layout LyX-Code @pointmaster 'b' {small cities} off \end_layout \begin_layout LyX-Code @pointmaster 'ab' {all cities} \end_layout \begin_layout LyX-Code @master {dual purpose} indent \end_layout \begin_layout LyX-Code @pointmaster 'c' {dual purpose} \end_layout \begin_layout Section Colors and aspects \begin_inset LatexCommand \label{sec:Aspects-and-colors} \end_inset \end_layout \begin_layout Standard Color-coding is one of the most-used feature in any visualization system, so the kinemage format provides lots of options related to coloring. We've already seen how to assign a color to a whole list or a single point in their respective sections, and we've seen that point colors, when present, generally override the color specified for the list. Below are all 28 of the color names that can be used with lists and points: \end_layout \begin_layout Standard \begin_inset Tabular \begin_inset Text \begin_layout Standard \emph on Saturated colors \end_layout \end_inset \begin_inset Text \begin_layout Standard \emph on Semi-sat. colors \end_layout \end_inset \begin_inset Text \begin_layout Standard \emph on Pastel colors \end_layout \end_inset \begin_inset Text \begin_layout Standard \emph on Neutrals \end_layout \end_inset \begin_inset Text \begin_layout Standard red (A) \end_layout \end_inset \begin_inset Text \begin_layout Standard pink (N) \end_layout \end_inset \begin_inset Text \begin_layout Standard pinktint (V) \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard orange (B) \end_layout \end_inset \begin_inset Text \begin_layout Standard peach (P) \end_layout \end_inset \begin_inset Text \begin_layout Standard peachtint (Q) \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard gold (C) \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard yellow (D) \end_layout \end_inset \begin_inset Text \begin_layout Standard yellow (D) \end_layout \end_inset \begin_inset Text \begin_layout Standard yellowtint (R) \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard lime (E) \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard green (F) \end_layout \end_inset \begin_inset Text \begin_layout Standard sea (G) \end_layout \end_inset \begin_inset Text \begin_layout Standard greentint (S) \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard sea (G) \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard white (W) \end_layout \end_inset \begin_inset Text \begin_layout Standard cyan (H) \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard gray (X) \end_layout \end_inset \begin_inset Text \begin_layout Standard sky (I) \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard brown (Y) \end_layout \end_inset \begin_inset Text \begin_layout Standard blue (J) \end_layout \end_inset \begin_inset Text \begin_layout Standard sky (I) \end_layout \end_inset \begin_inset Text \begin_layout Standard bluetint (T) \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard purple (K) \end_layout \end_inset \begin_inset Text \begin_layout Standard lilac (O) \end_layout \end_inset \begin_inset Text \begin_layout Standard lilactint (U) \end_layout \end_inset \begin_inset Text \begin_layout Standard invisible (Z) \end_layout \end_inset \begin_inset Text \begin_layout Standard magenta (L) \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard deadwhite \end_layout \end_inset \begin_inset Text \begin_layout Standard hotpink (M) \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard \end_layout \end_inset \begin_inset Text \begin_layout Standard deadblack \end_layout \end_inset \end_inset \end_layout \begin_layout Standard The letters listed in parentheses are the aspect codes for each color, which will be discussed below. Colors are organized so that the columns form progressions of hue, and the rows form progressions of saturation, although the relationships are somewhat different on a white background. Some colors appear in two different places in the chart because they serve two different \begin_inset Quotes eld \end_inset purposes \begin_inset Quotes erd \end_inset . See the palette kinemage built into KiNG for more details on how to use color effectively. \end_layout \begin_layout Standard Sometimes you might develop a kinemage in which tens or hundreds of different lists should all be the same color -- but you aren't sure \emph on which \emph default color. Instead of using the find-and-replace feature of a text editor to test out different options, you can define a symbol to stand in for the color, and then change only the definition of the symbol. This symbolic or \begin_inset Quotes eld \end_inset variable \begin_inset Quotes erd \end_inset color name is called a \emph on colorset \emph default , and is declared with the \family typewriter @colorset \family default keyword, followed by the symbolic name in curly braces and then the name of a normal kinemage color. Later on, you can assign the symbolic color name to lists (but not individual points). For example, \end_layout \begin_layout LyX-Code @colorset {water color} sky \end_layout \begin_layout LyX-Code @vectorlist {river} color= {water color} \end_layout \begin_layout LyX-Code @balllist {ponds} color= {water color} \end_layout \begin_layout Standard It is also possible to define custom colors that are not part of the default kinemage palette. They are specified in terms of hue, saturation, and value (HSV). Hue ranges from 0 (red) to 360 (also red) degrees; saturation ranges from 0 (grayscale) to 100 (intense color); and value ranges from 0 (black) to 100 (full brightness). It is possible to give different definitions for white vs. black background, as is done for most kinemage colors, but if the specification for white background is left off, the same color will be used on both black and white. For example, \end_layout \begin_layout LyX-Code @hsvcolor {Evergreen} 120 70 30 \end_layout \begin_layout LyX-Code @hsvcolor {Smoke} 0 0 80 0 0 20 \end_layout \begin_layout LyX-Code @hsvcolor {Graphite} 0 0 20 0 0 80 \end_layout \begin_layout Standard Since color schemes are so important to visualization, it is sometimes useful to have multiple color schemes within one kinemage. For example, a map might be colored by elevation, by rainfall, or by population density, depending on its intended use. \emph on Aspects \emph default provide a mechanism for specifying more than one possible point color for each point, only one of which is active at a particular time. \end_layout \begin_layout Standard Aspects must be declared with the \family typewriter @aspect \family default keywords in the kinemage header; the declaration is not optional as it is \emph on e.g. \emph default for masters. Each point that has aspect coloring (not all points in a kinemage have to) should have the same number of aspect codes as there are \family typewriter @aspect \family default definitions in the kinemage. When a point should be specially colored for some aspects but not others, a space character ( \begin_inset Quotes eld \end_inset \begin_inset Quotes eld \end_inset ) can be used instead of a letter to mean that point's \begin_inset Quotes eld \end_inset normal \begin_inset Quotes erd \end_inset color. As explained in the section on points, the single-letter aspects codes for a point appear inside parentheses as part of the point definition (see section \begin_inset LatexCommand \ref{sec:Points} \end_inset ). For example: \end_layout \begin_layout LyX-Code @1aspect {Population density} \end_layout \begin_layout LyX-Code @2aspect {Quality of universities} \end_layout \begin_layout LyX-Code @3aspect {Number of bars} \end_layout \begin_layout LyX-Code @balllist {Cities in the Triangle} color= white radius= 2 \end_layout \begin_layout LyX-Code {Durham} (ABC) 0 1 0 \end_layout \begin_layout LyX-Code {Raleigh} (DEF) 1 0 0 \end_layout \begin_layout LyX-Code {Chapel Hill} (G I) -1 0 0 \end_layout \begin_layout LyX-Code {Cary} (J ) 0.5 -0.5 0 \end_layout \begin_layout Section Views and display options \end_layout \begin_layout Standard There are a number of keywords that control the default presentation of a kinemage to the user. Choosing the right options is an important guide to the user, although s/he can override them later. \end_layout \begin_layout Standard All of the following keywords are used to define a pre-set view of the kinemage. The keywords are given a leading number that defines \emph on which \emph default view they belong with (show below for view 1, but 2, 3, \emph on etc. \emph default can be substitued to define additional views). View 1 is the default that will be shown when the kinemage is first opened. Although a view definition may legally omit any of these components, it's best to define all of them explicitly to ensure the desired behavior. In the definitions below, the symbol # stands for any number, decimal or integer. \end_layout \begin_layout Description @1viewid\InsetSpace ~ {VIEW\InsetSpace ~ NAME} gives a label that will identify this view to the user. It should be unique, but is not required to be. \end_layout \begin_layout Description @1center\InsetSpace ~ #\InsetSpace ~ #\InsetSpace ~ # gives the coordinates of the center of the view. The model will rotate around this point, which will be centered. \end_layout \begin_layout Description @1matrix\InsetSpace ~ #\InsetSpace ~ #\InsetSpace ~ #\InsetSpace ~ #\InsetSpace ~ #\InsetSpace ~ #\InsetSpace ~ #\InsetSpace ~ #\InsetSpace ~ # gives an orthonormal rotation matrix that defines the orientation of the model. ( \emph on Orthonormal \emph default meaning all the row vectors are orthogonal to each other, all the column vectors are orthogonal to each other, and all these vectors have length 1.) If you intend to multiple this matrix by your coordinates (as a column vector), you should read the numbers as going down the first column, then down the second, and so on. If you intend the multiply your coordinates (as a row vector) by the matrix, then you should read the series of numbers as going across the first row, then across the second, \emph on etc. \emph default That is, one version of the matrix is the transpose of the other. \end_layout \begin_layout Description @1span\InsetSpace ~ # defines how much of the kinemage is visible---whether you're zoomed in close or zoomed way out. Specifically, the given distance in model coordinates will just fill the graphics area either horizontally or vertically (whichever is smaller). Thus, larger spans show more of the model, and smaller spans show less (but in greater detail). \end_layout \begin_layout Description @1zoom\InsetSpace ~ # is an alternative specification for span; it controls how much of the kinemage is visible. A zoom of 1.0 ensures the whole kinemage just fits within the graphics area, and larger zooms cause the view to zoom in closer. It's better to give a span than a zoom, because zoom depends on the space the kinemage occupies. If later add (or remove) something to the kinemage that changes its \begin_inset Quotes eld \end_inset envelope \begin_inset Quotes erd \end_inset , then your predefined views will shift to show something other than you had originally intended. Span, on the other hand, is independent of the content of the kinemage. \end_layout \begin_layout Description @1zslab\InsetSpace ~ # is the complement of span or zoom---it defines how thick a slice of the model you can see. Obviously, if the full model was displayed in-focus when you were zoomed in very close, all the extra detail in the far background could be extremely distracting. Ditto for things right in front of your nose that could blot out the area of interest. Thus, everything that's more than a certain distance in front of or behind the center of rotation is not shown. (Computer graphics folks call this a \begin_inset Quotes eld \end_inset slab \begin_inset Quotes erd \end_inset or a pair of \begin_inset Quotes eld \end_inset clipping planes. \begin_inset Quotes erd \end_inset ) The units here are arbitrary: a value of 200 means that the front-to-back distance between clipping planes is equal to (the lesser of) the width or height of the graphics area. Other values mean the slab will be #/200 times this wide, so smaller values give a thinner slab and larger values, a thicker one. \end_layout \begin_layout Description @1axischoice\InsetSpace ~ #\InsetSpace ~ #\InsetSpace ~ # specifies which coordinates will be mapped to the X, Y, and Z axes (respectively) for high-dimensional kinemages. The indices start from 1, so \begin_inset Quotes eld \end_inset 1 2 3 \begin_inset Quotes erd \end_inset would correspond to the normal X, Y, Z display. This cannot be used to reorder the axes for normal 3-D points, but it can for high-dimensional points (i.e., \begin_inset Quotes eld \end_inset 3 2 1 \begin_inset Quotes erd \end_inset is legal only for high-dimensional points). This keyword should be omitted from kinemages that don't have any high-dimensio nal points in them. \end_layout \begin_layout Standard There are a number of other useful keywords that correspond to display settings common in most kinemage viewers. As note above, these are only hints: the user can always choose to override them, and the kinemage viewer is not even guaranteed to pay attention to them. \end_layout \begin_layout Description @perspective suggests that the kinemage been shown with simulated perspective projection. This is often desirable for geometric objects, so that parallel lines actually converge in the distance, cubes really look like cubes, and so on. By default, kinemages are shown with orthographic projection. \end_layout \begin_layout Description @flat hints that there is no useful depth (Z-coordinate) information in the kinemage, and that the default mode of interaction should be translation (sliding the kinemage around in the X-Y plane) rather than rotation. This is helpful for things like 2-D charts and graphs. \end_layout \begin_layout Description @onewidth asks that lines be drawn in a consistent width regardless of their location. By default, lines in the front of the view are thicker and lines in the back are thinner, to aid in giving a feeling of depth and three-dimensionality. \end_layout \begin_layout Description @thinline suggests the default line width be as thin as possible, rather than the standard 2 pixels. \end_layout \begin_layout Description @whitebackground hints that the kinemage would look best on a white background, with its associated color palette. By default, the black background and palette are used. \end_layout \begin_layout Description @listcolordominant asks that the individually specified colors of points be ignored in favor of the base color of their list. \end_layout \begin_layout Section Metadata \begin_inset LatexCommand \label{sec:Metadata} \end_inset \end_layout \begin_layout Standard In addition to describing a geometrical object or scene, the kinemage language allows authors to describe the \emph on meaning \emph default of the graphical objects. This sort of information is thus data about the (primary) data, a.k.a. \emph on metadata \emph default . The following keywords are supported: \end_layout \begin_layout Description @text marks the beginning of a block of free-form, plain-text information that should be made available to users of the kinemage. The text continues until the next keyword is encountered; thus, the only restriction on the content of text block is that it not contain any @ symbols at the very beginning of a line. Indenting the @ with a space is a perfectly acceptable way of getting around this limitation. Text is specified for the kinemage \emph on file \emph default as a whole. Thus, it will probably pertain to all the kinemages in that file, whether by describing them sequentially or discussing the relationships among them. Some kinemage viewers support special hypertext links in the text, which are delimited by \family typewriter *{ \family default and \family typewriter }* \family default . The specific syntax is described below. Multiple \family typewriter @text \family default blocks in the same file will be concatenated together in the order they appear. \end_layout \begin_layout Description @caption works much like \family typewriter @text \family default , but is generally shorter (a few lines at most) and pertains to a single kinemage. Thus, \family typewriter @caption \family default must appear somewhere after a \family typewriter @kinemage \family default statement, while \family typewriter @text \family default can be the first thing in a file. \end_layout \begin_layout Description @title\InsetSpace ~ {KIN\InsetSpace ~ TITLE} gives a brief title that identifies this kinemage, as a more user-friendly label than its index number. \end_layout \begin_layout Description @copyright\InsetSpace ~ {COPYRIGHT\InsetSpace ~ INFO\InsetSpace ~ 2004} notifies users of who owns the copyright to this kinemage file. \end_layout \begin_layout Description @pdbfile\InsetSpace ~ {FILENAME} lists a Protein DataBank file that corresponds to the model shown in this kinemage. Used only for kinemages showing macromolecular structures. \end_layout \begin_layout Description @mapfile\InsetSpace ~ {FILENAME} lists an electron density map that corresponds to the model shown in this kinemage. Used only for kinemages showing macromolecular structures. \end_layout \begin_layout Description @command\InsetSpace ~ {UNIX\InsetSpace ~ CMD} suggests a command that the user or the kinemage viewer could run to generate additional kinemage data, which could then be merged into the current file. \end_layout \begin_layout Description @dimensions\InsetSpace ~ {DIM1}\InsetSpace ~ {DIM2}\InsetSpace ~ ... specifies human-readable labels for the coordinates in a high-dimensional kinemage. For use with the list \family typewriter dimension= \family default property and \family typewriter @axischoice \family default . \end_layout \begin_layout Description @dimminmax\InsetSpace ~ MIN1\InsetSpace ~ MAX1\InsetSpace ~ MIN2\InsetSpace ~ MAX2\InsetSpace ~ ... specifies the minimum and maximum values for a high-dimensional kinemage. These ranges are not enforced on individual points, but are used for scaling the axes when displaying parallel coordinates. \end_layout \begin_layout Description @dimscale\InsetSpace ~ S1\InsetSpace ~ S2\InsetSpace ~ ... specifies the scaling that should be applied to convert coordinates as they appear in the kinemage to coordinates as they should be displayed to the user. See below for more details. \end_layout \begin_layout Description @dimoffset\InsetSpace ~ T1\InsetSpace ~ T2\InsetSpace ~ ... specifies the translation that should be applied to convert coordinates as they appear in the kinemage to coordinates as they should be displayed to the user. If both scaling and offset are specified, the original transform is understood to be \begin_inset Formula $kin=s(orig+t)$ \end_inset , and the transform from coordinates stored in the kinemage file back to coordinates intended for display is then \begin_inset Formula $display=orig=(kin/s)-t$ \end_inset . The default values are \begin_inset Formula $s=1$ \end_inset and \begin_inset Formula $t=0$ \end_inset . \end_layout \begin_layout Subsection Kinemage text hyperlinks \end_layout \begin_layout Standard Both Mage and KiNG support hypertext commands in the text window. When the user clicks on one of these with the mouse, some action is invoked. Hyperlinks are delimited by \family typewriter *{ \family default and \family typewriter }* \family default . They may contain multiple commands, which are separated by commas. Common commands are: \end_layout \begin_layout Description kinemage\InsetSpace ~ 1 Takes the user to the first kinemage in the file. \end_layout \begin_layout Description kin\InsetSpace ~ 1 (short form for \begin_inset Quotes eld \end_inset kinemage \begin_inset Quotes erd \end_inset ) \end_layout \begin_layout Description view\InsetSpace ~ 2 Takes the user to the second view in the current kinemage. May be combined with \begin_inset Quotes eld \end_inset kinemage \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Description v=2 (short form for \begin_inset Quotes eld \end_inset view \begin_inset Quotes erd \end_inset ) \end_layout \begin_layout Description alloff Turns off all master buttons. Usually followed by one or more \begin_inset Quotes eld \end_inset master ... on \begin_inset Quotes erd \end_inset commands. \end_layout \begin_layout Description master=\InsetSpace ~ {Master\InsetSpace ~ Name}\InsetSpace ~ on/off Turns the specified master on or off. \end_layout \begin_layout Description m={Master\InsetSpace ~ Name}\InsetSpace ~ on/off (short form for \begin_inset Quotes eld \end_inset master \begin_inset Quotes erd \end_inset ) \end_layout \begin_layout Standard Some examples of hyperlinks appear below: \end_layout \begin_layout LyX-Code *{KINEMAGE 3}* \end_layout \begin_layout LyX-Code *{Kin 2, View 4}* \end_layout \begin_layout LyX-Code *{kin 3, v=5, alloff, m={charges} on, m={Hphobics} on}* \end_layout \begin_layout LyX-Code *{view 5, master={mc} off}* \end_layout \begin_layout Section Alternative spellings \end_layout \begin_layout Standard Some of the keywords in kinemage files may take alternate forms, some of which are historical artifacts and some of which are attempts to accomodate both American and British spelling. The forms given above are the preferred ones; the alternatives listed below may not be supported by all kinemage viewers. \end_layout \begin_layout Description @balllist @ball \end_layout \begin_layout Description collapsable collapsible recessiveon \end_layout \begin_layout Description color= colour= \end_layout \begin_layout Description deadblack black \end_layout \begin_layout Description @dimensions @dimension \end_layout \begin_layout Description @dotlist @dot \end_layout \begin_layout Description @flat @flatland @xytranslation \end_layout \begin_layout Description gray grey \end_layout \begin_layout Description @hsvcolor @hsvcolour \end_layout \begin_layout Description L l D d \emph on (the unneccessary point flag: L for Line-to, D for Draw-to) \end_layout \begin_layout Description @labellist @label \end_layout \begin_layout Description @listcolordominant @listcolordom \end_layout \begin_layout Description nohighlight nohilite nohi \end_layout \begin_layout Description orange rust \end_layout \begin_layout Description P p M m \emph on (the point flag: P for Point, M for Move-to) \end_layout \begin_layout Description @ribbonlist @ribbon \end_layout \begin_layout Description @ringlist @ring \end_layout \begin_layout Description sea seagreen \end_layout \begin_layout Description sky skyblue \end_layout \begin_layout Description @spherelist @sphere \end_layout \begin_layout Description @subgroup @set \end_layout \begin_layout Description @trianglelist @triangle \end_layout \begin_layout Description U u \emph on (the point flag for Unpickable) \end_layout \begin_layout Description @vectorlist @vector \end_layout \begin_layout Description @whitebackground @whiteback @whitebkg \end_layout \begin_layout Description X x \emph on (the point flag) \end_layout \begin_layout Description yellowtint paleyellow \end_layout \begin_layout Description @zslab @zclip \end_layout \begin_layout Part Syntax \end_layout \begin_layout Standard This part of the document describes the low-level syntax that is common to all kinemage formats, regardless of how many additional functionalities (semantics) they incorporate. The descriptions are very precise, at the cost of being somewhat long and tedious. However, this level of detail is necessary for programmers who wish to interpret kinemage files reliably, and may be helpful to authors as well. This level is expected to be extremely stable and change very slowly. \end_layout \begin_layout Standard The descriptions in the two parts of this document assume a similar division of labor in the implementation of computer programs that process kinemages: the low-level syntax (this part) is handled by a tokenizer, which can separate a stream of characters into meaningful atomic units. The semantics and high-level syntax (the preceding part) are handled by a parser, which is responsible for understanding, \emph on e.g. \emph default , the relationships among graphics objects and their implied hierarchical organization. \end_layout \begin_layout Section Characters in kinemage files \end_layout \begin_layout Standard Kinemage files are plain text files encoded according to the ASCII standard \begin_inset Foot status collapsed \begin_layout Standard See \begin_inset LatexCommand \htmlurl{http://www.asciitable.com/} \end_inset for details. \end_layout \end_inset , which defines 128 characters. Each character is stored in the lower 7 bits of a single byte. Only ASCII characters between 32 and 126 inclusive, plus 9 (horizontal tab), 10 (newline), 12 (formfeed), and 13 (carriage return) are legal character s in a kinemage file (numbers given are in decimal). \end_layout \begin_layout Standard A kinemage tokenizer may check for and report illegal characters, but is not required to. If the tokenizer does find illegal characters, they should not cause a fatal error, but should instead be treated as alphanumerics (see section \begin_inset LatexCommand \ref{sub:Alphanumerics} \end_inset ). \end_layout \begin_layout Subsection Whitespace \end_layout \begin_layout Standard Whitespace characters are the space (32), horizontal tab (9), newline (10), formfeed (12), carriage return (13), and the comma (44). Commas are defined as whitespace to simplify treatment of a sequence of numbers, which is often writen out with commas as separators. \end_layout \begin_layout Standard The kinemage format is whitespace insensitive: these characters carry no meaning and may be discarded at the tokenizer level. Where whitespace is called for, one or more whitespace characters may be used, and any sequence of continguous whitespace characters is treated as a single occurance of whitespace. However, there is one important semantic attribute conveyed by whitespace: the newline and carriage return characters impart the beginning-of-line (BOL) property to any token immediately following them. See section \begin_inset LatexCommand \ref{sub:Beginning-of-line} \end_inset for details. \end_layout \begin_layout Standard When using whitespace, keep in mind that kinemage files should be human-readable and human-editable. Line length should not exceed 80 characters, but superfluous line breaks should be avoided. Single spaces are the preferred form of whitespace within a line. These suggestions are merely matters of style, and a kinemage tokenizer must not rely on them being followed. \end_layout \begin_layout Subsection Alphanumerics \begin_inset LatexCommand \label{sub:Alphanumerics} \end_inset \end_layout \begin_layout Standard Alphanumeric characters are the uppercase letters A-Z, the lowercase letters a-z, and the digits 0-9. Note that kinemage files are case sensitive. Kinemage tokenizers must not convert or mangle the case of any tokens in a kinemage file, and tokens that differ only by case must still be considered distinct from one another. \end_layout \begin_layout Subsection Punctuation \end_layout \begin_layout Standard All legal characters that are neither classified as whitespace nor as alphanumer ics are regarded as punctuation. These characters have a variety of functions in the kinemage format. The following characters already have well-defined function and syntax associated with them: \end_layout \begin_layout LyX-Code @ ( ) - = + { } \begin_inset Quotes eld \end_inset ' < . > \end_layout \begin_layout Standard At the moment, no special significance has been attached to the following characters: \end_layout \begin_layout LyX-Code ` ~ ! # $ % ^ & * _ [ ] \backslash | : ; / ? \end_layout \begin_layout Standard However, a future version of the format may define meanings for them. \end_layout \begin_layout Section Tokens in kinemage files \end_layout \begin_layout Standard Files in kinemage format can be thought of a sequences of tokens (meaningful), each separated from the others by zero or more whitespace characters (meaningle ss). Tokens are divided into two classes, quoted and unquoted. Quoted tokens have clear start and end signals, so they can occur with no intervening whitespace and still be separable. Unquoted tokens lack clear start and/or end signals. Thus, at least one whitespace character is \emph on required \emph default between two unquoted tokens in order to separate them from one another. \end_layout \begin_layout Standard Theoretically, each token may be of any length, from one character (even zero characters, for quoted tokens) up to the largest string that will fit in memory. In practice, however, tokens should be fairly short; 20 characters or less is a reasonable guideline. No token should exceed 256 characters in length, and more stringent restriction s on length may be imposed on some tokens by the higher-level syntax. \end_layout \begin_layout Standard The names given to token types below reflect their usual function in a kinemage file, but they are not restricted to that function. For example, an identifier usually names some object, but it can also enclose a command line, a file name, and so on. \end_layout \begin_layout Subsection Beginning-of-line \begin_inset LatexCommand \label{sub:Beginning-of-line} \end_inset \end_layout \begin_layout Standard Beginning-of-line (BOL) is a property of certain tokens that may influence their interpretation by the parser. For instance, for a token to be recognized as a keyword (see section \begin_inset LatexCommand \ref{sub:Keywords} \end_inset ), it must occur at the beginning of a line. A token is considered BOL under any of the following conditions: \end_layout \begin_layout Itemize The first character of the token is the first character in the file \end_layout \begin_layout Itemize The first character of the token is immediately preceded by a newline \end_layout \begin_layout Itemize The first character of the token is immediately preceded by a carriage return \end_layout \begin_layout Subsection Quoted tokens \end_layout \begin_layout Standard Quoted tokens all have explicit markers for the beginning and end of the token. This simplifies the parsing of these tokens, and enables one to classify the type of token present after parsing the first character of it. However, care must be taken to close every token that is opened. To aid authors in discovering such errors in their kinemages, it is recommended that kinemage tokenizers report a non-fatal error when they encounter the end of the file before closing an open quoted token. \end_layout \begin_layout Subsubsection Identifiers \end_layout \begin_layout Standard Identifiers are strings quoted by curly braces, like this: \end_layout \begin_layout LyX-Code {an identifier} \end_layout \begin_layout Standard An identifier token begins when an opening curly brace is encountered outside of any other quoted token (but possibly \begin_inset Quotes eld \end_inset inside \begin_inset Quotes erd \end_inset , \emph on i.e. \emph default , immediately following, an unquoted token). It terminates as soon as the number of closing curly braces encountered in the course of parsing this token equals the number of opening curly braces encountered. That is, curly braces may be nested within an identifier, but only as long as they are balanced. Otherwise, an identifier may contain any legal character for a kinemage file. \end_layout \begin_layout Subsubsection Comments \end_layout \begin_layout Standard Comments are strings quoted by angle brackets, like this: \end_layout \begin_layout LyX-Code \end_layout \begin_layout Standard A comment token begins when an opening angle bracket is encountered outside of any other quoted token (but possibly \begin_inset Quotes eld \end_inset inside \begin_inset Quotes erd \end_inset , \emph on i.e. \emph default , immediately following, an unquoted token). It terminates as soon as the number of closing angle brackets encountered in the course of parsing this token equals the number of opening angle brackets encountered. That is, angle brackets may be nested within a comment, but only as long as they are balanced. Otherwise, a comment may contain any legal character for a kinemage file. \end_layout \begin_layout Subsubsection Aspects \end_layout \begin_layout Standard Aspects are strings quoted by parentheses, like this: \end_layout \begin_layout LyX-Code (an aspect) \end_layout \begin_layout Standard An aspect token begins when an opening parenthesis is encountered outside of any other quoted token (but possibly \begin_inset Quotes eld \end_inset inside \begin_inset Quotes erd \end_inset , \emph on i.e. \emph default , immediately following, an unquoted token). It terminates as soon as the number of closing parentheses encountered in the course of parsing this token equals the number of opening parentheses encountered. That is, parentheses may be nested within an aspect, but only as long as they are balanced. Otherwise, an aspect may contain any legal character for a kinemage file. \end_layout \begin_layout Subsubsection Single quoted strings (pointmasters) \end_layout \begin_layout Standard Pointmasters are represented as strings deliminted by single quote marks, like this: \end_layout \begin_layout LyX-Code 'abc' \end_layout \begin_layout Standard A single quoted token begins when a single quote mark is encountered outside of any other quoted token (but possibly \begin_inset Quotes eld \end_inset inside \begin_inset Quotes erd \end_inset , \emph on i.e. \emph default , immediately following, an unquoted token). It terminates as soon another single quote mark is encountered. That is, single quoted strings may not contain embedded single quotes, and no mechanism exists to escape this limitation. Otherwise, a single quoted string may contain any legal character for a kinemage file. \end_layout \begin_layout Subsubsection Double quoted strings \end_layout \begin_layout Standard Double quoted strings are defined analogously to single quoted strings, like this: \end_layout \begin_layout LyX-Code \begin_inset Quotes eld \end_inset abc \begin_inset Quotes erd \end_inset \end_layout \begin_layout Standard A double quoted token begins when a double quote mark is encountered outside of any other quoted token (but possibly \begin_inset Quotes eld \end_inset inside \begin_inset Quotes erd \end_inset , \emph on i.e. \emph default , immediately following, an unquoted token). It terminates as soon another double quote mark is encountered. That is, double quoted strings may not contain embedded double quotes, and no mechanism exists to escape this limitation. Otherwise, a double quoted string may contain any legal character for a kinemage file. \end_layout \begin_layout Standard At the moment, no function has been ascribed to double quoted strings in kinemage files. Until a meaning is defined, parsers should ignore them. \end_layout \begin_layout Subsection Unquoted tokens \end_layout \begin_layout Standard Unquoted tokens are somewhat harder to parse than quoted tokens, because their start and end signals are less obvious. Also, the entire token may need to be parsed before one is able to decide what kind of token it is. However, rules for parsing these tokens are well-defined. An unquoted token may begin in any of the following positions: \end_layout \begin_layout Itemize At the beginning of the file \end_layout \begin_layout Itemize Immediately following the end of a quoted token \end_layout \begin_layout Itemize Following one or more whitespace characters, outside of all quoted tokens \end_layout \begin_layout Standard An unquoted token may begin with any non-whitespace character that does not begin a quoted token. An unquoted token is then terminated by the first of these encountered after the initiating character: \end_layout \begin_layout Itemize The end of the file \end_layout \begin_layout Itemize Any whitespace character \end_layout \begin_layout Itemize The equals sign (ASCII 61) \end_layout \begin_layout Itemize Any character that begins a quoted token: \family typewriter { < ( ' \begin_inset Quotes eld \end_inset \end_layout \begin_layout Standard While the initiating character is considered part of the token, the terminating character may or may not be considered part of the token. Whitespace will be discarded, and quoted token initiators will be part of the next (quoted) token. The equals sign will be kept as part of this token. Note that this means tokens ending in the equals sign (called \begin_inset Quotes eld \end_inset Properties \begin_inset Quotes erd \end_inset ; see section \begin_inset LatexCommand \ref{sub:Properties} \end_inset ) are effectively half-quoted: there need not be whitespace after the equals sign to separate this token from the next (unquoted) token. \end_layout \begin_layout Standard The following sections present rules for categorizing unquoted tokens. The rules are in order of precedence---that is, a token must be classified according to the \emph on first \emph default rule it matches from this list. This resolves the ambiguity that would arise if, \emph on e.g. \emph default , a token began with an \begin_inset Quotes eld \end_inset at \begin_inset Quotes erd \end_inset sign (like a keyword) and ended with an equals sign (like a property). \end_layout \begin_layout Subsubsection Keywords \begin_inset LatexCommand \label{sub:Keywords} \end_inset \end_layout \begin_layout Standard Keywords define the major sections of a kinemage. Each keyword begins with the \begin_inset Quotes eld \end_inset at \begin_inset Quotes erd \end_inset sign (64). For example, all of the following are keywords: \end_layout \begin_layout LyX-Code @kinemage @master @vectorlist \end_layout \begin_layout Standard Furthermore, in order to be recognized as a keyword, the \begin_inset Quotes eld \end_inset at \begin_inset Quotes erd \end_inset sign must occur at the beginning-of-line (BOL; see section \begin_inset LatexCommand \ref{sub:Beginning-of-line} \end_inset ). In addition to enforcing good style, this streamlines the processing of plain text segments (see section \begin_inset LatexCommand \ref{sub:Plain-text-blocks} \end_inset ). \end_layout \begin_layout Subsubsection Properties \begin_inset LatexCommand \label{sub:Properties} \end_inset \end_layout \begin_layout Standard Properties are generally used for labeling the meaning of the next token in the file. Each property ends with an equals sign (61). The following are all properties: \end_layout \begin_layout LyX-Code color= master= radius= \end_layout \begin_layout Standard Note that, by definition of an unquoted token, whitespace is forbidden before the equal sign. Although some old kinemages may allow this syntax, it requires the tokenizer to read ahead through an arbitrary amount of whitespace following every unquoted token in order to determine if it is a property or not. This behavior could be undesirable if the kinemage contains sections of plain text (see section \begin_inset LatexCommand \ref{sub:Plain-text-blocks} \end_inset ) or is embedded within some other data format. \end_layout \begin_layout Standard As described above, there may be whitespace after the equals sign, but it is not required, even if the next token is unquoted. This semi-quoted (quoted at the end, but not the beginning) behavior of property tokens is a historical feature of the kinemage format that has been retained for backward compatibility. The preferred format for new kinemages is to have a space following the equals sign. \end_layout \begin_layout Standard There are no low-level syntactic restrictions on the positioning of properties; however, at a higher level, syntax generally requires that each property be followed by a non-keyword, non-property token. For example: \end_layout \begin_layout LyX-Code color= red \end_layout \begin_layout LyX-Code width= 7 \end_layout \begin_layout LyX-Code master={backbone} \end_layout \begin_layout LyX-Code radius=2.5 \end_layout \begin_layout Subsubsection Integers \end_layout \begin_layout Standard Integers are exactly that: text representations of integer numbers. Legal integers are either the single digit zero, or a non-zero digit followed by zero or more additional digits and optionally preceded by a plus or minus sign. The following are legal integers: \end_layout \begin_layout LyX-Code 0 +1 7 -365 2020 \end_layout \begin_layout Standard The following are \emph on not \emph default legal integers: \end_layout \begin_layout LyX-Code -0 007 5+2 \end_layout \begin_layout Standard Tokens that are not legal integers but consist only of digits 0-9 and the plus and minus signs ( \emph on e.g. \emph default , the above) may be interpretted as integers or as literals on a case-by-case basis, at the discretion of the tokenizer. It is recommended that a warning be issued if such a token is encountered. \end_layout \begin_layout Subsubsection Numbers \begin_inset LatexCommand \label{sub:Numbers} \end_inset \end_layout \begin_layout Standard Numbers are a superset of the integers: text representations of real numbers in decimal or scientific notation. Legal numbers follow the pattern \begin_inset Foot status collapsed \begin_layout Standard See \begin_inset LatexCommand \htmlurl{http://www.garshol.priv.no/download/text/bnf.html} \end_inset for an introduction to Extended Backus-Naur Form. \end_layout \end_inset below: \end_layout \begin_layout LyX-Code number ::= integer fraction? exponent? \end_layout \begin_layout LyX-Code fraction ::= '.' digit+ \end_layout \begin_layout LyX-Code exponent ::= ('e' | 'E') integer \end_layout \begin_layout Standard Basically, there must be something before the decimal point, even if it's a zero; there must be something after the decimal point, if there is one; and the exponential part (if present) may be indicated with either a capital or a lowercase E. The following are legal numbers: \end_layout \begin_layout LyX-Code -0.42 1e5 3.14 6.022E+23 \end_layout \begin_layout Standard Tokens that are not legal numbers but consist only of digits 0-9, the letters \family sans \series bold e \family default \series default and \family sans \series bold E \family default \series default , the decimal point, and the plus and minus signs may be interpretted as numbers or as literals on a case-by-case basis, at the discretion of the tokenizer. It is recommended that a warning be issued if such a token is encountered. \end_layout \begin_layout Subsubsection Literals \begin_inset LatexCommand \label{sub:Literals} \end_inset \end_layout \begin_layout Standard \begin_inset Note Comment status collapsed \begin_layout Standard TODO: find a better name for this token class? \end_layout \end_inset \end_layout \begin_layout Standard Legal unquoted tokens that cannot be otherwise classified are lumped together as literals. Note that, by the definitions provided for unquoted tokens, a literal may begin with a numeric digit. This is in contrast to many programming languages. Those defining new semantics for kinemages are strongly advised against defining literals that are not numbers but use only characters allowed in numbers; the interpretation of such tokens is poorly defined (see section \begin_inset LatexCommand \ref{sub:Numbers} \end_inset ). In fact, it is recommended that literals contain only alphanumeric characters and that they start with a letter rather than a number. The following are all legal literals: \end_layout \begin_layout LyX-Code animate 2animate red blue green big_long_literal \end_layout \begin_layout Subsection Plain text blocks \begin_inset LatexCommand \label{sub:Plain-text-blocks} \end_inset \end_layout \begin_layout Standard In addition to the ordinary, tokenizable parts of a kinemage file, sections of text data that do not conform to the rules for tokens may be embedded. This data cannot be processed as usual by the tokenizer for two reasons: \end_layout \begin_layout Enumerate The data is in an unknown format, and whitespace may be significant. \end_layout \begin_layout Enumerate The data may \begin_inset Quotes eld \end_inset open \begin_inset Quotes erd \end_inset a quoted string but never close it, thereby hiding the remaining content of the file. \end_layout \begin_layout Standard \begin_inset Note Comment status collapsed \begin_layout Standard TODO: We need a mechanism for identifying these plain text blocks. \end_layout \end_inset \end_layout \begin_layout Standard An example of this is the plain text write-ups that follow the \family typewriter @text \family default keyword; however, future kinemages could conceivably contain embedded HTML, base-64 encoded binary resources, \emph on etc. \emph default At the moment, there is no purely syntactic means for identifying such regions. However, upon the request of the parser, the tokenizer must be able to deliver the unaltered text content of the file from the current position until reaching a kinemage-format keyword ( \emph on i.e. \emph default , a new line or carriage return followed by an \begin_inset Quotes eld \end_inset at \begin_inset Quotes erd \end_inset symbol). \end_layout \end_body \end_document king-2.21.120420/king/doc/work/king-manual.lyx0000644000000000000000000025414411531212662017244 0ustar rootroot#LyX 1.6.1 created this file. For more info see http://www.lyx.org/ \lyxformat 345 \begin_document \begin_header \textclass report \use_default_options false \language english \inputencoding auto \font_roman default \font_sans default \font_typewriter default \font_default_family default \font_sc false \font_osf false \font_sf_scale 100 \font_tt_scale 100 \graphics default \paperfontsize default \spacing single \use_hyperref false \papersize default \use_geometry false \use_amsmath 1 \use_esint 1 \cite_engine basic \use_bibtopic false \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \papercolumns 1 \papersides 1 \paperpagestyle default \tracking_changes false \output_changes false \author "" \author "" \end_header \begin_body \begin_layout Standard \begin_inset VSpace vfill \end_inset \end_layout \begin_layout Title The \noun on KiNG \noun default manual \end_layout \begin_layout Standard \begin_inset VSpace vfill \end_inset \end_layout \begin_layout Author Ian W. Davis \end_layout \begin_layout Author Vincent B. Chen \end_layout \begin_layout Abstract \noun on KiNG \noun default (Kinemage, Next Generation) is an interactive system for three-dimensional vector graphics. It supports a set of graphics primitives that make it suitable for many types of graphs, plots, and other illustrations; although its first use was to display macromolecular structures for biophysical research. \noun on KiNG \noun default builds on \noun on Mage \noun default , \noun on JavaMage \noun default , and the \begin_inset Quotes eld \end_inset kinemage \begin_inset Quotes erd \end_inset (kinetic image) concept to deliver a full-featured Java application with a user-friendly interface and integrated editing features. It also operates as a Java applet to promote easy access to kinemages from a web browser. \end_layout \begin_layout Standard \begin_inset CommandInset toc LatexCommand tableofcontents \end_inset \end_layout \begin_layout Chapter Getting started \end_layout \begin_layout Section What is a kinemage? \end_layout \begin_layout Standard A kinemage is a \begin_inset Quotes eld \end_inset kinetic image, \begin_inset Quotes erd \end_inset an interactive, three-dimensional illustration. Because kinemages contain simple geometric objects --- points, lines, spheres, \emph on etc. \emph default --- they are suited to a great variety of subjects, from simple sketches to sophisticated plots to detailed schematics of 3-D objects. Their strength is in \emph on selective \emph default presentation of information --- they were originally intended as an alternative to flat, static illustrations in scientific journals. \end_layout \begin_layout Standard In fact, kinemages were first created as a way of visualizing macromolecular structures, particularly x-ray crystal structures of proteins. However, such a kinemage is a \emph on drawing \emph default of a molecule, albeit a 3-D drawing, and not the molecule itself. Thus, the kinemage lacks most of the information in a PDB file, and kinemage display program cannot read PDB files directly. Since their creation, kinemages have been extended to a variety of other fields, from the social sciences to ecology to education. \end_layout \begin_layout Standard The kinemage concept is the brainchild of Drs. David and Jane Richardson at Duke University in Durham, North Carolina, USA. Their website is at \begin_inset Flex URL status collapsed \begin_layout Plain Layout http://kinemage.biochem.duke.edu \end_layout \end_inset . \end_layout \begin_layout Section Starting the KiNG program \end_layout \begin_layout Standard If you're reading this, you may already have KiNG running. In that case, feel free to skip this section. If not, we'll guide you through getting KiNG up and running on your system. \end_layout \begin_layout Subsection Download KiNG \end_layout \begin_layout Standard If you don't already have a copy of KiNG, you can download it from \begin_inset Flex URL status collapsed \begin_layout Plain Layout http://kinemage.biochem.duke.edu \end_layout \end_inset . Even if you have a copy already, you might check periodically for new version that add features and fix bugs. If you run on a Windows or Linux machine and aren't already knowledgeable about Java techonology, we recommend downloading the package that includes a Java Virtual Machine in the bundle. (This isn't an issue for Macintosh owners.) \end_layout \begin_layout Standard If you just want to run KiNG as an applet on MolProbity or some other web page, you can skip this step. You can always download a copy later if you want to run it off-line. \end_layout \begin_layout Subsection Make sure you have Java \end_layout \begin_layout Standard KiNG is written in the Java programming language, and so requires that the Java libraries (version 1.5 or later) be present on your computer in order for it to run. Newer Apple computers (those running Mac OS X) come with Java. Most PCs do not, though recently several manufacturers have agreed to pre-insta ll Java on their new computers. Look for the coffee-cup icon in your Windows task bar or in the Control Panel. \end_layout \begin_layout Standard If you don't have Java, you may have downloaded a copy of KiNG that was bundled with its own installation of Java. If you ran the InstallAnywhere installation program, this is the copy you have; don't worry about downloading and installing another copy of Java. \end_layout \begin_layout Standard If you don't have Java and you didn't download the bundled version of KiNG, point your web browser to \begin_inset Flex URL status collapsed \begin_layout Plain Layout http://java.sun.com/getjava/index.html \end_layout \end_inset . The software is free and available for Windows, Linux, and Solaris computers. We recommend getting the newest version that is available (1.6.0 as of this writing). \end_layout \begin_layout Subsection Launch KiNG \end_layout \begin_layout Standard Launching KiNG is as simple as double clicking on the \begin_inset Quotes eld \end_inset KiNG \begin_inset Quotes erd \end_inset icon. If you didn't download a package with an installer, \emph on etc. \emph default you may need to click on \family typewriter king.jar \family default instead. \end_layout \begin_layout Standard For Unix types who want a shell script, we recommend something like this: \end_layout \begin_layout LyX-Code #!/bin/sh \end_layout \begin_layout LyX-Code exec java -Xms32m -Xmx512m -jar /home/ian/bin/jars/king.jar "$@" \end_layout \begin_layout Standard The \family typewriter -Xms \family default and \family typewriter -Xmx \family default switches control the amount of memory initially allocated to the Java program and the maximum memory it can consume. The default maximum of 64 MB should be enough for almost any kinemage, but a few of the largest require more (hence the \family typewriter -Xmx512m \family default recommendation). \end_layout \begin_layout Standard If you just want to run KiNG as an applet from a web page, you can just visit that web page now. If you don't see the \begin_inset Quotes eld \end_inset Kinglet \begin_inset Quotes erd \end_inset logo after a minute or two, make sure your browser is properly configured to work with Java. How you do this depends on which browser you have; consult its documentation for details. \end_layout \begin_layout Section Opening a kinemage \end_layout \begin_layout Standard If you already have a kinemage you want to look at, this step is simple: just choose \family typewriter Open \family default from the \family typewriter File \family default menu, and select the kinemage you'd like to view. If you don't have anything to look at right now, don't worry! Choose \family typewriter Help | Built-in kinemages \family default , and select one of the provided files to explore. See \begin_inset CommandInset ref LatexCommand vref reference "additional-resources" \end_inset for more places to get kinemages from. \end_layout \begin_layout Section Basic kinemage reading: Using KiNG to view a kinemage \end_layout \begin_layout Subsection Basic interaction \begin_inset CommandInset label LatexCommand label name "basic-interaction" \end_inset \end_layout \begin_layout Subsubsection Moving the kinemage around \end_layout \begin_layout Standard A kinemage is a dynamic, 3-D illustration. The best way to take advantage of that is by rotating it and twisting it around. Just click the mouse near the center of the graphics window and slowly drag right or left, up or down. If you have multiple buttons on your mouse, use the left button or button 1. You can also use the left and right arrow keys for small rotations. If you get lost or disoriented, use the \family typewriter Views \family default menu to get back on familiar ground. \end_layout \begin_layout Subsubsection Identifying points \end_layout \begin_layout Standard By clicking on points with the mouse (left button again), you'll be able to identify them. The label associated with each point will appear in the bottom right of the graphics area. Furthermore, the distance from this point to the last one you clicked will also be displayed. \end_layout \begin_layout Subsubsection Markers \end_layout \begin_layout Standard For keeping track of which point is selected, markers can be displayed. Two markers are displayed normally. The checkbox for markers is just below the graphics area, with the pickcenter checkbox. \end_layout \begin_layout Subsubsection Turning groups on & off \end_layout \begin_layout Standard Most kinemages have many different components to them, grouped together in logical ways. A protein might have one group for each subunit; or one group for mainchain, another for side chains, and yet another for hydrogens. Groups and subgroups are given names and can be made visible or hidden by the viewer --- you might want to see only one subunit, or only the backbone (without sidechains and hydrogens cluttering up the view). \end_layout \begin_layout Standard The groups and subgroups appear in the button pane, to the right of the graphics area. Each one has a button to turn it on or off. Groups that are on (visible) usually have a check mark or an X in there box; a blank button means the group is hidden. Many kinemages start off with some information hidden, to avoid overwhelming the reader. Always check to see if there's more information available than is being displayed! \end_layout \begin_layout Subsubsection Re-centering \end_layout \begin_layout Standard You can make any point in the kinemage be the center. The center point will be in the middle of the graphics area, and the kinemage will rotate about that point. There are several ways to set the center: you can hold the Shift key while you click the point, or use the right mouse button if you have one. You can also press the \family typewriter Pick center \family default button below the graphics area and then click on the desired point. \end_layout \begin_layout Standard Since re-centering brings a point to the center of the screen, using this repeatedly allows one to \begin_inset Quotes eld \end_inset walk \begin_inset Quotes erd \end_inset through a large structure. \end_layout \begin_layout Subsubsection Zooming in and out \end_layout \begin_layout Standard KiNG allows you to zoom in to see small details in a kinemage. Use the \family typewriter Zoom \family default slider, below the graphics area, to control how far you zoom in. You can click the mouse right or left of the knob for small movements or click the knob and drag it for larger ones. A small motion is usually all that's needed. \end_layout \begin_layout Standard For easier access, one can hold Shift and drag (or drag using the right mouse button) in the graphics window. Dragging down zooms in; up zooms out. The up/down arrow keys and mouse wheel (Java 1.4 and later only) also control zooming. \end_layout \begin_layout Subsubsection Clipping \end_layout \begin_layout Standard Objects that are too near the viewer, or too far away, are not displayed; otherwise, zooming in would result in a useless superposition. The depth of the clipping \begin_inset Quotes eld \end_inset slab \begin_inset Quotes erd \end_inset can be adjusted using the slider along the bottom, or by dragging side-to-side with the right mouse button (or with the Shift key held down). \end_layout \begin_layout Subsubsection More modes of interation \end_layout \begin_layout Standard For more ways to explore the kinemage and interact with it, be sure to read about the \family typewriter Navigate \family default tool (see \begin_inset CommandInset ref LatexCommand vref reference "navigate-tool" \end_inset ). \end_layout \begin_layout Subsection Reading the kinemage text \end_layout \begin_layout Standard Exploring on your own is great, but the best guide to a kinemage is its author. Often, he or she includes a short text of a few paragraphs or pages that explains what the kinemage depicts. You can access this text using the \family typewriter Show text \family default button, located just below the graphics area. An equivalent command is also available in the \family typewriter Edit \family default menu. \end_layout \begin_layout Subsection Using different viewpoints \end_layout \begin_layout Standard Most kinemages have one or more \begin_inset Quotes eld \end_inset views \begin_inset Quotes erd \end_inset that were selected by the author to highlight some significant feature. These views are accessible from the \family typewriter Views \family default menu. Just click on one of the named views and the kinemage will \begin_inset Quotes eld \end_inset jump \begin_inset Quotes erd \end_inset to that view. You can then rotate it, zoom in or out, \emph on etc. \emph default to explore further. You can always return to the original view by selecting it again from the menu. \end_layout \begin_layout Standard Kinemages without any predefined views still get an automatic \begin_inset Quotes eld \end_inset overview \begin_inset Quotes erd \end_inset view. This is a useful way to return to a known starting point if you get lost in a complicated structure. \end_layout \begin_layout Subsection Other features \end_layout \begin_layout Standard The kinemage format also allows for flip-book style animations, automatic searching for points based on their name (the label that appears in the lower left when the point is clicked), and much more. There is also a rich selection of features to control exactly how the graphics are rendered. See \begin_inset CommandInset ref LatexCommand vref reference "advanced-kinemage-reading" \end_inset to learn more. \end_layout \begin_layout Chapter Input & Output \end_layout \begin_layout Section Opening a kinemage \end_layout \begin_layout Standard To open a new kinemage, go the the \family typewriter File \family default menu and choose \family typewriter Open \family default . Browse through your file system and find a kinemage file. These files typically end in . \family typewriter kin \family default . The new version-control convention is to name modified files \family typewriter .1.kin \family default , \family typewriter .2.kin \family default , \emph on etc \emph default ., though older kinemages that have been edited may have revisions named . \family typewriter kip \family default , \family typewriter kip1 \family default , \family typewriter kip2 \family default , \emph on etc \emph default . Click the button marked OK and KiNG will begin loading the file. You'll see a progress bar as KiNG loads the contents of the file, and then the first kinemage in that file will be displayed in the graphics area (where the logo used to be). \end_layout \begin_layout Standard You can also drag and drop kinemages into the KiNG graphics window in order to open them, but this feature is not supported for Java versions prior to 1.4. On Mac OS X machines, you can also double-click \family typewriter .kin \family default files in the Finder or drag kinemage files onto the KiNG Dock icon to launch KiNG and open the file. \end_layout \begin_layout Standard Additionally, files can be specified on the command line, as in \family typewriter king \begin_inset space ~ \end_inset -s \begin_inset space ~ \end_inset foo.kin \begin_inset space ~ \end_inset bar.kin \family default , which will load all the kinemages in those two files upon startup. The \family typewriter -s \family default (or \family typewriter -single \family default ) flag is required so that KiNG knows not to merge the two files together. \end_layout \begin_layout Section Working with multiple kinemages \end_layout \begin_layout Standard If your file has more than one kinemage, you can choose which one you want to look at from the drop box on the right, just above the buttons. You can also use \family typewriter File \family default | \family typewriter Open \family default to load additional files; those kinemages will also appear in the drop box. When you're done, use \family typewriter File \family default | \family typewriter Close \family default to get rid of the current kinemage, or use \family typewriter File \family default | \family typewriter Close all \family default to get rid of all the open kinemages. \end_layout \begin_layout Standard If you save your file when more than one kinemage is open, they will \emph on all \emph default be written out to that file, in the order they currently appear in. This is an easy way to create multi-kinemage files, but be careful that you don't save \emph on more \emph default than you intended to! \end_layout \begin_layout Section Appending a kinemage \begin_inset CommandInset label LatexCommand label name "appending-a-kinemage" \end_inset \end_layout \begin_layout Standard Sometimes you want to combine the contents of multiple kinemages. You might want to combine a graph of your latest sales data with some nicely formated and labeled axes you prepared last month. Or maybe you want to combine a ribbon drawing of your favorite protein with a representation of the atomic detail at its active site. In either case, using \family typewriter File | Append \family default will combine the contents of a new file with the contents of the currently displayed kinemage. Be careful --- if the new file contains multiple kinemages, they'll \emph on all \emph default be merged into the current one! \end_layout \begin_layout Standard This behavior can be achieved on the command line by specifying multiple files, as in \family typewriter king \begin_inset space ~ \end_inset -m \begin_inset space ~ \end_inset foo.kin \begin_inset space ~ \end_inset bar.kip1 \family default , which will merge all the kinemages in those two files upon startup. The \family typewriter -m \family default (or \family typewriter -merge \family default ) flag is optional; merging multiple files is the default behavior. \end_layout \begin_layout Section Saving kinemages \end_layout \begin_layout Standard You can save kinemages using the \family typewriter File | Save as \family default menu; these files are typically given the extension \family typewriter .kin \family default . KiNG will try to help you by automatically appending a number to the filename so that your changes don't overwrite your original. The resulting kinemage file will be plain text that you can view and even edit by hand using any text editor (though of course you don't have to!). If you choose to do this and want use a word processor (like Microsoft Word), make sure that you load and save the file in plain text format. \end_layout \begin_layout Standard Note that due to the security restrictions that web browsers place on Java applets, saving will never be possible when KiNG is running inside a web browser. \end_layout \begin_layout Section Printing kinemages \end_layout \begin_layout Standard You can use \family typewriter File | Print \family default to send the image in the graphics area to your printer. The image will fill as much of the page as possible without distorting it. The relative size of the elements will be exactly the same as on screen. Among the consequences of this are that an image printed from a small graphics window will have thicker lines when printed than will the image when printed from a larger graphics window. Don't worry about this too much; just remember printing is WYSIWYG (what-you-se e-is-what-you-get). If it looks right on the screen, it should look right on the paper! Some images will fit better in landscape mode than portrait mode; this decision is left up to the user. \end_layout \begin_layout Standard Printing should work even when KiNG is running in a web browser, although the user will generally be asked for permission first. \end_layout \begin_layout Section Exporting kinemages in other formats \end_layout \begin_layout Standard Several facilities are provided that can help get data out of kinemage format and into other forms, either for making figures for publication or for further processing. Due to security restrictions placed on applets, the export features are unavailable when KiNG is running in a web browser. \end_layout \begin_layout Subsection Exporting bitmapped images (JPEG, PNG) \end_layout \begin_layout Standard The \family typewriter File | Export \family default menu allows one to save the current graphics image as a standard image file. Image export requires that you have Java 1.4 or newer; otherwise, an error message will appear. Several image formats are supported, including JPEG and PNG; the format can be selected from the export dialog box. These images are very useful for creating web pages, PowerPoint-style presentat ions, \emph on etc \emph default . For high-quality publication graphics, however, you'll want to use a vector-bas ed format like PDF. \end_layout \begin_layout Subsection Exporting vector graphics (PDF, PostScript, \emph on etc. \emph default ) \end_layout \begin_layout Standard Rather than sending the image to the printer, it can be captured for inclusion in a publication or later manipulation in a graphics program like Adobe Illustrator. Note that there are several relevant options under the \family typewriter Display \family default menu, particularly \family typewriter White background \family default and \family typewriter Monochrome \family default . \end_layout \begin_layout Standard All platforms can generate PDF files using the \family typewriter File | Export \family default menu. This is the simplest and best option for almost any use. \begin_inset Quotes eld \end_inset PDF \begin_inset Quotes erd \end_inset stands for Portable Document Format, the successor to PostScript as the standard for vector graphics. You can learn more about PDFs at \begin_inset Flex URL status collapsed \begin_layout Plain Layout http://www.adobe.com \end_layout \end_inset . It does require the (free) iText PDF library from \begin_inset Flex URL status collapsed \begin_layout Plain Layout http://www.lowagie.com/iText/ \end_layout \end_inset , which is distributed with KiNG. \end_layout \begin_layout Standard If for some reason you don't want to use PDF export, it is also often possible to hijack the print output into a file. For instance, with Macintosh OS X, both PostScript and PDF output are supported directly from the Print dialog. Under Linux, choosing \family typewriter Print to file \family default from the Print dialog will generate a PostScript file, which can be converted many other formats using \emph on e.g. \emph default Ghostscript tools like \family typewriter ps2pdf \family default (PDF) and \family typewriter ps2epsi \family default (EPS, Encapsulated PostScript). Under Microsoft Windows, things don't seem to be as straightforward, but one possiblity is to install the generic PostScript printer drivers from Adobe and then direct this \begin_inset Quotes eld \end_inset virtual printer \begin_inset Quotes erd \end_inset to FILE (rather than, \emph on e.g. \emph default , LPT1). Your mileage may vary; I'd be interested in hearing about better ways to do this from any Windows experts out there. \end_layout \begin_layout Chapter Advanced kinemage reading \begin_inset CommandInset label LatexCommand label name "advanced-kinemage-reading" \end_inset \end_layout \begin_layout Section Finding points by name \end_layout \begin_layout Standard Every point in a kinemage has an associated identifying label, which appears in the graphics area when the point is clicked on. You can find one or more points by searching through those labels for a word or phrase using the \family typewriter Edit \family default | \family typewriter Find point \family default dialog. When you press \family typewriter Search \family default , KiNG will center the view on the first point that matches your criteria (you may need to zoom in/out to see it appropriately). \family typewriter Edit | Find next \family default will then jump to the next matching point, until all matches are exhausted. \end_layout \begin_layout Subsection Whole word searches \end_layout \begin_layout Standard This is the easiest-to-use of the search options, and usually produces the desired results. You can enter one or more words or numbers in the search field (separated by spaces), and KiNG will find all the points that contain \emph on all \emph default of those words, in any order. A search for \begin_inset Quotes eld \end_inset val 17 \begin_inset Quotes erd \end_inset would find \begin_inset Quotes eld \end_inset 17 A val cb \begin_inset Quotes erd \end_inset but not \begin_inset Quotes eld \end_inset valine 117 \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Subsection Substring searches \end_layout \begin_layout Standard This works like whole word searches, but will even find points that have the search terms embedded in a larger word or number. In this case, a search for \begin_inset Quotes eld \end_inset val 17 \begin_inset Quotes erd \end_inset \emph on would \emph default find \begin_inset Quotes eld \end_inset valine 117 \begin_inset Quotes erd \end_inset . This often produces extraneous results but may occasionally be useful. \end_layout \begin_layout Subsection Glob (simple regex) searches \end_layout \begin_layout Standard This search is done with a simple \begin_inset Quotes eld \end_inset regular expression \begin_inset Quotes erd \end_inset , as is often used for specifying file names on the command line. A star (*) matches any group of zero or more characters, and a question mark (?) matches any single character. Notice that the search is treated as a single term, rather than multiple words --- the pieces must be in the correct order. Thus a search for \begin_inset Quotes eld \end_inset val*17 \begin_inset Quotes erd \end_inset would find \begin_inset Quotes eld \end_inset val17 \begin_inset Quotes erd \end_inset , \begin_inset Quotes eld \end_inset val 17 \begin_inset Quotes erd \end_inset , and \begin_inset Quotes eld \end_inset valine 117 \begin_inset Quotes erd \end_inset , among others; but would \emph on not \emph default find \begin_inset Quotes eld \end_inset 17 val \begin_inset Quotes erd \end_inset . \end_layout \begin_layout Subsection Perl5 regex searches \end_layout \begin_layout Standard This search is like the simple regex search but uses the full syntax of Perl 5 regular expressions, as implemented by the \family typewriter gnu.regexp \family default library. (I'm no expert, but it seems to be a very complete and official implementation. All but the most esoteric features are available.) Regular expressions are a very involved subject, and many books and on-line references are available for the interested reader. \end_layout \begin_layout Subsection Tips for faster searches \end_layout \begin_layout Standard Remember that KiNG searches through \emph on all \emph default visible points to find ones matching your criteria. Turning off ( \emph on i.e. \emph default , making invisible, hiding, unchecking) large groups that you're not interested in will skip searching those groups. Since all the varieties of search are implemented internally with regular expressions, they are relatively computationally expensive. A search through a large kinemage may take several seconds. \end_layout \begin_layout Section Viewing animations \end_layout \begin_layout Standard Kinemages often include animations. An animation in this sense is not a movie, but more like a flip-book, where similar images are aligned and displayed one at a time, in a series of discrete frames. If a kinemage contains animation(s), there will be forward and reverse buttons for the animation located below the checkboxes for groups and masters. \end_layout \begin_layout Section Controlling presentation: The Display menu \end_layout \begin_layout Standard The \family typewriter Display \family default menu offers several options for controlling how the kinemage is rendered. Of particular interest is the \family typewriter Perspective \family default option. By default, KiNG renders objects with orthographic perspective; objects near the viewer are no larger than those far away. This is the preferred mode for viewing macromolecular structures and many 2-D graphs and figures. However, for geometrical objects and other cases where the eye expects perspective, enabling this option will result in a much more natural-looking image. \end_layout \begin_layout Standard There are also several ways of controlling the coloring of the points. Each point may have its own color, and several \begin_inset Quotes eld \end_inset aspects \begin_inset Quotes erd \end_inset as well. For example, a map might be colored by the aspects of temperature, elevation, and annual rainfall; one could then choose which of these colorings to apply. \end_layout \begin_layout Standard The first level of grouping above the individual point is the list; every point belongs to a list. Points that don't have a color specified take their color from the list, but there are times when one might want to suppress the individual colors and color points by the color of the list they belong to. This option is available as well. \end_layout \begin_layout Subsection Stereo \begin_inset CommandInset label LatexCommand label name "using_stereo" \end_inset \end_layout \begin_layout Standard Upon request, KiNG will render the kinemage as a stereoscopic pair of images. The two views are very nearly the same, except that one is slightly rotated with respect to the other. If you can get one eye to look at each image, you can fool yourself into seeing additional depth information. Stereo can be either \begin_inset Quotes eld \end_inset cross-eye \begin_inset Quotes erd \end_inset or \begin_inset Quotes eld \end_inset wall-eye \begin_inset Quotes erd \end_inset ; the former is somewhat easier to learn, but the later is more comfortable for long periods of time. \end_layout \begin_layout Standard To see cross-eye stereo, cross your eyes and then look at the screen without refocusing. You should see 4 identical (though blurry) images. Relax your eyes slightly, and the center two will overlap. If you can focus on this phantom central image, you'll be seeing in stereo. It may help bring the image into sharp focus to rotate the kinemage slighly using the mouse. \end_layout \begin_layout Standard If you've got KiNG set for wall-eye stereo and your eyes set for cross-eye (or vice versa), you will see a stereoscopic image, but the parts that should be in back will be in front, and it will rotate the wrong direction when you move the mouse. Change one or the other to get a more reasonable image. \end_layout \begin_layout Standard Incidentally, although KiNG doesn't support multiple simultaneous views of the same kinemage, you can simulate a pair of orthogonal views by setting the stereo separation to 90 degrees in \family typewriter Edit | Configure KiNG \family default . Of course, the views no longer forms a stero image, but they're useful in another way. Particularly applicable for \begin_inset Quotes eld \end_inset info-vis \begin_inset Quotes erd \end_inset kinemages, you can examine (for instance) the x-y plane and the y-z plane at the same time using this trick. It pairs well with the 90-degree rotations plugin ( \begin_inset CommandInset ref LatexCommand ref reference "rot90-plugin" \end_inset ). \end_layout \begin_layout Subsection OpenGL \end_layout \begin_layout Standard KiNG is capable of using OpenGL rendering commands to take advantage of your graphics hardware and get (hopefully) accelerated graphics performance. You'll need to have an up-to-date version of Java installed, along with the JOGL libraries ( \begin_inset Flex URL status collapsed \begin_layout Plain Layout https://jogl.dev.java.net/ \end_layout \end_inset ). Make sure you get both \family typewriter jogl.jar \family default and the native library or libraries (they end in \family typewriter .dll \family default , \family typewriter .so \family default , or \family typewriter .jnilib \family default ). \emph on 2008 update \emph default : It is no longer necessary to download separate files; everything needed is included in the platform specific downloads at the JOGL site. The download includes directions for installing JOGL (which discourage dropping the JAR files in the extension directories as originally recommended). Essentially, the JOGL JAR and the GLUEGEN_RT JAR need to be added to the classpath in order for JOGL to work. If you downloaded a platform-specific version of KiNG, the necessary libraries may already be included. \end_layout \begin_layout Standard This feature has been tested with various combinations of Java 1.4.2 through Java 1.6.0 and JOGL 1.1 through JOGL 1.1.1. JOGL is still under development, as is this feature, and interacting so directly with the hardware is always risky, so it's possible that OpenGL rendering may hang KiNG on your computer. You've been warned. \end_layout \begin_layout Standard Hopefully, a future version of Java (possibly the 1.6.x series) will use OpenGL behind the scenes for all graphics operations, making KiNG much faster and making this feature obsolete. Until then, this is a work-around for large kinemages where performance is an issue. \end_layout \begin_layout Section Master buttons \end_layout \begin_layout Standard Not all the buttons to the right of the graphics control groups and subgroups of points; some are \begin_inset Quotes eld \end_inset masters. \begin_inset Quotes erd \end_inset The master buttons sit below the others, separated by a spacer. When activated, a master turns on all the groups it controls; when deactivated, it turns them all off. The effects are only momentary; the group can be turned on or off directly regardless of the state of the master(s) that control it. \end_layout \begin_layout Standard A single group can be controlled by multiple masters. Note that the \begin_inset Quotes eld \end_inset off \begin_inset Quotes erd \end_inset state of a master is dominant in this case: a master will always turn off the groups it controls, but will turn them on only if they are not also controlled by another master that is already off. Since the buttons of the individual groups, subgroups, and lists are sometimes hidden, one can generate a variety of patterns by turning the masters on and off in specific patterns. \end_layout \begin_layout Chapter Kinemage authoring: Using KiNG to edit a kinemage \end_layout \begin_layout Standard Kinemage files are stored as human-readable, plain-text files. They're also designed to be easily edited by human beings, using a text editor like Notepad (Windows), TextEdit (Mac), or vi (Unix). You can also use a word processor like Microsoft Word, but you have to be careful to save as plain text (.txt) rather than formatted text (.doc and others). A description of the kinemage file format is distributed with KiNG as a separate document from this manual. \end_layout \begin_layout Section Merging kinemages together \end_layout \begin_layout Standard The most basic sort of editing is to combine two kinemages into one. For this, simply use the \family typewriter File | Append \family default command (see \begin_inset CommandInset ref LatexCommand vref reference "appending-a-kinemage" \end_inset ). \end_layout \begin_layout Section Editing text \end_layout \begin_layout Standard The text of a kinemage is often critical for clarifying and amplifying its meaning. It's analogous to the caption that accompanies a printed figure. You can edit the kinemage text in the same window that you use for reading it (just press the \family typewriter Show text \family default button). \end_layout \begin_layout Section Editing views \end_layout \begin_layout Standard A simple editing tool is \family typewriter Views | Save current view \family default , which records the current orientation and position of the kinemage as a new view in the \family typewriter Views \family default menu. Creating a series of meaningful, clearly labeled views is a great way to make a kinemage more informative. You can delete, rename, and rearrange views using \family typewriter Views | Edit saved views \family default . \end_layout \begin_layout Section The hierarchy editor \end_layout \begin_layout Standard One of the goals of KiNG is to enable simple, visual editing of most parts of a kinemage. Many of the editing commands are activated using a tree-like display of the hierarchical kinemage structure, which will resemble the layout of buttons. \end_layout \begin_layout Standard The structure of the kinemage can be rearranged by cutting, copying, and pasting elements; creating new elements and deleting unneeded ones; and reordering elements (using the \family typewriter Up \family default and \family typewriter Down \family default commands). Play with these commands, and their operation will soon become obvious. Elements can even be cut out of one kinemage and pasted into another! \end_layout \begin_layout Standard Also, the properties of individual elements can be adjusted, which allows them to be renamed. What other properties are available depends on the level of the hierarchy (kinemage, group, subgroup, or list). Each element can also be toggled on and off, even if it doesn't have a button visible in the button pane. \end_layout \begin_layout Standard Using the hierarchy editor effectively depends on a decent understanding of the kinemage format. If you're unfamiliar with kinemages, reading the kinemage format reference may be very helpful to you. \end_layout \begin_layout Chapter The Tools \end_layout \begin_layout Section Understanding the Tools and Plug-ins \end_layout \begin_layout Standard The \family typewriter Tools \family default menu has a variety of tools and plug-ins for interacting with the kinemage. Many of these are highly domain-specific --- tailored to doing structural biology, for example. Each tool \begin_inset Quotes eld \end_inset takes over \begin_inset Quotes erd \end_inset the mouse, assigning specific meanings to the various kinds of clicks and drags. Normally, the familiar Navigate tool is active, so mouse motions result in the sort of rotations, pans, and zooms that most users are accustomed to. \end_layout \begin_layout Standard Plug-ins, on the other hand, just offer additional functionality that doesn't change what the mouse does. Because of this, you can have several plug-ins active at once, but only one tool. \end_layout \begin_layout Standard Some special-purpose tools and plugins have been developed by other people and ship separately from KiNG. Installing these additional tools and plugins for KiNG is easy, though. Just take all plugin files that end with \family typewriter .jar \family default ( \emph on e.g. \emph default , \family typewriter chiropraxis.jar \family default , \family typewriter pyking.jar \family default ) and put them in the \family typewriter plugins/ \family default folder that's part of your KiNG distribution. There will probably be a few JAR files in there already. Then just close KiNG and restart it to load the new tools and plugins. Note that these will \emph on not \emph default be available when running KiNG as an applet. \end_layout \begin_layout Standard The tools menu also has some other options that are related to how mouse clicks and drags are interpretted, which are discussed below. The tools and plugins listed in the menu can be rearranged, grouped into submenus, or hidden entirely by using the \family typewriter Tools | Customize \family default dialog box, which is also accessible from \family typewriter Edit | Configure KiNG \family default . \end_layout \begin_layout Subsection Extra measurements \end_layout \begin_layout Standard In addition to tracking the distance between the last two points, clicking on points to identify them can track the angle between the last three points and the dihedral angle between the last four. When these measurements are active, the \family typewriter Markers \family default option will display four markers instead of two. \end_layout \begin_layout Subsection XYZ coordinates \end_layout \begin_layout Standard Likewise, KiNG can display the original, unrotated coordinates of the point. This is sometimes helpful when the kinemage is a graph or plot of some data, and the position has some absolute meaning. The display of this information can be enabled in the \family typewriter Tools \family default menu. \end_layout \begin_layout Subsection Pick objects \end_layout \begin_layout Standard Traditionally, one can only \begin_inset Quotes eld \end_inset pick \begin_inset Quotes erd \end_inset points in a kinemage. Enabling this option allows KiNG to recognize mouse clicks that hit the actual lines drawn between points and the surfaces of triangles. In each case, the result is equivalent to clicking on the point that determines the attributes (color, line width, etc.) of that graphics object. \end_layout \begin_layout Section Using KiNG with a multi-button mouse \end_layout \begin_layout Standard In KiNG, even a one-button mouse is sufficient to access all of the available functions. However, it has also been designed to take full advantage of a three-button wheel mouse. The primary function of every tool is accessed by clicking or dragging with the left (or only) mouse button. This button is referred to as \begin_inset Quotes eld \end_inset Normal \begin_inset Quotes erd \end_inset in the command reference charts. \end_layout \begin_layout Standard Other functions can be accessed either by holding down keyboard keys at the same time, or by using one of the other mouse buttons. Holding the Shift key is equivalent to using the right mouse button, and holding the Control key (often written Ctrl) is equivalent to using the middle mouse button. A few tools assign some function to a mouse action with both the Shift and Control keys held down. In this case, you can get the same effect when dragging by depressing both the left and right mouse button. Because of the difficulty of clicking two buttons at once, however, this shortcut does not apply to Shift+Ctrl+Click. \end_layout \begin_layout Standard At the present time, the Shift and Control keys do not work properly in Java on Mac OS X. When using a one-button mouse with OS X, you should use the Command key (a.k.a. Open Apple) instead of Shift to get the same effect as the right mouse button, and you should use the Option key (a.k.a. Alt) instead of Control to get the same effect as the middle mouse button. Hopefully this will be fixed in OS X 10.4 / Java 1.5. \end_layout \begin_layout Standard Some tools also use the up & down arrow keys on the keyboard; these have the same effect as using the scroll wheel of a wheel mouse. Once again, these may be combined with the Shift and/or Control keys to give access to more functions. Note that the mouse wheel is never active when running in a Java 1.3.x virtual machine; Java 1.4 or later is needed to take advantage of this control. \end_layout \begin_layout Section Navigate: Exploring in 3-D \begin_inset CommandInset label LatexCommand label name "navigate-tool" \end_inset \end_layout \begin_layout Standard The Navigate tool encompasses all the usual modes of interacting with a kinemage. This is the tool that is active when KiNG is launched, and is probably the only tool many people will ever use. See \begin_inset CommandInset ref LatexCommand vref reference "basic-interaction" \end_inset for an introduction to using the Navigate tool to get around a kinemage. There are also a few more advanced modes of movement which are described below. \end_layout \begin_layout Subsection Z-rotation ( \begin_inset Quotes eld \end_inset pinwheel \begin_inset Quotes erd \end_inset ) \end_layout \begin_layout Standard Clicking and dragging (with the left mouse button) near the top of the graphics area will cause the kinemage to spin around the Z axis like a pinwheel, rather than the more conventional sort of rotation. This is sometimes useful for putting something right side up. \end_layout \begin_layout Subsection Translation ( \begin_inset Quotes eld \end_inset flatland \begin_inset Quotes erd \end_inset ) \end_layout \begin_layout Standard Holding Control while dragging (or dragging with the middle mouse button) allows one to slide the kinemage around in the plane of the screen. Dragging at the top of the screen, as for z-rotation, slides the kinemage in and out of the plane of the screen. (Note: enabling perspective in the \family typewriter Diplay \family default menu is \emph on very \emph default helpful when translating in and out of the plane of the screen.) This sort of motion is sometimes called \begin_inset Quotes eld \end_inset panning \begin_inset Quotes erd \end_inset or \begin_inset Quotes eld \end_inset flatland, \begin_inset Quotes erd \end_inset and can be made the default mode of movement by selecting \family typewriter Tools | Flatland \family default . \end_layout \begin_layout Subsection Command reference \end_layout \begin_layout Standard \noindent \align center \begin_inset Tabular \begin_inset Text \begin_layout Plain Layout Mouse clicks \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Normal \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Mark and identify point; make measurement (pick) \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Shift \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Center on selected point (pickcenter) \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Ctrl \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout - \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Shift+Ctrl \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout - \end_layout \end_inset \end_inset \end_layout \begin_layout Standard \noindent \align center \begin_inset Tabular \begin_inset Text \begin_layout Plain Layout Mouse drags \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Normal \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Rotate around X and Y axes; Z-rotate (pinwheel) near top of screen \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Shift \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Adjust zoom (up/down); Adjust clipping (left/right) \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Ctrl \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Translate in X-Y plane (flatland); Z-translate near top of screen \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Shift+Ctrl \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Rotate around Y axis only \end_layout \end_inset \end_inset \end_layout \begin_layout Standard \noindent \align center \begin_inset Tabular \begin_inset Text \begin_layout Plain Layout Mouse wheel / Up & Down arrow keys \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Normal \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Adjust zoom \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Shift \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Adjust clipping \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Ctrl \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout - \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Shift+Ctrl \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout - \end_layout \end_inset \end_inset \end_layout \begin_layout Section Draw New: Reworking the kinemage \begin_inset CommandInset label LatexCommand label name "drawnew-tool" \end_inset \end_layout \begin_layout Standard The Draw New tool provides a variety of simple tools for creating new objects in the kinemage or removing existing ones on a point-by-point basis. \end_layout \begin_layout Description Edit \begin_inset space ~ \end_inset list \begin_inset space ~ \end_inset props Picking a point opens the editing window for that point's list, where you can set color, width, radius, \emph on etc \emph default . You will need to activate the \family typewriter Tools | Superpick \family default option to edit unpickable points. \end_layout \begin_layout Description Edit \begin_inset space ~ \end_inset point \begin_inset space ~ \end_inset props Picking a point opens the editing window for that point, where you can set color, position, point ID, \emph on etc \emph default . You will need to activate the \family typewriter Tools | Superpick \family default option to edit unpickable points. \end_layout \begin_layout Description Move \begin_inset space ~ \end_inset points Allows you to click on individual points and drag them around to new positions. Dragging them with the mouse moves them in the plane of the screen. Using the mouse wheel or up & down arrow keys moves them in and out (this is easier to see with Perspective enabled and Stereo on). A kinemage may have several \begin_inset Quotes eld \end_inset points \begin_inset Quotes erd \end_inset at the same location in 3-D. Under normal conditions, this tool will move them all together, so that lines stay connected and everything behaves just as you would expect. However, you can also use Ctrl+Drag to pick apart overlapped points and separate them from each other. You will need to activate the \family typewriter Tools | Superpick \family default option to move unpickable points. \end_layout \begin_layout Description Draw \begin_inset space ~ \end_inset line \begin_inset space ~ \end_inset segments Simply draws a line between the first point picked and the second. Every pair of picks forms a new line. Lines can be shortened from their natural length (or lengthened, using negative numbers), which is sometimes useful for making illustrations. \end_layout \begin_layout Description Draw \begin_inset space ~ \end_inset dotted \begin_inset space ~ \end_inset lines Like drawing ordinary lines, except a string of dots is created instead of a single line. The number of dots is configurable. This can serve as a \begin_inset Quotes eld \end_inset template \begin_inset Quotes erd \end_inset for constructing more complex dot-dash patterns when used with line drawing and prune. \end_layout \begin_layout Description Draw \begin_inset space ~ \end_inset curved \begin_inset space ~ \end_inset arc Draws an arc from the second point picked to the third one, with the arc curving toward the first point picked. The user specifies how many degrees out of a circle will be used to create the arc, so small numbers give flat arcs and large numbers give exagerated ones. The arc can also be shortened by a few degrees so it doesn't quite touch its endpoints, and a four-pronged arrowhead can be added. \end_layout \begin_layout Description Draw \begin_inset space ~ \end_inset balls Places a small ball at each point picked with the mouse. \end_layout \begin_layout Description Draw \begin_inset space ~ \end_inset labels Creates a label at the picked point, with its text taken from the picked point's ID. The label text can be changed using Edit Properties. \end_layout \begin_layout Description Draw \begin_inset space ~ \end_inset dots Creates a dot at each point picked with the mouse. \end_layout \begin_layout Description Draw \begin_inset space ~ \end_inset triangles Draws a triangle for each set of three points picked. Triangles can also be shrunk (values between 0 and 1) or grown (values greater than 1). A value of zero will make an infinitely small triangle; a value of one will give a triangle that just touches the three points. \end_layout \begin_layout Description Prune \begin_inset space ~ \end_inset one \begin_inset space ~ \end_inset point Removes the single point picked with the mouse. In the case of polylines and triangle strips, it will stop things from being drawn that depend on the removed point. That is, lines drawn to and from the point will be removed, and all triangles involving the point will be removed. Sometimes kinemages have multiple points that overlap in the same spatial location, so it may take multiple clicks to remove all the objects at a particular point in space. \end_layout \begin_layout Description Punch \begin_inset space ~ \end_inset a \begin_inset space ~ \end_inset polyline Removes all the line segments in a particular \emph on polyline \emph default (a series of lines drawn head to tail). This is sometimes useful with vectors and triangles; for other things, it behaves like prune. \end_layout \begin_layout Description Auger \begin_inset space ~ \end_inset a \begin_inset space ~ \end_inset region Removes all points that fall under the giant eraser. The eraser is drawn as a large circle that follows the mouse around the graphics area. Auger operations cannot be undone, so save your file first and click carefully. \end_layout \begin_layout Description Spherical \begin_inset space ~ \end_inset crop Removes all points that fall more than a specified distance away from the picked point. Only visible points are cropped. Crop operations cannot be undone, so save your file first and click carefully. \end_layout \begin_layout Description New \begin_inset space ~ \end_inset subgroup Kinemage elements created by each drawing option are placed into their own list, and all of those lists are placed in one subgroup under the \begin_inset Quotes eld \end_inset New group \begin_inset Quotes erd \end_inset group created by this tool. Creating a new subgroup starts a fresh list for each option above. This is a good way to separate out the different objects you're drawing. New subgroup can't be undone, but it's pretty harmless. \end_layout \begin_layout Description Undo The Undo button undoes the last drawing action, with a few exceptions (mentioned above). Undo depth is unlimited, subject to memory constraints. Thus, for kinemages that aren't too large you can often undo all the drawing operations you've performed since loading the kinemage. \end_layout \begin_layout Section Electron Density: Visualizing maps \begin_inset CommandInset label LatexCommand label name "edmap-plugin" \end_inset \end_layout \begin_layout Standard This plug-in is for viewing electron density maps while exploring kinemages of crystal structures. (If that doesn't mean anything to you, then you probably don't need this plugin.) \end_layout \begin_layout Standard Choose \family typewriter Open \family default from the \family typewriter Tools \family default menu in order to open a map file. Supported formats include X-PLOR (ASCII, not binary), O (DSN6 or Brix), and CCP4 (mode 2, the only one in common use). \end_layout \begin_layout Standard Each map opens a new control window, which allows adjustment of its extent, color, and level. The segment of map that is visible at any given time is centered in the current view; when the view changes, the portion that is visible will automatic ally be updated. \end_layout \begin_layout Standard Any dynamic segment of map can be "captured" as part of a static kinemage; just use the \family typewriter Export \family default button to make the currently visible map segment part of the current kinemage. When you've finished with a map, be sure to \family typewriter Discard \family default it to free up the memory it consumed. \end_layout \begin_layout Standard If you don't have an electron density map for the structure you're interested in, you can try looking at the Uppsala Electron Density Server ( \begin_inset Flex URL status collapsed \begin_layout Plain Layout http://fsrv1.bmc.uu.se/eds/ \end_layout \end_inset ). They offer standard maps for many of the structures deposited in the Protein Data Bank. \end_layout \begin_layout Standard Maps can't be loaded from the local filesystem when KiNG is running as an applet due to security restrictions. However, you can use the \family typewriter XMAP \family default or \family typewriter OMAP \family default parameter along with the \family typewriter \family default tag to load a (single) map from a URL. For example: \end_layout \begin_layout LyX-Code \end_layout \begin_layout Standard You can also use the \family typewriter EDMAPBASE \family default and \family typewriter EDMAPLIST \family default parameters to allow the user to select and load a map. \family typewriter EDMAPBASE \family default specifies a path to the maps relative to the current document base URL. \family typewriter EDMAPLIST \family default is a space-separated list of filenames that can be loaded from that path. Users can also enter and modify URLs directly, though obviously this isn't very convenient. \end_layout \begin_layout Section Update KiNG: Upgrading without the hassle \begin_inset CommandInset label LatexCommand label name "update-plugin" \end_inset \end_layout \begin_layout Standard The Update KiNG plugin allows you to quickly and easily update KiNG to the latest version published on the Kinemage website (kinemage.biochem.duke.edu). After you confirm your intentions, KiNG will begin downloading the new version. If the download proceeds too slowly, you can cancel with no changes to KiNG. Once complete, the downloaded version will be unpacked in the same place as your current installed version of KiNG, and the existing version will be overwritten. You can then quit KiNG and restart to take advantage of new features and capabilities. \end_layout \begin_layout Standard The Update plugin has been tested on a variety of platforms under a variety of conditions, but there is always a chance that it won't work quite right on \emph on your \emph default computer. The chance is greater if you created a non-standard custom installation from the JAR files rather than using the pre-packaged platform-specific installer. If KiNG fails to start after the update, you may have to remove it and then download and install a clean copy by hand. \end_layout \begin_layout Standard There are certain things the automatic updater \emph on can't \emph default update, like the bundled binary programs ( \family typewriter probe \family default , \emph on etc \emph default .) or the displayed version number of the Mac application bundle. For this reason, you may want to periodically remove the existing installation completely and reinstall from scratch. \end_layout \begin_layout Chapter Configuring KiNG \end_layout \begin_layout Standard By choosing \family typewriter Edit | Configure KiNG \family default , one can adjust several aspects of KiNG's behavior and appearance, such as font sizes, stereo settings, and whether or not certain warnings are issued. The configuration dialog also allows for reorganizing the \family typewriter Tools \family default menu to suit your own work habits. Preferrences may be saved to disk, where they are stored in a simple text file named \family typewriter .king_prefs \family default in the user's home directory. There may be some settings accessible only through this file; that is, they cannot be edited from the graphical interface. Nonetheless, pressing \family typewriter Reset to defaults \family default will restore them to their standard values. \end_layout \begin_layout Standard Note that due to security restrictions, configurations cannot be saved when KiNG is running as an applet. However, the web page creator may provide a custom configuration file in the same format as the one saved by KiNG the application, thereby altering the default behavior for all visitors to the website. If you create a preferences file named \family typewriter MyKingPrefs.txt \family default and place it in the same directory as \family typewriter king.jar \family default and your HTML file, add something like this to the \family typewriter APPLET \family default tag of your webpage: \end_layout \begin_layout LyX-Code \end_layout \begin_layout Chapter Launching KiNG \end_layout \begin_layout Standard KiNG runs both as a stand-alone application, and as an applet that can be included in web pages. In any case, KiNG requires a Java Virtual Machine (JVM), version 1.5 or higher. You can get Java from \begin_inset Flex URL status collapsed \begin_layout Plain Layout http://java.sun.com \end_layout \end_inset . \end_layout \begin_layout Section Running KiNG as an application \end_layout \begin_layout Standard How you launch the KiNG application will depend on what operating system (Windows, Mac OS X, Linux, \emph on etc \emph default .) you're using. With Windows and the Mac, you can usually just double-click on the \family typewriter king.jar \family default file to start KiNG. \end_layout \begin_layout Standard On all operating systems, you can type \end_layout \begin_layout LyX-Code java -jar king.jar [-merge | -single] [file1 file2 ...] \end_layout \begin_layout Standard All the files listed on the command line will be merged together into one kinemage, unless the \family typewriter -s \family default flag is included, in which case all the files will be opened as separate kinemages. \end_layout \begin_layout Standard As of KiNG 2.16, the files KiNG can read in from the command line include kinemages, PDB, mmCIF, and electron density maps. For the structure files, QuickKin is used to generate quick-browsing ribbon+sti ck representations of the structures. \end_layout \begin_layout Section Making KiNG an applet in a web page \end_layout \begin_layout Standard KiNG can also be included as a web page applet. The following HTML code is a simple example that uses the tag, which will work with browsers using a recent JVM. Older browsers may need or tags; more information on this is available from Sun Microsystems, Inc. \end_layout \begin_layout LyX-Code \end_layout \begin_layout LyX-Code \end_layout \begin_layout LyX-Code \end_layout \begin_layout Standard Just put all the jar files, including king.jar, in the same directory as the HTML file. Users who visit the page will see a 300x150 KiNG logo in the web page, along with a floating KiNG window that looks very much like the stand-alone application. However, due to security restrictions imposed by the browser environment, some functions ( \emph on e.g. \emph default , saving files) will be disabled. \end_layout \begin_layout Standard Note that the \family typewriter code \family default property really must have the value \family typewriter king/Kinglet.class \family default , \emph on even though \emph default \family typewriter \emph on king.jar \family default \emph default \emph on is not in a sub-directory called \emph default \family typewriter \emph on king/ \family default \emph default . This is the most common problem that people have when trying to run KiNG as an applet. If you did place \family typewriter king.jar \family default somewhere else, that path should precede the jar file name in the \family typewriter archive \family default property instead. \end_layout \begin_layout Standard If you want to include additional jar files for plugins and tools, you need to list those in the \family typewriter archive \family default field, after \family typewriter king.jar \family default , separated by commas. For example: \end_layout \begin_layout LyX-Code \end_layout \begin_layout Standard It is possible to run KiNG in two other applet modes to achieve a slightly different effect. First, the large KiNG logo can be replaced with a small one that serves as a launcher button. Thus, loading the main window is defered until the user clicks the button, at which time the main window appears and the kinemage is loaded. Below is sample HTML for this effect. Note the smaller width and height, to account for the small size of the button. \end_layout \begin_layout LyX-Code \end_layout \begin_layout LyX-Code \end_layout \begin_layout LyX-Code \end_layout \begin_layout LyX-Code \end_layout \begin_layout Standard If you would like a custom image for the launcher, specify its URL with the \family typewriter launcherImage \family default parameter. You may need to change the applet width/height to match. If no image is specified, the default one will be used. \end_layout \begin_layout Standard Second, the applet can be embedded in the web page (rather than floating in its own window), by placing this line inside the tags instead: \end_layout \begin_layout LyX-Code \end_layout \begin_layout Standard One also probably wants to specify a larger width and/or height, possibly as a fraction of the page size ( \emph on e.g. \emph default 95%). Be warned that using KiNG this way may not work well in some browsers; test your pages thoroughly. \end_layout \begin_layout Standard Normally, a KiNG applet displays only the kinemage specified in its \family typewriter kinSource \family default parameter. However, you can also use the \family typewriter kinfileBase \family default and \family typewriter kinfileList \family default parameters to allow the user to open and/or append additional kinemages from a pre-specified set. \family typewriter kinfileBase \family default specifies a path to the maps relative to the current document base URL. \family typewriter kinfileList \family default is a space-separated list of filenames that can be loaded from that path. Users can also enter and modify URLs directly, though obviously this isn't very convenient. \end_layout \begin_layout Standard The KiNG applet also supports a \family typewriter kinfileSaveHandler \family default parameter, which is the URL of a CGI script that can accept HTTP POST kinemage output. On a properly configured webserver, this allows users of the KiNG applet to save their modified kinemages directly to the server! However, this is definitely a custom programming job on the server side and so is not an option for most \begin_inset Quotes eld \end_inset normal \begin_inset Quotes erd \end_inset uses of the KiNG applet. \end_layout \begin_layout Standard Some Tools and Plugins may define their own tags, which will be described in their documentation. \end_layout \begin_layout Standard As of KiNG version 2.16, the KiNG applet can read PDB or CIF files as well as kinemages. In order to supply a PDB or CIF file for KiNG, instead of the \family typewriter kinSource \family default parameter, use \family typewriter pdbSource \family default or \family typewriter pdbFile \family default . This feature uses QuickKin to generate a quick ribbons and stick representation of the input file. \end_layout \begin_layout Chapter Additional resources \begin_inset CommandInset label LatexCommand label name "additional-resources" \end_inset \end_layout \begin_layout Section Included manuals \end_layout \begin_layout Standard In addition to this User's Guide, KiNG may be accompanied by a guide to the kinemage file format. Kinemage files are simple text files, so that anyone can create kinemage illustrations by hand. This is especially important to fields where no automated tools for kinemage creation yet exist. \end_layout \begin_layout Section Included kinemages \end_layout \begin_layout Standard Under the \family typewriter Help \family default menu, KiNG has several built-in kinemages that demonstrate various capabilities of the graphics system. The palette is particularly useful to kinemage authors when they are designing color schemes. \end_layout \begin_layout Section External documentation \end_layout \begin_layout Standard The best resource for learning more about kinemages is the Richardson lab website, \begin_inset Flex URL status collapsed \begin_layout Plain Layout http://kinemage.biochem.duke.edu \end_layout \end_inset . Many other resources exist; hopefully, they will be documented here in the future. \end_layout \begin_layout Section Bug reporting and contact info \end_layout \begin_layout Standard Ian Davis, the original author of KiNG, has graduated. KiNG is currently being maintained by Vincent Chen, who may be reached via email at \begin_inset Flex URL status open \begin_layout Plain Layout mailto:vbc3@duke.edu \end_layout \end_inset . \emph on Please \emph default , do not hesistate to report bugs and problems with KiNG --- your input can only improve the program. \end_layout \begin_layout Chapter Copyright & acknowledgments \end_layout \begin_layout Section Copyright \end_layout \begin_layout Standard The KiNG program and all its associated original resources and documentation are copyright (C) 2002-2009 by Ian W. Davis & Vincent B. Chen. KiNG makes use of the gnu.regexp library, which is copyright (C) by Wes Biggs, and of icons copyright (C) by Sun Microsystems provided for use with Java programs. It is also capable of using the iText library for generating PDF files, and the JOGL library for OpenGL rendering. \end_layout \begin_layout Section Licenses \end_layout \begin_layout Standard KiNG is free software available under the terms of its own BSD-style license (see \begin_inset CommandInset ref LatexCommand vref reference "KiNG-License" \end_inset ). The source code and new versions can be downloaded from the Richardson lab website, \begin_inset Flex URL status collapsed \begin_layout Plain Layout http://kinemage.biochem.duke.edu \end_layout \end_inset . The gnu.regexp library is covered by the GNU Lesser General Public License (LGPL). In accordance with that license, the full source of the gnu.regexp library is available from its website at \begin_inset Flex URL status collapsed \begin_layout Plain Layout http://www.cacas.org/java/gnu/regexp/ \end_layout \end_inset . The iText library is dual-licensed under the LGPL and the Mozilla Public License (MPL). iText is available from \begin_inset Flex URL status collapsed \begin_layout Plain Layout http://www.lowagie.com/iText/ \end_layout \end_inset . JOGL is available under a BSD-style license from \begin_inset Flex URL status collapsed \begin_layout Plain Layout https://jogl.dev.java.net/ \end_layout \end_inset . Many of the icons are the property of Sun Microsystems and have their own license; they are available from \begin_inset Flex URL status collapsed \begin_layout Plain Layout http://developer.java.sun.com/developer/techDocs/hi/repository/ \end_layout \end_inset . \end_layout \begin_layout Standard All license documents are provided in the downloaded KiNG bundles and are found in the \family typewriter doc/ \family default directory. Additionally, the KiNG license appears in the Appendix (see \begin_inset CommandInset ref LatexCommand vref reference "KiNG-License" \end_inset ). \end_layout \begin_layout Section Acknowledgments \end_layout \begin_layout Standard I owe an enormous debt of gratitude to many, many people for making this program possible. First and foremost, I thank David and Jane Richardson, who are my bosses and mentors, and who developed the kinemage concept, the file format, and most of the features found in KiNG --- my contribution was only the Java implementation. Second, I thank Vincent Chen for his ongoing contributions to KiNG; he has developed many useful plugins and has made significant contributions to the core. I am also grateful to the other members of the Richardson lab, who have supported and encouraged me in developing KiNG, providing invaluable insight into how to improve the program. Of course, this work would not have been possible without support from the National Institutes of Health and the Howard Hughes Medical Institute. \end_layout \begin_layout Standard KiNG is free software built on free software. I can't hope to acknowledge all the authors of all the software that has been used to create KiNG, but I can mention a few of the most prominent: Sun Microsystems, the creators of the Java language and libraries; the LyX document processor, used for writing the documentation; jEdit, a fantastic programmer's text editor written entirely in Java; and the entire Linux movement, for providing a real alternative to comercial operating systems. I have also taken advantage of a number of excellent free Java libraries, which are described above. \end_layout \begin_layout Section Revision status \end_layout \begin_layout Standard This manual was last updated 29 August 2009 by VBC for KiNG version 2.17. \end_layout \begin_layout Chapter \start_of_appendix KiNG License \begin_inset CommandInset label LatexCommand label name "KiNG-License" \end_inset \end_layout \begin_layout Section What this license applies to \end_layout \begin_layout Standard \emph on This license applies to everything in this project that is the original work of the copyright holder(s) and contributor(s), including but not limited to the source code, binary executables, artwork, and documentation. This distribution includes certain third-party libraries and resources which are not covered by this license, and which are governed by their own license terms. See documentation for more details. \end_layout \begin_layout Section The KiNG License \end_layout \begin_layout Standard Copyright (C) 2002-2009 Ian W. Davis & Vincent B. Chen. All rights reserved. \end_layout \begin_layout Standard Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: \end_layout \begin_layout Enumerate Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. \end_layout \begin_layout Enumerate 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. \end_layout \begin_layout Enumerate The end-user documentation included with the redistribution, if any, must include the following acknowledgment: \end_layout \begin_deeper \begin_layout Standard \emph on "This product includes software developed in the Richardon lab at Duke Universit y (http://kinemage.biochem.duke.edu)." \end_layout \begin_layout Standard Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear. \end_layout \end_deeper \begin_layout Enumerate The name of the copyright holder, the names of the contributors, and the names "KiNG", "Kinemage, Next Generation", and "Mage" must not be used to endorse or promote products derived from this software without prior written permission. \end_layout \begin_layout Enumerate Products derived from this software may not be called "KiNG", nor may "KiNG" appear in their name, without prior written permission. \end_layout \begin_layout Standard THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED 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 HOLDERS 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. \end_layout \begin_layout Section Where this license came from \end_layout \begin_layout Standard This license is based on the BSD and Apache licenses. See \begin_inset Flex URL status collapsed \begin_layout Plain Layout http://www.opensource.org/ \end_layout \end_inset for more details on these and other licenses. \end_layout \end_body \end_document king-2.21.120420/king/doc/work/king-manual.pdf0000644000000000000000000074036211531212662017203 0ustar rootroot%PDF-1.4 % 3 0 obj << /Length 145 /Filter /FlateDecode >> stream xU B!W1KQ,hqT:Ayӥd#h: ;L<}^W~.}] WN:`վj彘Sy> endobj 1 0 obj << /Font << /F16 4 0 R /F17 5 0 R /F18 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 10 0 obj << /Length 127 /Filter /FlateDecode >> stream x-0 E|d8i``@ Kt9́ [Đ$#j}u>`/wgzOEV<:n{v9 Z;?W" endstream endobj 9 0 obj << /Type /Page /Contents 10 0 R /Resources 8 0 R /MediaBox [0 0 612 792] /Parent 7 0 R >> endobj 8 0 obj << /Font << /F15 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 14 0 obj << /Length 721 /Filter /FlateDecode >> stream x}TMo0 W(gib-Sn-B˰v#Mkl/O&ϻ_Ei[* h<*3Mw~߾'ȣD A?y2=ee'uu'(أݩI-k;SL; 9s-uro]URQn'y1$ snil?rZfkcVlaѮ1 |bq)zEͤ&[F"D{Fu @u٪knvr[`J.Z o)_vym]\V*kA]uZ32-˘/[1ZXKQVxaljj(a4FCDlش<ϷĨ4coN}рz6`NRjXTB[׈T"|4Jbkq e l8x~ ):`ޖdXzs1N_`ZbNkm@m@4Βeê!< ( > d>P8^;tN9w>7 @E]+D)_, u endstream endobj 13 0 obj << /Type /Page /Contents 14 0 R /Resources 12 0 R /MediaBox [0 0 612 792] /Parent 7 0 R >> endobj 12 0 obj << /Font << /F28 15 0 R /F29 16 0 R /F15 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 19 0 obj << /Length 1077 /Filter /FlateDecode >> stream xݘKo8:PKm#AEmڲ-$ZNRDvhJ6=߼F/ 0M(MDH"  #4M/번 -ɋ#,(9. b/bYxu^̢H.kmlŘr"CNAw (JcRs]ۣ [5,4ȋlgY—QL ( KY~)N=9)R}x [}~r6s 8bx ,[7þ׫b Bל N;/!zZfm[ta%X`iOSOJ/mNؙLO&X_gi|n3uҽʳ ]v ufmu{D 2ِbMJ7cHڔ&Z*oN&q5 d|;ɜNP"<*K U6.JڃJC.E}~Z@d.뼺ֹ(Q  dTwt٢>F0q;Q~~\r/r&xy3;Ah"˷qs}ݹyi_V NKPݶǿ槁Aw.nb ݆{_S?w۳ ~ /]w ҐWH7K<GD @ֳ7Gݲ>Eppa&<Vz 70ѫ~păX!B*޾;8H endstream endobj 18 0 obj << /Type /Page /Contents 19 0 R /Resources 17 0 R /MediaBox [0 0 612 792] /Parent 7 0 R >> endobj 17 0 obj << /Font << /F31 20 0 R /F28 15 0 R /F15 11 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 24 0 obj << /Length 1394 /Filter /FlateDecode >> stream xYvF+ u'>3$8Ԗ4`;T B6r[fBBpUatGxs"d(x4L 1adG '؛z2x7Ir'$ɦ~w'uA1Ea̚G b$Byyp( {۞grO1~p;ϻp1x# J_gy,;;f %\)X J^} (ucK,yL C?4ͯ,ːE2_4j"hLVh uh *׏BY/\[hײ(^IPHJ=t~M][l2KL `J/'cJ*t)&Z^=h()4;q_ aJGjHF'b85qlkTv jK]uH*˺j9{/+3h!A.?8MYܸ(cwQ$`Z(ө]ۣ$q *mӖ]sJRSUL(E)hǰ`-RQ>VJ95eP< ҖZ%J7KZWOE%#)1KFv1FF~=1SxD لlrM.JifG><)pZ4VnbOj$FD6eޅuRPɢj~#kIXoECdilGnbzǞ'uXeKA@{mkDSLLR,5mJ$]ͫŒVruM T4yLM.|9I2 GǓh'x>A7V[s-G0!IS&% bHxxSˁY e Ĉޭ|/16siu p6"knְJ㡎t]w'u<e"P:#hW}MXyL4A\ Cf$1F b b1rٌDUЀkl, 3xVM+0π&r5"1۱L}Na(llf%C6tu,[Y8u%4;タGH&hęC֠1JTڏIw ;Qw4y6cc1b{x(jlVT6]4B=/6VL>MZVk vr_*mS0Ol5齙3|qݺlL&vC]q +#8ߑQ|H1@|B׃X endstream endobj 23 0 obj << /Type /Page /Contents 24 0 R /Resources 22 0 R /MediaBox [0 0 612 792] /Parent 7 0 R >> endobj 22 0 obj << /Font << /F28 15 0 R /F15 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 27 0 obj << /Length 398 /Filter /FlateDecode >> stream xՔ=O0 Owǂ( 1DDINPU%w·/s: ǐÌEL($ٔR$W^'mc*|W_ ;/mybH(-ܮ(Ĝ3#oMMH.q5@ʢX& 0tOR1".<[5zD8;#oxv΋8|)`(<ϲ)kEڴy ş-;*8$\$#P>$ h'@_ XۢlB7E4_Jۄu[8K|F~xYa~ik?TcaZt/fҵW곙A!lr)Ib2A(glW endstream endobj 26 0 obj << /Type /Page /Contents 27 0 R /Resources 25 0 R /MediaBox [0 0 612 792] /Parent 7 0 R >> endobj 25 0 obj << /Font << /F28 15 0 R /F15 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 30 0 obj << /Length 1774 /Filter /FlateDecode >> stream xXKs6WjbH|҉4m:4"5h R܋,vޥo_IUE*".jWY]٫z#rn߃,]e2.2%du\ iL#tȊU*c!,%&KtI$~+ꢈ/?24_q]dEbnB.tdv"3Bpa!+!~UghpSfۏZhӚz,&yI4\BeNcpVSA 9^Ձu92 \_3ZRFMxمO2w=y)2sY!u ׹XeYkA/LYg")Z!dZrb&П G~\"9ލD8uM2*7$FQ?䳂6UxJ [;߮^4PbLpS;FkN5ǽ:"0P Fn>zEh^v1_}(](?iIIKԟ;7gzlpX 慸u ]Yd\-ėF͌„*q =G#Sdؿ6.4VR Ҽd$vEgˮdZإ\0i,:i:s\.AeN!L0c{ЬB!.ϟXYWUdeyt3E=}7źiz)gҡwd> endobj 28 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F15 11 0 R /F32 21 0 R /F37 33 0 R /F38 34 0 R >> /ProcSet [ /PDF /Text ] >> endobj 38 0 obj << /Length 2447 /Filter /FlateDecode >> stream xڍْ}BqRejE>خɎU$Ne ;$(r^ h]nJ̢lswڄqY܏tsw۳v'xivS޴yڨN+j9t piu|C˄k}g~'R*w@`E}aIdhȼoGާMVd,8<T/˥r :{o$"k_F ͸+.Q40Ƈ8( .(\57 μmDZ6?)C#@`g|BmB[yVusb$dD.D;7LLʲ&Q ڏAj00ņa2Q&#?]Q Cr<#(K|R8{6 UY* 9G.A` RFvr2%`.=wi؏Kf{YINzG[#7 Ƚ/ vUk\.% sRc}Q-pt{}}J9gkЬ #́s5͓ZbR% GnH$Ye8DbHvqrT XQ|Qe~Iz ELsDIYB wԞ1>O#8$7!_ɰmY&6)\7KwH㒤O҃s#o픜e*%~y›*Ni]l1.JtIP4E.y6#ʜqgNҟ%,O3yq08`ZЂgdu"Qz ,7ʥAl+yj<|x@pr,b!ug~ z Xv#Z1Z6@^LOqs*U+ivwCmghQ*ED\PPbPSzWBs$ A1YHN IQZ{+ҎfԏɷpW~M4Rx$.F>]~KOP|Na;v}⽁;Wa5RcPB/NgdR }k)ECg.XN&?`)saΙ x)7: #B_>i9 ' J},jO[~?6}?}] ȗJ@}(U'Nwݚ%~OJV(!3BϿI@@Πؒ^ UƎsrjcȸi!  K&uFY@WE0?HDW;Ej$0 W%`<YA8NB9z2%=OjW[!_02dY%<~#[ikω a΅C `d{0>`h - vx Ckk# )4ȧZ%[1U=k'b}i!19o))S<@LX2S)^?GBSb U*32vz(Yq`:vF4X2rp_ MO#+e`A0Z~j2!yp'Rn\+L,yg`=;vQ#,20^%WLv65Ձ~Oas'd&I^{OKL%HHϺl|F> endobj 36 0 obj << /Font << /F15 11 0 R /F38 34 0 R /F37 33 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 41 0 obj << /Length 2251 /Filter /FlateDecode >> stream xڍXKP.YjD )x;I*l#C*y_7@QZEhOOzJNdRZE^տ#F6md[ʋZ{4{w_=lUU`]mf߾7)z_'Eԝebޚ]&N o0 J@ELLQNv!Uf| B8[ha'w<5wMVя7F|!Iʼv{ hF:IA'.X*I<á;q RKlSgYn<IѲd]BhݍAaV4P?rqc̡-0-QIW̯AȓO1(BkVǃ#dYϥwiہ߅ Q]L]߿F\_vJb'6FYE7qZ9`aU$ px -8 90%MţDz7WZV>ouڐX9 3 6| Z-B$NRƗFG(KX2,ƽƞedEp\dUJ=f}2ۑl r(t(S(/( }YШE"r%`6^ դb$EWRYDAhٍ8X匏pJ$'ʔ`NzfLߝ Q{.bIZ5295+#,ÅMs{(43F9-@wY`hODAcόBHzIE\fp}Ow/5B֚TP)X8 iLľ7 20(Or.7{ Z//(:vKT d'W^B8.=訮bǮdB<^VpT i[BsVk 4FZSsEi7 Bz? fFMS+HA iφ#\siyCIH!37yunz~{@meTxA(T*Nzzg3e7uBHa|諊XoH֤V ~}C4'P9Kjfh$x [ZŎGB6{ZV^#rK٘Sdǻ; AC#`kM4q A3# tMpfέ)ʜN6xuhБK2,댉hq=9&@=&ןFG  iwVKu/=/?3䔿ؘa -i#$-zrț ŕa'cBRlSe#:4 EW#c&jԞ$`~JW+|A(Tܼ2, G4=%zlgZ!mQ\m)x/yLuƸ;m׳b S )6t2i$`>A$Bg邲5SifQh!ĉ]Yݴ}Ӻ(d(`i)>/_!︻h(^uϨ7دdNiwG{R8>GIQE;lmۙTcdbr_0:ɡT-$cg8?[7ؔErlG<ĵDM)A101O3 Gbu5o S.~_Y,F_ڪg8pT6Txd |*DIR(bf[%4$eZ1rWD:D"0Sn;?x5VE@99ύi=HִS^:WT"םcOٍ~ endstream endobj 40 0 obj << /Type /Page /Contents 41 0 R /Resources 39 0 R /MediaBox [0 0 612 792] /Parent 35 0 R >> endobj 39 0 obj << /Font << /F36 32 0 R /F15 11 0 R /F37 33 0 R /F38 34 0 R /F28 15 0 R >> /ProcSet [ /PDF /Text ] >> endobj 44 0 obj << /Length 2174 /Filter /FlateDecode >> stream xڍXͳ۶POf,$ٜL:I:롩{#! y>PX,^y&nʬ<7qU֛LnvitdiSGu5 "rm.M:J<6AoӨDE#5^ʜt,BDo%yQ dbBge1]Ž>6.D]`i{6-/(^,q>,8 .͛'kUp55\l"&P4$SP㙗.G v]UxG!pȂyV90p}ŎQpxf9›FP8+!#o\zEb4Wm@HcW<*kцDkZZ ,jF-\ йL2aC  @$y:蹞B=.^ pŤE޵SVcz鯸-&o7}}3221⁩!s+k'ۿ`(ӈ"/luˀTȝy;Kc( ]QVvfM`k ʣ?>P(_TKWW\MUs}HS^ЧST࿹~O1S~?6Ll[+١V8ǥ5y׸d:k2%N\42'&n! *%KPk(pru&tݳdmx6jk1[8닼(Ks;2YEBa4PFrb'y%K-$veH64!` S *DCN<M/&=T}u>~rҩ$/3CS];p3?ĹBwl.յ8"ɇj&(vOBL$+yseU^%A~d i1w)2L(@@#7Y7KMQ$q@>˪g?Ty3# Hc7ގbxg4*2{S kd,V@74_Fc.cůB&rwV*_$ /bj& o?|@:4 !q3XJ! DƇԽ]s qVH\-#g P<%[$( b4Qy A֔q7? n݉vaJmJ~6sE~`Ʒ=O_'%Q7K .&,]̓AЊ20ms"Γz+9*\y^ endstream endobj 43 0 obj << /Type /Page /Contents 44 0 R /Resources 42 0 R /MediaBox [0 0 612 792] /Parent 35 0 R >> endobj 42 0 obj << /Font << /F15 11 0 R /F28 15 0 R /F37 33 0 R /F38 34 0 R >> /ProcSet [ /PDF /Text ] >> endobj 47 0 obj << /Length 1066 /Filter /FlateDecode >> stream x}VɎ6WH" s !N [-%Ѡ8_Զ#nZ^m~i6yRoMnLVWͦ*Lr?lPyVd&I\ɏ$5uuknLV33zw9U̟?_>}.UB3M7ij6SyUw?!ɕ=9Mt?ǜ0Q1(׭ޢyN͝ұNw|wWND2w9`8U?u=kRls5 O#BTv8:;/eIZwnyrIgM|a` $`M}묬*Tth$σ#?plje4j{;ø~Gn9`v dDn\3)_p4Vſ%Ɛ 3^ߓPaa>bF#bwHR%RdZ0 9^"je J{}\"ocOug#QvuPܳBɏG/0v x=$.J =Tc5y%@T+̕ovHUkU4syrĀze)'P\\S=Z~-5:0u~d'G"l 'p>pL^M)Ɩ:4e\ZN\:kPVK +c@M<CVg)&,JN߸}wp((Z='gc6٬uMi87 9}‰8'xy;rKB\>"@ِ̞4S%fs= cTxHPwhpdžtц)DSS+v(!k1O7E8So+:<Ā8E{|;v> endobj 45 0 obj << /Font << /F38 34 0 R /F15 11 0 R /F37 33 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 50 0 obj << /Length 2047 /Filter /FlateDecode >> stream xڕ˒F>_"FԃbOٝ aa;{`jmDXQ iDdfe;>jQVeǧZd?ɇSu]$jǯMnyKdK7;SBf =2C(fi6VE,AY۝i<\5M\[GlTx[wlS*) z,q[owqqZuWFﷻ,U1r'wX|v̕(MyfM+#TEG{@L%%[V޼4-('3-7*,򖁁 vf'Nee$u'S§3ٹ_jtgDK$^@[x] 5ofBk3.ɑ*K>4[{LgUK> }Ѩ__k4Q{ȱ .bWj̠xdBTnVɏ@-d6 .RU~s!0S1 'FhvsuۃGK]} }ǥLŲϝR8=ȖH>҅|ǵ9|5в9y z_EƊZJ9@ 2 ]MAP~[#)W9d3uxi~tBƥPζ0YÊA~>yO@/PZ6;|J t;z;%:KȏYT R f)hb 1#_諮.p%j@W&iͦl؅B[.dV@ @/m `EɩW0ORehy; 3f;b=!ġs~G:!Z$~R!nĹf;:҉WOܴ||~-!i=y [-.8qxs1 ;k6[4$0|gEeȷ5ZҋH}Yrs U,v+0gX33CFM#W`N,<k%W3q_ rh<.+w */phYBy֦o`#o+b/QX:1KTJI i992ݷ*6R2/ b!.@==@Fs& +he^2oZgni2LS2JqO@V@`E7]fISx&ν4_sҹoY/vymjWewa `OК,ho J i33==O6hX^!;fr 6cDۈ"8@`G^%ף[N0s{jI?]6z-6.LV /%}q  |jG`M/-a *Dڨ O7;$_wz|;G5a endstream endobj 49 0 obj << /Type /Page /Contents 50 0 R /Resources 48 0 R /MediaBox [0 0 612 792] /Parent 35 0 R >> endobj 48 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F15 11 0 R /F37 33 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 53 0 obj << /Length 2558 /Filter /FlateDecode >> stream xڥٮ}y  )A;h`.04}kjqIy<7l,./yH}zx8a]$ḋ4,jWe3*P?$EL#դq\=_͠{yQuzn,2#|@P4㥓;Njb>)“vH'zirJRWaUֻGcstupv4aa0^>&M 8!);YfEWD-$a ҈(|Q(C`Lg$ft^OY.$ℕt2f$=5p(b|'fM;9)u%uy_e3y:(h-;Xl+ן:BWt8ՑP`تIjou 7 G+hc]+]U73صl~dPfi mq{@PNdHydtJk+_RV0;.6ZCnг' n@,fj'f&a`֗iMZ=)y8 rIH<00HYڲ6 8䘝YY{f'y_j6;,08r5]5v2`P8 V!_ő(05烾¦d0.Di"ތ0Wz.֊w(%x4"FyqwH2!+t8]eŇA_~>ɕЦs̛jOT;e@ǁ0cI 돒Ό1NRyV1ӁV)[c.Bw;=c'qTaVW\=A|OL;hVfN*#!dNneYEz&hvCS)Z2@D/gi&e}8魰Ta'˦B(-Y`Z$WO̕dAuHH]Ȫ߹rz+ ءq(2pTp'k0 TݕIQkW@urXG{uT%9`ݠ)N 3ռQ}ڢ,èUϱ7:!(ʟ1P} asm 8 {;yBqfr̮f&g(#(0QFq7|8-i Y n3Cz 'h.56 OiI%LYϡTrK.cyrlMDeFH=R gzp8.MrBQ"AΨ:f^^) 4C$jI8'Lyӯj |%_' Oeu)k %ZƕbĘG7I)F)w_du(şV7;F*t];*FZ^E!tyf n;88"so|#sm$HnDkaKi.&am}_ɛyzJ|ב iD 5R,2L 35 &;'h@?ђ^!@z#x Pqes+ʇj R儵T !QM$૯ ŨxMCR}8g;]Oo-Œc \pCA #Kbϥ\Ro4aJq>m"*0W,1mXa^.D#_'A44g~lt,TNQlň.G7pex qqbP8,|[[ςCŽv#:tm'_z tYQKuj4L~t4KCU 5r0bVr]VG2~Л:~`5#*o5@bi--9 ;Z=*~"{Op8֫Z>9NhKa" b%^z,;*o:b h,%3 ˠyp&\r|/6QD[X".yȲ(cí@LWdɃ`a{Ћ\R uRH< ~;6j/]d{{y<:2] ܀SNdϘ3{4/ip ւ'uH)0P0#߬Hv)B| *#¼L1Կw>a?*|Wb3_=Lv#I9[XRsjYrZM=B@Ij⌙)&OzV&_pJ3-7΋=*""bwȀ4e endstream endobj 52 0 obj << /Type /Page /Contents 53 0 R /Resources 51 0 R /MediaBox [0 0 612 792] /Parent 54 0 R >> endobj 51 0 obj << /Font << /F15 11 0 R /F32 21 0 R /F36 32 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 57 0 obj << /Length 2577 /Filter /FlateDecode >> stream xڝXY~7S}d61 YllZTK"ǧ.RN<*}݄'Yt ϳ&Ks?ӛ߽V0 {ZǁZg=Y}3>yhf^2kڣrOo,f~|W O[UIy;U8XYDg[\lzwPJBa뎩rvV"6Jr_1=6=H$%q8U9oD d?Xz|M7ljS)gF>e7X:{.fb֠J=iyx_g$6~{] 8 s@gMjU3P8Di𫺮/.#1G.MDZ74LJSOZmj8tԟ̗L/N<;4 {$2e}h#kC Eqv}?DRqym;I=3Fпi;>~p9 'P%KAakiͽAͤ ٿ_C%#h40 Oյ(mŘ-3z%s@X>1cvhw Еj8辞W2 p OėbQ4EyzgFÀgȰp0Hp{኏3cN'LP'ܘ0dzO H!Y08fVLsC\(A@ P&Oo-j`tS ?]|r+zuq@\ [v$"LRD FFyI"/<zj5&1mA]# V3nzI|P 'A͂30HSj!Oh\@_ yeU{Ybwf$G&Ga;@9O˴Cȁ@kga6KZިC]o, ~^!6<UphhU ޻5UoσtfE!'+K)Űc(! !Z3*=C,njx qs lюD@ztEXA]vHZ9z&1PO9S8 6QAaag|i^P%QUN_ZG5& PYIm2 D?Wa ydSJ Cg=I>YzYp$Ћ:C=A'QqG Ee4d_I}Qշmע_j\sqzX k>M[ 9ȏ wOLȔX:*qG0YF<ϥDܡgLI*BݡAz:.Qj^F<{sb}ّϾvX1?@,D($BIq_Ĺ:*:p ǩ.੐0a` lL?T؝QE'#~{)[q,`d [|.F*kwlfd ѻ`s/n)`?ޞN'W\گbZ(Oy >8l2R{尳v+p~L;5(󄅅x(1nª T-/ ,*_I < KMC?KvS y%t"/߶5ؾn7'hΑ$LnC-@:z'bYz+0m:^=UG0I 3T !-2FQNƕUu/;E)q柊 B8o0OkdBNP:0Dj1 cEm&BϪO_WI%dyc U Dc;BBBt` _Գrx v)w e {tNۊ0ϼ8"uWPݙz)M¾4 x>JE4H$Զ8XYt\vzk0hO聧msn >Ny wPE?D 3E[(T0xg?zUJzm-Mk| >궻15q weaXLlf{*uGzn47J$!eQCmw_M_K(FYH5 UوqB1Lt[!G^1n W <0A߶QqYJRM"{ I`TR,Z1T\CNBa9Rd_5"ӛfǾ endstream endobj 56 0 obj << /Type /Page /Contents 57 0 R /Resources 55 0 R /MediaBox [0 0 612 792] /Parent 54 0 R >> endobj 55 0 obj << /Font << /F36 32 0 R /F15 11 0 R /F38 34 0 R /F37 33 0 R /F32 21 0 R /F39 58 0 R >> /ProcSet [ /PDF /Text ] >> endobj 61 0 obj << /Length 1711 /Filter /FlateDecode >> stream xڕX_6 ȣ3\\K,i膶 ú]K̲{wE?|GNXEQ䏤_n_|Ңzu{J(W^F`Hѓ 4ɻ[Lm#ةgȈ3$>)ߝ Q5HUqi lh,Q"9؁/śm:&ֲSsNyfsԼ<Łٶ{aҡ{?.$mB+ѹ%xEZi{<cidDV371{HUi-OV*ʯR+c=5v 5+4IROpchhl%ce=C :lq<7l'I_ 44к0lE?S2**ěB##fc!&Ϭ ]]ą=u b$j2Q@ +;H}h#g@+YpbM<-!G "lz735 l9,MvY4; ,o=/XP`~^Tgfi8Λl ϧPa'pFQͨJ3h02x D])7W(*fqGwH|d/> endobj 59 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F15 11 0 R /F37 33 0 R /F38 34 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 64 0 obj << /Length 2507 /Filter /FlateDecode >> stream xڕXK۸WTj%w|ff׮j/IIP FֿO@I#Ux4FqOyԥ])/ۧjRUTOӿqoˢ.5EB)XB(Ub*Y;ZH.U՞_0گq|ϫĿ3.*=򧼁|,:9/To"qQVʞyv syEEjv6dv0ByOzpÎ<4rI>TV 7;/*i5J7ܖsd>2rYK+`#m[Pi*{3+`ڔǞٙح侀j((jMeޫ.{`cñ縐qB)+&i{{le8'Z-?^5gI ƩmIף7!X705B1 $z{{-TfpF{[ǓGÞF;ޤ-A<2kǧ~`HC TSNK`"h,I4^-ΰ-HJ}o(ք0CrZQDÌesXA|$\7shYc`Xm~8@ r+RdqfEW&[WP!%w~s@NMnf\Ave _mc`ώHRsw tكY%nUiU`) h3o<ޢ_h e)N~+ n"r̝xtĐPSBsnT9"9 r{ QsgDeE~Q;92*0q&*=?`8FE VxGft>₰Qynx\7$oEo35g0>6a3S v7|d%Ju/`}Hͨq [r 䠚˒<͡ݎ:|C0:b%$a9EAL9yݰ ꧼL`U+V *˒?9U tU:70 r64W\R8[ic{g?9b2ai- 8DVNwp<ϩն2rh]3iZTdx =3dB %+ÎHn ^n\3x#X=:TS[^g*e{z2=|Lv@\E=. w R&چg|4 FJGdJV Yk0u8^<|Fx{ ~o+pw8 Hw}?*pHGtBlXl2l̟ؔ˅b2eYA$Ob5G[dJ(/F㈑\'Mj=ƙ;\@jسfҬlߖ6dofU?!9j?5NJʮaK@U|T5SiN}DbzR8˧ u@wܘ>,Wq1SdjsvEpH,:fQ|qb)MHll|`HO}jϋ) 7X9Vd4Zf57 _I_HɍDTl=0xo"s'_Pgk7R(COXqձoO mw<0-@İQlǸӳ9 XVVt@\PP`*4 "3atq3yk6%4b)+.HMVs즷5$ƺ_JTp/6>`YJw#PweyUF//9&E[LIW[rXp ( b}w^d컫Ycxu!雇=֫\6%Vc,%#+аM։P'c?gM61Td~Ns{Dv|Ngsa˙浦(sf>ƑD)ZE3? KC {HP2|u޺Sjblڒ<#_Md/bOѪ$Y㱗8:hNh)B Kß"qnPM:HhEƾ oh›E #>9jBG_@,R&-(wTpRidcFfb<29Eerpi%+K,˜/ȡ˴ d["8͞+DvWp:R1=)T]mSC N%b^ܻWϰ endstream endobj 63 0 obj << /Type /Page /Contents 64 0 R /Resources 62 0 R /MediaBox [0 0 612 792] /Parent 54 0 R >> endobj 62 0 obj << /Font << /F15 11 0 R /F32 21 0 R /F38 34 0 R /F37 33 0 R /F36 32 0 R >> /ProcSet [ /PDF /Text ] >> endobj 67 0 obj << /Length 2796 /Filter /FlateDecode >> stream xڅYKܶWM* dJ)+J$vZ]m*?>_?qF6~Oq~UUW7wWqۢ*mM{arכʃoS0:&כ _O0YtκYz [lU7;]0כ"uB,7MU_Qis|ێLӠv>Ҵ麐־)-dqBjdJ4!=Ƀf2,zJھ Ӳ58d}4n~-_Iv[3I_4T͡!J(FX[Fki tC$6I6`ͣn=)kzQ']` |m8zUCV !/lz6 _;dh4$BM`@oj, v2hj@Ψ> u »A^ȵ.2uC{ab5+nw*[4]29ѩKd䌱lmk N-TP9C^`4cIm%QC?m֎z/#mHlbumθtp:5lhpq/ag=\FtROZQy(]> p'KQ7f+ت'S˂ZU]Xu}iLH$h\9^KCh d$N:eB:*q nLFx6o>lst@U~]f"pеC'3 ۆQѦo4=ػ-O?We@>0(6"XVCcK4"@۩?, .FR̨sRPz<+7 *;9(xE:Ůi@78xidix? Pk>i >OAf3`U,~_Oڷ+,m8yL>)XЀѨ"0ݚs,sz-Y&5ƈGW@pQG<0hQFj \$etk-XO+xxJ+y/gKxDn"֭xEaU nB$Np(S9t2vQae0eXI)LO`k4,UVbKx z9ڼ%UzǛT>^+Fi\j;NJ92lGD 74 /WExiR, ̳,{xORfPKBYU$mkvyO2w؞_j ۰-9+͏CgwG qY ߭TqTexINچ3J@@TQ_MAnzB%"e@TKלkiH'L.^cאa fݱSn5>tZN iOaPm1uB;c9IAwN(ě$WMx#Ŕ iFB`paAyH#iKRRS_7O;Y iQ,sTz3P tGCi .W5[!3qT r q~*Z,r4qg{i2lR>6 ~X4 ]zjCa-?QܿmQ0E*YTxm$ R/-nF~^5lSS@Nwt?(Ҫ`76NFȹZ 9PiHh>~Ѓ$;|ӂ1')ſDM\d߹94σpi3h(lwhf6-w r~8{ fי {4Gj8x VZTOӵ<3%iA}͗aGمyu؛;n|SU C8P1Iy/ 2 8[3M+48,՚*}mؗ'Dg!JK>L\ E+au+M+rp ॸg8L. iMUg'i_z/\aekn+yv)6K=WED4|~maE %$-n{& ))r;~pA69:pqf;FF4댣ǜwv$KKr!|E|*Ʀ;eb)LP8g鬥Ur<&."YzZ祄5Gg$J^ǜd{_hI%.BB(/_OieQZUf/">(qQ;'.o_,9/Z]tԑ+X:^!EoϨVd?qp> endobj 65 0 obj << /Font << /F15 11 0 R /F38 34 0 R /F37 33 0 R /F28 15 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 70 0 obj << /Length 1283 /Filter /FlateDecode >> stream xuVK6-+z[jN-ФHPE@KED Rڭ}]o^p8>dծM:w.+P7:$yQx_,o,¥ԣœ(^`諂V*!fm0}f*$6#RՅ@ٰل5wp7YNŰ(,^bނR\*ӂM rR F;052uxQv·3=&%GW{ ( l.u p)lr+z~1;r\?jФx?wK0@fS}^6Ka$n~_0$I߂J[CHS$z/ 􄉱bj!#CeKNp<43jVb2$:g^o'3Yr e,Α߀ye)Xd T#@L`J[!#7*I`dØ:`%P$( endstream endobj 69 0 obj << /Type /Page /Contents 70 0 R /Resources 68 0 R /MediaBox [0 0 612 792] /Parent 54 0 R >> endobj 68 0 obj << /Font << /F15 11 0 R /F36 32 0 R >> /ProcSet [ /PDF /Text ] >> endobj 73 0 obj << /Length 1487 /Filter /FlateDecode >> stream xڍWK6WUWoim\4(m+HY?3ʻ*EO~|~ھT+ge)vRfUYZd/Wv'{S0z# WBeU]qWd5W$Q H)tnFF-(&@g?Hp5 I }g ^)E|(xV3ʜ}ɥꍧ.9؂%g-nqO5z،F7b^ap9[o Qmg^zՃhok6sܜgM\0x#z#*fhaC!%3:?@=8dɦxĬԍHt>`Nq;ŗ?ۡuha1G`u-(K^ @&Ŀ'V9|2xBs&0%vz[ν-zӣ /! W|E 4v=-_i9-~ 9nG3Zm˂\Y%pP]:VpC_;}Kޓ 8v%mb 6'3xF;H_G2:Q>p5-s!"N=OˬmFg +s>sr"(HG) }ꔂi7# 8ox{F^Q??a;4Nd|ōHhWϏ9\x>y4ܻc@ HF$MIh-8_A w0:Sc#9@x> FPAX/Ef.0VLV~xG/n_ d endstream endobj 72 0 obj << /Type /Page /Contents 73 0 R /Resources 71 0 R /MediaBox [0 0 612 792] /Parent 74 0 R >> endobj 71 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F15 11 0 R /F36 32 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 77 0 obj << /Length 1155 /Filter /FlateDecode >> stream x}VI6WP"Z,Ԣ/E[t98遖h$d#3ѳbΏ?n߼{,RUTj_IҺڬNsUQE2h*q k&J#|FU-Lg'{/U6U^ale爱p{N}f(˚fԻNym"E@(x?apa"tw|p%iSrj> `d]]IL5yw¬5 /": @ v礬LG9hzƬ{ާ$v6zM0nW8RRXJ*#8m{.#.L~nc^s@u@͛`zܝ`7O$[:414dS!6ӱؑk&a~b7{=0E@`NW +\?Byҁ \\ &QN悄ƵC-]q43sYb{~ԭwsy$26CX7c,UbǘNFSj1|g,'w4r1j 0q>=!\ U GfqjGuPw_N!0Uvq1CO"ڱg͸YvE7rQa7+'j!{ _E7Ȯ L*G=<&/.¸#ж(Kΰ[1Hlsu̖˒!@,tw0|5ǍX -" 0H}-'w8[:L'^;9k;GSƷ,9rƹvlW'=?7h*lT|bH^˥y&hK&wj4iy2H<{~Eqxw~[= ~hz՞xZyQ` ȼE"SK>LAfo`ZҰ,pd3Ō :{䲱&\ȪJ7uw<ꆎ5*> endobj 75 0 obj << /Font << /F36 32 0 R /F15 11 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 80 0 obj << /Length 2042 /Filter /FlateDecode >> stream x}˒4𞯘*ؒGE(R,ŁpЎ53"G6IK-nWJPKˢ啊=4/?<o,ݩ,.2EdwJ3&xX@a_Tvbf %y |4Sq?iDtt(SdbKȇ:-wu\T bV71Yr9P%X$Γ"`]mWU40)в3a>HDYiLD ۃ[t5(6~4׾%505,-@d2`m;G31^0yrGwX||Wk*Yߢƒz3928r |#>:69{Gop5mX)O]Et2W:30[Cjoߝ${g:r#1> LY+ vIt;Tr:2!`@Q,SNEY-5avn,\Q(>6CW?N 8+G2C >B! d]QM1BY7PD$ BTlơ=)+4wG^PQ# ;v_M\ pl1"f*gt R;{4rXp1#BgOϼJCH'-(q_^ŞxG<#E#l=WqB  I2$KCOI:b%IF^Sj"jPŽڸ̡oв+^nma bH*NŽ׋Q f.Cs!iW~vo c'2G˽G_ T q> endobj 78 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F15 11 0 R /F37 33 0 R /F32 21 0 R /F38 34 0 R >> /ProcSet [ /PDF /Text ] >> endobj 83 0 obj << /Length 2329 /Filter /FlateDecode >> stream xڅXK۸W蔢jGkO^n6N''q< p'4Fw OiJszܭ4ˢZy4_=DyjIG_&-q&Zko??)Wu\ͶMRiU6絪"bGdE~=Pi5GZNNNPzs0S;΃ lj&mrYG|Ĩ%~hd`q`z贴gۛޛ4}:0 ܞ:煳M[Íb(݃ :cK[3G&dC躳x)T:vkSQYf`tmsQY ⑍4H*mK329TZ.cpBؖ\v |ew$ZmTWS?f虝ށE49|%4tK]wYWY>l#דZsQJ0VmOp. t+{y* Z{/#яZ0%;5Nt L (R` <i:YL)׍?g$`a'pg e00|a#3#TE􇞗q<mز󸕍Ϳ:{v,1"gExrt l7,a5 G|p_q_yŶ \f!Sa:%X%Yf*3Ge2 = {BdAh _[P;lig8e&H|,mwȮ&vya F.`N/)~8wCHXH"+mv!0D=2Kxxg^d.G \A]+Y Z, u&pܝL\Kr.U#T]W,SYN" D8w* 5 N2F 9~0ERH<H\$7[s:i|%uR$*SX%06eOxKhg9T?FO ZNICK7s>C4X 9~j6MSesƃ|se42;TO'*yHىC}>\a!Ky7LtimJY$\ܙ4+uRApS`ǝԠ·jg=V&eCiҚr#ZA&3/=+2.|XC_ WcTd G? 9"pl㌩|)dJ >sKyRx䎳:|wSԚp$Qw^s2iJ YL9H FWNn,Y%zv-.^%T ]ծ$D`c\䋬™ uz=q* EYPHb%7NWVvW8PSi>76>:H9@D_&!/ro+zsߋJBL9"q'oV$l(5?@?Fzx64AdR40:-S.zcZHdӓoҙx-Ut5(,V87!J endstream endobj 82 0 obj << /Type /Page /Contents 83 0 R /Resources 81 0 R /MediaBox [0 0 612 792] /Parent 74 0 R >> endobj 81 0 obj << /Font << /F38 34 0 R /F15 11 0 R /F37 33 0 R /F36 32 0 R >> /ProcSet [ /PDF /Text ] >> endobj 86 0 obj << /Length 2343 /Filter /FlateDecode >> stream xڭYKsW蔢*+xHNٙکJ[h!E3[ۍdѦeńh4w̸bR1Zϸ,3vftƄԳD39_p|.yO.jrs3_H%&׫_z3l!8ܒbBlalڤgY66ﺢ #=ɐɮ塯Y2i ̾heλ 2u~S0<9sZGK*9O蛒q2L_PfGCU,qmLoV4m:of]RP4K[W6zͶ*hA,<*Q- :BI|( l6݂iu@,[Ro+Ag&ִ!"6@sODz'|oxШؙSW4 GK`G[eA~^uM袎uqGO^}koYԯñRW x.4rw[3𧂭A3Re[^+~U cH]3c{G09:h>KION?"݂?I4.*͡;=Lo*R3ySDllfߍ_34bSnԼ} ߛ"o-5|4pMoDwMCe&94ܡݖmcZU9ϖB75L&m2q@ʅC#1M& Z>r¼i{=z &?_55:GE]0zzz!> -onWIWwۗX_6t?R}$|9T+ib(6@s p$&!!î\t?`UǍ;$(Fs): 1t1gu{OT=SUcyb*o Ƥwb4bL$:<c)K9NT}Hn10ظ73 :63>m^ |v@IH3L 4-Ao#ԕigL tA8o:.RcB ֻ.T7 aGv`n`}譏dSmjls3T)F!ªK@XJbн4C> cfH'-Mƒ„,7XV7nshj:yC `#Fq2"WMS 󮢳JfKG3VUiȅ뢅S⇫]p8i\VfR)f27[V0bٝZ})<ߏI148 7p@&t)f#Xt5zE N3xf'YgpUt ߴ5+(@kgXÍτ&Q +x{)hByk:XWyk~5\ L |12&{O=( d9Dh?4&c\oZB>.{. "~M,hhb1&Yebo9J3'P?}qÉLLP6Z|$bYF=`p5q 3_ dPDžFcBNFL`hQ}wɑBCzHh OD!-T(ˑzDi9X oσzC& ]+>.__(sݑpȰE7ow Ov1YB1}/ f **#2  eon{pBmxTz]/FX|qS9 ,Z$B=}3Ws+dpZ6ߟ[ph|d8;/ą~(ǧzqRŧ1;Ltv?D{p߸^Y)fBV =m1!e2063J?*|b%Y!gÿږ~ 뿍T_LWa p&XfM6Q4@qP u{rA{}%Gװ}εO#z.vԓC)$/NXV@3(Pp3TX!4.'k3nR> ӧ7)!l8Z axi8bg65^n4?Kʀۚ2! p%jq 7^+Rȴjf\Qy endstream endobj 85 0 obj << /Type /Page /Contents 86 0 R /Resources 84 0 R /MediaBox [0 0 612 792] /Parent 74 0 R >> endobj 84 0 obj << /Font << /F36 32 0 R /F15 11 0 R /F38 34 0 R /F37 33 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 89 0 obj << /Length 2487 /Filter /FlateDecode >> stream xYKﯘSh37dz8夶C*#b$z(RlU~|EJZ_rF7|o;&ӝ2&..ϊXWfTDnΛɋ6-?7ݞC"@*r?UvWUs\1jhXZRVQ2{OMH$i3Ou7zϝw١٨CMz-A!p+JU&fk`1F,3N4P[Ѫǻ ҄a6#dz˟oϰ}moRhCbv.P!Q {Š"VG~hvAW%ꨫ"z.0O'87]Mv93O^^Dt;6ӱG 0pGfvc"8y p޿CAhof &F_DΒ݊ᔎBO}b8N)SV>7m˺t,CТ>8i9!3*[Ufpr=>Y_|OΟi !1$ [Ҁ` %IkcvGh>̲*2S#yB&v52'drw;M.hM|*C4 `@0Q2Q zd){*J+Ũ)fVP0 #TW0 F9 @OLZL Ag,4v&u/1! vq߶- ~\\|w6S Ѷ̿:~v5eڃ;JGh'*.n3崈,zH0˘8cIJc̖a9O`]LqjmR2N( ˻,,) ӵLx#cz?`i4l Rj >H*#R~9ɒno9γ`sLdVOqXVTJȺ@} N YVFBBMch r0I=a?':-X1荆(X8j{y/f{FIu?iCj;Fv45vxe AdI?:Q0d8h2{en+Z )0LD-d[HL zAElB!2bGd8)334ˌUEN.nmb6'8]JmCϔ2n)6|9PoI˚_E@,F`R*0z7?GG_bD9IbCc!> a󲖣\KHhZMWb3_ʐYR)C.ጒL}e,-en{t$]?_ϕ*4/v[M*P*3%Gh":n۫cROܼ` 27j[PU;=S5U麟]N\5 By r`Ph4ts:z|Ɉdg40Yƴk9΋swYUA qL(2|p֮ہry4ݲyQéT,+xi\%ŗZ kPҸH ?6sMf}릳hn $C4p'#a+;PFǍCLҔ*@ap'Z#cSH˫_p}vf9!/ah~0p٬I7r> endobj 87 0 obj << /Font << /F36 32 0 R /F15 11 0 R /F28 15 0 R /F32 21 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 92 0 obj << /Length 2489 /Filter /FlateDecode >> stream xڝXY~Л)`}d]I`I %bMrƳ>u5Eȃ꫺ίë~IMERl8Mò6E^IooڦIݥUΨaK/UXV&Ky* <:XDŽV .>h# NN˖n ޛm4}e0z؂K7< 8syb:<' T;X<hf'7u-ʣmZsbXʶ^#3Y1,z.+IGը_DG*ޠ@4Q+z6mYyI80oQuffgwyR4\k;&Ȑ'u3S;M82Sjpyt~٪:ニ"z5+tU,ۡJk9 s53*7]KVr19F/5fu-h!H$IM3ʭ%3Bځ9x|wz,qb'l3E(:)gJ'Zgʏ3'i<0+3{cVDM˰SⴘF(oH;Cל!}B"%I=O?&&3/ 3# !dNe}6uÚpv^GB{!;q0 9d̀́eHzŒ|[5`oQ^f_猄 RBg-nOxAI _;Qc}+Ve͗Ui'ixQ3״BK5`zSj9ىrT2ͺKT7elC ,Hwvs)X+q~)BB4$ Xd9^5d5}A7j]",3H !׭1R³uzХqՍAE0pF5 ;TMQFTsAJtNq w q IVNy2yxtԢ^ιw ҋ7(rqtbҥebPn+rt^ҽK\8{-0=Bs6M<czQڐP#μRE G>CQLe[{q$r@bPT).1iDwu7[d ˜PlueMbV8#,`$zǴ1(pfV(BYPe-- eg_J}{pz81] .7CvE=?v<4(y92?h@NȴKQ rH^;Qr&;b~ sؤWv^ P`EۏQkĽ 3'w\ 0@( VU,#qb׷< FjH#Hip3'vMi@3 ,$/Y%! gh$Hu5g3rYS-+F|z^nl[.W j'Nd #&9(Q icP@,$P!am?y /0\^?-TGxYKa V}ڂ(ժ6Z|:-6q^P$WN [g ˜9HGQs 6sj(|7GFU4äZߌm׾b@&q僂[ByQ1}'/"H v= UuoX~XCjt/E1:Ԍfp"+(hprްlc,;kpbU3.1ֈ1Zb]yqzȱc^Kjw Yh>n0eׯ?I 2e(zr'eE K,b:ֶk>aQ}dewhtԓUVX+s'/a}$Ժ8C]NQXN{t:ƛOwwd ģ{AKqG~ܟXˈ 5LvK'w7߮-vL<'ƞVh9ݓؿ@\7Ip ҁf endstream endobj 91 0 obj << /Type /Page /Contents 92 0 R /Resources 90 0 R /MediaBox [0 0 612 792] /Parent 93 0 R >> endobj 90 0 obj << /Font << /F28 15 0 R /F15 11 0 R /F32 21 0 R /F36 32 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 96 0 obj << /Length 2927 /Filter /FlateDecode >> stream xڍr_ҋU"TQ%)e*aNcH1_ PEO3}w﫛ކEY].¤0܏⦾FU(JV{U_vT腺,8vb,qr6bdn,pZ~Ek0X&";'N<~zƁ-#7!*hl 12Qckc+5[ [gF~n~{{àZljpnA݌NrI wr{>2xT63ĠnW7+4PeIRq8sdTF!Oqc<W喀pLRJx "0"_O1ap/ytQ7~D"儜W(#ǎPsp/6VrGYw4>H6M:&TZaL9:ڛƌFۧ+nTځ"¹M*(9½భUFCnѮډ$,$ \ Vr0w8#mHYtFEj\6 x4745!`!Wz 'uBNΒfnn(DԂ/m~<5C  gau[>gbϕ 5j,f<6nnf9wV8NuƬH<2{zpǵhdGȐ8k4A%B۠G^${GvYe_? rviEfRn;^2 짐Er;-w12eb*4-|ٟny+Ns{5ٸ~=kk¦ B.-ɋ+mFΥ;xzFĮ]C]J"@n)У4  y1lj [BL窣ڥOJQmUb[(b(0촗O"HǝsM(놈ŭ'zeٹV^e~xn`E utj1bgfϭ$<kCo,Hq fS:~:U:c`ST0 ,ņYaS&+Qcɫl߽jBY*7^\co0W8G?染}Q:g2FiNd+ܲ/LE$Ywon} endstream endobj 95 0 obj << /Type /Page /Contents 96 0 R /Resources 94 0 R /MediaBox [0 0 612 792] /Parent 93 0 R >> endobj 94 0 obj << /Font << /F15 11 0 R /F37 33 0 R /F36 32 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 99 0 obj << /Length 1387 /Filter /FlateDecode >> stream xuVY6~ϯ[d VEzMm 5Ei[YY4Dj7 [C9o~BfiYb-DUY/Z(>y3,WyrwTiUWIJJ5i-T,Wqh=Tm?ʒX4iS2 "_+YdurԉuV-`!Hl[\H>Zx`x}bD?tOH<3_*1K &8w wQώW2ґJ*-H"F}ZM~M=~cfčx=q=\ո>hl(Z'?zY:fkc[P.22GSh6]Ȓ!r7"ѾQ˶՝!FM]gICԼ sۯDzTzF.&tDF9TvxǾ q(&8:>>8&Eť o{q#T^=|ۺ;Veq&H!єp㩛$\Y{},ћMwH'e.ڥLRN'?b3K#Ix@:O:T]lW"1ظI7ȓkox] CjQ.igV9(O2Fמ|K=:HXr`̥hb?ӡ,AݿCWD:<Օ. uKa&Yj Zfe#>*7HVcN;0cstvXWՁ3oC! x=/1.Bƈ~,{B[c4RqJAS:Zd>LShLJ4NlU 43j\2, F{Wb_z$,O+oF^v1&"9m)U"98}ǀchz1Ì&₌1`Nɫ࿲2<⇎!/)";3AkP .ǔqb&BjqߺQvQ#*ιT%̖7!si) ]|EU`]-N*Hή4.>$!deQĥ 1G+(.B;g=8 +gIi 7077 66Ptk !v}KVBʴ.>~|w I3 ҟ)čE}_yI% 5~gȀNçL;z4q=ApnqPǹϷP-3L%خTtſX%P endstream endobj 98 0 obj << /Type /Page /Contents 99 0 R /Resources 97 0 R /MediaBox [0 0 612 792] /Parent 93 0 R >> endobj 97 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F15 11 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 102 0 obj << /Length 1583 /Filter /FlateDecode >> stream xڅWKs6 Wک):ci@k]ZiCIq<_AAC'ǯ"=QHOE"MI)d2_L>/VfY7Eɉ"RjdsIM ʃUY/AMHSƓ\JX1" cRR3uKtҠV563S5EFͦ* ӕM}4@j+Ne`;v+T1HY`qtUJ.~atWOQzyM< yMaZNfps0׾teyZ. } qtt]o*|e <}+S`p\E` YsdPIR$8ZWre)8 %l'rn]fȤ{hIUm~9>bG}-A1y.8N&RH' E%BgV$ euMLR|$J4\ȕYA3y=m*Jxw+KK: Yfa7> ,B |=l`!:0z e [# $~kuD%@Gr ,2۾튑I%t{9D#Att߂8>$PDwpQnzMk!} T=mGԢo*;+yG cO2MDÛ|1n$SʲVm "j*LDg\횝kp>{xi{KWͮ>*Rς|X /)9:8ں%X߽i񶬬$IEH4gЍ0=t9F#֜sHpq_PdqdlL6;/æ* [&(sU akhGg5 ~Dr)Bh֎%T,CYldd$e|663r*…[VDyrs(ln YC(IC-(Pе~ ~PsunW5W(!zqCQB?MYWW'd; C?rr?pl_\چmf7SzWZ%n3W̽mO%Ӟpp;A[7ؚnC3Rvamgo^͟'H/,RTvuzY8E@&+X<09kzur}zq/OήN^>YD׍cmÌw0J\uo/+s3L\z׳p My-c#7wH2ü'Ա>*}>~r'ʴ-}AA YH~rv[=B 0_{*X$9?( endstream endobj 101 0 obj << /Type /Page /Contents 102 0 R /Resources 100 0 R /MediaBox [0 0 612 792] /Parent 93 0 R >> endobj 100 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F15 11 0 R /F37 33 0 R /F36 32 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 105 0 obj << /Length 2434 /Filter /FlateDecode >> stream xXݏܶ_q/W'4q@sy"I]Œ;_=>/ሜ!g~3wnߩf$YEvgE殾gIl$ zݙ7$Al2N,lg~ۓTk~OM3f.ө5#M޾V$ wQA\OnlU NmHqawn`!Yj!3U7F;<ɞJ?m/ NGD<4`Y 3,sEoL 1 (Z =pk l>dVmDngƣjAO(eaԡNSU|"=:BQ3Z5f{8TwaoYDwVgiKŞ37M94݉pfB^o  ٮi=ؾcuS*A* S?#k,#7N8)aaZЄp%,L 4iF QAw J~1ˉ #7q55fab_;dGND)#v,(ۅiy +[3˜{b} yp t7Dx&xUP!lE8KH~[DŃ3cXڹewx1̟V*,'̃Mѩt8i<,YjCE9ޠ+#o@ C7o6؅?`±ᯥzEXeaSGvEX]cqpw$2?+$'Kr +/]gђ2Bp{ CX4̸<1O peހ=LSeL ,Wrm.Hdoa=Rޑw ed@4~_+tR 4z٩#Vs࠭yx~RA'آ-]3|?P&y>'''m&Hy4mAسUX+QMD;|GE>v8q$ :vV\ FH&i^,6)H׍Z-u貽I+YX0:'F<梡?*02Nkqz/E/nt=JD $2x!Ũ\h{^uq+q|懆_Z3;'J [Vmɹ8DMyiPEnywMz`1W4<!:(MAAqȹxISz? endstream endobj 104 0 obj << /Type /Page /Contents 105 0 R /Resources 103 0 R /MediaBox [0 0 612 792] /Parent 93 0 R >> endobj 103 0 obj << /Font << /F37 33 0 R /F15 11 0 R /F32 21 0 R /F40 106 0 R >> /ProcSet [ /PDF /Text ] >> endobj 109 0 obj << /Length 1211 /Filter /FlateDecode >> stream xڍVK6 pOg֊ޏNgvIM95=mDֳٻ x|yx{/([0<+YQ.O,WIz+/WQJ} D$r}{/_" +TUVπgXfC {^ъulĠh{e O X]ȼZ;W}`@ޗ/, 2qvG=G%T/eAd/0(N-Fvo9ZFE;M̫DGL.gi]u:"/V}lj8wҰc-eVg: $מjhE].WqzhAX 1(T{3I0Ri1;Nj./kYT{-R'qE $cO@f3$ρ(АT5R~1DD+! {Ua4{V1 氲 VG|$B$dZVF1 HzXTwQ$d+v|~lҴ>b\to4* ,("}7(r"QF`sJNqXjceo0QzBqhF)39br*bwAQm*B"qM)^<& s~W\&}jU#_h$(=Gor{UYV0iЪAM s~~ Ӧ P!B5ESjf$k "Zm[<S7x.<$q:KLN>a` Q~귟XQ,8}(9_ \KlZf<cV'v ,ſʽO?94bZWIdD~]bDE[ڸZ4N𠑢&kz0iOMhq M@ 4i$4briun"vb.I8\toڻ?BA~ԣ>RIhY w3σxO~|(ya^KqgQϧJ1\?zO#-Lf&Td'D;Adu4WS 5/ۄ !6HS}?diQ‹_w endstream endobj 108 0 obj << /Type /Page /Contents 109 0 R /Resources 107 0 R /MediaBox [0 0 612 792] /Parent 93 0 R >> endobj 107 0 obj << /Font << /F15 11 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 112 0 obj << /Length 1271 /Filter /FlateDecode >> stream xڍVM6 ﯘ[=@kٲe6iME1AckBlː%Eyv;hrDI=>o,VMYiɪ;''0c Ͳ͎7i8͛f&ʙŶEjxZ*o)˲K:QU(ALۂ%'Vn*:Re"c0oH{H)#ݢ;H WuDv}g9%D'/51^a1ciSZѓ *'+"9;JnwU!j6Fy^=zF,qXK̳igG/eLI ːK JzPἾÛaXKHa-r d>*Ž9H O?/V}xԻDdC(`bB.` Z1zh_Oak%(2'0qF'G"O@T(Bw|,pt.A,֜Ib_zj:=)fur( LkI'8hz0  oֳt{hBӪZ<㟮/[Y*%L0ᬉ0$*;hm@( 5AQ}OɳJy/:s+ϼH2N 5dbM?cq 8Ti-T%cIo>o~& endstream endobj 111 0 obj << /Type /Page /Contents 112 0 R /Resources 110 0 R /MediaBox [0 0 612 792] /Parent 113 0 R >> endobj 110 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F15 11 0 R /F37 33 0 R /F32 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 116 0 obj << /Length 1625 /Filter /FlateDecode >> stream xڅWK6 WgbZ|՞&t74nshz%ͬVH:__<(hAblZEdIE$W"lU^mnp|V@MΔYITg S\檈:"1)稊 demMáv5KLM$ ! )ljllLf(Re%`zuX,ae 2TMgx6sm]3ǃovPYTz; ւ As}J7jU\~{:u vm3JJQ$! #ouTbt19E_$~Sjom2=OoJGA5@m=GMGwq }UQ{Ґm`l{ѹگ;=s@NDG8Cz\: H 9\<5I JuL^m&3cΌ}4}2p~pw=K8a 87m~2gmۼ`cf2XOֈ]Ө;qqz}ae y~Eq60S<ќbNCwx/65Rt,zՔwcvt]J\S"('Zˉ ʗ]*7`1MRiDnoL?tQf]Yqeb@26 ڼŧEOj>T=Kچǝ݄-π<\3U钋XC$w`B{Lb5f<>4uk L|ӵX XhkGW5u^d'I,T /B brDu樓i&4a'Wb be&RKʧk4ݙɒK@cM|O&\# W7 'k@E +NDbr(8%lC &JFN p_R=<;j-KR0SPQu*w-m/njr$)Z,;IR-Ni,4Ƃd"bPT,Ip8d3Ņw ?r}][!(#~JSi8$dS&boȓb_NүdԘx=.cxUa⧐RٱT,9c͸">^,{|Y*:+C=kԢrq%7}8g`6\K٥'zwGo"yO 58( t7cg:[\ƎOk0bqth~*ڈdpѦ+R;q}CҒ;nre[Km~ٹ] &`$}o g)O`"zs!G%.GKnܶz'P*l߄67=Bq>j˩&c+1X\ݕ`Ry_5Z®$gŨÉ ]XE.W}Q7nD-N^@M R!glpg" (t;+~U/ endstream endobj 115 0 obj << /Type /Page /Contents 116 0 R /Resources 114 0 R /MediaBox [0 0 612 792] /Parent 113 0 R >> endobj 114 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F15 11 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 119 0 obj << /Length 1570 /Filter /FlateDecode >> stream xڍWK6WX+gsJ9fDMmʓF]e\.͢n28akF;OJ1{/=:;?7r[pؖ*VQ2i2{Ƀun<qXe;gEnߛp+8xӹ$J v`R)r}[&hyp ~ӣahk&;^=0-gN-DAEabϑ/I24o$lU62JEƷt[@(ڎ5͝(ӯJ)I4ʧ8TgN˙nG0-/FI.*PygّTz cXJ/1Um9UW^(<.lG.UK1/X)fjaIU+m71aǣb]+/aT_HSaMX2.((pn1Z͓9=c\pj8vX8LG6N_;9lPB MO"hv@9>3=֓%eR@PoKo"/z I51PPB4 8Oa3vvS7|)O%{T e0"!CV7^궟Vr33x8{G]NHVWF1RZ={ZEؔ}"JTWQl$\rM r3m[45#Y1W-1'㄃ +EŤTCuX-E ĻeV".>uϋ-!JӇ`U0Qh#@RJaxcRb= p+8i~>RD'B?]"WS'ࣂ1cha [cFώ3Y T<kDo` i7:7k[eFR s5#NzA`_"<]cfM#)V ye4 n<j{קV NN6fsyWOˋW=֨Q-R|&b>΋TES{yDė'8NAa\T,rèTO^< endstream endobj 118 0 obj << /Type /Page /Contents 119 0 R /Resources 117 0 R /MediaBox [0 0 612 792] /Parent 113 0 R >> endobj 117 0 obj << /Font << /F36 32 0 R /F15 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 122 0 obj << /Length 1480 /Filter /FlateDecode >> stream xڅWIs6Wh|P3M{nYNR94=P"d!)}$+< ۠wW?L'qQ|TeQJǹ*fvOv/$2Ck*Ϣ,.Rp2[du\~~k3LFd4+%hHT $me;3Yw;>FϔD)Bt$L0`> endobj 120 0 obj << /Font << /F34 31 0 R /F31 20 0 R /F36 32 0 R /F32 21 0 R /F15 11 0 R >> /ProcSet [ /PDF /Text ] >> endobj 125 0 obj << /Length 1210 /Filter /FlateDecode >> stream xڕV[6~_)H! ڧp7$4Nfvt" LQ}ŰCT%sc/ Y A:p C[|f} CoX5mkwmo@ "^>#C/u5S شkұ}Q焟mg &3$wJuS}ljg(|i6َab X0|{8'kC)O/)бc50CN޽$^wM mq7OmϺ)V͓;26n)Xt)\ b*n=阡vW s_?Fg&a4Lʕ`3q,/ǡ8VTHXtHKkzPLXzwDYrz lv+ B,PҢ@XH+D֙6bq%A`!?TtIOk\??{=)ɳ`L.SY, sJQiɌ<*> endobj 123 0 obj << /Font << /F15 11 0 R /F36 32 0 R /F37 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 126 0 obj << /Length 100 /Filter /FlateDecode >> stream x313T0P04F )\\@$lIr p{IO_T.}g E!'EAz \= endstream endobj 127 0 obj << /Length 176 /Filter /FlateDecode >> stream x313T0P0S5W05P0PH1*21 M!2ɹ\N\ &\@a.}O_T.}gC.}hCX.O `<"Hv$,"=$1$԰1 C7 b an:M5 H xY&\=kA& endstream endobj 128 0 obj << /Length 208 /Filter /FlateDecode >> stream xM=j@*^Gw,C@T*EHL@*KK_I9It*}y2$`fYV . ejީyn4^7Z7jM~%-?\> stream xEϱJ@;xM>alHv L!he!V`ɧS )2ӜNU^nx[(j*.wVWGo?qY|{_G. #LJbcO.yl@ 93v\̄|Xp4B$$ &`vBJRYF Ŭleµ; $ H&Rm\"mK w% endstream endobj 130 0 obj << /Length 191 /Filter /FlateDecode >> stream xڅο 0t(G=i:vtrAPGEWooo1 ._rv+/8ekeX3^YRTrC݊̔Pdw5ǖLgrsNU@r7i* D"ݡC83thH+CPX ~%$BfS& * Mc endstream endobj 131 0 obj << /Length 218 /Filter /FlateDecode >> stream xڍϽ0[x ((&2`A+xPm w`4''q4SW 5o3f! !3B8/}6>VQk* 5bJq2"- d芆EpX*kyw? 4!b>3^`4)5ֺdTi@X氅Y endstream endobj 132 0 obj << /Length 241 /Filter /FlateDecode >> stream xM1K1/xw\ku vTtmRIG k=@wLULմVQrw8oR 3Ų=WOk,'B]תZbP"L?"z0#~$E0,9 O⇐0sKϿ#_^t"9nE n˄ w74m0_2o-K6ҷp,xJpG endstream endobj 133 0 obj << /Length 206 /Filter /FlateDecode >> stream xEʱj03xͦ{Ʃ!Ki PH!S1CBz4?A!2߭ 5{zh񌝴FV9p;}n+ᅮO#hwth9Ⱓ*:u2\ Rw.&? ,44y*$D*BZ qLAŤT3 SEkk_sc endstream endobj 134 0 obj << /Length 185 /Filter /FlateDecode >> stream xUͽ 1 B> lϯp*AAAQp*>= N$Cn7"E}ex\Q0A\-J3GY,Ɣ:#A3}+RfwkҊ+ s W[C ؈uC*F\Lv endstream endobj 106 0 obj << /Type /Font /Subtype /Type3 /Name /F40 /FontMatrix [0.01204 0 0 0.01204 0 0] /FontBBox [ 5 -18 50 58 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 46 /LastChar 114 /Widths 135 0 R /Encoding 136 0 R /CharProcs 137 0 R >> endobj 135 0 obj [43.59 43.59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43.59 0 0 0 0 0 43.59 0 43.59 43.59 43.59 0 0 43.59 0 0 0 43.59 ] endobj 136 0 obj << /Type /Encoding /Differences [46/a46/a47 48/.notdef 97/a97 98/.notdef 103/a103 104/.notdef 105/a105/a106/a107 108/.notdef 110/a110 111/.notdef 114/a114] >> endobj 137 0 obj << /a46 126 0 R /a47 127 0 R /a97 128 0 R /a103 129 0 R /a105 130 0 R /a106 131 0 R /a107 132 0 R /a110 133 0 R /a114 134 0 R >> endobj 138 0 obj << /Length 109 /Filter /FlateDecode >> stream x363P0P04F & )\\@$lIr p{IO_T.}gC.}hCX.O3pzrrb' endstream endobj 139 0 obj << /Length 213 /Filter /FlateDecode >> stream x}j@!0;/nVz X AГ=Xګ(ysX2,"?¿g깘q^ӅgZT䶜g\=%+m) endstream endobj 140 0 obj << /Length 231 /Filter /FlateDecode >> stream xڅ=N@F KaY\)?R\ AE(ޣ(>K'3+i̛&ox!u}Q4]s}SzMK3ׁT|:~Pyܲ;~Op=^ze'#PL@)nxN=" g$J4Ke?rF&c92&m #k\d^S̈g`^EvpA%lڷDpt endstream endobj 141 0 obj << /Length 197 /Filter /FlateDecode >> stream xڝ10GH 컀BbHLtr0N Q8BG4yR@+I$]%>0/iBc~Mft?g3@L d=wZ@[b@a6ƴƞC-3zWkp=s:*i&*Qn*<&JgiwHp:my@ endstream endobj 58 0 obj << /Type /Font /Subtype /Type3 /Name /F39 /FontMatrix [0.01004 0 0 0.01004 0 0] /FontBBox [ 9 -1 53 64 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 46 /LastChar 116 /Widths 142 0 R /Encoding 143 0 R /CharProcs 144 0 R >> endobj 142 0 obj [34.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 51.72 0 51.72 0 0 0 0 0 0 0 0 0 0 0 0 0 0 37.43 ] endobj 143 0 obj << /Type /Encoding /Differences [46/a46 47/.notdef 99/a99 100/.notdef 101/a101 102/.notdef 116/a116] >> endobj 144 0 obj << /a46 138 0 R /a99 139 0 R /a101 140 0 R /a116 141 0 R >> endobj 145 0 obj << /Length 233 /Filter /FlateDecode >> stream xڝ=n@raisq:K`$\ %E*PR$JZ|̳҅Y}7>'t*D<ũ$/LJ6k36K$lʕ|n^)=B#5QPDW:%#Jc9уr4vh| }*qlz={[#3CS5=97 endstream endobj 146 0 obj << /Length 224 /Filter /FlateDecode >> stream xڝ1@EPL $&ZY+h+pJ "θL&4ٿv<Fq0!liza zlza:m+TM܉JRNIPhSh50O"gRE4;hhZz&/z( ɟ|{=eo }⁝vw]Svˎuҹ?࿀ykxB{ endstream endobj 147 0 obj << /Length 149 /Filter /FlateDecode >> stream x3634R0PP5T02U04UH1*24(@s< ͸=\ %E\N \. ц \. ?@g? r@h6 5 ?~0~`$1 endstream endobj 148 0 obj << /Length 105 /Filter /FlateDecode >> stream x3634R0Pb#CSCB. m@ $ɥs{IO_T.}gC.}hCX.O!'W ( endstream endobj 149 0 obj << /Length 218 /Filter /FlateDecode >> stream xUJ@ tayݬi\  SœCEobk| eYɋS[p'%/K{募ZLsO[2-7;jjVI#P#6 ORK?zsɻrHvQ5 n Z endstream endobj 150 0 obj << /Length 96 /Filter /FlateDecode >> stream x3636Q0P0T0P06T02WH1*2 (XB$s<,=BIQi*S!BA,\\\5^ endstream endobj 151 0 obj << /Length 216 /Filter /FlateDecode >> stream xUP i̼M! + +Pe=GGզDm>DWϟG-}n' hCqhQh-KIM9I 'xݯH}H x?th /j ܆j9Wi`h>΢w敼8XBJ"ZD%{wvE{yW[8>inOJW[ endstream endobj 152 0 obj << /Length 203 /Filter /FlateDecode >> stream x= `MN vlRk"NI4:՛p14}>n]t|<x144} '5;B@r/db MTB *7@w"#DI.> stream x3332Q0P0bSKsCB.S3 I$r9yr+q{E=}JJS ]  b<] 78z0;b?0eBS`H(0KAH (.WO@.M endstream endobj 154 0 obj << /Length 235 /Filter /FlateDecode >> stream xڥ @\z Z< fNSuPԹG> stream xŒ=N@ M!$)fE"T (AKrSXؓ,=S$_> stream xҽ 0-}V NlGpPz&M@ᗄ$$BgK|<p8s93d-!%_Vve9rȑx)QTŔxe4GzMa)["ei=AikLM!Ch.TC#ig^woJ-$KHWeN'Q<6?K endstream endobj 157 0 obj << /Length 208 /Filter /FlateDecode >> stream xڍҽ 0[[' I'|д@ໄ\.]=0փa:=)%!i> 2xށc@&]CuŘPq"p3q%ѫN(WUyx98 V6q1 D=$D/$|d endstream endobj 158 0 obj << /Length 173 /Filter /FlateDecode >> stream x3731R0P0b3S3 CB.3rAɹ\N\ f\@Q.}O_T.}gC.}hCX.O@>`AJ3Biz(m4?f 43+F3| @3hf4;`+hz~v1HiP~ r ϐ endstream endobj 159 0 obj << /Length 300 /Filter /FlateDecode >> stream xҽN@P\2 p Xg"V*4Q5&*< ƙ`Q{,̿,OsL1Ǔ 3/)7(r^L<k^gHVAƇ k4#g̫`Id KD-XHTHQd[;'n1i/j{;_ZX\?b. 꿫Q_%5tIs&AciUݠhNN SӤ#vPHDH&4MnLϕO!|&%Ig] r endstream endobj 160 0 obj << /Length 172 /Filter /FlateDecode >> stream x35׳0S0P0V5T05R0PH1*2 (YBds<L,=\ %E\N \. ц \. ' "FI)D??8IPC?0a Td` 0pzrr endstream endobj 161 0 obj << /Length 290 /Filter /FlateDecode >> stream xڍ=N@%[l2 G`O hL0XF[h#PRlwgv@~vvڋ_wOh8>az'vPŻPÍo>ceF4BHn, !QiADIT!Iޛ=ܲ EsgY}/+̳ Lq+qaNXp\$FkU_*K١UqO,-4,iTU< x nx? endstream endobj 162 0 obj << /Length 149 /Filter /FlateDecode >> stream x3336T0P0b3#3 CB.Ss I$r9yr+s{E=}JJS ]ry( h 4?8h{443fPB3\=a endstream endobj 163 0 obj << /Length 278 /Filter /FlateDecode >> stream xڍMJ0. o Hd8]ʅjtBQ讽WM0ϼW:(yĚt+ܲfshsat}e^-o.V?^RV T+xi[D2h; _Џ.#ğ Gf ,D# H_W3H| gQPMAP]r:)8P]ʂiP]͂.Yc႒4<]:l_@c0ώá%+/]z endstream endobj 164 0 obj << /Length 277 /Filter /FlateDecode >> stream xm1NP!$p*l!YD ,6Vjid;<e`Ia93o,(H~<+mTъvE-Ur+pcH[>ŲϏW,7Tc]M[ !@‰:,]W`t~]'!LdDUHZKZi:j4DGDiU6LKGT:ҴJ*M¤%#Qt'%#Q2bⴉ&N#&N8m+L\T+wetA f U,(we#ĿRWY›XM endstream endobj 165 0 obj << /Length 286 /Filter /FlateDecode >> stream xڽN0 sb!~U1U:H01s(};R!F:$_؎k{sqV xZa%>Wu kyzm 7,C ۻ+du쳇vι:>H%0h}GONhIl+"$>x$OA93H:7ICc0C0” d4rGZƹ3h醥A:w*8,;$qQRrWEg{ !Љ̳A:>6@ chٰu } endstream endobj 166 0 obj << /Length 185 /Filter /FlateDecode >> stream x3735V0PasC3 CB.3s I$r9yr+s{E=}JJS ]  b<]co100U@  P3 v,f[=n/O~085 )cpzrr\ endstream endobj 167 0 obj << /Length 251 /Filter /FlateDecode >> stream xڭ1n0: w֠4YDH!d̐h9 G`j1RaKd}22yPD zIP"eDݓ̛ ŖdbQQdoiSEN܍WƩuJ3dkYAW fuM<7'Mn݀ASwMR \So'%uvrCh2<>\+#_2ocibBר?i h endstream endobj 168 0 obj << /Length 305 /Filter /FlateDecode >> stream xmJPO"pyfaa]Vbv ɣQ)#\83w.x9zuhI5t^Sҽj-%]2on۸+n$>?^];z,i<H90w{1c]< h=Q=6 zh,݌$d1b׆ا#XA}ăiM֩S-dpAí$ r0cGݑ"y*\'5 К?)ԜhVVQnܽ endstream endobj 169 0 obj << /Length 162 /Filter /FlateDecode >> stream x37׳4T0P0bs3sCB.3K I$r9yr+Yr{E=}JJS ]ry(D11o``!`G0 5#Fʨ e02`'\\\T. endstream endobj 170 0 obj << /Length 208 /Filter /FlateDecode >> stream x= @G, &"),J--mMQ> stream xڝN@!H5Z5!%5I=y0ԣ&x#:3/d-:;>Wr!O䑒J|VM(EB./kObߤDt["JbGnֺ8Wtx@NC8YkccU%ScUS$FSy(wPARpXiV@}jH-DqL jymVFyKV/U5/J/j{HLeŋ2+WrA0'' ">5"Sq'<7 endstream endobj 172 0 obj << /Length 322 /Filter /FlateDecode >> stream xڍN0E'Ji$ᵡ,)@T@I6 "#n0?rDǶ{'مi ?ݱ9sox?xzuYuX_.x|z}{iZ75#3\k:@@ TT95'X!NH\bȄD&:QNbȄHL.}$]*SO[$]M }*mߤS?IٯY7%1gAETqy1WbNٜnRNdRړLJt2)ɤ|X7C zah endstream endobj 173 0 obj << /Length 251 /Filter /FlateDecode >> stream xұN02D%{Ef H01 &ء&V$}J dz ؝DĎ)<\SIr p$=V'^8m=/St}ϨB7glrt-Z(x#Hc܋@2@֫4( PtCպ{2M]T[!1UaZXcY Xȍ ^$7jo*s0ΔwoJGmL ۇܑ"=?ԩ›> stream xڍѱJ@9R7p p$p` A+J--m<=J!e|3\{% U*4V'o{apqxjC.gU^|$_ LTOG"'9|d@: f$j%Y#e%!-#,BW .$# 䄔;Y"Hg3xF^Blqb kmCSlʤ*)Y$%ˤKJvIɼtys>|^& endstream endobj 175 0 obj << /Length 232 /Filter /FlateDecode >> stream x}ϽN0Jl;Ta?pۜ7kBjikVb7/;8jC'_o6RsS-3[&0`Q0|T*M *pӌ_2 $Lo1ÔJc4|ݜ~82;eSz)<8`͊N9y{2hl endstream endobj 176 0 obj << /Length 229 /Filter /FlateDecode >> stream xő; @72M4(SZYZZ( h"8P+q3z ;MVYmcsd4ٟ9ą!8~̸+fܒ^ ke"e, tGd?˄b$U5Ҋfl$*lMgn CJhVʷ3Fip endstream endobj 177 0 obj << /Length 214 /Filter /FlateDecode >> stream xڭ1 @E'l&G\@7E1#BBBQRgEv>'S &3!3c4#NqRdn uS:]L> stream x1 0yд*N`A'qRGEx 7бC=q(8 vي1&]lwqy,N1y 6n_pa8&:2)љBztUUN+IZ^>j$qIMMR'*mse cL@I 9Lwni endstream endobj 179 0 obj << /Length 226 /Filter /FlateDecode >> stream xu=n@gbi|eYGH@TDjh> X VyyD%JC80/*v[ dvջ\/_Gvxv+١hJʞ2Ն(W FOFFl@&%`}b zdeL,>2~dgygL[41Ƕ hKyJ BasQ D endstream endobj 180 0 obj << /Length 167 /Filter /FlateDecode >> stream x3632V0PacsCB.cK I$r9yr+[r{E=}JJS ]  b<]700P?aA<$AD0H0 A6b#4o@ endstream endobj 181 0 obj << /Length 281 /Filter /FlateDecode >> stream xڕ=N0’!sHE"T ()@`)<؋$'{Iן5-5tA-ukZw75oZOv3RpC/^Rk-=ԣ/qZqg XxqdWjIpnIUi+W%KK"5-CiK #;A58E, k΢SvYlK S^`%*#G4dPɲ1:^.eiiC%>+^ ~ endstream endobj 182 0 obj << /Length 167 /Filter /FlateDecode >> stream x3332Q0Pa3 TH1*25\Dr.'~)PKW4K)YKE!P EObPFS@ >? uBP?(lԁD(.WO@.Jm endstream endobj 183 0 obj << /Length 131 /Filter /FlateDecode >> stream x3634R0P0b#KsCB.#1s<L=\ %E\N \. ц \. 5 7?D # P?P1?H{pzrrD endstream endobj 184 0 obj << /Length 186 /Filter /FlateDecode >> stream xՐ@ kH#;#q"ALD'㤎xPK~m<S "PcmNJf_w8cfPn)(V4+]'zNʜv=@A/ q.n1x<}!77AuuڤK<Ӿ+ >փ endstream endobj 185 0 obj << /Length 220 /Filter /FlateDecode >> stream xϱn0 HrObB*L 22*+cc" F,YϲA/~o:ϜuʰXoiTYp'3d|6dFcLxsr‘"?D+c~DRdZ+-ЭAR.ZT7rBʰU. (]«],D> 4Hsz/iNW^`ص endstream endobj 186 0 obj << /Length 107 /Filter /FlateDecode >> stream x3634R0P0bc3KCB.#S I$r9yr+r{E=}JJS ]  b<]0q7c.WO@.S endstream endobj 187 0 obj << /Length 209 /Filter /FlateDecode >> stream x? P C!;Bs_ZA,T;:9::( n>'GoqQzJcߗdڍZE5eujh}OSXcu4vB{%gQh@&lJ2DxbΪUdK 9T`P+XU.> stream x3332Q0Pa3 ebUej 䃹 \.'O.pSS.}(BIQi*S!BA,C}?7T10@ 6P?|'W [ endstream endobj 189 0 obj << /Length 213 /Filter /FlateDecode >> stream xڥ1 P #B[SV N⤎h=JбC1&E\|>?dј>c &tA$GOX4 "4 %]/#d5#MJ[h6%y=\0`..Y尀AK<@\@Q#6-WQwu;Sw ?kBKn&j״1a>7k.sk|]ŏf endstream endobj 190 0 obj << /Length 227 /Filter /FlateDecode >> stream xڵѱjAY,i|tNWbe!V&e->B|-XDTX>euڝLJ+Hޗ,ה?8G۹)ϲYo؎^$e;E*ɒPS݁T+(5OT@u%BMwF=poH-eua~nl]Tȇ`1)6AbXi DA O  endstream endobj 191 0 obj << /Length 161 /Filter /FlateDecode >> stream x3137U0P0bcSCB.cK I$r9yr+[r{E=}JJS ]  b<]oH?1"~`? L7?bl'W n endstream endobj 192 0 obj << /Length 223 /Filter /FlateDecode >> stream xE1N@ E?b%790;"E"T (AKq%GH"4o4v]_+^sk{w6[{T^o(=fKdJ~|Q_stgj8UR:EZ ʷcVG@VjU'3rع: Fg u1vM#bj2;4@* endstream endobj 193 0 obj << /Length 173 /Filter /FlateDecode >> stream x3135S0P0R5T0P03VH1*26 (@ds<M=\ %E\N \. ц \. Xv8'=3,X w'C=`?`A<7@ ? r  ,t endstream endobj 194 0 obj << /Length 166 /Filter /FlateDecode >> stream x+@i*6#06&$  (D@@/G[58"e9P!Zj Z)%eʡ^Rv3:N[|LuM+C]MD ! a9PIcУd/-x>o;w*!aVB78\ d endstream endobj 195 0 obj << /Length 216 /Filter /FlateDecode >> stream x}=j` `-A䳋M)PH !SڱCC |'ꫯo4J$QLS<Üh'+v 3v/ز^e`7O$e7e*Ɋ*#3Qs;*ؗ /@ih#2+1@[|iơy(sG=ַ G#ʳpH endstream endobj 196 0 obj << /Length 276 /Filter /FlateDecode >> stream xڍJ@ 970&X9z l o=3wR<,gN1SZqBxyy*N}8_Ӆz7\-HDHC!ڐ%ZCƫ%\:Pm)(0#tB%S@=ERPGK(b'$GWP$d9Gmj9h m@Mi^Hv:vP{*j1uE!7blEDna^ԟ(¯n  endstream endobj 197 0 obj << /Length 234 /Filter /FlateDecode >> stream x}N0(C['4R[$2 ĀlUGK$/ 0ղOeu%\s][E;jjXƇZw䟸-?_o-p НiB1E mQ,GE!A0)29÷N3DhIA i17VpH4Y0Ml3ÐEgP1jDEKێ(k endstream endobj 198 0 obj << /Length 267 /Filter /FlateDecode >> stream x}ϽJ@Rn7p h~(b`]VbB !y&)Sdw̙SRqKu&Zso\iLs9 gRiή1笹ַRpBGn6b-eFGZ0Ucc^pG))$)Y= Ư㗥itjuGj wAlhA_Bg6UT2u2Ho^_˄>> endstream endobj 199 0 obj << /Length 126 /Filter /FlateDecode >> stream x3530T0Pb 3SCB.c I$r9yr+[p{E=}JJS ]ry(000```` H0@,0%#zl'W  endstream endobj 200 0 obj << /Length 266 /Filter /FlateDecode >> stream xmбN0|G/qCyfίF0t^ߟlߣO;O$9 1!rHdڈ4f&pBl9{Ð68,ִ/vKqbҷ+tي%+NC7"EB8сVP #RI*h~j:Rᕤ[Il`Φʗ'& endstream endobj 201 0 obj << /Length 258 /Filter /FlateDecode >> stream xڅN` {@ $g%^Ltr0NzGh< @= icu]RHRb)U?XHUw>5?1r~geΛ{p~z< 7g!ґRUcR;Q2QP:X Ja2m0{tƔyl[J8 XϠ-AvHxiOzMYSgčV6oGbǝ2ClčLU[ϟ]~(6?d endstream endobj 202 0 obj << /Length 216 /Filter /FlateDecode >> stream xڭбjP r7DpI *NJ'utP-4|-7_խmzޏs/{Ck#ґS]ŲdbkFR̋&1 {*|ZL4XL_m̛3ul󇚴] I@BI /s'sABNjAOB/#&-'5o#Rԑ endstream endobj 203 0 obj << /Length 253 /Filter /FlateDecode >> stream xڥ1N0 `?uGx^:bF4G  Gءj]&`>EIc;Gy:r>fG}=~@{M;vyJn-2ЀL]_~EI-jV8Yz&? }Bs훃$ShjMM|wSSYN-Nm8NZT2f5JD 2Mr[μ̐51= x_d endstream endobj 204 0 obj << /Length 264 /Filter /FlateDecode >> stream x}пJ@9Lso &p6p` A+ RK EGG#s&~lvf IYI)A+ A+~ub)u?{MZցٷ~sy*h[nB@""^H1j$eLЯ; tY;suVfL5*}:;8CDx:H:n2ffuYrViL=݁z!mN@Hö h+y- endstream endobj 34 0 obj << /Type /Font /Subtype /Type3 /Name /F38 /FontMatrix [0.01004 0 0 0.01004 0 0] /FontBBox [ -6 -25 114 75 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 16 /LastChar 121 /Widths 205 0 R /Encoding 206 0 R /CharProcs 207 0 R >> endobj 205 0 obj [39.19 39.19 0 0 0 0 0 0 0 0 0 65.35 0 62.24 0 0 0 0 0 0 0 0 0 0 43.56 43.56 0 0 31.12 37.34 31.12 0 0 56.01 56.01 56.01 56.01 56.01 56.01 0 0 0 0 0 0 0 0 0 0 0 79.64 80.91 85.86 73.53 70.42 88.05 0 0 57.86 87.71 67.31 106.26 87.59 84.13 76.53 0 83.56 62.24 77.91 86.09 0 115.71 84.59 84.59 68.46 0 0 0 0 0 0 54.46 62.24 49.79 62.24 51.11 34.23 56.01 62.24 31.12 34.23 59.12 31.12 93.35 62.24 56.01 62.24 0 45.75 44.19 43.56 62.24 59.12 80.91 59.12 59.12 ] endobj 206 0 obj << /Type /Encoding /Differences [16/a16/a17 18/.notdef 27/a27 28/.notdef 29/a29 30/.notdef 40/a40/a41 42/.notdef 44/a44/a45/a46 47/.notdef 49/a49/a50/a51/a52/a53/a54 55/.notdef 66/a66/a67/a68/a69/a70/a71 72/.notdef 74/a74/a75/a76/a77/a78/a79/a80 81/.notdef 82/a82/a83/a84/a85 86/.notdef 87/a87/a88/a89/a90 91/.notdef 97/a97/a98/a99/a100/a101/a102/a103/a104/a105/a106/a107/a108/a109/a110/a111/a112 113/.notdef 114/a114/a115/a116/a117/a118/a119/a120/a121] >> endobj 207 0 obj << /a16 151 0 R /a17 149 0 R /a27 152 0 R /a29 153 0 R /a40 145 0 R /a41 146 0 R /a44 147 0 R /a45 150 0 R /a46 148 0 R /a49 199 0 R /a50 200 0 R /a51 201 0 R /a52 202 0 R /a53 203 0 R /a54 204 0 R /a66 154 0 R /a67 155 0 R /a68 156 0 R /a69 157 0 R /a70 158 0 R /a71 159 0 R /a74 160 0 R /a75 161 0 R /a76 162 0 R /a77 163 0 R /a78 164 0 R /a79 165 0 R /a80 166 0 R /a82 167 0 R /a83 168 0 R /a84 169 0 R /a85 170 0 R /a87 171 0 R /a88 172 0 R /a89 173 0 R /a90 174 0 R /a97 175 0 R /a98 176 0 R /a99 177 0 R /a100 178 0 R /a101 179 0 R /a102 180 0 R /a103 181 0 R /a104 182 0 R /a105 183 0 R /a106 184 0 R /a107 185 0 R /a108 186 0 R /a109 187 0 R /a110 188 0 R /a111 189 0 R /a112 190 0 R /a114 191 0 R /a115 192 0 R /a116 193 0 R /a117 194 0 R /a118 195 0 R /a119 196 0 R /a120 197 0 R /a121 198 0 R >> endobj 208 0 obj << /Length 167 /Filter /FlateDecode >> stream x313T0P0U0Q0T01SH1*26(%s<=\ %E\N \. ц \. L@$AD=$? ?@P&VV̌...SG;&.WO@.n= endstream endobj 209 0 obj << /Length 96 /Filter /FlateDecode >> stream x313T0P0T5W02S0PH1*2 (Bes≮=\ %E\N \. ц \. (\\\&Q# endstream endobj 210 0 obj << /Length 162 /Filter /FlateDecode >> stream x] 0->KNZ N⤎>cbMN8>] y GGbO%T2[0YFK&pOdLSAZZFHW 2"L}Tߩoﻭ "Іֺ? endstream endobj 211 0 obj << /Length 114 /Filter /FlateDecode >> stream x313T0P04W5W01T0PH1*22(Bs<=\ %E\N \. ц \. a`?r 5ez endstream endobj 212 0 obj << /Length 116 /Filter /FlateDecode >> stream x313T0P0V5W02W0PH1*22 (Bds<=\ %E\N \. ц \. c``pzrrlI endstream endobj 213 0 obj << /Length 104 /Filter /FlateDecode >> stream x313T0P0UеP0T5RH1*26 (A$s<≠=}JJS ]  b<]'W * endstream endobj 214 0 obj << /Length 113 /Filter /FlateDecode >> stream x313T0P04F F )\\@ IrW04 s{*r;8+E]zb<] P\=AQ@ endstream endobj 215 0 obj << /Length 136 /Filter /FlateDecode >> stream x313T0P04U54R0 R M F0\.'O.pC.}BIQi*S!BA,???PP'W ,5 endstream endobj 216 0 obj << /Length 99 /Filter /FlateDecode >> stream x313T0P04F )\\@$lIr p{IO_T.}g E!'EA0XAՓ+ ; endstream endobj 217 0 obj << /Length 157 /Filter /FlateDecode >> stream x313T0P0U5W0T0PH1*26 (Bds<=\ %E\N \. ц \. @#HD؁:Q'@&> f0d82>3 df Dpzrr@: endstream endobj 218 0 obj << /Length 107 /Filter /FlateDecode >> stream x313T0P04F f )\\@ IrW04 s{*r;8+E]zb<]:\={-= endstream endobj 219 0 obj << /Length 110 /Filter /FlateDecode >> stream x313T0P0V04S01T06QH1*26 (Z@ds<͹=\ %E\N \. ц \.  \\\A endstream endobj 220 0 obj << /Length 177 /Filter /FlateDecode >> stream xEɱ @4z t`955DS5Eh>x]8|7Q4sN#Őc5ӕUFr2rB2.9"Y!He  t?b@XmXa[`9>^'oᙠĈ~W:ށ0JrA endstream endobj 221 0 obj << /Length 103 /Filter /FlateDecode >> stream x313T0P0W04S06W02TH1*2 (B$s<,=L=}JJS ]  b<]0 szrr$~ endstream endobj 222 0 obj << /Length 117 /Filter /FlateDecode >> stream x313T0PT02W06U05RH1*22 ()Lr.'~8PKLz*r;8+r(D*ry(01l;cNJ l r \+ endstream endobj 223 0 obj << /Length 168 /Filter /FlateDecode >> stream x313T0P0bCSCCB.cs I$r9yr+s{E=}JJS|hCX.Ov;: PNF01`u@Qf f2J~ 񀿁;'W Ǟs endstream endobj 224 0 obj << /Length 251 /Filter /FlateDecode >> stream xڅJA'\!Ls ޱƅ+,J--;y4B[O"hWf,4s n,͡c%:IRc{l3yz|c;9?Tj fDTP&E{h+9G2D~>/BGE$E7~ }KvmV:$,H@%j}W}azH O#bA=b2~|0 endstream endobj 225 0 obj << /Length 239 /Filter /FlateDecode >> stream xڍ1N0Dg"o|$Q6ZZHPQ *!p!eU8i=opZ-uC玝|H?Я\~4wJ3޻MÍ?ε/2"P<> ufA@5ã`cO4s1d1gʮɧ:eP~Kٜ-˺QvOh9X܅H$% RM Zlmb dr)}A!> stream xm=` .߁1D'㤎]ċ8p n #~$(}L> stream x}0K:#pO`i1NI4 Kd0FMj\ijx@½%\PPGL2P[2;|=7P~K<Ls 9y|9#l K#vӜ_[ZCN _CF,a8[NXTQ endstream endobj 228 0 obj << /Length 218 /Filter /FlateDecode >> stream xڝ1N@4QY AT (Ar 3AzWJ_kN|y9H/vI'Zun8-)\ؙBwoVWg)6r}Gݚ3J~ ZTMa.)- o̤/`tR27V֯ifhh`+-RN]dvg9 endstream endobj 229 0 obj << /Length 183 /Filter /FlateDecode >> stream x313T0P0bCSCCB.c I$r9yr+[p{E=}JJS|hCX.OD|?b0 AD}&> f0H0b!On%rv?s?>  `szrrǁG endstream endobj 230 0 obj << /Length 147 /Filter /FlateDecode >> stream x313T0P0b#SCCB.c HrW0r{*r;8+. ц \.    `|$lthvb)،6 Q .WO@.̌r endstream endobj 231 0 obj << /Length 145 /Filter /FlateDecode >> stream x313T0P0bCSCCB.c I$r9yr+[p{E=}JJS|hCX.OH" $`@CLmQD !( ,x endstream endobj 232 0 obj << /Length 227 /Filter /FlateDecode >> stream xڍ=N@\4PY AT(PR$ގk 7eUI"Q|{;5袥aC]8> stream x313T0P0b#SCCB.c HrW0r{*r;8+. ц \. ?c4 N%'W  endstream endobj 234 0 obj << /Length 108 /Filter /FlateDecode >> stream x313T0P0bc SCCB.crAɹ\N\ \@Q.}O_T.}g E!P E >Փ+ HX~ endstream endobj 235 0 obj << /Length 218 /Filter /FlateDecode >> stream xE=n@E.,MvNm M,#EPR%)SB9QPr.]lȢOLt&c&FRf1K~|U.k9s endstream endobj 236 0 obj << /Length 123 /Filter /FlateDecode >> stream x313T0P0bCSCCB.cs I$r9yr+s{E=}JJS|hCX.OLŘN|? ?*f endstream endobj 237 0 obj << /Length 177 /Filter /FlateDecode >> stream x313T0P0b#SCCB.c HrW0r{*r;8+. ц \.  B`W${1y 01h͇q|Fa  l?`!'W , endstream endobj 238 0 obj << /Length 194 /Filter /FlateDecode >> stream xU-@%&c 迨 P$u[GEev K1h8&nL؃-;CFXA_>pi ?!&+R"c(ɉ(N+ƵGSroW\"Ϡ+tIߣmśh5| dXB]/qs| endstream endobj 239 0 obj << /Length 170 /Filter /FlateDecode >> stream xŐ1 @ERxt)R-n!he!VB9EqW7seϨxAƘxң3U5ݮr 쀾"h `,T'uID x/H 9 Zpqol endstream endobj 240 0 obj << /Length 174 /Filter /FlateDecode >> stream x313T0P0bSCCB.cs I$r9yr+s{E=}JJS|hCX.O0"370`H؃@`?#^^Q`Cƃ-Y  f $700 F"b\\\wN endstream endobj 241 0 obj << /Length 197 /Filter /FlateDecode >> stream xڕС0jrf{::"#a e0XvtmCOh)T^ aLiOvG ֤FscT,r0ʖSiNfEN`Y9Q3pqNN3O0n ZJ4&}5ty+A -ؼ+ԀW2>z endstream endobj 242 0 obj << /Length 236 /Filter /FlateDecode >> stream xu1N@ E"a|$H" * DH$*\!G2HQwmT 娔DJsՠg?x#Um<>r\Iq+wn˜24wC0MLNLtA 9a=tC68yF̛aO2/a<&E>oxv endstream endobj 243 0 obj << /Length 124 /Filter /FlateDecode >> stream x313T0P0b#SCCB.c HrW0r{*r;8+. ц \. @†H0 z(QՓ+ +T endstream endobj 244 0 obj << /Length 167 /Filter /FlateDecode >> stream x1@G(LtYY +D ,ZZhq@IaGhf'_Ϭgɂ#}SqblF.b27+e=Z3bÏB&.ْ`9:Rs)U*H]J^w¤%HRQC/~*hGo8 endstream endobj 245 0 obj << /Length 189 /Filter /FlateDecode >> stream xe;@!$p,1q ,ZZh.F5\5o2s? q98^}G|9^0vV2#kgdfAYL{NELi iww?>, ʐ ] xBi LHʛ1VL0JRaVuZ-Vi endstream endobj 246 0 obj << /Length 197 /Filter /FlateDecode >> stream xڍϯ P#)>tœ &5m.b_CYN wzto,NvE69Wh .-rZeD/@sL@56Mo%n} :}v%$@FTiXz[V!zyM-+_X=Ey>J3CN.{K endstream endobj 247 0 obj << /Length 226 /Filter /FlateDecode >> stream xE1n@б\ M<'m JHqT)"*L(iRZt)GLᏱEW23ɢ}ɟ\YV>>xUs&Ւg9pzy^Jz-NS={kg`g?EJEAJ>.dt &JI0r熻qM 5.M_f[݆{GZ>_?WKq{ endstream endobj 248 0 obj << /Length 182 /Filter /FlateDecode >> stream xڥϱ @ Y| j;:9::(}{{3!HŔĔ'tIio _Q[z>^WnEWtL(>a]Q3-c'4a|` BAI=EzNGKC8e  p&ȕ5 l endstream endobj 249 0 obj << /Length 191 /Filter /FlateDecode >> stream xm= @ x Ղ?` A+ RK E[)S,;h%Xfh< }:ex\T:8^pVQ>EmqF;)C}FE$ sXBט^Hȃ@?|bezYETZ_q-`R!a~K<.Kj/\ endstream endobj 250 0 obj << /Length 187 /Filter /FlateDecode >> stream xڝ= @g"#Xraˀ!N;GYg!BR@[]/w%ܔ|q&?,Lƹ+x"ҡ@yRx -0遍~*?umֽr!0e] EӐ`%Ж*sz endstream endobj 251 0 obj << /Length 182 /Filter /FlateDecode >> stream xڍ1 @EIk9 n!he!Vjihh%GL2Φօ}g?ofǜlS>'t#k5?;2{Zd܆L]rBC\"iJzD=[5/jLAOQ~ߏ@B_Zh4J5Ϋ^RMuZ9uEJ endstream endobj 252 0 obj << /Length 193 /Filter /FlateDecode >> stream xڕα@ .<} L &`qRG;[pqᾤ 5)+H+9s<^&|XLפ*L,r0S⺡MNMC $z11wx!"><Zi&N?>cH RaH'c ˁ:ѴmO, YK endstream endobj 253 0 obj << /Length 201 /Filter /FlateDecode >> stream xmPE4K BBrmM>}}V́;ܹiԥS=T'u9&a+NFF⻥OK+ VZ[( f#2;܃J>PDCv@Z }•cC 7'* 4u.7mp b2rcZI_ endstream endobj 254 0 obj << /Length 154 /Filter /FlateDecode >> stream x313T0P0asSCCB.c1s<=\ %E\N @BA,@Az H?*;&p4Aka[~ `1.WO@.^ endstream endobj 255 0 obj << /Length 253 /Filter /FlateDecode >> stream x}J@#E`}!k.p` A+ RK E#U(y[,gǰzqꜟJz`;볟 Z.(wk~x|ws%{/xv4lnfxYDdItSn\#7@efd=`El6X4jB*`f}E_h0bj1SL̀,x>v*!*:MƢ:?-y%ۧF@-7> endstream endobj 256 0 obj << /Length 161 /Filter /FlateDecode >> stream x313T0P0bcSCCB.1s<L =\ %E\N @B4Pe,B @d ?  B~oAd $?HzI8'W z endstream endobj 257 0 obj << /Length 132 /Filter /FlateDecode >> stream x313T0P0bcKS#CB.cC I$r9yr+r{E=}JJS. @-\.  @x@@?C1;}pA|.WO@.O) endstream endobj 258 0 obj << /Length 169 /Filter /FlateDecode >> stream x͏= @_#d.͟ B Fp !VbnxK q\`eW񊉣~2c!GOj .mO1dXV|-M -X endstream endobj 259 0 obj << /Length 198 /Filter /FlateDecode >> stream xڝ;@%$p.H)L0VjiVW(x[_~0E_cƃ=2b4gA ΄Sp)-8lsQy endstream endobj 260 0 obj << /Length 115 /Filter /FlateDecode >> stream x313T0P0b ebUel䃹 \.'O.pc.}(BIQi*Sm`Pz<7,{\W endstream endobj 261 0 obj << /Length 171 /Filter /FlateDecode >> stream xڽ= @[&G\@7!Q1#X^,7[n8ȃW3r9Al&]'-\,cx܎` s0 n ==Cbq1 SeKvI'mr/)T8R`5zf endstream endobj 262 0 obj << /Length 155 /Filter /FlateDecode >> stream x313T0P0bcc3CB.1s<L =\ %E\N @QhX.O$$PD2`$ȃ@H&?:7 q.WO@.ll endstream endobj 263 0 obj << /Length 183 /Filter /FlateDecode >> stream x}=@XLvNBLH0XF[٣Q8ab^2}KJ)*%Kw4 +@@)juE]VQzB[_P :9o.A@9(dq%7@'a/=ߵG.^Tyh p A!\\[>P: endstream endobj 264 0 obj << /Length 200 /Filter /FlateDecode >> stream xڥ= @g fI"SZYZZ(ښͣ[.(wS|7q4HRYs_8 LWCNv?$#(%p:lHj&5pGٌs V,S*7;(&A]t, -GT@8=F> $_ȥF<5ޯ endstream endobj 265 0 obj << /Length 158 /Filter /FlateDecode >> stream xڭ1 @ПJuj!Fp A+ RKAEh9JAqc![̃I`4-ØԈmjw쎜{Vky\Y\/|9êe_Hx+5C8#$RC\B"xo<Iw endstream endobj 266 0 obj << /Length 185 /Filter /FlateDecode >> stream xM1 @4!s7q5@T0XErr,,2ԎgDM&rv=pr^ًYMyaoY!RrGB7 }KD#"eZSW!("PB Ca}96A=> stream x313T0P0bc 3CB.cS I$r9yr+r{E=}JJS ]  b<] @AH2`h AA~[@ Lx:B endstream endobj 268 0 obj << /Length 148 /Filter /FlateDecode >> stream x313T0P0bcc3CB.1s<L =\ %E\N @QhX.O` $0()D? d=H2cģd> endstream endobj 269 0 obj << /Length 186 /Filter /FlateDecode >> stream x5= 0W:oN`B`A'qRGE7^̭ ء4ؔ? ,&Q@>0[}pb*Q)QzܟvI>>yG:J^]S |-,ZHZX:^<r[C准qzb&gaQ$L endstream endobj 270 0 obj << /Length 174 /Filter /FlateDecode >> stream x313T0P0bcc3CB.1s<L =\ %E\N @QhX.O `?aC00~ @2?Dv`N2~+ߎ #ȏߏ`` ?G#g``?A6 H@RՓ+ ɝm endstream endobj 271 0 obj << /Length 202 /Filter /FlateDecode >> stream xE; PEoH!LUBBBN!۲t @!L@,a̻{ې lfOÄܒZrɌOp>ܘW!kJ/LnRQ;H(+p{h/ O.ok> 44W&F&R$}xY& endstream endobj 272 0 obj << /Length 237 /Filter /FlateDecode >> stream xEαj@ dz)CB=ҩCɔdnvj:t&=$%p!:d-"zX!ZnhyxDQd}LKႲ)ֳ[{vȭ+OPy5 @U-G[;z[*lB;v\ɼHer;SHR Z88 ~Ka{ endstream endobj 273 0 obj << /Length 176 /Filter /FlateDecode >> stream x}1 P S2Y<9*BV N⤎G(Ϥc|?!?'S3>gt#͔+^wr~ÏB.9#W!H"Px+"B I / >i`$f_$hj(D{{-ӎ~b endstream endobj 274 0 obj << /Length 203 /Filter /FlateDecode >> stream xڝ= @_L#8MLRL!he!Vjih'({!q-6߲`}t!'<8 91 ũ piNfqJf)c2ot=̜w{@^m W÷x: dTLdO_'X`*w]!WҢqz9KU" }}d endstream endobj 275 0 obj << /Length 141 /Filter /FlateDecode >> stream x313T0Pac S#CB.# I$r9yr+Yp{E=}JJS ]  b<] X큸7001;j?0FJ endstream endobj 276 0 obj << /Length 222 /Filter /FlateDecode >> stream xe1N1E*i| .-V Ab $(UAݣ(>B,?kWEwk.i;O%/$=iI^>$nF6x0ڄʬ ͎X⌾T~fGvlgOȠ<|HTGǂ+ˇD5WTL3*=2,<8h endstream endobj 277 0 obj << /Length 226 /Filter /FlateDecode >> stream xEнN0 J^ @ZHHCL @>ZlDZTe}9W|Qps}ů}PYkP|N#5[ Sj~??ScNzDDFM&4=:4WL hLVښQ5A1;,wKi sęǐ dw;-y"ͧ\ۼ>[z3Vc4 endstream endobj 278 0 obj << /Length 207 /Filter /FlateDecode >> stream xڥ= @4{t&)!BBB,xxqFE惝}ov)ZRGk;Sʱڬ)Nюe6aܠOi(Zb>$\Cǹ.5Tº)7 P \)'ߘ'-,e$9ґ i `AY ֚ G9-c endstream endobj 279 0 obj << /Length 241 /Filter /FlateDecode >> stream xm1N0E"4 @TE"Th+)S ͓=3uE5w|pWs/ 5gFGn{n5j+UknS=6@! `dHp糢0g0p \ύF<'"DMbLz[Zj6]*7DE??(jALP5ˠGԡ(OY*G@BR栛 5pI endstream endobj 33 0 obj << /Type /Font /Subtype /Type3 /Name /F37 /FontMatrix [0.01204 0 0 0.01204 0 0] /FontBBox [ -1 -19 45 58 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 17 /LastChar 124 /Widths 280 0 R /Encoding 281 0 R /CharProcs 282 0 R >> endobj 280 0 obj [43.59 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43.59 43.59 43.59 43.59 0 0 0 0 0 0 0 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 0 43.59 43.59 0 0 0 43.59 0 43.59 43.59 43.59 0 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 0 43.59 43.59 43.59 43.59 43.59 43.59 0 43.59 43.59 43.59 43.59 43.59 43.59 43.59 0 43.59 43.59 0 43.59 0 43.59 0 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 0 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 43.59 0 43.59 ] endobj 281 0 obj << /Type /Encoding /Differences [17/a17 18/.notdef 33/a33/a34/a35/a36 37/.notdef 44/a44/a45/a46/a47/a48/a49/a50/a51 52/.notdef 53/a53/a54 55/.notdef 58/a58 59/.notdef 60/a60/a61/a62 63/.notdef 64/a64/a65/a66/a67/a68/a69/a70/a71/a72/a73 74/.notdef 75/a75/a76/a77/a78/a79/a80 81/.notdef 82/a82/a83/a84/a85/a86/a87/a88 89/.notdef 90/a90/a91 92/.notdef 93/a93 94/.notdef 95/a95 96/.notdef 97/a97/a98/a99/a100/a101/a102/a103/a104/a105/a106/a107/a108/a109/a110/a111/a112 113/.notdef 114/a114/a115/a116/a117/a118/a119/a120/a121/a122 123/.notdef 124/a124] >> endobj 282 0 obj << /a17 220 0 R /a33 214 0 R /a34 222 0 R /a35 223 0 R /a36 224 0 R /a44 215 0 R /a45 221 0 R /a46 216 0 R /a47 217 0 R /a48 274 0 R /a49 275 0 R /a50 276 0 R /a51 277 0 R /a53 278 0 R /a54 279 0 R /a58 218 0 R /a60 208 0 R /a61 219 0 R /a62 210 0 R /a64 225 0 R /a65 226 0 R /a66 227 0 R /a67 228 0 R /a68 229 0 R /a69 230 0 R /a70 231 0 R /a71 232 0 R /a72 233 0 R /a73 234 0 R /a75 235 0 R /a76 236 0 R /a77 237 0 R /a78 238 0 R /a79 239 0 R /a80 240 0 R /a82 241 0 R /a83 242 0 R /a84 243 0 R /a85 244 0 R /a86 245 0 R /a87 246 0 R /a88 247 0 R /a90 248 0 R /a91 211 0 R /a93 212 0 R /a95 213 0 R /a97 249 0 R /a98 250 0 R /a99 251 0 R /a100 252 0 R /a101 253 0 R /a102 254 0 R /a103 255 0 R /a104 256 0 R /a105 257 0 R /a106 258 0 R /a107 259 0 R /a108 260 0 R /a109 261 0 R /a110 262 0 R /a111 263 0 R /a112 264 0 R /a114 265 0 R /a115 266 0 R /a116 267 0 R /a117 268 0 R /a118 269 0 R /a119 270 0 R /a120 271 0 R /a121 272 0 R /a122 273 0 R /a124 209 0 R >> endobj 283 0 obj << /Length 106 /Filter /FlateDecode >> stream x3635Q0P04F f )\\@$2ɹ\N\@.}0PRTʥ`ȥm`@#\\\hE*a endstream endobj 284 0 obj << /Length 116 /Filter /FlateDecode >> stream x3635Q0P04F )\\f  ,ɥ`hƥU()*Mw pV0wQ6T0tQ` OoG!\=nB endstream endobj 285 0 obj << /Length 95 /Filter /FlateDecode >> stream x31ֳ0U0P0T02T06W06RH1*2  !2ɹ\N\ Ʀ\@a.}O_T.}g E!P E?< r WGz endstream endobj 286 0 obj << /Length 245 /Filter /FlateDecode >> stream xڭN0 ]u䥏?iO=qHt@1#(}( $盳vC n颣߰ӾVWۡY }^R@-583@ڰ (98"\Ppt,^d^F4FdOg7+\K5@N'U}2*` ReʨPŌ>r.dWF$sx5~ԇ endstream endobj 287 0 obj << /Length 327 /Filter /FlateDecode >> stream xڕӿj0q%C `*B]WC:Nm-vG#dt&?RiD ~i]_\V;WzG*I꒚M dߑ%)YRtZ@m^HwYmVaܶbN4RbXMΔ\uNnnb| mbީLE捴]$ⱱ7!3ilz.2Ob'z>уt!򸴏97 טC.k&) 7Lʬ k ͹!!KkK!#ܥm<Fk(4J@?mG/c endstream endobj 288 0 obj << /Length 267 /Filter /FlateDecode >> stream xڵ=n@Ǣ@f9Al%"C$SX+V*;eDIpJ zְ̊շy^O=JftॽEzKIzWQ+DXQ:]L@GjQPizV8Jy<_oSrJ^CoCK(vRਾB,|.WKuɡ`DuO6KN6_i JGT+ɭ KPJ~ s uy endstream endobj 289 0 obj << /Length 338 /Filter /FlateDecode >> stream x͓?N@gC6QڸHaRK vF8%^0 Z-;;3|qvrXЧhsJL6~Em*iS^o*\R[}OT@WdR;Ȉ,QG9Ci 7rXK0A@$s;:>GOÔ11PVGG { r(ܑ  J}1*7S($;SheIL>oC^fi0ӤIΧ C4qHGnJ谬cC +{7Z۶> ࿢*E!en/ endstream endobj 290 0 obj << /Length 258 /Filter /FlateDecode >> stream x1n0` x'b R"5SS۱Cd(9BFcWGRZ}l_Y1S#=e}EeEzYNzm6|<>I/O^捪ko?n>CK(I֪ov^سs`'rVr\w I˼ދ/np=g?;ؗ= 13rً E7Z1ӌk kmgj.=WMs endstream endobj 291 0 obj << /Length 228 /Filter /FlateDecode >> stream xڕ= t y G('v3#NI4:(IӾH~iՍE[LK;nc<`gq\$A95(8;H(beYc6,wh*.9)"1RH HP+whyś(/*P#qRDҥLSc_擽P[+^& I)Jt*Jl)sŪJSN2\U\ endstream endobj 292 0 obj << /Length 192 /Filter /FlateDecode >> stream xڳ033S0P0bs  #CB.sc I$r9yr+s{E=}JJS ]  b<]CbY ?00e1 Xp?g1YpUgYxY, Dp,y8be,^$'}TaAfRX\\\1=# endstream endobj 293 0 obj << /Length 349 /Filter /FlateDecode >> stream xՓN0 ]uPU"D$02`nyMNIܻEJ8v?ϊ xc\=83,OݣZ*ƲR9UZ_Jt79f^! 5Dň6X;ЖuH@cN.|͎r.m@γۯF|=Mb ִ`]Üb{)$U2ئ' ÄcW|rƬ,e9sOx^cfu=z.{6S1;Ae&oVgۛ`_#7ğ)NG YmvM٭f !&\oVW ?! endstream endobj 294 0 obj << /Length 105 /Filter /FlateDecode >> stream x331Q0P0bS #CB.C I$r9yr+r{E=}JJS. @-\. A(9TH:հ endstream endobj 295 0 obj << /Length 344 /Filter /FlateDecode >> stream xڕӱN@%$sT$Ha:--4Zã(<qH  wlwUܘ\۳8μS{{ͷ>V:}6^vTՃy:=d:F]jQہVpe `)v⨇v⺁IH6G9͑줅9͑KD:KD:̈1adP[=xW5-7|1ĴN'ڬk%E{^K_= Ї\;"=a7o;uSRJ?[ endstream endobj 296 0 obj << /Length 157 /Filter /FlateDecode >> stream x330T0P0bs #CB.3K I$r9yr+Yr{E=}JJS ]ry( 0!(c2~f0H`0fc0P<ƨ1C0;cC r 6n6 endstream endobj 297 0 obj << /Length 311 /Filter /FlateDecode >> stream xڍԱN0o#O \<'H3D'㤎H GBI%)+,`z aJOJ}o 9ƙ={MyqB<>@<1f#q8&t3x=%T]_'V1 S>8|bGx ~ه_(Jf2Lc# ן8~w[stJptU,r,]#c},=3ֳTc)frLiGvKA;+DE 1]*YB8k ~oL endstream endobj 298 0 obj << /Length 316 /Filter /FlateDecode >> stream xu1N0qG"yLJȀbF Rc@n@G*9~,d4iZZ?Vݣ^6RVyy~}ԺܘT܏R*<Vs[(;(rOηwp(X;уr,8=Sp`b dOx`Op4Lh }S8:S8^b ab`x'ܷ؂ ~|8'`5l8qN Xx> >kJ@ endstream endobj 299 0 obj << /Length 325 /Filter /FlateDecode >> stream x͓N0 @PK?h Hכ*D$02`~J?c&rNldH^؎{U.+,p'%ΰ:ޠ%On _ K,!C#44~d32DCĚZAO3%,Fb= _&g2dFLdt^c;ȓhMZE=p8}ډݴ1Mt=[liq<3Mu;oϚ0qfUȱ:ؠqZwѻ$D#BHI!ihD W xkD endstream endobj 300 0 obj << /Length 209 /Filter /FlateDecode >> stream xڳԳ0U0P0b c #CB.s I$r9yr+[p{E=}JJS ]  b<]8J,fn0ªc5CX@Y bGb}e1ce H,ln~ #BBP`pb~Y 0SFY䱠I'W T4# endstream endobj 301 0 obj << /Length 290 /Filter /FlateDecode >> stream xڵӱN `H&GJkNM3NIM{4"Rȍ%) ~ٜoK<+>Lcuz^aہxĦqkAtwb{%>X> stream x}ѱJ@?lv_@p] !p` A+ RK E;!hM7HqfwO`vv23)Vf0WI%X8=Uk3UqaUASSbmn*Sުvm| 82"7@б, }8$tHIR2>JJ =MT;4[6R׳ā~D}~k.:6ʃHϐDJwk81ۇ=Isz6WBJI7l:ahJ7Cަ85,φkVq< /XYd|vRJJ}I endstream endobj 303 0 obj << /Length 176 /Filter /FlateDecode >> stream xڳ431W0P0b 3 CCB. rAɹ\N\ \@Q.}O_T.}g E!P E?!u?3bSWbWbWa1gXu0V6V eG,eƒ'c1%r C< endstream endobj 304 0 obj << /Length 233 /Filter /FlateDecode >> stream x퓱 @ S:Y|]I(>BGLZD''|r7Ѧ;M CA> 0Ym՜՘eTфU8A5!hHpɾe PVr{y%رW Kp,+&uaJNEIM4y0犉%ޭ^ AlH4ȗ6eOE8`| endstream endobj 305 0 obj << /Length 347 /Filter /FlateDecode >> stream xڕұJ0 Y hw vyIݎkx7 /ׄH#MHYO =S}TDNC!e9qc}:/Or^F_eWQ3]|oAwZhp !j- G #gMr>6n3xf[22>Gޖ_t2r NɆݲaw{VdS"ؐ9rm"s22q D,xc'SoD̼18,0Ndo> c[o DeaXw ]Gom𺷂uzg|UNj yli[5J^ endstream endobj 306 0 obj << /Length 459 /Filter /FlateDecode >> stream xڭӱn0q p#/8$)PکCѩءE ,z=GPZNݸ[wUzmnݷZqu~}ӫOC^׫{w@g/z"Ew l셀;ii24> stream xڕJ@'LsL 'BB> stream xݑ=N@FJisX[N"GTPR; 9BJGZ0; Jifw<~EqUQAg9T )fT3j4wTN\IM}MoOhf7s,hSv`ځ_ hv= {H 񞡱B [r%kT3. 0=;  ڿv>;bC _\Af #c,'4/+;hq1h?7p% endstream endobj 309 0 obj << /Length 243 /Filter /FlateDecode >> stream xڵN0/`?BdS` Heꀘh XI-#d`stgۿ~Iy)x 5_XQ&oG\7vWEF<z{O5 Tb!ȣO!2J`@;PP<;Gg3E9c̈*l09t / inm';)),bߘ^Jq݂zlgF endstream endobj 310 0 obj << /Length 253 /Filter /FlateDecode >> stream xҽN0T"GȽu~n! & 7+Q!ʟĄd嗋l4\jU<sMo4HQ {N^Kls/dKɮꑚgʱw_ s=$p8E . (sׅ42*ȱ| ]6&ܴLpڋ_IHGN!X>] 7#f".F?^Q 3ҙ b= endstream endobj 311 0 obj << /Length 244 /Filter /FlateDecode >> stream xڅJ1g"0M!`Dy[ZYZZ(ںy}<•aǙP1|?IO :1H=>cTPc;Ocw!^_[^ʙ;V8?dmgPj\Rq :dĄ* |Vbn;gE d1o( ؁ahDBc!D[o1En %in6N:\Z` æ]H_I<?y뭜 endstream endobj 312 0 obj << /Length 175 /Filter /FlateDecode >> stream xн 0>B L*)j3:9vtPtnG#8f:M|~3z> stream xڥ?J@'X&G\@HBL!he!RK E֛L2ɮ9o[,Ƴw565>UU7v1.tqoYKtq ˣ|QђCDF"RcB|&;J e%wpU3B?O|G(^'f ]THد|X9/O8E.> stream x373P0P0bsC cCB.33 I$r9yr+q{E=}JJS ]  b<]0$0a aÐef0x:`P?H e00?C(v q'W l2 endstream endobj 315 0 obj << /Length 138 /Filter /FlateDecode >> stream x3635Q0Pacc CB.# I$r9yr+Yp{E=}JJS ]  b<]``0f+ɃԂ 0a@\\\٥; endstream endobj 316 0 obj << /Length 243 /Filter /FlateDecode >> stream xѱJ@)nMD BzQ|-#w_Z˷euG|]KkhFrw[r??ܓ[]rKn7-74B,? X -,fXNpMV%\{`r_ |7fZlP \X~r['-pG NZpZY̊4_HWn$ endstream endobj 317 0 obj << /Length 107 /Filter /FlateDecode >> stream x3635Q0Pac cCB.#K I$r9yr+Yr{E=}JJS ]  b<]0a\= endstream endobj 318 0 obj << /Length 232 /Filter /FlateDecode >> stream xҽjA W#>WZL+vrp!ET+ -vXqt;';됱j-->xsiNY-gOّy+#CYEI O$Rx%4DJʤn ׮UH@Y$߸Np⧤D@(Ax^ 9Eۄip xviC endstream endobj 319 0 obj << /Length 184 /Filter /FlateDecode >> stream xѱ@ & &]xHLtr0NUy{ጃ zw6d4JBGqlfiG{1+P)QEz@-ibc|!Pi ౮!`{.TV6ߡA_y48+po endstream endobj 320 0 obj << /Length 231 /Filter /FlateDecode >> stream xڵ0kHnЂ0 &2`A3<#02^KL%!_s{I!.qa@CT9 +@P% 7 v+@x0> stream x͒N@ ]uG_.!MBH 02<Gx۹F:.˓"J:lN錞c|,5<WO(m(KѭEGWbtK=b$(#!@5@oJ 4{aŌfJ`o}4.lO%wm_mte4](z`_TU` endstream endobj 322 0 obj << /Length 169 /Filter /FlateDecode >> stream x;0 t#' VbTD$02`nQzT dj20XY陞c+4xRps?aq@iA W<ix=   E^6ɱC:_:Wѫ}O_ /h m Ij^ endstream endobj 323 0 obj << /Length 259 /Filter /FlateDecode >> stream x]1N@4;ۊB$\ Q%ڬ\vY)yTk.拊57 UIJ/Kn6O\k*ybx[~|nXp8HDF#々~7'QȔ^;LKZ+45qj@.dtv!"ieh֔j]dV絳Su ?hgcfKxhGZ endstream endobj 324 0 obj << /Length 186 /Filter /FlateDecode >> stream x3534S0P0R5T01Q07SH1*21 (Cds<L =\ %E\N @QhX.OON2bH$;&=A$3?8HAN7PJ`$H `( E` qzrr:p endstream endobj 325 0 obj << /Length 187 /Filter /FlateDecode >> stream x1 @   fl1[ZYZZ(Zkyt {O!(VhpZ0(j. 匴F91J3FNPf4W.dI K#ZX+ސ8 w6 .n N<sUv848n endstream endobj 326 0 obj << /Length 252 /Filter /FlateDecode >> stream xڅбJ@YR#d^@7l 'BB+RgvE8X>Y؟/Η%YJyN^RaaB> stream xڕ1j@7Xx6l6@RXR%)S$$fB.2Ni!7.V?u~f*U+uW9o(fKUn*< ݖIu>?_dRLjG/zV!C؃@p` 'h'đv3k"t{O<8 F evb883MmH Є̎io“z>Ba"0i5s?hb8T0c00c*Cٻ1 i<8^gvJpi\DXו!) endstream endobj 328 0 obj << /Length 270 /Filter /FlateDecode >> stream xڅN@EPL'~ >X<&ZY+h+| K$\gfX){ʪߗu%B-k_Weʡ/ϯ7/nyS壼'7e"0қ0Dr92DI-٨l+s@!٘b4Hfoq!C?I?b`6|tC t} lLD2r1uIU'TuIk*T%5P%5!.>Z/1 endstream endobj 329 0 obj << /Length 310 /Filter /FlateDecode >> stream xڅ1N@б\XG\8M,  * D "To+l"0DQXO]yx:NbYٔOG8'M~ea חG/pl%ގqtg%Qm3 "Vϊ<X1f3j ԄMVl!ey o+ =̃Zy[coFG\{SZƛЦQ?䍉`߈=m;4M?l½};YTjĭjө IPZlklku釾2#}UJ.҆Rymaɽ endstream endobj 330 0 obj << /Length 232 /Filter /FlateDecode >> stream xm1j@*x-"cUZp@R)b.X:#T!vRYH ~Y7zVƷY v_ԿQ[ݓ;N{{W߹ʭ޵۹[J0)\$x " LY$> LQ~ 3 afˈLXF,@' .L h22#戜#䑁rm\-jhp endstream endobj 331 0 obj << /Length 137 /Filter /FlateDecode >> stream x3337W0P04  )\\&f  ,ɥ`bƥU()*Mw pV0wQ6T0tQ```c;0D0I~0Y"I ?&D(I"\=VI endstream endobj 332 0 obj << /Length 301 /Filter /FlateDecode >> stream x}MJ0)YؖG_]x>.]W҅h=Je? گiftߟ ChÞ6 s/\knCs%ux^ߟ\s>k o@B,D'DdZ"-,-B/63"x甙k p7q|$pF暿 dL@AvZHFӬYM5k|,ZdIeb4j`Mg!@Tt`[Bͻ.A8Ew̕bԊW'bt7}t endstream endobj 333 0 obj << /Length 305 /Filter /FlateDecode >> stream xڍN@LJlA gEr&ZY+h=> @IA烋 |gf.K xQz!eY^#[E{_o8_c#>UX>)EৣNGG#"qhfH8fEAEI=-Β%$#쵂H\Wfä hgcgݺi8iZG`s+,25\i`2[[E3)D/bZ1.8G IUuuR:X&oݴ]֯"Mߴo endstream endobj 334 0 obj << /Length 225 /Filter /FlateDecode >> stream xڽнj0 ['Pt!tP2;4qh~?G$C@Bw&,+]po1}R28^~в$IF~{͒/wu|'ܯ8&旘knLM@;&ED-tw>5 pU/jh:؊,PW+D5^ԝhma#:YVp=Dӊb~9ag/uwiS]]q endstream endobj 335 0 obj << /Length 285 /Filter /FlateDecode >> stream xڭѽJ@Y lGȼ&H +PN-`bu>r"X?L6']x\c[awO}͚L> stream xڍ=N0'’!sHRd E"T ()@ Qa-G#LyxcOx~ar Լ=>٦fqR57-ϱm__l<ږ[Od%2 9SQvTy2S T 2NXFvY _C!"%R/Q("!V$M x#$0"W ΈPr($7y?"^\%Id^EARiP7@t4F}ҷ CGɞ~\ endstream endobj 337 0 obj << /Length 239 /Filter /FlateDecode >> stream xڭұj0`[heTA@=)Cd̐nQ58@mpCo'J,3~T>LVс%cMq<'$%$w>H?^Y\GGT %1s <(Gϋ(nhɝ> stream xU1N0E'JM`_)ҲH@Q- HaycARI?t5Uoqg|rzUA5TsϪnjwWU> stream xڍJ@E_H10y?(uSZY,Vjih|J>!easN2s߽Y'M+u)?Vֵ+nót㺶ȶɖ l]ū{m`Oè@A"dekv"DL8O92!~l@Nc@z.1aiŒBڠv?Qt>pC 4s9H]>0B/@ IL}~-&\^+vqpڃ :TN&Xa*E3q}Nd!ѫId/;{k?nf endstream endobj 32 0 obj << /Type /Font /Subtype /Type3 /Name /F36 /FontMatrix [0.00836 0 0 0.00836 0 0] /FontBBox [ 1 -25 134 84 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 45 /LastChar 122 /Widths 340 0 R /Encoding 341 0 R /CharProcs 342 0 R >> endobj 340 0 obj [43.85 36.54 0 0 65.77 65.77 65.77 65.77 65.77 65.77 65.77 65.77 65.77 36.54 0 0 0 0 62.12 0 99.31 93.5 95.01 100.81 86.31 82.66 103.39 0 48.44 0 102.96 79.01 124.77 102.84 98.78 89.85 0 97.76 73.08 91.47 101.07 99.31 135.85 0 0 0 0 0 0 0 0 0 65.77 73.08 58.47 73.08 59.81 40.2 65.77 73.08 36.54 0 69.43 36.54 109.62 73.08 65.77 73.08 0 53.39 51.89 51.16 73.08 69.43 95.01 69.43 69.43 58.47 ] endobj 341 0 obj << /Type /Encoding /Differences [45/a45/a46 47/.notdef 49/a49/a50/a51/a52/a53/a54/a55/a56/a57/a58 59/.notdef 63/a63 64/.notdef 65/a65/a66/a67/a68/a69/a70/a71 72/.notdef 73/a73 74/.notdef 75/a75/a76/a77/a78/a79/a80 81/.notdef 82/a82/a83/a84/a85/a86/a87 88/.notdef 97/a97/a98/a99/a100/a101/a102/a103/a104/a105 106/.notdef 107/a107/a108/a109/a110/a111/a112 113/.notdef 114/a114/a115/a116/a117/a118/a119/a120/a121/a122] >> endobj 342 0 obj << /a45 285 0 R /a46 283 0 R /a49 331 0 R /a50 332 0 R /a51 333 0 R /a52 334 0 R /a53 335 0 R /a54 336 0 R /a55 337 0 R /a56 338 0 R /a57 339 0 R /a58 284 0 R /a63 286 0 R /a65 287 0 R /a66 288 0 R /a67 289 0 R /a68 290 0 R /a69 291 0 R /a70 292 0 R /a71 293 0 R /a73 294 0 R /a75 295 0 R /a76 296 0 R /a77 297 0 R /a78 298 0 R /a79 299 0 R /a80 300 0 R /a82 301 0 R /a83 302 0 R /a84 303 0 R /a85 304 0 R /a86 305 0 R /a87 306 0 R /a97 307 0 R /a98 308 0 R /a99 309 0 R /a100 310 0 R /a101 311 0 R /a102 312 0 R /a103 313 0 R /a104 314 0 R /a105 315 0 R /a107 316 0 R /a108 317 0 R /a109 318 0 R /a110 319 0 R /a111 320 0 R /a112 321 0 R /a114 322 0 R /a115 323 0 R /a116 324 0 R /a117 325 0 R /a118 326 0 R /a119 327 0 R /a120 328 0 R /a121 329 0 R /a122 330 0 R >> endobj 343 0 obj << /Length 417 /Filter /FlateDecode >> stream xڭձJ0,y SyI]m-GxChlڦW(ᗃ./O|~|o6 =5{ݹ}fȟsyőn5ֹ˶UY֋N]ef\rjZcamƥzɵ̲#S`il7cK2p@S`Kl!cL#9 fD 75 ANDM O$S2`Kl! (0hY@0t#n@Cиw rB'rw댙wXBNP99s ̲# gpc8g?L_6-u<ܻ.Xda.[ϧ[6-#0t endstream endobj 344 0 obj << /Length 478 /Filter /FlateDecode >> stream x啽N0/`~6EBb!`b@LɣQ3D6w社B +;\Qqxr즮+fLSa^MQhA6?94Yd~>yf~YڋBh`x:B ]yrCTcґ b <=^N`.|b5? endstream endobj 345 0 obj << /Length 356 /Filter /FlateDecode >> stream xڵN0 Su%UMCL &`dJZx7v0D뫓(>᠂e 'KԣZ>Y">UkXԪ8iU4r)TXMF5kBErψqJ{82jtL6[Ga&>GQ8P*Q̸nj@I-ۋI9cƫHYrTAr Edm]sG%e8݄mI?[DsF]{Ca6$^mC#$RcX:-qwH%!@BF]/j endstream endobj 346 0 obj << /Length 325 /Filter /FlateDecode >> stream xӿN0&]^@ajr &:9A3Zn+ ?_ 3\A!i?Ejw ؇YWJ܊w7b^BǮ] =\|~zz KQ-#Aj3YFntM06 H_ȩ++ۧE 2P ~BFc~L*vنI|O wQN1?u(o!{e2ja>d,Lw- ȽVmp`۩gS|Z8ęx˖G endstream endobj 347 0 obj << /Length 316 /Filter /FlateDecode >> stream xڝ=N0G\#ABeiY$R AEJ =%GHE3vR$=ycu%Tpg5WRw6~.FԪW#*o*;zUjUᩆj5!2qπ\ 몛^=oaf+ endstream endobj 348 0 obj << /Length 225 /Filter /FlateDecode >> stream xӽ 0H-}FPAAAMG#tXz&Պ.!#&:ؒmh8WȄs[r= ]|1w5ޤ2=<o̠e7f~vVmm(OMFZ#:ih[Rmg(G%2˲*'/'ڬN>t\rWSWЃ)\Sn endstream endobj 349 0 obj << /Length 159 /Filter /FlateDecode >> stream x3537U0Pa3C#CCB.ARɹ\N\ &\ a.}O_T.}g E!P E A D M6l}#U@ȥ?@.%#\\\"_Z endstream endobj 350 0 obj << /Length 217 /Filter /FlateDecode >> stream xӱ @ ByvP N&G*v(TAq~.t:qpaږRkj+n_{>xdAARax nStHAFt,\[2R҈G1ۤĔ7(:i|\/}ًQ ?o<9/*Ӄ}Y = \` endstream endobj 351 0 obj << /Length 323 /Filter /FlateDecode >> stream xN0K8̅G`^@٬ʉd]9ɃٓzhYl-h~pQ | endstream endobj 352 0 obj << /Length 201 /Filter /FlateDecode >> stream x? P H!GhNkQZI]mQz'v(|UM)a'm+aG>8g[[܏X%h)h"qê?j( _%GC!\M1.Jk@babu8Cj(ȅέ 5}x~> stream xұ 0[Z UN⤎GQ|IEEP\ *D-l IupA0 l$9090{d2"P | :zlƬB7 7YEl(ݛ~҆:srmH'lGa/\^eVOa 0 endstream endobj 354 0 obj << /Length 365 /Filter /FlateDecode >> stream xڥ;n0mQ #> stream x˱ @ ۲#'.V: N|!?i1ÀTc^#Q'+TCo 4 j5o3f@0 h8uFE:)Z8ͷډ/cdɯ2>jj endstream endobj 356 0 obj << /Length 401 /Filter /FlateDecode >> stream xڍӿN0pG,y#O@VtTD$02`}<|#寨T;wVڮűOWOj9^Gު.;/˪^ؗխ/OmVm7VaNW9%{mA[ PnKB] P{ьS+$tX 3TD'9::JrGD u"~F?x,<áP50~Cpb*򄁿ďohQ'h.6㙂FQM-%5 'F};iiiWҮFo7d"H0CPkm=: > stream xڅN0y%)R)`b@L9}4?J!c*> x~Ν;}YvfW^۲ۗҼ``Yצx)n)[jݕ-M=zcRG#Q18c: >*T-z$V d Ds )iMLCs3e(*F$*΍(U!f$uR@?(## GD8&(YR"7AP3S$GrRVBDfLdLnL푛Vr9N!RF q8$>}2Ko|tG) (RA{Vͺا.)狪|/,-LJ!&߈F |AXBܛo-q endstream endobj 358 0 obj << /Length 280 /Filter /FlateDecode >> stream x;N0Љ\Dz`PYHPQ *A ; ; X{ Ym#܁s(EnAdW%;˒^ʼnu쵳+VX]%iSvPjF))3#O}A >(;dިWSJ:HJ)PkP甆z(RTtC!CTTaP )j h d1 b:(m64&Րg?ԏ]?y_JNKobg endstream endobj 359 0 obj << /Length 381 /Filter /FlateDecode >> stream xMJ0Hlziav! ҅*z,JȠKz}Uu2_^ZֺR/jY |YUeK\Wes^ߟT>ו*7z[ٝj6Z <:A: `+"8 x=L .aL\E-#+ I SVQm0V YFBwXVR0%ꋃ<,cgZ |7=L E>c=.`dChK;FSP1g|^>$Sg!D; JnC3r}Ds^Y܋o=S YCyFݨOr endstream endobj 360 0 obj << /Length 423 /Filter /FlateDecode >> stream xڭԽN0D"y#/i(maTD$02`%~<x;)** ѡga;葞=}roJufSlD]ߩRz6U bynU1?;ҥ*ԣ+\~u/hD5c$І l vm -*hpN}RˊvQi昆М,PV5/̪uA)[/> stream xұN0`G"y#^RPR)`b@kGˣ2zb&wي: %|Rο}:55]@QR9(.b obSBdcAd|~|ls Jd[xRމj keH=9ie%RG:ڈ3,ɐ: -QE z& 7?"(nH*%NjP4b F-fSp"x2lQs_̑|[RBi/:^'@iDEI U(S(9QOGp XHC endstream endobj 362 0 obj << /Length 482 /Filter /FlateDecode >> stream xڅ0c&`d²;PYZ)@T Gˣ7H" "SDcd^onɟK?7h=V>>{;\?~=?鋽> stream xڭJ0 97yܦ {ɃxRBh}>B=~~`*8$_|r'fdfĜ,Lߎy"m/z^̦::-YKta33z(hr@ÊQo`Y([BQ!vxHL-$,y(?P=w.9R1\Ak|j]xM6nG?vN_ZZ?Ye 'a|fG-E(L+$(ź Y'EC3"פR[ J,&tLY47H<>+UNʽR &)\م\Bo)]J'؈#fK>֢.]F@"Sv񥪸yeUpD."dk#Ό@z~;+Uo7c endstream endobj 31 0 obj << /Type /Font /Subtype /Type3 /Name /F34 /FontMatrix [0.00581 0 0 0.00581 0 0] /FontBBox [ 2 -33 132 121 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 49 /LastChar 120 /Widths 364 0 R /Encoding 365 0 R /CharProcs 366 0 R >> endobj 364 0 obj [91.35 91.35 91.35 91.35 91.35 91.35 91.35 91.35 91.35 0 0 0 0 0 0 0 137.86 0 131.96 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 91.35 0 0 101.5 82.6 0 0 101.5 50.75 0 0 0 0 101.5 0 101.5 0 73.39 0 71.05 0 0 0 96.43 ] endobj 365 0 obj << /Type /Encoding /Differences [49/a49/a50/a51/a52/a53/a54/a55/a56/a57 58/.notdef 65/a65 66/.notdef 67/a67 68/.notdef 97/a97 98/.notdef 100/a100/a101 102/.notdef 104/a104/a105 106/.notdef 110/a110 111/.notdef 112/a112 113/.notdef 114/a114 115/.notdef 116/a116 117/.notdef 120/a120] >> endobj 366 0 obj << /a49 355 0 R /a50 356 0 R /a51 357 0 R /a52 358 0 R /a53 359 0 R /a54 360 0 R /a55 361 0 R /a56 362 0 R /a57 363 0 R /a65 343 0 R /a67 344 0 R /a97 345 0 R /a100 346 0 R /a101 347 0 R /a104 348 0 R /a105 349 0 R /a110 350 0 R /a112 351 0 R /a114 352 0 R /a116 353 0 R /a120 354 0 R >> endobj 367 0 obj << /Length 204 /Filter /FlateDecode >> stream xڕб 0+ (z/I E*AAAQp(Q|^mE\$|K.Ij:zm}> stream xڕн 0+C4_( šV08СG#ttp0! r$T< Nz4xBɮSlM#}dzA,]NI h#oQg‰JrۗHNN#80om[ӵx"mT#lG[X)iue0ۀ3+|RA endstream endobj 369 0 obj << /Length 137 /Filter /FlateDecode >> stream x3231S0P0P06V06R0PH1*24(Bs< =\ %E\N \. ц \. ?!?70aCd,@!.WO@."m endstream endobj 370 0 obj << /Length 136 /Filter /FlateDecode >> stream x3231S0P0S54S02PTH1*24 (Bes< =\ %E\N \. ц \. ?  ?o`0`(`H 0703310XB \\\˗! endstream endobj 371 0 obj << /Length 93 /Filter /FlateDecode >> stream x3231S0PbCK bU@tr.'~%U()*Mw pV0wQ6T0tQcoo u 6 \\\Tt endstream endobj 372 0 obj << /Length 164 /Filter /FlateDecode >> stream x3131Q0P0T52T05T03RH1*2(XCs<L,=\ %E\N \. ц \. ؀L1C)0 PB@B|PX5ـX :NcV  \\\- endstream endobj 373 0 obj << /Length 117 /Filter /FlateDecode >> stream x3231S0Pb#3c3CB.C HrW04r{*r;8+r(D*ry(001g | !h 'W % endstream endobj 374 0 obj << /Length 96 /Filter /FlateDecode >> stream x337T0P0W04S0T02TH1*2 (B$s<Á\ \ %E\N @AhX.O??}r Iz endstream endobj 375 0 obj << /Length 162 /Filter /FlateDecode >> stream x=; @ )iru @V"j)(Xh{=BJK'/Cc(&IhI ukL#] tr;JyFĽx *ᢚ+#5@}؛SƗUZWÅ 7 endstream endobj 376 0 obj << /Length 249 /Filter /FlateDecode >> stream x]ѱN0ٮfZwnB{G4Q @dNAB^=IݠTd%s]Ksbrh6@^^43{2豹zD!;(d`!mXm ZB$BRm7WKPě_ ׊ endstream endobj 377 0 obj << /Length 208 /Filter /FlateDecode >> stream xe;0 T H*0V*  & ۣ(=BG`O1$N;f22LКhxLSg(J[4NA+]'z)9RLPQjN-rĄTD#ɉ~T?BfrOMPըs`;v)G/O7r$i%O#}jI$֣w{?(a/5sR endstream endobj 378 0 obj << /Length 261 /Filter /FlateDecode >> stream xMAJ0)]fa/sm+"BЕ quBQpG ihMIyM:dhOsj錎Oi'a?bKE67xK/lﮨfGO8ceID``g&@Y953ؕ#˙ fW<@ Es>(R :$V.bA*3J ʘsJڛ?&JI_B)Jr&| eDX#d? endstream endobj 379 0 obj << /Length 255 /Filter /FlateDecode >> stream xeбJ@?Lqy1;y),J--ɣR\g&w|'[1Ϲ#^<PSL[.V_ʘ^ߟ(__7|=PaH(fTA#{Ľ8=Nݯ#_+Atj֛4H`~AWQ~,@EkflF[b[Ϡ~-(N[NA/V袦?Fj endstream endobj 380 0 obj << /Length 214 /Filter /FlateDecode >> stream xUϱj@ `ZB'㐫S0NBc )-t͏G!z3HKh{~\.hN )')+,9qs<\>1-_ -ޱwz𐴶L 73nb. fV cFI, m%5Ҁ+IIbM/1Nb5'1UWwݦpt endstream endobj 381 0 obj << /Length 253 /Filter /FlateDecode >> stream xUAJ1[4]@3SH[A+J] UQzY(/(E !Y}:rO,[3VlΆWZ2' %פWPsHr1Z p8#l"kdGvR !P)J,.RAE&M#GטbToY=$-C0dLm.FÒbj~)kB endstream endobj 382 0 obj << /Length 212 /Filter /FlateDecode >> stream xM?@oH1\@ȻNbjະ)+P $`Nog7)SdgFA/}q7`o:Ph>ggiLjaDGIſ|:w/Hxx@@6/cGP!R^!'TH3=,њR;gXK%Hs$h%Ƣug+> stream xMϿ@-70&aÀVW՝rWGˣlg[QsŧMyK)!Jp1|pԠ:_gzPzJ S ĎԬjukzE Q)]xĎ/լeQPxўc=r_0%t,!_ endstream endobj 384 0 obj << /Length 186 /Filter /FlateDecode >> stream x]ο POG@] b`955DS5f&>$)5}6+X8!C %jPfJ`Rjן旭Zz FB!‚_C4KhEoM> endstream endobj 385 0 obj << /Length 237 /Filter /FlateDecode >> stream xUαN@PL#0/ H3D+ cH 7Y0@IAXcClbv?;92Id#GdO!g^&^xWUc奼=]Iz/$w\G ~=BO \N nkm``\MdG :5">fg|w3ތT8ڦLH[e"48 6I|k endstream endobj 386 0 obj << /Length 193 /Filter /FlateDecode >> stream xm=@!$ S $&ZY+hfx=%-l,f&LC9QQф)LLs IK^nGՌ9owT p< AZ-@:hM,љTY(P zG߁ؐIavU.R8Uk Z B endstream endobj 387 0 obj << /Length 216 /Filter /FlateDecode >> stream xڕб @ !? 4?Z`A'qRGEC~Z?O[&\A.rIf>n,؃ҵṊw0 A.vAN(2pڂFh pi0@!D-%\"ōr"R\uTP\(z>Saا#|sfCuL1>|S$^Ik,b&rs\ ;] endstream endobj 388 0 obj << /Length 236 /Filter /FlateDecode >> stream xEοJ1YL2/ٸ{y[Z]!Vz ({h_$",I曯^SE 5=:|zӊ%+mmvssAUn @E2 Ȩ1JAE8Ab„rg|FÄ d]2Gd3Kꖂ''Bǥx`:!s\I`~zNx /[_TdW endstream endobj 389 0 obj << /Length 229 /Filter /FlateDecode >> stream xUϱJ@7^~@gfaŁuSne!Vj)`̧S"@-Fa0a.wӪ,NJ~CW5;;׈7vu{)%۵ܗ2{z- DfJHG"|Z֦Û)`tfTvh"?|@QZ計VШ@01E-e҃nO;`DhI|Ud" endstream endobj 390 0 obj << /Length 187 /Filter /FlateDecode >> stream xڅ1 @R,L^@ܹn),J-m5M)Sq793?<~Qq̇.6Ҍ􆣀žIgK]Gj!oCv^a JH˸;%BX[O ԎgU[kM4FF~xϕӁBT hњ~; 9 endstream endobj 391 0 obj << /Length 215 /Filter /FlateDecode >> stream xڕ;j@_0La]Dsy?* I"]I Eu4GXw[ Ɲf|8☣,> stream xUαJ@YXrM.A\8O0Xe _|XFlR,3m/ʽe4ݜg4/6G,r|{eSVgrvy~L9]]c"-"46"n"ja g\ô 꽅}abZvLRȴWWqz=A腁=AFZp2Ǥ>}m1fxԑ0S!9TxR^ endstream endobj 393 0 obj << /Length 172 /Filter /FlateDecode >> stream x}1 @bم #BBRPQH!(9eٵ(E!/I )txAM )e8E!Q,LF.vQīI m%;L>?9:^j7N=j AvG ) E endstream endobj 394 0 obj << /Length 266 /Filter /FlateDecode >> stream xUAJ0?dQ^`0v:B[La.]WRU'GQ2xɢt|MUG^dy*W',WOxقt,ErHh,Z}> stream xUϱjP? 9/Pc0$Bj;u(ڎV2HQ#dt`]8x)?DxgDGNx/4/)|8Yb o7/ K7Sd蓺@7=bTEVӊUш?I4M;@AmQSuj#S}7~9`^B 詤tU endstream endobj 396 0 obj << /Length 190 /Filter /FlateDecode >> stream x=ο POG@]A(AAM T EmB/fo#AB߁;ˁ.=t谿6;)#ɭI;~=7~.ɄO.;gJ +92 = Y5"$*GE1_kMAێfb)n! a!"t5}6)G endstream endobj 397 0 obj << /Length 238 /Filter /FlateDecode >> stream x]ϿN0/!Қ?"R)ĀZF@j?y=D $|jr=.YMxzH]lo-_iVSȪNTBᆥ:'zzLfU/2k`&[~6bT~4Ѓ{Νh{FRDJ*+oFt:^Cf\8،&и%FӶt[ӂ~Jl endstream endobj 398 0 obj << /Length 182 /Filter /FlateDecode >> stream xU1 0_:`/PMCv(j3:9: U:zI!78QL#NN"# ÈDkg%- lcdrE,_ω#+h(  0RGC:k3dV4P` {@1gy9xΡoi|KZCf1.$n > stream x=ͱj`27h 6] fԡtҎ*:H|(V;QX\Fje%E)MT̂k1RvO1j}H9S B47Z4^7^;r<ȇ0)z!Be,; e__=FʼW|/Hd endstream endobj 400 0 obj << /Length 178 /Filter /FlateDecode >> stream x]1 @ )tMBą-,J-+GQrBt |(1%2EϨR.#ʒ;baPI(\4 ^nrJ1ʒ61E[4%o!Au4x@u/YqDwk;ppjhWO: m 837ġB endstream endobj 401 0 obj << /Length 216 /Filter /FlateDecode >> stream x51J@o";MBuS,he!Vj)x9a)BpSo\^]s-_Tܴ\ZKӶ5w1S WT##M~!J& zt9Fauޝ"Ya b&91ĐMJ^-}?9:o,Uێ;VF endstream endobj 402 0 obj << /Length 205 /Filter /FlateDecode >> stream xU1j@/L!]Xsx^"W.B*' v+h:aKxl%4ol9dxaa苬2g@˚%t§'3+~3Sb$PTh$&w;.Cչ Yw A HD)Ԁ TC8!#_^P=WDC)k VA endstream endobj 403 0 obj << /Length 238 /Filter /FlateDecode >> stream xUϱJ@?l0 ,GH`<Vb) rGGG2ENS8`vfv,]W|測y]7* c]WtsYP~-iʻx||s{Ɏ-?8.2" 5B+h&Q[Xo}f?BAqa#G L0P3 (E>QZAj4Nq12!Qydq-`l.vL@Wa endstream endobj 404 0 obj << /Length 216 /Filter /FlateDecode >> stream xEͱJ@R "y/Iv"f!XW0bBKGGGe,+SS_l8 .K6R;s6iy~]Kف͖%S+ek.(c{AzDjUW>snVn-t +ʼ23;_| J%r,cQv$F)XF\@7-=sJ endstream endobj 405 0 obj << /Length 243 /Filter /FlateDecode >> stream xUпJ@/l¼HSge!Vj)DN.>Z:_ca;SQ9m~ )T38,>')f(eHzB %m.ALsI7zkv+FQ"q I`{}w3 faB=3 ӍKM;t~='s.C˱ |GewUû%sLrȕ|ob3 endstream endobj 406 0 obj << /Length 230 /Filter /FlateDecode >> stream x]бJA?l0> %w'6 ^!he!Vjihw_le+B\&L/lEe/ˬb2b|y~e-Ag%Է*ayw>=IR4tI6FZt#?jvOG,I#1>- k`#؎ yD}Ñq ~`[ u^#g endstream endobj 407 0 obj << /Length 277 /Filter /FlateDecode >> stream x-J@gIy/I/a<V"E!bkk#lGfvbzZќNTQYSn^ͬb1r> stream xMJ@E`$wy)+P,m-r3_XXfvrqV녞.<תҧB^eYkUv_dJvZk%koYmAڍHf{`8""`~`'i8،i'~aa 73PcRK\O0! РgV:. P4IJSa ‡U+[f9 endstream endobj 21 0 obj << /Type /Font /Subtype /Type3 /Name /F32 /FontMatrix [0.01204 0 0 0.01204 0 0] /FontBBox [ -3 -21 72 62 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 34 /LastChar 121 /Widths 409 0 R /Encoding 410 0 R /CharProcs 411 0 R >> endobj 409 0 obj [42.44 0 0 0 0 25.46 33.95 33.95 0 0 25.46 29.71 25.46 42.44 42.44 0 42.44 0 0 0 0 0 42.44 0 25.46 0 0 0 0 0 0 0 0 0 62.69 0 0 0 0 0 0 0 0 0 0 0 56.33 0 60.57 46.68 59.42 61.72 0 0 0 0 0 0 0 0 0 0 0 42.44 38.2 38.2 42.44 38.2 25.46 38.2 42.44 25.46 25.46 38.2 21.22 67.91 46.68 42.44 42.44 0 35.01 33.95 27.59 44.56 38.2 55.17 38.52 40.32 ] endobj 410 0 obj << /Type /Encoding /Differences [34/a34 35/.notdef 39/a39/a40/a41 42/.notdef 44/a44/a45/a46/a47/a48 49/.notdef 50/a50 51/.notdef 56/a56 57/.notdef 58/a58 59/.notdef 68/a68 69/.notdef 80/a80 81/.notdef 82/a82/a83/a84/a85 86/.notdef 97/a97/a98/a99/a100/a101/a102/a103/a104/a105/a106/a107/a108/a109/a110/a111/a112 113/.notdef 114/a114/a115/a116/a117/a118/a119/a120/a121] >> endobj 411 0 obj << /a34 375 0 R /a39 369 0 R /a40 367 0 R /a41 368 0 R /a44 370 0 R /a45 374 0 R /a46 371 0 R /a47 372 0 R /a48 406 0 R /a50 407 0 R /a56 408 0 R /a58 373 0 R /a68 376 0 R /a80 377 0 R /a82 378 0 R /a83 379 0 R /a84 380 0 R /a85 381 0 R /a97 382 0 R /a98 383 0 R /a99 384 0 R /a100 385 0 R /a101 386 0 R /a102 387 0 R /a103 388 0 R /a104 389 0 R /a105 390 0 R /a106 391 0 R /a107 392 0 R /a108 393 0 R /a109 394 0 R /a110 395 0 R /a111 396 0 R /a112 397 0 R /a114 398 0 R /a115 399 0 R /a116 400 0 R /a117 401 0 R /a118 402 0 R /a119 403 0 R /a120 404 0 R /a121 405 0 R >> endobj 412 0 obj << /Length 130 /Filter /FlateDecode >> stream x333T0P0& F )\\F&@ IrW02 s{*r;8+r(D tQ`c`??*jj2(F endstream endobj 413 0 obj << /Length 280 /Filter /FlateDecode >> stream x핿J@7L#dݑZL!he!Vjihh>=B+F2)~ɷЙ9K4xi\xaL>>fAw zuwz 5* *e%8ayr#̮m:z(|J*xeJӖ7ɨR4iR[^V lOgJ$љ,M/ V%&N^eT-*w?SxGtvFZh~YGz iG endstream endobj 414 0 obj << /Length 754 /Filter /FlateDecode >> stream xڭ10'Ja)M`_fe,S AE7*ٓn۳1jCiQTi]Z4 KۅoL?[DX\!F*V\ڛQɑjZn+t"6{9m\sK9DRZ5\B,G!L{$dW-&:R(kToG4EPp~" ,W2#Q wqyI˿793K s#!萢j~hQӬHR ѣΊ8'2!jtf D .5ǕPiGt M{:K*ZCǒ*N%J`#XT(]A$BF.J Ȏ9pF)wI$lt7G 럶Ib#KG Lн8to{ endstream endobj 415 0 obj << /Length 497 /Filter /FlateDecode >> stream xڽֽ0D."#$O@.pw\g8$@]Wv7#Gp5&xĤ 6?^nn:g>\t'~x?~|t=CWŧU0WB?HR $Lh}>1wOQ;:BKIh%}."/HP}!QCb$L 5o4!w%TЭU)ƄQ5JHpW#v "MU%$U/+Bc$LdzlPT8=l"\F(|f5&>'\ L'e,yH.4 l5(=2mŷY,!Ԙey l?ءvZCR$]l` %fw-b,of5&x6 FGRKIUl,vߞG} endstream endobj 416 0 obj << /Length 569 /Filter /FlateDecode >> stream xn  `^ z)MR{1T͵U(<>X0 kƶcv x ի~뽾pZM t";y}ڛ}V?/> stream x=0&G/3Y H"1T ()@P;7*92EA. )&ϱuώ8F<ݓ;}c)0E?}egvxg^v}Btp'ޛ?H{msi@Zhzlʴ IPas55/U82C7 @F]Si Z٬(@SF!*Fj(ikCHKN:!YE뫦Q$^UjSjҘ5e%\9ɿKp/I{2~kcИAx_Q~CSS)z/U(^'N=YHHCFmƌ!՗DHsF9IXyU)i+$Ro)<YuLW#S/2>_$H'i!l4*dÖlU>ݳ,[b.䅘*${5˴ $9ܵ*噽eQ1A endstream endobj 418 0 obj << /Length 116 /Filter /FlateDecode >> stream x330W0P0bsC#CB.3JrW03 s{*r;8+r(D*ry(1Q(cAW'W  endstream endobj 419 0 obj << /Length 544 /Filter /FlateDecode >> stream xڽֱN@\XƏ`?O@!R@QB{4?=4WXݙw¦Cg8_~:}ykzC;K~o}uM˳n?fz8(IʘY>  Ⱦ> R*WA"> jfAQ8 _UJ": gAQ0 3j|5H$_ R3 jJ)T ճP aj&aj gq5D\ WC3j@҈_W"R-1bGIƤ:H)%/i#@[I0cJ:بZcӤ> j5t4L&r4;:},Y\!m7CBFx7DvLNh#I& I'K!ip AHZ0(C%$D9␼j)Q8$orJ# 7(KC0N[>%D^eDy>QBV9 >&~/{}iP endstream endobj 420 0 obj << /Length 202 /Filter /FlateDecode >> stream x1 P BѩP+A'qRGEz4 ƶvCϔ)C!!E! v@UPrĀc=.zfq:@ `RgnN8ye˖-gTb\ Vv* zVX2dAW#E_RIf. zJUIZ<|jd endstream endobj 421 0 obj << /Length 478 /Filter /FlateDecode >> stream xڍֿJ@ 7n#4E+NZN⤎)b_ T:X~A}n|ɐGgGS9GCYc-^D}r@|xne;!K墚]ɷ'QMe-^̦rƎ觅>SmN؂e1]$6Xa^U񶆐 qV@ACBrr![!X-AmA#80 mC+haq|H\Hh.\\h.$4g..4 5 ̆̆DfCzEfCb3!fb3!rLHl&$6aKl:AVҶŦdt2MæBSqT2`* [ֆX`ayq2X5 + ,'%!lh%aayq2˜r8lT|`ƄVƻL\čE endstream endobj 422 0 obj << /Length 510 /Filter /FlateDecode >> stream x햱N0 @SP)K?(=+ H01 &`d~Z>>cSLT!`C>8vJ|*?iGz̏ZANó\oevZ.;̶WIfslrut/%'F'%pC^IڪLmbFZ h( Q:)A sKkؚ㠢>+>t.F).(+1-s&X(0MT8pnF![lS/ReJjfLjM$1%G0H#,zK~11?FJv$;,7~|;{i2 <ˬ&JjTcBvyP"TWQͧUc$a]hZV-0bD;UA 鞽Ңi\){Iǯi$2@ ,L,]fV>I"T7n&/F~& endstream endobj 423 0 obj << /Length 227 /Filter /FlateDecode >> stream x; @ 49B&k>Vb&GQru7݉),$"?|s}Cpr8}I^0wT9 O|r㊣p49cVEl!Ҡ`E  Ӡ%!pՁAF J@P  iTWB+USF, 07=1I  endstream endobj 424 0 obj << /Length 328 /Filter /FlateDecode >> stream xֱN0Ћ2DORWiSR$2 Ā:A XI?OȘq, Ȟg|>/KəsResěP e|f W_vbUlS"DZˏϭHW7Z>6XK;k"kp#8A^Ø'O> stream xڽN0[e%`$@%BR H01 &`d!y&xH,>9vh%jsw|E~_,UjPETz(ij(KJd7,EvaEV]חGNU!3u[NTgjfG ̏vNp ``,#9nj,d i|9swV\=PHm`jr 6.@3΁ 0)@p j.> 0 ;`ZBW Ջ,@măCal1Pyyun&V)YH  `t]@lbC0n @p:vd0y|XR x Xa%UTbk V|5]Kũ㦎Ȍ!{܅|c畸_z endstream endobj 426 0 obj << /Length 357 /Filter /FlateDecode >> stream xՓN@!L#/ӣ<)LXF[QxJ roX~,;ULJRD*tuJxMǥ}u ^- ?wӐ.!m7:rWc/ %bvR6PQ)T*R֍<4\m:bE^n@,Iie$Ψ  [6 }ߣ.`q Ǟo1r4p ?_mO~уU`3g;'sJhjXgd9cv؄G53X& {4$Vuk3|6(DStSX&ᬆ+x&8HF endstream endobj 427 0 obj << /Length 361 /Filter /FlateDecode >> stream x핱N0KHDzMd08Fgx4G`d {N[ !\'/6y+Kq"xBgz"7/|WQO;<݋')g^ @;?&yx|*tTT#cFGߚjK RFgIAc! 1 'tU1@IoIe3C qG`,Rh-Rdd.RBy 6Sisfo{OuZGu||{f~AHZ؁S`*p@eI+b`(#)&0?&Ϭ endstream endobj 428 0 obj << /Length 360 /Filter /FlateDecode >> stream xڽN@Ǘl6<aD<)LXFkx4G 3;;ǡ^q^;sG+N\q3b9:W9l7M:mZ]'nn.\fӭenuoShh %"0qhj9uT1''ad⪖ʷn|̇l@ Ç|s,Tx?ѷjk(l0 AL;Q78?`'%L~I0>`D{=c/G+y) BĮo"6tϼxu6ڤDAMj^_49Z9G4-dG5kKC揑H\^/@ endstream endobj 429 0 obj << /Length 530 /Filter /FlateDecode >> stream x͕?0&G/I`YfFZ)؊Q%Z&T\+RxFD! \??۟=]=}W]>&6{x-5vp{ܼ|;םo߸7GvS Sp!`<ğ{M%~ ԱlHRQ _F*JQ1Pb jd *bhPZZ@@P*LUNdw71kIm_NAK:mvPri<'gʒ/;~''2Tأ ^@|-d^eЯqBPiʁ;+|(q!q0"R 9fjiR` O5PJS>;$_H抭aq==d sO`=dΡ׬MヾJ ?^Zr(CqJZC8d\̭X녶%"ju{ww7t6 endstream endobj 430 0 obj << /Length 266 /Filter /FlateDecode >> stream xԽJA )2OhDxD,$IiNȉysXGG ɸ?IafabvTP^At=)H ~ ky3@9;B5xBE"vIG5kժT%)K7f̫څWjƫe.h]:2-cBRh v*(?Xٟ(U_m~?\0Aֽ endstream endobj 431 0 obj << /Length 174 /Filter /FlateDecode >> stream x333T0P0bSCCB.3JrW01 s{*r;8+r(DMtQ``o````H2$IpRHd &Cl⒡aX _#HQr8Փ+ W endstream endobj 432 0 obj << /Length 388 /Filter /FlateDecode >> stream xձN@`.$#O l;L0XXX><%ƅey\dgg680:GgfqzP&]Kiy{JJsVDW: AD% A#"Dz/̨T!0oqj@Q>+[@+ @TfHeF  E\!"bDF?5^J䳽"rP !m +"'屨vu$A1.wa?..qM0g$ p ɳnf -m1> stream x333T0P0bSSCcCB.b%r9yr+s{=}JJS ]&ry(000700DI2؃Iv$y%? JCrzrr! endstream endobj 434 0 obj << /Length 339 /Filter /FlateDecode >> stream x=J@L70s(uSZYZZ(  ;basXX(s}ɲV(6H2g$(ʇ;޶繹2`D]IicKn}b¤]tjOrrj`2#6Hx!FsaG‚@ QpsҤ%`P%A}9`⸆(C!QaWHa׫[ng*}5/w ͦP>lB]'P{ͦZ7E 5[XW\9V;_A,/4{92JO endstream endobj 435 0 obj << /Length 256 /Filter /FlateDecode >> stream xԽjA4>]C6 LeR%)SD.p,Haqrpqv%X$Mp`?~bҗMnsM+z2FD; F11Ij 1xHogT  e.D ͏rwTcyzMjgԴPg?Q(n!v5|WyeoP^jWrJK**(?Yٯ(=-%ůc-?[ endstream endobj 436 0 obj << /Length 347 /Filter /FlateDecode >> stream xՔ;N0&Gع$F,)@T@I:9#Laec;,+p|38N@`} O| 43r}s oϼ\ 'D 34!!ȄrԌ_ Q1V-E:u=GJil"eS>s?gvU\z*@ӝ8fX63.8wإ\D6'՞[Te>Uaȣ -sY1/g_gzO]ЧI> stream x핱N@P\ Š*L0X!|1><%aY@FoٽN;z5W{:TP]hy-u0y CX H+ҏݥJKδ eRB$Ja>  jɡؒK1k(p,y$BL"m#Q# XcEɨLlThLM$# eOC*: jC$(Ӕ~f/Q'N~Cрoԍ]P>m>*#r7}iwFHycNV4DUc@v\uRt<†P > stream xj@sy7Q@ T= TOd endstream endobj 439 0 obj << /Length 394 /Filter /FlateDecode >> stream xuN@ etK!TJ;E*EL @0Ǐ$k Z*!zڿo:Xla,¼nVrj{Sۺ2ٔb]rgz4RȉdZ"!_ah u^ߺGX?JL 3 <@1dȐ*$  0ShTz 5Dbބ°40Drc-e\FUdh)SV1\\L d ))8 'A'0Bq݃nbz>q['e2~ှfIrFpa^7ex!d{eOs7wB}d endstream endobj 440 0 obj << /Length 243 /Filter /FlateDecode >> stream xӱ0H-y hVP?8(}b ZEL nmk [6 ߛ[b'5uPw ToG j32y+O@>FXA\GU C;s)+य़k,La8ŹIjK3 DF#behLB,VӨ?"?Ґ endstream endobj 441 0 obj << /Length 258 /Filter /FlateDecode >> stream xJ1,{e@4!P+AO'CE#8B"x9$|$O'j8#B3H0CX)pw(d\s/ϯOF7HxO'Ќ.LU/3G2(_ɄM$dʬvw*~rMmMUID'N-eUx?&\BJ(^y4l4pV_ ;kY]׊[6-e ,J endstream endobj 442 0 obj << /Length 369 /Filter /FlateDecode >> stream xڵ1N@!$p kɺ&RheaRK /Fb5,0cboHH_X)X$b!2'NG.#sl|n20x|ny]秗{//OJHy^1?Kf/ SԘ)ӺTQ j@)Ni‰QpԢ4QRN(D5T>*U AT0t"x©@A|>Rx5q n!PnwCR"EdVm?#lF2ۆu܏s$=rFLg8?SU?*|<#FwU)_/zcA endstream endobj 443 0 obj << /Length 499 /Filter /FlateDecode >> stream xڽձn0` p#/r)PکCѩ!AZ|3Q5b;R<&Ue2 O>N]w{uWwէw>yS-xuq{|:ު_[eegb{X^.WnH,R헡~%rQ!҄d.S'X>Rr/I"5)L&J\n@CA#/A#1w=)XAtJays@r%ٸiHS"_CF5&! |܍d |i 4&ZHA— H:S`?zJSM)_Gbl2"LLh9R_ 9JcWLS&#/P' IG@$hdJJc&7C9K{I3 $Wb,W7@]DҸ69#O-pJI#7Bx*Q"ۄ>$9MI ?_3^ endstream endobj 444 0 obj << /Length 492 /Filter /FlateDecode >> stream xڵԱ0qG"y#/S oċEb5ݚ1CcoE]Hm\T:gnԫꋖߤnWW{ysGeo#;ϯyZiYߪOZ5wx{B^!Q3 rpvU}˃ʉ4U] i@^+W+cʢV||> /&T5||9-q!B<-DPEGm L\=ާ{堑BxA{O@ k Ara!H}m r+es/=$zd eX6׌g$ m }JaN2*rV*+'TT]-00)a: cy@?OQnp*؇}n)Do ҝT *Oyɬd '!Y|&&rE0Pi&tHw8UQ~ؤQ endstream endobj 20 0 obj << /Type /Font /Subtype /Type3 /Name /F31 /FontMatrix [0.00484 0 0 0.00484 0 0] /FontBBox [ 4 -42 176 145 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 28 /LastChar 121 /Widths 445 0 R /Encoding 446 0 R /CharProcs 447 0 R >> endobj 445 0 obj [120.19 0 0 0 0 0 0 0 0 0 168.27 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 60.1 0 0 0 0 0 0 163.21 0 156.25 0 0 0 170.01 0 79.07 0 169.21 129.82 0 169.07 162.4 0 0 0 0 150.38 166.14 0 0 0 0 0 0 0 0 0 0 0 108.17 0 96.15 120.19 97.59 0 108.17 120.19 60.1 0 114.18 60.1 180.29 120.19 108.17 120.19 0 86.55 85.34 84.13 120.19 114.18 156.25 0 114.18 ] endobj 446 0 obj << /Type /Encoding /Differences [28/a28 29/.notdef 38/a38 39/.notdef 58/a58 59/.notdef 65/a65 66/.notdef 67/a67 68/.notdef 71/a71 72/.notdef 73/a73 74/.notdef 75/a75/a76 77/.notdef 78/a78/a79 80/.notdef 84/a84/a85 86/.notdef 97/a97 98/.notdef 99/a99/a100/a101 102/.notdef 103/a103/a104/a105 106/.notdef 107/a107/a108/a109/a110/a111/a112 113/.notdef 114/a114/a115/a116/a117/a118/a119 120/.notdef 121/a121] >> endobj 447 0 obj << /a28 413 0 R /a38 414 0 R /a58 412 0 R /a65 415 0 R /a67 416 0 R /a71 417 0 R /a73 418 0 R /a75 419 0 R /a76 420 0 R /a78 421 0 R /a79 422 0 R /a84 423 0 R /a85 424 0 R /a97 425 0 R /a99 426 0 R /a100 427 0 R /a101 428 0 R /a103 429 0 R /a104 430 0 R /a105 431 0 R /a107 432 0 R /a108 433 0 R /a109 434 0 R /a110 435 0 R /a111 436 0 R /a112 437 0 R /a114 438 0 R /a115 439 0 R /a116 440 0 R /a117 441 0 R /a118 442 0 R /a119 443 0 R /a121 444 0 R >> endobj 448 0 obj << /Length 264 /Filter /FlateDecode >> stream xڵѱN02Tŏ{LJȀHy4?Jx# Us(QŊK.c+Ҵ ZT^soX("yzMkoyuK/oHXa%ᮗ]V{K\?bDm-5eta)QL'tH|DdXnrfa[C?ΎI0mœDQU'y!}~j3;C?c&,ʍr<bV{/; endstream endobj 449 0 obj << /Length 166 /Filter /FlateDecode >> stream x3130U0P0Q5R01T05WH1*26 (ZBds<͸=\ %E\N \. ц \. @"1000=o`#0o  ?0X0?`a?~?V` endstream endobj 450 0 obj << /Length 245 /Filter /FlateDecode >> stream x]ѿJ@ )S\^ }l˥;8O0XB7% ɸ; bcvwwWa4[ݹ߹k>NW\݆U;\S3wG'"D{&2 QR63 la'39hd=L- jY0#3%/v>OͬMyQlOuc"CЯq/ 58PUߟ5ʋ IE|΄e endstream endobj 451 0 obj << /Length 240 /Filter /FlateDecode >> stream xuJ@Y- \{y9:I, QI*s2rR[^\89GI~!O,/OJn0|%cZQ DZ(I0m ^`ӆCش`QPDaKt1h: fh)xfoaqC | endstream endobj 452 0 obj << /Length 242 /Filter /FlateDecode >> stream x]бJ@YRG<Ϋ A9JD:>>>B!΄#W  ?ˮ7%Yk_Xoy/[t7|7t+鱢 =N$t=!|&I|΋MXZQlRhTpb ZI/pê; b/$fKaS3 ղhw f319ߏ-?1 endstream endobj 453 0 obj << /Length 199 /Filter /FlateDecode >> stream x]ͽ@1] n?` A[\A--NhM)뮹k33 ,ٶR @*2Yh=?"33%t> stream x3136R0P0acCB.cK I$r9yr+[r{E=}JJS ]  b<]0fD ,8& F8$`.,66 x2pDԀ@׳Bpzrr`w endstream endobj 455 0 obj << /Length 217 /Filter /FlateDecode >> stream xڕ1n@o4`+"T(PR(o##t03,Чy+|ÏA)ܷ[2^YRg<& %%sa9R21AF@t Ft~+!h d%Өhת#-Zj뼵{4;fv4kN.gI3GF endstream endobj 456 0 obj << /Length 103 /Filter /FlateDecode >> stream x323T0P0b#ccCB.C I$r9yr+Zp{E=}JJS ]ry(00+Փ+ A endstream endobj 457 0 obj << /Length 213 /Filter /FlateDecode >> stream x]1jA 8#B@2"V F![I"BIZ#{=–[ˬ^i:bC~Lxl9*-)%YN K^9!3珄's>Sc|J׀.."Ub'2':_W(\kĨVعyzլws+g_5"7`C= endstream endobj 16 0 obj << /Type /Font /Subtype /Type3 /Name /F29 /FontMatrix [0.01204 0 0 0.01204 0 0] /FontBBox [ 2 -2 77 59 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 71 /LastChar 118 /Widths 458 0 R /Encoding 459 0 R /CharProcs 460 0 R >> endobj 458 0 obj [70.7 0 0 47.05 70 0 82.11 67.58 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50.93 0 0 0 46.32 0 53.24 0 25.1 0 0 0 0 0 0 0 0 0 0 0 0 50.93 ] endobj 459 0 obj << /Type /Encoding /Differences [71/a71 72/.notdef 74/a74/a75 76/.notdef 77/a77/a78 79/.notdef 97/a97 98/.notdef 101/a101 102/.notdef 103/a103 104/.notdef 105/a105 106/.notdef 118/a118] >> endobj 460 0 obj << /a71 448 0 R /a74 449 0 R /a75 450 0 R /a77 451 0 R /a78 452 0 R /a97 453 0 R /a101 454 0 R /a103 455 0 R /a105 456 0 R /a118 457 0 R >> endobj 461 0 obj << /Length 102 /Filter /FlateDecode >> stream x3235V0P0b#CCcCB.C Hr=BIQi*S!BA,A'W !$ endstream endobj 462 0 obj << /Length 111 /Filter /FlateDecode >> stream x3235V0P0b#CcsCB.C HrW04r{*r;8+r(D*ry(7?P70`szrrD7 endstream endobj 463 0 obj << /Length 96 /Filter /FlateDecode >> stream x}+0DQ?4TI  (@" y!#9i isZE 7 E 0@bVHѕTHQi&Ċ)/=- endstream endobj 464 0 obj << /Length 170 /Filter /FlateDecode >> stream xՐ1 A E]8;v N!he!Vjih{9GdQސ<~~ ~p\p/J^[ѠL}V[9J2 >2tȖL ŒB@.Y*t}4Ik\7B> stream xѱ@ .<}#FxNI4:ã(72(eqbK._޵7\gDv6tN%czp`a0Q`*FfMQYTKKMI>Akb2p:[v䠲; zU^_mTЌ} 2H/;EgMCλR endstream endobj 466 0 obj << /Length 328 /Filter /FlateDecode >> stream xmAJ0WdLrT:qtB\Kh=JAKҺ-4b`iva [Q > stream xڕͱ @ !K?t*hotr'utPt~Z?>CiL ֩y!.N94$ L fOif-hbMA#ڂ jfcBÈ +. b?n^p @Q-^p"͠y #Sgs\3w]\YE`_ endstream endobj 468 0 obj << /Length 256 /Filter /FlateDecode >> stream x}бN0[#[w7kѮ)5ڂ,HY1FuE1$̝`ڳ$] ciiǒM6jT%0`t)ߚڣ0R7 A\tdC@f;w75>/G% endstream endobj 469 0 obj << /Length 263 /Filter /FlateDecode >> stream xڽ=N@ !L"nCeHJ $GQr-7qF}#[9մgXsoSxmWt5Zx|Ö (ETV";Yepš{J9~P(eRXfdH- Xq*K8/~byoƃq?}`0fW';j#cͪy< ^ux߳= endstream endobj 470 0 obj << /Length 196 /Filter /FlateDecode >> stream x3732V0Pa3 SsCB.3 I$r9yr+p{E=}JJS ]  b<]@ ?p,B@@4#P2J@@hyt?iBAu?aa ?[@?P\\\2oə endstream endobj 471 0 obj << /Length 184 /Filter /FlateDecode >> stream x}б 0+-}'0t I옡ۤVr~>S hR(#^- &َ"lU"kgdfA!!)isޝKT oY<py~# ?@IzS=ZAh1s!o9)ʦ:#ǥ-~ endstream endobj 472 0 obj << /Length 262 /Filter /FlateDecode >> stream xڽѱN02D%{p<-R$2 Āsh~> stream x3632T0P0aSsCB.crAɹ\N\ \@Q.}O_T.}gC.}h1\. 0 u'.WO@.y9 endstream endobj 474 0 obj << /Length 263 /Filter /FlateDecode >> stream x}ѱN0`W"ݒG'6"" &T`mhM""ʑ϶|./Ky[WZ> stream x3531V0PaScSsCB.K I$r9yr+Xr{E=}JJS ]  b<]V0RP %B٣P?bP8(.WO@. endstream endobj 476 0 obj << /Length 253 /Filter /FlateDecode >> stream x}ұj0 {ʦIBPvP:;~~? &S !HIwWŜ :[U4߱I_6|> stream xeѽJ@YR#dM\p` A+ RK EAI|Sgwv/'W,fnQE4tuw8\/nqѢ=ܢmOjKvI@Ƽ U;=zŋ'|+|1#GR (2))RT58B )*B 0Dtc㈒(rTd<\B"!OLm%!) Yxnĺ endstream endobj 478 0 obj << /Length 249 /Filter /FlateDecode >> stream xڵ1N@EQ M#\* $\D*J(SAG\2 "J˻]>{m,|Dr!B~zóӥdȜ t$Pϊ˹vdW3V-pu/ Ɨ=:`Nzw8r,Vpڞݥxdn&8둉;b9޳0rEӪUXЂyjA^:'?ƿI endstream endobj 479 0 obj << /Length 165 /Filter /FlateDecode >> stream x333P0P0b3SsCB.S3 I$r9yr+q{E=}JJS ]  b<]A ?Q( 2%O&b Pk!: @'@q%vՓ+ 0( endstream endobj 480 0 obj << /Length 233 /Filter /FlateDecode >> stream xڥѽ 0->B4bۭAAAk(>BG3͇uP=AYځK]k̵p&˜Mgd ok|xp +@Z/0d73(M\5|3WU =e0> endstream endobj 481 0 obj << /Length 263 /Filter /FlateDecode >> stream xeϱN@ ?y/iJ"JȀD' X{hy^cꊙD5=:駓|_.(_ I4BCjz8nZ:76 endstream endobj 482 0 obj << /Length 152 /Filter /FlateDecode >> stream x3331V0Pa3cS3CB.SK I$r9yr+Zr{E=}JJS ]  b<]ANi Z@5`NWiffI3i04?(p\\\wG endstream endobj 483 0 obj << /Length 196 /Filter /FlateDecode >> stream x1P .^@?'ILtr0NG(сP[C_۴ˏ0$y4h CmJ9&#&5!d 4rJ>6>y[Rb\ [Bgpq Db 7 %Xz’+pC7 M=$qY+|T endstream endobj 484 0 obj << /Length 246 /Filter /FlateDecode >> stream xm1J@/l!&7scuSZYZZ( fRn1d|c yLsutkik-j\ȇwYR>U+J߹7)׮rjW=Kq>O0Dt2uT'H{@PL?jfG'X Ռet% 2ӿLaTf IeLǙYf41?Ef<2fU^֝ endstream endobj 485 0 obj << /Length 199 /Filter /FlateDecode >> stream xuν 0+['0~I훙G#t =猪!ARG4!3vYW}؟pRP>@}vD?YM)C?mFAh0Wp(Ԇ&R_GWRM1|w5F ]5IW'C{p:V# \ 8.y endstream endobj 486 0 obj << /Length 191 /Filter /FlateDecode >> stream xڵϱ 0H- Lj3:9::(:O'dP{^CEĐ<%$Q`c^ c4 }p̀4]Pf*[1.h&GA}1t@%c55l)1(*zúg ?q[넭Da_=@M 4Bڐ3'`a`Ot턀 endstream endobj 487 0 obj << /Length 184 /Filter /FlateDecode >> stream xڕ; @ )Bnb*#X٣(9BKY#X[?MbJ]-(9ktRSZ*KJPUtH(>> stream xڵ= @FR2'p$!v-,J--o d3<6{A\Ƹ+ [΁Di,7P3P#eƸ֠5->E)tDL̔Z&U!˧m,Jy"LXI?嵏]&^-VgǞZn$̴ɦp h endstream endobj 489 0 obj << /Length 191 /Filter /FlateDecode >> stream x]ν 0S:w#>mб N(Q3 \'3ʇE)rF2:Rߥ}ה$S2{Z|)/&QR:tCuňC:DvG|iFyV;tPo07{KxN. P5 ҂5-Qle endstream endobj 490 0 obj << /Length 155 /Filter /FlateDecode >> stream x33P0P0a S CB.c I$r9yr+p{E=}JJS ]  b<]?000?FF1 b bҍXo5 endstream endobj 491 0 obj << /Length 264 /Filter /FlateDecode >> stream xڅN0 ]1Drop @ZUt`b81# xlB$7bBb"~??;㺧j|ƶoE]p3A{)~=\SvK;rJxP0w4{\ .c9N]"Yp&Zmm1B`XX 212sP)HrL51UW[$tUݒYņ'r endstream endobj 492 0 obj << /Length 157 /Filter /FlateDecode >> stream x3530U0P0bS#S CB. I$r9yr+Xp{E=}JJS ]  b<]3$;d%YH2$@A6W  H$r  WH endstream endobj 493 0 obj << /Length 122 /Filter /FlateDecode >> stream x3235V0Pa#SSKCB.#C I$r9yr+r{E=}JJS. @-\. 0!("3#! F#.WO@.Nq endstream endobj 494 0 obj << /Length 198 /Filter /FlateDecode >> stream xڵб 0J-}TZV Nj}G!̝:w'dfiYNf6\`w4=]/tbMf u~CQӈ*SKc;[ȩXeٰcF:ԋ!1H޿B !%ԉ=ۈec'l_ق0aOP endstream endobj 495 0 obj << /Length 105 /Filter /FlateDecode >> stream x3235V0Pa#3S CB.## I$r9yr+q{E=}JJS ]  b<]3GBqzrrW endstream endobj 496 0 obj << /Length 188 /Filter /FlateDecode >> stream x= ` C!GhN"  N(kyo =7:8pӺ.fϣRv39;6X|6|GB%%9 " 4Drr{EfV5 RגS^r_,IQiN[)%[y/ [> stream x3530U0P0bS#csCB. I$r9yr+Xp{E=}JJS ]  b<]1` g$m7>0`l@"$'W  endstream endobj 498 0 obj << /Length 176 /Filter /FlateDecode >> stream x3137U0P0bScsCB.C I$r9yr+r{E=}JJS. @-\. 000$700cA2 \ i$ ?l 4b>.d!p!dr~$_\\\-in endstream endobj 499 0 obj << /Length 193 /Filter /FlateDecode >> stream xڭп0$ h[I;`A3>#02+hMK`#8c1qgaSQH-1A9O=t1A*õA]OPöJAy)Ir&~mk]{77xܿf}N$nC&L-, endstream endobj 500 0 obj << /Length 144 /Filter /FlateDecode >> stream x336V0P0bcsJ1*26" \.'O.pc.}(BIQi*S!BA,? DM}?`@8P$` 4'Apzrr8W endstream endobj 501 0 obj << /Length 187 /Filter /FlateDecode >> stream x%= P7.BBBQy[Hθb2+$+]n: 2/*NrN7rZmx]9]bJV9q*> stream x3634Q0P0bc#ScCB.#K I$r9yr+Yr{E=}JJS ]  b<]0<z @?bT 7~`@400cr pR endstream endobj 503 0 obj << /Length 149 /Filter /FlateDecode >> stream x3530U0P0bS#csCB. I$r9yr+Xp{E=}JJS ]  b<]30??@5J2"0?;lA*r  endstream endobj 504 0 obj << /Length 199 /Filter /FlateDecode >> stream xe̱@7&`8ɚ( BX+ RK EBɧ"8qaZ=y$/$I+w良`=,g+b*qz;D$K.&Q~8-x)؇% Vd.hUAmP[0+|D0|D] zy^֐}bUc\6??#Zh endstream endobj 505 0 obj << /Length 236 /Filter /FlateDecode >> stream xuαJ@9R,Lop'p=pSZY՝pE h({]#ZFcf˳朻Em%a⹐QWthMB{[ݝx|A6%ڭy*M\K&#d!#POI* MD // R2h``R̓m\Ջz=@>6m8}F}:1Μ> ,Ef]O sSq0iTxj endstream endobj 506 0 obj << /Length 245 /Filter /FlateDecode >> stream xeϱJ@YR &^SZYZZ( W$/%E[nnY|,3[%t@{!4?dS5}{e ݹ5nyyJb"fo87a L{kqEoڛA IsLlL;q6,)"pk'a 6jTvMt%yp7c%^ +~o endstream endobj 507 0 obj << /Length 122 /Filter /FlateDecode >> stream x3137U0P0bCSCB.cc I$r9yr+s{E=}JJS ]  b<]DbvQ$G%AÈB\ endstream endobj 508 0 obj << /Length 231 /Filter /FlateDecode >> stream xmJ0,%Z%c7!02I|zGƭVx|,͝Gif4ۛ IodyA# ՌJ&E8]&Rj Ф KX"9߰C"N +oq @F2h.pFmLF IA.gOլ endstream endobj 509 0 obj << /Length 237 /Filter /FlateDecode >> stream x}J@ba> stream xڕϱ @  Y6O`[ҥTAAAQPG#ttt $Byp :D%;摤8ߨ0XnlBuحVK>/'2%;%|AtG*A0`/PuF199a{Db#j3X5SS imhO_o`{ endstream endobj 511 0 obj << /Length 229 /Filter /FlateDecode >> stream xڅϱN@ `G"yh_p([+"5:T #^%pcHe``\wm# i䶔߸jQD^yݱKղߢ̾{{)oPFn(F ѩjd|L@6mБT /刏sg`|8c¨5 M◔i\Qn+ yrevEsᇎw 4s endstream endobj 512 0 obj << /Length 235 /Filter /FlateDecode >> stream xu=N0M#x.NV[YZHPQ *Ap%G0EagY<]6\瓚CMϴXiXq~hݒŊ܅K~}y{$:܆ok0`2Rӗr@IrBGbd2lRV;xF!#SIgk4IY;!Gabݸi^aeb_Ȼ+:(4 endstream endobj 513 0 obj << /Length 200 /Filter /FlateDecode >> stream xڝϱ `{2As3!!(hzĺt~8a@ R0G=9q|s:.{tń8Mh3L+"dL-VKx{pprm%@%*!ifȣ1ֺhfGݨZF> stream xE;N1 `G)Fr#/jH"1T ()@Pg)S{Al)iwiC]4M4O2;nyy~Âm82-}~|p#=yH`xpv $",t?JIRsTR/v 6#`f3G&-]\\\EV>RtU?p"F !SS`% ^/x?}ϓ endstream endobj 515 0 obj << /Length 237 /Filter /FlateDecode >> stream xm1N@o4s؊R $(UA WM#šapJ]_;勆ۖzƆ5wdJ۞^m1U-P↪?6\?Qc i&d r2!.G?pS8|9]'?XPT)L%[2/jNl>9ے5FX = WUUG@~U햎 endstream endobj 15 0 obj << /Type /Font /Subtype /Type3 /Name /F28 /FontMatrix [0.01204 0 0 0.01204 0 0] /FontBBox [ 1 -17 88 59 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 27 /LastChar 121 /Widths 516 0 R /Encoding 517 0 R /CharProcs 518 0 R >> endobj 516 0 obj [55.7 53.05 0 0 0 0 0 0 0 0 0 74.27 0 0 0 0 0 0 31.83 26.53 0 0 47.75 47.75 47.75 47.75 47.75 47.75 47.75 47.75 47.75 26.53 0 0 0 0 45.09 0 72.2 0 68.97 73.23 62.74 0 75.08 0 36.21 0 74.85 57.43 90.65 74.73 71.73 65.28 0 71.62 53.05 66.43 73.46 0 0 0 0 58.36 0 0 0 0 0 0 46.42 53.05 42.44 53.05 43.77 29.18 47.75 53.05 26.53 0 50.4 26.53 79.58 53.05 47.75 53.05 0 39.33 37.67 37.14 53.05 50.4 68.97 0 50.4 ] endobj 517 0 obj << /Type /Encoding /Differences [27/a27/a28 29/.notdef 38/a38 39/.notdef 45/a45/a46 47/.notdef 49/a49/a50/a51/a52/a53/a54/a55/a56/a57/a58 59/.notdef 63/a63 64/.notdef 65/a65 66/.notdef 67/a67/a68/a69 70/.notdef 71/a71 72/.notdef 73/a73 74/.notdef 75/a75/a76/a77/a78/a79/a80 81/.notdef 82/a82/a83/a84/a85 86/.notdef 90/a90 91/.notdef 97/a97/a98/a99/a100/a101/a102/a103/a104/a105 106/.notdef 107/a107/a108/a109/a110/a111/a112 113/.notdef 114/a114/a115/a116/a117/a118/a119 120/.notdef 121/a121] >> endobj 518 0 obj << /a27 465 0 R /a28 464 0 R /a38 466 0 R /a45 463 0 R /a46 461 0 R /a49 507 0 R /a50 508 0 R /a51 509 0 R /a52 510 0 R /a53 511 0 R /a54 512 0 R /a55 513 0 R /a56 514 0 R /a57 515 0 R /a58 462 0 R /a63 467 0 R /a65 468 0 R /a67 469 0 R /a68 470 0 R /a69 471 0 R /a71 472 0 R /a73 473 0 R /a75 474 0 R /a76 475 0 R /a77 476 0 R /a78 477 0 R /a79 478 0 R /a80 479 0 R /a82 480 0 R /a83 481 0 R /a84 482 0 R /a85 483 0 R /a90 484 0 R /a97 485 0 R /a98 486 0 R /a99 487 0 R /a100 488 0 R /a101 489 0 R /a102 490 0 R /a103 491 0 R /a104 492 0 R /a105 493 0 R /a107 494 0 R /a108 495 0 R /a109 496 0 R /a110 497 0 R /a111 498 0 R /a112 499 0 R /a114 500 0 R /a115 501 0 R /a116 502 0 R /a117 503 0 R /a118 504 0 R /a119 505 0 R /a121 506 0 R >> endobj 519 0 obj << /Length 189 /Filter /FlateDecode >> stream xڝ1 @EL70s @BBZZ( 9Z#XZ:IVt« 3Or#xjBN%7nt8SjImYǤ+]'RzΚT;l@TJ @ hxjze/ ]a;AdD/ak+?iTRS" }G@ endstream endobj 520 0 obj << /Length 188 /Filter /FlateDecode >> stream xڝ1 @EL/ :ͮA"EVbE$Nxg1q߄l">h.!Ǧ^OXRcR 7'e|ޏՌ5ٔs@ th~//iKxO`LГtIVx?>(=Cuڕ/@RriniMoEBs endstream endobj 521 0 obj << /Length 165 /Filter /FlateDecode >> stream x333P0P0W5RLLR L @ "ɥ`jU()*Mw pV0wQ6T0tQ``LɁI`⇈@R)&U@c B@5@  j-\;@e\=+ endstream endobj 522 0 obj << /Length 96 /Filter /FlateDecode >> stream x3230W0PT52T04Q03RH1*2 (XCes<L=\ %E\N \. ц \.  \=^ endstream endobj 523 0 obj << /Length 161 /Filter /FlateDecode >> stream x333P0P0W5RLLR L @ "ɥ`jU()*Mw pV0wQ6T0tQxJBS \! %@5bٖA)~d%P PrFC-Z+$QLzDKr d* endstream endobj 524 0 obj << /Length 103 /Filter /FlateDecode >> stream x333P0P0W5T2u MR L @*ɥ`j`¥PRTʥ`ȥm`PP *- + endstream endobj 525 0 obj << /Length 109 /Filter /FlateDecode >> stream x3230W0PaCs3CB.K 'r9yr+Xr{=}JJS ]  b<]d7zl+ -@>'W / endstream endobj 526 0 obj << /Length 130 /Filter /FlateDecode >> stream x-ɱ 0 g 2'0-k3:9 TGAEfڢ|7lXU:x@='e; m;P=fpq}kw+*\ǣҟ;ZFy2ddL*R!sBY ,P# endstream endobj 527 0 obj << /Length 164 /Filter /FlateDecode >> stream x3135R0P0U02S06W03RH1*26 (Ads< =\ %E\N @QhX.O8qs憺 ꛛn 10`` 6P $RR  2d>@nr TD endstream endobj 528 0 obj << /Length 105 /Filter /FlateDecode >> stream x333P0P0U5S03P0PH1*25 M 2ɹ\N\@.}0PRTʥ`ȥm``C'W ) endstream endobj 529 0 obj << /Length 131 /Filter /FlateDecode >> stream x-1 @E?^ xЙmV"RP:ٙ&Nwo\%红V\xA=y1:nwՇ Y/ t4M22DT&2+<*B# endstream endobj 530 0 obj << /Length 94 /Filter /FlateDecode >> stream x3230W0PaCsKCB.K &r9yr+Xr{O_T.}gC.}hCX.Oz 0X [\w endstream endobj 531 0 obj << /Length 153 /Filter /FlateDecode >> stream xڅ̽A ɉ̗eSH" ͣxwN5gvZ88Kb񀷲>7TzOoײC _.)k̓<j*zP R.NO|[ƧmdSL6e\6NdV;x* endstream endobj 532 0 obj << /Length 101 /Filter /FlateDecode >> stream x3230W0PaCsc3CB.K 'r9yr+Xr{=}JJS ]  b<]d7`= 1S'W fp" endstream endobj 533 0 obj << /Length 140 /Filter /FlateDecode >> stream x3230W0P0W54S0P06SH1*24PAS#Tr.'~PKW4K)YKE!P EA 30` Px҂!Փ+ &, endstream endobj 534 0 obj << /Length 162 /Filter /FlateDecode >> stream xUA @7 u XJ0fԪEB ,jmAi"=xj1k)%g/ I|<$7}Mlx]I'$K>&ȔGȽm~i\ԅΏG8¢x8M lj0 b+12 endstream endobj 535 0 obj << /Length 94 /Filter /FlateDecode >> stream xM=@PEx$^!R { T߱4J2:*54`ƴ"f@BJJ7"i endstream endobj 536 0 obj << /Length 165 /Filter /FlateDecode >> stream x323P0P5T06V0P0PH1*2(Bs<Áj=\ %E\N \. ц \. 10703H01X010000$E@PPc0n`0\@r ;g0 endstream endobj 537 0 obj << /Length 91 /Filter /FlateDecode >> stream xڳ030Q0B#C c#cCB. # D"9ɓK?\ˆKCHx*r;8+r(D*ry(HL.WO@.' endstream endobj 538 0 obj << /Length 122 /Filter /FlateDecode >> stream x3135R0PT0T06V0TH1*22 (Ces<=\ %E\N \. ц \. 5 5g" 1*Êl*,,0'W /67 endstream endobj 539 0 obj << /Length 351 /Filter /FlateDecode >> stream x5J0Eo Xb6? Vf`T AW.Dԥbe|B]w6H{-O&79,Lylʹy7]Tr$:)zSQ/w9z槞PgS@="m͢"{tS_\L:eR@5Rl# L7^ Z7] gO.Py&#MYY.IgϞp?GTl]fb& endstream endobj 540 0 obj << /Length 172 /Filter /FlateDecode >> stream x3134V0P0bSKCB.# I$r9yr+q{E=}JJS ]*c<]0A?  @CA2@5@D!dPICd \\\^ endstream endobj 541 0 obj << /Length 175 /Filter /FlateDecode >> stream x331Q0P0bScSKCB.S1s<L =\ %E\N @QhX.O g``~?`g N}`o`F¢0?Q\\\ endstream endobj 542 0 obj << /Length 154 /Filter /FlateDecode >> stream x3134V0P0bSKCB.# I$r9yr+q{E=}JJS ]*c<]0AI~ i"?P3@JR|Z0 @&\=) endstream endobj 543 0 obj << /Length 208 /Filter /FlateDecode >> stream xѱ@?Xf!FHJ"BJ--|1}_aau=΁egM]p,+qeL?&wXis)|›p1$Myƀv3|-{Pe!,GpPghFdPCWT-kCj( gf"{![ޗAftC endstream endobj 544 0 obj << /Length 330 /Filter /FlateDecode >> stream xe1K0 WbV hUw'AAAStp7?S>C>BG{I<J@MTY2Wn檜G>yv36sB<[B7^* kΛ[ojW^ar*Gɿ*ohȡYP~h)?_o``@t6J[LmS/t ]#zIm&+S %-% -3_P}Ҙw4&!YkC1R۠u㛥Ft(X@;x1lY1NN|1`'1:?%r endstream endobj 545 0 obj << /Length 185 /Filter /FlateDecode >> stream xڍ1 @ LMBVbv9Z#L!W0as_DhO-%CX턏ӆt2r@:兜YMz&cPpte] 0.,$+IJ_Fn_o^:, v;r endstream endobj 546 0 obj << /Length 235 /Filter /FlateDecode >> stream xmj1 ^=;Od-$AhO=Xބͣ{N"Q6>fB&?N'izmf4Z||DJƠz.rM/T%V~rEP@X8 \IU{3bY1Ez$'i=Sː†LBp6Pu 8:R [49޲&&Z'XΝ_%m endstream endobj 547 0 obj << /Length 209 /Filter /FlateDecode >> stream xڕ00#pO`Amd3ALd08Fgh< @ڴ_e4f, kӄqH2@5(xEB3 i3 5C8ZA/:L^pXpkFbIF2qUNCE>_c+vdn&~VP endstream endobj 548 0 obj << /Length 260 /Filter /FlateDecode >> stream xڭѱJ@? LaZ 4ܪ[-'BBRP̛*y+uvg!B#n;MG4Zly\Ѣ瞚-Sӟ-5#%_v^QdRPDZTRR OԵ@*(AWE],RIR57P&?2oƐ(~#FLg5=dF#zvL;mf&,mXJ[a # }R:%e-vvS=U:霾es endstream endobj 549 0 obj << /Length 194 /Filter /FlateDecode >> stream x3331V0PaS SsCB.S I$r9yr+p{E=}JJS ]  b<]Bc``D@.0L1S?UB7@`JJ=SP (<9P@=mrC%hAC!@ y`> stream xuб 0  /0 D4?/iLsqINƪ&v)9 O44FQ5o3j ioKk2 DdFLƤ1(C8^QDɰ|p1۽."byҀ)gk׿R?U~ endstream endobj 551 0 obj << /Length 166 /Filter /FlateDecode >> stream x353R0P0bSCSsCB.s I$r9yr+s{E=}JJS ]  b<]d `6`RAI68؀L2`%Hv0)"G'!P5Ⱥ AJ$ `G@%\=Mx endstream endobj 552 0 obj << /Length 254 /Filter /FlateDecode >> stream xڭѱJ@?l&yM"&`p` A+ :--7`kMg+ & XKf]{t\)pp{ =SuV=UvT]j__Z]>5(6S`-̗oնd IS03aLlB".!1Ox&pcJ&HۅrI)ܔ_,v0{ltT颧 endstream endobj 553 0 obj << /Length 125 /Filter /FlateDecode >> stream x333P0P0bSKSsCB.SS I$r9yr+r{E=}JJS ]  b<]?T b78) s)hb y.WO@.!7 endstream endobj 554 0 obj << /Length 106 /Filter /FlateDecode >> stream x3ԳT0P0aKSsCB.#3 I$r9yr+q{E=}JJS ]  b<]acW3v\ endstream endobj 555 0 obj << /Length 165 /Filter /FlateDecode >> stream x3133W0P0V5R0T05WH1*26 (ZBds<M=\ %E\N \. ц \. ?@"000=o`#?0o  0X0`ao`27Áq \\\` endstream endobj 556 0 obj << /Length 243 /Filter /FlateDecode >> stream x]J@Yr̡@&A[sjsɃxj= Qj(y=HДeDz~,//Ue7~_G8"Ǎ;ΟGΗoKWn6^D8I F"!:+2oa[87`d`+hLMfp&byiguf0~5jRryd* Sk_ N9Lxods-5P endstream endobj 557 0 obj << /Length 140 /Filter /FlateDecode >> stream x35ԳT0P0bKSsCB.S I$r9yr+r{E=}JJS ]  b<]d3 eR/i& 0 d`L?`@!\=Afl endstream endobj 558 0 obj << /Length 244 /Filter /FlateDecode >> stream xu?kP{<0p '% ur(vtـ]G|X#y=8. [~< 8:İ˵W|Ք.1wQ@jH>yo瘣1 ý 8hFx]*18yTB,a PM 2< fep\$I5+zG4VY5D NZ@fW'coQ! endstream endobj 559 0 obj << /Length 243 /Filter /FlateDecode >> stream xUпJ@/.0fMN?Sge!VjihkR\AKT֩$EuwM1f``w%=.>jRWRkRnKO/VSYZR7T@fm큼0 {düۘ=4]L3Ȧa@bli@T|`MLjb4L1dtFW$G *.|ؙtI6Dc endstream endobj 560 0 obj << /Length 239 /Filter /FlateDecode >> stream xڭ08#^@D'D::htGxWm~_LyxJsNgo(I5M7?/&~I#K CԼ*x1F%)dB 񑊅A8EjGU(Nk4, ~j}> stream x3535T0P0bS#SsCB.K I$r9yr+Xr{E=}JJS ]ry( , LS? 0adT Y;PCuP7 .ĵ'W K endstream endobj 562 0 obj << /Length 309 /Filter /FlateDecode >> stream xڭJ@ba 3/I B<ZYii(6Y>D|I":$Eٙٙ/ -K3&tGt|My Z˽gxE7)%Z[Vz=EdꀚKzN.{7A|$sQЄ>j"vDmvs#Lÿb~dG[VueajEyȳvY:%*?ʵJ~D`q@\qBc̚p` jڷ<q}^+ 6 endstream endobj 563 0 obj << /Length 221 /Filter /FlateDecode >> stream xڕѽ 0𖂁#x/i*U ~I(}JK "&HrtF*8 q0Y Ȁf4  ״ 2o@.08BDu uf,HW lf(ze~ަ_Q@6+L6elZv,XKP~EԺe֩N=v< endstream endobj 564 0 obj << /Length 256 /Filter /FlateDecode >> stream xUϱN0 )K~h{=B @!Z̏F%Psw|J8êt0r^jE>U KWk=?ܻbuyJz_uEk?ƌ!fl#>3Z;@'7x &&ȖNm9R0!G/aEFD+E$ьMX^>a-M=:upǴ-i}GA^{sywָ+=# endstream endobj 565 0 obj << /Length 150 /Filter /FlateDecode >> stream x3Գ4W0P0bSsJ1*2" Fr.'~1PKW4K)YKE!P E?<@0g`A bP>T*L`)`J+F Hʃr Wr endstream endobj 566 0 obj << /Length 191 /Filter /FlateDecode >> stream x= @B\@7JL!he!Vj)h9G,Sl3X,fuVsmnFlzl @Hw4HH/I'S>[ِ҃C#^(>l \3X~ZPCAJ'BEH?4u7{-'ROr%xVݙ÷C qBszxa endstream endobj 567 0 obj << /Length 240 /Filter /FlateDecode >> stream xm1j0g1> stream xu1K0W v8b vtr@?')ΝCMHH^K^Y/PX.8\> stream x]AJ0CМ.8]ʅ҅&uW<3ѐ.OXSZ[svn Ik_> stream xαJAYL"y.p1bLBASP=p2E8n@,ofgɌKWR+s8 5srzJ 5W7Y ~k%vTZ^{cٳUoC0˖*STB`ζ&%EQ0b43e}"_馡}l endstream endobj 571 0 obj << /Length 232 /Filter /FlateDecode >> stream xU1J@/&Gw@B,āuSZY `-G#liv|ߋ`fȟiʓRuMϕK]ټOӺVEͅF6}8rBG g@p voDD,ZNE- -FI2vpeDZdbtkt`el6X"d=y<"W.;_t endstream endobj 572 0 obj << /Length 204 /Filter /FlateDecode >> stream xm; @ . Vf.1L!he!Vji(X({8Qښ}i<"Ńf{Qj{T3Qes:.{TŘ4 5E&6%/_x/PAP02g0yp&dBw:+0}ATyM6Ӣ5l.5iK|T endstream endobj 573 0 obj << /Length 198 /Filter /FlateDecode >> stream x3134V0P0R5T01V0PH1*21PASKLr.'~PKW4K)YKE!P ETD0S$00|`A; 00* ?8Q"I&PMb`߁q ̍:]'W ckA endstream endobj 574 0 obj << /Length 182 /Filter /FlateDecode >> stream xڍA `'?(   AZDjX.̣y҅Tcu 7f: 5P L % MBb%_/#jƒ&Ύ҄Z{Ue5TƩ-ՇW6j@-OӉ;*`{^[bTd7 wSZ= endstream endobj 575 0 obj << /Length 198 /Filter /FlateDecode >> stream x3134V0P0V5T01Q0PH1*21PASKLr.'~PKW4K)YKE!P ETz !HԱ` |P=iu D)ph<krF=A?0`> stream x]1 @\B/ 8M(+Tr!bI q23;9nvdC)lGUgwIBf6$32d@fr@&m)2ϩ\^sϵ2HQRQO5QJrh MTrL@V@ endstream endobj 577 0 obj << /Length 141 /Filter /FlateDecode >> stream x3236W0P0bcSKCB.# I$r9yr+Yp{E=}JJS ]*c<]70| C`003a`\=&[ endstream endobj 578 0 obj << /Length 237 /Filter /FlateDecode >> stream xڍJ1ƿ00 v^@9Å+T[}> stream x3134V0P0bS CB.C I$r9yr+r{E=}JJS. @-\. ?&iNa`D~700n?D䇁$7 \\\y endstream endobj 580 0 obj << /Length 122 /Filter /FlateDecode >> stream x3230W0P0aCS3CB.C I$r9yr+Zp{E=}JJS ]  b<]0@A@8~? q0\=(CE` endstream endobj 581 0 obj << /Length 150 /Filter /FlateDecode >> stream x3236W0P5Q54W0P05SH1*22 (s< =\ %E\N @QhX.O  P?`E6?gc?P~.WO@.W endstream endobj 582 0 obj << /Length 196 /Filter /FlateDecode >> stream xڵ1 @Еir3'p.#BBRPQr0E:? d37u.{ʧHrCqJzƁGz$15x2`ts [R?L3؂rkm;x3HKv@%.oԐ nn**ɍ@ÔDr endstream endobj 583 0 obj << /Length 108 /Filter /FlateDecode >> stream x3230W0P0aCS CB.C I$r9yr+Zp{E=}JJS ]  b<]?0! ̃`qzrrƂQ. endstream endobj 584 0 obj << /Length 177 /Filter /FlateDecode >> stream x33R0Pa3scsCB.3 I$r9yr+p{E=}JJS ]  b<]?`@=:773n? Da`N``` O7Nszrr#߈ endstream endobj 585 0 obj << /Length 147 /Filter /FlateDecode >> stream x3134V0P0bcsCB.C I$r9yr+r{E=}JJS. @-\. ?00`D~70n?D䇁$0I.WO@.e% endstream endobj 586 0 obj << /Length 188 /Filter /FlateDecode >> stream xڍ1@E #0e6 &naRK v9GTd)HN^f̦ǚ95(EqߜR{cRkI ? ldM*H&g8^WSQdHVR!J*- i~ nN/ookg$AH> wlzZIK endstream endobj 587 0 obj << /Length 196 /Filter /FlateDecode >> stream xڝα @ HByuj;:9::(>Zp"]qQ |CB?2ܓ1G!#I:Ramd$V$fO"tٓH$R^K6ʯ\UW0/%>T5*4hy~> stream x31ֳ0R0P0V54S01Q06WH1*21PAScTr.'~PKW4K)YKE!P E0a<|?`0?> stream x3635R0PacCcsCB.# I$r9yr+Yp{E=}JJS ]  b<]3P?n3 ~o0ah`?PszrrjF endstream endobj 590 0 obj << /Length 195 /Filter /FlateDecode >> stream x=αJ@Xf x{`TSwZ * W6`"8%Gf|q~K.4pR^j<> stream x363T0P0T5T0P05TH1*22 (Ads≮=\ %E\N \. ц \.   W  @ @,?(fQ 0pC sC3=;?f.WO@.uH endstream endobj 592 0 obj << /Length 153 /Filter /FlateDecode >> stream x3134V0P0R5T01Q06WH1*21 ([@ds<L =\ %E\N @QhX.O `J`pB`왏I@.WO@.1c endstream endobj 593 0 obj << /Length 183 /Filter /FlateDecode >> stream xU̱ P#k[WJ' rjj Ɔh>`Phj @ B\Q#HEldȗ$"Sg3:.{|LVkRj_ ..X ,g0i) <p&A=j|c(vk]b=(ԿOI |F? endstream endobj 594 0 obj << /Length 233 /Filter /FlateDecode >> stream xU=KPs Xxv(zb`A' Q|A7|~Lx`7UN?8g!Aj"z$r~nhdHڙdrO/$GcHN* WUP6Aߴ45q " bx%tq_cGŲh;L t5<fOk2|+ZlECd(IBY_ endstream endobj 595 0 obj << /Length 210 /Filter /FlateDecode >> stream xMν @ )(> stream xUj@Yi nZ$sSEGQ|x I;=F(N8^D!qiIs ǔB3I-1QYAg//74gZv* 0ÿ+]SCE@QsϰF,IqSn/'gCb^mmjg`1'>ڟK endstream endobj 597 0 obj << /Length 183 /Filter /FlateDecode >> stream x%1 @@$|'0+AA),DQI:IUuO)Fh~!;:c̐ېዬQ֑)HpIH]RY#H[m(l2Oe-?uC endstream endobj 598 0 obj << /Length 188 /Filter /FlateDecode >> stream xڵ1 @EH!L#d.ͺB` A+ RK EBbGRRl6Pt+ǬƬ5$Ii;Xf$#aI,Dv$f,I(K~ |[jWopG!SE /zO6x+ӸY~uд` endstream endobj 599 0 obj << /Length 121 /Filter /FlateDecode >> stream x3135R0P0bc3SSCB.# I$r9yr+Yp{E=}JJS ]  b<]0001; aX*6T?0'W N endstream endobj 600 0 obj << /Length 228 /Filter /FlateDecode >> stream xmαJ@o"0M^ป'pWSZY `eh>J+5E~;Yct_^iC-/+9u'Zst }{} ,, %s'l"aAZқMY'W Tc| endstream endobj 601 0 obj << /Length 235 /Filter /FlateDecode >> stream xu1N0ЉRX`3',ZiY$R AE GQr[0"OʌǓ/^ҟ+Vɾݭ%+yxb>F:iy-29Q EPE6fLV&b&e6fՎY (y/ifU _ cBԨM>y2_ |Ǜjh endstream endobj 602 0 obj << /Length 188 /Filter /FlateDecode >> stream xڕν @ + At-('𮶵kotrP?Q_ I+F!=ړ,o)$G$'KROt8oH&{$S^zVSBĢ iAf1h.p;`Z \2oߛy544` endstream endobj 603 0 obj << /Length 226 /Filter /FlateDecode >> stream xڕϿjAna s=b!j WJ!`R nGG8̜EH:_1;dySpnyΟ9)_6[d?9oR&[}";YL9#;e銊Һ„pQ*+j .+xs7xĕ\ }rR /:tKuNTc'ې'jiT2Dׂ+X endstream endobj 604 0 obj << /Length 243 /Filter /FlateDecode >> stream xmJ@O"p}dXW0 j)h()SDm>{uuVZjG+9}Mjag"VNbkx|JV+-*@ Ps&[ D>#E@rI~2> stream xڕα @ HB}Ѽ]`A'u(GQ|TZ?$w#3ihdȎhC!s8cТZp*Yz?WS2f5wHPQY 4a:B@ 8 1n -SQR-8 d_Ѯ+J_> stream xMJ@Eo[8м$AB`B]W҅E ;#Ǜ*y{wquLZZj}%OR7KmN~&wlֺ₲<>H\i%Jo*-o])L O[ `;d1a3X`LpM6{{xSHp|tO01l6 i4,e3zwgRS@v伕+c endstream endobj 607 0 obj << /Length 237 /Filter /FlateDecode >> stream xu1N0бRD@\lBTE"T AKr!e3 gi_'aE5tB 2(_pӢ&1^_v7T]M=[b.'0S2*(ٌ`&p B!t 灼__Rc%ɞ 6{6C!Ic)A?XZ1IN+OVqY- m9 endstream endobj 11 0 obj << /Type /Font /Subtype /Type3 /Name /F15 /FontMatrix [0.01204 0 0 0.01204 0 0] /FontBBox [ -4 -21 83 62 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 16 /LastChar 124 /Widths 608 0 R /Encoding 609 0 R /CharProcs 610 0 R >> endobj 608 0 obj [27.68 27.68 0 0 0 0 83.04 0 0 0 0 48.44 46.13 46.13 69.2 0 0 23.07 41.52 0 0 69.2 64.58 23.07 32.29 32.29 41.52 64.58 23.07 27.68 23.07 41.52 41.52 41.52 41.52 41.52 41.52 41.52 41.52 41.52 41.52 41.52 23.07 23.07 64.58 0 64.58 39.21 0 62.28 58.82 59.97 63.43 56.51 54.2 65.16 62.28 29.99 42.67 64.58 51.9 76.12 62.28 64.58 56.51 64.58 61.12 46.13 59.97 62.28 62.28 85.34 62.28 62.28 50.74 0 0 0 0 64.58 0 41.52 46.13 36.91 46.13 36.91 25.37 41.52 46.13 23.07 25.37 43.82 23.07 69.2 46.13 41.52 46.13 43.82 32.52 32.75 32.29 46.13 43.82 59.97 43.82 43.82 36.91 0 23.07 ] endobj 609 0 obj << /Type /Encoding /Differences [16/a16/a17 18/.notdef 22/a22 23/.notdef 27/a27/a28/a29/a30 31/.notdef 33/a33/a34 35/.notdef 37/a37/a38/a39/a40/a41/a42/a43/a44/a45/a46/a47/a48/a49/a50/a51/a52/a53/a54/a55/a56/a57/a58/a59/a60 61/.notdef 62/a62/a63 64/.notdef 65/a65/a66/a67/a68/a69/a70/a71/a72/a73/a74/a75/a76/a77/a78/a79/a80/a81/a82/a83/a84/a85/a86/a87/a88/a89/a90 91/.notdef 95/a95 96/.notdef 97/a97/a98/a99/a100/a101/a102/a103/a104/a105/a106/a107/a108/a109/a110/a111/a112/a113/a114/a115/a116/a117/a118/a119/a120/a121/a122 123/.notdef 124/a124] >> endobj 610 0 obj << /a16 536 0 R /a17 534 0 R /a22 537 0 R /a27 541 0 R /a28 540 0 R /a29 542 0 R /a30 543 0 R /a33 525 0 R /a34 538 0 R /a37 539 0 R /a38 544 0 R /a39 526 0 R /a40 519 0 R /a41 520 0 R /a42 527 0 R /a43 528 0 R /a44 529 0 R /a45 535 0 R /a46 530 0 R /a47 531 0 R /a48 598 0 R /a49 599 0 R /a50 600 0 R /a51 601 0 R /a52 602 0 R /a53 603 0 R /a54 604 0 R /a55 605 0 R /a56 606 0 R /a57 607 0 R /a58 532 0 R /a59 533 0 R /a60 521 0 R /a62 523 0 R /a63 545 0 R /a65 546 0 R /a66 547 0 R /a67 548 0 R /a68 549 0 R /a69 550 0 R /a70 551 0 R /a71 552 0 R /a72 553 0 R /a73 554 0 R /a74 555 0 R /a75 556 0 R /a76 557 0 R /a77 558 0 R /a78 559 0 R /a79 560 0 R /a80 561 0 R /a81 562 0 R /a82 563 0 R /a83 564 0 R /a84 565 0 R /a85 566 0 R /a86 567 0 R /a87 568 0 R /a88 569 0 R /a89 570 0 R /a90 571 0 R /a95 524 0 R /a97 572 0 R /a98 573 0 R /a99 574 0 R /a100 575 0 R /a101 576 0 R /a102 577 0 R /a103 578 0 R /a104 579 0 R /a105 580 0 R /a106 581 0 R /a107 582 0 R /a108 583 0 R /a109 584 0 R /a110 585 0 R /a111 586 0 R /a112 587 0 R /a113 588 0 R /a114 589 0 R /a115 590 0 R /a116 591 0 R /a117 592 0 R /a118 593 0 R /a119 594 0 R /a120 595 0 R /a121 596 0 R /a122 597 0 R /a124 522 0 R >> endobj 611 0 obj << /Length 136 /Filter /FlateDecode >> stream x323P0PP5T02P04PH1*24(YBs< =\ %E\N @QhX.O9   fv6> $'W  ' endstream endobj 612 0 obj << /Length 257 /Filter /FlateDecode >> stream xuбj0d=A-pHRB;u(@19G#d`d |' 󟖋;}O5\RQ`ȻO}c~[zIc%a,D!Q$mbG2bWh*^jL/.i AjS]3}`qd;<z<ĠuH> stream xڝN0?+C$/~ @pKV*E"L02`ȣD`7я$7d*:}$ X endstream endobj 614 0 obj << /Length 213 /Filter /FlateDecode >> stream xMͱN@б\DTd""R.HE) h!kfg:[\ꗺXS)Ks"Z;׌oY2=7Ro0ͬ&a8YZi4 %:1X[z83L̺E[y!8}?+O2dWtm8 \\ղuY endstream endobj 615 0 obj << /Length 160 /Filter /FlateDecode >> stream x36׳4R0P0R5T06V03TH1*26PA3#Lr.'~PKW4K)YKE!P Ea9$luPفX$N#Ccagc{  00?r Jm endstream endobj 616 0 obj << /Length 162 /Filter /FlateDecode >> stream x1 @ᷤL fqC@Vb--+'Gˑ<@Ⱥ!X l3pjZ>DŽm:L#c^[z?.6 6KNJV- -reByDz 7U}`(D,uxI0nҷWR hhKob endstream endobj 617 0 obj << /Length 207 /Filter /FlateDecode >> stream xڽ P FҡмVn?`A'qRGE7f}>BŚނ*3$|9VuQۀ}+5͞1%kTڤ|18Ux*%V738 \A&rOP deyܿ>X ?c\%#'q(IfNĴ) endstream endobj 618 0 obj << /Length 259 /Filter /FlateDecode >> stream x]J@Of!"." E0pA.Z v |˝gH0??pNNmnҮwYUϹ勧7wk"nssa q[{_AꭅBaD4%;>#p{%*édlW]HO˷df 3ÂױtK҇FoMfl=o,"E"pLΉ~WhFF*4& !3DWZnvj endstream endobj 619 0 obj << /Length 262 /Filter /FlateDecode >> stream xuJ@O};/I$7 \` A+ RKAE;Gˣ#L2&" _ɚ3.5%LErHk.2J__(\rNorn2 h!P#a]a:x-}bh~mh!?0B~! ?#;CsŨ^JԴIPG^`M !A#`xBo~^}gt tچpYzLG%NC:k>y endstream endobj 6 0 obj << /Type /Font /Subtype /Type3 /Name /F18 /FontMatrix [0.01004 0 0 0.01004 0 0] /FontBBox [ 2 -21 70 71 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 44 /LastChar 117 /Widths 620 0 R /Encoding 621 0 R /CharProcs 622 0 R >> endobj 620 0 obj [27.08 0 0 0 48.75 0 48.75 0 0 0 0 0 0 48.75 0 0 0 0 0 0 0 73.09 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 48.75 0 0 0 0 0 0 0 0 0 0 0 38.46 37.92 54.17 ] endobj 621 0 obj << /Type /Encoding /Differences [44/a44 45/.notdef 48/a48 49/.notdef 50/a50 51/.notdef 57/a57 58/.notdef 65/a65 66/.notdef 103/a103 104/.notdef 115/a115/a116/a117] >> endobj 622 0 obj << /a44 611 0 R /a48 617 0 R /a50 618 0 R /a57 619 0 R /a65 612 0 R /a103 613 0 R /a115 614 0 R /a116 615 0 R /a117 616 0 R >> endobj 623 0 obj << /Length 408 /Filter /FlateDecode >> stream xԱN0P["y'?K%KHd@uF`C/UCcv'JM_j-<<:ޅM0\y%˯dsgyy!^Y><3q#E1gL|U \ ̘%! 7lƘ !DS㭶Ԭ$m'UmQxKc%:20֚]H=kn;+ᳪ#٧<}r;ytV;[wvɦ?*}VRh0ϰ7UF4?>2]=n%kӝ 0ys熂lɦ=[ 3DgTʕ}T endstream endobj 624 0 obj << /Length 397 /Filter /FlateDecode >> stream xڍԱN0`G,y~*UTD$02@P)yYY1!Nު{ endstream endobj 625 0 obj << /Length 328 /Filter /FlateDecode >> stream xmJ0  ܥ{`<'As7oRߠ*Ԏ5SBH $[NN30Y1/:_7+zSK^N+t5wѽ.Uf/P@FǰǰQjbX!fKb1"<.£8#zF6bfK,6§h#|nfg&FbO!{fb@`6ĊY Đ@Kb!&WbPd RBy,SogLċM endstream endobj 626 0 obj << /Length 114 /Filter /FlateDecode >> stream x3137S0Pbc3ssCB.# HrW02r{*r;8+r(D*ry(2fQ Px'W 6w endstream endobj 5 0 obj << /Type /Font /Subtype /Type3 /Name /F17 /FontMatrix [0.00697 0 0 0.00697 0 0] /FontBBox [ 9 -2 104 100 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 71 /LastChar 105 /Widths 627 0 R /Encoding 628 0 R /CharProcs 629 0 R >> endobj 627 0 obj [111.37 0 0 0 110.27 0 0 106.41 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 43.76 ] endobj 628 0 obj << /Type /Encoding /Differences [71/a71 72/.notdef 75/a75 76/.notdef 78/a78 79/.notdef 105/a105] >> endobj 629 0 obj << /a71 623 0 R /a75 624 0 R /a78 625 0 R /a105 626 0 R >> endobj 630 0 obj << /Length 190 /Filter /FlateDecode >> stream xڳ436W0P0bK#K CB. 3 I$r9yr+Xq{E=}JJS ]  b<]" ` )dQe21 8pfAfiA&iΔg22Ge^L0 @ Փ+  endstream endobj 631 0 obj << /Length 287 /Filter /FlateDecode >> stream xڕѽN0> stream xڝJ1'lq0޼fpVb]hy}-86L /;q5%QwFO-kHfr;r +ZoyaC 2i寙5z>%k<&r,`vd+q3ߒ1^+ \oxE<@G*q/|Aoٸ=,8U(`ش fA-pڟڤPj"{mI倷YR endstream endobj 633 0 obj << /Length 219 /Filter /FlateDecode >> stream x37ѳT0P0bsCCCB.33JrW03 s{*r;8+r(D*ry(00`P"0C=~d3@@C P?P 8xq83qe0w`0H+p32> f qՓ+ P endstream endobj 634 0 obj << /Length 123 /Filter /FlateDecode >> stream x3631R0P0bc#CCB.#3JrW02 s{*r;8+r(D*ry(070o`G1 d endstream endobj 635 0 obj << /Length 252 /Filter /FlateDecode >> stream xұJ1;|Iej`]),APKAEn"v[ |]\k܄[vGXN n2rב)MZ/W4mɟ˟1cɷ'E37.\P;s0 ]*\T3&03vrHM%.,^{aK u`m)4`BO5䀳"mDV_—B.fY/ë/AG-!A B endstream endobj 636 0 obj << /Length 207 /Filter /FlateDecode >> stream xѡ0[*#pO@@ %0&H@! $h%#L"uDKzz٢"\1CtAݓSi֫u{СuB U|0ۀؖB%/Q@Px_Qv؁ʲ#rO ^7\gpx'A~^ɼP/nC|U endstream endobj 637 0 obj << /Length 203 /Filter /FlateDecode >> stream xҿAr $7/eQII\!R Q,'s0eQ"ܟ3?(%V U Вn(6Y4n+|א<>ȭh\ E&tj8 endstream endobj 4 0 obj << /Type /Font /Subtype /Type3 /Name /F16 /FontMatrix [0.00697 0 0 0.00697 0 0] /FontBBox [ 4 -1 109 100 ] /Resources << /ProcSet [ /PDF /ImageB ] >> /FirstChar 84 /LastChar 117 /Widths 638 0 R /Encoding 639 0 R /CharProcs 640 0 R >> endobj 638 0 obj [97.37 0 0 0 0 0 0 0 0 0 0 0 0 67.4 0 0 0 59.9 0 0 74.89 0 0 0 37.42 112.36 74.89 0 0 0 0 0 0 74.89 ] endobj 639 0 obj << /Type /Encoding /Differences [84/a84 85/.notdef 97/a97 98/.notdef 101/a101 102/.notdef 104/a104 105/.notdef 108/a108/a109/a110 111/.notdef 117/a117] >> endobj 640 0 obj << /a84 630 0 R /a97 631 0 R /a101 632 0 R /a104 633 0 R /a108 634 0 R /a109 635 0 R /a110 636 0 R /a117 637 0 R >> endobj 7 0 obj << /Type /Pages /Count 6 /Parent 641 0 R /Kids [2 0 R 9 0 R 13 0 R 18 0 R 23 0 R 26 0 R] >> endobj 35 0 obj << /Type /Pages /Count 6 /Parent 641 0 R /Kids [29 0 R 37 0 R 40 0 R 43 0 R 46 0 R 49 0 R] >> endobj 54 0 obj << /Type /Pages /Count 6 /Parent 641 0 R /Kids [52 0 R 56 0 R 60 0 R 63 0 R 66 0 R 69 0 R] >> endobj 74 0 obj << /Type /Pages /Count 6 /Parent 641 0 R /Kids [72 0 R 76 0 R 79 0 R 82 0 R 85 0 R 88 0 R] >> endobj 93 0 obj << /Type /Pages /Count 6 /Parent 641 0 R /Kids [91 0 R 95 0 R 98 0 R 101 0 R 104 0 R 108 0 R] >> endobj 113 0 obj << /Type /Pages /Count 5 /Parent 641 0 R /Kids [111 0 R 115 0 R 118 0 R 121 0 R 124 0 R] >> endobj 641 0 obj << /Type /Pages /Count 35 /Kids [7 0 R 35 0 R 54 0 R 74 0 R 93 0 R 113 0 R] >> endobj 642 0 obj << /Type /Catalog /Pages 641 0 R >> endobj 643 0 obj << /Producer (MiKTeX pdfTeX-1.40.9) /Creator (TeX) /CreationDate (D:20090829015040-04'00') /ModDate (D:20090829015040-04'00') /Trapped /False /PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.7.3235 (1.40.9)) >> endobj xref 0 644 0000000000 65535 f 0000000343 00000 n 0000000239 00000 n 0000000015 00000 n 0000231258 00000 n 0000228311 00000 n 0000225960 00000 n 0000231931 00000 n 0000000745 00000 n 0000000640 00000 n 0000000433 00000 n 0000220692 00000 n 0000001722 00000 n 0000001615 00000 n 0000000814 00000 n 0000194931 00000 n 0000178936 00000 n 0000003080 00000 n 0000002973 00000 n 0000001816 00000 n 0000174569 00000 n 0000158328 00000 n 0000004767 00000 n 0000004660 00000 n 0000003186 00000 n 0000005434 00000 n 0000005327 00000 n 0000004849 00000 n 0000007478 00000 n 0000007370 00000 n 0000005516 00000 n 0000145169 00000 n 0000134716 00000 n 0000113663 00000 n 0000093470 00000 n 0000232038 00000 n 0000010255 00000 n 0000010147 00000 n 0000007620 00000 n 0000012800 00000 n 0000012692 00000 n 0000010361 00000 n 0000015280 00000 n 0000015172 00000 n 0000012918 00000 n 0000016640 00000 n 0000016532 00000 n 0000015386 00000 n 0000018981 00000 n 0000018873 00000 n 0000016746 00000 n 0000021857 00000 n 0000021749 00000 n 0000019111 00000 n 0000232148 00000 n 0000024728 00000 n 0000024620 00000 n 0000021963 00000 n 0000074854 00000 n 0000026757 00000 n 0000026649 00000 n 0000024858 00000 n 0000029594 00000 n 0000029486 00000 n 0000026899 00000 n 0000032696 00000 n 0000032588 00000 n 0000029712 00000 n 0000034285 00000 n 0000034177 00000 n 0000032814 00000 n 0000036042 00000 n 0000035934 00000 n 0000034367 00000 n 0000232258 00000 n 0000037503 00000 n 0000037395 00000 n 0000036160 00000 n 0000039827 00000 n 0000039719 00000 n 0000037597 00000 n 0000042486 00000 n 0000042378 00000 n 0000039969 00000 n 0000045123 00000 n 0000045015 00000 n 0000042592 00000 n 0000047916 00000 n 0000047808 00000 n 0000045241 00000 n 0000050711 00000 n 0000050603 00000 n 0000048034 00000 n 0000232368 00000 n 0000053944 00000 n 0000053836 00000 n 0000050829 00000 n 0000055625 00000 n 0000055517 00000 n 0000054050 00000 n 0000057506 00000 n 0000057395 00000 n 0000055731 00000 n 0000060263 00000 n 0000060152 00000 n 0000057637 00000 n 0000073014 00000 n 0000061774 00000 n 0000061663 00000 n 0000060371 00000 n 0000063321 00000 n 0000063209 00000 n 0000061857 00000 n 0000232481 00000 n 0000065270 00000 n 0000065158 00000 n 0000063452 00000 n 0000067152 00000 n 0000067040 00000 n 0000065389 00000 n 0000068908 00000 n 0000068796 00000 n 0000067235 00000 n 0000070430 00000 n 0000070318 00000 n 0000069027 00000 n 0000070525 00000 n 0000070706 00000 n 0000070963 00000 n 0000071252 00000 n 0000071568 00000 n 0000071840 00000 n 0000072139 00000 n 0000072461 00000 n 0000072748 00000 n 0000073264 00000 n 0000073458 00000 n 0000073634 00000 n 0000073780 00000 n 0000073970 00000 n 0000074264 00000 n 0000074576 00000 n 0000075102 00000 n 0000075280 00000 n 0000075401 00000 n 0000075478 00000 n 0000075792 00000 n 0000076097 00000 n 0000076327 00000 n 0000076513 00000 n 0000076812 00000 n 0000076989 00000 n 0000077286 00000 n 0000077570 00000 n 0000077817 00000 n 0000078133 00000 n 0000078520 00000 n 0000078830 00000 n 0000079119 00000 n 0000079373 00000 n 0000079754 00000 n 0000080007 00000 n 0000080378 00000 n 0000080608 00000 n 0000080967 00000 n 0000081325 00000 n 0000081692 00000 n 0000081958 00000 n 0000082290 00000 n 0000082675 00000 n 0000082918 00000 n 0000083207 00000 n 0000083666 00000 n 0000084069 00000 n 0000084401 00000 n 0000084749 00000 n 0000085062 00000 n 0000085372 00000 n 0000085667 00000 n 0000085969 00000 n 0000086276 00000 n 0000086524 00000 n 0000086886 00000 n 0000087134 00000 n 0000087346 00000 n 0000087613 00000 n 0000087914 00000 n 0000088102 00000 n 0000088392 00000 n 0000088635 00000 n 0000088929 00000 n 0000089237 00000 n 0000089479 00000 n 0000089783 00000 n 0000090037 00000 n 0000090284 00000 n 0000090581 00000 n 0000090938 00000 n 0000091253 00000 n 0000091601 00000 n 0000091808 00000 n 0000092155 00000 n 0000092494 00000 n 0000092791 00000 n 0000093125 00000 n 0000093721 00000 n 0000094195 00000 n 0000094669 00000 n 0000095493 00000 n 0000095741 00000 n 0000095918 00000 n 0000096161 00000 n 0000096356 00000 n 0000096553 00000 n 0000096738 00000 n 0000096932 00000 n 0000097149 00000 n 0000097329 00000 n 0000097567 00000 n 0000097755 00000 n 0000097946 00000 n 0000098204 00000 n 0000098388 00000 n 0000098586 00000 n 0000098835 00000 n 0000099167 00000 n 0000099487 00000 n 0000099752 00000 n 0000100023 00000 n 0000100322 00000 n 0000100586 00000 n 0000100814 00000 n 0000101040 00000 n 0000101348 00000 n 0000101549 00000 n 0000101738 00000 n 0000102037 00000 n 0000102241 00000 n 0000102499 00000 n 0000102774 00000 n 0000103025 00000 n 0000103280 00000 n 0000103558 00000 n 0000103875 00000 n 0000104080 00000 n 0000104328 00000 n 0000104598 00000 n 0000104876 00000 n 0000105183 00000 n 0000105446 00000 n 0000105718 00000 n 0000105986 00000 n 0000106249 00000 n 0000106523 00000 n 0000106805 00000 n 0000107040 00000 n 0000107374 00000 n 0000107616 00000 n 0000107829 00000 n 0000108079 00000 n 0000108358 00000 n 0000108554 00000 n 0000108806 00000 n 0000109042 00000 n 0000109306 00000 n 0000109587 00000 n 0000109826 00000 n 0000110092 00000 n 0000110328 00000 n 0000110557 00000 n 0000110824 00000 n 0000111079 00000 n 0000111362 00000 n 0000111680 00000 n 0000111937 00000 n 0000112221 00000 n 0000112443 00000 n 0000112746 00000 n 0000113053 00000 n 0000113341 00000 n 0000113913 00000 n 0000114437 00000 n 0000115005 00000 n 0000115987 00000 n 0000116174 00000 n 0000116371 00000 n 0000116547 00000 n 0000116873 00000 n 0000117281 00000 n 0000117629 00000 n 0000118048 00000 n 0000118387 00000 n 0000118696 00000 n 0000118969 00000 n 0000119399 00000 n 0000119585 00000 n 0000120010 00000 n 0000120248 00000 n 0000120640 00000 n 0000121037 00000 n 0000121443 00000 n 0000121733 00000 n 0000122104 00000 n 0000122531 00000 n 0000122788 00000 n 0000123102 00000 n 0000123530 00000 n 0000124070 00000 n 0000124421 00000 n 0000124759 00000 n 0000125083 00000 n 0000125417 00000 n 0000125742 00000 n 0000125998 00000 n 0000126403 00000 n 0000126670 00000 n 0000126889 00000 n 0000127213 00000 n 0000127401 00000 n 0000127714 00000 n 0000127979 00000 n 0000128291 00000 n 0000128627 00000 n 0000128877 00000 n 0000129217 00000 n 0000129484 00000 n 0000129752 00000 n 0000130085 00000 n 0000130475 00000 n 0000130826 00000 n 0000131217 00000 n 0000131530 00000 n 0000131748 00000 n 0000132130 00000 n 0000132516 00000 n 0000132822 00000 n 0000133188 00000 n 0000133583 00000 n 0000133903 00000 n 0000134323 00000 n 0000134966 00000 n 0000135376 00000 n 0000135812 00000 n 0000136597 00000 n 0000137095 00000 n 0000137654 00000 n 0000138091 00000 n 0000138497 00000 n 0000138894 00000 n 0000139200 00000 n 0000139440 00000 n 0000139738 00000 n 0000140142 00000 n 0000140424 00000 n 0000140723 00000 n 0000141169 00000 n 0000141400 00000 n 0000141882 00000 n 0000142388 00000 n 0000142749 00000 n 0000143211 00000 n 0000143715 00000 n 0000144097 00000 n 0000144660 00000 n 0000145420 00000 n 0000145669 00000 n 0000145972 00000 n 0000146277 00000 n 0000146562 00000 n 0000146837 00000 n 0000147055 00000 n 0000147272 00000 n 0000147446 00000 n 0000147691 00000 n 0000147889 00000 n 0000148066 00000 n 0000148309 00000 n 0000148639 00000 n 0000148928 00000 n 0000149270 00000 n 0000149606 00000 n 0000149901 00000 n 0000150235 00000 n 0000150528 00000 n 0000150822 00000 n 0000151089 00000 n 0000151407 00000 n 0000151681 00000 n 0000151978 00000 n 0000152295 00000 n 0000152605 00000 n 0000152873 00000 n 0000153169 00000 n 0000153498 00000 n 0000153751 00000 n 0000154098 00000 n 0000154404 00000 n 0000154675 00000 n 0000154994 00000 n 0000155257 00000 n 0000155538 00000 n 0000155797 00000 n 0000156094 00000 n 0000156380 00000 n 0000156699 00000 n 0000156996 00000 n 0000157320 00000 n 0000157631 00000 n 0000157989 00000 n 0000158578 00000 n 0000158936 00000 n 0000159324 00000 n 0000159914 00000 n 0000160125 00000 n 0000160486 00000 n 0000161321 00000 n 0000161899 00000 n 0000162549 00000 n 0000163196 00000 n 0000163393 00000 n 0000164018 00000 n 0000164301 00000 n 0000164860 00000 n 0000165451 00000 n 0000165759 00000 n 0000166168 00000 n 0000166668 00000 n 0000167106 00000 n 0000167547 00000 n 0000167988 00000 n 0000168599 00000 n 0000168946 00000 n 0000169201 00000 n 0000169670 00000 n 0000169873 00000 n 0000170293 00000 n 0000170630 00000 n 0000171058 00000 n 0000171519 00000 n 0000171828 00000 n 0000172303 00000 n 0000172627 00000 n 0000172966 00000 n 0000173416 00000 n 0000173996 00000 n 0000174820 00000 n 0000175180 00000 n 0000175605 00000 n 0000176075 00000 n 0000176420 00000 n 0000176667 00000 n 0000176993 00000 n 0000177314 00000 n 0000177637 00000 n 0000177917 00000 n 0000178160 00000 n 0000178458 00000 n 0000178642 00000 n 0000179184 00000 n 0000179335 00000 n 0000179541 00000 n 0000179698 00000 n 0000179881 00000 n 0000180073 00000 n 0000180250 00000 n 0000180501 00000 n 0000180768 00000 n 0000181177 00000 n 0000181452 00000 n 0000181789 00000 n 0000182133 00000 n 0000182410 00000 n 0000182675 00000 n 0000183018 00000 n 0000183200 00000 n 0000183544 00000 n 0000183763 00000 n 0000184097 00000 n 0000184439 00000 n 0000184769 00000 n 0000185015 00000 n 0000185329 00000 n 0000185673 00000 n 0000185906 00000 n 0000186183 00000 n 0000186510 00000 n 0000186790 00000 n 0000187062 00000 n 0000187327 00000 n 0000187604 00000 n 0000187876 00000 n 0000188112 00000 n 0000188457 00000 n 0000188695 00000 n 0000188898 00000 n 0000189177 00000 n 0000189363 00000 n 0000189632 00000 n 0000189864 00000 n 0000190121 00000 n 0000190394 00000 n 0000190619 00000 n 0000190887 00000 n 0000191118 00000 n 0000191348 00000 n 0000191628 00000 n 0000191945 00000 n 0000192271 00000 n 0000192474 00000 n 0000192786 00000 n 0000193104 00000 n 0000193373 00000 n 0000193683 00000 n 0000193999 00000 n 0000194280 00000 n 0000194613 00000 n 0000195180 00000 n 0000195605 00000 n 0000196117 00000 n 0000196874 00000 n 0000197144 00000 n 0000197413 00000 n 0000197659 00000 n 0000197836 00000 n 0000198078 00000 n 0000198262 00000 n 0000198452 00000 n 0000198663 00000 n 0000198908 00000 n 0000199094 00000 n 0000199306 00000 n 0000199481 00000 n 0000199715 00000 n 0000199897 00000 n 0000200118 00000 n 0000200361 00000 n 0000200536 00000 n 0000200782 00000 n 0000200954 00000 n 0000201157 00000 n 0000201589 00000 n 0000201842 00000 n 0000202098 00000 n 0000202332 00000 n 0000202621 00000 n 0000203032 00000 n 0000203298 00000 n 0000203614 00000 n 0000203904 00000 n 0000204245 00000 n 0000204520 00000 n 0000204782 00000 n 0000205029 00000 n 0000205364 00000 n 0000205570 00000 n 0000205757 00000 n 0000206003 00000 n 0000206327 00000 n 0000206548 00000 n 0000206873 00000 n 0000207197 00000 n 0000207517 00000 n 0000207765 00000 n 0000208155 00000 n 0000208457 00000 n 0000208794 00000 n 0000209025 00000 n 0000209297 00000 n 0000209618 00000 n 0000210006 00000 n 0000210366 00000 n 0000210678 00000 n 0000210991 00000 n 0000211276 00000 n 0000211555 00000 n 0000211818 00000 n 0000212097 00000 n 0000212367 00000 n 0000212589 00000 n 0000212907 00000 n 0000213143 00000 n 0000213346 00000 n 0000213577 00000 n 0000213854 00000 n 0000214043 00000 n 0000214301 00000 n 0000214529 00000 n 0000214798 00000 n 0000215075 00000 n 0000215358 00000 n 0000215579 00000 n 0000215855 00000 n 0000216087 00000 n 0000216321 00000 n 0000216585 00000 n 0000216899 00000 n 0000217190 00000 n 0000217490 00000 n 0000217754 00000 n 0000218023 00000 n 0000218225 00000 n 0000218534 00000 n 0000218850 00000 n 0000219119 00000 n 0000219426 00000 n 0000219750 00000 n 0000220028 00000 n 0000220374 00000 n 0000220942 00000 n 0000221531 00000 n 0000222096 00000 n 0000223300 00000 n 0000223517 00000 n 0000223855 00000 n 0000224211 00000 n 0000224505 00000 n 0000224746 00000 n 0000224989 00000 n 0000225277 00000 n 0000225617 00000 n 0000226208 00000 n 0000226412 00000 n 0000226596 00000 n 0000226740 00000 n 0000227229 00000 n 0000227707 00000 n 0000228116 00000 n 0000228560 00000 n 0000228669 00000 n 0000228786 00000 n 0000228862 00000 n 0000229133 00000 n 0000229501 00000 n 0000229849 00000 n 0000230149 00000 n 0000230353 00000 n 0000230686 00000 n 0000230974 00000 n 0000231507 00000 n 0000231626 00000 n 0000231798 00000 n 0000232590 00000 n 0000232686 00000 n 0000232739 00000 n trailer << /Size 644 /Root 642 0 R /Info 643 0 R /ID [<8AFD4FC1F88A52898BE2876DBC6177ED> <8AFD4FC1F88A52898BE2876DBC6177ED>] >> startxref 232960 %%EOF king-2.21.120420/king/doc/work/king-manual.html0000644000000000000000000023517611531212662017400 0ustar rootroot The \noun{KiNG} manual

The KING manual

Ian W. Davis

Vincent B. Chen

Abstract

KING (Kinemage, Next Generation) is an interactive system for three-dimensional vector graphics. It supports a set of graphics primitives that make it suitable for many types of graphs, plots, and other illustrations; although its first use was to display macromolecular structures for biophysical research. KING builds on MAGE, JAVAMAGE, and the "kinemage" (kinetic image) concept to deliver a full-featured Java application with a user-friendly interface and integrated editing features. It also operates as a Java applet to promote easy access to kinemages from a web browser.

Contents

1  Getting started
    1.1  What is a kinemage?
    1.2  Starting the KiNG program
        1.2.1  Download KiNG
        1.2.2  Make sure you have Java
        1.2.3  Launch KiNG
    1.3  Opening a kinemage
    1.4  Basic kinemage reading: Using KiNG to view a kinemage
        1.4.1  Basic interaction
            1.4.1.1  Moving the kinemage around
            1.4.1.2  Identifying points
            1.4.1.3  Markers
            1.4.1.4  Turning groups on & off
            1.4.1.5  Re-centering
            1.4.1.6  Zooming in and out
            1.4.1.7  Clipping
            1.4.1.8  More modes of interation
        1.4.2  Reading the kinemage text
        1.4.3  Using different viewpoints
        1.4.4  Other features
2  Input & Output
    2.1  Opening a kinemage
    2.2  Working with multiple kinemages
    2.3  Appending a kinemage
    2.4  Saving kinemages
    2.5  Printing kinemages
    2.6  Exporting kinemages in other formats
        2.6.1  Exporting bitmapped images (JPEG, PNG)
        2.6.2  Exporting vector graphics (PDF, PostScript, etc.)
3  Advanced kinemage reading
    3.1  Finding points by name
        3.1.1  Whole word searches
        3.1.2  Substring searches
        3.1.3  Glob (simple regex) searches
        3.1.4  Perl5 regex searches
        3.1.5  Tips for faster searches
    3.2  Viewing animations
    3.3  Controlling presentation: The Display menu
        3.3.1  Stereo
        3.3.2  OpenGL
    3.4  Master buttons
4  Kinemage authoring: Using KiNG to edit a kinemage
    4.1  Merging kinemages together
    4.2  Editing text
    4.3  Editing views
    4.4  The hierarchy editor
5  The Tools
    5.1  Understanding the Tools and Plug-ins
        5.1.1  Extra measurements
        5.1.2  XYZ coordinates
        5.1.3  Pick objects
    5.2  Using KiNG with a multi-button mouse
    5.3  Navigate: Exploring in 3-D
        5.3.1  Z-rotation ("pinwheel")
        5.3.2  Translation ("flatland")
        5.3.3  Command reference
    5.4  Draw New: Reworking the kinemage
    5.5  Electron Density: Visualizing maps
    5.6  Update KiNG: Upgrading without the hassle
6  Configuring KiNG
7  Launching KiNG
    7.1  Running KiNG as an application
    7.2  Making KiNG an applet in a web page
8  Additional resources
    8.1  Included manuals
    8.2  Included kinemages
    8.3  External documentation
    8.4  Bug reporting and contact info
9  Copyright & acknowledgments
    9.1  Copyright
    9.2  Licenses
    9.3  Acknowledgments
    9.4  Revision status
A  KiNG License
    A.1  What this license applies to
    A.2  The KiNG License
    A.3  Where this license came from

Chapter 1
Getting started

1.1  What is a kinemage?

A kinemage is a "kinetic image," an interactive, three-dimensional illustration. Because kinemages contain simple geometric objects - points, lines, spheres, etc. - they are suited to a great variety of subjects, from simple sketches to sophisticated plots to detailed schematics of 3-D objects. Their strength is in selective presentation of information - they were originally intended as an alternative to flat, static illustrations in scientific journals.
In fact, kinemages were first created as a way of visualizing macromolecular structures, particularly x-ray crystal structures of proteins. However, such a kinemage is a drawing of a molecule, albeit a 3-D drawing, and not the molecule itself. Thus, the kinemage lacks most of the information in a PDB file, and kinemage display program cannot read PDB files directly. Since their creation, kinemages have been extended to a variety of other fields, from the social sciences to ecology to education.
The kinemage concept is the brainchild of Drs. David and Jane Richardson at Duke University in Durham, North Carolina, USA. Their website is at http://kinemage.biochem.duke.edu.

1.2  Starting the KiNG program

If you're reading this, you may already have KiNG running. In that case, feel free to skip this section. If not, we'll guide you through getting KiNG up and running on your system.

1.2.1  Download KiNG

If you don't already have a copy of KiNG, you can download it from http://kinemage.biochem.duke.edu. Even if you have a copy already, you might check periodically for new version that add features and fix bugs. If you run on a Windows or Linux machine and aren't already knowledgeable about Java techonology, we recommend downloading the package that includes a Java Virtual Machine in the bundle. (This isn't an issue for Macintosh owners.)
If you just want to run KiNG as an applet on MolProbity or some other web page, you can skip this step. You can always download a copy later if you want to run it off-line.

1.2.2  Make sure you have Java

KiNG is written in the Java programming language, and so requires that the Java libraries (version 1.5 or later) be present on your computer in order for it to run. Newer Apple computers (those running Mac OS X) come with Java. Most PCs do not, though recently several manufacturers have agreed to pre-install Java on their new computers. Look for the coffee-cup icon in your Windows task bar or in the Control Panel.
If you don't have Java, you may have downloaded a copy of KiNG that was bundled with its own installation of Java. If you ran the InstallAnywhere installation program, this is the copy you have; don't worry about downloading and installing another copy of Java.
If you don't have Java and you didn't download the bundled version of KiNG, point your web browser to http://java.sun.com/getjava/index.html. The software is free and available for Windows, Linux, and Solaris computers. We recommend getting the newest version that is available (1.6.0 as of this writing).

1.2.3  Launch KiNG

Launching KiNG is as simple as double clicking on the "KiNG" icon. If you didn't download a package with an installer, etc. you may need to click on king.jar instead.
For Unix types who want a shell script, we recommend something like this:
#!/bin/sh
exec java -Xms32m -Xmx512m -jar /home/ian/bin/jars/king.jar $@
The -Xms and -Xmx switches control the amount of memory initially allocated to the Java program and the maximum memory it can consume. The default maximum of 64 MB should be enough for almost any kinemage, but a few of the largest require more (hence the -Xmx512m recommendation).
If you just want to run KiNG as an applet from a web page, you can just visit that web page now. If you don't see the "Kinglet" logo after a minute or two, make sure your browser is properly configured to work with Java. How you do this depends on which browser you have; consult its documentation for details.

1.3  Opening a kinemage

If you already have a kinemage you want to look at, this step is simple: just choose Open from the File menu, and select the kinemage you'd like to view. If you don't have anything to look at right now, don't worry! Choose Help - Built-in kinemages, and select one of the provided files to explore. See for more places to get kinemages from.

1.4  Basic kinemage reading: Using KiNG to view a kinemage

1.4.1  Basic interaction

1.4.1.1  Moving the kinemage around

A kinemage is a dynamic, 3-D illustration. The best way to take advantage of that is by rotating it and twisting it around. Just click the mouse near the center of the graphics window and slowly drag right or left, up or down. If you have multiple buttons on your mouse, use the left button or button 1. You can also use the left and right arrow keys for small rotations. If you get lost or disoriented, use the Views menu to get back on familiar ground.

1.4.1.2  Identifying points

By clicking on points with the mouse (left button again), you'll be able to identify them. The label associated with each point will appear in the bottom right of the graphics area. Furthermore, the distance from this point to the last one you clicked will also be displayed.

1.4.1.3  Markers

For keeping track of which point is selected, markers can be displayed. Two markers are displayed normally. The checkbox for markers is just below the graphics area, with the pickcenter checkbox.

1.4.1.4  Turning groups on & off

Most kinemages have many different components to them, grouped together in logical ways. A protein might have one group for each subunit; or one group for mainchain, another for side chains, and yet another for hydrogens. Groups and subgroups are given names and can be made visible or hidden by the viewer - you might want to see only one subunit, or only the backbone (without sidechains and hydrogens cluttering up the view).
The groups and subgroups appear in the button pane, to the right of the graphics area. Each one has a button to turn it on or off. Groups that are on (visible) usually have a check mark or an X in there box; a blank button means the group is hidden. Many kinemages start off with some information hidden, to avoid overwhelming the reader. Always check to see if there's more information available than is being displayed!

1.4.1.5  Re-centering

You can make any point in the kinemage be the center. The center point will be in the middle of the graphics area, and the kinemage will rotate about that point. There are several ways to set the center: you can hold the Shift key while you click the point, or use the right mouse button if you have one. You can also press the Pick center button below the graphics area and then click on the desired point.
Since re-centering brings a point to the center of the screen, using this repeatedly allows one to "walk" through a large structure.

1.4.1.6  Zooming in and out

KiNG allows you to zoom in to see small details in a kinemage. Use the Zoom slider, below the graphics area, to control how far you zoom in. You can click the mouse right or left of the knob for small movements or click the knob and drag it for larger ones. A small motion is usually all that's needed.
For easier access, one can hold Shift and drag (or drag using the right mouse button) in the graphics window. Dragging down zooms in; up zooms out. The up/down arrow keys and mouse wheel (Java 1.4 and later only) also control zooming.

1.4.1.7  Clipping

Objects that are too near the viewer, or too far away, are not displayed; otherwise, zooming in would result in a useless superposition. The depth of the clipping "slab" can be adjusted using the slider along the bottom, or by dragging side-to-side with the right mouse button (or with the Shift key held down).

1.4.1.8  More modes of interation

For more ways to explore the kinemage and interact with it, be sure to read about the Navigate tool (see ).

1.4.2  Reading the kinemage text

Exploring on your own is great, but the best guide to a kinemage is its author. Often, he or she includes a short text of a few paragraphs or pages that explains what the kinemage depicts. You can access this text using the Show text button, located just below the graphics area. An equivalent command is also available in the Edit menu.

1.4.3  Using different viewpoints

Most kinemages have one or more "views" that were selected by the author to highlight some significant feature. These views are accessible from the Views menu. Just click on one of the named views and the kinemage will "jump" to that view. You can then rotate it, zoom in or out, etc. to explore further. You can always return to the original view by selecting it again from the menu.
Kinemages without any predefined views still get an automatic "overview" view. This is a useful way to return to a known starting point if you get lost in a complicated structure.

1.4.4  Other features

The kinemage format also allows for flip-book style animations, automatic searching for points based on their name (the label that appears in the lower left when the point is clicked), and much more. There is also a rich selection of features to control exactly how the graphics are rendered. See to learn more.

Chapter 2
Input & Output

2.1  Opening a kinemage

To open a new kinemage, go the the File menu and choose Open. Browse through your file system and find a kinemage file. These files typically end in .kin. The new version-control convention is to name modified files .1.kin, .2.kin, etc., though older kinemages that have been edited may have revisions named .kip, kip1, kip2, etc. Click the button marked OK and KiNG will begin loading the file. You'll see a progress bar as KiNG loads the contents of the file, and then the first kinemage in that file will be displayed in the graphics area (where the logo used to be).
You can also drag and drop kinemages into the KiNG graphics window in order to open them, but this feature is not supported for Java versions prior to 1.4. On Mac OS X machines, you can also double-click .kin files in the Finder or drag kinemage files onto the KiNG Dock icon to launch KiNG and open the file.
Additionally, files can be specified on the command line, as in king -s foo.kin bar.kin, which will load all the kinemages in those two files upon startup. The -s (or -single) flag is required so that KiNG knows not to merge the two files together.

2.2  Working with multiple kinemages

If your file has more than one kinemage, you can choose which one you want to look at from the drop box on the right, just above the buttons. You can also use File - Open to load additional files; those kinemages will also appear in the drop box. When you're done, use File - Close to get rid of the current kinemage, or use File - Close all to get rid of all the open kinemages.
If you save your file when more than one kinemage is open, they will all be written out to that file, in the order they currently appear in. This is an easy way to create multi-kinemage files, but be careful that you don't save more than you intended to!

2.3  Appending a kinemage

Sometimes you want to combine the contents of multiple kinemages. You might want to combine a graph of your latest sales data with some nicely formated and labeled axes you prepared last month. Or maybe you want to combine a ribbon drawing of your favorite protein with a representation of the atomic detail at its active site. In either case, using File - Append will combine the contents of a new file with the contents of the currently displayed kinemage. Be careful - if the new file contains multiple kinemages, they'll all be merged into the current one!
This behavior can be achieved on the command line by specifying multiple files, as in king -m foo.kin bar.kip1, which will merge all the kinemages in those two files upon startup. The -m (or -merge) flag is optional; merging multiple files is the default behavior.

2.4  Saving kinemages

You can save kinemages using the File - Save as menu; these files are typically given the extension .kin. KiNG will try to help you by automatically appending a number to the filename so that your changes don't overwrite your original. The resulting kinemage file will be plain text that you can view and even edit by hand using any text editor (though of course you don't have to!). If you choose to do this and want use a word processor (like Microsoft Word), make sure that you load and save the file in plain text format.
Note that due to the security restrictions that web browsers place on Java applets, saving will never be possible when KiNG is running inside a web browser.

2.5  Printing kinemages

You can use File - Print to send the image in the graphics area to your printer. The image will fill as much of the page as possible without distorting it. The relative size of the elements will be exactly the same as on screen. Among the consequences of this are that an image printed from a small graphics window will have thicker lines when printed than will the image when printed from a larger graphics window. Don't worry about this too much; just remember printing is WYSIWYG (what-you-see-is-what-you-get). If it looks right on the screen, it should look right on the paper! Some images will fit better in landscape mode than portrait mode; this decision is left up to the user.
Printing should work even when KiNG is running in a web browser, although the user will generally be asked for permission first.

2.6  Exporting kinemages in other formats

Several facilities are provided that can help get data out of kinemage format and into other forms, either for making figures for publication or for further processing. Due to security restrictions placed on applets, the export features are unavailable when KiNG is running in a web browser.

2.6.1  Exporting bitmapped images (JPEG, PNG)

The File - Export menu allows one to save the current graphics image as a standard image file. Image export requires that you have Java 1.4 or newer; otherwise, an error message will appear. Several image formats are supported, including JPEG and PNG; the format can be selected from the export dialog box. These images are very useful for creating web pages, PowerPoint-style presentations, etc. For high-quality publication graphics, however, you'll want to use a vector-based format like PDF.

2.6.2  Exporting vector graphics (PDF, PostScript, etc.)

Rather than sending the image to the printer, it can be captured for inclusion in a publication or later manipulation in a graphics program like Adobe Illustrator. Note that there are several relevant options under the Display menu, particularly White background and Monochrome.
All platforms can generate PDF files using the File - Export menu. This is the simplest and best option for almost any use. "PDF" stands for Portable Document Format, the successor to PostScript as the standard for vector graphics. You can learn more about PDFs at http://www.adobe.com. It does require the (free) iText PDF library from http://www.lowagie.com/iText/, which is distributed with KiNG.
If for some reason you don't want to use PDF export, it is also often possible to hijack the print output into a file. For instance, with Macintosh OS X, both PostScript and PDF output are supported directly from the Print dialog. Under Linux, choosing Print to file from the Print dialog will generate a PostScript file, which can be converted many other formats using e.g. Ghostscript tools like ps2pdf (PDF) and ps2epsi (EPS, Encapsulated PostScript). Under Microsoft Windows, things don't seem to be as straightforward, but one possiblity is to install the generic PostScript printer drivers from Adobe and then direct this "virtual printer" to FILE (rather than, e.g., LPT1). Your mileage may vary; I'd be interested in hearing about better ways to do this from any Windows experts out there.

Chapter 3
Advanced kinemage reading

3.1  Finding points by name

Every point in a kinemage has an associated identifying label, which appears in the graphics area when the point is clicked on. You can find one or more points by searching through those labels for a word or phrase using the Edit - Find point dialog. When you press Search, KiNG will center the view on the first point that matches your criteria (you may need to zoom in/out to see it appropriately). Edit - Find next will then jump to the next matching point, until all matches are exhausted.

3.1.1  Whole word searches

This is the easiest-to-use of the search options, and usually produces the desired results. You can enter one or more words or numbers in the search field (separated by spaces), and KiNG will find all the points that contain all of those words, in any order. A search for "val 17" would find "17 A val cb" but not "valine 117".

3.1.2  Substring searches

This works like whole word searches, but will even find points that have the search terms embedded in a larger word or number. In this case, a search for "val 17" would find "valine 117". This often produces extraneous results but may occasionally be useful.

3.1.3  Glob (simple regex) searches

This search is done with a simple "regular expression", as is often used for specifying file names on the command line. A star (*) matches any group of zero or more characters, and a question mark (?) matches any single character. Notice that the search is treated as a single term, rather than multiple words - the pieces must be in the correct order. Thus a search for "val*17" would find "val17", "val 17", and "valine 117", among others; but would not find "17 val".

3.1.4  Perl5 regex searches

This search is like the simple regex search but uses the full syntax of Perl 5 regular expressions, as implemented by the gnu.regexp library. (I'm no expert, but it seems to be a very complete and official implementation. All but the most esoteric features are available.) Regular expressions are a very involved subject, and many books and on-line references are available for the interested reader.

3.1.5  Tips for faster searches

Remember that KiNG searches through all visible points to find ones matching your criteria. Turning off (i.e., making invisible, hiding, unchecking) large groups that you're not interested in will skip searching those groups. Since all the varieties of search are implemented internally with regular expressions, they are relatively computationally expensive. A search through a large kinemage may take several seconds.

3.2  Viewing animations

Kinemages often include animations. An animation in this sense is not a movie, but more like a flip-book, where similar images are aligned and displayed one at a time, in a series of discrete frames. If a kinemage contains animation(s), there will be forward and reverse buttons for the animation located below the checkboxes for groups and masters.

3.3  Controlling presentation: The Display menu

The Display menu offers several options for controlling how the kinemage is rendered. Of particular interest is the Perspective option. By default, KiNG renders objects with orthographic perspective; objects near the viewer are no larger than those far away. This is the preferred mode for viewing macromolecular structures and many 2-D graphs and figures. However, for geometrical objects and other cases where the eye expects perspective, enabling this option will result in a much more natural-looking image.
There are also several ways of controlling the coloring of the points. Each point may have its own color, and several "aspects" as well. For example, a map might be colored by the aspects of temperature, elevation, and annual rainfall; one could then choose which of these colorings to apply.
The first level of grouping above the individual point is the list; every point belongs to a list. Points that don't have a color specified take their color from the list, but there are times when one might want to suppress the individual colors and color points by the color of the list they belong to. This option is available as well.

3.3.1  Stereo

Upon request, KiNG will render the kinemage as a stereoscopic pair of images. The two views are very nearly the same, except that one is slightly rotated with respect to the other. If you can get one eye to look at each image, you can fool yourself into seeing additional depth information. Stereo can be either "cross-eye" or "wall-eye"; the former is somewhat easier to learn, but the later is more comfortable for long periods of time.
To see cross-eye stereo, cross your eyes and then look at the screen without refocusing. You should see 4 identical (though blurry) images. Relax your eyes slightly, and the center two will overlap. If you can focus on this phantom central image, you'll be seeing in stereo. It may help bring the image into sharp focus to rotate the kinemage slighly using the mouse.
If you've got KiNG set for wall-eye stereo and your eyes set for cross-eye (or vice versa), you will see a stereoscopic image, but the parts that should be in back will be in front, and it will rotate the wrong direction when you move the mouse. Change one or the other to get a more reasonable image.
Incidentally, although KiNG doesn't support multiple simultaneous views of the same kinemage, you can simulate a pair of orthogonal views by setting the stereo separation to 90 degrees in Edit - Configure KiNG. Of course, the views no longer forms a stero image, but they're useful in another way. Particularly applicable for "info-vis" kinemages, you can examine (for instance) the x-y plane and the y-z plane at the same time using this trick. It pairs well with the 90-degree rotations plugin ().

3.3.2  OpenGL

KiNG is capable of using OpenGL rendering commands to take advantage of your graphics hardware and get (hopefully) accelerated graphics performance. You'll need to have an up-to-date version of Java installed, along with the JOGL libraries (https://jogl.dev.java.net/). Make sure you get both jogl.jar and the native library or libraries (they end in .dll, .so, or .jnilib). 2008 update: It is no longer necessary to download separate files; everything needed is included in the platform specific downloads at the JOGL site. The download includes directions for installing JOGL (which discourage dropping the JAR files in the extension directories as originally recommended). Essentially, the JOGL JAR and the GLUEGEN_RT JAR need to be added to the classpath in order for JOGL to work. If you downloaded a platform-specific version of KiNG, the necessary libraries may already be included.
This feature has been tested with various combinations of Java 1.4.2 through Java 1.6.0 and JOGL 1.1 through JOGL 1.1.1. JOGL is still under development, as is this feature, and interacting so directly with the hardware is always risky, so it's possible that OpenGL rendering may hang KiNG on your computer. You've been warned.
Hopefully, a future version of Java (possibly the 1.6.x series) will use OpenGL behind the scenes for all graphics operations, making KiNG much faster and making this feature obsolete. Until then, this is a work-around for large kinemages where performance is an issue.

3.4  Master buttons

Not all the buttons to the right of the graphics control groups and subgroups of points; some are "masters." The master buttons sit below the others, separated by a spacer. When activated, a master turns on all the groups it controls; when deactivated, it turns them all off. The effects are only momentary; the group can be turned on or off directly regardless of the state of the master(s) that control it.
A single group can be controlled by multiple masters. Note that the "off" state of a master is dominant in this case: a master will always turn off the groups it controls, but will turn them on only if they are not also controlled by another master that is already off. Since the buttons of the individual groups, subgroups, and lists are sometimes hidden, one can generate a variety of patterns by turning the masters on and off in specific patterns.

Chapter 4
Kinemage authoring: Using KiNG to edit a kinemage

Kinemage files are stored as human-readable, plain-text files. They're also designed to be easily edited by human beings, using a text editor like Notepad (Windows), TextEdit (Mac), or vi (Unix). You can also use a word processor like Microsoft Word, but you have to be careful to save as plain text (.txt) rather than formatted text (.doc and others). A description of the kinemage file format is distributed with KiNG as a separate document from this manual.

4.1  Merging kinemages together

The most basic sort of editing is to combine two kinemages into one. For this, simply use the File - Append command (see ).

4.2  Editing text

The text of a kinemage is often critical for clarifying and amplifying its meaning. It's analogous to the caption that accompanies a printed figure. You can edit the kinemage text in the same window that you use for reading it (just press the Show text button).

4.3  Editing views

A simple editing tool is Views - Save current view, which records the current orientation and position of the kinemage as a new view in the Views menu. Creating a series of meaningful, clearly labeled views is a great way to make a kinemage more informative. You can delete, rename, and rearrange views using Views - Edit saved views.

4.4  The hierarchy editor

One of the goals of KiNG is to enable simple, visual editing of most parts of a kinemage. Many of the editing commands are activated using a tree-like display of the hierarchical kinemage structure, which will resemble the layout of buttons.
The structure of the kinemage can be rearranged by cutting, copying, and pasting elements; creating new elements and deleting unneeded ones; and reordering elements (using the Up and Down commands). Play with these commands, and their operation will soon become obvious. Elements can even be cut out of one kinemage and pasted into another!
Also, the properties of individual elements can be adjusted, which allows them to be renamed. What other properties are available depends on the level of the hierarchy (kinemage, group, subgroup, or list). Each element can also be toggled on and off, even if it doesn't have a button visible in the button pane.
Using the hierarchy editor effectively depends on a decent understanding of the kinemage format. If you're unfamiliar with kinemages, reading the kinemage format reference may be very helpful to you.

Chapter 5
The Tools

5.1  Understanding the Tools and Plug-ins

The Tools menu has a variety of tools and plug-ins for interacting with the kinemage. Many of these are highly domain-specific - tailored to doing structural biology, for example. Each tool "takes over" the mouse, assigning specific meanings to the various kinds of clicks and drags. Normally, the familiar Navigate tool is active, so mouse motions result in the sort of rotations, pans, and zooms that most users are accustomed to.
Plug-ins, on the other hand, just offer additional functionality that doesn't change what the mouse does. Because of this, you can have several plug-ins active at once, but only one tool.
Some special-purpose tools and plugins have been developed by other people and ship separately from KiNG. Installing these additional tools and plugins for KiNG is easy, though. Just take all plugin files that end with .jar (e.g., chiropraxis.jar, pyking.jar) and put them in the plugins/ folder that's part of your KiNG distribution. There will probably be a few JAR files in there already. Then just close KiNG and restart it to load the new tools and plugins. Note that these will not be available when running KiNG as an applet.
The tools menu also has some other options that are related to how mouse clicks and drags are interpretted, which are discussed below. The tools and plugins listed in the menu can be rearranged, grouped into submenus, or hidden entirely by using the Tools - Customize dialog box, which is also accessible from Edit - Configure KiNG.

5.1.1  Extra measurements

In addition to tracking the distance between the last two points, clicking on points to identify them can track the angle between the last three points and the dihedral angle between the last four. When these measurements are active, the Markers option will display four markers instead of two.

5.1.2  XYZ coordinates

Likewise, KiNG can display the original, unrotated coordinates of the point. This is sometimes helpful when the kinemage is a graph or plot of some data, and the position has some absolute meaning. The display of this information can be enabled in the Tools menu.

5.1.3  Pick objects

Traditionally, one can only "pick" points in a kinemage. Enabling this option allows KiNG to recognize mouse clicks that hit the actual lines drawn between points and the surfaces of triangles. In each case, the result is equivalent to clicking on the point that determines the attributes (color, line width, etc.) of that graphics object.

5.2  Using KiNG with a multi-button mouse

In KiNG, even a one-button mouse is sufficient to access all of the available functions. However, it has also been designed to take full advantage of a three-button wheel mouse. The primary function of every tool is accessed by clicking or dragging with the left (or only) mouse button. This button is referred to as "Normal" in the command reference charts.
Other functions can be accessed either by holding down keyboard keys at the same time, or by using one of the other mouse buttons. Holding the Shift key is equivalent to using the right mouse button, and holding the Control key (often written Ctrl) is equivalent to using the middle mouse button. A few tools assign some function to a mouse action with both the Shift and Control keys held down. In this case, you can get the same effect when dragging by depressing both the left and right mouse button. Because of the difficulty of clicking two buttons at once, however, this shortcut does not apply to Shift+Ctrl+Click.
At the present time, the Shift and Control keys do not work properly in Java on Mac OS X. When using a one-button mouse with OS X, you should use the Command key (a.k.a. Open Apple) instead of Shift to get the same effect as the right mouse button, and you should use the Option key (a.k.a. Alt) instead of Control to get the same effect as the middle mouse button. Hopefully this will be fixed in OS X 10.4 / Java 1.5.
Some tools also use the up & down arrow keys on the keyboard; these have the same effect as using the scroll wheel of a wheel mouse. Once again, these may be combined with the Shift and/or Control keys to give access to more functions. Note that the mouse wheel is never active when running in a Java 1.3.x virtual machine; Java 1.4 or later is needed to take advantage of this control.

5.3  Navigate: Exploring in 3-D

The Navigate tool encompasses all the usual modes of interacting with a kinemage. This is the tool that is active when KiNG is launched, and is probably the only tool many people will ever use. See for an introduction to using the Navigate tool to get around a kinemage. There are also a few more advanced modes of movement which are described below.

5.3.1  Z-rotation ("pinwheel")

Clicking and dragging (with the left mouse button) near the top of the graphics area will cause the kinemage to spin around the Z axis like a pinwheel, rather than the more conventional sort of rotation. This is sometimes useful for putting something right side up.

5.3.2  Translation ("flatland")

Holding Control while dragging (or dragging with the middle mouse button) allows one to slide the kinemage around in the plane of the screen. Dragging at the top of the screen, as for z-rotation, slides the kinemage in and out of the plane of the screen. (Note: enabling perspective in the Diplay menu is very helpful when translating in and out of the plane of the screen.) This sort of motion is sometimes called "panning" or "flatland," and can be made the default mode of movement by selecting Tools - Flatland.

5.3.3  Command reference

Mouse clicks
Normal Mark and identify point; make measurement (pick)
With Shift Center on selected point (pickcenter)
With Ctrl -
With Shift+Ctrl -
Mouse drags
Normal Rotate around X and Y axes; Z-rotate (pinwheel) near top of screen
With Shift Adjust zoom (up/down); Adjust clipping (left/right)
With Ctrl Translate in X-Y plane (flatland); Z-translate near top of screen
With Shift+Ctrl Rotate around Y axis only
Mouse wheel / Up & Down arrow keys
Normal Adjust zoom
With Shift Adjust clipping
With Ctrl -
With Shift+Ctrl -

5.4  Draw New: Reworking the kinemage

The Draw New tool provides a variety of simple tools for creating new objects in the kinemage or removing existing ones on a point-by-point basis.
Edit list props
Picking a point opens the editing window for that point's list, where you can set color, width, radius, etc. You will need to activate the Tools - Superpick option to edit unpickable points.
Edit point props
Picking a point opens the editing window for that point, where you can set color, position, point ID, etc. You will need to activate the Tools - Superpick option to edit unpickable points.
Move points
Allows you to click on individual points and drag them around to new positions. Dragging them with the mouse moves them in the plane of the screen. Using the mouse wheel or up & down arrow keys moves them in and out (this is easier to see with Perspective enabled and Stereo on). A kinemage may have several "points" at the same location in 3-D. Under normal conditions, this tool will move them all together, so that lines stay connected and everything behaves just as you would expect. However, you can also use Ctrl+Drag to pick apart overlapped points and separate them from each other. You will need to activate the Tools - Superpick option to move unpickable points.
Draw line segments
Simply draws a line between the first point picked and the second. Every pair of picks forms a new line. Lines can be shortened from their natural length (or lengthened, using negative numbers), which is sometimes useful for making illustrations.
Draw dotted lines
Like drawing ordinary lines, except a string of dots is created instead of a single line. The number of dots is configurable. This can serve as a "template" for constructing more complex dot-dash patterns when used with line drawing and prune.
Draw curved arc
Draws an arc from the second point picked to the third one, with the arc curving toward the first point picked. The user specifies how many degrees out of a circle will be used to create the arc, so small numbers give flat arcs and large numbers give exagerated ones. The arc can also be shortened by a few degrees so it doesn't quite touch its endpoints, and a four-pronged arrowhead can be added.
Draw balls
Places a small ball at each point picked with the mouse.
Draw labels
Creates a label at the picked point, with its text taken from the picked point's ID. The label text can be changed using Edit Properties.
Draw dots
Creates a dot at each point picked with the mouse.
Draw triangles
Draws a triangle for each set of three points picked. Triangles can also be shrunk (values between 0 and 1) or grown (values greater than 1). A value of zero will make an infinitely small triangle; a value of one will give a triangle that just touches the three points.
Prune one point
Removes the single point picked with the mouse. In the case of polylines and triangle strips, it will stop things from being drawn that depend on the removed point. That is, lines drawn to and from the point will be removed, and all triangles involving the point will be removed. Sometimes kinemages have multiple points that overlap in the same spatial location, so it may take multiple clicks to remove all the objects at a particular point in space.
Punch a polyline
Removes all the line segments in a particular polyline (a series of lines drawn head to tail). This is sometimes useful with vectors and triangles; for other things, it behaves like prune.
Auger a region
Removes all points that fall under the giant eraser. The eraser is drawn as a large circle that follows the mouse around the graphics area. Auger operations cannot be undone, so save your file first and click carefully.
Spherical crop
Removes all points that fall more than a specified distance away from the picked point. Only visible points are cropped. Crop operations cannot be undone, so save your file first and click carefully.
New subgroup
Kinemage elements created by each drawing option are placed into their own list, and all of those lists are placed in one subgroup under the "New group" group created by this tool. Creating a new subgroup starts a fresh list for each option above. This is a good way to separate out the different objects you're drawing. New subgroup can't be undone, but it's pretty harmless.
Undo
The Undo button undoes the last drawing action, with a few exceptions (mentioned above). Undo depth is unlimited, subject to memory constraints. Thus, for kinemages that aren't too large you can often undo all the drawing operations you've performed since loading the kinemage.

5.5  Electron Density: Visualizing maps

This plug-in is for viewing electron density maps while exploring kinemages of crystal structures. (If that doesn't mean anything to you, then you probably don't need this plugin.)
Choose Open from the Tools menu in order to open a map file. Supported formats include X-PLOR (ASCII, not binary), O (DSN6 or Brix), and CCP4 (mode 2, the only one in common use).
Each map opens a new control window, which allows adjustment of its extent, color, and level. The segment of map that is visible at any given time is centered in the current view; when the view changes, the portion that is visible will automatically be updated.
Any dynamic segment of map can be captured as part of a static kinemage; just use the Export button to make the currently visible map segment part of the current kinemage. When you've finished with a map, be sure to Discard it to free up the memory it consumed.
If you don't have an electron density map for the structure you're interested in, you can try looking at the Uppsala Electron Density Server (http://fsrv1.bmc.uu.se/eds/). They offer standard maps for many of the structures deposited in the Protein Data Bank.
Maps can't be loaded from the local filesystem when KiNG is running as an applet due to security restrictions. However, you can use the XMAP or OMAP parameter along with the <PARAM> tag to load a (single) map from a URL. For example:
<PARAM name=omap value=http://example.com/electron/density/my-protein.dsn6.gz>
You can also use the EDMAPBASE and EDMAPLIST parameters to allow the user to select and load a map. EDMAPBASE specifies a path to the maps relative to the current document base URL. EDMAPLIST is a space-separated list of filenames that can be loaded from that path. Users can also enter and modify URLs directly, though obviously this isn't very convenient.

5.6  Update KiNG: Upgrading without the hassle

The Update KiNG plugin allows you to quickly and easily update KiNG to the latest version published on the Kinemage website (kinemage.biochem.duke.edu). After you confirm your intentions, KiNG will begin downloading the new version. If the download proceeds too slowly, you can cancel with no changes to KiNG. Once complete, the downloaded version will be unpacked in the same place as your current installed version of KiNG, and the existing version will be overwritten. You can then quit KiNG and restart to take advantage of new features and capabilities.
The Update plugin has been tested on a variety of platforms under a variety of conditions, but there is always a chance that it won't work quite right on your computer. The chance is greater if you created a non-standard custom installation from the JAR files rather than using the pre-packaged platform-specific installer. If KiNG fails to start after the update, you may have to remove it and then download and install a clean copy by hand.
There are certain things the automatic updater can't update, like the bundled binary programs (probe, etc.) or the displayed version number of the Mac application bundle. For this reason, you may want to periodically remove the existing installation completely and reinstall from scratch.

Chapter 6
Configuring KiNG

By choosing Edit - Configure KiNG, one can adjust several aspects of KiNG's behavior and appearance, such as font sizes, stereo settings, and whether or not certain warnings are issued. The configuration dialog also allows for reorganizing the Tools menu to suit your own work habits. Preferrences may be saved to disk, where they are stored in a simple text file named .king_prefs in the user's home directory. There may be some settings accessible only through this file; that is, they cannot be edited from the graphical interface. Nonetheless, pressing Reset to defaults will restore them to their standard values.
Note that due to security restrictions, configurations cannot be saved when KiNG is running as an applet. However, the web page creator may provide a custom configuration file in the same format as the one saved by KiNG the application, thereby altering the default behavior for all visitors to the website. If you create a preferences file named MyKingPrefs.txt and place it in the same directory as king.jar and your HTML file, add something like this to the APPLET tag of your webpage:
<param name="king_prefs" value="MyKingPrefs.txt">

Chapter 7
Launching KiNG

KiNG runs both as a stand-alone application, and as an applet that can be included in web pages. In any case, KiNG requires a Java Virtual Machine (JVM), version 1.5 or higher. You can get Java from http://java.sun.com.

7.1  Running KiNG as an application

How you launch the KiNG application will depend on what operating system (Windows, Mac OS X, Linux, etc.) you're using. With Windows and the Mac, you can usually just double-click on the king.jar file to start KiNG.
On all operating systems, you can type
java -jar king.jar [-merge  -  -single] [file1 file2 ...]
All the files listed on the command line will be merged together into one kinemage, unless the -s flag is included, in which case all the files will be opened as separate kinemages.
As of KiNG 2.16, the files KiNG can read in from the command line include kinemages, PDB, mmCIF, and electron density maps. For the structure files, QuickKin is used to generate quick-browsing ribbon+stick representations of the structures.

7.2  Making KiNG an applet in a web page

KiNG can also be included as a web page applet. The following HTML code is a simple example that uses the <APPLET> tag, which will work with browsers using a recent JVM. Older browsers may need <OBJECT> or <EMBED> tags; more information on this is available from Sun Microsystems, Inc.
<applet code="king/Kinglet.class" archive="king.jar" width=300 height=150>
<param name="kinSource" value="some_file_name.kin">
</applet>
Just put all the jar files, including king.jar, in the same directory as the HTML file. Users who visit the page will see a 300x150 KiNG logo in the web page, along with a floating KiNG window that looks very much like the stand-alone application. However, due to security restrictions imposed by the browser environment, some functions (e.g., saving files) will be disabled.
Note that the code property really must have the value king/Kinglet.class, even though king.jar is not in a sub-directory called king/. This is the most common problem that people have when trying to run KiNG as an applet. If you did place king.jar somewhere else, that path should precede the jar file name in the archive property instead.
If you want to include additional jar files for plugins and tools, you need to list those in the archive field, after king.jar, separated by commas. For example:
<applet code="king/Kinglet.class" archive="king.jar,chiropraxis.jar,extratools.jar" width=300 height=150>
It is possible to run KiNG in two other applet modes to achieve a slightly different effect. First, the large KiNG logo can be replaced with a small one that serves as a launcher button. Thus, loading the main window is defered until the user clicks the button, at which time the main window appears and the kinemage is loaded. Below is sample HTML for this effect. Note the smaller width and height, to account for the small size of the button.
<applet code="king/Kinglet.class" archive="king.jar" width=60 height=21>
<param name="mode" value="launcher">
<param name="kinSource" value="some_file_name.kin">
</applet>
If you would like a custom image for the launcher, specify its URL with the launcherImage parameter. You may need to change the applet width/height to match. If no image is specified, the default one will be used.
Second, the applet can be embedded in the web page (rather than floating in its own window), by placing this line inside the <applet> tags instead:
<param name="mode" value="flat">
One also probably wants to specify a larger width and/or height, possibly as a fraction of the page size (e.g. 95%). Be warned that using KiNG this way may not work well in some browsers; test your pages thoroughly.
Normally, a KiNG applet displays only the kinemage specified in its kinSource parameter. However, you can also use the kinfileBase and kinfileList parameters to allow the user to open and/or append additional kinemages from a pre-specified set. kinfileBase specifies a path to the maps relative to the current document base URL. kinfileList is a space-separated list of filenames that can be loaded from that path. Users can also enter and modify URLs directly, though obviously this isn't very convenient.
The KiNG applet also supports a kinfileSaveHandler parameter, which is the URL of a CGI script that can accept HTTP POST kinemage output. On a properly configured webserver, this allows users of the KiNG applet to save their modified kinemages directly to the server! However, this is definitely a custom programming job on the server side and so is not an option for most "normal" uses of the KiNG applet.
Some Tools and Plugins may define their own <PARAM> tags, which will be described in their documentation.
As of KiNG version 2.16, the KiNG applet can read PDB or CIF files as well as kinemages. In order to supply a PDB or CIF file for KiNG, instead of the kinSource parameter, use pdbSource or pdbFile. This feature uses QuickKin to generate a quick ribbons and stick representation of the input file.

Chapter 8
Additional resources

8.1  Included manuals

In addition to this User's Guide, KiNG may be accompanied by a guide to the kinemage file format. Kinemage files are simple text files, so that anyone can create kinemage illustrations by hand. This is especially important to fields where no automated tools for kinemage creation yet exist.

8.2  Included kinemages

Under the Help menu, KiNG has several built-in kinemages that demonstrate various capabilities of the graphics system. The palette is particularly useful to kinemage authors when they are designing color schemes.

8.3  External documentation

The best resource for learning more about kinemages is the Richardson lab website, http://kinemage.biochem.duke.edu. Many other resources exist; hopefully, they will be documented here in the future.

8.4  Bug reporting and contact info

Ian Davis, the original author of KiNG, has graduated. KiNG is currently being maintained by Vincent Chen, who may be reached via email at mailto:vbc3@duke.edu. Please, do not hesistate to report bugs and problems with KiNG - your input can only improve the program.

Chapter 9
Copyright & acknowledgments

9.1  Copyright

The KiNG program and all its associated original resources and documentation are copyright (C) 2002-2009 by Ian W. Davis & Vincent B. Chen. KiNG makes use of the gnu.regexp library, which is copyright (C) by Wes Biggs, and of icons copyright (C) by Sun Microsystems provided for use with Java programs. It is also capable of using the iText library for generating PDF files, and the JOGL library for OpenGL rendering.

9.2  Licenses

KiNG is free software available under the terms of its own BSD-style license (see ). The source code and new versions can be downloaded from the Richardson lab website, http://kinemage.biochem.duke.edu. The gnu.regexp library is covered by the GNU Lesser General Public License (LGPL). In accordance with that license, the full source of the gnu.regexp library is available from its website at http://www.cacas.org/java/gnu/regexp/. The iText library is dual-licensed under the LGPL and the Mozilla Public License (MPL). iText is available from http://www.lowagie.com/iText/. JOGL is available under a BSD-style license from https://jogl.dev.java.net/. Many of the icons are the property of Sun Microsystems and have their own license; they are available from http://developer.java.sun.com/developer/techDocs/hi/repository/.
All license documents are provided in the downloaded KiNG bundles and are found in the doc/ directory. Additionally, the KiNG license appears in the Appendix (see ).

9.3  Acknowledgments

I owe an enormous debt of gratitude to many, many people for making this program possible. First and foremost, I thank David and Jane Richardson, who are my bosses and mentors, and who developed the kinemage concept, the file format, and most of the features found in KiNG - my contribution was only the Java implementation. Second, I thank Vincent Chen for his ongoing contributions to KiNG; he has developed many useful plugins and has made significant contributions to the core. I am also grateful to the other members of the Richardson lab, who have supported and encouraged me in developing KiNG, providing invaluable insight into how to improve the program. Of course, this work would not have been possible without support from the National Institutes of Health and the Howard Hughes Medical Institute.
KiNG is free software built on free software. I can't hope to acknowledge all the authors of all the software that has been used to create KiNG, but I can mention a few of the most prominent: Sun Microsystems, the creators of the Java language and libraries; the LYX document processor, used for writing the documentation; jEdit, a fantastic programmer's text editor written entirely in Java; and the entire Linux movement, for providing a real alternative to comercial operating systems. I have also taken advantage of a number of excellent free Java libraries, which are described above.

9.4  Revision status

This manual was last updated 29 August 2009 by VBC for KiNG version 2.17.

Appendix A
KiNG License

A.1  What this license applies to

This license applies to everything in this project that is the original work of the copyright holder(s) and contributor(s), including but not limited to the source code, binary executables, artwork, and documentation. This distribution includes certain third-party libraries and resources which are not covered by this license, and which are governed by their own license terms. See documentation for more details.

A.2  The KiNG License

Copyright (C) 2002-2009 Ian W. Davis & Vincent B. Chen. All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. 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.
  3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment:
    This product includes software developed in the Richardon lab at Duke University (http://kinemage.biochem.duke.edu).
    Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear.
  4. The name of the copyright holder, the names of the contributors, and the names KiNG, Kinemage, Next Generation, and Mage must not be used to endorse or promote products derived from this software without prior written permission.
  5. Products derived from this software may not be called KiNG, nor may KiNG appear in their name, without prior written permission.
THIS SOFTWARE IS PROVIDED AS IS AND ANY EXPRESSED 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 HOLDERS 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.

A.3  Where this license came from

This license is based on the BSD and Apache licenses. See http://www.opensource.org/ for more details on these and other licenses.


File translated from TEX by TTH, version 3.85.
On 29 Aug 2009, 01:52.
king-2.21.120420/king/doc/COPYING.LIB0000644000000000000000000006347611531212662014767 0ustar rootroot GNU LESSER GENERAL PUBLIC LICENSE Version 2.1, February 1999 Copyright (C) 1991, 1999 Free Software Foundation, Inc. 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. [This is the first released version of the Lesser GPL. It also counts as the successor of the GNU Library Public License, version 2, hence the version number 2.1.] Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public Licenses are intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This license, the Lesser General Public License, applies to some specially designated software packages--typically libraries--of the Free Software Foundation and other authors who decide to use it. You can use it too, but we suggest you first think carefully about whether this license or the ordinary General Public License is the better strategy to use in any particular case, based on the explanations below. When we speak of free software, we are referring to freedom of use, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish); that you receive source code or can get it if you want it; that you can change the software and use pieces of it in new free programs; and that you are informed that you can do these things. To protect your rights, we need to make restrictions that forbid distributors to deny you these rights or to ask you to surrender these rights. These restrictions translate to certain responsibilities for you if you distribute copies of the library or if you modify it. For example, if you distribute copies of the library, whether gratis or for a fee, you must give the recipients all the rights that we gave you. You must make sure that they, too, receive or can get the source code. If you link other code with the library, you must provide complete object files to the recipients, so that they can relink them with the library after making changes to the library and recompiling it. And you must show them these terms so they know their rights. We protect your rights with a two-step method: (1) we copyright the library, and (2) we offer you this license, which gives you legal permission to copy, distribute and/or modify the library. To protect each distributor, we want to make it very clear that there is no warranty for the free library. Also, if the library is modified by someone else and passed on, the recipients should know that what they have is not the original version, so that the original author's reputation will not be affected by problems that might be introduced by others. Finally, software patents pose a constant threat to the existence of any free program. We wish to make sure that a company cannot effectively restrict the users of a free program by obtaining a restrictive license from a patent holder. Therefore, we insist that any patent license obtained for a version of the library must be consistent with the full freedom of use specified in this license. Most GNU software, including some libraries, is covered by the ordinary GNU General Public License. This license, the GNU Lesser General Public License, applies to certain designated libraries, and is quite different from the ordinary General Public License. We use this license for certain libraries in order to permit linking those libraries into non-free programs. When a program is linked with a library, whether statically or using a shared library, the combination of the two is legally speaking a combined work, a derivative of the original library. The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom. The Lesser General Public License permits more lax criteria for linking other code with the library. We call this license the "Lesser" General Public License because it does Less to protect the user's freedom than the ordinary General Public License. It also provides other free software developers Less of an advantage over competing non-free programs. These disadvantages are the reason we use the ordinary General Public License for many libraries. However, the Lesser license provides advantages in certain special circumstances. For example, on rare occasions, there may be a special need to encourage the widest possible use of a certain library, so that it becomes a de-facto standard. To achieve this, non-free programs must be allowed to use the library. A more frequent case is that a free library does the same job as widely used non-free libraries. In this case, there is little to gain by limiting the free library to free software only, so we use the Lesser General Public License. In other cases, permission to use a particular library in non-free programs enables a greater number of people to use a large body of free software. For example, permission to use the GNU C Library in non-free programs enables many more people to use the whole GNU operating system, as well as its variant, the GNU/Linux operating system. Although the Lesser General Public License is Less protective of the users' freedom, it does ensure that the user of a program that is linked with the Library has the freedom and the wherewithal to run that program using a modified version of the Library. The precise terms and conditions for copying, distribution and modification follow. Pay close attention to the difference between a "work based on the library" and a "work that uses the library". The former contains code derived from the library, whereas the latter must be combined with the library in order to run. GNU LESSER GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License Agreement applies to any software library or other program which contains a notice placed by the copyright holder or other authorized party saying it may be distributed under the terms of this Lesser General Public License (also called "this License"). Each licensee is addressed as "you". A "library" means a collection of software functions and/or data prepared so as to be conveniently linked with application programs (which use some of those functions and data) to form executables. The "Library", below, refers to any such software library or work which has been distributed under these terms. A "work based on the Library" means either the Library or any derivative work under copyright law: that is to say, a work containing the Library or a portion of it, either verbatim or with modifications and/or translated straightforwardly into another language. (Hereinafter, translation is included without limitation in the term "modification".) "Source code" for a work means the preferred form of the work for making modifications to it. For a library, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the library. Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running a program using the Library is not restricted, and output from such a program is covered only if its contents constitute a work based on the Library (independent of the use of the Library in a tool for writing it). Whether that is true depends on what the Library does and what the program that uses the Library does. 1. You may copy and distribute verbatim copies of the Library's complete source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and distribute a copy of this License along with the Library. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Library or any portion of it, thus forming a work based on the Library, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) The modified work must itself be a software library. b) You must cause the files modified to carry prominent notices stating that you changed the files and the date of any change. c) You must cause the whole of the work to be licensed at no charge to all third parties under the terms of this License. d) If a facility in the modified Library refers to a function or a table of data to be supplied by an application program that uses the facility, other than as an argument passed when the facility is invoked, then you must make a good faith effort to ensure that, in the event an application does not supply such function or table, the facility still operates, and performs whatever part of its purpose remains meaningful. (For example, a function in a library to compute square roots has a purpose that is entirely well-defined independent of the application. Therefore, Subsection 2d requires that any application-supplied function or table used by this function must be optional: if the application does not supply it, the square root function must still compute square roots.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Library, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Library, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Library. In addition, mere aggregation of another work not based on the Library with the Library (or with a work based on the Library) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may opt to apply the terms of the ordinary GNU General Public License instead of this License to a given copy of the Library. To do this, you must alter all the notices that refer to this License, so that they refer to the ordinary GNU General Public License, version 2, instead of to this License. (If a newer version than version 2 of the ordinary GNU General Public License has appeared, then you can specify that version instead if you wish.) Do not make any other change in these notices. Once this change is made in a given copy, it is irreversible for that copy, so the ordinary GNU General Public License applies to all subsequent copies and derivative works made from that copy. This option is useful when you wish to copy part of the code of the Library into a program that is not a library. 4. You may copy and distribute the Library (or a portion or derivative of it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange. If distribution of object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place satisfies the requirement to distribute the source code, even though third parties are not compelled to copy the source along with the object code. 5. A program that contains no derivative of any portion of the Library, but is designed to work with the Library by being compiled or linked with it, is called a "work that uses the Library". Such a work, in isolation, is not a derivative work of the Library, and therefore falls outside the scope of this License. However, linking a "work that uses the Library" with the Library creates an executable that is a derivative of the Library (because it contains portions of the Library), rather than a "work that uses the library". The executable is therefore covered by this License. Section 6 states terms for distribution of such executables. When a "work that uses the Library" uses material from a header file that is part of the Library, the object code for the work may be a derivative work of the Library even though the source code is not. Whether this is true is especially significant if the work can be linked without the Library, or if the work is itself a library. The threshold for this to be true is not precisely defined by law. If such an object file uses only numerical parameters, data structure layouts and accessors, and small macros and small inline functions (ten lines or less in length), then the use of the object file is unrestricted, regardless of whether it is legally a derivative work. (Executables containing this object code plus portions of the Library will still fall under Section 6.) Otherwise, if the work is a derivative of the Library, you may distribute the object code for the work under the terms of Section 6. Any executables containing that work also fall under Section 6, whether or not they are linked directly with the Library itself. 6. As an exception to the Sections above, you may also combine or link a "work that uses the Library" with the Library to produce a work containing portions of the Library, and distribute that work under terms of your choice, provided that the terms permit modification of the work for the customer's own use and reverse engineering for debugging such modifications. You must give prominent notice with each copy of the work that the Library is used in it and that the Library and its use are covered by this License. You must supply a copy of this License. If the work during execution displays copyright notices, you must include the copyright notice for the Library among them, as well as a reference directing the user to the copy of this License. Also, you must do one of these things: a) Accompany the work with the complete corresponding machine-readable source code for the Library including whatever changes were used in the work (which must be distributed under Sections 1 and 2 above); and, if the work is an executable linked with the Library, with the complete machine-readable "work that uses the Library", as object code and/or source code, so that the user can modify the Library and then relink to produce a modified executable containing the modified Library. (It is understood that the user who changes the contents of definitions files in the Library will not necessarily be able to recompile the application to use the modified definitions.) b) Use a suitable shared library mechanism for linking with the Library. A suitable mechanism is one that (1) uses at run time a copy of the library already present on the user's computer system, rather than copying library functions into the executable, and (2) will operate properly with a modified version of the library, if the user installs one, as long as the modified version is interface-compatible with the version that the work was made with. c) Accompany the work with a written offer, valid for at least three years, to give the same user the materials specified in Subsection 6a, above, for a charge no more than the cost of performing this distribution. d) If distribution of the work is made by offering access to copy from a designated place, offer equivalent access to copy the above specified materials from the same place. e) Verify that the user has already received a copy of these materials or that you have already sent this user a copy. For an executable, the required form of the "work that uses the Library" must include any data and utility programs needed for reproducing the executable from it. However, as a special exception, the materials to be distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. It may happen that this requirement contradicts the license restrictions of other proprietary libraries that do not normally accompany the operating system. Such a contradiction means you cannot use both them and the Library together in an executable that you distribute. 7. You may place library facilities that are a work based on the Library side-by-side in a single library together with other library facilities not covered by this License, and distribute such a combined library, provided that the separate distribution of the work based on the Library and of the other library facilities is otherwise permitted, and provided that you do these two things: a) Accompany the combined library with a copy of the same work based on the Library, uncombined with any other library facilities. This must be distributed under the terms of the Sections above. b) Give prominent notice with the combined library of the fact that part of it is a work based on the Library, and explaining where to find the accompanying uncombined form of the same work. 8. You may not copy, modify, sublicense, link with, or distribute the Library except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense, link with, or distribute the Library is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 9. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Library or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Library (or any work based on the Library), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Library or works based on it. 10. Each time you redistribute the Library (or any work based on the Library), the recipient automatically receives a license from the original licensor to copy, distribute, link with or modify the Library subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties with this License. 11. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Library at all. For example, if a patent license would not permit royalty-free redistribution of the Library by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Library. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply, and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 12. If the distribution and/or use of the Library is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Library under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 13. The Free Software Foundation may publish revised and/or new versions of the Lesser General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Library specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Library does not specify a license version number, you may choose any version ever published by the Free Software Foundation. 14. If you wish to incorporate parts of the Library into other free programs whose distribution conditions are incompatible with these, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Libraries If you develop a new library, and you want it to be of the greatest possible use to the public, we recommend making it free software that everyone can redistribute and change. You can do so by permitting redistribution under these terms (or, alternatively, under the terms of the ordinary General Public License). To apply these terms, attach the following notices to the library. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA Also add information on how to contact you by electronic and paper mail. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the library, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the library `Frob' (a library for tweaking knobs) written by James Random Hacker. , 1 April 1990 Ty Coon, President of Vice That's all there is to it! king-2.21.120420/king/work/0000755000000000000000000000000011744310054013524 5ustar rootrootking-2.21.120420/king/work/kingicon16.gif0000644000000000000000000000105511531212636016165 0ustar rootrootGIF89aSSV  /.'$#WTF (#/* }d  '*\N5}.7p*u/ @MBu4ڼTYM#;pa->ѶYDTJQ5/mNE%Z{v݋˃|qKyxoPܭROD#NAI=BWJ/(D]O#Kn3LBf82ӂkؒòx}rMqǶ|]пqЗ˿{t]ȢƦsDA8   A@?,iZhX SP5Hd\R+ T-2/?^8O(B*].9I L@^aMDVEJ3;Y>[%1"bU < g6$Fc0=:jjKG4Q`7N_,)C&!#ANx 0@3\Yư@;king-2.21.120420/king/work/king-logo.04.psd0000644000000000000000000106014711531212636016356 0ustar rootroot8BPS]n8BIM8BIM%F &Vڰw8BIM$9d adobe:docid:photoshop:cc35d2bc-5ff7-11d9-8481-8a87f8eedeb4 uuid:D4FA1277EB0CDE11A28EA27F41A7AE5A 1 720000/10000 720000/10000 2 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;0573BE06F011AECD96446AA7E9D6BEC5 2009-03-09T16:54:57-04:00 Adobe Photoshop CS3 Windows 2004-04-26T14:34:59-04:00 2009-03-09T16:54:57-04:00 -1 400 400 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;582FE5F672A5CE47043904F52E463B0A application/vnd.adobe.photoshop 3 8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIMnullbaseNameTEXTUserboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM8BIM ,JFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$I%)$IJI$RI$I%)$IOI%)$IJI$RI$I%)$IJI$RI$I%)$IOwu~Sû*;cS ѻk%R^,m+}UYbLtºǿ1jY[kk֏GyoO^+5P쬂=_L5c$c#.B"8DֆzX5: +c7mU-k s}1{z}-5ݐí%u?GzV;MO3 ;ǵŮi4>a7ɛ 3'2h uzNҰj4s\%9ϧw'?Y+_sLjK]k >a61̳'].ZY/a;:Cnpߤmd\L\۪-ko-v>Uz,>' 5=th]~˩w[^kv~<Ӎ*|!c?{7-_zc&L29=BoLĒI\XW]f=V4;M~ʚ:o?%A\#$ '(ܮDM-sPuk fڿ鮷NsZeW-[{#ޱ-uXv{kmg_MCrK-CIЗ1q< h?ŷ5cOϪ__.X?Ж}9%nu}p?RGŪ,79KWKM~^~˩ D [Wc]-WތDRGVO_l"zOY=7et̶bkۣuk~V7"yAp<)곗 qѣH/z^WJ~&Hs>~wj ]~>>seO lơߜ+<0r uj5z_WLiCZ^[Ƹn}<V 3mb]vne s:Dk;'>HN?St|6.nU[zy}N?r-:22RI"c+*f1׽ΝCUh'I-zSjuTX4V\cfݽH8DOTFO~Wio[xf= {y pPsbwK3.Kv˦+Wx xQ?6"zkȏ7Yad6G4柤!J:d{0usu9轇\&v;?nfڬU`p'*B*B3c7__zrG6+ cڹPV**WLo8oX+s % ޵?l-:GMӫN~9uu'Ѵ*Wsu+0.%Ծ[?57>"2CӒ;TeZXQj~V2şFW>?9h}b7ݾŮĬdpFo$?)Z}O]}=v1o{mvQr+cӌeKn5-ϭO'wMM3KNqDE2j>Y:!MǡuPc'9$|>FEY.=;$;ڦ\f$q;Z\,?#o\Ù6annٷ5c1EoI37"I%)$IJI%bp is00֐C`@S]%k:nߡ͖C1s4;[w84Z+ iy4ܠv6]U$b}ߤw4TI_n;-vz$έo4_{U̱ieOf0UH$N=50XtݳoMX;kb| JM4qsffCCgUšlFGĨI"$I)I%)UIX\ $;wݾ}\]kk51ܴ“rK ϟ2)V_e6`w?۽'t=F:Ѷ@7KN,2:qs>[ppbNqm@čcK~g(cHj 58^oﻝܞy9ȸ/$%RGcMv;ku>湜~bENX憻^k_}mHsK@w$sC\ZRdxD̤[6׸kC>)@a;~P}շkZ/Fm;u*Bk  )˜L&ORI$v6,LDw.;~ pZ;$5}-07y K?Qzn;IMO-,,kmh[E,ۛq2w"D7XaƤE~0 v{=A{hOr#qqqd[+^[&FP,;nޝ0{w2K6" iǵ1I.$_"_W.wlnI3cKD(q?93;(Y&@nHZZf+ije{M@vC3'eӸ@$$whCZ[kb@䏷zZ^ c\CHsFK lL˛; E'v .0lGbSV ınmx䑡'o^-tDi"5$֤ܫCi%OʹD4􀃣MM+ֵ S'ݧNqnHD#M7{wa\h'~ݿEM tDFjq[]~?^L6HHK7^*_ֺK@"H"6,4 g|IDhL,cmkh nHwZԩhw i2`> 6#t{ZLh#NG5$`lzFѷlMOZQ$ICİ@Cln -4MUHLʤ՚7tapGɟN,o ~Iq{U'1H&`If%?I Z\gU%CC&Z:q "`ooK*`jHNjZ}  ;|{( %{Sc}@8\9- %wI׻o[CI#+*I%)$IJI$RI$I%)$IJI$RI$I%)$IO8BIM!UAdobe PhotoshopAdobe Photoshop CS38BIM".MM*bj(1r2i ' 'Adobe Photoshop CS3 Windows2009:03:09 16:54:57&(.HH8BIMmoptdlTargetSettingsClrTObjc ColorTableClrsVlLsisExactboolMttCObjc NativeQuadBl longGrn longRd longTrnsbool addMetadatabool autoReduceboolcolorTableControlObjcColorTableControl lockedColorsVlLs shiftEntriesVlLsditherAlgorithmenumDitherAlgorithmDfsn ditherPercentlongd fileFormatenum FileFormatGIF interlacedboollossylong noMatteColorbool numColorslongreductionAlgorithmenumReductionAlgorithmSelerolloverMasterPalettebooltransparencyDitherAlgorithmenumDitherAlgorithmNonetransparencyDitherAmountlongdwebShiftPercentlong zonedDitherObjc ZonedInfo channelIDlong emphasizeTextboolemphasizeVectorsboolfloorlongzonedHistogramWeightObjc ZonedInfo channelIDlong emphasizeTextboolemphasizeVectorsboolfloorlong zonedLossyObjc ZonedInfo channelIDlong emphasizeTextboolemphasizeVectorsboolfloorlong8BIM-msetnullVersionlong8BIMms4w8BIMmaniIRFR8BIMAnDsnullAFStlongFrInVlLsObjcnullFrIDlongH%FStsVlLsObjcnullFsIDlongAFrmlongFsFrVlLslongH%LCntlong8BIMRoll8BIMmfrip 8BIMnorm((Layer 18BIMluniLayer 18BIMlnsrlayr8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrp" T8BIMnorm(.(http://kinemage.biochem.duke.e8BIMlfx2nullScl UntF#Prc@YmasterFXSwitchboolGrFlObjcGrFl enabboolMd enumBlnMNrmlOpctUntF#Prc@IGradObjc GradientGrdnNm TEXTForeground to TransparentGrdFenumGrdFCstSIntrdoub@ClrsVlLsObjcClrtClr ObjcRGBCRd doubGrn doubBl doubTypeenumClryUsrSLctnlongMdpnlong2ObjcClrtClr ObjcRGBCRd doubGrn doubBl doubTypeenumClryUsrSLctnlongMdpnlong2TrnsVlLsObjcTrnSOpctUntF#Prc@YLctnlongMdpnlong2ObjcTrnSOpctUntF#PrcLctnlongMdpnlong2AnglUntF#Ang@VTypeenumGrdTLnr RvrsboolAlgnboolScl UntF#Prc@YOfstObjcPnt HrznUntF#PrcVrtcUntF#Prc8BIMlrFX8BIMcmnS8BIMdsdw3x8BIMmul 8BIMisdw3x8BIMmul 8BIMoglw*8BIMscrn8BIMiglw+8BIMscrn8BIMbevlNx8BIMscrn8BIMmul 8BIMsofi"8BIMnorm8BIMTySh'??@i@s 2TxLrTxt TEXTGhttp://kinemage.biochem.duke.edu The Richardson lab at Duke UniversitysubstitutesUsedbool textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnCr TextIndexlong EngineDatatdta$ << /EngineDict << /Editor << /Text (http://kinemage.biochem.duke.edu The Richardson lab at Duke University ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 33 38 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 1 /FontSize 24.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .18433 .27841 .60388 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth 1.0 >> >> >> ] /RunLengthArray [ 71 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 1 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 >> >> ] /FontSet [ << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (EurostileRegular) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (Helvetica) /Script 0 /FontType 1 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 >> >> ] /FontSet [ << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (EurostileRegular) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (Helvetica) /Script 0 /FontType 1 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni@http://kinemage.biochem.duke.e8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrpLFEF2228BIMnorm(((Copyright 2002 - 2009 Ian W. Da8BIMTySh&??@h@n 2TxLrTxt TEXT5Copyright 2002 - 2009 Ian W. Davis & Vincent B. Chen textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnCr TextIndexlong EngineDatatdta${ << /EngineDict << /Editor << /Text (Copyright 2002 - 2009 Ian W. Davis & Vincent B. Chen ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 22 31 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .39996 .36078 .05884 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth 1.0 >> >> >> ] /RunLengthArray [ 53 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 1 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 >> >> ] /FontSet [ << /Name (EuphemiaCAS) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (Helvetica) /Script 0 /FontType 1 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 >> >> ] /FontSet [ << /Name (EuphemiaCAS) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (Helvetica) /Script 0 /FontType 1 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMlunil4Copyright 2002 - 2009 Ian W. Davis & Vincent B. Chen8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrp?@"^s:::8BIMnorm()(KiNG8BIMlfx2nullScl UntF#Prc@YmasterFXSwitchboolGrFlObjcGrFl enabboolMd enumBlnMNrmlOpctUntF#Prc@NGradObjc GradientGrdnNm TEXTForeground to TransparentGrdFenumGrdFCstSIntrdoub@ClrsVlLsObjcClrtClr ObjcRGBCRd doubGrn doubBl doubTypeenumClryUsrSLctnlongMdpnlong2ObjcClrtClr ObjcRGBCRd doubGrn doubBl doubTypeenumClryUsrSLctnlongMdpnlong2TrnsVlLsObjcTrnSOpctUntF#Prc@YLctnlongMdpnlong2ObjcTrnSOpctUntF#PrcLctnlongMdpnlong2AnglUntF#Ang@VTypeenumGrdTLnr RvrsboolAlgnboolScl UntF#Prc@YOfstObjcPnt HrznUntF#PrcVrtcUntF#Prc8BIMlrFX8BIMcmnS8BIMdsdw3x8BIMmul 8BIMisdw3x8BIMmul 8BIMoglw*8BIMscrn8BIMiglw+8BIMscrn8BIMbevlNx8BIMscrn8BIMmul 8BIMsofi"8BIMnorm8BIMTySh#8??@h@h2TxLrTxt TEXTKiNGsubstitutesUsedbool textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnCr TextIndexlong EngineDatatdta!\ << /EngineDict << /Editor << /Text (KiNG ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 5 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 1 /FontSize 150.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .85883 .77646 .12155 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth 1.0 >> >> >> ] /RunLengthArray [ 5 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 1 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 >> >> ] /FontSet [ << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (Optima-Regular) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (Helvetica) /Script 0 /FontType 1 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 >> >> ] /FontSet [ << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (Optima-Regular) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (Helvetica) /Script 0 /FontType 1 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni KiNG8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrp?$CDDE=  -GA%#%#Q]ZZ B- )B6wDwUwDwDwDwDwUwDwDwDwDD3wDwDwDwDwwwDwDwDwD3DD"DD"DD"D"DDD3"DwDDDD3"D3DD"DD3DD33DDD3"DD""DDDD3D33DDwD3DDDD3D33DDD"DD"3D"DD "DD"wDD33DwwwwwwwD"wD fww33f3DU3D33fw33www33f3DUfwDDw333333D wf"f wfwwwwDf wwwUUUUU""U3"fUwDUU33"D3"wUUwf"fUUUUU""f"UwDDw 3UUUU U"Dw"w"DwDwfwDwD3UwwD"3DDwD UwwD3w"DwD3UwUwDDw DwDDwDDDwDwU"D"wDfwDwwDUwDDwwUDwwDU wUDwwDwwDUwDDwwDDw"wwDUwwDUwUDwDwDwDfwwwDwwwwDDwDw"wDwDwww wDwDwwwwDDwwDDw3wwwwwwwDwDwDwDwD33wwDwfwDDwwwwDwDwf wDwDwfwDDwwDDwݪfwfwfwDwDwDwDwDUwwD3wDwUwDDwDwDwDwU wDwDwUwDDwwDDw3wUwUwDwDwDwwwf"UwwDfwDfw"wDwDDwffDfw"wD "fffDwDfw"wDwDDw3wDUw 3fw"wDfw"wDUwDwD3w3wwD333wDwwD3UwwDDw33D3UwD3" ffwU3w"wD3UwwD Dw"D"fffw 33 UwD33Uw"D"wDwD"wD"wUDUwUwwD wwDDf"wDDwwDDDfDDf"wDDw"wDDff UDDwwDDf"wDDwwDDfDDfDUw3Df"Df"DDfDwDDwwD3U3UwUwUwwD fwDDwDDwwUwwDDU"DfwwDDwDDwwDU33UwDDD wwDwUwDD3wDwDwwfwDwD"DwDD"wwf3DffDDwDwwDwDwD3wDwwDwwwwDwDwDwDwD"wDwDwDDwDwDwDffwDwDwD3DDDwDD33DD3DD"D3D3Uww3D"D"D"D3DwD"DDD3D3DwD"wDDD33DwDDD3DD3 "D3DD"D3D3D3DD3Uww3"D"D3DwD"D3D"www33wDww3 ݻUf3U3UfwD33fwwDwDfwwUw33 ݻU3UwwU wf"fUUf""D3f U3"ff"UD""fUDD wDwU33"U3"fwDwDwDff""f www3"UUD""wDffw"DwD"ww3wD"wUf3wD"DwD3UwwD"wDwDwDwfw3wDwDwf3wDwDwwDUwwDwDUwDwDwwDwDwDwDwDwDfwDDwwwDUUwwD3wwDwwww3wDDw"wU3DwDwwDwDwfwDDw"wDwDwwwD""wwwwU3wDDfwDwDwf3wDwwDwDwwDwDwDwwwDwDwwD3wwfwDwDwUwDDUDwDwwDwDffDDwDwDDwwD3wD 3wwUUwD"wDfw"wDݻwD3wfDw3UwwDwDwDwD" wDwwDwUwDffwwD "w"fw"wDwfDwwDw"w3wwD3Uw"wD3"fUw3wDwDwfD"ff 3wUwD""wDw"3wwwD3w3UwUw wUw3wDDf"DwDDU3wDwDDfDDDw "UDDwDwDfDDfDwDDwwD DDfwwwwDDwwDwDfDUw wDݻwDf"Dw" DDfwwDDU3wDwUU3Uwݙ"wDwD3ݙDU"wUwwUwUwDfUwD"wD"DUw"wf""DDDf////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁;ep_QO U[`TSDD"DD3DD3D"DD"D"D"DD"3Dw333"ff33UÜf3w wDwD"f33UU""DwwU33""3DDwf"fݙ3fw"D""f"fDDw݈wfwDD̪"UU3wDf wDfUw wUDwDffww3fw3fDwDf݈fwU3̙U""Uwww wD3'"Uww̪DUfݙwwf̻fDDDDw"wwwwwffffw3w݈ww "UDD"DDDD3fUwwww̻wẅwwwDD3DDDDUwfwww w"fDUwwwwf"3w"wwDD33DDDDD"fwww w"ww"wwwwww DwDDUfwwU33D"3U3wݙwD"ww3wDD3݈ff3̙"UU"3f"w""wݙ݈"w̪wDDݪf"fݙf3U""f̙"UU"D"3"wwwDw3w"3wD D3""D U"DD3"UwwUf""f333f3fw 3wwD33DffU"DD3D3wDDwfwf3D"D"D33D"DDD3wwDUwwUD fDDw"w"33̙""D"DD33f3w""fw""ff"fDDݻwUwwݻDwfݪݻww UÜwDD3Uww"w3f""wwUwDDf3w""f3fwww"fw DDfDDwww "fD3"wUf3w w3wD""̪ wDfU"UffDD w3D3wwww"wwwUDwwDwww DDwDwݪw ݙwUݙݪww"UU"w"wwݪ"f wݙwUwwfwf ݈w"w"̈wDwwݪwDDwݪw" wfU3̙ wwD3DUwwffU3www"3ww"DDww wDwD"ww wwff3wDwwU"UDwwwww̙̻wwDD"www 3DDDwݙf"D3"w݈3 ݙffUffwwwDwww3www DDfw3wwwU "w3DwwwD3Dwf̻U3fwwwDwwww"wD3wwDD3Dwwww"wwfwwfDU"wwݪf"wwww3wwݙwwDDwwwwDw3wDDwUw""fw""wDwww"ww3ww DDwU"ww3UwDDw3w wwffw UDwffw"3"fwDwwwDfUw "UUw ""D̻wwDDUw"ww3Dw3UffwDfw33UwwDDwD33wDwwD3"33D"3DDDD3D""DDDD3"DDD"ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*)Q<=:JB=?>?@CC@66221-,,,266898877E?=?A?><@>>=;:66423:=99?F=A@AA???CEDECEFEEEE@@@:;==;9779:>>>=:<>;@E>;=>>! p0@p@@`00`p@`P@`0`P@0@`@0pP@0`P@Pp @00 @0p@0P`@@аP@  @``p0Ѐ@0p@P``@p`   @`p0````@@`P@0``00P0    P`0@@`P00P0 @`  0P0@`0@```0@P``0@@0``@ ``@P```000`@p0`00 `00 @00@0@@0@0@@``@`` @```pP@`@p@`@`0@`@`P@P@`p@@@0@ @@@0@`0@0@@`@ @P@@@@@@0 @@@@0`@0@@0@0@@@@@0@`@@`0@` @p0@``@P0@`@0@`@@P@@0@@0@`0 @`p0@``@@@@00 @0@0@ @0@@@@@ `@`@@0@@``@`@@`P@`@@`@@`@@`@о@P0@@` @@0@@P0@@0@@0p@@P@@0@@`@0@0@@@@@@ 00@@p@@@0 p@@`@@@0p@@00@@pP @@@0@``@@`@``@@P`@@@@ @@@ pА@@0` `@``0@000 @0@@@P@@0`@@@@p@p@p `@@`@@@@0@0@@0@0 @@` @``0@@P@ @0@0@@@`@ p@@@p@`@@p@@Ppp@@0`@@ PP@@P@ @@` @p@0`0 @@`ఀ@0@0@ @@0@`P@@0@0@PА@@@@`@pР` @ppp@`ఀ@0@ @@ @P@P@@0`P0@0PP@@@ @0ہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭہہۭƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭƁƁƭ8BIMPatt8BIMTxt2` /DocumentResources << /FontSet << /Resources [ << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (EuphemiaCAS) /Type 1 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (AdobeInvisFont) /Type 0 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (Optima-Regular) /Type 1 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (EurostileRegular) /Type 1 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (Helvetica) /Type 1 >> >> >> ] >> /MojiKumiCodeToClassSet << /Resources [ << /Resource << /Name () /Members << /ClassMappings [ << /R (55) /C 1 >> << /R (77) /C 1 >> << /R (99) /C 1 >> << /R (;;) /C 1 >> << /R (==) /C 1 >> << /R (??) /C 1 >> << /R (AA) /C 1 >> << /R (CC) /C 1 >> << /R () /C 1 >> << /R (;;) /C 1 >> << /R ([[) /C 1 >> << /R (  ) /C 1 >> << /R (00) /C 1 >> << /R (0 0 ) /C 1 >> << /R (0 0 ) /C 1 >> << /R (00) /C 1 >> << /R (00) /C 1 >> << /R (00) /C 1 >> << /R (66) /C 2 >> << /R (88) /C 2 >> << /R (::) /C 2 >> << /R (<<) /C 2 >> << /R (>>) /C 2 >> << /R (@@) /C 2 >> << /R (BB) /C 2 >> << /R (DD) /C 2 >> << /R ( ) /C 2 >> << /R (==) /C 2 >> << /R (]]) /C 2 >> << /R (  ) /C 2 >> << /R (0 0 ) /C 2 >> << /R (0 0 ) /C 2 >> << /R (0 0 ) /C 2 >> << /R (00) /C 2 >> << /R (00) /C 2 >> << /R (00) /C 2 >> << /R () /C 3 >> << /R (^^) /C 3 >> << /R (0A0A) /C 3 >> << /R (0C0C) /C 3 >> << /R (0E0E) /C 3 >> << /R (0G0G) /C 3 >> << /R (0I0I) /C 3 >> << /R (0c0c) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R () /C 4 >> << /R () /C 4 >> << /R () /C 5 >> << /R (00) /C 5 >> << /R (  ) /C 5 >> << /R () /C 6 >> << /R (00) /C 6 >> << /R ( ) /C 7 >> << /R (00) /C 7 >> << /R (  ) /C 8 >> << /R ( % &) /C 8 >> << /R () /C 9 >> << /R () /C 9 >> << /R () /C 9 >> << /R () /C 10 >> << /R () /C 10 >> << /R () /C 10 >> << /R ( 0 0) /C 10 >> << /R ( 2 4) /C 10 >> << /R (00) /C 11 >> << /R (0B0B) /C 12 >> << /R (0D0D) /C 12 >> << /R (0F0F) /C 12 >> << /R (0H0H) /C 12 >> << /R (0J0b) /C 12 >> << /R (0d0) /C 12 >> << /R (00) /C 12 >> << /R (00) /C 12 >> << /R (00) /C 12 >> << /R () /C 13 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (2 2C) /C 14 >> << /R (22) /C 14 >> << /R (22) /C 14 >> << /R (33W) /C 14 >> << /R (3q3v) /C 14 >> << /R (33) /C 14 >> << /R (N) /C 14 >> << /R (09) /C 15 >> << /R (!~) /C 16 >> << /R () /C 16 >> << /R (  ) /C 16 >> << /R (  ) /C 16 >> ] >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /MojiKumiTableSet << /Resources [ << /Resource << /Name (Photoshop6MojiKumiSet4) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 17 ] /Data << /B << /R [ .25 .25 .25 ] >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 17 /Elements [ << /P [ 17 1 ] /Data << /A << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 18 /Elements [ << /P [ 18 1 ] /Data << /A << /R [ .5 .5 .5 ] >> >> >> ] >> ] >> >> /PredefinedTag 2 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet3) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 4 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet2) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 3 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet1) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 1 >> >> >> << /Resource << /Name (YakumonoHankaku) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 1 >> >> >> << /Resource << /Name (GyomatsuYakumonoHankaku) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 3 >> >> >> << /Resource << /Name (GyomatsuYakumonoZenkaku) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 4 >> >> >> << /Resource << /Name (YakumonoZenkaku) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 17 ] /Data << /B << /R [ .25 .25 .25 ] >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 17 /Elements [ << /P [ 17 1 ] /Data << /A << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 18 /Elements [ << /P [ 18 1 ] /Data << /A << /R [ .5 .5 .5 ] >> >> >> ] >> ] >> >> /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> << /Resource 5 >> << /Resource 6 >> << /Resource 7 >> ] >> /KinsokuSet << /Resources [ << /Resource << /Name (None) /Data << /NoStart () /NoEnd () /Keep () /Hanging () /PredefinedTag 0 >> >> >> << /Resource << /Name (PhotoshopKinsokuHard) /Data << /NoStart (!\),.:;?]}    0!! 0000 0 0 0000A0C0E0G0I0c000000000000000000000000 =]) /NoEnd (\([{  00 0 0000 ;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 1 >> >> >> << /Resource << /Name (PhotoshopKinsokuSoft) /Data << /NoStart (  0000 0 0 00000000 =]) /NoEnd (  00 0 000;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 2 >> >> >> << /Resource << /Name (Hard) /Data << /NoStart (!\),.:;?]}    0!! 0000 0 0 0000A0C0E0G0I0c000000000000000000000000 =]) /NoEnd (\([{  00 0 0000 ;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 1 >> >> >> << /Resource << /Name (Soft) /Data << /NoStart (  0000 0 0 00000000 =]) /NoEnd (  00 0 000;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> ] >> /StyleSheetSet << /Resources [ << /Resource << /Name (Normal RGB) /Features << /Font 4 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /ParagraphSheetSet << /Resources [ << /Resource << /Name (Normal RGB) /Features << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /KurikaeshiMojiShori false /Kinsoku /nil /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /TextFrameSet << /Resources [ << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> ] >> >> /DocumentObjects << /DocumentSettings << /HiddenGlyphFont << /AlternateGlyphFont 1 /WhitespaceCharacterMapping [ << /WhitespaceCharacter ( ) /AlternateCharacter (1) >> << /WhitespaceCharacter ( ) /AlternateCharacter (6) >> << /WhitespaceCharacter ( ) /AlternateCharacter (0) >> << /WhitespaceCharacter ( \)) /AlternateCharacter (5) >> << /WhitespaceCharacter () /AlternateCharacter (5) >> << /WhitespaceCharacter (0) /AlternateCharacter (1) >> << /WhitespaceCharacter () /AlternateCharacter (3) >> ] >> /NormalStyleSheet 0 /NormalParagraphSheet 0 /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 /UseSmartQuotes true /SmartQuoteSets [ << /Language 0 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 1 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 2 /OpenDoubleQuote (0 ) /CloseDoubleQuote (0 ) >> << /Language 3 /OpenDoubleQuote (0 ) /CloseDoubleQuote (0 ) >> << /Language 4 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) >> << /Language 5 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) >> << /Language 6 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) >> << /Language 7 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 8 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 9 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 12 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 13 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 14 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 15 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 16 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 18 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) >> << /Language 22 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) >> << /Language 23 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) >> << /Language 25 /OpenDoubleQuote (0 ) /CloseDoubleQuote (0 ) >> << /Language 28 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 29 /OpenDoubleQuote (0) /CloseDoubleQuote (0) >> << /Language 30 /OpenDoubleQuote (0 ) /CloseDoubleQuote (0 ) >> ] >> /TextObjects [ << /Model << /Text (http://kinemage.biochem.duke.edu The Richardson lab at Duke University ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /Hanging false /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /EveryLineComposer false >> /Parent 0 >> >> /Length 33 >> << /RunData << /ParagraphSheet << /Name () /Features << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /Hanging false /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /EveryLineComposer false >> /Parent 0 >> >> /Length 38 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 3 /FontSize 24.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /Ligatures true /DiscretionaryLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .18433 .27841 .60388 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst false /LineWidth 1.0 >> >> >> /Length 71 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 71 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 71 >> ] >> /StorySheet << /AntiAlias 1 /UseFractionalGlyphWidths true >> >> /View << /Frames [ << /Resource 1 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 33 >> << /RunData << /LineCount 1 >> /Length 38 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 1 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 0.0 /EMHeight 0.0 /DHeight 0.0 /SelectionAscent -20.00391 /SelectionDescent 6.0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -20.00391 0.0 6.0 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 33 >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ -176.83008 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -20.00391 353.66016 6.0 ] /Glyphs [ 42 54 54 50 85 102 102 45 43 48 39 47 35 41 39 84 36 43 49 37 42 39 47 84 38 55 45 39 84 39 38 55 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 33 ] >> /VisualBounds [ -176.83008 -20.00391 176.83008 6.0 ] /RenderedBounds [ -176.83008 -20.00391 176.83008 6.0 ] /Invalidation [ -176.83008 -20.00391 188.34998 6.0 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 3 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 >> ] /RunLengths [ 33 ] >> /EndsInCR true /SelectionAscent -20.00391 /SelectionDescent 6.0 >> ] >> ] >> << /StreamTag /LineStrike /Baseline 28.8 /Leading 0.0 /EMHeight 0.0 /DHeight 0.0 /SelectionAscent -20.00391 /SelectionDescent 6.0 /Transform << /Origin [ 0.0 28.8 ] >> /Bounds [ 0.0 -20.00391 0.0 6.0 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 38 >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ -188.16797 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -20.00391 376.33594 6.0 ] /Glyphs [ 24 42 39 3 22 43 37 42 35 52 38 53 49 48 3 46 35 36 3 35 54 3 8 55 45 39 3 25 48 43 56 39 52 53 43 54 59 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 38 ] >> /VisualBounds [ -188.16797 8.79609 188.24121 34.8 ] /RenderedBounds [ -188.16797 8.79609 188.24121 34.8 ] /Invalidation [ -188.16797 8.79609 199.68787 34.8 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 3 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 >> ] /RunLengths [ 38 ] >> /EndsInCR true /SelectionAscent -20.00391 /SelectionDescent 6.0 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> << /Model << /Text (Copyright 2002 - 2009 Ian W. Davis & Vincent B. Chen ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /Hanging false /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /EveryLineComposer false >> /Parent 0 >> >> /Length 22 >> << /RunData << /ParagraphSheet << /Name () /Features << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /Hanging false /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /EveryLineComposer false >> /Parent 0 >> >> /Length 31 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 0 /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /Ligatures true /DiscretionaryLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .39996 .36078 .05884 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst false /LineWidth 1.0 >> >> >> /Length 53 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 53 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 53 >> ] >> /StorySheet << /AntiAlias 1 /UseFractionalGlyphWidths true >> >> /View << /Frames [ << /Resource 2 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 22 >> << /RunData << /LineCount 1 >> /Length 31 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 2 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 0.0 /EMHeight 0.0 /DHeight 0.0 /SelectionAscent -15.88623 /SelectionDescent 6.13477 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -15.88623 0.0 6.13477 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 22 >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ -91.05908 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -15.88623 182.11816 6.13477 ] /Glyphs [ 677 721 722 731 724 715 713 714 726 3 660 658 658 660 3 656 3 660 658 658 667 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 22 ] >> /VisualBounds [ -91.05908 -15.88623 93.97705 6.13477 ] /RenderedBounds [ -91.05908 -15.88623 93.97705 6.13477 ] /Invalidation [ -91.05908 -15.88623 100.11182 6.13477 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 0 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 >> ] /RunLengths [ 22 ] >> /EndsInCR true /SelectionAscent -15.88623 /SelectionDescent 6.13477 >> ] >> ] >> << /StreamTag /LineStrike /Baseline 21.6 /Leading 0.0 /EMHeight 0.0 /DHeight 0.0 /SelectionAscent -15.88623 /SelectionDescent 6.13477 /Transform << /Origin [ 0.0 21.6 ] >> /Bounds [ 0.0 -15.88623 0.0 6.13477 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 31 >> /FirstCharacterIndexInSegment 22 /Transform << /Origin [ -127.51611 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -15.88623 255.03223 6.13477 ] /Glyphs [ 683 707 720 3 697 654 3 678 707 728 715 725 3 648 3 696 715 720 709 711 720 726 3 676 654 3 677 714 711 720 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 31 ] >> /VisualBounds [ -127.51611 5.71377 129.88916 27.73477 ] /RenderedBounds [ -127.51611 5.71377 129.88916 27.73477 ] /Invalidation [ -127.51611 5.71377 136.56885 27.73477 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 0 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 >> ] /RunLengths [ 31 ] >> /EndsInCR true /SelectionAscent -15.88623 /SelectionDescent 6.13477 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> << /Model << /Text (KiNG ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /Hanging false /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /EveryLineComposer false >> /Parent 0 >> >> /Length 5 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 2 /FontSize 150.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /Ligatures true /DiscretionaryLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .85883 .77646 .12155 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst false /LineWidth 1.0 >> >> >> /Length 5 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 5 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 5 >> ] >> /StorySheet << /AntiAlias 1 /UseFractionalGlyphWidths true >> >> /View << /Frames [ << /Resource 0 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 5 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 0.0 /EMHeight 0.0 /DHeight 0.0 /SelectionAscent -126.37482 /SelectionDescent 40.20081 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -126.37482 0.0 40.20081 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 5 >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ -183.3744 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -126.37482 366.74881 40.20081 ] /Glyphs [ 50 80 53 46 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 5 ] >> /VisualBounds [ -183.3744 -126.37482 183.3744 40.20081 ] /RenderedBounds [ -183.3744 -126.37482 183.3744 40.20081 ] /Invalidation [ -183.3744 -126.37482 255.37376 40.20081 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 2 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 >> ] /RunLengths [ 5 ] >> /EndsInCR true /SelectionAscent -126.37482 /SelectionDescent 40.20081 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> ] /OriginalNormalStyleFeatures << /Font 4 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] >> /OriginalNormalParagraphFeatures << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /KurikaeshiMojiShori false /Kinsoku /nil /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> >> >>8BIMFMsk 2))S>?<LEACBBCFC?663540..-3779:9988F@>@B@?=A??><;77534;>::BI@DCDDBBBFHGHFHIHHHHCCC=>@@?=<<==@@@A>@B?DI@=?@@!<fraSP!Y_cWTCDDE=  -GB%#%#S_ZZ E/!*B6))S>?<LEACBBCFC?663540..-3779:9988F@>@B@?=A??><;77534;>::BI@DCDDBBBFHGHFHIHHHHCCC=>@@?=<<==@@@A>@B?DI@=?@@!<fraSP!Y_cWTCDDE=  -GB%#%#S_ZZ E/!*B6))S>?<LEACBBCFC?663540..-3779:9988F@>@B@?=A??><;77534;>::BI@DCDDBBBFHGHFHIHHHHCCC=>@@?=<<==@@@A>@B?DI@=?@@!<fraSP!Y_cWTCDDE=  -GB%#%#S_ZZ E/!*B6|`|)7n|nn`77{R))R{ͤ{`7R{mD6Rm)RmD6m{){m6R{6)_{Dm6)R{D6D_l6))6)_l6)zDQ6l6  ly llC66QlQ^( kkkkk6(^k 5kkkkCP  Pk5]jjPjjx5Oj](jOjOO jO55O iBi i i5(OO(i(B(wAuNh'4h4NA' 'A'h4hN 'Agg'g 4gN 'g 3gMMM&f 3@MM& f33&LrL e3LʘdK d}2 ?dKdK dK%p%c%| cK2Wc%|cJ b%{b%oI%zbn%ba0 yaa$$ `0 x``$ 0``0 x``$  _/ w__$ /_^/ G^^Gv ]/ F]]Fuuu].F]FFt]Q:\.sE\.Qs\[.rEr[[~[[.rE["g[-rD[[-rD[f9Z-pZ8Z-pCOZ-ppZ-Z-|"-Y,ooY,Y, !,CYX!nnXX, !,n,W mAW+ + 6 l+V+  ++ k+V+  +* *U*  @U*  *~T* ~~TT* *~T**i~i*) |S)>h||))=fR)=f{(GQQ(==y(3 oQQ([=y(PP(d<x' OO'c1v'~ NN'auu'WjMM'~tt &:`MM  }ss&9BL_ { rr%88Kp% z pp%T%Jo%y oo%\In%w nnwn\InwI$vIm$mmmI$ uu Hl$$Zll~$H$t5k$5YP}k$G#Xr#i#5XFi5rF#4Wh#q#4EEEEh+"E4g""M4EE_g""U3f""U3D"of"*nf""U3Df"C!u}d!!\*C}S!B!{kc!!k{Bc:B!A!)jb!!jzAARA!@ 0X`  hx@ p@ @ PP`  xx@@ ?}^}7^}}}v}v?}^}7?}}?}f}/^}}}v}f?}7}f?}}>{t{]{{{6'{d>{{>{{=zzs\zz.z=.zd=zdz==zzhn7n7nnQl6XlXll6lQ"l_lf6llQk6ekJkk6kQ(kkQ6kkPj5jCjj5jP/j5jC5jjVi5.i5ii5iOBiOi.5ii hNAh'hh4hNAh[h'4hhfMSfff3fMSf`f:3ffeLYe_ee3eLRe_e?3eedK^d^ ddEdR^d&dR 2dddK&dRddK&d^d^d^2dd cQ2cQccK2cc]cD2cca=a=aaI1a%a Oa[+1aa`N`<``H0`*`<`T$B``_Y_*__YH_<_Y_S**S__^X^#^^G^;^ A^;;X^^^^/^^G^ M^S^X;# )AX^^/]#]X/]] ]L]#R]R@//:F]]X.\:\W .\\\W\#Q\EW\W:.[?[J9[[[V[?[J3-ZIZIDZZ-Z"Z(IZI8" -YTY=CYY-'Y''Y"8TYN=-  8Y"8IYTC8-=XX,7BHXHB2, =fK6Xf_0Xf66fX6fKKf=KfK)_ff_)XfXRR""R6=fK)D0f0_=_60_=_K)RXK""_DKRRRf00f"_RR_DXKfDX0X)f_)X=f)0fff)K==X=__6f)Kf0fX6f0)f6_f0f=RRDf""f_6DK0f=KD) 0)DK6"0 0"0==))0KK0)0KK6KK)=f=06_f)X66X)ff0"fR==R"ff"f00fDK=f=0=f= ffD06__f'f"0f0fK6KKRD"RfD)K_X=0Kf0)RfRK)_=fKKKf0fKXf00f0ff0_=0fK)f))f)f0f0X60_0f=K 6_f"KRKXf=_fKKKf_6)f"f00f0ff0=_6fKRRKf0DR0_R60fKKf0KK0ffD_fKKKf"_=_fD0f)f00f0f f0_X)"=ffDXf00ff00ff)f0fKDXf0KK0ffXXfKKKf6f6K_)f00f0f f0=_fX0RR0ff00ff00f=D0X0fK f==_KK0ff"_Df)_60X0fD_"RRK=DRff"_Df0X=DXf0=XfR00fKKfDK0fff=X6f))f6XD_XR=RR=f""ff)K_0=_f=f0X=X6f0fKRDK0ffXD6X)ff)X=)f=X"ff)R==XD__X""RR_RR_fR=f0fD0fKRfK60K0ff0f0 _=_6 6_"=_DR_=RRR"f00f")=f)Kf=XfRfR_ff_)f)0fK _0=Kff6KK0fDffKfKXf66fXKfffKfK)_ff_)fX"f00_X)0f)f0X0f"f0f0"D_ __)0X_f0ffKDfR=KK)K66KD0Kf=K)0K)KD)=fKK)fXK0f"f6KX00=_f6XK=_0f)XRXDXK0f0DfR RR""R6f0f=_Kf6f"K0f0f6f06ff)K0f0f"DXf0f)ffDR0fKDf_6f)f)0fK0ff0f)f0 f)DK=00KK0 f)ff=XKf0"=KD)0 006KK6=_RRXDRD 0)"6KD")DKD)=KD0=K=0XX000ff00ff0"=KD0KK000KK0 f__=0Kf0fXD0=f6 X=0K_"X=KXDKfD0=f0f""ff0_X00X__KXD6_f) f0K_X=0Kf"=f=0Df0)f=0Kf)fXX60X_K__KK0fKRDKf_R60XfRX06_R0fXD0=f6f0XD0fD_ =RK0K6f)KK"=_R= =Rf00fRfKf"0ff0KR_D)f)"_6D_f=f0KK0fKKRf6Kf6_=0_f00fD_fK0f0f 0ff0RfKK0f0_ X0f0)f)_0f0_=DDf0KKKKR"f"ff0f0KK0f0Df6Kf0KR=RK0f0ff0=K_K0f0f fff0XKX=)6KXffff0DfX6 X=)f)"f)=Xf)f0KKKf00fKRff0f0KK0f_6DXf0KfXK_K0f0f f)_0KK0f0f_06Kf"KDK f0_=0fK60Rf0=_fKf0f)RK"f)ff0KKKf00ff0f0KK0f=_0ff0Kf=0f0fffK0f0fDR0K6_0K=f_00f)XR0f0)f=f"=fK__0=Df0KKKXD)ff0f0KK0f0ff0f0KX=0f0ff0fK0f0f0_f0_fK0f6f0ff"ff0KfKXf6DR_)f0KKK=ff0f0f0KK0fKXK_0f0K=_0f0f f0f"=_K0f0fff"f_0DKR0Kf=f60XfD_D f00_))f0 DfK"0KfXf))fff0KKK_RDK6f)0ff0f0D_0f)Kf"0D _X""RRf0K _KRK0f0ffRff_"0fK0f0f_KfDXfKf_D=f0fR")f)f0=f66fRRf)fDf0KKKXfK6f_"f0f0_ff0f_DXfKf=f0KXfD0f0f/ &,/ /"/"/"/ /"/"/ / &,/ "/""/ /"/"/ . ."." + ". .". .".". . ."."((. .". .".". .  .%  .%    "+ .          ."   .    ."  ."     .  .(.+...(."." +". ..".(." %.( ."+.( (.+. (.". %.( .".+."+. "." .(.+ %.( ."+.( (.+.+.".  .." +% %.(  %.(  (.". ."". -*!--!-! -*--!''- - -!---'*''-*$*''$*-$ -'*-- '*''- $--! -! -'**!-*!-'*''-*$*''$*-'-!-  - -! *$'*'''*'' '*-- -!!----!-!-$*!* - --!--! -- -- --- - -$- -- - --!- -! ---- -- -- --!--!-  - -!'$ --  -- -$- -!!-, , , , ,, ) , ,, , , , ,,#,  ,, ,, , ,,# ,, , ,, , , , ,,#,  ,)#, ,  ,, #), ,, ,,, ,  ,, , , , , , )#,#,, , , ,,, ,  ,  , , , ,,, , , , ,, , , ,,, ,  ,, , ,  ,,)&) ,,,,, , ,  ,+ + + + + +  + +("+ + + +" + +  ++"%+ + + +" + + + + ++ + + +" + +  ++ + +  ++%++" +" + + +  ++ + + + + + ("+ ++ + + ++ +  +%% + + + ++ + + + ++ + + ++ +  ++ + +  ++ + +++ + +  +* *******'"* *** ** **  ***** * *$ ***"'** * ** **  *"'** * *"'* * ** *"** **"**"**$' ** *** *****  *'$**'* ** * ******* ***** * **** *''* * ***$* $$**) )) )) ))& ))&!) ))) )) !)))  )) &&) &) ) !)))&$ &&))$ ) ) &) )) !)))  )) )$ $)&$ &))&&) !))) !)) &) ) $&)) )))$))$)$))!)&!) ))) )!)& ))  )!))$))$) !)& ))!))&) &)!)!) )!)& ))  )) ))))&)) )!!)& )!)& $))$) $))!)(  (( ( ##( ' $ '''  $'"'  ! ! !!!!! !! ! !!!!                                                                                                                                                                                                                                                                                 pW p%2cpccW22oJŹ%%JooW1Job=1Jb{%Jb=1bo%o {b1Jo1%Vo= b1%Jo= 1={Vb1%% 1%{V b1 %n= I1a1  anz aa=11IaIU$y aayaaa0$Ua 0yyaaaa=I  Ia0Tx``H``l0H`T$`H`HH `H00H _<_ _ _/$GG$_$;$k;jG^#/^/G;# #;#^/^F #:]]#] /]F uu#] /]FuFFt#] .:FtF#s \s.."sEgE [r.~E[D [r- 9[DZD ZD"f"Z"p ZC-OY"pYC Y!oY!dyB!nXc!XX, nXX!! W, mWW! ,WV+ lVV   V+ kVV  +VU+ @UU@k T* ?TT?i~iiT*?T??i~TI4S*h>S*Ih}SS)h>||hSSr|SS)h>|S]R)g>{RR)g>{R]3Q)fQz3Q)f=zGQ)ffQ)Q)pz)zP(ddP(P( x(<POccOO( w(c(O c;O' v' 1 ~a'N' ~ u'' ~a'~N'~ u'u& }s&sM&} s:M&|| &rL&rrLL&{ &rL&&_r_&% pK%8]pp%%8]J%8]oy%@II%77n$- dII$R7m$HH$Z6l$t GG$Y-k#s GG#Xjj#N`FF#qii #4WEE  qhh"4<EV p gg"33Df"wnff"L"Ce"~mee!S|Bc!|lcclcSBclB!k{Bc!{cccB!jjAb!!Rbbr!A xh0` 0PHp` @ Ph ` 0P@`0h@}/}N^}}f}/}??}?}?^}}'|>|/]|||F|/>|>|V]||{M{.]{{{M{.>{{d]{{&zdzs\zzzMz.=zz\zzNSN4)R9RC3RRRMR9RC.)RCRC>RR)RR$CRC3 )QLQ8=QQ)$Q$$Q3LQG8)  3Q3BQL=3)7PP(25B5B(B0BB0B,(BB0BB(0 B0BBB,(BB0 B0B00B0BBBB0B,(BB0BBB0B0BBB>9> B,(BB,(BBBB00BAA0A0A0AA+ A A'=4A0AA0A40A0AAA4'8A0AAA40A0 A0A00A0AAAA0A40A0AAA0A0AAA8+AA40A40AAA00AAA0A0A0AA=4A A+A0AA0AA0AA88A0AAAA0 A0A00A0AAAA0AA0AAA0A0AAA0+A AAAAA00A@@/@/@@/@@&@ <3@@&@/@@/@ @/@@@/@/@+@@ @7 @&@/+@3<@@@@/@ @/@@3< @/@@ @/3< @ @ @+@@/3@??.?2 ??2 ??*7; * ? ??&?.??. ?&??.??;7 ?. ?&;? ?&? ? ??.??* ?&???. ?&??.? ?&??.?&? ?.;; ?& ? ?&??&7?77????..?*?.?*??;&*??.;2? &??.??..?"2??.???&";;..?".;?.?"2??.?;7;;?.?7.? .?";*??..?"2??.????7"7?.;7&;??. ;;.?"2??..?"2?.?&.;??&7;?>>- )>>6 )>>6>%6>>2>-:2> ->>->>-!2>:)>->>2>->-%6>>6>!2>:)>->-2>>:%>-):>-!2>2>>-!2>:)>->>>->) >- )>>:%>>->2!2>:)>-!2>:) %6>>6>6>>2->=-)= =<44,<;7+;#/;:+6:'2:+ '##+2 2 2(2%2%2%2 2%2/! 2 2%2%2%2%$.1$ 1 1**1$1$1$1 1$1.11 1$1$$$#00 0#*00#0#0 0#0 0 &00 0#0#0 "// /"/ /"/"/ /"/ / // /"/"/ "..  .".  ."    ."    .  ."  . .  .  .   ." ."         .   !--'-* $-' -!- -!*-*-!-! - -!$'!'--*-! '-' !-'-!-*- '-' -!-*--- -!-!!-- -*--!-!-'-!-!''- $-' -!$'!'- '-'-!---!- -*!-'*''-!--!-- -- -' -$ -- !'-'-!$* !-!-'*--$ ** - $-*'- $--$ -- - -!-!!-- ----! -!----!- -'*''-!'$* !--!- -- ,,, ,, , , , ,,,,, , ,,, ,, ,  , , ,,, , , , ,,,, ,, , , ,  ,, , ,) , , ,, , ,)# ,, ,,,,  , , ))# ++ + + +++ (" + + + + ("+ +% + ++ + + + +"++ + + + +  ++ +(+ "+ + + + + %" ++ ++ +%+ + + +** ****$''****  ***** * *** * * ** ** * ****"**'$**** **********  ** )) ))!))!)))) )!$))))) ) ))) ) &&!&) )))!$)) ) ))))&!)&))) )))$!)!)))) $!))) )))!))))) $$ ))))) ) ))) ) )) ))$ )) )  )))) ))!))) )) $!)))))) )&(( (( (((###(( ((( %( (( ((( ( ( ( (#(( (( (( ( ( (( (#(( (( (( ((( ( ((( ((((( (( (((((((( %#(((((  (% ((( ( (( (((%# (( (( #%##(( ( (( (((( ((( ( (((  ( (( ( ('' '' '''' ' ''' ' $$' '" "'' "'' $"'' ' $" $' '$" $$' $$ ' $''''  "$'' ' ' ' '$ '$' ''"'' ''' "' ' ' $'$&& &&# &&& #&&#&& & && &&&# &!&& & #&&!& & &&#& &!&&& !&& && & #& &#& &&&&&# &&# &!&&&&&%% $  $                                                                                                                                                                                                                                                                                                                                                                                                                                   '                                                                                                                                                                                                                                                                                                                                                                                  H){H3 H)qqqH)qqH)G)Gz 3G)pRppRG)ppG)G)oo)o[G)oG)ooG)F(oo FF F(oF(ooF(F((((x((x(( (( (Pn(F( (((( (( ( ((((((((( ( n (((( ( F((( ( ((((((n(  (n( ( ( ((F(((FFFFFFFm m(mOF( Y<mFFm wm<(2OOmO(wmO<mFY mmFFFwm<(2O#aX#>#=#=q  q=_4=#<"x"E_Mg;"]D"wDU;;DnD2\!SK22K\C!k2kkV2kNkNkN2kkN2kdG2kkNkNkNkNNcjN1jj\1\j9N9jNjN1jjN1j@1@cj11jjNjNN9N9Lh1hhLZhhLhL1hhL1h1hSh1hhLhL1hKf0ffK6ffKfK0ffK0f0f)f)0ffKfK0fId/ddI/ddI !//dI   /d dIU(UU>>U-"DU U>>UU>UD(9UU>(U(U3-OO>U>UJ"-JU>9U-(JU 3U3-OJU>(U(UOJ"">OUUOJ((OO(U3 -OO>UD"O3(U3(9UU((U3(JOU(U3U(UD"-U3UO>( -DUO(UU>U>J>U(>U-"DU U>9U-(JU U>UD"O3(UDO=S'SS=,BSM7S==SS=7MSSM2S='S'BS=S=S==S7S=2BSM7'BSH2 S='S'S2MSSH2,SS=BSSM2 'BS=S='HSS2'S7'HSSB=S'S=S!7MSB'2=SM=, 'SS=S=,SS ,BSM7S=2BSM7S='HSS2 SS2&R!6Q P; ?ONDking-2.21.120420/king/work/kingicon32.png0000644000000000000000000000350511531212636016204 0ustar rootrootPNG  IHDR szzgAMA|Q cHRMz%u0`:oIDATxbd``0 rw@ h!!4@c<@ >b#9)p1j0|}ݧ 01<}hq103hkk2h+33J3|a2I2<{E/'CXCqy͋~p0C+`5Dl iI q ,~{ *tS B| 6ƒ Vs8@Mo2ßߺ`ll8:][&O>3Π(Y3KO_3L_A^F. 2psq0>apL4XP\pPÿVxɰjmp~3iO o3Wamlgd!1,t/ l `x8&M!3pðWK.5iii1@ý'_`P9ߎ38a+ !A 쬿]+ÜU22hj3{qǏ `pw2e(bb#Û|°u}`fcx 3Wn`gPPRcxL ~`04b8?ߞ0,X{aӞ{-\p9u5 2<{xATO_Ο1,aD[gX da&z _?f`f}3)0q$A p㎏ҁ |  ߞ`8} 0c "2RTfбd:(wpcnK%8M@$9@EE b `vgv)ógOBY6 HrXI8a _cQdر$CZ>% h0Mwpc W`BpSW3l;H [wefp4&\Bq$CUCl*Ze30bxpa6 Êm_} [3_\mp=r{m%"\ ":eh1Df͘` Xs3ܺX\&/`( Gd; `Cg#6o? #AIARs _0\r_D dd0c{-` a(Hg`uOҖ-˳ _0\a'e&CKU$ '[1$fûG~Za`1ȉ p? b" X~^a&0ſ`hpXO 3Ӏ,?BQ'^|0Mw?C B8(!eT9&&f6/_3\ f T=6P!MA_ GN`X.õ;`B , 3󗼎7=?b: @ h@S].IENDB`king-2.21.120420/king/work/kingicon-orig.png0000644000000000000000000003613311531212636017000 0ustar rootrootPNG  IHDRppK pHYs  gAMA|Q cHRMz%u0`:o_F;IDATxb?@YYYULLL ?~d+w21110222ҁ"77 W^',,֭ Fb"h*;;"Т.\``ā"p@aŰeF? k޿7UTTԀŵ̙3 E ,G#CҲrr޽{K!@a@555U!!!ii]ׯG߿9GOr |ӫF"G(ҥKl ,`HJ9 p/X#F(8FD$8 O>*((#,@L~ji"Grh l bdv+&ia ,Sn޼ *MPr("#nDʅAlb}bRt<x: l0"G";9bvA\q"VAְVDDDǏzV `E"rg[| 4ㄕE@P z @uNX†F[Bf`U/`Ii @L߿G!bu d1 ǏX;ԕCD1IP qi*1cAJM?ƪŽK9x/'3y?yh zG 17eM XBDpx4\P У`7R'"?Pc:0I T3Uli6%H SXNuIr%ȥbsEV W2˨q ,!1nX߃T]cxnqwx`e5}Fw0Qu&t{X8a?fL*uįO9sWA$ UD X,U#Y4Df33 NXj0d9G*9P(ƽz [FF+Gr8Y"Rٶ0Z0f=.`KK"_c#WlGHta o%掂0Md5>H<`ee+x[!,$)B!𕨛XYv L1cж2ɾobJQ|rIPׂ't~\,nɘ(ZCQa 7/D{M965W+pЧQZXϘdน3p S8pL;-w2&&Ũi@,'#[\, ?0DE0`Menn.+y: 3[3\=!Ï _dx7h@nlBo J ^^ e Bb@y`g&_nQa)mY_2X9/ndرs3&Áρz>e>Rvv1!`ɠ*`l ,=CY8@A"_bd3Wa`bxauh"Ľ֙d HAܚO͋` RRz.l:~(ҏzNhX}1S|D햹#f,9Uő`8nGZL`ތxijJ@,tE\AZG,Q{_I2Ig1u[ybsSI sTi[.=ۗX$.  A F. B ~GhbfeX6e) >دlY`;3^ dvbgR+ ) Zn?Ͽ8vopbm9` E%$ .89dd``ax$×o*Sa>19+.^q/oe L?v/ Agv? jJ Y F<6.=,aL@sI~g}ԛg`8~)[> n t>`V/HǀNA!`;;#Ard*,mu@A ts=wp ,Iv10}pR{OA!`$}'+V1H'oh1a'o1\}`` ^]Ypd:r4F `e3X@Cl e8)ؕfb8eX00<{o }`x-۟ 13MP֣`,& w`9_ >a9y"b#\z O@D 1X1+3|:5{ #ç/xu$oO@?vOxp]節 h y JbRl&gx#062$2HMe`{Wp" c 4 {_ynpKI v̛DՓ?8` !!i$1U~1O>3~A\" ~-_`5qK0<{ď M# АX126[n0GgeA Y-g@σJ0 fx 4jl[jD( ذ;?~v+9Ll4U| X,Ұ#d|?<[F`b+ ,7/`}l2|Rρ*|d /` X .[X1WAfx,b~IR@,A} и 9ok_ E&Ш/ nePW$}!9>xp]/>1| `30s'~c6f: J< L, FE 8nPs?70222XWY s4 n3vK>`/åk._{[w*j?ց_^`iT'u\ h?}& 9뇿/^2;;oǐh)2s`.@7Ex#3;O i qSG/_cD (p; i) :V 23VG:48A~9GNK71pֽb701v̀m!!bMcbad` $H od|ǃ~ l 7. $PF%`n`1'w_~t!H䁊M9I`tw  l~cXA_=a4>'ÃNpXbưuy 0  o}f8v !e`>bEvD~10H ~zq¾6x?÷'z0HA\F[EӇꐋ]O\xf3|<+Zl4TxbR4 Á/;]ˠ*AR\"4 Ù+/pG`ߔr"jld *) prw;\[`wOw;؛};14{sX ҄?Bt/`]'OVlsCtbu ]a`xpd l~4, ߰l5O~ u {:x~ qà + ɀ<+/1XsHG3^df}xן8Ft 3R ҒzxcOO320F!,@ >},6MsI%]pd] /lc1d&p#pO?&@ X[|YM1 ַW,u&F,(gz;pQ50ư23sV;mUd|/<\%UlLl V20g d`]_?? |;tÅ_hDP.? I22\ˊϏ7|_6.7qAqY#>M`vXh?OHýb Tfocց 1r0[P ANXB2ܸs o6 B2H0OsO߷{I@9 \b`sH2⏋X C0~@A  52Ȑ?_Hw,`Ud2H?cPRTf ʭ cv#ç rZj Z*xXXૼ>Űif +Wo+@ l;3|Oc ,l$* xyX!cl^;0r3<}3fI & ma .JAT|d{407XC"Tױ22v 53Π=gX=7BïoWYf 0p2|<g dU6@v_x ,-D&&Nx"7`5Gk5) J!=v_ N1ywAYX\#ikw!sP.LzE@svl \NÝ+[Mf5b4|ܩ ?6amҠYv;L0py箾e8HMd@ԋ@FH+Q`d`ֽw 7k1|pQ VPS@XAZ\!h2&\ߟ__g4KO'aa.^g<貋ps`<0@Q-A7P &`@ൗ3F2<{7 oO o٠lо: >Ay6@ f`P,xՃ AX o䤴-_FhЫ f8z.N  *fo:/ЙF$Вo?AFa-[h'ܗǁEOip}Zijr202Ճ8DE&xO!0Vft9ÑW8jރ_@^Ω0"]c'IfL cwf10y@XX8.;Ȑ߳ [?f9 '?A??΁1v , 5`@۳@fdٽkགྷl,L"ѓ ~ѽHeSmK3ݿ ".v."`ϠZ ٓ8T!A5h<M\AHB E OЪ71i=c73Loucxu~f "'}TFp] *I;!{e"{vV}n`g?3 K0z08 A @׏[_a`?Nv݃`},̠+V Î:A`=?`q0r@.Ndd9AGi2 >e2(g'+xhve y!~6IyK`Qʂ6^Cklh9G?^**Jcdx7ǀR?ouLdc̃;hp@/Pdb&jXq:nn/G  t`seĄn!ןL |`x ( ÿ_o8ؙL 5@'p0Hh@PI0AbG4`0pmfdbKBo ?50l bL=~Af_pY?.1pI߿ߟ2+3ؘ2K3\@:Y#% 2N <|5[9 B r\[2|H 0g3޾Z4# >;0΅4s"Ȩ{[|(Yx898+@cwbx_h.AA\&s56.i`lмff035vAf:i.GhI1B OGv$EXX/'-?t~^C`TS98` wn]֕??hBs4s!@ u,! >yܪʱ3Ëp?o10 - OY._)v1n`-q`lfɠPlE)@ Y$,u=񋛀w"i?7 _f/͇?~d/_1G/.?c6iP3(zˠ`e* s1 =@ mbv!4x$x?Ï$GLO6/04;7X2h؀׿G??v3` c|`| -__vG=fx?l/$$mTd`4(# ҒT`S n " )[P? _|f}-{??>IQ`^V<  ~Je [`0k!!@.>`i .Xb|; x𵦠_< b#x 4&;^^6ˠڴ)#Չ?m3_34V&,ed`c}C*-%ԕyQ7o^cwHWۗ-d)Wo=ax|pؠ to`Vaa ^vQ$ JEۙLi0!@ Xř5xE6 z  A>`Z,^zi1._Z# Fg~E!? NdA#TWAG|f >fl^60S&zqASSs1ffD͋{ oLa`޿p]~2łw'}ԅ7et7Fp[ॉM? Wnewm70A} тyH2(H221ϣȢ V߿{w1ava~H?MЂ^V$9+au' I"  xp>cdPT`xF'6^19p;'n`e >A` ؐ b|?"?}cfx_U` g&6`W'@p%\4hs@@i`$20# F cfd`!h%Cû^#ec ta_r"$1[uR3K1ߵAA-(t@ƂGtc{/0<}<O(ߗsXBTCO=% |^(ebx ;?2s+ x)/g@n/`ꆠ58`TcgPQcSbWeg o BW`@b!`aa`F<0$0hBЁ>\"@O3yAA៥1}~r~ CNbϠ ƐĠo / Obt&#lmn{#á#gKjPn0С<32\*=>WvU>~>˰w_Fዠe3*0p- & 0efdPSe8|3ǿ'$@'?[VbX\z" O``". 9oQ`95+߼zAcC- || " lmįs@M*:@ǑTA5922}x۠ObX65Bxtû 3v>pp㆔z>. ^ ÇW uAE槏8nݾyAL?=n+ }w'DMmSiii5 mv .w1~z t–w:"Aءf4# ~@QVn)Tr3fPSP#`w ū/?g6Au >YŒ+A,i3|gS>94f :+MCRMWO RSA`޾{pL^fV`wI1L <" Ol:d`d\tRO17S`ael ** >+ wą1sӓV0b05g1 b& Hϛ_@ 3 &^_+[v=ϰd'2CRPu_.eb8v)=A) &vYQ%Y/AE`bpG`K\$[ 8@A%W`7x) x*@wxzar%o 2r _1H<?C |3"X~2|zqm.P7k nb0ȧ 쫽z ` | >g !J4 8xo` 3f3f0c6,>|^j4|p)0.0;z|8 _⁵G@G4> #yFH i\%l T@7 :)Ct&ÛDP X2q+#6` A cД '3   |5P7><b;k' U 2r=yH-:7Ql"12[ϟ?fS`{+ +50h|ax>Re0|p #< `f,#O3˂4a?< !ܷa7@,AHֆAPLA(x700LofP;`e >~@@K@C|jmQ/ÃLXt4dxE47)" 8@;Ŋ˟J?to3ܼ؜*#*ưaQ9{euu 0GB` Ww>1;tu"@pЪ73\Ȱvm3 ʖ]6.qk \expZ&w fXq3|< V|k5Ӂzxx́gUv)W7O1UG@1ud}% < +CKo F rw_?y?eaw1i~{s wa7n)H.aPbOmH5R #3 ?M~+=p7p瓁o!ӠjE\,C$eu٧;]L|~Ob8q9ܚe4V`/3xQ W]G~ 1X&}f͝8z QDD%ABK*5(QQO8:v[nvgwfQ]gˆ:$G?^Qﰓ7կvg((T$jH wkl}-`$cƟigS =|զ׷(.ZM4'$P,7<~ғ@f ]:pnKm,$9AO44 c8E3bKA _v-+@p,KEoz B{ JlGы ̈́Mfٝ- ÉHEAlކi9;zgfX:P{gk77 Lld:RH!=xhB\ V=:jP$9Ӹ y>h::BZ$mE1 қ4pT CvXdMiA,]nbb*'ڌx 8@E*@1qr=6C -D9 "fDk 3͛7`˃$VMpH,>KAq2 xxxAuFDX. bGi-gGh1:d,#tT ؠRP$2#FXE xB?d#:Çӓ'O;0;#E *: w;w [@jjjc!7#q(9;~ɠz8ݿ۷o>$T|"A9r4("2 ~8 xs-&B.Ja8Z`c\!ttug0uPy ,2hjj2CXQ +NG6kqT"O]Cs=(`je0Ç Fcc@6a97m"#+ ں/&5Z~:7778E45HHYyl WPX+*)1?ԾGnE (+ѿ@40y~SNf@@d ((l3A#F!& K]]]P3߿.3DHl<6?8Ç"d@ // l25 BBB;޽;O$N jgL߿+Pw)nݺM @/*$IENDB`king-2.21.120420/king/work/kingicon16.png0000644000000000000000000000133111531212636016201 0ustar rootrootPNG  IHDRagAMA|Q cHRMz%u0`:odIDATxbd``@ &J4@4A\\AHI\PA_KAR t*ʲ  " ** ^cɜG x)k KVb(@(3,Upn1諱2 7+73laW`=B@,?88O a .d|ɰ{qO~3$2|xuԋAӀw<_b@ CFTO0]à1YIY-v` _1\ӗ b lnˠ*Π̇jj b na8z%ϯOc 2jl0n-~. <oϰpOw3H dsa`ddd @@P0ї%5C\.>=59VJm=/1@`x3 cPg`c0s6 ;_D`X{rB?'; 0Q`C F s#@Q ؽ!lcbIENDB`king-2.21.120420/king/work/kingicon48.png0000644000000000000000000000654111531212636016216 0ustar rootrootPNG  IHDR00WgAMA|Q cHRMz%u0`:o IDATxbd``0@1 (4=@C4=@C4=@C L, @V * IoL"LڨtдX[RR< ~CWmS3*-Xa Čq ̫{KQFXdX TT4d45XX9=ǰ|n5ú_<6k ՙB $E39a w|dpbra  f| ή va 2Z " Bpu߾exy(%޳'qz],&.b6t=w] V| " {]f@n<`& \ a !EexÍx .LB ab/0kN?b5UF!4Љ!#AJZ ?^a:Ï< Ғ@3>{'DX3D*2T.dPְb8}h)ˀ񗁇× w|eLOgq ``o `,;CwO[@Ý;mOcdc`ư( 3#`}a F@$y@mZ)yCf2AI? ێb8|i>peO(qzǟ ?B1O,)ľ ?bP ?~ .,1 u[0D@UF!7gV2~\.0w-n1!ߛ[u<022<{?p3 4ӓlNlg`~A\\ԥ/ Gνaw1g00"< iɁ fxw0?Ze8s\ ^V0g?I&/`b8{A*4=f,>#">d@Dy@Q ayY b ~20l=ܕgpuB|"U}.n ?~WeIfjgm-f Æ-nobDޖA]۞  '7G߀iJŤ S?/3p9ex e5Ub(,`g}AJ.3?z'in"ؔUTN|Q\7'O?5dgxvf_3(K1,XAMM6Qa^/?y-Ȱy"n^v9e#g1||@K t U^Vffn_0y!=&9 ._,?pK\D0 10\82AE 0ó0C:??'$=Yq2 1話Rj$DDEo2?>|S %n~`;Б3 _=ddH cndE!/3o`#ÆM~go1ٻ珏 evU< QF`5_?ހ L@lf`8s#֯zppK5לAS2'``hIO@L@0 n|dú}߁? ,+Ν͠ĐltA C p;c? zJ `w4ehjpd?o(ÖOf-Bؿ3j 3p2\'  F* ?ex0!ce ?:@(`gaVdv'0x'23]apS?'^2|!BM11j1ܼ1^.NW?2wbx X d7>3ܾsAR ?n~19O>3Z3V411 l@!3%08zF0ܹ~ T$3| .ReYo3,Xw0 Òo ^1F20ld 'v0aLG/E`pv_;/`31 *r\ ?2y`gWvLxD83|˒!6i _mw1/0ie-{c _;=:/ }``ACǂAgxaE24¥\ؘ##;؟~ew.+` C\g7x;$ó? AEJ YI ̌? Z l2rtoz,Bo?fx q%X 3 0HI0~a V^dx2+73AOKY $0C*<. Nbu t@H1b< 6fJ B  i4;>08\ے Et :Nex7z5@X=Dg pg?eu'dd "hh4=@C4=@C4=@CF鶝&?IENDB`king-2.21.120420/king/work/kingicon64.png0000644000000000000000000001310511531212636016206 0ustar rootrootPNG  IHDR@@iqgAMA|Q cHRMz%u0`:oIDATxbd``x #|  ĜL$ + v@@#>h@LL `6@ `D˜ ub@ad򛁋ac`bag`eea՛/ ?~(F h LXz310qp2%am0FV >cx+ d]83|}ww o>adxJW >}eD`&-v <EXeP6fWa$XY nd8v/gLBD28h1D2Z=ݩ g_`b0fՖbxÅ+_Q A OcZfj`h )g+ - "9@AP&``kǐV)3o&֋ j ** GνGfUAB/opU0<Ë99~^n!v6&_xpߏ5~YdD3D80u1ȩ2M OgÓ 2_=|Yӧ > ( p30heHOObnfbxt :/83gd`fd_e2/ e`N8凂X) \| ongzzM^^n!Ni?wN^[ 3`d&yN) 6.I ~30;) 3`I?Xd$ttt|&w0|灅+Cv^1oD_hf`AQJCwp0O bX"_1 2ynF{CN֞ z ?~f8>÷o~``v;k/yVO`K/O`ra+&6eiĠk:x0HUa7>| *h~ӟ> "+84j[g=r_32|cF 3>qś  vnq z _=g7ÿ=bxV`Hu*Ac+^\ɠ$'%%ÁSO?$xz/^ T Ԃǐ`f vf C~)2\aꢋ '=zONAXL|7kv.Q`Xu2_g/>Cs󼽹8CqE'>_Ƞ,/v /cؼ:/C9#?Drpc4Q`K߼~]uY_X}a[ '>{55%!a~0g( O`^']`% |?Ù#+>?^Π* . O߰0ua %p@$##0c &u1 / ,3ZNe8r. 4X s~>`%_T`)9vVf-cUb8˫ J2 ?~0a3 .`M H 6 jJ| `w=? )`e8pOPp10+A*~dd-8fH} .*yB 1a `/HDb00X80Iȁw/-cd@o a?!!.]0J_?8?2~J9CrdyNn/c/ <#a /n+ jjW OfQa+3| L>a2b "R`'#l}vgxCF+CNtUl 71H | 09a E~ \*s33X2|*5YVf?`K7`#oT}@ L`30op  s8NoNb{,3db{)>~A umYx޽yʰki4;nNV`3\'Bu$i?yAef~= /?R '1I0\9ۗ <" c3`w&"~DX03|e8AJ 츷2ya c8v7$;çxX0 FVa Nls?1gaW6fxp7û{k$<~ ) %h_\MEAmy5UUV0ѳo L^/ \L [g3ܿw?U2p[ ^1/ Daq..P@y?> ((AZJA[] ػ'+ 5 ;L \}y & ff[ |?2p3>;ߌ wex0G|T SM@IALL% *}WBۧ ܌ꎕɓ.{`ˠ*E;7v `[%? 6 Ƚ/yKGع_=m ՘pPfTWwV0O " l]pg*B L!>l-1HI1{j0h@,x4? /d5ye}?\A fU}/11< XXقB )kh4+ R@ ` sl-`f Bb`p;gt_g~/S~ˠ,+é /. L-=kHIITkb6t мC >y z2 >Gb<9̿xt`Ì%g./`YAB7003762Ȱ0H1I03<}t _O"l[5Y2d0d2=޹wdX:CQtN.^70AZB{O3o?` ahYQaZ `B|=1}U.`]XMgx5Ihm$K{}3?͠, 03=aS >aF>cd`l %}`W`J rgMU)!!!7?0H1D0Df080 cx:B `ƒgfv`m/?A(AGGA9v`#F!!֝j"Çm(cPy,?L G/|f48`ÝnAc O67e59ye?_0Aؑ!0$; AS׆3 ?ڐ Pà)?[kS/2Ʃ l/mX4&d0x0[U3H+203s1=U B>38pg_n?bdX1 E-?P)V 68}Ll *A^ÜA^S 53|xrAEE2x Is2i`H`zϠ F0ÿ?~`#//=070:9@ @p[I1\CDhJ`HG$dPVQdf`cb fA 7N.`ynǯs^Ï?M>c  qC0CbCH"#`AFt3]w1|AB R'F1tK'2nϐ"Ð3+×_^,3pp  rXs02vaɺk >K J+@H; 4Ct~wOA`KP4Xo?~-bbLaӮ >gdh-(%8%`v6 ?iY=ɰt9M{\aX@TJ1XJ3X+3* 2c`c 0|0ܼ̅G v`  o}ax#ë7C GrX4UĀ)\VNy'`ךz : he402k*z_'?%I[ H[@G3Ġ, [- @t^+<8_@ @#>h@4 x&5@#uW'ƱIENDB`king-2.21.120420/king/work/kingicon20.png0000644000000000000000000000173211531212636016201 0ustar rootrootPNG  IHDR gAMA|Q cHRMz%u0`:oeIDATxbd``@E@L4  >I~>n11Q1I_?2ܸy˷py9Q+Sew/0pgj/CJr,:???7 yvyVP S^b ΛȠ a OH0q2pe`eXÏwa `ni#kZ0 [WW#ýGQIENDB`king-2.21.120420/king/work/KiNG.icns0000644000000000000000000014463711531212636015212 0ustar rootrooticnsɟICN#?<xo1\k9G8yo????????????????????????icl4  .˿о ܱ -(˿Ẽ ++ icl8X _ V-44 V W. , W+ 4^3 - +4^ W4,4X WY ,4 +5X*.X3,55^X44_5-,_ /^4- , X _^4 XX+ -.4 ^ 4YW*, X X _,.^- 4X  XVil32ii T D)# 5BBfXH #&|֑Pϸ #cŮܔrZ #bV=n ´b^I # E^D | #sӥ.U #yݻñI #~œ U #1Ӡ #aۨ, # Ɖ֛ # طB # y7yö  # c%tm #(nF8 # O]Ԍ K؇а9 # ⩼y xެͲ# ##IJ5 oӔ# #  ) )W C j hii T D)# />>]pF= # v}H輜 #[۷iٸP #YK6_|UQ@ #Ÿ<X< ~l #mճ'J #j? #n ùѧJ #+鵋 #[$ # ݤm # 7 # h,`  # ] f]\ #"ɾ_tm86 #浭?Uʷz=ogu΢0 # qȍi fÑʹ #ws. _ # # )W C  j hii T D)#31?0  # `<+u8I #?ЉDAB[?NoNZT, #=aO(?^/dVK,)" # یU!C7U hH6 #WRFxFTzsD% #Y4TKH #2Q@Z_zO$ # 5]NB #I/]#6^ #|=\ W< #TJ!e # s[2 EL # LVT n #g;ʓW-%G / #UV[9S; [ s #']on*_cO3 (e5W`I  #ESRPJ7 'TST:  # )W D j hl8mkO]IOMich#H?_?*I^)8=ru" /OW+ɓ?O Y,WEI'ich4ޯ ͯ* +̼˿бŸ бܻ˭˯ܱ , ۺ  (,-*, ۿҟ(+ _( ,.+,˻߯ich8 VVୂ߭V,^4_^,,-^,,-4-W+3X4X4X_-4|+-. 3-4W-4],4- ]-3.34-43.W,4 4W%W34W+2.33.-3W+]3X.-V^- WWX4XV4-3,_ -^\+XWX,+- ^Y-3,X32-4-,4 433^X43^W.-3-4W4-4,-W_ -,_ -X- X_4-4+4-35^_---43.45X .,3- ].__3 X -_4_-33.3/^X XW2.-^_4-W^4-^54342.3%W 4-4._^]%--3{3-.4-X_,+X4-- Y23X-4W .4,-43--.- -.33^-- - 3.^WX33X3X-.3.^VVVih32SS   Ճp d? +)% 5bjTN- % 9mܠR $uo  % %iͿʉ Lܕ  %W濪ˡ݂jT % `޶͸hh] %!SزGGGٶȠJ.?6  % ݺ7r'ãO %]g ިƙ* %&܅¦+ %ޟ $`ϭq %!xEú %&nzɤ( % ), ع) % ߜB % ;߱ % hЏr % ¾~ %ޣՙg %g)u/ %G, Qƞi % ~vl^ %.Y Iܞ.q{>   %)\ :6 qasȋ+`7 % lS`!g~|ͨP % vwŽͩ@&Ðǹ9 %Y”! -^  %4wxA =͎8  %   $66#  % 0\ G"I5cV  UJIUST   Ճp d? +)%   ,YZCA( % 0aۋC gXuv  % _̻Ȯy B˺  % L糒q`سþK % P٠[ԙż[{೭S %!I??΢õ? ~ڨB(70 %0i"E  %Sߴ\Ç$ % ã" zýv{% %̹ ۆŸSƖc  %i<ŧ쟦}  %|an®" %#& κ" % ų|ƻ4 % 3Ñoĕ % aؖ¿rpa % dŬ %ezgV %ļY!]h°% %@񪿮%A~Tͅ % np]WM %&vN?ڶ%Zd0  %!諲O 1.\ÔM\nn$Y- % yݲúUDyߵSʈQbbȔE % `Ȇ_7ɨuҶ0 %NĿº #O %/ji9 2{. %   // % 0\ G" I6cV  UJIUST   Ճp d? +)%  ="  % 9yG 9Ӵ4 4 % >ɬܞOB !ЙyA_F % *C?@HZU: >hLU\UR+ %VPIF-{$dU0SߍMSRQPQ2 %&TWL"&/`Q"axNOF# %wWOLWGWRgYIH# %3KS55QVJuGEH %S_O]TAIH@ %YVEնdT%EG2 %OVT8#!eIXKA %3NM4 Ke=]eNJ  % >WQњPQ  % dWe_ % ia" :dB % H,]a' ]f" % zDUS ,fT % jWVC " [f %F_T,  aX %,HVU-}, %v{YU8, _z %]1)!QUE ") ^E % P`#gVS  \* " 1E  %KW_e ^|US( "r, vP %GZtn {tKOHDoH;qIM %)pfUV\eWWLPE YUb\bZTX  %>QPMG4BWRRT9 %  % 0\ H" I6cV  UJIUh8mk M_M?MM-MMics#Hk?P??ics4὾˻ۭѻics8VVVW^-^34-X,^X-.,XW33,-_4+XX^WX4^Y-4^3-^is32f@!"@">)hrO o|ȯqȞ_%q<ڈt%L'o¢  jʤ6`+htѷ"!ӎ OB,$@!"@">&dhKl ikkS"b9um F"l [6M}r%}[no}{OB,$@!"@"5VC   ,Q ﳈ˟Y % '+v̋cc`]g6 % 3pkt6 jҲe&Mdb_dߤQ=    % 5h}Яq1 ?ռ})2aܸxbb_gρWO%  0BEGF8 % 5T„ϭl4 6đ? &;۩g_baeܳftu8/\]0 %/ 8K̉ѲyI&  AǞO%&PՎ``edd†ii>7^͵^3 %. 8Lщؼa@+7pˣ\%/c֗e`igdx^ɡЀ5 %- !Bϊ˟jFBQ`{܍ʤ\$6cbntompi`ׂM %, G䅺ōZ旭ǣ\# !IcfutÉɯM % B||y˜kj܅Ğ])[kd| ˼: %* #M\ÖpY|뛆ͻP!,m̆gp蛡¾) % ![zl|į~A!1uǏyw||ſ7  %  9r߅źd, 0xͽ5  % 9rހ»yD0y݈ δr-  %& .YþxM$ +p݅ ǙN!  %  5Wyʁ dB" %Vك Ƨb5 %  +@Xo~ ylXB+ ;lȁ g8!  %  "+3:<= <;71'   0NtqI+"  %      %  %  &%%  /&%  A%&  *b$& O"&! "&$  E"$ -$!  =" &    ]   K= 'ǀ 2  6  ! Z   KŃ <  -ߓ; +܆ЄQ(H}ρJ"%Kޏ23Uކ 4 2 R  U˃0   ) ٵ*   5   *ɀ X    N    8  ( A  /!  # c"$ R?$$  *.%%  &%%  %  %(('),+% %  /0+/:B?77@MRA$  %  !!#&'()'&*. /5>{ödKG[jM&  %   '.6@Qd]77 &3Lžw[PNTdyvK % !5GV|^ni0 +Jʸ|NLwQ % *Mgn5  ">x֐jȷQ %  ",^wЮ8   "O検ʻP % %%'_tͣϻ8 5~䕣ɿR % & %Mzuiloɽ8  7ȿy> % &!*ekгkkѽ~1A噀 F % &!9ehpmƾq'#Nr L % '!<׹z{oov׾pb 'n|}Q %  =}³yaG62jЀR's¶Q % #9{ȶxR/hjπ@  &ܟfSguqrL % ( 'Ł_2o̿2 'x|W6 -,.-+ % )#^ȻP" $zĿs' +r]3  %  G˽O2uc .mm=  % ( z^QӀ$fQ 0lV( %  M׀ Ⱦt/  z"aA  2iu? % +uͽI "c4 8ͮkh/ % Dÿo&'%mľq& DΘdX$ % $ahоN:x~þa J͈tI % / ”;5 Zހf¿O Szzy> % : qſl$ w\?csr5 % !Kɂɀ[ Zɿ.l|n2  %  #pzȿO# )fƾl%i㒇n.  % $~žG ! >|tƾN`嫀r/  % #xɾ: !Yeľfmr0  % $k̼[  qWtzx2  % #h_˺Y$  Yɾŝv{;  % .Gd>  -cɽ}B % 1Ta;  @}oǽ¯R %  8UTTUS: Xh~ľļ_ %   r[Ϳƥƾs& % Y̽s k %  ,aȾɔ; % @|kʾƚU}Ŀɺc!  % Zku¾þa]mu˙C % v^zνɘvqpvƾǿr(  %  \νǩhlnɥJ % -`̽khlqɽ~. % FgĿȸzdhjyĿ˲V % "atkξlbfhοɍ5 % #crϾ{acbgƾǻd!  % $ _{˾zp`a_~ʙ? %  /^¿k]ha_fǾq#  %  LaЀT;`u^\]s¿̧E % lvjȀ;#Au\Y\\οz&  %   e{#.SrYYX^ƿͲO %  , f[8gbVXTqˌ4 %  V!zľ9'Ly]XU[λ\  % рm8boTSTeϙ? %  )$ςžG  $C{\RSRou, %  Vоw!/X}WQPRѭO  % þJ  :pcMON_ʋ9  %  Fνq(OSMOMdӼp. % (/<.MU1 !zѽ;2]mONMLsΥR* % )YQf-  YŀX =yeONLPϿ@0  % +Qf¹c* 3Ľo &(M^NNLQ©fC=':@EC0 % *?pл_+ +Ŀ3 &0dŸQLNMQ}Q\_, &RU& %/ -:tӽf; 3{B% AưpLLOOPpjR]3.UϱpG( %. 0HrƷwZF_nD!"XϬlQUz}q  % Nw΁ɵcXfp5&^ɦubahkh|+ %  3cƾW# %a˿ʿu)  %  3dƾk9%cɀb"  %  )NwjB ![Ǿ A % /Lk tX9 H T)  %  %9Odr| wl`M9% .[V-  %  &-36766540)!'Aaprsro_>$  %     %  %  &%%  /&%  A%&  *b$& O"&! "&$  E"$ -$!  =" &     ]   L= (ƀ 2  6  " Z   KŃ <  -ߓ; +܆ЄQ(H}ρJ"%Kޏ23Uކ 4 2 R  U˃0   ) ٵ*   !5   +ɀ X    M    8  ( A  /!  # c"$ R?$$  *.%%  &%%  %     %   ( %    %Q1*  %  !2hÝ  WʡR0/ % *1B[)Z̖g;--JO2 % Jf DmTM)MwmW3 %  'm-VvWL! }~u.JhwYFA2 % " FMNQUY\\Uwu\BQlUII!"JSX(/EJNgkURRJH4 % $`3;4')*-//@=]`RTLL#fbkmhWRVVQMH)  % %+#A97MIJMQZb~G,f}QVULM-3RR^\YUSSTV RPM- % &Y.TUVVQV1 F8CgR OPQMROHIIPR2 % ' o.SkQQNLMH3 %^UVVOU"QuCGXMPPMPSK>4@D<==D-  % ' U+UZQSPOP<| mwUVVLNQ;#QVLNMNVJ3   % (#I5cSTROO2F(zeUVUIDR@MGFIUH % WnRVUPQ,gqVKI q̔A8MDCIS> % I?^UVTLE5ubTVUPBN DKABMR1 % 8yRVVQO/.}_TVQY9CTO@BNN# % l ^yTVUNN0̀ :^UVPV+ EUN?BPI % "TeUVTHBbN}ZUVNM"#H+SKBBOD %  xVTE7 j aoUVVNG1I.NGCCQA % )qVSTQMQS5Oi YqRU_P>EFWIJSN % 8jLJLNOO>" ~hpRXPCIWMLOR %  TI=?GN=! $rlRXSKEKZPNKU( %  35344 2.{bRVZ1\UPMX3 %  48wTdMqZF_TR[B % WT:uPl"EYT\m) % *AxU%3ooS]z8 % (bsRSNEX4 DbTrc % "(y_S]g b|U^9 % 33}RVTg (hRmo % Y G}QVTf" TWU{K %  F\xRVTW yqQhx %  FqdTVR{G ?cU{Z % !1{TVVRq1  X}T`}, % [ 6RVVQ^ (~gSnh  % e\tTVUNH TYY{? % bv\UVUK8 ) %{lSko % [1}UVVQY& $) E^X{N % ?؀-ekUVVMX %  eyUhs % |YVVTSD   !eV{W % TuWVVQ](  YWd}( % (rubTVVMP % vsY~\  % t)CuWVVRY: !!  )qt* %  cfTVVQU -#  Kvm % 3ʀ w3rRVVRXC&6"  g{E % j [bTVUSS  ?9 "}w %   a7qQVVSY@2A(=U  %  $g nRVVTRQ 29  Mx. %   m5d8'M[bTVURZ* ;3 NQ %  eja3  C5]TVVR[= 5O@ JhX&!2>6 %  'tR`a, m-jUVVRQL $XeB  -A*  4n: % )xQSha( q:WXUUSRS Gke4  Dd/8tң %  n)xQV[{Z6Ucc`WM KIIUZOC-7jhRSU TOYgD$ %  ,> endobj 2 0 obj << /Type /Pages /Kids [ 5 0 R ] /Count 1 >> endobj 3 0 obj << /ModDate (D:20031104102858-05'00') /CreationDate (D:20031104102857-05'00') /Producer (Adobe PDF library 5.00) /Creator (Adobe Illustrator 10.0.3) >> endobj 5 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /PieceInfo << /Illustrator 7 0 R >> /LastModified (D:20031104102857-05'00') /ArtBox [ 75.57715 566.52637 224.99951 729.77344 ] /Group 94 0 R /Thumb 95 0 R /Contents 97 0 R /Resources << /ColorSpace << /CS0 32 0 R /CS1 33 0 R >> /XObject << /Fm0 38 0 R /Fm1 50 0 R /Fm2 58 0 R /Fm3 70 0 R /Fm4 78 0 R /Fm5 90 0 R >> /ExtGState << /GS0 41 0 R >> >> >> endobj 7 0 obj << /Private 8 0 R /LastModified (D:20031104102857-05'00') >> endobj 8 0 obj << /CreatorVersion 10 /ContainerVersion 9 /RoundtripVersion 10 /Options 9 0 R /AIMetaData 10 0 R /AIPrivateData1 11 0 R /AIPrivateData2 12 0 R /AIPrivateData3 14 0 R /AIPrivateData4 16 0 R /AIPrivateData5 18 0 R /AIPrivateData6 20 0 R /AIPrivateData7 22 0 R /AIPrivateData8 24 0 R /AIPrivateData9 26 0 R /AIPrivateData10 28 0 R /AIPrivateData11 30 0 R /NumBlock 11 >> endobj 9 0 obj << /OptionSet 1 >> endobj 10 0 obj << /Length 1131 >> stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 10.0 %%AI8_CreatorVersion: 10.0 %%For: (Ian Davis) (Duke University) %%Title: (Untitled-1) %%CreationDate: 11/4/03 10:28 AM %%BoundingBox: 75 566 225 730 %%HiResBoundingBox: 75.5771 566.5264 224.9995 729.7734 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 6.0 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 -1 -1 () %AI3_TemplateBox: 306.5 395.5 306.5 395.5 %AI3_TileBox: 30 31 582 761 %AI3_DocumentPreview: None %AI5_ArtSize: 612 792 %AI5_RulerUnits: 2 %AI9_ColorModel: 1 %AI5_ArtFlags: 1 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -421 1051 1 1229 805 26 0 1 7 42 0 0 1 1 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:30 31 %%AI3_PaperRect:-30 761 582 -31 %%AI3_Margin:30 -31 -30 31 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 1 %%EndComments endstream endobj 11 0 obj << /Length 6679 >> stream %%BoundingBox: 75 566 225 730 %%HiResBoundingBox: 75.5771 566.5264 224.9995 729.7734 %AI7_Thumbnail: 120 128 8 %%BeginData: 6318 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD18FF8C688C688C68CAFD71FF688C688C688CA1FD71FF8C688C68 %8C68CAFD71FF688C688C688CA1FD71FF8C688C688C68CAFD71FF688C688C %688CA1FD71FF8C688C688C68CAFD71FF688C688C688CA1FD71FF8C688C68 %8C68CAFD71FF688C688C688CA1FD71FF8C688C688C68CAFD60FFA8A8FD0F %FF688C688C688CA1FD60FF27F8F8F82752277D527DA8A8A8FD04FF8C688C %688C68CAFD60FF7DFD0DF8FFFFFF688C688C688CA1FD60FFA827FD0BF8A8 %FFFFFF8C688C688C68CAFD61FF52FD0AF852FD04FF688C688C688CA1FD0A %FF5227A8FD54FF7DFD09F827FD05FF8C688C688C68CAFD0AFFF8F8F852A8 %FD50FFA827FD0AF8A8FD05FF688C688C688CA1FD09FF52FD04F8277DFD4E %FFA827FD0AF852FD06FF8C688C688C68CAFD09FF27FD06F87DFD4CFFA827 %FD0AF827FD07FF688C688C688CA1FD09FF27FD07F8A8FD4BFF7DFD05F827 %FD05F8FD08FF8C688C688C68CAFD0AFFA852FD05F852FD4BFFFD05F827A8 %27F8F8F8A8FD08FF688C688C688CA1FD0CFF52FD05F8A8FD49FF7DFD04F8 %27FFFF7DF8F852FD09FF8C688C688C68CAFD0DFF52FD04F852FD49FFA8FD %04F852FFFFFF2727A8FD09FF688C688C688CA1FD0DFF7DFD04F87DFD49FF %A8FD04F87DFFFFFFA8A8FD0AFF8C688C688C68CAFD0DFFA8FD04F852FD4A %FFFD05F8A8FD0EFF688C688C688CA1FD0DFF27FD04F8A8FD4AFF52FD05F8 %A8FD0DFF8C688C688C68CAFD0CFF27FD04F827FD4BFF7DFD06F852A8FD0B %FF688C688C688CA1FD0AFF7DFD06F852FD4CFF52FD06F82752FD0AFF8C68 %8C688C68CAFD08FF5227FD06F827FD4EFF27FD08F827527DA8FD05FF688C %688C688CA1FD04FFA85227FD08F827FD50FF52FD0CF852527D7D68686844 %686876525227FD0BF827FD52FF7D27FD22F852FD55FF7DFD1FF87DFD59FF %7D52FD19F8527DFD5EFFA87D5252FD0FF827277D7DFD66FFA8A87D7D2044 %2044204476A8A8FD6FFF8C688C688C68CAFD71FF688C688C688CA1FD71FF %8C688C688C68CAFD71FF688C688C688CA1FD71FF8C688C688C68CAFD71FF %688C688C688CA1FD71FF8C688C688C68CAFD71FF688C688C688CA1FD71FF %8C688C688C68CAFD71FF688C688C688CA1FD71FF8C688C688C68CAFD31FF %A8522752FD3CFF688C688C688CA1FD2EFFA85227F8F8F87DFD3CFF8C688C %688C68CAFD2CFF7D27FD06F8A8FD3CFF688C688C688CA1FD28FFA85227FD %09F8FD3DFFCAA1CACACAA1FD28FF7DFD0BF827FD6BFFA827FD0AF827FD6D %FF52FD09F87DFD6EFF52FD08F87DFD6EFF27FD08F8FD6EFF52FD08F827FD %6EFF27FD08F827FD6DFF7DFD05F8FF27F8F87DFD20FF52FD4CFF27FD04F8 %7DFFFF52F87DFD1DFFA852F8F87DFD4AFF7DFD04F827FD04FF52A8FD1CFF %7DFD04F827FD4AFF52FD04F852FD23FFFD05F8FD4AFFFD05F8FD24FF52FD %04F87DFD48FFA8FD04F827FD24FF7DFD04F852FD48FFA8FD04F852FD25FF %FD05F8FD48FF52FD04F8A8FD25FF27FD04F8FD48FF52FD04F87DFD0FFFAE %AE84AE84AE84FD0FFF27FD04F8FD48FF27FD04F8FD10FFAE111111121111 %FD0FFF52FD04F87DFD47FF27FD04F8FD10FF84110B110B110BFD0FFF52FD %04F8A8FD47FF27FD04F8FD10FFAF111111341111FD0FFF7DFD04F8A8FD47 %FF52FD04F8A8FD0FFF841111110B1111FD0FFF27FD04F8A8FD47FF52FD04 %F8A8FD0FFFAE111211111112FD0FFF52FD04F8FD48FF7DFD04F852FD0FFF %84110B110B110BFD0FFFFD05F8FD48FFA8FD04F852FD10FFA8AFA8AEA8AF %FD0EFFA8FD04F852FD49FFFD05F8FD24FF52FD04F852FD49FF52FD04F87D %FD23FF27FD04F8A8FD49FF7DFD04F827FD22FF7DFD04F827FD4BFFFD05F8 %A8FD21FF52FD04F852FD4BFF52FD04F827FD20FF7DFD05F8FD4CFFA8FD05 %F852FD1FFFFD05F852FD4DFF27FD05F8A8FD1DFF27FD05F8A8FD4EFFFD05 %F827A8FD1BFF52FD05F852FD4FFFA8FD06F8A8FD19FF52FD05F827FD1EFF %A852F8F82752A8FD2CFF52FD05F8277DFD17FF52FD06F8FD1DFFA827FD07 %F852FD2CFF27FD06F852FD14FFA827FD06F8A8FD1CFFA8FD0AF827FD2CFF %27FD06F8277DFD10FFA852FD07F8A8FD1CFFA8FD0CF852FD2BFFA827FD07 %F82752FD0CFFA852FD08F87DFD1DFFFD07F827FD06F87DFD2CFF52FD09F8 %27527D7DA8A8A87D7D2727FD09F8A8FD1DFF52FD05F827FFFFA8FD06F8A8 %FD2CFF7DFD1AF827FD1EFFA8FD05F827FD05FFFD05F852FD2EFF52FD16F8 %27A8FD1FFF52FD05F8FD06FF7DFD04F852FD2FFFA852FD12F8277DFD21FF %FD05F87DFD07FF27F87DA8FD33FF7D52FD0CF8277DA8FD22FF7DFD04F827 %FD08FFA8FD39FFA8A8527D527D527D7DA8FD26FF52FD04F87DFD72FFFD05 %F8A8FD71FFA8FD04F827FD72FF7DFD04F852FD72FF52FD04F8A8FD72FF27 %FD04F8A8FD72FFFD04F827FD73FFFD04F827FD73FFFD04F852FD72FF7DFD %04F87DFD64FF60355A3560355A3560355A35603535FD04F80560355A3560 %355A3560355A3560355A3560355A3560355A3560355A356035AFFD45FF0D %130D130D130D130D130D130D130CFD04F8060D130D130D130D130D130D13 %0D130D130D130D130D130D130D130D130D1384FD45FF3513130D3513130D %3513130D35130CFD04F80C3513130D3513130D3513130D3513130D351313 %0D3513130D3513130D3513AFFD45FF0D130D130D130D130D130D130D1305 %FD04F80C0D130D130D130D130D130D130D130D130D130D130D130D130D13 %0D130D1384FD45FF130D130D130D130D130D130D130D0DFD04F80C130D13 %0D130D130D130D130D130D130D130D130D130D130D130D130D130DAFFD45 %FF0D130D130D130D130D130D130D1306FD04F8060D130D130D130D130D13 %0D130D130D130D130D130D130D130D130D130D1384FD45FF846084608460 %846084608460846059FD04F82E8460846084608460846084608460846084 %60846084608460846084608460FD54FFA8FD04F852FD73FFFD04F827FD0F %FFA827A8FD61FFFD04F827FD0EFF7DF8F8A8FD61FF27FD04F8FD0DFF52F8 %F8F852FD61FF52FD04F87DFD0AFFA827FD04F87DFD61FF7DFD04F87DFD09 %FF7DFD06F827FD61FFA8FD04F827FD07FFA852FD07F827FD62FF27FD04F8 %FD06FFA827FD09F8FD62FF27FD04F87DFD04FF7D27FD0AF8FD62FF7DFD04 %F827FFFFFFA827FD0BF8A8FD61FFA8FD05F87DFD04FF7D27FD09F87DFD62 %FF52FD04F827FD06FF52FD08F87DFD63FFFD05F852FD04FFA827FD08F852 %FD63FF7DFD05F852FFFFA827FD05F87D27F8F852FD63FFA827FD05F82727 %FD06F87DFFFF7D5227FD64FFA827FD0BF852FD6BFF7DFD0AF827A8FD6CFF %A827FD07F852A8FD6FFF7D27F8F8F827A8FD59FFFF %%EndData endstream endobj 12 0 obj << /Filter [ /FlateDecode ] /Length 13 0 R >> stream HWn}y r)8NjvIQXuZ9uru7sιw}wㅺ+Ujyԗ5.^rqY_M{z:O?'r_V#.a|z5;lo7s7 lw}r2VR)z_7K.s ]wiոX_m;d{Ҹ-n><}׻oVU,qfQ}\6TamZFLbWYwZ?<N4n_Ȼqg7߅08f_2ݠ̴}7>,8v3j_Xc uy$S5?.4kj"H>Жer3nwzװr}ŤsaތvWIL|ucELvyw𬓕?w#H s>!Ot嚾A}zvnG#p`ۿbu.NcÝIԌoE拐b:(P3#l+ FD$B$M t@Mh&C#a<-&le'eL(QV9U:TJOVZkvVwQ:a(5xӚ`zMŒUz`{;`pgw]t7^yo}' umfTg:u]ߥ\hCR/{ӻ ɤM.)3RG'}o{O@+|h!!D|x&1  Ĵjѥn"f0׶5/mݦvh#8 `m=I- jz؁K/@J\޻[ qHب6B`;(歃vj(aZdHCB{n hL a{] l`F*f0$LXCF3-`Y*u`x" iPfx5BAjVjVxn] [*JgYމW'υGq\;8z|׋/\\ 5Py@9.W: &58-0iS geHYIx+M >hBf=kJF.CH[R\S] )YxB !ó-5,O-p"8 Y8^Kxy3*ǍBsC8OBC18: '}A[.f3I $Nk9 hj,rהO#M]^WPpߣG=_]_;K8Iݟ![N}N-%/,)"5xhׁ̞%f`}=:i*u,*K7 gd$W{H%,eq" IBr,*B8VeYDy+{^` Aq>-P"3w__0o-N}L,g4?#9~)~CpG!Т6ro1U! Q#^hAxQey+ o/`JjN@3L S2J X%^Qrke`@()㢀vgs= +Z0h~?iCJq8,S.C )QR$(n%UJu;ACYAZvRWs Qtnj.=_% tGh6٩= 퉜]OUW\r垂TǦuźvP9\i*KFP=C+=R+X[ЃFlLshv&p׷ [~G{1MryឭۻKo$8a^D .$2%.v,}Ս? usGG ָj:VQu2ˠU]wWXYxd͘kk#3 Plp `κ޻[ #q, yE?:/Urr <0⋞b^QD3&li 3-غKvdIY(9ڝ Ty4TMlSZ/?[x6ueҫwlޝ|J$6lͺ#ɫRZ@zv9P ׬Ih޴vfdSjhQnvw W Wڭ4Ib$'Bo;q:d;@0۶j\X~O?߾nH d^QU bZV⪖XyJlq %F1ōjZ(:Tp ]wPAQ[ tRXn]z8Qow]0vtӥ[KCbCy6;VD1u0hVTѩhȎj̕"ܞ.,jT0[]_)1r Qեq+I}yN;++J~$y;ѷ7/t?snsё̉I-Mmj'L嗊/^3UjzKՖj-(-Ț]`Q^yOTYY?2MU)-_jJJ˭Ů1ZXw5uS*kɗ#:Yj·z˜]7A!rPWjt 2Ct]orQ<% CL1ZE?$!+:K9lZMϑj!2*^$?:؃^$ZV뎤[Gg$MT'nӮAn:QEXGIfR^–`,Sk[K;2wO3hhyBڛI}Hn @`4=Vt9(DM+JC `:RL2X뵠%f~tֽ L߿5L>bN 㣷'v4Pݽ}MۡGEcN3ߦ?r-cL>&xzc>]f2}>O}6o†ɾ[*5Zɒ[-mUE;퐟ֿ?_>_|/_l?o/@PX#|#\ E" Qz=5ۙq ?1H1~l4ʷ//GEdzr* O|??ZYC =YȻ_s&ұQr{b~BBnI_PY ,5?2zQ4mD}tY>-/S!Bٙ)ʙQD=(2jrnBjܵC`]QﮥME6u3ieɦ66]lzJBX_y\E S-]bj'\'*t`zQ<\mDѿP=}7i1ׅ_\5]#hpqnD y+h.$tJ6j٣-zQa_F4%=jrZxͮa6A6 o1uY6d@ :uN7\]ɒf8:_U 88X9[Ɲs4$!X1IWs"7AAM !1Ot"\ٷ+Y(Rl:, 28zQ΂ՒJ"xnXAel]]DX(߉Փ%f0 YJL(-pr˫*?1e>J'V^fWrV:4u# !$WXCh"I[@"rGH@E?O BzN ݅3.8ĸ \Fr2ۊo`}WL(dA=ґ0`JD̯>VU)y)_=b@ /drhwﰺvz2Ӊ %t1zZmF-&f..E\\c71xiXWx_q%+,4NP02 v&:*[|L1 pI܁BBWa0k lu]6;L8&SrDL4*3NW{=:uK(WAtKBM%*rVU~ڑb]-(6bag~J ?33WC\!>]HUT/enAf Iy9<1098Fs9ŗSx #gDXr\aEJ)R4hB|8 'MK%vo>+u_~W{%66grum۬Ǹjγ_D;F=m<=Rd)f~%,Űc0 Y7Y_嗜^fI/-Zrbi%jnkvt[^\o7W`7A+pgўMwtew]]?3$WbM6PoGG˧m qo]~|2>)X9]%Rl0Ț~׊!^aabfr\Pmv &xWo~%MM FĦģġB~coW NJw(-,IޟgfRk`coj] aWlFDz$ `C=h VUk2G0DFx_խ:/(5ݷޣރ xps=(:=AAp38en ^l/>GA[;X0@@&=@轃+[ l2J'`l J, 5a`Q ;º0٭9;܍n,w0IV0H0 $J`;Sݼ?4NVb}շIvթV # maj܏@̰LDg66#hzl(@$)UAG<K7;۰6e}ްAM^&(2SFJIĴ@nrhShN>ZނMM\6O6mE;zS{i9h{[Bsl959&k E\5R|<-zWsY{wYfpTUO\'Ý3w*Y;}7) baȵ{^`KN|mnds׷'Vu~{P@*nUiv˻KyqoO_/_N?q?ߞLW4>r--nMs,l7|ًh+^Ag#0 s(,Qhy ( R0T)U$HdlBB A  DCCC   $(,0i''(5 E0Ep2\F]rM4)?$ݜİqVo}ݠ؉q?E{}i./ʁr%hxcmxmOp_ GoOBk-@1 s Hv d -0cCP.>NAGm r0_u m|!.£7ͷp+̊ScFi[ vrx؎C# rwp҈9tHvɗ}z[m4t :2aq;c @[5R#oȇM 8??I_US7Yc:dUw4mCզhUsKrhA A)\!G N50 N +cl"91s.:VLya.muDˁubx]ƕ1 !7;3s4왊[Eϼ<27/T Ҟ4q I&#Fx0R{xK`XWּN ő[ QS{l_o~L'Od WWWWo/!|k #H]8@P@| sO|݂k.DVǺpuN\Wkm~[_xM\{dog1T1HK$MiXIUq.V:Xouײg9V9Lkdٶ,߆eYЌH86+Phmxoqi2d:<'5}U;]O w 8dM2桗"%Ry@Uhm :+ +7A~*Ձńj03)U"ȑ|or (Ћ> Y*PTdBX=z]3b2z~U+VT,:V%fѳ*Z/ѵJDۢnշ(\4A%URD/WUzU0 bF'^0 _TԦ~g;.](ɥ$RJ@'&G$DIO"H#"= DDDCcy$qZ AB@C1#.a$PPPPUAEBx8R STj.aWT;▰XW0\|<,Єm(@ƣ #SXpc38f/&$_.+3wJPi9k],+d 8܊+7*ÿ2; @;J:hM:ȤL(o1nqِc2@%D F({3KnIr`8EBpb%rDB(>(:aCsBH (q+e-hx 2|8u!pǒgΦO;yјDN$I bl@^'f2 MX1^DR 46oV++@5̬ !6zѷo@^F>{n>6X¤[@`3/?\ .T=T ꁟq:SN<;ӇM\m_x /:=>G'30>r;waʍ-O/5ϕj{V[)֐s4Jɬ^ߝAPo 4XhV2"rQw E"h4+JnAMMBN3AQHj)T*l UP5܊@إ1"q–s?Ȩj^pX @k| p7gۇ m6E    2R 8X/pq_e7㈢_{C#exSOk+/307"*FaUFs~ D(W$|+ 3fD/ ~~f_濖סN+.W^pz/y`xXiyt&t]"N>>a<'|VGoSqsZ&/KOYa{>Y< oT4UނZcL@y6-39GC"pD#VbCP-G 9X[H \";5_4an87=\в^3JgLƘ0*`W}!!l7,::bcskKJz4jbZ 9)@&@&@&@&@G8ς&,^ܼ~-ޱ{8;{\D Qc0 $lip>*Al[ z@Qop-)FϹioF<Ɏ}@vbZja,f@NF,ݹvwDYҬAPr`P)HD,IF71o|"EGBmݙķbt$..ܽs| [F"x Jq* J)Yi`,`DC^TpʍU^};$X夔SR<#2Qݮ:usē.SW(٣d=j[@^1?!`Bt@-Ta\yU~X`"BT包(`yrh+A;UArA :+hJRCT̊REnFF;ܨ# +K5EU]ЗhLhR80Չ= EʧLj5Щ,TY*7&U`MЬ,Ze+73 WHW&%k8R* x#p{fk5zjⴃtc 6z^kcΘļjZKӬt&mע'!:TQihޓqi:ѵF}QA5fb8[k*@qV$"P '`l8t9,~ĎjRT h03:VÇXZ4A ALع"CR1#j̈Oo04G.H$~A[%bm0d#9VLc3hHP%L ?KB#'teP?L96m]1HPJ1dlt" bD7ܩ:b9= ;zTNÜ2V 6d9S,'XNAAfVV 1 m}ihI1%7Qe B4$zGeQL4ϕϤOl?@*I 4p 4i=|FBJī}1c ƺ?T^jj 4TS馣i*RcB*f9k8 'Pl\i& a * rRCIvhal"+Bu!ń7a%k ޓEaa&xMp/{,Hr[3Ƙ6xgĤеpƱMvtCbI'(=q;Tq0U xεa*~bZja0%  d\;LyYY09\rhX8(K6Gjv߶5/[kGBmݙķbt$..OWW޹}-ag#ZPrUe]рƂ fL;OX'CUNJ99%: A-]WN>G<9)/ =\!F٬(k#,i&Hc¤`/WtkrY  ivS;$N54f5_ҿ5ZCm|6Q jI& -MxWd_JfS0\4u?l}#ZN[(bў'M|38?o79٩U<WP|X|bt#"W/ѓ㭷{T<^|͌69Fٿeuܣܝ.mބ$j)|yWVܫ54ŌnYA%/ZNI(zM6ֻj-'HZM&H=t= aiwfUŴzihV,ڈ)knqGxoO:zCsQh'jN~'NPj2i 4V1Il lMIF2HNRɎn2fR[ZIGn>\$=$-j4fIΐnP'a؇{;wo.7sZbWn̎gmEM,"⵱IzRXwД=н ]3$z\ Miߠ ~.N N : MY 3v܈0ȝ熆-X300C旛-MC o rG4ߵ޶޷޸9ߺܻy{}@AB+!,E-A7ChƠԩaOL٦Pp2t5:;&k\wգZA}y${{UO셗 U} t/ެ?Eox||OM?x֒F׷8#R|ܯq{K#>_3o o|@~J}qq㟭X,6{p_=|}b| ݯ_sPlVSkIYfpsQ[NNɞުuw4 m&4#Vzp )1NJпWUrxXdhZ^pT)fqJn$lךsk7V 13tن}(M,-PF p1N9΁uBt] _vc-䌓J!㤉8x/tk8 7ȊY:ڊ۾ΦN)Y^xr%9*U^"E:5*ҍ OGn 2W!ס&AQȈ O&BA@%D|ޔ[ ֏߇h# )4X_ݰ7G88is[߲T\ r5aȟYn|fV,d4\HEksQ6ea8FEecg`-X <Ƀlp?{\cXg^J*5}3.Mfqބb'EmYG FqMkifZYC5җVhLr4+{.)d`&Hr&Y^?}B]EehѺe+6<>H(!W 6ן/o_? t* endstream endobj 13 0 obj 17788 endobj 14 0 obj << /Filter [ /FlateDecode ] /Length 15 0 R >> stream HWn9C]\|90y0' F?62ɪeؽ-ՋdfdDpU+0q Z#̈3!"e]z[~.]wYȓ A/ҏR?^?uܟ0IzQNj̳8Àu1tوooWEVMa_|nJ)%:hNvFaѿ4UܥO==|ӿD~i;_OO_~|XSKPg%?4R!4JrL2#Ɏ[rʣ*%.kmiEtEWDHF-ѭDL6TӬjkz`Ͷ[lvLN9팳9ˮh{;G}7D_`ҰLd̽Nmu qRȡGU6*&+Ƙ9['$2!Q H )I0vY0 gs+'EHW"L/v#{ynyO\e)zPZuM]uzkrK-+m馚ZkkjqUeK+K$Wl1Er%rlfm6YZN>&),Y@$5)Vf7+j lk`\051<²jۦO'tS@Wci=l>Ċ]fIWN=%?sFz.PQ JC!@שrZ+jTy r גIb\>V+p3 M8 \uǕ\}f (A@`h ʠ( H g8#BfQ0LX.R6?A.PUPYo[4<^Q,N &ްURi+dͺI>##cߟA T*  FbbY.I3P$p@'>CO"aCE > rĠ'%!i=3>3kP6&y0G"G2GBGR$J1{4f%0(^蟇ZGcLz Ec*#+ S*Z4!5aa1ypdP~(k)8T M2T4FDFTFd6l#44&5U2 n 78,'6#t;^f,6 l=S emւP >lŅIh1]6dkEKZV+r4* SAoP;6r<c'itDуZAS \u;F` cteXKzl9 'UA04Mw(C G(LYȅB-W/HIWw7stXy+g/zR׆7\]_~q/?6~>7$N`lOJ@!x~Yn9xyd,˳}6gWO{4K @~T]úGӽ? 2H`Q 9T_Ip>}D B.y쉵3Dj]KeKmߟ*wna)m)RTTTTT̏PT LkQ%{bQ5PyZ|*t{z}*TRS(%QkxxcG*|G*|BO~cnR9ׇo.WgW~ CG_J7S^XCR/M̾|T?[R_דL?>עB$Vxi^$^p2# Iy—nZ"vztUHɚ9'?|p'h !AvA-; Fٴ8Gވ-H,يɆP|e 7MWhZ5d8݅-dbMչԽ8v!d7 oDmbU7$yMK[6- 72$m7V1f$;?D=Mse]v?42[wyO+pʦex$B$.gexi.'cQBL1iY{F r#V(Q$W=fkY$2Y&xGEH ; /"1a3)VoD)kq$Nɠ:-"BV#FgQ14mM 6 >ܿUzv+wL I;$)ܱa(&6;{5_ؑY0!coiX-)eo"%+,f*,ltVUE@*:/ #ʙ[CQR2HM159,Pk8sA;`5v#7 .9. tD)oK cV(۠j6r_ #@Z'gR}kv\iUgŷID,vF٢7Ċ4|'=q| `h#2:JQK]x˔J`Dl#c.ԪXi&Ƶhlq,/K-#MF˒I0P*}Sn-"0 jNڵ1azz^̐sL$וׇ/cr\i* ҰBФPI>qROǿngߙ*EheêIVn X=dOZ7 y8Ԗک-3bi1ud  5¨ClV̆CWA'Vԕ  維W6zR/:{}]>#h-_^ʣ}q>ߧ;?]A»sN;jjn|Oԟc^i @ X:BK'թ#԰ӵ纜H0_tV%=ʡ4T8AueCN{k=VYځ\4T+_ň͸t[%.*ªmb6(mF QYB" 'r rG8ZBreKtwM 4Y$,G7p<50[.J7j"A4 y3W%#V(7¶N0Quaθv>Ze<0AcƔ.?ӵ.O: MI攲46F 뷊[rx4eNc~o,Җ!_&jzhn35\dQY&dszޞԟ݊D_۽ULGpB2z``=[ttp9u6Խ\皕=0D< h)Tz1R@/Pmm%> 4nGqeE aVczޛsDi0렇uvo#-JO|zFK:ڏ't sGώ ӣovW{(CE>||?_o 1D)PӉM/ MO~TKOr_˜=ڙ<̇l<@_H%ID:{kI6T@캨$m BʑI$Ѣ7=^s^>!LwN<ٿ<9/7C+Cњ€?ȘU<It?ƋZeR l<ܪ O>>p6M˲l 19C)TN#a΁dq5=cI{1bPU.PJu y. #SQȽM0'cVSܖכ VU{ oKT:<AE_@u-f *l.{12eޓ7D=A f.PV\N;ble/0b7߬W͎^ }yY _gfH5qAзHJ8w1Dg1X?,IpjK6I .,I bSgu fMiLЉs(:Bdt/w_@]ubX^ՙiM4GuI/[J&Ȑ]t[2!!u8́Ÿ$^1O5+r.,vxqشo-qw|I^ xS}{-D3V3!^C|ˏ?< k4"g^j*Zys#bxfXiÁfJ< |VTBLjgs8\KTڞC%zZY+1yh̫X!o\b?J5 7S]Be oc&u 5-K+ >t"=pEky5}\QW_1-EHFJn]diCR ʉV"EaH:jG=阽þVnvFS07/\5KDM֕xD>|7ono˟>>_id_}>m ag6aX*[5!*"7|bؕ??bA,G*VLm`9a:y2}IrtбWti%%_P5z,bSEk셀uLN=ZBxɋTXhE(E .d"k]I+37 =)[1?p>)mxJ4#ǭؕ6y m&)JҨ.hR<Y Ji¾;>a\TDjKYkȝLcQ[nt:i}LSyz}aP✵(cG۴qI#gN:O}cζIQr|4ى#7Uһ\P܊/=l)+Qq-2'΃1@a}Bro_t),ӴD X&X^zϮ\`M:_vyYz5Y_%%Ӟ+lƳ͛oޣs$͑^x>1g[zuVWwt\gWJ`}܊EՕksaFQAJc/,\Vs\I8߻Ӌl :{ϛǟ'9ȣ$[$kz\ \E:R;|m )H\5n+ox[F_oDzMF9 %#rAs^EP$A "W%̪IayaM{p M fY0Dy{Afex.lp0rl޺7%!(gil}dPUGBsUN\Ez QuT#aapLk;m iV# [qbE. vԺ*󨴛(/G^wNEIh!lEt)DbR[ULfAC|ӚYأJ!z٪o-Bz>(y-^! Z9ɾ1YY|bȉb.n E}znc+zH%;Ss.dN9S\/;e:pz YP2)abe:Xқhy,L_C c2yxmE}_ȢU}I,]h]1i~Hmj9svNy<{Ɩjt#cx% 8<ҕattI* s|b̘&ԃ+c"8Lϝɯ~F`^wHGM%,so5k;s&t4V:/ yIRpr!D(ATOWZ{9zv0[Ys鮮WJr_%\u|;vQzŗEޘaR7u /Wa8QX pnۓWcl7MBu}fOkalDڧLTZϕ>&+^ uS^U^~/5j%*glJô%*T}}UdT*]QHyK@545bq4ū@)a6Y/U` iuThQzZMee S׷ڒx#n5ۺE+muwڙ2#S^`5jd;q%FZ#ADT wy32 /:+}v .zc8̿,5i_ѲUTmLuKA_Af*JVRz0T\nV*ܪ Sև45mI60gY*gR<Npnm+4k.K ypHW8GnEt :t(/U/3i~Y&woj/^jg]D'G2!!_f~b3zI5n+ΗmWnlx.%Rj-jU*ժɽ;Xu^4~OO^y~x??\O9yΝϫw??>O˝~ߍlɃ.\!PøKi>OJm= +?cs kYz7[7_Se, 6 c|J|ACs' Ɔ_2>%9)=] emW۠( 5 =dW9qXs . T..UD^Ѿe&qz3*IObWJC 0 qmkK #F<.򦏫$$@܂=h>9<)p ̒W2Os_xe܀/|B9DĆ*k;4]lm*ק2Ih݁g®TkM8/S բуHVg QK0 $Y\hڊG@0JE<ߥ{ap  ~^~ZY{q#dm'[b7hJ䦹؋D) 1DjDcN,^0-ɱ _nqK)jSgϝ ɁLl|>ʩ$k|3%N+7i5ORԼm]U|DDV>pk``lLK\XJbΨf@ z+j4-C32|6EW(h\pCA-vMi :8fR3j 4e('; lsD"ܠGx R=:̹Uk 9QT#)\.VR))z8b7#5$RotWXCwoFPlMJ8ض6J\̅Lӟ@:喕" ƃ< yj&cGu[IjysJ&JLt)8{Z [> R$s6Eo '_dC@r.&o$S Gu~wq9OU[ݬި-OS0j-$x W*R9}s >:4F(r͡l~6@l.XsjJz !$oCOfu[˔YTy-yLZ>(d[;ڔiZ+W Lo\}?DM#[Ly'Db`]+^UU1 畓m*CVZY @Kv;3PG@*]Mc.v? b?7pshY=U &yRV P8{G_VpkGSWD͗47Hut-0. >*l VY)X[LJz Om̒ (䋁4sۀ8N@^9%[%h`Zۂ\徣IsL 5f}Gjʨ.ZZ#"xŸo4$T+3M簺7*AǰYńޣp̕MFF۠ʹ\P}Mx C4auVHk*d :O1tNm#;)k e1c4ז̜^ nzhMW朅۳2UL!S [ 輵2*my(AUاMCth%cFaTwɠ4gy^T?of? +=KH&>ɼ[{yZݵ7U\ڳ ٤ys k{0ni_o;~YKR | *g-f.:WlvEd٘,:>;^?ޫ$I]'D 뿭 _^8cj 1Z2`?a f 0-9Ncu5: }R*o§I\{&y0屢[gPci֙@C?m}}}T$UűGTrY_)~w}&|ϑ3srM9vM+{x/>Mk+}kӲ;,S=x)1BOR|/:ŭrwx<<0!j%:x3r PUX:JhbayB ̸yo@G@E6#\CjCniEbϪ%o]AY_;0 ?ixnd|kYNQK TՙE.d Z&кyp)]eCI5v0f;*P!qڢKtEozX;S?/ݞ$"l'pHNd6Lwz.Wly-R['YXkz]R=EOm|Vo'S^ EكecNMFljS-#rqaOǙDAnIHV2b6PAf㝯Mf] *лڰpp[zDGXiRn2 JNO D:%]U_+LeA*lei`N%,=[9,C.tcD"S{Ҋ>>lGqSugI+\GSJEEV[O%FkYN] 8zA8|**,zqȖ} SoKFWmuNJ\qx+ ЙS7-%u?mn:Mt*.zJTbm FP /֊G{H2 >}C( z\ک[9'im);Ӣ \;Tw~ 1)DiV=.-}K9GUqKo(uETGn]fu@IƯ \8YbO]i0OpBy]3>"8@/ &]uZ$~3>^"\̧dֳXYc0, SOwiVbkXVʬ+"ܧvzpf7TC{qda3'Py ]%4˷f7YkΎu_~^"2CŒRl6KT m)kQz˾ȥѺM/ǶQ1}M.2f%]&8ґE/:A+ijFsm,8+.(ͽ8ΑIf-Ơ9‘x^pY%?9w&XY)%:1 Z;f/ڨױ_Z{fqԳkg*Ā7p`Sm`3Yq #ۍe[Gjò ݕ歍a#eWprӥyomF b![*iRsn7h(}8Kg$꺟8ܹkmGs%K9ʭE:QFms6,u\pRȵrlM6l6f\WO"aK} RX/Z"1OfK|)[{;隆o>S3mr|x7ѹbZ6Ai5ɉ#v1QߐW99>+Xg?u ~U4x-z _Oϼɻ~u7k#b{rW &T *m)xeyFw E#cSpB<kNj?gW 5Q,jU qwoMa'#׭s2KneqmMFŠ;/rsRk,P:$/JrH8D;#Q@rPd>Ue9]ӟ δ__>n?Q|l@vneV0٘e;-9崵0r{j (Pz=>Ŷ^Xg+}PڇU*nz|mwE1pmE90s܅DKƜ )=>VD; -ųgϙNe9c>ޟOK+?><^g,r"Z 3{d)dKn-szU{jXR?ȑkHY\U\Kte=[u,EMepRT`Cυ}\W3s62橾sSvX`ql 7Jg4|kTEP()Ra7%! py"ZxDr_O>7_ջns|kjg/znO_x7?_g`;%}C'J 1`TlHjH>=GtvQÙTVׯ5uƶ\@֯Ҏ?G;tQT7W SN+dyΈBm\iIms+O"©?а $^P5 DGMtZ:| rQOJiipMtQ;Jw:פ^ evB۫:bS_3>sp-ā@u߼"Gت7sd)~x~߿o߽uŷ߽~xI=$ߞ[:^?_a'8LZUTPs\6:E|ba#@4-pG o juyI9MvYa)EO21zX@'vFľ {ߞS&*{&fQ v=#s+F&Ŧ-QP8Z&PI>VcISӋd%ذ"s+ʢT#![)Q33㵟u_ endstream endobj 15 0 obj 17262 endobj 16 0 obj << /Filter [ /FlateDecode ] /Length 17 0 R >> stream HW9#I|@qWشjc;XFq+@RБp8(a뽖5m=xO'cՑۛm_l.9WO7nΒqlcJư_g ~2o# >[BH'[gd :R"scldیsu >Zg'Bɓm$4tZBdo)6SVJUEldL/_- 0T޲ֲ :r;vNsJWG =%kqԔ PE-ЏFI,ueɖcI^rCut嚫蒑њ_;> j%+-A lH`/*%"ЌTTZjMu~[@Ǿp=RC^+\1WC@FȒ=חAԢWkK/_ 3+3kOj/-+ kf1[Jbpvjܵ |32'd@l]Vf<~8 lz#v5:b॰ *3SKƳJ?rI(.[+Tfv=7NWx=k>|(p3ǃYOf,f3&-$xk`ę:sh0 $6B8hUi-Pț(@Mw^8ưR^HyWx\D<91^#w RxDLSO*V#nȦ\H]!#N~ 41*0!j#E*JbK# p騧Žz}pw:$Ԇ9$h蟜$rRzVsbh̦zZ[؏g!#0"`'3x !NBrmS6Fk9j銧!xҘȃ/t4xu\*-/:#~ 'a@wXwϲ̚j֚oˣ(_Zϛx),Z\j<%*XB%Re_\EyyC ;ʼn1k@p=:0p C.K#ϑ9E\ۈM=&n4'Ogk_\hEcoh%W[/6EܒHڻ@^زM>ny ;%_1{˽f~K:kvOwVi,1CSx|KX0z.t@_#YC5$Vk0CSUs'K_sVBʧ)c6ê}-ƮN"YwG)$xh1١0 $ClY@Nǔi"A6ZzѳUFʰe7p$ʷ{iʬ!-EL?<6>M5N o x]P b6),17W,H {FTe"T{HO֨g6рdaq*VBS}%M! E9AH!َ` .m]Y``\QYQYO^ū3ZG;i"D:h֥d_]e9N5:ĝ\kM[kH -:u\ ep]\֧eC.cFnhmvWl21}"*1%slE$1rVq%x\{TLu켘#G즿hTjdSn`n~$O|5m#tY Ao[Hu6ÒVTc&YxuCrFxR3J ) BG%OW\豙2\dnZv5& x5UْM򀭷.0?PLGX ^PΐiIΪ*%fҪUr)j9ђ䈥9HQD%l x(¹i A[ )DlFqQuBRk3B; jeu3E\`+uy}KMV~@7.A>ox( qSٲc..PԷpqkCCXt/\p!{߿lsw,мusv5{)Nίu##.x~~ -v΄sf3mS:l0*Ki6ڗ2;nZO"%,L)cm'FN cVt1q%5Lya H/zR0Kg9 4՘4K(&,`)F5nC>d#0¢JVUB79 N_ )M9k$]%O^*G) &'H2:IXzP^YS} ]5ht0߂gSM FoYBn n%->>pJYO5 0Vشu|VL"my A:E68yrrX'{-9ܒ{btw'x8-(c)1wiOv.ꅩ%Nx( R+*.BTz LlIT[tK}ݮJӫ_?0#<>PCO] Fō×eE3MMufRW0Py=hd .7hxbن\#_{yvV܊[hHtUd/&4mgQ(&md {¬J:W :6Q VU$[{Ϙ PGNrGv)h\9+kulxu q&Njrk+Ъg?$2'.|ܱ Oq+q9^O1UЕyg׸T-)Sy\ls"~eꉃm?ݬu~vKm5ãPQũ4aBed4u`CGo{ƹI~vG!Q86Mk\r]&]`zΦUdiPxCQQUN*dW24 <Ĉί*wO/  / iGBd}vYBen$;d-m+%.$; Kpܮ S-]VnQna{.h_ 0m%'Gک+#tOg5Ѝ%- QWeηsXǃڜ&nb 41釨p?S7 xݵ*_Ɉ4|}Zʷ=k&&0tCQ]no|h]݇kl-`:YWZںhIb(.5FJBW/' .__% &!yzŝ#oD\ ur+%;uvz.6MľQ#ͩ,cͼɞҺϮpy\'/و aNa/.|a$?;(޻7S"`QãacǬ]#22Q82g+_'t]{{o{y<Ĝ#pacݟnF*}-|C!? ?_~o~?᧏2~oxa>sJ_=} C~/sO Hlk[)yGsw'd#P )YK%)qB4ہ@_sYZO>vE;Mlޘ޵j܄L2cc3eQË` Aȫ.3{7*8pqZ7?8"֝c 3/݈y[5YAËA 4usrE {Nb{>{G o=v3C„fop߯c') daHO Q Ӳu!,AAxjOt8itr5Ьg^R_'tZqXg %+#] >\1Tt 26ρk1v&)1sⲠSH)dl%NZ+kY F݆ސtsG1 RM>joSajVrcl+WgkҔ@eN@|L>lM`/iXYeȟZL86UBPX`uz%qCr.§BUX27AjEQϗJ]Er2 33cfP l$"!/IcVz%SSNc '6jMF}u,)68⊊M 0)4c L 0᩺D≁\4t^kr j;PʢcM b#]P10sCSPS=ȷ!Oѫ4]1 Gƴ >LM ,}Gb΀#Ǩ>8čZ TSjE^L_ І ֔a>";fCٰD|j.P© E}dDŽ!R.p1a!0V١Ȱ,d ]C7sb;AÅ)$ph|OBqAbN XA)yfN|g 2dKcs/^qWQZ0Q S?46>aiT+t #r?> ""Ei%BcCD=a3nkw`ݖ2[3EƎ)i6 CORtZ+yo/01Wb0Xj)5N(`h.FԵ,rHn qɦ&QÜlwsId?J>P,[mMt||2ռJƺv_,aQW{X%A@':SVZO>! 5չdr]Nwopi ;f,]XHu|xjfOkʒŒj[Rh"*~'Z۽kSPdi n>ù  +u_C.bNH !ewplL>% NM>~J% r`'>  ˛hᏐfk>􀁠xC; HdΗ9};~s.D헎WKonر~zϿ秿}?w^>"~ רr/~7.?Y.ߟeoAU:o$!wo`tUq}cwF^_a0q:0VWQGV="lq aDg^mq411yh[+a1o5[pjvkGOz6N*}!\4AȲo~`d'>وژ N4ʬQs6syۣeC,?-&fĿýlw  2 NcH# hfXf̖7/ 1ֶ19ri{<;NP)6s}Z7 6*Mg^8Yc7 ne ZAV 0x/ JJxDAZf`k*0 ZDe*dִ\ 'af]JUCD͙UU,PoVxvZ] ךVf$x˨,6'ր(#x@ |%/z.ĄW^WDdQ x&=L#;of̕0XfrΚvP4[‰qft_v,ZC.z$`?,Zs'KOquV4bM8Yez}/FpeӬ2#¼BIgQy:XL[|!IE|s 8Ԯ̖us̝`TB._8 kz4ɱXY3Sk?V)1NP}R&2z i@)0Ivd}qoTI]3tHgݻp('Ӂ$l/'U-;-gK<·|!:ݼ[ D*rPX7,iG٨3 ՈdG/}Iq9A1ChFR¬ck7FB%b'*r ,%`퍄QXKbB^j;^8PGK`Fj/}{ N kS:%ԧtL gV [:&%oL7~AtF/IVWR0A)lξLP`:)kI:!EIԫslI(Jf~!lt,T5?f GoϘl2bB8s&Q J+ck~ݫJLRp7 \ه4D @ؗJe2huB`:(192;ݓeUoA@NQG]wfbY+j'zRyy\-L]l2]22FI 5Jzg=ʹI[ ||Y=n-(2RՔ +6)FkE-yLXu}d1K:-醲Sﴬ7ڎ`k!LBNKm."٦+2òC@jLq2Q܃I#zq ۡ[,D5@-AeXhBzaYcb}cF߂:w;dicѮ PX=Z`IjMXmy#c VE5;A8&a#ٺ2fԌ[nLDdcTmhB7+e$?QN(m ıkpl-nT{. &N.)NlON^g 8|b3WclX2BZl&${\ƿPoi^f0LNb^Y"Slmf8%00|f9,!'W@p,pE N-6\JDK'$Ģ)EWTZ;fɳk*LpPOE"fVoٷ8- ml}' :k,b2+Si@vorHgf,!֕G>JWhg̓+"PqW&dcĮT+\}ԉj MnRFFývȨt\%5@=BG3pՆi\DmE"pٱ$bb=Ǚüϩ`Yc~,Pꈪ,i?YĢ=xz5@ňϠs VxhLㄤ46KRy1M|N6خVwqg'Mf=*1 )>̱jB\KWq봧hŶ`^U<IWx"(q?~yVǴ;"{s@p~L #e3P%Ɏ3xY>cнd1V#N6 kBZΩoϪ?K2N1zL: onS.ײ3m淯) Fp#0 w>\Nh LZ:ݖ<>|HclʟĤ7 k!TvCC3>.xvI`.)v߳z փ7ݑ3 tl _7s)C1m}KI@rML$\e>lQٚE#Mh#uEurA  ZbC|f:7:W^l/-<6TD&:cC2/Dc]]ƶbC̏!ߪܖW漽|zA?=~ Hgi;/KZCіVMV? (3$Z: 6p)O~ZaRBwaTC A wߋ]S6nʖ0 X}\c)OƳ'0 um40l tQf N'{z0`N@S8W?Je*%|4sOOQߏ]-N]$߯v8}9T>(t5vfZQz优WakC|R-*˓|z2b*szn YHh0 ؚNﺝe۪ja}B\橯RۖKgU;:_AO,vM$F?^jSh:B/]wBc4xTcWN S0wxÃbf_g6Ꞣ9ZSXDrYxPjS)0:׶::_VB lWj>4?n69*lô;>m&x4*0CS%K5b]TRXtpzvxOaQZrW)BкucrGA<j]}0XDB5$x=v,QeWFB! {rsZ(D7vp%<ݱ,b4Ӳ_&BMo]LJ݇40NVUm%]#% <>dP/9R-W˗~[D2Bp5/R2%Z.2y/2А !nz0Shjمj&XF2WlSMn<m7nl'a`[)=a9- \LThOW2c xz҆WX1]zz%c[2締>& R ,^[tLn͏я{LO~Lxw_KB9\ĮUټӛDݠ؎.^4m%ݜORz-AB;C9]лO°+t ңˬѣaE./WlWc7bs R`Q=. ]* ! :JyAە] Զ/O=Q$zH BhVMo,,H$$02ݹ-C_uמ^V$:DW! IAj-w= Pi,+ϟQ" ;8ʌ$,' xL0öooV<Ȩ3H6`RП% ;>zOe? /wk!n&Xd{u!t~!=ă/`%km52Y%8j4`O!v\?u:DɇLO mKP_ C0DHC)5l4r8`z+oQd@n#kZ`+m{#v"o_R.hu٣m^rԐtƓ>i$ Ak#!}1gà!]rma"6*&*Q\(1 9Spؤs5zԍI֬.mc+@!$nn&hwm/%S"}i 5:'mm~yTVI;Iᬹb5iN,Lwwggez]=cGh]+CŒVgv&!~/Q+u b}Jׅm)$9mdwLL%nF=X? {$J# v紵K M9Ζ:duzoq1acQ!M uTJf|qy-)F𪅂`z|f8FalT'S}%@kAlJMcIAưgb- خT[uNiǴ2Z>'}gsQB-"+ ^g, -͖(x24)zviGBmaHɹ`'Rmˎ#wc*+빔.^H\cc0 3cن#+#ܗ@4DWeʊF$'+^hoklZ<鮲XE2iqZYRXkbm VV\&ȦdXi˲JTc)jV3_r2v~->eu_W;}c흉NA6PJ\(:@sw n pXN@#-ۧ?>mʑ]KԧȈ-kO2;J'Q7dvSz5|a\Mދ;Lk}[d:0){HFйjvM%ck[9usm mRE$dN#0I0.\FJq]4k u?"(x)Ty흨l|x ȈJq,@22zXIl;`B0 12\1%Ζy;R,J ?༽`|8BsN,HӰ6^A˪۷FsF^*QXX /8R,m{]]?~XM+&`~/;0: >yM.0-:nYi*bWFfv1Ϡ͏ =*.$nupͤXh\v7LʶaNھa}T"SuS`1 l8JJH7O0f%!/ceIn2y=>59RHI\<xV_}d"so!!lHb.`)m.jdgX-f/<a0"d/bn)z0CZLxx$1nAKLc22`:3/,SyE̔¶:F,Z|{ _i&ؿB__ # ]fpS.m\, G ek/!mb%q2H!䧻p<ɜ) X&q& )IKoMX39A ۤ,:"@ZcHݻO?T_: Nf2SA<#]6+LW:J` ʊrpltK;)b.MHp#թ)!T'AP/|1GugE^*Xvm)x j7لXZ͢c=%թhuPnPZwK6𺹶K7eFgu;:EMs sqi>4 Z }?VA &H[3 "zw9lc95j%n}WȱTp"¥8-oJlm׈&P\k<8echeweE/9w?slqEA=MMB,[ x`80Tmx#YL_*ތM _W3RNEKkBKŗ}Gy(}T)̀scQ yw+K%lƒka:rARcܜ|3iGo(Sڲ[}jn$Xd< nj0&sw1.帣VN2"Kܜd:Gn'-2KbQz(Q.]X2.AVƋ83¥ɨ&c.c4yK~4pJB]F==SݱN%6ȂM0|VZL*-pl[Z4J*R1ԅXqv&KuG- Ka&I^Pd Ga@@߽_J';חקWߌ?᧟>ן woo^?:I1Ÿ:׷r*?td+GL4L~xo![$3m] |o {xdA. X /0brr g:X1.#SSC݃<ƫ9'$mw7V(zT5 d@J~ˎ^3~?%CPDh0|~(yL[wn[_'0>wN:1qVj;-[-5{guBh߂)tȩ=Qѝף$v2%N~σ9'.|`Xd5o? f,IFN31o(O۩t%i^<8JPa vЫ )Uy 81ú&/1Kҁ/w9†Ҵ`x~F۷-!AP9ܛܝ$zlH6f.5g :U^OZ>^뻕U;KNG@hH['>s>LCᶊ `u2N*tSiƳ'}˜ֵ 7UF2]:xY.JiPQv{Xѷ9x^9m$e37{d15HQ]ٱ.Xk\e7 ͕ tr}3ٖ[8Gg.*U=E 鏜nd>*% k5Cܽ_O4r<(^da7D`QPaGu|қʨm#@WD۷7ն ZKTt7}(r JwG.P@GH\0]I(v=ۯ{\,UvgܯuMtW64=?}Ri)C};\ݮ/~4Pf铒ma-UTٽ_ODD=p 32[2\kKL]?S 4 1& 6G=-ei37î]‡,zQN U`k@4^^T7Kѱh٧E&L1%!@i Nw9ni Z[I: 28ލR:0!鐠ʍv ؒ_`O ظS/>w.mlvC6Yȭ(x _qM!aU֍/ @!|3m'U)>~ o fJN}8Yɾ32pu5a_L~cMyufhMO]4dx?^ɄcN-H |Q'ON ]"n1 ^ })I7W):^r߯GrعxbS%>Is.*P]FCF5eHl|$ OU&2:d(Mme #yq[R0b$ґ-OQ#egڧ&W|qIDPe_#>x{`ySM9XsX`t[Qg 1r0.?ZI,Rڒ`&T2mPբ*K`$cpS9 FNbh]S1=|NmbyjF,2nu^0WSGS) 00jqh BOnuKYC&\QOPX~e˘Z: Uv(A15I_u_$El>̻i˽UEӃaDexޯg&vՆܴXs졖n>p.:6֗BN*@q*{2εlSÓkXJ{͐ !U=nʵH{J'M6պ h41X,Ӳ/$r"6{LrJÒrH<Vh̓ KRUk_/?z{hi˘Nr5(R3DWj܂b/=XL[QԇguUz zՑW;&؈`hTc2%ЈmLG3| z'G 7בGnPaNs;o*zwm0QY?cjU5]VR܆čI+45!_]~ͯ_㏟x%뇗ϟk~ x Z/I8a.Z̰ƪXzy~ryfMV3 ãf'l_ ?!0jס$, J=ѿ;:..{X\ ֎Bpi CX0P7$U% __t}X07#wF_i P&D%AŴoZKebYm:_ǔ!G{EM}? z%w endstream endobj 17 0 obj 19345 endobj 18 0 obj << /Filter [ /FlateDecode ] /Length 19 0 R >> stream HW |}XEJJ*{]J:0.`Ŧgor-nqP( /ٙ}z=w G G^՜%vf˫[y̾eNbk@>q~d=G;lᏵlmXKg{{hu랏f'/a/,p c_pȪ_S:nA{->ȲGͫi 0nw:돮G2=mS17.->_ᕼ>OV(iFpzlw9dkܒBڸo{] ]Fp{lc֪| V<D0@e(3xb*޽+ @en lVw*3YB_&gm]p45cB%71S6XM`-o/\\?M[W>*l H'_ۨ砃 ~T,J|NTn c,vEjJoN ǩT0Ths})sQǢSU_’'|DcJvǏM#s5 w $ X ^V%^|-˭⋑q񉏮mJ~d IsY4:c]ÁٓWjfvE-+FS?wδN6-pϧ`NjHLۘTE6\9o#0^bqsh^`@Xmђm^HR`j݂lѝy~ ~%thF'+y$ZtyZJJJ4>`r?*ş!D >e)Gi$ԙ96OݟhIŨ8SMP>~^ 0ݿ}?}_/>߾ ߻SA`pANiޚ*eQE{ ZݶOj1} TM$?kj6GZPy'",3EFA/ӜLQL7K`բVd]m~Lj> `mϼuYȃ.)xJ)f/ Oi/,yq15l^Tܕ49KH)S@.EPS75sF6qZF4Skd4ńݥppT&S(xKUv^u]Iu!La3sC~^di~<3|@0 \-Ĥ(~@K?ь_ZYJ*%_)wML):\ƪuϣQA" ULq'#Úr0,ݛrؾuP BE0kps}*f$*U$cwM Iỹjy~_='OĤ~azҋ'P*}PnYar-u`hdx^ 5ɅQlĶ]?Ϗ#=M~Ӟ\=[[[+m%J8e\HU{;G-Z o7m d/ E*d2SzM_A2-%xzQوlJ;aٛy*X{}Ms֩3ڋRm b~!$ _% :7k=vX5stF EZD^ >mSsqO lp2&4%#l/W-ms%̑?% ;K“+/*55& ubHiuT}y(x .,aM@ ΓN:OŤj1E7?p5{vAs%%X'X{. zLLe;[J0wݥ G䪤cfK jE,N1ngxoz2]=3$u،FQّmx6\#ւ;~ngjXxPJR-,i,u4hқ~;b!~(eSRU9 dFj=[Z_«mE>9̥-r!!`"0&$r S]=j+FHZjgzCu׷Ow+:o[o_>O௾~~} _>O[Ïl}À[cF%߿ k{_™;kF}(*뚓.c7 ph{Rh6A&.8o[DPt1_*H k6 =RF{s\1e]Wz;<08s H{=8½xOZT4ɟ|t<~;+#aS~Qp0+ T4ώ]M/S|FS>;t-9#{iE:!h4oiu٦ #v <^p`]|ac ?6xjcn6/e_b^LmkGmr`{1(*6+0RM̾9%冧Aɟ ,% Kf%,k,z!Dz4i]X}Ŏ).` ~@ rsg@]8 A{am\5q_E( ^sƬ~0I#%&rQgu+*֥e`(a/mUϽ !XG(\.Zv 41O$ċLѓ0avAoRr.*0Ǡ|֤WFt^نunFkǀkw숗<VI<5i0HFkg5bCcIkۍkep!@.梣[M E5rץI >S5e˹_9-!N$#HTPXϳpƓ% 5i.$5WI/]_ mw.ZTzlzu08^8dBf9It}>gVQ[xЕ8X31TSkzcz"vmSH}}R#uGIGHξvoGNqŲ-gYD}tIiUg8}J [^6he$3W}m'KlH`J@$k8=b;Yzn؎Lu] [Iu(gn>mebYTV0Sz7IL.#ͪыʳ-%1UIiN~ Jm:,^UꃒƤJFP Zupѥ_@XzJas.}y gN•ͩ g nlCQ[u5{ 쟻҃-AQ{ׄB`sȭ}E>k%+t~rTzn^̒*d]Y܍`v)*Q#{Hmh]E \8Bz¤Hp#۲黑4ZZi .nnkʥTsB#:$VXҕdrgYg{c[dLS<Jp,WjPضEXb=3lI-eλZT[4O*HR@!Y=8N5w؊oN0ybUdĔHJ%WME4ɅQmZZc `2/# u_dXK=\sev4&M^rٝ-zgLSLxȕS€1`}1\NM#YL3c`b,`}PFvQ㫸>B+GKN¨SZhm3%eX'@`Ao_A,>S~URDxbU!@$/pĔ:'S yic津%bSYc(#kjlDݓіZhg#3hYi2( ,VJwـ> f^klI j_V8J1r&XFQ0p8Ox˧O^1=]IGBQҀW0 E#-CҎ갓%a1*;>pǿ Fti֧0Gjd+jIv˱9'aK,l)GF`s c5_e`OM#@bwɛhp2zcf 7Ul[jö7`c`EWeFuҙݫ0,}:8 `8iS \i-蝠a_!ZӞT<`FpkSXEv phMsuרՇGA8-a7/h '?4Nm=wxb;/,#+#7Wͣa#dRvAކ,ж].,q `g* A)>Jj:SJgS.sV:-e`Xel+R(0s0E#侫@Zo,0S[/fl1ɋC>) N?9iCuGӻTPfzۉ ;%¶AwJߤOu<@j0!.n[x{ko}Gi(>`ȷ8|4ְBͫa33БOXǵӴW]w3? $l!i(jEMYsXɤnVyۢ)ǰ .5y `vkaLa;S~,{07a\Ru͵s:SSM2&a<)uF/Sס<&]ՖW}%1E$&%u5v q`>d17AےLs mmvRqR:H w{IȒTYhO:5PYWۘ;~kc5]`%kZg+Fo[ E}qx^2: jhs-X0Fk+HybrAgfIBdԵT1/؅WmVX#GImX PP/x[`6^5n[/,՞yјbȳk2^ n@VZc* k}j<*Wkj#1^b͙pM{(-jk` q-\~K*【{wiykQǯ?7$Sby5pR  .^}ͺ3kl(E(k5;or@3&\î=72VbnTKxn0qg oaE8>ɲ.ƖQ(yaÉFWVWM+o?{2fԮy18꺜W*.fm|"QC0-^SUݹp㕗'G7>o¢ qs~JT/yq{rQm])MuR_[߻OPewSAe ;gJ@E1 .tѹK5lM|`gr7+ 1'jr\?~QrJ4&p<)Yb$a @9/xqg*PJ ų7avbbXڤH@xZj Cop-0+N:$KO}r9+g< da=RyĦ͍Jx~OGg+]Uyn5z x,igo {a+xj.ʳzQmzw; BPY9`/zKj9*k$0N#ԍ5|ԍCwsf}7M\|3&5jm+ \SX?S:21ھR`|]8.\_`dbQƠ8*9O PiV́yEg|;C*59,@x9[bY~` NPrXj+7 f㡰5Xīd/mVkx1TlQ pAAWÇ]Sê]aӸEo*$'oTkayd]^#:8 /%:/jQfjcS};#}~=ܤ L͇1o\OB+[!)qa׿O9'}":;Z|5h.$|`n6MoFF鎮4fhv׃[:Y,F5z]pr%Yn+/vE \l?5(ꞝM0jYZ"TcF]PŚ?To'^BAMZ_ٶ.uZc"vn}Gq4EY逯RUϺ>n}bj)q*_޵;tOآyP}Ɖf׃`O)d{%QW=h vk>uPۉ̰Z_b d8wqp4_߯x ")xGS^3uQoFXT-m ~t.rr6X}@E<{ǚPE&֜qBk 8gL~'L1 KB} 2%FXMO8,-$X @yNϰ[GT+o|Ssu|ZiZ.L`/tt;"<-dMV(5.<H!se'ޖcx8ZA[e4`-1JOt D6Ѷ~rlgk *ZC1 ³SWUޜ5Tu  I.yʞlPݮmh&S{ݭjNODlӖɝ[t;nک$8vZMZ dP[ElSN*XGtxJ]E&sWstZ93K۬~Xɪʗf-hw̓p*G-EqP@ 4FIx Y0K~YsN^!6}9!Xε@ 5Fiy ~m]7/W+g+"bדt#o"lu<e2'Ɠp+ѕhpCAUAn& ci Ԙ3;rLjwTQxo ]+oS0Jl`їYttYUzw:ldmM6 |N;D{:=rY ]2mxUDv.lO-xK[Sc>p$Z䠦s6>:l1}Ԍh=^I#R[2۰h[jV "D[QC}t]?2 KŹ-z_'Ѫl` l3ZMQ^I enԴ)kiBunc(SꞟH[x:Qcu%P]$y!]=C*pK_cJ-fq'zCvbSs55ᇱwh2ʣ8\M{[`,90[RK) dRabv}h27dXKϰlЛBQU^| -1hkfvKà3I@ufQV6{x= [RlDo5?gcF.LS^ $=GMkj"k :{=Z-gW0[JPM8節zV+) 06Vo!%73k ̿c*K]mH:'m)+%ogҭ_r>jtS+1ϼs3Xr!Y\cH};;0oh4ӠAT߿b9A wpKA٤,\!@q2Xgfѡд߈IlV[%JVxJC8LACpH%|Uñ:*@57#>>cอC\ݎ]GFX5gF%]Rxmlm?Dc@ .$3&u-7eVħ%!lb ڵ#~}<Z2}>pnlKxL)v B=U%'0RC~Mκvֺ{$֐hOTi٩r̸{y71eP)Okŏ+? AJ蠳u`MOtAoN=@љH"ҒGMEcOYA,%=nr.;闳N@ wɂ)1V\I( -ÚH5"Gj[8_0p^ $IR0!D3AaYu}OaԮZdBC"CKΪ<`ľ =UDKMq`9ZV(3i"i8(h `!JdwF>am" HTF9)eX_p3rh2"]f4aK-0i\`&{7E09R>n 3[Y9a.SupBq\)[ -3.SJt?%5غZH51Ӏ+J쀵(KIK^K I/X/Z#B|0v Cp!b 86#&g[EHYR S $>¹C16{ M!.:6-CQO`w!:nC IfQicSQBeul`y8wBeHIpse ֥Ҝs-Ǽh#f5BXtJԋl$8["DfHp9#)8&W3#],zvEBHrx~TU$D dY*lx.9ս i^:l~oom~_~??9㏟6o?~8Po7_N/_|*>>77/);Dri9p1!F+nc&q]x~-aI f<ǭ>'PՎ\3DUUI ]z pd=P ӽ8` ewW6*c`M-QdvTD8q ޤU$,)J[V ׯKX&n<)9×}ϩ1 =e #_ [օR9EzB3nzJhR3TyLtJ|o#jAp^$ |­EZ ^VGT:3{mT P|XOU vqFvL*=GbZT`D&OP&$GtMv>j`mla1WoYJ0tgtL2^Zft@/]Q)ÿ7E`Z9hlm+WNt"wEWLHQXᙁ˜B5$$%>J.L4 0rKԎ~CL%lW6MXm'QJƇN C\iybKc2O3ps iW3A] Ru v髸(ʹ¿\-RcV`k.ʯԯ~?}zx_N _OO?^}7?=߫`G jO[>+ԍv*Xf= TxᯤF^}=hshh#I#VrRj]ue[ղ=ScѹńQ h++@wu>l[VxMkع\Ai)xrsV*om7UGÕ*DžrJMUjpLgUt׋NoQ3*A /|YQ uq'&=y>t9Q_m%gL|w:펰9bFWuiBn3|xC؃*<v&+vIAB1RpJaK! !^8mlz:"Y !~ G#b+x+Զ9$H";|N:kն=B)SZrgu4Ofomxkk9 w% cvuc]:_ |v+p8be4&T\ |+rā JYͷ 7_åRΥs:~Cw&Rb+ &]B0"PXAEƼ&Z ╒<6˰0ZVtal*HO6i$89 0EMT8HV:22x W]2xBOͩ uyJ5h$ard,]8bUAVuAahnunGEzhOYZnib!O=7IZ-J:UR3ܜB)>g2n?cx[Q^K-6l -4ŅzS X-^6Ѷ~FeD>8lg>7ꊏ'ooxoY_gcϋCi)k^ %=F BOzL[M9nӋUZp0-Ge Q%Z>__F1J46߲H}^d6f<S'qqļqxbf^gˏ~*IRZA2~`)BG/n/nIC(ѥ!aVÐmpAq6Z,mnt2V ƫ--4m|b`x%0?G{{Z ._ ChÈsNCV\}`B]xy.&Hq0촥V?fj鬁5WVʣӌ<& aoByZK; `s78)0"%^VNqTOACVg++ \ ^ h${$mK]IPT g9t_~F\u3݋Mm?ZZEW(6= /Vˏ[ e(ňj=aaD`5-CDSӖlc-{ jV;ơ{+yT-N]܍CY0cq7%02% %MQnaYW Jś%y ^c2[xW]XPj|FkU;~fh0FhQ X a5%ݕu/jSFt;S%oQ@&o  )*2- #J#JlD#u辕ctmg?0ב%܍ti{S=@(MNq:ްzt`) _Wo{AbXȊ⅌,I6my(E*\j h«}s.!l% gǰvWb6BGx8GE)qh)^]_[SۿG5@\v*`NI "HHꇆ!CT]mK@or/dɎI X)+L% o?zu+UOE)b}(1#%S 2_7\r561 PBWҔ q >mmv&݈3;vy(n:Ɵck6J*LPLRT!p՛~BL#Uk =.ͮ(=j`,mMOCY翙$'9R\F1l^;a{J5 S%߸1RojD 9LeNS:D8q E g14d n_ !BncR{@m-=p,zk],s+`4nS//}Ki<5N2[Ayɱ=򚭒KptLu!{l:alq(!a=.tq^gJA|no7mg vl\K8>gaE.lkEuf*ڃU(`ڸ)_G5 <3Iac5c M$ت볇%,,6[kjU*Hh ju „XfoN{MTg"-'/ i*y.*['nX(C8ag,Un9,GȰpUe 6}c| k@{0" OR(~LvG^U/>.hb;8-Rgs{=M?>"h5ɑppuL$3 t;]H *ҕLa;ucv`Q`K0~[__ipA9 n) IpAmFÁUC߯t[>b,|[Gޚ+&瘘\y-5~p C[m(( 8(4̛` ښ(?q_ld)mS|ܜN۪%JRixWۅ|/:gpmoGQGE>]}eu׏gK*ݴ1ٹl u匷J.e[)fiH31P4zM7-q[\my:Bmӥ`(\T`+PYeА<<%ԓG Qφ#N\l׭[gfgnUAU8u +$%}l+NLǹj];ڌ|!NZ3,9=E.%MIֲih$DOk̾@b&9A|-kD]`U :$5/{- 5ń)3QۣN~^_]}o…~R?vf V_?Ei'N(MF<< `T~Q9Ezʍ~HxGG݇߰JAPXhyv);j`$@$7+gc_׍X́-bQm?-itln\~^ZSyFz5[~ҐDhng>hO !nʘ;L'?"bM}gKk#(~W .zV_/Mtj 4]?v(|^-+zG M^X.KdpbaB0f_?o##4Q}uSעFsb֏!WnYs D"cV N9@l/@ʰUrc lgXn}}q7{|g]~eZOװ_6LYAA7|E!v ?.6u/@,9-Y]v}/^B)ȍ]myfq^XkRP l`Mu^ód=Do|S͹n^+Rg~{Ӊ' ra͸yNqEMv\bgFb/Ҽ@R:hsfىhqp_)XQ@g+vm[  5'=+2aֶ0usQPYj! WYcG0 >V[qV(KԊV+?rTStdjZd$]"R 9t/%xR]9o˕Vy*Q`g$/2nEAȌ>{^qR "[T%5&'8#[ocFn|4O_|yCu$[׿ˇo~?ӏ?\_|%T~ \Lr=~7_Ot釿WEBW_+Zu[D-u [˲폷+ǔOzZP݇₇ Ed3Zhqh$+! 8wu2Z:;!H _is0 ,\ųdp:6fLIjT7iP^TԉI@Z=r{#ڇypeC Y]%",6643 H(t[[߆&Њ$XSMg/ӮE"GFZ"F=jc\ V%]f;r 1gv؜Sq5ْ7T"Y4Wrq=" &q; F5=C؋]vX7BkmѰyA2{ oudxʖa rBU`fA#t ^sKf[g@eMDEv;e:kU{.3.[>)#efh1S"qj;9Y)fڃ<}gN2y&-4C+{V{SHb:(y}ĨnƎ֗v[wK$:5n!-޸Q8tQe4;HR2 xK}.F c+(,P ZL:dV oinv Iܧhz Y9pnUFcƦbap6@#kOXC/cG}\ɓ f8!qNdqφSb)}MtNpK3lGomY(]Sb,w*#DIڎJ"YD|(aoOh`s_շ[Ū[zLPK 'SJڬ\GXo6iUp7<Ց[pӆ`>niAyXfӂ* _B6 |Bȯ8><ΙVK,8~KγGwu_RMg- 5Cud >H5cԫ|7ȷ p,sZTAnes:pRA$Dl-,5=a%t\H J֡`UE', pμ$󀵵3rwLئ <mLNsJθjX|@x$XkIC;ij3tr4jdQ1P~ i:%dg[@[#Oyı\ز7UGX;fag|H"Eh+Y@?"zW߱WF #]KBұzoͷԂol&t Cbv3^|>[nnwKn:5/%D:Zs#0zT#073ԡ*A(qJyzlpc&kPꚣá^-d"l,1!\tLfpf\Ϸw~|\vW۱\jm jvdfx>dY<;toyo~#g{ J5QO`\ݧoQS}PJXpŽwX : H9fWf $^A_&na{^VQ603g g#k&{|˔Ġg~$!2mblÕ`!%ĪoPx!F])X/4u9\6"@J%Z[9DpʩbXuFcy;JRVj=*!ACI ۗ70ᛲd,O/C-o!TV5R]|E QCE+83sx(2% 0E endstream endobj 19 0 obj 20193 endobj 20 0 obj << /Filter [ /FlateDecode ] /Length 21 0 R >> stream HWn]% 4ۜ!COnSp@QdÑm#Pdy69˚5Rv=;|NBs^蛁uڪ`e4K~!U \nvlepMt;>BԢfy6u^eZv\6{ک}{gl ^{g%$U쟧ls[{:}(vts{9!^fsCPp!\ JgD;IdQwSGvQSiNiT:ooXK)~ztYG,=#|)]«Nln'`[/(pf 1+*{,&֨>g[j5CjͤR'\qaBShSu槧9޽yw{~-=}q{ݼj7 d ݇ ?wǫm=PxV wcUY jB6 J-Zx2J$ۭGZݐRK6;腢?z%o0PGW7X;FȭU:VђS.: Zɂ:fHVO>^AQҸI]EcD0P(;CY<iD=j @'{")ƨo?}G݃WcdT>{;SAq)}#ݑD#i:׼`eYAU=E- Z+ZQiU< ;+"(rh \iG9vļ= CFG]W5BUc<}I^(TTdG<(@mVbfgؿO/jL=Px,G𛍭Įw0;j}fgBU*1jFLZ'J)$KPu]>X$Aꚟ>@'3%%ص!ONjAo tnX`BbcC@>juAL?naː 5 JfˡlcۢqPfآHP]deI.9Ȇ/esU*=Zǫ:f1kfڂqsF,-WA?~4-{Q쯂 ~(oׅu zI% s-(8_.(ƀ_D q <1!I5ڐbB`ltg'LRL-k1#[ XS--NnDxR,[?vd{wW>/wwnWُ7W[=9^}>|_ds̴=@i?ve/}~/t-f:W/{=>'W/_2aµ4 }hX@WI.Cf &`^ё358o[8f]nВpfN8Y[J Ǭ/? ~jp)qq55aMJ%%8N욇*^rn/v݁)}(Ф|A5p<ɐ 昞X x \#tuyЭ'&\({4'?j/[$r%TɶǂG P?=#PlJ/f33Y)l8Rs!)5K[?u%}Vje,tmCx,& "!OzL8r褋QV*Z%:Ѕ.1[e(.:gM k2@Mz-*6S億`M,G5n O)nR1:.IO0ԌB%56!0& 3Fy+#t1NJUTؓA$9$0a ٷx=Û۟wwfR)v-E2)Iu>98MoM8fħsQy3.1{-pr<汿_D憙>8l%L3z z6βϓd /zAa0gLs ,¶NYgm褻,")؏4L0*\[U%Pt_](=RGr UVAZ 1]cH7r0F33^+tq >y)U1ŮIиc%7-)65|@wJ-xJҵJEjҹ 9b0{Cޥ@3f,Sу>*rU+sm$V|ojWQ:POXQ Qi+3 {`W QeS=W0ͼjtߠI8 c1WyYĀ<JT?[Sӝq}7g礋!gQ,#Q&{i;м$'Dsvr٪:;qcI$ypbϹ;Iµ8];Ktɂ:rMͣDFu ~E5bqڴ({BqJ(*/@bɴ"It ذ _ѓRq|Y f=Pxʅke +XN#_+:@ʭk$)2M}6L5Ӯ:V֮MMB9RgK]-΂=0REpPjFx3+,##~3/:nUGh[eisHTA"skHyq>yI1hVV0i.+ hh3*aoj+b:'Ǫ-Uu{}3X|g|"HejGj"S mKZXF+.%:9?#WdiO*%O727;uQ`v}*#]V&s2K.7%6A^5{E(}Q2{0$pcDI#" @i&۽WWFLwet?FB=P0{AV=p`լK-Ke[ B=pq&hY_xYj U;× .qAPwx~8!tʋ >|W K2M#aI+9@m<]t)r43 j)+Aosފr(GL9صIR" +K5D)(!a)vkG{$?F5VHG%]iigR%4.؄E 4Tɍ yd`ZڱKjh>+KWW](3_B[Ds@:&@. FY|oц< ^C-Ľ%QI?4Żo?pf]$J:P ,h1r1T(Yp5AQ&v=ge[Հ{-Oksn.@ MH@g9F/3(ÓQO { _۟}6O~۟~zí?yn?z~{| /hɾzc+~azs臿W9Г_BUty/+ֵ[S}tc']6o 7_+Bq{bW}' +O[1^.sxceklޭ%Ȇ@0RɍFdK0}F鬒(a/ĩ"2if?/u02V*G:%ҷ\ [ ,f"=:1_(78xJ7F\^ -ٷ&a?mhi6[4 [2 pJ](N޼Ը5cΑ* z `=2$Mkd@ܦnQ|$ĝb29B9Bqƴҍ iQ<7GijFjSv!mq{F7͙]ofR4#[6gf*lV y` ,C* GqgϨDF[V]3@$Qz(;xA'h}^0l~UdxwP=& y~I"" ܜ@G1׊TUCU&7 B֯++8 /`֮Ŀ4Ie4)-)-H|Bz٩O@ 3goƭ5܉Ґ[dj S%cby,(~U:Dh3iٓ>dfiM<:B{Mu%,x*VC^\JjXg ՊSv]B7CIw3_q3zS(?~PI[Iڵ$Ǘ|G6?vE9ς'F=kحYE^udfWvvdXI?m#nalA_jRсZȧ#,S>Vo vO`e?/[(\s 0N do ƔNۧnY8lk_**FzT;7~C+yK?l;ߛ],UC&o. M-e ?s޺ ?j6G#q81nߦ2.89lvIGmN]A^&^kIv^b*>y5JMe1sZ&c}&@L>y9syiyv$QsBeI:8/DVjqqjx܀s~7snh޶Q/JWR,x4w)P~}uMϳ5|DV[e*i\*Cq"ԉmE eת#sQeS^%mCvr9YpCFi?oҔV89i~(2CͬS[HA=5Pok F)-mNXbZTx;Lj)<7ꃶ9~',lh<,Ah;ne[Y֫E؅=+:"CI{ mb#:8ոR[ځvZr?gv ndOW0򜫍ssĮFL~3T*UC%6p\.8F{yWfZqaBHznRaԧ$FF)q6JxрR͍3 {3fU&S}05樐]q+1H©aR7{/o|MCtĂr٬`y~y=0^~`$6z8;˰Vy'W.%t&'k;ڃ ] D]0X~-P**Q__M)$v6]ס9ɘ0mZ>[<:~6UrwQV 4Wv昖ӪU˜mkTM{+zt[ײH"gn7ۯnU/oݰw_ǽ0Nk L--`[[~D/~ ;/cČ-/ƐrEv'|OKNs{9d~[rt^zDe0_*;ZJ6-SRV:8n~q#YGnx?>;/E+K2Z?︸cHseh;9f%$8vx`HNn=nܪÖ)S,AhdfāXļA6pgxba^\ujq4xvtq7jJ q(R&4=Bsa5 cV\:O]HZxvNDW GaXgf ,vԳ{}:g#J_y 7;y~4>=X灑(h,DaWa,a JKUf BH %ԇk#ydo_i؁#ZZp]i}|rUi{crHm͛E9 # r&;OpSӕy\P(Ve ͽCthjB*l4.-3h]{ª9$ Dف2m< l6չ$1BAȫ/Ddj `=À ƫsn>yFpj{ۯX? ]i."eZ2<@S-6؍abF pGGq*kCy?U3\Fٜτ};*®~P$":0a{AؒJHܚ|)BHeЗZ Bx:W{G_lK46(46ZPsr#(jUd|b'j&jom ?j%=E=8PPywCsRVy$o",ttT` pQlBFaE0TN5e{^6Am_ΡS-.27'P T;ߎd^P\G&4K6)O P~@Jxl U"PN)Х!C1(?%CmcIM姌M`6DF[Բ$ϓ7@oToDFۗC/w٤hZD) +*NO l;79@QgN xӕOڐ#m#AT#YPLU$dHo2+"햣XuT&98~١_]%(Y$|\+$P@`?Pp)+hcAN@dP@F׷#>^jB&*K-9rlu;meKҖ֧w Vnf剈kN|؍|ޏB6.rTR f2UAY`Ld:Bf"EvpXaVӣ @QHXh)'ŕv$,,-kٖB&QM V(\*TF,tS UTBֹRTJ //6VZy1B6w]_{]XQInQlzCK UlW%KK*ʈb<#ij?;"@Ru-BptF9[졖q)lj+[C ڬot" PX[ۖS)Qoq䳜-펞ǧv)ʺ=/j9EXƤЍS+s{)ftIځ*ReUHZF졞j.Ty2C~nS+W{͜y2ZmD5)2$z 8 %*[vqY\%W:Ő{@ڝ!!gU JFbG(j) vU8,]S-6,T󣝫(1+tŴv:"}hWaT-X: MŅMŹm1+nաMmlOD˟YYoVJ/?2ͫ4>>&YrGEXiwi?'?bdVדW7Yߎk򳘜|ȫn-e|׿4RWu ~|lQ&6Wiep/W՘0AvU]%\-?dSgC<1UIޕ5n萞`w}뛋y;dMpוMV՗4%/fr.uo{MuI+#+ǞaV_2:\OBwNQp||Kj2?Jըz1 c1N?\fU|)1$h/~KYQ XtV ^;y,'owe 2Tdd|5Ût.}s01=Ą!0181&~6!3݌qiS-&_x!E^Zb$cofhIIBFR2"Bΐ:Xl Ũz6힅;[':sTM["ͫhgaw?,2A~EoѲ;4l}.eFtMu%c~d̞"+ʟjhϓk: S].y2yсs{Ϸ"OѬ6~M|S,{)iq.6d4arc^̊'zuX'e\C}\2xOBTԔIxJfbgY:/x^٧"ǔ,vUIޕ5h5[Ky}s5՞޴w]Ti5_}Iq_b&R ϐ,[M7,'7I^}&v:f{Pru5$bn$ ҏA2A ϔryokY:Y'خ&SOUe[mfJRx(͋1ٸ~Cly =۸SL4Őf&%K3mōW+9}?.o_RKQdS2cF| lEX/>/9e endstream endobj 21 0 obj 12105 endobj 22 0 obj << /Filter [ /FlateDecode ] /Length 23 0 R >> stream HWmoH|YHB[?A*m|{;g_c $5ƪ7{h>ƛќ\Ȁ%Z+62 oNZx]ju Rݐɟ0.O}$=&i/i_k](E @Q_3_3)T8F\x%÷t'801pgŮhj@p,gHm9n,=~NN5 &M=nFBXl_wq[H N؟-P<>(5vq~wMAm$ا.,"uaweRJS,}!㚪oi04"n2 `Q4lx'U!wCXZ(UI.ǐ1dN*0^X}J|:P$|iȄ*%Ԡ̀qXav~~wHsA hڠjZcPH6z IUg'QO=!P=bOHzXi@L2"zT;!A32 9V!DŪ!9Z!W{M!H8B.[I*<8 B5k9pC4:if_ۍ쿗} Dlzns*YKqTn i촑ɱ}Y4҄3D>O}TSH,\6A4+%X,AdM5QB"dD ܿ[݇}LR=U^%p`<4ʧ<RpPT/3"-K'2-w'FH{_)v;P$K&"[ n&aK3j[D1Tc΋|93~G D3tPX8nW1ּuOR$gpJy;|n3P\ !㚪o"$G?{҈ ''88Y ֑BAjvd0oV 5>?ZQNJ)";/C_}ps5wn=DoSZv sŌ6FB$j o5əi40;=&666A4+%X,AdM5QB"dDzE`Z$>[L4d… wJbҔ gqm(O"*5;fǸjKuЧ>x y'YY~dHg4 uj٪DHYm2[/' "iE&϶p! ,cAqGX`׮ol%/l,Tx)M{&9՞'c$Llqmk3^NfpZ:]$+"qg.$x48LжB $)bvӬ VlABg ze#DdD,K6Q#X %V6~h+SYi|K7) OgfXkPXO"KvHdXgp0 1H'DY 6Ԩ0lWN$&2ᴂ{=K)iB!m^[2Z6*iaq"7h&N!&CiO/xLr6 PE4$y' I"(ľL&tT&-k5QLG1Xڪ"!&HVPz\ @@?;S?[J 5p 1${۶YȚeX1ːhyY솪qsl[gERXc'X@xq}M(LaUej?d\SM0BuOd7':r_(HntL]Ӱ᝴WG\X ISFD*^ o(O"#3 .Hӆ*) S $tҾZLI+#B|"^g@e[::Kz-BoUR3P$4% ]AAusP"u:R-`Ap'a^:9u @z'SA;m$"tΰXYbpq}7H NqAv qM7t 4"n2`O4lx'U!wXըTU/MDh:+QXޗ +M9b 9^)lP_~+Y@O,;83FcğZ6AmS&u=C]N%LWa2BqP;E23uiRƉL'AcVW2hKCiO/x,,N]2h*ޗ``j(^`ɝqMշlY~P_AvSONpplpOÆw~\r9RgWF_6KmP~n&u:tՆ¦<@Gebi, <}m$UlE!ɉі&=!pۤt"rnA.Iw4fIEyqyі֎}o5 keBm3ٕJS; ī: Āwt(%y)ߚZ;&_|iFK/M4tK`i'R$?xAX^ȘSQO : :xpntxK2R$Sr:E&t& SMi*6MЙA9YeP/:5Wv.@L!4]gN]Q1C%͔ϷO? IoFg QtڐIv=Fqc*4BҔhgޮ>bh]ŽNuˢ(S{u.~~JDitSkX_F 6I e:vq_^c:q{_ G{å-a@MP 9=K#I@qdL&NcD5MM^mb3iL;%AI#"( l1٬5?R$EJf#K_u>DyI,M Nos[4K.\$eL0HJ&4%zs 0? endstream endobj 23 0 obj 3554 endobj 24 0 obj << /Filter [ /FlateDecode ] /Length 25 0 R >> stream HWko@~t?Ih:ݦ(h[t)*}ޙ+KeFNF4ysfvmuQ?.~{rU/ϧ|m|MV֢j+OCAwYs:8ݫGpޣiwq-Es$Fb\wognW?~W4B4~-^,X(fj]9[ca̚bb;kG7E=u~_5 #|] ud]~(sq]|_,𝷱e=]Ϋ2H~,rwheo+{Ugn5| ;=]|p~y^Q}lV! wl?YveKxWӡŮ\Չ{A[:;-TIXH%yIJfH PCX=2kd2{bhf>Ly^i7W,P6 &^wpbZ3 f NUsӷ%@SH{1E\, 9R;^{%:aTጱTlAޜ.eJuWn`fFLgll|t {NݢfLٜ\uW**"q7Hn&qӊJh˺nl {l͏߂軨hyI6n}.N`ʦϗ':ɥN\!{c1(X&q^@ҟ$,XQ~6)ygԴh1&f^WOݲrEzY/ϛiD7.0݋>}ímS,|G흋Oci8kחtF|t|uq' m՞=},Ê7?IwWo0},TX1 69Rk& =+-sYΗi[Qql?mTVs΍)q)R94s) fQ g8^pץ6xlqxx㕷KẻRy6m}8YFW]iӰݲRh qVW¿NF)o7d*̊RH2eiuLΗ6&m#@ѦܯJ̜2.IpOFɱ!@Y\+J#4DYr@&Xq U+R[RhR GTb R cuJ@\*tkچ%F%pV"BrMhw|kP q`Β8ɨtM~ܤhek&`A y(P@8&R3HkbcXLt(w-f 4 Ga2(ohl%1ɮB ~ReD02iЦ\=NX8,d`:d@q0UxʠeB@.*.2 RVR43[FHpUdTa +l,^[d\mkHs8*GIp@fTqc1Ƙ4P"ؓZq n^c(c04aŚpD S5K ۔ dJA@D]H3|@"NP$XyM@>BshJrlV~9jv t4eY $@1* 9Ǜ ;:x.h=6T x(~ E|~_B E)8%UmHC&~~"-7*(B9ȟV >*)޿!~Ia$ fq:xC>JD h**?:H>I \+EqTi,5f0r))G6ǐLǹB>#9hJ 2RS zJ H%)FP p2ri`8# P#} 8k@@H t&7vԧT(."2VJ Ԑbhij5+pI8a8UD)|pDHERVjb{LPN$CǨ'=MJC_r4H(Kv wNY8*B[qgGJpf_4Zհ*ac ~((֞k1ocLD/F!4e^ !%4@Tu!^׵2 &e ٖ)5pEq >уIٶ؁+m)zmézG'Z9ƀg΢je)Za$h(}69#vUېTD(WVO' "?;~|DNg/n-ggݧtd'ǏbPO|8VMw-8d)lsR`n A˥(G#9ؗh=eŒj[j.KŸ_Ꟃ- ˘ubSՈ! J ބQ3Ԛbi)dDu`ԥ1ʼn U{uU5+DlPwQ=Yi'bvb$:Tx$F-vGdc$pI4'Z]b_*L`ZA6M#ԝ@\ު'Ѩ IdFD?DR&'/N2FSK>]ҨxX&ZWSg1A?^Cyszή3b[ݴ'I`Z|3ۨ4]T~y ƈM+x9IX3I (9;d.N6SvUNѽ}H_`:Ö 2H^qQ`8W},oݬ ^!Cyԗտ>E;5  хA?d֠QZʧbᤂtA25BfB `ުv$SO4=3$#KFP APtbReU&PbJ,XL9?00"sfQcw1[ϥFAԒX# W 3ųE^~xe*V!LG(M]Z$aUQS&Ls^a5I:QaCԢ&NQ Ԉ Ih.]&h&YK nƛY-fEW^c#7D gYl0O}#^fbw]TŀH{`Uժ̼X8(c80f{G,4 ,͋!GPv1hݥR5IwѸhBcFiŘImzYQ1L3.9dX#/ueҠ?2Ejfh]eUk h\WFû׾wZ .MoJT3->IQf6כЖΈV>j}gUmťQSr-}&`F9tpE|9P3⠅qimhy̢Y9{cT6-X1#TCFj3pKRStL*HZNHJÔRzt?jʼ^`-JFς.E^t,%FO N`!"$I-8VmP;oÞ4s.8G@2+J'< b4_ +^PhFխ:.=4 J *Ob̓B2֚ 5\* x?uj9pw5zIZ3@2&)X*c $GY}KeyAJgwϯv${/>/tL>L,^]ݼ[NwO/n/ ~zBKdEjsRUkƦ%Ts%s ,𚘭r Ey4lH/ a{3,R1ІV}\0DS*HuqAribةQ} T ̊Eaː%Q)dMa4{Bj`f.M譊Rz!d_TqG{rwywW7j9>y& yrN?L /E YAɈcBVş7oKZ~^aX.5Q!!x̿ϝ|I2lNuWh:}MS4u |nթk#}X ˳7oqq?z/O?=x_o.]ʉ]ג˰I̘%9rS0ͬ)](K|}ҷA2awb8vJh7Ož~RnO7=}{yI-ffϕrw5AGe?e7e/e'Wi&G62Z3\xY[(#}j\ ")ز -19U *hsvJl7H,tupF4R a &1GyBwqa%gYĢȌ%LU AI2aF%8NJ4:?tLo+7lq#ı!+ d6T31L2:x`VAT XYBZ7^WF{!fĞz+Au[6̡oNΠV.@m4=hF-uW#Jzk&]%@iP dwlyx]0#XBs+$8 ׮θV^1PLi|P_LLJ1>x}S5h68cl iG;UM꣏hiL"ꐲa) =uE9[h h FV {4Lw UjmV$\y0@м].N0O~77n?|ھŋo=}ۻw}|g۟?>{O7ߜ=Wy G?^3?<\Wy{l{W~[2'(πɏ'W/M1ܵwW?O+9/nO:In-FE2L-닃:hhۏ-dE0 ZդO_6 ,[vFM'G>[ 냗^ ۍjDB'4&=XqYdrt P@j? sjJbϗǟ]Bs\p[>dt My}+ 1"C`/%@1ժ toN Ek_G"IrTj b3j?=$-zi"ɾvyc!ZhZ+oO翾{/o_߼S͇q zu/7+[^,pS;~/7ھ~^{? * &>EUu8뭬c^(5/{/؜nz f3NAfz@kqu5P=۫6@} TE%Dk1ȏ*XKet!HBAk%邶.%bOUKx 9#XZ8ω,Ɏ[:lq6GB9h%ǹa܌IE@v;"JꟴvT;[D BV+rAK#:2q[#|,BLc+)؛Y 癝ID7q6f{nt&%svB穵<ʥ.5o`/ G{}@}$p?շrQ`M=s?DPĀ/A$^ު9k,{LOMwuU5g iw;oB]*ѭރy3 .0x JBE|w3Ѥ]ʼnќR2o\d̰4sOI]}׌p?k>~ נ&hn3<\o9DbS,3zWr^/7yýTl9//\k MC(uӶBRC،Up&OQ+bZMYT#ގYy m{le9ܓs]6U#g|kdR=iJz1QSa(7{'u+QdtM,GpoM_zV+ߧ5ips;wFt].A*m%3^=rmS$3or3OxKU'(?k&[&Hq]N%u2:δj%4,*s^^%ʊHTgCtBz<>54|yט?|8>|/U_~7wϿP_~%~ȖhR? >Ҫ7|_|c<~ӟ;Cg׆ţ'P/&&\+@2ĺ] kƃ`a8}* $6@*e%R֦xē"zX0+`ˣlg>I>{z{!LM@PњuwQ $:3,uH3z@`CtSގ:Fuz"(e*"1PT8*M%Zd͇(@d1֕kekÚ_uY JzcJ!6/ռϡQxeڷ7S W뻙vB. z6W˙OG>hqSm>xbO)4BxO(xw]{ht(Z#k|d|n\Z]qLJ yYt|Zy}XT`]iؗ ;qVkI@`;h^I/X<ʨEO%zis!{^jtPZ[}Y'AtB}Tb Z UíIuW6j{" @󝽘RcǾ㮷qTmN1F'G,L41~s" c= sĚäx> h], ?{)sԧr:#k%VT)@m҃;cϧ\Ϝ(1l)ӞM<{JUX0revk&(Zu\'vCjG ƛ+StLDDM(CZ˪zwSigJhӲ?VWR ٜO瓥G)Jc7)'6`!>5y/7%to?G'gȝbӒ2wh?Vopd˓Rh6,.J!T@+HΉ*ќp"DW{G%d+c eqj*=W YB2!maNQsd fُFukd> gdDФmƷ*~ۖ D,{czjRkJO7{*VFvYwؗZ#'26h==6@9a(bNS[]OY}eq^?'z:b})m\Gۗ NGZZ5LA9GZdezk'&SZҊbQ_KiO-=k/i'Nw᫱i$ 5zxהs{I9CSN+bm7)*4A$pbk > tjgX8![܅i9Vtyr 7ç(㺇OI3%z 9Մ1qS T,iPG履ZOmA>w Iǘdᰰ%1(`=1kWqMdW}0 O Q`LNM' `R6eQ!XOJn(A #!{#o comP;]ʎn'K0?^&0 "pTZ~=phSctkMh5QzA g=~M`)UZ葪Qc݌hӸW Lh*;‚T>O9:zI]܅#`)+ŷ`pNp4m"ϒe3z/0 c;̩YW{6J3]%ΦtSH㺍uw#hB1X33t~,ඳM=Q\> `=է-o熱$sVՔ&A vw1-{,AbZ /փ.nOܠ';EËAINs,R 7KO1gMLu?Z}%}VmK9mdvW+UֺQ~uk,?}ˏO>}#Bw?}ӿ^w~>g{/}C~'}Ӝ H`^?u"qxݛjş,?}ae[S\3jHǭlkXs LAa0@+ ,Ҋ" ~ |P4UKvH!3hCtXy!IInJʡ88|wj;n :a>r #j9y6>5cBZ~IZx3mqt\d2hp~FyܭFWR9H X:n AݫAـ(9lVWYb-$ýl!Oc 4o|rEwueY1clt[4b]vH('*o_nqWSO02N?]@e;E{]A` .K'aUjhW)(_*W$iQ7{qmPLoq8Zz2nA"==-)rPL;$$H1^ޕ~i)V܏ YAg]`ywo0}t{!5B {dNϪvŖ-ӷ鰣iGb3xи;ȼwwVͨQx8fqjyPw RfG]XXlt''t\T/fi^$ъ=k+H6#Ƨ$hA΄<1(=aҍ-fAT-F"O/ {߃.o3ǖ``Ae6e@FgeKy$%9|^69$r%n$^Y%N-Vo]?SCISpF)F' %>ϽMj ;M"JӃ9*y/[kiF1M@Al+rS~͛)9 /bgtPɝN\dۖ;I9'i`Iӆ5 n6?ĖMVn)&̤ӡ]646d4Kz Bxb0 kkg}v/(ev l7x5A9'B=7(=şmT;lHpȤ̛b* z]wp+q[y+D?VAj}޸~jZS/~hHaʈg `ae/7ا_Jb{0yv,W*m 8~C#wȾfn]*A\0d.'%R"s8f9R^mW oʝ#8rȾ~ѢnگmݢyxB/Y :o7:2˪0<[AUf#%Vc zQ1 2tIYԋXlP'ȿAz}L8Z`YA.!zZ<^: `syWHMAèOo;t;]eQA2OSmcl.`9 Mg9g=,uQn5fǬ`~2(>| e|>$nZ*7P[D˴m&P-1r9I_;r^r!2v78 RիaYMMOM>H 6!5 gG*C:c kp3!ҼuBRkt7Kv&[5&m" nJHCs y#$-|(;Rx*Ha')0``=6r>-S1%{ ҇د}v,W^  hRQe|v. K}6@)\?᎟87hd*йU7ݱ>zG>N6'3Ǻ?64)P۹ ?և6g̽,4ASٺ<5/AVsrb^w?Zk=nܓ×){ظ H[`_AIΛF BYsWZ5$ 8Toei)&Q9D8 *1[LRs(72@=VնOq1Pre@`OcnANlGYV Q,_GRJIwwa B]3'YV tK嗆zDI3H$)-;.ҶEf1K4ջ: B7)H݂>~$1(E*_pY׼AZ\/([\ dcHl*뗈dH(x,k }~@ˠ,6h=6VΑex*+Srb^[M$RQ~u%N1z~2βQ*-1A-hY9lIr*]5q5{+/^@Qwι@w 0i@ 9"կ1[t`&@$\lᝣX@WqD,G}a;\?Eр)\uL=HcΗkx?%x컁ϢؐPX9L7JxnWz ) znxڦחfz7fY6yz}t)$ΣVR!m&4^+5Id#ʅZMJ?<9?ojdJ%M>;);o?ŽxQ%8J _4M9 :֨2a~٤4[[=0x-Ku {:#]TÙԄ ʅB7*N ]G ._*ss?L i<Mt+/! xyT@W6ٲfMcQr_Ϡ4Z} 7+ UIs~jp-UF*"MPeDJuUm}#KY;wde,`ЩúuИcP+Ě MЪH"P 6hAVg"(KBP{82@.3PiS.nh9H-\SctexjR{xjL91Kzį}& `ꁋ䗴kr8gؿw~KEG̰2'ܯviMlgtk `[kQ'5^$Fଢɻ%|_NgMėS3d>$O hErEӵˢM18+h Mb̢be/jE#?UyX(XՃt[W>zw&:UQ0&/1-\.(89Hk1s֪`AU="$s9c("pV1QZ!xpSviРO^!ΖsD߂lU!ziSUvQ&| `xbc˒Q!l𘻢ϰ 2/~WMq3ө x  NIfJRqO0֪!ƈ6wJi'6]}+4K:Ijݾ 4' ɏ$x]*b%hcِC%OX6=a! K4orNZc@}\o׷v(KA/^z.1hJM6R6߆-{kO;i;԰qŚZGmaT7 A![$ug;; `))Va)}~nr4a,}P;qT1H֙&^TV(Y*S.:L=}wՇ~$ᮩ]?1e ^é,Ir,x'o@do"NWS(!Pz`2;՗ /ۦ9Cfm e-6 O!V.dwݥ@cvm$1y(XyvK/۽>Doؓ$cf:^-lLtońpVJ2+Thf-7orw}i)}@ }<j-wɚs4߸5~ƾ /b:ؔT$u˕İO`>l%!Wz@=Hc$9+Ulyz/JK:|\Xfa[pbrEm[&2vnj_|LUB%8_dq$\U1J7y/UR6])Ak3Hn@fT[hYSXxk  G^(F; m݌&8mwm')IZo}eӪ8[ k;n? bC_[!QhQԄ0J*߮6ȩ6R<`Ж^,w-8-Lq;^ 8OㆠJgfO:⥀V#_D}R(já[I-@~Dtگ&JyFHӧZ]'A6ia"C "G LO$-׎˓yz _([*Tt*l'J sg@Ll\pZ<b``Ϸɧ܌ÏIh *c+ӘjzP:g-ؓ&hs-/ؑ{w6]ֲoQξ_aa>/MOV+(A VMng{|jlۨ(&ګ Ϡ z'pE 69xntR!GW"@ő'y zi.*¨0@tI#~+_ \~Qp~x j`{L^=./ǰtY$8?mǤd'cGa.n5^`_3lgh~zoTW]c?snp%xy0֥cHɡ hGL{F6{8.y\_wumoҏep fIzJ^:n'-^) w>I믛 ޮ};;/KOSo&;0WQ4sj endstream endobj 25 0 obj 18387 endobj 26 0 obj << /Filter [ /FlateDecode ] /Length 27 0 R >> stream HdWݕn+ p^|B05oU)c?Ͽ'?g%<0#2{Zaay.lV sesyTDۧZZMlog{0b -f{;K 8<֤ѥCP2٘@bz(]o}0>PP ڭjI0Ϊ~¼4m`j[2?Ls<:Ш,d,|f[]+*x=Y<jf刺ƢJxIk_)دZO:~@0eQhJc(ZH @ s ~|ѫvGN#((qpRÀ鵺t$<؈gڧ`l Ĭ0r =%vk ,dwU6ూGevss p)c͆CGC V σco\Lv]ʫϲn1E.KBr?~JJ4v,~Mpݏh0^~ n36ۀ.ķ tvwj1i耣sŀ,xŶlPnEDWY !mG,ջy) Jt)O>5*P̵L25ʁ}̞lK(bO|/}lY! M՘ VE8x@blZ>@_K$ Z1~ttq6`[}JzΧx@k["|X<:ib}6E}?jG8Gx2_~>8pt*%CReMgedU:&o !w+C|T҆"}0J3zi x~^qF3'rY}ט҆ Rq"*f k}΢B^IFEyzzI6a^=o?7ωbvQqo4'edV \*;$5'&aϹZ`7ʉ)V y(WlJyl!3igT;'w0=w]з+f}V/¨{HogQ y/m@Q:}/CUyo ~g g`J/fkPP:~/* @^͡ w[\l$/%&>NoGc$jƴ7NJ)^b*u4gc0d._ԲXsm 2#r; c$x#IexE8G`T$*l0 $ޟ\%8c/]po d7)BPWLjktQ+ M]('^Fg1[ b y"&f.@K .Vne`&YDn[t.iR^ck'S+bvެu.#Q'fmX`AcgV‘ݷųV}*2* ̯HmO^IiDXIi@jܒ"(6Kw|.@Kl%vg9PCwuHq>jAgQISW[ħžF,{QjS.Yti?Q]$wZNJ`2W0?=FA2p~p]̤X)u,J_- pq[@ֱY0C$g؜Cd39,aR([]qY8-O}I /{Iw!?^$oM`._9$W|-1ػaJ8q x<SmyU;GtXhœ{ ^aCW$Qt1Ap1xfqrbn{}ġz _֠=kBݿIP8"Ay`'zI cF{48 ڸ=ؒYUVv_zO%$43k! 9gLBnSX LK$ r'åoNIKŸ.AߋMMxRi+CjQC,fπ*_<*cBl3q`Wt ξિS2-!d] 'EsΝ3]+ߔ(_׹;HeyY3(_Rd^^ڍ.>ubQM'W}k< ## bQT߿?ϛY ?b (a'Πu@#(W,,Gs)e͇ #y6c{MR)hAW4“3^3k MkL/"ѝVt|uڰ|gY,TY/@.~?&Nmա᯼rƳec֫2\~@ ,7-2͔D *Ek P\΍U|w]]om%!=sioC~0)P> O g*&ߣ^$}|Rg&I'|AȊ/5 <:K vZ+$H7CLaJ;i־Bm˹hrS[A,lvD3jtB :'8 p *4z#ŨOJ:s^9JjHVIwzoxZeT VWI2i1ݘIID~$o jVIYZEIwxM6]a$| 9_o߾?^/>Ǘ7w?ۯ%K7\G_*pq,h.AP}5ӷBW.@+ĀŦ[Pa2Uf:8UzU-U3 TW$eCHNy}M}M,&vjI:+M+26Ϻ (֥UéBM; Sf?fwG [襇ǜy:!Ġq1fN_$yK^iu $˼5L̓r?S]>3˶EV:h6bZȷ3 eP~~ZD;Ϋ5Y=5askgzrd|APGr?7ZdfEuȋz蓝i}7Ś2yNOu* G>c-ɿ;Od;@ʵcl>̕sևŠkH3"ҘӗXVbwk ~2S-ʸu.Y4N=U|pR8Nt_9 q{uȕ"I4^O;+!~v2js!ąkw5Sl'mWá)- +5pk\_ Dq._1597qjf+ZR~"4_PBsa}*#ζy3Htf^P:̍"~bCםG3cui*.]>`IIمA~k u2!'fz9O{Du fم1ơ='|I9;fmd5X xG7D 7A]}ǡ>/L##}feQgj<)%74ͳfr\! eGG:dQn`k{1Z~¸(θIZrOHdAvIDYosT>Z,Mqekm{aMq4!P' n`ek@rڴ֞c8N^o-A8G|*[KPP.cJ^Ď[q"k&b^\hkPճH5|Yv3J7^n敺[tJnD{+^]rݡ[3,^Akx|H=>(8[ə8^/>M!r-~/vr]Tl!0Q {{)͸ NJ5.m2p<t0GleNVk'8=r8_8a?.DmQs. 0W*Se(b'JٗՄv_/ VƸ_֫mG>A#$3E$@q",E9q >cwȲ.7*tݨQ$fl)O'lSjMbz1P04D$Qo>z޾św?zgo߼~xuy?/_O\>!!|} '9*)nv7HInݬx_4 4){SƵjfTpZJ_z !g ۝Y. (F1Bc^9RsS Gzi|Pu,ׂ(hY3 `L,^=fjhPjRvbWѓ0V; =4i;UBdP.\"#@F!fk I:/̝jaqڗH&wtݩ/xoA됥5tMe'Gyv$Yv_gs̢?0J7ȣ' `ABHPV)>fN&{;m63oF-n .7%[N ڹoXȖgXײ>A6[F% *v,Bli^;h>mzk͢4qjap4-3`hxsJuqg& :#%uwc ~:.G\݄DnC1֞wqn]'IۮE^ZlikFLVE\߬IGC?GZD4{gu[31]0Hg~ AΝpD@\\od2d)r+I$mZ7NA'upL޶D{ mo8t0%wN曢hwd!eJ0Q*~}OTa w$y#}7bƿnv,VgV:)fPP%9F\Y<yQqCPV(5YU} u6Xk֥$vjhX_gUɹ]YS;ʤ D Ki-듄,d3^)@m(N a32 9 Jg 3סCzV8u͖cy[Uƶ7 }D( a= 7榬y +HoG 'JxvFnЉ) ^ɩchߧߍ"O%z1KХ Mf”n>IcQ{нO%ǶgQyWm 4Z]ߙ6 iQ1>cg`_7W99zdOy\?< ~V7yx;W<7OS~O?/~//_KM 6WMc5^ΰqлsK%S;ꨏ2ZeA"^C"W8-NOP$5;c#@k1ϣMHuP+(]>̨9@Y*j؁B SAM<Sǹjj}<7gȓW#6`A*hi}Cpқ>ЅʡUxZ^~wm4E<]+O]۬wKo#_J=4bڼlMeDl@3ᮖ7pQB8 -z&eP~m=LJHj_:8VW]#M,~(}f ^ƨRs^j U_6n+l ޤ^,k7oAv5C4l0Iy:}@ѴR% 7&/FzRi!92 ,Ao- j]s|ҫ .+j+tl:ZM-)'IFE=#b!U3%$wvls[m˜OV32r}J{T^Pzܸ}tʊǷh4(3Xsu A'kB3L q>Nz @n4f`}d". ]RC 9 ; "ֵPV vB(śGܷuE@4qW0ZnLGOH7oJBWcGOQ%ˊhv0tsU^yۨ?KɱIK{0 gC7bf^;$`?5NQ-0}s ;|(ЌSsPI {m^E,ϐ2]ZTYYV\, wwC71W V9vcnS=  ]\_viZr-H.}}I&`FVK鶶uPiYBΞ׍wsړnm#,j]w4*@ocA5qtKwM%i4V0oF*YwHseSNyպJz<~1J{innӥzUp C} @vScMx#u[WJьf ZP*b.c!ҰiluOA [4\ܐ i9CMWu1/ЪdBZc_1wJF=tۥNJD;VlgBM>Y8zr6N#bfgl5Z-Q6WrDeAߝ|!q%`kJ$y29Uuk,|YugGuթsf0([V"Q"zarzqy.m "2jw$J)Lk9קM `B+l N<\VgQ F 8U?)Ю~ ULU7GPI\4Nj6U>}btV-7SɟML§8lbk,0E͏N5\OJjA@t c3%:W/[P4UOM Co9ȟ0I~>t27'(k"FPE/A=I0pת8"`AV_JuTt<{ʯ6c(Ou ide6 [CvM@LR0SP-ZtGp[U%v-`z72}{m+N5P'=sQE)3*?"}ÝY=VmbcIT9UMa$9,GGesz,q{gMNۼS2ڙ"[s `RI:rwmLzY8 \U%0AK3DՌPb&RhJ~p e!{U>$Kl"mQd[udB0:tM& -ހcM`ҽx[۳$aѩ:N9jqr(Y/Q >xOe mg36'|wëw?0Ň˓>|<~ϣCJXЦ[m RRpH{aZb_T 3IirLAP8'yaclS5h\pE1kru$*ԬXIc8E Vٞ!8No//Ӌ˻Q p1԰_ R!( L`^mS4Cdg; NphlAv.6 ճMaf>uY 31wٔXYl9ݰw6^o.Oo~8}oGI?OG_mVVn-׋3Rc}TdV9%ZkU-N8!dY%҅epVV lb.{.u skM5qjѲh1AQ%&+7ռ$$25]smNaw_'D +a2U>ڂSxm!X4y!.٤k#vPRS3B>\ 9A0箻} )9g9wXhm6PE2#hVXQB"6_R C4E2n3r "܂L/$>M78bl> 7Nz5N! Sj*b^ZW7kor.pDz'亞mA{ ?As&R <|!Z|2;d¾P Y3夗=q:e|_=g(XĽ[ #Sp =3y49aB:x\&7[s51 Poqq LTvƣKAu!,7^ϩ8̥cA!zn3/QsJu@o$PcP>’.;PdiR): Qu-Xs,(|[Cxiʫc]Rrhzב˿ljZH"ý]65>Xz_C:[\RUv4\((m={ZM5v\=H,$W:L{rBANU2v# &{kBvz֊'ب !s2O^_1M^ O&w򧻋n>"9}8jxp?/p#ㆩg77vaOW|7է!? .x7R{LG [Ce襛ۯ꧇7g{}mۥս"y2 Eeq0T8T <|n8%$l(mAVډg1cUWXFlN%ش v?8r< C)OrqlY9[\gC)zC܋>@& VVx#wf}Zif[iӄgkñ:tr`n$ 8z&>5(}bLBH1Ekf>q1ܛE;D*L!6dnK6NQ-ըprZAU>0/֙J1b hfEƚ TR].,KtQ|avu<LK=j\w] ~ Hl1 kCH]@. ?v!0̕o53|C:X-8ԷahXĔEw>s6&lX5W9G}5j13t|x`x|/-kr~>? #p6Sӣd_{إ]< 0R~/F̊\ctoC 0戺RKCm+#;jV4B<$ʨM/3P{yeU-|9!r@yٜ/<_`"L;;OE-MQeHKO+.*pgғo~Q<$[j@k7蠌5/B3q9:/{a["/ <E 3i":C]jinEpHXJ`Ąaת[\nЇL<*)[x7^/!>}7ާ_W'~aᅧ~? ="QTz xE"I/ L]&2tsS|u̹ztf]ڲU֤u~pGs8 D%aتnNx'x~"ofV"z|t5YԃIU!bSX؁~k͓,B߾D8ſOxrrH駛~wK[E==}{ywus876o54321AAO[􌘼WUlx^)v|⬜peSDFs+!> qճ@F󾺽D1]QļUTpGAR_ݯzv>Ba Ze7EŦUF_і,shM(FX5L%-**v"v5^ oPPg)-{@ԞV,RCYԜؼp4R661Iܓdкb3ŎFbS`N\`X-dR za"x(UX?cxBڃGIvj RcM0K3Ej͢= -3;u'zTjKu=\kpSz'dV܎;@`DO53/N 5cpD{'+})1b$Ͱ E4x((E[fY>X0WY{Bwle˞8VD CX] bwKҦnE*n8=ꊅ%3#RΚqӣc@m[YmդҞ! g|`SW2Tۓ y@$PQYG|A] f#Jڣ#'Dr}2Y:q{]xi@{*t䦸#^7|g%r:*a9Xfd%#\ D@ EKl~ʚ\=Dz=GگS=1wHMDI}u{tploaæ'۷@6X@"@( ,$ZR>ʱ K\Τ5,2]oN"Ʀ/2VI\,ZaM@ ֶ.~0@31G 416 Q:@Ledrm 0Y@w®ˬ`"̱R"PK]pѹj&C$"F%?Dc pX q<قL BѼrGeBfʴ:0(5*P1W VB#")v00ig#'cgpVR. $gk-G1b |G]8٬.јAM"T3nF&b51o%ZU!DcM@\ 2HiX"A#dB\UN!ZDx+ SG$F?V wZmߏXIC\f*@Uo]C*; BG۔Y=ޜc&Y*j<̳ 9 ??z'U}̮KjB[ѾMYų}9PțF# |;>, ? ]tZ&4hnwb4SNy"tW椡VL !%ƻ}k!/H(`sj##WJc=|dGu^_hRJ!gGSGOypeQY˅ݿIՓ?<)$!M':598" @>7}0]>+66.cHy,%)v |>m|{.5&|wqPK-w* E8FB JD+O9`v?kǓd(:}.G [_mN⽚AR=f_1D2M gp oĕw vq]}xx q7mt_3H3+A ĒުU^ɨVO uySvaX,n "]aC*Ж*Yx׻?s7/nZMсQ@rQh t yf:s6I{fOԋA+h12Ne3(f  th!N7Cj?^!W2'@[{@Ƞ8[?kj /ak`zӧ5H(Zh]beyF[JZ=d#LE14֍JU'[C=TLKo.@GXb>hG"WhǟY'wڿr"IL=S/I.U!7- :ئ;/[_5LWp{{2>(vBrǺ>EK,nq*<+5ʽ_&HA)VGh4_ ϠckݯuXF|^Y}r~~{ͦOw?^'+ tg*H<=#Ѫ9$f P޾)PngiFm%<1i/Z ;H}Lo 3F$4Aw˩HB;2h > ',m&ۻy[3q</<0! -A0 i:اM:ۼtϮy|$^G9=Q+!~])vv#t.]W`}nfd[inzd_DkoιbSd{ֻ? ǭ/X_QI5 5 _5q™LK(@W `^* h*G,ã7wCWqcM+ЮX7WxAi>M]sV@KfBYKgʱ(=BOIcIJ=J7I5FU5T&\X@Eiy!J8)\ nSЫ& uOzSGY=Q%kVGܕW-= I_]: XNnP~qr]h{>qulLMď.\|.Gu+@f:Vc=>HX˜7Om.YNHO+c&w61$OpԗOyk!Ū3]q4{,VZ{Ш]vDQ>$쳞UV5#m~*$ʢwGBJ LߛX+}~ 3#x.*G sTm8;֠@?Z@֯b#"HyO꿀 jsW _0e'.5Y܇`>Mnc_BENMG'z8i舁NΐE^!:w3Mkx\ٚQ; ]żDkn`Yc|(jDL9e^y[!T+Gidu`$q ?M#@q 贆| sN,X93F{ jGQWG2:Q&6pbH(USJȱhcZF ރP;G`FnxDvqТ"$9Ca11 $baܽ;PH~*)"v\Qlq((Rn4V3~ ֠yL|71j,`&xu&a1vtbǞڣ2xSMQ~;? h3̩-tYҝ&~@#mj;Tox3/RV Bw(X5OG@=KdM[=e\ YwVE1i7L ië tkt h!j! SHWBDG įuP2NdI5ǚI^K<욍Qu-3@D@O#v(cEI *NVhpm~!x4zkt'8"mFoz(tZ5 qƮ=bٷ| <2f֚hl Yvm1}zzX#a}&bUp;Hrȷ~/#1u]q!JU>xL\ hJzy@J\s6 wuO'V|/'LNx?P1(ą?9 iLX?2ZˢlK{_I/u6u^蔻{M Wۥ}gn]/H ?$E.`:'PDniXxg6*!M$_+L=g(X* .FZqg* ޵E"N]̱O7Jzs'9kQl  صYĻ Ĕ/k'b4WD vDG2'3f}~2y`[q^Ng n=.3c^;^Q'ٮc?1a<ZaN$;hEzHvUY|)mJ?y J[L;./{n"q״ɲۮY\|}v3څ'Ï$0G#~_17-scQNbu(VP$~;VɹfF;o:5_*#X.d~@Y#:>ppw{dv}]$M\+UvX l0y |<IOjFYm!vr)Amu%=[x^YQ^(N;ӟ5 ۂ KPCAV]%.0,8T;- 6úr3Rh[m0hxݚbecS;rDUVb`]3tyC(.,kzsuDPuRi_ 7zWn"4"i  C H 2i9!$(zfg{M@V%憔 w3  C2;f?ѧG'XlXV%8G/ 霞e^#WTM\)2Ui (Mwή1ȶ/kC'U~e2gVnT*R&&w̟JA0uSjWt(ѱ*FOP"V)@JLEH%zv*XiڭVN3*fu@4Muiƭ?6 +v$v_kPRXW=P-Yؙ~`܄B*PR.dՋYj^"Z}~ QgRЎHmͳbip:a &54"`=*nB,&EFM R=2晁>+q6{=4PʚJZcCp ‘GyRūh&Vll\.8?㩉P8v'fz%1ڰeA0 r{I&zkmlqO>|sg||F/ƯCj4}{()&z$*RhA]ź=w!;e_F]kN>HJ" r~yxPliefEӂK!OM^U) w#~.~蒞Yy}za)")5ԍ|UO `Y'jJ 2~BF+~6BiT0|33k00r[ \Xp<틅|4^j2A`v_k'_JaDJf;J50.` N 0T%#(eEd^nF`HAXQ8|f2ĂAX jaޘcq7Xzk@{"1]Y#[&>:˖ d= ]g~<45  f ӡ aA6yJdaFUj~n%!1`7a0` bC6˒5HW˃xTn\DZ&SؠI vaRv \k,; `E[_H$BM>kIhoszXЈI. `apYJ%u, bwoʰ0i欐Dꩢ L=~ߖ~* =Y9(dB`Ҋ]JAv73뻚h<]Ύa4,AܻCN6kx.&+6iL O[CYram  ci(b EG6(4 >i[ `^Ύ6vz5[sD:~ u@b n~SGwo?OW79{@^5N k̬d endstream endobj 27 0 obj 22176 endobj 28 0 obj << /Filter [ /FlateDecode ] /Length 29 0 R >> stream HWko\ R̛3iĨF@Q$.0T9}+'- ]GݳSXcfjY~kR,;`U@[.w[ؘd lq(kD{g[%y"(h_E(Nv^SQVvVӫ&]OIcH@MгֳEI r*kh5Zoei 8X(Y3 R (Pq6a fk]!V-J=UIkPVB iU˲Q!6 qj@2v#W:|vFqZEcJ0+gUnSQh+?eQ"$l2CפW"Xm(Y2[ W'kAo60j;ÈN 0ao<-3Y\}#\?,gww;wcovj\n+\m(Bߜ`ѸOEO||j3BJ-†2ںuv -,q4epSJ&Y$@|N<r)E+n7w+Rݢ\f^@s`"ۈ`npĵ:}n>.;l2?#e&1KȰ4v^448mҠ8m<?]ffb叀N/^?>q9zwrs}wW/߳_?)Ӈ"?;{Vwޟ\(]2qE@%5]22 -ٔd. u {wXYY fLP3u٤(8+рv[ pH[o>$f.`($ x*0Upw6&`k-C\Yp:ylM&^,Rf&Oh &4'hi]:t0h,矶"\ʠw̩aϸ@<.ޖ1`xKn`bĎ5m/0b1h?dAˆۢg٤"&M-ڮu됃J#e).4&ԷNYM*\t* B:o.toUF MbmJyP_6|Mxtvl<]ӡA[CB 3y!N /zbK%=@kvWˬMJjU*WPĎe&٤f&8Z0ڮu@ E~73R%1H!dp&(:lˎL2}),qG oeҊł II6)<*Ipk:`f1Dվ,-zfѐI~osanpar2`F|hJCk"+($"1M U?ڗ nl:u@%1_$)3T!D3406w* &F!ei5P6*UQ@W Zx^\+& bNLyAaZ$Ҙtr,m%1 I$;8>62eLZA XPAaAVI(dMhAkCFwe[n .e-Q jRF21؋(U d@qo@,ik:b@*BHN+Eи~6c֠Ofܿ}~6v'|.,G d->ΒC@wJ^1U}yDkB}e~/˫=4"ɗqj}K|9zKv)d˛fX k_hGe9QRW 4+e@YAw~ Hx%KEDQj3SZ2Cfrj_U^VcOE/#GG_T$ 08Q ΃5Q>Q ԞQ v?/;ԙE 3eP&-T X-6P%uQ79mt$, FQ Jz$急!Ũ^Z,>=0U;4d/|}G 3GO_ǎMwR2tOںb@\ȀNHPpl5N[9m v [|^NN47Jm/γ{U82]NFYl9eE {6`otvwTJ4ckRĈV=&y KT|:ҏf1xxyP?=cnLp3˛B(#AϥV.75[σl_zW54ák lBj)hzrRv$׻j`͞ج $H`}}~,kK?*kԇ,sKC+ ٧7JT( Lpk}73g @u|a2g9k(u%9q 6l4/Lod<)g_,8S]zTsDP`^kdc֗c#U$%/%ދ<imZTU8a2 g~)\a(vxlc-yhfk` U 8]Xo` B"j;WK@҂=b=2/qh+<Ċ:]4uk:xи%.̳@Q8?zLoQ;=xbQO_WUF 5QL|}8D:pʚW eM%IOk=Zw0V]H)FP!fp)q_+]‡IAh1eC, c{ ]See pKթ+^u>Y_?>laW(o86RwRD|MDĶR6c}m)ardU'c ?QlՉ?s**>/`Zt??SNչu8kyivJ{=yMc.YK] }Nzt(U/bKV~@wJŋһ/g4gj9K-@8, Gx]lBF|vKHx7r<Jۦ}: z~yvY#FܬOװ^L>~㬳6ܸQK ~z^jȰEФ-y 4u .yi+h>?W}??|~Ws60}/56n=̵ ,~tmqQ7g?~_nܾs9roc@kCż,1a6sL!c+ʓ4fCg&U HXqOTRz̤P[$nI:N߇mS 0r&[,>v `|FM.W`r2e#ceHx/tvղZ:l` NIWx@\P 5/<(:d~ݨF )e!%sWGinWh{k\F*{VfppoR/6rntkOWce(\CgG>m%vMV]"uϦ$@ LpKt55XVzz=hȼ~%X` w` :f.dlwp cW(ؽYV`&_u]'(xs#:0ecȷ>"z>zA{d`/t PaˏypJsh%7yUk(ZE:0Hy( mƸ 0m6"/x|#j|G 0UG73-䉾?AkWhUC e GVvi#ʁß&'mtAi-+ڂ)ske1[ f )bG^+^EO`kW*0tF3bbB޵jU"-"mkUk=K.@3S\K*L?)$)GWћfR(P*gE:ك*f앇ߚt AqC 񽸄a ` GCGWiQq '!Ώ$vZgnچb R;* c phybz>`cZT0gY$#j| 1κ.eXtlV}|(Ŵ46Z %ane |@.eۂ֢)Qzex 3gJ*֬&QQ,ظ`/IvbgwZ!W&`MNSŤj6+jpn߶4~1uI*m:5u՘CQU 5 KPɣ鴷L jG;ŋ훧+ S2xE1%] Zs9fxS)r?Wel=+}pe5SHW`dpO =a;cnݻ/\#ܪKLopʽ 8 $DUD*r_EUMrGș, I0[־Rh^HV %sw$TR0֠w1i&z;6S2hΕ Hͮx"\Z kIBAV>Ϲcĝm+q-6}RSŔ}j?{C׃b 襫/A,N~yT{`|!l[ŽmQ$՞Ax= v!E5} CCb]phFNp!%<>0FQXp=0TVN`4Ԓ ^ uA;5_٪saiHk g|ѷ>}߿~ 㗷?{ۯr{ٗy|o^矾C~oohOJU᛬DK;7ETM5S6QxU,~A10_{=bjv+yiPڣ[OZT1sf es鰐q; ~2:ݠ2:] I@:jƘntvh] ,Sc$yy:Ըފ0CL#"= @TŶ/+UΧ=}+<%/y4Cςv9GS9vT\f!{|'@.,vT38LVuAF suRC ؿC0 GUه@dԴ⩂{fiwj́QpO t+PzkJHB4> )BGro{!IEcZۺ뽛`x)vN,؎[2j~bkdкK(t0R.IT+8J8CY1(-KFکCevj*:)d'c cZϖ$d.d O9/oPn}ϫ~P\a}_r+6;fg39ٔl{6=Kwdg3T`:>+J6PYUϼ+8YU0@[ >20B&=>OmuD7 ZK*p=TNL)) c 6*?Jzo6t{rΦ G0hfWRv??ԁh./?NSI\?XB 7`kZ[ѻ-6awQ eiXw"l Co,t/^oT}ri8jI *4"fxo`-%.M:.] tw$r"eH.֩d EĞǶV&߿&Mўu~C>W6j45ۍukW%?LN/2JMߏR.!پ7+h&r.TխIbI}j뷀ގ ][1(8e?m w! }6ͼ Aܘ8.rvz60]_⿵-o]VTL͝?!:r]8/pM!;>X4f\+I $M_Z/EbJҶ,*Gw:9(56zyzSԡ@֕/K%p;81 ہp Xp[v BZ@ ne2zd˦zPa>kYp]ʣo=BQ^.Jj(v+5} et%WKWY4B,]o.^kr7wqP{*U">KOIatGm$?HB: $esEpZcLIp6kijrϐ]0t,-"a1#BtK= JJVS[ :c0@RLz.K#H';7 ,bo\\޵޳5< r2dy?Sx:+ pPnՔ{^ )!uj{Pe>%$V4E%, *Boއ~Y<4UJQZe!AcpDϫCө=ay0H;wI59y- 1SG%4@?hK J JPX]24İґ(RXwRi 5D!U֦w]aeXL.;:J.yZ|;yZ`;p? IS˾B-vk"YLC/,Ukƹl uTt_m]KD0wpRYe+ˈ(eUI\֔P@Q2עH&[K0ExS2.mm,`$2_V!$ 1 J4*/=IhJ* ^kVo=S!nx%Ӯ'kLw [hˆZET?BeEG%e*|)!g~;0uIk0hU~<\Ҥڌ&3ksIY c$8sHj:6Ĉ)[flˏ$R,h,$k*‰~_})Ja]$6[,8g׬`!w:jwKw̷#ٵR{&e]I9Jv^:j\;(GYRN%j~AWރ{3ehGA%MFT7d4[')sUF4~lz<ٜ~Vgʡ p[(N'~rXٞkI@Y(ĄQ?/|Ij~o_X:̜,A|I O(q|J&6y|8J*`ȁ2V1'af꼻S6ENSi 4XJiz1V9we|pw(@SޟߦڣC δ$8~ YtGd#h|,ژ`&_, U 9nm. #ѱk -BaX!:v;ۗEw)|Ljؤ͝TN}hhICu6p]yv0tCG=`]=N90/h;SF1'l,ELo@HE#ـIyy0])[(<֧㘢 #27T:4_],6;n{|v˺{P_/шz{nz':ڑ;A, 5Szr]{ZlNoK*= _Gц̞cR:D+f$71Mdp_2 }T S2VA, 4b^ZTrN[>mԊ}ك%*~9'D3ʜ:®a (Ǥ3R4b㕙9qGF\?_)0 P^V3 IȥP ((ӏ ̑Y¾1|P0YZH6ν$Nd$T2ޭ~ꢋDj PDDSco8ER ErEOzפV ``j@o>Q{7) ђ00E^WV"=C૦> #ԇQ*_\pYKū==Z!)*+;Wb,.X4LI5fBm(٬@! LedDs|P,-K9C]zV} ԫ 4)ݹJ争ҪJxe=Y>!%)1h '7Rt,mNY C,cV8B=_%#"X,BTVA![J^%x`"sP|~QLz|(̐hu꼳F0TQwNB{I)/*̲w)JEĽ7IDٕӌgJԣCx"R{-e(2m*ѓ<΢M꺎vtOR6N8u& ĖWEX-WB*H]LA,9M1;HZERVQS]_fb]j" !poRXFP Zw3@ Y: XvjXYfdL U$TCNIrB[֧}H8ڐ-]{ OKje1N >tH!"$* Bp,/QEFkM {ɮE Ttpe.8Ą[l( `dRK]$΍(;eBoh^4X"ZP֕~$p*9dz4zӸʧ+nL:RVOZX1i_6WjEXoW+ qٜp|- \-+u'0N QrX%||WW.eUXXcZ>3u%p4֛eӸWLf]V|?/{5aB:L1'UwȊRQ`C'LrkLŖmA)*+Hhvmk;;/vE{}'IHNp{~Oy0͠^MC_zuH' Ey4_{/y|E3gwi/΃-k]{_/5w&BXG6ck/'.wӕh ,vz{6cDR{6;gnWn*>1hDYª^qӇc{vܾUy<q0JwK3~sZO07 [ EؒZrܽxe7SbH'Km˕pDn2Wl!L, .tbwYZdcheeaz݇{εV5LO:p+w՛MV2P|7u7Sy?"VΖg6&Oա½kos]hQ1* ݌ɌrSe=7*@#-A\Qy' W/z!oܯ~H9(gyy8IƽgT\nOat+mZ9|pwaIyU`xfm;k\:\u g~"=Ó ';sP'?\ÓG *rLEoM=< g,/3r`_P#SfLi[(6c,1 8<9oɳT9,kTMXN)ꊦ,tVQdɚ,HŲT UEVuݒ* 0 ngxT; lZ2) &RV*bV2khJE`hJUD yV,yV(HLS\Nf5Aڄ) $!Nc9YI9AH04VHSXM6:J+˜.TUV99+XNEN -D^ҵڄ6v1EdYƱ!üX<QӈMc ␿ьFChtGchDC5(ހwzux[$RmbkP繬Wqx8<[Ց,uGY*ۋ=C{|fT 5H e̅C-T"UZLz ##Ld".l.-V&5{KIq+IpkMV(ulfRJ4FBHխJ1$'d?d)d/Oh$y6GX،BaӾ4F᳥o(3յѾ w PK?q^CtވD1ct0F?haG5T # Al{F%>nA,QE%'A#AU h4!b6lf ሪ #B'P TH0j%r'FTbʫl5i֐ G1DU F<І8t1ޟȉIh{0D)F,l+ğ[,@h^E}p {<{1"![ 34 _k} Usۍ(A,m'`HZ3榔:'2yy tpvNxI2~ wj[ҖDMr[k9_dgW/nMDt[aoK'MXE+AB8EY gުˊ:+b\bH;ec]NJ>,rxj}_()p![h2ge+BY">'F7՜LMi]Jp[7;\IsnRdƇwUqbK?1!*ĻxSk$Ĵ 4|}ZK 4AMK- f:vSjƠ5%?4,-`'*85Uy4^n:]d7p(QF0m)( `}td߲5#x`9FN(WmoHTp 6$)=E H/UQK4>oٵy1iLB3k?3̄RHA"i.& %+޼>ݠK.'p#䰪]pav`>glw>]++*l>ȂDŏ>=B6!B|ס:`l'J&0 damvMm~ Mh`5L*`V1 ;` lN|c| D|Tȵ t\g(eBPBx*ofH%܀*j #_+. 4U _*K1`Q>7X(D m.{Sƞ2)cF)CP=e)ced ]X1͙=Rq{%@/5:ki8s>3"~iD\)nG8\$JL{pɌ"KRcc_"ND)u-lcS buwj5XAf=Q-ghX%?/ ;h;^|!_1~V|q3XM?\&[?7d/uI?;ãtα?^qTt:({Hh1w1a Eg:ooiUϺk.~tn9 h%TV*UUU3*ZEHf1o† w=a"%YХȢ>ző˧y9-D۷`з'\(`>քÃH:Ì?O"ѱW%mO-z Bn}:aQ]`fpuҮӂ.%<+ЗTw6+@g'vj&(^G#beŨ7jpQ~XeVyy'TMC@65.j9Ɖxm~ays%Oإoi^#uynvFIbZe^5o~rPdM(/V ݥGQ8ĮcKڔ*-Vm3̹E{6~g 6kO)sKFD_v,Хv^4l0> stream HW{o8l6ʢjq Nmm7ۢcQ$CK~CRoˉun 9< uElDQQhu,]B*T5-Cs Fǽ+x7 t /*zcv1= 7\F ~rzJ hH,A⥣+ji ԇ_Ͱp|!qtS/%22iNe"˩o_Ї1rTߥ%[7+ak뱌"w2^ nW}8LqaNto8~S PLMv} صMv:?N&!J+k QoitM3;9AKkw'vMf+V} M+WVD&I,r sgRL^NE񽙬jQ~BB{3 VoGKXoatC$,#OȟL0/hƹdm C'+R[mH:FI󔏡}.ׂ{1#ӳ{9 Abw25[_G٭J#l0vxTl4{ͩ㩹 UўX: Ă@4fXj" Wu&_G+Tǩ@CHgݡㇲ).kfLqM\5P [lMeVcǦ+F0xq@Gm44_o}OD2w nfDx kb0u!\a0Ќxnaq`~&ADg˱̃LQ ?KQwEވlfP}8X3Y7D㶱zלo A/ikxꪍ^bеm p^Nrr%ibxJvё8SsqL!tG”nτ{c{s+kos{~_c_iRo=쒡`X&̟! 1`փ=/Ptdr;J&){ޘu͒vcx1US+7Tm#J$i02HVBI9B$Yx$L(X2-Awl>=dٴ{Fq<$Br%2ǬgVRGB 9:"Iي)M, Vls7b9ƬS=H8W|~)&rd|r(LQk!Ùn3ƺ 0fTFbpSchС-br5LshK~LLkOo)=I5Uk1.-u+*mEeN 9bh=,d!xr0 F+? $I2nxcg Ea8޻}?x|gOï3`J8_b 뜹 !ݍ?pOs?G|rZC!oZeGuL ( * Qm_`ʊ?τ;-ȴS ǐdeAKG(^JR]c|䵫p5ג7OÀ0 jzɛLp)'p^>4I@BᤦRx/t|ZJc/x\StyLC<4],ˆALR!8mk.t`&6U)\?3TttSGem>`yfZ9`SԔtȸ֙SmTUwŭGhIp7T*Tя "U6 VƦ%8F8e5":6 u;ӟ4xmKn2FШЧ*m.tV*cTD4o+kk$DECfޗ˦đ@;iܓؕS kKˡմ:kZ4W(Ib; b %>lFXX"d_At+}0Kr, pZ8WMI "EJN*nE &<)͜礀#&z+O&b%.evW3\ %mkK' nΗ߮LnZ+ ZƋ s#i`52j^/) H:Kq;I8OK)J(BS]?Z(E.ZIoXYN|3 F4"O[lȕDE6jiY#X/c ej Mx@ӧ?obݜ#wϳ,Z cJI0WtcUM_$^oE1>?CG F&͸LWQhg:OQW$6,rTRnbȏr +f*dk׸b7u.nhnCI6%~nj& г.ʪK%w*U3n鈝':O?+vYWe7F浮8*ҩ.IkZpW7aOИHf2o ]WYNS,%>)Y۩ץqS5x?=^eB1~T:]n0;ǎXejQu~idY_zrE\P 0r>9e՘ ],2<)xFU&WP(L侐B̊h_LCOxeg,I3@R8"-iwЎeޝm05br/aP8MdΎ&_e)q'.`XvusIoB . BDYCwf`℘{pAŸY H܉|˦L@vŔ0ւH#_! ^ 2aYc\.Gv(&\DP0 -sCrdbٮ/(^"/{D!\\7wK u"Jn'.R{[jvh^ O2Lt {VT~w\*wPD1HẏNRp`D5p"bf?>>u5՘~8$E~ P8n= 2Du l{#$WO_3< n|ǏLءO!3XQ`99p,~S#h@}u]6"\2 8=ʎDUZN \"j(6lTkZ# dR# :qZ7`KouHpXӖML7Mĩ| NTY=%S&Mk!ЕlSڠp7GdJ^v9JZ!\n`ߡ)1D@&XxQ^;la8Rq(lAC\ y5$5c}Jǥ㣿EXzxlr16ZaHFtQ@+Cv77 I_s@7:!;my`u ADiǑ fHJbPSЙ]W丒C!*:īSfqLt@?$-:+ Mދ endstream endobj 31 0 obj 5218 endobj 32 0 obj /DeviceGray endobj 33 0 obj /DeviceRGB endobj 34 0 obj << /Subtype /Form /BBox [ 89.63916 706.06934 92.61865 708.78174 ] /Length 35 0 R /Resources << /ColorSpace << /CS0 32 0 R >> >> /Group 36 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream 1 g 0 i /RelativeColorimetric ri 90.90039 706.06934 m 92.61865 708.51807 l 89.63916 708.78174 l 90.90039 706.06934 l h f endstream endobj 35 0 obj 122 endobj 36 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 37 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 38 0 obj << /Subtype /Form /BBox [ 89.63916 706.06934 92.61865 708.78174 ] /Length 39 0 R /Resources << /XObject << /Fm0 34 0 R >> /ExtGState << /GS0 37 0 R >> >> /Group 40 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream q /RelativeColorimetric ri /GS0 gs /Fm0 Do Q endstream endobj 39 0 obj 45 endobj 40 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 41 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 42 0 obj << /Subtype /Form /BBox [ 80.25244 684.50537 138.81982 710.66602 ] /Length 43 0 R /Resources << /ColorSpace << /CS0 32 0 R /CS1 33 0 R >> >> /Group 44 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream 0 0 0 RG 0 i 6 w 4 M 1 j 0 J []0 d /RelativeColorimetric ri 127.7168 707.92432 m 132.71338 705.76611 135.82471 702.72754 135.82471 699.36084 c 135.82471 692.81348 124.05469 687.50537 109.53613 687.50537 c 95.01758 687.50537 83.24756 692.81348 83.24756 699.36084 c 83.24756 702.56885 86.07373 705.47949 90.66455 707.61426 c S endstream endobj 43 0 obj 326 endobj 44 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 45 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 46 0 obj << /Subtype /Form /BBox [ 84.51123 698.34375 102.39014 714.61914 ] /Length 47 0 R /Resources << /ColorSpace << /CS0 33 0 R /CS1 32 0 R >> >> /Group 48 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream 0 0 0 rg 0 i /RelativeColorimetric ri 92.0791 698.34375 m 102.39014 713.03564 l 84.51123 714.61914 l 92.0791 698.34375 l h f endstream endobj 47 0 obj 126 endobj 48 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 50 0 obj << /Subtype /Form /BBox [ 80.25244 684.50537 138.81982 714.61914 ] /Length 51 0 R /Resources << /XObject << /Fm0 42 0 R /Fm1 46 0 R >> /ExtGState << /GS0 45 0 R >> >> /Group 52 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream q /RelativeColorimetric ri /GS0 gs /Fm0 Do Q q /RelativeColorimetric ri /GS0 gs /Fm1 Do Q endstream endobj 51 0 obj 90 endobj 52 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 54 0 obj << /Subtype /Form /BBox [ 116.10352 576.63721 118.8501 579.6084 ] /Length 55 0 R /Resources << /ColorSpace << /CS0 32 0 R >> >> /Group 56 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream 1 g 0 i /RelativeColorimetric ri 118.8501 576.63721 m 118.50391 579.6084 l 116.10352 577.82324 l 118.8501 576.63721 l h f endstream endobj 55 0 obj 123 endobj 56 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 57 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 58 0 obj << /Subtype /Form /BBox [ 116.10352 576.63721 118.8501 579.6084 ] /Length 59 0 R /Resources << /XObject << /Fm0 54 0 R >> /ExtGState << /GS0 57 0 R >> >> /Group 60 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream q /RelativeColorimetric ri /GS0 gs /Fm0 Do Q endstream endobj 59 0 obj 45 endobj 60 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 62 0 obj << /Subtype /Form /BBox [ 94.22705 566.52637 120.3877 625.10254 ] /Length 63 0 R /Resources << /ColorSpace << /CS0 32 0 R /CS1 33 0 R >> >> /Group 64 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream 0 0 0 RG 0 i 6 w 4 M 1 j 0 J []0 d /RelativeColorimetric ri 117.646 577.63379 m 115.48779 572.63721 112.44922 569.52588 109.08252 569.52588 c 102.53516 569.52588 97.22705 581.2959 97.22705 595.81445 c 97.22705 610.33301 102.53516 622.10303 109.08252 622.10303 c 112.29053 622.10303 115.20117 619.27686 117.33594 614.68604 c S endstream endobj 63 0 obj 327 endobj 64 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 65 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 66 0 obj << /Subtype /Form /BBox [ 108.3916 571.65332 124.86914 589.48193 ] /Length 67 0 R /Resources << /ColorSpace << /CS0 33 0 R /CS1 32 0 R >> >> /Group 68 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream 0 0 0 rg 0 i /RelativeColorimetric ri 124.86914 571.65332 m 122.79443 589.48193 l 108.3916 578.77051 l 124.86914 571.65332 l h f endstream endobj 67 0 obj 130 endobj 68 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 70 0 obj << /Subtype /Form /BBox [ 94.22705 566.52637 124.86914 625.10254 ] /Length 71 0 R /Resources << /XObject << /Fm0 62 0 R /Fm1 66 0 R >> /ExtGState << /GS0 65 0 R >> >> /Group 72 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream q /RelativeColorimetric ri /GS0 gs /Fm0 Do Q q /RelativeColorimetric ri /GS0 gs /Fm1 Do Q endstream endobj 71 0 obj 90 endobj 72 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 74 0 obj << /Subtype /Form /BBox [ 172.31006 660.20215 175.13818 663.13916 ] /Length 75 0 R /Resources << /ColorSpace << /CS0 32 0 R >> >> /Group 76 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream 1 g 0 i /RelativeColorimetric ri 174.56934 660.20215 m 175.13818 663.13916 l 172.31006 662.16309 l 174.56934 660.20215 l h f endstream endobj 75 0 obj 126 endobj 76 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 77 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 78 0 obj << /Subtype /Form /BBox [ 172.31006 660.20215 175.13818 663.13916 ] /Length 79 0 R /Resources << /XObject << /Fm0 74 0 R >> /ExtGState << /GS0 77 0 R >> >> /Group 80 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream q /RelativeColorimetric ri /GS0 gs /Fm0 Do Q endstream endobj 79 0 obj 45 endobj 80 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 82 0 obj << /Subtype /Form /BBox [ 164.00098 613.00098 224.99951 663.45947 ] /Length 83 0 R /Resources << /ColorSpace << /CS0 32 0 R /CS1 33 0 R >> >> /Group 84 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream 0 0 0 RG 0 i 6 w 4 M 1 j 0 J []0 d /RelativeColorimetric ri 219.34668 655.30029 m 221.04785 651.72461 222 647.72363 222 643.5 c 222 628.31201 209.68799 616 194.5 616 c 179.31201 616 167 628.31201 167 643.5 c 167 650.39111 169.53467 656.69043 173.72314 661.51611 c S endstream endobj 83 0 obj 267 endobj 84 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 85 0 obj << /Type /ExtGState /ca 1 /CA 1 /BM /Normal /AIS false >> endobj 86 0 obj << /Subtype /Form /BBox [ 165.24512 653.63184 182.21191 671.25342 ] /Length 87 0 R /Resources << /ColorSpace << /CS0 33 0 R /CS1 32 0 R >> >> /Group 88 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream 0 0 0 rg 0 i /RelativeColorimetric ri 178.80029 653.63184 m 182.21191 671.25342 l 165.24512 665.39697 l 178.80029 653.63184 l h f endstream endobj 87 0 obj 131 endobj 88 0 obj << /Type /Group /S /Transparency /I false /K false >> endobj 90 0 obj << /Subtype /Form /BBox [ 164.00098 613.00098 224.99951 671.25342 ] /Length 91 0 R /Resources << /XObject << /Fm0 82 0 R /Fm1 86 0 R >> /ExtGState << /GS0 85 0 R >> >> /Group 92 0 R /FormType 1 /Matrix [ 1 0 0 1 0 0 ] >> stream q /RelativeColorimetric ri /GS0 gs /Fm0 Do Q q /RelativeColorimetric ri /GS0 gs /Fm1 Do Q endstream endobj 91 0 obj 90 endobj 92 0 obj << /Type /Group /S /Transparency /I false /K true >> endobj 94 0 obj << /Type /Group /S /Transparency /I false /K false /CS /DeviceRGB >> endobj 95 0 obj << /Height 128 /Width 120 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter /FlateDecode /Length 96 0 R >> stream H?6}Wn :dCT>@ZIy!_ᾀ/}|YIl~XGH5z0x$=~ӫ6O݉Iݐǘ 6;^$B:.iWb *sg|3?hG/%=hbgACxFg+r3%z4I>ZfrxKD dfxƑP<* t_QjK Zvh bzIJ*/NLV̿2r}S2_v_un(W Ծ뙶mنay(mC/O-9T-"nQ yb|2*~n ]iFy0K ɳg7$nHݐM0@oM6(m[K4Jԛq%HU7K4<.]c0UUI* u][VPyO:wP<{KO[)!Z䅭Ү7@G|Ȋ0=3P*XYm#-1LojP'0ң`(``b>)*`l#|ż@z Xș\H=8!]WWzwo1'FճG_LIݠgu򬎹gɳ:7珟~[79jun++3<EQu?ؚ\DVeu=ܲl,1xch ґ-ɳ MӨKkۖT?OH1%dEl)Q(%$:O_0K;lU.~9 (H<J?B:(B8԰777SsIL:?dtjYSEvhBCIH@P[g4F2Crj@:䪑0@rÉ&I>-h`6E&v endstream endobj 96 0 obj 1848 endobj 97 0 obj << /Filter /FlateDecode /Length 98 0 R >> stream Hl[k0Aw5-H/f0&s*/:уK_:;ph } U;a;UT $4ͦgK .,هkg0?X`SoΞzm\_o2WyEa)4Q Pi[%?ysowi Qs]٘pp 4L + lfëhs]i[SD`dBQZCyei dNv a%&pX(ݚѕ*:A!2c R4Fɓw8Qah#D zVh2$? d endstream endobj 98 0 obj 346 endobj 99 0 obj << /Type /Metadata /Subtype /XML /Length 2989 >> stream 2003-11-04T10:28:57-05:00 2003-11-04T10:28:58-05:00 Adobe Illustrator 10.0.3 Adobe PDF library 5.00 2003-11-04T10:28:57-05:00 2003-11-04T10:28:58-05:00 Adobe Illustrator 10.0.3 2003-11-04T10:28:58-05:00 endstream endobj xref 0 100 0000000004 65535 f 0000000016 00000 n 0000000087 00000 n 0000000151 00000 n 0000000006 00001 f 0000000320 00000 n 0000000049 00001 f 0000000752 00000 n 0000000831 00000 n 0000001233 00000 n 0000001270 00000 n 0000002455 00000 n 0000009188 00000 n 0000027058 00000 n 0000027081 00000 n 0000044425 00000 n 0000044448 00000 n 0000063875 00000 n 0000063898 00000 n 0000084173 00000 n 0000084196 00000 n 0000096383 00000 n 0000096406 00000 n 0000100042 00000 n 0000100064 00000 n 0000118533 00000 n 0000118556 00000 n 0000140814 00000 n 0000140837 00000 n 0000159003 00000 n 0000159026 00000 n 0000164326 00000 n 0000164348 00000 n 0000164377 00000 n 0000164405 00000 n 0000164745 00000 n 0000164766 00000 n 0000164842 00000 n 0000164923 00000 n 0000165212 00000 n 0000165232 00000 n 0000165307 00000 n 0000165388 00000 n 0000165945 00000 n 0000165966 00000 n 0000166042 00000 n 0000166123 00000 n 0000166480 00000 n 0000166501 00000 n 0000000053 00001 f 0000166577 00000 n 0000166924 00000 n 0000166944 00000 n 0000000061 00001 f 0000167019 00000 n 0000167360 00000 n 0000167381 00000 n 0000167457 00000 n 0000167538 00000 n 0000167827 00000 n 0000167847 00000 n 0000000069 00001 f 0000167922 00000 n 0000168479 00000 n 0000168500 00000 n 0000168576 00000 n 0000168657 00000 n 0000169018 00000 n 0000169039 00000 n 0000000073 00001 f 0000169115 00000 n 0000169462 00000 n 0000169482 00000 n 0000000081 00001 f 0000169557 00000 n 0000169903 00000 n 0000169924 00000 n 0000170000 00000 n 0000170081 00000 n 0000170372 00000 n 0000170392 00000 n 0000000089 00001 f 0000170467 00000 n 0000170966 00000 n 0000170987 00000 n 0000171063 00000 n 0000171144 00000 n 0000171507 00000 n 0000171528 00000 n 0000000093 00001 f 0000171604 00000 n 0000171952 00000 n 0000171972 00000 n 0000000000 00001 f 0000172047 00000 n 0000172139 00000 n 0000174132 00000 n 0000174154 00000 n 0000174578 00000 n 0000174599 00000 n trailer << /Size 100 /Info 3 0 R /Root 1 0 R /ID[<1cef94fcc7aded1a671308e119a4d0c2>] >> startxref 177673 %%EOF king-2.21.120420/king/work/king-logo.2010.psd0000644000000000000000000111720211744310024016504 0ustar rootroot8BPS_j8BIM8BIM%F &Vڰw8BIM$: uuid:2450B99B2066DF11835C9CB64EB2A691 uuid:588ABEA6378BE111A350A6CAF1186E31 uuid:D4FA1277EB0CDE11A28EA27F41A7AE5A adobe:docid:photoshop:cc35d2bc-5ff7-11d9-8481-8a87f8eedeb4 1 720000/10000 720000/10000 2 256,257,258,259,262,274,277,284,530,531,282,283,296,301,318,319,529,532,306,270,271,272,305,315,33432;ED91BEC0921C0761F9B30CAF92AFC8AD 2012-04-20T18:25:44-04:00 Adobe Photoshop CS3 Windows 2010-05-23T00:09:57-04:00 2012-04-20T18:25:44-04:00 -1 400 400 36864,40960,40961,37121,37122,40962,40963,37510,40964,36867,36868,33434,33437,34850,34852,34855,34856,37377,37378,37379,37380,37381,37382,37383,37384,37385,37386,37396,41483,41484,41486,41487,41488,41492,41493,41495,41728,41729,41730,41985,41986,41987,41988,41989,41990,41991,41992,41993,41994,41995,41996,42016,0,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30;582FE5F672A5CE47043904F52E463B0A application/vnd.adobe.photoshop 3 8BIMHH8BIM&?8BIM x8BIM8BIM 8BIM 8BIM' 8BIMH/fflff/ff2Z5-8BIMp8BIM8BIM8BIM08BIM-8BIM@@8BIM8BIMnullbaseNameTEXTUserboundsObjcRct1Top longLeftlongBtomlongRghtlongslicesVlLsObjcslicesliceIDlonggroupIDlongoriginenum ESliceOrigin autoGeneratedTypeenum ESliceTypeImg boundsObjcRct1Top longLeftlongBtomlongRghtlongurlTEXTnullTEXTMsgeTEXTaltTagTEXTcellTextIsHTMLboolcellTextTEXT horzAlignenumESliceHorzAligndefault vertAlignenumESliceVertAligndefault bgColorTypeenumESliceBGColorTypeNone topOutsetlong leftOutsetlong bottomOutsetlong rightOutsetlong8BIM( ?8BIM8BIM 8BIM Z,>JFIFHH Adobe_CMAdobed            " ?   3!1AQa"q2B#$Rb34rC%Scs5&DTdE£t6UeuF'Vfv7GWgw5!1AQaq"2B#R3$brCScs4%&5DTdEU6teuFVfv'7GWgw ?I%)$IJI$RI$I%)$IJI$RI$I%)$IOZ/u_q EKAi~=wzl)F#xct#`0+) YY #was~6RZ=/[YwM~Eu81lOgTo{EwK]{d~9FQ2}QSGz`SzNmU5CMmf3sXcˏ '<7 )%w#g^^icUwIєef$&&z>RI$Tg@84cV&NFQ{C\{,3 'DIjXzE86YS?Զ]oS)B=xGNܤR^auTo`py_^;w "A:1B9TOI''FUO*icŏ rEAZ k9?˄]c[Wdґ_W녞֎w}WwWed}W&le܎>7*}۽ݷU_b]_OFN@y9VvT/o ?pC_?+/dNʭc]ÇiQ3Wj6v ĜkNi>qiY#_asAc}ivGF'vs 9|3^ 2~e<2;HO$zD~{ W?NŜ8"Q7j /o~cQ﫿WYM5b,&gLK5[7o*c#YrMtx_u޸ָfnsr.5=_o1~xbEᔱlg还s`u'UӴ\Kಠ;Cb泎9ȑ'Xbp.GN*Z'nh~Cl>KFМ#8 D$,1F龶}no .Sk4ɬ,v3бgus)$ 0c* e"MEc_Q\辨g<8/Et>``\ޡ*c ִm}]lo:EKȖf%m<[Y8՞K^/s`s\GԱu]1rjn~}v?`6/z}? gZ7&U^ ,{=_;#gq@RW~˘U(9~Kn<5v^XyY5cCnF;xsOcrn^O_+=,ܗ_rwEChxUo ?kXk}=?c mqi|p0]NK5u/k;.ZQj@`n}ɮǮޣc"c6=09DdG xDƧȪ=W܆c*lkG_lz, `p#v5d녛j<>W>Hj&ݬ*={ Z -'*I#&_(Rv Kxst'$"Cjú"yR)$qB"#%$ٷOu0h/Ǚl}&?!YA,ښϵP^ņi8L$wqiGWEW>ֵ=KjmeY88]>%<91C*c9 @ $njcwQ6mI%)$IJFcl!`h1%;^ȃ$cE6O$a{}gQzxAlf\ڿ}5KvshrN}džSn vAsCTֻL.!4}{oȹ s %N>Y"u9 %ԫFqƸ+>`wc]Oq$_[mhp/nH|kQ6XZZ\KI'IHD̫IM; ccs%ΏV籠<1Ͱ.3g|TH%iOYI#S?I#v*c}&~o6=kHtRI$I$I%)$IJI$Rs_:8խk㽬0^Fkr97{XCƱ6G<dcmukA{4N;yN2[OOgkm5X֒}ivݵ]Llgv{@[~)vaqkH;%}WS[Z5g蒢 *]hՎ*6z+MX+ikxm$n][mE[ == \ZhrtOJ?Ui$rI$$I)J JRI$Pf#Q(:ƅ%%{Y{\ ӦGq|k 8Fm{}񟞩cf$q % }/{2vd X.nnUKkEZz KJZ'Q->8Nú\"ZC?GUnT[* ֹ?=ާUr[.s*;n#i 9I!;RII\!I$JRIG)$rGiu-wqʵ-c x$;M G5'kkZ (58uNGV]["K4SWv'uq)nɇ>q652 S t&\KG 4Ě,V-Y`n.pWEYjiNx9˚2uh`7qc>>mq\\Z]`;t4G*x$4U0q nl;7ptj#?AwI~hh;6Yw P-.y{)_gbAkO䌉=t՟?C.{o;Nl k[C3@東?$zav tj#]CN뱞AvIl]ݻT]n8L o/4/I`}~`dsayI;⑽|A56cW^5Z0 v>i8[6C&6*qՂDqGH65Kf$!)iU-5f=/'sHH& !qs_K]bʡ5dzx !*5 -~m,՘tNy6vMCKHp0GHXH;RJԾL#M4)ŏtH^Rupt=rV{aKֳ~w($TH3R>?LcIRdκ/U?GL1x[`TX|#mQI+=ճvK|> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 33 38 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 1 /FontSize 24.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .18433 .27841 .60388 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth 1.0 >> >> >> ] /RunLengthArray [ 71 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 1 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 >> >> ] /FontSet [ << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (EurostileRegular) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (Helvetica) /Script 0 /FontType 1 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 >> >> ] /FontSet [ << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (EurostileRegular) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (Helvetica) /Script 0 /FontType 1 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni@http://kinemage.biochem.duke.e8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrpL.m+%0008BIMnorm(7(Copyright 2002 - 2012 Ian W. D8BIMTySh6??@h@k2TxLrTxt TEXTDCopyright 2002 - 2012 Ian W. Davis Vincent B. Chen Daniel A. Keedy textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnCr TextIndexlong EngineDatatdta3 << /EngineDict << /Editor << /Text (Copyright 2002 - 2012 Ian W. Davis Vincent B. Chen Daniel A. Keedy ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 22 1 13 16 16 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .39996 .36078 .05884 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth 1.0 >> >> >> << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 8.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .39996 .36078 .05884 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth 1.0 >> >> >> << /StyleSheet << /StyleSheetData << /Font 0 /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .39996 .36078 .05884 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth 1.0 >> >> >> ] /RunLengthArray [ 22 1 45 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 1 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 >> >> ] /FontSet [ << /Name (EuphemiaCAS) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (Helvetica) /Script 0 /FontType 1 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 >> >> ] /FontSet [ << /Name (EuphemiaCAS) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (Helvetica) /Script 0 /FontType 1 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni?Copyright 2002 - 2012 Ian W. Davis Vincent B. Chen Daniel A. K8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrp@&It:::8BIMnorm()(KiNG8BIMlfx2nullScl UntF#Prc@YmasterFXSwitchboolGrFlObjcGrFl enabboolMd enumBlnMNrmlOpctUntF#Prc@NGradObjc GradientGrdnNm TEXTForeground to TransparentGrdFenumGrdFCstSIntrdoub@ClrsVlLsObjcClrtClr ObjcRGBCRd doubGrn doubBl doubTypeenumClryUsrSLctnlongMdpnlong2ObjcClrtClr ObjcRGBCRd doubGrn doubBl doubTypeenumClryUsrSLctnlongMdpnlong2TrnsVlLsObjcTrnSOpctUntF#Prc@YLctnlongMdpnlong2ObjcTrnSOpctUntF#PrcLctnlongMdpnlong2AnglUntF#Ang@VTypeenumGrdTLnr RvrsboolAlgnboolScl UntF#Prc@YOfstObjcPnt HrznUntF#PrcVrtcUntF#Prc8BIMlrFX8BIMcmnS8BIMdsdw3x8BIMmul 8BIMisdw3x8BIMmul 8BIMoglw*8BIMscrn8BIMiglw+8BIMscrn8BIMbevlNx8BIMscrn8BIMmul 8BIMsofi"8BIMnorm8BIMTySh#8??@h@f@2TxLrTxt TEXTKiNGsubstitutesUsedbool textGriddingenum textGriddingNoneOrntenumOrntHrznAntAenumAnntAnCr TextIndexlong EngineDatatdta!\ << /EngineDict << /Editor << /Text (KiNG ) >> /ParagraphRun << /DefaultRunData << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> /RunArray [ << /ParagraphSheet << /DefaultStyleSheet 0 /Properties << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> /Adjustments << /Axis [ 1.0 0.0 1.0 ] /XY [ 0.0 0.0 ] >> >> ] /RunLengthArray [ 5 ] /IsJoinable 1 >> /StyleRun << /DefaultRunData << /StyleSheet << /StyleSheetData << >> >> >> /RunArray [ << /StyleSheet << /StyleSheetData << /Font 1 /FontSize 150.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 .85883 .77646 .12155 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst false /YUnderline 1 /OutlineWidth 1.0 >> >> >> ] /RunLengthArray [ 5 ] /IsJoinable 2 >> /GridInfo << /GridIsOn false /ShowGrid false /GridSize 18.0 /GridLeading 22.0 /GridColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /GridLeadingFillColor << /Type 1 /Values [ 0.0 0.0 0.0 1.0 ] >> /AlignLineHeightToGridFlags false >> /AntiAlias 1 /UseFractionalGlyphWidths true /Rendered << /Version 1 /Shapes << /WritingDirection 0 /Children [ << /ShapeType 0 /Procession 0 /Lines << /WritingDirection 0 /Children [ ] >> /Cookie << /Photoshop << /ShapeType 0 /PointBase [ 0.0 0.0 ] /Base << /ShapeType 0 /TransformPoint0 [ 1.0 0.0 ] /TransformPoint1 [ 0.0 1.0 ] /TransformPoint2 [ 0.0 0.0 ] >> >> >> >> ] >> >> >> /ResourceDict << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 >> >> ] /FontSet [ << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (Optima-Regular) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (Helvetica) /Script 0 /FontType 1 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> /DocumentResources << /KinsokuSet [ << /Name (PhotoshopKinsokuHard) /NoStart (00 00    0=]0 0 0 00000000A0C0E0G0I0c000000000000000000?!\)]},.:;!!  0) /NoEnd (  0;[00 0 00\([{ 0) /Keep (  %) /Hanging (00.,) >> << /Name (PhotoshopKinsokuSoft) /NoStart (00 0   0=]0 0 0 0000000) /NoEnd (  0;[00 0 00) /Keep (  %) /Hanging (00.,) >> ] /MojiKumiSet [ << /InternalName (Photoshop6MojiKumiSet1) >> << /InternalName (Photoshop6MojiKumiSet2) >> << /InternalName (Photoshop6MojiKumiSet3) >> << /InternalName (Photoshop6MojiKumiSet4) >> ] /TheNormalStyleSheet 0 /TheNormalParagraphSheet 0 /ParagraphSheetSet [ << /Name (Normal RGB) /DefaultStyleSheet 0 /Properties << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 8 /Zone 36.0 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /AutoLeading 1.2 /LeadingType 0 /Hanging false /Burasagari false /KinsokuOrder 0 /EveryLineComposer false >> >> ] /StyleSheetSet [ << /Name (Normal RGB) /StyleSheetData << /Font 2 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /AutoKerning true /Kerning 0 /BaselineShift 0.0 /FontCaps 0 /FontBaseline 0 /Underline false /Strikethrough false /Ligatures true /DLigatures false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /StrokeColor << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> /FillFlag true /StrokeFlag false /FillFirst true /YUnderline 1 /OutlineWidth 1.0 >> >> ] /FontSet [ << /Name (AdobeInvisFont) /Script 0 /FontType 0 /Synthetic 0 >> << /Name (Optima-Regular) /Script 0 /FontType 1 /Synthetic 0 >> << /Name (Helvetica) /Script 0 /FontType 1 /Synthetic 0 >> ] /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 >> >>warp warpStyleenum warpStylewarpNone warpValuedoubwarpPerspectivedoubwarpPerspectiveOtherdoub warpRotateenumOrntHrzn8BIMluni KiNG8BIMlnsrrend8BIMlyid8BIMclbl8BIMinfx8BIMknko8BIMlspf8BIMlclr8BIMfxrp@?CDDE=  -GA%#%#Q]ZZ B- )B6wDwUwDwDwDwDwUwDwDwDwDD3wDwDwDwDwwwDwDwDwD3DD"DD"DD"D"DDD3"DwDDDD3"D3DD"DD3DD33DDD3"DD""DDDD3D33DDwD3DDDD3D33DDD"DD"3D"DD "DD"wDD33DwwwwwwwD"wD fww33f3DU3D33fw33www33f3DUfwDDw333333D wf"f wfwwwwDf wwwUUUUU""U3"fUwDUU33"D3"wUUwf"fUUUUU""f"UwDDw 3UUUU U"Dw"w"DwDwfwDwD3UwwD"3DDwD UwwD3w"DwD3UwUwDDw DwDDwDDDwDwU"D"wDfwDwwDUwDDwwUDwwDU wUDwwDwwDUwDDwwDDw"wwDUwwDUwUDwDwDwDfwwwDwwwwDDwDw"wDwDwww wDwDwwwwDDwwDDw3wwwwwwwDwDwDwDwD33wwDwfwDDwwwwDwDwf wDwDwfwDDwwDDwݪfwfwfwDwDwDwDwDUwwD3wDwUwDDwDwDwDwU wDwDwUwDDwwDDw3wUwUwDwDwDwwwf"UwwDfwDfw"wDwDDwffDfw"wD "fffDwDfw"wDwDDw3wDUw 3fw"wDfw"wDUwDwD3w3wwD333wDwwD3UwwDDw33D3UwD3" ffwU3w"wD3UwwD Dw"D"fffw 33 UwD33Uw"D"wDwD"wD"wUDUwUwwD wwDDf"wDDwwDDDfDDf"wDDw"wDDff UDDwwDDf"wDDwwDDfDDfDUw3Df"Df"DDfDwDDwwD3U3UwUwUwwD fwDDwDDwwUwwDDU"DfwwDDwDDwwDU33UwDDD wwDwUwDD3wDwDwwfwDwD"DwDD"wwf3DffDDwDwwDwDwD3wDwwDwwwwDwDwDwDwD"wDwDwDDwDwDwDffwDwDwD3DDDwDD33DD3DD"D3D3Uww3D"D"D"D3DwD"DDD3D3DwD"wDDD33DwDDD3DD3 "D3DD"D3D3D3DD3Uww3"D"D3DwD"D3D"www33wDww3 ݻUf3U3UfwD33fwwDwDfwwUw33 ݻU3UwwU wf"fUUf""D3f U3"ff"UD""fUDD wDwU33"U3"fwDwDwDff""f www3"UUD""wDffw"DwD"ww3wD"wUf3wD"DwD3UwwD"wDwDwDwfw3wDwDwf3wDwDwwDUwwDwDUwDwDwwDwDwDwDwDwDfwDDwwwDUUwwD3wwDwwww3wDDw"wU3DwDwwDwDwfwDDw"wDwDwwwD""wwwwU3wDDfwDwDwf3wDwwDwDwwDwDwDwwwDwDwwD3wwfwDwDwUwDDUDwDwwDwDffDDwDwDDwwD3wD 3wwUUwD"wDfw"wDݻwD3wfDw3UwwDwDwDwD" wDwwDwUwDffwwD "w"fw"wDwfDwwDw"w3wwD3Uw"wD3"fUw3wDwDwfD"ff 3wUwD""wDw"3wwwD3w3UwUw wUw3wDDf"DwDDU3wDwDDfDDDw "UDDwDwDfDDfDwDDwwD DDfwwwwDDwwDwDfDUw wDݻwDf"Dw" DDfwwDDU3wDwUU3Uwݙ"wDwD3ݙDU"wUwwUwUwDfUwD"wD"DUw"wf""DDDf////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁욁4alTH}|~C&**&TVWJSURS\V# ),0(homca]Vhso&+..)fmnfgg`ktr7 3D33D3D"D"DD"DD3DDDUw3fwUff"Dw3D"fw""w""www""3DwwU""3UUf3wwD"3UU3w3wD""fw"w f"D3w"w"UU3̪DDw݈ wDDww""w3wwwU w3wDwD"w""f3wUwUDwww̪U""U̙U3f݈U33D3ww3Dww&fݻ3DD3wDfD̈wDDfwwwwDDDD DDwD"UDDD̻fwwwwfU"DDfUDDUUUDDDUwDDwDDw3wwwwwfw33DDwf3fwwDDU"fwDDf3wfwwwwf"D33DDfwwDDww DDww"̻wwwD"3U33Uf33f"3fDDݙw3w DD"wwf"UU"̙3݈fDf3""DD"f"wDD"ww"w̙U""fݪf"""wfwwwD""ww DD"wwDwwD "UwwU3"D3wD 3""D DDDDDwUwD3w"wDDwwfwDDwwffD3DD"DDDDD3""""DDDD3D"DDD"DwUDDD"DU̻DUDU̿DDfUwfDffwD3wDwwwwf3wwU3w"w3Uwwfw3w"wfݙDUf"wݪ "w"w"fUffff wwwDw DwD݈w݈ fwww3Uf3Dfw3 fww̙www"wf3wDDDDDD 3DwDfww w33 w UwDDDDD wDUD"w3www fDfw̻UDDDDDDUwwݪf"wwDwfwDDDDDDww̪wffww""""wwDDDDDD3wDwwDwwU"DDwfDDDDDD3D3wDDf"Dww ""wfwDDDDwwf33"UD"D"DDD3D3D3"DDfw""D3fݪݻw 33fUw3f""ݪw3fwDDf"wݪ̪ wDfU"UffDD w3D3wwwf3wUDwwDwww"f wݙwUwwfwf ݈w"DݙẅwDwwݪwDUwwffU3wwww"3ww"wU"UDwwwfww̙̻wwfwwwDwwfUwwwU3fwwwDwwݪwD3wwwwݪf"wwwDwݙwwfw""wDww3fw3wwfw"3"fwDwwDw" U3fw ""D̻www33UwwDDݙ""UwwDww3D""DDDD"3D3D"fwD3UDf3fwwwwwU3wwwff3Uwwݪ"w"w3D3fwwݙw""f"f "w̻3wUww D݈w݈w"w3wf33w3w 3www݈www"w3ww"3wf3UUw3w333wwww ẅ̙̻fwfwDU33w3www w"fwDwDww̙wwݪf"ww wD3wwUwfDwD"DwD"wf3"wffwww wݙ̙w3"f"fw"fwDww w3"Uwݻ3ݻ33wfwDDf"Dwww""D̻wf3w3UfwUfwU"w3wf 33wwDwU̙"wUwwwwwwD3DD"D3"DDDD3D33DwDUffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\*)Q<=:IA>?>@ADDA77432-,,,266898877E?=?A?><@>>=;:66423:=99?E=A@AA???CEDECEFEEEE@@@:;==;9779:>>>=:<>;@F>:=>>! p0@p@@`00`p@`P@`0`P@0@`@0pP@0`P@Pp @00 @0p@0P`@@аP@  @``p0Ѐ@0p@P``@p`   @`p0````@@`P@0``00P0    P`0@@`P00P0 @`  0P0@`0@```0@P``0@@0``@ ``@P```000`@p0`00 `00 @00@0@@0@0@@``@`` @```pP@`@p@`@`0@`@`P@P@`p@@@0@ @@@0@`0@0@@`@ @P@@@@@@0 @@@@0`@0@@0@0@@@@@0@`@@`0@` @p0@``@P0@`@0@`@@P@@0@@0@`0 @`p0@``@@@@00 @0@0@ @0@@@@@ `@`@@0@@``@`@@`P@`@@`@@`@@`@о@P0@@` @@0@@P0@@0@@0p@@P@@0@@`@0@0@@@@@@ 00@@p@@@0 p@@`@@@0p@@00@@pP @@@0@``@@`@``@@P`@@@@ @@@ pА@@0` `@``0@000 @0@@@P@@0`@@@@p@p@p `@@`@@@@0@0@@0@0 @@` @``0@@P@ @0@0@@@`@ p@@@p@`@@p@@Ppp@@0`@@ PP@@P@ @@` @p@0`0 @@`ఀ@0@0@ @@0@`P@@0@0@PА@@@@`@pР` @ppp@`ఀ@0@ @@ @P@P@@0`P0@0PP@@@ @0ہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮہہۮƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮƁƁƮ8BIMPatt8BIMTxt2 /DocumentResources << /FontSet << /Resources [ << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (EuphemiaCAS) /Type 1 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (AdobeInvisFont) /Type 0 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (Optima-Regular) /Type 1 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (EurostileRegular) /Type 1 >> >> >> << /Resource << /StreamTag /CoolTypeFont /Identifier << /Name (Helvetica) /Type 1 >> >> >> ] >> /MojiKumiCodeToClassSet << /Resources [ << /Resource << /Name () /Members << /ClassMappings [ << /R (55) /C 1 >> << /R (77) /C 1 >> << /R (99) /C 1 >> << /R (;;) /C 1 >> << /R (==) /C 1 >> << /R (??) /C 1 >> << /R (AA) /C 1 >> << /R (CC) /C 1 >> << /R () /C 1 >> << /R (;;) /C 1 >> << /R ([[) /C 1 >> << /R (  ) /C 1 >> << /R (00) /C 1 >> << /R (0 0 ) /C 1 >> << /R (0 0 ) /C 1 >> << /R (00) /C 1 >> << /R (00) /C 1 >> << /R (00) /C 1 >> << /R (66) /C 2 >> << /R (88) /C 2 >> << /R (::) /C 2 >> << /R (<<) /C 2 >> << /R (>>) /C 2 >> << /R (@@) /C 2 >> << /R (BB) /C 2 >> << /R (DD) /C 2 >> << /R ( ) /C 2 >> << /R (==) /C 2 >> << /R (]]) /C 2 >> << /R (  ) /C 2 >> << /R (0 0 ) /C 2 >> << /R (0 0 ) /C 2 >> << /R (0 0 ) /C 2 >> << /R (00) /C 2 >> << /R (00) /C 2 >> << /R (00) /C 2 >> << /R () /C 3 >> << /R (^^) /C 3 >> << /R (0A0A) /C 3 >> << /R (0C0C) /C 3 >> << /R (0E0E) /C 3 >> << /R (0G0G) /C 3 >> << /R (0I0I) /C 3 >> << /R (0c0c) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R (00) /C 3 >> << /R () /C 4 >> << /R () /C 4 >> << /R () /C 5 >> << /R (00) /C 5 >> << /R (  ) /C 5 >> << /R () /C 6 >> << /R (00) /C 6 >> << /R ( ) /C 7 >> << /R (00) /C 7 >> << /R (  ) /C 8 >> << /R ( % &) /C 8 >> << /R () /C 9 >> << /R () /C 9 >> << /R () /C 9 >> << /R () /C 10 >> << /R () /C 10 >> << /R () /C 10 >> << /R ( 0 0) /C 10 >> << /R ( 2 4) /C 10 >> << /R (00) /C 11 >> << /R (0B0B) /C 12 >> << /R (0D0D) /C 12 >> << /R (0F0F) /C 12 >> << /R (0H0H) /C 12 >> << /R (0J0b) /C 12 >> << /R (0d0) /C 12 >> << /R (00) /C 12 >> << /R (00) /C 12 >> << /R (00) /C 12 >> << /R () /C 13 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (00) /C 14 >> << /R (2 2C) /C 14 >> << /R (22) /C 14 >> << /R (22) /C 14 >> << /R (33W) /C 14 >> << /R (3q3v) /C 14 >> << /R (33) /C 14 >> << /R (N) /C 14 >> << /R (09) /C 15 >> << /R (!~) /C 16 >> << /R () /C 16 >> << /R (  ) /C 16 >> << /R (  ) /C 16 >> ] >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /MojiKumiTableSet << /Resources [ << /Resource << /Name (Photoshop6MojiKumiSet4) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 17 ] /Data << /B << /R [ .25 .25 .25 ] >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 17 /Elements [ << /P [ 17 1 ] /Data << /A << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 18 /Elements [ << /P [ 18 1 ] /Data << /A << /R [ .5 .5 .5 ] >> >> >> ] >> ] >> >> /PredefinedTag 2 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet3) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 4 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet2) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 3 >> >> >> << /Resource << /Name (Photoshop6MojiKumiSet1) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 1 >> >> >> << /Resource << /Name (YakumonoHankaku) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 2 >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 1 >> >> >> << /Resource << /Name (GyomatsuYakumonoHankaku) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 3 >> >> >> << /Resource << /Name (GyomatsuYakumonoZenkaku) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 17 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> ] >> >> /PredefinedTag 4 >> >> >> << /Resource << /Name (YakumonoZenkaku) /Members << /CodeToClass 0 /AutoTsume << /TsumeMappings [ << /Before -.5 /Code () >> << /Before -.5 /Code (;) >> << /Before -.5 /Code ([) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code ( ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0 ) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /Before -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (=) >> << /After -.5 /Code (]) >> << /After -.5 /Code ( ) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0 ) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code (0) >> << /After -.5 /Code () >> << /After -.5 /Code (0) >> << /After -.5 /Code ( ) >> << /After -.5 /Code (0) >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code () >> << /Before -.25 /After -.25 /Code (0) >> << /Before -.25 /After -.25 /Code ( ) >> ] >> /Table << /DataArray << /SparseArray [ << /Index 1 /Elements [ << /P [ 1 5 ] /Data << /A << /R [ .25 .25 .25 ] /P 1 >> >> >> ] >> << /Index 2 /Elements [ << /P [ 2 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 2 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 2 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 2 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 11 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 3 >> >> >> << /P [ 2 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 2 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 3 /Elements [ << /P [ 3 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 3 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 3 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 3 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 3 15 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 3 16 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 4 /Elements [ << /P [ 4 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 4 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 4 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 4 15 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 4 16 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> ] >> << /Index 5 /Elements [ << /P [ 5 1 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 2 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 3 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 4 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 5 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 1 >> >> >> << /P [ 5 6 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 7 ] /Data << /B << /R [ .25 .25 .25 ] /P 1 >> >> >> << /P [ 5 8 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 9 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 10 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 11 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 12 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 13 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 14 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 15 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 16 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 5 17 ] /Data << /B << /R [ .25 .25 .25 ] >> >> >> ] >> << /Index 6 /Elements [ << /P [ 6 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 6 3 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 4 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 5 ] /Data << /B << /R [ 0.0 .75 .75 ] /P 1 >> >> >> << /P [ 6 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 6 8 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 9 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 10 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 11 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 12 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 13 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 14 ] /Data << /B << /R [ 0.0 .5 .5 ] >> >> >> << /P [ 6 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 4 >> >> >> << /P [ 6 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 7 /Elements [ << /P [ 7 1 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 3 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 4 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 5 ] /Data << /B << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 7 7 ] /Data << /B << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 7 8 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 9 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 10 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 12 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 13 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 14 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 15 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 16 ] /Data << /B << /R [ 0.0 .5 .5 ] /P 2 >> >> >> << /P [ 7 17 ] /Data << /B << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 8 /Elements [ << /P [ 8 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 8 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 8 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 8 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 8 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 8 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 9 /Elements [ << /P [ 9 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 9 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 9 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 9 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 9 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 9 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 10 /Elements [ << /P [ 10 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 10 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 10 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 10 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 10 15 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 10 16 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 11 /Elements [ << /P [ 11 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 11 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 11 15 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> << /P [ 11 16 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 4 >> >> >> ] >> << /Index 12 /Elements [ << /P [ 12 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 12 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 12 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 12 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 12 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 12 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 13 /Elements [ << /P [ 13 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 13 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 13 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 13 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 13 15 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 13 16 ] /Data << /B << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> ] >> << /Index 14 /Elements [ << /P [ 14 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 14 3 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 14 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 14 8 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 9 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 10 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 12 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 13 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 14 ] /Data << /A << /R [ 0.0 0.0 1.0 ] >> >> >> << /P [ 14 15 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 14 16 ] /Data << /B << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 15 /Elements [ << /P [ 15 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 15 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 15 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 15 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 15 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 15 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 15 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 15 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 16 /Elements [ << /P [ 16 1 ] /Data << /A << /R [ 0.0 .5 .5 ] /P 3 >> >> >> << /P [ 16 3 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 4 ] /Data << /A << /R [ .125 .25 .25 ] /P 4 >> >> >> << /P [ 16 5 ] /Data << /A << /R [ 0.0 .25 .25 ] /P 1 >> >> >> << /P [ 16 7 ] /Data << /A << /R [ 0.0 0.0 0.0 ] /P 2 >> >> >> << /P [ 16 8 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 9 ] /Data << /A << /R [ 0.0 0.0 .5 ] /P 4 >> >> >> << /P [ 16 10 ] /Data << /A << /R [ 0.0 0.0 .5 ] >> >> >> << /P [ 16 12 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> << /P [ 16 14 ] /Data << /A << /R [ .125 .25 .5 ] /P 4 >> >> >> ] >> << /Index 17 /Elements [ << /P [ 17 1 ] /Data << /A << /R [ .5 .5 .5 ] >> >> >> ] >> << /Index 18 /Elements [ << /P [ 18 1 ] /Data << /A << /R [ .5 .5 .5 ] >> >> >> ] >> ] >> >> /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> << /Resource 5 >> << /Resource 6 >> << /Resource 7 >> ] >> /KinsokuSet << /Resources [ << /Resource << /Name (None) /Data << /NoStart () /NoEnd () /Keep () /Hanging () /PredefinedTag 0 >> >> >> << /Resource << /Name (PhotoshopKinsokuHard) /Data << /NoStart (!\),.:;?]}    0!! 0000 0 0 0000A0C0E0G0I0c000000000000000000000000 =]) /NoEnd (\([{  00 0 0000 ;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 1 >> >> >> << /Resource << /Name (PhotoshopKinsokuSoft) /Data << /NoStart (  0000 0 0 00000000 =]) /NoEnd (  00 0 000;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 2 >> >> >> << /Resource << /Name (Hard) /Data << /NoStart (!\),.:;?]}    0!! 0000 0 0 0000A0C0E0G0I0c000000000000000000000000 =]) /NoEnd (\([{  00 0 0000 ;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 1 >> >> >> << /Resource << /Name (Soft) /Data << /NoStart (  0000 0 0 00000000 =]) /NoEnd (  00 0 000;[) /Keep (  % &) /Hanging (00 ) /PredefinedTag 2 >> >> >> ] /DisplayList [ << /Resource 0 >> << /Resource 1 >> << /Resource 2 >> << /Resource 3 >> << /Resource 4 >> ] >> /StyleSheetSet << /Resources [ << /Resource << /Name (Normal RGB) /Features << /Font 4 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /ParagraphSheetSet << /Resources [ << /Resource << /Name (Normal RGB) /Features << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /KurikaeshiMojiShori false /Kinsoku /nil /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> >> >> >> ] /DisplayList [ << /Resource 0 >> ] >> /TextFrameSet << /Resources [ << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> << /Resource << /Bezier << /Points [ 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 ] >> /Data << /Type 0 /LineOrientation 0 /TextOnPathTRange [ -1.0 -1.0 ] /RowGutter 0.0 /ColumnGutter 0.0 /FirstBaselineAlignment << /Flag 1 /Min 0.0 >> /PathData << /Spacing -1 >> >> >> >> ] >> >> /DocumentObjects << /DocumentSettings << /HiddenGlyphFont << /AlternateGlyphFont 1 /WhitespaceCharacterMapping [ << /WhitespaceCharacter ( ) /AlternateCharacter (1) >> << /WhitespaceCharacter ( ) /AlternateCharacter (6) >> << /WhitespaceCharacter ( ) /AlternateCharacter (0) >> << /WhitespaceCharacter ( \)) /AlternateCharacter (5) >> << /WhitespaceCharacter () /AlternateCharacter (5) >> << /WhitespaceCharacter (0) /AlternateCharacter (1) >> << /WhitespaceCharacter () /AlternateCharacter (3) >> ] >> /NormalStyleSheet 0 /NormalParagraphSheet 0 /SuperscriptSize .583 /SuperscriptPosition .333 /SubscriptSize .583 /SubscriptPosition .333 /SmallCapSize .7 /UseSmartQuotes true /SmartQuoteSets [ << /Language 0 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 1 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 2 /OpenDoubleQuote (0 ) /CloseDoubleQuote (0 ) >> << /Language 3 /OpenDoubleQuote (0 ) /CloseDoubleQuote (0 ) >> << /Language 4 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) >> << /Language 5 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) >> << /Language 6 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) >> << /Language 7 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 8 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 9 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 12 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 13 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 14 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 15 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 16 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 18 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) >> << /Language 22 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) >> << /Language 23 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) >> << /Language 25 /OpenDoubleQuote (0 ) /CloseDoubleQuote (0 ) >> << /Language 28 /OpenDoubleQuote ( ) /CloseDoubleQuote ( ) /OpenSingleQuote ( ) /CloseSingleQuote ( ) >> << /Language 29 /OpenDoubleQuote (0) /CloseDoubleQuote (0) >> << /Language 30 /OpenDoubleQuote (0 ) /CloseDoubleQuote (0 ) >> ] >> /TextObjects [ << /Model << /Text (http://kinemage.biochem.duke.edu The Richardson lab at Duke University ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /Hanging false /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /EveryLineComposer false >> /Parent 0 >> >> /Length 33 >> << /RunData << /ParagraphSheet << /Name () /Features << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /Hanging false /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /EveryLineComposer false >> /Parent 0 >> >> /Length 38 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 3 /FontSize 24.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /Ligatures true /DiscretionaryLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .18433 .27841 .60388 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst false /LineWidth 1.0 >> >> >> /Length 71 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 71 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 71 >> ] >> /StorySheet << /AntiAlias 1 /UseFractionalGlyphWidths true >> >> /View << /Frames [ << /Resource 1 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 33 >> << /RunData << /LineCount 1 >> /Length 38 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 1 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 0.0 /EMHeight 0.0 /DHeight 0.0 /SelectionAscent -20.00391 /SelectionDescent 6.0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -20.00391 0.0 6.0 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 33 >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ -176.83008 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -20.00391 353.66016 6.0 ] /Glyphs [ 42 54 54 50 85 102 102 45 43 48 39 47 35 41 39 84 36 43 49 37 42 39 47 84 38 55 45 39 84 39 38 55 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 33 ] >> /VisualBounds [ -176.83008 -20.00391 176.83008 6.0 ] /RenderedBounds [ -176.83008 -20.00391 176.83008 6.0 ] /Invalidation [ -176.83008 -20.00391 188.34998 6.0 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 3 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 >> ] /RunLengths [ 33 ] >> /EndsInCR true /SelectionAscent -20.00391 /SelectionDescent 6.0 >> ] >> ] >> << /StreamTag /LineStrike /Baseline 28.8 /Leading 0.0 /EMHeight 0.0 /DHeight 0.0 /SelectionAscent -20.00391 /SelectionDescent 6.0 /Transform << /Origin [ 0.0 28.8 ] >> /Bounds [ 0.0 -20.00391 0.0 6.0 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 38 >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ -188.16797 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -20.00391 376.33594 6.0 ] /Glyphs [ 24 42 39 3 22 43 37 42 35 52 38 53 49 48 3 46 35 36 3 35 54 3 8 55 45 39 3 25 48 43 56 39 52 53 43 54 59 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 38 ] >> /VisualBounds [ -188.16797 8.79609 188.24121 34.8 ] /RenderedBounds [ -188.16797 8.79609 188.24121 34.8 ] /Invalidation [ -188.16797 8.79609 199.68787 34.8 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 3 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 >> ] /RunLengths [ 38 ] >> /EndsInCR true /SelectionAscent -20.00391 /SelectionDescent 6.0 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> << /Model << /Text (Copyright 2002 - 2012 Ian W. Davis Vincent B. Chen Daniel A. Keedy ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /Hanging false /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /EveryLineComposer false >> /Parent 0 >> >> /Length 22 >> << /RunData << /ParagraphSheet << /Name () /Features << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /Hanging false /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /EveryLineComposer false >> /Parent 0 >> >> /Length 1 >> << /RunData << /ParagraphSheet << /Name () /Features << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /Hanging false /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /EveryLineComposer false >> /Parent 0 >> >> /Length 13 >> << /RunData << /ParagraphSheet << /Name () /Features << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /Hanging false /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /EveryLineComposer false >> /Parent 0 >> >> /Length 16 >> << /RunData << /ParagraphSheet << /Name () /Features << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /Hanging false /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /EveryLineComposer false >> /Parent 0 >> >> /Length 16 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 0 /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /Ligatures true /DiscretionaryLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .39996 .36078 .05884 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst false /LineWidth 1.0 >> >> >> /Length 22 >> << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 0 /FontSize 8.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /Ligatures true /DiscretionaryLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .39996 .36078 .05884 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst false /LineWidth 1.0 >> >> >> /Length 1 >> << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 0 /FontSize 18.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /Ligatures true /DiscretionaryLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .39996 .36078 .05884 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst false /LineWidth 1.0 >> >> >> /Length 45 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 68 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 68 >> ] >> /StorySheet << /AntiAlias 1 /UseFractionalGlyphWidths true >> >> /View << /Frames [ << /Resource 2 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 22 >> << /RunData << /LineCount 1 >> /Length 1 >> << /RunData << /LineCount 1 >> /Length 13 >> << /RunData << /LineCount 1 >> /Length 16 >> << /RunData << /LineCount 1 >> /Length 16 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 2 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 0.0 /EMHeight 0.0 /DHeight 0.0 /SelectionAscent -15.88623 /SelectionDescent 6.13477 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -15.88623 0.0 6.13477 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 22 >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ -90.43066 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -15.88623 180.86133 6.13477 ] /Glyphs [ 677 721 722 731 724 715 713 714 726 3 660 658 658 660 3 656 3 660 658 659 660 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 22 ] >> /VisualBounds [ -90.43066 -15.88623 93.12891 6.13477 ] /RenderedBounds [ -90.43066 -15.88623 93.12891 6.13477 ] /Invalidation [ -90.43066 -15.88623 99.4834 6.13477 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 0 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 >> ] /RunLengths [ 22 ] >> /EndsInCR true /SelectionAscent -15.88623 /SelectionDescent 6.13477 >> ] >> ] >> << /StreamTag /LineStrike /Baseline 9.6 /Leading 0.0 /EMHeight 0.0 /DHeight 0.0 /SelectionAscent -7.06055 /SelectionDescent 2.72656 /Transform << /Origin [ 0.0 9.6 ] >> /Bounds [ 0.0 -7.06055 0.0 2.72656 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 1 >> /FirstCharacterIndexInSegment 22 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -7.06055 0.0 2.72656 ] /Glyphs [ 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 1 ] >> /VisualBounds [ 0.0 2.53945 0.0 12.32656 ] /RenderedBounds [ 0.0 2.53945 0.0 12.32656 ] /Invalidation [ 0.0 2.53945 4.02344 12.32656 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 0 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 >> ] /RunLengths [ 1 ] >> /EndsInCR true /SelectionAscent -7.06055 /SelectionDescent 2.72656 >> ] >> ] >> << /StreamTag /LineStrike /Baseline 31.2 /Leading 0.0 /EMHeight 0.0 /DHeight 0.0 /SelectionAscent -15.88623 /SelectionDescent 6.13477 /Transform << /Origin [ 0.0 31.2 ] >> /Bounds [ 0.0 -15.88623 0.0 6.13477 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 13 >> /FirstCharacterIndexInSegment 23 /Transform << /Origin [ -49.19678 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -15.88623 98.39355 6.13477 ] /Glyphs [ 683 707 720 3 697 654 3 678 707 728 715 725 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 13 ] >> /VisualBounds [ -49.19678 15.31377 52.08838 37.33477 ] /RenderedBounds [ -49.19678 15.31377 52.08838 37.33477 ] /Invalidation [ -49.19678 15.31377 58.24951 37.33477 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 0 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 >> ] /RunLengths [ 13 ] >> /EndsInCR true /SelectionAscent -15.88623 /SelectionDescent 6.13477 >> ] >> ] >> << /StreamTag /LineStrike /Baseline 52.8 /Leading 0.0 /EMHeight 0.0 /DHeight 0.0 /SelectionAscent -15.88623 /SelectionDescent 6.13477 /Transform << /Origin [ 0.0 52.8 ] >> /Bounds [ 0.0 -15.88623 0.0 6.13477 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 16 >> /FirstCharacterIndexInSegment 36 /Transform << /Origin [ -64.4458 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -15.88623 128.8916 6.13477 ] /Glyphs [ 696 715 720 709 711 720 726 3 676 654 3 677 714 711 720 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 16 ] >> /VisualBounds [ -64.4458 36.91377 66.81885 58.93477 ] /RenderedBounds [ -64.4458 36.91377 66.81885 58.93477 ] /Invalidation [ -64.4458 36.91377 73.49854 58.93477 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 0 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 >> ] /RunLengths [ 16 ] >> /EndsInCR true /SelectionAscent -15.88623 /SelectionDescent 6.13477 >> ] >> ] >> << /StreamTag /LineStrike /Baseline 74.4 /Leading 0.0 /EMHeight 0.0 /DHeight 0.0 /SelectionAscent -15.88623 /SelectionDescent 6.13477 /Transform << /Origin [ 0.0 74.4 ] >> /Bounds [ 0.0 -15.88623 0.0 6.13477 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 16 >> /FirstCharacterIndexInSegment 52 /Transform << /Origin [ -63.78662 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -15.88623 127.57324 6.13477 ] /Glyphs [ 678 707 720 715 711 718 3 675 654 3 685 711 711 710 731 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 16 ] >> /VisualBounds [ -63.78662 58.51377 67.05588 80.53477 ] /RenderedBounds [ -63.78662 58.51377 67.05588 80.53477 ] /Invalidation [ -63.78662 58.51377 72.83936 80.53477 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 0 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 >> ] /RunLengths [ 16 ] >> /EndsInCR true /SelectionAscent -15.88623 /SelectionDescent 6.13477 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> << /Model << /Text (KiNG ) /ParagraphRun << /RunArray [ << /RunData << /ParagraphSheet << /Name () /Features << /Justification 2 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 8 /PreHyphen 3 /PostHyphen 3 /ConsecutiveHyphens 2 /Zone 36.0 /HyphenateCapitalized true /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /Hanging false /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /EveryLineComposer false >> /Parent 0 >> >> /Length 5 >> ] >> /StyleRun << /RunArray [ << /RunData << /StyleSheet << /Name () /Parent 0 /Features << /Font 2 /FontSize 150.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /Ligatures true /DiscretionaryLigatures false /BaselineDirection 1 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 .85883 .77646 .12155 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /FillFlag true /StrokeFlag false /FillFirst false /LineWidth 1.0 >> >> >> /Length 5 >> ] >> /KernRun << /RunArray [ << /RunData << >> /Length 5 >> ] >> /AlternateGlyphRun << /RunArray [ << /RunData << >> /Length 5 >> ] >> /StorySheet << /AntiAlias 1 /UseFractionalGlyphWidths true >> >> /View << /Frames [ << /Resource 0 >> ] /RenderedData << /RunArray [ << /RunData << /LineCount 1 >> /Length 5 >> ] >> /Strikes [ << /StreamTag /PathSelectGroupCharacter /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 0 /Children [ << /StreamTag /FrameStrike /Frame 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /RowColStrike /RowColIndex 0 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 2 /Children [ << /StreamTag /LineStrike /Baseline 0.0 /Leading 0.0 /EMHeight 0.0 /DHeight 0.0 /SelectionAscent -126.37482 /SelectionDescent 40.20081 /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -126.37482 0.0 40.20081 ] /ChildProcession 1 /Children [ << /StreamTag /Segment /Mapping << /CharacterCount 5 >> /FirstCharacterIndexInSegment 0 /Transform << /Origin [ -183.3744 0.0 ] >> /Bounds [ 0.0 0.0 0.0 0.0 ] /ChildProcession 1 /Children [ << /StreamTag /GlyphStrike /Transform << /Origin [ 0.0 0.0 ] >> /Bounds [ 0.0 -126.37482 366.74881 40.20081 ] /Glyphs [ 50 80 53 46 3 ] /GlyphAdjustments << /Data [ << >> ] /RunLengths [ 5 ] >> /VisualBounds [ -183.3744 -126.37482 183.3744 40.20081 ] /RenderedBounds [ -183.3744 -126.37482 183.3744 40.20081 ] /Invalidation [ -183.3744 -126.37482 255.37376 40.20081 ] /ShadowStylesRun << /Data [ << /Index 0 /Font 2 /Scale [ 1.0 1.0 ] /Orientation 0 /BaselineDirection 2 /BaselineShift 0.0 /KernType 1 >> ] /RunLengths [ 5 ] >> /EndsInCR true /SelectionAscent -126.37482 /SelectionDescent 40.20081 >> ] >> ] >> ] >> ] >> ] >> ] >> ] >> /OpticalAlignment false >> ] /OriginalNormalStyleFeatures << /Font 4 /FontSize 12.0 /FauxBold false /FauxItalic false /AutoLeading true /Leading 0.0 /HorizontalScale 1.0 /VerticalScale 1.0 /Tracking 0 /BaselineShift 0.0 /CharacterRotation 0.0 /AutoKern 1 /FontCaps 0 /FontBaseline 0 /FontOTPosition 0 /StrikethroughPosition 0 /UnderlinePosition 0 /UnderlineOffset 0.0 /Ligatures true /DiscretionaryLigatures false /ContextualLigatures false /AlternateLigatures false /OldStyle false /Fractions false /Ordinals false /Swash false /Titling false /ConnectionForms false /StylisticAlternates false /Ornaments false /FigureStyle 0 /ProportionalMetrics false /Kana false /Italics false /Ruby false /BaselineDirection 2 /Tsume 0.0 /StyleRunAlignment 2 /Language 0 /JapaneseAlternateFeature 0 /EnableWariChu false /WariChuLineCount 2 /WariChuLineGap 0 /WariChuSubLineAmount << /WariChuSubLineScale .5 >> /WariChuWidowAmount 2 /WariChuOrphanAmount 2 /WariChuJustification 7 /TCYUpDownAdjustment 0 /TCYLeftRightAdjustment 0 /LeftAki -1.0 /RightAki -1.0 /JiDori 0 /NoBreak false /FillColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /StrokeColor << /StreamTag /SimplePaint /Color << /Type 1 /Values [ 1.0 0.0 0.0 0.0 ] >> >> /Blend << /StreamTag /SimpleBlender >> /FillFlag true /StrokeFlag false /FillFirst true /FillOverPrint false /StrokeOverPrint false /LineCap 0 /LineJoin 0 /LineWidth 1.0 /MiterLimit 4.0 /LineDashOffset 0.0 /LineDashArray [ ] /Type1EncodingNames [ ] >> /OriginalNormalParagraphFeatures << /Justification 0 /FirstLineIndent 0.0 /StartIndent 0.0 /EndIndent 0.0 /SpaceBefore 0.0 /SpaceAfter 0.0 /DropCaps 1 /AutoLeading 1.2 /LeadingType 0 /AutoHyphenate true /HyphenatedWordSize 6 /PreHyphen 2 /PostHyphen 2 /ConsecutiveHyphens 0 /Zone 36.0 /HyphenateCapitalized true /HyphenationPreference .5 /WordSpacing [ .8 1.0 1.33 ] /LetterSpacing [ 0.0 0.0 0.0 ] /GlyphSpacing [ 1.0 1.0 1.0 ] /SingleWordJustification 6 /Hanging false /AutoTCY 0 /KeepTogether true /BurasagariType 0 /KinsokuOrder 0 /KurikaeshiMojiShori false /Kinsoku /nil /MojiKumiTable /nil /EveryLineComposer false /TabStops << >> /DefaultTabWidth 36.0 /DefaultStyle << >> >> >>8BIMFMsk 2*)S>?<KDBCBCDGDA775650..-3779:9988F@>@B@?=A??><;77534;>::BH@DCDDBBBFHGHFHIHHHHCCC=>@@?=<<==@@@A>@B?DJ@<?@@!6dp[OE "!*..*Z[\OXZXYa['.15-lsqgea[lws*-00+iqqijjdnwu; CDDE=  -GB%#%#S_ZZ E/!*B6*)S>?<KDBCBCDGDA775650..-3779:9988F@>@B@?=A??><;77534;>::BH@DCDDBBBFHGHFHIHHHHCCC=>@@?=<<==@@@A>@B?DJ@<?@@!6dp[OE "!*..*Z[\OXZXYa['.15-lsqgea[lws*-00+iqqijjdnwu; CDDE=  -GB%#%#S_ZZ E/!*B6*)S>?<KDBCBCDGDA775650..-3779:9988F@>@B@?=A??><;77534;>::BH@DCDDBBBFHGHFHIHHHHCCC=>@@?=<<==@@@A>@B?DJ@<?@@!6dp[OE "!*..*Z[\OXZXYa['.15-lsqgea[lws*-00+iqqijjdnwu; CDDE=  -GB%#%#S_ZZ E/!*B6|`|)7n|nn`77{R))R{ͤ{`7R{mD6Rm)RmD6m{){m6R{6)_{Dm6)R{D6D_l6))6)_l6)zDQ6l6  ly llC66QlQ^( kkkkk6(^k 5kkkkCP  Pk5]jjPjjx5Oj](jOjOO jO55O iBi i i5(OO(i(B(wAuNh'4h4NA' 'A'h4hN 'Aggg'g 4gN ΁'g 3gMMM&f 3@MM& f33&LrL e3LdK d}2 ?dKdK dK%p%c%| cK2Wc%|cJ b%{b%oI%zbn%ba0 yaa$$ `0 x``$ 0``0 x``$  _/ w__$ /_^/ G^^Gv ]/ F]]Fuuu].F]FFt]Q:\.sE\.Qs\[.rEr[[~[[.rE["g[-rD[[-rD[f9Z-pZ8Z-pCOZ-ppZ-Z-|"-Y,ooY,Y, !,CYX!nnXX, !,n,W mAW+ + 6 l+V+  ++ k+V+  +* *U*  @U*  *~T* ~~TT* *~T**i~i*) |S)>h||))=fR)=f{(GQQ(==y(3 oQQ([=y(PP(d<x' OO'c1v'~ NN'auu'WjMM'~tt &:`MM  }ss&9BL_ { rr%88Kp% z pp%T%Jo%y oo%\In%w nnwn\InwI$vIm$mmmI$ uu Hl$$Zll~$H$t5k$5YP}k$G#Xr#i#5XFi5rF#4Wh#q#4EEEEh+"E4g""M4EE_g""U3f""U3D"of"*nf""U3Df"C!u}d!!\*C}S!B!{kc!!k{Bc:B!A!)jb!!jzAARA!@ 0X`  hx@ p@ @ PP`  xx@@ ?}^}7^}}}v}v?}^}7?}}?}f}/^}}}v}f?}7}f?}}>{t{]{{{6'{d>{{>{{=zzs\zz.z=.zd=zdz==zzhn7n7nnQl6XlXll6lQ"l_lf6llQk6ekJkk6kQ(kkQ6kkPj5jCjj5jP/j5jC5jjVi5.i5ii5iOBiOi.5ii hNAh'hh4hNAh[h'4hhfMSfff3fMSf`f:3ffeLYe_ee3eLRe_e?3eedK^d^ ddEdR^d&dR 2dddK&dRddK&d^d^d^2dd cQ2cQccK2cc]cD2cca=a=aaI1a%a Oa[+1aa`N`<``H0`*`<`T$B``_Y_*__YH_<_Y_S**S__^X^#^^G^;^ A^;;X^^^^/^^G^ M^S^X;# )AX^^/]#]X/]] ]L]#R]R@//:F]]X.\:\W .\\\W\#Q\EW\W:.[?[J9[[[V[?[J3-ZIZIDZZ-Z"Z(IZI8" -YTY=CYY-'Y''Y"8TYN=-  8Y"8IYTC8-=XX,7BHXHB2, "Xf_0K)0_fX")_ff_)KfKKf=Xf_0Xf6D6Kf=)f00_f0f0=0=ff00f"KRRRK""_D)D0f0_=_6Kf_KK""_Df0f0K_=K==Xff)0fDX0X )fKKK0f=Xf0KKf""f=RRDf0fX6 f0KKf_00KK600KK00" 000K06KD)0"f0"=KD0XX00RD"ff"R==R"f6_f)X6K"ff_X00X_f_=0=fK0_&)ff=RXKf_0)__=f_R60XfK__KKf)0ff0f00fKX_=fKKKXfXRRXf0ff"Df_fRK)ff6_=KKRR0ff0f00f)f"=_fKK)f"f"f""ff_6DDf"f0ff0ff0KKRR0ff0f00f0f)0f D_fKK0f)f)0ff0fK"f)_f0f_=)ff0KK)_K0ff0f00fK_)XXfKKK_)f=0ff0fKX0D=f0 f0f0RKf0KK0f0ff"K=DRRR"_Df)_6KRRD_)ff)fX=0Xff0 f_ff_=f0KK0f)f""f=RR=XRf=X6f)KXRf6)f6=fff)f6Xf0f_0f0KKf0R==X"ff)=XXD6X)fK=X6f60f)6f00 f0f=RXDf0f0 f__K00f0KD_0f "f00f"RRR_=f0 _=_6 RR_=0_fX"6f0fKfX0ff0f0R0DRf_)f0K_ff0f0)_ff_)KfKffffKXf6fffDfDfff0f"ff"RKfR""6_Rf)ff="RfK0K)=6K)K)K0f0=ff6KR0f006XfK=ff0)f0fR_60f"_Kf0f0KDff"0f0f)f06KK00)DK6X=f_")f0fXD 0KK60)")))DKD) f00fR06_KfXR06_R =XfD6=X0f=_fX60X_X6f)KK6f=0=f0f0")ff)0f )f0K0RR=0f0f0f06X )fKKf6f0fff fK0ff)0f0ff0f=DKKXRf0 "0KRfff _0ff"f0f=X0DKf0X0_)KK_fD)f0RK"fffDK"fK60_0fXD=X)f0 0RfKK0Rf_)f0DKfff0_6K0RDD0f)f)0_f0f6DKKff0f0ffff_0f_00f_RKf0R0X"Kff0_K)Rfff_fffK0f)=fRD_Df00__K _DK_f0)fD_X0ffDfR_=f00fK)_ffRD_Df=K"XfXK)0K6K=Kf6K)XRXDXKKX0Rf6 _D)_"f06ff)KKDfXDf0f)0fKKf)ff0XDRD 0)"6KD")DKD)=KD 0=K=0XX00K)fDKf0"=KD0KK000KK06_f) f0K_X=0Kf"=f=0Df0)f=0Kf) fXX60X_K__KKKX=_0f_R60XfRX06_R0fXD0=f6f"0ff0KR_D)f)"_6D_f=f0KKK_KKX_0f0f6 _=0_f00fD__=DDf0KKKKR"f"ff0f0KKKX0R_)f0f0KR=RK0f0f=Xf)f0KKKf00fKRff0f0KKK)f"_=f0KfXK_K0f0f"f)ff0KKKf00ff0f0KKKXDKXf0Kf=0f0f_0=Df0KKKXD)ff0f0KKKK0ff0KX=0f0fDR_)f0KKK=ff0f0f0KKK_=_R)f0K=_0f0f)fff0KKK_RDK6f)0ff0f0D_KR0X_=6 "fK)_=f0K_KRK0f0ffDf0KKKXfK6f_"f0f0_ffKfX=f_"Xf_0f0KXfD0f0f)K06"KK)K)60f006XfK=fKDf=f0_=K0f"_KKfD_f0RRK0f0f)K)Xf"f0DRK0fXD0KK60=K=)0KK0KD6X=f0=_6KK)6KK)6KK0RK0"00f =_fX60X_fXX60X_KKRX06_RKKf6_f0)__K0=f=_K0=f=_X00=_K_0X60f0f0f0f=f0KK0_f0KK)Xf"fKf"KR0fKR0fXRK=Rf0f0ff0f0 f0KKR=RKKKR6_=f_Df)f0f)f0f"Kf6R0f=X0DKf0f0 f0KKfXK_KKKfRK_f6)f0fRKf0fRKf00fKR=X00fXD=X)f0f0 f0KKf=KK0_0=f"f06f)f0f00fK)_f0f)f)0_f0f0 f0KKX=KR=f6f0K_f)f)0fK_)6D0f_RKf0f0 f0KK=_KKf"DXf0R_XKXKf0K=DX)0f)=fRD_Df0f0f0KK_KRKKR0_)f=6f0!_R"f6)_0"f6)_0Kf"0fKf_0fK) _ffRD_Df0f0KKXfD0ff"R=f6f_f0"f=0_f00_f0Kff_00f_=f=K0fXfX"/ &,/ /"/"/"/ /"/"/ / &,/ "/""/ /"/"/ . ."." + ". .". .".". . ."."((. .". .".". .  .%  .%    "+ .          ."   .    ."  ."     .  .(.+...(."." +". ..".(." %.( ."+.( (.+. (.". %.( .".+."+. "." .(.+ %.( ."+.( (.+.+.".  .." +% %.(  %.(  (.". ."". -*!--!-! -*--!''- - -!---'*''-*$*''$*-$ -'*-- '*''- $--! -! -'**!-*!-'*''-*$*''$*-'-!-  - -! *$'*'''*'' '*-- -!!----!-!-$*!* - --!--! -- -- --- - -$- -- - --!- -! ---- -- -- --!--!-  - -!'$ --  -- -$- -!!-, , , , ,, ) , ,, , , , ,,#,  ,, ,, , ,,# ,, , ,, , , , ,,#,  ,)#, ,  ,, #), ,, ,,, ,  ,, , , , , , )#,#,, , , ,,, ,  ,  , , , ,,, , , , ,, , , ,,, ,  ,, , ,  ,,)&) ,,,,, , ,  ,+ + + + + +  + +("+ + + +" + +  ++"%+ + + +" + + + + ++ + + +" + +  ++ + +  ++%++" +" + + +  ++ + + + + + ("+ ++ + + ++ +  +%% + + + ++ + + + ++ + + ++ +  ++ + +  ++ + +++ + +  +* *******'"* *** ** **  ***** * *$ ***"'** * ** **  *"'** * *"'* * ** *"** **"**"**$' ** *** *****  *'$**'* ** * ******* ***** * **** *''* * ***$* $$**) )) )) ))& ))&!) ))) )) !)))  )) &&) &) ) !)))&$ &&))$ ) ) &) )) !)))  )) )$ $)&$ &))&&) !))) !)) &) ) $&)) )))$))$)$))!)&!) ))) )!)& ))  )!))$))$) !)& ))!))&) &)!)!) )!)& ))  )) ))))&)) )!!)& )!)& $))$) $))!)(  (( ( ##( ' $ '''  $'"'  ! ! !!!!! !! ! !!!!                                                                                                                                                                                                                                                                                 pW p%2cpccW22oJŹ%%JooW1Job=1Jb{%Jb=1bo%o {b1Jo1%Vo= b1%Jo= 1={Vb1%% 1%{V b1 %n= I1a1  anz aa=11IaIU$y aayaaa0$Ua 0yyaaaa=I  Ia0Tx``H``l0H`T$`H`HH `H00H _<_ _ _/$GG$_$;$k;jG^#/^/G;# #;#^/^F #:]]]#] /]F uu#] /]FuFFt#] .:FtF#s \s.."sEgE [r.~E[D [r- 9[DZD ZD"f"Z"p ZC-OY"pYC Y!oY!dyB!nXc!XX, nXX!! W, mWW! ,WV+ lVV   V+ kVV  +VU+ @UU@k T* ?TT?i~iiT*?T??i~TI4S*h>S*Ih}SS)h>||hSSr|SS)h>|S]R)g>{RR)g>{R]3Q)fQz3Q)f=zGQ)ffQ)Q)pz)zP(ddP(P( x(<POccOO( w(c(O c;O' v' 1 ~a'N' ~ u'' ~a'~N'~ u'u& }s&sM&} s:M&|| &rL&rrLL&{ &rL&&_r_&% pK%8]pp%%8]J%8]oy%@II%77n$- dII$R7m$HH$Z6l$t GG$Y-k#s GG#Xjj#N`FF#qii #4WEE  qhh"4<EV p gg"33Df"wnff"L"Ce"~mee!S|Bc!|lcclcSBclB!k{Bc!{cccB!jjAb!!Rbbr!A xh0` 0PHp` @ Ph ` 0P@`0h@}/}N^}}f}/}??}?}?^}}'|>|/]|||F|/>|>|V]||{M{.]{{{M{.>{{d]{{&zdzs\zzzMz.=zz\zzNSN4)R9RC3RRRMR9RC.)RCRC>RR)RR$CRC3 )QLQ8=QQ)$Q$$Q3LQG8)  3Q3BQL=3)7PP(25B5B(B0BB0B,(BB0BB(0 B0BBB,(BB0 B0B00B0BBBB0B,(BB0BBB0B0BBB>9> B,(BB,(BBBB00BAA0A0A0AA+ A A'=4A0AA0A40A0AAA4'8A0AAA40A0 A0A00A0AAAA0A40A0AAA0A0AAA8+AA40A40AAA00AAA0A0A0AA=4A A+A0AA0AA0AA88A0AAAA0 A0A00A0AAAA0AA0AAA0A0AAA0+A AAAAA00A@@/@/@@/@@&@ <3@@&@/@@/@ @/@@@/@/@+@@ @7 @&@/+@3<@@@@/@ @/@@3< @/@@ @/3< @ @ @+@@/3@??.?2 ??2 ??*7; * ? ??&?.??. ?&??.??;7 ?. ?&;? ?&? ? ??.??* ?&???. ?&??.? ?&??.?&? ?.;; ?& ? ?&??&7?77????..?*?.?*??;&*??.;2? &??.??..?"2??.???&";;..?".;?.?"2??.?;7;;?.?7.? .?";*??..?"2??.????7"7?.;7&;??. ;;.?"2??..?"2?.?&.;??&7;?>>- )>>6 )>>6>%6>>2>-:2> ->>->>-!2>:)>->>2>->-%6>>6>!2>:)>->-2>>:%>-):>-!2>2>>-!2>:)>->>>->) >- )>>:%>>->2!2>:)>-!2>:) %6>>6>6>>2->=-)= =<44,<;7+;#/;:+6:'2:+ '##+2 2 2(2%2%2%2 2%2/! 2 2%2%2%2%$.1$ 1 1**1$1$1$1 1$1.11 1$1$$$#00 0#*00#0#0 0#0 0 &00 0#0#0 "// /"/ /"/"/ /"/ / // /"/"/ "..  .".  ."    ."    .  ."  . .  .  .   ." ."         .   !--'-* $-' -!- -!*-*-!-! - -!$'!'--*-! '-' !-'-!-*- '-' -!-*--- -!-!!-- -*--!-!-'-!-!''- $-' -!$'!'- '-'-!---!- -*!-'*''-!--!-- -- -' -$ -- !'-'-!$* !-!-'*--$ ** - $-*'- $--$ -- - -!-!!-- ----! -!----!- -'*''-!'$* !--!- -- ,,, ,, , , , ,,,,, , ,,, ,, ,  , , ,,, , , , ,,,, ,, , , ,  ,, , ,) , , ,, , ,)# ,, ,,,,  , , ))# ++ + + +++ (" + + + + ("+ +% + ++ + + + +"++ + + + +  ++ +(+ "+ + + + + %" ++ ++ +%+ + + +** ****$''****  ***** * *** * * ** ** * ****"**'$**** **********  ** )) ))!))!)))) )!$))))) ) ))) ) &&!&) )))!$)) ) ))))&!)&))) )))$!)!)))) $!))) )))!))))) $$ ))))) ) ))) ) )) ))$ )) )  )))) ))!))) )) $!)))))) )&(( (( (((###(( ((( %( (( ((( ( ( ( (#(( (( (( ( ( (( (#(( (( (( ((( ( ((( ((((( (( (((((((( %#(((((  (% ((( ( (( (((%# (( (( #%##(( ( (( (((( ((( ( (((  ( (( ( ('' '' '''' ' ''' ' $$' '" "'' "'' $"'' ' $" $' '$" $$' $$ ' $''''  "$'' ' ' ' '$ '$' ''"'' ''' "' ' ' $'$&& &&# &&& #&&#&& & && &&&# &!&& & #&&!& & &&#& &!&&& !&& && & #& &#& &&&&&# &&# &!&&&&&%% $  $                                                                                                                                                                                                                                                                                                                                                                                                                              &                                                                                                                                                                                                                                                                                                                                                                                                                                         !                  H){H3 H)qqqH)qqH)G)Gz 3G)pRppRG)ppG)G)oo)o[G)oG)ooG)F(oo FF F(oF(ooF(F((((x((x(( (( (Pn(F( (((( (( ( ((((((((( ( n (((( ( F((( ( ((((((n(  (n( ( ( ((F(((FFFFFFFm m(mOF( Y<mFFm wm<(2OOmO(wmO<mFY mmFFFwm<(2O#aX#>#=#=q  q=_4=#<"x"E_Mg;"]D"wDU;;DnD2\!SK22K\C!k2kkV2kNkNkN2kkN2kdG2kkNkNkNkNNcjN1jj\1\j9N9jNjN1jjN1j@1@cj11jjNjNN9N9Lh1hhLZhhLhL1hhL1h1hSh1hhLhL1hKf0ffK6ffKfK0ffK0f0f)f)0ffKfK0fId/ddI/ddI !//dI   /d dIU(UU>>U-"DU U>>UU>UD(9UU>(U(U3-OO>U>UJ"-JU>9U-(JU 3U3-OJU>(U(UOJ"">OUUOJ((OO(U3 -OO>UD"O3(U3(9UU((U3(JOU(U3U(UD"-U3UO>( -DUO(UU>U>J>U(>U-"DU U>9U-(JU U>UD"O3(UDO=S'SS=,BSM7S==SS=7MSSM2S='S'BS=S=S==S7S=2BSM7'BSH2 S='S'S2MSSH2,SS=BSSM2 'BS=S='HSS2'S7'HSSB=S'S=S!7MSB'2=SM=, 'SS=S=,SS ,BSM7S=2BSM7S='HSS2 SS2&R!6Q P; ?ONDking-2.21.120420/king/work/kingicon32.gif0000644000000000000000000000242611531212636016166 0ustar rootrootGIF89a   1, `K eOt\+"u ghT u6,!}B6 ٱ% ozƣ)((& jY/H=ͮ>մA7/*$ յDNBSG̭CҳFWJ>aS!; RʭIũIBгOHͱP XոT ]]Q%\¨NMGECu6ڽY{k2qb.K@ZO%bq65.E<˱Wew;پ_~?ؽ`j]/_S*jj˲\ªXF> ma5g[2o/*t`0+űk SK.͹t{aukE/+Ąɸ|bZ>̼vSzǹȘ֦өΦSO@۶ļոtYqXc.$H: #)& Ǩ?|i*I>޽MظKAӴKFٺQ7$@:(;5%E?/WP=ID5kpjXztc̸xٽge_  6/  ž b[Mľ , H*\ȰÇ#}aS :>7ppfAx| Zq ECLϱ:lQid¨4a0޲tD’+ȧUnA[b Xds-5ì%YVCxY$@Ӓ\ | {ʈ1놷qpH `?FJb`@2Ng.*CU B!]`ǚ=4P2Y.IKaC;Cv X3̣oO ]Q$r T@ P9.pA fLB(p#HB"Yx0@c)S! AX < tW;(K0M!E Ub 較 $ z!2IHqDA.C$>` i/9Њ[$`>J"D'%1k/b2MGNQE m7  Idꩨ ;king-2.21.120420/king/plugins/0000755000000000000000000000000011756425772014244 5ustar rootrootking-2.21.120420/extratools/0000755000000000000000000000000011756425772014037 5ustar rootrootking-2.21.120420/extratools/Manifest.mf0000644000000000000000000000000111531213016016071 0ustar rootroot king-2.21.120420/extratools/build.xml0000644000000000000000000001331411677361346015660 0ustar rootroot "Extra" tools for KiNG not included in base distro king-2.21.120420/extratools/resource/0000755000000000000000000000000011677360410015653 5ustar rootrootking-2.21.120420/extratools/resource/king/0000755000000000000000000000000011677360410016603 5ustar rootrootking-2.21.120420/extratools/resource/king/king_prefs0000644000000000000000000000523011744305702020653 0ustar rootrootking.tool.export.PovrayExport.menuName = king.tool.export.DiveExport.menuName = # VRML and XML export are not maintained or complete... king.tool.export.Vrml97Writer.menuName = king.tool.export.XknWriter.menuName = # KingLite (aka Hai-King) is no longer used (was for Palm Pilot / Java ME) king.tool.export.KingLiteBinaryExport.menuName = king.tool.draw.LathePlugin.menuName = Kin editing king.tool.draw.PointColorPlugin.menuName = Kin editing king.tool.draw.SkylightPlugin.menuName = Kin editing king.tool.draw.MultiListEditorPlugin.menuName = Kin editing king.tool.movie.MoviePlugin.menuName = Kin editing king.tool.image.KinImagePlugin.menuName = Specialty king.tool.data_analysis.CrossWindowPickTool.menuName = Specialty king.tool.data_analysis.AutoBondRotDataTool.menuName = Specialty king.tool.docking.Dock3On3Tool.menuName = Kin editing king.tool.docking.DockLsqTool.menuName = Kin editing king.tool.docking.DockConnTool.menuName = Kin editing king.tool.views.ViewpointPlugin.menuName =
king.tool.views.ClipPlanesPlugin.menuName = Specialty king.tool.rnaxtal.RNAMapTool.menuName = king.tool.rnaxtal.GuilloTool.menuName = king.tool.sequence.FastaTool.menuName = Specialty king.tool.postkin.RecolorTool.menuName = Kin editing king.tool.postkin.KinFudgerTool.menuName = Kin editing king.tool.postkin.RamaTool.menuName = Specialty king.tool.loops.LoopTool.menuName = Kin editing king.tool.loops.LoopDockingTool.menuName = king.tool.loops.FramerTool.menuName = Specialty king.tool.data_analysis.PlottingTool.menuName = Data analysis king.tool.postkin.GeometryPlugin.menuName = king.tool.rnaxtal.RNAExtractTool.menuName = Specialty king.tool.postkin.RMSDTool.menuName = Specialty king.tool.postkin.ColorGrouperPlugin.menuName = king.tool.loops.PatchGapPlugin.menuName = Specialty king.tool.postkin.KinimolPlugin.menuName = Specialty king.tool.postkin.NikilomPlugin.menuName = Specialty king.tool.loops.LoopRmsdTool.menuName = Specialty king.tool.data_analysis.HighDimSliderPlugin.menuName = Data analysis # king.tool.data_analysis.RdcPlayPlugin.menuName = Specialty king.tool.vr.VRKinTool.menuName = Specialty # king.tool.nmr.RdcVisTool.menuName = Specialty king.tool.nmr.CoCenterTool.menuName = Kin editing king.tool.export.RenderExport.menuName = king.tool.nmr.ParenTool.menuName = Kin editing king.tool.rnaxtal.SuitenameTool.menuName = Specialty king.tool.rnaxtal.RnaRotTool.menuName = Structural biology king.tool.draw.ProbeNearbyTool.menuName = Structural biology king.tool.data_analysis.CountingTool.menuName = Specialty king-2.21.120420/extratools/resource/king/tool/0000755000000000000000000000000011677360410017560 5ustar rootrootking-2.21.120420/extratools/resource/king/tool/rnaxtal/0000755000000000000000000000000011677360410021231 5ustar rootrootking-2.21.120420/extratools/resource/king/tool/rnaxtal/rna32H.pdb0000644000000000000000000001300211531213002022730 0ustar rootrootUSER MOD reduce.3.14.080821 H: found=0, std=0, add=15, rem=0, adj=3 USER MOD ----------------------------------------------------------------- USER MOD scores for adjustable sidechains, with "set" totals for H,N and Q USER MOD "o" means original, "f" means flipped, "180deg" is methyl default USER MOD "!" flags a clash with an overlap of 0.40A or greater USER MOD flip categories: "K"=keep, "C"=clashes, "X"=uncertain, "F"=flip USER MOD Single : B 1 A O2' : rot 180:sc= -0.896 USER MOD Single : B 2 A O2' : rot 180:sc= 0 USER MOD Single : B 2 A O3' : rot 130:sc= 0.203 USER MOD ----------------------------------------------------------------- ATOM 273 P A B 1 30.797 28.108 27.190 1.00 8.88 P 1F7U914 ATOM 274 OP1 A B 1 30.297 27.466 25.947 1.00 12.34 O 1F7U914 ATOM 275 OP2 A B 1 29.841 28.463 28.260 1.00 10.61 O 1F7U914 ATOM 276 O5' A B 1 31.869 27.144 27.862 1.00 8.52 O 1F7U914 ATOM 277 C5' A B 1 32.943 26.608 27.095 1.00 6.27 C 1F7U914 ATOM 278 C4' A B 1 33.683 25.570 27.893 1.00 5.33 C 1F7U914 ATOM 279 O4' A B 1 34.255 26.185 29.072 1.00 9.10 O 1F7U914 ATOM 280 C3' A B 1 32.859 24.418 28.442 1.00 6.99 C 1F7U914 ATOM 281 O3' A B 1 32.674 23.407 27.474 1.00 5.25 O 1F7U914 ATOM 282 C2' A B 1 33.724 23.931 29.596 1.00 6.16 C 1F7U914 ATOM 283 O2' A B 1 34.809 23.151 29.125 1.00 6.56 O 1F7U914 ATOM 284 C1' A B 1 34.283 25.246 30.129 1.00 4.44 C 1F7U914 ATOM 285 N9 A B 1 33.513 25.791 31.242 1.00 7.43 N 1F7U914 ATOM 0 H5' A B 1 33.631 27.414 26.800 1.00 6.27 H new ATOM 0 H5'' A B 1 32.555 26.161 26.168 1.00 6.27 H new ATOM 0 H4' A B 1 34.404 25.168 27.166 1.00 5.33 H new ATOM 0 H3' A B 1 31.841 24.707 28.742 1.00 6.99 H new ATOM 0 H2' A B 1 33.173 23.314 30.320 1.00 6.16 H new ATOM 0 HO2' A B 1 35.362 22.845 29.900 1.00 6.56 H new ATOM 0 H1' A B 1 35.300 25.051 30.501 1.00 4.44 H new REMARK ATOM 286 C8 A B 1 32.707 26.901 31.253 1.00 4.78 REMARK ATOM 287 N7 A B 1 32.202 27.175 32.432 1.00 6.30 REMARK ATOM 288 C5 A B 1 32.695 26.166 33.247 1.00 4.07 REMARK ATOM 289 C6 A B 1 32.534 25.895 34.611 1.00 6.18 REMARK ATOM 290 N6 A B 1 31.803 26.654 35.431 1.00 4.81 REMARK ATOM 291 N1 A B 1 33.156 24.806 35.115 1.00 6.84 REMARK ATOM 292 C2 A B 1 33.890 24.049 34.292 1.00 5.29 REMARK ATOM 293 N3 A B 1 34.121 24.207 32.988 1.00 5.98 REMARK ATOM 294 C4 A B 1 33.489 25.298 32.525 1.00 4.66 ATOM 295 P A B 2 31.314 22.558 27.463 1.00 7.52 P 1F7U915 ATOM 296 OP1 A B 2 31.338 21.723 26.238 1.00 6.34 O 1F7U915 ATOM 297 OP2 A B 2 30.171 23.469 27.711 1.00 6.32 O 1F7U915 ATOM 298 O5' A B 2 31.441 21.613 28.739 1.00 8.34 O 1F7U915 ATOM 299 C5' A B 2 32.587 20.754 28.929 1.00 6.27 C 1F7U915 ATOM 300 C4' A B 2 32.508 20.111 30.293 1.00 8.09 C 1F7U915 ATOM 301 O4' A B 2 32.488 21.169 31.295 1.00 7.23 O 1F7U915 ATOM 302 C3' A B 2 31.231 19.299 30.495 1.00 9.84 C 1F7U915 ATOM 303 O3' A B 2 31.477 18.197 31.348 1.00 14.70 O 1F7U915 ATOM 304 C2' A B 2 30.311 20.273 31.218 1.00 9.05 C 1F7U915 ATOM 305 O2' A B 2 29.351 19.621 32.025 1.00 13.67 O 1F7U915 ATOM 306 C1' A B 2 31.297 21.088 32.055 1.00 5.66 C 1F7U915 ATOM 307 N9 A B 2 30.785 22.440 32.290 1.00 4.90 N 1F7U915 ATOM 0 H5' A B 2 33.516 21.336 28.838 1.00 6.27 H new ATOM 0 H5'' A B 2 32.614 19.981 28.147 1.00 6.27 H new ATOM 0 H4' A B 2 33.374 19.438 30.384 1.00 8.09 H new ATOM 0 H3' A B 2 30.826 18.907 29.551 1.00 9.84 H new ATOM 0 H2' A B 2 29.702 20.879 30.531 1.00 9.05 H new ATOM 0 HO2' A B 2 28.776 20.303 32.477 1.00 13.67 H new ATOM 0 HO3' A B 2 30.790 18.177 32.075 1.00 14.70 H new ATOM 0 H1' A B 2 31.459 20.614 33.034 1.00 5.66 H new REMARK ATOM 308 C8 A B 2 30.485 23.390 31.344 1.00 8.08 REMARK ATOM 309 N7 A B 2 29.925 24.467 31.834 1.00 8.86 REMARK ATOM 310 C5 A B 2 29.879 24.225 33.199 1.00 8.28 REMARK ATOM 311 C6 A B 2 29.391 24.987 34.276 1.00 10.09 REMARK ATOM 312 N6 A B 2 28.820 26.184 34.131 1.00 6.58 REMARK ATOM 313 N1 A B 2 29.507 24.467 35.520 1.00 9.49 REMARK ATOM 314 C2 A B 2 30.070 23.255 35.658 1.00 7.97 REMARK ATOM 315 N3 A B 2 30.556 22.441 34.721 1.00 7.80 REMARK ATOM 316 C4 A B 2 30.429 22.992 33.498 1.00 6.44 king-2.21.120420/extratools/resource/king/tool/rnaxtal/rna23H.pdb0000644000000000000000000001236411531213002022742 0ustar rootrootUSER MOD reduce.3.14.080821 H: found=0, std=0, add=15, rem=0, adj=3 USER MOD ----------------------------------------------------------------- USER MOD scores for adjustable sidechains, with "set" totals for H,N and Q USER MOD "o" means original, "f" means flipped, "180deg" is methyl default USER MOD "!" flags a clash with an overlap of 0.40A or greater USER MOD flip categories: "K"=keep, "C"=clashes, "X"=uncertain, "F"=flip USER MOD Single : B 1 A O2' : rot 14:sc= 0.0733 USER MOD Single : B 2 A O2' : rot -17:sc= 0.032 USER MOD Single : B 2 A O3' : rot 180:sc= 0.0441 USER MOD ----------------------------------------------------------------- ATOM 1263 P A B 1 20.368 23.067 36.468 1.00 11.57 P 1F7U960 ATOM 1264 OP1 A B 1 19.111 23.737 36.060 1.00 8.84 O 1F7U960 ATOM 1265 OP2 A B 1 20.364 22.129 37.614 1.00 11.53 O 1F7U960 ATOM 1266 O5' A B 1 20.921 22.281 35.197 1.00 9.98 O 1F7U960 ATOM 1267 C5' A B 1 21.104 22.954 33.943 1.00 12.26 C 1F7U960 ATOM 1268 C4' A B 1 21.703 22.010 32.931 1.00 13.60 C 1F7U960 ATOM 1269 O4' A B 1 23.021 21.586 33.381 1.00 14.27 O 1F7U960 ATOM 1270 C3' A B 1 20.895 20.743 32.680 1.00 12.91 C 1F7U960 ATOM 1271 O3' A B 1 20.940 20.438 31.298 1.00 13.42 O 1F7U960 ATOM 1272 C2' A B 1 21.636 19.687 33.496 1.00 13.08 C 1F7U960 ATOM 1273 O2' A B 1 21.528 18.370 32.996 1.00 13.34 O 1F7U960 ATOM 1274 C1' A B 1 23.080 20.175 33.417 1.00 12.54 C 1F7U960 ATOM 1275 N9 A B 1 23.854 19.768 34.599 1.00 11.53 N 1F7U960 ATOM 0 H5' A B 1 21.762 23.826 34.078 1.00 12.26 H new ATOM 0 H5'' A B 1 20.139 23.333 33.577 1.00 12.26 H new ATOM 0 H4' A B 1 21.729 22.582 31.992 1.00 13.60 H new ATOM 0 H3' A B 1 19.834 20.820 32.960 1.00 12.91 H new ATOM 0 H2' A B 1 21.221 19.601 34.511 1.00 13.08 H new ATOM 0 HO2' A B 1 21.172 18.396 32.062 1.00 13.34 H new ATOM 0 H1' A B 1 23.572 19.746 32.532 1.00 12.54 H new REMARK ATOM 1276 C2 U B 1 24.943 18.936 34.401 1.00 14.71 REMARK ATOM 1277 O2 U B 1 25.305 18.565 33.293 1.00 12.76 REMARK ATOM 1278 N3 U B 1 25.597 18.555 35.546 1.00 8.82 REMARK ATOM 1279 C4 U B 1 25.288 18.915 36.837 1.00 13.33 REMARK ATOM 1280 O4 U B 1 25.969 18.475 37.763 1.00 13.51 REMARK ATOM 1281 C5 U B 1 24.159 19.791 36.962 1.00 9.14 REMARK ATOM 1282 C6 U B 1 23.499 20.180 35.863 1.00 10.02 ATOM 1283 P A B 2 19.681 20.792 30.372 1.00 15.78 P 1F7U961 ATOM 1284 OP1 A B 2 20.041 20.495 28.960 1.00 18.20 O 1F7U961 ATOM 1285 OP2 A B 2 19.216 22.148 30.738 1.00 17.32 O 1F7U961 ATOM 1286 O5' A B 2 18.557 19.776 30.852 1.00 15.25 O 1F7U961 ATOM 1287 C5' A B 2 18.504 18.436 30.348 1.00 15.71 C 1F7U961 ATOM 1288 C4' A B 2 17.330 17.713 30.954 1.00 17.32 C 1F7U961 ATOM 1289 O4' A B 2 17.651 17.296 32.309 1.00 17.29 O 1F7U961 ATOM 1290 C3' A B 2 16.076 18.559 31.106 1.00 16.54 C 1F7U961 ATOM 1291 O3' A B 2 15.317 18.644 29.907 1.00 17.49 O 1F7U961 ATOM 1292 C2' A B 2 15.337 17.859 32.241 1.00 16.02 C 1F7U961 ATOM 1293 O2' A B 2 14.620 16.720 31.814 1.00 18.29 O 1F7U961 ATOM 1294 C1' A B 2 16.494 17.399 33.125 1.00 14.97 C 1F7U961 ATOM 1295 N9 A B 2 16.775 18.337 34.227 1.00 14.36 N 1F7U961 ATOM 0 H5' A B 2 19.438 17.906 30.588 1.00 15.71 H new ATOM 0 H5'' A B 2 18.414 18.449 29.252 1.00 15.71 H new ATOM 0 H4' A B 2 17.136 16.884 30.258 1.00 17.32 H new ATOM 0 H3' A B 2 16.290 19.615 31.326 1.00 16.54 H new ATOM 0 H2' A B 2 14.593 18.516 32.715 1.00 16.02 H new ATOM 0 HO2' A B 2 14.514 16.745 30.820 1.00 18.29 H new ATOM 0 HO3' A B 2 14.506 19.208 30.064 1.00 17.49 H new ATOM 0 H1' A B 2 16.218 16.435 33.578 1.00 14.97 H new REMARK ATOM 1296 C2 C B 2 15.851 18.444 35.267 1.00 12.67 REMARK ATOM 1297 O2 C B 2 14.812 17.776 35.210 1.00 16.59 REMARK ATOM 1298 N3 C B 2 16.110 19.273 36.304 1.00 11.71 REMARK ATOM 1299 C4 C B 2 17.237 19.985 36.322 1.00 11.54 REMARK ATOM 1300 N4 C B 2 17.456 20.785 37.371 1.00 10.20 REMARK ATOM 1301 C5 C B 2 18.191 19.910 35.265 1.00 10.22 REMARK ATOM 1302 C6 C B 2 17.922 19.083 34.246 1.00 8.79 king-2.21.120420/extratools/resource/king/tool/rnaxtal/rna22.pdb0000644000000000000000000000711311531213002022625 0ustar rootrootATOM 126 P A B 1 10.043 10.109 -5.702 1.00 31.85 P 1G2E8 ATOM 127 OP1 A B 1 9.018 11.113 -6.088 1.00 28.60 O 1G2E8 ATOM 128 OP2 A B 1 10.284 9.813 -4.261 1.00 25.88 O 1G2E8 ATOM 129 O5' A B 1 9.741 8.734 -6.450 1.00 30.80 O 1G2E8 ATOM 130 C5' A B 1 10.636 7.625 -6.326 1.00 25.35 C 1G2E8 ATOM 131 C4' A B 1 10.078 6.424 -7.047 1.00 21.04 C 1G2E8 ATOM 132 O4' A B 1 8.843 6.013 -6.397 1.00 19.22 O 1G2E8 ATOM 133 C3' A B 1 9.713 6.662 -8.504 1.00 22.42 C 1G2E8 ATOM 134 O3' A B 1 9.873 5.446 -9.212 1.00 23.90 O 1G2E8 ATOM 135 C2' A B 1 8.240 7.047 -8.423 1.00 19.74 C 1G2E8 ATOM 136 O2' A B 1 7.529 6.786 -9.620 1.00 21.02 O 1G2E8 ATOM 137 C1' A B 1 7.758 6.131 -7.300 1.00 16.53 C 1G2E8 ATOM 138 N9 A B 1 6.613 6.670 -6.556 1.00 14.84 N 1G2E8 REMARK ATOM 139 C2 U B 1 5.399 5.990 -6.637 1.00 11.91 C 1G2E8 REMARK ATOM 140 O2 U B 1 5.248 4.972 -7.294 1.00 13.49 O 1G2E8 REMARK ATOM 141 N3 U B 1 4.377 6.548 -5.912 1.00 9.66 N 1G2E8 REMARK ATOM 142 C4 U B 1 4.441 7.694 -5.125 1.00 10.42 C 1G2E8 REMARK ATOM 143 O4 U B 1 3.438 8.066 -4.518 1.00 9.14 O 1G2E8 REMARK ATOM 144 C5 U B 1 5.724 8.336 -5.095 1.00 9.51 C 1G2E8 REMARK ATOM 145 C6 U B 1 6.740 7.815 -5.795 1.00 13.81 C 1G2E8 ATOM 146 P A B 2 10.744 5.424 -10.553 1.00 24.35 P 1G2E9 ATOM 147 OP1 A B 2 12.027 6.110 -10.234 1.00 24.82 O 1G2E9 ATOM 148 OP2 A B 2 9.888 5.933 -11.654 1.00 20.92 O 1G2E9 ATOM 149 O5' A B 2 11.039 3.870 -10.788 1.00 26.27 O 1G2E9 ATOM 150 C5' A B 2 11.980 3.157 -9.972 1.00 26.37 C 1G2E9 ATOM 151 C4' A B 2 11.728 1.663 -10.053 1.00 29.60 C 1G2E9 ATOM 152 O4' A B 2 10.527 1.318 -9.306 1.00 29.37 O 1G2E9 ATOM 153 C3' A B 2 11.519 1.101 -11.461 1.00 32.68 C 1G2E9 ATOM 154 O3' A B 2 11.964 -0.247 -11.527 1.00 36.69 O 1G2E9 ATOM 155 C2' A B 2 10.002 1.057 -11.570 1.00 29.83 C 1G2E9 ATOM 156 O2' A B 2 9.585 0.099 -12.526 1.00 29.97 O 1G2E9 ATOM 157 C1' A B 2 9.631 0.617 -10.153 1.00 27.78 C 1G2E9 ATOM 158 N9 A B 2 8.253 0.956 -9.760 1.00 25.93 N 1G2E9 REMARK ATOM 159 C2 U B 2 7.304 -0.052 -9.813 1.00 23.12 C 1G2E9 REMARK ATOM 160 O2 U B 2 7.569 -1.191 -10.156 1.00 20.70 O 1G2E9 REMARK ATOM 161 N3 U B 2 6.032 0.327 -9.447 1.00 20.62 N 1G2E9 REMARK ATOM 162 C4 U B 2 5.621 1.583 -9.044 1.00 18.81 C 1G2E9 REMARK ATOM 163 O4 U B 2 4.438 1.768 -8.748 1.00 18.34 O 1G2E9 REMARK ATOM 164 C5 U B 2 6.661 2.568 -9.012 1.00 19.35 C 1G2E9 REMARK ATOM 165 C6 U B 2 7.909 2.231 -9.358 1.00 21.00 C 1G2E9 king-2.21.120420/extratools/resource/king/tool/rnaxtal/rna33H.pdb0000644000000000000000000001306211531213002022737 0ustar rootrootUSER MOD reduce.3.14.080821 H: found=0, std=0, add=15, rem=0, adj=3 USER MOD ----------------------------------------------------------------- USER MOD scores for adjustable sidechains, with "set" totals for H,N and Q USER MOD "o" means original, "f" means flipped, "180deg" is methyl default USER MOD "!" flags a clash with an overlap of 0.40A or greater USER MOD flip categories: "K"=keep, "C"=clashes, "X"=uncertain, "F"=flip USER MOD Single : B 1 A O2' : rot -31:sc= 0.06 USER MOD Single : B 2 G O2' : rot -16:sc= 0.0298 USER MOD Single : B 2 G O3' : rot 180:sc= 0.0308 USER MOD ----------------------------------------------------------------- ATOM 329 P A B 1 27.893 -10.317 -4.101 1.00 43.61 P 479d17 ATOM 330 OP1 A B 1 28.335 -11.730 -4.210 1.00 46.57 O 479d17 ATOM 331 OP2 A B 1 28.898 -9.208 -4.138 1.00 46.86 O 479d17 ATOM 332 O5' A B 1 26.814 -9.995 -5.230 1.00 39.78 O 479d17 ATOM 333 C5' A B 1 25.895 -10.976 -5.662 1.00 33.81 C 479d17 ATOM 334 C4' A B 1 25.217 -10.512 -6.916 1.00 30.79 C 479d17 ATOM 335 O4' A B 1 24.414 -9.346 -6.610 1.00 33.33 O 479d17 ATOM 336 C3' A B 1 26.147 -10.016 -7.998 1.00 28.36 C 479d17 ATOM 337 O3' A B 1 26.688 -11.087 -8.754 1.00 35.64 O 479d17 ATOM 338 C2' A B 1 25.199 -9.163 -8.807 1.00 27.48 C 479d17 ATOM 339 O2' A B 1 24.278 -9.979 -9.496 1.00 31.03 O 479d17 ATOM 340 C1' A B 1 24.480 -8.434 -7.684 1.00 27.38 C 479d17 ATOM 341 N9 A B 1 25.235 -7.274 -7.224 1.00 28.40 N 479d17 ATOM 0 H5' A B 1 25.148 -11.165 -4.877 1.00 33.81 H new ATOM 0 H5'' A B 1 26.417 -11.927 -5.845 1.00 33.81 H new ATOM 0 H4' A B 1 24.666 -11.395 -7.271 1.00 30.79 H new ATOM 0 H3' A B 1 27.036 -9.481 -7.634 1.00 28.36 H new ATOM 0 H2' A B 1 25.679 -8.524 -9.563 1.00 27.48 H new ATOM 0 HO2' A B 1 24.708 -10.854 -9.719 1.00 31.03 H new ATOM 0 H1' A B 1 23.497 -8.089 -8.036 1.00 27.38 H new REMARK ATOM 342 C8 A B 1 26.116 -7.184 -6.172 1.00 25.07 REMARK ATOM 343 N7 A B 1 26.649 -5.993 -6.034 1.00 23.51 REMARK ATOM 344 C5 A B 1 26.085 -5.252 -7.068 1.00 22.27 REMARK ATOM 345 C6 A B 1 26.250 -3.908 -7.485 1.00 23.38 REMARK ATOM 346 N6 A B 1 27.074 -3.031 -6.895 1.00 21.38 REMARK ATOM 347 N1 A B 1 25.533 -3.494 -8.550 1.00 22.05 REMARK ATOM 348 C2 A B 1 24.714 -4.367 -9.153 1.00 25.73 REMARK ATOM 349 N3 A B 1 24.474 -5.643 -8.857 1.00 24.19 REMARK ATOM 350 C4 A B 1 25.204 -6.026 -7.795 1.00 25.19 ATOM 351 P G B 2 28.203 -10.993 -9.302 1.00 36.44 P 479d18 ATOM 352 OP1 G B 2 28.548 -12.341 -9.828 1.00 39.99 O 479d18 ATOM 353 OP2 G B 2 29.054 -10.368 -8.250 1.00 37.65 O 479d18 ATOM 354 O5' G B 2 28.120 -9.973 -10.528 1.00 36.16 O 479d18 ATOM 355 C5' G B 2 27.354 -10.288 -11.684 1.00 32.10 C 479d18 ATOM 356 C4' G B 2 27.061 -9.039 -12.481 1.00 29.98 C 479d18 ATOM 357 O4' G B 2 26.498 -8.037 -11.605 1.00 24.85 O 479d18 ATOM 358 C3' G B 2 28.265 -8.332 -13.055 1.00 27.18 C 479d18 ATOM 359 O3' G B 2 28.772 -8.968 -14.205 1.00 34.15 O 479d18 ATOM 360 C2' G B 2 27.702 -6.951 -13.325 1.00 25.50 C 479d18 ATOM 361 O2' G B 2 26.886 -6.922 -14.475 1.00 28.97 O 479d18 ATOM 362 C1' G B 2 26.862 -6.748 -12.070 1.00 24.75 C 479d18 ATOM 363 N9 G B 2 27.623 -6.076 -11.028 1.00 22.73 N 479d18 ATOM 0 H5' G B 2 26.411 -10.770 -11.387 1.00 32.10 H new ATOM 0 H5'' G B 2 27.901 -11.009 -12.309 1.00 32.10 H new ATOM 0 H4' G B 2 26.412 -9.400 -13.293 1.00 29.98 H new ATOM 0 H3' G B 2 29.141 -8.323 -12.390 1.00 27.18 H new ATOM 0 H2' G B 2 28.469 -6.185 -13.513 1.00 25.50 H new ATOM 0 HO2' G B 2 27.050 -7.743 -15.021 1.00 28.97 H new ATOM 0 HO3' G B 2 29.564 -8.461 -14.545 1.00 34.15 H new ATOM 0 H1' G B 2 25.986 -6.126 -12.306 1.00 24.75 H new REMARK ATOM 364 C8 G B 2 28.185 -6.626 -9.901 1.00 20.17 REMARK ATOM 365 N7 G B 2 28.860 -5.761 -9.196 1.00 19.87 REMARK ATOM 366 C5 G B 2 28.722 -4.566 -9.898 1.00 22.94 REMARK ATOM 367 C6 G B 2 29.244 -3.268 -9.638 1.00 24.81 REMARK ATOM 368 O6 G B 2 29.972 -2.899 -8.719 1.00 27.63 REMARK ATOM 369 N1 G B 2 28.843 -2.354 -10.603 1.00 26.30 REMARK ATOM 370 C2 G B 2 28.057 -2.650 -11.688 1.00 25.17 REMARK ATOM 371 N2 G B 2 27.772 -1.645 -12.514 1.00 28.72 REMARK ATOM 372 N3 G B 2 27.582 -3.847 -11.946 1.00 25.77 REMARK ATOM 373 C4 G B 2 27.947 -4.748 -11.018 1.00 21.84 king-2.21.120420/extratools/resource/king/tool/rnaxtal/rna32.pdb0000644000000000000000000000776711531213002022645 0ustar rootrootATOM 273 P A B 1 30.797 28.108 27.190 1.00 8.88 P 1F7U914 ATOM 274 OP1 A B 1 30.297 27.466 25.947 1.00 12.34 O 1F7U914 ATOM 275 OP2 A B 1 29.841 28.463 28.260 1.00 10.61 O 1F7U914 ATOM 276 O5' A B 1 31.869 27.144 27.862 1.00 8.52 O 1F7U914 ATOM 277 C5' A B 1 32.943 26.608 27.095 1.00 6.27 C 1F7U914 ATOM 278 C4' A B 1 33.683 25.570 27.893 1.00 5.33 C 1F7U914 ATOM 279 O4' A B 1 34.255 26.185 29.072 1.00 9.10 O 1F7U914 ATOM 280 C3' A B 1 32.859 24.418 28.442 1.00 6.99 C 1F7U914 ATOM 281 O3' A B 1 32.674 23.407 27.474 1.00 5.25 O 1F7U914 ATOM 282 C2' A B 1 33.724 23.931 29.596 1.00 6.16 C 1F7U914 ATOM 283 O2' A B 1 34.809 23.151 29.125 1.00 6.56 O 1F7U914 ATOM 284 C1' A B 1 34.283 25.246 30.129 1.00 4.44 C 1F7U914 ATOM 285 N9 A B 1 33.513 25.791 31.242 1.00 7.43 N 1F7U914 REMARK ATOM 286 C8 A B 1 32.707 26.901 31.253 1.00 4.78 C 1F7U914 REMARK ATOM 287 N7 A B 1 32.202 27.175 32.432 1.00 6.30 N 1F7U914 REMARK ATOM 288 C5 A B 1 32.695 26.166 33.247 1.00 4.07 C 1F7U914 REMARK ATOM 289 C6 A B 1 32.534 25.895 34.611 1.00 6.18 C 1F7U914 REMARK ATOM 290 N6 A B 1 31.803 26.654 35.431 1.00 4.81 N 1F7U914 REMARK ATOM 291 N1 A B 1 33.156 24.806 35.115 1.00 6.84 N 1F7U914 REMARK ATOM 292 C2 A B 1 33.890 24.049 34.292 1.00 5.29 C 1F7U914 REMARK ATOM 293 N3 A B 1 34.121 24.207 32.988 1.00 5.98 N 1F7U914 REMARK ATOM 294 C4 A B 1 33.489 25.298 32.525 1.00 4.66 C 1F7U914 ATOM 295 P A B 2 31.314 22.558 27.463 1.00 7.52 P 1F7U915 ATOM 296 OP1 A B 2 31.338 21.723 26.238 1.00 6.34 O 1F7U915 ATOM 297 OP2 A B 2 30.171 23.469 27.711 1.00 6.32 O 1F7U915 ATOM 298 O5' A B 2 31.441 21.613 28.739 1.00 8.34 O 1F7U915 ATOM 299 C5' A B 2 32.587 20.754 28.929 1.00 6.27 C 1F7U915 ATOM 300 C4' A B 2 32.508 20.111 30.293 1.00 8.09 C 1F7U915 ATOM 301 O4' A B 2 32.488 21.169 31.295 1.00 7.23 O 1F7U915 ATOM 302 C3' A B 2 31.231 19.299 30.495 1.00 9.84 C 1F7U915 ATOM 303 O3' A B 2 31.477 18.197 31.348 1.00 14.70 O 1F7U915 ATOM 304 C2' A B 2 30.311 20.273 31.218 1.00 9.05 C 1F7U915 ATOM 305 O2' A B 2 29.351 19.621 32.025 1.00 13.67 O 1F7U915 ATOM 306 C1' A B 2 31.297 21.088 32.055 1.00 5.66 C 1F7U915 ATOM 307 N9 A B 2 30.785 22.440 32.290 1.00 4.90 N 1F7U915 REMARK ATOM 308 C8 A B 2 30.485 23.390 31.344 1.00 8.08 C 1F7U915 REMARK ATOM 309 N7 A B 2 29.925 24.467 31.834 1.00 8.86 N 1F7U915 REMARK ATOM 310 C5 A B 2 29.879 24.225 33.199 1.00 8.28 C 1F7U915 REMARK ATOM 311 C6 A B 2 29.391 24.987 34.276 1.00 10.09 C 1F7U915 REMARK ATOM 312 N6 A B 2 28.820 26.184 34.131 1.00 6.58 N 1F7U915 REMARK ATOM 313 N1 A B 2 29.507 24.467 35.520 1.00 9.49 N 1F7U915 REMARK ATOM 314 C2 A B 2 30.070 23.255 35.658 1.00 7.97 C 1F7U915 REMARK ATOM 315 N3 A B 2 30.556 22.441 34.721 1.00 7.80 N 1F7U915 REMARK ATOM 316 C4 A B 2 30.429 22.992 33.498 1.00 6.44 C 1F7U915 king-2.21.120420/extratools/resource/king/tool/rnaxtal/rna22H.pdb0000644000000000000000000001230011531213002022727 0ustar rootrootUSER MOD reduce.3.14.080821 H: found=0, std=0, add=15, rem=0, adj=3 USER MOD ----------------------------------------------------------------- USER MOD scores for adjustable sidechains, with "set" totals for H,N and Q USER MOD "o" means original, "f" means flipped, "180deg" is methyl default USER MOD "!" flags a clash with an overlap of 0.40A or greater USER MOD flip categories: "K"=keep, "C"=clashes, "X"=uncertain, "F"=flip USER MOD Single : B 1 A O2' : rot 2:sc= 0.115 USER MOD Single : B 2 A O2' : rot 180:sc= 0 USER MOD Single : B 2 A O3' : rot 130:sc= 0.255 USER MOD ----------------------------------------------------------------- ATOM 126 P A B 1 10.043 10.109 -5.702 1.00 31.85 P 1G2E8 ATOM 127 OP1 A B 1 9.018 11.113 -6.088 1.00 28.60 O 1G2E8 ATOM 128 OP2 A B 1 10.284 9.813 -4.261 1.00 25.88 O 1G2E8 ATOM 129 O5' A B 1 9.741 8.734 -6.450 1.00 30.80 O 1G2E8 ATOM 130 C5' A B 1 10.636 7.625 -6.326 1.00 25.35 C 1G2E8 ATOM 131 C4' A B 1 10.078 6.424 -7.047 1.00 21.04 C 1G2E8 ATOM 132 O4' A B 1 8.843 6.013 -6.397 1.00 19.22 O 1G2E8 ATOM 133 C3' A B 1 9.713 6.662 -8.504 1.00 22.42 C 1G2E8 ATOM 134 O3' A B 1 9.873 5.446 -9.212 1.00 23.90 O 1G2E8 ATOM 135 C2' A B 1 8.240 7.047 -8.423 1.00 19.74 C 1G2E8 ATOM 136 O2' A B 1 7.529 6.786 -9.620 1.00 21.02 O 1G2E8 ATOM 137 C1' A B 1 7.758 6.131 -7.300 1.00 16.53 C 1G2E8 ATOM 138 N9 A B 1 6.613 6.670 -6.556 1.00 14.84 N 1G2E8 ATOM 0 H5' A B 1 10.791 7.386 -5.264 1.00 25.35 H new ATOM 0 H5'' A B 1 11.619 7.889 -6.743 1.00 25.35 H new ATOM 0 H4' A B 1 10.882 5.674 -7.010 1.00 21.04 H new ATOM 0 H3' A B 1 10.324 7.422 -9.013 1.00 22.42 H new ATOM 0 H2' A B 1 8.086 8.123 -8.254 1.00 19.74 H new ATOM 0 HO2' A B 1 8.140 6.356 -10.284 1.00 21.02 H new ATOM 0 H1' A B 1 7.433 5.177 -7.741 1.00 16.53 H new REMARK ATOM 139 C2 U B 1 5.399 5.990 -6.637 1.00 11.91 REMARK ATOM 140 O2 U B 1 5.248 4.972 -7.294 1.00 13.49 REMARK ATOM 141 N3 U B 1 4.377 6.548 -5.912 1.00 9.66 REMARK ATOM 142 C4 U B 1 4.441 7.694 -5.125 1.00 10.42 REMARK ATOM 143 O4 U B 1 3.438 8.066 -4.518 1.00 9.14 REMARK ATOM 144 C5 U B 1 5.724 8.336 -5.095 1.00 9.51 REMARK ATOM 145 C6 U B 1 6.740 7.815 -5.795 1.00 13.81 ATOM 146 P A B 2 10.744 5.424 -10.553 1.00 24.35 P 1G2E9 ATOM 147 OP1 A B 2 12.027 6.110 -10.234 1.00 24.82 O 1G2E9 ATOM 148 OP2 A B 2 9.888 5.933 -11.654 1.00 20.92 O 1G2E9 ATOM 149 O5' A B 2 11.039 3.870 -10.788 1.00 26.27 O 1G2E9 ATOM 150 C5' A B 2 11.980 3.157 -9.972 1.00 26.37 C 1G2E9 ATOM 151 C4' A B 2 11.728 1.663 -10.053 1.00 29.60 C 1G2E9 ATOM 152 O4' A B 2 10.527 1.318 -9.306 1.00 29.37 O 1G2E9 ATOM 153 C3' A B 2 11.519 1.101 -11.461 1.00 32.68 C 1G2E9 ATOM 154 O3' A B 2 11.964 -0.247 -11.527 1.00 36.69 O 1G2E9 ATOM 155 C2' A B 2 10.002 1.057 -11.570 1.00 29.83 C 1G2E9 ATOM 156 O2' A B 2 9.585 0.099 -12.526 1.00 29.97 O 1G2E9 ATOM 157 C1' A B 2 9.631 0.617 -10.153 1.00 27.78 C 1G2E9 ATOM 158 N9 A B 2 8.253 0.956 -9.760 1.00 25.93 N 1G2E9 ATOM 0 H5' A B 2 11.898 3.493 -8.928 1.00 26.37 H new ATOM 0 H5'' A B 2 13.005 3.381 -10.302 1.00 26.37 H new ATOM 0 H4' A B 2 12.649 1.222 -9.644 1.00 29.60 H new ATOM 0 H3' A B 2 12.044 1.686 -12.230 1.00 32.68 H new ATOM 0 H2' A B 2 9.538 2.000 -11.896 1.00 29.83 H new ATOM 0 HO2' A B 2 8.586 0.090 -12.576 1.00 29.97 H new ATOM 0 HO3' A B 2 11.251 -0.814 -11.938 1.00 36.69 H new ATOM 0 H1' A B 2 9.698 -0.479 -10.085 1.00 27.78 H new REMARK ATOM 159 C2 U B 2 7.304 -0.052 -9.813 1.00 23.12 REMARK ATOM 160 O2 U B 2 7.569 -1.191 -10.156 1.00 20.70 REMARK ATOM 161 N3 U B 2 6.032 0.327 -9.447 1.00 20.62 REMARK ATOM 162 C4 U B 2 5.621 1.583 -9.044 1.00 18.81 REMARK ATOM 163 O4 U B 2 4.438 1.768 -8.748 1.00 18.34 REMARK ATOM 164 C5 U B 2 6.661 2.568 -9.012 1.00 19.35 REMARK ATOM 165 C6 U B 2 7.909 2.231 -9.358 1.00 21.00 king-2.21.120420/extratools/resource/king/tool/rnaxtal/rna23.pdb0000644000000000000000000000723311531213002022631 0ustar rootrootATOM 1263 P A B 1 20.368 23.067 36.468 1.00 11.57 P 1F7U960 ATOM 1264 OP1 A B 1 19.111 23.737 36.060 1.00 8.84 O 1F7U960 ATOM 1265 OP2 A B 1 20.364 22.129 37.614 1.00 11.53 O 1F7U960 ATOM 1266 O5' A B 1 20.921 22.281 35.197 1.00 9.98 O 1F7U960 ATOM 1267 C5' A B 1 21.104 22.954 33.943 1.00 12.26 C 1F7U960 ATOM 1268 C4' A B 1 21.703 22.010 32.931 1.00 13.60 C 1F7U960 ATOM 1269 O4' A B 1 23.021 21.586 33.381 1.00 14.27 O 1F7U960 ATOM 1270 C3' A B 1 20.895 20.743 32.680 1.00 12.91 C 1F7U960 ATOM 1271 O3' A B 1 20.940 20.438 31.298 1.00 13.42 O 1F7U960 ATOM 1272 C2' A B 1 21.636 19.687 33.496 1.00 13.08 C 1F7U960 ATOM 1273 O2' A B 1 21.528 18.370 32.996 1.00 13.34 O 1F7U960 ATOM 1274 C1' A B 1 23.080 20.175 33.417 1.00 12.54 C 1F7U960 ATOM 1275 N9 A B 1 23.854 19.768 34.599 1.00 11.53 N 1F7U960 REMARK ATOM 1276 C2 U B 1 24.943 18.936 34.401 1.00 14.71 C 1F7U960 REMARK ATOM 1277 O2 U B 1 25.305 18.565 33.293 1.00 12.76 O 1F7U960 REMARK ATOM 1278 N3 U B 1 25.597 18.555 35.546 1.00 8.82 N 1F7U960 REMARK ATOM 1279 C4 U B 1 25.288 18.915 36.837 1.00 13.33 C 1F7U960 REMARK ATOM 1280 O4 U B 1 25.969 18.475 37.763 1.00 13.51 O 1F7U960 REMARK ATOM 1281 C5 U B 1 24.159 19.791 36.962 1.00 9.14 C 1F7U960 REMARK ATOM 1282 C6 U B 1 23.499 20.180 35.863 1.00 10.02 C 1F7U960 ATOM 1283 P A B 2 19.681 20.792 30.372 1.00 15.78 P 1F7U961 ATOM 1284 OP1 A B 2 20.041 20.495 28.960 1.00 18.20 O 1F7U961 ATOM 1285 OP2 A B 2 19.216 22.148 30.738 1.00 17.32 O 1F7U961 ATOM 1286 O5' A B 2 18.557 19.776 30.852 1.00 15.25 O 1F7U961 ATOM 1287 C5' A B 2 18.504 18.436 30.348 1.00 15.71 C 1F7U961 ATOM 1288 C4' A B 2 17.330 17.713 30.954 1.00 17.32 C 1F7U961 ATOM 1289 O4' A B 2 17.651 17.296 32.309 1.00 17.29 O 1F7U961 ATOM 1290 C3' A B 2 16.076 18.559 31.106 1.00 16.54 C 1F7U961 ATOM 1291 O3' A B 2 15.317 18.644 29.907 1.00 17.49 O 1F7U961 ATOM 1292 C2' A B 2 15.337 17.859 32.241 1.00 16.02 C 1F7U961 ATOM 1293 O2' A B 2 14.620 16.720 31.814 1.00 18.29 O 1F7U961 ATOM 1294 C1' A B 2 16.494 17.399 33.125 1.00 14.97 C 1F7U961 ATOM 1295 N9 A B 2 16.775 18.337 34.227 1.00 14.36 N 1F7U961 REMARK ATOM 1296 C2 C B 2 15.851 18.444 35.267 1.00 12.67 C 1F7U961 REMARK ATOM 1297 O2 C B 2 14.812 17.776 35.210 1.00 16.59 O 1F7U961 REMARK ATOM 1298 N3 C B 2 16.110 19.273 36.304 1.00 11.71 N 1F7U961 REMARK ATOM 1299 C4 C B 2 17.237 19.985 36.322 1.00 11.54 C 1F7U961 REMARK ATOM 1300 N4 C B 2 17.456 20.785 37.371 1.00 10.20 N 1F7U961 REMARK ATOM 1301 C5 C B 2 18.191 19.910 35.265 1.00 10.22 C 1F7U961 REMARK ATOM 1302 C6 C B 2 17.922 19.083 34.246 1.00 8.79 C 1F7U961 king-2.21.120420/extratools/resource/king/tool/rnaxtal/rna33.pdb0000644000000000000000000001005411531213002022625 0ustar rootrootATOM 329 P A B 1 27.893 -10.317 -4.101 1.00 43.61 P 479d17 ATOM 330 OP1 A B 1 28.335 -11.730 -4.210 1.00 46.57 O 479d17 ATOM 331 OP2 A B 1 28.898 -9.208 -4.138 1.00 46.86 O 479d17 ATOM 332 O5' A B 1 26.814 -9.995 -5.230 1.00 39.78 O 479d17 ATOM 333 C5' A B 1 25.895 -10.976 -5.662 1.00 33.81 C 479d17 ATOM 334 C4' A B 1 25.217 -10.512 -6.916 1.00 30.79 C 479d17 ATOM 335 O4' A B 1 24.414 -9.346 -6.610 1.00 33.33 O 479d17 ATOM 336 C3' A B 1 26.147 -10.016 -7.998 1.00 28.36 C 479d17 ATOM 337 O3' A B 1 26.688 -11.087 -8.754 1.00 35.64 O 479d17 ATOM 338 C2' A B 1 25.199 -9.163 -8.807 1.00 27.48 C 479d17 ATOM 339 O2' A B 1 24.278 -9.979 -9.496 1.00 31.03 O 479d17 ATOM 340 C1' A B 1 24.480 -8.434 -7.684 1.00 27.38 C 479d17 ATOM 341 N9 A B 1 25.235 -7.274 -7.224 1.00 28.40 N 479d17 REMARK ATOM 342 C8 A B 1 26.116 -7.184 -6.172 1.00 25.07 C 479d17 REMARK ATOM 343 N7 A B 1 26.649 -5.993 -6.034 1.00 23.51 N 479d17 REMARK ATOM 344 C5 A B 1 26.085 -5.252 -7.068 1.00 22.27 C 479d17 REMARK ATOM 345 C6 A B 1 26.250 -3.908 -7.485 1.00 23.38 C 479d17 REMARK ATOM 346 N6 A B 1 27.074 -3.031 -6.895 1.00 21.38 N 479d17 REMARK ATOM 347 N1 A B 1 25.533 -3.494 -8.550 1.00 22.05 N 479d17 REMARK ATOM 348 C2 A B 1 24.714 -4.367 -9.153 1.00 25.73 C 479d17 REMARK ATOM 349 N3 A B 1 24.474 -5.643 -8.857 1.00 24.19 N 479d17 REMARK ATOM 350 C4 A B 1 25.204 -6.026 -7.795 1.00 25.19 C 479d17 ATOM 351 P G B 2 28.203 -10.993 -9.302 1.00 36.44 P 479d18 ATOM 352 OP1 G B 2 28.548 -12.341 -9.828 1.00 39.99 O 479d18 ATOM 353 OP2 G B 2 29.054 -10.368 -8.250 1.00 37.65 O 479d18 ATOM 354 O5' G B 2 28.120 -9.973 -10.528 1.00 36.16 O 479d18 ATOM 355 C5' G B 2 27.354 -10.288 -11.684 1.00 32.10 C 479d18 ATOM 356 C4' G B 2 27.061 -9.039 -12.481 1.00 29.98 C 479d18 ATOM 357 O4' G B 2 26.498 -8.037 -11.605 1.00 24.85 O 479d18 ATOM 358 C3' G B 2 28.265 -8.332 -13.055 1.00 27.18 C 479d18 ATOM 359 O3' G B 2 28.772 -8.968 -14.205 1.00 34.15 O 479d18 ATOM 360 C2' G B 2 27.702 -6.951 -13.325 1.00 25.50 C 479d18 ATOM 361 O2' G B 2 26.886 -6.922 -14.475 1.00 28.97 O 479d18 ATOM 362 C1' G B 2 26.862 -6.748 -12.070 1.00 24.75 C 479d18 ATOM 363 N9 G B 2 27.623 -6.076 -11.028 1.00 22.73 N 479d18 REMARK ATOM 364 C8 G B 2 28.185 -6.626 -9.901 1.00 20.17 C 479d18 REMARK ATOM 365 N7 G B 2 28.860 -5.761 -9.196 1.00 19.87 N 479d18 REMARK ATOM 366 C5 G B 2 28.722 -4.566 -9.898 1.00 22.94 C 479d18 REMARK ATOM 367 C6 G B 2 29.244 -3.268 -9.638 1.00 24.81 C 479d18 REMARK ATOM 368 O6 G B 2 29.972 -2.899 -8.719 1.00 27.63 O 479d18 REMARK ATOM 369 N1 G B 2 28.843 -2.354 -10.603 1.00 26.30 N 479d18 REMARK ATOM 370 C2 G B 2 28.057 -2.650 -11.688 1.00 25.17 C 479d18 REMARK ATOM 371 N2 G B 2 27.772 -1.645 -12.514 1.00 28.72 N 479d18 REMARK ATOM 372 N3 G B 2 27.582 -3.847 -11.946 1.00 25.77 N 479d18 REMARK ATOM 373 C4 G B 2 27.947 -4.748 -11.018 1.00 21.84 C 479d18 king-2.21.120420/extratools/resource/king/tool/rnaxtal/rnaclusters070506.csv0000644000000000000000000001351311531213002024757 0ustar rootroot# vbc3 100210 I added beta-1 and gamma-1 columns in order to allow rotation of those angles in the RNA rotator tool,,,,,,,,,,,,,,,,,,,,,,, #bin,name,chi i-1,beta i-1,gamma i-1, delta i-1, epsilon, zeta, alpha, beta, gamma, delta, chi,chi-1,beta i-1,gamma i-1,del-1,epsil,zeta,alpha,beta,gam,delta, chi 33p,1a,195,,,81.495,212.25,288.831,294.967,173.99,53.55,81.035,199,12,,,3.5,9.6,7.3,7.5,8.4,5.6,3.3,9 33p,1m,207,,,83.513,218.12,291.593,292.247,222.3,58.067,86.093,236,26,,,4.5,16.2,14.7,16.4,12.1,9.9,6.8,36 33p,1L,201,,,85.664,245.014,268.257,303.879,138.164,61.95,79.457,208,15,,,3.5,6.1,12.6,7.8,3.8,9.7,4.7,18 33p,&a,199,,,82.112,190.682,264.945,295.967,181.839,51.455,81.512,201,11,,,5,7.1,6.1,9.5,9.5,7.3,4.5,15 33p,7a,205,,,83.414,217.4,222.006,302.856,160.719,49.097,82.444,201,9,,,3.5,23,14.4,8.9,15,5.9,2.6,16 33p,3a,196,,,85.072,216.324,173.276,289.32,164.132,45.876,84.956,202,55,,,4.3,24.4,14.1,12.2,15.9,7,5.7,23 33p,9a,200,,,83.179,210.347,121.474,288.568,157.268,49.347,81.047,199,33,,,2.3,14.6,13.2,11.5,22.6,5.6,3.4,26 33p,1g,206,,,80.888,218.636,290.735,167.447,159.565,51.326,85.213,199,12,,,3.4,7.7,9,8.2,15.5,4.5,3,13 33p,7d,207,,,83.856,238.75,256.875,69.562,170.2,52.8,85.287,193,40,,,4.1,15.5,11.9,9.8,23.2,5.9,2.8,14 33p,3d,210,,,85.295,244.085,203.815,65.88,181.13,54.68,86.035,198,43,,,4.1,15.3,14.7,18.9,22.5,5.7,4,25 33p,5d,197,,,79.671,202.471,63.064,68.164,143.45,49.664,82.757,192,7,,,4.4,7.4,13.6,11.6,30.5,7.1,2.1,14 33t,1e,204,,,80.514,200.545,280.51,249.314,82.662,167.89,85.507,182,9,,,2.5,7.9,6.4,9,10.5,5.7,3.7,9 33t,1c,203,,,80.223,196.591,291.299,153.06,194.379,179.061,83.648,184,7,,,3.3,9.1,9.5,11.6,12.2,10.2,3.4,17 33t,1f,216,,,81.395,203.03,294.445,172.195,138.54,175.565,84.47,203,14,,,2.3,14,10.5,10.6,13,9.5,3.4,18 33t,5j,201,,,87.417,223.558,80.175,66.667,109.15,176.475,83.833,187,21,,,7,23.4,15.4,9.1,10.3,6,3.6,8 32p,1b,201,,,84.215,215.014,288.672,300.42,177.476,58.307,144.841,230,15,,,3.9,10.3,9.8,8.7,12.3,7.3,7.3,52 32p,1[,204,,,82.731,220.463,288.665,296.983,221.654,54.213,143.771,268,15,,,3.7,10.1,9.6,8.3,8.7,6.9,7.6,28 32p,3b,208,,,84.7,226.4,168.336,292.771,177.629,48.629,147.95,245,19,,,3.1,18.1,17.4,15.4,22.4,5.3,2.6,22 32p,1z,205,,,83.358,206.042,277.567,195.7,161.6,50.75,145.258,243,7,,,2.6,17.5,19.4,14.1,25.4,4.9,4.8,21 32p,5z,208,,,82.614,206.44,52.524,163.669,148.421,50.176,147.59,225,6,,,2.6,4.8,7.1,5.2,9.7,4.9,3.5,7 32p,7p,222,,,84.285,236.6,220.4,68.3,200.122,53.693,145.73,233,23,,,2.8,23.8,14.9,11.9,29.7,7,5.6,35 32t,1t,208,,,81.2,199.243,288.986,180.286,194.743,178.2,147.386,224,12,,,3.4,20.1,7.8,16.9,13.5,8.6,5.2,27 32t,5q,139,,,82.133,204.933,69.483,63.417,115.233,176.283,145.733,196,82,,,8.1,6,14.3,9.2,16.8,5.5,3.6,115 32m,1o,226,,,83.977,216.508,287.192,297.254,225.154,293.738,150.677,237,17,,,3.7,17.4,15.2,6.5,39.2,7,12.6,80 32m,7r,204,,,84.606,232.856,248.125,63.269,181.975,295.744,149.744,188,9,,,3.9,12.6,19.4,12.9,26.9,4.3,6.6,99 23p,2a,230,,,145.399,260.339,288.756,288.444,192.733,53.097,84.067,190,47,,,7.6,12.3,17.5,13.1,17.4,7.3,4.5,17 23p,4a,237,,,146.275,259.783,169.958,298.45,169.583,50.908,83.967,199,19,,,7.4,14.5,14.3,18.6,34.4,7.5,5.1,19 23p,0a,238,,,149.286,223.159,139.421,284.559,158.107,47.9,84.424,199,38,,,6.5,10.7,25.4,10.9,20,5.6,4.4,28 23p,#a,260,,,148.006,191.944,146.231,289.288,150.781,42.419,84.956,187,21,,,3.3,4.9,6.1,7,12.4,4.1,2.9,10 23p,4g,233,,,148.028,256.922,165.194,204.961,165.194,49.383,82.983,194,44,,,8.1,14.2,20.9,14,14.9,6.7,3.6,14 23p,6g,234,,,145.337,262.869,79.588,203.863,189.688,58,84.9,194,47,,,6.8,18.3,16.1,28.5,22.7,5.2,6.5,74 23p,8d,246,,,148.992,270.596,240.892,62.225,176.271,53.6,87.262,203,14,,,5.7,9.9,17.4,10.1,23.2,3.9,3.2,36 23p,4d,281,,,149.822,249.956,187.678,80.433,198.133,61,89.378,186,10,,,5.8,25.5,7.4,20.4,20.1,8.3,3.5,8 23p,6d,214,,,146.922,241.222,88.894,59.344,160.683,52.333,83.417,195,68,,,5.5,23.4,15.9,13.9,22.9,6.8,3.7,23 23t,2h,237,,,147.782,260.712,290.424,296.2,177.282,175.594,86.565,185,51,,,3.5,8.6,11.5,10,17.4,14.5,4.4,45 23t,4n,273,,,143.722,227.256,203.789,73.856,216.733,194.444,80.911,198,13,,,7.4,13.9,13.5,11.5,20.2,9,3.1,9 23t,0i,239,,,148.717,274.683,100.283,80.6,248.133,181.817,82.6,187,9,,,2.2,20.2,12.5,10.9,11.8,3.1,1.9,5 23t,6n,216,,,150.311,268.383,84.972,63.811,191.483,176.644,85.6,163,21,,,6,11.4,7.6,4.6,8.4,8.6,4.6,89 23t,6j,201,,,141.633,244.1,66.056,71.667,122.167,182.2,83.622,226,79,,,7.9,28.4,15.4,7.9,22.1,5.7,3.2,36 22p,2[,241,,,146.383,259.402,291.275,291.982,210.048,54.412,147.76,227,34,,,8.2,16.1,17.2,11.8,21.3,7.3,6.5,53 22p,4b,226,,,145.256,244.622,162.822,294.159,171.63,45.9,145.804,235,49,,,6.9,20.1,13.4,6.3,14.4,5.7,5.8,24 22p,0b,179,,,147.593,248.421,112.086,274.943,164.764,56.843,146.264,243,82,,,4,20.1,14.4,16.7,16.1,12.3,5.6,30 22p,4p,175,,,150.077,260.246,213.785,71.9,207.638,56.715,148.131,244,88,,,9.5,16.2,18.7,12.8,27.2,14.3,4.3,23 22p,6p,192,,,146.415,257.831,89.597,67.923,173.051,55.513,147.623,243,73,,,7.2,20.5,15.4,11.6,18.1,8.1,3.6,11 22t,4s,218,,,149.863,247.562,170.488,277.938,84.425,176.413,148.087,262,9,,,2.3,16,11.8,13.2,6.7,5.5,1.5,6 22m,2o,235,,,147.342,256.475,295.508,287.408,194.525,293.725,150.458,200,13,,,6.1,15.4,16.3,3.5,25.6,6.9,3.4,83 #wannabe ,,,,,,,,,,,,,,,,,,,,,,, 33t,5n,,,,86.055,246.502,100.392,73.595,213.752,183.395,85.483,,,,,2.5,28.4,6.8,8.6,14.5,5.9,3.2, 32p,5p,,,,84.457,213.286,69.086,75.5,156.671,57.486,147.686,,,,,3.7,30.5,29.8,24.2,25.3,15.7,5.8, 32m,5r,,,,83,196.9,65.35,60.15,138.425,292.55,154.275,,,,,1.3,23.1,14.7,17.4,23,10,4.8, 23p,2g,,,,141.9,258.383,286.517,178.267,165.217,48.35,84.783,,,,,3.8,17.9,13.4,24.1,22.3,5.1,5.4, 23m,0k,,,,149.067,249.783,111.517,278.367,207.783,287.817,86.65,,,,,6,22.2,17.4,18.5,37.6,13.4,5.4, 22p,2z,,,,142.9,236.55,268.8,180.783,185.133,54.467,143.35,,,,,6.2,25.6,25.9,16.2,27.9,8.4,11.7, 22t,2u,,,,143.94,258.2,298.24,279.64,183.68,183.08,145.12,,,,,6.8,4.7,14.1,9.1,32.2,21,5, king-2.21.120420/extratools/resource/king/tool/nmr/0000755000000000000000000000000011677360410020354 5ustar rootrootking-2.21.120420/extratools/resource/king/tool/nmr/redminus.png0000644000000000000000000000623311531213002022673 0ustar rootrootPNG  IHDRH- pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FIDATxڜRMKQ=w4!$$j-4gcYj?н? {J)ه.MqH *1Q̘7fH=sS!_ݩ>Y`^.t떹b5Œڥqxmo|l-#1(F|#ݰj܋ /yY[o [o 4?uឭguHIЏ<ݩ v*";Q( p>8$DF8wAޜ㞥($ H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FIDATxڜ1Lakp{`"q@[NdqJhpФ#ij.#]%\6p&}c\mwP)7YGdL. ɰk!qԛVI8I`^_ ?<}y]뻛mG{%q]zm] :S|rcuEJ -Re#rI|{yexFrb]mRfQUj> ǡ-.PW w bbB7GsV-7xBɘ\4*U!Dɘ\􉩻-=:/+O The Extratools manual
The Extratools manual

The Extratools manual

Ian W. Davis, Vincent B. Chen, and Daniel A. Keedy

Chapter 1
The Tools

This manual describes the KiNG tools available in the 'extratools' and 'rdcvis' packages. It is roughly laid out in order of the tools menu in KiNG, with tools in the main menu in this chapter, and a separate chapter for the 'Data analysis', 'Kin editing', 'Structural biology', 'Export' (File menu), and 'Specialty' tools. Also see the KiNG manual for descriptions of other tools.

1.1  90 Degree Rotations: Seeing precisely

The 90 Degree Rotations plugin provides a simple way to turn your model by 90 degrees around any of the three Cartesian axes. It also provides a shortcut back to the standard kinemage orientation: looking straight down the Z axis from the positive end toward the negative one, with positive X to the right and positive Y at the top of the screen.
This plugin is particularly useful in combination with a trick for setting up simultaneous orthogonal views of a kinemage. Read about it in the section on stereo graphics in the KiNG manual.

Chapter 2
Data analysis

2.1  Data Plotter Tool

The Data plotter tool is for importing high-dimensional (3) data into KiNG, for use with parallel coordinates.

2.1.1  Input files

This tool takes as input delimited, numerical files. The tool will use the first line of the file to determine the number of dimensions to use in the kinemage, as well as the names for each dimension. Also, it will use the first column as the point ID of each point. This allows users to enter identifying information about each row in the first column which will then be used in the kinemage for each point.

2.1.2  Basic usage

When this tool is started, it asks for an input file. Once a file is selected, it asks for the type of delimiter that is used in the file. It will then use the selected delimiter to parse the file. It then pops up a GUI with a number of different options. The different ".. axis" selection lists allow users to pick the initial three dimensions to plot. The bins selection list and the "# of Bins" entry field allows users to divide up the data into different bins (using the selected dimension), which will show up as separate groups in the kinemage. Once the desired axes and/or bins have been chosen, the Plot! button will plot the data into a kinemage. Once plotted, users can use the built-in "Choose viewing axes" and "Parallel coordinates" (under the Views menu) to manipulate the data.

2.2  High-dimensional Sliders

The High-dimensional sliders plugin is for manipulating high-dimensional kinemages. When started, it determines the number of dimensions in the kinemage, and creates a GUI containing a pair of low-high sliders for each dimension. Each slider is named with the corresponding dimension name, if present in the kinemage. Sliding the different sliders will turn off any points with that particular coordinate outside of the range encompased by the two sliders.

Chapter 3
Kin editing

Several new tools have been created that allow kinemages to be more easily edited without having to go back to the original PDB and creating a new kinemage.

3.1  Co-centering Tool

The Co-centeringTool is primarily for use with NMR-derived ensembles of models; it will translate all groups in kinemage onto a single selected point.

3.1.1  Basic Usage

Just middle-click or ctrl-click on an atom in a kinemage to cocenter all the groups of that kinemage onto that point. Click on the "Reset Coordinates" button to reset all atoms to their original coordinates.

3.1.2  Scanning through a structure

This tool includes the ability to scan through a structure one residue at a time, cocentering as it goes. Choose an atom to use as the centering point from the pull-down box, and then hit the left or right arrow buttons on the GUI to cocenter and recenter on the previous or next residue. Select the "Slide to next point" box to smoothly slide to the next or previous point. This can also be activated using the keyboard shortcut shift-j or j (for jump). As with many tools, this functionality is sensitive to the point IDs of the kinemage.

3.1.3  Cocentering on parens

The basic usage of cocenter only works on structures with identical sequences. For cocentering non-identical structures, we have created a cocenter on parens mode, which uses a new feature of pointIDs. To use this, enter a "(#)" [where the # is an integer] at the beginning of the point ID of the atoms you want to cocenter. With this option selected, the arrow buttons or j shortcut keys will jump through the (#) points by order of the integer. This also allows users to set up various cocentered views, and quickly jump through them, without having to manually find them, or stepping through the whole sequence.

3.1.4  Warnings

This functionality is based on the point ID of the points in the different groups. The tool uses the first 14 characters of the point ID clicked on to search the other groups. If a group does not have a point with the same first 14 characters in the point ID, the group will not get moved. When using the parens points, only groups with a point with the appropriate paren integer will be moved. It's important to note also that this tool only does translation; it does not do any rotations at all. Superpositions of the different models may be necessary before using this tool.

3.2  Paren Tool

The Paren tool provides a convenient way of adding parens (for use with co-centering) to point IDs.
When started, it automatically detects all paren points already defined in the kinemage. Each group of paren points is listed in the list box. Selecting the group from the list will label all the points in that group. To add or remove points to the group, select the group from the list and pick points without numbers to add them, or with number to remove them. You can also add new groups, or delete whole groups.

3.3  Dock 3-on-3: Geometric construction

The three-point docking tool is useful for constructing geometric shapes and figures out of existing pieces in kinemage format. As you start picking points with the mouse, they will be labeled with numbers: first three points in the reference frame, then three in the mobile frame. When you're ready to apply the docking transformation, turn off groups that should remain in place and leave visible those that should move. Then press the Dock button. The first points will be superimposed exactly, the 1-2 axes will be aligned (so that the mobile "points in the direction of" the reference) and the final points are used to determine rotational position (dihedral angle) about the 1-2 axis.
If you'd like to dock several of the same object with respect to each other, remember you can use the copy and paste commands in the hierarchy editor to create duplicate objects.

3.4  Least-Squares Docking: Getting the best fit

The least-squares docking tool is useful for matching up two objects that are similar but not quite the same. As you start picking points with the mouse, they will be labeled with numbers, defining the Reference frame. Once you've selected something to dock onto, you should choose the Mobile frame and add an equal number of points to it. The order matters: 1 will match with 1, 2 with 2, and so on. When you're ready to apply the docking transformation, turn off groups that should remain in place and leave visible those that should move. Then press the Dock button. The matched points will be positioned so as to minimize the sum of the squares of their separation (thus the phrase "least squares").
If you'd like to dock several of the same object with respect to each other, remember you can use the copy and paste commands in the hierarchy editor to create duplicate objects.

3.5  Dock By Picking

The dock by picking tool builds upon the least-squares docking tool, making use of structure connectivity to make the tool easier to use. In this version, you do not have to click on every point that you want to use to dock. Instead, you can click on two points, and almost every point in between will be automatically added to the selected box (reference or mobile). It leaves out points that are off, or are only one atom away (e.g. it ignores hydrogens and carbonyls). This tool requires the same number of points to be selected in the reference and mobile fields. The dock button will move the mobile, and every point connected to the mobile section. There is no need to turn off or on parts of the structure to get them to move.
N.B. Since this tool uses connectivity to determine the points, and the mobile section, it is easy to confuse. For example, it is inconsistent when considering sidechains, or especially rings in structures.

3.6  Extract Loop Tool

This tool is for removing unwanted residues from macromolecular structures.

3.6.1  Basic Usage

Enter the residue number range into the two text boxes and hit the Keep! button. Every residue number in between the range, including the two numbers, will be kept. Multiple ranges can be entered; the ranges that have been entered are shown in the list box. The Remove last button can be used to remove the last range entered. Once the proper ranges have been entered, the Delete rest! button can be used to delete every point without a desired residue number.

3.6.2  Advanced Usage

The LoopTool can read in a comma delimited file and use information in the file to delete residues from a structure. This allows a user to save ranges in a file, and not have to manually input the ranges. The format for the files is as follows: pdbname, lowresnum, highresnum, looplength, looplength, B-Factor (e.g. 1ubq,1,5,4,4,1.0). The two looplength fields are included for legacy reasons, but it is not important to have the correct value in those fields, just a number. B-Factor is used for the order of editing more than one structure (more on this later) but similarly to looplength, the number in this field is not critical. To use this feature, use the Open CSV file button to read in the CSV file. Then, just hit Delete from file to remove residues that aren't in your included ranges.
The LoopTool can also delete residues from multiple structures. In order to use this feature, you need to have a CSV formatted in the same way as described for a single structure, but each line contains a different range. You also need to have a directory containing kinemages of all the different structures, and also a folder called "loops" in that directory. Then, open your CSV file as before, and use the Do ALL from file button to specify the directory of kinemages. The program will open every kinemage as needed, delete unwanted residues, and save the new kin in the loops directory.

3.6.3  Warnings

The LoopTool makes heavy use of the information in the point IDs of the kinemages. If there are mistakes or unexpected information in the point IDs, then this tool will probably function incorrectly. Use kinemages generated from Prekin, Molprobity, or Molikin to ensure the highest rate of success.

3.7  Kinemage Fudging

The KinFudger tool now allows distance and angles between points to be easily adjusted. This is especially useful in modifying bond distances, angles, and dihedrals in macromolecular structures.
The control panel is simple, consisting of options for the parameter you wish to adjust, whether you want to move only one point (and all attached single points-I use this to move an atom and its attached hydrogens), and a button to export your kin to PDB.

3.7.1  Adjusting bond distances, angles, and dihedrals

In order to adjust a parameter, select the parameter you wish to adjust and click on the kinemage points you want to adjust, in order as if you were doing measures. By default, the tool will move the last point you clicked on, plus all the points connected to that point excluding the points "behind" the points you clicked. So for example, if you had a A-B-C-D connection, and you were adjusting the distance between B and C, and you clicked on B first, then C, then the program would move C and D. Likewise, if you clicked on C first, and then B, the program would move A and B. Naturally, the connectivity finding algorithm I use gets confused if you are adjusting with a cyclic structure, so be careful in that situation.
An interesting use I discovered about this tool is that you can use the distance adjusting to do a one-point docking of structures to close gaps.

3.7.2  Moving objects

Under the "Advanced options", users can turn on a mode that lets users use the mouse to move objects within a kinemage. Right-click and drag translates the clicked on point, as well as anything connected to it. Left-click and drag rotates everything connected to the selected point around that point.

3.7.3  Exporting to PDB

The KinFudger also includes an export to PDB functionality. As long as your kinemage PointIDs are formatted in a standard fashion (i.e. from Molikin, MolProbity, or Prekin), the tool will export all active points to a PDB file. So turn off anything you don't want in your PDB. Also, if it encounters an non-standard atom name, it will output "UNK" in the atom field of the PDB. Currently, it only exports protein atoms.

3.8  Recoloring

KiNG now has the ability to easily recolor kinemages. This tool was designed to specifically recolor protein structure kinemages; however, it can probably be used to recolor other kinds of kinemages as well. It allows specific regions of a structure to be recolored. For example, a specific amino acid, a particular alpha helix, or a whole subunit can be highlighted. This tool can also create a table of the amino acids in a structure.
The control panel for this tool has a number of options. The top line contains the color options, the second line contains the area of effect options, and the third line contains info boxes about what you are coloring and some extra control options. Most of the coloring is activated by clicking on the structure. It is important to note that this tool only recolors lists and subgroups, so depending on your kinemage, it is possible to color the sidechains separately from the backbone. Also, this tool only colors by point color.
Usage tip: There seems to be some issues with serine sidechains not being able to be colored. To work around this, try turning on the "Pick Objects" option in the Tools menu, and click directly on a bond in the sidechain.

3.9  Artificial skylighting

This plugin gives additional visual depth cues to CPK space-filling models by doing some fancy lighting calculations for kinemage spheres. It works for balls, too, but looks weird because of the highlights. To use it, just make a CPK kinemage with spheres, and run the tool. Essentially, it darkens the colors of balls closer to the 'inside' of the molecules. It will take a while on large files.
Note that it does obliterate existing point colors, and until we have a mechanism for writing out per-point unique (non-palette) colors, the effect can't be saved. It can, however, be recalculated once some atoms (eg H) are turned off. This plugin

3.10  "Lathe" tool: Just for fun

This is a fun helper that shows what a wide variety of shapes and forms can be constructed from a clever combination of kinemage primitives.
The lathe tool takes a single polyline and sweeps it out around an axis to create a polygonal object. One strip of 64 triangles is created for every line segment. This tool is ideal for creating anything with an axis of symmetry: bottles, vases, lamps, simple cylinders, and so on. The standard axis of rotation is the Y-axis, with rotation centered at the origin, so keep this in mind when drawing a half-profile to use with this tool.

3.11  Making Movies

This is a simple plugin to help users make movies. It allows users to configure various scenes and motions (rock, spin, fly), and exports a series of image files which can be combined (such as by Quicktime Pro) to make a movie. Buttons are included to conveniently resize the KiNG window.
This tool keeps track of objects which are turned on, so different things can be turned on or off during the movie. To do this, make sure the kinemage is set to the desired options and view before hitting the button corresponding to the action you want to do. So, for instance, to fly to a new scene, go to the new view and hit + Fly to have the movie show that action. To insert additional actions, click in the list of current actions before where you want the new action to go.
In practice, I (Vincent) find that it is best to add a short shapshot in between any movement actions in movies. Play with different settings to discover what you prefer.

3.12  Editing Multiple Lists

Authored by Daniel Keedy (daniel.keedy AT duke.edu)
Sometimes it's useful to emphasize or de-emphasize certain elements of a kinemage, e.g. to achieve the proper visual impact for a figure to be published. The Multi-list editor tool can help, by letting you simultaneously edit multiple kinemage lists.
First, use the checkboxes at the top of the control panel to determine what subset of lists will be affected. A list is considered to contain Probe contacts if it has a master tag (dots, vdw contact, small overlap, bad overlap, or H-bonds) generated by the all-atom contact evaluation program Probe. Note that if the "only visible" checkbox at the bottom is unchecked, all selected lists will be adjusted, not just the visible ones (i.e. those turned on in the kinemage hierarchy). Just don't bother changing all human history...
Next, repeatedly click the desired buttons to incrementally adjust the selected lists. For example, "BIGGER" and "smaller" change the width/radius of all points in the selected lists, and "opaquer" and "transparenter" make the lists more opaque (higher alpha value) or more transparent (lower alpha value).

3.13  Select by color

This plugin works with the 'select' kinemage group keyword to manipulate groups of data points.
To use it, make sure the kinemage group to be manipulated has the 'select' keyword set (either via the text, or the hierachy window). Then, select different combinations of 'if' and 'if not' and a color, to work with either one color or all other colors, respectively. Buttons allow points matching the selection to be turned off or on, or extracted into its own list.
This was originally created to work with large datasets, such as the 7 dimensional RNA backbone dihedral angle data, which is displayed using ball points. However, the tool does work with other kinds of points, as long as the 'select' keyword is set for the group.

Chapter 4
Exporting kinemages in other formats

Several facilities are provided that can help get data out of kinemage format and into other forms, either for making figures for publication or for further processing. Due to security restrictions placed on applets, the export features are unavailable when KiNG is running in a web browser.

4.1  Exporting for POV-Ray

KiNG can produce output script files to be fed into the high-quality free raytracing program POV-Ray (www.povray.org). POV-Ray can generate all kinds of "photo-realistic" effects including different materials and lighting schemes, simulated depth of field, etc. It is also very useful for producing digital movies that may be more convenient to use during talks and presentations. (We recommend the inexpensive QuickTime Pro from Apple for stitching together all the output images into a movie.) The POV file is largely complete as written and includes terse hints for rendering, but if you use this feature much you'll probably want to learn something about POV-Ray and tweak the scripts before rendering them. Most of the things you'll want to change are either at the very top (colors, textures, and sizes of things) or at the very bottom (camera viewpoint, depth cueing, lighting).

4.2  Exporting for Raster3D

KiNG can now export scenes, for fancy image-rendering, with the 'render' program of Raster3D.
This option exports most of the major kinemage point types, include balls, vectors, and triangles (ribbons) to .r3d format files for use with render. It also exports information about the points, such as transparency, line width, and color. It also will automatically set the background of the file to match the background of KiNG at the time of export.
There are a few oddities with this function. First, it can't export text labels. Second, the coordinate system doesn't match exactly, so the exported view ends up in the upper left 3/4 corner of the rendered image.

4.3  Deprecated export formats

These features now lag far behind the rest of the program in functionality; they may not work at all. For this reason, they do not appear in the menus by default and must be "enabled" under the Tools menu. If you need any of these capabilities, you are encouraged to contact the author and encourage on-going development.
You can export kinemages in XML format using the Kinetic Image Markup Language by choosing Kin-XML from the File - Export menu. We recommend giving these files the extension .xkn or .xml. At this time, KiNG does not read these files, nor do other kinemage viewers. Also, they may not include all of the information that would be present in a traditional kinemage file. However, for people who would like to operate on the data from a kinemage without having to write a parser for the kinemage format, we expect this will be useful and convenient. Translation from the modified XML back to kinemage format is left as an exercise to the reader ;)
KiNG also has rudimentary abilities to export its 3-D primitives in VRML97 (a.k.a. VRML 2.0) format. At present, only dots and balls are exported, and they are both rendered as spheres. This feature was intended to facilitate the creation of models for rapid prototyping systems. As with XML export, contact the author if further development of this feature would be useful to you.

Chapter 5
Structural biology tools

5.1  RNA Rotator Tool

The RNA rotator tool is for adjusting the various dihedral angles of an RNA suite. It uses the ModelManager system used for by the Backrub and sidechain rotator/mutator tools, which means that RNA rotator uses and changes PDB files. It also can show real-time updatable probe contact dots.
To use RNA rotator, select the tool from the Structural biology menu. Select the PDB file corresponding to the kinemage you are working on. This will load the PDB file into the Model Manager, which allows you to save changes to the PDB file, as well as activate the probe dots analysis. Middle-click or shift-click on a particular RNA residue to select it and the following residue as the active "molten" suite. This will bring up the dihedral angle dialog box, as well as the molten model, which reflects proposed changes being made in the model. Dials are included for all the backbone dihedrals, as well as the base chi angles. Blue highlights are indicated on the dials to indicate the most probable dihedral angles. If installed, suitename will be run to give a real-time "suiteness" score of the current suite. There is also a box to select from the known RNA suite conformers. Selecting a conformer will set the backbone dihedrals, as well as the sugar pucker, to the central dihedral values of the particular conformer. Finally, there is a pair of boxes for selecting which atoms to superimpose the "molten" model on the original.

5.2  RDC Play Plugin

The RDC play plugin allows quick visualization of a set of RDC curves, in fully interactive and rotatable 3D. This plugin allows users to interact with the RDC curves and gain a general understanding of their behavior of RDC data.
Starting the plugin automatically generates a new kinemage with RDC curves drawn. Slider bars are provided to adjust the rhombicity of the curves drawn, the range of the Saupe matrix generating the curves, and for selecting a specific value of RDC to draw, which is only active if the check box to only draw one value is selected. An option for drawing the underlying hyperboloid surfaces the curves come from is provided.

5.3  RDCvis

The RDCvis tool provides a convenient way of adding RDC curves to existing NMR model kinemages.
To use the tool, open a kinemage which needs RDC curves in KiNG. Starting the tool opens a dialog box with several options, as well as boxes for specifying a PDB file containing the NMR model(s), and a NMR data file in XPLOR format (see rdcvis manual or the kinemage website for more details). The 'Draw RDCs' button will then prompt for the type of RDCs to draw, and then draw the selected RDC curves for each residue directly in the kinemage. RDCvis will properly deal with multi-model kinemages, adding RDC curves for each model to the group containing that model.
Several other options are provided on the RDCvis tool GUI. 'Draw error curves' draws an extra set of curves at 2 sigma away for each RDC. 'Draw surfaces' draws representations of the underlying hyperboloid surfaces. 'Use ensemble tensor' calculates the Saupe matrix using the entire ensemble, rather than calculating a separate Saupe matrix for each model. 'Draw curve spheres' draws an RDC curve sphere representative of the Saupe matrix on each residue.

Chapter 6
Specialty/Beta test tools

This chapter covers some of the tools in the Specialty menu. This menu contains tools which are in beta testing or for highly specialized purposes, and thus not recommened for general use.

6.1  "KinImage" tool: Just silly

This cute little utility converts an image file into a kinemage background. The source image can be a local file or a sample from the Richardson Lab website: "Dave the Mage." A new kinemage group is created containing a dotlist with some percentage of the image's pixels. The list uses the "screen" keyword to indicate it is screen-oriented, i.e. impervious to rotations, translations, or zooms. Custom colors are used, and subsequently stored as hsvcolor items at the top of the file if the kinemage is saved.

6.2  RNA Maps: Finding the phosphates (not active by default)

Authored by Vincent Chen (vbc3 AT duke.edu)
This tool (still under development) was designed to aid users in locating potential phosphate positions in the electron density maps of nucleic acids. Similar to the existing electron density viewing plug-in, this tool asks the user to open a map file, and opens a control window containing many of the same controls as the electron density plug-in. In addition to these controls, it has a toggle button to activate/deactivate the poly picking feature and a color selection list. When active, if the user left-clicks on a point in the kinemage, the polyhedron containing that point will be highlighted in the color selected. Next, the tool searches through the map to find the highest electron density value within that selected polyhedron, and places a marker point on that spot, showing an approximate position for the phosphorous.

6.2.1  Current Issues

This tool does not differentiate between a point in the electron density and a point on the actual structure. Clicking on the structure with the poly picking tool active can result in the program searching through the whole structure, which can take a very long time. Be sure to click carefully, and to limit the polyhedra to be selected to a reasonable size (i.e. have the sigma level set high enough that the polyhedra are about the size of a phosphate). Also, once the first polyhedron has been selected, moving the electron density around and selecting a polyhedron may result in an error. If this happens, the program will have to be restarted in order to selected a polyhedron not in the initial set.

6.3  Analyze Geometry Plugin (replaced by Dangle, not active)

This plugin is for automatically analyzing the backbone geometry of protein structures. It uses the updated Engh and Huber (International Tables for Crystallography (2001). Vol. F, ch. 18.3, pp. 382-392) geometry data to flag bond lengths or angles which are at least 4 standard deviations away from their mean values. It also flags peptide dihedral angles that are more than 20 degrees off of 180. In order to use this tool, simply have a mainchain protein kinemage open in KiNG, and select Analyze Current from the menu. It will also output a list containing all flagged issues to the command line.
This tool will also analyze all the files within a directory. Select Analyze All from the menu, and select the directory containing the kinemages. This mode will only output the errors to the command line.

6.3.1  Issues

As with many of the tools dealing with protein residues, this tool is sensitive to the pointIDs in your kinemage. It also has trouble dealing with insertion codes, since it is often unable to figure out the order of the residues in kinemages with insertion codes.

6.4  Fill-Gap Plugin (replaced by JiffiLoop, not active)

This plugin makes it easy to automatically fill in gaps in protein models. It scans through a protein structure kin for gaps, analyzes the framing peptides of that gap, searches through a quality filtered database of loops for matches, finds kins of those matches, and superimposes them in the kinemage. It requires a database of loop frame information, and a directory of protein kinemages, both of which are quite large, and as of Feb 2007 are not publicly available. Eventually I plan to make them available on kinemage.biochem.duke.edu.

Chapter 7
Copyright & acknowledgments

7.1  Copyright

The Extratools code and all its associated original resources and documentation are copyright (C) 2002-2010 by Ian W. Davis, Vincent B. Chen, and Daniel A. Keedy.

7.2  Revision status

This manual was last updated 14 Dec 2010 by VBC for Extratools version 2.22.


File translated from TEX by TTHgold, version 4.00.
On 15 Dec 2010, 16:50.
king-2.21.120420/extratools/resource/extratools/version.props0000644000000000000000000000005511744305702022627 0ustar rootroot#Wed May 05 08:34:05 EDT 2004 version=2.24 king-2.21.120420/extratools/resource/META-INF/0000755000000000000000000000000011677360410017013 5ustar rootrootking-2.21.120420/extratools/resource/META-INF/services/0000755000000000000000000000000011677360410020636 5ustar rootrootking-2.21.120420/extratools/resource/META-INF/services/king.Plugin0000644000000000000000000000302411744305702022743 0ustar rootroot# Standard plugins king.tool.export.PovrayExport king.tool.export.KingLiteBinaryExport king.tool.export.DiveExport king.tool.export.Vrml97Writer king.tool.export.XknWriter king.tool.views.ViewpointPlugin king.tool.views.ClipPlanesPlugin king.tool.draw.LathePlugin king.tool.draw.PointColorPlugin king.tool.draw.SkylightPlugin king.tool.draw.MultiListEditorPlugin king.tool.movie.MoviePlugin king.tool.image.KinImagePlugin king.tool.postkin.ColorGrouperPlugin king.tool.postkin.KinimolPlugin king.tool.postkin.NikilomPlugin king.tool.data_analysis.HighDimSliderPlugin # king.tool.data_analysis.RdcPlayPlugin king.tool.vr.VRKinTool king.tool.export.RenderExport king.tool.draw.ProbeNearbyTool # Tools king.tool.docking.Dock3On3Tool king.tool.docking.DockLsqTool king.tool.docking.DockConnTool king.tool.rnaxtal.RNAMapTool king.tool.rnaxtal.GuilloTool king.tool.postkin.RecolorTool king.tool.sequence.FastaTool king.tool.data_analysis.CrossWindowPickTool king.tool.data_analysis.AutoBondRotDataTool king.tool.postkin.KinFudgerTool king.tool.postkin.RamaTool king.tool.loops.LoopTool king.tool.loops.LoopDockingTool king.tool.loops.FramerTool king.tool.data_analysis.PlottingTool king.tool.postkin.GeometryPlugin king.tool.rnaxtal.RNAExtractTool king.tool.postkin.RMSDTool king.tool.loops.PatchGapPlugin king.tool.loops.LoopRmsdTool # king.tool.nmr.RdcVisTool king.tool.nmr.CoCenterTool king.tool.nmr.ParenTool king.tool.rnaxtal.SuitenameTool king.tool.rnaxtal.RnaRotTool king.tool.data_analysis.CountingTool king-2.21.120420/extratools/src/0000755000000000000000000000000011677360410014613 5ustar rootrootking-2.21.120420/extratools/src/king/0000755000000000000000000000000011677360410015543 5ustar rootrootking-2.21.120420/extratools/src/king/tool/0000755000000000000000000000000011677360410016520 5ustar rootrootking-2.21.120420/extratools/src/king/tool/rnaxtal/0000755000000000000000000000000011677360410020171 5ustar rootrootking-2.21.120420/extratools/src/king/tool/rnaxtal/RNAPolyPlotter.java0000644000000000000000000001154711531213010023660 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; import king.*; import king.core.*; import king.points.*; import java.util.*; import driftwood.isosurface.*; //}}} /** * RNAMapPlotter isn't really a plotter, but * is named as such to be consistent in RNAMapWindow. * * It is intended to use RNAPhosphateFinder and RNAPolyTracker * to create a KList of selected polyhedra and their max points. * *

Copyright (C) 2004 Vincent Chen. All rights reserved. *
Begun on Jan 06 2004. */ public class RNAPolyPlotter { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## KList list; CrystalVertexSource map; PolygonFinder polyTracker; MarkerPoint phPoint; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public RNAPolyPlotter(CrystalVertexSource map) { list = new KList(KList.VECTOR); list.setName("Picked Polys"); list.setWidth(5); this.map = map; polyTracker = new PolygonFinder(); } //}}} //{{{ polyTrack //################################################ /** * This initializes the polytracker, and uses it to add poly lists to * the list of stored selected polyhedra. * *

It also uses polyAnalyze to find the high point within the polyhedra. * The program still needs to be modified to allow more than one KList be * initialized. * * @param p VectorPoint to be used to find its polyhedra. **/ public void polyTrack(VectorPoint p) { if (!polyTracker.isInitialized()) { //still need to make program check whether polytracker initiated for particular KList polyTracker.initiateMap((KList) p.getParent()); } KList polyList = polyTracker.getPolyhedra(p); MarkerPoint phos = polyAnalyze(polyList); addAll(list, polyList); list.add(phos); // Gives classcastexception if add markerpoint before combining lists. //onTracked(polyList); } //}}} //{{{ polyAnalyze //################################################ /** * This uses the phosphate finder to return a markerpoint showing the * highest value of the map within the outerlimits of the input list. * * @param polyList The list to be analyzed. **/ public MarkerPoint polyAnalyze(KList polyList) { RNAPhosphateFinder phinder = new RNAPhosphateFinder(map); //old find map max code //phinder.findLimits(polyList); //phinder.findIndexLimits(); //phinder.findMax(); //System.out.println(phinder); //double[] xyz = phinder.highPoint(); RNATriple centroid = phinder.findCentroid(polyList); phPoint = new MarkerPoint("phosphate"); //phPoint.setX(xyz[0]); //phPoint.setY(xyz[1]); //phPoint.setZ(xyz[2]); phPoint.setX(centroid.getX()); phPoint.setY(centroid.getY()); phPoint.setZ(centroid.getZ()); phPoint.setStyle(MarkerPoint.BOX_L); phPoint.setColor(KPalette.green); phPoint.setWidth(5); phPoint.setName("phosphake: x=" + phPoint.getX() + ", y=" + phPoint.getY() + ", z=" + phPoint.getZ()); phPoint.setOn(true); return phPoint; } //}}} /** Retrieves the KList containing all selected polyhedra.*/ public KList getList() { return list; } //}}} public VectorPoint getPhosphate() { VectorPoint phos = new VectorPoint("phosphate", null); phos.setX(phPoint.getX()); phos.setY(phPoint.getY()); phos.setZ(phPoint.getZ()); return phos; } public void addPoint(RNATriple p) { VectorPoint phos = getPhosphate(); list.add(phos); VectorPoint intersect = new VectorPoint("intersect", phos); intersect.setX(p.getX()); intersect.setY(p.getY()); intersect.setZ(p.getZ()); intersect.setColor(KPalette.purple); System.out.println("Intersect: " + intersect.getX() + ", " + intersect.getY() + ", " + intersect.getZ()); list.add(intersect); } // addAll //################################################### /* * Helper function that combines two KLists into one. * * @param startList the first list, gets stuff added to it. * @param lastList the second list, stuff added from it. */ private KList addAll(KList startList, KList lastList) { Iterator iter; VectorPoint listPoint; iter = lastList.iterator(); for ( ; iter.hasNext(); ) { listPoint = (VectorPoint) iter.next(); //listPoint.setColor(KPalette.gold); //listPoint.setWidth(5); listPoint.setParent(startList); startList.add(listPoint); } return startList; } //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/rnaxtal/RnaBackboneRotator.java0000644000000000000000000007376711571460626024603 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; import king.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import chiropraxis.kingtools.*; import chiropraxis.sc.*; import chiropraxis.rotarama.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.util.SoftLog; import driftwood.util.*; //}}} /** * RnaBackboneRotator is a GUI for repositioning a sidechain * based on its dihedral angles (chi1, chi2, etc). * *

Copyright (C) 2010 by Vincent B Chen. All rights reserved. *
Begun on Mon Jan 04 15:59:57 EST 2010 */ public class RnaBackboneRotator implements Remodeler, ChangeListener, ListSelectionListener, WindowListener { //{{{ Constants static final DecimalFormat df1 = new DecimalFormat("0.0"); //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; Residue targetRes1; Residue targetRes2; ArrayList targetResidues; String resInfo1; String resInfo2; ModelManager2 modelman; ConformerAngles confAngles; Conformer conformer; String currentBin = ""; // current suite pucker states RnaIdealizer rnaIdealizer = null; Window dialog; //JCheckBox dockOther; //JCheckBox useDaa; JList conformerList; JList atomsList1; JList atomsList2; AngleDial[] dials; JLabel confQuality; ModelState changePuckerState = null; boolean doChangePucker = false; //boolean doSuperpose = false; ArrayList atomsToSuper; /** Marker for logical multi-dial update */ boolean isUpdating = false; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @throws IllegalArgumentException if the residue code isn't recognized * @throws IOException if the needed resource(s) can't be loaded from the JAR file * @throws NoSuchElementException if the resource is missing a required entry */ public RnaBackboneRotator(KingMain kMain, Residue targ1, Residue targ2, ModelManager2 mm) throws IOException { this.kMain = kMain; this.targetRes1 = targ1; this.targetRes2 = targ2; this.resInfo1 = "molt:"+mm.getModel().getName()+":"+targ1.getChain()+":"+targ1.getSequenceNumber()+":"+targ1.getInsertionCode()+":"+targ1.getName()+":"; this.resInfo2 = "molt:"+mm.getModel().getName()+":"+targ2.getChain()+":"+targ2.getSequenceNumber()+":"+targ2.getInsertionCode()+":"+targ2.getName()+":"; this.modelman = mm; this.confAngles = new ConformerAngles(); this.conformer = Conformer.getInstance(); //this.scFlipper = new SidechainsLtoD(); try { rnaIdealizer = new RnaIdealizer(); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } buildGUI(kMain.getTopWindow()); targetResidues = new ArrayList(); targetResidues.add(targetRes1); targetResidues.add(targetRes2); modelman.registerTool(this, targetResidues); // not sure if this is best place to set adjacency map....if // model is fit poorly first then this will fail. //confAngles.setAdjacency(targetRes1, targetRes2, modelman.getMoltenState()); } //}}} //{{{ buildGUI, getDialPanel //################################################################################################## private void buildGUI(Frame frame) { // Dials TablePane topDialPane = new TablePane(); String[] angleNames = confAngles.getAngleNames(); double[] angleVals = confAngles.measureAllAngles(targetRes1, targetRes2, modelman.getMoltenState()); TablePane2 leftDials = new TablePane2(); TablePane2 centDials0 = new TablePane2(); TablePane2 centDials1 = new TablePane2(); TablePane2 rightDials = new TablePane2(); dials = new AngleDial[angleNames.length]; for(int i = 0; i < angleNames.length; i++) { TablePane2 dialPane = centDials1; if (angleNames[i].indexOf("-1") > -1) dialPane = centDials0; if (angleNames[i].indexOf("chi") > -1) dialPane = leftDials; else if (angleNames[i].indexOf("delta") > -1) dialPane = rightDials; else { leftDials.add(new JLabel(""), 1, 2); leftDials.newRow(); leftDials.newRow(); rightDials.add(new JLabel(""), 1, 2); rightDials.newRow(); rightDials.newRow(); } dials[i] = new AngleDial(); dials[i].setOrigDegrees(angleVals[i]); dials[i].setDegrees(angleVals[i]); double[] bounds; if (angleNames[i].indexOf("-1") > -1) bounds = confAngles.getBounds(angleNames[i].substring(0, angleNames[i].indexOf("-1"))); else bounds = confAngles.getBounds(angleNames[i]); for (int j = 0; j < bounds.length; j+=2) { dials[i].setBoundsDegrees(bounds[j], bounds[j+1]); } dials[i].addChangeListener(this); dialPane.add(dials[i]); dialPane.newRow(); dialPane.add(new JLabel(angleNames[i])); dialPane.newRow(); } topDialPane.add(leftDials); topDialPane.add(centDials0); topDialPane.add(centDials1); topDialPane.add(rightDials); // Top-level pane JPanel twistPane = new JPanel(new BorderLayout()); twistPane.add(topDialPane, BorderLayout.WEST); // Rotamer list //RotamerDef[] conformers = scAngles.getAllRotamers(targetRes); //if(conformers == null) // throw new IllegalArgumentException("Bad residue code '"+targetRes.getName()+"' isn't recognized"); //RotamerDef origRotamer = new RotamerDef(); //origRotamer.conformerName = "original"; //origRotamer.chiAngles = scAngles.measureChiAngles(targetRes, modelman.getMoltenState()); //RotamerDef[] conformers2 = new RotamerDef[ conformers.length+1 ]; //System.arraycopy(conformers, 0, conformers2, 1, conformers.length); //conformers2[0] = origRotamer; String[] conftemp = conformer.getDefinedConformerNames(); String[] conformers = new String[conftemp.length+1]; System.arraycopy(conftemp, 0, conformers, 1, conftemp.length); conformers[0] = "original"; conformerList = new JList(conformers); conformerList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); conformerList.setSelectionModel(new ReclickListSelectionModel(conformerList)); conformerList.addListSelectionListener(this); // Rotamer quality readout confQuality = new JLabel(); confQuality.setToolTipText("Quality assessment for the current suite conformation"); setFeedback(); TablePane2 conformerPane = new TablePane2(); conformerPane.vfill(false).add(new JLabel("Conformers")); conformerPane.add(new JLabel("Pick superpose atoms")); conformerPane.newRow(); //conformerPane.hfill(true).vfill(true).addCell(new JScrollPane(conformerList), 1, 4); conformerPane.vfill(true).hfill(true).addCell(new JScrollPane(conformerList), 1, 4); Object[] res1Atoms = targetRes1.getAtoms().toArray(); Object[] res2Atoms = targetRes2.getAtoms().toArray(); atomsList1 = new JList(res1Atoms); atomsList1.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); //atomsList1.setSelectionModel(new ReclickListSelectionModel(atomsList1)); atomsList1.addListSelectionListener(this); atomsList2 = new JList(res2Atoms); atomsList2.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); //atomsList2.setSelectionModel(new ReclickListSelectionModel(atomsList2)); atomsList2.addListSelectionListener(this); //conformerPane.newRow(); conformerPane.hfill(true).vfill(true).add(new JScrollPane(atomsList1)); conformerPane.newRow(); conformerPane.vfill(false).add(new JLabel("Residue 1")); conformerPane.newRow(); conformerPane.hfill(true).vfill(true).add(new JScrollPane(atomsList2)); conformerPane.newRow(); conformerPane.vfill(false).add(new JLabel("Residue 2")); conformerPane.newRow().weights(2,0).addCell(confQuality, 2, 1); twistPane.add(conformerPane, BorderLayout.EAST); // Other controls TablePane optionPane = new TablePane(); //dockOther = new JCheckBox(new ReflectiveAction("Dock on second residue", null, this, "onDockOther")); //optionPane.addCell(dockOther); //cbIdealize = new JCheckBox(new ReflectiveAction("Idealize sidechain", null, this, "onIdealizeOnOff")); //if(scIdealizer != null) cbIdealize.setSelected(true); //else cbIdealize.setEnabled(false); //optionPane.addCell(cbIdealize); //useDaa = new JCheckBox(new ReflectiveAction("Use D-amino acid", null, this, "onDaminoAcid")); //useDaa.setSelected(false); //optionPane.addCell(useDaa); //JButton changePucker = new JButton(new ReflectiveAction("Change puckers", null, this, "onChangePucker")); //optionPane.addCell(changePucker); //twistPane.add(optionPane, BorderLayout.NORTH); JButton btnRelease = new JButton(new ReflectiveAction("Finished", null, this, "onReleaseResidue")); //JButton btnBackrub = new JButton(new ReflectiveAction("BACKRUB mainchain", null, this, "onBackrub")); TablePane2 btnPane = new TablePane2(); btnPane.addCell(btnRelease); //btnPane.addCell(btnBackrub); twistPane.add(btnPane, BorderLayout.SOUTH); // Assemble the dialog if (kMain.getPrefs().getBoolean("minimizableTools")) { JFrame fm = new JFrame(targetRes1.toString()+" rotator"); fm.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); fm.setContentPane(twistPane); dialog = fm; } else { JDialog dial = new JDialog(frame, targetRes1.toString(), false); dial.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dial.setContentPane(twistPane); dialog = dial; } dialog.addWindowListener(this); dialog.pack(); dialog.setVisible(true); } //}}} //{{{ onReleaseResidue, onIdealizeOnOff, onDaminoAcid //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** * Checks residues back into the ModelManager. * @param ev is ignored, may be null. */ public void onReleaseResidue(ActionEvent ev) { int reply = JOptionPane.showConfirmDialog(dialog, "Do you want to keep the changes\nyou've made to this suite?", "Keep changes?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if(reply == JOptionPane.CANCEL_OPTION) return; if(reply == JOptionPane.YES_OPTION) { modelman.requestStateChange(this); // will call this.updateModelState() modelman.addUserMod("Refit backbone of "+targetRes1+" & "+targetRes2); } else // == JOptionPane.NO_OPTION modelman.unregisterTool(this); dialog.dispose(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME //public void onBackrub(ActionEvent ev) //{ // try { new BackrubWindow(kMain, targetRes, modelman); } // catch(IllegalArgumentException ex) // { // JOptionPane.showMessageDialog(kMain.getTopWindow(), // targetRes+"doesn't have neighbors in the same chain.\n", // "Sorry!", JOptionPane.ERROR_MESSAGE); // } //} // This method is the target of reflection -- DO NOT CHANGE ITS NAME // public void onDockOther(ActionEvent ev) // { // doChangePucker = true; // stateChanged(null); // doChangePucker = false; // } // // public void onDaminoAcid(ActionEvent ev) { // stateChanged(null); // } //}}} //{{{ makeOptionPane private String makeOptionPane() { JOptionPane pane = new JOptionPane("Mutate this sidechain to what?", JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null); pane.setSelectionValues(rnaIdealizer.getPuckerStates().toArray()); //pane.setInitialSelectionValue(orig.getName()); JDialog dialog = pane.createDialog(kMain.getTopWindow(), "Choose mutation"); pane.selectInitialValue(); // JCheckBox usePdbv2Box = new JCheckBox("Use PDB v2.3 (old) format"); // usePdbv2Box.setPreferredSize(new Dimension(300, 30)); // I arrived at these values through // usePdbv2Box.setMaximumSize(new Dimension(300, 30)); // a lot of trial and error just // usePdbv2Box.setAlignmentX((float)0.5); // to get the check box right. // usePdbv3 = true; // usePdbv2Box.addItemListener(this); // pane.add(usePdbv2Box); //System.out.println(usePdbv2Box.getPreferredSize()); //System.out.println(usePdbv2Box.getMaximumSize()); //System.out.println(usePdbv2Box.getAlignmentX()); dialog.setVisible(true); return (String)pane.getInputValue(); } //}}} //{{{ changePucker public ModelState changePuckers(String puckers, ModelState state) { try { //System.out.println("Changing pucker"); //String choice = makeOptionPane(); //if((choice == null)||(choice.equals(JOptionPane.UNINITIALIZED_VALUE))) return; // user canceled operation // Create the mutated sidechain //ModelState newState = new ModelState(modelman.getMoltenState()); //rnaIdealizer.debugModelState(targetResidues, modelman.getFrozenState(), "frozenres-pre.pdb"); changePuckerState = rnaIdealizer.makeIdealResidue(state, targetResidues, puckers, false); //rnaIdealizer.debugModelState(targetResidues, modelman.getFrozenState(), "frozenres-post.pdb"); //modelman.requestStateRefresh(); // double[] angleVals = confAngles.measureAllAngles(targetRes1, targetRes2, changePuckerState, true); //rnaIdealizer.debugModelState(targetResidues, changePuckerState, "changepucker.pdb"); //System.out.print("measured angles of changed pucker: "); //for (double d : angleVals) { // System.out.print(df1.format(d) + ":"); //} //System.out.println(); // setAllDials(angleVals); return changePuckerState; } // catch(ResidueException ex) // { // ex.printStackTrace(SoftLog.err); // } catch(AtomException ex) { ex.printStackTrace(SoftLog.err); } return null; } //}}} //{{{ isUpdating //################################################################################################## /** * Implements a means of updating several dials at once * while maintaining getValueIsAdjusting() == true. * This is useful to us in e.g. setAllAngles(). */ public boolean isUpdating() { return isUpdating; } public void isUpdating(boolean b) { isUpdating = b; } //}}} //{{{ stateChanged, valueChanged, getValueIsAdjusting //################################################################################################## /** Gets called when the dials move. */ public void stateChanged(ChangeEvent ev) { // This keeps us from running Probe N times when a conformer with // N angles is selected from the list! (Maybe?) if(!isUpdating()) { //System.out.println("state changed"); modelman.requestStateRefresh(); } setFeedback(); // otherwise, we evaluate the old conformation } /* Gets called when a new conformer is picked from the list */ // At first I attempted to be more efficient about changing puckers. // The code would only change puckers when the conf list was hit. // However this only worked when RnaIdealizer modified the atomstates directly, // instead of returning clones. It turns out that this was changing the frozen // state directly in the model manager. I didn't realize that on requesting a // state refresh, the model manager always goes back to the frozen model and // makes its changes from that model. // Changing the frozen model would be alright, except for the fact that cancelling // the change wouldn't actually cancel, and then trying to superimpose on the // frozen model didn't quite work out either. // The fix was to change the puckers once, set the dials, and init the angles // for the selected conformer here, and then always change the puckers to the // selected conformer's during requestStateRefresh, so the dial adjustments work // of the changed pucker state. // Lessons: Never mess with the modelstate in requestStateRefresh, and remember // that the modelstate always works from the frozen model!! VBC 100205 public void valueChanged(ListSelectionEvent ev) { JList hitList = (JList) ev.getSource(); if (hitList.equals(conformerList)) { String confName = (String)conformerList.getSelectedValue(); if(confName != null) { if (confName.equals("original")) { changePuckerState = modelman.getFrozenState(); double[] angleVals = confAngles.measureAllAngles(targetRes1, targetRes2, changePuckerState, true); initSomeAngles(angleVals); } else { String bin = conformer.getConformerBin(confName); try { changePuckerState = rnaIdealizer.makeIdealResidue(modelman.getFrozenState(), targetResidues, bin, false); double[] angleVals = confAngles.measureAllAngles(targetRes1, targetRes2, changePuckerState, true); setAllDials(angleVals); double[] meanVals = conformer.getMeanValues(confName); for (int i = 0; i < meanVals.length; i++) { //System.out.println(Double.isNaN(meanVals[i])); if (Double.isNaN(meanVals[i])) { dials[i].setPaintOrigAngle(false); meanVals[i] = angleVals[i]; } else { dials[i].setPaintOrigAngle(true); } } initSomeAngles(meanVals); } catch (AtomException ae) {ae.printStackTrace(SoftLog.err);} // else there is no current selection } } } else if (hitList.equals(atomsList1)||hitList.equals(atomsList2)) { getSuperposeAtoms(); //doSuperpose = true; stateChanged(new ChangeEvent(this)); //doSuperpose = false; } } /** Returns true if any of the dials is currently being updated */ public boolean getValueIsAdjusting() { if(isUpdating()) return true; for(int i = 0; i < dials.length; i++) { if(dials[i].getValueIsAdjusting()) return true; } return false; } //}}} //{{{ getSuperposeAtoms public void getSuperposeAtoms() { Object[] atoms1 = atomsList1.getSelectedValues(); Object[] atoms2 = atomsList2.getSelectedValues(); atomsToSuper = new ArrayList(); if (atoms1.length + atoms2.length > 2) { // if more than 3 atoms picked, then do superposition ArrayList atomNames = new ArrayList(); for (Object o : atoms1) { Atom at = (Atom) o; atomNames.add(at.getName()); } atomsToSuper.add(atomNames); atomNames = new ArrayList(); for (Object o : atoms2) { Atom at = (Atom) o; atomNames.add(at.getName()); } atomsToSuper.add(atomNames); } else { ArrayList atomNames = new ArrayList(); atomNames.add(" O3'"); atomsToSuper.add(atomNames); atomNames = new ArrayList(); atomNames.add(" P "); atomNames.add(" O5'"); atomsToSuper.add(atomNames); } } //}}} //{{{ setAllDials /** (measured in degrees) */ public void setAllDials(double[] angles) { if(angles.length < dials.length) throw new IllegalArgumentException("Not enough angles provided!"); isUpdating(true); for(int i = 0; i < dials.length; i++) dials[i].setDegrees(angles[i]); isUpdating(false); } //}}} //{{{ get/set/initAllAngles, initSomeAngles //################################################################################################## /** (measured in degrees) */ public double[] getAllAngles() { double[] angles = new double[dials.length]; for(int i = 0; i < dials.length; i++) angles[i] = dials[i].getDegrees(); return angles; } /** (measured in degrees) */ public void setAllAngles(double[] angles) { if(angles.length < dials.length) throw new IllegalArgumentException("Not enough angles provided!"); isUpdating(true); for(int i = 0; i < dials.length; i++) dials[i].setDegrees(angles[i]); isUpdating(false); stateChanged(new ChangeEvent(this)); } /** (measured in degrees) */ public void initAllAngles(double[] angles) { if(angles.length < dials.length) throw new IllegalArgumentException("Not enough angles provided!"); initSomeAngles(angles); } /** Doesn't check to make sure there are enough angles to set all dials*/ public void initSomeAngles(double[] angles) { int len = Math.min(angles.length, dials.length); isUpdating(true); for(int i = 0; i < len; i++) { dials[i].setOrigDegrees(angles[i]); dials[i].setDegrees(angles[i]); } isUpdating(false); stateChanged(new ChangeEvent(this)); } //}}} //{{{ setFeedback //################################################################################################## /** * Sets the string that will be displayed as feedback * on the quality of the currently selected conformer. */ public void setFeedback() { //rotaQuality.setText("-???-"); try { String[] d = new String[dials.length]; for(int i = 0; i < dials.length; i++) { String val = dials[i].getDegreesWrapped(); if (val.equals("NaN")) { d[i] = "__?__"; } else { d[i] = val; } } String resInf = resInfo1+"__?__:"+d[1]+":"+d[2]+":"+d[3]+":"+d[4]+":"+d[5]+"\n"; resInf = resInf+resInfo2+d[6]+":"+d[7]+":"+d[8]+":"+d[9]+":__?__:__?__"; //System.out.println(resInf); //System.out.println(findProgram("suitename")); Process proc = Runtime.getRuntime().exec(findProgram("suitename")); DataOutputStream stream = new DataOutputStream(proc.getOutputStream()); stream.writeBytes(resInf); //System.out.println(resInf.length()); //System.out.println(stream.size()); stream.flush(); stream.close(); BufferedReader reader = new BufferedReader(new InputStreamReader(proc.getInputStream())); String line; line = reader.readLine(); line = reader.readLine(); String[] split = Strings.explode(line, ':'); String eval = "Need suitename for score"; if (split.length == 6) { eval = split[5]; } //System.out.println(line); //while ((line = reader.readLine()) != null) { // System.out.println(line); //} //double score = conformer.evaluate(targetRes1, targetRes2, modelman.getMoltenState()) * 100.0; //double score = 100; //String eval; //if(score > 20) eval = "Excellent"; //else if(score > 10) eval = "Good"; //else if(score > 2) eval = "Fair"; //else if(score > 1) eval = "Poor"; //else eval = "OUTLIER"; //confQuality.setText(eval+" ("+df1.format(score)+"%)"); confQuality.setText(eval); } catch(IllegalArgumentException ex) { confQuality.setText("Download suitename for scoring"); } catch (IOException ie) { ie.printStackTrace(SoftLog.err); } } //}}} //{{{ findProgram //################################################################################################## /** * Attempts to find the given program name in the same directory as the king.jar file. * In this case, the entire path will be quoted to protect any whitespace inside. * If not found, it assumes the program is in the PATH. * Automatically appends ".exe" if we appear to be running under Windows.. * This was copied form BgKinRunner, but doesn't appear to work with single quotes on windows. * Double quotes around basename seems to work better, at least on vista. */ public String findProgram(String basename) { String os = System.getProperty("os.name").toLowerCase(); String quotes = ""; if(os.indexOf("windows") != -1) { basename = basename+".exe"; quotes = "\""; } // We search the directory holding the king.jar file // for 'probe' or 'probe.exe'; if not found, we just use 'probe'. File progFile = new File(kMain.getPrefs().jarFileDirectory, basename); if(progFile.exists()) { // Full path might have spaces in it (Win, Mac) try { basename = quotes+progFile.getCanonicalPath()+quotes; } catch(Throwable t) { t.printStackTrace(SoftLog.err); } } return basename; } //}}} //{{{ updateModelState //################################################################################################## /** * Allows this tool to modify the geometry of the current model. * This function is called by the model manager at two times: *

    *
  1. When this tool is registered and someone requests * that the molten model be updated
  2. *
  3. When this tool requests that the model be permanently changed.
  4. *
* Tools are absolutely not permitted to modify s: all changes * should be done in a new ModelState which should be returned * from this function. */ public ModelState updateModelState(ModelState s) { long startTime = System.currentTimeMillis(); ModelState ret = s; //if (changePuckerState != null) { // ret = changePuckerState; //} //if (dockOther.isSelected()) { // rnaIdealizer.setDockResidue(1); //} else { // rnaIdealizer.setDockResidue(0); //} String confName = (String)conformerList.getSelectedValue(); if(confName != null) { //if (doChangePucker) { if (!confName.equals("original")) { // if original is picked, just use frozen model String bin = conformer.getConformerBin(confName); ret = changePuckers(bin, s); //doChangePucker = false; } } //if(scIdealizer != null && cbIdealize.isSelected()) // ret = scIdealizer.idealizeSidechain(targetRes, s); //if (useDaa.isSelected()) { // try { // ret = scFlipper.changeSidechainLtoD(targetRes, s); // } catch (AtomException ae) { // ae.printStackTrace(SoftLog.err); // ret = s; // } //} //System.out.println("Setting angles: "); //double[] angles = this.getAllAngles(); //for (double d : angles) { // System.out.print(df1.format(d) + ":"); //} //System.out.println(" on the following state: "); //System.out.println(ret.debugStates(20)); //rnaIdealizer.debugModelState(targetResidues, ret, "pre-setAngles.pdb"); ret = confAngles.setAllAngles(targetRes1, targetRes2, ret, this.getAllAngles()); //rnaIdealizer.debugModelState(targetResidues, ret, "post-setAngles.pdb"); try { //if (doSuperpose) { Model frozen = modelman.getModel(); Residue frozRes1 = frozen.getResidue(targetRes1.getCNIT()); Residue frozRes2 = frozen.getResidue(targetRes2.getCNIT()); ArrayList frozRezzes = new ArrayList(); frozRezzes.add(frozRes1); frozRezzes.add(frozRes2); getSuperposeAtoms(); //rnaIdealizer.debugModelState(frozRezzes, modelman.getFrozenState(), "frozenres.pdb"); // rnaIdealizer.debugModelState(targetResidues, ret, "pre-dock.pdb"); ret = rnaIdealizer.dockResidues(targetResidues, ret, frozRezzes, modelman.getFrozenState(), atomsToSuper); // rnaIdealizer.debugModelState(targetResidues, ret, "post-dock.pdb"); //} } catch (AtomException ae) { ae.printStackTrace(SoftLog.err); } long endTime = System.currentTimeMillis(); //System.out.println("Total Time to update modelstate: " + ((endTime-startTime)) + " milliseconds"); return ret; } //}}} //{{{ Dialog window listeners //################################################################################################## public void windowActivated(WindowEvent ev) {} public void windowClosed(WindowEvent ev) {} public void windowClosing(WindowEvent ev) { onReleaseResidue(null); } public void windowDeactivated(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowOpened(WindowEvent ev) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/rnaxtal/RNAPhosphateFinder.java0000644000000000000000000001165311531213010024444 0ustar rootroot//{{{ Package, imports package king.tool.rnaxtal; import king.*; import king.core.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.isosurface.*; import driftwood.r3.*; //}}} /** * RNAPhosphateFinder takes in a ED map and a KList * and finds the highest ED value within the limits of the KList. * *

It uses a brute force algorithm, basically going through * every value within the limits of the KList, and storing the highest * value. This works for a "phosphate" which typically has maybe 100 values, * but obviously has issues with large polyhedra. Yeah, big issues. * *

Copyright (C) 2003 by Vincent Chen. All rights reserved. * **/ public class RNAPhosphateFinder { //{{{ Variable Definitions //################################################ CrystalVertexSource map; double minX = 10000, minY = 10000, minZ = 10000; double maxX, maxY, maxZ; double highValue = 0; int[] min = new int[3]; int[] max = new int[3]; int[] highPoint = new int[3]; double[] highPointXYZ = new double[3]; //}}} //{{{ Constructors //################################################# public RNAPhosphateFinder() { } public RNAPhosphateFinder(CrystalVertexSource map) { this.map = map; //kMain = parent.kMain; //kCanvas = parent.kCanvas; } //}}} //{{{ Methods //################################################### //{{{ findLimits //################################################### /** * This method takes in a KList and iterates through it, * to find the outer limits of the points in the list. **/ public void findLimits(KList trackedList) { Iterator iter; KPoint listPoint; iter = trackedList.iterator(); for ( ; iter.hasNext(); ) { double origX, origY, origZ; listPoint = (KPoint) iter.next(); origX = listPoint.getX(); origY = listPoint.getY(); origZ = listPoint.getZ(); if (origX > maxX) { maxX = origX; } if (origY > maxY) { maxY = origY; } if (origZ > maxZ) { maxZ = origZ; } if (origX < minX) { minX = origX; } if (origY < minY) { minY = origY; } if (origZ < minZ) { minZ = origZ; } } //System.out.println("mins: " + minX +", " + minY + ", " + minZ); //System.out.println("maxs: " + maxX +", " + maxY + ", " + maxZ); } //{{{ findIndexLimits //################################################### /** * This method just finds the map indicies from the King indicies. **/ public void findIndexLimits() { map.findVertexForPoint(minX, minY, minZ, min); map.findVertexForPoint(maxX, maxY, maxZ, max); //System.out.println("Min: " + min[0] + ", " + min[1] + ", " + min[2]); //System.out.println("Max: " + max[0] + ", " + max[1] + ", " + max[2]); } //}}} //{{{ findMax //################################################## /** * This method steps through every index combination within the limits * of the polyhedra to find the max value point. **/ public void findMapMax() { int[] totalxyz = new int[3]; double value; totalxyz[0] = max[0] - min[0]; totalxyz[1] = max[1] - min[1]; totalxyz[2] = max[2] - min[2]; for (int i = 0; i <= totalxyz[0]; i++) { for (int j = 0; j <= totalxyz[1]; j++) { for (int k = 0; k <= totalxyz[2]; k++) { //System.out.println("Index: " + (min[0] + i) + " " + (min[1] + j) + " " + (min[2] + k)); // Hmmm, I think I have to adjust indexes so origin is at 0. value = map.getValue(min[0] + i - map.aMin, min[1] + j - map.bMin, min[2] + k - map.cMin); //System.out.println(value); if (value > highValue) { highValue = value; highPoint[0] = min[0] + i; highPoint[1] = min[1] + j; highPoint[2] = min[2] + k; } } } } map.locateVertex(highPoint[0], highPoint[1], highPoint[2], highPointXYZ); } //}}} public RNATriple findCentroid(KList trackedList) { Iterator iter = trackedList.iterator(); //ArrayList dataPoints = new ArrayList(); RNATriple centroid = new RNATriple(); int size = 0; while (iter.hasNext()) { KPoint t = (KPoint) iter.next(); centroid.add(t); size++; } centroid.mult(1.0 / size); return centroid; } //{{{ highPoint //################################################### /** * Returns a clone of the double containing the high point. **/ public double[] highMapPoint() { double[] hpClone = new double[3]; hpClone[0] = highPointXYZ[0]; hpClone[1] = highPointXYZ[1]; hpClone[2] = highPointXYZ[2]; return hpClone; } //}}} //{{{ toString //################################################## /** Used for debugging mostly. **/ public String toString() { String returnString; returnString = "HighValue = " + highValue + "\n"; returnString = returnString + "x=" + highPoint[0] + ", " + "y=" + highPoint[1] + ", " + "z=" + highPoint[2]; return returnString; } //}}} } king-2.21.120420/extratools/src/king/tool/rnaxtal/RNAMapWindow.java0000644000000000000000000002700611571452344023310 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; import king.*; import king.core.*; import king.points.*; import king.tool.edmap.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.isosurface.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * EDMapWindow has controls for one * electron density map, contoured at two levels. * * Attempting to use EDMap programs as a starting point for RNA ED * analysis. VBC 27 Oct 2003. * * Controls were added to allow polypicking to be turned on and off, * and also to change the color. VBC 6 Jan 2004. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Wed Mar 5 09:00:11 EST 2003 */ public class RNAMapWindow extends EDMapWindow //implements ChangeListener, ActionListener, TransformSignalSubscriber { //{{{ Constants //DecimalFormat df1 = new DecimalFormat("0.0"); //}}} //{{{ Variable definitions //################################################################################################## /* KingMain kMain; KinCanvas kCanvas; ToolBox parent; CrystalVertexSource map; MarchingCubes mc1, mc2; //RNAMapPlotter plotter1, plotter2; EDMapPlotter plotter1, plotter2; String title; JDialog dialog; JSlider extent, slider1, slider2; JCheckBox label1, label2; JComboBox color1, color2; JButton draw, discard, export; float ctrX, ctrY, ctrZ; */ JCheckBox planePicker, polyPicker; //RNAPolygonTracker polyTracker; RNAPolyPlotter polyPlotter; RNAPlanePlotter planePlotter; JComboBox polyColor; JButton draw; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public RNAMapWindow(ToolBox parent, CrystalVertexSource map, String title) { super(parent, map, title, false); //this.parent = parent; //kMain = parent.kMain; //kCanvas = parent.kCanvas; //parent.sigTransform.subscribe(this); //this.map = map; //this.title = title; //ctrX = ctrY = ctrZ = Float.NaN; //Object mode = MarchingCubes.MODE_TRIANGLE; //plotter1 = new EDMapPlotter(false, mode); //plotter2 = new EDMapPlotter(false, mode); //polyTracker = new RNAPolygonTracker(); polyPlotter = new RNAPolyPlotter(map); planePlotter = new RNAPlanePlotter(); addToGUI(); //mc1 = new MarchingCubes(map, map, plotter1, MarchingCubes.MODE_MESH); //mc2 = new MarchingCubes(map, map, plotter2, MarchingCubes.MODE_MESH); //buildGUI(); //dialog.pack(); //dialog.setLocationRelativeTo(kMain.getTopWindow()); //dialog.setVisible(true); //System.out.println("value at 63, 56, 134 converted to ind: " + map.getValue(59, 17, 99)); } //}}} //{{{ addToGUI //################################################################################################## void addToGUI() { polyPicker = new JCheckBox("Poly Picker", true); planePicker = new JCheckBox("Plane Picker", false); polyColor = new JComboBox(kMain.getKinemage().getAllPaintMap().values().toArray()); polyColor.setSelectedItem(KPalette.gold); draw = new JButton(new ReflectiveAction("Draw perpendicular", null, this, "onDraw")); polyPicker.addActionListener(this); planePicker.addActionListener(this); polyColor.addActionListener(this); TablePane pane; if (kMain.getPrefs().getBoolean("minimizableTools")) { JFrame dial = (JFrame) dialog; pane = (TablePane)dial.getContentPane(); } else { JDialog dial = (JDialog) dialog; pane = (TablePane)dial.getContentPane(); } //TablePane pane = (TablePane) dialog.getContentPane(); pane.add(pane.strut(0,4)); pane.newRow(); pane.add(polyPicker); pane.add(polyColor); pane.newRow(); pane.add(planePicker); pane.newRow(); pane.center().hfill(true); pane.add(draw, 2, 1); if (kMain.getPrefs().getBoolean("minimizableTools")) { JFrame dial = (JFrame) dialog; dial.setContentPane(pane); } else { JDialog dial = (JDialog) dialog; dial.setContentPane(pane); } } //}}} //{{{ stateChanged, actionPerformed, calcSliderValue //################################################################################################## /* public void stateChanged(ChangeEvent ev) { double val; val = calcSliderValue(slider1); label1.setText(df1.format(val)+" sigma"); val = calcSliderValue(slider2); label2.setText(df1.format(val)+" sigma"); if(!(extent.getValueIsAdjusting())) { updateMesh(); } kCanvas.repaint(); } public void actionPerformed(ActionEvent ev) { kCanvas.repaint(); } double calcSliderValue(JSlider slider) { int i = slider.getValue(); if(-60 <= i && i <= 60) return i/10.0; else if(i > 60) return (6.0 + (i-60)*2.0); else if(i < -60) return -(6.0 + (-i-60)*2.0); else throw new Error("assertion failure"); } */ //}}} //{{{ centerChanged //################################################################################################## /** * Reports on whether the viewing center has been changed. * Has the side effect of updating the internal center to match the current view. */ /* boolean centerChanged() { KView v = kMain.getView(); if(v == null) return false; float[] ctr = v.getCenter(); boolean ret = (ctrX != ctr[0] || ctrY != ctr[1] || ctrZ != ctr[2]); ctrX = ctr[0]; ctrY = ctr[1]; ctrZ = ctr[2]; return ret; } */ //}}} //{{{ updateMesh //################################################################################################## /* void updateMesh() { if(Float.isNaN(ctrX) || Float.isNaN(ctrY) || Float.isNaN(ctrZ)) return; double val, size = extent.getValue() / 2.0; int[] corner1 = new int[3], corner2 = new int[3]; map.findVertexForPoint(ctrX-size, ctrY-size, ctrZ-size, corner1); map.findVertexForPoint(ctrX+size, ctrY+size, ctrZ+size, corner2); val = calcSliderValue(slider1); mc1.march(corner1[0], corner1[1], corner1[2], corner2[0], corner2[1], corner2[2], val*map.sigma); val = calcSliderValue(slider2); mc2.march(corner1[0], corner1[1], corner1[2], corner2[0], corner2[1], corner2[2], val*map.sigma); //SoftLog.err.println("Updated mesh: "+corner1[0]+" "+corner1[1]+" "+corner1[2]+" / "+corner2[0]+" "+corner2[1]+" "+corner2[2]); } */ //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform) { super.doTransform(engine, xform); KList list; if(centerChanged()) updateMesh(); /* list = plotter1.getList(); if(list != null && label1.isSelected()) { list.setColor((KPaint)color1.getSelectedItem()); list.doTransform(engine, xform); } list = plotter2.getList(); if(list != null && label2.isSelected()) { list.setColor((KPaint)color2.getSelectedItem()); list.doTransform(engine, xform); } */ list = polyPlotter.getList(); if (list != null && polyPicker.isSelected()) { list.setColor((KPaint)polyColor.getSelectedItem()); list.doTransform(engine, xform); } list = planePlotter.getList(); if (list != null && planePicker.isSelected()) { //list.setColor((KPaint)polyColor.getSelectedItem()); list.doTransform(engine, xform); } //SoftLog.err.println("Painted maps."); } //}}} //{{{ onMapDiscard, onMapExport //################################################################################################## public void onDraw(ActionEvent ev) { VectorPoint phos = polyPlotter.getPhosphate(); RNATriple intersect = planePlotter.getPointPlaneIntersect(phos); polyPlotter.addPoint(intersect); //updateMesh(); kCanvas.repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME /* public void onMapDiscard(ActionEvent ev) { dialog.dispose(); parent.sigTransform.unsubscribe(this); parent.activateDefaultTool(); kCanvas.repaint(); } */ // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onMapExport(ActionEvent ev) { // insert lists into kinemage super.onMapExport(ev); Kinemage kin = kMain.getKinemage(); KGroup group = null; KGroup subgroup = null; KList polyList = polyPlotter.getList(); KList planeList = planePlotter.getList(); if ((polyList != null)&&(planeList != null)) { group = new KGroup("RNA map"); kin.add(group); subgroup = new KGroup("RNA map"); subgroup.setHasButton(false); group.add(subgroup); } //list1 = plotter1.getList(); plotter1.freeList(); //list2 = plotter2.getList(); plotter2.freeList(); //polyList = polyPlotter.getList(); //planeList = planePlotter.getList(); /* if(list1 != null && label1.isSelected()) { list1.setParent(subgroup); subgroup.add(list1); } if(list2 != null && label2.isSelected()) { list2.setParent(subgroup); subgroup.add(list2); } */ if (polyList != null && polyPicker.isSelected()) { polyList.setParent(subgroup); subgroup.add(polyList); } if (planeList != null && planePicker.isSelected()) { planeList.setParent(subgroup); subgroup.add(planeList); } updateMesh(); // regenerate the meshes we just exported //kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); } //}}} public boolean polyIsSelected() { return polyPicker.isSelected(); } public boolean planeIsSelected() { return planePicker.isSelected(); } public void polyTrack(VectorPoint p) { polyPlotter.polyTrack(p); } public void planeTrack(KPoint p) { planePlotter.getPlane(p); } /***** // Old method, where the selected polygons were added directly to kinemage. // It had the strange side effect of creating highlighted lines, i.e. // the selected polyhedra had gold highlighted purple lines... public void onTracked(KList trackedList) { Kinemage kin = kMain.getKinemage(); KSubgroup subGroup; KList oldList, newList; KGroup group = new KGroup(kin, "tracker Group"); kin.add(group); subGroup = new KSubgroup(group, "tracker Subgroup"); subGroup.setHasButton(false); group.add(subGroup); trackedList.setParent(subGroup); subGroup.add(trackedList); //settID("tracking is going?"); //System.out.println("on tracking..."); kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); //kCanvas.repaint(); } ************/ //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/rnaxtal/RNAPlanePlotter.java0000644000000000000000000000421511531213010023766 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; import king.core.*; import driftwood.r3.*; import java.util.*; import java.text.DecimalFormat; //}}} /** * * * * *

Copyright (C) 2004 Vincent Chen. All rights reserved. *
Begun on Apr 09 2004. */ public class RNAPlanePlotter { //{{{ Constants DecimalFormat df2 = new DecimalFormat("0.00"); //}}} //{{{ Variable definitions //################################################################################################## KList list; //CrystalVertexSource map; //RNAPolygonTracker polyTracker; PlaneFinder basePlane; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public RNAPlanePlotter() { list = new KList(KList.TRIANGLE); list.setName("Plain"); list.setWidth(5); //list.setColor(KPalette.deadwhite); //this.map = map; //polyTracker = new RNAPolygonTracker(); //basePlane = new PlaneFinder(); } //}}} public void getPlane(KPoint p) { KList parentList = (KList) p.getParent(); list.setColor(parentList.getColor()); Iterator iter = parentList.iterator(); ArrayList data = new ArrayList(); while (iter.hasNext()) { KPoint point = (KPoint) iter.next(); data.add(point); } basePlane = new PlaneFinder(); basePlane.fitPlane(data); //basePlane.drawNormal(); basePlane.drawPlane(3); this.list = basePlane.getList(); } public void getBase(KPoint p) { } public RNATriple getNormal() { return basePlane.getNormal(); } public RNATriple getAnchor() { return basePlane.getAnchor(); } public RNATriple getPointPlaneIntersect(KPoint p) { double dist = basePlane.calcPointPlaneDistance(p); RNATriple newNormal = basePlane.getNormal().mult(-dist); return newNormal.add(p); } public KList getList() { //System.out.println("list called"); return list; } public void debug() { Iterator iter = list.iterator(); while (iter.hasNext()) { KPoint point = (KPoint) iter.next(); System.out.println(point); } } } king-2.21.120420/extratools/src/king/tool/rnaxtal/Conformer.java0000644000000000000000000003236311531213010022753 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import chiropraxis.sc.SidechainAngles2; import chiropraxis.kingtools.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.*; import driftwood.data.*; import king.tool.postkin.*; import king.core.*; //}}} /** * Conformer is a temp placeholder until I can figure out * conformer scoring. * *

Copyright (C) 2010 by Vincent B Chen. All rights reserved. *
Begun on Mon Jan 04 15:59:57 EST 2010 */ public class Conformer //extends ... implements ... { //{{{ Constants //public static final String REMOTENESS = "HC5C4C3O2C1NCO4O3P"; DecimalFormat df = new DecimalFormat("0.000"); //}}} //{{{ Variable definitions //################################################################################################## static private Conformer instance = null; /** Maps 3-letter res code to NDFT: Map */ HashMap tables; /** Maps lower case 3-letter codes to Lists of NamedConf objects */ UberMap conformerMap; /** Defines geometry (how to measure chi angles, how many, etc */ HashMap angleMap; HashMap adjacencyMap = null; HashMap mobileMap; //SidechainAngles2 scAngles2; // Used for working calculations Transform rot = new Transform(); //}}} //{{{ getInstance, freeInstance //################################################################################################## /** * Retrieves the current Conformer instance, or * creates it and loads the data tables from disk * if (1) this method has never been called before * or (2) this method has not been called since * freeInstance() was last called. * If creation fails due to missing resource data, * an IOException will be thrown. * @throws IOException if a Conformer instance could not be created */ static public Conformer getInstance() throws IOException { if(instance != null) return instance; else return (instance = new Conformer()); } /** * Frees the internal reference to the allocated Conformer object. * It will be GC'ed when all references to it expire. * Future calls to getInstance() will allocate a new Conformer object. * This function allows sneaky users to have more than one Conformer * object in memory at once. This is generally a bad idea, as they're * really big, but we won't stop you if you're sure that's what you want. */ static public void freeInstance() { instance = null; } //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @throws IOException if the needed resource(s) can't be loaded from the JAR file * @throws NoSuchElementException if the resource is missing a required entry */ private Conformer() throws IOException { conformerMap = new UberMap(); loadConformerData(); //loadConformerNames(); //this.scAngles2 = new SidechainAngles2(); } //}}} /* //{{{ loadTablesFromJar //################################################################################################## private void loadTablesFromJar() throws IOException { tables = new HashMap(30); NDFloatTable ndft; tables.put("ser", loadTable("rota/ser.ndft")); tables.put("thr", loadTable("rota/thr.ndft")); tables.put("cys", loadTable("rota/cys.ndft")); tables.put("val", loadTable("rota/val.ndft")); tables.put("pro", loadTable("rota/pro.ndft")); tables.put("leu", loadTable("rota/leu.ndft")); tables.put("ile", loadTable("rota/ile.ndft")); tables.put("trp", loadTable("rota/trp.ndft")); tables.put("asp", loadTable("rota/asp.ndft")); tables.put("asn", loadTable("rota/asn.ndft")); tables.put("his", loadTable("rota/his.ndft")); ndft = loadTable("rota/phetyr.ndft"); tables.put("phe", ndft); tables.put("tyr", ndft); ndft = loadTable("rota/met.ndft"); tables.put("met", ndft); tables.put("mse", ndft); // seleno-Met tables.put("glu", loadTable("rota/glu.ndft")); tables.put("gln", loadTable("rota/gln.ndft")); tables.put("lys", loadTable("rota/lys.ndft")); tables.put("arg", loadTable("rota/arg.ndft")); } private NDFloatTable loadTable(String path) throws IOException { InputStream is = this.getClass().getResourceAsStream(path); if(is == null) throw new IOException("Missing resource"); DataInputStream dis = new DataInputStream(new BufferedInputStream(is)); NDFloatTable tab = new NDFloatTable(dis); dis.close(); return tab; } //}}} */ //{{{ loadConformerData //################################################################################################## private void loadConformerData() throws IOException { //conformer file should have the following columns: // |--------------------averages----------------------------------------|-----------------sigmas---------------------------------------| //bin,name,chi-1,delta-1,beta-1,gamma-1,epsilon,zeta,alpha,beta,gamma,delta,chi,chi-1,del-1,beta-1,gamma-1,epsil,zeta,alpha,beta,gam,delta,chi //Note that some of the confs (especially wannabes) don't have chi data InputStream is = this.getClass().getResourceAsStream("rnaclusters070506.csv"); if(is == null) throw new IOException("File not found in JAR: rnaclusters070506.csv"); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line; while ((line = reader.readLine())!= null) { if (!line.startsWith("#")) { String[] split = Strings.explode(line, ',', true, false); String bin = split[0]; String confName = split[1]; String[] avgs = new String[11]; String[] sigma = new String[11]; System.arraycopy(split, 2, avgs, 0, 11); System.arraycopy(split, 13, sigma, 0, 11); //System.out.println(Arrays.toString(avgs)); //System.out.println(Arrays.toString(sigma)); double[] avgDoubles = Strings.arrayToDouble(avgs); double[] sigDoubles = Strings.arrayToDouble(sigma); NamedConf conf = new NamedConf(bin, confName, avgDoubles, sigDoubles); conformerMap.put(confName, conf); //System.out.print("avgs:"); //for (String s : avgs) {System.out.print(s+",");} //System.out.println(); //System.out.print("sigmas"); //for (String s : sigma) {System.out.print(s+",");} //System.out.println(); } } } //}}} //{{{ CLASS: NamedConf //################################################################################################## private static class NamedConf { String bin; String name; double[] bounds; double[] means; public NamedConf(String bin, String name, double[] avgs, double[] sigmas) { this.bin = bin; this.name = name; this.means = avgs; bounds = new double[avgs.length*2]; for(int i = 0; i < avgs.length; i+=2) { if (sigmas[i/2] == Double.NaN) bounds[i] = Double.NaN; else { bounds[i] = avgs[i/2]-sigmas[i/2]; //lower bound bounds[i+1] = avgs[i/2]+sigmas[i/2]; //upper bound } } } // assumes input angles have already been wrapped public boolean contains(double[] ang) { for(int i = 0; i < bounds.length; i+=2) { int ii = i / 2; if(ang[ii] < bounds[i] || ang[ii] > bounds[i+1]) return false; } return true; } public String getBin() { return bin.substring(0, 2); } public String getName() { return name; } public double[] getMeans() { return means; } } //}}} //{{{ getDefinedConformerNames public String[] getDefinedConformerNames() { Collection conformerSet = conformerMap.values(); String[] confNames = new String[conformerSet.size()]; int i = 0; Iterator iter = conformerSet.iterator(); while (iter.hasNext()) { confNames[i] = ((NamedConf)iter.next()).getName(); i++; } return confNames; } //}}} //{{{ getConformerBin public String getConformerBin(String confName) { if (!conformerMap.containsKey(confName)) return null; NamedConf conf = (NamedConf)conformerMap.get(confName); return conf.getBin(); } //}}} //{{{ getMeanValues public double[] getMeanValues(String confName) { if (!conformerMap.containsKey(confName)) return null; NamedConf conf = (NamedConf)conformerMap.get(confName); return conf.getMeans(); } //}}} //{{{ identify //################################################################################################## /** * Names the specified sidechain rotamer according to the conventions in the * Penultimate Conformer Library. Returns null if the conformation can't be named. * This is ONLY meaningful if evaluate() returns >= 0.01 for the given conformation. * * @throws IllegalArgumentException if the residue type is unknown * @throws AtomException atoms or states are missing */ public String identify(Residue res, ModelState state) { //return identify(res.getName(), scAngles2.measureChiAngles(res, state)); return "conf name"; } /** * Names the specified sidechain rotamer according to the conventions in the * Penultimate Conformer Library. Returns null if the conformation can't be named. * This is ONLY meaningful if evaluate() returns >= 0.01 for the given conformation. * * @throws IllegalArgumentException if the residue type is unknown */ public String identify(String rescode, double[] chiAngles) { //rescode = rescode.toLowerCase(); //for(int i = 0; i < chiAngles.length; i++) //{ // chiAngles[i] = chiAngles[i] % 360; // if(chiAngles[i] < 0) chiAngles[i] += 360; //} //// for these residues, the last chi angle is only 0 - 180 //if("asp".equals(rescode) || "glu".equals(rescode) || "phe".equals(rescode) || "tyr".equals(rescode)) //{ // int i = chiAngles.length - 1; // chiAngles[i] = chiAngles[i] % 180; // if(chiAngles[i] < 0) chiAngles[i] += 180; //} // //Collection tbl = (Collection) names.get(rescode); //if(tbl == null) // throw new IllegalArgumentException("Unknown residue type"); //if(chiAngles == null) // throw new IllegalArgumentException("No chi angles supplied"); ////if(chiAngles.length < ndft.getDimensions()) //// throw new IllegalArgumentException("Too few chi angles supplied"); //for(int i = 0; i < chiAngles.length; i++) if(Double.isNaN(chiAngles[i])) // throw new IllegalArgumentException("Some chi angles could not be measured"); // //for(Iterator iter = tbl.iterator(); iter.hasNext(); ) //{ // NamedConf nr = (NamedConf) iter.next(); // if(nr.contains(chiAngles)) return nr.getName(); //} //return null; return "conf name"; } //}}} //{{{ evaluate //################################################################################################## /** * Evaluates the specified rotamer from 0.0 (worst) * to 1.0 (best). * @throws IllegalArgumentException if the residue type is unknown * @throws AtomException atoms or states are missing */ public double evaluate(Residue res1, Residue res2, ModelState state) { return 100; } /** * Evaluates the specified rotamer from 0.0 (worst) * to 1.0 (best). * @throws IllegalArgumentException if the residue type is unknown */ public double evaluate(String rescode, double[] chiAngles) { //rescode = rescode.toLowerCase(); //NDFloatTable ndft = (NDFloatTable)tables.get(rescode); //if(ndft == null) // throw new IllegalArgumentException("Unknown residue type"); //if(chiAngles == null) // throw new IllegalArgumentException("No chi angles supplied"); //if(chiAngles.length < ndft.getDimensions()) // throw new IllegalArgumentException("Too few chi angles supplied"); //for(int i = 0; i < chiAngles.length; i++) if(Double.isNaN(chiAngles[i])) // throw new IllegalArgumentException("Some chi angles could not be measured"); // //float[] chis = new float[ chiAngles.length ]; //for(int i = 0; i < chis.length; i++) chis[i] = (float)chiAngles[i]; //return ndft.valueAt(chis); return 100; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/rnaxtal/ConformerAngles.java0000644000000000000000000013470111531213010024104 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import chiropraxis.sc.SidechainAngles2; import chiropraxis.kingtools.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.*; import king.tool.postkin.*; import king.core.*; //}}} /** * ConformerAngles is a temp placeholder until I can figure out * conformer scoring. * *

Copyright (C) 2010 by Vincent B Chen. All rights reserved. *
Begun on Mon Jan 04 15:59:57 EST 2010 */ public class ConformerAngles //extends ... implements ... { //{{{ Constants //public static final String REMOTENESS = "HC5C4C3O2C1NCO4O3P"; DecimalFormat df = new DecimalFormat("0.000"); //}}} //{{{ Variable definitions //################################################################################################## static private ConformerAngles instance = null; /** Maps 3-letter res code to NDFT: Map */ HashMap tables; /** Maps lower case 3-letter codes to Lists of NamedRot objects */ HashMap names; /** Defines geometry (how to measure chi angles, how many, etc */ HashMap angleMap; HashMap adjacencyMap = null; HashMap mobileMap; HashMap boundsMap; //SidechainAngles2 scAngles2; // Used for working calculations Transform rot = new Transform(); //}}} //{{{ getInstance, freeInstance //################################################################################################## /** * Retrieves the current ConformerAngles instance, or * creates it and loads the data tables from disk * if (1) this method has never been called before * or (2) this method has not been called since * freeInstance() was last called. * If creation fails due to missing resource data, * an IOException will be thrown. * @throws IOException if a ConformerAngles instance could not be created */ static public ConformerAngles getInstance() throws IOException { if(instance != null) return instance; else return (instance = new ConformerAngles()); } /** * Frees the internal reference to the allocated ConformerAngles object. * It will be GC'ed when all references to it expire. * Future calls to getInstance() will allocate a new ConformerAngles object. * This function allows sneaky users to have more than one ConformerAngles * object in memory at once. This is generally a bad idea, as they're * really big, but we won't stop you if you're sure that's what you want. */ static public void freeInstance() { instance = null; } //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @throws IOException if the needed resource(s) can't be loaded from the JAR file * @throws NoSuchElementException if the resource is missing a required entry */ public ConformerAngles() throws IOException { //loadTablesFromJar(); //loadConformerAnglesNames(); //this.scAngles2 = new SidechainAngles2(); String[] chi_pyr = {" O4'", " C1'", " N1 ", " C2 "}; String[] chi_pur = {" O4'", " C1'", " N9 ", " C4 "}; //String[] delta_1 = {" C5'", " C4'", " C3'", " O3'"}; //String[] epsilon_1 = {" C4'", " C3'", " O3'", " P "}; //String[] zeta_1 = {" C3'", " O3'", " P ", " O5'"}; // these are backwards to reverse the rotation to go up the chain String[] beta_1 = {" C4'", " C5'", " O5'", " P "}; String[] gamma_1 = {" C3'", " C4'", " C5'", " O5'"}; String[] delta_1 = {" O3'", " C3'", " C4'", " C5'"}; String[] epsilon = {" P ", " O3'", " C3'", " C4'"}; String[] zeta = {" O5'", " P ", " O3'", " C3'"}; String[] alpha = {" O3'", " P ", " O5'", " C5'"}; String[] beta = {" P ", " O5'", " C5'", " C4'"}; String[] gamma = {" O5'", " C5'", " C4'", " C3'"}; String[] delta = {" C5'", " C4'", " C3'", " O3'"}; angleMap = new HashMap(); angleMap.put("chi-u", chi_pyr); angleMap.put("chi-c", chi_pyr); angleMap.put("chi-a", chi_pur); angleMap.put("chi-g", chi_pur); angleMap.put("chi-pur", chi_pur); angleMap.put("chi-pyr", chi_pyr); angleMap.put("beta-1", beta_1); angleMap.put("gamma-1", gamma_1); angleMap.put("delta-1", delta_1); angleMap.put("epsilon", epsilon); angleMap.put("zeta", zeta); angleMap.put("alpha", alpha); angleMap.put("beta", beta); angleMap.put("gamma", gamma); angleMap.put("delta", delta); adjacencyMap = null; double[] delta_bounds = {70, 93, 136, 155}; double[] epsilon_bounds = {188, 273}; double[] zeta_bounds = {48, 106, 155, 187, 206, 217, 230, 245, 250, 318}; double[] alpha_bounds = {45, 87, 134, 188, 245, 323}; double[] beta_bounds = {132, 235}; double[] gamma_bounds = {30, 80, 157, 197}; double[] chi_bounds = {170, 260}; boundsMap = new HashMap(); boundsMap.put("chi", chi_bounds); boundsMap.put("epsilon", epsilon_bounds); boundsMap.put("zeta", zeta_bounds); boundsMap.put("alpha", alpha_bounds); boundsMap.put("beta", beta_bounds); boundsMap.put("gamma", gamma_bounds); boundsMap.put("delta", delta_bounds); } //}}} //{{{ getAngleNames public String[] getAngleNames() { String[] names = {"chi-1", "beta-1", "gamma-1", "delta-1", "epsilon", "zeta", "alpha", "beta", "gamma", "delta", "chi"}; return names; } //}}} //{{{ getBounds public double[] getBounds(String name) { if (boundsMap.containsKey(name)) { return (double[])boundsMap.get(name); } return null; } //}}} //{{{ measureAllAngles public double[] measureAllAngles(Residue first, Residue sec, ModelState state) { return measureAllAngles(first, sec, state, false); } public double[] measureAllAngles(Residue first, Residue sec, ModelState state, boolean newAdjMap) { if (newAdjMap) adjacencyMap = null; HashMap atomStates = new HashMap(); try { setAdjacency(first, sec, state); mapAtomStates(first, state, atomStates); mapAtomStates(sec, state, atomStates); } catch (AtomException ae) { ae.printStackTrace(); } //HashSet mobile = ConnectivityFinder.mobilityFinder(a2, a3, adjacencyMap, atomStates); mobileMap = new HashMap(); String[] angles = getAngleNames(); double[] values = new double[angles.length]; for (int i = 0; i < angles.length; i++) { try { values[i] = measureAngle(angles[i], first, sec, state); AtomState[] as = getAngleAtomStates(angles[i], first, sec, state); AtomState a2, a3; a2 = as[1]; a3 = as[2]; HashSet mobile = ConnectivityFinder.mobilityFinder(a2, a3, adjacencyMap, atomStates); //System.out.println(mobile); mobileMap.put(angles[i], mobile); } catch (AtomException ae) { values[i] = Double.NaN; } } return values; } //}}} //{{{ measureAngle public double measureAngle(String angleName, Residue first, Residue sec, ModelState state) throws AtomException { AtomState[] as = getAngleAtomStates(angleName, first, sec, state); return Triple.dihedral(as[0], as[1], as[2], as[3]); } //}}} //{{{ getAngleAtomStates public AtomState[] getAngleAtomStates(String angleName, Residue res1, Residue res2, ModelState state) throws AtomException { //System.out.println(angleName); String[] atomNames = null; if (angleName.indexOf("chi")>-1) { Residue testRes = res2; if (angleName.endsWith("-1")) testRes = res1; String resName = "chi-"+testRes.getName().trim().toLowerCase(); if (angleMap.containsKey(resName)) { atomNames = (String[]) angleMap.get(resName); } else if ((testRes.getAtom(" N9 ")!=null)&&(testRes.getAtom(" C4 ")!=null)) { atomNames = (String[]) angleMap.get("chi-pur"); } else if ((testRes.getAtom(" N1 ")!=null)&&(testRes.getAtom(" C2 ")!=null)) { atomNames = (String[]) angleMap.get("chi-pyr"); } else { throw new AtomException("Chi atom names were not found in the residues in this suite; does it have nonstandard residue names?"); } } else { atomNames = (String[]) angleMap.get(angleName); } AtomState[] states = new AtomState[4]; for (int i = 0; i < 4; i++) { String s = atomNames[i]; //if (s.equals(" P ")||(s.equals(" O5'"))) { // states[i] = state.get(res2.getAtom(s)); //} else if (angleName.endsWith("-1")) { if (angleName.endsWith("-1")) { states[i] = state.get(res1.getAtom(s)); } else if (angleName.equals("alpha")||angleName.equals("epsilon")||angleName.equals("zeta")) { //since these have atoms from both res if (s.equals(" O3'")||s.equals(" C3'")||s.equals(" C4'")) { states[i] = state.get(res1.getAtom(s)); //O3' from first residue } else { states[i] = state.get(res2.getAtom(s)); //C5' from second res } } else { states[i] = state.get(res2.getAtom(s)); } } return states; } //}}} //{{{ setAngle //################################################################################################## /** * Adjusts the model such that the appropriate atoms * are rotated about the named angle axis. * Sets the angle to some absolute value in degrees. * Use measureAngle() to learn the initial value, if needed. * @return a modified ModelState (input state is not changed) * @throws IllegalArgumentException if operation cannot succeed * @throws AtomException if required atoms are missing */ public ModelState setAngle(String angleName, Residue res1, Residue res2, ModelState state, double endAngle) throws AtomException { AtomState[] as = getAngleAtomStates(angleName, res1, res2, state); AtomState a1, a2, a3, a4; a1 = as[0]; a2 = as[1]; a3 = as[2]; a4 = as[3]; double startAngle = Triple.dihedral(a1, a2, a3, a4); double dTheta = endAngle - startAngle; rot.likeRotation(a2, a3, dTheta); ModelState ms = new ModelState(state); HashSet mobile = (HashSet) mobileMap.get(angleName); //System.out.println(mobile.size()); //HashMap atomStates = new HashMap(); //mapAtomStates(res1, state, atomStates); //mapAtomStates(res2, state, atomStates); //HashSet mobile = ConnectivityFinder.mobilityFinder(a2, a3, adjacencyMap, atomStates); ArrayList allAtoms = new ArrayList(res1.getAtoms()); allAtoms.addAll(res2.getAtoms()); // boolean atomFound = false; for(Iterator iter = allAtoms.iterator(); iter.hasNext(); ) { Atom atom = (Atom)iter.next(); //System.out.println(atom.toString()+" being tested"); a1 = state.get(atom); a2 = (AtomState)a1.clone(); //if( areParentAndChild(a3.getAtom(), atom) ) // if (a4.equals(a1)) atomFound = !atomFound; // this assumes that atoms come in the proper order along the backbone... //System.out.println(a1); if (mobile.contains(atom)) { rot.transform(a2); ms.add(a2); } } return ms; } //}}} //{{{ setAllAngles public ModelState setAllAngles(Residue res1, Residue res2, ModelState state, double[] values) { String rescode = res1.getName().toLowerCase(); String[] angles = getAngleNames(); if(angles == null) throw new IllegalArgumentException("Unknown residue type"); if(values.length < angles.length) throw new IllegalArgumentException("Not enough angles specified"); for(int i = 0; i < angles.length; i++) { if(!Double.isNaN(values[i])) { try { state = setAngle(angles[i], res1, res2, state, values[i]); } catch(IllegalArgumentException ex) { ex.printStackTrace(SoftLog.err); } catch(AtomException ex) { ex.printStackTrace(SoftLog.err); } } } return state; } //}}} //{{{ setAdjacency public void setAdjacency(Residue res1, Residue res2, ModelState state) { if (adjacencyMap != null) return; Model tempModel = new Model("temp"); try { tempModel.add(res1); tempModel.add(res2); } catch (ResidueException re) {/*shouldn't happen*/} ArrayList list = new ArrayList(); list.add(res1); list.add(res2); Kinemage kin = ModelPlotter.buildKinObject(tempModel, list, state); adjacencyMap = new HashMap(); ConnectivityFinder.buildAdjacencyMap(kin, true, adjacencyMap); } //}}} //{{{ mapAtomStates public void mapAtomStates(Residue res, ModelState state, HashMap map) throws AtomException { ArrayList allAtoms = new ArrayList(res.getAtoms()); for(Iterator iter = allAtoms.iterator(); iter.hasNext(); ) { Atom atom = (Atom)iter.next(); //System.out.println(atom.toString()+" being tested"); AtomState a1 = state.get(atom); Triple a1Trip = new Triple(a1); map.put(a1Trip.format(df), a1); } } //}}} //{{{ dumpConformerAnglesNames //public String dumpConformerAnglesNames() { // String allConformerAnglesNames = ""; // loadConformerAnglesNames(); // Iterator keys = names.keySet().iterator(); // while (keys.hasNext()) { // String resName = (String) keys.next(); // ArrayList rotaList = (ArrayList) names.get(resName); // Iterator namedRots = rotaList.iterator(); // while (namedRots.hasNext()) { // NamedRot rot = (NamedRot) namedRots.next(); // String bounds = Arrays.toString(rot.bounds); // allConformerAnglesNames = allConformerAnglesNames+resName+" "+rot.getName()+"="+bounds.substring(1, bounds.length()-1)+"\n"; // } // } // return allConformerAnglesNames; //} //}}} /* //{{{ loadTablesFromJar //################################################################################################## private void loadTablesFromJar() throws IOException { tables = new HashMap(30); NDFloatTable ndft; tables.put("ser", loadTable("rota/ser.ndft")); tables.put("thr", loadTable("rota/thr.ndft")); tables.put("cys", loadTable("rota/cys.ndft")); tables.put("val", loadTable("rota/val.ndft")); tables.put("pro", loadTable("rota/pro.ndft")); tables.put("leu", loadTable("rota/leu.ndft")); tables.put("ile", loadTable("rota/ile.ndft")); tables.put("trp", loadTable("rota/trp.ndft")); tables.put("asp", loadTable("rota/asp.ndft")); tables.put("asn", loadTable("rota/asn.ndft")); tables.put("his", loadTable("rota/his.ndft")); ndft = loadTable("rota/phetyr.ndft"); tables.put("phe", ndft); tables.put("tyr", ndft); ndft = loadTable("rota/met.ndft"); tables.put("met", ndft); tables.put("mse", ndft); // seleno-Met tables.put("glu", loadTable("rota/glu.ndft")); tables.put("gln", loadTable("rota/gln.ndft")); tables.put("lys", loadTable("rota/lys.ndft")); tables.put("arg", loadTable("rota/arg.ndft")); } private NDFloatTable loadTable(String path) throws IOException { InputStream is = this.getClass().getResourceAsStream(path); if(is == null) throw new IOException("Missing resource"); DataInputStream dis = new DataInputStream(new BufferedInputStream(is)); NDFloatTable tab = new NDFloatTable(dis); dis.close(); return tab; } //}}} //{{{ loadConformerAnglesNames //################################################################################################## private void loadConformerAnglesNames() { // These bins are often WAY too big -- the point is to partition space first, // and use the empirical distributions to decide if it's valid or not. // Box boundaries are inclusive, so a point on the border could go either way. // In those cases, though, it really doesn't matter, so it can be arbitrary. // All boundaries are on a non-cyclic 0-360 or 0-180 grid. // Some rotamers need more than one box to account for this. // Boundaries were determined by hand by IWD while looking at kins labeled // by an automatic hill-climbing algorithm. // name min1 max1 min2 max2 ... this.names = new HashMap(); ArrayList tbl; // thr, val, ser, cys // val has weird "extra" peaks above 1%: 125-135 and 345-360 tbl = new ArrayList(); tbl.add(new NamedRot("p", new int[] {0, 120})); tbl.add(new NamedRot("t", new int[] {120, 240})); tbl.add(new NamedRot("m", new int[] {240, 360})); names.put("thr", tbl); names.put("val", tbl); names.put("ser", tbl); names.put("cys", tbl); // pro tbl = new ArrayList(); tbl.add(new NamedRot("Cg_endo", new int[] {0, 180})); tbl.add(new NamedRot("Cg_exo", new int[] {180, 360})); names.put("pro", tbl); // phe, tyr tbl = new ArrayList(); tbl.add(new NamedRot("p90", new int[] {0, 120, 0, 180})); tbl.add(new NamedRot("t80", new int[] {120, 240, 0, 180})); tbl.add(new NamedRot("m-85", new int[] {240, 360, 35, 150})); tbl.add(new NamedRot("m-30", new int[] {240, 360, 0, 35})); tbl.add(new NamedRot("m-30", new int[] {240, 360, 150, 180})); names.put("phe", tbl); names.put("tyr", tbl); // trp tbl = new ArrayList(); tbl.add(new NamedRot("p-90", new int[] {0, 120, 180, 360})); tbl.add(new NamedRot("p90", new int[] {0, 120, 0, 180})); tbl.add(new NamedRot("t-105", new int[] {120, 240, 180, 305})); tbl.add(new NamedRot("t90", new int[] {120, 240, 0, 180})); tbl.add(new NamedRot("t90", new int[] {120, 240, 305, 360})); tbl.add(new NamedRot("m-90", new int[] {240, 360, 180, 305})); tbl.add(new NamedRot("m0", new int[] {240, 360, 305, 360})); tbl.add(new NamedRot("m0", new int[] {240, 360, 0, 45})); tbl.add(new NamedRot("m95", new int[] {240, 360, 45, 180})); names.put("trp", tbl); // his tbl = new ArrayList(); tbl.add(new NamedRot("p-80", new int[] {0, 120, 180, 360})); tbl.add(new NamedRot("p80", new int[] {0, 120, 0, 180})); tbl.add(new NamedRot("t-160", new int[] {120, 240, 130, 225})); tbl.add(new NamedRot("t-80", new int[] {120, 240, 225, 360})); tbl.add(new NamedRot("t60", new int[] {120, 240, 0, 130})); tbl.add(new NamedRot("m-70", new int[] {240, 360, 225, 360})); tbl.add(new NamedRot("m-70", new int[] {240, 360, 0, 20})); tbl.add(new NamedRot("m170", new int[] {240, 360, 130, 225})); tbl.add(new NamedRot("m80", new int[] {240, 360, 20, 130})); names.put("his", tbl); // leu tbl = new ArrayList(); tbl.add(new NamedRot("pp", new int[] {0, 120, 0, 120})); tbl.add(new NamedRot("pt?", new int[] {0, 120, 120, 240})); tbl.add(new NamedRot("tp", new int[] {120, 240, 0, 120})); tbl.add(new NamedRot("tt", new int[] {120, 240, 120, 240})); tbl.add(new NamedRot("tm?", new int[] {120, 240, 240, 360})); tbl.add(new NamedRot("mp", new int[] {240, 360, 0, 120})); tbl.add(new NamedRot("mt", new int[] {240, 360, 120, 240})); tbl.add(new NamedRot("mm?", new int[] {240, 360, 240, 360})); names.put("leu", tbl); // ile tbl = new ArrayList(); tbl.add(new NamedRot("pp", new int[] {0, 120, 0, 120})); tbl.add(new NamedRot("pt", new int[] {0, 120, 120, 240})); tbl.add(new NamedRot("tp", new int[] {120, 240, 0, 120})); tbl.add(new NamedRot("tt", new int[] {120, 240, 120, 240})); tbl.add(new NamedRot("tm?", new int[] {120, 240, 240, 360})); tbl.add(new NamedRot("mp", new int[] {240, 360, 0, 120})); tbl.add(new NamedRot("mt", new int[] {240, 360, 120, 240})); tbl.add(new NamedRot("mm", new int[] {240, 360, 240, 360})); names.put("ile", tbl); // asn tbl = new ArrayList(); tbl.add(new NamedRot("p-10", new int[] {0, 120, 180, 360})); tbl.add(new NamedRot("p30", new int[] {0, 120, 0, 180})); tbl.add(new NamedRot("t-20", new int[] {120, 240, 180, 360})); tbl.add(new NamedRot("t-20", new int[] {120, 240, 0, 10})); tbl.add(new NamedRot("t30", new int[] {120, 240, 10, 180})); tbl.add(new NamedRot("m-20", new int[] {240, 360, 300, 360})); tbl.add(new NamedRot("m-20", new int[] {240, 360, 0, 40})); tbl.add(new NamedRot("m-80", new int[] {240, 360, 200, 300})); tbl.add(new NamedRot("m120", new int[] {240, 360, 40, 200})); names.put("asn", tbl); // asp tbl = new ArrayList(); tbl.add(new NamedRot("p-10", new int[] {0, 120, 90, 180})); tbl.add(new NamedRot("p30", new int[] {0, 120, 0, 90})); tbl.add(new NamedRot("t0", new int[] {120, 240, 0, 45})); tbl.add(new NamedRot("t0", new int[] {120, 240, 120, 180})); tbl.add(new NamedRot("t70", new int[] {120, 240, 45, 120})); tbl.add(new NamedRot("m-20", new int[] {240, 360, 0, 180})); names.put("asp", tbl); // gln tbl = new ArrayList(); tbl.add(new NamedRot("pt20", new int[] {0, 120, 120, 240, 0, 360})); tbl.add(new NamedRot("pm0", new int[] {0, 120, 240, 360, 0, 360})); tbl.add(new NamedRot("pp0?", new int[] {0, 120, 0, 120, 0, 360})); tbl.add(new NamedRot("tp-100", new int[] {120, 240, 0, 120, 150, 300})); tbl.add(new NamedRot("tp60", new int[] {120, 240, 0, 120, 0, 150})); tbl.add(new NamedRot("tp60", new int[] {120, 240, 0, 120, 300, 360})); tbl.add(new NamedRot("tt0", new int[] {120, 240, 120, 240, 0, 360})); tbl.add(new NamedRot("tm0?", new int[] {120, 240, 240, 360, 0, 360})); tbl.add(new NamedRot("mp0", new int[] {240, 360, 0, 120, 0, 360})); tbl.add(new NamedRot("mt-30", new int[] {240, 360, 120, 240, 0, 360})); tbl.add(new NamedRot("mm-40", new int[] {240, 360, 240, 360, 0, 60})); tbl.add(new NamedRot("mm-40", new int[] {240, 360, 240, 360, 210, 360})); tbl.add(new NamedRot("mm100", new int[] {240, 360, 240, 360, 60, 210})); names.put("gln", tbl); // glu tbl = new ArrayList(); tbl.add(new NamedRot("pp20?", new int[] {0, 120, 0, 120, 0, 180})); tbl.add(new NamedRot("pt-20", new int[] {0, 120, 120, 240, 0, 180})); tbl.add(new NamedRot("pm0", new int[] {0, 120, 240, 360, 0, 180})); tbl.add(new NamedRot("tp10", new int[] {120, 240, 0, 120, 0, 180})); tbl.add(new NamedRot("tt0", new int[] {120, 240, 120, 240, 0, 180})); tbl.add(new NamedRot("tm-20", new int[] {120, 240, 240, 360, 0, 180})); tbl.add(new NamedRot("mp0", new int[] {240, 360, 0, 120, 0, 180})); tbl.add(new NamedRot("mt-10", new int[] {240, 360, 120, 240, 0, 180})); tbl.add(new NamedRot("mm-40", new int[] {240, 360, 240, 360, 0, 180})); names.put("glu", tbl); // met (mmt and tpt maybe two peaks each) tbl = new ArrayList(); tbl.add(new NamedRot("ppp?", new int[] {0, 120, 0, 120, 0, 120})); tbl.add(new NamedRot("ptp", new int[] {0, 120, 120, 240, 0, 120})); tbl.add(new NamedRot("ptt?", new int[] {0, 120, 120, 240, 120, 240})); tbl.add(new NamedRot("ptm", new int[] {0, 120, 120, 240, 240, 360})); tbl.add(new NamedRot("pmm?", new int[] {0, 120, 240, 360, 240, 360})); tbl.add(new NamedRot("tpp", new int[] {120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("tpp", new int[] {120, 240, 0, 120, 330, 360})); tbl.add(new NamedRot("tpt", new int[] {120, 240, 0, 120, 120, 330})); tbl.add(new NamedRot("ttp", new int[] {120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("ttt", new int[] {120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("ttm", new int[] {120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("tmt?", new int[] {120, 240, 240, 360, 120, 240})); tbl.add(new NamedRot("tmm?", new int[] {120, 240, 240, 360, 240, 360})); tbl.add(new NamedRot("mpp?", new int[] {240, 360, 0, 120, 0, 120})); tbl.add(new NamedRot("mpt?", new int[] {240, 360, 0, 120, 120, 240})); tbl.add(new NamedRot("mtp", new int[] {240, 360, 120, 240, 0, 120})); tbl.add(new NamedRot("mtt", new int[] {240, 360, 120, 240, 120, 240})); tbl.add(new NamedRot("mtm", new int[] {240, 360, 120, 240, 240, 360})); tbl.add(new NamedRot("mmt", new int[] {240, 360, 240, 360, 30, 240})); tbl.add(new NamedRot("mmm", new int[] {240, 360, 240, 360, 0, 30})); tbl.add(new NamedRot("mmm", new int[] {240, 360, 240, 360, 240, 360})); names.put("met", tbl); names.put("mse", tbl); // seleno-Met // lys (kept all b/c can't see 4D peaks; some never really occur) tbl = new ArrayList(); tbl.add(new NamedRot("pppp?", new int[] {0, 120, 0, 120, 0, 120, 0, 120})); tbl.add(new NamedRot("pppt?", new int[] {0, 120, 0, 120, 0, 120, 120, 240})); tbl.add(new NamedRot("pppm?", new int[] {0, 120, 0, 120, 0, 120, 240, 360})); tbl.add(new NamedRot("pptp?", new int[] {0, 120, 0, 120, 120, 240, 0, 120})); tbl.add(new NamedRot("pptt?", new int[] {0, 120, 0, 120, 120, 240, 120, 240})); tbl.add(new NamedRot("pptm?", new int[] {0, 120, 0, 120, 120, 240, 240, 360})); tbl.add(new NamedRot("ppmp?", new int[] {0, 120, 0, 120, 240, 360, 0, 120})); tbl.add(new NamedRot("ppmt?", new int[] {0, 120, 0, 120, 240, 360, 120, 240})); tbl.add(new NamedRot("ppmm?", new int[] {0, 120, 0, 120, 240, 360, 240, 360})); tbl.add(new NamedRot("ptpp?", new int[] {0, 120, 120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("ptpt", new int[] {0, 120, 120, 240, 0, 120, 120, 240})); tbl.add(new NamedRot("ptpm?", new int[] {0, 120, 120, 240, 0, 120, 240, 360})); tbl.add(new NamedRot("pttp", new int[] {0, 120, 120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("pttt", new int[] {0, 120, 120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("pttm", new int[] {0, 120, 120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("ptmp?", new int[] {0, 120, 120, 240, 240, 360, 0, 120})); tbl.add(new NamedRot("ptmt", new int[] {0, 120, 120, 240, 240, 360, 120, 240})); tbl.add(new NamedRot("ptmm?", new int[] {0, 120, 120, 240, 240, 360, 240, 360})); tbl.add(new NamedRot("pmpp?", new int[] {0, 120, 240, 360, 0, 120, 0, 120})); tbl.add(new NamedRot("pmpt?", new int[] {0, 120, 240, 360, 0, 120, 120, 240})); tbl.add(new NamedRot("pmpm?", new int[] {0, 120, 240, 360, 0, 120, 240, 360})); tbl.add(new NamedRot("pmtp?", new int[] {0, 120, 240, 360, 120, 240, 0, 120})); tbl.add(new NamedRot("pmtt?", new int[] {0, 120, 240, 360, 120, 240, 120, 240})); tbl.add(new NamedRot("pmtm?", new int[] {0, 120, 240, 360, 120, 240, 240, 360})); tbl.add(new NamedRot("pmmp?", new int[] {0, 120, 240, 360, 240, 360, 0, 120})); tbl.add(new NamedRot("pmmt?", new int[] {0, 120, 240, 360, 240, 360, 120, 240})); tbl.add(new NamedRot("pmmm?", new int[] {0, 120, 240, 360, 240, 360, 240, 360})); tbl.add(new NamedRot("tppp?", new int[] {120, 240, 0, 120, 0, 120, 0, 120})); tbl.add(new NamedRot("tppt?", new int[] {120, 240, 0, 120, 0, 120, 120, 240})); tbl.add(new NamedRot("tppm?", new int[] {120, 240, 0, 120, 0, 120, 240, 360})); tbl.add(new NamedRot("tptp", new int[] {120, 240, 0, 120, 120, 240, 0, 120})); tbl.add(new NamedRot("tptt", new int[] {120, 240, 0, 120, 120, 240, 120, 240})); tbl.add(new NamedRot("tptm", new int[] {120, 240, 0, 120, 120, 240, 240, 360})); tbl.add(new NamedRot("tpmp?", new int[] {120, 240, 0, 120, 240, 360, 0, 120})); tbl.add(new NamedRot("tpmt?", new int[] {120, 240, 0, 120, 240, 360, 120, 240})); tbl.add(new NamedRot("tpmm?", new int[] {120, 240, 0, 120, 240, 360, 240, 360})); tbl.add(new NamedRot("ttpp", new int[] {120, 240, 120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("ttpt", new int[] {120, 240, 120, 240, 0, 120, 120, 240})); tbl.add(new NamedRot("ttpm?", new int[] {120, 240, 120, 240, 0, 120, 240, 360})); tbl.add(new NamedRot("tttp", new int[] {120, 240, 120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("tttt", new int[] {120, 240, 120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("tttm", new int[] {120, 240, 120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("ttmp?", new int[] {120, 240, 120, 240, 240, 360, 0, 120})); tbl.add(new NamedRot("ttmt", new int[] {120, 240, 120, 240, 240, 360, 120, 240})); tbl.add(new NamedRot("ttmm", new int[] {120, 240, 120, 240, 240, 360, 240, 360})); tbl.add(new NamedRot("tmpp?", new int[] {120, 240, 240, 360, 0, 120, 0, 120})); tbl.add(new NamedRot("tmpt?", new int[] {120, 240, 240, 360, 0, 120, 120, 240})); tbl.add(new NamedRot("tmpm?", new int[] {120, 240, 240, 360, 0, 120, 240, 360})); tbl.add(new NamedRot("tmtp?", new int[] {120, 240, 240, 360, 120, 240, 0, 120})); tbl.add(new NamedRot("tmtt?", new int[] {120, 240, 240, 360, 120, 240, 120, 240})); tbl.add(new NamedRot("tmtm?", new int[] {120, 240, 240, 360, 120, 240, 240, 360})); tbl.add(new NamedRot("tmmp?", new int[] {120, 240, 240, 360, 240, 360, 0, 120})); tbl.add(new NamedRot("tmmt?", new int[] {120, 240, 240, 360, 240, 360, 120, 240})); tbl.add(new NamedRot("tmmm?", new int[] {120, 240, 240, 360, 240, 360, 240, 360})); tbl.add(new NamedRot("mppp?", new int[] {240, 360, 0, 120, 0, 120, 0, 120})); tbl.add(new NamedRot("mppt?", new int[] {240, 360, 0, 120, 0, 120, 120, 240})); tbl.add(new NamedRot("mppm?", new int[] {240, 360, 0, 120, 0, 120, 240, 360})); tbl.add(new NamedRot("mptp?", new int[] {240, 360, 0, 120, 120, 240, 0, 120})); tbl.add(new NamedRot("mptt", new int[] {240, 360, 0, 120, 120, 240, 120, 240})); tbl.add(new NamedRot("mptm?", new int[] {240, 360, 0, 120, 120, 240, 240, 360})); tbl.add(new NamedRot("mpmp?", new int[] {240, 360, 0, 120, 240, 360, 0, 120})); tbl.add(new NamedRot("mpmt?", new int[] {240, 360, 0, 120, 240, 360, 120, 240})); tbl.add(new NamedRot("mpmm?", new int[] {240, 360, 0, 120, 240, 360, 240, 360})); tbl.add(new NamedRot("mtpp", new int[] {240, 360, 120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("mtpt", new int[] {240, 360, 120, 240, 0, 120, 120, 240})); tbl.add(new NamedRot("mtpm?", new int[] {240, 360, 120, 240, 0, 120, 240, 360})); tbl.add(new NamedRot("mttp", new int[] {240, 360, 120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("mttt", new int[] {240, 360, 120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("mttm", new int[] {240, 360, 120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("mtmp?", new int[] {240, 360, 120, 240, 240, 360, 0, 120})); tbl.add(new NamedRot("mtmt", new int[] {240, 360, 120, 240, 240, 360, 120, 240})); tbl.add(new NamedRot("mtmm", new int[] {240, 360, 120, 240, 240, 360, 240, 360})); tbl.add(new NamedRot("mmpp?", new int[] {240, 360, 240, 360, 0, 120, 0, 120})); tbl.add(new NamedRot("mmpt?", new int[] {240, 360, 240, 360, 0, 120, 120, 240})); tbl.add(new NamedRot("mmpm?", new int[] {240, 360, 240, 360, 0, 120, 240, 360})); tbl.add(new NamedRot("mmtp", new int[] {240, 360, 240, 360, 120, 240, 0, 120})); tbl.add(new NamedRot("mmtt", new int[] {240, 360, 240, 360, 120, 240, 120, 240})); tbl.add(new NamedRot("mmtm", new int[] {240, 360, 240, 360, 120, 240, 240, 360})); tbl.add(new NamedRot("mmmp?", new int[] {240, 360, 240, 360, 240, 360, 0, 120})); tbl.add(new NamedRot("mmmt", new int[] {240, 360, 240, 360, 240, 360, 120, 240})); tbl.add(new NamedRot("mmmm", new int[] {240, 360, 240, 360, 240, 360, 240, 360})); names.put("lys", tbl); // arg (again, some entries are dummies for peaks that never occur) tbl = new ArrayList(); tbl.add(new NamedRot("ppp_?", new int[] {0, 120, 0, 120, 0, 120, 0, 360})); tbl.add(new NamedRot("ppt_?", new int[] {0, 120, 0, 120, 120, 240, 0, 360})); tbl.add(new NamedRot("ppm_?", new int[] {0, 120, 0, 120, 240, 360, 0, 360})); tbl.add(new NamedRot("ptp85", new int[] {0, 120, 120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("ptp180", new int[] {0, 120, 120, 240, 0, 120, 120, 360})); tbl.add(new NamedRot("ptt85", new int[] {0, 120, 120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("ptt180", new int[] {0, 120, 120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("ptt-85", new int[] {0, 120, 120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("ptm85", new int[] {0, 120, 120, 240, 240, 360, 0, 120})); tbl.add(new NamedRot("ptm180", new int[] {0, 120, 120, 240, 240, 360, 120, 360})); tbl.add(new NamedRot("pmp_?", new int[] {0, 120, 240, 360, 0, 120, 0, 360})); tbl.add(new NamedRot("pmt_?", new int[] {0, 120, 240, 360, 120, 240, 0, 360})); tbl.add(new NamedRot("pmm_?", new int[] {0, 120, 240, 360, 240, 360, 0, 360})); tbl.add(new NamedRot("tpp85", new int[] {120, 240, 0, 120, 0, 120, 0, 120})); tbl.add(new NamedRot("tpp180", new int[] {120, 240, 0, 120, 0, 120, 120, 360})); tbl.add(new NamedRot("tpt85", new int[] {120, 240, 0, 120, 120, 240, 0, 120})); tbl.add(new NamedRot("tpt180", new int[] {120, 240, 0, 120, 120, 240, 120, 360})); tbl.add(new NamedRot("tpm_?", new int[] {120, 240, 0, 120, 240, 360, 0, 360})); tbl.add(new NamedRot("ttp85", new int[] {120, 240, 120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("ttp180", new int[] {120, 240, 120, 240, 0, 120, 120, 240})); tbl.add(new NamedRot("ttp-105", new int[] {120, 240, 120, 240, 0, 120, 240, 360})); tbl.add(new NamedRot("ttt85", new int[] {120, 240, 120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("ttt180", new int[] {120, 240, 120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("ttt-85", new int[] {120, 240, 120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("ttm105", new int[] {120, 240, 120, 240, 240, 360, 0, 120})); tbl.add(new NamedRot("ttm180", new int[] {120, 240, 120, 240, 240, 360, 120, 240})); tbl.add(new NamedRot("ttm-85", new int[] {120, 240, 120, 240, 240, 360, 240, 360})); tbl.add(new NamedRot("tmp_?", new int[] {120, 240, 240, 360, 0, 120, 0, 360})); tbl.add(new NamedRot("tmt_?", new int[] {120, 240, 240, 360, 120, 240, 0, 360})); tbl.add(new NamedRot("tmm_?", new int[] {120, 240, 240, 360, 240, 360, 0, 360})); tbl.add(new NamedRot("mpp_?", new int[] {240, 360, 0, 120, 0, 120, 0, 360})); tbl.add(new NamedRot("mpt_?", new int[] {240, 360, 0, 120, 120, 240, 0, 360})); tbl.add(new NamedRot("mpm_?", new int[] {240, 360, 0, 120, 240, 360, 0, 360})); tbl.add(new NamedRot("mtp85", new int[] {240, 360, 120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("mtp180", new int[] {240, 360, 120, 240, 0, 120, 120, 240})); tbl.add(new NamedRot("mtp-105", new int[] {240, 360, 120, 240, 0, 120, 240, 360})); tbl.add(new NamedRot("mtt85", new int[] {240, 360, 120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("mtt180", new int[] {240, 360, 120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("mtt-85", new int[] {240, 360, 120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("mtm105", new int[] {240, 360, 120, 240, 240, 360, 0, 120})); tbl.add(new NamedRot("mtm180", new int[] {240, 360, 120, 240, 240, 360, 120, 240})); tbl.add(new NamedRot("mtm-85", new int[] {240, 360, 120, 240, 240, 360, 240, 360})); tbl.add(new NamedRot("mmp_?", new int[] {240, 360, 240, 360, 0, 120, 0, 360})); tbl.add(new NamedRot("mmt85", new int[] {240, 360, 240, 360, 120, 240, 0, 120})); tbl.add(new NamedRot("mmt180", new int[] {240, 360, 240, 360, 120, 240, 120, 240})); tbl.add(new NamedRot("mmt-85", new int[] {240, 360, 240, 360, 120, 240, 240, 360})); tbl.add(new NamedRot("mmm180", new int[] {240, 360, 240, 360, 240, 360, 0, 240})); tbl.add(new NamedRot("mmm-85", new int[] {240, 360, 240, 360, 240, 360, 240, 360})); names.put("arg", tbl); } //}}} //{{{ CLASS: NamedRot //################################################################################################## private static class NamedRot { String name; int[] bounds; public NamedRot(String name, int[] bounds) { this.name = name; this.bounds = bounds; } // assumes input angles have already been wrapped public boolean contains(double[] ang) { for(int i = 0; i < bounds.length; i+=2) { int ii = i / 2; if(ang[ii] < bounds[i] || ang[ii] > bounds[i+1]) return false; } return true; } public String getName() { return name; } } //}}} */ //{{{ identify //################################################################################################## /** * Names the specified sidechain rotamer according to the conventions in the * Penultimate ConformerAngles Library. Returns null if the conformation can't be named. * This is ONLY meaningful if evaluate() returns >= 0.01 for the given conformation. * * @throws IllegalArgumentException if the residue type is unknown * @throws AtomException atoms or states are missing */ public String identify(Residue res, ModelState state) { //return identify(res.getName(), scAngles2.measureChiAngles(res, state)); return "conf name"; } /** * Names the specified sidechain rotamer according to the conventions in the * Penultimate ConformerAngles Library. Returns null if the conformation can't be named. * This is ONLY meaningful if evaluate() returns >= 0.01 for the given conformation. * * @throws IllegalArgumentException if the residue type is unknown */ public String identify(String rescode, double[] chiAngles) { //rescode = rescode.toLowerCase(); //for(int i = 0; i < chiAngles.length; i++) //{ // chiAngles[i] = chiAngles[i] % 360; // if(chiAngles[i] < 0) chiAngles[i] += 360; //} //// for these residues, the last chi angle is only 0 - 180 //if("asp".equals(rescode) || "glu".equals(rescode) || "phe".equals(rescode) || "tyr".equals(rescode)) //{ // int i = chiAngles.length - 1; // chiAngles[i] = chiAngles[i] % 180; // if(chiAngles[i] < 0) chiAngles[i] += 180; //} // //Collection tbl = (Collection) names.get(rescode); //if(tbl == null) // throw new IllegalArgumentException("Unknown residue type"); //if(chiAngles == null) // throw new IllegalArgumentException("No chi angles supplied"); ////if(chiAngles.length < ndft.getDimensions()) //// throw new IllegalArgumentException("Too few chi angles supplied"); //for(int i = 0; i < chiAngles.length; i++) if(Double.isNaN(chiAngles[i])) // throw new IllegalArgumentException("Some chi angles could not be measured"); // //for(Iterator iter = tbl.iterator(); iter.hasNext(); ) //{ // NamedRot nr = (NamedRot) iter.next(); // if(nr.contains(chiAngles)) return nr.getName(); //} //return null; return "conf name"; } //}}} //{{{ evaluate //################################################################################################## /** * Evaluates the specified rotamer from 0.0 (worst) * to 1.0 (best). * @throws IllegalArgumentException if the residue type is unknown * @throws AtomException atoms or states are missing */ public double evaluate(Residue res1, Residue res2, ModelState state) { return 100; } /** * Evaluates the specified rotamer from 0.0 (worst) * to 1.0 (best). * @throws IllegalArgumentException if the residue type is unknown */ public double evaluate(String rescode, double[] chiAngles) { //rescode = rescode.toLowerCase(); //NDFloatTable ndft = (NDFloatTable)tables.get(rescode); //if(ndft == null) // throw new IllegalArgumentException("Unknown residue type"); //if(chiAngles == null) // throw new IllegalArgumentException("No chi angles supplied"); //if(chiAngles.length < ndft.getDimensions()) // throw new IllegalArgumentException("Too few chi angles supplied"); //for(int i = 0; i < chiAngles.length; i++) if(Double.isNaN(chiAngles[i])) // throw new IllegalArgumentException("Some chi angles could not be measured"); // //float[] chis = new float[ chiAngles.length ]; //for(int i = 0; i < chis.length; i++) chis[i] = (float)chiAngles[i]; //return ndft.valueAt(chis); return 100; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/rnaxtal/GuilloTool.java0000644000000000000000000001013111531213010023077 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; import king.*; import king.core.*; import king.points.*; import java.util.*; import java.awt.event.*; public class GuilloTool extends BasicTool { //{{{ Variable definitions //################################################################################################## ArrayList selectedPoints; PlaneFinder neckFinder; KList list; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public GuilloTool(ToolBox tb) { super(tb); selectedPoints = new ArrayList(); list = new KList(KList.TRIANGLE); list.setName("Plain"); list.setWidth(5); //list.setColor(KPalette.sky); } //}}} public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); if(p instanceof VectorPoint) { if (selectedPoints.size() > 2) { calcDirection(p); selectedPoints.clear(); } else { selectedPoints.add(p); calcPlane(); } } } public void calcPlane() { if (selectedPoints.size() > 2) { neckFinder = new PlaneFinder(); neckFinder.fitPlane(selectedPoints); //neckFinder.drawNormal(); neckFinder.drawPlane(2); this.list = neckFinder.getList(); list.setColor(KPalette.sky); Kinemage kin = kMain.getKinemage(); KGroup group = new KGroup("Neck cutoff"); group.setParent(kin); kin.add(group); KGroup subgroup = new KGroup("Neck cutoff"); subgroup.setHasButton(false); subgroup.setParent(group); group.add(subgroup); list.setParent(subgroup); subgroup.add(list); //selectedPoints.clear(); //kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); } } public void calcDirection(KPoint p) { Plane neckPlane = neckFinder.getPlane(); PolygonFinder polyTracker = new PolygonFinder(); KList parentList = (KList) p.getParent(); polyTracker.initiateMap(parentList); //polyTracker.finishMap(parentList); KList polyList = polyTracker.getPolyhedra(p); KList baseList = new KList(KList.VECTOR); baseList.setName("base"); baseList.setWidth(5); //baseList.setColor(KPalette.green); Iterator iter = polyList.iterator(); KPoint basePoint = null; KPoint point = null; while (iter.hasNext()) { point = (KPoint) iter.next(); if (neckPlane.isBelow(p)) { if (neckPlane.isBelow(point)) { KPoint prev = point.getPrev(); if (!(prev == null)) { if (!neckPlane.isBelow(prev)) { point.setPrev(null); } } //point.setColor(KPalette.green); point.setParent(baseList); baseList.add(point); if (point.equals(p)) { basePoint = point; } } } else { if (!neckPlane.isBelow(point)) { KPoint prev = point.getPrev(); if (!(prev == null)) { if (neckPlane.isBelow(prev)) { point.setPrev(null); } } //point.setColor(KPalette.green); point.setParent(baseList); baseList.add(point); if (point.equals(p)) { basePoint = point; } } } } PolygonFinder baseTracker = new PolygonFinder(); baseTracker.initiateMap(baseList); //KPoint basePoint = p.clone(); //basePoint.setParent(baseList); System.out.println(basePoint); KList base = baseTracker.getPolyhedra(basePoint); base.setName("base list"); base.setWidth(5); base.setColor(KPalette.green); base.setOn(true); Kinemage kin = kMain.getKinemage(); KGroup group = new KGroup("base"); kin.add(group); //kin.metadata.put("base group", group); KGroup subgroup = new KGroup("base"); subgroup.setHasButton(false); group.add(subgroup); //kin.metadata.put("base subgroup", subgroup); //kin.metadata.put("base list", base); subgroup.add(base); //selectedPoints.clear(); //kin.signal.signalKinemage(kin, KinemageSignal.STRUCTURE); } public void getPlane() { //System.out.println(normal.toString() + "; " + anchor.toString()); } public void clear() { selectedPoints.clear(); } public String toString() {return "Limit Bases";} } king-2.21.120420/extratools/src/king/tool/rnaxtal/RNAExtractTool.java0000644000000000000000000001776411531213010023642 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; import king.*; import king.core.*; import king.points.*; import king.tool.util.*; import java.util.*; import java.io.*; import java.awt.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.*; //}}} public class RNAExtractTool extends BasicTool { HashMap kinKeepMap; // fullName (fileName + startResidue#) -> hashset of integers to keep. //HashMap pdbMultiLoopMap; // fullName -> fileName HashMap fileMultiMap; // fileName -> list of fullNames HashMap chainMap; // fullName -> chainID JFileChooser filechooser; public RNAExtractTool(ToolBox tb) { super(tb); //buildGUI(); } public void start() { kinKeepMap = new HashMap(); fileMultiMap = new HashMap(); chainMap = new HashMap(); onOpenFile(); onDoAll(); } //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make accessory for file chooser TablePane acc = new TablePane(); // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); filechooser.setAccessory(acc); } //}}} public void onOpenFile() { if (filechooser == null) makeFileChooser(); filechooser.setFileSelectionMode(JFileChooser.FILES_ONLY); int choice = filechooser.showOpenDialog(kMain.getTopWindow()); if(JFileChooser.APPROVE_OPTION == choice) { try { File f = filechooser.getSelectedFile(); if(f != null && f.exists()) { //dialog.setTitle(f.getName()); BufferedReader reader = new BufferedReader(new FileReader(f)); String line; try { while ((line = reader.readLine())!=null) { String[] exploded = Strings.explode(line, ',', false, true); //System.out.print(exploded[0]+ " "); //System.out.println(exploded[1]+ " " + exploded[2]); String fileName = exploded[0]; fileName = fileName.toLowerCase(); HashSet value = new HashSet(); keepRange(value, Integer.parseInt(exploded[1]), Integer.parseInt(exploded[2])); int startRes = Integer.parseInt(exploded[1]); String fullName = fileName + "-" + Integer.toString(startRes); //pdbMultiLoopMap.put(fullName, fileName); ArrayList list; if (fileMultiMap.containsKey(fileName)) { list = (ArrayList) fileMultiMap.get(fileName); } else { list = new ArrayList(); fileMultiMap.put(fileName, list); } list.add(fullName); kinKeepMap.put(fullName, value); String chainID = exploded[3].toLowerCase(); chainMap.put(fullName, chainID); } } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "A read error occurred while reading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); } kCanvas.repaint(); } } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); } } if (JFileChooser.CANCEL_OPTION == choice) { parent.activateDefaultTool(); } } private void keepRange(HashSet keepSet, int firstNum, int secondNum) { for (int i = firstNum; i <= secondNum; i++) { keepSet.add(new Integer(i)); } //listModel.addElement(Integer.toString(firstNum) + " to " + Integer.toString(secondNum)); } public void onDoAll() { if (filechooser == null) makeFileChooser(); filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); int choice = filechooser.showOpenDialog(kMain.getTopWindow()); if(JFileChooser.APPROVE_OPTION == choice) { File f = filechooser.getSelectedFile(); File[] allFiles = f.listFiles(); File saveLoc = new File(f, "fragments"); //File[] allFiles = f.getParentFile().listFiles(); //File saveLoc = new File(f.getParentFile(), "fragments"); Set keys = fileMultiMap.keySet(); Iterator iter = keys.iterator(); while (iter.hasNext()) { String structName = (String) iter.next(); ArrayList fullNames = (ArrayList) fileMultiMap.get(structName); String fileName = ""; File fileToOpen = null; int i = 0; while ((fileName.indexOf(structName)==-1)&&(i < allFiles.length)) { File kinFile = allFiles[i]; String tempName = kinFile.getName().toLowerCase(); if ((tempName.indexOf(structName)>-1)&&(tempName.indexOf(".kin")>-1)) { fileName = tempName; fileToOpen = kinFile; } i++; } Iterator fullNameIter = fullNames.iterator(); while (fullNameIter.hasNext()) { String fullName = (String) fullNameIter.next(); if (fileToOpen != null) { System.out.print(fullName + " -> "); System.out.println(fileName); kMain.getKinIO().loadFile(fileToOpen, null); //System.out.println(fileToOpen.getPath()); deleteFromFile((HashSet)kinKeepMap.get(fullName), fullName); kMain.getKinIO().saveFile(new File(saveLoc, fullName + ".kin")); kMain.getTextWindow().setText(""); kMain.getStable().closeCurrent(); //System.out.print(fullName + " -> "); //System.out.println(fileName); } } } //HashMap fileMap = new HashMap(); //for (int i = 0; i < allFiles.length; i++) { // File pdbFile = allFiles[i]; // String pdbName = pdbFile.getName().toLowerCase(); // fileMap.put(pdbName, pdbFile); // gotta figure out some way to search filemap with actual file names... //System.out.println(pdbFile.getPath() + " : " + pdbName + " : " + pdbFile.getParent()); //System.out.println(pdbKeepMap.containsKey(pdbName.toLowerCase())); } if (JFileChooser.CANCEL_OPTION == choice) { parent.activateDefaultTool(); } } public void deleteFromFile(HashSet keepSet, String fullName) { delete(kMain.getKinemage(), keepSet, (String) chainMap.get(fullName)); rename(kMain.getKinemage(), fullName); kCanvas.repaint(); } private void delete(AGE target, HashSet keepSet, String chainID) { if (target instanceof Kinemage) { if (target != null) ((Kinemage)target).setModified(true); } if (target instanceof KList) { Iterator iter = target.iterator(); while (iter.hasNext()) { KPoint pt = (KPoint) iter.next(); int resNum = KinUtil.getResNumber(pt); String ptChain = KinUtil.getChainID(pt).toLowerCase(); if ((!keepSet.contains(new Integer(resNum)))||(!chainID.equals(ptChain))) { iter.remove(); } else if ((keepSet.contains(new Integer(resNum)))&&(!keepSet.contains(new Integer(resNum-1)))) { if (pt instanceof VectorPoint) { VectorPoint vpoint = (VectorPoint) pt; KPoint prev = vpoint.getPrev(); if (prev instanceof KPoint) { if (!keepSet.contains(new Integer(KinUtil.getResNumber(prev)))) { vpoint.setPrev(null); } } } } } } else { //System.out.println(target.toString()); Iterator iter = target.iterator(); while (iter.hasNext()) { delete((AGE)iter.next(), keepSet, chainID); } } } private void rename(AGE target, String addOn) { if (target instanceof KList) { Iterator iter = target.iterator(); while (iter.hasNext()) { KPoint pt = (KPoint) iter.next(); pt.setName(pt.getName() + " " + addOn); //int resNum = KinUtil.getResNumber(pt); //if (colorSet.contains(new Integer(resNum))) { // pt.setColor(color); //} } } else { Iterator iter = target.iterator(); while (iter.hasNext()) { rename((AGE)iter.next(), addOn); } } } //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return null; } public String toString() { return "RNA Extract Tool"; } } king-2.21.120420/extratools/src/king/tool/rnaxtal/RnaRotTool.java0000644000000000000000000000741211531213010023061 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; import king.*; import king.core.*; import java.net.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import chiropraxis.kingtools.*; import chiropraxis.rotarama.*; import chiropraxis.sc.*; import driftwood.moldb2.*; import driftwood.util.SoftLog; //}}} /** * RnaRotTool has not yet been documented. * *

Copyright (C) 2010 by Vincent B Chen. All rights reserved. *
Begun on Mon Jan 04 15:59:57 EST 2010 */ public class RnaRotTool extends ModelingTool { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Residue targetRes1 = null; Residue targetRes2 = null; //}}} //{{{ Constructor(s) //############################################################################## public RnaRotTool(ToolBox tb) { super(tb); } //}}} //{{{ start/stop/reset //################################################################################################## public void start() { super.start(); // force loading of data tables that will be used later try { Conformer.getInstance(); } catch(IOException ex) {} // Bring up model manager modelman.onShowDialog(null); // Helpful hint for users: this.services.setID("Ctrl-click, option-click, or middle-click a residue to rotate it"); kCanvas.repaint(); // to make it show up! } //}}} //{{{ c_click //############################################################################## /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { if(p != null) { ModelState state = modelman.getFrozenState(); targetRes1 = this.getResidueNearest(modelman.getModel(), state, p.getX(), p.getY(), p.getZ()); targetRes2 = targetRes1.getNext(modelman.getModel()); if (targetRes1 != null && targetRes2 != null) { try { new RnaBackboneRotator(kMain, targetRes1, targetRes2, modelman); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } } } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return null; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return "#rnarotator-tool"; } public String toString() { return "RNA rotator"; } //}}} }//class king-2.21.120420/extratools/src/king/tool/rnaxtal/PlaneFinder.java0000644000000000000000000001453611531213010023212 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; import king.*; import king.core.*; import king.points.*; import java.util.*; //import driftwood.isosurface.*; import Jama.*; //import Jama.Matrix; import driftwood.r3.*; import java.text.DecimalFormat; //}}} /** * * * * *

Copyright (C) 2004 Vincent Chen. All rights reserved. *
Begun on Apr 09 2004. */ public class PlaneFinder { //{{{ Constants DecimalFormat df2 = new DecimalFormat("0.00"); //}}} //{{{ Variable definitions //################################################################################################## RNATriple anchor = new RNATriple(); RNATriple normal = new RNATriple(); KList list; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PlaneFinder() { list = new KList(KList.TRIANGLE); list.setName("Plain"); list.setWidth(5); } //}}} public RNATriple getNormal() { return (RNATriple) normal.clone(); } public RNATriple getAnchor() { return (RNATriple) anchor.clone(); } //{{{ fitPlane //############################################################################## /** * Finds a least-squares plane through all the data points. * You can retrieve the plane definition with {@link #getNormal()} * and {@link #getAnchor()}. * @param data a Collection of Tuple3 objects */ public void fitPlane(Collection data) { anchor = calcCentroid(data); Matrix m = buildMatrix(data, anchor); SingularValueDecomposition svd = new SingularValueDecomposition(m); Matrix v = svd.getV(); // last column corresponds to min singular value normal = new RNATriple( v.get( 0, v.getColumnDimension()-1 ), v.get( 1, v.getColumnDimension()-1 ), v.get( 2, v.getColumnDimension()-1 ) ); normal.unit(); // makes vector mag 1 } //}}} //{{{ calcCentroid, buildMatrix //############################################################################## /** Calculates the centroid of a collection of Tuple3s. */ RNATriple calcCentroid(Collection data) { RNATriple centroid = new RNATriple(); for(Iterator iter = data.iterator(); iter.hasNext(); ) { KPoint t = (KPoint) iter.next(); //System.out.println(t.getX()); centroid.add(t); } //System.out.println(centroid); centroid.mult(1.0 / data.size()); //System.out.println(centroid); return centroid; } public double calcPointPlaneDistance(KPoint p) { double d = - normal.getX() * anchor.getX() - normal.getY() * anchor.getY() - normal.getZ() * anchor.getZ(); double dist = normal.getX() * p.getX() + normal.getY() * p.getY() + normal.getZ() * p.getZ() + d; return dist; } /** Builds the matrix M */ Matrix buildMatrix(Collection data, RNATriple centroid) { Matrix matrix = new Matrix(data.size(), 3); int i = 0; for(Iterator iter = data.iterator(); iter.hasNext(); i++) { KPoint t = (KPoint) iter.next(); matrix.set(i, 0, t.getX() - centroid.getX()); matrix.set(i, 1, t.getY() - centroid.getY()); matrix.set(i, 2, t.getZ() - centroid.getZ()); } return matrix; } //}}} public void drawNormal() { //RNATriple anchor = basePlane.getAnchor(); VectorPoint centroid = new VectorPoint("centroid", null); //centroid.setXYZ(anchor.getX(), anchor.getY(), anchor.getZ()); centroid.setX(anchor.getX()); centroid.setY(anchor.getY()); centroid.setZ(anchor.getZ()); //centroid.setStyle(MarkerPoint.BOX_L); //centroid.setColor(KPalette.red); centroid.setName("centroid: x=" + df2.format(centroid.getX()) + ", y=" + df2.format(centroid.getY()) + ", z=" + df2.format(centroid.getZ())); centroid.setOn(true); list.add(centroid); //RNATriple norm = basePlane.getNormal(); VectorPoint norm = new VectorPoint("normal", centroid); //normal.setXYZ(norm.getX(), norm.getY(), norm.getZ()); norm.setX(anchor.getX() + normal.getX()); norm.setY(anchor.getY() + normal.getY()); norm.setZ(anchor.getZ() + normal.getZ()); //normal.setStyle(MarkerPoint.BOX_L); //normal.setColor(KPalette.deadwhite); norm.setName("normal: x=" + df2.format(norm.getX()) + ", y=" + df2.format(norm.getY()) + ", z=" + df2.format(norm.getZ())); norm.setOn(true); list.add(norm); } public void drawPlane() { TrianglePoint pointA = calcPlane(2, 2, null); TrianglePoint pointB = calcPlane(2, -2, pointA); TrianglePoint pointC = calcPlane(-2, 2, pointB); TrianglePoint pointD = calcPlane(-2, -2, pointC); } public void drawPlane(int size) { TrianglePoint pointA = calcPlane(size, size, null); TrianglePoint pointB = calcPlane(size, -size, pointA); TrianglePoint pointC = calcPlane(-size, size, pointB); TrianglePoint pointD = calcPlane(-size, -size, pointC); } private TrianglePoint calcPlane(double first, double second, TrianglePoint prev) { //RNATriple normal = basePlane.getNormal(); //RNATriple anchor = basePlane.getAnchor(); double x, y, z; //y = 1; z = 1; double highCoord = normal.getX(); //double lowCoordA = normal.getY(); //double lowCoordB = normal.getZ(); //System.out.println(normal.getX()); //System.out.println(normal.getY()); //System.out.println(normal.getZ()); x = -(normal.getY() * first + normal.getZ() * second) / normal.getX(); y = first; z = second; if (StrictMath.abs(normal.getY()) >= StrictMath.abs(highCoord)) { //lowCoordA = highCoord; highCoord = normal.getY(); y = -(normal.getX() * first + normal.getZ() * second) / normal.getY(); x = first; z = second; } if (StrictMath.abs(normal.getZ()) >= StrictMath.abs(highCoord)) { //lowCoordB = highCoord; highCoord = normal.getZ(); z = -(normal.getX() * first + normal.getY() * second) / normal.getZ(); x = first; y = second; } //x = -(lowCoordA * y + lowCoordB * z) / highCoord; TrianglePoint plane = new TrianglePoint("plane", prev); plane.setX(anchor.getX() + x); plane.setY(anchor.getY() + y); plane.setZ(anchor.getZ() + z); plane.setOn(true); list.add(plane); return plane; } public KList getList() { return list; } public Plane getPlane() { return new Plane(getAnchor(), getNormal()); } }//class king-2.21.120420/extratools/src/king/tool/rnaxtal/SuitenameReader.java0000644000000000000000000000340411531213010024070 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; import java.io.*; import java.util.*; import driftwood.data.*; //}}} public class SuitenameReader { //{{{ Constants //}}} //{{{ Variables UberMap suites = null; //}}} //{{{ Constructor public SuitenameReader() { suites = new UberMap(); } //}}} //{{{ readFile public void readFile(File f) throws IOException { if(f != null && f.exists()) { BufferedReader reader = new BufferedReader(new FileReader(f)); String line; String[] split = new String[6]; while((line = reader.readLine())!=null&&(!line.startsWith(" all general case"))) { String[] testSplit = line.split(":"); if (testSplit.length == 5) { // bug in suitename when file names > 32 char split[0] = testSplit[0].substring(0, 32); split[1] = testSplit[0].substring(32, testSplit[0].length()); for (int i = 2; i < 6; i++) { split[i] = testSplit[i-1]; } } else { split = testSplit; } //CNNNNITTT, suitename suites.put(split[2]+split[3]+split[4]+split[5].substring(0, 3), split[5].substring(9, 11)); } Iterator iter = suites.keySet().iterator(); while(iter.hasNext()) { String key = (String)iter.next(); System.out.print(key+"="); System.out.println(suites.get(key)); } } } //}}} //{{{ getConformerName /** * Takes a residue CNIT string as input. * Returns the two character suite conformer name, or null if CNIT not found. */ public String getConformerName(String cnit) { if (suites.containsKey(cnit)) { return (String) suites.get(cnit); } return null; } //}}} } king-2.21.120420/extratools/src/king/tool/rnaxtal/RNALineTracker.java0000644000000000000000000001301211531213010023553 0ustar rootrootpackage king.tool.rnaxtal; import king.*; import king.core.*; import king.points.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.isosurface.*; import driftwood.r3.*; /** * Started 6 November 2003 by Vincent Chen **/ public class RNALineTracker {//implements TransformSignalSubscriber { //Variable Definitions KingMain kMain; KinCanvas kCanvas; ToolBox parent; Stack storedVertices; KList trackedList; // Constructors public RNALineTracker(ToolBox parent) { this.parent = parent; kMain = parent.kMain; kCanvas = parent.kCanvas; //parent.sigTransform.subscribe(this); storedVertices = new Stack(); trackedList = new KList(KList.VECTOR); trackedList.setName("test list"); //trackedList.setColor(KPalette.gold); //trackedList.setWidth(7); } // Methods public void startTracking(VectorPoint startPoint) { KList ownerList, tempTrackList; Iterator iter; VectorPoint listPoint; ownerList = (KList) startPoint.getParent(); tempTrackList = new KList(KList.VECTOR); iter = ownerList.iterator(); for ( ; iter.hasNext(); ) { listPoint = (VectorPoint) iter.next(); if (listPoint.isBreak()) { if (contains(tempTrackList, startPoint)) { trackedList = addAll(trackedList, tempTrackList); } tempTrackList.clear(); } tempTrackList.add(listPoint); //System.out.print(listPoint.getDrawingColor().toString()); } if (contains(tempTrackList, startPoint)) { // to check the last group of the kinemage trackedList = addAll(trackedList, tempTrackList); } onTracked(); } public boolean contains(KList ownerList, VectorPoint startPoint) { Iterator iter; VectorPoint listPoint; iter = ownerList.iterator(); for ( ; iter.hasNext();) { listPoint = (VectorPoint) iter.next(); if (listPoint.equals(startPoint)) { return true; } } return false; } public void onTracked() { Kinemage kin = kMain.getKinemage(); KGroup subGroup; KList oldList, newList; KGroup group = findGroup(kin, "tracker Group"); if (group == null) { group = new KGroup("tracker Group"); kin.add(group); subGroup = new KGroup("tracker Subgroup"); subGroup.setHasButton(false); group.add(subGroup); trackedList.setParent(subGroup); subGroup.add(trackedList); } else { subGroup = findSubgroup(group, "tracker Subgroup"); oldList = findKList(subGroup, "test list"); subGroup.remove(oldList); newList = addAll(oldList, trackedList); newList.setParent(subGroup); subGroup.add(newList); } System.out.println(""); System.out.println(""); System.out.println("tl: " + listDebugger(trackedList)); //trackedList.setParent(subgroup); //subgroup.add(trackedList); //subgroup.add(trackedList); //setID("tracking is going?"); //System.out.println("on tracking..."); //kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); //kCanvas.repaint(); } private KGroup findGroup(Kinemage kin, String groupName) { Iterator iter = kin.iterator(); KGroup kinGroup; for ( ; iter.hasNext(); ) { kinGroup = (KGroup) iter.next(); if (kinGroup.getName().equals(groupName)) { return kinGroup; } } return null; } private KGroup findSubgroup(KGroup group, String subgroupName) { Iterator iter = group.iterator(); KGroup kinSubgroup; for ( ; iter.hasNext(); ) { kinSubgroup = (KGroup) iter.next(); if (kinSubgroup.getName().equals(subgroupName)) { return kinSubgroup; } } return null; } private KList findKList(KGroup subGroup, String listName) { Iterator iter = subGroup.iterator(); KList sgList; for ( ; iter.hasNext(); ) { sgList = (KList) iter.next(); if (sgList.getName().equals(listName)) { return sgList; } } return null; } private String listDebugger(KList dList) { Iterator iter; VectorPoint listPoint; String totalString = ""; iter = dList.iterator(); for ( ; iter.hasNext(); ) { listPoint = (VectorPoint) iter.next(); totalString = totalString + listPoint.toString() + ", "; } return totalString; } private KList addAll(KList startList, KList lastList) { Iterator iter; VectorPoint listPoint; iter = lastList.iterator(); for ( ; iter.hasNext(); ) { listPoint = (VectorPoint) iter.next(); listPoint.setColor(KPalette.gold); listPoint.setWidth(5); startList.add(listPoint); } return startList; } /** public void doTransform(Engine engine, Transform xform) { //KList list; //if(centerChanged()) updateMesh(); //System.out.println("signal transformed"); //list = trackedList; if(trackedList != null) { //System.out.println(list.toString()); trackedList.setColor(KPalette.gold); trackedList.doTransform(engine, xform); } //SoftLog.err.println("Painted maps."); } **/ } /** private void breakTester(VectorPoint startPoint) { if(startPoint.isBreak()) { trackedList.add(startPoint); for (int i = 0; storedVertices.size(); i++;) { trackedList.add((VectorPoint) storedVertices.pop()); } breakTester((VectorPoint) iter.next()); } else { storedVertices.push(startPoint); // adds the point to the top of the stack breakTester((VectorPoint) startPoint.getPrev()); } } **/ king-2.21.120420/extratools/src/king/tool/rnaxtal/PolygonFinder.java0000644000000000000000000002312111531213010023570 0ustar rootroot//{{{ Package, imports package king.tool.rnaxtal; import king.*; import king.core.*; import king.points.*; import java.util.*; import driftwood.isosurface.*; import driftwood.r3.*; //}}} /** * PolygonFinder takes in a KList of points and * sorts the KList into polyhedra, based on the connectedness * of the points. It stores the polyhedra in a hashset, allowing the * polyhedra to be efficiently retrieved and used (e.g. for highlighting a * polyhedra on the screen). * *

Copyright (C) 2003 by Vincent Chen. All rights reserved. * **/ public class PolygonFinder { //{{{ Variable Definitions //################################################ HashMap hMap, polyMap; boolean initialized = false; //}}} //{{{ Constructors //############################################### /** * Constructor **/ public PolygonFinder() { hMap = new HashMap(); polyMap = new HashMap(); } //}}} //{{{ Methods //################################################# //{{{ initiateMap //################################################# /** * This method takes in a KList containing vectorpoints and * sorts the points into a hashmap, where the keys are the * points themselves, and the values are hashsets containing * all the points connected to that particular key. * *

For each vectorpoint in the KList, there are four possibilities * depending on whether or not the point has been encountered by the algorithm, * and whether or not it is a break. This program takes advantage of the fact * that in HashSets, many keys can map to the same value. * * @param trackedOrg the KList to be sorted. **/ public void initiateMap(KList trackedOrg) { Iterator iter; VectorPoint listPoint; HashSet priorSet, breakSet; KList trackedList; priorSet = new HashSet(); breakSet = new HashSet(); System.out.println("Map Initiation started"); trackedList = cloneList(trackedOrg); //System.out.println(listDebugger(trackedList)); iter = trackedList.iterator(); for ( ; iter.hasNext(); ) { listPoint = (VectorPoint) iter.next(); if(hMap.containsKey(listPoint)) { //old point if (listPoint.isBreak()) { // old point and break: retrieve the mapping of the point. breakSet = (HashSet) hMap.get(listPoint); } else { // old point and not break: retrieve mapping of point, add // all points of the current set, and update mappings for all // points of the old set. priorSet = (HashSet) hMap.get(listPoint); priorSet.addAll(breakSet); for (Iterator breakIter = breakSet.iterator(); breakIter.hasNext(); ) { VectorPoint setPoint = (VectorPoint) breakIter.next(); hMap.put(setPoint, priorSet); } breakSet = priorSet; //hMap.put(listPoint, priorSet); } } else { // new point if(listPoint.isBreak()) { // new point and break: make a new hashset with the point, and // put it in the map. breakSet = new HashSet(); breakSet.add(listPoint); hMap.put(listPoint, breakSet); } else { // new point and not break: add the point to the current set, and // put it in the map. breakSet.add(listPoint); hMap.put(listPoint, breakSet); } } } //System.out.println("Set: " + hMap.values()); finishMap(trackedList); } //}}} public void initiateMap(KList trackedOrg, VectorPoint break1, VectorPoint break2) { Iterator iter; VectorPoint listPoint; HashSet priorSet, breakSet; KList trackedList; priorSet = new HashSet(); breakSet = new HashSet(); System.out.println("Map Initiation started"); trackedList = cloneList(trackedOrg); //System.out.println(listDebugger(trackedList)); iter = trackedList.iterator(); for ( ; iter.hasNext(); ) { listPoint = (VectorPoint) iter.next(); if(hMap.containsKey(listPoint)) { //old point if (listPoint.isBreak()) { // old point and break: retrieve the mapping of the point. breakSet = (HashSet) hMap.get(listPoint); } else { // old point and not break: retrieve mapping of point, add // all points of the current set, and update mappings for all // points of the old set. priorSet = (HashSet) hMap.get(listPoint); priorSet.addAll(breakSet); for (Iterator breakIter = breakSet.iterator(); breakIter.hasNext(); ) { VectorPoint setPoint = (VectorPoint) breakIter.next(); hMap.put(setPoint, priorSet); } breakSet = priorSet; //hMap.put(listPoint, priorSet); } } else { // new point if(listPoint.isBreak()||listPoint.equals(break1)||listPoint.equals(break2)) { // new point and break: make a new hashset with the point, and // put it in the map. breakSet = new HashSet(); breakSet.add(listPoint); hMap.put(listPoint, breakSet); } else { // new point and not break: add the point to the current set, and // put it in the map. breakSet.add(listPoint); hMap.put(listPoint, breakSet); } } } //System.out.println("Set: " + hMap.values()); finishMap(trackedList); } //}}} //{{{ cloneList, clonePoint //########################################################## /** * Functions to create a clone of a KList or a VectorPoint. * *

Used because King used to overwrite the points in kin files * when the files were saved, instead of only adding the list of * selected polyhedra to the end of the file. * *

Probably unnecessary as of 07 Jan 04, but aren't hurting anything. **/ private KList cloneList(KList trackedList) { KList listClone = new KList(trackedList.getType()); Iterator iter; VectorPoint listPoint, pointClone, prev; prev = null; iter = trackedList.iterator(); for ( ; iter.hasNext(); ) { listPoint = (VectorPoint) iter.next(); if (listPoint.isBreak()) { pointClone = clonePoint(listPoint, null); } else { pointClone = clonePoint(listPoint, prev); } listClone.add(pointClone); prev = pointClone; } return listClone; } private VectorPoint clonePoint(VectorPoint pointOrg, VectorPoint start) { VectorPoint pointClone; pointClone = new VectorPoint(pointOrg.getName(), start); pointClone.setX((float) pointOrg.getX()); pointClone.setY((float) pointOrg.getY()); pointClone.setZ((float) pointOrg.getZ()); return pointClone; } //}}} //((( finishMap //############################################################### /** * This function is the second half of the polyhedra sorting program. * After sorting the points into hashsets, this function runs through the KList * again and creates KLists containing the points in each polyhedra, in order as * given in the KList. These KLists are stored in a HashMap, with points as keys, * to allow efficient access. * * @param trackedList the KList to be sorted. **/ private void finishMap(KList trackedList) { HashSet shapeSet = new HashSet(); KList shapeList = new KList(trackedList.getType()); VectorPoint listPoint; Iterator iter; HashSet polyVertSet = new HashSet(hMap.values()); // Hashset of the vertex-containing Hashsets. //HashSet vertSet // variable to hold each System.out.println("Number of polys: " + polyVertSet.size()); //hashMapDebug(hMap.values()); Iterator setIter = polyVertSet.iterator(); for ( ; setIter.hasNext(); ) { shapeSet = (HashSet) setIter.next(); shapeList = new KList(trackedList.getType()); // make new KList polyMap.put(shapeSet, shapeList); // Store KList with the vertex-containing hashsets as keys. } System.out.println("Finish it!"); iter = trackedList.iterator(); for ( ; iter.hasNext(); ) { listPoint = (VectorPoint) iter.next(); shapeSet = (HashSet) hMap.get(listPoint); // Use point to get the Hashset it's in. shapeList = (KList) polyMap.get(shapeSet); // Use Hashset to look up KList for the point. shapeList.add(listPoint); // Add point to KList. listPoint.setParent(shapeList); } initialized = true; System.out.println("Polyhedra stored"); } //))) //((( getPolyhedra //############################################################### /** * This function is called with a KPoint and returns the KList of * the polyhedra that contains that point. * * @param listPoint the point to use to get the polyhedra KList. **/ public KList getPolyhedra(KPoint listPoint) { Iterator iter; VectorPoint changePoint; HashSet shapeSet = (HashSet) hMap.get((VectorPoint) listPoint); KList polyList = (KList) polyMap.get(shapeSet); System.out.println("Polyhedra gotten"); return polyList; } //}}} //{{{ isInitialized //########################################### /** * Returns whether this program has been initialized. * N.B. This does not necessarily mean that the program has * been initialized for the point been tested. **/ public boolean isInitialized() { return initialized; } //}}} //{{{ Debuggers //############################################# /** * Debugging programs used by VBC **/ private String listDebugger(KList dList) { Iterator iter; VectorPoint listPoint; String totalString = ""; iter = dList.iterator(); for ( ; iter.hasNext(); ) { listPoint = (VectorPoint) iter.next(); totalString = totalString + listPoint.toString() + ", "; } return totalString; } private void hashMapDebug(Collection c) { Iterator iter = c.iterator(); System.out.println("hMap value sizes:"); for ( ; iter.hasNext(); ) { HashSet values = (HashSet) iter.next(); System.out.print(values.size() + ", "); } } //}}} } king-2.21.120420/extratools/src/king/tool/rnaxtal/Plane.java0000644000000000000000000000176111531213010022056 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; import king.*; import king.core.*; public class Plane { //{{{ Constants //DecimalFormat df2 = new DecimalFormat("0.00"); //}}} //{{{ Variable definitions //################################################################################################## RNATriple anchor; RNATriple normal; double a, b, c, d; //KList list; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public Plane(RNATriple anch, RNATriple norm) { anchor = anch; normal = norm; a = normal.getX(); b = normal.getY(); c = normal.getZ(); d = - a * anchor.getX() - b * anchor.getY() - c * anchor.getZ(); } public boolean isBelow(KPoint p) { if (a * p.getX() + b * p.getY() + c * p.getZ() + d < 0) { return true; } else { return false; } } } king-2.21.120420/extratools/src/king/tool/rnaxtal/RNAMapTool.java0000644000000000000000000003357311531213010022741 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; import king.*; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; import java.beans.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.isosurface.*; import driftwood.util.*; //}}} /** * RNAMapPlugin provides file/URL opening services * to launch the RNAMapWindows that control individual maps. * * Attempting to use EDMap programs as a starting point for RNA ED * analysis. VBC 27 Oct 2003. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Tue Apr 1 13:45:27 EST 2003 */ public class RNAMapTool extends BasicTool implements PropertyChangeListener, ListSelectionListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## JFileChooser filechooser = null; JDialog urlchooser = null; JList urlList = null; JTextField urlField = null; boolean urlChooserOK = false; JRadioButton btnXplorType, btnOType, btnCcp4Type; SuffixFileFilter omapFilter, xmapFilter, ccp4Filter, mapFilter; RNAMapWindow win; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public RNAMapTool(ToolBox tb) { super(tb); makeFileFilters(); } //}}} //{{{ makeFileFilters //################################################################################################## void makeFileFilters() { omapFilter = new SuffixFileFilter("O maps (DSN6/Brix)"); omapFilter.addSuffix(".brix"); omapFilter.addSuffix(".brix.gz"); omapFilter.addSuffix(".dsn6"); omapFilter.addSuffix(".dsn6.gz"); omapFilter.addSuffix(".dn6"); omapFilter.addSuffix(".dn6.gz"); omapFilter.addSuffix(".omap"); omapFilter.addSuffix(".omap.gz"); xmapFilter = new SuffixFileFilter("XPLOR maps (ASCII format)"); xmapFilter.addSuffix(".xmap"); xmapFilter.addSuffix(".xmap.gz"); xmapFilter.addSuffix(".xplor"); xmapFilter.addSuffix(".xplor.gz"); ccp4Filter = new SuffixFileFilter("CCP4 maps (type 2)"); ccp4Filter.addSuffix(".ccp4"); ccp4Filter.addSuffix(".ccp4.gz"); ccp4Filter.addSuffix(".mbk"); ccp4Filter.addSuffix(".mbk.gz"); mapFilter = new SuffixFileFilter("All electron density maps"); mapFilter.addSuffix(".ccp4"); mapFilter.addSuffix(".ccp4.gz"); mapFilter.addSuffix(".mbk"); mapFilter.addSuffix(".mbk.gz"); mapFilter.addSuffix(".xmap"); mapFilter.addSuffix(".xmap.gz"); mapFilter.addSuffix(".xplor"); mapFilter.addSuffix(".xplor.gz"); mapFilter.addSuffix(".brix"); mapFilter.addSuffix(".brix.gz"); mapFilter.addSuffix(".dsn6"); mapFilter.addSuffix(".dsn6.gz"); mapFilter.addSuffix(".dn6"); mapFilter.addSuffix(".dn6.gz"); mapFilter.addSuffix(".omap"); mapFilter.addSuffix(".omap.gz"); mapFilter.addSuffix(".map"); mapFilter.addSuffix(".map.gz"); } //}}} //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make accessory for file chooser TablePane acc = new TablePane(); acc.weights(0,0); acc.add(new JLabel("Map type?")); acc.newRow(); btnOType = new JRadioButton("O"); acc.add(btnOType); acc.newRow(); btnXplorType = new JRadioButton("XPLOR"); acc.add(btnXplorType); acc.newRow(); btnCcp4Type = new JRadioButton("CCP4"); acc.add(btnCcp4Type); // Make buttons mutually exclusive ButtonGroup btnGroup = new ButtonGroup(); btnGroup.add(btnOType); btnGroup.add(btnXplorType); btnGroup.add(btnCcp4Type); // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); filechooser.setAccessory(acc); filechooser.addPropertyChangeListener(this); filechooser.addChoosableFileFilter(mapFilter); filechooser.setFileFilter(mapFilter); } //}}} //{{{ makeURLChooser //################################################################################################## void makeURLChooser() { // Make accessory for URL chooser TablePane acc = new TablePane(); acc.weights(0,0); acc.add(new JLabel("Map type?")); acc.newRow(); btnOType = new JRadioButton("O"); acc.add(btnOType); acc.newRow(); btnXplorType = new JRadioButton("XPLOR"); acc.add(btnXplorType); acc.newRow(); btnCcp4Type = new JRadioButton("CCP4"); acc.add(btnCcp4Type); // Make buttons mutually exclusive ButtonGroup btnGroup = new ButtonGroup(); btnGroup.add(btnOType); btnGroup.add(btnXplorType); btnGroup.add(btnCcp4Type); // Make actual URL chooser urlList = new FatJList(150, 12); JApplet applet = kMain.getApplet(); if(applet != null) { String maps = applet.getParameter("edmapList"); if(maps != null) { String[] maplist = Strings.explode(maps, ' '); urlList.setListData(maplist); } } urlList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); urlList.addListSelectionListener(this); JScrollPane listScroll = new JScrollPane(urlList); // Make an (editable) URL line urlField = new JTextField(); // Make the command buttons JButton btnOK = new JButton(new ReflectiveAction("OK", null, this, "onUrlOk")); JButton btnCancel = new JButton(new ReflectiveAction("Cancel", null, this, "onUrlCancel")); TablePane btnPane = new TablePane(); btnPane.center().insets(1,4,1,4); btnPane.add(btnOK); btnPane.add(btnCancel); // Put it all together in a content pane TablePane cp = new TablePane(); cp.center().middle().insets(6); cp.add(listScroll); cp.add(acc); cp.newRow(); cp.save().hfill(true).addCell(urlField, 2, 1).restore(); cp.newRow(); cp.add(btnPane, 2, 1); urlchooser = new JDialog(kMain.getTopWindow(), "ED Map URLs", true); urlchooser.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); urlchooser.setContentPane(cp); urlchooser.pack(); urlchooser.setLocationRelativeTo(kMain.getTopWindow()); } //}}} //{{{ getHelpAnchor, toString //################################################################################################## /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#rnamap-tool"; } public String toString() { return "Analyze RNA Maps"; } //}}} //{{{ start //################################################################################################## public void start() { if(kMain.getKinemage() == null) return; try { if(kMain.getApplet() != null) openMapURL(); else openMapFile(); } catch(IOException ex) // includes MalformedURLException { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong map format was chosen, or map is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } //}}} //{{{ openMapFile //################################################################################################## void openMapFile() throws IOException { // Create file chooser on demand if(filechooser == null) makeFileChooser(); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { File f = filechooser.getSelectedFile(); if(f != null && f.exists()) { CrystalVertexSource map; if(btnOType.isSelected()) { map = new OMapVertexSource(new FileInputStream(f)); } else if(btnXplorType.isSelected()) { map = new XplorVertexSource(new FileInputStream(f)); } else if(btnCcp4Type.isSelected()) { map = new Ccp4VertexSource(new FileInputStream(f)); } else throw new IllegalArgumentException("Map type not specified"); win = new RNAMapWindow(parent, map, f.getName()); kCanvas.repaint(); // otherwise we get partial-redraw artifacts } } } //}}} //{{{ openMapURL, onUrlCancel, onUrlOk //################################################################################################## void openMapURL() throws MalformedURLException, IOException { // Create chooser on demand if(urlchooser == null) makeURLChooser(); urlchooser.pack(); urlchooser.setVisible(true); // execution halts until dialog is closed... if(urlChooserOK) { CrystalVertexSource map; URL mapURL = new URL(urlField.getText()); InputStream is = new BufferedInputStream(mapURL.openStream()); if(btnOType.isSelected()) map = new OMapVertexSource(is); else if(btnXplorType.isSelected()) map = new XplorVertexSource(is); else if(btnCcp4Type.isSelected()) map = new Ccp4VertexSource(is); else throw new IllegalArgumentException("Map type not specified"); win = new RNAMapWindow(parent, map, mapURL.getFile()); kCanvas.repaint(); // otherwise we get partial-redraw artifacts } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUrlCancel(ActionEvent ev) { urlChooserOK = false; urlchooser.setVisible(false); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUrlOk(ActionEvent ev) { urlChooserOK = true; urlchooser.setVisible(false); } //}}} //{{{ propertyChange, valueChanged, click //################################################################################################## public void propertyChange(PropertyChangeEvent ev) { if(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY.equals(ev.getPropertyName())) { File f = (File)ev.getNewValue(); if(f == null) {} else if(omapFilter.accept(f)) btnOType.setSelected(true); else if(xmapFilter.accept(f)) btnXplorType.setSelected(true); else if(ccp4Filter.accept(f)) btnCcp4Type.setSelected(true); } } /* Gets called when a new URL is picked from the list */ public void valueChanged(ListSelectionEvent ev) { Object o = urlList.getSelectedValue(); if(o == null) {} else { String name = o.toString(); if(omapFilter.accept(name)) btnOType.setSelected(true); else if(xmapFilter.accept(name)) btnXplorType.setSelected(true); else if(ccp4Filter.accept(name)) btnCcp4Type.setSelected(true); urlField.setText("http://"+name); JApplet applet = kMain.getApplet(); if(applet != null) { try { URL mapURL = new URL(applet.getDocumentBase(), applet.getParameter("edmapBase")+"/"+name); urlField.setText(mapURL.toString()); } catch(MalformedURLException ex) { SoftLog.err.println(applet.getDocumentBase()); SoftLog.err.println(applet.getParameter("edmapBase")); SoftLog.err.println(name); ex.printStackTrace(SoftLog.err); } } } } public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); if (win != null) { if((p instanceof VectorPoint)&&(win.polyIsSelected())) { win.polyTrack((VectorPoint) p); } else if ((p != null)&&(win.planeIsSelected())) { win.planeTrack(p); } } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/rnaxtal/SuitenameTool.java0000644000000000000000000001425611531213010023612 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; import king.*; import king.core.*; import king.points.*; import java.io.*; import java.awt.*; import java.util.*; import javax.swing.*; import driftwood.r3.*; import driftwood.gui.*; import driftwood.data.*; import driftwood.util.*; import driftwood.moldb2.*; //}}} /** Tue Dec 14 17:51:18 EST 2009 */ public class SuitenameTool extends BasicTool { //{{{ Constants //}}} //{{{ Variables JFileChooser filechooser; KList suiteList; //}}} //{{{ Constructor /** * Constructor */ public SuitenameTool(ToolBox tb) { super(tb); } //}}} //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make accessory for file chooser //TablePane acc = new TablePane(); // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); //filechooser.setAccessory(acc); } //}}} //{{{ openFile public SuitenameReader openFile() { // Create file chooser on demand if(filechooser == null) makeFileChooser(); filechooser.setDialogTitle("Choose suitename file..."); filechooser.resetChoosableFileFilters(); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { try { File f = filechooser.getSelectedFile(); SuitenameReader snr = new SuitenameReader(); snr.readFile(f); return snr; } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } } return null; } //}}} //{{{ openPdbFile public CoordinateFile openPdbFile() { // Create file chooser on demand if(filechooser == null) makeFileChooser(); filechooser.setDialogTitle("Choose PDB file..."); filechooser.addChoosableFileFilter(CoordinateFile.getCoordFileFilter()); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { try { File f = filechooser.getSelectedFile(); PdbReader read = new PdbReader(); CoordinateFile pdb = read.read(f); return pdb; } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } } return null; } //}}} //{{{ start public void start() { Kinemage kin = kMain.getKinemage(); if (kin == null) return; setupKinStuff(kin); SuitenameReader snr = openFile(); CoordinateFile pdb = openPdbFile(); Iterator models = (pdb.getModels()).iterator(); while (models.hasNext()) { Model mod = (Model) models.next(); ModelState state = mod.getState(); Iterator residues = mod.getResidues().iterator(); UberSet resSet = new UberSet(mod.getResidues()); while (residues.hasNext()) { Residue res2 = (Residue) residues.next(); if (!res2.equals((Residue)resSet.firstItem())) { Residue res = (Residue) resSet.itemBefore(res2); //System.out.println(res.getCNIT()); String name = snr.getConformerName(res2.getCNIT()); if ((name != null) && name.equals("!!")) { //System.out.println("bang!="+res.getCNIT()); Atom resC1 = res.getAtom(" C1'"); if (resC1 == null) resC1 = res.getAtom(" C1*"); Atom phos = res2.getAtom(" P "); Atom res2C1 = res2.getAtom(" C1'"); if (res2C1 == null) res2C1 = res2.getAtom(" C1*"); if ((resC1 != null) && (phos != null) && (res2C1 != null)) { try { AtomState resC1State = state.get(resC1); AtomState phosState = state.get(phos); AtomState res2C1State = state.get(res2C1); drawOutlier(resC1State, phosState, res2C1State); } catch (AtomException ae) { ae.printStackTrace(SoftLog.err); } } } } } } } //}}} //{{{ setupKinStuff public void setupKinStuff(Kinemage kin) { KGroup group = new KGroup("suite outliers"); group.setDominant(true); KGroup sub = new KGroup("suite outliers sub"); group.add(sub); suiteList = new KList(KList.VECTOR, "suite outliers"); suiteList.setWidth(5); suiteList.setColor(KPalette.green); sub.add(suiteList); kin.add(group); } //}}} //{{{ drawOutlier public void drawOutlier(Tuple3 p1, Tuple3 p2, Tuple3 p3) { VectorPoint v1 = new VectorPoint("suite outlier", null); v1.setXYZ(p1.getX(), p1.getY(), p1.getZ()); VectorPoint v2 = new VectorPoint("suite outlier", v1); v2.setXYZ(p2.getX(), p2.getY(), p2.getZ()); VectorPoint v3 = new VectorPoint("suite outlier", v2); v3.setXYZ(p3.getX(), p3.getY(), p3.getZ()); suiteList.add(v1); suiteList.add(v2); suiteList.add(v3); } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return null; } ///** Returns the URL of a web page explaining use of this tool */ //public URL getHelpURL() //{ // URL url = getClass().getResource("/extratools/tools-manual.html"); // String anchor = getHelpAnchor(); // if(url != null && anchor != null) // { // try { url = new URL(url, anchor); } // catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } // return url; // } // else return null; //} // //public String getHelpAnchor() //{ return "#rdcvis-tool"; } public String toString() { return "Suitename Tool"; } //}}} } king-2.21.120420/extratools/src/king/tool/rnaxtal/RNATriple.java0000644000000000000000000000762711531213010022626 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; import king.core.*; import driftwood.r3.*; public class RNATriple implements MutableTuple3 { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## public double x; public double y; public double z; //}}} //{{{ Constructor(s) //################################################################################################## /** Creates a triple with the specified x, y, and z coordinates. */ public RNATriple(double x0, double y0, double z0) { x = x0; y = y0; z = z0; } /** Creates a triple at the origin. */ public RNATriple() { x = y = z = 0.0; } public RNATriple(KPoint p) { x = p.getX(); y = p.getY(); z = p.getZ(); } //}}} public RNATriple add(KPoint t) { x += t.getX(); y += t.getY(); z += t.getZ(); return this; } /** Multiplies (scales) this Triple by k. If k < 1, this vector is shortened; if k > 1, this vector is lengthened. */ public RNATriple mult(double k) { x *= k; y *= k; z *= k; return this; } /** * Makes this vector one unit in length (magnitude) with the same directionality. * Returns (0, 0, 0) if this Triple is already (0, 0, 0). */ public RNATriple unit() { double mag = this.mag(); if(mag != 0.0) { x /= mag; y /= mag; z /= mag; } return this; } /** Returns the first element of this tuple */ public double getX() { return x; } /** Returns the second element of this tuple */ public double getY() { return y; } /** Returns the third element of this tuple */ public double getZ() { return z; } /** Assigns a value to the first element of this tuple */ public void setX(double x0) { x = x0; } /** Assigns a value to the second element of this tuple */ public void setY(double y0) { y = y0; } /** Assigns a value to the third element of this tuple */ public void setZ(double z0) { z = z0; } /** Assigns a value to all the elements of this tuple */ public void setXYZ(double x0, double y0, double z0) { x = x0; y = y0; z = z0; } /** Returns the maginitude of a vector from the origin to this point. */ public double mag() { return Math.sqrt(x*x + y*y + z*z); } /** * Obeys the general contract of Object.equals(). * Two Tuple3's are equal if their x, y, and z coordinates are equal. */ public boolean equals(Object o) { if(! (o instanceof RNATriple)) return false; else { RNATriple t = (RNATriple)o; if(x == t.getX() && y == t.getY() && z == t.getZ()) return true; else return false; } } public boolean equalCoords(Tuple3 tup) { if (x == tup.getX() && y == tup.getY() && z == tup.getZ()) return true; else return false; } /** * Obeys the general contract of Object.hashCode(). * Based on Colt's HashFunctions.java. */ public int hashCode() { // I stole this from Colt: // this avoids excessive hashCollisions // in the case values are of the form (1.0, 2.0, 3.0, ...) int b1 = Float.floatToIntBits((float)x*663608941.737f); int b2 = Float.floatToIntBits((float)y*663608941.737f); int b3 = Float.floatToIntBits((float)z*663608941.737f); // The rotation of bits is my own idea return (b1 ^ (b2<<11 | b2>>>21) ^ (b3<<22 | b3>>>10)); } /** * Prints (x, y, z) */ public String toString() { return "("+x+", "+y+", "+z+")"; } public Object clone() { RNATriple c = new RNATriple(x, y, z); return c; } } king-2.21.120420/extratools/src/king/tool/rnaxtal/RnaIdealizer.java0000644000000000000000000005431611531213010023374 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.rnaxtal; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.*; //}}} /** * RnaIdealizer is a class for working with * ideal geometry side chains modeled in moldb2. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Mar 20 14:08:45 EST 2003 */ public class RnaIdealizer //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## //SidechainAngles2 scAngles; Map idealSidechainMap; // Map> Map idealResMap; // Map //Map idealResMapv23; //ModelState idealResState; //ModelState idealResStatev23; Builder builder; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public RnaIdealizer() throws IOException { builder = new Builder(); //scAngles = new SidechainAngles2(); //idealSidechainMap = loadIdealSidechains(); //doesn't currently seem to be used. //loadIdealResidues(); //loadIdealResiduesv23(); idealResMap = new TreeMap(); loadIdealBackbones("rna32H.pdb"); loadIdealBackbones("rna33H.pdb"); loadIdealBackbones("rna22H.pdb"); loadIdealBackbones("rna23H.pdb"); } //}}} //{{{ loadIdealBackbones public void loadIdealBackbones(String filename) throws IOException { InputStream is = this.getClass().getResourceAsStream(filename); if(is == null) throw new IOException("File not found in JAR: "+filename); PdbReader pdbr = new PdbReader(); CoordinateFile cf = pdbr.read(is); Model m = cf.getFirstModel(); //idealResState = m.getState(); idealResMap.put(filename.substring(3, 5), m); } //}}} //{{{ loadIdealSidechains //################################################################################################## /** * Opens a PDB of ideal geometry sc from the JAR, and enters coords in the table. * Coordinates are translated so that the C-alpha is at (0,0,0). * @return Map<Residue.getName(), Map<Atom.getName(), Triple>> */ //Map loadIdealSidechains() throws IOException //{ // InputStream is = this.getClass().getResourceAsStream("singlesc.pdb"); // if(is == null) throw new IOException("File not found in JAR: singlesc.pdb"); // // PdbReader pdbr = new PdbReader(); // CoordinateFile cf = pdbr.read(is); // Model m = cf.getFirstModel(); // ModelState s = m.getState(); // // Map rmap = new HashMap(); // for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) // { // try // { // Residue res = (Residue)ri.next(); // AtomState ca = s.get( res.getAtom(" CA ") ); // Map amap = new HashMap(); // for(Iterator ai = res.getAtoms().iterator(); ai.hasNext(); ) // { // Atom a = (Atom)ai.next(); // AtomState as = s.get(a); // amap.put(a.getName(), new Triple(as).sub(ca)); // } // rmap.put(res.getName(), amap); // } // catch(AtomException ex) { ex.printStackTrace(); } // } // return rmap; //} //}}} //{{{ loadIdealResides, getResidueTypes //################################################################################################## //void loadIdealResidues() throws IOException //{ // InputStream is = this.getClass().getResourceAsStream("singleres.pdb"); // if(is == null) throw new IOException("File not found in JAR: singleres.pdb"); // // PdbReader pdbr = new PdbReader(); // CoordinateFile cf = pdbr.read(is); // Model m = cf.getFirstModel(); // idealResState = m.getState(); // // idealResMap = new TreeMap(); // for(Iterator iter = m.getResidues().iterator(); iter.hasNext(); ) // { // Residue r = (Residue) iter.next(); // idealResMap.put(r.getName(), r); // } //} // //void loadIdealResiduesv23() throws IOException //{ // InputStream is = this.getClass().getResourceAsStream("singleres-v23.pdb"); // if(is == null) throw new IOException("File not found in JAR: singleres.pdb"); // // PdbReader pdbr = new PdbReader(); // CoordinateFile cf = pdbr.read(is); // Model m = cf.getFirstModel(); // idealResStatev23 = m.getState(); // // idealResMapv23 = new TreeMap(); // for(Iterator iter = m.getResidues().iterator(); iter.hasNext(); ) // { // Residue r = (Residue) iter.next(); // idealResMapv23.put(r.getName(), r); // } //} // /** Returns a collection of all the amino acid codes supported by makeIdealResidue(). */ public Collection getPuckerStates() { return Collections.unmodifiableCollection( idealResMap.keySet() ); } //}}} //{{{ idealizeSidechain //################################################################################################## /** * Idealizes all aspects of sidechain geometry (bond lengths and angles). * Dihedrals are preserved from the original model. * All heavy atoms must be present, but H's are optional. * This method will not create missing atoms, only move existing ones. * It also doesn't move atoms that aren't present in the idealized residues; * this caused issues with the PDB format change. * It returns start if the residue is of unknown type. *//* public ModelState idealizeSidechain(Residue res, ModelState start) { Residue idealRes = (Residue) idealResMap.get(res.getName()); Residue idealResv23 = (Residue) idealResMapv23.get(res.getName()); if((idealRes == null)||(idealResv23 == null)) // a residue we don't recognize return start; // Save initial conformation. Chis only b/c we might lack H's. // Actually, we can do all angles and ignore any NaN's we get. double[] chis = scAngles.measureAllAngles(res, start); //DEBUG: for(int i = 0; i < chis.length; i++) SoftLog.err.println("chi"+(i+1)+"="+chis[i]); try { ModelState end = new ModelState(start); AtomState ca1 = start.get( res.getAtom(" CA ") ); AtomState n1 = start.get( res.getAtom(" N ") ); AtomState c1 = start.get( res.getAtom(" C ") ); AtomState ca2 = idealResState.get( idealRes.getAtom(" CA ") ); AtomState n2 = idealResState.get( idealRes.getAtom(" N ") ); AtomState c2 = idealResState.get( idealRes.getAtom(" C ") ); Transform xform = builder.dock3on3(ca1, n1, c1, ca2, n2, c2); for(Iterator iter = res.getAtoms().iterator(); iter.hasNext(); ) { try { Atom a1 = (Atom)iter.next(); String nm = a1.getName(); Atom a2 = idealRes.getAtom(nm); if(!(nm.equals(" N ") || nm.equals(" H ") || nm.equals(" C ") || nm.equals(" O "))) { AtomState s1 = start.get(a1); AtomState s2; if (a2 != null) { s2 = idealResState.get(a2); } else { s2 = idealResStatev23.get(idealResv23.getAtom(nm)); //should only be called on atoms that got changed. } AtomState s3 = (AtomState)s1.clone(); //System.out.println("moving "+s2.toString()+" onto "+s3.toString()); xform.transform(s2, s3); // transforms it into position end.add(s3); } } catch(AtomException ex) {} // no action } // Correct for non-ideal tau angle end = idealizeCB(res, end); // Restore original orientation (chi angles) end = scAngles.setAllAngles(res, end, chis); return end; } catch(AtomException ex) { return start; } } */ //}}} //{{{ makeIdealResidue //################################################################################################## /** * Creates an ideal geometry residue at an arbitrary position/orientation. * @param chain the chain ID. Not zero. Space (' ') is a good default. * @param segment the seg ID. Not null. Empty string ("") is a good default. * @param seqNum the number in sequence. May have any value. * @param insCode the insertion code. Not zero. Space (' ') is a good default. * @param residues Collection of 2 residues. * @param puckers string of the pucker types wanted (33, 32, 23, or 22). * @param outputState a ModelState that will have the new AtomStates added to it. * @param doPdbv3 boolean for making a residue with Pdbv3 names (vs pdbv2.3 names) * @return Collection of new residues of the specified pucker. * @throws IllegalArgumentException if aaType is not a recognized amino acid code. */ public ModelState makeIdealResidue(ModelState origState, Collection residues, String puckers, boolean doPdbv3) throws AtomException { // Get template Model idealModel = (Model)idealResMap.get(puckers); ModelState idealState = idealModel.getState(); ArrayList origResidues = new ArrayList(residues); //Residue dRes = (Residue) origResidues.get(dockRes); // first dock ideal on residue ModelState dockedIdealState = dock3on3Residues(idealModel.getResidues(), idealState, origResidues, origState); //System.out.println("docked\n"+dockedIdealState.debugStates()); //debugModelState(residues, origState, "orig.pdb"); ArrayList idealResidues = new ArrayList(idealModel.getResidues()); // tranform all base atoms based on glyc bond ModelState dockedBases = dockBases(origResidues, origState, idealResidues, dockedIdealState); //System.out.println("docked\n"+dockedBases.debugStates()); //debugModelState(residues, dockedBases, "dockbase.pdb"); //System.out.println("orig\n"+origState.debugStates(10)); // change all atomstates in original to ideal (since ideal don't have sidechains, this only does backbone) ModelState idealOrigState = new ModelState(origState); for (int i = 0; i < idealResidues.size(); i++) { Residue ideal = (Residue)idealResidues.get(i); Residue orig = (Residue)origResidues.get(i); Iterator origAtoms = orig.getAtoms().iterator(); while (origAtoms.hasNext()) { Atom origAt = (Atom) origAtoms.next(); if (isBackboneAtom(origAt)) { Atom idealAt = ideal.getAtom(origAt.getName()); //System.out.println("orig "+origAt); //System.out.println("ideal "+idealAt); //if (idealAt != null) { // since ideal residues don't have base atoms AtomState idealAtSt = dockedIdealState.get(idealAt); AtomState origAtSt = origState.get(origAt); //System.out.println("ideal: "+idealAtSt); AtomState origClone = (AtomState) origAtSt.cloneFor(origAt); origClone.setXYZ(idealAtSt.getX(), idealAtSt.getY(), idealAtSt.getZ()); //System.out.println("orig : "+origAtSt); //System.out.println("clone: "+origClone); idealOrigState.add(origClone); //} } else { AtomState dockedAtSt = dockedBases.get(origAt); AtomState origAtSt = origState.get(origAt); AtomState origClone = (AtomState) origAtSt.cloneFor(origAt); origClone.setXYZ(dockedAtSt.getX(), dockedAtSt.getY(), dockedAtSt.getZ()); idealOrigState.add(origClone); } } } //debugModelState(residues, idealOrigState, "idealed.pdb"); //System.out.println("idealorig\n"+idealOrigState.debugStates(10)); return idealOrigState; } //}}} //{{{ dock3on3Residues //################################################################################################## /** * Docks the RNA suite on the P and oxygens using 3 point docking. The P is moved * to match the reference P position exactly. * Neither of the original states is modified. * @throws AtomException if the N, CA, or C atom is missing in from or to. */ public ModelState dock3on3Residues(Collection mobResidues, ModelState mob, Collection refResidues, ModelState ref) throws AtomException { ArrayList mobResList = new ArrayList(mobResidues); Residue mobRes0 = (Residue) mobResList.get(0); Residue mobRes1 = (Residue) mobResList.get(1); ArrayList refResList = new ArrayList(refResidues); Residue refRes0 = (Residue) refResList.get(0); Residue refRes1 = (Residue) refResList.get(1); // Reposition all atoms Transform xform = builder.dock3on3( ref.get(refRes1.getAtom(" P ")), ref.get(refRes1.getAtom(" O5'")), ref.get(refRes0.getAtom(" O3'")), mob.get(mobRes1.getAtom(" P ")), mob.get(mobRes1.getAtom(" O5'")), mob.get(mobRes0.getAtom(" O3'")) ); ModelState out = new ModelState(); for (Iterator allRes = mobResList.iterator(); allRes.hasNext(); ) { Residue mobRes = (Residue) allRes.next(); for(Iterator iter = mobRes.getAtoms().iterator(); iter.hasNext(); ) { Atom a = (Atom) iter.next(); AtomState s1 = mob.get(a); AtomState s2 = (AtomState) s1.clone(); out.add(s2); xform.transform(s2); } } // Reposition backbone atoms //out.get(mobRes.getAtom(" P ")).like(ref.get(refRes.getAtom(" P "))); //out.get(mobRes.getAtom(" C1'")).like(ref.get(refRes.getAtom(" C1'"))); //out.get(mobRes.getAtom(" O3'")).like(ref.get(refRes.getAtom(" O3'"))); //try { out.get(mobRes.getAtom(" O ")).like(ref.get(refRes.getAtom(" O "))); } catch(AtomException ex) {} //try { out.get(mobRes.getAtom(" H ")).like(ref.get(refRes.getAtom(" H "))); } catch(AtomException ex) {} return out; } //}}} //{{{ dockResidues public ModelState dockResidues(Collection mobResidues, ModelState mob, Collection refResidues, ModelState ref, Collection atoms) throws AtomException { //debugModelState(mobResidues, mob, "mobile.pdb"); //debugModelState(refResidues, ref, "reference.pdb"); ArrayList mobResList = new ArrayList(mobResidues); Residue mobRes0 = (Residue) mobResList.get(0); Residue mobRes1 = (Residue) mobResList.get(1); ArrayList refResList = new ArrayList(refResidues); Residue refRes0 = (Residue) refResList.get(0); Residue refRes1 = (Residue) refResList.get(1); ArrayList atomsList = new ArrayList(atoms); Collection atoms0 = (Collection) atomsList.get(0); //System.out.println(atoms0); Collection atoms1 = (Collection) atomsList.get(1); //System.out.println(atoms1); ArrayList mobAtSts = new ArrayList(); ArrayList refAtSts = new ArrayList(); for (Iterator iter0 = atoms0.iterator(); iter0.hasNext(); ) { String atom = (String) iter0.next(); AtomState refAtSt = ref.get(refRes0.getAtom(atom)); AtomState mobAtSt = mob.get(mobRes0.getAtom(atom)); mobAtSts.add(mobAtSt); refAtSts.add(refAtSt); } for (Iterator iter1 = atoms1.iterator(); iter1.hasNext(); ) { String atom = (String) iter1.next(); AtomState refAtSt = ref.get(refRes1.getAtom(atom)); AtomState mobAtSt = mob.get(mobRes1.getAtom(atom)); mobAtSts.add(mobAtSt); refAtSts.add(refAtSt); } // System.out.println("mobile: "); // for (AtomState as : mobAtSts) System.out.println(as.format(new DecimalFormat("0.000"))); // System.out.println("ref: "); // for (AtomState as : refAtSts) System.out.println(as.format(new DecimalFormat("0.000"))); // Reposition all atoms SuperPoser poser = new SuperPoser(refAtSts.toArray(new AtomState[refAtSts.size()]), mobAtSts.toArray(new AtomState[mobAtSts.size()])); Transform xform = poser.superpos(); //System.out.println(xform); ModelState out = new ModelState(mob); for (Iterator allRes = mobResList.iterator(); allRes.hasNext(); ) { Residue mobRes = (Residue) allRes.next(); for(Iterator iter = mobRes.getAtoms().iterator(); iter.hasNext(); ) { Atom a = (Atom) iter.next(); AtomState s1 = mob.get(a); AtomState s2 = (AtomState) s1.clone(); xform.transform(s2); out.add(s2); } } // Reposition backbone atoms //out.get(mobRes.getAtom(" P ")).like(ref.get(refRes.getAtom(" P "))); //out.get(mobRes.getAtom(" C1'")).like(ref.get(refRes.getAtom(" C1'"))); //out.get(mobRes.getAtom(" O3'")).like(ref.get(refRes.getAtom(" O3'"))); //try { out.get(mobRes.getAtom(" O ")).like(ref.get(refRes.getAtom(" O "))); } catch(AtomException ex) {} //try { out.get(mobRes.getAtom(" H ")).like(ref.get(refRes.getAtom(" H "))); } catch(AtomException ex) {} return out; } //}}} //{{{ dockBases public ModelState dockBases(Collection mobResidues, ModelState mob, Collection refResidues, ModelState ref) throws AtomException { if (mobResidues.size() != refResidues.size()) SoftLog.err.println("Must have the same number of residues in both inputs to dock bases!"); else { ArrayList mobList = new ArrayList(mobResidues); ArrayList refList = new ArrayList(refResidues); ModelState out = new ModelState(); for (int i = 0; i < mobList.size(); i++) { Residue mobRes = (Residue) mobList.get(i); Residue refRes = (Residue) refList.get(i); //System.out.println(ref.get(refRes.getAtom(" C1'"))); //System.out.println(ref.get(getBaseBondAtom(refRes))); //System.out.println(ref.get(refRes.getAtom(" O4'"))); //System.out.println(mob.get(mobRes.getAtom(" C1'"))); //System.out.println(mob.get(getBaseBondAtom(mobRes))); //System.out.println(mob.get(mobRes.getAtom(" O4'"))); Transform xform = builder.dock3on3( ref.get(refRes.getAtom(" C1'")), ref.get(getBaseBondAtom(refRes)), ref.get(refRes.getAtom(" O4'")), mob.get(mobRes.getAtom(" C1'")), mob.get(getBaseBondAtom(mobRes)), mob.get(mobRes.getAtom(" O4'")) ); for(Iterator iter = mobRes.getAtoms().iterator(); iter.hasNext(); ) { Atom a = (Atom) iter.next(); AtomState s1 = mob.get(a); //System.out.println(s1); AtomState s2 = (AtomState) s1.clone(); //out.add(s2); if (!isBackboneAtom(a)) { //System.out.println("transforming"); Tuple3 transed = xform.transform(s2); s2.setXYZ(transed.getX(), transed.getY(), transed.getZ()); //System.out.println(s1); out.add(s2); } } } return out; } return null; } //}}} //{{{ isBackboneAtom public boolean isBackboneAtom(Atom a) { return ( (a.getName().indexOf("'") > -1)|| (a.getName().indexOf("*") > -1)|| (a.getName().equals(" P "))|| (a.getName().equals(" OP1"))|| (a.getName().equals(" OP2"))); } //}}} //{{{ getBaseBondAtom public Atom getBaseBondAtom(Residue res) throws AtomException { Atom at = null; at = res.getAtom(" N9 "); if (at == null) at = res.getAtom(" N1 "); if (at == null) { Iterator atoms = res.getAtoms().iterator(); while (atoms.hasNext()||(at != null)) { Atom test = (Atom) atoms.next(); if (!isBackboneAtom(test)) at = test; } } if (at == null) throw new AtomException(res.getName()+"does not seem to have base atoms"); return at; } //}}} //{{{ debugModelState /** Writes a debug PDB into the current working directory. If the PDB exists, * then this will add a number to the filename to make a new file. * @param residues a collection of Residues * @param state a ModelState with corresponding state info. * @param filename a filename, with extension (i.e. .pdb). */ public void debugModelState(Collection residues, ModelState state, String fileName) { try { File outFile = new File(System.getProperty("user.dir")+"-"+fileName); int counter = 0; while (outFile.exists()) { String[] split = Strings.explode(fileName, '.'); String newName = ""; for (int i = 0; i < split.length-1; i++) { newName = newName + split[i]; } newName = newName + "." + counter +"." + split[split.length-1]; outFile = new File(System.getProperty("user.dir")+"-"+newName); counter++; } System.out.println("writing file to "+outFile.toString()); PdbWriter writer = new PdbWriter(outFile); writer.writeResidues(residues, state); writer.close(); } catch (IOException ie) { ie.printStackTrace(); } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/util/0000755000000000000000000000000011677360410017475 5ustar rootrootking-2.21.120420/extratools/src/king/tool/util/KinUtil.java0000644000000000000000000002121711744305704021722 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.util; import king.*; import king.core.*; import java.util.*; import java.util.regex.*; import driftwood.moldb2.AminoAcid; import driftwood.util.Strings; //}}} public class KinUtil { static Pattern chainResPattern = Pattern.compile("[A-Z][0-9]{4}"); static Pattern intPattern = Pattern.compile("[0-9]+"); //{{{ Constructor public KinUtil() { } //}}} //{{{ getFirstGroupName public static String getFirstGroupName(Kinemage kin) { Iterator kinIter = kin.iterator(); //while (kinIter.hasNext()) { KGroup group = (KGroup) kinIter.next(); return group.getName(); } //}}} //{{{ getResNumString // similar to the other getResNumber, but this one is to keep // insertion code info. public static String getResNumString(KPoint point) { String name = point.getName().trim(); String[] parsed = Strings.explode(name, " ".charAt(0), false, true); // another pass to see if there are any AAName + int in name. if (parsed.length > 1) { if (parsed[1].length() > 3) { String parseValue = parsed[1].substring(3); if (isInteger(parseValue)) { //System.out.print(parseValue + " "); return parseValue; } } } // one pass to see if there are any straight up ints in the name for (int i = 0; i < parsed.length; i++) { String parseValue = parsed[i]; //System.out.println(parseValue + ", " + i); if (isInteger(parseValue)) { //if (Integer.parseInt(parseValue)>0) { // resnumbers can be neg!? return parseValue; //} } } // for insertions (1a, 1b, 1c, etc). //System.out.println(parsed[3]); //System.out.println(parsed[3].length()); for (int i = 0; i < parsed.length; i++) { if (parsed[i] != null) { String parseValue = parsed[i].substring(0, parsed[i].length()-1); //System.out.println(parseValue + ", " + i); if (isInteger(parseValue)) { //if (Integer.parseInt(parseValue)>0) { return parsed[i]; //} } } } return ""; } //}}} public static String getLastString(String name) { String[] parsed = Strings.explode(name, " ".charAt(0), false, true); return parsed[parsed.length - 1]; } public static int getResNumber(KPoint point) { String name = point.getName().trim(); return getResNumber(name); } //{{{ getResNumber //################################################################################################### /** * Helper function to get the residue number of parentList. It gets the first KPoint in the KList, * and extracts the residue number from the name. EXTREMELY dependent on the format of the name of the KPoint. * **/ public static int getResNumber(String name) { //String name = point.getName().trim(); String[] uncleanParsed = name.trim().split(" "); //String[] parsed = new String[uncleanParsed.length]; String[] parsed = Strings.explode(name, " ".charAt(0), false, true); int parsedInt; // To clean out the empty strings from the split name. //for (int i = 0; i < uncleanParsed.length; i++) { // String unclean = uncleanParsed[i]; // if ((!unclean.equals(""))&&(!unclean.equals(" "))) { // parsed[i2] = unclean; // i2++; // } //} // another pass to see if there are any AAName + int in name. if (parsed.length > 1) { if (parsed[1].length() > 3) { String parseValue = parsed[1].substring(3); if (isInteger(parseValue)) { //System.out.print(parseValue + " "); return Integer.parseInt(parseValue); } } } // one pass to see if there are any straight up ints in the name for (int i = parsed.length - 1; i > -1; i--) { String parseValue = parsed[i]; //System.out.println(parseValue + ", " + i); if (isInteger(parseValue)) { parsedInt = Integer.parseInt(parseValue); if (parsedInt>0) { return parsedInt; } } } // for insertions (1a, 1b, 1c, etc). //System.out.println(parsed[3]); //System.out.println(parsed[3].length()); for (int i = 0; i < parsed.length; i++) { if (parsed[i] != null) { String parseValue = parsed[i].substring(0, parsed[i].length()-1); //System.out.println(parseValue + ", " + i); if (isInteger(parseValue)) { parsedInt = Integer.parseInt(parseValue); if (parsedInt>0) { return parsedInt; } } } } // for chain-resnumber runons (only happens in large files (e.g. ribosome) for (int i = 0; i < parsed.length; i++) { Matcher matcher = chainResPattern.matcher(parsed[i]); if ((parsed[i] != null)&&(matcher.matches())) { String parseValue = parsed[i].substring(1, parsed[i].length()); return Integer.parseInt(parseValue); } } //if (isNumeric(parsed[3].substring(0, parsed[3].length()-1))) { // return Integer.parseInt(parsed[3].substring(0, parsed[3].length()-1)); //} return -1; } //}}} public static String getChainID(KPoint point) { String name = point.getName().trim(); return getChainID(name); } public static String getChainID(String name) { String[] parsed = Strings.explode(name, " ".charAt(0), false, true); if (parsed.length > 2) { if (parsed[2].length() == 1) { return parsed[2]; } } return " "; } public static boolean isInteger(String s) { //try { // Integer.parseInt(s); // return true; //} catch (NumberFormatException e) { // return false; //} catch (NullPointerException e) { // return false; //} Matcher matcher = intPattern.matcher(s); return matcher.matches(); } public static boolean isNumeric(String s) { try { Double.parseDouble(s); return true; } catch (NumberFormatException e) { return false; } } public static String getAtomName(KPoint point) { String name = point.getName().trim(); return getAtomName(name); } public static String getAtomName(String name) { //String[] uncleanParsed = name.split(" "); //String[] parsed = new String[uncleanParsed.length]; //int i2 = 0; //// To clean out the empty strings from the split name. // //for (int i = 0; i < uncleanParsed.length; i++) { // String unclean = uncleanParsed[i]; // if ((!unclean.equals(""))&&(!unclean.equals(" "))) { // parsed[i2] = unclean; // i2++; // } //} String[] parsed = Strings.explode(name, " ".charAt(0), false, true); if (parsed[0].matches("\\([0-9]*\\).*")) return parsed[1]; return parsed[0]; } public static String getResName(KPoint point) { String name = point.getName().trim(); return getResName(name); } // quick and dirty way of getting residue name. public static String getResName(String name) { //String name = point.getName().trim(); String[] uncleanParsed = name.split(" "); String[] parsed = new String[uncleanParsed.length]; int i2 = 0; String returnString = ""; // To clean out the empty strings from the split name. for (int i = 0; i < uncleanParsed.length; i++) { String unclean = uncleanParsed[i]; if ((!unclean.equals(""))&&(!unclean.equals(" "))) { parsed[i2] = unclean; i2++; } } return parsed[1]; //while ((returnString.equals("")&& } //more robust way of getting residue name, but limited to real AAs. public static String getResAA(String name) { // substring is to prevent silly bug where the wrong amino acid type // the pdbID that is sometimes in the pointIDs. return AminoAcid.getAAName(name.substring(0,10)); } public static double getBvalue(KPoint point) { String name = point.getName().trim(); return getBvalue(name); } public static double getBvalue(String name) { //String[] uncleanParsed = name.split(" "); //String[] parsed = new String[uncleanParsed.length]; String[] parsed = Strings.explode(name, " ".charAt(0), false, true); for (int i = 0; i < parsed.length; i++) { String parseValue = parsed[i]; if (parseValue.charAt(0) == 'B') { String bVal = parseValue.substring(1); return Double.parseDouble(bVal); } } return 0; } //{{{ getPdbName public static String getPdbName(String name) { String[] parsed = Strings.explode(name, " ".charAt(0), false, true); String lastVal = parsed[parsed.length - 1]; if ((lastVal.length() > 3)&&(lastVal.charAt(0) != 'B')) { return lastVal; } return null; } //}}} } king-2.21.120420/extratools/src/king/tool/nmr/0000755000000000000000000000000011677360410017314 5ustar rootrootking-2.21.120420/extratools/src/king/tool/nmr/CoCenterTool.java0000644000000000000000000005045211571460626022530 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.nmr; import king.*; import king.core.*; //import java.io.*; import javax.swing.*; import javax.swing.Timer; import java.awt.event.*; import java.awt.*; import java.net.*; import java.util.*; //import java.text.*; // import driftwood.gui.*; import driftwood.data.*; //import Jama.*; //import driftwood.moldb2.*; import driftwood.util.*; import king.tool.util.*; //import chiropraxis.kingtools.*; //import king.tool.util.*; //}}} /** * CoCenterTool is for cocentering an ensemble of structures on a * a single point. * *

Copyright (C) 2007 by Vincent B. Chen. All rights reserved. *
Begun Wed Nov 07 14:17:42 EST 2007 **/ public class CoCenterTool extends BasicTool { //{{{ Constants //}}} //{{{ Variables TablePane2 pane; JButton resetButton; JTextField prevNumField; JTextField currNumField; JTextField nextNumField; JComboBox atomsBox; JRadioButton doNormalButton; JRadioButton doParensButton; JCheckBox doSlideBox; ArrayList origCoords = null; int current = Integer.MIN_VALUE; //int currentParen = Integer.MIN_VALUE; ReflectiveAction backAct; ReflectiveAction fwdAct; WrapMap groupData; Timer smoothTimer; float xincr; float yincr; float zincr; float[] center; int slideCounter; //}}} //{{{ Constructors public CoCenterTool(ToolBox tb) { super(tb); } //}}} //{{{ start public void start() { groupData = new WrapMap(); analyzeKin(kMain.getKinemage()); if (pane == null) { buildGUI(); } show(); pane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke('j'), "doFwd"); pane.getActionMap().put("doFwd", fwdAct); kMain.getContentPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke('j'), "doFwd"); kMain.getContentPane().getActionMap().put("doFwd", fwdAct); pane.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke('J'), "doBack"); pane.getActionMap().put("doBack", backAct); kMain.getContentPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW).put(KeyStroke.getKeyStroke('J'), "doBack"); kMain.getContentPane().getActionMap().put("doBack", backAct); smoothTimer = new Timer(20, new ReflectiveAction(null, null, this, "onSmooth")); slideCounter = 1; // Helpful hint for users: this.services.setID("Ctrl-click, option-click, or middle-click a point to co-center"); } public void stop() { onReset(null); origCoords = null; hide(); } //}}} //{{{ analyzeKin public void analyzeKin(Kinemage kin) { KIterator points = KIterator.allPoints(kin); for (KPoint p : points) { String pName = p.getName(); if (pName.matches("\\([0-9]*\\).*")) { String paren = getParen(p); if (groupData.containsKey(paren)) { ParenGroup pGroup = (ParenGroup) groupData.get(paren); pGroup.add(p); } else { ParenGroup pGroup = new ParenGroup(Integer.parseInt(paren)); pGroup.add(p); groupData.put(paren, pGroup); } } } } //}}} //{{{ onSelected public void onSelected(ActionEvent ev) { if (ev.getActionCommand().equals("Cocenter on parens")) { if (current == Integer.MIN_VALUE) { nextNumField.setText("("+groupData.firstKey()+")"); prevNumField.setText("("+groupData.lastKey()+")"); } else { nextNumField.setText(""); prevNumField.setText(""); currNumField.setText(""); } } else { nextNumField.setText(""); prevNumField.setText(""); currNumField.setText(Integer.toString(current)); } } //}}} //{{{ buildGUI public void buildGUI() { String[] atoms = {"n", "ca", "c", "o", "p"}; atomsBox = new JComboBox(atoms); resetButton = new JButton(new ReflectiveAction("Reset Coordinates", null, this, "onReset")); prevNumField = new JTextField(4); currNumField = new JTextField(4); nextNumField = new JTextField(4); backAct = new ReflectiveAction(null, kMain.getPrefs().stepBackIcon, this, "onBackward"); //backAct.setAccelerator(KeyStroke.getKeyStroke('N')); JMenuItem backMenu = new JMenuItem(backAct); JButton backButton = new JButton(backAct); backButton.setToolTipText("Cocenter and center on previous residue"); JButton currButton = new JButton(new ReflectiveAction("||", null, this, "onCurrent")); fwdAct = new ReflectiveAction(null, kMain.getPrefs().stepForwardIcon, this, "onForward"); JMenuItem fwdMenu = new JMenuItem(fwdAct); JButton fwdButton = new JButton(fwdAct); fwdButton.setToolTipText("Cocenter and center on next residue"); doNormalButton = new JRadioButton(new ReflectiveAction("Cocenter normally", null, this, "onSelected")); doNormalButton.setSelected(true); doParensButton = new JRadioButton(new ReflectiveAction("Cocenter on parens", null, this, "onSelected")); ButtonGroup cocGroup = new ButtonGroup(); cocGroup.add(doNormalButton); cocGroup.add(doParensButton); doSlideBox = new JCheckBox("Slide to next point"); pane = new TablePane2(); pane.newRow(); pane.skip(); pane.add(prevNumField); pane.add(currNumField); pane.add(nextNumField); pane.newRow(); pane.add(atomsBox); pane.add(backButton); pane.add(currButton); pane.add(fwdButton); pane.newRow(); pane.add(resetButton, 4, 1); pane.newRow(); pane.add(doNormalButton, 4, 1); pane.newRow(); pane.add(doParensButton, 4, 1); pane.newRow(); pane.add(doSlideBox, 4, 1); } //}}} //{{{ c_click //############################################################################## /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { if (origCoords == null) { origCoords = new ArrayList(); Iterator groups = kMain.getKinemage().iterator(); while (groups.hasNext()) { KGroup group = (KGroup) groups.next(); KGroup clone = group.clone(true); origCoords.add(clone); } } if(p != null) { cocenter(p, kMain.getKinemage()); } } //}}} //{{{ cocenter public void cocenter(KPoint p, Kinemage kin) { long startTime = System.currentTimeMillis(); setOrigCoords(); current = KinUtil.getResNumber(p); String pName = p.getName(); if (pName.matches("\\([0-9]*\\).*")) { pName = pName.substring(pName.indexOf(")")+1, pName.length()).trim(); } if (pName.length() > 14) pName = pName.substring(0, 14); //System.out.println(pName); Iterator iter = kin.iterator(); while (iter.hasNext()) { KGroup group = (KGroup) iter.next(); KIterator pts = KIterator.allPoints(group); boolean foundPt = false; double xtrans = Double.NaN; double ytrans = Double.NaN; double ztrans = Double.NaN; while (pts.hasNext() && !foundPt) { KPoint test = pts.next(); String testName = test.getName(); if (testName.matches("\\([0-9]*\\).*")) { testName = testName.substring(testName.indexOf(")")+1, testName.length()).trim(); } if (testName.length() > 14) testName = testName.substring(0, 14); if (testName.equals(pName)) { foundPt = true; xtrans = test.getX()-p.getX(); ytrans = test.getY()-p.getY(); ztrans = test.getZ()-p.getZ(); } } if (foundPt) { pts = KIterator.allPoints(group); for (KPoint pt : pts) { pt.setX(pt.getX() - xtrans); pt.setY(pt.getY() - ytrans); pt.setZ(pt.getZ() - ztrans); } } } //System.out.println("Cocenter took "+(System.currentTimeMillis()-startTime)/1000.0+" seconds"); } //}}} //{{{ cocenterParens /** Cocenters on a number in parens in point ID **/ public void cocenterParens(KPoint p, Kinemage kin) { long startTime = System.currentTimeMillis(); setOrigCoords(); String matchParen = getParen(p); //System.out.println(matchParen); current = Integer.parseInt(matchParen); Iterator iter = kin.iterator(); while (iter.hasNext()) { KGroup group = (KGroup) iter.next(); KIterator pts = KIterator.allPoints(group); boolean foundPt = false; double xtrans = Double.NaN; double ytrans = Double.NaN; double ztrans = Double.NaN; while (pts.hasNext() && !foundPt) { KPoint test = pts.next(); String testParen = getParen(test); if (testParen.equals(matchParen)) { foundPt = true; xtrans = test.getX()-p.getX(); ytrans = test.getY()-p.getY(); ztrans = test.getZ()-p.getZ(); } } if (foundPt) { pts = KIterator.allPoints(group); for (KPoint pt : pts) { pt.setX(pt.getX() - xtrans); pt.setY(pt.getY() - ytrans); pt.setZ(pt.getZ() - ztrans); } } } //System.out.println("Cocenter took "+(System.currentTimeMillis()-startTime)/1000.0+" seconds"); } //}}} //{{{ setOrigCoords public void setOrigCoords() { if (origCoords == null) { origCoords = new ArrayList(); Iterator groups = kMain.getKinemage().iterator(); while (groups.hasNext()) { KGroup group = (KGroup) groups.next(); KGroup clone = group.clone(true); origCoords.add(clone); } } } //}}} //{{{ onReset public void onReset(ActionEvent ev) { if (origCoords == null) return; Kinemage kin = kMain.getKinemage(); Iterator iter = kin.iterator(); int i = 0; //System.out.println("Testing"); while (iter.hasNext()) { KGroup group = (KGroup) iter.next(); KIterator points = KIterator.allPoints(group); if (points.hasNext()) { KPoint p = points.next(); String pName = p.getName(); KGroup origGroup = (KGroup) origCoords.get(i); KIterator pts = KIterator.allPoints(origGroup); boolean foundPt = false; double xtrans = Double.NaN; double ytrans = Double.NaN; double ztrans = Double.NaN; while (pts.hasNext() && !foundPt) { KPoint test = pts.next(); String testName = test.getName(); if (testName.equals(pName)) { foundPt = true; xtrans = p.getX()-test.getX(); ytrans = p.getY()-test.getY(); ztrans = p.getZ()-test.getZ(); //System.out.println(new Double(test.getX()) +","+ new Double(test.getY()) +","+ new Double(test.getZ())); } } if (foundPt) { pts = KIterator.allPoints(group); for (KPoint pt : pts) { pt.setX(pt.getX() - xtrans); pt.setY(pt.getY() - ytrans); pt.setZ(pt.getZ() - ztrans); } } } i++; } } //}}} //{{{ onForward/Backward public void onForward(ActionEvent ev) { long startTime = System.currentTimeMillis(); KPoint next = findNextPoint(doParensButton.isSelected()); //System.out.println("Finding match point took "+(System.currentTimeMillis()-startTime)/1000.0+" seconds"); coReCenter(next, doParensButton.isSelected()); } public void onBackward(ActionEvent ev) { long startTime = System.currentTimeMillis(); KPoint prev = findPrevPoint(doParensButton.isSelected()); //System.out.println("Finding match point took "+(System.currentTimeMillis()-startTime)/1000.0+" seconds"); coReCenter(prev, doParensButton.isSelected()); //Kinemage kin = kMain.getKinemage(); //KIterator points = KIterator.visiblePoints(kin); //KPoint point = null; //KPoint highPoint = null; //int highResNum = Integer.MIN_VALUE; //while (point == null && points.hasNext()) { // KPoint testPt = points.next(); // String atomName = KinUtil.getAtomName(testPt).toLowerCase(); // if (atomName.equals((String)atomsBox.getSelectedItem())) { // int resNum = KinUtil.getResNumber(testPt); // if (resNum == current - 1) { // point = testPt; // } else if (resNum > highResNum) { // highResNum = resNum; // highPoint = testPt; // } // } //} //if (point != null) { // cocenter(point, kin); // services.pick(point); // services.centerOnPoint(point); //} else { // if (highPoint != null) { // cocenter(highPoint, kin); // services.pick(highPoint); // services.centerOnPoint(highPoint); // } //} } //}}} //{{{ onCurrent public void onCurrent(ActionEvent ev) { if (Integer.parseInt(currNumField.getText()) != current) { current = Integer.parseInt(currNumField.getText()); } KPoint curr = findCurrentPoint(doParensButton.isSelected()); coReCenter(curr, doParensButton.isSelected()); } //}}} //{{{ findCurrentPoint public KPoint findCurrentPoint(boolean useParens) { Kinemage kin = kMain.getKinemage(); KIterator points = KIterator.visiblePoints(kin); KPoint point = null; while (points.hasNext()) { KPoint testPt = points.next(); int testNum = Integer.MIN_VALUE; if (useParens) { String paren = getParen(testPt); if (!paren.equals("")) testNum = Integer.parseInt(paren); } else { String atomName = KinUtil.getAtomName(testPt).toLowerCase(); if (atomName.equals((String)atomsBox.getSelectedItem())) { testNum = KinUtil.getResNumber(testPt); } } if (testNum != Integer.MIN_VALUE) { if (testNum == current) { return testPt; } } } return null; } //}}} //{{{ findNextPoint public KPoint findNextPoint(boolean useParens) { Kinemage kin = kMain.getKinemage(); KIterator points = KIterator.visiblePoints(kin); KPoint point = null; KPoint lowestPoint = null; int lowestNum = Integer.MAX_VALUE; int nearestNum = Integer.MAX_VALUE; while (points.hasNext()) { KPoint testPt = points.next(); int testNum = Integer.MIN_VALUE; if (useParens) { String paren = getParen(testPt); if (!paren.equals("")) testNum = Integer.parseInt(paren); } else { String atomName = KinUtil.getAtomName(testPt).toLowerCase(); if (atomName.equals((String)atomsBox.getSelectedItem())) { testNum = KinUtil.getResNumber(testPt); } } if (testNum != Integer.MIN_VALUE) { if (testNum == current + 1) { currNumField.setText(Integer.toString(testNum)); return testPt; } if ((testNum > current)&&(testNum < nearestNum)) { point = testPt; nearestNum = testNum; } else if (testNum < lowestNum) { lowestNum = testNum; lowestPoint = testPt; } } } String text = null; KPoint retPoint = null; if (point != null) { text = Integer.toString(nearestNum); retPoint = point; } else if (lowestPoint != null) { text = Integer.toString(lowestNum); retPoint = lowestPoint; } if (useParens) { prevNumField.setText("("+groupData.keyBefore(text)+")"); nextNumField.setText("("+groupData.keyAfter(text)+")"); text = "("+text+")"; } currNumField.setText(text); return retPoint; } //}}} //{{{ findPrevPoint public KPoint findPrevPoint(boolean useParens) { Kinemage kin = kMain.getKinemage(); KIterator points = KIterator.visiblePoints(kin); KPoint point = null; KPoint highestPoint = null; int highestNum = Integer.MIN_VALUE; int nearestNum = Integer.MIN_VALUE; while (points.hasNext()) { KPoint testPt = points.next(); int testNum = Integer.MAX_VALUE; if (useParens) { String paren = getParen(testPt); if (!paren.equals("")) testNum = Integer.parseInt(paren); } else { String atomName = KinUtil.getAtomName(testPt).toLowerCase(); if (atomName.equals((String)atomsBox.getSelectedItem())) { testNum = KinUtil.getResNumber(testPt); } } if (testNum != Integer.MAX_VALUE) { if (testNum == current - 1) { currNumField.setText(Integer.toString(testNum)); return testPt; } if ((testNum < current)&&(testNum > nearestNum)) { point = testPt; nearestNum = testNum; } else if (testNum > highestNum) { highestNum = testNum; highestPoint = testPt; } } } String text = null; KPoint retPoint = null; if (point != null) { text = Integer.toString(nearestNum); retPoint = point; } else if (highestPoint != null) { text = Integer.toString(highestNum); retPoint = highestPoint; } if (useParens) { prevNumField.setText("("+groupData.keyBefore(text)+")"); nextNumField.setText("("+groupData.keyAfter(text)+")"); text = "("+text+")"; } currNumField.setText(text); return retPoint; } //}}} //{{{ coReCenter public void coReCenter(KPoint point, boolean doParens) { Kinemage kin = kMain.getKinemage(); if (point != null) { if (doSlideBox.isSelected()) smoothCenter(point); else services.centerOnPoint(point); if (doParens) cocenterParens(point, kin); else cocenter(point, kin); services.pick(point); //services.centerOnPoint(point); } } //}}} //{{{ smoothCenter public void smoothCenter(KPoint point) { KView view = kMain.getView(); center = view.getCenter(); //for (float f : center) System.out.println(f); float xdiff = (float) point.getX() - center[0]; float ydiff = (float) point.getY() - center[1]; float zdiff = (float) point.getZ() - center[2]; xincr = xdiff / 30; yincr = ydiff / 30; zincr = zdiff / 30; smoothTimer.start(); //for (int i = 1; i <= 20; i++) { // view.setCenter(center[0]+xincr*i, center[1]+yincr*i, center[2]+zincr*i); //} } public void onSmooth(ActionEvent ev) { KView view = kMain.getView(); //for (float f : center) System.out.print(f+" "); //System.out.println(); view.setCenter(center[0]+(float)(xincr*15*(Math.sin(Math.PI*slideCounter/30-Math.PI/2)+1)), center[1]+(float)(yincr*15*(Math.sin(Math.PI*slideCounter/30-Math.PI/2)+1)), center[2]+(float)(zincr*15*(Math.sin(Math.PI*slideCounter/30-Math.PI/2)+1))); slideCounter++; if (slideCounter > 30) { //for (float f : view.getCenter()) System.out.println(f); slideCounter = 1; smoothTimer.stop(); } } //}}} //{{{ getParen public String getParen(KPoint p) { String name = p.getName(); if (name.matches("\\([0-9]*\\).*")) { String[] parsed = Strings.explode(p.getName(), " ".charAt(0), false, true); //String matchParen = ""; for (String s : parsed) { if (s.matches("\\([0-9]*\\)")) { return s.substring(1, s.length()-1); } } } return ""; } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return pane; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#co-center-tool"; } public String toString() { return "Co-center tool"; } //}}} } king-2.21.120420/extratools/src/king/tool/nmr/ParenTool.java0000644000000000000000000001407311531213012022047 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.nmr; import king.*; import king.core.*; import javax.swing.*; import java.util.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; import java.net.*; import driftwood.util.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * ParenTool * *

Copyright (C) 2009 by Vincent B. Chen. All rights reserved. *
Begun Fri May 08 15:08:17 EDT 2009 **/ public class ParenTool extends BasicTool implements ListSelectionListener { //{{{ Constants //}}} //{{{ Variables TablePane2 pane; JList drawingPaneList; HashMap groupData; //}}} //{{{ Constructors public ParenTool(ToolBox tb) { super(tb); } //}}} //{{{ buildGUI public void buildGUI() { Icon greenPlus = new ImageIcon(getClass().getResource("greenplus.png")); Icon redMinus = new ImageIcon(getClass().getResource("redminus.png")); JButton addButton = new JButton(new ReflectiveAction("Add group", greenPlus, this, "onAdd")); JButton removeButton = new JButton(new ReflectiveAction("Remove group", redMinus, this, "onMinus")); drawingPaneList = new FatJList(0, 4); drawingPaneList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); drawingPaneList.setVisibleRowCount(8); drawingPaneList.addListSelectionListener(this); pane = new TablePane2(); pane.newRow(); pane.add(addButton); pane.addCell(new JScrollPane(drawingPaneList), 1, 2); pane.newRow(); pane.add(removeButton); } //}}} //{{{ start public void start() { if (pane == null) { buildGUI(); } groupData = new HashMap(); analyzeKin(kMain.getKinemage()); show(); // Helpful hint for users: //this.services.setID("Ctrl-click, option-click, or middle-click a point to co-center"); } //}}} //{{{ analyzeKin public void analyzeKin(Kinemage kin) { //Iterator groups = kin.iterator(); //while (groups.hasNext()) { // KGroup group = (KGroup) groups.next(); // //} KIterator points = KIterator.allPoints(kin); for (KPoint p : points) { String pName = p.getName(); if (pName.matches("\\([0-9]*\\).*")) { //System.out.println(pName); String paren = getParen(p); if (groupData.containsKey(paren)) { ParenGroup pGroup = groupData.get(paren); pGroup.add(p); } else { ParenGroup pGroup = new ParenGroup(Integer.parseInt(paren)); pGroup.add(p); groupData.put(paren, pGroup); } } } Object[] groups = groupData.values().toArray(); Arrays.sort(groups); drawingPaneList.setListData(groups); } //}}} //{{{ onAdd/Minus public void onAdd(ActionEvent ev) { String inputValue = "A"; while (!inputValue.matches("[0-9][0-9]*")) { inputValue = JOptionPane.showInputDialog("Please input an integer value"); } ParenGroup pGroup = new ParenGroup(Integer.parseInt(inputValue)); groupData.put(inputValue, pGroup); Object[] groups = groupData.values().toArray(); Arrays.sort(groups); drawingPaneList.setListData(groups); } public void onMinus(ActionEvent ev) { ParenGroup selected = (ParenGroup) drawingPaneList.getSelectedValue(); if(selected != null) { selected.clear(); } groupData.remove(selected.getParen()); Object[] groups = groupData.values().toArray(); Arrays.sort(groups); drawingPaneList.setListData(groups); kMain.getKinemage().fireKinChanged(AGE.CHANGE_POINT_CONTENTS); } //}}} //{{{ xx_click() functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); ParenGroup selected = (ParenGroup) drawingPaneList.getSelectedValue(); if((selected != null)&&(p != null)) { selected.addSub(p); kMain.getKinemage().fireKinChanged(AGE.CHANGE_POINT_CONTENTS); } } //}}} //{{{ valueChanged public void valueChanged(ListSelectionEvent ev) { if(!drawingPaneList.getValueIsAdjusting()) { Object selected = drawingPaneList.getSelectedValue(); if(selected != null) { kMain.getKinemage().fireKinChanged(AGE.CHANGE_POINT_ON_OFF); //drawingCards.show(drawingPanel, selected.toString()); } } } //}}} //{{{ getParen public String getParen(KPoint p) { String name = p.getName(); if (name.matches("\\([0-9]*\\).*")) { String[] parsed = Strings.explode(p.getName(), " ".charAt(0), false, true); //String matchParen = ""; for (String s : parsed) { if (s.matches("\\([0-9]*\\)")) { return s.substring(1, s.length()-1); } } } return ""; } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform) { ParenGroup g = (ParenGroup) drawingPaneList.getSelectedValue(); if (g != null) g.getList().doTransform(engine, xform); } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return pane; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#paren-tool"; } public String toString() { return "Paren tool"; } //}}} } king-2.21.120420/extratools/src/king/tool/nmr/ParenGroup.java0000644000000000000000000000613311531213012022224 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.nmr; import king.*; import king.core.*; import king.points.*; import java.util.*; import driftwood.r3.*; //}}} /** * ParenGroup * *

Copyright (C) 2009 by Vincent B. Chen. All rights reserved. *
Begun Fri May 08 15:08:17 EDT 2009 **/ public class ParenGroup implements Comparable { //{{{ Constants //}}} //{{{ Variables ArrayList points; KList labelList; int num; //}}} //{{{ Constructors public ParenGroup(int n) { labelList = new KList(KList.LABEL); labelList.setColor(KPalette.deadwhite); points = new ArrayList(); num = n; } //}}} //{{{ addSubPoint public void addSub(KPoint point) { //System.out.println(points.contains(new Triple(point))); if (points.contains(point)) { points.remove(point); LabelPoint label = new LabelPoint(Integer.toString(num)); label.setX(point.getX()); label.setY(point.getY()); label.setZ(point.getZ()); label.setUnpickable(true); labelList.getChildren().remove(label); String pName = point.getName(); if (pName.matches("\\([0-9]*\\).*")) { point.setName(pName.substring(pName.indexOf(")")+1, pName.length())); } } else { points.add(point); //labelList.add(point); LabelPoint label = new LabelPoint(Integer.toString(num)); label.setX(point.getX()); label.setY(point.getY()); label.setZ(point.getZ()); label.setUnpickable(true); labelList.add(label); String pName = point.getName(); if (!pName.matches("\\([0-9]*\\).*")) { point.setName("("+Integer.toString(num)+") "+pName); } } } //}}} //{{{ add public void add(KPoint point) { if (!points.contains(point)) { points.add(point); //labelList.add(point); LabelPoint label = new LabelPoint(Integer.toString(num)); label.setX(point.getX()); label.setY(point.getY()); label.setZ(point.getZ()); label.setUnpickable(true); labelList.add(label); } } //}}} //{{{ clear public void clear() { for (KPoint p : points) { String pName = p.getName(); if (pName.matches("\\([0-9]*\\).*")) { p.setName(pName.substring(pName.indexOf(")")+1, pName.length())); } } points.clear(); labelList.getChildren().clear(); } //}}} //{{{ getList public KList getList() { return labelList; } //}}} //{{{ getParen public String getParen() { return Integer.toString(num); } //}}} //{{{ compareTo public int compareTo(Object o) { if(o == null) return 1; // null sorts to front ParenGroup g1 = this; ParenGroup g2 = (ParenGroup)o; int comp = g1.getParen().compareTo(g2.getParen()); if(comp != 0) return comp; comp = g1.getList().getChildren().size() - g2.getList().getChildren().size(); if(comp != 0) return comp; return 0; } //}}} //{{{ toString public String toString() { return "Paren group "+Integer.toString(num)+" "+points.size()+" points"; } //}}} } king-2.21.120420/extratools/src/king/tool/draw/0000755000000000000000000000000011677360410017455 5ustar rootrootking-2.21.120420/extratools/src/king/tool/draw/SkylightPlugin.java0000644000000000000000000001560611531213014023267 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.draw; import king.*; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import java.net.*; import driftwood.util.SoftLog; import driftwood.r3.*; import driftwood.gui.*; //}}} /** * SkylightPlugin uses Skyligher to do lighting calculations for a bunch of kinemage spheres. * It works for balls, too, but looks weird because of the highlights. * This is intended to be used to give additional visual depth cues to CPK space-filling models. * Note that it does obliterate existing point colors, and until we have a mechanism for writing * out per-point unique (non-palette) colors, the effect can't be saved. * It can, however, be recalculated once some atoms (eg H) are turned off. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Nov 2 21:23:01 EST 2006 */ public class SkylightPlugin extends Plugin { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public SkylightPlugin(ToolBox tb) { super(tb); } //}}} //{{{ getToolsMenuItem, toString //################################################################################################## public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onSkylight")); } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#artificial-skylighting"; } public String toString() { return "Artificial skylighting"; } //}}} //{{{ onSkylight //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSkylight(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k == null) return; ArrayList balls = new ArrayList(); for(KPoint p : KIterator.visiblePoints(k)) { if(p instanceof BallPoint || p instanceof SpherePoint) balls.add(p); } double[] radii = new double[balls.size()]; for(int i = 0; i < radii.length; i++) { KPoint p = (KPoint) balls.get(i); KList list = (KList) p.getParent(); radii[i] = p.getRadius(); if(radii[i] == 0) radii[i] = list.getRadius(); } Collection transforms = new ArrayList(); Triple zAxis = new Triple(0,0,1), yAxis = new Triple(0,1,0); Triple u = new Triple(); Transform r = new Transform(); // The idea is to create a dotball to represent all the positions of the "sun", // the set up rotations that will bring the "sun" into line with the +Z axis. // 16 is a bit nicer than 8. 4 is too few -- too hit and miss. // 32 is nicer still, but 64 doesn't gain you anything. // 32 and a 0.25 grid is twice as fast as 16 and 0.125 -- and looks as good. for(Iterator iter = Builder.makeDotSphere(1, 32).iterator(); iter.hasNext(); ) { Tuple3 v = (Tuple3) iter.next(); u.likeCross(zAxis, v); double angle = u.angle(v); Transform t = new Transform(); if(!Double.isNaN(angle)) t.likeRotation(u, angle); transforms.add(t); } //System.out.println("@text\n"+transforms.size()+" projection directions"); // This is the slow call that does all the work: Skylighter skylight = new Skylighter( (Tuple3[]) balls.toArray( new Tuple3[balls.size()] ), radii, (Transform[]) transforms.toArray( new Transform[transforms.size()] )); double[] lightness = skylight.getLighting(); //System.out.println("@group {} animate\n@vectorlist {}"); //for(int i = 0; i < lightness.length; i++) // System.out.println("{} "+i+" "+(0.5*lightness[i]*lightness.length)); for(int i = 0; i < lightness.length; i++) { KPoint p = (KPoint) balls.get(i); KList list = (KList) p.getParent(); KPaint paint = list.getColor(); //KPaint paint = KPalette.white; // useful to evaluating the effect during devel. // If sphere is hit by at least half the light rays, we consider it maximally exposed. // This prevents over-lightening of projecting bits. // minLight defines a minimum level of true ambient illumination coming from the observer. // We tried a sqrt function on lightness too, // but now that other things work right it looks weird. double minLight = 0.3; // stronger than this and it looks weird double light = minLight + (1-minLight)*Math.min(1, 2*lightness[i]); Color c = blendColors(Color.black, 1 - light, (Color) paint.getBlackExemplar(), light, 255); float[] black = Color.RGBtoHSB(c.getRed(), c.getGreen(), c.getBlue(), null); p.setColor(KPaint.createLightweightHSV("foo", 360*black[0], 100*black[1], 100*black[2], 360*black[0], 100*black[1], 100*black[2])); } //k.setModified(true); -- can't save it yet anyway! } //}}} //{{{ blendColors //################################################################################################## /** * Returns a blend of two colors, weighted by the given coefficients. * Alpha ranges from 0 (transparent) to 255 (opaque) and is not taken from either c1 or c2. */ private static Color blendColors(Color c1, double w1, Color c2, double w2, int alpha) { int red = (int)(c1.getRed()*w1 + c2.getRed()*w2); int green = (int)(c1.getGreen()*w1 + c2.getGreen()*w2); int blue = (int)(c1.getBlue()*w1 + c2.getBlue()*w2); if(red < 0) red = 0; else if(red > 255) red = 255; if(green < 0) green = 0; else if(green > 255) green = 255; if(blue < 0) blue = 0; else if(blue > 255) blue = 255; return new Color(red, green, blue, alpha); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/draw/PointColorPlugin.java0000644000000000000000000002657111531213014023564 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.draw; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import java.net.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * PointColorPlugin allows one to turn on/off points and group * them by color. This is the equivalent of Mage's selection tools, when used * in conjunction with the Draw Tool's "paint points" mode. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Sun Apr 15 11:18:14 EDT 2007 */ public class PointColorPlugin extends Plugin { //{{{ Constants static final String DO_IF = "if"; static final String DO_IF_NOT = "if not"; static final String[] CONDITIONS = {DO_IF, DO_IF_NOT}; static final DecimalFormat df = new DecimalFormat("0.000"); //}}} //{{{ Variable definitions //############################################################################## JDialog dialog; JList conditions, colors; JFileChooser fileChooser; //}}} //{{{ Constructor(s) //############################################################################## public PointColorPlugin(ToolBox tb) { super(tb); buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { fileChooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) fileChooser.setCurrentDirectory(new File(currdir)); conditions = new FatJList(0, 10); conditions.setListData(CONDITIONS); conditions.setSelectedValue(DO_IF, true); colors = new FatJList(0, 10); colors.setListData(KPalette.getStandardMap().values().toArray()); colors.setSelectedValue(KPalette.green, true); JButton turnOn = new JButton(new ReflectiveAction("Turn on", null, this, "onTurnOn")); JButton turnOff = new JButton(new ReflectiveAction("Turn off", null, this, "onTurnOff")); JButton toggle = new JButton(new ReflectiveAction("Toggle", null, this, "onToggle")); JButton extract = new JButton(new ReflectiveAction("Extract", null, this, "onExtract")); JButton bleach = new JButton(new ReflectiveAction("Bleach visible", null, this, "onBleachVisible")); JButton export = new JButton(new ReflectiveAction("Export text", null, this, "onExport")); TablePane2 cp = new TablePane2(); cp.hfill(true).addCell(new JScrollPane(conditions)); cp.hfill(true).addCell(new JScrollPane(colors)); cp.newRow(); cp.startSubtable(2, 1).hfill(true).memorize(); cp.addCell(turnOn).addCell(turnOff); cp.newRow(); cp.addCell(toggle).addCell(extract); cp.newRow(); cp.addCell(cp.strut(0,8), 2, 1); cp.newRow(); cp.addCell(bleach, 2, 1); cp.newRow(); cp.addCell(export, 2, 1); cp.endSubtable(); dialog = new JDialog(kMain.getTopWindow(), this.toString(), false); dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialog.setContentPane(cp); } //}}} //{{{ getPointColor, checkForSelectGroups //############################################################################## /** Can't use p.getDrawingColor() b/c that return invisible when off */ private KPaint getPointColor(KPoint p) { KPaint color = p.getColor(); if(color != null) return color; KList list = p.getParent(); if(list != null) { color = list.getColor(); if(color != null) return color; } return KPalette.defaultColor; } private boolean checkForSelectGroups() { Kinemage kin = kMain.getKinemage(); if(kin == null) return false; boolean hasSelectGroups = false; for(KGroup group : kin) hasSelectGroups |= group.isSelect(); if(!hasSelectGroups) JOptionPane.showMessageDialog(kMain.getTopWindow(), "Please enable the 'select' property on one or more groups.", "No selectable groups", JOptionPane.ERROR_MESSAGE); return hasSelectGroups; } private boolean isSelectable(AHE ahe) { if(ahe instanceof KGroup && ((KGroup)ahe).isSelect()) return true; else if(ahe.getParent() != null) return isSelectable(ahe.getParent()); else return false; } //}}} //{{{ onTurnOn/TurnOff/Toggle //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTurnOn(ActionEvent ev) { doOnOff(true); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTurnOff(ActionEvent ev) { doOnOff(false); } private void doOnOff(boolean state) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; if(!checkForSelectGroups()) return; KPaint testColor = (KPaint) colors.getSelectedValue(); if(testColor == null) return; // never happens? boolean ifFlag = (conditions.getSelectedValue() == DO_IF_NOT ? true : false); for(KPoint p : KIterator.allPoints(kin)) if(isSelectable(p) && (ifFlag ^ testColor.equals(getPointColor(p)))) p.setOn(state); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onToggle(ActionEvent ev) { // This doesn't work in parallel coordinates mode // if there's an even number of dimensions -- cancels out. Kinemage kin = kMain.getKinemage(); if(kin == null) return; if(!checkForSelectGroups()) return; KPaint testColor = (KPaint) colors.getSelectedValue(); if(testColor == null) return; // never happens? boolean ifFlag = (conditions.getSelectedValue() == DO_IF_NOT ? true : false); for(KPoint p : KIterator.allPoints(kin)) if(isSelectable(p) && (ifFlag ^ testColor.equals(getPointColor(p)))) p.setOn(!p.isOn()); } //}}} //{{{ onExtract //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onExtract(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; if(!checkForSelectGroups()) return; KPaint testColor = (KPaint) colors.getSelectedValue(); if(testColor == null) return; // never happens? String name = JOptionPane.showInputDialog(kMain.getTopWindow(), "Name for new list?", "Name list", JOptionPane.QUESTION_MESSAGE); if(name == null) return; // user canceled dialog KList list = null; boolean ifFlag = (conditions.getSelectedValue() == DO_IF_NOT ? true : false); for(KIterator iter = KIterator.allPoints(kin); iter.hasNext(); ) { KPoint p = iter.next(); if(isSelectable(p) && (ifFlag ^ testColor.equals(getPointColor(p)))) { if(list == null) { list = p.getParent().clone(false); list.setInstance(null); // shallow clone uses instance= list.setName(name); } //p.getParent().remove(p); // causes ConcurrentModificationEx iter.remove(); list.add(p); } } // Trying to do this at list create time also causes CoModEx if(list != null) { KGroup group = new KGroup(name); group.setDominant(true); group.setSelect(true); KGroup subgroup = new KGroup(name); subgroup.setDominant(true); kin.add(group); group.add(subgroup); subgroup.add(list); } } //}}} //{{{ onBleachVisible //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onBleachVisible(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; for(KPoint p : KIterator.visiblePoints(kin)) if(isSelectable(p)) p.setColor(null); } //}}} //{{{ onExport public void onExport(ActionEvent ev) { int result = fileChooser.showSaveDialog(kMain.getTopWindow()); if(result != JFileChooser.APPROVE_OPTION) return; try { File saveFile = fileChooser.getSelectedFile(); if( !saveFile.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { Writer w = new FileWriter(saveFile); PrintWriter out = new PrintWriter(new BufferedWriter(w)); Kinemage kin = kMain.getKinemage(); if (kin == null) return; HashSet pointSet = new HashSet(); for (KPoint p : KIterator.visiblePoints(kin)) { String ptTxt = ""; if (isSelectable(p)) { ptTxt = "{"+p.toString()+"}"; float[] coords = p.getAllCoords(); if (coords != null) { for (float f : coords) { ptTxt = ptTxt+":"+Float.toString(f); } } else { ptTxt = ptTxt+":"+df.format(p.getX()); ptTxt = ptTxt+":"+df.format(p.getY()); ptTxt = ptTxt+":"+df.format(p.getZ()); } pointSet.add(ptTxt); } } for (String s : pointSet) out.println(s); out.flush(); w.close(); } } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } //}}} //{{{ getToolsMenuItem, getHelpAnchor, toString, onShowDialog //################################################################################################## public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onShowDialog")); } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#point-color-plugin"; } public String toString() { return "Select by color"; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowDialog(ActionEvent ev) { dialog.pack(); dialog.setVisible(true); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/draw/Skylighter.java0000644000000000000000000001504711531213014022436 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.draw; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; import driftwood.data.CheapSet; //}}} /** * Skylighter does "fake skylight" calculations for a collection of spheres. * This can be used e.g. to enhance rendering of space-filling molecular models, ala QuteMol. * I think this is called "ambient occlusion" in QuteMol; ie the occlusion of ambient (sky) light. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Nov 2 15:26:11 EST 2006 */ public class Skylighter //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## // TODO: this should be determined on the fly or specified by user final double gridSpacing = 0.25; // 0.125 is slightly nicer but takes 4x as long Transform[] transforms; Tuple3[] origCenters; double[] radii; Triple[] centers; // transformed by one of the tranforms[] double[] hits; // number of rays hit //}}} //{{{ Constructor(s) //############################################################################## public Skylighter(Tuple3[] sphereCenters, double[] sphereRadii, Transform[] rotations) { super(); if(sphereCenters.length != sphereRadii.length) throw new IllegalArgumentException("Number of sphere centers and radii must match"); this.origCenters = sphereCenters; this.radii = sphereRadii; this.transforms = rotations; this.centers = new Triple[ sphereCenters.length ]; for(int i = 0; i < centers.length; i++) centers[i] = new Triple(); this.hits = new double[ centers.length ]; // all start at zero this.calculate(); } //}}} //{{{ calculate //############################################################################## private void calculate() { // When trying to find the set of spheres hit by light, // we put their Integer indexes into a Set. // To avoid re-creating these objects many times: Integer[] sphereInts = new Integer[origCenters.length]; for(int i = 0; i < origCenters.length; i++) sphereInts[i] = new Integer(i); // We always cast light rays from +Z toward -Z. // For each provided transform, created a rotated version of the sphere scene. for(int j = 0; j < transforms.length; j++) { // Rotate sphere locations: Transform T = transforms[j]; for(int i = 0; i < centers.length; i++) T.transform(origCenters[i], centers[i]); // Determine X-Y extent of transformed scene. // Project light rays on a regular grid in this region. Triple[] bounds = Builder.makeBoundingBox(Arrays.asList(centers), radii); Triple min = bounds[0], max = bounds[1]; double xWidth = (max.getX() - min.getX()), yWidth = (max.getY() - min.getY()); // For each light ray, track which sphere is first to intercept it (frontmost sphere). int[][] frontSphereIndex = new int[ (int)Math.ceil(xWidth/gridSpacing) ][ (int)Math.ceil(yWidth/gridSpacing) ]; for(int ix = 0; ix < frontSphereIndex.length; ix++) for(int iy = 0; iy < frontSphereIndex[ix].length; iy++) frontSphereIndex[ix][iy] = -1; // flag for no entry // Cycle through spheres and see which light ray(s) hit them. for(int iSphere = 0; iSphere < centers.length; iSphere++) { // Test against all rays in the box bounding this sphere. Triple ctr = centers[iSphere]; double rad = radii[iSphere]; int min_ix = (int)Math.ceil((ctr.getX() - rad - min.getX()) / gridSpacing); int min_iy = (int)Math.ceil((ctr.getY() - rad - min.getY()) / gridSpacing); int max_ix = (int)Math.floor((ctr.getX() + rad - min.getX()) / gridSpacing); int max_iy = (int)Math.floor((ctr.getY() + rad - min.getY()) / gridSpacing); // unusual formating for two-level loop: for(int ix = min_ix; ix <= max_ix; ix++) for(int iy = min_iy; iy <= max_iy; iy++) { double dX = (min.getX() + ix*gridSpacing) - ctr.getX(); double dY = (min.getY() + iy*gridSpacing) - ctr.getY(); int prevFrontIndex = frontSphereIndex[ix][iy]; if(prevFrontIndex == -1 || (ctr.getZ() > centers[prevFrontIndex].getZ() && dX*dX + dY*dY <= rad*rad)) frontSphereIndex[ix][iy] = iSphere; } }//end: for-all-spheres // Credit each sphere that was hit by 1+ light beams. // Each sphere is either hit or not -- no bonus for multiple hits, // b/c they have varying sizes/areas, which may be occluded by overlaps too. CheapSet hitSphereIndexes = new CheapSet(); // unusual formating for two-level loop: for(int ix = 0; ix < frontSphereIndex.length; ix++) for(int iy = 0; iy < frontSphereIndex[ix].length; iy++) { int iSphere = frontSphereIndex[ix][iy]; if(iSphere != -1) hitSphereIndexes.add( sphereInts[iSphere] ); } for(Iterator iter = hitSphereIndexes.iterator(); iter.hasNext(); ) { int iSphere = ((Integer) iter.next()).intValue(); hits[iSphere] += 1; } }//end: for-each-transform // Normalize hits to 0-to-1 scale. //double maxHits = 0; //for(int i = 0; i < hits.length; i++) maxHits = Math.max(maxHits, hits[i]); double maxHits = transforms.length; if(maxHits > 0) for(int i = 0; i < hits.length; i++) hits[i] /= maxHits; } //}}} //{{{ getLighting //############################################################################## /** * For each input sphere, returns a number between 0 and 1 indicating * how much "ambient" skylight is hitting the object. */ public double[] getLighting() { return hits; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/draw/ProbeNearbyTool.java0000644000000000000000000003125611531213014023357 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.draw; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import java.util.List; // means all refs to "List" are this import chiropraxis.kingtools.BgKinRunner; import driftwood.data.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * ProbeNearbyTool allows one to draw Probe dots for the entirety * of a local area on the fly, without any structural refitting involved. * *

Copyright (C) 2010 by Daniel A. Keedy. All rights reserved. *
Begun on Mon Aug 2 2010 */ public class ProbeNearbyTool extends Plugin { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## File file = null; CoordinateFile coordFile = null; Model model = null; ModelState state = null; String altLabel = null; BgKinRunner probePlotter = null; SuffixFileFilter pdbFilter; JFileChooser openChooser; JCheckBox cbUseSegID; JDialog dialog; JLabel lblFileName; AttentiveTextField tfProbeRad; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public ProbeNearbyTool(ToolBox tb) { super(tb); buildFileChoosers(); buildDialog(); } //}}} //{{{ buildFileChoosers //################################################################################################## /** Constructs the Open and Save file choosers */ private void buildFileChoosers() { pdbFilter = new SuffixFileFilter("Protein Data Bank (PDB) files"); pdbFilter.addSuffix(".pdb"); String currdir = System.getProperty("user.dir"); openChooser = new JFileChooser(); openChooser.addChoosableFileFilter(pdbFilter); openChooser.setFileFilter(pdbFilter); if(currdir != null) openChooser.setCurrentDirectory(new File(currdir)); cbUseSegID = new JCheckBox("Use SegID to define chains", false); openChooser.setAccessory(cbUseSegID); // can't set PDB file yet b/c kinemage not loaded } //}}} //{{{ buildDialog //################################################################################################## private void buildDialog() { lblFileName = new JLabel(); JButton bnNewFile = new JButton("Open new file"); bnNewFile.addActionListener(new ReflectiveAction("open-new-file", null, this, "onOpenPDB")); JButton bnChooseAlt = new JButton("Choose alt conf"); bnChooseAlt.addActionListener(new ReflectiveAction("choose-alt-conf", null, this, "onChooseAltConf")); JLabel lblProbeRad = new JLabel("Radius from screen center:"); tfProbeRad = new AttentiveTextField("5", 3); tfProbeRad.addActionListener(new ReflectiveAction("run-probe", null, this, "onRunProbe")); JButton bnRunProbe = new JButton("Probe!"); bnRunProbe.addActionListener(new ReflectiveAction("run-probe", null, this, "onRunProbe")); TablePane cp = new TablePane(); cp.insets(2).weights(1,0.1); cp.addCell(lblFileName); cp.newRow().addCell(bnNewFile); cp.newRow().addCell(bnChooseAlt); cp.newRow().addCell(cp.strut(0,2)).newRow(); //spacer cp.addCell(lblProbeRad).addCell(tfProbeRad).newRow(); cp.addCell(bnRunProbe); dialog = new JDialog(kMain.getTopWindow(), this.toString(), false); // not modal //dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialog.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); dialog.setContentPane(cp); dialog.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent ev) { if(probePlotter != null) { probePlotter.terminate(); probePlotter = null; } dialog.setVisible(false); } }); refreshGUI(); } //}}} //{{{ refreshGUI //################################################################################################## /** One stop shopping to ensure the GUI reflects the current conditions. */ protected void refreshGUI() { if(file != null) { String fileLbl = "File: "+file.getName(); String alt = altLabel; if(!alt.equals(" ")) fileLbl = fileLbl+" ["+alt+"]"; lblFileName.setText(fileLbl); } else lblFileName.setText("File not loaded"); dialog.pack(); } //}}} //{{{ onOpenPDB //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onOpenPDB(ActionEvent ev) { // If a @pdbfile was specified, try to pre-select that // TODO-XXX: this assumes kin was opened from current dir! Kinemage kin = kMain.getKinemage(); if(kin != null && kin.atPdbfile != null) { File f = new File(kin.atPdbfile); if(f.exists()) { // setSelectedFile() doesn't do this prior to 1.4.1 openChooser.setCurrentDirectory(f); openChooser.setSelectedFile(f); } } // Open the new file String currdir = System.getProperty("user.dir"); if(currdir != null) openChooser.setCurrentDirectory(new File(currdir)); if(JFileChooser.APPROVE_OPTION == openChooser.showOpenDialog(kMain.getTopWindow())) { try { File f = openChooser.getSelectedFile(); if(f != null && f.exists()) openPDB(f); System.setProperty("user.dir", f.getAbsolutePath()); } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ openPDB //################################################################################################## protected void openPDB(File f) throws IOException { file = f; PdbReader pdbr = new PdbReader(); pdbr.setUseSegID(cbUseSegID.isSelected()); coordFile = pdbr.read(file); // Let user select model Collection models = coordFile.getModels(); if(models.size() == 1) model = coordFile.getFirstModel(); else { Object[] choices = models.toArray(); model = (Model)JOptionPane.showInputDialog(kMain.getTopWindow(), "This file has multiple models. Please choose one:", "Choose model", JOptionPane.PLAIN_MESSAGE, null, choices, choices[0]); if(model == null) model = coordFile.getFirstModel(); } // Let user select alt conf (iff there's more than one) setAltConf(); refreshGUI(); } //}}} //{{{ setAltConf //################################################################################################## protected void setAltConf() { altLabel = askAltConf(model, "This file has alternate conformations. Please choose one:"); if(altLabel != null) state = model.getState(altLabel); if(state == null) state = model.getState(); refreshGUI(); } //}}} //{{{ askAltConf //################################################################################################## /** Helper method to ask user which alt conf to use **/ String askAltConf(Model m, String question) { ArrayList states = new ArrayList(m.getStates().keySet()); if(states.size() == 1) return (String) states.get(0); else { states.remove(" "); // all letters treat this as parent Object[] choices = states.toArray(); String c = (String)JOptionPane.showInputDialog(kMain.getTopWindow(), question, "Choose alt conf", JOptionPane.PLAIN_MESSAGE, null, choices, choices[0]); if(c == null) return (String) states.get(0); else return c; } } //}}} //{{{ onChooseAltConf //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onChooseAltConf(ActionEvent ev) { if(model == null) return; // Let user select alt conf (iff there's more than one) if(model.getStates().keySet().size() == 1) { JOptionPane.showMessageDialog(dialog, "This file has only one alternate conformation.", "Oops...", JOptionPane.ERROR_MESSAGE); } else { setAltConf(); } } //}}} //{{{ prepProbePlotter, onRunProbe //################################################################################################## void prepProbePlotter() throws NumberFormatException { // Set up to plot Probe dots Kinemage kin = kMain.getKinemage(); if(kin != null) { if(probePlotter == null || !probePlotter.getKinemage().equals(kin)) probePlotter = new BgKinRunner(kMain, kin, ""); // Incomplete, will be completed in a moment double probeRad = Double.parseDouble(tfProbeRad.getText().trim()); String alt = ""; if(!altLabel.equals(" ")) alt = "alt"+altLabel+" "; String probeCmd = " -quiet -kin -mc -both -stdbonds" +" '"+alt+"within "+probeRad+" of {viewcenter}'" +" '"+alt+"within "+probeRad+" of {viewcenter}' '{pdbfile}' -"; String probeExe = probePlotter.findProgram("probe"); probePlotter.setCommand(probeExe+probeCmd); // now complete cmd line } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRunProbe(ActionEvent ev) { try { prepProbePlotter(); probePlotter.requestRun(new HashSet(), state, file); } catch(NumberFormatException ex) { SoftLog.err.println("Couldn't parse "+tfProbeRad.getText()+" as a # of Angstroms!"); } } //}}} //{{{ getToolsMenuItem, onShowDialog //################################################################################################## /** * Creates a new JMenuItem to be displayed in the Tools menu, * which will allow the user to access function(s) associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several functionalities under it. * * The Plugin may return null to indicate that it has no * associated menu item. */ public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onShowDialog")); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowDialog(ActionEvent ev) { if(! dialog.isVisible() ) { Container mw = kMain.getContentContainer(); dialog.pack(); Point loc = mw.getLocation(); loc.x += mw.getWidth() - dialog.getWidth(); loc.y += mw.getHeight() - dialog.getHeight(); dialog.setLocation(loc); dialog.setVisible(true); } onOpenPDB(null); } //}}} //{{{ getHelpAnchor, toString, isAppletSafe //################################################################################################## public String getHelpAnchor() { return "#probe-nearby-plugin"; } public String toString() { return "Probe nearby"; } /** This plugin is not applet-safe because it invokes other processes and loads files. */ static public boolean isAppletSafe() { return false; } //}}} }//class king-2.21.120420/extratools/src/king/tool/draw/MultiListEditorPlugin.java0000644000000000000000000004401311744305704024576 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.draw; import king.*; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.*; //}}} /** * MultiListEditorPlugin allows one to edit multiple lists at once. * *

Copyright (C) 2010 by Daniel A. Keedy. All rights reserved. *
Begun on Mon Mar 8 2010 */ public class MultiListEditorPlugin extends Plugin { //{{{ Constants float RADIUS_MIN = 0.01f; float RADIUS_MAX = Float.POSITIVE_INFINITY; int WIDTH_MIN = 1; int WIDTH_MAX = 7; int ALPHA_MIN = 0; int ALPHA_MAX = 255; //}}} //{{{ Variable definitions //############################################################################## JDialog dialog; JCheckBox cbVec, cbBall, cbDot, cbRib, cbTri, cbProbe, cbOther, cbVis; /*, cbIn, cbOut; JTextField tfIn, tfOut;*/ JComboBox colors; //}}} //{{{ Constructor(s) //############################################################################## public MultiListEditorPlugin(ToolBox tb) { super(tb); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { JLabel what = new JLabel("Change all:"); cbVec = new JCheckBox("vectorlists", true); cbBall = new JCheckBox("balllists", false); cbDot = new JCheckBox("dotlists", false); cbRib = new JCheckBox("ribbonlists", false); cbTri = new JCheckBox("trianglelists", false); cbProbe = new JCheckBox("Probe contacts", false); cbOther = new JCheckBox(new ReflectiveAction("human history", null, this, "onChangeHistory")); JButton bigger = new JButton(new ReflectiveAction("BIGGER", null, this, "onBigger")); JButton smaller = new JButton(new ReflectiveAction("smaller", null, this, "onSmaller")); JButton opaquer = new JButton(new ReflectiveAction("opaquer", null, this, "onOpaquer")); JButton transparenter = new JButton(new ReflectiveAction("transparenter", null, this, "onTransparenter")); JButton master = new JButton(new ReflectiveAction("add master", null, this, "onAddMaster")); JButton color = new JButton(new ReflectiveAction("set color", null, this, "onSetColor")); colors = new JComboBox(KPalette.getStandardMap().values().toArray()); JButton turnOff = new JButton(new ReflectiveAction("turn off", null, this, "onTurnOff")); JButton turnOn = new JButton(new ReflectiveAction("turn on", null, this, "onTurnOn")); cbVis = new JCheckBox("only visible", true); /*cbIn = new JCheckBox("within radius", false); tfIn = new JTextField(3); tfIn.setText("8"); cbOut = new JCheckBox("beyond radius", false); tfOut = new JTextField(3); tfOut.setText("8");*/ TablePane2 cp = new TablePane2(); cp.setBorder(BorderFactory.createEmptyBorder(8,8,8,8)); cp.addCell(what).newRow(); cp.addCell(cbVec).addCell(cbProbe).newRow(); cp.addCell(cbBall).addCell(cbOther).newRow(); cp.addCell(cbDot).newRow(); cp.addCell(cbRib).newRow(); cp.addCell(cbTri).newRow(); cp.addCell(bigger).addCell(smaller).newRow(); cp.addCell(opaquer).addCell(transparenter).newRow(); cp.addCell(color).addCell(colors).newRow(); cp.addCell(master).newRow(); cp.addCell(turnOff).addCell(turnOn).newRow(); cp.addCell(cbVis); /*.newRow(); cp.addCell(cbIn).addCell(tfIn).newRow(); cp.addCell(cbOut).addCell(tfOut);*/ dialog = new JDialog(kMain.getTopWindow(), this.toString(), false); dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialog.setContentPane(cp); // key bindings: just type the key to execute InputMap im = dialog.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0 ), "close"); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_W, KingMain.MENU_ACCEL_MASK), "close"); ActionMap am = dialog.getRootPane().getActionMap(); am.put("close", new ReflectiveAction(null, null, this, "onClose")); } //}}} //{{{ onBigger, onSmaller //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onBigger(ActionEvent ev) { for(KList l : getLists()) { String t = l.getType(); if(t.equals(KList.BALL) || t.equals(KList.SPHERE) || t.equals(KList.RING)) changeRadius(l, true); else // VECTOR, DOT, RING, ARROW changeWidth(l, true); // TRIANGLE seems to be unaffected by radius and width l.fireKinChanged(KList.CHANGE_LIST_PROPERTIES); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSmaller(ActionEvent ev) { for(KList l : getLists()) { String t = l.getType(); if(t.equals(KList.BALL) || t.equals(KList.SPHERE) || t.equals(KList.RING)) changeRadius(l, false); else // VECTOR, DOT, RING, ARROW changeWidth(l, false); // TRIANGLE seems to be unaffected by radius and width l.fireKinChanged(KList.CHANGE_LIST_PROPERTIES); } } //}}} //{{{ onOpaquer, onTransparenter //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onOpaquer(ActionEvent ev) { for(KList l : getLists()) { int a = l.getAlpha() + 15; l.setAlpha(Math.min(a, ALPHA_MAX)); l.fireKinChanged(KList.CHANGE_LIST_PROPERTIES); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTransparenter(ActionEvent ev) { for(KList l : getLists()) { int a = l.getAlpha() - 15; l.setAlpha(Math.max(a, ALPHA_MIN)); l.fireKinChanged(KList.CHANGE_LIST_PROPERTIES); } } //}}} //{{{ onSetColor //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSetColor(ActionEvent ev) { KPaint newColor = (KPaint) colors.getSelectedItem(); for(KList l : getLists()) { l.setColor(newColor); for(KPoint p : l.getChildren()) // bleach constituent points so p.setColor(null); // new color actually shows up l.fireKinChanged(KList.CHANGE_LIST_PROPERTIES); } } //}}} //{{{ onAddMaster //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAddMaster(ActionEvent ev) { String newMaster = (String) JOptionPane.showInputDialog( new JDialog(), "Name of new master:", "Add master to lists", JOptionPane.PLAIN_MESSAGE, null, null, null); if(newMaster == null) return; for(KList l : getLists()) if(!l.getMasters().contains(newMaster)) { l.addMaster(newMaster); l.fireKinChanged(KList.CHANGE_MASTERS_LIST); } } //}}} //{{{ onTurnOff, onTurnOn //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTurnOff(ActionEvent ev) { for(KList l : getLists()) { l.setOn(false); l.fireKinChanged(KList.CHANGE_EVERYTHING); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onTurnOn(ActionEvent ev) { for(KList l : getLists()) { l.setOn(true); l.fireKinChanged(KList.CHANGE_EVERYTHING); } } //}}} //{{{ onClose //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onClose(ActionEvent ev) { dialog.dispose(); } //}}} //{{{ onChangeHistory //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onChangeHistory(ActionEvent ev) { JOptionPane.showMessageDialog(dialog, "Cannot compute!", "Change human history", JOptionPane.ERROR_MESSAGE); cbOther.setSelected(false); } //}}} //{{{ onShowDialog //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowDialog(ActionEvent ev) { buildGUI(); dialog.pack(); Container w = kMain.getContentContainer(); if(w != null) { Point p = w.getLocation(); Dimension dimDlg = dialog.getSize(); Dimension dimWin = w.getSize(); p.x += dimWin.width - (dimDlg.width / 2) ; p.y += (dimWin.height - dimDlg.height) / 2; dialog.setLocation(p); } dialog.setVisible(true); } //}}} //{{{ [getLists w/ split] //############################################################################## /* public ArrayList getLists() { ArrayList lists = getWholeLists(); if(cbIn.isSelected() && cbOut.isSelected()) JOptionPane.showMessageDialog(dialog, "Can't use both within radius and beyond radius!", "Illogical radius choices", JOptionPane.ERROR_MESSAGE); else if(cbIn.isSelected()) { // Split selected lists, and return a new set of lists containing only // the points *within* a desired radius of the center of the screen try { float[] ctr = kMain.getView().getCenter(); Triple center = new Triple(ctr[0], ctr[1], ctr[2]); double radius = Double.parseDouble(tfIn.getText()); for(KList l : lists) { KGroup subgroup = l.getParent(); //KList far = new KList(l.getType()); // still in kinemage, just won't get changed now for(KPoint p : l.getChildren()) { Triple coords = new Triple(p.getX(), p.getY(), p.getZ()); if(coords.distance(center) > radius) { //far.add(p); //l.remove(p); //l.fireKinChanged(KList.CHANGE_POINT_CONTENTS); System.err.println(p+" too far from center"); } } //if(far.getChildren().size() > 0) subgroup.add(far); //subgroup.fireKinChanged(KGroup.CHANGE_EVERYTHING); } } catch(NumberFormatException ex) { JOptionPane.showMessageDialog(dialog, tfIn.getText()+" is not a number!", "Bad radius entry", JOptionPane.ERROR_MESSAGE); } } else if(cbOut.isSelected()) { // Split selected lists, and return a new set of lists containing only // the points *outside* a desired radius of the center of the screen try { float[] ctr = kMain.getView().getCenter(); Triple center = new Triple(ctr[0], ctr[1], ctr[2]); double radius = Double.parseDouble(tfOut.getText()); for(KList l : lists) { KGroup subgroup = l.getParent(); //KList near = new KList(l.getType()); // still in kinemage, just won't get changed now for(KPoint p : l.getChildren()) { Triple coords = new Triple(p.getX(), p.getY(), p.getZ()); if(coords.distance(center) <= radius) { //near.add(p); //l.remove(p); //l.fireKinChanged(KList.CHANGE_POINT_CONTENTS); System.err.println(p+" too close to center"); } } //if(near.getChildren().size() > 0) subgroup.add(near); //subgroup.fireKinChanged(KGroup.CHANGE_EVERYTHING); } } catch(NumberFormatException ex) { JOptionPane.showMessageDialog(dialog, tfOut.getText()+" is not a number!", "Bad radius entry", JOptionPane.ERROR_MESSAGE); } } return lists; }*/ //}}} //{{{ getLists //############################################################################## public ArrayList getLists() { ArrayList lists = new ArrayList(); Kinemage kin = kMain.getKinemage(); if(kin == null) return lists; // empty for(KList l : cbVis.isSelected() ? KIterator.visibleLists(kin) : KIterator.allLists(kin)) { String t = l.getType(); if(cbVec.isSelected() && t.equals(KList.VECTOR)) lists.add(l); if(cbBall.isSelected() && t.equals(KList.BALL)) lists.add(l); if(cbDot.isSelected() && t.equals(KList.DOT)) lists.add(l); if(cbRib.isSelected() && t.equals(KList.RIBBON)) lists.add(l); if(cbTri.isSelected() && t.equals(KList.TRIANGLE)) lists.add(l); if(cbProbe.isSelected() && isProbeList(l)) lists.add(l); } return lists; } //}}} //{{{ isProbeList //############################################################################## public boolean isProbeList(KList l) { //if(l.getName().equals("x")) return true; -- effective, but probably too kludgy for(Iterator iter = l.getMasters().iterator(); iter.hasNext(); ) { String master = (String) iter.next(); if(master.equals("vdw contact") || master.equals("small overlap") || master.equals("bad overlap") || master.equals("H-bonds") || master.equals("dots")) return true; } return false; } //}}} //{{{ changeRadius //############################################################################## private void changeRadius(KList l, boolean increase) { // List if(increase) { float r = (float) (l.getRadius() * 1.5); l.setRadius(Math.min(r, RADIUS_MAX)); } else // decrease { float r = (float) (l.getRadius() * 0.667); l.setRadius(Math.max(r, RADIUS_MIN)); } // Points - override list for(KPoint p : l.getChildren()) { if(p instanceof RingPoint) // or, by extension, BallPoint { RingPoint rp = (RingPoint) p; if(rp.r0 != 0f) { if(increase) { float r = (float) (rp.r0 * 1.5); rp.r0 = Math.min(r, RADIUS_MAX); } else // decrease { float r = (float) (rp.r0 * 0.667); rp.r0 = Math.max(r, RADIUS_MIN); } } } } } //}}} //{{{ changeWidth //############################################################################## private void changeWidth(KList l, boolean increase) { // List if(increase) { int w = l.getWidth() + 1; l.setWidth(Math.min(w, WIDTH_MAX)); } else // decrease { int w = l.getWidth() - 1; l.setWidth(Math.max(w, WIDTH_MIN)); } // Points - override list for(KPoint p : l.getChildren()) { if(p instanceof VectorPoint) { VectorPoint vp = (VectorPoint) p; if(vp.getWidth() != 0) { if(increase) { int w = vp.getWidth() + 1; vp.setWidth(Math.min(w, WIDTH_MAX)); } else // decrease { int w = vp.getWidth() - 1; vp.setWidth(Math.max(w, WIDTH_MIN)); } } } } } //}}} //{{{ getToolsMenuItem, getHelpAnchor, toString //################################################################################################## public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onShowDialog")); } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#multi-list-edit-plugin"; } public String toString() { return "Multi-list editor"; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/draw/LathePlugin.java0000644000000000000000000001673311531213014022530 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.draw; import king.*; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * LathePlugin allows creation of solid * 3D primitives from trianglelists. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Sep 25 09:09:28 EDT 2003 */ public class LathePlugin extends Plugin { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public LathePlugin(ToolBox tb) { super(tb); } //}}} //{{{ lathe //############################################################################## /** * Constructs a point cloud based on a polyline by rotation about an axis. * Typically this is used to construct objects with an axis of symmetry -- * bottles, drinking glasses, tennis balls, etc. * The resulting point cloud is a two dimensional array with the first * index corresponding to the index of an input point and the second * corresponding to one step during the rotation. */ static public Triple[][] lathe(Tuple3[] in, Tuple3 axisBase, Tuple3 axisTip, int steps) { Triple[][] out = new Triple[in.length][steps]; Transform rot = new Transform(); for(int i = 0; i < steps; i++) { rot.likeRotation(axisBase, axisTip, 360.0*i / (double)steps); for(int j = 0; j < in.length; j++) { out[j][i] = new Triple(in[j]); rot.transform(out[j][i]); } } return out; } //}}} //{{{ solidLathe //############################################################################## /** * Converts a vectorlist into a set of trianglelists using lathe(). */ public KGroup solidLathe(KList vecList, Tuple3 axisBase, Tuple3 axisTip, int steps) { KGroup group = new KGroup(); group.setName("New group"); KGroup subg = new KGroup("lathe obj"); subg.setDominant(true); group.add(subg); // Put polyline into a form we can work with Triple[] polyline = new Triple[vecList.getChildren().size()]; Iterator iter = vecList.getChildren().iterator(); for(int i = 0; iter.hasNext(); i++) { KPoint p = (KPoint)iter.next(); polyline[i] = new Triple( p.getX(), p.getY(), p.getZ() ); } // Build mesh into a TrianglePoint object Triple[][] mesh = lathe(polyline, axisBase, axisTip, steps); for(int i = 1; i < polyline.length; i++) { TrianglePoint last = null; KList tlist = new KList(KList.RIBBON, "band "+i); tlist.setColor( ((KPoint)vecList.getChildren().get(i)).getDrawingColor() ); subg.add(tlist); Triple[] strip1 = mesh[i-1]; Triple[] strip2 = mesh[i]; // Having strip2 be on the axis of rotation makes those triangles // a weird color when rendered in KiNG if(strip2[0].sqDistance(strip2[1]) < strip1[0].sqDistance(strip1[1])) { Triple[] swap = strip1; strip1 = strip2; strip2 = swap; } for(int j = 0; j < steps; j++) { TrianglePoint curr = new TrianglePoint(i+":"+j, last); curr.setX( strip2[j].getX() ); curr.setY( strip2[j].getY() ); curr.setZ( strip2[j].getZ() ); tlist.add(curr); last = curr; curr = new TrianglePoint(i+":"+j, last); curr.setX( strip1[j].getX() ); curr.setY( strip1[j].getY() ); curr.setZ( strip1[j].getZ() ); tlist.add(curr); last = curr; } // Close up the end TrianglePoint curr = new TrianglePoint(i+":0", last); curr.setX( strip2[0].getX() ); curr.setY( strip2[0].getY() ); curr.setZ( strip2[0].getZ() ); tlist.add(curr); last = curr; curr = new TrianglePoint(i+":0", last); curr.setX( strip1[0].getX() ); curr.setY( strip1[0].getY() ); curr.setZ( strip1[0].getZ() ); tlist.add(curr); last = curr; // unnecessary } return group; } //}}} //{{{ findVectorLists //############################################################################## /** * Finds all the vectorlists in a given kinemage. */ static public Collection findVectorLists(Kinemage kin) { ArrayList out = new ArrayList(); for(KList list : KIterator.visibleLists(kin)) { if(list.getType().equals(KList.VECTOR)) out.add(list); } return out; } //}}} //{{{ getToolsMenuItem, getHelpAnchor, toString, onLathe //################################################################################################## public JMenuItem getToolsMenuItem() { /*JMenu menu; JMenuItem item; menu = new JMenu("Solid object drawing"); item = new JMenuItem(new ReflectiveAction("Lathe: line -> object", null, this, "onLathe")); menu.add(item); return menu;*/ return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onLathe")); } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#lathe-plugin"; } public String toString() { return "Lathe: line -> object"; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onLathe(ActionEvent ev) { Kinemage k = kMain.getKinemage(); if(k == null) return; Object[] choices = findVectorLists(k).toArray(); if(choices.length == 0) return; KList choice = (KList)JOptionPane.showInputDialog(kMain.getTopWindow(), "Choose a vectorlist to lathe:", "Choose list", JOptionPane.PLAIN_MESSAGE, null, choices, choices[0]); if(choice == null) return; KGroup group = solidLathe(choice, new Triple(0,0,0), new Triple(0,1,0), 32); group.setParent(k); k.add(group); k.setModified(true); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/vr/0000755000000000000000000000000011677360410017147 5ustar rootrootking-2.21.120420/extratools/src/king/tool/vr/VRKinTool.java0000644000000000000000000001313311531213006021625 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.vr; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * VRKinTool allows some actions in KiNG to be transmitted to * the "vrkin" program that runs in the Duke DIVE. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Fri Jan 5 15:50:46 EST 2007 */ public class VRKinTool extends Plugin implements KMessage.Subscriber { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Socket socket; DataOutputStream outStream; //}}} //{{{ Constructor(s) //############################################################################## public VRKinTool(ToolBox tb) { super(tb); kMain.subscribe(this); } //}}} //{{{ deliverMessage //############################################################################## public void deliverMessage(KMessage msg) { if(socket == null) return; try { if(msg.testKin(AHE.CHANGE_VIEW_TRANSFORM) || msg.testProg(KMessage.VIEW_SELECTED)) { KView view = kMain.getView(); if(view != null) { } } if(msg.testProg(KMessage.KIN_SWITCHED)) { Kinemage kin = kMain.getKinemage(); if(kin != null) { } } if(msg.testKin(AHE.CHANGE_TREE_ON_OFF)) { Kinemage kin = kMain.getKinemage(); if(kin != null) sendString(cmdSetOnOffState(kin)); } } catch(Exception ex) { SoftLog.err.println("Error sending message: "+ex.getMessage()); ex.printStackTrace(); disconnect(); } } //}}} //{{{ getToolsMenuItem //############################################################################## public JMenuItem getToolsMenuItem() { JMenu menu = new JMenu(this.toString()); JMenuItem item = new JMenuItem(new ReflectiveAction("Connect ...", null, this, "onConnectToMaster")); menu.add(item); return menu; } public String toString() { return "VRKin plugin"; } //}}} //{{{ onConnectToMaster //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onConnectToMaster(ActionEvent ev) { JTextField hostname = new JTextField("localhost"); JTextField port = new JTextField("1681"); TablePane2 cp = new TablePane2(); cp.hfill(true).insets(4).memorize(); cp.weights(0,1).addCell(new JLabel("Hostname")).addCell(hostname).newRow(); cp.weights(0,1).addCell(new JLabel("Port")).addCell(port).newRow(); int result = JOptionPane.showConfirmDialog(kMain.getTopWindow(), cp, "Connect to master", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); if(result == JOptionPane.OK_OPTION) { try { disconnect(); connect( hostname.getText(), Integer.parseInt(port.getText()) ); } catch(Exception ex) { ex.printStackTrace(); } } } //}}} //{{{ connect, disconnect, sendString //############################################################################## void connect(String host, int port) throws IOException { InetAddress addr = InetAddress.getByName(host); //IOEx this.socket = new Socket(addr, port); //IOEx socket.setKeepAlive(true); // may not be needed, really this.outStream = new DataOutputStream(new BufferedOutputStream(socket.getOutputStream())); } void disconnect() { if(outStream != null) try { outStream.close(); } catch(IOException ex) {} if(socket != null) try { socket.close(); } catch(IOException ex) {} socket = null; outStream = null; } void sendString(String msg) { //System.err.println(msg); if(this.outStream == null) return; try { outStream.writeInt(msg.length()); // high byte first outStream.writeBytes(msg); // low bytes only outStream.flush(); } catch(IOException ex) { ex.printStackTrace(); } } //}}} //{{{ cmdSetOnOffState //############################################################################## /** * Produces a string that records the on/off state of every element * (except individual points) in the entire kinemage, like this: * "show 111100010110..." * Traversal is depth first, with parents visited before children, * and the first character is always "1" (for the kinemage itself). */ String cmdSetOnOffState(Kinemage kin) { StringBuffer sb = new StringBuffer("show "); for(AGE age : KIterator.allNonPoints(kin)) sb.append(age.isOn() ? "1" : "0"); return sb.toString(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/export/0000755000000000000000000000000011677360410020041 5ustar rootrootking-2.21.120420/extratools/src/king/tool/export/RenderExport.java0000644000000000000000000004375011531213004023317 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.export; import king.*; import king.core.*; import king.points.*; import king.core.Engine; import javax.swing.*; import java.util.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.text.*; import java.net.*; import driftwood.gui.*; import driftwood.util.*; import driftwood.r3.*; //}}} /** * RenderExport allows the current graphics to be exported for use * in the render program (raster3d). * *

Copyright (C) 2003-2008 by Vincent B. Chen. All rights reserved. *
Begun on Wed Nov 05 16:11:39 EST 2008 */ public class RenderExport extends Plugin { //{{{ Constants DecimalFormat df = new DecimalFormat("0.000"); //}}} //{{{ Variables ArrayList[] zbuffer; ArrayList[] parents; // KList that is acting parent for each pt in zbuffer; default is null double width, height; Engine eng; PrintWriter out; //}}} //{{{ Constructors public RenderExport(ToolBox tb) { super(tb); } //}}} //{{{ askExport public void askExport(boolean doRaw) { // Show the Save dialog String currdir = System.getProperty("user.dir"); JFileChooser chooser = new JFileChooser(); if(currdir != null) chooser.setCurrentDirectory(new File(currdir)); if(JFileChooser.APPROVE_OPTION == chooser.showSaveDialog(kMain.getTopWindow())) { File f = chooser.getSelectedFile(); if(!f.exists() || JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION)) { try { if (doRaw) { exportR3d(f); } else { exportImage(f); } } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while saving the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } catch(InterruptedException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "A process error occurred with render while saving the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } } } //}}} //{{{ exportR3d public void exportR3d(File f) throws IOException { out = new PrintWriter(new BufferedWriter(new FileWriter(f))); eng = kCanvas.getEngine(); out.print(createR3dString()); renderView(out); out.print("0"); out.flush(); out.close(); } //}}} //{{{ exportImage public void exportImage(File f) throws IOException, InterruptedException { Process proc = Runtime.getRuntime().exec("render -jpeg"); BufferedWriter renderIn = new BufferedWriter(new OutputStreamWriter(proc.getOutputStream())); BufferedInputStream renderOut = new BufferedInputStream(proc.getInputStream()); BufferedReader renderErr = new BufferedReader(new InputStreamReader(proc.getErrorStream())); BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(f)); String r3d = "hello\n";//createR3dString(); System.out.println("writing to render"); renderIn.write(r3d, 0, r3d.length()); System.out.println("done writing to render"); //int exitVal = proc.waitFor(); //System.out.println("ExitValue: " + exitVal); String errLine; System.out.println("writing errors"); while ((errLine = renderErr.readLine()) != null) { System.out.println(errLine); renderIn.write(r3d, 0, r3d.length()); } System.out.println("Writing image"); int in = 0; while ((in = renderOut.read()) != -1) { out.write(in); } System.out.println("Done"); out.flush(); out.close(); renderOut.close(); } //}}} //{{{ createR3dString public String createR3dString() { String r3d = new String(); r3d = r3d.concat("kingoutput.kin\n"); r3d = r3d.concat("64 64 NTX,NTY tiles in x,y \n"); r3d = r3d.concat("16 16 NPX,NPY pixels (x,y) per tile \n"); r3d = r3d.concat("4 SCHEME anti-aliasing level \n"); if (eng.whiteBackground) r3d = r3d.concat("1 1 1"); else r3d = r3d.concat("0 0 0"); r3d = r3d.concat(" BKGND background, 0 0 0 for black (1 1 1 for white) \n"); r3d = r3d.concat("F SHADOW T with, F omit shadows \n"); r3d = r3d.concat("25 IPHONG Phong power \n"); r3d = r3d.concat("0.25 STRAIT secondary light percent contribution \n"); r3d = r3d.concat("0.05 AMBIEN ambient light percent contribution \n"); r3d = r3d.concat("0.25 SPECLR specular reflection percent contribution \n"); r3d = r3d.concat("0 EYPOS for perspective, 0 for orthographic \n"); r3d = r3d.concat("-1 1 1 SOURCE primary light position, 1 1 1 right shoulder \n"); r3d = r3d.concat("1 0 0 0 TMAT post-multipy a horizontal vector x y z 1 \n"); r3d = r3d.concat("0 -1 0 0 TMAT \n"); r3d = r3d.concat("0 0 1 0 TMAT \n"); r3d = r3d.concat("-450.000 450.000 -450.000 900.000 TMAT \n"); r3d = r3d.concat("3 INMODE input mode must be 3 for flagged type \n"); r3d = r3d.concat("* INFMTS free format for triangles and planes, type 1 (normals: 13) \n"); r3d = r3d.concat("* INFMTS free format for sphere descriptors, type 2 \n"); r3d = r3d.concat("* INFMTS free format for cylinder descriptors, type 3 \n"); //r3d = r3d.concat(renderView()); return r3d; } //}}} //{{{ renderView public void renderView(Writer out) throws IOException { //String render = ""; Dimension dim = kCanvas.getCanvasSize(); ////kCanvas.paintCanvas(g2, dim, KinCanvas.QUALITY_BEST); Rectangle bounds = new Rectangle(dim); width = bounds.getWidth(); height = bounds.getHeight(); //System.out.println(width + "," + height); ////kCanvas.syncToKin(engine, kin); //KView view = kCanvas.getCurrentView(); //eng = kCanvas.getEngine(); //System.out.println(eng.clipBack+", "+eng.clipFront); //render(kCanvas, view, bounds, eng); KIterator lists = KIterator.visibleLists(kMain.getKinemage()); for (KList list : lists) { int alpha = list.getAlpha(); if ((alpha < 255)&&(alpha > 0)) { out.write("8 \n"); out.write("25.0 0.25 -1 -1 -1 "+df.format(1-(double)alpha/255.0)+" 0 0 0 0 \n"); } String type = list.getType(); if (type.equals(KList.VECTOR)) out.write(renderVector(list)); else if (type.equals(KList.BALL)) out.write(renderBall(list)); else if (type.equals(KList.SPHERE)) out.write(renderBall(list)); else if (type.equals(KList.TRIANGLE)) out.write(renderTriangle(list)); else if (type.equals(KList.RIBBON)) out.write(renderTriangle(list)); //else System.out.println(type + " is not supported yet!"); if ((alpha < 255)&&(alpha > 0)) { out.write("9 \n"); } } //return render; } //}}} //{{{ renderBall public String renderBall(KList list) { String render = ""; KIterator points = KIterator.visiblePoints(list); for (KPoint pt : points) { if (pt instanceof BallPoint) { //System.out.println(pt.getWidth()); render = render + "2 \n"; render = render + df.format(pt.getDrawX())+" "+df.format(pt.getDrawY())+" "+df.format(pt.getDrawZ())+" "; render = render + df.format(((BallPoint)pt).getDrawRadius()) + " "; render = render + convertColor(pt.getDrawingColor(eng))+"\n"; } } return render; } //}}} //{{{ renderVector public String renderVector(KList list) { String render = ""; HashMap drawnPoints = new HashMap(); KIterator points = KIterator.visiblePoints(list); for (KPoint pt : points) { if (pt instanceof VectorPoint) { KPoint prev = pt.getPrev(); if ((prev != null)&&((isDrawn(prev))||(isDrawn(pt)))) { //drawnPoints.put(prev, pt); KPoint end = drawnPoints.get(prev); render = render + "3 \n"; render = render + df.format(prev.getDrawX())+" "+df.format(prev.getDrawY())+" "+df.format(prev.getDrawZ())+" "; render = render + df.format(list.getWidth())+" "/*+"1.500 "*/; render = render + df.format(pt.getDrawX())+" "+df.format(pt.getDrawY())+" "+df.format(pt.getDrawZ())+" "; render = render + "1.000 "; render = render + convertColor(pt.getDrawingColor(eng))+"\n"; } } } //for (KPoint start : drawnPoints.keySet()) { // KPoint end = drawnPoints.get(start); // render = render + "3 \n"; // render = render + df.format(start.getDrawX())+" "+df.format(start.getDrawY())+" "+df.format(start.getDrawZ())+" "; // render = render /*+ df.format(list.getWidth())*/+"1.500 "; // render = render + df.format(end.getDrawX())+" "+df.format(end.getDrawY())+" "+df.format(end.getDrawZ())+" "; // render = render + "1.000 "; // render = render + convertColor(end.getDrawingColor(eng))+"\n"; // //System.out.print("X: "+df.format(start.getDrawX())+" Y: "+df.format(start.getDrawY())+" Z: "+df.format(start.getDrawZ()) +"->"); // //System.out.println("X: "+df.format(end.getDrawX())+" Y: "+df.format(end.getDrawY())+" Z: "+df.format(end.getDrawZ())); //} return render; } //}}} //{{{ renderTriangle public String renderTriangle(KList list) { //KList test = test(); String render = ""; KIterator points = KIterator.visiblePoints(list); Triple oldNormal = null; boolean flip = false; for (KPoint pt : points) { if (pt instanceof TrianglePoint) { TrianglePoint tpt = (TrianglePoint)pt; if(tpt.getPrev() == null || tpt.getPrev().getPrev() == null/* || maincolor.isInvisible()*/) { oldNormal = null; //System.out.println("no prev points"); } else { TrianglePoint A = tpt, B = tpt.getPrev(), C = tpt.getPrev().getPrev(); if (flip) { TrianglePoint temp = C; C = A; A = temp; } flip = !flip; render = render + "1 \n"; render = render + df.format(A.getDrawX())+" "+df.format(A.getDrawY())+" "+df.format(A.getDrawZ())+" "; render = render + df.format(B.getDrawX())+" "+df.format(B.getDrawY())+" "+df.format(B.getDrawZ())+" "; render = render + df.format(C.getDrawX())+" "+df.format(C.getDrawY())+" "+df.format(C.getDrawZ())+" "; render = render + convertColor(pt.getDrawingColor(eng))+"\n"; render = render + "7 \n"; Triple normal = (new Triple().likeNormal(new Triple(A.getDrawX(), A.getDrawY(), A.getDrawZ()), new Triple(B.getDrawX(), B.getDrawY(), B.getDrawZ()), new Triple(C.getDrawX(), C.getDrawY(), C.getDrawZ()))).unit(); //VectorPoint origPt = new VectorPoint("normal", null); //origPt.setXYZ(A.getX(), A.getY(), A.getZ()); //Triple testNormal = new Triple().likeNormal(A, B, C); //VectorPoint normPt = new VectorPoint("normal", origPt); //normPt.setXYZ(testNormal.getX()+A.getX(), testNormal.getY()+A.getY(), testNormal.getZ()+A.getZ()); //test.add(origPt); //test.add(normPt); render = render + df.format(normal.getX())+" "+df.format(normal.getY())+" "+df.format(normal.getZ())+" "; if (oldNormal != null) { render = render + df.format((normal.getX()+oldNormal.getX())/2)+" "+df.format((normal.getY()+oldNormal.getY())/2)+" "+df.format((normal.getZ()+oldNormal.getZ())/2)+" "; } else { render = render + df.format(normal.getX())+" "+df.format(normal.getY())+" "+df.format(normal.getZ())+" "; } if (oldNormal != null) { render = render + df.format((normal.getX()+oldNormal.getX())/2)+" "+df.format((normal.getY()+oldNormal.getY())/2)+" "+df.format((normal.getZ()+oldNormal.getZ())/2)+" \n"; } else { render = render + df.format(normal.getX())+" "+df.format(normal.getY())+" "+df.format(normal.getZ())+" \n"; } render = render + "1 \n"; render = render + df.format(A.getDrawX())+" "+df.format(A.getDrawY())+" "+df.format(A.getDrawZ())+" "; render = render + df.format(B.getDrawX())+" "+df.format(B.getDrawY())+" "+df.format(B.getDrawZ())+" "; render = render + df.format(C.getDrawX())+" "+df.format(C.getDrawY())+" "+df.format(C.getDrawZ())+" "; render = render + convertColor(pt.getDrawingColor(eng))+"\n"; render = render + "7 \n"; render = render + df.format(-normal.getX())+" "+df.format(-normal.getY())+" "+df.format(-normal.getZ())+" "; //render = render + df.format(-normal.getX())+" "+df.format(-normal.getY())+" "+df.format(-normal.getZ())+" "; //render = render + df.format(-normal.getX())+" "+df.format(-normal.getY())+" "+df.format(-normal.getZ())+" \n"; if (oldNormal != null) { render = render + df.format(-(normal.getX()+oldNormal.getX())/2)+" "+df.format(-(normal.getY()+oldNormal.getY())/2)+" "+df.format(-(normal.getZ()+oldNormal.getZ())/2)+" "; } else { render = render + df.format(-normal.getX())+" "+df.format(-normal.getY())+" "+df.format(-normal.getZ())+" "; } if (oldNormal != null) { render = render + df.format(-(normal.getX()+oldNormal.getX())/2)+" "+df.format(-(normal.getY()+oldNormal.getY())/2)+" "+df.format(-(normal.getZ()+oldNormal.getZ())/2)+" \n"; } else { render = render + df.format(-normal.getX())+" "+df.format(-normal.getY())+" "+df.format(-normal.getZ())+" \n"; } oldNormal = normal; } } } //System.out.println(render); return render; } //}}} //{{{ convertColor public String convertColor(KPaint color) { Color hsv; if (kMain.getKinemage().atWhitebackground == false) hsv = color.getBlackExemplar(); else hsv = color.getWhiteExemplar(); String rgbString = df.format((float)hsv.getRed()/255)+" "+df.format((float)hsv.getGreen()/255)+" "+df.format((float)hsv.getBlue()/255); return rgbString; } //}}} //{{{ isDrawn public boolean isDrawn(KPoint pt) { double x = pt.getDrawX(); double y = pt.getDrawY(); double z = pt.getDrawZ(); return ((x >= 0)&&(x <= width)&&(y >= 0)&&(y <= height)&&(z > eng.clipBack)&&(z < eng.clipFront)); } //}}} //{{{ render //################################################################################################## ///** //* Transforms the given Transformable and renders it to a graphics context. //* @param xformable the Transformable that will be transformed and rendered //* @param view a KView representing the current rotation/zoom/clip //* @param bounds the bounds of the area to render to. //* Note that this function does not clip g to ensure that it only paints within these bounds! //*/ //void render(Transformable xformable, KView view, Rectangle bounds, Engine eng) //{ // eng.transform(xformable, view, bounds); // // // Now paint them to the graphics // for(int i = 0; i <= TOP_LAYER; i++) // { // // Calculate depth-cueing constants for this level // //if(cueIntensity) colorCue = (KPaint.COLOR_LEVELS*i)/(TOP_LAYER+1); // //else colorCue = KPaint.COLOR_LEVELS - 1; // //if(cueThickness) widthCue = (KPaint.COLOR_LEVELS*i)/(TOP_LAYER+1); // //else widthCue = (KPaint.COLOR_LEVELS-1) / 2; // // //if(colorCue >= KPaint.COLOR_LEVELS) // // SoftLog.err.println("colorCue = "+colorCue+"; i = "+i+"; TOP_LAYER = "+TOP_LAYER); // // // Render all points at this level (faster to not use iterators) // ArrayList zb = zbuffer[i]; // ArrayList pnt = parents[i]; // for(int j = 0, end_j = zb.size(); j < end_j; j++) // { // KPoint pt = (KPoint) zb.get(j); // KList l = (KList) pnt.get(j); // if(l == null) { // //pt.paint2D(this); // System.out.println("X: "+pt.getDrawX()+"Y: "+pt.getDrawY()+"Z: "+pt.getDrawZ()); // } // else // see setActingParent() for an explanation // { // KList oldPnt = pt.getParent(); // pt.setParent(l); // //pt.paint2D(this); // pt.setParent(oldPnt); // } // } // } //} //}}} //{{{ test public KList test() { Kinemage kin = kMain.getKinemage(); KGroup group = new KGroup("test"); KList list = new KList(KList.VECTOR, "test"); kin.add(group); group.add(list); return list; } //}}} //{{{ getToolsMenuItem, getHelpMenuItem, toString, onExport, isAppletSafe //################################################################################################## public JMenuItem getToolsMenuItem() { JMenu menu = new JMenu(this.toString()); menu.add(new JMenuItem(new ReflectiveAction("Export r3d file", null, this, "onRaw"))); //menu.add(new JMenuItem(new ReflectiveAction("Export image file", null, this, "onImage"))); return menu; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#render-export"; } public String toString() { return "Render Image"; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRaw(ActionEvent ev) { this.askExport(true); } public void onImage(ActionEvent ev) { this.askExport(false); } static public boolean isAppletSafe() { return false; } //}}} } king-2.21.120420/extratools/src/king/tool/export/Vrml97Writer.java0000644000000000000000000002472111531213004023170 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.export; import king.*; import king.core.*; import king.points.*; import king.io.KinfileParser; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * Vrml97Writer writes the currently visible kinemage * as a VRML97 (a.k.a. VRML 2.0) files. * *

Copyright (C) 2002-2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 3 09:51:11 EDT 2002 */ public class Vrml97Writer extends Plugin { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.####"); //}}} //{{{ Variable definitions //################################################################################################## PrintWriter out = null; String lastPointID = null; JFileChooser fileChooser; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public Vrml97Writer(ToolBox tb) { super(tb); fileChooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) fileChooser.setCurrentDirectory(new File(currdir)); } //}}} //{{{ save //################################################################################################## /** Writes out all the currently open kinemages */ public void save(Writer destination) { Kinemage kin = kMain.getKinemage(); out = new PrintWriter(new BufferedWriter(destination)); out.println("#VRML V2.0 utf8"); defineConstants(); writeKinemage(kin, 1); out.flush(); } //}}} //{{{ writeKinemage //################################################################################################## void writeKinemage(Kinemage kin, int index) { if(!kin.getName().startsWith(KinfileParser.DEFAULT_KINEMAGE_NAME)) { out.println("# @title {"+kin.getName()+"}"); } if(kin.atWhitebackground) out.println("# @whitebackground"); if(kin.atPdbfile != null) out.println("# @pdbfile {"+kin.atPdbfile+"}"); out.println("# BEGIN @kinemage "+index); out.println("Transform { children ["); for(Iterator iter = kin.iterator(); iter.hasNext(); ) { KGroup group = (KGroup)iter.next(); writeGroup(group, kin); } out.println("] }"); out.println("# END @kinemage "+index); } //}}} //{{{ writeGroup //################################################################################################## void writeGroup(KGroup group, Kinemage kin) { // Only write out visible groups! if(! group.isOn()) return; out.println(" # BEGIN @group {"+group.getName()+"}"); out.println(" Transform { children ["); for(Iterator iter = group.iterator(); iter.hasNext(); ) { KGroup subgroup = (KGroup)iter.next(); writeSubgroup(subgroup, kin); } out.println(" ] }"); out.println(" # END @group {"+group.getName()+"}"); } //}}} //{{{ writeSubgroup //################################################################################################## void writeSubgroup(KGroup subgroup, Kinemage kin) { // Only write out visible subgroups! if(! subgroup.isOn()) return; out.println(" # BEGIN @subgroup {"+subgroup.getName()+"}"); out.println(" Transform { children ["); for(Iterator iter = subgroup.iterator(); iter.hasNext(); ) { KList list = (KList)iter.next(); writeList(list, kin); } out.println(" ] }"); out.println(" # END @subgroup {"+subgroup.getName()+"}"); } //}}} //{{{ writeList //################################################################################################## void writeList(KList list, Kinemage kin) { // Only write out visible lists! if(! list.isOn()) return; out.println(" # BEGIN @"+list.getType()+"list {"+list.getName()+"}"); out.println(" Transform { children ["); lastPointID = null; for(Iterator iter = list.iterator(); iter.hasNext(); ) { KPoint point = (KPoint)iter.next(); if(point instanceof DotPoint) writeDotPoint(point, list, kin); else if(point instanceof BallPoint) writeBallPoint(point, list, kin); // else ignore points we don't know how to render } out.println(" ] }"); out.println(" # END @"+list.getType()+"list {"+list.getName()+"}"); } //}}} //{{{ writeDotPoint //################################################################################################## void writeDotPoint(KPoint point, KList list, Kinemage kin) { String xyz, color; xyz = df.format(point.getX())+" "+df.format(point.getY())+" "+df.format(point.getZ()); if(point.getColor() != null) color = point.getColor().toString(); else color = list.getColor().toString(); out.println("# "+point.getName()); out.println(" Transform { translation "+xyz+" children ["); out.println(" Shape { geometry USE kpDot appearance USE kc_"+color+" } ] }"); } //}}} //{{{ writeBallPoint //################################################################################################## void writeBallPoint(KPoint point, KList list, Kinemage kin) { String xyz, color; xyz = df.format(point.getX())+" "+df.format(point.getY())+" "+df.format(point.getZ()); if(point.getColor() != null) color = point.getColor().toString(); else color = list.getColor().toString(); BallPoint ball = (BallPoint)point; float radius = ball.r0; if(radius <= 0) radius = list.getRadius(); out.println("# "+point.getName()); out.println(" Transform { translation "+xyz+" children ["); out.println(" Shape { geometry Sphere { radius "+df.format(radius)+" } appearance USE kc_"+color+" } ] }"); } //}}} //{{{ writeView(), writeMaster() //################################################################################################## void writeView(KView view, int index) { /* NOT IMPLEMENTED * / out.println("@"+index+"viewid {"+view.getName()+"}"); out.println("@"+index+"span "+view.getSpan()); out.println("@"+index+"zslab "+(view.getClip()*200f)); float[] center = view.getCenter(); out.println("@"+index+"center "+df.format(center[0])+" "+df.format(center[1])+" "+df.format(center[2])); // Writen out Mage-style, for a post-multiplied matrix out.print("@"+index+"matrix"); for(int i = 0; i < 3; i++) { for(int j = 0; j < 3; j++) out.print(" "+df.format(view.xform[j][i])); } out.println(); /* NOT IMPLEMENTED */ } void writeMaster(MasterGroup master) { /* NOT IMPLEMENTED * / out.print("@master {"+master.getName()+"}"); //if(! master.isOn()) out.print(" off"); if(! master.hasButton()) out.print(" nobutton"); out.println(); if(master.pm_mask != 0) { out.println("@pointmaster '"+MasterGroup.fromPmBitmask(master.pm_mask)+"' {"+master.getName()+"}"); } /* NOT IMPLEMENTED */ } ///}}} //{{{ defineConstants //################################################################################################## void defineConstants() { out.println("############################################################"); out.println("# Definitions of geometric primitives"); out.println("DEF kpDot Sphere { radius 0.1 }"); out.println("############################################################"); out.println("# Definitions of standard colors"); out.println("DEF kc_red Appearance { material Material { diffuseColor 1 0 0 } }"); } //}}} //{{{ getToolsMenuItem, getHelpMenuItem, toString, onExport, isAppletSafe //################################################################################################## public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString()+"...", null, this, "onExport")); } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#export-vrml97"; } public String toString() { return "VRML 2.0 (97)"; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onExport(ActionEvent ev) { if(fileChooser.showSaveDialog(kMain.getTopWindow()) == fileChooser.APPROVE_OPTION) { File f = fileChooser.getSelectedFile(); if( !f.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { try { Writer w = new BufferedWriter(new FileWriter(f)); this.save(w); w.close(); } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } } } static public boolean isAppletSafe() { return false; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/export/KingLiteBinaryExport.java0000644000000000000000000003440711531213004024752 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.export; import king.*; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.*; //}}} /** * KingLiteBinaryExport writes binary "kinemage" files for the * J2ME application KingLite. * The format is simple: each point is four ints -- x, y, z, multi. Repeat as needed. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Thu Feb 3 16:28:53 EST 2005 */ public class KingLiteBinaryExport extends Plugin { //{{{ Constants static final String[] colors = { "red", "orange", "gold", "yellow", "lime", "green", "sea", "cyan", "sky", "blue", "purple", "magenta", "hotpink", "pink", "peach", "lilac", "pinktint", "peachtint", "yellowtint", "greentint", "bluetint", "lilactint", "white", "gray", "brown" }; static final int TYPE_VECTOR_NODRAW = 0; static final int TYPE_VECTOR_DRAW1 = 1; static final int TYPE_VECTOR_DRAW2 = 2; static final int TYPE_DOT_SMALL = 3; static final int TYPE_DOT_MEDIUM = 4; static final int TYPE_DOT_LARGE = 5; static final int TYPE_BALL = 6; static final int TYPE_LABEL = 7; // Bit that marks entries as kinemage "entities" (NEVER set for points) static final int ENTITY_BIT = 1<<31; static final int ENTITY_TYPE_SHIFT = 16; static final int ENTITY_TYPE_MASK = 0x7fff; static final int ENTITY_LEN_SHIFT = 0; static final int ENTITY_LEN_MASK = 0xffff; // Types of entities static final int ENT_NULL = 0; static final int ENT_GROUP = 1; static final int ENT_SUBGROUP = 2; static final int ENT_LIST = 3; // Group properties static final int ANIMATE_BIT = 1; //}}} //{{{ Variable definitions //############################################################################## JFileChooser chooser = null; SuffixFileFilter kltFilter, pdbFilter; //}}} //{{{ Constructor(s) //############################################################################## public KingLiteBinaryExport(ToolBox tb) { super(tb); } //}}} //{{{ buildChooser //############################################################################## private void buildChooser() { kltFilter = new SuffixFileFilter("KingLite binary kinemage"); kltFilter.addSuffix(".klt"); pdbFilter = new SuffixFileFilter("Palm database for IBM WebSphere/J9 VM"); pdbFilter.addSuffix(".pdb"); String currdir = System.getProperty("user.dir"); chooser = new JFileChooser(); chooser.addChoosableFileFilter(pdbFilter); chooser.addChoosableFileFilter(kltFilter); chooser.setFileFilter(pdbFilter); if(currdir != null) chooser.setCurrentDirectory(new File(currdir)); } //}}} //{{{ askExport //############################################################################## public void askExport() { if(chooser == null) buildChooser(); // Show the Save dialog if(JFileChooser.APPROVE_OPTION == chooser.showSaveDialog(kMain.getTopWindow())) { File f = chooser.getSelectedFile(); boolean doPalmHeader = (chooser.getFileFilter() == pdbFilter); if(doPalmHeader) { if(!pdbFilter.accept(f) && JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file has the wrong extension. Append '.pdb' to the name?", "Fix extension?", JOptionPane.YES_NO_OPTION)) f = new File(f+".pdb"); } else { if(!kltFilter.accept(f) && JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file has the wrong extension. Append '.klt' to the name?", "Fix extension?", JOptionPane.YES_NO_OPTION)) f = new File(f+".klt"); } if(!f.exists() || JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION)) { try { DataOutputStream out = new DataOutputStream(new BufferedOutputStream(new FileOutputStream(f))); String palmName = f.getName(); if(palmName.toLowerCase().endsWith(".pdb")) palmName = palmName.substring(0, palmName.length()-4); if(doPalmHeader) writePalmHeader(out, palmName, "Created by KiNG "+kMain.getPrefs().getString("version")); save(out, kMain.getKinemage()); out.close(); } catch(Exception ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } } } //}}} //{{{ writePalmHeader //############################################################################## public void writePalmHeader(DataOutputStream out, String kinName, String aboutText) throws IOException { // Palm DataBase (PDB) file based on http://www.palmos.com/dev/support/docs/fileformats/Intro.html // 32 bytes: Database name String dbname = "J9RMS "+System.currentTimeMillis(); out.writeBytes(dbname); for(int i = dbname.length(); i < 32; i++) out.writeByte(0); // Data I don't care about: flags and date stamps int[] hdr1 = { // attributes/version creation date modification date last backup date 0x00, 0x08, 0x00, 0x00, 0x42, 0x05, 0xdc, 0x5c, 0x42, 0x05, 0xdc, 0x9a, 0x42, 0x05, 0xdc, 0x9a, // modification # appInfoID sortInfoID type ("j9rs") 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x6a, 0x39, 0x72, 0x73, // creator ("KngL") unique ID seed nextRecordList ID # records 0x4b, 0x6e, 0x67, 0x4c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03 }; for(int i = 0; i < hdr1.length; i++) out.writeByte(hdr1[i]); // Now three record entries. We need to know size of data items 1 and 2 first... int baseOffset = 0x00000100; out.writeInt(baseOffset); // offset to start of first record out.writeInt(0x00000001); // UID for this record out.writeInt(baseOffset+kinName.length()); // offset to start of second record out.writeInt(0x00000002); // UID for this record out.writeInt(baseOffset+kinName.length()+aboutText.length()); // offset to start of third record out.writeInt(0x00000003); // UID for this record // More data I don't care about: the app info block int[] hdr2 = { // empty? "KingLite" followed by nulls (32b total) 0x00, 0x00, 0x4b, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x74, 0x65, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, // unknown... 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, // unknown... (these bytes vary...) (this one doesn't!) 0x00, 0x01, 0x01, 0xe7, 0xf7, 0x71, 0x0c, 0x16 }; for(int i = 0; i < hdr2.length; i++) out.writeByte(hdr2[i]); // Now the (Java) database name, followed by some nulls, for 32 (16 bit) chars String storename = Long.toString(System.currentTimeMillis(), 16)+kinName; if(storename.length() > 32) storename = storename.substring(0, 32); out.writeChars(storename); for(int i = storename.length(); i < 32; i++) out.writeChar( (char)0 ); int[] hdr3 = { //application name, etc. 0x00, 0x00, 0x00, 0x24, 0x00, 0x4b, 0x00, 0x69, 0x00, 0x6e, 0x00, 0x67, 0x00, 0x4c, 0x00, 0x69, 0x00, 0x74, 0x00, 0x65, 0x00, 0x2d, 0x00, 0x49, 0x00, 0x61, 0x00, 0x6e, 0x00, 0x20, 0x00, 0x44, 0x00, 0x61, 0x00, 0x76, 0x00, 0x69, 0x00, 0x73 }; for(int i = 0; i < hdr3.length; i++) out.writeByte(hdr3[i]); // Raw data: out.writeBytes(kinName); out.writeBytes(aboutText); } //}}} //{{{ save //############################################################################## public void save(DataOutputStream out, Kinemage kin) throws IOException { if(kin == null) return; for(Iterator gi = kin.iterator(); gi.hasNext(); ) { KGroup group = (KGroup) gi.next(); if(!group.isOn()) continue; if(group.hasButton()) saveGroup(out, group); for(Iterator si = group.iterator(); si.hasNext(); ) { KGroup subgroup = (KGroup) si.next(); if(!subgroup.isOn()) continue; if(subgroup.hasButton() && !group.isDominant()) saveGroup(out, subgroup); for(Iterator li = subgroup.iterator(); li.hasNext(); ) { KList list = (KList) li.next(); if(!list.isOn()) continue; if(list.hasButton() && !subgroup.isDominant() && !group.isDominant()) saveGroup(out, list); for(Iterator pi = list.iterator(); pi.hasNext(); ) { KPoint pt = (KPoint) pi.next(); if(!pt.isOn()) continue; savePoint(out, pt); } } } } out.flush(); } //}}} //{{{ saveGroup //############################################################################## void saveGroup(DataOutputStream out, AGE age) throws IOException { int entityType = 0; int flags = 0; if(age instanceof KGroup) { if(age.getDepth() == 1) { entityType = ENT_GROUP; if(((KGroup)age).isAnimate()) flags |= ANIMATE_BIT; } else { entityType = ENT_SUBGROUP; } } else if(age instanceof KList) { entityType = ENT_LIST; } String name = age.getName(); int len = 4 + 4+ 2*name.length(); // length in bytes int ent = ENTITY_BIT | (entityType<XknWriter writes out XML-format kinemage files. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 3 09:51:11 EDT 2002 */ public class XknWriter extends Plugin implements XMLReader { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.####"); static final char[] newline = "\n".toCharArray(); //}}} //{{{ Variable definitions //################################################################################################## ContentHandler cnHandler = null; LexicalHandler lxHandler = null; ErrorHandler errHandler = null; String nsu = ""; JFileChooser fileChooser; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public XknWriter(ToolBox tb) { super(tb); fileChooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) fileChooser.setCurrentDirectory(new File(currdir)); } //}}} //{{{ save() //################################################################################################## /** Writes out all the currently open kinemages */ public void save(OutputStream os) { try { BufferedOutputStream bos = new BufferedOutputStream(os); TransformerFactory tFactory = TransformerFactory.newInstance(); Transformer transformer = tFactory.newTransformer(); // Empty InputSource is OK, but it can't be null for some reason. SAXSource source = new SAXSource(this, new InputSource()); StreamResult result = new StreamResult(bos); transformer.transform(source, result); // calls parse() } catch(Throwable t) { System.err.println("*** Couldn't transform!"); t.printStackTrace(SoftLog.err); } } //}}} //{{{ parse() //################################################################################################## public void parse(InputSource input) throws IOException, SAXException { if(cnHandler == null) throw new SAXException("No content handler"); // Begin the document String elName = "kinemages"; AttributesImpl atts = new AttributesImpl(); //atts.addAttribute(nsu, "x", "x", "CDATA", "this_is_x"); cnHandler.startDocument(); cnHandler.startElement(nsu, elName, elName, atts); // Write out text atts = new AttributesImpl(); atts.addAttribute(nsu, "mimetype", "mimetype", "CDATA", "text/plain"); cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.startElement(nsu, "text", "text", atts); if(lxHandler != null) lxHandler.startCDATA(); String kinText = kMain.getTextWindow().getText().trim(); cnHandler.characters(kinText.toCharArray(), 0, kinText.length()); if(lxHandler != null) lxHandler.endCDATA(); cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.endElement(nsu, "text", "text"); // Write each kinemage KinStable stable = kMain.getStable(); Kinemage kin; int index = 1; for(Iterator iter = stable.getKins().iterator(); iter.hasNext(); index++) { kin = (Kinemage)iter.next(); writeKinemage(kin, index); } // End the document cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.endElement(nsu, elName, elName); cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.endDocument(); } //}}} //{{{ writeKinemage() //################################################################################################## void writeKinemage(Kinemage kin, int index) throws SAXException { // Begin the element String elName = "kinemage"; AttributesImpl atts = new AttributesImpl(); atts.addAttribute(nsu, "index", "index", "CDATA", Integer.toString(index)); cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.startElement(nsu, elName, elName, atts); Iterator iter; int idx = 1; for(iter = kin.getViewList().iterator(); iter.hasNext(); idx++) { writeView((KView)iter.next(), idx); } for(iter = kin.masterList().iterator(); iter.hasNext(); ) { writeMaster((MasterGroup)iter.next(), kin); } // etc. KGroup group; for(iter = kin.iterator(); iter.hasNext(); ) { group = (KGroup)iter.next(); writeGroup(group, kin); } // End the element cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.endElement(nsu, elName, elName); } //}}} //{{{ writeGroup() //################################################################################################## void writeGroup(KGroup group, Kinemage kin) throws SAXException { Iterator iter; String elName = "group"; AttributesImpl atts = new AttributesImpl(); atts.addAttribute(nsu, "name", "name", "CDATA", group.getName()); if(! group.isOn()) atts.addAttribute(nsu, "off", "off", "CDATA", "true"); if(! group.hasButton()) atts.addAttribute(nsu, "nobutton", "nobutton", "CDATA", "true"); if( group.isDominant()) atts.addAttribute(nsu, "dominant", "dominant", "CDATA", "true"); if( group.isAnimate()) atts.addAttribute(nsu, "animate", "animate", "CDATA", "true"); if( group.is2Animate()) atts.addAttribute(nsu, "2animate", "2animate", "CDATA", "true"); // Begin the element cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.startElement(nsu, elName, elName, atts); /*MasterGroup master; for(iter = kin.masterIter(); iter.hasNext(); ) { master = (MasterGroup)iter.next(); if(master.isTarget(group)) writeMasterReference(master); }*/ for(iter = group.getMasters().iterator(); iter != null && iter.hasNext(); ) { writeMasterReference(iter.next().toString()); } KGroup subgroup; for(iter = group.iterator(); iter.hasNext(); ) { subgroup = (KGroup)iter.next(); writeSubgroup(subgroup, kin); } // End the element cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.endElement(nsu, elName, elName); } //}}} //{{{ writeSubgroup() //################################################################################################## void writeSubgroup(KGroup subgroup, Kinemage kin) throws SAXException { Iterator iter; String elName = "subgroup"; AttributesImpl atts = new AttributesImpl(); atts.addAttribute(nsu, "name", "name", "CDATA", subgroup.getName()); if(! subgroup.isOn()) atts.addAttribute(nsu, "off", "off", "CDATA", "true"); if(! subgroup.hasButton()) atts.addAttribute(nsu, "nobutton", "nobutton", "CDATA", "true"); if( subgroup.isDominant()) atts.addAttribute(nsu, "dominant", "dominant", "CDATA", "true"); // Begin the element cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.startElement(nsu, elName, elName, atts); /*MasterGroup master; for(iter = kin.masterIter(); iter.hasNext(); ) { master = (MasterGroup)iter.next(); if(master.isTarget(subgroup)) writeMasterReference(master); }*/ for(iter = subgroup.getMasters().iterator(); iter != null && iter.hasNext(); ) { writeMasterReference(iter.next().toString()); } KList list; for(iter = subgroup.iterator(); iter.hasNext(); ) { list = (KList)iter.next(); writeList(list, kin); } // End the element cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.endElement(nsu, elName, elName); } //}}} //{{{ writeList() //################################################################################################## void writeList(KList list, Kinemage kin) throws SAXException { Iterator iter; String elName = "list"; AttributesImpl atts = new AttributesImpl(); atts.addAttribute(nsu, "type", "type", "CDATA", list.getType()); atts.addAttribute(nsu, "name", "name", "CDATA", list.getName()); if(! list.isOn()) atts.addAttribute(nsu, "off", "off", "CDATA", "true"); if(! list.hasButton()) atts.addAttribute(nsu, "nobutton", "nobutton", "CDATA", "true"); atts.addAttribute(nsu, "color", "color", "CDATA", list.getColor().toString()); if(list.getType() == KList.VECTOR) { atts.addAttribute(nsu, "width", "width", "CDATA", Integer.toString(list.getWidth())); } else if(list.getType() == KList.BALL || list.getType() == KList.SPHERE) { atts.addAttribute(nsu, "radius", "radius", "CDATA", df.format(list.getRadius())); if(list.getNoHighlight()) { atts.addAttribute(nsu, "highlight", "highlight", "CDATA", "false"); } } // Begin the element cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.startElement(nsu, elName, elName, atts); /*MasterGroup master; for(iter = kin.masterIter(); iter.hasNext(); ) { master = (MasterGroup)iter.next(); if(master.isTarget(list)) writeMasterReference(master); }*/ for(iter = list.getMasters().iterator(); iter != null && iter.hasNext(); ) { writeMasterReference(iter.next().toString()); } KPoint point; for(iter = list.iterator(); iter.hasNext(); ) { point = (KPoint)iter.next(); writePoint(point, list, kin); } // End the element cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.endElement(nsu, elName, elName); } //}}} //{{{ writePoint() //################################################################################################## void writePoint(KPoint point, KList list, Kinemage kin) throws SAXException { Iterator iter; String elName = "t"; AttributesImpl atts = new AttributesImpl(); if(point.isBreak()) atts.addAttribute(nsu, "lineto", "lineto", "CDATA", "false"); atts.addAttribute(nsu, "name", "name", "CDATA", point.getName()); if(point.getPmMask() != 0) atts.addAttribute(nsu, "masters", "masters", "CDATA", kin.fromPmBitmask(point.getPmMask())); if(point.getAspects() != null) atts.addAttribute(nsu, "aspects", "aspects", "CDATA", point.getAspects()); if(point.isUnpickable()) atts.addAttribute(nsu, "pickable", "pickable", "CDATA", "false"); if(point instanceof VectorPoint) { VectorPoint v = (VectorPoint)point; if(v.getWidth() > 0 && v.getWidth() != list.getWidth()) { atts.addAttribute(nsu, "width", "width", "CDATA", Integer.toString(v.getWidth())); } } else if(point instanceof BallPoint) { BallPoint b = (BallPoint)point; { atts.addAttribute(nsu, "radius", "radius", "CDATA", df.format(b.r0)); } } else if(point instanceof MarkerPoint) { MarkerPoint m = (MarkerPoint)point; atts.addAttribute(nsu, "style", "style", "CDATA", Integer.toString(m.getStyle())); } if(point.getColor() != null) { atts.addAttribute(nsu, "color", "color", "CDATA", point.getColor().toString()); } atts.addAttribute(nsu, "x", "x", "CDATA", df.format(point.getX())); atts.addAttribute(nsu, "y", "y", "CDATA", df.format(point.getY())); atts.addAttribute(nsu, "z", "z", "CDATA", df.format(point.getZ())); // Begin the element cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.startElement(nsu, elName, elName, atts); // End the element //cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.endElement(nsu, elName, elName); } //}}} //{{{ writeView() //################################################################################################## void writeView(KView view, int index) throws SAXException { String elName = "view"; AttributesImpl atts = new AttributesImpl(); atts.addAttribute(nsu, "name", "name", "CDATA", view.getName()); atts.addAttribute(nsu, "index", "index", "CDATA", Integer.toString(index)); float[] center = view.getCenter(); atts.addAttribute(nsu, "x", "x", "CDATA", df.format(center[0])); atts.addAttribute(nsu, "y", "y", "CDATA", df.format(center[1])); atts.addAttribute(nsu, "z", "z", "CDATA", df.format(center[2])); atts.addAttribute(nsu, "span", "span", "CDATA", df.format(view.getSpan())); atts.addAttribute(nsu, "zslab", "zslab", "CDATA", df.format(view.getClip()*200f)); // Writen out Mage-style, for a post-multiplied matrix for(int i = 1; i < 4; i++) { for(int j = 1; j < 4; j++) { atts.addAttribute(nsu, "m"+i+j, "m"+i+j, "CDATA", df.format(view.xform[j-1][i-1])); } } // Begin the element cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.startElement(nsu, elName, elName, atts); // End the element //cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.endElement(nsu, elName, elName); } //}}} //{{{ writeMaster(Reference)() //################################################################################################## void writeMaster(MasterGroup master, Kinemage kin) throws SAXException { String elName = "master"; AttributesImpl atts = new AttributesImpl(); atts.addAttribute(nsu, "name", "name", "CDATA", master.getName()); if(master.pm_mask != 0) { atts.addAttribute(nsu, "pointmaster", "pointmaster", "CDATA", kin.fromPmBitmask(master.pm_mask)); } if(! master.isOn()) atts.addAttribute(nsu, "off", "off", "CDATA", "true"); if(! master.hasButton()) atts.addAttribute(nsu, "nobutton", "nobutton", "CDATA", "true"); // Begin the element cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.startElement(nsu, elName, elName, atts); // End the element //cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.endElement(nsu, elName, elName); } void writeMasterReference(String master) throws SAXException { String elName = "master"; AttributesImpl atts = new AttributesImpl(); atts.addAttribute(nsu, "name", "name", "CDATA", master); // Begin the element cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.startElement(nsu, elName, elName, atts); // End the element //cnHandler.ignorableWhitespace(newline, 0, 1); cnHandler.endElement(nsu, elName, elName); } ///}}} //{{{ get/set ContentHandler //################################################################################################## public ContentHandler getContentHandler() { return cnHandler; } public void setContentHandler(ContentHandler h) { cnHandler = h; } //}}} //{{{ get/set ErrorHandler //################################################################################################## public ErrorHandler getErrorHandler() { return errHandler; } public void setErrorHandler(ErrorHandler h) { errHandler = h; } //}}} //{{{ get/set Property //################################################################################################## public Object getProperty(String name) { if(( name.equals("http://xml.org/sax/properties/lexical-handler") || name.equals("http://xml.org/sax/handlers/LexicalHandler"))) { return lxHandler; } else return null; } public void setProperty(String name, Object value) { if(( name.equals("http://xml.org/sax/properties/lexical-handler") || name.equals("http://xml.org/sax/handlers/LexicalHandler")) && value instanceof LexicalHandler) { lxHandler = (LexicalHandler)value; } } //}}} //{{{ other null methods for XMLReader //################################################################################################## public void parse(String systemID) throws IOException, SAXException {} public DTDHandler getDTDHandler() { return null; } public void setDTDHandler(DTDHandler h) {} public EntityResolver getEntityResolver() { return null; } public void setEntityResolver(EntityResolver e) {} public boolean getFeature(String name) { return false; } public void setFeature(String name, boolean value) {} //}}} //{{{ getToolsMenuItem, getHelpMenuItem, toString, onExport, isAppletSafe //################################################################################################## public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString()+"...", null, this, "onExport")); } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#export-xml"; } public String toString() { return "XML"; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onExport(ActionEvent ev) { if(fileChooser.showSaveDialog(kMain.getTopWindow()) == fileChooser.APPROVE_OPTION) { File f = fileChooser.getSelectedFile(); if( !f.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { try { OutputStream os = new BufferedOutputStream(new FileOutputStream(f)); this.save(os); os.close(); } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } catch(Throwable t) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Your version of Java appears to be missing the needed XML libraries. File was not written.", "Sorry!", JOptionPane.ERROR_MESSAGE); t.printStackTrace(SoftLog.err); } } } } static public boolean isAppletSafe() { return false; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/export/DiveExport.java0000644000000000000000000001537311531213004022767 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.export; import king.*; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; import java.io.*; //import java.net.*; import java.util.*; import java.text.DecimalFormat; import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.*; //}}} /** * DiveExport writes simple text files that Jeremy's VirTools * script can import into the Duke Immersive Virtual Environment (cave). * * Only visible balls/sphere and vectors are output. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Thu Feb 3 16:28:53 EST 2005 */ public class DiveExport extends Plugin { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.0###"); static final Pattern atomNamePattern = Pattern.compile(":(..)"); //}}} //{{{ Variable definitions //############################################################################## JFileChooser chooser = null; //}}} //{{{ Constructor(s) //############################################################################## public DiveExport(ToolBox tb) { super(tb); } //}}} //{{{ buildChooser //############################################################################## private void buildChooser() { String currdir = System.getProperty("user.dir"); chooser = new JFileChooser(); if(currdir != null) chooser.setCurrentDirectory(new File(currdir)); } //}}} //{{{ askExport //############################################################################## public void askExport() { if(chooser == null) buildChooser(); // Show the Save dialog if(JFileChooser.APPROVE_OPTION == chooser.showSaveDialog(kMain.getTopWindow())) { File f = chooser.getSelectedFile(); if(!f.exists() || JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION)) { try { PrintStream out = new PrintStream(new BufferedOutputStream(new FileOutputStream(f))); save(out, kMain.getKinemage()); out.close(); } catch(Exception ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } } } //}}} //{{{ save //############################################################################## public void save(PrintStream out, Kinemage kin) throws IOException { if(kin == null) return; for(KPoint pt : KIterator.visiblePoints(kin)) savePoint(out, pt); out.flush(); } //}}} //{{{ savePoint //############################################################################## /** Backslash delimited, must invert X-axis b/c DiVE has opposite handedness? */ public void savePoint(PrintStream out, KPoint p) throws IOException { KList list = (KList) p.getParent(); if(list == null) return; if(p instanceof BallPoint || p instanceof SpherePoint) { out.println("ball_"+getPtName(p)+"\\"+df.format(-p.getX())+"\\"+df.format(p.getY())+"\\"+df.format(p.getZ())+"\\"+p.getName()+"\\"+df.format(getRadius(list, p))); } else if(p instanceof DotPoint) { out.println("dot_"+getPtName(p)+"\\"+df.format(-p.getX())+"\\"+df.format(p.getY())+"\\"+df.format(p.getZ())+"\\"+p.getName()+"\\"+getWidth(list, p)); } else if(p instanceof LabelPoint) { out.println("label_"+getPtName(p)+"\\"+df.format(-p.getX())+"\\"+df.format(p.getY())+"\\"+df.format(p.getZ())+"\\"+p.getName()); } else if(p instanceof VectorPoint || p instanceof ArrowPoint) { KPoint q = p.getPrev(); if(q != null) { out.println("vector_"+getPtName(p)+"\\"+df.format(-q.getX())+"\\"+df.format(q.getY())+"\\"+df.format(q.getZ())+"\\"+ df.format(-p.getX())+"\\"+df.format(p.getY())+"\\"+df.format(p.getZ())+"\\"+p.getName()+"\\"+getWidth(list, p)); } } else if(p instanceof TrianglePoint) { KPoint q = p.getPrev(); if(q != null) { KPoint r = q.getPrev(); if(r != null) { out.println("triangle_"+getPtName(p)+"\\"+df.format(-r.getX())+"\\"+df.format(r.getY())+"\\"+df.format(r.getZ())+"\\"+ df.format(-q.getX())+"\\"+df.format(q.getY())+"\\"+df.format(q.getZ())+"\\"+ df.format(-p.getX())+"\\"+df.format(p.getY())+"\\"+df.format(p.getZ())+"\\"+p.getName()); } } } //else } //}}} //{{{ getPtName //############################################################################## /** Extracts putative atom name for kins made by Molikin */ String getPtName(KPoint p) { /* Matcher m = atomNamePattern.matcher(p.getName()); if(m.find() && m.groupCount() >= 1) { return m.group(1).trim(); } else return "X"; */ KPaint color = p.getDrawingColor(); while(color.isAlias()) color = color.getAlias(); return color.toString(); } int getWidth(KList list, KPoint p) { int w = p.getWidth(); if(w != 0) return w; else return list.getWidth(); } float getRadius(KList list, KPoint p) { float r = p.getRadius(); if(r != 0) return r; else return list.getRadius(); } //}}} //{{{ getToolsMenuItem, getHelpMenuItem, toString, onExport, isAppletSafe //################################################################################################## public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString()+"...", null, this, "onExport")); } public JMenuItem getHelpMenuItem() { return null; } public String toString() { return "DIVE / VirTools"; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onExport(ActionEvent ev) { this.askExport(); } static public boolean isAppletSafe() { return false; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/export/PovrayExport.java0000644000000000000000000005620711531213004023361 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.export; import king.*; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * PovrayExport writes files for raytracing with the POV-Ray program. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 3 09:51:11 EDT 2002 */ public class PovrayExport extends Plugin { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.####"); //}}} //{{{ Variable definitions //################################################################################################## PrintWriter out = null; String lastPointID = null; Map triNormals = null; JFileChooser chooser = null; SuffixFileFilter povFilter; JCheckBox doNormals; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PovrayExport(ToolBox tb) { super(tb); } //}}} //{{{ buildChooser //############################################################################## private void buildChooser() { povFilter = new SuffixFileFilter("POV-Ray scene description"); povFilter.addSuffix(".pov"); String currdir = System.getProperty("user.dir"); chooser = new JFileChooser(); chooser.addChoosableFileFilter(povFilter); chooser.setFileFilter(povFilter); if(currdir != null) chooser.setCurrentDirectory(new File(currdir)); //chooser.addPropertyChangeListener(this); doNormals = new JCheckBox("Smooth triangles and ribbons", true); chooser.setAccessory(doNormals); } //}}} //{{{ askExport //############################################################################## public void askExport() { if(chooser == null) buildChooser(); // Show the Save dialog if(JFileChooser.APPROVE_OPTION == chooser.showSaveDialog(kMain.getTopWindow())) { File f = chooser.getSelectedFile(); if(!povFilter.accept(f) && JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file has the wrong extension. Append '.pov' to the name?", "Fix extension?", JOptionPane.YES_NO_OPTION)) { f = new File(f+".pov"); } if(!f.exists() || JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION)) { try { Writer w = new BufferedWriter(new FileWriter(f)); // Doesn't make sense to save more than the current kinemage. // This is consistent with what PDF, JPG/PNG exporters do. //save(w, kMain.getTextWindow().getText(), kMain.getStable().getKins()); save(w, kMain.getTextWindow().getText(), Collections.singleton(kMain.getKinemage())); } catch(Exception ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } } } //}}} //{{{ save //################################################################################################## /** Writes out all the currently open kinemages */ public void save(Writer destination, String text, Collection kinemages) { Kinemage kin; int index = 1; out = new PrintWriter(new BufferedWriter(destination)); out.println("// (jEdit options) :folding=explicit:collapseFolds=1:"); out.println("// Still: povray +FN8 +W600 +H600 +Q9 +A0.3 +UL +UV +I__FILE__.pov +O__FILE__.png && open __FILE__.png"); out.println("// Movie: povray +FN8 +W600 +H600 +Q9 +A0.3 +UL +UV +KFF60 +KC +I__FILE__.pov +O__FILE__.png"); out.println("// QuickTime: choose File | Export, then QuickTime Movie / LAN settings; set size and data rate."); out.println("//@text {{{"); out.println("/*"); out.println(text.trim()); out.println("*/"); out.println("//}}}"); out.println(); for(Iterator iter = kinemages.iterator(); iter.hasNext(); index++) { kin = (Kinemage)iter.next(); if(doNormals.isSelected()) triNormals = buildTriangleNormals(kin); else triNormals = new HashMap(); writeKinemage(kin, index); } out.flush(); } //}}} //{{{ writeKinemage //################################################################################################## void writeKinemage(Kinemage kin, int index) { Iterator iter; out.println("//@kinemage "+index+" - hand edit at end of kinemage def."); out.println("// Should be span (from view) / (2 * rendering width in pixels)"); out.println("#declare LW = "+df.format(kMain.getView().getSpan())+" / (2 * 600); // unit line width"); out.println("#declare DW = "+df.format(kMain.getView().getSpan())+" / (2 * 600); // unit dot width"); out.println("#declare LabelFont = \"timrom.ttf\"; // may need +L/path/to/font/files"); out.println("#declare LabelDepth = 0.001; // essentially flat text"); out.println("#declare LabelOffset = 0;"); out.println("#declare LabelXform = transform { scale 1.0 }; // use this to get text facing forward"); out.println(); out.println("#declare DefaultTexture = texture { finish { ambient 0.4 diffuse 0.5 specular 0.3 roughness 0.1 } };"); out.println("#declare BallFinish = finish { specular 1 roughness 0.01 };"); out.println("//{{{ Color definitions"); Collection colorsets = kin.getAllPaintMap().values(); for(iter = colorsets.iterator(); iter.hasNext(); ) { KPaint kp = (KPaint)iter.next(); Paint p; if(kin.atWhitebackground) p = kp.getWhiteExemplar(); else p = kp.getBlackExemplar(); if(p instanceof Color) { Color c = (Color) p; out.print("#declare C_"+kp+" = texture { DefaultTexture pigment { rgb <"); out.print(df.format(c.getRed()/255.0)+", "); out.print(df.format(c.getGreen()/255.0)+", "); out.print(df.format(c.getBlue()/255.0)); out.println("> } };"); } } out.println("//}}} Color definitions"); out.println(); out.println("//{{{ Kinemage definition"); out.println("#declare Kinemage"+index+" = union {"); for(iter = kin.iterator(); iter.hasNext(); ) { KGroup group = (KGroup)iter.next(); writeGroup(group, kin); } out.println("}; // End of Kinemage"+index); out.println("//}}} Kinemage definition"); out.println(); out.println("//{{{ View definitions"); out.println("// The kinemage is declared using the original coordinates from the file."); out.println("// By default, these 'views' are used to transform it into a 2x2x2 unit box centered"); out.println("// on the origin, while the viewpoint/camera is 6 units away on the +Z axis."); out.println("// Alternatively, you can work in the kinemage space by transforming the view instead:"); out.println("// camera { ... transform { View0 inverse } } // INVERSE is crucial!"); out.println("// Use CLIPPED_BY statements with kinemage object declaration to get clipping."); int idx = 0; writeView(kMain.getView(), idx++); for(iter = kin.getViewList().iterator(); iter.hasNext(); idx++) { writeView((KView)iter.next(), idx); } out.println("//}}} View definitions"); out.println(); out.println("object {"); out.println(" Kinemage"+index); out.println(" no_shadow // still preserves specular/phong highlights"); out.println(" transform { View0 }"); out.println(" // clipped_by ... from view definitions"); out.println("}"); out.println(); out.println("camera {"); if(kin.atPerspective) out.println(" perspective // orthographic"); else out.println(" orthographic // perspective"); out.println(" location <0, 0, 0>"); out.println(" up <0, 1, 0> // * 3/4 // for 800x600, 1024x768, etc."); out.println(" right <-1, 0, 0> // right-handed"); if(kin.atPerspective) out.println(" direction <0, 0, 6> // <0, 0, 1>"); else out.println(" direction <0, 0, 1> // <0, 0, 6>"); out.println(" rotate <0, 180, 0>"); out.println(" translate <0, 0, 6>"); out.println("}"); out.println(); out.println("// Adding 'shadowless' keyword also prevents specular/phong highlights"); out.println("light_source { <-1, 1, 6> rgb 1.50 shadowless }"); out.println("light_source { <-6, 6, 6> rgb 0.75 } // good for highlights on balls"); if(kin.atWhitebackground) out.println("background { rgb 1 }"); else out.println("background { rgb 0 }"); out.println("fog { // for Mage-style depth cueing"); out.println(" fog_type 2 // 'ground fog'"); out.println(" up z // density gradient along z"); out.println(" fog_offset 1.0 // fog starts at z = ..."); out.println(" fog_alt 0.001 // no transition region"); if(kin.atWhitebackground) out.println(" rgb 1"); else out.println(" rgb 0"); out.println(" distance 1.50 // smaller = stronger"); out.println("}"); } //}}} //{{{ writeGroup //################################################################################################## void writeGroup(KGroup group, Kinemage kin) { if(!group.isOn()) out.print("/*"); out.println("//@group {"+group.getName()+"}"); for(Iterator iter = group.iterator(); iter.hasNext(); ) { KGroup subgroup = (KGroup)iter.next(); writeSubgroup(subgroup, kin); } out.println("// End of "+group.getName()); if(!group.isOn()) out.println("*/"); } //}}} //{{{ writeSubgroup //################################################################################################## void writeSubgroup(KGroup subgroup, Kinemage kin) { if(!subgroup.isOn()) out.print("/*"); out.println("//@subgroup {"+subgroup.getName()+"}"); for(Iterator iter = subgroup.iterator(); iter.hasNext(); ) { KList list = (KList)iter.next(); writeList(list, kin); } out.println("// End of "+subgroup.getName()); if(!subgroup.isOn()) out.println("*/"); } //}}} //{{{ writeList //################################################################################################## void writeList(KList list, Kinemage kin) { if(!list.isOn()) out.print("/*"); out.println("union { //@"+list.getType()+"list {"+list.getName()+"}"); lastPointID = null; for(Iterator iter = list.iterator(); iter.hasNext(); ) { KPoint point = (KPoint)iter.next(); writePoint(point, list, kin); lastPointID = point.getName(); } KPaint paint = list.getColor(); if(paint == null) paint = KPalette.defaultColor; String highlight = ""; if(!list.getNoHighlight() && (KList.BALL.equals(list.getType()) || KList.SPHERE.equals(list.getType()))) highlight = " finish{BallFinish}"; String alpha = ""; // This doesn't seem to work! Seems to overwrite the color info. //if(list.getAlpha() != 255) // alpha = " pigment{transmit "+df.format(list.getAlpha()/255.0)+"}"; out.println("texture { C_"+paint+highlight+alpha+" }"); out.println("} // End of "+list.getName()); if(!list.isOn()) out.println("*/"); } //}}} //{{{ writePoint //################################################################################################## void writePoint(KPoint point, KList list, Kinemage kin) { if(point == null) return; out.println("//"+point.getName()); String highlight = list.getNoHighlight() ? "" : " finish{BallFinish}"; KPaint paint = point.getColor(); String paintName = (paint != null && paint != list.getColor() && !kin.atListcolordominant) ? " texture {C_"+paint+highlight+"}" : ""; if(point instanceof BallPoint) { double rad = ((BallPoint)point).r0; if(rad <= 0) rad = list.getRadius(); out.println("sphere { <"+df.format(point.getX())+", "+df.format(point.getY())+", "+df.format(point.getZ())+">, " +df.format(rad)+paintName+" }"); } else if(point instanceof DotPoint) { int width = list.getWidth(); out.println("sphere { <"+df.format(point.getX())+", "+df.format(point.getY())+", "+df.format(point.getZ())+">, " +"DW*"+df.format(width)+paintName+" }"); } else if(point instanceof LabelPoint) { out.print("text { ttf LabelFont, \""+point+"\", LabelDepth, LabelOffset"); out.print(" transform { LabelXform }"); out.print(" transform { translate <"+df.format(point.getX())+", "+df.format(point.getY())+", "+df.format(point.getZ())+"> }"); out.println(paintName+" }"); } // SpherePoint is a child of BallPoint else if(point instanceof TrianglePoint) { KPoint prev = point.getPrev(); if(prev != null) { KPoint prevprev = prev.getPrev(); if(prevprev != null && !(point.equals(prev) || prev.equals(prevprev) || prevprev.equals(point))) { Triple n1 = (Triple) triNormals.get(point), n2 = (Triple) triNormals.get(prev), n3 = (Triple) triNormals.get(prevprev); if(n1 == null || n2 == null || n3 == null) { System.err.println("Null normal for "+point); out.println("triangle { <"+df.format(prevprev.getX())+", "+df.format(prevprev.getY())+", "+df.format(prevprev.getZ())+">, " +"<"+df.format(prev.getX())+", "+df.format(prev.getY())+", "+df.format(prev.getZ())+">, " +"<"+df.format(point.getX())+", "+df.format(point.getY())+", "+df.format(point.getZ())+">" +paintName+" }"); } else { // Get all normals facing same way, using n3 as reference. // This *might* (?) lead to a consistent inside/outside definition. if(n3.angle(n1) > 90) n1.neg(); if(n3.angle(n2) > 90) n2.neg(); out.println("smooth_triangle { <"+df.format(prevprev.getX())+", "+df.format(prevprev.getY())+", "+df.format(prevprev.getZ())+">, " +"<"+df.format(n3.getX())+", "+df.format(n3.getY())+", "+df.format(n3.getZ())+">, " +"<"+df.format(prev.getX())+", "+df.format(prev.getY())+", "+df.format(prev.getZ())+">, " +"<"+df.format(n2.getX())+", "+df.format(n2.getY())+", "+df.format(n2.getZ())+">, " +"<"+df.format(point.getX())+", "+df.format(point.getY())+", "+df.format(point.getZ())+">, " +"<"+df.format(n1.getX())+", "+df.format(n1.getY())+", "+df.format(n1.getZ())+">" +paintName+" }"); } } } } else if(point instanceof VectorPoint) { int width = point.getWidth(); if(width <= 0) width = list.getWidth(); out.println("sphere { <"+df.format(point.getX())+", "+df.format(point.getY())+", "+df.format(point.getZ())+">, " +"LW*"+df.format(width)+paintName+" }"); KPoint prev = point.getPrev(); if(prev != null && !point.equals(prev)) { out.println("cylinder { <"+df.format(point.getX())+", "+df.format(point.getY())+", "+df.format(point.getZ())+">, " +"<"+df.format(prev.getX())+", "+df.format(prev.getY())+", "+df.format(prev.getZ())+">, " +"LW*"+df.format(width)+paintName+" }"); // When using point widths on vectors, may need endcaps on both ends to avoid "nipple" effect if(width > list.getWidth() || width > prev.getWidth()) out.println("sphere { <"+df.format(prev.getX())+", "+df.format(prev.getY())+", "+df.format(prev.getZ())+">, " +"LW*"+df.format(width)+paintName+" }"); } } else out.println("// "+point.getClass()+" is not supported in POV-Ray output"); } //}}} //{{{ writeView //################################################################################################## void writeView(KView view, int index) { out.println("//@"+index+"viewid {"+view.getName()+"}"); float[] center = view.getCenter(); out.println("#declare View"+index+" = transform {"); out.println(" translate <"+df.format(-center[0])+", "+df.format(-center[1])+", "+df.format(-center[2])+">"); out.println(" matrix <"); for(int i = 0; i < 3; i++) { out.print(" "); for(int j = 0; j < 3; j++) out.print(df.format(view.xform[j][i])+", "); out.println(); } out.println(" 0, 0, 0>"); out.println(" //rotate <0,20*sin(2*pi*clock),0> // rocking motion around Y"); out.println(" //rotate <0,360*clock,0> // smooth rotation around Y"); out.println(" //rotate <180*clock, 360*clock, 0> // tumbling motion"); out.println(" scale 1.0/"+df.format(view.getSpan())); out.println("//clipped_by { plane { z, "+df.format(view.getClip())+"} }"); out.println("//clipped_by { plane { -z, "+df.format(view.getClip())+"} }"); out.println("};"); } ///}}} //{{{ buildTriangleNormals //################################################################################################## /** * Builds a mapping of KPoints (which are equated by x,y,z) to normal vectors. */ Map buildTriangleNormals(Kinemage kin) { // 1. Accumulate triangle normals involving a particular point Map normals = new HashMap(); // maps KPoints to Collections of Triples boolean swapNormal = false; for(KPoint pt : KIterator.allPoints(kin)) { if(!(pt instanceof TrianglePoint)) continue; TrianglePoint t = (TrianglePoint) pt; if(t.getPrev() == null || t.getPrev().getPrev() == null) continue; TrianglePoint u = (TrianglePoint) t.getPrev(), v = (TrianglePoint) t.getPrev().getPrev(); if(t.equals(u) || u.equals(v) || v.equals(t)) continue; Triple a = new Triple(u).sub(t); Triple b = new Triple(v).sub(t); a.cross(b).unit(); // Swap alternate triangles to keep normals pointing the right way! if(swapNormal) a.neg(); swapNormal = !swapNormal; Collection n = (Collection) normals.get(t); if(n == null) { n = new ArrayList(); normals.put(t, n); } n.add(a); n = (Collection) normals.get(u); if(n == null) { n = new ArrayList(); normals.put(u, n); } n.add(a); n = (Collection) normals.get(v); if(n == null) { n = new ArrayList(); normals.put(v, n); } n.add(a); } // 2. At each point, average the normal vectors Map avNormal = new HashMap(); // maps KPoints to single Triples for(Iterator iter = normals.keySet().iterator(); iter.hasNext(); ) { TrianglePoint t = (TrianglePoint) iter.next(); Collection n = (Collection) normals.get(t); Triple x = new Triple(); for(Iterator i2 = n.iterator(); i2.hasNext(); ) x.add( (Triple) i2.next() ); x.mult(1.0 / n.size()).unit(); // Check for disagreement. Flip any normal off by > 90 deg. for(Iterator i2 = n.iterator(); i2.hasNext(); ) { Triple y = (Triple) i2.next(); if(x.angle(y) > 90) y.neg(); } x.setXYZ(0, 0, 0); for(Iterator i2 = n.iterator(); i2.hasNext(); ) x.add( (Triple) i2.next() ); x.mult(1.0 / n.size()).unit(); // Check for disagreement. Report any problems for(Iterator i2 = n.iterator(); i2.hasNext(); ) { Triple y = (Triple) i2.next(); if(x.angle(y) > 90) System.err.println("Conflicting normals for {"+t+"}"); } avNormal.put(t, x); } return avNormal; } //}}} //{{{ getToolsMenuItem, getHelpMenuItem, toString, onExport, isAppletSafe //################################################################################################## public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString()+"...", null, this, "onExport")); } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#export-povray"; } public String toString() { return "POV-Ray scene"; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onExport(ActionEvent ev) { this.askExport(); } static public boolean isAppletSafe() { return false; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/sequence/0000755000000000000000000000000011677360410020330 5ustar rootrootking-2.21.120420/extratools/src/king/tool/sequence/FastaTool.java0000644000000000000000000004662211531213006023064 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.sequence; import king.*; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; //import java.beans.*; import java.io.*; //import java.net.*; //import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; //import javax.swing.event.*; import driftwood.gui.*; //import driftwood.isosurface.*; import driftwood.util.*; import driftwood.moldb2.AminoAcid; import king.tool.util.*; //}}} /** */ public class FastaTool extends BasicTool //implements ActionListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## JFileChooser filechooser = null; JDialog urlchooser = null; JList urlList = null; JTextField urlField = null; boolean urlChooserOK = false; //JRadioButton btnXplorType, btnOType, btnCcp4Type; //SuffixFileFilter omapFilter, xmapFilter, ccp4Filter, mapFilter; SuffixFileFilter fastaFilter; HashMap nameMap = null; KPaint[] colors = null; JDialog dialog; JButton openFileButton, colorStructure, colorProbe, exportButton; //RNAMapWindow win; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public FastaTool(ToolBox tb) { super(tb); makeFileFilters(); } //}}} //{{{ makeFileFilters //################################################################################################## void makeFileFilters() { fastaFilter = new SuffixFileFilter("Fasta Files"); fastaFilter.addSuffix(".faa"); } //}}} private void buildGUI() { dialog = new JDialog(kMain.getTopWindow(), "Fasta Tool", false); openFileButton = new JButton(new ReflectiveAction("Open Fasta File", null, this, "onFileOpen")); colorStructure = new JButton(new ReflectiveAction("Color Structure", null, this, "onColorStructure")); colorProbe = new JButton(new ReflectiveAction("Color Probe Dots", null, this, "onColorProbe")); exportButton = new JButton(new ReflectiveAction("Export to Fasta", null, this, "onDoAll")); TablePane pane = new TablePane(); pane.add(openFileButton); pane.newRow(); pane.add(colorStructure); pane.newRow(); pane.add(colorProbe); pane.newRow(); pane.add(exportButton); dialog.setContentPane(pane); } //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make accessory for file chooser TablePane acc = new TablePane(); // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); filechooser.setAccessory(acc); //filechooser.addPropertyChangeListener(this); filechooser.addChoosableFileFilter(fastaFilter); filechooser.setFileFilter(fastaFilter); } //}}} //{{{ getHelpAnchor, toString //################################################################################################## public String getHelpAnchor() { return "#fasta-tool"; } public Container getToolPanel() { return dialog; } public String toString() { return "Read Fasta"; } //}}} //{{{ start //################################################################################################## public void start() { //if(kMain.getKinemage() == null) return; //try //{ //if(kMain.getApplet() != null) openMapURL(); //else openMapFile(); buildGUI(); //show(); dialog.pack(); dialog.setLocationRelativeTo(kMain.getTopWindow()); dialog.setVisible(true); kCanvas.repaint(); // otherwise we get partial-redraw artifacts //openFastaFile(); //} //catch(IOException ex) // includes MalformedURLException //{ //JOptionPane.showMessageDialog(kMain.getTopWindow(), // "An I/O error occurred while loading the file:\n"+ex.getMessage(), // "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); //} //catch(IllegalArgumentException ex) //{ // JOptionPane.showMessageDialog(kMain.getTopWindow(), // "Wrong map format was chosen, or map is corrupt:\n"+ex.getMessage(), // "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); //} //buildGUI(); //dialog.pack(); //dialog.setLocationRelativeTo(kMain.getTopWindow()); //dialog.setVisible(true); } //}}} //{{{ openMapFile //################################################################################################## void openFastaFile() throws IOException { // Create file chooser on demand if(filechooser == null) makeFileChooser(); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { File f = filechooser.getSelectedFile(); if(f != null && f.exists()) { FileReader reader = new FileReader(f); scanFile(reader); //buildGUI(); //show(); //dialog.pack(); //dialog.setLocationRelativeTo(kMain.getTopWindow()); //dialog.setVisible(true); //kCanvas.repaint(); // otherwise we get partial-redraw artifacts } } } //}}} // scans the fasta file. private void scanFile(FileReader reader) { //StringBuffer name = null; StringBuffer buffer = null; boolean forName = false; nameMap = new HashMap(); try { int readInt = 0; while ((readInt = reader.read()) != -1) { //int readInt = reader.read(); if (readInt == '>') { forName = true; buffer = new StringBuffer(); } else if (readInt == '\n') { if (forName) { String name = buffer.toString(); buffer = new StringBuffer(); nameMap.put(name, buffer); forName = false; } } else { buffer.append((char)readInt); } } } catch(IOException ex) { System.out.println("IOException thrown"); } prepColorArray(); //recolor(); //System.out.println(kMain.getKinemage().toString()); //System.out.println(buffer); } // preps KPaint array with colors depending on alignments from fasta file private void prepColorArray() { Collection aligns = nameMap.values(); Iterator iter = aligns.iterator(); StringBuffer firstSeq = (StringBuffer) iter.next(); StringBuffer secSeq = (StringBuffer) iter.next(); //Array is a little longer than necessary. colors = new KPaint[firstSeq.length()]; for (int i = 0; i < firstSeq.length(); i++) { char firstChar = firstSeq.charAt(i); char secChar = secSeq.charAt(i); if (firstChar == secChar) { colors[i] = KPalette.green; } else if (secChar == '-') { colors[i] = KPalette.red; } else if (firstChar == '-') { firstSeq.deleteCharAt(i); secSeq.deleteCharAt(i); i--; } else { colors[i] = KPalette.blue; } } } // recolors all points in kinemage. private void recolorNoDots() { Kinemage kin = kMain.getKinemage(); Iterator kinIter = kin.iterator(); while (kinIter.hasNext()) { KGroup group = (KGroup) kinIter.next(); if ((group.getName()).indexOf("dots") == -1) { KIterator listIter = KIterator.allLists(group); for (KList list : listIter) { recolorStructure(list); } /* pre 2.0 Iterator groupIter = group.iterator(); while (groupIter.hasNext()) { AGE sub = (AGE) groupIter.next(); if (sub instanceof KGroup) { Iterator subIter = sub.iterator(); while (subIter.hasNext()) { KList list = (KList) subIter.next(); recolorStructure(list); } } else if (sub instanceof KList) { KList list = (KList) sub; recolorStructure(list); } } */ } } } private void recolorDots() { Kinemage kin = kMain.getKinemage(); Iterator kinIter = kin.iterator(); while (kinIter.hasNext()) { KGroup group = (KGroup) kinIter.next(); if ((group.getName()).indexOf("dots") > -1) { KIterator listIter = KIterator.allLists(group); for (KList list : listIter) { recolorStructure(list); } /* Iterator groupIter = group.iterator(); while (groupIter.hasNext()) { AGE sub = (AGE) groupIter.next(); if (sub instanceof KGroup) { Iterator subIter = sub.iterator(); while (subIter.hasNext()) { KList list = (KList) subIter.next(); recolor(list); } } else if (sub instanceof KList) { KList list = (KList) sub; recolor(list); } } */ } } } private void recolor(KList list) { Iterator iter = list.iterator(); while (iter.hasNext()) { KPoint point = (KPoint) iter.next(); String pName = point.getName(); int resNum = getResidueNumber(pName); if (resNum > 0) { point.setColor(colors[resNum-1]); } } } private void recolorStructure(KList list) { Iterator iter = list.iterator(); while (iter.hasNext()) { KPoint point = (KPoint) iter.next(); String pName = point.getName(); int resNum = getResidueNumber(pName); if (resNum > 0) { KPaint color = colors[resNum-1]; if (color.equals(KPalette.blue)) { point.setColor(KPalette.bluetint); } else if (color.equals(KPalette.red)) { point.setColor(KPalette.red); } else if (color.equals(KPalette.green)) { point.setColor(KPalette.greentint); } } } } public boolean isNumeric(String s) { try { Integer.parseInt(s); return true; } catch (NumberFormatException e) { return false; } } /* private int getResNumberDots(String name) { String[] uncleanParsed = name.split(" "); String[] parsed = new String[uncleanParsed.length]; int i2 = 0; // To clean out the empty strings from the split name. for (int i = 0; i < uncleanParsed.length; i++) { String unclean = uncleanParsed[i]; if ((!unclean.equals(""))&&(!unclean.equals(" "))) { parsed[i2] = unclean; i2++; } } // another pass to see if there are any AAName + int in name. if (parsed[1].length() > 3) { String parseValue = parsed[1].substring(3); if (isNumeric(parseValue)) { //System.out.print(parseValue + " "); return Integer.parseInt(parseValue); } } return -1; } private int getResNumberStructure(String name) { String[] uncleanParsed = name.split(" "); String[] parsed = new String[uncleanParsed.length]; int i2 = 0; // To clean out the empty strings from the split name. for (int i = 0; i < uncleanParsed.length; i++) { String unclean = uncleanParsed[i]; if ((!unclean.equals(""))&&(!unclean.equals(" "))) { parsed[i2] = unclean; i2++; } } // one pass to see if there are any straight up ints in the name for (int i = 0; i < parsed.length; i++) { String parseValue = parsed[i]; //System.out.println(parseValue + ", " + i); if (isNumeric(parseValue)) { return Integer.parseInt(parseValue); } } return -1; } */ private int getResidueNumber(String name) { String[] uncleanParsed = name.split(" "); String[] parsed = new String[uncleanParsed.length]; int i2 = 0; // To clean out the empty strings from the split name. for (int i = 0; i < uncleanParsed.length; i++) { String unclean = uncleanParsed[i]; if ((!unclean.equals(""))&&(!unclean.equals(" "))) { parsed[i2] = unclean; i2++; } } // another pass to see if there are any AAName + int in name. if (parsed[1].length() > 3) { String parseValue = parsed[1].substring(3); if (isNumeric(parseValue)) { //System.out.print(parseValue + " "); return Integer.parseInt(parseValue); } } // one pass to see if there are any straight up ints in the name for (int i = 0; i < parsed.length; i++) { String parseValue = parsed[i]; //System.out.println(parseValue + ", " + i); if (isNumeric(parseValue)) { return Integer.parseInt(parseValue); } } return -1; } public void onFileOpen(ActionEvent ev) { try { //if(kMain.getApplet() != null) openMapURL(); //else openMapFile(); //buildGUI(); //show(); //dialog.pack(); //dialog.setLocationRelativeTo(kMain.getTopWindow()); //dialog.setVisible(true); //kCanvas.repaint(); // otherwise we get partial-redraw artifacts openFastaFile(); } catch(IOException ex) // includes MalformedURLException { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong map format was chosen, or map is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } //openFastaFile(); } public void onColorStructure(ActionEvent ev) { recolorNoDots(); kCanvas.repaint(); } public void onColorProbe(ActionEvent ev) { recolorDots(); kCanvas.repaint(); } public void onDoAll(ActionEvent ev) { if (filechooser == null) makeFileChooser(); filechooser.setFileFilter(null); String output = ""; if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { File f = filechooser.getSelectedFile(); //System.out.println(f.getPath() + " : " + f.getName() + " : " + f.getParent()); File[] allFiles = f.getParentFile().listFiles(); for (int i = 0; i < allFiles.length; i++) { File pdbFile = allFiles[i]; kMain.getKinIO().loadFile(pdbFile, null); output = output + ">" + pdbFile.getName() + "\n" + export(kMain.getKinemage()) + "\n"; kMain.getStable().closeCurrent(); } } System.out.println(output); } public void onExport(ActionEvent ev) { //try { // Writer w = new FileWriter(f); // PrintWriter out = new PrintWriter(new BufferedWriter(w)); Kinemage kin = kMain.getKinemage(); //Iterator iter = kin.iterator(); //KGroup firstGroup = (KGroup) iter.next(); //iter = firstGroup.iterator(); export(kin); //System.out.println("exporting"); } /** * Only does the first group, first subgroup's list. **/ private String export(AGE target) { String output = ""; if (target instanceof KList) { Iterator iter = target.iterator(); int resNum = 1000000; //String output = ""; while (iter.hasNext()) { KPoint pt = (KPoint) iter.next(); int newResNum = KinUtil.getResNumber(pt.getName()); if (resNum != newResNum) { if (newResNum > resNum + 1) output = output.concat("\n"); output = output.concat(AminoAcid.translate(KinUtil.getResName(pt))); //if (newResNum > resNum + 1) output = output.concat("\n"); resNum = newResNum; } } //System.out.println(output); return output; } else { Iterator iter = target.iterator(); //while (iter.hasNext()) { return export((AGE) iter.next()); //} } //return "null"; } /* //{{{ openMapURL, onUrlCancel, onUrlOk //################################################################################################## void openMapURL() throws MalformedURLException, IOException { // Create chooser on demand if(urlchooser == null) makeURLChooser(); urlchooser.pack(); urlchooser.setVisible(true); // execution halts until dialog is closed... if(urlChooserOK) { CrystalVertexSource map; URL mapURL = new URL(urlField.getText()); InputStream is = new BufferedInputStream(mapURL.openStream()); if(btnOType.isSelected()) map = new OMapVertexSource(is); else if(btnXplorType.isSelected()) map = new XplorVertexSource(is); else if(btnCcp4Type.isSelected()) map = new Ccp4VertexSource(is); else throw new IllegalArgumentException("Map type not specified"); win = new RNAMapWindow(parent, map, mapURL.getFile()); kCanvas.repaint(); // otherwise we get partial-redraw artifacts } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUrlCancel(ActionEvent ev) { urlChooserOK = false; urlchooser.setVisible(false); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUrlOk(ActionEvent ev) { urlChooserOK = true; urlchooser.setVisible(false); } //}}} //{{{ propertyChange, valueChanged, click //################################################################################################## public void propertyChange(PropertyChangeEvent ev) { if(JFileChooser.SELECTED_FILE_CHANGED_PROPERTY.equals(ev.getPropertyName())) { File f = (File)ev.getNewValue(); if(f == null) {} else if(omapFilter.accept(f)) btnOType.setSelected(true); else if(xmapFilter.accept(f)) btnXplorType.setSelected(true); else if(ccp4Filter.accept(f)) btnCcp4Type.setSelected(true); } } // Gets called when a new URL is picked from the list public void valueChanged(ListSelectionEvent ev) { Object o = urlList.getSelectedValue(); if(o == null) {} else { String name = o.toString(); if(omapFilter.accept(name)) btnOType.setSelected(true); else if(xmapFilter.accept(name)) btnXplorType.setSelected(true); else if(ccp4Filter.accept(name)) btnCcp4Type.setSelected(true); urlField.setText("http://"+name); JApplet applet = kMain.getApplet(); if(applet != null) { try { URL mapURL = new URL(applet.getDocumentBase(), applet.getParameter("edmapBase")+"/"+name); urlField.setText(mapURL.toString()); } catch(MalformedURLException ex) { SoftLog.err.println(applet.getDocumentBase()); SoftLog.err.println(applet.getParameter("edmapBase")); SoftLog.err.println(name); ex.printStackTrace(SoftLog.err); } } } } public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); if (win != null) { if((p instanceof VectorPoint)&&(win.polyIsSelected())) { win.polyTrack((VectorPoint) p); } else if ((p != null)&&(win.planeIsSelected())) { win.planeTrack(p); } } } //}}} */ //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/views/0000755000000000000000000000000011677360410017655 5ustar rootrootking-2.21.120420/extratools/src/king/tool/views/ClipPlanesPlugin.java0000644000000000000000000001237011531213014023716 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.views; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; //}}} /** * ClipPlanesPlugin provides additional, configurable clipping for * complicated kinemages. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Tue Dec 14 11:20:34 EST 2004 */ public class ClipPlanesPlugin extends Plugin implements ChangeListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## JSlider clip1, clip2; JCheckBox enable1, enable2; JFrame dialog; final Object clipKey1 = new Object(), clipKey2 = new Object(); //}}} //{{{ Constructor(s) //############################################################################## public ClipPlanesPlugin(ToolBox tb) { super(tb); buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { clip1 = new JSlider(0, 800, 200); clip1.addChangeListener(this); clip2 = new JSlider(0, 800, 200); clip2.addChangeListener(this); enable1 = new JCheckBox(new ReflectiveAction("Set for vis. lists", null, this, "onSetVis1")); enable2 = new JCheckBox(new ReflectiveAction("Set for vis. lists", null, this, "onSetVis2")); TablePane2 cp = new TablePane2(); cp.weights(0,1).addCell(enable1); cp.hfill(true).addCell(clip1).newRow(); cp.weights(0,1).addCell(enable2); cp.hfill(true).addCell(clip2).newRow(); dialog = new JFrame(this.toString()); dialog.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); dialog.setContentPane(cp); } //}}} //{{{ toString, getToolsMenuItem, onShowDialog getHelpAnchor //################################################################################################## public String toString() { return "Clipping planes"; } /** * Creates a new JMenuItem to be displayed in the Tools menu, * which will allow the user to access function(s) associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several functionalities under it. * * The Plugin may return null to indicate that it has no * associated menu item. */ public JMenuItem getToolsMenuItem() { JMenuItem item = new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onShowDialog")); return item; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowDialog(ActionEvent ev) { dialog.pack(); dialog.setVisible(true); } /** * Returns an anchor marking a place within king-manual.html * that is the help for this plugin. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#edmap-plugin" (or null) */ public String getHelpAnchor() { return null; } //}}} //{{{ stateChanged //################################################################################################## public void stateChanged(ChangeEvent ev) { Object src = ev.getSource(); Engine engine = kCanvas.getEngine(); if(src == clip1) { double val = clip1.getValue() / 200.0; engine.putClipMode(clipKey1, val, -val); } else if(src == clip2) { double val = clip2.getValue() / 200.0; engine.putClipMode(clipKey2, val, -val); } else System.err.println("Unknown event source: "+src); kCanvas.repaint(); } //}}} //{{{ onSetVis1/2, setVis //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSetVis1(ActionEvent ev) { setVis(clipKey1, enable1.isSelected()); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSetVis2(ActionEvent ev) { setVis(clipKey2, enable2.isSelected()); } void setVis(Object clipKey, boolean isChecked) { Kinemage k = kMain.getKinemage(); if(k == null) return; for(KList list : KIterator.allLists(k)) { if(isChecked && list.isVisible()) list.setClipMode(clipKey); else if(!isChecked && list.getClipMode() == clipKey) list.setClipMode(null); } kCanvas.repaint(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/views/ViewpointPlugin.java0000644000000000000000000002060011531213014023643 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.views; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * ViewpointPlugin provides +/- 90 degree rotations * around the three axes. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Tue Nov 4 10:53:16 EST 2003 */ public class ViewpointPlugin extends Plugin implements MouseMotionListener { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.###"); //}}} //{{{ Variable definitions //############################################################################## JDialog dialog; JLabel calipX, calipY, calipZ; //}}} //{{{ Constructor(s) //############################################################################## public ViewpointPlugin(ToolBox tb) { super(tb); buildGUI(); kCanvas.addMouseMotionListener(this); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { KingPrefs prefs = kMain.getPrefs(); ReflectiveAction axp = new ReflectiveAction(null, prefs.rotXpIcon, this, "onRotXP"); axp.setTooltip("+90 degrees around X axis"); ReflectiveAction axm = new ReflectiveAction(null, prefs.rotXmIcon, this, "onRotXM"); axm.setTooltip("-90 degrees around X axis"); ReflectiveAction ayp = new ReflectiveAction(null, prefs.rotYpIcon, this, "onRotYP"); ayp.setTooltip("+90 degrees around Y axis"); ReflectiveAction aym = new ReflectiveAction(null, prefs.rotYmIcon, this, "onRotYM"); aym.setTooltip("-90 degrees around Y axis"); ReflectiveAction azp = new ReflectiveAction(null, prefs.rotZpIcon, this, "onRotZP"); azp.setTooltip("+90 degrees around Z axis"); ReflectiveAction azm = new ReflectiveAction(null, prefs.rotZmIcon, this, "onRotZM"); azm.setTooltip("-90 degrees around Z axis"); JButton rxp = new JButton(axp); JButton rxm = new JButton(axm); JButton ryp = new JButton(ayp); JButton rym = new JButton(aym); JButton rzp = new JButton(azp); JButton rzm = new JButton(azm); calipX = new JLabel("X:"); calipY = new JLabel("Y:"); calipZ = new JLabel("Z:"); ReflectiveAction actionI = new ReflectiveAction("Go to standard viewpoint", null, this, "onCanonicalView"); actionI.setTooltip("Looking toward center from +Z, with +Y up and +X to the right"); JButton viewI = new JButton(actionI); TablePane cp = new TablePane(); cp.center(); cp.addCell(ryp).addCell(rym).newRow(); cp.addCell(rzp).addCell(rzm).newRow(); cp.addCell(rxp).addCell(rxm).newRow(); cp.save().hfill(true); cp.addCell(calipX,2,1).newRow(); cp.addCell(calipY,2,1).newRow(); cp.addCell(calipZ,2,1).newRow(); cp.restore(); cp.addCell(viewI, 2, 1); dialog = new JDialog(kMain.getTopWindow(), this.toString(), false); dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialog.setContentPane(cp); } //}}} //{{{ toString, getToolsMenuItem //################################################################################################## public String toString() { return "90 deg. rotations"; } /** * Creates a new JMenuItem to be displayed in the Tools menu, * which will allow the user to access function(s) associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several functionalities under it. * * The Plugin may return null to indicate that it has no * associated menu item. */ public JMenuItem getToolsMenuItem() { JMenuItem item = new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onShowDialog")); return item; } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowDialog(ActionEvent ev) { dialog.pack(); dialog.setVisible(true); } //}}} //{{{ getHelpAnchor //################################################################################################## /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this plugin. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#edmap-plugin" (or null) */ public String getHelpAnchor() { return "#rot90-plugin"; } //}}} //{{{ onRot{X,Y,Z}{P,M} //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRotXP(ActionEvent ev) { KView view = kMain.getView(); if(view == null) return; view.rotateX((float)(Math.PI / 2.0)); kCanvas.repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRotXM(ActionEvent ev) { KView view = kMain.getView(); if(view == null) return; view.rotateX((float)(-Math.PI / 2.0)); kCanvas.repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRotYP(ActionEvent ev) { KView view = kMain.getView(); if(view == null) return; view.rotateY((float)(Math.PI / 2.0)); kCanvas.repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRotYM(ActionEvent ev) { KView view = kMain.getView(); if(view == null) return; view.rotateY((float)(-Math.PI / 2.0)); kCanvas.repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRotZP(ActionEvent ev) { KView view = kMain.getView(); if(view == null) return; view.rotateZ((float)(Math.PI / 2.0)); kCanvas.repaint(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRotZM(ActionEvent ev) { KView view = kMain.getView(); if(view == null) return; view.rotateZ((float)(-Math.PI / 2.0)); kCanvas.repaint(); } //}}} //{{{ onCanonicalView //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onCanonicalView(ActionEvent ev) { KView view = kMain.getView(); if(view == null) return; float[][] xform = { {1f, 0f, 0f}, {0f, 1f, 0f}, {0f, 0f, 1f} }; view.setMatrix(xform); kCanvas.repaint(); } //}}} //{{{ Mouse motion listeners //################################################################################################## public void mouseDragged(MouseEvent ev) { mouseMoved(ev); } public void mouseMoved(MouseEvent ev) { KView v = kMain.getView(); if(dialog.isVisible() && v != null) { Dimension dim = kCanvas.getCanvasSize(); float[] center = v.getCenter(); float[] offset = v.translateRotated(ev.getX() - dim.width/2, dim.height/2 - ev.getY(), 0, Math.min(dim.width, dim.height)); calipX.setText("X: "+df.format(center[0]+offset[0])); calipY.setText("Y: "+df.format(center[1]+offset[1])); calipZ.setText("Z: "+df.format(center[2]+offset[2])); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/image/0000755000000000000000000000000011677360410017602 5ustar rootrootking-2.21.120420/extratools/src/king/tool/image/KinImagePlugin.java0000644000000000000000000004774511531213004023312 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.image; import king.*; import king.core.*; import king.points.*; import king.io.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.SoftLog; import java.net.*; import java.io.*; import java.awt.*; import java.awt.event.*; import java.awt.image.BufferedImage; import java.awt.image.ColorModel; import javax.swing.*; import javax.imageio.*; import java.util.*; import java.text.DecimalFormat; //}}} /** * KinImagePlugin makes kinemages from images (kin <- image). * * Note that, cleverly, "KinImage" sounds like "kinemage." * (wild applause) Thank you - you're too kind! * * The resulting kin will fit inside a 400 x 400 box (-200 to +200 in x and y). * * Its lists will have the 'screen' keyword so it stays immobile with zooms, rotations, * and translations (e.g. flatland drags). * * If the KiNG window gets resized, all such screen-centered lists will rescale to * fully encompass the smaller of the graphics area's two dimensions (x and y). * *

Copyright (C) 2009 by Daniel A. Keedy & Vincent B. Chen. All rights reserved. *
Begun on March(?) ?? 2009 */ public class KinImagePlugin extends Plugin { //{{{ Constants //############################################################################## DecimalFormat df = new DecimalFormat("###"); DecimalFormat df2 = new DecimalFormat("#.##"); DecimalFormat df3 = new DecimalFormat("#.#"); //}}} //{{{ Variable definitions //############################################################################## /** Input */ BufferedImage image = null; String imageName = null; /** GUI stuff */ JDialog dialog; JRadioButton rbLoc, rbWeb, rbNewKin, rbAppend; JComboBox imageResolBox; JCheckBox preview; JCheckBox unpickable; JFileChooser fileChooser = null; /** Output options */ int imageResol = 1; // take 1 of every n pixels from original image JFrame previewFrame; /** Under-the-hood, operational stuff */ HashSet newColorSet = null; HashMap colorMap = null; int[] rawBounds = null; // for scaling down to 400 x 400 int[] scaledBounds = null; // for scaling down to 400 x 400 int zDepth = 0; // how "far back" the image will be in kinemage xyz space // (but screen keyword changes where it's rendered by engine) //}}} //{{{ Constructor(s) //############################################################################## public KinImagePlugin(ToolBox tb) { super(tb); } //}}} //{{{ buildGUI //############################################################################## protected void buildGUI() { JLabel labSrc = new JLabel("Image Source:"); rbLoc = new JRadioButton("Local image file", true); rbWeb = new JRadioButton("DaveTheMage from web", false); ButtonGroup btnGrpSrc = new ButtonGroup(); btnGrpSrc.add(rbLoc); btnGrpSrc.add(rbWeb); String[] imageResols = { "high-res (use all input pixels)", "medium-res (use 1/2 input pixels)", "low-res (use 1/4 input pixels)" }; imageResolBox = new JComboBox(imageResols); imageResolBox.setSelectedItem("medium-res (use 1/2 input pixels)"); JLabel labOut = new JLabel("Output:"); rbNewKin = new JRadioButton("Make new kinemage", false); rbAppend = new JRadioButton("Append to current", true); ButtonGroup btnGrpOut = new ButtonGroup(); btnGrpOut.add(rbNewKin); btnGrpOut.add(rbAppend); JLabel labOpts = new JLabel("Other Options:"); unpickable = new JCheckBox("Background image unpickable?", true); preview = new JCheckBox("Preview in popup window?", false); JButton confirm = new JButton(new ReflectiveAction( "Mmmmkay!", null, this, "onConfirm")); TablePane2 cp = new TablePane2(); cp.newRow(); cp.startSubtable(1, 1).hfill(true).memorize(); cp.addCell(labSrc); cp.newRow(); cp.addCell(rbLoc); cp.newRow(); cp.addCell(rbWeb); cp.endSubtable(); cp.newRow(); cp.add(imageResolBox); cp.newRow(); cp.startSubtable(1, 1).hfill(true).memorize(); cp.addCell(labOut); cp.newRow(); cp.addCell(rbNewKin); cp.newRow(); cp.addCell(rbAppend); cp.endSubtable(); cp.newRow(); cp.add(labOpts); cp.newRow(); cp.add(unpickable); cp.newRow(); cp.add(preview); cp.newRow(); cp.addCell(confirm); dialog = new JDialog(kMain.getTopWindow(), this.toString(), false); dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialog.setContentPane(cp); } //}}} //{{{ onConfirm //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onConfirm(ActionEvent ev) { String r = (String)imageResolBox.getSelectedItem(); imageResol = 1; //if (r.equals("high-res (use all input pixels)" )) imageResol = 1; if (r.equals("medium-res (use 1/2 input pixels)")) imageResol = 2; else if (r.equals("low-res (use 1/4 input pixels)" )) imageResol = 4; loadImage(); if(preview.isSelected()) previewImage(); doKin(); } //}}} //{{{ onShowDialog //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowDialog(ActionEvent ev) { buildGUI(); dialog.pack(); Container w = kMain.getContentContainer(); if(w != null) { Point p = w.getLocation(); Dimension dimDlg = dialog.getSize(); Dimension dimWin = w.getSize(); p.x += dimWin.width - (dimDlg.width / 2) ; p.y += (dimWin.height - dimDlg.height) / 2; dialog.setLocation(p); } dialog.setVisible(true); } //}}} //{{{ loadImage //############################################################################## public void loadImage() { if(rbLoc.isSelected()) { // Make file chooser. Will throw an exception if we're running as an applet (?) TablePane acc = new TablePane(); fileChooser = new JFileChooser(); String currDir = System.getProperty("user.dir"); if(currDir != null) fileChooser.setCurrentDirectory(new File(currDir)); fileChooser.setAccessory(acc); if(JFileChooser.APPROVE_OPTION == fileChooser.showOpenDialog(kMain.getTopWindow())) { try { File f = fileChooser.getSelectedFile(); image = ImageIO.read(f); imageName = f.getName(); } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong file format was chosen, or file is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); } } } else //rbWeb.isSelected() { try { URL url = new URL("http://kinemage.biochem.duke.edu/images/DaveTheMage.jpg"); image = ImageIO.read(url); imageName = url.toString().substring(url.toString().lastIndexOf("/")+1); } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); } } } //}}} //{{{ previewImage //############################################################################## /** Uses a Java window to display the starting image */ public void previewImage() { previewFrame = new JFrame(); JLabel label = new JLabel(new ImageIcon(image)); previewFrame.getContentPane().add(label, BorderLayout.CENTER); previewFrame.pack(); previewFrame.setVisible(true); previewFrame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); previewFrame.setTitle(this.toString()+" from "+imageName+" ... running"); previewFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); } //}}} //{{{ doKin //############################################################################## /** Makes a kin, scaled to fit inside a 400 x 400 square. * Based on Vince's doKin2() from the old cmdline.KinImage */ private void doKin() { int w = image.getWidth(); int h = image.getHeight(); int[] pixels = new int[w * h]; // Make custom color set (thanks, Vince!) newColorSet = new HashSet(); colorMap = new HashMap(); for (int i = 0; i < pixels.length; i += imageResol) { int x = i % w; int y = h - i / w; int y_flip = i / w; // Java images start with row 0 at top! pixels[i] = image.getRGB(x, y_flip); if (x % imageResol == 0 && y % imageResol == 0) { Color col = new Color(pixels[i]); int[] rgb = new int[] {col.getRed(), col.getGreen(), col.getBlue()}; float[] hsb0to1 = Color.RGBtoHSB(rgb[0], rgb[1], rgb[2], new float[3]); float[] hsb = new float[] {hsb0to1[0]*360f, hsb0to1[1]*100f, hsb0to1[2]*100f}; // 0-360, 0-100, 0-100 Triple hsbTrip = new Triple((double)Math.rint(hsb[0]/5)*5,(double)Math.rint(hsb[1]/5)*5,(double)Math.rint(hsb[2]/5)*5); newColorSet.add(hsbTrip); } } int colorInt = 0; for (Triple hsbTrip : newColorSet) { colorMap.put(hsbTrip, "color"+colorInt); colorInt++; } // Get parameters for Mage-like scaling later calcBounds(pixels, w, h); // Instead of printing out dots in kin format to stdout, as when // KinImage was in cmdline, now we append to the existing Kinemage // object or make a new one plot(pixels); } //}}} //{{{ calcBounds //############################################################################## /** Scales x,y coordinates so image centered on 0,0 and larger dimension * of the two spans from -200 to 200, like Mage 'screen' lists */ public void calcBounds(int[] pixels, int w, int h) { // Get bounds of data in raw image rawBounds = new int[4]; // xMin, xMax, yMin, yMax rawBounds[0] = Integer.MAX_VALUE; rawBounds[1] = Integer.MIN_VALUE; rawBounds[2] = Integer.MAX_VALUE; rawBounds[3] = Integer.MIN_VALUE; for(int i = 0; i < pixels.length; i += imageResol) { int x = i % w; //int y_flip = i / w; // Java images start with row 0 at top! int y = h - i / w; if(x < rawBounds[0]) rawBounds[0] = x; if(x > rawBounds[1]) rawBounds[1] = x; if(y < rawBounds[2]) rawBounds[2] = y; if(y > rawBounds[3]) rawBounds[3] = y; } // Scale x,y to Mage-like dimensions (wider of two -> -200 to 200) // Raw mins should always be 0, but let's play it safe and be flexible anyway scaledBounds = new int[4]; // xMin, xMax, yMin, yMax if(rawBounds[1]-rawBounds[0] > rawBounds[3]-rawBounds[2]) // x range wider { double scale = 400.0 / (1.0*rawBounds[1]-rawBounds[0]); double diff = ((rawBounds[1]-rawBounds[0]) - (rawBounds[3]-rawBounds[2])) * scale; //System.err.println("scaled x range "+df2.format(diff)+" greater than scaled y range"); // x: -200 to +200 scaledBounds[0] = -200; scaledBounds[1] = 200; // y: -?? to +?? where ?? < 200 scaledBounds[2] = -200 + (int) Math.round(0.5*diff); scaledBounds[3] = 200 - (int) Math.round(0.5*diff); } else // y range wider or same { double scale = 400.0 / (1.0*rawBounds[3]-rawBounds[2]); double diff = ((rawBounds[3]-rawBounds[2]) - (rawBounds[1]-rawBounds[0])) * scale; //System.err.println("scaled y range "+df2.format(diff)+" greater than scaled x range"); // x: -?? to +?? where ?? < 200 scaledBounds[0] = -200 + (int) Math.round(0.5*diff); scaledBounds[1] = 200 - (int) Math.round(0.5*diff); // y: -200 to +200 scaledBounds[2] = -200; scaledBounds[3] = 200; } //System.err.println("x range: ("+rawBounds[0]+","+rawBounds[1]+")" // +" scales to ("+scaledBounds[0]+","+scaledBounds[1]+")"); //System.err.println("y range: ("+rawBounds[2]+","+rawBounds[3]+")" // +" scales to ("+scaledBounds[2]+","+scaledBounds[3]+")"); } //}}} //{{{ getScaled[X,Y] //############################################################################## /** Returns Mage 'screen'-like scaled x coordinate */ public double getScaledX(int x) { double x_scaled_min = 1.0*scaledBounds[0]; double x_scaled_span = 1.0*scaledBounds[1] - 1.0*scaledBounds[0]; double x_actual_frac = (1.0*x - 1.0*rawBounds[0]) / (1.0*rawBounds[1] - 1.0*rawBounds[0]); double x2 = x_scaled_min + (x_scaled_span * x_actual_frac); return x2; } /** Returns Mage 'screen'-like scaled y coordinate */ public double getScaledY(int y) { double y_scaled_min = 1.0*scaledBounds[2]; double y_scaled_span = 1.0*scaledBounds[3] - 1.0*scaledBounds[2]; double y_actual_frac = (1.0*y - 1.0*rawBounds[2]) / (1.0*rawBounds[3] - 1.0*rawBounds[2]); double y2 = y_scaled_min + (y_scaled_span * y_actual_frac); return y2; } //}}} //{{{ plot //############################################################################## /** Actually plots the kin to a KiNG Kinemage object */ private void plot(int[] pixels) { // Dotlist KList list = new KList(KList.DOT, "pixels"); list.setDimension(2); list.setScreen(true); ArrayList newKPaints = addPoints(list, pixels); // actually modifies list // Group KGroup group = new KGroup(imageName); group.setDominant(true); group.add(list); // Kinemage if(rbAppend.isSelected()) // append if possible; new kin otherwise { Kinemage kin = kMain.getKinemage(); if(kin == null) kin = new Kinemage(KinfileParser.DEFAULT_KINEMAGE_NAME+"1"); //kin.atFlat = true; // 'screen' keyword takes care of this kin.add(group); for(KPaint kp : newKPaints) kin.addPaint(kp); if(kMain.getKinemage() == null) kMain.getStable().append(Arrays.asList(new Kinemage[] {kin})); //System.err.println("appended kin w/ group '"+imageName+"' to current kin"); } else // new kin { Kinemage kin = new Kinemage(imageName); //kin.atFlat = true; // 'screen' keyword takes care of this kin.add(group); for(KPaint kp : newKPaints) kin.addPaint(kp); kMain.getStable().append(Arrays.asList(new Kinemage[] {kin})); //System.err.println("made kin w/ group '"+imageName+"'"); } if(preview.isSelected()) previewFrame.setTitle(this.toString()+" from "+imageName+" ... done!"); } //}}} //{{{ addPoints //############################################################################## /** Adds DotPoints to the passed KList object. * Also returns list of custom colors as KPaints */ private ArrayList addPoints(KList list, int[] pixels) { ArrayList newKPaints = new ArrayList(); int w = image.getWidth(); int h = image.getHeight(); for (int i = 0; i < pixels.length; i += imageResol) { int x = i % w; int y_flip = i / w; // Java images start with row 0 at top! int y = h - i / w; pixels[i] = image.getRGB(x, y_flip); if (x % imageResol == 0 && y % imageResol == 0) { // This pixel necessary for desired "resolution" // Scaled coords a la Mage's screen keyword double x2 = getScaledX(x); double y2 = getScaledY(y); //System.err.println("("+x+","+y+") scaled to ("+df2.format(x2)+","+df2.format(y2)+")"); // Probably-way-too-complicated color manipulation Color col = new Color(pixels[i]); int[] rgb = new int[] {col.getRed(), col.getGreen(), col.getBlue()}; float[] hsb0to1 = Color.RGBtoHSB(rgb[0], rgb[1], rgb[2], new float[3]); float[] hsb = new float[] { hsb0to1[0]*360f, // 0-360 hsb0to1[1]*100f, // 0-100 hsb0to1[2]*100f }; // 0-100 Triple hsbTrip = new Triple((double)Math.rint(hsb[0]/5)*5, (double)Math.rint(hsb[1]/5)*5, (double)Math.rint(hsb[2]/5)*5); String kcolor = colorMap.get(hsbTrip); if(!(hsb[0] == 0 && hsb[1] == 0 && hsb[2] == 0)) // i.e. not black { // Dotpoint DotPoint point = new DotPoint( "pixel "+df3.format(x2)+", "+df3.format(y2)); point.setXYZ(x2, y2, zDepth); if(unpickable.isSelected()) point.setUnpickable(true); KPaint c = KPaint.createLightweightHSV(kcolor, hsb[0], hsb[1], hsb[2], hsb[0], hsb[1], hsb[2]); point.setColor(c); newKPaints.add(c); list.add(point); } } } return newKPaints; } //}}} //{{{ getToolsMenuItem, getHelpAnchor, toString //################################################################################################## public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction("Kin <- Image", null, this, "onShowDialog")); } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#kinimage-plugin"; } public String toString() { return "Kin <- Image"; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/data_analysis/0000755000000000000000000000000011744306102021325 5ustar rootrootking-2.21.120420/extratools/src/king/tool/data_analysis/CountingTool.java0000644000000000000000000000746111744305704024633 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.data_analysis; import king.*; import king.core.*; import king.points.*; import king.io.*; import king.tool.util.KinUtil; import java.awt.event.*; import java.util.*; import java.io.*; import java.awt.*; import java.net.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.*; import driftwood.r3.*; //}}} public class CountingTool extends BasicTool { //{{{ Variable definitions //################################################################################################## JTextField searchField; JCheckBox doOnlyActiveBox; JList countList; DefaultListModel listModel; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public CountingTool(ToolBox tb) { super(tb); buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { searchField = new JTextField(10); doOnlyActiveBox = new JCheckBox("Count only active"); listModel = new DefaultListModel();; countList = new JList(listModel); JScrollPane scroll = new JScrollPane(countList); TablePane2 pane = new TablePane2(); pane.newRow(); pane.hfill(true); pane.add(searchField, 2, 1); pane.add(new JButton(new ReflectiveAction("Count", null, this, "onCount"))); pane.newRow(); pane.hfill(true).vfill(true); pane.add(scroll, 2, 2); pane.add(doOnlyActiveBox); pane.newRow(); pane.add(new JButton(new ReflectiveAction("Clear", null, this, "onClear"))); dialog = new JDialog(kMain.getTopWindow(), "Counting Tool", false); //dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dialog.addWindowListener(this); dialog.setContentPane(pane); //dialog.setJMenuBar(menubar); dialog.pack(); } //}}} //{{{ onCount public void onCount(ActionEvent ev) { int count = 0; String searchString = searchField.getText(); System.out.println(searchString); KIterator iter; if (doOnlyActiveBox.isSelected()) { iter = KIterator.visiblePoints(kMain.getKinemage()); } else { iter = KIterator.allPoints(kMain.getKinemage()); } for (KPoint p : iter) { if (p.getName().indexOf(searchString)!=-1) { count++; } } listModel.addElement(searchString+":"+Integer.toString(count)); } //}}} //{{{ onClear public void onClear(ActionEvent ev) { listModel.clear(); } //}}} //{{{ getToolPanel, getHelpURL/Anchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return dialog; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return null; } public String toString() { return "Counting Tool"; } //}}} } king-2.21.120420/extratools/src/king/tool/data_analysis/PointSorter.java0000644000000000000000000000430611531213012024452 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.data_analysis; import king.*; import king.core.*; import java.util.*; public class PointSorter //extends ... implements ... { //{{{ Constants static final int SORTBY_X = 0; static final int SORTBY_Y = 1; static final int SORTBY_Z = 2; //}}} //{{{ Variable definitions //################################################################################################## List allPoints; int coordToSort; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PointSorter(List list, int coord) { allPoints = list; coordToSort = coord; } //}}} /** * Implements a modified version of counting sort from Intro to Algorithms book. * Obviously only works on data sets with integer sorting values. **/ public Collection sortPhiPsi() { //Iterator iter = allPoints.iterator(); int[] counts = new int[361]; for (int i = 0; i < counts.length; i++) { counts[i] = 0; } for (int i = 0; i < allPoints.size(); i++) { KPoint point = (KPoint) allPoints.get(i); int value = (int) (getCoord(coordToSort, point)+180); counts[value] = counts[value]+1; } for (int i = 1; i < counts.length; i++) { counts[i] = counts[i] + counts[i-1]; } // for some stupid reason java doesn't allow me to use the initialcapacity constructor of arraylist. ArrayList sortedList = new ArrayList(allPoints); //sortedList.ensureCapacity(30947); for (int i = allPoints.size()-1; i >= 0; i--) { //System.out.print("."); KPoint point = (KPoint) allPoints.get(i); //System.out.print(getCoord(coordToSort, point)); int value = (int) (getCoord(coordToSort, point)+180); //System.out.print(sortedList.size()); sortedList.set(counts[value]-1, point); counts[value] = counts[value] - 1; } return sortedList; } public double getCoord(int index, KPoint point) { if (index == SORTBY_X) { return point.getX(); } else if (index == SORTBY_Y) { return point.getY(); } else if (index == SORTBY_Z) { return point.getZ(); } return 0; } } king-2.21.120420/extratools/src/king/tool/data_analysis/PlottingTool.java0000644000000000000000000006514011571460626024646 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.data_analysis; import king.*; import king.core.*; import king.points.*; import king.io.*; import king.tool.util.KinUtil; import java.awt.event.*; import java.util.*; import java.io.*; import java.awt.*; import java.net.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.*; import driftwood.r3.*; //}}} public class PlottingTool extends BasicTool { //{{{ Variable definitions //################################################################################################## ArrayList allPoints; //list of original values from selected file. TreeMap binnedPoints; //points split by bin (color) value. HashMap plottedPoints; //points split by value. JFileChooser filechooser; //JComboBox color1; TablePane pane; JButton plotButton, /*exportButton,*/ parallelButton/*, filterButton, resetButton*/; JTextField numBinsField; JTextField xMultField, yMultField, zMultField; //JTextField xFiltField, yFiltField, zFiltField; //JTextField xFiltRange, yFiltRange, zFiltRange; JCheckBox /*clickColorBox, */wrapBox, pointIdBox; //JComboBox[] comboBoxes; //JRadioButton[] xButtons, yButtons, zButtons; //ButtonGroup xGroup, yGroup, zGroup; FatJList labelList, xList, yList, zList, colorList; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PlottingTool(ToolBox tb) { super(tb); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { dialog = new JDialog(kMain.getTopWindow(), "Data Plotter", false); if (allPoints == null) return; Iterator iter = allPoints.iterator(); String[] values = (String[]) iter.next(); int numColumns = values.length; pane = new TablePane(); pane.newRow(); JLabel infoLabel = new JLabel("Data Plotter has detected " + numColumns + " columns of data; Row 1 shown below."); pane.add(infoLabel, numColumns, 1); pane.newRow(); String[] axLabels = new String[numColumns]; //axLabels[0] = "Axis 0"; for(int i = 0; i < numColumns; i++) { //pane.newRow(); axLabels[i] = "Axis " + i; //pane.add(new JLabel(values[i])); } //pane.add(new JLabel(values[0])); if (numColumns > 20) { numColumns = 20; } //ArrayList labelList = new ArrayList(); //for (String lab : values) { // JLabel newLab = new JLabel(lab); // labelList.add(newLab); //} labelList = new FatJList(0, 10); labelList.setListData(values); labelList.setVisibleRowCount(numColumns + 3); // I didn't know you could redefine functions when you make a new instance of something, // but apparently the following lines works to make the list unselectable! labelList.setSelectionModel(new DefaultListSelectionModel() { public void addSelectionInterval(int index0, int index1) {} public void setSelectionInterval(int index0, int index1) {} }); xList = new FatJList(0, 10); xList.setListData(axLabels); xList.setVisibleRowCount(numColumns + 3); yList = new FatJList(0, 10); yList.setListData(axLabels); yList.setVisibleRowCount(numColumns + 3); zList = new FatJList(0, 10); zList.setListData(axLabels); zList.setVisibleRowCount(numColumns + 3); colorList = new FatJList(0, 10); colorList.setListData(axLabels); colorList.setVisibleRowCount(numColumns + 3); plotButton = new JButton(new ReflectiveAction("Plot!", null, this, "onPlot")); //color1 = new JComboBox(KPalette.getStandardMap().values().toArray()); //color1.setSelectedItem(KPalette.blue); //pane.add(color1, 2, 1); //clickColorBox = new JCheckBox("Color on click"); //clickColorBox.setSelected(false); //exportButton = new JButton(new ReflectiveAction("Export!", null, this, "onExport")); parallelButton = new JButton(new ReflectiveAction("Parallel!", null, this, "onPlotParallel")); numBinsField = new JTextField("10", 4); wrapBox = new JCheckBox("Wrap to 0-360"); pointIdBox = new JCheckBox("Add second row to pID"); pane.newRow(); pane.add(new JLabel(" Row 1")); pane.add(new JLabel(" X axis")); pane.add(new JLabel(" Y axis")); pane.add(new JLabel(" Z axis")); pane.add(new JLabel(" bins")); pane.newRow(); pane.vfill(true).hfill(true).add(new JScrollPane(labelList), 1, 8); pane.add(new JScrollPane(xList), 1, 8); pane.add(new JScrollPane(yList), 1, 8); pane.add(new JScrollPane(zList), 1, 8); pane.add(new JScrollPane(colorList), 1, 8); pane.vfill(false).hfill(true).addCell(plotButton); pane.newRow(); pane.addCell(parallelButton); pane.newRow(); //pane.addCell(exportButton); pane.add(new JLabel(" ")); pane.newRow(); pane.add(new JLabel("# of Bins:")); pane.newRow(); pane.add(numBinsField); pane.newRow(); pane.add(new JLabel(" ")); pane.newRow(); pane.add(wrapBox); //pane.add(color1, 2, 1); pane.newRow(); pane.add(pointIdBox); //pane.add(clickColorBox, 2, 1); pane.newRow(); pane.newRow(); JLabel multLabel = new JLabel("multiplier:"); xMultField = new JTextField("1", 4); //JLabel yLabel = new JLabel("y mult="); yMultField = new JTextField("1", 4); //JLabel zLabel = new JLabel("z mult="); zMultField = new JTextField("1", 4); //JLabel xLab2 = new JLabel("keep x="); //xFiltField = new JTextField("0", 4); //xFiltRange = new JTextField("-1", 4); //JLabel yLab2 = new JLabel("keep y="); //yFiltField = new JTextField("0", 4); //yFiltRange = new JTextField("-1", 4); //JLabel zLab2 = new JLabel("keep z="); //zFiltField = new JTextField("0", 4); //zFiltRange = new JTextField("-1", 4); //filterButton = new JButton(new ReflectiveAction("Filter!", null, this, "onFilter")); //resetButton = new JButton(new ReflectiveAction("ResetFilt", null, this, "onReset")); pane.add(multLabel); pane.add(xMultField); pane.add(yMultField); pane.add(zMultField); //pane.add(xFiltRange); //pane.skip(); //pane.newRow(); //pane.add(yLabel); //pane.add(yMultField); // //pane.add(yLab2); //pane.add(yFiltField); //pane.add(yFiltRange); //pane.add(filterButton); //pane.newRow(); //pane.add(zLabel); //pane.add(zMultField); // //pane.add(zLab2); //pane.add(zFiltField); //pane.add(zFiltRange); // //pane.add(resetButton); //pane.hfill(true); dialog.addWindowListener(this); dialog.setContentPane(pane); } //}}} //{{{ start //################################################################################################## public void start() { allPoints = new ArrayList(); binnedPoints = new TreeMap(); plottedPoints = new HashMap(); openFile(); buildGUI(); show(); } //}}} //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make accessory for file chooser TablePane acc = new TablePane(); // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); filechooser.setAccessory(acc); } //}}} //{{{ openFile //################################################################################################## public void openFile() { // Create file chooser on demand if(filechooser == null) makeFileChooser(); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { try { File f = filechooser.getSelectedFile(); if(f != null && f.exists()) { //dialog.setTitle(f.getName()); BufferedReader reader = new BufferedReader(new FileReader(f)); String delimChoice = askDelimiter(f.getName()); if (delimChoice != null) { scanFile(reader, delimChoice); } reader.close(); kCanvas.repaint(); // otherwise we get partial-redraw artifacts } } catch(IOException ex) { // includes MalformedURLException JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong file format was chosen, or file is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ askFormats private String askDelimiter(String f) { Object[] choices = {"Comma (,)", "Semi-colon (;)", "Colon (:)", "Space", "Tab"}; String choice = (String) JOptionPane.showInputDialog(kMain.getTopWindow(), "Please indicate the delimiter to use to parse the data.", "Choose", JOptionPane.PLAIN_MESSAGE, null, choices, "Comma (,)"); if (choice.equals("Comma (,)")) { return ","; } else if (choice.equals("Semi-colon (;)")) { return ";"; } else if (choice.equals("Colon (:)")) { return ":"; } else if (choice.equals("Tab")) { return "\t"; } else { return " "; } } //}}} //{{{ scanFile //################################################################################################## /** * Does most of the work reading and analyzing the data files. **/ private void scanFile(BufferedReader reader, String delimiter) { String line; try { while((line = reader.readLine())!=null){ line = line.trim(); if (!line.startsWith("#")) { String[] strings = Strings.explode(line, delimiter.charAt(0), false, true); allPoints.add(strings); } } } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } } //}}} //{{{ onPlot public void onPlot(ActionEvent ev) { int x = -1, y = -1, z = -1, color = -1; x = xList.getSelectedIndex(); y = yList.getSelectedIndex(); z = zList.getSelectedIndex(); color = colorList.getSelectedIndex(); if (plotButton.getText().equals("Plot!")) { createPoints(x, y, z, color); } else { replotPoints(x, y, z, color); } } //}}} //{{{ createPoints public void createPoints(int x, int y, int z, int color) { plotButton.setText("Replot!"); binnedPoints.clear(); plottedPoints.clear(); // figure out dimension names String[] firstVal = (String[]) allPoints.get(0); String[] secVal = (String[]) allPoints.get(1); ArrayList dimNames = new ArrayList(); for (int i = 1; i < firstVal.length; i++) { dimNames.add(firstVal[i]); } // count number of numeric dimensions int numInd = 0; for (int i = 0; i < secVal.length; i++) { if (KinUtil.isNumeric(secVal[i])) numInd++; } // initialize dimension min-max array Integer[] dimMinMax = new Integer[numInd * 2]; for (int i = 0; i < dimMinMax.length; i = i+2) { dimMinMax[i] = new Integer(1000000); } for (int i = 1; i < dimMinMax.length; i = i+2) { dimMinMax[i] = new Integer(-1000000); } // create bins for the points double minColor = 100000; double maxColor = -100000; ArrayList colors = new ArrayList(); if (color != -1) { Iterator iter = allPoints.iterator(); while (iter.hasNext()) { String[] value = (String[]) iter.next(); //if (color != -1) { //System.out.println(value[color]); if (value.length == firstVal.length) { if (KinUtil.isNumeric(value[color])) { double dColor = Double.parseDouble(value[color]); if (minColor > dColor) { minColor = dColor; } if (maxColor < dColor) { maxColor = dColor; } colors.add(new Double(value[color])); } } } } //double perDiv = (maxColor-minColor)/10; //createBins(numInd, minColor, maxColor, perDiv, color); createBins(numInd, colors, color); Iterator iter = allPoints.iterator(); BallPoint point; //double minColor = 100000; //double maxColor = -100000; while (iter.hasNext()) { String[] value = (String[]) iter.next(); float[] floats = new float[numInd]; int floatInd = 0; // one pass to see if number of numeric values matches number of dimensions for (int i = 0; i < value.length; i++) { if (KinUtil.isNumeric(value[i])) { floatInd++; } } // if they don't match, then this line is not made into a point if (floatInd == numInd) { floatInd = 0; for (int i = 0; i < value.length; i++) { if (KinUtil.isNumeric(value[i])) { floats[floatInd] = Float.parseFloat(value[i]); if (wrapBox.isSelected()) floats[floatInd] = wrapValue(floats[floatInd]); updateMinMax(dimMinMax, floatInd, floats[floatInd]); floatInd++; } } String pName; if (pointIdBox.isSelected()) { pName = value[0] + " " + value[1]; } else { pName = value[0]; } point = new BallPoint(pName); plottedPoints.put(value, point); point.setRadius((float)0.1); point.setAllCoords(floats); if (x == -1) point.setX(0); if (y == -1) point.setY(0); if (z == -1) point.setZ(0); point.useCoordsXYZ(x-1, y-1, z-1); // since the first value is a string identifier, indices are off by 1 rescalePoint(point); if (color != -1) { Iterator keys = binnedPoints.keySet().iterator(); Double binValue = null; while (keys.hasNext()) { Double key = (Double) keys.next(); if (key.compareTo(new Double(value[color])) <= 0) { binValue = key; } } KList list = (KList) binnedPoints.get(binValue); list.add(point); point.setParent(list); } else { KList list = (KList) binnedPoints.get(new Double("0")); list.add(point); point.setParent(list); } } } //System.out.println(minColor + " " + maxColor); plot(dimNames, dimMinMax); } //}}} //{{{ plot public void plot(Collection dimNames, Integer[] dimMinMax) { KGroup group = new KGroup("Data Points"); group.setAnimate(true); group.addMaster("Data Points"); KGroup subgroup = new KGroup("points"); subgroup.setHasButton(false); group.add(subgroup); Collection lists = binnedPoints.values(); Iterator iter = lists.iterator(); while (iter.hasNext()) { KList list = (KList) iter.next(); //list.setParent(subgroup); subgroup.add(list); } Kinemage kin = kMain.getKinemage(); if (kin == null) { kin = new Kinemage(KinfileParser.DEFAULT_KINEMAGE_NAME+"1"); } if (kin.dimensionNames.size() != 0) { JOptionPane.showMessageDialog(pane, "This kinemage already had high dimensions! They have been replaced.", "Error", JOptionPane.ERROR_MESSAGE); } kin.dimensionNames = new ArrayList(dimNames); kin.dimensionMinMax = new ArrayList(Arrays.asList(dimMinMax)); kin.getMasterByName("Data Points"); kin.add(group); if (kMain.getKinemage() == null) { kMain.getStable().append(Arrays.asList(new Kinemage[] {kin})); } //kin.initAll(); //kin.fireKinChanged(Kinemage.CHANGE_EVERYTHING); //kMain.publish(new KMessage(kMain, KMessage.KIN_LOADED)); } //}}} //{{{ wrapValue public float wrapValue(float value) { if (value >= 0) return value; else return value + 360; } //}}} //{{{ createBins public void createBins(int numInd, ArrayList colors, int color) { if (color != -1) { if (KinUtil.isNumeric(numBinsField.getText())) { int numBins = Integer.parseInt(numBinsField.getText()); Collections.sort(colors); int size = colors.size(); double sizePerBin = size/numBins; for (int i = 0; i < numBins; i++) { Double bin = (Double)colors.get((int)Math.floor(sizePerBin * i)); KList list = new KList(KList.BALL, bin.toString()); list.setNoHighlight(true); list.addMaster(bin.toString()); list.setDimension(numInd); binnedPoints.put(bin, list); } } else { JOptionPane.showMessageDialog(pane, "Please put a number in the 'number of bins' field.", "Error", JOptionPane.ERROR_MESSAGE); } } else { KList list = new KList(KList.BALL, "multi-dim points"); list.setNoHighlight(true); list.setDimension(numInd); binnedPoints.put(new Double("0"), list); } } //}}} //{{{ updateMinMax public void updateMinMax(Integer[] dimMinMax, int index, float value) { int min = dimMinMax[index*2].intValue(); int max = dimMinMax[index*2 + 1].intValue(); if (min > value) dimMinMax[index*2] = new Integer((int)Math.floor((double)value)); if (max < value) dimMinMax[index*2+1] = new Integer((int)Math.ceil((double)value)); } //}}} //{{{ replotPoints public void replotPoints(int x, int y, int z, int color) { // x, y, z, and color are array indexes. Iterator iter = allPoints.iterator(); while (iter.hasNext()) { String[] value = (String[]) iter.next(); KPoint point = (KPoint) plottedPoints.get(value); if (x == -1) point.setX(0); if (y == -1) point.setY(0); if (z == -1) point.setZ(0); point.useCoordsXYZ(x-1, y-1, z-1); // since the first value is a string identifier, indices are off by 1 if (KinUtil.isNumeric(xMultField.getText())) { point.setX(point.getX() * Double.parseDouble(xMultField.getText())); } if (KinUtil.isNumeric(yMultField.getText())) { point.setY(point.getY() * Double.parseDouble(yMultField.getText())); } if (KinUtil.isNumeric(zMultField.getText())) { point.setZ(point.getZ() * Double.parseDouble(zMultField.getText())); } } kCanvas.repaint(); } //}}} //{{{ onPlotParallel public void onPlotParallel(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); String key = ParaParams.class.getName()+".instance"; ParaParams params = (ParaParams) kin.metadata.get(key); if (params == null) { params = new ParaParams(kMain, kin); kin.metadata.put(key, params); } params.swap(); //KGroup group = new KGroup("parallel"); //kin.add(group); //KGroup subgroup = new KGroup("partest"); //subgroup.setHasButton(false); //group.add(subgroup); //Iterator iter = allPoints.iterator(); //while (iter.hasNext()) { // String[] value = (String[]) iter.next(); // if (value.length > 0) { // int[] order = {2, 5, 3, 6, 4, 7, 2}; // KList list = makeList(value, order); // subgroup.add(list); // //list.setParent(subgroup); // list.setWidth(1); // list.setAlpha(128); // list.setHasButton(false); // } //} //kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); } //}}} //{{{ makeList public KList makeList(String[] value, int[] order) { KList list = new KList(KList.VECTOR); list.setName(value[0]); VectorPoint prevPoint = null; for (int i = 0; i < order.length; i++) { String coord = value[order[i]]; VectorPoint point = new VectorPoint(coord, prevPoint); point.setXYZ(i*100, Double.parseDouble(coord), Double.parseDouble(value[8])*5); list.add(point); prevPoint = point; list.setColor(KPaint.createLightweightHSV("blue", 240, 100 - (Float.parseFloat(value[8]))/2,100,240,100 - (Float.parseFloat(value[8]))/2,100)); } return list; } //}}} //{{{ rescalePoint /** * Handles rescaling the plotted points. Used to scale the tranformed coordinates, but due * to setDrawXYZ functions disappearing in King 2.0, this function will have to actually * rescale the values of the coordinates. **/ public void rescalePoint(KPoint point) { //Collection points = plottedPoints.values(); //Iterator iter = points.iterator(); //while (iter.hasNext()) { // AbstractPoint point = (AbstractPoint) iter.next(); if (KinUtil.isNumeric(xMultField.getText()) && KinUtil.isNumeric(yMultField.getText()) && KinUtil.isNumeric(zMultField.getText())) { point.setX(point.getX() * Double.parseDouble(xMultField.getText())); point.setY(point.getY() * Double.parseDouble(yMultField.getText())); point.setZ(point.getZ() * Double.parseDouble(zMultField.getText())); } } //}}} //{{{ xx_click() functions //################################################################################################## // /** Override this function for (left-button) clicks */ // public void click(int x, int y, KPoint p, MouseEvent ev) // { // super.click(x, y, p, ev); //if (p != null) { // if (clickColorBox.isSelected()) { // p.setColor((KPaint)color1.getSelectedItem()); // } //} // } //}}} //{{{ onExport // public void onExport(ActionEvent ev) { ////addAllDataPoints(); //JFileChooser saveChooser = new JFileChooser(); //String currdir = System.getProperty("user.dir"); //if(currdir != null) { // saveChooser.setCurrentDirectory(new File(currdir)); //} //if (saveChooser.APPROVE_OPTION == saveChooser.showSaveDialog(kMain.getTopWindow())) { // File f = saveChooser.getSelectedFile(); // if( !f.exists() || // JOptionPane.showConfirmDialog(kMain.getTopWindow(), // "This file exists -- do you want to overwrite it?", // "Overwrite file?", JOptionPane.YES_NO_OPTION) // == JOptionPane.YES_OPTION ) // { // saveDataFile(f); // } //} // // } //}}} //{{{ onFilter // public void onFilter(ActionEvent ev) { //double x, xrange, y, yrange, z, zrange; //if ((KinUtil.isNumeric(xFiltField.getText()))&&(KinUtil.isNumeric(xFiltRange.getText()))&& // (KinUtil.isNumeric(yFiltField.getText()))&&(KinUtil.isNumeric(yFiltRange.getText()))&& // (KinUtil.isNumeric(zFiltField.getText()))&&(KinUtil.isNumeric(zFiltRange.getText()))) { // // x = Double.parseDouble(xFiltField.getText()); // xrange = Double.parseDouble(xFiltRange.getText()); // y = Double.parseDouble(yFiltField.getText()); // yrange = Double.parseDouble(yFiltRange.getText()); // z = Double.parseDouble(zFiltField.getText()); // zrange = Double.parseDouble(zFiltRange.getText()); // filterCoord(x, xrange, y, yrange, z, zrange); //} else { // JOptionPane.showMessageDialog(pane, "You have to put numbers in the text boxes!", "Error", // JOptionPane.ERROR_MESSAGE); // //} // // } ///}}} //{{{ filterCoord // public void filterCoord(double x, double xrange, double y, double yrange, double z, double zrange) { //double lowX = x - xrange; //double highX = x + xrange; //double lowY = y - yrange; //double highY = y + yrange; //double lowZ = z - zrange; //double highZ = z + zrange; // //Set keys = plottedPoints.keySet(); //HashMap newPlottedPoints = new HashMap(); //Iterator iter = keys.iterator(); //while (iter.hasNext()) { // String[] key = (String[]) iter.next(); // KPoint point = (KPoint) plottedPoints.get(key); // double xCoord = point.getX(); // double yCoord = point.getY(); // double zCoord = point.getZ(); // if (xrange != -1) { // if ((xCoord >= lowX)&&(xCoord <= highX)) { // newPlottedPoints.put(key, point); // } else { // point.setColor(KPalette.invisible); // } // } // if (yrange != -1) { // if ((yCoord >= lowY)&&(yCoord <= highY)) { // newPlottedPoints.put(key, point); // } else { // point.setColor(KPalette.invisible); // } // } // if (zrange != -1) { // if ((zCoord >= lowZ)&&(zCoord <= highZ)) { // newPlottedPoints.put(key, point); // } else { // point.setColor(KPalette.invisible); // } // } //} ////plottedPoints = newPlottedPoints; //kCanvas.repaint(); // // } ///}}} //{{{ onReset //public void onReset(ActionEvent ev) { // xFiltField.setText("0"); // yFiltField.setText("0"); // zFiltField.setText("0"); // xFiltRange.setText("-1"); // yFiltRange.setText("-1"); // zFiltRange.setText("-1"); //} //}}} //{{{ saveDataFile // public void saveDataFile(File f) { //try { // Writer w = new FileWriter(f); // PrintWriter out = new PrintWriter(new BufferedWriter(w)); // //addAllDataPoints(); // out.println("@kinemage 0"); // //out.println("@group {" + f.getName() + "} dimension=7 wrap=360 select"); // //out.println("@balllist {" + f.getName() + "} nohilite"); // //Iterator iter = allPoints.iterator(); // String[] zeroVal = (String[]) allPoints.get(0); // out.println("@group {" + f.getName() + "} dimension=" + (zeroVal.length - 1) + " wrap=360 select"); // out.println("@balllist {" + f.getName() + "} nohilite"); // //int length = value.length; // Iterator iter = allPoints.iterator(); // while (iter.hasNext()) { // String[] value = (String[]) iter.next(); // out.print("{" + value[0] + "} "); // for (int i = 1; i < value.length; i++) { // out.print(value[i]); // if (i != value.length - 1) { // out.print(", "); // } // } // out.println(""); // } // out.flush(); // w.close(); // //} catch (IOException ex) { // JOptionPane.showMessageDialog(kMain.getTopWindow(), // "An error occurred while saving the file.", // "Sorry!", JOptionPane.ERROR_MESSAGE); // } // } //}}} //{{{ getHelpAnchor, toString //################################################################################################## public String getHelpAnchor() { return "#plotting-tool"; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public Container getToolPanel() { return pane; } public String toString() { return "Data plotter"; } //}}} } king-2.21.120420/extratools/src/king/tool/data_analysis/CrossWindowPickTool.java0000644000000000000000000001037211531213012026110 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.data_analysis; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.lang.ref.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * CrossWindowPickTool transmits the picked point ID * to every instance of KiNG in the current VM, asking them to pick * a point they can find with the same name. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Wed Dec 3 08:42:34 EST 2003 */ public class CrossWindowPickTool extends BasicTool { //{{{ Constants /** A List<SoftReference<CrossWindowPickTool>> */ private static final ArrayList instanceList = new ArrayList(); //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public CrossWindowPickTool(ToolBox tb) { super(tb); synchronized(instanceList) { // Every instance of this class knows about the others instanceList.add( new SoftReference(this) ); } } //}}} //{{{ xx_click() functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); if(p != null) { signalCrossPick(p.getName()); } } //}}} //{{{ signalCrossPick, tryCrossPick //############################################################################## /** * Notifies all other instances of this class * to try picking a particular point ID. */ void signalCrossPick(String pointID) { synchronized(instanceList) { for(Iterator iter = instanceList.iterator(); iter.hasNext(); ) { SoftReference ref = (SoftReference)iter.next(); CrossWindowPickTool other = (CrossWindowPickTool)ref.get(); // that instance has been GC'd if(other == null) iter.remove(); // don't signal ourselves please else if(other == this) {} // else signal it to pick else other.tryCrossPick(pointID); } } } /** * Called when another instance picks a point. */ void tryCrossPick(String pointID) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; for(KPoint p : KIterator.visiblePoints(kin)) { if(p.getName().equals(pointID)) { services.pick(p); break; } } } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ getToolPanel, getHelpURL/Anchor, toString, isAppletSafe //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return null; } public String toString() { return "Cross-window picking"; } /** This plugin is not applet-safe because it requires multiple KiNG windows open. */ static public boolean isAppletSafe() { return false; } //}}} }//class king-2.21.120420/extratools/src/king/tool/data_analysis/AutoBondRotDataTool.java0000644000000000000000000007011011531213012026006 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.data_analysis; import king.*; import king.core.*; import king.points.*; import java.awt.*; import java.io.*; import java.util.*; import javax.swing.*; import java.awt.event.*; import driftwood.gui.*; import java.text.DecimalFormat; //}}} /** * AutoBondRotDataTool is a tool that reads in the output files of a probe * autobondrot run. It plots out the data as balls with radii dependent on * the probe score. It also allows the balls to be recolored according to * their score. The tool should be able to handle 2D and 3D data. **/ public class AutoBondRotDataTool extends BasicTool implements ActionListener { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.000"); static final DecimalFormat intf = new DecimalFormat("0"); //}}} //{{{ Variable definitions //################################################################################################## JFileChooser filechooser = null; JDialog urlchooser = null; JList urlList = null; JTextField urlField = null; boolean urlChooserOK = false; //HashMap dataMap; // probescore -> arraylist of BallPoints TablePane pane; //JDialog dialog; JComboBox color1; JTextField lowNumField; JTextField highNumField; JTextField scalingField; JCheckBoxMenuItem logScaleBox; JButton colorButton, setOnButton, setOffButton; JCheckBox plotChangeBox; //double maxX, maxY, maxZ = -100000; //double minX, minY, minZ = 100000; //double xspan, yspan, zspan, xInc, yInc, zInc; HashMap listMap; // axisValue -> KList //HashSet offPoints; ArrayList offPoints; double minSpan = 100000000; double minSpanIncr, minSpanLow, minSpanHigh; ArrayList xKlists, yKlists, zKlists; ArrayList allPoints; //}}} //{{{ class: RamaTable class RamaTable { //{{{ Variables TreeMap> ramaMap; //}}} public RamaTable() { ramaMap = new TreeMap>(); } public void add(double phiDoub, double psiDoub, double valDoub) { Double phi = new Double(wrap(phiDoub)); Double psi = new Double(wrap(psiDoub)); Double val = new Double(valDoub); if (ramaMap.containsKey(phi)) { TreeMap psiMap = ramaMap.get(phi); psiMap.put(psi, val); } else { TreeMap psiMap = new TreeMap(); psiMap.put(psi, val); ramaMap.put(phi, psiMap); } } public double get(double phiDoub, double psiDoub) { Double phi = new Double(wrap(phiDoub)); Double psi = new Double(wrap(psiDoub)); Double val = null; TreeMap psiMap = ramaMap.get(phi); if (psiMap != null) { val = psiMap.get(psi); } if (val != null) { return val.doubleValue(); } return Double.NaN; } public double wrap(double value) { if (value < -180) return value+360; if (value > 180) return value-360; return value; } } //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public AutoBondRotDataTool(ToolBox tb) { super(tb); //buildGUI(); //makeFileFilters(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { dialog = new JDialog(kMain.getTopWindow(), "Data Tool", false); color1 = new JComboBox(KPalette.getStandardMap().values().toArray()); color1.setSelectedItem(KPalette.red); color1.addActionListener(this); lowNumField = new JTextField("", 5); highNumField = new JTextField("", 5); scalingField = new JTextField("5", 5); logScaleBox = new JCheckBoxMenuItem("Plot by log scale", false); colorButton = new JButton(new ReflectiveAction("Color!", null, this, "onHighlightRange")); //colorButton.setActionCommand("color"); //colorButton.addActionListener(this); setOnButton = new JButton(new ReflectiveAction("Turn On", null, this, "onTurnOn")); //setOnButton.setActionCommand("setOn"); //setOnButton.addActionListener(this); setOffButton = new JButton(new ReflectiveAction("Turn Off", null, this, "onTurnOff")); //setOffButton.setActionCommand("setOff"); //setOffButton.addActionListener(this); plotChangeBox = new JCheckBox("Toggle plotting", true); plotChangeBox.addActionListener(this); pane = new TablePane(); pane.newRow(); pane.add(color1); pane.add(lowNumField); pane.add(highNumField); pane.add(colorButton); //pane.add(setDefaultButton); pane.newRow(); pane.add(setOnButton); pane.add(setOffButton); pane.add(plotChangeBox); pane.add(scalingField); dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dialog.addWindowListener(this); dialog.setContentPane(pane); JMenuBar menubar = new JMenuBar(); JMenu menu; JMenuItem item; menu = new JMenu("Options"); menubar.add(menu); item = new JMenuItem(new ReflectiveAction("Open File", null, this, "onOpenFile")); menu.add(item); menu.add(logScaleBox); item = new JMenuItem(new ReflectiveAction("Smooth Data", null, this, "onSmoothing")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Take Difference", null, this, "onDifference")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Take Average", null, this, "onAverage")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Re-zero", null, this, "onZero")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Shift Up", null, this, "onAdd")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Export", null, this, "onExport")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Restore Default", null, this, "onSetDefault")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Score in Last Col", null, this, "onFixScore")); menu.add(item); menu.insertSeparator(4); dialog.setJMenuBar(menubar); } //}}} //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make accessory for file chooser TablePane acc = new TablePane(); // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); filechooser.setAccessory(acc); //filechooser.addPropertyChangeListener(this); //filechooser.addChoosableFileFilter(fastaFilter); //filechooser.setFileFilter(fastaFilter); } //}}} //{{{ start //################################################################################################## public void start() { if(kMain.getKinemage() == null) return; //try //{ buildGUI(); //if(kMain.getApplet() != null) openMapURL(); //else openMapFile(); //dataMap = new HashMap(); listMap = new HashMap(); offPoints = new ArrayList(); allPoints = new ArrayList(); //openFile(); show(); } //}}} //{{{ askFormats private String askFileFormat(String f) { Object[] choices = {"First", "Last"}; String choice = (String) JOptionPane.showInputDialog(kMain.getTopWindow(), "Is the data in the first or last column?", "Choose", JOptionPane.PLAIN_MESSAGE, null, choices, "First"); return choice; } private String askAngleFormat(String f) { Object[] choices = {"phi, psi, angle", "phi, angle, psi", "angle, phi, psi"}; String choice = (String) JOptionPane.showInputDialog(kMain.getTopWindow(), "How is the data formatted?", "Choose", JOptionPane.PLAIN_MESSAGE, null, choices, "phi, angle, psi"); return choice; } //}}} //{{{ onOpenFile //################################################################################################## public void onOpenFile(ActionEvent ev) { // Create file chooser on demand if(filechooser == null) makeFileChooser(); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { try { File f = filechooser.getSelectedFile(); if(f != null && f.exists()) { dialog.setTitle(f.getName()); BufferedReader reader = new BufferedReader(new FileReader(f)); String fileChoice = askFileFormat(f.getName()); //System.out.println(fileChoice); String angleChoice = "none"; if (fileChoice.equals("First")) { angleChoice = askAngleFormat(f.getName()); } if ((fileChoice != null)&&(angleChoice != null)) { listMap = new HashMap(); offPoints = new ArrayList(); allPoints = new ArrayList(); scanFile(reader, fileChoice, angleChoice); } kCanvas.repaint(); // otherwise we get partial-redraw artifacts } } catch(IOException ex) { // includes MalformedURLException JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong map format was chosen, or map is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ scanFile //################################################################################################## /** * Does most of the work reading and analyzing the data files. **/ private void scanFile(BufferedReader reader, String fileChoice, String angleChoice) { String line; try { while((line = reader.readLine())!=null){ if (line.charAt(0)=='#') { System.out.println(line); //if (line.indexOf("#ROT")>-1) analyzeRotLine(line); } else { line = line.trim(); //System.out.println(line); /* StringTokenizer spaceToks = new StringTokenizer(line, " "); int numToks = spaceToks.countTokens(); double x, y, clashValue; double temp1 = 1000, temp2 = 1000, temp3 = 1000; double temp4 = Double.NaN; double z = Double.NaN; if (numToks > 2) { temp1 = Double.parseDouble(spaceToks.nextToken()); temp2 = Double.parseDouble(spaceToks.nextToken()); temp3 = Double.parseDouble(spaceToks.nextToken()); if (spaceToks.hasMoreTokens()) { temp4 = Double.parseDouble(spaceToks.nextToken()); } }*/ //System.out.println(line); String[] values = line.split("\\s"); //System.out.print(values.length + " "); //if (values.length>2) { //System.out.println(values[0]); //} int numValues = values.length; double x, y, clashValue; double temp1 = 1000, temp2 = 1000, temp3 = 1000; double temp4 = Double.NaN; double z = Double.NaN; if (numValues > 2) { temp1 = Double.parseDouble(values[0]); temp2 = Double.parseDouble(values[1]); temp3 = Double.parseDouble(values[2]); } if (numValues > 3) { temp4 = Double.parseDouble(values[3]); } if (fileChoice.equals("Last")) { x = temp1; y = temp2; if (!Double.isNaN(temp4)) { clashValue = temp4; z = temp3; } else { clashValue = temp3; } } else { clashValue = temp1; if (Double.isNaN(temp4)) { x = temp2; y = temp3; } else { if (angleChoice.equals("phi, psi, angle")) { x = temp2; y = temp3; z = temp4; } else if (angleChoice.equals("phi, angle, psi")) { x = temp2; z = temp3; y = temp4; } else { z = temp2; x = temp3; y = temp4; } } } BallPoint point = new BallPoint(Double.toString(clashValue)); allPoints.add(point); if (clashValue>0) { point.setRadius((float)clashValue); //point.setColor(KPalette.green); } else { point.setRadius(-(float)clashValue/10); //point.setRadius(1); } point.setX(x); point.setY(y); //point.setZ(clashValue*100); if (!Double.isNaN(z)) { sortByValue(z, point); } else { sortByValue(0, point); } //System.out.println(allPoints.size()); } } //System.out.println(allPoints.size()); plotByScore(true, 5); //System.out.println(allPoints.size()); setDefaultColors(); reSortKlists(); //System.out.println(allPoints.size()); //kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } } //}}} //{{{ analyzeRotLine // analyzes the comment lines in the files; function is not used at the moment. private void analyzeRotLine(String line) { System.out.println(line.substring(line.indexOf("from ")+5, line.indexOf(" to "))+ "."); System.out.println(line.substring(line.indexOf("to ") + 3, line.indexOf(" by "))+ "."); System.out.println(line.substring(line.indexOf("by ") + 3) + "."); double from = Double.parseDouble(line.substring(line.indexOf("from ")+5, line.indexOf(" to "))); double toValue = Double.parseDouble(line.substring(line.indexOf("to ") + 3, line.indexOf(" by "))); double increment = Double.parseDouble(line.substring(line.indexOf("by ") + 3)); if (toValue - from < minSpan) { minSpanLow = from; minSpanHigh = toValue; minSpan = toValue - from; minSpanIncr = increment; } } //}}} //{{{ sortByValue //need to set owners of the Klists. private void sortByValue(double value, KPoint point) { if (listMap.containsKey(new Double(value))) { KList list = (KList) listMap.get(new Double(value)); list.add(point); //point.setParent(list); } else { KList list = new KList(KList.BALL); //point.setParent(list); list.add(point); list.setName(Double.toString(value)); listMap.put(new Double(value), list); } } //}}} //{{{ reSortKlists //################################################################################################### /** * Sorts keys and adds KLists to the kinemage, each in separate groups and animatable. **/ private void reSortKlists() { Kinemage kin = kMain.getKinemage(); //KGroup group = new KGroup(kin, "Data Points"); //kin.add(group); kin.setModified(true); kin.getMasterByName("Data Points"); Set origKeys = listMap.keySet(); TreeSet keys = new TreeSet(origKeys); Iterator iter = keys.iterator(); while (iter.hasNext()) { Double key = (Double) iter.next(); KGroup group = new KGroup(key.toString()); group.setAnimate(true); group.addMaster("Data Points"); kin.add(group); KGroup subgroup = new KGroup(key.toString()); subgroup.setHasButton(false); group.add(subgroup); //KList list = new KList(subgroup, "Points"); KList list = (KList) listMap.get(key); list.setNoHighlight(true); //list.setType("BALL"); list.setHasButton(false); subgroup.add(list); //list.setParent(subgroup); } //kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); } //}}} //{{{ setDefaultColors //################################################################################################ public void setDefaultColors() { highlightRange(0, 180, KPalette.green); highlightRange(-35, -100, KPalette.red); highlightRange(-25, -35, KPalette.orange); highlightRange(-15, -25, KPalette.peach); highlightRange(-5, -15, KPalette.gold); highlightRange(0, -5, KPalette.yellow); } //}}} //{{{ highlightRange //################################################################################################ /** * Colors all points with value between firstNum and secondNum */ public void highlightRange(double firstNum, double secondNum, KPaint color) { if (firstNum > secondNum) { double temp = secondNum; secondNum = firstNum; firstNum = temp; } Iterator iter = allPoints.iterator(); while (iter.hasNext()) { KPoint point = (KPoint) iter.next(); double clashValue = Double.parseDouble(point.getName()); if ((clashValue<= secondNum)&&(clashValue>= firstNum)) { point.setColor(color); } } kCanvas.repaint(); } //}}} //{{{ onSetDefault public void onSetDefault(ActionEvent ev) { setDefaultColors(); } //}}} //{{{ onTurnOff public void onTurnOff(ActionEvent ev) { if (isNumeric(lowNumField.getText())&&(isNumeric(highNumField.getText()))) { double firstNum = Double.parseDouble(lowNumField.getText()); double secondNum = Double.parseDouble(highNumField.getText()); if (firstNum > secondNum) { double temp = secondNum; secondNum = firstNum; firstNum = temp; } Collection lists = listMap.values(); Iterator iter = lists.iterator(); while (iter.hasNext()) { KList list = (KList) iter.next(); list.clear(); //onPoints.clear(); } // for fixing a bug where points that are .equals() are in different lists. HashSet offPointSet = new HashSet(offPoints); iter = allPoints.iterator(); int i = 0; while (iter.hasNext()) { KPoint point = (KPoint) iter.next(); double clashValue = Double.parseDouble(point.getName()); if ((clashValuesecondNum)) { if (!offPointSet.contains(point)) { KList owner = (KList) point.getParent(); owner.add(point); } } else { offPoints.add(point); offPointSet.add(point); i++; } } //System.out.println(offPoints.size()+", " + i); } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), "You have to put numbers in the text boxes!", "Error", JOptionPane.ERROR_MESSAGE); } kCanvas.repaint(); } //}}} //{{{ onTurnOn public void onTurnOn(ActionEvent ev) { if (isNumeric(lowNumField.getText())&&(isNumeric(highNumField.getText()))) { double firstNum = Double.parseDouble(lowNumField.getText()); double secondNum = Double.parseDouble(highNumField.getText()); if (firstNum > secondNum) { double temp = secondNum; secondNum = firstNum; firstNum = temp; } for (int i = offPoints.size() - 1; i > -1; i--) { KPoint point = (KPoint) offPoints.get(i); double clashValue = Double.parseDouble(point.getName()); if ((clashValue>=firstNum)&&(clashValue<=secondNum)) { KList owner = (KList) point.getParent(); owner.add(point); offPoints.remove(i); } } //System.out.println(offPoints.size() + ", " + i); } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), "You have to put numbers in the text boxes!", "Error", JOptionPane.ERROR_MESSAGE); } kCanvas.repaint(); } //}}} //{{{ onDifference public void onDifference(ActionEvent ev) { long startTime = System.currentTimeMillis(); addAllDataPoints(); for (int i = 0; i < allPoints.size(); i++) { KPoint point = (KPoint) allPoints.get(i); if ((i+1) < allPoints.size()) { KPoint nextPoint = (KPoint) allPoints.get(i+1); double score = Double.parseDouble(point.getName()); double npScore = Double.parseDouble(nextPoint.getName()); if ((point.getX()==nextPoint.getX())&&(point.getY()==nextPoint.getY())&&(score!=npScore)) { //double z = point.getZ(); //double npz = nextPoint.getZ(); point.setZ((score-npScore)*5); nextPoint.setZ((score-npScore)*5); point.setRadius((float)1); point.setRadius((float)1); } } } long endTime = System.currentTimeMillis(); System.out.println("Total Time to diff: " + ((endTime-startTime)/1000) + " seconds"); //kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); } //}}} //{{{ addAllDataPoints private void addAllDataPoints() { Kinemage kin = kMain.getKinemage(); Iterator iter = kin.iterator(); allPoints.clear(); //long startTime = System.currentTimeMillis(); while (iter.hasNext()) { KGroup group = (KGroup) iter.next(); if (group.isOn()) { if (group.getMasters().contains("Data Points")) { KIterator points = KIterator.allPoints(group); for (KPoint point : points) { allPoints.add(point); } } } } PointSorter ps = new PointSorter(allPoints, PointSorter.SORTBY_Y); allPoints = (ArrayList) ps.sortPhiPsi(); ps = new PointSorter(allPoints, PointSorter.SORTBY_X); allPoints = (ArrayList) ps.sortPhiPsi(); } //}}} //{{{ onExport public void onExport(ActionEvent ev) { //addAllDataPoints(); JFileChooser saveChooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) { saveChooser.setCurrentDirectory(new File(currdir)); } if (saveChooser.APPROVE_OPTION == saveChooser.showSaveDialog(kMain.getTopWindow())) { File f = saveChooser.getSelectedFile(); if( !f.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { saveDataFile(f); } } } //}}} //{{{ saveDataFile public void saveDataFile(File f) { try { Writer w = new FileWriter(f); PrintWriter out = new PrintWriter(new BufferedWriter(w)); addAllDataPoints(); Iterator iter = allPoints.iterator(); while (iter.hasNext()) { AbstractPoint point = (AbstractPoint) iter.next(); out.print(df.format(point.getZ())); out.print(" "); out.print(intf.format(point.getX())); out.print(" "); out.println(intf.format(point.getY())); } out.flush(); w.close(); } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } //}}} //{{{ plotByScore private void plotByScore(boolean plotStat, double scaleFactor) { if (plotStat) { //Collection values = dataMap.values(); Iterator iter = allPoints.iterator(); while (iter.hasNext()) { //System.out.print("1"); //ArrayList value = (ArrayList) iter.next(); //Iterator points = value.iterator(); //while (points.hasNext()) { KPoint point = (KPoint) iter.next(); if (logScaleBox.getState()) { point.setZ(Math.log(Double.parseDouble(point.getName())+1)*scaleFactor); } else { point.setZ(Double.parseDouble(point.getName())*scaleFactor); } if (scaleFactor>=100) { point.setRadius((float)((Double.parseDouble(point.getName())*scaleFactor/70))); } else { point.setRadius((float)(Double.parseDouble(point.getName())/10)); } if (point.getRadius() > 3) { point.setRadius((float)3); } //} } } else { Iterator iter = allPoints.iterator(); while (iter.hasNext()) { KPoint point = (KPoint) iter.next(); KList list = (KList) point.getParent(); point.setZ(Double.parseDouble(list.getName())); } } } //}}} //{{{ onHighlightRange public void onHighlightRange(ActionEvent ev) { if (isNumeric(lowNumField.getText())&&(isNumeric(highNumField.getText()))) { double firstNum = Double.parseDouble(lowNumField.getText()); double secondNum = Double.parseDouble(highNumField.getText()); highlightRange(firstNum, secondNum, (KPaint) color1.getSelectedItem()); } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), "You have to put numbers in the text boxes!", "Error", JOptionPane.ERROR_MESSAGE); } kCanvas.repaint(); } //}}} //{{{ onFixScore public void onFixScore(ActionEvent ev) { //Collection values = dataMap.values(); //Iterator iter = values.iterator(); listMap.clear(); //dataMap.clear(); Iterator iter = allPoints.iterator(); while (iter.hasNext()) { KPoint point = (KPoint) iter.next(); double temp = point.getX(); double clashValue = point.getY(); point.setX(Double.parseDouble(point.getName())); point.setName(Double.toString(clashValue)); point.setY(temp); point.setRadius((float)clashValue); //makeDataMap(point, 100); sortByValue(0, point); } plotByScore(true, 5); setDefaultColors(); reSortKlists(); //kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); } //}}} //{{{ onSmoothing public void onSmoothing(ActionEvent ev) { long startTime = System.currentTimeMillis(); addAllDataPoints(); for (int i = 0; i < allPoints.size(); i++) { KPoint point = (KPoint) allPoints.get(i); if ((i+1) < allPoints.size()) { KPoint nextPoint = (KPoint) allPoints.get(i+1); if ((point.getX()==nextPoint.getX())&&(point.getY()==nextPoint.getY())&&(point.getZ()!=nextPoint.getZ())) { double z = point.getZ(); double npz = nextPoint.getZ(); point.setZ(z+npz); nextPoint.setZ(z+npz); } } } long endTime = System.currentTimeMillis(); System.out.println("Total Time to smooth: " + ((endTime-startTime)/1000) + " seconds"); } //}}} //{{{ onAverage public void onAverage(ActionEvent ev) { int interval = 6; long startTime = System.currentTimeMillis(); TreeMap phiMap = new TreeMap(); addAllDataPoints(); Iterator iter = allPoints.iterator(); RamaTable rama = new RamaTable(); while (iter.hasNext()) { KPoint pt = (KPoint) iter.next(); rama.add(pt.getX(), pt.getY(), pt.getZ()); } iter = allPoints.iterator(); while (iter.hasNext()) { KPoint pt = (KPoint) iter.next(); double mm = rama.get(pt.getX()-interval, pt.getY()-interval); double mp = rama.get(pt.getX()-interval, pt.getY()+interval); double pm = rama.get(pt.getX()+interval, pt.getY()-interval); double pp = rama.get(pt.getX()+interval, pt.getY()+interval); if (!Double.isNaN(mm)&&!Double.isNaN(mp)&&!Double.isNaN(pm)&&!Double.isNaN(pp)) { double val = pt.getZ(); pt.setZ((val+mm+mp+pm+pp)/5); } } long endTime = System.currentTimeMillis(); System.out.println("Total Time to avg: " + ((endTime-startTime)/1000) + " seconds"); } //}}} //{{{ onZero public void onZero(ActionEvent ev) { addAllDataPoints(); Iterator iter = allPoints.iterator(); double maxVal = -100000; while (iter.hasNext()) { KPoint pt = (KPoint) iter.next(); double val = pt.getZ(); if (val > maxVal) { maxVal = val; } } iter = allPoints.iterator(); while (iter.hasNext()) { KPoint pt = (KPoint) iter.next(); pt.setZ(pt.getZ() - maxVal); } } //}}} //{{{ onAdd public void onAdd(ActionEvent ev) { addAllDataPoints(); Iterator iter = allPoints.iterator(); while (iter.hasNext()) { KPoint pt = (KPoint) iter.next(); pt.setZ(pt.getZ() + 0.5); } } //}}} //{{{ event functions //############################################################################################### /** * Event handler for when action performed. */ public void actionPerformed(ActionEvent ev) { if (plotChangeBox.isSelected()) { plotByScore(true, Double.parseDouble(scalingField.getText())); //dataMap.clear(); //System.out.println("selected"); } else { plotByScore(false, 5); //System.out.println("not selected"); } kCanvas.repaint(); } //}}} public boolean isNumeric(String s) { try { Double.parseDouble(s); return true; } catch (NumberFormatException e) { return false; } } //{{{ getHelpAnchor, toString //################################################################################################## public String getHelpAnchor() { return null; } public Container getToolPanel() { return pane; } public String toString() { return "AutoBondRot Data"; } //}}} } //}}} king-2.21.120420/extratools/src/king/tool/data_analysis/RdcPlayPlugin.java0000644000000000000000000001502011531213012024672 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.data_analysis; import king.*; import king.core.*; import king.points.*; import king.io.*; import driftwood.gui.*; import javax.swing.*; import javax.swing.event.*; import java.awt.event.*; import java.util.*; import java.text.*; //}}} public class RdcPlayPlugin extends Plugin implements ChangeListener { //{{{ Constants DecimalFormat df = new DecimalFormat("0.00"); //}}} //{{{ Variables double daxial, dn, drhombic, xisquared, etasquared, lambdasquared, zetasquared, deltacrit; double dzz, dyy, dxx; JSlider rhombSlider; JLabel rhombLabel; //}}} //{{{ Constructor public RdcPlayPlugin(ToolBox tb) { super(tb); } //}}} //{{{ onStart public void onStart(ActionEvent ev) { buildGUI(); double rhombicity = ((double)rhombSlider.getValue()) / 1000.0; calcVariables(rhombicity); //daxial = -20.0; //drhombic = -20.0/3.0; //deltacrit = 10.0 / daxial; //dn = 1.05 * daxial; createKin(); } //}}} //{{{ buildGUI public void buildGUI() { TablePane2 pane = new TablePane2(); rhombSlider = new JSlider(1, 666, 1); rhombSlider.addChangeListener(this); pane.add(rhombSlider); pane.newRow(); rhombLabel = new JLabel("0.001"); pane.add(rhombLabel); JDialog dialog = new JDialog(kMain.getTopWindow(), "RDC Play Plugin", false); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setContentPane(pane); dialog.pack(); dialog.show(); } //}}} //{{{ stateChanged public void stateChanged(ChangeEvent ev) { double rhombicity = ((double)rhombSlider.getValue()) / 1000.0; //System.out.println(rhombicity); calcVariables(rhombicity); rhombLabel.setText(Double.toString(rhombicity)); Kinemage kin = kMain.getKinemage(); KIterator lists = KIterator.allLists(kin); KList list = lists.next(); list.clear(); createPoints(list); } //}}} //{{{ calcVariables public void calcVariables(double rhombicity) { dzz = 40; dyy = -20 - 30 * rhombicity; dxx = -20 + 30 * rhombicity; daxial = dzz / 2; drhombic = (dxx - dyy) / 3.0; deltacrit = dxx / daxial; //System.out.println(daxial + " " + drhombic + " " + deltacrit); } //}}} //{{{ createKin public void createKin() { Kinemage kin = new Kinemage(KinfileParser.DEFAULT_KINEMAGE_NAME+"1"); KGroup group = new KGroup("RDC Points"); KGroup sub = new KGroup("Sub"); sub.setHasButton(false); KList list = new KList(KList.VECTOR, "points"); kin.add(group); group.add(sub); sub.add(list); createPoints(list); kMain.getStable().append(Arrays.asList(new Kinemage[] {kin})); } //}}} //{{{ createPoints public void createPoints(KList list) { VectorPoint origin = new VectorPoint("0 0 0", null); origin.setXYZ(0, 0, 0); VectorPoint plusZ = new VectorPoint("0 0 1", origin); plusZ.setXYZ(0, 0, 1); VectorPoint plusX = new VectorPoint("1 0 0", origin); plusX.setXYZ(1, 0, 0); plusX.setColor(KPalette.bluetint); list.add(origin); list.add(plusZ); list.add(plusX); for (int i = (int)((-1 - 3/2 * drhombic/daxial) * 100); i <= 200; i = i + 5) { // avoids round off errors, I think. //System.out.println((double) i / 100.0); //System.out.println(i); dn = i * daxial / 100.0; xisquared = (2 * daxial - dn) / (3 * daxial - (3/2) * drhombic); etasquared = (2 * daxial - dn) / (3 * daxial + (3/2) * drhombic); lambdasquared = (dn + daxial + (3 / 2) * drhombic) / (3 * drhombic); zetasquared = (dn + daxial + (3 / 2) * drhombic) / (3 * daxial + (3 / 2) * drhombic); //System.out.println(xisquared); //System.out.println(etasquared); VectorPoint old = null; VectorPoint negOld = null; ArrayList posPoints = new ArrayList(); ArrayList negPoints = new ArrayList(); for (double tau = - Math.PI; tau <= Math.PI; tau += Math.PI / 60) { //System.out.println(tau); VectorPoint point = new VectorPoint("Point " + df.format(dn), old); point.setXYZ(calcX(tau), calcY(tau), calcZ(tau)); if (dn > 0) point.setColor(KPalette.green); //list.add(origin); //list.add(point); posPoints.add(point); old = point; VectorPoint negPoint = new VectorPoint("Neg Point " + df.format(dn), negOld); if (dn / daxial > deltacrit) { negPoint.setXYZ(calcX(tau), calcY(tau), -calcZ(tau)); } else { negPoint.setXYZ(calcX(tau), -calcY(tau), calcZ(tau)); } if (dn > 0) negPoint.setColor(KPalette.green); //list.add(negPoint); negPoints.add(negPoint); negOld = negPoint; } for (KPoint posPt : posPoints) { list.add(posPt); } for (KPoint negPt : negPoints) { list.add(negPt); } } } //}}} //{{{ calcX public double calcX(double tau) { //double xisquared = (2 * daxial - dn) / (3 * daxial - (3/2) * drhombic); //double etasquared = (2 * daxial - dn) / (3 * daxial + (3/2) * drhombic); if (dn / daxial > deltacrit) { return Math.sqrt(xisquared) * Math.cos(tau); } else { return Math.sqrt(lambdasquared) * Math.cos(tau); } } //}}} //{{{ calcY public double calcY(double tau) { //double etasquared = (2 * daxial - dn) / (3 * daxial + (3/2) * drhombic); if (dn / daxial > deltacrit) { return Math.sqrt(etasquared) * Math.sin(tau); } else { return Math.sqrt(1 - lambdasquared * Math.pow(Math.cos(tau),2) - zetasquared * Math.pow(Math.sin(tau),2)); } } //}}} //{{{ calcZ /** only returns positive value **/ public double calcZ(double tau) { //double xisquared = (2 * daxial - dn) / (3 * daxial - (3/2) * drhombic); //double etasquared = (2 * daxial - dn) / (3 * daxial + (3/2) * drhombic); if (dn / daxial > deltacrit) { return Math.sqrt(1 - xisquared * Math.pow(Math.cos(tau),2) - etasquared * Math.pow(Math.sin(tau),2)); } else { return Math.sqrt(zetasquared) * Math.sin(tau); } } //}}} //{{{ getToolsMenuItem public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onStart")); } public String toString() { return "RDC Play"; } //}}} } king-2.21.120420/extratools/src/king/tool/data_analysis/HighDimSliderPlugin.java0000644000000000000000000001234011531213012026012 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.data_analysis; import king.*; import king.core.*; import king.tool.loops.*; import driftwood.gui.*; import javax.swing.*; import javax.swing.event.*; import java.awt.event.*; import java.awt.*; import java.util.*; import driftwood.util.*; import java.net.*; //}}} public class HighDimSliderPlugin extends Plugin implements ChangeListener { //{{{ Constants //}}} //{{{ Variables HighLowSliders[] sliders; //}}} //{{{ Constructors public HighDimSliderPlugin(ToolBox tb) { super(tb); } //}}} //{{{ onStart public void onStart(ActionEvent ev) { buildGUI(); } //}}} //{{{ buildGUI public void buildGUI() { Kinemage kin = kMain.getKinemage(); TablePane2 pane = new TablePane2(); int numDim = kin.dimensionNames.size(); ArrayList minMax = new ArrayList(kin.dimensionMinMax); ArrayList dimNames = new ArrayList(kin.dimensionNames); sliders = new HighLowSliders[numDim]; for (int i = 0; i < numDim; i++) { int lowVal = (int) Math.floor(minMax.get(i*2).doubleValue()); int highVal = (int) Math.ceil(minMax.get(i*2+1).doubleValue()); sliders[i] = new HighLowSliders(lowVal, highVal, 100); sliders[i].setMajorTickSpacing(20); sliders[i].setPaintTicks(true); sliders[i].addChangeListener(this); pane.top(); pane.addCell(new JLabel(dimNames.get(i)), 1, 2); pane.middle(); pane.add(sliders[i].getLowSlider()); pane.add(sliders[i].getHighSlider()); pane.newRow(); pane.add(sliders[i].getLowLabel()); pane.add(sliders[i].getHighLabel()); pane.newRow(); } JDialog dialog = new JDialog(kMain.getTopWindow(), "High Dim Sliders", false); //dialog.addWindowListener(this); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setContentPane(pane); dialog.pack(); dialog.show(); } //}}} //{{{ stateChanged public void stateChanged(ChangeEvent ev) { Kinemage kin = kMain.getKinemage(); if(kin == null) return; for (HighLowSliders slider : sliders) { slider.stateChanged(ev); } String key = ParaParams.class.getName()+".instance"; ParaParams params = (ParaParams) kin.metadata.get(key); if((params != null)&&(params.isInParallelMode())) { //params.parallelChildren.clear(); setPoints(); //params.redrawParallel(); } else { setPoints(); } } //}}} //{{{ setPoints public void setPoints() { Kinemage kin = kMain.getKinemage(); KIterator lists = KIterator.allLists(kin); for (KList list : lists) { if (list.isOn()) { KIterator points = KIterator.allPoints(list); for (KPoint point : points) { point.setOn(true); } points = KIterator.allPoints(list); for (KPoint point : points) { float[] coords = point.getAllCoords(); if (coords != null) { for (int i = 0; (i < coords.length && point.isOn()) ; i++) { float value = coords[i]; HighLowSliders hls = sliders[i]; if ((value < hls.getLowValue())||(value > hls.getHighValue())) { point.setOn(false); } } } } } } } //}}} //{{{ setParallelPoints //public void setParallelPoints() { // Kinemage kin = kMain.getKinemage(); // KIterator lists = KIterator.allLists(kin); // for (KList list : lists) { // if (list.isOn()) { // //}}} //{{{ turnOffPoints //public void turnOffPoints() { // Kinemage kin = kMain.getKinemage(); // KIterator points = KIterator.visiblePoints(kin); // for (KPoint point : points) { // //System.out.println(point); // float[] coords = point.getAllCoords(); // if (coords != null) { // for (int i = 0; (i < coords.length && point.isOn()) ; i++) { // float value = coords[i]; // HighLowSliders hls = sliders[i]; // if ((value < hls.getLowValue())||(value > hls.getHighValue())) { // point.setOn(false); // } // } // } // } //} //}}} //{{{ getToolsMenuItem public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onStart")); } //}}} //{{{ getHelpAnchor, toString //################################################################################################## public String getHelpAnchor() { return "#high-d-sliders"; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String toString() { return "High-Dimensional sliders"; } //}}} } king-2.21.120420/extratools/src/king/tool/docking/0000755000000000000000000000000011677360410020136 5ustar rootrootking-2.21.120420/extratools/src/king/tool/docking/DockLsqTool.java0000644000000000000000000002342411531213014023166 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.docking; import king.*; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * DockLsqTool is a simple tool for doing * least-squares docking. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Fri Jul 11 13:32:28 EDT 2003 */ public class DockLsqTool extends BasicTool { //{{{ Constants //}}} //{{{ CLASS: PointKeeper //############################################################################## class PointKeeper implements ActionListener { public JList pointList; public ArrayList tupleList; public JButton btnClear, btnRemove; public KList markList; DefaultListModel listModel; public PointKeeper(KPaint paint) { tupleList = new ArrayList(); listModel = new DefaultListModel(); pointList = new JList(listModel); pointList.setVisibleRowCount(3); btnClear = new JButton("Clear"); btnClear.addActionListener(this); btnRemove = new JButton("Remove last"); btnRemove.addActionListener(this); markList = new KList(KList.LABEL); markList.setColor(paint); } public int count() { return tupleList.size(); } public void add(String tag, Tuple3 t) { tupleList.add(t); listModel.addElement(tag); LabelPoint label = new LabelPoint(Integer.toString(count())); label.setX(t.getX()); label.setY(t.getY()); label.setZ(t.getZ()); label.setUnpickable(true); markList.add(label); syncDockButton(); } public void removeLast() { if(tupleList.size() > 0) tupleList.remove(tupleList.size()-1); if(listModel.size() > 0) listModel.remove(listModel.size()-1); if(markList.getChildren().size() > 0) markList.getChildren().remove(markList.getChildren().size()-1); syncDockButton(); } public void actionPerformed(ActionEvent ev) { if(ev.getSource() == btnClear) clear(); else if(ev.getSource() == btnRemove) removeLast(); kCanvas.repaint(); } public void clear() { tupleList.clear(); listModel.clear(); markList.clear(); syncDockButton(); } } //}}} //{{{ Variable definitions //############################################################################## TablePane toolpane; PointKeeper pkReference; PointKeeper pkMobile; JRadioButton btnReference, btnMobile; JButton btnDock; JCheckBox cbKeepReference; //}}} //{{{ Constructor(s) //############################################################################## public DockLsqTool(ToolBox tb) { super(tb); pkReference = new PointKeeper(KPalette.sky); pkMobile = new PointKeeper(KPalette.hotpink); buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { btnDock = new JButton(new ReflectiveAction( "Dock visible on invisible", null, this, "onDock")); btnDock.setEnabled(false); btnReference = new JRadioButton("Reference", true); btnMobile = new JRadioButton("Mobile", false); ButtonGroup bg = new ButtonGroup(); bg.add(btnReference); bg.add(btnMobile); cbKeepReference = new JCheckBox("Remember reference points", false); toolpane = new TablePane(); toolpane.center(); toolpane.add(btnReference); toolpane.add(pkReference.btnClear); toolpane.add(pkReference.btnRemove); toolpane.newRow().save().hfill(true).vfill(true); toolpane.add(new JScrollPane(pkReference.pointList),3,1); toolpane.newRow().restore(); toolpane.add(btnMobile); toolpane.add(pkMobile.btnClear); toolpane.add(pkMobile.btnRemove); toolpane.newRow().save().hfill(true).vfill(true); toolpane.add(new JScrollPane(pkMobile.pointList),3,1); toolpane.newRow().restore(); toolpane.add(cbKeepReference,3,1); toolpane.newRow(); toolpane.add(btnDock,3,1); } //}}} //{{{ xx_click() functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); if(p != null) { Triple t = new Triple(p.getX(), p.getY(), p.getZ()); if(btnReference.isSelected()) { pkReference.add(p.getName(), t); } else if(btnMobile.isSelected()) { pkMobile.add(p.getName(), t); } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Either 'Reference' or 'Mobile' should be selected.", "Error", JOptionPane.ERROR_MESSAGE); } } } /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); } //}}} //{{{ onDock, syncDockButton //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDock(ActionEvent ev) { Tuple3[] ref = (Tuple3[])pkReference.tupleList.toArray(new Tuple3[pkReference.tupleList.size()]); Tuple3[] mob = (Tuple3[])pkMobile.tupleList.toArray(new Tuple3[pkMobile.tupleList.size()]); SuperPoser poser = new SuperPoser(ref, mob); Transform t = poser.superpos(); Kinemage kin = kMain.getKinemage(); if(!t.isNaN() && kin != null) { transformAllVisible(kin, t); kin.setModified(true); } /* // Swap which button is selected if(btnReference.isSelected()) btnMobile.setSelected(true); else btnReference.setSelected(true); */ // Make mobile button selected if maintaining reference; // otherwise make reference button selected if(cbKeepReference.isSelected()) btnMobile.setSelected(true); else btnReference.setSelected(true); if(!cbKeepReference.isSelected()) pkReference.clear(); pkMobile.clear(); kCanvas.repaint(); } void syncDockButton() { btnDock.setEnabled(pkReference.count() >= 2 && pkReference.count() == pkMobile.count()); } //}}} //{{{ transformAllVisible //############################################################################## private void transformAllVisible(AGE target, Transform t) { if(!target.isOn()) return; if(target instanceof KList) { Triple proxy = new Triple(); for(Iterator iter = target.iterator(); iter.hasNext(); ) { KPoint pt = (KPoint)iter.next(); if(pt.isOn()) { proxy.setXYZ(pt.getX(), pt.getY(), pt.getZ()); t.transform(proxy); pt.setX(proxy.getX()); pt.setY(proxy.getY()); pt.setZ(proxy.getZ()); } } } else { for(Iterator iter = target.iterator(); iter.hasNext(); ) transformAllVisible((AGE)iter.next(), t); } } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform) { pkReference.markList.doTransform(engine, xform); pkMobile.markList.doTransform(engine, xform); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ getToolPanel, getHelpURL/Anchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return toolpane; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return "#lsqdock-tool"; } public String toString() { return "Least-squares docking"; } //}}} }//class king-2.21.120420/extratools/src/king/tool/docking/Dock3On3Tool.java0000644000000000000000000002102411531213014023143 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.docking; import king.*; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * Dock3On3Tool is a simple tool for doing * 3-point docking, like in Mage. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Fri Jul 11 13:32:28 EDT 2003 */ public class Dock3On3Tool extends BasicTool { //{{{ Constants //}}} //{{{ CLASS: PointKeeper //############################################################################## class PointKeeper implements ActionListener { public JList pointList; public JButton btnClear; public KList markList; DefaultListModel listModel; Tuple3 point1, point2, point3; public PointKeeper(KPaint paint) { listModel = new DefaultListModel(); pointList = new JList(listModel); pointList.setVisibleRowCount(3); btnClear = new JButton("Clear"); btnClear.addActionListener(this); markList = new KList(KList.LABEL); markList.setColor(paint); point1 = point2 = point3 = null; } public boolean canAdd() { return point3 == null; } public void add(String tag, Tuple3 t) { LabelPoint label; if(point1 == null) { point1 = t; label = new LabelPoint("1"); } else if(point2 == null) { point2 = t; label = new LabelPoint("2"); } else if(point3 == null) { point3 = t; label = new LabelPoint("3"); } else throw new IllegalStateException("This keeper is already full!"); listModel.addElement(tag); label.setX(t.getX()); label.setY(t.getY()); label.setZ(t.getZ()); label.setUnpickable(true); markList.add(label); syncDockButton(); } public void actionPerformed(ActionEvent ev) { clear(); } public void clear() { listModel.clear(); markList.clear(); point1 = point2 = point3 = null; syncDockButton(); } } //}}} //{{{ Variable definitions //############################################################################## TablePane toolpane; PointKeeper pkReference; PointKeeper pkMobile; JButton btnDock; JCheckBox cbKeepReference; //}}} //{{{ Constructor(s) //############################################################################## public Dock3On3Tool(ToolBox tb) { super(tb); pkReference = new PointKeeper(KPalette.sky); pkMobile = new PointKeeper(KPalette.hotpink); buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { btnDock = new JButton(new ReflectiveAction( "Dock visible on invisible", null, this, "onDock")); btnDock.setEnabled(false); cbKeepReference = new JCheckBox("Remember reference points", false); toolpane = new TablePane(); toolpane.center(); toolpane.add(new JLabel("Reference")); toolpane.add(pkReference.btnClear); toolpane.newRow().save().hfill(true).vfill(true); toolpane.add(new JScrollPane(pkReference.pointList),2,1); toolpane.newRow().restore(); toolpane.add(new JLabel("Mobile")); toolpane.add(pkMobile.btnClear); toolpane.newRow().save().hfill(true).vfill(true); toolpane.add(new JScrollPane(pkMobile.pointList),2,1); toolpane.newRow().restore(); toolpane.add(cbKeepReference,2,1); toolpane.newRow(); toolpane.add(btnDock,2,1); } //}}} //{{{ xx_click() functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); if(p != null) { Triple t = new Triple(p.getX(), p.getY(), p.getZ()); if(pkReference.canAdd()) { pkReference.add(p.getName(), t); } else if(pkMobile.canAdd()) { pkMobile.add(p.getName(), t); } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), "You only need 6 points total for docking.", "Error", JOptionPane.ERROR_MESSAGE); } } } /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); } //}}} //{{{ onDock, syncDockButton //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDock(ActionEvent ev) { Builder builder = new Builder(); Transform t = builder.dock3on3( pkReference.point1, pkReference.point2, pkReference.point3, pkMobile.point1, pkMobile.point2, pkMobile.point3); Kinemage kin = kMain.getKinemage(); if(!t.isNaN() && kin != null) { transformAllVisible(kin, t); kin.setModified(true); } if(!cbKeepReference.isSelected()) pkReference.clear(); pkMobile.clear(); kCanvas.repaint(); } void syncDockButton() { btnDock.setEnabled(!(pkReference.canAdd() || pkMobile.canAdd())); } //}}} //{{{ transformAllVisible //############################################################################## private void transformAllVisible(AGE target, Transform t) { if(!target.isOn()) return; if(target instanceof KList) { Triple proxy = new Triple(); for(Iterator iter = target.iterator(); iter.hasNext(); ) { KPoint pt = (KPoint)iter.next(); if(pt.isOn()) { proxy.setXYZ(pt.getX(), pt.getY(), pt.getZ()); t.transform(proxy); pt.setX(proxy.getX()); pt.setY(proxy.getY()); pt.setZ(proxy.getZ()); } } } else { for(Iterator iter = target.iterator(); iter.hasNext(); ) transformAllVisible((AGE)iter.next(), t); } } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform) { pkReference.markList.doTransform(engine, xform); pkMobile.markList.doTransform(engine, xform); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ getToolPanel, getHelpURL/Anchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return toolpane; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return "#dock3-tool"; } public String toString() { return "Dock 3-on-3"; } //}}} }//class king-2.21.120420/extratools/src/king/tool/docking/DockConnTool.java0000644000000000000000000001460511531213014023325 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.docking; import king.*; import king.core.*; import king.points.*; import king.tool.postkin.ConnectivityFinder; import driftwood.util.SoftLog; import java.net.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import driftwood.r3.*; import driftwood.gui.*; //}}} /** * DockConnTool has yet to be documented. */ public class DockConnTool extends DockLsqTool { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //TablePane toolpane; //JRadioButton btnReference, btnMobile; //JButton btnDock; /*JCheckBox keepRefBox;*/ HashSet mobilePoints; HashMap adjacencyMap; AbstractPoint firstClick, secondClick; LinkedList refList = new LinkedList(); ConnectivityFinder connect; //}}} //{{{ Constructor(s) //############################################################################## public DockConnTool(ToolBox tb) { super(tb); addGUI(); } //}}} //{{{ addGUI, start //############################################################################## private void addGUI() { //super.buildGUI(); //btnDock = new JButton(new ReflectiveAction("Dock mobile on reference", null, this, "onDock")); btnDock.setLabel("Dock mobile on reference"); /*keepRefBox = new JCheckBox("Keep reference points", true); toolpane.newRow(); toolpane.add(keepRefBox, 3, 1);*/ } public void start() { if (kMain.getKinemage() == null) return; connect = new ConnectivityFinder(kMain); //adjacencyMap = new HashMap(); //buildAdjacencyList(); show(); } //}}} //{{{ xx_click() functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { //super.click(x, y, p, ev); services.pick(p); if(p != null && p.getComment() != null) clickActionHandler(p.getComment()); if(p != null) { if (firstClick != null) { connect.buildAdjacencyList(false); ArrayList list = connect.pathFinder(firstClick, (AbstractPoint) p); //System.out.println(list.size()); Iterator iter = list.iterator(); while (iter.hasNext()) { AbstractPoint point = (AbstractPoint) iter.next(); //Triple t = new Triple(point); if (btnReference.isSelected()) { pkReference.add(point.getName(), point); } else if (btnMobile.isSelected()) { pkMobile.add(point.getName(), point); } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Either 'Reference' or 'Mobile' should be selected.", "Error", JOptionPane.ERROR_MESSAGE); } firstClick = null; } } else { firstClick = (AbstractPoint) p; } /* Triple t = new Triple(p.getX(), p.getY(), p.getZ()); if(btnReference.isSelected()) { pkReference.add(p.getName(), t); } else if(btnMobile.isSelected()) { pkMobile.add(p.getName(), t); } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Either 'Reference' or 'Mobile' should be selected.", "Error", JOptionPane.ERROR_MESSAGE); } */ } } //}}} //{{{ onDock //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDock(ActionEvent ev) { connect.buildAdjacencyList(true); mobilePoints = connect.mobilityFinder((AbstractPoint)pkMobile.tupleList.get(0)); Tuple3[] ref = (Tuple3[])pkReference.tupleList.toArray(new Tuple3[pkReference.tupleList.size()]); Tuple3[] mob = (Tuple3[])pkMobile.tupleList.toArray(new Tuple3[pkMobile.tupleList.size()]); SuperPoser poser = new SuperPoser(ref, mob); Transform t = poser.superpos(); Kinemage kin = kMain.getKinemage(); if(!t.isNaN() && kin != null) { transform(kin, t); kin.setModified(true); } if(cbKeepReference.isSelected()) btnMobile.setSelected(true); else btnReference.setSelected(true); /*if(!keepRefBox.isSelected()) {*/ if(!cbKeepReference.isSelected()) { pkReference.clear(); btnMobile.setSelected(true); } pkMobile.clear(); kCanvas.repaint(); } //}}} //{{{ transformAllVisible //############################################################################## private void transform(AGE target, Transform t) { //if(!target.isOn()) return; if(target instanceof KList) { Triple proxy = new Triple(); for(Iterator iter = target.iterator(); iter.hasNext(); ) { KPoint pt = (KPoint)iter.next(); if(mobilePoints.contains(pt)) { proxy.setXYZ(pt.getX(), pt.getY(), pt.getZ()); t.transform(proxy); pt.setX(proxy.getX()); pt.setY(proxy.getY()); pt.setZ(proxy.getZ()); } } } else { for(Iterator iter = target.iterator(); iter.hasNext(); ) transform((AGE)iter.next(), t); } } //}}} //{{{ toString //############################################################################## public String toString() { return "Dock by pick range"; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#dockbypicking-tool"; } //}}} } king-2.21.120420/extratools/src/king/tool/loops/0000755000000000000000000000000011677360410017654 5ustar rootrootking-2.21.120420/extratools/src/king/tool/loops/LoopDockingTool.java0000644000000000000000000003420511531213012023551 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.loops; import king.*; import king.core.*; import king.points.*; import king.tool.util.KinUtil; import king.tool.postkin.ConnectivityFinder; import java.util.*; import java.io.*; import javax.swing.*; import java.awt.event.*; import driftwood.util.*; import driftwood.r3.*; import driftwood.gui.*; //import driftwood.moldb2.AminoAcid; //}}} public class LoopDockingTool extends BasicTool { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## HashSet mobilePoints; ArrayList refPath, mobilePath; HashMap startColorMap, endColorMap; HashMap pdbKeepMap; TreeMap bFactorMap; TablePane pane; JFileChooser filechooser; ConnectivityFinder connect; JButton openButton; JTextField numResField; JRadioButton dockOnStartButton; JRadioButton dockOnEndButton; JRadioButton dockOnLoopButton; JRadioButton dockOnBothButton; //}}} public LoopDockingTool(ToolBox tb) { super(tb); } //{{{ buildGUI //############################################################################## protected void buildGUI() { dialog = new JDialog(kMain.getTopWindow(), "Loops", false); //lowNumField = new JTextField("", 5); //highNumField = new JTextField("", 5); //listModel = new DefaultListModel(); //keptList = new JList(listModel); ///keepButton = new JButton(new ReflectiveAction("Keep!", null, this, "onKeep")); //delButton = new JButton(new ReflectiveAction("Delete rest!", null, this, "onDelete")); //removeButton = new JButton(new ReflectiveAction("Remove last", null, this, "onRemove")); openButton = new JButton(new ReflectiveAction("Open file", null, this, "onOpenFile")); JLabel label = new JLabel("Number of Residues to dock: "); numResField = new JTextField("8", 5); dockOnStartButton = new JRadioButton("Dock on start of loop", true); dockOnEndButton = new JRadioButton("Dock on end of loop", false); dockOnBothButton = new JRadioButton("Dock on both ends", false); dockOnLoopButton = new JRadioButton("Dock on loop", false); ButtonGroup dockType = new ButtonGroup(); dockType.add(dockOnStartButton); dockType.add(dockOnEndButton); dockType.add(dockOnLoopButton); dockType.add(dockOnBothButton); //delFromFileButton = new JButton(new ReflectiveAction("Delete from file", null, this, "onDeleteFromFile")); //doAllButton = new JButton(new ReflectiveAction("Do ALL from file", null, this, "onDoAll")); pane = new TablePane(); pane.newRow(); //pane.add(lowNumField); //pane.add(highNumField); //pane.add(keepButton); //pane.add(delButton); //pane.newRow().save().hfill(true).vfill(true); //pane.add(new JScrollPane(keptList), 4, 1); //pane.newRow().restore(); //pane.add(removeButton, 2, 1); pane.add(openButton, 1, 1); pane.newRow(); pane.add(dockOnStartButton); pane.add(dockOnEndButton); pane.add(dockOnBothButton); pane.add(dockOnLoopButton); pane.newRow(); pane.add(label); pane.add(numResField); //pane.add(delFromFileButton, 1, 1); //pane.newRow(); //pane.add(doAllButton, 3, 1); dialog.addWindowListener(this); dialog.setContentPane(pane); } //}}} public void start() { //if (kMain.getKinemage() == null) return; buildGUI(); //keptSet = new HashSet(); pdbKeepMap = new HashMap(); startColorMap = new HashMap(); endColorMap = new HashMap(); connect = new ConnectivityFinder(kMain); //bFactorMap = new TreeMap(); //colorator = new RecolorNonRibbon(); show(); } //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make accessory for file chooser TablePane acc = new TablePane(); // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); filechooser.setAccessory(acc); //filechooser.addPropertyChangeListener(this); //filechooser.addChoosableFileFilter(fastaFilter); //filechooser.setFileFilter(fastaFilter); } //}}} public void onOpenFile(ActionEvent ev) { if (filechooser == null) makeFileChooser(); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { try { File f = filechooser.getSelectedFile(); if(f != null && f.exists()) { dialog.setTitle(f.getName()); BufferedReader reader = new BufferedReader(new FileReader(f)); String line; try { while ((line = reader.readLine())!=null) { String[] exploded = Strings.explode(line, ',', false, true); //System.out.print(exploded[0]+ " "); //System.out.println(exploded[1]+ " " + exploded[2]); String pdbName = exploded[0]; pdbName = pdbName.toLowerCase(); //System.out.print(pdbName); //pdbName = pdbName.toLowerCase(); //if (pdbKeepMap.containsKey(pdbName)) { //HashSet value = (HashSet) pdbKeepMap.get(pdbName); //HashSet startSet = (HashSet) startColorMap.get(pdbName); //HashSet endSet = (HashSet) endColorMap.get(pdbName); //keepRange(value, Integer.parseInt(exploded[1])-5, Integer.parseInt(exploded[2])+10); // startSet.add(Integer.parseInt(exploded[1])); //startSet.add(Integer.parseInt(exploded[1])+1); // endSet.add(Integer.parseInt(exploded[2])); // endSet.add(Integer.parseInt(exploded[2])+1); //bFactorMap.put(df.format(Double.parseDouble(exploded[5]))+pdbName, pdbName); //} else { //HashSet value = new HashSet(); //keepRange(value, Integer.parseInt(exploded[1])-5, Integer.parseInt(exploded[2])+10); int start = Integer.parseInt(exploded[1])-8; String fullName = pdbName + Integer.toString(start); //pdbKeepMap.put(fullName, value); //HashSet start = new HashSet(); //HashSet end = new HashSet(); //start.add(Integer.parseInt(exploded[1])); //start.add(Integer.parseInt(exploded[1])+1); //end.add(Integer.parseInt(exploded[2])); //end.add(Integer.parseInt(exploded[2])+1); startColorMap.put(fullName, new Integer(exploded[1])); endColorMap.put(fullName, new Integer(exploded[2])); //bFactorMap.put(df.format(Double.parseDouble(exploded[5]))+pdbName, pdbName); //} } } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } kCanvas.repaint(); // otherwise we get partial-redraw artifacts } } catch(IOException ex) { // includes MalformedURLException JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong map format was chosen, or map is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } } } public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); if (KinUtil.isInteger(numResField.getText())) { int numRestoSuper = Integer.parseInt(numResField.getText()) - 1; if (p != null) { if (refPath != null) { // after a reference has been picked connect.buildAdjacencyList(false); KList list = (KList) p.getParent(); KGroup sub = (KGroup) list.getParent(); KGroup group = (KGroup) sub.getParent(); String pdbID = group.getName().substring(0, 4).toLowerCase(); mobilePoints = connect.mobilityFinder((AbstractPoint)p); Integer minRes = findMinResidue(mobilePoints); Integer ssStart = (Integer) endColorMap.get(pdbID + minRes.toString()); Integer ssEnd = new Integer(ssStart.intValue() + numRestoSuper); if (dockOnStartButton.isSelected()) { ssEnd = (Integer) startColorMap.get(pdbID + minRes.toString()); ssStart = new Integer(ssEnd.intValue() - numRestoSuper); } if (dockOnLoopButton.isSelected()) { ssEnd = (Integer) endColorMap.get(pdbID + minRes.toString()); ssEnd = new Integer(ssEnd.intValue() - 1); ssStart = (Integer) startColorMap.get(pdbID + minRes.toString()); ssStart = new Integer(ssStart.intValue() + 1); } if (dockOnBothButton.isSelected()) { ssEnd = (Integer) startColorMap.get(pdbID + minRes.toString()); ssStart = new Integer(ssEnd.intValue() - numRestoSuper); mobilePath = connect.pathFinder(findPoint(mobilePoints, ssStart), findPoint(mobilePoints, ssEnd)); ssStart = (Integer) endColorMap.get(pdbID + minRes.toString()); ssEnd = new Integer(ssStart.intValue() + numRestoSuper); mobilePath.addAll(connect.pathFinder(findPoint(mobilePoints, ssStart), findPoint(mobilePoints, ssEnd))); } else { //HashSet mobile = connect.mobilityFinder((AbstractPoint)p); mobilePath = connect.pathFinder(findPoint(mobilePoints, ssStart), findPoint(mobilePoints, ssEnd)); } connect.buildAdjacencyList(true); mobilePoints = connect.mobilityFinder((AbstractPoint)p); superimpose(refPath, mobilePath); } else { // picks the reference points connect.buildAdjacencyList(false); KList list = (KList) p.getParent(); KGroup sub = (KGroup) list.getParent(); KGroup group = (KGroup) sub.getParent(); String pdbID = group.getName().substring(0, 4).toLowerCase(); mobilePoints = connect.mobilityFinder((AbstractPoint)p); Integer minRes = findMinResidue(mobilePoints); Integer ssStart = (Integer) endColorMap.get(pdbID + minRes.toString()); //System.out.println(pdbID); //System.out.println(ssStart); Integer ssEnd = new Integer(ssStart.intValue() + numRestoSuper); if (dockOnStartButton.isSelected()) { ssEnd = (Integer) startColorMap.get(pdbID + minRes.toString()); ssStart = new Integer(ssEnd.intValue() - numRestoSuper); } if (dockOnLoopButton.isSelected()) { ssEnd = (Integer) endColorMap.get(pdbID + minRes.toString()); ssEnd = new Integer(ssEnd.intValue() - 1); ssStart = (Integer) startColorMap.get(pdbID + minRes.toString()); ssStart = new Integer(ssStart.intValue() + 1); } if (dockOnBothButton.isSelected()) { ssEnd = (Integer) startColorMap.get(pdbID + minRes.toString()); ssStart = new Integer(ssEnd.intValue() - numRestoSuper); refPath = connect.pathFinder(findPoint(mobilePoints, ssStart), findPoint(mobilePoints, ssEnd)); ssStart = (Integer) endColorMap.get(pdbID + minRes.toString()); ssEnd = new Integer(ssStart.intValue() + numRestoSuper); refPath.addAll(connect.pathFinder(findPoint(mobilePoints, ssStart), findPoint(mobilePoints, ssEnd))); } else { //HashSet mobile = connect.mobilityFinder((AbstractPoint)p); refPath = connect.pathFinder(findPoint(mobilePoints, ssStart), findPoint(mobilePoints, ssEnd)); } } } } } public void superimpose(ArrayList refList, ArrayList mobileList) { // connect.buildAdjacencyList(true); Tuple3[] ref = (Tuple3[])refList.toArray(new Tuple3[refList.size()]); //System.out.println(ref.length); Tuple3[] mob = (Tuple3[])mobileList.toArray(new Tuple3[mobileList.size()]); //System.out.println(mob.length); SuperPoser poser = new SuperPoser(ref, mob); Transform t = poser.superpos(); Kinemage kin = kMain.getKinemage(); if(!t.isNaN() && kin != null) { transform(kin, t); kin.setModified(true); } // Swap which button is selected //if(btnReference.isSelected()) btnMobile.setSelected(true); //else btnReference.setSelected(true); //if(!keepRefBox.isSelected()) { // pkReference.clear(); // btnMobile.setSelected(true); //} //pkMobile.clear(); kCanvas.repaint(); } //{{{ transformAllMobile //############################################################################## private void transform(AGE target, Transform t) { //if(!target.isOn()) return; if(target instanceof KList) { Triple proxy = new Triple(); for(Iterator iter = target.iterator(); iter.hasNext(); ) { KPoint pt = (KPoint)iter.next(); if(mobilePoints.contains(pt)) { proxy.setXYZ(pt.getX(), pt.getY(), pt.getZ()); t.transform(proxy); pt.setX(proxy.getX()); pt.setY(proxy.getY()); pt.setZ(proxy.getZ()); } } } else { for(Iterator iter = target.iterator(); iter.hasNext(); ) transform((AGE)iter.next(), t); } } //}}} public AbstractPoint findPoint(HashSet mobile, Integer searchNum) { Iterator iter = mobile.iterator(); // HashSet alphaPoints = new HashSet(); //AbstractPoint startPoint; while (iter.hasNext()) { AbstractPoint point = (AbstractPoint) iter.next(); int resNum = KinUtil.getResNumber(point.getName().trim()); if (searchNum.intValue() == resNum) { //alphaPoints.add(point); String atom = KinUtil.getAtomName(point.getName().trim()).toUpperCase(); if (atom.equals("CA")) { return point; } } } return null; } public Integer findMinResidue(Collection points) { Iterator iter = points.iterator(); int lowNum = 100000; while (iter.hasNext()) { AbstractPoint point = (AbstractPoint) iter.next(); int resNum = KinUtil.getResNumber(point.getName().trim()); if (resNum < lowNum) { lowNum = resNum; } } return new Integer(lowNum); } //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ //protected Container getToolPanel() //{ return dialog; } public String toString() { return "Loop Docking"; } } king-2.21.120420/extratools/src/king/tool/loops/FramerTool.java0000644000000000000000000003711011531213012022553 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.loops; import king.*; import king.core.*; import king.points.*; import king.tool.util.*; import driftwood.gui.*; import java.util.*; import java.awt.*; import java.awt.event.*; import java.io.*; import javax.swing.*; import java.text.DecimalFormat; //}}} public class FramerTool extends BasicTool { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.000"); //static final DecimalFormat intf = new DecimalFormat("0"); //}}} //{{{ Variable definitions //############################################################### TreeMap caMap; TreeMap oxyMap; //TreeMap cMap; //TreeMap nitMap; TreeMap bfactMap; TreeMap resultsMap; // index is "n" and the element is a map of results HashSet includedPoints; JButton exportButton, doAllButton; JFileChooser filechooser; JTextField lowNumField, highNumField; TablePane pane; //}}} public FramerTool(ToolBox tb) { super(tb); } public void start() { //if (kMain.getKinemage() == null) return; buildGUI(); caMap = new TreeMap(); oxyMap = new TreeMap(); //cMap = new TreeMap(); //nitMap = new TreeMap(); bfactMap = new TreeMap(); includedPoints = new HashSet(); resultsMap = new TreeMap(); show(); } public void reset() { caMap.clear(); oxyMap.clear(); bfactMap.clear(); includedPoints.clear(); resultsMap.clear(); } //{{{ buildGUI //############################################################################## protected void buildGUI() { dialog = new JDialog(kMain.getTopWindow(), "Loops", false); lowNumField = new JTextField("", 5); highNumField = new JTextField("", 5); exportButton = new JButton(new ReflectiveAction("Export!", null, this, "onExport")); doAllButton = new JButton(new ReflectiveAction("Analyze All Files", null, this, "onDoAll")); pane = new TablePane(); pane.newRow(); pane.add(lowNumField); pane.add(highNumField); pane.add(exportButton); pane.add(doAllButton); dialog.addWindowListener(this); dialog.setContentPane(pane); } //}}} public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); if (p != null) { KList parent = (KList) p.getParent(); //while !(parent instanceof Kinemage) { // parent = parent.getParent(); //} //TreeMap caMap = new TreeMap(); //TreeMap oxyMap = new TreeMap(); if (!includedPoints.contains(p)) { splitKin(parent, caMap, oxyMap); } if (KinUtil.isNumeric(lowNumField.getText())&&KinUtil.isNumeric(highNumField.getText())) { /* int numPep = Integer.parseInt(lowNumField.getText()); int resNum = KinUtil.getResNumber(p); KPoint ca0 = (KPoint) caMap.get(new Integer(resNum - 1)); KPoint ca1 = (KPoint) caMap.get(new Integer(resNum)); KPoint caN = (KPoint) caMap.get(new Integer(resNum + numPep)); KPoint caN1 = (KPoint) caMap.get(new Integer(resNum + numPep + 1)); KPoint co1 = (KPoint) oxyMap.get(new Integer(resNum)); KPoint coN = (KPoint) oxyMap.get(new Integer(resNum + numPep)); //System.out.println(ca0); Framer.calphaAnalyze(ca0, ca1, caN, caN1, co1, coN); */ int lowNum = Integer.parseInt(lowNumField.getText()); int highNum = Integer.parseInt(highNumField.getText()); for (int i = lowNum; i <= highNum; i++) { doKin(i); } } else { JOptionPane.showMessageDialog(pane, "You have to put numbers in the text boxes!", "Error", JOptionPane.ERROR_MESSAGE); } } } public void doKin(int numPep) { //int numPep = Integer.parseInt(lowNumField.getText()); Set keys = caMap.keySet(); Iterator iter = keys.iterator(); HashMap oneNResults = new HashMap(); // index is residue "0", and element is ArrayList of the calculations while (iter.hasNext()) { Integer lowInteger = (Integer) iter.next(); int lowNum = lowInteger.intValue(); Integer highNum = new Integer(lowNum + numPep + 2); if (isContinuous(lowInteger, highNum)) { KPoint ca0 = (KPoint) caMap.get(new Integer(lowNum)); KPoint ca1 = (KPoint) caMap.get(new Integer(lowNum + 1)); KPoint caN = (KPoint) caMap.get(new Integer(lowNum + numPep + 1)); KPoint caN1 = (KPoint) caMap.get(new Integer(lowNum + numPep + 2)); KPoint co0 = (KPoint) oxyMap.get(new Integer(lowNum)); KPoint coN = (KPoint) oxyMap.get(new Integer(lowNum + numPep + 1)); //System.out.print(lowNum + " "); ArrayList results = Framer.calphaAnalyzeList(ca0, ca1, caN, caN1, co0, coN); //B-factor Double bfact = (Double) bfactMap.get(new Integer(lowNum)); //System.out.println(bfact); results.add(bfact); //System.out.println(KinUtil.getResNumber(ca0.getName())); //oneNResults.ensureCapacity(KinUtil.getResNumber(ca0.getName())); //oneNResults.add(KinUtil.getResNumber(ca0.getName()), results); oneNResults.put(new Integer(KinUtil.getResNumber(ca0.getName())), results); //plotValues(results[0], results[1], results[2], ca0.getName()); //plotValues(results[3], results[4], results[5], ca0.getName(), ca0.getColor()); } } resultsMap.put(new Integer(numPep), oneNResults); } public void plotValues(double x, double y, double z, String ptID, KPaint color) { Kinemage kin = kMain.getKinemage(); KGroup group = new KGroup("group"); group.setAnimate(true); group.addMaster("Data Points"); kin.add(group); KGroup subgroup = new KGroup("sub"); subgroup.setHasButton(false); group.add(subgroup); KList list = new KList(KList.BALL, "Points"); BallPoint point = new BallPoint(ptID); point.setX(x); point.setY(y); point.setZ(z); point.setColor(color); list.add(point); subgroup.add(list); list.setParent(subgroup); } public boolean isContinuous(Integer lowNum, Integer highNum) { for (int i = lowNum.intValue(); i <= highNum.intValue(); i++) { if (!oxyMap.containsKey(new Integer(i))||!caMap.containsKey(new Integer(i))) { return false; } } return true; } // calculates maximum Bfactor for a given Ca using the ca, c, o, n+1, and ca+1, because framer // is dealing with peptides. public void splitKin(AGE target, TreeMap caMap, TreeMap oxyMap) { //TreeMap caMap = new HashMap(); //TreeMap oxyMap = new HashMap(); if (target instanceof Kinemage) { } if ((target instanceof KList)&&(target.isOn())) { Iterator iter = target.iterator(); while (iter.hasNext()) { KPoint pt = (KPoint) iter.next(); includedPoints.add(pt); int resNum = KinUtil.getResNumber(pt); //System.out.println("resNum = " + resNum); String atomName = KinUtil.getAtomName(pt).toLowerCase(); double bVal = KinUtil.getBvalue(pt); //System.out.print(resNum + " " + bVal + ","); double maxBval = -10000; if (atomName.equals("ca")) { caMap.put(new Integer(resNum), pt); if (bfactMap.containsKey(new Integer(resNum))) maxBval = ((Double) bfactMap.get(new Integer(resNum))).doubleValue(); if (bVal >= maxBval) bfactMap.put(new Integer(resNum), new Double(bVal)); if (bfactMap.containsKey(new Integer(resNum-1))) maxBval = ((Double) bfactMap.get(new Integer(resNum-1))).doubleValue(); if (bVal >= maxBval) bfactMap.put(new Integer(resNum-1), new Double(bVal)); } if (atomName.equals("o")) { oxyMap.put(new Integer(resNum), pt); if (bfactMap.containsKey(new Integer(resNum))) maxBval = ((Double) bfactMap.get(new Integer(resNum))).doubleValue(); if (bVal >= maxBval) bfactMap.put(new Integer(resNum), new Double(bVal)); } if (atomName.equals("n")) { if (bfactMap.containsKey(new Integer(resNum-1))) maxBval = ((Double) bfactMap.get(new Integer(resNum-1))).doubleValue(); if (bVal >= maxBval) bfactMap.put(new Integer(resNum-1), new Double(bVal)); //nitMap.put(new Integer(resNum), pt)); } if (atomName.equals("c")) { if (bfactMap.containsKey(new Integer(resNum))) maxBval = ((Double) bfactMap.get(new Integer(resNum))).doubleValue(); if (bVal >= maxBval) bfactMap.put(new Integer(resNum), new Double(bVal)); //cMap.put(new Integer(resNum), pt); } } } else { Iterator iter = target.iterator(); while (iter.hasNext()) { splitKin((AGE) iter.next(), caMap, oxyMap); } } } //{{{ onExport public void onExport(ActionEvent ev) { //addAllDataPoints(); JFileChooser saveChooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) { saveChooser.setCurrentDirectory(new File(currdir)); } if (saveChooser.APPROVE_OPTION == saveChooser.showSaveDialog(kMain.getTopWindow())) { File f = saveChooser.getSelectedFile(); if( !f.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { saveDataFile(f); } } } //}}} //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make accessory for file chooser TablePane acc = new TablePane(); // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); filechooser.setAccessory(acc); //filechooser.addPropertyChangeListener(this); //filechooser.addChoosableFileFilter(fastaFilter); //filechooser.setFileFilter(fastaFilter); } //}}} //{{{ onDoAll public void onDoAll(ActionEvent ev) { if (filechooser == null) makeFileChooser(); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { //try { File f = filechooser.getSelectedFile(); System.out.println(f.getPath() + " : " + f.getName() + " : " + f.getParent()); File[] allFiles = f.getParentFile().listFiles(); //for (int i = 0; i < allFiles.length; i++) { JFileChooser saveChooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) { saveChooser.setCurrentDirectory(new File(currdir)); } if (saveChooser.APPROVE_OPTION == saveChooser.showSaveDialog(kMain.getTopWindow())) { File saveFile = saveChooser.getSelectedFile(); if( !f.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { doAll(allFiles, saveFile); } } } } //}}} public void doAll(File[] allFiles, File saveFile) { try { //Integer numPep = Integer.valueOf(lowNumField.getText()); Writer w = new FileWriter(saveFile); PrintWriter out = new PrintWriter(new BufferedWriter(w)); for (int i = 0; i < allFiles.length; i++) { File pdbFile = allFiles[i]; if (pdbFile.getName().indexOf(".kin") > -1) { reset(); kMain.getKinIO().loadFile(pdbFile, null); Kinemage kin = kMain.getKinemage(); kin.getMasterByName("mainchain").setOn(true); kin.getMasterByName("Calphas").setOn(false); kin.getMasterByName("rotamer outlie").setOn(false); AGE kage = (KGroup) kin.getChildren().get(0); while (!(kage instanceof KList)) { kage = (AGE) kage.getChildren().get(0); } //KGroup group = (KGroup) kin.getChildAt(0); //KSubgroup sub = (KSubgroup) group.getChildAt(0); KList list = (KList) kage; if (list.getName().equals("mc")) { splitKin(list, caMap, oxyMap); if (KinUtil.isNumeric(lowNumField.getText())&&KinUtil.isNumeric(highNumField.getText())) { int lowNum = Integer.parseInt(lowNumField.getText()); int highNum = Integer.parseInt(highNumField.getText()); for (int numPep = lowNum; numPep <= highNum; numPep++) { doKin(numPep); Iterator diffNiter = resultsMap.values().iterator(); // values are HashMaps of results for a given n. while (diffNiter.hasNext()) { HashMap oneN = (HashMap) diffNiter.next(); TreeSet keys = new TreeSet(oneN.keySet()); // keys are residue number of ca0, the first residue for calc of results Iterator keysIter = keys.iterator(); //out.print(pdbFile.getName().substring(0,4) + ","); while (keysIter.hasNext()) { //out.print(pdbFile.getName().substring(0, 4) + " "); out.print(pdbFile.getName().substring(0,4) + " " + numPep + ","); Integer n = (Integer) keysIter.next(); ArrayList results = (ArrayList) oneN.get(n); out.print(n); Iterator resIter = results.iterator(); while (resIter.hasNext()) { Double value = (Double) resIter.next(); out.print(","); out.print(df.format(value.doubleValue())); //out.print(" "); } out.println(""); } } resultsMap.clear(); } } } else { System.out.println("list not detected in " + pdbFile); } kMain.getTextWindow().setText(""); kMain.getStable().closeCurrent(); } } out.flush(); w.close(); } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } //{{{ saveDataFile public void saveDataFile(File f) { try { Writer w = new FileWriter(f); PrintWriter out = new PrintWriter(new BufferedWriter(w)); //addAllDataPoints(); Kinemage kin = kMain.getKinemage(); String kinName = kin.getName().substring(0,4); Iterator diffNiter = resultsMap.values().iterator(); // values are HashMaps of results for a given n. while (diffNiter.hasNext()) { HashMap oneN = (HashMap) diffNiter.next(); TreeSet keys = new TreeSet(oneN.keySet()); // keys are residue number of ca0, the first residue for calc of results Iterator keysIter = keys.iterator(); while (keysIter.hasNext()) { Integer n = (Integer) keysIter.next(); ArrayList results = (ArrayList) oneN.get(n); out.print(kinName + ","); out.print(n); Iterator resIter = results.iterator(); while (resIter.hasNext()) { Double value = (Double) resIter.next(); //System.out.println(n + " " + value); out.print(","); out.print(df.format(value.doubleValue())); //out.print(" "); } out.println(""); /* //ArrayList list = (ArrayList) iter.next(); //ListIterator listIter = list.listIterator(); while (listIter.hasNext()) { int n = listIter.nextIndex(); ArrayList results = (ArrayList) listIter.next(); out.print(n); //out.print(" "); Iterator resIter = results.iterator(); while (resIter.hasNext()) { Double value = (Double) resIter.next(); out.print(" "); out.print(value); //out.print(" "); }*/ //AbstractPoint point = (AbstractPoint) iter.next(); //out.print(df.format(point.getZ())); //out.print(" "); //out.print(intf.format(point.getX())); //out.print(" "); //out.println(intf.format(point.getY())); } } out.flush(); w.close(); } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return dialog; } public String toString() { return "Framer Tool"; } //}}} }//class king-2.21.120420/extratools/src/king/tool/loops/LoopTool.java0000644000000000000000000003536111531213012022256 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.loops; import king.*; import king.core.*; import king.points.*; import java.net.*; import java.util.*; import java.io.*; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.text.DecimalFormat; import driftwood.util.*; import driftwood.gui.*; import king.tool.util.KinUtil; //}}} public class LoopTool extends BasicTool { //{{{ Constants static final DecimalFormat df = new DecimalFormat("00.0"); //}}} //{{{ Variable definitions //############################################################################## HashSet keptSet; HashMap startColorMap, endColorMap; HashMap pdbKeepMap; // full name -> hashset of integers to keep HashMap pdbMultiLoopMap; // full name (pdbName + startResidue#) -> pdbName HashMap chainMap; // fullName -> chainID TreeMap bFactorMap; // bfactor + pdbName -> fullName (to do files in order of bfactor) JButton delButton, keepButton, removeButton, openButton, delFromFileButton, doAllButton; JTextField lowNumField, highNumField; TablePane pane; JList keptList; DefaultListModel listModel; JFileChooser filechooser; //}}} //{{{ Constructor(s) public LoopTool(ToolBox tb) { super(tb); //buildGUI(); } //}}} //{{{ buildGUI //############################################################################## protected void buildGUI() { dialog = new JDialog(kMain.getTopWindow(), "Loops", false); lowNumField = new JTextField("", 5); highNumField = new JTextField("", 5); listModel = new DefaultListModel(); keptList = new JList(listModel); keepButton = new JButton(new ReflectiveAction("Keep!", null, this, "onKeep")); delButton = new JButton(new ReflectiveAction("Delete rest!", null, this, "onDelete")); removeButton = new JButton(new ReflectiveAction("Remove last", null, this, "onRemove")); openButton = new JButton(new ReflectiveAction("Open CSV file", null, this, "onOpenFile")); delFromFileButton = new JButton(new ReflectiveAction("Delete from file", null, this, "onDeleteFromFile")); doAllButton = new JButton(new ReflectiveAction("Do ALL from file", null, this, "onDoAll")); pane = new TablePane(); pane.newRow(); pane.add(lowNumField); pane.add(highNumField); pane.add(keepButton); pane.add(delButton); pane.newRow().save().hfill(true).vfill(true); pane.add(new JScrollPane(keptList), 4, 1); pane.newRow().restore(); pane.add(removeButton, 2, 1); pane.add(openButton, 1, 1); pane.add(delFromFileButton, 1, 1); pane.newRow(); pane.add(doAllButton, 3, 1); dialog.addWindowListener(this); dialog.setContentPane(pane); } //}}} //{{{ start public void start() { //if (kMain.getKinemage() == null) return; buildGUI(); keptSet = new HashSet(); pdbKeepMap = new HashMap(); startColorMap = new HashMap(); endColorMap = new HashMap(); bFactorMap = new TreeMap(); pdbMultiLoopMap = new HashMap(); chainMap = new HashMap(); //colorator = new RecolorNonRibbon(); show(); } //}}} //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make accessory for file chooser TablePane acc = new TablePane(); // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); filechooser.setAccessory(acc); //filechooser.addPropertyChangeListener(this); //filechooser.addChoosableFileFilter(fastaFilter); //filechooser.setFileFilter(fastaFilter); } //}}} //{{{ onOpenFile public void onOpenFile(ActionEvent ev) { if (filechooser == null) makeFileChooser(); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { try { File f = filechooser.getSelectedFile(); if(f != null && f.exists()) { dialog.setTitle(f.getName()); BufferedReader reader = new BufferedReader(new FileReader(f)); String line; try { while ((line = reader.readLine())!=null) { String[] exploded = Strings.explode(line, ',', false, true); String pdbName = exploded[0]; pdbName = pdbName.toLowerCase(); HashSet value = new HashSet(); //keepRange(value, Integer.parseInt(exploded[1])-8, Integer.parseInt(exploded[2])+8); //int startRes = Integer.parseInt(exploded[1])-8; keepRange(value, Integer.parseInt(exploded[1]), Integer.parseInt(exploded[2])); int startRes = Integer.parseInt(exploded[1]); String fullName = pdbName + "-" + Integer.toString(startRes); //HashSet fullSet = new HashSet(); //fullSet.add(fullName); pdbMultiLoopMap.put(fullName, pdbName); pdbKeepMap.put(fullName, value); HashSet start = new HashSet(); HashSet end = new HashSet(); if (startColorMap.containsKey(pdbName)) { start = (HashSet) startColorMap.get(pdbName); end = (HashSet) endColorMap.get(pdbName); } int loopStart = Integer.parseInt(exploded[1]); int loopEnd = Integer.parseInt(exploded[2]); for (int i = loopStart-8; i <= loopStart; i++) { int resToColor = i; start.add(new Integer(resToColor)); //start.add(new Integer(exploded[1])); } //start.add(new Integer(Integer.parseInt(exploded[1])+1)); for (int i = loopEnd; i <= loopEnd + 8; i++) { int resToColor = i; end.add(new Integer(resToColor)); //end.add(new Integer(exploded[2])); } //end.add(new Integer(Integer.parseInt(exploded[2])+1)); startColorMap.put(pdbName, start); endColorMap.put(pdbName, end); bFactorMap.put(df.format(Double.parseDouble(exploded[5]))+pdbName, fullName); String chainID = exploded[3].toLowerCase(); chainMap.put(fullName, chainID); //} } } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } kCanvas.repaint(); // otherwise we get partial-redraw artifacts } } catch(IOException ex) { // includes MalformedURLException JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong map format was chosen, or map is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ onDoAll public void onDoAll(ActionEvent ev) { if (filechooser == null) makeFileChooser(); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { //try { File f = filechooser.getSelectedFile(); System.out.println(f.getPath() + " : " + f.getName() + " : " + f.getParent()); File[] allFiles = f.getParentFile().listFiles(); File saveLoc = new File(f.getParentFile(), "loops"); HashMap fileMap = new HashMap(); for (int i = 0; i < allFiles.length; i++) { File pdbFile = allFiles[i]; String pdbName = pdbFile.getName().substring(0,4).toLowerCase(); fileMap.put(pdbName, pdbFile); //System.out.println(pdbFile.getPath() + " : " + pdbName + " : " + pdbFile.getParent()); //System.out.println(pdbKeepMap.containsKey(pdbName.toLowerCase())); } Collection values = bFactorMap.values(); Iterator iter = values.iterator(); while (iter.hasNext()) { String fullName = (String) iter.next(); String pdbName = (String) pdbMultiLoopMap.get(fullName); HashSet keepSet = (HashSet) pdbKeepMap.get(fullName); //System.out.println(pdbName); //System.out.println(fullName); File pdbFile = (File) fileMap.get(pdbName); //if (pdbKeepMap.containsKey(pdbName)) { //System.out.println(pdbFile); kMain.getKinIO().loadFile(pdbFile, null); System.out.println(pdbFile.getPath()); //onDeleteFromFile(ev); deleteFromFile(keepSet, pdbName); kMain.getKinIO().saveFile(new File(saveLoc, fullName + ".kin")); kMain.getTextWindow().setText(""); kMain.getStable().closeCurrent(); } //} //catch(IOException ex) { // includes MalformedURLException // JOptionPane.showMessageDialog(kMain.getTopWindow(), // "An I/O error occurred while loading the file:\n"+ex.getMessage(), // "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); //} catch(IllegalArgumentException ex) { //JOptionPane.showMessageDialog(kMain.getTopWindow(), // "Wrong map format was chosen, or map is corrupt:\n"+ex.getMessage(), // "Sorry!", JOptionPane.ERROR_MESSAGE); //ex.printStackTrace(SoftLog.err); //} } } //}}} //{{{ onKeep public void onKeep(ActionEvent ev) { if (KinUtil.isNumeric(lowNumField.getText())&&(KinUtil.isNumeric(highNumField.getText()))) { int firstNum = Integer.parseInt(lowNumField.getText()); int secondNum = Integer.parseInt(highNumField.getText()); if (firstNum > secondNum) { int temp = secondNum; secondNum = firstNum; firstNum = temp; } //for (int i = firstNum; i <= secondNum; i++) { // keptSet.add(new Integer(i)); //} keepRange(keptSet, firstNum, secondNum); listModel.addElement(Integer.toString(firstNum) + " to " + Integer.toString(secondNum)); } else { JOptionPane.showMessageDialog(pane, "You have to put numbers in the text boxes!", "Error", JOptionPane.ERROR_MESSAGE); } } private void keepRange(HashSet keepSet, int firstNum, int secondNum) { for (int i = firstNum; i <= secondNum; i++) { keepSet.add(new Integer(i)); } //listModel.addElement(Integer.toString(firstNum) + " to " + Integer.toString(secondNum)); } //}}} //{{{ onDeleteFromFile public void onDeleteFromFile(ActionEvent ev) { String pdbName = kMain.getKinemage().atPdbfile.substring(0, 4).toLowerCase(); if (pdbKeepMap.containsKey(pdbName)) { HashSet keepSet = (HashSet) pdbKeepMap.get(pdbName); delete(kMain.getKinemage(), keepSet); recolor(kMain.getKinemage(), (HashSet) startColorMap.get(pdbName), KPalette.lime); recolor(kMain.getKinemage(), (HashSet) endColorMap.get(pdbName), KPalette.red); rename(kMain.getKinemage(), pdbName); } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), "This PDB file name was not found in the reference file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } kCanvas.repaint(); } //}}} //{{{ deleteFromFile public void deleteFromFile(HashSet keepSet, String pdbName) { //String pdbName = kMain.getKinemage().atPdbfile.substring(0, 4).toLowerCase(); //if (pdbMultiLoopMap.containsKey(pdbName)) { delete(kMain.getKinemage(), keepSet); //recolor(kMain.getKinemage(), (HashSet) startColorMap.get(pdbName), KPalette.green); //recolor(kMain.getKinemage(), (HashSet) endColorMap.get(pdbName), KPalette.red); rename(kMain.getKinemage(), pdbName); //} else { // JOptionPane.showMessageDialog(kMain.getTopWindow(), // "This PDB file name was not found in the reference file.", // "Sorry!", JOptionPane.ERROR_MESSAGE); //} kCanvas.repaint(); } //}}} //{{{ onDelete public void onDelete(ActionEvent ev) { //currently assuming kins formatted as lots. delete(kMain.getKinemage(), keptSet); //recolor(kMain.getKinemage(), startColor kCanvas.repaint(); } //}}} //{{{ onRemove public void onRemove(ActionEvent ev) { //if(kept.size() > 0) tupleList.remove(tupleList.size()-1); if(listModel.size() > 0) { String last = (String) listModel.get(listModel.size()-1); listModel.remove(listModel.size()-1); String[] limits = last.split(" to "); int firstNum = Integer.parseInt(limits[0]); int secondNum = Integer.parseInt(limits[1]); for (int i = firstNum; i <= secondNum; i++) { keptSet.remove(new Integer(i)); } } //if(markList.children.size() > 0) markList.children.remove(markList.children.size()-1); } //}}} //{{{ rename private void rename(AGE target, String addOn) { KIterator points = KIterator.allPoints(target); for (KPoint pt : points) { pt.setName(pt.getName() + " " + addOn); } } //}}} //{{{ recolor private void recolor(AGE target, HashSet colorSet, KPaint color) { KIterator points = KIterator.allPoints(target); for (KPoint pt : points) { int resNum = KinUtil.getResNumber(pt); if (colorSet.contains(new Integer(resNum))) { pt.setColor(color); } } } //}}} //{{{ delete private void delete(AGE target, HashSet keepSet) { if (target instanceof Kinemage) { if (target != null) ((Kinemage)target).setModified(true); } KIterator points = KIterator.allPoints(target); for (KPoint pt : points) { int resNum = KinUtil.getResNumber(pt); String ptChain = KinUtil.getChainID(pt).toLowerCase(); if ((!keepSet.contains(new Integer(resNum)))){//||(!chainID.equals(ptChain))) { points.remove(); } else if ((keepSet.contains(new Integer(resNum)))&&(!keepSet.contains(new Integer(resNum-1)))) { if (pt instanceof VectorPoint) { VectorPoint vpoint = (VectorPoint) pt; KPoint prev = vpoint.getPrev(); if (prev instanceof KPoint) { if (!keepSet.contains(new Integer(KinUtil.getResNumber(prev)))) { vpoint.setPrev(null); } } } } } } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return dialog; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#loop-tool"; } public String toString() { return "Extract loop tool"; } //}}} } king-2.21.120420/extratools/src/king/tool/loops/LoopRmsdTool.java0000644000000000000000000001615511531213012023104 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.loops; import king.*; import king.core.*; import driftwood.gui.*; import driftwood.util.*; import java.io.*; import java.util.*; import javax.swing.*; import javax.swing.event.*; import java.awt.*; import java.awt.event.*; //}}} public class LoopRmsdTool extends BasicTool implements ChangeListener { //{{{ Constants //}}} //{{{ Variable JFileChooser filechooser; ArrayList>> rmsdMapsList = null; ArrayList offLoops; TablePane2 pane; HighLowSliders[] sliders; //JSlider[] lowSliders; //JSlider[] highSliders; //}}} //{{{ Constructors public LoopRmsdTool(ToolBox tb) { super(tb); } //}}} //{{{ start public void start() { offLoops = new ArrayList(); openFile(); buildGUI(); show(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { dialog = new JDialog(kMain.getTopWindow(), "Loop Rmsd Plugin", false); pane = new TablePane2(); //lowSliders = new JSlider[rmsdMapsList.size()]; //highSliders = new JSlider[rmsdMapsList.size()]; sliders = new HighLowSliders[rmsdMapsList.size()]; for (int i = 0; i < rmsdMapsList.size(); i++) { TreeMap> map = rmsdMapsList.get(i); int lowValue = (int) Math.floor((map.firstKey()).doubleValue()); int highValue = (int) Math.ceil((map.lastKey()).doubleValue()); sliders[i] = new HighLowSliders(lowValue, highValue, 100); sliders[i].setMajorTickSpacing(5); sliders[i].setPaintTicks(true); //lowSliders[i] = new JSlider(lowValue * 100, highValue * 100, lowValue * 100); //lowSliders[i].setMajorTickSpacing(500); //lowSliders[i].setPaintTicks(true); //lowSliders[i].setPaintLabels(true); //highSliders[i] = new JSlider(lowValue * 100, highValue * 100, highValue * 100); //highSliders[i].setMajorTickSpacing(500); //highSliders[i].setPaintTicks(true); //highSliders[i].setPaintLabels(true); sliders[i].addChangeListener(this); pane.add(sliders[i].getLowSlider()); pane.add(sliders[i].getHighSlider()); pane.newRow(); pane.add(sliders[i].getLowLabel()); pane.add(sliders[i].getHighLabel()); pane.newRow(); } dialog.addWindowListener(this); dialog.setContentPane(pane); } //}}} //{{{ stateChanged public void stateChanged(ChangeEvent ev) { //JSlider source = (JSlider) ev.getSource(); //System.out.println(source.toString() + ": " + source.getValue() / 100); offLoops.clear(); for (int i = 0; i < sliders.length; i++) { HighLowSliders hls = sliders[i]; hls.stateChanged(ev); calcOffLoopNums(hls, rmsdMapsList.get(i)); } turnOffLoops(); //System.out.println(offLoops.size()); } //}}} //{{{ calcOffLoopNums public void calcOffLoopNums(HighLowSliders hls, TreeMap> map) { Double lowVal = new Double(hls.getLowValue()); Double highVal = new Double(hls.getHighValue()); SortedMap headMap = map.headMap(lowVal); Collection headVals = headMap.values(); for (ArrayList loopNums : headVals) { offLoops.addAll(loopNums); } SortedMap tailMap = map.tailMap(highVal); Collection tailVals = tailMap.values(); for (ArrayList loopNums : tailVals) { offLoops.addAll(loopNums); } } //}}} //{{{ turnOffLoops public void turnOffLoops() { Kinemage kin = kMain.getKinemage(); if (kin != null) { ArrayList groups = kin.getChildren(); for (int i = 0; i < groups.size(); i++) { KGroup group = groups.get(i); //int loopInt = loopNum.intValue(); Integer currNum = new Integer(i + 1); //cause of index starting at 0 if (offLoops.contains(currNum)) { group.setOn(false); } else { group.setOn(true); } } } } //}}} //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make accessory for file chooser TablePane acc = new TablePane(); // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); filechooser.setAccessory(acc); } //}}} //{{{ openFile //################################################################################################## public void openFile() { // Create file chooser on demand if(filechooser == null) makeFileChooser(); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { try { File f = filechooser.getSelectedFile(); if(f != null && f.exists()) { //dialog.setTitle(f.getName()); BufferedReader reader = new BufferedReader(new FileReader(f)); String line; while ((line = reader.readLine()) != null) { String[] splitLine = Strings.explode(line, " ".charAt(0), false, true); if (rmsdMapsList == null) { rmsdMapsList = new ArrayList>>(); for (int i = 0; i < splitLine.length - 1; i++) { TreeMap> map = new TreeMap>(); rmsdMapsList.add(map); } } Integer loopNum = Integer.parseInt(splitLine[0]); for (int i = 1; i < splitLine.length; i++) { Double value = Double.parseDouble(splitLine[i]); TreeMap> map = rmsdMapsList.get(i-1); ArrayList listofLoopNums = null; if (map.containsKey(value)) { listofLoopNums = map.get(value); listofLoopNums.add(loopNum); } else { listofLoopNums = new ArrayList(); listofLoopNums.add(loopNum); map.put(value, listofLoopNums); } //System.out.print(value); } } reader.close(); } } catch (IOException ie) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ie.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); } } } //}}} //{{{ getHelpAnchor, toString //################################################################################################## public String getHelpAnchor() { return null; } public Container getToolPanel() { return dialog; } public String toString() { return "Read-in RMSD file"; } //}}} } king-2.21.120420/extratools/src/king/tool/loops/HighLowSliders.java0000644000000000000000000000525511531213012023375 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.loops; import java.text.*; import javax.swing.*; import javax.swing.event.*; //}}} public class HighLowSliders { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.00"); //}}} //{{{ Variables JSlider lowSlider; JLabel lowLabel; JSlider highSlider; JLabel highLabel; int multiplier; //}}} //{{{ Constructor public HighLowSliders(int lowVal, int highVal, int mult) { multiplier = mult; lowSlider = new JSlider(lowVal * mult, highVal * mult, lowVal * mult); lowLabel = new JLabel(df.format((double)lowVal)); highSlider = new JSlider(lowVal * mult, highVal * mult, highVal * mult); highLabel = new JLabel(df.format((double)highVal)); } //}}} //{{{ addChangeListener public void addChangeListener(ChangeListener l) { lowSlider.addChangeListener(l); highSlider.addChangeListener(l); } //}}} //{{{ contains public boolean contains(JSlider slider) { return (slider.equals(lowSlider)||slider.equals(highSlider)); } //}}} //{{{ stateChanged public void stateChanged(ChangeEvent ev) { JSlider source = (JSlider) ev.getSource(); if (source.equals(lowSlider)) { int val = lowSlider.getValue(); if (val > highSlider.getValue()) { highSlider.setValue(val); } updateLabels(); } if (source.equals(highSlider)) { int val = highSlider.getValue(); if (val < lowSlider.getValue()) { lowSlider.setValue(val); } updateLabels(); } } //}}} //{{{ updateLabels public void updateLabels() { lowLabel.setText(df.format(((double)lowSlider.getValue()) / multiplier)); highLabel.setText(df.format(((double)highSlider.getValue()) / multiplier)); } //}}} //{{{ set Functions public void setMajorTickSpacing(int n) { lowSlider.setMajorTickSpacing(n * multiplier); highSlider.setMajorTickSpacing(n * multiplier); } public void setPaintTicks(boolean b) { lowSlider.setPaintTicks(b); highSlider.setPaintTicks(b); } //}}} //{{{ get functions public JSlider getLowSlider() { return lowSlider; } public JSlider getHighSlider() { return highSlider; } public JLabel getLowLabel() { return lowLabel; } public JLabel getHighLabel() { return highLabel; } public double getLowValue() { return ((double)lowSlider.getValue()) / multiplier; } public double getHighValue() { return ((double)highSlider.getValue()) / multiplier; } //}}} } king-2.21.120420/extratools/src/king/tool/loops/Framer.java0000644000000000000000000000473411531213012021723 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.loops; import king.*; import king.core.*; import java.util.*; import java.text.DecimalFormat; //import java.awt.*; import driftwood.r3.*; //}}} public class Framer { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.000"); //}}} //{{{ Variable definitions //###################################################### //}}} //{{{ Constructor public Framer() { } //}}} //{{{ calphaAnalyze public static double[] calphaAnalyze(KPoint ca0, KPoint ca1, KPoint caN, KPoint caN1, KPoint co0, KPoint coN) { Triple tripca0 = new Triple(ca0); Triple tripca1 = new Triple(ca1); Triple tripcaN = new Triple(caN); Triple tripcaN1 = new Triple(caN1); Triple tripco0 = new Triple(co0); Triple tripcoN = new Triple(coN); //System.out.println(tripca0.distance(ca1)); //System.out.println(tripca1.distance(caN)); //System.out.println(tripcaN.distance(caN1)); //System.out.println(Triple.angle(tripca0, tripca1, tripcaN)); //System.out.println(Triple.angle(tripca1, tripcaN, tripcaN1)); //System.out.println(Triple.dihedral(tripco1, tripca0, tripca1, tripcaN)); //System.out.println(Triple.dihedral(tripca0, tripca1, tripcaN, tripcaN1)); //System.out.println(Triple.dihedral(tripca1, tripcaN, tripcaN1, tripcoN)); double[] params = new double[6]; params[0] = tripca1.distance(caN); params[1] = Triple.angle(tripca0, tripca1, tripcaN); params[2] = Triple.angle(tripca1, tripcaN, tripcaN1); params[3] = Triple.dihedral(tripco0, tripca0, tripca1, tripcaN); params[4] = Triple.dihedral(tripca0, tripca1, tripcaN, tripcaN1); params[5] = Triple.dihedral(tripca1, tripcaN, tripcaN1, tripcoN); //System.out.print(df.format(params[0]) + " "); //System.out.print(df.format(params[1]) + " "); //System.out.print(df.format(params[2]) + " "); //System.out.print(df.format(params[3]) + " "); //System.out.print(df.format(params[4]) + " "); //System.out.println(df.format(params[5])); return params; } //}}} //{{{ calphaAnalyzelist public static ArrayList calphaAnalyzeList(KPoint ca0, KPoint ca1, KPoint caN, KPoint caN1, KPoint co0, KPoint coN) { double[] results = calphaAnalyze(ca0, ca1, caN, caN1, co0, coN); ArrayList list = new ArrayList(); for (int i = 0; i < results.length; i++) { list.add(new Double(results[i])); } return list; } //}}} } king-2.21.120420/extratools/src/king/tool/loops/PatchGapPlugin.java0000644000000000000000000005521711531213012023357 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.loops; import king.*; import king.core.*; import king.points.*; import king.io.*; import driftwood.gui.*; import driftwood.r3.*; import king.tool.util.*; import king.tool.postkin.*; import driftwood.util.SoftLog; import java.net.*; import java.util.*; import java.io.*; import javax.swing.*; import java.awt.event.*; import java.text.*; import java.util.zip.*; //}}} /** * PatchGapPlugin is a plugin to make it easy to fill gaps in protein structures. * It combines functionality originally made for FramerTool, LoopTool, and the docking tools. * It scans through a protein structure kin for gaps, analyzes the framing peptides of that gap, * searches through my database of loops for matches, finds kins of those matches, and superimposes * them in the kinemage. * Unfortunately it requires both my database (in zip format) of loop frame information, and a directory of * kinemages, both of which are quite large, and would be difficult to distribute... * *

Copyright (C) 2007 by Vincent Chen. All rights reserved. * */ public class PatchGapPlugin extends Plugin { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.000"); //}}} //{{{ Variables TreeMap caMap; TreeMap coMap; TreeMap gapMap; HashMap, ArrayList> filledMap; // gap (oneNum, nNum, frame) -> list of info that matches JFileChooser filechooser = null; ProgressDialog progDiag; KGroup group; //}}} //{{{ Constructors public PatchGapPlugin(ToolBox tb) { super(tb); } //}}} //{{{ initialize public void initialize() { caMap = new TreeMap(); coMap = new TreeMap(); gapMap = new TreeMap(); filledMap = new HashMap, ArrayList>(); progDiag = new ProgressDialog(kMain.getTopWindow(), "Filling gaps...", true); Kinemage kin = kMain.getKinemage(); group = new KGroup("loops"); //newSub = new KGroup("sub"); kin.add(group); //group.add(newSub); makeFileChooser(); } //}}} //{{{ onAnalyzeCurrent public void onAnalyzeCurrent(ActionEvent ev) { initialize(); analyzeSequence(); findGaps(); ArrayList> gapFrames = getGapFrames(); ArrayList datFiles = getLoopDataList(); ArrayList loopKins = findLoopKins(); if (datFiles != null) { long startTime = System.currentTimeMillis(); scanLoopData(datFiles, gapFrames); long endTime = System.currentTimeMillis(); System.out.println((endTime - startTime)/1000 + " seconds to scan dat files"); } scanLoopKins(loopKins); } //}}} //{{{ analyzeSequence public void analyzeSequence() { Kinemage kin = kMain.getKinemage(); KIterator points = KIterator.allPoints(kin); for (KPoint pt : points) { String atomName = KinUtil.getAtomName(pt); //System.out.println(atomName); if (atomName.equals("ca")) { Integer resNum = new Integer(KinUtil.getResNumber(pt)); caMap.put(resNum, pt); } if (atomName.equals("o")) { Integer resNum = new Integer(KinUtil.getResNumber(pt)); coMap.put(resNum, pt); } } //System.out.println(coMap.size()); //System.out.println(caMap.size()); } //}}} //{{{ findGaps public void findGaps() { int oldresNum = 100000; for (Integer i : caMap.keySet()) { int resNum = i.intValue(); if (resNum - 1 > oldresNum) { gapMap.put(new Integer(oldresNum), new Integer(resNum)); } oldresNum = resNum; } } //}}} //{{{ getGapFrames public ArrayList> getGapFrames() { ArrayList> gapFrames = new ArrayList>(); for (Integer oneNum : gapMap.keySet()) { Integer nNum = gapMap.get(oneNum); Integer zeroNum = new Integer(oneNum.intValue() - 1); Integer n1Num = new Integer(nNum.intValue() + 1); if ((caMap.containsKey(zeroNum))&&(caMap.containsKey(oneNum))&& (caMap.containsKey(nNum))&&(caMap.containsKey(n1Num))&& (coMap.containsKey(zeroNum))&&(coMap.containsKey(nNum))) { ArrayList frame = Framer.calphaAnalyzeList(caMap.get(zeroNum), caMap.get(oneNum), caMap.get(nNum), caMap.get(n1Num), coMap.get(zeroNum), coMap.get(nNum)); frame.add(0, new Double(oneNum.doubleValue())); frame.add(1, new Double(nNum.doubleValue())); gapFrames.add(frame); //System.out.print(oneNum + " " + nNum + " "); for (double d : frame) { System.out.print(df.format(d) + " "); } System.out.println(); } } return gapFrames; } //}}} //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make accessory for file chooser TablePane acc = new TablePane(); // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); filechooser.setAccessory(acc); } //}}} //{{{ getLoopDataList public ArrayList getLoopDataList() { //if(filechooser == null) makeFileChooser(); filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); filechooser.setDialogTitle("Pick loop frame data directory"); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { //try { File f = filechooser.getSelectedFile(); File[] datFiles = f.listFiles(); ArrayList dataList = new ArrayList(); for (File dat : datFiles) { if (dat.getName().endsWith(".zip")) { dataList.add(dat); } } return dataList; //} } return null; } //}}} //{{{ scanLoopData public void scanLoopData(ArrayList datFiles, ArrayList> gapFrames) { for (ArrayList gapFrame : gapFrames) { filledMap.put(gapFrame, new ArrayList()); } for (File f : datFiles) { if(f != null && f.exists()) { try { System.out.println("Opening file: " + f.getName()); ZipFile zip = new ZipFile(f); Enumeration entries= zip.entries(); while (entries.hasMoreElements()) { ZipEntry zEntry = (ZipEntry) entries.nextElement(); System.out.println("Scanning: " + zEntry.getName()); LineNumberReader reader = new LineNumberReader(new InputStreamReader(zip.getInputStream(zEntry))); //BufferedReader reader = new BufferedReader(new FileReader(f)); String line; while ((line = reader.readLine()) != null) { //System.out.println(line); String[] split = line.split(","); String[] firstSplit = split[0].split(" "); double lineArray[] = new double[8]; lineArray[1] = Double.parseDouble(firstSplit[1]); for (int i = 2; i < 8; i++) { lineArray[i] = Double.parseDouble(split[i]); } for (ArrayList gapFrame : gapFrames) { if (scanLine(lineArray, gapFrame)) { ArrayList listofMatches = filledMap.get(gapFrame); listofMatches.add(split[0] + " " + split[1]); // should result in pdbname length startResNum } } } } } catch (IOException ie) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ie.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); } } } } //}}} //{{{ scanLine public boolean scanLine(double[] line, ArrayList frame) { //String[] split = stringLine[0].split(" "); // pdbname length boolean inRange = true; //while (inRange) { //if ((frame.get(1) - frame.get(0)) != Double.parseDouble(split[1])) { // inRange = false; //} if ((frame.get(1) - frame.get(0)) != line[1]) { inRange = false; } if ((line[2] >= frame.get(2) + 1)||(line[2] <= frame.get(2) - 1)) { inRange = false; } for (int i = 3; i < frame.size() && inRange; i++) { inRange = checkAngle(frame.get(i), line[i]); //if ((line[i] >= frame.get(i) + 25)||(line[i] <= frame.get(i) - 25)) { // inRange = false; //} } //} return inRange; } //}}} //{{{ checkAngle /** for checking if a value is within a range, taking into account angle wrapping **/ public boolean checkAngle(double frameVal, double lineVal) { if (frameVal > 180 - 25) { //if ((lineVal >= frameVal - 25)||(lineVal <= -360 + 25 + frameVal)) { // System.out.print("Frame: " + frameVal); // System.out.println(" Line: " + lineVal); //} return ((lineVal >= frameVal - 25)||(lineVal <= -360 + 25 + frameVal)); } else if (frameVal < -180 + 25) { return ((lineVal <= frameVal + 25)||(lineVal >= frameVal + 360 - 25)); } else { return ((lineVal <= frameVal + 25)&&(lineVal >= frameVal - 25)); } } //}}} //{{{ findLoopKins public ArrayList findLoopKins() { filechooser.setDialogTitle("Pick source kins data directory"); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { //try { File f = filechooser.getSelectedFile(); File[] kinFiles = f.listFiles(); ArrayList kinList = new ArrayList(); for (File kin : kinFiles) { if ((kin.getName().endsWith(".kin"))||(kin.getName().endsWith(".kin.gz"))) { kinList.add(kin); } } return kinList; //} } return null; } //}}} //{{{ scanLoopKins public void scanLoopKins(ArrayList loopKins) { //ArrayList loopKins = findLoopKins(); //Thread progThread = new Thread(progDiag); //progThread.setDaemon(true); //progThread.start(); for (ArrayList gap : filledMap.keySet()) { KGroup newSub = new KGroup(gap.get(0).intValue() + "-" + gap.get(1).intValue()); group.add(newSub); ArrayList listofFiller = filledMap.get(gap); System.out.println(listofFiller.size()); for (int ind = 0; ((ind < 100000)&&(ind < listofFiller.size())); ind++) { //try { // //Thread.currentThread().sleep(200); //} catch (InterruptedException ex) { // System.out.println(ex); //} //progDiag.update(ind, listofFiller.size()); String info = listofFiller.get(ind); String[] splitInfo = info.split(" "); String pdbName = splitInfo[0]; // should be pdbname int length = Integer.parseInt(splitInfo[1]); int startRes = Integer.parseInt(splitInfo[2]); TreeSet keepSet = new TreeSet(); for (int i = startRes; i <= startRes + length + 2; i++) { keepSet.add(new Integer(i)); } //for (int i = 1; i <= 1000; i++) { // keepSet.add(new Integer(i)); //} //for (int i = startRes + length + 1; i <= 1000; i++) { // keepSet.add(new Integer(i)); //} if (Math.IEEEremainder((double) ind, 100.0) == 0) { System.out.println("Opened: " + ind); } for (File kinFile : loopKins) { if (kinFile.getName().indexOf(pdbName) != -1) { //ArrayList loops = openKin(kinFile, keepSet); ArrayList loops = getLoopFromKin(openKinFile(kinFile), keepSet); KList mc = loops.get(0); SuperPoser poser = new SuperPoser(getGapTupleArray(gap), getListTupleArray(mc)); Transform t = poser.superpos(); //System.out.println(poser.calcRMSD(t)); for (KList loop : loops) { loop.setHasButton(false); transform(loop, t); newSub.add(loop); } } } //progDiag.dispose(); } } } //}}} //{{{ openKinFile public KinfileParser openKinFile(File f) { //System.out.println("Opening " + f.getName()); KinfileParser parser = new KinfileParser(); try { FileInputStream fileIS = new FileInputStream(f); LineNumberReader lnr; //parser = new KinfileParser(); // Test for GZIPped files InputStream input = new BufferedInputStream(fileIS); input.mark(10); if(input.read() == 31 && input.read() == 139) { // We've found the gzip magic numbers... input.reset(); input = new GZIPInputStream(input); } else input.reset(); lnr = new LineNumberReader(new InputStreamReader(input)); parser.parse(lnr); lnr.close(); fileIS.close(); //return parser; } catch (IOException ioe) { System.out.println(ioe); JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while opening the file: " + f.getName(), "Sorry!", JOptionPane.ERROR_MESSAGE); } return parser; } //}}} //{{{ getLoopFromKin public ArrayList getLoopFromKin(KinfileParser parser, TreeSet keepSet) { //kMain.getKinIO().loadFile(f, null); ArrayList kins = new ArrayList(parser.getKinemages()); Kinemage kin = kins.get(0); KIterator points = KIterator.allPoints(kin); for (KPoint pt : points) { int resNum = KinUtil.getResNumber(pt); //String ptChain = KinUtil.getChainID(pt).toLowerCase(); if ((!keepSet.contains(new Integer(resNum)))||(!(pt instanceof VectorPoint))){//||(!chainID.equals(ptChain))) { points.remove(); } else { String name = pt.getName(); pt.setName(name + keepSet.first().toString()); //temp fix to pdb export putting loops from same pdb together } if ((keepSet.contains(new Integer(resNum)))&&(!keepSet.contains(new Integer(resNum-1)))) { if (pt instanceof VectorPoint) { VectorPoint vpoint = (VectorPoint) pt; //String name = vpoint.getName(); //System.out.println(name); //System.out.print(keepSet.first().toString()); //vpoint.setName(name + keepSet.first().toString()); //temp fix to pdb export putting loops from same pdb together KPoint prev = vpoint.getPrev(); if (prev instanceof KPoint) { if (!keepSet.contains(new Integer(KinUtil.getResNumber(prev)))) { vpoint.setPrev(null); } } } } } //Kinemage kin = kMain.getKinemage(); removeExtraAtoms(kin, keepSet); KIterator lists = KIterator.allLists(kin.getChildren().get(0)); try { ArrayList listofLists = new ArrayList(); for (KList list : lists) { listofLists.add((KList) list.clone()); } //KList clone = (KList) lists.next().clone(); //kMain.getStable().closeCurrent(); kMain.getTextWindow().setText(""); return listofLists; //kMain.getStable().changeCurrentKinemage(1); //newSub.add(clone); } catch (CloneNotSupportedException e) { } //kMain.getStable().changeCurrentKinemage(2); //kMain.getStable().closeCurrent(); return null; } //}}} //{{{ removeExtraAtoms public void removeExtraAtoms(Kinemage kin, TreeSet keepSet) { KIterator points = KIterator.allPoints(kin); int first = keepSet.first().intValue(); int last = keepSet.last().intValue(); for (KPoint pt : points) { int resNum = KinUtil.getResNumber(pt); String atomName = KinUtil.getAtomName(pt); if ((atomName.equals("n"))&&(resNum == first)) points.remove(); if ((atomName.equals("h"))&&(resNum == first)) points.remove(); if ((atomName.equals("ca"))&&(resNum == first)) pt.setPrev(null); if ((atomName.equals("c"))&&(resNum == last)) points.remove(); if ((atomName.equals("o"))&&(resNum == last)) points.remove(); } } //}}} //{{{ getListTupleArray public Tuple3[] getListTupleArray(KList list) { TreeMap listcaMap = new TreeMap(); TreeMap listcoMap = new TreeMap(); KIterator points = KIterator.allPoints(list); for (KPoint pt : points) { String atomName = KinUtil.getAtomName(pt); //System.out.println(atomName); if (atomName.equals("ca")) { Integer resNum = new Integer(KinUtil.getResNumber(pt)); listcaMap.put(resNum, pt); } if (atomName.equals("o")) { Integer resNum = new Integer(KinUtil.getResNumber(pt)); listcoMap.put(resNum, pt); } } int zeroNum = listcaMap.firstKey().intValue(); int oneNum = zeroNum + 1; int n1Num = listcaMap.lastKey().intValue(); int nNum = n1Num - 1; Tuple3[] tuples = new Tuple3[4]; //tuples[0] = listcoMap.get(new Integer(zeroNum)); tuples[0] = listcaMap.get(new Integer(zeroNum)); tuples[1] = listcaMap.get(new Integer(oneNum)); tuples[2] = listcaMap.get(new Integer(nNum)); tuples[3] = listcaMap.get(new Integer(n1Num)); //tuples[5] = listcoMap.get(new Integer(nNum)); return tuples; } //}}} //{{{ getGapTupleArray public Tuple3[] getGapTupleArray(ArrayList gap) { int oneNum = gap.get(0).intValue(); int nNum = gap.get(1).intValue(); Tuple3[] tuples = new Tuple3[4]; //tuples[0] = coMap.get(new Integer(oneNum - 1)); tuples[0] = caMap.get(new Integer(oneNum - 1)); tuples[1] = caMap.get(new Integer(oneNum)); tuples[2] = caMap.get(new Integer(nNum)); tuples[3] = caMap.get(new Integer(nNum + 1)); //tuples[5] = coMap.get(new Integer(nNum)); return tuples; } //}}} //{{{ transform public void transform(KList list, Transform t) { KIterator points = KIterator.allPoints(list); for (KPoint pt : points) { Triple proxy = new Triple(); proxy.setXYZ(pt.getX(), pt.getY(), pt.getZ()); t.transform(proxy); pt.setX(proxy.getX()); pt.setY(proxy.getY()); pt.setZ(proxy.getZ()); } } //}}} //{{{ onExport public void onExport(ActionEvent ev) { JFileChooser saveChooser = new JFileChooser(); saveChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); saveChooser.setDialogTitle("Pick pdb output directory"); String currdir = System.getProperty("user.dir"); if(currdir != null) { saveChooser.setCurrentDirectory(new File(currdir)); } if (saveChooser.APPROVE_OPTION == saveChooser.showSaveDialog(kMain.getTopWindow())) { File f = saveChooser.getSelectedFile(); savePdb(f); } } //}}} //{{{ savePdb /** * First sorts the loop group by the PDB structures the loops came from, doing subgroups separately. * Then it saves a pdb file for each subgroup, putting the loops into different models. **/ public void savePdb(File f) { Iterator groups = kMain.getKinemage().iterator(); while (groups.hasNext()) { KGroup tempGroup = (KGroup) groups.next(); if (tempGroup.getName().equals("loops")) { group = tempGroup; } } Iterator subs = group.iterator(); while (subs.hasNext()) { KGroup sub = (KGroup) subs.next(); HashMap groupMap = new HashMap(); KIterator lists = KIterator.allLists(sub); for (KList list : lists) { KPoint pt = list.getChildren().get(0); String pdbName = KinUtil.getPdbName(pt.getName()); //System.out.println(pdbName); if (pdbName != null) { if (groupMap.containsKey(pdbName)) { KGroup pdbGroup = groupMap.get(pdbName); pdbGroup.add(list); } else { KGroup pdbGroup = new KGroup(""); pdbGroup.add(list); groupMap.put(pdbName, pdbGroup); } } } File pdbout = new File(f, sub.getName() + ".pdb"); if( !pdbout.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "The file " + pdbout.toString() + " exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { try { Writer w = new FileWriter(pdbout); PrintWriter out = new PrintWriter(new BufferedWriter(w)); int i = 1; for (String pdbName : groupMap.keySet()) { //KIterator pts = KIterator.allPoints(groupMap.get(pdbName)); //int counter = 0; //for (KPoint pt : pts) { // counter++; //} //System.out.println(counter); out.println("MODEL " + Kinimol.formatStrings(Integer.toString(i), 4)); out.print(Kinimol.convertGrouptoPdb(groupMap.get(pdbName), pdbName)); out.println("ENDMDL"); i++; } out.flush(); w.close(); } catch (IOException ex) { System.out.println(ex); JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } } } //}}} //{{{ getToolsMenuItem public JMenuItem getToolsMenuItem() { JMenu menu = new JMenu("Fill Model Gaps"); menu.add(new JMenuItem(new ReflectiveAction("Analyze Gaps", null, this, "onAnalyzeCurrent"))); menu.add(new JMenuItem(new ReflectiveAction("Export Loops", null, this, "onExport"))); return menu; } public String toString() { return "Fill Model Tool"; } //}}} /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#fillgap-tool"; } }//class king-2.21.120420/extratools/src/king/tool/movie/0000755000000000000000000000000011744306102017630 5ustar rootrootking-2.21.120420/extratools/src/king/tool/movie/RockBackAndForthScene.java0000644000000000000000000000655111531213002024553 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.movie; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; //}}} /** * RockBackAndForthScene implements rocking about the Y axis. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Mon Jan 15 13:13:33 EST 2007 */ public class RockBackAndForthScene extends Scene { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.#"); //}}} //{{{ Variable definitions //############################################################################## double degrees; TablePane2 cp; JTextField tfDegrees, tfDuration; //}}} //{{{ Constructor(s) //############################################################################## public RockBackAndForthScene(KingMain kMain, int duration, double degrees) { super(kMain, duration); captureKinemageState(); this.degrees = degrees; } //}}} //{{{ renderFrames, toString //############################################################################## public void renderFrames(MovieMaker maker) throws IOException { restoreKinemageState(); KView startView = kMain.getView(); for(int i = 0; i < duration; i++) { KView nextView = (KView) startView.clone(); nextView.rotateY((float)(Math.toRadians(degrees) * Math.sin(2*Math.PI*i / duration))); kMain.setView(nextView); maker.writeFrame(); } } public String toString() { return "Rock ("+duration+" frames, "+df.format(degrees)+" degrees)"; } //}}} //{{{ configure //############################################################################## public boolean configure() { if(cp == null) { tfDegrees = new JTextField(); tfDegrees.setText(df.format(degrees)); tfDuration = new JTextField(); tfDuration.setText(Integer.toString(duration)); cp = new TablePane2().hfill(true).memorize(); cp.addCell(new JLabel("Duration (frames):")).addCell(tfDuration).newRow(); cp.addCell(new JLabel("Extent (degrees):")).addCell(tfDegrees).newRow(); } int result = JOptionPane.showConfirmDialog(kMain.getTopWindow(), cp, "Configure Rock", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); if(result == JOptionPane.OK_OPTION) { try { this.duration = Integer.parseInt(tfDuration.getText()); } catch(NumberFormatException ex) { tfDuration.setText(Integer.toString(duration)); } try { this.degrees = Double.parseDouble(tfDegrees.getText()); } catch(NumberFormatException ex) { tfDegrees.setText(df.format(degrees)); } return true; } else return false; } //}}} //{{{ gotoEndState //############################################################################## public void gotoEndState() { restoreKinemageState(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/movie/FlyingCameraScene.java0000644000000000000000000001123611531213002024003 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.movie; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.r3.*; //}}} /** * FlyingCameraScene blends from the previous view to the current view. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Tue Jan 16 10:11:03 EST 2007 */ public class FlyingCameraScene extends Scene { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## TablePane2 cp; JTextField tfDuration; //}}} //{{{ Constructor(s) //############################################################################## public FlyingCameraScene(KingMain kMain, int duration) { super(kMain, duration); captureKinemageState(); } //}}} //{{{ renderFrames, toString //############################################################################## public void renderFrames(MovieMaker maker) throws IOException { KView startView = kMain.getView(); restoreKinemageState(); KView endView = kMain.getView(); for(int i = 0; i < duration; i++) { KView currView = blendViews(startView, endView, (double)i / (double)duration); kMain.setView(currView); maker.writeFrame(); } } public String toString() { return "Fly ("+duration+" frames)"; } //}}} //{{{ blendViews //############################################################################## KView blendViews(KView startV, KView endV, double t) { final double T = 1 - t; KView out = startV.clone(); float[] startC = startV.getCenter(); float[] endC = endV.getCenter(); out.setCenter( (float)(T*startC[0] + t*endC[0]), (float)(T*startC[1] + t*endC[1]), (float)(T*startC[2] + t*endC[2]) ); out.setClip((float)(T*startV.getClip() + t*endV.getClip())); // Exponential blending -- constant speed zoom double startS = startV.getSpan(); double endS = endV.getSpan(); // outS = e^tx * startS // endS = e^x * startS double x = Math.log(endS / startS); out.setSpan((float)(Math.exp(t*x) * startS)); Quaternion startQ = getQuat(startV); Quaternion endQ = getQuat(endV); Quaternion slerpQ = new Quaternion().likeSlerp(startQ, endQ, t); setQuat(out, slerpQ); return out; } private Quaternion getQuat(KView v) { v.compile(); Transform t = new Transform().likeMatrix( v.R11, v.R12, v.R13, v.R21, v.R22, v.R23, v.R31, v.R32, v.R33 ); Quaternion q = new Quaternion().likeRotation(t); return q; } private void setQuat(KView v, Quaternion q) { Transform t = new Transform().likeQuaternion(q); float[][] matrix = new float[][] { {(float)t.get(1,1), (float)t.get(1,2), (float)t.get(1,3)}, {(float)t.get(2,1), (float)t.get(2,2), (float)t.get(2,3)}, {(float)t.get(3,1), (float)t.get(3,2), (float)t.get(3,3)} }; v.setMatrix(matrix); } //}}} //{{{ configure //############################################################################## public boolean configure() { if(cp == null) { tfDuration = new JTextField(); tfDuration.setText(Integer.toString(duration)); cp = new TablePane2().hfill(true).memorize(); cp.addCell(new JLabel("Duration (frames):")).addCell(tfDuration).newRow(); } int result = JOptionPane.showConfirmDialog(kMain.getTopWindow(), cp, "Configure Snapshot", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); if(result == JOptionPane.OK_OPTION) { try { this.duration = Integer.parseInt(tfDuration.getText()); } catch(NumberFormatException ex) { tfDuration.setText(Integer.toString(duration)); } return true; } else return false; } //}}} //{{{ gotoEndState //############################################################################## public void gotoEndState() { restoreKinemageState(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/movie/MovieMaker.java0000644000000000000000000003507411744305704022552 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.movie; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.imageio.*; // J2SE 1.4+ import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.util.ReflectiveRunnable; import java.util.List; import javax.swing.Timer; //}}} /** * MovieMaker has not yet been documented. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Mon Jan 15 10:01:22 EST 2007 */ public class MovieMaker implements ListSelectionListener { //{{{ Constants //}}} //{{{ CLASS: MovieRenderer //############################################################################## /** * Rendering of frames has to be done on the event thread -- no way around it. * Otherwise KinCanvas notices the changing views and tries to redraw at the * same time a background thread is trying to draw to the image file. * This implementation uses a Timer to exectute one scene at a time on * the event thread, with a small break in between. * The break allows the progress dialog to repaint, etc. */ class MovieRenderer implements ActionListener { private Scene[] myScenes; private int whichScene; private ProgressDialog progDlg; private Timer timer; public MovieRenderer() { this.myScenes = scenes.toArray(new Scene[scenes.size()]); this.whichScene = 0; this.progDlg = null; this.timer = new Timer(250, this); timer.setRepeats(false); timer.start(); } /** Always runs on the event dispatch thread! */ public void actionPerformed(ActionEvent ev) { // startup if(progDlg == null) { progDlg = new ProgressDialog(kMain.getTopWindow(), "Rendering movie...", true); progDlg.show(); // non-blocking on this thread timer.start(); return; } // abort if canceled if(progDlg.isCanceled()) { progDlg.dispose(); return; } if(whichScene > 0) myScenes[whichScene-1].gotoEndState(); try { myScenes[whichScene].renderFrames(MovieMaker.this); } catch(IOException ex) { ex.printStackTrace(); } progDlg.update(frameCounter, expectedFrames); whichScene++; // shutdown ... if(whichScene == myScenes.length) { progDlg.dispose(); } // or queue up the next scene else timer.start(); } } //}}} //{{{ Variable definitions //############################################################################## KingMain kMain; int frameCounter = 0, expectedFrames = 0; String movieFilePrefix = null; BufferedImage lastImage = null; List scenes; JList sceneJList; JFileChooser fileChooser; //}}} //{{{ Constructor(s) //############################################################################## public MovieMaker(KingMain kMain) { super(); this.kMain = kMain; this.scenes = new ArrayList(); buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { fileChooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) fileChooser.setCurrentDirectory(new File(currdir)); sceneJList = new FatJList(0, 10); sceneJList.setListData(scenes.toArray()); sceneJList.addListSelectionListener(this); JButton renderBtn = new JButton(new ReflectiveAction("Render movie ...", null, this, "onStartRenderMovie")); JButton btn500x500 = new JButton(new ReflectiveAction("500 x 500", null, this, "onSize500x500")); JButton btn600x400 = new JButton(new ReflectiveAction("600 x 400", null, this, "onSize600x400")); JButton snapshotBtn = new JButton(new ReflectiveAction("+ Snapshot", null, this, "onAddSnapshotScene")); snapshotBtn.setHorizontalAlignment(JButton.LEFT); JButton rockBtn = new JButton(new ReflectiveAction("+ Rock", null, this, "onAddRockScene")); rockBtn.setHorizontalAlignment(JButton.LEFT); JButton spinBtn = new JButton(new ReflectiveAction("+ Spin", null, this, "onAddSpinScene")); spinBtn.setHorizontalAlignment(JButton.LEFT); JButton flyBtn = new JButton(new ReflectiveAction("+ Fly", null, this, "onAddFlyingScene")); flyBtn.setHorizontalAlignment(JButton.LEFT); JButton animateBtn = new JButton(new ReflectiveAction("+ Animate", null, this, "onAddAnimateScene")); animateBtn.setHorizontalAlignment(JButton.LEFT); JButton deleteBtn = new JButton(new ReflectiveAction("- Delete", null, this, "onDeleteScene")); deleteBtn.setHorizontalAlignment(JButton.LEFT); JButton configBtn = new JButton(new ReflectiveAction("Configure ...", null, this, "onConfigureScene")); configBtn.setHorizontalAlignment(JButton.LEFT); TablePane2 cp = new TablePane2(); cp.hfill(true).vfill(true).addCell(new JScrollPane(sceneJList)); cp.startSubtable().hfill(true).memorize(); cp.addCell(snapshotBtn).newRow(); cp.addCell(rockBtn).newRow(); cp.addCell(spinBtn).newRow(); cp.addCell(flyBtn).newRow(); cp.addCell(animateBtn).newRow(); cp.addCell(deleteBtn).newRow(); cp.addCell(configBtn).newRow(); cp.endSubtable(); cp.newRow(); cp.startSubtable(2,1); cp.addCell(btn500x500); cp.addCell(btn600x400); cp.addCell(renderBtn); cp.endSubtable(); JDialog dialog = new JDialog(kMain.getTopWindow(), "Movie Maker", false); dialog.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); dialog.setContentPane(cp); dialog.pack(); dialog.show(); // non-modal: execution continues... } //}}} //{{{ onStartRenderMovie //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onStartRenderMovie(ActionEvent ev) { int result = fileChooser.showSaveDialog(kMain.getTopWindow()); if(result != JFileChooser.APPROVE_OPTION) return; try { File out = fileChooser.getSelectedFile(); this.movieFilePrefix = out.getCanonicalPath(); this.frameCounter = 0; this.expectedFrames = 0; for(Scene scene : this.scenes) expectedFrames += scene.getDuration(); //// This freezes the GUI but is the only thing that seems to work. //for(Scene scene: this.scenes) //{ // scene.renderFrames(this); // scene.gotoEndState(); //} new MovieRenderer(); } catch(IOException ex) { ex.printStackTrace(); } //JOptionPane.showMessageDialog(kMain.getTopWindow(), // "Movie is finished rendering.", "Done!", JOptionPane.INFORMATION_MESSAGE); } //}}} //{{{ onSize500x500, onSize600x400 //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSize500x500(ActionEvent ev) { kMain.getCanvas().setPreferredSize(new Dimension(500, 500)); kMain.getTopWindow().pack(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSize600x400(ActionEvent ev) { kMain.getCanvas().setPreferredSize(new Dimension(600, 400)); kMain.getTopWindow().pack(); } //}}} //{{{ ListSelectionListener.valueChanged //############################################################################## /** * Every time an item is selected in the list, set the kinemage to look * like it would when that scene finished. * That way, an inserted scene can continue smoothly from where * the other one left off. */ public void valueChanged(ListSelectionEvent ev) { int i = sceneJList.getSelectedIndex(); if(i != -1) scenes.get(i).gotoEndState(); } //}}} //{{{ onAddSnapshot/Rock/Spin/FlyingScene, addScene //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAddSnapshotScene(ActionEvent ev) { addScene(new SnapshotScene(kMain, 15)); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAddRockScene(ActionEvent ev) { // 30 degree rock over 6 seconds is nice (90 frames @ 15 FPS) // 30 degree rock needs half as many frames as a 360 degree spin to mesh // 60 degree rock needs same number of frames as a 360 degree spin to mesh addScene(new RockBackAndForthScene(kMain, 90, 30)); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAddSpinScene(ActionEvent ev) { addScene(new SpinAroundScene(kMain, 180, 360)); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAddFlyingScene(ActionEvent ev) { addScene(new FlyingCameraScene(kMain, 60)); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onAddAnimateScene(ActionEvent ev) { addScene(new AnimateScene(kMain, 1)); } private void addScene(Scene s) { if(s.configure()) { int i = sceneJList.getSelectedIndex(); if(i == -1) scenes.add(s); else scenes.add(i+1, s); sceneJList.setListData(scenes.toArray()); } } //}}} //{{{ onDeleteScene, onConfigureScene //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onDeleteScene(ActionEvent ev) { int i = sceneJList.getSelectedIndex(); if(i != -1) { scenes.remove(i); sceneJList.setListData(scenes.toArray()); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onConfigureScene(ActionEvent ev) { int i = sceneJList.getSelectedIndex(); if(i != -1) { Scene s = scenes.get(i); if(s.configure()) s.gotoEndState(); } } //}}} //{{{ writeFrame, getFileForFrame //############################################################################## public void writeFrame() throws IOException { writeFrame(1); } public void writeFrame(int numCopies) throws IOException { writeFrame(getKinImage(), numCopies); } public void writeFrame(BufferedImage img, int numCopies) throws IOException { this.lastImage = img; File file = getFileForFrame(++frameCounter); ImageIO.write(lastImage, "png", file); for(int i = 1; i < numCopies; i++) { File file2 = getFileForFrame(++frameCounter); InputStream src = new BufferedInputStream(new FileInputStream(file)); OutputStream dst = new BufferedOutputStream(new FileOutputStream(file2)); byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); dst.close(); src.close(); } } File getFileForFrame(int frameNo) { String filenum = ""+(frameNo); while(filenum.length() < 4) filenum = "0"+filenum; File file = new File(movieFilePrefix+"_"+filenum+".png"); return file; } //}}} //{{{ getKinImage //############################################################################## public BufferedImage getKinImage() { // This has to be done on the main Swing thread, or else // KinCanvas may try to redraw itself at the same time, // which leads to races and exceptions. // With JOGL enabled, it actually causes undiagnosable seg faults. final int resol = 1; KinCanvas kCanvas = kMain.getCanvas(); Dimension dim = kCanvas.getCanvasSize(); dim.width *= resol; dim.height *= resol; BufferedImage img = new BufferedImage(dim.width, dim.height, BufferedImage.TYPE_INT_ARGB); // needed so we can get transparency in output Graphics2D g2 = img.createGraphics(); g2.scale(resol, resol); kCanvas.paintCanvas(g2, dim, KinCanvas.QUALITY_BEST); g2.dispose(); return img; } //}}} //{{{ blendImages //############################################################################## /** * Blends two images using the specified alpha values. */ static public BufferedImage blendImages(BufferedImage i1, double a1, BufferedImage i2, double a2) { int width = i1.getWidth(), height = i1.getHeight(); if(width != i2.getWidth() || height != i2.getHeight()) throw new IllegalArgumentException("Image size mismatch"); BufferedImage out = new BufferedImage(width, height, BufferedImage.TYPE_INT_ARGB); // needed so we can get transparency in output ImageObserver dummyObserver = new ImageObserver() { public boolean imageUpdate(Image img, int infoflags, int x, int y, int width, int height) { return false; } // == image fully loaded }; Graphics2D g2 = out.createGraphics(); g2.setComposite(AlphaComposite.getInstance( AlphaComposite.SRC, (float) a1)); g2.drawImage(i1, 0, 0, dummyObserver); g2.setComposite(AlphaComposite.getInstance( AlphaComposite.SRC_OVER, (float) a2)); g2.drawImage(i2, 0, 0, dummyObserver); g2.dispose(); return out; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/movie/Scene.java0000644000000000000000000000763311744305704021550 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.movie; import king.*; import king.core.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * Scene is the abstract base class for "scenes" of a movie. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Mon Jan 15 10:01:22 EST 2007 */ public abstract class Scene //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## protected KingMain kMain; protected int duration; // measured in frames // Current kinemage state protected KView view = null; protected Aspect aspect = null; protected BitSet on_offState = null; protected BitSet mastersState = null; //}}} //{{{ Constructor(s) //############################################################################## public Scene(KingMain kMain, int duration) { super(); this.kMain = kMain; this.duration = duration; } //}}} //{{{ capture/restoreKinemageState //############################################################################## protected void captureKinemageState() { Kinemage kin = kMain.getKinemage(); if(kin == null) return; this.view = kMain.getView().clone(); this.aspect = kMain.getCanvas().getCurrentAspect(); int i = 0; this.on_offState = new BitSet(); for(AGE age : KIterator.allNonPoints(kin)) on_offState.set(i++, age.isOn()); i = 0; this.mastersState = new BitSet(); for(MasterGroup master : kin.masterList()) mastersState.set(i++, master.isOn()); } protected void restoreKinemageState() { Kinemage kin = kMain.getKinemage(); if(kin == null) return; if(this.view != null) kMain.setView(view); kMain.getCanvas().setCurrentAspect(this.aspect); // null is OK if(this.on_offState != null) { int i = 0; for(AGE age : KIterator.allNonPoints(kin)) { boolean state = this.on_offState.get(i++); if(state != age.isOn()) age.setOn(state); } } if(this.mastersState != null) { int i = 0; for(MasterGroup master : kin.masterList()) { boolean state = this.mastersState.get(i++); if(state != master.isOn()) master.setOn(state); } } } //}}} //{{{ renderFrames, configure, getDuration, toString //############################################################################## /** * Actually write the frames of the movie. * The kinemage is guaranteed to be in a consistent "end state" * from the end of the last scene when this method is called. * No guarantee about the kinemage state is provided when this * method returns -- see gotoEndState(). */ abstract public void renderFrames(MovieMaker maker) throws IOException; /** True means "OK", false means "Cancel" */ abstract public boolean configure(); /** * Puts the kinemage into a consistent state, as it should look after * all frames of the current scene are rendered. */ abstract public void gotoEndState(); public int getDuration() { return duration; } /** This will be displayed in the MovieMaker GUI */ public String toString() { return super.toString()+" **please override**"; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/movie/AnimateScene.java0000644000000000000000000000646611744305704023052 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.movie; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; //}}} /** * AnimateScene implements animating through all available groups. * *

Copyright (C) 2011 by Daniel A. Keedy. All rights reserved. *
Begun on Thu Dec 29 2011 */ public class AnimateScene extends Scene { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.#"); //}}} //{{{ Variable definitions //############################################################################## TablePane2 cp; JTextField tfDuration; //}}} //{{{ Constructor(s) //############################################################################## public AnimateScene(KingMain kMain, int duration) { // For this particular subclass of Scene, // "duration" is per frame in the animate sequence, // not total frames across the animate sequence super(kMain, duration); captureKinemageState(); } //}}} //{{{ renderFrames, toString //############################################################################## public void renderFrames(MovieMaker maker) throws IOException { restoreKinemageState(); Kinemage kin = kMain.getKinemage(); if(kin == null) return; for(int i = 0; i < kin.getNumAnimateGroups(); i++) { kin.animate(1); maker.writeFrame(this.duration); } } public String toString() { return "Animate ("+duration+" frame(s)/group)"; } //}}} //{{{ configure //############################################################################## public boolean configure() { Kinemage kin = kMain.getKinemage(); if(kin == null) return false; if(kin.getNumAnimateGroups() < 1) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "No animatable groups are present!", "Oops...", JOptionPane.ERROR_MESSAGE); return false; } if(cp == null) { tfDuration = new JTextField(); tfDuration.setText(Integer.toString(duration)); cp = new TablePane2().hfill(true).memorize(); cp.addCell(new JLabel("Duration (frames/group):")).addCell(tfDuration).newRow(); } int result = JOptionPane.showConfirmDialog(kMain.getTopWindow(), cp, "Configure Animate", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); if(result == JOptionPane.OK_OPTION) { try { this.duration = Integer.parseInt(tfDuration.getText()); } catch(NumberFormatException ex) { tfDuration.setText(Integer.toString(duration)); } return true; } else return false; } //}}} //{{{ gotoEndState //############################################################################## public void gotoEndState() { restoreKinemageState(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/movie/SnapshotScene.java0000644000000000000000000000507311531213002023243 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.movie; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; //}}} /** * SnapshotScene just shows the same still image for N frames. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Tue Jan 16 10:11:03 EST 2007 */ public class SnapshotScene extends Scene { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## TablePane2 cp; JTextField tfDuration; //}}} //{{{ Constructor(s) //############################################################################## public SnapshotScene(KingMain kMain, int duration) { super(kMain, duration); captureKinemageState(); } //}}} //{{{ renderFrames, toString //############################################################################## public void renderFrames(MovieMaker maker) throws IOException { restoreKinemageState(); maker.writeFrame(this.duration); } public String toString() { return "Snapshot ("+duration+" frames)"; } //}}} //{{{ configure //############################################################################## public boolean configure() { if(cp == null) { tfDuration = new JTextField(); tfDuration.setText(Integer.toString(duration)); cp = new TablePane2().hfill(true).memorize(); cp.addCell(new JLabel("Duration (frames):")).addCell(tfDuration).newRow(); } int result = JOptionPane.showConfirmDialog(kMain.getTopWindow(), cp, "Configure Snapshot", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); if(result == JOptionPane.OK_OPTION) { try { this.duration = Integer.parseInt(tfDuration.getText()); } catch(NumberFormatException ex) { tfDuration.setText(Integer.toString(duration)); } return true; } else return false; } //}}} //{{{ gotoEndState //############################################################################## public void gotoEndState() { restoreKinemageState(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/movie/MoviePlugin.java0000644000000000000000000000443311531213002022723 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.movie; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import java.net.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * MoviePlugin has not yet been documented. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Mon Jan 15 10:01:22 EST 2007 */ public class MoviePlugin extends Plugin { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public MoviePlugin(ToolBox tb) { super(tb); } //}}} //{{{ getToolsMenuItem, isAppletSafe //############################################################################## public JMenuItem getToolsMenuItem() { JMenuItem item = new JMenuItem(new ReflectiveAction("Make movie...", null, this, "onMakeMovie")); return item; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#movie-maker"; } static public boolean isAppletSafe() { return false; } public String toString() { return "Movie-maker plugin"; } //}}} //{{{ onMakeMovie //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onMakeMovie(ActionEvent ev) { new MovieMaker(kMain); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/movie/SpinAroundScene.java0000644000000000000000000000653411531213002023531 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.movie; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; //}}} /** * SpinAroundScene implements spinning about the Y axis. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Mon Jan 15 13:13:33 EST 2007 */ public class SpinAroundScene extends Scene { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.#"); //}}} //{{{ Variable definitions //############################################################################## double degrees; TablePane2 cp; JTextField tfDegrees, tfDuration; //}}} //{{{ Constructor(s) //############################################################################## public SpinAroundScene(KingMain kMain, int duration, double degrees) { super(kMain, duration); captureKinemageState(); this.degrees = degrees; } //}}} //{{{ renderFrames, toString //############################################################################## public void renderFrames(MovieMaker maker) throws IOException { restoreKinemageState(); for(int i = 0; i < duration; i++) { KView nextView = (KView) kMain.getView().clone(); nextView.rotateY((float)(Math.toRadians(degrees) / duration)); kMain.setView(nextView); maker.writeFrame(); } } public String toString() { return "Spin ("+duration+" frames, "+df.format(degrees)+" degrees)"; } //}}} //{{{ configure //############################################################################## public boolean configure() { if(cp == null) { tfDegrees = new JTextField(); tfDegrees.setText(df.format(degrees)); tfDuration = new JTextField(); tfDuration.setText(Integer.toString(duration)); cp = new TablePane2().hfill(true).memorize(); cp.addCell(new JLabel("Duration (frames):")).addCell(tfDuration).newRow(); cp.addCell(new JLabel("Extent (degrees):")).addCell(tfDegrees).newRow(); } int result = JOptionPane.showConfirmDialog(kMain.getTopWindow(), cp, "Configure Spin", JOptionPane.OK_CANCEL_OPTION, JOptionPane.PLAIN_MESSAGE); if(result == JOptionPane.OK_OPTION) { try { this.duration = Integer.parseInt(tfDuration.getText()); } catch(NumberFormatException ex) { tfDuration.setText(Integer.toString(duration)); } try { this.degrees = Double.parseDouble(tfDegrees.getText()); } catch(NumberFormatException ex) { tfDegrees.setText(df.format(degrees)); } return true; } else return false; } //}}} //{{{ gotoEndState //############################################################################## public void gotoEndState() { restoreKinemageState(); kMain.getView().rotateY((float)Math.toRadians(degrees)); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/extratools/src/king/tool/postkin/0000755000000000000000000000000011744306102020200 5ustar rootrootking-2.21.120420/extratools/src/king/tool/postkin/RecolorRibbon.java0000644000000000000000000003365511531213006023612 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import king.tool.util.*; import java.util.*; import driftwood.moldb2.AminoAcid; //}}} /** * RecolorRibbon implements Recolorator to allow recoloring of * kinemage sections that are ribbons. * *

Copyright (C) 2005 by Vincent B. Chen. All rights reserved. *
Begun on Feb 20 2005 **/ public class RecolorRibbon extends Recolorator //implements ActionListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## HashMap> structMap; //HashSet clickedLists; // sortedKin is hashmap with masters as keys, arraylists as values // ribbonMap is hashmap with Klists as keys, arraylists as values HashMap> sortedKin; HashMap> ribbonMap; //Integer lowResNum, highResNum; String[] aaNames = {"gly", "ala", "ser", "thr", "cys", "val", "leu", "ile", "met", "pro", "phe", "tyr", "trp", "asp", "glu", "asn", "gln", "his", "lys", "arg"}; //}}} //{{{ Constructor(s) //############################################################################## public RecolorRibbon() { newGroup(); } //}}} //{{{ preChangeAnalyses /** * Splits up a ribbon structure, derived from a clicked point, into Klists * which all correspond to one residue. **/ public void preChangeAnalyses(KPoint p) { KList parentList = (KList) p.getParent(); if (!ribbonMap.containsKey(parentList)) { newGroup(); if (hasRibbonMasters(parentList)) { sortStructure(p); } sortbyNumber(p); } //sortStructure(p); //sortbyNumber(p); } //}}} //{{{ newGroup //###################################################################################################### /** * Resets the tool by creating new hashmaps for the various list storing maps. This is for coloring * ribbons in different KGroups, or in new kinemages. **/ public void newGroup() { //clickedLists = new HashSet(); //undoColors = new HashMap(); pts = new ArrayList(); clrs = new ArrayList(); structMap = new HashMap>(); ribbonMap = new HashMap>(); sortedKin = new HashMap>(); } //}}} //{{{ sortStructure //################################################################################################## /** * Initializer function that handles the sorting of a prekin-generated ribbon kinemage. It sorts * based on the second master of each KList in the kinemage. This function needs to be called * before any of the highlighting functions can be called. **/ public void sortStructure(KPoint p) { String pointID = p.getName().trim(); KList parentList = (KList) p.getParent(); KGroup parentGroup = (KGroup) parentList.getParent(); KIterator lists = KIterator.allLists(parentGroup); for (KList list : lists) { //Iterator iter = parentGroup.iterator(); //KList list; //ArrayList listofLists = new ArrayList(); //while (iter.hasNext()) { //list = (KList) iter.next(); String master = getRibbonMaster(list); ArrayList listofLists = sortedKin.get(master); if (listofLists == null) { listofLists = new ArrayList(); } listofLists.add(list); sortedKin.put(master, listofLists); } for (ArrayList sortList : sortedKin.values()) { splitStructure(sortList); } /* pre 2.0 Set keys = sortedKin.keySet(); iter = keys.iterator(); while (iter.hasNext()) { String master = (String) iter.next(); //listofLists = (ArrayList) sortedKin.get(master); splitStructure((ArrayList) sortedKin.get(master)); } */ } //}}} //{{{ splitStructure //################################################################################################### /** * Helper function to sort srcLists into separate ribbons. Stores in Hashmap with KList as key, and an * arraylist of KLists (all of one ribbon) as values. **/ private void splitStructure(ArrayList srcLists) { //Iterator iter = srcLists.iterator(); //ArrayList listofLists = new ArrayList(); Integer oldresNum = new Integer(-100); // gets each KList, gets first point of Klist, checks whether within one of previous list, // then sorts appropriately ArrayList listofLists = null; for (KList list : srcLists) { //while (iter.hasNext()) { //KList list = (KList) iter.next(); KPoint point = list.getChildren().get(0); Integer resNum = new Integer(KinUtil.getResNumber(point)); if ((resNum.equals(oldresNum))||(resNum.equals(new Integer(oldresNum.intValue() + 1)))) { listofLists.add(list); ribbonMap.put(list, listofLists); oldresNum = resNum; } else { listofLists = new ArrayList(); listofLists.add(list); ribbonMap.put(list, listofLists); oldresNum = resNum; } } } //}}} //{{{ sortbyNumber //#################################################################################################### /** * Helper function to sort p's parent by residue number. Stores in Hashmap with residue number as key, and * arraylist of KLists as value. **/ private void sortbyNumber(KPoint p) { String pointID = p.getName().trim(); KList parentList = (KList) p.getParent(); AGE parentGroup = (AGE) parentList.getParent(); KIterator lists = KIterator.allLists(parentGroup); //Iterator iter = parentGroup.iterator(); //KList list; //ArrayList listofLists = new ArrayList(); for (KList list : lists) { ArrayList> residueLists = splitLists(list); for (ArrayList splitList : residueLists) { // at this point, each splitlist should only have points from one res. //Iterator residueIter = residueLists.iterator(); //while (residueIter.hasNext()) { //ArrayList splitList = (ArrayList) residueIter.next(); //Iterator listIter = splitList.iterator(); KPoint point = (KPoint) splitList.get(0); if (!point.isUnpickable()) { //to not color over black outlines on ribbons Integer resNum = new Integer(KinUtil.getResNumber(point.getName())); //System.out.println(resNum); ArrayList listofLists = null; if (structMap.containsKey(resNum)) { listofLists = structMap.get(resNum); listofLists.add(splitList); } else { listofLists = new ArrayList(); listofLists.add(splitList); structMap.put(resNum, listofLists); } } } } TreeSet keys = new TreeSet(structMap.keySet()); lowResNum = (Integer) keys.first(); highResNum = (Integer) keys.last(); } //}}} //{{{ splitLists /** * Splits up KLists that contain more than one residue into separate arraylists. **/ public ArrayList> splitLists(KList bigList) { Iterator iter = bigList.iterator(); int oldResNum = -100; //KList list = new KList(bigList.getType()); ArrayList list = new ArrayList(); ArrayList> residueList = new ArrayList>(); while (iter.hasNext()) { KPoint point = (KPoint) iter.next(); //oldResNum = getResNumber(point); if (KinUtil.getResNumber(point.getName()) != oldResNum) { //list = new KList(bigList.getType()); list = new ArrayList(); list.add(point); oldResNum = KinUtil.getResNumber(point.getName()); residueList.add(list); } else { list.add(point); } } return residueList; } //}}} //{{{ contains // public boolean contains(KPoint p) { /** I used to keep track of which parts of a structure had been clicked, but King seems to be fast enough now that this isn't necessary (for ribbons). **/ //KList parentList = (KList) p.getParent(); //Integer resNum = new Integer(KinUtil.getResNumber(p)); //return (structMap.containsKey(resNum)&&clickedLists.contains(parentList)); // return false; // } //}}} //{{{ highlightRange /** * Changes the colors of the points in a range of residue numbers, based on the KPaints * in colors. **/ public void highlightRange(int firstNum, int secondNum, KPaint[] colors) { //undoColors.clear(); pts.clear(); clrs.clear(); int index = 0; for (int i = firstNum; i <= secondNum; i++) { if (index >= colors.length) { index = 0; } Integer hashKey = new Integer(i); if (structMap.containsKey(hashKey)) { ArrayList listofLists = (ArrayList) structMap.get(hashKey); Iterator iter = listofLists.iterator(); while (iter.hasNext()) { ArrayList list= (ArrayList) iter.next(); setPointColors(list, (KPaint) colors[index]); } } index++; } } //}}} //{{{ highlightAll /** * Colors a whole structure, based on the KPaints in colors. **/ public void highlightAll(KPoint p, KPaint[] colors) { //System.out.println(lowResNum + " " + highResNum); highlightRange(lowResNum.intValue(), highResNum.intValue(), colors); } //}}} //{{{ highlightAA /** * Colors all the points corresponding to a particular amino acid name. **/ public void highlightAA(KPoint p, String aaName, KPaint color, boolean colorPrior) { //undoColors.clear(); pts.clear(); clrs.clear(); KList parentList = (KList) p.getParent(); KGroup parentSub = (KGroup) parentList.getParent(); HashSet aaNums = new HashSet(); KIterator lists = KIterator.allLists(parentSub); for (KList list : lists) { //Iterator iter = parentSub.iterator(); //while (iter.hasNext()) { //KList list = (KList) iter.next(); ArrayList> resLists = splitLists(list); for (ArrayList splitList : resLists) { //Iterator resIter = resLists.iterator(); //while (resIter.hasNext()) { //ArrayList splitList = (ArrayList) resIter.next(); if (containsAAName(splitList, aaName)) { setPointColors(splitList, color); Integer resNum = new Integer(KinUtil.getResNumber((KPoint)splitList.get(0))); aaNums.add(resNum); } } } if (colorPrior) { Iterator iter = aaNums.iterator(); while (iter.hasNext()) { int priorResNum = ((Integer) iter.next()).intValue() - 1; ArrayList listofLists = (ArrayList) structMap.get(new Integer(priorResNum)); if (listofLists != null) { Iterator listIter = listofLists.iterator(); while (listIter.hasNext()) { ArrayList list = (ArrayList) listIter.next(); if (list != null) { setPointColors(list, KPalette.green); } } } } } } //}}} //{{{ onTable /** * Used for determining the amino acid sequence of a clicked-on structure. **/ public String onTable() { TreeSet keys = new TreeSet(structMap.keySet()); String aaText = ""; int j = 0; for (int i = 1; i <= highResNum.intValue(); i++) { if (j == 5) { aaText = aaText.concat(" "); j = 0; } j++; if (keys.contains(new Integer(i))) { ArrayList alist = (ArrayList) structMap.get(new Integer(i)); ArrayList list = (ArrayList) alist.get(0); Iterator iter = list.iterator(); KPoint point = (KPoint) iter.next(); //String pointID = point.getName().trim(); //String aa = pointID.substring(4, 7); String aa = KinUtil.getResName(point); if (aa.length()==4) { aa = aa.substring(1); } aaText = aaText.concat(AminoAcid.translate(aa)); } else { aaText = aaText.concat("-"); } } return aaText; } //}}} //{{{ getRibbonMaster //###################################################################################################### /** * Helper function that (hopefully) gets the "ribbon master" (alpha, beta, coil) from list. Depends on * prekin giving the ribbon master as the second master of the list. **/ private String getRibbonMaster(KList list) { Collection masters = list.getMasters(); for (String mast : masters) { if (mast.equals("alpha")||mast.equals("beta")||mast.equals("coil")) { return mast; } } /* Pre 2.0 Iterator masIter = list.masterIterator(); while (masIter.hasNext()) { String oldMaster = (String) masIter.next(); if (oldMaster.equals("alpha")||oldMaster.equals("beta")||oldMaster.equals("coil")) { return oldMaster; } }*/ return ""; } //}}} //{{{ containsAAName /** * Checks to see whether the name of the first point in a list (and presumably all the points in that list) * contains the given aaName. **/ private boolean containsAAName(ArrayList list, String aaName) { Iterator iter = list.iterator(); KPoint point = (KPoint) iter.next(); String name = point.getName(); return (name.indexOf(aaName) != -1); } //}}} //{{{ hasRibbonMasters /** * Determines whether a KList has masters corresponding to ribbon masters (alpha, beta, or coil). **/ private boolean hasRibbonMasters(KList list) { Collection masters = list.getMasters(); for (String mast : masters) { if (mast.equals("alpha")||mast.equals("beta")||mast.equals("coil")) { return true; } } /* pre 2.0 Iterator masIter = list.masterIterator(); if (!(masIter == null)) { while (masIter.hasNext()) { String oldMaster = (String) masIter.next(); if ((oldMaster.equals("coil"))||(oldMaster.equals("beta"))||(oldMaster.equals("alpha"))) { return true; } } }*/ return false; } //}}} }//class king-2.21.120420/extratools/src/king/tool/postkin/RecolorTool.java0000644000000000000000000004041511531213006023304 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import king.tool.util.*; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.text.*; import java.net.*; import driftwood.gui.*; import driftwood.moldb2.AminoAcid; import driftwood.util.SoftLog; import javax.swing.*; import javax.swing.event.*; //}}} /** * RecolorTool was created to make it easier to color * sections of kinemages. * *

Copyright (C) 2004 by Vincent B. Chen. All rights reserved. *
Begun on Sept 15 2004 **/ public class RecolorTool extends BasicTool implements ActionListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## // sortedKin is hashmap with masters as keys, arraylists as values // ribbonMap is hashmap with Klists as keys, arraylists as values //HashMap sortedKin, ribbonMap; // sortbyNum is hashmap with Integer resNum as keys, arraylists as values //HashMap sortbyNum; //HashMap sortedKin; //HashMap structMap; //HashSet clickedLists; HashMap coloratorMap;//AGE as key, colorator as value Recolorator colorator; JRadioButton chooseColor, colorAll, colorAA; JRadioButton colorRegion, hippieMode, spectralMode; JButton colorButton; TablePane pane; JComboBox color1; JTextField lowNumField; JTextField highNumField; Integer lowResNum, highResNum; String[] aaNames = {"gly", "ala", "ser", "thr", "cys", "val", "leu", "ile", "met", "pro", "phe", "tyr", "trp", "asp", "glu", "asn", "gln", "his", "lys", "arg"}; JComboBox aaBox; JCheckBox colorPrior; JCheckBoxMenuItem clickMode; JTextPane textPane = null; SimpleAttributeSet sas; //}}} //{{{ Constructor(s) //############################################################################## public RecolorTool(ToolBox tb) { super(tb); //coloratorMap = new HashMap(); //colorator = new RecolorNonRibbon(); //newGroup(); //clickedLists = new HashSet(); //undoStack = new LinkedList(); //buildGUI(); } //}}} //{{{ buildGUI //############################################################################## protected void buildGUI() { dialog = new JDialog(kMain.getTopWindow(),"Recolor", false); //initDialog(); //dialog.setTitle("Recolor"); color1 = new JComboBox(KPalette.getStandardMap().values().toArray()); color1.setSelectedItem(KPalette.blue); color1.addActionListener(this); aaBox = new JComboBox(aaNames); aaBox.setSelectedItem("pro"); aaBox.addActionListener(this); //colorOne = new JRadioButton("Color One", false); colorRegion = new JRadioButton("Color Region", true); colorAll = new JRadioButton("Color All", false); colorAA = new JRadioButton("Color AAs", false); colorPrior = new JCheckBox("Color prior aa", false); colorPrior.setEnabled(false); //colorOne.addActionListener(this); colorRegion.addActionListener(this); colorAll.addActionListener(this); colorAA.addActionListener(this); ButtonGroup colorRange = new ButtonGroup(); //colorRange.add(colorOne); colorRange.add(colorRegion); colorRange.add(colorAll); colorRange.add(colorAA); chooseColor = new JRadioButton("Choose Color", true); //checkSort = new JRadioButton("Check Sort", false); //colorRegion = new JRadioButton("Color Region", false); hippieMode = new JRadioButton("Hippie Mode", false); spectralMode = new JRadioButton("Spectral Mode", false); //chooseColor.addActionListener(this); //checkSort.addActionListener(this); hippieMode.addActionListener(this); ButtonGroup colorType = new ButtonGroup(); colorType.add(chooseColor); //colorType.add(checkSort); //colorType.add(colorRegion); colorType.add(hippieMode); colorType.add(spectralMode); lowNumField = new JTextField("", 5); highNumField = new JTextField("", 5); colorButton = new JButton("Color!"); colorButton.setActionCommand("color"); colorButton.addActionListener(this); pane = new TablePane(); pane.newRow(); pane.add(color1); pane.add(chooseColor); //pane.add(colorRegion); pane.add(hippieMode); pane.add(spectralMode); // removing checksort from panel so people can't accidentally use it. //pane.add(checkSort); //pane.newRow(); pane.newRow(); //pane.add(colorOne); pane.add(colorRegion); pane.add(colorAll); pane.add(colorAA); pane.add(aaBox); pane.newRow(); pane.add(lowNumField); pane.add(highNumField); pane.add(colorButton); pane.add(colorPrior); dialog.setContentPane(pane); dialog.addWindowListener(this); JMenuBar menubar = new JMenuBar(); JMenu menu; JMenuItem item; menu = new JMenu("Options"); menubar.add(menu); item = new JMenuItem(new ReflectiveAction("Create Table", null, this, "onTable")); menu.add(item); clickMode = new JCheckBoxMenuItem("Click Mode On", true); menu.add(clickMode); menu = new JMenu("Edit"); menubar.add(menu); item = new JMenuItem(new ReflectiveAction("Undo one step", null, this, "onUndo")); menu.add(item); dialog.setJMenuBar(menubar); } //}}} //{{{ start /** * Initializes the tool. **/ public void start() { if (kMain.getKinemage() == null) return; buildGUI(); coloratorMap = new HashMap(); //colorator = new RecolorNonRibbon(); show(); } //}}} //{{{ xx_click() functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { //long startTime = System.currentTimeMillis(); super.click(x, y, p, ev); if ((p != null)&&(clickMode.getState())) { AGE coloratorKey = (AGE) p.getParent(); Collection masts = coloratorKey.getMasters(); if (masts.contains("ribbon")) { coloratorKey = (AGE) coloratorKey.getParent(); } if (coloratorMap.containsKey(coloratorKey)) { colorator = (Recolorator) coloratorMap.get(coloratorKey); } else { if (coloratorKey instanceof KGroup) { colorator = new RecolorRibbon(); coloratorMap.put(coloratorKey, colorator); } else { colorator = new RecolorNonRibbon(); coloratorMap.put(coloratorKey, colorator); } } //if (!colorator.contains(p)) { colorator.preChangeAnalyses(p); //} color(p, colorator); } //long endTime = System.currentTimeMillis(); //System.out.println("Total Time to color: " + ((endTime-startTime)) + " milliseconds"); } public void color(KPoint p, Recolorator colorator) { Kinemage k = kMain.getKinemage(); if(k != null) k.setModified(true); if (colorAll.isSelected()) { int numRes = colorator.numofResidues(); //String tableText = textPane.getText(); colorator.highlightAll(p, createColorArray(numRes)); if (textPane != null) { String tableText = textPane.getText(); recolorTable(0, tableText.length(), createColorArray(numRes)); } } else if (colorAA.isSelected()) { colorator.highlightAA(p, (String)aaBox.getSelectedItem(), (KPaint) color1.getSelectedItem(), colorPrior.isSelected()); if (textPane != null) { String aa = (String) aaBox.getSelectedItem(); aa = AminoAcid.translate(aa); String tableText = textPane.getText(); //System.out.println(tableText); //int i = 0; int aaIndex = 0; while (aaIndex >= 0) { aaIndex = tableText.indexOf(aa, aaIndex + 1); if (aaIndex >=0) { recolorTable(aaIndex, 1, (KPaint) color1.getSelectedItem()); } } } } else { numberHandler(p); if (!highNumField.getText().equals("")) { int firstNum = Integer.parseInt(lowNumField.getText()); int secondNum = Integer.parseInt(highNumField.getText()); if (firstNum > secondNum) { int temp = secondNum; secondNum = firstNum; firstNum = temp; } KPaint[] colors = createColorArray(secondNum-firstNum+1); colorator.highlightRange(firstNum, secondNum, colors); if (textPane != null) { int correctedFirst = firstNum + (int)Math.floor(firstNum/5) - 1; int correctedSec = secondNum + (int)Math.floor(secondNum/5); //recolorTable(correctedFirst, correctedSec - correctedFirst, createColorArray(correctedSec-correctedFirst)); recolorTable(correctedFirst, correctedSec - correctedFirst, colors); } } } } //}}} //{{{ numberHandler /** * Determines into which num field to put the residue number of the clicked point. **/ public void numberHandler(KPoint p) { if (!highNumField.getText().equals("")) { lowNumField.setText(""); highNumField.setText(""); } //KList parentList = (KList) p.getParent(); Integer resNum = new Integer(KinUtil.getResNumber(p)); if(lowNumField.getText().equals("")) { lowNumField.setText(resNum.toString()); } else if (highNumField.getText().equals("")) { highNumField.setText(resNum.toString()); } if (!highNumField.getText().equals("")) { //System.out.println("coloring"); int firstNum = Integer.parseInt(lowNumField.getText()); int secondNum = Integer.parseInt(highNumField.getText()); if (firstNum > secondNum) { int temp = secondNum; secondNum = firstNum; firstNum = temp; } //highlightRange(firstNum, secondNum); } } //}}} //{{{ event functions //############################################################################################### /** * Event handler for when action performed. */ public void actionPerformed(ActionEvent ev) { if (colorAll.isSelected()||colorRegion.isSelected()) { //hippieMode.setEnabled(false); //checkSort.setEnabled(false); //chooseColor.setSelected(true); } else { //hippieMode.setEnabled(true); //checkSort.setEnabled(true); } if (hippieMode.isSelected()) { //colorRegion.setEnabled(false); //colorAll.setEnabled(false); //colorOne.setSelected(true); } else { //colorRegion.setEnabled(true); //colorAll.setEnabled(true); } if (colorAA.isSelected()) { colorPrior.setEnabled(true); } else { colorPrior.setEnabled(false); colorPrior.setSelected(false); } if ("color".equals(ev.getActionCommand())) { if (colorator == null) { JOptionPane.showMessageDialog(pane, "Please click on a point in the structure you want to color before using the number boxes.", "Error", JOptionPane.ERROR_MESSAGE); } else { if (KinUtil.isNumeric(lowNumField.getText())&&(KinUtil.isNumeric(highNumField.getText()))&&(textPane == null)) { int firstNum = Integer.parseInt(lowNumField.getText()); int secondNum = Integer.parseInt(highNumField.getText()); if (firstNum > secondNum) { int temp = secondNum; secondNum = firstNum; firstNum = temp; } //int numRes = ((RecolorNonRibbon)colorator).numofResidues(); colorator.highlightRange(firstNum, secondNum, createColorArray(secondNum-firstNum+1)); } else if (textPane != null) { if (textPane.getSelectionEnd()>0) { int firstNum = textPane.getSelectionStart(); int adjFirstNum = firstNum - Math.round(firstNum/6) + 1; int secondNum = textPane.getSelectionEnd(); int adjSecondNum = secondNum - Math.round(secondNum/6); //StyledDocument doc = textPane.getStyledDocument(); //StyleConstants.setForeground(sas, (Color) ((KPaint)color1.getSelectedItem()).getWhiteExemplar()); //doc.setCharacterAttributes(textPane.getSelectionStart(), textPane.getSelectionEnd()-textPane.getSelectionStart(),sas, true); //recolorTable(firstNum, secondNum-firstNum, (KPaint)color1.getSelectedItem()); recolorTable(firstNum, secondNum-firstNum, createColorArray(secondNum-firstNum+1)); colorator.highlightRange(adjFirstNum, adjSecondNum, createColorArray(secondNum-firstNum+1)); } } else { JOptionPane.showMessageDialog(pane, "You have to put numbers in the text boxes!", "Error", JOptionPane.ERROR_MESSAGE); } } } kCanvas.repaint(); } //}}} //{{{ recolorTable functions /** * Changes the color of the amino acid table. **/ public void recolorTable(int offset, int length, KPaint[] colors) { int index = 0; String tableText = textPane.getText(); for (int i = offset; i < length + offset; i++) { if (index >= colors.length) { index = 0; } //Integer hashKey = new Integer(i); if ((tableText.charAt(i)!='-')&&(tableText.charAt(i)!=' ')) { recolorTable(i, 1, colors[index]); index++; } //index++; } } public void recolorTable(int offset, int length, KPaint color) { StyledDocument doc = textPane.getStyledDocument(); StyleConstants.setForeground(sas, (Color) color.getWhiteExemplar()); doc.setCharacterAttributes(offset, length, sas, true); } //}}} //{{{ onTable /** * Creates the sequence table. **/ public void onTable(ActionEvent ev) { textPane = new JTextPane(); Font monospaced = new Font("monospaced", Font.PLAIN, 12); StyledDocument doc = textPane.getStyledDocument(); JScrollPane scrollPane = new JScrollPane(textPane); scrollPane.setPreferredSize(new Dimension(510, 200)); pane.newRow(); pane.add(scrollPane, 4, 1); dialog.pack(); sas = new SimpleAttributeSet(); StyleConstants.setFontFamily(sas, "monospaced"); StyleConstants.setFontSize(sas, 14); try { doc.insertString(doc.getLength(), colorator.onTable(), sas); } catch (BadLocationException ble) { } } //}}} //{{{ onUndo public void onUndo(ActionEvent ev) { colorator.undo(); } //}}} //{{{ createColorArray /** * Creates the KPaint arrays for coloring by hippie mode or spectral mode. **/ private KPaint[] createColorArray(int numRes) { if (chooseColor.isSelected()) { KPaint[] chosenColor = new KPaint[1]; chosenColor[0] = (KPaint) color1.getSelectedItem(); return chosenColor; } else if (hippieMode.isSelected()) { Object[] allColors = KPalette.getStandardMap().values().toArray(); KPaint[] hippieColors = new KPaint[allColors.length - 6]; for (int i = 0; i < hippieColors.length; i++) { hippieColors[i] = (KPaint) allColors[i]; } return hippieColors; } else { // KPaint[] colors = {KPalette.red, KPalette.orange, KPalette.gold, KPalette.yellow, KPalette.lime, KPalette.green, KPalette.sea, KPalette.cyan, KPalette.blue, KPalette.lilac, KPalette.purple}; //KPaint[] colors = {KPalette.purple, KPalette.lilac, KPalette.blue, KPalette.cyan, KPalette.sea, KPalette.green, KPalette.lime, KPalette.yellow, KPalette.gold, KPalette.orange, KPalette.red}; KPaint[] colors = {KPalette.blue, KPalette.sky, KPalette.cyan, KPalette.sea, KPalette.green, KPalette.lime, KPalette.yellow, KPalette.gold, KPalette.orange, KPalette.red}; KPaint[] spectralColors = new KPaint[numRes]; double meanValue = (double)numRes/10; int floor = (int) Math.floor(meanValue); int colorIndex = 0; if (numRes > 10) { for (int i = 0; i < numRes; i++) { if (i > floor) { colorIndex++; floor = (int) Math.floor(((colorIndex + 1) * meanValue)); } spectralColors[i] = colors[colorIndex]; //int colorNum = (int) Math.round(i/((double)numRes/9)); //if (colorNum == 10) colorNum = 0; //System.out.println((int) Math.round(i/((double)numRes/9))); //spectralColors[i] = colors[colorNum]; } return spectralColors; } else { return colors; } } } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return pane; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#recolor-tool"; } public String toString() { return "Recolor macromolecules"; } //}}} }//}}}class king-2.21.120420/extratools/src/king/tool/postkin/PointComparator.java0000644000000000000000000002107711744305704024202 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import king.points.*; import king.tool.util.*; import driftwood.moldb2.*; import driftwood.util.*; //import chiropraxis.kingtools.*; import java.util.*; import java.io.*; //}}} /** * PointComparator is a comparator used to compare AbstractPoints and determine * which would come first, as dictated by PDB format. This is used in the KinFudgerTool * and was originally made to export PDBs from the small peptides used for Ramachandran plots. * * Its sorting function is based on the idea of Radix sort, which sorts based on the least * significant digit first. In this case, the points should be sorted by atom name first, * then residue name, and then residue number. Naturally, this comparator is extremely dependent * on the format of the pointID; slight differences in the ID will make this code cry like a little * schoolgirl. * *

Copyright (C) 2005 by Vincent Chen. All rights reserved. * */ public class PointComparator implements Comparator { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //String[] atomNames = {" N ", " CA ", " C ", " O ", " CB ", " CG ", " CD ", " CE ", " NZ "}; static ArrayList allAtoms; static ArrayList allAtomsv23; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PointComparator() { extractAAs(); //System.out.println(allAtoms); //System.out.println(allAtomsv23); } //}}} //{{{ compare //################################################################################################## /** * Compares two objects, and if they are abstract points, returns a value according to * specification given for Comparator. */ public int compare(Object o1, Object o2) { long value = 0; if ((o1 instanceof AbstractPoint) && (o2 instanceof AbstractPoint)) { AbstractPoint point1 = (AbstractPoint) o1; AbstractPoint point2 = (AbstractPoint) o2; String p1name = point1.getName().toUpperCase(); String p2name = point2.getName().toUpperCase(); //value = Integer.parseInt(p1name.substring(8)) - Integer.parseInt(p2name.substring(8)); String atom1 = p1name.substring(0, 4); String atom2 = p2name.substring(0, 4); //System.out.println(atom1 + ", " + atom2); //int atomPosition = allAtoms.indexOf(atom1) - allAtoms.indexOf(atom2); int atomPosition = getAtomNamePosition(p1name) - getAtomNamePosition(p2name); value = atomPosition * 10; value = value + KinUtil.getResAA(p1name).compareTo(KinUtil.getResAA(p2name)) * 1000; value = value + (KinUtil.getResNumber(p1name) - KinUtil.getResNumber(p2name)) * 1000000; //return value; if (value == 0) { //System.out.println(p1name + ", " + p2name + ": " + value); } } //return value; if (value < 0) { return -1; } else if (value == 0) { return 0; } else { return 1; } } //}}} //{{{ extractAAs //################################################################################################## /** * Loads atom connect info from sc-connect.props. * */ public void extractAAs() { String[] resources = new String[] {"sc-connect.props", "sc-connect-v23.props"}; for(String resource : resources) { // Load side chain connectivity database Props scProps = new Props(); try { InputStream is = getClass().getResourceAsStream("sc-connect.props"); if(is != null) { scProps.load(is); is.close(); } else SoftLog.err.println("Couldn't find sc-connect.props"); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } // Read heavy atoms and hydrogens separately ArrayList heteroAtoms = new ArrayList(); ArrayList hydrogens = new ArrayList(); Set scs = scProps.keySet(); Iterator iter = (new TreeSet(scs)).iterator(); while (iter.hasNext()) { String key = (String) iter.next(); if (key.indexOf(".hy") > 0) { buildAALists(hydrogens, scProps.getString(key, ""), "hy"); } else { buildAALists(heteroAtoms, scProps.getString(key, ""), "hetero"); } } // Combine heavy atoms and hydrogens heteroAtoms.addAll(hydrogens); if(resource.equals("sc-connect.props")) allAtoms = heteroAtoms; else allAtomsv23 = heteroAtoms; } } //}}} //{{{ buildAALists //################################################################################################## /** * Figures out the atom info from the property file. I use it to create two arraylists, one for * hydrogens, and one for everything else. Then, I combine the arraylists into an all atom lists. * The lists should only have each atom type once. */ public void buildAALists(ArrayList list, String connectivity, String type) { String token = ""; boolean nextToken = false; StringTokenizer tokenizer = new StringTokenizer(connectivity, ",;", true); if (type.equals("hy")) { while(tokenizer.hasMoreTokens()) { token = tokenizer.nextToken(); if (nextToken) { if (!(list.contains(token))) { //System.out.println(token); list.add(token); } nextToken = false; } if (token.equals(",")) { nextToken = true; } } } else { while (tokenizer.hasMoreTokens()) { token = tokenizer.nextToken(); if (!(token.equals(",")||(token.equals(";")))) { if (!(list.contains(token))) { //System.out.println(token); list.add(token); } } } } //System.out.println(list); } //}}} //{{{ getAtomNamePosition /** * Uses sc.props to figure out the order of atoms. Returns the index of the allAtoms array. **/ public int getAtomNamePosition(String name) { /* don't have to figure out the spacing myself...sc props has it all in there already! for (int i = allAtoms.size() - 1; i >= 0; i--) { String atom = ((String) allAtoms.get(i)).trim(); if (atom.length() == 1) { atom = " " + atom + " "; } else if (atom.length() == 2) { atom = " " + atom + " "; } else if (atom.length() == 3) { if (KinUtil.isNumeric(atom.substring(0, 1))) { atom = atom + " "; } else { atom = " " + atom; } } //System.out.print(atom + ","); if (name.indexOf(atom)>-1) { //System.out.print(atom + ","); return i; } } return -1; */ for (int i = allAtoms.size() - 1; i >= 0; i--) { String atom = (String) allAtoms.get(i); if (name.substring(0,10).indexOf(atom) > -1) return i; } for (int i = allAtomsv23.size() - 1; i >= 0; i--) { String atom = (String) allAtomsv23.get(i); if (name.substring(0,10).indexOf(atom) > -1) return i; } return -1; } //}}} //{{{ getAtomName public static String getAtomName(String name) { /* for (int i = allAtoms.size() - 1; i >= 0; i--) { String atom = ((String) allAtoms.get(i)).trim(); if (atom.length() == 1) { atom = " " + atom + " "; } else if (atom.length() == 2) { atom = " " + atom + " "; } else if (atom.length() == 3) { if (KinUtil.isNumeric(atom.substring(0, 1))) { atom = atom + " "; } else { atom = " " + atom; } } //System.out.print(atom + ","); if (name.indexOf(atom)>-1) { //System.out.print(atom + ","); if (atom.length() == 3) { return atom + " "; } else { return atom; } } } return "UNK "; */ for (int i = allAtoms.size() - 1; i >= 0; i--) { String atom = (String) allAtoms.get(i); // substring is to prevent silly bug where the wrong atom would be found in // the pdbID that is sometimes in the pointIDs. if (name.substring(0,10).indexOf(atom) > -1) return atom; } for (int i = allAtomsv23.size() - 1; i >= 0; i--) { String atom = (String) allAtomsv23.get(i); // substring is to prevent silly bug where the wrong atom would be found in // the pdbID that is sometimes in the pointIDs. if (name.substring(0,10).indexOf(atom) > -1) return atom; } return "UNK "; } //}}} } king-2.21.120420/extratools/src/king/tool/postkin/ConnectivityFinder.java0000644000000000000000000002644311536414272024671 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import king.points.*; import java.util.*; import driftwood.r3.*; import driftwood.moldb2.*; import java.text.*; //}}} public class ConnectivityFinder { //{{{ Constants static DecimalFormat df = new DecimalFormat("0.000"); //}}} //{{{ Variable definitions //############################################################################## HashMap adjacencyMap; HashSet mobilePoints; KingMain kMain; boolean keepAll; //}}} //{{{ Constructor /** Basic constructor for ConnectivityFinder */ public ConnectivityFinder(KingMain kMain) { this.kMain = kMain; keepAll = false; } //}}} //{{{ buildAdjacencyList public void buildAdjacencyList() { Kinemage kin = kMain.getKinemage(); if (kin != null) kin.setModified(true); buildAdjacencyList(kin, false); } public void buildAdjacencyList(boolean useAllLists) { //adjacencyMap = new HashMap(); buildAdjacencyList(kMain.getKinemage(), useAllLists); } private void buildAdjacencyList(AGE target, boolean useAllLists) { adjacencyMap = new HashMap(); // if (target instanceof KList) { // //KList list = (KList) target; // if (target.isOn()||useAllLists) { // Iterator iter = target.iterator(); // while (iter.hasNext()) { // KPoint pt = (KPoint) iter.next(); // if (pt instanceof VectorPoint) { // VectorPoint currPoint = (VectorPoint) pt; // // if ((!currPoint.isBreak())&&((currPoint.isOn())||useAllLists)) { // VectorPoint prevPoint = (VectorPoint) currPoint.getPrev(); // addPoints(prevPoint, currPoint); // addPoints(currPoint, prevPoint); // } // } // } // } // } else { // Iterator iter = target.iterator(); // //HashMap adjMap = new HashMap; // while (iter.hasNext()) { // AGE next = (AGE) iter.next(); // if (next.isOn()||useAllLists) { // buildAdjacencyList(next, useAllLists); // } // } // //return adjMap; // } buildAdjacencyMap(target, useAllLists, adjacencyMap); } //}}} //{{{ buildAdjacencyMap public static void buildAdjacencyMap(AGE target, boolean useAllLists, HashMap adj) { //HashMap adj = new HashMap(); if (target instanceof KList) { //KList list = (KList) target; if (target.isOn()||useAllLists) { Iterator iter = target.iterator(); while (iter.hasNext()) { KPoint pt = (KPoint) iter.next(); if (pt instanceof VectorPoint) { VectorPoint currPoint = (VectorPoint) pt; if ((!currPoint.isBreak())&&((currPoint.isOn())||useAllLists)) { VectorPoint prevPoint = (VectorPoint) currPoint.getPrev(); addPoints(prevPoint, currPoint, adj); addPoints(currPoint, prevPoint, adj); } } } } } else { Iterator iter = target.iterator(); //HashMap adjMap = new HashMap; while (iter.hasNext()) { AGE next = (AGE) iter.next(); if (next.isOn()||useAllLists) { buildAdjacencyMap(next, useAllLists, adj); } } //return adjMap; } } //}}} //{{{ addPoints private void addPoints(VectorPoint prev, VectorPoint curr) { //if (adjacencyMap.containsKey(prev)) { // HashSet prevSet = (HashSet) adjacencyMap.get(prev); // prevSet.add(curr); //} else { // HashSet prevSet = new HashSet(); // prevSet.add(curr); // adjacencyMap.put(prev, prevSet); //} addPoints(prev, curr, adjacencyMap); } private static void addPoints(VectorPoint prev, VectorPoint curr, HashMap adjMap) { if (adjMap.containsKey(prev)) { HashSet prevSet = (HashSet) adjMap.get(prev); prevSet.add(curr); } else { HashSet prevSet = new HashSet(); prevSet.add(curr); adjMap.put(prev, prevSet); } } //}}} //{{{ setKeepAll public void setKeepAll(boolean val) { keepAll = val; } public boolean getKeepAll() { return keepAll; } //}}} //{{{ mobilityFinder (tuples) public static HashSet mobilityFinder(Tuple3 first, Tuple3 second, HashMap adjMap, HashMap atomStates) { Set keys = adjMap.keySet(); Iterator iter = keys.iterator(); HashMap colors = new HashMap(); // point -> color HashMap pointStateMap = new HashMap(); // abstractPoint -> Atom //adjMap = abstractPoint -> {abstractPoints....} //atomStates = String (formatted triple) -> Triple //System.out.println(adjMap); HashSet mobile = new HashSet(); AbstractPoint firstPoint = null; AbstractPoint secondPoint = null; while (iter.hasNext()) { AbstractPoint key = (AbstractPoint) iter.next(); Triple keyTrip = new Triple(key); //keyTrip.format(df); //System.out.println(keyTrip.format(df)); //System.out.println(new Triple(second).format(df)); if ((keyTrip.format(df)).equals((new Triple(first)).format(df))) firstPoint = key; if ((keyTrip.format(df)).equals((new Triple(second)).format(df))) secondPoint = key; colors.put(key, KPalette.white); pointStateMap.put(key, ((AtomState)atomStates.get(keyTrip.format(df))).getAtom()); } colors.put(secondPoint, KPalette.gray); colors.put(firstPoint, KPalette.deadblack); LinkedList queue = new LinkedList(); queue.addFirst(secondPoint); mobile.add(pointStateMap.get(secondPoint)); while (!queue.isEmpty()) { AbstractPoint point = (AbstractPoint) queue.getFirst(); queue.removeFirst(); HashSet adjSet = (HashSet) adjMap.get(point); //System.out.println(point); //System.out.println(adjSet); Iterator adjIter = adjSet.iterator(); while (adjIter.hasNext()) { AbstractPoint adjPoint = (AbstractPoint) adjIter.next(); if (colors.get(adjPoint).equals(KPalette.white)) { colors.put(adjPoint, KPalette.gray); mobile.add(pointStateMap.get(adjPoint)); queue.addLast(adjPoint); } } colors.put(point, KPalette.deadblack); } return mobile; } //}}} //{{{ mobilityFinder (two points) /** * Finds mobility based on orientation of second in relation to the first. * Used for KinFudger to be able to move pieces of the same structure. * **/ public HashSet mobilityFinder(AbstractPoint first, AbstractPoint second, boolean onePoint) { Set keys = adjacencyMap.keySet(); Iterator iter = keys.iterator(); HashMap colors = new HashMap(); mobilePoints = new HashSet(); if (onePoint) { mobilePoints.add(clonePoint(second)); HashSet set = (HashSet) adjacencyMap.get(second); iter = set.iterator(); while (iter.hasNext()) { AbstractPoint adjPoint = (AbstractPoint) iter.next(); HashSet adjSet = (HashSet) adjacencyMap.get(adjPoint); if (adjSet.size() == 1) { mobilePoints.add(clonePoint(adjPoint)); } } } else { while (iter.hasNext()) { Object key = iter.next(); colors.put(key, KPalette.white); } colors.put(second, KPalette.gray); colors.put(first, KPalette.deadblack); LinkedList queue = new LinkedList(); queue.addFirst(second); mobilePoints.add(clonePoint(second)); while (!queue.isEmpty()) { AbstractPoint point = (AbstractPoint) queue.getFirst(); queue.removeFirst(); HashSet adjSet = (HashSet) adjacencyMap.get(point); Iterator adjIter = adjSet.iterator(); while (adjIter.hasNext()) { AbstractPoint adjPoint = (AbstractPoint) adjIter.next(); if (colors.get(adjPoint).equals(KPalette.white)) { colors.put(adjPoint, KPalette.gray); mobilePoints.add(clonePoint(adjPoint)); queue.addLast(adjPoint); } } colors.put(point, KPalette.deadblack); } } return mobilePoints; } //}}} //{{{ mobilityFinder (one point) /** finds mobility based on only one point, so everything connected to that * point is mobile. **/ public HashSet mobilityFinder(AbstractPoint first) { Set keys = adjacencyMap.keySet(); Iterator iter = keys.iterator(); HashMap colors = new HashMap(); mobilePoints = new HashSet(); while (iter.hasNext()) { Object key = iter.next(); colors.put(key, KPalette.white); } colors.put(first, KPalette.gray); //colors.put(first, KPalette.deadblack); LinkedList queue = new LinkedList(); queue.addFirst(first); mobilePoints.add(clonePoint(first)); while (!queue.isEmpty()) { AbstractPoint point = (AbstractPoint) queue.getFirst(); queue.removeFirst(); HashSet adjSet = (HashSet) adjacencyMap.get(point); Iterator adjIter = adjSet.iterator(); while (adjIter.hasNext()) { AbstractPoint adjPoint = (AbstractPoint) adjIter.next(); if (colors.get(adjPoint).equals(KPalette.white)) { colors.put(adjPoint, KPalette.gray); mobilePoints.add(clonePoint(adjPoint)); queue.addLast(adjPoint); } } colors.put(point, KPalette.deadblack); } return mobilePoints; } //}}} //{{{ clonePoint private Object clonePoint(AbstractPoint point) { VectorPoint pointClone = new VectorPoint(point.getName(), null); pointClone.setX((float) point.getX()); pointClone.setY((float) point.getY()); pointClone.setZ((float) point.getZ()); return pointClone; } //}}} //{{{ pathFinder public ArrayList pathFinder(AbstractPoint first, AbstractPoint second) { HashSet adjPoints = (HashSet) adjacencyMap.get(first); Iterator iter = adjPoints.iterator(); HashMap branchLists = new HashMap(); LinkedList queue = new LinkedList(); while (iter.hasNext()) { AbstractPoint point = (AbstractPoint) iter.next(); ArrayList list = new ArrayList(); if (!first.equals(point)) { list.add(first); } list.add(point); branchLists.put(point, list); queue.addLast(point); } HashMap colors = new HashMap(); Set keys = adjacencyMap.keySet(); Iterator keysIter = keys.iterator(); while (keysIter.hasNext()) { Object key = keysIter.next(); colors.put(key, KPalette.white); } colors.put(first, KPalette.deadblack); while (!queue.isEmpty()) { AbstractPoint point = (AbstractPoint) queue.getFirst(); ArrayList branch = (ArrayList) branchLists.get(point); queue.removeFirst(); HashSet adjSet = (HashSet) adjacencyMap.get(point); Iterator adjIter = adjSet.iterator(); while (adjIter.hasNext()) { AbstractPoint adjPoint = (AbstractPoint) adjIter.next(); if ((((HashSet) adjacencyMap.get(adjPoint)).size() == 1)&&(!keepAll)) { // to eliminate all 1 atom branches (O's, H's, etc) colors.put(adjPoint, KPalette.deadblack); } if (colors.get(adjPoint).equals(KPalette.white)) { branch.add(adjPoint); branchLists.put(adjPoint, branch); colors.put(adjPoint, KPalette.gray); //mobilePoints.add(clonePoint(adjPoint)); queue.addLast(adjPoint); } if (adjPoint.equals(second)) { return branch; //queue.clear(); } } colors.put(point, KPalette.deadblack); } return null; } //}}} }//}}} //class king-2.21.120420/extratools/src/king/tool/postkin/RMSDTool.java0000644000000000000000000002277511531213006022455 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import king.points.*; import king.tool.postkin.ConnectivityFinder; //import king.tool.docking.DockLsqTool; import java.util.*; import java.text.DecimalFormat; import java.awt.*; import java.awt.event.*; import javax.swing.*; import driftwood.r3.*; import driftwood.gui.*; //}}} public class RMSDTool extends BasicTool { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.000"); //}}} //{{{ CLASS: PointKeeper //############################################################################## class PointKeeper implements ActionListener { public JList pointList; public ArrayList tupleList; public JButton btnClear, btnRemove; public KList markList; DefaultListModel listModel; public PointKeeper(KPaint paint) { tupleList = new ArrayList(); listModel = new DefaultListModel(); pointList = new JList(listModel); pointList.setVisibleRowCount(3); btnClear = new JButton("Clear"); btnClear.addActionListener(this); btnRemove = new JButton("Remove last"); btnRemove.addActionListener(this); markList = new KList(KList.LABEL); markList.setColor(paint); } public int count() { return tupleList.size(); } public void add(String tag, Tuple3 t) { tupleList.add(t); listModel.addElement(tag); LabelPoint label = new LabelPoint(Integer.toString(count())); label.setX(t.getX()); label.setY(t.getY()); label.setZ(t.getZ()); label.setUnpickable(true); markList.add(label); syncCalcButton(); } public void removeLast() { if(tupleList.size() > 0) tupleList.remove(tupleList.size()-1); if(listModel.size() > 0) listModel.remove(listModel.size()-1); if(markList.getChildren().size() > 0) markList.getChildren().remove(markList.getChildren().size()-1); syncCalcButton(); } public void actionPerformed(ActionEvent ev) { if(ev.getSource() == btnClear) clear(); else if(ev.getSource() == btnRemove) removeLast(); kCanvas.repaint(); } public void clear() { tupleList.clear(); listModel.clear(); markList.clear(); syncCalcButton(); } } //}}} //{{{ Variable definitions //############################################################################## TablePane toolpane; PointKeeper pkReference; PointKeeper pkMobile; JRadioButton btnReference, btnMobile; JButton btnCalc; JCheckBox keepRefBox; HashSet mobilePoints; HashMap adjacencyMap; AbstractPoint firstClick, secondClick; LinkedList refList = new LinkedList(); ConnectivityFinder connect; //}}} //{{{ Constructor(s) //############################################################################## public RMSDTool(ToolBox tb) { super(tb); pkReference = new PointKeeper(KPalette.sky); pkMobile = new PointKeeper(KPalette.hotpink); buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { //super.buildGUI(); btnCalc = new JButton(new ReflectiveAction("Calculate RMSD", null, this, "onCalc")); btnCalc.setEnabled(false); btnReference = new JRadioButton("Reference", true); btnMobile = new JRadioButton("Mobile", false); ButtonGroup bg = new ButtonGroup(); bg.add(btnReference); bg.add(btnMobile); toolpane = new TablePane(); toolpane.center(); toolpane.add(btnReference); toolpane.add(pkReference.btnClear); toolpane.add(pkReference.btnRemove); toolpane.newRow().save().hfill(true).vfill(true); toolpane.add(new JScrollPane(pkReference.pointList),3,1); toolpane.newRow().restore(); toolpane.add(btnMobile); toolpane.add(pkMobile.btnClear); toolpane.add(pkMobile.btnRemove); toolpane.newRow().save().hfill(true).vfill(true); toolpane.add(new JScrollPane(pkMobile.pointList),3,1); toolpane.newRow().restore(); toolpane.add(btnCalc,3,1); //btnDock.setLabel("Dock mobile on reference"); //keepRefBox = new JCheckBox("Keep reference points", true); //toolpane.newRow(); //toolpane.add(keepRefBox, 3, 1); } //}}} public void start() { if (kMain.getKinemage() == null) return; connect = new ConnectivityFinder(kMain); //adjacencyMap = new HashMap(); //buildAdjacencyList(); show(); } //{{{ xx_click() functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { //super.click(x, y, p, ev); services.pick(p); if(p != null && p.getComment() != null) clickActionHandler(p.getComment()); if(p != null) { if (firstClick != null) { connect.buildAdjacencyList(false); ArrayList list = connect.pathFinder(firstClick, (AbstractPoint) p); //System.out.println(list.size()); Iterator iter = list.iterator(); while (iter.hasNext()) { AbstractPoint point = (AbstractPoint) iter.next(); //Triple t = new Triple(point); if (btnReference.isSelected()) { pkReference.add(point.getName(), point); } else if (btnMobile.isSelected()) { pkMobile.add(point.getName(), point); } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Either 'Reference' or 'Mobile' should be selected.", "Error", JOptionPane.ERROR_MESSAGE); } firstClick = null; kCanvas.repaint(); } } else { firstClick = (AbstractPoint) p; } } } //}}} //{{{ onCalc //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onCalc(ActionEvent ev) { //connect.buildAdjacencyList(true); //mobilePoints = connect.mobilityFinder((AbstractPoint)pkMobile.tupleList.get(0)); Tuple3[] ref = (Tuple3[])pkReference.tupleList.toArray(new Tuple3[pkReference.tupleList.size()]); Tuple3[] mob = (Tuple3[])pkMobile.tupleList.toArray(new Tuple3[pkMobile.tupleList.size()]); double sum = 0; for (int i = 0; i < ref.length; i++) { Tuple3 refpoint = ref[i]; Tuple3 mobpoint = mob[i]; sum = sum + Math.sqrt((Math.pow((refpoint.getX() - mobpoint.getX()), 2) + Math.pow((refpoint.getY() - mobpoint.getY()), 2) + Math.pow((refpoint.getZ() - mobpoint.getZ()), 2))); } double rmsd = Math.sqrt(sum/ref.length); System.out.println("The calculated RMSD is: " + df.format(rmsd)); /* SuperPoser poser = new SuperPoser(ref, mob); Transform t = poser.superpos(); Kinemage kin = kMain.getKinemage(); if(!t.isNaN() && kin != null) { transform(kin, t); kin.setModified(true); } // Swap which button is selected //if(btnReference.isSelected()) btnMobile.setSelected(true); //else btnReference.setSelected(true); if(!keepRefBox.isSelected()) { pkReference.clear(); btnMobile.setSelected(true); } pkMobile.clear(); kCanvas.repaint(); */ } void syncCalcButton() { btnCalc.setEnabled(pkReference.count() >= 2 && pkReference.count() == pkMobile.count()); } //{{{ transformAllVisible //############################################################################## private void transform(AGE target, Transform t) { //if(!target.isOn()) return; if(target instanceof KList) { Triple proxy = new Triple(); for(Iterator iter = target.iterator(); iter.hasNext(); ) { KPoint pt = (KPoint)iter.next(); if(mobilePoints.contains(pt)) { proxy.setXYZ(pt.getX(), pt.getY(), pt.getZ()); t.transform(proxy); pt.setX(proxy.getX()); pt.setY(proxy.getY()); pt.setZ(proxy.getZ()); } } } else { for(Iterator iter = target.iterator(); iter.hasNext(); ) transform((AGE)iter.next(), t); } } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform) { pkReference.markList.doTransform(engine, xform); pkMobile.markList.doTransform(engine, xform); } //}}} //{{{ getToolPanel, getHelpURL/Anchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return toolpane; } public String toString() { return "RMSD Tool"; } public String getHelpAnchor() { return null; } //}}} } king-2.21.120420/extratools/src/king/tool/postkin/KinimolPlugin.java0000644000000000000000000000675111531213006023627 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import king.tool.util.*; import java.util.*; import java.io.*; import javax.swing.*; import java.awt.event.*; import driftwood.gui.*; //}}} public class KinimolPlugin extends Plugin { //{{{ Constants //}}} //{{{ Variables //}}} //{{{ Constructor public KinimolPlugin(ToolBox tb) { super(tb); } //}}} //{{{ savePdb public void savePdb(File f) { Iterator groups = kMain.getKinemage().iterator(); while (groups.hasNext()) { KGroup group = (KGroup) groups.next(); if (group.getName().equals("loops")) { Iterator subs = group.iterator(); while (subs.hasNext()) { KGroup sub = (KGroup) subs.next(); HashMap groupMap = new HashMap(); KIterator lists = KIterator.allLists(sub); for (KList list : lists) { KPoint pt = list.getChildren().get(0); String pdbName = KinUtil.getPdbName(pt.getName()); if (pdbName != null) { if (groupMap.containsKey(pdbName)) { KGroup pdbGroup = groupMap.get(pdbName); pdbGroup.add(list); } else { KGroup pdbGroup = new KGroup(""); pdbGroup.add(list); groupMap.put(pdbName, pdbGroup); } } } File pdbout = new File(f, sub.getName() + ".pdb"); if( !pdbout.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "The file " + pdbout.toString() + " exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { try { Writer w = new FileWriter(pdbout); PrintWriter out = new PrintWriter(new BufferedWriter(w)); int i = 1; for (String pdbName : groupMap.keySet()) { out.println("MODEL " + Kinimol.formatStrings(Integer.toString(i), 4)); out.print(Kinimol.convertGrouptoPdb(groupMap.get(pdbName), pdbName)); out.println("ENDMDL"); i++; } out.flush(); w.close(); } catch (IOException ex) { System.out.println(ex); JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } } } } } //}}} //{{{ onConvert public void onConvert(ActionEvent ev) { JFileChooser saveChooser = new JFileChooser(); saveChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); String currdir = System.getProperty("user.dir"); if(currdir != null) { saveChooser.setCurrentDirectory(new File(currdir)); } if (saveChooser.APPROVE_OPTION == saveChooser.showSaveDialog(kMain.getTopWindow())) { File f = saveChooser.getSelectedFile(); savePdb(f); } } //}}} //{{{ getToolsMenuItem public JMenuItem getToolsMenuItem() { JMenuItem menu = new JMenuItem(new ReflectiveAction("Kin -> PDB", null, this, "onConvert")); return menu; } public String toString() { return "Kin -> PDB"; } //}}} } king-2.21.120420/extratools/src/king/tool/postkin/ColorGrouperPlugin.java0000644000000000000000000001105411531213006024637 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import driftwood.gui.*; import java.util.*; import javax.swing.*; import java.awt.event.*; /** * ColorGrouperTool was created to make it easier to group * multidimensional points. * *

Copyright (C) 2004 by Vincent B. Chen. All rights reserved. *
Begun on Dec 05 2006. **/ public class ColorGrouperPlugin extends Plugin { //{{{ Constants //}}} //{{{ Variables HashMap> colorSetMap; //KGroup colorGroup = null; //}}} //{{{ Constructor(s) //############################################################################## public ColorGrouperPlugin(ToolBox tb) { super(tb); } //}}} //{{{ onGroupByColor public void onGroupByColor(ActionEvent e) { Kinemage kin = kMain.getKinemage(); colorSetMap = new HashMap>(); //Set existingColors = colorSetMap.keySet(); splitKin(kin); KGroup splitGroup = scanForSplitGroup(kin); if (splitGroup != null) { kMain.getKinemage().remove(splitGroup); } //clearColorLists(kin); populateColorLists(kin); //kin.add(colorGroup); //kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); } //}}} //{{{ clearColorLists /* seems to not be used anymore public void clearColorLists(AGE target) { if (target instanceof KList) { KList list = (KList) target; System.out.println("scanning " + list.getName()); AGE owner = (AGE) list.getParent(); if (owner.getName().equals("color")) { //list.clear(); String name = list.getName(); if (KPalette.getStandardMap().containsKey(name)) { list.clear(); } //if (!colorSetMap.containsKey(name)) { // colorSetMap.put(name, new HashSet()); //} } } else { Iterator iter = target.iterator(); while (iter.hasNext()) { AGE targ = (AGE) iter.next(); clearColorLists(targ); } } }*/ //}}} //{{{ scanForSplitGroup /** * Scans to see if this kin has been color split already by checking * the names of the groups for a group named new split. **/ public KGroup scanForSplitGroup(Kinemage kin) { Iterator groups = kin.iterator(); while (groups.hasNext()) { KGroup group = groups.next(); if (group.getName().equals("new splits")) { //colorGroup = group; return group; } } return null; } //}}} //{{{ splitKin /** * Separates ballpoints into multiple hashsets, depending on color name. **/ public void splitKin(Kinemage kin) { KIterator listIter = KIterator.allLists(kin); for (KList list : listIter) { if (list.getType().equals(KList.BALL)) { System.out.println("splitting " + list.getName()); //Iterator iter = list.iterator(); for (KPoint pt : list) { String paintName = pt.getDrawingColor().toString(); if (colorSetMap.containsKey(paintName)) { HashSet colorSet = (HashSet)colorSetMap.get(paintName); colorSet.add(pt); //pt.setParent(colorList); } else { HashSet colorSet = new HashSet(); colorSet.add(pt); colorSetMap.put(paintName, colorSet); } } } } } //}}} //{{{ populateColorLists() /** * Moves the points from old lists to new color-split lists. * Old "feature" where points were copied (instead of moved) * from old lists to new lists might not work anymore! * Needs new way of copying flags from old lists. **/ public void populateColorLists(Kinemage kin) { KGroup colorGroup = new KGroup("new splits"); kin.add(colorGroup); //Iterator keys = colorSetMap.keySet().iterator(); for (String color : colorSetMap.keySet()) { HashSet points = colorSetMap.get(color); KGroup sub = new KGroup("color"); colorGroup.add(sub); sub.setHasButton(false); //colorGroup.add(sub); KList newList = new KList(KList.BALL, color); newList.addMaster("color"); sub.add(newList); Iterator pointsIter = points.iterator(); while (pointsIter.hasNext()) { KPoint pt = pointsIter.next(); KList oldList = (KList) pt.getParent(); //newList.flags |= oldList.flags; newList.setDimension(pt.getAllCoords().length); newList.add(pt); //pt.setParent(newList); } } } //}}} //{{{ getToolsMenuItem public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction("Group by color", null, this, "onGroupByColor")); } //}}} //{{{ toString public String toString() { return "Group By Color"; } //}}} } king-2.21.120420/extratools/src/king/tool/postkin/Kinimol.java0000644000000000000000000000737211531213006022450 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import king.tool.util.*; import java.util.*; import java.text.*; //}}} public class Kinimol { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.000"); static final DecimalFormat dfB = new DecimalFormat("0.00"); //}}} //{{{ Variables //}}} //{{{ Constructors public Kinimol() { } //}}} //{{{ convertGrouptoPdb public static String convertGrouptoPdb(KGroup group, String pdbName) { String pdb = ""; PointComparator pc = new PointComparator(); int i = 1; TreeSet keyTree = new TreeSet(pc); KIterator points = KIterator.allPoints(group); for (KPoint point : points) { //sorts out the points (hopefully) into proper PDB order keyTree.add(point); } for (KPoint point : keyTree) { String atomName = PointComparator.getAtomName(point.getName().toUpperCase()); String aaName = KinUtil.getResAA(point.getName().toUpperCase()); if (aaName.length()==3) aaName = " " + aaName; pdb = pdb.concat("ATOM "); pdb = pdb.concat(formatStrings(String.valueOf(i), 5) + " "); pdb = pdb.concat(atomName); pdb = pdb.concat(aaName + " "); pdb = pdb.concat(formatStrings(String.valueOf(KinUtil.getResNumber(point.getName().toUpperCase())), 4) + " "); pdb = pdb.concat(formatStrings(df.format(point.getX()), 8)); pdb = pdb.concat(formatStrings(df.format(point.getY()), 8)); pdb = pdb.concat(formatStrings(df.format(point.getZ()), 8)); pdb = pdb.concat(" 1.00"); pdb = pdb.concat(formatStrings(dfB.format(KinUtil.getBvalue(point)), 6)); pdb = pdb.concat(" " + pdbName + "\n"); i++; } return pdb; } //}}} /* public void savePDB(File f) { try { Writer w = new FileWriter(f); PrintWriter out = new PrintWriter(new BufferedWriter(w)); //Set keys = adjacencyMap.keySet(); int i = 1; PointComparator pc = new PointComparator(); TreeSet keyTree = new TreeSet(pc); keyTree.addAll(adjacencyMap.keySet()); Iterator iter = keyTree.iterator(); while (iter.hasNext()) { AbstractPoint point = (AbstractPoint) iter.next(); out.print("ATOM "); //String atomNum = String.valueOf(i); //while (atomNum.length()<5) { // atomNum = " " + atomNum; //} out.print(formatStrings(String.valueOf(i), 5) + " "); //out.print(point.getName().toUpperCase().substring(0, 8) + " " + point.getName().toUpperCase().substring(8) + " "); String atomName = PointComparator.getAtomName(point.getName().toUpperCase()); if (atomName.equals("UNK ")) { } out.print(KinUtil.getAtomName(point.getName().toUpperCase()) + " "); out.print(KinUtil.getResAA(point.getName().toUpperCase()) + " "); out.print(formatStrings(String.valueOf(KinUtil.getResNumber(point.getName().toUpperCase())), 4) + " "); out.print(formatStrings(df.format(point.getX()), 8)); out.print(formatStrings(df.format(point.getY()), 8)); out.print(formatStrings(df.format(point.getZ()), 8)); out.println(" 1.00 0.00"); i++; } out.flush(); w.close(); } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } }*/ public static String formatStrings(String value, int numSpaces) { while (value.length() < numSpaces) { value = " " + value; } return value; } } king-2.21.120420/extratools/src/king/tool/postkin/RamaTool.java0000644000000000000000000001635711531213006022567 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import king.points.*; import king.tool.util.*; import java.awt.*; import java.util.*; import javax.swing.*; import java.awt.event.*; import driftwood.gui.*; import driftwood.r3.*; //}}} public class RamaTool extends BasicTool { //{{{ Variable definitions //############################################################################## TreeMap pointMap; HashMap lengthMap; TablePane pane; //{{{ Constructor(s) //############################################################################## public RamaTool(ToolBox tb) { super(tb); buildGUI(); } //}}} protected void buildGUI() { JButton calcButton = new JButton(new ReflectiveAction("Calculate", null, this, "onCalc")); pane = new TablePane(); pane.newRow(); pane.add(calcButton); } public void onCalc(ActionEvent ev) { //analyzeKin(); System.out.println(pointMap.size()); //plotRama(); } public void start() { if (kMain.getKinemage() == null) return; //adjacencyMap = new HashMap(); //buildAdjacencyList(); //pointMap = new HashMap(); show(); } public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); if (p != null) { analyzeKin(p); plotRama(); } } public VectorPoint calcRama(AbstractPoint c0, AbstractPoint n1, AbstractPoint ca1, AbstractPoint c1, AbstractPoint n2, VectorPoint prev) { double phi = Triple.dihedral(c0, n1, ca1, c1); double psi = Triple.dihedral(n1, ca1, c1, n2); VectorPoint point = new VectorPoint(n1.getName(), prev); point.setX(phi); point.setY(psi); int resNum = KinUtil.getResNumber(n1.getName()); int transNum = ((Integer)lengthMap.get(new Integer(resNum))).intValue(); point.setZ(transNum); return point; } public void plotRama() { Kinemage kin = kMain.getKinemage(); //KGroup group = new KGroup(kin, "Data Points"); //kin.add(group); kin.setModified(true); kin.getMasterByName("Rama Points"); //Set origKeys = listMap.keySet(); //TreeSet keys = new TreeSet(origKeys); //Iterator iter = keys.iterator(); //while (iter.hasNext()) { //Double key = (Double) iter.next(); KGroup group = new KGroup("group"); group.setAnimate(true); group.addMaster("Data Points"); kin.add(group); KGroup subgroup = new KGroup("sub"); subgroup.setHasButton(false); group.add(subgroup); KList list = new KList(KList.VECTOR, "Points"); TreeSet keys = new TreeSet(pointMap.keySet()); Iterator iter = keys.iterator(); VectorPoint prev = null; while (iter.hasNext()) { Integer value = (Integer) iter.next(); int intValue = value.intValue(); Integer prevInt = new Integer(intValue - 1); Integer nextInt = new Integer(intValue + 1); if ((keys.contains(prevInt))&&(keys.contains(nextInt))) { //System.out.println(prevInt + ", " + nextInt); ArrayList prevList = (ArrayList) pointMap.get(prevInt); ArrayList currList = (ArrayList) pointMap.get(value); ArrayList nextList = (ArrayList) pointMap.get(nextInt); VectorPoint c0 = getPoint(prevList, "c "); System.out.println(c0); VectorPoint n1 = getPoint(currList, "n "); VectorPoint ca1 = getPoint(currList, "ca"); VectorPoint c1 = getPoint(currList, "c "); VectorPoint n2 = getPoint(nextList, "n "); VectorPoint ramaPoint = calcRama(c0, n1, ca1, c1, n2, prev); //System.out.println(ramaPoint); ramaPoint.setParent(list); list.add(ramaPoint); prev = ramaPoint; } } //KList list = new KList(subgroup, "Points"); //KList list = (KList) listMap.get(key); //list.flags |= KList.NOHILITE; //list.setType("BALL"); list.setHasButton(false); subgroup.add(list); list.setParent(subgroup); //kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); } public VectorPoint getPoint(ArrayList list, String atomName) { Iterator iter = list.iterator(); while (iter.hasNext()) { VectorPoint point = (VectorPoint) iter.next(); String pointAtom = point.getName().substring(0, 4); if (pointAtom.indexOf(atomName) > -1) { return point; } } return null; } public void analyzeKin(KPoint p) { ConnectivityFinder cf = new ConnectivityFinder(kMain); cf.buildAdjacencyList(); HashSet mobilePoints = cf.mobilityFinder(null, (AbstractPoint) p, false); Iterator iter = mobilePoints.iterator(); pointMap = new TreeMap(); while (iter.hasNext()) { VectorPoint point = (VectorPoint) iter.next(); Integer resNumber = new Integer(KinUtil.getResNumber(point.getName())); if (pointMap.containsKey(resNumber)) { ArrayList list = (ArrayList) pointMap.get(resNumber); if (!list.contains(point)) { list.add(point); } } else { ArrayList list = new ArrayList(); list.add(point); pointMap.put(resNumber, list); } } lengthMap = new HashMap(); Integer first = (Integer) pointMap.firstKey(); Integer last = (Integer) pointMap.lastKey(); int length = last.intValue() - first.intValue() + 1; Set keys = pointMap.keySet(); iter = keys.iterator(); while (iter.hasNext()) { Integer key = (Integer) iter.next(); Integer transKey = new Integer((key.intValue() - first.intValue() + 1)*5); lengthMap.put(key,transKey); //lengthMap.put(first, new Double(1)); //iter.next(); //first already in lengthMap //lengthMap.put(iter.next(), new Double(2)); //if (length - 4 > 0) { // while (iter.hasNext()) { //lengthMap.put( //if (length < 4) { } } /* Kinemage kin = kMain.getKinemage(); if (kin != null) kin.setModified(true); Iterator iter = kin.iterator(); while (iter.hasNext()) { KGroup group = (KGroup) iter.next(); if (group.isOn()) { Iterator groupIters = group.iterator(); while (groupIters.hasNext()) { KSubgroup sub = (KSubgroup) groupIters.next(); Iterator subIters = sub.iterator(); if (sub.isOn()) { while (subIters.hasNext()) { KList list = (KList) subIters.next(); if (list.isOn()) { Iterator listIter = list.iterator(); while (listIter.hasNext()) { Object next = listIter.next(); if (next instanceof VectorPoint) { addPoints((VectorPoint)next); } } } } } } } } */ public void addPoints(VectorPoint point) { Integer resNumber = new Integer(KinUtil.getResNumber(point.getName())); if (pointMap.containsKey(resNumber)) { ArrayList list = (ArrayList) pointMap.get(resNumber); if (!list.contains(point)) { list.add(point); } } else { ArrayList list = new ArrayList(); list.add(point); pointMap.put(resNumber, list); } } //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return pane; } public String getHelpAnchor() { return null; } public String toString() { return "Rama Tool"; } //}}} }//class king-2.21.120420/extratools/src/king/tool/postkin/KinFudgerTool.java0000644000000000000000000010117411531213006023555 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import king.points.*; import king.tool.util.*; import driftwood.r3.*; import driftwood.gui.*; import driftwood.util.SoftLog; import java.net.*; import java.awt.*; import javax.swing.*; import java.io.*; import java.net.*; import java.text.*; import java.util.*; import java.awt.event.*; import java.lang.Double; //}}} /** * KinFudgerTool allows a user to easily modify kinemages. Users can shorten * or lengthen a bond, change bond angles, or dihedrals in the middle of a structure. Users * can also left click on a structure and drag to rotate a structure around. Right click * and drag allows translation of structures. *

Copyright (C) 2002-2007 by Vincent B. Chen. All rights reserved. **/ public class KinFudgerTool extends BasicTool { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.000"); //}}} //{{{ CLASS: PointKeeper //############################################################################## class PointKeeper implements ActionListener { public JList pointList; public ArrayList tupleList; public JButton btnClear; public KList markList; DefaultListModel listModel; public PointKeeper(KPaint paint) { tupleList = new ArrayList(); listModel = new DefaultListModel(); pointList = new JList(listModel); pointList.setVisibleRowCount(3); btnClear = new JButton("Clear"); btnClear.addActionListener(this); //btnRemove = new JButton("Remove last"); //btnRemove.addActionListener(this); markList = new KList(KList.LABEL); markList.setColor(paint); } public int count() { return tupleList.size(); } public void add(String tag, Tuple3 t) { tupleList.add(t); listModel.addElement(tag); LabelPoint label = new LabelPoint(Integer.toString(count())); label.setX(t.getX()); label.setY(t.getY()); label.setZ(t.getZ()); label.setUnpickable(true); markList.add(label); } public Object get(int i) { return tupleList.get(i); } public void actionPerformed(ActionEvent ev) { if(ev.getSource() == btnClear) clear(); //else if(ev.getSource() == btnRemove) removeLast(); kCanvas.repaint(); } public void clear() { tupleList.clear(); listModel.clear(); markList.clear(); } } //}}} //{{{ Variable definitions //############################################################################## HashMap adjacencyMap; HashSet mobilePoints; TablePane pane; PointKeeper pkList; KList mobileList; JRadioButton fudgeDistance, fudgeAngle, fudgeDihedral; JCheckBox onePointBox, dragBox, moveVisBox, advBox; JButton transformButton; AbstractPoint firstClick, secondClick, thirdClick, fourthClick; double idealValue; AbstractPoint draggedPoint = null; //}}} //{{{ Constructor(s) //############################################################################## public KinFudgerTool(ToolBox tb) { super(tb); pkList = new PointKeeper(KPalette.sky); buildGUI(); mobileList = new KList(KList.VECTOR); mobileList.setColor(KPalette.green); mobileList.setWidth(5); } //}}} //{{{ buildGUI //############################################################################## protected void buildGUI() { //dialog = new JDialog(kMain.getTopWindow(),"Fudge Kins", false); fudgeDistance = new JRadioButton("Adjust Distance", true); fudgeAngle = new JRadioButton("Adjust Angle", false); fudgeDihedral = new JRadioButton("Adjust Dihedral", false); ButtonGroup fudgeGroup = new ButtonGroup(); fudgeGroup.add(fudgeDistance); fudgeGroup.add(fudgeAngle); fudgeGroup.add(fudgeDihedral); JButton exportButton = new JButton(new ReflectiveAction("Export to pdb", null, this, "onExport")); //exportButton.addActionListener(this); transformButton = new JButton(new ReflectiveAction("Move highlighted points!", null, this, "onTrans")); transformButton.setEnabled(false); onePointBox = new JCheckBox("Move one point"); moveVisBox = new JCheckBox("Move only visible", true); dragBox = new JCheckBox("Move structures with mouse drag"); JButton clearButton = new JButton(new ReflectiveAction("Clear selection", null, this, "onClear")); advBox = new JCheckBox ("Advanced options"); TablePane2 tpAdvOpt = new TablePane2(); tpAdvOpt.add(exportButton); tpAdvOpt.add(dragBox,2,1); FoldingBox fbAdvOpt = new FoldingBox(advBox, tpAdvOpt); fbAdvOpt.setAutoPack(true); //fbAdvOpt.setIndent(10); pane = new TablePane(); pane.add(fudgeDistance); pane.save().vfill(true); pane.add(new JSeparator(SwingConstants.VERTICAL),1,3); pane.restore(); pane.add(onePointBox); pane.newRow(); pane.add(fudgeAngle); pane.add(moveVisBox,1,1); pane.newRow(); pane.add(fudgeDihedral); pane.addCell(clearButton); pane.newRow().save().hfill(true).vfill(true); pane.add(new JScrollPane(pkList.pointList),3,1); pane.newRow().restore(); pane.newRow().save().hfill(true); pane.add(transformButton,3,1); pane.newRow().restore(); pane.add(advBox,2,1); pane.newRow(); pane.add(fbAdvOpt,3,1); //pane.add(dragBox,3,1); //dialog.setContentPane(pane); } //}}} //{{{ start public void start() { if (kMain.getKinemage() == null) return; adjacencyMap = new HashMap(); idealValue = Double.NaN; //buildAdjacencyList(); this.services.setID("Click on points to set references for motion."); show(); } //}}} //{{{ xx_click() functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); if (p != null) { pkList.add(p.getName(), p); int size = pkList.count(); if (fudgeDistance.isSelected()) { if (size >= 2) { buildAdjacencyList(); firstClick = (AbstractPoint)pkList.get(size-2); secondClick = (AbstractPoint)pkList.get(size-1); double orig = (new Triple(firstClick)).distance(secondClick); String ans = askInput("distance?", orig); if (ans != null) { idealValue = Double.parseDouble(ans); //double dist = Double.parseDouble(ans); //System.out.println("starting to find mobiles"); mobilityFinder(firstClick, secondClick); updateMobKlist(); this.services.setID("Green points show which points are going to move. If not correct, hit clear and try again!"); //System.out.println("translating mobiles"); //translatePoints(firstClick, secondClick, dist); //System.out.println("finished"); } else { clear(); } //pkList.clear(); //mobileList.clear(); } } else if (fudgeAngle.isSelected()) { if (size >= 3) { buildAdjacencyList(); firstClick = (AbstractPoint) pkList.get(size-3); secondClick = (AbstractPoint) pkList.get(size-2); thirdClick = (AbstractPoint) pkList.get(size-1); double currAngle = Triple.angle(firstClick, secondClick, thirdClick); String ans = askInput("angle?", currAngle); //System.out.println(ans); if (ans != null) { idealValue = Double.parseDouble(ans); //double idealAngle = Double.parseDouble(ans); //System.out.println("starting to find mobiles"); mobilityFinder(secondClick, thirdClick); updateMobKlist(); this.services.setID("Green points show which points are going to move. If not correct, hit clear and try again!"); //System.out.println("translating mobiles"); //double currAngle = Triple.angle(firstClick, secondClick, (AbstractPoint) p); //rotatePoints(firstClick, secondClick, thirdClick, idealAngle); //System.out.println("finished"); } else { clear(); } //pkList.clear(); //mobileList.clear(); } } else if (fudgeDihedral.isSelected()) { if (size >= 4) { buildAdjacencyList(); firstClick = (AbstractPoint) pkList.get(size-4); secondClick = (AbstractPoint) pkList.get(size-3); thirdClick = (AbstractPoint) pkList.get(size-2); fourthClick = (AbstractPoint) pkList.get(size-1); double currAngle = Triple.dihedral(firstClick, secondClick, thirdClick, fourthClick); String ans = askInput("dihedral angle?", currAngle); //System.out.println(ans); if (ans != null) { idealValue = Double.parseDouble(ans); //double idealAngle = Double.parseDouble(ans); //System.out.println("starting to find mobiles"); if (onePointBox.isSelected()) { mobilityFinder(thirdClick, fourthClick); } else { mobilityFinder(secondClick, thirdClick); } updateMobKlist(); this.services.setID("Green points show which points are going to move. If not correct, hit clear and try again!"); //System.out.println("finished finding mobiles"); //double currAngle = Triple.dihedral(firstClick, secondClick, thirdClick, (AbstractPoint) p); //rotateDihedral(firstClick, secondClick, thirdClick, fourthClick, idealAngle); //System.out.println("finished"); } else { clear(); } //pkList.clear(); //mobileList.clear(); } } } } //}}} //{{{ old click /** Override this function for (left-button) clicks */ /* public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); if (p != null) { if (fudgeDistance.isSelected()) { if (firstClick != null) { buildAdjacencyList(); double orig = (new Triple(firstClick)).distance(p); String ans = askInput("distance?", orig); if (ans != null) { double dist = Double.parseDouble(ans); //System.out.println("starting to find mobiles"); mobilityFinder(firstClick,(AbstractPoint) p); //System.out.println(mobilePoints.size()); //System.out.println("finished finding mobiles"); translatePoints(firstClick, (AbstractPoint) p, dist); //System.out.println("finished"); } firstClick = null; } else { firstClick = (AbstractPoint) p; } } if (fudgeAngle.isSelected()) { if (firstClick !=null) { if (secondClick != null) { buildAdjacencyList(); double currAngle = Triple.angle(firstClick, secondClick, p); String ans = askInput("angle?", currAngle); //System.out.println(ans); if (ans != null) { double idealAngle = Double.parseDouble(ans); System.out.println("starting to find mobiles"); mobilityFinder(secondClick,(AbstractPoint) p); System.out.println("finished finding mobiles"); //double currAngle = Triple.angle(firstClick, secondClick, (AbstractPoint) p); rotatePoints(firstClick, secondClick, (AbstractPoint) p, idealAngle); System.out.println("finished"); } firstClick = null; secondClick = null; } else { secondClick = (AbstractPoint) p; } } else { firstClick = (AbstractPoint) p; } } if (fudgeDihedral.isSelected()) { if (firstClick !=null) { if (secondClick != null) { if (thirdClick != null) { buildAdjacencyList(); double currAngle = Triple.dihedral(firstClick, secondClick, thirdClick, (AbstractPoint) p); String ans = askInput("dihedral angle?", currAngle); //System.out.println(ans); if (ans != null) { double idealAngle = Double.parseDouble(ans); //System.out.println("starting to find mobiles"); if (onePointBox.isSelected()) { mobilityFinder(thirdClick, (AbstractPoint) p); } else { mobilityFinder(secondClick, thirdClick); } //System.out.println("finished finding mobiles"); //double currAngle = Triple.dihedral(firstClick, secondClick, thirdClick, (AbstractPoint) p); rotateDihedral(firstClick, secondClick, thirdClick, (AbstractPoint) p, idealAngle); //System.out.println("finished"); } firstClick = null; secondClick = null; thirdClick = null; } else { thirdClick = (AbstractPoint) p; } } else { secondClick = (AbstractPoint) p; } } else { firstClick = (AbstractPoint) p; } } } } */ //}}} //{{{ clear public void clear() { pkList.clear(); mobileList.clear(); firstClick = null; secondClick = null; thirdClick = null; fourthClick = null; idealValue = Double.NaN; this.services.setID(""); transformButton.setEnabled(false); kCanvas.repaint(); } //}}} //{{{ askInput private String askInput(String f, double orig) { String choice = (String) JOptionPane.showInputDialog(kMain.getTopWindow(), "What is your desired " + f + " (orig value: " + df.format(orig) + ")"); return choice; } //}}} //{{{ mousePressed public void mousePressed(MouseEvent ev) { super.mousePressed(ev); if (dragBox.isSelected()) { //AbstractPoint draggedPoint = null; if(kMain.getKinemage() != null) { buildAdjacencyList(); draggedPoint = (AbstractPoint) kCanvas.getEngine().pickPoint(ev.getX(), ev.getY(), services.doSuperpick.isSelected()); } else {draggedPoint = null;} // Otherwise, we just create a nonsensical warning message about stereo picking if(draggedPoint == null) mobilePoints = new HashSet(); else { mobilityFinder(null, draggedPoint); } } } //}}} //{{{ drag //################################################################################################## /** Override this function for (left-button) drags */ public void drag(int dx, int dy, MouseEvent ev) { //System.out.println(dx + ";" + dy); KView v = kMain.getView(); if(dragBox.isSelected() && v != null && draggedPoint != null) { Dimension dim = kCanvas.getCanvasSize(); float[] xVector = v.translateRotated(1, 0, 0, Math.min(dim.width, dim.height)); float[] yVector = v.translateRotated(0, -1, 0, Math.min(dim.width, dim.height)); VectorPoint startAxis = new VectorPoint("start", null); startAxis.setXYZ(draggedPoint.getX(), draggedPoint.getY(), draggedPoint.getZ()); VectorPoint xAxis = new VectorPoint("xAxis", startAxis); xAxis.setXYZ(draggedPoint.getX() + xVector[0], draggedPoint.getY() + xVector[1], draggedPoint.getZ() + xVector[2]); VectorPoint yAxis = new VectorPoint("yAxis", startAxis); yAxis.setXYZ(draggedPoint.getX() + yVector[0], draggedPoint.getY() + yVector[1], draggedPoint.getZ() + yVector[2]); float xRotAmount = ((float)(2.0*Math.PI) * dx / 3f); Transform xRotate = new Transform(); xRotate = xRotate.likeRotation(draggedPoint, yAxis, xRotAmount); float yRotAmount = ((float)(2.0*Math.PI) * dy / 3f); Transform yRotate = new Transform(); yRotate = yRotate.likeRotation(draggedPoint, xAxis, yRotAmount); //System.out.println("new axis calced"); HashSet tempSet = new HashSet(); // for storing new, moved coords temporarily for mobilePoints Kinemage kin = kMain.getKinemage(); Iterator iter = kin.iterator(); while (iter.hasNext()) { KGroup group = (KGroup) iter.next(); if (group.isOn()) { KIterator groupIter = KIterator.allPoints(group); for (KPoint pt : groupIter) { /* Iterator groupIters = group.iterator(); while (groupIters.hasNext()) { KSubgroup sub = (KSubgroup) groupIters.next(); Iterator subIters = sub.iterator(); while (subIters.hasNext()) { KList list = (KList) subIters.next(); Iterator listIter = list.iterator(); while (listIter.hasNext()) { */ AbstractPoint point = (AbstractPoint) pt; if (mobilePoints.contains(point)) { xRotate.transform(point); yRotate.transform(point); tempSet.add(clonePoint(point)); } //} //} } } } mobilePoints.clear(); mobilePoints.addAll(tempSet); } else super.drag(dx, dy, ev); } //}}} //{{{ s_drag /** Override this function for right-button/shift drags */ public void s_drag(int dx, int dy, MouseEvent ev) { KView v = kMain.getView(); if(v != null && draggedPoint != null) { Dimension dim = kCanvas.getCanvasSize(); //float[] center = v.getCenter(); //float[] offset = v.translateRotated(ev.getX() - dim.width/2, dim.height/2 - ev.getY(), 0, Math.min(dim.width, dim.height)); Triple origCoord = new Triple().like(draggedPoint); //System.out.println(origCoord); //origCoord = (new Triple(center[0]+offset[0], center[1]+offset[1], center[2]+offset[2])).sub(origCoord); //System.out.println(origCoord); float[] offset = v.translateRotated(dx, -dy, 0, Math.min(dim.width, dim.height)); //draggedPoint.setX(draggedPoint.getX() + origCoord.getX()); //draggedPoint.setY(draggedPoint.getY() + origCoord.getY()); //draggedPoint.setZ(draggedPoint.getZ() + origCoord.getZ()); draggedPoint.setX(draggedPoint.getX() + offset[0]); draggedPoint.setY(draggedPoint.getY() + offset[1]); draggedPoint.setZ(draggedPoint.getZ() + offset[2]); HashSet tempSet = new HashSet(); // for storing new, moved coords temporarily for mobilePoints Kinemage kin = kMain.getKinemage(); Iterator iter = kin.iterator(); while (iter.hasNext()) { KGroup group = (KGroup) iter.next(); if (group.isOn()) { KIterator groupIter = KIterator.allPoints(group); for (KPoint pt : groupIter) { /* Iterator groupIters = group.iterator(); while (groupIters.hasNext()) { KSubgroup sub = (KSubgroup) groupIters.next(); Iterator subIters = sub.iterator(); while (subIters.hasNext()) { KList list = (KList) subIters.next(); Iterator listIter = list.iterator(); while (listIter.hasNext()) { */ AbstractPoint point = (AbstractPoint) pt; if (mobilePoints.contains(point)) { //System.out.println("Moving: " + point); //mobilePoints.remove(point); //point.setX(point.getX() + origCoord.getX()); //point.setY(point.getY() + origCoord.getY()); //point.setZ(point.getZ() + origCoord.getZ()); point.setX(point.getX() + offset[0]); point.setY(point.getY() + offset[1]); point.setZ(point.getZ() + offset[2]); tempSet.add(clonePoint(point)); } //} //} } } } mobilePoints.clear(); mobilePoints.addAll(tempSet); } else super.s_drag(dx, dy, ev); } //}}} //{{{ buildAdjacencyList public void buildAdjacencyList() { adjacencyMap = new HashMap(); Kinemage kin = kMain.getKinemage(); if (kin != null) kin.setModified(true); KIterator iter = KIterator.allPoints(kin); for (KPoint point : iter) { if (point instanceof VectorPoint) { VectorPoint currPoint = (VectorPoint) point; if ((!currPoint.isBreak())/*&&(currPoint.isOn())*/) { VectorPoint prevPoint = (VectorPoint) currPoint.getPrev(); addPoints(prevPoint, currPoint); addPoints(currPoint, prevPoint); } } } } //}}} //{{{ addPoints private void addPoints(VectorPoint prev, VectorPoint curr) { if (adjacencyMap.containsKey(prev)) { HashSet prevSet = (HashSet) adjacencyMap.get(prev); prevSet.add(curr); } else { HashSet prevSet = new HashSet(); prevSet.add(curr); adjacencyMap.put(prev, prevSet); } } //}}} //{{{ mobilityFinder public void mobilityFinder(AbstractPoint first, AbstractPoint second) { Set keys = adjacencyMap.keySet(); Iterator iter = keys.iterator(); HashMap colors = new HashMap(); mobilePoints = new HashSet(); if (onePointBox.isSelected()) { mobilePoints.add(clonePoint(second)); HashSet set = (HashSet) adjacencyMap.get(second); iter = set.iterator(); while (iter.hasNext()) { AbstractPoint adjPoint = (AbstractPoint) iter.next(); HashSet adjSet = (HashSet) adjacencyMap.get(adjPoint); if (adjSet.size() == 1) { mobilePoints.add(clonePoint(adjPoint)); } } } else { while (iter.hasNext()) { Object key = iter.next(); colors.put(key, KPalette.white); } colors.put(second, KPalette.gray); colors.put(first, KPalette.deadblack); LinkedList queue = new LinkedList(); queue.addFirst(second); mobilePoints.add(clonePoint(second)); while (!queue.isEmpty()) { AbstractPoint point = (AbstractPoint) queue.getFirst(); queue.removeFirst(); HashSet adjSet = (HashSet) adjacencyMap.get(point); if (adjSet != null) { Iterator adjIter = adjSet.iterator(); while (adjIter.hasNext()) { AbstractPoint adjPoint = (AbstractPoint) adjIter.next(); if (colors.get(adjPoint).equals(KPalette.white)) { colors.put(adjPoint, KPalette.gray); mobilePoints.add(clonePoint(adjPoint)); queue.addLast(adjPoint); } } } colors.put(point, KPalette.deadblack); } } //updateMobKlist(); } //}}} //{{{ updateMobKlist public void updateMobKlist() { transformButton.setEnabled(true); if (mobilePoints.size() > 0) { Kinemage kin = kMain.getKinemage(); KIterator points; if (moveVisBox.isSelected()) { points = KIterator.visiblePoints(kin); } else { points = KIterator.allPoints(kin); } //KIterator groupIter = KIterator.allPoints(group); for (KPoint pt : points) { AbstractPoint point = (AbstractPoint) pt; if (mobilePoints.contains(point)) { if (point instanceof VectorPoint) { VectorPoint prev = null; if (pt.getPrev() != null) { prev = new VectorPoint(pt.getPrev().getName(), null); prev.setX(pt.getPrev().getX()); prev.setY(pt.getPrev().getY()); prev.setZ(pt.getPrev().getZ()); mobileList.add(prev); } VectorPoint vect = new VectorPoint(pt.getName(), prev); vect.setX(point.getX()); vect.setY(point.getY()); vect.setZ(point.getZ()); mobileList.add(vect); } else { BallPoint ball = new BallPoint(pt.getName()); ball.setRadius((float)0.25); ball.setX(point.getX()); ball.setY(point.getY()); ball.setZ(point.getZ()); mobileList.add(ball); } } } kCanvas.repaint(); } } //}}} //{{{ clonePoint private Object clonePoint(AbstractPoint point) { AbstractPoint pointClone; if (point instanceof VectorPoint) { pointClone = new VectorPoint(point.getName(), (VectorPoint) point.getPrev()); } else { pointClone = new BallPoint(point.getName()); } pointClone.setX((float) point.getX()); pointClone.setY((float) point.getY()); pointClone.setZ((float) point.getZ()); pointClone.setOn(point.isOn()); return pointClone; } //}}} //{{{ translatePoints public void translatePoints(AbstractPoint first, AbstractPoint second, double idealDist) { //System.out.println("translate"); double realDist = (new Triple(first)).distance(second); Triple origVector = new Triple(second.getX() - first.getX(), second.getY() - first.getY(), second.getZ() - first.getZ()); origVector = origVector.mult(idealDist/realDist).add(first).sub(second); Kinemage kin = kMain.getKinemage(); KIterator points; if (moveVisBox.isSelected()) { points = KIterator.visiblePoints(kin); } else { points = KIterator.allPoints(kin); } for (KPoint pt : points) { AbstractPoint point = (AbstractPoint) pt; if (mobilePoints.contains(point)) { //System.out.println("Moving: " + point); point.setX(point.getX() + origVector.getX()); point.setY(point.getY() + origVector.getY()); point.setZ(point.getZ() + origVector.getZ()); } } } //}}} //{{{ rotatePoints public void rotatePoints(AbstractPoint first, AbstractPoint second, AbstractPoint third, double idealAngle) { double currAngle = Triple.angle(first, second, third); //System.out.println(currAngle + ", " + idealAngle); Triple vectA = new Triple(first.getX()-second.getX(), first.getY()-second.getY(), first.getZ()-second.getZ()); Triple vectB = new Triple(third.getX()-second.getX(), third.getY()-second.getY(), third.getZ()-second.getZ()); Triple normal = vectA.cross(vectB); VectorPoint ppoint = new VectorPoint("axis", null); ppoint.setXYZ(second.getX(), second.getY(), second.getZ()); VectorPoint vpoint = new VectorPoint("test", ppoint); vpoint.setX(normal.getX()+second.getX()); vpoint.setY(normal.getY()+second.getY()); vpoint.setZ(normal.getZ()+second.getZ()); //drawDebug(ppoint, vpoint); Transform rotate = new Transform(); rotate = rotate.likeRotation(ppoint, vpoint, idealAngle - currAngle); Kinemage kin = kMain.getKinemage(); KIterator points; if (moveVisBox.isSelected()) { points = KIterator.visiblePoints(kin); } else { points = KIterator.allPoints(kin); } //KIterator groupIter = KIterator.allPoints(group); for (KPoint pt : points) { AbstractPoint point = (AbstractPoint) pt; if (mobilePoints.contains(point)) { rotate.transform(point); } } } //}}} //{{{ rotateDihedral public void rotateDihedral(AbstractPoint first, AbstractPoint second, AbstractPoint third, AbstractPoint fourth, double idealAngle) { double currAngle = Triple.dihedral(first, second, third, fourth); Transform rotate = new Transform(); rotate = rotate.likeRotation(second, third, idealAngle - currAngle); Kinemage kin = kMain.getKinemage(); KIterator points; if (moveVisBox.isSelected()) { points = KIterator.visiblePoints(kin); } else { points = KIterator.allPoints(kin); } //KIterator groupIter = KIterator.allPoints(group); for (KPoint pt : points) { AbstractPoint point = (AbstractPoint) pt; if (mobilePoints.contains(point)) { rotate.transform(point); } } } //}}} //{{{ drawDebug private void drawDebug(AbstractPoint prev, VectorPoint point) { Kinemage kin = kMain.getKinemage(); KGroup group = new KGroup("test"); kin.add(group); KGroup sub = new KGroup("test"); group.add(sub); KList list = new KList(KList.VECTOR, "list"); sub.add(list); list.add(prev); list.add(point); } //}}} //{{{ onExport public void onExport(ActionEvent ev) { buildAdjacencyList(); JFileChooser saveChooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) { saveChooser.setCurrentDirectory(new File(currdir)); } if (saveChooser.APPROVE_OPTION == saveChooser.showSaveDialog(kMain.getTopWindow())) { File f = saveChooser.getSelectedFile(); if( !f.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { savePDB(f); } } } //}}} //{{{ onTrans public void onTrans(ActionEvent ev) { //System.out.println("transform button hit"); if (!mobilePoints.isEmpty() && idealValue != Double.NaN) { if (fudgeDistance.isSelected()) { if ((firstClick != null)&&(secondClick != null)) { translatePoints(firstClick, secondClick, idealValue); } } else if (fudgeAngle.isSelected()) { if ((firstClick != null)&&(secondClick != null)&&(thirdClick != null)) { rotatePoints(firstClick, secondClick, thirdClick, idealValue); } } else if (fudgeDihedral.isSelected()) { if ((firstClick != null)&&(secondClick != null)&&(thirdClick != null)&&(fourthClick != null)) { rotateDihedral(firstClick, secondClick, thirdClick, fourthClick, idealValue); } } clear(); } } //}}} //{{{ onClear public void onClear(ActionEvent ev) { clear(); } //}}} //{{{ savePDB public void savePDB(File f) { try { Writer w = new FileWriter(f); PrintWriter out = new PrintWriter(new BufferedWriter(w)); //Set keys = adjacencyMap.keySet(); int i = 1; PointComparator pc = new PointComparator(); TreeSet keyTree = new TreeSet(pc); keyTree.addAll(adjacencyMap.keySet()); Iterator iter = keyTree.iterator(); while (iter.hasNext()) { AbstractPoint point = (AbstractPoint) iter.next(); out.print("ATOM "); out.print(formatStrings(String.valueOf(i), 5) + " "); //out.print(point.getName().toUpperCase().substring(0, 8) + " " + point.getName().toUpperCase().substring(8) + " "); String atomName = PointComparator.getAtomName(point.getName().toUpperCase()); if (atomName.equals("UNK ")) { } out.print(PointComparator.getAtomName(point.getName().toUpperCase())); out.print(KinUtil.getResAA(point.getName().toUpperCase()) + " "); out.print(formatStrings(String.valueOf(KinUtil.getResNumber(point.getName().toUpperCase())), 4) + " "); out.print(formatStrings(df.format(point.getX()), 8)); out.print(formatStrings(df.format(point.getY()), 8)); out.print(formatStrings(df.format(point.getZ()), 8)); out.println(" 1.00 0.00"); i++; } out.flush(); w.close(); } catch (IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } //}}} //{{{ formatString public String formatStrings(String value, int numSpaces) { while (value.length() < numSpaces) { value = " " + value; } return value; //if (coord < 0) { // return (df.format(coord)); //} //return " " + (df.format(coord)); } //}}} //{{{ doTransform //################################################################################################## public void doTransform(Engine engine, Transform xform) { pkList.markList.doTransform(engine, xform); mobileList.doTransform(engine, xform); } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return pane; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#kinfudger-tool"; } public String toString() { return "Fudge kins"; } //}}} }//class king-2.21.120420/extratools/src/king/tool/postkin/ResidueInfo.java0000644000000000000000000000536511531213006023262 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import driftwood.moldb2.Residue; // This class is intended to store information about a residue so it can be used // as a hashmap key. This allows me to deal with alternate conformations (e.g. in // the geometry-analyzing plugin). public class ResidueInfo extends Residue { //{{{ Variable definitions //############################################################### //int resNum; //String resName; //}}} public ResidueInfo(String chain, String segment, String seqNum, String insCode, String resName) { //resNum = rNum; //resName = rName; super(chain, segment, seqNum, insCode, resName); } //{{{ compareTo, toString //################################################################################################## /** * Copied from Residue, but changed so it doesn't use memory location, so residues with same name are equal. */ public int compareTo(Object o) { if(o == null) return 1; // null sorts to front ResidueInfo r1 = this; ResidueInfo r2 = (ResidueInfo)o; int comp = r1.getChain().compareTo(r2.getChain()); if(comp != 0) return comp; comp = r1.getSegment().compareTo(r2.getSegment()); if(comp != 0) return comp; comp = r1.getSequenceInteger() - r2.getSequenceInteger(); if(comp != 0) return comp; // seqNums could still differ by whitespace... comp = r1.getSequenceNumber().compareTo(r2.getSequenceNumber()); if(comp != 0) return comp; comp = r1.getInsertionCode().compareTo(r2.getInsertionCode()); if(comp != 0) return comp; comp = r1.getName().compareTo(r2.getName()); if(comp != 0) return comp; return 0; } /* public int getNumber() { return resNum; } public String getName() { return resName; } public int compareTo(ResidueInfo rinfo) { int resnumComp = this.getNumber() - rinfo.getNumber(); int resnameComp = this.getName().compareTo(rinfo.getName()); if (resnumComp < 0) return -1; if (resnumComp > 0) return 1; return resnameComp; } public int compareTo(Object obj) { if (obj instanceof ResidueInfo) { return this.compareTo((ResidueInfo) obj); } else { throw new ClassCastException("Not a ResidueInfo object!"); } } public int hashCode() { String combine = (new Integer(resNum)).toString() + resName; return combine.hashCode(); } public boolean equals(Object obj) { if (obj instanceof ResidueInfo) { ResidueInfo resinfo2 = (ResidueInfo) obj; return ((this.getNumber()==resinfo2.getNumber())&&(this.getName().equals(resinfo2.getName()))); } return false; } */ } king-2.21.120420/extratools/src/king/tool/postkin/RecolorNonRibbon.java0000644000000000000000000002046511531213006024260 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import king.tool.util.*; import java.util.*; import driftwood.moldb2.AminoAcid; //}}} /** * RecolorNonRibbon implements Recolorator to allow recoloring of * kinemage sections that aren't ribbons (C-alphas, lots). * *

Copyright (C) 2005 by Vincent B. Chen. All rights reserved. *
Begun on Feb 20 2005 **/ public class RecolorNonRibbon extends Recolorator //implements ActionListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## // sortedKin is hashmap with masters as keys, arraylists as values // ribbonMap is hashmap with Klists as keys, arraylists as values //HashMap sortedKin, ribbonMap; // sortbyNum is hashmap with Integer resNum as keys, arraylists as values //HashMap sortbyNum; //HashMap sortedKin; HashMap> structMap; //HashSet clickedLists; String[] aaNames = {"gly", "ala", "ser", "thr", "cys", "val", "leu", "ile", "met", "pro", "phe", "tyr", "trp", "asp", "glu", "asn", "gln", "his", "lys", "arg"}; //JComboBox aaBox; //JCheckBox colorPrior; //JTextPane textPane = null; //SimpleAttributeSet sas; //}}} //{{{ Constructor(s) //############################################################################## public RecolorNonRibbon() { //super(tb); newGroup(); //clickedLists = new HashSet(); //undoStack = new LinkedList(); //buildGUI(); } //}}} //{{{ preChangeAnalyses /** * Reinitializes the class and splits the structure in separate lists, based on residue number. **/ public void preChangeAnalyses(KPoint p) { newGroup(); splitStructure(p); } //}}} //{{{ splitStructure //################################################################################################## /** * Splits the parent list of a point into separate lists, based on residue number. **/ public void splitStructure(KPoint p) { String pointID = p.getName().trim(); KList parentList = (KList) p.getParent(); //clickedLists.add(parentList); //KSubgroup parentGroup = (KSubgroup) parentList.getParent(); KIterator points = KIterator.allPoints(parentList); for (KPoint point : points) { //Iterator iter = parentList.iterator(); //KPoint point; //ArrayList listofPoints = new ArrayList(); //while (iter.hasNext()) { //point = (KPoint) iter.next(); //String master = getOldMaster(list); //undoColors.put(point, point.getColor()); Integer resNumber = new Integer(KinUtil.getResNumber(point.getName())); ArrayList listofPoints = structMap.get(resNumber); if (listofPoints == null) { listofPoints = new ArrayList(); } listofPoints.add(point); structMap.put(resNumber, listofPoints); } //Set keySet = structMap.keySet(); TreeSet keys = new TreeSet(structMap.keySet()); lowResNum = (Integer) keys.first(); highResNum = (Integer) keys.last(); } //}}} //{{{ contains // public boolean contains(KPoint p) { // KList parentList = (KList) p.getParent(); // Integer resNum = new Integer(KinUtil.getResNumber(p.getName())); // return (structMap.containsKey(resNum)&&clickedLists.contains(parentList)); // } //}}} //{{{ highlightRange //################################################################################################### /** * For highlighting a range of a kinemage. The first time this function is called, it stores p * as the starting point, and the second time it's called, it colors the region between the stored p * and the current p. * **/ public void highlightRange(int firstNum, int secondNum, KPaint[] colors) { //undoColors.clear(); pts.clear(); clrs.clear(); int index = 0; for (int i = firstNum; i <= secondNum; i++) { if (index >= colors.length) { index = 0; } Integer hashKey = new Integer(i); if (structMap.containsKey(hashKey)) { ArrayList listofPoints = structMap.get(hashKey); for (KPoint point : listofPoints) { //Iterator iter = listofLists.iterator(); //while (iter.hasNext()) { //KPoint point = (KPoint) iter.next(); //undoColors.put(point, point.getColor()); pts.add(point); clrs.add(point.getColor()); point.setColor((KPaint) colors[index]); } } index++; } } //}}} //{{{ highlightAll //####################################################################################################### /** * For coloring all of a KList. **/ public void highlightAll(KPoint p, KPaint[] colors) { //KList parentList = (KList) p.getParent(); //Iterator iter = parentList.iterator(); highlightRange(lowResNum.intValue(), highResNum.intValue(), colors); } //}}} //{{{ highlightAA /** * For coloring particular amino acids. **/ public void highlightAA(KPoint p, String aaName, KPaint color, boolean colorPrior) { //undoColors.clear(); pts.clear(); clrs.clear(); HashSet aaNums = new HashSet(); KList parentList = (KList) p.getParent(); KIterator points = KIterator.allPoints(parentList); for (KPoint point : points) { //Iterator iter = parentList.iterator(); //while (iter.hasNext()) { //KPoint point = (KPoint) iter.next(); //undoColors.put(point, point.getColor()); pts.add(point); clrs.add(point.getColor()); String name = point.getName(); if (name.indexOf(aaName) != -1) { point.setColor(color); Integer resNum = new Integer(KinUtil.getResNumber(point.getName())); aaNums.add(resNum); } } if (colorPrior) { Iterator iter = aaNums.iterator(); while (iter.hasNext()) { int priorResNum = ((Integer) iter.next()).intValue() - 1; ArrayList listofPoints = structMap.get(new Integer(priorResNum)); if (listofPoints != null) { Iterator listIter = listofPoints.iterator(); while (listIter.hasNext()) { KPoint point = (KPoint) listIter.next(); if (point != null) { //undoColors.put(point, point.getColor()); pts.add(point); clrs.add(point.getColor()); point.setColor(KPalette.green); } } } } } } //}}} //{{{ newGroup //###################################################################################################### /** * Resets the tool by creating new hashmaps for the various list storing maps. This is for coloring * ribbons in different KGroups, or in new kinemages. **/ public void newGroup() { // clickedLists = new HashSet(); pts = new ArrayList(); clrs = new ArrayList(); structMap = new HashMap>(); } //}}} //{{{ onTable /** * Used for determining the amino acid sequence of a clicked-on structure. **/ public String onTable() { TreeSet keys = new TreeSet(structMap.keySet()); String aaText = ""; int j = 0; for (int i = 1; i <= highResNum.intValue(); i++) { if (j == 5) { aaText = aaText.concat(" "); j = 0; } j++; if (keys.contains(new Integer(i))) { ArrayList list = structMap.get(new Integer(i)); KPoint point = list.get(0); String aa = KinUtil.getResName(point); if (aa.length()==4) { aa = aa.substring(1); } aaText = aaText.concat(AminoAcid.translate(aa)); } else { aaText = aaText.concat("-"); } } return aaText; } //}}} //{{{ debug //###################################################################################################### /** * debugger function. **/ public void debug() { Set keys = structMap.keySet(); Iterator iter = keys.iterator(); while (iter.hasNext()) { String master = (String) iter.next(); ArrayList listofLists = (ArrayList) structMap.get(master); System.out.print(master + ": "); System.out.print(listofLists.size() + "; "); } System.out.println(""); } //}}} }//class king-2.21.120420/extratools/src/king/tool/postkin/NikilomPlugin.java0000644000000000000000000000715011744305704023636 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import king.tool.util.*; import java.util.*; import java.io.*; import javax.swing.*; import java.awt.event.*; import driftwood.gui.*; import driftwood.util.*; //}}} /** * NikilomPlugin builds a PDB file from a kinemage. * It builds on Vince's Kinimol, but tries to be more generic & reliable. * *

Copyright (C) 2012 by Daniel A. Keedy. All rights reserved. *
Begun on Fri Jan 6 2011 */ public class NikilomPlugin extends Plugin { //{{{ Constants //############################################################################## //}}} //{{{ Variables //############################################################################## //}}} //{{{ Constructor //############################################################################## public NikilomPlugin(ToolBox tb) { super(tb); } //}}} //{{{ savePdb //############################################################################## public void savePdb(File f) { Iterator groups = kMain.getKinemage().iterator(); int groupCount = 0; while(groups.hasNext()) { KGroup group = (KGroup) groups.next(); if(group.isOn()) { groupCount++; try { FileWriter w = new FileWriter(f, true); // to append (?) PrintWriter out = new PrintWriter(new BufferedWriter(w)); out.println("MODEL "+Strings.forceRight(""+groupCount, 4)); out.print(Kinimol.convertGrouptoPdb(group, group.getName())); out.println("ENDMDL"); out.flush(); w.close(); } catch(IOException ex) { System.out.println(ex); JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } } } //}}} //{{{ onConvert //############################################################################## public void onConvert(ActionEvent ev) { JFileChooser saveChooser = new JFileChooser(); saveChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); String currdir = System.getProperty("user.dir"); if(currdir != null) { saveChooser.setCurrentDirectory(new File(currdir)); } if(saveChooser.APPROVE_OPTION == saveChooser.showSaveDialog(kMain.getTopWindow())) { File f = saveChooser.getSelectedFile(); if(!f.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "The file "+f.toString()+" exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) { savePdb(f); } } } //}}} //{{{ getToolsMenuItem, toString //############################################################################## public JMenuItem getToolsMenuItem() { JMenuItem menu = new JMenuItem(new ReflectiveAction("Kin -> PDB 2.0", null, this, "onConvert")); return menu; } public String toString() { return "Kin -> PDB 2.0"; } //}}} }//class king-2.21.120420/extratools/src/king/tool/postkin/GeometryPlugin.java0000644000000000000000000005324111531213006024014 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import king.points.*; import king.tool.util.*; import driftwood.r3.*; import driftwood.gui.*; import driftwood.moldb2.Residue; import driftwood.data.*; import driftwood.util.SoftLog; import java.net.*; import java.util.*; import java.io.*; import javax.swing.*; import java.awt.event.*; import java.text.DecimalFormat; //}}} public class GeometryPlugin extends Plugin { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.000"); //static final DecimalFormat intf = new DecimalFormat("0"); //}}} //{{{ Variable definitions //############################################################### TreeMap caMap; TreeMap oxyMap; TreeMap carbMap; TreeMap nitMap; HashMap sequenceMap; HashMap pepLength; HashMap pepSD; HashMap proLength; HashMap proSD; HashMap glyLength; HashMap glySD; HashMap pepAng; HashMap pepAngSD; HashMap proAng, proAngSD; HashMap glyAng, glyAngSD; //HashMap cisProAng, cisProAngSD; KList distList, angList, dihList; JFileChooser filechooser; //}}} //{{{ Constructor public GeometryPlugin(ToolBox tb) { super(tb); } //}}} //{{{ initialize /** * Contains all the hardcoded backbone geometry data from Engh and Huber 1999 values. **/ public void initialize() { caMap = new TreeMap(); oxyMap = new TreeMap(); nitMap = new TreeMap(); carbMap = new TreeMap(); sequenceMap = new HashMap(); pepLength = new HashMap(); pepLength.put("nca", new Double(1.459)); pepLength.put("cac", new Double(1.525)); pepLength.put("co", new Double(1.229)); pepLength.put("cn", new Double(1.336)); pepSD = new HashMap(); pepSD.put("nca", new Double(0.020)); pepSD.put("cac", new Double(0.026)); pepSD.put("co", new Double(0.019)); pepSD.put("cn", new Double(0.023)); proLength = new HashMap(); proLength.put("nca", new Double(1.468)); proLength.put("cac", new Double(1.524)); proLength.put("co", new Double(1.228)); proLength.put("cn", new Double(1.338)); proSD = new HashMap(); proSD.put("nca", new Double(0.017)); proSD.put("cac", new Double(0.020)); proSD.put("co", new Double(0.020)); proSD.put("cn", new Double(0.019)); glyLength = new HashMap(); glyLength.put("nca", new Double(1.456)); glyLength.put("cac", new Double(1.514)); glyLength.put("co", new Double(1.232)); glyLength.put("cn", new Double(1.326)); glySD = new HashMap(); glySD.put("nca", new Double(0.015)); glySD.put("cac", new Double(0.016)); glySD.put("co", new Double(0.016)); glySD.put("cn", new Double(0.018)); pepAng = new HashMap(); pepAng.put("ncac", new Double(111)); pepAng.put("cacn", new Double(117.2)); pepAng.put("caco", new Double(120.1)); pepAng.put("ocn", new Double(122.7)); pepAng.put("cnca", new Double(121.7)); pepAngSD = new HashMap(); pepAngSD.put("ncac", new Double(2.7)); pepAngSD.put("cacn", new Double(2.2)); pepAngSD.put("caco", new Double(2.1)); pepAngSD.put("ocn", new Double(1.6)); pepAngSD.put("cnca", new Double(2.5)); proAng = new HashMap(); proAng.put("ncac", new Double(112.1)); proAng.put("cacn", new Double(117.1)); proAng.put("caco", new Double(120.2)); proAng.put("ocn", new Double(121.1)); proAng.put("cnca", new Double(119.3)); //trans pro proAng.put("ciscnca", new Double(127.0)); proAngSD = new HashMap(); proAngSD.put("ncac", new Double(2.6)); proAngSD.put("cacn", new Double(2.8)); proAngSD.put("caco", new Double(2.4)); proAngSD.put("ocn", new Double(1.9)); proAngSD.put("cnca", new Double(1.5)); proAngSD.put("ciscnca", new Double(2.4)); glyAng = new HashMap(); glyAng.put("ncac", new Double(113.1)); glyAng.put("cacn", new Double(116.2)); glyAng.put("caco", new Double(120.6)); glyAng.put("ocn", new Double(123.2)); glyAng.put("cnca", new Double(122.3)); glyAngSD = new HashMap(); glyAngSD.put("ncac", new Double(2.5)); glyAngSD.put("cacn", new Double(2.0)); glyAngSD.put("caco", new Double(1.8)); glyAngSD.put("ocn", new Double(1.7)); glyAngSD.put("cnca", new Double(2.1)); } //}}} //{{{ reset /** * Resets all the maps containing the KPoints from the kins. **/ public void reset() { caMap = new TreeMap(); oxyMap = new TreeMap(); nitMap = new TreeMap(); carbMap = new TreeMap(); sequenceMap = new HashMap(); } //}}} //{{{ onAnalyzeCurrent /** * Analyzes the geometry of the currently open kinemage. **/ public void onAnalyzeCurrent(ActionEvent e) { initialize(); System.out.println("Analyzing geometry of " + KinUtil.getFirstGroupName(kMain.getKinemage())); //System.out.println("Analyzing geometry of " + pdbFile); KGroup geomGroup = new KGroup("Geometry"); kMain.getKinemage().add(geomGroup); KGroup sub = new KGroup("geom"); geomGroup.add(sub); distList = new KList(KList.BALL, "distances"); angList = new KList(KList.VECTOR, "angles"); dihList = new KList(KList.VECTOR, "dihedrals"); sub.setHasButton(false); sub.add(distList); sub.add(angList); sub.add(dihList); splitKin(kMain.getKinemage()); analyze(); kMain.getKinemage().setModified(true); //kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); } //}}} //{{{ onAnalyzeAll /** * Determines all the files in a given directory, determined by the parent folder * of the file chosen, for geometry analysis. **/ public void onAnalyzeAll(ActionEvent e) { initialize(); if (filechooser == null) makeFileChooser(); filechooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); if(JFileChooser.APPROVE_OPTION == filechooser.showOpenDialog(kMain.getTopWindow())) { File f = filechooser.getSelectedFile(); //System.out.println(f.getPath() + " : " + f.getName() + " : " + f.getParent()); File[] allFiles = f.listFiles(); doAll(allFiles); } } //}}} //{{{ doAll /** * Does analysis on all the files. **/ public void doAll(File[] allFiles) { TreeSet files = new TreeSet(); for (File pdbFile : allFiles) { files.add(pdbFile); } for (File pdbFile : files) { if (pdbFile.getName().indexOf(".kin") > -1) { reset(); kMain.getKinIO().loadFile(pdbFile, null); Kinemage kin = kMain.getKinemage(); for (MasterGroup mast : kin.masterList()) { mast.setOn(false); } kin.getMasterByName("mainchain").setOn(true); kin.getMasterByName("chain A").setOn(true); kin.getMasterByName("alta").setOn(true); //System.out.println("Analyzing geometry of " + KinUtil.getFirstGroupName(kMain.getKinemage())); System.out.println("Analyzing geometry of " + pdbFile); KGroup geomGroup = new KGroup("Geometry"); kMain.getKinemage().add(geomGroup); KGroup sub = new KGroup("geom"); geomGroup.add(sub); distList = new KList(KList.BALL, "distances"); angList = new KList(KList.VECTOR, "angles"); dihList = new KList(KList.VECTOR, "dihedrals"); sub.add(distList); sub.add(angList); sub.add(dihList); //kMain.notifyChange(KingMain.EM_EDIT_GROSS | KingMain.EM_ON_OFF); splitKin(kMain.getKinemage()); analyze(); } kMain.getTextWindow().setText(""); kMain.getStable().closeCurrent(); } //out.flush(); //w.close(); //} catch (IOException ex) { // JOptionPane.showMessageDialog(kMain.getTopWindow(), // "An error occurred while saving the file.", // "Sorry!", JOptionPane.ERROR_MESSAGE); //} } //}}} //{{{ makeFileChooser //################################################################################################## void makeFileChooser() { // Make accessory for file chooser TablePane acc = new TablePane(); // Make actual file chooser -- will throw an exception if we're running as an Applet filechooser = new JFileChooser(); String currdir = System.getProperty("user.dir"); if(currdir != null) filechooser.setCurrentDirectory(new File(currdir)); filechooser.setAccessory(acc); //filechooser.addPropertyChangeListener(this); //filechooser.addChoosableFileFilter(fastaFilter); //filechooser.setFileFilter(fastaFilter); } //}}} //{{{ splitKin /** * Separates protein structure kin by backbone atom name. **/ public void splitKin(Kinemage kin) { KIterator pointIter = KIterator.visiblePoints(kin); for (KPoint pt : pointIter) { String atomName = KinUtil.getAtomName(pt).toLowerCase(); ResidueInfo res = makeResidueInfo(pt); //System.out.println(res); if (atomName.equals("ca")) { caMap.put(res, pt); } if (atomName.equals("o")) { oxyMap.put(res, pt); } if (atomName.equals("n")) { if (pt instanceof VectorPoint) { // to figure out sequence order from connectivity; insertions codes are stupid. VectorPoint nit = (VectorPoint) pt; VectorPoint prev = (VectorPoint) nit.getPrev(); if (prev != null) { String prevAtomName = KinUtil.getAtomName(prev).toLowerCase(); if (prevAtomName.equals("c")) { ResidueInfo prevRes = makeResidueInfo(prev); sequenceMap.put(prevRes, res); } } else { ResidueInfo fakePrev = new ResidueInfo("X", "", "-100", "Z", "ZZZ"); sequenceMap.put(fakePrev, res); } } nitMap.put(res, pt); } if (atomName.equals("c")) { carbMap.put(res, pt); } } } //}}} //{{{ makeResideInfo /** * Takes a KPoint and makes a ResidueInfo object. **/ public ResidueInfo makeResidueInfo(KPoint pt) { String atomName = KinUtil.getAtomName(pt).toLowerCase(); String resName = KinUtil.getResName(pt).toLowerCase(); String resNum = KinUtil.getResNumString(pt); String chainID = KinUtil.getChainID(pt); String insCode = " "; if (!KinUtil.isInteger(resNum)) { int numLength = resNum.length(); if (numLength > 0) { insCode = resNum.substring(numLength - 1); resNum = resNum.substring(0, numLength - 1); } } return new ResidueInfo(chainID, "", resNum, insCode, resName); } //}}} //{{{ analyze /** * Steps through the sequenceMap and calls all the geometry calculation functions. **/ public void analyze() { TreeSet keys = new TreeSet(sequenceMap.keySet()); for (ResidueInfo prevRes : keys) { ResidueInfo res = sequenceMap.get(prevRes); //System.out.println(prevRes + ":" + res); //System.out.println(prevRes); //System.out.println(res); if (caMap.containsKey(res)) { Integer resNum = Integer.valueOf(res.getSequenceNumber()); String resSeq = (res.getSequenceNumber() + res.getInsertionCode()).trim(); String resNumFull = (res.getSequenceNumber() + res.getInsertionCode()).trim() + ":" + KinUtil.getLastString(((KPoint) caMap.get(res)).getName()) + ":" + res.getChain().trim(); String resName = KinUtil.getResName(caMap.get(res)); //System.out.println(resName); calcDist(resNumFull, resName, nitMap.get(res), caMap.get(res)); calcDist(resNumFull, resName, caMap.get(res), carbMap.get(res)); calcDist(resNumFull, resName, carbMap.get(res), oxyMap.get(res)); calcAngle(resNumFull, resName, nitMap.get(res), caMap.get(res), carbMap.get(res)); calcAngle(resNumFull, resName, caMap.get(res), carbMap.get(res), oxyMap.get(res)); if (caMap.containsKey(prevRes)) { calcDist(resNumFull, resName, carbMap.get(prevRes), nitMap.get(res)); calcAngle(resNumFull, resName, oxyMap.get(prevRes), carbMap.get(prevRes), nitMap.get(res)); calcAngle(resNumFull, resName, carbMap.get(prevRes), nitMap.get(res), caMap.get(res), caMap.get(prevRes)); //this calcs the c-n-ca angle; the previous res' ca is to check to see if the peptide is a cis peptide //calcPepDihedral(prevRes.getSequenceNumber() + prevRes.getInsertionCode() + " " + resNumFull, resName, caMap.get(prevRes), carbMap.get(prevRes), nitMap.get(res), caMap.get(res)); calcPepDihedral(resNumFull, resName, caMap.get(prevRes), carbMap.get(prevRes), nitMap.get(res), caMap.get(res)); } if (sequenceMap.containsKey(res)) { //Ideally, if there is a CA, there will be a mapping in seqMap. ResidueInfo nextRes = (ResidueInfo) sequenceMap.get(res); calcAngle(resNumFull, resName, caMap.get(res), carbMap.get(res), nitMap.get(nextRes)); } } } } //}}} //{{{ calcDist /** * Calculates distance between two points and checks to see if it falls within 4 SD * of Engh and Huber values. **/ public void calcDist(String key, String resName, KPoint pt1, KPoint pt2) { //System.out.println(pt1 + " " + pt2); if ((pt1 != null)&&(pt2 != null)) { String atom1 = KinUtil.getAtomName(pt1).toLowerCase(); String atom2 = KinUtil.getAtomName(pt2).toLowerCase(); //String res1 = KinUtil.getResName(pt1).toLowerCase(); double idealdist; double sd; if (resName.equals("pro")) { idealdist = ((Double)proLength.get(atom1 + atom2)).doubleValue(); sd = ((Double)proSD.get(atom1 + atom2)).doubleValue(); } else if (resName.equals("gly")) { idealdist = ((Double)glyLength.get(atom1 + atom2)).doubleValue(); sd = ((Double)glySD.get(atom1 + atom2)).doubleValue(); } else { idealdist = ((Double)pepLength.get(atom1 + atom2)).doubleValue(); sd = ((Double)pepSD.get(atom1 + atom2)).doubleValue(); } Triple trip1 = new Triple(pt1); Triple trip2 = new Triple(pt2); double dist = trip1.distance(trip2); if ((dist <= idealdist - 4 * sd)||(dist >= idealdist + 4 * sd)) { //System.out.print("res " + key + " " + atom1 + "-" + atom2 + " "); //System.out.print("distance " + df.format(dist) + " "); //System.out.println(df.format((dist - idealdist)/sd) + " sigma off"); System.out.println(key + ":" + atom1 + "-" + atom2 + ":" + df.format(dist) + ":" + df.format((dist - idealdist)/sd)); drawBall("res "+key+" "+atom1+"-"+atom2, trip1, trip2, dist, idealdist); } } } //}}} //{{{ calcAngle /** * Calculates angle between 3 points and checks to see if it falls within 4 SD * of Engh and Huber values. **/ public void calcAngle(String key, String resName, KPoint pt1, KPoint pt2, KPoint pt3) { if ((pt1 != null)&&(pt2 != null)&&(pt3 != null)) { String atom1 = KinUtil.getAtomName(pt1).toLowerCase(); String atom2 = KinUtil.getAtomName(pt2).toLowerCase(); String atom3 = KinUtil.getAtomName(pt3).toLowerCase(); //String res1 = KinUtil.getResName(pt1).toLowerCase(); double idealAng; double sd; if (resName.equals("pro")) { idealAng = ((Double)proAng.get(atom1 + atom2 + atom3)).doubleValue(); sd = ((Double)proAngSD.get(atom1 + atom2 + atom3)).doubleValue(); } else if (resName.equals("gly")) { idealAng = ((Double)glyAng.get(atom1 + atom2 + atom3)).doubleValue(); sd = ((Double)glyAngSD.get(atom1 + atom2 + atom3)).doubleValue(); } else if (resName.equals("cispro")) { idealAng = ((Double)proAng.get("cis" + atom1 + atom2 + atom3)).doubleValue(); sd = ((Double)proAngSD.get("cis" + atom1 + atom2 + atom3)).doubleValue(); } else { idealAng = ((Double)pepAng.get(atom1 + atom2 + atom3)).doubleValue(); sd = ((Double)pepAngSD.get(atom1 + atom2 + atom3)).doubleValue(); } Triple trip1 = new Triple(pt1); Triple trip2 = new Triple(pt2); Triple trip3 = new Triple(pt3); double ang = Triple.angle(trip1, trip2, trip3); if ((ang <= idealAng - 4 * sd) || (ang >= idealAng + 4 * sd)) { //System.out.print("res " + key + " " + atom1 + "-" + atom2 + "-" + atom3 + " "); //System.out.print("angle " + df.format(ang) + " "); //System.out.println(df.format((ang - idealAng)/sd) + " sigma off"); System.out.println(key + ":" + atom1 + "-" + atom2 + "-" + atom3 + ":" + df.format(ang) + ":" + df.format((ang - idealAng)/sd)); drawLine("res "+key+" "+atom1+"-"+atom2+"-"+atom3, trip1, trip2, trip3, ang, idealAng); } } } //}}} //{{{ calcAngle /** * Helper function to check if a peptide is cis or trans to call calcAngle with proper values. **/ public void calcAngle(String key, String resName, KPoint pt1, KPoint pt2, KPoint pt3, KPoint cisPt) { double dihed = 180; if ((pt1 != null)&&(pt2 != null)&&(pt3 != null)&&(cisPt != null)) { //System.out.println("calcing for cispeptides"); Triple trip1 = new Triple(pt1); Triple trip2 = new Triple(pt2); Triple trip3 = new Triple(pt3); Triple trip4 = new Triple(cisPt); dihed = Triple.dihedral(cisPt, trip1, trip2, trip3); } if ((dihed < 30) && (dihed > -30) && (resName.equals("pro"))) { calcAngle(key, "cispro", pt1, pt2, pt3); } else { calcAngle(key, resName, pt1, pt2, pt3); } } //}}} //{{{ calcPepDihedral /** * Calculates peptide dihedral and checks to see if it falls outside 20 degrees of * 180 or -180. It also doesn't flag cis peptides at the moment. **/ public void calcPepDihedral(String key, String resName, KPoint pt1, KPoint pt2, KPoint pt3, KPoint pt4) { if ((pt1 != null)&&(pt2 != null)&&(pt3 != null)&&(pt4 != null)) { String atom1 = KinUtil.getAtomName(pt1).toLowerCase(); String atom2 = KinUtil.getAtomName(pt2).toLowerCase(); String atom3 = KinUtil.getAtomName(pt3).toLowerCase(); String atom4 = KinUtil.getAtomName(pt4).toLowerCase(); Triple trip1 = new Triple(pt1); Triple trip2 = new Triple(pt2); Triple trip3 = new Triple(pt3); Triple trip4 = new Triple(pt4); double dihed = Triple.dihedral(trip1, trip2, trip3, trip4); if (((dihed < 160)&&(dihed > 30))||((dihed > -160)&&(dihed < -30))) { //System.out.print("res " + key);// + " - res " + (key.intValue() + 1)); //System.out.println(" peptide dihedral " + df.format(dihed)); System.out.println(key + ":ca-c-n-ca:" + df.format(dihed)); drawPep(trip1, trip2, trip3, trip4); //System.out.println(pt1.toString() + pt2.toString() + pt3.toString() + pt4.toString()); } } else { //System.out.println(pt1 + ":" + pt2 + ":" + pt3 + ":" + pt4); } } //}}} //{{{ drawPep /** * Adds peptide outlier indicator to kin. **/ public void drawPep(Triple trp1, Triple trp2, Triple trp3, Triple trp4) { VectorPoint p1 = new VectorPoint("ca 1", null); p1.setXYZ(trp1.getX(), trp1.getY(), trp1.getZ()); VectorPoint p3 = new VectorPoint("n 2", p1); p3.setXYZ(trp3.getX(), trp3.getY(), trp3.getZ()); VectorPoint p2 = new VectorPoint("c 1", null); p2.setXYZ(trp2.getX(), trp2.getY(), trp2.getZ()); VectorPoint p4 = new VectorPoint("ca 2", p2); p4.setXYZ(trp4.getX(), trp4.getY(), trp4.getZ()); dihList.add(p1); dihList.add(p3); dihList.add(p2); dihList.add(p4); dihList.setColor(KPalette.green); dihList.setWidth(4); } //}}} //{{{ drawBall /** * Adds distance outlier indicator to kin. **/ public void drawBall(String name, Triple trp1, Triple trp2, double dist, double idealdist) { double distdiff = dist - idealdist; KPaint color = KPalette.blue; if (distdiff < 0) { color = KPalette.red; distdiff = - distdiff; } BallPoint point = new BallPoint(name); distList.add(point); point.setColor(color); point.setRadius((float)distdiff); Triple origVector = new Triple().likeVector(trp1, trp2); origVector = origVector.mult(idealdist/dist).add(trp1); point.setX(origVector.getX()); point.setY(origVector.getY()); point.setZ(origVector.getZ()); } //}}} //{{{ drawLine /** * Adds angle outlier indicator to kin. **/ public void drawLine(String name, Triple trp1, Triple trp2, Triple trp3, double ang, double idealang) { //Triple vect1 = new Triple().likeVector(trp2, trp1); //Triple vect2 = new Triple().likeVector(trp2, trp3); //Triple normal = vect1.cross(vect2); Triple normal = new Triple().likeNormal(trp1, trp2, trp3); VectorPoint testNorm = new VectorPoint("testNorm", null); //geomList.add(testNorm); testNorm.setXYZ(trp2.getX(), trp2.getY(), trp2.getZ()); VectorPoint norm = new VectorPoint("norm", testNorm); //geomList.add(norm); norm.setXYZ(normal.getX() + trp2.getX(), normal.getY() + trp2.getY(), normal.getZ() + trp2.getZ()); Transform rotate = new Transform(); //rotate = rotate.likeRotation(normal, idealang - ang); rotate = rotate.likeRotation(testNorm, norm, ang - idealang); VectorPoint prev = new VectorPoint(name, null); angList.add(prev); prev.setX(trp2.getX()); prev.setY(trp2.getY()); prev.setZ(trp2.getZ()); VectorPoint point = new VectorPoint(name, prev); point.setColor(KPalette.pink); angList.add(point); point.setX(trp3.getX()); point.setY(trp3.getY()); point.setZ(trp3.getZ()); rotate.transform(point); } //}}} //{{{ getToolsMenuItem public JMenuItem getToolsMenuItem() { //return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onStart")); JMenu menu = new JMenu("Analyze Geometry"); menu.add(new JMenuItem(new ReflectiveAction("Analyze Current", null, this, "onAnalyzeCurrent"))); menu.add(new JMenuItem(new ReflectiveAction("Analyze All", null, this, "onAnalyzeAll"))); return menu; } //}}} //{{{ getHelp /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } public String getHelpAnchor() { return "#geometry-plugin"; } //}}} //{{{ toString public String toString() { return "Analyze Geometry"; } //}}} } king-2.21.120420/extratools/src/king/tool/postkin/Recolorator.java0000644000000000000000000000341511531213006023333 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package king.tool.postkin; import king.*; import king.core.*; import king.tool.util.KinUtil; import java.util.*; //}}} /** * Recolorator is an abstract class to allow RecolorTool * to be able to deal with the different types of kinemages (Ribbons vs * everything else). * *

Copyright (C) 2005 by Vincent B. Chen. All rights reserved. *
Begun on Feb 20 2005 **/ public abstract class Recolorator { Integer lowResNum, highResNum; //HashMap undoColors = null; ArrayList pts = null; ArrayList clrs = null; public void undo() { //for (KPoint point : pts) { for (int i = 0; i < pts.size(); i++) { KPoint point = pts.get(i); KPaint color = clrs.get(i); if (!point.isUnpickable()) { point.setColor(color); } } } //abstract public boolean contains(KPoint p); abstract public void preChangeAnalyses(KPoint p); abstract public String onTable(); abstract public void highlightAll(KPoint p, KPaint[] colors); abstract public void highlightRange(int firstNum, int secondNum, KPaint[] color); abstract public void highlightAA(KPoint p, String aaName, KPaint color, boolean colorPrior); public int numofResidues() { return highResNum.intValue()-lowResNum.intValue()+1; } public void setPointColors(Collection list, KPaint color) { Iterator iter = list.iterator(); while (iter.hasNext()) { KPoint point = (KPoint) iter.next(); if (!point.isUnpickable()) { //undoColors.put(point, point.getColor()); pts.add(point); clrs.add(point.getColor()); point.setColor(color); } } } } king-2.21.120420/extratools/CHANGELOG.html0000644000000000000000000002177711744305704016217 0ustar rootrootCHANGELOG

==============================================================================
===  TO DO  ==================================================================
==============================================================================
    Build wireframe version of Lathe tool
    
VBC things to do:
  Check ColorGrouperPlugin.populateColorLists to see if there is a way to copy flags 
    from one Klist to another.
  Check GeometryPlugin.doAll to make sure it still opens files correctly.
  Fix PlottingTool so it doesn't use old setDrawnXYZ KPoint functions. (Fixed, but changes
    coordinates of the points now).
  Check functionality in AutoBondRotTool; not sure if auto-updating of point parents
    messes anything up.
  FastaTool rewrite?
  LoopTool rewrite? (delete from file doesn't work)
  RNALineTracker desperately needs a rewrite.
  some loops get transfered over incorrectly in PatchGapPlugin: 107 models vs 111 found in hsp90
  PatchGapPlugin needs to wrap degree numbers!!!

==============================================================================
===  CHANGE LOG  =============================================================
==============================================================================
### 2.24 ###
VBC:
- Added counting tool.
- Incorporated aspect tracking code from IWD into movie maker.
DAK:
- Added animate sequence to movie tool.
- Made Kinimol respect PDB v2.3.
- Added NikilomPlugin, a.k.a. "Kin->PDB 2.0","a new version of KinimolPlugin 
  that still uses Kinimol but is more generic (?).
- Added trianglelist support to Multi-list editor.
### 2.23 ###
- Changed connectivityfinder to be able to keep singletons.
- Fixed RnaMapWindow to reflect new constructor in EDMapWindow.
- Added option to plotting tool to not add second column to point ids.
- Fixed co-center tool recocenter button to cocenter when number is typed in.
- Removed system.out messages from several tools.
### 2.22 ###
VBC:
- Fixed bugs in Plotting Tool, fixed up the gui a bit.
- Added RnaRotator tool.
- moved rdcplay plugin to rdcvis package
- bugfixes in render exporter tool
DAK:
- Added "keep reference points" checkbox for 3-on-3, dock by pick range, and 
  least-squares docking tools.
- Added "Multi-list editor" tool.
- Added ribbons, change color to Multi-list editor tool.
- Added Multi-list editor tool manual entry.
- Made Multi-list editor & Kin<-Image appear on the RHS of the KiNG window
- Added turn off/on buttons to Multi-list editor
- Added "Probe nearby" tool for Stuart - simply runs Probe on local region
- Made "Probe nearby" threads more compatible w/ chiropraxis ScRot, etc.
- Added water detection to "Probe nearby"
- Added alt conf selection to "Probe nearby"
### 2.21 ###
- Fixed RNAMapWindow to use minimizable tool windows.
- Modified HighDimSliderTool to work with parallel coords, and improved 
  interface a little.
- Added documentation, fixed tools/plugins without toString() functions.
- Fixed manual html file, using tth instead of lyx's built in HTML exporter.
### 2.20 ###
DAK
- Gave KinImagePlugin a major overhaul - new GUI, resol options
- Started adding prev, curr, next trackers to cocenter tool.
- Changed PointColorPlugin so extract points makes groups with select turned on.
- Added export text to PointColorPlugin to export info of all visible points.
- Modified PointColorPlugin to export colon-delimited output, and remove duplicate
  strings.
### 2.19 ###
- Bug fixes in RenderExport (branched sidechains correct now, better shading on ribbons)
- Cocenter jump uses parenthetical waypoints in point ids.
- Cocenter jump can move smoothly.
- ParenTool for more easy add/subtracting of paren points.
- ParenTool bug fixes.
### 2.18 ###
- Cocenter includes a jump function
- Fixed bugs in RenderExport
- Added Wrap function to plotting tool
### 2.17 ###
- Added KinImagePlugin
### 2.16 ###
-Moved RDCvis tools to RDCvis package
-Cocentering now has undo.
### 2.15 ###
- Changes to RdcVisTool, fatter curves, nicer colors.
- Started putting in multimodel reading, but stopped in favor of standalone rdcvis.
- Fixed bug in KinFudger PDB export where an extra space was getting put in.
- Cocentering tool - translates all groups onto the same point ID, if in the group.
- New functionality in AutoBondRotTool, averaging, zeroing. (for making Pro dist)
### 2.14 ###
- RdcVisTool is working pretty well now, math seems to be mostly correct, but need
  to change the way the curves are drawn.
- Fixed tabs in Framer
- Added axis to RDCPlay tool.  
### 2.13 ###
- some bug fix in recolor tool, I think involving the spectral coloring mode.
- new RdcVisTool, semi working at the moment, but needs a lot of work.

### 2.12 ###
- revised KinFudgerTool to disable the move points button until there are points to move.

### 2.11 ###
- revamped KinFudgerTool to be much more user-friendly, and be more descriptive about its behavior.
  It highlights the points it is going to move, and gives users a chance to reconsider a move.

### 2.10 ###
- added king.tools.vr.VRKinTool to communicate from KiNG to the Duke DIVE

### 2.09 ###
- Added a (commented) line in PatchGapPlugin for outputting RMSD of superimposed CA points of fragments.
- Added a label to RdcPlayPlugin.

### 2.08 ###
- PatchGapPlugin fixed so it takes angle wrapping (i.e. 180 == -180) into account.
- RdcPlayPlugin created so I can see how Rhombicity affects RDC curves.

### 2.07 ###
- New HighLowSliders to make it easier to specify a range of numbers to do stuff with.
- New LoopRMSDTool to make it easy to correlate loops with RDC RMSD information.
- New HighDimSliderPlugin to adjust different dimensions on the fly.
Changes in PatchGapPlugin:
- Attempts to get a progress bar don't seem to work yet, but it doesn't flash the 
opening kin progress bar repeatedly anymore.
Changes in PointComparator:
- Changed getAtomName to only look at the beginning of pointIDs because it would occasionally
find valid atom names in the pdbIDs.
Changes in PlottingTool:
- Fixed so if no kinemage is open, it creates a new one and puts the plotted points into it.

### 2.06 ###
- added "Select by color" plugin to emulate Mage's selection tools

### 2.041 (2.05) ###
PatchGapPlugin changes:
- Made a little faster by reducing the number of Double.parseDoubles it does.
- Finally deletes waters.
- Doesn't include extra atoms past the endpoints of superimposed loops.
- Trying out different methods of superimposing the loops, currently uses only the Ca of endpoints.
- Adds residue numbers to PDB appended to end of the lines of PDB exports, temporarily fixes a problem
  where if two or more matches were found from one PDB, they'd get stuck together in one model.
- GeometryPlugin fixed so it (again) scans 30 degrees around 0 for the peptide dihedral; I thought it was wrong
  before and changed it to 20.
- RamaTool fixed so it uses KinUtil.get functions.

### 2.04 ###
- PatchGapPlugin created, automatically fills in gap in protein structures.  
  Searches database for appropriate matches, based on loop framework.
- DockConnTool added help.
- LoopTool added help.
- PatchGapPlugin added help, and added ability to export loops to pdb format.
- GeometryPlugin added help, and fixed onDoAll to ask for a directory.
- KinFudger fixed to use KinUtil.get functions.
- PointComparater fixed to use KinUtil.get functions.
- KinUtil cleaned up a little, added new get functions.
Tools were reorganized in their menus a little bit as well.
- Kinimol and Kinimol plugin added.

### 2.03 ###
- Undo (one step only) for RecolorTool!

### 2.02 ###
- GeometryPlugin AnalyzeCurrent seems to be working normally...
- LoopTool updated to use some Java 1.5 features.
- RecolorTool being updated to Java 1.5 features.
- RecolorTool converted all getResNum calls to use KinUtil.
- RecolorTool ribbon recoloring fixed.
- RecolorTool no longer stores lists that have been clicked; seems like the program/computers
  are fast enough now that this isn't necessary.
- Buildfile updated to use -Xlint:unchecked flag so unchecked errors show up now.

### 2.01 ###
- ColorGrouperPlugin updated to use new King 2.0 code and Java 1.5 features.
- GeometryPlugin updated to use new King 2.0 code and Java 1.5 features.
- KinFudgerTool updated to use new King 2.0 code.
- PlottingTool updated to use new King 2.0 code.
- AutoBondRotTool updated to use new King 2.0 code.
The following tools were updated to use new King 2.0 code.
- RecolorTool and associated objects, FastaTool, RamaTool, RMSDTool, FramerTool, LoopTool, LoopDockingTool
  RNAMapTool and associated (still needed?), GuilloTool (still needed?), RNAExtractTool (still needed?)

### 2.00 ###
- changed to Java 1.5
- changes to work with KiNG 2.x code

### 1.03 ###
- added SkylightPlugin, based on rendering ideas from QuteMol

### 1.02 ###
- updated DockLsqTool, DockConnTool, LoopDockingTool to new SuperPoser API
- added pointID as last field of DiveExport

### 1.01 ###
- moved documentation for these tools into this package

### 1.00 ###
- migrated tools out of main king.jar into separate build project (this one)

king-2.21.120420/extratools/doc/0000755000000000000000000000000011677360410014571 5ustar rootrootking-2.21.120420/extratools/doc/tools-manual.pdf0000644000000000000000000032415111531212776017705 0ustar rootroot%PDF-1.4 % 3 0 obj << /Length 126 /Filter /FlateDecode >> stream x%̱0 E=_᱕GIVD!AZ*"Peoxfr( '0F/R}ѡ{u<ﺧ䱽:{G(.B˽L/ɮ[az5?;6# endstream endobj 2 0 obj << /Type /Page /Contents 3 0 R /Resources 1 0 R /MediaBox [0 0 612 792] /Parent 5 0 R >> endobj 1 0 obj << /Font << /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 8 0 obj << /Length 144 /Filter /FlateDecode >> stream x5 1E|+_ɛ,q Z4ߋ$vw9r;[n " .wd$'Uo"'\TVb.T^5ҘXzո#')>(&N QmoW+ endstream endobj 7 0 obj << /Type /Page /Contents 8 0 R /Resources 6 0 R /MediaBox [0 0 612 792] /Parent 5 0 R >> endobj 6 0 obj << /Font << /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 11 0 obj << /Length 938 /Filter /FlateDecode >> stream xY[0}_#;7c>mqYRIpބ$YG-O)|99I'R@`~F0y|Exdirx!Or y> b 7'A4MG1$$a(D#e0ANr$'č c!u#@Eo*T-Z$HuV/kɛuDW44=-h :. UXE[4kYh<78M#❯HDq`r.R?FwX4Zڲ-",twYYX{DXIR7[@:?pRYv(fWCL4 Odr<Ͽ1GB,_h5ςX1rw\uJ)F%\Bxnu)eYnpVT# )z?ig(W]Q\ T, IC-0k% L4I#HPœنWOj1#t}Z}fjkt|ԒW]O_~kaMFKr|G \/"př^vtP0s2|K:`$$wPX~Hz}45bb09Y`Ѹ0FM^/HFx`)x]܎g4!r.4DWevL1p = _7sh`$ 7%Ǣ endstream endobj 10 0 obj << /Type /Page /Contents 11 0 R /Resources 9 0 R /MediaBox [0 0 612 792] /Parent 5 0 R >> endobj 9 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 15 0 obj << /Length 726 /Filter /FlateDecode >> stream xWMs0WpL!q&縞^[L0b@u}%KIҙ{oj9)(zӥ8b4(a7]x}d2 BDb3ۼWVe/5WHN|ӫqgQBKA%x-i `b) k_UU[e!QRuP݇tHɧ &+$j$R'5{TUpO*5l2:snf1\WCl $;+F2ѧL!Ks5θWmɋB*{sh=Ռ>qpy==SEMC iѹ9f:|)g|[|!-~>!WJt0{=a #Y[עtlRpo-:HQw淓BȵPN5k^-ϻ!mˬoͼykF4/e"dc|VET^5]/胔cxC>s}LV:VnoޔR|? #' :0yiw*aw'VCҕVGL)> endobj 13 0 obj << /Font << /F61 12 0 R /F37 4 0 R /F64 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 19 0 obj << /Length 1005 /Filter /FlateDecode >> stream xmVKs6 WfjVEaviwmw{%ZD5&Mߎw?FeiUrslI-+O!CH6/AhpcEkQ~r$ ǡHzoya *a" ;RFy,ҼY)LeY:#{Da}qAd`x0J,;XUl*z约\@#:;E걟;Bޡm k5^Ǟ(PHs=^]kznokj*DHD: 3G~n#( 624`?hd~/Q_Ŵ%}o.'8)HKS=AW W~9o@!Z=plw uxE_ 4%BglF7$)zRp"li@~`pLɵh7ud) ^ja5H-aFC6d`EEV_4mwm^{H<dsVlݸq$ oqS&mH(m& aun+u6qQ]oe+S_nNmB\iyw >"ƑzfZC7E˖h8:> endobj 17 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 22 0 obj << /Length 1373 /Filter /FlateDecode >> stream xڍWK6 pi&V$}&mLm+ʒF_iQA||{SlD7&IӨ,M^(Oͮk8)܊<Dˢ*7۬$#r-{ٽmPEiVKPpq k CGrSGu! V%D$ vxתpf5kJ*&ܞQqx4Ӭ'oSmIFpbz8RbU͍Q;z$Q/zn醣dש052%~( ^|LZXtʬ-r1>:i9L@Uv$铞Uw'5dl< yV^/c C O uxĜܷRN$6 d5m mv j=aCB7ZAI>) A(«!vPb^(1 JZ?D3ZJ@ DqD̨|ꉖs {|xO+{AOVC(IBGX}|a`@ ffRdȊ5. V}F@ p({"ӗ}A$Ojҷ!X0g~>ɥ91Z Nr' l2e,b) 9kSg\i} iȔM$gbVDYK!M :.>zTxQwubXl(!=Hz=Q0#e>(>%#"&ճaD0s\sG!"<gm;ܡ0Bsf6DzӧσQgMw'0^+ٯzYk[w`W}C=P~O{6ރ6~AW"1UEO\n-e\ 1H6xsXϩMɊSU.m$A> endobj 20 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 25 0 obj << /Length 349 /Filter /FlateDecode >> stream xmQn +8ia mi.;M;$h DjISOI-DM*A¸@M>kQrNqlP5vJ(#b5v=0+r4u2+{jG:3kgIQ}O:ʬY5jEeUZdb5:8|'jaR{ppگO0n Pb?cr*{4oEhQ\3 @)irE%R稲|{<)T뜏UY82}( /t&p)*yErSdMJLݩ endstream endobj 24 0 obj << /Type /Page /Contents 25 0 R /Resources 23 0 R /MediaBox [0 0 612 792] /Parent 26 0 R >> endobj 23 0 obj << /Font << /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 29 0 obj << /Length 1439 /Filter /FlateDecode >> stream xڍˎF잯0Ћ ĪFofIѢH䠕de+ٿ/_#ˉbq!o/~|Mygq$,rq|?l>wm}qz, fKâ,E]ZJ7e}0'fIMVy G2ʘYVenK* gm7XDA[oH.3^랡fеikPuv!\t֋z4ݓ` H[P{*=ɱ͢Mgߓ|Z̀h>|?0@͂k^ƒ7,0IX|ㄵNBݩ(;kt!eU#a,eO卐(fe0z hQDfŁ "{ݍ?(n uX7A=4223;TG0;PbMa M|0[G|u sa~3vU]J*Ƚ@i]s!)|\'0 39ɔ@ RU"6ǵ %y"FxtEp B c'oUXs36\в[7k nOL%5u_{H lNmajD'˾J,j 馃x b =L cCYCWQPEG ^5ɋv7<ΜsLř[MߚC]'%QZ%xk 1|E$ՀX6A8R0Kipnw3~y3{Q-(t((*\B.0kLJ+_߿f Y E٢<ѠRp1̹cIT-cBФ8>I!*iTlǾI]gZ_r(\Hֺ `G/NB-ϭcJ ʺt[/r 88F.i,=9YV~zi9>d$*\F>(ٖw_|TWpB"eeYiQfY-M dʫ03E#" > endobj 27 0 obj << /Font << /F61 12 0 R /F37 4 0 R /F74 30 0 R >> /ProcSet [ /PDF /Text ] >> endobj 33 0 obj << /Length 2233 /Filter /FlateDecode >> stream xڍXKϯh @[#Qev;AdXh#QԋQOrbUG|[!Ͳԛ]ʊߑz\UFɢ"nJq\Yz~xUDvE_릑c{sn<&ɟ'e Nv0we^<4wm)ζ:#EyD/ڳicK4_=w Uw掯8e-J j>tdN:ssYOpöfyãF|9oM7ž.$ 󄗈*?nޥU\C|m1ڽ6Ts0Lm",N|N$~_i<=<&bqMe0_[aCHLSro @XE '=?aF|3WzKfGyt:{"Z<9˳$Q4X:@fbͱ=%[AŠrA r$#zVv,e,YdD%ޭ6-f%iv$GR܌y~zvηy;aY)Ke:ZZ{T1fq~E^gG.$Xl$tar:062^1ܻs_A49s#oXo.&gDJ/N3HO\)N&XI&K8-G Л7f]3hrýtTdѻ![.NGdz3+J,Iŷgkͅag{O+KN$8pqPp*`~#ln" Cg䨿GPbuP\L_M' ((4%y&C+ :MSUYd,$4ɚ+(&e5Q@|~̂}q~0P f\ r@cڠ EﭩTjY=E ζֹ "4(CLSC)+. IHKv6w풧%VHQcv 8@INZjfٛ$rl1?Xwu-Eo>/y/sb\3 tYz7zFא0jޙ8'j)f2%*niAmcFRu#w썠p` &#7c7v)f\p'ehOO Ggk׭xC_eC?s ᄋvX(*{ 2@}J &Ɔe*sOl={h%q_TKA̒_K 7!j%KY> madcS'8I@k>E;ږӋ$}'I$ yVzb#vjZȴ2 A-LtM R*ÛyT]݈wtg"p;9J^Fȓ*_nS|-A؆厽LiIO1 J+{l*Bx1xF07\;־56xwh9)ꖎ NUL}giq0)ec`t@ 4Q]ЄމGd^| Coҵb|=SYdۧٶ~)dBfɒ]qG @lw=ҙ 2RQX;8 ԑO*3"b Ή*PN T41IUlՇ~Blo;%f{LMzJ_"beiYpqPbNv@ !Γ:Lb zk&步&$<Ҕ 6 ěT.][pKdѶܪœ8Pѩ-㗁"8U=0I PaqGcr򸑠{b@X0̞Q6<B+Q#LqR*j/ Z':fߟAq0șH#RSngM@ءV%~C$l)B0ԕ(=jTŌ1,d,> ȳFB e\Xkuy}҆D飶d%g3]@\&Jw]~{y_PQ endstream endobj 32 0 obj << /Type /Page /Contents 33 0 R /Resources 31 0 R /MediaBox [0 0 612 792] /Parent 26 0 R >> endobj 31 0 obj << /Font << /F37 4 0 R /F61 12 0 R /F74 30 0 R >> /ProcSet [ /PDF /Text ] >> endobj 36 0 obj << /Length 2181 /Filter /FlateDecode >> stream xڍXK۸WLNf|KLNq]$lm!΁1"ba{Üĥݍާۇ2,x??inCo$?MqEfYۚ486΍FQ'wCuVtSU{׹jvQqSSe8pCbi2SX_l.c㑓B1)ArKD Hpit~ɣ`0w0U"$r[0$I$L8Nn|vl]Hm0C'd,ɃgY7jwasn߾z2HT|>o<0klG{ 'pD$=X`ώb+"uB3^mv]M \`N0/rt>.|Sˁ>ΈA>%qQ|c:ǖђ+L_p͂Gwi8.~MAJPtWG?Fy4mA"(eZpqW!b!6?&I ,X`3H%,,p,i Z\~d0''=!ݳ7Fl0os<$F\_SA&ʑφ tM!)oq*ʼn:H'^d%%@-3𣬬JRIX<bj;Aٜ Ao푖+y'CI"&OYPH2aMH2E?[)1ߦ$I|x2U#'Z%sٖ-sbeq=]{tya܂Rd-ɸ8 ¼ᗮ,^K/j&MdR \R;ބ dY|Q Qt"R;7 *%Q8$$=*Y"5LR} ֍>FjV JVS^df !]IjSVTX6/% TJDdU@R]H+ 'G-X a8q`jiZ+7>`ڦ\`lq6٢#)ݖIn(nVmo ^N 娅 1kFBteM)ń/1J{ -DՃ;1 c5kҎ5KCЀ.B= W-J.$Q.xi%_QQԧPqJÖAo,2-G<&5dz :Z2qm]rMRHA N6uy2=F8B*ƺKiXiw=ia<ߒn&oI fťEKn\ah'Y̨Fe.ELUHPѪ|[|P^n>KKIbS@A\7ZN)_dcH &qաTVPz@rܝs)tySC Ad^|Xs g[yVЖ MvamX}(B>V'` 7Sw_UK7Iyf[tcOJJL 2 u=Ļrq 0c?}jngQ"z-REeP&vH+dx!cJ_,ޣQ*WcOb &۝F9O:kY6I2ïcd]ռ(CTt(/& endstream endobj 35 0 obj << /Type /Page /Contents 36 0 R /Resources 34 0 R /MediaBox [0 0 612 792] /Parent 26 0 R >> endobj 34 0 obj << /Font << /F37 4 0 R /F74 30 0 R /F61 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 39 0 obj << /Length 2328 /Filter /FlateDecode >> stream xڍr|*^/'ILvg6m-ѶRFI*>@%ŦWyo^(IE^nIym6 mv"謽vڜ3Xw5 ώzeiF^+g{Ym QN0#.Wt W7Qp}V{]$*?Q= z=A$ɃN*^bA, ]?PyDp= e$hM;洦Œ6P8FPnz#pƯ#S)b| U{i;w7f%[z(=Xa$O/w\ъwKٕ׳6ۉ 9*{v CO(LCY(Z(;O(|3 %p hâX9"qϢI>H( wu2BR]7ԟ'LϚS!yNղKm}Vnc* `:#r.wi0ˎJ{2*  ;q qq1x_+ d;?W'>7 wM-Fh&)Uax:9i{ZDuC^+xvxd;Ж$k0j㸪[:=5 FXڹ$ͽBٟǩwB>Riocs:8/E>MX @ccy\SMRHIF#̿wOgZ6`"Rd}&(6O1W'ra'r?p?Q@x;*O>cesرs?zb<1ayŢRua-x[*JQ'>R'/ɧ4Wy-G)-`6 1lg񳃪.1O?BSSâ%4ҥ|a ܣ)`|p¬nSP&{!0~B j pv)];\|^7}żZ%<K u #ZzR`kr%UK`y}+T~7 jz}Ȩ-0zSQi2LVuGGWy/lK}UH3H/f8 endstream endobj 38 0 obj << /Type /Page /Contents 39 0 R /Resources 37 0 R /MediaBox [0 0 612 792] /Parent 26 0 R >> endobj 37 0 obj << /Font << /F37 4 0 R /F61 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 42 0 obj << /Length 2305 /Filter /FlateDecode >> stream xڅK{۸_[|՞If:$)@%8(+ `|u~MU7,뺹( @bqgY>EoE)ô1,sޗrS5΢3 U<^|-rdmmQTJth @z#[qLi<$^:7Qώ3ap4Y"71 I*GZ߃uf 6m dE7=]u4tj!䭋o eM!%0[<{ƴ9 >o#^f+MIN(YtxFXcGJPi7b(ȓvk1toӢyJzO"E/80:5ޡ>JՀɽ6j燣Q ;Fփ w:Y%9?#o{ 8K |`)U!G F'=]&ܚQleE7*BK$`;avMS0"o8#ix~g)hC) Z-8jl ^kRdq-Cְyw{6a"چphqrO@1W35XP#,D&]`8 ~r Yјw~fb1 IkjYPbBݴjŲ8-nWy#~ t+譥eퟘ``H ߮xFJs$c0dwQɴB 㲘1ƏIw0ۆ?' U|yF_24TYnPju+Bmxu]tP@lP.t|Sb5V\} ˳BzV S{l8,(\1璋k fn`:bLx#D㩧Z4ͅHHyFvs:i(TA(APB ǃﯖ0nEFG6,3!,jǮnU6衁q۸F^@BN!Rs)QC$|kZ0'PcoVK;@u*I;3|GX!H (ύǭzg^6g~џxуA[&NWhK x6@f%mfŒy(Z2=5f:1N% sW2%vT;+)wBo=X>JVYs[)CN,蚙lfMɇuK”_yEU X@Җj$;`2?vTH( b^lak%"I6Lc1TlAEY+_8_6WE{ `1?Uu;F#T8W'3 ^t pӋו:WZ{=O~ 0ZÓIf*M+&x?yޒLh(NaWaYzIf]?;v޲LFz˷P[-Hx![u*]Ti (W^f܆uE&fØ=lǴ!zr[sK#OOC >c$yO\IqZ-hkRb"7^2~b]i$ ' %uHro) G?\͛+[Ly?RwTU^Oi1DA _pϯ 9.JCn07dB.,2b5'k!ŹIGlιT&FJfP@q{5& <^P#%!Ӏ'`{sf>Ƈg4PmUi:| C- :Jm&!ҚGCy(wL/wĔl8om< V{RξMOf65>I&Fo.d/6) i6Uav5[\uKJbFݒ2[wm @{p+ӡ9=G^:,^^6e,~#ջWwO\ endstream endobj 41 0 obj << /Type /Page /Contents 42 0 R /Resources 40 0 R /MediaBox [0 0 612 792] /Parent 26 0 R >> endobj 40 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 45 0 obj << /Length 2405 /Filter /FlateDecode >> stream xڍ˒۸R->%嶮x;cRsH`@в/P҄4h4xC%yeztdY-wweӬ{eqYf}I' |NMmZg&Jh=#ViY'ԯC2-:M,ƌH)¨x0ɢFvy66:ɡӌ'Sk>)g?3>jҾkF>Xk|!I}!*kyU()-lw0Llzݩfhp3\11- gQiJEW.|/鏭l{nvƐ@pyVəxFı}͔nA.?̸}.XQ3g+'@^ x:n{x=@Bl|VuC@ ,W<w^h= 16)'|?>v.jчX%I)χ nw%ɢ9s4=׬UYDKO˝$% gp$@,|Xɱq3GtB̉^K|yj }1iG\ui@:hBP?m$ vߨ(A`r3u&z H\3>\ 'F* 4W@R史MJ)GyXb.E*r.|(mWq/?黏>g| X ĪyΆQ`P}֩Lhj dRl&Z>/ Lr5O3kx-LB3.q|ṉYSY%#2W]J) Ek442mAeIl@Q7榟 endstream endobj 44 0 obj << /Type /Page /Contents 45 0 R /Resources 43 0 R /MediaBox [0 0 612 792] /Parent 46 0 R >> endobj 43 0 obj << /Font << /F61 12 0 R /F37 4 0 R /F64 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 49 0 obj << /Length 801 /Filter /FlateDecode >> stream x}UK0#llȱ+uUC[ۃNM;1݇Ҟ{y𰻻TeRVOv"U(Y\d%?KfeQL;_ݗGQ'|B_Eqsˮ4hї,bͽ!&M!8O֙>Fq9 ЙIKɮoGMKv^6^b`eoeDӳ޺yʃ`ؠ[ L;CL3e\VZjD(j5td/< T{6g! 1#&" 85l [3O!.1.u>]y(*㢇i55f4n&ǭ?ӳn"mۀi l0`uHp#yC(%`W#YE 10DƪզHLgfʙ-X*921AKOXOzn{jb{Ԋ6I0j z”S/cжeqxިRO6&qg0gGNvIP7[n@Wo /:9  \xXl oljۓ@C={}Mdqd%iF_M7qxiwVdmH`6M{Ү^,9xI7/3;nK*y3 R|@ GZ FU`>$ !xw͋mq㋷U;MeU\@}2N endstream endobj 48 0 obj << /Type /Page /Contents 49 0 R /Resources 47 0 R /MediaBox [0 0 612 792] /Parent 46 0 R >> endobj 47 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 52 0 obj << /Length 1551 /Filter /FlateDecode >> stream xڍW˲4Wd7Nmg P@ÐBX\ ssMjuKGWW_|[&42-v.ɲ*]QQc3SvE?[Uu[ CT'9;| hsl .g>9`fL[f5sJ+tyY :Y1[FOc0Y^zvZ6Vn .xG ?ş>pXW) <ɣ,/S4H (هIǟ"^̃w}{uۆtFi)9p4YfۥѬ̈́@]c,2B'q:SU"t2יK Vk6-3pp+H })H"^R;s4DFH"llcޜzkVgulijyӀ* @SκnMT/oQ]Ivk:=hX™a;UXIݷoV2`/S&@ThU}Q97F  A lZs1^ Jjuc56hKC< l1TY4c+%9O3~ ` ^<5pG҅ ؑ$|lA4B.YF׈r{SA|4Tm#k2L!_] /iG+d̆'3 opQfFV'+7 v`5 _mkSxzweŁ g@'`٬e]݆&̊e U}~eV҅|c^#ỏ;+;@y8Sx0;F7Q87cմ- r:qe>>UT2+xeDM =^}s|?u endstream endobj 51 0 obj << /Type /Page /Contents 52 0 R /Resources 50 0 R /MediaBox [0 0 612 792] /Parent 46 0 R >> endobj 50 0 obj << /Font << /F61 12 0 R /F37 4 0 R /F64 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 55 0 obj << /Length 1668 /Filter /FlateDecode >> stream xڅˎ6잯[=co"6mCM[#G2d9%Ezz(")ëYjaJ,zUU,bЭAzʾ?7YRF"`+ۧGg'|N3-3jFg+ M74 tUڟYLàܒ{uN@k#u_ߗ):;Kb K8Xo$Iwjph J?QCì+7`+D,I#Ʋ!r:" {$4N:jC`̘]H X)d9@h Rڟ$w'NDq%wfhByHA@QA=F Z`$5J$wֳ A!I )Lw{"Nϗvp;-sbA1Yr@[;.y<Ү yEv{N۶PZ1+ɰ! n  ,=PS<h@$6B"(dwm :LܚmLsdITҲ&pQsnnʍ1M2o21DX@MOsK@hrbFSZ%ЮCmCLR&v4 Cx'qNBpGf GKO +!Π>WmiFO\2t.^`(ăHkpψNzIt\=q\ZY3CA i֔zm ]J H n(8-NM=Islhlѡ~o*f)BHIPkv;P]̱i N NcgD'L/Lm.^" cSMdۓz>(I@ AQPaU,.jbu֟jMOyG@ M~e;vJ泆vzGnr<p/!cؒʗ9.V-n|HYFu:`䲌몀MZ~P9 endstream endobj 54 0 obj << /Type /Page /Contents 55 0 R /Resources 53 0 R /MediaBox [0 0 612 792] /Parent 46 0 R >> endobj 53 0 obj << /Font << /F37 4 0 R /F61 12 0 R /F64 16 0 R /F74 30 0 R >> /ProcSet [ /PDF /Text ] >> endobj 58 0 obj << /Length 1725 /Filter /FlateDecode >> stream xڅˎ6QjEDZmHd}kz%bW\;/ʲCyqf8w?f& , ϳbf_o>4bEi?XEX%_ V/(mQGo4)*SRaVV&d#ROM5I8mHԦ5bݩB,;XowIxZCLi$EI!uIuDgm0 4^FLUcF&v8I8sjZYQ-bywoޢfwi~v<2 NC,|^DGFn:]c,ҝ:.:aĀGS(4:=\\8}(R. > endobj 56 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 61 0 obj << /Length 1160 /Filter /FlateDecode >> stream xu]s8=o@`˵s_NL{ ȱ<V->l}̫Uԥ(W**7RVjۮGiZ"2O }Lx =ƙ4s{M^7? w?<1q3Qk*9 "H-Qܭ+%p|ofVBNm6<'oK#M7K'qx.0˨VC.>+uvj(m^w|p5]5cฺ2SD K[Dђ ˼ &c{b .*9w@̃KhdUJ(Ȣh{hqGpe'h_ W,L endstream endobj 60 0 obj << /Type /Page /Contents 61 0 R /Resources 59 0 R /MediaBox [0 0 612 792] /Parent 46 0 R >> endobj 59 0 obj << /Font << /F37 4 0 R /F61 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 64 0 obj << /Length 1597 /Filter /FlateDecode >> stream xڍˎ60r mH遖hXYTEj7 g([aWpoݿz7IEoMaYTJ<.6vgvQPl$,,2Fh갊3"m}~VZAtV'{C\rSu$*ʉɾS OFoF`j$L&|* zem/ :[gF6|RX&)Ԍ@_(`5#ރ Ӥ硅}/FS#<ʒ" (nxCqeyOI@5e*txi"&3.+m 1L*{<6Ƀ'8 n蠑\LRX䚡LGAV^ؓaa rWJ 9!U@꛳7Xp{T 8` t9{ܞ𨧖4!U^_քޭM(1 ?*=s V}vo@gAaPzSZ>=vkZ 6P_:zз3N  |'Oc{@ e)Q*𙹛o_Jy}s(@dEǨb"cAy|ŵHª*A5#׉R4V-EkRQ.:MG1lLv(>L]ޣi8VoKXRx;MJ{ӹ/vsӷuݦoޥtBA0zw-nK y#+2=cuu j<1-@Gm9LSrKiI\5ql²fp+!9anzzj.Ϊeb9vkMPEI >=* ϧcQ%bChGIN0TȮԮfLcÇqd 1*7\fmE_v: > uII^<:;)܌@q <3Ɂ ھ䊍oZD c̿5v֥Q5OO c{ƹOn TН:BsY /8O1*5Gh5}G{6sd@IEL1Y**IP$]V_hu'ɳ]LD Nfs)0ϫ*Xa~&g*iBt@#`:u䱩}U:Wu^r12N~v55MF/OR3} QTX uNW} W lb' 6Cۂot[~,u~ n6nEVeJ0H\\ӫZ& endstream endobj 63 0 obj << /Type /Page /Contents 64 0 R /Resources 62 0 R /MediaBox [0 0 612 792] /Parent 66 0 R >> endobj 62 0 obj << /Font << /F61 12 0 R /F37 4 0 R /F76 65 0 R /F64 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 69 0 obj << /Length 2134 /Filter /FlateDecode >> stream xڕXKБ$qٌJS9@"$$h>vJ)j8'6FYLS{=b<+vYJj UqEqvT/0aןx Le*"]Ae0z_3Uy+֏rJagF߬maPDa^]+\+"ok{{/ʶo<0m%Z O'b\rJU4Nf0 {$TW^x8x P`F}cVB vwo8 Dɴ[vj  ]_48(tu8 ctaݢ\c獖->Ydö760t Uy#]7ĺK)kmq)l(S )e>|\ {z w0t+uӅ:RQzc !K ڶ:@ƒk@%Pf_Q!ALk+Sr/BG~7@ f 4p |C0:-$oFWI"U.z ]3bu|3-S*b!P%y^oT\D!_0+0YZp|OrMGu ~#(qjdUQ@7fs<;+B?<(m %" ?]n$@M2oSA'ߎp0&Z&9. =b64 tmB-PLkf7Ĵ2r@=h0r=8a$Ex;|Փ gjKT7G@.xkwȩ%"_D0Jt*Yzu!_?`Ui\,W/x$ǍN }7c55{l`u1 ܈C yP&|QwĂw 6^/? N槞9!4H@k:Dx.gÁH`{x IעNd7l&y$0NyH $e i軞- ,9 KJ ã^pעBy =t~4LQ&O  >/ ?ሪ3)|La$6_7;④ؒ} 2RLE0%F̍Bֆ*bWFlX I~tl̀A,,)ktD vՈ^`}fo,U1R&K} co%G!YXkh+, <4Ĺ_?Ҿܾ endstream endobj 68 0 obj << /Type /Page /Contents 69 0 R /Resources 67 0 R /MediaBox [0 0 612 792] /Parent 66 0 R >> endobj 67 0 obj << /Font << /F61 12 0 R /F37 4 0 R /F64 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 72 0 obj << /Length 432 /Filter /FlateDecode >> stream x}n0 y  5$d-6aAF+.o_)T`vI?Զ|FQkd[GbfR`"W5T'+-o}/(?=rpVNf|z6n xCFB%T\c-E98cIUEd&Tʫˬ燎ƍx $^LV΃9'~XSSzlkv" p9L]pt1q7ڡtPRh|#w$BZ7D<޸sFfBsλ% Jc#"^w"}EW.iXX6ڭ:#9tVpsx_$n3hpRV 4Rpso endstream endobj 71 0 obj << /Type /Page /Contents 72 0 R /Resources 70 0 R /MediaBox [0 0 612 792] /Parent 66 0 R >> endobj 70 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 74 0 obj [333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 832 667 667 667 722 667 667 722 778 389 500 667 611 889 722 722 611 722 667 556 611 722 667 889 667 611 611 333 278 333 570 500 333 500 500 444 500 444 333 500 556 278 278 500 278 778 556 500 500 500 389 389 278 556 444 667 500 444] endobj 75 0 obj [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 600 600] endobj 76 0 obj [333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389 400 275 400 541 0 0 0 333 500 556 889 500 500 333 1000 500 333 944 0 0 0 0 0 0 556 556] endobj 77 0 obj [556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 0 0 0 333 500 500 1000 500 500 333 1000 556 333 1000 0 0 0 0 0 0 500 500] endobj 78 0 obj [556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500 444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444 350 500] endobj 79 0 obj << /Length1 1612 /Length2 8861 /Length3 0 /Length 9692 /Filter /FlateDecode >> stream xڭweT[.$x]kFhE݆_pw/SN )=gPT vP/v[B} ;,nM()%2׿O-O?=5]@?onv.37 'Axx6 [m0v~_v- =)W3<<;N?HQVSSgWp}(Ej_?rrPor Y=W0/!@Yу[Cl @7'Uנ@ 4(☚^I;`΋ + *~ L _-{hڇom:3KPӳv.15 os*x`dR}TpkmHGUp3O z bk^0*2o)a5s@_oϷ3ԎMJLFqk}De5ך[2dĆpZ?`:t3zY|9AӊÝ5!&0@ >!^/?E;޳1gk.I-M4v@,m!kzkLw 7jU85L˽AcWZ_(~+)xf(U%0,F / ?x&ih#P~tN'&%Ob+gHNl47L㎥Ѐ[TCOJњGm Y%EXBY62]$|}W~ZU% ڿ#-\Ap8Iŕ;:,~GH4Z|e({Յ5"؆Sv.lD8FKHTXPnK%Z>1nN=I5pWR[i..@ivdP> P#<~_4"V# %l,_E>+6Ӷa 3n6JG8kma?[ݯ84đh+㌘)e?\@PuwW_>I`tw/|fܜxýLΙ~E|Y{de\um 3fN5[4o^2m}}5>i] Q2dFg' PۚC3igkϮhpC_(| nE3=~8]B\WyfTggZv"Y :B> :<68HU:DP-`*K[?٘VWT7G+lo`VsޏgOPʼDjRI 2RI9O*]lV[LW`9N.=_ӬC8]Ol4Y43<%gS/ (i_):˹C) ó/H7M e@L_+ơqN'~g]ɮ!V䟚/v4!񆢋ި2ˣ‚}X&o9G6%kaNnwa`.\,|܋_Dah?>ְ Cm좭!֮xn)o%yI^*eCgUo"^4"%n=.Q+-2j(KpV!հA[^] Z$,gQ}Q #~lg)ocUKSk?d=݀3Ar Lkr&"ϒroP̯_8{JO0%Ќ -C!Da{VbV/Vp x>7nm  !Jj3S:aX %`-W; H%RK]GLgH;Ky«&_^$(= Չt#NQ>i˴5p?Ƹ.O:{/Ohexe܃9dR*8L &DUH6UH﹭< V/08C{47:Ͱ:S(۱iW)k†dwф3W#cY  4\y{b|jWr16}YG^mgޢ4+&]sTkHPÂ< MG;.s9/*m.})7'uIfB:GF^,=&k 9ӌw@c ` ө%[ixZ%[g6O”T\%OpՇo6WI=f`~4A=c+kRak߫'~OLlX6-gSfCnmO yϺT\F;5LF.+vdW28pŠvک/uxZ җCql0|[fޜa[t*& xO+6n6ܢmo+tVd~ x@WğYg*kiE|wz¥Q6(]Ǽ$;'7donf3cU>{#|,6xй;C/s-Q>}Fb—Sqyz:w;}MnmO /5;WK({ Vfoy<_CFA (3З 5E9x5DX}'CXi;ט Qo r~1xJjt{o9W^/\:mzfLkۮq -u1^;)h7uak3{U&ޔ'c,mf>Yy(ERBFim}ԤoFg gRu|'*SAq =O|CQӮ<Ⱥ󋈗I(ȰS[A=56IՆZnT?2@2zYDn,*"XI_pOlο Qg3 ftBJu(}g΅|Ȭ?̑]Q( i&d6Q Z̃4*=Us  `dC_ʹʥ7LmT p1\=!ف#{KU҂ K5"u|ajkz=GrT#'rGW07L~p7/?Mm{a `:u/,-t3GgjOF9Q|Uro(*lِQDnʎn3_pƦel]8|m&,i8o'yz)WcF]~";~L\u-`^C",hh\:US`s ɯ Cd8'#_⚱z@;@;Kw8Kw^16Y%Q *$_{`MĒO,N= ٭qPxK~)3/kR zz8O6No޼A~I@\I`Ԇ#apnNXu7;9۸:y:<ZcB.hni؟nuXThY/T̳7(2 !HbcLaJ4OV6qT#Y 5|Ӣs6f5j:km4CIޝ6y~@Oif,c1=8~hCT"Z._T'9E[kʒR-->Y S\3B{w+i=PK\844.EVW ?p{O1+ =".buNhi=Bpf2DDLzdli~ <Xt(] ~J=wR94{02,A@д07) a}\(-ꕒȨxox-W# t;p%#aǪ-Ѱ|%{Zjݽq^=&Q,|`аިITUhᨩgRjsA5EtWu:4=Hx'FU^!mI9~OKܷ,4O[DCmNT>Y¦u!9Qfn&Ykh|VDK䞈wkyiE#Iӷ S2cp?Gģx`Dcs( Xm%:,{E?߫ Mt<^@/e}yz$WMQ 8AI!*FTA|Yŭ]1GllD3GI@"FZlyaڑo8?D2I~@gzVC]L ѢE:#Qcݯp f?M[\ů?r4a@q!?pI ɐ3:(skt F:Jn@.,ZŖT[Q8N8PwpW&KvjKҶaXf׋S-FP4{9r>mcm*`n;II7pRj `m_Sa "$ǵSNij< 4Crl8^Z#PB\ܓ3N C.J3EMˆ!:"b^{3/<)<4}h Fx&.ƿb{- er 7 VblJfEfAj/.n̒ABEbq5!|!V؜5=n@X-ʐ`ȡ _6cf=Wc:7 fl'uߣ3j\}(J :[՗7[X _ddzJp;w(W0~_dQ\UCgxfgY6K_* 7翹PD/?MzDdClJI8y)FFeEU)4S_h]QMody8h I9"gUۏlq\lbT<9~R +g8} S&K&yAԿR罍]aBĨTPdw3{Mދyr5+&ؓXeXE$mSjo5JΖBH<.ߤM J=MT-f?B2X+btmu yS؎>ԩs5{g9i4^X^ *y0(,fS]X2ϥ8eJg m" ϮnH3C2-rb'V ;52~|KČB(a&*,Åșrޖĥf[ 5D}"tp4:2d$!Lm><1x88;]=.J#wQC[vewHEwq6)z~'T 2X2f=Ow6֪FK(Ax٫O Oǹ,*nz_}Re X0ީHbIB3E}D&"t*KzXoMf2h'բQqԗ%vRluys|5A,^ yWwqu7櫑0n?#}"7>De0Oٿ{¡tB[DI/*ڹzsayjTس_HzP~ddɡREp6P;JrU(TQevCQtK͠#E%2j79E0*fÖ m"n#M_÷A_4>ڼ#$-D+t^rVKUJ:.ƺA-lwsMAW\v9r  Ts'y&qVvIr ="4R\zl>R#䢧n[g v@ IrK0IT sՓFx­O1!W\^daap*Mن:kqtdnĭ5!hLbH릻_–wo%.z!_#ܪo>^|<,, )`ґP 2WU$ҁRIJ3/0*kK4d X;CEp"4s!btXA;%A?|WcX9 RI.s LޫT9 wSi X"Þ o7 `f\zid:=_ebYm>{7\w{=wFڋ%l3&۷`g)$a1L ߒ^? Da^ Gj-(hʢOv%_$5+S*dNl4EA¢Y'遖k2h{RR-[CQ?Q"U&;ǰ*K>Ky=ZQbہo\VTT4wd/fInIno8)M^H F{K]nXxxd\3 B2ݞ:[TwsA?F(50_DYK[=BB v&!;}iUu6ޱxYi&ryBSo}9br:Qf-;j7Sge'ϦSN͎[fv4ڋw"OV.ս( s#dH>+|~dHNKXx` endstream endobj 80 0 obj << /Type /FontDescriptor /FontName /QPFBKL+NimbusMonL-Regu /Flags 4 /FontBBox [-12 -237 650 811] /Ascent 625 /CapHeight 557 /Descent -147 /ItalicAngle 0 /StemV 41 /XHeight 426 /CharSet (/D/E/F/K/L/M/X/bar/c/e/hyphen/i/k/l/m/n/numbersign/o/p/parenleft/parenright/period/quotedblleft/quotedblright/r/t/x) /FontFile 79 0 R >> endobj 81 0 obj << /Length1 1626 /Length2 16281 /Length3 0 /Length 17134 /Filter /FlateDecode >> stream xڬct&Tmض*mgŶ͊mb۶mTlUSاϟ>ߏg瞼=Z!#RP43:13r,l\ldd&r622aG34&...23RUI$<毧-+h72p6L-ayMI9q*@h t4(Y[d,N@*#?9%08-ݍh@G ' '8,l]LWnj/@v-lSsrv2vwͪ "ovؙ43vu6u8ݝeX8[z7ſ`8YؚZ#7to[{_V ڔoNc翹,laI[S;&.S tW( Ml=&@S9;)w,@ -#?9.\ mw 13?bhca6OߖښB '1 w9o%W5:Z[CbnalelVmM_AUPICQ\ewU U_ya ^ |z7-vFIE%wHOT$hƩH (g'Oc#C=}49d;+fǔCwH}m9ui(}jMF}Ãb32x;q7B0ѺQz^?,z;b|@a~e)[%.?u:@k:éS}_7у0>#wЩv[Y!,گˉ_X=z;E&>twӼj_R%ve?zVo!#OQJ:jŧAڢdI̚ii⾁Crxe/'荱n~~a![9I+50:NN,83xFP}\#fyWUN4e>;}k:y@fnwτTHud "}-xlPeUr'Sn- J|B=[/A1YZXe 7`,vKA$nߟ:PV|QRאmDlC|?) QRUC e>X:?y*DC?{&{[ ETaY*7~p: ޥSNp S#颤Mk*bn0E\+eUŨƾⲑ-uTsSOCTwӓ:oH UwsEci6kdJMoM¤ڰreԥWe'8~M J`'E{!yQ] a!Z4eOᐟ'M;o0jK  =py;|f_8-5x!ߐI~ ؖJ9Cå%z/?WlE!Z,6UY5a%^ (] 37z61J&oTkjAa[ɃPcfc_9t)~6^P&]  BKFKR2c7Zqx)J\f*}*THBa'måqօ& MCdUr,[{Σ{ )~쥏.gd=#7B-w1!PNkMq S7Op~0{N6ƀ]Sl>RPzJ|]ERv9VXs:吥Yk akkUqW°"m \d@HƇ>qZO4I7 c=o/1\sMY4.6)a7X3õAV>#Om*Ju O'H9\772IUzeJ}g%+!Jkb%D)_sJ59"Xu Ӆ`OS95k>?^\įbbw^=bPI'JDN0B:Aq)Udv߬{̠w26<;'mq.mC\عi9mLjbw=S .Hpj NmeC7v.''p%DIK|UW/luc+fн#ιo@J"h;n581{ԇL0趚A+%L })6¡?\P0b\Ox7Xy}PO'U@b9 я!q݆G/y Kt#⡵8߉׍>A>$,|y΢2Jk. }Wz5vԎnh>w>1!}ݮ&8R_ y06|2l|')2t˚ddf/ &379mLc!ڰ\qOY)aXT1͟aΗc]#uJz2%`s{áh8a?/jMuQ ;p$ P I6gN /׹ ,sܑ+5nMIEn:">)bxFCb>vbH!3??HfFi&X5TJ,'$^‘" Y_ /I4{KҮ$И)KUFdsNAoKBC HDq?Cw:retY./*8O |{*b) w3!+{TVOf } q}9ˈJ 'BC6JKb?hTD =믛0$d> hjsuU>c{OÆGM8;{Exgd"Rw'/;W+mYk_IUB,C2M1Y>䙫r)Q.!;X-dJ}l ]5G^.g8?=}2RSڹ[՞b 5!r:6R! IV \C,+Fk<סߓA*lyrՅb곧f)QOP8^9mceT2|fȻX|+._|hHN1"보#+BhTf*m&H!ˡPY9;is/pԎ SACs)> wF<_O~h"+YMbr[أQ>9QpD8$ *PeaVVܤR$%cO#<I{!c5֥&MxTxb%r&bop;j1^QCUfs$9$LJƃߣR:6 WJM/;i-Gy|(W?9Yd$2Mj+&dd$|zbQ ]cDefARQaNTmf\lNw-277#X-p&dc+tFIxY_PcȚP׶['J{fߪ/-J&6kyHhB@$w^L"~k u^9`?Fh pH=p\!THxz3u~g˂&ae4&eȓd1zcLBU0T&f15@ܮHoIiij{ƍE>y:C*P=D:B #{ȗ~=i?Xltj4'nUgP!ڌg$AV zRb7{Y ppa=g7V_*U9*iទ2XjO80ZZ 6WQ'I5UZ>e i,Վ,7|rnN6!%|Ylv; f BҞM&b7K'm< smɽ ΤUrVف}bV8"Dߐp%8+Ш8ױԇ._üa(@_fsES; +B|%-mYDTXH:a{!i_ѰE+sl yu+òCg.Τ}Fj,Pb`|>o091* ê"LjzZkq":k6L^rc1KXmzuI[>':>+‚40 A |^vu,ie#_^nBN%djer^m+ /C=ov7u*X OB:B`i0ޅ=,ڽ1m|Q&O˹1"cB؛ B~>jSg!4&#% U5qwLl3sGN㒼8\ cQV+:_\kl4y|Mk~6"@Llۇ,UD5'$bqX =tm[vC/>PJ˶$NJ|ڮ"gq-Y~MUw"V)ql\m g̡QmYugh D1 /ʁ:-Dr ׎Ӎ)>PpT=-fUuѡȋ;vG56&3ܨw=6,м&FzyCmG= ,z 3戁$8a G¢QF Ƹ J ORO!7]N!bG<˧~CvPc4f[+5d +KHD8wd-\-ܳ9m s{dX\OϏy.0Q̔"2hVaemSq>{7O3|ȸdg6#iDc3 SqMc'u2?΃+՜Rdl+,y v$>s:(7zӢM%|h砪!([#ji}b"ܺts;_Dq~j`Ki*rr?ɆAa4vtG}kI dP4KT/OȃaG_5%G¶dʱ2؂$t5bUevDV/FQ+9W\rH”K^hQȞ8Ԯn!wP5[JСPf,]!"#|TӳAM"[xfl3*L8*.)t'%#rk~ 4-yɓ2ckB+m\~3cYn80J:hRq0tSM3:l>U]_|2|֊y?k t)tJr$,꿇m0Gf*"גf=‡D=QZ=1mhtwaZ( ~wV= |Z<ɞI^+%۩cӲ waI9N^ar:b  mZ}UƮ,ʦVOU #4G+yW[u: ~Whv}4ZsbafVïmH,Fv!y /hXOd8Fq O {z:E+T“v:a/i]TöyaJ]ؕT(_jX2$Zތ'G aN6@Ư d4N $]6zѡ86^|;?oa4.e?Mp͇}1`TlhY]Z@`ɖLtcXbQ9rYk 5-'إA:}u5dql QPkm63W6{VQfaTZ G1.p'F ^HȳD8KD[` jFsD D mK%'DWaYjBcp1طxquWrrGbtQyUC,gn:u## hT}D@e-'h¼ UHYUoKGlI~f-B 4M1.*?r*[0ɥgNo.ʔ4)lcl3nV,іie!@}q¬2 [mtF1cKU1rˍg^ [Q.T ) 16S/w*E5n+uo^!szUa > YdEi.( crt xMs1V#֘X~FgZ9V[lبbiƅs!bU0FBNkcxkɎfwALUIRk x0W9XotyUsa+Q2LzMl~-2BFך"h+l8mH?,Ϥr2^ v@b47c]Ǒ}mŞdȚYW:|'ַIƖMͨt@}Ɓl].4b,%!Zȝ>S7^JZhbYke)ś{k3F ~11>I:Z1SWXFJJBl&6*|yXF^/r5>(_zA>%>FS:$yRP[CaCVNH)؀v !vB(rƽ@zo U0+irQ DgQ[k<%;HҚ{Ut)|Gʀ p=k=?o[wxc)iciӽف|q"?0ڰk9Bx}ĞF \&dUp"0k \@icfʲ@Pw]FP 똽o;. X[Wx|dz봡B<,ip*"D -NIDs!_Y:8kK*EvEDGB&has]MK/Kz-T'VWg !1,Pd5REfnaU-l%aF5Q#zxZLP6QucAջM@N)\^7Ҟ(S!ko %7mxLEW.j$ c|B[=ڨH$7jF~.\=`j|mj|3R]LtbIJ8cL 8 ;/pyM!I@ˇˤQa㰍!1J)sE_T+ t;I ,,J+-Y{T|1C詍#5!j_asq%@%94PtqgLirSX]\ Bx%PG.^6Db:S OZrws*ֲ!]TC-+ePԧlB)Y-p7!sWR=w0g#NO'KsD;W# #zpnD'Ulh!_ "B`!W-6`[ )vX/mH.NPЙ^Hh;+U 㱀mw8M 4$.f登ZĔE EmeczL}{⹸r|U1%>.?oDu LT=*FTUFo7 P Pi?/F^1p[a} h gd"O9: DfȦ KykrFDQ]q}4l]TmT/A9IY( #&NV-YjCu=>ύFFdD4NnuG5Y=荜yb~_ɱ2nÌsBGq0e7UBUWФ$XzjO/#N=Wa#aJFoLwB# XKQ"dJ&gNR[wgNfy$:y1yF#iMP>bCf]GKZnPـ`kѝ>.ZΛ7 2yօY<aWܳdiF|C 4n!zѱ[y6%8&{Ӹ)seei=~Ԁ&SÞr?HfƠiLH 8 bxfw-Q|N qic>72ʴP1kpB̖:FW{)Zlz==]KϞ pޔ]e;dGP~r ˦>) W| %'"\yQLHYA{.BN]!XRu3swWoQVzQ5Zr>fbv8hɁ}\T;_)iY{s~CXiJoV1hz(ѴoDDK"ˈjI;-!}B-P,?Tʤ%Oa/m쌩K<!85́rʢ%M$Q9'6 7^ARE7X0j*] 3GƐ$=_Vر.l]qNۉLc0|ԱTbChYƓ8a3 ؍Kڹnv LTlFzaM=F`*S4ga YБRԕg^$#Gw& |¶)BBqIi="Ҵ9TY(V!<OHDrpQJ1%۰yC/HPc%nwѩ]ЀwjJC-Oc4hr2}{o% J?."^RD^p0"+lJ${j<ʫ3jn} G^0aq|rG&m5%yCWMH@AR%o)$kNЉ =pdJH/;<{7#!*ьGyE -0wԣ)}g`BipZ FSB[F[KTdO"C>6$i#9׼N:Mh]a^}0(o_d(#TԄ Ym{:C#n9|?%v6։/2hY؆R&A_/mZ8IKIs۶r߸IDˉQְ 㩯;k g$mLkۢ;tcSZH&B-Wh4%ZȦCK"#:7yVJ5orYM&$K5PDbSV33A x4HW頷ǧW^iUDvogz'Ħ i.nJr0݇ʢ.sGJ.FR2) Ƒ.0)(Z8T x?G9@VL`ӽk?[Uφl?8<ĝXh4t !]fJ/tE^sAyPo'qN$ćLk*FIjwVUȵt2niH.C=SƷ:"xD#"MOeSyŸg{4xΑ%n[ȰV HXz=nu>@]5.HRcbJYOA E[zeWut)+.H6'bmv2|K~5%x@|^-+̙l>Z7;AckC݆U(C>|1W>A[JvU}Ti/nS|mK7@Ry/h&~臬>٫q3OgyMذy<ᨉ&D5 w[f|[\>"glP2)Ȓ='"1jo$n  +z o ;؀v ,5u^rKB\~)A!tg{q՛JWKr== d7'ĐwnX]f}5ŝOufi$=Zy`SCj)$9U-3)9 㥶O^?"C(0}bmx瑃 6zw_OՀam|T`z)<7fHU{*>6|*Nf=.GD4wӔs#WJ' lXHOc uńi y\MJ3d!۔q:htjƫAY qS1$O ͐kh+tZ$)pʐ!?胧re=#Nػ'˒?2x_:2~ѨhCN|S8 C9kάoϥw>Hr#mL1Q{}tQ9DY:z']YP3܌\`@+Dc`KJ |m* ӊe/$?)sΉo݃a' heƦGO᎙"nnLoY-F{Ǩ(P!9ҪXU@aYS4B|)6dA e@"Y?$hY⭱(^ІE q4RC[Z`{^pk)if C؞/նNmԧ\7f]=@Å2Wfng1NC|(@uj?Á|1'#ؑo18eV۠ދlS_}f+rݝ1쳓6+aooRIzQ]B&It44B?' uW =@PiDkx|20uh7[}"n籮6Q[q\ѹAH6<ɢxhxK3⎰/Cp{ ' VX(=AhZk_}BTXaKl,TIӜa$o_Juubհ2i!M̏hhQ fd; -rFp"U9OdMa꫑> endobj 83 0 obj << /Length1 1642 /Length2 6742 /Length3 0 /Length 7586 /Filter /FlateDecode >> stream xڭteXTm6-!="! ) " HHtI "%RtHtHzs}}~}kkk\{q30P# j8Z@DPXusG!\R:0T n1qBe7 EUh4@@QQ!@r:8ܦF<||[~Fp@@[q1@;BPo`V3C& `P@ Q= !`P\(BB@0' 7( u n@8pkG)醸pn (4 EY TD΍'rEp De($ u S; w~AP[[߷w=yFw P4 $ Bv ~ϋ&vG 3s[ü`=}?SY?'@ywSoR`z@kn 5eo'yw6U'"VqAP6A{ M` no8BAJA6pٟ򅬴 LtMv"&^Hf2E}Mޖ" & %%xG.<ܾ}zU8=Bh |;u6AnnbYg!Opf qJHCWe|Qy&,2{PhO _*BZ]kq0iKQo5HȦ$m~a; qkW LvYFgvOڟc5@9&ja2l8_(7D^M%-f/ۺ-͓k\[ ^|rUouqTcԵ]>XՎB{ 3Ar wzS\N zY̼bI!Ӣ| RfQ!ewN}؏Xxix`0W{hʆ2,`M2tٶגR \>[N'  QXbaDk0Z Wo(Կ W[; Oqit5u~V WoN\`VSʪqX;׌ӱ̔yCۥ]+ ݻavqqZ|1\䓾89wICuq=Ѻjc3-Xk|ܱF*^g,Yw<#Ά6w cƑ2zgӏP>8z}|I>h}wyT=F-):[u RN8'Sfd*LsHy%; u`/yvPwȩJy; jj _h:c4-Zse}gzxg :QTOԯ&㓈mod|d?=ҧC1-d=7,kG{SF聍۳L{'whܑ}8+Q' k2Ѝ}P6MA?ǧИXφPy s2nTT4̈́1 ci.')c=RIO Z>{I>?lE5"L"4I>?YIw^I&X.6Qp[^-=>+~Wg؋.u{'TXMW*[^:s*li85ro]󹖽r[[TPa*2$%)֫E_X=xXn"1iESIؕ|@cٜqx/#|؁%F|k܇\JL̙ma5+yF4y-7f>~qSb5ɯ?nr?, $L80S KUu>ѠH4+2C/o0<0y]$&\W䩙'9:1ZD 5l%|\W.S (z < _WqPFXrOvY%<5),+x8=XOZƝ0 etg.GEQ`fd2]cb&2H8y"怲֠9PXkISϥA&U:𔨏1̋sNx)*;q,E%hjKΟy_'%w:z?'ӌ` btv-#L bQFj8(Wna4qYFNIB9MbTs8`c-(ʵM\ZGfBX<]pgyu%;*~<4۶A3\}侴~ OM#G3;3VU>XIc޴ջ1>>YfH_bO01}uV]pI|Ll"`ʴ`ww4jJAws^h'`2F<wW!o4}M4fҾӶ"V!RSY-E:O*ԃ2yDܿ:{:іSL8iP<%1( A4kO"-@{֕Ww%S1 F~X[#?N{sĄ8F+ !bZ)|"Y.!7p]Goel̪-";YlՃ<2S .d>ayUntz\=ܺ%Wt`` rasB""Kq#d/U2͞s? WwVČϾxQ<=-><3sbRȊ,Dc>=ѓWS)콿U/W '+"[ 0 FgWhgfxr `gX۳YBgAqhĿ1LlHʧgd)OlɍxtÞm<`YM~ib}yx8c妫*rosO6y5b4Exdl3 K%I|GգC0hɵҨnu١(?gm lC͸/t0f/P{­fN|Sa/2-Zñ7Bp8B(OX]aP<.΢µOߋ\>{?)d=HlgMF>Du_X I$ǺSrVkQثyljB|7wND3K4l+y* J꩹6ؿPPV_`T1\%ݔx~l -xΏ*'#P싉U-QjtZ>.zwW62vvQ0#CҚW[WbDaQjðn6+gFF!ÂM-Ƨ~E%u.2b'hD]1dI_KX$~#!VXw\%h%3^/ޓE.|d"Sq?ߌ} aɖgbΔƳuހX5|pBPϔ"qy`XԳt !>I3c'I7ctJ flZxJ^OCoG6W9}rx/%-V<|,+K)hUTX-RN,PuΪ.wTϬ#O<7q Sh΋fvإ;硴V\u@]Vso$U_^#z̍l6vmdZ)n'QEj7-i҈N 9MTT}Oi=D<7mXFHG5x4gL_N5ӥ/#0i2=lgV)PDuy;6' ѪZ_ K?ZJf<^&oUJF9:AP@Dϑc•Wgس|߲Xw ]b)B3OgQK[i+bYn`6C7pz].qVOrjf+~;*&<1fLTPЈM?ws^*J覅5j^膇.Fx%[6cgn=aX oKѯ@y!OâPY-9@;Ғ3dTˊC7Y e\VW0w:MlۡiØoKM;f@anx^%Y# "f7u\F)4/ 낍^ˆF{ 4!sKVx`y'~K }Džrȫ9E%UGv7#t"ز-Bu_)ۧ%.kf⌟)>-mF&;n ,Ѐ4Ո3wVȞiD6`|$Hc^{6gQ d &+9xL&!*a0ᓋcGgUmtm-n;WMgFOU=1rdg$hqph8%s w;vK.pO (BW'P:5GesO88Sf> +T:FDFn %|`?T] endstream endobj 84 0 obj << /Type /FontDescriptor /FontName /ZKPJTM+NimbusRomNo9L-MediItal /Flags 4 /FontBBox [-200 -324 996 964] /Ascent 688 /CapHeight 688 /Descent -209 /ItalicAngle -15 /StemV 120 /XHeight 462 /CharSet (/a/b/c/d/e/f/i/l/n/o/parenleft/parenright/t/u/v/y) /FontFile 83 0 R >> endobj 85 0 obj << /Length1 1630 /Length2 18229 /Length3 0 /Length 19066 /Filter /FlateDecode >> stream xڬctf]&bݩضm۶m۶YmUl۶sNu{&k&&S750qȘ[8;*ZزKQ+:ʙmm9F!cC hk`nj SVP%/?&t47}q16q hl p23[eeDd2Qcc}+!@ј`b`hkcdOi4G;cCnnvv掎S}=pZ9_skaWL 7ȿt2w'_5䯥?%KIdO,ce@p06w02vt Wz};;+y?s0wr42golSshfE@Oo\ foF6V#chZ[!dg,#OB-le%owc HY4V?}ks+V5w0q'm1K  ݿ"nFrNf}=\/j+ -m!*c^_?bP 8)T#mk`l,lj6oB L@otji8>$(GzѭH{Rq 6I:X)hu~åFy^/HmjЩN+|Nu0:@^?=Ǣu"6!$#Hrrsxh0{sau\jQFJTv~_r'zAOd3ާ[2t a(JVЩ\?_aYH\a19j\M#,bBR!\7ScCLWWfeK,W7ZW T6P}.G=m:5O"< M)w'Hf#@E*oZSLR>1V(ئu#>Gx.}NKfWw0sKb\^n~gsog20l]Cƴ xzJYa5j (0$O|v[֓TjeOa_bl*fkDkR`:G'@;T9F~ 9@3=eK/Fs`#Lݠ=y>p<5֚˧Y꼪W+&FG]7st(~uS> J( "}D݅|a*0lQS`{Cлܕ6rA4 -6rjNvS#z 5--MOZɢKl #J0r S_Z1^8>ѨU o}/!A(,pP".eHbPge,h{}s=l&udD_82nC5s%q*1gU0M_g4TT󀓋GPk&DG2݋I_j m/ JH19RF.@e8f.Uޫ `Õ,ȁh?K1ƅ{.7=XcT/?.NA+]Qpdǥ ϓO:pN)DlM8P;jQN$xבkRƀ?^kI8f~oga>L.3 I rlj vab,t%;^+6G!DG_"{n=S,Nu.ѫh;ys#k&0~ݵ}]lF:Eȹ)$R:mg\Zج.s9eZj l,S){G 0$J+La#K& o l`YX eꢽ; x"Rᝠȃ}׭Ύsy۽?("qVExW-\/5x*xum Hy'|9蠪}ĥCVʹ 3WA) =ZGn]*}!_W٬r%cW<"Qk?l~8 { X{aWMT[{@vޡ߃FևR$K8v I?NQXbB֓j (Ĩ[.1~ Fk^E:xZhZzLT&X+B^7cqo~|e&y<ܮQo(zчdJ$D#|0A':n1[ ~ aG55H#2 ;Ӝ)NDW]'y8l\T =vؠxP‘!A,'Ǟ1!qF J % "L tΣ3?J@(s>wx]\ydO֭ +eR>R>*O[C>Dc;/ NLh+(j=,[{[j{0 6/᱕}&@Ļ4cLl׭sqDk&,FaZ[ˈt8@/ٗͦq .1a6HПM3lg:'Õi-͋Ai"/=kwLI\lˊNxp&L1q ݞ ײvN&],bL*N%4Ar>SUƝKs{Ew!~A"싐K:9'!zm^2P .H0΁ƻ:rUx$lVe} @MUy‚h1 $ .j})Wq )8$h5 hԲeN*|m(eWi"p]Q1`kJDDlJ)s;摙 ˌK#0S3\lk2=UJB~6&7녵GFg}^9!j4WBa)>\nȃ}]kXɞP|h-pt8.%\PW&lXTބ~no.BZdGQx#7iԌ2CS8zbt/1jG}wvNT^{.zСL% $ta`V1ZN]$7z \IKl<Z^Q2y!-TPۀ~'3/Q%Ou@qnG5djOQ ooHS/>c/(>0z;$9Y\n D>= cc^\cxj^z'vBrRtTrT~PX:-o {iqNEGBl 3[[xA?Z{Jdy"N଄> 04O2jpT+"V/c#BD]ցֺ;6zq46tp/uDn'sL|WoYXB a>6PtR`kI\L S/뭌]\,l^m+Z3N[ClS7^QRkvL~ POBe:. 49QY5ݢHNBU O5^+&-rš FTUDEAɇ2z.RaԑreƎl8uZ3<NF_p- S$ <_|mx=KjO$Kk2飽'x/7r~;A)/:2>dzFc[|xAQYT1-BZi'8F1L=#6&d9teމGN{5 ܧ <罸IFJޓHA46Kez,Lmx_ۗna{mxiԴ/jZ\/ӭ@NG/;vcph2 Tm;z?IJq8r}9qnj_VI{@Z0<H-$R2t+ttR9nH lBMf=%$usZK\U\\[BܫV+y41)[Veo-vʱJDKVv*M7th=Etĺ,aZ 36OvKE+CY4ɻ#ȍ8 ' 2g\ړ\G~kJ.#[m}Ahϰ &5zk=bGRY7-/p"Yafz?Q>umY jWQ)(|[XηnSN(樅s|'&f(`FF(Ppqbm*2&k {Ѧm>)׆N Xn&An:p +@}3-^(LSZŠ3(Sg7Ј"cnc49\|c+xFZ8v8#4v΍Q 23@ LۡZtBxD.9}Bf@LjX a\E{);VkްQr<F3WAG$lYӵ[9S36g Jʞu`񝚖ʻܟN0I0K2p\WUe2Ӗ0)eE?yp ?Z.0R"Rռ;+#XnO#e q"$9!$*,AQ_~m 8Z ~8iz-ZNc52" _i;/.N>mDT8S|3~w;Ƥ5搴`NO3Ue;?X{zCà廘b o[*;wŒQ׭T*Ǡ\*پ Ǧ|MTm44hp9NZ _JHb秊.ݮ~nxtk@/3IOf-: 6(~hVtf]sAar-mD=o HzugZB، %ti2MlͬVLִf׎ s`T;o.H:mW'HVgk߹xXDKJh׵Ƃv\<j` ހ&Bs DM( -d]u{ŸLuCM"MW h|8cj DԽz6C3gׁ, }BͿxX`)ݦ*Ҙb-!Fɑ*^3(N"BK(h:S2JM8'TN[ pN@b]b>W6eoHkp_2(l7 ]l>[Ws#+[n{ |}"‪vr퀬I%q'cg_W(}A2I uVM} g[,YăB ^񌵇_cb x΋=CwEou__.xN1^|iz`Urm;J)laՎר&,pkcB%LqHAn*.]=][FW+?_fj!$ L:װi\j3knq8KRGìjxYsLARVㅇp;U@mNKI\V`rwf\ò.20%;Ж«@2߳Dt{*Dn7NeXTZ#>[?xiB7wtStT.9)jA3o8! |dԎ% :9lJm WxM 'ɮl߹̵|\&YN0y1~0/DӱI"pDcX_DMaԽ{<ݵ&kZjάQ<\H|1VbtQb(Yfjgg^"YiںKa*2i[ԭ1IDl[XQ#e?E|\*tK)r׉Mq't@l.iPśT^١ƽ[[yKXq;S EXWjvQ !QJfl]~̔HĈcL7 Wƾ;}ˆ Bp.B#]T`td(I>Bo|J Gm0 YRmiv8>CɗfCoMN];j>C6cqs-7wDsv)=rh_s?diz3ϧEʟ7Jʸj!.F=+;+?tU 9o$:Ltyv/Ӷ E.;/rh:D ` 6I`<12՟>).?$m13~ȔƩ,Kȧ7hL^hz_5q;)-6}uJLs"tKL-BvS#Hˋ+*$qwIXCӝg!/lƖgqG^fs2ְCn͢TdQ` I|XS%&τPqȶ>@\)|ί}5Q~3peԁ!ȿ~Wʻ?UF7- 5j%w\ :>c,_i]CQНp1b |sOELIme~󻨽| Rdzӳ)Pp5dO(n_|O`/*`ڸPvE,na]3 .TO#~8Llּ/f ':d%qf1 E`+v_T#2CV3\DĂҎ T_ ?<`U֩T㐊~]s)֕K:iZJNxkZ/$ٺq$fn.@/& إ]ESZKiH JM^ $0[fe"s:_ "PSI"R^5oUo݋$ͺQx".\>ur|5$fA?<t$L!fMM+P (8nnO6ΈO>1~s3; YJ~uWc2$*/&T#Z6;t_Mualb²tRZ6' P~򅞔K7.<]D2T bE-&VQ6`*{@7vvjI^繱u翈'n[nftQ7n>BT m.TYNLߩQ!H^ hD=B##aRrC>$.C '|';ЧgEO}ꕧq+tX±*3hB9b Q2ML8K8E*W:b*BmRE 6^ 9HɬE6h+<2U"Q>+_` F *T|9nkW;R@.Xs`Pˑv;zw~B(\}fZE(]>LQ7Q6'lt,W,KTWyz6O_2WlW@߱nh%brWm='~*ǑdDǽe^=/=O"$s^9[2vzHy;7Y 8`?_'4(ְ?W=h4l"G7/eO/\{lH[()q+鏰O>$7@X>\9`%ƶېgeZLkKsn&bfc?"ev JH6;` .fAGZ)= obǞM:m0ہ|`?#0c3vU;u0H/[`ޭy?Swju{|BNZ\PkHR5;]*' b4[ I7&Qn' +mٝKlS%fUeS,9M0s#![kQǒ鏺۵$ʮ;:<;Xc!\uVt8L:ՔbY{IÿXn)_K3"gz0w 47S <@Fv!(t` /$qM&FIzCnl[W7z,d+KHxL1=L*x'Y{[EoG'~qZy=Q>(YbVP- BTBBܓ7!(m3cmK`֞8Lc+l.c)F˝韃^qN^+2dy9&3 @.O+ßndgGKQZabRC7THF K. #ۜTFriQ ڈҥgΆPSF娅OMe$ !RSg:$ 8 W| MWrդɩO{z|@ FD+%(;qY;'UY=p 1t9,"*>}e,ՕߪBw~D|Q++ B1F+.͢w齢C`gn$۔qVu2yv݃[>wNJ}D,2pf1%lkNQ H/x ET#nf=-OL|~q#xJ3i$˔Dd. =-7jMj{aqrBV[/nn y^3q::Yva@#b$y] v ٖkk ff˳lu:wʦg\ m:'h6j6PEMJ,It߄6}Ex,c 2Ֆگ@] )EKy~ZDuKH6Ȧ`cilYt׮jH%õ-7iV6o[:IhuL9 m^hsSi䚪%E955<q#Gxy:7Κ8 ~M;3{B):؎mKQP&Ҿ:RN זEʲ~*dviW=y)A. w}&D+]b'/Q=۟S 6h3'zQUjssv[:'b- Ai/fU7p?_'YbzUA}4#Cl\`rJ[ 0蘰?Θ<v |XQӢ _,`iBw7axIƒ{<8S/LQ e6o4ǧ~f팕Z?jb~8o)L+b@YAGr KӸȒtK"ȅ>ٔ0>{yw/g,٠.ɅEFL| $?p%QYor qɓrRd&gPY{:H7|3k59g5^燄 t|n3X<\xL7E \ ɣI^bb;u%7Kߊ3AOG`%>Xp[K)\Lj;aTA<@u-dY2o]=#Ș =F1pF83z-+֓mA9MJzkP?ff>'kN}7Jg:OAI}mJʋmCBv m",wޢƍC>.rϘ/ W #yKc2a^/"doKvSY7.(,$2ٮ!r!Ec\s^Bu e4/`grOʘ3z ˪Z^\߸@:wKY.5΄L#4#1P&nE,: F26NbȒ $ߑ_~ VyPZ!s #uFs mDiS ga\bPQ껀c QT)ԷqK+CHUBZG1VhU؟y+ Y^ S͡X񲀜j+VSQ|m2Iv2Ԓ9I? Kb{hP#l9 AryiPa2DzƸ[, K{8ZETz]LOj&оd=00#n|hhPla #\%gK%>XDTgF?6 )pj'oxdų*19aiƏ"u4E}= "xR)D[Ù V1=}:KIAx}!FSElj}4ֹÃ蓇D¤Q+eb1V=4 dbr8q%x%?~,56zLbܽviyٜ;H~{לcE[eǹNz/pu'̰T=VxkuUhg)0sZMB= TmUZgh ȬWB+E|b҄CX_YȀoqNKzT珌m[%ȳ,mW`1΍jbUH{Ci=[Nt;tz9ofl`潚}03#ik>3s4_<.FTU~ 6y3u]^(-[%l~_L3q>k0-( RU珮7l$Kg_#i'˻{vCA]U}}MCT}+&c#h @'색&Yij*v_& uCE\rO _7DGcpb&ad)θF%}(8ЇFB5@X`*qtu El"G_|羢tuMB-p!2Kg\3?`'K@:*"kn`L2ig :Me#caօ0^3J'I0)G:S\]Sd7y{s28w1R?O爞j{ܠypg(IsގG (vٍX{LωjAMR9~&;gL97vnC;!~¸=|K]?56Xg IFv"҈'NV.6p_T2d pi3:)XxpZ " ^'|L?W@ޓW !{ ^4jqU<kDv e4FFgo eL6 blzus= 9 xAOm.O& ]Vm F#/RZ.,- [~x 0~f;VJ}|{FQ7GJ͡f'hb"Ӳ~#C onrZɜa&oD 4ϡ܂BpfjΗ%î(:mǧNa 7G4bÒ!@1ؾ@V:_,{D AŴ 6q¨Std)`w{lW[ ]C._3,o S'"z#kR}ކ&& Z ru$߃[,_ʍnb~c<{!⛉X~LC}M=j02I bcM2 RXE=\"=EFDzSvw~!T@B6J˷19JtJ j]vB-hZFn(G~IOxuUc+@A}!k2^i :2٘uF9~ƀNTr !SȔYSKF yѫ#1}WsN^C*tyHt(_>cl Um?GPW(Kw]eOA3s?st<:?AAhMJ8NgŶ 8E%#WZ͋PacB:҅*K[>hYM7~zZ1Tj(ىxYuV* 7UCM֐9:~ȄĞfgrJdF6 >Xjb}f%N]|}:HDuUnc~\{#ָ hsI0T`Ϳ@:D P$&P#@Ta܆W4_[*W]Pd6_#!bQ Wb䩠pD.UXsN3=:4)= &M#Rf{?fVW]Oe) !3ΜF8"mA8pz0SihC<.?T(بa->B:"} er%u6yQ}M璽o WKv#fL}7OqnȩZWH.8 n𺥮,?bY*1WVQwWK/ ([Ćw2#Qa+ X۵/| -c}wmd=Z/e6=I=VBbMdcY/p/~ÒcQjM5=Q۷\L2JCwi;Ezbtk _@X}dzxzsmt藝@9!ˀ|$ d~4by;[ .G <'B-2Fz'v glt[?]?O{΀KB˹tI1_܋:['I`_鳬Oga^ATGgz2MI#H}1alvʏ AfR)K㚔W02 N %C~T15s u_0al((X"T5F:ihw0mayJO!V)ZDLл@<\)]1ŴFP z(N<k#tpCE:4@/6l`m}wuI0o~+X9ܝ2C~͒Fqڠ?t5 i >ԥ𰴄>];([;ٌ 9:l: gsvm@}ӄZebQZyuY83Zgcde?˩#iFaޔ VhR4)4=$D]>EOf.445JAq~ ߞZ;2m%!-xLtd Vfc QyS ZoFÌb@,W}P&l"t>^#c. ife'ӛijI`f&GV10HaMz_̅VSRf 3[XR% ݊&B1u(tch^ 3CAKK#v%ՉkjB M$P&_8Ftmr,i6x@+uxb\?9%zlΪ~lUzxwS2YvM֤U,{{E3ff4wDAVYjM#'ݥiEwNΔ*z32ZKͬ闯nHle@9&i=kH?/5u|Gk2\ePmAZ2i\51ȍUcsv ëzF}NX0J%+}|ъ5KE_3n7zB]Uz0YrKcn0@LgwQ:@L%tQPEƞЅM6-w1PZv/QO2(>$r'u}otmP! ~6#FV߈pJs+i_$u7 ltMҚ2Q$rJӹUIX `.yŽyk\nsoX~w]=afbEUp# %T(`@NNWmaV ]߻'яv6ʙ d)`F6y.9`}d6zm-p 2tZT@ ] dI}񤂌VkGjV4s>" |9Ǎ\ԩ0r"> endobj 87 0 obj << /Length1 1647 /Length2 10921 /Length3 0 /Length 11775 /Filter /FlateDecode >> stream xڭweTܒ-,@;4 44] ܃Kp ݹsgϼѽ>KvZi)յX%L vάl A2&E |xPii!VvA{Pb r=,, :Ye ȫ-+jgou~;jA @gK J)Tur[k.&P+S) 4sBqٚYU+d1zuBXG+'@+'kVPx WLU]Zy:[;ڙ43uWW qw+ hfd5xJfhw.NVʀ0v4B^i^ο{}?srv@P98_c:ƶEek^l\Bn_3-h1GeWs~ d'+'k_{wjY(Tugk ±2\m~G?BHZ*;Lhn }mv[3#*}u Ӷ2d< f^ënW. lۿ/N=ޫؙ/*II;w+_'#D:;;ZAl  F9r65{48:*6x1E]3 NLw&/.K _(TV?.1s`gKi{ Jߙ9#fZkcd7,FO?|u:^4,zzC6|zOKsckZzpHw{C;4yؽEœB+dL2U3+ N[4;ϩ{NˠNu +K)j`iSwl5ui`GD7NFu| ,;WƑq{c]n&!E%L4I=?bļ/sΣy?;c(j mey h!saAi=rn%5+EjAEe O|㚸8y8S> M&R KyT$e 3?~ָGxsVY~Hy-]艍@껨IYA\Дv(7R3&Tx tߏ-hpTa q WQf Tv`( _v5].]YNu:ή*s@BN_װU&|?<Ӱ'~M]5n3 ]مse?&KqW.@ 74Mw\tAkIO7*RQe|VeN?YѷKsGmSQ_-NрGBЙ?-}-X@ YMkաP q֬RgYL358ђ$ߓ+m#fYeTC()V"4 jkH?a^ɍfI .18u8K-pmjH7qA|eX57emm"6(rK|B/IQ@p~bݽ9Z~Uc*r`|5wR$!\/ 5u|\ ܅F)MgK,Z|R5:|濿5NDx*zYOYj$K84ɺ1,|ڽL-"kʶ+ (iXΕL ڃXoύd#9Mn9ՁL =tW]^[o\zWbO*u_BoP -fWewTC8xpI'U^ ZOe.7)g5Y…G Q{):JeM=&C8jn& ٘k"Zpy0a,LfP*qV;O*0{*.aʰ~=-NXa.ik/-%Gܾp*_Rz֡}*nz3^~#㳇>p7JfE"dLw"/nn`k>*z|UY\r u(A~,R*,Ҩ9 䔯1}:9ZGl.('~qUc7by(]+eDSѓgJEX [SᗥQ^\ۯX\y HlywԎ[7WdGE T&b}n uWVnSOa|ׄ@GxSoBIYGآԥиP*jt[˂o֖nW-{wk{(T^s ppW('r/1;ZS@ǨBIXX_'Ö#)5)-LCP;a5i#FǬR?""_FT?Vm#p}$J#:ߢ~.=oCIasԶR#k] bSg_]7|y?jV9(sg(X Lc!h$a MpJ}S#"*Nj.|T-R9W5tɧ0..s#?+gCi~Sٳ0BFʺ~VC\N&٬hSV?j0T&9NпD`}7(k*>)G1D3EЏL `LLDm[yNT᭽e1k$X2<جW!IjTX|H&dn+EHSRI}{-\^E`~gڍ۪ )[:W\{Gm呼^+߼D{F3aܲ2W]H2؂r7}<!go76s/qCkj[h!MiWn&B~}_06rh[}S`ЇKvb }&PC>aZ eGaNizv0F:0d I 3j3ظ,@}jTN>ٲo@|h_v=IʁG˼#윤,6ɵs@V;` #‹[v~8=dbFLvQSIP9PQ6>׸ b'̅k $ =QvY |>??wI~v#_7OlaD; ٮ兏:؋R367XH#}(Y,?&=A$9AQo[aD\@L6_Kw `7 |tQDy9'0}Bm=dgYMLqd3N'Ok]6HDE:ÿ" 71f%5r3n wh/۳/ZI$N٩[KCQ nb:/ֻ΃bZ`%2:y+uBD߿;qt: 5Q,o0TvOv1 uI ) c5ҳM;eRVCƢ bhf 2uT0`Z%XLf FslBuxssJo%KaO$ BqdÜi̕\Ս3d̄$+]/#(wk^Qa#2O6CPRS Y J SZyG [~O.E an As+?sL&O?gJߟfR[0KBiAd< *8KheRyg`*[sZhIfj/Ծ#'_ԞqS~/L"k#LEE'kNHY/)Xש jH!5Шߞh~>lUi9[ 0eq."O)*XWLysyT<\|StG aC$ m~5@yΟ=d9e(e"́.ΰlAJ:\L!W{:-.9(H#g4y2Ӗ3K\2@2!<2SG7AB\ oQO+uǙʝS|>SIfṄ+^Riz~鄧8&j 2|0b`BIgU ?M%V xSq}"ț.6Q&ɽŒMݨ , lY O>cW$3 b79M%*" /On ,"QiDiux4ZőRJ+5K嚜j ~¨=SrmHC kwZPi>\sG^pcs{3HI?ypDJJFyǖQNPnrdx0 X>l) :"^jM7bfu/OZĻÒ0a2.Ua֟ < g%nXR`XKPzaKOa*c3mXxyo/ U#ܤ;oQ!a!tt P|>*W GFQUc"slPz[pԻPFbŷ'(C\k5s!g%ߝ{[~Zzwkmpv荹^^_eH[&yTydՈ؈<4ƄDܳ /2!~#W'3?ڜ 0buQ"#, *oӹ6QrX2`"ߢ8]Z` D\2'$1ȑRl5"M@/40Ɂ<$z\)t L1dCōrމ\z*~ݘj6ɜh'B`rSTS7sa͠wYɌbϿїF,GkD1\@s#aZhݧˈrpo|,HcםDt-}c%l 4v:zU .<-B;I5Yͺ } SG8 ؜ 98;L$``/ dɶFUwRҡ= ǡ2tڰ)z5OȼQJoY2PU M8P` $ @ۻgKm\g2Qv*MlOUH";os*%?rGVkgE)w]h:o dtC-vn'!\I1`9+M궛:u {)S<`F&?\!}bѼ^6&XKȂMjwǩstȪWg`ȹp,?qzS^zgKbqQjI&qi- gTC|?x)10_6^FkLK(Mė[VxۃOlIQaaSC=Gqa&G|ɩerBRt6-˭ؒRP{%6yGu|ao\饌rp G`sݢی;*GxYf떧KTsι0'ʃʊ^g铮QM^} .ىmwe5.Y4ʓcDL7"mIcўk)j*[$[6Մ% / :r= I4RF:?!HH}j߆OYyz6v /* H_N⮰q2EH2qf'Q>@80,f Z煌u?1FJO^vTHcűoc7P<+2&(4l2Q5_Cp){ڵEq4bAd}VjG!y=!knJd!'8@iyLM[%I7$*a 6VQ^SV,$qj 6ķ36x;av 8+jcmsY3сg|h"Sxrq4#}P BlI p !"G rUkU94CaT4V%:'WGn%S"+"Hr[6sNVzL16ޑl!  G漾Mg-'s^S6?%sscjgerHeVu<6b+'Bb?kHO˳aE~v:hWL]AZI͜fCߙC8 ?h*%$Zs32 #4%u{Ƅ&1N"asߗd#\<^{zsNf椲"ğ>晴UH}B CH \|NL?fb MfzcTPMAyS ON$ǁCohN5nrʻB;(cJ4F$pWDq?5ŴЮ;@ [6MHؖ`{2Qo(,lH:/F` 5{PWD[Y7-#u/[Q5ta"fTE"Ţ5le/;"¨E3ɵX/FFma%cViJbLYS: 04/9XΑx[^3·d(4•W1f\2R.cGL*7XcևO]0/#[讳?I3?fūd8hb()E~F5z?DMrj`O6;0a89QqY[p{.r7C3Y#Q[%=aҜzJ8#1Qgl7[u1|njkQxZwǠ|y*:#_oRT1Qj @2 KlmOa)}_9,{RGt_ >v𧯪ΝՉFg{BR'q_?zWPbFlx*s:MBDS0B cw`7s1#sJ>kdžyE:E{g2SK&_U!r,[ NfcQtwJcYcØp̒R)4oHmh'ɑRO*> endobj 1 0 obj << /Font << /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 8 0 obj << /Length 144 /Filter /FlateDecode >> stream x5 1E|+_ɛ,q Z4ߋ$vw9r;[n " .wd$'Uo"'\TVb.T^5ҘXzո#')>(&N QmoW+ endstream endobj 7 0 obj << /Type /Page /Contents 8 0 R /Resources 6 0 R /MediaBox [0 0 612 792] /Parent 5 0 R >> endobj 6 0 obj << /Font << /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 11 0 obj << /Length 938 /Filter /FlateDecode >> stream xY[0}_#;7c>mqYRIpބ$YG-O)|99I'R@`~F0y|Exdirx!Or y> b 7'A4MG1$$a(D#e0ANr$'č c!u#@Eo*T-Z$HuV/kɛuDW44=-h :. UXE[4kYh<78M#❯HDq`r.R?FwX4Zڲ-",twYYX{DXIR7[@:?pRYv(fWCL4 Odr<Ͽ1GB,_h5ςX1rw\uJ)F%\Bxnu)eYnpVT# )z?ig(W]Q\ T, IC-0k% L4I#HPœنWOj1#t}Z}fjkt|ԒW]O_~kaMFKr|G \/"př^vtP0s2|K:`$$wPX~Hz}45bb09Y`Ѹ0FM^/HFx`)x]܎g4!r.4DWevL1p = _7sh`$ 7%Ǣ endstream endobj 10 0 obj << /Type /Page /Contents 11 0 R /Resources 9 0 R /MediaBox [0 0 612 792] /Parent 5 0 R >> endobj 9 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 15 0 obj << /Length 726 /Filter /FlateDecode >> stream xWMs0WpL!q&縞^[L0b@u}%KIҙ{oj9)(zӥ8b4(a7]x}d2 BDb3ۼWVe/5WHN|ӫqgQBKA%x-i `b) k_UU[e!QRuP݇tHɧ &+$j$R'5{TUpO*5l2:snf1\WCl $;+F2ѧL!Ks5θWmɋB*{sh=Ռ>qpy==SEMC iѹ9f:|)g|[|!-~>!WJt0{=a #Y[עtlRpo-:HQw淓BȵPN5k^-ϻ!mˬoͼykF4/e"dc|VET^5]/胔cxC>s}LV:VnoޔR|? #' :0yiw*aw'VCҕVGL)> endobj 13 0 obj << /Font << /F61 12 0 R /F37 4 0 R /F64 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 19 0 obj << /Length 1005 /Filter /FlateDecode >> stream xmVKs6 WfjVEaviwmw{%ZD5&Mߎw?FeiUrslI-+O!CH6/AhpcEkQ~r$ ǡHzoya *a" ;RFy,ҼY)LeY:#{Da}qAd`x0J,;XUl*z约\@#:;E걟;Bޡm k5^Ǟ(PHs=^]kznokj*DHD: 3G~n#( 624`?hd~/Q_Ŵ%}o.'8)HKS=AW W~9o@!Z=plw uxE_ 4%BglF7$)zRp"li@~`pLɵh7ud) ^ja5H-aFC6d`EEV_4mwm^{H<dsVlݸq$ oqS&mH(m& aun+u6qQ]oe+S_nNmB\iyw >"ƑzfZC7E˖h8:> endobj 17 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 22 0 obj << /Length 1373 /Filter /FlateDecode >> stream xڍWK6 pi&V$}&mLm+ʒF_iQA||{SlD7&IӨ,M^(Oͮk8)܊<Dˢ*7۬$#r-{ٽmPEiVKPpq k CGrSGu! V%D$ vxתpf5kJ*&ܞQqx4Ӭ'oSmIFpbz8RbU͍Q;z$Q/zn醣dש052%~( ^|LZXtʬ-r1>:i9L@Uv$铞Uw'5dl< yV^/c C O uxĜܷRN$6 d5m mv j=aCB7ZAI>) A(«!vPb^(1 JZ?D3ZJ@ DqD̨|ꉖs {|xO+{AOVC(IBGX}|a`@ ffRdȊ5. V}F@ p({"ӗ}A$Ojҷ!X0g~>ɥ91Z Nr' l2e,b) 9kSg\i} iȔM$gbVDYK!M :.>zTxQwubXl(!=Hz=Q0#e>(>%#"&ճaD0s\sG!"<gm;ܡ0Bsf6DzӧσQgMw'0^+ٯzYk[w`W}C=P~O{6ރ6~AW"1UEO\n-e\ 1H6xsXϩMɊSU.m$A> endobj 20 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 25 0 obj << /Length 349 /Filter /FlateDecode >> stream xmQn +8ia mi.;M;$h DjISOI-DM*A¸@M>kQrNqlP5vJ(#b5v=0+r4u2+{jG:3kgIQ}O:ʬY5jEeUZdb5:8|'jaR{ppگO0n Pb?cr*{4oEhQ\3 @)irE%R稲|{<)T뜏UY82}( /t&p)*yErSdMJLݩ endstream endobj 24 0 obj << /Type /Page /Contents 25 0 R /Resources 23 0 R /MediaBox [0 0 612 792] /Parent 26 0 R >> endobj 23 0 obj << /Font << /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 29 0 obj << /Length 1439 /Filter /FlateDecode >> stream xڍˎF잯0Ћ ĪFofIѢH䠕de+ٿ/_#ˉbq!o/~|Mygq$,rq|?l>wm}qz, fKâ,E]ZJ7e}0'fIMVy G2ʘYVenK* gm7XDA[oH.3^랡fеikPuv!\t֋z4ݓ` H[P{*=ɱ͢Mgߓ|Z̀h>|?0@͂k^ƒ7,0IX|ㄵNBݩ(;kt!eU#a,eO卐(fe0z hQDfŁ "{ݍ?(n uX7A=4223;TG0;PbMa M|0[G|u sa~3vU]J*Ƚ@i]s!)|\'0 39ɔ@ RU"6ǵ %y"FxtEp B c'oUXs36\в[7k nOL%5u_{H lNmajD'˾J,j 馃x b =L cCYCWQPEG ^5ɋv7<ΜsLř[MߚC]'%QZ%xk 1|E$ՀX6A8R0Kipnw3~y3{Q-(t((*\B.0kLJ+_߿f Y E٢<ѠRp1̹cIT-cBФ8>I!*iTlǾI]gZ_r(\Hֺ `G/NB-ϭcJ ʺt[/r 88F.i,=9YV~zi9>d$*\F>(ٖw_|TWpB"eeYiQfY-M dʫ03E#" > endobj 27 0 obj << /Font << /F61 12 0 R /F37 4 0 R /F74 30 0 R >> /ProcSet [ /PDF /Text ] >> endobj 33 0 obj << /Length 2233 /Filter /FlateDecode >> stream xڍXKϯh @[#Qev;AdXh#QԋQOrbUG|[!Ͳԛ]ʊߑz\UFɢ"nJq\Yz~xUDvE_릑c{sn<&ɟ'e Nv0we^<4wm)ζ:#EyD/ڳicK4_=w Uw掯8e-J j>tdN:ssYOpöfyãF|9oM7ž.$ 󄗈*?nޥU\C|m1ڽ6Ts0Lm",N|N$~_i<=<&bqMe0_[aCHLSro @XE '=?aF|3WzKfGyt:{"Z<9˳$Q4X:@fbͱ=%[AŠrA r$#zVv,e,YdD%ޭ6-f%iv$GR܌y~zvηy;aY)Ke:ZZ{T1fq~E^gG.$Xl$tar:062^1ܻs_A49s#oXo.&gDJ/N3HO\)N&XI&K8-G Л7f]3hrýtTdѻ![.NGdz3+J,Iŷgkͅag{O+KN$8pqPp*`~#ln" Cg䨿GPbuP\L_M' ((4%y&C+ :MSUYd,$4ɚ+(&e5Q@|~̂}q~0P f\ r@cڠ EﭩTjY=E ζֹ "4(CLSC)+. IHKv6w풧%VHQcv 8@INZjfٛ$rl1?Xwu-Eo>/y/sb\3 tYz7zFא0jޙ8'j)f2%*niAmcFRu#w썠p` &#7c7v)f\p'ehOO Ggk׭xC_eC?s ᄋvX(*{ 2@}J &Ɔe*sOl={h%q_TKA̒_K 7!j%KY> madcS'8I@k>E;ږӋ$}'I$ yVzb#vjZȴ2 A-LtM R*ÛyT]݈wtg"p;9J^Fȓ*_nS|-A؆厽LiIO1 J+{l*Bx1xF07\;־56xwh9)ꖎ NUL}giq0)ec`t@ 4Q]ЄމGd^| Coҵb|=SYdۧٶ~)dBfɒ]qG @lw=ҙ 2RQX;8 ԑO*3"b Ή*PN T41IUlՇ~Blo;%f{LMzJ_"beiYpqPbNv@ !Γ:Lb zk&步&$<Ҕ 6 ěT.][pKdѶܪœ8Pѩ-㗁"8U=0I PaqGcr򸑠{b@X0̞Q6<B+Q#LqR*j/ Z':fߟAq0șH#RSngM@ءV%~C$l)B0ԕ(=jTŌ1,d,> ȳFB e\Xkuy}҆D飶d%g3]@\&Jw]~{y_PQ endstream endobj 32 0 obj << /Type /Page /Contents 33 0 R /Resources 31 0 R /MediaBox [0 0 612 792] /Parent 26 0 R >> endobj 31 0 obj << /Font << /F37 4 0 R /F61 12 0 R /F74 30 0 R >> /ProcSet [ /PDF /Text ] >> endobj 36 0 obj << /Length 2181 /Filter /FlateDecode >> stream xڍXK۸WLNf|KLNq]$lm!΁1"ba{Üĥݍާۇ2,x??inCo$?MqEfYۚ486΍FQ'wCuVtSU{׹jvQqSSe8pCbi2SX_l.c㑓B1)ArKD Hpit~ɣ`0w0U"$r[0$I$L8Nn|vl]Hm0C'd,ɃgY7jwasn߾z2HT|>o<0klG{ 'pD$=X`ώb+"uB3^mv]M \`N0/rt>.|Sˁ>ΈA>%qQ|c:ǖђ+L_p͂Gwi8.~MAJPtWG?Fy4mA"(eZpqW!b!6?&I ,X`3H%,,p,i Z\~d0''=!ݳ7Fl0os<$F\_SA&ʑφ tM!)oq*ʼn:H'^d%%@-3𣬬JRIX<bj;Aٜ Ao푖+y'CI"&OYPH2aMH2E?[)1ߦ$I|x2U#'Z%sٖ-sbeq=]{tya܂Rd-ɸ8 ¼ᗮ,^K/j&MdR \R;ބ dY|Q Qt"R;7 *%Q8$$=*Y"5LR} ֍>FjV JVS^df !]IjSVTX6/% TJDdU@R]H+ 'G-X a8q`jiZ+7>`ڦ\`lq6٢#)ݖIn(nVmo ^N 娅 1kFBteM)ń/1J{ -DՃ;1 c5kҎ5KCЀ.B= W-J.$Q.xi%_QQԧPqJÖAo,2-G<&5dz :Z2qm]rMRHA N6uy2=F8B*ƺKiXiw=ia<ߒn&oI fťEKn\ah'Y̨Fe.ELUHPѪ|[|P^n>KKIbS@A\7ZN)_dcH &qաTVPz@rܝs)tySC Ad^|Xs g[yVЖ MvamX}(B>V'` 7Sw_UK7Iyf[tcOJJL 2 u=Ļrq 0c?}jngQ"z-REeP&vH+dx!cJ_,ޣQ*WcOb &۝F9O:kY6I2ïcd]ռ(CTt(/& endstream endobj 35 0 obj << /Type /Page /Contents 36 0 R /Resources 34 0 R /MediaBox [0 0 612 792] /Parent 26 0 R >> endobj 34 0 obj << /Font << /F37 4 0 R /F74 30 0 R /F61 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 39 0 obj << /Length 2328 /Filter /FlateDecode >> stream xڍr|*^/'ILvg6m-ѶRFI*>@%ŦWyo^(IE^nIym6 mv"謽vڜ3Xw5 ώzeiF^+g{Ym QN0#.Wt W7Qp}V{]$*?Q= z=A$ɃN*^bA, ]?PyDp= e$hM;洦Œ6P8FPnz#pƯ#S)b| U{i;w7f%[z(=Xa$O/w\ъwKٕ׳6ۉ 9*{v CO(LCY(Z(;O(|3 %p hâX9"qϢI>H( wu2BR]7ԟ'LϚS!yNղKm}Vnc* `:#r.wi0ˎJ{2*  ;q qq1x_+ d;?W'>7 wM-Fh&)Uax:9i{ZDuC^+xvxd;Ж$k0j㸪[:=5 FXڹ$ͽBٟǩwB>Riocs:8/E>MX @ccy\SMRHIF#̿wOgZ6`"Rd}&(6O1W'ra'r?p?Q@x;*O>cesرs?zb<1ayŢRua-x[*JQ'>R'/ɧ4Wy-G)-`6 1lg񳃪.1O?BSSâ%4ҥ|a ܣ)`|p¬nSP&{!0~B j pv)];\|^7}żZ%<K u #ZzR`kr%UK`y}+T~7 jz}Ȩ-0zSQi2LVuGGWy/lK}UH3H/f8 endstream endobj 38 0 obj << /Type /Page /Contents 39 0 R /Resources 37 0 R /MediaBox [0 0 612 792] /Parent 26 0 R >> endobj 37 0 obj << /Font << /F37 4 0 R /F61 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 42 0 obj << /Length 2305 /Filter /FlateDecode >> stream xڅK{۸_[|՞If:$)@%8(+ `|u~MU7,뺹( @bqgY>EoE)ô1,sޗrS5΢3 U<^|-rdmmQTJth @z#[qLi<$^:7Qώ3ap4Y"71 I*GZ߃uf 6m dE7=]u4tj!䭋o eM!%0[<{ƴ9 >o#^f+MIN(YtxFXcGJPi7b(ȓvk1toӢyJzO"E/80:5ޡ>JՀɽ6j燣Q ;Fփ w:Y%9?#o{ 8K |`)U!G F'=]&ܚQleE7*BK$`;avMS0"o8#ix~g)hC) Z-8jl ^kRdq-Cְyw{6a"چphqrO@1W35XP#,D&]`8 ~r Yјw~fb1 IkjYPbBݴjŲ8-nWy#~ t+譥eퟘ``H ߮xFJs$c0dwQɴB 㲘1ƏIw0ۆ?' U|yF_24TYnPju+Bmxu]tP@lP.t|Sb5V\} ˳BzV S{l8,(\1璋k fn`:bLx#D㩧Z4ͅHHyFvs:i(TA(APB ǃﯖ0nEFG6,3!,jǮnU6衁q۸F^@BN!Rs)QC$|kZ0'PcoVK;@u*I;3|GX!H (ύǭzg^6g~џxуA[&NWhK x6@f%mfŒy(Z2=5f:1N% sW2%vT;+)wBo=X>JVYs[)CN,蚙lfMɇuK”_yEU X@Җj$;`2?vTH( b^lak%"I6Lc1TlAEY+_8_6WE{ `1?Uu;F#T8W'3 ^t pӋו:WZ{=O~ 0ZÓIf*M+&x?yޒLh(NaWaYzIf]?;v޲LFz˷P[-Hx![u*]Ti (W^f܆uE&fØ=lǴ!zr[sK#OOC >c$yO\IqZ-hkRb"7^2~b]i$ ' %uHro) G?\͛+[Ly?RwTU^Oi1DA _pϯ 9.JCn07dB.,2b5'k!ŹIGlιT&FJfP@q{5& <^P#%!Ӏ'`{sf>Ƈg4PmUi:| C- :Jm&!ҚGCy(wL/wĔl8om< V{RξMOf65>I&Fo.d/6) i6Uav5[\uKJbFݒ2[wm @{p+ӡ9=G^:,^^6e,~#ջWwO\ endstream endobj 41 0 obj << /Type /Page /Contents 42 0 R /Resources 40 0 R /MediaBox [0 0 612 792] /Parent 26 0 R >> endobj 40 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 45 0 obj << /Length 2405 /Filter /FlateDecode >> stream xڍ˒۸R->%嶮x;cRsH`@в/P҄4h4xC%yeztdY-wweӬ{eqYf}I' |NMmZg&Jh=#ViY'ԯC2-:M,ƌH)¨x0ɢFvy66:ɡӌ'Sk>)g?3>jҾkF>Xk|!I}!*kyU()-lw0Llzݩfhp3\11- gQiJEW.|/鏭l{nvƐ@pyVəxFı}͔nA.?̸}.XQ3g+'@^ x:n{x=@Bl|VuC@ ,W<w^h= 16)'|?>v.jчX%I)χ nw%ɢ9s4=׬UYDKO˝$% gp$@,|Xɱq3GtB̉^K|yj }1iG\ui@:hBP?m$ vߨ(A`r3u&z H\3>\ 'F* 4W@R史MJ)GyXb.E*r.|(mWq/?黏>g| X ĪyΆQ`P}֩Lhj dRl&Z>/ Lr5O3kx-LB3.q|ṉYSY%#2W]J) Ek442mAeIl@Q7榟 endstream endobj 44 0 obj << /Type /Page /Contents 45 0 R /Resources 43 0 R /MediaBox [0 0 612 792] /Parent 46 0 R >> endobj 43 0 obj << /Font << /F61 12 0 R /F37 4 0 R /F64 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 49 0 obj << /Length 801 /Filter /FlateDecode >> stream x}UK0#llȱ+uUC[ۃNM;1݇Ҟ{y𰻻TeRVOv"U(Y\d%?KfeQL;_ݗGQ'|B_Eqsˮ4hї,bͽ!&M!8O֙>Fq9 ЙIKɮoGMKv^6^b`eoeDӳ޺yʃ`ؠ[ L;CL3e\VZjD(j5td/< T{6g! 1#&" 85l [3O!.1.u>]y(*㢇i55f4n&ǭ?ӳn"mۀi l0`uHp#yC(%`W#YE 10DƪզHLgfʙ-X*921AKOXOzn{jb{Ԋ6I0j z”S/cжeqxިRO6&qg0gGNvIP7[n@Wo /:9  \xXl oljۓ@C={}Mdqd%iF_M7qxiwVdmH`6M{Ү^,9xI7/3;nK*y3 R|@ GZ FU`>$ !xw͋mq㋷U;MeU\@}2N endstream endobj 48 0 obj << /Type /Page /Contents 49 0 R /Resources 47 0 R /MediaBox [0 0 612 792] /Parent 46 0 R >> endobj 47 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 52 0 obj << /Length 1551 /Filter /FlateDecode >> stream xڍW˲4Wd7Nmg P@ÐBX\ ssMjuKGWW_|[&42-v.ɲ*]QQc3SvE?[Uu[ CT'9;| hsl .g>9`fL[f5sJ+tyY :Y1[FOc0Y^zvZ6Vn .xG ?ş>pXW) <ɣ,/S4H (هIǟ"^̃w}{uۆtFi)9p4YfۥѬ̈́@]c,2B'q:SU"t2יK Vk6-3pp+H })H"^R;s4DFH"llcޜzkVgulijyӀ* @SκnMT/oQ]Ivk:=hX™a;UXIݷoV2`/S&@ThU}Q97F  A lZs1^ Jjuc56hKC< l1TY4c+%9O3~ ` ^<5pG҅ ؑ$|lA4B.YF׈r{SA|4Tm#k2L!_] /iG+d̆'3 opQfFV'+7 v`5 _mkSxzweŁ g@'`٬e]݆&̊e U}~eV҅|c^#ỏ;+;@y8Sx0;F7Q87cմ- r:qe>>UT2+xeDM =^}s|?u endstream endobj 51 0 obj << /Type /Page /Contents 52 0 R /Resources 50 0 R /MediaBox [0 0 612 792] /Parent 46 0 R >> endobj 50 0 obj << /Font << /F61 12 0 R /F37 4 0 R /F64 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 55 0 obj << /Length 1668 /Filter /FlateDecode >> stream xڅˎ6잯[=co"6mCM[#G2d9%Ezz(")ëYjaJ,zUU,bЭAzʾ?7YRF"`+ۧGg'|N3-3jFg+ M74 tUڟYLàܒ{uN@k#u_ߗ):;Kb K8Xo$Iwjph J?QCì+7`+D,I#Ʋ!r:" {$4N:jC`̘]H X)d9@h Rڟ$w'NDq%wfhByHA@QA=F Z`$5J$wֳ A!I )Lw{"Nϗvp;-sbA1Yr@[;.y<Ү yEv{N۶PZ1+ɰ! n  ,=PS<h@$6B"(dwm :LܚmLsdITҲ&pQsnnʍ1M2o21DX@MOsK@hrbFSZ%ЮCmCLR&v4 Cx'qNBpGf GKO +!Π>WmiFO\2t.^`(ăHkpψNzIt\=q\ZY3CA i֔zm ]J H n(8-NM=Islhlѡ~o*f)BHIPkv;P]̱i N NcgD'L/Lm.^" cSMdۓz>(I@ AQPaU,.jbu֟jMOyG@ M~e;vJ泆vzGnr<p/!cؒʗ9.V-n|HYFu:`䲌몀MZ~P9 endstream endobj 54 0 obj << /Type /Page /Contents 55 0 R /Resources 53 0 R /MediaBox [0 0 612 792] /Parent 46 0 R >> endobj 53 0 obj << /Font << /F37 4 0 R /F61 12 0 R /F64 16 0 R /F74 30 0 R >> /ProcSet [ /PDF /Text ] >> endobj 58 0 obj << /Length 1725 /Filter /FlateDecode >> stream xڅˎ6QjEDZmHd}kz%bW\;/ʲCyqf8w?f& , ϳbf_o>4bEi?XEX%_ V/(mQGo4)*SRaVV&d#ROM5I8mHԦ5bݩB,;XowIxZCLi$EI!uIuDgm0 4^FLUcF&v8I8sjZYQ-bywoޢfwi~v<2 NC,|^DGFn:]c,ҝ:.:aĀGS(4:=\\8}(R. > endobj 56 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 61 0 obj << /Length 1160 /Filter /FlateDecode >> stream xu]s8=o@`˵s_NL{ ȱ<V->l}̫Uԥ(W**7RVjۮGiZ"2O }Lx =ƙ4s{M^7? w?<1q3Qk*9 "H-Qܭ+%p|ofVBNm6<'oK#M7K'qx.0˨VC.>+uvj(m^w|p5]5cฺ2SD K[Dђ ˼ &c{b .*9w@̃KhdUJ(Ȣh{hqGpe'h_ W,L endstream endobj 60 0 obj << /Type /Page /Contents 61 0 R /Resources 59 0 R /MediaBox [0 0 612 792] /Parent 46 0 R >> endobj 59 0 obj << /Font << /F37 4 0 R /F61 12 0 R >> /ProcSet [ /PDF /Text ] >> endobj 64 0 obj << /Length 1597 /Filter /FlateDecode >> stream xڍˎ60r mH遖hXYTEj7 g([aWpoݿz7IEoMaYTJ<.6vgvQPl$,,2Fh갊3"m}~VZAtV'{C\rSu$*ʉɾS OFoF`j$L&|* zem/ :[gF6|RX&)Ԍ@_(`5#ރ Ӥ硅}/FS#<ʒ" (nxCqeyOI@5e*txi"&3.+m 1L*{<6Ƀ'8 n蠑\LRX䚡LGAV^ؓaa rWJ 9!U@꛳7Xp{T 8` t9{ܞ𨧖4!U^_քޭM(1 ?*=s V}vo@gAaPzSZ>=vkZ 6P_:zз3N  |'Oc{@ e)Q*𙹛o_Jy}s(@dEǨb"cAy|ŵHª*A5#׉R4V-EkRQ.:MG1lLv(>L]ޣi8VoKXRx;MJ{ӹ/vsӷuݦoޥtBA0zw-nK y#+2=cuu j<1-@Gm9LSrKiI\5ql²fp+!9anzzj.Ϊeb9vkMPEI >=* ϧcQ%bChGIN0TȮԮfLcÇqd 1*7\fmE_v: > uII^<:;)܌@q <3Ɂ ھ䊍oZD c̿5v֥Q5OO c{ƹOn TН:BsY /8O1*5Gh5}G{6sd@IEL1Y**IP$]V_hu'ɳ]LD Nfs)0ϫ*Xa~&g*iBt@#`:u䱩}U:Wu^r12N~v55MF/OR3} QTX uNW} W lb' 6Cۂot[~,u~ n6nEVeJ0H\\ӫZ& endstream endobj 63 0 obj << /Type /Page /Contents 64 0 R /Resources 62 0 R /MediaBox [0 0 612 792] /Parent 66 0 R >> endobj 62 0 obj << /Font << /F61 12 0 R /F37 4 0 R /F76 65 0 R /F64 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 69 0 obj << /Length 2134 /Filter /FlateDecode >> stream xڕXKБ$qٌJS9@"$$h>vJ)j8'6FYLS{=b<+vYJj UqEqvT/0aןx Le*"]Ae0z_3Uy+֏rJagF߬maPDa^]+\+"ok{{/ʶo<0m%Z O'b\rJU4Nf0 {$TW^x8x P`F}cVB vwo8 Dɴ[vj  ]_48(tu8 ctaݢ\c獖->Ydö760t Uy#]7ĺK)kmq)l(S )e>|\ {z w0t+uӅ:RQzc !K ڶ:@ƒk@%Pf_Q!ALk+Sr/BG~7@ f 4p |C0:-$oFWI"U.z ]3bu|3-S*b!P%y^oT\D!_0+0YZp|OrMGu ~#(qjdUQ@7fs<;+B?<(m %" ?]n$@M2oSA'ߎp0&Z&9. =b64 tmB-PLkf7Ĵ2r@=h0r=8a$Ex;|Փ gjKT7G@.xkwȩ%"_D0Jt*Yzu!_?`Ui\,W/x$ǍN }7c55{l`u1 ܈C yP&|QwĂw 6^/? N槞9!4H@k:Dx.gÁH`{x IעNd7l&y$0NyH $e i軞- ,9 KJ ã^pעBy =t~4LQ&O  >/ ?ሪ3)|La$6_7;④ؒ} 2RLE0%F̍Bֆ*bWFlX I~tl̀A,,)ktD vՈ^`}fo,U1R&K} co%G!YXkh+, <4Ĺ_?Ҿܾ endstream endobj 68 0 obj << /Type /Page /Contents 69 0 R /Resources 67 0 R /MediaBox [0 0 612 792] /Parent 66 0 R >> endobj 67 0 obj << /Font << /F61 12 0 R /F37 4 0 R /F64 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 72 0 obj << /Length 432 /Filter /FlateDecode >> stream x}n0 y  5$d-6aAF+.o_)T`vI?Զ|FQkd[GbfR`"W5T'+-o}/(?=rpVNf|z6n xCFB%T\c-E98cIUEd&Tʫˬ燎ƍx $^LV΃9'~XSSzlkv" p9L]pt1q7ڡtPRh|#w$BZ7D<޸sFfBsλ% Jc#"^w"}EW.iXX6ڭ:#9tVpsx_$n3hpRV 4Rpso endstream endobj 71 0 obj << /Type /Page /Contents 72 0 R /Resources 70 0 R /MediaBox [0 0 612 792] /Parent 66 0 R >> endobj 70 0 obj << /Font << /F61 12 0 R /F37 4 0 R >> /ProcSet [ /PDF /Text ] >> endobj 74 0 obj [333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 832 667 667 667 722 667 667 722 778 389 500 667 611 889 722 722 611 722 667 556 611 722 667 889 667 611 611 333 278 333 570 500 333 500 500 444 500 444 333 500 556 278 278 500 278 778 556 500 500 500 389 389 278 556 444 667 500 444] endobj 75 0 obj [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 600 600] endobj 76 0 obj [333 333 500 675 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444 667 444 444 389 400 275 400 541 0 0 0 333 500 556 889 500 500 333 1000 500 333 944 0 0 0 0 0 0 556 556] endobj 77 0 obj [556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 0 0 0 333 500 500 1000 500 500 333 1000 556 333 1000 0 0 0 0 0 0 500 500] endobj 78 0 obj [556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500 444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444 350 500] endobj 79 0 obj << /Length1 1612 /Length2 8861 /Length3 0 /Length 9692 /Filter /FlateDecode >> stream xڭweT[.$x]kFhE݆_pw/SN )=gPT vP/v[B} ;,nM()%2׿O-O?=5]@?onv.37 'Axx6 [m0v~_v- =)W3<<;N?HQVSSgWp}(Ej_?rrPor Y=W0/!@Yу[Cl @7'Uנ@ 4(☚^I;`΋ + *~ L _-{hڇom:3KPӳv.15 os*x`dR}TpkmHGUp3O z bk^0*2o)a5s@_oϷ3ԎMJLFqk}De5ך[2dĆpZ?`:t3zY|9AӊÝ5!&0@ >!^/?E;޳1gk.I-M4v@,m!kzkLw 7jU85L˽AcWZ_(~+)xf(U%0,F / ?x&ih#P~tN'&%Ob+gHNl47L㎥Ѐ[TCOJњGm Y%EXBY62]$|}W~ZU% ڿ#-\Ap8Iŕ;:,~GH4Z|e({Յ5"؆Sv.lD8FKHTXPnK%Z>1nN=I5pWR[i..@ivdP> P#<~_4"V# %l,_E>+6Ӷa 3n6JG8kma?[ݯ84đh+㌘)e?\@PuwW_>I`tw/|fܜxýLΙ~E|Y{de\um 3fN5[4o^2m}}5>i] Q2dFg' PۚC3igkϮhpC_(| nE3=~8]B\WyfTggZv"Y :B> :<68HU:DP-`*K[?٘VWT7G+lo`VsޏgOPʼDjRI 2RI9O*]lV[LW`9N.=_ӬC8]Ol4Y43<%gS/ (i_):˹C) ó/H7M e@L_+ơqN'~g]ɮ!V䟚/v4!񆢋ި2ˣ‚}X&o9G6%kaNnwa`.\,|܋_Dah?>ְ Cm좭!֮xn)o%yI^*eCgUo"^4"%n=.Q+-2j(KpV!հA[^] Z$,gQ}Q #~lg)ocUKSk?d=݀3Ar Lkr&"ϒroP̯_8{JO0%Ќ -C!Da{VbV/Vp x>7nm  !Jj3S:aX %`-W; H%RK]GLgH;Ky«&_^$(= Չt#NQ>i˴5p?Ƹ.O:{/Ohexe܃9dR*8L &DUH6UH﹭< V/08C{47:Ͱ:S(۱iW)k†dwф3W#cY  4\y{b|jWr16}YG^mgޢ4+&]sTkHPÂ< MG;.s9/*m.})7'uIfB:GF^,=&k 9ӌw@c ` ө%[ixZ%[g6O”T\%OpՇo6WI=f`~4A=c+kRak߫'~OLlX6-gSfCnmO yϺT\F;5LF.+vdW28pŠvک/uxZ җCql0|[fޜa[t*& xO+6n6ܢmo+tVd~ x@WğYg*kiE|wz¥Q6(]Ǽ$;'7donf3cU>{#|,6xй;C/s-Q>}Fb—Sqyz:w;}MnmO /5;WK({ Vfoy<_CFA (3З 5E9x5DX}'CXi;ט Qo r~1xJjt{o9W^/\:mzfLkۮq -u1^;)h7uak3{U&ޔ'c,mf>Yy(ERBFim}ԤoFg gRu|'*SAq =O|CQӮ<Ⱥ󋈗I(ȰS[A=56IՆZnT?2@2zYDn,*"XI_pOlο Qg3 ftBJu(}g΅|Ȭ?̑]Q( i&d6Q Z̃4*=Us  `dC_ʹʥ7LmT p1\=!ف#{KU҂ K5"u|ajkz=GrT#'rGW07L~p7/?Mm{a `:u/,-t3GgjOF9Q|Uro(*lِQDnʎn3_pƦel]8|m&,i8o'yz)WcF]~";~L\u-`^C",hh\:US`s ɯ Cd8'#_⚱z@;@;Kw8Kw^16Y%Q *$_{`MĒO,N= ٭qPxK~)3/kR zz8O6No޼A~I@\I`Ԇ#apnNXu7;9۸:y:<ZcB.hni؟nuXThY/T̳7(2 !HbcLaJ4OV6qT#Y 5|Ӣs6f5j:km4CIޝ6y~@Oif,c1=8~hCT"Z._T'9E[kʒR-->Y S\3B{w+i=PK\844.EVW ?p{O1+ =".buNhi=Bpf2DDLzdli~ <Xt(] ~J=wR94{02,A@д07) a}\(-ꕒȨxox-W# t;p%#aǪ-Ѱ|%{Zjݽq^=&Q,|`аިITUhᨩgRjsA5EtWu:4=Hx'FU^!mI9~OKܷ,4O[DCmNT>Y¦u!9Qfn&Ykh|VDK䞈wkyiE#Iӷ S2cp?Gģx`Dcs( Xm%:,{E?߫ Mt<^@/e}yz$WMQ 8AI!*FTA|Yŭ]1GllD3GI@"FZlyaڑo8?D2I~@gzVC]L ѢE:#Qcݯp f?M[\ů?r4a@q!?pI ɐ3:(skt F:Jn@.,ZŖT[Q8N8PwpW&KvjKҶaXf׋S-FP4{9r>mcm*`n;II7pRj `m_Sa "$ǵSNij< 4Crl8^Z#PB\ܓ3N C.J3EMˆ!:"b^{3/<)<4}h Fx&.ƿb{- er 7 VblJfEfAj/.n̒ABEbq5!|!V؜5=n@X-ʐ`ȡ _6cf=Wc:7 fl'uߣ3j\}(J :[՗7[X _ddzJp;w(W0~_dQ\UCgxfgY6K_* 7翹PD/?MzDdClJI8y)FFeEU)4S_h]QMody8h I9"gUۏlq\lbT<9~R +g8} S&K&yAԿR罍]aBĨTPdw3{Mދyr5+&ؓXeXE$mSjo5JΖBH<.ߤM J=MT-f?B2X+btmu yS؎>ԩs5{g9i4^X^ *y0(,fS]X2ϥ8eJg m" ϮnH3C2-rb'V ;52~|KČB(a&*,Åșrޖĥf[ 5D}"tp4:2d$!Lm><1x88;]=.J#wQC[vewHEwq6)z~'T 2X2f=Ow6֪FK(Ax٫O Oǹ,*nz_}Re X0ީHbIB3E}D&"t*KzXoMf2h'բQqԗ%vRluys|5A,^ yWwqu7櫑0n?#}"7>De0Oٿ{¡tB[DI/*ڹzsayjTس_HzP~ddɡREp6P;JrU(TQevCQtK͠#E%2j79E0*fÖ m"n#M_÷A_4>ڼ#$-D+t^rVKUJ:.ƺA-lwsMAW\v9r  Ts'y&qVvIr ="4R\zl>R#䢧n[g v@ IrK0IT sՓFx­O1!W\^daap*Mن:kqtdnĭ5!hLbH릻_–wo%.z!_#ܪo>^|<,, )`ґP 2WU$ҁRIJ3/0*kK4d X;CEp"4s!btXA;%A?|WcX9 RI.s LޫT9 wSi X"Þ o7 `f\zid:=_ebYm>{7\w{=wFڋ%l3&۷`g)$a1L ߒ^? Da^ Gj-(hʢOv%_$5+S*dNl4EA¢Y'遖k2h{RR-[CQ?Q"U&;ǰ*K>Ky=ZQbہo\VTT4wd/fInIno8)M^H F{K]nXxxd\3 B2ݞ:[TwsA?F(50_DYK[=BB v&!;}iUu6ޱxYi&ryBSo}9br:Qf-;j7Sge'ϦSN͎[fv4ڋw"OV.ս( s#dH>+|~dHNKXx` endstream endobj 80 0 obj << /Type /FontDescriptor /FontName /QPFBKL+NimbusMonL-Regu /Flags 4 /FontBBox [-12 -237 650 811] /Ascent 625 /CapHeight 557 /Descent -147 /ItalicAngle 0 /StemV 41 /XHeight 426 /CharSet (/D/E/F/K/L/M/X/bar/c/e/hyphen/i/k/l/m/n/numbersign/o/p/parenleft/parenright/period/quotedblleft/quotedblright/r/t/x) /FontFile 79 0 R >> endobj 81 0 obj << /Length1 1626 /Length2 16281 /Length3 0 /Length 17134 /Filter /FlateDecode >> stream xڬct&Tmض*mgŶ͊mb۶mTlUSاϟ>ߏg瞼=Z!#RP43:13r,l\ldd&r622aG34&...23RUI$<毧-+h72p6L-ayMI9q*@h t4(Y[d,N@*#?9%08-ݍh@G ' '8,l]LWnj/@v-lSsrv2vwͪ "ovؙ43vu6u8ݝeX8[z7ſ`8YؚZ#7to[{_V ڔoNc翹,laI[S;&.S tW( Ml=&@S9;)w,@ -#?9.\ mw 13?bhca6OߖښB '1 w9o%W5:Z[CbnalelVmM_AUPICQ\ewU U_ya ^ |z7-vFIE%wHOT$hƩH (g'Oc#C=}49d;+fǔCwH}m9ui(}jMF}Ãb32x;q7B0ѺQz^?,z;b|@a~e)[%.?u:@k:éS}_7у0>#wЩv[Y!,گˉ_X=z;E&>twӼj_R%ve?zVo!#OQJ:jŧAڢdI̚ii⾁Crxe/'荱n~~a![9I+50:NN,83xFP}\#fyWUN4e>;}k:y@fnwτTHud "}-xlPeUr'Sn- J|B=[/A1YZXe 7`,vKA$nߟ:PV|QRאmDlC|?) QRUC e>X:?y*DC?{&{[ ETaY*7~p: ޥSNp S#颤Mk*bn0E\+eUŨƾⲑ-uTsSOCTwӓ:oH UwsEci6kdJMoM¤ڰreԥWe'8~M J`'E{!yQ] a!Z4eOᐟ'M;o0jK  =py;|f_8-5x!ߐI~ ؖJ9Cå%z/?WlE!Z,6UY5a%^ (] 37z61J&oTkjAa[ɃPcfc_9t)~6^P&]  BKFKR2c7Zqx)J\f*}*THBa'måqօ& MCdUr,[{Σ{ )~쥏.gd=#7B-w1!PNkMq S7Op~0{N6ƀ]Sl>RPzJ|]ERv9VXs:吥Yk akkUqW°"m \d@HƇ>qZO4I7 c=o/1\sMY4.6)a7X3õAV>#Om*Ju O'H9\772IUzeJ}g%+!Jkb%D)_sJ59"Xu Ӆ`OS95k>?^\įbbw^=bPI'JDN0B:Aq)Udv߬{̠w26<;'mq.mC\عi9mLjbw=S .Hpj NmeC7v.''p%DIK|UW/luc+fн#ιo@J"h;n581{ԇL0趚A+%L })6¡?\P0b\Ox7Xy}PO'U@b9 я!q݆G/y Kt#⡵8߉׍>A>$,|y΢2Jk. }Wz5vԎnh>w>1!}ݮ&8R_ y06|2l|')2t˚ddf/ &379mLc!ڰ\qOY)aXT1͟aΗc]#uJz2%`s{áh8a?/jMuQ ;p$ P I6gN /׹ ,sܑ+5nMIEn:">)bxFCb>vbH!3??HfFi&X5TJ,'$^‘" Y_ /I4{KҮ$И)KUFdsNAoKBC HDq?Cw:retY./*8O |{*b) w3!+{TVOf } q}9ˈJ 'BC6JKb?hTD =믛0$d> hjsuU>c{OÆGM8;{Exgd"Rw'/;W+mYk_IUB,C2M1Y>䙫r)Q.!;X-dJ}l ]5G^.g8?=}2RSڹ[՞b 5!r:6R! IV \C,+Fk<סߓA*lyrՅb곧f)QOP8^9mceT2|fȻX|+._|hHN1"보#+BhTf*m&H!ˡPY9;is/pԎ SACs)> wF<_O~h"+YMbr[أQ>9QpD8$ *PeaVVܤR$%cO#<I{!c5֥&MxTxb%r&bop;j1^QCUfs$9$LJƃߣR:6 WJM/;i-Gy|(W?9Yd$2Mj+&dd$|zbQ ]cDefARQaNTmf\lNw-277#X-p&dc+tFIxY_PcȚP׶['J{fߪ/-J&6kyHhB@$w^L"~k u^9`?Fh pH=p\!THxz3u~g˂&ae4&eȓd1zcLBU0T&f15@ܮHoIiij{ƍE>y:C*P=D:B #{ȗ~=i?Xltj4'nUgP!ڌg$AV zRb7{Y ppa=g7V_*U9*iទ2XjO80ZZ 6WQ'I5UZ>e i,Վ,7|rnN6!%|Ylv; f BҞM&b7K'm< smɽ ΤUrVف}bV8"Dߐp%8+Ш8ױԇ._üa(@_fsES; +B|%-mYDTXH:a{!i_ѰE+sl yu+òCg.Τ}Fj,Pb`|>o091* ê"LjzZkq":k6L^rc1KXmzuI[>':>+‚40 A |^vu,ie#_^nBN%djer^m+ /C=ov7u*X OB:B`i0ޅ=,ڽ1m|Q&O˹1"cB؛ B~>jSg!4&#% U5qwLl3sGN㒼8\ cQV+:_\kl4y|Mk~6"@Llۇ,UD5'$bqX =tm[vC/>PJ˶$NJ|ڮ"gq-Y~MUw"V)ql\m g̡QmYugh D1 /ʁ:-Dr ׎Ӎ)>PpT=-fUuѡȋ;vG56&3ܨw=6,м&FzyCmG= ,z 3戁$8a G¢QF Ƹ J ORO!7]N!bG<˧~CvPc4f[+5d +KHD8wd-\-ܳ9m s{dX\OϏy.0Q̔"2hVaemSq>{7O3|ȸdg6#iDc3 SqMc'u2?΃+՜Rdl+,y v$>s:(7zӢM%|h砪!([#ji}b"ܺts;_Dq~j`Ki*rr?ɆAa4vtG}kI dP4KT/OȃaG_5%G¶dʱ2؂$t5bUevDV/FQ+9W\rH”K^hQȞ8Ԯn!wP5[JСPf,]!"#|TӳAM"[xfl3*L8*.)t'%#rk~ 4-yɓ2ckB+m\~3cYn80J:hRq0tSM3:l>U]_|2|֊y?k t)tJr$,꿇m0Gf*"גf=‡D=QZ=1mhtwaZ( ~wV= |Z<ɞI^+%۩cӲ waI9N^ar:b  mZ}UƮ,ʦVOU #4G+yW[u: ~Whv}4ZsbafVïmH,Fv!y /hXOd8Fq O {z:E+T“v:a/i]TöyaJ]ؕT(_jX2$Zތ'G aN6@Ư d4N $]6zѡ86^|;?oa4.e?Mp͇}1`TlhY]Z@`ɖLtcXbQ9rYk 5-'إA:}u5dql QPkm63W6{VQfaTZ G1.p'F ^HȳD8KD[` jFsD D mK%'DWaYjBcp1طxquWrrGbtQyUC,gn:u## hT}D@e-'h¼ UHYUoKGlI~f-B 4M1.*?r*[0ɥgNo.ʔ4)lcl3nV,іie!@}q¬2 [mtF1cKU1rˍg^ [Q.T ) 16S/w*E5n+uo^!szUa > YdEi.( crt xMs1V#֘X~FgZ9V[lبbiƅs!bU0FBNkcxkɎfwALUIRk x0W9XotyUsa+Q2LzMl~-2BFך"h+l8mH?,Ϥr2^ v@b47c]Ǒ}mŞdȚYW:|'ַIƖMͨt@}Ɓl].4b,%!Zȝ>S7^JZhbYke)ś{k3F ~11>I:Z1SWXFJJBl&6*|yXF^/r5>(_zA>%>FS:$yRP[CaCVNH)؀v !vB(rƽ@zo U0+irQ DgQ[k<%;HҚ{Ut)|Gʀ p=k=?o[wxc)iciӽف|q"?0ڰk9Bx}ĞF \&dUp"0k \@icfʲ@Pw]FP 똽o;. X[Wx|dz봡B<,ip*"D -NIDs!_Y:8kK*EvEDGB&has]MK/Kz-T'VWg !1,Pd5REfnaU-l%aF5Q#zxZLP6QucAջM@N)\^7Ҟ(S!ko %7mxLEW.j$ c|B[=ڨH$7jF~.\=`j|mj|3R]LtbIJ8cL 8 ;/pyM!I@ˇˤQa㰍!1J)sE_T+ t;I ,,J+-Y{T|1C詍#5!j_asq%@%94PtqgLirSX]\ Bx%PG.^6Db:S OZrws*ֲ!]TC-+ePԧlB)Y-p7!sWR=w0g#NO'KsD;W# #zpnD'Ulh!_ "B`!W-6`[ )vX/mH.NPЙ^Hh;+U 㱀mw8M 4$.f登ZĔE EmeczL}{⹸r|U1%>.?oDu LT=*FTUFo7 P Pi?/F^1p[a} h gd"O9: DfȦ KykrFDQ]q}4l]TmT/A9IY( #&NV-YjCu=>ύFFdD4NnuG5Y=荜yb~_ɱ2nÌsBGq0e7UBUWФ$XzjO/#N=Wa#aJFoLwB# XKQ"dJ&gNR[wgNfy$:y1yF#iMP>bCf]GKZnPـ`kѝ>.ZΛ7 2yօY<aWܳdiF|C 4n!zѱ[y6%8&{Ӹ)seei=~Ԁ&SÞr?HfƠiLH 8 bxfw-Q|N qic>72ʴP1kpB̖:FW{)Zlz==]KϞ pޔ]e;dGP~r ˦>) W| %'"\yQLHYA{.BN]!XRu3swWoQVzQ5Zr>fbv8hɁ}\T;_)iY{s~CXiJoV1hz(ѴoDDK"ˈjI;-!}B-P,?Tʤ%Oa/m쌩K<!85́rʢ%M$Q9'6 7^ARE7X0j*] 3GƐ$=_Vر.l]qNۉLc0|ԱTbChYƓ8a3 ؍Kڹnv LTlFzaM=F`*S4ga YБRԕg^$#Gw& |¶)BBqIi="Ҵ9TY(V!<OHDrpQJ1%۰yC/HPc%nwѩ]ЀwjJC-Oc4hr2}{o% J?."^RD^p0"+lJ${j<ʫ3jn} G^0aq|rG&m5%yCWMH@AR%o)$kNЉ =pdJH/;<{7#!*ьGyE -0wԣ)}g`BipZ FSB[F[KTdO"C>6$i#9׼N:Mh]a^}0(o_d(#TԄ Ym{:C#n9|?%v6։/2hY؆R&A_/mZ8IKIs۶r߸IDˉQְ 㩯;k g$mLkۢ;tcSZH&B-Wh4%ZȦCK"#:7yVJ5orYM&$K5PDbSV33A x4HW頷ǧW^iUDvogz'Ħ i.nJr0݇ʢ.sGJ.FR2) Ƒ.0)(Z8T x?G9@VL`ӽk?[Uφl?8<ĝXh4t !]fJ/tE^sAyPo'qN$ćLk*FIjwVUȵt2niH.C=SƷ:"xD#"MOeSyŸg{4xΑ%n[ȰV HXz=nu>@]5.HRcbJYOA E[zeWut)+.H6'bmv2|K~5%x@|^-+̙l>Z7;AckC݆U(C>|1W>A[JvU}Ti/nS|mK7@Ry/h&~臬>٫q3OgyMذy<ᨉ&D5 w[f|[\>"glP2)Ȓ='"1jo$n  +z o ;؀v ,5u^rKB\~)A!tg{q՛JWKr== d7'ĐwnX]f}5ŝOufi$=Zy`SCj)$9U-3)9 㥶O^?"C(0}bmx瑃 6zw_OՀam|T`z)<7fHU{*>6|*Nf=.GD4wӔs#WJ' lXHOc uńi y\MJ3d!۔q:htjƫAY qS1$O ͐kh+tZ$)pʐ!?胧re=#Nػ'˒?2x_:2~ѨhCN|S8 C9kάoϥw>Hr#mL1Q{}tQ9DY:z']YP3܌\`@+Dc`KJ |m* ӊe/$?)sΉo݃a' heƦGO᎙"nnLoY-F{Ǩ(P!9ҪXU@aYS4B|)6dA e@"Y?$hY⭱(^ІE q4RC[Z`{^pk)if C؞/նNmԧ\7f]=@Å2Wfng1NC|(@uj?Á|1'#ؑo18eV۠ދlS_}f+rݝ1쳓6+aooRIzQ]B&It44B?' uW =@PiDkx|20uh7[}"n籮6Q[q\ѹAH6<ɢxhxK3⎰/Cp{ ' VX(=AhZk_}BTXaKl,TIӜa$o_Juubհ2i!M̏hhQ fd; -rFp"U9OdMa꫑> endobj 83 0 obj << /Length1 1642 /Length2 6742 /Length3 0 /Length 7586 /Filter /FlateDecode >> stream xڭteXTm6-!="! ) " HHtI "%RtHtHzs}}~}kkk\{q30P# j8Z@DPXusG!\R:0T n1qBe7 EUh4@@QQ!@r:8ܦF<||[~Fp@@[q1@;BPo`V3C& `P@ Q= !`P\(BB@0' 7( u n@8pkG)醸pn (4 EY TD΍'rEp De($ u S; w~AP[[߷w=yFw P4 $ Bv ~ϋ&vG 3s[ü`=}?SY?'@ywSoR`z@kn 5eo'yw6U'"VqAP6A{ M` no8BAJA6pٟ򅬴 LtMv"&^Hf2E}Mޖ" & %%xG.<ܾ}zU8=Bh |;u6AnnbYg!Opf qJHCWe|Qy&,2{PhO _*BZ]kq0iKQo5HȦ$m~a; qkW LvYFgvOڟc5@9&ja2l8_(7D^M%-f/ۺ-͓k\[ ^|rUouqTcԵ]>XՎB{ 3Ar wzS\N zY̼bI!Ӣ| RfQ!ewN}؏Xxix`0W{hʆ2,`M2tٶגR \>[N'  QXbaDk0Z Wo(Կ W[; Oqit5u~V WoN\`VSʪqX;׌ӱ̔yCۥ]+ ݻavqqZ|1\䓾89wICuq=Ѻjc3-Xk|ܱF*^g,Yw<#Ά6w cƑ2zgӏP>8z}|I>h}wyT=F-):[u RN8'Sfd*LsHy%; u`/yvPwȩJy; jj _h:c4-Zse}gzxg :QTOԯ&㓈mod|d?=ҧC1-d=7,kG{SF聍۳L{'whܑ}8+Q' k2Ѝ}P6MA?ǧИXφPy s2nTT4̈́1 ci.')c=RIO Z>{I>?lE5"L"4I>?YIw^I&X.6Qp[^-=>+~Wg؋.u{'TXMW*[^:s*li85ro]󹖽r[[TPa*2$%)֫E_X=xXn"1iESIؕ|@cٜqx/#|؁%F|k܇\JL̙ma5+yF4y-7f>~qSb5ɯ?nr?, $L80S KUu>ѠH4+2C/o0<0y]$&\W䩙'9:1ZD 5l%|\W.S (z < _WqPFXrOvY%<5),+x8=XOZƝ0 etg.GEQ`fd2]cb&2H8y"怲֠9PXkISϥA&U:𔨏1̋sNx)*;q,E%hjKΟy_'%w:z?'ӌ` btv-#L bQFj8(Wna4qYFNIB9MbTs8`c-(ʵM\ZGfBX<]pgyu%;*~<4۶A3\}侴~ OM#G3;3VU>XIc޴ջ1>>YfH_bO01}uV]pI|Ll"`ʴ`ww4jJAws^h'`2F<wW!o4}M4fҾӶ"V!RSY-E:O*ԃ2yDܿ:{:іSL8iP<%1( A4kO"-@{֕Ww%S1 F~X[#?N{sĄ8F+ !bZ)|"Y.!7p]Goel̪-";YlՃ<2S .d>ayUntz\=ܺ%Wt`` rasB""Kq#d/U2͞s? WwVČϾxQ<=-><3sbRȊ,Dc>=ѓWS)콿U/W '+"[ 0 FgWhgfxr `gX۳YBgAqhĿ1LlHʧgd)OlɍxtÞm<`YM~ib}yx8c妫*rosO6y5b4Exdl3 K%I|GգC0hɵҨnu١(?gm lC͸/t0f/P{­fN|Sa/2-Zñ7Bp8B(OX]aP<.΢µOߋ\>{?)d=HlgMF>Du_X I$ǺSrVkQثyljB|7wND3K4l+y* J꩹6ؿPPV_`T1\%ݔx~l -xΏ*'#P싉U-QjtZ>.zwW62vvQ0#CҚW[WbDaQjðn6+gFF!ÂM-Ƨ~E%u.2b'hD]1dI_KX$~#!VXw\%h%3^/ޓE.|d"Sq?ߌ} aɖgbΔƳuހX5|pBPϔ"qy`XԳt !>I3c'I7ctJ flZxJ^OCoG6W9}rx/%-V<|,+K)hUTX-RN,PuΪ.wTϬ#O<7q Sh΋fvإ;硴V\u@]Vso$U_^#z̍l6vmdZ)n'QEj7-i҈N 9MTT}Oi=D<7mXFHG5x4gL_N5ӥ/#0i2=lgV)PDuy;6' ѪZ_ K?ZJf<^&oUJF9:AP@Dϑc•Wgس|߲Xw ]b)B3OgQK[i+bYn`6C7pz].qVOrjf+~;*&<1fLTPЈM?ws^*J覅5j^膇.Fx%[6cgn=aX oKѯ@y!OâPY-9@;Ғ3dTˊC7Y e\VW0w:MlۡiØoKM;f@anx^%Y# "f7u\F)4/ 낍^ˆF{ 4!sKVx`y'~K }Džrȫ9E%UGv7#t"ز-Bu_)ۧ%.kf⌟)>-mF&;n ,Ѐ4Ո3wVȞiD6`|$Hc^{6gQ d &+9xL&!*a0ᓋcGgUmtm-n;WMgFOU=1rdg$hqph8%s w;vK.pO (BW'P:5GesO88Sf> +T:FDFn %|`?T] endstream endobj 84 0 obj << /Type /FontDescriptor /FontName /ZKPJTM+NimbusRomNo9L-MediItal /Flags 4 /FontBBox [-200 -324 996 964] /Ascent 688 /CapHeight 688 /Descent -209 /ItalicAngle -15 /StemV 120 /XHeight 462 /CharSet (/a/b/c/d/e/f/i/l/n/o/parenleft/parenright/t/u/v/y) /FontFile 83 0 R >> endobj 85 0 obj << /Length1 1630 /Length2 18229 /Length3 0 /Length 19066 /Filter /FlateDecode >> stream xڬctf]&bݩضm۶m۶YmUl۶sNu{&k&&S750qȘ[8;*ZزKQ+:ʙmm9F!cC hk`nj SVP%/?&t47}q16q hl p23[eeDd2Qcc}+!@ј`b`hkcdOi4G;cCnnvv掎S}=pZ9_skaWL 7ȿt2w'_5䯥?%KIdO,ce@p06w02vt Wz};;+y?s0wr42golSshfE@Oo\ foF6V#chZ[!dg,#OB-le%owc HY4V?}ks+V5w0q'm1K  ݿ"nFrNf}=\/j+ -m!*c^_?bP 8)T#mk`l,lj6oB L@otji8>$(GzѭH{Rq 6I:X)hu~åFy^/HmjЩN+|Nu0:@^?=Ǣu"6!$#Hrrsxh0{sau\jQFJTv~_r'zAOd3ާ[2t a(JVЩ\?_aYH\a19j\M#,bBR!\7ScCLWWfeK,W7ZW T6P}.G=m:5O"< M)w'Hf#@E*oZSLR>1V(ئu#>Gx.}NKfWw0sKb\^n~gsog20l]Cƴ xzJYa5j (0$O|v[֓TjeOa_bl*fkDkR`:G'@;T9F~ 9@3=eK/Fs`#Lݠ=y>p<5֚˧Y꼪W+&FG]7st(~uS> J( "}D݅|a*0lQS`{Cлܕ6rA4 -6rjNvS#z 5--MOZɢKl #J0r S_Z1^8>ѨU o}/!A(,pP".eHbPge,h{}s=l&udD_82nC5s%q*1gU0M_g4TT󀓋GPk&DG2݋I_j m/ JH19RF.@e8f.Uޫ `Õ,ȁh?K1ƅ{.7=XcT/?.NA+]Qpdǥ ϓO:pN)DlM8P;jQN$xבkRƀ?^kI8f~oga>L.3 I rlj vab,t%;^+6G!DG_"{n=S,Nu.ѫh;ys#k&0~ݵ}]lF:Eȹ)$R:mg\Zج.s9eZj l,S){G 0$J+La#K& o l`YX eꢽ; x"Rᝠȃ}׭Ύsy۽?("qVExW-\/5x*xum Hy'|9蠪}ĥCVʹ 3WA) =ZGn]*}!_W٬r%cW<"Qk?l~8 { X{aWMT[{@vޡ߃FևR$K8v I?NQXbB֓j (Ĩ[.1~ Fk^E:xZhZzLT&X+B^7cqo~|e&y<ܮQo(zчdJ$D#|0A':n1[ ~ aG55H#2 ;Ӝ)NDW]'y8l\T =vؠxP‘!A,'Ǟ1!qF J % "L tΣ3?J@(s>wx]\ydO֭ +eR>R>*O[C>Dc;/ NLh+(j=,[{[j{0 6/᱕}&@Ļ4cLl׭sqDk&,FaZ[ˈt8@/ٗͦq .1a6HПM3lg:'Õi-͋Ai"/=kwLI\lˊNxp&L1q ݞ ײvN&],bL*N%4Ar>SUƝKs{Ew!~A"싐K:9'!zm^2P .H0΁ƻ:rUx$lVe} @MUy‚h1 $ .j})Wq )8$h5 hԲeN*|m(eWi"p]Q1`kJDDlJ)s;摙 ˌK#0S3\lk2=UJB~6&7녵GFg}^9!j4WBa)>\nȃ}]kXɞP|h-pt8.%\PW&lXTބ~no.BZdGQx#7iԌ2CS8zbt/1jG}wvNT^{.zСL% $ta`V1ZN]$7z \IKl<Z^Q2y!-TPۀ~'3/Q%Ou@qnG5djOQ ooHS/>c/(>0z;$9Y\n D>= cc^\cxj^z'vBrRtTrT~PX:-o {iqNEGBl 3[[xA?Z{Jdy"N଄> 04O2jpT+"V/c#BD]ցֺ;6zq46tp/uDn'sL|WoYXB a>6PtR`kI\L S/뭌]\,l^m+Z3N[ClS7^QRkvL~ POBe:. 49QY5ݢHNBU O5^+&-rš FTUDEAɇ2z.RaԑreƎl8uZ3<NF_p- S$ <_|mx=KjO$Kk2飽'x/7r~;A)/:2>dzFc[|xAQYT1-BZi'8F1L=#6&d9teމGN{5 ܧ <罸IFJޓHA46Kez,Lmx_ۗna{mxiԴ/jZ\/ӭ@NG/;vcph2 Tm;z?IJq8r}9qnj_VI{@Z0<H-$R2t+ttR9nH lBMf=%$usZK\U\\[BܫV+y41)[Veo-vʱJDKVv*M7th=Etĺ,aZ 36OvKE+CY4ɻ#ȍ8 ' 2g\ړ\G~kJ.#[m}Ahϰ &5zk=bGRY7-/p"Yafz?Q>umY jWQ)(|[XηnSN(樅s|'&f(`FF(Ppqbm*2&k {Ѧm>)׆N Xn&An:p +@}3-^(LSZŠ3(Sg7Ј"cnc49\|c+xFZ8v8#4v΍Q 23@ LۡZtBxD.9}Bf@LjX a\E{);VkްQr<F3WAG$lYӵ[9S36g Jʞu`񝚖ʻܟN0I0K2p\WUe2Ӗ0)eE?yp ?Z.0R"Rռ;+#XnO#e q"$9!$*,AQ_~m 8Z ~8iz-ZNc52" _i;/.N>mDT8S|3~w;Ƥ5搴`NO3Ue;?X{zCà廘b o[*;wŒQ׭T*Ǡ\*پ Ǧ|MTm44hp9NZ _JHb秊.ݮ~nxtk@/3IOf-: 6(~hVtf]sAar-mD=o HzugZB، %ti2MlͬVLִf׎ s`T;o.H:mW'HVgk߹xXDKJh׵Ƃv\<j` ހ&Bs DM( -d]u{ŸLuCM"MW h|8cj DԽz6C3gׁ, }BͿxX`)ݦ*Ҙb-!Fɑ*^3(N"BK(h:S2JM8'TN[ pN@b]b>W6eoHkp_2(l7 ]l>[Ws#+[n{ |}"‪vr퀬I%q'cg_W(}A2I uVM} g[,YăB ^񌵇_cb x΋=CwEou__.xN1^|iz`Urm;J)laՎר&,pkcB%LqHAn*.]=][FW+?_fj!$ L:װi\j3knq8KRGìjxYsLARVㅇp;U@mNKI\V`rwf\ò.20%;Ж«@2߳Dt{*Dn7NeXTZ#>[?xiB7wtStT.9)jA3o8! |dԎ% :9lJm WxM 'ɮl߹̵|\&YN0y1~0/DӱI"pDcX_DMaԽ{<ݵ&kZjάQ<\H|1VbtQb(Yfjgg^"YiںKa*2i[ԭ1IDl[XQ#e?E|\*tK)r׉Mq't@l.iPśT^١ƽ[[yKXq;S EXWjvQ !QJfl]~̔HĈcL7 Wƾ;}ˆ Bp.B#]T`td(I>Bo|J Gm0 YRmiv8>CɗfCoMN];j>C6cqs-7wDsv)=rh_s?diz3ϧEʟ7Jʸj!.F=+;+?tU 9o$:Ltyv/Ӷ E.;/rh:D ` 6I`<12՟>).?$m13~ȔƩ,Kȧ7hL^hz_5q;)-6}uJLs"tKL-BvS#Hˋ+*$qwIXCӝg!/lƖgqG^fs2ְCn͢TdQ` I|XS%&τPqȶ>@\)|ί}5Q~3peԁ!ȿ~Wʻ?UF7- 5j%w\ :>c,_i]CQНp1b |sOELIme~󻨽| Rdzӳ)Pp5dO(n_|O`/*`ڸPvE,na]3 .TO#~8Llּ/f ':d%qf1 E`+v_T#2CV3\DĂҎ T_ ?<`U֩T㐊~]s)֕K:iZJNxkZ/$ٺq$fn.@/& إ]ESZKiH JM^ $0[fe"s:_ "PSI"R^5oUo݋$ͺQx".\>ur|5$fA?<t$L!fMM+P (8nnO6ΈO>1~s3; YJ~uWc2$*/&T#Z6;t_Mualb²tRZ6' P~򅞔K7.<]D2T bE-&VQ6`*{@7vvjI^繱u翈'n[nftQ7n>BT m.TYNLߩQ!H^ hD=B##aRrC>$.C '|';ЧgEO}ꕧq+tX±*3hB9b Q2ML8K8E*W:b*BmRE 6^ 9HɬE6h+<2U"Q>+_` F *T|9nkW;R@.Xs`Pˑv;zw~B(\}fZE(]>LQ7Q6'lt,W,KTWyz6O_2WlW@߱nh%brWm='~*ǑdDǽe^=/=O"$s^9[2vzHy;7Y 8`?_'4(ְ?W=h4l"G7/eO/\{lH[()q+鏰O>$7@X>\9`%ƶېgeZLkKsn&bfc?"ev JH6;` .fAGZ)= obǞM:m0ہ|`?#0c3vU;u0H/[`ޭy?Swju{|BNZ\PkHR5;]*' b4[ I7&Qn' +mٝKlS%fUeS,9M0s#![kQǒ鏺۵$ʮ;:<;Xc!\uVt8L:ՔbY{IÿXn)_K3"gz0w 47S <@Fv!(t` /$qM&FIzCnl[W7z,d+KHxL1=L*x'Y{[EoG'~qZy=Q>(YbVP- BTBBܓ7!(m3cmK`֞8Lc+l.c)F˝韃^qN^+2dy9&3 @.O+ßndgGKQZabRC7THF K. #ۜTFriQ ڈҥgΆPSF娅OMe$ !RSg:$ 8 W| MWrդɩO{z|@ FD+%(;qY;'UY=p 1t9,"*>}e,ՕߪBw~D|Q++ B1F+.͢w齢C`gn$۔qVu2yv݃[>wNJ}D,2pf1%lkNQ H/x ET#nf=-OL|~q#xJ3i$˔Dd. =-7jMj{aqrBV[/nn y^3q::Yva@#b$y] v ٖkk ff˳lu:wʦg\ m:'h6j6PEMJ,It߄6}Ex,c 2Ֆگ@] )EKy~ZDuKH6Ȧ`cilYt׮jH%õ-7iV6o[:IhuL9 m^hsSi䚪%E955<q#Gxy:7Κ8 ~M;3{B):؎mKQP&Ҿ:RN זEʲ~*dviW=y)A. w}&D+]b'/Q=۟S 6h3'zQUjssv[:'b- Ai/fU7p?_'YbzUA}4#Cl\`rJ[ 0蘰?Θ<v |XQӢ _,`iBw7axIƒ{<8S/LQ e6o4ǧ~f팕Z?jb~8o)L+b@YAGr KӸȒtK"ȅ>ٔ0>{yw/g,٠.ɅEFL| $?p%QYor qɓrRd&gPY{:H7|3k59g5^燄 t|n3X<\xL7E \ ɣI^bb;u%7Kߊ3AOG`%>Xp[K)\Lj;aTA<@u-dY2o]=#Ș =F1pF83z-+֓mA9MJzkP?ff>'kN}7Jg:OAI}mJʋmCBv m",wޢƍC>.rϘ/ W #yKc2a^/"doKvSY7.(,$2ٮ!r!Ec\s^Bu e4/`grOʘ3z ˪Z^\߸@:wKY.5΄L#4#1P&nE,: F26NbȒ $ߑ_~ VyPZ!s #uFs mDiS ga\bPQ껀c QT)ԷqK+CHUBZG1VhU؟y+ Y^ S͡X񲀜j+VSQ|m2Iv2Ԓ9I? Kb{hP#l9 AryiPa2DzƸ[, K{8ZETz]LOj&оd=00#n|hhPla #\%gK%>XDTgF?6 )pj'oxdų*19aiƏ"u4E}= "xR)D[Ù V1=}:KIAx}!FSElj}4ֹÃ蓇D¤Q+eb1V=4 dbr8q%x%?~,56zLbܽviyٜ;H~{לcE[eǹNz/pu'̰T=VxkuUhg)0sZMB= TmUZgh ȬWB+E|b҄CX_YȀoqNKzT珌m[%ȳ,mW`1΍jbUH{Ci=[Nt;tz9ofl`潚}03#ik>3s4_<.FTU~ 6y3u]^(-[%l~_L3q>k0-( RU珮7l$Kg_#i'˻{vCA]U}}MCT}+&c#h @'색&Yij*v_& uCE\rO _7DGcpb&ad)θF%}(8ЇFB5@X`*qtu El"G_|羢tuMB-p!2Kg\3?`'K@:*"kn`L2ig :Me#caօ0^3J'I0)G:S\]Sd7y{s28w1R?O爞j{ܠypg(IsގG (vٍX{LωjAMR9~&;gL97vnC;!~¸=|K]?56Xg IFv"҈'NV.6p_T2d pi3:)XxpZ " ^'|L?W@ޓW !{ ^4jqU<kDv e4FFgo eL6 blzus= 9 xAOm.O& ]Vm F#/RZ.,- [~x 0~f;VJ}|{FQ7GJ͡f'hb"Ӳ~#C onrZɜa&oD 4ϡ܂BpfjΗ%î(:mǧNa 7G4bÒ!@1ؾ@V:_,{D AŴ 6q¨Std)`w{lW[ ]C._3,o S'"z#kR}ކ&& Z ru$߃[,_ʍnb~c<{!⛉X~LC}M=j02I bcM2 RXE=\"=EFDzSvw~!T@B6J˷19JtJ j]vB-hZFn(G~IOxuUc+@A}!k2^i :2٘uF9~ƀNTr !SȔYSKF yѫ#1}WsN^C*tyHt(_>cl Um?GPW(Kw]eOA3s?st<:?AAhMJ8NgŶ 8E%#WZ͋PacB:҅*K[>hYM7~zZ1Tj(ىxYuV* 7UCM֐9:~ȄĞfgrJdF6 >Xjb}f%N]|}:HDuUnc~\{#ָ hsI0T`Ϳ@:D P$&P#@Ta܆W4_[*W]Pd6_#!bQ Wb䩠pD.UXsN3=:4)= &M#Rf{?fVW]Oe) !3ΜF8"mA8pz0SihC<.?T(بa->B:"} er%u6yQ}M璽o WKv#fL}7OqnȩZWH.8 n𺥮,?bY*1WVQwWK/ ([Ćw2#Qa+ X۵/| -c}wmd=Z/e6=I=VBbMdcY/p/~ÒcQjM5=Q۷\L2JCwi;Ezbtk _@X}dzxzsmt藝@9!ˀ|$ d~4by;[ .G <'B-2Fz'v glt[?]?O{΀KB˹tI1_܋:['I`_鳬Oga^ATGgz2MI#H}1alvʏ AfR)K㚔W02 N %C~T15s u_0al((X"T5F:ihw0mayJO!V)ZDLл@<\)]1ŴFP z(N<k#tpCE:4@/6l`m}wuI0o~+X9ܝ2C~͒Fqڠ?t5 i >ԥ𰴄>];([;ٌ 9:l: gsvm@}ӄZebQZyuY83Zgcde?˩#iFaޔ VhR4)4=$D]>EOf.445JAq~ ߞZ;2m%!-xLtd Vfc QyS ZoFÌb@,W}P&l"t>^#c. ife'ӛijI`f&GV10HaMz_̅VSRf 3[XR% ݊&B1u(tch^ 3CAKK#v%ՉkjB M$P&_8Ftmr,i6x@+uxb\?9%zlΪ~lUzxwS2YvM֤U,{{E3ff4wDAVYjM#'ݥiEwNΔ*z32ZKͬ闯nHle@9&i=kH?/5u|Gk2\ePmAZ2i\51ȍUcsv ëzF}NX0J%+}|ъ5KE_3n7zB]Uz0YrKcn0@LgwQ:@L%tQPEƞЅM6-w1PZv/QO2(>$r'u}otmP! ~6#FV߈pJs+i_$u7 ltMҚ2Q$rJӹUIX `.yŽyk\nsoX~w]=afbEUp# %T(`@NNWmaV ]߻'яv6ʙ d)`F6y.9`}d6zm-p 2tZT@ ] dI}񤂌VkGjV4s>" |9Ǎ\ԩ0r"> endobj 87 0 obj << /Length1 1647 /Length2 10921 /Length3 0 /Length 11775 /Filter /FlateDecode >> stream xڭweTܒ-,@;4 44] ܃Kp ݹsgϼѽ>KvZi)յX%L vάl A2&E |xPii!VvA{Pb r=,, :Ye ȫ-+jgou~;jA @gK J)Tur[k.&P+S) 4sBqٚYU+d1zuBXG+'@+'kVPx WLU]Zy:[;ڙ43uWW qw+ hfd5xJfhw.NVʀ0v4B^i^ο{}?srv@P98_c:ƶEek^l\Bn_3-h1GeWs~ d'+'k_{wjY(Tugk ±2\m~G?BHZ*;Lhn }mv[3#*}u Ӷ2d< f^ënW. lۿ/N=ޫؙ/*II;w+_'#D:;;ZAl  F9r65{48:*6x1E]3 NLw&/.K _(TV?.1s`gKi{ Jߙ9#fZkcd7,FO?|u:^4,zzC6|zOKsckZzpHw{C;4yؽEœB+dL2U3+ N[4;ϩ{NˠNu +K)j`iSwl5ui`GD7NFu| ,;WƑq{c]n&!E%L4I=?bļ/sΣy?;c(j mey h!saAi=rn%5+EjAEe O|㚸8y8S> M&R KyT$e 3?~ָGxsVY~Hy-]艍@껨IYA\Дv(7R3&Tx tߏ-hpTa q WQf Tv`( _v5].]YNu:ή*s@BN_װU&|?<Ӱ'~M]5n3 ]مse?&KqW.@ 74Mw\tAkIO7*RQe|VeN?YѷKsGmSQ_-NрGBЙ?-}-X@ YMkաP q֬RgYL358ђ$ߓ+m#fYeTC()V"4 jkH?a^ɍfI .18u8K-pmjH7qA|eX57emm"6(rK|B/IQ@p~bݽ9Z~Uc*r`|5wR$!\/ 5u|\ ܅F)MgK,Z|R5:|濿5NDx*zYOYj$K84ɺ1,|ڽL-"kʶ+ (iXΕL ڃXoύd#9Mn9ՁL =tW]^[o\zWbO*u_BoP -fWewTC8xpI'U^ ZOe.7)g5Y…G Q{):JeM=&C8jn& ٘k"Zpy0a,LfP*qV;O*0{*.aʰ~=-NXa.ik/-%Gܾp*_Rz֡}*nz3^~#㳇>p7JfE"dLw"/nn`k>*z|UY\r u(A~,R*,Ҩ9 䔯1}:9ZGl.('~qUc7by(]+eDSѓgJEX [SᗥQ^\ۯX\y HlywԎ[7WdGE T&b}n uWVnSOa|ׄ@GxSoBIYGآԥиP*jt[˂o֖nW-{wk{(T^s ppW('r/1;ZS@ǨBIXX_'Ö#)5)-LCP;a5i#FǬR?""_FT?Vm#p}$J#:ߢ~.=oCIasԶR#k] bSg_]7|y?jV9(sg(X Lc!h$a MpJ}S#"*Nj.|T-R9W5tɧ0..s#?+gCi~Sٳ0BFʺ~VC\N&٬hSV?j0T&9NпD`}7(k*>)G1D3EЏL `LLDm[yNT᭽e1k$X2<جW!IjTX|H&dn+EHSRI}{-\^E`~gڍ۪ )[:W\{Gm呼^+߼D{F3aܲ2W]H2؂r7}<!go76s/qCkj[h!MiWn&B~}_06rh[}S`ЇKvb }&PC>aZ eGaNizv0F:0d I 3j3ظ,@}jTN>ٲo@|h_v=IʁG˼#윤,6ɵs@V;` #‹[v~8=dbFLvQSIP9PQ6>׸ b'̅k $ =QvY |>??wI~v#_7OlaD; ٮ兏:؋R367XH#}(Y,?&=A$9AQo[aD\@L6_Kw `7 |tQDy9'0}Bm=dgYMLqd3N'Ok]6HDE:ÿ" 71f%5r3n wh/۳/ZI$N٩[KCQ nb:/ֻ΃bZ`%2:y+uBD߿;qt: 5Q,o0TvOv1 uI ) c5ҳM;eRVCƢ bhf 2uT0`Z%XLf FslBuxssJo%KaO$ BqdÜi̕\Ս3d̄$+]/#(wk^Qa#2O6CPRS Y J SZyG [~O.E an As+?sL&O?gJߟfR[0KBiAd< *8KheRyg`*[sZhIfj/Ծ#'_ԞqS~/L"k#LEE'kNHY/)Xש jH!5Шߞh~>lUi9[ 0eq."O)*XWLysyT<\|StG aC$ m~5@yΟ=d9e(e"́.ΰlAJ:\L!W{:-.9(H#g4y2Ӗ3K\2@2!<2SG7AB\ oQO+uǙʝS|>SIfṄ+^Riz~鄧8&j 2|0b`BIgU ?M%V xSq}"ț.6Q&ɽŒMݨ , lY O>cW$3 b79M%*" /On ,"QiDiux4ZőRJ+5K嚜j ~¨=SrmHC kwZPi>\sG^pcs{3HI?ypDJJFyǖQNPnrdx0 X>l) :"^jM7bfu/OZĻÒ0a2.Ua֟ < g%nXR`XKPzaKOa*c3mXxyo/ U#ܤ;oQ!a!tt P|>*W GFQUc"slPz[pԻPFbŷ'(C\k5s!g%ߝ{[~Zzwkmpv荹^^_eH[&yTydՈ؈<4ƄDܳ /2!~#W'3?ڜ 0buQ"#, *oӹ6QrX2`"ߢ8]Z` D\2'$1ȑRl5"M@/40Ɂ<$z\)t L1dCōrމ\z*~ݘj6ɜh'B`rSTS7sa͠wYɌbϿїF,GkD1\@s#aZhݧˈrpo|,HcםDt-}c%l 4v:zU .<-B;I5Yͺ } SG8 ؜ 98;L$``/ dɶFUwRҡ= ǡ2tڰ)z5OȼQJoY2PU M8P` $ @ۻgKm\g2Qv*MlOUH";os*%?rGVkgE)w]h:o dtC-vn'!\I1`9+M궛:u {)S<`F&?\!}bѼ^6&XKȂMjwǩstȪWg`ȹp,?qzS^zgKbqQjI&qi- gTC|?x)10_6^FkLK(Mė[VxۃOlIQaaSC=Gqa&G|ɩerBRt6-˭ؒRP{%6yGu|ao\饌rp G`sݢی;*GxYf떧KTsι0'ʃʊ^g铮QM^} .ىmwe5.Y4ʓcDL7"mIcўk)j*[$[6Մ% / :r= I4RF:?!HH}j߆OYyz6v /* H_N⮰q2EH2qf'Q>@80,f Z煌u?1FJO^vTHcűoc7P<+2&(4l2Q5_Cp){ڵEq4bAd}VjG!y=!knJd!'8@iyLM[%I7$*a 6VQ^SV,$qj 6ķ36x;av 8+jcmsY3сg|h"Sxrq4#}P BlI p !"G rUkU94CaT4V%:'WGn%S"+"Hr[6sNVzL16ޑl!  G漾Mg-'s^S6?%sscjgerHeVu<6b+'Bb?kHO˳aE~v:hWL]AZI͜fCߙC8 ?h*%$Zs32 #4%u{Ƅ&1N"asߗd#\<^{zsNf椲"ğ>晴UH}B CH \|NL?fb MfzcTPMAyS ON$ǁCohN5nrʻB;(cJ4F$pWDq?5ŴЮ;@ [6MHؖ`{2Qo(,lH:/F` 5{PWD[Y7-#u/[Q5ta"fTE"Ţ5le/;"¨E3ɵX/FFma%cViJbLYS: 04/9XΑx[^3·d(4•W1f\2R.cGL*7XcևO]0/#[讳?I3?fūd8hb()E~F5z?DMrj`O6;0a89QqY[p{.r7C3Y#Q[%=aҜzJ8#1Qgl7[u1|njkQxZwǠ|y*:#_oRT1Qj @2 KlmOa)}_9,{RGt_ >v𧯪ΝՉFg{BR'q_?zWPbFlx*s:MBDS0B cw`7s1#sJ>kdžyE:E{g2SK&_U!r,[ NfcQtwJcYcØp̒R)4oHmh'ɑRO* The Extratools manual
The Extratools manual

The Extratools manual

Ian W. Davis, Vincent B. Chen, and Daniel A. Keedy

Chapter 1
The Tools

This manual describes the KiNG tools available in the 'extratools' and 'rdcvis' packages. It is roughly laid out in order of the tools menu in KiNG, with tools in the main menu in this chapter, and a separate chapter for the 'Data analysis', 'Kin editing', 'Structural biology', 'Export' (File menu), and 'Specialty' tools. Also see the KiNG manual for descriptions of other tools.

1.1  90 Degree Rotations: Seeing precisely

The 90 Degree Rotations plugin provides a simple way to turn your model by 90 degrees around any of the three Cartesian axes. It also provides a shortcut back to the standard kinemage orientation: looking straight down the Z axis from the positive end toward the negative one, with positive X to the right and positive Y at the top of the screen.
This plugin is particularly useful in combination with a trick for setting up simultaneous orthogonal views of a kinemage. Read about it in the section on stereo graphics in the KiNG manual.

Chapter 2
Data analysis

2.1  Data Plotter Tool

The Data plotter tool is for importing high-dimensional (3) data into KiNG, for use with parallel coordinates.

2.1.1  Input files

This tool takes as input delimited, numerical files. The tool will use the first line of the file to determine the number of dimensions to use in the kinemage, as well as the names for each dimension. Also, it will use the first column as the point ID of each point. This allows users to enter identifying information about each row in the first column which will then be used in the kinemage for each point.

2.1.2  Basic usage

When this tool is started, it asks for an input file. Once a file is selected, it asks for the type of delimiter that is used in the file. It will then use the selected delimiter to parse the file. It then pops up a GUI with a number of different options. The different ".. axis" selection lists allow users to pick the initial three dimensions to plot. The bins selection list and the "# of Bins" entry field allows users to divide up the data into different bins (using the selected dimension), which will show up as separate groups in the kinemage. Once the desired axes and/or bins have been chosen, the Plot! button will plot the data into a kinemage. Once plotted, users can use the built-in "Choose viewing axes" and "Parallel coordinates" (under the Views menu) to manipulate the data.

2.2  High-dimensional Sliders

The High-dimensional sliders plugin is for manipulating high-dimensional kinemages. When started, it determines the number of dimensions in the kinemage, and creates a GUI containing a pair of low-high sliders for each dimension. Each slider is named with the corresponding dimension name, if present in the kinemage. Sliding the different sliders will turn off any points with that particular coordinate outside of the range encompased by the two sliders.

Chapter 3
Kin editing

Several new tools have been created that allow kinemages to be more easily edited without having to go back to the original PDB and creating a new kinemage.

3.1  Co-centering Tool

The Co-centeringTool is primarily for use with NMR-derived ensembles of models; it will translate all groups in kinemage onto a single selected point.

3.1.1  Basic Usage

Just middle-click or ctrl-click on an atom in a kinemage to cocenter all the groups of that kinemage onto that point. Click on the "Reset Coordinates" button to reset all atoms to their original coordinates.

3.1.2  Scanning through a structure

This tool includes the ability to scan through a structure one residue at a time, cocentering as it goes. Choose an atom to use as the centering point from the pull-down box, and then hit the left or right arrow buttons on the GUI to cocenter and recenter on the previous or next residue. Select the "Slide to next point" box to smoothly slide to the next or previous point. This can also be activated using the keyboard shortcut shift-j or j (for jump). As with many tools, this functionality is sensitive to the point IDs of the kinemage.

3.1.3  Cocentering on parens

The basic usage of cocenter only works on structures with identical sequences. For cocentering non-identical structures, we have created a cocenter on parens mode, which uses a new feature of pointIDs. To use this, enter a "(#)" [where the # is an integer] at the beginning of the point ID of the atoms you want to cocenter. With this option selected, the arrow buttons or j shortcut keys will jump through the (#) points by order of the integer. This also allows users to set up various cocentered views, and quickly jump through them, without having to manually find them, or stepping through the whole sequence.

3.1.4  Warnings

This functionality is based on the point ID of the points in the different groups. The tool uses the first 14 characters of the point ID clicked on to search the other groups. If a group does not have a point with the same first 14 characters in the point ID, the group will not get moved. When using the parens points, only groups with a point with the appropriate paren integer will be moved. It's important to note also that this tool only does translation; it does not do any rotations at all. Superpositions of the different models may be necessary before using this tool.

3.2  Paren Tool

The Paren tool provides a convenient way of adding parens (for use with co-centering) to point IDs.
When started, it automatically detects all paren points already defined in the kinemage. Each group of paren points is listed in the list box. Selecting the group from the list will label all the points in that group. To add or remove points to the group, select the group from the list and pick points without numbers to add them, or with number to remove them. You can also add new groups, or delete whole groups.

3.3  Dock 3-on-3: Geometric construction

The three-point docking tool is useful for constructing geometric shapes and figures out of existing pieces in kinemage format. As you start picking points with the mouse, they will be labeled with numbers: first three points in the reference frame, then three in the mobile frame. When you're ready to apply the docking transformation, turn off groups that should remain in place and leave visible those that should move. Then press the Dock button. The first points will be superimposed exactly, the 1-2 axes will be aligned (so that the mobile "points in the direction of" the reference) and the final points are used to determine rotational position (dihedral angle) about the 1-2 axis.
If you'd like to dock several of the same object with respect to each other, remember you can use the copy and paste commands in the hierarchy editor to create duplicate objects.

3.4  Least-Squares Docking: Getting the best fit

The least-squares docking tool is useful for matching up two objects that are similar but not quite the same. As you start picking points with the mouse, they will be labeled with numbers, defining the Reference frame. Once you've selected something to dock onto, you should choose the Mobile frame and add an equal number of points to it. The order matters: 1 will match with 1, 2 with 2, and so on. When you're ready to apply the docking transformation, turn off groups that should remain in place and leave visible those that should move. Then press the Dock button. The matched points will be positioned so as to minimize the sum of the squares of their separation (thus the phrase "least squares").
If you'd like to dock several of the same object with respect to each other, remember you can use the copy and paste commands in the hierarchy editor to create duplicate objects.

3.5  Dock By Picking

The dock by picking tool builds upon the least-squares docking tool, making use of structure connectivity to make the tool easier to use. In this version, you do not have to click on every point that you want to use to dock. Instead, you can click on two points, and almost every point in between will be automatically added to the selected box (reference or mobile). It leaves out points that are off, or are only one atom away (e.g. it ignores hydrogens and carbonyls). This tool requires the same number of points to be selected in the reference and mobile fields. The dock button will move the mobile, and every point connected to the mobile section. There is no need to turn off or on parts of the structure to get them to move.
N.B. Since this tool uses connectivity to determine the points, and the mobile section, it is easy to confuse. For example, it is inconsistent when considering sidechains, or especially rings in structures.

3.6  Extract Loop Tool

This tool is for removing unwanted residues from macromolecular structures.

3.6.1  Basic Usage

Enter the residue number range into the two text boxes and hit the Keep! button. Every residue number in between the range, including the two numbers, will be kept. Multiple ranges can be entered; the ranges that have been entered are shown in the list box. The Remove last button can be used to remove the last range entered. Once the proper ranges have been entered, the Delete rest! button can be used to delete every point without a desired residue number.

3.6.2  Advanced Usage

The LoopTool can read in a comma delimited file and use information in the file to delete residues from a structure. This allows a user to save ranges in a file, and not have to manually input the ranges. The format for the files is as follows: pdbname, lowresnum, highresnum, looplength, looplength, B-Factor (e.g. 1ubq,1,5,4,4,1.0). The two looplength fields are included for legacy reasons, but it is not important to have the correct value in those fields, just a number. B-Factor is used for the order of editing more than one structure (more on this later) but similarly to looplength, the number in this field is not critical. To use this feature, use the Open CSV file button to read in the CSV file. Then, just hit Delete from file to remove residues that aren't in your included ranges.
The LoopTool can also delete residues from multiple structures. In order to use this feature, you need to have a CSV formatted in the same way as described for a single structure, but each line contains a different range. You also need to have a directory containing kinemages of all the different structures, and also a folder called "loops" in that directory. Then, open your CSV file as before, and use the Do ALL from file button to specify the directory of kinemages. The program will open every kinemage as needed, delete unwanted residues, and save the new kin in the loops directory.

3.6.3  Warnings

The LoopTool makes heavy use of the information in the point IDs of the kinemages. If there are mistakes or unexpected information in the point IDs, then this tool will probably function incorrectly. Use kinemages generated from Prekin, Molprobity, or Molikin to ensure the highest rate of success.

3.7  Kinemage Fudging

The KinFudger tool now allows distance and angles between points to be easily adjusted. This is especially useful in modifying bond distances, angles, and dihedrals in macromolecular structures.
The control panel is simple, consisting of options for the parameter you wish to adjust, whether you want to move only one point (and all attached single points-I use this to move an atom and its attached hydrogens), and a button to export your kin to PDB.

3.7.1  Adjusting bond distances, angles, and dihedrals

In order to adjust a parameter, select the parameter you wish to adjust and click on the kinemage points you want to adjust, in order as if you were doing measures. By default, the tool will move the last point you clicked on, plus all the points connected to that point excluding the points "behind" the points you clicked. So for example, if you had a A-B-C-D connection, and you were adjusting the distance between B and C, and you clicked on B first, then C, then the program would move C and D. Likewise, if you clicked on C first, and then B, the program would move A and B. Naturally, the connectivity finding algorithm I use gets confused if you are adjusting with a cyclic structure, so be careful in that situation.
An interesting use I discovered about this tool is that you can use the distance adjusting to do a one-point docking of structures to close gaps.

3.7.2  Moving objects

Under the "Advanced options", users can turn on a mode that lets users use the mouse to move objects within a kinemage. Right-click and drag translates the clicked on point, as well as anything connected to it. Left-click and drag rotates everything connected to the selected point around that point.

3.7.3  Exporting to PDB

The KinFudger also includes an export to PDB functionality. As long as your kinemage PointIDs are formatted in a standard fashion (i.e. from Molikin, MolProbity, or Prekin), the tool will export all active points to a PDB file. So turn off anything you don't want in your PDB. Also, if it encounters an non-standard atom name, it will output "UNK" in the atom field of the PDB. Currently, it only exports protein atoms.

3.8  Recoloring

KiNG now has the ability to easily recolor kinemages. This tool was designed to specifically recolor protein structure kinemages; however, it can probably be used to recolor other kinds of kinemages as well. It allows specific regions of a structure to be recolored. For example, a specific amino acid, a particular alpha helix, or a whole subunit can be highlighted. This tool can also create a table of the amino acids in a structure.
The control panel for this tool has a number of options. The top line contains the color options, the second line contains the area of effect options, and the third line contains info boxes about what you are coloring and some extra control options. Most of the coloring is activated by clicking on the structure. It is important to note that this tool only recolors lists and subgroups, so depending on your kinemage, it is possible to color the sidechains separately from the backbone. Also, this tool only colors by point color.
Usage tip: There seems to be some issues with serine sidechains not being able to be colored. To work around this, try turning on the "Pick Objects" option in the Tools menu, and click directly on a bond in the sidechain.

3.9  Artificial skylighting

This plugin gives additional visual depth cues to CPK space-filling models by doing some fancy lighting calculations for kinemage spheres. It works for balls, too, but looks weird because of the highlights. To use it, just make a CPK kinemage with spheres, and run the tool. Essentially, it darkens the colors of balls closer to the 'inside' of the molecules. It will take a while on large files.
Note that it does obliterate existing point colors, and until we have a mechanism for writing out per-point unique (non-palette) colors, the effect can't be saved. It can, however, be recalculated once some atoms (eg H) are turned off. This plugin

3.10  "Lathe" tool: Just for fun

This is a fun helper that shows what a wide variety of shapes and forms can be constructed from a clever combination of kinemage primitives.
The lathe tool takes a single polyline and sweeps it out around an axis to create a polygonal object. One strip of 64 triangles is created for every line segment. This tool is ideal for creating anything with an axis of symmetry: bottles, vases, lamps, simple cylinders, and so on. The standard axis of rotation is the Y-axis, with rotation centered at the origin, so keep this in mind when drawing a half-profile to use with this tool.

3.11  Making Movies

This is a simple plugin to help users make movies. It allows users to configure various scenes and motions (rock, spin, fly), and exports a series of image files which can be combined (such as by Quicktime Pro) to make a movie. Buttons are included to conveniently resize the KiNG window.
This tool keeps track of objects which are turned on, so different things can be turned on or off during the movie. To do this, make sure the kinemage is set to the desired options and view before hitting the button corresponding to the action you want to do. So, for instance, to fly to a new scene, go to the new view and hit + Fly to have the movie show that action. To insert additional actions, click in the list of current actions before where you want the new action to go.
In practice, I (Vincent) find that it is best to add a short shapshot in between any movement actions in movies. Play with different settings to discover what you prefer.

3.12  Editing Multiple Lists

Authored by Daniel Keedy (daniel.keedy AT duke.edu)
Sometimes it's useful to emphasize or de-emphasize certain elements of a kinemage, e.g. to achieve the proper visual impact for a figure to be published. The Multi-list editor tool can help, by letting you simultaneously edit multiple kinemage lists.
First, use the checkboxes at the top of the control panel to determine what subset of lists will be affected. A list is considered to contain Probe contacts if it has a master tag (dots, vdw contact, small overlap, bad overlap, or H-bonds) generated by the all-atom contact evaluation program Probe. Note that if the "only visible" checkbox at the bottom is unchecked, all selected lists will be adjusted, not just the visible ones (i.e. those turned on in the kinemage hierarchy). Just don't bother changing all human history...
Next, repeatedly click the desired buttons to incrementally adjust the selected lists. For example, "BIGGER" and "smaller" change the width/radius of all points in the selected lists, and "opaquer" and "transparenter" make the lists more opaque (higher alpha value) or more transparent (lower alpha value).

3.13  Select by color

This plugin works with the 'select' kinemage group keyword to manipulate groups of data points.
To use it, make sure the kinemage group to be manipulated has the 'select' keyword set (either via the text, or the hierachy window). Then, select different combinations of 'if' and 'if not' and a color, to work with either one color or all other colors, respectively. Buttons allow points matching the selection to be turned off or on, or extracted into its own list.
This was originally created to work with large datasets, such as the 7 dimensional RNA backbone dihedral angle data, which is displayed using ball points. However, the tool does work with other kinds of points, as long as the 'select' keyword is set for the group.

Chapter 4
Exporting kinemages in other formats

Several facilities are provided that can help get data out of kinemage format and into other forms, either for making figures for publication or for further processing. Due to security restrictions placed on applets, the export features are unavailable when KiNG is running in a web browser.

4.1  Exporting for POV-Ray

KiNG can produce output script files to be fed into the high-quality free raytracing program POV-Ray (www.povray.org). POV-Ray can generate all kinds of "photo-realistic" effects including different materials and lighting schemes, simulated depth of field, etc. It is also very useful for producing digital movies that may be more convenient to use during talks and presentations. (We recommend the inexpensive QuickTime Pro from Apple for stitching together all the output images into a movie.) The POV file is largely complete as written and includes terse hints for rendering, but if you use this feature much you'll probably want to learn something about POV-Ray and tweak the scripts before rendering them. Most of the things you'll want to change are either at the very top (colors, textures, and sizes of things) or at the very bottom (camera viewpoint, depth cueing, lighting).

4.2  Exporting for Raster3D

KiNG can now export scenes, for fancy image-rendering, with the 'render' program of Raster3D.
This option exports most of the major kinemage point types, include balls, vectors, and triangles (ribbons) to .r3d format files for use with render. It also exports information about the points, such as transparency, line width, and color. It also will automatically set the background of the file to match the background of KiNG at the time of export.
There are a few oddities with this function. First, it can't export text labels. Second, the coordinate system doesn't match exactly, so the exported view ends up in the upper left 3/4 corner of the rendered image.

4.3  Deprecated export formats

These features now lag far behind the rest of the program in functionality; they may not work at all. For this reason, they do not appear in the menus by default and must be "enabled" under the Tools menu. If you need any of these capabilities, you are encouraged to contact the author and encourage on-going development.
You can export kinemages in XML format using the Kinetic Image Markup Language by choosing Kin-XML from the File - Export menu. We recommend giving these files the extension .xkn or .xml. At this time, KiNG does not read these files, nor do other kinemage viewers. Also, they may not include all of the information that would be present in a traditional kinemage file. However, for people who would like to operate on the data from a kinemage without having to write a parser for the kinemage format, we expect this will be useful and convenient. Translation from the modified XML back to kinemage format is left as an exercise to the reader ;)
KiNG also has rudimentary abilities to export its 3-D primitives in VRML97 (a.k.a. VRML 2.0) format. At present, only dots and balls are exported, and they are both rendered as spheres. This feature was intended to facilitate the creation of models for rapid prototyping systems. As with XML export, contact the author if further development of this feature would be useful to you.

Chapter 5
Structural biology tools

5.1  RNA Rotator Tool

The RNA rotator tool is for adjusting the various dihedral angles of an RNA suite. It uses the ModelManager system used for by the Backrub and sidechain rotator/mutator tools, which means that RNA rotator uses and changes PDB files. It also can show real-time updatable probe contact dots.
To use RNA rotator, select the tool from the Structural biology menu. Select the PDB file corresponding to the kinemage you are working on. This will load the PDB file into the Model Manager, which allows you to save changes to the PDB file, as well as activate the probe dots analysis. Middle-click or shift-click on a particular RNA residue to select it and the following residue as the active "molten" suite. This will bring up the dihedral angle dialog box, as well as the molten model, which reflects proposed changes being made in the model. Dials are included for all the backbone dihedrals, as well as the base chi angles. Blue highlights are indicated on the dials to indicate the most probable dihedral angles. If installed, suitename will be run to give a real-time "suiteness" score of the current suite. There is also a box to select from the known RNA suite conformers. Selecting a conformer will set the backbone dihedrals, as well as the sugar pucker, to the central dihedral values of the particular conformer. Finally, there is a pair of boxes for selecting which atoms to superimpose the "molten" model on the original.

5.2  RDC Play Plugin

The RDC play plugin allows quick visualization of a set of RDC curves, in fully interactive and rotatable 3D. This plugin allows users to interact with the RDC curves and gain a general understanding of their behavior of RDC data.
Starting the plugin automatically generates a new kinemage with RDC curves drawn. Slider bars are provided to adjust the rhombicity of the curves drawn, the range of the Saupe matrix generating the curves, and for selecting a specific value of RDC to draw, which is only active if the check box to only draw one value is selected. An option for drawing the underlying hyperboloid surfaces the curves come from is provided.

5.3  RDCvis

The RDCvis tool provides a convenient way of adding RDC curves to existing NMR model kinemages.
To use the tool, open a kinemage which needs RDC curves in KiNG. Starting the tool opens a dialog box with several options, as well as boxes for specifying a PDB file containing the NMR model(s), and a NMR data file in XPLOR format (see rdcvis manual or the kinemage website for more details). The 'Draw RDCs' button will then prompt for the type of RDCs to draw, and then draw the selected RDC curves for each residue directly in the kinemage. RDCvis will properly deal with multi-model kinemages, adding RDC curves for each model to the group containing that model.
Several other options are provided on the RDCvis tool GUI. 'Draw error curves' draws an extra set of curves at 2 sigma away for each RDC. 'Draw surfaces' draws representations of the underlying hyperboloid surfaces. 'Use ensemble tensor' calculates the Saupe matrix using the entire ensemble, rather than calculating a separate Saupe matrix for each model. 'Draw curve spheres' draws an RDC curve sphere representative of the Saupe matrix on each residue.

Chapter 6
Specialty/Beta test tools

This chapter covers some of the tools in the Specialty menu. This menu contains tools which are in beta testing or for highly specialized purposes, and thus not recommened for general use.

6.1  "KinImage" tool: Just silly

This cute little utility converts an image file into a kinemage background. The source image can be a local file or a sample from the Richardson Lab website: "Dave the Mage." A new kinemage group is created containing a dotlist with some percentage of the image's pixels. The list uses the "screen" keyword to indicate it is screen-oriented, i.e. impervious to rotations, translations, or zooms. Custom colors are used, and subsequently stored as hsvcolor items at the top of the file if the kinemage is saved.

6.2  RNA Maps: Finding the phosphates (not active by default)

Authored by Vincent Chen (vbc3 AT duke.edu)
This tool (still under development) was designed to aid users in locating potential phosphate positions in the electron density maps of nucleic acids. Similar to the existing electron density viewing plug-in, this tool asks the user to open a map file, and opens a control window containing many of the same controls as the electron density plug-in. In addition to these controls, it has a toggle button to activate/deactivate the poly picking feature and a color selection list. When active, if the user left-clicks on a point in the kinemage, the polyhedron containing that point will be highlighted in the color selected. Next, the tool searches through the map to find the highest electron density value within that selected polyhedron, and places a marker point on that spot, showing an approximate position for the phosphorous.

6.2.1  Current Issues

This tool does not differentiate between a point in the electron density and a point on the actual structure. Clicking on the structure with the poly picking tool active can result in the program searching through the whole structure, which can take a very long time. Be sure to click carefully, and to limit the polyhedra to be selected to a reasonable size (i.e. have the sigma level set high enough that the polyhedra are about the size of a phosphate). Also, once the first polyhedron has been selected, moving the electron density around and selecting a polyhedron may result in an error. If this happens, the program will have to be restarted in order to selected a polyhedron not in the initial set.

6.3  Analyze Geometry Plugin (replaced by Dangle, not active)

This plugin is for automatically analyzing the backbone geometry of protein structures. It uses the updated Engh and Huber (International Tables for Crystallography (2001). Vol. F, ch. 18.3, pp. 382-392) geometry data to flag bond lengths or angles which are at least 4 standard deviations away from their mean values. It also flags peptide dihedral angles that are more than 20 degrees off of 180. In order to use this tool, simply have a mainchain protein kinemage open in KiNG, and select Analyze Current from the menu. It will also output a list containing all flagged issues to the command line.
This tool will also analyze all the files within a directory. Select Analyze All from the menu, and select the directory containing the kinemages. This mode will only output the errors to the command line.

6.3.1  Issues

As with many of the tools dealing with protein residues, this tool is sensitive to the pointIDs in your kinemage. It also has trouble dealing with insertion codes, since it is often unable to figure out the order of the residues in kinemages with insertion codes.

6.4  Fill-Gap Plugin (replaced by JiffiLoop, not active)

This plugin makes it easy to automatically fill in gaps in protein models. It scans through a protein structure kin for gaps, analyzes the framing peptides of that gap, searches through a quality filtered database of loops for matches, finds kins of those matches, and superimposes them in the kinemage. It requires a database of loop frame information, and a directory of protein kinemages, both of which are quite large, and as of Feb 2007 are not publicly available. Eventually I plan to make them available on kinemage.biochem.duke.edu.

Chapter 7
Copyright & acknowledgments

7.1  Copyright

The Extratools code and all its associated original resources and documentation are copyright (C) 2002-2010 by Ian W. Davis, Vincent B. Chen, and Daniel A. Keedy.

7.2  Revision status

This manual was last updated 14 Dec 2010 by VBC for Extratools version 2.22.


File translated from TEX by TTHgold, version 4.00.
On 15 Dec 2010, 16:50.
king-2.21.120420/extratools/doc/work/tools-manual.lyx0000644000000000000000000011672111531212776020734 0ustar rootroot#LyX 1.6.1 created this file. For more info see http://www.lyx.org/ \lyxformat 345 \begin_document \begin_header \textclass report \use_default_options false \language english \inputencoding auto \font_roman times \font_sans helvet \font_typewriter courier \font_default_family default \font_sc false \font_osf false \font_sf_scale 100 \font_tt_scale 100 \graphics default \paperfontsize default \spacing single \use_hyperref true \pdf_bookmarks true \pdf_bookmarksnumbered false \pdf_bookmarksopen false \pdf_bookmarksopenlevel 1 \pdf_breaklinks false \pdf_pdfborder false \pdf_colorlinks false \pdf_backref false \pdf_pdfusetitle true \papersize default \use_geometry false \use_amsmath 1 \use_esint 0 \cite_engine basic \use_bibtopic false \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \papercolumns 1 \papersides 1 \paperpagestyle default \tracking_changes false \output_changes false \author "" \author "" \end_header \begin_body \begin_layout Standard \begin_inset VSpace vfill \end_inset \end_layout \begin_layout Title The Extratools manual \end_layout \begin_layout Standard \begin_inset VSpace vfill \end_inset \end_layout \begin_layout Author Ian W. Davis, Vincent B. Chen, and Daniel A. Keedy \end_layout \begin_layout Standard \begin_inset CommandInset toc LatexCommand tableofcontents \end_inset \end_layout \begin_layout Chapter The Tools \end_layout \begin_layout Standard This manual describes the KiNG tools available in the 'extratools' and 'rdcvis' packages. It is roughly laid out in order of the tools menu in KiNG, with tools in the main menu in this chapter, and a separate chapter for the 'Data analysis', 'Kin editing', 'Structural biology', 'Export' (File menu), and 'Specialty' tools. Also see the KiNG manual for descriptions of other tools. \end_layout \begin_layout Section 90 Degree Rotations: Seeing precisely \begin_inset CommandInset label LatexCommand label name "rot90-plugin" \end_inset \end_layout \begin_layout Standard The 90 Degree Rotations plugin provides a simple way to turn your model by 90 degrees around any of the three Cartesian axes. It also provides a shortcut back to the standard kinemage orientation: looking straight down the Z axis from the positive end toward the negative one, with positive X to the right and positive Y at the top of the screen. \end_layout \begin_layout Standard This plugin is particularly useful in combination with a trick for setting up simultaneous orthogonal views of a kinemage. Read about it in the section on stereo graphics in the KiNG manual. \end_layout \begin_layout Chapter Data analysis \end_layout \begin_layout Section Data Plotter Tool \begin_inset CommandInset label LatexCommand label name "plotting-tool" \end_inset \end_layout \begin_layout Standard The Data plotter tool is for importing high-dimensional (3) data into KiNG, for use with parallel coordinates. \end_layout \begin_layout Subsection Input files \end_layout \begin_layout Standard This tool takes as input delimited, numerical files. The tool will use the first line of the file to determine the number of dimensions to use in the kinemage, as well as the names for each dimension. Also, it will use the first column as the point ID of each point. This allows users to enter identifying information about each row in the first column which will then be used in the kinemage for each point. \end_layout \begin_layout Subsection Basic usage \end_layout \begin_layout Standard When this tool is started, it asks for an input file. Once a file is selected, it asks for the type of delimiter that is used in the file. It will then use the selected delimiter to parse the file. It then pops up a GUI with a number of different options. The different \begin_inset Quotes eld \end_inset .. axis \begin_inset Quotes erd \end_inset selection lists allow users to pick the initial three dimensions to plot. The bins selection list and the \begin_inset Quotes eld \end_inset # of Bins \begin_inset Quotes erd \end_inset entry field allows users to divide up the data into different bins (using the selected dimension), which will show up as separate groups in the kinemage. Once the desired axes and/or bins have been chosen, the Plot! button will plot the data into a kinemage. Once plotted, users can use the built-in \begin_inset Quotes eld \end_inset Choose viewing axes \begin_inset Quotes erd \end_inset and \begin_inset Quotes eld \end_inset Parallel coordinates \begin_inset Quotes erd \end_inset (under the Views menu) to manipulate the data. \end_layout \begin_layout Section High-dimensional Sliders \begin_inset CommandInset label LatexCommand label name "high-d-sliders" \end_inset \end_layout \begin_layout Standard The High-dimensional sliders plugin is for manipulating high-dimensional kinemages. When started, it determines the number of dimensions in the kinemage, and creates a GUI containing a pair of low-high sliders for each dimension. Each slider is named with the corresponding dimension name, if present in the kinemage. Sliding the different sliders will turn off any points with that particular coordinate outside of the range encompased by the two sliders. \end_layout \begin_layout Chapter Kin editing \end_layout \begin_layout Standard Several new tools have been created that allow kinemages to be more easily edited without having to go back to the original PDB and creating a new kinemage. \end_layout \begin_layout Section Co-centering Tool \begin_inset CommandInset label LatexCommand label name "co-centering-tool" \end_inset \end_layout \begin_layout Standard The Co-centeringTool is primarily for use with NMR-derived ensembles of models; it will translate all groups in kinemage onto a single selected point. \end_layout \begin_layout Subsection Basic Usage \end_layout \begin_layout Standard Just middle-click or ctrl-click on an atom in a kinemage to cocenter all the groups of that kinemage onto that point. Click on the \begin_inset Quotes eld \end_inset Reset Coordinates \begin_inset Quotes erd \end_inset button to reset all atoms to their original coordinates. \end_layout \begin_layout Subsection Scanning through a structure \end_layout \begin_layout Standard This tool includes the ability to scan through a structure one residue at a time, cocentering as it goes. Choose an atom to use as the centering point from the pull-down box, and then hit the left or right arrow buttons on the GUI to cocenter and recenter on the previous or next residue. Select the \begin_inset Quotes eld \end_inset Slide to next point \begin_inset Quotes erd \end_inset box to smoothly slide to the next or previous point. This can also be activated using the keyboard shortcut shift-j or j (for jump). As with many tools, this functionality is sensitive to the point IDs of the kinemage. \end_layout \begin_layout Subsection Cocentering on parens \end_layout \begin_layout Standard The basic usage of cocenter only works on structures with identical sequences. For cocentering non-identical structures, we have created a cocenter on parens mode, which uses a new feature of pointIDs. To use this, enter a \family typewriter \begin_inset Quotes eld \end_inset (#) \begin_inset Quotes erd \end_inset \family default [where the # is an integer] at the beginning of the point ID of the atoms you want to cocenter. With this option selected, the arrow buttons or j shortcut keys will jump through the (#) points by order of the integer. This also allows users to set up various cocentered views, and quickly jump through them, without having to manually find them, or stepping through the whole sequence. \end_layout \begin_layout Subsection Warnings \end_layout \begin_layout Standard This functionality is based on the point ID of the points in the different groups. The tool uses the first 14 characters of the point ID clicked on to search the other groups. If a group does not have a point with the same first 14 characters in the point ID, the group will not get moved. When using the parens points, only groups with a point with the appropriate paren integer will be moved. It's important to note also that this tool only does translation; it does not do any rotations at all. Superpositions of the different models may be necessary before using this tool. \end_layout \begin_layout Section Paren Tool \begin_inset CommandInset label LatexCommand label name "paren-tool" \end_inset \end_layout \begin_layout Standard The Paren tool provides a convenient way of adding parens (for use with co-centering) to point IDs. \end_layout \begin_layout Standard When started, it automatically detects all paren points already defined in the kinemage. Each group of paren points is listed in the list box. Selecting the group from the list will label all the points in that group. To add or remove points to the group, select the group from the list and pick points without numbers to add them, or with number to remove them. You can also add new groups, or delete whole groups. \end_layout \begin_layout Section Dock 3-on-3: Geometric construction \begin_inset CommandInset label LatexCommand label name "dock3-tool" \end_inset \end_layout \begin_layout Standard The three-point docking tool is useful for constructing geometric shapes and figures out of existing pieces in kinemage format. As you start picking points with the mouse, they will be labeled with numbers: first three points in the reference frame, then three in the mobile frame. When you're ready to apply the docking transformation, turn off groups that should remain in place and leave visible those that should move. Then press the \family typewriter Dock \family default button. The first points will be superimposed exactly, the 1-2 axes will be aligned (so that the mobile \begin_inset Quotes eld \end_inset points in the direction of \begin_inset Quotes erd \end_inset the reference) and the final points are used to determine rotational position (dihedral angle) about the 1-2 axis. \end_layout \begin_layout Standard If you'd like to dock several of the same object with respect to each other, remember you can use the copy and paste commands in the hierarchy editor to create duplicate objects. \end_layout \begin_layout Section Least-Squares Docking: Getting the best fit \begin_inset CommandInset label LatexCommand label name "lsqdock-tool" \end_inset \end_layout \begin_layout Standard The least-squares docking tool is useful for matching up two objects that are similar but not quite the same. As you start picking points with the mouse, they will be labeled with numbers, defining the Reference frame. Once you've selected something to dock onto, you should choose the Mobile frame and add an equal number of points to it. The order matters: 1 will match with 1, 2 with 2, and so on. When you're ready to apply the docking transformation, turn off groups that should remain in place and leave visible those that should move. Then press the \family typewriter Dock \family default button. The matched points will be positioned so as to minimize the sum of the squares of their separation (thus the phrase \begin_inset Quotes eld \end_inset least squares \begin_inset Quotes erd \end_inset ). \end_layout \begin_layout Standard If you'd like to dock several of the same object with respect to each other, remember you can use the copy and paste commands in the hierarchy editor to create duplicate objects. \end_layout \begin_layout Section Dock By Picking \begin_inset CommandInset label LatexCommand label name "dockbypicking-tool" \end_inset \end_layout \begin_layout Standard The dock by picking tool builds upon the least-squares docking tool, making use of structure connectivity to make the tool easier to use. In this version, you do not have to click on every point that you want to use to dock. Instead, you can click on two points, and almost every point in between will be automatically added to the selected box (reference or mobile). It leaves out points that are off, or are only one atom away (e.g. it ignores hydrogens and carbonyls). This tool requires the same number of points to be selected in the reference and mobile fields. The dock button will move the mobile, and every point connected to the mobile section. There is no need to turn off or on parts of the structure to get them to move. \end_layout \begin_layout Standard N.B. Since this tool uses connectivity to determine the points, and the mobile section, it is easy to confuse. For example, it is inconsistent when considering sidechains, or especially rings in structures. \end_layout \begin_layout Section Extract Loop Tool \begin_inset CommandInset label LatexCommand label name "loop-tool" \end_inset \end_layout \begin_layout Standard This tool is for removing unwanted residues from macromolecular structures. \end_layout \begin_layout Subsection Basic Usage \end_layout \begin_layout Standard Enter the residue number range into the two text boxes and hit the Keep! button. Every residue number in between the range, including the two numbers, will be kept. Multiple ranges can be entered; the ranges that have been entered are shown in the list box. The Remove last button can be used to remove the last range entered. Once the proper ranges have been entered, the Delete rest! button can be used to delete every point without a desired residue number. \end_layout \begin_layout Subsection Advanced Usage \end_layout \begin_layout Standard The LoopTool can read in a comma delimited file and use information in the file to delete residues from a structure. This allows a user to save ranges in a file, and not have to manually input the ranges. The format for the files is as follows: pdbname, lowresnum, highresnum, looplength, looplength, B-Factor (e.g. 1ubq,1,5,4,4,1.0). The two looplength fields are included for legacy reasons, but it is not important to have the correct value in those fields, just a number. B-Factor is used for the order of editing more than one structure (more on this later) but similarly to looplength, the number in this field is not critical. To use this feature, use the Open CSV file button to read in the CSV file. Then, just hit Delete from file to remove residues that aren't in your included ranges. \end_layout \begin_layout Standard The LoopTool can also delete residues from multiple structures. In order to use this feature, you need to have a CSV formatted in the same way as described for a single structure, but each line contains a different range. You also need to have a directory containing kinemages of all the different structures, and also a folder called \begin_inset Quotes eld \end_inset loops \begin_inset Quotes erd \end_inset in that directory. Then, open your CSV file as before, and use the Do ALL from file button to specify the directory of kinemages. The program will open every kinemage as needed, delete unwanted residues, and save the new kin in the loops directory. \end_layout \begin_layout Subsection Warnings \end_layout \begin_layout Standard The LoopTool makes heavy use of the information in the point IDs of the kinemages. If there are mistakes or unexpected information in the point IDs, then this tool will probably function incorrectly. Use kinemages generated from Prekin, Molprobity, or Molikin to ensure the highest rate of success. \end_layout \begin_layout Section Kinemage Fudging \begin_inset CommandInset label LatexCommand label name "kinfudger-tool" \end_inset \end_layout \begin_layout Standard The KinFudger tool now allows distance and angles between points to be easily adjusted. This is especially useful in modifying bond distances, angles, and dihedrals in macromolecular structures. \end_layout \begin_layout Standard The control panel is simple, consisting of options for the parameter you wish to adjust, whether you want to move only one point (and all attached single points--I use this to move an atom and its attached hydrogens), and a button to export your kin to PDB. \end_layout \begin_layout Subsection Adjusting bond distances, angles, and dihedrals \end_layout \begin_layout Standard In order to adjust a parameter, select the parameter you wish to adjust and click on the kinemage points you want to adjust, in order as if you were doing measures. By default, the tool will move the last point you clicked on, plus all the points connected to that point excluding the points \begin_inset Quotes eld \end_inset behind \begin_inset Quotes erd \end_inset the points you clicked. So for example, if you had a A-B-C-D connection, and you were adjusting the distance between B and C, and you clicked on B first, then C, then the program would move C and D. Likewise, if you clicked on C first, and then B, the program would move A and B. Naturally, the connectivity finding algorithm I use gets confused if you are adjusting with a cyclic structure, so be careful in that situation. \end_layout \begin_layout Standard An interesting use I discovered about this tool is that you can use the distance adjusting to do a one-point docking of structures to close gaps. \end_layout \begin_layout Subsection Moving objects \end_layout \begin_layout Standard Under the \begin_inset Quotes eld \end_inset Advanced options \begin_inset Quotes erd \end_inset , users can turn on a mode that lets users use the mouse to move objects within a kinemage. Right-click and drag translates the clicked on point, as well as anything connected to it. Left-click and drag rotates everything connected to the selected point around that point. \end_layout \begin_layout Subsection Exporting to PDB \end_layout \begin_layout Standard The KinFudger also includes an export to PDB functionality. As long as your kinemage PointIDs are formatted in a standard fashion (i.e. from Molikin, MolProbity, or Prekin), the tool will export all active points to a PDB file. So turn off anything you don't want in your PDB. Also, if it encounters an non-standard atom name, it will output \begin_inset Quotes eld \end_inset UNK \begin_inset Quotes erd \end_inset in the atom field of the PDB. Currently, it only exports protein atoms. \end_layout \begin_layout Section Recoloring \begin_inset CommandInset label LatexCommand label name "recolor-tool" \end_inset \end_layout \begin_layout Standard KiNG now has the ability to easily recolor kinemages. This tool was designed to specifically recolor protein structure kinemages; however, it can probably be used to recolor other kinds of kinemages as well. It allows specific regions of a structure to be recolored. For example, a specific amino acid, a particular alpha helix, or a whole subunit can be highlighted. This tool can also create a table of the amino acids in a structure. \end_layout \begin_layout Standard The control panel for this tool has a number of options. The top line contains the color options, the second line contains the area of effect options, and the third line contains info boxes about what you are coloring and some extra control options. Most of the coloring is activated by clicking on the structure. It is important to note that this tool only recolors lists and subgroups, so depending on your kinemage, it is possible to color the sidechains separatel y from the backbone. Also, this tool only colors by point color. \end_layout \begin_layout Standard Usage tip: There seems to be some issues with serine sidechains not being able to be colored. To work around this, try turning on the \begin_inset Quotes eld \end_inset Pick Objects \begin_inset Quotes erd \end_inset option in the Tools menu, and click directly on a bond in the sidechain. \end_layout \begin_layout Section Artificial skylighting \begin_inset CommandInset label LatexCommand label name "artificial-skylighting" \end_inset \end_layout \begin_layout Standard This plugin gives additional visual depth cues to CPK space-filling models by doing some fancy lighting calculations for kinemage spheres. It works for balls, too, but looks weird because of the highlights. To use it, just make a CPK kinemage with spheres, and run the tool. Essentially, it darkens the colors of balls closer to the 'inside' of the molecules. It will take a while on large files. \end_layout \begin_layout Standard Note that it does obliterate existing point colors, and until we have a mechanism for writing out per-point unique (non-palette) colors, the effect can't be saved. It can, however, be recalculated once some atoms (eg H) are turned off. This plugin \end_layout \begin_layout Section \begin_inset Quotes eld \end_inset Lathe \begin_inset Quotes erd \end_inset tool: Just for fun \begin_inset CommandInset label LatexCommand label name "lathe-plugin" \end_inset \end_layout \begin_layout Standard This is a fun helper that shows what a wide variety of shapes and forms can be constructed from a clever combination of kinemage primitives. \end_layout \begin_layout Standard The lathe tool takes a single polyline and sweeps it out around an axis to create a polygonal object. One strip of 64 triangles is created for every line segment. This tool is ideal for creating anything with an axis of symmetry: bottles, vases, lamps, simple cylinders, and so on. The standard axis of rotation is the Y-axis, with rotation centered at the origin, so keep this in mind when drawing a half-profile to use with this tool. \end_layout \begin_layout Section Making Movies \begin_inset CommandInset label LatexCommand label name "movie-maker" \end_inset \end_layout \begin_layout Standard This is a simple plugin to help users make movies. It allows users to configure various scenes and motions (rock, spin, fly), and exports a series of image files which can be combined (such as by Quicktime Pro) to make a movie. Buttons are included to conveniently resize the KiNG window. \end_layout \begin_layout Standard This tool keeps track of objects which are turned on, so different things can be turned on or off during the movie. To do this, make sure the kinemage is set to the desired options and view before hitting the button corresponding to the action you want to do. So, for instance, to fly to a new scene, go to the new view and hit + Fly to have the movie show that action. To insert additional actions, click in the list of current actions before where you want the new action to go. \end_layout \begin_layout Standard In practice, I (Vincent) find that it is best to add a short shapshot in between any movement actions in movies. Play with different settings to discover what you prefer. \end_layout \begin_layout Section Editing Multiple Lists \begin_inset CommandInset label LatexCommand label name "multi-list-edit-plugin" \end_inset \end_layout \begin_layout Standard \emph on Authored by Daniel Keedy \emph default \emph on (daniel.keedy AT duke.edu) \end_layout \begin_layout Standard Sometimes it's useful to emphasize or de-emphasize certain elements of a kinemage, e.g. to achieve the proper visual impact for a figure to be published. The Multi-list editor tool can help, by letting you simultaneously edit multiple kinemage lists. \end_layout \begin_layout Standard First, use the checkboxes at the top of the control panel to determine what subset of lists will be affected. A list is considered to contain Probe contacts if it has a master tag (dots, vdw contact, small overlap, bad overlap, or H-bonds) generated by the all-atom contact evaluation program Probe. Note that if the \begin_inset Quotes eld \end_inset only visible \begin_inset Quotes erd \end_inset checkbox at the bottom is unchecked, all selected lists will be adjusted, not just the visible ones (i.e. those turned on in the kinemage hierarchy). Just don't bother changing all human history... \end_layout \begin_layout Standard Next, repeatedly click the desired buttons to incrementally adjust the selected lists. For example, \begin_inset Quotes eld \end_inset BIGGER \begin_inset Quotes erd \end_inset and \begin_inset Quotes eld \end_inset smaller \begin_inset Quotes erd \end_inset change the width/radius of all points in the selected lists, and \begin_inset Quotes eld \end_inset opaquer \begin_inset Quotes erd \end_inset and \begin_inset Quotes eld \end_inset transparenter \begin_inset Quotes erd \end_inset make the lists more opaque (higher alpha value) or more transparent (lower alpha value). \end_layout \begin_layout Section Select by color \begin_inset CommandInset label LatexCommand label name "point-color-plugin" \end_inset \end_layout \begin_layout Standard This plugin works with the 'select' kinemage group keyword to manipulate groups of data points. \end_layout \begin_layout Standard To use it, make sure the kinemage group to be manipulated has the 'select' keyword set (either via the text, or the hierachy window). Then, select different combinations of 'if' and 'if not' and a color, to work with either one color or all other colors, respectively. Buttons allow points matching the selection to be turned off or on, or extracted into its own list. \end_layout \begin_layout Standard This was originally created to work with large datasets, such as the 7 dimension al RNA backbone dihedral angle data, which is displayed using ball points. However, the tool does work with other kinds of points, as long as the 'select' keyword is set for the group. \end_layout \begin_layout Chapter Exporting kinemages in other formats \end_layout \begin_layout Standard Several facilities are provided that can help get data out of kinemage format and into other forms, either for making figures for publication or for further processing. Due to security restrictions placed on applets, the export features are unavailable when KiNG is running in a web browser. \end_layout \begin_layout Section Exporting for POV-Ray \begin_inset CommandInset label LatexCommand label name "export-povray" \end_inset \end_layout \begin_layout Standard KiNG can produce output script files to be fed into the high-quality free raytracing program POV-Ray (www.povray.org). POV-Ray can generate all kinds of \begin_inset Quotes eld \end_inset photo-realistic \begin_inset Quotes erd \end_inset effects including different materials and lighting schemes, simulated depth of field, \emph on etc. \emph default It is also very useful for producing digital movies that may be more convenient to use during talks and presentations. (We recommend the inexpensive QuickTime Pro from Apple for stitching together all the output images into a movie.) The POV file is largely complete as written and includes terse hints for rendering, but if you use this feature much you'll probably want to learn something about POV-Ray and tweak the scripts before rendering them. Most of the things you'll want to change are either at the very top (colors, textures, and sizes of things) or at the very bottom (camera viewpoint, depth cueing, lighting). \end_layout \begin_layout Section Exporting for Raster3D \begin_inset CommandInset label LatexCommand label name "render-export" \end_inset \end_layout \begin_layout Standard KiNG can now export scenes, for fancy image-rendering, with the 'render' program of Raster3D. \end_layout \begin_layout Standard This option exports most of the major kinemage point types, include balls, vectors, and triangles (ribbons) to .r3d format files for use with render. It also exports information about the points, such as transparency, line width, and color. It also will automatically set the background of the file to match the background of KiNG at the time of export. \end_layout \begin_layout Standard There are a few oddities with this function. First, it can't export text labels. Second, the coordinate system doesn't match exactly, so the exported view ends up in the upper left 3/4 corner of the rendered image. \end_layout \begin_layout Section Deprecated export formats \begin_inset CommandInset label LatexCommand label name "export-xml" \end_inset \begin_inset CommandInset label LatexCommand label name "export-vrml97" \end_inset \end_layout \begin_layout Standard \emph on These features now lag far behind the rest of the program in functionality; they may not work at all. For this reason, they do not appear in the menus by default and must be \begin_inset Quotes eld \end_inset enabled \begin_inset Quotes erd \end_inset under the Tools menu. If you need any of these capabilities, you are encouraged to contact the author and encourage on-going development. \end_layout \begin_layout Standard You can export kinemages in XML format using the Kinetic Image Markup Language by choosing \family typewriter Kin-XML \family default from the \family typewriter File | Export \family default menu. We recommend giving these files the extension \family typewriter .xkn \family default or \family typewriter .xml \family default . At this time, KiNG does not read these files, nor do other kinemage viewers. Also, they may not include all of the information that would be present in a traditional kinemage file. However, for people who would like to operate on the data from a kinemage without having to write a parser for the kinemage format, we expect this will be useful and convenient. Translation from the modified XML back to kinemage format is left as an exercise to the reader ;) \end_layout \begin_layout Standard KiNG also has rudimentary abilities to export its 3-D primitives in VRML97 (a.k.a. VRML 2.0) format. At present, only dots and balls are exported, and they are both rendered as spheres. This feature was intended to facilitate the creation of models for rapid prototyping systems. As with XML export, contact the author if further development of this feature would be useful to you. \end_layout \begin_layout Chapter Structural biology tools \end_layout \begin_layout Section RNA Rotator Tool \begin_inset CommandInset label LatexCommand label name "rnarotator-tool" \end_inset \end_layout \begin_layout Standard The RNA rotator tool is for adjusting the various dihedral angles of an RNA suite. It uses the ModelManager system used for by the Backrub and sidechain rotator/m utator tools, which means that RNA rotator uses and changes PDB files. It also can show real-time updatable probe contact dots. \end_layout \begin_layout Standard To use RNA rotator, select the tool from the Structural biology menu. Select the PDB file corresponding to the kinemage you are working on. This will load the PDB file into the Model Manager, which allows you to save changes to the PDB file, as well as activate the probe dots analysis. Middle-click or shift-click on a particular RNA residue to select it and the following residue as the active \begin_inset Quotes eld \end_inset molten \begin_inset Quotes erd \end_inset suite. This will bring up the dihedral angle dialog box, as well as the molten model, which reflects proposed changes being made in the model. Dials are included for all the backbone dihedrals, as well as the base chi angles. Blue highlights are indicated on the dials to indicate the most probable dihedral angles. If installed, suitename will be run to give a real-time \begin_inset Quotes eld \end_inset suiteness \begin_inset Quotes erd \end_inset score of the current suite. There is also a box to select from the known RNA suite conformers. Selecting a conformer will set the backbone dihedrals, as well as the sugar pucker, to the central dihedral values of the particular conformer. Finally, there is a pair of boxes for selecting which atoms to superimpose the \begin_inset Quotes eld \end_inset molten \begin_inset Quotes erd \end_inset model on the original. \end_layout \begin_layout Section RDC Play Plugin \begin_inset CommandInset label LatexCommand label name "rdc-play" \end_inset \end_layout \begin_layout Standard The RDC play plugin allows quick visualization of a set of RDC curves, in fully interactive and rotatable 3D. This plugin allows users to interact with the RDC curves and gain a general understanding of their behavior of RDC data. \end_layout \begin_layout Standard Starting the plugin automatically generates a new kinemage with RDC curves drawn. Slider bars are provided to adjust the rhombicity of the curves drawn, the range of the Saupe matrix generating the curves, and for selecting a specific value of RDC to draw, which is only active if the check box to only draw one value is selected. An option for drawing the underlying hyperboloid surfaces the curves come from is provided. \end_layout \begin_layout Section RDCvis \begin_inset CommandInset label LatexCommand label name "rdcvis-tool" \end_inset \end_layout \begin_layout Standard The RDCvis tool provides a convenient way of adding RDC curves to existing NMR model kinemages. \end_layout \begin_layout Standard To use the tool, open a kinemage which needs RDC curves in KiNG. Starting the tool opens a dialog box with several options, as well as boxes for specifying a PDB file containing the NMR model(s), and a NMR data file in XPLOR format (see rdcvis manual or the kinemage website for more details). The 'Draw RDCs' button will then prompt for the type of RDCs to draw, and then draw the selected RDC curves for each residue directly in the kinemage. RDCvis will properly deal with multi-model kinemages, adding RDC curves for each model to the group containing that model. \end_layout \begin_layout Standard Several other options are provided on the RDCvis tool GUI. 'Draw error curves' draws an extra set of curves at 2 sigma away for each RDC. 'Draw surfaces' draws representations of the underlying hyperboloid surfaces. 'Use ensemble tensor' calculates the Saupe matrix using the entire ensemble, rather than calculating a separate Saupe matrix for each model. 'Draw curve spheres' draws an RDC curve sphere representative of the Saupe matrix on each residue. \end_layout \begin_layout Chapter Specialty/Beta test tools \end_layout \begin_layout Standard This chapter covers some of the tools in the Specialty menu. This menu contains tools which are in beta testing or for highly specialized purposes, and thus not recommened for general use. \end_layout \begin_layout Section \begin_inset Quotes eld \end_inset KinImage \begin_inset Quotes erd \end_inset tool: Just silly \begin_inset CommandInset label LatexCommand label name "kinimage-plugin" \end_inset \end_layout \begin_layout Standard This cute little utility converts an image file into a kinemage background. The source image can be a local file or a sample from the Richardson Lab website: \begin_inset Quotes eld \end_inset Dave the Mage. \begin_inset Quotes erd \end_inset A new kinemage group is created containing a dotlist with some percentage of the image's pixels. The list uses the \begin_inset Quotes eld \end_inset screen \begin_inset Quotes erd \end_inset keyword to indicate it is screen-oriented, i.e. impervious to rotations, translations, or zooms. Custom colors are used, and subsequently stored as hsvcolor items at the top of the file if the kinemage is saved. \end_layout \begin_layout Section RNA Maps: Finding the phosphates \shape italic (not active by default) \shape default \begin_inset CommandInset label LatexCommand label name "rnamap-tool" \end_inset \end_layout \begin_layout Standard \emph on Authored by Vincent Chen (vbc3 AT duke.edu) \end_layout \begin_layout Standard This tool (still under development) was designed to aid users in locating potential phosphate positions in the electron density maps of nucleic acids. Similar to the existing electron density viewing plug-in, this tool asks the user to open a map file, and opens a control window containing many of the same controls as the electron density plug-in. In addition to these controls, it has a toggle button to activate/deactivate the "poly picking" feature and a color selection list. When active, if the user left-clicks on a point in the kinemage, the polyhedron containing that point will be highlighted in the color selected. Next, the tool searches through the map to find the highest electron density value within that selected polyhedron, and places a marker point on that spot, showing an approximate position for the phosphorous. \end_layout \begin_layout Subsection Current Issues \end_layout \begin_layout Standard This tool does not differentiate between a point in the electron density and a point on the actual structure. Clicking on the structure with the poly picking tool active can result in the program searching through the whole structure, which can take a very long time. Be sure to click carefully, and to limit the polyhedra to be selected to a reasonable size (i.e. have the sigma level set high enough that the polyhedra are about the size of a phosphate). Also, once the first polyhedron has been selected, moving the electron density around and selecting a polyhedron may result in an error. If this happens, the program will have to be restarted in order to selected a polyhedron not in the initial set. \end_layout \begin_layout Section Analyze Geometry Plugin (replaced by Dangle, not active) \begin_inset CommandInset label LatexCommand label name "geometry-plugin" \end_inset \end_layout \begin_layout Standard This plugin is for automatically analyzing the backbone geometry of protein structures. It uses the updated Engh and Huber ( \shape italic International Tables for Crystallography \shape default (2001). Vol. F, ch. 18.3, pp. 382-392) geometry data to flag bond lengths or angles which are at least 4 standard deviations away from their mean values. It also flags peptide dihedral angles that are more than 20 degrees off of 180. In order to use this tool, simply have a mainchain protein kinemage open in KiNG, and select Analyze Current from the menu. It will also output a list containing all flagged issues to the command line. \end_layout \begin_layout Standard This tool will also analyze all the files within a directory. Select Analyze All from the menu, and select the directory containing the kinemages. This mode will only output the errors to the command line. \end_layout \begin_layout Subsection Issues \end_layout \begin_layout Standard As with many of the tools dealing with protein residues, this tool is sensitive to the pointIDs in your kinemage. It also has trouble dealing with insertion codes, since it is often unable to figure out the order of the residues in kinemages with insertion codes. \end_layout \begin_layout Section Fill-Gap Plugin (replaced by JiffiLoop, not active) \begin_inset CommandInset label LatexCommand label name "fillgap-plugin" \end_inset \end_layout \begin_layout Standard This plugin makes it easy to automatically fill in gaps in protein models. It scans through a protein structure kin for gaps, analyzes the framing peptides of that gap, searches through a quality filtered database of loops for matches, finds kins of those matches, and superimposes them in the kinemage. It requires a database of loop frame information, and a directory of protein kinemages, both of which are quite large, and as of Feb 2007 are not publicly available. Eventually I plan to make them available on kinemage.biochem.duke.edu. \end_layout \begin_layout Chapter Copyright & acknowledgments \end_layout \begin_layout Section Copyright \end_layout \begin_layout Standard The Extratools code and all its associated original resources and documentation are copyright (C) 2002-2010 by Ian W. Davis, Vincent B. Chen, and Daniel A. Keedy. \end_layout \begin_layout Section Revision status \end_layout \begin_layout Standard This manual was last updated 14 Dec 2010 by VBC for Extratools version 2.22. \end_layout \end_body \end_document king-2.21.120420/driftwood/0000755000000000000000000000000011744306100013610 5ustar rootrootking-2.21.120420/driftwood/build.xml0000644000000000000000000001121211677361112015437 0ustar rootroot Driftwood libraries by IWD king-2.21.120420/driftwood/resource/0000755000000000000000000000000011744306100015437 5ustar rootrootking-2.21.120420/driftwood/resource/driftwood/0000755000000000000000000000000011744306100017440 5ustar rootrootking-2.21.120420/driftwood/resource/driftwood/buildnum.props0000644000000000000000000000007111744310052022343 0ustar rootroot#Fri, 20 Apr 2012 18:34:49 -0400 buildnum=20120420.1834 king-2.21.120420/driftwood/resource/driftwood/moldb2/0000755000000000000000000000000011744306100020617 5ustar rootrootking-2.21.120420/driftwood/resource/driftwood/moldb2/PDBv2toPDBv3.hashmap.txt0000644000000000000000001030475011531212740025031 0ustar rootroot# v2 070731 O5' 101: O5* 101 C5' 101: C5* 101 C4' 101: C4* 101 O4' 101: O4* 101 C3' 101: C3* 101 O3' 101: O3* 101 C2' 101: C2* 101 C1' 101: C1* 101 O5' 102: O5* 102 C5' 102: C5* 102 C4' 102: C4* 102 O4' 102: O4* 102 C3' 102: C3* 102 O3' 102: O3* 102 C2' 102: C2* 102 O2' 102: O2* 102 C1' 102: C1* 102 C5' 103: C5* 103 C4' 103: C4* 103 O4' 103: O4* 103 C3' 103: C3* 103 O3' 103: O3* 103 C2' 103: C2* 103 C1' 103: C1* 103 O5' 10C: O5* 10C C5' 10C: C5* 10C C4' 10C: C4* 10C O4' 10C: O4* 10C C1' 10C: C1* 10C C3' 10C: C3* 10C C2' 10C: C2* 10C O2' 10C: O2* 10C O3' 10C: O3* 10C C6' 10C: C6* 10C O5' 112: O5* 112 C5' 112: C5* 112 C4' 112: C4* 112 O4' 112: O4* 112 C3' 112: C3* 112 O3' 112: O3* 112 C2' 112: C2* 112 O2' 112: O2* 112 C1' 112: C1* 112 OP1 125: O1P 125 OP2 125: O2P 125 OP3 125: O3P 125 O5' 125: O5* 125 C5' 125: C5* 125 C4' 125: C4* 125 O4' 125: O4* 125 C3' 125: C3* 125 O3' 125: O3* 125 C2' 125: C2* 125 O2' 125: O2* 125 C1' 125: C1* 125 CA' 125: CA* 125 CB' 125: CB* 125 FC' 125: FC* 125 OP1 126: O1P 126 OP2 126: O2P 126 OP3 126: O3P 126 O5' 126: O5* 126 C5' 126: C5* 126 C4' 126: C4* 126 O4' 126: O4* 126 C3' 126: C3* 126 O3' 126: O3* 126 C2' 126: C2* 126 O2' 126: O2* 126 C1' 126: C1* 126 CA' 126: CA* 126 CB' 126: CB* 126 OC' 126: OC* 126 CD' 126: CD* 126 CE' 126: CE* 126 OF' 126: OF* 126 CG' 126: CG* 126 CH' 126: CH* 126 OI' 126: OI* 126 CK' 126: CK* 126 OP1 127: O1P 127 OP2 127: O2P 127 OP3 127: O3P 127 O5' 127: O5* 127 C5' 127: C5* 127 C4' 127: C4* 127 O4' 127: O4* 127 C3' 127: C3* 127 O3' 127: O3* 127 C2' 127: C2* 127 O2' 127: O2* 127 C1' 127: C1* 127 CA' 127: CA* 127 CB' 127: CB* 127 OC' 127: OC* 127 ND' 127: ND* 127 O5' 128: O5* 128 C5' 128: C5* 128 C4' 128: C4* 128 O4' 128: O4* 128 C3' 128: C3* 128 O3' 128: O3* 128 C2' 128: C2* 128 O2' 128: O2* 128 C1' 128: C1* 128 OP3 12A: O3P 12A OP1 12A: O1P 12A OP2 12A: O2P 12A O5' 12A: O5* 12A C5' 12A: C5* 12A C4' 12A: C4* 12A O4' 12A: O4* 12A C3' 12A: C3* 12A O3' 12A: O3* 12A C2' 12A: C2* 12A O2' 12A: O2* 12A C1' 12A: C1* 12A C1B 130: C1* 130 C2B 130: C2* 130 C3B 130: C3* 130 C4B 130: C4* 130 C5B 130: C5* 130 C6B 130: C6* 130 C1B 131: C1* 131 C2B 131: C2* 131 C3B 131: C3* 131 C4B 131: C4* 131 C5B 131: C5* 131 C6B 131: C6* 131 C1B 132: C1* 132 C2B 132: C2* 132 C3B 132: C3* 132 C4B 132: C4* 132 C5B 132: C5* 132 C6B 132: C6* 132 C1B 134: C1* 134 C2B 134: C2* 134 C3B 134: C3* 134 C4B 134: C4* 134 C5B 134: C5* 134 C6B 134: C6* 134 O5D 139:O5*A 139 C5D 139:C5*A 139 C4D 139:C4*A 139 O4D 139:O4*A 139 C1D 139:C1*A 139 C2D 139:C2*A 139 O2D 139:O2*A 139 C3D 139:C3*A 139 O3D 139:O3*A 139 O5B 139:O5*U 139 C5B 139:C5*U 139 C4B 139:C4*U 139 O4B 139:O4*U 139 C1B 139:C1*U 139 C2B 139:C2*U 139 C3B 139:C3*U 139 O3B 139:O3*U 139 CDB 176: CD* 176 CGB 176: CG* 176 CDB 177: CD* 177 CGB 177: CG* 177 O5' 191: O5* 191 C5' 191: C5* 191 C4' 191: C4* 191 O4' 191: O4* 191 C3' 191: C3* 191 O3' 191: O3* 191 C2' 191: C2* 191 O2' 191: O2* 191 C1' 191: C1* 191 C9' 1AA: C9* 1AA C8' 1AA: C8* 1AA C7' 1AA: C7* 1AA O2' 1AA: O2* 1AA O4' 1AA: O4* 1AA O3' 1AA: O3* 1AA O1' 1AA: O1* 1AA C1' 1AA: C1* 1AA C2' 1AA: C2* 1AA C3' 1AA: C3* 1AA C4' 1AA: C4* 1AA C5' 1AA: C5* 1AA C6' 1AA: C6* 1AA OP1 1AP: O1P 1AP OP2 1AP: O2P 1AP OP3 1AP: O3P 1AP O5' 1DA: O5* 1DA C5' 1DA: C5* 1DA C4' 1DA: C4* 1DA O4' 1DA: O4* 1DA C3' 1DA: C3* 1DA O3' 1DA: O3* 1DA C2' 1DA: C2* 1DA O2' 1DA: O2* 1DA C1' 1DA: C1* 1DA C1' 1DG: C1* 1DG O4' 1DG: O4* 1DG C2' 1DG: C2* 1DG O2' 1DG: O2* 1DG C3' 1DG: C3* 1DG O3' 1DG: O3* 1DG C4' 1DG: C4* 1DG C5' 1DG: C5* 1DG O5' 1DG: O5* 1DG CA' 1IQ:C10' 1IQ CB' 1IQ:C11' 1IQ OC' 1IQ:O12' 1IQ OD' 1IQ:O13' 1IQ OP1 1MA: O1P 1MA OP2 1MA: O2P 1MA OP3 1MA: O3P 1MA O5' 1MA: O5* 1MA C5' 1MA: C5* 1MA C4' 1MA: C4* 1MA O4' 1MA: O4* 1MA C3' 1MA: C3* 1MA O3' 1MA: O3* 1MA C2' 1MA: C2* 1MA O2' 1MA: O2* 1MA C1' 1MA: C1* 1MA OP1 1MG: O1P 1MG OP2 1MG: O2P 1MG OP3 1MG: O3P 1MG O5' 1MG: O5* 1MG C5' 1MG: C5* 1MG C4' 1MG: C4* 1MG O4' 1MG: O4* 1MG C3' 1MG: C3* 1MG O3' 1MG: O3* 1MG C2' 1MG: C2* 1MG O2' 1MG: O2* 1MG C1' 1MG: C1* 1MG O'1 1PR:1O0' 1PR C1B 1PR: C1" 1PR C2B 1PR: C2" 1PR C3B 1PR: C3" 1PR C4B 1PR: C4" 1PR C5B 1PR: C5" 1PR O2B 1PR: O2" 1PR O3B 1PR: O3" 1PR O4B 1PR: O4" 1PR O6B 1PR: O6" 1PR P7B 1PR: P7" 1PR O'L 1PR:1O2" 1PR O8B 1PR: O8" 1PR O9B 1PR: O9" 1PR O5' 1RB: O5* 1RB C5' 1RB: C5* 1RB C4' 1RB: C4* 1RB O4' 1RB: O4* 1RB C3' 1RB: C3* 1RB O3' 1RB: O3* 1RB C2' 1RB: C2* 1RB O2' 1RB: O2* 1RB C1' 1RB: C1* 1RB O5' 1SC: O5* 1SC C5' 1SC: C5* 1SC C4' 1SC: C4* 1SC O4' 1SC: O4* 1SC C3' 1SC: C3* 1SC O3' 1SC: O3* 1SC C2' 1SC: C2* 1SC O2' 1SC: O2* 1SC C1' 1SC: C1* 1SC N1' 1TP: N1* 1TP C2' 1TP: C2* 1TP N3' 1TP: N3* 1TP C4' 1TP: C4* 1TP N4' 1TP: N4* 1TP C5' 1TP: C5* 1TP C6' 1TP: C6* 1TP C7' 1TP: C7* 1TP N1' 223: N1* 223 C6' 223: C6* 223 C4' 223: C4* 223 C5' 223: C5* 223 O5' 223: O5* 223 C3' 223: C3* 223 O3' 223: O3* 223 C2' 223: C2* 223 CB' 232:C11' 232 CC' 232:C12' 232 CD' 232:C13' 232 CE' 232:C14' 232 CF' 232:C15' 232 CG' 232:C16' 232 CH' 232:C17' 232 CJ' 232:C19' 232 CA' 232:C10' 232 OA' 232:O10' 232 CI' 232:C18' 232 CK' 232:C20' 232 NL' 232:N21' 232 CM' 232:C22' 232 CN' 232:C23' 232 CO' 232:C24' 232 CP' 232:C25' 232 CQ' 232:C26' 232 CR' 232:C27' 232 CL1 23D:CLAR 23D OXT 23F: O 23F O 23F: OXT 23F O5' 23T: O5* 23T C5' 23T: C5* 23T C4' 23T: C4* 23T O4' 23T: O4* 23T C1' 23T: C1* 23T C2' 23T: C2* 23T C3' 23T: C3* 23T O5' 25A: O5* 25A C5' 25A: C5* 25A C4' 25A: C4* 25A O4' 25A: O4* 25A C1' 25A: C1* 25A C2' 25A: C2* 25A O2' 25A: O2* 25A C3' 25A: C3* 25A O3' 25A: O3* 25A OBP 25A:O11P 25A OCP 25A:O12P 25A OF' 25A:O15* 25A CF' 25A:C15* 25A CE' 25A:C14* 25A OE' 25A:O14* 25A CB' 25A:C11* 25A CC' 25A:C12* 25A OC' 25A:O12* 25A CD' 25A:C13* 25A OD' 25A:O13* 25A OLP 25A:O21P 25A OMP 25A:O22P 25A OP' 25A:O25* 25A CP' 25A:C25* 25A CO' 25A:C24* 25A OO' 25A:O24* 25A CL' 25A:C21* 25A CM' 25A:C22* 25A OM' 25A:O22* 25A CN' 25A:C23* 25A ON' 25A:O23* 25A C1' 26A: C1* 26A O4' 26A: O4* 26A C4' 26A: C4* 26A C5' 26A: C5* 26A O5' 26A: O5* 26A C2' 26A: C2* 26A O2' 26A: O2* 26A C3' 26A: C3* 26A O3' 26A: O3* 26A C9' 2AA: C9* 2AA C8' 2AA: C8* 2AA C7' 2AA: C7* 2AA C6' 2AA: C6* 2AA C5' 2AA: C5* 2AA C4' 2AA: C4* 2AA C3' 2AA: C3* 2AA C2' 2AA: C2* 2AA O3' 2AA: O3* 2AA O4' 2AA: O4* 2AA C1' 2AA: C1* 2AA O2' 2AA: O2* 2AA O1' 2AA: O1* 2AA O5' 2AD: O5* 2AD C5' 2AD: C5* 2AD C4' 2AD: C4* 2AD O4' 2AD: O4* 2AD C3' 2AD: C3* 2AD O3' 2AD: O3* 2AD C2' 2AD: C2* 2AD C1' 2AD: C1* 2AD C5' 2AM: C5* 2AM O5' 2AM: O5* 2AM C4' 2AM: C4* 2AM O4' 2AM: O4* 2AM C3' 2AM: C3* 2AM O3' 2AM: O3* 2AM C2' 2AM: C2* 2AM O2' 2AM: O2* 2AM C1' 2AM: C1* 2AM OP1 2AR: O1P 2AR OP2 2AR: O2P 2AR OP3 2AR: O3P 2AR O5' 2AR: O5* 2AR C5' 2AR: C5* 2AR C4' 2AR: C4* 2AR CX' 2AR: CX* 2AR C1' 2AR: C1* 2AR C2' 2AR: C2* 2AR C3' 2AR: C3* 2AR O3' 2AR: O3* 2AR OP1 2AT: O1P 2AT OP2 2AT: O2P 2AT O5' 2AT: O5* 2AT C5' 2AT: C5* 2AT C4' 2AT: C4* 2AT O4' 2AT: O4* 2AT C1' 2AT: C1* 2AT C2' 2AT: C2* 2AT O2' 2AT: O2* 2AT C3' 2AT: C3* 2AT O3' 2AT: O3* 2AT OP3 2AT: O3P 2AT OP3 2AU: O3P 2AU OP1 2AU: O1P 2AU O5' 2AU: O5* 2AU C5' 2AU: C5* 2AU C4' 2AU: C4* 2AU O4' 2AU: O4* 2AU C3' 2AU: C3* 2AU O3' 2AU: O3* 2AU C2' 2AU: C2* 2AU C1' 2AU: C1* 2AU N2' 2AU: N2* 2AU H1P1 2AU:1H1P 2AU OP1 2BD: O1P 2BD OP2 2BD: O2P 2BD OP3 2BD: O3P 2BD O5' 2BD: O5* 2BD C5' 2BD: C5* 2BD C4' 2BD: C4* 2BD O4' 2BD: O4* 2BD C1' 2BD: C1* 2BD C2' 2BD: C2* 2BD C3' 2BD: C3* 2BD O3' 2BD: O3* 2BD OP3 2BT: O3P 2BT OP2 2BT: O2P 2BT O5' 2BT: O5* 2BT C5' 2BT: C5* 2BT C4' 2BT: C4* 2BT O4' 2BT: O4* 2BT C1' 2BT: C1* 2BT C2' 2BT: C2* 2BT O2' 2BT: O2* 2BT CA' 2BT: CA* 2BT CB' 2BT: CB* 2BT CC' 2BT: CC* 2BT C3' 2BT: C3* 2BT O3' 2BT: O3* 2BT CD' 2BT: CD* 2BT OP1 2BT: O1P 2BT OP1 2BU: O1P 2BU OP2 2BU: O2P 2BU OP3 2BU: O3P 2BU O5' 2BU: O5* 2BU C5' 2BU: C5* 2BU C4' 2BU: C4* 2BU O4' 2BU: O4* 2BU C1' 2BU: C1* 2BU C2' 2BU: C2* 2BU C3' 2BU: C3* 2BU O3' 2BU: O3* 2BU OP1 2DA: O1P 2DA OP2 2DA: O2P 2DA OP3 2DA: O3P 2DA O5' 2DA: O5* 2DA C5' 2DA: C5* 2DA C4' 2DA: C4* 2DA O4' 2DA: O4* 2DA C3' 2DA: C3* 2DA C2' 2DA: C2* 2DA C1' 2DA: C1* 2DA O5' 2DF: O5* 2DF C5' 2DF: C5* 2DF C4' 2DF: C4* 2DF O4' 2DF: O4* 2DF C1' 2DF: C1* 2DF C3' 2DF: C3* 2DF C2' 2DF: C2* 2DF O3' 2DF: O3* 2DF C5' 2DI: C5* 2DI O5' 2DI: O5* 2DI C4' 2DI: C4* 2DI O4' 2DI: O4* 2DI C1' 2DI: C1* 2DI C2' 2DI: C2* 2DI C3' 2DI: C3* 2DI OP1 2DM: O1P 2DM OP2 2DM: O2P 2DM O3' 2DM: O3* 2DM OP3 2DM: O3P 2DM OP1 2DT: O1P 2DT OP2 2DT: O2P 2DT OP3 2DT: O3P 2DT O5' 2DT: O5* 2DT C2' 2DT: C2* 2DT C5' 2DT: C5* 2DT C4' 2DT: C4* 2DT O4' 2DT: O4* 2DT C1' 2DT: C1* 2DT C3' 2DT: C3* 2DT OP3 2EG: O3P 2EG OP1 2EG: O1P 2EG OP2 2EG: O2P 2EG O5' 2EG: O5* 2EG C5' 2EG: C5* 2EG C4' 2EG: C4* 2EG O4' 2EG: O4* 2EG C3' 2EG: C3* 2EG O3' 2EG: O3* 2EG C2' 2EG: C2* 2EG C1' 2EG: C1* 2EG NA 2FH: N_A 2FH NB 2FH: N_B 2FH NC 2FH: N_C 2FH ND 2FH: N_D 2FH O5' 2GP: O5* 2GP C5' 2GP: C5* 2GP C4' 2GP: C4* 2GP O4' 2GP: O4* 2GP C3' 2GP: C3* 2GP O3' 2GP: O3* 2GP C2' 2GP: C2* 2GP O2' 2GP: O2* 2GP C1' 2GP: C1* 2GP OP1 2GT: O1P 2GT OP2 2GT: O2P 2GT O5' 2GT: O5* 2GT C5' 2GT: C5* 2GT C4' 2GT: C4* 2GT O4' 2GT: O4* 2GT C1' 2GT: C1* 2GT C2' 2GT: C2* 2GT O2' 2GT: O2* 2GT C3' 2GT: C3* 2GT O3' 2GT: O3* 2GT OP3 2GT: O3P 2GT OP1 2MA: O1P 2MA OP2 2MA: O2P 2MA OP3 2MA: O3P 2MA O5' 2MA: O5* 2MA C5' 2MA: C5* 2MA C4' 2MA: C4* 2MA O4' 2MA: O4* 2MA C3' 2MA: C3* 2MA O3' 2MA: O3* 2MA C2' 2MA: C2* 2MA O2' 2MA: O2* 2MA C1' 2MA: C1* 2MA N1A 2MC: AN1 2MC C2A 2MC: AC2 2MC N3A 2MC: AN3 2MC C4A 2MC: AC4 2MC C5A 2MC: AC5 2MC C6A 2MC: AC6 2MC N6A 2MC: AN6 2MC N7A 2MC: AN7 2MC C8A 2MC: AC8 2MC N9A 2MC: AN9 2MC C1B 2MC:AC1* 2MC C2B 2MC:AC2* 2MC O2B 2MC:AO2* 2MC C3B 2MC:AC3* 2MC O3B 2MC:AO3* 2MC P3B 2MC:AP3* 2MC O7A 2MC: AO7 2MC O8A 2MC: AO8 2MC O9A 2MC: AO9 2MC C4B 2MC:AC4* 2MC O4B 2MC:AO4* 2MC C5B 2MC:AC5* 2MC O5B 2MC:AO5* 2MC P1A 2MC: AP1 2MC O1A 2MC: AO1 2MC O2A 2MC: AO2 2MC O3A 2MC: AO3 2MC P2A 2MC: AP2 2MC O4A 2MC: AO4 2MC O5A 2MC: AO5 2MC O6A 2MC: AO6 2MC CBP 2MC:PC11 2MC CCP 2MC:PC12 2MC CDP 2MC:PC13 2MC CEP 2MC:PC14 2MC CAP 2MC:PC10 2MC OAP 2MC:PO10 2MC C9P 2MC: PC9 2MC O9P 2MC: PO9 2MC N8P 2MC: PN8 2MC C7P 2MC: PC7 2MC C6P 2MC: PC6 2MC C5P 2MC: PC5 2MC O5P 2MC: PO5 2MC N4P 2MC: PN4 2MC C3P 2MC: PC3 2MC C2P 2MC: PC2 2MC S1P 2MC: PS1 2MC O5' 2MD: O5* 2MD C5' 2MD: C5* 2MD C4' 2MD: C4* 2MD O4' 2MD: O4* 2MD C1' 2MD: C1* 2MD C2' 2MD: C2* 2MD O2' 2MD: O2* 2MD C3' 2MD: C3* 2MD O3' 2MD: O3* 2MD CA' 2ME: CA* 2ME CB' 2ME: CB* 2ME OC' 2ME: OC* 2ME CD' 2ME: CD* 2ME OP1 2MG: O1P 2MG OP2 2MG: O2P 2MG OP3 2MG: O3P 2MG O5' 2MG: O5* 2MG C5' 2MG: C5* 2MG C4' 2MG: C4* 2MG O4' 2MG: O4* 2MG C3' 2MG: C3* 2MG O3' 2MG: O3* 2MG C2' 2MG: C2* 2MG O2' 2MG: O2* 2MG C1' 2MG: C1* 2MG C1' 2MU: C1* 2MU C2' 2MU: C2* 2MU O2' 2MU: O2* 2MU C3' 2MU: C3* 2MU C4' 2MU: C4* 2MU O3' 2MU: O3* 2MU O4' 2MU: O4* 2MU C5' 2MU: C5* 2MU O5' 2MU: O5* 2MU C6' 2MU: C6* 2MU OP1 2MU: O1P 2MU OP2 2MU: O2P 2MU OP3 2MU: O3P 2MU C1' 2ND: C1* 2ND O4' 2ND: O4* 2ND C2' 2ND: C2* 2ND C3' 2ND: C3* 2ND O3' 2ND: O3* 2ND C4' 2ND: C4* 2ND C5' 2ND: C5* 2ND O5' 2ND: O5* 2ND OP3 2NT: O3P 2NT OP2 2NT: O2P 2NT O5' 2NT: O5* 2NT C5' 2NT: C5* 2NT C4' 2NT: C4* 2NT O4' 2NT: O4* 2NT C1' 2NT: C1* 2NT C2' 2NT: C2* 2NT O2' 2NT: O2* 2NT C3' 2NT: C3* 2NT O3' 2NT: O3* 2NT OP1 2NT: O1P 2NT OP1 2OT: O1P 2OT OP2 2OT: O2P 2OT O5' 2OT: O5* 2OT C5' 2OT: C5* 2OT C4' 2OT: C4* 2OT O4' 2OT: O4* 2OT C1' 2OT: C1* 2OT C2' 2OT: C2* 2OT O2' 2OT: O2* 2OT C3' 2OT: C3* 2OT O3' 2OT: O3* 2OT OP3 2OT: O3P 2OT OP3 2PR: O3P 2PR OP1 2PR: O1P 2PR OP2 2PR: O2P 2PR O5' 2PR: O5* 2PR C5' 2PR: C5* 2PR C4' 2PR: C4* 2PR O4' 2PR: O4* 2PR C3' 2PR: C3* 2PR O3' 2PR: O3* 2PR C2' 2PR: C2* 2PR C1' 2PR: C1* 2PR OP3 2ST: O3P 2ST OP1 2ST: O1P 2ST OP2 2ST: O2P 2ST O5' 2ST: O5* 2ST C2' 2ST: C2* 2ST C5' 2ST: C5* 2ST C4' 2ST: C4* 2ST O4' 2ST: O4* 2ST C1' 2ST: C1* 2ST C3' 2ST: C3* 2ST CA' 2ST: CA* 2ST O3' 2ST: O3* 2ST N1' 2TP: N1* 2TP C2' 2TP: C2* 2TP N3' 2TP: N3* 2TP C4' 2TP: C4* 2TP N4' 2TP: N4* 2TP C5' 2TP: C5* 2TP C6' 2TP: C6* 2TP C2' 2VA: C2* 2VA C3' 2VA: C3* 2VA O3' 2VA: O3* 2VA C4' 2VA: C4* 2VA C5' 2VA: C5* 2VA O5' 2VA: O5* 2VA O4' 2VA: O4* 2VA C1' 2VA: C1* 2VA CVX 312:C31' 312 CWX 312:C32' 312 OXX 312:O33' 312 OYX 312:O34' 312 C6X 312:C42' 312 C7X 312:C43' 312 O8X 312:O44' 312 O9X 312:O45' 312 C1B 312:C1'' 312 C2B 312:C2'' 312 C3B 312:C3'' 312 C4B 312:C4'' 312 C5B 312:C5'' 312 C6B 312:C6'' 312 O2B 312:O2'' 312 CV' 334:C31' 334 H2'1 34B:1H2' 34B H2'2 34B:2H2' 34B H4'1 34B:1H4' 34B H4'2 34B:2H4' 34B C1' 357: C1* 357 C7' 357: C7* 357 N1' 357: N1" 357 C6' 357: C6" 357 C2' 357: C2" 357 C3' 357: C3" 357 O4' 357: O4" 357 C5' 357: C5" 357 C6B 357: C6* 357 C5B 357: C5* 357 C4' 357: C4* 357 C3B 357: C3* 357 C8' 357: C8* 357 C2B 357: C2* 357 O5' 35G: O5* 35G C5' 35G: C5* 35G C4' 35G: C4* 35G O4' 35G: O4* 35G C3' 35G: C3* 35G O3' 35G: O3* 35G C2' 35G: C2* 35G O2' 35G: O2* 35G C1' 35G: C1* 35G PA 3AA: AP 3AA O1A 3AA: AO1 3AA O2A 3AA: AO2 3AA O5B 3AA:AO5* 3AA C5B 3AA:AC5* 3AA C4B 3AA:AC4* 3AA O4B 3AA:AO4* 3AA C1B 3AA:AC1* 3AA N9A 3AA: AN9 3AA C4A 3AA: AC4 3AA N3A 3AA: AN3 3AA C2A 3AA: AC2 3AA N1A 3AA: AN1 3AA C6A 3AA: AC6 3AA N6A 3AA: AN6 3AA C5A 3AA: AC5 3AA N7A 3AA: AN7 3AA C8A 3AA: AC8 3AA C2B 3AA:AC2* 3AA O2B 3AA:AO2* 3AA P2B 3AA:AP2* 3AA O1X 3AA:AOP1 3AA O2X 3AA:AOP2 3AA O3X 3AA:AOP3 3AA C3B 3AA:AC3* 3AA O3B 3AA:AO3* 3AA PN 3AA: NP 3AA O1N 3AA: NO1 3AA O2N 3AA: NO2 3AA O5D 3AA:NO5* 3AA C5D 3AA:NC5* 3AA C4D 3AA:NC4* 3AA O4D 3AA:NO4* 3AA C3D 3AA:NC3* 3AA O3D 3AA:NO3* 3AA C2D 3AA:NC2* 3AA O2D 3AA:NO2* 3AA C1D 3AA:NC1* 3AA N1N 3AA: NN1 3AA C2N 3AA: NC2 3AA C4N 3AA: NC4 3AA C5N 3AA: NC5 3AA C6N 3AA: NC6 3AA C3N 3AA: NC3 3AA N7N 3AA: NN7 3AA O5' 3AD: O5* 3AD C5' 3AD: C5* 3AD C4' 3AD: C4* 3AD O4' 3AD: O4* 3AD C3' 3AD: C3* 3AD C2' 3AD: C2* 3AD O2' 3AD: O2* 3AD C1' 3AD: C1* 3AD O5' 3AN: O5* 3AN C5' 3AN: C5* 3AN C4' 3AN: C4* 3AN O4' 3AN: O4* 3AN C3' 3AN: C3* 3AN N3' 3AN: N3* 3AN C2' 3AN: C2* 3AN O2' 3AN: O2* 3AN C1' 3AN: C1* 3AN O5' 3AT: O5* 3AT C5' 3AT: C5* 3AT C4' 3AT: C4* 3AT O4' 3AT: O4* 3AT C3' 3AT: C3* 3AT C2' 3AT: C2* 3AT O2' 3AT: O2* 3AT C1' 3AT: C1* 3AT O5' 3D1: O5* 3D1 C5' 3D1: C5* 3D1 C4' 3D1: C4* 3D1 O4' 3D1: O4* 3D1 C1' 3D1: C1* 3D1 C2' 3D1: C2* 3D1 C3' 3D1: C3* 3D1 O3' 3D1: O3* 3D1 O5' 3DA: O5* 3DA C5' 3DA: C5* 3DA C4' 3DA: C4* 3DA O4' 3DA: O4* 3DA C1' 3DA: C1* 3DA C2' 3DA: C2* 3DA O2' 3DA: O2* 3DA C3' 3DA: C3* 3DA O5' 3DR: O5* 3DR OP1 3DR: O1P 3DR OP2 3DR: O2P 3DR OP3 3DR: O3P 3DR C2' 3DR: C2* 3DR C5' 3DR: C5* 3DR C4' 3DR: C4* 3DR O4' 3DR: O4* 3DR C1' 3DR: C1* 3DR C3' 3DR: C3* 3DR O3' 3DR: O3* 3DR O5' 3GP: O5* 3GP C5' 3GP: C5* 3GP C4' 3GP: C4* 3GP O4' 3GP: O4* 3GP C3' 3GP: C3* 3GP O3' 3GP: O3* 3GP C2' 3GP: C2* 3GP O2' 3GP: O2* 3GP C1' 3GP: C1* 3GP N1A 3HC: AN1 3HC C2A 3HC: AC2 3HC N3A 3HC: AN3 3HC C4A 3HC: AC4 3HC C5A 3HC: AC5 3HC C6A 3HC: AC6 3HC N6A 3HC: AN6 3HC N7A 3HC: AN7 3HC C8A 3HC: AC8 3HC N9A 3HC: AN9 3HC C1B 3HC:AC1* 3HC C2B 3HC:AC2* 3HC O2B 3HC:AO2* 3HC C3B 3HC:AC3* 3HC O3B 3HC:AO3* 3HC P3B 3HC:AP3* 3HC O7A 3HC: AO7 3HC O8A 3HC: AO8 3HC O9A 3HC: AO9 3HC C4B 3HC:AC4* 3HC O4B 3HC:AO4* 3HC C5B 3HC:AC5* 3HC O5B 3HC:AO5* 3HC P1A 3HC: AP1 3HC O1A 3HC: AO1 3HC O2A 3HC: AO2 3HC O3A 3HC: AO3 3HC P2A 3HC: AP2 3HC O4A 3HC: AO4 3HC O5A 3HC: AO5 3HC O6A 3HC: AO6 3HC CBP 3HC:PC11 3HC CCP 3HC:PC12 3HC CDP 3HC:PC13 3HC CEP 3HC:PC14 3HC CAP 3HC:PC10 3HC OAP 3HC:PO10 3HC C9P 3HC: PC9 3HC O9P 3HC: PO9 3HC N8P 3HC: PN8 3HC C7P 3HC: PC7 3HC C6P 3HC: PC6 3HC C5P 3HC: PC5 3HC O5P 3HC: PO5 3HC N4P 3HC: PN4 3HC C3P 3HC: PC3 3HC C2P 3HC: PC2 3HC S1P 3HC: PS1 3HC OP1 3ME: O1P 3ME OP2 3ME: O2P 3ME O5' 3PO: O5* 3PO C1B 44D: C1* 44D C2B 44D: C2* 44D C3B 44D: C3* 44D C4B 44D: C4* 44D C5B 44D: C5* 44D C6B 44D: C6* 44D O3' 44D: O3* 44D O4B 44D: O4* 44D O5B 44D: O5* 44D OP3 4AC: O3P 4AC OP1 4AC: O1P 4AC OP2 4AC: O2P 4AC O5' 4AC: O5* 4AC C5' 4AC: C5* 4AC C4' 4AC: C4* 4AC O4' 4AC: O4* 4AC C3' 4AC: C3* 4AC O3' 4AC: O3* 4AC C2' 4AC: C2* 4AC O2' 4AC: O2* 4AC C1' 4AC: C1* 4AC O5' 4AD: O5* 4AD C5' 4AD: C5* 4AD C4' 4AD: C4* 4AD C3' 4AD: C3* 4AD O3' 4AD: O3* 4AD C2' 4AD: C2* 4AD O2' 4AD: O2* 4AD C1' 4AD: C1* 4AD O4' 4AD: O4* 4AD OXT 4BF: OT1 4BF N1A 4CA: AN1 4CA C2A 4CA: AC2 4CA N3A 4CA: AN3 4CA C4A 4CA: AC4 4CA C5A 4CA: AC5 4CA C6A 4CA: AC6 4CA N6A 4CA: AN6 4CA N7A 4CA: AN7 4CA C8A 4CA: AC8 4CA N9A 4CA: AN9 4CA C1D 4CA:AC1* 4CA C2D 4CA:AC2* 4CA O2D 4CA:AO2* 4CA C3D 4CA:AC3* 4CA O3D 4CA:AO3* 4CA P3D 4CA:AP3* 4CA O7A 4CA: AO7 4CA O8A 4CA: AO8 4CA O9A 4CA: AO9 4CA C4D 4CA:AC4* 4CA O4D 4CA:AO4* 4CA C5D 4CA:AC5* 4CA O5D 4CA:AO5* 4CA P1A 4CA: AP1 4CA O1A 4CA: AO1 4CA O2A 4CA: AO2 4CA O3A 4CA: AO3 4CA P2A 4CA: AP2 4CA O4A 4CA: AO4 4CA O5A 4CA: AO5 4CA O6A 4CA: AO6 4CA CBP 4CA:PC11 4CA CCP 4CA:PC12 4CA CDP 4CA:PC13 4CA CEP 4CA:PC14 4CA CAP 4CA:PC10 4CA OAP 4CA:PO10 4CA C9P 4CA: PC9 4CA O9P 4CA: PO9 4CA N8P 4CA: PN8 4CA C7P 4CA: PC7 4CA C6P 4CA: PC6 4CA C5P 4CA: PC5 4CA O5P 4CA: PO5 4CA N4P 4CA: PN4 4CA C3P 4CA: PC3 4CA C2P 4CA: PC2 4CA S1P 4CA: PS1 4CA C1B 4CA: BC1 4CA C2B 4CA: BC2 4CA C3B 4CA: BC3 4CA C4B 4CA: BC4 4CA C5B 4CA: BC5 4CA O2B 4CA: BO2 4CA C6B 4CA: BC6 4CA C7B 4CA: BC7 4CA N1A 4CO: AN1 4CO C2A 4CO: AC2 4CO N3A 4CO: AN3 4CO C4A 4CO: AC4 4CO C5A 4CO: AC5 4CO C6A 4CO: AC6 4CO N6A 4CO: AN6 4CO N7A 4CO: AN7 4CO C8A 4CO: AC8 4CO N9A 4CO: AN9 4CO C1D 4CO:AC1* 4CO C2D 4CO:AC2* 4CO O2D 4CO:AO2* 4CO C3D 4CO:AC3* 4CO O3D 4CO:AO3* 4CO P3D 4CO:AP3* 4CO O7A 4CO: AO7 4CO O8A 4CO: AO8 4CO O9A 4CO: AO9 4CO C4D 4CO:AC4* 4CO O4D 4CO:AO4* 4CO C5D 4CO:AC5* 4CO O5D 4CO:AO5* 4CO P1A 4CO: AP1 4CO O1A 4CO: AO1 4CO O2A 4CO: AO2 4CO O3A 4CO: AO3 4CO P2A 4CO: AP2 4CO O4A 4CO: AO4 4CO O5A 4CO: AO5 4CO O6A 4CO: AO6 4CO CBP 4CO:PC11 4CO CCP 4CO:PC12 4CO CDP 4CO:PC13 4CO CEP 4CO:PC14 4CO CAP 4CO:PC10 4CO OAP 4CO:PO10 4CO C9P 4CO: PC9 4CO O9P 4CO: PO9 4CO N8P 4CO: PN8 4CO C7P 4CO: PC7 4CO C6P 4CO: PC6 4CO C5P 4CO: PC5 4CO O5P 4CO: PO5 4CO N4P 4CO: PN4 4CO C3P 4CO: PC3 4CO C2P 4CO: PC2 4CO S1P 4CO: PS1 4CO O1B 4CO: BO1 4CO C1B 4CO: BC1 4CO C2B 4CO: BC2 4CO C3B 4CO: BC3 4CO C4B 4CO: BC4 4CO C5B 4CO: BC5 4CO O2B 4CO: BO2 4CO C6B 4CO: BC6 4CO C7B 4CO: BC7 4CO CB 4CO: BC 4CO OXT 4IN: O1 4IN OPF 4IP:1OP5 4IP OPG 4IP:2OP5 4IP OPH 4IP:3OP5 4IP O5' 4MF: O5* 4MF C5' 4MF: C5* 4MF C4' 4MF: C4* 4MF C3' 4MF: C3* 4MF O3' 4MF: O3* 4MF C2' 4MF: C2* 4MF C1' 4MF: C1* 4MF O4' 4MF: O4* 4MF O1' 4NB: O1* 4NB O2' 4NB: O2* 4NB OP1 4OC: O1P 4OC OP2 4OC: O2P 4OC O5' 4OC: O5* 4OC C5' 4OC: C5* 4OC C4' 4OC: C4* 4OC O4' 4OC: O4* 4OC C3' 4OC: C3* 4OC C2' 4OC: C2* 4OC O2' 4OC: O2* 4OC C1' 4OC: C1* 4OC O3' 4OC: O3* 4OC OP3 4OC: O3P 4OC OP1 4PC: O1P 4PC OP2 4PC: O2P 4PC O5' 4PC: O5* 4PC C5' 4PC: C5* 4PC C4' 4PC: C4* 4PC O4' 4PC: O4* 4PC C3' 4PC: C3* 4PC O3' 4PC: O3* 4PC C2' 4PC: C2* 4PC C1' 4PC: C1* 4PC OP3 4PC: O3P 4PC OP1 4PD: O1P 4PD OP2 4PD: O2P 4PD O5' 4PD: O5* 4PD C5' 4PD: C5* 4PD C4' 4PD: C4* 4PD O4' 4PD: O4* 4PD C3' 4PD: C3* 4PD O3' 4PD: O3* 4PD C2' 4PD: C2* 4PD C1' 4PD: C1* 4PD OP3 4PD: O3P 4PD OP1 4PE: O1P 4PE OP2 4PE: O2P 4PE O5' 4PE: O5* 4PE C5' 4PE: C5* 4PE C4' 4PE: C4* 4PE O4' 4PE: O4* 4PE C3' 4PE: C3* 4PE O3' 4PE: O3* 4PE C2' 4PE: C2* 4PE C1' 4PE: C1* 4PE OP3 4PE: O3P 4PE OP1 4SC: O1P 4SC OP2 4SC: O2P 4SC O5' 4SC: O5* 4SC C5' 4SC: C5* 4SC C4' 4SC: C4* 4SC S4' 4SC: S4* 4SC C3' 4SC: C3* 4SC O3' 4SC: O3* 4SC C2' 4SC: C2* 4SC C1' 4SC: C1* 4SC C1' 4SU: C1* 4SU C2' 4SU: C2* 4SU O2' 4SU: O2* 4SU C3' 4SU: C3* 4SU C4' 4SU: C4* 4SU O3' 4SU: O3* 4SU O4' 4SU: O4* 4SU C5' 4SU: C5* 4SU O5' 4SU: O5* 4SU OP1 4SU: O1P 4SU OP2 4SU: O2P 4SU OP3 4SU: O3P 4SU C1B 4TA: C1* 4TA C2B 4TA: C2* 4TA C3B 4TA: C3* 4TA O3B 4TA: O3* 4TA C4B 4TA: C4* 4TA C5B 4TA: C5* 4TA O5' 4TA: O5* 4TA O4' 4TA: O4* 4TA O5' 4TC: O5* 4TC C5' 4TC: C5* 4TC C4' 4TC: C4* 4TC C3' 4TC: C3* 4TC O3' 4TC: O3* 4TC C2' 4TC: C2* 4TC O2' 4TC: O2* 4TC C1' 4TC: C1* 4TC O4' 4TC: O4* 4TC C1' 523: C1* 523 C2' 523: C2* 523 C3' 523: C3* 523 C4' 523: C4* 523 O4' 523: O4* 523 O3' 523: O3* 523 C5' 523: C5* 523 O5' 523: O5* 523 OP3 5AA: O3P 5AA OP2 5AA: O2P 5AA O5' 5AA: O5* 5AA C5' 5AA: C5* 5AA C4' 5AA: C4* 5AA O4' 5AA: O4* 5AA C1' 5AA: C1* 5AA C2' 5AA: C2* 5AA O2' 5AA: O2* 5AA C3' 5AA: C3* 5AA N3' 5AA: N3* 5AA OP1 5AA: O1P 5AA O5' 5AS: O5* 5AS C5' 5AS: C5* 5AS C4' 5AS: C4* 5AS O4' 5AS: O4* 5AS C3' 5AS: C3* 5AS O3' 5AS: O3* 5AS C2' 5AS: C2* 5AS O2' 5AS: O2* 5AS C1' 5AS: C1* 5AS N5' 5AT: N5* 5AT C2' 5AT: C2* 5AT C5' 5AT: C5* 5AT C4' 5AT: C4* 5AT O4' 5AT: O4* 5AT C1' 5AT: C1* 5AT C3' 5AT: C3* 5AT O3' 5AT: O3* 5AT OP1 5BU: O1P 5BU OP2 5BU: O2P 5BU OP3 5BU: O3P 5BU O5' 5BU: O5* 5BU C5' 5BU: C5* 5BU C4' 5BU: C4* 5BU O4' 5BU: O4* 5BU C3' 5BU: C3* 5BU O3' 5BU: O3* 5BU C2' 5BU: C2* 5BU O2' 5BU: O2* 5BU C1' 5BU: C1* 5BU O5' 5CA: O5* 5CA C5' 5CA: C5* 5CA C4' 5CA: C4* 5CA O4' 5CA: O4* 5CA C3' 5CA: C3* 5CA O3' 5CA: O3* 5CA C2' 5CA: C2* 5CA O2' 5CA: O2* 5CA C1' 5CA: C1* 5CA O2' 5CD: O2* 5CD C2' 5CD: C2* 5CD C3' 5CD: C3* 5CD O3' 5CD: O3* 5CD C4' 5CD: C4* 5CD C5' 5CD: C5* 5CD O4' 5CD: O4* 5CD C1' 5CD: C1* 5CD CL5' 5CG:CL5* 5CG C5' 5CG: C5* 5CG C4' 5CG: C4* 5CG O4' 5CG: O4* 5CG C3' 5CG: C3* 5CG O3' 5CG: O3* 5CG C2' 5CG: C2* 5CG O2' 5CG: O2* 5CG C1' 5CG: C1* 5CG C1' 5CM: C1* 5CM C2' 5CM: C2* 5CM C3' 5CM: C3* 5CM C4' 5CM: C4* 5CM O4' 5CM: O4* 5CM O3' 5CM: O3* 5CM C5' 5CM: C5* 5CM O5' 5CM: O5* 5CM OP1 5CM: O1P 5CM OP2 5CM: O2P 5CM OP3 5CM: O3P 5CM C2' 5F1: C2* 5F1 C3' 5F1: C3* 5F1 O3' 5F1: O3* 5F1 C4' 5F1: C4* 5F1 C5' 5F1: C5* 5F1 O4' 5F1: O4* 5F1 C1' 5F1: C1* 5F1 O5' 5FA: O5* 5FA C5' 5FA: C5* 5FA C4' 5FA: C4* 5FA O4' 5FA: O4* 5FA C3' 5FA: C3* 5FA O3' 5FA: O3* 5FA C2' 5FA: C2* 5FA O2' 5FA: O2* 5FA C1' 5FA: C1* 5FA OP2 5FC: O2P 5FC OP1 5FC: O1P 5FC O5' 5FC: O5* 5FC C2' 5FC: C2* 5FC C5' 5FC: C5* 5FC C4' 5FC: C4* 5FC O4' 5FC: O4* 5FC C1' 5FC: C1* 5FC C3' 5FC: C3* 5FC O3' 5FC: O3* 5FC OP3 5FC: O3P 5FC O2' 5FD: O2* 5FD C2' 5FD: C2* 5FD C3' 5FD: C3* 5FD O3' 5FD: O3* 5FD C4' 5FD: C4* 5FD C5' 5FD: C5* 5FD O4' 5FD: O4* 5FD C1' 5FD: C1* 5FD C1' 5FU: C1* 5FU O4' 5FU: O4* 5FU C2' 5FU: C2* 5FU O2' 5FU: O2* 5FU C3' 5FU: C3* 5FU O3' 5FU: O3* 5FU C4' 5FU: C4* 5FU C5' 5FU: C5* 5FU O5' 5FU: O5* 5FU O5' 5GP: O5* 5GP C5' 5GP: C5* 5GP C4' 5GP: C4* 5GP O4' 5GP: O4* 5GP C3' 5GP: C3* 5GP O3' 5GP: O3* 5GP C2' 5GP: C2* 5GP O2' 5GP: O2* 5GP C1' 5GP: C1* 5GP O5' 5HT: O5* 5HT C5' 5HT: C5* 5HT C4' 5HT: C4* 5HT O4' 5HT: O4* 5HT C3' 5HT: C3* 5HT O3' 5HT: O3* 5HT C2' 5HT: C2* 5HT C1' 5HT: C1* 5HT OP1 5HU: O1P 5HU OP2 5HU: O2P 5HU OP3 5HU: O3P 5HU O5' 5HU: O5* 5HU C5' 5HU: C5* 5HU C4' 5HU: C4* 5HU O4' 5HU: O4* 5HU C3' 5HU: C3* 5HU O3' 5HU: O3* 5HU C2' 5HU: C2* 5HU C1' 5HU: C1* 5HU O2' 5IC: O2* 5IC C2' 5IC: C2* 5IC C3' 5IC: C3* 5IC O3' 5IC: O3* 5IC C4' 5IC: C4* 5IC O4' 5IC: O4* 5IC C1' 5IC: C1* 5IC C5' 5IC: C5* 5IC O5' 5IC: O5* 5IC OP1 5IC: O1P 5IC OP3 5IC: O3P 5IC OP2 5IC: O2P 5IC OP1 5IT: O1P 5IT OP2 5IT: O2P 5IT OP3 5IT: O3P 5IT O5' 5IT: O5* 5IT C5' 5IT: C5* 5IT C4' 5IT: C4* 5IT O4' 5IT: O4* 5IT C3' 5IT: C3* 5IT O3' 5IT: O3* 5IT C2' 5IT: C2* 5IT C1' 5IT: C1* 5IT C1' 5IU: C1* 5IU C2' 5IU: C2* 5IU C3' 5IU: C3* 5IU C4' 5IU: C4* 5IU O3' 5IU: O3* 5IU O4' 5IU: O4* 5IU C5' 5IU: C5* 5IU O5' 5IU: O5* 5IU OP1 5IU: O1P 5IU OP2 5IU: O2P 5IU OP3 5IU: O3P 5IU OP1 5MC: O1P 5MC OP2 5MC: O2P 5MC OP3 5MC: O3P 5MC O5' 5MC: O5* 5MC C5' 5MC: C5* 5MC C4' 5MC: C4* 5MC O4' 5MC: O4* 5MC C3' 5MC: C3* 5MC O3' 5MC: O3* 5MC C2' 5MC: C2* 5MC O2' 5MC: O2* 5MC C1' 5MC: C1* 5MC C1' 5MU: C1* 5MU C2' 5MU: C2* 5MU O2' 5MU: O2* 5MU C3' 5MU: C3* 5MU C4' 5MU: C4* 5MU O3' 5MU: O3* 5MU O4' 5MU: O4* 5MU C5' 5MU: C5* 5MU O5' 5MU: O5* 5MU OP1 5MU: O1P 5MU OP2 5MU: O2P 5MU OP3 5MU: O3P 5MU OP1 5NC: O1P 5NC OP2 5NC: O2P 5NC OP3 5NC: O3P 5NC O5' 5NC: O5* 5NC C5' 5NC: C5* 5NC C4' 5NC: C4* 5NC O4' 5NC: O4* 5NC C3' 5NC: C3* 5NC O3' 5NC: O3* 5NC C2' 5NC: C2* 5NC C1' 5NC: C1* 5NC OP3 5PC: O3P 5PC OP1 5PC: O1P 5PC OP2 5PC: O2P 5PC C5' 5PC: C5* 5PC O5' 5PC: O5* 5PC C4' 5PC: C4* 5PC O4' 5PC: O4* 5PC C3' 5PC: C3* 5PC O3' 5PC: O3* 5PC C2' 5PC: C2* 5PC C1' 5PC: C1* 5PC OP2 5PY: O2P 5PY OP1 5PY: O1P 5PY O5' 5PY: O5* 5PY C5' 5PY: C5* 5PY C4' 5PY: C4* 5PY O4' 5PY: O4* 5PY C1' 5PY: C1* 5PY C2' 5PY: C2* 5PY C3' 5PY: C3* 5PY O3' 5PY: O3* 5PY OP3 5PY: O3P 5PY C1' 5UD: C1* 5UD C2' 5UD: C2* 5UD O2' 5UD: O2* 5UD C3' 5UD: C3* 5UD O3' 5UD: O3* 5UD C4' 5UD: C4* 5UD O4' 5UD: O4* 5UD C5' 5UD: C5* 5UD O5' 5UD: O5* 5UD CVX 607:C31' 607 CWX 607:C32' 607 OXX 607:O33' 607 OYX 607:O34' 607 C6X 607:C42' 607 C7X 607:C43' 607 O8X 607:O44' 607 O9X 607:O45' 607 C1B 607:C1'' 607 C2B 607:C2'' 607 C3B 607:C3'' 607 C4B 607:C4'' 607 C5B 607:C5'' 607 C6B 607:C6'' 607 N2B 607:N2'' 607 OP1 64T: O1P 64T OP2 64T: O2P 64T O5' 64T: O5* 64T C5' 64T: C5* 64T C4' 64T: C4* 64T O4' 64T: O4* 64T C3' 64T: C3* 64T O3' 64T: O3* 64T C2' 64T: C2* 64T C1' 64T: C1* 64T OP3 64T: O3P 64T CV' 653:C31' 653 CW' 653:C32' 653 NX' 653:N33' 653 C1B 653:C1'' 653 C2B 653:C2'' 653 C3B 653:C3'' 653 C4B 653:C4'' 653 C5B 653:C5'' 653 C6B 653:C6'' 653 C1B 655:C1'' 655 C2B 655:C2'' 655 C3B 655:C3'' 655 C4B 655:C4'' 655 C5B 655:C5'' 655 CV' 678:C31' 678 CW' 678:C32' 678 OX' 678:O33' 678 OY' 678:O34' 678 CVX 693:C31' 693 CWX 693:C32' 693 OXX 693:O33' 693 OYX 693:O34' 693 C6X 693:C42' 693 C7X 693:C43' 693 O8X 693:O44' 693 O9X 693:O45' 693 C1B 693:C1'' 693 C2B 693:C2'' 693 C3B 693:C3'' 693 C4B 693:C4'' 693 C5B 693:C5'' 693 C6B 693:C6'' 693 F2B 693:F2'' 693 C1B 696:C1'' 696 C2B 696:C2'' 696 C3B 696:C3'' 696 C4B 696:C4'' 696 C5B 696:C5'' 696 C6B 696:C6'' 696 OP2 6CT: O2P 6CT OP1 6CT: O1P 6CT O5' 6CT: O5* 6CT C5' 6CT: C5* 6CT C4' 6CT: C4* 6CT C3' 6CT: C3* 6CT O3' 6CT: O3* 6CT C2' 6CT: C2* 6CT C1' 6CT: C1* 6CT C' 6CT: C* 6CT CM' 6CT: CM* 6CT HO1P 6CT:PHO1 6CT C1' 6FA: C1* 6FA C2' 6FA: C2* 6FA O2' 6FA: O2* 6FA C3' 6FA: C3* 6FA O3' 6FA: O3* 6FA C4' 6FA: C4* 6FA O4' 6FA: O4* 6FA C5' 6FA: C5* 6FA O5' 6FA: O5* 6FA PA 6FA: AP 6FA O1A 6FA: AO1 6FA O2A 6FA: AO2 6FA O5B 6FA:AO5* 6FA C5B 6FA:AC5* 6FA C4B 6FA:AC4* 6FA O4B 6FA:AO4* 6FA C3B 6FA:AC3* 6FA O3B 6FA:AO3* 6FA C2B 6FA:AC2* 6FA O2B 6FA:AO2* 6FA C1B 6FA:AC1* 6FA N9A 6FA: AN9 6FA C8A 6FA: AC8 6FA N7A 6FA: AN7 6FA C5X 6FA: AC5 6FA C6A 6FA: AC6 6FA N6A 6FA: AN6 6FA N1A 6FA: AN1 6FA C2A 6FA: AC2 6FA N3A 6FA: AN3 6FA C4X 6FA: AC4 6FA OP1 6HA: O1P 6HA OP2 6HA: O2P 6HA OP3 6HA: O3P 6HA O5' 6HA: O5* 6HA C5' 6HA: C5* 6HA C4' 6HA: C4* 6HA O4' 6HA: O4* 6HA C3' 6HA: C3* 6HA O3' 6HA: O3* 6HA C2' 6HA: C2* 6HA C1' 6HA: C1* 6HA C6' 6HA: C6* 6HA OP1 6HC: O1P 6HC OP2 6HC: O2P 6HC OP3 6HC: O3P 6HC O5' 6HC: O5* 6HC C5' 6HC: C5* 6HC C4' 6HC: C4* 6HC O4' 6HC: O4* 6HC C3' 6HC: C3* 6HC O3' 6HC: O3* 6HC C2' 6HC: C2* 6HC C1' 6HC: C1* 6HC C6' 6HC: C6* 6HC OP1 6HG: O1P 6HG OP2 6HG: O2P 6HG OP3 6HG: O3P 6HG O5' 6HG: O5* 6HG C5' 6HG: C5* 6HG C4' 6HG: C4* 6HG O4' 6HG: O4* 6HG C3' 6HG: C3* 6HG O3' 6HG: O3* 6HG C2' 6HG: C2* 6HG C1' 6HG: C1* 6HG C6' 6HG: C6* 6HG OP1 6HT: O1P 6HT OP2 6HT: O2P 6HT OP3 6HT: O3P 6HT O5' 6HT: O5* 6HT C5' 6HT: C5* 6HT C4' 6HT: C4* 6HT O4' 6HT: O4* 6HT C3' 6HT: C3* 6HT O3' 6HT: O3* 6HT C2' 6HT: C2* 6HT C1' 6HT: C1* 6HT C6' 6HT: C6* 6HT OP3 6IA: O3P 6IA OP1 6IA: O1P 6IA OP2 6IA: O2P 6IA O5' 6IA: O5* 6IA C5' 6IA: C5* 6IA C4' 6IA: C4* 6IA O4' 6IA: O4* 6IA C3' 6IA: C3* 6IA O3' 6IA: O3* 6IA C2' 6IA: C2* 6IA O2' 6IA: O2* 6IA C1' 6IA: C1* 6IA OP3 6MA: O3P 6MA OP1 6MA: O1P 6MA OP2 6MA: O2P 6MA O5' 6MA: O5* 6MA C5' 6MA: C5* 6MA C4' 6MA: C4* 6MA O4' 6MA: O4* 6MA C3' 6MA: C3* 6MA O3' 6MA: O3* 6MA C2' 6MA: C2* 6MA C1' 6MA: C1* 6MA OP3 6MC: O3P 6MC OP1 6MC: O1P 6MC OP2 6MC: O2P 6MC O5' 6MC: O5* 6MC C5' 6MC: C5* 6MC C4' 6MC: C4* 6MC O4' 6MC: O4* 6MC C3' 6MC: C3* 6MC O3' 6MC: O3* 6MC C2' 6MC: C2* 6MC C1' 6MC: C1* 6MC O5' 6MI: O5* 6MI C2' 6MI: C2* 6MI C5' 6MI: C5* 6MI C4' 6MI: C4* 6MI O4' 6MI: O4* 6MI C1' 6MI: C1* 6MI C3' 6MI: C3* 6MI O3' 6MI: O3* 6MI OP3 6MT: O3P 6MT OP1 6MT: O1P 6MT OP2 6MT: O2P 6MT O5' 6MT: O5* 6MT C5' 6MT: C5* 6MT C4' 6MT: C4* 6MT O4' 6MT: O4* 6MT C3' 6MT: C3* 6MT O3' 6MT: O3* 6MT C2' 6MT: C2* 6MT C1' 6MT: C1* 6MT O5' 6MZ: O5* 6MZ C5' 6MZ: C5* 6MZ C4' 6MZ: C4* 6MZ O4' 6MZ: O4* 6MZ C1' 6MZ: C1* 6MZ C2' 6MZ: C2* 6MZ O2' 6MZ: O2* 6MZ C3' 6MZ: C3* 6MZ O3' 6MZ: O3* 6MZ C1B 6NH:C1'' 6NH C2B 6NH:C2'' 6NH C3B 6NH:C3'' 6NH C4B 6NH:C4'' 6NH C5B 6NH:C5'' 6NH C6B 6NH:C6'' 6NH OP1 6OG: O1P 6OG OP2 6OG: O2P 6OG O5' 6OG: O5* 6OG C2' 6OG: C2* 6OG C5' 6OG: C5* 6OG C4' 6OG: C4* 6OG O4' 6OG: O4* 6OG C1' 6OG: C1* 6OG C3' 6OG: C3* 6OG O3' 6OG: O3* 6OG OP3 6OG: O3P 6OG C1' 70U: C1* 70U O2' 70U: O2* 70U C2' 70U: C2* 70U O3' 70U: O3* 70U C3' 70U: C3* 70U C4' 70U: C4* 70U O4' 70U: O4* 70U C5' 70U: C5* 70U O5' 70U: O5* 70U OP1 70U: O1P 70U OP2 70U: O2P 70U OP3 70U: O3P 70U C1B 762:C1'' 762 C2B 762:C2'' 762 C3B 762:C3'' 762 C4B 762:C4'' 762 C5B 762:C5'' 762 C6B 762:C6'' 762 C1B 780:C1'' 780 C2B 780:C2'' 780 C3B 780:C3'' 780 C4B 780:C4'' 780 C5B 780:C5'' 780 C6B 780:C6'' 780 C3X 783:CM3' 783 C1B 783:C1'' 783 C2B 783:C2'' 783 C3B 783:C3'' 783 C4B 783:C4'' 783 C5B 783:C5'' 783 C6B 783:C6'' 783 C3X 785:CF3' 785 FV' 785:F31' 785 FW' 785:F32' 785 FX' 785:F33' 785 OP1 7DA: O1P 7DA OP2 7DA: O2P 7DA O5' 7DA: O5* 7DA C2' 7DA: C2* 7DA C5' 7DA: C5* 7DA C4' 7DA: C4* 7DA O4' 7DA: O4* 7DA C1' 7DA: C1* 7DA C3' 7DA: C3* 7DA O3' 7DA: O3* 7DA OP3 7DA: O3P 7DA OP1 7GU: O1P 7GU OP2 7GU: O2P 7GU O5' 7GU: O5* 7GU C2' 7GU: C2* 7GU C5' 7GU: C5* 7GU C4' 7GU: C4* 7GU O4' 7GU: O4* 7GU C1' 7GU: C1* 7GU C3' 7GU: C3* 7GU O3' 7GU: O3* 7GU OP3 7GU: O3P 7GU OP1 7MG: O1P 7MG OP2 7MG: O2P 7MG OP3 7MG: O3P 7MG O5' 7MG: O5* 7MG C5' 7MG: C5* 7MG C4' 7MG: C4* 7MG O4' 7MG: O4* 7MG C3' 7MG: C3* 7MG O3' 7MG: O3* 7MG C2' 7MG: C2* 7MG O2' 7MG: O2* 7MG C1' 7MG: C1* 7MG C1B 7NH:C1'' 7NH C2B 7NH:C2'' 7NH C3B 7NH:C3'' 7NH C4B 7NH:C4'' 7NH C5B 7NH:C5'' 7NH C6B 7NH:C6'' 7NH O5' 7RA: O5* 7RA C5' 7RA: C5* 7RA C4' 7RA: C4* 7RA O4' 7RA: O4* 7RA C3' 7RA: C3* 7RA O3' 7RA: O3* 7RA C2' 7RA: C2* 7RA O2' 7RA: O2* 7RA C1' 7RA: C1* 7RA O5' 7RP: O5* 7RP C5' 7RP: C5* 7RP C4' 7RP: C4* 7RP O4' 7RP: O4* 7RP C3' 7RP: C3* 7RP O3' 7RP: O3* 7RP C2' 7RP: C2* 7RP O2' 7RP: O2* 7RP C1' 7RP: C1* 7RP CEA 81A:C14A 81A CEB 81A:C14B 81A CVX 847:C31' 847 CWX 847:C32' 847 OXX 847:O33' 847 OYX 847:O34' 847 C6X 847:C42' 847 C7X 847:C43' 847 O8X 847:O44' 847 O9X 847:O45' 847 O5' 8BR: O5* 8BR C5' 8BR: C5* 8BR C4' 8BR: C4* 8BR O4' 8BR: O4* 8BR C3' 8BR: C3* 8BR O3' 8BR: O3* 8BR C2' 8BR: C2* 8BR O2' 8BR: O2* 8BR C1' 8BR: C1* 8BR C5' 8DA: C5* 8DA C4' 8DA: C4* 8DA C3' 8DA: C3* 8DA O3' 8DA: O3* 8DA O4' 8DA: O4* 8DA C1' 8DA: C1* 8DA C2' 8DA: C2* 8DA O5' 8DG: O5* 8DG C5' 8DG: C5* 8DG C4' 8DG: C4* 8DG O4' 8DG: O4* 8DG C3' 8DG: C3* 8DG O3' 8DG: O3* 8DG C2' 8DG: C2* 8DG C1' 8DG: C1* 8DG OP3 8FG: O3P 8FG OP1 8FG: O1P 8FG OP2 8FG: O2P 8FG O5' 8FG: O5* 8FG C2' 8FG: C2* 8FG C5' 8FG: C5* 8FG C4' 8FG: C4* 8FG O4' 8FG: O4* 8FG C1' 8FG: C1* 8FG C3' 8FG: C3* 8FG O3' 8FG: O3* 8FG O5' 8GT: O5* 8GT C5' 8GT: C5* 8GT C4' 8GT: C4* 8GT O4' 8GT: O4* 8GT C3' 8GT: C3* 8GT O3' 8GT: O3* 8GT C2' 8GT: C2* 8GT O2' 8GT: O2* 8GT C1' 8GT: C1* 8GT C1' 8HG: C1* 8HG O4' 8HG: O4* 8HG C2' 8HG: C2* 8HG C3' 8HG: C3* 8HG O3' 8HG: O3* 8HG C4' 8HG: C4* 8HG C5' 8HG: C5* 8HG O5' 8HG: O5* 8HG O5B 8ID: O5* 8ID C5B 8ID: C5* 8ID C4B 8ID: C4* 8ID O4B 8ID: O4* 8ID C1B 8ID: C1* 8ID C2B 8ID: C2* 8ID O2B 8ID: O2* 8ID C3B 8ID: C3* 8ID O3B 8ID: O3* 8ID OP3 8MG: O3P 8MG OP2 8MG: O2P 8MG O5' 8MG: O5* 8MG C2' 8MG: C2* 8MG C5' 8MG: C5* 8MG C4' 8MG: C4* 8MG O4' 8MG: O4* 8MG C1' 8MG: C1* 8MG C3' 8MG: C3* 8MG O3' 8MG: O3* 8MG OP1 8MG: O1P 8MG OP3 8OG: O3P 8OG OP1 8OG: O1P 8OG OP2 8OG: O2P 8OG O5' 8OG: O5* 8OG C5' 8OG: C5* 8OG C4' 8OG: C4* 8OG O4' 8OG: O4* 8OG C3' 8OG: C3* 8OG O3' 8OG: O3* 8OG C2' 8OG: C2* 8OG C1' 8OG: C1* 8OG CV' 907:C31' 907 C5' 93A: C5* 93A O5' 93A: O5* 93A C1B 991:C1'' 991 C2B 991:C2'' 991 C3B 991:C3'' 991 C4B 991:C4'' 991 C5B 991:C5'' 991 OP3 A: O3P A OP1 A: O1P A OP2 A: O2P A O5' A: O5* A C5' A: C5* A C4' A: C4* A O4' A: O4* A C3' A: C3* A O3' A: O3* A C2' A: C2* A O2' A: O2* A C1' A: C1* A O5' A12: O5* A12 C5' A12: C5* A12 C4' A12: C4* A12 O4' A12: O4* A12 C3' A12: C3* A12 O3' A12: O3* A12 C2' A12: C2* A12 O2' A12: O2* A12 C1' A12: C1* A12 O5' A1P: O5* A1P C2' A1P: C2* A1P C5' A1P: C5* A1P C4' A1P: C4* A1P O4' A1P: O4* A1P C1' A1P: C1* A1P C3' A1P: C3* A1P O3' A1P: O3* A1P C1' A1R: C1* A1R C2' A1R: C2* A1R O2' A1R: O2* A1R C3' A1R: C3* A1R O3' A1R: O3* A1R O4' A1R: O4* A1R C4' A1R: C4* A1R C5' A1R: C5* A1R O5' A1R: O5* A1R P2D A22:P2*A A22 O11 A22:O1PA A22 O12 A22:O2PA A22 O13 A22:O3PA A22 O14 A22:O5PA A22 O15 A22:O6PA A22 O5D A22:O5*A A22 C5D A22:C5*A A22 C4D A22:C4*A A22 O4D A22:O4*A A22 C3D A22:C3*A A22 O3D A22:O3*A A22 C2D A22:C2*A A22 O2D A22:O2*A A22 C1D A22:C1*A A22 O16 A22:O1PB A22 O17 A22:O2PB A22 O18 A22:O3PB A22 O5E A22:O5*B A22 C5E A22:C5*B A22 C4E A22:C4*B A22 O4E A22:O4*B A22 C3E A22:C3*B A22 O3E A22:O3*B A22 C2E A22:C2*B A22 O2E A22:O2*B A22 C1E A22:C1*B A22 OP1 A23: O1P A23 OP2 A23: O2P A23 OP3 A23: O3P A23 O5' A23: O5* A23 C5' A23: C5* A23 C4' A23: C4* A23 O4' A23: O4* A23 C3' A23: C3* A23 O3' A23: O3* A23 C2' A23: C2* A23 O2' A23: O2* A23 C1' A23: C1* A23 O1B A24: O1* A24 C2B A24: C2* A24 C3B A24: C3* A24 N4' A24: N4* A24 C5B A24: C5* A24 C6B A24: C6* A24 C7B A24: C7* A24 C8' A24: C8* A24 O5D A2D:O5*A A2D C5D A2D:C5*A A2D C4D A2D:C4*A A2D O4D A2D:O4*A A2D C3D A2D:C3*A A2D O3D A2D:O3*A A2D C2D A2D:C2*A A2D O2D A2D:O2*A A2D C1D A2D:C1*A A2D O5E A2D:O5*B A2D C5E A2D:C5*B A2D C4E A2D:C4*B A2D O4E A2D:O4*B A2D C3E A2D:C3*B A2D O3E A2D:O3*B A2D C2E A2D:C2*B A2D O2E A2D:O2*B A2D C1E A2D:C1*B A2D O2' A2L: O2* A2L C2' A2L: C2* A2L C1' A2L: C1* A2L O4' A2L: O4* A2L C4' A2L: C4* A2L C5' A2L: C5* A2L O5' A2L: O5* A2L OP1 A2L: O1P A2L OP3 A2L: O3P A2L OP2 A2L: O2P A2L C3' A2L: C3* A2L O3' A2L: O3* A2L CA' A2L: CA* A2L CB' A2L: CB* A2L OC' A2L: OC* A2L CD' A2L: CD* A2L OP3 A2M: O3P A2M OP1 A2M: O1P A2M OP2 A2M: O2P A2M O5' A2M: O5* A2M C5' A2M: C5* A2M C4' A2M: C4* A2M O4' A2M: O4* A2M C3' A2M: C3* A2M O3' A2M: O3* A2M C2' A2M: C2* A2M O2' A2M: O2* A2M C1' A2M: C1* A2M CM' A2M: CM* A2M O5' A2P: O5* A2P C5' A2P: C5* A2P C4' A2P: C4* A2P O4' A2P: O4* A2P C3' A2P: C3* A2P O3' A2P: O3* A2P C2' A2P: C2* A2P O2' A2P: O2* A2P C1' A2P: C1* A2P P2' A2R: P2* A2R O2' A2R: O2* A2R C2' A2R: C2* A2R C1' A2R: C1* A2R O4' A2R: O4* A2R C3' A2R: C3* A2R O3' A2R: O3* A2R C4' A2R: C4* A2R C5' A2R: C5* A2R O5' A2R: O5* A2R O15' A2R:O15* A2R C15' A2R:C15* A2R C14' A2R:C14* A2R C13' A2R:C13* A2R O13' A2R:O13* A2R C12' A2R:C12* A2R O12' A2R:O12* A2R C11' A2R:C11* A2R O14' A2R:O14* A2R O11' A2R:O11* A2R OP3 A2S: O3P A2S O5' A2S: O5* A2S C5' A2S: C5* A2S C4' A2S: C4* A2S O4' A2S: O4* A2S C3' A2S: C3* A2S O3' A2S: O3* A2S C2' A2S: C2* A2S O2' A2S: O2* A2S C1' A2S: C1* A2S O1B A32: O1* A32 C2B A32: C2* A32 C3B A32: C3* A32 N4' A32: N4* A32 C5B A32: C5* A32 C6B A32: C6* A32 C7B A32: C7* A32 C8' A32: C8* A32 C9' A32: C9* A32 O5' A34: O5* A34 C2' A34: C2* A34 C5' A34: C5* A34 C4' A34: C4* A34 O4' A34: O4* A34 C1' A34: C1* A34 C3' A34: C3* A34 O3' A34: O3* A34 O5' A35: O5* A35 C5' A35: C5* A35 C4' A35: C4* A35 O4' A35: O4* A35 C1' A35: C1* A35 C2' A35: C2* A35 C3' A35: C3* A35 O3' A35: O3* A35 O5' A38: O5* A38 C5' A38: C5* A38 C4' A38: C4* A38 O4' A38: O4* A38 C3' A38: C3* A38 O3' A38: O3* A38 C2' A38: C2* A38 C1' A38: C1* A38 O5' A39: O5* A39 C5' A39: C5* A39 C4' A39: C4* A39 O4' A39: O4* A39 C3' A39: C3* A39 O3' A39: O3* A39 C2' A39: C2* A39 O2' A39: O2* A39 C1' A39: C1* A39 OP1 A3A: O1P A3A OP2 A3A: O2P A3A O6' A3A: O6* A3A C5' A3A: C5* A3A C4' A3A: C4* A3A O5' A3A: O5* A3A C3' A3A: C3* A3A O3' A3A: O3* A3A C2' A3A: C2* A3A C1' A3A: C1* A3A PA A3D: AP A3D O1A A3D: AO1 A3D O2A A3D: AO2 A3D O5B A3D:AO5* A3D C5B A3D:AC5* A3D C4B A3D:AC4* A3D O4B A3D:AO4* A3D C3B A3D:AC3* A3D O3B A3D:AO3* A3D C2B A3D:AC2* A3D O2B A3D:AO2* A3D C1B A3D:AC1* A3D N9A A3D: AN9 A3D C8A A3D: AC8 A3D N7A A3D: AN7 A3D C5A A3D: AC5 A3D C6A A3D: AC6 A3D N6A A3D: AN6 A3D N1A A3D: AN1 A3D C2A A3D: AC2 A3D N3A A3D: AN3 A3D C4A A3D: AC4 A3D PN A3D: NP A3D O1N A3D: NO1 A3D O2N A3D: NO2 A3D O5D A3D:NO5* A3D C5D A3D:NC5* A3D C4D A3D:NC4* A3D O4D A3D:NO4* A3D C3D A3D:NC3* A3D O3D A3D:NO3* A3D C2D A3D:NC2* A3D O2D A3D:NO2* A3D C1D A3D:NC1* A3D N1N A3D: NN1 A3D C2N A3D: NC2 A3D C3N A3D: NC3 A3D C7N A3D: NC7 A3D O7N A3D: NO7 A3D C8N A3D: NC8 A3D C4N A3D: NC4 A3D C5N A3D: NC5 A3D C6N A3D: NC6 A3D O5' A3P: O5* A3P C5' A3P: C5* A3P C4' A3P: C4* A3P O4' A3P: O4* A3P C3' A3P: C3* A3P O3' A3P: O3* A3P C2' A3P: C2* A3P O2' A3P: O2* A3P C1' A3P: C1* A3P O5' A40: O5* A40 C5' A40: C5* A40 C4' A40: C4* A40 O4' A40: O4* A40 C1' A40: C1* A40 C2' A40: C2* A40 C3' A40: C3* A40 O3' A40: O3* A40 O5' A43: O5* A43 C5' A43: C5* A43 C4' A43: C4* A43 O4' A43: O4* A43 C3' A43: C3* A43 C2' A43: C2* A43 C1' A43: C1* A43 O5' A44: O5* A44 C5' A44: C5* A44 C4' A44: C4* A44 O4' A44: O4* A44 C3' A44: C3* A44 O3' A44: O3* A44 C2' A44: C2* A44 O2' A44: O2* A44 C1' A44: C1* A44 CA' A44: CA* A44 OC' A44: OC* A44 O5' A47: O5* A47 C5' A47: C5* A47 C4' A47: C4* A47 O4' A47: O4* A47 C3' A47: C3* A47 O3' A47: O3* A47 C2' A47: C2* A47 C1' A47: C1* A47 O5' A4P: O5* A4P C5' A4P: C5* A4P C4' A4P: C4* A4P O4' A4P: O4* A4P C3' A4P: C3* A4P O3' A4P: O3* A4P C2' A4P: C2* A4P O2' A4P: O2* A4P O5' A5A: O5* A5A C5' A5A: C5* A5A C4' A5A: C4* A5A O4' A5A: O4* A5A C3' A5A: C3* A5A O3' A5A: O3* A5A C2' A5A: C2* A5A O2' A5A: O2* A5A C1' A5A: C1* A5A OP1 A5M: O1P A5M OP2 A5M: O2P A5M O5' A5M: O5* A5M C5' A5M: C5* A5M C4' A5M: C4* A5M O4' A5M: O4* A5M C1' A5M: C1* A5M C2' A5M: C2* A5M N2' A5M: N2* A5M C3' A5M: C3* A5M O3' A5M: O3* A5M OP3 A5M: O3P A5M C4' AAD: C4* AAD O4' AAD: O4* AAD C3' AAD: C3* AAD O3' AAD: O3* AAD C2' AAD: C2* AAD O2' AAD: O2* AAD C1' AAD: C1* AAD C5' AAD: C5* AAD O6' AAM: O6* AAM C5' AAM: C5* AAM C4' AAM: C4* AAM O5' AAM: O5* AAM C3' AAM: C3* AAM O3' AAM: O3* AAM C2' AAM: C2* AAM O2' AAM: O2* AAM C1' AAM: C1* AAM C5' AAT: C5* AAT C4' AAT: C4* AAT O4' AAT: O4* AAT C3' AAT: C3* AAT O3' AAT: O3* AAT C2' AAT: C2* AAT O2' AAT: O2* AAT C1' AAT: C1* AAT O1X ABF:O1P' ABF O2X ABF:O2P' ABF O3X ABF:O3P' ABF O5' ABM: O5* ABM C5' ABM: C5* ABM C4' ABM: C4* ABM O4' ABM: O4* ABM C3' ABM: C3* ABM O3' ABM: O3* ABM C2' ABM: C2* ABM O2' ABM: O2* ABM C1' ABM: C1* ABM O5' ABP: O5* ABP C5' ABP: C5* ABP C4' ABP: C4* ABP O4' ABP: O4* ABP C3' ABP: C3* ABP O3' ABP: O3* ABP C2' ABP: C2* ABP O2' ABP: O2* ABP C1' ABP: C1* ABP OP1 ABR: O1P ABR OP2 ABR: O2P ABR O5' ABR: O5* ABR C5' ABR: C5* ABR C4' ABR: C4* ABR O4' ABR: O4* ABR C1' ABR: C1* ABR C2' ABR: C2* ABR C3' ABR: C3* ABR O3' ABR: O3* ABR OP3 ABR: O3P ABR OP1 ABS: O1P ABS OP2 ABS: O2P ABS O5' ABS: O5* ABS C5' ABS: C5* ABS C4' ABS: C4* ABS O4' ABS: O4* ABS C1' ABS: C1* ABS C2' ABS: C2* ABS C3' ABS: C3* ABS O3' ABS: O3* ABS OP3 ABS: O3P ABS O5' ABT: O5* ABT C5' ABT: C5* ABT C4' ABT: C4* ABT O4' ABT: O4* ABT C1' ABT: C1* ABT C2' ABT: C2* ABT C3' ABT: C3* ABT N3' ABT: N3* ABT N4' ABT: N4* ABT N5' ABT: N5* ABT C3' AC2: C3* AC2 O3' AC2: O3* AC2 C2' AC2: C2* AC2 O1' AC2: O1* AC2 C1' AC2: C1* AC2 O5' ACK: O5* ACK C5' ACK: C5* ACK C4' ACK: C4* ACK O4' ACK: O4* ACK C3' ACK: C3* ACK O3' ACK: O3* ACK C1' ACK: C1* ACK C2' ACK: C2* ACK N1A ACO: AN1 ACO C2A ACO: AC2 ACO N3A ACO: AN3 ACO C4A ACO: AC4 ACO C5A ACO: AC5 ACO C6A ACO: AC6 ACO N6A ACO: AN6 ACO N7A ACO: AN7 ACO C8A ACO: AC8 ACO N9A ACO: AN9 ACO C1B ACO:AC1* ACO C2B ACO:AC2* ACO O2B ACO:AO2* ACO C3B ACO:AC3* ACO O3B ACO:AO3* ACO P3B ACO:AP3* ACO O7A ACO: AO7 ACO O8A ACO: AO8 ACO O9A ACO: AO9 ACO C4B ACO:AC4* ACO O4B ACO:AO4* ACO C5B ACO:AC5* ACO O5B ACO:AO5* ACO P1A ACO: AP1 ACO O1A ACO: AO1 ACO O2A ACO: AO2 ACO O3A ACO: AO3 ACO P2A ACO: AP2 ACO O4A ACO: AO4 ACO O5A ACO: AO5 ACO O6A ACO: AO6 ACO CBP ACO:PC11 ACO CCP ACO:PC12 ACO CDP ACO:PC13 ACO CEP ACO:PC14 ACO CAP ACO:PC10 ACO OAP ACO:PO10 ACO C9P ACO: PC9 ACO O9P ACO: PO9 ACO N8P ACO: PN8 ACO C7P ACO: PC7 ACO C6P ACO: PC6 ACO C5P ACO: PC5 ACO O5P ACO: PO5 ACO N4P ACO: PN4 ACO C3P ACO: PC3 ACO C2P ACO: PC2 ACO S1P ACO: PS1 ACO O5' ACP: O5* ACP C5' ACP: C5* ACP C4' ACP: C4* ACP O4' ACP: O4* ACP C3' ACP: C3* ACP O3' ACP: O3* ACP C2' ACP: C2* ACP O2' ACP: O2* ACP C1' ACP: C1* ACP O5' ACQ: O5* ACQ C5' ACQ: C5* ACQ C4' ACQ: C4* ACQ O4' ACQ: O4* ACQ C3' ACQ: C3* ACQ O3' ACQ: O3* ACQ C2' ACQ: C2* ACQ O2' ACQ: O2* ACQ C1' ACQ: C1* ACQ OP1 AD2: O1P AD2 OP2 AD2: O2P AD2 OP3 AD2: O3P AD2 O5' AD3: O5* AD3 C5' AD3: C5* AD3 C4' AD3: C4* AD3 O4' AD3: O4* AD3 C3' AD3: C3* AD3 O3' AD3: O3* AD3 C2' AD3: C2* AD3 O2' AD3: O2* AD3 C1' AD3: C1* AD3 O5' ADI: O5* ADI C5' ADI: C5* ADI C4' ADI: C4* ADI O4' ADI: O4* ADI C3' ADI: C3* ADI C2' ADI: C2* ADI C1' ADI: C1* ADI O5' ADN: O5* ADN C5' ADN: C5* ADN C4' ADN: C4* ADN O4' ADN: O4* ADN C3' ADN: C3* ADN O3' ADN: O3* ADN C2' ADN: C2* ADN O2' ADN: O2* ADN C1' ADN: C1* ADN O5' ADP: O5* ADP C5' ADP: C5* ADP C4' ADP: C4* ADP O4' ADP: O4* ADP C3' ADP: C3* ADP O3' ADP: O3* ADP C2' ADP: C2* ADP O2' ADP: O2* ADP C1' ADP: C1* ADP O5D ADQ: O5* ADQ C5D ADQ: C5* ADQ C4D ADQ: C4* ADQ O4D ADQ: O4* ADQ C3D ADQ: C3* ADQ O3D ADQ: O3* ADQ C2D ADQ: C2* ADQ O2D ADQ: O2* ADQ C1D ADQ: C1* ADQ O5' ADS: O5* ADS C5' ADS: C5* ADS C4' ADS: C4* ADS O4' ADS: O4* ADS C3' ADS: C3* ADS O3' ADS: O3* ADS C2' ADS: C2* ADS O2' ADS: O2* ADS C1' ADS: C1* ADS C1' ADT: C1* ADT O4' ADT: O4* ADT C4' ADT: C4* ADT C5' ADT: C5* ADT O5' ADT: O5* ADT C3' ADT: C3* ADT N3' ADT: N3* ADT C8' ADT: C8* ADT O8' ADT: O8* ADT C9' ADT: C9* ADT C2' ADT: C2* ADT C1' ADU: C1* ADU O4' ADU: O4* ADU C4' ADU: C4* ADU C5' ADU: C5* ADU O5' ADU: O5* ADU C3' ADU: C3* ADU N3' ADU: N3* ADU C8' ADU: C8* ADU O8' ADU: O8* ADU C9' ADU: C9* ADU C2' ADU: C2* ADU O2' ADU: O2* ADU O5' ADV: O5* ADV C5' ADV: C5* ADV C4' ADV: C4* ADV O4' ADV: O4* ADV C3' ADV: C3* ADV O3' ADV: O3* ADV C2' ADV: C2* ADV O2' ADV: O2* ADV C1' ADV: C1* ADV O5' ADW: O5* ADW C5' ADW: C5* ADW C4' ADW: C4* ADW O4' ADW: O4* ADW C3' ADW: C3* ADW O3' ADW: O3* ADW C2' ADW: C2* ADW O2' ADW: O2* ADW C1' ADW: C1* ADW O5' ADX: O5* ADX C5' ADX: C5* ADX C4' ADX: C4* ADX O4' ADX: O4* ADX C3' ADX: C3* ADX O3' ADX: O3* ADX C2' ADX: C2* ADX O2' ADX: O2* ADX C1' ADX: C1* ADX O5' ADY: O5* ADY C5' ADY: C5* ADY C4' ADY: C4* ADY O4' ADY: O4* ADY C3' ADY: C3* ADY O3' ADY: O3* ADY C2' ADY: C2* ADY O2' ADY: O2* ADY C1' ADY: C1* ADY C1' ADZ: C1* ADZ O5' AEC: O5* AEC C5' AEC: C5* AEC C4' AEC: C4* AEC C3' AEC: C3* AEC O3' AEC: O3* AEC C2' AEC: C2* AEC O2' AEC: O2* AEC O4' AEC: O4* AEC C1' AEC: C1* AEC OP1 AET: O1P AET OP2 AET: O2P AET OP3 AET: O3P AET O5' AET: O5* AET C5' AET: C5* AET C4' AET: C4* AET O4' AET: O4* AET C3' AET: C3* AET O3' AET: O3* AET C2' AET: C2* AET O2' AET: O2* AET C1' AET: C1* AET ODA AET:O13A AET ODB AET:O13B AET OP3 AFG: O3P AFG OP1 AFG: O1P AFG OP2 AFG: O2P AFG O5' AFG: O5* AFG C2' AFG: C2* AFG C5' AFG: C5* AFG C4' AFG: C4* AFG O4' AFG: O4* AFG C1' AFG: C1* AFG C3' AFG: C3* AFG O3' AFG: O3* AFG C1D AFH: C1* AFH C2D AFH: C2* AFH O2' AFH: O2* AFH C3D AFH: C3* AFH C4D AFH: C4* AFH O4D AFH: O4* AFH O3D AFH: O3* AFH C5D AFH: C5* AFH O5D AFH: O5* AFH CDB AGF:1CD1 AGF CDL AGF:2CD1 AGF CEB AGF:1CE1 AGF CEL AGF:2CE1 AGF CDE AGF:1CD4 AGF CDO AGF:2CD4 AGF CEE AGF:1CE4 AGF CEO AGF:2CE4 AGF O5' AGN: O5* AGN C5B AGN: C5* AGN C4B AGN: C4* AGN O4' AGN: O4* AGN C3B AGN: C3* AGN O3' AGN: O3* AGN C2B AGN: C2* AGN C1B AGN: C1* AGN O5' AGS: O5* AGS C5' AGS: C5* AGS C4' AGS: C4* AGS O4' AGS: O4* AGS C3' AGS: C3* AGS O3' AGS: O3* AGS C2' AGS: C2* AGS O2' AGS: O2* AGS C1' AGS: C1* AGS O5' AHR: O5* AHR C5' AHR: C5* AHR C4' AHR: C4* AHR O4' AHR: O4* AHR C3' AHR: C3* AHR O3' AHR: O3* AHR C2' AHR: C2* AHR O2' AHR: O2* AHR C1' AHR: C1* AHR O1' AHR: O1* AHR C4' AHU: C4* AHU C7' AHU: C7* AHU O7' AHU: O7* AHU O5' AHU: O5* AHU C6' AHU: C6* AHU C1' AHU: C1* AHU C2' AHU: C2* AHU C3' AHU: C3* AHU O3' AHU: O3* AHU O5' AHX: O5* AHX C5' AHX: C5* AHX C4' AHX: C4* AHX O4' AHX: O4* AHX C3' AHX: C3* AHX O3' AHX: O3* AHX C2' AHX: C2* AHX O2' AHX: O2* AHX C1' AHX: C1* AHX O2' AHZ: O2* AHZ C2' AHZ: C2* AHZ C3' AHZ: C3* AHZ O3' AHZ: O3* AHZ C1' AHZ: C1* AHZ O4' AHZ: O4* AHZ C4' AHZ: C4* AHZ C5' AHZ: C5* AHZ O5' AHZ: O5* AHZ C1B AI1: C1* AI1 C2B AI1: C2* AI1 C3B AI1: C3* AI1 C4B AI1: C4* AI1 C5B AI1: C5* AI1 C6B AI1: C6* AI1 C7B AI1: C7* AI1 O AIB: O1 AIB OXT AIB: O2 AIB O2' AIS: O2* AIS C2' AIS: C2* AIS C3' AIS: C3* AIS O3' AIS: O3* AIS C4' AIS: C4* AIS C5' AIS: C5* AIS O5' AIS: O5* AIS O4' AIS: O4* AIS C1' AIS: C1* AIS CL28 AIZ:8CL2 AIZ O4' AKA: O4* AKA C4' AKA: C4* AKA C5' AKA: C5* AKA C6' AKA: C6* AKA O5' AKA: O5* AKA C3' AKA: C3* AKA N3' AKA: N3* AKA C8' AKA: C8* AKA C7' AKA: C7* AKA C2' AKA: C2* AKA C1' AKA: C1* AKA C1' AKT: C1* AKT C2' AKT: C2* AKT C3' AKT: C3* AKT N3' AKT: N3* AKT C8' AKT: C8* AKT C7' AKT: C7* AKT C4' AKT: C4* AKT O4' AKT: O4* AKT C5' AKT: C5* AKT O5' AKT: O5* AKT C6' AKT: C6* AKT C1' ALL: C1* ALL C2' ALL: C2* ALL C3' ALL: C3* ALL C4' ALL: C4* ALL C5' ALL: C5* ALL C6' ALL: C6* ALL O1' ALL: O1* ALL O2' ALL: O2* ALL O3' ALL: O3* ALL O4' ALL: O4* ALL O5' ALL: O5* ALL O6' ALL: O6* ALL CX5 ALW:3C11 ALW O5' AMD: O5* AMD C5' AMD: C5* AMD C4' AMD: C4* AMD O4' AMD: O4* AMD C1' AMD: C1* AMD C2' AMD: C2* AMD C3' AMD: C3* AMD O3' AMD: O3* AMD O5' AMO: O5* AMO C5' AMO: C5* AMO C4' AMO: C4* AMO O4' AMO: O4* AMO C1' AMO: C1* AMO C2' AMO: C2* AMO C3' AMO: C3* AMO O3' AMO: O3* AMO O2' AMO: O2* AMO O5' AMP: O5* AMP C5' AMP: C5* AMP C4' AMP: C4* AMP O4' AMP: O4* AMP C3' AMP: C3* AMP O3' AMP: O3* AMP C2' AMP: C2* AMP O2' AMP: O2* AMP C1' AMP: C1* AMP O5' AMW: O5* AMW C5' AMW: C5* AMW C4' AMW: C4* AMW O4' AMW: O4* AMW C3' AMW: C3* AMW O3' AMW: O3* AMW C2' AMW: C2* AMW O2' AMW: O2* AMW C1' AMW: C1* AMW N1A AMX: AN1 AMX C2A AMX: AC2 AMX N3A AMX: AN3 AMX C4A AMX: AC4 AMX C5A AMX: AC5 AMX C6A AMX: AC6 AMX N6A AMX: AN6 AMX N7A AMX: AN7 AMX C8A AMX: AC8 AMX N9A AMX: AN9 AMX C1B AMX:AC1* AMX C2B AMX:AC2* AMX O2B AMX:AO2* AMX C3B AMX:AC3* AMX O3B AMX:AO3* AMX P3B AMX:AP3* AMX O7A AMX: AO7 AMX O8A AMX: AO8 AMX O9A AMX: AO9 AMX C4B AMX:AC4* AMX O4B AMX:AO4* AMX C5B AMX:AC5* AMX O5B AMX:AO5* AMX P1A AMX: AP1 AMX O1A AMX: AO1 AMX O2A AMX: AO2 AMX O3A AMX: AO3 AMX P2A AMX: AP2 AMX O4A AMX: AO4 AMX O5A AMX: AO5 AMX O6A AMX: AO6 AMX CBP AMX:PC11 AMX CCP AMX:PC12 AMX CDP AMX:PC13 AMX CEP AMX:PC14 AMX CAP AMX:PC10 AMX OAP AMX:PO10 AMX C9P AMX: PC9 AMX O9P AMX: PO9 AMX N8P AMX: PN8 AMX C7P AMX: PC7 AMX C6P AMX: PC6 AMX C5P AMX: PC5 AMX O5P AMX: PO5 AMX N4P AMX: PN4 AMX C3P AMX: PC3 AMX C2P AMX: PC2 AMX O5' AN2: O5* AN2 C5' AN2: C5* AN2 C4' AN2: C4* AN2 O4' AN2: O4* AN2 C3' AN2: C3* AN2 O3' AN2: O3* AN2 C2' AN2: C2* AN2 O2' AN2: O2* AN2 C1' AN2: C1* AN2 O5' ANP: O5* ANP C5' ANP: C5* ANP C4' ANP: C4* ANP O4' ANP: O4* ANP C3' ANP: C3* ANP O3' ANP: O3* ANP C2' ANP: C2* ANP O2' ANP: O2* ANP C1' ANP: C1* ANP O3' ANU: O3* ANU C3' ANU: C3* ANU C2' ANU: C2* ANU C1' ANU: C1* ANU O4' ANU: O4* ANU C4' ANU: C4* ANU C5' ANU: C5* ANU O5' ANU: O5* ANU O5' ANZ: O5* ANZ C5' ANZ: C5* ANZ C4' ANZ: C4* ANZ O4' ANZ: O4* ANZ C3' ANZ: C3* ANZ O3' ANZ: O3* ANZ C2' ANZ: C2* ANZ O2' ANZ: O2* ANZ C1' ANZ: C1* ANZ CX7 AO:1C15 AO CX8 AO:2C15 AO CXH AO:1C16 AO CXI AO:2C16 AO O7N AP0: NO7 AP0 C7N AP0: NC7 AP0 C8N AP0: NC8 AP0 C3N AP0: NC3 AP0 C4N AP0: NC4 AP0 C5N AP0: NC5 AP0 C6N AP0: NC6 AP0 C2N AP0: NC2 AP0 N1N AP0: NN1 AP0 C1D AP0:NC1* AP0 C2D AP0:NC2* AP0 O2D AP0:NO2* AP0 C3D AP0:NC3* AP0 O3D AP0:NO3* AP0 O4D AP0:NO4* AP0 C4D AP0:NC4* AP0 C5D AP0:NC5* AP0 O5D AP0:NO5* AP0 PN AP0: NP AP0 O1N AP0: NO1 AP0 O2N AP0: NO2 AP0 PA AP0: AP AP0 O1A AP0: AO1 AP0 O2A AP0: AO2 AP0 O5B AP0:AO5* AP0 C5B AP0:AC5* AP0 C4B AP0:AC4* AP0 O4B AP0:AO4* AP0 C1B AP0:AC1* AP0 C2B AP0:AC2* AP0 O2B AP0:AO2* AP0 C3B AP0:AC3* AP0 O3B AP0:AO3* AP0 N9A AP0: AN9 AP0 C8A AP0: AC8 AP0 N7A AP0: AN7 AP0 C5A AP0: AC5 AP0 C6A AP0: AC6 AP0 N6A AP0: AN6 AP0 C4A AP0: AC4 AP0 N3A AP0: AN3 AP0 C2A AP0: AC2 AP0 N1A AP0: AN1 AP0 O5' AP2: O5* AP2 C5' AP2: C5* AP2 C4' AP2: C4* AP2 O4' AP2: O4* AP2 C3' AP2: C3* AP2 O3' AP2: O3* AP2 C2' AP2: C2* AP2 O2' AP2: O2* AP2 C1' AP2: C1* AP2 O5F AP5:AO5* AP5 C5F AP5:AC5* AP5 C4F AP5:AC4* AP5 O4F AP5:AO4* AP5 C3F AP5:AC3* AP5 O3F AP5:AO3* AP5 C2F AP5:AC2* AP5 O2F AP5:AO2* AP5 C1F AP5:AC1* AP5 N9A AP5: AN9 AP5 C8A AP5: AC8 AP5 N7A AP5: AN7 AP5 C5A AP5: AC5 AP5 C6A AP5: AC6 AP5 N6A AP5: AN6 AP5 N1A AP5: AN1 AP5 C2A AP5: AC2 AP5 N3A AP5: AN3 AP5 C4A AP5: AC4 AP5 O5J AP5:BO5* AP5 C5J AP5:BC5* AP5 C4J AP5:BC4* AP5 O4J AP5:BO4* AP5 C3J AP5:BC3* AP5 O3J AP5:BO3* AP5 C2J AP5:BC2* AP5 O2J AP5:BO2* AP5 C1J AP5:BC1* AP5 N9B AP5: BN9 AP5 C8B AP5: BC8 AP5 N7B AP5: BN7 AP5 C5B AP5: BC5 AP5 C6B AP5: BC6 AP5 N6B AP5: BN6 AP5 N1B AP5: BN1 AP5 C2B AP5: BC2 AP5 N3B AP5: BN3 AP5 C4B AP5: BC4 AP5 C1' AP7: C1* AP7 C2' AP7: C2* AP7 O2' AP7: O2* AP7 C3' AP7: C3* AP7 O3' AP7: O3* AP7 C4' AP7: C4* AP7 O4' AP7: O4* AP7 C5' AP7: C5* AP7 O5' AP7: O5* AP7 OP1 AP7: O1P AP7 OP2 AP7: O2P AP7 OP3 AP7: O3P AP7 O5' APC: O5* APC C5' APC: C5* APC C4' APC: C4* APC O4' APC: O4* APC C3' APC: C3* APC O3' APC: O3* APC C2' APC: C2* APC O2' APC: O2* APC C1' APC: C1* APC O5' APK: O5* APK C5' APK: C5* APK C4' APK: C4* APK O4' APK: O4* APK C3' APK: C3* APK O3' APK: O3* APK C2' APK: C2* APK O2' APK: O2* APK C1' APK: C1* APK C1' APR: C1* APR C2' APR: C2* APR O2' APR: O2* APR C3' APR: C3* APR O3' APR: O3* APR O4' APR: O4* APR C4' APR: C4* APR C5' APR: C5* APR O5' APR: O5* APR O5D APR:RO5* APR C5D APR:RC5* APR O4D APR:RO4* APR O1D APR:RO1* APR C1D APR:RC1* APR O2D APR:RO2* APR C2D APR:RC2* APR O3D APR:RO3* APR C3D APR:RC3* APR C4D APR:RC4* APR PA APU: AP APU O1A APU: AO1 APU O2A APU: AO2 APU O5B APU:AO5* APU C5B APU:AC5* APU C4B APU:AC4* APU O4B APU:AO4* APU C3B APU:AC3* APU O3B APU:AO3* APU C2B APU:AC2* APU O2B APU:AO2* APU C1B APU:AC1* APU N9A APU: AN9 APU C8A APU: AC8 APU N7A APU: AN7 APU C5A APU: AC5 APU C6A APU: AC6 APU N6A APU: AN6 APU N1A APU: AN1 APU C2A APU: AC2 APU N3A APU: AN3 APU C4A APU: AC4 APU N1U APU: UN1 APU C2U APU: UC2 APU O2U APU: UO2 APU N3U APU: UN3 APU C4U APU: UC4 APU O4U APU: UO4 APU C5U APU: UC5 APU C6U APU: UC6 APU C1D APU:UC1* APU C2D APU:UC2* APU O2D APU:UO2* APU C3D APU:UC3* APU O3D APU:UO3* APU C4D APU:UC4* APU O4D APU:UO4* APU O5D APU:UO5* APU C5D APU:UC5* APU PU APU: UP APU O1X APU:UO1P APU O2X APU:UO2P APU O3X APU:UO3P APU O5' APW: O5* APW C5' APW: C5* APW C4' APW: C4* APW C3' APW: C3* APW O3' APW: O3* APW C2' APW: C2* APW O2' APW: O2* APW C1' APW: C1* APW O4' APW: O4* APW C1' AQP: C1* AQP O4' AQP: O4* AQP C4' AQP: C4* AQP C5' AQP: C5* AQP O5' AQP: O5* AQP C3' AQP: C3* AQP O3' AQP: O3* AQP C2' AQP: C2* AQP O2' AQP: O2* AQP OXT AR4: O AR4 O5' AR4: O5* AR4 C5' AR4: C5* AR4 C4' AR4: C4* AR4 O4' AR4: O4* AR4 C1' AR4: C1* AR4 C2' AR4: C2* AR4 F2' AR4: F2* AR4 C3' AR4: C3* AR4 O3' AR4: O3* AR4 O AR4: O1 AR4 O2' AR4: O2* AR4 OP1 AS: O1P AS OP3 AS: O3P AS O5' AS: O5* AS C5' AS: C5* AS C4' AS: C4* AS O4' AS: O4* AS C3' AS: C3* AS O3' AS: O3* AS C2' AS: C2* AS C1' AS: C1* AS OP1 ASU: O1P ASU OP2 ASU: O2P ASU OP3 ASU: O3P ASU O5' ASU: O5* ASU S4' ASU: S4* ASU O1' ASU: O1* ASU C2' ASU: C2* ASU C5' ASU: C5* ASU C4' ASU: C4* ASU C1' ASU: C1* ASU C3' ASU: C3* ASU O3' ASU: O3* ASU XD1 ASX: AD1 ASX XD2 ASX: AD2 ASX O5' AT4: O5* AT4 C5' AT4: C5* AT4 C4' AT4: C4* AT4 O4' AT4: O4* AT4 C3' AT4: C3* AT4 O3' AT4: O3* AT4 C2' AT4: C2* AT4 C1' AT4: C1* AT4 O2' AT4: O2* AT4 ND ATA: N" ATA CAD ATA: CA" ATA CD ATA: C" ATA OD ATA: O" ATA OT' ATA: OT" ATA O5' ATB: O5* ATB C5' ATB: C5* ATB C4' ATB: C4* ATB O4' ATB: O4* ATB C3' ATB: C3* ATB O3' ATB: O3* ATB C2' ATB: C2* ATB C1' ATB: C1* ATB OCB ATB:OC47 ATB OCF ATB:OC51 ATB OCJ ATB:OC55 ATB OP1 ATD: O1P ATD OP2 ATD: O2P ATD OP3 ATD: O3P ATD O5' ATD: O5* ATD C5' ATD: C5* ATD C4' ATD: C4* ATD O4' ATD: O4* ATD C3' ATD: C3* ATD O3' ATD: O3* ATD C2' ATD: C2* ATD C1' ATD: C1* ATD O5' ATF: O5* ATF C5' ATF: C5* ATF C4' ATF: C4* ATF O4' ATF: O4* ATF C3' ATF: C3* ATF O3' ATF: O3* ATF C2' ATF: C2* ATF O2' ATF: O2* ATF C1' ATF: C1* ATF O5' ATG: O5* ATG C5' ATG: C5* ATG C4' ATG: C4* ATG O4' ATG: O4* ATG C3' ATG: C3* ATG O3' ATG: O3* ATG C2' ATG: C2* ATG O2' ATG: O2* ATG C1' ATG: C1* ATG OP1 ATL: O1P ATL OP2 ATL: O2P ATL O5' ATL: O5* ATL C5' ATL: C5* ATL C4' ATL: C4* ATL O4' ATL: O4* ATL C3' ATL: C3* ATL O3' ATL: O3* ATL C2' ATL: C2* ATL O2' ATL: O2* ATL C1' ATL: C1* ATL C6' ATL: C6* ATL OP1 ATM: O1P ATM OP2 ATM: O2P ATM OP3 ATM: O3P ATM O5' ATM: O5* ATM C5' ATM: C5* ATM C4' ATM: C4* ATM O4' ATM: O4* ATM C3' ATM: C3* ATM N3' ATM: N3* ATM N4' ATM: N4* ATM N5' ATM: N5* ATM C2' ATM: C2* ATM C1' ATM: C1* ATM O5' ATP: O5* ATP C5' ATP: C5* ATP C4' ATP: C4* ATP O4' ATP: O4* ATP C3' ATP: C3* ATP O3' ATP: O3* ATP C2' ATP: C2* ATP O2' ATP: O2* ATP C1' ATP: C1* ATP O5' ATR: O5* ATR C5' ATR: C5* ATR C4' ATR: C4* ATR O4' ATR: O4* ATR C3' ATR: C3* ATR O3' ATR: O3* ATR C2' ATR: C2* ATR O2' ATR: O2* ATR P2' ATR: P2* ATR C1' ATR: C1* ATR O5' ATY: O5* ATY C5' ATY: C5* ATY C4' ATY: C4* ATY O4' ATY: O4* ATY C3' ATY: C3* ATY O3' ATY: O3* ATY C2' ATY: C2* ATY C1' ATY: C1* ATY O5' AV2: O5* AV2 C5' AV2: C5* AV2 C4' AV2: C4* AV2 O4' AV2: O4* AV2 C3' AV2: C3* AV2 O3' AV2: O3* AV2 C2' AV2: C2* AV2 O2' AV2: O2* AV2 C1' AV2: C1* AV2 OP3 AVC: O3P AVC OP1 AVC: O1P AVC OP2 AVC: O2P AVC O5' AVC: O5* AVC C5' AVC: C5* AVC C4' AVC: C4* AVC O4' AVC: O4* AVC C3' AVC: C3* AVC O3' AVC: O3* AVC C2' AVC: C2* AVC O2' AVC: O2* AVC C1' AVC: C1* AVC O5' AZD: O5* AZD C5' AZD: C5* AZD C4' AZD: C4* AZD O4' AZD: O4* AZD C3' AZD: C3* AZD N3' AZD: N3* AZD N4' AZD: N4* AZD N5' AZD: N5* AZD C2' AZD: C2* AZD C1' AZD: C1* AZD O5' AZT: O5* AZT C5' AZT: C5* AZT C4' AZT: C4* AZT O4' AZT: O4* AZT C3' AZT: C3* AZT N3' AZT: N3* AZT N4' AZT: N4* AZT N5' AZT: N5* AZT C2' AZT: C2* AZT C1' AZT: C1* AZT OP3 B1P: O3P B1P OP1 B1P: O1P B1P OP2 B1P: O2P B1P O5' B1P: O5* B1P C5' B1P: C5* B1P C4' B1P: C4* B1P O4' B1P: O4* B1P C1' B1P: C1* B1P O1' B1P: O1* B1P C2' B1P: C2* B1P C3' B1P: C3* B1P O3' B1P: O3* B1P O5E B4P:AO5* B4P C5E B4P:AC5* B4P C4E B4P:AC4* B4P O4E B4P:AO4* B4P C3E B4P:AC3* B4P O3E B4P:AO3* B4P C2E B4P:AC2* B4P O2E B4P:AO2* B4P C1E B4P:AC1* B4P N9A B4P: AN9 B4P C8A B4P: AC8 B4P N7A B4P: AN7 B4P C5A B4P: AC5 B4P C6A B4P: AC6 B4P N6A B4P: AN6 B4P N1A B4P: AN1 B4P C2A B4P: AC2 B4P N3A B4P: AN3 B4P C4A B4P: AC4 B4P O5F B4P:BO5* B4P C5F B4P:BC5* B4P C4F B4P:BC4* B4P O4F B4P:BO4* B4P C3F B4P:BC3* B4P O3F B4P:BO3* B4P C2F B4P:BC2* B4P O2F B4P:BO2* B4P C1F B4P:BC1* B4P N9B B4P: BN9 B4P C8B B4P: BC8 B4P N7B B4P: BN7 B4P C5B B4P: BC5 B4P C6B B4P: BC6 B4P N6B B4P: BN6 B4P N1B B4P: BN1 B4P C2B B4P: BC2 B4P N3B B4P: BN3 B4P C4B B4P: BC4 B4P C1A B9A: AC1 B9A C2A B9A: AC2 B9A C3A B9A: AC3 B9A C4A B9A: AC4 B9A C5A B9A: AC5 B9A C6A B9A: AC6 B9A C7A B9A: AC7 B9A C8A B9A: AC8 B9A C9A B9A: AC9 B9A N9A B9A: AN9 B9A NAA B9A:AN10 B9A CBA B9A:AC11 B9A CCA B9A:AC12 B9A CDA B9A:AC13 B9A CEA B9A:AC14 B9A C1B B9A: BC1 B9A C2B B9A: BC2 B9A C3B B9A: BC3 B9A C4B B9A: BC4 B9A C5B B9A: BC5 B9A C6B B9A: BC6 B9A C7B B9A: BC7 B9A C8B B9A: BC8 B9A C9B B9A: BC9 B9A NAB B9A:BN10 B9A CBB B9A:BC11 B9A CCB B9A:BC12 B9A CDB B9A:BC13 B9A CEB B9A:BC14 B9A N9B B9A: BN9 B9A OAC BA1:2O1A BA1 C1B BA1: C1" BA1 OBC BA1:2O1B BA1 C2B BA1: C2" BA1 C3B BA1: C3" BA1 C4B BA1: C4" BA1 O4' BA1: O4" BA1 C5B BA1: C5" BA1 C6B BA1: C6" BA1 O6' BA1: O6" BA1 C7B BA1: C7" BA1 C8' BA1: C8" BA1 O8' BA1: O8" BA1 C9' BA1: C9" BA1 CXU BA1:2C10 BA1 OXU BA1:2O10 BA1 CX4 BA1:2C11 BA1 CXE BA1:2C12 BA1 CXO BA1:2C13 BA1 CXY BA1:2C14 BA1 CX8 BA1:2C15 BA1 OX8 BA1:2O15 BA1 OXI BA1:2O16 BA1 C1' BA2: C1* BA2 C2' BA2: C2* BA2 O2' BA2: O2* BA2 C3' BA2: C3* BA2 O3' BA2: O3* BA2 C4' BA2: C4* BA2 O4' BA2: O4* BA2 C5' BA2: C5* BA2 CAA BC:C10A BC CEA BC:C14A BC CEB BC:C14B BC CEC BC:C14C BC N1A BCA: AN1 BCA C2A BCA: AC2 BCA N3A BCA: AN3 BCA C4A BCA: AC4 BCA C5A BCA: AC5 BCA C6A BCA: AC6 BCA N6A BCA: AN6 BCA N7A BCA: AN7 BCA C8A BCA: AC8 BCA N9A BCA: AN9 BCA C1D BCA:AC1* BCA C2D BCA:AC2* BCA O2D BCA:AO2* BCA C3D BCA:AC3* BCA O3D BCA:AO3* BCA P3D BCA:AP3* BCA O7A BCA: AO7 BCA O8A BCA: AO8 BCA O9A BCA: AO9 BCA C4D BCA:AC4* BCA O4D BCA:AO4* BCA C5D BCA:AC5* BCA O5D BCA:AO5* BCA P1A BCA: AP1 BCA O1A BCA: AO1 BCA O2A BCA: AO2 BCA O3A BCA: AO3 BCA P2A BCA: AP2 BCA O4A BCA: AO4 BCA O5A BCA: AO5 BCA O6A BCA: AO6 BCA CBP BCA:PC11 BCA CCP BCA:PC12 BCA CDP BCA:PC13 BCA CEP BCA:PC14 BCA CAP BCA:PC10 BCA OAP BCA:PO10 BCA C9P BCA: PC9 BCA O9P BCA: PO9 BCA N8P BCA: PN8 BCA C7P BCA: PC7 BCA C6P BCA: PC6 BCA C5P BCA: PC5 BCA O5P BCA: PO5 BCA N4P BCA: PN4 BCA C3P BCA: PC3 BCA C2P BCA: PC2 BCA S1P BCA: PS1 BCA C1B BCA: BC1 BCA O1B BCA: BO1 BCA C2B BCA: BC2 BCA C3B BCA: BC3 BCA C4B BCA: BC4 BCA C5B BCA: BC5 BCA O2B BCA: BO2 BCA C6B BCA: BC6 BCA C7B BCA: BC7 BCA NA BCB: N_A BCB NB BCB: N_B BCB NC BCB: N_C BCB ND BCB: N_D BCB NA BCL: N_A BCL NB BCL: N_B BCL NC BCL: N_C BCL ND BCL: N_D BCL C1' BDA: C1* BDA C2' BDA: C2* BDA C3' BDA: C3* BDA N3' BDA: N3* BDA C4' BDA: C4* BDA O4' BDA: O4* BDA C5' BDA: C5* BDA O5' BDA: O5* BDA C6' BDA: C6* BDA C7' BDA: C7* BDA C8' BDA: C8* BDA C1B BDA:'C1 BDA C2B BDA:'C2 BDA C3B BDA:'C3 BDA C4B BDA:'C4 BDA O4B BDA:'O4 BDA C5B BDA:'C5 BDA C6B BDA:'C6 BDA O6' BDA:'O6 BDA C7B BDA:'C7 BDA C8B BDA:'C8 BDA O8' BDA:'O8 BDA C9' BDA:'C9 BDA CA' BDA:'C10 BDA OA' BDA:'O10 BDA CB' BDA:'C11 BDA CC' BDA:'C12 BDA OC' BDA:'O12 BDA CD' BDA:'C13 BDA OD' BDA:'O13 BDA CE' BDA:'C14 BDA CF' BDA:'C15 BDA CG' BDA:'C16 BDA CH' BDA:'C17 BDA OH' BDA:'O17 BDA CI' BDA:'C18 BDA CJ' BDA:'C19 BDA OJ' BDA:'O19 BDA CK' BDA:'C20 BDA CL' BDA:'C21 BDA C1D BDA:'C1* BDA C2D BDA:'C2* BDA C3D BDA:'C3* BDA N3D BDA:'N3* BDA C4D BDA:'C4* BDA O4D BDA:'O4* BDA C5D BDA:'C5* BDA O5D BDA:'O5* BDA C6D BDA:'C6* BDA C7D BDA:'C7* BDA C8D BDA:'C8* BDA C1A BDA:'C9A BDA C1C BDA:'C9B BDA CF4 BDC:'CE4 BDC CF3 BDC:'CE3 BDC CF2 BDC:'CE2 BDC CF1 BDC:'CE1 BDC N9' BDC:'N9 BDC C5' BDC:'C5 BDC C6' BDC:'C6 BDC C7' BDC:'C7 BDC C8' BDC:'C8 BDC C9' BDC:'C9 BDC C1' BDC:'C1 BDC C2' BDC:'C2 BDC C3' BDC:'C3 BDC C4' BDC:'C4 BDC CE' BDC:'C14 BDC CD' BDC:'C13 BDC CB' BDC:'C11 BDC CC' BDC:'C12 BDC NA' BDC:'N10 BDC CB1 BDC:'CD1 BDC O1X BDC:'OD1 BDC NB1 BDC:'ND1 BDC CB2 BDC:'CD2 BDC CB3 BDC:'CD3 BDC NB2 BDC:'ND2 BDC CB7 BDC:'CD7 BDC CB8 BDC:'CD8 BDC OXV BDM:1O21 BDM OXW BDM:2O21 BDM OX5 BDM:1O22 BDM OX6 BDM:2O22 BDM OP1 BGM: O1P BGM OP2 BGM: O2P BGM O5' BGM: O5* BGM C5' BGM: C5* BGM C4' BGM: C4* BGM O4' BGM: O4* BGM C1' BGM: C1* BGM C2' BGM: C2* BGM C3' BGM: C3* BGM O3' BGM: O3* BGM OP3 BGM: O3P BGM C2' BGS: C2* BGS O2' BGS: O2* BGS O1' BGS: O1* BGS O5' BIS: O5* BIS C5' BIS: C5* BIS C4' BIS: C4* BIS O4' BIS: O4* BIS C3' BIS: C3* BIS O3' BIS: O3* BIS C2' BIS: C2* BIS O2' BIS: O2* BIS C1' BIS: C1* BIS N1' BIZ: *N1 BIZ C2' BIZ: *C2 BIZ C3' BIZ: *C3 BIZ C4' BIZ: *C4 BIZ C5' BIZ: *C5 BIZ C6' BIZ: *C6 BIZ C7' BIZ: *C7 BIZ N8' BIZ: *N8 BIZ C9' BIZ: *C9 BIZ CA' BIZ:*C10 BIZ CB' BIZ:*C11 BIZ OC' BIZ:*O12 BIZ ND' BIZ:*N13 BIZ CE' BIZ:*C14 BIZ CF' BIZ:*C15 BIZ CG' BIZ:*C16 BIZ CH' BIZ:*C17 BIZ CI' BIZ:*C18 BIZ CJ' BIZ:*C19 BIZ CK' BIZ:*C20 BIZ OL' BIZ:*O21 BIZ CM' BIZ:*C22 BIZ CN' BIZ:*C23 BIZ CO' BIZ:*C24 BIZ CP' BIZ:*C25 BIZ CQ' BIZ:*C26 BIZ NR' BIZ:*N27 BIZ NA BLA: N_A BLA NB BLA: N_B BLA OB BLA: O_B BLA NC BLA: N_C BLA OC BLA: O_C BLA ND BLA: N_D BLA C6B BLI: C6* BLI C1B BLI: C1* BLI C2B BLI: C2* BLI C3B BLI: C3* BLI C4B BLI: C4* BLI C5B BLI: C5* BLI C1' BLS: C1* BLS C2' BLS: C2* BLS C3' BLS: C3* BLS C4' BLS: C4* BLS C5' BLS: C5* BLS O5' BLS: O5* BLS C6' BLS: C6* BLS NA BLV: N_A BLV OA BLV: O_A BLV NB BLV: N_B BLV NC BLV: N_C BLV ND BLV: N_D BLV OD BLV: O_D BLV OP1 BMP: O1P BMP OP2 BMP: O2P BMP OP3 BMP: O3P BMP O5' BMP: O5* BMP C5' BMP: C5* BMP C4' BMP: C4* BMP O4' BMP: O4* BMP C3' BMP: C3* BMP O3' BMP: O3* BMP C2' BMP: C2* BMP O2' BMP: O2* BMP C1' BMP: C1* BMP O5' BMQ: O5* BMQ C5' BMQ: C5* BMQ C4' BMQ: C4* BMQ O4' BMQ: O4* BMQ C3' BMQ: C3* BMQ O3' BMQ: O3* BMQ C2' BMQ: C2* BMQ O2' BMQ: O2* BMQ C1' BMQ: C1* BMQ O1' BMY: O1" BMY C2B BMY: C2" BMY C3B BMY: C3" BMY C4B BMY: C4" BMY C5B BMY: C5" BMY C6' BMY: C6" BMY C7B BMY: C7" BMY O8' BMY: O8" BMY O9B BMY: O9" BMY C11 BNA:AC4A BNA C12 BNA:AC8A BNA C13 BNA:AC4B BNA C14 BNA:AC8B BNA C1' BNR: C1* BNR C2' BNR: C2* BNR C3' BNR: C3* BNR O3' BNR: O3* BNR C4' BNR: C4* BNR N4' BNR: N4* BNR C5' BNR: C5* BNR O5' BNR: O5* BNR C6' BNR: C6* BNR C7' BNR: C7* BNR C8' BNR: C8* BNR C1B BNR:'C1 BNR C2B BNR:'C2 BNR C3B BNR:'C3 BNR C4B BNR:'C4 BNR O4' BNR:'O4 BNR C5B BNR:'C5 BNR C6B BNR:'C6 BNR O6' BNR:'O6 BNR C7B BNR:'C7 BNR C8B BNR:'C8 BNR O8' BNR:'O8 BNR C9' BNR:'C9 BNR CA' BNR:'C10 BNR OA' BNR:'O10 BNR CB' BNR:'C11 BNR CC' BNR:'C12 BNR OC' BNR:'O12 BNR CD' BNR:'C13 BNR OD' BNR:'O13 BNR CE' BNR:'C14 BNR CF' BNR:'C15 BNR CG' BNR:'C16 BNR CH' BNR:'C17 BNR OH' BNR:'O17 BNR CI' BNR:'C18 BNR CJ' BNR:'C19 BNR OJ' BNR:'O19 BNR CK' BNR:'C20 BNR CL' BNR:'C21 BNR C1D BNR:'C1* BNR C2D BNR:'C2* BNR C3D BNR:'C3* BNR O3D BNR:'O3* BNR C4D BNR:'C4* BNR N4D BNR:'N4* BNR C5D BNR:'C5* BNR O5D BNR:'O5* BNR C6D BNR:'C6* BNR C7D BNR:'C7* BNR C8D BNR:'C8* BNR C1A BNR:'C9A BNR C1C BNR:'C9B BNR OP1 BOE: O1P BOE OP2 BOE: O2P BOE O5' BOE: O5* BOE C5' BOE: C5* BOE C4' BOE: C4* BOE O4' BOE: O4* BOE C1' BOE: C1* BOE C2' BOE: C2* BOE O2' BOE: O2* BOE C3' BOE: C3* BOE O3' BOE: O3* BOE OP3 BOE: O3P BOE NA BPB: N_A BPB NB BPB: N_B BPB NC BPB: N_C BPB ND BPB: N_D BPB C3' BPG: C3* BPG O3' BPG: O3* BPG C2' BPG: C2* BPG C1' BPG: C1* BPG NA BPH: N_A BPH NB BPH: N_B BPH NC BPH: N_C BPH ND BPH: N_D BPH CXA BPS:CX10 BPS CXB BPS:CX11 BPS CXC BPS:CX12 BPS CKA BPY:CK10 BPY CKB BPY:CK11 BPY CKC BPY:CK12 BPY C1' BRU: C1* BRU C2' BRU: C2* BRU C3' BRU: C3* BRU C4' BRU: C4* BRU O3' BRU: O3* BRU O4' BRU: O4* BRU C5' BRU: C5* BRU O5' BRU: O5* BRU OP1 BRU: O1P BRU OP2 BRU: O2P BRU OP3 BRU: O3P BRU C1B BSP: C1* BSP C2B BSP: C2* BSP C3B BSP: C3* BSP C4B BSP: C4* BSP C5B BSP: C5* BSP C6B BSP: C6* BSP O4B BSP: O4* BSP S1B BSP: S1* BSP N1' BT4: N1* BT4 C2' BT4: C2* BT4 C1' BT4: C1* BT4 C4' BT4: C4* BT4 C3' BT4: C3* BT4 O3' BT4: O3* BT4 C5' BT4: C5* BT4 C6' BT4: C6* BT4 C7' BT4: C7* BT4 C8' BT4: C8* BT4 C9' BT4: C9* BT4 CBB BT5:C11B BT5 OBB BT5:O11B BT5 OCB BT5:O12B BT5 CAB BT5:C10B BT5 OP1 BT5: O1P BT5 OP2 BT5: O2P BT5 O5' BT5: O5* BT5 C5' BT5: C5* BT5 C4' BT5: C4* BT5 O4' BT5: O4* BT5 C3' BT5: C3* BT5 O3' BT5: O3* BT5 C2' BT5: C2* BT5 O2' BT5: O2* BT5 C1' BT5: C1* BT5 O5' BTD: O5* BTD C5' BTD: C5* BTD C4' BTD: C4* BTD O4' BTD: O4* BTD C1' BTD: C1* BTD C2' BTD: C2* BTD C3' BTD: C3* BTD O3' BTD: O3* BTD C' BTP: C* BTP S' BTP: S* BTP O5' BTX: O5* BTX C5' BTX: C5* BTX C4' BTX: C4* BTX O4' BTX: O4* BTX C3' BTX: C3* BTX O3' BTX: O3* BTX C2' BTX: C2* BTX O2' BTX: O2* BTX C1' BTX: C1* BTX CBB BTX:C11B BTX OBB BTX:O11B BTX CAB BTX:C10B BTX O5' BVD: O5* BVD C5' BVD: C5* BVD C4' BVD: C4* BVD O4' BVD: O4* BVD C1' BVD: C1* BVD C2' BVD: C2* BVD C3' BVD: C3* BVD O3' BVD: O3* BVD O3' BVP: O3* BVP C3' BVP: C3* BVP C2' BVP: C2* BVP C1' BVP: C1* BVP O4' BVP: O4* BVP C4' BVP: C4* BVP C5' BVP: C5* BVP O5' BVP: O5* BVP O5' BZG: O5* BZG CT' BZG: CT* BZG OS' BZG: OS* BZG CP' BZG: CP* BZG C5' BZG: C5* BZG C4' BZG: C4* BZG C3' BZG: C3* BZG O3' BZG: O3* BZG OP3 C: O3P C OP1 C: O1P C OP2 C: O2P C O5' C: O5* C C5' C: C5* C C4' C: C4* C O4' C: O4* C C3' C: C3* C O3' C: O3* C C2' C: C2* C O2' C: O2* C C1' C: C1* C CVX C1B:C31' C1B CWX C1B:C32' C1B OXX C1B:O33' C1B OYX C1B:O34' C1B C6X C1B:C42' C1B C7X C1B:C43' C1B O8X C1B:O44' C1B O9X C1B:O45' C1B C1B C1B:C1'' C1B C2B C1B:C2'' C1B C3B C1B:C3'' C1B C4B C1B:C4'' C1B C5B C1B:C5'' C1B C6B C1B:C6'' C1B O2B C1B:O2'' C1B OP3 C25: O3P C25 OP1 C25: O1P C25 OP2 C25: O2P C25 O5' C25: O5* C25 C5' C25: C5* C25 C4' C25: C4* C25 O4' C25: O4* C25 C3' C25: C3* C25 O3' C25: O3* C25 C2' C25: C2* C25 O2' C25: O2* C25 C1' C25: C1* C25 C1' C2G: C1* C2G C2' C2G: C2* C2G O2' C2G: O2* C2G C3' C2G: C3* C2G C4' C2G: C4* C2G O4' C2G: O4* C2G O3' C2G: O3* C2G C5' C2G: C5* C2G O5' C2G: O5* C2G OP3 C2L: O3P C2L OP1 C2L: O1P C2L OP2 C2L: O2P C2L O5' C2L: O5* C2L C5' C2L: C5* C2L C4' C2L: C4* C2L O4' C2L: O4* C2L C3' C2L: C3* C2L O3' C2L: O3* C2L C2' C2L: C2* C2L O2' C2L: O2* C2L C1' C2L: C1* C2L CA' C2L: CA* C2L CB' C2L: CB* C2L OC' C2L: OC* C2L CD' C2L: CD* C2L C1' C2P: C1* C2P C2' C2P: C2* C2P O2' C2P: O2* C2P C3' C2P: C3* C2P C4' C2P: C4* C2P O4' C2P: O4* C2P O3' C2P: O3* C2P C5' C2P: C5* C2P O5' C2P: O5* C2P O5' C2R: O5* C2R C2' C2R: C2* C2R O2' C2R: O2* C2R C3' C2R: C3* C2R O3' C2R: O3* C2R C5' C2R: C5* C2R C4' C2R: C4* C2R O4' C2R: O4* C2R C1' C2R: C1* C2R OP3 C2S: O3P C2S O5' C2S: O5* C2S C5' C2S: C5* C2S C4' C2S: C4* C2S O4' C2S: O4* C2S C3' C2S: C3* C2S O3' C2S: O3* C2S C2' C2S: C2* C2S C1' C2S: C1* C2S O5' C31: O5* C31 C5' C31: C5* C31 C4' C31: C4* C31 O4' C31: O4* C31 C3' C31: C3* C31 O3' C31: O3* C31 C2' C31: C2* C31 O2' C31: O2* C31 C1' C31: C1* C31 CA' C31: CA* C31 CB' C31: CB* C31 ND' C31: ND* C31 O5' C32: O5* C32 C5' C32: C5* C32 C4' C32: C4* C32 O4' C32: O4* C32 C3' C32: C3* C32 O3' C32: O3* C32 C2' C32: C2* C32 C1' C32: C1* C32 OP1 C34: O1P C34 OP2 C34: O2P C34 OP3 C34: O3P C34 O5' C34: O5* C34 C5' C34: C5* C34 C4' C34: C4* C34 O4' C34: O4* C34 C1' C34: C1* C34 C2' C34: C2* C34 C3' C34: C3* C34 O3' C34: O3* C34 O5' C36: O5* C36 C5' C36: C5* C36 C4' C36: C4* C36 O4' C36: O4* C36 C3' C36: C3* C36 O3' C36: O3* C36 C2' C36: C2* C36 C1' C36: C1* C36 O5' C37: O5* C37 C5' C37: C5* C37 C4' C37: C4* C37 O4' C37: O4* C37 C3' C37: C3* C37 O3' C37: O3* C37 C2' C37: C2* C37 C1' C37: C1* C37 O5' C38: O5* C38 C5' C38: C5* C38 C4' C38: C4* C38 O4' C38: O4* C38 C3' C38: C3* C38 O3' C38: O3* C38 C2' C38: C2* C38 C1' C38: C1* C38 O5' C3P: O5* C3P C5' C3P: C5* C3P C4' C3P: C4* C3P O4' C3P: O4* C3P C3' C3P: C3* C3P O3' C3P: O3* C3P C2' C3P: C2* C3P O2' C3P: O2* C3P C1' C3P: C1* C3P C1' C42: C1* C42 C2' C42: C2* C42 C3' C42: C3* C42 C4' C42: C4* C42 O4' C42: O4* C42 C5' C42: C5* C42 O5' C42: O5* C42 O5' C43: O5* C43 C5' C43: C5* C43 C4' C43: C4* C43 O4' C43: O4* C43 C3' C43: C3* C43 O3' C43: O3* C43 C2' C43: C2* C43 O2' C43: O2* C43 C1' C43: C1* C43 CA' C43: CA* C43 CB' C43: CB* C43 CD' C43: CD* C43 OC' C43: OC* C43 C1' C45: C1* C45 C2' C45: C2* C45 C3' C45: C3* C45 C4' C45: C4* C45 O4' C45: O4* C45 O3' C45: O3* C45 C5' C45: C5* C45 O5' C45: O5* C45 O5' C46: O5* C46 C5' C46: C5* C46 C4' C46: C4* C46 O4' C46: O4* C46 C3' C46: C3* C46 O3' C46: O3* C46 C2' C46: C2* C46 C1' C46: C1* C46 O5' C49: O5* C49 C5' C49: C5* C49 C4' C49: C4* C49 O4' C49: O4* C49 C3' C49: C3* C49 O3' C49: O3* C49 C2' C49: C2* C49 C1' C49: C1* C49 C1D C5G: C1* C5G C2D C5G: C2* C5G O2D C5G: O2* C5G C3D C5G: C3* C5G C4D C5G: C4* C5G O4D C5G: O4* C5G O3D C5G: O3* C5G C5D C5G: C5* C5G O5D C5G: O5* C5G O5' C5P: O5* C5P C5' C5P: C5* C5P C4' C5P: C4* C5P O4' C5P: O4* C5P C3' C5P: C3* C5P O3' C5P: O3* C5P C2' C5P: C2* C5P O2' C5P: O2* C5P C1' C5P: C1* C5P C11 CA3:0CT1 CA3 C11 CA5:0CT1 CA5 N1A CAA: AN1 CAA C2A CAA: AC2 CAA N3A CAA: AN3 CAA C4A CAA: AC4 CAA C5A CAA: AC5 CAA C6A CAA: AC6 CAA N6A CAA: AN6 CAA N7A CAA: AN7 CAA C8A CAA: AC8 CAA N9A CAA: AN9 CAA C1B CAA:AC1* CAA C2B CAA:AC2* CAA O2B CAA:AO2* CAA C3B CAA:AC3* CAA O3B CAA:AO3* CAA P3B CAA:AP3* CAA O7A CAA: AO7 CAA O8A CAA: AO8 CAA O9A CAA: AO9 CAA C4B CAA:AC4* CAA O4B CAA:AO4* CAA C5B CAA:AC5* CAA O5B CAA:AO5* CAA P1A CAA: AP1 CAA O1A CAA: AO1 CAA O2A CAA: AO2 CAA O3A CAA: AO3 CAA P2A CAA: AP2 CAA O4A CAA: AO4 CAA O5A CAA: AO5 CAA O6A CAA: AO6 CAA CBP CAA:PC11 CAA CCP CAA:PC12 CAA CDP CAA:PC13 CAA CEP CAA:PC14 CAA CAP CAA:PC10 CAA OAP CAA:PO10 CAA C9P CAA: PC9 CAA O9P CAA: PO9 CAA N8P CAA: PN8 CAA C7P CAA: PC7 CAA C6P CAA: PC6 CAA C5P CAA: PC5 CAA O5P CAA: PO5 CAA N4P CAA: PN4 CAA C3P CAA: PC3 CAA C2P CAA: PC2 CAA S1P CAA: PS1 CAA O5' CAG: O5* CAG C5B CAG: C5* CAG C4B CAG: C4* CAG O4' CAG: O4* CAG C3B CAG: C3* CAG O3' CAG: O3* CAG C2B CAG: C2* CAG O2' CAG: O2* CAG C1B CAG: C1* CAG O'L CAG:1O2' CAG O'M CAG:2O2' CAG N1A CAO: AN1 CAO C2A CAO: AC2 CAO N3A CAO: AN3 CAO C4A CAO: AC4 CAO C5A CAO: AC5 CAO C6A CAO: AC6 CAO N6A CAO: AN6 CAO N7A CAO: AN7 CAO C8A CAO: AC8 CAO N9A CAO: AN9 CAO C1B CAO:AC1* CAO C2B CAO:AC2* CAO O2B CAO:AO2* CAO C3B CAO:AC3* CAO O3B CAO:AO3* CAO P3B CAO:AP3* CAO O7A CAO: AO7 CAO O8A CAO: AO8 CAO O9A CAO: AO9 CAO C4B CAO:AC4* CAO O4B CAO:AO4* CAO C5B CAO:AC5* CAO O5B CAO:AO5* CAO P1A CAO: AP1 CAO O1A CAO: AO1 CAO O2A CAO: AO2 CAO O3A CAO: AO3 CAO P2A CAO: AP2 CAO O4A CAO: AO4 CAO O5A CAO: AO5 CAO O6A CAO: AO6 CAO CBP CAO:PC11 CAO CCP CAO:PC12 CAO CDP CAO:PC13 CAO CEP CAO:PC14 CAO CAP CAO:PC10 CAO OAP CAO:PO10 CAO C9P CAO: PC9 CAO O9P CAO: PO9 CAO N8P CAO: PN8 CAO C7P CAO: PC7 CAO C6P CAO: PC6 CAO C5P CAO: PC5 CAO O5P CAO: PO5 CAO N4P CAO: PN4 CAO C3P CAO: PC3 CAO C2P CAO: PC2 CAO S1P CAO: PS1 CAO O1P CAO: PO1 CAO OP1 CAR: O1P CAR OP2 CAR: O2P CAR OP3 CAR: O3P CAR O5' CAR: O5* CAR C5' CAR: C5* CAR C4' CAR: C4* CAR O4' CAR: O4* CAR C3' CAR: C3* CAR O3' CAR: O3* CAR C2' CAR: C2* CAR O2' CAR: O2* CAR C1' CAR: C1* CAR CA' CAV: CA* CAV CB' CAV: CB* CAV O3' CB2: O3* CB2 C3' CB2: C3* CB2 C2' CB2: C2* CB2 O2' CB2: O2* CB2 C1' CB2: C1* CB2 O4' CB2: O4* CB2 C4' CB2: C4* CB2 C5' CB2: C5* CB2 O5' CB2: O5* CB2 OP1 CB2: O1P CB2 OP2 CB2: O2P CB2 OP3 CB2: O3P CB2 OP1 CBR: O1P CBR OP2 CBR: O2P CBR O5' CBR: O5* CBR C2' CBR: C2* CBR C5' CBR: C5* CBR C4' CBR: C4* CBR O4' CBR: O4* CBR C1' CBR: C1* CBR C3' CBR: C3* CBR O3' CBR: O3* CBR OP3 CBR: O3P CBR C1A CBS: AC1 CBS C2A CBS: AC2 CBS C3A CBS: AC3 CBS C4A CBS: AC4 CBS C5A CBS: AC5 CBS C6A CBS: AC6 CBS C7A CBS: AC7 CBS C8A CBS: AC8 CBS N2A CBS: AN2 CBS O1A CBS: AO1 CBS O3A CBS: AO3 CBS O4A CBS: AO4 CBS O5A CBS: AO5 CBS O6A CBS: AO6 CBS O7A CBS: AO7 CBS C1B CBS: BC1 CBS C2B CBS: BC2 CBS C3B CBS: BC3 CBS C4B CBS: BC4 CBS C5B CBS: BC5 CBS C6B CBS: BC6 CBS C7B CBS: BC7 CBS C8B CBS: BC8 CBS N2B CBS: BN2 CBS O1B CBS: BO1 CBS O3B CBS: BO3 CBS O5B CBS: BO5 CBS O6B CBS: BO6 CBS O7B CBS: BO7 CBS O5' CBV: O5* CBV C5' CBV: C5* CBV C4' CBV: C4* CBV O4' CBV: O4* CBV C3' CBV: C3* CBV O3' CBV: O3* CBV C2' CBV: C2* CBV O2' CBV: O2* CBV C1' CBV: C1* CBV OP1 CCC: O1P CCC OP2 CCC: O2P CCC OP3 CCC: O3P CCC O5' CCC: O5* CCC C5' CCC: C5* CCC C4' CCC: C4* CCC O4' CCC: O4* CCC C3' CCC: C3* CCC O3' CCC: O3* CCC C2' CCC: C2* CCC O2' CCC: O2* CCC C1' CCC: C1* CCC N1A CCF: AN1 CCF C2A CCF: AC2 CCF N3A CCF: AN3 CCF C4A CCF: AC4 CCF C5A CCF: AC5 CCF C6A CCF: AC6 CCF N6A CCF: AN6 CCF N7A CCF: AN7 CCF C8A CCF: AC8 CCF N9A CCF: AN9 CCF C1B CCF:AC1* CCF C2B CCF:AC2* CCF O2B CCF:AO2* CCF C3B CCF:AC3* CCF O3B CCF:AO3* CCF P3B CCF:AP3* CCF O7A CCF: AO7 CCF O8A CCF: AO8 CCF O9A CCF: AO9 CCF C4B CCF:AC4* CCF O4B CCF:AO4* CCF C5B CCF:AC5* CCF O5B CCF:AO5* CCF P1A CCF: AP1 CCF O1A CCF: AO1 CCF O2A CCF: AO2 CCF O3A CCF: AO3 CCF P2A CCF: AP2 CCF O4A CCF: AO4 CCF O5A CCF: AO5 CCF O6A CCF: AO6 CCF CBP CCF:PC11 CCF CCP CCF:PC12 CCF CDP CCF:PC13 CCF CEP CCF:PC14 CCF CAP CCF:PC10 CCF OAP CCF:PO10 CCF C9P CCF: PC9 CCF O9P CCF: PO9 CCF N8P CCF: PN8 CCF C7P CCF: PC7 CCF C6P CCF: PC6 CCF C5P CCF: PC5 CCF O5P CCF: PO5 CCF N4P CCF: PN4 CCF C3P CCF: PC3 CCF C2P CCF: PC2 CCF S1P CCF: PS1 CCF NA CCH: N_A CCH NB CCH: N_B CCH NC CCH: N_C CCH ND CCH: N_D CCH S1P CCQ: PS1 CCQ C2P CCQ: PC2 CCQ C3P CCQ: PC3 CCQ N4P CCQ: PN4 CCQ C5P CCQ: PC5 CCQ O5P CCQ: PO5 CCQ C6P CCQ: PC6 CCQ C7P CCQ: PC7 CCQ N8P CCQ: PN8 CCQ C9P CCQ: PC9 CCQ O9P CCQ: PO9 CCQ CAP CCQ:PC10 CCQ OAP CCQ:PO10 CCQ CBP CCQ:PC11 CCQ CDP CCQ:PC13 CCQ CEP CCQ:PC14 CCQ CCP CCQ:PC12 CCQ O6A CCQ: AO6 CCQ P2A CCQ: AP2 CCQ O4A CCQ: AO4 CCQ O5A CCQ: AO5 CCQ O3A CCQ: AO3 CCQ P1A CCQ: AP1 CCQ O1A CCQ: AO1 CCQ O2A CCQ: AO2 CCQ O5D CCQ:AO5* CCQ C5D CCQ:AC5* CCQ C4D CCQ:AC4* CCQ C3D CCQ:AC3* CCQ O3D CCQ:AO3* CCQ P3D CCQ:AP3* CCQ O7A CCQ: AO7 CCQ O8A CCQ: AO8 CCQ O9A CCQ: AO9 CCQ C2D CCQ:AC2* CCQ O2D CCQ:AO2* CCQ C1D CCQ:AC1* CCQ O4D CCQ:AO4* CCQ N9A CCQ: AN9 CCQ C4A CCQ: AC4 CCQ C5X CCQ: AC5 CCQ N7A CCQ: AN7 CCQ C8A CCQ: AC8 CCQ C6A CCQ: AC6 CCQ N6A CCQ: AN6 CCQ N1A CCQ: AN1 CCQ C2A CCQ: AC2 CCQ N3A CCQ: AN3 CCQ C1' CDC: C1* CDC C2' CDC: C2* CDC O2' CDC: O2* CDC C3' CDC: C3* CDC C4' CDC: C4* CDC O4' CDC: O4* CDC O3' CDC: O3* CDC C5' CDC: C5* CDC O5' CDC: O5* CDC O5' CDF: O5* CDF C5' CDF: C5* CDF C4' CDF: C4* CDF O4' CDF: O4* CDF C3' CDF: C3* CDF O3' CDF: O3* CDF C2' CDF: C2* CDF O2' CDF: O2* CDF C1' CDF: C1* CDF C1' CDM: C1* CDM C2' CDM: C2* CDM O2' CDM: O2* CDM C3' CDM: C3* CDM C4' CDM: C4* CDM O4' CDM: O4* CDM O3' CDM: O3* CDM C5' CDM: C5* CDM O5' CDM: O5* CDM C1' CDP: C1* CDP C2' CDP: C2* CDP O2' CDP: O2* CDP C3' CDP: C3* CDP C4' CDP: C4* CDP O4' CDP: O4* CDP O3' CDP: O3* CDP C5' CDP: C5* CDP O5' CDP: O5* CDP O5' CDY: O5* CDY C5' CDY: C5* CDY C4' CDY: C4* CDY O4' CDY: O4* CDY C3' CDY: C3* CDY C2' CDY: C2* CDY C1' CDY: C1* CDY O5' CFL: O5* CFL C5' CFL: C5* CFL C4' CFL: C4* CFL O4' CFL: O4* CFL C3' CFL: C3* CFL O3' CFL: O3* CFL C2' CFL: C2* CFL C1' CFL: C1* CFL N1A CFR: AN1 CFR C2A CFR: AC2 CFR N3A CFR: AN3 CFR C4A CFR: AC4 CFR C5A CFR: AC5 CFR C6A CFR: AC6 CFR N6A CFR: AN6 CFR N7A CFR: AN7 CFR C8A CFR: AC8 CFR N9A CFR: AN9 CFR C1B CFR:AC1* CFR C2B CFR:AC2* CFR O2B CFR:AO2* CFR C3B CFR:AC3* CFR O3B CFR:AO3* CFR P3B CFR:AP3* CFR O7A CFR: AO7 CFR O8A CFR: AO8 CFR O9A CFR: AO9 CFR C4B CFR:AC4* CFR O4B CFR:AO4* CFR C5B CFR:AC5* CFR O5B CFR:AO5* CFR P1A CFR: AP1 CFR O1A CFR: AO1 CFR O2A CFR: AO2 CFR O3A CFR: AO3 CFR P2A CFR: AP2 CFR O4A CFR: AO4 CFR O5A CFR: AO5 CFR O6A CFR: AO6 CFR CBP CFR:PC11 CFR CCP CFR:PC12 CFR CDP CFR:PC13 CFR CEP CFR:PC14 CFR CAP CFR:PC10 CFR OAP CFR:PO10 CFR C9P CFR: PC9 CFR O9P CFR: PO9 CFR N8P CFR: PN8 CFR C7P CFR: PC7 CFR C6P CFR: PC6 CFR C5P CFR: PC5 CFR O5P CFR: PO5 CFR N4P CFR: PN4 CFR C3P CFR: PC3 CFR C2P CFR: PC2 CFR S1P CFR: PS1 CFR CA' CG2: CA* CG2 CB' CG2: CB* CG2 OB' CG2: OB* CG2 CC' CG2: CC* CG2 OC' CG2: OC* CG2 CD' CG2: CD* CG2 OD' CG2: OD* CG2 CE' CG2: CE* CG2 OE' CG2: OE* CG2 O5' CG2: O5* CG2 C5' CG2: C5* CG2 C4' CG2: C4* CG2 O4' CG2: O4* CG2 C3' CG2: C3* CG2 O3' CG2: O3* CG2 C2' CG2: C2* CG2 O2' CG2: O2* CG2 C1' CG2: C1* CG2 O5B CGP:CO5* CGP C5X CGP:CC5* CGP C4X CGP:CC4* CGP O4B CGP:CO4* CGP C3X CGP:CC3* CGP O3B CGP:CO3* CGP C2X CGP:CC2* CGP C1X CGP:CC1* CGP N1C CGP: CN1 CGP N3C CGP: CN3 CGP O2C CGP: CO2 CGP N4C CGP: CN4 CGP O5D CGP:GO5* CGP C5D CGP:GC5* CGP C4D CGP:GC4* CGP O4D CGP:GO4* CGP C3D CGP:GC3* CGP O3D CGP:GO3* CGP C2D CGP:GC2* CGP C1D CGP:GC1* CGP N9G CGP: GN9 CGP C8G CGP: GC8 CGP N7G CGP: GN7 CGP C5G CGP: GC5 CGP C6G CGP: GC6 CGP O6G CGP: GO6 CGP N1G CGP: GN1 CGP C2G CGP: GC2 CGP N2G CGP: GN2 CGP N3G CGP: GN3 CGP C4G CGP: GC4 CGP O5'R CGR:RO5* CGR C5'R CGR:RC5* CGR C4'R CGR:RC4* CGR O4'R CGR:RO4* CGR C1'R CGR:RC1* CGR C2'R CGR:RC2* CGR O2'R CGR:RO2* CGR C3'R CGR:RC3* CGR O3'R CGR:RO3* CGR C1' CGR: C1* CGR O4' CGR: O4* CGR C2' CGR: C2* CGR O2' CGR: O2* CGR C3' CGR: C3* CGR O3' CGR: O3* CGR C4' CGR: C4* CGR C5' CGR: C5* CGR O5' CGR: O5* CGR OE11 CGU:OE1 CGU OE12 CGU:OE2 CGU OE21 CGU:OE3 CGU OE22 CGU:OE4 CGU OP3 CH: O3P CH OP1 CH: O1P CH OP2 CH: O2P CH O5' CH: O5* CH C5' CH: C5* CH C4' CH: C4* CH O4' CH: O4* CH C3' CH: C3* CH O3' CH: O3* CH C2' CH: C2* CH O2' CH: O2* CH C1' CH: C1* CH C1' CH1: C1* CH1 C2' CH1: C2* CH1 O2' CH1: O2* CH1 C3' CH1: C3* CH1 C4' CH1: C4* CH1 O4' CH1: O4* CH1 C5' CH1: C5* CH1 O5' CH1: O5* CH1 NA CHL: N_A CHL NB CHL: N_B CHL NC CHL: N_C CHL ND CHL: N_D CHL N1A CIC: AN1 CIC C2A CIC: AC2 CIC N3A CIC: AN3 CIC C4A CIC: AC4 CIC C5A CIC: AC5 CIC C6A CIC: AC6 CIC N6A CIC: AN6 CIC N7A CIC: AN7 CIC C8A CIC: AC8 CIC N9A CIC: AN9 CIC C1B CIC:AC1* CIC C2B CIC:AC2* CIC O2B CIC:AO2* CIC C3B CIC:AC3* CIC O3B CIC:AO3* CIC P3B CIC:AP3* CIC O7A CIC: AO7 CIC O8A CIC: AO8 CIC O9A CIC: AO9 CIC C4B CIC:AC4* CIC O4B CIC:AO4* CIC C5B CIC:AC5* CIC O5B CIC:AO5* CIC P1A CIC: AP1 CIC O1A CIC: AO1 CIC O2A CIC: AO2 CIC O3A CIC: AO3 CIC P2A CIC: AP2 CIC O4A CIC: AO4 CIC O5A CIC: AO5 CIC O6A CIC: AO6 CIC CBP CIC:PC11 CIC CCP CIC:PC12 CIC CDP CIC:PC13 CIC CEP CIC:PC14 CIC CAP CIC:PC10 CIC OAP CIC:PO10 CIC C9P CIC: PC9 CIC O9P CIC: PO9 CIC N8P CIC: PN8 CIC C7P CIC: PC7 CIC C6P CIC: PC6 CIC C5P CIC: PC5 CIC O5P CIC: PO5 CIC N4P CIC: PN4 CIC C3P CIC: PC3 CIC C2P CIC: PC2 CIC S1P CIC: PS1 CIC C1P CIC: PC1 CIC OBA CIE:O11A CIE OBB CIE:O11B CIE NA CL1: N_A CL1 NB CL1: N_B CL1 NC CL1: N_C CL1 ND CL1: N_D CL1 NA CL2: N_A CL2 NB CL2: N_B CL2 NC CL2: N_C CL2 ND CL2: N_D CL2 NA CLA: N_A CLA NB CLA: N_B CLA NC CLA: N_C CLA ND CLA: N_D CLA CL1 CLM:CL1A CLM CL2 CLM:CL1B CLM NA CLN: N_A CLN NB CLN: N_B CLN NC CLN: N_C CLN ND CLN: N_D CLN O5' CM0: O5* CM0 C3' CM0: C3* CM0 C5' CM0: C5* CM0 C4' CM0: C4* CM0 O4' CM0: O4* CM0 C2' CM0: C2* CM0 C1' CM0: C1* CM0 O2' CM0: O2* CM0 O3' CM0: O3* CM0 N1A CMC: AN1 CMC C2A CMC: AC2 CMC N3A CMC: AN3 CMC C4A CMC: AC4 CMC C5A CMC: AC5 CMC C6A CMC: AC6 CMC N6A CMC: AN6 CMC N7A CMC: AN7 CMC C8A CMC: AC8 CMC N9A CMC: AN9 CMC C1B CMC:AC1* CMC C2B CMC:AC2* CMC O2B CMC:AO2* CMC C3B CMC:AC3* CMC O3B CMC:AO3* CMC P3B CMC:AP3* CMC O7A CMC: AO7 CMC O8A CMC: AO8 CMC O9A CMC: AO9 CMC C4B CMC:AC4* CMC O4B CMC:AO4* CMC C5B CMC:AC5* CMC O5B CMC:AO5* CMC P1A CMC: AP1 CMC O1A CMC: AO1 CMC O2A CMC: AO2 CMC O3A CMC: AO3 CMC P2A CMC: AP2 CMC O4A CMC: AO4 CMC O5A CMC: AO5 CMC O6A CMC: AO6 CMC CBP CMC:PC11 CMC CCP CMC:PC12 CMC CDP CMC:PC13 CMC CEP CMC:PC14 CMC CAP CMC:PC10 CMC OAP CMC:PO10 CMC C9P CMC: PC9 CMC O9P CMC: PO9 CMC N8P CMC: PN8 CMC C7P CMC: PC7 CMC C6P CMC: PC6 CMC C5P CMC: PC5 CMC O5P CMC: PO5 CMC N4P CMC: PN4 CMC C3P CMC: PC3 CMC C2P CMC: PC2 CMC S1P CMC: PS1 CMC C1' CMD: C1* CMD C2' CMD: C2* CMD C3' CMD: C3* CMD C4' CMD: C4* CMD O4' CMD: O4* CMD C5' CMD: C5* CMD O5' CMD: O5* CMD C6' CMD: C6* CMD N3' CMD: N3* CMD C1' CMK: C1* CMK C2' CMK: C2* CMK O2' CMK: O2* CMK C3' CMK: C3* CMK C4' CMK: C4* CMK O4' CMK: O4* CMK O3' CMK: O3* CMK C5' CMK: C5* CMK O5' CMK: O5* CMK O5' CMP: O5* CMP C5' CMP: C5* CMP C4' CMP: C4* CMP O4' CMP: O4* CMP C3' CMP: C3* CMP O3' CMP: O3* CMP C2' CMP: C2* CMP O2' CMP: O2* CMP C1' CMP: C1* CMP OP1 CMR: O1P CMR O5' CMR: O5* CMR C5' CMR: C5* CMR C4' CMR: C4* CMR O4' CMR: O4* CMR C1' CMR: C1* CMR C3' CMR: C3* CMR C2' CMR: C2* CMR O3' CMR: O3* CMR OP3 CMR: O3P CMR N1A CMX: AN1 CMX C2A CMX: AC2 CMX N3A CMX: AN3 CMX C4A CMX: AC4 CMX C5A CMX: AC5 CMX C6A CMX: AC6 CMX N6A CMX: AN6 CMX N7A CMX: AN7 CMX C8A CMX: AC8 CMX N9A CMX: AN9 CMX C1B CMX:AC1* CMX C2B CMX:AC2* CMX O2B CMX:AO2* CMX C3B CMX:AC3* CMX O3B CMX:AO3* CMX P3B CMX:AP3* CMX O7A CMX: AO7 CMX O8A CMX: AO8 CMX O9A CMX: AO9 CMX C4B CMX:AC4* CMX O4B CMX:AO4* CMX C5B CMX:AC5* CMX O5B CMX:AO5* CMX P1A CMX: AP1 CMX O1A CMX: AO1 CMX O2A CMX: AO2 CMX O3A CMX: AO3 CMX P2A CMX: AP2 CMX O4A CMX: AO4 CMX O5A CMX: AO5 CMX O6A CMX: AO6 CMX CBP CMX:PC11 CMX CCP CMX:PC12 CMX CDP CMX:PC13 CMX CEP CMX:PC14 CMX CAP CMX:PC10 CMX OAP CMX:PO10 CMX C9P CMX: PC9 CMX O9P CMX: PO9 CMX N8P CMX: PN8 CMX C7P CMX: PC7 CMX C6P CMX: PC6 CMX C5P CMX: PC5 CMX O5P CMX: PO5 CMX N4P CMX: PN4 CMX C3P CMX: PC3 CMX C2P CMX: PC2 CMX PA CNA: AP CNA O1A CNA: AO1 CNA O2A CNA: AO2 CNA O5B CNA:AO5* CNA C5B CNA:AC5* CNA C4B CNA:AC4* CNA O4B CNA:AO4* CNA C3B CNA:AC3* CNA O3B CNA:AO3* CNA C2B CNA:AC2* CNA O2B CNA:AO2* CNA C1B CNA:AC1* CNA N9A CNA: AN9 CNA C8A CNA: AC8 CNA N7A CNA: AN7 CNA C5A CNA: AC5 CNA C6A CNA: AC6 CNA N6A CNA: AN6 CNA N1A CNA: AN1 CNA C2A CNA: AC2 CNA N3A CNA: AN3 CNA C4A CNA: AC4 CNA PN CNA: NP CNA O1N CNA: NO1 CNA O2N CNA: NO2 CNA O5D CNA:NO5* CNA C5D CNA:NC5* CNA C4D CNA:NC4* CNA C4' CNA: C4* CNA C3D CNA:NC3* CNA O3D CNA:NO3* CNA C2D CNA:NC2* CNA O2D CNA:NO2* CNA C1D CNA:NC1* CNA N1N CNA: NN1 CNA C2N CNA: NC2 CNA C3N CNA: NC3 CNA C7N CNA: NC7 CNA O7N CNA: NO7 CNA N7N CNA: NN7 CNA C4N CNA: NC4 CNA C5N CNA: NC5 CNA C6N CNA: NC6 CNA PA CND: AP CND O1A CND: AO1 CND O2A CND: AO2 CND O5B CND:AO5* CND C5B CND:AC5* CND C4B CND:AC4* CND O4B CND:AO4* CND C3B CND:AC3* CND O3B CND:AO3* CND C2B CND:AC2* CND O2B CND:AO2* CND C1B CND:AC1* CND N9A CND: AN9 CND C8A CND: AC8 CND N7A CND: AN7 CND C5A CND: AC5 CND C6A CND: AC6 CND N6A CND: AN6 CND N1A CND: AN1 CND C2A CND: AC2 CND N3A CND: AN3 CND C4A CND: AC4 CND PN CND: NP CND O1N CND: NO1 CND O2N CND: NO2 CND O5D CND:NO5* CND C5D CND:NC5* CND C4D CND:NC4* CND O4D CND:NO4* CND C3D CND:NC3* CND O3D CND:NO3* CND C2D CND:NC2* CND O2D CND:NO2* CND C1D CND:NC1* CND C1N CND: NC1 CND C2N CND: NC2 CND C3N CND: NC3 CND C7N CND: NC7 CND O7N CND: NO7 CND N7N CND: NN7 CND C4N CND: NC4 CND N5N CND: NN5 CND C6N CND: NC6 CND N2' CO4: N2* CO4 C2D CO4: C2* CO4 N3' CO4: N3* CO4 C4D CO4: C4* CO4 N4' CO4: N4* CO4 C5D CO4: C5* CO4 C6D CO4: C6* CO4 C7' CO4: C7* CO4 N8' CO4: N8* CO4 N1' CO4: N1* CO4 C8' CO4: C8* CO4 N9' CO4: N9* CO4 C9' CO4: C9* CO4 N1A CO6: AN1 CO6 C2A CO6: AC2 CO6 N3A CO6: AN3 CO6 C4A CO6: AC4 CO6 C5A CO6: AC5 CO6 C6A CO6: AC6 CO6 N6A CO6: AN6 CO6 N7A CO6: AN7 CO6 C8A CO6: AC8 CO6 N9A CO6: AN9 CO6 C1B CO6:AC1* CO6 C2B CO6:AC2* CO6 O2B CO6:AO2* CO6 C3B CO6:AC3* CO6 O3B CO6:AO3* CO6 P3B CO6:AP3* CO6 O7A CO6: AO7 CO6 O8A CO6: AO8 CO6 O9A CO6: AO9 CO6 C4B CO6:AC4* CO6 O4B CO6:AO4* CO6 C5B CO6:AC5* CO6 O5B CO6:AO5* CO6 P1A CO6: AP1 CO6 O1A CO6: AO1 CO6 O2A CO6: AO2 CO6 O3A CO6: AO3 CO6 P2A CO6: AP2 CO6 O4A CO6: AO4 CO6 O5A CO6: AO5 CO6 O6A CO6: AO6 CO6 CBP CO6:PC11 CO6 CCP CO6:PC12 CO6 CDP CO6:PC13 CO6 CEP CO6:PC14 CO6 CAP CO6:PC10 CO6 OAP CO6:PO10 CO6 C9P CO6: PC9 CO6 O9P CO6: PO9 CO6 N8P CO6: PN8 CO6 C7P CO6: PC7 CO6 C6P CO6: PC6 CO6 C5P CO6: PC5 CO6 O5P CO6: PO5 CO6 N4P CO6: PN4 CO6 C3P CO6: PC3 CO6 C2P CO6: PC2 CO6 S1P CO6: PS1 CO6 N1A CO8: AN1 CO8 C2A CO8: AC2 CO8 N3A CO8: AN3 CO8 C4A CO8: AC4 CO8 C5A CO8: AC5 CO8 C6A CO8: AC6 CO8 N6A CO8: AN6 CO8 N7A CO8: AN7 CO8 C8A CO8: AC8 CO8 N9A CO8: AN9 CO8 C1B CO8:AC1* CO8 C2B CO8:AC2* CO8 O2B CO8:AO2* CO8 C3B CO8:AC3* CO8 O3B CO8:AO3* CO8 P3B CO8:AP3* CO8 O7A CO8: AO7 CO8 O8A CO8: AO8 CO8 O9A CO8: AO9 CO8 C4B CO8:AC4* CO8 O4B CO8:AO4* CO8 C5B CO8:AC5* CO8 O5B CO8:AO5* CO8 P1A CO8: AP1 CO8 O1A CO8: AO1 CO8 O2A CO8: AO2 CO8 O3A CO8: AO3 CO8 P2A CO8: AP2 CO8 O4A CO8: AO4 CO8 O5A CO8: AO5 CO8 O6A CO8: AO6 CO8 CBP CO8:PC11 CO8 CCP CO8:PC12 CO8 CDP CO8:PC13 CO8 CEP CO8:PC14 CO8 CAP CO8:PC10 CO8 OAP CO8:PO10 CO8 C9P CO8: PC9 CO8 O9P CO8: PO9 CO8 N8P CO8: PN8 CO8 C7P CO8: PC7 CO8 C6P CO8: PC6 CO8 C5P CO8: PC5 CO8 O5P CO8: PO5 CO8 N4P CO8: PN4 CO8 C3P CO8: PC3 CO8 C2P CO8: PC2 CO8 S1P CO8: PS1 CO8 C1' CO8: C1* CO8 O1' CO8: O1* CO8 C2' CO8: C2* CO8 C3' CO8: C3* CO8 C4' CO8: C4* CO8 C5' CO8: C5* CO8 C6' CO8: C6* CO8 C7' CO8: C7* CO8 C8' CO8: C8* CO8 N1A COA: AN1 COA C2A COA: AC2 COA N3A COA: AN3 COA C4A COA: AC4 COA C5A COA: AC5 COA C6A COA: AC6 COA N6A COA: AN6 COA N7A COA: AN7 COA C8A COA: AC8 COA N9A COA: AN9 COA C1B COA:AC1* COA C2B COA:AC2* COA O2B COA:AO2* COA C3B COA:AC3* COA O3B COA:AO3* COA P3B COA:AP3* COA O7A COA: AO7 COA O8A COA: AO8 COA O9A COA: AO9 COA C4B COA:AC4* COA O4B COA:AO4* COA C5B COA:AC5* COA O5B COA:AO5* COA P1A COA: AP1 COA O1A COA: AO1 COA O2A COA: AO2 COA O3A COA: AO3 COA P2A COA: AP2 COA O4A COA: AO4 COA O5A COA: AO5 COA O6A COA: AO6 COA CBP COA:PC11 COA CCP COA:PC12 COA CDP COA:PC13 COA CEP COA:PC14 COA CAP COA:PC10 COA OAP COA:PO10 COA C9P COA: PC9 COA O9P COA: PO9 COA N8P COA: PN8 COA C7P COA: PC7 COA C6P COA: PC6 COA C5P COA: PC5 COA O5P COA: PO5 COA N4P COA: PN4 COA C3P COA: PC3 COA C2P COA: PC2 COA S1P COA: PS1 COA N1A COF: AN1 COF C2A COF: AC2 COF N3A COF: AN3 COF C4A COF: AC4 COF C5A COF: AC5 COF C6A COF: AC6 COF N6A COF: AN6 COF N7A COF: AN7 COF C8A COF: AC8 COF N9A COF: AN9 COF C1B COF:AC1* COF C2B COF:AC2* COF O2B COF:AO2* COF C3B COF:AC3* COF O3B COF:AO3* COF P3B COF:AP3* COF O7A COF: AO7 COF O8A COF: AO8 COF O9A COF: AO9 COF C4B COF:AC4* COF O4B COF:AO4* COF C5B COF:AC5* COF O5B COF:AO5* COF P1A COF: AP1 COF O1A COF: AO1 COF O2A COF: AO2 COF O3A COF: AO3 COF P2A COF: AP2 COF O4A COF: AO4 COF O5A COF: AO5 COF O6A COF: AO6 COF CBP COF:PC11 COF CCP COF:PC12 COF CDP COF:PC13 COF CEP COF:PC14 COF CAP COF:PC10 COF OAP COF:PO10 COF C9P COF: PC9 COF O9P COF: PO9 COF N8P COF: PN8 COF C7P COF: PC7 COF C6P COF: PC6 COF C5P COF: PC5 COF O5P COF: PO5 COF N4P COF: PN4 COF C3P COF: PC3 COF C2P COF: PC2 COF S1P COF: PS1 COF C1I COF: IC1 COF C2I COF: IC2 COF O1I COF: IO1 COF C3I COF: IC3 COF F1I COF: IF1 COF F2I COF: IF2 COF F3I COF: IF3 COF C2B COG: C2* COG C4B COG: C4* COG C5B COG: C5* COG C6B COG: C6* COG C7B COG: C7* COG N1' COG: N1* COG N2' COG: N2* COG N3' COG: N3* COG N4' COG: N4* COG C8' COG: C8* COG N6' COG: N6* COG NA COH: N_A COH NB COH: N_B COH NC COH: N_C COH ND COH: N_D COH N6A COK: AN6 COK C6A COK: AC6 COK N1A COK: AN1 COK C2A COK: AC2 COK N3A COK: AN3 COK C4A COK: AC4 COK C5A COK: AC5 COK N7A COK: AN7 COK C8A COK: AC8 COK N9A COK: AN9 COK C1B COK:AC1* COK O4B COK:AO4* COK C2B COK:AC2* COK O2B COK:AO2* COK C3B COK:AC3* COK O3B COK:AO3* COK P3B COK:AP3* COK O8A COK: AO8 COK O9A COK: AO9 COK O7A COK: AO7 COK C4B COK:AC4* COK C5B COK:AC5* COK O5B COK:AO5* COK P1A COK: AP1 COK O1A COK: AO1 COK O2A COK: AO2 COK O3A COK: AO3 COK P2A COK: AP2 COK O4A COK: AO4 COK O5A COK: AO5 COK O6A COK: AO6 COK CCP COK:PC12 COK CBP COK:PC11 COK CDP COK:PC13 COK CEP COK:PC14 COK CAP COK:PC10 COK OAP COK:PO10 COK C9P COK: PC9 COK O9P COK: PO9 COK N8P COK: PN8 COK C7P COK: PC7 COK C6P COK: PC6 COK C5P COK: PC5 COK O5P COK: PO5 COK N4P COK: PN4 COK C3P COK: PC3 COK C2P COK: PC2 COK S1P COK: PS1 COK C2B COQ: C2* COQ C4B COQ: C4* COQ C5B COQ: C5* COQ C6B COQ: C6* COQ C7' COQ: C7* COQ C9' COQ: C9* COQ CN' COQ: CN* COQ N1' COQ: N1* COQ N2' COQ: N2* COQ N3' COQ: N3* COQ N4' COQ: N4* COQ N8' COQ: N8* COQ N9' COQ: N9* COQ N1A COS: AN1 COS C2A COS: AC2 COS N3A COS: AN3 COS C4A COS: AC4 COS C5A COS: AC5 COS C6A COS: AC6 COS N6A COS: AN6 COS N7A COS: AN7 COS C8A COS: AC8 COS N9A COS: AN9 COS C1B COS:AC1* COS C2B COS:AC2* COS O2B COS:AO2* COS C3B COS:AC3* COS O3B COS:AO3* COS P3B COS:AP3* COS O7A COS: AO7 COS O8A COS: AO8 COS O9A COS: AO9 COS C4B COS:AC4* COS O4B COS:AO4* COS C5B COS:AC5* COS O5B COS:AO5* COS P1A COS: AP1 COS O1A COS: AO1 COS O2A COS: AO2 COS O3A COS: AO3 COS P2A COS: AP2 COS O4A COS: AO4 COS O5A COS: AO5 COS O6A COS: AO6 COS CBP COS:PC11 COS CCP COS:PC12 COS CDP COS:PC13 COS CEP COS:PC14 COS CAP COS:PC10 COS OAP COS:PO10 COS C9P COS: PC9 COS O9P COS: PO9 COS N8P COS: PN8 COS C7P COS: PC7 COS C6P COS: PC6 COS C5P COS: PC5 COS O5P COS: PO5 COS N4P COS: PN4 COS C3P COS: PC3 COS C2P COS: PC2 COS S1P COS: PS1 COS S'P COS: PS' COS C11 COT:CD2T COT C12 COT:CE2T COT C13 COT:CE3T COT C14 COT:CD1T COT N11 COT:NE1T COT C15 COT:CZ2T COT C16 COT:CZ3T COT C17 COT:CH2T COT O11 COT:OPB3 COT O12 COT:OPB1 COT O13 COT:OPB2 COT O14 COT:OPA3 COT O3B COT:O3*A COT O15 COT:OPA2 COT O16 COT:OPA1 COT O5B COT:O5*A COT C5B COT:C5*A COT C4B COT:C4*A COT C3B COT:C3*A COT O2B COT:O2*A COT O4B COT:O4*A COT O17 COT:OPC1 COT O18 COT:OPC2 COT O19 COT:OPC3 COT C2B COT:C2*A COT C1B COT:C1*A COT OAP COT:O10P COT CBP COT:C11P COT OCP COT:O12P COT CDP COT:C13P COT CGP COT:C16P COT CEP COT:C14P COT CFP COT:C15P COT N1A COZ: AN1 COZ C2A COZ: AC2 COZ N3A COZ: AN3 COZ C4A COZ: AC4 COZ C5A COZ: AC5 COZ C6A COZ: AC6 COZ N6A COZ: AN6 COZ N7A COZ: AN7 COZ C8A COZ: AC8 COZ N9A COZ: AN9 COZ C1B COZ:AC1* COZ C2B COZ:AC2* COZ O2B COZ:AO2* COZ C3B COZ:AC3* COZ O3B COZ:AO3* COZ P3B COZ:AP3* COZ O7A COZ: AO7 COZ O8A COZ: AO8 COZ O9A COZ: AO9 COZ C4B COZ:AC4* COZ O4B COZ:AO4* COZ C5B COZ:AC5* COZ O5B COZ:AO5* COZ P1A COZ: AP1 COZ O1A COZ: AO1 COZ O2A COZ: AO2 COZ O3A COZ: AO3 COZ P2A COZ: AP2 COZ O4A COZ: AO4 COZ O5A COZ: AO5 COZ O6A COZ: AO6 COZ CBP COZ:PC11 COZ CCP COZ:PC12 COZ CDP COZ:PC13 COZ CEP COZ:PC14 COZ CAP COZ:PC10 COZ OAP COZ:PO10 COZ C9P COZ: PC9 COZ O9P COZ: PO9 COZ N8P COZ: PN8 COZ C7P COZ: PC7 COZ C6P COZ: PC6 COZ C5P COZ: PC5 COZ O5P COZ: PO5 COZ N4P COZ: PN4 COZ C3P COZ: PC3 COZ C2P COZ: PC2 COZ S1P COZ: PS1 COZ O5D CPA:CO5' CPA C5X CPA:CC5' CPA C4X CPA:CC4' CPA O4D CPA:CO4' CPA C3X CPA:CC3' CPA O3D CPA:CO3' CPA C2X CPA:CC2' CPA C1X CPA:CC1' CPA N1C CPA: CN1 CPA N3C CPA: CN3 CPA O2C CPA: CO2 CPA N4C CPA: CN4 CPA O5B CPA:AO5' CPA C5B CPA:AC5' CPA C4B CPA:AC4' CPA O4B CPA:AO4' CPA C3B CPA:AC3' CPA O3B CPA:AO3' CPA C2B CPA:AC2' CPA C1B CPA:AC1' CPA N9A CPA: AN9 CPA C8A CPA: AC8 CPA N7A CPA: AN7 CPA C5A CPA: AC5 CPA C6A CPA: AC6 CPA N6A CPA: AN6 CPA N1A CPA: AN1 CPA C2A CPA: AC2 CPA N3A CPA: AN3 CPA C4A CPA: AC4 CPA O5' CPG: O5* CPG C5' CPG: C5* CPG C4' CPG: C4* CPG O4' CPG: O4* CPG C3' CPG: C3* CPG O3' CPG: O3* CPG C2' CPG: C2* CPG O2' CPG: O2* CPG C1' CPG: C1* CPG C1' CPH: C1* CPH O1' CPH: O1* CPH C2' CPH: C2* CPH O2' CPH: O2* CPH C3' CPH: C3* CPH O3' CPH: O3* CPH C4' CPH: C4* CPH O4' CPH: O4* CPH C5' CPH: C5* CPH CJ' CPO:C19* CPO O5' CPR: O5* CPR C5' CPR: C5* CPR C4' CPR: C4* CPR O4' CPR: O4* CPR C3' CPR: C3* CPR O3' CPR: O3* CPR C2' CPR: C2* CPR O2' CPR: O2* CPR C1' CPR: C1* CPR CA' CPV: CA* CPV CB' CPV: CB* CPV C1B CR3:C1'' CR3 C2B CR3:C2'' CR3 C3B CR3:C3'' CR3 C4B CR3:C4'' CR3 C5B CR3:C5'' CR3 C1B CR9:C1'' CR9 C2B CR9:C2'' CR9 C3B CR9:C3'' CR9 C4B CR9:C4'' CR9 C5B CR9:C5'' CR9 C6B CR9:C6'' CR9 C1' CRH: C1* CRH C2' CRH: C2* CRH C3' CRH: C3* CRH C4' CRH: C4* CRH O1' CRH: O1* CRH O2' CRH: O2* CRH O3' CRH: O3* CRH O4' CRH: O4* CRH OXT CS3: O CS3 O CS3: OXT CS3 OXT CS4: O CS4 O CS4: OXT CS4 OAP CS8:PO10 CS8 CAP CS8:PC10 CS8 C9P CS8: PC9 CS8 O9P CS8: PO9 CS8 N8P CS8: PN8 CS8 C7P CS8: PC7 CS8 C6P CS8: PC6 CS8 C5P CS8: PC5 CS8 O5P CS8: PO5 CS8 N4P CS8: PN4 CS8 C3P CS8: PC3 CS8 C2P CS8: PC2 CS8 S1P CS8: PS1 CS8 C1' CS8: C1* CS8 O1' CS8: O1* CS8 C2' CS8: C2* CS8 S3' CS8: S3* CS8 C4' CS8: C4* CS8 C5' CS8: C5* CS8 C6' CS8: C6* CS8 C7' CS8: C7* CS8 C8' CS8: C8* CS8 CBP CS8:PC11 CS8 CDP CS8:PC13 CS8 CEP CS8:PC14 CS8 CCP CS8:PC12 CS8 O6A CS8: AO6 CS8 P2A CS8: AP2 CS8 O4A CS8: AO4 CS8 O5A CS8: AO5 CS8 O3A CS8: AO3 CS8 P1A CS8: AP1 CS8 O1A CS8: AO1 CS8 O2A CS8: AO2 CS8 O5B CS8:AO5* CS8 C5B CS8:AC5* CS8 C4B CS8:AC4* CS8 O4B CS8:AO4* CS8 C1B CS8:AC1* CS8 N9A CS8: AN9 CS8 C8A CS8: AC8 CS8 N7A CS8: AN7 CS8 C5A CS8: AC5 CS8 C6A CS8: AC6 CS8 N1A CS8: AN1 CS8 C2A CS8: AC2 CS8 N3A CS8: AN3 CS8 C4A CS8: AC4 CS8 N6A CS8: AN6 CS8 C2B CS8:AC2* CS8 O2B CS8:AO2* CS8 C3B CS8:AC3* CS8 O3B CS8:AO3* CS8 P3B CS8:AP3* CS8 O7A CS8: AO7 CS8 O8A CS8: AO8 CS8 O9A CS8: AO9 CS8 C3' CSF: C3* CSF C2' CSF: C2* CSF C1' CSF: C1* CSF O4' CSF: O4* CSF C4' CSF: C4* CSF O5' CSF: O5* CSF C5' CSF: C5* CSF O3' CSF: O3* CSF O2' CSF: O2* CSF O5' CSL: O5* CSL C5' CSL: C5* CSL C4' CSL: C4* CSL O4' CSL: O4* CSL C1' CSL: C1* CSL C2' CSL: C2* CSL SE2' CSL:SE2* CSL CA' CSL: CA* CSL C3' CSL: C3* CSL O3' CSL: O3* CSL C4D CTC: C4" CTC C1' CTD: C1* CTD C2' CTD: C2* CTD O2' CTD: O2* CTD C3' CTD: C3* CTD C4' CTD: C4* CTD O4' CTD: O4* CTD O3' CTD: O3* CTD C5' CTD: C5* CTD O5' CTD: O5* CTD OP1 CTG: O1P CTG OP2 CTG: O2P CTG O5' CTG: O5* CTG C5' CTG: C5* CTG C4' CTG: C4* CTG O4' CTG: O4* CTG C1' CTG: C1* CTG C2' CTG: C2* CTG C3' CTG: C3* CTG O3' CTG: O3* CTG OP3 CTG: O3P CTG O5' CTN: O5* CTN C5' CTN: C5* CTN C4' CTN: C4* CTN O4' CTN: O4* CTN C1' CTN: C1* CTN C2' CTN: C2* CTN O2' CTN: O2* CTN C3' CTN: C3* CTN O3' CTN: O3* CTN C1' CTP: C1* CTP C2' CTP: C2* CTP O2' CTP: O2* CTP C3' CTP: C3* CTP C4' CTP: C4* CTP O4' CTP: O4* CTP O3' CTP: O3* CTP C5' CTP: C5* CTP O5' CTP: O5* CTP ON1 CXM: O1 CXM ON2 CXM: O2 CXM O5D CXR:RO5* CXR C5D CXR:RC5* CXR C4D CXR:RC4* CXR C3D CXR:RC3* CXR O3D CXR:RO3* CXR C2D CXR:RC2* CXR O2D CXR:RO2* CXR O4D CXR:RO4* CXR C1D CXR:RC1* CXR C1' CXR: C1* CXR O4' CXR: O4* CXR C2' CXR: C2* CXR O2' CXR: O2* CXR C3' CXR: C3* CXR O3' CXR: O3* CXR C4' CXR: C4* CXR C5' CXR: C5* CXR O5' CXR: O5* CXR O5D CXY: O5* CXY C5D CXY: C5* CXY C4D CXY: C4* CXY O4D CXY: O4* CXY C3D CXY: C3* CXY O3D CXY: O3* CXY C2D CXY: C2* CXY O2D CXY: O2* CXY C1D CXY: C1* CXY NA CYB: N_A CYB NB CYB: N_B CYB OB CYB: O_B CYB NC CYB: N_C CYB OC CYB: O_C CYB ND CYB: N_D CYB NA CYC: N_A CYC NB CYC: N_B CYC OB CYC: O_B CYC NC CYC: N_C CYC OC CYC: O_C CYC ND CYC: N_D CYC CL14 D05:4CL1 D05 CL16 D05:6CL1 D05 CL12 D05:2CL1 D05 CAX D18:'C10 D18 CAX D19:'C10 D19 OP3 D1P: O3P D1P OP1 D1P: O1P D1P OP2 D1P: O2P D1P O5' D1P: O5* D1P C5' D1P: C5* D1P C4' D1P: C4* D1P O4' D1P: O4* D1P C3' D1P: C3* D1P O3' D1P: O3* D1P C2' D1P: C2* D1P C1' D1P: C1* D1P O1' D1P: O1* D1P CAX D24:C10' D24 CBX D24:C11' D24 CCX D24:C12' D24 OP1 D3: O1P D3 OP2 D3: O2P D3 OP3 D3: O3P D3 O5' D3: O5* D3 C5' D3: C5* D3 C4' D3: C4* D3 O4' D3: O4* D3 C3' D3: C3* D3 O3' D3: O3* D3 C2' D3: C2* D3 C1' D3: C1* D3 CAX D34:C10' D34 CBX D34:C11' D34 CAX D35:C10' D35 CBX D35:C11' D35 CCX D35:C12' D35 CDX D35:C13' D35 O5' D3T: O5* D3T C5' D3T: C5* D3T C4' D3T: C4* D3T O4' D3T: O4* D3T C1' D3T: C1* D3T C2' D3T: C2* D3T C3' D3T: C3* D3T OP2 D4M: O2P D4M OP1 D4M: O1P D4M OP3 D4M: O3P D4M O5' D4M: O5* D4M C5' D4M: C5* D4M C4' D4M: C4* D4M O4' D4M: O4* D4M C3' D4M: C3* D4M C2' D4M: C2* D4M C1' D4M: C1* D4M O5' D5M: O5* D5M C5' D5M: C5* D5M C4' D5M: C4* D5M O4' D5M: O4* D5M C3' D5M: C3* D5M O3' D5M: O3* D5M C2' D5M: C2* D5M C1' D5M: C1* D5M OP3 DA: O3P DA OP1 DA: O1P DA OP2 DA: O2P DA O5' DA: O5* DA C5' DA: C5* DA C4' DA: C4* DA O4' DA: O4* DA C3' DA: C3* DA O3' DA: O3* DA C2' DA: C2* DA C1' DA: C1* DA O5' DAD: O5* DAD C5' DAD: C5* DAD C4' DAD: C4* DAD O4' DAD: O4* DAD C3' DAD: C3* DAD C2' DAD: C2* DAD C1' DAD: C1* DAD C1' DAP: C1* DAP C2' DAP: C2* DAP C3' DAP: C3* DAP C4' DAP: C4* DAP C5' DAP: C5* DAP C6' DAP: C6* DAP O5' DAT: O5* DAT C5' DAT: C5* DAT C4' DAT: C4* DAT O4' DAT: O4* DAT C3' DAT: C3* DAT O3' DAT: O3* DAT C2' DAT: C2* DAT C1' DAT: C1* DAT O5' DBG: O5* DBG C5' DBG: C5* DBG C4' DBG: C4* DBG O4' DBG: O4* DBG C2' DBG: C2* DBG O2' DBG: O2* DBG C3' DBG: C3* DBG O3' DBG: O3* DBG C1' DBG: C1* DBG O1' DBL: O1" DBL C2B DBL: C2" DBL OP3 DC: O3P DC OP1 DC: O1P DC OP2 DC: O2P DC O5' DC: O5* DC C5' DC: C5* DC C4' DC: C4* DC O4' DC: O4* DC C3' DC: C3* DC O3' DC: O3* DC C2' DC: C2* DC C1' DC: C1* DC N1A DCA: AN1 DCA C2A DCA: AC2 DCA N3A DCA: AN3 DCA C4A DCA: AC4 DCA C5A DCA: AC5 DCA C6A DCA: AC6 DCA N6A DCA: AN6 DCA N7A DCA: AN7 DCA C8A DCA: AC8 DCA N9A DCA: AN9 DCA C1B DCA:AC1* DCA C2B DCA:AC2* DCA O2B DCA:AO2* DCA C3B DCA:AC3* DCA O3B DCA:AO3* DCA P3B DCA:AP3* DCA O7A DCA: AO7 DCA O8A DCA: AO8 DCA O9A DCA: AO9 DCA C4B DCA:AC4* DCA O4B DCA:AO4* DCA C5B DCA:AC5* DCA O5B DCA:AO5* DCA P1A DCA: AP1 DCA O1A DCA: AO1 DCA O2A DCA: AO2 DCA O3A DCA: AO3 DCA P2A DCA: AP2 DCA O4A DCA: AO4 DCA O5A DCA: AO5 DCA O6A DCA: AO6 DCA CBP DCA:PC11 DCA CCP DCA:PC12 DCA CDP DCA:PC13 DCA CEP DCA:PC14 DCA CAP DCA:PC10 DCA OAP DCA:PO10 DCA C9P DCA: PC9 DCA O9P DCA: PO9 DCA N8P DCA: PN8 DCA C7P DCA: PC7 DCA C6P DCA: PC6 DCA C5P DCA: PC5 DCA O5P DCA: PO5 DCA N4P DCA: PN4 DCA C3P DCA: PC3 DCA C2P DCA: PC2 DCA OP1 DCG: O1P DCG OP2 DCG: O2P DCG OP3 DCG: O3P DCG O5' DCG: O5* DCG C5' DCG: C5* DCG C4' DCG: C4* DCG O4' DCG: O4* DCG C3' DCG: C3* DCG O3' DCG: O3* DCG C2' DCG: C2* DCG C1' DCG: C1* DCG C1' DCM: C1* DCM C2' DCM: C2* DCM C3' DCM: C3* DCM C4' DCM: C4* DCM O4' DCM: O4* DCM O3' DCM: O3* DCM C5' DCM: C5* DCM O5' DCM: O5* DCM C1' DCP: C1* DCP C2' DCP: C2* DCP C3' DCP: C3* DCP C4' DCP: C4* DCP O4' DCP: O4* DCP O3' DCP: O3* DCP C5' DCP: C5* DCP O5' DCP: O5* DCP C1' DCT: C1* DCT C2' DCT: C2* DCT C3' DCT: C3* DCT C4' DCT: C4* DCT O4' DCT: O4* DCT C5' DCT: C5* DCT O5' DCT: O5* DCT C1' DCZ: C1* DCZ C2' DCZ: C2* DCZ C3' DCZ: C3* DCZ C4' DCZ: C4* DCZ O4' DCZ: O4* DCZ O3' DCZ: O3* DCZ C5' DCZ: C5* DCZ O5' DCZ: O5* DCZ OP3 DDG: O3P DDG OP1 DDG: O1P DDG OP2 DDG: O2P DDG O5' DDG: O5* DDG C5' DDG: C5* DDG C4' DDG: C4* DDG O4' DDG: O4* DDG C3' DDG: C3* DDG C2' DDG: C2* DDG C1' DDG: C1* DDG NA DDH: N_A DDH NB DDH: N_B DDH NC DDH: N_C DDH ND DDH: N_D DDH OP3 DDN: O3P DDN OP1 DDN: O1P DDN OP2 DDN: O2P DDN O5' DDN: O5* DDN C5' DDN: C5* DDN C4' DDN: C4* DDN O4' DDN: O4* DDN C3' DDN: C3* DDN O3' DDN: O3* DDN C2' DDN: C2* DDN C1' DDN: C1* DDN S' DDT: S* DDT O1' DDT: O1* DDT O2' DDT: O2* DDT C1' DDT: C1* DDT C2' DDT: C2* DDT C3' DDT: C3* DDT C4' DDT: C4* DDT C4X DDT:C4A* DDT C5' DDT: C5* DDT C6' DDT: C6* DDT C7' DDT: C7* DDT C8' DDT: C8* DDT C8X DDT:C8A* DDT C9' DDT: C9* DDT CA' DDT:C10* DDT N1' DDT: N1* DDT C1' DDU: C1* DDU C2' DDU: C2* DDU C3' DDU: C3* DDU C4' DDU: C4* DDU O3' DDU: O3* DDU O4' DDU: O4* DDU C5' DDU: C5* DDU OP1 DDX: O1P DDX OP2 DDX: O2P DDX OP3 DDX: O3P DDX O5' DDX: O5* DDX C5' DDX: C5* DDX C4' DDX: C4* DDX O4' DDX: O4* DDX C1' DDX: C1* DDX C3' DDX: C3* DDX C2' DDX: C2* DDX O1' DDX: O1* DDX O5' DDY: O5* DDY C5' DDY: C5* DDY C4' DDY: C4* DDY O4' DDY: O4* DDY C3' DDY: C3* DDY C2' DDY: C2* DDY C1' DDY: C1* DDY C1' DEA: C1* DEA C2' DEA: C2* DEA O2' DEA: O2* DEA C3' DEA: C3* DEA O3' DEA: O3* DEA C4' DEA: C4* DEA NA DEU: N_A DEU NB DEU: N_B DEU NC DEU: N_C DEU ND DEU: N_D DEU OP3 DFC: O3P DFC OP1 DFC: O1P DFC OP2 DFC: O2P DFC O5' DFC: O5* DFC C5' DFC: C5* DFC C4' DFC: C4* DFC O4' DFC: O4* DFC C3' DFC: C3* DFC O3' DFC: O3* DFC C2' DFC: C2* DFC C1' DFC: C1* DFC OP3 DFG: O3P DFG OP1 DFG: O1P DFG OP2 DFG: O2P DFG O5' DFG: O5* DFG C5' DFG: C5* DFG C4' DFG: C4* DFG O4' DFG: O4* DFG C3' DFG: C3* DFG O3' DFG: O3* DFG C2' DFG: C2* DFG C1' DFG: C1* DFG OP1 DFT: O1P DFT OP2 DFT: O2P DFT OP3 DFT: O3P DFT O5' DFT: O5* DFT C5' DFT: C5* DFT C4' DFT: C4* DFT O4' DFT: O4* DFT C3' DFT: C3* DFT O3' DFT: O3* DFT C2' DFT: C2* DFT C1' DFT: C1* DFT OP3 DG: O3P DG OP1 DG: O1P DG OP2 DG: O2P DG O5' DG: O5* DG C5' DG: C5* DG C4' DG: C4* DG O4' DG: O4* DG C3' DG: C3* DG O3' DG: O3* DG C2' DG: C2* DG C1' DG: C1* DG C1' DG1: C1* DG1 O4' DG1: O4* DG1 C2' DG1: C2* DG1 O2' DG1: O2* DG1 C3' DG1: C3* DG1 O3' DG1: O3* DG1 C4' DG1: C4* DG1 C5' DG1: C5* DG1 O5' DG1: O5* DG1 O5' DG3: O5* DG3 C5' DG3: C5* DG3 C4' DG3: C4* DG3 O4' DG3: O4* DG3 C3' DG3: C3* DG3 C2' DG3: C2* DG3 C1' DG3: C1* DG3 CAA DGA:AC10 DGA CBA DGA:AC11 DGA CCA DGA:AC12 DGA CDA DGA:AC13 DGA CEA DGA:AC14 DGA CFA DGA:AC15 DGA CGA DGA:AC16 DGA CHA DGA:AC17 DGA CIA DGA:AC18 DGA CAB DGA:BC10 DGA CBB DGA:BC11 DGA CCB DGA:BC12 DGA CDB DGA:BC13 DGA CEB DGA:BC14 DGA CFB DGA:BC15 DGA CGB DGA:BC16 DGA CHB DGA:BC17 DGA CIB DGA:BC18 DGA C1A DGD: AC1 DGD C2A DGD: AC2 DGD C3A DGD: AC3 DGD C4A DGD: AC4 DGD C5A DGD: AC5 DGD C6A DGD: AC6 DGD C7A DGD: AC7 DGD C8A DGD: AC8 DGD C9A DGD: AC9 DGD CAA DGD:AC10 DGD CBA DGD:AC11 DGD CCA DGD:AC12 DGD CDA DGD:AC13 DGD CEA DGD:AC14 DGD CFA DGD:AC15 DGD CGA DGD:AC16 DGD CHA DGD:AC17 DGD CIA DGD:AC18 DGD O1A DGD: AO1 DGD C1B DGD: BC1 DGD C2B DGD: BC2 DGD C3B DGD: BC3 DGD C4B DGD: BC4 DGD C5B DGD: BC5 DGD C6B DGD: BC6 DGD C7B DGD: BC7 DGD C8B DGD: BC8 DGD C9B DGD: BC9 DGD CAB DGD:BC10 DGD CBB DGD:BC11 DGD CCB DGD:BC12 DGD CDB DGD:BC13 DGD CEB DGD:BC14 DGD CFB DGD:BC15 DGD CGB DGD:BC16 DGD CHB DGD:BC17 DGD CIB DGD:BC18 DGD O1B DGD: BO1 DGD O1G DGD: GO1 DGD C1G DGD: GC1 DGD C2G DGD: GC2 DGD O2G DGD: GO2 DGD C3G DGD: GC3 DGD O3G DGD: GO3 DGD C1D DGD: DC1 DGD C2D DGD: DC2 DGD O2D DGD: DO2 DGD C3D DGD: DC3 DGD O3D DGD: DO3 DGD C4D DGD: DC4 DGD O4D DGD: DO4 DGD C5D DGD: DC5 DGD O5D DGD: DO5 DGD C6D DGD: DC6 DGD O6D DGD: DO6 DGD C1E DGD: EC1 DGD C2E DGD: EC2 DGD O2E DGD: EO2 DGD C3E DGD: EC3 DGD O3E DGD: EO3 DGD C4E DGD: EC4 DGD O4E DGD: EO4 DGD C5E DGD: EC5 DGD O6E DGD: EO6 DGD C6E DGD: EC6 DGD O5E DGD: EO5 DGD O5' DGI: O5* DGI C5' DGI: C5* DGI C4' DGI: C4* DGI O4' DGI: O4* DGI C3' DGI: C3* DGI O3' DGI: O3* DGI C2' DGI: C2* DGI C1' DGI: C1* DGI OP1 DGP: O1P DGP OP2 DGP: O2P DGP OP3 DGP: O3P DGP O5' DGP: O5* DGP C5' DGP: C5* DGP C4' DGP: C4* DGP O4' DGP: O4* DGP C3' DGP: C3* DGP O3' DGP: O3* DGP C2' DGP: C2* DGP C1' DGP: C1* DGP O5' DGT: O5* DGT C5' DGT: C5* DGT C4' DGT: C4* DGT O4' DGT: O4* DGT C3' DGT: C3* DGT O3' DGT: O3* DGT C2' DGT: C2* DGT C1' DGT: C1* DGT C5' DH3: C5* DH3 C4B DH3: C4* DH3 C2' DH9: C2* DH9 C1' DH9: C1* DH9 O1' DH9: O1* DH9 O2' DH9: O2* DH9 C3' DH9: C3* DH9 O3' DH9: O3* DH9 C4' DH9: C4* DH9 C5' DH9: C5* DH9 O4' DH9: O4* DH9 O5' DH9: O5* DH9 N1' DH9: N1* DH9 O6' DH9: O6* DH9 C6' DH9: C6* DH9 C7' DH9: C7* DH9 C8' DH9: C8* DH9 C9' DH9: C9* DH9 NA DHE: N_A DHE NB DHE: N_B DHE NC DHE: N_C DHE ND DHE: N_D DHE OP1 DHU: O1P DHU OP2 DHU: O2P DHU OP3 DHU: O3P DHU O5' DHU: O5* DHU C5' DHU: C5* DHU C4' DHU: C4* DHU O4' DHU: O4* DHU C3' DHU: C3* DHU O3' DHU: O3* DHU C2' DHU: C2* DHU O2' DHU: O2* DHU C1' DHU: C1* DHU OP3 DI: O3P DI OP1 DI: O1P DI OP2 DI: O2P DI O5' DI: O5* DI C5' DI: C5* DI C4' DI: C4* DI O4' DI: O4* DI C3' DI: C3* DI O3' DI: O3* DI C2' DI: C2* DI C1' DI: C1* DI O5' DIH: O5* DIH C5' DIH: C5* DIH C4' DIH: C4* DIH C6' DIH: C6* DIH C3' DIH: C3* DIH O3' DIH: O3* DIH C2' DIH: C2* DIH N1' DIH: N1* DIH C1X DIT: XC1 DIT N2X DIT: XN2 DIT C3X DIT: XC3 DIT C4X DIT: XC4 DIT C5X DIT: XC5 DIT C6X DIT: XC6 DIT N7X DIT: XN7 DIT C8X DIT: XC8 DIT C9X DIT: XC9 DIT CAX DIT:XC10 DIT OAX DIT:XO10 DIT CBX DIT:XC11 DIT CCX DIT:XC12 DIT CDX DIT:XC13 DIT CEX DIT:XC14 DIT CFX DIT:XC15 DIT CGX DIT:XC16 DIT CHX DIT:XC17 DIT CIX DIT:XC18 DIT CJX DIT:XC19 DIT CKX DIT:XC20 DIT NLX DIT:XN21 DIT CMX DIT:XC22 DIT CNX DIT:XC23 DIT COX DIT:XC24 DIT CPX DIT:XC25 DIT CQX DIT:XC26 DIT C1' DM1: C1* DM1 C2' DM1: C2* DM1 C3' DM1: C3* DM1 N3' DM1: N3* DM1 C4' DM1: C4* DM1 O4' DM1: O4* DM1 C5' DM1: C5* DM1 O5' DM1: O5* DM1 C6' DM1: C6* DM1 C1' DM2: C1* DM2 C2' DM2: C2* DM2 C3' DM2: C3* DM2 N3' DM2: N3* DM2 C4' DM2: C4* DM2 O4' DM2: O4* DM2 C5' DM2: C5* DM2 O5' DM2: O5* DM2 C6' DM2: C6* DM2 C1' DM3: C1* DM3 C2' DM3: C2* DM3 C3' DM3: C3* DM3 N3' DM3: N3* DM3 C4' DM3: C4* DM3 O4' DM3: O4* DM3 C5' DM3: C5* DM3 O5' DM3: O5* DM3 C6' DM3: C6* DM3 C1' DM4: C1* DM4 C2' DM4: C2* DM4 C3' DM4: C3* DM4 N3' DM4: N3* DM4 C4' DM4: C4* DM4 O4' DM4: O4* DM4 C5' DM4: C5* DM4 O5' DM4: O5* DM4 C6' DM4: C6* DM4 C1' DM5: C1* DM5 C2' DM5: C2* DM5 C3' DM5: C3* DM5 N3' DM5: N3* DM5 C4' DM5: C4* DM5 O4' DM5: O4* DM5 C5' DM5: C5* DM5 O5' DM5: O5* DM5 C6' DM5: C6* DM5 C1' DM6: C1* DM6 C2' DM6: C2* DM6 C3' DM6: C3* DM6 C4' DM6: C4* DM6 C5' DM6: C5* DM6 C6' DM6: C6* DM6 O4' DM6: O4* DM6 O5' DM6: O5* DM6 N3' DM6: N3* DM6 C1' DM7: C1* DM7 C2' DM7: C2* DM7 C3' DM7: C3* DM7 C4' DM7: C4* DM7 C5' DM7: C5* DM7 C6' DM7: C6* DM7 O5' DM7: O5* DM7 N3' DM7: N3* DM7 I4' DM7: I4* DM7 C1' DM8: C1* DM8 C2' DM8: C2* DM8 C3' DM8: C3* DM8 C4' DM8: C4* DM8 C5' DM8: C5* DM8 C6' DM8: C6* DM8 O5' DM8: O5* DM8 O4' DM8: O4* DM8 N3' DM8: N3* DM8 C1' DM9: C1* DM9 C2' DM9: C2* DM9 C3' DM9: C3* DM9 C4' DM9: C4* DM9 O4' DM9: O4* DM9 C5' DM9: C5* DM9 O5' DM9: O5* DM9 C6' DM9: C6* DM9 N3' DM9: N3* DM9 OXT DMK: O1 DMK C1' DMM: C1* DMM C2' DMM: C2* DMM C3' DMM: C3* DMM C4' DMM: C4* DMM O4' DMM: O4* DMM C5' DMM: C5* DMM O5' DMM: O5* DMM C6' DMM: C6* DMM N3' DMM: N3* DMM O11 DND:O1PN DND O12 DND:O2PN DND O5D DND:O5'N DND C5D DND:C5'N DND C4D DND:C4'N DND O4D DND:O4'N DND C3D DND:C3'N DND O3D DND:O3'N DND C2D DND:C2'N DND O2D DND:O2'N DND C1D DND:C1'N DND O13 DND:O1PA DND O14 DND:O2PA DND O5B DND:O5'A DND C5B DND:C5'A DND C4B DND:C4'A DND O4B DND:O4'A DND C3B DND:C3'A DND O3B DND:O3'A DND C2B DND:C2'A DND O2B DND:O2'A DND C1B DND:C1'A DND OXT DNE: O1 DNE OXT DNM: O1 DNM OP1 DNR: O1P DNR OP2 DNR: O2P DNR O5' DNR: O5* DNR C5' DNR: C5* DNR C4' DNR: C4* DNR O4' DNR: O4* DNR C1' DNR: C1* DNR C2' DNR: C2* DNR C3' DNR: C3* DNR O3' DNR: O3* DNR OP3 DNR: O3P DNR OXT DNS: O DNS O DNS: OXT DNS C1' DOC: C1* DOC C2' DOC: C2* DOC C3' DOC: C3* DOC C4' DOC: C4* DOC O4' DOC: O4* DOC C5' DOC: C5* DOC O5' DOC: O5* DOC OP1 DOC: O1P DOC OP2 DOC: O2P DOC OP3 DOC: O3P DOC O5' DOI: O5* DOI C5' DOI: C5* DOI C4' DOI: C4* DOI O4' DOI: O4* DOI C1' DOI: C1* DOI C2' DOI: C2* DOI C3' DOI: C3* DOI O3' DOI: O3* DOI O5' DOT: O5* DOT C5B DOT: C5* DOT C4B DOT: C4* DOT O4' DOT: O4* DOT C3B DOT: C3* DOT O3' DOT: O3* DOT C2B DOT: C2* DOT C1B DOT: C1* DOT C1' DPB: C1* DPB O4' DPB: O4* DPB C4' DPB: C4* DPB C3' DPB: C3* DPB C2' DPB: C2* DPB C5' DPB: C5* DPB O5' DPB: O5* DPB C6' DPB: C6* DPB O3' DPB: O3* DPB OP2 DPB: O2P DPB OP1 DPB: O1P DPB OP3 DPB: O3P DPB C1D DPI: C1" DPI C2D DPI: C2" DPI C3D DPI: C3" DPI C4D DPI: C4" DPI C5D DPI: C5" DPI C6' DPI: C6" DPI O7' DPI: O7" DPI O8' DPI: O8" DPI O9D DPI: O9" DPI O5' DPY: O5* DPY C2' DPY: C2* DPY C5' DPY: C5* DPY C4' DPY: C4* DPY O4' DPY: O4* DPY C1' DPY: C1* DPY C3' DPY: C3* DPY O3' DPY: O3* DPY O1' DR2: O1* DR2 C1' DR2: C1* DR2 O5' DR2: O5* DR2 C5' DR2: C5* DR2 C6' DR2: C6* DR2 O6' DR2: O6* DR2 C4' DR2: C4* DR2 O4' DR2: O4* DR2 C3' DR2: C3* DR2 O3' DR2: O3* DR2 C2' DR2: C2* DR2 O2' DR2: O2* DR2 O2' DR3: O2* DR3 C2' DR3: C2* DR3 C3' DR3: C3* DR3 O3' DR3: O3* DR3 C4' DR3: C4* DR3 O4' DR3: O4* DR3 C5' DR3: C5* DR3 C6' DR3: C6* DR3 O6' DR3: O6* DR3 O5' DR3: O5* DR3 C1' DR3: C1* DR3 O1' DR3: O1* DR3 C1' DRA: C1* DRA C2' DRA: C2* DRA C3' DRA: C3* DRA N3' DRA: N3* DRA C7' DRA: C7* DRA C8' DRA: C8* DRA O5' DRA: O5* DRA C5' DRA: C5* DRA C6' DRA: C6* DRA C4' DRA: C4* DRA O4' DRA: O4* DRA OP2 DRM: O2P DRM OP1 DRM: O1P DRM OP3 DRM: O3P DRM C6' DRM: C6* DRM O5' DRM: O5* DRM C5' DRM: C5* DRM C4' DRM: C4* DRM C3' DRM: C3* DRM C2' DRM: C2* DRM C1' DRM: C1* DRM O5' DRP: O5* DRP C2' DRP: C2* DRP C5' DRP: C5* DRP C4' DRP: C4* DRP O4' DRP: O4* DRP C1' DRP: C1* DRP C3' DRP: C3* DRP O3' DRP: O3* DRP OP3 DRT: O3P DRT OP1 DRT: O1P DRT OP2 DRT: O2P DRT O5' DRT: O5* DRT C5' DRT: C5* DRT C4' DRT: C4* DRT O4' DRT: O4* DRT C3' DRT: C3* DRT O3' DRT: O3* DRT C2' DRT: C2* DRT C1' DRT: C1* DRT OP1 DRZ: O1P DRZ OP2 DRZ: O2P DRZ OP3 DRZ: O3P DRZ O5' DRZ: O5* DRZ C5' DRZ: C5* DRZ C4' DRZ: C4* DRZ O4' DRZ: O4* DRZ C3' DRZ: C3* DRZ C2' DRZ: C2* DRZ C1' DRZ: C1* DRZ O3' DRZ: O3* DRZ O6' DSU: O6* DSU C6' DSU: C6* DSU C5' DSU: C5* DSU O2' DSU: O2* DSU C4' DSU: C4* DSU O4' DSU: O4* DSU C3' DSU: C3* DSU O3' DSU: O3* DSU C2' DSU: C2* DSU C1' DSU: C1* DSU O1' DSU: O1* DSU OP3 DT: O3P DT OP1 DT: O1P DT OP2 DT: O2P DT O5' DT: O5* DT C5' DT: C5* DT C4' DT: C4* DT O4' DT: O4* DT C3' DT: C3* DT O3' DT: O3* DT C2' DT: C2* DT C1' DT: C1* DT C7 DT: C5M DT C1' DTA: C1* DTA O4' DTA: O4* DTA C2' DTA: C2* DTA O2' DTA: O2* DTA C3' DTA: C3* DTA O3' DTA: O3* DTA C4' DTA: C4* DTA C5' DTA: C5* DTA S5' DTA: S5* DTA C2B DTM: C2* DTM C4B DTM: C4* DTM C5B DTM: C5* DTM C6B DTM: C6* DTM C7' DTM: C7* DTM C9' DTM: C9* DTM CN' DTM: CN* DTM N1' DTM: N1* DTM N2' DTM: N2* DTM N3' DTM: N3* DTM N4' DTM: N4* DTM N8' DTM: N8* DTM N9' DTM: N9* DTM O5' DTP: O5* DTP C5' DTP: C5* DTP C4' DTP: C4* DTP O4' DTP: O4* DTP C3' DTP: C3* DTP O3' DTP: O3* DTP C2' DTP: C2* DTP C1' DTP: C1* DTP OP3 DU: O3P DU OP1 DU: O1P DU OP2 DU: O2P DU O5' DU: O5* DU C5' DU: C5* DU C4' DU: C4* DU O4' DU: O4* DU C3' DU: C3* DU O3' DU: O3* DU C2' DU: C2* DU C1' DU: C1* DU C1' DUD: C1* DUD C2' DUD: C2* DUD C3' DUD: C3* DUD C4' DUD: C4* DUD O4' DUD: O4* DUD O3' DUD: O3* DUD C5' DUD: C5* DUD O5' DUD: O5* DUD C1' DUN: C1* DUN C2' DUN: C2* DUN C3' DUN: C3* DUN C4' DUN: C4* DUN O4' DUN: O4* DUN O3' DUN: O3* DUN C5' DUN: C5* DUN O5' DUN: O5* DUN C1' DUP: C1* DUP C2' DUP: C2* DUP C3' DUP: C3* DUP O3' DUP: O3* DUP O4' DUP: O4* DUP C4' DUP: C4* DUP C5' DUP: C5* DUP O5' DUP: O5* DUP C1' DUR: C1* DUR C2' DUR: C2* DUR C3' DUR: C3* DUR C4' DUR: C4* DUR O3' DUR: O3* DUR O4' DUR: O4* DUR C5' DUR: C5* DUR O5' DUR: O5* DUR C1' DUT: C1* DUT C2' DUT: C2* DUT C3' DUT: C3* DUT C4' DUT: C4* DUT O4' DUT: O4* DUT O3' DUT: O3* DUT C5' DUT: C5* DUT O5' DUT: O5* DUT OP1 DXD: O1P DXD OP2 DXD: O2P DXD O5' DXD: O5* DXD C5' DXD: C5* DXD C4' DXD: C4* DXD C1' DXD: C1* DXD C6' DXD: C6* DXD O6' DXD: O6* DXD C2' DXD: C2* DXD C3' DXD: C3* DXD O3' DXD: O3* DXD OP3 DXD: O3P DXD OP1 DXN: O1P DXN OP2 DXN: O2P DXN O5' DXN: O5* DXN C5' DXN: C5* DXN C4' DXN: C4* DXN C1' DXN: C1* DXN C6' DXN: C6* DXN O6' DXN: O6* DXN C2' DXN: C2* DXN C3' DXN: C3* DXN O3' DXN: O3* DXN OP3 DXN: O3P DXN OP1 E: O1P E OP2 E: O2P E OP3 E: O3P E O5' E: O5* E C5' E: C5* E C4' E: C4* E O4' E: O4* E C3' E: C3* E O3' E: O3* E C2' E: C2* E C1' E: C1* E OP1 E1X: O1P E1X OP2 E1X: O2P E1X O5' E1X: O5* E1X C2' E1X: C2* E1X C5' E1X: C5* E1X C4' E1X: C4* E1X O4' E1X: O4* E1X C1' E1X: C1* E1X C3' E1X: C3* E1X O3' E1X: O3* E1X OP3 E1X: O3P E1X OP1 EDA: O1P EDA OP2 EDA: O2P EDA OP3 EDA: O3P EDA O5' EDA: O5* EDA C2' EDA: C2* EDA C5' EDA: C5* EDA C4' EDA: C4* EDA O4' EDA: O4* EDA C1' EDA: C1* EDA C3' EDA: C3* EDA O3' EDA: O3* EDA OP1 EDC: O1P EDC OP2 EDC: O2P EDC OP3 EDC: O3P EDC O5' EDC: O5* EDC C5' EDC: C5* EDC C4' EDC: C4* EDC O4' EDC: O4* EDC C1' EDC: C1* EDC C2' EDC: C2* EDC C3' EDC: C3* EDC O3' EDC: O3* EDC N1U EEB: UN1 EEB C2U EEB: UC2 EEB N3U EEB: UN3 EEB C4U EEB: UC4 EEB C5U EEB: UC5 EEB C6U EEB: UC6 EEB O2U EEB: UO2 EEB O4U EEB: UO4 EEB C1D EEB:UC1* EEB C2D EEB:UC2* EEB O2D EEB:UO2* EEB C3D EEB:UC3* EEB C4D EEB:UC4* EEB O4D EEB:UO4* EEB O3D EEB:UO3* EEB C5D EEB:UC5* EEB O5D EEB:UO5* EEB C1E EEB: EC1 EEB C2E EEB: EC2 EEB C3E EEB: EC3 EEB C4E EEB: EC4 EEB O1E EEB: EO1 EEB O2E EEB: EO2 EEB OP3 EIT: O3P EIT OP2 EIT: O2P EIT O5' EIT: O5* EIT C5' EIT: C5* EIT C4' EIT: C4* EIT O4' EIT: O4* EIT C1' EIT: C1* EIT C2' EIT: C2* EIT O2' EIT: O2* EIT C3' EIT: C3* EIT O3' EIT: O3* EIT OP1 EIT: O1P EIT C5' EMA: C5* EMA O5' EMA: O5* EMA C4' EMA: C4* EMA C1' EMA: C1* EMA C1' ENA: C1* ENA O2' ENA: O2* ENA C2' ENA: C2* ENA C4' ENA: C4* ENA C3' ENA: C3* ENA O4' ENA: O4* ENA C5' ENA: C5* ENA O3' ENA: O3* ENA O5' ENA: O5* ENA C6' ENA: C6* ENA C7' ENA: C7* ENA O6' ENA: O6* ENA C8' ENA: C8* ENA C9' ENA: C9* ENA C0' ENA: C0* ENA O7' ENA: O7* ENA O8' ENA: O8* ENA O5' ENP: O5* ENP C5' ENP: C5* ENP C4' ENP: C4* ENP O4' ENP: O4* ENP C3' ENP: C3* ENP O3' ENP: O3* ENP C2' ENP: C2* ENP O2' ENP: O2* ENP C1' ENP: C1* ENP O9' ENP: O9* ENP C0' ENP: C0* ENP C9' ENP: C9* ENP O8' ENP: O8* ENP C8' ENP: C8* ENP O7' ENP: O7* ENP C7' ENP: C7* ENP O6' ENP: O6* ENP C6' ENP: C6* ENP O2' EOM: O2* EOM CA' EOM: CA* EOM OB' EOM: OB* EOM CC' EOM: CC* EOM CD' EOM: CD* EOM C1' EPF: C1* EPF C2' EPF: C2* EPF C3' EPF: C3* EPF N3' EPF: N3* EPF C3X EPF:CN3* EPF C4' EPF: C4* EPF O4' EPF: O4* EPF C5' EPF: C5* EPF O5' EPF: O5* EPF C6' EPF: C6* EPF N1U EPU: UN1 EPU C2U EPU: UC2 EPU N3U EPU: UN3 EPU C4U EPU: UC4 EPU C5U EPU: UC5 EPU C6U EPU: UC6 EPU O2U EPU: UO2 EPU O4U EPU: UO4 EPU C1D EPU:UC1* EPU C2D EPU:UC2* EPU O2D EPU:UO2* EPU C3D EPU:UC3* EPU C4D EPU:UC4* EPU O4D EPU:UO4* EPU O3D EPU:UO3* EPU C5D EPU:UC5* EPU O5D EPU:UO5* EPU C1E EPU: EC1 EPU O1E EPU: EO1 EPU O2E EPU: EO2 EPU C2E EPU: EC2 EPU C3E EPU: EC3 EPU C1' ERT: C1* ERT C2' ERT: C2* ERT C3' ERT: C3* ERT N3' ERT: N3* ERT C7' ERT: C7* ERT C8' ERT: C8* ERT C4' ERT: C4* ERT O4' ERT: O4* ERT C5' ERT: C5* ERT O5' ERT: O5* ERT C6' ERT: C6* ERT O5' F2N: O5* F2N C5' F2N: C5* F2N C4' F2N: C4* F2N O4' F2N: O4* F2N C3' F2N: C3* F2N O3' F2N: O3* F2N C2' F2N: C2* F2N O2' F2N: O2* F2N C1' F2N: C1* F2N C1' F42: C1* F42 C2' F42: C2* F42 O2' F42: O2* F42 C3' F42: C3* F42 O3' F42: O3* F42 C4' F42: C4* F42 O4' F42: O4* F42 C5' F42: C5* F42 O5' F42: O5* F42 NA F43: N_A F43 NB F43: N_B F43 NC F43: N_C F43 ND F43: N_D F43 OP1 FA2: O1P FA2 OP2 FA2: O2P FA2 O3' FA2: O3* FA2 C2' FA2: C2* FA2 C4' FA2: C4* FA2 O4' FA2: O4* FA2 C1' FA2: C1* FA2 C3' FA2: C3* FA2 O2' FA2: O2* FA2 OP3 FA2: O3P FA2 OP1 FA5: O1P FA5 OP2 FA5: O2P FA5 OP3 FA5: O3P FA5 O5' FA5: O5* FA5 C5' FA5: C5* FA5 C4' FA5: C4* FA5 O4' FA5: O4* FA5 C3' FA5: C3* FA5 O3' FA5: O3* FA5 C2' FA5: C2* FA5 O2' FA5: O2* FA5 C1' FA5: C1* FA5 PA FAA: AP FAA O1A FAA: AO1 FAA O2A FAA: AO2 FAA O5B FAA:AO5* FAA C5B FAA:AC5* FAA C4B FAA:AC4* FAA O4B FAA:AO4* FAA C3B FAA:AC3* FAA O3B FAA:AO3* FAA C2B FAA:AC2* FAA O2B FAA:AO2* FAA C1B FAA:AC1* FAA N9A FAA: AN9 FAA C8A FAA: AC8 FAA N7A FAA: AN7 FAA C5A FAA: AC5 FAA C6A FAA: AC6 FAA N6A FAA: AN6 FAA N1A FAA: AN1 FAA C2A FAA: AC2 FAA N3A FAA: AN3 FAA C4A FAA: AC4 FAA C4X FAA: C4A FAA C5X FAA: C5A FAA C1' FAA: C1* FAA C2' FAA: C2* FAA O2' FAA: O2* FAA C3' FAA: C3* FAA O3' FAA: O3* FAA C4' FAA: C4* FAA O4' FAA: O4* FAA C5' FAA: C5* FAA O5' FAA: O5* FAA PA FAB: AP FAB O1A FAB: AO1 FAB O2A FAB: AO2 FAB O5B FAB:AO5* FAB C5B FAB:AC5* FAB C4B FAB:AC4* FAB O4B FAB:AO4* FAB C3B FAB:AC3* FAB O3B FAB:AO3* FAB C2B FAB:AC2* FAB O2B FAB:AO2* FAB C1B FAB:AC1* FAB N9A FAB: AN9 FAB C8A FAB: AC8 FAB N7A FAB: AN7 FAB C5A FAB: AC5 FAB C6A FAB: AC6 FAB N6A FAB: AN6 FAB N1A FAB: AN1 FAB C2A FAB: AC2 FAB N3A FAB: AN3 FAB C4A FAB: AC4 FAB C4X FAB: C4A FAB C5X FAB: C5A FAB C1' FAB: C1* FAB C2D FAB: C2* FAB O2' FAB: O2* FAB C3D FAB: C3* FAB O3D FAB: O3* FAB C4D FAB: C4* FAB O4' FAB: O4* FAB C5D FAB: C5* FAB O5' FAB: O5* FAB PA FAD: AP FAD O1A FAD: AO1 FAD O2A FAD: AO2 FAD O5B FAD:AO5* FAD C5B FAD:AC5* FAD C4B FAD:AC4* FAD O4B FAD:AO4* FAD C3B FAD:AC3* FAD O3B FAD:AO3* FAD C2B FAD:AC2* FAD O2B FAD:AO2* FAD C1B FAD:AC1* FAD N9A FAD: AN9 FAD C8A FAD: AC8 FAD N7A FAD: AN7 FAD C5A FAD: AC5 FAD C6A FAD: AC6 FAD N6A FAD: AN6 FAD N1A FAD: AN1 FAD C2A FAD: AC2 FAD N3A FAD: AN3 FAD C4A FAD: AC4 FAD C4X FAD: C4A FAD C5X FAD: C5A FAD C1' FAD: C1* FAD C2' FAD: C2* FAD O2' FAD: O2* FAD C3' FAD: C3* FAD O3' FAD: O3* FAD C4' FAD: C4* FAD O4' FAD: O4* FAD C5' FAD: C5* FAD O5' FAD: O5* FAD PA FAE: AP FAE O1A FAE: AO1 FAE O2A FAE: AO2 FAE O5B FAE:AO5* FAE C5B FAE:AC5* FAE C4B FAE:AC4* FAE O4B FAE:AO4* FAE C3B FAE:AC3* FAE O3B FAE:AO3* FAE C2B FAE:AC2* FAE O2B FAE:AO2* FAE C1B FAE:AC1* FAE N9A FAE: AN9 FAE C8A FAE: AC8 FAE N7A FAE: AN7 FAE C5A FAE: AC5 FAE C6A FAE: AC6 FAE N6A FAE: AN6 FAE N1A FAE: AN1 FAE C2A FAE: AC2 FAE N3A FAE: AN3 FAE C4A FAE: AC4 FAE C4X FAE: C4A FAE C5X FAE: C5A FAE C1' FAE: C1* FAE C2' FAE: C2* FAE O2' FAE: O2* FAE C3' FAE: C3* FAE O3' FAE: O3* FAE C4' FAE: C4* FAE O4' FAE: O4* FAE C5' FAE: C5* FAE O5' FAE: O5* FAE O5' FAG: O5* FAG C5' FAG: C5* FAG C4' FAG: C4* FAG O4' FAG: O4* FAG C1' FAG: C1* FAG C2' FAG: C2* FAG C3' FAG: C3* FAG O3' FAG: O3* FAG CAA FAG:AC10 FAG CBA FAG:AC11 FAG H31 FAG:1H3 FAG N1A FAM: AN1 FAM C2A FAM: AC2 FAM N3A FAM: AN3 FAM C4A FAM: AC4 FAM C5A FAM: AC5 FAM C6A FAM: AC6 FAM N6A FAM: AN6 FAM N7A FAM: AN7 FAM C8A FAM: AC8 FAM N9A FAM: AN9 FAM C1B FAM:AC1* FAM C2B FAM:AC2* FAM O2B FAM:AO2* FAM C3B FAM:AC3* FAM O3B FAM:AO3* FAM P3B FAM:AP3* FAM O7A FAM: AO7 FAM O8A FAM: AO8 FAM O9A FAM: AO9 FAM C4B FAM:AC4* FAM O4B FAM:AO4* FAM C5B FAM:AC5* FAM O5B FAM:AO5* FAM P1A FAM: AP1 FAM O1A FAM: AO1 FAM O2A FAM: AO2 FAM O3A FAM: AO3 FAM P2A FAM: AP2 FAM O4A FAM: AO4 FAM O5A FAM: AO5 FAM O6A FAM: AO6 FAM CBP FAM:PC11 FAM CCP FAM:PC12 FAM CDP FAM:PC13 FAM CEP FAM:PC14 FAM CAP FAM:PC10 FAM OAP FAM:PO10 FAM C9P FAM: PC9 FAM O9P FAM: PO9 FAM N8P FAM: PN8 FAM C7P FAM: PC7 FAM C6P FAM: PC6 FAM C5P FAM: PC5 FAM O5P FAM: PO5 FAM N4P FAM: PN4 FAM C3P FAM: PC3 FAM C2P FAM: PC2 FAM PA FAO: AP FAO O1A FAO: AO1 FAO O2A FAO: AO2 FAO O5'A FAO:AO5* FAO C5'A FAO:AC5* FAO C4'A FAO:AC4* FAO O4'A FAO:AO4* FAO C3'A FAO:AC3* FAO O3'A FAO:AO3* FAO C2'A FAO:AC2* FAO O2'A FAO:AO2* FAO C1'A FAO:AC1* FAO N9A FAO: AN9 FAO C8A FAO: AC8 FAO N7A FAO: AN7 FAO C5AA FAO:AC5 FAO C6A FAO: AC6 FAO N6A FAO: AN6 FAO N1A FAO: AN1 FAO C2A FAO: AC2 FAO N3A FAO: AN3 FAO C4AA FAO:AC4 FAO C1' FAO: C1* FAO C2' FAO: C2* FAO O2' FAO: O2* FAO C3' FAO: C3* FAO O3' FAO: O3* FAO C4' FAO: C4* FAO O4' FAO: O4* FAO C5' FAO: C5* FAO O5' FAO: O5* FAO O1X FAO: XO1 FAO O2X FAO: XO2 FAO PA FAS: AP FAS O1A FAS: AO1 FAS O2A FAS: AO2 FAS O5B FAS:AO5* FAS C5B FAS:AC5* FAS C4B FAS:AC4* FAS O4B FAS:AO4* FAS C3B FAS:AC3* FAS O3B FAS:AO3* FAS C2B FAS:AC2* FAS O2B FAS:AO2* FAS C1B FAS:AC1* FAS N9A FAS: AN9 FAS C8A FAS: AC8 FAS N7A FAS: AN7 FAS C5A FAS: AC5 FAS C6A FAS: AC6 FAS N6A FAS: AN6 FAS N1A FAS: AN1 FAS C2A FAS: AC2 FAS N3A FAS: AN3 FAS C4A FAS: AC4 FAS C4X FAS: C4A FAS C5X FAS: C5A FAS C1' FAS: C1* FAS C2' FAS: C2* FAS O2' FAS: O2* FAS C3' FAS: C3* FAS O3' FAS: O3* FAS C4' FAS: C4* FAS O4' FAS: O4* FAS C5' FAS: C5* FAS O5' FAS: O5* FAS OS6 FBQ:6OS FBQ PA FCG: AP FCG O1A FCG: AO1 FCG O2A FCG: AO2 FCG O5B FCG:AO5* FCG C5B FCG:AC5* FCG C4B FCG:AC4* FCG O4B FCG:AO4* FCG C1B FCG:AC1* FCG N9A FCG: AN9 FCG C4A FCG: AC4 FCG N3A FCG: AN3 FCG C2A FCG: AC2 FCG N1A FCG: AN1 FCG C6A FCG: AC6 FCG N6A FCG: AN6 FCG C5A FCG: AC5 FCG N7A FCG: AN7 FCG C8A FCG: AC8 FCG C2B FCG:AC2* FCG O2B FCG:AO2* FCG C3B FCG:AC3* FCG O3B FCG:AO3* FCG O5' FCG: O5* FCG C5' FCG: C5* FCG C4' FCG: C4* FCG O4' FCG: O4* FCG C3' FCG: C3* FCG O3' FCG: O3* FCG C2' FCG: C2* FCG O2' FCG: O2* FCG C1' FCG: C1* FCG C4X FCG: C4A FCG C5X FCG: C5A FCG N1A FCX: AN1 FCX C2A FCX: AC2 FCX N3A FCX: AN3 FCX C4A FCX: AC4 FCX C5A FCX: AC5 FCX C6A FCX: AC6 FCX N6A FCX: AN6 FCX N7A FCX: AN7 FCX C8A FCX: AC8 FCX N9A FCX: AN9 FCX C1B FCX:AC1* FCX C2B FCX:AC2* FCX O2B FCX:AO2* FCX C3B FCX:AC3* FCX O3B FCX:AO3* FCX P3B FCX:AP3* FCX O7A FCX: AO7 FCX O8A FCX: AO8 FCX O9A FCX: AO9 FCX C4B FCX:AC4* FCX O4B FCX:AO4* FCX C5B FCX:AC5* FCX O5B FCX:AO5* FCX P1A FCX: AP1 FCX O1A FCX: AO1 FCX O2A FCX: AO2 FCX O3A FCX: AO3 FCX P2A FCX: AP2 FCX O4A FCX: AO4 FCX O5A FCX: AO5 FCX O6A FCX: AO6 FCX CBP FCX:PC11 FCX CCP FCX:PC12 FCX CDP FCX:PC13 FCX CEP FCX:PC14 FCX CAP FCX:PC10 FCX OAP FCX:PO10 FCX C9P FCX: PC9 FCX O9P FCX: PO9 FCX N8P FCX: PN8 FCX C7P FCX: PC7 FCX C6P FCX: PC6 FCX C5P FCX: PC5 FCX O5P FCX: PO5 FCX N4P FCX: PN4 FCX C3P FCX: PC3 FCX C2P FCX: PC2 FCX PA FDA: AP FDA O1A FDA: AO1 FDA O2A FDA: AO2 FDA O5B FDA:AO5* FDA C5B FDA:AC5* FDA C4B FDA:AC4* FDA O4B FDA:AO4* FDA C3B FDA:AC3* FDA O3B FDA:AO3* FDA C2B FDA:AC2* FDA O2B FDA:AO2* FDA C1B FDA:AC1* FDA N9A FDA: AN9 FDA C8A FDA: AC8 FDA N7A FDA: AN7 FDA C5A FDA: AC5 FDA C6A FDA: AC6 FDA N6A FDA: AN6 FDA N1A FDA: AN1 FDA C2A FDA: AC2 FDA N3A FDA: AN3 FDA C4A FDA: AC4 FDA C4X FDA: C4A FDA C5X FDA: C5A FDA C1' FDA: C1* FDA C2' FDA: C2* FDA O2' FDA: O2* FDA C3' FDA: C3* FDA O3' FDA: O3* FDA C4' FDA: C4* FDA O4' FDA: O4* FDA C5' FDA: C5* FDA O5' FDA: O5* FDA ND FDD: N_D FDD NA FDD: N_A FDD NC FDD: N_C FDD NB FDD: N_B FDD NA FDE: N_A FDE NB FDE: N_B FDE NC FDE: N_C FDE ND FDE: N_D FDE O4' FDM: O4* FDM C1' FDM: C1* FDM C2' FDM: C2* FDM C3' FDM: C3* FDM C4' FDM: C4* FDM O5' FDM: O5* FDM C5' FDM: C5* FDM C1' FFD: C1* FFD O4' FFD: O4* FFD C2' FFD: C2* FFD C3' FFD: C3* FFD O3' FFD: O3* FFD C4' FFD: C4* FFD C5' FFD: C5* FFD O5' FFD: O5* FFD C1' FHU: C1* FHU C2' FHU: C2* FHU O2' FHU: O2* FHU C3' FHU: C3* FHU C4' FHU: C4* FHU O3' FHU: O3* FHU O4' FHU: O4* FHU C5' FHU: C5* FHU O5' FHU: O5* FHU OP1 FHU: O1P FHU OP2 FHU: O2P FHU OP3 FHU: O3P FHU C3B FL8: C3* FL8 C1' FL9: C1* FL9 C2' FL9: C2* FL9 C3' FL9: C3* FL9 C4' FL9: C4* FL9 C5' FL9: C5* FL9 C6' FL9: C6* FL9 O2' FL9: O2* FL9 O4' FL9: O4* FL9 C1X FLD: XC1 FLD N2X FLD: XN2 FLD C3X FLD: XC3 FLD C4X FLD: XC4 FLD C5X FLD: XC5 FLD C6X FLD: XC6 FLD N7X FLD: XN7 FLD C8X FLD: XC8 FLD C9X FLD: XC9 FLD CAX FLD:XC10 FLD OAX FLD:XO10 FLD CBX FLD:XC11 FLD CCX FLD:XC12 FLD CDX FLD:XC13 FLD CEX FLD:XC14 FLD CFX FLD:XC15 FLD CGX FLD:XC16 FLD CHX FLD:XC17 FLD CIX FLD:XC18 FLD CJX FLD:XC19 FLD CKX FLD:XC20 FLD NLX FLD:XN21 FLD CMX FLD:XC22 FLD CNX FLD:XC23 FLD COX FLD:XC24 FLD C1' FLN: C1* FLN C2' FLN: C2* FLN C3' FLN: C3* FLN C4' FLN: C4* FLN C5' FLN: C5* FLN C6' FLN: C6* FLN C1' FLQ: C1* FLQ C2' FLQ: C2* FLQ C3' FLQ: C3* FLQ C4' FLQ: C4* FLQ C5' FLQ: C5* FLQ C6' FLQ: C6* FLQ O8' FLQ: O8* FLQ C9' FLQ: C9* FLQ O9' FLQ: O9* FLQ C1B FMA: C1* FMA C2B FMA: C2* FMA O2B FMA: O2* FMA C3B FMA: C3* FMA O3' FMA: O3* FMA C4B FMA: C4* FMA O4' FMA: O4* FMA C5B FMA: C5* FMA O5' FMA: O5* FMA NA FMI: N_A FMI NB FMI: N_B FMI NC FMI: N_C FMI ND FMI: N_D FMI C1' FMN: C1* FMN C2' FMN: C2* FMN O2' FMN: O2* FMN C3' FMN: C3* FMN O3' FMN: O3* FMN C4' FMN: C4* FMN O4' FMN: O4* FMN C5' FMN: C5* FMN O5' FMN: O5* FMN O5' FMP: O5* FMP C5' FMP: C5* FMP C4' FMP: C4* FMP O4' FMP: O4* FMP C3' FMP: C3* FMP O3' FMP: O3* FMP C2' FMP: C2* FMP O2' FMP: O2* FMP C1' FMP: C1* FMP C1' FMU: C1* FMU C2' FMU: C2* FMU O2' FMU: O2* FMU C3' FMU: C3* FMU C4' FMU: C4* FMU O3' FMU: O3* FMU O4' FMU: O4* FMU C5' FMU: C5* FMU O5' FMU: O5* FMU CAA FNR:C10A FNR C1' FNR: C1* FNR C2' FNR: C2* FNR O2' FNR: O2* FNR C3' FNR: C3* FNR O3' FNR: O3* FNR C4' FNR: C4* FNR O4' FNR: O4* FNR C5' FNR: C5* FNR O5' FNR: O5* FNR C1' FNS: C1* FNS C2' FNS: C2* FNS O2' FNS: O2* FNS C3' FNS: C3* FNS O3' FNS: O3* FNS C4' FNS: C4* FNS O4' FNS: O4* FNS C5' FNS: C5* FNS O5' FNS: O5* FNS O5' FOX: O5* FOX C5' FOX: C5* FOX C4' FOX: C4* FOX C6' FOX: C6* FOX C3' FOX: C3* FOX O3' FOX: O3* FOX C2' FOX: C2* FOX C1' FOX: C1* FOX N1A FRE: AN1 FRE C2A FRE: AC2 FRE N3A FRE: AN3 FRE C4A FRE: AC4 FRE C5A FRE: AC5 FRE C6A FRE: AC6 FRE N6A FRE: AN6 FRE N7A FRE: AN7 FRE C8A FRE: AC8 FRE N9A FRE: AN9 FRE C1B FRE:AC1* FRE C2B FRE:AC2* FRE O2B FRE:AO2* FRE C3B FRE:AC3* FRE O3B FRE:AO3* FRE P3B FRE:AP3* FRE O7A FRE: AO7 FRE O8A FRE: AO8 FRE O9A FRE: AO9 FRE C4B FRE:AC4* FRE O4B FRE:AO4* FRE C5B FRE:AC5* FRE O5B FRE:AO5* FRE P1A FRE: AP1 FRE O1A FRE: AO1 FRE O2A FRE: AO2 FRE O3A FRE: AO3 FRE P2A FRE: AP2 FRE O4A FRE: AO4 FRE O5A FRE: AO5 FRE O6A FRE: AO6 FRE CBP FRE:PC11 FRE CCP FRE:PC12 FRE CDP FRE:PC13 FRE CEP FRE:PC14 FRE CAP FRE:PC10 FRE OAP FRE:PO10 FRE C9P FRE: PC9 FRE O9P FRE: PO9 FRE N8P FRE: PN8 FRE C7P FRE: PC7 FRE C6P FRE: PC6 FRE C5P FRE: PC5 FRE O5P FRE: PO5 FRE N4P FRE: PN4 FRE C3P FRE: PC3 FRE C2P FRE: PC2 FRE S1P FRE: PS1 FRE O13 FRN:1OCT FRN C2A FSM: AC2 FSM C3A FSM: AC3 FSM C4A FSM: AC4 FSM C5A FSM: AC5 FSM C6A FSM: AC6 FSM C7A FSM: AC7 FSM C8A FSM: AC8 FSM N2A FSM: AN2 FSM O1A FSM: AO1 FSM O3A FSM: AO3 FSM O4A FSM: AO4 FSM O5A FSM: AO5 FSM O6A FSM: AO6 FSM O7A FSM: AO7 FSM C1B FSM: BC1 FSM C2B FSM: BC2 FSM C3B FSM: BC3 FSM C4B FSM: BC4 FSM C5B FSM: BC5 FSM C6B FSM: BC6 FSM C7B FSM: BC7 FSM C8B FSM: BC8 FSM N2B FSM: BN2 FSM O1B FSM: BO1 FSM O3B FSM: BO3 FSM O5B FSM: BO5 FSM O6B FSM: BO6 FSM O7B FSM: BO7 FSM O5' FUP: O5* FUP C5' FUP: C5* FUP C4' FUP: C4* FUP O4' FUP: O4* FUP C3' FUP: C3* FUP F3' FUP: F3* FUP C2' FUP: C2* FUP C1' FUP: C1* FUP C1 FVF:1C FVF O1 FVF:1O FVF CB1 FVF:1CB FVF CG1 FVF:1CG FVF CDB FVF:1CD1 FVF CDC FVF:1CD2 FVF CEB FVF:1CE1 FVF CEC FVF:1CE2 FVF CZ1 FVF:1CZ FVF N2 FVF:2N FVF C2 FVF:2C FVF O2 FVF:2O FVF CA2 FVF:2CA FVF CB2 FVF:2CB FVF CG2 FVF:2CG FVF CDL FVF:2CD1 FVF CDM FVF:2CD2 FVF CEL FVF:2CE1 FVF CEM FVF:2CE2 FVF CZ2 FVF:2CZ FVF N3 FVF:3N FVF CA3 FVF:3CA FVF CB3 FVF:3CB FVF CGD FVF:3CG1 FVF CGN FVF:3CG2 FVF P3 FVF:3P FVF OPV FVF:1OP3 FVF OPW FVF:2OP3 FVF OPX FVF:3OP3 FVF CA4 FVF:4CA FVF C4 FVF:4C FVF O4 FVF:4O FVF O11 FVF:4OXT FVF CB4 FVF:4CB FVF CG4 FVF:4CG FVF CD5 FVF:4CD1 FVF CD6 FVF:4CD2 FVF CE5 FVF:4CE1 FVF CE6 FVF:4CE2 FVF CZ4 FVF:4CZ FVF O5' FYA: O5* FYA C5' FYA: C5* FYA C4' FYA: C4* FYA O4' FYA: O4* FYA C3' FYA: C3* FYA O3' FYA: O3* FYA C2' FYA: C2* FYA O2' FYA: O2* FYA C1' FYA: C1* FYA OP3 G: O3P G OP1 G: O1P G OP2 G: O2P G O5' G: O5* G C5' G: C5* G C4' G: C4* G O4' G: O4* G C3' G: C3* G O3' G: O3* G C2' G: C2* G O2' G: O2* G C1' G: C1* G P' G16: P* G16 O1X G16:O1P* G16 O2X G16:O2P* G16 O3X G16:O3P* G16 C1' G1R: C1* G1R O4' G1R: O4* G1R C2' G1R: C2* G1R O2' G1R: O2* G1R C3' G1R: C3* G1R O3' G1R: O3* G1R C4' G1R: C4* G1R C5' G1R: C5* G1R O5' G1R: O5* G1R OP3 G25: O3P G25 OP1 G25: O1P G25 OP2 G25: O2P G25 O5' G25: O5* G25 C5' G25: C5* G25 C4' G25: C4* G25 O4' G25: O4* G25 C3' G25: C3* G25 O3' G25: O3* G25 C2' G25: C2* G25 O2' G25: O2* G25 C1' G25: C1* G25 OP3 G2L: O3P G2L OP1 G2L: O1P G2L OP2 G2L: O2P G2L O5' G2L: O5* G2L C5' G2L: C5* G2L C4' G2L: C4* G2L O4' G2L: O4* G2L C3' G2L: C3* G2L O3' G2L: O3* G2L C2' G2L: C2* G2L O2' G2L: O2* G2L C1' G2L: C1* G2L CA' G2L: CA* G2L CB' G2L: CB* G2L OC' G2L: OC* G2L CD' G2L: CD* G2L O5' G2P: O5* G2P C5' G2P: C5* G2P C4' G2P: C4* G2P O4' G2P: O4* G2P C3' G2P: C3* G2P O3' G2P: O3* G2P C2' G2P: C2* G2P O2' G2P: O2* G2P C1' G2P: C1* G2P C1' G2R: C1* G2R O4' G2R: O4* G2R C2' G2R: C2* G2R O2' G2R: O2* G2R C3' G2R: C3* G2R O3' G2R: O3* G2R C4' G2R: C4* G2R C5' G2R: C5* G2R O5' G2R: O5* G2R OP3 G2S: O3P G2S O5' G2S: O5* G2S C5' G2S: C5* G2S C4' G2S: C4* G2S O4' G2S: O4* G2S C3' G2S: C3* G2S O3' G2S: O3* G2S C2' G2S: C2* G2S C1' G2S: C1* G2S O5' G31: O5* G31 C5' G31: C5* G31 C4' G31: C4* G31 O4' G31: O4* G31 C3' G31: C3* G31 C2' G31: C2* G31 C1' G31: C1* G31 O5' G32: O5* G32 C5' G32: C5* G32 C4' G32: C4* G32 O4' G32: O4* G32 C3' G32: C3* G32 O3' G32: O3* G32 C2' G32: C2* G32 C1' G32: C1* G32 O5' G33: O5* G33 C5' G33: C5* G33 C4' G33: C4* G33 O4' G33: O4* G33 C3' G33: C3* G33 O3' G33: O3* G33 C2' G33: C2* G33 C1' G33: C1* G33 O5' G36: O5* G36 C5' G36: C5* G36 C4' G36: C4* G36 O4' G36: O4* G36 C3' G36: C3* G36 O3' G36: O3* G36 C2' G36: C2* G36 C1' G36: C1* G36 O5' G38: O5* G38 C5' G38: C5* G38 C4' G38: C4* G38 O4' G38: O4* G38 C3' G38: C3* G38 C2' G38: C2* G38 C1' G38: C1* G38 O5' G3D: O5* G3D C5' G3D: C5* G3D C4' G3D: C4* G3D O4' G3D: O4* G3D C3' G3D: C3* G3D O3' G3D: O3* G3D C2' G3D: C2* G3D O2' G3D: O2* G3D C1' G3D: C1* G3D O5' G42: O5* G42 C5' G42: C5* G42 C4' G42: C4* G42 O4' G42: O4* G42 C3' G42: C3* G42 O3' G42: O3* G42 C2' G42: C2* G42 C1' G42: C1* G42 O5' G46: O5* G46 C5' G46: C5* G46 C4' G46: C4* G46 O4' G46: O4* G46 C3' G46: C3* G46 O3' G46: O3* G46 C2' G46: C2* G46 C1' G46: C1* G46 O2' G46: O2* G46 O5' G47: O5* G47 C5' G47: C5* G47 C4' G47: C4* G47 O4' G47: O4* G47 C3' G47: C3* G47 O3' G47: O3* G47 C2' G47: C2* G47 C1' G47: C1* G47 O5' G48: O5* G48 C5' G48: C5* G48 C4' G48: C4* G48 O4' G48: O4* G48 C3' G48: C3* G48 O3' G48: O3* G48 C2' G48: C2* G48 O2' G48: O2* G48 C1' G48: C1* G48 CA' G48: CA* G48 CB' G48: CB* G48 OC' G48: OC* G48 CD' G48: CD* G48 O5' G49: O5* G49 C5' G49: C5* G49 C4' G49: C4* G49 O4' G49: O4* G49 C3' G49: C3* G49 O3' G49: O3* G49 C2' G49: C2* G49 C1' G49: C1* G49 O5' G4P: O5* G4P C5' G4P: C5* G4P C4' G4P: C4* G4P O4' G4P: O4* G4P C3' G4P: C3* G4P O3' G4P: O3* G4P C2' G4P: C2* G4P O2' G4P: O2* G4P C1' G4P: C1* G4P O5' G5P: O5* G5P C5' G5P: C5* G5P C4' G5P: C4* G5P O4' G5P: O4* G5P C3' G5P: C3* G5P O3' G5P: O3* G5P C2' G5P: C2* G5P O2' G5P: O2* G5P C1' G5P: C1* G5P O5F G5P:AO5* G5P C5F G5P:AC5* G5P C4F G5P:AC4* G5P O4F G5P:AO4* G5P C1F G5P:AC1* G5P C2F G5P:AC2* G5P O2F G5P:AO2* G5P C3F G5P:AC3* G5P O3F G5P:AO3* G5P N9A G5P: AN9 G5P C4A G5P: AC4 G5P N3A G5P: AN3 G5P C2A G5P: AC2 G5P N1A G5P: AN1 G5P C6A G5P: AC6 G5P N6A G5P: AN6 G5P C5A G5P: AC5 G5P N7A G5P: AN7 G5P C8A G5P: AC8 G5P OP3 G7M: O3P G7M OP1 G7M: O1P G7M OP2 G7M: O2P G7M O5' G7M: O5* G7M C5' G7M: C5* G7M C4' G7M: C4* G7M O4' G7M: O4* G7M C3' G7M: C3* G7M O3' G7M: O3* G7M C2' G7M: C2* G7M O2' G7M: O2* G7M C1' G7M: C1* G7M C4' GA2: C4* GA2 O4' GA2: O4* GA2 C3' GA2: C3* GA2 O3' GA2: O3* GA2 C2' GA2: C2* GA2 O1' GA2: O1* GA2 C1' GA2: C1* GA2 OP3 GAO: O3P GAO OP1 GAO: O1P GAO OP2 GAO: O2P GAO O5' GAO: O5* GAO C5' GAO: C5* GAO C4' GAO: C4* GAO O4' GAO: O4* GAO C3' GAO: C3* GAO O3' GAO: O3* GAO C2' GAO: C2* GAO O2' GAO: O2* GAO C1' GAO: C1* GAO C5' GAP: C5* GAP O5' GAP: O5* GAP C4' GAP: C4* GAP O4' GAP: O4* GAP C3' GAP: C3* GAP O3' GAP: O3* GAP C2' GAP: C2* GAP O2' GAP: O2* GAP C1' GAP: C1* GAP C1' GAV: C1* GAV C2' GAV: C2* GAV O2' GAV: O2* GAV C3' GAV: C3* GAV O3' GAV: O3* GAV O4' GAV: O4* GAV C4' GAV: C4* GAV C5' GAV: C5* GAV O5' GAV: O5* GAV OP1 GBB: O1P GBB OP2 GBB: O2P GBB O5' GBB: O5* GBB C5' GBB: C5* GBB C4' GBB: C4* GBB O4' GBB: O4* GBB C1' GBB: C1* GBB C2' GBB: C2* GBB C3' GBB: C3* GBB O3' GBB: O3* GBB OP3 GBB: O3P GBB N11 GCG:N10S GCG O5' GCK: O5* GCK C2' GCK: C2* GCK C5' GCK: C5* GCK C4' GCK: C4* GCK O4' GCK: O4* GCK C1' GCK: C1* GCK C3' GCK: C3* GCK O3' GCK: O3* GCK O5' GCP: O5* GCP C5' GCP: C5* GCP C4' GCP: C4* GCP O4' GCP: O4* GCP C3' GCP: C3* GCP O3' GCP: O3* GCP C2' GCP: C2* GCP O2' GCP: O2* GCP C1' GCP: C1* GCP O5' GCQ: O5* GCQ C5' GCQ: C5* GCQ C4' GCQ: C4* GCQ C3' GCQ: C3* GCQ O3' GCQ: O3* GCQ C2' GCQ: C2* GCQ O4' GCQ: O4* GCQ C1' GCQ: C1* GCQ O5' GDC: O5* GDC C5' GDC: C5* GDC C4' GDC: C4* GDC O4' GDC: O4* GDC C3' GDC: C3* GDC O3' GDC: O3* GDC C2' GDC: C2* GDC O2' GDC: O2* GDC C1' GDC: C1* GDC O1X GDC:AO1P GDC O2X GDC:AO2P GDC C1' GDD: C1* GDD C2' GDD: C2* GDD O2' GDD: O2* GDD C3' GDD: C3* GDD O3' GDD: O3* GDD C4' GDD: C4* GDD O4' GDD: O4* GDD C5' GDD: C5* GDD O5' GDD: O5* GDD O5' GDG: O5* GDG C5' GDG: C5* GDG C4' GDG: C4* GDG C3' GDG: C3* GDG O3' GDG: O3* GDG C2' GDG: C2* GDG O2' GDG: O2* GDG O4' GDG: O4* GDG C1' GDG: C1* GDG O5' GDP: O5* GDP C5' GDP: C5* GDP C4' GDP: C4* GDP O4' GDP: O4* GDP C3' GDP: C3* GDP O3' GDP: O3* GDP C2' GDP: C2* GDP O2' GDP: O2* GDP C1' GDP: C1* GDP O5D GDR: O5* GDR C5D GDR: C5* GDR C4D GDR: C4* GDR O4D GDR: O4* GDR C1D GDR: C1* GDR C2D GDR: C2* GDR O2D GDR: O2* GDR C3D GDR: C3* GDR O3D GDR: O3* GDR C1D GDU: C1* GDU C2D GDU: C2* GDU O2D GDU: O2* GDU C3D GDU: C3* GDU C4D GDU: C4* GDU O4D GDU: O4* GDU O3D GDU: O3* GDU C5D GDU: C5* GDU O5D GDU: O5* GDU C1D GDX: C1* GDX C2D GDX: C2* GDX O2D GDX: O2* GDX C3D GDX: C3* GDX O3D GDX: O3* GDX C4D GDX: C4* GDX O4D GDX: O4* GDX C5D GDX: C5* GDX O5D GDX: O5* GDX O5' GFL: O5* GFL C5' GFL: C5* GFL C4' GFL: C4* GFL O4' GFL: O4* GFL C3' GFL: C3* GFL O3' GFL: O3* GFL C2' GFL: C2* GFL C1' GFL: C1* GFL O2' GGZ: O2* GGZ O3' GGZ: O3* GGZ C3' GGZ: C3* GGZ C4' GGZ: C4* GGZ C5' GGZ: C5* GGZ O5' GGZ: O5* GGZ C2' GGZ: C2* GGZ C1' GGZ: C1* GGZ O4' GGZ: O4* GGZ O5' GH3: O5* GH3 C5' GH3: C5* GH3 C4' GH3: C4* GH3 O4' GH3: O4* GH3 C3' GH3: C3* GH3 C2' GH3: C2* GH3 O2' GH3: O2* GH3 C1' GH3: C1* GH3 C1' GKD: C1* GKD C2' GKD: C2* GKD O2' GKD: O2* GKD C3' GKD: C3* GKD O3' GKD: O3* GKD C4' GKD: C4* GKD O4' GKD: O4* GKD C5' GKD: C5* GKD O5' GKD: O5* GKD C1' GKE: C1* GKE C2' GKE: C2* GKE O2' GKE: O2* GKE C3' GKE: C3* GKE O3' GKE: O3* GKE C4' GKE: C4* GKE O4' GKE: O4* GKE C5' GKE: C5* GKE O5' GKE: O5* GKE CDV GLI:CD31 GLI CDW GLI:CD32 GLI CEV GLI:CE31 GLI CEW GLI:CE32 GLI CGF GLI:CG51 GLI CGG GLI:CG52 GLI CGP GLI:CG61 GLI CGQ GLI:CG62 GLI XE1 GLX: AE1 GLX XE2 GLX: AE2 GLX CRA GM2:CR10 GM2 CRB GM2:CR11 GM2 CRC GM2:CR12 GM2 CRD GM2:CR13 GM2 CRE GM2:CR14 GM2 CRF GM2:CR15 GM2 CRG GM2:CR16 GM2 CRH GM2:CR17 GM2 CLA GM2:CL10 GM2 CLB GM2:CL11 GM2 CLC GM2:CL12 GM2 CLD GM2:CL13 GM2 CLE GM2:CL14 GM2 CLF GM2:CL15 GM2 CLG GM2:CL16 GM2 CLH GM2:CL17 GM2 CLI GM2:CL18 GM2 C1' GMC: C1* GMC O4' GMC: O4* GMC C4' GMC: C4* GMC C5' GMC: C5* GMC O5' GMC: O5* GMC C2' GMC: C2* GMC O2' GMC: O2* GMC C3' GMC: C3* GMC N3' GMC: N3* GMC O5' GMP: O5* GMP C5' GMP: C5* GMP C4' GMP: C4* GMP O4' GMP: O4* GMP C3' GMP: C3* GMP O3' GMP: O3* GMP C2' GMP: C2* GMP O2' GMP: O2* GMP C1' GMP: C1* GMP OP1 GMS: O1P GMS O5' GMS: O5* GMS C2' GMS: C2* GMS C5' GMS: C5* GMS C4' GMS: C4* GMS O4' GMS: O4* GMS C1' GMS: C1* GMS C3' GMS: C3* GMS O3' GMS: O3* GMS OP2 GMS: O2P GMS OP3 GMU: O3P GMU OP2 GMU: O2P GMU O5' GMU: O5* GMU C5' GMU: C5* GMU C4' GMU: C4* GMU O4' GMU: O4* GMU C3' GMU: C3* GMU O3' GMU: O3* GMU C2' GMU: C2* GMU C1' GMU: C1* GMU O2' GMU: O2* GMU CA' GMU: CA* GMU CB' GMU: CB* GMU NC' GMU: NC* GMU CD' GMU: CD* GMU NE' GMU: NE* GMU NF' GMU: NF* GMU OP1 GMU: O1P GMU OP1 GN7: O1P GN7 OP2 GN7: O2P GN7 OP3 GN7: O3P GN7 O5' GN7: O5* GN7 C5' GN7: C5* GN7 C4' GN7: C4* GN7 O4' GN7: O4* GN7 C3' GN7: C3* GN7 O3' GN7: O3* GN7 C2' GN7: C2* GN7 C1' GN7: C1* GN7 OP1 GNE: O1P GNE OP2 GNE: O2P GNE OP3 GNE: O3P GNE O5' GNE: O5* GNE C5' GNE: C5* GNE C4' GNE: C4* GNE O4' GNE: O4* GNE C3' GNE: C3* GNE O3' GNE: O3* GNE C2' GNE: C2* GNE C1' GNE: C1* GNE O5' GNG: O5* GNG C5' GNG: C5* GNG C4' GNG: C4* GNG O4' GNG: O4* GNG C1' GNG: C1* GNG C2' GNG: C2* GNG C3' GNG: C3* GNG O3' GNG: O3* GNG O5' GNH: O5* GNH C5' GNH: C5* GNH C4' GNH: C4* GNH O4' GNH: O4* GNH C3' GNH: C3* GNH O3' GNH: O3* GNH C2' GNH: C2* GNH O2' GNH: O2* GNH C1' GNH: C1* GNH O5' GNP: O5* GNP C5' GNP: C5* GNP C4' GNP: C4* GNP O4' GNP: O4* GNP C3' GNP: C3* GNP O3' GNP: O3* GNP C2' GNP: C2* GNP O2' GNP: O2* GNP C1' GNP: C1* GNP OP1 GOM: O1P GOM OP2 GOM: O2P GOM OP3 GOM: O3P GOM O5' GOM: O5* GOM C5' GOM: C5* GOM C4' GOM: C4* GOM O4' GOM: O4* GOM C1' GOM: C1* GOM C2' GOM: C2* GOM O2' GOM: O2* GOM C3' GOM: C3* GOM O3' GOM: O3* GOM C1' GP2: C1* GP2 C2' GP2: C2* GP2 O2' GP2: O2* GP2 C3' GP2: C3* GP2 O3' GP2: O3* GP2 O4' GP2: O4* GP2 C4' GP2: C4* GP2 C5' GP2: C5* GP2 O5' GP2: O5* GP2 N9A GP3: AN9 GP3 C8A GP3: AC8 GP3 N7A GP3: AN7 GP3 C5A GP3: AC5 GP3 C6A GP3: AC6 GP3 O6A GP3: AO6 GP3 N1A GP3: AN1 GP3 C2A GP3: AC2 GP3 N2A GP3: AN2 GP3 N3A GP3: AN3 GP3 C4A GP3: AC4 GP3 O5D GP3:AO5* GP3 C5D GP3:AC5* GP3 C4D GP3:AC4* GP3 O4D GP3:AO4* GP3 C3D GP3:AC3* GP3 O3D GP3:AO3* GP3 C2D GP3:AC2* GP3 O2D GP3:AO2* GP3 C1D GP3:AC1* GP3 O5E GP3:BO5* GP3 C5E GP3:BC5* GP3 C4E GP3:BC4* GP3 O4E GP3:BO4* GP3 C3E GP3:BC3* GP3 O3E GP3:BO3* GP3 C2E GP3:BC2* GP3 O2E GP3:BO2* GP3 C1E GP3:BC1* GP3 N9B GP3: BN9 GP3 C8B GP3: BC8 GP3 N7B GP3: BN7 GP3 C5B GP3: BC5 GP3 C6B GP3: BC6 GP3 O6B GP3: BO6 GP3 N1B GP3: BN1 GP3 C2B GP3: BC2 GP3 N2B GP3: BN2 GP3 N3B GP3: BN3 GP3 C4B GP3: BC4 GP3 C1' GP5: C1* GP5 O4' GP5: O4* GP5 C2' GP5: C2* GP5 O2' GP5: O2* GP5 C3' GP5: C3* GP5 O3' GP5: O3* GP5 C4' GP5: C4* GP5 C5' GP5: C5* GP5 O5' GP5: O5* GP5 N1G GPC: GN1 GPC C2G GPC: GC2 GPC N2G GPC: GN2 GPC N3G GPC: GN3 GPC C4G GPC: GC4 GPC C5G GPC: GC5 GPC C6G GPC: GC6 GPC O6G GPC: GO6 GPC N7G GPC: GN7 GPC C8G GPC: GC8 GPC N9G GPC: GN9 GPC C1D GPC:GC1* GPC C2D GPC:GC2* GPC F2D GPC:GF2* GPC C3D GPC:GC3* GPC O3D GPC:GO3* GPC C4D GPC:GC4* GPC O4D GPC:GO4* GPC C5D GPC:GC5* GPC O5D GPC:GO5* GPC PC GPC: CP GPC O1C GPC: CO1 GPC O2C GPC: CO2 GPC O5B GPC:CO5* GPC C5X GPC:CC5* GPC C4X GPC:CC4* GPC O4B GPC:CO4* GPC C3X GPC:CC3* GPC O3B GPC:CO3* GPC C2X GPC:CC2* GPC O2B GPC:CO2* GPC C1X GPC:CC1* GPC N1C GPC: CN1 GPC O2X GPC:CO2' GPC N3C GPC: CN3 GPC N4C GPC: CN4 GPC N9A GPG: AN9 GPG C8A GPG: AC8 GPG N7A GPG: AN7 GPG C5A GPG: AC5 GPG C6A GPG: AC6 GPG O6A GPG: AO6 GPG N1A GPG: AN1 GPG C2A GPG: AC2 GPG N2A GPG: AN2 GPG N3A GPG: AN3 GPG C4A GPG: AC4 GPG O5D GPG:AO5* GPG C5D GPG:AC5* GPG C4D GPG:AC4* GPG O4D GPG:AO4* GPG C3D GPG:AC3* GPG O3D GPG:AO3* GPG C2D GPG:AC2* GPG O2D GPG:AO2* GPG C1D GPG:AC1* GPG O5E GPG:BO5* GPG C5E GPG:BC5* GPG C4E GPG:BC4* GPG O4E GPG:BO4* GPG C3E GPG:BC3* GPG O3E GPG:BO3* GPG C2E GPG:BC2* GPG O2E GPG:BO2* GPG C1E GPG:BC1* GPG N9B GPG: BN9 GPG C8B GPG: BC8 GPG N7B GPG: BN7 GPG C5B GPG: BC5 GPG C6B GPG: BC6 GPG O6B GPG: BO6 GPG N1B GPG: BN1 GPG C2B GPG: BC2 GPG N2B GPG: BN2 GPG N3B GPG: BN3 GPG C4B GPG: BC4 GPG O5' GPL: O5* GPL C5' GPL: C5* GPL C4' GPL: C4* GPL O4' GPL: O4* GPL C3' GPL: C3* GPL O3' GPL: O3* GPL C2' GPL: C2* GPL O2' GPL: O2* GPL C1' GPL: C1* GPL OP1 GS: O1P GS OP3 GS: O3P GS O5' GS: O5* GS C5' GS: C5* GS C4' GS: C4* GS O4' GS: O4* GS C3' GS: C3* GS O3' GS: O3* GS C2' GS: C2* GS C1' GS: C1* GS O5' GSP: O5* GSP C5' GSP: C5* GSP C4' GSP: C4* GSP O4' GSP: O4* GSP C3' GSP: C3* GSP O3' GSP: O3* GSP C2' GSP: C2* GSP O2' GSP: O2* GSP C1' GSP: C1* GSP OP1 GSR: O1P GSR OP2 GSR: O2P GSR OP3 GSR: O3P GSR O5' GSR: O5* GSR C5' GSR: C5* GSR C4' GSR: C4* GSR O4' GSR: O4* GSR C3' GSR: C3* GSR O3' GSR: O3* GSR C2' GSR: C2* GSR C1' GSR: C1* GSR OP1 GSS: O1P GSS OP2 GSS: O2P GSS OP3 GSS: O3P GSS O5' GSS: O5* GSS C5' GSS: C5* GSS C4' GSS: C4* GSS O4' GSS: O4* GSS C3' GSS: C3* GSS O3' GSS: O3* GSS C2' GSS: C2* GSS C1' GSS: C1* GSS O5' GSU: O5* GSU C5' GSU: C5* GSU C4' GSU: C4* GSU O4' GSU: O4* GSU C1' GSU: C1* GSU C2' GSU: C2* GSU O2' GSU: O2* GSU C3' GSU: C3* GSU O3' GSU: O3* GSU C7X GTG:C7MA GTG O5D GTG:O5*A GTG C5D GTG:C5*A GTG C4D GTG:C4*A GTG O4D GTG:O4*A GTG C3D GTG:C3*A GTG O3D GTG:O3*A GTG C2D GTG:C2*A GTG O2D GTG:O2*A GTG C1D GTG:C1*A GTG O5E GTG:O5*B GTG C5E GTG:C5*B GTG C4E GTG:C4*B GTG O4E GTG:O4*B GTG C3E GTG:C3*B GTG O3E GTG:O3*B GTG C2E GTG:C2*B GTG O2E GTG:O2*B GTG C1E GTG:C1*B GTG O5' GTN: O5* GTN C5' GTN: C5* GTN C4' GTN: C4* GTN O4' GTN: O4* GTN C3' GTN: C3* GTN O3' GTN: O3* GTN C2' GTN: C2* GTN O2' GTN: O2* GTN C1' GTN: C1* GTN O5' GTO: O5* GTO C5' GTO: C5* GTO C4' GTO: C4* GTO O4' GTO: O4* GTO C3' GTO: C3* GTO O3' GTO: O3* GTO C2' GTO: C2* GTO O2' GTO: O2* GTO C1' GTO: C1* GTO O5' GTP: O5* GTP C5' GTP: C5* GTP C4' GTP: C4* GTP O4' GTP: O4* GTP C3' GTP: C3* GTP O3' GTP: O3* GTP C2' GTP: C2* GTP O2' GTP: O2* GTP C1' GTP: C1* GTP C1D GUD: C1* GUD C2D GUD: C2* GUD O2D GUD: O2* GUD C3D GUD: C3* GUD C4D GUD: C4* GUD O4D GUD: O4* GUD O3D GUD: O3* GUD C5D GUD: C5* GUD O5D GUD: O5* GUD NA H02: N_A H02 NB H02: N_B H02 NC H02: N_C H02 ND H02: N_D H02 OP1 H2U: O1P H2U OP2 H2U: O2P H2U OP3 H2U: O3P H2U O5' H2U: O5* H2U C5' H2U: C5* H2U C4' H2U: C4* H2U O4' H2U: O4* H2U C3' H2U: C3* H2U O3' H2U: O3* H2U C1' H2U: C1* H2U C2' H2U: C2* H2U O2' H2U: O2* H2U O5' HAM: O5* HAM C5' HAM: C5* HAM C4' HAM: C4* HAM O4' HAM: O4* HAM C3' HAM: C3* HAM O3' HAM: O3* HAM C2' HAM: C2* HAM O2' HAM: O2* HAM C1' HAM: C1* HAM NA HAS: N_A HAS NB HAS: N_B HAS NC HAS: N_C HAS ND HAS: N_D HAS N1A HAX: AN1 HAX C2A HAX: AC2 HAX N3A HAX: AN3 HAX C4A HAX: AC4 HAX C5A HAX: AC5 HAX C6A HAX: AC6 HAX N6A HAX: AN6 HAX N7A HAX: AN7 HAX C8A HAX: AC8 HAX N9A HAX: AN9 HAX C1B HAX:AC1* HAX C2B HAX:AC2* HAX O2B HAX:AO2* HAX C3B HAX:AC3* HAX O3B HAX:AO3* HAX P3B HAX:AP3* HAX O7A HAX: AO7 HAX O8A HAX: AO8 HAX O9A HAX: AO9 HAX C4B HAX:AC4* HAX O4B HAX:AO4* HAX C5B HAX:AC5* HAX O5B HAX:AO5* HAX P1A HAX: AP1 HAX O1A HAX: AO1 HAX O2A HAX: AO2 HAX O3A HAX: AO3 HAX P2A HAX: AP2 HAX O4A HAX: AO4 HAX O5A HAX: AO5 HAX O6A HAX: AO6 HAX CBP HAX:PC11 HAX CCP HAX:PC12 HAX CDP HAX:PC13 HAX CEP HAX:PC14 HAX CAP HAX:PC10 HAX OAP HAX:PO10 HAX C9P HAX: PC9 HAX O9P HAX: PO9 HAX N8P HAX: PN8 HAX C7P HAX: PC7 HAX C6P HAX: PC6 HAX C5P HAX: PC5 HAX O5P HAX: PO5 HAX N4P HAX: PN4 HAX C3P HAX: PC3 HAX C2P HAX: PC2 HAX NA HCO: N_A HCO NB HCO: N_B HCO NC HCO: N_C HCO ND HCO: N_D HCO OXT HCS: OT1 HCS O HCS: OXT HCS O5' HCX: O5* HCX C2' HCX: C2* HCX C5' HCX: C5* HCX C4' HCX: C4* HCX C1' HCX: C1* HCX C3' HCX: C3* HCX O3' HCX: O3* HCX OAP HDC:PO10 HDC CAP HDC:PC10 HDC C9P HDC: PC9 HDC O9P HDC: PO9 HDC N8P HDC: PN8 HDC C7P HDC: PC7 HDC C6P HDC: PC6 HDC C5P HDC: PC5 HDC O5P HDC: PO5 HDC N4P HDC: PN4 HDC C3P HDC: PC3 HDC C2P HDC: PC2 HDC S1P HDC: PS1 HDC C1' HDC: C1* HDC O1' HDC: O1* HDC C2' HDC: C2* HDC C3' HDC: C3* HDC O2' HDC: O2* HDC C4' HDC: C4* HDC C5' HDC: C5* HDC C6' HDC: C6* HDC C7' HDC: C7* HDC C8' HDC: C8* HDC C9' HDC: C9* HDC CBP HDC:PC11 HDC CDP HDC:PC13 HDC CEP HDC:PC14 HDC CCP HDC:PC12 HDC O6A HDC: AO6 HDC P2A HDC: AP2 HDC O4A HDC: AO4 HDC O5A HDC: AO5 HDC O3A HDC: AO3 HDC P1A HDC: AP1 HDC O1A HDC: AO1 HDC O2A HDC: AO2 HDC O5B HDC:AO5* HDC C5B HDC:AC5* HDC C4B HDC:AC4* HDC O4B HDC:AO4* HDC C1B HDC:AC1* HDC N9A HDC: AN9 HDC C8A HDC: AC8 HDC N7A HDC: AN7 HDC C5A HDC: AC5 HDC C4A HDC: AC4 HDC N3A HDC: AN3 HDC C2A HDC: AC2 HDC N1A HDC: AN1 HDC C6A HDC: AC6 HDC N6A HDC: AN6 HDC C2B HDC:AC2* HDC O2B HDC:AO2* HDC C3B HDC:AC3* HDC O3B HDC:AO3* HDC P3B HDC:AP3* HDC O9A HDC: AO9 HDC O8A HDC: AO8 HDC O7A HDC: AO7 HDC NA HDD: N_A HDD NB HDD: N_B HDD NC HDD: N_C HDD ND HDD: N_D HDD C1' HDF: C1* HDF C2' HDF: C2* HDF O2' HDF: O2* HDF C3' HDF: C3* HDF O3' HDF: O3* HDF C4' HDF: C4* HDF O4' HDF: O4* HDF C5' HDF: C5* HDF O5' HDF: O5* HDF NA HDM: N_A HDM NB HDM: N_B HDM NC HDM: N_C HDM ND HDM: N_D HDM OP1 HDP: O1P HDP OP2 HDP: O2P HDP O5' HDP: O5* HDP C5B HDP: C5* HDP O3' HDP: O3* HDP OP3 HDP: O3P HDP NA HE6: N_A HE6 NB HE6: N_B HE6 NC HE6: N_C HE6 ND HE6: N_D HE6 NA HEA: N_A HEA NB HEA: N_B HEA NC HEA: N_C HEA ND HEA: N_D HEA NA HEB: N_A HEB NB HEB: N_B HEB NC HEB: N_C HEB ND HEB: N_D HEB NA HEC: N_A HEC NB HEC: N_B HEC NC HEC: N_C HEC ND HEC: N_D HEC NA HEG: N_A HEG NB HEG: N_B HEG NC HEG: N_C HEG ND HEG: N_D HEG CCB HEH:C12B HEH O11 HEH:O11D HEH CBA HEH:C11A HEH CCA HEH:C12A HEH OCC HEH:O12C HEH C1X HEH:1CEM HEH C2X HEH:2CEG HEH C3X HEH:3CEG HEH C1A HEH:CFM7 HEH C5X HEH:5CFK HEH C1B HEH:6CKF HEH C1C HEH:CFM4 HEH NA HEM: N_A HEM NB HEM: N_B HEM NC HEM: N_C HEM ND HEM: N_D HEM NA HEO: N_A HEO NB HEO: N_B HEO NC HEO: N_C HEO ND HEO: N_D HEO NA HES: N_A HES NB HES: N_B HES NC HES: N_C HES ND HES: N_D HES OP2 HEU: O2P HEU OP1 HEU: O1P HEU O5' HEU: O5* HEU C5' HEU: C5* HEU C4' HEU: C4* HEU O4' HEU: O4* HEU C1' HEU: C1* HEU C3' HEU: C3* HEU C2' HEU: C2* HEU O3' HEU: O3* HEU OP3 HEU: O3P HEU NA HEV: N_A HEV NB HEV: N_B HEV NC HEV: N_C HEV ND HEV: N_D HEV NA HFM: N_A HFM NB HFM: N_B HFM NC HFM: N_C HFM ND HFM: N_D HFM NA HIF: N_A HIF NB HIF: N_B HIF NC HIF: N_C HIF ND HIF: N_D HIF NC HME: N_C HME NB HME: N_B HME NA HME: N_A HME ND HME: N_D HME O5B HMG:O5*A HMG C5B HMG:C5*A HMG C4B HMG:C4*A HMG O4B HMG:O4*A HMG C3B HMG:C3*A HMG O3B HMG:O3*A HMG C2B HMG:C2*A HMG O2B HMG:O2*A HMG C1B HMG:C1*A HMG P3B HMG:P3*A HMG CBP HMG:C11P HMG CCP HMG:C12P HMG CDP HMG:C13P HMG CEP HMG:C14P HMG CAP HMG:C10P HMG OAP HMG:O10P HMG NA HNI: N_A HNI NB HNI: N_B HNI NC HNI: N_C HNI ND HNI: N_D HNI OP1 HOB: O1P HOB OP2 HOB: O2P HOB O5' HOB: O5* HOB C5' HOB: C5* HOB C4' HOB: C4* HOB C3' HOB: C3* HOB C2' HOB: C2* HOB C1' HOB: C1* HOB O4' HOB: O4* HOB O3' HOB: O3* HOB OP3 HOB: O3P HOB OP1 HOL: O1P HOL OP2 HOL: O2P HOL O5' HOL: O5* HOL C5' HOL: C5* HOL C4' HOL: C4* HOL C3' HOL: C3* HOL C2' HOL: C2* HOL C1' HOL: C1* HOL O4' HOL: O4* HOL O3' HOL: O3* HOL OP3 HOL: O3P HOL O5' HPD: O5* HPD C5' HPD: C5* HPD O4' HPD: O4* HPD O3' HPD: O3* HPD C1' HPD: C1* HPD O1' HPD: O1* HPD C3' HPD: C3* HPD C4' HPD: C4* HPD C2' HPD: C2* HPD C1' HPR: C1* HPR C2' HPR: C2* HPR O2' HPR: O2* HPR C3' HPR: C3* HPR O3' HPR: O3* HPR C4' HPR: C4* HPR O4' HPR: O4* HPR C5' HPR: C5* HPR O5' HPR: O5* HPR NA HSN: N_A HSN NB HSN: N_B HSN NC HSN: N_C HSN ND HSN: N_D HSN O5' HSS: O5* HSS C5' HSS: C5* HSS C4' HSS: C4* HSS O4' HSS: O4* HSS C3' HSS: C3* HSS O3' HSS: O3* HSS C2' HSS: C2* HSS O2' HSS: O2* HSS C1' HSS: C1* HSS N1' HTL: N1* HTL C2' HTL: C2* HTL N3' HTL: N3* HTL C4' HTL: C4* HTL N4' HTL: N4* HTL C5' HTL: C5* HTL C6' HTL: C6* HTL C1' HY1: C1* HY1 C2' HY1: C2* HY1 C3' HY1: C3* HY1 C4' HY1: C4* HY1 C5' HY1: C5* HY1 C6' HY1: C6* HY1 OD1 HYP: OD HYP OP3 I: O3P I OP1 I: O1P I OP2 I: O2P I O5' I: O5* I C5' I: C5* I C4' I: C4* I O4' I: O4* I C3' I: C3* I O3' I: O3* I C2' I: C2* I O2' I: O2* I C1' I: C1* I C3' I3A: C3* I3A OP1 I5C: O1P I5C OP2 I5C: O2P I5C O5' I5C: O5* I5C C2' I5C: C2* I5C C5' I5C: C5* I5C C4' I5C: C4* I5C O4' I5C: O4* I5C C1' I5C: C1* I5C C3' I5C: C3* I5C O3' I5C: O3* I5C OP3 I5C: O3P I5C C1' I8S: C1* I8S C2' I8S: C2* I8S C3' I8S: C3* I8S C4' I8S: C4* I8S O2' I8S: O2* I8S O3' I8S: O3* I8S C5' I8S: C5* I8S C6' I8S: C6* I8S O4' I8S: O4* I8S O5' I8S: O5* I8S C7' I8S: C7* I8S C8' I8S: C8* I8S O6' I8S: O6* I8S O7' I8S: O7* I8S C9' I8S: C9* I8S O8' I8S: O8* I8S O9' I8S: O9* I8S O5D IB2: O5* IB2 C5D IB2: C5* IB2 C4D IB2: C4* IB2 O4D IB2: O4* IB2 C3D IB2: C3* IB2 O3D IB2: O3* IB2 C2D IB2: C2* IB2 O2D IB2: O2* IB2 C1D IB2: C1* IB2 N9A IB2: AN9 IB2 C8A IB2: AC8 IB2 N7A IB2: AN7 IB2 C5A IB2: AC5 IB2 C6A IB2: AC6 IB2 N6A IB2: AN6 IB2 N1A IB2: AN1 IB2 C2A IB2: AC2 IB2 N3A IB2: AN3 IB2 C4A IB2: AC4 IB2 OP1 IC: O1P IC OP2 IC: O2P IC OP3 IC: O3P IC O5' IC: O5* IC O3' IC: O3* IC C1' IC: C1* IC C2' IC: C2* IC C3' IC: C3* IC C4' IC: C4* IC C5' IC: C5* IC O4' IC: O4* IC O2' IC: O2* IC O5' ID2: O5* ID2 C5' ID2: C5* ID2 C4' ID2: C4* ID2 O4' ID2: O4* ID2 C1' ID2: C1* ID2 C2' ID2: C2* ID2 C3' ID2: C3* ID2 O3' ID2: O3* ID2 O5' IDP: O5* IDP C5' IDP: C5* IDP C4' IDP: C4* IDP O4' IDP: O4* IDP C3' IDP: C3* IDP O3' IDP: O3* IDP C2' IDP: C2* IDP O2' IDP: O2* IDP C1' IDP: C1* IDP OP1 IG: O1P IG OP2 IG: O2P IG OP3 IG: O3P IG O5' IG: O5* IG O3' IG: O3* IG C1' IG: C1* IG C2' IG: C2* IG C3' IG: C3* IG C4' IG: C4* IG C5' IG: C5* IG O4' IG: O4* IG O2' IG: O2* IG OP1 IGU: O1P IGU OP2 IGU: O2P IGU OP3 IGU: O3P IGU O5' IGU: O5* IGU C5' IGU: C5* IGU C4' IGU: C4* IGU O4' IGU: O4* IGU C3' IGU: C3* IGU O3' IGU: O3* IGU C2' IGU: C2* IGU C1' IGU: C1* IGU O12 IHS:2O1 IHS O32 IHS:2O3 IHS O22 IHS:2O2 IHS O42 IHS:2O4 IHS O13 IHS:3O1 IHS O33 IHS:3O3 IHS O23 IHS:3O2 IHS O43 IHS:3O4 IHS O14 IHS:4O1 IHS O34 IHS:4O3 IHS O24 IHS:4O2 IHS O44 IHS:4O4 IHS O15 IHS:5O1 IHS O35 IHS:5O3 IHS O25 IHS:5O2 IHS O45 IHS:5O4 IHS O16 IHS:6O1 IHS O36 IHS:6O3 IHS O26 IHS:6O2 IHS O46 IHS:6O4 IHS OP1 IMC: O1P IMC OP2 IMC: O2P IMC OP3 IMC: O3P IMC O5' IMC: O5* IMC C5' IMC: C5* IMC C4' IMC: C4* IMC O4' IMC: O4* IMC C1' IMC: C1* IMC C2' IMC: C2* IMC C3' IMC: C3* IMC O3' IMC: O3* IMC CG1 IME:1CG IME CDC IME:1CD2 IME NDB IME:1ND1 IME CEB IME:1CE1 IME NEC IME:1NE2 IME CG2 IME:2CG IME CDM IME:2CD2 IME NDL IME:2ND1 IME CEL IME:2CE1 IME NEM IME:2NE2 IME CG3 IME:3CG IME CDW IME:3CD2 IME NDV IME:3ND1 IME CEV IME:3CE1 IME NEW IME:3NE2 IME CG4 IME:4CG IME CD6 IME:4CD2 IME ND5 IME:4ND1 IME CE5 IME:4CE1 IME NE6 IME:4NE2 IME CG1 IMF:1CG IMF CDC IMF:1CD2 IMF NDB IMF:1ND1 IMF CEB IMF:1CE1 IMF NEC IMF:1NE2 IMF CG2 IMF:2CG IMF CDM IMF:2CD2 IMF NDL IMF:2ND1 IMF CEL IMF:2CE1 IMF NEM IMF:2NE2 IMF CG3 IMF:3CG IMF CDW IMF:3CD2 IMF NDV IMF:3ND1 IMF CEV IMF:3CE1 IMF NEW IMF:3NE2 IMF CG4 IMF:4CG IMF CD6 IMF:4CD2 IMF ND5 IMF:4ND1 IMF CE5 IMF:4CE1 IMF NE6 IMF:4NE2 IMF O5' IMG: O5* IMG C5' IMG: C5* IMG C4' IMG: C4* IMG N4' IMG: N4* IMG C3' IMG: C3* IMG O3' IMG: O3* IMG C2' IMG: C2* IMG O2' IMG: O2* IMG C1' IMG: C1* IMG O5' IMH: O5* IMH C5' IMH: C5* IMH C4' IMH: C4* IMH N4' IMH: N4* IMH C3' IMH: C3* IMH O3' IMH: O3* IMH C2' IMH: C2* IMH O2' IMH: O2* IMH C1' IMH: C1* IMH O5' IMP: O5* IMP C5' IMP: C5* IMP C4' IMP: C4* IMP O4' IMP: O4* IMP C3' IMP: C3* IMP O3' IMP: O3* IMP C2' IMP: C2* IMP O2' IMP: O2* IMP C1' IMP: C1* IMP O5' IMR: O5* IMR C5' IMR: C5* IMR C4' IMR: C4* IMR N4' IMR: N4* IMR C3' IMR: C3* IMR O3' IMR: O3* IMR C2' IMR: C2* IMR O2' IMR: O2* IMR C1' IMR: C1* IMR O5' IMU: O5* IMU C5' IMU: C5* IMU C4' IMU: C4* IMU N4' IMU: N4* IMU C3' IMU: C3* IMU O3' IMU: O3* IMU C2' IMU: C2* IMU O2' IMU: O2* IMU C1' IMU: C1* IMU OA' IN3:'O10 IN3 CB' IN3:'C11 IN3 CC' IN3:'C12 IN3 CE' IN3:'C14 IN3 CF' IN3:'C15 IN3 CG' IN3:'C16 IN3 CH' IN3:'C17 IN3 OI' IN3:'O18 IN3 NJ' IN3:'N19 IN3 NK' IN3:'N20 IN3 NO' IN3:'N24 IN3 OA' IN6:'O10 IN6 CB' IN6:'C11 IN6 CC' IN6:'C12 IN6 CE' IN6:'C14 IN6 CF' IN6:'C15 IN6 CG' IN6:'C16 IN6 CH' IN6:'C17 IN6 OI' IN6:'O18 IN6 NJ' IN6:'N19 IN6 NK' IN6:'N20 IN6 NO' IN6:'N24 IN6 C1B INB: C1" INB C2B INB: C2" INB CMB INB: CM" INB O5' IOT: O5* IOT C5' IOT: C5* IOT C4' IOT: C4* IOT O4' IOT: O4* IOT C3' IOT: C3* IOT O3' IOT: O3* IOT C2' IOT: C2* IOT O2' IOT: O2* IOT C1' IOT: C1* IOT OXT IOY: O IOY O IOY: OXT IOY C1' IQB: C1* IQB C2B IQB: C2* IQB C3B IQB: C3* IQB C4' IQB: C4* IQB BR4' IQB:BR4* IQB C5B IQB: C5* IQB C6B IQB: C6* IQB C1' IRF: C1* IRF C2' IRF: C2* IRF O2' IRF: O2* IRF C3' IRF: C3* IRF O3' IRF: O3* IRF C4' IRF: C4* IRF O4' IRF: O4* IRF C5' IRF: C5* IRF O5' IRF: O5* IRF O5' IRP: O5* IRP C5' IRP: C5* IRP C4' IRP: C4* IRP N4' IRP: N4* IRP C3' IRP: C3* IRP O3' IRP: O3* IRP C2' IRP: C2* IRP O2' IRP: O2* IRP C1' IRP: C1* IRP O5' ITT: O5* ITT C5' ITT: C5* ITT C4' ITT: C4* ITT O4' ITT: O4* ITT C3' ITT: C3* ITT O3' ITT: O3* ITT C2' ITT: C2* ITT O2' ITT: O2* ITT C1' ITT: C1* ITT OP1 IU: O1P IU OP2 IU: O2P IU OP3 IU: O3P IU O5' IU: O5* IU C5' IU: C5* IU C4' IU: C4* IU O4' IU: O4* IU C3' IU: C3* IU O3' IU: O3* IU C2' IU: C2* IU O2' IU: O2* IU C1' IU: C1* IU C1' JW5: C1* JW5 O4' JW5: O4* JW5 C2' JW5: C2* JW5 O2' JW5: O2* JW5 C3' JW5: C3* JW5 O3' JW5: O3* JW5 C4' JW5: C4* JW5 C5' JW5: C5* JW5 O5' JW5: O5* JW5 C1' K05: C1* K05 C2' K05: C2* K05 C3' K05: C3* K05 C4' K05: C4* K05 C5' K05: C5* K05 C6' K05: C6* K05 O5' KAA: O5* KAA C5' KAA: C5* KAA C4' KAA: C4* KAA O4' KAA: O4* KAA C3' KAA: C3* KAA O3' KAA: O3* KAA C2' KAA: C2* KAA O2' KAA: O2* KAA C1' KAA: C1* KAA OP3 KAG: O3P KAG OP1 KAG: O1P KAG OP2 KAG: O2P KAG O5' KAG: O5* KAG C5' KAG: C5* KAG C4' KAG: C4* KAG O4' KAG: O4* KAG C3' KAG: C3* KAG O3' KAG: O3* KAG C2' KAG: C2* KAG C1' KAG: C1* KAG OQ1 KCX: OX1 KCX OQ2 KCX: OX2 KCX OXT KGC: O1 KGC O KGC: OXT KGC O1' KHO: O1* KHO C1' KHO: C1* KHO C2' KHO: C2* KHO C3' KHO: C3* KHO O3' KHO: O3* KHO O2' KHO: O2* KHO O4' KHO: O4* KHO C4' KHO: C4* KHO C5' KHO: C5* KHO O5' KHO: O5* KHO O5' KHP: O5* KHP C5B KHP: C5* KHP C4B KHP: C4* KHP O4' KHP: O4* KHP C1B KHP: C1* KHP C2B KHP: C2* KHP O2B KHP: O2* KHP C3B KHP: C3* KHP O3B KHP: O3* KHP O1' KHP: O1* KHP N2A KT3:2N KT3 CD1 KT3:1CD KT3 OEB KT3:1OE1 KT3 CG1 KT3:1CG KT3 CB1 KT3:1CB KT3 CA1 KT3:1CA KT3 C1A KT3:1C KT3 O11 KT3:1OXT KT3 O1A KT3:1O KT3 N1A KT3:1N KT3 OEN KT3:3OE2 KT3 OED KT3:3OE1 KT3 CD3 KT3:3CD KT3 CG3 KT3:3CG KT3 CB3 KT3:3CB KT3 CA3 KT3:3CA KT3 C3A KT3:3C KT3 O3 KT3:3O KT3 O12 KT3:3OXT KT3 N3A KT3:3N KT3 OEC KT3:2OE1 KT3 CD2 KT3:2CD KT3 CG2 KT3:2CG KT3 CB2 KT3:2CB KT3 CA2 KT3:2CA KT3 C2A KT3:2C KT3 O2 KT3:2O KT3 O13 KT3:2OXT KT3 N2A KT5:2N KT5 CD1 KT5:1CD KT5 OEB KT5:1OE1 KT5 CG1 KT5:1CG KT5 CB1 KT5:1CB KT5 CA1 KT5:1CA KT5 C1A KT5:1C KT5 O11 KT5:1OXT KT5 O1A KT5:1O KT5 N1A KT5:1N KT5 OEF KT5:5OE1 KT5 OEP KT5:5OE2 KT5 CD5 KT5:5CD KT5 CG5 KT5:5CG KT5 CB5 KT5:5CB KT5 CA5 KT5:5CA KT5 C5A KT5:5C KT5 O5 KT5:5O KT5 O12 KT5:5OXT KT5 N5 KT5:5N KT5 OEE KT5:4OE1 KT5 CD4 KT5:4CD KT5 CG4 KT5:4CG KT5 CB4 KT5:4CB KT5 CA4 KT5:4CA KT5 C4A KT5:4C KT5 O4 KT5:4O KT5 O13 KT5:4OXT KT5 N4 KT5:4N KT5 OED KT5:3OE1 KT5 CD3 KT5:3CD KT5 CG3 KT5:3CG KT5 CB3 KT5:3CB KT5 CA3 KT5:3CA KT5 C3A KT5:3C KT5 O3 KT5:3O KT5 O14 KT5:3OXT KT5 N3A KT5:3N KT5 OEC KT5:2OE1 KT5 CD2 KT5:2CD KT5 CG2 KT5:2CG KT5 CB2 KT5:2CB KT5 CA2 KT5:2CA KT5 C2A KT5:2C KT5 O2 KT5:2O KT5 O15 KT5:2OXT KT5 O'5 LAM:1O4' LAM O'6 LAM:2O4' LAM O5' LAQ: O5* LAQ C5' LAQ: C5* LAQ C4' LAQ: C4* LAQ C3' LAQ: C3* LAQ O3' LAQ: O3* LAQ C2' LAQ: C2* LAQ O2' LAQ: O2* LAQ C1' LAQ: C1* LAQ O4' LAQ: O4* LAQ OXT LBY: O LBY O LBY: OXT LBY OP3 LC: O3P LC OP1 LC: O1P LC OP2 LC: O2P LC O5' LC: O5* LC C5' LC: C5* LC C4' LC: C4* LC O4' LC: O4* LC C3' LC: C3* LC O3' LC: O3* LC C2' LC: C2* LC O2' LC: O2* LC C1' LC: C1* LC O5' LCA: O5* LCA C5' LCA: C5* LCA C3' LCA: C3* LCA C6' LCA: C6* LCA C2' LCA: C2* LCA C4' LCA: C4* LCA C1' LCA: C1* LCA O4' LCA: O4* LCA O3' LCA: O3* LCA O2' LCA: O2* LCA O5' LCC: O5* LCC C5' LCC: C5* LCC C4' LCC: C4* LCC O4' LCC: O4* LCC C1' LCC: C1* LCC C3' LCC: C3* LCC C2' LCC: C2* LCC O2' LCC: O2* LCC O3' LCC: O3* LCC C6' LCC: C6* LCC OP1 LCG: O1P LCG O5' LCG: O5* LCG C5' LCG: C5* LCG C3' LCG: C3* LCG C6' LCG: C6* LCG C2' LCG: C2* LCG C4' LCG: C4* LCG C1' LCG: C1* LCG O4' LCG: O4* LCG OP2 LCG: O2P LCG O2' LCG: O2* LCG O3' LCG: O3* LCG OP3 LCG: O3P LCG O5' LCH: O5* LCH C5' LCH: C5* LCH C4' LCH: C4* LCH O4' LCH: O4* LCH C1' LCH: C1* LCH C3' LCH: C3* LCH C2' LCH: C2* LCH O2' LCH: O2* LCH O3' LCH: O3* LCH C6' LCH: C6* LCH C1' LFN: C1* LFN OP3 LG: O3P LG OP1 LG: O1P LG OP2 LG: O2P LG O5' LG: O5* LG C5' LG: C5* LG C4' LG: C4* LG O4' LG: O4* LG C3' LG: C3* LG O3' LG: O3* LG C2' LG: C2* LG O2' LG: O2* LG C1' LG: C1* LG OP1 LGP: O1P LGP OP2 LGP: O2P LGP OP3 LGP: O3P LGP O5' LGP: O5* LGP C5' LGP: C5* LGP C4' LGP: C4* LGP O4' LGP: O4* LGP C3' LGP: C3* LGP O3' LGP: O3* LGP C1' LGP: C1* LGP OP3 LHU: O3P LHU OP1 LHU: O1P LHU OP2 LHU: O2P LHU O5' LHU: O5* LHU C5' LHU: C5* LHU C4' LHU: C4* LHU O4' LHU: O4* LHU C3' LHU: C3* LHU O3' LHU: O3* LHU C2' LHU: C2* LHU O2' LHU: O2* LHU C1' LHU: C1* LHU C4X LIH:C4A' LIH C8X LIH:C8A' LIH C2X LII:C2A' LII C5X LII:C5A' LII C1' LKC: C1* LKC C2' LKC: C2* LKC C3' LKC: C3* LKC C4' LKC: C4* LKC O4' LKC: O4* LKC O3' LKC: O3* LKC C5' LKC: C5* LKC O5' LKC: O5* LKC O2' LKC: O2* LKC C6' LKC: C6* LKC C2' LLP: C2A LLP C4' LLP: C4A LLP C5' LLP: C5A LLP OP4 LLP: O4P LLP OP1 LLP: O1P LLP OP2 LLP: O2P LLP OP3 LLP: O3P LLP O5' LMS: O5* LMS C5' LMS: C5* LMS C4' LMS: C4* LMS O4' LMS: O4* LMS C3' LMS: C3* LMS C1B LMT: C1* LMT C2B LMT: C2* LMT C3B LMT: C3* LMT C4B LMT: C4* LMT C5B LMT: C5* LMT C6B LMT: C6* LMT O1B LMT: O1* LMT O2B LMT: O2* LMT O3B LMT: O3* LMT O4' LMT: O4* LMT O5B LMT: O5* LMT O6B LMT: O6* LMT C1B LMU: C1* LMU C2B LMU: C2* LMU C3B LMU: C3* LMU C4B LMU: C4* LMU C5B LMU: C5* LMU C6B LMU: C6* LMU O1B LMU: O1* LMU O2B LMU: O2* LMU O3B LMU: O3* LMU O4' LMU: O4* LMU O5B LMU: O5* LMU O6B LMU: O6* LMU N7N LNC: NN7 LNC C7N LNC: NC7 LNC O7N LNC: NO7 LNC C3N LNC: NC3 LNC C4N LNC: NC4 LNC C5N LNC: NC5 LNC CS LNC: C_S LNC C6N LNC: NC6 LNC N1N LNC: NN1 LNC C2N LNC: NC2 LNC C1D LNC:NC1* LNC O4D LNC:NO4* LNC C4D LNC:NC4* LNC C5D LNC:NC5* LNC O5D LNC:NO5* LNC PN LNC: NP LNC O1N LNC: NO1 LNC O2N LNC: NO2 LNC PA LNC: AP LNC O1A LNC: AO1 LNC O2A LNC: AO2 LNC O5B LNC:AO5* LNC C5B LNC:AC5* LNC C4B LNC:AC4* LNC O4B LNC:AO4* LNC C1B LNC:AC1* LNC C2B LNC:AC2* LNC O2B LNC:AO2* LNC C3B LNC:AC3* LNC O3B LNC:AO3* LNC N9A LNC: AN9 LNC C8A LNC: AC8 LNC N7A LNC: AN7 LNC C5A LNC: AC5 LNC C6A LNC: AC6 LNC N6A LNC: AN6 LNC N1A LNC: AN1 LNC C2A LNC: AC2 LNC N3A LNC: AN3 LNC C4A LNC: AC4 LNC C3D LNC:NC3* LNC O3D LNC:NO3* LNC C2D LNC:NC2* LNC O2D LNC:NO2* LNC C1' LVS: C1* LVS O1' LVS: O1* LVS O2' LVS: O2* LVS C2' LVS: C2* LVS OP1 M1G: O1P M1G OP2 M1G: O2P M1G OP3 M1G: O3P M1G O5' M1G: O5* M1G C5' M1G: C5* M1G C4' M1G: C4* M1G O4' M1G: O4* M1G C3' M1G: C3* M1G O3' M1G: O3* M1G C2' M1G: C2* M1G C1' M1G: C1* M1G OP1 M2G: O1P M2G OP2 M2G: O2P M2G OP3 M2G: O3P M2G O5' M2G: O5* M2G C5' M2G: C5* M2G C4' M2G: C4* M2G O4' M2G: O4* M2G C3' M2G: C3* M2G O3' M2G: O3* M2G C2' M2G: C2* M2G O2' M2G: O2* M2G C1' M2G: C1* M2G N2' M5M: N2* M5M C6' M5M: C6* M5M C7' M5M: C7* M5M O8' M5M: O8* M5M OP1 M5M: O1P M5M OP2 M5M: O2P M5M O5' M5M: O5* M5M C5' M5M: C5* M5M C4' M5M: C4* M5M O4' M5M: O4* M5M C1' M5M: C1* M5M C2' M5M: C2* M5M C3' M5M: C3* M5M O3' M5M: O3* M5M OP3 M5M: O3P M5M O5' M7G: O5* M7G C5' M7G: C5* M7G C4' M7G: C4* M7G O4' M7G: O4* M7G C3' M7G: C3* M7G O3' M7G: O3* M7G C2' M7G: C2* M7G O2' M7G: O2* M7G C1' M7G: C1* M7G OP1 MA6: O1P MA6 OP2 MA6: O2P MA6 OP3 MA6: O3P MA6 O5' MA6: O5* MA6 C5' MA6: C5* MA6 C4' MA6: C4* MA6 O4' MA6: O4* MA6 C1' MA6: C1* MA6 C2' MA6: C2* MA6 O2' MA6: O2* MA6 C3' MA6: C3* MA6 O3' MA6: O3* MA6 OP1 MA7: O1P MA7 OP2 MA7: O2P MA7 O5' MA7: O5* MA7 C2' MA7: C2* MA7 C5' MA7: C5* MA7 C4' MA7: C4* MA7 O4' MA7: O4* MA7 C1' MA7: C1* MA7 C3' MA7: C3* MA7 O3' MA7: O3* MA7 OP3 MA7: O3P MA7 OP1 MAD: O1P MAD OP2 MAD: O2P MAD O5' MAD: O5* MAD C5' MAD: C5* MAD C4' MAD: C4* MAD O4' MAD: O4* MAD C3' MAD: C3* MAD O3' MAD: O3* MAD C2' MAD: C2* MAD O2' MAD: O2* MAD C1' MAD: C1* MAD C5' MAO: C5* MAO C4' MAO: C4* MAO O4' MAO: O4* MAO C1' MAO: C1* MAO C2' MAO: C2* MAO O2' MAO: O2* MAO C3' MAO: C3* MAO O3' MAO: O3* MAO O5' MAP: O5* MAP C5' MAP: C5* MAP C4' MAP: C4* MAP O4' MAP: O4* MAP C3' MAP: C3* MAP O3' MAP: O3* MAP C2' MAP: C2* MAP O2' MAP: O2* MAP C1' MAP: C1* MAP C1' MAR: C1* MAR C2' MAR: C2* MAR C3' MAR: C3* MAR N3' MAR: N3* MAR C4' MAR: C4* MAR O4' MAR: O4* MAR C5' MAR: C5* MAR O5' MAR: O5* MAR C6' MAR: C6* MAR C4' MBP: C4* MBP O4' MBP: O4* MBP C3' MBP: C3* MBP C2' MBP: C2* MBP OXT MBQ: O MBQ O MBQ: O1 MBQ OP1 MBZ: O1P MBZ OP2 MBZ: O2P MBZ OP3 MBZ: O3P MBZ O5' MBZ: O5* MBZ O3' MBZ: O3* MBZ C1' MBZ: C1* MBZ C2' MBZ: C2* MBZ C3' MBZ: C3* MBZ C4' MBZ: C4* MBZ C5' MBZ: C5* MBZ O4' MBZ: O4* MBZ OXT MC1: O1 MC1 OXT MCG: OT MCG C1' MCN: C1* MCN C2D MCN: C2* MCN O2' MCN: O2* MCN C3' MCN: C3* MCN C4D MCN: C4* MCN O4D MCN: O4* MCN O3' MCN: O3* MCN C5' MCN: C5* MCN O5' MCN: O5* MCN C1' MCY: C1* MCY C2' MCY: C2* MCY C3' MCY: C3* MCY C4' MCY: C4* MCY O4' MCY: O4* MCY O3' MCY: O3* MCY C5' MCY: C5* MCY O5' MCY: O5* MCY O5' MD1: O5* MD1 C5' MD1: C5* MD1 C4' MD1: C4* MD1 O4' MD1: O4* MD1 C1' MD1: C1* MD1 C2' MD1: C2* MD1 O2' MD1: O2* MD1 C3' MD1: C3* MD1 O3' MD1: O3* MD1 P1A MDE: AP1 MDE O1A MDE: AO1 MDE O2A MDE: AO2 MDE O5B MDE:AO5* MDE C5B MDE:AC5* MDE C4B MDE:AC4* MDE O4B MDE:AO4* MDE C1B MDE:AC1* MDE N9A MDE: AN9 MDE C4A MDE: AC4 MDE N3A MDE: AN3 MDE C2A MDE: AC2 MDE N1A MDE: AN1 MDE C6A MDE: AC6 MDE N6A MDE: AN6 MDE C5A MDE: AC5 MDE N7A MDE: AN7 MDE C8A MDE: AC8 MDE C2B MDE:AC2* MDE O2B MDE:AO2* MDE C3B MDE:AC3* MDE O3B MDE:AO3* MDE P3B MDE:AP3* MDE O7B MDE:AO7* MDE O8B MDE:AO8* MDE O9B MDE:AO9* MDE O3A MDE: AO3 MDE P2A MDE: AP2 MDE O4A MDE: AO4 MDE O5A MDE: AO5 MDE O6A MDE: AO6 MDE CCP MDE:PC12 MDE CBP MDE:PC11 MDE CDP MDE:PC13 MDE CEP MDE:PC14 MDE CAP MDE:PC10 MDE OAP MDE:PO10 MDE C9P MDE: PC9 MDE O9P MDE: PO9 MDE N8P MDE: PN8 MDE C7P MDE: PC7 MDE C6P MDE: PC6 MDE C5P MDE: PC5 MDE O5P MDE: PO5 MDE N4P MDE: PN4 MDE C3P MDE: PC3 MDE C2P MDE: PC2 MDE S1P MDE: PS1 MDE C1' MDE: C1* MDE O1' MDE: O1* MDE C2' MDE: C2* MDE C3' MDE: C3* MDE C4' MDE: C4* MDE C5' MDE: C5* MDE C6' MDE: C6* MDE C7' MDE: C7* MDE C8' MDE: C8* MDE C9' MDE: C9* MDE O5' MDG: O5* MDG C5' MDG: C5* MDG C4' MDG: C4* MDG O4' MDG: O4* MDG C3' MDG: C3* MDG O3' MDG: O3* MDG C2' MDG: C2* MDG O2' MDG: O2* MDG C1' MDG: C1* MDG O5' MDT: O5* MDT C5' MDT: C5* MDT C4' MDT: C4* MDT O4' MDT: O4* MDT C1' MDT: C1* MDT C2' MDT: C2* MDT C3' MDT: C3* MDT O3' MDT: O3* MDT OP1 MEP: O1P MEP OP2 MEP: O2P MEP OP3 MEP: O3P MEP O5' MEP: O5* MEP C5' MEP: C5* MEP C4' MEP: C4* MEP O4' MEP: O4* MEP C3' MEP: C3* MEP C2' MEP: C2* MEP O2' MEP: O2* MEP C1' MEP: C1* MEP CA' MEP: CA* MEP OP3 MG1: O3P MG1 OP1 MG1: O1P MG1 OP2 MG1: O2P MG1 O5' MG1: O5* MG1 C5' MG1: C5* MG1 C4' MG1: C4* MG1 O4' MG1: O4* MG1 C3' MG1: C3* MG1 O3' MG1: O3* MG1 C2' MG1: C2* MG1 C1' MG1: C1* MG1 CAA MGE:C10A MGE CBA MGE:C11A MGE CCA MGE:C12A MGE CDA MGE:C13A MGE CAB MGE:C10B MGE CBB MGE:C11B MGE CCB MGE:C12B MGE CDB MGE:C13B MGE CEB MGE:C14B MGE CFB MGE:C15B MGE CGB MGE:C16B MGE O5' MGP: O5* MGP C5' MGP: C5* MGP C4' MGP: C4* MGP O4' MGP: O4* MGP C3' MGP: C3* MGP O3' MGP: O3* MGP C2' MGP: C2* MGP O2' MGP: O2* MGP C1' MGP: C1* MGP O5' MGT: O5* MGT C5' MGT: C5* MGT C4' MGT: C4* MGT O4' MGT: O4* MGT C3' MGT: C3* MGT O3' MGT: O3* MGT C2' MGT: C2* MGT O2' MGT: O2* MGT C1' MGT: C1* MGT NA MHM: N_A MHM NB MHM: N_B MHM NC MHM: N_C MHM ND MHM: N_D MHM C5' MHZ: C5* MHZ C4' MHZ: C4* MHZ O4' MHZ: O4* MHZ C1' MHZ: C1* MHZ C2' MHZ: C2* MHZ O2' MHZ: O2* MHZ C3' MHZ: C3* MHZ O3' MHZ: O3* MHZ OP3 MIA: O3P MIA OP1 MIA: O1P MIA OP2 MIA: O2P MIA O5' MIA: O5* MIA C5' MIA: C5* MIA C4' MIA: C4* MIA O4' MIA: O4* MIA C3' MIA: C3* MIA O3' MIA: O3* MIA C2' MIA: C2* MIA O2' MIA: O2* MIA C1' MIA: C1* MIA C3X MMT:CO3* MMT O5' MMT: O5* MMT C5' MMT: C5* MMT C4' MMT: C4* MMT O4' MMT: O4* MMT C1' MMT: C1* MMT C2' MMT: C2* MMT C3' MMT: C3* MMT O3' MMT: O3* MMT O2N MNE: NO2 MNE O1N MNE: NO1 MNE C1' MNG: C1* MNG C2' MNG: C2* MNG C3' MNG: C3* MNG C4' MNG: C4* MNG C5' MNG: C5* MNG O1' MNG: O1* MNG O2' MNG: O2* MNG O4' MNG: O4* MNG NA MNH: N_A MNH NB MNH: N_B MNH NC MNH: N_C MNH ND MNH: N_D MNH NA MNR: N_A MNR NB MNR: N_B MNR NC MNR: N_C MNR ND MNR: N_D MNR O5' MNT: O5* MNT C5B MNT: C5* MNT C4B MNT: C4* MNT O4' MNT: O4* MNT C3B MNT: C3* MNT O3' MNT: O3* MNT C2B MNT: C2* MNT C1B MNT: C1* MNT OP2 MNU: O2P MNU OP1 MNU: O1P MNU O5' MNU: O5* MNU C5' MNU: C5* MNU C4' MNU: C4* MNU O4' MNU: O4* MNU C1' MNU: C1* MNU C2' MNU: C2* MNU O2' MNU: O2* MNU C3' MNU: C3* MNU O3' MNU: O3* MNU OP3 MNU: O3P MNU CHX MOB:3CH3 MOB CHZ MOB:5CH3 MOB O5' MOD: O5* MOD C5' MOD: C5* MOD C4' MOD: C4* MOD O4' MOD: O4* MOD C3' MOD: C3* MOD O3' MOD: O3* MOD C2' MOD: C2* MOD O2' MOD: O2* MOD C1' MOD: C1* MOD O2' MOE: O2* MOE CA' MOE: CA* MOE CB' MOE: CB* MOE OC' MOE: OC* MOE CD' MOE: CD* MOE CL33 MON:3CL3 MON H11 MPA:1H1 MPA H11 MPC:1H1 MPC CXD MPG:1C12 MPG CX3 MPG:1C11 MPG CDB MQQ:1CD1 MQQ CDC MQQ:1CD2 MQQ C1' MRC: C1* MRC C2' MRC: C2* MRC C3' MRC: C3* MRC C4' MRC: C4* MRC C5' MRC: C5* MRC C6' MRC: C6* MRC C7' MRC: C7* MRC C8' MRC: C8* MRC C9' MRC: C9* MRC OP1 MRG: O1P MRG OP2 MRG: O2P MRG O5' MRG: O5* MRG C2' MRG: C2* MRG C5' MRG: C5* MRG C4' MRG: C4* MRG O4' MRG: O4* MRG C1' MRG: C1* MRG C3' MRG: C3* MRG O3' MRG: O3* MRG OP3 MRG: O3P MRG O7A MRR: AO7 MRR P3B MRR:AP3* MRR O8A MRR: AO8 MRR O9A MRR: AO9 MRR O3B MRR:AO3* MRR C3B MRR:AC3* MRR C2B MRR:AC2* MRR O2B MRR:AO2* MRR C1B MRR:AC1* MRR N9A MRR: AN9 MRR C4A MRR: AC4 MRR N3A MRR: AN3 MRR C2A MRR: AC2 MRR N1A MRR: AN1 MRR C6A MRR: AC6 MRR N6A MRR: AN6 MRR C5A MRR: AC5 MRR N7A MRR: AN7 MRR C8A MRR: AC8 MRR O4B MRR:AO4* MRR C4B MRR:AC4* MRR C5B MRR:AC5* MRR O5B MRR:AO5* MRR P1A MRR: AP1 MRR O1A MRR: AO1 MRR O2A MRR: AO2 MRR O3A MRR: AO3 MRR P2A MRR: AP2 MRR O4A MRR: AO4 MRR O5A MRR: AO5 MRR O6A MRR: AO6 MRR CCP MRR:PC12 MRR CBP MRR:PC11 MRR CDP MRR:PC13 MRR CEP MRR:PC14 MRR CAP MRR:PC10 MRR OAP MRR:PO10 MRR C9P MRR: PC9 MRR O9P MRR: PO9 MRR N8P MRR: PN8 MRR C7P MRR: PC7 MRR C6P MRR: PC6 MRR C5P MRR: PC5 MRR O5P MRR: PO5 MRR N4P MRR: PN4 MRR C3P MRR: PC3 MRR C2P MRR: PC2 MRR S1P MRR: PS1 MRR O7A MRS: AO7 MRS P3B MRS:AP3* MRS O8A MRS: AO8 MRS O9A MRS: AO9 MRS O3B MRS:AO3* MRS C3B MRS:AC3* MRS C2B MRS:AC2* MRS O2B MRS:AO2* MRS C1B MRS:AC1* MRS N9A MRS: AN9 MRS C4A MRS: AC4 MRS N3A MRS: AN3 MRS C2A MRS: AC2 MRS N1A MRS: AN1 MRS C6A MRS: AC6 MRS N6A MRS: AN6 MRS C5A MRS: AC5 MRS N7A MRS: AN7 MRS C8A MRS: AC8 MRS O4B MRS:AO4* MRS C4B MRS:AC4* MRS C5B MRS:AC5* MRS O5B MRS:AO5* MRS P1A MRS: AP1 MRS O1A MRS: AO1 MRS O2A MRS: AO2 MRS O3A MRS: AO3 MRS P2A MRS: AP2 MRS O4A MRS: AO4 MRS O5A MRS: AO5 MRS O6A MRS: AO6 MRS CCP MRS:PC12 MRS CBP MRS:PC11 MRS CDP MRS:PC13 MRS CEP MRS:PC14 MRS CAP MRS:PC10 MRS OAP MRS:PO10 MRS C9P MRS: PC9 MRS O9P MRS: PO9 MRS N8P MRS: PN8 MRS C7P MRS: PC7 MRS C6P MRS: PC6 MRS C5P MRS: PC5 MRS O5P MRS: PO5 MRS N4P MRS: PN4 MRS C3P MRS: PC3 MRS C2P MRS: PC2 MRS S1P MRS: PS1 MRS O5' MSG: O5* MSG C5' MSG: C5* MSG C4' MSG: C4* MSG O4' MSG: O4* MSG C1' MSG: C1* MSG C2' MSG: C2* MSG O2' MSG: O2* MSG C3' MSG: C3* MSG O3' MSG: O3* MSG O5' MSP: O5* MSP C5' MSP: C5* MSP C4' MSP: C4* MSP O4' MSP: O4* MSP C3' MSP: C3* MSP O3' MSP: O3* MSP C2' MSP: C2* MSP O2' MSP: O2* MSP C1' MSP: C1* MSP S5' MTA: S5* MTA C5' MTA: C5* MTA C4' MTA: C4* MTA O4' MTA: O4* MTA C2' MTA: C2* MTA O2' MTA: O2* MTA C3' MTA: C3* MTA O3' MTA: O3* MTA C1' MTA: C1* MTA CHV MTB:1CH3 MTB CHW MTB:2CH3 MTB CHX MTB:3CH3 MTB S5' MTH: S5* MTH C5' MTH: C5* MTH C4' MTH: C4* MTH O4' MTH: O4* MTH C2' MTH: C2* MTH O2' MTH: O2* MTH C3' MTH: C3* MTH O3' MTH: O3* MTH C1' MTH: C1* MTH S5' MTI: S5* MTI C5' MTI: C5* MTI C4' MTI: C4* MTI N4' MTI: N4* MTI C2' MTI: C2* MTI O2' MTI: O2* MTI C3' MTI: C3* MTI O3' MTI: O3* MTI C1' MTI: C1* MTI S5' MTM: S5* MTM C5' MTM: C5* MTM C4' MTM: C4* MTM N4' MTM: N4* MTM C2' MTM: C2* MTM O2' MTM: O2* MTM C3' MTM: C3* MTM O3' MTM: O3* MTM C1' MTM: C1* MTM OP1 MTR: O1P MTR OP2 MTR: O2P MTR O5' MTR: O5* MTR C2' MTR: C2* MTR C5' MTR: C5* MTR C4' MTR: C4* MTR O4' MTR: O4* MTR C1' MTR: C1* MTR C3' MTR: C3* MTR O3' MTR: O3* MTR OP3 MTR: O3P MTR OP1 MTU: O1P MTU OP2 MTU: O2P MTU O5' MTU: O5* MTU C5' MTU: C5* MTU C4' MTU: C4* MTU O4' MTU: O4* MTU C1' MTU: C1* MTU C2' MTU: C2* MTU O2' MTU: O2* MTU C3' MTU: C3* MTU O3' MTU: O3* MTU O5' MZP: O5* MZP C5' MZP: C5* MZP C4' MZP: C4* MZP O4' MZP: O4* MZP C3' MZP: C3* MZP O3' MZP: O3* MZP C2' MZP: C2* MZP O2' MZP: O2* MZP C1' MZP: C1* MZP OP3 N: O3P N OP1 N: O1P N OP2 N: O2P N O5' N: O5* N C5' N: C5* N C4' N: C4* N O4' N: O4* N C3' N: C3* N O3' N: O3* N C2' N: C2* N O2' N: O2* N C1' N: C1* N C1' N1C: C1* N1C O4' N1C: O4* N1C C2' N1C: C2* N1C O2' N1C: O2* N1C C3' N1C: C3* N1C O3' N1C: O3* N1C C4' N1C: C4* N1C C5' N1C: C5* N1C O5' N1C: O5* N1C CV' N1H:C31' N1H CW' N1H:C32' N1H OX' N1H:O33' N1H OY' N1H:O34' N1H C1B N1H:C1'' N1H C2B N1H:C2'' N1H C3B N1H:C3'' N1H C4B N1H:C4'' N1H C5B N1H:C5'' N1H N5B N1H:N5'' N1H C6B N1H:C6'' N1H N5' N5A: N5* N5A C5' N5A: C5* N5A O5' N5A: O5* N5A C4' N5A: C4* N5A O4' N5A: O4* N5A C3' N5A: C3* N5A O3' N5A: O3* N5A C2' N5A: C2* N5A O2' N5A: O2* N5A C1' N5A: C1* N5A C1' N5I: C1* N5I O4' N5I: O4* N5I C4' N5I: C4* N5I C3' N5I: C3* N5I O3' N5I: O3* N5I C2' N5I: C2* N5I C5' N5I: C5* N5I O5' N5I: O5* N5I N5' N5O: N5* N5O C5' N5O: C5* N5O O5' N5O: O5* N5O C4' N5O: C4* N5O O4' N5O: O4* N5O C3' N5O: C3* N5O O3' N5O: O3* N5O C2' N5O: C2* N5O O2' N5O: O2* N5O C1' N5O: C1* N5O C1' N5P: C1* N5P O4' N5P: O4* N5P C4' N5P: C4* N5P C3' N5P: C3* N5P O3' N5P: O3* N5P C2' N5P: C2* N5P C5' N5P: C5* N5P O5' N5P: O5* N5P OP1 N6G: O1P N6G OP2 N6G: O2P N6G O5' N6G: O5* N6G C5' N6G: C5* N6G C4' N6G: C4* N6G O4' N6G: O4* N6G C1' N6G: C1* N6G C2' N6G: C2* N6G O2' N6G: O2* N6G C3' N6G: C3* N6G O3' N6G: O3* N6G OP3 N6G: O3P N6G PA NA7: AP NA7 O1A NA7: AO1 NA7 O2A NA7: AO2 NA7 O5B NA7:AO5* NA7 C5B NA7:AC5* NA7 C4B NA7:AC4* NA7 O4B NA7:AO4* NA7 C3B NA7:AC3* NA7 O3B NA7:AO3* NA7 C2B NA7:AC2* NA7 O2B NA7:AO2* NA7 C1B NA7:AC1* NA7 N9A NA7: AN9 NA7 C8A NA7: AC8 NA7 N7A NA7: AN7 NA7 C5A NA7: AC5 NA7 C6A NA7: AC6 NA7 N6A NA7: AN6 NA7 N1A NA7: AN1 NA7 C2A NA7: AC2 NA7 N3A NA7: AN3 NA7 C4A NA7: AC4 NA7 PN NA7: NP NA7 O1N NA7: NO1 NA7 O2N NA7: NO2 NA7 O5D NA7:NO5* NA7 C5D NA7:NC5* NA7 C4D NA7:NC4* NA7 O4D NA7:NO4* NA7 C3D NA7:NC3* NA7 O3D NA7:NO3* NA7 C2D NA7:NC2* NA7 O2D NA7:NO2* NA7 C1D NA7:NC1* NA7 P2B NA7:AP2* NA7 O1X NA7:AOP1 NA7 O2X NA7:AOP2 NA7 O3X NA7:AOP3 NA7 PA NAC: AP NAC O1A NAC: AO1 NAC O2A NAC: AO2 NAC O5B NAC:AO5* NAC C5B NAC:AC5* NAC C4B NAC:AC4* NAC O4B NAC:AO4* NAC C3B NAC:AC3* NAC O3B NAC:AO3* NAC C2B NAC:AC2* NAC O2B NAC:AO2* NAC C1B NAC:AC1* NAC N9A NAC: AN9 NAC C8A NAC: AC8 NAC N7A NAC: AN7 NAC C5A NAC: AC5 NAC C6A NAC: AC6 NAC N6A NAC: AN6 NAC N1A NAC: AN1 NAC C2A NAC: AC2 NAC N3A NAC: AN3 NAC C4A NAC: AC4 NAC PN NAC: NP NAC O1N NAC: NO1 NAC O2N NAC: NO2 NAC O5D NAC:NO5* NAC C5D NAC:NC5* NAC C4D NAC:NC4* NAC O4D NAC:NO4* NAC C3D NAC:NC3* NAC O3D NAC:NO3* NAC C2D NAC:NC2* NAC O2D NAC:NO2* NAC C1D NAC:NC1* NAC N1N NAC: NN1 NAC C2N NAC: NC2 NAC C3N NAC: NC3 NAC C7N NAC: NC7 NAC O7N NAC: NO7 NAC C8N NAC: NC8 NAC C4N NAC: NC4 NAC C5N NAC: NC5 NAC C6N NAC: NC6 NAC PA NAD: AP NAD O1A NAD: AO1 NAD O2A NAD: AO2 NAD O5B NAD:AO5* NAD C5B NAD:AC5* NAD C4B NAD:AC4* NAD O4B NAD:AO4* NAD C3B NAD:AC3* NAD O3B NAD:AO3* NAD C2B NAD:AC2* NAD O2B NAD:AO2* NAD C1B NAD:AC1* NAD N9A NAD: AN9 NAD C8A NAD: AC8 NAD N7A NAD: AN7 NAD C5A NAD: AC5 NAD C6A NAD: AC6 NAD N6A NAD: AN6 NAD N1A NAD: AN1 NAD C2A NAD: AC2 NAD N3A NAD: AN3 NAD C4A NAD: AC4 NAD PN NAD: NP NAD O1N NAD: NO1 NAD O2N NAD: NO2 NAD O5D NAD:NO5* NAD C5D NAD:NC5* NAD C4D NAD:NC4* NAD O4D NAD:NO4* NAD C3D NAD:NC3* NAD O3D NAD:NO3* NAD C2D NAD:NC2* NAD O2D NAD:NO2* NAD C1D NAD:NC1* NAD N1N NAD: NN1 NAD C2N NAD: NC2 NAD C3N NAD: NC3 NAD C7N NAD: NC7 NAD O7N NAD: NO7 NAD N7N NAD: NN7 NAD C4N NAD: NC4 NAD C5N NAD: NC5 NAD C6N NAD: NC6 NAD O5B NAE: O5* NAE C5B NAE: C5* NAE C4B NAE: C4* NAE O4B NAE: O4* NAE C3B NAE: C3* NAE O3B NAE: O3* NAE C2B NAE: C2* NAE O2B NAE: O2* NAE C1B NAE: C1* NAE PA NAH: AP NAH O1A NAH: AO1 NAH O2A NAH: AO2 NAH O5B NAH:AO5* NAH C5B NAH:AC5* NAH C4B NAH:AC4* NAH O4B NAH:AO4* NAH C3B NAH:AC3* NAH O3B NAH:AO3* NAH C2B NAH:AC2* NAH O2B NAH:AO2* NAH C1B NAH:AC1* NAH N9A NAH: AN9 NAH C8A NAH: AC8 NAH N7A NAH: AN7 NAH C5A NAH: AC5 NAH C6A NAH: AC6 NAH N6A NAH: AN6 NAH N1A NAH: AN1 NAH C2A NAH: AC2 NAH N3A NAH: AN3 NAH C4A NAH: AC4 NAH PN NAH: NP NAH O1N NAH: NO1 NAH O2N NAH: NO2 NAH O5D NAH:NO5* NAH C5D NAH:NC5* NAH C4D NAH:NC4* NAH O4D NAH:NO4* NAH C3D NAH:NC3* NAH O3D NAH:NO3* NAH C2D NAH:NC2* NAH O2D NAH:NO2* NAH C1D NAH:NC1* NAH N1N NAH: NN1 NAH C2N NAH: NC2 NAH C3N NAH: NC3 NAH C7N NAH: NC7 NAH O7N NAH: NO7 NAH N7N NAH: NN7 NAH C4N NAH: NC4 NAH C5N NAH: NC5 NAH C6N NAH: NC6 NAH PA NAI: AP NAI O1A NAI: AO1 NAI O2A NAI: AO2 NAI O5B NAI:AO5* NAI C5B NAI:AC5* NAI C4B NAI:AC4* NAI O4B NAI:AO4* NAI C3B NAI:AC3* NAI O3B NAI:AO3* NAI C2B NAI:AC2* NAI O2B NAI:AO2* NAI C1B NAI:AC1* NAI N9A NAI: AN9 NAI C8A NAI: AC8 NAI N7A NAI: AN7 NAI C5A NAI: AC5 NAI C6A NAI: AC6 NAI N6A NAI: AN6 NAI N1A NAI: AN1 NAI C2A NAI: AC2 NAI N3A NAI: AN3 NAI C4A NAI: AC4 NAI PN NAI: NP NAI O1N NAI: NO1 NAI O2N NAI: NO2 NAI O5D NAI:NO5* NAI C5D NAI:NC5* NAI C4D NAI:NC4* NAI O4D NAI:NO4* NAI C3D NAI:NC3* NAI O3D NAI:NO3* NAI C2D NAI:NC2* NAI O2D NAI:NO2* NAI C1D NAI:NC1* NAI N1N NAI: NN1 NAI C2N NAI: NC2 NAI C3N NAI: NC3 NAI C7N NAI: NC7 NAI O7N NAI: NO7 NAI N7N NAI: NN7 NAI C4N NAI: NC4 NAI C5N NAI: NC5 NAI C6N NAI: NC6 NAI PA NAJ: AP NAJ O1A NAJ: AO1 NAJ O2A NAJ: AO2 NAJ O5B NAJ:AO5* NAJ C5B NAJ:AC5* NAJ C4B NAJ:AC4* NAJ O4B NAJ:AO4* NAJ C3B NAJ:AC3* NAJ O3B NAJ:AO3* NAJ C2B NAJ:AC2* NAJ O2B NAJ:AO2* NAJ C1B NAJ:AC1* NAJ N9A NAJ: AN9 NAJ C8A NAJ: AC8 NAJ N7A NAJ: AN7 NAJ C5A NAJ: AC5 NAJ C6A NAJ: AC6 NAJ N6A NAJ: AN6 NAJ N1A NAJ: AN1 NAJ C2A NAJ: AC2 NAJ N3A NAJ: AN3 NAJ C4A NAJ: AC4 NAJ PN NAJ: NP NAJ O1N NAJ: NO1 NAJ O2N NAJ: NO2 NAJ O5D NAJ:NO5* NAJ C5D NAJ:NC5* NAJ C4D NAJ:NC4* NAJ O4D NAJ:NO4* NAJ C3D NAJ:NC3* NAJ O3D NAJ:NO3* NAJ C2D NAJ:NC2* NAJ O2D NAJ:NO2* NAJ C1D NAJ:NC1* NAJ N1N NAJ: NN1 NAJ C2N NAJ: NC2 NAJ C3N NAJ: NC3 NAJ C7N NAJ: NC7 NAJ O7N NAJ: NO7 NAJ N7N NAJ: NN7 NAJ C4N NAJ: NC4 NAJ C5N NAJ: NC5 NAJ C6N NAJ: NC6 NAJ PA NAP: AP NAP O1A NAP: AO1 NAP O2A NAP: AO2 NAP O5B NAP:AO5* NAP C5B NAP:AC5* NAP C4B NAP:AC4* NAP O4B NAP:AO4* NAP C3B NAP:AC3* NAP O3B NAP:AO3* NAP C2B NAP:AC2* NAP O2B NAP:AO2* NAP C1B NAP:AC1* NAP N9A NAP: AN9 NAP C8A NAP: AC8 NAP N7A NAP: AN7 NAP C5A NAP: AC5 NAP C6A NAP: AC6 NAP N6A NAP: AN6 NAP N1A NAP: AN1 NAP C2A NAP: AC2 NAP N3A NAP: AN3 NAP C4A NAP: AC4 NAP PN NAP: NP NAP O1N NAP: NO1 NAP O2N NAP: NO2 NAP O5D NAP:NO5* NAP C5D NAP:NC5* NAP C4D NAP:NC4* NAP O4D NAP:NO4* NAP C3D NAP:NC3* NAP O3D NAP:NO3* NAP C2D NAP:NC2* NAP O2D NAP:NO2* NAP C1D NAP:NC1* NAP N1N NAP: NN1 NAP C2N NAP: NC2 NAP C3N NAP: NC3 NAP C7N NAP: NC7 NAP O7N NAP: NO7 NAP N7N NAP: NN7 NAP C4N NAP: NC4 NAP C5N NAP: NC5 NAP C6N NAP: NC6 NAP P2B NAP:AP2* NAP O1X NAP:AOP1 NAP O2X NAP:AOP2 NAP O3X NAP:AOP3 NAP O5B NAQ: O5* NAQ C5B NAQ: C5* NAQ C4B NAQ: C4* NAQ O4B NAQ: O4* NAQ C3B NAQ: C3* NAQ O3B NAQ: O3* NAQ C2B NAQ: C2* NAQ O2B NAQ: O2* NAQ C1B NAQ: C1* NAQ PA NAX: AP NAX O1A NAX: AO1 NAX O2A NAX: AO2 NAX O5B NAX:AO5* NAX C5B NAX:AC5* NAX C4B NAX:AC4* NAX O4B NAX:AO4* NAX C3B NAX:AC3* NAX O3B NAX:AO3* NAX C2B NAX:AC2* NAX O2B NAX:AO2* NAX C1B NAX:AC1* NAX N9A NAX: AN9 NAX C8A NAX: AC8 NAX N7A NAX: AN7 NAX C5A NAX: AC5 NAX C6A NAX: AC6 NAX N6A NAX: AN6 NAX N1A NAX: AN1 NAX C2A NAX: AC2 NAX N3A NAX: AN3 NAX C4A NAX: AC4 NAX PN NAX: NP NAX O1N NAX: NO1 NAX O2N NAX: NO2 NAX O5D NAX:NO5* NAX C5D NAX:NC5* NAX C4D NAX:NC4* NAX O4D NAX:NO4* NAX C3D NAX:NC3* NAX O3D NAX:NO3* NAX C2D NAX:NC2* NAX O2D NAX:NO2* NAX C1D NAX:NC1* NAX N1N NAX: NN1 NAX C2N NAX: NC2 NAX C3N NAX: NC3 NAX C7N NAX: NC7 NAX O7N NAX: NO7 NAX N7N NAX: NN7 NAX C4N NAX: NC4 NAX C5N NAX: NC5 NAX C6N NAX: NC6 NAX O6N NAX: NO6 NAX C1' NBC: C1* NBC O1' NBC: O1* NBC C2' NBC: C2* NBC C3' NBC: C3* NBC C4' NBC: C4* NBC N5' NBC: N5* NBC O2' NBC: O2* NBC O3' NBC: O3* NBC PA NBD: AP NBD O11 NBD:AO1P NBD O12 NBD:AO2P NBD O5B NBD:AO5* NBD C5B NBD:AC5* NBD C4B NBD:AC4* NBD O4B NBD:AO4* NBD C3B NBD:AC3* NBD O3B NBD:AO3* NBD C2B NBD:AC2* NBD O2B NBD:AO2* NBD C1B NBD:AC1* NBD N9A NBD: AN9 NBD C8A NBD: AC8 NBD N7A NBD: AN7 NBD C5A NBD: AC5 NBD C6A NBD: AC6 NBD N6A NBD: AN6 NBD N1A NBD: AN1 NBD C2A NBD: AC2 NBD N3A NBD: AN3 NBD C4A NBD: AC4 NBD PN NBD: NP NBD O13 NBD:NO1P NBD O14 NBD:NO2P NBD O5D NBD:NO5* NBD C5D NBD:NC5* NBD C4D NBD:NC4* NBD O4D NBD:NO4* NBD C3D NBD:NC3* NBD O3D NBD:NO3* NBD C2D NBD:NC2* NBD O2D NBD:NO2* NBD C1D NBD:NC1* NBD N1N NBD: NN1 NBD C2N NBD: NC2 NBD C3N NBD: NC3 NBD C7N NBD: NC7 NBD O7N NBD: NO7 NBD N7N NBD: NN7 NBD C4N NBD: NC4 NBD C5N NBD: NC5 NBD C6N NBD: NC6 NBD PA NBP: AP NBP O1A NBP: AO1 NBP O2A NBP: AO2 NBP O5B NBP:AO5* NBP C5B NBP:AC5* NBP C4B NBP:AC4* NBP O4B NBP:AO4* NBP C3B NBP:AC3* NBP O3B NBP:AO3* NBP C2B NBP:AC2* NBP O2B NBP:AO2* NBP C1B NBP:AC1* NBP N9A NBP: AN9 NBP C8A NBP: AC8 NBP N7A NBP: AN7 NBP C5A NBP: AC5 NBP C6A NBP: AC6 NBP N6A NBP: AN6 NBP N1A NBP: AN1 NBP C2A NBP: AC2 NBP N3A NBP: AN3 NBP C4A NBP: AC4 NBP PN NBP: NP NBP O1N NBP: NO1 NBP O2N NBP: NO2 NBP O5D NBP:NO5* NBP C5D NBP:NC5* NBP C4D NBP:NC4* NBP O4D NBP:NO4* NBP C3D NBP:NC3* NBP O3D NBP:NO3* NBP C2D NBP:NC2* NBP O2D NBP:NO2* NBP C1D NBP:NC1* NBP N1N NBP: NN1 NBP C2N NBP: NC2 NBP C3N NBP: NC3 NBP C7N NBP: NC7 NBP O7N NBP: NO7 NBP N7N NBP: NN7 NBP C4N NBP: NC4 NBP C5N NBP: NC5 NBP C6N NBP: NC6 NBP P2B NBP:AP2* NBP O1X NBP:AOP1 NBP O2X NBP:AOP2 NBP O3X NBP:AOP3 NBP OXT NBQ: O NBQ O NBQ: O1 NBQ O5' NBS: O5* NBS C5' NBS: C5* NBS C4' NBS: C4* NBS O4' NBS: O4* NBS C1' NBS: C1* NBS C2' NBS: C2* NBS O2' NBS: O2* NBS C3' NBS: C3* NBS O3' NBS: O3* NBS OXT NC1: O1 NC1 OXS NCG:O100 NCG CXU NCG:C102 NCG OXX NCG:O105 NCG NX0 NCG:N108 NCG CX2 NCG:C110 NCG OXA NCG:O118 NCG O5' NCN: O5* NCN C5' NCN: C5* NCN C4' NCN: C4* NCN O4' NCN: O4* NCN C3' NCN: C3* NCN O3' NCN: O3* NCN C2' NCN: C2* NCN O2' NCN: O2* NCN C1' NCN: C1* NCN O1' NCS: O1* NCS C1' NCS: C1* NCS C2' NCS: C2* NCS N2' NCS: N2* NCS C3' NCS: C3* NCS O3' NCS: O3* NCS C4' NCS: C4* NCS O4' NCS: O4* NCS C5' NCS: C5* NCS O5' NCS: O5* NCS OP1 NCX: O1P NCX OP2 NCX: O2P NCX OP3 NCX: O3P NCX O5' NCX: O5* NCX C5' NCX: C5* NCX C4' NCX: C4* NCX O4' NCX: O4* NCX C1' NCX: C1* NCX C3' NCX: C3* NCX C2' NCX: C2* NCX O3' NCX: O3* NCX PA NDA: AP NDA O1A NDA: AO1 NDA O2A NDA: AO2 NDA O5B NDA:AO5* NDA C5B NDA:AC5* NDA C4B NDA:AC4* NDA O4B NDA:AO4* NDA C3B NDA:AC3* NDA O3B NDA:AO3* NDA C2B NDA:AC2* NDA O2B NDA:AO2* NDA C1B NDA:AC1* NDA N9A NDA: AN9 NDA C8A NDA: AC8 NDA N7A NDA: AN7 NDA C5A NDA: AC5 NDA C6A NDA: AC6 NDA N6A NDA: AN6 NDA N1A NDA: AN1 NDA C2A NDA: AC2 NDA N3A NDA: AN3 NDA C4A NDA: AC4 NDA PN NDA: NP NDA O1N NDA: NO1 NDA O2N NDA: NO2 NDA O5D NDA:NO5* NDA C5D NDA:NC5* NDA C4D NDA:NC4* NDA O4D NDA:NO4* NDA C3D NDA:NC3* NDA O3D NDA:NO3* NDA C2D NDA:NC2* NDA O2D NDA:NO2* NDA C1D NDA:NC1* NDA N1N NDA: NN1 NDA C2N NDA: NC2 NDA C3N NDA: NC3 NDA C7N NDA: NC7 NDA N7N NDA: NN7 NDA C4N NDA: NC4 NDA C5N NDA: NC5 NDA C6N NDA: NC6 NDA O5B NDC: O5* NDC C5B NDC: C5* NDC C4B NDC: C4* NDC O4B NDC: O4* NDC C3B NDC: C3* NDC O3B NDC: O3* NDC C2B NDC: C2* NDC O2B NDC: O2* NDC C1B NDC: C1* NDC O7N NDE: NO7 NDE C7N NDE: NC7 NDE N7N NDE: NN7 NDE C3N NDE: NC3 NDE C4N NDE: NC4 NDE C5N NDE: NC5 NDE C6N NDE: NC6 NDE C2N NDE: NC2 NDE N1N NDE: NN1 NDE C1D NDE:NC1* NDE C2D NDE:NC2* NDE O2D NDE:NO2* NDE C3D NDE:NC3* NDE O3D NDE:NO3* NDE O4D NDE:NO4* NDE C4D NDE:NC4* NDE C5D NDE:NC5* NDE O5D NDE:NO5* NDE PN NDE: NP NDE O1N NDE: NO1 NDE O2N NDE: NO2 NDE PA NDE: AP NDE O1A NDE: AO1 NDE O2A NDE: AO2 NDE O5B NDE:AO5* NDE C5B NDE:AC5* NDE C4B NDE:AC4* NDE O4B NDE:AO4* NDE C1B NDE:AC1* NDE C2B NDE:AC2* NDE O2B NDE:AO2* NDE C3B NDE:AC3* NDE O3B NDE:AO3* NDE N9A NDE: AN9 NDE C8A NDE: AC8 NDE N7A NDE: AN7 NDE C5A NDE: AC5 NDE C6A NDE: AC6 NDE N6A NDE: AN6 NDE C4A NDE: AC4 NDE N3A NDE: AN3 NDE C2A NDE: AC2 NDE N1A NDE: AN1 NDE PA NDO: AP NDO O1A NDO: AO1 NDO O2A NDO: AO2 NDO O5B NDO:AO5* NDO C5B NDO:AC5* NDO C4B NDO:AC4* NDO O4B NDO:AO4* NDO C3B NDO:AC3* NDO O3B NDO:AO3* NDO C2B NDO:AC2* NDO O2B NDO:AO2* NDO C1B NDO:AC1* NDO N9A NDO: AN9 NDO C8A NDO: AC8 NDO N7A NDO: AN7 NDO C5A NDO: AC5 NDO C6A NDO: AC6 NDO O6A NDO: AO6 NDO N1A NDO: AN1 NDO C2A NDO: AC2 NDO N3A NDO: AN3 NDO C4A NDO: AC4 NDO PN NDO: NP NDO O1N NDO: NO1 NDO O2N NDO: NO2 NDO O5D NDO:NO5* NDO C5D NDO:NC5* NDO C4D NDO:NC4* NDO O4D NDO:NO4* NDO C3D NDO:NC3* NDO O3D NDO:NO3* NDO C2D NDO:NC2* NDO O2D NDO:NO2* NDO C1D NDO:NC1* NDO N1N NDO: NN1 NDO C2N NDO: NC2 NDO C3N NDO: NC3 NDO C7N NDO: NC7 NDO O7N NDO: NO7 NDO N7N NDO: NN7 NDO C4N NDO: NC4 NDO C5N NDO: NC5 NDO C6N NDO: NC6 NDO P2B NDO:AP2* NDO O1X NDO:AOP1 NDO O2X NDO:AOP2 NDO O3X NDO:AOP3 NDO PA NDP: AP NDP O1A NDP: AO1 NDP O2A NDP: AO2 NDP O5B NDP:AO5* NDP C5B NDP:AC5* NDP C4B NDP:AC4* NDP O4B NDP:AO4* NDP C3B NDP:AC3* NDP O3B NDP:AO3* NDP C2B NDP:AC2* NDP O2B NDP:AO2* NDP C1B NDP:AC1* NDP N9A NDP: AN9 NDP C8A NDP: AC8 NDP N7A NDP: AN7 NDP C5A NDP: AC5 NDP C6A NDP: AC6 NDP N6A NDP: AN6 NDP N1A NDP: AN1 NDP C2A NDP: AC2 NDP N3A NDP: AN3 NDP C4A NDP: AC4 NDP PN NDP: NP NDP O1N NDP: NO1 NDP O2N NDP: NO2 NDP O5D NDP:NO5* NDP C5D NDP:NC5* NDP C4D NDP:NC4* NDP O4D NDP:NO4* NDP C3D NDP:NC3* NDP O3D NDP:NO3* NDP C2D NDP:NC2* NDP O2D NDP:NO2* NDP C1D NDP:NC1* NDP N1N NDP: NN1 NDP C2N NDP: NC2 NDP C3N NDP: NC3 NDP C7N NDP: NC7 NDP O7N NDP: NO7 NDP N7N NDP: NN7 NDP C4N NDP: NC4 NDP C5N NDP: NC5 NDP C6N NDP: NC6 NDP P2B NDP:AP2* NDP O1X NDP:AOP1 NDP O2X NDP:AOP2 NDP O3X NDP:AOP3 NDP C5' NEA: C5* NEA C4' NEA: C4* NEA O4' NEA: O4* NEA C3' NEA: C3* NEA O3' NEA: O3* NEA C2' NEA: C2* NEA O2' NEA: O2* NEA C1' NEA: C1* NEA C5' NEC: C5* NEC O5' NEC: O5* NEC N5' NEC: N5* NEC C4' NEC: C4* NEC O4' NEC: O4* NEC C3' NEC: C3* NEC O3' NEC: O3* NEC C2' NEC: C2* NEC O2' NEC: O2* NEC C1' NEC: C1* NEC N5' NEI: N5* NEI C5' NEI: C5* NEI O5' NEI: O5* NEI C4' NEI: C4* NEI O4' NEI: O4* NEI C3' NEI: C3* NEI O3' NEI: O3* NEI C2' NEI: C2* NEI O2' NEI: O2* NEI C1' NEI: C1* NEI O11 NF:1O1 NF C11 NF:1C1 NF N21 NF:1N2 NF C12 NF:2C1 NF C31 NF:1C3 NF O31 NF:1O3 NF CX3 NF:1C11 NF CXD NF:1C12 NF CXT NF:1C10 NF C91 NF:1C9 NF C81 NF:1C8 NF C71 NF:1C7 NF CXN NF:1C13 NF C61 NF:1C6 NF C51 NF:1C5 NF C41 NF:1C4 NF C22 NF:2C2 NF N32 NF:2N3 NF C42 NF:2C4 NF C52 NF:2C5 NF C62 NF:2C6 NF N72 NF:2N7 NF C82 NF:2C8 NF O13 NF:3O1 NF C13 NF:3C1 NF N23 NF:3N2 NF C92 NF:2C9 NF C33 NF:3C3 NF O33 NF:3O3 NF CX5 NF:3C11 NF CXF NF:3C12 NF CXV NF:3C10 NF C93 NF:3C9 NF C83 NF:3C8 NF C73 NF:3C7 NF CXP NF:3C13 NF C63 NF:3C6 NF C53 NF:3C5 NF C43 NF:3C4 NF C1' NF2: C1* NF2 O4' NF2: O4* NF2 C2' NF2: C2* NF2 O2' NF2: O2* NF2 C3' NF2: C3* NF2 O3' NF2: O3* NF2 C4' NF2: C4* NF2 C5' NF2: C5* NF2 O5' NF2: O5* NF2 OP1 NF2: O1P NF2 OP2 NF2: O2P NF2 OP3 NF2: O3P NF2 C1' NGD: C1* NGD O4' NGD: O4* NGD C2' NGD: C2* NGD O2' NGD: O2* NGD C3' NGD: C3* NGD O3' NGD: O3* NGD C4' NGD: C4* NGD C5' NGD: C5* NGD O5' NGD: O5* NGD O5'R NGD:RO5* NGD C5'R NGD:RC5* NGD C4'R NGD:RC4* NGD C3'R NGD:RC3* NGD O3'R NGD:RO3* NGD C2'R NGD:RC2* NGD O2'R NGD:RO2* NGD O4'R NGD:RO4* NGD C1'R NGD:RC1* NGD C1' NGM: C1* NGM C2' NGM: C2* NGM C3' NGM: C3* NGM C4' NGM: C4* NGM C5' NGM: C5* NGM O1' NGM: O1* NGM O2' NGM: O2* NGM O3' NGM: O3* NGM O4' NGM: O4* NGM C1' NGP: C1* NGP C2' NGP: C2* NGP C3' NGP: C3* NGP C4' NGP: C4* NGP C5' NGP: C5* NGP O1' NGP: O1* NGP O2' NGP: O2* NGP O3' NGP: O3* NGP O4' NGP: O4* NGP C1' NGU: C1* NGU C2' NGU: C2* NGU C3' NGU: C3* NGU C4' NGU: C4* NGU C5' NGU: C5* NGU O1' NGU: O1* NGU O2' NGU: O2* NGU O3' NGU: O3* NGU O4' NGU: O4* NGU PA NHD: AP NHD O1A NHD: AO1 NHD O2A NHD: AO2 NHD O5B NHD:AO5* NHD C5B NHD:AC5* NHD C4B NHD:AC4* NHD O4B NHD:AO4* NHD C3B NHD:AC3* NHD O3B NHD:AO3* NHD C2B NHD:AC2* NHD O2B NHD:AO2* NHD C1B NHD:AC1* NHD N9A NHD: AN9 NHD C8A NHD: AC8 NHD N7A NHD: AN7 NHD C5A NHD: AC5 NHD C6A NHD: AC6 NHD O6A NHD: AO6 NHD N1A NHD: AN1 NHD C2A NHD: AC2 NHD N3A NHD: AN3 NHD C4A NHD: AC4 NHD PN NHD: NP NHD O1N NHD: NO1 NHD O2N NHD: NO2 NHD O5D NHD:NO5* NHD C5D NHD:NC5* NHD C4D NHD:NC4* NHD O4D NHD:NO4* NHD C3D NHD:NC3* NHD O3D NHD:NO3* NHD C2D NHD:NC2* NHD O2D NHD:NO2* NHD C1D NHD:NC1* NHD N1N NHD: NN1 NHD C2N NHD: NC2 NHD C3N NHD: NC3 NHD C7N NHD: NC7 NHD O7N NHD: NO7 NHD N7N NHD: NN7 NHD C4N NHD: NC4 NHD C5N NHD: NC5 NHD C6N NHD: NC6 NHD O5B NHO: O5* NHO C5B NHO: C5* NHO C4B NHO: C4* NHO O4B NHO: O4* NHO C3B NHO: C3* NHO O3B NHO: O3* NHO C2B NHO: C2* NHO O2B NHO: O2* NHO C1B NHO: C1* NHO C1' NIR: C1* NIR C2' NIR: C2* NIR O2' NIR: O2* NIR C3' NIR: C3* NIR O3' NIR: O3* NIR C4' NIR: C4* NIR O4' NIR: O4* NIR C5' NIR: C5* NIR OXT NLQ: O NLQ O NLQ: OXT NLQ C5' NMD: C5* NMD C4' NMD: C4* NMD O4' NMD: O4* NMD C3' NMD: C3* NMD O3' NMD: O3* NMD C2' NMD: C2* NMD N2' NMD: N2* NMD C1' NMD: C1* NMD O5' NMD: O5* NMD OP2 NMS: O2P NMS OP1 NMS: O1P NMS O5' NMS: O5* NMS C2' NMS: C2* NMS C5' NMS: C5* NMS C4' NMS: C4* NMS O4' NMS: O4* NMS C1' NMS: C1* NMS C3' NMS: C3* NMS O3' NMS: O3* NMS OP3 NMS: O3P NMS OP3 NMT: O3P NMT OP2 NMT: O2P NMT O5' NMT: O5* NMT C2' NMT: C2* NMT C5' NMT: C5* NMT C4' NMT: C4* NMT O4' NMT: O4* NMT C1' NMT: C1* NMT C3' NMT: C3* NMT O3' NMT: O3* NMT OP1 NMT: O1P NMT N1A NMX: AN1 NMX C2A NMX: AC2 NMX N3A NMX: AN3 NMX C4A NMX: AC4 NMX C5A NMX: AC5 NMX C6A NMX: AC6 NMX N6A NMX: AN6 NMX N7A NMX: AN7 NMX C8A NMX: AC8 NMX N9A NMX: AN9 NMX C1B NMX:AC1* NMX C2B NMX:AC2* NMX O2B NMX:AO2* NMX C3B NMX:AC3* NMX O3B NMX:AO3* NMX P3B NMX:AP3* NMX O7A NMX: AO7 NMX O8A NMX: AO8 NMX O9A NMX: AO9 NMX C4B NMX:AC4* NMX O4B NMX:AO4* NMX C5B NMX:AC5* NMX O5B NMX:AO5* NMX P1A NMX: AP1 NMX O1A NMX: AO1 NMX O2A NMX: AO2 NMX O3A NMX: AO3 NMX P2A NMX: AP2 NMX O4A NMX: AO4 NMX O5A NMX: AO5 NMX O6A NMX: AO6 NMX CBP NMX:PC11 NMX CCP NMX:PC12 NMX CDP NMX:PC13 NMX CEP NMX:PC14 NMX CAP NMX:PC10 NMX OAP NMX:PO10 NMX C9P NMX: PC9 NMX O9P NMX: PO9 NMX N8P NMX: PN8 NMX C7P NMX: PC7 NMX C6P NMX: PC6 NMX C5P NMX: PC5 NMX O5P NMX: PO5 NMX N4P NMX: PN4 NMX C3P NMX: PC3 NMX C2P NMX: PC2 NMX C1I NMX: IC1 NMX N1I NMX: IN1 NMX O1I NMX: IO1 NMX O2I NMX: IO2 NMX O5' NNP: O5* NNP O3' NNP: O3* NNP C6' NOC: C6* NOC O6' NOC: O6* NOC C5' NOC: C5* NOC C4' NOC: C4* NOC C3' NOC: C3* NOC O3' NOC: O3* NOC C2' NOC: C2* NOC O2' NOC: O2* NOC C1' NOC: C1* NOC C1' NOD: C1* NOD C2' NOD: C2* NOD C3' NOD: C3* NOD C4' NOD: C4* NOD O4' NOD: O4* NOD C5' NOD: C5* NOD O5' NOD: O5* NOD C6' NOD: C6* NOD N3' NOD: N3* NOD C5' NOS: C5* NOS O5' NOS: O5* NOS C4' NOS: C4* NOS O4' NOS: O4* NOS C1' NOS: C1* NOS C2' NOS: C2* NOS O2' NOS: O2* NOS C3' NOS: C3* NOS O3' NOS: O3* NOS O5' NP3: O5* NP3 C5' NP3: C5* NP3 C4' NP3: C4* NP3 O4' NP3: O4* NP3 C1' NP3: C1* NP3 C2' NP3: C2* NP3 C3' NP3: C3* NP3 O3' NP3: O3* NP3 O5' NRI: O5* NRI C2' NRI: C2* NRI C5' NRI: C5* NRI C4' NRI: C4* NRI C3' NRI: C3* NRI C6' NRI: C6* NRI N1' NRI: N1* NRI O3' NRI: O3* NRI C4' NRT: C4* NRT O4' NRT: O4* NRT C3' NRT: C3* NRT C2' NRT: C2* NRT O5' NSS: O5* NSS C5' NSS: C5* NSS C4' NSS: C4* NSS C3' NSS: C3* NSS O3' NSS: O3* NSS C2' NSS: C2* NSS O2' NSS: O2* NSS C1' NSS: C1* NSS O4' NSS: O4* NSS C2' NTU: C2* NTU S1' NTU: S1* NTU C1' NTU: C1* NTU C4' NTU: C4* NTU S2' NTU: S2* NTU C3' NTU: C3* NTU C1' NUP: C1* NUP O4' NUP: O4* NUP C2' NUP: C2* NUP O2' NUP: O2* NUP C3' NUP: C3* NUP O3' NUP: O3* NUP C4' NUP: C4* NUP C5' NUP: C5* NUP O5' NUP: O5* NUP OXY NYC: OXT NYC O11 NYD:O1PN NYD O12 NYD:O2PN NYD O5D NYD:O5'N NYD C5D NYD:C5'N NYD C4D NYD:C4'N NYD O4D NYD:O4'N NYD C3D NYD:C3'N NYD O3D NYD:O3'N NYD C2D NYD:C2'N NYD O2D NYD:O2'N NYD C1D NYD:C1'N NYD O13 NYD:O1PA NYD O14 NYD:O2PA NYD O5B NYD:O5'A NYD C5B NYD:C5'A NYD C4B NYD:C4'A NYD O4B NYD:O4'A NYD C3B NYD:C3'A NYD O3B NYD:O3'A NYD C2B NYD:C2'A NYD O2B NYD:O2'A NYD C1B NYD:C1'A NYD O4' NYM: O4* NYM N3' NYM: N3* NYM C1' NYM: C1* NYM C2' NYM: C2* NYM C3' NYM: C3* NYM C4' NYM: C4* NYM O5' NYM: O5* NYM C5' NYM: C5* NYM O1X NZP:AOP1 NZP P2B NZP:AP2* NZP O2X NZP:AOP2 NZP O3X NZP:AOP3 NZP O2B NZP:AO2* NZP C2B NZP:AC2* NZP C3B NZP:AC3* NZP O3B NZP:AO3* NZP C1B NZP:AC1* NZP N9A NZP: AN9 NZP C8A NZP: AC8 NZP N7A NZP: AN7 NZP C5A NZP: AC5 NZP C4A NZP: AC4 NZP N3A NZP: AN3 NZP C2A NZP: AC2 NZP N1A NZP: AN1 NZP C6A NZP: AC6 NZP N6A NZP: AN6 NZP O4B NZP:AO4* NZP C4B NZP:AC4* NZP C5B NZP:AC5* NZP O5B NZP:AO5* NZP PA NZP: AP NZP O1A NZP: AO1 NZP O2A NZP: AO2 NZP PN NZP: NP NZP O1N NZP: NO1 NZP O2N NZP: NO2 NZP O5D NZP:NO5* NZP C5D NZP:NC5* NZP C4D NZP:NC4* NZP O4D NZP:NO4* NZP C1D NZP:NC1* NZP C2D NZP:NC2* NZP O2D NZP:NO2* NZP C3D NZP:NC3* NZP O3D NZP:NO3* NZP N1N NZP: NN1 NZP C2N NZP: NC2 NZP C3N NZP: NC3 NZP C7N NZP: NC7 NZP N7N NZP: NN7 NZP O7N NZP: NO7 NZP C4N NZP: NC4 NZP C5N NZP: NC5 NZP O5N NZP: NO5 NZP C6N NZP: NC6 NZP O6N NZP: NO6 NZP O1X NZQ:AOP1 NZQ P2B NZQ:AP2* NZQ O2X NZQ:AOP2 NZQ O3X NZQ:AOP3 NZQ O2B NZQ:AO2* NZQ C2B NZQ:AC2* NZQ C3B NZQ:AC3* NZQ O3B NZQ:AO3* NZQ C1B NZQ:AC1* NZQ N9A NZQ: AN9 NZQ C8A NZQ: AC8 NZQ N7A NZQ: AN7 NZQ C5A NZQ: AC5 NZQ C4A NZQ: AC4 NZQ N3A NZQ: AN3 NZQ C2A NZQ: AC2 NZQ N1A NZQ: AN1 NZQ C6A NZQ: AC6 NZQ N6A NZQ: AN6 NZQ O4B NZQ:AO4* NZQ C4B NZQ:AC4* NZQ C5B NZQ:AC5* NZQ O5B NZQ:AO5* NZQ PA NZQ: AP NZQ O1A NZQ: AO1 NZQ O2A NZQ: AO2 NZQ PN NZQ: NP NZQ O1N NZQ: NO1 NZQ O2N NZQ: NO2 NZQ O5D NZQ:NO5* NZQ C5D NZQ:NC5* NZQ C4D NZQ:NC4* NZQ O4D NZQ:NO4* NZQ C1D NZQ:NC1* NZQ C2D NZQ:NC2* NZQ O2D NZQ:NO2* NZQ C3D NZQ:NC3* NZQ O3D NZQ:NO3* NZQ N1N NZQ: NN1 NZQ C2N NZQ: NC2 NZQ C3N NZQ: NC3 NZQ C7N NZQ: NC7 NZQ N7N NZQ: NN7 NZQ O7N NZQ: NO7 NZQ C4N NZQ: NC4 NZQ C5N NZQ: NC5 NZQ O5N NZQ: NO5 NZQ C6N NZQ: NC6 NZQ O6N NZQ: NO6 NZQ O5' O2C: O5* O2C C5' O2C: C5* O2C C4' O2C: C4* O2C O4' O2C: O4* O2C C1' O2C: C1* O2C C2' O2C: C2* O2C O2' O2C: O2* O2C C3' O2C: C3* O2C O5' OAD: O5* OAD C5' OAD: C5* OAD C4' OAD: C4* OAD O4' OAD: O4* OAD C3' OAD: C3* OAD O3' OAD: O3* OAD C2' OAD: C2* OAD O2' OAD: O2* OAD C1' OAD: C1* OAD O2D OAD:RO2* OAD O5D OAD:RO5* OAD C5D OAD:RC5* OAD C4D OAD:RC4* OAD O4D OAD:RO4* OAD C3D OAD:RC3* OAD O3D OAD:RO3* OAD C2D OAD:RC2* OAD C1D OAD:RC1* OAD O1D OAD:RO1* OAD C6D OAD:RC6* OAD O6D OAD:RO6* OAD C7D OAD:RC7* OAD CXA OBP:CX10 OBP CXB OBP:CX11 OBP CXC OBP:CX12 OBP O1X ODP:AOP1 ODP P2B ODP:AP2* ODP O2X ODP:AOP2 ODP O3X ODP:AOP3 ODP O2B ODP:AO2* ODP C2B ODP:AC2* ODP C3B ODP:AC3* ODP O3B ODP:AO3* ODP C1B ODP:AC1* ODP N9A ODP: AN9 ODP C8A ODP: AC8 ODP N7A ODP: AN7 ODP C5A ODP: AC5 ODP C4A ODP: AC4 ODP N3A ODP: AN3 ODP C2A ODP: AC2 ODP N1A ODP: AN1 ODP C6A ODP: AC6 ODP N6A ODP: AN6 ODP O4B ODP:AO4* ODP C4B ODP:AC4* ODP C5B ODP:AC5* ODP O5B ODP:AO5* ODP PA ODP: AP ODP O1A ODP: AO1 ODP O2A ODP: AO2 ODP PN ODP: NP ODP O1N ODP: NO1 ODP O2N ODP: NO2 ODP O5D ODP:NO5* ODP C5D ODP:NC5* ODP C4D ODP:NC4* ODP O4D ODP:NO4* ODP C1D ODP:NC1* ODP C2D ODP:NC2* ODP O2D ODP:NO2* ODP C3D ODP:NC3* ODP O3D ODP:NO3* ODP N1N ODP: NN1 ODP C2N ODP: NC2 ODP C3N ODP: NC3 ODP C7N ODP: NC7 ODP N7N ODP: NN7 ODP O7N ODP: NO7 ODP C4N ODP: NC4 ODP C5N ODP: NC5 ODP C6N ODP: NC6 ODP OP1 OIP: O1P OIP OP2 OIP: O2P OIP OP3 OIP: O3P OIP O5' OIP: O5* OIP C5' OIP: C5* OIP C4' OIP: C4* OIP O4' OIP: O4* OIP C3' OIP: C3* OIP O3' OIP: O3* OIP C2' OIP: C2* OIP C1' OIP: C1* OIP O6' OLU: O6* OLU C4' OLU: C4* OLU N3' OLU: N3* OLU C2' OLU: C2* OLU S1' OLU: S1* OLU C5' OLU: C5* OLU C1' OMC: C1* OMC C2' OMC: C2* OMC O2' OMC: O2* OMC C3' OMC: C3* OMC C4' OMC: C4* OMC O4' OMC: O4* OMC O3' OMC: O3* OMC C5' OMC: C5* OMC O5' OMC: O5* OMC OP1 OMC: O1P OMC OP2 OMC: O2P OMC OP3 OMC: O3P OMC OP1 OMG: O1P OMG OP2 OMG: O2P OMG OP3 OMG: O3P OMG O5' OMG: O5* OMG C5' OMG: C5* OMG C4' OMG: C4* OMG O4' OMG: O4* OMG C3' OMG: C3* OMG O3' OMG: O3* OMG C2' OMG: C2* OMG O2' OMG: O2* OMG C1' OMG: C1* OMG O5' OMP: O5* OMP C5' OMP: C5* OMP C4' OMP: C4* OMP O4' OMP: O4* OMP C3' OMP: C3* OMP O3' OMP: O3* OMP C2' OMP: C2* OMP O2' OMP: O2* OMP C1' OMP: C1* OMP C1' OMU: C1* OMU C2' OMU: C2* OMU O2' OMU: O2* OMU C3' OMU: C3* OMU C4' OMU: C4* OMU O3' OMU: O3* OMU O4' OMU: O4* OMU C5' OMU: C5* OMU O5' OMU: O5* OMU OP1 OMU: O1P OMU OP2 OMU: O2P OMU OP3 OMU: O3P OMU O3' ONA: O3* ONA C3' ONA: C3* ONA C2' ONA: C2* ONA O2' ONA: O2* ONA C4' ONA: C4* ONA C5' ONA: C5* ONA O5' ONA: O5* ONA O4' ONA: O4* ONA C1' ONA: C1* ONA OP3 ONE: O3P ONE OP1 ONE: O1P ONE OP2 ONE: O2P ONE O5' ONE: O5* ONE C5' ONE: C5* ONE C4' ONE: C4* ONE O4' ONE: O4* ONE C3' ONE: C3* ONE C2' ONE: C2* ONE O2' ONE: O2* ONE O3' ONE: O3* ONE C1' ONE: C1* ONE O3' ONM: O3* ONM C3' ONM: C3* ONM C2' ONM: C2* ONM O2' ONM: O2* ONM C4' ONM: C4* ONM C5' ONM: C5* ONM O5' ONM: O5* ONM O4' ONM: O4* ONM C1' ONM: C1* ONM C1' OR5: C1* OR5 O1' OR5: O1* OR5 C2' OR5: C2* OR5 O2' OR5: O2* OR5 C3' OR5: C3* OR5 O3' OR5: O3* OR5 C4' OR5: C4* OR5 O4' OR5: O4* OR5 C5' OR5: C5* OR5 O5' OR5: O5* OR5 C1' OTG: C1* OTG C2' OTG: C2* OTG C3' OTG: C3* OTG C4' OTG: C4* OTG C5' OTG: C5* OTG C6' OTG: C6* OTG C7' OTG: C7* OTG C8' OTG: C8* OTG O8' OTG: O8* OTG P3' OXT: P3* OXT O3' OXT: O3* OXT C3' OXT: C3* OXT C2' OXT: C2* OXT O2' OXT: O2* OXT C1' OXT: C1* OXT O4' OXT: O4* OXT C4' OXT: C4* OXT C5' OXT: C5* OXT O5' OXT: O5* OXT OXT OXX: O4 OXX OP1 P: O1P P OP2 P: O2P P OP3 P: O3P P O5' P: O5* P C5' P: C5* P C4' P: C4* P O4' P: O4* P C3' P: C3* P O3' P: O3* P C2' P: C2* P C1' P: C1* P OP1 P1P: O1P P1P OP2 P1P: O2P P1P O5' P1P: O5* P1P C5' P1P: C5* P1P C4' P1P: C4* P1P C3' P1P: C3* P1P O3' P1P: O3* P1P O6' P2P: O6* P2P C5' P2P: C5* P2P C4' P2P: C4* P2P O5' P2P: O5* P2P C3' P2P: C3* P2P O3' P2P: O3* P2P C2' P2P: C2* P2P O2' P2P: O2* P2P C1' P2P: C1* P2P OP1 P2T: O1P P2T OP2 P2T: O2P P2T O5' P2T: O5* P2T C5' P2T: C5* P2T C4' P2T: C4* P2T O4' P2T: O4* P2T C1' P2T: C1* P2T C2' P2T: C2* P2T O2' P2T: O2* P2T C3' P2T: C3* P2T O3' P2T: O3* P2T OP3 P2T: O3P P2T C1' P2U: C1* P2U C2' P2U: C2* P2U C3' P2U: C3* P2U C4' P2U: C4* P2U O3' P2U: O3* P2U O4' P2U: O4* P2U C5' P2U: C5* P2U O5' P2U: O5* P2U OP1 P2U: O1P P2U OP2 P2U: O2P P2U OP3 P2U: O3P P2U O5' P5A: O5* P5A C5' P5A: C5* P5A C4' P5A: C4* P5A O4' P5A: O4* P5A C1' P5A: C1* P5A C2' P5A: C2* P5A O2' P5A: O2* P5A C3' P5A: C3* P5A O3' P5A: O3* P5A OP1 P5P: O1P P5P OP2 P5P: O2P P5P OP3 P5P: O3P P5P C5' PA7: C5* PA7 O5' PA7: O5* PA7 N5' PA7: N5* PA7 C4' PA7: C4* PA7 O4' PA7: O4* PA7 C3' PA7: C3* PA7 O3' PA7: O3* PA7 C2' PA7: C2* PA7 O2' PA7: O2* PA7 C1' PA7: C1* PA7 PA PAD: AP PAD O1A PAD: AO1 PAD O2A PAD: AO2 PAD O5B PAD:AO5* PAD C5B PAD:AC5* PAD C4B PAD:AC4* PAD O4B PAD:AO4* PAD C3B PAD:AC3* PAD O3B PAD:AO3* PAD C2B PAD:AC2* PAD O2B PAD:AO2* PAD C1B PAD:AC1* PAD N9A PAD: AN9 PAD C8A PAD: AC8 PAD N7A PAD: AN7 PAD C5A PAD: AC5 PAD C6A PAD: AC6 PAD N6A PAD: AN6 PAD N1A PAD: AN1 PAD C2A PAD: AC2 PAD N3A PAD: AN3 PAD C4A PAD: AC4 PAD PN PAD: NP PAD O1N PAD: NO1 PAD O2N PAD: NO2 PAD O5D PAD:NO5* PAD C5D PAD:NC5* PAD C4D PAD:NC4* PAD O4D PAD:NO4* PAD C3D PAD:NC3* PAD O3D PAD:NO3* PAD C2D PAD:NC2* PAD O2D PAD:NO2* PAD C1D PAD:NC1* PAD C1N PAD: NC1 PAD N2N PAD: NN2 PAD C3N PAD: NC3 PAD C7N PAD: NC7 PAD O7N PAD: NO7 PAD N7N PAD: NN7 PAD C4N PAD: NC4 PAD C5N PAD: NC5 PAD C6N PAD: NC6 PAD O5' PAJ: O5* PAJ C5' PAJ: C5* PAJ C4' PAJ: C4* PAJ O4' PAJ: O4* PAJ C3' PAJ: C3* PAJ O3' PAJ: O3* PAJ C2' PAJ: C2* PAJ O2' PAJ: O2* PAJ C1' PAJ: C1* PAJ O5' PAP: O5* PAP C5' PAP: C5* PAP C4' PAP: C4* PAP O4' PAP: O4* PAP C3' PAP: C3* PAP O3' PAP: O3* PAP C2' PAP: C2* PAP O2' PAP: O2* PAP C1' PAP: C1* PAP O5' PAU: O5* PAU O6' PAU: O6* PAU O5' PAX: O5* PAX C5' PAX: C5* PAX C4' PAX: C4* PAX O4' PAX: O4* PAX C1' PAX: C1* PAX C2' PAX: C2* PAX O2' PAX: O2* PAX C3' PAX: C3* PAX O3' PAX: O3* PAX N1' PBO: N1* PBO O5' PBT: O5* PBT C5' PBT: C5* PBT C4' PBT: C4* PBT O4' PBT: O4* PBT C3' PBT: C3* PBT O3' PBT: O3* PBT C2' PBT: C2* PBT C1' PBT: C1* PBT CX5 PC3:1C22 PC3 C1' PCD: C1* PCD C2D PCD: C2* PCD O2' PCD: O2* PCD C3' PCD: C3* PCD C4D PCD: C4* PCD O4D PCD: O4* PCD O3' PCD: O3* PCD C5' PCD: C5* PCD O5' PCD: O5* PCD O5' PCG: O5* PCG C5' PCG: C5* PCG C4' PCG: C4* PCG O4' PCG: O4* PCG C3' PCG: C3* PCG O3' PCG: O3* PCG C2' PCG: C2* PCG O2' PCG: O2* PCG C1' PCG: C1* PCG NA PCU: N_A PCU NB PCU: N_B PCU NC PCU: N_C PCU ND PCU: N_D PCU OP3 PDU: O3P PDU OP1 PDU: O1P PDU OP2 PDU: O2P PDU O5' PDU: O5* PDU C5' PDU: C5* PDU C4' PDU: C4* PDU O4' PDU: O4* PDU C3' PDU: C3* PDU O3' PDU: O3* PDU C2' PDU: C2* PDU C1' PDU: C1* PDU O1X PDX:O1S* PDX O2X PDX:O2S* PDX O3X PDX:O3S* PDX S' PDX: S* PDX C4' PE2: C4* PE2 O4' PE2: O4* PE2 C3' PE2: C3* PE2 O3' PE2: O3* PE2 C2' PE2: C2* PE2 C1' PE2: C1* PE2 OP1 PE6:1OP PE6 OP2 PE6:2OP PE6 OP3 PE6:3OP PE6 O5' PED: O5* PED C2' PED: C2* PED C5' PED: C5* PED C4' PED: C4* PED O4' PED: O4* PED C3' PED: C3* PED C1' PED: C1* PED O3' PED: O3* PED C1' PEL: C1* PEL C2' PEL: C2* PEL C3' PEL: C3* PEL C4' PEL: C4* PEL C5' PEL: C5* PEL C6' PEL: C6* PEL N1' PES: N1* PES C3' PES: C3* PES C4' PES: C4* PES S' PES: S* PES O1X PES:O1S* PES O2X PES:O2S* PES O3X PES:O3S* PES C1' PES: C1* PES C2' PES: C2* PES OXT PG1: O1 PG1 OP1 PG7: O1P PG7 OP2 PG7: O2P PG7 O5' PG7: O5* PG7 O3' PG7: O3* PG7 C1' PG7: C1* PG7 C2' PG7: C2* PG7 C3' PG7: C3* PG7 C4' PG7: C4* PG7 C5' PG7: C5* PG7 O4' PG7: O4* PG7 OP3 PG7: O3P PG7 OP1 PGN: O1P PGN OP2 PGN: O2P PGN OP3 PGN: O3P PGN O5' PGN: O5* PGN C5' PGN: C5* PGN C4' PGN: C4* PGN O4' PGN: O4* PGN C3' PGN: C3* PGN O3' PGN: O3* PGN C2' PGN: C2* PGN C1' PGN: C1* PGN OP1 PGP: O1P PGP OP2 PGP: O2P PGP OP3 PGP: O3P PGP O5' PGP: O5* PGP C5' PGP: C5* PGP C4' PGP: C4* PGP O4' PGP: O4* PGP C3' PGP: C3* PGP O3' PGP: O3* PGP C2' PGP: C2* PGP O2' PGP: O2* PGP C1' PGP: C1* PGP O5' PGS: O5* PGS C5' PGS: C5* PGS C4' PGS: C4* PGS O4' PGS: O4* PGS C3' PGS: C3* PGS O3' PGS: O3* PGS C2' PGS: C2* PGS O2' PGS: O2* PGS C1' PGS: C1* PGS NA PHO: N_A PHO NB PHO: N_B PHO NC PHO: N_C PHO ND PHO: N_D PHO CDB PHP:1CD1 PHP CDL PHP:2CD1 PHP CEB PHP:1CE1 PHP CEL PHP:2CE1 PHP CGL PHP:1CG2 PHP CGM PHP:2CG2 PHP CDD PHP:1CD3 PHP CDN PHP:2CD3 PHP CED PHP:1CE3 PHP CEN PHP:2CE3 PHP CDE PHP:1CD4 PHP CDO PHP:2CD4 PHP CEE PHP:1CE4 PHP CEO PHP:2CE4 PHP CGF PHP:1CG5 PHP CGG PHP:2CG5 PHP CDG PHP:1CD6 PHP CEG PHP:1CE6 PHP CEQ PHP:2CE6 PHP CDQ PHP:2CD6 PHP CRA PII:CR10 PII CRB PII:CR11 PII CRC PII:CR12 PII CRD PII:CR13 PII CRE PII:CR14 PII CRF PII:CR15 PII CRG PII:CR16 PII CLA PII:CL10 PII CLB PII:CL11 PII CLC PII:CL12 PII CLD PII:CL13 PII CLE PII:CL14 PII CLF PII:CL15 PII CA' PLC:'C10 PLC CB' PLC:'C11 PLC CB PLC: C" PLC C1B PLC: C1" PLC C2B PLC: C2" PLC C3B PLC: C3" PLC C4B PLC: C4" PLC C5B PLC: C5" PLC C6B PLC: C6" PLC C7B PLC: C7" PLC C8B PLC: C8" PLC C9B PLC: C9" PLC CAA PLC:"C10 PLC CBA PLC:"C11 PLC OB PLC: O" PLC CA' PLD:'C10 PLD CB' PLD:'C11 PLD CB PLD: C" PLD C1B PLD: C1" PLD C2B PLD: C2" PLD C3B PLD: C3" PLD C4B PLD: C4" PLD C5B PLD: C5" PLD C6B PLD: C6" PLD C7B PLD: C7" PLD C8B PLD: C8" PLD C9B PLD: C9" PLD CAA PLD:"C10 PLD CBA PLD:"C11 PLD OB PLD: O" PLD CC' PLD:'C12 PLD CD' PLD:'C13 PLD CE' PLD:'C14 PLD CF' PLD:'C15 PLD CG' PLD:'C16 PLD CH' PLD:'C17 PLD CI' PLD:'C18 PLD CJ' PLD:'C19 PLD CK' PLD:'C20 PLD CCA PLD:"C12 PLD CDA PLD:"C13 PLD CEA PLD:"C14 PLD CFA PLD:"C15 PLD CGA PLD:"C16 PLD CHA PLD:"C17 PLD CIA PLD:"C18 PLD CJA PLD:"C19 PLD CKA PLD:"C20 PLD OXT PM3: O PM3 O PM3: OXT PM3 C2B PMD: C2* PMD C4B PMD: C4* PMD C6B PMD: C6* PMD C7B PMD: C7* PMD C9B PMD: C9* PMD CA' PMD:'C10 PMD CB' PMD:'C11 PMD CC' PMD:'C12 PMD N1' PMD: N1* PMD N2' PMD: N2* PMD N3' PMD: N3* PMD N4' PMD: N4* PMD N5' PMD: N5* PMD N8' PMD: N8* PMD O5' PMO: O5* PMO C5' PMO: C5* PMO C4' PMO: C4* PMO O4' PMO: O4* PMO C3' PMO: C3* PMO O3' PMO: O3* PMO C2' PMO: C2* PMO O2' PMO: O2* PMO C1' PMO: C1* PMO O11 PMT:1OP' PMT O12 PMT:3OP' PMT O13 PMT:2OP' PMT OP2 PMT: O2P PMT OP1 PMT: O1P PMT OP3 PMT: O3P PMT O5B PMT: O5* PMT C5B PMT: C5* PMT C4B PMT: C4* PMT O4B PMT: O4* PMT C3B PMT: C3* PMT O3' PMT: O3* PMT C2B PMT: C2* PMT O2' PMT: O2* PMT C1B PMT: C1* PMT NA PNI: N_A PNI NB PNI: N_B PNI NC PNI: N_C PNI ND PNI: N_D PNI CX3 POH:1C11 POH C71 POH:1C7 POH C81 POH:1C8 POH C91 POH:1C9 POH CXN POH:1C13 POH CXD POH:1C12 POH NXT POH:1N10 POH NA POH: N_A POH NB POH: N_B POH NC POH: N_C POH ND POH: N_D POH CX4 POH:2C11 POH C72 POH:2C7 POH C82 POH:2C8 POH C92 POH:2C9 POH CXO POH:2C13 POH CXE POH:2C12 POH NXU POH:2N10 POH CX5 POH:3C11 POH C73 POH:3C7 POH C83 POH:3C8 POH C93 POH:3C9 POH CXP POH:3C13 POH CXF POH:3C12 POH NXV POH:3N10 POH CX6 POH:4C11 POH C74 POH:4C7 POH C84 POH:4C8 POH C94 POH:4C9 POH CXQ POH:4C13 POH CXG POH:4C12 POH NXW POH:4N10 POH NA POR: N_A POR NB POR: N_B POR NC POR: N_C POR ND POR: N_D POR NA PP9: N_A PP9 NB PP9: N_B PP9 NC PP9: N_C PP9 ND PP9: N_D PP9 O5' PPS: O5* PPS C5' PPS: C5* PPS C4' PPS: C4* PPS O4' PPS: O4* PPS C1' PPS: C1* PPS C2' PPS: C2* PPS O2' PPS: O2* PPS C3' PPS: C3* PPS O3' PPS: O3* PPS OP1 PPU: O1P PPU OP2 PPU: O2P PPU OP3 PPU: O3P PPU O5' PPU: O5* PPU C5' PPU: C5* PPU C4' PPU: C4* PPU O4' PPU: O4* PPU C3' PPU: C3* PPU N3' PPU: N3* PPU C2' PPU: C2* PPU O2' PPU: O2* PPU C1' PPU: C1* PPU OP1 PPW: O1P PPW OP2 PPW: O2P PPW O5' PPW: O5* PPW C2' PPW: C2* PPW C5' PPW: C5* PPW C4' PPW: C4* PPW O4' PPW: O4* PPW C1' PPW: C1* PPW C3' PPW: C3* PPW O3' PPW: O3* PPW OP3 PPW: O3P PPW OP3 PQ1: O3P PQ1 OP2 PQ1: O2P PQ1 O5' PQ1: O5* PQ1 C5' PQ1: C5* PQ1 C4' PQ1: C4* PQ1 O4' PQ1: O4* PQ1 C1' PQ1: C1* PQ1 C2' PQ1: C2* PQ1 O2' PQ1: O2* PQ1 C3' PQ1: C3* PQ1 O3' PQ1: O3* PQ1 OP1 PQ1: O1P PQ1 OXT PR0: OR PR0 OP1 PR5: O1P PR5 OP2 PR5: O2P PR5 O5' PR5: O5* PR5 C5' PR5: C5* PR5 C4' PR5: C4* PR5 O4' PR5: O4* PR5 C1' PR5: C1* PR5 C3' PR5: C3* PR5 O3' PR5: O3* PR5 C2' PR5: C2* PR5 O2' PR5: O2* PR5 OP3 PR5: O3P PR5 N1' PRD: N1* PRD N8' PRD: N8* PRD C7B PRD: C7* PRD C6B PRD: C6* PRD N6' PRD: N6* PRD C5B PRD: C5* PRD C4B PRD: C4* PRD N4' PRD: N4* PRD N3' PRD: N3* PRD C2B PRD: C2* PRD N2' PRD: N2* PRD O71 PRE:1O7 PRE O72 PRE:2O7 PRE O'L PRE:1O2' PRE O'M PRE:2O2' PRE C1' PRH: C1* PRH C2' PRH: C2* PRH O2' PRH: O2* PRH C3' PRH: C3* PRH O3' PRH: O3* PRH C4' PRH: C4* PRH O4' PRH: O4* PRH C5' PRH: C5* PRH O5' PRH: O5* PRH C1' PRN: C1* PRN C2' PRN: C2* PRN C3' PRN: C3* PRN O3' PRN: O3* PRN C4' PRN: C4* PRN O4' PRN: O4* PRN C5' PRN: C5* PRN O5' PRN: O5* PRN OP1 PRN: O1P PRN OP2 PRN: O2P PRN OP3 PRN: O3P PRN O5' PRT: O5* PRT C5' PRT: C5* PRT C4' PRT: C4* PRT O4' PRT: O4* PRT C3' PRT: C3* PRT O3' PRT: O3* PRT C2' PRT: C2* PRT O2' PRT: O2* PRT C1' PRT: C1* PRT O2' PRX: O2* PRX C2' PRX: C2* PRX C1' PRX: C1* PRX O4' PRX: O4* PRX C4' PRX: C4* PRX C5' PRX: C5* PRX O5' PRX: O5* PRX C3' PRX: C3* PRX O3' PRX: O3* PRX OP1 PST: O1P PST OP2 PST: O2P PST O5' PST: O5* PST C5' PST: C5* PST C4' PST: C4* PST O4' PST: O4* PST C3' PST: C3* PST O3' PST: O3* PST C2' PST: C2* PST C1' PST: C1* PST C1' PSU: C1* PSU C2' PSU: C2* PSU O2' PSU: O2* PSU C3' PSU: C3* PSU C4' PSU: C4* PSU O3' PSU: O3* PSU O4' PSU: O4* PSU C5' PSU: C5* PSU O5' PSU: O5* PSU OP1 PSU: O1P PSU OP2 PSU: O2P PSU OP3 PSU: O3P PSU C1' PTP: C1* PTP C2' PTP: C2* PTP C3' PTP: C3* PTP O3' PTP: O3* PTP P3' PTP: P3* PTP C4' PTP: C4* PTP O4' PTP: O4* PTP C5' PTP: C5* PTP O5' PTP: O5* PTP P5' PTP: P5* PTP OP1 PU: O1P PU OP2 PU: O2P PU OP3 PU: O3P PU O5' PU: O5* PU C5' PU: C5* PU C4' PU: C4* PU O4' PU: O4* PU C3' PU: C3* PU N3' PU: N3* PU C2' PU: C2* PU O2' PU: O2* PU C1' PU: C1* PU O5' PUA: O5* PUA C5' PUA: C5* PUA C4' PUA: C4* PUA O4' PUA: O4* PUA C1' PUA: C1* PUA C2' PUA: C2* PUA O2' PUA: O2* PUA C3' PUA: C3* PUA O3' PUA: O3* PUA C1' PUR: C1* PUR C2' PUR: C2* PUR O2' PUR: O2* PUR C3' PUR: C3* PUR O3' PUR: O3* PUR C4' PUR: C4* PUR O4' PUR: O4* PUR C5' PUR: C5* PUR O5' PUR: O5* PUR O5' PUY: O5* PUY C5' PUY: C5* PUY C4' PUY: C4* PUY O4' PUY: O4* PUY C1' PUY: C1* PUY C2' PUY: C2* PUY O2' PUY: O2* PUY C3' PUY: C3* PUY N3' PUY: N3* PUY C' PX1: C* PX1 O' PX1: O* PX1 C' PXA: C* PXA O' PXA: O* PXA C' PXF: C* PXF O' PXF: O* PXF C' PXZ: C* PXZ O' PXZ: O* PXZ OP3 PYO: O3P PYO OP1 PYO: O1P PYO OP2 PYO: O2P PYO O5' PYO: O5* PYO C5' PYO: C5* PYO C4' PYO: C4* PYO O4' PYO: O4* PYO C3' PYO: C3* PYO C1' PYO: C1* PYO O3' PYO: O3* PYO C2' PYO: C2* PYO O2' PYO: O2* PYO O5' PYP: O5* PYP C5' PYP: C5* PYP C4' PYP: C4* PYP O4' PYP: O4* PYP C1' PYP: C1* PYP C2' PYP: C2* PYP C3' PYP: C3* PYP O3' PYP: O3* PYP O5' PYY: O5* PYY C5' PYY: C5* PYY C4' PYY: C4* PYY O4' PYY: O4* PYY C1' PYY: C1* PYY C2' PYY: C2* PYY O2' PYY: O2* PYY C3' PYY: C3* PYY O3' PYY: O3* PYY OP1 QUO: O1P QUO OP2 QUO: O2P QUO OP3 QUO: O3P QUO O5' QUO: O5* QUO C5' QUO: C5* QUO C4' QUO: C4* QUO O4' QUO: O4* QUO C1' QUO: C1* QUO C2' QUO: C2* QUO O2' QUO: O2* QUO C3' QUO: C3* QUO O3' QUO: O3* QUO OP1 R: O1P R OP2 R: O2P R OP3 R: O3P R O5' R: O5* R C5' R: C5* R C4' R: C4* R O4' R: O4* R C3' R: C3* R O3' R: O3* R C2' R: C2* R C1' R: C1* R C1' R22: C1* R22 C2' R22: C2* R22 C3' R22: C3* R22 C4' R22: C4* R22 C5' R22: C5* R22 C6' R22: C6* R22 O7' R22: O7* R22 C8' R22: C8* R22 C9' R22: C9* R22 OXT R7A: O R7A O R7A: OXT R7A C1' RBF: C1* RBF C2' RBF: C2* RBF O2' RBF: O2* RBF C3' RBF: C3* RBF O3' RBF: O3* RBF C4' RBF: C4* RBF O4' RBF: O4* RBF C5' RBF: C5* RBF O5' RBF: O5* RBF O5' RBZ: O5* RBZ C5' RBZ: C5* RBZ C4' RBZ: C4* RBZ O4' RBZ: O4* RBZ C3' RBZ: C3* RBZ O3' RBZ: O3* RBZ C2' RBZ: C2* RBZ O2' RBZ: O2* RBZ C1' RBZ: C1* RBZ O1' RDP: O1* RDP C1' RDP: C1* RDP C2' RDP: C2* RDP O2' RDP: O2* RDP C3' RDP: C3* RDP O3' RDP: O3* RDP C4' RDP: C4* RDP O4' RDP: O4* RDP C5' RDP: C5* RDP O5' RDP: O5* RDP O7A RFC: AO7 RFC P3B RFC:AP3* RFC O9A RFC: AO9 RFC O8A RFC: AO8 RFC O3B RFC:AO3* RFC C3B RFC:AC3* RFC C2B RFC:AC2* RFC O2B RFC:AO2* RFC C1B RFC:AC1* RFC N9A RFC: AN9 RFC C4A RFC: AC4 RFC C5A RFC: AC5 RFC C6A RFC: AC6 RFC N6A RFC: AN6 RFC N1A RFC: AN1 RFC C2A RFC: AC2 RFC N3A RFC: AN3 RFC N7A RFC: AN7 RFC C8A RFC: AC8 RFC O4B RFC:AO4* RFC C4B RFC:AC4* RFC C5B RFC:AC5* RFC O5B RFC:AO5* RFC P1A RFC: AP1 RFC O1A RFC: AO1 RFC O2A RFC: AO2 RFC O3A RFC: AO3 RFC P2A RFC: AP2 RFC O4A RFC: AO4 RFC O5A RFC: AO5 RFC O6A RFC: AO6 RFC CCP RFC:PC12 RFC CBP RFC:PC11 RFC CDP RFC:PC13 RFC CEP RFC:PC14 RFC CAP RFC:PC10 RFC OAP RFC:PO10 RFC C9P RFC: PC9 RFC O9P RFC: PO9 RFC N8P RFC: PN8 RFC C7P RFC: PC7 RFC C6P RFC: PC6 RFC C5P RFC: PC5 RFC O5P RFC: PO5 RFC N4P RFC: PN4 RFC C3P RFC: PC3 RFC C2P RFC: PC2 RFC S1P RFC: PS1 RFC SG' RGS: SG* RGS CB' RGS: CB* RGS CA' RGS: CA* RGS N' RGS: N* RGS C5' RGS: C5* RGS O5' RGS: O5* RGS C6' RGS: C6* RGS C7' RGS: C7* RGS O11 RGS:*O7A RGS O12 RGS:*O7B RGS C' RGS: C* RGS O' RGS: O* RGS N4' RGS: N4* RGS C4' RGS: C4* RGS C3' RGS: C3* RGS C2' RGS: C2* RGS N2' RGS: N2* RGS C1' RGS: C1* RGS O13 RGS:*O1A RGS O14 RGS:*O1B RGS OP1 RIA: O1P RIA OP2 RIA: O2P RIA OP3 RIA: O3P RIA O5A RIA: O5* RIA C5A RIA: C5* RIA C4A RIA: C4* RIA O4' RIA: O4* RIA C3A RIA: C3* RIA O3A RIA: O3* RIA C2A RIA: C2* RIA O2A RIA: O2* RIA C1A RIA: C1* RIA O1X RIA:O1P' RIA O2X RIA:O2P' RIA O3X RIA:O3P' RIA O5' RIB: O5* RIB C5' RIB: C5* RIB C4' RIB: C4* RIB O4' RIB: O4* RIB C3' RIB: C3* RIB O3' RIB: O3* RIB C2' RIB: C2* RIB O2' RIB: O2* RIB C1' RIB: C1* RIB O1' RIB: O1* RIB O5' RMB: O5* RMB C5' RMB: C5* RMB C4' RMB: C4* RMB O4' RMB: O4* RMB C3' RMB: C3* RMB O3' RMB: O3* RMB C2' RMB: C2* RMB O2' RMB: O2* RMB C1' RMB: C1* RMB OP1 RMP: O1P RMP O5' RMP: O5* RMP C5' RMP: C5* RMP C4' RMP: C4* RMP O4' RMP: O4* RMP C1' RMP: C1* RMP C3' RMP: C3* RMP C2' RMP: C2* RMP O3' RMP: O3* RMP OP3 RMP: O3P RMP O1X ROB:O1P' ROB O2X ROB:O2P' ROB O3X ROB:O3P' ROB C6D ROM:C6'B ROM C6B ROM:C6'A ROM C4D ROM:C4'B ROM C4B ROM:C4'A ROM C15 ROM:C'10 ROM C1A ROM:C'12 ROM C1B ROM:C'11 ROM C7X ROM:C'7A ROM O11 ROM:O'12 ROM O5' RP1: O5* RP1 C5' RP1: C5* RP1 C4' RP1: C4* RP1 O4' RP1: O4* RP1 C3' RP1: C3* RP1 O3' RP1: O3* RP1 C2' RP1: C2* RP1 O2' RP1: O2* RP1 C1' RP1: C1* RP1 O1X RP5:O1P' RP5 O2X RP5:O2P' RP5 O3X RP5:O3P' RP5 O11 RPA:1OM6 RPA O5' RPD: O5* RPD C5' RPD: C5* RPD C4' RPD: C4* RPD O4' RPD: O4* RPD C3' RPD: C3* RPD O3' RPD: O3* RPD C2' RPD: C2* RPD O2' RPD: O2* RPD C1' RPD: C1* RPD OJA RPD:O91A RPD OKA RPD:O92A RPD NAA RPD:N10A RPD OAA RPD:O10A RPD CBA RPD:C11A RPD OBA RPD:O11A RPD O5' RPL: O5* RPL C5' RPL: C5* RPL C4' RPL: C4* RPL O4' RPL: O4* RPL C3' RPL: C3* RPL O3' RPL: O3* RPL C2' RPL: C2* RPL O2' RPL: O2* RPL C1' RPL: C1* RPL OJA RPL:O91A RPL OKA RPL:O92A RPL NAA RPL:N10A RPL OAA RPL:O10A RPL CBA RPL:C11A RPL OBA RPL:O11A RPL C1' RPP: C1* RPP C2' RPP: C2* RPP C3' RPP: C3* RPP C4' RPP: C4* RPP O4' RPP: O4* RPP O2' RPP: O2* RPP O3' RPP: O3* RPP C5' RPP: C5* RPP O5' RPP: O5* RPP OP3 RT: O3P RT OP1 RT: O1P RT OP2 RT: O2P RT O5' RT: O5* RT C5' RT: C5* RT C4' RT: C4* RT O4' RT: O4* RT C3' RT: C3* RT O3' RT: O3* RT C2' RT: C2* RT O2' RT: O2* RT C1' RT: C1* RT O5' RTP: O5* RTP C5' RTP: C5* RTP C4' RTP: C4* RTP O4' RTP: O4* RTP C1' RTP: C1* RTP C2' RTP: C2* RTP O2' RTP: O2* RTP C3' RTP: C3* RTP O3' RTP: O3* RTP C1' RUN: C1" RUN O1' RUN: O1" RUN C2D RUN: C2" RUN C3' RUN: C3" RUN C4D RUN: C4" RUN O5' RVP: O5* RVP C5' RVP: C5* RVP C4' RVP: C4* RVP O4' RVP: O4* RVP C3' RVP: C3* RVP O3' RVP: O3* RVP C2' RVP: C2* RVP O2' RVP: O2* RVP C1' RVP: C1* RVP O5' S02: O5* S02 C5' S02: C5* S02 CA' S02: CA* S02 OB' S02: OB* S02 OC' S02: OC* S02 CD' S02: CD* S02 C3' S02: C3* S02 O3' S02: O3* S02 C5' S2M: C5* S2M O5' S2M: O5* S2M OP2 S2M: O2P S2M OP1 S2M: O1P S2M C4' S2M: C4* S2M O4' S2M: O4* S2M C1' S2M: C1* S2M C2' S2M: C2* S2M C3' S2M: C3* S2M O3' S2M: O3* S2M O2' S2M: O2* S2M CA' S2M: CA* S2M CB' S2M: CB* S2M OC' S2M: OC* S2M CD' S2M: CD* S2M OP3 S2M: O3P S2M C1' S4C: C1* S4C C2' S4C: C2* S4C O2' S4C: O2* S4C C3' S4C: C3* S4C O3' S4C: O3* S4C C4' S4C: C4* S4C S4' S4C: S4* S4C OP1 S4C: O1P S4C C5' S4C: C5* S4C O5' S4C: O5* S4C OP2 S4C: O2P S4C OP3 S4C: O3P S4C C5' S4M: C5* S4M C4' S4M: C4* S4M O4' S4M: O4* S4M C1' S4M: C1* S4M C2' S4M: C2* S4M O2' S4M: O2* S4M C3' S4M: C3* S4M O3' S4M: O3* S4M OP1 S4U: O1P S4U OP2 S4U: O2P S4U OP3 S4U: O3P S4U OP1 S6G: O1P S6G OP2 S6G: O2P S6G OP3 S6G: O3P S6G O5' S6G: O5* S6G C5' S6G: C5* S6G C4' S6G: C4* S6G O4' S6G: O4* S6G C3' S6G: C3* S6G O3' S6G: O3* S6G C2' S6G: C2* S6G C1' S6G: C1* S6G O5' S9L: O5* S9L O3' S9L: O3* S9L C5' SA8: C5* SA8 C4' SA8: C4* SA8 O4' SA8: O4* SA8 C3' SA8: C3* SA8 O3' SA8: O3* SA8 C2' SA8: C2* SA8 O2' SA8: O2* SA8 C1' SA8: C1* SA8 PA SAD: AP SAD O1A SAD: AO1 SAD O2A SAD: AO2 SAD O5B SAD:AO5* SAD C5B SAD:AC5* SAD C4B SAD:AC4* SAD O4B SAD:AO4* SAD C3B SAD:AC3* SAD O3B SAD:AO3* SAD C2B SAD:AC2* SAD O2B SAD:AO2* SAD C1B SAD:AC1* SAD N9A SAD: AN9 SAD C8A SAD: AC8 SAD N7A SAD: AN7 SAD C5A SAD: AC5 SAD C6A SAD: AC6 SAD N6A SAD: AN6 SAD N1A SAD: AN1 SAD C2A SAD: AC2 SAD N3A SAD: AN3 SAD C4A SAD: AC4 SAD PN SAD: NP SAD O1N SAD: NO1 SAD O2N SAD: NO2 SAD O5D SAD:NO5* SAD C5D SAD:NC5* SAD C4D SAD:NC4* SAD O4D SAD:NO4* SAD C3D SAD:NC3* SAD O3D SAD:NO3* SAD C2D SAD:NC2* SAD O2D SAD:NO2* SAD C1D SAD:NC1* SAD C2N SAD: NC2 SAD N3N SAD: NN3 SAD C4N SAD: NC4 SAD C5N SAD: NC5 SAD SE1N SAD:NSE1 SAD C6N SAD: NC6 SAD O6N SAD: NO6 SAD N6N SAD: NN6 SAD PA SAE: AP SAE O1A SAE: AO1 SAE O2A SAE: AO2 SAE O5B SAE:AO5* SAE C5B SAE:AC5* SAE C4B SAE:AC4* SAE O4B SAE:AO4* SAE C3B SAE:AC3* SAE O3B SAE:AO3* SAE C2B SAE:AC2* SAE O2B SAE:AO2* SAE C1B SAE:AC1* SAE N9A SAE: AN9 SAE C8A SAE: AC8 SAE N7A SAE: AN7 SAE C5A SAE: AC5 SAE C6A SAE: AC6 SAE N6A SAE: AN6 SAE N1A SAE: AN1 SAE C2A SAE: AC2 SAE N3A SAE: AN3 SAE C4A SAE: AC4 SAE PN SAE: NP SAE O1N SAE: NO1 SAE O2N SAE: NO2 SAE O5D SAE:NO5* SAE C5D SAE:NC5* SAE C4D SAE:NC4* SAE O4D SAE:NO4* SAE C3D SAE:NC3* SAE O3D SAE:NO3* SAE C2D SAE:NC2* SAE O2D SAE:NO2* SAE C1D SAE:NC1* SAE C2N SAE: NC2 SAE N3N SAE: NN3 SAE C4N SAE: NC4 SAE C5N SAE: NC5 SAE SE1N SAE:NSE1 SAE C6N SAE: NC6 SAE O6N SAE: NO6 SAE N6N SAE: NN6 SAE C5' SAH: C5* SAH C4' SAH: C4* SAH O4' SAH: O4* SAH C3' SAH: C3* SAH O3' SAH: O3* SAH C2' SAH: C2* SAH O2' SAH: O2* SAH C1' SAH: C1* SAH C5' SAI: C5* SAI C4' SAI: C4* SAI O4' SAI: O4* SAI C3' SAI: C3* SAI O3' SAI: O3* SAI C2' SAI: C2* SAI O2' SAI: O2* SAI C1' SAI: C1* SAI C5' SAM: C5* SAM C4' SAM: C4* SAM O4' SAM: O4* SAM C3' SAM: C3* SAM O3' SAM: O3* SAM C2' SAM: C2* SAM O2' SAM: O2* SAM C1' SAM: C1* SAM O5' SAP: O5* SAP C5' SAP: C5* SAP C4' SAP: C4* SAP O4' SAP: O4* SAP C3' SAP: C3* SAP O3' SAP: O3* SAP C2' SAP: C2* SAP O2' SAP: O2* SAP C1' SAP: C1* SAP C1' SC: C1* SC C2' SC: C2* SC C3' SC: C3* SC C4' SC: C4* SC O4' SC: O4* SC O3' SC: O3* SC C5' SC: C5* SC O5' SC: O5* SC OP1 SC: O1P SC OP3 SC: O3P SC C1' SCO: C1* SCO C2' SCO: C2* SCO C3' SCO: C3* SCO C4' SCO: C4* SCO C5' SCO: C5* SCO O1' SCO: O1* SCO O2' SCO: O2* SCO O3' SCO: O3* SCO O4' SCO: O4* SCO O5' SCO: O5* SCO O6' SCO: O6* SCO O7A SFC: AO7 SFC P3B SFC:AP3* SFC O9A SFC: AO9 SFC O8A SFC: AO8 SFC O3B SFC:AO3* SFC C3B SFC:AC3* SFC C2B SFC:AC2* SFC O2B SFC:AO2* SFC C1B SFC:AC1* SFC N9A SFC: AN9 SFC C4A SFC: AC4 SFC C5A SFC: AC5 SFC C6A SFC: AC6 SFC N6A SFC: AN6 SFC N1A SFC: AN1 SFC C2A SFC: AC2 SFC N3A SFC: AN3 SFC N7A SFC: AN7 SFC C8A SFC: AC8 SFC O4B SFC:AO4* SFC C4B SFC:AC4* SFC C5B SFC:AC5* SFC O5B SFC:AO5* SFC P1A SFC: AP1 SFC O1A SFC: AO1 SFC O2A SFC: AO2 SFC O3A SFC: AO3 SFC P2A SFC: AP2 SFC O4A SFC: AO4 SFC O5A SFC: AO5 SFC O6A SFC: AO6 SFC CCP SFC:PC12 SFC CBP SFC:PC11 SFC CDP SFC:PC13 SFC CEP SFC:PC14 SFC CAP SFC:PC10 SFC OAP SFC:PO10 SFC C9P SFC: PC9 SFC O9P SFC: PO9 SFC N8P SFC: PN8 SFC C7P SFC: PC7 SFC C6P SFC: PC6 SFC C5P SFC: PC5 SFC O5P SFC: PO5 SFC N4P SFC: PN4 SFC C3P SFC: PC3 SFC C2P SFC: PC2 SFC S1P SFC: PS1 SFC C5' SFG: C5* SFG C4' SFG: C4* SFG O4' SFG: O4* SFG C3' SFG: C3* SFG O3' SFG: O3* SFG C2' SFG: C2* SFG O2' SFG: O2* SFG C1' SFG: C1* SFG C42 SFT:2C4 SFT C32 SFT:2C3 SFT C22 SFT:2C2 SFT CCA SFT:2C1 SFT C02 SFT:2C0 SFT C91 SFT:1C9 SFT C81 SFT:1C8 SFT C71 SFT:1C7 SFT C61 SFT:1C6 SFT C51 SFT:1C5 SFT C41 SFT:1C4 SFT C31 SFT:1C3 SFT C21 SFT:1C2 SFT CBA SFT:1C1 SFT C01 SFT:1C0 SFT C1B SFT: C1* SFT C2B SFT: C2* SFT O2B SFT: O2* SFT O5' SFT: O5* SFT C5B SFT: C5* SFT C6B SFT: C6* SFT O6' SFT: O6* SFT C4B SFT: C4* SFT O4' SFT: O4* SFT C3B SFT: C3* SFT O3' SFT: O3* SFT O5' SGP: O5* SGP C5' SGP: C5* SGP C4' SGP: C4* SGP O4' SGP: O4* SGP C3' SGP: C3* SGP O3' SGP: O3* SGP C2' SGP: C2* SGP O2' SGP: O2* SGP C1' SGP: C1* SGP O SHC: O1 SHC C1B SHP: C1* SHP C2B SHP: C2* SHP C3B SHP: C3* SHP C4B SHP: C4* SHP O4B SHP: O4* SHP C5B SHP: C5* SHP C6B SHP: C6* SHP OXT SIB: O SIB O SIB: OXT SIB C5' SIB: C5* SIB C4' SIB: C4* SIB O4' SIB: O4* SIB C3' SIB: C3* SIB O3' SIB: O3* SIB C2' SIB: C2* SIB O2' SIB: O2* SIB C1' SIB: C1* SIB C5' SMM: C5* SMM C4' SMM: C4* SMM O4' SMM: O4* SMM C1' SMM: C1* SMM C2' SMM: C2* SMM O2' SMM: O2* SMM C3' SMM: C3* SMM O3' SMM: O3* SMM OP1 SMP: O1P SMP O5' SMP: O5* SMP C5' SMP: C5* SMP C4' SMP: C4* SMP O4' SMP: O4* SMP C1' SMP: C1* SMP C3' SMP: C3* SMP C2' SMP: C2* SMP O3' SMP: O3* SMP OP3 SMP: O3P SMP OP1 SMT: O1P SMT OP2 SMT: O2P SMT OP3 SMT: O3P SMT PA SND: AP SND O1A SND: AO1 SND O2A SND: AO2 SND O5B SND:AO5* SND C5B SND:AC5* SND C4B SND:AC4* SND O4B SND:AO4* SND C3B SND:AC3* SND O3B SND:AO3* SND C2B SND:AC2* SND O2B SND:AO2* SND C1B SND:AC1* SND N9A SND: AN9 SND C8A SND: AC8 SND N7A SND: AN7 SND C5A SND: AC5 SND C6A SND: AC6 SND N6A SND: AN6 SND N1A SND: AN1 SND C2A SND: AC2 SND N3A SND: AN3 SND C4A SND: AC4 SND PN SND: NP SND O1N SND: NO1 SND O2N SND: NO2 SND O5D SND:NO5* SND C5D SND:NC5* SND C4D SND:NC4* SND O4D SND:NO4* SND C3D SND:NC3* SND O3D SND:NO3* SND C2D SND:NC2* SND O2D SND:NO2* SND C1D SND:NC1* SND N1N SND: NN1 SND C2N SND: NC2 SND C3N SND: NC3 SND C7N SND: NC7 SND S7N SND: NS7 SND N7N SND: NN7 SND C4N SND: NC4 SND C5N SND: NC5 SND C6N SND: NC6 SND O5' SNI: O5* SNI C5' SNI: C5* SNI C4' SNI: C4* SNI O4' SNI: O4* SNI C1' SNI: C1* SNI C2' SNI: C2* SNI O2' SNI: O2* SNI C3' SNI: C3* SNI O3' SNI: O3* SNI C1' SOP: C1* SOP O4' SOP: O4* SOP C2' SOP: C2* SOP O2' SOP: O2* SOP C3' SOP: C3* SOP O3' SOP: O3* SOP C4' SOP: C4* SOP C5' SOP: C5* SOP O5' SOP: O5* SOP OP3 SOS: O3P SOS C1' SOS: C1* SOS C6' SOS: C6* SOS C2' SOS: C2* SOS C3' SOS: C3* SOS O3' SOS: O3* SOS C4' SOS: C4* SOS C5' SOS: C5* SOS O5' SOS: O5* SOS OP2 SOS: O2P SOS OP1 SOS: O1P SOS O5' SP1: O5* SP1 C5' SP1: C5* SP1 C4' SP1: C4* SP1 O4' SP1: O4* SP1 C3' SP1: C3* SP1 O3' SP1: O3* SP1 C2' SP1: C2* SP1 O2' SP1: O2* SP1 C1' SP1: C1* SP1 N1A SPF: AN1 SPF C2A SPF: AC2 SPF N3A SPF: AN3 SPF C4A SPF: AC4 SPF C5A SPF: AC5 SPF C6A SPF: AC6 SPF N6A SPF: AN6 SPF N7A SPF: AN7 SPF C8A SPF: AC8 SPF N9A SPF: AN9 SPF C1B SPF:AC1* SPF C2B SPF:AC2* SPF O2B SPF:AO2* SPF C3B SPF:AC3* SPF O3B SPF:AO3* SPF P3B SPF:AP3* SPF O7A SPF: AO7 SPF O8A SPF: AO8 SPF O9A SPF: AO9 SPF C4B SPF:AC4* SPF O4B SPF:AO4* SPF C5B SPF:AC5* SPF O5B SPF:AO5* SPF P1A SPF: AP1 SPF O1A SPF: AO1 SPF O2A SPF: AO2 SPF O3A SPF: AO3 SPF P2A SPF: AP2 SPF O4A SPF: AO4 SPF O5A SPF: AO5 SPF O6A SPF: AO6 SPF CBP SPF:PC11 SPF CCP SPF:PC12 SPF CDP SPF:PC13 SPF CEP SPF:PC14 SPF CAP SPF:PC10 SPF OAP SPF:PO10 SPF C9P SPF: PC9 SPF O9P SPF: PO9 SPF N8P SPF: PN8 SPF C7P SPF: PC7 SPF C6P SPF: PC6 SPF C5P SPF: PC5 SPF O5P SPF: PO5 SPF N4P SPF: PN4 SPF C3P SPF: PC3 SPF C2P SPF: PC2 SPF S1P SPF: PS1 SPF O5' SPG: O5* SPG C5' SPG: C5* SPG C4' SPG: C4* SPG O4' SPG: O4* SPG C3' SPG: C3* SPG O3' SPG: O3* SPG C2' SPG: C2* SPG O2' SPG: O2* SPG C1' SPG: C1* SPG S5' SPT: S5* SPT C2' SPT: C2* SPT C5' SPT: C5* SPT C4' SPT: C4* SPT O4' SPT: O4* SPT C1' SPT: C1* SPT C3' SPT: C3* SPT O3' SPT: O3* SPT OP3 SPT: O3P SPT OP1 SPT: O1P SPT OP2 SPT: O2P SPT OP1 SRA: O1P SRA OP3 SRA: O3P SRA O5' SRA: O5* SRA C5' SRA: C5* SRA C4' SRA: C4* SRA O4' SRA: O4* SRA C3' SRA: C3* SRA O3' SRA: O3* SRA C2' SRA: C2* SRA C1' SRA: C1* SRA O2' SRA: O2* SRA NA SRM: N_A SRM NB SRM: N_B SRM NC SRM: N_C SRM ND SRM: N_D SRM O5' SRP: O5* SRP C5' SRP: C5* SRP C4' SRP: C4* SRP O4' SRP: O4* SRP C3' SRP: C3* SRP O3' SRP: O3* SRP C2' SRP: C2* SRP O2' SRP: O2* SRP C1' SRP: C1* SRP O5' SSA: O5* SSA C5' SSA: C5* SSA C4' SSA: C4* SSA O4' SSA: O4* SSA C3' SSA: C3* SSA O3' SSA: O3* SSA C2' SSA: C2* SSA O2' SSA: O2* SSA C1' SSA: C1* SSA O2' SSU: O2* SSU C2' SSU: C2* SSU C1' SSU: C1* SSU O4' SSU: O4* SSU C4' SSU: C4* SSU C5' SSU: C5* SSU O5' SSU: O5* SSU OP2 SSU: O2P SSU OP3 SSU: O3P SSU C3' SSU: C3* SSU O3' SSU: O3* SSU O5' STP: O5* STP C5' STP: C5* STP C4' STP: C4* STP O4' STP: O4* STP C3' STP: C3* STP O3' STP: O3* STP C2' STP: C2* STP C1' STP: C1* STP N1' SU2: N1* SU2 C2B SU2: C2* SU2 C3B SU2: C3* SU2 N4' SU2: N4* SU2 C5B SU2: C5* SU2 C6B SU2: C6* SU2 C1' SUD: C1* SUD C2' SUD: C2* SUD O2' SUD: O2* SUD C3' SUD: C3* SUD C4' SUD: C4* SUD O4' SUD: O4* SUD O3' SUD: O3* SUD C5' SUD: C5* SUD O5' SUD: O5* SUD OP1 SUR: O1P SUR OP2 SUR: O2P SUR OP3 SUR: O3P SUR OP3 T: O3P T OP1 T: O1P T OP2 T: O2P T O5' T: O5* T C5' T: C5* T C4' T: C4* T O4' T: O4* T C3' T: C3* T O3' T: O3* T C2' T: C2* T C1' T: C1* T C7 T: C5M T OP1 T23: O1P T23 OP2 T23: O2P T23 OP3 T23: O3P T23 O5' T23: O5* T23 C2' T23: C2* T23 O2' T23: O2* T23 C5' T23: C5* T23 C4' T23: C4* T23 O4' T23: O4* T23 C1' T23: C1* T23 C3' T23: C3* T23 OP3 T2S: O3P T2S O5' T2S: O5* T2S C5' T2S: C5* T2S C4' T2S: C4* T2S O4' T2S: O4* T2S C3' T2S: C3* T2S O3' T2S: O3* T2S C2' T2S: C2* T2S C1' T2S: C1* T2S OP1 T2T: O1P T2T OP2 T2T: O2P T2T O5' T2T: O5* T2T C5' T2T: C5* T2T C4' T2T: C4* T2T O4' T2T: O4* T2T C1' T2T: C1* T2T C2' T2T: C2* T2T O2' T2T: O2* T2T C3' T2T: C3* T2T O3' T2T: O3* T2T OP3 T2T: O3P T2T O5' T31: O5* T31 C5' T31: C5* T31 C4' T31: C4* T31 O4' T31: O4* T31 C3' T31: C3* T31 O3' T31: O3* T31 C2' T31: C2* T31 O2' T31: O2* T31 C1' T31: C1* T31 O5' T32: O5* T32 C5' T32: C5* T32 C4' T32: C4* T32 C3' T32: C3* T32 O3' T32: O3* T32 C2' T32: C2* T32 C1' T32: C1* T32 C' T32: C* T32 CM' T32: CM* T32 O5' T36: O5* T36 C5' T36: C5* T36 C4' T36: C4* T36 O4' T36: O4* T36 C3' T36: C3* T36 O3' T36: O3* T36 C2' T36: C2* T36 C1' T36: C1* T36 O5' T37: O5* T37 C5' T37: C5* T37 C4' T37: C4* T37 O4' T37: O4* T37 C3' T37: C3* T37 N3' T37: N3* T37 C2' T37: C2* T37 C1' T37: C1* T37 O5' T38: O5* T38 C5' T38: C5* T38 C4' T38: C4* T38 O4' T38: O4* T38 C3' T38: C3* T38 O3' T38: O3* T38 C2' T38: C2* T38 O2' T38: O2* T38 C1' T38: C1* T38 CA' T38: CA* T38 CB' T38: CB* T38 OC' T38: OC* T38 CD' T38: CD* T38 O5' T39: O5* T39 C5' T39: C5* T39 C4' T39: C4* T39 O4' T39: O4* T39 C3' T39: C3* T39 O3' T39: O3* T39 C2' T39: C2* T39 O2' T39: O2* T39 C1' T39: C1* T39 CA' T39: CA* T39 CD' T39: CD* T39 CB' T39: CB* T39 OC' T39: OC* T39 OP1 T3P: O1P T3P OP2 T3P: O2P T3P OP3 T3P: O3P T3P O5' T3P: O5* T3P C5' T3P: C5* T3P C4' T3P: C4* T3P O4' T3P: O4* T3P C3' T3P: C3* T3P O3' T3P: O3* T3P C2' T3P: C2* T3P C1' T3P: C1* T3P C1' T41: C1* T41 C2' T41: C2* T41 O2' T41: O2* T41 C3' T41: C3* T41 C4' T41: C4* T41 O3' T41: O3* T41 O4' T41: O4* T41 C5' T41: C5* T41 O5' T41: O5* T41 C6' T41: C6* T41 O5' T48: O5* T48 C5' T48: C5* T48 C4' T48: C4* T48 C3' T48: C3* T48 O3' T48: O3* T48 C2' T48: C2* T48 C1' T48: C1* T48 O5' T49: O5* T49 C5' T49: C5* T49 C4' T49: C4* T49 C3' T49: C3* T49 O3' T49: O3* T49 C2' T49: C2* T49 C1' T49: C1* T49 OP3 T4S: O3P T4S OP1 T4S: O1P T4S OP2 T4S: O2P T4S O5' T4S: O5* T4S C2' T4S: C2* T4S C5' T4S: C5* T4S C4' T4S: C4* T4S O4' T4S: O4* T4S C1' T4S: C1* T4S C3' T4S: C3* T4S O3' T4S: O3* T4S N1B T5A: BN1 T5A C6B T5A: BC6 T5A C2B T5A: BC2 T5A O2B T5A: BO2 T5A N3B T5A: BN3 T5A C4B T5A: BC4 T5A O4B T5A: BO4 T5A C5B T5A: BC5 T5A C7B T5A: BC7 T5A C5E T5A:BC5* T5A C4E T5A:BC4* T5A O4E T5A:BO4* T5A C1E T5A:BC1* T5A C2E T5A:BC2* T5A C3E T5A:BC3* T5A O3E T5A:BO3* T5A O5E T5A:BO5* T5A O2X T5A: O2B T5A O5F T5A:AO5* T5A C5F T5A:AC5* T5A C4F T5A:AC4* T5A O4F T5A:AO4* T5A C1F T5A:AC1* T5A C2F T5A:AC2* T5A O2F T5A:AO2* T5A C3F T5A:AC3* T5A O3F T5A:AO3* T5A N9A T5A: AN9 T5A C4A T5A: AC4 T5A N3A T5A: AN3 T5A C2A T5A: AC2 T5A N1A T5A: AN1 T5A C6A T5A: AC6 T5A N6A T5A: AN6 T5A C5A T5A: AC5 T5A N7A T5A: AN7 T5A C8A T5A: AC8 T5A OP1 T6A: O1P T6A OP2 T6A: O2P T6A OP3 T6A: O3P T6A O5' T6A: O5* T6A C5' T6A: C5* T6A C4' T6A: C4* T6A O4' T6A: O4* T6A C3' T6A: C3* T6A O3' T6A: O3* T6A C2' T6A: C2* T6A O2' T6A: O2* T6A C1' T6A: C1* T6A ODA T6A:O13A T6A ODB T6A:O13B T6A OP3 TA3: O3P TA3 OP1 TA3: O1P TA3 OP2 TA3: O2P TA3 O5' TA3: O5* TA3 C5' TA3: C5* TA3 C4' TA3: C4* TA3 O4' TA3: O4* TA3 C3' TA3: C3* TA3 O3' TA3: O3* TA3 C2' TA3: C2* TA3 C1' TA3: C1* TA3 PA TAD: AP TAD O1A TAD: AO1 TAD O2A TAD: AO2 TAD O5B TAD:AO5* TAD C5B TAD:AC5* TAD C4B TAD:AC4* TAD O4B TAD:AO4* TAD C3B TAD:AC3* TAD O3B TAD:AO3* TAD C2B TAD:AC2* TAD O2B TAD:AO2* TAD C1B TAD:AC1* TAD N9A TAD: AN9 TAD C8A TAD: AC8 TAD N7A TAD: AN7 TAD C5A TAD: AC5 TAD C6A TAD: AC6 TAD N6A TAD: AN6 TAD N1A TAD: AN1 TAD C2A TAD: AC2 TAD N3A TAD: AN3 TAD C4A TAD: AC4 TAD PN TAD: NP TAD O1N TAD: NO1 TAD O2N TAD: NO2 TAD O5D TAD:NO5* TAD C5D TAD:NC5* TAD C4D TAD:NC4* TAD O4D TAD:NO4* TAD C3D TAD:NC3* TAD O3D TAD:NO3* TAD C2D TAD:NC2* TAD O2D TAD:NO2* TAD C1D TAD:NC1* TAD C2N TAD: NC2 TAD N3N TAD: NN3 TAD C4N TAD: NC4 TAD C5N TAD: NC5 TAD S1N TAD: NS1 TAD C6N TAD: NC6 TAD O6N TAD: NO6 TAD N6N TAD: NN6 TAD OP1 TAF: O1P TAF OP2 TAF: O2P TAF OP3 TAF: O3P TAF O5' TAF: O5* TAF F2' TAF: F2* TAF C2' TAF: C2* TAF C5' TAF: C5* TAF C4' TAF: C4* TAF O4' TAF: O4* TAF C1' TAF: C1* TAF C3' TAF: C3* TAF O3' TAF: O3* TAF PA TAP: AP TAP O1A TAP: AO1 TAP O2A TAP: AO2 TAP O5B TAP:AO5* TAP C5B TAP:AC5* TAP C4B TAP:AC4* TAP O4B TAP:AO4* TAP C3B TAP:AC3* TAP O3B TAP:AO3* TAP C2B TAP:AC2* TAP O2B TAP:AO2* TAP C1B TAP:AC1* TAP N9A TAP: AN9 TAP C8A TAP: AC8 TAP N7A TAP: AN7 TAP C5A TAP: AC5 TAP C6A TAP: AC6 TAP N6A TAP: AN6 TAP N1A TAP: AN1 TAP C2A TAP: AC2 TAP N3A TAP: AN3 TAP C4A TAP: AC4 TAP PN TAP: NP TAP O1N TAP: NO1 TAP O2N TAP: NO2 TAP O5D TAP:NO5* TAP C5D TAP:NC5* TAP C4D TAP:NC4* TAP O4D TAP:NO4* TAP C3D TAP:NC3* TAP O3D TAP:NO3* TAP C2D TAP:NC2* TAP O2D TAP:NO2* TAP C1D TAP:NC1* TAP N1N TAP: NN1 TAP C2N TAP: NC2 TAP C3N TAP: NC3 TAP C7N TAP: NC7 TAP S7N TAP: NS7 TAP N7N TAP: NN7 TAP C4N TAP: NC4 TAP C5N TAP: NC5 TAP C6N TAP: NC6 TAP P2B TAP:AP2* TAP O1X TAP:AOP1 TAP O2X TAP:AOP2 TAP O3X TAP:AOP3 TAP O5' TAT: O5* TAT C5' TAT: C5* TAT C4' TAT: C4* TAT O4' TAT: O4* TAT C3' TAT: C3* TAT O3' TAT: O3* TAT C2' TAT: C2* TAT O2' TAT: O2* TAT C1' TAT: C1* TAT O5' TBD: O5* TBD C5' TBD: C5* TBD C4' TBD: C4* TBD O4' TBD: O4* TBD C1' TBD: C1* TBD C2' TBD: C2* TBD C3' TBD: C3* TBD O3' TBD: O3* TBD H51 TBS:1H5 TBS O5' TC1: O5* TC1 C5' TC1: C5* TC1 C4' TC1: C4* TC1 C3' TC1: C3* TC1 C2' TC1: C2* TC1 C1' TC1: C1* TC1 O4' TC1: O4* TC1 O3' TC1: O3* TC1 OP3 TC1: O3P TC1 O5' TCP: O5* TCP C5' TCP: C5* TCP C4' TCP: C4* TCP O4' TCP: O4* TCP C3' TCP: C3* TCP O3' TCP: O3* TCP C2' TCP: C2* TCP C1' TCP: C1* TCP C5' TDI: C5* TDI C4' TDI: C4* TDI C1' TDI: C1* TDI N1' TDI: N1* TDI C2' TDI: C2* TDI C3' TDI: C3* TDI O3' TDI: O3* TDI C7' TDK: C7* TDK C5' TDK: C5* TDK C6' TDK: C6* TDK N1' TDK: N1* TDK C2' TDK: C2* TDK N3' TDK: N3* TDK C4' TDK: C4* TDK N4' TDK: N4* TDK C7' TDL: C7* TDL C5' TDL: C5* TDL C6' TDL: C6* TDL N1' TDL: N1* TDL C2' TDL: C2* TDL N3' TDL: N3* TDL C4' TDL: C4* TDL N4' TDL: N4* TDL C7' TDM: C7* TDM C5' TDM: C5* TDM C4' TDM: C4* TDM N4' TDM: N4* TDM N3' TDM: N3* TDM C2' TDM: C2* TDM N1' TDM: N1* TDM C6' TDM: C6* TDM N1' TDP: N1* TDP C2' TDP: C2* TDP N3' TDP: N3* TDP C4' TDP: C4* TDP N4' TDP: N4* TDP C5' TDP: C5* TDP C6' TDP: C6* TDP C1B TDX: C1* TDX C2B TDX: C2* TDX C3B TDX: C3* TDX O3B TDX: O3* TDX O4B TDX: O4* TDX C4B TDX: C4* TDX C5B TDX: C5* TDX O5B TDX: O5* TDX OP1 TFE: O1P TFE OP2 TFE: O2P TFE O5' TFE: O5* TFE C5' TFE: C5* TFE C4' TFE: C4* TFE O4' TFE: O4* TFE C1' TFE: C1* TFE C2' TFE: C2* TFE O2' TFE: O2* TFE C3' TFE: C3* TFE O3' TFE: O3* TFE OP3 TFE: O3P TFE OP2 TFO: O2P TFO OP1 TFO: O1P TFO OP3 TFO: O3P TFO OP1 TFT: O1P TFT OP2 TFT: O2P TFT OP3 TFT: O3P TFT OEB TGF:OE11 TGF OEC TGF:OE12 TGF OED TGF:OE13 TGF OEN TGF:OE23 TGF S5' TGP: S5* TGP C2' TGP: C2* TGP C5' TGP: C5* TGP C4' TGP: C4* TGP O4' TGP: O4* TGP C1' TGP: C1* TGP C3' TGP: C3* TGP O3' TGP: O3* TGP OP3 TGP: O3P TGP OP1 TGP: O1P TGP OP2 TGP: O2P TGP O5' THM: O5* THM C5' THM: C5* THM C4' THM: C4* THM O4' THM: O4* THM C3' THM: C3* THM O3' THM: O3* THM C2' THM: C2* THM C1' THM: C1* THM O5' THP: O5* THP C5' THP: C5* THP C4' THP: C4* THP O4' THP: O4* THP C3' THP: C3* THP O3' THP: O3* THP C2' THP: C2* THP C1' THP: C1* THP O5' THS: O5* THS C5' THS: C5* THS C4' THS: C4* THS O4' THS: O4* THS C3' THS: C3* THS O3' THS: O3* THS C2' THS: C2* THS C1' THS: C1* THS C1' THU: C1* THU C2' THU: C2* THU C3' THU: C3* THU O3' THU: O3* THU C4' THU: C4* THU O4' THU: O4* THU C5' THU: C5* THU O5' THU: O5* THU C5' THV: C5* THV C6' THV: C6* THV N1' THV: N1* THV C2' THV: C2* THV N3' THV: N3* THV C4' THV: C4* THV N4' THV: N4* THV C5' THW: C5* THW C6' THW: C6* THW N1' THW: N1* THW C2' THW: C2* THW N3' THW: N3* THW C4' THW: C4* THW N4' THW: N4* THW C1' THX: C1* THX C2' THX: C2* THX C3' THX: C3* THX C4' THX: C4* THX C5' THX: C5* THX O3' THX: O3* THX O4' THX: O4* THX O5' THX: O5* THX C5' THY: C5* THY C6' THY: C6* THY N1' THY: N1* THY C2' THY: C2* THY N3' THY: N3* THY C4' THY: C4* THY N4' THY: N4* THY C1' TIA: C1* TIA C2' TIA: C2* TIA O2' TIA: O2* TIA C3' TIA: C3* TIA O3' TIA: O3* TIA C4' TIA: C4* TIA O4' TIA: O4* TIA C5' TIA: C5* TIA O2' TIZ: O2* TIZ C2' TIZ: C2* TIZ C3' TIZ: C3* TIZ O3' TIZ: O3* TIZ C4' TIZ: C4* TIZ C5' TIZ: C5* TIZ O5' TIZ: O5* TIZ O4' TIZ: O4* TIZ C1' TIZ: C1* TIZ O5' TLB: O5* TLB C5' TLB: C5* TLB C4' TLB: C4* TLB O4' TLB: O4* TLB C3' TLB: C3* TLB O3' TLB: O3* TLB C2' TLB: C2* TLB O2' TLB: O2* TLB C1' TLB: C1* TLB C9' TLB: C9* TLB OP1 TLC: O1P TLC OP2 TLC: O2P TLC OP3 TLC: O3P TLC O5' TLC: O5* TLC C5' TLC: C5* TLC C4' TLC: C4* TLC O4' TLC: O4* TLC C1' TLC: C1* TLC C2' TLC: C2* TLC C3' TLC: C3* TLC O3' TLC: O3* TLC OP1 TLN: O1P TLN OP2 TLN: O2P TLN OP3 TLN: O3P TLN O5' TLN: O5* TLN C5' TLN: C5* TLN C4' TLN: C4* TLN O4' TLN: O4* TLN C1' TLN: C1* TLN C3' TLN: C3* TLN C2' TLN: C2* TLN O2' TLN: O2* TLN O3' TLN: O3* TLN C6' TLN: C6* TLN O5' TMP: O5* TMP C5' TMP: C5* TMP C4' TMP: C4* TMP O4' TMP: O4* TMP C3' TMP: C3* TMP O3' TMP: O3* TMP C2' TMP: C2* TMP C1' TMP: C1* TMP C5' TND: C5* TND C4' TND: C4* TND O4' TND: O4* TND C3' TND: C3* TND O3' TND: O3* TND C2' TND: C2* TND N2' TND: N2* TND C1' TND: C1* TND O5' TND: O5* TND OXT TNR: OB TNR O TNR: OA TNR O2' TOE: O2* TOE CA' TOE: CA* TOE CB' TOE: CB* TOE OC' TOE: OC* TOE CD' TOE: CD* TOE CE' TOE: CE* TOE OF' TOE: OF* TOE CG' TOE: CG* TOE CH' TOE: CH* TOE OI' TOE: OI* TOE CK' TOE: CK* TOE OP1 TPC: O1P TPC OP2 TPC: O2P TPC OP3 TPC: O3P TPC O5' TPE: O5* TPE C5' TPE: C5* TPE C4' TPE: C4* TPE O4' TPE: O4* TPE C3' TPE: C3* TPE O3' TPE: O3* TPE C2' TPE: C2* TPE C1' TPE: C1* TPE O5' TPG: O5* TPG C5' TPG: C5* TPG C4' TPG: C4* TPG O4' TPG: O4* TPG C3' TPG: C3* TPG O3' TPG: O3* TPG C2' TPG: C2* TPG O2' TPG: O2* TPG C1' TPG: C1* TPG N1' TPW: N1* TPW C2' TPW: C2* TPW N3' TPW: N3* TPW C4' TPW: C4* TPW N4' TPW: N4* TPW C5' TPW: C5* TPW C6' TPW: C6* TPW C2D TQD: C2* TQD C4D TQD: C4* TQD C5D TQD: C5* TQD C6D TQD: C6* TQD C7' TQD: C7* TQD C8' TQD: C8* TQD N1' TQD: N1* TQD N2' TQD: N2* TQD N3' TQD: N3* TQD N4' TQD: N4* TQD N9' TQD: N9* TQD C9' TQD: C9* TQD C4B TQT: C4* TQT C8B TQT: C8* TQT C'0 TQT: C*0 TQT C'1 TQT: C*1 TQT C'2 TQT: C*2 TQT C'3 TQT: C*3 TQT C'4 TQT: C*4 TQT C'5 TQT: C*5 TQT C'6 TQT: C*6 TQT C'7 TQT: C*7 TQT N'0 TQT: N*0 TQT OP1 TS: O1P TS OP3 TS: O3P TS O5' TS: O5* TS C5' TS: C5* TS C4' TS: C4* TS O4' TS: O4* TS C3' TS: C3* TS O3' TS: O3* TS C2' TS: C2* TS C1' TS: C1* TS O5' TSB: O5* TSB C5' TSB: C5* TSB C4' TSB: C4* TSB O4' TSB: O4* TSB C3' TSB: C3* TSB O3' TSB: O3* TSB C2' TSB: C2* TSB O2' TSB: O2* TSB C1' TSB: C1* TSB OP1 TSP: O1P TSP OP2 TSP: O2P TSP OP3 TSP: O3P TSP O5' TSP: O5* TSP C5' TSP: C5* TSP C4' TSP: C4* TSP O4' TSP: O4* TSP C3' TSP: C3* TSP S3' TSP: S3* TSP C2' TSP: C2* TSP C1' TSP: C1* TSP O5' TT: O5* TT C5' TT: C5* TT C4' TT: C4* TT O4' TT: O4* TT C3' TT: C3* TT O3' TT: O3* TT C2' TT: C2* TT C1' TT: C1* TT OP1 TTD: O1P TTD OP2 TTD: O2P TTD OP3 TTD: O3P TTD O5' TTD: O5* TTD C5' TTD: C5* TTD O4' TTD: O4* TTD C2' TTD: C2* TTD C1' TTD: C1* TTD C4' TTD: C4* TTD C3' TTD: C3* TTD O3' TTD: O3* TTD C1' TTE: C1* TTE C2' TTE: C2* TTE C3' TTE: C3* TTE O3' TTE: O3* TTE C4' TTE: C4* TTE O4' TTE: O4* TTE C5' TTE: C5* TTE O5' TTE: O5* TTE OP1 TTM: O1P TTM OP2 TTM: O2P TTM O5' TTM: O5* TTM C5' TTM: C5* TTM C4' TTM: C4* TTM O4' TTM: O4* TTM C1' TTM: C1* TTM C2' TTM: C2* TTM C3' TTM: C3* TTM O3' TTM: O3* TTM OP3 TTM: O3P TTM O5' TTP: O5* TTP C5' TTP: C5* TTP C4' TTP: C4* TTP O4' TTP: O4* TTP C3' TTP: C3* TTP O3' TTP: O3* TTP C2' TTP: C2* TTP C1' TTP: C1* TTP C3' TTS: C3* TTS C2' TTS: C2* TTS C1' TTS: C1* TTS C6' TTS: C6* TTS C5' TTS: C5* TTS C4' TTS: C4* TTS C1'A TXD:C1* TXD O4'A TXD:O4* TXD C2'A TXD:C2* TXD O2'A TXD:O2* TXD C3'A TXD:C3* TXD O3'A TXD:O3* TXD C4'A TXD:C4* TXD C5'A TXD:C5* TXD O5'A TXD:O5* TXD O5'A TXP:O5* TXP C5'A TXP:C5* TXP C4'A TXP:C4* TXP C3'A TXP:C3* TXP O3'A TXP:O3* TXP C2'A TXP:C2* TXP O2'A TXP:O2* TXP C1'A TXP:C1* TXP O4'A TXP:O4* TXP O5' TYA: O5* TYA C5' TYA: C5* TYA C4' TYA: C4* TYA O4' TYA: O4* TYA C3' TYA: C3* TYA O3' TYA: O3* TYA C2' TYA: C2* TYA O2' TYA: O2* TYA C1' TYA: C1* TYA O5' TYD: O5* TYD C5' TYD: C5* TYD C4' TYD: C4* TYD O4' TYD: O4* TYD C3' TYD: C3* TYD O3' TYD: O3* TYD C2' TYD: C2* TYD C1' TYD: C1* TYD O5' TYU: O5* TYU C5' TYU: C5* TYU C4' TYU: C4* TYU O4' TYU: O4* TYU C1' TYU: C1* TYU C2' TYU: C2* TYU O2' TYU: O2* TYU C3' TYU: C3* TYU O3' TYU: O3* TYU N1' TZD: N1* TZD C2' TZD: C2* TZD N3' TZD: N3* TZD C4' TZD: C4* TZD N4' TZD: N4* TZD C5' TZD: C5* TZD C6' TZD: C6* TZD C1' TZE: C1* TZE C2' TZE: C2* TZE OP3 U: O3P U OP1 U: O1P U OP2 U: O2P U O5' U: O5* U C5' U: C5* U C4' U: C4* U O4' U: O4* U C3' U: C3* U O3' U: O3* U C2' U: C2* U O2' U: O2* U C1' U: C1* U OP3 U25: O3P U25 OP1 U25: O1P U25 OP2 U25: O2P U25 O5' U25: O5* U25 C5' U25: C5* U25 C4' U25: C4* U25 O4' U25: O4* U25 C3' U25: C3* U25 O3' U25: O3* U25 C2' U25: C2* U25 O2' U25: O2* U25 C1' U25: C1* U25 C1B U2G:C1*G U2G C2B U2G:C2*G U2G O2B U2G:O2*G U2G C3B U2G:C3*G U2G O3B U2G:O3*G U2G C4B U2G:C4*G U2G O4B U2G:O4*G U2G C5B U2G:C5*G U2G O5B U2G:O5*G U2G O5D U2G:O5*U U2G C5D U2G:C5*U U2G C4D U2G:C4*U U2G O4D U2G:O4*U U2G C3D U2G:C3*U U2G O3D U2G:O3*U U2G C2D U2G:C2*U U2G O2D U2G:O2*U U2G C1D U2G:C1*U U2G OP3 U2L: O3P U2L OP1 U2L: O1P U2L OP2 U2L: O2P U2L O5' U2L: O5* U2L C5' U2L: C5* U2L C4' U2L: C4* U2L O4' U2L: O4* U2L C3' U2L: C3* U2L O3' U2L: O3* U2L C2' U2L: C2* U2L O2' U2L: O2* U2L C1' U2L: C1* U2L CA' U2L: CA* U2L CB' U2L: CB* U2L OC' U2L: OC* U2L CD' U2L: CD* U2L OP3 U2N: O3P U2N OP1 U2N: O1P U2N OP2 U2N: O2P U2N O5' U2N: O5* U2N C5' U2N: C5* U2N C4' U2N: C4* U2N O4' U2N: O4* U2N C1' U2N: C1* U2N C2' U2N: C2* U2N N2' U2N: N2* U2N C3' U2N: C3* U2N O3' U2N: O3* U2N O5' U31: O5* U31 C5' U31: C5* U31 C4' U31: C4* U31 O4' U31: O4* U31 C3' U31: C3* U31 O3' U31: O3* U31 C2' U31: C2* U31 O2' U31: O2* U31 C1' U31: C1* U31 CA' U31: CA* U31 CB' U31: CB* U31 ND' U31: ND* U31 C1' U33: C1* U33 C2' U33: C2* U33 C3' U33: C3* U33 C4' U33: C4* U33 O3' U33: O3* U33 O4' U33: O4* U33 C5' U33: C5* U33 O5' U33: O5* U33 C5' U34: C5* U34 C4' U34: C4* U34 O4' U34: O4* U34 C3' U34: C3* U34 O3' U34: O3* U34 C2' U34: C2* U34 O2' U34: O2* U34 C1' U34: C1* U34 O5' U36: O5* U36 C5' U36: C5* U36 C4' U36: C4* U36 O4' U36: O4* U36 C3' U36: C3* U36 O3' U36: O3* U36 C2' U36: C2* U36 O2' U36: O2* U36 C1' U36: C1* U36 CA' U36: CA* U36 CB' U36: CB* U36 CD' U36: CD* U36 OC' U36: OC* U36 O5' U37: O5* U37 C5' U37: C5* U37 C4' U37: C4* U37 O4' U37: O4* U37 C3' U37: C3* U37 O3' U37: O3* U37 C2' U37: C2* U37 O2' U37: O2* U37 C1' U37: C1* U37 C1' U3H: C1* U3H C2' U3H: C2* U3H O2' U3H: O2* U3H C3' U3H: C3* U3H C4' U3H: C4* U3H O4' U3H: O4* U3H C5' U3H: C5* U3H O5' U3H: O5* U3H O5' U3P: O5* U3P C5' U3P: C5* U3P C4' U3P: C4* U3P O4' U3P: O4* U3P C3' U3P: C3* U3P O3' U3P: O3* U3P C2' U3P: C2* U3P O2' U3P: O2* U3P C1' U3P: C1* U3P C1' U5P: C1* U5P C2' U5P: C2* U5P O2' U5P: O2* U5P C3' U5P: C3* U5P C4' U5P: C4* U5P O3' U5P: O3* U5P O4' U5P: O4* U5P C5' U5P: C5* U5P O5' U5P: O5* U5P C1' U6P: C1* U6P C2' U6P: C2* U6P C3' U6P: C3* U6P C4' U6P: C4* U6P O3' U6P: O3* U6P O4' U6P: O4* U6P C5' U6P: C5* U6P O5' U6P: O5* U6P C1' U8U: C1* U8U O2' U8U: O2* U8U C2' U8U: C2* U8U O3' U8U: O3* U8U C3' U8U: C3* U8U C4' U8U: C4* U8U O4' U8U: O4* U8U C5' U8U: C5* U8U O5' U8U: O5* U8U OP1 U8U: O1P U8U OP2 U8U: O2P U8U OP3 U8U: O3P U8U O5' UA2: O5* UA2 C5' UA2: C5* UA2 C4' UA2: C4* UA2 N4' UA2: N4* UA2 C3' UA2: C3* UA2 O3' UA2: O3* UA2 C2' UA2: C2* UA2 O2' UA2: O2* UA2 C1' UA2: C1* UA2 O5' UA3: O5* UA3 C5' UA3: C5* UA3 C4' UA3: C4* UA3 O4' UA3: O4* UA3 C3' UA3: C3* UA3 O3' UA3: O3* UA3 C2' UA3: C2* UA3 O2' UA3: O2* UA3 C1' UA3: C1* UA3 C1B UAG: C1* UAG C2B UAG: C2* UAG O2' UAG: O2* UAG C3B UAG: C3* UAG O3B UAG: O3* UAG C4B UAG: C4* UAG O4B UAG: O4* UAG C5B UAG: C5* UAG O5B UAG: O5* UAG OP3 UAR: O3P UAR OP1 UAR: O1P UAR OP2 UAR: O2P UAR O5' UAR: O5* UAR C5' UAR: C5* UAR C4' UAR: C4* UAR O4' UAR: O4* UAR C3' UAR: C3* UAR O3' UAR: O3* UAR C2' UAR: C2* UAR O2' UAR: O2* UAR C1' UAR: C1* UAR O5' UBB: O5* UBB C5' UBB: C5* UBB C4' UBB: C4* UBB O4' UBB: O4* UBB C1' UBB: C1* UBB C2' UBB: C2* UBB C3' UBB: C3* UBB O5' UBD: O5* UBD C5' UBD: C5* UBD C4' UBD: C4* UBD O4' UBD: O4* UBD C3' UBD: C3* UBD O3' UBD: O3* UBD C2' UBD: C2* UBD O2' UBD: O2* UBD C1' UBD: C1* UBD C1' UC5: C1* UC5 C2' UC5: C2* UC5 C3' UC5: C3* UC5 O3' UC5: O3* UC5 O4' UC5: O4* UC5 C4' UC5: C4* UC5 C5' UC5: C5* UC5 O5' UC5: O5* UC5 O5' UCL: O5* UCL C5' UCL: C5* UCL C4' UCL: C4* UCL O4' UCL: O4* UCL C3' UCL: C3* UCL O3' UCL: O3* UCL C2' UCL: C2* UCL C1' UCL: C1* UCL C1' UCP: C1* UCP C2' UCP: C2* UCP C3' UCP: C3* UCP O3' UCP: O3* UCP C4' UCP: C4* UCP O4' UCP: O4* UCP C5' UCP: C5* UCP O5' UCP: O5* UCP C1B UD1: C1* UD1 C2B UD1: C2* UD1 O2' UD1: O2* UD1 C3B UD1: C3* UD1 C4B UD1: C4* UD1 O4B UD1: O4* UD1 O3B UD1: O3* UD1 C5B UD1: C5* UD1 O5B UD1: O5* UD1 C1B UD2: C1* UD2 C2B UD2: C2* UD2 O2' UD2: O2* UD2 C3B UD2: C3* UD2 C4B UD2: C4* UD2 O4B UD2: O4* UD2 O3B UD2: O3* UD2 C5B UD2: C5* UD2 O5B UD2: O5* UD2 OP1 UD5: O1P UD5 OP2 UD5: O2P UD5 O5' UD5: O5* UD5 C5' UD5: C5* UD5 C4' UD5: C4* UD5 O4' UD5: O4* UD5 C3' UD5: C3* UD5 O3' UD5: O3* UD5 C2' UD5: C2* UD5 O2' UD5: O2* UD5 C1' UD5: C1* UD5 C1B UDH: C1* UDH C2B UDH: C2* UDH O2' UDH: O2* UDH C3B UDH: C3* UDH C4B UDH: C4* UDH O4' UDH: O4* UDH O3' UDH: O3* UDH C5B UDH: C5* UDH O5' UDH: O5* UDH C1D UDM: C1* UDM C2D UDM: C2* UDM O2' UDM: O2* UDM C3D UDM: C3* UDM C4D UDM: C4* UDM O4D UDM: O4* UDM O3D UDM: O3* UDM C5D UDM: C5* UDM O5D UDM: O5* UDM C1' UDP: C1* UDP C2' UDP: C2* UDP O2' UDP: O2* UDP C3' UDP: C3* UDP C4' UDP: C4* UDP O4' UDP: O4* UDP O3' UDP: O3* UDP C5' UDP: C5* UDP O5' UDP: O5* UDP O5D UDX: O5* UDX C5D UDX: C5* UDX C4D UDX: C4* UDX O4D UDX: O4* UDX C3D UDX: C3* UDX O3D UDX: O3* UDX C2D UDX: C2* UDX O2D UDX: O2* UDX C1D UDX: C1* UDX O5' UF1: O5* UF1 C5' UF1: C5* UF1 C4' UF1: C4* UF1 O4' UF1: O4* UF1 C3' UF1: C3* UF1 O3' UF1: O3* UF1 C2' UF1: C2* UF1 C1' UF1: C1* UF1 C1D UFG: C1* UFG C2D UFG: C2* UFG O2D UFG: O2* UFG C3D UFG: C3* UFG C4D UFG: C4* UFG O4' UFG: O4* UFG O3D UFG: O3* UFG C5D UFG: C5* UFG O5D UFG: O5* UFG C1D UFM: C1* UFM C2D UFM: C2* UFM O2D UFM: O2* UFM C3D UFM: C3* UFM C4D UFM: C4* UFM O4D UFM: O4* UFM O3D UFM: O3* UFM C5D UFM: C5* UFM O5D UFM: O5* UFM C1' UFP: C1* UFP C2' UFP: C2* UFP C3' UFP: C3* UFP C4' UFP: C4* UFP O3' UFP: O3* UFP O4' UFP: O4* UFP C5' UFP: C5* UFP O5' UFP: O5* UFP O5' UFR: O5* UFR C5' UFR: C5* UFR C4' UFR: C4* UFR O4' UFR: O4* UFR C3' UFR: C3* UFR O3' UFR: O3* UFR C2' UFR: C2* UFR C1' UFR: C1* UFR O'P UGA:O6'1 UGA O'Q UGA:O6'2 UGA O5D UGA: O5* UGA C5D UGA: C5* UGA C4D UGA: C4* UGA O4D UGA: O4* UGA C3D UGA: C3* UGA O3D UGA: O3* UGA C2D UGA: C2* UGA O2D UGA: O2* UGA C1D UGA: C1* UGA C1' UM3: C1* UM3 C2' UM3: C2* UM3 C3' UM3: C3* UM3 C4' UM3: C4* UM3 O3' UM3: O3* UM3 O4' UM3: O4* UM3 C5' UM3: C5* UM3 O5' UM3: O5* UM3 C1B UMA: C1* UMA C2B UMA: C2* UMA O2' UMA: O2* UMA C3B UMA: C3* UMA C4B UMA: C4* UMA O4B UMA: O4* UMA O3B UMA: O3* UMA C5B UMA: C5* UMA O5B UMA: O5* UMA O5' UMF: O5* UMF C5' UMF: C5* UMF C4' UMF: C4* UMF O4' UMF: O4* UMF C3' UMF: C3* UMF O3' UMF: O3* UMF C2' UMF: C2* UMF F2' UMF: F2* UMF C1' UMF: C1* UMF C1' UMP: C1* UMP C2' UMP: C2* UMP C3' UMP: C3* UMP C4' UMP: C4* UMP O3' UMP: O3* UMP O4' UMP: O4* UMP C5' UMP: C5* UMP O5' UMP: O5* UMP OP1 UMP: O1P UMP OP2 UMP: O2P UMP OP3 UMP: O3P UMP OP3 UMS: O3P UMS OP1 UMS: O1P UMS OP2 UMS: O2P UMS O3' UN0: O3* UN0 C3' UN0: C3* UN0 C2' UN0: C2* UN0 N1' UN0: N1* UN0 C1' UN0: C1* UN0 C4' UN0: C4* UN0 C5' UN0: C5* UN0 C6' UN0: C6* UN0 C7' UN0: C7* UN0 C8' UN0: C8* UN0 C9' UN0: C9* UN0 C4' UN4: C4* UN4 C3' UN4: C3* UN4 C2' UN4: C2* UN4 C1' UP1: C1* UP1 C2' UP1: C2* UP1 O2' UP1: O2* UP1 C3' UP1: C3* UP1 C4' UP1: C4* UP1 O4' UP1: O4* UP1 O3' UP1: O3* UP1 C5' UP1: C5* UP1 O5' UP1: O5* UP1 N9A UP5: AN9 UP5 C8A UP5: AC8 UP5 N7A UP5: AN7 UP5 C5A UP5: AC5 UP5 C6A UP5: AC6 UP5 N6A UP5: AN6 UP5 N1A UP5: AN1 UP5 C2A UP5: AC2 UP5 N3A UP5: AN3 UP5 C4A UP5: AC4 UP5 O5F UP5:AO5* UP5 C5F UP5:AC5* UP5 C4F UP5:AC4* UP5 O4F UP5:AO4* UP5 C3F UP5:AC3* UP5 O3F UP5:AO3* UP5 C2F UP5:AC2* UP5 O2F UP5:AO2* UP5 C1F UP5:AC1* UP5 O5J UP5:UO5* UP5 C5J UP5:UC5* UP5 C4J UP5:UC4* UP5 O4J UP5:UO4* UP5 C3J UP5:UC3* UP5 O3J UP5:UO3* UP5 C2J UP5:UC2* UP5 O2J UP5:UO2* UP5 C1J UP5:UC1* UP5 N1U UP5: UN1 UP5 C2U UP5: UC2 UP5 O2X UP5:UO2' UP5 N3U UP5: UN3 UP5 C4U UP5: UC4 UP5 O4U UP5: UO4 UP5 C5U UP5: UC5 UP5 C6U UP5: UC6 UP5 C1' UP6: C1* UP6 C2' UP6: C2* UP6 C3' UP6: C3* UP6 C4' UP6: C4* UP6 O2' UP6: O2* UP6 O3' UP6: O3* UP6 O4' UP6: O4* UP6 C5' UP6: C5* UP6 O5' UP6: O5* UP6 C5D UPA:C5*U UPA O5D UPA:O5*U UPA C4D UPA:C4*U UPA O4D UPA:O4*U UPA C3D UPA:C3*U UPA O3D UPA:O3*U UPA C2D UPA:C2*U UPA O2D UPA:O2*U UPA C1D UPA:C1*U UPA O5B UPA:O5*A UPA C5B UPA:C5*A UPA C4B UPA:C4*A UPA O4B UPA:O4*A UPA C3B UPA:C3*A UPA O3B UPA:O3*A UPA C2B UPA:C2*A UPA O2B UPA:O2*A UPA C1B UPA:C1*A UPA C1D UPF: C1* UPF C2D UPF: C2* UPF O2' UPF: O2* UPF C3D UPF: C3* UPF C4D UPF: C4* UPF O4D UPF: O4* UPF O3D UPF: O3* UPF C5D UPF: C5* UPF O5D UPF: O5* UPF C1C UPG: C1* UPG C2C UPG: C2* UPG O2C UPG: O2* UPG C3C UPG: C3* UPG C4C UPG: C4* UPG O4C UPG: O4* UPG O3C UPG: O3* UPG C5C UPG: C5* UPG O5C UPG: O5* UPG C1' UPM: C1* UPM C2' UPM: C2* UPM O2' UPM: O2* UPM C3' UPM: C3* UPM O3' UPM: O3* UPM C4' UPM: C4* UPM O4' UPM: O4* UPM C5' UPM: C5* UPM O5' UPM: O5* UPM C1B UPP: C1* UPP C2B UPP: C2* UPP O2' UPP: O2* UPP C3B UPP: C3* UPP C4B UPP: C4* UPP O4' UPP: O4* UPP O3' UPP: O3* UPP C5B UPP: C5* UPP O5' UPP: O5* UPP C5' UPR: C5* UPR O5' UPR: O5* UPR C4' UPR: C4* UPR O4' UPR: O4* UPR C3' UPR: C3* UPR O3' UPR: O3* UPR C2' UPR: C2* UPR C1' UPR: C1* UPR C1'A UPU:C1*A UPU O4'A UPU:O4*A UPU C2'A UPU:C2*A UPU O2'A UPU:O2*A UPU C3'A UPU:C3*A UPU O3'A UPU:O3*A UPU C4'A UPU:C4*A UPU C5'A UPU:C5*A UPU O5'A UPU:O5*A UPU O3'B UPU:O3*B UPU C3'B UPU:C3*B UPU C4'B UPU:C4*B UPU C5'B UPU:C5*B UPU O5'B UPU:O5*B UPU O4'B UPU:O4*B UPU C2'B UPU:C2*B UPU O2'B UPU:O2*B UPU C1'B UPU:C1*B UPU OP1 UR3: O1P UR3 OP2 UR3: O2P UR3 O5' UR3: O5* UR3 C5' UR3: C5* UR3 C4' UR3: C4* UR3 O4' UR3: O4* UR3 C1' UR3: C1* UR3 C2' UR3: C2* UR3 O2' UR3: O2* UR3 C3' UR3: C3* UR3 O3' UR3: O3* UR3 OP3 UR3: O3P UR3 O5' URD: O5* URD C5' URD: C5* URD C4' URD: C4* URD O4' URD: O4* URD C1' URD: C1* URD C2' URD: C2* URD O2' URD: O2* URD C3' URD: C3* URD O3' URD: O3* URD C1' URI: C1* URI C2' URI: C2* URI C3' URI: C3* URI C4' URI: C4* URI O2' URI: O2* URI O3' URI: O3* URI O4' URI: O4* URI C5' URI: C5* URI O5' URI: O5* URI O5' US1: O5* US1 C5' US1: C5* US1 C4' US1: C4* US1 O4' US1: O4* US1 C3' US1: C3* US1 C2' US1: C2* US1 C1' US1: C1* US1 C1D USQ: C1* USQ C2D USQ: C2* USQ O2D USQ: O2* USQ C3D USQ: C3* USQ C4D USQ: C4* USQ O4D USQ: O4* USQ O3D USQ: O3* USQ C5D USQ: C5* USQ O5D USQ: O5* USQ O5' UTP: O5* UTP C5' UTP: C5* UTP C4' UTP: C4* UTP O4' UTP: O4* UTP C1' UTP: C1* UTP C2' UTP: C2* UTP O2' UTP: O2* UTP C3' UTP: C3* UTP O3' UTP: O3* UTP C1' UVC: C1* UVC C2' UVC: C2* UVC O2' UVC: O2* UVC C3' UVC: C3* UVC C4' UVC: C4* UVC O3' UVC: O3* UVC O4' UVC: O4* UVC C5' UVC: C5* UVC O5' UVC: O5* UVC N5' VAA: N5* VAA C5' VAA: C5* VAA C4' VAA: C4* VAA O4' VAA: O4* VAA C1' VAA: C1* VAA C2' VAA: C2* VAA O2' VAA: O2* VAA C3' VAA: C3* VAA O3' VAA: O3* VAA C1B VAN: C1" VAN C2B VAN: C2" VAN C3B VAN: C3" VAN N3' VAN: N3" VAN C4B VAN: C4" VAN O4B VAN: O4" VAN C5B VAN: C5" VAN O5B VAN: O5" VAN C1B VAX: C1" VAX C2B VAX: C2" VAX C3B VAX: C3" VAX N3' VAX: N3" VAX C4B VAX: C4" VAX O4B VAX: O4" VAX C5B VAX: C5" VAX O5B VAX: O5" VAX N1' VDM: N1* VDM C1' VDM: C1* VDM C2' VDM: C2* VDM O2' VDM: O2* VDM C6' VDM: C6* VDM C5' VDM: C5* VDM C7' VDM: C7* VDM O7' VDM: O7* VDM C4' VDM: C4* VDM O4' VDM: O4* VDM C3' VDM: C3* VDM O3' VDM: O3* VDM O5' VMS: O5* VMS C5' VMS: C5* VMS C4' VMS: C4* VMS O4' VMS: O4* VMS C3' VMS: C3* VMS O3' VMS: O3* VMS C2' VMS: C2* VMS O2' VMS: O2* VMS C1' VMS: C1* VMS H1 VX:1H VX C5' WWF: C5* WWF C6' WWF: C6* WWF N1' WWF: N1* WWF C2' WWF: C2* WWF N3' WWF: N3* WWF C4' WWF: C4* WWF N4' WWF: N4* WWF OP1 X: O1P X OP2 X: O2P X OP3 X: O3P X O5' X: O5* X C5' X: C5* X C4' X: C4* X O4' X: O4* X C3' X: C3* X O3' X: O3* X C2' X: C2* X C1' X: C1* X OP3 X4A: O3P X4A OP1 X4A: O1P X4A OP2 X4A: O2P X4A O5' X4A: O5* X4A C5' X4A: C5* X4A C4' X4A: C4* X4A O4' X4A: O4* X4A C1' X4A: C1* X4A C3' X4A: C3* X4A C2' X4A: C2* X4A O3' X4A: O3* X4A OP3 XAD: O3P XAD OP1 XAD: O1P XAD OP2 XAD: O2P XAD OP1 XAE: O1P XAE OP2 XAE: O2P XAE OP3 XAE: O3P XAE OP1 XAL: O1P XAL OP2 XAL: O2P XAL O5' XAL: O5* XAL C5' XAL: C5* XAL C4' XAL: C4* XAL C6' XAL: C6* XAL C7' XAL: C7* XAL C3' XAL: C3* XAL O3' XAL: O3* XAL C2' XAL: C2* XAL C1' XAL: C1* XAL OP3 XAL: O3P XAL O5' XAR: O5* XAR C5' XAR: C5* XAR C4' XAR: C4* XAR C3' XAR: C3* XAR O3' XAR: O3* XAR C2' XAR: C2* XAR C1' XAR: C1* XAR C7' XAR: C7* XAR C6' XAR: C6* XAR OP1 XCL: O1P XCL OP2 XCL: O2P XCL O5' XCL: O5* XCL C5' XCL: C5* XCL C4' XCL: C4* XCL C6' XCL: C6* XCL C7' XCL: C7* XCL C3' XCL: C3* XCL O3' XCL: O3* XCL C2' XCL: C2* XCL C1' XCL: C1* XCL OP3 XCL: O3P XCL OP2 XCS: O2P XCS OP1 XCS: O1P XCS OP3 XCS: O3P XCS OP3 XCT: O3P XCT OP1 XCT: O1P XCT OP2 XCT: O2P XCT OP3 XCY: O3P XCY OP2 XCY: O2P XCY O5' XCY: O5* XCY C2' XCY: C2* XCY C5' XCY: C5* XCY C4' XCY: C4* XCY O4' XCY: O4* XCY C1' XCY: C1* XCY C3' XCY: C3* XCY O3' XCY: O3* XCY OP1 XCY: O1P XCY OP1 XGA: O1P XGA OP2 XGA: O2P XGA OP3 XGA: O3P XGA OP1 XGL: O1P XGL OP2 XGL: O2P XGL O5' XGL: O5* XGL C5' XGL: C5* XGL C4' XGL: C4* XGL C6' XGL: C6* XGL C7' XGL: C7* XGL C3' XGL: C3* XGL O3' XGL: O3* XGL C2' XGL: C2* XGL C1' XGL: C1* XGL OP3 XGL: O3P XGL OP3 XGU: O3P XGU OP1 XGU: O1P XGU OP2 XGU: O2P XGU CCX XR2:C12' XR2 CDX XR2:C13' XR2 CEX XR2:C14' XR2 NAX XR2:N10' XR2 CBX XR2:C11' XR2 C9X XR2:C9A' XR2 OP3 XTH: O3P XTH OP1 XTH: O1P XTH OP2 XTH: O2P XTH OP1 XTL: O1P XTL OP2 XTL: O2P XTL O5' XTL: O5* XTL C5' XTL: C5* XTL C4' XTL: C4* XTL C6' XTL: C6* XTL C7' XTL: C7* XTL C3' XTL: C3* XTL O3' XTL: O3* XTL C2' XTL: C2* XTL C1' XTL: C1* XTL OP3 XTL: O3P XTL C1' XTS: C1* XTS O4' XTS: O4* XTS C4' XTS: C4* XTS C5' XTS: C5* XTS O5' XTS: O5* XTS C3' XTS: C3* XTS O3' XTS: O3* XTS C2' XTS: C2* XTS O2' XTS: O2* XTS OP1 XTY: O1P XTY OP2 XTY: O2P XTY OP3 XTY: O3P XTY C1' XUG: C1* XUG O4' XUG: O4* XUG C2' XUG: C2* XUG SE2' XUG:SE2* XUG CA' XUG: CA* XUG C3' XUG: C3* XUG O3' XUG: O3* XUG C4' XUG: C4* XUG C5' XUG: C5* XUG O5' XUG: O5* XUG OP1 XUG: O1P XUG OP2 XUG: O2P XUG OP3 XUG: O3P XUG OP1 Y: O1P Y OP2 Y: O2P Y OP3 Y: O3P Y O5' Y: O5* Y C5' Y: C5* Y C4' Y: C4* Y O4' Y: O4* Y C3' Y: C3* Y O3' Y: O3* Y C2' Y: C2* Y C1' Y: C1* Y N1A YE1: AN1 YE1 C2A YE1: AC2 YE1 N3A YE1: AN3 YE1 C4A YE1: AC4 YE1 C5A YE1: AC5 YE1 C6A YE1: AC6 YE1 N6A YE1: AN6 YE1 N7A YE1: AN7 YE1 C8A YE1: AC8 YE1 N9A YE1: AN9 YE1 C1' YE1: C1* YE1 C2' YE1: C2* YE1 O2' YE1: O2* YE1 C3' YE1: C3* YE1 O3' YE1: O3* YE1 P3' YE1: P3* YE1 O7A YE1: AO7 YE1 O8A YE1: AO8 YE1 O9A YE1: AO9 YE1 C4' YE1: C4* YE1 O4' YE1: O4* YE1 C5' YE1: C5* YE1 O5' YE1: O5* YE1 P1A YE1: AP1 YE1 O1A YE1: AO1 YE1 O2A YE1: AO2 YE1 O3A YE1: AO3 YE1 P2A YE1: AP2 YE1 O4A YE1: AO4 YE1 O5A YE1: AO5 YE1 O6A YE1: AO6 YE1 C9P YE1: PC9 YE1 O9P YE1: PO9 YE1 N8P YE1: PN8 YE1 C7P YE1: PC7 YE1 C6P YE1: PC6 YE1 C5P YE1: PC5 YE1 O5P YE1: PO5 YE1 N4P YE1: PN4 YE1 C3P YE1: PC3 YE1 C2P YE1: PC2 YE1 C1' YG: C1* YG C2' YG: C2* YG O2' YG: O2* YG C3' YG: C3* YG O3' YG: O3* YG C4' YG: C4* YG O4' YG: O4* YG C5' YG: C5* YG O5' YG: O5* YG OP1 YG: O1P YG OP2 YG: O2P YG OP3 YG: O3P YG O5' YLY: O5* YLY C5' YLY: C5* YLY C4' YLY: C4* YLY O4' YLY: O4* YLY C3' YLY: C3* YLY O3' YLY: O3* YLY C2' YLY: C2* YLY O2' YLY: O2* YLY C1' YLY: C1* YLY O5' YMP: O5* YMP C5' YMP: C5* YMP C4' YMP: C4* YMP O4' YMP: O4* YMP C1' YMP: C1* YMP C2' YMP: C2* YMP C3' YMP: C3* YMP O3' YMP: O3* YMP O2' YMP: O2* YMP OP3 YRR: O3P YRR OP1 YRR: O1P YRR OP2 YRR: O2P YRR O5' YRR: O5* YRR C5' YRR: C5* YRR C4' YRR: C4* YRR N4' YRR: N4* YRR C3' YRR: C3* YRR O3' YRR: O3* YRR C2' YRR: C2* YRR C1' YRR: C1* YRR O5' YSA: O5* YSA C5' YSA: C5* YSA C4' YSA: C4* YSA O4' YSA: O4* YSA C3' YSA: C3* YSA O3' YSA: O3* YSA C2' YSA: C2* YSA O2' YSA: O2* YSA C1' YSA: C1* YSA OP1 YYG: O1P YYG OP2 YYG: O2P YYG OP3 YYG: O3P YYG O5' YYG: O5* YYG C5' YYG: C5* YYG C4' YYG: C4* YYG O4' YYG: O4* YYG C3' YYG: C3* YYG O3' YYG: O3* YYG C2' YYG: C2* YYG O2' YYG: O2* YYG C1' YYG: C1* YYG O5' YYY: O5* YYY C5' YYY: C5* YYY C4' YYY: C4* YYY O4' YYY: O4* YYY C3' YYY: C3* YYY O3' YYY: O3* YYY C2' YYY: C2* YYY C1' YYY: C1* YYY OP1 Z: O1P Z OP2 Z: O2P Z O5' Z: O5* Z C5' Z: C5* Z C4' Z: C4* Z O4' Z: O4* Z C3' Z: C3* Z O3' Z: O3* Z C2' Z: C2* Z C1' Z: C1* Z OP3 Z: O3P Z O5B Z5A: O5* Z5A C5B Z5A: C5* Z5A C4B Z5A: C4* Z5A O4B Z5A: O4* Z5A C3B Z5A: C3* Z5A O3' Z5A: O3* Z5A C2B Z5A: C2* Z5A O2' Z5A: O2* Z5A C1B Z5A: C1* Z5A C1X ZAF:*CP1 ZAF C2X ZAF:*CP2 ZAF C3X ZAF:*CP3 ZAF C4X ZAF:*CP4 ZAF C5X ZAF:*CP5 ZAF C6X ZAF:*CP6 ZAF OP1 ZDU: O1P ZDU OP2 ZDU: O2P ZDU O5' ZDU: O5* ZDU C2' ZDU: C2* ZDU C5' ZDU: C5* ZDU C4' ZDU: C4* ZDU O4' ZDU: O4* ZDU C1' ZDU: C1* ZDU C3' ZDU: C3* ZDU O3' ZDU: O3* ZDU OP3 ZDU: O3P ZDU CZA ZED:CZ10 ZED CZB ZED:CZ11 ZED CZC ZED:CZ12 ZED CZD ZED:CZ13 ZED CZE ZED:CZ14 ZED CZF ZED:CZ15 ZED NA ZEM: N_A ZEM NB ZEM: N_B ZEM NC ZEM: N_C ZEM ND ZEM: N_D ZEM PA ZID: AP ZID O1A ZID: AO1 ZID O2A ZID: AO2 ZID O5B ZID:AO5* ZID C5B ZID:AC5* ZID C4B ZID:AC4* ZID O4B ZID:AO4* ZID C3B ZID:AC3* ZID O3B ZID:AO3* ZID C2B ZID:AC2* ZID O2B ZID:AO2* ZID C1B ZID:AC1* ZID N9A ZID: AN9 ZID C8A ZID: AC8 ZID N7A ZID: AN7 ZID C5A ZID: AC5 ZID C6A ZID: AC6 ZID N6A ZID: AN6 ZID N1A ZID: AN1 ZID C2A ZID: AC2 ZID N3A ZID: AN3 ZID C4A ZID: AC4 ZID PN ZID: NP ZID O1N ZID: NO1 ZID O2N ZID: NO2 ZID O5D ZID:NO5* ZID C5D ZID:NC5* ZID C4D ZID:NC4* ZID O4D ZID:NO4* ZID C3D ZID:NC3* ZID O3D ZID:NO3* ZID C2D ZID:NC2* ZID O2D ZID:NO2* ZID C1D ZID:NC1* ZID N1N ZID: NN1 ZID C2N ZID: NC2 ZID C3N ZID: NC3 ZID C7N ZID: NC7 ZID O7N ZID: NO7 ZID N7N ZID: NN7 ZID C4N ZID: NC4 ZID C5N ZID: NC5 ZID C6N ZID: NC6 ZID C7Z ZID: ZC7 ZID O7Z ZID: ZO7 ZID N1Z ZID: ZN1 ZID C2Z ZID: ZC2 ZID C3Z ZID: ZC3 ZID C4Z ZID: ZC4 ZID C5Z ZID: ZC5 ZID C6Z ZID: ZC6 ZID NA ZNH: N_A ZNH NB ZNH: N_B ZNH NC ZNH: N_C ZNH ND ZNH: N_D ZNH H021 001:1H02 001 H061 001:1H06 001 H071 001:1H07 001 H072 001:2H07 001 H073 001:3H07 001 H081 001:1H08 001 H082 001:2H08 001 H083 001:3H08 001 H091 001:1H09 001 H092 001:2H09 001 H093 001:3H09 001 H121 001:1H12 001 H122 001:2H12 001 H131 001:1H13 001 H132 001:2H13 001 H141 001:1H14 001 H142 001:2H14 001 H151 001:1H15 001 H152 001:2H15 001 H161 001:1H16 001 H181 001:1H18 001 H191 001:1H19 001 H192 001:2H19 001 H201 001:1H20 001 H202 001:2H20 001 H211 001:1H21 001 H212 001:2H21 001 H231 001:1H23 001 H241 001:1H24 001 H251 001:1H25 001 H261 001:1H26 001 H271 001:1H27 001 H272 001:2H27 001 H281 001:1H28 001 H282 001:2H28 001 H291 001:1H29 001 H292 001:2H29 001 H311 001:1H31 001 H321 001:1H32 001 H331 001:1H33 001 H341 001:1H34 001 H351 001:1H35 001 H31 002:1H3 002 H32 002:2H3 002 H41 002:1H4 002 H42 002:2H4 002 H43 002:3H4 002 H81 002:1H8 002 H82 002:2H8 002 H101 002:1H10 002 H102 002:2H10 002 H121 002:1H12 002 H122 002:2H12 002 H123 002:3H12 002 H201 002:1H20 002 H202 002:2H20 002 H203 002:3H20 002 H211 002:1H21 002 H212 002:2H21 002 H213 002:3H21 002 H231 002:1H23 002 H232 002:2H23 002 H7C1 003:1H7C 003 H7C2 003:2H7C 003 H101 003:1H10 003 H102 003:2H10 003 H103 003:3H10 003 H9C1 003:1H9C 003 H9C2 003:2H9C 003 H9C3 003:3H9C 003 H231 003:1H23 003 H232 003:2H23 003 H121 003:1H12 003 H122 003:2H12 003 H123 003:3H12 003 H1C1 007:1H1C 007 H1C2 007:2H1C 007 H2C1 007:1H2C 007 H2C2 007:2H2C 007 H4C1 007:1H4C 007 H4C2 007:2H4C 007 H5C1 007:1H5C 007 H5C2 007:2H5C 007 H121 007:1H12 007 H122 007:2H12 007 H131 007:1H13 007 H132 007:2H13 007 H8C1 008:1H8C 008 H8C2 008:2H8C 008 H101 008:1H10 008 H102 008:2H10 008 H111 008:1H11 008 H112 008:2H11 008 H191 008:1H19 008 H192 008:2H19 008 H161 008:1H16 008 H162 008:2H16 008 H261 008:1H26 008 H262 008:2H26 008 H11 017:1H1 017 H12 017:2H1 017 H121 017:1H12 017 H122 017:2H12 017 H141 017:1H14 017 H142 017:2H14 017 H143 017:3H14 017 H151 017:1H15 017 H152 017:2H15 017 H153 017:3H15 017 H161 017:1H16 017 H162 017:2H16 017 H251 017:1H25 017 H252 017:2H25 017 H291 017:1H29 017 H292 017:2H29 017 H301 017:1H30 017 H302 017:2H30 017 H321 017:1H32 017 H322 017:2H32 017 H211 024:1H21 024 H212 024:2H21 024 H301 024:1H30 024 H302 024:2H30 024 H311 024:1H31 024 H312 024:2H31 024 H321 024:1H32 024 H322 024:2H32 024 H331 024:1H33 024 H332 024:2H33 024 H341 024:1H34 024 H342 024:2H34 024 HAA1 028:1HAA 028 HAA2 028:2HAA 028 HAA3 028:3HAA 028 HAI1 028:1HAI 028 HAI2 028:2HAI 028 HAJ1 028:1HAJ 028 HAJ2 028:2HAJ 028 HAK1 028:1HAK 028 HAK2 028:2HAK 028 HAL1 028:1HAL 028 HAL2 028:2HAL 028 HAM1 028:1HAM 028 HAM2 028:2HAM 028 H81 033:1H8 033 H82 033:2H8 033 H83 033:3H8 033 H91 033:1H9 033 H92 033:2H9 033 H93 033:3H9 033 HAU1 039:1HAU 039 HAU2 039:2HAU 039 HAU3 039:3HAU 039 HAS1 039:1HAS 039 HAS2 039:2HAS 039 H221 03R:1H22 03R H222 03R:2H22 03R H231 03R:1H23 03R H232 03R:2H23 03R H233 03R:3H23 03R H291 03R:1H29 03R H292 03R:2H29 03R H341 03R:1H34 03R H342 03R:2H34 03R H251 041:1H25 041 H252 041:2H25 041 H101 042:1H10 042 H102 042:2H10 042 H111 042:1H11 042 H112 042:2H11 042 H113 042:3H11 042 H131 042:1H13 042 H132 042:2H13 042 H133 042:3H13 042 H161 042:1H16 042 H162 042:2H16 042 H151 042:1H15 042 H152 042:2H15 042 H153 042:3H15 042 H171 042:1H17 042 H172 042:2H17 042 H173 042:3H17 042 H71 047:1H7 047 H72 047:2H7 047 H121 047:1H12 047 H122 047:2H12 047 H171 047:1H17 047 H172 047:2H17 047 H201 047:1H20 047 H202 047:2H20 047 H231 047:1H23 047 H232 047:2H23 047 H261 047:1H26 047 H262 047:2H26 047 H291 047:1H29 047 H292 047:2H29 047 H501 047:1H50 047 H502 047:2H50 047 H503 047:3H50 047 H341 059:1H34 059 H342 059:2H34 059 H331 059:1H33 059 H332 059:2H33 059 H301 059:1H30 059 H302 059:2H30 059 H303 059:3H30 059 H291 059:1H29 059 H292 059:2H29 059 H293 059:3H29 059 H151 059:1H15 059 H152 059:2H15 059 H91 059:1H9 059 H92 059:2H9 059 H101 059:1H10 059 H102 059:2H10 059 H181 061:1H18 061 H182 061:2H18 061 H211 061:1H21 061 H212 061:2H21 061 H221 061:1H22 061 H222 061:2H22 061 H231 061:1H23 061 H232 061:2H23 061 H241 061:1H24 061 H242 061:2H24 061 H243 061:3H24 061 H251 062:1H25 062 H252 062:2H25 062 H261 062:1H26 062 H262 062:2H26 062 H271 062:1H27 062 H272 062:2H27 062 H371 062:1H37 062 H372 062:2H37 062 H531 062:1H53 062 H532 062:2H53 062 H541 062:1H54 062 H542 062:2H54 062 H141 065:1H14 065 H142 065:2H14 065 H143 065:3H14 065 H151 065:1H15 065 H152 065:2H15 065 H153 065:3H15 065 H121 065:1H12 065 H122 065:2H12 065 H161 065:1H16 065 H162 065:2H16 065 H321 065:1H32 065 H322 065:2H32 065 H251 065:1H25 065 H252 065:2H25 065 H291 065:1H29 065 H292 065:2H29 065 H301 065:1H30 065 H302 065:2H30 065 H401 065:1H40 065 H402 065:2H40 065 H1C1 072:1H1C 072 H1C2 072:2H1C 072 H2B1 072:1H2B 072 H2B2 072:2H2B 072 H2C1 072:1H2C 072 H2C2 072:2H2C 072 H2D1 072:1H2D 072 H2D2 072:2H2D 072 H2E1 072:1H2E 072 H2E2 072:2H2E 072 H2F1 072:1H2F 072 H2F2 072:2H2F 072 H2G1 072:1H2G 072 H2G2 072:2H2G 072 H2H1 072:1H2H 072 H2H2 072:2H2H 072 H2H3 072:3H2H 072 H3B1 072:1H3B 072 H3B2 072:2H3B 072 H3C1 072:1H3C 072 H3C2 072:2H3C 072 H3D1 072:1H3D 072 H3D2 072:2H3D 072 H3E1 072:1H3E 072 H3E2 072:2H3E 072 HOM3 072:3HOM 072 H4B1 072:1H4B 072 H4B2 072:2H4B 072 H5B1 072:1H5B 072 H5B2 072:2H5B 072 H671 073:1H67 073 H672 073:2H67 073 H673 073:3H67 073 H131 073:1H13 073 H132 073:2H13 073 H371 073:1H37 073 H372 073:2H37 073 H11 074:1H1 074 H12 074:2H1 074 H13 074:3H1 074 H21 074:1H2 074 H22 074:2H2 074 H31 074:1H3 074 H32 074:2H3 074 HN11 074:1HN1 074 H51 074:1H5 074 H61 074:1H6 074 H62 074:2H6 074 HO21 074:1HO2 074 HN21 074:1HN2 074 H81 074:1H8 074 H91 074:1H9 074 H101 074:1H10 074 H102 074:2H10 074 H103 074:3H10 074 H111 074:1H11 074 H112 074:2H11 074 H121 074:1H12 074 H122 074:2H12 074 H123 074:3H12 074 H141 074:1H14 074 H142 074:2H14 074 H151 074:1H15 074 H152 074:2H15 074 H161 074:1H16 074 H162 074:2H16 074 H171 074:1H17 074 H391 075:1H39 075 H392 075:2H39 075 H291 075:1H29 075 H292 075:2H29 075 H293 075:3H29 075 H301 075:1H30 075 H302 075:2H30 075 H303 075:3H30 075 H191 075:1H19 075 H192 075:2H19 075 H151 075:1H15 075 H152 075:2H15 075 H111 075:1H11 075 H112 075:2H11 075 H281 075:1H28 075 H282 075:2H28 075 H283 075:3H28 075 H91 075:1H9 075 H92 075:2H9 075 H501 084:1H50 084 H502 084:2H50 084 H503 084:3H50 084 H131 084:1H13 084 H132 084:2H13 084 H141 084:1H14 084 H142 084:2H14 084 H161 084:1H16 084 H162 084:2H16 084 H171 084:1H17 084 H172 084:2H17 084 H61 084:1H6 084 H62 084:2H6 084 H63 084:3H6 084 HAZ1 090:1HAZ 090 HAZ2 090:2HAZ 090 HAZ3 090:3HAZ 090 HAY1 090:1HAY 090 HAY2 090:2HAY 090 HAY3 090:3HAY 090 HAV1 093:1HAV 093 HAV2 093:2HAV 093 HAW1 093:1HAW 093 HAW2 093:2HAW 093 HAE1 093:1HAE 093 HAE2 093:2HAE 093 HAE3 093:3HAE 093 HAT1 093:1HAT 093 HAT2 093:2HAT 093 HAT3 093:3HAT 093 H101 094:1H10 094 H102 094:2H10 094 H201 094:1H20 094 H202 094:2H20 094 H211 094:1H21 094 H212 094:2H21 094 H221 094:1H22 094 H222 094:2H22 094 H21 097:1H2 097 H22 097:2H2 097 H23 097:3H2 097 H81 097:1H8 097 H82 097:2H8 097 H83 097:3H8 097 H91 097:1H9 097 H92 097:2H9 097 H93 097:3H9 097 H111 097:1H11 097 H112 097:2H11 097 H113 097:3H11 097 H151 097:1H15 097 H152 097:2H15 097 H31 097:1H3 097 H32 097:2H3 097 H33 097:3H3 097 H71 097:1H7 097 H72 097:2H7 097 H73 097:3H7 097 H 0CS:1HN 0CS H2 0CS:2HN 0CS HB2 0CS:1HB 0CS HB3 0CS:2HB 0CS HD3 0CS:HOD3 0CS HOP2 101:2HOP 101 HOP3 101:3HOP 101 HO5' 101:HO5* 101 H5'1 101:1H5* 101 H5'2 101:2H5* 101 H4' 101: H4* 101 H3' 101: H3* 101 H2'1 101:1H2* 101 H2'2 101:2H2* 101 H1' 101: H1* 101 HN61 101:1HN6 101 HN62 101:2HN6 101 HOG2 102:2HOG 102 HOG3 102:3HOG 102 HOB2 102:2HOB 102 HOA2 102:2HOA 102 H5'1 102:1H5* 102 H5'2 102:2H5* 102 H4' 102: H4* 102 H3' 102: H3* 102 HO3' 102:*HO3 102 H2' 102: H2* 102 HO2' 102:*HO2 102 H1' 102: H1* 102 HN21 102:1HN2 102 HN22 102:2HN2 102 HOP2 103:2HOP 103 HOP3 103:3HOP 103 H5'1 103:1H5* 103 H5'2 103:2H5* 103 H5'3 103:3H5* 103 H4' 103: H4* 103 H3' 103: H3* 103 H2'1 103:1H2* 103 H2'2 103:2H2* 103 H1' 103: H1* 103 HN61 103:1HN6 103 HN62 103:2HN6 103 H11 104:1H1 104 H12 104:2H1 104 H21 104:1H2 104 H22 104:2H2 104 H31 104:1H3 104 H32 104:2H3 104 H51 104:1H5 104 H52 104:2H5 104 H61 104:1H6 104 H62 104:2H6 104 H81 104:1H8 104 H82 104:2H8 104 H91 104:1H9 104 H92 104:2H9 104 H101 104:1H10 104 H102 104:2H10 104 H31 105:1H3 105 H32 105:2H3 105 H91 105:1H9 105 H92 105:2H9 105 H93 105:3H9 105 H301 106:1H30 106 H302 106:2H30 106 H141 107:1H14 107 H142 107:2H14 107 H71 108:1H7 108 H72 108:2H7 108 HN11 108:1HN1 108 HN12 108:2HN1 108 HB1 108:1HB 108 HB2 108:2HB 108 HB3 108:3HB 108 H71 109:1H7 109 H72 109:2H7 109 HN11 109:1HN1 109 HN12 109:2HN1 109 HB1 109:1HB 109 HB2 109:2HB 109 HB3 109:3HB 109 H11 10A:1H1 10A H12 10A:2H1 10A H13 10A:3H1 10A H21 10A:1H2 10A H22 10A:2H2 10A H31 10A:1H3 10A H32 10A:2H3 10A H41 10A:1H4 10A H42 10A:2H4 10A H51 10A:1H5 10A H52 10A:2H5 10A H61 10A:1H6 10A H62 10A:2H6 10A H71 10A:1H7 10A H72 10A:2H7 10A H81 10A:1H8 10A H82 10A:2H8 10A H91 10A:1H9 10A H92 10A:2H9 10A H101 10A:1H10 10A H102 10A:2H10 10A H111 10A:1H11 10A H112 10A:2H11 10A H113 10A:3H11 10A H121 10A:1H12 10A H122 10A:2H12 10A H123 10A:3H12 10A H131 10A:1H13 10A H132 10A:2H13 10A H141 10A:1H14 10A H142 10A:2H14 10A H151 10A:1H15 10A H152 10A:2H15 10A H161 10A:1H16 10A H162 10A:2H16 10A H171 10A:1H17 10A H172 10A:2H17 10A H181 10A:1H18 10A H182 10A:2H18 10A H191 10A:1H19 10A H192 10A:2H19 10A H201 10A:1H20 10A H202 10A:2H20 10A H211 10A:1H21 10A H212 10A:2H21 10A H221 10A:1H22 10A H222 10A:2H22 10A H223 10A:3H22 10A HOP1 10C:1HOP 10C HOP2 10C:2HOP 10C H5'1 10C:1H5* 10C H5'2 10C:2H5* 10C H1' 10C: H1* 10C H3' 10C: H3* 10C H6'1 10C:1H6* 10C H6'2 10C:2H6* 10C H41 10C:1H4 10C H42 10C:2H4 10C H2'1 10C:1H2* 10C H101 110:1H10 110 H102 110:2H10 110 H111 110:1H11 110 H112 110:2H11 110 H211 110:1H21 110 H212 110:2H21 110 H221 110:1H22 110 H222 110:2H22 110 H191 110:1H19 110 H192 110:2H19 110 H121 110:1H12 110 H122 110:2H12 110 H131 110:1H13 110 H132 110:2H13 110 H133 110:3H13 110 H41 110:1H4 110 H42 110:2H4 110 H51 110:1H5 110 H52 110:2H5 110 HD21 110:1HD2 110 HD22 110:2HD2 110 H71 110:1H7 110 H72 110:2H7 110 H81 110:1H8 110 H82 110:2H8 110 H131 111:1H13 111 H132 111:2H13 111 H133 111:3H13 111 H111 111:1H11 111 H112 111:2H11 111 H91 111:1H9 111 H92 111:2H9 111 H71 111:1H7 111 H72 111:2H7 111 H101 111:1H10 111 H102 111:2H10 111 H121 111:1H12 111 H122 111:2H12 111 H141 111:1H14 111 H142 111:2H14 111 H143 111:3H14 111 HNS1 112:1HNS 112 HNS2 112:2HNS 112 H1S1 112:1H1S 112 H1S2 112:2H1S 112 HOG2 112:2HOG 112 HOB2 112:2HOB 112 HOA2 112:2HOA 112 H5'1 112:1H5* 112 H5'2 112:2H5* 112 H4' 112: H4* 112 H3' 112: H3* 112 HO3' 112:*HO3 112 H2' 112: H2* 112 HO2' 112:*HO2 112 H1' 112: H1* 112 HN61 112:1HN6 112 HN62 112:2HN6 112 H121 113:1H12 113 H122 113:2H12 113 H221 113:1H22 113 H222 113:2H22 113 H223 113:3H22 113 H261 113:1H26 113 H262 113:2H26 113 H263 113:3H26 113 H21 114:1H2 114 H22 114:2H2 114 H41 114:1H4 114 H42 114:2H4 114 H61 114:1H6 114 H62 114:2H6 114 H71 114:1H7 114 H72 114:2H7 114 H161 114:1H16 114 H162 114:2H16 114 H151 114:1H15 114 H152 114:2H15 114 H9A1 114:1H9A 114 H9A2 114:2H9A 114 H9A3 114:3H9A 114 H201 114:1H20 114 H202 114:2H20 114 H211 114:1H21 114 H212 114:2H21 114 H213 114:3H21 114 H221 114:1H22 114 H222 114:2H22 114 H223 114:3H22 114 H21 115:1H2 115 H22 115:2H2 115 H41 115:1H4 115 H42 115:2H4 115 H61 115:1H6 115 H62 115:2H6 115 H71 115:1H7 115 H72 115:2H7 115 H921 115:1H92 115 H922 115:2H92 115 H923 115:3H92 115 H931 115:1H93 115 H932 115:2H93 115 H933 115:3H93 115 H141 116:1H14 116 H142 116:2H14 116 H143 116:3H14 116 H131 116:1H13 116 H132 116:2H13 116 H171 116:1H17 116 H172 116:2H17 116 H173 116:3H17 116 H161 116:1H16 116 H162 116:2H16 116 H163 116:3H16 116 H21 116:1H2 116 H22 116:2H2 116 H41 116:1H4 116 H42 116:2H4 116 H61 116:1H6 116 H62 116:2H6 116 H71 116:1H7 116 H72 116:2H7 116 H921 116:1H92 116 H922 116:2H92 116 H923 116:3H92 116 H931 116:1H93 116 H932 116:2H93 116 H933 116:3H93 116 H21A 117:1H2 117 H22A 117:2H2 117 H41 117:1H4 117 H42 117:2H4 117 H61 117:1H6 117 H62 117:2H6 117 H71 117:1H7 117 H72 117:2H7 117 H931 117:1H93 117 H932 117:2H93 117 H933 117:3H93 117 H921 117:1H92 117 H922 117:2H92 117 H923 117:3H92 117 HAA1 11A:1HAA 11A HAA2 11A:2HAA 11A HAA3 11A:3HAA 11A HAD1 11A:1HAD 11A HAD2 11A:2HAD 11A HAE1 11A:1HAE 11A HAE2 11A:2HAE 11A HAF1 11A:1HAF 11A HAF2 11A:2HAF 11A HAG1 11A:1HAG 11A HAG2 11A:2HAG 11A HAH1 11A:1HAH 11A HAH2 11A:2HAH 11A HAI1 11A:1HAI 11A HAI2 11A:2HAI 11A HAJ1 11A:1HAJ 11A HAJ2 11A:2HAJ 11A HAK1 11A:1HAK 11A HAK2 11A:2HAK 11A HAL1 11A:1HAL 11A HAL2 11A:2HAL 11A H351 11B:1H35 11B H352 11B:2H35 11B H261 11B:1H26 11B H262 11B:2H26 11B H271 11B:1H27 11B H272 11B:2H27 11B H281 11B:1H28 11B H282 11B:2H28 11B H291 11B:1H29 11B H292 11B:2H29 11B H301 11B:1H30 11B H302 11B:2H30 11B H303 11B:3H30 11B H111 11B:1H11 11B H112 11B:2H11 11B H191 11L:1H19 11L H192 11L:2H19 11L H201 11L:1H20 11L H202 11L:2H20 11L H211 11L:1H21 11L H212 11L:2H21 11L H221 11L:1H22 11L H222 11L:2H22 11L HN31 11L:1HN3 11L HN32 11L:2HN3 11L H171 11L:1H17 11L H172 11L:2H17 11L H161 11L:1H16 11L H162 11L:2H16 11L H151 11L:1H15 11L H152 11L:2H15 11L H141 11L:1H14 11L H142 11L:2H14 11L H131 11L:1H13 11L H132 11L:2H13 11L H121 11L:1H12 11L H122 11L:2H12 11L H111 11L:1H11 11L H112 11L:2H11 11L H101 11L:1H10 11L H102 11L:2H10 11L H91 11L:1H9 11L H92 11L:2H9 11L H81 11L:1H8 11L H82 11L:2H8 11L H71 11L:1H7 11L H72 11L:2H7 11L H61 11L:1H6 11L H62 11L:2H6 11L H51 11L:1H5 11L H52 11L:2H5 11L H41 11L:1H4 11L H42 11L:2H4 11L H31 11L:1H3 11L H32 11L:2H3 11L H21 11O:1H2 11O H22 11O:2H2 11O H31 11O:1H3 11O H32 11O:2H3 11O H41 11O:1H4 11O H42 11O:2H4 11O H51 11O:1H5 11O H52 11O:2H5 11O H61 11O:1H6 11O H62 11O:2H6 11O H71 11O:1H7 11O H72 11O:2H7 11O H81 11O:1H8 11O H82 11O:2H8 11O H91 11O:1H9 11O H101 11O:1H10 11O H111 11O:1H11 11O H121 11O:1H12 11O H131 11O:1H13 11O H141 11O:1H14 11O H142 11O:2H14 11O H151 11O:1H15 11O H152 11O:2H15 11O H161 11O:1H16 11O H162 11O:2H16 11O H171 11O:1H17 11O H172 11O:2H17 11O H181 11O:1H18 11O H182 11O:2H18 11O H183 11O:3H18 11O H2O1 11O:1H2O 11O H211 11O:1H21 11O HM23 11R:3HM2 11R HM22 11R:2HM2 11R HM21 11R:1HM2 11R HM13 11R:3HM1 11R HM12 11R:2HM1 11R HM11 11R:1HM1 11R HX61 11R:1HX6 11R HX62 11R:2HX6 11R HX51 11R:1HX5 11R HX52 11R:2HX5 11R HX41 11R:1HX4 11R HX42 11R:2HX4 11R HX31 11R:1HX3 11R HX32 11R:2HX3 11R HX21 11R:1HX2 11R HX22 11R:2HX2 11R HL61 11R:1HL6 11R HL62 11R:2HL6 11R HL51 11R:1HL5 11R HL52 11R:2HL5 11R HL41 11R:1HL4 11R HL42 11R:2HL4 11R HL31 11R:1HL3 11R HL32 11R:2HL3 11R HL21 11R:1HL2 11R HL22 11R:2HL2 11R HL11 11R:1HL1 11R HL12 11R:2HL1 11R HAN1 11R:1HAN 11R HCK1 11R:1HCK 11R HCJ1 11R:1HCJ 11R HCE1 11R:1HCE 11R HCD1 11R:1HCD 11R HCC1 11R:1HCC 11R HCB1 11R:1HCB 11R HBK1 11R:1HBK 11R HBJ1 11R:1HBJ 11R HBI1 11R:1HBI 11R HBH1 11R:1HBH 11R HBE1 11R:1HBE 11R HBD1 11R:1HBD 11R HBC1 11R:1HBC 11R HBB1 11R:1HBB 11R H211 11T:1H21 11T H212 11T:2H21 11T H213 11T:3H21 11T H221 11T:1H22 11T H222 11T:2H22 11T H223 11T:3H22 11T H201 11T:1H20 11T H202 11T:2H20 11T H203 11T:3H20 11T H241 11T:1H24 11T H242 11T:2H24 11T H151 11T:1H15 11T H152 11T:2H15 11T H141 11T:1H14 11T H142 11T:2H14 11T H131 11T:1H13 11T H132 11T:2H13 11T H121 11T:1H12 11T H122 11T:2H12 11T H111 11T:1H11 11T H112 11T:2H11 11T H101 11T:1H10 11T H102 11T:2H10 11T H91 11T:1H9 11T H92 11T:2H9 11T H81 11T:1H8 11T H82 11T:2H8 11T H71 11T:1H7 11T H72 11T:2H7 11T H61 11T:1H6 11T H62 11T:2H6 11T H51 11T:1H5 11T H52 11T:2H5 11T H41 11T:1H4 11T H42 11T:2H4 11T H31 11T:1H3 11T H32 11T:2H3 11T H11 11T:1H1 11T H12 11T:2H1 11T HH11 120:1HH1 120 HH12 120:2HH1 120 HH21 120:1HH2 120 HH22 120:2HH2 120 HH11 121:1HH1 121 HH12 121:2HH1 121 HH21 121:1HH2 121 HH22 121:2HH2 121 HH11 122:1HH1 122 HH12 122:2HH1 122 HH21 122:1HH2 122 HH22 122:2HH2 122 HH11 123:1HH1 123 HH12 123:2HH1 123 HH21 123:1HH2 123 HH22 123:2HH2 123 H3'1 123:1H3' 123 H3'2 123:2H3' 123 H3'3 123:3H3' 123 HH11 124:1HH1 124 HH12 124:2HH1 124 HH21 124:1HH2 124 HH22 124:2HH2 124 HOP2 125:2HOP 125 HOP3 125:3HOP 125 H5' 125:1H5* 125 H5'' 125:2H5* 125 H4' 125: H4* 125 H3' 125: H3* 125 HO3' 125:H3T 125 H2' 125: H2* 125 H1' 125: H1* 125 H71 125:1H5M 125 H72 125:2H5M 125 H73 125:3H5M 125 HA'1 125:1HA* 125 HA'2 125:2HA* 125 HB'1 125:1HB* 125 HB'2 125:2HB* 125 HOP2 126:2HOP 126 HOP3 126:3HOP 126 H5' 126:1H5* 126 H5'' 126:2H5* 126 H4' 126: H4* 126 H3' 126: H3* 126 HO3' 126:H3T 126 H2' 126: H2* 126 H1' 126: H1* 126 H71 126:1H5M 126 H72 126:2H5M 126 H73 126:3H5M 126 HA'1 126:1HA* 126 HA'2 126:2HA* 126 HB'1 126:1HB* 126 HB'2 126:2HB* 126 HD'1 126:1HD* 126 HD'2 126:2HD* 126 HE'1 126:1HE* 126 HE'2 126:2HE* 126 HG'1 126:1HG* 126 HG'2 126:2HG* 126 HH'1 126:1HH* 126 HH'2 126:2HH* 126 HK'1 126:1HK* 126 HK'2 126:2HK* 126 HK'3 126:3HK* 126 HOP2 127:2HOP 127 HOP3 127:3HOP 127 H5' 127:1H5* 127 H5'' 127:2H5* 127 H4' 127: H4* 127 H3' 127: H3* 127 HO3' 127:H3T 127 H2' 127: H2* 127 H1' 127: H1* 127 H71 127:1H5M 127 H72 127:2H5M 127 H73 127:3H5M 127 HA'1 127:1HA* 127 HA'2 127:2HA* 127 HB'1 127:1HB* 127 HB'2 127:2HB* 127 HD'1 127:1HD* 127 HD'2 127:2HD* 127 HOG2 128:2HOG 128 HOG3 128:3HOG 128 HOB2 128:2HOB 128 HOA2 128:2HOA 128 H5' 128:1H5* 128 H5'' 128:2H5* 128 H4' 128: H4* 128 H3' 128: H3* 128 H2' 128: H2* 128 H1' 128: H1* 128 HN61 128:1HN6 128 HN62 128:2HN6 128 HOP2 129:2HOP 129 HOP3 129:3HOP 129 H41 129:1H4 129 H42 129:2H4 129 H31 129:1H3 129 H32 129:2H3 129 HOP3 12A:3HOP 12A HOP2 12A:2HOP 12A H5' 12A:1H5* 12A H5'' 12A:2H5* 12A H4' 12A: H4* 12A H3' 12A: H3* 12A HO3' 12A:H3T 12A H2' 12A: H2* 12A HO2' 12A:2HO* 12A H1' 12A: H1* 12A H2M1 12A:1H2M 12A H2M2 12A:2H2M 12A H2M3 12A:3H2M 12A HG21 12A:1HG2 12A HG22 12A:2HG2 12A HG23 12A:3HG2 12A H181 12C:1H18 12C H182 12C:2H18 12C H191 12C:1H19 12C H192 12C:2H19 12C H201 12C:1H20 12C H202 12C:2H20 12C H211 12C:1H21 12C H212 12C:2H21 12C H221 12C:1H22 12C H222 12C:2H22 12C H11 12H:1H1 12H H12 12H:2H1 12H H21 12H:1H2 12H H22 12H:2H2 12H H31 12H:1H3 12H H32 12H:2H3 12H H41 12H:1H4 12H H42 12H:2H4 12H H51 12H:1H5 12H H52 12H:2H5 12H H61 12H:1H6 12H H62 12H:2H6 12H H71 12H:1H7 12H H72 12H:2H7 12H H81 12H:1H8 12H H82 12H:2H8 12H H91 12H:1H9 12H H92 12H:2H9 12H H101 12H:1H10 12H H102 12H:2H10 12H H111 12H:1H11 12H H112 12H:2H11 12H HAH1 12M:1HAH 12M HAH2 12M:2HAH 12M HAH3 12M:3HAH 12M HAD1 12M:1HAD 12M HAD2 12M:2HAD 12M HAF1 12M:1HAF 12M HAF2 12M:2HAF 12M H361 12P:1H36 12P H362 12P:2H36 12P H351 12P:1H35 12P H352 12P:2H35 12P H331 12P:1H33 12P H332 12P:2H33 12P H321 12P:1H32 12P H322 12P:2H32 12P H301 12P:1H30 12P H302 12P:2H30 12P H291 12P:1H29 12P H292 12P:2H29 12P H271 12P:1H27 12P H272 12P:2H27 12P H261 12P:1H26 12P H262 12P:2H26 12P H241 12P:1H24 12P H242 12P:2H24 12P H231 12P:1H23 12P H232 12P:2H23 12P H211 12P:1H21 12P H212 12P:2H21 12P H201 12P:1H20 12P H202 12P:2H20 12P H181 12P:1H18 12P H182 12P:2H18 12P H171 12P:1H17 12P H172 12P:2H17 12P H151 12P:1H15 12P H152 12P:2H15 12P H141 12P:1H14 12P H142 12P:2H14 12P H121 12P:1H12 12P H122 12P:2H12 12P H111 12P:1H11 12P H112 12P:2H11 12P H91 12P:1H9 12P H92 12P:2H9 12P H81 12P:1H8 12P H82 12P:2H8 12P H61 12P:1H6 12P H62 12P:2H6 12P H51 12P:1H5 12P H52 12P:2H5 12P H31 12P:1H3 12P H32 12P:2H3 12P H21 12P:1H2 12P H22 12P:2H2 12P HAH1 12Q:1HAH 12Q HAH2 12Q:2HAH 12Q HAH3 12Q:3HAH 12Q HH11 130:1HH1 130 HH12 130:2HH1 130 HH21 130:1HH2 130 HC'2 130:2HC' 130 HC'3 130:3HC' 130 HC'4 130:4HC' 130 H2' 130: H2* 130 H3' 130: H3* 130 H4' 130: H4* 130 H5' 130: H5* 130 H6' 130: H6* 130 HH11 131:1HH1 131 HH12 131:2HH1 131 HH21 131:1HH2 131 H2' 131: H2* 131 H3' 131: H3* 131 H4' 131: H4* 131 H5' 131: H5* 131 H6' 131: H6* 131 HH11 132:1HH1 132 HH12 132:2HH1 132 HH21 132:1HH2 132 HH22 132:2HH2 132 HC'2 132:2HC' 132 HC'3 132:3HC' 132 HC'4 132:4HC' 132 H2' 132: H2* 132 H3' 132: H3* 132 H4' 132: H4* 132 H5' 132: H5* 132 H6' 132: H6* 132 HH11 133:1HH1 133 HH12 133:2HH1 133 HH21 133:1HH2 133 HC'2 133:2HC' 133 HC'3 133:3HC' 133 HC'4 133:4HC' 133 HO'6 133:6HO' 133 H101 133:1H10 133 H102 133:2H10 133 H301 133:1H30 133 H302 133:2H30 133 H303 133:3H30 133 H401 133:1H40 133 H402 133:2H40 133 H403 133:3H40 133 HH11 134:1HH1 134 HH12 134:2HH1 134 HH21 134:1HH2 134 HC'2 134:2HC' 134 HC'3 134:3HC' 134 HC'4 134:4HC' 134 HO'6 134:6HO' 134 H1' 134: H1* 134 H2'1 134:1H2* 134 H2'2 134:2H2* 134 H3'1 134:1H3* 134 H3'2 134:2H3* 134 H4'1 134:1H4* 134 H4'2 134:2H4* 134 H5'1 134:1H5* 134 H5'2 134:2H5* 134 H6' 134: H6* 134 HM1 134:1HM 134 HM2 134:2HM 134 HM3 134:3HM 134 HH11 135:1HH1 135 HH12 135:2HH1 135 HH21 135:1HH2 135 HH11 136:1HH1 136 HH12 136:2HH1 136 HH21 136:1HH2 136 H211 136:1H21 136 H212 136:2H21 136 H213 136:3H21 136 HOP2 137:2HOP 137 HOP3 137:3HOP 137 H5'1 137:1H5' 137 H5'2 137:2H5' 137 HO'4 137:4HO' 137 HO'3 137:3HO' 137 HO'2 137:2HO' 137 H1'1 137:1H1' 137 H1'2 137:2H1' 137 HA21 138:1HA2 138 HA22 138:2HA2 138 H91 138:1H9 138 H92 138:2H9 138 HA11 138:1HA1 138 HA12 138:2HA1 138 HB1 138:1HB 138 HB2 138:2HB 138 HG1 138:1HG 138 HG2 138:2HG 138 H271 138:1H27 138 H272 138:2H27 138 H191 138:1H19 138 H192 138:2H19 138 HOA2 139:2HOA 139 HOB2 139:2HOB 139 H6A1 139:1H6A 139 H6A2 139:2H6A 139 HA51 139:1HA5 139 HA52 139:2HA5 139 H4D 139:H4*A 139 H1D 139:H1*A 139 H2D 139:H2*A 139 HD2 139:2H*A 139 H3D 139:H3*A 139 HD3 139:3H*A 139 HB5 139:5H*U 139 HU51 139:1HU5 139 HU52 139:2HU5 139 H4B 139:H4*U 139 H1B 139:H1*U 139 HU21 139:1HU2 139 HU22 139:2HU2 139 H3B 139:H3*U 139 H81 13A:1H8 13A H82 13A:2H8 13A HAC1 13D:1HAC 13D HAC2 13D:2HAC 13D HBC1 13D:1HBC 13D HBC2 13D:2HBC 13D HCC1 13D:1HCC 13D HCC2 13D:2HCC 13D HDN1 13D:1HDN 13D HDN2 13D:2HDN 13D HAA1 13D:1HAA 13D HAA2 13D:2HAA 13D HAB1 13O:1HAB 13O HAB2 13O:2HAB 13O HAC1 13O:1HAC 13O HAC2 13O:2HAC 13O HAD1 13O:1HAD 13O HAD2 13O:2HAD 13O HAE1 13O:1HAE 13O HAE2 13O:2HAE 13O HAF1 13O:1HAF 13O HAF2 13O:2HAF 13O HAG1 13O:1HAG 13O HAG2 13O:2HAG 13O HAL1 13O:1HAL 13O HAL2 13O:2HAL 13O HAN1 13O:1HAN 13O HAN2 13O:2HAN 13O HAO1 13O:1HAO 13O HAO2 13O:2HAO 13O HAP1 13O:1HAP 13O HAP2 13O:2HAP 13O HAQ1 13O:1HAQ 13O HAQ2 13O:2HAQ 13O HAR1 13O:1HAR 13O HAR2 13O:2HAR 13O HAR3 13O:3HAR 13O HOP2 13P:2HOP 13P HOP3 13P:3HOP 13P H11 13P:1H1 13P H12 13P:2H1 13P H31 13P:1H3 13P H32 13P:2H3 13P H21 13R:1H2 13R H22 13R:2H2 13R H31 13R:1H3 13R H32 13R:2H3 13R H41 13R:1H4 13R H42 13R:2H4 13R H51 13R:1H5 13R H52 13R:2H5 13R H61 13R:1H6 13R H62 13R:2H6 13R H71 13R:1H7 13R H72 13R:2H7 13R H81 13R:1H8 13R H82 13R:2H8 13R H91 13R:1H9 13R H101 13R:1H10 13R H111 13R:1H11 13R H121 13R:1H12 13R H131 13R:1H13 13R H141 13R:1H14 13R H142 13R:2H14 13R H151 13R:1H15 13R H152 13R:2H15 13R H161 13R:1H16 13R H162 13R:2H16 13R H171 13R:1H17 13R H172 13R:2H17 13R H181 13R:1H18 13R H182 13R:2H18 13R H183 13R:3H18 13R H201 13R:1H20 13R H221 13R:1H22 13R H21 13S:1H2 13S H22 13S:2H2 13S H31 13S:1H3 13S H32 13S:2H3 13S H41 13S:1H4 13S H42 13S:2H4 13S H51 13S:1H5 13S H52 13S:2H5 13S H61 13S:1H6 13S H62 13S:2H6 13S H71 13S:1H7 13S H72 13S:2H7 13S H81 13S:1H8 13S H82 13S:2H8 13S H91 13S:1H9 13S H101 13S:1H10 13S H111 13S:1H11 13S H121 13S:1H12 13S H131 13S:1H13 13S H141 13S:1H14 13S H142 13S:2H14 13S H151 13S:1H15 13S H152 13S:2H15 13S H161 13S:1H16 13S H162 13S:2H16 13S H171 13S:1H17 13S H172 13S:2H17 13S H181 13S:1H18 13S H182 13S:2H18 13S H183 13S:3H18 13S H201 13S:1H20 13S H221 13S:1H22 13S H121 13T:1H12 13T H122 13T:2H12 13T H131 13T:1H13 13T H132 13T:2H13 13T H231 13T:1H23 13T H232 13T:2H23 13T H233 13T:3H23 13T H241 13T:1H24 13T H242 13T:2H24 13T H243 13T:3H24 13T H251 13T:1H25 13T H252 13T:2H25 13T H253 13T:3H25 13T H261 13T:1H26 13T H262 13T:2H26 13T H263 13T:3H26 13T H271 13T:1H27 13T H272 13T:2H27 13T H273 13T:3H27 13T H281 13T:1H28 13T H282 13T:2H28 13T H283 13T:3H28 13T H291 13T:1H29 13T H292 13T:2H29 13T H301 13T:1H30 13T H302 13T:2H30 13T H303 13T:3H30 13T H311 13T:1H31 13T H312 13T:2H31 13T H313 13T:3H31 13T H321 13T:1H32 13T H322 13T:2H32 13T H323 13T:3H32 13T H21 140:1H2 140 H22 140:2H2 140 H41 140:1H4 140 H42 140:2H4 140 H51 140:1H5 140 H52 140:2H5 140 H61 140:1H6 140 H62 140:2H6 140 H71 140:1H7 140 H72 140:2H7 140 H81 140:1H8 140 H82 140:2H8 140 H91 140:1H9 140 H92 140:2H9 140 H101 140:1H10 140 H102 140:2H10 140 H111 140:1H11 140 H112 140:2H11 140 H121 140:1H12 140 H122 140:2H12 140 H131 140:1H13 140 H132 140:2H13 140 H141 140:1H14 140 H142 140:2H14 140 H151 140:1H15 140 H152 140:2H15 140 H161 140:1H16 140 H162 140:2H16 140 H171 140:1H17 140 H172 140:2H17 140 H181 140:1H18 140 H182 140:2H18 140 H183 140:3H18 140 HN1 142:1HN 142 HN2 142:2HN 142 HB1 142:1HB 142 HB2 142:2HB 142 HB11 142:1HB1 142 HB12 142:2HB1 142 HB13 142:3HB1 142 H2 143: HN2 143 HB2 143:1HB 143 HB3 143:2HB 143 HI1 143:1HI 143 HI2 143:2HI 143 H11 144:1H1 144 H12 144:2H1 144 H13 144:3H1 144 H21 144:1H2 144 H22 144:2H2 144 H31 144:1H3 144 H32 144:2H3 144 H41 144:1H4 144 H42 144:2H4 144 H61 145:1H6 145 H62 145:2H6 145 H21A 146:1H2 146 H22 146:2H2 146 H71A 146:1H7 146 H72 146:2H7 146 H311 146:1H31 146 H312 146:2H31 146 H611 146:1H61 146 H612 146:2H61 146 HN77 146:7HN7 146 H61 147:1H6 147 H62 147:2H6 147 H21 148:1H2 148 H22 148:2H2 148 H31 148:1H3 148 H32 148:2H3 148 H41 148:1H4 148 H42 148:2H4 148 H51 148:1H5 148 H52 148:2H5 148 H61 148:1H6 148 H62 148:2H6 148 H71 148:1H7 148 H72 148:2H7 148 H81 148:1H8 148 H82 148:2H8 148 H61 149:1H6 149 H62 149:2H6 149 HN31 14A:1HN3 14A HN32 14A:2HN3 14A H61 14A:1H6 14A H62 14A:2H6 14A H71 14A:1H7 14A H72 14A:2H7 14A H81 14A:1H8 14A H82 14A:2H8 14A H201 14A:1H20 14A H202 14A:2H20 14A H221 14A:1H22 14A H222 14A:2H22 14A H241 14A:1H24 14A H242 14A:2H24 14A H251 14A:1H25 14A H252 14A:2H25 14A H261 14A:1H26 14A H262 14A:2H26 14A H271 14A:1H27 14A H272 14A:2H27 14A H71 14W:1H7 14W H72 14W:2H7 14W H101 14W:1H10 14W H102 14W:2H10 14W H103 14W:3H10 14W H121 14W:1H12 14W H122 14W:2H12 14W H131 14W:1H13 14W H132 14W:2H13 14W HN11 150:1HN1 150 HN12 150:2HN1 150 HN21 150:1HN2 150 HN22 150:2HN2 150 H71 150:1H7 150 H72 150:2H7 150 H73 150:3H7 150 H81 150:1H8 150 H82 150:2H8 150 H83 150:3H8 150 H261 151:1H26 151 H262 151:2H26 151 H281 151:1H28 151 H282 151:2H28 151 H3C1 151:1H3C 151 H3C2 151:2H3C 151 H3C3 151:3H3C 151 H1C1 151:1H1C 151 H1C2 151:2H1C 151 H1C3 151:3H1C 151 H171 151:1H17 151 H172 151:2H17 151 H173 151:3H17 151 H9C1 151:1H9C 151 H9C2 151:2H9C 151 H111 151:1H11 151 H112 151:2H11 151 H131 151:1H13 151 H132 151:2H13 151 H141 151:1H14 151 H142 151:2H14 151 H121 151:1H12 151 H122 151:2H12 151 H21 152:1H2 152 H22 152:2H2 152 H41 152:1H4 152 H42 152:2H4 152 H5A1 152:1H5A 152 H5A2 152:2H5A 152 H5A3 152:3H5A 152 H5B1 152:1H5B 152 H5B2 152:2H5B 152 H5B3 152:3H5B 152 H5C1 152:1H5C 152 H5C2 152:2H5C 152 H5C3 152:3H5C 152 H161 153:1H16 153 H162 153:2H16 153 H231 153:1H23 153 H232 153:2H23 153 H161 154:1H16 154 H162 154:2H16 154 H231 154:1H23 154 H232 154:2H23 154 H191 155:1H19 155 H192 155:2H19 155 H321 155:1H32 155 H322 155:2H32 155 H331 155:1H33 155 H332 155:2H33 155 H411 155:1H41 155 H412 155:2H41 155 H413 155:3H41 155 H451 155:1H45 155 H452 155:2H45 155 H453 155:3H45 155 H151 156:1H15 156 H152 156:2H15 156 H161 156:1H16 156 H162 156:2H16 156 H211 156:1H21 156 H212 156:2H21 156 H213 156:3H21 156 H221 156:1H22 156 H222 156:2H22 156 H223 156:3H22 156 H231 156:1H23 156 H232 156:2H23 156 H233 156:3H23 156 H241 156:1H24 156 H242 156:2H24 156 H243 156:3H24 156 H11 157:1H1 157 H12 157:2H1 157 H21 157:1H2 157 H22 157:2H2 157 H31 157:1H3 157 H32 157:2H3 157 H41 157:1H4 157 H42 157:2H4 157 HN61 157:1HN6 157 HN62 157:2HN6 157 H111 157:1H11 157 H112 157:2H11 157 H121 157:1H12 157 H122 157:2H12 157 H141 157:1H14 157 H142 157:2H14 157 H61 158:1H6 158 H62 158:2H6 158 H11 158:1H1 158 H12A 158:2H1 158 H13 158:3H1 158 H91 158:1H9 158 H92 158:2H9 158 H51 159:1H5 159 H52 159:2H5 159 H41 159:1H4 159 H42 159:2H4 159 H61 15B:1H6 15B H62 15B:2H6 15B H191 15B:1H19 15B H192 15B:2H19 15B H201 15B:1H20 15B H202 15B:2H20 15B H211 15B:1H21 15B H212 15B:2H21 15B H231 15B:1H23 15B H232 15B:2H23 15B H241 15B:1H24 15B H242 15B:2H24 15B H261 15B:1H26 15B H262 15B:2H26 15B H271 15B:1H27 15B H272 15B:2H27 15B H281 15B:1H28 15B H282 15B:2H28 15B H351 15B:1H35 15B H352 15B:2H35 15B H361 15B:1H36 15B H362 15B:2H36 15B H371 15B:1H37 15B H372 15B:2H37 15B H21A 15M:1H2 15M H22A 15M:2H2 15M H31 15M:1H3 15M H32 15M:2H3 15M H41 15M:1H4 15M H42 15M:2H4 15M H71 15M:1H7 15M H72 15M:2H7 15M H101 15M:1H10 15M H102 15M:2H10 15M H161 15M:1H16 15M H162 15M:2H16 15M H171 15M:1H17 15M H172 15M:2H17 15M H241 15M:1H24 15M H242 15M:2H24 15M H243 15M:3H24 15M H251 15M:1H25 15M H252 15M:2H25 15M H101 15P:1H10 15P H102 15P:2H10 15P H111 15P:1H11 15P H112 15P:2H11 15P H121 15P:1H12 15P H122 15P:2H12 15P H131 15P:1H13 15P H132 15P:2H13 15P H141 15P:1H14 15P H142 15P:2H14 15P H151 15P:1H15 15P H152 15P:2H15 15P H161 15P:1H16 15P H162 15P:2H16 15P H171 15P:1H17 15P H172 15P:2H17 15P H181 15P:1H18 15P H182 15P:2H18 15P H191 15P:1H19 15P H192 15P:2H19 15P H201 15P:1H20 15P H202 15P:2H20 15P H211 15P:1H21 15P H212 15P:2H21 15P H221 15P:1H22 15P H222 15P:2H22 15P H231 15P:1H23 15P H232 15P:2H23 15P H241 15P:1H24 15P H242 15P:2H24 15P H251 15P:1H25 15P H252 15P:2H25 15P H261 15P:1H26 15P H262 15P:2H26 15P H271 15P:1H27 15P H272 15P:2H27 15P H281 15P:1H28 15P H282 15P:2H28 15P H291 15P:1H29 15P H292 15P:2H29 15P H301 15P:1H30 15P H302 15P:2H30 15P H311 15P:1H31 15P H312 15P:2H31 15P H321 15P:1H32 15P H322 15P:2H32 15P H331 15P:1H33 15P H332 15P:2H33 15P H341 15P:1H34 15P H342 15P:2H34 15P H351 15P:1H35 15P H352 15P:2H35 15P H361 15P:1H36 15P H362 15P:2H36 15P H371 15P:1H37 15P H372 15P:2H37 15P H381 15P:1H38 15P H382 15P:2H38 15P H391 15P:1H39 15P H392 15P:2H39 15P H401 15P:1H40 15P H402 15P:2H40 15P H411 15P:1H41 15P H412 15P:2H41 15P H421 15P:1H42 15P H422 15P:2H42 15P H431 15P:1H43 15P H432 15P:2H43 15P H441 15P:1H44 15P H442 15P:2H44 15P H451 15P:1H45 15P H452 15P:2H45 15P H461 15P:1H46 15P H462 15P:2H46 15P H471 15P:1H47 15P H472 15P:2H47 15P H481 15P:1H48 15P H482 15P:2H48 15P H491 15P:1H49 15P H492 15P:2H49 15P H501 15P:1H50 15P H502 15P:2H50 15P H511 15P:1H51 15P H512 15P:2H51 15P H521 15P:1H52 15P H522 15P:2H52 15P H531 15P:1H53 15P H532 15P:2H53 15P H541 15P:1H54 15P H542 15P:2H54 15P H551 15P:1H55 15P H552 15P:2H55 15P H561 15P:1H56 15P H562 15P:2H56 15P H571 15P:1H57 15P H572 15P:2H57 15P H581 15P:1H58 15P H582 15P:2H58 15P H591 15P:1H59 15P H592 15P:2H59 15P H601 15P:1H60 15P H602 15P:2H60 15P H611 15P:1H61 15P H612 15P:2H61 15P H621 15P:1H62 15P H622 15P:2H62 15P H631 15P:1H63 15P H632 15P:2H63 15P H641 15P:1H64 15P H642 15P:2H64 15P H651 15P:1H65 15P H652 15P:2H65 15P H661 15P:1H66 15P H662 15P:2H66 15P H671 15P:1H67 15P H672 15P:2H67 15P H681 15P:1H68 15P H682 15P:2H68 15P HCM1 15P:1HCM 15P HCM2 15P:2HCM 15P HCM3 15P:3HCM 15P H251 160:1H25 160 H252 160:2H25 160 H253 160:3H25 160 H161 160:1H16 160 H162 160:2H16 160 H151 160:1H15 160 H152 160:2H15 160 H121 160:1H12 160 H122 160:2H12 160 H11A 160:1H1 160 H12 160:2H1 160 H13 160:3H1 160 H291 160:1H29 160 H292 160:2H29 160 H11A 161:1H1 161 H12 161:2H1 161 H13A 161:3H1 161 H251 161:1H25 161 H252 161:2H25 161 H121 161:1H12 161 H122 161:2H12 161 H11A 162:1H1 162 H12 162:2H1 162 H21 162:1H2 162 H22 162:2H2 162 H23 162:3H2 162 H61 162:1H6 162 H62 162:2H6 162 H141 162:1H14 162 H142 162:2H14 162 H161 162:1H16 162 H162 162:2H16 162 H171 162:1H17 162 H172 162:2H17 162 H181 162:1H18 162 H182 162:2H18 162 H191 162:1H19 162 H192 162:2H19 162 H201 162:1H20 162 H202 162:2H20 162 H211 162:1H21 162 H212 162:2H21 162 H11A 163:1H1 163 H12 163:2H1 163 H21 163:1H2 163 H22 163:2H2 163 H23 163:3H2 163 H61 163:1H6 163 H62 163:2H6 163 H141 163:1H14 163 H142 163:2H14 163 H161 163:1H16 163 H162 163:2H16 163 H171 163:1H17 163 H172 163:2H17 163 H181 163:1H18 163 H182 163:2H18 163 H191 163:1H19 163 H192 163:2H19 163 H201 163:1H20 163 H202 163:2H20 163 H211 163:1H21 163 H212 163:2H21 163 H91 164:1H9 164 H92 164:2H9 164 H101 164:1H10 164 H102 164:2H10 164 H221 165:1H22 165 H222 165:2H22 165 H211 165:1H21 165 H212 165:2H21 165 H201 165:1H20 165 H202 165:2H20 165 H351 165:1H35 165 H352 165:2H35 165 H71 165:1H7 165 H72 165:2H7 165 H111 165:1H11 165 H112 165:2H11 165 H131 165:1H13 165 H132 165:2H13 165 H141 165:1H14 165 H142 165:2H14 165 H151 165:1H15 165 H152 165:2H15 165 H161 165:1H16 165 H162 165:2H16 165 H171 165:1H17 165 H172 165:2H17 165 H12 166:2H1 166 H11 166:1H1 166 H22 166:2H2 166 H21 166:1H2 166 H32 166:2H3 166 H31 166:1H3 166 H42 166:2H4 166 H41 166:1H4 166 H62 166:2H6 166 H61 166:1H6 166 H142 166:2H14 166 H141 166:1H14 166 H12 167:2H1 167 H11 167:1H1 167 H22 167:2H2 167 H21 167:1H2 167 H32 167:2H3 167 H31 167:1H3 167 H42 167:2H4 167 H41 167:1H4 167 H62 167:2H6 167 H61 167:1H6 167 H142 167:2H14 167 H141 167:1H14 167 H533 167:3H53 167 H532 167:2H53 167 H531 167:1H53 167 H21 168:1H2 168 H22 168:2H2 168 H23 168:3H2 168 HP21 168:1HP2 168 HP22 168:2HP2 168 HP31 168:1HP3 168 HP32 168:2HP3 168 HP61 168:1HP6 168 HP62 168:2HP6 168 HP71 168:1HP7 168 HP72 168:2HP7 168 HPA0 168:0HPA 168 HPD1 168:1HPD 168 HPD2 168:2HPD 168 HPD3 168:3HPD 168 HPE1 168:1HPE 168 HPE2 168:2HPE 168 HPE3 168:3HPE 168 HPC1 168:1HPC 168 HPC2 168:2HPC 168 HT31 168:1HT3 168 HT32 168:2HT3 168 HT33 168:3HT3 168 HT41 168:1HT4 168 HT42 168:2HT4 168 HT43 168:3HT4 168 HT51 168:1HT5 168 HT52 168:2HT5 168 HT53 168:3HT5 168 H11A 169:1H1 169 H12A 169:2H1 169 H13 169:3H1 169 H31 169:1H3 169 H32 169:2H3 169 H33 169:3H3 169 H41 169:1H4 169 H42 169:2H4 169 H43 169:3H4 169 H51 169:1H5 169 H52 169:2H5 169 H61 169:1H6 169 H62 169:2H6 169 H71 169:1H7 169 H72 169:2H7 169 H81 169:1H8 169 H82 169:2H8 169 H131 169:1H13 169 H132 169:2H13 169 H141 169:1H14 169 H142 169:2H14 169 H151 169:1H15 169 H152 169:2H15 169 HN51 169:1HN5 169 HN55 169:5HN5 169 H11 16A:1H1 16A H12 16A:2H1 16A H13 16A:3H1 16A H21 16A:1H2 16A H22 16A:2H2 16A H31 16A:1H3 16A H32 16A:2H3 16A H41 16A:1H4 16A H42 16A:2H4 16A H51 16A:1H5 16A H52 16A:2H5 16A H61 16A:1H6 16A H62 16A:2H6 16A H71 16A:1H7 16A H72 16A:2H7 16A H81 16A:1H8 16A H82 16A:2H8 16A H91 16A:1H9 16A H92 16A:2H9 16A H101 16A:1H10 16A H102 16A:2H10 16A H111 16A:1H11 16A H112 16A:2H11 16A H121 16A:1H12 16A H122 16A:2H12 16A H131 16A:1H13 16A H132 16A:2H13 16A H141 16A:1H14 16A H142 16A:2H14 16A H151 16A:1H15 16A H152 16A:2H15 16A H161 16A:1H16 16A H162 16A:2H16 16A H171 16A:1H17 16A H172 16A:2H17 16A H173 16A:3H17 16A H181 16A:1H18 16A H182 16A:2H18 16A H183 16A:3H18 16A H191 16A:1H19 16A H192 16A:2H19 16A H193 16A:3H19 16A H11 16C:1H1 16C H12 16C:2H1 16C H61 16C:1H6 16C H62 16C:2H6 16C H71 16C:1H7 16C H72 16C:2H7 16C H81 16C:1H8 16C H82 16C:2H8 16C H91 16C:1H9 16C H92 16C:2H9 16C H101 16C:1H10 16C H102 16C:2H10 16C H111 16C:1H11 16C H112 16C:2H11 16C H121 16C:1H12 16C H122 16C:2H12 16C H131 16C:1H13 16C H132 16C:2H13 16C H141 16C:1H14 16C H142 16C:2H14 16C H151 16C:1H15 16C H152 16C:2H15 16C H161 16C:1H16 16C H162 16C:2H16 16C H171 16C:1H17 16C H172 16C:2H17 16C H181 16C:1H18 16C H182 16C:2H18 16C H183 16C:3H18 16C H201 16C:1H20 16C H202 16C:2H20 16C H211 16C:1H21 16C H212 16C:2H21 16C H221 16C:1H22 16C H222 16C:2H22 16C H231 16C:1H23 16C H232 16C:2H23 16C H241 16C:1H24 16C H242 16C:2H24 16C H251 16C:1H25 16C H252 16C:2H25 16C H261 16C:1H26 16C H262 16C:2H26 16C H271 16C:1H27 16C H272 16C:2H27 16C H281 16C:1H28 16C H282 16C:2H28 16C H291 16C:1H29 16C H292 16C:2H29 16C H301 16C:1H30 16C H302 16C:2H30 16C H311 16C:1H31 16C H312 16C:2H31 16C H321 16C:1H32 16C H322 16C:2H32 16C H331 16C:1H33 16C H332 16C:2H33 16C H341 16C:1H34 16C H342 16C:2H34 16C H343 16C:3H34 16C HN11 16D:1HN1 16D HN12 16D:2HN1 16D H11 16D:1H1 16D H12 16D:2H1 16D H21 16D:1H2 16D H22 16D:2H2 16D H31 16D:1H3 16D H32 16D:2H3 16D H41 16D:1H4 16D H42 16D:2H4 16D H51 16D:1H5 16D H52 16D:2H5 16D H61 16D:1H6 16D H62 16D:2H6 16D HN21 16D:1HN2 16D HN22 16D:2HN2 16D H61 16G:1H6 16G H62 16G:2H6 16G H81 16G:1H8 16G H82 16G:2H8 16G H83 16G:3H8 16G HOP2 16G:2HOP 16G HOP3 16G:3HOP 16G H11 16P:1H1 16P H12 16P:2H1 16P H13 16P:3H1 16P H21 16P:1H2 16P H22 16P:2H2 16P H31 16P:1H3 16P H32 16P:2H3 16P H41 16P:1H4 16P H42 16P:2H4 16P H51 16P:1H5 16P H52 16P:2H5 16P H61 16P:1H6 16P H62 16P:2H6 16P H71 16P:1H7 16P H72 16P:2H7 16P H81 16P:1H8 16P H82 16P:2H8 16P H91 16P:1H9 16P H92 16P:2H9 16P H101 16P:1H10 16P H102 16P:2H10 16P H111 16P:1H11 16P H112 16P:2H11 16P H121 16P:1H12 16P H122 16P:2H12 16P H131 16P:1H13 16P H132 16P:2H13 16P H141 16P:1H14 16P H142 16P:2H14 16P H143 16P:3H14 16P H11 170:1H1 170 H12 170:2H1 170 H331 170:1H33 170 H332 170:2H33 170 H391 170:1H39 170 H392 170:2H39 170 H11 171:1H1 171 H12 171:2H1 171 H21 171:1H2 171 H22 171:2H2 171 H141 172:1H14 172 H142 172:2H14 172 H2 175: HN2 175 HC2 175: H2 175 HB1 175:1HB 175 HB2 175:2HB 175 HB3 175:3HB 175 HN2A 175:2HN 175 H41 175:1H4 175 H42 175:2H4 175 HA1 175:1HA 175 HA2 175:2HA 175 HN51 175:1HN5 175 HN52 175:2HN5 175 HN01 176:1HN0 176 HN02 176:2HN0 176 HD1A 176:1HD 176 HD2A 176:2HD 176 HB1 176:1HB 176 HB2 176:2HB 176 HG1 176:1HG 176 HG2 176:2HG 176 HA11 176:1HA1 176 HA12 176:2HA1 176 HG' 176: HG* 176 HG11 177:1HG1 177 HG12 177:2HG1 177 HG21 177:1HG2 177 HG22 177:2HG2 177 HD11 177:1HD1 177 HD12 177:2HD1 177 HD21 177:1HD2 177 HD22 177:2HD2 177 HE01 177:1HE0 177 HE02 177:2HE0 177 H01 177:1H0 177 H02 177:2H0 177 HD1 177:1HD 177 HD2 177:2HD 177 HB1 177:1HB 177 HB2 177:2HB 177 HG1 177:1HG 177 HG2 177:2HG 177 HA'1 177:1HA' 177 HA'2 177:2HA' 177 HG' 177: HG* 177 HF1 177:1HF 177 HF2 177:2HF 177 HM1 177:1HM 177 HM2 177:2HM 177 HN1 177:1HN 177 HN2A 177:2HN 177 HN3 177:3HN 177 H2B1 178:1H2B 178 H2B2 178:2H2B 178 H2B3 178:3H2B 178 H2G1 178:1H2G 178 H2G2 178:2H2G 178 H2G3 178:3H2G 178 H2Y1 178:1H2Y 178 H2Y2 178:2H2Y 178 H2Y3 178:3H2Y 178 H2Z1 178:1H2Z 178 H2Z2 178:2H2Z 178 H2Z3 178:3H2Z 178 H301 17A:1H30 17A H302 17A:2H30 17A H303 17A:3H30 17A H291 17A:1H29 17A H292 17A:2H29 17A H293 17A:3H29 17A H151 17A:1H15 17A H152 17A:2H15 17A H91 17A:1H9 17A H92 17A:2H9 17A H101 17A:1H10 17A H102 17A:2H10 17A H21 17H:1H2 17H H22 17H:2H2 17H H71 17H:1H7 17H H72 17H:2H7 17H H61 17H:1H6 17H H62 17H:2H6 17H H11A 17H:1H1 17H H12A 17H:2H1 17H H151 17H:1H15 17H H152 17H:2H15 17H H161 17H:1H16 17H H162 17H:2H16 17H H181 17H:1H18 17H H182 17H:2H18 17H H221 17H:1H22 17H H222 17H:2H22 17H H223 17H:3H22 17H H211 17H:1H21 17H H212 17H:2H21 17H H213 17H:3H21 17H H201 17H:1H20 17H H202 17H:2H20 17H HAR1 17M:1HAR 17M HAR2 17M:2HAR 17M HAR3 17M:3HAR 17M HAP1 17M:1HAP 17M HAP2 17M:2HAP 17M HAJ1 17M:1HAJ 17M HAJ2 17M:2HAJ 17M HAQ1 17M:1HAQ 17M HAQ2 17M:2HAQ 17M HAC1 17M:1HAC 17M HAC2 17M:2HAC 17M HAS1 17M:1HAS 17M HAS2 17M:2HAS 17M HAS3 17M:3HAS 17M H31 180:1H3 180 H32 180:2H3 180 H101 180:1H10 180 H102 180:2H10 180 H111 180:1H11 180 H112 180:2H11 180 H131 180:1H13 180 H132 180:2H13 180 H141 180:1H14 180 H142 180:2H14 180 H151 180:1H15 180 H152 180:2H15 180 H161 180:1H16 180 H162 180:2H16 180 HAJ1 181:1HAJ 181 HAJ2 181:2HAJ 181 HAK1 181:1HAK 181 HAK2 181:2HAK 181 HAL1 181:1HAL 181 HAL2 181:2HAL 181 HAJ1 182:1HAJ 182 HAJ2 182:2HAJ 182 HAK1 182:1HAK 182 HAK2 182:2HAK 182 HAL1 182:1HAL 182 HAL2 182:2HAL 182 HAN1 183:1HAN 183 HAN2 183:2HAN 183 HAO1 183:1HAO 183 HAO2 183:2HAO 183 HAR1 183:1HAR 183 HAR2 183:2HAR 183 HAQ1 183:1HAQ 183 HAQ2 183:2HAQ 183 HAP1 183:1HAP 183 HAP2 183:2HAP 183 H171 184:1H17 184 H172 184:2H17 184 H181 184:1H18 184 H182 184:2H18 184 H231 184:1H23 184 H232 184:2H23 184 H233 184:3H23 184 H241 184:1H24 184 H242 184:2H24 184 H243 184:3H24 184 H251 184:1H25 184 H252 184:2H25 184 H253 184:3H25 184 H261 184:1H26 184 H262 184:2H26 184 H263 184:3H26 184 H2'1 185:1H2' 185 H2'2 185:2H2' 185 H2'3 185:3H2' 185 H6'1 185:1H6' 185 H6'2 185:2H6' 185 H6'3 185:3H6' 185 H181 185:1H18 185 H182 185:2H18 185 H271 186:1H27 186 H272 186:2H27 186 H161 186:1H16 186 H162 186:2H16 186 H141 186:1H14 186 H142 186:2H14 186 H143 186:3H14 186 HN41 187:1HN4 187 HN42 187:2HN4 187 H131 188:1H13 188 H132 188:2H13 188 H161 188:1H16 188 H162 188:2H16 188 H181 188:1H18 188 H182 188:2H18 188 H183 188:3H18 188 H201 189:1H20 189 H202 189:2H20 189 H261 189:1H26 189 H262 189:2H26 189 H361 189:1H36 189 H362 189:2H36 189 H451 189:1H45 189 H452 189:2H45 189 H453 189:3H45 189 H441 189:1H44 189 H442 189:2H44 189 H443 189:3H44 189 H241 189:1H24 189 H242 189:2H24 189 H221 189:1H22 189 H222 189:2H22 189 H161 189:1H16 189 H162 189:2H16 189 H163 189:3H16 189 H191 189:1H19 189 H192 189:2H19 189 H181 189:1H18 189 H182 189:2H18 189 H183 189:3H18 189 H281 189:1H28 189 H282 189:2H28 189 H361 18C:1H36 18C H362 18C:2H36 18C H363 18C:3H36 18C H351 18C:1H35 18C H352 18C:2H35 18C H341 18C:1H34 18C H342 18C:2H34 18C H331 18C:1H33 18C H332 18C:2H33 18C H321 18C:1H32 18C H322 18C:2H32 18C H311 18C:1H31 18C H312 18C:2H31 18C H301 18C:1H30 18C H302 18C:2H30 18C H291 18C:1H29 18C H292 18C:2H29 18C H281 18C:1H28 18C H282 18C:2H28 18C H271 18C:1H27 18C H272 18C:2H27 18C H261 18C:1H26 18C H262 18C:2H26 18C H251 18C:1H25 18C H252 18C:2H25 18C H241 18C:1H24 18C H242 18C:2H24 18C H231 18C:1H23 18C H232 18C:2H23 18C H221 18C:1H22 18C H222 18C:2H22 18C H211 18C:1H21 18C H212 18C:2H21 18C H201 18C:1H20 18C H202 18C:2H20 18C H11 18C:1H1 18C H12 18C:2H1 18C H61 18C:1H6 18C H62 18C:2H6 18C H71 18C:1H7 18C H72 18C:2H7 18C H81 18C:1H8 18C H82 18C:2H8 18C H91 18C:1H9 18C H92 18C:2H9 18C H101 18C:1H10 18C H102 18C:2H10 18C H111 18C:1H11 18C H112 18C:2H11 18C H121 18C:1H12 18C H122 18C:2H12 18C H131 18C:1H13 18C H132 18C:2H13 18C H141 18C:1H14 18C H142 18C:2H14 18C H151 18C:1H15 18C H152 18C:2H15 18C H161 18C:1H16 18C H162 18C:2H16 18C H171 18C:1H17 18C H172 18C:2H17 18C H181 18C:1H18 18C H182 18C:2H18 18C H183 18C:3H18 18C H81 190:1H8 190 H82 190:2H8 190 H83 190:3H8 190 H71 190:1H7 190 H72 190:2H7 190 H73 190:3H7 190 H101 190:1H10 190 H102 190:2H10 190 H161 190:1H16 190 H162 190:2H16 190 H241 190:1H24 190 H242 190:2H24 190 H261 190:1H26 190 H262 190:2H26 190 H281 190:1H28 190 H282 190:2H28 190 H283 190:3H28 190 H291 190:1H29 190 H292 190:2H29 190 H293 190:3H29 190 H31 191:1H3 191 H32A 191:2H3 191 H33A 191:3H3 191 H21 191:1H2 191 H22A 191:2H2 191 H51 191:1H5 191 H52 191:2H5 191 H61 191:1H6 191 H62 191:2H6 191 H91 191:1H9 191 H92 191:2H9 191 H101 191:1H10 191 H102 191:2H10 191 H171 191:1H17 191 H172 191:2H17 191 H173 191:3H17 191 H181 191:1H18 191 H182 191:2H18 191 H183 191:3H18 191 H191 191:1H19 191 H192 191:2H19 191 H5'1 191:1H5* 191 H5'2 191:2H5* 191 H4' 191: H4* 191 H3' 191: H3* 191 H2' 191: H2* 191 HO'2 191:2HO* 191 H1' 191: H1* 191 H411 191:1H41 191 H412 191:2H41 191 HB11 192:1HB1 192 HB12 192:2HB1 192 HG1 192:1HG 192 HG2 192:2HG 192 HB21 192:1HB2 192 HB22 192:2HB2 192 HB2 193:2HB 193 HB1 193:1HB 193 HG2 193:2HG 193 HG1 193:1HG 193 HZ2 193:2HZ 193 HZ1 193:1HZ 193 HT2 193:2HT 193 HT1 193:1HT 193 H71A 197:1H7 197 H72 197:2H7 197 H131 197:1H13 197 H132 197:2H13 197 H133 197:3H13 197 H171 197:1H17 197 H172 197:2H17 197 H181 197:1H18 197 H182 197:2H18 197 H191 197:1H19 197 H192 197:2H19 197 H201 197:1H20 197 H202 197:2H20 197 H231 197:1H23 197 H232 197:2H23 197 H131 198:1H13 198 H132 198:2H13 198 H121 198:1H12 198 H122 198:2H12 198 H123 198:3H12 198 H251 199:1H25 199 H252 199:2H25 199 H261 199:1H26 199 H262 199:2H26 199 H281 199:1H28 199 H282 199:2H28 199 H291 199:1H29 199 H292 199:2H29 199 H311 199:1H31 199 H312 199:2H31 199 H313 199:3H31 199 H11 19A:1H1 19A H12 19A:2H1 19A H13 19A:3H1 19A H31 19A:1H3 19A H32 19A:2H3 19A H33 19A:3H3 19A H81 1A2:1H8 1A2 H82 1A2:2H8 1A2 H111 1A2:1H11 1A2 H112 1A2:2H11 1A2 H121 1A2:1H12 1A2 H122 1A2:2H12 1A2 H141 1A2:1H14 1A2 H142 1A2:2H14 1A2 H151 1A2:1H15 1A2 H152 1A2:2H15 1A2 H181 1A2:1H18 1A2 H182 1A2:2H18 1A2 H231 1A2:1H23 1A2 H232 1A2:2H23 1A2 H241 1A2:1H24 1A2 H242 1A2:2H24 1A2 H131 1A2:1H13 1A2 H132 1A2:2H13 1A2 H133 1A2:3H13 1A2 HN31 1AA:1HN3 1AA HN32 1AA:2HN3 1AA H8' 1AA: H8* 1AA H7' 1AA: H7* 1AA H4' 1AA: H4* 1AA H61 1AA:1H6 1AA H62 1AA:2H6 1AA H71 1AA:1H7 1AA H72 1AA:2H7 1AA H81 1AA:1H8 1AA H82 1AA:2H8 1AA H2' 1AA: H2* 1AA H3' 1AA: H3* 1AA H5' 1AA: H5* 1AA HN11 1AA:1HN1 1AA HN12 1AA:2HN1 1AA H21 1AB:1H2 1AB H22 1AB:2H2 1AB H61 1AB:1H6 1AB H62 1AB:2H6 1AB H31 1AC:1H3 1AC H32 1AC:2H3 1AC H41 1AC:1H4 1AC H42 1AC:2H4 1AC H11 1AC:1H1 1AC H12 1AC:2H1 1AC H51 1AD:1H5 1AD H52 1AD:2H5 1AD H71 1AD:1H7 1AD H72 1AD:2H7 1AD H81 1AD:1H8 1AD H82 1AD:2H8 1AD H121 1AD:1H12 1AD H122 1AD:2H12 1AD H141 1AD:1H14 1AD H142 1AD:2H14 1AD H151 1AD:1H15 1AD H152 1AD:2H15 1AD H153 1AD:3H15 1AD H161 1AD:1H16 1AD H162 1AD:2H16 1AD H171 1AD:1H17 1AD H172 1AD:2H17 1AD H181 1AD:1H18 1AD H182 1AD:2H18 1AD H191 1AD:1H19 1AD H192 1AD:2H19 1AD H11 1AE:1H1 1AE H12 1AE:2H1 1AE H13 1AE:3H1 1AE H21 1AE:1H2 1AE H22 1AE:2H2 1AE H31 1AE:1H3 1AE H32 1AE:2H3 1AE H62 1AE:2H6 1AE H41 1AF:1H4 1AF H42 1AF:2H4 1AF H43 1AF:3H4 1AF H51 1AF:1H5 1AF H52 1AF:2H5 1AF H53 1AF:3H5 1AF H61 1AF:1H6 1AF H62 1AF:2H6 1AF H63 1AF:3H6 1AF H321 1AH:1H32 1AH H322 1AH:2H32 1AH H7C1 1AH:1H7C 1AH H7C2 1AH:2H7C 1AH H7C3 1AH:3H7C 1AH H4C1 1AH:1H4C 1AH H4C2 1AH:2H4C 1AH H221 1AH:1H22 1AH H222 1AH:2H22 1AH H581 1AH:1H58 1AH H582 1AH:2H58 1AH H431 1AH:1H43 1AH H432 1AH:2H43 1AH H433 1AH:3H43 1AH H441 1AH:1H44 1AH H442 1AH:2H44 1AH H443 1AH:3H44 1AH H861 1AH:1H86 1AH H862 1AH:2H86 1AH H863 1AH:3H86 1AH HN31 1AL:1HN3 1AL HN32 1AL:2HN3 1AL H111 1AL:1H11 1AL H112 1AL:2H11 1AL HN1 1AN:1HN 1AN HN2 1AN:2HN 1AN H81 1AP:1H8 1AP HN21 1AP:1HN2 1AP HN22 1AP:2HN2 1AP HN61 1AP:1HN6 1AP HN62 1AP:2HN6 1AP H52 1AP:2H5 1AP H51 1AP:1H5 1AP H11 1AP:1H1 1AP H21 1AP:1H2 1AP H22 1AP:2H2 1AP H31 1AP:1H3 1AP HO31 1AP:1HO3 1AP H21 1AR:1H2 1AR H22 1AR:2H2 1AR H61 1AR:1H6 1AR H62 1AR:2H6 1AR H63 1AR:3H6 1AR H81 1BA:1H8 1BA H82 1BA:2H8 1BA H11A 1BA:1H1 1BA H12A 1BA:2H1 1BA H13 1BA:3H1 1BA H31 1BA:1H3 1BA H32 1BA:2H3 1BA H33 1BA:3H3 1BA H11 1BH:1H1 1BH H12 1BH:2H1 1BH H411 1BH:1H41 1BH H412 1BH:2H41 1BH H413 1BH:3H41 1BH HD1 1BH:1HD 1BH HD2 1BH:2HD 1BH H611 1BH:1H61 1BH H612 1BH:2H61 1BH HG1 1BH:1HG 1BH HG2 1BH:2HG 1BH H811 1BH:1H81 1BH H812 1BH:2H81 1BH HC1 1BH:1HC 1BH HC2 1BH:2HC 1BH HC3 1BH:3HC 1BH H191 1BM:1H19 1BM H192 1BM:2H19 1BM H193 1BM:3H19 1BM H271 1BM:1H27 1BM H272 1BM:2H27 1BM H301 1BM:1H30 1BM H302 1BM:2H30 1BM H361 1BM:1H36 1BM H362 1BM:2H36 1BM H421 1BM:1H42 1BM H422 1BM:2H42 1BM H423 1BM:3H42 1BM H351 1BM:1H35 1BM H352 1BM:2H35 1BM H381 1BM:1H38 1BM H382 1BM:2H38 1BM H383 1BM:3H38 1BM H41 1BN:1H4 1BN H42 1BN:2H4 1BN H11 1BO:1H1 1BO H12 1BO:2H1 1BO H13 1BO:3H1 1BO H21 1BO:1H2 1BO H22 1BO:2H2 1BO H31 1BO:1H3 1BO H32 1BO:2H3 1BO H41 1BO:1H4 1BO H42 1BO:2H4 1BO H11 1BP:1H1 1BP H12 1BP:2H1 1BP H21 1BP:1H2 1BP H31 1BP:1H3 1BP H32 1BP:2H3 1BP H33 1BP:3H3 1BP HO21 1BP:1HO2 1BP H21 1BY:1H2 1BY H22 1BY:2H2 1BY H121 1C2:1H12 1C2 H122 1C2:2H12 1C2 H111 1C2:1H11 1C2 H112 1C2:2H11 1C2 H113 1C2:3H11 1C2 H101 1C2:1H10 1C2 H102 1C2:2H10 1C2 H103 1C2:3H10 1C2 H91 1C2:1H9 1C2 H92 1C2:2H9 1C2 H93 1C2:3H9 1C2 H61 1C2:1H6 1C2 H62 1C2:2H6 1C2 H63 1C2:3H6 1C2 H31 1C2:1H3 1C2 H32 1C2:2H3 1C2 H11 1C5:1H1 1C5 H12A 1C5:2H1 1C5 H21A 1C5:1H2 1C5 H22 1C5:2H2 1C5 H31 1C5:1H3 1C5 H32 1C5:2H3 1C5 H51 1C5:1H5 1C5 H52 1C5:2H5 1C5 H61 1C5:1H6 1C5 H62 1C5:2H6 1C5 H71 1C5:1H7 1C5 H72 1C5:2H7 1C5 H81 1C5:1H8 1C5 H82 1C5:2H8 1C5 H131 1C5:1H13 1C5 H132 1C5:2H13 1C5 H141 1C5:1H14 1C5 H142 1C5:2H14 1C5 H181 1C5:1H18 1C5 H182 1C5:2H18 1C5 H261 1C5:1H26 1C5 H262 1C5:2H26 1C5 H263 1C5:3H26 1C5 HN11 1C5:1HN1 1C5 HN12 1C5:2HN1 1C5 HOP2 1C5:2HOP 1C5 HOP3 1C5:3HOP 1C5 H11 1CA:1H1 1CA H12 1CA:2H1 1CA H21 1CA:1H2 1CA H22 1CA:2H2 1CA H61 1CA:1H6 1CA H62 1CA:2H6 1CA H71 1CA:1H7 1CA H72 1CA:2H7 1CA H111 1CA:1H11 1CA H112 1CA:2H11 1CA H121 1CA:1H12 1CA H122 1CA:2H12 1CA H151 1CA:1H15 1CA H152 1CA:2H15 1CA H161 1CA:1H16 1CA H162 1CA:2H16 1CA H181 1CA:1H18 1CA H182 1CA:2H18 1CA H183 1CA:3H18 1CA H191 1CA:1H19 1CA H192 1CA:2H19 1CA H193 1CA:3H19 1CA H211 1CA:1H21 1CA H212 1CA:2H21 1CA H21 1CB:1H2 1CB H22 1CB:2H2 1CB H41 1CB:1H4 1CB H42 1CB:2H4 1CB H51 1CB:1H5 1CB H52 1CB:2H5 1CB H31 1CB:1H3 1CB H32 1CB:2H3 1CB HN21 1CB:1HN2 1CB HN22 1CB:2HN2 1CB H11A 1CD:1H1 1CD H12 1CD:2H1 1CD H13A 1CD:3H1 1CD H31 1CD:1H3 1CD H32 1CD:2H3 1CD H51 1CD:1H5 1CD H52 1CD:2H5 1CD H281 1CD:1H28 1CD H282 1CD:2H28 1CD H301 1CD:1H30 1CD H302 1CD:2H30 1CD H361 1CM:1H36 1CM H362 1CM:2H36 1CM H351 1CM:1H35 1CM H352 1CM:2H35 1CM H353 1CM:3H35 1CM HN11 1CN:1HN1 1CN HN12 1CN:2HN1 1CN HN51 1CN:1HN5 1CN HN52 1CN:2HN5 1CN H421 1CP:1H42 1CP H422 1CP:2H42 1CP H411 1CP:1H41 1CP H412 1CP:2H41 1CP H7A1 1CP:1H7A 1CP H7A2 1CP:2H7A 1CP H7A3 1CP:3H7A 1CP H101 1CP:1H10 1CP H102 1CP:2H10 1CP H51 1CP:1H5 1CP H52 1CP:2H5 1CP H311 1CP:1H31 1CP H312 1CP:2H31 1CP H321 1CP:1H32 1CP H322 1CP:2H32 1CP H2A1 1CP:1H2A 1CP H2A2 1CP:2H2A 1CP H2A3 1CP:3H2A 1CP H201 1CP:1H20 1CP H202 1CP:2H20 1CP H611 1CP:1H61 1CP H612 1CP:2H61 1CP H621 1CP:1H62 1CP H622 1CP:2H62 1CP H861 1CP:1H86 1CP H862 1CP:2H86 1CP H863 1CP:3H86 1CP H151 1CP:1H15 1CP H152 1CP:2H15 1CP H811 1CP:1H81 1CP H812 1CP:2H81 1CP H813 1CP:3H81 1CP H911 1CP:1H91 1CP H912 1CP:2H91 1CP H921 1CP:1H92 1CP H922 1CP:2H92 1CP H5'1 1CS:1H5' 1CS H5'2 1CS:2H5' 1CS H5'3 1CS:3H5' 1CS H7'1 1CS:1H7' 1CS H7'2 1CS:2H7' 1CS H7'3 1CS:3H7' 1CS HO11 1CU:1HO1 1CU HO12 1CU:2HO1 1CU HO5' 1DA:*HO5 1DA H5'1 1DA:1H5* 1DA H5'2 1DA:2H5* 1DA H4' 1DA: H4* 1DA H3' 1DA: H3* 1DA HO3' 1DA:*HO3 1DA H2' 1DA: H2* 1DA HO2' 1DA:*HO2 1DA H1' 1DA: H1* 1DA HN61 1DA:1HN6 1DA HN62 1DA:2HN6 1DA H1C1 1DB:1H1C 1DB H1C2 1DB:2H1C 1DB H2C1 1DB:1H2C 1DB H2C2 1DB:2H2C 1DB H3C1 1DB:1H3C 1DB H3C2 1DB:2H3C 1DB H4C1 1DB:1H4C 1DB H4C2 1DB:2H4C 1DB H5C1 1DB:1H5C 1DB H5C2 1DB:2H5C 1DB H6C1 1DB:1H6C 1DB H6C2 1DB:2H6C 1DB H7C1 1DB:1H7C 1DB H7C2 1DB:2H7C 1DB H8C1 1DB:1H8C 1DB H8C2 1DB:2H8C 1DB H9C1 1DB:1H9C 1DB H9C2 1DB:2H9C 1DB H101 1DB:1H10 1DB H102 1DB:2H10 1DB H103 1DB:3H10 1DB HAA1 1DG:1HAA 1DG HAA2 1DG:2HAA 1DG H1' 1DG: H1* 1DG H2' 1DG: H2* 1DG H3' 1DG: H3* 1DG H4' 1DG: H4* 1DG H5'1 1DG:1H5* 1DG H5'2 1DG:2H5* 1DG HAY1 1DG:1HAY 1DG HAY2 1DG:2HAY 1DG H6N1 1DG:1H6N 1DG H6N2 1DG:2H6N 1DG H211 1DM:1H21 1DM H212 1DM:2H21 1DM H221 1DM:1H22 1DM H222 1DM:2H22 1DM H231 1DM:1H23 1DM H232 1DM:2H23 1DM H241 1DM:1H24 1DM H242 1DM:2H24 1DM H201 1DM:1H20 1DM H202 1DM:2H20 1DM H301 1DM:1H30 1DM H302 1DM:2H30 1DM H251 1DM:1H25 1DM H252 1DM:2H25 1DM H261 1DM:1H26 1DM H262 1DM:2H26 1DM H271 1DM:1H27 1DM H272 1DM:2H27 1DM H281 1DM:1H28 1DM H282 1DM:2H28 1DM H61 1DM:1H6 1DM H62 1DM:2H6 1DM H1C1 1DO:1H1C 1DO H1C2 1DO:2H1C 1DO H2C1 1DO:1H2C 1DO H2C2 1DO:2H2C 1DO H3C1 1DO:1H3C 1DO H3C2 1DO:2H3C 1DO H4C1 1DO:1H4C 1DO H4C2 1DO:2H4C 1DO H5C1 1DO:1H5C 1DO H5C2 1DO:2H5C 1DO H6C1 1DO:1H6C 1DO H6C2 1DO:2H6C 1DO H7C1 1DO:1H7C 1DO H7C2 1DO:2H7C 1DO H8C1 1DO:1H8C 1DO H8C2 1DO:2H8C 1DO H9C1 1DO:1H9C 1DO H9C2 1DO:2H9C 1DO H101 1DO:1H10 1DO H102 1DO:2H10 1DO H111 1DO:1H11 1DO H112 1DO:2H11 1DO H121 1DO:1H12 1DO H122 1DO:2H12 1DO H123 1DO:3H12 1DO H121 1EM:1H12 1EM H122 1EM:2H12 1EM H131 1EM:1H13 1EM H132 1EM:2H13 1EM H141 1EM:1H14 1EM H142 1EM:2H14 1EM H151 1EM:1H15 1EM H152 1EM:2H15 1EM H161 1EM:1H16 1EM H162 1EM:2H16 1EM H171 1EM:1H17 1EM H172 1EM:2H17 1EM H181 1EM:1H18 1EM H182 1EM:2H18 1EM H191 1EM:1H19 1EM H192 1EM:2H19 1EM H193 1EM:3H19 1EM H221 1EM:1H22 1EM H222 1EM:2H22 1EM H231 1EM:1H23 1EM H232 1EM:2H23 1EM H241 1EM:1H24 1EM H242 1EM:2H24 1EM H251 1EM:1H25 1EM H252 1EM:2H25 1EM H261 1EM:1H26 1EM H262 1EM:2H26 1EM H271 1EM:1H27 1EM H272 1EM:2H27 1EM H281 1EM:1H28 1EM H282 1EM:2H28 1EM H291 1EM:1H29 1EM H292 1EM:2H29 1EM H301 1EM:1H30 1EM H302 1EM:2H30 1EM H311 1EM:1H31 1EM H312 1EM:2H31 1EM H321 1EM:1H32 1EM H322 1EM:2H32 1EM H331 1EM:1H33 1EM H332 1EM:2H33 1EM H341 1EM:1H34 1EM H342 1EM:2H34 1EM H343 1EM:3H34 1EM H411 1EM:1H41 1EM H412 1EM:2H41 1EM H431 1EM:1H43 1EM H432 1EM:2H43 1EM H91 1FA:1H9 1FA H92 1FA:2H9 1FA H111 1FA:1H11 1FA H112 1FA:2H11 1FA H121 1FA:1H12 1FA H122 1FA:2H12 1FA H141 1FA:1H14 1FA H142 1FA:2H14 1FA H151 1FA:1H15 1FA H152 1FA:2H15 1FA H351 1FA:1H35 1FA H352 1FA:2H35 1FA H361 1FA:1H36 1FA H362 1FA:2H36 1FA H371 1FA:1H37 1FA H372 1FA:2H37 1FA H391 1FA:1H39 1FA H392 1FA:2H39 1FA HAA1 1FH:1HAA 1FH HAA2 1FH:2HAA 1FH HMA1 1FH:1HMA 1FH HMA2 1FH:2HMA 1FH HMA3 1FH:3HMA 1FH HBA1 1FH:1HBA 1FH HBA2 1FH:2HBA 1FH HMB1 1FH:1HMB 1FH HMB2 1FH:2HMB 1FH HMB3 1FH:3HMB 1FH HBB1 1FH:1HBB 1FH HBB2 1FH:2HBB 1FH HMC1 1FH:1HMC 1FH HMC2 1FH:2HMC 1FH HMC3 1FH:3HMC 1FH HBC1 1FH:1HBC 1FH HBC2 1FH:2HBC 1FH HMD1 1FH:1HMD 1FH HMD2 1FH:2HMD 1FH HMD3 1FH:3HMD 1FH HAD1 1FH:1HAD 1FH HAD2 1FH:2HAD 1FH HBD1 1FH:1HBD 1FH HBD2 1FH:2HBD 1FH H21 1GL:1H2 1GL H22 1GL:2H2 1GL H61 1GL:1H6 1GL H62 1GL:2H6 1GL H63 1GL:3H6 1GL HN21 1GN:1HN2 1GN HN22 1GN:2HN2 1GN H61 1GN:1H6 1GN H62 1GN:2H6 1GN H31 1GP:1H3 1GP H32 1GP:2H3 1GP H11 1GP:1H1 1GP H12 1GP:2H1 1GP HN31 1IG:1HN3 1IG HN32 1IG:2HN3 1IG HN41 1IG:1HN4 1IG HN42 1IG:2HN4 1IG H51 1IG:1H5 1IG H52 1IG:2H5 1IG H61 1IG:1H6 1IG H62 1IG:2H6 1IG H63 1IG:3H6 1IG H161 1IG:1H16 1IG H162 1IG:2H16 1IG H171 1IG:1H17 1IG H172 1IG:2H17 1IG H191 1IG:1H19 1IG H192 1IG:2H19 1IG H193 1IG:3H19 1IG H211 1IG:1H21 1IG H212 1IG:2H21 1IG H213 1IG:3H21 1IG H201 1IG:1H20 1IG H202 1IG:2H20 1IG H203 1IG:3H20 1IG H11A 1IN:1H1 1IN H12 1IN:2H1 1IN H71 1IN:1H7 1IN H72 1IN:2H7 1IN H73 1IN:3H7 1IN H81 1IN:1H8 1IN H82 1IN:2H8 1IN H91 1IN:1H9 1IN H92 1IN:2H9 1IN H101 1IN:1H10 1IN H102 1IN:2H10 1IN H121 1IN:1H12 1IN H122 1IN:2H12 1IN H141 1IN:1H14 1IN H142 1IN:2H14 1IN H241 1IN:1H24 1IN H242 1IN:2H24 1IN H271 1IN:1H27 1IN H272 1IN:2H27 1IN H51 1IN:1H5 1IN H52 1IN:2H5 1IN H53 1IN:3H5 1IN H61 1IN:1H6 1IN H62 1IN:2H6 1IN H63 1IN:3H6 1IN H251 1IN:1H25 1IN H252 1IN:2H25 1IN H291 1IN:1H29 1IN H292 1IN:2H29 1IN H293 1IN:3H29 1IN H261 1IN:1H26 1IN H262 1IN:2H26 1IN HAJ1 1IP:1HAJ 1IP HAJ2 1IP:2HAJ 1IP HB1 1IP:1HB 1IP HB2 1IP:2HB 1IP HD21 1IP:1HD2 1IP HD22 1IP:2HD2 1IP H71 1IQ:1H7 1IQ H72 1IQ:2H7 1IQ H73 1IQ:3H7 1IQ H101 1IQ:1H10 1IQ H102 1IQ:2H10 1IQ H103 1IQ:3H10 1IQ H91 1IQ:1H9 1IQ H92 1IQ:2H9 1IQ H93 1IQ:3H9 1IQ H41 1LG:1H4 1LG H42 1LG:2H4 1LG H81 1LG:1H8 1LG H82 1LG:2H8 1LG H281 1LG:1H28 1LG H282 1LG:2H28 1LG H91 1LG:1H9 1LG H92 1LG:2H9 1LG H121 1LG:1H12 1LG H122 1LG:2H12 1LG H271 1LG:1H27 1LG H272 1LG:2H27 1LG H291 1LG:1H29 1LG H292 1LG:2H29 1LG H301 1LG:1H30 1LG H302 1LG:2H30 1LG H1C1 1LP:1H1C 1LP H3C1 1LP:1H3C 1LP H3C2 1LP:2H3C 1LP H3C3 1LP:3H3C 1LP HB1 1LU:1HB 1LU HB2 1LU:2HB 1LU HD11 1LU:1HD1 1LU HD12 1LU:2HD1 1LU HD13 1LU:3HD1 1LU HD21 1LU:1HD2 1LU HD22 1LU:2HD2 1LU HD23 1LU:3HD2 1LU HOP2 1MA:2HOP 1MA HOP3 1MA:3HOP 1MA H5' 1MA:1H5* 1MA H5'' 1MA:2H5* 1MA H4' 1MA: H4* 1MA H3' 1MA: H3* 1MA HO3' 1MA:*HO3 1MA H2' 1MA: H2* 1MA HO2' 1MA:*HO2 1MA H1' 1MA: H1* 1MA HN61 1MA:1HN6 1MA HN62 1MA:2HN6 1MA HM11 1MA:1HM1 1MA HM12 1MA:2HM1 1MA HM13 1MA:3HM1 1MA H11 1MC:1H1 1MC H12 1MC:2H1 1MC H13 1MC:3H1 1MC HN41 1MC:1HN4 1MC HN42 1MC:2HN4 1MC HOP2 1MG:2HOP 1MG HOP3 1MG:3HOP 1MG H5' 1MG:1H5* 1MG H5'' 1MG:2H5* 1MG H4' 1MG: H4* 1MG H3' 1MG: H3* 1MG HO3' 1MG:*HO3 1MG H2' 1MG: H2* 1MG HO2' 1MG:*HO2 1MG H1' 1MG: H1* 1MG HM11 1MG:1HM1 1MG HM12 1MG:2HM1 1MG HM13 1MG:3HM1 1MG HN21 1MG:1HN2 1MG HN22 1MG:2HN2 1MG H131 1MM:1H13 1MM H132 1MM:2H13 1MM H133 1MM:3H13 1MM H5'1 1MM:1H5' 1MM H5'2 1MM:2H5' 1MM H5'3 1MM:3H5' 1MM H7'1 1MM:1H7' 1MM H7'2 1MM:2H7' 1MM H7'3 1MM:3H7' 1MM H291 1MP:1H29 1MP H292 1MP:2H29 1MP H281 1MP:1H28 1MP H282 1MP:2H28 1MP HAA1 1MR:1HAA 1MR HAA2 1MR:2HAA 1MR HAA3 1MR:3HAA 1MR HM11 1MZ:1HM1 1MZ HM12 1MZ:2HM1 1MZ HM13 1MZ:3HM1 1MZ H101 1N1:1H10 1N1 H102 1N1:2H10 1N1 H103 1N1:3H10 1N1 H151 1N1:1H15 1N1 H152 1N1:2H15 1N1 H153 1N1:3H15 1N1 H161 1N1:1H16 1N1 H162 1N1:2H16 1N1 H191 1N1:1H19 1N1 H192 1N1:2H19 1N1 H201 1N1:1H20 1N1 H202 1N1:2H20 1N1 H211 1N1:1H21 1N1 H212 1N1:2H21 1N1 H171 1N1:1H17 1N1 H172 1N1:2H17 1N1 H181 1N1:1H18 1N1 H182 1N1:2H18 1N1 H251 1N8:1H25 1N8 H252 1N8:2H25 1N8 H253 1N8:3H25 1N8 H271 1N8:1H27 1N8 H272 1N8:2H27 1N8 H281 1N8:1H28 1N8 H282 1N8:2H28 1N8 H291 1N8:1H29 1N8 H292 1N8:2H29 1N8 H301 1N8:1H30 1N8 H302 1N8:2H30 1N8 H303 1N8:3H30 1N8 H51 1N8:1H5 1N8 H52 1N8:2H5 1N8 H53 1N8:3H5 1N8 H11 1N8:1H1 1N8 H12A 1N8:2H1 1N8 H13 1N8:3H1 1N8 H311 1N9:1H31 1N9 H312 1N9:2H31 1N9 H313 1N9:3H31 1N9 H321 1N9:1H32 1N9 H322 1N9:2H32 1N9 H323 1N9:3H32 1N9 H331 1N9:1H33 1N9 H332 1N9:2H33 1N9 H333 1N9:3H33 1N9 H361 1N9:1H36 1N9 H362 1N9:2H36 1N9 H363 1N9:3H36 1N9 H371 1N9:1H37 1N9 H372 1N9:2H37 1N9 H373 1N9:3H37 1N9 H71 1N9:1H7 1N9 H72 1N9:2H7 1N9 H81 1N9:1H8 1N9 H82 1N9:2H8 1N9 H351 1N9:1H35 1N9 H352 1N9:2H35 1N9 H341 1N9:1H34 1N9 H342 1N9:2H34 1N9 H343 1N9:3H34 1N9 H11 1N9:1H1 1N9 H12 1N9:2H1 1N9 H31 1N9:1H3 1N9 H32 1N9:2H3 1N9 H41 1N9:1H4 1N9 H42 1N9:2H4 1N9 H61 1N9:1H6 1N9 H62 1N9:2H6 1N9 H21 1N9:1H2 1N9 H22 1N9:2H2 1N9 H23 1N9:3H2 1N9 H61 1NA:1H6 1NA H62 1NA:2H6 1NA H81 1NA:1H8 1NA H82 1NA:2H8 1NA H83 1NA:3H8 1NA HM1 1NA:1HM 1NA HM2 1NA:2HM 1NA HM3 1NA:3HM 1NA H91 1NB:1H9 1NB H92 1NB:2H9 1NB H261 1NB:1H26 1NB H262 1NB:2H26 1NB H271 1NB:1H27 1NB H272 1NB:2H27 1NB H281 1NB:1H28 1NB H282 1NB:2H28 1NB H191 1NB:1H19 1NB H192 1NB:2H19 1NB H61 1NC:1H6 1NC H62 1NC:2H6 1NC H63 1NC:3H6 1NC H151 1NC:1H15 1NC H152 1NC:2H15 1NC H271 1NC:1H27 1NC H272 1NC:2H27 1NC H41 1NH:1H4 1NH H42 1NH:2H4 1NH H43 1NH:3H4 1NH H31 1NH:1H3 1NH H32 1NH:2H3 1NH H51 1NH:1H5 1NH H52 1NH:2H5 1NH H81 1NH:1H8 1NH H82 1NH:2H8 1NH H83 1NH:3H8 1NH H91 1NH:1H9 1NH H92 1NH:2H9 1NH H111 1NH:1H11 1NH H112 1NH:2H11 1NH H101 1NH:1H10 1NH H102 1NH:2H10 1NH H11 1NI:1H1 1NI H12 1NI:2H1 1NI H13A 1NI:3H1 1NI H241 1NI:1H24 1NI H242 1NI:2H24 1NI H243 1NI:3H24 1NI H301 1NI:1H30 1NI H302 1NI:2H30 1NI H303 1NI:3H30 1NI H311 1NI:1H31 1NI H312 1NI:2H31 1NI H313 1NI:3H31 1NI H331 1NI:1H33 1NI H332 1NI:2H33 1NI H61 1NI:1H6 1NI H62 1NI:2H6 1NI H251 1NI:1H25 1NI H252 1NI:2H25 1NI H253 1NI:3H25 1NI H281 1NI:1H28 1NI H282 1NI:2H28 1NI H391 1NI:1H39 1NI H392 1NI:2H39 1NI H401 1NI:1H40 1NI H402 1NI:2H40 1NI H403 1NI:3H40 1NI H451 1NI:1H45 1NI H452 1NI:2H45 1NI HN1 1NI:1HN 1NI HN2 1NI:2HN 1NI HI31 1NT:1HI3 1NT HI32 1NT:2HI3 1NT HA51 1NT:1HA5 1NT HA52 1NT:2HA5 1NT H2C1 1P3:1H2C 1P3 H2C2 1P3:2H2C 1P3 H2C3 1P3:3H2C 1P3 H201 1P3:1H20 1P3 H202 1P3:2H20 1P3 H4C1 1P3:1H4C 1P3 H4C2 1P3:2H4C 1P3 H5C1 1P3:1H5C 1P3 H5C2 1P3:2H5C 1P3 H6C1 1P3:1H6C 1P3 H6C2 1P3:2H6C 1P3 H7C1 1P3:1H7C 1P3 H7C2 1P3:2H7C 1P3 H7C3 1P3:3H7C 1P3 H 1PA:1HN 1PA H2 1PA:2HN 1PA HB2 1PA:1HB 1PA HB3 1PA:2HB 1PA HH2 1PA:1HH 1PA HH3 1PA:2HH 1PA HCC1 1PB:1HCC 1PB HCC2 1PB:2HCC 1PB HDC1 1PB:1HDC 1PB HDC2 1PB:2HDC 1PB HP1 1PC:1HP 1PC HP2 1PC:2HP 1PC HH1 1PC:1HH 1PC HH2 1PC:2HH 1PC HI1 1PC:1HI 1PC HI2 1PC:2HI 1PC HJ1 1PC:1HJ 1PC HJ2 1PC:2HJ 1PC HK1 1PC:1HK 1PC HK2 1PC:2HK 1PC HL1 1PC:1HL 1PC HL2 1PC:2HL 1PC HN1 1PC:1HN 1PC HN2 1PC:2HN 1PC HO1 1PC:1HO 1PC HO2 1PC:2HO 1PC HQ1 1PC:1HQ 1PC HQ2 1PC:2HQ 1PC HR1 1PC:1HR 1PC HR2 1PC:2HR 1PC H121 1PE:1H12 1PE H122 1PE:2H12 1PE H221 1PE:1H22 1PE H222 1PE:2H22 1PE H131 1PE:1H13 1PE H132 1PE:2H13 1PE H231 1PE:1H23 1PE H232 1PE:2H23 1PE H141 1PE:1H14 1PE H142 1PE:2H14 1PE H241 1PE:1H24 1PE H242 1PE:2H24 1PE H151 1PE:1H15 1PE H152 1PE:2H15 1PE H251 1PE:1H25 1PE H252 1PE:2H25 1PE H161 1PE:1H16 1PE H162 1PE:2H16 1PE H261 1PE:1H26 1PE H262 1PE:2H26 1PE H21 1PG:1H2 1PG H22 1PG:2H2 1PG H11 1PG:1H1 1PG H12 1PG:2H1 1PG H13 1PG:3H1 1PG H31 1PG:1H3 1PG H32 1PG:2H3 1PG H41 1PG:1H4 1PG H42 1PG:2H4 1PG H51 1PG:1H5 1PG H52 1PG:2H5 1PG H61 1PG:1H6 1PG H62 1PG:2H6 1PG H71 1PG:1H7 1PG H72 1PG:2H7 1PG H81 1PG:1H8 1PG H82 1PG:2H8 1PG H91 1PG:1H9 1PG H92 1PG:2H9 1PG H101 1PG:1H10 1PG H102 1PG:2H10 1PG H111 1PG:1H11 1PG H112 1PG:2H11 1PG H31 1PI:1H3 1PI H32 1PI:2H3 1PI HN1A 1PI:1HN 1PI HN2 1PI:2HN 1PI H171 1PI:1H17 1PI H172 1PI:2H17 1PI HD1 1PI:1HD 1PI HD2 1PI:2HD 1PI HG1 1PI:1HG 1PI HG2 1PI:2HG 1PI H11 1PI:1H1 1PI H12 1PI:2H1 1PI HN21 1PI:1HN2 1PI HN22 1PI:2HN2 1PI H301 1PM:1H30 1PM H302 1PM:2H30 1PM H303 1PM:3H30 1PM H311 1PM:1H31 1PM H312 1PM:2H31 1PM H361 1PM:1H36 1PM H362 1PM:2H36 1PM H481 1PM:1H48 1PM H482 1PM:2H48 1PM H121 1PN:1H12 1PN H122 1PN:2H12 1PN H131 1PN:1H13 1PN H132 1PN:2H13 1PN H141 1PN:1H14 1PN H142 1PN:2H14 1PN H143 1PN:3H14 1PN H161 1PN:1H16 1PN H162 1PN:2H16 1PN H163 1PN:3H16 1PN H201 1PN:1H20 1PN H202 1PN:2H20 1PN H203 1PN:3H20 1PN H151 1PP:1H15 1PP H152 1PP:2H15 1PP H153 1PP:3H15 1PP H141 1PP:1H14 1PP H142 1PP:2H14 1PP H143 1PP:3H14 1PP H131 1PP:1H13 1PP H132 1PP:2H13 1PP H133 1PP:3H13 1PP H5'1 1PR:1H5' 1PR H5'2 1PR:2H5' 1PR HO3' 1PR:'HO3 1PR HO2' 1PR:'HO2 1PR HN91 1PR:1HN9 1PR HN92 1PR:2HN9 1PR H71 1PR:1H7 1PR H72 1PR:2H7 1PR H'1 1PR:1H" 1PR H'2 1PR:2H" 1PR H2B 1PR: H2" 1PR H3B 1PR: H3" 1PR H4B 1PR: H4" 1PR H5A1 1PR:1H5" 1PR H5A2 1PR:2H5" 1PR H8B 1PR: H8" 1PR H9B 1PR: H9" 1PR H61 1PS:1H6 1PS H62 1PS:2H6 1PS H71 1PS:1H7 1PS H72 1PS:2H7 1PS H81 1PS:1H8 1PS H82 1PS:2H8 1PS H11 1PT:1H1 1PT H12 1PT:2H1 1PT H21 1PT:1H2 1PT H22 1PT:2H2 1PT H31 1PT:1H3 1PT H32 1PT:2H3 1PT H41 1PT:1H4 1PT H42 1PT:2H4 1PT H51 1PT:1H5 1PT H52 1PT:2H5 1PT H61 1PT:1H6 1PT H62 1PT:2H6 1PT H61 1PU:1H6 1PU H62 1PU:2H6 1PU H111 1PU:1H11 1PU H112 1PU:2H11 1PU H121 1PU:1H12 1PU H122 1PU:2H12 1PU HB1 1PY:1HB 1PY HB2 1PY:2HB 1PY HOP2 1RB:2HOP 1RB HOP3 1RB:3HOP 1RB H5'1 1RB:1H5* 1RB H5'2 1RB:2H5* 1RB H4' 1RB: H4* 1RB H3' 1RB: H3* 1RB HO23 1RB:3HO2 1RB H2' 1RB: H2* 1RB HO22 1RB:2HO2 1RB H1' 1RB: H1* 1RB HN11 1SA:1HN1 1SA HN12 1SA:2HN1 1SA HN41 1SA:1HN4 1SA HN42 1SA:2HN4 1SA H5'1 1SC:1H5* 1SC H5'2 1SC:2H5* 1SC H4' 1SC: H4* 1SC H3' 1SC: H3* 1SC HO3' 1SC:HO3* 1SC H2' 1SC: H2* 1SC HO2' 1SC:HO2* 1SC H1' 1SC: H1* 1SC HN41 1SC:1HN4 1SC HN42 1SC:2HN4 1SC H131 1SM:1H13 1SM H132 1SM:2H13 1SM H133 1SM:3H13 1SM H8'1 1SM:1H8' 1SM H8'2 1SM:2H8' 1SM H8'3 1SM:3H8' 1SM H7'1 1SM:1H7' 1SM H7'2 1SM:2H7' 1SM H7'3 1SM:3H7' 1SM HN11 1SQ:1HN1 1SQ HN12 1SQ:2HN1 1SQ H271 1ST:1H27 1ST H272 1ST:2H27 1ST H321 1ST:1H32 1ST H322 1ST:2H32 1ST H323 1ST:3H32 1ST H341 1ST:1H34 1ST H342 1ST:2H34 1ST H343 1ST:3H34 1ST H351 1ST:1H35 1ST H352 1ST:2H35 1ST H353 1ST:3H35 1ST H131 1TB:1H13 1TB H132 1TB:2H13 1TB H133 1TB:3H13 1TB H101 1TB:1H10 1TB H102 1TB:2H10 1TB H103 1TB:3H10 1TB H5'1 1TB:1H5' 1TB H5'2 1TB:2H5' 1TB H5'3 1TB:3H5' 1TB H7'1 1TB:1H7' 1TB H7'2 1TB:2H7' 1TB H7'3 1TB:3H7' 1TB H2A1 1TP:1H2A 1TP H2A2 1TP:2H2A 1TP H2A3 1TP:3H2A 1TP H4'1 1TP:1H4* 1TP H4'2 1TP:2H4* 1TP H6' 1TP: H6* 1TP H7'1 1TP:1H7* 1TP H7'2 1TP:2H7* 1TP H4A1 1TP:1H4A 1TP H4A2 1TP:2H4A 1TP H4A3 1TP:3H4A 1TP H5A1 1TP:1H5A 1TP H5A2 1TP:2H5A 1TP H5B1 1TP:1H5B 1TP H5B2 1TP:2H5B 1TP HO13 1TP:3HO1 1TP H6B1 1TP:1H6B 1TP HO23 1TP:3HO2 1TP H351 1TP:1H35 1TP H352 1TP:2H35 1TP H353 1TP:3H35 1TP H 1TQ:1HN 1TQ H2 1TQ:2HN 1TQ HB2 1TQ:1HB 1TQ HB3 1TQ:2HB 1TQ HE1 1TQ:HNE1 1TQ HXT 1TQ:HOXT 1TQ H 1TY:1HN 1TY H2 1TY:2HN 1TY HB2 1TY:1HB 1TY HB3 1TY:2HB 1TY HH 1TY: HOH 1TY H21 1TY:1H2 1TY H22 1TY:2H2 1TY H11 1TY:1H1 1TY H12 1TY:2H1 1TY H31A 1UN:1H3 1UN H32A 1UN:2H3 1UN H41 1UN:1H4 1UN H42 1UN:2H4 1UN H51 1UN:1H5 1UN H52 1UN:2H5 1UN H61 1UN:1H6 1UN H62 1UN:2H6 1UN H91 1UN:1H9 1UN H92 1UN:2H9 1UN H101 1UN:1H10 1UN H102 1UN:2H10 1UN H141 1UN:1H14 1UN H142 1UN:2H14 1UN H143 1UN:3H14 1UN H151 1UN:1H15 1UN H152 1UN:2H15 1UN H153 1UN:3H15 1UN H161 1UN:1H16 1UN H162 1UN:2H16 1UN H163 1UN:3H16 1UN H181 1UN:1H18 1UN H182 1UN:2H18 1UN H231 1UN:1H23 1UN H232 1UN:2H23 1UN H391 1UN:1H39 1UN H392 1UN:2H39 1UN H393 1UN:3H39 1UN H2 200:1HN 200 HB2 200:1HB 200 HB3 200:2HB 200 HD1 200:1HD1 200 HD2 200:1HD2 200 HE1 200:1HE1 200 HE2 200:1HE2 200 HN11 201:1HN1 201 HN12 201:2HN1 201 H11 204:1H1 204 H12 204:2H1 204 H13A 204:3H1 204 H21 204:1H2 204 H22 204:2H2 204 H101 204:1H10 204 H102 204:2H10 204 H11A 206:1H1 206 H12A 206:2H1 206 H221 206:1H22 206 H222 206:2H22 206 H141 206:1H14 206 H142 206:2H14 206 H261 206:1H26 206 H262 206:2H26 206 H271 206:1H27 206 H272 206:2H27 206 H282 206:2H28 206 H171 206:1H17 206 H172 206:2H17 206 H181 206:1H18 206 H182 206:2H18 206 H151 206:1H15 206 H152 206:2H15 206 H121 206:1H12 206 H122 206:2H12 206 H131 206:1H13 206 H132 206:2H13 206 HN11 206:1HN1 206 HN12 206:2HN1 206 H311 206:1H31 206 H312 206:2H31 206 H321 206:1H32 206 H322 206:2H32 206 H9C1 207:1H9C 207 H9C2 207:2H9C 207 H2N1 207:1H2N 207 H2N2 207:2H2N 207 H111 207:1H11 207 H112 207:2H11 207 H121 207:1H12 207 H122 207:2H12 207 H131 207:1H13 207 H132 207:2H13 207 H141 207:1H14 207 H142 207:2H14 207 H151 207:1H15 207 H152 207:2H15 207 H301 208:1H30 208 H302 208:2H30 208 H303 208:3H30 208 H281 208:1H28 208 H282 208:2H28 208 H191 208:1H19 208 H192 208:2H19 208 H91 208:1H9 208 H92 208:2H9 208 H261 208:1H26 208 H262 208:2H26 208 H263 208:3H26 208 H101 209:1H10 209 H102 209:2H10 209 H111 209:1H11 209 H112 209:2H11 209 H113 209:3H11 209 H151 209:1H15 209 H152 209:2H15 209 H153 209:3H15 209 H71 20S:1H7 20S H72 20S:2H7 20S H81 20S:1H8 20S H82 20S:2H8 20S H91 20S:1H9 20S H92 20S:2H9 20S H101 20S:1H10 20S H102 20S:2H10 20S H171 20S:1H17 20S H172 20S:2H17 20S H181 20S:1H18 20S H182 20S:2H18 20S H321 20S:1H32 20S H322 20S:2H32 20S H311 20S:1H31 20S H312 20S:2H31 20S H313 20S:3H31 20S H161 210:1H16 210 H162 210:2H16 210 H191 210:1H19 210 H192 210:2H19 210 H221 210:1H22 210 H222 210:2H22 210 H11 211:1H1 211 H12 211:2H1 211 H21 211:1H2 211 H22 211:2H2 211 H31 211:1H3 211 H32 211:2H3 211 H41 211:1H4 211 H42 211:2H4 211 H51 211:1H5 211 H52 211:2H5 211 H61 211:1H6 211 H62 211:2H6 211 H161 212:1H16 212 H162 212:2H16 212 H191 212:1H19 212 H192 212:2H19 212 H221 212:1H22 212 H222 212:2H22 212 H251 212:1H25 212 H252 212:2H25 212 H321 213:1H32 213 H322 213:2H32 213 H351 213:1H35 213 H352 213:2H35 213 H321 214:1H32 214 H322 214:2H32 214 H351 214:1H35 214 H352 214:2H35 214 H711 214:1H71 214 H712 214:2H71 214 H713 214:3H71 214 H231 215:1H23 215 H232 215:2H23 215 H311 215:1H31 215 H312 215:2H31 215 H301 215:1H30 215 H302 215:2H30 215 H241 215:1H24 215 H242 215:2H24 215 H271 215:1H27 215 H272 215:2H27 215 H273 215:3H27 215 H261 215:1H26 215 H262 215:2H26 215 H263 215:3H26 215 H211 216:1H21 216 H212 216:2H21 216 H231 216:1H23 216 H232 216:2H23 216 H311 216:1H31 216 H312 216:2H31 216 H611 216:1H61 216 H612 216:2H61 216 H711 216:1H71 216 H712 216:2H71 216 H731 216:1H73 216 H732 216:2H73 216 H11 217:1H1 217 H12 217:2H1 217 H31 217:1H3 217 H32 217:2H3 217 H41 217:1H4 217 H42 217:2H4 217 H61 217:1H6 217 H62 217:2H6 217 HM21 218:1HM2 218 HM22 218:2HM2 218 HM23 218:3HM2 218 H7A1 218:1H7A 218 H7A2 218:2H7A 218 HM61 218:1HM6 218 HM62 218:2HM6 218 HM71 218:1HM7 218 HM72 218:2HM7 218 HM41 218:1HM4 218 HM42 218:2HM4 218 HM43 218:3HM4 218 H4A1 218:1H4A 218 H4A2 218:2H4A 218 H121 219:1H12 219 H122 219:2H12 219 H241 219:1H24 219 H242 219:2H24 219 H251 219:1H25 219 H252 219:2H25 219 H261 219:1H26 219 H262 219:2H26 219 H271 219:1H27 219 H272 219:2H27 219 H281 219:1H28 219 H282 219:2H28 219 H21 220:1H2 220 H22 220:2H2 220 H31 220:1H3 220 H32 220:2H3 220 H41 220:1H4 220 H42 220:2H4 220 H71 220:1H7 220 H72 220:2H7 220 H81 220:1H8 220 H82 220:2H8 220 H111 220:1H11 220 H112 220:2H11 220 H121 220:1H12 220 H122 220:2H12 220 H131 221:1H13 221 H132 221:2H13 221 H221 222:1H22 222 H222 222:2H22 222 H241 222:1H24 222 H242 222:2H24 222 H271 222:1H27 222 H272 222:2H27 222 HN61 223:1HN6 223 HN62 223:2HN6 223 H101 223:1H10 223 H102 223:2H10 223 H6'1 223:1H6* 223 H6'2 223:2H6* 223 H4' 223: H4* 223 H5'1 223:1H5* 223 H5'2 223:2H5* 223 HO5' 223:HO5* 223 H3' 223: H3* 223 HO3' 223:HO3* 223 H2'1 223:1H2* 223 H2'2 223:2H2* 223 H41 224:1H4 224 H42 224:2H4 224 H61 224:1H6 224 H62 224:2H6 224 H71 224:1H7 224 H72 224:2H7 224 H81 224:1H8 224 H82 224:2H8 224 H91 224:1H9 224 H92 224:2H9 224 H151 225:1H15 225 H152 225:2H15 225 H153 225:3H15 225 H141 225:1H14 225 H142 225:2H14 225 H121 225:1H12 225 H122 225:2H12 225 H123 225:3H12 225 H181 225:1H18 225 H182 225:2H18 225 H183 225:3H18 225 H171 225:1H17 225 H172 225:2H17 225 H173 225:3H17 225 H341 227:1H34 227 H342 227:2H34 227 H343 227:3H34 227 H321 227:1H32 227 H322 227:2H32 227 H211 227:1H21 227 H212 227:2H21 227 H213 227:3H21 227 H181 227:1H18 227 H182 227:2H18 227 H183 227:3H18 227 H161 227:1H16 227 H162 227:2H16 227 H301 227:1H30 227 H302 227:2H30 227 H311 227:1H31 227 H312 227:2H31 227 H291 227:1H29 227 H292 227:2H29 227 H101 227:1H10 227 H102 227:2H10 227 H111 227:1H11 227 H112 227:2H11 227 H301 228:1H30 228 H302 228:2H30 228 H221 228:1H22 228 H222 228:2H22 228 H211 228:1H21 228 H212 228:2H21 228 H161 228:1H16 228 H162 228:2H16 228 H151 228:1H15 228 H152 228:2H15 228 H141 228:1H14 228 H142 228:2H14 228 H121 228:1H12 228 H122 228:2H12 228 H123 228:3H12 228 H111 229:1H11 229 H112 229:2H11 229 H31 229:1H3 229 H32 229:2H3 229 H101 229:1H10 229 H102 229:2H10 229 H501 22B:1H50 22B H502 22B:2H50 22B H503 22B:3H50 22B H201 22B:1H20 22B H202 22B:2H20 22B H203 22B:3H20 22B H191 22B:1H19 22B H192 22B:2H19 22B H193 22B:3H19 22B H181 22B:1H18 22B H182 22B:2H18 22B H183 22B:3H18 22B H211 22B:1H21 22B H212 22B:2H21 22B H221 22B:1H22 22B H222 22B:2H22 22B H241 22B:1H24 22B H242 22B:2H24 22B H243 22B:3H24 22B H251 22B:1H25 22B H252 22B:2H25 22B H253 22B:3H25 22B H161 22B:1H16 22B H162 22B:2H16 22B H163 22B:3H16 22B H171 22B:1H17 22B H172 22B:2H17 22B H173 22B:3H17 22B H261 22B:1H26 22B H262 22B:2H26 22B H263 22B:3H26 22B H301 22B:1H30 22B H302 22B:2H30 22B H303 22B:3H30 22B H341 22B:1H34 22B H342 22B:2H34 22B H351 22B:1H35 22B H352 22B:2H35 22B H371 22B:1H37 22B H372 22B:2H37 22B H373 22B:3H37 22B H461 22B:1H46 22B H462 22B:2H46 22B H463 22B:3H46 22B H481 22B:1H48 22B H482 22B:2H48 22B H483 22B:3H48 22B H491 22B:1H49 22B H492 22B:2H49 22B H493 22B:3H49 22B HN51 22M:1HN5 22M HN52 22M:2HN5 22M H181 22M:1H18 22M H182 22M:2H18 22M H183 22M:3H18 22M H201 230:1H20 230 H202 230:2H20 230 H221 230:1H22 230 H222 230:2H22 230 H241 230:1H24 230 H242 230:2H24 230 H243 230:3H24 230 H191 232:1H19 232 H192 232:2H19 232 H181 232:1H18 232 H182 232:2H18 232 H183 232:3H18 232 H201 232:1H20 232 H202 232:2H20 232 H221 232:1H22 232 H222 232:2H22 232 H231 232:1H23 232 H232 232:2H23 232 H251 232:1H25 232 H252 232:2H25 232 H261 232:1H26 232 H262 232:2H26 232 H271 232:1H27 232 H272 232:2H27 232 H281 232:1H28 232 H282 232:2H28 232 H193 232:3H19 232 H194 232:4H19 232 H184 232:4H18 232 H185 232:5H18 232 H186 232:6H18 232 H203 232:3H20 232 H204 232:4H20 232 H223 232:3H22 232 H224 232:4H22 232 H233 232:3H23 232 H234 232:4H23 232 H253 232:3H25 232 H254 232:4H25 232 H263 232:3H26 232 H264 232:4H26 232 H273 232:3H27 232 H274 232:4H27 232 H391 234:1H39 234 H392 234:2H39 234 H393 234:3H39 234 H401 234:1H40 234 H402 234:2H40 234 H301 235:1H30 235 H302 235:2H30 235 H303 235:3H30 235 H291 235:1H29 235 H292 235:2H29 235 H293 235:3H29 235 H151 235:1H15 235 H152 235:2H15 235 H91 235:1H9 235 H92 235:2H9 235 H101 235:1H10 235 H102 235:2H10 235 H11 236:1H1 236 H12 236:2H1 236 H13 236:3H1 236 H21 236:1H2 236 H22 236:2H2 236 H61 236:1H6 236 H62 236:2H6 236 H91 236:1H9 236 H92 236:2H9 236 H121 236:1H12 236 H122 236:2H12 236 H151 236:1H15 236 H152 236:2H15 236 H181 236:1H18 236 H182 236:2H18 236 H211 236:1H21 236 H212 236:2H21 236 H201 237:1H20 237 H202 237:2H20 237 H203 237:3H20 237 H91 237:1H9 237 H92 237:2H9 237 H111 237:1H11 237 H112 237:2H11 237 H191 237:1H19 237 H192 237:2H19 237 H193 237:3H19 237 H11A 238:1H1 238 H12A 238:2H1 238 H13A 238:3H1 238 H191 239:1H19 239 H192 239:2H19 239 H371 239:1H37 239 H372 239:2H37 239 H381 239:1H38 239 H382 239:2H38 239 HAZ1 23D:1HAZ 23D HAZ2 23D:2HAZ 23D HBA1 23D:1HBA 23D HBA2 23D:2HBA 23D HBA3 23D:3HBA 23D HAF1 23D:1HAF 23D HAF2 23D:2HAF 23D HAE1 23D:1HAE 23D HAE2 23D:2HAE 23D HAD1 23D:1HAD 23D HAD2 23D:2HAD 23D HAC1 23D:1HAC 23D HAC2 23D:2HAC 23D HAB1 23D:1HAB 23D HAB2 23D:2HAB 23D H 23F: HN 23F H2 23F: HN2 23F HB 23F:2HB 23F H201 23I:1H20 23I H202 23I:2H20 23I H203 23I:3H20 23I H331 23I:1H33 23I H332 23I:2H33 23I H351 23I:1H35 23I H352 23I:2H35 23I H353 23I:3H35 23I H181 23I:1H18 23I H182 23I:2H18 23I H183 23I:3H18 23I H291 23I:1H29 23I H292 23I:2H29 23I H293 23I:3H29 23I H361 23I:1H36 23I H362 23I:2H36 23I H363 23I:3H36 23I H371 23I:1H37 23I H372 23I:2H37 23I H391 23I:1H39 23I H392 23I:2H39 23I H393 23I:3H39 23I H431 23I:1H43 23I H432 23I:2H43 23I H433 23I:3H43 23I H441 23I:1H44 23I H442 23I:2H44 23I H443 23I:3H44 23I H531 23I:1H53 23I H532 23I:2H53 23I H533 23I:3H53 23I H521 23I:1H52 23I H522 23I:2H52 23I H523 23I:3H52 23I H121 23M:1H12 23M H122 23M:2H12 23M H123 23M:3H12 23M H191 23M:1H19 23M H192 23M:2H19 23M HB1 23S:1HB 23S HB2 23S:2HB 23S H5'1 23T:1H5* 23T H5'2 23T:2H5* 23T H4' 23T: H4* 23T H1' 23T: H1* 23T H5M1 23T:1H5M 23T H5M2 23T:2H5M 23T H5M3 23T:3H5M 23T H2'1 23T:1H2* 23T H2'2 23T:2H2* 23T H3'1 23T:1H3* 23T H3'2 23T:2H3* 23T HAC1 240:1HAC 240 HAC2 240:2HAC 240 HAC3 240:3HAC 240 HAU1 240:1HAU 240 HAU2 240:2HAU 240 HAB1 240:1HAB 240 HAB2 240:2HAB 240 HAB3 240:3HAB 240 HAA1 240:1HAA 240 HAA2 240:2HAA 240 HAA3 240:3HAA 240 HAA1 241:1HAA 241 HAA2 241:2HAA 241 HAA3 241:3HAA 241 HAB1 241:1HAB 241 HAB2 241:2HAB 241 HAB3 241:3HAB 241 HAU1 241:1HAU 241 HAU2 241:2HAU 241 HAC1 241:1HAC 241 HAC2 241:2HAC 241 HAC3 241:3HAC 241 H151 242:1H15 242 H152 242:2H15 242 H251 242:1H25 242 H252 242:2H25 242 H253 242:3H25 242 HAB1 243:1HAB 243 HAB2 243:2HAB 243 HAC1 243:1HAC 243 HAC2 243:2HAC 243 HAD1 243:1HAD 243 HAD2 243:2HAD 243 HAE1 243:1HAE 243 HAE2 243:2HAE 243 HAF1 243:1HAF 243 HAF2 243:2HAF 243 HAG1 243:1HAG 243 HAG2 243:2HAG 243 HAH1 243:1HAH 243 HAH2 243:2HAH 243 HAN1 243:1HAN 243 HAN2 243:2HAN 243 HAO1 243:1HAO 243 HAO2 243:2HAO 243 HAP1 243:1HAP 243 HAP2 243:2HAP 243 HAQ1 243:1HAQ 243 HAQ2 243:2HAQ 243 HAR1 243:1HAR 243 HAR2 243:2HAR 243 HAR3 243:3HAR 243 H131 244:1H13 244 H132 244:2H13 244 H0A1 24A:1H0A 24A H0A2 24A:2H0A 24A H0A3 24A:3H0A 24A H1A1 24A:1H1A 24A H1A2 24A:2H1A 24A HAB1 24A:1HAB 24A HAB2 24A:2HAB 24A HS11 24A:1HS1 24A HS12 24A:2HS1 24A HS21 24A:1HS2 24A HS22 24A:2HS2 24A HS31 24A:1HS3 24A HS32 24A:2HS3 24A HS51 24A:1HS5 24A HS52 24A:2HS5 24A HS61 24A:1HS6 24A HS62 24A:2HS6 24A H71 24B:1H7 24B H72 24B:2H7 24B H131 24I:1H13 24I H132 24I:2H13 24I H121 24I:1H12 24I H122 24I:2H12 24I H7C1 24I:1H7C 24I H7C2 24I:2H7C 24I H6C1 24I:1H6C 24I H6C2 24I:2H6C 24I HN1 24T:1HN 24T HN2 24T:2HN 24T HM1 24T:1HM 24T HM2 24T:2HM 24T HM3 24T:3HM 24T HN41 24X:1HN4 24X HN42 24X:2HN4 24X H71 24X:1H7 24X H72 24X:2H7 24X H161 24X:1H16 24X H162 24X:2H16 24X H111 24X:1H11 24X H112 24X:2H11 24X H121 24X:1H12 24X H122 24X:2H12 24X H123 24X:3H12 24X H131 24X:1H13 24X H132 24X:2H13 24X H133 24X:3H13 24X HAA1 252:1HAA 252 HAA2 252:2HAA 252 HAA3 252:3HAA 252 HAI1 252:1HAI 252 HAI2 252:2HAI 252 HAJ1 252:1HAJ 252 HAJ2 252:2HAJ 252 HAK1 252:1HAK 252 HAK2 252:2HAK 252 HAL1 252:1HAL 252 HAL2 252:2HAL 252 HAM1 252:1HAM 252 HAM2 252:2HAM 252 HAN1 252:1HAN 252 HAN2 252:2HAN 252 HAO1 252:1HAO 252 HAO2 252:2HAO 252 H171 254:1H17 254 H172 254:2H17 254 H181 254:1H18 254 H182 254:2H18 254 H231 254:1H23 254 H232 254:2H23 254 H233 254:3H23 254 H241 254:1H24 254 H242 254:2H24 254 H243 254:3H24 254 H251 254:1H25 254 H252 254:2H25 254 H253 254:3H25 254 H261 254:1H26 254 H262 254:2H26 254 H263 254:3H26 254 H121 257:1H12 257 H122 257:2H12 257 H141 257:1H14 257 H142 257:2H14 257 H5'1 25A:1H5* 25A H5'2 25A:2H5* 25A H4' 25A: H4* 25A H1' 25A: H1* 25A H2' 25A: H2* 25A H3' 25A: H3* 25A HN61 25A:1HN6 25A HN62 25A:2HN6 25A H151 25A:1H15 25A H152 25A:2H15 25A H14' 25A:H14* 25A H11' 25A:H11* 25A H161 25A:1H16 25A H162 25A:2H16 25A H12' 25A:H12* 25A H13' 25A:H13* 25A H251 25A:1H25 25A H252 25A:2H25 25A H24' 25A:H24* 25A H21' 25A:H21* 25A H261 25A:1H26 25A H262 25A:2H26 25A H22' 25A:H22* 25A H23' 25A:H23* 25A HN1 25T:1HN 25T HN2 25T:2HN 25T HM1 25T:1HM 25T HM2 25T:2HM 25T HM3 25T:3HM 25T H101 26A:1H10 26A H102 26A:2H10 26A H103 26A:3H10 26A H91 26A:1H9 26A H92 26A:2H9 26A H93 26A:3H9 26A H1' 26A: H1* 26A H4' 26A: H4* 26A H5'1 26A:1H5* 26A H5'2 26A:2H5* 26A H5' 26A: H5* 26A H2' 26A: H2* 26A HO'2 26A:2HO* 26A H3' 26A: H3* 26A HO'3 26A:3HO* 26A HN11 26D:1HN1 26D HN12 26D:2HN1 26D HN21 26D:1HN2 26D HN22 26D:2HN2 26D HN21 26P:1HN2 26P HN22 26P:2HN2 26P H31 26P:1H3 26P H32 26P:2H3 26P H41 26P:1H4 26P H42 26P:2H4 26P H51 26P:1H5 26P H52 26P:2H5 26P H21 270:1H2 270 H22 270:2H2 270 H211 274:1H21 274 H212 274:2H21 274 H213 274:3H21 274 H231 274:1H23 274 H232 274:2H23 274 H233 274:3H23 274 H7C1 274:1H7C 274 H7C2 274:2H7C 274 H7C3 274:3H7C 274 H241 274:1H24 274 H242 274:2H24 274 H271 274:1H27 274 H272 274:2H27 274 H281 274:1H28 274 H282 274:2H28 274 H283 274:3H28 274 H261 274:1H26 274 H262 274:2H26 274 H251 274:1H25 274 H252 274:2H25 274 H11 277:1H1 277 H12 277:2H1 277 H21 277:1H2 277 H22 277:2H2 277 H41 277:1H4 277 H42 277:2H4 277 H51 277:1H5 277 H52 277:2H5 277 H231 277:1H23 277 H232 277:2H23 277 H233 277:3H23 277 H271 277:1H27 277 H272 277:2H27 277 H273 277:3H27 277 H331 277:1H33 277 H332 277:2H33 277 H351 277:1H35 277 H352 277:2H35 277 H353 277:3H35 277 H421 277:1H42 277 H422 277:2H42 277 H441 277:1H44 277 H442 277:2H44 277 H451 277:1H45 277 H452 277:2H45 277 H301 281:1H30 281 H302 281:2H30 281 H303 281:3H30 281 H291 281:1H29 281 H292 281:2H29 281 H293 281:3H29 281 H151 281:1H15 281 H152 281:2H15 281 H91 281:1H9 281 H92 281:2H9 281 H101 281:1H10 281 H102 281:2H10 281 H51 283:1H5 283 H52 283:2H5 283 H61 283:1H6 283 H62 283:2H6 283 H63 283:3H6 283 H101 283:1H10 283 H102 283:2H10 283 H111 283:1H11 283 H112 283:2H11 283 H131 283:1H13 283 H132 283:2H13 283 H141 288:1H14 288 H142 288:2H14 288 H191 288:1H19 288 H192 288:2H19 288 H201 288:1H20 288 H202 288:2H20 288 H211 288:1H21 288 H212 288:2H21 288 H221 288:1H22 288 H222 288:2H22 288 H231 288:1H23 288 H232 288:2H23 288 H241 288:1H24 288 H242 288:2H24 288 H1C1 292:1H1C 292 H1C2 292:2H1C 292 H2C1 292:1H2C 292 H2C2 292:2H2C 292 H111 292:1H11 292 H112 292:2H11 292 H71 299:1H7 299 H72 299:2H7 299 H73 299:3H7 299 H101 2A6:1H10 2A6 H102 2A6:2H10 2A6 H121 2A6:1H12 2A6 H122 2A6:2H12 2A6 H131 2A6:1H13 2A6 H132 2A6:2H13 2A6 H141 2A6:1H14 2A6 H142 2A6:2H14 2A6 H151 2A6:1H15 2A6 H152 2A6:2H15 2A6 H161 2A6:1H16 2A6 H162 2A6:2H16 2A6 H131 2AA:1H13 2AA H132 2AA:2H13 2AA H133 2AA:3H13 2AA H121 2AA:1H12 2AA H122 2AA:2H12 2AA H123 2AA:3H12 2AA H9' 2AA: H9* 2AA H8' 2AA: H8* 2AA H5' 2AA: H5* 2AA H4' 2AA: H4* 2AA H3' 2AA: H3* 2AA H1'1 2AA:1H1* 2AA H1'2 2AA:2H1* 2AA H91 2AA:1H9 2AA H92 2AA:2H9 2AA H141 2AA:1H14 2AA H142 2AA:2H14 2AA HN21 2AA:1HN2 2AA HN22 2AA:2HN2 2AA H11 2AB:1H1 2AB H12A 2AB:2H1 2AB H21 2AB:1H2 2AB H22 2AB:2H2 2AB HN91 2AB:1HN9 2AB HN92 2AB:2HN9 2AB HN1 2AC:1HN 2AC HN2 2AC:2HN 2AC H81 2AC:1H8 2AC H82 2AC:2H8 2AC H83 2AC:3H8 2AC H5' 2AD: H5* 2AD H5'1 2AD:1H5* 2AD H5'2 2AD:2H5* 2AD H4' 2AD: H4* 2AD H3' 2AD: H3* 2AD H2' 2AD: H2* 2AD H1' 2AD: H1* 2AD H6N1 2AD:1H6N 2AD H6N2 2AD:2H6N 2AD HN1 2AD:1HN 2AD HN2 2AD:2HN 2AD HN1 2AF:1HN 2AF HN2 2AF:2HN 2AF H121 2AH:1H12 2AH H122 2AH:2H12 2AH H241 2AH:1H24 2AH H242 2AH:2H24 2AH H411 2AH:1H41 2AH H412 2AH:2H41 2AH H441 2AH:1H44 2AH H442 2AH:2H44 2AH H491 2AH:1H49 2AH H492 2AH:2H49 2AH H493 2AH:3H49 2AH H501 2AH:1H50 2AH H502 2AH:2H50 2AH H503 2AH:3H50 2AH H911 2AH:1H91 2AH H912 2AH:2H91 2AH H913 2AH:3H91 2AH H921 2AH:1H92 2AH H922 2AH:2H92 2AH H923 2AH:3H92 2AH HN11 2AL:1HN1 2AL HN12 2AL:2HN1 2AL HOP2 2AM:2HOP 2AM HOP3 2AM:3HOP 2AM H5'1 2AM:1H5* 2AM H5'2 2AM:2H5* 2AM HO5' 2AM:*HO5 2AM H4' 2AM: H4* 2AM H3' 2AM: H3* 2AM HO3' 2AM:*HO3 2AM H2' 2AM: H2* 2AM H1' 2AM: H1* 2AM HN61 2AM:1HN6 2AM HN62 2AM:2HN6 2AM H 2AO:1HN 2AO H2 2AO:2HN 2AO HC1 2AO:1HC 2AO HC2 2AO:2HC 2AO HB2 2AO:1HCB 2AO HB3 2AO:2HCB 2AO HG2 2AO:1HCG 2AO HG3 2AO:2HCG 2AO HD2 2AO:1HCD 2AO HD3 2AO:2HCD 2AO HE1 2AO:1HCE 2AO HE2 2AO:2HCE 2AO HE3 2AO:3HCE 2AO HN1A 2AP:1HN 2AP HN2 2AP:2HN 2AP HN11 2AQ:1HN1 2AQ HN12 2AQ:2HN1 2AQ HOP2 2AR:2HOP 2AR HOP3 2AR:3HOP 2AR H5' 2AR:1H5* 2AR H5'' 2AR:2H5* 2AR H4' 2AR: H4* 2AR HX'1 2AR:1HX* 2AR HX'2 2AR:2HX* 2AR H1' 2AR: H1* 2AR H61 2AR:1H6 2AR H62 2AR:2H6 2AR H2'' 2AR:2H2* 2AR H2' 2AR:1H2* 2AR H3' 2AR: H3* 2AR HO3' 2AR:H3T 2AR HBB1 2AS:1HBB 2AS HBB2 2AS:2HBB 2AS HBB3 2AS:3HBB 2AS HOP2 2AT:2HOP 2AT H5' 2AT:1H5* 2AT H5'' 2AT:2H5* 2AT H4' 2AT: H4* 2AT H1' 2AT: H1* 2AT H71 2AT:1H5M 2AT H72 2AT:2H5M 2AT H73 2AT:3H5M 2AT H2' 2AT: H2* 2AT HB'1 2AT:1HB' 2AT HB'2 2AT:2HB' 2AT HD'1 2AT:1HD' 2AT HD'2 2AT:2HD' 2AT H3' 2AT: H3* 2AT HO3' 2AT:H3T 2AT HOP3 2AT:3HOP 2AT H5' 2AU:1H5* 2AU H5'' 2AU:2H5* 2AU H4' 2AU: H4* 2AU H3' 2AU: H3* 2AU HO3' 2AU:H3T 2AU H2' 2AU:1H2* 2AU H1' 2AU: H1* 2AU HA1 2AU:1HA 2AU H2'' 2AU:2H2* 2AU OP2 2AU: O2P 2AU H2P1 2AU:2H1P 2AU H11 2AZ:1H1 2AZ H12 2AZ:2H1 2AZ H61A 2AZ:1H6 2AZ H62 2AZ:2H6 2AZ H231 2AZ:1H23 2AZ H232 2AZ:2H23 2AZ H391 2AZ:1H39 2AZ H392 2AZ:2H39 2AZ H421 2AZ:1H42 2AZ H422 2AZ:2H42 2AZ H451 2AZ:1H45 2AZ H452 2AZ:2H45 2AZ H481 2AZ:1H48 2AZ H482 2AZ:2H48 2AZ H631 2AZ:1H63 2AZ H632 2AZ:2H63 2AZ H633 2AZ:3H63 2AZ HOP2 2BD:2HOP 2BD HOP3 2BD:3HOP 2BD H5' 2BD:1H5* 2BD H5'' 2BD:2H5* 2BD H4' 2BD: H4* 2BD H1' 2BD: H1* 2BD HAL2 2BD:2HAL 2BD HAM1 2BD:1HAM 2BD HAM2 2BD:2HAM 2BD HAO1 2BD:1HAO 2BD HAO2 2BD:2HAO 2BD H2' 2BD:1H2* 2BD H2'' 2BD:2H2* 2BD H3' 2BD: H3* 2BD HO3' 2BD:H3T 2BD HOP2 2BF:2HOP 2BF HOP3 2BF:3HOP 2BF H191 2BF:1H19 2BF H192 2BF:2H19 2BF HP12 2BH:2HP1 2BH HP11 2BH:1HP1 2BH H061 2BH:1H06 2BH H062 2BH:2H06 2BH H071 2BH:1H07 2BH H072 2BH:2H07 2BH HD1 2BL:1HD 2BL HD2 2BL:2HD 2BL HE1 2BL:1HE 2BL HE2 2BL:2HE 2BL HE3 2BL:3HE 2BL HJ1 2BL:1HJ 2BL HJ2 2BL:2HJ 2BL HJ3 2BL:3HJ 2BL HC41 2BN:1HC4 2BN HC42 2BN:2HC4 2BN HC61 2BN:1HC6 2BN HC62 2BN:2HC6 2BN HC71 2BN:1HC7 2BN HC72 2BN:2HC7 2BN HC91 2BN:1HC9 2BN HC92 2BN:2HC9 2BN HC93 2BN:3HC9 2BN H101 2BN:1H10 2BN H102 2BN:2H10 2BN H103 2BN:3H10 2BN H111 2BN:1H11 2BN H112 2BN:2H11 2BN H113 2BN:3H11 2BN HOP3 2BT:3HOP 2BT HOP2 2BT:2HOP 2BT H5' 2BT:1H5* 2BT H5'' 2BT:2H5* 2BT H4' 2BT: H4* 2BT H1' 2BT: H1* 2BT H71 2BT:1H5M 2BT H72 2BT:2H5M 2BT H73 2BT:3H5M 2BT H2' 2BT: H2* 2BT HA'1 2BT:1HA* 2BT HA'2 2BT:2HA* 2BT HB'1 2BT:1HB* 2BT HB'2 2BT:2HB* 2BT HC'1 2BT:1HC* 2BT HC'2 2BT:2HC* 2BT H3' 2BT: H3* 2BT HO3' 2BT:H3T 2BT HD'1 2BT:1HD* 2BT HD'2 2BT:2HD* 2BT HD'3 2BT:3HD* 2BT HOP2 2BU:2HOP 2BU HOP3 2BU:3HOP 2BU H5' 2BU: H5* 2BU H5'' 2BU:H5** 2BU H4' 2BU: H4* 2BU H1' 2BU: H1* 2BU H2' 2BU: H2* 2BU H2'' 2BU:H2** 2BU H3' 2BU: H3* 2BU HO3' 2BU:H3T 2BU HC11 2C5:1HC1 2C5 HC12 2C5:2HC1 2C5 H151 2C5:1H15 2C5 H152 2C5:2H15 2C5 H153 2C5:3H15 2C5 H101 2CA:1H10 2CA H102 2CA:2H10 2CA H121 2CA:1H12 2CA H122 2CA:2H12 2CA H123 2CA:3H12 2CA H131 2CA:1H13 2CA H132 2CA:2H13 2CA H133 2CA:3H13 2CA H021 2CA:1H02 2CA H022 2CA:2H02 2CA H031 2CA:1H03 2CA H032 2CA:2H03 2CA H041 2CA:1H04 2CA H042 2CA:2H04 2CA H061 2CA:1H06 2CA H062 2CA:2H06 2CA H9C1 2CE:1H9C 2CE H9C2 2CE:2H9C 2CE H141 2CE:1H14 2CE H142 2CE:2H14 2CE H241 2CE:1H24 2CE H242 2CE:2H24 2CE H281 2CE:1H28 2CE H282 2CE:2H28 2CE H291 2CE:1H29 2CE H292 2CE:2H29 2CE H311 2CE:1H31 2CE H312 2CE:2H31 2CE H321 2CE:1H32 2CE H322 2CE:2H32 2CE H341 2CE:1H34 2CE H342 2CE:2H34 2CE H371 2CE:1H37 2CE H372 2CE:2H37 2CE HN1 2CG:1HN 2CG HN2 2CG:2HN 2CG H71 2CL:1H7 2CL H72 2CL:2H7 2CL HN41 2CM:1HN4 2CM HN42 2CM:2HN4 2CM HC61 2CM:1HC6 2CM HC62 2CM:2HC6 2CM HC63 2CM:3HC6 2CM H2 2CO: HN2 2CO HB2 2CO:1HB 2CO HB3 2CO:2HB 2CO HE 2CO: HOE 2CO H61 2CP:1H6 2CP H62 2CP:2H6 2CP HO'2 2CP:2HO' 2CP H5'1 2CP:1H5' 2CP H5'2 2CP:2H5' 2CP HB1 2CP:1HB 2CP HB2 2CP:2HB 2CP HP91 2CP:1HP9 2CP HP92 2CP:2HP9 2CP HP93 2CP:3HP9 2CP HP81 2CP:1HP8 2CP HP82 2CP:2HP8 2CP HP83 2CP:3HP8 2CP HOP3 2CP:3HOP 2CP HP51 2CP:1HP5 2CP HP52 2CP:2HP5 2CP HP41 2CP:1HP4 2CP HP42 2CP:2HP4 2CP HP21 2CP:1HP2 2CP HP22 2CP:2HP2 2CP HP11 2CP:1HP1 2CP HP12 2CP:2HP1 2CP HS11 2CP:1HS1 2CP HS12 2CP:2HS1 2CP HS31 2CP:1HS3 2CP HS32 2CP:2HS3 2CP HS33 2CP:3HS3 2CP HOS5 2CP:5HOS 2CP H11 2CS:1H1 2CS H12A 2CS:2H1 2CS H13A 2CS:3H1 2CS H71 2CS:1H7 2CS H72 2CS:2H7 2CS H101 2CS:1H10 2CS H102 2CS:2H10 2CS H251 2CS:1H25 2CS H252 2CS:2H25 2CS H411 2CS:1H41 2CS H412 2CS:2H41 2CS H413 2CS:3H41 2CS H391 2CS:1H39 2CS H392 2CS:2H39 2CS H393 2CS:3H39 2CS H401 2CS:1H40 2CS H402 2CS:2H40 2CS H403 2CS:3H40 2CS H61 2CS:1H6 2CS H62 2CS:2H6 2CS H63 2CS:3H6 2CS H181 2D7:1H18 2D7 H182 2D7:2H18 2D7 H183 2D7:3H18 2D7 H311 2D9:1H31 2D9 H312 2D9:2H31 2D9 H313 2D9:3H31 2D9 H181 2D9:1H18 2D9 H182 2D9:2H18 2D9 H161 2D9:1H16 2D9 H162 2D9:2H16 2D9 H171 2D9:1H17 2D9 H172 2D9:2H17 2D9 H141 2D9:1H14 2D9 H142 2D9:2H14 2D9 H131 2D9:1H13 2D9 H132 2D9:2H13 2D9 HOP2 2DA:2HOP 2DA HOP3 2DA:3HOP 2DA H5' 2DA:1H5* 2DA H5'' 2DA:2H5* 2DA H4' 2DA: H4* 2DA H3'1 2DA:1H3* 2DA H3'2 2DA:2H3* 2DA H2' 2DA:1H2* 2DA H2'' 2DA:2H2* 2DA H1' 2DA: H1* 2DA HN61 2DA:1HN6 2DA HN62 2DA:2HN6 2DA H11 2DB:1H1 2DB H12 2DB:2H1 2DB H31 2DB:1H3 2DB H32 2DB:2H3 2DB H171 2DD:1H17 2DD H172 2DD:2H17 2DD H4N1 2DD:1H4N 2DD H4N2 2DD:2H4N 2DD HOP2 2DF:2HOP 2DF HOP3 2DF:3HOP 2DF H5'1 2DF:1H5* 2DF H5'2 2DF:2H5* 2DF H4' 2DF: H4* 2DF H1' 2DF: H1* 2DF H3' 2DF: H3* 2DF H2'1 2DF:1H2* 2DF H2'2 2DF:2H2* 2DF H21 2DG:1H2 2DG H22 2DG:2H2 2DG H61 2DG:1H6 2DG H62 2DG:2H6 2DG H5'1 2DI:1H5* 2DI H5'2 2DI:2H5* 2DI H5' 2DI: H5* 2DI H4' 2DI: H4* 2DI H1' 2DI: H1* 2DI H2'1 2DI:1H2* 2DI H2'2 2DI:2H2* 2DI H3'1 2DI:1H3* 2DI H3'2 2DI:2H3* 2DI HOP2 2DM:2HOP 2DM HO3' 2DM:H3T 2DM HOP3 2DM:3HOP 2DM H 2DO:1HN 2DO H2 2DO:2HN 2DO HC 2DO: H 2DO HB2 2DO:1HCB 2DO HB3 2DO:2HCB 2DO HG2 2DO:1HCG 2DO HG3 2DO:2HCG 2DO HD2 2DO:1HCD 2DO HD3 2DO:2HCD 2DO HE1 2DO:1HCE 2DO HE2 2DO:2HCE 2DO HE3 2DO:3HCE 2DO H11 2DP:1H1 2DP H12 2DP:2H1 2DP H31 2DP:1H3 2DP H32 2DP:2H3 2DP H41 2DP:1H4 2DP H42 2DP:2H4 2DP H61 2DP:1H6 2DP H62 2DP:2H6 2DP H111 2DP:1H11 2DP H112 2DP:2H11 2DP H121 2DP:1H12 2DP H122 2DP:2H12 2DP H141 2DP:1H14 2DP H142 2DP:2H14 2DP H143 2DP:3H14 2DP H151 2DP:1H15 2DP H152 2DP:2H15 2DP H161 2DP:1H16 2DP H162 2DP:2H16 2DP H171 2DP:1H17 2DP H172 2DP:2H17 2DP H191 2DP:1H19 2DP H192 2DP:2H19 2DP H193 2DP:3H19 2DP H201 2DP:1H20 2DP H202 2DP:2H20 2DP H211 2DP:1H21 2DP H212 2DP:2H21 2DP H221 2DP:1H22 2DP H222 2DP:2H22 2DP H241 2DP:1H24 2DP H242 2DP:2H24 2DP H243 2DP:3H24 2DP H251 2DP:1H25 2DP H252 2DP:2H25 2DP H261 2DP:1H26 2DP H262 2DP:2H26 2DP H271 2DP:1H27 2DP H272 2DP:2H27 2DP H291 2DP:1H29 2DP H292 2DP:2H29 2DP H293 2DP:3H29 2DP H301 2DP:1H30 2DP H302 2DP:2H30 2DP H303 2DP:3H30 2DP H411 2DP:1H41 2DP H412 2DP:2H41 2DP H421 2DP:1H42 2DP H422 2DP:2H42 2DP H441 2DP:1H44 2DP H442 2DP:2H44 2DP H443 2DP:3H44 2DP H451 2DP:1H45 2DP H452 2DP:2H45 2DP H461 2DP:1H46 2DP H462 2DP:2H46 2DP H471 2DP:1H47 2DP H472 2DP:2H47 2DP H491 2DP:1H49 2DP H492 2DP:2H49 2DP H493 2DP:3H49 2DP H501 2DP:1H50 2DP H502 2DP:2H50 2DP H511 2DP:1H51 2DP H512 2DP:2H51 2DP H521 2DP:1H52 2DP H522 2DP:2H52 2DP H541 2DP:1H54 2DP H542 2DP:2H54 2DP H543 2DP:3H54 2DP H551 2DP:1H55 2DP H552 2DP:2H55 2DP H561 2DP:1H56 2DP H562 2DP:2H56 2DP H571 2DP:1H57 2DP H572 2DP:2H57 2DP H591 2DP:1H59 2DP H592 2DP:2H59 2DP H593 2DP:3H59 2DP H601 2DP:1H60 2DP H602 2DP:2H60 2DP H603 2DP:3H60 2DP HM1 2DP:1HM 2DP HM2 2DP:2HM 2DP HM3 2DP:3HM 2DP HOP2 2DT:2HOP 2DT HOP3 2DT:3HOP 2DT H71 2DT:1H5M 2DT H72 2DT:2H5M 2DT H73 2DT:3H5M 2DT H2' 2DT:1H2* 2DT H2'' 2DT:2H2* 2DT H5' 2DT:1H5* 2DT H5'' 2DT:2H5* 2DT H4' 2DT: H4* 2DT H1' 2DT: H1* 2DT H3'1 2DT:1H3* 2DT H3'2 2DT:2H3* 2DT H191 2E1:1H19 2E1 H192 2E1:2H19 2E1 H201 2E1:1H20 2E1 H202 2E1:2H20 2E1 H171 2E1:1H17 2E1 H172 2E1:2H17 2E1 H161 2E1:1H16 2E1 H162 2E1:2H16 2E1 H261 2E1:1H26 2E1 H262 2E1:2H26 2E1 H271 2E1:1H27 2E1 H272 2E1:2H27 2E1 H273 2E1:3H27 2E1 H241 2EA:1H24 2EA H242 2EA:2H24 2EA H251 2EA:1H25 2EA H252 2EA:2H25 2EA HN41 2EA:1HN4 2EA HN42 2EA:2HN4 2EA H5' 2EG:1H5* 2EG H5'' 2EG:2H5* 2EG H4' 2EG: H4* 2EG H3' 2EG: H3* 2EG H2' 2EG:1H2* 2EG H2'' 2EG:2H2* 2EG H1' 2EG: H1* 2EG H21 2EG:1H2 2EG H211 2EG:1H21 2EG H212 2EG:2H21 2EG H221 2EG:1H22 2EG H222 2EG:2H22 2EG H223 2EG:3H22 2EG H31 2EP:1H3 2EP H32 2EP:2H3 2EP H41 2EP:1H4 2EP H42 2EP:2H4 2EP H51 2EP:1H5 2EP H52 2EP:2H5 2EP H61 2EP:1H6 2EP H62 2EP:2H6 2EP H1'1 2EP:1H1' 2EP H1'2 2EP:2H1' 2EP H2'1 2EP:1H2' 2EP H2'2 2EP:2H2' 2EP H2'3 2EP:3H2' 2EP H61 2EZ:1H6 2EZ H62 2EZ:2H6 2EZ H71 2EZ:1H7 2EZ H72 2EZ:2H7 2EZ H73 2EZ:3H7 2EZ H5'1 2FA:1H5' 2FA H5'2 2FA:2H5' 2FA HN61 2FA:1HN6 2FA HN62 2FA:2HN6 2FA H5'1 2FD:1H5' 2FD H5'2 2FD:2H5' 2FD HN61 2FD:1HN6 2FD HN62 2FD:2HN6 2FD H2'1 2FD:1H2' 2FD H2'2 2FD:2H2' 2FD H61 2FG:1H6 2FG H62 2FG:2H6 2FG HAA1 2FH:1HAA 2FH HAA2 2FH:2HAA 2FH HBA1 2FH:1HBA 2FH HBA2 2FH:2HBA 2FH HMA1 2FH:1HMA 2FH HMA2 2FH:2HMA 2FH HMA3 2FH:3HMA 2FH HMB1 2FH:1HMB 2FH HMB2 2FH:2HMB 2FH HMB3 2FH:3HMB 2FH HBB1 2FH:1HBB 2FH HBB2 2FH:2HBB 2FH HMC1 2FH:1HMC 2FH HMC2 2FH:2HMC 2FH HMC3 2FH:3HMC 2FH HBC1 2FH:1HBC 2FH HBC2 2FH:2HBC 2FH HMD1 2FH:1HMD 2FH HMD2 2FH:2HMD 2FH HMD3 2FH:3HMD 2FH HAD1 2FH:1HAD 2FH HAD2 2FH:2HAD 2FH HBD1 2FH:1HBD 2FH HBD2 2FH:2HBD 2FH H61 2FL:1H6 2FL H62 2FL:2H6 2FL H6'1 2FL:1H6' 2FL H6'2 2FL:2H6' 2FL HO1' 2FL:'HO1 2FL HO2' 2FL:'HO2 2FL HO3' 2FL:'HO3 2FL HO6' 2FL:'HO6 2FL HN1 2FM:1HN 2FM HN2 2FM:2HN 2FM HB1 2FM:1HB 2FM HB2 2FM:2HB 2FM HG1 2FM:1HG 2FM HG2 2FM:2HG 2FM H11 2FP:1H1 2FP H12 2FP:2H1 2FP H61 2FP:1H6 2FP H62A 2FP:2H6 2FP H221 2GG:1H22 2GG H222 2GG:2H22 2GG H223 2GG:3H22 2GG H261 2GG:1H26 2GG H262 2GG:2H26 2GG H271 2GG:1H27 2GG H272 2GG:2H27 2GG H273 2GG:3H27 2GG H21 2GL:1H2 2GL H22 2GL:2H2 2GL H61 2GL:1H6 2GL H62 2GL:2H6 2GL H63 2GL:3H6 2GL HOP2 2GP:2HOP 2GP HOP3 2GP:3HOP 2GP HO5' 2GP:*HO5 2GP H5'1 2GP:1H5* 2GP H5'2 2GP:2H5* 2GP H4' 2GP: H4* 2GP H3' 2GP: H3* 2GP HO3' 2GP:*HO3 2GP H2' 2GP: H2* 2GP H1' 2GP: H1* 2GP HN21 2GP:1HN2 2GP HN22 2GP:2HN2 2GP H61 2GS:1H6 2GS H62 2GS:2H6 2GS H71 2GS:1H7 2GS H72 2GS:2H7 2GS H73 2GS:3H7 2GS HOP2 2GT:2HOP 2GT H5' 2GT:1H5* 2GT H5'' 2GT:2H5* 2GT H4' 2GT: H4* 2GT H1' 2GT: H1* 2GT H71 2GT:1H5M 2GT H72 2GT:2H5M 2GT H73 2GT:3H5M 2GT H2' 2GT: H2* 2GT HB'1 2GT:1HB' 2GT HB'2 2GT:2HB' 2GT H3' 2GT: H3* 2GT HO3' 2GT:H3T 2GT HOP3 2GT:3HOP 2GT H1C1 2HA:1H1C 2HA H1C2 2HA:2H1C 2HA H3C1 2HA:1H3C 2HA H3C2 2HA:2H3C 2HA H61 2HR:1H6 2HR H62 2HR:2H6 2HR H63 2HR:3H6 2HR H51 2HR:1H5 2HR H52 2HR:2H5 2HR H41 2HR:1H4 2HR H42 2HR:2H4 2HR H31 2HR:1H3 2HR H32 2HR:2H3 2HR H21 2HR:1H2 2HR H22 2HR:2H2 2HR H11 2HR:1H1 2HR H12A 2HR:2H1 2HR H71 2HR:1H7 2HR H72 2HR:2H7 2HR H91 2HR:1H9 2HR H92 2HR:2H9 2HR H93 2HR:3H9 2HR H101 2HR:1H10 2HR H102 2HR:2H10 2HR H61 2HS:1H6 2HS H62 2HS:2H6 2HS H63 2HS:3H6 2HS H51 2HS:1H5 2HS H52 2HS:2H5 2HS H41 2HS:1H4 2HS H42 2HS:2H4 2HS H31 2HS:1H3 2HS H32 2HS:2H3 2HS H21 2HS:1H2 2HS H22 2HS:2H2 2HS H11 2HS:1H1 2HS H12A 2HS:2H1 2HS H71 2HS:1H7 2HS H72 2HS:2H7 2HS H91 2HS:1H9 2HS H92 2HS:2H9 2HS H93 2HS:3H9 2HS H101 2HS:1H10 2HS H102 2HS:2H10 2HS H1 2IB:1H 2IB H2 2IB:2H 2IB H3A 2IB:3H 2IB H151 2IC:1H15 2IC H152 2IC:2H15 2IC H191 2IC:1H19 2IC H192 2IC:2H19 2IC H361 2IC:1H36 2IC H362 2IC:2H36 2IC H521 2IC:1H52 2IC H522 2IC:2H52 2IC H523 2IC:3H52 2IC HN31 2IG:1HN3 2IG HN32 2IG:2HN3 2IG HN41 2IG:1HN4 2IG HN42 2IG:2HN4 2IG H51 2IG:1H5 2IG H52 2IG:2H5 2IG H61 2IG:1H6 2IG H62 2IG:2H6 2IG H63 2IG:3H6 2IG H131 2IG:1H13 2IG H132 2IG:2H13 2IG H141 2IG:1H14 2IG H142 2IG:2H14 2IG H151 2IG:1H15 2IG H152 2IG:2H15 2IG H161 2IG:1H16 2IG H162 2IG:2H16 2IG H163 2IG:3H16 2IG H6C1 2IH:1H6C 2IH H6C2 2IH:2H6C 2IH H7C1 2IH:1H7C 2IH H7C2 2IH:2H7C 2IH H8C1 2IH:1H8C 2IH H8C2 2IH:2H8C 2IH H9C1 2IH:1H9C 2IH H9C2 2IH:2H9C 2IH H101 2IH:1H10 2IH H102 2IH:2H10 2IH H111 2IH:1H11 2IH H112 2IH:2H11 2IH H41 2IM:1H4 2IM H42 2IM:2H4 2IM H51 2IM:1H5 2IM H52 2IM:2H5 2IM H31 2IM:1H3 2IM H32 2IM:2H3 2IM H21 2IM:1H2 2IM H22 2IM:2H2 2IM HN41 2IN:1HN4 2IN HN42 2IN:2HN4 2IN H111 2IN:1H11 2IN H112 2IN:2H11 2IN H81 2IN:1H8 2IN H82 2IN:2H8 2IN H61 2IN:1H6 2IN H62 2IN:2H6 2IN H11 2IN:1H1 2IN H12A 2IN:2H1 2IN HO42 2IP:2HO4 2IP HO43 2IP:3HO4 2IP HO12 2IP:2HO1 2IP HO13 2IP:3HO1 2IP H41 2KT:1H4 2KT H42 2KT:2H4 2KT H43 2KT:3H4 2KT H31 2KT:1H3 2KT H32 2KT:2H3 2KT H41 2LG:1H4 2LG H42 2LG:2H4 2LG H61 2LG:1H6 2LG H62 2LG:2H6 2LG H261 2LG:1H26 2LG H262 2LG:2H26 2LG H281 2LG:1H28 2LG H282 2LG:2H28 2LG H283 2LG:3H28 2LG H91 2LG:1H9 2LG H92 2LG:2H9 2LG H251 2LG:1H25 2LG H252 2LG:2H25 2LG H271 2LG:1H27 2LG H272 2LG:2H27 2LG H273 2LG:3H27 2LG HC41 2LP:1HC4 2LP HC42 2LP:2HC4 2LP H141 2LP:1H14 2LP H142 2LP:2H14 2LP H2 2LU: HN2 2LU HB2 2LU:1HB 2LU HB3 2LU:2HB 2LU HD11 2LU:1HD1 2LU HD12 2LU:2HD1 2LU HD13 2LU:3HD1 2LU HD21 2LU:1HD2 2LU HD22 2LU:2HD2 2LU HD23 2LU:3HD2 2LU HOP2 2MA:2HOP 2MA HOP3 2MA:3HOP 2MA H5' 2MA:1H5* 2MA H5'' 2MA:2H5* 2MA H4' 2MA: H4* 2MA H3' 2MA: H3* 2MA HO3' 2MA:*HO3 2MA H2' 2MA: H2* 2MA HO2' 2MA:*HO2 2MA H1' 2MA: H1* 2MA HM21 2MA:1HM2 2MA HM22 2MA:2HM2 2MA HM23 2MA:3HM2 2MA H4C1 2MB:1H4C 2MB H4C2 2MB:2H4C 2MB H4C3 2MB:3H4C 2MB H1C1 2MB:1H1C 2MB H1C2 2MB:2H1C 2MB H1C3 2MB:3H1C 2MB H2'1 2MB:1H2' 2MB H2'2 2MB:2H2' 2MB H2'3 2MB:3H2' 2MB HN61 2MC:1HN6 2MC HN62 2MC:2HN6 2MC H1' 2MC: H1* 2MC H2' 2MC: H2* 2MC H3' 2MC: H3* 2MC H4' 2MC: H4* 2MC H5'1 2MC:1H5* 2MC H5'2 2MC:2H5* 2MC H121 2MC:1H12 2MC H122 2MC:2H12 2MC H131 2MC:1H13 2MC H132 2MC:2H13 2MC H133 2MC:3H13 2MC H141 2MC:1H14 2MC H142 2MC:2H14 2MC H143 2MC:3H14 2MC H71 2MC:1H7 2MC H72 2MC:2H7 2MC H61 2MC:1H6 2MC H62 2MC:2H6 2MC H31 2MC:1H3 2MC H32 2MC:2H3 2MC H21 2MC:1H2 2MC H22 2MC:2H2 2MC H11 2MC:1H1 2MC H12 2MC:2H1 2MC H2M1 2MC:1H2M 2MC H2M2 2MC:2H2M 2MC H2M3 2MC:3H2M 2MC HO2B 2MD:BHO2 2MD H101 2MD:1H10 2MD H102 2MD:2H10 2MD HNG1 2MD:1HNG 2MD HNG2 2MD:2HNG 2MD HO2A 2MD:AHO2 2MD H5'1 2MD:1H5* 2MD H5'2 2MD:2H5* 2MD H4' 2MD: H4* 2MD H1' 2MD: H1* 2MD HN21 2MD:1HN2 2MD HN22 2MD:2HN2 2MD H2' 2MD: H2* 2MD HO2' 2MD:*HO2 2MD H3' 2MD: H3* 2MD HO3' 2MD:*HO3 2MD HA'1 2ME:1HA* 2ME HA'2 2ME:2HA* 2ME HA'3 2ME:3HA* 2ME HB'1 2ME:1HB* 2ME HB'2 2ME:2HB* 2ME HD'1 2ME:1HD* 2ME HD'2 2ME:2HD* 2ME HD'3 2ME:3HD* 2ME HOP2 2MG:2HOP 2MG HOP3 2MG:3HOP 2MG H5' 2MG:1H5* 2MG H5'' 2MG:2H5* 2MG H4' 2MG: H4* 2MG H3' 2MG: H3* 2MG HO3' 2MG:*HO3 2MG H2' 2MG: H2* 2MG HO2' 2MG:*HO2 2MG H1' 2MG: H1* 2MG HM21 2MG:1HM2 2MG HM22 2MG:2HM2 2MG HM23 2MG:3HM2 2MG HAJ1 2MI:1HAJ 2MI HAJ2 2MI:2HAJ 2MI HAJ3 2MI:3HAJ 2MI H2 2ML: HN2 2ML HB11 2ML:1HB1 2ML HB12 2ML:2HB1 2ML HB21 2ML:1HB2 2ML HB22 2ML:2HB2 2ML HB23 2ML:3HB2 2ML HD11 2ML:1HD1 2ML HD12 2ML:2HD1 2ML HD13 2ML:3HD1 2ML HD21 2ML:1HD2 2ML HD22 2ML:2HD2 2ML HD23 2ML:3HD2 2ML HA51 2MN:1HA5 2MN HA52 2MN:2HA5 2MN HA53 2MN:3HA5 2MN H71 2MP:1H7 2MP H72 2MP:2H7 2MP H73 2MP:3H7 2MP H81 2MP:1H8 2MP H82 2MP:2H8 2MP H83 2MP:3H8 2MP H2 2MR: HN2 2MR HB2 2MR:1HB 2MR HB3 2MR:2HB 2MR HG2 2MR:1HG 2MR HG3 2MR:2HG 2MR HD2 2MR:1HD 2MR HD3 2MR:2HD 2MR HQ11 2MR:1HQ1 2MR HQ12 2MR:2HQ1 2MR HQ13 2MR:3HQ1 2MR HH2 2MR:1HH2 2MR HQ21 2MR:1HQ2 2MR HQ22 2MR:2HQ2 2MR HQ23 2MR:3HQ2 2MR H 2MT: HN 2MT HB2 2MT:2HB 2MT HB3 2MT:1HB 2MT HD21 2MT:1HD2 2MT HD22 2MT:2HD2 2MT HD23 2MT:3HD2 2MT HD31 2MT:1HD3 2MT HD32 2MT:2HD3 2MT HD33 2MT:3HD3 2MT HM51 2MU:1HM5 2MU HM52 2MU:2HM5 2MU HM53 2MU:3HM5 2MU H1' 2MU: H1* 2MU H2' 2MU: H2* 2MU H3' 2MU: H3* 2MU H4' 2MU: H4* 2MU HO3' 2MU:*HO3 2MU H5' 2MU:1H5* 2MU H5'' 2MU:2H5* 2MU H6'1 2MU:1H6* 2MU H6'2 2MU:2H6* 2MU H6'3 2MU:3H6* 2MU HOP2 2MU:2HOP 2MU HOP3 2MU:3HOP 2MU H61 2MZ:1H6 2MZ H62 2MZ:2H6 2MZ H63 2MZ:3H6 2MZ H1' 2ND: H1* 2ND H2'1 2ND:1H2* 2ND H2'2 2ND:2H2* 2ND H3' 2ND: H3* 2ND H4' 2ND: H4* 2ND H5'1 2ND:1H5* 2ND H5'2 2ND:2H5* 2ND H5' 2ND: H5* 2ND HD11 2NH:1HD1 2NH HD12 2NH:2HD1 2NH HD13 2NH:3HD1 2NH HG41 2NH:1HG4 2NH HG42 2NH:2HG4 2NH HG31 2NH:1HG3 2NH HG32 2NH:2HG3 2NH HG33 2NH:3HG3 2NH HB21 2NH:1HB2 2NH HB22 2NH:2HB2 2NH H1 2NH:1H 2NH H2A 2NH:2H 2NH H41 2NH:1H4 2NH H42 2NH:2H4 2NH H43 2NH:3H4 2NH H31 2NH:1H3 2NH H32 2NH:2H3 2NH H51 2NH:1H5 2NH H52 2NH:2H5 2NH H81 2NH:1H8 2NH H82 2NH:2H8 2NH H83 2NH:3H8 2NH H91 2NH:1H9 2NH H92 2NH:2H9 2NH H101 2NH:1H10 2NH H102 2NH:2H10 2NH H131 2NH:1H13 2NH H132 2NH:2H13 2NH H133 2NH:3H13 2NH H141 2NH:1H14 2NH H142 2NH:2H14 2NH H143 2NH:3H14 2NH HA1 2NH:1HA 2NH HA2A 2NH:2HA 2NH HA3A 2NH:3HA 2NH HG11 2NH:1HG1 2NH HG12 2NH:2HG1 2NH HG13 2NH:3HG1 2NH HG21 2NH:1HG2 2NH HG22 2NH:2HG2 2NH HG23 2NH:3HG2 2NH HB51 2NH:1HB5 2NH HB52 2NH:2HB5 2NH HG1 2NH:1HG 2NH HG2 2NH:2HG 2NH HE1 2NH:1HE 2NH HE2 2NH:2HE 2NH HE3 2NH:3HE 2NH H141 2NI:1H14 2NI H142 2NI:2H14 2NI H151 2NI:1H15 2NI H152 2NI:2H15 2NI H161 2NI:1H16 2NI H162 2NI:2H16 2NI H163 2NI:3H16 2NI H21 2NP:1H2 2NP HN21 2NP:1HN2 2NP HN22 2NP:2HN2 2NP H31 2NP:1H3 2NP H32 2NP:2H3 2NP H41 2NP:1H4 2NP H42 2NP:2H4 2NP H51 2NP:1H5 2NP H52 2NP:2H5 2NP H81 2NP:1H8 2NP H82 2NP:2H8 2NP HOP3 2NT:3HOP 2NT HOP2 2NT:2HOP 2NT H5' 2NT:1H5* 2NT H5'' 2NT:2H5* 2NT H4' 2NT: H4* 2NT H1' 2NT: H1* 2NT H71 2NT:1H5M 2NT H72 2NT:2H5M 2NT H73 2NT:3H5M 2NT H2' 2NT: H2* 2NT HB'1 2NT:1HB' 2NT HB'2 2NT:2HB' 2NT HC'1 2NT:1HC' 2NT HC'2 2NT:2HC' 2NT HF'1 2NT:1HF' 2NT HF'2 2NT:2HF' 2NT H3' 2NT: H3* 2NT HO3' 2NT:H3T 2NT H31 2O7:1H3 2O7 H32 2O7:2H3 2O7 H91 2O7:1H9 2O7 H92 2O7:2H9 2O7 H61 2O7:1H6 2O7 H62 2O7:2H6 2O7 H291 2O7:1H29 2O7 H292 2O7:2H29 2O7 H21 2OB:1H2 2OB H22 2OB:2H2 2OB H41 2OB:1H4 2OB H42 2OB:2H4 2OB H111 2OB:1H11 2OB H112 2OB:2H11 2OB H121 2OB:1H12 2OB H122 2OB:2H12 2OB H181 2OB:1H18 2OB H182 2OB:2H18 2OB H183 2OB:3H18 2OB H221 2OB:1H22 2OB H222 2OB:2H22 2OB H231 2OB:1H23 2OB H232 2OB:2H23 2OB H241 2OB:1H24 2OB H242 2OB:2H24 2OB H271 2OB:1H27 2OB H272 2OB:2H27 2OB H273 2OB:3H27 2OB H261 2OB:1H26 2OB H262 2OB:2H26 2OB H263 2OB:3H26 2OB H211 2OB:1H21 2OB H212 2OB:2H21 2OB H213 2OB:3H21 2OB H161 2OB:1H16 2OB H162 2OB:2H16 2OB H151 2OB:1H15 2OB H152 2OB:2H15 2OB H71 2OB:1H7 2OB H72 2OB:2H7 2OB H191 2OB:1H19 2OB H192 2OB:2H19 2OB H193 2OB:3H19 2OB H11 2OB:1H1 2OB H12 2OB:2H1 2OB H471 2OB:1H47 2OB H472 2OB:2H47 2OB H461 2OB:1H46 2OB H462 2OB:2H46 2OB H451 2OB:1H45 2OB H452 2OB:2H45 2OB H441 2OB:1H44 2OB H442 2OB:2H44 2OB H431 2OB:1H43 2OB H432 2OB:2H43 2OB H421 2OB:1H42 2OB H422 2OB:2H42 2OB H411 2OB:1H41 2OB H412 2OB:2H41 2OB H381 2OB:1H38 2OB H382 2OB:2H38 2OB H371 2OB:1H37 2OB H372 2OB:2H37 2OB H361 2OB:1H36 2OB H362 2OB:2H36 2OB H351 2OB:1H35 2OB H352 2OB:2H35 2OB H341 2OB:1H34 2OB H342 2OB:2H34 2OB H331 2OB:1H33 2OB H332 2OB:2H33 2OB H321 2OB:1H32 2OB H322 2OB:2H32 2OB H311 2OB:1H31 2OB H312 2OB:2H31 2OB H313 2OB:3H31 2OB HO11 2OF:1HO1 2OF HO12 2OF:2HO1 2OF HO21 2OF:1HO2 2OF HO22 2OF:2HO2 2OF H31 2OG:1H3 2OG H32 2OG:2H3 2OG H41 2OG:1H4 2OG H42 2OG:2H4 2OG H31 2OH:1H3 2OH H32 2OH:2H3 2OH H33 2OH:3H3 2OH H51 2OH:1H5 2OH H52 2OH:2H5 2OH H53 2OH:3H5 2OH HB1 2OP:1HB 2OP HB2 2OP:2HB 2OP HB3 2OP:3HB 2OP H71 2OS:1H7 2OS H72 2OS:2H7 2OS H81 2OS:1H8 2OS H82 2OS:2H8 2OS H91 2OS:1H9 2OS H92 2OS:2H9 2OS H101 2OS:1H10 2OS H102 2OS:2H10 2OS H111 2OS:1H11 2OS H112 2OS:2H11 2OS H121 2OS:1H12 2OS H122 2OS:2H12 2OS H171 2OS:1H17 2OS H172 2OS:2H17 2OS H181 2OS:1H18 2OS H182 2OS:2H18 2OS H321 2OS:1H32 2OS H322 2OS:2H32 2OS H311 2OS:1H31 2OS H312 2OS:2H31 2OS H313 2OS:3H31 2OS HOP2 2OT:2HOP 2OT H5' 2OT:1H5* 2OT H5'' 2OT:2H5* 2OT H4' 2OT: H4* 2OT H1' 2OT: H1* 2OT H71 2OT:1H5M 2OT H72 2OT:2H5M 2OT H73 2OT:3H5M 2OT H2' 2OT: H2* 2OT HB'1 2OT:1HB' 2OT HB'2 2OT:2HB' 2OT HC'1 2OT:1HC' 2OT HC'2 2OT:2HC' 2OT HF'1 2OT:1HF' 2OT HF'2 2OT:2HF' 2OT HF'3 2OT:3HF' 2OT HG'1 2OT:1HG' 2OT HG'2 2OT:2HG' 2OT HG'3 2OT:3HG' 2OT H3' 2OT: H3* 2OT HO3' 2OT:H3T 2OT HOP3 2OT:3HOP 2OT HN41 2PA:1HN4 2PA HN42 2PA:2HN4 2PA HN51 2PA:1HN5 2PA HN52 2PA:2HN5 2PA HO31 2PA:1HO3 2PA H31 2PC:1H3 2PC H32 2PC:2H3 2PC H41 2PC:1H4 2PC H42 2PC:2H4 2PC H51 2PC:1H5 2PC H52 2PC:2H5 2PC HO1 2PE:1HO 2PE H21 2PE:1H2 2PE H22 2PE:2H2 2PE H31 2PE:1H3 2PE H32 2PE:2H3 2PE H51 2PE:1H5 2PE H52 2PE:2H5 2PE H61 2PE:1H6 2PE H62 2PE:2H6 2PE H81 2PE:1H8 2PE H82 2PE:2H8 2PE H91 2PE:1H9 2PE H92 2PE:2H9 2PE H111 2PE:1H11 2PE H112 2PE:2H11 2PE H121 2PE:1H12 2PE H122 2PE:2H12 2PE H141 2PE:1H14 2PE H142 2PE:2H14 2PE H151 2PE:1H15 2PE H152 2PE:2H15 2PE H171 2PE:1H17 2PE H172 2PE:2H17 2PE H181 2PE:1H18 2PE H182 2PE:2H18 2PE H201 2PE:1H20 2PE H202 2PE:2H20 2PE H211 2PE:1H21 2PE H212 2PE:2H21 2PE H231 2PE:1H23 2PE H232 2PE:2H23 2PE H241 2PE:1H24 2PE H242 2PE:2H24 2PE H261 2PE:1H26 2PE H262 2PE:2H26 2PE H271 2PE:1H27 2PE H272 2PE:2H27 2PE HO2 2PE:2HO 2PE H31 2PG:1H3 2PG H32 2PG:2H3 2PG HOP3 2PG:3HOP 2PG HOP4 2PG:4HOP 2PG H31 2PH:1H3 2PH H32 2PH:2H3 2PH HN61 2PH:1HN6 2PH HN62 2PH:2HN6 2PH H111 2PH:1H11 2PH H112 2PH:2H11 2PH HOP2 2PH:2HOP 2PH HOP5 2PH:5HOP 2PH HOP6 2PH:6HOP 2PH HB1 2PI:1HB 2PI HB2 2PI:2HB 2PI HG1 2PI:1HG 2PI HG2 2PI:2HG 2PI HD1 2PI:1HD 2PI HD2 2PI:2HD 2PI HD3 2PI:3HD 2PI H21 2PL:1H2 2PL H22 2PL:2H2 2PL HOP3 2PL:3HOP 2PL HOP4 2PL:4HOP 2PL H141 2PM:1H14 2PM H142 2PM:2H14 2PM H151 2PM:1H15 2PM H152 2PM:2H15 2PM H161 2PM:1H16 2PM H162 2PM:2H16 2PM H163 2PM:3H16 2PM H171 2PM:1H17 2PM H172 2PM:2H17 2PM H173 2PM:3H17 2PM H31 2PP:1H3 2PP H32 2PP:2H3 2PP H41 2PP:1H4 2PP H42 2PP:2H4 2PP H51 2PP:1H5 2PP H52 2PP:2H5 2PP H53 2PP:3H5 2PP H1'1 2PP:1H1' 2PP H1'2 2PP:2H1' 2PP H2'1 2PP:1H2' 2PP H2'2 2PP:2H2' 2PP H3'1 2PP:1H3' 2PP H3'2 2PP:2H3' 2PP H3'3 2PP:3H3' 2PP HOP3 2PR:3HOP 2PR HOP2 2PR:2HOP 2PR H5' 2PR:1H5* 2PR H5'' 2PR:2H5* 2PR H4' 2PR: H4* 2PR H3' 2PR: H3* 2PR HO3' 2PR:H3T 2PR H2' 2PR:1H2* 2PR H2'' 2PR:2H2* 2PR H1' 2PR: H1* 2PR HN21 2PR:1HN2 2PR HN22 2PR:2HN2 2PR H7N 2PT: NH7 2PT H231 2PT:1H23 2PT H232 2PT:2H23 2PT H233 2PT:3H23 2PT H241 2PT:1H24 2PT H242 2PT:2H24 2PT H243 2PT:3H24 2PT HN51 2PT:1HN5 2PT HN52 2PT:2HN5 2PT H61 2PU:1H6 2PU H62 2PU:2H6 2PU H111 2PU:1H11 2PU H112 2PU:2H11 2PU H121 2PU:1H12 2PU H122 2PU:2H12 2PU H241 2PU:1H24 2PU H242 2PU:2H24 2PU H261 2PU:1H26 2PU H262 2PU:2H26 2PU H271 2PU:1H27 2PU H272 2PU:2H27 2PU H241 2PY:1H24 2PY H242 2PY:2H24 2PY H251 2PY:1H25 2PY H252 2PY:2H25 2PY HN41 2PY:1HN4 2PY HN42 2PY:2HN4 2PY HC51 2SA:1HC5 2SA HC52 2SA:2HC5 2SA H631 2SA:1H63 2SA H632 2SA:2H63 2SA H1O1 2SI:1H1O 2SI H3O1 2SI:1H3O 2SI HO61 2SI:1HO6 2SI HOS3 2SI:3HOS 2SI H4O1 2SI:1H4O 2SI H71 2SK:1H7 2SK H72 2SK:2H7 2SK H73 2SK:3H7 2SK H81 2SK:1H8 2SK H82 2SK:2H8 2SK H11 2SP:1H1 2SP H12 2SP:2H1 2SP H321 2SP:1H32 2SP H322 2SP:2H32 2SP H331 2SP:1H33 2SP H332 2SP:2H33 2SP H341 2SP:1H34 2SP H342 2SP:2H34 2SP H351 2SP:1H35 2SP H352 2SP:2H35 2SP H361 2SP:1H36 2SP H362 2SP:2H36 2SP H371 2SP:1H37 2SP H372 2SP:2H37 2SP H381 2SP:1H38 2SP H382 2SP:2H38 2SP H391 2SP:1H39 2SP H392 2SP:2H39 2SP H401 2SP:1H40 2SP H402 2SP:2H40 2SP H411 2SP:1H41 2SP H412 2SP:2H41 2SP H421 2SP:1H42 2SP H422 2SP:2H42 2SP H431 2SP:1H43 2SP H432 2SP:2H43 2SP H441 2SP:1H44 2SP H442 2SP:2H44 2SP H451 2SP:1H45 2SP H452 2SP:2H45 2SP H461 2SP:1H46 2SP H462 2SP:2H46 2SP H471 2SP:1H47 2SP H472 2SP:2H47 2SP H481 2SP:1H48 2SP H482 2SP:2H48 2SP H483 2SP:3H48 2SP H31 2SP:1H3 2SP H32 2SP:2H3 2SP H121 2SP:1H12 2SP H122 2SP:2H12 2SP H131 2SP:1H13 2SP H132 2SP:2H13 2SP H141 2SP:1H14 2SP H142 2SP:2H14 2SP H151 2SP:1H15 2SP H152 2SP:2H15 2SP H161 2SP:1H16 2SP H162 2SP:2H16 2SP H171 2SP:1H17 2SP H172 2SP:2H17 2SP H181 2SP:1H18 2SP H182 2SP:2H18 2SP H191 2SP:1H19 2SP H192 2SP:2H19 2SP H201 2SP:1H20 2SP H202 2SP:2H20 2SP H211 2SP:1H21 2SP H212 2SP:2H21 2SP H221 2SP:1H22 2SP H222 2SP:2H22 2SP H231 2SP:1H23 2SP H232 2SP:2H23 2SP H241 2SP:1H24 2SP H242 2SP:2H24 2SP H251 2SP:1H25 2SP H252 2SP:2H25 2SP H261 2SP:1H26 2SP H262 2SP:2H26 2SP H271 2SP:1H27 2SP H272 2SP:2H27 2SP H281 2SP:1H28 2SP H282 2SP:2H28 2SP H283 2SP:3H28 2SP HOP3 2ST:3HOP 2ST HOP2 2ST:2HOP 2ST H5A1 2ST:1H5A 2ST H5A2 2ST:2H5A 2ST H5A3 2ST:3H5A 2ST H2' 2ST: H2* 2ST H5' 2ST:1H5* 2ST H5'' 2ST:2H5* 2ST H4' 2ST: H4* 2ST H1' 2ST: H1* 2ST H3' 2ST: H3* 2ST HA'1 2ST:1HA* 2ST HA'2 2ST:2HA* 2ST HA'3 2ST:3HA* 2ST HO3' 2ST:H3T 2ST H21 2TB:1H2 2TB H22 2TB:2H2 2TB HN11 2TB:1HN1 2TB HN12 2TB:2HN1 2TB HN13 2TB:3HN1 2TB HN31 2TB:1HN3 2TB HN32 2TB:2HN3 2TB HN33 2TB:3HN3 2TB H81 2TH:1H8 2TH H82 2TH:2H8 2TH HN21 2TN:1HN2 2TN HN22 2TN:2HN2 2TN H101 2TN:1H10 2TN H102 2TN:2H10 2TN H11 2TN:1H1 2TN H12A 2TN:2H1 2TN H31 2TN:1H3 2TN H32 2TN:2H3 2TN H141 2TN:1H14 2TN H142 2TN:2H14 2TN H143 2TN:3H14 2TN H131 2TN:1H13 2TN H132 2TN:2H13 2TN H133 2TN:3H13 2TN H2A1 2TP:1H2A 2TP H2A2 2TP:2H2A 2TP H2A3 2TP:3H2A 2TP H4' 2TP: H4* 2TP H6' 2TP: H6* 2TP H351 2TP:1H35 2TP H352 2TP:2H35 2TP H4A1 2TP:1H4A 2TP H4A2 2TP:2H4A 2TP H4A3 2TP:3H4A 2TP H5A1 2TP:1H5A 2TP H5A2 2TP:2H5A 2TP H5B1 2TP:1H5B 2TP H5B2 2TP:2H5B 2TP H 2TY:1HN 2TY H2 2TY:2HN 2TY HB2 2TY:1HB 2TY HB3 2TY:2HB 2TY HH 2TY: HOH 2TY H21 2TY:1H2 2TY H22 2TY:2H2 2TY H191 2UN:1H19 2UN H192 2UN:2H19 2UN H171 2UN:1H17 2UN H172 2UN:2H17 2UN H173 2UN:3H17 2UN H181 2UN:1H18 2UN H182 2UN:2H18 2UN H183 2UN:3H18 2UN H101 2UN:1H10 2UN H102 2UN:2H10 2UN HG21 2VA:1HG2 2VA HG22 2VA:2HG2 2VA HG23 2VA:3HG2 2VA HG11 2VA:1HG1 2VA HG12 2VA:2HG1 2VA HG13 2VA:3HG1 2VA H 2VA:1HN 2VA H2 2VA:2HN 2VA H2' 2VA: H2* 2VA H3' 2VA: H3* 2VA H4' 2VA: H4* 2VA H5'1 2VA:1H5* 2VA H5'2 2VA:2H5* 2VA H5' 2VA: H5* 2VA H1' 2VA: H1* 2VA HC2 2VA: H2 2VA HN61 2VA:1HN6 2VA HN62 2VA:2HN6 2VA H131 300:1H13 300 H132 300:2H13 300 H133 300:3H13 300 H131 302:1H13 302 H132 302:2H13 302 H121 302:1H12 302 H122 302:2H12 302 H191 303:1H19 303 H192 303:2H19 303 H321 303:1H32 303 H322 303:2H32 303 H331 303:1H33 303 H332 303:2H33 303 H421 303:1H42 303 H422 303:2H42 303 H423 303:3H42 303 H461 303:1H46 303 H462 303:2H46 303 H463 303:3H46 303 H111 305:1H11 305 H112 305:2H11 305 H231 305:1H23 305 H232 305:2H23 305 H233 305:3H23 305 H131 306:1H13 306 H132 306:2H13 306 H251 306:1H25 306 H252 306:2H25 306 H261 306:1H26 306 H262 306:2H26 306 H271 306:1H27 306 H272 306:2H27 306 H281 306:1H28 306 H282 306:2H28 306 H291 306:1H29 306 H292 306:2H29 306 H141 307:1H14 307 H142 307:2H14 307 H221 307:1H22 307 H222 307:2H22 307 H223 307:3H22 307 H231 307:1H23 307 H232 307:2H23 307 H241 307:1H24 307 H242 307:2H24 307 H281 307:1H28 307 H282 307:2H28 307 H283 307:3H28 307 H261 307:1H26 307 H262 307:2H26 307 H391 307:1H39 307 H392 307:2H39 307 H393 307:3H39 307 H371 307:1H37 307 H372 307:2H37 307 H373 307:3H37 307 H111 309:1H11 309 H112 309:2H11 309 H221 309:1H22 309 H222 309:2H22 309 H223 309:3H22 309 H3B 312:H3'' 312 H4B 312:H4'' 312 H5B 312:H5'' 312 H6B 312:H6'' 312 H171 326:1H17 326 H172 326:2H17 326 H173 326:3H17 326 H211 326:1H21 326 H212 326:2H21 326 H213 326:3H21 326 H71 32P:1H7 32P H72 32P:2H7 32P H151 32P:1H15 32P H152 32P:2H15 32P H181 32P:1H18 32P H182 32P:2H18 32P H183 32P:3H18 32P H191 32P:1H19 32P H192 32P:2H19 32P H201 32P:1H20 32P H202 32P:2H20 32P H211 32P:1H21 32P H212 32P:2H21 32P H221 32P:1H22 32P H222 32P:2H22 32P HN31 32P:1HN3 32P HN32 32P:2HN3 32P H231 32P:1H23 32P H232 32P:2H23 32P HB1 32S:1HB 32S HB2 32S:2HB 32S HB1 32T:1HB 32T HB2 32T:2HB 32T H211 330:1H21 330 H212 330:2H21 330 H221 330:1H22 330 H222 330:2H22 330 H231 330:1H23 330 H232 330:2H23 330 H241 330:1H24 330 H242 330:2H24 330 H243 330:3H24 330 H381 333:1H38 333 H382 333:2H38 333 H321 335:1H32 335 H322 335:2H32 335 H121 335:1H12 335 H122 335:2H12 335 H11 336:1H1 336 H12 336:2H1 336 H61 336:1H6 336 H62 336:2H6 336 H91 336:1H9 336 H92 336:2H9 336 H131 336:1H13 336 H132 336:2H13 336 H221 336:1H22 336 H222 336:2H22 336 H251 336:1H25 336 H252 336:2H25 336 H431 336:1H43 336 H432 336:2H43 336 H461 336:1H46 336 H462 336:2H46 336 H511 336:1H51 336 H512 336:2H51 336 H561 336:1H56 336 H562 336:2H56 336 H581 336:1H58 336 H582 336:2H58 336 H611 336:1H61 336 H612 336:2H61 336 H21A 339:1H2 339 H22 339:2H2 339 H31 339:1H3 339 H32 339:2H3 339 H41 339:1H4 339 H42 339:2H4 339 HN71 339:1HN7 339 HN72 339:2HN7 339 HN81 339:1HN8 339 HN82 339:2HN8 339 H181 339:1H18 339 H182 339:2H18 339 H183 339:3H18 339 H191 339:1H19 339 H192 339:2H19 339 H193 339:3H19 339 H241 339:1H24 339 H242 339:2H24 339 H251 339:1H25 339 H252 339:2H25 339 H261 339:1H26 339 H262 339:2H26 339 H291 339:1H29 339 H292 339:2H29 339 H421 339:1H42 339 H422 339:2H42 339 H423 339:3H42 339 H231 33A:1H23 33A H232 33A:2H23 33A H2A1 33P:1H2A 33P H2A2 33P:2H2A 33P H2A3 33P:3H2A 33P H4A1 33P:1H4A 33P H4A2 33P:2H4A 33P H5A1 33P:1H5A 33P H5A2 33P:2H5A 33P HOA2 33P:2HOA 33P HOA3 33P:3HOA 33P HOB2 33P:2HOB 33P HOB3 33P:3HOB 33P H81 33P:1H8 33P H82 33P:2H8 33P H101 33P:1H10 33P H102 33P:2H10 33P H103 33P:3H10 33P H471 33Z:1H47 33Z H472 33Z:2H47 33Z H351 33Z:1H35 33Z H352 33Z:2H35 33Z H301 33Z:1H30 33Z H302 33Z:2H30 33Z H303 33Z:3H30 33Z H291 33Z:1H29 33Z H292 33Z:2H29 33Z H293 33Z:3H29 33Z H231 33Z:1H23 33Z H232 33Z:2H23 33Z H111 33Z:1H11 33Z H112 33Z:2H11 33Z H11 340:1H1 340 H121 340:1H12 340 H122 340:2H12 340 H123 340:3H12 340 H191 340:1H19 340 H192 340:2H19 340 H251 340:1H25 340 H261 340:1H26 340 H271 340:1H27 340 H281 340:1H28 340 H291 340:1H29 340 H371 340:1H37 340 H372 340:2H37 340 H373 340:3H37 340 H451 340:1H45 340 H452 340:2H45 340 H453 340:3H45 340 H381 342:1H38 342 H382 342:2H38 342 H271 342:1H27 342 H272 342:2H27 342 H221 342:1H22 342 H222 342:2H22 342 H241 342:1H24 342 H242 342:2H24 342 H251 342:1H25 342 H252 342:2H25 342 H261 342:1H26 342 H262 342:2H26 342 H471 343:1H47 343 H472 343:2H47 343 H351 343:1H35 343 H352 343:2H35 343 H301 343:1H30 343 H302 343:2H30 343 H303 343:3H30 343 H291 343:1H29 343 H292 343:2H29 343 H293 343:3H29 343 H111 343:1H11 343 H112 343:2H11 343 HN21 344:1HN2 344 HN22 344:2HN2 344 H261 345:1H26 345 H262 345:2H26 345 H271 345:1H27 345 H272 345:2H27 345 H291 345:1H29 345 H292 345:2H29 345 H301 345:1H30 345 H302 345:2H30 345 H391 345:1H39 345 H392 345:2H39 345 H272 346:2H27 346 H271 346:1H27 346 H292 346:2H29 346 H291 346:1H29 346 H312 346:2H31 346 H311 346:1H31 346 H241 346:1H24 346 H242 346:2H24 346 H303 346:3H30 346 H302 346:2H30 346 H301 346:1H30 346 H11 347:1H1 347 H12 347:2H1 347 H13 347:3H1 347 H41 347:1H4 347 H42 347:2H4 347 H111 347:1H11 347 H112 347:2H11 347 H131 347:1H13 347 H132 347:2H13 347 H141 347:1H14 347 H142 347:2H14 347 H151 347:1H15 347 H152 347:2H15 347 H161 347:1H16 347 H162 347:2H16 347 H191 347:1H19 347 H192 347:2H19 347 H193 347:3H19 347 H201 347:1H20 347 H202 347:2H20 347 H203 347:3H20 347 H211 347:1H21 347 H212 347:2H21 347 H213 347:3H21 347 H1N1 348:1H1N 348 H1N2 348:2H1N 348 H121 348:1H12 348 H122 348:2H12 348 H131 348:1H13 348 H132 348:2H13 348 H141 348:1H14 348 H142 348:2H14 348 H231 348:1H23 348 H232 348:2H23 348 H281 348:1H28 348 H282 348:2H28 348 H283 348:3H28 348 H411 348:1H41 348 H412 348:2H41 348 H413 348:3H41 348 H421 348:1H42 348 H422 348:2H42 348 H423 348:3H42 348 HN11 34A:1HN1 34A HN12 34A:2HN1 34A H71 34A:1H7 34A H72 34A:2H7 34A H73 34A:3H7 34A H81 34A:1H8 34A H82 34A:2H8 34A H83 34A:3H8 34A H5'1 34B:1H5' 34B H5'2 34B:2H5' 34B H6'1 34B:1H6' 34B H6'2 34B:2H6' 34B H6'3 34B:3H6' 34B HC21 34C:1HC2 34C HC41 34C:1HC4 34C HC51 34C:1HC5 34C HC71 34C:1HC7 34C HC72 34C:2HC7 34C HC91 34C:1HC9 34C HC92 34C:2HC9 34C H101 34C:1H10 34C H102 34C:2H10 34C H111 34C:1H11 34C H112 34C:2H11 34C H113 34C:3H11 34C H71 34P:1H7 34P H72 34P:2H7 34P H121 34P:1H12 34P H122 34P:2H12 34P H131 34P:1H13 34P H132 34P:2H13 34P H141 34P:1H14 34P H142 34P:2H14 34P H201 34P:1H20 34P H202 34P:2H20 34P H211 34P:1H21 34P H212 34P:2H21 34P H231 34P:1H23 34P H232 34P:2H23 34P H241 34P:1H24 34P H242 34P:2H24 34P H251 34P:1H25 34P H252 34P:2H25 34P H261 34P:1H26 34P H262 34P:2H26 34P H271 34P:1H27 34P H272 34P:2H27 34P H291 34P:1H29 34P H292 34P:2H29 34P H111 350:1H11 350 H112 350:2H11 350 H221 350:1H22 350 H222 350:2H22 350 H223 350:3H22 350 HN21 354:1HN2 354 HN22 354:2HN2 354 HB1 354:1HB 354 HB2 354:2HB 354 HG1 354:1HG 354 HG2 354:2HG 354 H101 357:1H10 357 H102 357:2H10 357 H111 357:1H11 357 H112 357:2H11 357 H113 357:3H11 357 H7'1 357:1H7* 357 H7'2 357:2H7* 357 H71 357:1H7 357 H72 357:2H7 357 H73 357:3H7 357 H6'1 357:1H6" 357 H6'2 357:2H6" 357 H6'3 357:3H6" 357 H2'1 357:1H2" 357 H2'2 357:2H2" 357 H3'1 357:1H3" 357 H3'2 357:2H3" 357 H5'1 357:1H5" 357 H5'2 357:2H5" 357 H5'3 357:3H5" 357 H6' 357: H6* 357 H5' 357: H5* 357 H4' 357: H4* 357 H8'1 357:1H8* 357 H8'2 357:2H8* 357 H8'3 357:3H8* 357 H2' 357: H2* 357 H81 358:1H8 358 H82 358:2H8 358 H91 358:1H9 358 H92 358:2H9 358 H231 358:1H23 358 H232 358:2H23 358 H241 358:1H24 358 H242 358:2H24 358 H251 358:1H25 358 H252 358:2H25 358 H261 358:1H26 358 H262 358:2H26 358 H41 35A:1H4 35A H42 35A:2H4 35A H61 35A:1H6 35A H62 35A:2H6 35A H111 35A:1H11 35A H112 35A:2H11 35A H131 35A:1H13 35A H132 35A:2H13 35A H141 35A:1H14 35A H142 35A:2H14 35A H161 35A:1H16 35A H162 35A:2H16 35A H201 35A:1H20 35A H202 35A:2H20 35A H203 35A:3H20 35A H231 35A:1H23 35A H232 35A:2H23 35A H233 35A:3H23 35A H241 35A:1H24 35A H242 35A:2H24 35A H243 35A:3H24 35A H271 35A:1H27 35A H272 35A:2H27 35A H273 35A:3H27 35A H281 35A:1H28 35A H282 35A:2H28 35A HOP2 35G:2HOP 35G H5'1 35G:1H5* 35G H5'2 35G:2H5* 35G H4' 35G: H4* 35G H3' 35G: H3* 35G H2' 35G: H2* 35G HO2' 35G:*HO2 35G H1' 35G: H1* 35G HN21 35G:1HN2 35G HN22 35G:2HN2 35G H111 360:1H11 360 H112 360:2H11 360 H131 360:1H13 360 H132 360:2H13 360 HAU1 364:1HAU 364 HAU2 364:2HAU 364 H111 366:1H11 366 H112 366:2H11 366 H191 367:1H19 367 H192 367:2H19 367 H441 367:1H44 367 H442 367:2H44 367 H451 367:1H45 367 H452 367:2H45 367 H461 367:1H46 367 H462 367:2H46 367 H091 368:1H09 368 H092 368:2H09 368 H131 368:1H13 368 H132 368:2H13 368 HP61 368:1HP6 368 HP62 368:2HP6 368 H271 368:1H27 368 H272 368:2H27 368 H161 371:1H16 371 H162 371:2H16 371 H163 371:3H16 371 H171 371:1H17 371 H172 371:2H17 371 H181 371:1H18 371 H182 371:2H18 371 H191 371:1H19 371 H192 371:2H19 371 H311 373:1H31 373 H312 373:2H31 373 H351 373:1H35 373 H352 373:2H35 373 H361 373:1H36 373 H362 373:2H36 373 H381 373:1H38 373 H382 373:2H38 373 H391 373:1H39 373 H392 373:2H39 373 H481 373:1H48 373 H482 373:2H48 373 H501 373:1H50 373 H502 373:2H50 373 H111 375:1H11 375 H112 375:2H11 375 H131 375:1H13 375 H132 375:2H13 375 H71 37A:1H7 37A H72 37A:2H7 37A H31 37A:1H3 37A H32 37A:2H3 37A H121 37A:1H12 37A H122 37A:2H12 37A H131 37T:1H13 37T H132 37T:2H13 37T H133 37T:3H13 37T H121 37T:1H12 37T H122 37T:2H12 37T H123 37T:3H12 37T H1N1 380:1H1N 380 H1N2 380:2H1N 380 H251 380:1H25 380 H252 380:2H25 380 H241 380:1H24 380 H242 380:2H24 380 H243 380:3H24 380 H321 380:1H32 380 H322 380:2H32 380 H323 380:3H32 380 H11 382:1H1 382 H12 382:2H1 382 H21 382:1H2 382 H22 382:2H2 382 H51 382:1H5 382 H52A 382:2H5 382 H61 382:1H6 382 H62 382:2H6 382 H191 382:1H19 382 H192 382:2H19 382 H341 382:1H34 382 H342 382:2H34 382 H141 383:1H14 383 H142 383:2H14 383 H161 383:1H16 383 H162 383:2H16 383 H301 383:1H30 383 H302 383:2H30 383 H41 385:1H4 385 H42 385:2H4 385 H71 385:1H7 385 H72 385:2H7 385 H91 385:1H9 385 H92 385:2H9 385 H141 385:1H14 385 H142 385:2H14 385 H171 385:1H17 385 H172 385:2H17 385 H251 385:1H25 385 H252 385:2H25 385 H341 385:1H34 385 H342 385:2H34 385 H343 385:3H34 385 H351 385:1H35 385 H352 385:2H35 385 H353 385:3H35 385 H361 385:1H36 385 H362 385:2H36 385 H451 385:1H45 385 H452 385:2H45 385 H481 385:1H48 385 H482 385:2H48 385 H483 385:3H48 385 H11 388:1H1 388 H12 388:2H1 388 H211 388:1H21 388 H212 388:2H21 388 H381 391:1H38 391 H382 391:2H38 391 H271 391:1H27 391 H272 391:2H27 391 H273 391:3H27 391 H71 393:1H7 393 H72 393:2H7 393 H181 393:1H18 393 H182 393:2H18 393 H141 394:1H14 394 H142 394:2H14 394 H151 394:1H15 394 H152 394:2H15 394 H181 394:1H18 394 H182 394:2H18 394 H183 394:3H18 394 H191 394:1H19 394 H192 394:2H19 394 H193 394:3H19 394 H201 394:1H20 394 H202 394:2H20 394 H203 394:3H20 394 H211 394:1H21 394 H212 394:2H21 394 H213 394:3H21 394 HO22 394:2HO2 394 HO27 394:7HO2 394 H141 395:1H14 395 H142 395:2H14 395 H151 395:1H15 395 H152 395:2H15 395 H181 395:1H18 395 H182 395:2H18 395 H183 395:3H18 395 H191 395:1H19 395 H192 395:2H19 395 H193 395:3H19 395 H201 395:1H20 395 H202 395:2H20 395 H203 395:3H20 395 H211 395:1H21 395 H212 395:2H21 395 H213 395:3H21 395 HO22 395:2HO2 395 HO27 395:7HO2 395 HN61 39A:1HN6 39A HN62 39A:2HN6 39A H9M1 39A:1H9M 39A H9M2 39A:2H9M 39A H9M3 39A:3H9M 39A H3M1 39A:1H3M 39A H3M2 39A:2H3M 39A H3M3 39A:3H3M 39A H2'1 39B:1H2' 39B H2'2 39B:2H2' 39B H4'1 39B:1H4' 39B H4'2 39B:2H4' 39B H5'1 39B:1H5' 39B H5'2 39B:2H5' 39B H6'1 39B:1H6' 39B H6'2 39B:2H6' 39B H6'3 39B:3H6' 39B H2'1 39E:1H2' 39E HA2 39E:2HA 39E HA1 39E:1HA 39E HB2 39E:2HB 39E HB1 39E:1HB 39E HC2 39E:2HC 39E HC1 39E:1HC 39E HD2 39E:2HD 39E HE3 39E:3HE 39E H201 39Z:1H20 39Z H202 39Z:2H20 39Z H203 39Z:3H20 39Z H191 3A3:1H19 3A3 H192 3A3:2H19 3A3 H201 3A3:1H20 3A3 H202 3A3:2H20 3A3 H5'1 3AA:1H5* 3AA H5'2 3AA:2H5* 3AA H'4 3AA:4H* 3AA H'1 3AA:1H* 3AA HN61 3AA:1HN6 3AA HN62 3AA:2HN6 3AA H'2 3AA:2H* 3AA H'3 3AA:3H* 3AA HA3' 3AA:HA3* 3AA H15' 3AA:H15* 3AA H25' 3AA:H25* 3AA HC4' 3AA:HC4* 3AA H3' 3AA: H3* 3AA HO3' 3AA:HO3* 3AA H2' 3AA: H2* 3AA HO2' 3AA:HO2* 3AA H1' 3AA: H1* 3AA HN71 3AA:1HN7 3AA HN72 3AA:2HN7 3AA H511 3AC:1H51 3AC H512 3AC:2H51 3AC H513 3AC:3H51 3AC H611 3AC:1H61 3AC H612 3AC:2H61 3AC H621 3AC:1H62 3AC H622 3AC:2H62 3AC H623 3AC:3H62 3AC HO5' 3AD:*HO5 3AD H5'1 3AD:1H5* 3AD H5'2 3AD:2H5* 3AD H4' 3AD: H4* 3AD H3'1 3AD:1H3* 3AD H3'2 3AD:2H3* 3AD H2' 3AD: H2* 3AD HO2' 3AD:*HO2 3AD H1' 3AD: H1* 3AD HN61 3AD:1HN6 3AD HN62 3AD:2HN6 3AD H41 3AF:1H4 3AF H43 3AF:3H4 3AF H42 3AF:2H4 3AF H51 3AF:1H5 3AF H52 3AF:2H5 3AF H53 3AF:3H5 3AF H61 3AF:1H6 3AF H63 3AF:3H6 3AF H62 3AF:2H6 3AF H71 3AF:1H7 3AF HC11 3AG:1HC1 3AG HC12 3AG:2HC1 3AG HC13 3AG:3HC1 3AG HC31 3AG:1HC3 3AG HC32 3AG:2HC3 3AG HC33 3AG:3HC3 3AG HC51 3AG:1HC5 3AG HC52 3AG:2HC5 3AG HC61 3AG:1HC6 3AG HC62 3AG:2HC6 3AG HC71 3AG:1HC7 3AG HC72 3AG:2HC7 3AG HC81 3AG:1HC8 3AG HC82 3AG:2HC8 3AG HC91 3AG:1HC9 3AG HC92 3AG:2HC9 3AG HC93 3AG:3HC9 3AG H2 3AH: HN2 3AH HB2 3AH:1HB 3AH HB3 3AH:2HB 3AH HN31 3AH:1HN3 3AH HN32 3AH:2HN3 3AH HN11 3AL:1HN1 3AL HN12 3AL:2HN1 3AL HOB2 3AN:2HOB 3AN HOB3 3AN:3HOB 3AN HOA1 3AN:1HOA 3AN H5'1 3AN:1H5* 3AN H5'2 3AN:2H5* 3AN HC'4 3AN:4HC* 3AN HC'3 3AN:3HC* 3AN H3'1 3AN:1H3* 3AN H3'2 3AN:2H3* 3AN HC'2 3AN:2HC* 3AN HO'2 3AN:2HO* 3AN HC'1 3AN:1HC* 3AN HC8 3AN:8HC 3AN HN61 3AN:1HN6 3AN HN62 3AN:2HN6 3AN HC2 3AN:2HC 3AN HN31 3AP:1HN3 3AP HN32 3AP:2HN3 3AP H2 3AR: HN2 3AR HB2 3AR:1HB 3AR HB3 3AR:2HB 3AR HG2 3AR:1HG 3AR HG3 3AR:2HG 3AR HD2 3AR:1HD 3AR HD3 3AR:2HD 3AR HH1 3AR:1HH1 3AR HH21 3AR:1HH2 3AR HH22 3AR:2HH2 3AR H11 3AR:1H1 3AR H12 3AR:2H1 3AR H21 3AR:1H2 3AR H22 3AR:2H2 3AR H31 3AR:1H3 3AR H32 3AR:2H3 3AR H33 3AR:3H3 3AR HOG2 3AT:2HOG 3AT HOG3 3AT:3HOG 3AT HOB2 3AT:2HOB 3AT HOA2 3AT:2HOA 3AT H5'1 3AT:1H5* 3AT H5'2 3AT:2H5* 3AT H4' 3AT: H4* 3AT H3'1 3AT:1H3* 3AT H3'2 3AT:2H3* 3AT H2'1 3AT:1H2* 3AT HO2' 3AT:HO2* 3AT H1' 3AT: H1* 3AT HN61 3AT:1HN6 3AT HN62 3AT:2HN6 3AT HAA1 3AY:1HAA 3AY HAA2 3AY:2HAA 3AY HAH1 3AY:1HAH 3AY HAH2 3AY:2HAH 3AY HAI1 3AY:1HAI 3AY HAI2 3AY:2HAI 3AY H6C1 3B3:1H6C 3B3 H6C2 3B3:2H6C 3B3 HAC1 3B3:1HAC 3B3 HAC2 3B3:2HAC 3B3 HN1 3B3:1HN 3B3 HN2 3B3:2HN 3B3 H11 3BB:1H1 3BB H12 3BB:2H1 3BB H31 3BB:1H3 3BB H32 3BB:2H3 3BB H41 3BB:1H4 3BB H42 3BB:2H4 3BB H51 3BC:1H5 3BC H52 3BC:2H5 3BC H53 3BC:3H5 3BC H61 3BC:1H6 3BC H62 3BC:2H6 3BC H63 3BC:3H6 3BC H71 3BC:1H7 3BC H72 3BC:2H7 3BC H73 3BC:3H7 3BC H111 3BC:1H11 3BC H112 3BC:2H11 3BC H113 3BC:3H11 3BC H121 3BC:1H12 3BC H122 3BC:2H12 3BC H123 3BC:3H12 3BC H131 3BC:1H13 3BC H132 3BC:2H13 3BC H133 3BC:3H13 3BC H171 3BC:1H17 3BC H172 3BC:2H17 3BC H221 3BC:1H22 3BC H222 3BC:2H22 3BC H223 3BC:3H22 3BC H231 3BC:1H23 3BC H232 3BC:2H23 3BC H233 3BC:3H23 3BC H281 3BC:1H28 3BC H282 3BC:2H28 3BC H301 3BC:1H30 3BC H302 3BC:2H30 3BC H311 3BC:1H31 3BC H312 3BC:2H31 3BC H361 3BC:1H36 3BC H362 3BC:2H36 3BC H511 3BC:1H51 3BC H512 3BC:2H51 3BC H513 3BC:3H51 3BC H521 3BC:1H52 3BC H522 3BC:2H52 3BC H523 3BC:3H52 3BC H11 3BN:1H1 3BN H12A 3BN:2H1 3BN H31 3BN:1H3 3BN H32 3BN:2H3 3BN H41 3BN:1H4 3BN H42 3BN:2H4 3BN H81 3BN:1H8 3BN H82 3BN:2H8 3BN H161 3BN:1H16 3BN H162 3BN:2H16 3BN H163 3BN:3H16 3BN H231 3BN:1H23 3BN H232 3BN:2H23 3BN H233 3BN:3H23 3BN H191 3BP:1H19 3BP H192 3BP:2H19 3BP H201 3BP:1H20 3BP H202 3BP:2H20 3BP H321 3BP:1H32 3BP H322 3BP:2H32 3BP HN31 3BP:1HN3 3BP HN32 3BP:2HN3 3BP H11A 3BP:1H1 3BP H12A 3BP:2H1 3BP H91 3BP:1H9 3BP H92 3BP:2H9 3BP H81 3BP:1H8 3BP H82 3BP:2H8 3BP H83 3BP:3H8 3BP HN21 3BP:1HN2 3BP HN22 3BP:2HN2 3BP H11 3BR:1H1 3BR H12 3BR:2H1 3BR H21 3BR:1H2 3BR H22 3BR:2H2 3BR H31 3BR:1H3 3BR H32 3BR:2H3 3BR H33 3BR:3H3 3BR HCA1 3BT:1HCA 3BT HCA2 3BT:2HCA 3BT HCB1 3BT:1HCB 3BT HCB2 3BT:2HCB 3BT HN11 3BT:1HN1 3BT HN12 3BT:2HN1 3BT HN21 3BT:1HN2 3BT H21 3BT:1H2 3BT H61 3BT:1H6 3BT H51 3BT:1H5 3BT H41 3BT:1H4 3BT HCC1 3BT:1HCC 3BT HCC2 3BT:2HCC 3BT HCD1 3BT:1HCD 3BT HCD2 3BT:2HCD 3BT H1'1 3BT:1H1' 3BT H1'2 3BT:2H1' 3BT HN2' 3BT:'HN2 3BT H161 3C3:1H16 3C3 H162 3C3:2H16 3C3 H181 3C3:1H18 3C3 H182 3C3:2H18 3C3 H191 3C3:1H19 3C3 H192 3C3:2H19 3C3 H201 3C3:1H20 3C3 H202 3C3:2H20 3C3 H203 3C3:3H20 3C3 H171 3C3:1H17 3C3 H172 3C3:2H17 3C3 HG1 3C4:1HG 3C4 HG2 3C4:2HG 3C4 H191 3CB:1H19 3CB H192 3CB:2H19 3CB H201 3CB:1H20 3CB H202 3CB:2H20 3CB H321 3CB:1H32 3CB H322 3CB:2H32 3CB HN51 3CB:1HN5 3CB HN52 3CB:2HN5 3CB H41 3CB:1H4 3CB H42 3CB:2H4 3CB H31A 3CB:1H3 3CB H32 3CB:2H3 3CB H33 3CB:3H3 3CB H91 3CB:1H9 3CB H92 3CB:2H9 3CB H61 3CB:1H6 3CB H62 3CB:2H6 3CB H63 3CB:3H6 3CB HN21 3CB:1HN2 3CB HN22 3CB:2HN2 3CB H21 3CL:1H2 3CL H22 3CL:2H2 3CL H31 3CL:1H3 3CL H32 3CL:2H3 3CL H41 3CL:1H4 3CL H42 3CL:2H4 3CL H61 3CM:1H6 3CM H62A 3CM:2H6 3CM H111 3CM:1H11 3CM H112 3CM:2H11 3CM H211 3CM:1H21 3CM H212 3CM:2H21 3CM H311 3CM:1H31 3CM H312 3CM:2H31 3CM H421 3CM:1H42 3CM H422 3CM:2H42 3CM H601 3CM:1H60 3CM H602 3CM:2H60 3CM HA1 3CN:1HA 3CN HA2 3CN:2HA 3CN HA3 3CN:3HA 3CN HB1 3CN:1HB 3CN HB2 3CN:2HB 3CN HC1 3CN:1HC 3CN HC2 3CN:2HC 3CN HND1 3CN:1HND 3CN HND2 3CN:2HND 3CN H61 3CP:1H6 3CP H62 3CP:2H6 3CP HO'2 3CP:2HO' 3CP H5'1 3CP:1H5' 3CP H5'2 3CP:2H5' 3CP HB1 3CP:1HB 3CP HB2 3CP:2HB 3CP HP91 3CP:1HP9 3CP HP92 3CP:2HP9 3CP HP93 3CP:3HP9 3CP HP81 3CP:1HP8 3CP HP82 3CP:2HP8 3CP HP83 3CP:3HP8 3CP HOP3 3CP:3HOP 3CP HP51 3CP:1HP5 3CP HP52 3CP:2HP5 3CP HP41 3CP:1HP4 3CP HP42 3CP:2HP4 3CP HP21 3CP:1HP2 3CP HP22 3CP:2HP2 3CP HP11 3CP:1HP1 3CP HP12 3CP:2HP1 3CP HS11 3CP:1HS1 3CP HS12 3CP:2HS1 3CP HS21 3CP:1HS2 3CP HS22 3CP:2HS2 3CP HS31 3CP:1HS3 3CP HS32 3CP:2HS3 3CP HOS5 3CP:5HOS 3CP H101 3CS:1H10 3CS H102 3CS:2H10 3CS H301 3CS:1H30 3CS H302 3CS:2H30 3CS H311 3CS:1H31 3CS H312 3CS:2H31 3CS H313 3CS:3H31 3CS H321 3CS:1H32 3CS H322 3CS:2H32 3CS H323 3CS:3H32 3CS H341 3CS:1H34 3CS H342 3CS:2H34 3CS H343 3CS:3H34 3CS H181 3CS:1H18 3CS H182 3CS:2H18 3CS H371 3CS:1H37 3CS H372 3CS:2H37 3CS H381 3CS:1H38 3CS H382 3CS:2H38 3CS H383 3CS:3H38 3CS H391 3CS:1H39 3CS H392 3CS:2H39 3CS H393 3CS:3H39 3CS H71 3CY:1H7 3CY H72 3CY:2H7 3CY H81 3CY:1H8 3CY H82 3CY:2H8 3CY H111 3CY:1H11 3CY H112 3CY:2H11 3CY H151 3CY:1H15 3CY H152 3CY:2H15 3CY H221 3CY:1H22 3CY H222 3CY:2H22 3CY H231 3CY:1H23 3CY H232 3CY:2H23 3CY H311 3CY:1H31 3CY H312 3CY:2H31 3CY H313 3CY:3H31 3CY H281 3CY:1H28 3CY H282 3CY:2H28 3CY H5' 3D1: H5* 3D1 H5'1 3D1:1H5* 3D1 H5'2 3D1:2H5* 3D1 H4' 3D1: H4* 3D1 H1' 3D1: H1* 3D1 HN61 3D1:1HN6 3D1 HN62 3D1:2HN6 3D1 H2'1 3D1:1H2* 3D1 H2'2 3D1:2H2* 3D1 H3' 3D1: H3* 3D1 H131 3D3:1H13 3D3 H132 3D3:2H13 3D3 H141 3D3:1H14 3D3 H142 3D3:2H14 3D3 H151 3D3:1H15 3D3 H152 3D3:2H15 3D3 HOP2 3DA:2HOP 3DA H5'1 3DA:1H5* 3DA H5'2 3DA:2H5* 3DA H4' 3DA: H4* 3DA H1' 3DA: H1* 3DA HN61 3DA:1HN6 3DA HN62 3DA:2HN6 3DA H2'1 3DA:1H2* 3DA HO'2 3DA:2HO* 3DA H3'1 3DA:1H3* 3DA H3'2 3DA:2H3* 3DA HOP3 3DA:3HOP 3DA HN61 3DD:1HN6 3DD HN62 3DD:2HN6 3DD H1'1 3DD:1H1' 3DD H1'2 3DD:2H1' 3DD H161 3DE:1H16 3DE H162 3DE:2H16 3DE H171 3DE:1H17 3DE H172 3DE:2H17 3DE H173 3DE:3H17 3DE H121 3DE:1H12 3DE H122 3DE:2H12 3DE H123 3DE:3H12 3DE H91 3DE:1H9 3DE H92 3DE:2H9 3DE H93 3DE:3H9 3DE H3'1 3DG:1H3' 3DG H3'2 3DG:2H3' 3DG H5'1 3DG:1H5' 3DG H5'2 3DG:2H5' 3DG HN21 3DG:1HN2 3DG HN22 3DG:2HN2 3DG HAA1 3DP:1HAA 3DP HAA2 3DP:2HAA 3DP HAA3 3DP:3HAA 3DP HAG1 3DP:1HAG 3DP HAG2 3DP:2HAG 3DP HAH1 3DP:1HAH 3DP HAH2 3DP:2HAH 3DP HAI1 3DP:1HAI 3DP HAI2 3DP:2HAI 3DP HAJ1 3DP:1HAJ 3DP HAJ2 3DP:2HAJ 3DP HAK1 3DP:1HAK 3DP HAK2 3DP:2HAK 3DP HAL1 3DP:1HAL 3DP HAL2 3DP:2HAL 3DP HAN1 3DP:1HAN 3DP HAN2 3DP:2HAN 3DP HAB1 3DP:1HAB 3DP HAB2 3DP:2HAB 3DP HAB3 3DP:3HAB 3DP HAC1 3DP:1HAC 3DP HAC2 3DP:2HAC 3DP HAC3 3DP:3HAC 3DP HAO1 3DP:1HAO 3DP HAO2 3DP:2HAO 3DP HAM1 3DP:1HAM 3DP HAM2 3DP:2HAM 3DP HAP1 3DP:1HAP 3DP HAP2 3DP:2HAP 3DP HOP2 3DR:2HOP 3DR HOP3 3DR:3HOP 3DR H2' 3DR:1H2* 3DR H2'' 3DR:2H2* 3DR H5' 3DR:1H5* 3DR H5'' 3DR:2H5* 3DR H4'1 3DR:1H4* 3DR H1'1 3DR:1H1* 3DR H1'2 3DR:2H1* 3DR H3' 3DR: H3* 3DR HO3' 3DR:HO3* 3DR H131 3EA:1H13 3EA H132 3EA:2H13 3EA H133 3EA:3H13 3EA H121 3EA:1H12 3EA H122 3EA:2H12 3EA H111 3EA:1H11 3EA H112 3EA:2H11 3EA H151 3EA:1H15 3EA H152 3EA:2H15 3EA H161 3EA:1H16 3EA H162 3EA:2H16 3EA H171 3EA:1H17 3EA H172 3EA:2H17 3EA H281 3EA:1H28 3EA H282 3EA:2H28 3EA H12 3EP:2H1 3EP H11 3EP:1H1 3EP H23 3EP:3H2 3EP H22 3EP:2H2 3EP H21 3EP:1H2 3EP H32 3EP:2H3 3EP H31 3EP:1H3 3EP H43 3EP:3H4 3EP H42 3EP:2H4 3EP H41 3EP:1H4 3EP H52 3EP:2H5 3EP H51 3EP:1H5 3EP H63 3EP:3H6 3EP H62 3EP:2H6 3EP H61 3EP:1H6 3EP HB1 3FB:1HB 3FB HB2 3FB:2HB 3FB HC1 3FB:1HC 3FB HC2 3FB:2HC 3FB H11 3FC:1H1 3FC H12 3FC:2H1 3FC H13 3FC:3H1 3FC H21A 3FC:1H2 3FC H22A 3FC:2H2 3FC H31 3FC:1H3 3FC H32 3FC:2H3 3FC H41 3FC:1H4 3FC H42 3FC:2H4 3FC H111 3FC:1H11 3FC H112 3FC:2H11 3FC H281 3FC:1H28 3FC H282 3FC:2H28 3FC H283 3FC:3H28 3FC H291 3FC:1H29 3FC H292 3FC:2H29 3FC H293 3FC:3H29 3FC H301 3FC:1H30 3FC H302 3FC:2H30 3FC H303 3FC:3H30 3FC H371 3FC:1H37 3FC H372 3FC:2H37 3FC H381 3FC:1H38 3FC H382 3FC:2H38 3FC HNC1 3FM:1HNC 3FM HNC2 3FM:2HNC 3FM H61 3FM:1H6 3FM H62 3FM:2H6 3FM H161 3FP:1H16 3FP H162 3FP:2H16 3FP H181 3FP:1H18 3FP H182 3FP:2H18 3FP H191 3FP:1H19 3FP H192 3FP:2H19 3FP H193 3FP:3H19 3FP H201 3FP:1H20 3FP H202 3FP:2H20 3FP H203 3FP:3H20 3FP H161 3FQ:1H16 3FQ H162 3FQ:2H16 3FQ H181 3FQ:1H18 3FQ H182 3FQ:2H18 3FQ H191 3FQ:1H19 3FQ H192 3FQ:2H19 3FQ H193 3FQ:3H19 3FQ H201 3FQ:1H20 3FQ H202 3FQ:2H20 3FQ H203 3FQ:3H20 3FQ H241 3FT:1H24 3FT H242 3FT:2H24 3FT H251 3FT:1H25 3FT H252 3FT:2H25 3FT H261 3FT:1H26 3FT H262 3FT:2H26 3FT H21 3GA:1H2 3GA H22 3GA:2H2 3GA H31 3GA:1H3 3GA H32 3GA:2H3 3GA HN1A 3GA:1HN 3GA HN2 3GA:2HN 3GA HB1 3GA:1HB 3GA HB2 3GA:2HB 3GA H11 3GA:1H1 3GA H12 3GA:2H1 3GA HD1 3GA:1HD 3GA HD2 3GA:2HD 3GA HN21 3GA:1HN2 3GA HN22 3GA:2HN2 3GA H11 3GC:1H1 3GC H22 3GC:2H2 3GC HB11 3GC:1HB1 3GC HB12 3GC:2HB1 3GC HG11 3GC:1HG1 3GC HG12 3GC:2HG1 3GC HB21 3GC:1HB2 3GC HB22 3GC:2HB2 3GC HOP2 3GP:2HOP 3GP HOP3 3GP:3HOP 3GP HO5' 3GP:*HO5 3GP H5'1 3GP:1H5* 3GP H5'2 3GP:2H5* 3GP H4' 3GP: H4* 3GP H3' 3GP: H3* 3GP H2' 3GP: H2* 3GP HO2' 3GP:*HO2 3GP H1' 3GP: H1* 3GP HN21 3GP:1HN2 3GP HN22 3GP:2HN2 3GP H1C1 3GR:1H1C 3GR H1C2 3GR:2H1C 3GR H101 3HA:1H10 3HA H102 3HA:2H10 3HA HO2' 3HB:'HO2 3HB H2A 3HC: AH2 3HC H61A 3HC:AH61 3HC H62A 3HC:AH62 3HC H8A 3HC: AH8 3HC H1B 3HC:AH1* 3HC H2B 3HC:AH2* 3HC HO2A 3HC:AHO2 3HC H3B 3HC:AH3* 3HC HOA8 3HC:8HOA 3HC HOA9 3HC:9HOA 3HC H4B 3HC:AH4* 3HC H51A 3HC:AH51 3HC H52A 3HC:AH52 3HC HOA2 3HC:2HOA 3HC HOA5 3HC:5HOA 3HC H121 3HC:1H12 3HC H122 3HC:2H12 3HC H131 3HC:1H13 3HC H132 3HC:2H13 3HC H133 3HC:3H13 3HC H141 3HC:1H14 3HC H142 3HC:2H14 3HC H143 3HC:3H14 3HC H71 3HC:1H7 3HC H72 3HC:2H7 3HC H61 3HC:1H6 3HC H62 3HC:2H6 3HC H31 3HC:1H3 3HC H32 3HC:2H3 3HC H21 3HC:1H2 3HC H22 3HC:2H2 3HC HC21 3HC:1HC2 3HC HC22 3HC:2HC2 3HC HC31 3HC:1HC3 3HC HO31 3HC:1HO3 3HC HC41 3HC:1HC4 3HC HC42 3HC:2HC4 3HC HC43 3HC:3HC4 3HC H1 3HD:1H 3HD H2 3HD:2H 3HD HO2 3HD:2HO 3HD H3 3HD:3H 3HD H31 3HD:1H3 3HD H32 3HD:2H3 3HD H33 3HD:3H3 3HD H4 3HD:4H 3HD HO4 3HD:4HO 3HD H5 3HD:5H 3HD H61 3HD:1H6 3HD H62 3HD:2H6 3HD HO6 3HD:6HO 3HD H21 3HG:1H2 3HG H22 3HG:2H2 3HG H41 3HG:1H4 3HG H42 3HG:2H4 3HG HA1 3HL:1HA 3HL HA2 3HL:2HA 3HL HG21 3HL:1HG2 3HL HG22 3HL:2HG2 3HL HG23 3HL:3HG2 3HL H71 3HP:1H7 3HP H72 3HP:2H7 3HP HN1 3HX:1HN 3HX HN2 3HX:2HN 3HX H1 3HX:1H 3HX H2 3HX:2H 3HX HB1 3HX:1HB 3HX HB2 3HX:2HB 3HX HG1 3HX:1HG 3HX HG2 3HX:2HG 3HX HD1 3HX:1HD 3HX HD2 3HX:2HD 3HX HNB1 3HX:1HNB 3HX HNB2 3HX:2HNB 3HX H1'1 3HX:1H1' 3HX H1'2 3HX:2H1' 3HX H2'1 3HX:1H2' 3HX H2'2 3HX:2H2' 3HX H101 3IB:1H10 3IB H102 3IB:2H10 3IB H111 3IB:1H11 3IB H112 3IB:2H11 3IB H121 3IB:1H12 3IB H122 3IB:2H12 3IB HN1 3ID:1HN 3ID H1O 3ID:1OH 3ID H2O 3ID:2OH 3ID HN31 3IG:1HN3 3IG HN32 3IG:2HN3 3IG HN41 3IG:1HN4 3IG HN42 3IG:2HN4 3IG H51 3IG:1H5 3IG H52 3IG:2H5 3IG H61 3IG:1H6 3IG H62 3IG:2H6 3IG H63 3IG:3H6 3IG H161 3IG:1H16 3IG H162 3IG:2H16 3IG H171 3IG:1H17 3IG H172 3IG:2H17 3IG H191 3IG:1H19 3IG H192 3IG:2H19 3IG H193 3IG:3H19 3IG H211 3IG:1H21 3IG H212 3IG:2H21 3IG H213 3IG:3H21 3IG H201 3IG:1H20 3IG H202 3IG:2H20 3IG H203 3IG:3H20 3IG H61 3IH:1H6 3IH H62 3IH:2H6 3IH H63 3IH:3H6 3IH H101 3IH:1H10 3IH H102 3IH:2H10 3IH H103 3IH:3H10 3IH H111 3IH:1H11 3IH H112 3IH:2H11 3IH H113 3IH:3H11 3IH H141 3IH:1H14 3IH H142 3IH:2H14 3IH H161 3IH:1H16 3IH H162 3IH:2H16 3IH H163 3IH:3H16 3IH H171 3IH:1H17 3IH H172 3IH:2H17 3IH H173 3IH:3H17 3IH H231 3IH:1H23 3IH H232 3IH:2H23 3IH H251 3IH:1H25 3IH H252 3IH:2H25 3IH H271 3IH:1H27 3IH H272 3IH:2H27 3IH H281 3IH:1H28 3IH H282 3IH:2H28 3IH H351 3IH:1H35 3IH H352 3IH:2H35 3IH H353 3IH:3H35 3IH H151 3IL:1H15 3IL H152 3IL:2H15 3IL H11A 3IN:1H1 3IN H12 3IN:2H1 3IN H71 3IN:1H7 3IN H72 3IN:2H7 3IN H73 3IN:3H7 3IN H81 3IN:1H8 3IN H82 3IN:2H8 3IN H91 3IN:1H9 3IN H92 3IN:2H9 3IN H101 3IN:1H10 3IN H102 3IN:2H10 3IN H121 3IN:1H12 3IN H122 3IN:2H12 3IN H141 3IN:1H14 3IN H142 3IN:2H14 3IN H241 3IN:1H24 3IN H242 3IN:2H24 3IN H271 3IN:1H27 3IN H272 3IN:2H27 3IN H351 3IN:1H35 3IN H352 3IN:2H35 3IN H51 3IN:1H5 3IN H52 3IN:2H5 3IN H53 3IN:3H5 3IN H61 3IN:1H6 3IN H62 3IN:2H6 3IN H63 3IN:3H6 3IN H251 3IN:1H25 3IN H252 3IN:2H25 3IN H291 3IN:1H29 3IN H292 3IN:2H29 3IN H293 3IN:3H29 3IN H261 3IN:1H26 3IN H262 3IN:2H26 3IN H371 3IN:1H37 3IN H372 3IN:2H37 3IN H281 3IN:1H28 3IN H282 3IN:2H28 3IN H283 3IN:3H28 3IN HAI1 3IO:1HAI 3IO HAI2 3IO:2HAI 3IO H1N1 3IP:1H1N 3IP H1N2 3IP:2H1N 3IP H9C1 3IP:1H9C 3IP H9C2 3IP:2H9C 3IP H11A 3LG:1H1 3LG H12A 3LG:2H1 3LG H13A 3LG:3H1 3LG H41 3LG:1H4 3LG H42 3LG:2H4 3LG H211 3LG:1H21 3LG H212 3LG:2H21 3LG H221 3LG:1H22 3LG H222 3LG:2H22 3LG H241 3LG:1H24 3LG H242 3LG:2H24 3LG H311 3LG:1H31 3LG H312 3LG:2H31 3LG H321 3LG:1H32 3LG H322 3LG:2H32 3LG H331 3LG:1H33 3LG H332 3LG:2H33 3LG H171 3LG:1H17 3LG H172 3LG:2H17 3LG HAA1 3LP:1HAA 3LP HAA2 3LP:2HAA 3LP HAA3 3LP:3HAA 3LP HAK1 3LP:1HAK 3LP HAK2 3LP:2HAK 3LP HAG1 3LP:1HAG 3LP HAG2 3LP:2HAG 3LP HAH1 3LP:1HAH 3LP HAH2 3LP:2HAH 3LP HAL1 3LP:1HAL 3LP HAL2 3LP:2HAL 3LP HAP1 3LP:1HAP 3LP HAP2 3LP:2HAP 3LP HAO1 3LP:1HAO 3LP HAO2 3LP:2HAO 3LP HAM1 3LP:1HAM 3LP HAM2 3LP:2HAM 3LP HAI1 3LP:1HAI 3LP HAI2 3LP:2HAI 3LP HAF1 3LP:1HAF 3LP HAF2 3LP:2HAF 3LP HAJ1 3LP:1HAJ 3LP HAJ2 3LP:2HAJ 3LP HAN1 3LP:1HAN 3LP HAN2 3LP:2HAN 3LP H31 3MA:1H3 3MA H32 3MA:2H3 3MA H33 3MA:3H3 3MA HN61 3MA:1HN6 3MA HN62 3MA:2HN6 3MA H71 3MB:1H7 3MB H72 3MB:2H7 3MB H73 3MB:3H7 3MB HN1 3MB:1HN 3MB HN2 3MB:2HN 3MB H31 3MC:1H3 3MC H32 3MC:2H3 3MC H33 3MC:3H3 3MC HN41 3MC:1HN4 3MC HN42 3MC:2HN4 3MC H2 3MD: HN 3MD HB11 3MD:1HB1 3MD HB12 3MD:2HB1 3MD HB13 3MD:3HB1 3MD H5'1 3ME:1H5' 3ME H5'2 3ME:2H5' 3ME H5A1 3ME:1H5A 3ME H5A2 3ME:2H5A 3ME H5A3 3ME:3H5A 3ME HB'1 3ME:1HB' 3ME HB'2 3ME:2HB' 3ME HC'1 3ME:1HC' 3ME HC'2 3ME:2HC' 3ME HE'1 3ME:1HE' 3ME HE'2 3ME:2HE' 3ME HF'1 3ME:1HF' 3ME HF'2 3ME:2HF' 3ME HI'1 3ME:1HI' 3ME HI'2 3ME:2HI' 3ME HI'3 3ME:3HI' 3ME HJ'1 3ME:1HJ' 3ME HJ'2 3ME:2HJ' 3ME HJ'3 3ME:3HJ' 3ME H11 3MF:1H1 3MF H12 3MF:2H1 3MF H61 3MF:1H6 3MF H62 3MF:2H6 3MF H71 3MF:1H7 3MF H72 3MF:2H7 3MF H73 3MF:3H7 3MF H21A 3MN:1H2 3MN H22 3MN:2H2 3MN H11 3MN:1H1 3MN H12A 3MN:2H1 3MN H161 3MN:1H16 3MN H162 3MN:2H16 3MN H111 3MN:1H11 3MN H112 3MN:2H11 3MN H281 3MN:1H28 3MN H282 3MN:2H28 3MN H283 3MN:3H28 3MN H41 3MO:1H4 3MO H42 3MO:2H4 3MO H31 3MO:1H3 3MO H32 3MO:2H3 3MO H71 3MO:1H7 3MO H72 3MO:2H7 3MO H73 3MO:3H7 3MO HB1 3MP:1HB 3MP HB2 3MP:2HB 3MP HB3 3MP:3HB 3MP H11 3MR:1H1 3MR H12 3MR:2H1 3MR H13 3MR:3H1 3MR H51 3MR:1H5 3MR H52 3MR:2H5 3MR H61 3MR:1H6 3MR H62 3MR:2H6 3MR H101 3MR:1H10 3MR H102 3MR:2H10 3MR H111 3MR:1H11 3MR H112 3MR:2H11 3MR H121 3MR:1H12 3MR H122 3MR:2H12 3MR H131 3MR:1H13 3MR H132 3MR:2H13 3MR H141 3MR:1H14 3MR H142 3MR:2H14 3MR H161 3MR:1H16 3MR H162 3MR:2H16 3MR H321 3MR:1H32 3MR H322 3MR:2H32 3MR H341 3MR:1H34 3MR H342 3MR:2H34 3MR H351 3MR:1H35 3MR H352 3MR:2H35 3MR H361 3MR:1H36 3MR H362 3MR:2H36 3MR H371 3MR:1H37 3MR H372 3MR:2H37 3MR H381 3MR:1H38 3MR H382 3MR:2H38 3MR H11A 3MT:1H1 3MT H12 3MT:2H1 3MT H13 3MT:3H1 3MT H171 3NA:1H17 3NA H172 3NA:2H17 3NA H201 3NA:1H20 3NA H202 3NA:2H20 3NA H221 3NH:1H22 3NH H222 3NH:2H22 3NH H301 3NH:1H30 3NH H302 3NH:2H30 3NH H101 3NH:1H10 3NH H102 3NH:2H10 3NH H081 3NH:1H08 3NH H082 3NH:2H08 3NH H451 3NH:1H45 3NH H452 3NH:2H45 3NH H471 3NH:1H47 3NH H472 3NH:2H47 3NH H481 3NH:1H48 3NH H482 3NH:2H48 3NH H361 3NH:1H36 3NH H362 3NH:2H36 3NH HN11 3NH:1HN1 3NH HN12 3NH:2HN1 3NH H21 3NP:1H2 3NP H22 3NP:2H2 3NP H31 3NP:1H3 3NP H32 3NP:2H3 3NP H7C1 3NT:1H7C 3NT H7C2 3NT:2H7C 3NT H7C3 3NT:3H7C 3NT H171 3OD:1H17 3OD H172 3OD:2H17 3OD H173 3OD:3H17 3OD H111 3OD:1H11 3OD H112 3OD:2H11 3OD H11 3OD:1H1 3OD H12A 3OD:2H1 3OD HN31 3OD:1HN3 3OD HN32 3OD:2HN3 3OD HO11 3OF:1HO1 3OF HO12 3OF:2HO1 3OF HO21 3OF:1HO2 3OF HO22 3OF:2HO2 3OF H21 3OH:1H2 3OH H22 3OH:2H2 3OH H31 3OH:1H3 3OH H32 3OH:2H3 3OH H11 3OL:1H1 3OL H12 3OL:2H1 3OL H21 3OL:1H2 3OL H31 3OL:1H3 3OL H41 3OL:1H4 3OL H42 3OL:2H4 3OL H51 3OL:1H5 3OL H52 3OL:2H5 3OL H61 3OL:1H6 3OL H62 3OL:2H6 3OL H71 3OL:1H7 3OL H72 3OL:2H7 3OL H81 3OL:1H8 3OL H82 3OL:2H8 3OL H83 3OL:3H8 3OL H4C1 3ON:1H4C 3ON H4C2 3ON:2H4C 3ON H111 3ON:1H11 3ON H112 3ON:2H11 3ON H113 3ON:3H11 3ON H6C1 3ON:1H6C 3ON H6C2 3ON:2H6C 3ON H9C1 3ON:1H9C 3ON H9C2 3ON:2H9C 3ON H9C3 3ON:3H9C 3ON H8C1 3ON:1H8C 3ON H8C2 3ON:2H8C 3ON H8C3 3ON:3H8C 3ON H141 3ON:1H14 3ON H142 3ON:2H14 3ON H143 3ON:3H14 3ON H191 3ON:1H19 3ON H192 3ON:2H19 3ON H193 3ON:3H19 3ON H261 3ON:1H26 3ON H262 3ON:2H26 3ON H263 3ON:3H26 3ON H301 3ON:1H30 3ON H302 3ON:2H30 3ON H303 3ON:3H30 3ON H311 3ON:1H31 3ON H312 3ON:2H31 3ON H4C1 3P4:1H4C 3P4 H4C2 3P4:2H4C 3P4 H8C1 3P4:1H8C 3P4 H8C2 3P4:2H8C 3P4 H8C3 3P4:3H8C 3P4 H101 3P4:1H10 3P4 H102 3P4:2H10 3P4 H111 3P4:1H11 3P4 H112 3P4:2H11 3P4 H151 3P4:1H15 3P4 H152 3P4:2H15 3P4 H171 3P4:1H17 3P4 H172 3P4:2H17 3P4 H181 3P4:1H18 3P4 H182 3P4:2H18 3P4 H183 3P4:3H18 3P4 H191 3P4:1H19 3P4 H192 3P4:2H19 3P4 H221 3P4:1H22 3P4 H222 3P4:2H22 3P4 H231 3P4:1H23 3P4 H232 3P4:2H23 3P4 H151 3PC:1H15 3PC H152 3PC:2H15 3PC H153 3PC:3H15 3PC H141 3PC:1H14 3PC H142 3PC:2H14 3PC H131 3PC:1H13 3PC H132 3PC:2H13 3PC H121 3PC:1H12 3PC H122 3PC:2H12 3PC H111 3PC:1H11 3PC H112 3PC:2H11 3PC H91 3PC:1H9 3PC H92 3PC:2H9 3PC H171 3PC:1H17 3PC H172 3PC:2H17 3PC H181 3PC:1H18 3PC H182 3PC:2H18 3PC H191 3PC:1H19 3PC H192 3PC:2H19 3PC H201 3PC:1H20 3PC H202 3PC:2H20 3PC H211 3PC:1H21 3PC H212 3PC:2H21 3PC H213 3PC:3H21 3PC H71 3PC:1H7 3PC H72 3PC:2H7 3PC H61 3PC:1H6 3PC H62 3PC:2H6 3PC H51 3PC:1H5 3PC H52 3PC:2H5 3PC H41 3PC:1H4 3PC H42 3PC:2H4 3PC H11 3PC:1H1 3PC H12 3PC:2H1 3PC H13 3PC:3H1 3PC H21 3PC:1H2 3PC H22 3PC:2H2 3PC H23 3PC:3H2 3PC H31 3PC:1H3 3PC H32 3PC:2H3 3PC H33 3PC:3H3 3PC H5'1 3PD:1H5' 3PD H5'2 3PD:2H5' 3PD H2'1 3PD:1H2' 3PD H2'2 3PD:2H2' 3PD HN21 3PD:1HN2 3PD HN22 3PD:2HN2 3PD HN1 3PE:1HN 3PE HN2 3PE:2HN 3PE HN3 3PE:3HN 3PE H111 3PE:1H11 3PE H112 3PE:2H11 3PE H121 3PE:1H12 3PE H122 3PE:2H12 3PE H11 3PE:1H1 3PE H12 3PE:2H1 3PE H31 3PE:1H3 3PE H32 3PE:2H3 3PE H321 3PE:1H32 3PE H322 3PE:2H32 3PE H331 3PE:1H33 3PE H332 3PE:2H33 3PE H341 3PE:1H34 3PE H342 3PE:2H34 3PE H351 3PE:1H35 3PE H352 3PE:2H35 3PE H361 3PE:1H36 3PE H362 3PE:2H36 3PE H371 3PE:1H37 3PE H372 3PE:2H37 3PE H381 3PE:1H38 3PE H382 3PE:2H38 3PE H391 3PE:1H39 3PE H392 3PE:2H39 3PE H3A1 3PE:1H3A 3PE H3A2 3PE:2H3A 3PE H3B1 3PE:1H3B 3PE H3B2 3PE:2H3B 3PE H3C1 3PE:1H3C 3PE H3C2 3PE:2H3C 3PE H3D1 3PE:1H3D 3PE H3D2 3PE:2H3D 3PE H3E1 3PE:1H3E 3PE H3E2 3PE:2H3E 3PE H3F1 3PE:1H3F 3PE H3F2 3PE:2H3F 3PE H3G1 3PE:1H3G 3PE H3G2 3PE:2H3G 3PE H3H1 3PE:1H3H 3PE H3H2 3PE:2H3H 3PE H3I1 3PE:1H3I 3PE H3I2 3PE:2H3I 3PE H3I3 3PE:3H3I 3PE H221 3PE:1H22 3PE H222 3PE:2H22 3PE H231 3PE:1H23 3PE H232 3PE:2H23 3PE H241 3PE:1H24 3PE H242 3PE:2H24 3PE H251 3PE:1H25 3PE H252 3PE:2H25 3PE H261 3PE:1H26 3PE H262 3PE:2H26 3PE H271 3PE:1H27 3PE H272 3PE:2H27 3PE H281 3PE:1H28 3PE H282 3PE:2H28 3PE H291 3PE:1H29 3PE H292 3PE:2H29 3PE H2A1 3PE:1H2A 3PE H2A2 3PE:2H2A 3PE H2B1 3PE:1H2B 3PE H2B2 3PE:2H2B 3PE H2C1 3PE:1H2C 3PE H2C2 3PE:2H2C 3PE H2D1 3PE:1H2D 3PE H2D2 3PE:2H2D 3PE H2E1 3PE:1H2E 3PE H2E2 3PE:2H2E 3PE H2F1 3PE:1H2F 3PE H2F2 3PE:2H2F 3PE H2G1 3PE:1H2G 3PE H2G2 3PE:2H2G 3PE H2H1 3PE:1H2H 3PE H2H2 3PE:2H2H 3PE H2I1 3PE:1H2I 3PE H2I2 3PE:2H2I 3PE H2I3 3PE:3H2I 3PE H31 3PG:1H3 3PG H32 3PG:2H3 3PG HOP3 3PG:3HOP 3PG HOP4 3PG:4HOP 3PG H11 3PH:1H1 3PH H12 3PH:2H1 3PH H221 3PH:1H22 3PH H222 3PH:2H22 3PH H231 3PH:1H23 3PH H232 3PH:2H23 3PH H241 3PH:1H24 3PH H242 3PH:2H24 3PH H251 3PH:1H25 3PH H252 3PH:2H25 3PH H261 3PH:1H26 3PH H262 3PH:2H26 3PH H271 3PH:1H27 3PH H272 3PH:2H27 3PH H281 3PH:1H28 3PH H282 3PH:2H28 3PH H291 3PH:1H29 3PH H292 3PH:2H29 3PH H2A1 3PH:1H2A 3PH H2A2 3PH:2H2A 3PH H2B1 3PH:1H2B 3PH H2B2 3PH:2H2B 3PH H2C1 3PH:1H2C 3PH H2C2 3PH:2H2C 3PH H2D1 3PH:1H2D 3PH H2D2 3PH:2H2D 3PH H2E1 3PH:1H2E 3PH H2E2 3PH:2H2E 3PH H2F1 3PH:1H2F 3PH H2F2 3PH:2H2F 3PH H2G1 3PH:1H2G 3PH H2G2 3PH:2H2G 3PH H2H1 3PH:1H2H 3PH H2H2 3PH:2H2H 3PH H2I1 3PH:1H2I 3PH H2I2 3PH:2H2I 3PH H2I3 3PH:3H2I 3PH H31 3PH:1H3 3PH H32 3PH:2H3 3PH H321 3PH:1H32 3PH H322 3PH:2H32 3PH H331 3PH:1H33 3PH H332 3PH:2H33 3PH H341 3PH:1H34 3PH H342 3PH:2H34 3PH H351 3PH:1H35 3PH H352 3PH:2H35 3PH H361 3PH:1H36 3PH H362 3PH:2H36 3PH H371 3PH:1H37 3PH H372 3PH:2H37 3PH H381 3PH:1H38 3PH H382 3PH:2H38 3PH H391 3PH:1H39 3PH H392 3PH:2H39 3PH H3A1 3PH:1H3A 3PH H3A2 3PH:2H3A 3PH H3B1 3PH:1H3B 3PH H3B2 3PH:2H3B 3PH H3C1 3PH:1H3C 3PH H3C2 3PH:2H3C 3PH H3D1 3PH:1H3D 3PH H3D2 3PH:2H3D 3PH H3E1 3PH:1H3E 3PH H3E2 3PH:2H3E 3PH H3F1 3PH:1H3F 3PH H3F2 3PH:2H3F 3PH H3G1 3PH:1H3G 3PH H3G2 3PH:2H3G 3PH H3H1 3PH:1H3H 3PH H3H2 3PH:2H3H 3PH H3I1 3PH:1H3I 3PH H3I2 3PH:2H3I 3PH H3I3 3PH:3H3I 3PH H71 3PI:1H7 3PI H72 3PI:2H7 3PI H91 3PI:1H9 3PI H92 3PI:2H9 3PI H111 3PI:1H11 3PI H112 3PI:2H11 3PI H121 3PI:1H12 3PI H122 3PI:2H12 3PI H131 3PI:1H13 3PI H132 3PI:2H13 3PI H133 3PI:3H13 3PI H151 3PI:1H15 3PI H152 3PI:2H15 3PI H161 3PI:1H16 3PI H162 3PI:2H16 3PI H171 3PI:1H17 3PI H172 3PI:2H17 3PI H173 3PI:3H17 3PI HA1 3PL:1HA 3PL HA2 3PL:2HA 3PL HB1 3PL:1HB 3PL HB2 3PL:2HB 3PL HOG2 3PO:2HOG 3PO HOG3 3PO:3HOG 3PO HOB2 3PO:2HOB 3PO HOA2 3PO:2HOA 3PO HO5' 3PO:HO5* 3PO HCB1 3PP:1HCB 3PP HCB2 3PP:2HCB 3PP HCG1 3PP:1HCG 3PP HCG2 3PP:2HCG 3PP H31 3PY:1H3 3PY H32 3PY:2H3 3PY H21A 3QC:1H2 3QC H22A 3QC:2H2 3QC H331 3QC:1H33 3QC H332 3QC:2H33 3QC H333 3QC:3H33 3QC H41 3QC:1H4 3QC H42 3QC:2H4 3QC H291 3QC:1H29 3QC H292 3QC:2H29 3QC H293 3QC:3H29 3QC H401 3QC:1H40 3QC H402 3QC:2H40 3QC H403 3QC:3H40 3QC H441 3QC:1H44 3QC H442 3QC:2H44 3QC H443 3QC:3H44 3QC H6X1 3SA:1H6X 3SA H6X2 3SA:2H6X 3SA H6Y1 3SA:1H6Y 3SA H6Y2 3SA:2H6Y 3SA H6Y3 3SA:3H6Y 3SA H7Z1 3SA:1H7Z 3SA H7Z2 3SA:2H7Z 3SA H31 3SL:1H3 3SL H32 3SL:2H3 3SL HN81 3SP:1HN8 3SP HN82 3SP:2HN8 3SP H91 3SP:1H9 3SP H92 3SP:2H9 3SP H141 3SP:1H14 3SP H142 3SP:2H14 3SP H151 3SP:1H15 3SP H152 3SP:2H15 3SP H161 3SP:1H16 3SP H162 3SP:2H16 3SP H221 3SP:1H22 3SP H222 3SP:2H22 3SP H241 3SP:1H24 3SP H242 3SP:2H24 3SP H261 3SP:1H26 3SP H262 3SP:2H26 3SP H271 3SP:1H27 3SP H272 3SP:2H27 3SP H281 3SP:1H28 3SP H282 3SP:2H28 3SP H291 3SP:1H29 3SP H292 3SP:2H29 3SP H301 3SP:1H30 3SP H302 3SP:2H30 3SP HN31 3TC:1HN3 3TC HN32 3TC:2HN3 3TC H61 3TC:1H6 3TC H62 3TC:2H6 3TC H81 3TC:1H8 3TC H82 3TC:2H8 3TC H151 3TH:1H15 3TH H152 3TH:2H15 3TH H31 3TL:1H3 3TL H32 3TL:2H3 3TL H201 3TL:1H20 3TL H202 3TL:2H20 3TL H203 3TL:3H20 3TL HA51 3TL:1HA5 3TL HA52 3TL:2HA5 3TL H701 3TL:1H70 3TL H702 3TL:2H70 3TL H703 3TL:3H70 3TL HG61 3TL:1HG6 3TL HG62 3TL:2HG6 3TL HG63 3TL:3HG6 3TL HG51 3TL:1HG5 3TL HG52 3TL:2HG5 3TL HG53 3TL:3HG5 3TL H531 3TL:1H53 3TL H532 3TL:2H53 3TL HG21 3TL:1HG2 3TL HG22 3TL:2HG2 3TL HG23 3TL:3HG2 3TL HG11 3TL:1HG1 3TL HG12 3TL:2HG1 3TL HG13 3TL:3HG1 3TL HA1 3TL:1HA 3TL HA2 3TL:2HA 3TL HAA1 3TN:1HAA 3TN HAA2 3TN:2HAA 3TN HAA3 3TN:3HAA 3TN HAB1 3TN:1HAB 3TN HAB2 3TN:2HAB 3TN HAB3 3TN:3HAB 3TN HAC1 3TN:1HAC 3TN HAC2 3TN:2HAC 3TN HAC3 3TN:3HAC 3TN HAP1 3TN:1HAP 3TN HAP2 3TN:2HAP 3TN HAQ1 3TN:1HAQ 3TN HAQ2 3TN:2HAQ 3TN HAD1 3TN:1HAD 3TN HAD2 3TN:2HAD 3TN HAD3 3TN:3HAD 3TN HAE1 3TN:1HAE 3TN HAE2 3TN:2HAE 3TN HAE3 3TN:3HAE 3TN HN61 3TP:1HN6 3TP HN62 3TP:2HN6 3TP H371 3TP:1H37 3TP H372 3TP:2H37 3TP H373 3TP:3H37 3TP H441 3TP:1H44 3TP H442 3TP:2H44 3TP H443 3TP:3H44 3TP H3A1 3TR:1H3A 3TR H3A2 3TR:2H3A 3TR HT31 3TY:1HT3 3TY HT32 3TY:2HT3 3TY H511 3UN:1H51 3UN H512 3UN:2H51 3UN H541 3UN:1H54 3UN H542 3UN:2H54 3UN H543 3UN:3H54 3UN H151 3UN:1H15 3UN H152 3UN:2H15 3UN H441 3UN:1H44 3UN H442 3UN:2H44 3UN H231 3UN:1H23 3UN H232 3UN:2H23 3UN H233 3UN:3H23 3UN H221 3UN:1H22 3UN H222 3UN:2H22 3UN H223 3UN:3H22 3UN H211 3UN:1H21 3UN H212 3UN:2H21 3UN H213 3UN:3H21 3UN H501 3UN:1H50 3UN H502 3UN:2H50 3UN H601 3UN:1H60 3UN H602 3UN:2H60 3UN H603 3UN:3H60 3UN H351 3UN:1H35 3UN H352 3UN:2H35 3UN HAF1 3YP:1HAF 3YP HAF2 3YP:2HAF 3YP HAC1 3YP:1HAC 3YP HAC2 3YP:2HAC 3YP HAD1 3YP:1HAD 3YP HAD2 3YP:2HAD 3YP HAG1 3YP:1HAG 3YP HAG2 3YP:2HAG 3YP HAH1 3YP:1HAH 3YP HAH2 3YP:2HAH 3YP HAE1 3YP:1HAE 3YP HAE2 3YP:2HAE 3YP H391 406:1H39 406 H392 406:2H39 406 H393 406:3H39 406 H111 406:1H11 406 H112 406:2H11 406 H131 406:1H13 406 H132 406:2H13 406 H141 406:1H14 406 H142 406:2H14 406 H161 406:1H16 406 H162 406:2H16 406 H181 406:1H18 406 H182 406:2H18 406 H183 406:3H18 406 H191 406:1H19 406 H192 406:2H19 406 H193 406:3H19 406 H071 412:1H07 412 H072 412:2H07 412 H081 412:1H08 412 H082 412:2H08 412 H121 412:1H12 412 H122 412:2H12 412 H141 412:1H14 412 H142 412:2H14 412 H191 412:1H19 412 H192 412:2H19 412 H1N1 413:1H1N 413 H1N2 413:2H1N 413 H151 413:1H15 413 H152 413:2H15 413 H153 413:3H15 413 H161 413:1H16 413 H162 413:2H16 413 H331 414:1H33 414 H332 414:2H33 414 H511 414:1H51 414 H512 414:2H51 414 H521 414:1H52 414 H522 414:2H52 414 H531 414:1H53 414 H532 414:2H53 414 H541 414:1H54 414 H542 414:2H54 414 H551 414:1H55 414 H552 414:2H55 414 H111 414:1H11 414 H112 414:2H11 414 H101 417:1H10 417 H102 417:2H10 417 H111 417:1H11 417 H112 417:2H11 417 H131 417:1H13 417 H132 417:2H13 417 H221 417:1H22 417 H222 417:2H22 417 H231 417:1H23 417 H232 417:2H23 417 H261 417:1H26 417 H262 417:2H26 417 H381 417:1H38 417 H382 417:2H38 417 H71 418:1H7 418 H72 418:2H7 418 H401 418:1H40 418 H402 418:2H40 418 H421 418:1H42 418 H422 418:2H42 418 H121 418:1H12 418 H122 418:2H12 418 H131 418:1H13 418 H132 418:2H13 418 H151 418:1H15 418 H152 418:2H15 418 H141 418:1H14 418 H142 418:2H14 418 H391 418:1H39 418 H392 418:2H39 418 H393 418:3H39 418 H121 421:1H12 421 H122 421:2H12 421 H231 421:1H23 421 H232 421:2H23 421 H233 421:3H23 421 H281 421:1H28 421 H282 421:2H28 421 H283 421:3H28 421 H71 422:1H7 422 H72 422:2H7 422 H81 422:1H8 422 H82 422:2H8 422 H91 422:1H9 422 H92 422:2H9 422 H101 422:1H10 422 H102 422:2H10 422 H131 422:1H13 422 H132 422:2H13 422 H181 422:1H18 422 H182 422:2H18 422 HN31 422:1HN3 422 HN32 422:2HN3 422 H191 426:1H19 426 H192 426:2H19 426 H381 426:1H38 426 H382 426:2H38 426 H371 426:1H37 426 H372 426:2H37 426 H361 426:1H36 426 H362 426:2H36 426 H351 426:1H35 426 H352 426:2H35 426 H121 427:1H12 427 H122 427:2H12 427 H141 427:1H14 427 H142 427:2H14 427 H171 427:1H17 427 H172 427:2H17 427 H121 429:1H12 429 H122 429:2H12 429 H131 429:1H13 429 H132 429:2H13 429 H141 429:1H14 429 H142 429:2H14 429 H151 429:1H15 429 H152 429:2H15 429 H231 429:1H23 429 H232 429:2H23 429 H233 429:3H23 429 H81 429:1H8 429 H82 429:2H8 429 H71 429:1H7 429 H72 429:2H7 429 H391 429:1H39 429 H392 429:2H39 429 H393 429:3H39 429 H1N1 42B:1H1N 42B H1N2 42B:2H1N 42B H5C1 42B:1H5C 42B H5C2 42B:2H5C 42B H6C1 42B:1H6C 42B H6C2 42B:2H6C 42B HOB1 433:1HOB 433 H1X1 433:1H1X 433 H1X2 433:2H1X 433 H1X3 433:3H1X 433 H1Y1 433:1H1Y 433 H1Y2 433:2H1Y 433 H1Y3 433:3H1Y 433 H1G1 433:1H1G 433 H1I1 433:1H1I 433 H1J1 433:1H1J 433 H1H1 433:1H1H 433 H1L1 433:1H1L 433 H1L2 433:2H1L 433 H1M1 433:1H1M 433 H1M2 433:2H1M 433 H1N1 433:1H1N 433 H1N2 433:2H1N 433 H2C1 433:1H2C 433 H2C2 433:2H2C 433 HN31 433:1HN3 433 H3C1 433:1H3C 433 H3E1 433:1H3E 433 H3G1 433:1H3G 433 H2D1 433:1H2D 433 H2D2 433:2H2D 433 H2H1 433:1H2H 433 H2J1 433:1H2J 433 H2I1 433:1H2I 433 H31 434:1H3 434 H32 434:2H3 434 H33A 434:3H3 434 H91 43A:1H9 43A H92 43A:2H9 43A H93 43A:3H9 43A H71 43M:1H7 43M H72 43M:2H7 43M H73 43M:3H7 43M HAS1 43P:1HAS 43P HAS2 43P:2HAS 43P HAT1 43P:1HAT 43P HAT2 43P:2HAT 43P HAT3 43P:3HAT 43P H71 442:1H7 442 H72 442:2H7 442 H291 442:1H29 442 H292 442:2H29 442 H301 442:1H30 442 H302 442:2H30 442 H161 444:1H16 444 H162 444:2H16 444 H111 448:1H11 448 H112 448:2H11 448 H201 448:1H20 448 H202 448:2H20 448 H151 448:1H15 448 H152 448:2H15 448 H251 448:1H25 448 H252 448:2H25 448 H261 448:1H26 448 H262 448:2H26 448 H341 448:1H34 448 H342 448:2H34 448 H343 448:3H34 448 H161 44B:1H16 44B H162 44B:2H16 44B H171 44C:1H17 44C H172 44C:2H17 44C H181 44C:1H18 44C H182 44C:2H18 44C H191 44C:1H19 44C H192 44C:2H19 44C H201 44C:1H20 44C H202 44C:2H20 44C HC81 44D:1HC8 44D HC82 44D:2HC8 44D H101 44D:1H10 44D H102 44D:2H10 44D H141 44D:1H14 44D H142 44D:2H14 44D H1B 44D: H1* 44D H2'1 44D:1H2* 44D H2'2 44D:2H2* 44D H3B 44D: H3* 44D H4B 44D: H4* 44D H5B 44D: H5* 44D H6'1 44D:1H6* 44D H6'2 44D:2H6* 44D H6'3 44D:3H6* 44D H3'O 44D:OH3* 44D H2B 44D:1H2' 44D H2D 44D:2H2' 44D H6B 44D:1H6' 44D H6D 44D:2H6' 44D H6E 44D:3H6' 44D H4'O 44D:OH4' 44D H3'1 44D:1H3' 44D H3'2 44D:2H3' 44D H21A 450:1H2 450 H22A 450:2H2 450 H71A 450:1H7 450 H72 450:2H7 450 HN21 450:1HN2 450 HN22 450:2HN2 450 H311 450:1H31 450 H312 450:2H31 450 H611 450:1H61 450 H612 450:2H61 450 HN71 450:1HN7 450 HN72 450:2HN7 450 H11 452:1H1 452 H12A 452:2H1 452 H13A 452:3H1 452 H91 452:1H9 452 H92 452:2H9 452 H111 457:1H11 457 H112 457:2H11 457 H131 457:1H13 457 H132 457:2H13 457 HAK1 458:1HAK 458 HAK2 458:2HAK 458 HAR1 458:1HAR 458 HAR2 458:2HAR 458 HAR3 458:3HAR 458 HAP1 458:1HAP 458 HAP2 458:2HAP 458 HAT1 458:1HAT 458 HAT2 458:2HAT 458 HAM1 458:1HAM 458 HAM2 458:2HAM 458 HAT1 459:1HAT 459 HAT2 459:2HAT 459 HAT3 459:3HAT 459 HAQ1 459:1HAQ 459 HAQ2 459:2HAQ 459 HAQ3 459:3HAQ 459 HAP1 459:1HAP 459 HAP2 459:2HAP 459 HAO1 459:1HAO 459 HAO2 459:2HAO 459 HAR1 459:1HAR 459 HAR2 459:2HAR 459 HAM1 459:1HAM 459 HAM2 459:2HAM 459 H11 460:1H1 460 H12 460:2H1 460 H13 460:3H1 460 H121 460:1H12 460 H122 460:2H12 460 H381 464:1H38 464 H382 464:2H38 464 H391 464:1H39 464 H392 464:2H39 464 H401 464:1H40 464 H402 464:2H40 464 H411 464:1H41 464 H412 464:2H41 464 H421 464:1H42 464 H422 464:2H42 464 H361 464:1H36 464 H362 464:2H36 464 H351 464:1H35 464 H352 464:2H35 464 H181 464:1H18 464 H182 464:2H18 464 H141 464:1H14 464 H142 464:2H14 464 H101 468:1H10 468 H102 468:2H10 468 H81 468:1H8 468 H82 468:2H8 468 H41 468:1H4 468 H42 468:2H4 468 H231 468:1H23 468 H232 468:2H23 468 H233 468:3H23 468 HP61 46D:1HP6 46D HP62 46D:2HP6 46D HP81 46D:1HP8 46D HP82 46D:2HP8 46D HP83 46D:3HP8 46D H81 46M:1H8 46M H82 46M:2H8 46M H83 46M:3H8 46M H61 46M:1H6 46M H62 46M:2H6 46M HB1 471:1HB 471 HB2 471:2HB 471 H1B1 471:1H1B 471 H1B2 471:2H1B 471 HIB3 471:3HIB 471 H3E1 471:1H3E 471 H3E2 471:2H3E 471 H3E3 471:3H3E 471 H3A1 471:1H3A 471 H3A2 471:2H3A 471 H3B1 471:1H3B 471 H3B2 471:2H3B 471 H4A1 471:1H4A 471 H4A2 471:2H4A 471 H4D1 471:1H4D 471 H4D2 471:2H4D 471 H4E1 471:1H4E 471 H4E2 471:2H4E 471 H4E3 471:3H4E 471 H11A 478:1H1 478 H12A 478:2H1 478 H21A 478:1H2 478 H22A 478:2H2 478 H71 478:1H7 478 H72 478:2H7 478 H141 478:1H14 478 H142 478:2H14 478 H151 478:1H15 478 H152 478:2H15 478 H231 478:1H23 478 H232 478:2H23 478 H233 478:3H23 478 H241 478:1H24 478 H242 478:2H24 478 H243 478:3H24 478 H251 478:1H25 478 H252 478:2H25 478 HN31 478:1HN3 478 HN32 478:2HN3 478 H31 47D:1H3 47D H32 47D:2H3 47D H51 47D:1H5 47D H52 47D:2H5 47D H81 485:1H8 485 H82 485:2H8 485 H101 485:1H10 485 H102 485:2H10 485 H271 485:1H27 485 H272 485:2H27 485 H273 485:3H27 485 HC1A 486:1HC1 486 HC12 486:2HC1 486 HC71 486:1HC7 486 HC72 486:2HC7 486 HC61 486:1HC6 486 HC62 486:2HC6 486 H291 486:1H29 486 H292 486:2H29 486 H293 486:3H29 486 H281 486:1H28 486 H282 486:2H28 486 H283 486:3H28 486 H131 486:1H13 486 H132 486:2H13 486 H191 486:1H19 486 H192 486:2H19 486 H193 486:3H19 486 H321 486:1H32 486 H322 486:2H32 486 H323 486:3H32 486 H161 486:1H16 486 H162 486:2H16 486 H151 486:1H15 486 H152 486:2H15 486 HC81 486:1HC8 486 HC82 486:2HC8 486 H71 493:1H7 493 H72A 493:2H7 493 H91 493:1H9 493 H92 493:2H9 493 H151 493:1H15 493 H152 493:2H15 493 H153 493:3H15 493 H191 493:1H19 493 H192 493:2H19 493 H201 493:1H20 493 H202 493:2H20 493 H211 493:1H21 493 H212 493:2H21 493 H221 493:1H22 493 H222 493:2H22 493 H251 493:1H25 493 H252 493:2H25 493 H471 497:1H47 497 H472 497:2H47 497 H473 497:3H47 497 H451 497:1H45 497 H452 497:2H45 497 H381 497:1H38 497 H382 497:2H38 497 H361 497:1H36 497 H362 497:2H36 497 H181 497:1H18 497 H182 497:2H18 497 H91 49A:1H9 49A H92 49A:2H9 49A H111 49A:1H11 49A H112 49A:2H11 49A H113 49A:3H11 49A HOB1 49A:1HOB 49A HN41 49A:1HN4 49A HN42 49A:2HN4 49A HN91 49A:1HN9 49A HN92 49A:2HN9 49A HN11 4A3:1HN1 4A3 HN12 4A3:2HN1 4A3 HAA1 4AA:1HAA 4AA HAA2 4AA:2HAA 4AA H22 4AB:2H2 4AB H21 4AB:1H2 4AB HH41 4AB:1HH4 4AB HH42 4AB:2HH4 4AB H71 4AB:1H7 4AB H72 4AB:2H7 4AB H9O1 4AB:1H9O 4AB H113 4AB:3H11 4AB H112 4AB:2H11 4AB H111 4AB:1H11 4AB H1O1 4AB:1H1O 4AB HOP3 4AC:3HOP 4AC HOP2 4AC:2HOP 4AC H5' 4AC:1H5* 4AC H5'' 4AC:2H5* 4AC H4' 4AC: H4* 4AC H3' 4AC: H3* 4AC HO3' 4AC:H3T 4AC H2' 4AC: H2* 4AC HO2' 4AC:2HO* 4AC H1' 4AC: H1* 4AC HM71 4AC:1HM7 4AC HM72 4AC:2HM7 4AC HM73 4AC:3HM7 4AC HOP1 4AD:1HOP 4AD HN1 4AD:1HN 4AD HN2 4AD:2HN 4AD HN3 4AD:3HN 4AD HB1 4AD:1HB 4AD HB2 4AD:2HB 4AD HD21 4AD:1HD2 4AD HD22 4AD:2HD2 4AD H5'1 4AD:1H5* 4AD H5'2 4AD:2H5* 4AD H4' 4AD: H4* 4AD H3' 4AD: H3* 4AD H2' 4AD: H2* 4AD H1' 4AD: H1* 4AD HN61 4AD:1HN6 4AD HN62 4AD:2HN6 4AD H111 4AF:1H11 4AF H112 4AF:2H11 4AF H113 4AF:3H11 4AF H31 4AF:1H3 4AF H32 4AF:2H3 4AF HN1 4AF:1HN 4AF HN2 4AF:2HN 4AF H121 4AH:1H12 4AH H122 4AH:2H12 4AH H241 4AH:1H24 4AH H242 4AH:2H24 4AH H411 4AH:1H41 4AH H412 4AH:2H41 4AH H441 4AH:1H44 4AH H442 4AH:2H44 4AH H491 4AH:1H49 4AH H492 4AH:2H49 4AH H493 4AH:3H49 4AH H501 4AH:1H50 4AH H502 4AH:2H50 4AH H503 4AH:3H50 4AH H911 4AH:1H91 4AH H912 4AH:2H91 4AH H913 4AH:3H91 4AH H921 4AH:1H92 4AH H922 4AH:2H92 4AH H923 4AH:3H92 4AH HOB1 4AM:1HOB 4AM HN41 4AM:1HN4 4AM HN42 4AM:2HN4 4AM H5N 4AM: NH5 4AM H111 4AM:1H11 4AM H112 4AM:2H11 4AM H113 4AM:3H11 4AM H7O 4AM: OH7 4AM H8O 4AM: OH8 4AM H91 4AM:1H9 4AM H92 4AM:2H9 4AM HN41 4AN:1HN4 4AN HN42 4AN:2HN4 4AN HN41 4AP:1HN4 4AP HN42 4AP:2HN4 4AP HA1 4AT:1HA 4AT HA2 4AT:2HA 4AT HB1 4AT:1HB 4AT HB2 4AT:2HB 4AT HG1 4AT:1HG 4AT HG2 4AT:2HG 4AT H2A1 4AT:1H2A 4AT H2A2 4AT:2H2A 4AT H2A3 4AT:3H2A 4AT HB1 4AX:1HB 4AX HB2 4AX:2HB 4AX H211 4B3:1H21 4B3 H212 4B3:2H21 4B3 H301 4B3:1H30 4B3 H302 4B3:2H30 4B3 H321 4B3:1H32 4B3 H322 4B3:2H32 4B3 H341 4B3:1H34 4B3 H342 4B3:2H34 4B3 H421 4B3:1H42 4B3 H422 4B3:2H42 4B3 H423 4B3:3H42 4B3 H461 4B3:1H46 4B3 H462 4B3:2H46 4B3 H463 4B3:3H46 4B3 H501 4B3:1H50 4B3 H502 4B3:2H50 4B3 H503 4B3:3H50 4B3 H541 4B3:1H54 4B3 H542 4B3:2H54 4B3 H543 4B3:3H54 4B3 H191 4BC:1H19 4BC H192 4BC:2H19 4BC H261 4BC:1H26 4BC H262 4BC:2H26 4BC H271 4BC:1H27 4BC H272 4BC:2H27 4BC H273 4BC:3H27 4BC HB3 4BF:1HCB 4BF HB2 4BF:2HCB 4BF H 4BF:1HN 4BF H2 4BF:2HN 4BF H111 4BH:1H11 4BH H112 4BH:2H11 4BH H121 4BH:1H12 4BH H122 4BH:2H12 4BH H151 4BH:1H15 4BH H152 4BH:2H15 4BH H141 4BH:1H14 4BH H142 4BH:2H14 4BH HZ21 4BR:1HZ2 4BR HZ22 4BR:2HZ2 4BR HA21 4BR:1HA2 4BR HA22 4BR:2HA2 4BR HH21 4BR:1HH2 4BR HH22 4BR:2HH2 4BR HH23 4BR:3HH2 4BR HCA1 4BT:1HCA 4BT HCA2 4BT:2HCA 4BT HCB1 4BT:1HCB 4BT HCB2 4BT:2HCB 4BT H51 4BT:1H5 4BT H61 4BT:1H6 4BT H21 4BT:1H2 4BT H31 4BT:1H3 4BT HCD1 4BT:1HCD 4BT HCD2 4BT:2HCD 4BT HCC1 4BT:1HCC 4BT HCC2 4BT:2HCC 4BT H1'1 4BT:1H1' 4BT H1'2 4BT:2H1' 4BT HN11 4BT:1HN1 4BT HN12 4BT:2HN1 4BT HN21 4BT:1HN2 4BT HB2 4BZ:2HB 4BZ HB3 4BZ:3HB 4BZ HQ11 4BZ:1HQ1 4BZ HQ12 4BZ:2HQ1 4BZ HQ21 4BZ:1HQ2 4BZ H2A 4CA: AH2 4CA H61A 4CA:AH61 4CA H62A 4CA:AH62 4CA H8A 4CA: AH8 4CA H1D 4CA:AH1* 4CA H2D 4CA:AH2* 4CA HO2A 4CA:AHO2 4CA H3D 4CA:AH3* 4CA HOA8 4CA:8HOA 4CA HOA9 4CA:9HOA 4CA H4D 4CA:AH4* 4CA H51A 4CA:AH51 4CA H52A 4CA:AH52 4CA HOA2 4CA:2HOA 4CA HOA5 4CA:5HOA 4CA H121 4CA:1H12 4CA H122 4CA:2H12 4CA H131 4CA:1H13 4CA H132 4CA:2H13 4CA H133 4CA:3H13 4CA H141 4CA:1H14 4CA H142 4CA:2H14 4CA H143 4CA:3H14 4CA H71 4CA:1H7 4CA H72 4CA:2H7 4CA H61 4CA:1H6 4CA H62 4CA:2H6 4CA H31 4CA:1H3 4CA H32 4CA:2H3 4CA H21 4CA:1H2 4CA H22 4CA:2H2 4CA H11 4CA:1H1 4CA H12 4CA:2H1 4CA H3B 4CA: BH3 4CA H4B 4CA: BH4 4CA HO2B 4CA:BHO2 4CA H6B 4CA: BH6 4CA H7B 4CA: BH7 4CA HO11 4CB:1HO1 4CB HO21 4CB:1HO2 4CB HC21 4CB:1HC2 4CB HC31 4CB:1HC3 4CB HOX1 4CB:1HOX 4CB HC51 4CB:1HC5 4CB HC61 4CB:1HC6 4CB HN11 4CM:1HN1 4CM HN12 4CM:2HN1 4CM H81 4CM:1H8 4CM H82 4CM:2H8 4CM H83 4CM:3H8 4CM H2A 4CO: AH2 4CO H61A 4CO:AH61 4CO H62A 4CO:AH62 4CO H8A 4CO: AH8 4CO H1D 4CO:AH1* 4CO H2D 4CO:AH2* 4CO HO2A 4CO:AHO2 4CO H3D 4CO:AH3* 4CO HOA8 4CO:8HOA 4CO HOA9 4CO:9HOA 4CO H4D 4CO:AH4* 4CO H51A 4CO:AH51 4CO H52A 4CO:AH52 4CO HOA2 4CO:2HOA 4CO HOA5 4CO:5HOA 4CO H121 4CO:1H12 4CO H122 4CO:2H12 4CO H131 4CO:1H13 4CO H132 4CO:2H13 4CO H133 4CO:3H13 4CO H141 4CO:1H14 4CO H142 4CO:2H14 4CO H143 4CO:3H14 4CO H71 4CO:1H7 4CO H72 4CO:2H7 4CO H61 4CO:1H6 4CO H62 4CO:2H6 4CO H31 4CO:1H3 4CO H32 4CO:2H3 4CO H21 4CO:1H2 4CO H22 4CO:2H2 4CO H3B 4CO: BH3 4CO H4B 4CO: BH4 4CO H2B 4CO: BH2 4CO H6B 4CO: BH6 4CO H7B 4CO: BH7 4CO H1B 4CO:1BH 4CO H2BX 4CO:2BH 4CO H9C1 4CP:1H9C 4CP H9C2 4CP:2H9C 4CP H141 4CP:1H14 4CP H142 4CP:2H14 4CP H241 4CP:1H24 4CP H242 4CP:2H24 4CP H271 4CP:1H27 4CP H272 4CP:2H27 4CP H4B1 4CR:1H4B 4CR H4B2 4CR:2H4B 4CR H4C1 4CR:1H4C 4CR H4C2 4CR:2H4C 4CR H4C3 4CR:3H4C 4CR HN41 4CR:1HN4 4CR HN42 4CR:2HN4 4CR HN43 4CR:3HN4 4CR H2C1 4CR:1H2C 4CR H2C2 4CR:2H2C 4CR H1C1 4CR:1H1C 4CR H1C2 4CR:2H1C 4CR H101 4CR:1H10 4CR H102 4CR:2H10 4CR H103 4CR:3H10 4CR H131 4CR:1H13 4CR H132 4CR:2H13 4CR HB1 4CS:1HB 4CS HB2 4CS:2HB 4CS HAD1 4CS:1HAD 4CS HAD2 4CS:2HAD 4CS HAA1 4CS:1HAA 4CS HAA2 4CS:2HAA 4CS HAA3 4CS:3HAA 4CS H51 4DE:1H5 4DE H52 4DE:2H5 4DE H61 4DE:1H6 4DE H62 4DE:2H6 4DE H63 4DE:3H6 4DE H81 4DE:1H8 4DE H82 4DE:2H8 4DE H83 4DE:3H8 4DE H131 4DE:1H13 4DE H132 4DE:2H13 4DE H133 4DE:3H13 4DE H181 4DE:1H18 4DE H182 4DE:2H18 4DE H183 4DE:3H18 4DE H21 4DI:1H2 4DI H22 4DI:2H2 4DI H31 4DI:1H3 4DI H32 4DI:2H3 4DI H41 4DI:1H4 4DI H42 4DI:2H4 4DI H51 4DI:1H5 4DI H52 4DI:2H5 4DI H61 4DI:1H6 4DI H62 4DI:2H6 4DI H63 4DI:3H6 4DI H71 4DI:1H7 4DI H72 4DI:2H7 4DI H73 4DI:3H7 4DI HN21 4DI:1HN2 4DI HN22 4DI:2HN2 4DI HAD1 4DP:1HAD 4DP HAD2 4DP:2HAD 4DP HAD3 4DP:3HAD 4DP HAC1 4DP:1HAC 4DP HAC2 4DP:2HAC 4DP HAC3 4DP:3HAC 4DP HB3 4DP:1HB 4DP HB2 4DP:2HB 4DP H 4DP:1HN 4DP H2 4DP:2HN 4DP HXT 4DP:HOXT 4DP H241 4EA:1H24 4EA H242 4EA:2H24 4EA H251 4EA:1H25 4EA H252 4EA:2H25 4EA HN41 4EA:1HN4 4EA HN42 4EA:2HN4 4EA H10 4EB:0H1 4EB H11 4EB:1H1 4EB H12 4EB:2H1 4EB H13 4EB:3H1 4EB H111 4F3:1H11 4F3 H112 4F3:2H11 4F3 H181 4F3:1H18 4F3 H182 4F3:2H18 4F3 HO42 4F3:2HO4 4F3 H251 4F3:1H25 4F3 H252 4F3:2H25 4F3 H253 4F3:3H25 4F3 HC41 4FA:1HC4 4FA HC42 4FA:2HC4 4FA H131 4FA:1H13 4FA H132 4FA:2H13 4FA HBX1 4FB:1HBX 4FB HBX2 4FB:2HBX 4FB HDX1 4FB:1HDX 4FB HDX2 4FB:2HDX 4FB H61 4FP:1H6 4FP H62 4FP:2H6 4FP H81 4FP:1H8 4FP H82 4FP:2H8 4FP H91 4FP:1H9 4FP H92 4FP:2H9 4FP H111 4FP:1H11 4FP H112 4FP:2H11 4FP H121 4FP:1H12 4FP H122 4FP:2H12 4FP H 4FW:1HN 4FW H2 4FW:2HN 4FW HB2 4FW:1HB 4FW HB3 4FW:2HB 4FW HE1 4FW: HNE 4FW H61 4GP:1H6 4GP H62 4GP:2H6 4GP HB2 4HA:2HB 4HA HB3 4HA:3HB 4HA HG2 4HA:2HG 4HA HG3 4HA:3HG 4HA HD2 4HA:2HD 4HA HD3 4HA:3HD 4HA HE2 4HA:2HE 4HA HE3 4HA:3HE 4HA HZ1 4HA:1HZ 4HA HZ2 4HA:2HZ 4HA HZ3 4HA:3HZ 4HA H51 4HF:1H5 4HF H52 4HF:2H5 4HF HN21 4HF:1HN2 4HF HN22 4HF:2HN2 4HF H71 4HF:1H7 4HF H72 4HF:2H7 4HF H91 4HF:1H9 4HF H92 4HF:2H9 4HF H101 4HF:1H10 4HF H102 4HF:2H10 4HF HB1 4HF:1HB 4HF HB2 4HF:2HB 4HF HG1 4HF:1HG 4HF HG2 4HF:2HG 4HF H111 4HG:1H11 4HG H112 4HG:2H11 4HG H11 4HL:1H1 4HL H12 4HL:2H1 4HL HX21 4HL:1HX2 4HL HX22 4HL:2HX2 4HL H71 4HP:1H7 4HP H72 4HP:2H7 4HP H 4HT:1HN 4HT H2 4HT:2HN 4HT HB2 4HT:1HB 4HT HB3 4HT:2HB 4HT HN1 4HX:1HN 4HX HN2 4HX:2HN 4HX HB1 4HX:1HB 4HX HB2 4HX:2HB 4HX HG1 4HX:1HG 4HX HG2 4HX:2HG 4HX HD1 4HX:1HD 4HX HD2 4HX:2HD 4HX H1'1 4HX:1H1' 4HX H1'2 4HX:2H1' 4HX HB'1 4HX:1HB' 4HX HB'2 4HX:2HB' 4HX HD'1 4HX:1HD' 4HX HD'2 4HX:2HD' 4HX HC31 4HY:1HC3 4HY HC41 4HY:1HC4 4HY H101 4HY:1H10 4HY H111 4HY:1H11 4HY H121 4HY:1H12 4HY H131 4HY:1H13 4HY H132 4HY:2H13 4HY HO11 4HY:1HO1 4HY HO41 4HY:1HO4 4HY HN31 4IG:1HN3 4IG HN32 4IG:2HN3 4IG HN41 4IG:1HN4 4IG HN42 4IG:2HN4 4IG H51 4IG:1H5 4IG H52 4IG:2H5 4IG H61 4IG:1H6 4IG H62 4IG:2H6 4IG H63 4IG:3H6 4IG H161 4IG:1H16 4IG H162 4IG:2H16 4IG H171 4IG:1H17 4IG H172 4IG:2H17 4IG H181 4IG:1H18 4IG H182 4IG:2H18 4IG H191 4IG:1H19 4IG H192 4IG:2H19 4IG H193 4IG:3H19 4IG H 4IN:1HN 4IN H2 4IN:2HN 4IN HB2 4IN:1HB 4IN HB3 4IN:2HB 4IN H161 4IN:1H16 4IN H162 4IN:2H16 4IN HO2P 4IP:PHO2 4IP HO3P 4IP:PHO3 4IP HO5P 4IP:PHO5 4IP HO6P 4IP:PHO6 4IP HO7P 4IP:PHO7 4IP HO8P 4IP:PHO8 4IP HOP1 4IP:1HOP 4IP HOP3 4IP:3HOP 4IP H11 4LG:1H1 4LG H12 4LG:2H1 4LG H13A 4LG:3H1 4LG H41 4LG:1H4 4LG H42 4LG:2H4 4LG H171 4LG:1H17 4LG H172 4LG:2H17 4LG H191 4LG:1H19 4LG H192 4LG:2H19 4LG H193 4LG:3H19 4LG H211 4LG:1H21 4LG H212 4LG:2H21 4LG H221 4LG:1H22 4LG H222 4LG:2H22 4LG H241 4LG:1H24 4LG H242 4LG:2H24 4LG H311 4LG:1H31 4LG H312 4LG:2H31 4LG H321 4LG:1H32 4LG H322 4LG:2H32 4LG H331 4LG:1H33 4LG H332 4LG:2H33 4LG H81 4MA:1H8 4MA H82 4MA:2H8 4MA H83 4MA:3H8 4MA H121 4MB:1H12 4MB H122 4MB:2H12 4MB H123 4MB:3H12 4MB H331 4MC:1H33 4MC H332 4MC:2H33 4MC H333 4MC:3H33 4MC H491 4MC:1H49 4MC H492 4MC:2H49 4MC H481 4MC:1H48 4MC H482 4MC:2H48 4MC H391 4MC:1H39 4MC H392 4MC:2H39 4MC H401 4MC:1H40 4MC H402 4MC:2H40 4MC H101 4MC:1H10 4MC H102 4MC:2H10 4MC H111 4MC:1H11 4MC H112 4MC:2H11 4MC H011 4MC:1H01 4MC H012 4MC:2H01 4MC H021 4MC:1H02 4MC H022 4MC:2H02 4MC H191 4MC:1H19 4MC H192 4MC:2H19 4MC H201 4MC:1H20 4MC H202 4MC:2H20 4MC HOP3 4MF:3HOP 4MF HOP2 4MF:2HOP 4MF H5'1 4MF:1H5* 4MF H5'2 4MF:2H5* 4MF H4' 4MF: H4* 4MF H3' 4MF: H3* 4MF H2'1 4MF:1H2* 4MF H2'2 4MF:2H2* 4MF H1' 4MF: H1* 4MF H4M1 4MF:1H4M 4MF H4M2 4MF:2H4M 4MF H4M3 4MF:3H4M 4MF H21 4MP:1H2 4MP H22 4MP:2H2 4MP H31 4MP:1H3 4MP H32 4MP:2H3 4MP H41 4MP:1H4 4MP H42 4MP:2H4 4MP H121 4MP:1H12 4MP H122 4MP:2H12 4MP H123 4MP:3H12 4MP HAR1 4MR:1HAR 4MR HAR2 4MR:2HAR 4MR HAQ1 4MR:1HAQ 4MR HAQ2 4MR:2HAQ 4MR HBC1 4MR:1HBC 4MR HBC2 4MR:2HBC 4MR HBB1 4MR:1HBB 4MR HBB2 4MR:2HBB 4MR HA1 4MV:1HA 4MV HA2 4MV:2HA 4MV HB1 4MV:1HB 4MV HB2 4MV:2HB 4MV HD11 4MV:1HD1 4MV HD12 4MV:2HD1 4MV HD13 4MV:3HD1 4MV HD21 4MV:1HD2 4MV HD22 4MV:2HD2 4MV HD23 4MV:3HD2 4MV H41 4MZ:1H4 4MZ H42 4MZ:2H4 4MZ H43 4MZ:3H4 4MZ HC41 4ND:1HC4 4ND HC51 4ND:1HC5 4ND HC61 4ND:1HC6 4ND HC71 4ND:1HC7 4ND HC81 4ND:1HC8 4ND H101 4ND:1H10 4ND H111 4ND:1H11 4ND H121 4ND:1H12 4ND H131 4ND:1H13 4ND H141 4ND:1H14 4ND HN41 4ND:1HN4 4ND HN31 4ND:1HN3 4ND HN21 4ND:1HN2 4ND HN22 4ND:2HN2 4ND HN11 4ND:1HN1 4ND H11A 4NH:1H1 4NH H12 4NH:2H1 4NH H13 4NH:3H1 4NH H41 4NH:1H4 4NH H42 4NH:2H4 4NH H51 4NH:1H5 4NH H52 4NH:2H5 4NH H121 4NH:1H12 4NH H122 4NH:2H12 4NH H151 4NH:1H15 4NH H152 4NH:2H15 4NH HN21 4NH:1HN2 4NH HN22 4NH:2HN2 4NH H171 4NH:1H17 4NH H172 4NH:2H17 4NH H173 4NH:3H17 4NH H21 4NP:1H2 4NP H31 4NP:1H3 4NP H51 4NP:1H5 4NP H61 4NP:1H6 4NP HM41 4OC:1HM4 4OC HM42 4OC:2HM4 4OC HM43 4OC:3HM4 4OC H1' 4OC: H1* 4OC H4' 4OC: H4* 4OC H5' 4OC:1H5* 4OC H5'' 4OC:2H5* 4OC HOP3 4OC:3HOP 4OC H3' 4OC: H3* 4OC HO3' 4OC:H3T 4OC H2' 4OC: H2* 4OC HM21 4OC:1HM2 4OC HM22 4OC:2HM2 4OC HM23 4OC:3HM2 4OC HOP2 4OC:2HOP 4OC HC71 4OX:1HC7 4OX HC72 4OX:2HC7 4OX HC81 4OX:1HC8 4OX HC82 4OX:2HC8 4OX HC91 4OX:1HC9 4OX HC92 4OX:2HC9 4OX HC21 4OX:1HC2 4OX HC22 4OX:2HC2 4OX HC31 4OX:1HC3 4OX HC32 4OX:2HC3 4OX HC51 4OX:1HC5 4OX HC52 4OX:2HC5 4OX HC61 4OX:1HC6 4OX HC62 4OX:2HC6 4OX HAC1 4PA:1HAC 4PA HAC2 4PA:2HAC 4PA HAC3 4PA:3HAC 4PA HAF1 4PA:1HAF 4PA HAF2 4PA:2HAF 4PA HAE1 4PA:1HAE 4PA HAE2 4PA:2HAE 4PA HAA1 4PA:1HAA 4PA HAA2 4PA:2HAA 4PA HAA3 4PA:3HAA 4PA H21 4PB:1H2 4PB H22 4PB:2H2 4PB H31 4PB:1H3 4PB H32 4PB:2H3 4PB H41 4PB:1H4 4PB H42 4PB:2H4 4PB HOP2 4PC:2HOP 4PC H5' 4PC:1H5* 4PC H5'' 4PC:2H5* 4PC H4' 4PC: H4* 4PC H3' 4PC: H3* 4PC HO3' 4PC:H3T 4PC H2' 4PC:1H2* 4PC H2'' 4PC:2H2* 4PC H1' 4PC: H1* 4PC H161 4PC:1H16 4PC H162 4PC:2H16 4PC H163 4PC:3H16 4PC HOP3 4PC:3HOP 4PC HOP2 4PD:2HOP 4PD H5' 4PD:1H5* 4PD H5'' 4PD:2H5* 4PD H4' 4PD: H4* 4PD H3' 4PD: H3* 4PD HO3' 4PD:H3T 4PD H2' 4PD:1H2* 4PD H2'' 4PD:2H2* 4PD H1' 4PD: H1* 4PD H161 4PD:1H16 4PD H162 4PD:2H16 4PD H163 4PD:3H16 4PD HOP3 4PD:3HOP 4PD HOP2 4PE:2HOP 4PE H5' 4PE:1H5* 4PE H5'' 4PE:2H5* 4PE H4' 4PE: H4* 4PE H3' 4PE: H3* 4PE HO3' 4PE:H3T 4PE H2' 4PE:1H2* 4PE H2'' 4PE:2H2* 4PE H1' 4PE: H1* 4PE H161 4PE:1H16 4PE H162 4PE:2H16 4PE H163 4PE:3H16 4PE HOP3 4PE:3HOP 4PE H71 4PI:1H7 4PI H72 4PI:2H7 4PI H81 4PI:1H8 4PI H82 4PI:2H8 4PI H101 4PI:1H10 4PI H102 4PI:2H10 4PI H111 4PI:1H11 4PI H112 4PI:2H11 4PI H271 4PI:1H27 4PI H272 4PI:2H27 4PI H273 4PI:3H27 4PI H371 4PI:1H37 4PI H372 4PI:2H37 4PI H81 4PN:1H8 4PN H82 4PN:2H8 4PN H91 4PN:1H9 4PN H92 4PN:2H9 4PN H101 4PN:1H10 4PN H102 4PN:2H10 4PN H111 4PN:1H11 4PN H112 4PN:2H11 4PN H121 4PN:1H12 4PN H122 4PN:2H12 4PN H51 4PN:1H5 4PN H52 4PN:2H5 4PN H61 4PN:1H6 4PN H62 4PN:2H6 4PN H21 4PN:1H2 4PN H22 4PN:2H2 4PN H31 4PN:1H3 4PN H32 4PN:2H3 4PN H21 4PP:1H2 4PP H22 4PP:2H2 4PP H31 4PP:1H3 4PP H32 4PP:2H3 4PP H41 4PP:1H4 4PP H42 4PP:2H4 4PP HN21 4PP:1HN2 4PP HN22 4PP:2HN2 4PP H11 4PR:1H1 4PR H12 4PR:2H1 4PR H13 4PR:3H1 4PR H21A 4PR:1H2 4PR H22 4PR:2H2 4PR H31 4PR:1H3 4PR H32 4PR:2H3 4PR H41 4PR:1H4 4PR H42 4PR:2H4 4PR H81 4PR:1H8 4PR H82 4PR:2H8 4PR H91 4PR:1H9 4PR H92 4PR:2H9 4PR H111 4PR:1H11 4PR H112 4PR:2H11 4PR H113 4PR:3H11 4PR H121 4PR:1H12 4PR H122 4PR:2H12 4PR H123 4PR:3H12 4PR H161 4PR:1H16 4PR H162 4PR:2H16 4PR H163 4PR:3H16 4PR H181 4PR:1H18 4PR H182 4PR:2H18 4PR H183 4PR:3H18 4PR H221 4PR:1H22 4PR H222 4PR:2H22 4PR H223 4PR:3H22 4PR H0E1 4PT:1H0E 4PT H0E2 4PT:2H0E 4PT H0B1 4PT:1H0B 4PT H0B2 4PT:2H0B 4PT H0N1 4PT:1H0N 4PT H0N2 4PT:2H0N 4PT H0P1 4PT:1H0P 4PT H0P2 4PT:2H0P 4PT H0Q1 4PT:1H0Q 4PT H0Q2 4PT:2H0Q 4PT H0Q3 4PT:3H0Q 4PT H0I1 4PT:1H0I 4PT H0I2 4PT:2H0I 4PT H0J1 4PT:1H0J 4PT H0J2 4PT:2H0J 4PT H0K1 4PT:1H0K 4PT H0K2 4PT:2H0K 4PT H0K3 4PT:3H0K 4PT H61 4PY:1H6 4PY H62 4PY:2H6 4PY H111 4PY:1H11 4PY H112 4PY:2H11 4PY H121 4PY:1H12 4PY H122 4PY:2H12 4PY H131 4PY:1H13 4PY H132 4PY:2H13 4PY H251 4PY:1H25 4PY H252 4PY:2H25 4PY H71 4QB:1H7 4QB H72 4QB:2H7 4QB H91 4QB:1H9 4QB H92 4QB:2H9 4QB H311 4QB:1H31 4QB H312 4QB:2H31 4QB H313 4QB:3H31 4QB H111 4QB:1H11 4QB H112 4QB:2H11 4QB H121 4QB:1H12 4QB H122 4QB:2H12 4QB H131 4QB:1H13 4QB H132 4QB:2H13 4QB H141 4QB:1H14 4QB H142 4QB:2H14 4QB H111 4QC:1H11 4QC H112 4QC:2H11 4QC H121 4QC:1H12 4QC H122 4QC:2H12 4QC H201 4QC:1H20 4QC H202 4QC:2H20 4QC H203 4QC:3H20 4QC H241 4QC:1H24 4QC H242 4QC:2H24 4QC H231 4QC:1H23 4QC H232 4QC:2H23 4QC H233 4QC:3H23 4QC HN11 4QC:1HN1 4QC HN12 4QC:2HN1 4QC H181 4RR:1H18 4RR H182 4RR:2H18 4RR H183 4RR:3H18 4RR H151 4RR:1H15 4RR H152 4RR:2H15 4RR H141 4RR:1H14 4RR H142 4RR:2H14 4RR H131 4RR:1H13 4RR H132 4RR:2H13 4RR H121 4RR:1H12 4RR H122 4RR:2H12 4RR H51 4RR:1H5 4RR H52 4RR:2H5 4RR H11A 4RR:1H1 4RR H12 4RR:2H1 4RR H5' 4SC:1H5* 4SC H5'' 4SC:2H5* 4SC H4' 4SC: H4* 4SC H3' 4SC: H3* 4SC HO3' 4SC:*HO3 4SC H2' 4SC:1H2* 4SC H2'' 4SC:2H2* 4SC H1' 4SC: H1* 4SC HN41 4SC:1HN4 4SC HN42 4SC:2HN4 4SC H61 4SC:1H6 4SC H62 4SC:2H6 4SC H71 4SC:1H5M 4SC H72 4SC:2H5M 4SC H73 4SC:3H5M 4SC H101 4SP:1H10 4SP H102 4SP:2H10 4SP H121 4SP:1H12 4SP H122 4SP:2H12 4SP H131 4SP:1H13 4SP H132 4SP:2H13 4SP H141 4SP:1H14 4SP H142 4SP:2H14 4SP H151 4SP:1H15 4SP H152 4SP:2H15 4SP H161 4SP:1H16 4SP H162 4SP:2H16 4SP H261 4SP:1H26 4SP H262 4SP:2H26 4SP H161 4SR:1H16 4SR H162 4SR:2H16 4SR H121 4SR:1H12 4SR H122 4SR:2H12 4SR H201 4SR:1H20 4SR H202 4SR:2H20 4SR H203 4SR:3H20 4SR H51 4SR:1H5 4SR H52 4SR:2H5 4SR H61 4SR:1H6 4SR H62 4SR:2H6 4SR H71 4SR:1H7 4SR H72 4SR:2H7 4SR H81 4SR:1H8 4SR H82 4SR:2H8 4SR HAB1 4ST:1HAB 4ST HAB2 4ST:2HAB 4ST HAB3 4ST:3HAB 4ST HAA1 4ST:1HAA 4ST HAA2 4ST:2HAA 4ST HAA3 4ST:3HAA 4ST HAN1 4ST:1HAN 4ST HAN2 4ST:2HAN 4ST HAC1 4ST:1HAC 4ST HAC2 4ST:2HAC 4ST HAC3 4ST:3HAC 4ST HAL1 4ST:1HAL 4ST HAL2 4ST:2HAL 4ST HAJ1 4ST:1HAJ 4ST HAJ2 4ST:2HAJ 4ST HAI1 4ST:1HAI 4ST HAI2 4ST:2HAI 4ST HAK1 4ST:1HAK 4ST HAK2 4ST:2HAK 4ST HAM1 4ST:1HAM 4ST HAM2 4ST:2HAM 4ST H1' 4SU: H1* 4SU H2' 4SU: H2* 4SU HO2' 4SU:*HO2 4SU H3' 4SU: H3* 4SU H4' 4SU: H4* 4SU HO3' 4SU:*HO3 4SU H5' 4SU:1H5* 4SU H5'' 4SU:2H5* 4SU HOP2 4SU:2HOP 4SU HOP3 4SU:3HOP 4SU H5M1 4TA:1H5M 4TA H5M2 4TA:2H5M 4TA H5M3 4TA:3H5M 4TA H1B 4TA: H1* 4TA H2'1 4TA:1H2* 4TA H2'2 4TA:2H2* 4TA H3B 4TA: H3* 4TA H4B 4TA: H4* 4TA H5'1 4TA:1H5* 4TA H5'2 4TA:2H5* 4TA H5B 4TA:1H5' 4TA H5D 4TA:2H5' 4TA H6A1 4TA:1H6A 4TA H6A2 4TA:2H6A 4TA H61 4TB:1H6 4TB H62 4TB:2H6 4TB H71 4TB:1H7 4TB H72 4TB:2H7 4TB H81 4TB:1H8 4TB H82 4TB:2H8 4TB H3B1 4TC:1H3B 4TC H3B2 4TC:2H3B 4TC H5U1 4TC:1H5U 4TC H5U2 4TC:2H5U 4TC H5'1 4TC:1H5* 4TC H5'2 4TC:2H5* 4TC H4' 4TC: H4* 4TC H3' 4TC: H3* 4TC H2' 4TC: H2* 4TC H1' 4TC: H1* 4TC H6N1 4TC:1H6N 4TC H6N2 4TC:2H6N 4TC HAP1 4TN:1HAP 4TN HAP2 4TN:2HAP 4TN HAA1 4TN:1HAA 4TN HAA2 4TN:2HAA 4TN HAA3 4TN:3HAA 4TN HAB1 4TN:1HAB 4TN HAB2 4TN:2HAB 4TN HAB3 4TN:3HAB 4TN HAC1 4TN:1HAC 4TN HAC2 4TN:2HAC 4TN HAC3 4TN:3HAC 4TN HAQ1 4TN:1HAQ 4TN HAQ2 4TN:2HAQ 4TN HAR1 4TN:1HAR 4TN HAR2 4TN:2HAR 4TN HAD1 4TN:1HAD 4TN HAD2 4TN:2HAD 4TN HAD3 4TN:3HAD 4TN HAE1 4TN:1HAE 4TN HAE2 4TN:2HAE 4TN HAE3 4TN:3HAE 4TN HN2 4TP:2HN 4TP HG21 4TP:1HG2 4TP HG22 4TP:2HG2 4TP HOP2 4TP:2HOP 4TP HOP3 4TP:3HOP 4TP HN11 4TR:1HN1 4TR HN12 4TR:2HN1 4TR H71 4TR:1H7 4TR H72 4TR:2H7 4TR HN11 4TZ:1HN1 4TZ HN12 4TZ:2HN1 4TZ H101 4TZ:1H10 4TZ H102 4TZ:2H10 4TZ H491 4UN:1H49 4UN H492 4UN:2H49 4UN H281 4UN:1H28 4UN H282 4UN:2H28 4UN H283 4UN:3H28 4UN H241 4UN:1H24 4UN H242 4UN:2H24 4UN H243 4UN:3H24 4UN H191 4UN:1H19 4UN H192 4UN:2H19 4UN H221 501:1H22 501 H222 501:2H22 501 H231 501:1H23 501 H232 501:2H23 501 H261 501:1H26 501 H262 501:2H26 501 H291 501:1H29 501 H292 501:2H29 501 H293 501:3H29 501 H371 501:1H37 501 H372 501:2H37 501 H373 501:3H37 501 H421 501:1H42 501 H422 501:2H42 501 H423 501:3H42 501 H121 509:1H12 509 H122 509:2H12 509 H91 512:1H9 512 H92 512:2H9 512 H181 514:1H18 514 H182 514:2H18 514 H201 514:1H20 514 H202 514:2H20 514 H203 514:3H20 514 H31 515:1H3 515 H41 515:1H4 515 H91 515:1H9 515 H121 515:1H12 515 H122 515:2H12 515 H131 515:1H13 515 H132 515:2H13 515 H141 515:1H14 515 H142 515:2H14 515 H151 515:1H15 515 H152 515:2H15 515 H231 515:1H23 515 H232 515:2H23 515 H233 515:3H23 515 H71 515:1H7 515 H72 515:2H7 515 H271 515:1H27 515 H281 515:1H28 515 H291 515:1H29 515 H301 515:1H30 515 H331 515:1H33 515 H361 515:1H36 515 H161 515:1H16 515 H171 515:1H17 515 H181 515:1H18 515 H191 515:1H19 515 H201 515:1H20 515 H202 515:2H20 515 H21 515:1H2 515 H411 515:1H41 515 H421 515:1H42 515 H431 515:1H43 515 H441 515:1H44 515 H201 517:1H20 517 H202 517:2H20 517 H203 517:3H20 517 H161 517:1H16 517 H162 517:2H16 517 H111 521:1H11 521 H112 521:2H11 521 H5A1 523:1H5A 523 H5A2 523:2H5A 523 H5A3 523:3H5A 523 HN41 523:1HN4 523 HN42 523:2HN4 523 H1' 523: H1* 523 H2'1 523:1H2* 523 H2'2 523:2H2* 523 H3' 523: H3* 523 H4' 523: H4* 523 HO3' 523:HO3* 523 H5'1 523:1H5* 523 H5'2 523:2H5* 523 H211 527:1H21 527 H212 527:2H21 527 H311 527:1H31 527 H312 527:2H31 527 H321 527:1H32 527 H322 527:2H32 527 H341 527:1H34 527 H342 527:2H34 527 H351 527:1H35 527 H352 527:2H35 527 H491 527:1H49 527 H492 527:2H49 527 H351 528:1H35 528 H352 528:2H35 528 H341 528:1H34 528 H342 528:2H34 528 H331 528:1H33 528 H332 528:2H33 528 H301 528:1H30 528 H302 528:2H30 528 H303 528:3H30 528 H291 528:1H29 528 H292 528:2H29 528 H293 528:3H29 528 H151 528:1H15 528 H152 528:2H15 528 H91 528:1H9 528 H92 528:2H9 528 H101 528:1H10 528 H102 528:2H10 528 H121 529:1H12 529 H122 529:2H12 529 H131 529:1H13 529 H132 529:2H13 529 H251 529:1H25 529 H252 529:2H25 529 H253 529:3H25 529 HN1 52A:1HN 52A HN2 52A:2HN 52A HB11 52A:1HB1 52A HB12 52A:2HB1 52A HB21 52A:1HB2 52A HB22 52A:2HB2 52A H41 541:1H4 541 H42 541:2H4 541 H43 541:3H4 541 H81 541:1H8 541 H82 541:2H8 541 H151 541:1H15 541 H152 541:2H15 541 H171 541:1H17 541 H172 541:2H17 541 H173 541:3H17 541 H191 541:1H19 541 H192 541:2H19 541 H251 541:1H25 541 H252 541:2H25 541 H253 541:3H25 541 HO11 543:1HO1 543 HO12 543:2HO1 543 HO21 543:1HO2 543 HO22 543:2HO2 543 HO31 543:1HO3 543 HO32 543:2HO3 543 HO41 543:1HO4 543 HO42 543:2HO4 543 HO51 543:1HO5 543 HO52 543:2HO5 543 HO61 543:1HO6 543 HO62 543:2HO6 543 H11 543:1H1 543 H12 543:2H1 543 H21 543:1H2 543 H22 543:2H2 543 H23 543:3H2 543 HA1 544:1HA 544 HB1 544:1HB 544 HB2 544:2HB 544 HD11 544:1HD1 544 HD21 544:1HD2 544 HE11 544:1HE1 544 HE21 544:1HE2 544 H1F1 544:1H1F 544 H1B1 544:1H1B 544 H1B2 544:2H1B 544 H1B3 544:3H1B 544 H1I1 544:1H1I 544 H1J1 544:1H1J 544 H1K1 544:1H1K 544 H1L1 544:1H1L 544 H1M1 544:1H1M 544 H3E1 544:1H3E 544 H3E2 544:2H3E 544 H3E3 544:3H3E 544 H3N1 544:1H3N 544 H3M1 544:1H3M 544 H3L1 544:1H3L 544 H3K1 544:1H3K 544 H3J1 544:1H3J 544 H3A1 544:1H3A 544 H3A2 544:2H3A 544 H3B1 544:1H3B 544 H3B2 544:2H3B 544 HO11 544:1HO1 544 H141 545:1H14 545 H142 545:2H14 545 H241 545:1H24 545 H242 545:2H24 545 H251 545:1H25 545 H252 545:2H25 545 H261 545:1H26 545 H262 545:2H26 545 H271 545:1H27 545 H272 545:2H27 545 H273 545:3H27 545 H161 545:1H16 545 H162 545:2H16 545 H41 545:1H4 545 H42 545:2H4 545 H301 545:1H30 545 H302 545:2H30 545 H351 547:1H35 547 H352 547:2H35 547 H361 547:1H36 547 H362 547:2H36 547 H421 547:1H42 547 H422 547:2H42 547 H431 547:1H43 547 H432 547:2H43 547 H451 547:1H45 547 H452 547:2H45 547 H461 547:1H46 547 H462 547:2H46 547 H101 561:1H10 561 H102 561:2H10 561 H311 561:1H31 561 H312 561:2H31 561 H321 561:1H32 561 H322 561:2H32 561 H331 561:1H33 561 H332 561:2H33 561 H171 564:1H17 564 H172 564:2H17 564 H181 564:1H18 564 H182 564:2H18 564 H231 564:1H23 564 H232 564:2H23 564 H233 564:3H23 564 H241 564:1H24 564 H242 564:2H24 564 H243 564:3H24 564 H251 564:1H25 564 H252 564:2H25 564 H253 564:3H25 564 H261 564:1H26 564 H262 564:2H26 564 H263 564:3H26 564 H111 565:1H11 565 H112 565:2H11 565 H151 565:1H15 565 H152 565:2H15 565 H201 565:1H20 565 H202 565:2H20 565 H251 565:1H25 565 H252 565:2H25 565 H261 565:1H26 565 H262 565:2H26 565 H271 565:1H27 565 H272 565:2H27 565 H371 565:1H37 565 H372 565:2H37 565 H373 565:3H37 565 H11 566:1H1 566 H12 566:2H1 566 H21 566:1H2 566 H22 566:2H2 566 H41 566:1H4 566 H42 566:2H4 566 H51 566:1H5 566 H52 566:2H5 566 H61 566:1H6 566 H62 566:2H6 566 H161 566:1H16 566 H162 566:2H16 566 H181 566:1H18 566 H182 566:2H18 566 H2C1 568:1H2C 568 H2C2 568:2H2C 568 H4C1 568:1H4C 568 H4C2 568:2H4C 568 H6C1 568:1H6C 568 H6C2 568:2H6C 568 H131 568:1H13 568 H132 568:2H13 568 H291 568:1H29 568 H292 568:2H29 568 H391 568:1H39 568 H392 568:2H39 568 H3E1 570:1H3E 570 H3E2 570:2H3E 570 H3E3 570:3H3E 570 H3A1 570:1H3A 570 H3A2 570:2H3A 570 H3B1 570:1H3B 570 H3B2 570:2H3B 570 H141 572:1H14 572 H142 572:2H14 572 H191 572:1H19 572 H192 572:2H19 572 H151 572:1H15 572 H152 572:2H15 572 H131 572:1H13 572 H132 572:2H13 572 H133 572:3H13 572 H111 572:1H11 572 H112 572:2H11 572 H113 572:3H11 572 H161 572:1H16 572 H162 572:2H16 572 H181 572:1H18 572 H182 572:2H18 572 H211 577:1H21 577 H212 577:2H21 577 H213 577:3H21 577 H231 578:1H23 578 H232 578:2H23 578 H181 578:1H18 578 H182 578:2H18 578 H183 578:3H18 578 H171 578:1H17 578 H172 578:2H17 578 H173 578:3H17 578 H91 578:1H9 578 H92 578:2H9 578 H101 578:1H10 578 H102 578:2H10 578 H61 580:1H6 580 H62 580:2H6 580 H71 580:1H7 580 H72 580:2H7 580 H81 580:1H8 580 H82 580:2H8 580 H351 580:1H35 580 H352 580:2H35 580 H353 580:3H35 580 H181 582:1H18 582 H182 582:2H18 582 H91 582:1H9 582 H92 582:2H9 582 H93 582:3H9 582 H71 582:1H7 582 H72 582:2H7 582 H73 582:3H7 582 H31A 587:1H3 587 H32A 587:2H3 587 H41 587:1H4 587 H42 587:2H4 587 H51 587:1H5 587 H52 587:2H5 587 H61 587:1H6 587 H62A 587:2H6 587 H121 587:1H12 587 H122 587:2H12 587 H161 587:1H16 587 H162 587:2H16 587 H231 587:1H23 587 H232 587:2H23 587 H301 587:1H30 587 H302 587:2H30 587 H331 587:1H33 587 H332 587:2H33 587 H341 587:1H34 587 H342 587:2H34 587 H351 587:1H35 587 H352 587:2H35 587 H353 587:3H35 587 H361 587:1H36 587 H362 587:2H36 587 H363 587:3H36 587 H371 587:1H37 587 H372 587:2H37 587 H373 587:3H37 587 H381 587:1H38 587 H382 587:2H38 587 H391 587:1H39 587 H392 587:2H39 587 H393 587:3H39 587 H411 587:1H41 587 H412 587:2H41 587 H413 587:3H41 587 H421 587:1H42 587 H422 587:2H42 587 H423 587:3H42 587 H431 587:1H43 587 H432 587:2H43 587 H433 587:3H43 587 H441 587:1H44 587 H442 587:2H44 587 H443 587:3H44 587 H451 587:1H45 587 H452 587:2H45 587 H453 587:3H45 587 H671 587:1H67 587 H672 587:2H67 587 H673 587:3H67 587 HO10 587:0HO1 587 HO13 587:3HO1 587 HN31 588:1HN3 588 HN32 588:2HN3 588 H71 588:1H7 588 H72 588:2H7 588 H201 588:1H20 588 H202 588:2H20 588 H203 588:3H20 588 H121 588:1H12 588 H122 588:2H12 588 H131 588:1H13 588 H132 588:2H13 588 H151 588:1H15 588 H152 588:2H15 588 H141 588:1H14 588 H142 588:2H14 588 H161 588:1H16 588 H162 588:2H16 588 H163 588:3H16 588 H101 598:1H10 598 H102 598:2H10 598 H301 598:1H30 598 H302 598:2H30 598 H311 598:1H31 598 H312 598:2H31 598 H331 598:1H33 598 H332 598:2H33 598 H341 598:1H34 598 H342 598:2H34 598 H451 598:1H45 598 H452 598:2H45 598 H121 59A:1H12 59A H122 59A:2H12 59A H111 59A:1H11 59A H112 59A:2H11 59A H113 59A:3H11 59A H131 59A:1H13 59A H132 59A:2H13 59A H133 59A:3H13 59A H81 59A:1H8 59A H82 59A:2H8 59A H91 59A:1H9 59A H92 59A:2H9 59A H93 59A:3H9 59A HOP3 5AA:3HOP 5AA HOP2 5AA:2HOP 5AA H5' 5AA:1H5* 5AA H5'' 5AA:2H5* 5AA H4' 5AA: H4* 5AA H1' 5AA: H1* 5AA H91 5AA:1H9 5AA H92 5AA:2H9 5AA H93 5AA:3H9 5AA H101 5AA:1H10 5AA H102 5AA:2H10 5AA H103 5AA:3H10 5AA H2' 5AA: H2* 5AA H3' 5AA: H3* 5AA H3'1 5AA:1H3* 5AA H3'2 5AA:2H3* 5AA HN61 5AD:1HN6 5AD HN62 5AD:2HN6 5AD H5'1 5AD:1H5' 5AD H5'2 5AD:2H5' 5AD H5'3 5AD:3H5' 5AD HO2' 5AD:'HO2 5AD HO3' 5AD:'HO3 5AD H11 5AF:1H1 5AF H13 5AF:3H1 5AF H12 5AF:2H1 5AF H21 5AF:1H2 5AF H22 5AF:2H2 5AF H31 5AF:1H3 5AF H42 5AF:2H4 5AF H52 5AF:2H5 5AF H53 5AF:3H5 5AF H71 5AF:1H7 5AF H62 5AF:2H6 5AF H63 5AF:3H6 5AF H11A 5AM:1H1 5AM H12A 5AM:2H1 5AM H151 5AM:1H15 5AM H152 5AM:2H15 5AM H161 5AM:1H16 5AM H162 5AM:2H16 5AM H271 5AM:1H27 5AM H272 5AM:2H27 5AM H301 5AM:1H30 5AM H302 5AM:2H30 5AM H311 5AM:1H31 5AM H312 5AM:2H31 5AM H331 5AM:1H33 5AM H332 5AM:2H33 5AM H351 5AM:1H35 5AM H352 5AM:2H35 5AM H171 5AM:1H17 5AM H172 5AM:2H17 5AM H181 5AM:1H18 5AM H182 5AM:2H18 5AM H191 5AM:1H19 5AM H192 5AM:2H19 5AM H251 5AM:1H25 5AM H252 5AM:2H25 5AM H281 5AM:1H28 5AM H282 5AM:2H28 5AM H361 5AM:1H36 5AM H362 5AM:2H36 5AM HN1 5AN:1HN 5AN HN2 5AN:2HN 5AN H201 5AP:1H20 5AP H202 5AP:2H20 5AP H211 5AP:1H21 5AP H212 5AP:2H21 5AP H231 5AP:1H23 5AP H232 5AP:2H23 5AP H281 5AP:1H28 5AP H282 5AP:2H28 5AP H283 5AP:3H28 5AP H291 5AP:1H29 5AP H292 5AP:2H29 5AP H293 5AP:3H29 5AP H5'1 5AS:1H5* 5AS H5'2 5AS:2H5* 5AS H4' 5AS: H4* 5AS H3' 5AS: H3* 5AS HO'3 5AS:3HO* 5AS H2' 5AS: H2* 5AS HO'2 5AS:2HO* 5AS H1' 5AS: H1* 5AS H61 5AS:1H6 5AS H62 5AS:2H6 5AS H101 5AS:1H10 5AS H102 5AS:2H10 5AS H111 5AS:1H11 5AS H112 5AS:2H11 5AS H113 5AS:3H11 5AS HN51 5AT:1HN5 5AT HN52 5AT:2HN5 5AT H2' 5AT:1H2* 5AT H2'' 5AT:2H2* 5AT H5' 5AT:1H5* 5AT H5'' 5AT:2H5* 5AT H4' 5AT: H4* 5AT H1' 5AT: H1* 5AT H3' 5AT: H3* 5AT HO3' 5AT:H3T 5AT H61 5AX:1H6 5AX H62 5AX:2H6 5AX H81 5AX:1H8 5AX H82 5AX:2H8 5AX H83 5AX:3H8 5AX H11 5AX:1H1 5AX H12 5AX:2H1 5AX H221 5BN:1H22 5BN H222 5BN:2H22 5BN H211 5BN:1H21 5BN H212 5BN:2H21 5BN H201 5BN:1H20 5BN H202 5BN:2H20 5BN H11 5BR:1H1 5BR H12 5BR:2H1 5BR H21 5BR:1H2 5BR H22 5BR:2H2 5BR H31 5BR:1H3 5BR H32 5BR:2H3 5BR H41 5BR:1H4 5BR H42 5BR:2H4 5BR H51 5BR:1H5 5BR H52 5BR:2H5 5BR H53 5BR:3H5 5BR HOP2 5BU:2HOP 5BU HOP3 5BU:3HOP 5BU H5' 5BU:1H5* 5BU H5'' 5BU:2H5* 5BU H4' 5BU: H4* 5BU H3' 5BU: H3* 5BU HO3' 5BU:H3T 5BU H2' 5BU: H2* 5BU HO2' 5BU:2HO* 5BU H1' 5BU: H1* 5BU HB1 5CA:1HB 5CA HB2 5CA:2HB 5CA H5'1 5CA:1H5* 5CA H5'2 5CA:2H5* 5CA H4' 5CA: H4* 5CA H3' 5CA: H3* 5CA H2' 5CA: H2* 5CA HO'2 5CA:2HO* 5CA H1' 5CA: H1* 5CA H61 5CA:1H6 5CA H62 5CA:2H6 5CA H131 5CB:1H13 5CB H132 5CB:2H13 5CB H161 5CB:1H16 5CB H162 5CB:2H16 5CB H117 5CB:17H1 5CB H191 5CB:1H19 5CB H220 5CB:20H2 5CB H241 5CB:1H24 5CB H242 5CB:2H24 5CB H251 5CB:1H25 5CB H252 5CB:2H25 5CB H6N1 5CD:1H6N 5CD H6N2 5CD:2H6N 5CD H2' 5CD: H2* 5CD H3' 5CD: H3* 5CD H4' 5CD: H4* 5CD H5'1 5CD:1H5* 5CD H5'2 5CD:2H5* 5CD H1' 5CD: H1* 5CD H5' 5CG:1H5* 5CG H5'' 5CG:2H5* 5CG H4' 5CG: H4* 5CG H3' 5CG: H3* 5CG HO3' 5CG:*HO3 5CG H2' 5CG: H2* 5CG HO2' 5CG:*HO2 5CG H1' 5CG: H1* 5CG HN21 5CG:1HN2 5CG HN22 5CG:2HN2 5CG H5A1 5CM:1H5A 5CM H5A2 5CM:2H5A 5CM H5A3 5CM:3H5A 5CM HN41 5CM:1HN4 5CM HN42 5CM:2HN4 5CM H1' 5CM: H1* 5CM H2' 5CM:1H2* 5CM H2'' 5CM:2H2* 5CM H3' 5CM: H3* 5CM H4' 5CM: H4* 5CM HO3' 5CM:*HO3 5CM H5' 5CM:1H5* 5CM H5'' 5CM:2H5* 5CM HOP2 5CM:2HOP 5CM HOP3 5CM:3HOP 5CM H71 5CN:1H7 5CN H72 5CN:2H7 5CN H81 5CN:1H8 5CN H82 5CN:2H8 5CN H91 5CN:1H9 5CN H92 5CN:2H9 5CN H101 5CN:1H10 5CN H102 5CN:2H10 5CN H121 5CN:1H12 5CN H122 5CN:2H12 5CN H123 5CN:3H12 5CN H131 5CN:1H13 5CN H132 5CN:2H13 5CN H2 5CS: HN2 5CS HB2 5CS:1HB 5CS HB3 5CS:2HB 5CS HN1 5CS:1HN 5CS HN2A 5CS:2HN 5CS HE3 5CS:1HE 5CS HE2 5CS:2HE 5CS H171 5DE:1H17 5DE H172 5DE:2H17 5DE H181 5DE:1H18 5DE H182 5DE:2H18 5DE H183 5DE:3H18 5DE H91 5DE:1H9 5DE H92 5DE:2H9 5DE H93 5DE:3H9 5DE H61 5DE:1H6 5DE H62 5DE:2H6 5DE H63 5DE:3H6 5DE H141 5DE:1H14 5DE H142 5DE:2H14 5DE H11 5DS:1H1 5DS H12 5DS:2H1 5DS H13 5DS:3H1 5DS H21 5DS:1H2 5DS H22 5DS:2H2 5DS H23 5DS:3H2 5DS HN41 5DS:1HN4 5DS HN42 5DS:2HN4 5DS HN51 5DS:1HN5 5DS HN52 5DS:2HN5 5DS H221 5EA:1H22 5EA H222 5EA:2H22 5EA H241 5EA:1H24 5EA H242 5EA:2H24 5EA H271 5EA:1H27 5EA H272 5EA:2H27 5EA H291 5EA:1H29 5EA H292 5EA:2H29 5EA H301 5EA:1H30 5EA H302 5EA:2H30 5EA H281 5EA:1H28 5EA H282 5EA:2H28 5EA H11 5EE:1H1 5EE H12 5EE:2H1 5EE H2'1 5F1:1H2* 5F1 H2'2 5F1:2H2* 5F1 H3' 5F1: H3* 5F1 H4' 5F1: H4* 5F1 H5'1 5F1:1H5* 5F1 H5'2 5F1:2H5* 5F1 H1' 5F1: H1* 5F1 H6N1 5F1:1H6N 5F1 H6N2 5F1:2H6N 5F1 H61 5FA:1H6 5FA H62 5FA:2H6 5FA H5'1 5FA:1H5* 5FA H5'2 5FA:2H5* 5FA H4' 5FA: H4* 5FA H3' 5FA: H3* 5FA H2' 5FA: H2* 5FA HO'2 5FA:2HO* 5FA H1' 5FA: H1* 5FA HOP2 5FC:2HOP 5FC HN41 5FC:1HN4 5FC HN42 5FC:2HN4 5FC H2' 5FC:1H2* 5FC H2'' 5FC:2H2* 5FC H5' 5FC:1H5* 5FC H5'' 5FC:2H5* 5FC H4' 5FC: H4* 5FC H1' 5FC: H1* 5FC H3' 5FC: H3* 5FC HO3' 5FC:H3T 5FC HOP3 5FC:3HOP 5FC H2' 5FD: H2* 5FD H3'' 5FD:*H3* 5FD H4' 5FD: H4* 5FD H5'1 5FD:1H5* 5FD H5'2 5FD:2H5* 5FD H1' 5FD: H1* 5FD H55 5FD:5H5 5FD H44 5FD:4H4 5FD H21 5FE:1H2 5FE H22 5FE:2H2 5FE HA1 5FE:1HA 5FE HA2 5FE:2HA 5FE HA3 5FE:3HA 5FE H291 5FE:1H29 5FE H292 5FE:2H29 5FE H293 5FE:3H29 5FE H101 5FE:1H10 5FE H102 5FE:2H10 5FE H351 5FE:1H35 5FE H352 5FE:2H35 5FE H353 5FE:3H35 5FE H341 5FE:1H34 5FE H342 5FE:2H34 5FE H343 5FE:3H34 5FE H381 5FE:1H38 5FE H382 5FE:2H38 5FE H383 5FE:3H38 5FE H371 5FE:1H37 5FE H372 5FE:2H37 5FE H373 5FE:3H37 5FE H221 5FE:1H22 5FE H222 5FE:2H22 5FE H391 5FE:1H39 5FE H392 5FE:2H39 5FE H393 5FE:3H39 5FE H241 5FE:1H24 5FE H242 5FE:2H24 5FE H243 5FE:3H24 5FE H21 5FP:1H2 5FP H22 5FP:2H2 5FP H291 5FP:1H29 5FP H292 5FP:2H29 5FP H293 5FP:3H29 5FP H101 5FP:1H10 5FP H102 5FP:2H10 5FP H351 5FP:1H35 5FP H352 5FP:2H35 5FP H353 5FP:3H35 5FP H341 5FP:1H34 5FP H342 5FP:2H34 5FP H343 5FP:3H34 5FP H381 5FP:1H38 5FP H382 5FP:2H38 5FP H383 5FP:3H38 5FP H371 5FP:1H37 5FP H372 5FP:2H37 5FP H373 5FP:3H37 5FP H221 5FP:1H22 5FP H222 5FP:2H22 5FP H391 5FP:1H39 5FP H392 5FP:2H39 5FP H393 5FP:3H39 5FP H241 5FP:1H24 5FP H242 5FP:2H24 5FP H243 5FP:3H24 5FP HO'2 5FU:2HO* 5FU H2' 5FU: H2* 5FU H1' 5FU: H1* 5FU H4' 5FU: H4* 5FU H5'1 5FU:1H5* 5FU H5'2 5FU:2H5* 5FU HOP2 5FU:2HOP 5FU HOP3 5FU:3HOP 5FU H3' 5FU: H3* 5FU HOP2 5GP:2HOP 5GP HOP3 5GP:3HOP 5GP H5'1 5GP:1H5* 5GP H5'2 5GP:2H5* 5GP H4' 5GP: H4* 5GP H3' 5GP: H3* 5GP HO3' 5GP:*HO3 5GP H2' 5GP: H2* 5GP HO2' 5GP:*HO2 5GP H1' 5GP: H1* 5GP HN21 5GP:1HN2 5GP HN22 5GP:2HN2 5GP H11 5H:1H1 5H H12 5H:2H1 5H H11 5HA:1H1 5HA H12A 5HA:2H1 5HA H31A 5HA:1H3 5HA H32A 5HA:2H3 5HA H41 5HA:1H4 5HA H42 5HA:2H4 5HA H81 5HA:1H8 5HA H82 5HA:2H8 5HA H161 5HA:1H16 5HA H162 5HA:2H16 5HA H163 5HA:3H16 5HA H231 5HA:1H23 5HA H232 5HA:2H23 5HA H233 5HA:3H23 5HA H181 5HA:1H18 5HA H182 5HA:2H18 5HA H183 5HA:3H18 5HA H281 5HG:1H28 5HG H282 5HG:2H28 5HG H241 5HG:1H24 5HG H242 5HG:2H24 5HG H221 5HG:1H22 5HG H222 5HG:2H22 5HG H201 5HG:1H20 5HG H202 5HG:2H20 5HG HB1 5HP:1HB 5HP HB2 5HP:2HB 5HP HG1 5HP:1HG 5HP HG2 5HP:2HG 5HP HO5' 5HT:H5T 5HT H5' 5HT:1H5* 5HT H5'' 5HT:2H5* 5HT H4' 5HT: H4* 5HT H3' 5HT: H3* 5HT HO3' 5HT:H3T 5HT H2' 5HT:1H2* 5HT H2'' 5HT:2H2* 5HT H1' 5HT: H1* 5HT H71 5HT:1H5M 5HT H72 5HT:2H5M 5HT H73 5HT:3H5M 5HT H61 5HT:1H6 5HT H62 5HT:2H6 5HT H5' 5HU:1H5* 5HU H5'' 5HU:2H5* 5HU HC4' 5HU:HC4* 5HU HC3' 5HU:HC3* 5HU HO3' 5HU:HO3* 5HU H2' 5HU:1H2* 5HU H2'' 5HU:2H2* 5HU HC1' 5HU:HC1* 5HU H5A1 5HU:1H5A 5HU H5A2 5HU:2H5A 5HU HN41 5I5:1HN4 5I5 HN42 5I5:2HN4 5I5 H111 5I5:1H11 5I5 H112 5I5:2H11 5I5 H113 5I5:3H11 5I5 HO2' 5IC:2HO* 5IC H2' 5IC: H2* 5IC H3' 5IC: H3* 5IC HO3' 5IC:H3T 5IC H4' 5IC: H4* 5IC H1' 5IC: H1* 5IC H41 5IC:1H4 5IC H42 5IC:2H4 5IC H5' 5IC:1H5* 5IC H5'' 5IC:2H5* 5IC HOP3 5IC:3HOP 5IC HOP2 5IC:2HOP 5IC H5'1 5ID:1H5' 5ID H5'2 5ID:2H5' 5ID H6N1 5ID:1H6N 5ID H6N2 5ID:2H6N 5ID HN31 5IG:1HN3 5IG HN32 5IG:2HN3 5IG HN41 5IG:1HN4 5IG HN42 5IG:2HN4 5IG H61 5IG:1H6 5IG H62 5IG:2H6 5IG H161 5IG:1H16 5IG H162 5IG:2H16 5IG H171 5IG:1H17 5IG H172 5IG:2H17 5IG H181 5IG:1H18 5IG H182 5IG:2H18 5IG H191 5IG:1H19 5IG H192 5IG:2H19 5IG H193 5IG:3H19 5IG H211 5IG:1H21 5IG H212 5IG:2H21 5IG H213 5IG:3H21 5IG H201 5IG:1H20 5IG H202 5IG:2H20 5IG H203 5IG:3H20 5IG H51 5IG:1H5 5IG H52 5IG:2H5 5IG H53 5IG:3H5 5IG H11 5IN:1H1 5IN H12A 5IN:2H1 5IN H31A 5IN:1H3 5IN H32 5IN:2H3 5IN H101 5IN:1H10 5IN H102 5IN:2H10 5IN H191 5IN:1H19 5IN H192 5IN:2H19 5IN H251 5IN:1H25 5IN H252 5IN:2H25 5IN H341 5IN:1H34 5IN H342 5IN:2H34 5IN HAJ1 5IQ:1HAJ 5IQ HAJ2 5IQ:2HAJ 5IQ HOP2 5IT:2HOP 5IT HOP3 5IT:3HOP 5IT H5' 5IT:1H5* 5IT H5'' 5IT:2H5* 5IT H4' 5IT: H4* 5IT H3' 5IT: H3* 5IT HO3' 5IT:*HO3 5IT H2' 5IT:1H2* 5IT H2'' 5IT:2H2* 5IT H1' 5IT: H1* 5IT H1' 5IU: H1* 5IU H2' 5IU:1H2* 5IU H2'' 5IU:2H2* 5IU H3' 5IU: H3* 5IU H4' 5IU: H4* 5IU HO3' 5IU:*HO3 5IU H5' 5IU:1H5* 5IU H5'' 5IU:2H5* 5IU HOP2 5IU:2HOP 5IU HOP3 5IU:3HOP 5IU HN31 5MB:1HN3 5MB H21 5MB:1H2 5MB H41 5MB:1H4 5MB H61 5MB:1H6 5MB H71 5MB:1H7 5MB H81 5MB:1H8 5MB H82 5MB:2H8 5MB H83 5MB:3H8 5MB HOP2 5MC:2HOP 5MC HOP3 5MC:3HOP 5MC H5' 5MC:1H5* 5MC H5'' 5MC:2H5* 5MC H4' 5MC: H4* 5MC H3' 5MC: H3* 5MC HO3' 5MC:*HO3 5MC H2' 5MC: H2* 5MC HO2' 5MC:*HO2 5MC H1' 5MC: H1* 5MC HN41 5MC:1HN4 5MC HN42 5MC:2HN4 5MC HM51 5MC:1HM5 5MC HM52 5MC:2HM5 5MC HM53 5MC:3HM5 5MC H5' 5MD: H5* 5MD H5'1 5MD:1H5' 5MD H5'2 5MD:2H5' 5MD H51 5MD:1H5 5MD H52 5MD:2H5 5MD H53 5MD:3H5 5MD H3'A 5MD:H3* 5MD H2'1 5MD:1H2' 5MD H2'2 5MD:2H2' 5MD HC41 5MP:1HC4 5MP HC42 5MP:2HC4 5MP HC43 5MP:3HC4 5MP HB1 5MR:1HB 5MR HB2 5MR:2HB 5MR HAA1 5MR:1HAA 5MR HAA2 5MR:2HAA 5MR HAX1 5MR:1HAX 5MR HAX2 5MR:2HAX 5MR HAV1 5MR:1HAV 5MR HAV2 5MR:2HAV 5MR H71 5MU:1H5M 5MU H72 5MU:2H5M 5MU H73 5MU:3H5M 5MU H1' 5MU: H1* 5MU H2' 5MU: H2* 5MU HO2' 5MU:*HO2 5MU H3' 5MU: H3* 5MU H4' 5MU: H4* 5MU HO3' 5MU:*HO3 5MU H5' 5MU:1H5* 5MU H5'' 5MU:2H5* 5MU HOP2 5MU:2HOP 5MU HOP3 5MU:3HOP 5MU HOP2 5NC:2HOP 5NC HOP3 5NC:3HOP 5NC H5' 5NC:1H5* 5NC H5'' 5NC:2H5* 5NC H4' 5NC: H4* 5NC H3' 5NC: H3* 5NC HO'3 5NC:3HO* 5NC H2' 5NC:1H2* 5NC H2'' 5NC:2H2* 5NC H1'1 5NC:1H1* 5NC HN41 5NC:1HN4 5NC HN42 5NC:2HN4 5NC H51 5NH:1H5 5NH H52 5NH:2H5 5NH H53 5NH:3H5 5NH H61 5NH:1H6 5NH H62 5NH:2H6 5NH H63 5NH:3H6 5NH H71 5NH:1H7 5NH H72 5NH:2H7 5NH H73 5NH:3H7 5NH H111 5NH:1H11 5NH H112 5NH:2H11 5NH H121 5NH:1H12 5NH H122 5NH:2H12 5NH H131 5NH:1H13 5NH H132 5NH:2H13 5NH H141 5NH:1H14 5NH H142 5NH:2H14 5NH H151 5NH:1H15 5NH H152 5NH:2H15 5NH H231 5NH:1H23 5NH H232 5NH:2H23 5NH H241 5NH:1H24 5NH H242 5NH:2H24 5NH H261 5NH:1H26 5NH H262 5NH:2H26 5NH H291 5NH:1H29 5NH H292 5NH:2H29 5NH H301 5NH:1H30 5NH H302 5NH:2H30 5NH H311 5NH:1H31 5NH H312 5NH:2H31 5NH H321 5NH:1H32 5NH H322 5NH:2H32 5NH H323 5NH:3H32 5NH H371 5NH:1H37 5NH H372 5NH:2H37 5NH H521 5NH:1H52 5NH H522 5NH:2H52 5NH H523 5NH:3H52 5NH H531 5NH:1H53 5NH H532 5NH:2H53 5NH H533 5NH:3H53 5NH H61 5NI:1H6 5NI H71 5NI:1H7 5NI H41 5NI:1H4 5NI HN11 5NI:1HN1 5NI H31 5NI:1H3 5NI H31N 5OB:1NH3 5OB H21 5OB:1H2 5OB H41 5OB:1H4 5OB H61 5OB:1H6 5OB H71 5OB:1H7 5OB H111 5OB:1H11 5OB H112 5OB:2H11 5OB H113 5OB:3H11 5OB H11 5OP:1H1 5OP H12 5OP:2H1 5OP H13A 5OP:3H1 5OP H21 5OP:1H2 5OP H22 5OP:2H2 5OP H31 5OP:1H3 5OP H32 5OP:2H3 5OP H41 5OP:1H4 5OP H42 5OP:2H4 5OP H51 5OP:1H5 5OP H52 5OP:2H5 5OP H111 5OP:1H11 5OP H112 5OP:2H11 5OP H141 5OP:1H14 5OP H142 5OP:2H14 5OP H171 5OP:1H17 5OP H172 5OP:2H17 5OP H181 5OP:1H18 5OP H182 5OP:2H18 5OP H191 5OP:1H19 5OP H192 5OP:2H19 5OP H4A1 5PA:1H4A 5PA H4A2 5PA:2H4A 5PA HOP2 5PA:2HOP 5PA HOP3 5PA:3HOP 5PA H5A1 5PA:1H5A 5PA H5A2 5PA:2H5A 5PA H2A1 5PA:1H2A 5PA H2A2 5PA:2H2A 5PA H2A3 5PA:3H2A 5PA H91 5PA:1H9 5PA H92 5PA:2H9 5PA H101 5PA:1H10 5PA H102 5PA:2H10 5PA HOP3 5PC:3HOP 5PC HOP2 5PC:2HOP 5PC H5' 5PC:1H5* 5PC H5'' 5PC:2H5* 5PC H4' 5PC: H4* 5PC H3' 5PC: H3* 5PC HO3' 5PC:H3T 5PC H2' 5PC:1H2* 5PC H2'' 5PC:2H2* 5PC H1' 5PC: H1* 5PC H251 5PH:1H25 5PH H252 5PH:2H25 5PH H361 5PH:1H36 5PH H362 5PH:2H36 5PH H363 5PH:3H36 5PH H41 5PH:1H4 5PH H42 5PH:2H4 5PH H11 5PH:1H1 5PH H12 5PH:2H1 5PH H121 5PH:1H12 5PH H122 5PH:2H12 5PH H81 5PH:1H8 5PH H82 5PH:2H8 5PH H181 5PI:1H18 5PI H182 5PI:2H18 5PI H191 5PI:1H19 5PI H192 5PI:2H19 5PI H211 5PI:1H21 5PI H212 5PI:2H21 5PI HN11 5PI:1HN1 5PI HN12 5PI:2HN1 5PI HN31 5PI:1HN3 5PI HN32 5PI:2HN3 5PI H11 5PI:1H1 5PI H12A 5PI:2H1 5PI H91 5PI:1H9 5PI H92 5PI:2H9 5PI H81 5PI:1H8 5PI H82 5PI:2H8 5PI H83 5PI:3H8 5PI H71 5PI:1H7 5PI H72 5PI:2H7 5PI H101 5PI:1H10 5PI H102 5PI:2H10 5PI H111 5PI:1H11 5PI H112 5PI:2H11 5PI H113 5PI:3H11 5PI H141 5PP:1H14 5PP H142 5PP:2H14 5PP H151 5PP:1H15 5PP H152 5PP:2H15 5PP H161 5PP:1H16 5PP H162 5PP:2H16 5PP H171 5PP:1H17 5PP H172 5PP:2H17 5PP H181 5PP:1H18 5PP H182 5PP:2H18 5PP H183 5PP:3H18 5PP H71 5PV:1H7 5PV H72 5PV:2H7 5PV H81 5PV:1H8 5PV H82 5PV:2H8 5PV H91 5PV:1H9 5PV H92 5PV:2H9 5PV H101 5PV:1H10 5PV H102 5PV:2H10 5PV H71 5PY:1H5M 5PY H72 5PY:2H5M 5PY H73 5PY:3H5M 5PY H1' 5PY: H1* 5PY H2' 5PY:1H2* 5PY H2'' 5PY:2H2* 5PY H3' 5PY: H3* 5PY HO3' 5PY:H3T 5PY H4' 5PY: H4* 5PY H5' 5PY:1H5* 5PY H5'' 5PY:2H5* 5PY HOP2 5PY:2HOP 5PY HOP3 5PY:3HOP 5PY HN11 5QC:1HN1 5QC HN12 5QC:2HN1 5QC H111 5QC:1H11 5QC H112 5QC:2H11 5QC H201 5QC:1H20 5QC H202 5QC:2H20 5QC H231 5QC:1H23 5QC H232 5QC:2H23 5QC H281 5QC:1H28 5QC H282 5QC:2H28 5QC H291 5QC:1H29 5QC H292 5QC:2H29 5QC H311 5QC:1H31 5QC H312 5QC:2H31 5QC H181 5RM:1H18 5RM H182 5RM:2H18 5RM H183 5RM:3H18 5RM H111 5RM:1H11 5RM H112 5RM:2H11 5RM H113 5RM:3H11 5RM H141 5RM:1H14 5RM H142 5RM:2H14 5RM H151 5RM:1H15 5RM H152 5RM:2H15 5RM H161 5RM:1H16 5RM H162 5RM:2H16 5RM H163 5RM:3H16 5RM H21 5RP:1H2 5RP H22 5RP:2H2 5RP H71 5RP:1H7 5RP H72 5RP:2H7 5RP HR61 5SA:1HR6 5SA HR62 5SA:2HR6 5SA HV61 5SA:1HV6 5SA HV62 5SA:2HV6 5SA HV63 5SA:3HV6 5SA HQ61 5SA:1HQ6 5SA HQ62 5SA:2HQ6 5SA HW61 5SA:1HW6 5SA HW62 5SA:2HW6 5SA HY71 5SA:1HY7 5SA HY72 5SA:2HY7 5SA H1C1 5SD:1H1C 5SD H1C2 5SD:2H1C 5SD H2C1 5SD:1H2C 5SD H2C2 5SD:2H2C 5SD H4C1 5SD:1H4C 5SD H4C2 5SD:2H4C 5SD H6C1 5SD:1H6C 5SD H6C2 5SD:2H6C 5SD H7C1 5SD:1H7C 5SD H7C2 5SD:2H7C 5SD H111 5SD:1H11 5SD H112 5SD:2H11 5SD H121 5SD:1H12 5SD H122 5SD:2H12 5SD H151 5SD:1H15 5SD H152 5SD:2H15 5SD H161 5SD:1H16 5SD H162 5SD:2H16 5SD H181 5SD:1H18 5SD H182 5SD:2H18 5SD H183 5SD:3H18 5SD H191 5SD:1H19 5SD H192 5SD:2H19 5SD H193 5SD:3H19 5SD HAQ1 5TN:1HAQ 5TN HAQ2 5TN:2HAQ 5TN HAP1 5TN:1HAP 5TN HAP2 5TN:2HAP 5TN HAA1 5TN:1HAA 5TN HAA2 5TN:2HAA 5TN HAA3 5TN:3HAA 5TN HAB1 5TN:1HAB 5TN HAB2 5TN:2HAB 5TN HAB3 5TN:3HAB 5TN HAC1 5TN:1HAC 5TN HAC2 5TN:2HAC 5TN HAC3 5TN:3HAC 5TN HAR1 5TN:1HAR 5TN HAR2 5TN:2HAR 5TN HAS1 5TN:1HAS 5TN HAS2 5TN:2HAS 5TN HAD1 5TN:1HAD 5TN HAD2 5TN:2HAD 5TN HAD3 5TN:3HAD 5TN HAE1 5TN:1HAE 5TN HAE2 5TN:2HAE 5TN HAE3 5TN:3HAE 5TN H1' 5UD: H1* 5UD H2' 5UD: H2* 5UD HO2' 5UD:*HO2 5UD H3' 5UD: H3* 5UD HO3' 5UD:*HO3 5UD H4' 5UD: H4* 5UD H5'1 5UD:1H5* 5UD H5'2 5UD:2H5* 5UD HO5' 5UD:*HO5 5UD H11A 5X:1H1 5X H12 5X:2H1 5X H41 5X:1H4 5X H42 5X:2H4 5X H43 5X:3H4 5X HOP3 5YL:3HOP 5YL HOP2 5YL:2HOP 5YL H171 5YL:1H17 5YL H172 5YL:2H17 5YL H161 5YL:1H16 5YL H162 5YL:2H16 5YL H151 5YL:1H15 5YL H152 5YL:2H15 5YL H141 5YL:1H14 5YL H142 5YL:2H14 5YL H131 5YL:1H13 5YL H132 5YL:2H13 5YL H81 5YL:1H8 5YL H82 5YL:2H8 5YL H91 5YL:1H9 5YL H101 5YL:1H10 5YL H10O 5YL:OH10 5YL H111 5YL:1H11 5YL H11O 5YL:OH11 5YL H121 5YL:1H12 5YL H122 5YL:2H12 5YL H12O 5YL:OH12 5YL H171 5Z5:1H17 5Z5 H172 5Z5:2H17 5Z5 H173 5Z5:3H17 5Z5 H141 5Z5:1H14 5Z5 H142 5Z5:2H14 5Z5 H143 5Z5:3H14 5Z5 H151 5Z5:1H15 5Z5 H152 5Z5:2H15 5Z5 H153 5Z5:3H15 5Z5 H251 5ZA:1H25 5ZA H252 5ZA:2H25 5ZA H253 5ZA:3H25 5ZA H261 5ZA:1H26 5ZA H262 5ZA:2H26 5ZA H101 5ZA:1H10 5ZA H102 5ZA:2H10 5ZA H181 5ZA:1H18 5ZA H182 5ZA:2H18 5ZA H191 5ZA:1H19 5ZA H192 5ZA:2H19 5ZA H321 600:1H32 600 H322 600:2H32 600 H351 600:1H35 600 H352 600:2H35 600 H761 600:1H76 600 H762 600:2H76 600 H763 600:3H76 600 H721 600:1H72 600 H722 600:2H72 600 H741 600:1H74 600 H742 600:2H74 600 H743 600:3H74 600 H751 600:1H75 600 H752 600:2H75 600 H753 600:3H75 600 H271 606:1H27 606 H272 606:2H27 606 H261 606:1H26 606 H262 606:2H26 606 H251 606:1H25 606 H252 606:2H25 606 H231 606:1H23 606 H232 606:2H23 606 H121 606:1H12 606 H122 606:2H12 606 H3B 607:H3'' 607 H4B 607:H4'' 607 H5B 607:H5'' 607 H6B 607:H6'' 607 H71 608:1H7 608 H72 608:2H7 608 H21 612:1H2 612 H31 612:1H3 612 H41 612:1H4 612 H51 612:1H5 612 H61 612:1H6 612 HF1 612:1HF 612 HH1 612:1HH 612 HH2 612:2HH 612 HH3 612:3HH 612 HI1 612:1HI 612 HI2 612:2HI 612 HI3 612:3HI 612 HN1 612:1HN 612 HA1 612:1HA 612 HA2 612:2HA 612 HC1 612:1HC 612 HC2 612:2HC 612 HD1 612:1HD 612 HD2 612:2HD 612 HD3 612:3HD 612 H30C 616:CH30 616 H27C 616:CH27 616 H171 616:1H17 616 H172 616:2H17 616 H173 616:3H17 616 HC11 616:1HC1 616 HC12 616:2HC1 616 HC13 616:3HC1 616 H29C 616:CH29 616 HC31 616:1HC3 616 HC32 616:2HC3 616 HC33 616:3HC3 616 H281 616:1H28 616 H282 616:2H28 616 H261 616:1H26 616 H262 616:2H26 616 HC61 616:1HC6 616 HC62 616:2HC6 616 H501 616:1H50 616 H502 616:2H50 616 H451 616:1H45 616 H452 616:2H45 616 H461 616:1H46 616 H462 616:2H46 616 H471 616:1H47 616 H472 616:2H47 616 H481 616:1H48 616 H482 616:2H48 616 H91 617:1H9 617 H92 617:2H9 617 H11A 618:1H1 618 H12 618:2H1 618 H13A 618:3H1 618 H41 618:1H4 618 H42 618:2H4 618 H43 618:3H4 618 H121 618:1H12 618 H122 618:2H12 618 H191 618:1H19 618 H192 618:2H19 618 H193 618:3H19 618 H201 618:1H20 618 H202 618:2H20 618 H203 618:3H20 618 H291 618:1H29 618 H292 618:2H29 618 H293 618:3H29 618 H51 623:1H5 623 H52 623:2H5 623 H53 623:3H5 623 H221 623:1H22 623 H222 623:2H22 623 H121 623:1H12 623 H122 623:2H12 623 H061 624:1H06 624 H062 624:2H06 624 H071 624:1H07 624 H072 624:2H07 624 H081 624:1H08 624 H082 624:2H08 624 H111 624:1H11 624 H112 624:2H11 624 H201 624:1H20 624 H202 624:2H20 624 H311 624:1H31 624 H312 624:2H31 624 H313 624:3H31 624 H321 624:1H32 624 H322 624:2H32 624 H323 624:3H32 624 H321 626:1H32 626 H322 626:2H32 626 H201 626:1H20 626 H202 626:2H20 626 H241 626:1H24 626 H242 626:2H24 626 H211 626:1H21 626 H212 626:2H21 626 H231 626:1H23 626 H232 626:2H23 626 H251 626:1H25 626 H252 626:2H25 626 H253 626:3H25 626 H181 627:1H18 627 H182 627:2H18 627 H221 627:1H22 627 H222 627:2H22 627 H191 627:1H19 627 H192 627:2H19 627 H211 627:1H21 627 H212 627:2H21 627 H231 627:1H23 627 H232 627:2H23 627 H233 627:3H23 627 H361 627:1H36 627 H362 627:2H36 627 H363 627:3H36 627 HN11 628:1HN1 628 HN12 628:2HN1 628 H141 629:1H14 629 H142 629:2H14 629 H161 629:1H16 629 H162 629:2H16 629 H41 629:1H4 629 H42 629:2H4 629 H301 629:1H30 629 H302 629:2H30 629 H21A 62A:1H2 62A H22A 62A:2H2 62A H31 62A:1H3 62A H32 62A:2H3 62A H41 62A:1H4 62A H42 62A:2H4 62A HN71 62A:1HN7 62A HN72 62A:2HN7 62A H111 62A:1H11 62A H112 62A:2H11 62A H181 62A:1H18 62A H182 62A:2H18 62A H251 62A:1H25 62A H252 62A:2H25 62A H253 62A:3H25 62A H201 62P:1H20 62P H202 62P:2H20 62P H203 62P:3H20 62P H61 632:1H6 632 H62 632:2H6 632 H71 632:1H7 632 H72 632:2H7 632 H81 632:1H8 632 H82 632:2H8 632 H111 632:1H11 632 H112 632:2H11 632 H151 632:1H15 632 H152 632:2H15 632 H221 632:1H22 632 H222 632:2H22 632 H321 632:1H32 632 H322 632:2H32 632 H323 632:3H32 632 H21A 638:1H2 638 H22 638:2H2 638 H71A 638:1H7 638 H72 638:2H7 638 H311 638:1H31 638 H312 638:2H31 638 H611 638:1H61 638 H612 638:2H61 638 H101 641:1H10 641 H102 641:2H10 641 H81 641:1H8 641 H82 641:2H8 641 H41 641:1H4 641 H42 641:2H4 641 H51 641:1H5 641 H52 641:2H5 641 H61 641:1H6 641 H62 641:2H6 641 H101 645:1H10 645 H102 645:2H10 645 H103 645:3H10 645 H131 645:1H13 645 H132 645:2H13 645 H133 645:3H13 645 H141 645:1H14 645 H142 645:2H14 645 H143 645:3H14 645 H151 645:1H15 645 H152 645:2H15 645 H153 645:3H15 645 HOP2 64T:2HOP 64T H5' 64T:1H5* 64T H5'' 64T:2H5* 64T H4' 64T: H4* 64T H3' 64T: H3* 64T HO3' 64T:H3T 64T H2' 64T:1H2* 64T H2'' 64T:2H2* 64T H1' 64T: H1* 64T H71 64T:1H5M 64T H72 64T:2H5M 64T H73 64T:3H5M 64T H61 64T:1H6 64T H62 64T:2H6 64T HOP3 64T:3HOP 64T H2B 653:H2'' 653 H3B 653:H3'' 653 H4B 653:H4'' 653 H5B 653:H5'' 653 H6B 653:H6'' 653 H3TC 654:CH3T 654 H4TC 654:CH4T 654 H5TC 654:CH5T 654 H3IC 654:CH3I 654 H5IC 654:CH5I 654 HC11 654:1HC1 654 HC12 654:2HC1 654 HC81 654:1HC8 654 HC82 654:2HC8 654 HC83 654:3HC8 654 H2'1 65B:1H2' 65B H2'2 65B:2H2' 65B H2'3 65B:3H2' 65B H6'1 65B:1H6' 65B H6'2 65B:2H6' 65B H6'3 65B:3H6' 65B H181 65B:1H18 65B H182 65B:2H18 65B H341 663:1H34 663 H342 663:2H34 663 H343 663:3H34 663 H281 663:1H28 663 H282 663:2H28 663 H181 663:1H18 663 H182 663:2H18 663 H183 663:3H18 663 H41 665:1H4 665 H42 665:2H4 665 H81 665:1H8 665 H82 665:2H8 665 H101 665:1H10 665 H102 665:2H10 665 H111 666:1H11 666 H112 666:2H11 666 H161 666:1H16 666 H162 666:2H16 666 H171 666:1H17 666 H172 666:2H17 666 H181 666:1H18 666 H182 666:2H18 666 H411 666:1H41 666 H412 666:2H41 666 H471 666:1H47 666 H472 666:2H47 666 H473 666:3H47 666 HN11 667:1HN1 667 HN12 667:2HN1 667 H101 667:1H10 667 H102 667:2H10 667 H111 667:1H11 667 H112 667:2H11 667 H121 667:1H12 667 H122 667:2H12 667 H131 667:1H13 667 H132 667:2H13 667 H141 667:1H14 667 H142 667:2H14 667 H041 669:1H04 669 H042 669:2H04 669 H051 669:1H05 669 H052 669:2H05 669 H061 669:1H06 669 H062 669:2H06 669 H071 669:1H07 669 H072 669:2H07 669 H081 669:1H08 669 H082 669:2H08 669 H161 669:1H16 669 H162 669:2H16 669 H41A 672:1H4 672 H42 672:2H4 672 H43 672:3H4 672 H151 672:1H15 672 H152 672:2H15 672 H153 672:3H15 672 H141 672:1H14 672 H142 672:2H14 672 H143 672:3H14 672 H231 672:1H23 672 H232 672:2H23 672 H321 672:1H32 672 H322 672:2H32 672 H381 672:1H38 672 H382 672:2H38 672 H371 672:1H37 672 H372 672:2H37 672 H461 672:1H46 672 H462 672:2H46 672 H451 672:1H45 672 H452 672:2H45 672 H491 672:1H49 672 H492 672:2H49 672 H431 672:1H43 672 H432 672:2H43 672 H421 672:1H42 672 H422 672:2H42 672 H351 672:1H35 672 H352 672:2H35 672 H341 672:1H34 672 H342 672:2H34 672 H121 672:1H12 672 H122 672:2H12 672 H123 672:3H12 672 H111 672:1H11 672 H112 672:2H11 672 H113 672:3H11 672 H11 672:1H1 672 H12 672:2H1 672 H13A 672:3H1 672 H191 675:1H19 675 H192 675:2H19 675 H51 680:1H5 680 H52 680:2H5 680 H53 680:3H5 680 HN51 680:1HN5 680 HN52 680:2HN5 680 H11 681:1H1 681 H51 681:1H5 681 H52 681:2H5 681 H53 681:3H5 681 H61 681:1H6 681 H62 681:2H6 681 H63 681:3H6 681 H71 681:1H7 681 H72 681:2H7 681 H73 681:3H7 681 HVA1 681:1HVA 681 HVB1 681:1HVB 681 HV11 681:1HV1 681 HV12 681:2HV1 681 HV13 681:3HV1 681 HV21 681:1HV2 681 HV22 681:2HV2 681 HV23 681:3HV2 681 HNV1 681:1HNV 681 HAG1 681:1HAG 681 HAG2 681:2HAG 681 H2X1 681:1H2X 681 H3X1 681:1H3X 681 H3X2 681:2H3X 681 H6X1 681:1H6X 681 H7X1 681:1H7X 681 H8X1 681:1H8X 681 H9X1 681:1H9X 681 H0X1 681:1H0X 681 H61 682:1H6 682 H62 682:2H6 682 H71 682:1H7 682 H72 682:2H7 682 H81 682:1H8 682 H82 682:2H8 682 H121 682:1H12 682 H122 682:2H12 682 H211 682:1H21 682 H212 682:2H21 682 H213 682:3H21 682 H221 682:1H22 682 H222 682:2H22 682 H223 682:3H22 682 H241 682:1H24 682 H242 682:2H24 682 H111 687:1H11 687 H112 687:2H11 687 H171 687:1H17 687 H172 687:2H17 687 H173 687:3H17 687 H211 687:1H21 687 H212 687:2H21 687 H221 687:1H22 687 H222 687:2H22 687 H231 687:1H23 687 H232 687:2H23 687 H241 687:1H24 687 H242 687:2H24 687 H271 687:1H27 687 H272 687:2H27 687 H121 688:1H12 688 H122 688:2H12 688 HAN1 689:1HAN 689 HAN2 689:2HAN 689 HAN3 689:3HAN 689 HAR1 689:1HAR 689 HAR2 689:2HAR 689 HAR3 689:3HAR 689 HAS1 689:1HAS 689 HAS2 689:2HAS 689 HAS3 689:3HAS 689 HAT1 689:1HAT 689 HAT2 689:2HAT 689 HAM1 689:1HAM 689 HAM2 689:2HAM 689 H3B 693:H3'' 693 H4B 693:H4'' 693 H5B 693:H5'' 693 H6B 693:H6'' 693 H121 694:1H12 694 H122 694:2H12 694 H2B 696:H2'' 696 H3B 696:H3'' 696 H4B 696:H4'' 696 H5B 696:H5'' 696 H6B 696:H6'' 696 H161 698:1H16 698 H162 698:2H16 698 H331 698:1H33 698 H332 698:2H33 698 H401 698:1H40 698 H402 698:2H40 698 H403 698:3H40 698 H441 698:1H44 698 H442 698:2H44 698 H443 698:3H44 698 H9C1 698:1H9C 698 H9C2 698:2H9C 698 H9C3 698:3H9C 698 H8C1 698:1H8C 698 H8C2 698:2H8C 698 H8C3 698:3H8C 698 H7C1 698:1H7C 698 H7C2 698:2H7C 698 H7C3 698:3H7C 698 H331 699:1H33 699 H332 699:2H33 699 H161 699:1H16 699 H162 699:2H16 699 H441 699:1H44 699 H442 699:2H44 699 H443 699:3H44 699 H401 699:1H40 699 H402 699:2H40 699 H403 699:3H40 699 HO2' 6AB:'HO2 6AB HN61 6AB:1HN6 6AB HN62 6AB:2HN6 6AB HN21 6AP:1HN2 6AP HN22 6AP:2HN2 6AP HN61 6AP:1HN6 6AP HN62 6AP:2HN6 6AP H191 6C3:1H19 6C3 H192 6C3:2H19 6C3 H193 6C3:3H19 6C3 H221 6CA:1H22 6CA H222 6CA:2H22 6CA H211 6CA:1H21 6CA H212 6CA:2H21 6CA H201 6CA:1H20 6CA H202 6CA:2H20 6CA H191 6CA:1H19 6CA H192 6CA:2H19 6CA H181 6CA:1H18 6CA H182 6CA:2H18 6CA H171 6CA:1H17 6CA H172 6CA:2H17 6CA H2 6CL: HN2 6CL HB2 6CL: HB1 6CL HB3 6CL: HB2 6CL HG2 6CL: HG1 6CL HG3 6CL: HG2 6CL HD2 6CL: HD1 6CL HD3 6CL: HD2 6CL H11 6CM:1H1 6CM H12 6CM:2H1 6CM H61 6CM:1H6 6CM H62 6CM:2H6 6CM H71 6CM:1H7 6CM H72 6CM:2H7 6CM H81 6CM:1H8 6CM H82 6CM:2H8 6CM H91 6CM:1H9 6CM H92 6CM:2H9 6CM H101 6CM:1H10 6CM H102 6CM:2H10 6CM H111 6CM:1H11 6CM H112 6CM:2H11 6CM H121 6CM:1H12 6CM H122 6CM:2H12 6CM H131 6CM:1H13 6CM H132 6CM:2H13 6CM H141 6CM:1H14 6CM H142 6CM:2H14 6CM H151 6CM:1H15 6CM H152 6CM:2H15 6CM H161 6CM:1H16 6CM H162 6CM:2H16 6CM H171 6CM:1H17 6CM H172 6CM:2H17 6CM H181 6CM:1H18 6CM H182 6CM:2H18 6CM H183 6CM:3H18 6CM H201 6CM:1H20 6CM H202 6CM:2H20 6CM H211 6CM:1H21 6CM H212 6CM:2H21 6CM H221 6CM:1H22 6CM H222 6CM:2H22 6CM H231 6CM:1H23 6CM H232 6CM:2H23 6CM H241 6CM:1H24 6CM H242 6CM:2H24 6CM H243 6CM:3H24 6CM H101 6CP:1H10 6CP H102 6CP:2H10 6CP H121 6CP:1H12 6CP H122 6CP:2H12 6CP H131 6CP:1H13 6CP H132 6CP:2H13 6CP H141 6CP:1H14 6CP H142 6CP:2H14 6CP H151 6CP:1H15 6CP H152 6CP:2H15 6CP H161 6CP:1H16 6CP H162 6CP:2H16 6CP HAA1 6CS:1HAA 6CS HAA2 6CS:2HAA 6CS HAA3 6CS:3HAA 6CS HG21 6CS:1HG2 6CS HG22 6CS:2HG2 6CS H5' 6CT:1H5* 6CT H5'' 6CT:2H5* 6CT H4' 6CT: H4* 6CT H3' 6CT: H3* 6CT HO3' 6CT:*HO3 6CT H2' 6CT:1H2* 6CT H2'' 6CT:2H2* 6CT H1' 6CT: H1* 6CT H71 6CT:1H5M 6CT H72 6CT:2H5M 6CT H73 6CT:3H5M 6CT H' 6CT: H* 6CT HM'1 6CT:1HM* 6CT HM'2 6CT:2HM* 6CT HM'3 6CT:3HM* 6CT OP3 6CT: O3P 6CT HOP3 6CT:3HOP 6CT H 6CW:1HN 6CW H2 6CW:2HN 6CW HB2 6CW:1HB 6CW HB3 6CW:2HB 6CW H161 6DE:1H16 6DE H162 6DE:2H16 6DE H171 6DE:1H17 6DE H172 6DE:2H17 6DE H173 6DE:3H17 6DE H191 6DE:1H19 6DE H192 6DE:2H19 6DE H193 6DE:3H19 6DE H111 6DE:1H11 6DE H112 6DE:2H11 6DE H113 6DE:3H11 6DE H261 6EA:1H26 6EA H262 6EA:2H26 6EA H301 6EA:1H30 6EA H302 6EA:2H30 6EA H311 6EA:1H31 6EA H312 6EA:2H31 6EA HM71 6FA:1HM7 6FA HM72 6FA:2HM7 6FA HM73 6FA:3HM7 6FA HM81 6FA:1HM8 6FA HM82 6FA:2HM8 6FA HM83 6FA:3HM8 6FA H1'1 6FA:1H1* 6FA H1'2 6FA:2H1* 6FA H2' 6FA: H2* 6FA HO2' 6FA:*HO2 6FA H3' 6FA: H3* 6FA HO3' 6FA:*HO3 6FA H4' 6FA: H4* 6FA HO4' 6FA:*HO4 6FA H5'1 6FA:1H5* 6FA H5'2 6FA:2H5* 6FA HOP2 6FA:2HOP 6FA HOA2 6FA:2HOA 6FA H51A 6FA:AH51 6FA H52A 6FA:AH52 6FA H4B 6FA:AH4* 6FA H3B 6FA:AH3* 6FA HO3A 6FA:AHO3 6FA H2B 6FA:AH2* 6FA HO2A 6FA:AHO2 6FA H1B 6FA:AH1* 6FA H8A 6FA: AH8 6FA H61A 6FA:AH61 6FA H62A 6FA:AH62 6FA H2A 6FA: AH2 6FA H61 6GP:1H6 6GP H62 6GP:2H6 6GP H91 6GP:1H9 6GP H92 6GP:2H9 6GP H93 6GP:3H9 6GP HOP2 6HA:2HOP 6HA HOP3 6HA:3HOP 6HA H5' 6HA:1H5* 6HA H5'' 6HA:2H5* 6HA H4' 6HA: H4* 6HA H3' 6HA: H3* 6HA HO3' 6HA:HO3* 6HA H2' 6HA:1H2* 6HA H2'' 6HA:2H2* 6HA H1' 6HA: H1* 6HA H6'1 6HA:1H6* 6HA H6'2 6HA:2H6* 6HA H61 6HA:1H6 6HA H62 6HA:2H6 6HA HOP2 6HC:2HOP 6HC HOP3 6HC:3HOP 6HC H5' 6HC:1H5* 6HC H5'' 6HC:2H5* 6HC H4' 6HC: H4* 6HC H3' 6HC: H3* 6HC HO3' 6HC:HO3* 6HC H2' 6HC:1H2* 6HC H2'' 6HC:2H2* 6HC H1' 6HC: H1* 6HC H6'1 6HC:1H6* 6HC H6'2 6HC:2H6* 6HC H41 6HC:1H4 6HC H42 6HC:2H4 6HC HMA1 6HE:1HMA 6HE HMA2 6HE:2HMA 6HE HMA3 6HE:3HMA 6HE HAA1 6HE:1HAA 6HE HAA2 6HE:2HAA 6HE HBA1 6HE:1HBA 6HE HBA2 6HE:2HBA 6HE HMB1 6HE:1HMB 6HE HMB2 6HE:2HMB 6HE HMB3 6HE:3HMB 6HE HBB1 6HE:1HBB 6HE HBB2 6HE:2HBB 6HE HMC1 6HE:1HMC 6HE HMC2 6HE:2HMC 6HE HMC3 6HE:3HMC 6HE HBC1 6HE:1HBC 6HE HBC2 6HE:2HBC 6HE HMD1 6HE:1HMD 6HE HMD2 6HE:2HMD 6HE HMD3 6HE:3HMD 6HE HAD1 6HE:1HAD 6HE HAD2 6HE:2HAD 6HE HAD3 6HE:3HAD 6HE HOP2 6HG:2HOP 6HG HOP3 6HG:3HOP 6HG H5' 6HG:1H5* 6HG H5'' 6HG:2H5* 6HG H4' 6HG: H4* 6HG H3' 6HG: H3* 6HG HO3' 6HG:HO3* 6HG H2' 6HG:1H2* 6HG H2'' 6HG:2H2* 6HG H1' 6HG: H1* 6HG H6'1 6HG:1H6* 6HG H6'2 6HG:2H6* 6HG H21 6HG:1H2 6HG H22 6HG:2H2 6HG HOP2 6HT:2HOP 6HT HOP3 6HT:3HOP 6HT H5' 6HT:1H5* 6HT H5'' 6HT:2H5* 6HT H4' 6HT: H4* 6HT H3' 6HT: H3* 6HT HO3' 6HT:HO3* 6HT H2' 6HT:1H2* 6HT H2'' 6HT:2H2* 6HT H1' 6HT: H1* 6HT H6'1 6HT:1H6* 6HT H6'2 6HT:2H6* 6HT H71 6HT:1H5M 6HT H72 6HT:2H5M 6HT H73 6HT:3H5M 6HT HOP3 6IA:3HOP 6IA HOP2 6IA:2HOP 6IA H5' 6IA:1H5* 6IA H5'' 6IA:2H5* 6IA H4' 6IA: H4* 6IA H3' 6IA: H3* 6IA HO3' 6IA:H3T 6IA H2' 6IA: H2* 6IA HO2' 6IA:2HO* 6IA H1' 6IA: H1* 6IA H121 6IA:1H12 6IA H122 6IA:2H12 6IA H131 6IA:1H13 6IA H132 6IA:2H13 6IA H151 6IA:1H15 6IA H152 6IA:2H15 6IA H153 6IA:3H15 6IA H161 6IA:1H16 6IA H162 6IA:2H16 6IA H163 6IA:3H16 6IA HN41 6IG:1HN4 6IG HN42 6IG:2HN4 6IG H51 6IG:1H5 6IG H52 6IG:2H5 6IG H61 6IG:1H6 6IG H62 6IG:2H6 6IG H63 6IG:3H6 6IG H131 6IG:1H13 6IG H132 6IG:2H13 6IG H141 6IG:1H14 6IG H142 6IG:2H14 6IG H151 6IG:1H15 6IG H152 6IG:2H15 6IG H161 6IG:1H16 6IG H162 6IG:2H16 6IG H171 6IG:1H17 6IG H172 6IG:2H17 6IG H181 6IG:1H18 6IG H182 6IG:2H18 6IG H191 6IG:1H19 6IG H192 6IG:2H19 6IG H193 6IG:3H19 6IG H201 6IG:1H20 6IG H202 6IG:2H20 6IG H211 6IG:1H21 6IG H212 6IG:2H21 6IG H131 6IN:1H13 6IN H132 6IN:2H13 6IN H271 6IN:1H27 6IN H272 6IN:2H27 6IN H273 6IN:3H27 6IN H321 6IN:1H32 6IN H322 6IN:2H32 6IN H371 6IN:1H37 6IN H372 6IN:2H37 6IN H421 6IN:1H42 6IN H422 6IN:2H42 6IN H431 6IN:1H43 6IN H432 6IN:2H43 6IN H461 6IN:1H46 6IN H462 6IN:2H46 6IN HN11 6IP:1HN1 6IP HN12 6IP:2HN1 6IP H71 6IP:1H7 6IP H72 6IP:2H7 6IP H81 6IP:1H8 6IP H82 6IP:2H8 6IP HOP3 6MA:3HOP 6MA HOP2 6MA:2HOP 6MA H5' 6MA:1H5* 6MA H5'' 6MA:2H5* 6MA H4' 6MA: H4* 6MA H3' 6MA: H3* 6MA HO3' 6MA:H3T 6MA H2' 6MA:1H2* 6MA H2'' 6MA:2H2* 6MA H1' 6MA: H1* 6MA H61 6MA:1H6 6MA H11 6MA:1H1 6MA H12 6MA:2H1 6MA H13 6MA:3H1 6MA HOP3 6MC:3HOP 6MC HOP2 6MC:2HOP 6MC H5' 6MC:1H5* 6MC H5'' 6MC:2H5* 6MC H4' 6MC: H4* 6MC H3' 6MC: H3* 6MC HO3' 6MC:H3T 6MC H2' 6MC:1H2* 6MC H2'' 6MC:2H2* 6MC H1' 6MC: H1* 6MC H61 6MC:1H6 6MC H11 6MC:1H1 6MC H12 6MC:2H1 6MC H13 6MC:3H1 6MC HOP2 6MI:2HOP 6MI HOP3 6MI:3HOP 6MI H7M1 6MI:1H7M 6MI H7M2 6MI:2H7M 6MI H3I1 6MI:1H3I 6MI H3I2 6MI:2H3I 6MI H3I3 6MI:3H3I 6MI H2'1 6MI:1H2* 6MI H2'2 6MI:2H2* 6MI H5'1 6MI:1H5* 6MI H5'2 6MI:2H5* 6MI H4' 6MI: H4* 6MI H1' 6MI: H1* 6MI H3' 6MI: H3* 6MI H71 6MP:1H7 6MP H72 6MP:2H7 6MP H73 6MP:3H7 6MP HB1 6MR:1HB 6MR HB2 6MR:2HB 6MR HOP3 6MT:3HOP 6MT HOP2 6MT:2HOP 6MT H5' 6MT:1H5* 6MT H5'' 6MT:2H5* 6MT H4' 6MT: H4* 6MT H3' 6MT: H3* 6MT HO3' 6MT:H3T 6MT H2' 6MT:1H2* 6MT H2'' 6MT:2H2* 6MT H1' 6MT: H1* 6MT H61 6MT:1H6 6MT H11 6MT:1H1 6MT H12 6MT:2H1 6MT H13 6MT:3H1 6MT H1' 6MZ: H1* 6MZ H9C1 6MZ:1H9C 6MZ H9C2 6MZ:2H9C 6MZ H5'1 6MZ:1H5* 6MZ H5'2 6MZ:2H5* 6MZ H4' 6MZ: H4* 6MZ H3' 6MZ: H3* 6MZ H2' 6MZ: H2* 6MZ HAC1 6NA:1HAC 6NA HAC2 6NA:2HAC 6NA HBC1 6NA:1HBC 6NA HBC2 6NA:2HBC 6NA HGC1 6NA:1HGC 6NA HGC2 6NA:2HGC 6NA HDC1 6NA:1HDC 6NA HDC2 6NA:2HDC 6NA H6C1 6NA:1H6C 6NA H6C2 6NA:2H6C 6NA H6C3 6NA:3H6C 6NA HN11 6NH:1HN1 6NH HN12 6NH:2HN1 6NH H2B 6NH:H2'' 6NH H3B 6NH:H3'' 6NH H4B 6NH:H4'' 6NH H5B 6NH:H5'' 6NH H6B 6NH:H6'' 6NH H71 6NI:1H7 6NI H41 6NI:1H4 6NI H51 6NI:1H5 6NI HN11 6NI:1HN1 6NI H31 6NI:1H3 6NI H101 6NP:1H10 6NP H102 6NP:2H10 6NP H281 6NP:1H28 6NP H282 6NP:2H28 6NP H291 6NP:1H29 6NP H292 6NP:2H29 6NP H301 6NP:1H30 6NP H302 6NP:2H30 6NP HOP2 6OG:2HOP 6OG HN21 6OG:1HN2 6OG HN22 6OG:2HN2 6OG H2' 6OG:1H2* 6OG H2'' 6OG:2H2* 6OG H5' 6OG:1H5* 6OG H5'' 6OG:2H5* 6OG H4' 6OG: H4* 6OG H1' 6OG: H1* 6OG H3' 6OG: H3* 6OG HO3' 6OG:H3T 6OG H1 6OG:1H 6OG H2 6OG:2H 6OG H3 6OG:3H 6OG HOP3 6OG:3HOP 6OG HA1 6PA:1HA 6PA HA2 6PA:2HA 6PA H11 6PA:1H1 6PA H12 6PA:2H1 6PA H21 6PA:1H2 6PA H22 6PA:2H2 6PA H31 6PA:1H3 6PA H32 6PA:2H3 6PA H41 6PA:1H4 6PA H42 6PA:2H4 6PA H61 6PA:1H6 6PA H62 6PA:2H6 6PA H71 6PA:1H7 6PA H72 6PA:2H7 6PA H73 6PA:3H7 6PA H61 6PG:1H6 6PG H62 6PG:2H6 6PG HOP2 6PG:2HOP 6PG HOP3 6PG:3HOP 6PG H261 6PL:1H26 6PL H262 6PL:2H26 6PL H263 6PL:3H26 6PL H251 6PL:1H25 6PL H252 6PL:2H25 6PL H241 6PL:1H24 6PL H242 6PL:2H24 6PL H231 6PL:1H23 6PL H232 6PL:2H23 6PL H221 6PL:1H22 6PL H222 6PL:2H22 6PL H211 6PL:1H21 6PL H212 6PL:2H21 6PL H201 6PL:1H20 6PL H202 6PL:2H20 6PL H191 6PL:1H19 6PL H192 6PL:2H19 6PL H181 6PL:1H18 6PL H182 6PL:2H18 6PL H171 6PL:1H17 6PL H172 6PL:2H17 6PL H161 6PL:1H16 6PL H162 6PL:2H16 6PL H151 6PL:1H15 6PL H152 6PL:2H15 6PL H141 6PL:1H14 6PL H142 6PL:2H14 6PL H131 6PL:1H13 6PL H132 6PL:2H13 6PL H121 6PL:1H12 6PL H122 6PL:2H12 6PL H31 6PL:1H3 6PL H32 6PL:2H3 6PL H11 6PL:1H1 6PL H12 6PL:2H1 6PL H41 6PL:1H4 6PL H42 6PL:2H4 6PL H51 6PL:1H5 6PL H52 6PL:2H5 6PL H71 6PL:1H7 6PL H72 6PL:2H7 6PL H73 6PL:3H7 6PL H81 6PL:1H8 6PL H82 6PL:2H8 6PL H83 6PL:3H8 6PL H61 6PL:1H6 6PL H62 6PL:2H6 6PL H63 6PL:3H6 6PL H321 6PL:1H32 6PL H322 6PL:2H32 6PL H331 6PL:1H33 6PL H332 6PL:2H33 6PL H341 6PL:1H34 6PL H342 6PL:2H34 6PL H351 6PL:1H35 6PL H352 6PL:2H35 6PL H361 6PL:1H36 6PL H362 6PL:2H36 6PL H371 6PL:1H37 6PL H372 6PL:2H37 6PL H381 6PL:1H38 6PL H382 6PL:2H38 6PL H391 6PL:1H39 6PL H392 6PL:2H39 6PL H401 6PL:1H40 6PL H402 6PL:2H40 6PL H411 6PL:1H41 6PL H412 6PL:2H41 6PL H421 6PL:1H42 6PL H422 6PL:2H42 6PL H431 6PL:1H43 6PL H432 6PL:2H43 6PL H441 6PL:1H44 6PL H442 6PL:2H44 6PL H451 6PL:1H45 6PL H452 6PL:2H45 6PL H461 6PL:1H46 6PL H462 6PL:2H46 6PL H471 6PL:1H47 6PL H472 6PL:2H47 6PL H481 6PL:1H48 6PL H482 6PL:2H48 6PL H483 6PL:3H48 6PL HAJ1 6PR:1HAJ 6PR HAJ2 6PR:2HAJ 6PR HB1 6PR:1HB 6PR HB2 6PR:2HB 6PR HAA1 6PR:1HAA 6PR HAA2 6PR:2HAA 6PR HR61 6SA:1HR6 6SA HR62 6SA:2HR6 6SA HY61 6SA:1HY6 6SA HY62 6SA:2HY6 6SA HY63 6SA:3HY6 6SA HQ71 6SA:1HQ7 6SA HQ72 6SA:2HQ7 6SA HW61 6SA:1HW6 6SA HW62 6SA:2HW6 6SA HP61 6SA:1HP6 6SA HP62 6SA:2HP6 6SA HV61 6SA:1HV6 6SA HV62 6SA:2HV6 6SA HBP1 6UL:1HBP 6UL HBP2 6UL:2HBP 6UL HBP3 6UL:3HBP 6UL HBN1 6UL:1HBN 6UL HBN2 6UL:2HBN 6UL HAX1 6UL:1HAX 6UL HAX2 6UL:2HAX 6UL HAY1 6UL:1HAY 6UL HAY2 6UL:2HAY 6UL HAZ1 6UL:1HAZ 6UL HAZ2 6UL:2HAZ 6UL HBA1 6UL:1HBA 6UL HBA2 6UL:2HBA 6UL HBB1 6UL:1HBB 6UL HBB2 6UL:2HBB 6UL HBC1 6UL:1HBC 6UL HBC2 6UL:2HBC 6UL HBD1 6UL:1HBD 6UL HBD2 6UL:2HBD 6UL HBE1 6UL:1HBE 6UL HBE2 6UL:2HBE 6UL HBF1 6UL:1HBF 6UL HBF2 6UL:2HBF 6UL HBG1 6UL:1HBG 6UL HBG2 6UL:2HBG 6UL HBH1 6UL:1HBH 6UL HBH2 6UL:2HBH 6UL HBI1 6UL:1HBI 6UL HBI2 6UL:2HBI 6UL HBJ1 6UL:1HBJ 6UL HBJ2 6UL:2HBJ 6UL HBK1 6UL:1HBK 6UL HBK2 6UL:2HBK 6UL HBL1 6UL:1HBL 6UL HBL2 6UL:2HBL 6UL HBM1 6UL:1HBM 6UL HBM2 6UL:2HBM 6UL HAW1 6UL:1HAW 6UL HAW2 6UL:2HAW 6UL HAV1 6UL:1HAV 6UL HAV2 6UL:2HAV 6UL HAU1 6UL:1HAU 6UL HAU2 6UL:2HAU 6UL HAT1 6UL:1HAT 6UL HAT2 6UL:2HAT 6UL HAS1 6UL:1HAS 6UL HAS2 6UL:2HAS 6UL HAR1 6UL:1HAR 6UL HAR2 6UL:2HAR 6UL HAO1 6UL:1HAO 6UL HAO2 6UL:2HAO 6UL HAN1 6UL:1HAN 6UL HAN2 6UL:2HAN 6UL HAM1 6UL:1HAM 6UL HAM2 6UL:2HAM 6UL HAL1 6UL:1HAL 6UL HAL2 6UL:2HAL 6UL HAK1 6UL:1HAK 6UL HAK2 6UL:2HAK 6UL HAJ1 6UL:1HAJ 6UL HAJ2 6UL:2HAJ 6UL HAI1 6UL:1HAI 6UL HAI2 6UL:2HAI 6UL HAH1 6UL:1HAH 6UL HAH2 6UL:2HAH 6UL HAG1 6UL:1HAG 6UL HAG2 6UL:2HAG 6UL HAF1 6UL:1HAF 6UL HAF2 6UL:2HAF 6UL HAE1 6UL:1HAE 6UL HAE2 6UL:2HAE 6UL HAD1 6UL:1HAD 6UL HAD2 6UL:2HAD 6UL HAC1 6UL:1HAC 6UL HAC2 6UL:2HAC 6UL HAB1 6UL:1HAB 6UL HAB2 6UL:2HAB 6UL HAA1 6UL:1HAA 6UL HAA2 6UL:2HAA 6UL HAA3 6UL:3HAA 6UL H101 700:1H10 700 H102 700:2H10 700 H121 700:1H12 700 H131 700:1H13 700 H141 700:1H14 700 H151 700:1H15 700 H161 700:1H16 700 H171 700:1H17 700 H191 700:1H19 700 H192 700:2H19 700 H201 700:1H20 700 H221 700:1H22 700 H222 700:2H22 700 H8C1 701:1H8C 701 H8C2 701:2H8C 701 H8C3 701:3H8C 701 H131 701:1H13 701 H132 701:2H13 701 H141 701:1H14 701 H142 701:2H14 701 H171 701:1H17 701 H172 701:2H17 701 H173 701:3H17 701 H191 701:1H19 701 H192 701:2H19 701 H231 701:1H23 701 H232 701:2H23 701 H201 701:1H20 701 H202 701:2H20 701 H221 701:1H22 701 H222 701:2H22 701 H231 703:1H23 703 H232 703:2H23 703 H241 703:1H24 703 H242 703:2H24 703 H251 703:1H25 703 H252 703:2H25 703 H271 703:1H27 703 H272 703:2H27 703 H281 703:1H28 703 H282 703:2H28 703 H301 703:1H30 703 H302 703:2H30 703 H311 703:1H31 703 H312 703:2H31 703 H121 709:1H12 709 H122 709:2H12 709 H231 709:1H23 709 H232 709:2H23 709 H233 709:3H23 709 H71 70U:1H5M 70U H72 70U:2H5M 70U H91 70U:1H9 70U H92 70U:2H9 70U H93 70U:3H9 70U H1' 70U: H1* 70U HO2' 70U:2HO* 70U H2' 70U: H2* 70U HO3' 70U:H3T 70U H3' 70U: H3* 70U H4' 70U: H4* 70U H5' 70U:1H5* 70U H5'' 70U:2H5* 70U HOP2 70U:2HOP 70U HOP3 70U:3HOP 70U H171 710:1H17 710 H172 710:2H17 710 H191 710:1H19 710 H192 710:2H19 710 H201 710:1H20 710 H202 710:2H20 710 H211 710:1H21 710 H212 710:2H21 710 H221 710:1H22 710 H222 710:2H22 710 H231 710:1H23 710 H232 710:2H23 710 H291 710:1H29 710 H292 710:2H29 710 HN21 711:1HN2 711 HN2A 711:2HN2 711 H121 711:1H12 711 H122 711:2H12 711 H221 711:1H22 711 H222 711:2H22 711 H223 711:3H22 711 H321 711:1H32 711 H322 711:2H32 711 H331 711:1H33 711 H332 711:2H33 711 H341 711:1H34 711 H342 711:2H34 711 H351 711:1H35 711 H352 711:2H35 711 H371 711:1H37 711 H372 711:2H37 711 H373 711:3H37 711 HN1 712:1HN 712 HN2 712:2HN 712 H31A 712:1H3 712 H32 712:2H3 712 H33 712:3H3 712 H41 712:1H4 712 H42 712:2H4 712 H211 712:1H21 712 H212 712:2H21 712 H213 712:3H21 712 H241 712:1H24 712 H242 712:2H24 712 H243 712:3H24 712 H321 712:1H32 712 H322 712:2H32 712 H323 712:3H32 712 H331 712:1H33 712 H332 712:2H33 712 H111 715:1H11 715 H112 715:2H11 715 H151 715:1H15 715 H152 715:2H15 715 H201 715:1H20 715 H202 715:2H20 715 H251 715:1H25 715 H252 715:2H25 715 H261 715:1H26 715 H262 715:2H26 715 H291 715:1H29 715 H292 715:2H29 715 H31 716:1H3 716 H32 716:2H3 716 H41 716:1H4 716 H42 716:2H4 716 H51 716:1H5 716 H52 716:2H5 716 HN81 716:1HN8 716 HN82 716:2HN8 716 H191 716:1H19 716 H192 716:2H19 716 H193 716:3H19 716 H201 716:1H20 716 H202 716:2H20 716 H203 716:3H20 716 HN1 720:1HN 720 HN2 720:2HN 720 HAC1 720:1HAC 720 HAC2 720:2HAC 720 HHC1 720:1HHC 720 HHC2 720:2HHC 720 HE21 720:1HE2 720 HE22 720:2HE2 720 HZC1 720:1HZC 720 HZC2 720:2HZC 720 HE11 720:1HE1 720 HE12 720:2HE1 720 HE13 720:3HE1 720 HMC1 720:1HMC 720 HMC2 720:2HMC 720 HB21 720:1HB2 720 HB22 720:2HB2 720 H311 730:1H31 730 H312 730:2H31 730 H301 730:1H30 730 H302 730:2H30 730 H321 730:1H32 730 H322 730:2H32 730 H331 730:1H33 730 H332 730:2H33 730 H361 730:1H36 730 H362 730:2H36 730 H281 730:1H28 730 H282 730:2H28 730 H271 730:1H27 730 H272 730:2H27 730 H141 730:1H14 730 H142 730:2H14 730 H221 730:1H22 730 H222 730:2H22 730 H251 736:1H25 736 H252 736:2H25 736 H261 736:1H26 736 H262 736:2H26 736 H281 736:1H28 736 H282 736:2H28 736 H291 736:1H29 736 H292 736:2H29 736 H21A 736:1H2 736 H22 736:2H2 736 H71 736:1H7 736 H72 736:2H7 736 H81 736:1H8 736 H82 736:2H8 736 H141 736:1H14 736 H142 736:2H14 736 H151 736:1H15 736 H152 736:2H15 736 H153 736:3H15 736 H061 737:1H06 737 H062 737:2H06 737 H071 737:1H07 737 H072 737:2H07 737 H081 737:1H08 737 H082 737:2H08 737 H111 737:1H11 737 H112 737:2H11 737 H151 737:1H15 737 H152 737:2H15 737 H291 737:1H29 737 H292 737:2H29 737 H293 737:3H29 737 H351 737:1H35 737 H352 737:2H35 737 H81 738:1H8 738 H82 738:2H8 738 H121 738:1H12 738 H122 738:2H12 738 H91 738:1H9 738 H92 738:2H9 738 H41 738:1H4 738 H42 738:2H4 738 HBC1 739:1HBC 739 HBC2 739:2HBC 739 HCC1 739:1HCC 739 HCC2 739:2HCC 739 HNC1 739:1HNC 739 HNC2 739:2HNC 739 HCI1 739:1HCI 739 HCI2 739:2HCI 739 HCI3 739:3HCI 739 HDI1 739:1HDI 739 HDI2 739:2HDI 739 HEI1 739:1HEI 739 HEI2 739:2HEI 739 HEI3 739:3HEI 739 HI1 739:1HI 739 HI2 739:2HI 739 HBF1 739:1HBF 739 HBF2 739:2HBF 739 HBM1 739:1HBM 739 HBM2 739:2HBM 739 HCM1 739:1HCM 739 HCM2 739:2HCM 739 HEM1 739:1HEM 739 HEM2 739:2HEM 739 HEM3 739:3HEM 739 H11 73Q:1H1 73Q H12 73Q:2H1 73Q H13 73Q:3H1 73Q H31 73Q:1H3 73Q H32 73Q:2H3 73Q H33 73Q:3H3 73Q H191 73V:1H19 73V H192 73V:2H19 73V H193 73V:3H19 73V H181 73V:1H18 73V H182 73V:2H18 73V H171 73V:1H17 73V H172 73V:2H17 73V H91 73V:1H9 73V H92 73V:2H9 73V H221 73V:1H22 73V H222 73V:2H22 73V H211 73V:1H21 73V H212 73V:2H21 73V H213 73V:3H21 73V H231 73V:1H23 73V H232 73V:2H23 73V H233 73V:3H23 73V H261 73V:1H26 73V H262 73V:2H26 73V H251 73V:1H25 73V H252 73V:2H25 73V H241 73V:1H24 73V H242 73V:2H24 73V H101 744:1H10 744 H102 744:2H10 744 H81 744:1H8 744 H82 744:2H8 744 H41 744:1H4 744 H42 744:2H4 744 H231 744:1H23 744 H232 744:2H23 744 H233 744:3H23 744 H191 745:1H19 745 H192 745:2H19 745 H71 745:1H7 745 H72 745:2H7 745 H161 74M:1H16 74M H162 74M:2H16 74M H151 74M:1H15 74M H152 74M:2H15 74M H153 74M:3H15 74M H171 74M:1H17 74M H172 74M:2H17 74M H173 74M:3H17 74M H201 74M:1H20 74M H202 74M:2H20 74M H191 74M:1H19 74M H192 74M:2H19 74M H181 74M:1H18 74M H182 74M:2H18 74M H91 74M:1H9 74M H92 74M:2H9 74M H93 74M:3H9 74M H111 74M:1H11 74M H112 74M:2H11 74M H121 74M:1H12 74M H122 74M:2H12 74M H131 74M:1H13 74M H132 74M:2H13 74M H133 74M:3H13 74M HC11 750:1HC1 750 HC12 750:2HC1 750 HC31 750:1HC3 750 HC32 750:2HC3 750 HC41 750:1HC4 750 HC42 750:2HC4 750 HC61 750:1HC6 750 HC62 750:2HC6 750 HC71 750:1HC7 750 HC72 750:2HC7 750 HC81 750:1HC8 750 HC82 750:2HC8 750 H231 750:1H23 750 H232 750:2H23 750 H251 750:1H25 750 H252 750:2H25 750 H253 750:3H25 750 H261 750:1H26 750 H262 750:2H26 750 H263 750:3H26 750 H331 750:1H33 750 H332 750:2H33 750 H351 750:1H35 750 H352 750:2H35 750 H361 750:1H36 750 H362 750:2H36 750 H371 750:1H37 750 H372 750:2H37 750 H401 750:1H40 750 H402 750:2H40 750 H101 75V:1H10 75V H102 75V:2H10 75V H111 75V:1H11 75V H112 75V:2H11 75V H113 75V:3H11 75V H141 75V:1H14 75V H142 75V:2H14 75V H131 75V:1H13 75V H132 75V:2H13 75V H133 75V:3H13 75V H151 75V:1H15 75V H152 75V:2H15 75V H153 75V:3H15 75V H161 75V:1H16 75V H162 75V:2H16 75V H163 75V:3H16 75V H12 760:2H1 760 H11 760:1H1 760 H22A 760:2H2 760 H21A 760:1H2 760 H32 760:2H3 760 H31 760:1H3 760 H42 760:2H4 760 H41 760:1H4 760 H171 760:1H17 760 H172 760:2H17 760 H11 761:1H1 761 H21 761:1H2 761 H51 761:1H5 761 H61 761:1H6 761 H111 761:1H11 761 H141 761:1H14 761 H2B 762:H2'' 762 H3B 762:H3'' 762 H4B 762:H4'' 762 H5B 762:H5'' 762 H6B 762:H6'' 762 H331 76A:1H33 76A H332 76A:2H33 76A H341 76A:1H34 76A H342 76A:2H34 76A H301 76A:1H30 76A H302 76A:2H30 76A H311 76A:1H31 76A H312 76A:2H31 76A H211 76A:1H21 76A H212 76A:2H21 76A H101 76V:1H10 76V H102 76V:2H10 76V H111 76V:1H11 76V H112 76V:2H11 76V H113 76V:3H11 76V H141 76V:1H14 76V H142 76V:2H14 76V H131 76V:1H13 76V H132 76V:2H13 76V H133 76V:3H13 76V H151 76V:1H15 76V H152 76V:2H15 76V H153 76V:3H15 76V H181 76V:1H18 76V H182 76V:2H18 76V H171 76V:1H17 76V H172 76V:2H17 76V H173 76V:3H17 76V H191 76V:1H19 76V H192 76V:2H19 76V H193 76V:3H19 76V H2N1 771:1H2N 771 H2N2 771:2H2N 771 H8C1 771:1H8C 771 H8C2 771:2H8C 771 H151 771:1H15 771 H152 771:2H15 771 H221 771:1H22 771 H222 771:2H22 771 H223 771:3H22 771 H231 771:1H23 771 H232 771:2H23 771 H233 771:3H23 771 H131 773:1H13 773 H132 773:2H13 773 H133 773:3H13 773 H111 773:1H11 773 H112 773:2H11 773 H141 773:1H14 773 H142 773:2H14 773 H143 773:3H14 773 H151 773:1H15 773 H152 773:2H15 773 H153 773:3H15 773 H421 773:1H42 773 H422 773:2H42 773 H431 773:1H43 773 H432 773:2H43 773 H433 773:3H43 773 H201 773:1H20 773 H202 773:2H20 773 H203 773:3H20 773 H181 773:1H18 773 H182 773:2H18 773 H281 773:1H28 773 H282 773:2H28 773 H171 773:1H17 773 H172 773:2H17 773 H173 773:3H17 773 H411 773:1H41 773 H412 773:2H41 773 H413 773:3H41 773 H271 773:1H27 773 H272 773:2H27 773 H273 773:3H27 773 H31 773:1H3 773 H32A 773:2H3 773 H33 773:3H3 773 H61 773:1H6 773 H62 773:2H6 773 H63 773:3H6 773 H21A 778:1H2 778 H22 778:2H2 778 H31 778:1H3 778 H32A 778:2H3 778 H41 778:1H4 778 H42 778:2H4 778 H51 778:1H5 778 H52 778:2H5 778 H161 778:1H16 778 H162 778:2H16 778 H91 77A:1H9 77A H92 77A:2H9 77A H93 77A:3H9 77A H221 77A:1H22 77A H222 77A:2H22 77A H241 77A:1H24 77A H242 77A:2H24 77A H243 77A:3H24 77A H251 77A:1H25 77A H252 77A:2H25 77A H253 77A:3H25 77A H261 77A:1H26 77A H262 77A:2H26 77A H263 77A:3H26 77A H171 77B:1H17 77B H172 77B:2H17 77B H261 77B:1H26 77B H262 77B:2H26 77B H251 77B:1H25 77B H252 77B:2H25 77B H253 77B:3H25 77B H271 77B:1H27 77B H272 77B:2H27 77B H273 77B:3H27 77B H91 77B:1H9 77B H92 77B:2H9 77B H301 77B:1H30 77B H302 77B:2H30 77B H291 77B:1H29 77B H292 77B:2H29 77B H281 77B:1H28 77B H282 77B:2H28 77B H2B 780:H2'' 780 H3B 780:H3'' 780 H4B 780:H4'' 780 H5B 780:H5'' 780 H6B 780:H6'' 780 H2B 783:H2'' 783 H3B 783:H3'' 783 H4B 783:H4'' 783 H5B 783:H5'' 783 H6B 783:H6'' 783 H191 784:1H19 784 H192 784:2H19 784 H211 784:1H21 784 H212 784:2H21 784 H231 784:1H23 784 H232 784:2H23 784 H321 784:1H32 784 H322 784:2H32 784 H323 784:3H32 784 H311 784:1H31 784 H312 784:2H31 784 H313 784:3H31 784 H301 784:1H30 784 H302 784:2H30 784 H303 784:3H30 784 H141 784:1H14 784 H142 784:2H14 784 H151 784:1H15 784 H152 784:2H15 784 H8C1 784:1H8C 784 H8C2 784:2H8C 784 H241 784:1H24 784 H242 784:2H24 784 H101 78A:1H10 78A H102 78A:2H10 78A H191 78A:1H19 78A H192 78A:2H19 78A H181 78A:1H18 78A H182 78A:2H18 78A H183 78A:3H18 78A H201 78A:1H20 78A H202 78A:2H20 78A H203 78A:3H20 78A H231 78A:1H23 78A H232 78A:2H23 78A H221 78A:1H22 78A H222 78A:2H22 78A H211 78A:1H21 78A H212 78A:2H21 78A H11 790:1H1 790 H12 790:2H1 790 H21A 790:1H2 790 H22 790:2H2 790 H61 790:1H6 790 H62 790:2H6 790 H101 796:1H10 796 H102 796:2H10 796 H103 796:3H10 796 H271 796:1H27 796 H272 796:2H27 796 H431 796:1H43 796 H432 796:2H43 796 H281 796:1H28 796 H282 796:2H28 796 H51 7A8:1H5 7A8 H52 7A8:2H5 7A8 H81 7A8:1H8 7A8 H82 7A8:2H8 7A8 H91 7A8:1H9 7A8 H92 7A8:2H9 7A8 H131 7A8:1H13 7A8 H132 7A8:2H13 7A8 H133 7A8:3H13 7A8 H141 7A8:1H14 7A8 H142 7A8:2H14 7A8 H143 7A8:3H14 7A8 H151 7A8:1H15 7A8 H152 7A8:2H15 7A8 H153 7A8:3H15 7A8 HN11 7AD:1HN1 7AD HN12 7AD:2HN1 7AD H151 7AD:1H15 7AD H152 7AD:2H15 7AD H161 7AD:1H16 7AD H162 7AD:2H16 7AD H171 7AD:1H17 7AD H172 7AD:2H17 7AD H181 7AD:1H18 7AD H182 7AD:2H18 7AD H183 7AD:3H18 7AD H191 7AD:1H19 7AD H192 7AD:2H19 7AD H193 7AD:3H19 7AD H77 7AP:7H7 7AP H1'' 7AP:'H1' 7AP H2'' 7AP:'H2' 7AP H3'1 7AP:1H3' 7AP H3'2 7AP:2H3' 7AP H3'3 7AP:3H3' 7AP H11 7CA:1H1 7CA H12 7CA:2H1 7CA H13 7CA:3H1 7CA H171 7CA:1H17 7CA H172 7CA:2H17 7CA H181 7CA:1H18 7CA H182 7CA:2H18 7CA H201 7CA:1H20 7CA H202 7CA:2H20 7CA H203 7CA:3H20 7CA H211 7CA:1H21 7CA H212 7CA:2H21 7CA H213 7CA:3H21 7CA H271 7CA:1H27 7CA H272 7CA:2H27 7CA H273 7CA:3H27 7CA H81 7CS:1H8 7CS H82 7CS:2H8 7CS H83 7CS:3H8 7CS H71 7CS:1H7 7CS H72 7CS:2H7 7CS H61 7CS:1H6 7CS H62 7CS:2H6 7CS H41 7CS:1H4 7CS H42 7CS:2H4 7CS H21 7CS:1H2 7CS H22 7CS:2H2 7CS HOP2 7DA:2HOP 7DA HN61 7DA:1HN6 7DA HN62 7DA:2HN6 7DA H2' 7DA:1H2* 7DA H2'' 7DA:2H2* 7DA H5' 7DA:1H5* 7DA H5'' 7DA:2H5* 7DA H4' 7DA: H4* 7DA H1' 7DA: H1* 7DA HO3' 7DA:H3T 7DA HOP3 7DA:3HOP 7DA H61 7DE:1H6 7DE H62 7DE:2H6 7DE H63 7DE:3H6 7DE H91 7DE:1H9 7DE H92 7DE:2H9 7DE H93 7DE:3H9 7DE H161 7DE:1H16 7DE H162 7DE:2H16 7DE H171 7DE:1H17 7DE H172 7DE:2H17 7DE H173 7DE:3H17 7DE H71 7DG:1H7 7DG H72 7DG:2H7 7DG HN21 7DG:1HN2 7DG HN22 7DG:2HN2 7DG H61 7GP:1H6 7GP H62 7GP:2H6 7GP H91 7GP:1H9 7GP H92 7GP:2H9 7GP H101 7GP:1H10 7GP H102 7GP:2H10 7GP H103 7GP:3H10 7GP HOP2 7GU:2HOP 7GU HN21 7GU:1HN2 7GU HN22 7GU:2HN2 7GU H2' 7GU:1H2* 7GU H2'' 7GU:2H2* 7GU H5' 7GU:1H5* 7GU H5'' 7GU:2H5* 7GU H4' 7GU: H4* 7GU H1' 7GU: H1* 7GU H3' 7GU: H3* 7GU HO3' 7GU:H3T 7GU HOP3 7GU:3HOP 7GU HMA1 7HE:1HMA 7HE HMA2 7HE:2HMA 7HE HMA3 7HE:3HMA 7HE HAA1 7HE:1HAA 7HE HAA2 7HE:2HAA 7HE HAA3 7HE:3HAA 7HE HMB1 7HE:1HMB 7HE HMB2 7HE:2HMB 7HE HMB3 7HE:3HMB 7HE HBB1 7HE:1HBB 7HE HBB2 7HE:2HBB 7HE HMC1 7HE:1HMC 7HE HMC2 7HE:2HMC 7HE HMC3 7HE:3HMC 7HE HBC1 7HE:1HBC 7HE HBC2 7HE:2HBC 7HE HMD1 7HE:1HMD 7HE HMD2 7HE:2HMD 7HE HMD3 7HE:3HMD 7HE HAD1 7HE:1HAD 7HE HAD2 7HE:2HAD 7HE HBD1 7HE:1HBD 7HE HBD2 7HE:2HBD 7HE H31 7I2:1H3 7I2 H41 7I2:1H4 7I2 H51 7I2:1H5 7I2 H61 7I2:1H6 7I2 H151 7I2:1H15 7I2 H152 7I2:2H15 7I2 HN31 7IG:1HN3 7IG HN32 7IG:2HN3 7IG HN41 7IG:1HN4 7IG HN42 7IG:2HN4 7IG H51 7IG:1H5 7IG H52 7IG:2H5 7IG H61 7IG:1H6 7IG H62 7IG:2H6 7IG H63 7IG:3H6 7IG H191 7IG:1H19 7IG H192 7IG:2H19 7IG H31A 7IN:1H3 7IN H32 7IN:2H3 7IN H101 7IN:1H10 7IN H102 7IN:2H10 7IN H191 7IN:1H19 7IN H192 7IN:2H19 7IN H251 7IN:1H25 7IN H252 7IN:2H25 7IN H341 7IN:1H34 7IN H342 7IN:2H34 7IN H11A 7IP:1H1 7IP H12A 7IP:2H1 7IP H13 7IP:3H1 7IP H141 7IP:1H14 7IP H142 7IP:2H14 7IP H151 7IP:1H15 7IP H152 7IP:2H15 7IP H211 7IP:1H21 7IP H212 7IP:2H21 7IP HOP2 7MG:2HOP 7MG HOP3 7MG:3HOP 7MG H5' 7MG:1H5* 7MG H5'' 7MG:2H5* 7MG H4' 7MG: H4* 7MG H3' 7MG: H3* 7MG HO3' 7MG:*HO3 7MG H2' 7MG: H2* 7MG HO2' 7MG:*HO2 7MG H1' 7MG: H1* 7MG H81 7MG:1H8 7MG H82 7MG:2H8 7MG HN21 7MG:1HN2 7MG HN22 7MG:2HN2 7MG HM71 7MG:1HM7 7MG HM72 7MG:2HM7 7MG HM73 7MG:3HM7 7MG HAT1 7MP:1HAT 7MP HAT2 7MP:2HAT 7MP HAT3 7MP:3HAT 7MP HAS1 7MP:1HAS 7MP HAS2 7MP:2HAS 7MP HAR1 7MP:1HAR 7MP HAR2 7MP:2HAR 7MP HAR3 7MP:3HAR 7MP H3M1 7MQ:1H3M 7MQ H3M2 7MQ:2H3M 7MQ H3M3 7MQ:3H3M 7MQ H111 7MQ:1H11 7MQ H112 7MQ:2H11 7MQ H141 7MQ:1H14 7MQ H142 7MQ:2H14 7MQ H143 7MQ:3H14 7MQ H151 7MQ:1H15 7MQ H152 7MQ:2H15 7MQ H161 7MQ:1H16 7MQ H162 7MQ:2H16 7MQ H191 7MQ:1H19 7MQ H192 7MQ:2H19 7MQ H193 7MQ:3H19 7MQ H201 7MQ:1H20 7MQ H202 7MQ:2H20 7MQ H211 7MQ:1H21 7MQ H212 7MQ:2H21 7MQ H241 7MQ:1H24 7MQ H242 7MQ:2H24 7MQ H243 7MQ:3H24 7MQ H251 7MQ:1H25 7MQ H252 7MQ:2H25 7MQ H261 7MQ:1H26 7MQ H262 7MQ:2H26 7MQ H291 7MQ:1H29 7MQ H292 7MQ:2H29 7MQ H293 7MQ:3H29 7MQ H301 7MQ:1H30 7MQ H302 7MQ:2H30 7MQ H311 7MQ:1H31 7MQ H312 7MQ:2H31 7MQ H341 7MQ:1H34 7MQ H342 7MQ:2H34 7MQ H343 7MQ:3H34 7MQ H351 7MQ:1H35 7MQ H352 7MQ:2H35 7MQ H361 7MQ:1H36 7MQ H362 7MQ:2H36 7MQ H391 7MQ:1H39 7MQ H392 7MQ:2H39 7MQ H393 7MQ:3H39 7MQ H401 7MQ:1H40 7MQ H402 7MQ:2H40 7MQ H411 7MQ:1H41 7MQ H412 7MQ:2H41 7MQ H441 7MQ:1H44 7MQ H442 7MQ:2H44 7MQ H443 7MQ:3H44 7MQ H451 7MQ:1H45 7MQ H452 7MQ:2H45 7MQ H453 7MQ:3H45 7MQ HAN1 7MR:1HAN 7MR HAN2 7MR:2HAN 7MR HAZ1 7MR:1HAZ 7MR HAZ2 7MR:2HAZ 7MR H2B 7NH:H2'' 7NH H3B 7NH:H3'' 7NH H4B 7NH:H4'' 7NH H6B 7NH:H6'' 7NH H511 7NH:1H51 7NH H512 7NH:2H51 7NH H541 7NH:1H54 7NH H542 7NH:2H54 7NH H11 7NI:1H1 7NI H31 7NI:1H3 7NI H41 7NI:1H4 7NI H51 7NI:1H5 7NI H61 7NI:1H6 7NI H11 7PA:1H1 7PA H12 7PA:2H1 7PA H21 7PA:1H2 7PA H22 7PA:2H2 7PA H31 7PA:1H3 7PA H32 7PA:2H3 7PA H291 7PC:1H29 7PC H292 7PC:2H29 7PC H301 7PC:1H30 7PC H302 7PC:2H30 7PC H211 7PE:1H21 7PE H212 7PE:2H21 7PE H213 7PE:3H21 7PE H201 7PE:1H20 7PE H202 7PE:2H20 7PE H181 7PE:1H18 7PE H182 7PE:2H18 7PE H171 7PE:1H17 7PE H172 7PE:2H17 7PE H151 7PE:1H15 7PE H152 7PE:2H15 7PE H141 7PE:1H14 7PE H142 7PE:2H14 7PE H121 7PE:1H12 7PE H122 7PE:2H12 7PE H111 7PE:1H11 7PE H112 7PE:2H11 7PE H91 7PE:1H9 7PE H92 7PE:2H9 7PE H81 7PE:1H8 7PE H82 7PE:2H8 7PE H61 7PE:1H6 7PE H62 7PE:2H6 7PE H51 7PE:1H5 7PE H52 7PE:2H5 7PE H31 7PE:1H3 7PE H32 7PE:2H3 7PE H21 7PE:1H2 7PE H22 7PE:2H2 7PE H11 7PG:1H1 7PG H12 7PG:2H1 7PG H21 7PG:1H2 7PG H22 7PG:2H2 7PG H31 7PG:1H3 7PG H32 7PG:2H3 7PG H41 7PG:1H4 7PG H42 7PG:2H4 7PG H51 7PG:1H5 7PG H52 7PG:2H5 7PG H61 7PG:1H6 7PG H62 7PG:2H6 7PG H71 7PG:1H7 7PG H72 7PG:2H7 7PG H81 7PG:1H8 7PG H82 7PG:2H8 7PG H91 7PG:1H9 7PG H92 7PG:2H9 7PG H101 7PG:1H10 7PG H102 7PG:2H10 7PG H111 7PG:1H11 7PG H112 7PG:2H11 7PG H121 7PG:1H12 7PG H122 7PG:2H12 7PG H131 7PG:1H13 7PG H132 7PG:2H13 7PG H141 7PG:1H14 7PG H142 7PG:2H14 7PG H151 7PG:1H15 7PG H152 7PG:2H15 7PG H161 7PG:1H16 7PG H162 7PG:2H16 7PG H171 7PG:1H17 7PG H172 7PG:2H17 7PG H173 7PG:3H17 7PG HAX1 7PY:1HAX 7PY HAX2 7PY:2HAX 7PY HAX3 7PY:3HAX 7PY HAZ1 7PY:1HAZ 7PY HAZ2 7PY:2HAZ 7PY HAZ3 7PY:3HAZ 7PY HBB1 7PY:1HBB 7PY HBB2 7PY:2HBB 7PY HBB3 7PY:3HBB 7PY H101 7RA:1H10 7RA H102 7RA:2H10 7RA HOP2 7RA:2HOP 7RA HOP3 7RA:3HOP 7RA H5'1 7RA:1H5* 7RA H5'2 7RA:2H5* 7RA H4' 7RA: H4* 7RA H3' 7RA: H3* 7RA HO'3 7RA:3HO* 7RA H2' 7RA: H2* 7RA HO'2 7RA:2HO* 7RA H1' 7RA: H1* 7RA HOP2 7RP:2HOP 7RP HOP3 7RP:3HOP 7RP H5'1 7RP:1H5* 7RP H5'2 7RP:2H5* 7RP H4' 7RP: H4* 7RP H3' 7RP: H3* 7RP HO'3 7RP:3HO* 7RP H2' 7RP: H2* 7RP HO'2 7RP:2HO* 7RP H1' 7RP: H1* 7RP HAY1 7XY:1HAY 7XY HAY2 7XY:2HAY 7XY HAZ1 7XY:1HAZ 7XY HAZ2 7XY:2HAZ 7XY HAW1 7XY:1HAW 7XY HAW2 7XY:2HAW 7XY HAX1 7XY:1HAX 7XY HAX2 7XY:2HAX 7XY H21 803:1H2 803 H22 803:2H2 803 H211 803:1H21 803 H212 803:2H21 803 H213 803:3H21 803 H201 803:1H20 803 H202 803:2H20 803 H203 803:3H20 803 H101 803:1H10 803 H102 803:2H10 803 H111 803:1H11 803 H112 803:2H11 803 H131 803:1H13 803 H132 803:2H13 803 H151 803:1H15 803 H152 803:2H15 803 H191 803:1H19 803 H192 803:2H19 803 H193 803:3H19 803 H171 803:1H17 803 H172 803:2H17 803 H181 803:1H18 803 H182 803:2H18 803 H183 803:3H18 803 HN21 806:1HN2 806 HN22 806:2HN2 806 H121 806:1H12 806 H122 806:2H12 806 H421 806:1H42 806 H422 806:2H42 806 H431 806:1H43 806 H432 806:2H43 806 H441 806:1H44 806 H442 806:2H44 806 H451 806:1H45 806 H452 806:2H45 806 H471 806:1H47 806 H472 806:2H47 806 H473 806:3H47 806 H11 815:1H1 815 H21 815:1H2 815 H51 815:1H5 815 H101 815:1H10 815 H111 815:1H11 815 H171 815:1H17 815 H181 815:1H18 815 H191 815:1H19 815 H251 815:1H25 815 H301 815:1H30 815 H311 815:1H31 815 H312 815:2H31 815 H321 815:1H32 815 H322 815:2H32 815 H371 815:1H37 815 H421 815:1H42 815 H422 815:2H42 815 H431 815:1H43 815 H432 815:2H43 815 HN21 817:1HN2 817 HN22 817:2HN2 817 H31 817:1H3 817 H32 817:2H3 817 H31A 818:1H3 818 H32A 818:2H3 818 H41 818:1H4 818 H42 818:2H4 818 H51 818:1H5 818 H52 818:2H5 818 H61 818:1H6 818 H62 818:2H6 818 H121 818:1H12 818 H122 818:2H12 818 H161 818:1H16 818 H162 818:2H16 818 H231 818:1H23 818 H232 818:2H23 818 H301 818:1H30 818 H302 818:2H30 818 H331 818:1H33 818 H332 818:2H33 818 H341 818:1H34 818 H342 818:2H34 818 H351 818:1H35 818 H352 818:2H35 818 H353 818:3H35 818 H361 818:1H36 818 H362 818:2H36 818 H363 818:3H36 818 H371 818:1H37 818 H372 818:2H37 818 H373 818:3H37 818 H381 818:1H38 818 H382 818:2H38 818 H391 818:1H39 818 H392 818:2H39 818 H393 818:3H39 818 H411 818:1H41 818 H412 818:2H41 818 H413 818:3H41 818 H421 818:1H42 818 H422 818:2H42 818 H423 818:3H42 818 H431 818:1H43 818 H432 818:2H43 818 H433 818:3H43 818 H441 818:1H44 818 H442 818:2H44 818 H443 818:3H44 818 H451 818:1H45 818 H452 818:2H45 818 H453 818:3H45 818 HO10 818:0HO1 818 HO12 818:2HO1 818 HO13 818:3HO1 818 H161 81A:1H16 81A H162 81A:2H16 81A H163 81A:3H16 81A H21A 81A:1H2A 81A H22A 81A:2H2A 81A H23A 81A:3H2A 81A H101 81A:1H10 81A H102 81A:2H10 81A H141 81A:1H14 81A H142 81A:2H14 81A H143 81A:3H14 81A H144 81A:4H14 81A H151 81A:1H15 81A H152 81A:2H15 81A H51 821:1H5 821 H52 821:2H5 821 H53 821:3H5 821 H151 821:1H15 821 H152 821:2H15 821 H161 821:1H16 821 H162 821:2H16 821 H191 821:1H19 821 H192 821:2H19 821 H221 821:1H22 821 H222 821:2H22 821 H301 821:1H30 821 H302 821:2H30 821 H651 821:1H65 821 H652 821:2H65 821 H181 822:1H18 822 H182 822:2H18 822 H281 822:1H28 822 H282 822:2H28 822 H283 822:3H28 822 H381 822:1H38 822 H382 822:2H38 822 H391 822:1H39 822 H392 822:2H39 822 H421 822:1H42 822 H422 822:2H42 822 H461 822:1H46 822 H462 822:2H46 822 H491 822:1H49 822 H492 822:2H49 822 H111 826:1H11 826 H112 826:2H11 826 H121 826:1H12 826 H122 826:2H12 826 H151 826:1H15 826 H152 826:2H15 826 H231 826:1H23 826 H232 826:2H23 826 H21A 82A:1H2 82A H22A 82A:2H2 82A H211 839:1H21 839 H212 839:2H21 839 H221 839:1H22 839 H222 839:2H22 839 H111 843:1H11 843 H112 843:2H11 843 H171 843:1H17 843 H172 843:2H17 843 H173 843:3H17 843 H211 843:1H21 843 H212 843:2H21 843 H221 843:1H22 843 H222 843:2H22 843 H231 843:1H23 843 H232 843:2H23 843 H241 843:1H24 843 H242 843:2H24 843 H271 843:1H27 843 H272 843:2H27 843 H21A 846:1H2 846 H22 846:2H2 846 H71 846:1H7 846 H72 846:2H7 846 H311 846:1H31 846 H312 846:2H31 846 H611 846:1H61 846 H612 846:2H61 846 H711 846:1H71 846 H712 846:2H71 846 H721 846:1H72 846 H722 846:2H72 846 H71 852:1H7 852 H72 852:2H7 852 H151 852:1H15 852 H152 852:2H15 852 H153 852:3H15 852 H201 852:1H20 852 H202 852:2H20 852 H211 852:1H21 852 H212 852:2H21 852 H221 852:1H22 852 H222 852:2H22 852 H241 852:1H24 852 H242 852:2H24 852 H251 852:1H25 852 H252 852:2H25 852 H101 853:1H10 853 H102 853:2H10 853 H201 853:1H20 853 H202 853:2H20 853 H203 853:3H20 853 H281 853:1H28 853 H282 853:2H28 853 H291 853:1H29 853 H292 853:2H29 853 H321 853:1H32 853 H322 853:2H32 853 H361 853:1H36 853 H362 853:2H36 853 H391 853:1H39 853 H392 853:2H39 853 H711 853:1H71 853 H712 853:2H71 853 H31A 858:1H3 858 H32A 858:2H3 858 H41 858:1H4 858 H42 858:2H4 858 H51 858:1H5 858 H52 858:2H5 858 H61 858:1H6 858 H62A 858:2H6 858 H121 858:1H12 858 H122 858:2H12 858 H161 858:1H16 858 H162 858:2H16 858 H182 858:2H18 858 H231 858:1H23 858 H232 858:2H23 858 H301 858:1H30 858 H302 858:2H30 858 H331 858:1H33 858 H332 858:2H33 858 H341 858:1H34 858 H342 858:2H34 858 H351 858:1H35 858 H352 858:2H35 858 H353 858:3H35 858 H361 858:1H36 858 H362 858:2H36 858 H363 858:3H36 858 H371 858:1H37 858 H372 858:2H37 858 H373 858:3H37 858 H381 858:1H38 858 H382 858:2H38 858 H391 858:1H39 858 H392 858:2H39 858 H393 858:3H39 858 H411 858:1H41 858 H412 858:2H41 858 H413 858:3H41 858 H421 858:1H42 858 H422 858:2H42 858 H423 858:3H42 858 H431 858:1H43 858 H432 858:2H43 858 H433 858:3H43 858 H441 858:1H44 858 H442 858:2H44 858 H443 858:3H44 858 H451 858:1H45 858 H452 858:2H45 858 H453 858:3H45 858 H671 858:1H67 858 H672 858:2H67 858 H681 858:1H68 858 H682 858:2H68 858 H683 858:3H68 858 HO10 858:0HO1 858 H231 859:1H23 859 H232 859:2H23 859 H221 85A:1H22 85A H222 85A:2H22 85A H261 85A:1H26 85A H262 85A:2H26 85A H271 85A:1H27 85A H272 85A:2H27 85A H231 85A:1H23 85A H232 85A:2H23 85A H241 85A:1H24 85A H242 85A:2H24 85A H281 85A:1H28 85A H282 85A:2H28 85A H91 864:1H9 864 H92 864:2H9 864 H101 864:1H10 864 H102 864:2H10 864 H151 864:1H15 864 H152 864:2H15 864 H271 864:1H27 864 H272 864:2H27 864 H273 864:3H27 864 H281 864:1H28 864 H282 864:2H28 864 H283 864:3H28 864 H331 864:1H33 864 H332 864:2H33 864 H311 869:1H31 869 H312 869:2H31 869 H313 869:3H31 869 H71 869:1H7 869 H72 869:2H7 869 H73 869:3H7 869 H141 869:1H14 869 H142 869:2H14 869 H143 869:3H14 869 H211 869:1H21 869 H212 869:2H21 869 H213 869:3H21 869 H221 869:1H22 869 H222 869:2H22 869 H223 869:3H22 869 H231 869:1H23 869 H232 869:2H23 869 H233 869:3H23 869 H331 86A:1H33 86A H332 86A:2H33 86A H241 86A:1H24 86A H242 86A:2H24 86A H281 86A:1H28 86A H282 86A:2H28 86A H283 86A:3H28 86A H271 86A:1H27 86A H272 86A:2H27 86A H273 86A:3H27 86A H111 86A:1H11 86A H112 86A:2H11 86A H131 870:1H13 870 H132 870:2H13 870 H133 870:3H13 870 HN21 870:1HN2 870 HN22 870:2HN2 870 H111 872:1H11 872 H112 872:2H11 872 H151 872:1H15 872 H152 872:2H15 872 H201 872:1H20 872 H202 872:2H20 872 H251 872:1H25 872 H252 872:2H25 872 H261 872:1H26 872 H262 872:2H26 872 H271 872:1H27 872 H272 872:2H27 872 H371 872:1H37 872 H372 872:2H37 872 H71 876:1H7 876 H72A 876:2H7 876 H131 876:1H13 876 H132 876:2H13 876 H133 876:3H13 876 H171 876:1H17 876 H172 876:2H17 876 H181 876:1H18 876 H182 876:2H18 876 H191 876:1H19 876 H192 876:2H19 876 H201 876:1H20 876 H202 876:2H20 876 H231 876:1H23 876 H232 876:2H23 876 H91 877:1H9 877 H92 877:2H9 877 H231 877:1H23 877 H232 877:2H23 877 H233 877:3H23 877 H281 877:1H28 877 H282 877:2H28 877 H283 877:3H28 877 H331 877:1H33 877 H332 877:2H33 877 H371 877:1H37 877 H372 877:2H37 877 H381 877:1H38 877 H382 877:2H38 877 H383 877:3H38 877 H152 87Y:2H15 87Y H151 87Y:1H15 87Y H142 87Y:2H14 87Y H141 87Y:1H14 87Y H133 87Y:3H13 87Y H132 87Y:2H13 87Y H131 87Y:1H13 87Y H52 87Y:2H5 87Y H51 87Y:1H5 87Y H172 87Y:2H17 87Y H171 87Y:1H17 87Y H061 880:1H06 880 H062 880:2H06 880 H071 880:1H07 880 H072 880:2H07 880 H101 880:1H10 880 H102 880:2H10 880 H103 880:3H10 880 H171 880:1H17 880 H172 880:2H17 880 H181 880:1H18 880 H182 880:2H18 880 H201 880:1H20 880 H202 880:2H20 880 H211 880:1H21 880 H212 880:2H21 880 H561 880:1H56 880 H562 880:2H56 880 H571 880:1H57 880 H572 880:2H57 880 H581 880:1H58 880 H582 880:2H58 880 H591 880:1H59 880 H592 880:2H59 880 H601 880:1H60 880 H602 880:2H60 880 H71 882:1H7 882 H72 882:2H7 882 H81 882:1H8 882 H82 882:2H8 882 H101 882:1H10 882 H102 882:2H10 882 H131 882:1H13 882 H132 882:2H13 882 H133 882:3H13 882 H351 882:1H35 882 H352 882:2H35 882 H141 882:1H14 882 H142 882:2H14 882 H143 882:3H14 882 H11A 885:1H1 885 H12 885:2H1 885 H13 885:3H1 885 HN11 885:1HN1 885 HN12 885:2HN1 885 H81 885:1H8 885 H82 885:2H8 885 H91 885:1H9 885 H92 885:2H9 885 H101 885:1H10 885 H102 885:2H10 885 H311 888:1H31 888 H312 888:2H31 888 H321 888:1H32 888 H322 888:2H32 888 H381 888:1H38 888 H382 888:2H38 888 H383 888:3H38 888 H71 888:1H7 888 H72 888:2H7 888 H73 888:3H7 888 H171 892:1H17 892 H172 892:2H17 892 H181 892:1H18 892 H182 892:2H18 892 H183 892:3H18 892 H021 892:1H02 892 H022 892:2H02 892 H91 893:1H9 893 H92 893:2H9 893 H231 893:1H23 893 H232 893:2H23 893 H233 893:3H23 893 H281 893:1H28 893 H282 893:2H28 893 H283 893:3H28 893 H371 893:1H37 893 H372 893:2H37 893 H71 893:1H7 893 H72 893:2H7 893 H73 893:3H7 893 H9C1 894:1H9C 894 H9C2 894:2H9C 894 H6C1 894:1H6C 894 H6C2 894:2H6C 894 H131 894:1H13 894 H132 894:2H13 894 H141 894:1H14 894 H142 894:2H14 894 H171 894:1H17 894 H172 894:2H17 894 H173 894:3H17 894 H191 894:1H19 894 H192 894:2H19 894 H231 894:1H23 894 H232 894:2H23 894 H201 894:1H20 894 H202 894:2H20 894 H221 894:1H22 894 H222 894:2H22 894 H131 895:1H13 895 H132 895:2H13 895 H141 895:1H14 895 H142 895:2H14 895 H171 895:1H17 895 H172 895:2H17 895 H173 895:3H17 895 H191 895:1H19 895 H192 895:2H19 895 H231 895:1H23 895 H232 895:2H23 895 H201 895:1H20 895 H202 895:2H20 895 H221 895:1H22 895 H222 895:2H22 895 H6C1 896:1H6C 896 H6C2 896:2H6C 896 H5C1 896:1H5C 896 H5C2 896:2H5C 896 H5C3 896:3H5C 896 H241 896:1H24 896 H242 896:2H24 896 H243 896:3H24 896 H231 896:1H23 896 H232 896:2H23 896 H233 896:3H23 896 H201 896:1H20 896 H202 896:2H20 896 H203 896:3H20 896 H1C1 896:1H1C 896 H1C2 896:2H1C 896 H8C1 896:1H8C 896 H8C2 896:2H8C 896 H8C3 896:3H8C 896 H8C1 897:1H8C 897 H8C2 897:2H8C 897 H8C3 897:3H8C 897 H1C1 897:1H1C 897 H1C2 897:2H1C 897 H201 897:1H20 897 H202 897:2H20 897 H203 897:3H20 897 H6C1 897:1H6C 897 H6C2 897:2H6C 897 H231 897:1H23 897 H232 897:2H23 897 H233 897:3H23 897 H241 897:1H24 897 H242 897:2H24 897 H243 897:3H24 897 H5C1 897:1H5C 897 H5C2 897:2H5C 897 H251 897:1H25 897 H252 897:2H25 897 H253 897:3H25 897 H261 897:1H26 897 H262 897:2H26 897 H263 897:3H26 897 H2C1 897:1H2C 897 H2C2 897:2H2C 897 H2C3 897:3H2C 897 H141 899:1H14 899 H142 899:2H14 899 H143 899:3H14 899 H161 899:1H16 899 H162 899:2H16 899 H163 899:3H16 899 H311 89I:1H31 89I H312 89I:2H31 89I H301 89I:1H30 89I H302 89I:2H30 89I H281 89I:1H28 89I H282 89I:2H28 89I H271 89I:1H27 89I H272 89I:2H27 89I H441 89I:1H44 89I H442 89I:2H44 89I H443 89I:3H44 89I H481 89I:1H48 89I H482 89I:2H48 89I H483 89I:3H48 89I H521 89I:1H52 89I H522 89I:2H52 89I HD21 8AD:1HD2 8AD HD22 8AD:2HD2 8AD HD31 8AD:1HD3 8AD HD32 8AD:2HD3 8AD HD41 8AD:1HD4 8AD HD42 8AD:2HD4 8AD HD51 8AD:1HD5 8AD HD52 8AD:2HD5 8AD HD71 8AD:1HD7 8AD HD72 8AD:2HD7 8AD HD73 8AD:3HD7 8AD HD81 8AD:1HD8 8AD HD82 8AD:2HD8 8AD HD83 8AD:3HD8 8AD HN11 8AP:1HN1 8AP HN12 8AP:2HN1 8AP H91 8AP:1H9 8AP H92 8AP:2H9 8AP HOP2 8BR:2HOP 8BR HOP3 8BR:3HOP 8BR H5'1 8BR:1H5* 8BR H5'2 8BR:2H5* 8BR H4' 8BR: H4* 8BR H3' 8BR: H3* 8BR HO3' 8BR:*HO3 8BR H2' 8BR: H2* 8BR HO2' 8BR:*HO2 8BR H1' 8BR: H1* 8BR HN61 8BR:1HN6 8BR HN62 8BR:2HN6 8BR H2'1 8CS:1H2' 8CS H2'2 8CS:2H2' 8CS H101 8CS:1H10 8CS H102 8CS:2H10 8CS H5'1 8DA:1H5* 8DA H5'2 8DA:2H5* 8DA H4' 8DA: H4* 8DA H3' 8DA: H3* 8DA H1' 8DA: H1* 8DA H2'1 8DA:1H2* 8DA H2'2 8DA:2H2* 8DA HN61 8DA:1HN6 8DA HN62 8DA:2HN6 8DA H21 8DA:1H2 8DA H22 8DA:2H2 8DA HOG2 8DG:2HOG 8DG HOB2 8DG:2HOB 8DG HOA2 8DG:2HOA 8DG H5'1 8DG:1H5* 8DG H5'2 8DG:2H5* 8DG H4' 8DG: H4* 8DG H3' 8DG: H3* 8DG H2'1 8DG:1H2* 8DG H2'2 8DG:2H2* 8DG H1' 8DG: H1* 8DG HN21 8DG:1HN2 8DG HN22 8DG:2HN2 8DG HOP3 8FG:3HOP 8FG HOP2 8FG:2HOP 8FG HN21 8FG:1HN2 8FG HN22 8FG:2HN2 8FG H371 8FG:1H37 8FG H372 8FG:2H37 8FG H451 8FG:1H45 8FG H452 8FG:2H45 8FG H453 8FG:3H45 8FG H2' 8FG:1H2* 8FG H2'' 8FG:2H2* 8FG H5' 8FG:1H5* 8FG H5'' 8FG:2H5* 8FG H4' 8FG: H4* 8FG H1' 8FG: H1* 8FG H3' 8FG: H3* 8FG HO3' 8FG:H3T 8FG H61 8GP:1H6 8GP H62 8GP:2H6 8GP H101 8GP:1H10 8GP H102 8GP:2H10 8GP H111 8GP:1H11 8GP H112 8GP:2H11 8GP HOG2 8GT:2HOG 8GT HOB2 8GT:2HOB 8GT HOA2 8GT:2HOA 8GT H5'1 8GT:1H5* 8GT H5'2 8GT:2H5* 8GT H4' 8GT: H4* 8GT H3' 8GT: H3* 8GT H2' 8GT: H2* 8GT H1' 8GT: H1* 8GT HN21 8GT:1HN2 8GT HN22 8GT:2HN2 8GT HN21 8HG:1HN2 8HG HN22 8HG:2HN2 8HG H1' 8HG: H1* 8HG H2'1 8HG:1H2* 8HG H2'2 8HG:2H2* 8HG H3' 8HG: H3* 8HG H4' 8HG: H4* 8HG H5'1 8HG:1H5* 8HG H5'2 8HG:2H5* 8HG H5' 8HG: H5* 8HG H7N1 8ID:1H7N 8ID H7N2 8ID:2H7N 8ID H5'1 8ID:1H5' 8ID H5'2 8ID:2H5' 8ID H5A1 8ID:1H5* 8ID H5A2 8ID:2H5* 8ID H4B 8ID: H4* 8ID H1B 8ID: H1* 8ID H2B 8ID: H2* 8ID HO2A 8ID:HO2* 8ID H3B 8ID: H3* 8ID HO3A 8ID:HO3* 8ID H6A1 8ID:1H6A 8ID H6A2 8ID:2H6A 8ID HN21 8IG:1HN2 8IG HN22 8IG:2HN2 8IG HN11 8IG:1HN1 8IG H101 8IN:1H10 8IN H102 8IN:2H10 8IN H131 8IN:1H13 8IN H132 8IN:2H13 8IN H141 8IN:1H14 8IN H142 8IN:2H14 8IN H143 8IN:3H14 8IN H151 8IN:1H15 8IN H152 8IN:2H15 8IN H231 8IN:1H23 8IN H232 8IN:2H23 8IN H241 8IN:1H24 8IN H242 8IN:2H24 8IN H251 8IN:1H25 8IN H252 8IN:2H25 8IN HN11 8IP:1HN1 8IP HN12 8IP:2HN1 8IP H91 8IP:1H9 8IP H92 8IP:2H9 8IP H21 8MG:1H2 8MG H22 8MG:2H2 8MG H2' 8MG:1H2* 8MG H2'' 8MG:2H2* 8MG H5' 8MG:1H5* 8MG H5'' 8MG:2H5* 8MG H4' 8MG: H4* 8MG H1' 8MG: H1* 8MG H3' 8MG: H3* 8MG HO3' 8MG:H3T 8MG HC1 8MG:1HC 8MG HC2 8MG:2HC 8MG HC3 8MG:3HC 8MG H41 8MO:1H4 8MO H42 8MO:2H4 8MO H43 8MO:3H4 8MO HAI1 8MR:1HAI 8MR HAI2 8MR:2HAI 8MR HAI3 8MR:3HAI 8MR HAL1 8MR:1HAL 8MR HAL2 8MR:2HAL 8MR H191 8NH:1H19 8NH H192 8NH:2H19 8NH H221 8NH:1H22 8NH H222 8NH:2H22 8NH H301 8NH:1H30 8NH H302 8NH:2H30 8NH H303 8NH:3H30 8NH HOP3 8OG:3HOP 8OG HOP2 8OG:2HOP 8OG H5' 8OG:1H5* 8OG H5'' 8OG:2H5* 8OG H4' 8OG: H4* 8OG H3' 8OG: H3* 8OG HO3' 8OG:H3T 8OG H2' 8OG:1H2* 8OG H2'' 8OG:2H2* 8OG H1' 8OG: H1* 8OG H21 8OG:1H2 8OG H22 8OG:2H2 8OG H71 8PC:1H7 8PC H72 8PC:2H7 8PC HAA1 8PG:1HAA 8PG HAA2 8PG:2HAA 8PG HAA3 8PG:3HAA 8PG HAJ1 8PG:1HAJ 8PG HAJ2 8PG:2HAJ 8PG HAK1 8PG:1HAK 8PG HAK2 8PG:2HAK 8PG HAO1 8PG:1HAO 8PG HAO2 8PG:2HAO 8PG HAR1 8PG:1HAR 8PG HAR2 8PG:2HAR 8PG HAS1 8PG:1HAS 8PG HAS2 8PG:2HAS 8PG HAP1 8PG:1HAP 8PG HAP2 8PG:2HAP 8PG HAM1 8PG:1HAM 8PG HAM2 8PG:2HAM 8PG HAL1 8PG:1HAL 8PG HAL2 8PG:2HAL 8PG HAN1 8PG:1HAN 8PG HAN2 8PG:2HAN 8PG HAQ1 8PG:1HAQ 8PG HAQ2 8PG:2HAQ 8PG H71 8PP:1H7 8PP H72 8PP:2H7 8PP H101 8PP:1H10 8PP H102 8PP:2H10 8PP H103 8PP:3H10 8PP H111 8PP:1H11 8PP H112 8PP:2H11 8PP H121 8PP:1H12 8PP H122 8PP:2H12 8PP H151 8PP:1H15 8PP H152 8PP:2H15 8PP H153 8PP:3H15 8PP H161 8PP:1H16 8PP H162 8PP:2H16 8PP H171 8PP:1H17 8PP H172 8PP:2H17 8PP H201 8PP:1H20 8PP H202 8PP:2H20 8PP H203 8PP:3H20 8PP H211 8PP:1H21 8PP H212 8PP:2H21 8PP H221 8PP:1H22 8PP H222 8PP:2H22 8PP H251 8PP:1H25 8PP H252 8PP:2H25 8PP H253 8PP:3H25 8PP H261 8PP:1H26 8PP H262 8PP:2H26 8PP H271 8PP:1H27 8PP H272 8PP:2H27 8PP H301 8PP:1H30 8PP H302 8PP:2H30 8PP H303 8PP:3H30 8PP H311 8PP:1H31 8PP H312 8PP:2H31 8PP H321 8PP:1H32 8PP H322 8PP:2H32 8PP H351 8PP:1H35 8PP H352 8PP:2H35 8PP H353 8PP:3H35 8PP H361 8PP:1H36 8PP H362 8PP:2H36 8PP H371 8PP:1H37 8PP H372 8PP:2H37 8PP H401 8PP:1H40 8PP H402 8PP:2H40 8PP H411 8PP:1H41 8PP H412 8PP:2H41 8PP H413 8PP:3H41 8PP H421 8PP:1H42 8PP H422 8PP:2H42 8PP H451 8PP:1H45 8PP H452 8PP:2H45 8PP H453 8PP:3H45 8PP H461 8PP:1H46 8PP H462 8PP:2H46 8PP H463 8PP:3H46 8PP H141 8PS:1H14 8PS H142 8PS:2H14 8PS H151 8PS:1H15 8PS H152 8PS:2H15 8PS H161 8PS:1H16 8PS H162 8PS:2H16 8PS H171 8PS:1H17 8PS H172 8PS:2H17 8PS H181 8PS:1H18 8PS H182 8PS:2H18 8PS H191 8PS:1H19 8PS H192 8PS:2H19 8PS H201 8PS:1H20 8PS H202 8PS:2H20 8PS H211 8PS:1H21 8PS H212 8PS:2H21 8PS H213 8PS:3H21 8PS H91 8TT:1H9 8TT H92 8TT:2H9 8TT H93 8TT:3H9 8TT H101 8TT:1H10 8TT H102 8TT:2H10 8TT H103 8TT:3H10 8TT H81 8TT:1H8 8TT H82 8TT:2H8 8TT H83 8TT:3H8 8TT H121 8TT:1H12 8TT H122 8TT:2H12 8TT H131 8TT:1H13 8TT H132 8TT:2H13 8TT H141 8TT:1H14 8TT H142 8TT:2H14 8TT H151 8TT:1H15 8TT H152 8TT:2H15 8TT H161 8TT:1H16 8TT H162 8TT:2H16 8TT H171 8TT:1H17 8TT H172 8TT:2H17 8TT H181 8TT:1H18 8TT H182 8TT:2H18 8TT H191 8TT:1H19 8TT H192 8TT:2H19 8TT H201 8TT:1H20 8TT H202 8TT:2H20 8TT H211 8TT:1H21 8TT H212 8TT:2H21 8TT H41 8TT:1H4 8TT H42 8TT:2H4 8TT H21 8TT:1H2 8TT H22 8TT:2H2 8TT H321 901:1H32 901 H322 901:2H32 901 H331 901:1H33 901 H332 901:2H33 901 H333 901:3H33 901 H71 901:1H7 901 H72 901:2H7 901 H231 901:1H23 901 H232 901:2H23 901 H233 901:3H23 901 H121 901:1H12 901 H122 901:2H12 901 H131 901:1H13 901 H132 901:2H13 901 H151 901:1H15 901 H152 901:2H15 901 H141 901:1H14 901 H142 901:2H14 901 H181 901:1H18 901 H182 901:2H18 901 H341 901:1H34 901 H342 901:2H34 901 H351 901:1H35 901 H352 901:2H35 901 H353 901:3H35 901 H211 902:1H21 902 H212 902:2H21 902 H301 902:1H30 902 H302 902:2H30 902 H311 902:1H31 902 H312 902:2H31 902 H331 902:1H33 902 H332 902:2H33 902 H341 902:1H34 902 H342 902:2H34 902 H471 902:1H47 902 H472 902:2H47 902 H71 903:1H7 903 H72 903:2H7 903 H151 903:1H15 903 H152 903:2H15 903 H153 903:3H15 903 H201 903:1H20 903 H202 903:2H20 903 H211 903:1H21 903 H212 903:2H21 903 H221 903:1H22 903 H222 903:2H22 903 H241 903:1H24 903 H242 903:2H24 903 H251 903:1H25 903 H252 903:2H25 903 H811 903:1H81 903 H812 903:2H81 903 H813 903:3H81 903 HN31 905:1HN3 905 HN32 905:2HN3 905 H151 905:1H15 905 H152 905:2H15 905 H161 905:1H16 905 H162 905:2H16 905 H163 905:3H16 905 H191 905:1H19 905 H192 905:2H19 905 H201 905:1H20 905 H202 905:2H20 905 H203 905:3H20 905 HN51 905:1HN5 905 HN52 905:2HN5 905 H211 910:1H21 910 H212 910:2H21 910 H301 910:1H30 910 H302 910:2H30 910 H111 915:1H11 915 H112 915:2H11 915 H113 915:3H11 915 H291 915:1H29 915 H292 915:2H29 915 H301 915:1H30 915 H302 915:2H30 915 H321 915:1H32 915 H322 915:2H32 915 H331 915:1H33 915 H332 915:2H33 915 H331 922:1H33 922 H332 922:2H33 922 H281 922:1H28 922 H282 922:2H28 922 H283 922:3H28 922 H271 922:1H27 922 H272 922:2H27 922 H273 922:3H27 922 H111 922:1H11 922 H112 922:2H11 922 H11 936:1H1 936 H121 936:1H12 936 H122 936:2H12 936 H123 936:3H12 936 H191 936:1H19 936 H192 936:2H19 936 H251 936:1H25 936 H261 936:1H26 936 H281 936:1H28 936 H291 936:1H29 936 H371 936:1H37 936 H372 936:2H37 936 H373 936:3H37 936 H451 936:1H45 936 H452 936:2H45 936 H453 936:3H45 936 H5'1 93A:1H5* 93A H5'2 93A:2H5* 93A H121 941:1H12 941 H122 941:2H12 941 H131 941:1H13 941 H132 941:2H13 941 H141 941:1H14 941 H142 941:2H14 941 H151 941:1H15 941 H152 941:2H15 941 H71 941:1H7 941 H72 941:2H7 941 H391 941:1H39 941 H392 941:2H39 941 H393 941:3H39 941 H421 941:1H42 941 H422 941:2H42 941 H423 941:3H42 941 H431 941:1H43 941 H432 941:2H43 941 H433 941:3H43 941 H441 941:1H44 941 H442 941:2H44 941 H443 941:3H44 941 H61 944:1H6 944 H62 944:2H6 944 H21A 944:1H2 944 H22 944:2H2 944 H31 944:1H3 944 H32 944:2H3 944 H41 944:1H4 944 H42 944:2H4 944 H51 944:1H5 944 H52 944:2H5 944 H53 944:3H5 944 H121 944:1H12 944 H122 944:2H12 944 H131 944:1H13 944 H132 944:2H13 944 H141 944:1H14 944 H142 944:2H14 944 H151 944:1H15 944 H152 944:2H15 944 H161 944:1H16 944 H162 944:2H16 944 H291 944:1H29 944 H292 944:2H29 944 H281 944:1H28 944 H282 944:2H28 944 H271 944:1H27 944 H272 944:2H27 944 H221 944:1H22 944 H222 944:2H22 944 H261 944:1H26 944 H262 944:2H26 944 H263 944:3H26 944 H251 944:1H25 944 H252 944:2H25 944 H253 944:3H25 944 H141 95A:1H14 95A H142 95A:2H14 95A H481 95A:1H48 95A H482 95A:2H48 95A H483 95A:3H48 95A H471 95A:1H47 95A H472 95A:2H47 95A H491 95A:1H49 95A H492 95A:2H49 95A H493 95A:3H49 95A H381 95A:1H38 95A H382 95A:2H38 95A H391 95A:1H39 95A H392 95A:2H39 95A H401 95A:1H40 95A H402 95A:2H40 95A H403 95A:3H40 95A H201 95A:1H20 95A H202 95A:2H20 95A H231 95A:1H23 95A H232 95A:2H23 95A H141 961:1H14 961 H142 961:2H14 961 H151 961:1H15 961 H152 961:2H15 961 H181 961:1H18 961 H182 961:2H18 961 H183 961:3H18 961 H191 961:1H19 961 H192 961:2H19 961 H193 961:3H19 961 H201 961:1H20 961 H202 961:2H20 961 H203 961:3H20 961 H211 961:1H21 961 H212 961:2H21 961 H213 961:3H21 961 HO22 961:2HO2 961 HO27 961:7HO2 961 H11A 964:1H1 964 H12 964:2H1 964 H13A 964:3H1 964 H181 964:1H18 964 H182 964:2H18 964 H191 964:1H19 964 H192 964:2H19 964 H161 964:1H16 964 H162 964:2H16 964 H151 964:1H15 964 H152 964:2H15 964 H101 964:1H10 964 H102 964:2H10 964 H91 964:1H9 964 H92 964:2H9 964 H51 964:1H5 964 H52 964:2H5 964 H61 964:1H6 964 H62 964:2H6 964 H341 965:1H34 965 H342 965:2H34 965 H261 965:1H26 965 H262 965:2H26 965 H251 965:1H25 965 H252 965:2H25 965 H171 965:1H17 965 H172 965:2H17 965 H161 965:1H16 965 H162 965:2H16 965 H081 965:1H08 965 H082 965:2H08 965 H111 965:1H11 965 H112 965:2H11 965 H121 974:1H12 974 H122 974:2H12 974 H321 974:1H32 974 H322 974:2H32 974 H341 974:1H34 974 H342 974:2H34 974 H351 974:1H35 974 H352 974:2H35 974 H361 974:1H36 974 H362 974:2H36 974 H301 974:1H30 974 H302 974:2H30 974 H303 974:3H30 974 HN11 977:1HN1 977 HN12 977:2HN1 977 H121 979:1H12 979 H122 979:2H12 979 H131 979:1H13 979 H132 979:2H13 979 H21 979:1H2 979 H22 979:2H2 979 H111 979:1H11 979 H112 979:2H11 979 H161 982:1H16 982 H162 982:2H16 982 H471 983:1H47 983 H472 983:2H47 983 H351 983:1H35 983 H352 983:2H35 983 H331 983:1H33 983 H332 983:2H33 983 H301 983:1H30 983 H302 983:2H30 983 H303 983:3H30 983 H291 983:1H29 983 H292 983:2H29 983 H293 983:3H29 983 H151 983:1H15 983 H152 983:2H15 983 H91 983:1H9 983 H92 983:2H9 983 H101 983:1H10 983 H102 983:2H10 983 HC61 984:1HC6 984 HC62 984:2HC6 984 HC71 984:1HC7 984 HC72 984:2HC7 984 H101 984:1H10 984 H102 984:2H10 984 H103 984:3H10 984 H171 984:1H17 984 H172 984:2H17 984 H181 984:1H18 984 H182 984:2H18 984 H201 984:1H20 984 H202 984:2H20 984 H211 984:1H21 984 H212 984:2H21 984 H311 984:1H31 984 H312 984:2H31 984 H313 984:3H31 984 H561 984:1H56 984 H562 984:2H56 984 H571 984:1H57 984 H572 984:2H57 984 H361 989:1H36 989 H362 989:2H36 989 H621 989:1H62 989 H622 989:2H62 989 H623 989:3H62 989 H451 989:1H45 989 H452 989:2H45 989 H461 989:1H46 989 H462 989:2H46 989 H491 989:1H49 989 H492 989:2H49 989 H521 989:1H52 989 H522 989:2H52 989 H551 989:1H55 989 H552 989:2H55 989 H553 989:3H55 989 H351 993:1H35 993 H352 993:2H35 993 H353 993:3H35 993 H281 993:1H28 993 H282 993:2H28 993 H181 993:1H18 993 H182 993:2H18 993 H183 993:3H18 993 H181 994:1H18 994 H182 994:2H18 994 H183 994:3H18 994 H231 994:1H23 994 H232 994:2H23 994 H233 994:3H23 994 H281 994:1H28 994 H282 994:2H28 994 H283 994:3H28 994 H61 995:1H6 995 H62 995:2H6 995 H71 995:1H7 995 H72 995:2H7 995 H111 995:1H11 995 H112 995:2H11 995 H113 995:3H11 995 H121 995:1H12 995 H122 995:2H12 995 H123 995:3H12 995 H141 995:1H14 995 H142 995:2H14 995 H151 995:1H15 995 H152 995:2H15 995 H171 995:1H17 995 H172 995:2H17 995 H173 995:3H17 995 H181 995:1H18 995 H182 995:2H18 995 H183 995:3H18 995 H191 995:1H19 995 H192 995:2H19 995 HN51 995:1HN5 995 HN52 995:2HN5 995 HN61 995:1HN6 995 HN62 995:2HN6 995 HD21 9AD:1HD2 9AD HD22 9AD:2HD2 9AD HD31 9AD:1HD3 9AD HD32 9AD:2HD3 9AD HD71 9AD:1HD7 9AD HD72 9AD:2HD7 9AD HD73 9AD:3HD7 9AD HD81 9AD:1HD8 9AD HD82 9AD:2HD8 9AD HD83 9AD:3HD8 9AD H91 9AM:1H9 9AM H92 9AM:2H9 9AM H111 9AM:1H11 9AM H112 9AM:2H11 9AM H113 9AM:3H11 9AM HOB1 9AM:1HOB 9AM HN91 9AM:1HN9 9AM HN92 9AM:2HN9 9AM HN11 9AP:1HN1 9AP HN12 9AP:2HN1 9AP H21 9AR:1H2 9AR H91 9AR:1H9 9AR H111 9AR:1H11 9AR H121 9AR:1H12 9AR H151 9AR:1H15 9AR H152 9AR:2H15 9AR H171 9AR:1H17 9AR H172 9AR:2H17 9AR H173 9AR:3H17 9AR H51 9AR:1H5 9AR H61 9AR:1H6 9AR H61 9CS:1H6 9CS H62 9CS:2H6 9CS H121 9CS:1H12 9CS H122 9CS:2H12 9CS H181 9CS:1H18 9CS H182 9CS:2H18 9CS HN11 9CS:1HN1 9CS HN12 9CS:2HN1 9CS HN21 9CS:1HN2 9CS HN22 9CS:2HN2 9CS HN31 9CS:1HN3 9CS HN32 9CS:2HN3 9CS HN41 9CS:1HN4 9CS HN42 9CS:2HN4 9CS HN61 9CS:1HN6 9CS HN62 9CS:2HN6 9CS HN61 9DA:1HN6 9DA HN62 9DA:2HN6 9DA HN21 9DG:1HN2 9DG HN22 9DG:2HN2 9DG H5'1 9DI:1H5' 9DI H5'2 9DI:2H5' 9DI HO5' 9DI:'HO5 9DI HO2' 9DI:'HO2 9DI HO3' 9DI:'HO3 9DI H91 9IN:1H9 9IN H92 9IN:2H9 9IN H93 9IN:3H9 9IN H101 9IN:1H10 9IN H102 9IN:2H10 9IN H103 9IN:3H10 9IN H131 9IN:1H13 9IN H132 9IN:2H13 9IN H133 9IN:3H13 9IN H141 9IN:1H14 9IN H142 9IN:2H14 9IN H143 9IN:3H14 9IN H171 9IN:1H17 9IN H172 9IN:2H17 9IN H191 9IN:1H19 9IN H192 9IN:2H19 9IN H193 9IN:3H19 9IN H201 9IN:1H20 9IN H202 9IN:2H20 9IN H203 9IN:3H20 9IN H281 9IN:1H28 9IN H282 9IN:2H28 9IN H301 9IN:1H30 9IN H302 9IN:2H30 9IN H311 9IN:1H31 9IN H312 9IN:2H31 9IN H261 9IN:1H26 9IN H262 9IN:2H26 9IN H271 9IN:1H27 9IN H272 9IN:2H27 9IN H273 9IN:3H27 9IN H11A 9IP:1H1 9IP H12A 9IP:2H1 9IP H13 9IP:3H1 9IP H141 9IP:1H14 9IP H142 9IP:2H14 9IP H221 9IP:1H22 9IP H222 9IP:2H22 9IP H11 9MG:1H1 9MG H12 9MG:2H1 9MG H13 9MG:3H1 9MG H101 9MG:1H10 9MG H102 9MG:2H10 9MG H6B1 9MR:1H6B 9MR H6B2 9MR:2H6B 9MR H5M1 9MR:1H5M 9MR H5M2 9MR:2H5M 9MR H1A1 9MR:1H1A 9MR H1A2 9MR:2H1A 9MR H6A1 9MR:1H6A 9MR H6A2 9MR:2H6A 9MR H21 9OH:1H2 9OH H22 9OH:2H2 9OH H31 9OH:1H3 9OH H32 9OH:2H3 9OH H41 9OH:1H4 9OH H42 9OH:2H4 9OH H51 9OH:1H5 9OH H52 9OH:2H5 9OH H61 9OH:1H6 9OH H62 9OH:2H6 9OH H71 9OH:1H7 9OH H72 9OH:2H7 9OH H81 9OH:1H8 9OH H82 9OH:2H8 9OH H91 9OH:1H9 9OH H101 9OH:1H10 9OH H111 9OH:1H11 9OH H121 9OH:1H12 9OH H131 9OH:1H13 9OH H141 9OH:1H14 9OH H142 9OH:2H14 9OH H151 9OH:1H15 9OH H152 9OH:2H15 9OH H161 9OH:1H16 9OH H162 9OH:2H16 9OH H171 9OH:1H17 9OH H172 9OH:2H17 9OH H181 9OH:1H18 9OH H182 9OH:2H18 9OH H183 9OH:3H18 9OH H201 9OH:1H20 9OH H211 9OH:1H21 9OH H81 9PP:1H8 9PP HN61 9PP:1HN6 9PP HN62 9PP:2HN6 9PP HN21 9PP:1HN2 9PP HN22 9PP:2HN2 9PP H101 9PP:1H10 9PP H102 9PP:2H10 9PP H111 9PP:1H11 9PP H121 9PP:1H12 9PP H122 9PP:2H12 9PP H123 9PP:3H12 9PP H141 9PP:1H14 9PP H142 9PP:2H14 9PP HOP3 A:3HOP A HOP2 A:2HOP A H5' A:1H5* A H5'' A:2H5* A H4' A: H4* A H3' A: H3* A HO3' A:H3T A H2' A: H2* A HO2' A:2HO* A H1' A: H1* A H61 A:1H6 A H62 A:2H6 A H191 A10:1H19 A10 H192 A10:2H19 A10 H141 A10:1H14 A10 H142 A10:2H14 A10 H131 A10:1H13 A10 H132 A10:2H13 A10 H121 A10:1H12 A10 H122 A10:2H12 A10 H71 A10:1H7 A10 H72 A10:2H7 A10 H73 A10:3H7 A10 H101 A11:1H10 A11 H102 A11:2H10 A11 H111 A11:1H11 A11 H112 A11:2H11 A11 H131 A11:1H13 A11 H132 A11:2H13 A11 H141 A11:1H14 A11 H142 A11:2H14 A11 H181 A11:1H18 A11 H182 A11:2H18 A11 H191 A11:1H19 A11 H192 A11:2H19 A11 H193 A11:3H19 A11 HOB2 A12:2HOB A12 HOA2 A12:2HOA A12 H3A1 A12:1H3A A12 H3A2 A12:2H3A A12 H5'1 A12:1H5* A12 H5'2 A12:2H5* A12 H4' A12: H4* A12 H3' A12: H3* A12 HO3' A12:*HO3 A12 H2' A12: H2* A12 HO2' A12:*HO2 A12 H1' A12: H1* A12 HN61 A12:1HN6 A12 HN62 A12:2HN6 A12 HN71 A13:1HN7 A13 HN72 A13:2HN7 A13 H81 A13:1H8 A13 H82 A13:2H8 A13 H83 A13:3H8 A13 H3C1 A14:1H3C A14 H3C2 A14:2H3C A14 H141 A14:1H14 A14 H142 A14:2H14 A14 H4C1 A14:1H4C A14 H4C2 A14:2H4C A14 H7C1 A14:1H7C A14 H7C2 A14:2H7C A14 H331 A14:1H33 A14 H332 A14:2H33 A14 H333 A14:3H33 A14 H371 A14:1H37 A14 H372 A14:2H37 A14 H373 A14:3H37 A14 HAL1 A18:1HAL A18 HAL2 A18:2HAL A18 H321 A1A:1H32 A1A H322 A1A:2H32 A1A H7C1 A1A:1H7C A1A H7C2 A1A:2H7C A1A H7C3 A1A:3H7C A1A H4C1 A1A:1H4C A1A H4C2 A1A:2H4C A1A H221 A1A:1H22 A1A H222 A1A:2H22 A1A H581 A1A:1H58 A1A H582 A1A:2H58 A1A H431 A1A:1H43 A1A H432 A1A:2H43 A1A H433 A1A:3H43 A1A H441 A1A:1H44 A1A H442 A1A:2H44 A1A H443 A1A:3H44 A1A H11 A1E:1H1 A1E H12A A1E:2H1 A1E H21 A1E:1H2 A1E H22 A1E:2H2 A1E H61 A1E:1H6 A1E H62 A1E:2H6 A1E H131 A1E:1H13 A1E H132 A1E:2H13 A1E H141 A1E:1H14 A1E H142 A1E:2H14 A1E H151 A1E:1H15 A1E H152 A1E:2H15 A1E H161 A1E:1H16 A1E H162 A1E:2H16 A1E H171 A1E:1H17 A1E H172 A1E:2H17 A1E H181 A1E:1H18 A1E H182 A1E:2H18 A1E H191 A1E:1H19 A1E H192 A1E:2H19 A1E H201 A1E:1H20 A1E H202 A1E:2H20 A1E H211 A1E:1H21 A1E H212 A1E:2H21 A1E H221 A1E:1H22 A1E H222 A1E:2H22 A1E H341 A1E:1H34 A1E H342 A1E:2H34 A1E H351 A1E:1H35 A1E H352 A1E:2H35 A1E H361 A1E:1H36 A1E H362 A1E:2H36 A1E H371 A1E:1H37 A1E H372 A1E:2H37 A1E H2N1 A1P:1H2N A1P H2N2 A1P:2H2N A1P H2'1 A1P:1H2* A1P H2'2 A1P:2H2* A1P H5'1 A1P:1H5* A1P H5'2 A1P:2H5* A1P H4' A1P: H4* A1P H1' A1P: H1* A1P H3' A1P: H3* A1P HN61 A1R:1HN6 A1R HN62 A1R:2HN6 A1R H1' A1R: H1* A1R H2' A1R: H2* A1R HO2' A1R:HO2* A1R H3' A1R: H3* A1R HO3' A1R:HO3* A1R H4' A1R: H4* A1R H5'1 A1R:1H5* A1R H5'2 A1R:2H5* A1R H5N1 A1R:1H5N A1R H5N2 A1R:2H5N A1R H1N1 A1R:1H1N A1R H1N2 A1R:2H1N A1R H381 A1T:1H38 A1T H382 A1T:2H38 A1T H401 A1T:1H40 A1T H402 A1T:2H40 A1T H431 A1T:1H43 A1T H432 A1T:2H43 A1T H461 A1T:1H46 A1T H462 A1T:2H46 A1T H481 A1T:1H48 A1T H482 A1T:2H48 A1T H483 A1T:3H48 A1T H281 A1T:1H28 A1T H282 A1T:2H28 A1T H321 A1T:1H32 A1T H322 A1T:2H32 A1T H371 A1T:1H37 A1T H372 A1T:2H37 A1T H311 A1T:1H31 A1T H312 A1T:2H31 A1T H271 A1T:1H27 A1T H272 A1T:2H27 A1T H211 A1T:1H21 A1T H212 A1T:2H21 A1T H61 A1T:1H6 A1T H62 A1T:2H6 A1T H101 A1T:1H10 A1T H102 A1T:2H10 A1T H131 A1T:1H13 A1T H132 A1T:2H13 A1T H91 A1T:1H9 A1T H92 A1T:2H9 A1T H51 A1T:1H5 A1T H52 A1T:2H5 A1T HD1 A22:1H*A A22 HD2 A22:2H*A A22 H4D A22:H4*A A22 H2D A22:H2*A A22 H1D A22:H1*A A22 H6A1 A22:1H6A A22 H6A2 A22:2H6A A22 HE1 A22:1H*B A22 HE2 A22:2H*B A22 H4E A22:H4*B A22 H1E A22:H1*B A22 H6B1 A22:1H6B A22 H6B2 A22:2H6B A22 HOC2 A23:2HOC A23 HOP2 A23:2HOP A23 HOP3 A23:3HOP A23 H5' A23:1H5* A23 H5'' A23:2H5* A23 H4' A23: H4* A23 H3' A23: H3* A23 H2' A23: H2* A23 H1' A23: H1* A23 HN61 A23:1HN6 A23 HN62 A23:2HN6 A23 H11 A24:1H1 A24 H21 A24:1H2 A24 HO21 A24:1HO2 A24 H31 A24:1H3 A24 HO31 A24:1HO3 A24 H41 A24:1H4 A24 HO41 A24:1HO4 A24 H51 A24:1H5 A24 H61 A24:1H6 A24 H62 A24:2H6 A24 HO1 A24:1HO A24 H2'1 A24:1H2' A24 H4'1 A24:1H4' A24 H6'1 A24:1H6' A24 HN21 A24:1HN2 A24 H2A1 A24:1H2* A24 H2'2 A24:2H2* A24 H3'1 A24:1H3* A24 H3'2 A24:2H3* A24 H5'1 A24:1H5* A24 H5'2 A24:2H5* A24 H6A1 A24:1H6* A24 H6'2 A24:2H6* A24 H7'1 A24:1H7* A24 H7'2 A24:2H7* A24 H8'1 A24:1H8* A24 H8'2 A24:2H8* A24 H211 A25:1H21 A25 H212 A25:2H21 A25 H221 A25:1H22 A25 H222 A25:2H22 A25 H241 A25:1H24 A25 H242 A25:2H24 A25 H231 A25:1H23 A25 H232 A25:2H23 A25 H91 A25:1H9 A25 H92 A25:2H9 A25 H11 A26:1H1 A26 H21 A26:1H2 A26 H41 A26:1H4 A26 H51 A26:1H5 A26 HN11 A26:1HN1 A26 H211 A26:1H21 A26 H212 A26:2H21 A26 H213 A26:3H21 A26 H11 A2A:1H1 A2A H12A A2A:2H1 A2A H21 A2A:1H2 A2A H22 A2A:2H2 A2A H31 A2A:1H3 A2A H32 A2A:2H3 A2A H51 A2A:1H5 A2A H52 A2A:2H5 A2A H111 A2A:1H11 A2A H112 A2A:2H11 A2A H113 A2A:3H11 A2A H311 A2A:1H31 A2A H312 A2A:2H31 A2A H313 A2A:3H31 A2A HN11 A2A:1HN1 A2A HN12 A2A:2HN1 A2A HD1 A2D:1H*A A2D HD2 A2D:2H*A A2D H4D A2D:H4*A A2D H1D A2D:H1*A A2D H6A1 A2D:1H6A A2D H6A2 A2D:2H6A A2D HE1 A2D:1H*B A2D HE2 A2D:2H*B A2D H4E A2D:H4*B A2D H1E A2D:H1*B A2D H6B1 A2D:1H6B A2D H6B2 A2D:2H6B A2D H61 A2E:1H6 A2E H62 A2E:2H6 A2E H21 A2E:1H2 A2E H22 A2E:2H2 A2E H11 A2E:1H1 A2E H12A A2E:2H1 A2E H131 A2E:1H13 A2E H132 A2E:2H13 A2E H141 A2E:1H14 A2E H142 A2E:2H14 A2E H151 A2E:1H15 A2E H152 A2E:2H15 A2E H161 A2E:1H16 A2E H162 A2E:2H16 A2E H171 A2E:1H17 A2E H172 A2E:2H17 A2E H181 A2E:1H18 A2E H182 A2E:2H18 A2E H191 A2E:1H19 A2E H192 A2E:2H19 A2E H201 A2E:1H20 A2E H202 A2E:2H20 A2E H211 A2E:1H21 A2E H212 A2E:2H21 A2E H221 A2E:1H22 A2E H222 A2E:2H22 A2E H301 A2E:1H30 A2E H302 A2E:2H30 A2E H331 A2E:1H33 A2E H332 A2E:2H33 A2E H321 A2E:1H32 A2E H322 A2E:2H32 A2E H311 A2E:1H31 A2E H312 A2E:2H31 A2E H61 A2G:1H6 A2G H62 A2G:2H6 A2G H81 A2G:1H8 A2G H82 A2G:2H8 A2G H83 A2G:3H8 A2G HO2' A2L:2HO* A2L H2' A2L: H2* A2L H1' A2L: H1* A2L H4' A2L: H4* A2L H5' A2L:1H5* A2L H5'' A2L:2H5* A2L HOP3 A2L:3HOP A2L HOP2 A2L:2HOP A2L H3' A2L: H3* A2L HA'1 A2L:1HA* A2L HA'2 A2L:2HA* A2L HB'1 A2L:1HB* A2L HB'2 A2L:2HB* A2L HD'1 A2L:1HD* A2L HD'2 A2L:2HD* A2L HD'3 A2L:3HD* A2L H61 A2L:1H6 A2L H62 A2L:2H6 A2L HOP3 A2M:3HOP A2M HOP2 A2M:2HOP A2M H5' A2M:1H5* A2M H5'' A2M:2H5* A2M H4' A2M: H4* A2M H3' A2M: H3* A2M HO3' A2M:H3T A2M H2' A2M: H2* A2M H1' A2M: H1* A2M HM'1 A2M:1HM* A2M HM'2 A2M:2HM* A2M HM'3 A2M:3HM* A2M H61 A2M:1H6 A2M H62 A2M:2H6 A2M HOP2 A2P:2HOP A2P HOP3 A2P:3HOP A2P HOP5 A2P:5HOP A2P HOP6 A2P:6HOP A2P H5'1 A2P:1H5* A2P H5'2 A2P:2H5* A2P H4' A2P: H4* A2P H3' A2P: H3* A2P HO3' A2P:*HO3 A2P H2' A2P: H2* A2P H1' A2P: H1* A2P HN61 A2P:1HN6 A2P HN62 A2P:2HN6 A2P H2' A2R: H2* A2R H1' A2R: H1* A2R HN61 A2R:1HN6 A2R HN62 A2R:2HN6 A2R H3' A2R: H3* A2R HO3' A2R:HO3* A2R H4' A2R: H4* A2R H5'1 A2R:1H5* A2R H5'2 A2R:2H5* A2R H5'3 A2R:3H5* A2R H5'4 A2R:4H5* A2R H14' A2R:H14* A2R H13' A2R:H13* A2R H16' A2R:H16* A2R H12' A2R:H12* A2R H15' A2R:H15* A2R H11' A2R:H11* A2R H17' A2R:H17* A2R HOP3 A2S:3HOP A2S HOP2 A2S:2HOP A2S H5' A2S:1H5* A2S H5'' A2S:2H5* A2S H4' A2S: H4* A2S H3' A2S: H3* A2S HO3' A2S:H3T A2S H2' A2S: H2* A2S HO2' A2S:2HO* A2S H1' A2S: H1* A2S H61 A2S:1H6 A2S H62 A2S:2H6 A2S H351 A2T:1H35 A2T H352 A2T:2H35 A2T H371 A2T:1H37 A2T H372 A2T:2H37 A2T H391 A2T:1H39 A2T H392 A2T:2H39 A2T H421 A2T:1H42 A2T H422 A2T:2H42 A2T H431 A2T:1H43 A2T H432 A2T:2H43 A2T H433 A2T:3H43 A2T H251 A2T:1H25 A2T H252 A2T:2H25 A2T H291 A2T:1H29 A2T H292 A2T:2H29 A2T H341 A2T:1H34 A2T H342 A2T:2H34 A2T H361 A2T:1H36 A2T H362 A2T:2H36 A2T H411 A2T:1H41 A2T H412 A2T:2H41 A2T H413 A2T:3H41 A2T H401 A2T:1H40 A2T H402 A2T:2H40 A2T H403 A2T:3H40 A2T H281 A2T:1H28 A2T H282 A2T:2H28 A2T H241 A2T:1H24 A2T H242 A2T:2H24 A2T H181 A2T:1H18 A2T H182 A2T:2H18 A2T H451 A2T:1H45 A2T H452 A2T:2H45 A2T H453 A2T:3H45 A2T H11 A32:1H1 A32 H21 A32:1H2 A32 HO21 A32:1HO2 A32 H31 A32:1H3 A32 HO31 A32:1HO3 A32 H41 A32:1H4 A32 HO41 A32:1HO4 A32 H51 A32:1H5 A32 H61 A32:1H6 A32 H62 A32:2H6 A32 HO1 A32:1HO A32 H2'1 A32:1H2' A32 H4'1 A32:1H4' A32 H6'1 A32:1H6' A32 HN21 A32:1HN2 A32 H2A1 A32:1H2* A32 H2'2 A32:2H2* A32 H3'1 A32:1H3* A32 H3'2 A32:2H3* A32 H5'1 A32:1H5* A32 H5'2 A32:2H5* A32 H6A1 A32:1H6* A32 H6'2 A32:2H6* A32 H7'1 A32:1H7* A32 H7'2 A32:2H7* A32 H8'1 A32:1H8* A32 H8'2 A32:2H8* A32 H9'1 A32:1H9* A32 H9'2 A32:2H9* A32 H111 A34:1H11 A34 H112 A34:2H11 A34 H113 A34:3H11 A34 H2'1 A34:1H2* A34 H2'2 A34:2H2* A34 H5'1 A34:1H5* A34 H5'2 A34:2H5* A34 H4' A34: H4* A34 H1' A34: H1* A34 H3' A34: H3* A34 H6N1 A35:1H6N A35 H6N2 A35:2H6N A35 H5'1 A35:1H5* A35 H5'2 A35:2H5* A35 H4' A35: H4* A35 H1' A35: H1* A35 H2'1 A35:1H2* A35 H2'2 A35:2H2* A35 H3' A35: H3* A35 HH21 A35:1HH2 A35 HH22 A35:2HH2 A35 HH23 A35:3HH2 A35 H5'1 A38:1H5* A38 H5'2 A38:2H5* A38 H4' A38: H4* A38 H3' A38: H3* A38 H2'1 A38:1H2* A38 H2'2 A38:2H2* A38 H1' A38: H1* A38 H6N1 A38:1H6N A38 H6N2 A38:2H6N A38 H5'1 A39:1H5* A39 H5'2 A39:2H5* A39 H4' A39: H4* A39 H3' A39: H3* A39 H2' A39: H2* A39 H1' A39: H1* A39 H6N1 A39:1H6N A39 H6N2 A39:2H6N A39 HH31 A39:1HH3 A39 HH32 A39:2HH3 A39 HH33 A39:3HH3 A39 HN61 A3A:1HN6 A3A HN62 A3A:2HN6 A3A H5' A3A:1H5* A3A H5'' A3A:2H5* A3A H4' A3A: H4* A3A H3' A3A: H3* A3A H2' A3A:1H2* A3A H2'' A3A:2H2* A3A H1' A3A: H1* A3A HAA1 A3B:1HAA A3B HAA2 A3B:2HAA A3B HAB1 A3B:1HAB A3B HAB2 A3B:2HAB A3B HAB3 A3B:3HAB A3B HOA2 A3D:2HOA A3D H51A A3D:AH51 A3D H52A A3D:AH52 A3D H4B A3D:AH4* A3D H3B A3D:AH3* A3D HO3A A3D:AHO3 A3D H2B A3D:AH2* A3D HO2A A3D:AHO2 A3D H1B A3D:AH1* A3D H8A A3D: AH8 A3D H61A A3D:AH61 A3D H62A A3D:AH62 A3D H2A A3D: AH2 A3D H51N A3D:NH51 A3D H52N A3D:NH52 A3D H4D A3D:NH4* A3D H3D A3D:NH3* A3D HO3N A3D:NHO3 A3D H2D A3D:NH2* A3D HO2N A3D:NHO2 A3D H1D A3D:NH1* A3D H2N A3D: NH2 A3D H81N A3D:NH81 A3D H82N A3D:NH82 A3D H83N A3D:NH83 A3D H4N A3D: NH4 A3D H5N A3D: NH5 A3D H6N A3D: NH6 A3D HC11 A3M:1HC1 A3M HC12 A3M:2HC1 A3M HC21 A3M:1HC2 A3M HC22 A3M:2HC2 A3M HC41 A3M:1HC4 A3M HC42 A3M:2HC4 A3M HC51 A3M:1HC5 A3M HC52 A3M:2HC5 A3M H171 A3M:1H17 A3M H172 A3M:2H17 A3M H173 A3M:3H17 A3M H191 A3M:1H19 A3M H192 A3M:2H19 A3M H261 A3M:1H26 A3M H262 A3M:2H26 A3M H263 A3M:3H26 A3M HOP2 A3P:2HOP A3P HOP3 A3P:3HOP A3P HOP5 A3P:5HOP A3P HOP6 A3P:6HOP A3P H5'1 A3P:1H5* A3P H5'2 A3P:2H5* A3P H4' A3P: H4* A3P H3' A3P: H3* A3P H2' A3P: H2* A3P HO2' A3P:*HO2 A3P H1' A3P: H1* A3P HN61 A3P:1HN6 A3P HN62 A3P:2HN6 A3P H5'1 A3S:1H5' A3S H5'2 A3S:2H5' A3S HN61 A3S:1HN6 A3S HN62 A3S:2HN6 A3S HN1 A3S:1HN A3S HN2 A3S:2HN A3S HB1 A3S:1HB A3S HB2 A3S:2HB A3S H6N1 A40:1H6N A40 H6N2 A40:2H6N A40 H5'1 A40:1H5* A40 H5'2 A40:2H5* A40 H4' A40: H4* A40 H1' A40: H1* A40 H2'1 A40:1H2* A40 H2'2 A40:2H2* A40 H3' A40: H3* A40 HH21 A40:1HH2 A40 HH22 A40:2HH2 A40 HH23 A40:3HH2 A40 H201 A41:1H20 A41 H202 A41:2H20 A41 H203 A41:3H20 A41 H201 A42:1H20 A42 H202 A42:2H20 A42 H203 A42:3H20 A42 H221 A42:1H22 A42 H222 A42:2H22 A42 H223 A42:3H22 A42 H5'1 A43:1H5* A43 H5'2 A43:2H5* A43 H4' A43: H4* A43 H3' A43: H3* A43 H2'1 A43:1H2* A43 H2'2 A43:2H2* A43 H1' A43: H1* A43 H6N1 A43:1H6N A43 H6N2 A43:2H6N A43 HN1 A43:1HN A43 HN2 A43:2HN A43 H5'1 A44:1H5* A44 H5'2 A44:2H5* A44 H4' A44: H4* A44 H3' A44: H3* A44 H2' A44: H2* A44 H1' A44: H1* A44 H6N1 A44:1H6N A44 H6N2 A44:2H6N A44 HA'1 A44:1HA* A44 HA'2 A44:2HA* A44 H131 A44:1H13 A44 H132 A44:2H13 A44 H133 A44:3H13 A44 H151 A44:1H15 A44 H152 A44:2H15 A44 HN11 A45:1HN1 A45 HN12 A45:2HN1 A45 H5'1 A47:1H5* A47 H5'2 A47:2H5* A47 H4' A47: H4* A47 H3' A47: H3* A47 H2'1 A47:1H2* A47 H2'2 A47:2H2* A47 H1' A47: H1* A47 H1C1 A47:1H1C A47 H1C2 A47:2H1C A47 H1C3 A47:3H1C A47 HAD1 A48:1HAD A48 HAD2 A48:2HAD A48 HAD3 A48:3HAD A48 HAC1 A48:1HAC A48 HAC2 A48:2HAC A48 HAC3 A48:3HAC A48 HAJ1 A48:1HAJ A48 HAJ2 A48:2HAJ A48 HAJ3 A48:3HAJ A48 HAW1 A48:1HAW A48 HAW2 A48:2HAW A48 HAG1 A48:1HAG A48 HAG2 A48:2HAG A48 HAG3 A48:3HAG A48 HAS1 A48:1HAS A48 HAS2 A48:2HAS A48 HAS3 A48:3HAS A48 HBB1 A48:1HBB A48 HBB2 A48:2HBB A48 HBB3 A48:3HBB A48 HD21 A4C:1HD2 A4C HD22 A4C:2HD2 A4C HD31 A4C:1HD3 A4C HD32 A4C:2HD3 A4C HD81 A4C:1HD8 A4C HD82 A4C:2HD8 A4C HD83 A4C:3HD8 A4C HD71 A4C:1HD7 A4C HD72 A4C:2HD7 A4C HD73 A4C:3HD7 A4C HX11 A4C:1HX1 A4C HX12 A4C:2HX1 A4C HX21 A4C:1HX2 A4C HX22 A4C:2HX2 A4C HX31 A4C:1HX3 A4C HX32 A4C:2HX3 A4C HD51 A4C:1HD5 A4C HD52 A4C:2HD5 A4C HD61 A4C:1HD6 A4C HD62 A4C:2HD6 A4C HD01 A4C:1HD0 A4C HD02 A4C:2HD0 A4C HD03 A4C:3HD0 A4C HD91 A4C:1HD9 A4C HD92 A4C:2HD9 A4C HD93 A4C:3HD9 A4C HX41 A4C:1HX4 A4C HX42 A4C:2HX4 A4C HX51 A4C:1HX5 A4C HX52 A4C:2HX5 A4C HX61 A4C:1HX6 A4C HX62 A4C:2HX6 A4C H281 A4L:1H28 A4L H282 A4L:2H28 A4L H283 A4L:3H28 A4L H221 A4L:1H22 A4L H222 A4L:2H22 A4L H211 A4L:1H21 A4L H212 A4L:2H21 A4L H201 A4L:1H20 A4L H202 A4L:2H20 A4L H191 A4L:1H19 A4L H192 A4L:2H19 A4L H171 A4L:1H17 A4L H172 A4L:2H17 A4L H173 A4L:3H17 A4L HN11 A4L:1HN1 A4L HN12 A4L:2HN1 A4L H71 A4L:1H7 A4L H72 A4L:2H7 A4L H151 A4L:1H15 A4L H152 A4L:2H15 A4L H161 A4L:1H16 A4L H162 A4L:2H16 A4L H181 A4L:1H18 A4L H182 A4L:2H18 A4L H341 A4L:1H34 A4L H342 A4L:2H34 A4L H351 A4L:1H35 A4L H352 A4L:2H35 A4L H361 A4L:1H36 A4L H362 A4L:2H36 A4L H371 A4L:1H37 A4L H372 A4L:2H37 A4L HN61 A4L:1HN6 A4L HN62 A4L:2HN6 A4L H381 A4L:1H38 A4L H382 A4L:2H38 A4L H391 A4L:1H39 A4L H392 A4L:2H39 A4L H401 A4L:1H40 A4L H402 A4L:2H40 A4L H411 A4L:1H41 A4L H412 A4L:2H41 A4L HN81 A4L:1HN8 A4L HN82 A4L:2HN8 A4L H421 A4L:1H42 A4L H422 A4L:2H42 A4L H431 A4L:1H43 A4L H432 A4L:2H43 A4L H441 A4L:1H44 A4L H442 A4L:2H44 A4L H451 A4L:1H45 A4L H452 A4L:2H45 A4L HN91 A4L:1HN9 A4L HN92 A4L:2HN9 A4L H6R1 A4P:1H6R A4P H6R2 A4P:2H6R A4P H5'1 A4P:1H5* A4P H5'2 A4P:2H5* A4P H4' A4P: H4* A4P H3' A4P: H3* A4P HO'3 A4P:3HO* A4P H2' A4P: H2* A4P HO'2 A4P:2HO* A4P HOA1 A4P:1HOA A4P HOB1 A4P:1HOB A4P HOG1 A4P:1HOG A4P HOD1 A4P:1HOD A4P HN21 A4P:1HN2 A4P HN22 A4P:2HN2 A4P H6A1 A4P:1H6A A4P H6A2 A4P:2H6A A4P H71 A4P:1H7 A4P H72 A4P:2H7 A4P H241 A53:1H24 A53 H242 A53:2H24 A53 H261 A53:1H26 A53 H262 A53:2H26 A53 H271 A53:1H27 A53 H272 A53:2H27 A53 H111 A55:1H11 A55 H112 A55:2H11 A55 H161 A55:1H16 A55 H162 A55:2H16 A55 H171 A55:1H17 A55 H172 A55:2H17 A55 H181 A56:1H18 A56 H182 A56:2H18 A56 H191 A56:1H19 A56 H192 A56:2H19 A56 H11A A58:1H1 A58 H12 A58:2H1 A58 H13 A58:3H1 A58 H61 A58:1H6 A58 H62 A58:2H6 A58 H71 A58:1H7 A58 H72 A58:2H7 A58 H31 A58:1H3 A58 H32 A58:2H3 A58 H41 A58:1H4 A58 H42 A58:2H4 A58 H91 A58:1H9 A58 H92 A58:2H9 A58 H161 A58:1H16 A58 H162 A58:2H16 A58 HB1 A5A:1HB A5A HB2 A5A:2HB A5A HB3 A5A:3HB A5A H5'1 A5A:1H5* A5A H5'2 A5A:2H5* A5A H4' A5A: H4* A5A H3' A5A: H3* A5A H2' A5A: H2* A5A HO'2 A5A:2HO* A5A H1' A5A: H1* A5A H61 A5A:1H6 A5A H62 A5A:2H6 A5A HOP2 A5M:2HOP A5M H5' A5M:1H5* A5M H5'' A5M:2H5* A5M H4' A5M: H4* A5M H1' A5M: H1* A5M H41 A5M:1H4 A5M H42 A5M:2H4 A5M H2' A5M: H2* A5M H'1N A5M:1NH* A5M H'2N A5M:2NH* A5M H3' A5M: H3* A5M HO3' A5M:H3T A5M HOP3 A5M:3HOP A5M HOP2 A5P:2HOP A5P HOP3 A5P:3HOP A5P H8'1 A66:1H8' A66 H8'2 A66:2H8' A66 H5'1 A66:1H5' A66 H3'1 A66:1H3' A66 H3'2 A66:2H3' A66 H2'1 A66:1H2' A66 H2'2 A66:2H2' A66 H1'1 A66:1H1' A66 H1'2 A66:2H1' A66 HN61 A66:1HN6 A66 HN62 A66:2HN6 A66 HB1 A66:1HB A66 HB2 A66:2HB A66 HG1 A66:1HG A66 HG2 A66:2HG A66 HD1 A66:1HD A66 HD2 A66:2HD A66 HE1 A66:1HE A66 HE2 A66:2HE A66 HZ1 A66:1HZ A66 HZ2 A66:2HZ A66 H11 A70:1H1 A70 H12 A70:2H1 A70 H13A A70:3H1 A70 H21 A70:1H2 A70 H22 A70:2H2 A70 H31 A70:1H3 A70 H32A A70:2H3 A70 H71 A70:1H7 A70 H72 A70:2H7 A70 H91 A70:1H9 A70 H92 A70:2H9 A70 H101 A70:1H10 A70 H102 A70:2H10 A70 H111 A70:1H11 A70 H112 A70:2H11 A70 H121 A70:1H12 A70 H122 A70:2H12 A70 H123 A70:3H12 A70 H141 A70:1H14 A70 H142 A70:2H14 A70 H143 A70:3H14 A70 H151 A70:1H15 A70 H152 A70:2H15 A70 H161 A70:1H16 A70 H162 A70:2H16 A70 H163 A70:3H16 A70 H191 A70:1H19 A70 H192 A70:2H19 A70 H211 A70:1H21 A70 H212 A70:2H21 A70 H221 A70:1H22 A70 H222 A70:2H22 A70 H311 A70:1H31 A70 H312 A70:2H31 A70 H341 A70:1H34 A70 H342 A70:2H34 A70 H181 A70:1H18 A70 H182 A70:2H18 A70 H231 A70:1H23 A70 H232 A70:2H23 A70 H251 A70:1H25 A70 H252 A70:2H25 A70 H253 A70:3H25 A70 H261 A70:1H26 A70 H262 A70:2H26 A70 H281 A70:1H28 A70 H282 A70:2H28 A70 H291 A70:1H29 A70 H292 A70:2H29 A70 H51 A70:1H5 A70 H52 A70:2H5 A70 H61 A70:1H6 A70 H62 A70:2H6 A70 H41A A70:1H4 A70 H42 A70:2H4 A70 HN11 A71:1HN1 A71 HN12 A71:2HN1 A71 H21 A71:1H2 A71 H22 A71:2H2 A71 H31 A71:1H3 A71 H32 A71:2H3 A71 H41 A71:1H4 A71 H42 A71:2H4 A71 H51 A71:1H5 A71 H52 A71:2H5 A71 H61 A71:1H6 A71 H62 A71:2H6 A71 H71 A71:1H7 A71 H72 A71:2H7 A71 HN81 A71:1HN8 A71 HN82 A71:2HN8 A71 HN91 A71:1HN9 A71 HN92 A71:2HN9 A71 HN93 A71:3HN9 A71 H101 A71:1H10 A71 H102 A71:2H10 A71 H103 A71:3H10 A71 H111 A71:1H11 A71 H112 A71:2H11 A71 H113 A71:3H11 A71 H121 A72:1H12 A72 H122 A72:2H12 A72 H123 A72:3H12 A72 H131 A72:1H13 A72 H132 A72:2H13 A72 H141 A72:1H14 A72 H142 A72:2H14 A72 H151 A72:1H15 A72 H152 A72:2H15 A72 H161 A72:1H16 A72 H162 A72:2H16 A72 H171 A72:1H17 A72 H172 A72:2H17 A72 H181 A72:1H18 A72 H182 A72:2H18 A72 H191 A72:1H19 A72 H192 A72:2H19 A72 H193 A72:3H19 A72 H201 A72:1H20 A72 H202 A72:2H20 A72 H203 A72:3H20 A72 H211 A72:1H21 A72 H212 A72:2H21 A72 H221 A72:1H22 A72 H222 A72:2H22 A72 H231 A72:1H23 A72 H232 A72:2H23 A72 H241 A72:1H24 A72 H242 A72:2H24 A72 H251 A72:1H25 A72 H252 A72:2H25 A72 H261 A72:1H26 A72 H262 A72:2H26 A72 H271 A72:1H27 A72 H272 A72:2H27 A72 H273 A72:3H27 A72 H131 A74:1H13 A74 H132 A74:2H13 A74 H133 A74:3H13 A74 H191 A74:1H19 A74 H192 A74:2H19 A74 H193 A74:3H19 A74 H11 A75:1H1 A75 H12A A75:2H1 A75 H21A A75:1H2 A75 H22A A75:2H2 A75 H51 A75:1H5 A75 H52 A75:2H5 A75 H61 A75:1H6 A75 H62 A75:2H6 A75 H201 A80:1H20 A80 H202 A80:2H20 A80 H203 A80:3H20 A80 H211 A80:1H21 A80 H212 A80:2H21 A80 H213 A80:3H21 A80 H221 A80:1H22 A80 H222 A80:2H22 A80 H223 A80:3H22 A80 H231 A80:1H23 A80 H232 A80:2H23 A80 H233 A80:3H23 A80 H11 A83:1H1 A83 H12A A83:2H1 A83 H61 A83:1H6 A83 H62 A83:2H6 A83 H71 A83:1H7 A83 H72 A83:2H7 A83 H91 A83:1H9 A83 H92 A83:2H9 A83 H93 A83:3H9 A83 H101 A83:1H10 A83 H102 A83:2H10 A83 H103 A83:3H10 A83 H171 A83:1H17 A83 H172 A83:2H17 A83 H173 A83:3H17 A83 H181 A83:1H18 A83 H182 A83:2H18 A83 H311 A83:1H31 A83 H312 A83:2H31 A83 H491 A83:1H49 A83 H492 A83:2H49 A83 H493 A83:3H49 A83 H501 A83:1H50 A83 H502 A83:2H50 A83 H503 A83:3H50 A83 H511 A83:1H51 A83 H512 A83:2H51 A83 H513 A83:3H51 A83 H11 A84:1H1 A84 H12 A84:2H1 A84 H21 A84:1H2 A84 H22A A84:2H2 A84 H51 A84:1H5 A84 H52 A84:2H5 A84 H61 A84:1H6 A84 H62 A84:2H6 A84 H271 A84:1H27 A84 H272 A84:2H27 A84 H291 A84:1H29 A84 H292 A84:2H29 A84 H293 A84:3H29 A84 H301 A84:1H30 A84 H302 A84:2H30 A84 H303 A84:3H30 A84 H71 A88:1H7 A88 H72 A88:2H7 A88 H81 A88:1H8 A88 H82 A88:2H8 A88 H151 A88:1H15 A88 H152 A88:2H15 A88 H221 A88:1H22 A88 H222 A88:2H22 A88 H311 A88:1H31 A88 H312 A88:2H31 A88 H313 A88:3H31 A88 H321 A88:1H32 A88 H322 A88:2H32 A88 H411 A88:1H41 A88 H412 A88:2H41 A88 H413 A88:3H41 A88 H101 A8B:1H10 A8B H102 A8B:2H10 A8B H111 A8B:1H11 A8B H112 A8B:2H11 A8B H121 A8B:1H12 A8B H122 A8B:2H12 A8B H131 A8B:1H13 A8B H132 A8B:2H13 A8B H161 A8B:1H16 A8B H162 A8B:2H16 A8B H171 A8B:1H17 A8B H172 A8B:2H17 A8B H181 A8B:1H18 A8B H182 A8B:2H18 A8B H191 A8B:1H19 A8B H192 A8B:2H19 A8B H201 A8B:1H20 A8B H202 A8B:2H20 A8B H211 A8B:1H21 A8B H212 A8B:2H21 A8B H221 A8B:1H22 A8B H222 A8B:2H22 A8B H231 A8B:1H23 A8B H232 A8B:2H23 A8B H272 A8B:2H27 A8B H282 A8B:2H28 A8B H292 A8B:2H29 A8B H302 A8B:2H30 A8B H332 A8B:2H33 A8B H342 A8B:2H34 A8B H101 A8N:1H10 A8N H131 A8N:1H13 A8N H132 A8N:2H13 A8N H141 A8N:1H14 A8N H142 A8N:2H14 A8N H151 A8N:1H15 A8N H152 A8N:2H15 A8N H161 A8N:1H16 A8N H162 A8N:2H16 A8N H171 A8N:1H17 A8N H172 A8N:2H17 A8N H181 A8N:1H18 A8N H182 A8N:2H18 A8N H191 A8N:1H19 A8N H192 A8N:2H19 A8N H201 A8N:1H20 A8N H202 A8N:2H20 A8N H211 A8N:1H21 A8N H212 A8N:2H21 A8N H221 A8N:1H22 A8N H222 A8N:2H22 A8N H231 A8N:1H23 A8N H232 A8N:2H23 A8N H241 A8N:1H24 A8N H242 A8N:2H24 A8N H251 A8N:1H25 A8N H252 A8N:2H25 A8N H253 A8N:3H25 A8N H81 A91:1H8 A91 H82 A91:2H8 A91 H231 A91:1H23 A91 H232 A91:2H23 A91 H233 A91:3H23 A91 H241 A91:1H24 A91 H242 A91:2H24 A91 H71 A94:1H7 A94 H72 A94:2H7 A94 H73 A94:3H7 A94 HN81 A94:1HN8 A94 HN82 A94:2HN8 A94 H91 A94:1H9 A94 H92 A94:2H9 A94 H141 A94:1H14 A94 H142 A94:2H14 A94 H151 A94:1H15 A94 H152 A94:2H15 A94 H261 A9A:1H26 A9A H262 A9A:2H26 A9A H291 A9A:1H29 A9A H292 A9A:2H29 A9A H293 A9A:3H29 A9A H301 A9A:1H30 A9A H302 A9A:2H30 A9A H303 A9A:3H30 A9A H361 A9A:1H36 A9A H362 A9A:2H36 A9A H441 A9A:1H44 A9A H442 A9A:2H44 A9A H443 A9A:3H44 A9A H451 A9A:1H45 A9A H452 A9A:2H45 A9A H471 A9A:1H47 A9A H472 A9A:2H47 A9A H473 A9A:3H47 A9A H481 A9A:1H48 A9A H482 A9A:2H48 A9A H483 A9A:3H48 A9A H491 A9A:1H49 A9A H492 A9A:2H49 A9A H501 A9A:1H50 A9A H502 A9A:2H50 A9A H531 A9A:1H53 A9A H532 A9A:2H53 A9A H541 A9A:1H54 A9A H542 A9A:2H54 A9A H551 A9A:1H55 A9A H552 A9A:2H55 A9A H581 A9A:1H58 A9A H582 A9A:2H58 A9A H601 A9A:1H60 A9A H602 A9A:2H60 A9A H603 A9A:3H60 A9A H621 A9A:1H62 A9A H622 A9A:2H62 A9A H641 A9A:1H64 A9A H642 A9A:2H64 A9A H643 A9A:3H64 A9A H651 A9A:1H65 A9A H652 A9A:2H65 A9A H653 A9A:3H65 A9A H91 AA:1H9 AA H92 AA:2H9 AA H3N1 AA1:1H3N AA1 H3N2 AA1:2H3N AA1 H7C1 AA1:1H7C AA1 H7C2 AA1:2H7C AA1 H111 AA1:1H11 AA1 H112 AA1:2H11 AA1 H121 AA1:1H12 AA1 H122 AA1:2H12 AA1 H181 AA1:1H18 AA1 H182 AA1:2H18 AA1 H191 AA1:1H19 AA1 H192 AA1:2H19 AA1 H193 AA1:3H19 AA1 H221 AA2:1H22 AA2 H222 AA2:2H22 AA2 H223 AA2:3H22 AA2 H231 AA2:1H23 AA2 H232 AA2:2H23 AA2 H233 AA2:3H23 AA2 H241 AA2:1H24 AA2 H242 AA2:2H24 AA2 H251 AA2:1H25 AA2 H252 AA2:2H25 AA2 H261 AA2:1H26 AA2 H262 AA2:2H26 AA2 H281 AA2:1H28 AA2 H282 AA2:2H28 AA2 H291 AA2:1H29 AA2 H292 AA2:2H29 AA2 H311 AA2:1H31 AA2 H312 AA2:2H31 AA2 H321 AA2:1H32 AA2 H322 AA2:2H32 AA2 H2 AA4: HN AA4 HB2 AA4: HB1 AA4 HB3 AA4: HB2 AA4 HG2 AA4: HG1 AA4 HG3 AA4: HG2 AA4 HD2 AA4: HD1 AA4 HD3 AA4: HD2 AA4 HE AA4: HOE AA4 HB1 AA5:1HB AA5 HB2 AA5:2HB AA5 HG1 AA5:1HG AA5 HG2 AA5:2HG AA5 HE1 AA5:1HE AA5 HE2 AA5:2HE AA5 HE3 AA5:3HE AA5 H2A1 AA5:1H2A AA5 H2A2 AA5:2H2A AA5 H2A3 AA5:3H2A AA5 H5A1 AA5:1H5A AA5 H5A2 AA5:2H5A AA5 H3C1 AA7:1H3C AA7 H3C2 AA7:2H3C AA7 H4C1 AA7:1H4C AA7 H4C2 AA7:2H4C AA7 H5C1 AA7:1H5C AA7 H5C2 AA7:2H5C AA7 H6C1 AA7:1H6C AA7 H6C2 AA7:2H6C AA7 H191 AA7:1H19 AA7 H192 AA7:2H19 AA7 H201 AA7:1H20 AA7 H202 AA7:2H20 AA7 H211 AA7:1H21 AA7 H212 AA7:2H21 AA7 H221 AA7:1H22 AA7 H222 AA7:2H22 AA7 H231 AA7:1H23 AA7 H232 AA7:2H23 AA7 H241 AA7:1H24 AA7 H242 AA7:2H24 AA7 H251 AA7:1H25 AA7 H252 AA7:2H25 AA7 H281 AA7:1H28 AA7 H282 AA7:2H28 AA7 H291 AA7:1H29 AA7 H292 AA7:2H29 AA7 H301 AA7:1H30 AA7 H302 AA7:2H30 AA7 H311 AA7:1H31 AA7 H312 AA7:2H31 AA7 H1B1 AAA:1H1B AAA H1B2 AAA:2H1B AAA H1B3 AAA:3H1B AAA H4A1 AAA:1H4A AAA H4A2 AAA:2H4A AAA H4A3 AAA:3H4A AAA HN81 AAA:1HN8 AAA HN82 AAA:2HN8 AAA H5'1 AAB:1H5' AAB H5'2 AAB:2H5' AAB HO1' AAB:'HO1 AAB H2'1 AAB:1H2' AAB H2'2 AAB:2H2' AAB HO3' AAB:'HO3 AAB HC21 AAC:1HC2 AAC HC22 AAC:2HC2 AAC HC41 AAC:1HC4 AAC HC42 AAC:2HC4 AAC HC43 AAC:3HC4 AAC HN61 AAD:1HN6 AAD HN62 AAD:2HN6 AAD HN21 AAD:1HN2 AAD HN22 AAD:2HN2 AAD HCB1 AAD:1HCB AAD HCB2 AAD:2HCB AAD HCG1 AAD:1HCG AAD HCG2 AAD:2HCG AAD HCE1 AAD:1HCE AAD HCE2 AAD:2HCE AAD HCE3 AAD:3HCE AAD HC51 AAD:1HC5 AAD HC52 AAD:2HC5 AAD H41 AAE:1H4 AAE H42 AAE:2H4 AAE H91 AAE:1H9 AAE H92 AAE:2H9 AAE H93 AAE:3H9 AAE H41 AAF:1H4 AAF H42 AAF:2H4 AAF H51 AAF:1H5 AAF H52 AAF:2H5 AAF H91 AAF:1H9 AAF H92 AAF:2H9 AAF H111 AAF:1H11 AAF H112 AAF:2H11 AAF H121 AAF:1H12 AAF H122 AAF:2H12 AAF H131 AAF:1H13 AAF H132 AAF:2H13 AAF H141 AAF:1H14 AAF H142 AAF:2H14 AAF H181 AAF:1H18 AAF H182 AAF:2H18 AAF H291 AAF:1H29 AAF H292 AAF:2H29 AAF H293 AAF:3H29 AAF HC21 AAG:1HC2 AAG HC22 AAG:2HC2 AAG HC41 AAG:1HC4 AAG HC42 AAG:2HC4 AAG HC51 AAG:1HC5 AAG HC52 AAG:2HC5 AAG HN31 AAG:1HN3 AAG HN32 AAG:2HN3 AAG HC91 AAG:1HC9 AAG HC92 AAG:2HC9 AAG HC93 AAG:3HC9 AAG H101 AAH:1H10 AAH H102 AAH:2H10 AAH H121 AAH:1H12 AAH H122 AAH:2H12 AAH H171 AAH:1H17 AAH H172 AAH:2H17 AAH H181 AAH:1H18 AAH H182 AAH:2H18 AAH H191 AAH:1H19 AAH H192 AAH:2H19 AAH H201 AAH:1H20 AAH H202 AAH:2H20 AAH H61 AAL:1H6 AAL H62 AAL:2H6 AAL HN61 AAM:1HN6 AAM HN62 AAM:2HN6 AAM HOP2 AAM:2HOP AAM HOP3 AAM:3HOP AAM H5'1 AAM:1H5* AAM H5'2 AAM:2H5* AAM H4' AAM: H4* AAM H3' AAM: H3* AAM HO3' AAM:*HO3 AAM H2' AAM: H2* AAM HO2' AAM:*HO2 AAM H1' AAM: H1* AAM H21 AAN:1H2 AAN H22 AAN:2H2 AAN H6A1 AAO:1H6A AAO H6A2 AAO:2H6A AAO H6B1 AAO:1H6B AAO H6B2 AAO:2H6B AAO H6C1 AAO:1H6C AAO H6C2 AAO:2H6C AAO H6C3 AAO:3H6C AAO H7H1 AAO:1H7H AAO H7H2 AAO:2H7H AAO H6G1 AAO:1H6G AAO H6G2 AAO:2H6G AAO H6T1 AAO:1H6T AAO H6T2 AAO:2H6T AAO HN1 AAP:1HN AAP HN2 AAP:2HN AAP HM'1 AAP:1HM' AAP HM'2 AAP:2HM' AAP HM'3 AAP:3HM' AAP HM51 AAP:1HM5 AAP HM52 AAP:2HM5 AAP HM53 AAP:3HM5 AAP H AAR:1HN AAR H2 AAR:2HN AAR HB2 AAR:1HB AAR HB3 AAR:2HB AAR HG2 AAR:1HG AAR HG3 AAR:2HG AAR HD2 AAR:1HD AAR HD3 AAR:2HD AAR HH11 AAR:1HH1 AAR HH12 AAR:2HH1 AAR HH21 AAR:1HH2 AAR HH22 AAR:2HH2 AAR HNT1 AAR:1HNT AAR HNT2 AAR:2HNT AAR H81 AAS:1H8 AAS H82 AAS:2H8 AAS H83 AAS:3H8 AAS HN11 AAS:1HN1 AAS HN12 AAS:2HN1 AAS HN21 AAS:1HN2 AAS HN22 AAS:2HN2 AAS HCA1 AAT:1HCA AAT HCA2 AAT:2HCA AAT H5'1 AAT:1H5* AAT H5'2 AAT:2H5* AAT H4'C AAT:CH4* AAT H3'C AAT:CH3* AAT H3'O AAT:OH3* AAT H2'C AAT:CH2* AAT H2'O AAT:OH2* AAT H1'C AAT:CH1* AAT HN61 AAT:1HN6 AAT HN62 AAT:2HN6 AAT H111 AAT:1H11 AAT H112 AAT:2H11 AAT H121 AAT:1H12 AAT H122 AAT:2H12 AAT H131 AAT:1H13 AAT H132 AAT:2H13 AAT H141 AAT:1H14 AAT H142 AAT:2H14 AAT H151 AAT:1H15 AAT H152 AAT:2H15 AAT H161 AAT:1H16 AAT H162 AAT:2H16 AAT H11A AAU:1H1 AAU H12A AAU:2H1 AAU H13A AAU:3H1 AAU H61 AAU:1H6 AAU H62 AAU:2H6 AAU H91 AAU:1H9 AAU H92 AAU:2H9 AAU H181 AAU:1H18 AAU H182 AAU:2H18 AAU H211 AAU:1H21 AAU H212 AAU:2H21 AAU H291 AAU:1H29 AAU H292 AAU:2H29 AAU H293 AAU:3H29 AAU H351 AAU:1H35 AAU H352 AAU:2H35 AAU H361 AAU:1H36 AAU H362 AAU:2H36 AAU H311 AAX:1H31 AAX H312 AAX:2H31 AAX H341 AAX:1H34 AAX H342 AAX:2H34 AAX H331 AAX:1H33 AAX H332 AAX:2H33 AAX H11 AAX:1H1 AAX H12A AAX:2H1 AAX H13 AAX:3H1 AAX H621 AAY:1H62 AAY H622 AAY:2H62 AAY H623 AAY:3H62 AAY H551 AAY:1H55 AAY H552 AAY:2H55 AAY H581 AAY:1H58 AAY H582 AAY:2H58 AAY H583 AAY:3H58 AAY H281 AAY:1H28 AAY H282 AAY:2H28 AAY H461 AAY:1H46 AAY H462 AAY:2H46 AAY H463 AAY:3H46 AAY H421 AAY:1H42 AAY H422 AAY:2H42 AAY H423 AAY:3H42 AAY H191 AAY:1H19 AAY H192 AAY:2H19 AAY H161 AAY:1H16 AAY H162 AAY:2H16 AAY H91 AAY:1H9 AAY H92A AAY:2H9 AAY H41 AAY:1H4 AAY H42 AAY:2H4 AAY H661 AAY:1H66 AAY H662 AAY:2H66 AAY H851 AAY:1H85 AAY H852 AAY:2H85 AAY H811 AAY:1H81 AAY H812 AAY:2H81 AAY H813 AAY:3H81 AAY H21A AAZ:1H2 AAZ H22A AAZ:2H2 AAZ H11 AAZ:1H1 AAZ H12 AAZ:2H1 AAZ H13A AAZ:3H1 AAZ H111 AAZ:1H11 AAZ H112 AAZ:2H11 AAZ H113 AAZ:3H11 AAZ H181 AB0:1H18 AB0 H182 AB0:2H18 AB0 H021 AB0:1H02 AB0 H022 AB0:2H02 AB0 H061 AB0:1H06 AB0 H062 AB0:2H06 AB0 H151 AB0:1H15 AB0 H152 AB0:2H15 AB0 H201 AB0:1H20 AB0 H202 AB0:2H20 AB0 H221 AB0:1H22 AB0 H222 AB0:2H22 AB0 H223 AB0:3H22 AB0 H11 AB2:1H1 AB2 H12 AB2:2H1 AB2 H13A AB2:3H1 AB2 H81 AB2:1H8 AB2 H82 AB2:2H8 AB2 H101 AB2:1H10 AB2 H102 AB2:2H10 AB2 H103 AB2:3H10 AB2 H111 AB2:1H11 AB2 H112 AB2:2H11 AB2 H113 AB2:3H11 AB2 H121 AB2:1H12 AB2 H122 AB2:2H12 AB2 H151 AB2:1H15 AB2 H152 AB2:2H15 AB2 H241 AB2:1H24 AB2 H242 AB2:2H24 AB2 H281 AB2:1H28 AB2 H282 AB2:2H28 AB2 H201 AB3:1H20 AB3 H202 AB3:2H20 AB3 H203 AB3:3H20 AB3 H191 AB3:1H19 AB3 H192 AB3:2H19 AB3 H193 AB3:3H19 AB3 H211 AB3:1H21 AB3 H212 AB3:2H21 AB3 H213 AB3:3H21 AB3 HN11 AB3:1HN1 AB3 HN12 AB3:2HN1 AB3 H221 AB6:1H22 AB6 H222 AB6:2H22 AB6 H251 AB6:1H25 AB6 H252 AB6:2H25 AB6 H261 AB6:1H26 AB6 H262 AB6:2H26 AB6 H291 AB6:1H29 AB6 H292 AB6:2H29 AB6 H301 AB6:1H30 AB6 H302 AB6:2H30 AB6 H331 AB6:1H33 AB6 H332 AB6:2H33 AB6 H341 AB6:1H34 AB6 H342 AB6:2H34 AB6 H211 AB6:1H21 AB6 H212 AB6:2H21 AB6 H611 AB6:1H61 AB6 H612 AB6:2H61 AB6 H321 AB6:1H32 AB6 H322 AB6:2H32 AB6 H11A AB6:1H1 AB6 H12A AB6:2H1 AB6 H351 AB6:1H35 AB6 H352 AB6:2H35 AB6 H271 AB6:1H27 AB6 H272 AB6:2H27 AB6 HN1 AB7:1HN AB7 HN2 AB7:2HN AB7 HBC1 AB7:1HBC AB7 HBC2 AB7:2HBC AB7 HGC1 AB7:1HGC AB7 HGC2 AB7:2HGC AB7 HGC3 AB7:3HGC AB7 H881 AB8:1H88 AB8 H882 AB8:2H88 AB8 H883 AB8:3H88 AB8 H731 AB8:1H73 AB8 H732 AB8:2H73 AB8 H621 AB8:1H62 AB8 H622 AB8:2H62 AB8 H691 AB8:1H69 AB8 H692 AB8:2H69 AB8 H693 AB8:3H69 AB8 H41 AB8:1H4 AB8 H42 AB8:2H4 AB8 H121 AB8:1H12 AB8 H122 AB8:2H12 AB8 H151 AB8:1H15 AB8 H152 AB8:2H15 AB8 H381 AB8:1H38 AB8 H382 AB8:2H38 AB8 H383 AB8:3H38 AB8 H421 AB8:1H42 AB8 H422 AB8:2H42 AB8 H423 AB8:3H42 AB8 H241 AB8:1H24 AB8 H242 AB8:2H24 AB8 H581 AB8:1H58 AB8 H582 AB8:2H58 AB8 H583 AB8:3H58 AB8 H511 AB8:1H51 AB8 H512 AB8:2H51 AB8 H541 AB8:1H54 AB8 H542 AB8:2H54 AB8 H543 AB8:3H54 AB8 H221 AB9:1H22 AB9 H222 AB9:2H22 AB9 H251 AB9:1H25 AB9 H252 AB9:2H25 AB9 H261 AB9:1H26 AB9 H262 AB9:2H26 AB9 H291 AB9:1H29 AB9 H292 AB9:2H29 AB9 H301 AB9:1H30 AB9 H302 AB9:2H30 AB9 H331 AB9:1H33 AB9 H332 AB9:2H33 AB9 H351 AB9:1H35 AB9 H352 AB9:2H35 AB9 H211 AB9:1H21 AB9 H212 AB9:2H21 AB9 H611 AB9:1H61 AB9 H612 AB9:2H61 AB9 H11A AB9:1H1 AB9 H12A AB9:2H1 AB9 H321 AB9:1H32 AB9 H322 AB9:2H32 AB9 H341 AB9:1H34 AB9 H342 AB9:2H34 AB9 H271 AB9:1H27 AB9 H272 AB9:2H27 AB9 H ABA:1HN ABA HN2 ABA:2HN ABA HB2 ABA:1HB ABA HB3 ABA:2HB ABA HG1 ABA:1HG ABA HG2 ABA:2HG ABA HG3 ABA:3HG ABA H541 ABB:1H54 ABB H542 ABB:2H54 ABB H521 ABB:1H52 ABB H522 ABB:2H52 ABB HCB1 ABB:1HCB ABB HCB2 ABB:2HCB ABB HCG1 ABB:1HCG ABB HCG2 ABB:2HCG ABB HCD1 ABB:1HCD ABB HCD2 ABB:2HCD ABB HH21 ABB:1HH2 ABB HH22 ABB:2HH2 ABB HC21 ABB:1HC2 ABB HC22 ABB:2HC2 ABB HC23 ABB:3HC2 ABB H6G1 ABC:1H6G ABC H6G2 ABC:2H6G ABC H6G3 ABC:3H6G ABC HO2G ABC:GHO2 ABC HO3G ABC:GHO3 ABC HO4G ABC:GHO4 ABC H6H1 ABC:1H6H ABC H6H2 ABC:2H6H ABC H6I1 ABC:1H6I ABC H6I2 ABC:2H6I ABC HO2I ABC:IHO2 ABC HO3I ABC:IHO3 ABC HO6I ABC:IHO6 ABC H6J1 ABC:1H6J ABC H6J2 ABC:2H6J ABC H6J3 ABC:3H6J ABC HO2J ABC:JHO2 ABC HO3J ABC:JHO3 ABC H6K1 ABC:1H6K ABC H6K2 ABC:2H6K ABC HO2K ABC:KHO2 ABC HO3K ABC:KHO3 ABC HO6K ABC:KHO6 ABC H6L1 ABC:1H6L ABC H6L2 ABC:2H6L ABC H6L3 ABC:3H6L ABC HO2L ABC:LHO2 ABC HO3L ABC:LHO3 ABC HO1L ABC:LHO1 ABC H6L1 ABD:1H6L ABD H6L2 ABD:2H6L ABD H6K1 ABD:1H6K ABD H6K2 ABD:2H6K ABD H6J1 ABD:1H6J ABD H6J2 ABD:2H6J ABD H6J3 ABD:3H6J ABD H6I1 ABD:1H6I ABD H6I2 ABD:2H6I ABD H6H1 ABD:1H6H ABD H6H2 ABD:2H6H ABD HOG4 ABD:4HOG ABD H6G1 ABD:1H6G ABD H6G2 ABD:2H6G ABD H31 ABE:1H3 ABE H32 ABE:2H3 ABE H61 ABE:1H6 ABE H62 ABE:2H6 ABE H63 ABE:3H6 ABE H5'1 ABF:1H5' ABF H5'2 ABF:2H5' ABF H3B2 ABG:2H3B ABG H3B1 ABG:1H3B ABG H5'2 ABG:2H5' ABG H5'1 ABG:1H5' ABG H62 ABG:2H6 ABG H61 ABG:1H6 ABG H2O1 ABG:1H2O ABG H3O1 ABG:1H3O ABG HN1 ABH:1HN ABH HN2 ABH:2HN ABH HOT1 ABH:1HOT ABH HCB1 ABH:1HCB ABH HCB2 ABH:2HCB ABH HCG1 ABH:1HCG ABH HCG2 ABH:2HCG ABH HCD1 ABH:1HCD ABH HCD2 ABH:2HCD ABH HCE1 ABH:1HCE ABH HCE2 ABH:2HCE ABH HH11 ABI:1HH1 ABI HH12 ABI:2HH1 ABI HH21 ABI:1HH2 ABI HH22 ABI:2HH2 ABI HB1 ABK:1HB ABK HB2 ABK:2HB ABK H61 ABL:1H6 ABL H62 ABL:2H6 ABL H2AO ABL:OH2A ABL H3AO ABL:OH3A ABL H4AO ABL:OH4A ABL H6A1 ABL:1H6A ABL H6A2 ABL:2H6A ABL H6AO ABL:OH6A ABL HOP3 ABM:3HOP ABM H5'1 ABM:1H5* ABM H5'2 ABM:2H5* ABM H4' ABM: H4* ABM H3' ABM: H3* ABM HO3' ABM:*HO3 ABM H2' ABM: H2* ABM HO2' ABM:*HO2 ABM H1' ABM: H1* ABM HN61 ABM:1HN6 ABM HN62 ABM:2HN6 ABM HN1 ABN:1HN ABN HN2 ABN:2HN ABN H1 ABN:1H ABN H2A ABN:2H ABN H181 ABO:1H18 ABO H182 ABO:2H18 ABO H183 ABO:3H18 ABO HOB2 ABP:2HOB ABP HOB3 ABP:3HOB ABP HOA2 ABP:2HOA ABP H5'1 ABP:1H5* ABP H5'2 ABP:2H5* ABP H4' ABP: H4* ABP H3' ABP: H3* ABP HO3' ABP:*HO3 ABP H2' ABP: H2* ABP HO2' ABP:*HO2 ABP H1' ABP: H1* ABP HN61 ABP:1HN6 ABP HN62 ABP:2HN6 ABP HOP2 ABR:2HOP ABR H5' ABR:1H5* ABR H5'' ABR:2H5* ABR H4' ABR: H4* ABR H1' ABR: H1* ABR H2' ABR:1H2* ABR H2'' ABR:2H2* ABR H3' ABR: H3* ABR HO3' ABR:H3T ABR HOP3 ABR:3HOP ABR HOP2 ABS:2HOP ABS H5' ABS:1H5* ABS H5'' ABS:2H5* ABS H4' ABS: H4* ABS H1' ABS: H1* ABS H2' ABS:1H2* ABS H2'' ABS:2H2* ABS H3' ABS: H3* ABS HO3' ABS:H3T ABS HOP3 ABS:3HOP ABS HOG2 ABT:2HOG ABT HOG3 ABT:3HOG ABT HOB2 ABT:2HOB ABT HOA2 ABT:2HOA ABT H5'1 ABT:1H5* ABT H5'2 ABT:2H5* ABT H4' ABT: H4* ABT H1' ABT: H1* ABT H51 ABT:1H5 ABT H52 ABT:2H5 ABT H53 ABT:3H5 ABT H2'1 ABT:1H2* ABT H2'2 ABT:2H2* ABT H3' ABT: H3* ABT HA1 ABU:1HA ABU HA2 ABU:2HA ABU HB1 ABU:1HB ABU HB2 ABU:2HB ABU HG1 ABU:1HG ABU HG2 ABU:2HG ABU H41 ABW:1H4 ABW H42 ABW:2H4 ABW H71 ABW:1H7 ABW H72 ABW:2H7 ABW H73 ABW:3H7 ABW H21 ABW:1H2 ABW H22 ABW:2H2 ABW H101 ABW:1H10 ABW H102 ABW:2H10 ABW H103 ABW:3H10 ABW H151 ABW:1H15 ABW H152 ABW:2H15 ABW H153 ABW:3H15 ABW H161 ABW:1H16 ABW H162 ABW:2H16 ABW H163 ABW:3H16 ABW H41 ABX:1H4 ABX H42 ABX:2H4 ABX H71 ABX:1H7 ABX H72 ABX:2H7 ABX H73 ABX:3H7 ABX H91 ABX:1H9 ABX H92 ABX:2H9 ABX H111 ABX:1H11 ABX H112 ABX:2H11 ABX H113 ABX:3H11 ABX H121 ABX:1H12 ABX H122 ABX:2H12 ABX H123 ABX:3H12 ABX H141 ABX:1H14 ABX H142 ABX:2H14 ABX H143 ABX:3H14 ABX H7'1 ABY:1H7' ABY H7'2 ABY:2H7' ABY H7'3 ABY:3H7' ABY H'1 ABY:1H' ABY H'2 ABY:2H' ABY HB21 ABY:1HB2 ABY HB22 ABY:2HB2 ABY HG11 ABY:1HG1 ABY HG12 ABY:2HG1 ABY HB11 ABY:1HB1 ABY HB12 ABY:2HB1 ABY HA11 ABY:1HA1 ABY HA12 ABY:2HA1 ABY HN11 ABY:1HN1 ABY HN12 ABY:2HN1 ABY HA31 ABY:1HA3 ABY HA32 ABY:2HA3 ABY H71 ABZ:1H7 ABZ H72 ABZ:2H7 ABZ HN41 ABZ:1HN4 ABZ HN42 ABZ:2HN4 ABZ H81 AC0:1H8 AC0 H82 AC0:2H8 AC0 H83 AC0:3H8 AC0 HCA3 AC1:3HCA AC1 HOA3 AC1:3HOA AC1 HCA4 AC1:4HCA AC1 HCA5 AC1:5HCA AC1 H6A1 AC1:1H6A AC1 H6A2 AC1:2H6A AC1 H6A3 AC1:3H6A AC1 HCB1 AC1:1HCB AC1 HCB2 AC1:2HCB AC1 HCB3 AC1:3HCB AC1 HOB3 AC1:3HOB AC1 HC61 AC1:1HC6 AC1 HC62 AC1:2HC6 AC1 H3'1 AC2:1H3* AC2 H3'2 AC2:2H3* AC2 HO'3 AC2:3HO* AC2 H2'1 AC2:1H2* AC2 H2'2 AC2:2H2* AC2 H1'1 AC2:1H1* AC2 H1'2 AC2:2H1* AC2 HN21 AC2:1HN2 AC2 HN22 AC2:2HN2 AC2 HC11 AC3:1HC1 AC3 HC12 AC3:2HC1 AC3 HC71 AC3:1HC7 AC3 HC72 AC3:2HC7 AC3 HC61 AC3:1HC6 AC3 HC62 AC3:2HC6 AC3 HB11 AC5:1HB1 AC5 HB12 AC5:2HB1 AC5 HB21 AC5:1HB2 AC5 HB22 AC5:2HB2 AC5 HG11 AC5:1HG1 AC5 HG12 AC5:2HG1 AC5 HG21 AC5:1HG2 AC5 HG22 AC5:2HG2 AC5 H81 AC6:1H8 AC6 H82 AC6:2H8 AC6 H83 AC6:3H8 AC6 H41 AC9:1H4 AC9 H42 AC9:2H4 AC9 H43 AC9:3H4 AC9 H51 AC9:1H5 AC9 H52 AC9:2H5 AC9 H53 AC9:3H5 AC9 H91 AC9:1H9 AC9 H92 AC9:2H9 AC9 H93 AC9:3H9 AC9 H101 AC9:1H10 AC9 H102 AC9:2H10 AC9 H103 AC9:3H10 AC9 H141 AC9:1H14 AC9 H142 AC9:2H14 AC9 H143 AC9:3H14 AC9 H151 AC9:1H15 AC9 H152 AC9:2H15 AC9 H153 AC9:3H15 AC9 H21 ACA:1H2 ACA H22 ACA:2H2 ACA H31 ACA:1H3 ACA H32 ACA:2H3 ACA H41 ACA:1H4 ACA H42 ACA:2H4 ACA H51 ACA:1H5 ACA H52 ACA:2H5 ACA H61 ACA:1H6 ACA H62 ACA:2H6 ACA HN61 ACA:1HN6 ACA HN62 ACA:2HN6 ACA HN21 ACB:1HN2 ACB HN22 ACB:2HN2 ACB H41 ACB:1H4 ACB H42 ACB:2H4 ACB H43 ACB:3H4 ACB H52 ACC:2H5 ACC H51 ACC:1H5 ACC H92 ACC:2H9 ACC H91 ACC:1H9 ACC H102 ACC:2H10 ACC H101 ACC:1H10 ACC H132 ACC:2H13 ACC H131 ACC:1H13 ACC H193 ACC:3H19 ACC H192 ACC:2H19 ACC H191 ACC:1H19 ACC H352 ACC:2H35 ACC H351 ACC:1H35 ACC H423 ACC:3H42 ACC H422 ACC:2H42 ACC H421 ACC:1H42 ACC H21 ACD:1H2 ACD H22 ACD:2H2 ACD H31 ACD:1H3 ACD H32 ACD:2H3 ACD H41 ACD:1H4 ACD H42 ACD:2H4 ACD H71 ACD:1H7 ACD H72 ACD:2H7 ACD H101 ACD:1H10 ACD H102 ACD:2H10 ACD H131 ACD:1H13 ACD H132 ACD:2H13 ACD H161 ACD:1H16 ACD H162 ACD:2H16 ACD H171 ACD:1H17 ACD H172 ACD:2H17 ACD H181 ACD:1H18 ACD H182 ACD:2H18 ACD H191 ACD:1H19 ACD H192 ACD:2H19 ACD H201 ACD:1H20 ACD H202 ACD:2H20 ACD H203 ACD:3H20 ACD H1 ACE:1H ACE H2 ACE:2H ACE H3 ACE:3H ACE H41 ACF:1H4 ACF H42 ACF:2H4 ACF H51 ACF:1H5 ACF H52 ACF:2H5 ACF H91 ACF:1H9 ACF H92 ACF:2H9 ACF H181 ACF:1H18 ACF H182 ACF:2H18 ACF H191 ACF:1H19 ACF H192 ACF:2H19 ACF H201 ACF:1H20 ACF H202 ACF:2H20 ACF H211 ACF:1H21 ACF H212 ACF:2H21 ACF H221 ACF:1H22 ACF H222 ACF:2H22 ACF H6A1 ACG:1H6A ACG H6A2 ACG:2H6A ACG HOA2 ACG:2HOA ACG HOA3 ACG:3HOA ACG HOA6 ACG:6HOA ACG H6B1 ACG:1H6B ACG H6B2 ACG:2H6B ACG H6B3 ACG:3H6B ACG HOB2 ACG:2HOB ACG HOB3 ACG:3HOB ACG H6C1 ACG:1H6C ACG H6C2 ACG:2H6C ACG HOC2 ACG:2HOC ACG HOC3 ACG:3HOC ACG HOC6 ACG:6HOC ACG H6D1 ACG:1H6D ACG H6D2 ACG:2H6D ACG HOD1 ACG:1HOD ACG HOD2 ACG:2HOD ACG HOD3 ACG:3HOD ACG HOD6 ACG:6HOD ACG H6E1 ACG:1H6E ACG H6E2 ACG:2H6E ACG H6E3 ACG:3H6E ACG HOE2 ACG:2HOE ACG HOE3 ACG:3HOE ACG HOE4 ACG:4HOE ACG H21 ACH:1H2 ACH H22 ACH:2H2 ACH H31 ACH:1H3 ACH H32 ACH:2H3 ACH H61 ACH:1H6 ACH H62 ACH:2H6 ACH H63 ACH:3H6 ACH H81 ACH:1H8 ACH H82 ACH:2H8 ACH H83 ACH:3H8 ACH H91 ACH:1H9 ACH H92 ACH:2H9 ACH H93 ACH:3H9 ACH H101 ACH:1H10 ACH H102 ACH:2H10 ACH H103 ACH:3H10 ACH H61 ACI:1H6 ACI H62 ACI:2H6 ACI HN11 ACI:1HN1 ACI HN12 ACI:2HN1 ACI H5' ACK: H5* ACK H4' ACK: H4* ACK H3'1 ACK:1H3* ACK H3'2 ACK:2H3* ACK H3' ACK: H3* ACK H1' ACK: H1* ACK H6N1 ACK:1H6N ACK H6N2 ACK:2H6N ACK H2' ACK: H2* ACK H ACL:1HN ACL H2 ACL:2HN ACL HB2 ACL:1HB ACL HB3 ACL:2HB ACL HG2 ACL:1HG ACL HG3 ACL:2HG ACL HD2 ACL:1HD ACL HD3 ACL:2HD ACL HE ACL: HNE ACL HH1 ACL: HN1 ACL HH21 ACL:1HN2 ACL HH22 ACL:2HN2 ACL HM1 ACL:1HM ACL HM2 ACL:2HM ACL HN1 ACM:1HN ACM HN2 ACM:2HN ACM H21 ACM:1H2 ACM H22 ACM:2H2 ACM H23 ACM:3H2 ACM H11 ACN:1H1 ACN H12 ACN:2H1 ACN H13 ACN:3H1 ACN H21 ACN:1H2 ACN H22 ACN:2H2 ACN H23 ACN:3H2 ACN H2A ACO: AH2 ACO H61A ACO:AH61 ACO H62A ACO:AH62 ACO H8A ACO: AH8 ACO H1B ACO:AH1* ACO H2B ACO:AH2* ACO HO2A ACO:AHO2 ACO H3B ACO:AH3* ACO HOA8 ACO:8HOA ACO HOA9 ACO:9HOA ACO H4B ACO:AH4* ACO H51A ACO:AH51 ACO H52A ACO:AH52 ACO HOA2 ACO:2HOA ACO HOA5 ACO:5HOA ACO H121 ACO:1H12 ACO H122 ACO:2H12 ACO H131 ACO:1H13 ACO H132 ACO:2H13 ACO H133 ACO:3H13 ACO H141 ACO:1H14 ACO H142 ACO:2H14 ACO H143 ACO:3H14 ACO H71 ACO:1H7 ACO H72 ACO:2H7 ACO H61 ACO:1H6 ACO H62 ACO:2H6 ACO H31 ACO:1H3 ACO H32 ACO:2H3 ACO H21 ACO:1H2 ACO H22 ACO:2H2 ACO HH31 ACO:1HH3 ACO HH32 ACO:2HH3 ACO HH33 ACO:3HH3 ACO HOG2 ACP:2HOG ACP HOG3 ACP:3HOG ACP HOB2 ACP:2HOB ACP H3B1 ACP:1H3B ACP H3B2 ACP:2H3B ACP HOA2 ACP:2HOA ACP H5'1 ACP:1H5* ACP H5'2 ACP:2H5* ACP H4' ACP: H4* ACP H3' ACP: H3* ACP HO3' ACP:*HO3 ACP H2' ACP: H2* ACP HO2' ACP:*HO2 ACP H1' ACP: H1* ACP HN61 ACP:1HN6 ACP HN62 ACP:2HN6 ACP HOG2 ACQ:2HOG ACQ HOB2 ACQ:2HOB ACQ H3B1 ACQ:1H3B ACQ H3B2 ACQ:2H3B ACQ HOA2 ACQ:2HOA ACQ H5'1 ACQ:1H5* ACQ H5'2 ACQ:2H5* ACQ H4' ACQ: H4* ACQ H3' ACQ: H3* ACQ HO3' ACQ:*HO3 ACQ H2' ACQ: H2* ACQ HO2' ACQ:*HO2 ACQ H1' ACQ: H1* ACQ HN61 ACQ:1HN6 ACQ HN62 ACQ:2HN6 ACQ HOD2 ACQ:2HOD ACQ HOD3 ACQ:3HOD ACQ H6A1 ACR:1H6A ACR H6A2 ACR:2H6A ACR HOA2 ACR:2HOA ACR HOA3 ACR:3HOA ACR HOA4 ACR:4HOA ACR HOA6 ACR:6HOA ACR H6B1 ACR:1H6B ACR H6B2 ACR:2H6B ACR H6B3 ACR:3H6B ACR HOB2 ACR:2HOB ACR HOB3 ACR:3HOB ACR H6C1 ACR:1H6C ACR H6C2 ACR:2H6C ACR HOC2 ACR:2HOC ACR HOC3 ACR:3HOC ACR HOC6 ACR:6HOC ACR H6D1 ACR:1H6D ACR H6D2 ACR:2H6D ACR HOD1 ACR:1HOD ACR HOD2 ACR:2HOD ACR HOD3 ACR:3HOD ACR HOD6 ACR:6HOD ACR H12 ACS:2H1 ACS H11 ACS:1H1 ACS H62 ACS:2H6 ACS H61 ACS:1H6 ACS H72 ACS:2H7 ACS H71 ACS:1H7 ACS H102 ACS:2H10 ACS H101 ACS:1H10 ACS H242 ACS:2H24 ACS H241 ACS:1H24 ACS H293 ACS:3H29 ACS H292 ACS:2H29 ACS H291 ACS:1H29 ACS H1 ACT:1H ACT H2 ACT:2H ACT H3 ACT:3H ACT H31 ACV:1H3 ACV H32A ACV:2H3 ACV H41 ACV:1H4 ACV H42 ACV:2H4 ACV H71 ACV:1H7 ACV H72 ACV:2H7 ACV HNE1 ACV:1HNE ACV HNE2 ACV:2HNE ACV H161 ACV:1H16 ACV H162 ACV:2H16 ACV H331 ACV:1H33 ACV H332 ACV:2H33 ACV H333 ACV:3H33 ACV H371 ACV:1H37 ACV H372 ACV:2H37 ACV H373 ACV:3H37 ACV H3C1 ACW:1H3C ACW H3C2 ACW:2H3C ACW H4C1 ACW:1H4C ACW H4C2 ACW:2H4C ACW H7C1 ACW:1H7C ACW H7C2 ACW:2H7C ACW H141 ACW:1H14 ACW H142 ACW:2H14 ACW H161 ACW:1H16 ACW H162 ACW:2H16 ACW H331 ACW:1H33 ACW H332 ACW:2H33 ACW H371 ACW:1H37 ACW H372 ACW:2H37 ACW H373 ACW:3H37 ACW H401 ACW:1H40 ACW H402 ACW:2H40 ACW H6A1 ACX:1H6A ACX H6A2 ACX:2H6A ACX HO2A ACX:AHO2 ACX HO3A ACX:AHO3 ACX HO6A ACX:AHO6 ACX H6B1 ACX:1H6B ACX H6B2 ACX:2H6B ACX HO2B ACX:BHO2 ACX HO3B ACX:BHO3 ACX HO6B ACX:BHO6 ACX H6C1 ACX:1H6C ACX H6C2 ACX:2H6C ACX HO2C ACX:CHO2 ACX HO3C ACX:CHO3 ACX HO6C ACX:CHO6 ACX H6D1 ACX:1H6D ACX H6D2 ACX:2H6D ACX HO2D ACX:DHO2 ACX HO3D ACX:DHO3 ACX HO6D ACX:DHO6 ACX H6E1 ACX:1H6E ACX H6E2 ACX:2H6E ACX HO2E ACX:EHO2 ACX HO3E ACX:EHO3 ACX HO6E ACX:EHO6 ACX H6F1 ACX:1H6F ACX H6F2 ACX:2H6F ACX HO2F ACX:FHO2 ACX HO3F ACX:FHO3 ACX HO6F ACX:FHO6 ACX H1 ACY:1H ACY H2 ACY:2H ACY H3 ACY:3H ACY HNH1 ACZ:1HNH ACZ HNH2 ACZ:2HNH ACZ HE22 ACZ:2HE2 ACZ HD22 ACZ:2HD2 ACZ HD11 ACZ:1HD1 ACZ HE11 ACZ:1HE1 ACZ HCX1 ACZ:1HCX ACZ HCX2 ACZ:2HCX ACZ HCB1 ACZ:1HCB ACZ HCB2 ACZ:2HCB ACZ HN1 ACZ:1HN ACZ HN2 ACZ:2HN ACZ HOP2 AD2:2HOP AD2 HOP5 AD2:5HOP AD2 HOP6 AD2:6HOP AD2 H61 AD2:1H6 AD2 H62 AD2:2H6 AD2 H2'1 AD2:1H2' AD2 H2'2 AD2:2H2' AD2 H5'1 AD2:1H5' AD2 H5'2 AD2:2H5' AD2 HOP3 AD2:3HOP AD2 HO5' AD3:*HO5 AD3 H5'1 AD3:1H5* AD3 H5'2 AD3:2H5* AD3 H4' AD3: H4* AD3 H3' AD3: H3* AD3 HO3' AD3:*HO3 AD3 H2' AD3: H2* AD3 HO2' AD3:*HO2 AD3 H1' AD3: H1* AD3 HN61 AD3:1HN6 AD3 HN62 AD3:2HN6 AD3 H341 AD4:1H34 AD4 H342 AD4:2H34 AD4 H343 AD4:3H34 AD4 H9C1 AD4:1H9C AD4 H9C2 AD4:2H9C AD4 H141 AD4:1H14 AD4 H142 AD4:2H14 AD4 H151 AD4:1H15 AD4 H152 AD4:2H15 AD4 H161 AD4:1H16 AD4 H162 AD4:2H16 AD4 H171 AD4:1H17 AD4 H172 AD4:2H17 AD4 H181 AD4:1H18 AD4 H182 AD4:2H18 AD4 H191 AD4:1H19 AD4 H192 AD4:2H19 AD4 H201 AD4:1H20 AD4 H202 AD4:2H20 AD4 H203 AD4:3H20 AD4 H231 AD4:1H23 AD4 H232 AD4:2H23 AD4 H233 AD4:3H23 AD4 H251 AD4:1H25 AD4 H252 AD4:2H25 AD4 H253 AD4:3H25 AD4 H261 AD4:1H26 AD4 H262 AD4:2H26 AD4 H263 AD4:3H26 AD4 H311 AD4:1H31 AD4 H312 AD4:2H31 AD4 H313 AD4:3H31 AD4 H331 AD4:1H33 AD4 H332 AD4:2H33 AD4 H333 AD4:3H33 AD4 H281 AD4:1H28 AD4 H282 AD4:2H28 AD4 H291 AD4:1H29 AD4 H292 AD4:2H29 AD4 H301 AD4:1H30 AD4 H302 AD4:2H30 AD4 H571 AD4:1H57 AD4 H572 AD4:2H57 AD4 H573 AD4:3H57 AD4 H551 AD4:1H55 AD4 H552 AD4:2H55 AD4 H553 AD4:3H55 AD4 H541 AD4:1H54 AD4 H542 AD4:2H54 AD4 H543 AD4:3H54 AD4 H521 AD4:1H52 AD4 H522 AD4:2H52 AD4 H511 AD4:1H51 AD4 H512 AD4:2H51 AD4 H501 AD4:1H50 AD4 H502 AD4:2H50 AD4 H491 AD4:1H49 AD4 H492 AD4:2H49 AD4 H481 AD4:1H48 AD4 H482 AD4:2H48 AD4 H471 AD4:1H47 AD4 H472 AD4:2H47 AD4 H461 AD4:1H46 AD4 H462 AD4:2H46 AD4 H451 AD4:1H45 AD4 H452 AD4:2H45 AD4 HN41 ADB:1HN4 ADB HN42 ADB:2HN4 ADB HN61 ADC:1HN6 ADC HN62 ADC:2HN6 ADC HM21 ADD:1HM2 ADD HM22 ADD:2HM2 ADD HM23 ADD:3HM2 ADD HN31 ADD:1HN3 ADD HN32 ADD:2HN3 ADD H41 ADD:1H4 ADD H42 ADD:2H4 ADD H51 ADD:1H5 ADD H52 ADD:2H5 ADD HM61 ADD:1HM6 ADD HM62 ADD:2HM6 ADD HM63 ADD:3HM6 ADD H71 ADD:1H7 ADD H72 ADD:2H7 ADD HM81 ADD:1HM8 ADD HM82 ADD:2HM8 ADD HM83 ADD:3HM8 ADD HM91 ADD:1HM9 ADD HM92 ADD:2HM9 ADD HM93 ADD:3HM9 ADD H'1 ADD:1H' ADD H'2 ADD:2H' ADD HN61 ADE:1HN6 ADE HN62 ADE:2HN6 ADE H41 ADF:1H4 ADF H42 ADF:2H4 ADF H51 ADF:1H5 ADF H52 ADF:2H5 ADF H91 ADF:1H9 ADF H92 ADF:2H9 ADF H131 ADF:1H13 ADF H132 ADF:2H13 ADF H141 ADF:1H14 ADF H142 ADF:2H14 ADF H151 ADF:1H15 ADF H152 ADF:2H15 ADF H211 ADF:1H21 ADF H212 ADF:2H21 ADF H221 ADF:1H22 ADF H222 ADF:2H22 ADF H251 ADF:1H25 ADF H252 ADF:2H25 ADF H253 ADF:3H25 ADF H261 ADF:1H26 ADF H262 ADF:2H26 ADF H263 ADF:3H26 ADF H271 ADF:1H27 ADF H272 ADF:2H27 ADF H273 ADF:3H27 ADF H31 ADG:1H3 ADG H32 ADG:2H3 ADG H33 ADG:3H3 ADG H61 ADG:1H6 ADG H62 ADG:2H6 ADG H41 ADH:1H4 ADH H42 ADH:2H4 ADH H61 ADH:1H6 ADH H62 ADH:2H6 ADH H71 ADH:1H7 ADH HN12 ADH:2HN1 ADH HN22 ADH:2HN2 ADH HOB2 ADI:2HOB ADI HOB3 ADI:3HOB ADI HOA2 ADI:2HOA ADI H5'1 ADI:1H5* ADI H5'2 ADI:2H5* ADI H4' ADI: H4* ADI H3'1 ADI:1H3* ADI H3'2 ADI:2H3* ADI H2'1 ADI:1H2* ADI H2'2 ADI:2H2* ADI H1' ADI: H1* ADI HN61 ADI:1HN6 ADI HN62 ADI:2HN6 ADI H5'1 ADJ:1H5' ADJ H5'2 ADJ:2H5' ADJ HN61 ADJ:1HN6 ADJ HN62 ADJ:2HN6 ADJ HO'2 ADJ:2HO' ADJ HO'3 ADJ:3HO' ADJ HON7 ADJ:7HON ADJ H5R1 ADJ:1H5R ADJ H5R2 ADJ:2H5R ADJ HOR2 ADJ:2HOR ADJ HOR3 ADJ:3HOR ADJ H5S1 ADJ:1H5S ADJ H5S2 ADJ:2H5S ADJ HX61 ADJ:1HX6 ADJ HX62 ADJ:2HX6 ADJ HOS2 ADJ:2HOS ADJ HOS3 ADJ:3HOS ADJ HN61 ADK:1HN6 ADK HN62 ADK:2HN6 ADK H3A1 ADK:1H3A ADK H3A2 ADK:2H3A ADK H3A3 ADK:3H3A ADK H101 ADL:1H10 ADL H102 ADL:2H10 ADL H151 ADL:1H15 ADL H152 ADL:2H15 ADL H21 ADM:1H2 ADM H22 ADM:2H2 ADM H41 ADM:1H4 ADM H42 ADM:2H4 ADM H61 ADM:1H6 ADM H62 ADM:2H6 ADM H81 ADM:1H8 ADM H82 ADM:2H8 ADM H91 ADM:1H9 ADM H92 ADM:2H9 ADM H101 ADM:1H10 ADM H102 ADM:2H10 ADM HO5' ADN:*HO5 ADN H5'1 ADN:1H5* ADN H5'2 ADN:2H5* ADN H4' ADN: H4* ADN H3' ADN: H3* ADN HO3' ADN:*HO3 ADN H2' ADN: H2* ADN HO2' ADN:*HO2 ADN H1' ADN: H1* ADN HN61 ADN:1HN6 ADN HN62 ADN:2HN6 ADN H41 ADO:1H4 ADO H42 ADO:2H4 ADO H61 ADO:1H6 ADO H62 ADO:2H6 ADO H81 ADO:1H8 ADO H82 ADO:2H8 ADO H91 ADO:1H9 ADO H92 ADO:2H9 ADO H101 ADO:1H10 ADO H102 ADO:2H10 ADO HOB2 ADP:2HOB ADP HOB3 ADP:3HOB ADP HOA2 ADP:2HOA ADP H5'1 ADP:1H5* ADP H5'2 ADP:2H5* ADP H4' ADP: H4* ADP H3' ADP: H3* ADP HO3' ADP:*HO3 ADP H2' ADP: H2* ADP HO2' ADP:*HO2 ADP H1' ADP: H1* ADP HN61 ADP:1HN6 ADP HN62 ADP:2HN6 ADP HOB2 ADQ:2HOB ADQ HOA2 ADQ:2HOA ADQ H5'1 ADQ:1H5* ADQ H5'2 ADQ:2H5* ADQ H4D ADQ: H4* ADQ H3D ADQ: H3* ADQ HO3' ADQ:*HO3 ADQ H2D ADQ: H2* ADQ HO2' ADQ:*HO2 ADQ H1D ADQ: H1* ADQ HN61 ADQ:1HN6 ADQ HN62 ADQ:2HN6 ADQ H6'1 ADQ:1H6' ADQ H6'2 ADQ:2H6' ADQ HO2A ADQ:'HO2 ADQ HO3A ADQ:'HO3 ADQ HO4' ADQ:'HO4 ADQ HO6' ADQ:'HO6 ADQ H11 ADR:1H1 ADR H12 ADR:2H1 ADR H21 ADR:1H2 ADR H22 ADR:2H2 ADR H31 ADR:1H3 ADR H32 ADR:2H3 ADR H51 ADR:1H5 ADR H52 ADR:2H5 ADR H61 ADR:1H6 ADR H62 ADR:2H6 ADR HSP2 ADS:2HSP ADS HSP3 ADS:3HSP ADS H5'1 ADS:1H5* ADS H5'2 ADS:2H5* ADS H4' ADS: H4* ADS H3' ADS: H3* ADS HO3' ADS:*HO3 ADS H2' ADS: H2* ADS HO2' ADS:*HO2 ADS H1' ADS: H1* ADS HN61 ADS:1HN6 ADS HN62 ADS:2HN6 ADS HM51 ADT:1HM5 ADT HM52 ADT:2HM5 ADT HM53 ADT:3HM5 ADT H1' ADT: H1* ADT H4' ADT: H4* ADT H5'1 ADT:1H5* ADT H5'2 ADT:2H5* ADT HO5' ADT:*HO5 ADT H3' ADT: H3* ADT HN3' ADT:*HN3 ADT H9'1 ADT:1H9* ADT H9'2 ADT:2H9* ADT H9'3 ADT:3H9* ADT H2'1 ADT:1H2* ADT H2'2 ADT:2H2* ADT H1' ADU: H1* ADU H4' ADU: H4* ADU H5'1 ADU:1H5* ADU H5'2 ADU:2H5* ADU HO5' ADU:*HO5 ADU H3' ADU: H3* ADU HN3' ADU:*HN3 ADU H9'1 ADU:1H9* ADU H9'2 ADU:2H9* ADU H9'3 ADU:3H9* ADU H2' ADU: H2* ADU HO2' ADU:*HO2 ADU H5'1 ADV:1H5* ADV H5'2 ADV:2H5* ADV H'4 ADV:4H* ADV H'3 ADV:3H* ADV HO'3 ADV:3HO* ADV H'2 ADV:2H* ADV HO'2 ADV:2HO* ADV H'1 ADV:1H* ADV H61 ADV:1H6 ADV H62 ADV:2H6 ADV HX1 ADV:1HX ADV HX2 ADV:2HX ADV H5R1 ADV:1H5R ADV H5R2 ADV:2H5R ADV HR4 ADV:4HR ADV HR3 ADV:3HR ADV HOR3 ADV:3HOR ADV HR2 ADV:2HR ADV HOR2 ADV:2HOR ADV HR1 ADV:1HR ADV HOR1 ADV:1HOR ADV HOA2 ADV:2HOA ADV HOB2 ADV:2HOB ADV HOB2 ADW:2HOB ADW HOB3 ADW:3HOB ADW HOA2 ADW:2HOA ADW H5'1 ADW:1H5* ADW H5'2 ADW:2H5* ADW H4' ADW: H4* ADW H3' ADW: H3* ADW HO3' ADW:*HO3 ADW H2' ADW: H2* ADW HO2' ADW:*HO2 ADW H1' ADW: H1* ADW HN61 ADW:1HN6 ADW HN62 ADW:2HN6 ADW HOB3 ADX:3HOB ADX HOA2 ADX:2HOA ADX H5' ADX:1H5* ADX H5'' ADX:2H5* ADX H4' ADX: H4* ADX H3' ADX: H3* ADX HO3' ADX:*HO3 ADX H2' ADX: H2* ADX HO2' ADX:*HO2 ADX H1' ADX: H1* ADX HN61 ADX:1HN6 ADX HN62 ADX:2HN6 ADX HO5' ADY:*HO5 ADY H5'1 ADY:1H5* ADY H5'2 ADY:2H5* ADY H4' ADY: H4* ADY H2' ADY: H2* ADY HO2' ADY:*HO2 ADY H1' ADY: H1* ADY HN61 ADY:1HN6 ADY HN62 ADY:2HN6 ADY H6N1 ADZ:1H6N ADZ H6N2 ADZ:2H6N ADZ H1'1 ADZ:1H1* ADZ H1'2 ADZ:2H1* ADZ H1'3 ADZ:3H1* ADZ H21 AE1:1H2 AE1 H22 AE1:2H2 AE1 HN1 AE1:1HN AE1 HN2 AE1:2HN AE1 H81 AE1:1H8 AE1 H82 AE1:2H8 AE1 H51 AE1:1H5 AE1 H52 AE1:2H5 AE1 H171 AE1:1H17 AE1 H172 AE1:2H17 AE1 H173 AE1:3H17 AE1 H183 AE1:3H18 AE1 H181 AE1:1H18 AE1 H182 AE1:2H18 AE1 H11 AE2:1H1 AE2 H12 AE2:2H1 AE2 H21 AE2:1H2 AE2 H22 AE2:2H2 AE2 H41 AE2:1H4 AE2 H42 AE2:2H4 AE2 H61 AE2:1H6 AE2 H62 AE2:2H6 AE2 H71 AE2:1H7 AE2 H72 AE2:2H7 AE2 H111 AE2:1H11 AE2 H112 AE2:2H11 AE2 H121 AE2:1H12 AE2 H122 AE2:2H12 AE2 H151 AE2:1H15 AE2 H152 AE2:2H15 AE2 H161 AE2:1H16 AE2 H162 AE2:2H16 AE2 H181 AE2:1H18 AE2 H182 AE2:2H18 AE2 H183 AE2:3H18 AE2 H191 AE2:1H19 AE2 H192 AE2:2H19 AE2 H193 AE2:3H19 AE2 H1C1 AE3:1H1C AE3 H1C2 AE3:2H1C AE3 H1C3 AE3:3H1C AE3 H2C1 AE3:1H2C AE3 H2C2 AE3:2H2C AE3 H3C1 AE3:1H3C AE3 H3C2 AE3:2H3C AE3 H4C1 AE3:1H4C AE3 H4C2 AE3:2H4C AE3 H5C1 AE3:1H5C AE3 H5C2 AE3:2H5C AE3 H6C1 AE3:1H6C AE3 H6C2 AE3:2H6C AE3 H2C1 AE4:1H2C AE4 H2C2 AE4:2H2C AE4 H2C3 AE4:3H2C AE4 H3C1 AE4:1H3C AE4 H3C2 AE4:2H3C AE4 H5C1 AE4:1H5C AE4 H5C2 AE4:2H5C AE4 H6C1 AE4:1H6C AE4 H6C2 AE4:2H6C AE4 H8C1 AE4:1H8C AE4 H8C2 AE4:2H8C AE4 H9C1 AE4:1H9C AE4 H9C2 AE4:2H9C AE4 H111 AE4:1H11 AE4 H112 AE4:2H11 AE4 H121 AE4:1H12 AE4 H122 AE4:2H12 AE4 H141 AE4:1H14 AE4 H142 AE4:2H14 AE4 H151 AE4:1H15 AE4 H152 AE4:2H15 AE4 H171 AE4:1H17 AE4 H172 AE4:2H17 AE4 H181 AE4:1H18 AE4 H182 AE4:2H18 AE4 HN11 AEA:1HN1 AEA HN12 AEA:2HN1 AEA H11 AEA:1H1 AEA H31 AEA:1H3 AEA H32 AEA:2H3 AEA HN21 AEA:1HN2 AEA HN22 AEA:2HN2 AEA H41 AEA:1H4 AEA H42 AEA:2H4 AEA HO21 AEA:1HO2 AEA H141 AEC:1H14 AEC H142 AEC:2H14 AEC H151 AEC:1H15 AEC H152 AEC:2H15 AEC H111 AEC:1H11 AEC H112 AEC:2H11 AEC H5'1 AEC:1H5* AEC H5'2 AEC:2H5* AEC H4' AEC: H4* AEC H3' AEC: H3* AEC HO3' AEC:HO3* AEC H2' AEC: H2* AEC HO2' AEC:HO2* AEC H1' AEC: H1* AEC HN41 AEC:1HN4 AEC HN42 AEC:2HN4 AEC HAQ1 AEE:1HAQ AEE HAQ2 AEE:2HAQ AEE HAO1 AEE:1HAO AEE HAO2 AEE:2HAO AEE HAN1 AEE:1HAN AEE HAN2 AEE:2HAN AEE HAA1 AEE:1HAA AEE HAA2 AEE:2HAA AEE HAA3 AEE:3HAA AEE HAP1 AEE:1HAP AEE HAP2 AEE:2HAP AEE HAR1 AEE:1HAR AEE HAR2 AEE:2HAR AEE HAS1 AEE:1HAS AEE HAS2 AEE:2HAS AEE HAB1 AEE:1HAB AEE HAB2 AEE:2HAB AEE HAB3 AEE:3HAB AEE H AEI:1HN AEI H2 AEI:2HN AEI HG21 AEI:1HG AEI HG22 AEI:2HG AEI HG23 AEI:3HG AEI HE1 AEI: HOE AEI HE22 AEI:1HE2 AEI HE23 AEI:2HE2 AEI HH11 AEI:1HN1 AEI HH12 AEI:2HN1 AEI H271 AEJ:1H27 AEJ H272 AEJ:2H27 AEJ H301 AEJ:1H30 AEJ H302 AEJ:2H30 AEJ H81 AEJ:1H8 AEJ H82 AEJ:2H8 AEJ H111 AEJ:1H11 AEJ H112 AEJ:2H11 AEJ H41 AEJ:1H4 AEJ H42A AEJ:2H4 AEJ H551 AEJ:1H55 AEJ H552 AEJ:2H55 AEJ H581 AEJ:1H58 AEJ H582 AEJ:2H58 AEJ H611 AEJ:1H61 AEJ H612 AEJ:2H61 AEJ H641 AEJ:1H64 AEJ H642 AEJ:2H64 AEJ H2C1 AEM:1H2C AEM H2C2 AEM:2H2C AEM H2N1 AEM:1H2N AEM H2N2 AEM:2H2N AEM H1'1 AEN:1H1' AEN H1'2 AEN:2H1' AEN H1'3 AEN:3H1' AEN HN'3 AEN:3HN' AEN H4'1 AEN:1H4' AEN H4'2 AEN:2H4' AEN H5'1 AEN:1H5' AEN H5'2 AEN:2H5' AEN HN'6 AEN:6HN' AEN HOS3 AEN:3HOS AEN HN1 AEP:1HN AEP HN2 AEP:2HN AEP H21 AEP:1H2 AEP H22 AEP:2H2 AEP H41 AEP:1H4 AEP H42 AEP:2H4 AEP H51 AEP:1H5 AEP H52 AEP:2H5 AEP H53 AEP:3H5 AEP HOP2 AEP:2HOP AEP H71 AES:1H7 AES H72 AES:2H7 AES H81 AES:1H8 AES H82 AES:2H8 AES HN81 AES:1HN8 AES HN82 AES:2HN8 AES HOP2 AET:2HOP AET HOP3 AET:3HOP AET H5' AET:1H5* AET H5'' AET:2H5* AET H4' AET: H4* AET H3' AET: H3* AET HO3' AET:*HO3 AET H2' AET: H2* AET HO2' AET:*HO2 AET H1' AET: H1* AET HM61 AET:1HM6 AET HM62 AET:2HM6 AET HM63 AET:3HM6 AET HO4 AET:4HO AET H151 AET:1H15 AET H152 AET:2H15 AET H153 AET:3H15 AET HN1 AF:1HN AF HN2 AF:2HN AF H91 AF:1H9 AF H92 AF:2H9 AF H61 AF1:1H6 AF1 H62 AF1:2H6 AF1 H63 AF1:3H6 AF1 H7H1 AF1:1H7H AF1 H7H2 AF1:2H7H AF1 HO2' AF1:'HO2 AF1 HO3' AF1:'HO3 AF1 HO4' AF1:'HO4 AF1 H32 AF4:2H3 AF4 H31 AF4:1H3 AF4 H33 AF4:3H3 AF4 H42 AF4:2H4 AF4 H43 AF4:3H4 AF4 H41 AF4:1H4 AF4 H51 AF4:1H5 AF4 H52 AF4:2H5 AF4 H53 AF4:3H5 AF4 H AFA: HN AFA HB2 AFA:1HB AFA HB3 AFA:2HB AFA HD21 AFA:1HND AFA HD22 AFA:2HND AFA H61 AFA:1H6 AFA H62 AFA:2H6 AFA H81 AFA:1H8 AFA H82 AFA:2H8 AFA H83 AFA:3H8 AFA H91 AFA:1H9 AFA H92 AFA:2H9 AFA H93 AFA:3H9 AFA H81 AFB:1H8 AFB H82 AFB:2H8 AFB H61 AFB:1H6 AFB H62 AFB:2H6 AFB H101 AFB:1H10 AFB H111 AFB:1H11 AFB H121 AFB:1H12 AFB H122 AFB:2H12 AFB H131 AFB:1H13 AFB H132 AFB:2H13 AFB H141 AFB:1H14 AFB H142 AFB:2H14 AFB H161 AFB:1H16 AFB H162 AFB:2H16 AFB H163 AFB:3H16 AFB H21 AFB:1H2 AFB H31 AFB:1H3 AFB HG1 AFC:1HG AFC HG2 AFC:2HG AFC HB2 AFC:2HB AFC HB3 AFC:3HB AFC HD1 AFC:1HD AFC HD2 AFC:2HD AFC HE1 AFC:1HE AFC HE2 AFC:2HE AFC HF1 AFC:1HF AFC HF2 AFC:2HF AFC HI1 AFC:1HI AFC HI2 AFC:2HI AFC HJ1 AFC:1HJ AFC HJ2 AFC:2HJ AFC HK1 AFC:1HK AFC HK2 AFC:2HK AFC HL1 AFC:1HL AFC HL2 AFC:2HL AFC HN21 AFC:1HN2 AFC HN22 AFC:2HN2 AFC HN23 AFC:3HN2 AFC HN11 AFC:1HN1 AFC HN12 AFC:2HN1 AFC HO11 AFC:1HO1 AFC HO12 AFC:2HO1 AFC HO13 AFC:3HO1 AFC HOP3 AFG:3HOP AFG HOP2 AFG:2HOP AFG HN21 AFG:1HN2 AFG HN22 AFG:2HN2 AFG H371 AFG:1H37 AFG H372 AFG:2H37 AFG H2' AFG:1H2* AFG H2'' AFG:2H2* AFG H5' AFG:1H5* AFG H5'' AFG:2H5* AFG H4' AFG: H4* AFG H1' AFG: H1* AFG H3' AFG: H3* AFG HO3' AFG:H3T AFG HN61 AFH:1HN6 AFH HN62 AFH:2HN6 AFH H1D AFH: H1* AFH H2D AFH: H2* AFH HO2' AFH:HO2* AFH H3D AFH: H3* AFH H4D AFH: H4* AFH HO3A AFH:HO3* AFH H5'1 AFH:1H5* AFH H5'2 AFH:2H5* AFH H7'1 AFH:1H7' AFH H7'2 AFH:2H7' AFH H111 AFI:1H11 AFI H112 AFI:2H11 AFI H121 AFI:1H12 AFI H122 AFI:2H12 AFI H141 AFI:1H14 AFI H142 AFI:2H14 AFI H151 AFI:1H15 AFI H152 AFI:2H15 AFI HA1 AFL:1HA AFL HB2 AFL:2HB AFL HC3 AFL:3HC AFL H8A2 AFN:2H8A AFN HM1 AFN:1HM AFN HM2 AFN:2HM AFN HM3 AFN:3HM AFN H31 AFN:1H3 AFN H32 AFN:2H3 AFN H2A1 AFN:1H2A AFN H2A2 AFN:2H2A AFN HOP2 AFP:2HOP AFP HOP3 AFP:3HOP AFP H11 AFP:1H1 AFP H12 AFP:2H1 AFP H61 AFP:1H6 AFP H62 AFP:2H6 AFP HOP5 AFP:5HOP AFP HOP6 AFP:6HOP AFP H31 AFZ:1H3 AFZ H33 AFZ:3H3 AFZ H32 AFZ:2H3 AFZ H41 AFZ:1H4 AFZ HN1 AG2:1HN AG2 HN2 AG2:2HN AG2 HA1 AG2:1HA AG2 HA2 AG2:2HA AG2 HB1 AG2:1HB AG2 HB2 AG2:2HB AG2 HG1 AG2:1HG AG2 HG2 AG2:2HG AG2 HD1 AG2:1HD AG2 HD2 AG2:2HD AG2 HE1 AG2:1HE AG2 HH11 AG2:1HH1 AG2 HH21 AG2:1HH2 AG2 HH22 AG2:2HH2 AG2 HA1 AG3:1HA AG3 HA2 AG3:2HA AG3 HB1 AG3:1HB AG3 HB2 AG3:2HB AG3 HG1 AG3:1HG AG3 HG2 AG3:2HG AG3 HD1 AG3:1HD AG3 HD2 AG3:2HD AG3 HH11 AG3:1HH1 AG3 HH12 AG3:2HH1 AG3 H71 AG3:1H7 AG3 H72 AG3:2H7 AG3 H81 AG3:1H8 AG3 H82 AG3:2H8 AG3 H91 AG3:1H9 AG3 H92 AG3:2H9 AG3 H101 AG3:1H10 AG3 H102 AG3:2H10 AG3 H191 AG7:1H19 AG7 H192 AG7:2H19 AG7 H11 AGA:1H1 AGA H12 AGA:2H1 AGA H31 AGA:1H3 AGA H32 AGA:2H3 AGA H41 AGA:1H4 AGA H42 AGA:2H4 AGA H61 AGA:1H6 AGA H62 AGA:2H6 AGA H81 AGA:1H8 AGA H82 AGA:2H8 AGA H91 AGA:1H9 AGA H92 AGA:2H9 AGA H101 AGA:1H10 AGA H102 AGA:2H10 AGA H111 AGA:1H11 AGA H112 AGA:2H11 AGA H113 AGA:3H11 AGA H131 AGA:1H13 AGA H132 AGA:2H13 AGA H141 AGA:1H14 AGA H142 AGA:2H14 AGA H151 AGA:1H15 AGA H152 AGA:2H15 AGA H161 AGA:1H16 AGA H162 AGA:2H16 AGA H171 AGA:1H17 AGA H172 AGA:2H17 AGA H181 AGA:1H18 AGA H182 AGA:2H18 AGA H191 AGA:1H19 AGA H192 AGA:2H19 AGA H193 AGA:3H19 AGA H21 AGB:1H2 AGB H22 AGB:2H2 AGB H31 AGB:1H3 AGB H32 AGB:2H3 AGB H41 AGB:1H4 AGB H42 AGB:2H4 AGB H51 AGB:1H5 AGB H52 AGB:2H5 AGB H81 AGB:1H8 AGB H82 AGB:2H8 AGB H91 AGB:1H9 AGB H92 AGB:2H9 AGB H111 AGB:1H11 AGB H112 AGB:2H11 AGB HN51 AGB:1HN5 AGB HN52 AGB:2HN5 AGB H61 AGC:1H6 AGC H62 AGC:2H6 AGC HB11 AGF:1HB1 AGF HB12 AGF:2HB1 AGF HD11 AGF:1HD1 AGF HD12 AGF:2HD1 AGF HE11 AGF:1HE1 AGF HE12 AGF:2HE1 AGF HB21 AGF:1HB2 AGF HB22 AGF:2HB2 AGF HB23 AGF:3HB2 AGF HA31 AGF:1HA3 AGF HA32 AGF:2HA3 AGF HOP2 AGF:2HOP AGF HB41 AGF:1HB4 AGF HB42 AGF:2HB4 AGF HD41 AGF:1HD4 AGF HD42 AGF:2HD4 AGF HE41 AGF:1HE4 AGF HE42 AGF:2HE4 AGF H11 AGG:1H1 AGG H12 AGG:2H1 AGG H13 AGG:3H1 AGG H21 AGG:1H2 AGG H22 AGG:2H2 AGG H31 AGG:1H3 AGG H32 AGG:2H3 AGG H41 AGG:1H4 AGG H42 AGG:2H4 AGG HB1 AGG:1HB AGG HB2 AGG:2HB AGG H111 AGG:1H11 AGG H112 AGG:2H11 AGG H121 AGG:1H12 AGG H122 AGG:2H12 AGG H131 AGG:1H13 AGG H132 AGG:2H13 AGG H141 AGG:1H14 AGG H142 AGG:2H14 AGG H161 AGG:1H16 AGG H162 AGG:2H16 AGG H171 AGG:1H17 AGG H172 AGG:2H17 AGG H181 AGG:1H18 AGG H182 AGG:2H18 AGG H191 AGG:1H19 AGG H192 AGG:2H19 AGG H11 AGH:1H1 AGH H12 AGH:2H1 AGH H51 AGH:1H5 AGH H52 AGH:2H5 AGH H61 AGH:1H6 AGH H62 AGH:2H6 AGH H181 AGH:1H18 AGH H182 AGH:2H18 AGH H183 AGH:3H18 AGH H171 AGH:1H17 AGH H172 AGH:2H17 AGH H161 AGH:1H16 AGH H162 AGH:2H16 AGH H151 AGH:1H15 AGH H152 AGH:2H15 AGH H141 AGH:1H14 AGH H142 AGH:2H14 AGH H131 AGH:1H13 AGH H132 AGH:2H13 AGH H121 AGH:1H12 AGH H122 AGH:2H12 AGH H111 AGH:1H11 AGH H112 AGH:2H11 AGH H101 AGH:1H10 AGH H102 AGH:2H10 AGH H91 AGH:1H9 AGH H92 AGH:2H9 AGH H81 AGH:1H8 AGH H82 AGH:2H8 AGH H71 AGH:1H7 AGH H72 AGH:2H7 AGH H6A1 AGH:1H6A AGH H6A2 AGH:2H6A AGH HAB1 AGH:1HAB AGH HAB2 AGH:2HAB AGH HAC1 AGH:1HAC AGH HAC2 AGH:2HAC AGH HAD1 AGH:1HAD AGH HAD2 AGH:2HAD AGH HAE1 AGH:1HAE AGH HAE2 AGH:2HAE AGH HAF1 AGH:1HAF AGH HAF2 AGH:2HAF AGH HAG1 AGH:1HAG AGH HAG2 AGH:2HAG AGH HAH1 AGH:1HAH AGH HAH2 AGH:2HAH AGH HAI1 AGH:1HAI AGH HAI2 AGH:2HAI AGH HAJ1 AGH:1HAJ AGH HAJ2 AGH:2HAJ AGH HAK1 AGH:1HAK AGH HAK2 AGH:2HAK AGH HAL1 AGH:1HAL AGH HAL2 AGH:2HAL AGH HAM1 AGH:1HAM AGH HAM2 AGH:2HAM AGH HAN1 AGH:1HAN AGH HAN2 AGH:2HAN AGH HAO1 AGH:1HAO AGH HAO2 AGH:2HAO AGH HAP1 AGH:1HAP AGH HAP2 AGH:2HAP AGH HAQ1 AGH:1HAQ AGH HAQ2 AGH:2HAQ AGH HAR1 AGH:1HAR AGH HAR2 AGH:2HAR AGH HAS1 AGH:1HAS AGH HAS2 AGH:2HAS AGH HAT1 AGH:1HAT AGH HAT2 AGH:2HAT AGH HAU1 AGH:1HAU AGH HAU2 AGH:2HAU AGH HAV1 AGH:1HAV AGH HAV2 AGH:2HAV AGH HAW1 AGH:1HAW AGH HAW2 AGH:2HAW AGH HAX1 AGH:1HAX AGH HAX2 AGH:2HAX AGH HAY1 AGH:1HAY AGH HAY2 AGH:2HAY AGH HAZ1 AGH:1HAZ AGH HAZ2 AGH:2HAZ AGH HAZ3 AGH:3HAZ AGH H61 AGL:1H6 AGL H62 AGL:2H6 AGL H63 AGL:3H6 AGL HN41 AGL:1HN4 AGL HN42 AGL:2HN4 AGL H AGM:1HN AGM H2 AGM:2HN AGM HB2 AGM:1HB AGM HB3 AGM:2HB AGM HG2 AGM:1HG AGM HG3 AGM:2HG AGM HE21 AGM:1HE2 AGM HE22 AGM:2HE2 AGM HE23 AGM:3HE2 AGM HH11 AGM:1HH1 AGM HH12 AGM:2HH1 AGM HH21 AGM:1HH2 AGM HH22 AGM:2HH2 AGM HOG2 AGN:2HOG AGN HOG3 AGN:3HOG AGN HNB3 AGN:3HNB AGN HOB2 AGN:2HOB AGN HOA2 AGN:2HOA AGN H5'2 AGN:2H5* AGN H5'1 AGN:1H5* AGN H4B AGN: H4* AGN H3B AGN: H3* AGN H2'1 AGN:1H2* AGN H2'2 AGN:2H2* AGN H1' AGN: H1* AGN HN2' AGN:'HN2 AGN HM'1 AGN:1HM' AGN HM'2 AGN:2HM' AGN HM'3 AGN:3HM' AGN HN21 AGN:1HN2 AGN HN22 AGN:2HN2 AGN H11 AGP:1H1 AGP H12 AGP:2H1 AGP HN21 AGP:1HN2 AGP HN22 AGP:2HN2 AGP H61 AGP:1H6 AGP H62 AGP:2H6 AGP HOP2 AGP:2HOP AGP HOP3 AGP:3HOP AGP HOG2 AGS:2HOG AGS HOB2 AGS:2HOB AGS HOA2 AGS:2HOA AGS H5'1 AGS:1H5* AGS H5'2 AGS:2H5* AGS H4' AGS: H4* AGS H3' AGS: H3* AGS HO3' AGS:*HO3 AGS H2' AGS: H2* AGS HO2' AGS:*HO2 AGS H1' AGS: H1* AGS HN61 AGS:1HN6 AGS HN62 AGS:2HN6 AGS HN1 AGT:1HN AGT HN2 AGT:2HN AGT HH21 AGT:1HH2 AGT HH22 AGT:2HH2 AGT HDC1 AGT:1HDC AGT HDC2 AGT:2HDC AGT HGC1 AGT:1HGC AGT HGC2 AGT:2HGC AGT HKC1 AGT:1HKC AGT HKC2 AGT:2HKC AGT HJC1 AGT:1HJC AGT HJC2 AGT:2HJC AGT HBN1 AGT:1HBN AGT HBN2 AGT:2HBN AGT HB2 AGT:2HB AGT HN21 AGU:1HN2 AGU HN22 AGU:2HN2 AGU HN41 AGU:1HN4 AGU HN42 AGU:2HN4 AGU H81 AH0:1H8 AH0 H82 AH0:2H8 AH0 H83 AH0:3H8 AH0 H61 AH0:1H6 AH0 H62 AH0:2H6 AH0 HB1 AH0:1HB AH0 HB2 AH0:2HB AH0 HB3 AH0:3HB AH0 H081 AH1:1H08 AH1 H082 AH1:2H08 AH1 H161 AH1:1H16 AH1 H162 AH1:2H16 AH1 H231 AH1:1H23 AH1 H232 AH1:2H23 AH1 H331 AH1:1H33 AH1 H332 AH1:2H33 AH1 H21 AHA:1H2 AHA H22 AHA:2H2 AHA H31 AHA:1H3 AHA H32 AHA:2H3 AHA H41 AHA:1H4 AHA H42 AHA:2H4 AHA H51 AHA:1H5 AHA H52 AHA:2H5 AHA H61 AHA:1H6 AHA H62 AHA:2H6 AHA HN1 AHA:1HN AHA HN2 AHA:2HN AHA H AHB:1HN AHB H2 AHB:2HN AHB HD21 AHB:1HND AHB HD22 AHB:2HND AHB HA1 AHC:1HA AHC HA2 AHC:2HA AHC HB1 AHC:1HB AHC HB2 AHC:2HB AHC HNH1 AHC:1HNH AHC HNH2 AHC:2HNH AHC H21 AHD:1H2 AHD H22 AHD:2H2 AHD H31 AHD:1H3 AHD H32 AHD:2H3 AHD H71 AHD:1H7 AHD H72 AHD:2H7 AHD HN41 AHD:1HN4 AHD HN42 AHD:2HN4 AHD HN11 AHE:1HN1 AHE HN12 AHE:2HN1 AHE HB11 AHE:1HB1 AHE HB12 AHE:2HB1 AHE HG11 AHE:1HG1 AHE HG12 AHE:2HG1 AHE HB21 AHE:1HB2 AHE HB22 AHE:2HB2 AHE HD21 AHE:1HD2 AHE HD22 AHE:2HD2 AHE HA31 AHE:1HA3 AHE HA32 AHE:2HA3 AHE H082 AHF:2H08 AHF H081 AHF:1H08 AHF H231 AHF:1H23 AHF H232 AHF:2H23 AHF H321 AHF:1H32 AHF H322 AHF:2H32 AHF H411 AHF:1H41 AHF H412 AHF:2H41 AHF H451 AHF:1H45 AHF H452 AHF:2H45 AHF H453 AHF:3H45 AHF H461 AHF:1H46 AHF H462 AHF:2H46 AHF HOP2 AHG:2HOP AHG HOP3 AHG:3HOP AHG H11 AHG:1H1 AHG H12 AHG:2H1 AHG H61 AHG:1H6 AHG H62 AHG:2H6 AHG HOP5 AHG:5HOP AHG HOP6 AHG:6HOP AHG HN1 AHH:1HN AHH HN2 AHH:2HN AHH HCA1 AHH:1HCA AHH HCB1 AHH:1HCB AHH HCB2 AHH:2HCB AHH HCG1 AHH:1HCG AHH HCG2 AHH:2HCG AHH HO11 AHH:1HO1 AHH HCD1 AHH:1HCD AHH HCD2 AHH:2HCD AHH HCE1 AHH:1HCE AHH HCE2 AHH:2HCE AHH HCE3 AHH:3HCE AHH HC11 AHH:1HC1 AHH HO31 AHH:1HO3 AHH H101 AHI:1H10 AHI H102 AHI:2H10 AHI H071 AHI:1H07 AHI H072 AHI:2H07 AHI H061 AHI:1H06 AHI H062 AHI:2H06 AHI H031 AHI:1H03 AHI H032 AHI:2H03 AHI H021 AHI:1H02 AHI H022 AHI:2H02 AHI H023 AHI:3H02 AHI HN11 AHL:1HN1 AHL HN12 AHL:2HN1 AHL HB1 AHL:1HB AHL HB2 AHL:2HB AHL HG1 AHL:1HG AHL HG2 AHL:2HG AHL HD1 AHL:1HD AHL HD2 AHL:2HD AHL HH11 AHL:1HH1 AHL HH12 AHL:2HH1 AHL HOP2 AHM:2HOP AHM HOP3 AHM:3HOP AHM H11 AHM:1H1 AHM H12 AHM:2H1 AHM H61 AHM:1H6 AHM H62 AHM:2H6 AHM HOP5 AHM:5HOP AHM HOP6 AHM:6HOP AHM HT1 AHN:1HT AHN HT2 AHN:2HT AHN HT3 AHN:3HT AHN HA1 AHN:1HA AHN HA2 AHN:2HA AHN HB1 AHN:1HB AHN HB2 AHN:2HB AHN HC21 AHO:1HC2 AHO HC31 AHO:1HC3 AHO HC32 AHO:2HC3 AHO HC41 AHO:1HC4 AHO HC42 AHO:2HC4 AHO HC51 AHO:1HC5 AHO HC52 AHO:2HC5 AHO HC71 AHO:1HC7 AHO HC72 AHO:2HC7 AHO HC73 AHO:3HC7 AHO HN11 AHO:1HN1 AHO HN12 AHO:2HN1 AHO HO21 AHO:1HO2 AHO H AHP:1HN AHP H2 AHP:2HN AHP HB2 AHP:1HB AHP HB3 AHP:2HB AHP HG2 AHP:1HG AHP HG3 AHP:2HG AHP HD2 AHP:1HD AHP HD3 AHP:2HD AHP HE2 AHP:1HE AHP HE3 AHP:2HE AHP HZ1 AHP:1HZ AHP HZ2 AHP:2HZ AHP HZ3 AHP:3HZ AHP H5' AHR: H5* AHR H5'1 AHR:1H5* AHR H5'2 AHR:2H5* AHR H4' AHR: H4* AHR H3' AHR: H3* AHR H2' AHR: H2* AHR H1' AHR: H1* AHR H AHS:1HN AHS H2 AHS:2HN AHS HB2 AHS:1HB AHS HB3 AHS:2HB AHS HD12 AHS:1HD1 AHS HD13 AHS:2HD1 AHS HD23 AHS:1HD2 AHS HD22 AHS:2HD2 AHS HE12 AHS:1HE1 AHS HE13 AHS:2HE1 AHS HE23 AHS:1HE2 AHS HE22 AHS:2HE2 AHS HZ2 AHS:1HZ AHS HZ3 AHS:2HZ AHS HM1 AHS:1HM AHS HM2 AHS:2HM AHS HB21 AHS:1HB2 AHS HB22 AHS:2HB2 AHS HD31 AHS:1HD3 AHS HD32 AHS:2HD3 AHS HD33 AHS:3HD3 AHS HD41 AHS:1HD4 AHS HD42 AHS:2HD4 AHS HD43 AHS:3HD4 AHS H AHT:1HN AHT H2 AHT:2HN AHT HC1 AHT:1HC AHT HC2 AHT:2HC AHT HB2 AHT:1HB AHT HB3 AHT:2HB AHT HH AHT: HO AHT H11 AHT:1H1 AHT H12 AHT:2H1 AHT HC22 AHT:H2 AHT HN21 AHT:1HN2 AHT HN22 AHT:2HN2 AHT H4' AHU: H4* AHU H7'1 AHU:1H7* AHU H7'2 AHU:2H7* AHU HO'7 AHU:7HO* AHU H6'1 AHU:1H6* AHU H6'2 AHU:2H6* AHU H1' AHU: H1* AHU H2'1 AHU:1H2* AHU H2'2 AHU:2H2* AHU H3' AHU: H3* AHU HO'3 AHU:3HO* AHU HN11 AHX:1HN1 AHX HN12 AHX:2HN1 AHX HB1 AHX:1HB AHX HB2 AHX:2HB AHX HOA2 AHX:2HOA AHX H5'1 AHX:1H5* AHX H5'2 AHX:2H5* AHX H4' AHX: H4* AHX H3' AHX: H3* AHX HO3' AHX:*HO3 AHX H2' AHX: H2* AHX HO2' AHX:*HO2 AHX H1' AHX: H1* AHX HN61 AHX:1HN6 AHX HN62 AHX:2HN6 AHX H101 AHY:1H10 AHY H102 AHY:2H10 AHY H103 AHY:3H10 AHY H9C1 AHY:1H9C AHY H9C2 AHY:2H9C AHY H8C1 AHY:1H8C AHY H8C2 AHY:2H8C AHY H7C1 AHY:1H7C AHY H7C2 AHY:2H7C AHY H6C1 AHY:1H6C AHY H6C2 AHY:2H6C AHY H5C1 AHY:1H5C AHY H5C2 AHY:2H5C AHY H4C1 AHY:1H4C AHY H4C2 AHY:2H4C AHY H3N1 AHY:1H3N AHY H3N2 AHY:2H3N AHY H2' AHZ: H2* AHZ H3' AHZ: H3* AHZ H1' AHZ: H1* AHZ HN61 AHZ:1HN6 AHZ HN62 AHZ:2HN6 AHZ H4' AHZ: H4* AHZ H5'1 AHZ:1H5* AHZ H5'2 AHZ:2H5* AHZ H7T1 AHZ:1H7T AHZ H7T2 AHZ:2H7T AHZ H6T1 AHZ:1H6T AHZ H6T2 AHZ:2H6T AHZ H1M1 AHZ:1H1M AHZ H1M2 AHZ:2H1M AHZ H1M3 AHZ:3H1M AHZ H111 AI:1H11 AI H112 AI:2H11 AI H113 AI:3H11 AI H81 AI:1H8 AI H82 AI:2H8 AI H83 AI:3H8 AI H121 AI:1H12 AI H122 AI:2H12 AI H123 AI:3H12 AI H21A AI:1H2 AI H22A AI:2H2 AI H151 AI:1H15 AI H152 AI:2H15 AI H251 AI:1H25 AI H252 AI:2H25 AI H271 AI:1H27 AI H272 AI:2H27 AI H281 AI:1H28 AI H282 AI:2H28 AI H291 AI:1H29 AI H292 AI:2H29 AI H301 AI:1H30 AI H302 AI:2H30 AI H311 AI:1H31 AI H312 AI:2H31 AI H351 AI:1H35 AI H352 AI:2H35 AI H353 AI:3H35 AI H361 AI:1H36 AI H362 AI:2H36 AI H363 AI:3H36 AI H381 AI:1H38 AI H382 AI:2H38 AI H383 AI:3H38 AI H391 AI:1H39 AI H392 AI:2H39 AI HC61 AI1:1HC6 AI1 HC62 AI1:2HC6 AI1 HN'1 AI1:1HN' AI1 H1'1 AI1:1H1* AI1 H1'2 AI1:2H1* AI1 H3B AI1: H3* AI1 H4B AI1: H4* AI1 H5' AI1: H5* AI1 H6B AI1: H6* AI1 H7' AI1: H7* AI1 H111 AI2:1H11 AI2 H112 AI2:2H11 AI2 H113 AI2:3H11 AI2 H61 AI2:1H6 AI2 H62 AI2:2H6 AI2 H221 AI3:1H22 AI3 H222 AI3:2H22 AI3 H391 AI3:1H39 AI3 H392 AI3:2H39 AI3 H471 AI3:1H47 AI3 H472 AI3:2H47 AI3 H473 AI3:3H47 AI3 H511 AI3:1H51 AI3 H512 AI3:2H51 AI3 H513 AI3:3H51 AI3 H41 AI7:1H4 AI7 H42 AI7:2H4 AI7 H61 AI7:1H6 AI7 H62 AI7:2H6 AI7 H81 AI7:1H8 AI7 H82 AI7:2H8 AI7 H91 AI7:1H9 AI7 H92 AI7:2H9 AI7 H93 AI7:3H9 AI7 H101 AI7:1H10 AI7 H102 AI7:2H10 AI7 H121 AI7:1H12 AI7 H122 AI7:2H12 AI7 H131 AI7:1H13 AI7 H132 AI7:2H13 AI7 H51 AIA:1H5 AIA H52 AIA:2H5 AIA H71 AIA:1H7 AIA H72 AIA:2H7 AIA H81 AIA:1H8 AIA H82 AIA:2H8 AIA H121 AIA:1H12 AIA H122 AIA:2H12 AIA H141 AIA:1H14 AIA H142 AIA:2H14 AIA H161 AIA:1H16 AIA H162 AIA:2H16 AIA H171 AIA:1H17 AIA H172 AIA:2H17 AIA H181 AIA:1H18 AIA H182 AIA:2H18 AIA H191 AIA:1H19 AIA H192 AIA:2H19 AIA H AIB:1HN AIB H2 AIB:2HN AIB HB11 AIB:1HB1 AIB HB12 AIB:2HB1 AIB HB13 AIB:3HB1 AIB HB21 AIB:1HB2 AIB HB22 AIB:2HB2 AIB HB23 AIB:3HB2 AIB HC8 AIC:8HC AIC HN1 AIC:1HN AIC HC4 AIC:4HC AIC HC1 AIC:1HC AIC HC2 AIC:2HC AIC HC3 AIC:3HC AIC HC7 AIC:7HC AIC HC9 AIC:9HC AIC HC01 AIC:1HC0 AIC HC11 AIC:1HC1 AIC HC21 AIC:1HC2 AIC HC31 AIC:1HC3 AIC HC41 AIC:1HC4 AIC H161 AIC:1H16 AIC H162 AIC:2H16 AIC H163 AIC:3H16 AIC HN21 AIC:1HN2 AIC HN22 AIC:2HN2 AIC HO2 AIC:2HO AIC H61 AIG:1H6 AIG H62 AIG:2H6 AIG HN31 AIG:1HN3 AIG HN32 AIG:2HN3 AIG H1'1 AIG:1H1' AIG H1'2 AIG:2H1' AIG H2'1 AIG:1H2' AIG H2'2 AIG:2H2' AIG H3'1 AIG:1H3' AIG H3'2 AIG:2H3' AIG H4'1 AIG:1H4' AIG H4'2 AIG:2H4' AIG H5'1 AIG:1H5' AIG H5'2 AIG:2H5' AIG H6'1 AIG:1H6' AIG H6'2 AIG:2H6' AIG H6'3 AIG:3H6' AIG H261 AIH:1H26 AIH H262 AIH:2H26 AIH H271 AIH:1H27 AIH H272 AIH:2H27 AIH H291 AIH:1H29 AIH H292 AIH:2H29 AIH H311 AIH:1H31 AIH H312 AIH:2H31 AIH H313 AIH:3H31 AIH H331 AIH:1H33 AIH H332 AIH:2H33 AIH H333 AIH:3H33 AIH H341 AIH:1H34 AIH H342 AIH:2H34 AIH H261 AIJ:1H26 AIJ H262 AIJ:2H26 AIJ H281 AIJ:1H28 AIJ H282 AIJ:2H28 AIJ H283 AIJ:3H28 AIJ H301 AIJ:1H30 AIJ H302 AIJ:2H30 AIJ H311 AIJ:1H31 AIJ H312 AIJ:2H31 AIJ H321 AIJ:1H32 AIJ H322 AIJ:2H32 AIJ H331 AIJ:1H33 AIJ H332 AIJ:2H33 AIJ H51 AIK:1H5 AIK H52 AIK:2H5 AIK H53 AIK:3H5 AIK H121 AIK:1H12 AIK H122 AIK:2H12 AIK H123 AIK:3H12 AIK H271 AIK:1H27 AIK H272 AIK:2H27 AIK H281 AIK:1H28 AIK H282 AIK:2H28 AIK H291 AIK:1H29 AIK H292 AIK:2H29 AIK H321 AIK:1H32 AIK H322 AIK:2H32 AIK H323 AIK:3H32 AIK H311 AIK:1H31 AIK H312 AIK:2H31 AIK H313 AIK:3H31 AIK H231 AIK:1H23 AIK H232 AIK:2H23 AIK H233 AIK:3H23 AIK H241 AIK:1H24 AIK H242 AIK:2H24 AIK H243 AIK:3H24 AIK H11 AIL:1H1 AIL H12 AIL:2H1 AIL H41 AIL:1H4 AIL H42 AIL:2H4 AIL H61 AIL:1H6 AIL H62 AIL:2H6 AIL H101 AIL:1H10 AIL H102 AIL:2H10 AIL H111 AIL:1H11 AIL H112 AIL:2H11 AIL H131 AIL:1H13 AIL H132 AIL:2H13 AIL HC11 AIM:1HC1 AIM HC12 AIM:2HC1 AIM HC21 AIM:1HC2 AIM HC31 AIM:1HC3 AIM HC32 AIM:2HC3 AIM HC41 AIM:1HC4 AIM HC42 AIM:2HC4 AIM HC61 AIM:1HC6 AIM HC62 AIM:2HC6 AIM HN11 AIM:1HN1 AIM HN12 AIM:2HN1 AIM H261 AIM:1H26 AIM HN21 AIM:1HN2 AIM HN22 AIM:2HN2 AIM H91 AIN:1H9 AIN H92 AIN:2H9 AIN H93 AIN:3H9 AIN H71 AIO:1H7 AIO H72 AIO:2H7 AIO H81 AIO:1H8 AIO H82 AIO:2H8 AIO H83 AIO:3H8 AIO H61 AIO:1H6 AIO H62 AIO:2H6 AIO H63 AIO:3H6 AIO H21 AIO:1H2 AIO H22 AIO:2H2 AIO H23 AIO:3H2 AIO HN11 AIO:1HN1 AIO HN12 AIO:2HN1 AIO H131 AIO:1H13 AIO H132 AIO:2H13 AIO H121 AIO:1H12 AIO H122 AIO:2H12 AIO H111 AIO:1H11 AIO H112 AIO:2H11 AIO H51 AIP:1H5 AIP H52 AIP:2H5 AIP H61 AIP:1H6 AIP H62 AIP:2H6 AIP H71 AIP:1H7 AIP H72 AIP:2H7 AIP H131 AIP:1H13 AIP H132 AIP:2H13 AIP H133 AIP:3H13 AIP H141 AIP:1H14 AIP H142 AIP:2H14 AIP H143 AIP:3H14 AIP H181 AIP:1H18 AIP H182 AIP:2H18 AIP H191 AIP:1H19 AIP H192 AIP:2H19 AIP H201 AIP:1H20 AIP H202 AIP:2H20 AIP H251 AIP:1H25 AIP H252 AIP:2H25 AIP HN41 AIP:1HN4 AIP HN42 AIP:2HN4 AIP HN91 AIP:1HN9 AIP HN92 AIP:2HN9 AIP H11 AIQ:1H1 AIQ H91 AIQ:1H9 AIQ H92 AIQ:2H9 AIQ HN21 AIQ:1HN2 AIQ HN22 AIQ:2HN2 AIQ HN11 AIQ:1HN1 AIQ H51 AIQ:1H5 AIQ HN41 AIQ:1HN4 AIQ HN42 AIQ:2HN4 AIQ HN61 AIQ:1HN6 AIQ H111 AIQ:1H11 AIQ H121 AIQ:1H12 AIQ HN61 AIR:1HN6 AIR HN62 AIR:2HN6 AIR HO'2 AIR:2HO' AIR HO'3 AIR:3HO' AIR HC51 AIR:1HC5 AIR HC52 AIR:2HC5 AIR H2' AIS: H2* AIS H3' AIS: H3* AIS H4' AIS: H4* AIS H5'1 AIS:1H5* AIS H5'2 AIS:2H5* AIS H5' AIS: H5* AIS H1' AIS: H1* AIS HN61 AIS:1HN6 AIS HN62 AIS:2HN6 AIS H261 AIT:1H26 AIT H262 AIT:2H26 AIT H281 AIT:1H28 AIT H282 AIT:2H28 AIT H283 AIT:3H28 AIT H301 AIT:1H30 AIT H302 AIT:2H30 AIT H311 AIT:1H31 AIT H312 AIT:2H31 AIT H321 AIT:1H32 AIT H322 AIT:2H32 AIT H331 AIT:1H33 AIT H332 AIT:2H33 AIT H261 AIU:1H26 AIU H262 AIU:2H26 AIU H271 AIU:1H27 AIU H272 AIU:2H27 AIU H291 AIU:1H29 AIU H292 AIU:2H29 AIU H311 AIU:1H31 AIU H312 AIU:2H31 AIU H313 AIU:3H31 AIU H331 AIU:1H33 AIU H332 AIU:2H33 AIU H333 AIU:3H33 AIU H341 AIU:1H34 AIU H342 AIU:2H34 AIU H221 AIZ:1H22 AIZ H222 AIZ:2H22 AIZ H261 AIZ:1H26 AIZ H262 AIZ:2H26 AIZ H301 AIZ:1H30 AIZ H302 AIZ:2H30 AIZ H331 AIZ:1H33 AIZ H332 AIZ:2H33 AIZ H333 AIZ:3H33 AIZ H341 AIZ:1H34 AIZ H342 AIZ:2H34 AIZ H343 AIZ:3H34 AIZ H8B1 AJ3:1H8B AJ3 H8B2 AJ3:2H8B AJ3 H101 AJ3:1H10 AJ3 H102 AJ3:2H10 AJ3 H121 AJ3:1H12 AJ3 H122 AJ3:2H12 AJ3 H91 AJA:1H9 AJA H92 AJA:2H9 AJA H251 AJA:1H25 AJA H252 AJA:2H25 AJA H253 AJA:3H25 AJA H201 AJA:1H20 AJA H202 AJA:2H20 AJA H211 AJA:1H21 AJA H212 AJA:2H21 AJA H221 AJA:1H22 AJA H222 AJA:2H22 AJA H231 AJA:1H23 AJA H232 AJA:2H23 AJA H281 AJA:1H28 AJA H282 AJA:2H28 AJA H291 AJA:1H29 AJA H292 AJA:2H29 AJA H293 AJA:3H29 AJA H241 AJA:1H24 AJA H242 AJA:2H24 AJA H243 AJA:3H24 AJA H181 AJA:1H18 AJA H182 AJA:2H18 AJA H183 AJA:3H18 AJA H171 AJA:1H17 AJA H172 AJA:2H17 AJA H173 AJA:3H17 AJA H121 AJA:1H12 AJA H122 AJA:2H12 AJA H41 AJM:1H4 AJM H42 AJM:2H4 AJM H161 AJM:1H16 AJM H162 AJM:2H16 AJM H121 AJM:1H12 AJM H122 AJM:2H12 AJM H181 AJM:1H18 AJM H182 AJM:2H18 AJM H183 AJM:3H18 AJM H401 AKA:1H40 AKA H402 AKA:2H40 AKA H381 AKA:1H38 AKA H382 AKA:2H38 AKA H411 AKA:1H41 AKA H412 AKA:2H41 AKA H413 AKA:3H41 AKA H361 AKA:1H36 AKA H362 AKA:2H36 AKA H363 AKA:3H36 AKA H321 AKA:1H32 AKA H322 AKA:2H32 AKA H4' AKA: H4* AKA H5' AKA: H5* AKA H6'1 AKA:1H6* AKA H6'2 AKA:2H6* AKA H6'3 AKA:3H6* AKA H3' AKA: H3* AKA H8'1 AKA:1H8* AKA H8'2 AKA:2H8* AKA H8'3 AKA:3H8* AKA H7'1 AKA:1H7* AKA H7'2 AKA:2H7* AKA H7'3 AKA:3H7* AKA H2'1 AKA:1H2* AKA H2'2 AKA:2H2* AKA H1' AKA: H1* AKA H81 AKA:1H8 AKA H82 AKA:2H8 AKA H131 AKA:1H13 AKA H132 AKA:2H13 AKA H141 AKA:1H14 AKA H142 AKA:2H14 AKA H143 AKA:3H14 AKA H101 AKA:1H10 AKA H102 AKA:2H10 AKA H21 AKB:1H2 AKB H41 AKB:1H4 AKB H42 AKB:2H4 AKB H43 AKB:3H4 AKB HN41 AKB:1HN4 AKB HN42 AKB:2HN4 AKB H081 AKC:1H08 AKC H082 AKC:2H08 AKC H101 AKC:1H10 AKC H102 AKC:2H10 AKC H361 AKC:1H36 AKC H362 AKC:2H36 AKC H441 AKC:1H44 AKC H442 AKC:2H44 AKC H451 AKC:1H45 AKC H452 AKC:2H45 AKC H471 AKC:1H47 AKC H472 AKC:2H47 AKC H481 AKC:1H48 AKC H482 AKC:2H48 AKC H483 AKC:3H48 AKC H31 AKG:1H3 AKG H32 AKG:2H3 AKG H41 AKG:1H4 AKG H42 AKG:2H4 AKG H AKL:1HN AKL H2 AKL:2HN AKL HB2 AKL:1HB AKL HB3 AKL:2HB AKL HM1 AKL:1HM AKL HM2 AKL:2HM AKL H91 AKN:1H9 AKN H92 AKN:2H9 AKN H101 AKN:1H10 AKN H102 AKN:2H10 AKN H131 AKN:1H13 AKN H132 AKN:2H13 AKN H151 AKN:1H15 AKN H152 AKN:2H15 AKN H251 AKN:1H25 AKN H252 AKN:2H25 AKN H301 AKN:1H30 AKN H302 AKN:2H30 AKN H341 AKN:1H34 AKN H342 AKN:2H34 AKN H381 AKN:1H38 AKN H382 AKN:2H38 AKN H391 AKN:1H39 AKN H392 AKN:2H39 AKN H31A AKP:1H3 AKP H32 AKP:2H3 AKP H51 AKP:1H5 AKP H52 AKP:2H5 AKP H81 AKP:1H8 AKP H82 AKP:2H8 AKP H181 AKP:1H18 AKP H182 AKP:2H18 AKP H231 AKP:1H23 AKP H232 AKP:2H23 AKP H233 AKP:3H23 AKP H241 AKP:1H24 AKP H242 AKP:2H24 AKP H271 AKP:1H27 AKP H272 AKP:2H27 AKP H281 AKP:1H28 AKP H282 AKP:2H28 AKP H283 AKP:3H28 AKP H291 AKP:1H29 AKP H292 AKP:2H29 AKP H293 AKP:3H29 AKP H301 AKP:1H30 AKP H302 AKP:2H30 AKP H303 AKP:3H30 AKP H321 AKP:1H32 AKP H322 AKP:2H32 AKP H331 AKP:1H33 AKP H332 AKP:2H33 AKP H341 AKP:1H34 AKP H342 AKP:2H34 AKP H351 AKP:1H35 AKP H352 AKP:2H35 AKP H361 AKP:1H36 AKP H362 AKP:2H36 AKP HA1 AKR:1HA AKR HB2 AKR:2HB AKR HB3 AKR:3HB AKR H101 AKT:1H10 AKT H102 AKT:2H10 AKT H81 AKT:1H8 AKT H82 AKT:2H8 AKT H131 AKT:1H13 AKT H132 AKT:2H13 AKT H141 AKT:1H14 AKT H142 AKT:2H14 AKT H143 AKT:3H14 AKT H1' AKT: H1* AKT H2'1 AKT:1H2* AKT H2'2 AKT:2H2* AKT H3' AKT: H3* AKT H8'1 AKT:1H8* AKT H8'2 AKT:2H8* AKT H8'3 AKT:3H8* AKT H7'1 AKT:1H7* AKT H7'2 AKT:2H7* AKT H7'3 AKT:3H7* AKT H4' AKT: H4* AKT H5' AKT: H5* AKT H6'1 AKT:1H6* AKT H6'2 AKT:2H6* AKT H6'3 AKT:3H6* AKT H101 AKV:1H10 AKV H102 AKV:2H10 AKV H151 AKV:1H15 AKV H152 AKV:2H15 AKV H153 AKV:3H15 AKV H81 AKV:1H8 AKV H82 AKV:2H8 AKV H131 AKV:1H13 AKV H132 AKV:2H13 AKV H221 AKV:1H22 AKV H222 AKV:2H22 AKV H223 AKV:3H22 AKV H141 AKY:1H14 AKY H142 AKY:2H14 AKY H143 AKY:3H14 AKY H131 AKY:1H13 AKY H132 AKY:2H13 AKY H81 AKY:1H8 AKY H82 AKY:2H8 AKY H461 AKY:1H46 AKY H462 AKY:2H46 AKY H321 AKY:1H32 AKY H322 AKY:2H32 AKY H381 AKY:1H38 AKY H382 AKY:2H38 AKY H401 AKY:1H40 AKY H402 AKY:2H40 AKY H411 AKY:1H41 AKY H412 AKY:2H41 AKY H413 AKY:3H41 AKY H361 AKY:1H36 AKY H362 AKY:2H36 AKY H363 AKY:3H36 AKY H501 AKY:1H50 AKY H502 AKY:2H50 AKY H503 AKY:3H50 AKY H521 AKY:1H52 AKY H522 AKY:2H52 AKY H523 AKY:3H52 AKY H511 AKY:1H51 AKY H512 AKY:2H51 AKY H513 AKY:3H51 AKY H441 AKY:1H44 AKY H442 AKY:2H44 AKY H443 AKY:3H44 AKY HN1 AL0:1HN AL0 HN2 AL0:2HN AL0 HB1 AL0:1HB AL0 HB2 AL0:2HB AL0 H91 AL1:1H9 AL1 H92 AL1:2H9 AL1 H101 AL1:1H10 AL1 H102 AL1:2H10 AL1 H241 AL1:1H24 AL1 H242 AL1:2H24 AL1 H243 AL1:3H24 AL1 HNL1 AL1:1HNL AL1 HNL2 AL1:2HNL AL1 H91 AL2:1H9 AL2 H92 AL2:2H9 AL2 HNL1 AL2:1HNL AL2 HNL2 AL2:2HNL AL2 H171 AL2:1H17 AL2 H172 AL2:2H17 AL2 H173 AL2:3H17 AL2 H91 AL3:1H9 AL3 H92 AL3:2H9 AL3 H111 AL3:1H11 AL3 H112 AL3:2H11 AL3 HNL1 AL3:1HNL AL3 HNL2 AL3:2HNL AL3 H91 AL4:1H9 AL4 H92 AL4:2H9 AL4 H111 AL4:1H11 AL4 H112 AL4:2H11 AL4 H121 AL4:1H12 AL4 H122 AL4:2H12 AL4 H141 AL4:1H14 AL4 H142 AL4:2H14 AL4 H143 AL4:3H14 AL4 H161 AL4:1H16 AL4 H162 AL4:2H16 AL4 HNL1 AL4:1HNL AL4 HNL2 AL4:2HNL AL4 H171 AL4:1H17 AL4 H172 AL4:2H17 AL4 H173 AL4:3H17 AL4 H91 AL5:1H9 AL5 H92 AL5:2H9 AL5 H161 AL5:1H16 AL5 H162 AL5:2H16 AL5 H163 AL5:3H16 AL5 HNL1 AL5:1HNL AL5 HNL2 AL5:2HNL AL5 HNL1 AL6:1HNL AL6 HNL2 AL6:2HNL AL6 H171 AL6:1H17 AL6 H172 AL6:2H17 AL6 H173 AL6:3H17 AL6 H91 AL7:1H9 AL7 H92 AL7:2H9 AL7 H161 AL7:1H16 AL7 H162 AL7:2H16 AL7 H163 AL7:3H16 AL7 H241 AL7:1H24 AL7 H242 AL7:2H24 AL7 H243 AL7:3H24 AL7 HNL1 AL7:1HNL AL7 HNL2 AL7:2HNL AL7 H91 AL8:1H9 AL8 H92 AL8:2H9 AL8 H161 AL8:1H16 AL8 H162 AL8:2H16 AL8 H163 AL8:3H16 AL8 H241 AL8:1H24 AL8 H242 AL8:2H24 AL8 H243 AL8:3H24 AL8 HNL1 AL8:1HNL AL8 HNL2 AL8:2HNL AL8 H91 AL9:1H9 AL9 H92 AL9:2H9 AL9 HNL1 AL9:1HNL AL9 HNL2 AL9:2HNL AL9 H171 AL9:1H17 AL9 H172 AL9:2H17 AL9 H173 AL9:3H17 AL9 H2 ALA: HN2 ALA HB1 ALA:1HB ALA HB2 ALA:2HB ALA HB3 ALA:3HB ALA H92 ALB:2H9 ALB H91 ALB:1H9 ALB H102 ALB:2H10 ALB H101 ALB:1H10 ALB H112 ALB:2H11 ALB H111 ALB:1H11 ALB H122 ALB:2H12 ALB H121 ALB:1H12 ALB H132 ALB:2H13 ALB H131 ALB:1H13 ALB H142 ALB:2H14 ALB H141 ALB:1H14 ALB H152 ALB:2H15 ALB H151 ALB:1H15 ALB H162 ALB:2H16 ALB H161 ALB:1H16 ALB H172 ALB:2H17 ALB H171 ALB:1H17 ALB H183 ALB:3H18 ALB H182 ALB:2H18 ALB H181 ALB:1H18 ALB H193 ALB:3H19 ALB H192 ALB:2H19 ALB H191 ALB:1H19 ALB H203 ALB:3H20 ALB H202 ALB:2H20 ALB H201 ALB:1H20 ALB H232 ALB:2H23 ALB H231 ALB:1H23 ALB H363 ALB:3H36 ALB H362 ALB:2H36 ALB H361 ALB:1H36 ALB H7N1 ALB:1H7N ALB H1N3 ALB:3H1N ALB H1N2 ALB:2H1N ALB H1N4 ALB:4H1N ALB H1N5 ALB:5H1N ALB H2 ALC: HN2 ALC HB2 ALC:1HB ALC HB3 ALC:2HB ALC HD23 ALC:1HD2 ALC HD22 ALC:2HD2 ALC HE23 ALC:1HE2 ALC HE22 ALC:2HE2 ALC HZ3 ALC:1HZ ALC HZ2 ALC:2HZ ALC HE13 ALC:1HE1 ALC HE12 ALC:2HE1 ALC HD12 ALC:1HD1 ALC HD13 ALC:2HD1 ALC H71 ALD:1H7 ALD H72 ALD:2H7 ALD H181 ALD:1H18 ALD H182 ALD:2H18 ALD H201 ALD:1H20 ALD H202 ALD:2H20 ALD H203 ALD:3H20 ALD H211 ALD:1H21 ALD H212 ALD:2H21 ALD H213 ALD:3H21 ALD H221 ALD:1H22 ALD H222 ALD:2H22 ALD H241 ALD:1H24 ALD H242 ALD:2H24 ALD H261 ALD:1H26 ALD H262 ALD:2H26 ALD H263 ALD:3H26 ALD H271 ALD:1H27 ALD H272 ALD:2H27 ALD H273 ALD:3H27 ALD H301 ALD:1H30 ALD H302 ALD:2H30 ALD H321 ALD:1H32 ALD H322 ALD:2H32 ALD H323 ALD:3H32 ALD H331 ALD:1H33 ALD H332 ALD:2H33 ALD H333 ALD:3H33 ALD H81 ALE:1H8 ALE H82 ALE:2H8 ALE H91 ALE:1H9 ALE H92 ALE:2H9 ALE H93 ALE:3H9 ALE HA1 ALG:1HA ALG HA2 ALG:2HA ALG HB1 ALG:1HB ALG HB2 ALG:2HB ALG HD1 ALG:1HD ALG HD2 ALG:2HD ALG HH21 ALG:1HH2 ALG HH22 ALG:2HH2 ALG HAG1 ALH:1HAG ALH HAG2 ALH:2HAG ALH HAD1 ALH:1HAD ALH HAD2 ALH:2HAD ALH HAC1 ALH:1HAC ALH HAC2 ALH:2HAC ALH HAB1 ALH:1HAB ALH HAB2 ALH:2HAB ALH HAB3 ALH:3HAB ALH H6C1 ALI:1H6C ALI H6C2 ALI:2H6C ALI H8C1 ALI:1H8C ALI H8C2 ALI:2H8C ALI HDP1 ALJ:1HDP ALJ HDP2 ALJ:2HDP ALJ HGP1 ALJ:1HGP ALJ HGP2 ALJ:2HGP ALJ HBP1 ALJ:1HBP ALJ HBP2 ALJ:2HBP ALJ HBC1 ALJ:1HBC ALJ HBC2 ALJ:2HBC ALJ HGC1 ALJ:1HGC ALJ HGC2 ALJ:2HGC ALJ HDC1 ALJ:1HDC ALJ HDC2 ALJ:2HDC ALJ HH11 ALJ:1HH1 ALJ HH12 ALJ:2HH1 ALJ HH21 ALJ:1HH2 ALJ HH22 ALJ:2HH2 ALJ H1' ALL: H1* ALL H2' ALL: H2* ALL H3' ALL: H3* ALL H4' ALL: H4* ALL H5' ALL: H5* ALL H6'1 ALL:1H6* ALL H6'2 ALL:2H6* ALL HO'1 ALL:1HO* ALL HO'2 ALL:2HO* ALL HO'3 ALL:3HO* ALL HO'4 ALL:4HO* ALL HO'6 ALL:6HO* ALL H ALM:1HN ALM H2 ALM:2HN ALM HB1 ALM:1HB ALM HB2 ALM:2HB ALM HB3 ALM:3HB ALM HM1 ALM:1HM ALM HM2 ALM:2HM ALM HM3 ALM:3HM ALM H ALN:1HN ALN H2 ALN:2HN ALN HB2 ALN:1HB ALN HB3 ALN:2HB ALN H ALO:1HN ALO H2 ALO:2HN ALO HG21 ALO:1HG2 ALO HG22 ALO:2HG2 ALO HG23 ALO:3HG2 ALO HG1 ALO: HOG ALO H211 ALP:1H21 ALP H212 ALP:2H21 ALP H511 ALP:1H51 ALP H512 ALP:2H51 ALP H513 ALP:3H51 ALP H521 ALP:1H52 ALP H522 ALP:2H52 ALP H523 ALP:3H52 ALP HM1 ALQ:1HM ALQ HM2 ALQ:2HM ALQ HM3 ALQ:3HM ALQ HB1 ALQ:1HB ALQ HB2 ALQ:2HB ALQ HB3 ALQ:3HB ALQ H71 ALR:1H7 ALR H72 ALR:2H7 ALR HN21 ALS:1HN2 ALS HN22 ALS:2HN2 ALS HOS4 ALS:4HOS ALS H ALT:1HN ALT H2 ALT:2HN ALT HB1 ALT:1HB ALT HB2 ALT:2HB ALT HB3 ALT:3HB ALT H111 ALW:1H11 ALW H112 ALW:2H11 ALW H3'1 ALW:1H3' ALW H3'2 ALW:2H3' ALW HC1 ALW:1HC ALW HC2 ALW:2HC ALW HC3 ALW:3HC ALW H6C1 ALW:1H6C ALW H6C2 ALW:2H6C ALW H6C3 ALW:3H6C ALW H ALX:1HN ALX H2 ALX:2HN ALX HB1 ALX:1HB ALX HB2 ALX:2HB ALX H21 ALX:1H2 ALX H22 ALX:2H2 ALX H31 ALX:1H3 ALX H32 ALX:2H3 ALX H41 ALX:1H4 ALX H42 ALX:2H4 ALX H51 ALX:1H5 ALX H52 ALX:2H5 ALX H61 ALX:1H6 ALX H62 ALX:2H6 ALX HH31 ALY:1HH3 ALY HH32 ALY:2HH3 ALY HH33 ALY:3HH3 ALY HZ ALY: HNZ ALY HE3 ALY:1HCE ALY HE2 ALY:2HCE ALY HD3 ALY:1HCD ALY HD2 ALY:2HCD ALY HG3 ALY:1HCG ALY HG2 ALY:2HCG ALY HB3 ALY:1HCB ALY HB2 ALY:2HCB ALY H ALY:1HN ALY H2 ALY:2HN ALY HN11 ALZ:1HN1 ALZ HN12 ALZ:2HN1 ALZ H21A ALZ:1H2 ALZ H22A ALZ:2H2 ALZ H31 ALZ:1H3 ALZ H32 ALZ:2H3 ALZ H41 ALZ:1H4 ALZ H42 ALZ:2H4 ALZ H51 ALZ:1H5 ALZ H52 ALZ:2H5 ALZ H101 ALZ:1H10 ALZ H102 ALZ:2H10 ALZ H111 ALZ:1H11 ALZ H112 ALZ:2H11 ALZ H121 ALZ:1H12 ALZ H122 ALZ:2H12 ALZ H161 ALZ:1H16 ALZ H162 ALZ:2H16 ALZ HA31 AM2:1HA3 AM2 HA32 AM2:2HA3 AM2 HA91 AM2:1HA9 AM2 HA92 AM2:2HA9 AM2 HA93 AM2:3HA9 AM2 HA21 AM2:1HA2 AM2 HA22 AM2:2HA2 AM2 HB61 AM2:1HB6 AM2 HB62 AM2:2HB6 AM2 HB41 AM2:1HB4 AM2 HB42 AM2:2HB4 AM2 HC51 AM2:1HC5 AM2 HC52 AM2:2HC5 AM2 HC41 AM2:1HC4 AM2 HC42 AM2:2HC4 AM2 HC61 AM2:1HC6 AM2 HC62 AM2:2HC6 AM2 H121 AM4:1H12 AM4 H122 AM4:2H12 AM4 H101 AM4:1H10 AM4 H102 AM4:2H10 AM4 H103 AM4:3H10 AM4 H2A1 AMA:1H2A AMA H2A2 AMA:2H2A AMA H2A3 AMA:3H2A AMA H4A1 AMA:1H4A AMA H4A2 AMA:2H4A AMA H5A1 AMA:1H5A AMA H5A2 AMA:2H5A AMA HOP2 AMA:2HOP AMA HOP3 AMA:3HOP AMA HB21 AMA:1HB2 AMA HB22 AMA:2HB2 AMA HB23 AMA:3HB2 AMA HB11 AMA:1HB1 AMA HB12 AMA:2HB1 AMA HE3 AMB:3HE AMB HE2 AMB:2HE AMB HE1 AMB:1HE AMB H2 AMB:2H AMB H1 AMB:1H AMB H21 AMC:1H2 AMC H22 AMC:2H2 AMC H31 AMC:1H3 AMC H32 AMC:2H3 AMC H41 AMC:1H4 AMC H42 AMC:2H4 AMC H51 AMC:1H5 AMC H52 AMC:2H5 AMC H61 AMC:1H6 AMC H62 AMC:2H6 AMC HM1 AMC:1HM AMC HM2 AMC:2HM AMC HN1 AMC:1HN AMC HN2 AMC:2HN AMC HN3 AMC:3HN AMC HOP2 AMD:2HOP AMD H5'1 AMD:1H5* AMD H5'2 AMD:2H5* AMD H4' AMD: H4* AMD H1' AMD: H1* AMD H61 AMD:1H6 AMD H62 AMD:2H6 AMD H2'1 AMD:1H2* AMD H2'2 AMD:2H2* AMD H3' AMD: H3* AMD HO'3 AMD:3HO* AMD HB1 AMD:1HB AMD HB2 AMD:2HB AMD HT23 AME:3HT2 AME HT22 AME:2HT2 AME HT21 AME:1HT2 AME HB2 AME:2HB AME HB1 AME:1HB AME HG2 AME:2HG AME HG1 AME:1HG AME HE3 AME:3HE AME HE2 AME:2HE AME HE1 AME:1HE AME HN1 AME:1HN AME H61 AMG:1H6 AMG H62 AMG:2H6 AMG H71 AMG:1H7 AMG H72 AMG:2H7 AMG H73 AMG:3H7 AMG H21 AMH:1H2 AMH H22 AMH:2H2 AMH H31 AMH:1H3 AMH H32 AMH:2H3 AMH H51 AMH:1H5 AMH H52 AMH:2H5 AMH H61 AMH:1H6 AMH H62 AMH:2H6 AMH H71 AMH:1H7 AMH H72 AMH:2H7 AMH HN1 AMH:1HN AMH HN2 AMH:2HN AMH H61 AMI:1H6 AMI H62 AMI:2H6 AMI H81 AMI:1H8 AMI H82 AMI:2H8 AMI H83 AMI:3H8 AMI H91 AMI:1H9 AMI H92 AMI:2H9 AMI H93 AMI:3H9 AMI H131 AMK:1H13 AMK H132 AMK:2H13 AMK H161 AMK:1H16 AMK H162 AMK:2H16 AMK H191 AMK:1H19 AMK H192 AMK:2H19 AMK H281 AMK:1H28 AMK H282 AMK:2H28 AMK H283 AMK:3H28 AMK H361 AMK:1H36 AMK H362 AMK:2H36 AMK H411 AMK:1H41 AMK H412 AMK:2H41 AMK H413 AMK:3H41 AMK H451 AMK:1H45 AMK H452 AMK:2H45 AMK H453 AMK:3H45 AMK H651 AMK:1H65 AMK H652 AMK:2H65 AMK H681 AMK:1H68 AMK H682 AMK:2H68 AMK H711 AMK:1H71 AMK H712 AMK:2H71 AMK H801 AMK:1H80 AMK H802 AMK:2H80 AMK H803 AMK:3H80 AMK H841 AMK:1H84 AMK H842 AMK:2H84 AMK H843 AMK:3H84 AMK H881 AMK:1H88 AMK H882 AMK:2H88 AMK H931 AMK:1H93 AMK H932 AMK:2H93 AMK HC11 AML:1HC1 AML HC12 AML:2HC1 AML HC13 AML:3HC1 AML HC21 AML:1HC2 AML HC22 AML:2HC2 AML HC31 AML:1HC3 AML HC32 AML:2HC3 AML HC41 AML:1HC4 AML HC42 AML:2HC4 AML HC51 AML:1HC5 AML HC52 AML:2HC5 AML HN11 AML:1HN1 AML HN12 AML:2HN1 AML HN1 AMM:1HN AMM HN2 AMM:2HN AMM HA1 AMM:1HA AMM HA2 AMM:2HA AMM HH21 AMM:1HH2 AMM HH22 AMM:2HH2 AMM HB1 AMM:1HB AMM HB2 AMM:2HB AMM HD11 AMM:1HD1 AMM HD12 AMM:2HD1 AMM HD13 AMM:3HD1 AMM HD21 AMM:1HD2 AMM HD22 AMM:2HD2 AMM HD23 AMM:3HD2 AMM H31 AMN:1H3 AMN H32 AMN:2H3 AMN H91 AMN:1H9 AMN H92 AMN:2H9 AMN H111 AMN:1H11 AMN H112 AMN:2H11 AMN H113 AMN:3H11 AMN H121 AMN:1H12 AMN H122 AMN:2H12 AMN H123 AMN:3H12 AMN HN91 AMN:1HN9 AMN HN92 AMN:2HN9 AMN HOB1 AMN:1HOB AMN HOP2 AMO:2HOP AMO H5'1 AMO:1H5* AMO H5'2 AMO:2H5* AMO H4' AMO: H4* AMO H1' AMO: H1* AMO H61 AMO:1H6 AMO H62 AMO:2H6 AMO H2'2 AMO:2H2* AMO H3' AMO: H3* AMO HO'3 AMO:3HO* AMO HB1 AMO:1HB AMO HB2 AMO:2HB AMO H2'1 AMO:1H2* AMO HOP2 AMP:2HOP AMP HOP3 AMP:3HOP AMP H5'1 AMP:1H5* AMP H5'2 AMP:2H5* AMP H4' AMP: H4* AMP H3' AMP: H3* AMP HO3' AMP:*HO3 AMP H2' AMP: H2* AMP HO2' AMP:*HO2 AMP H1' AMP: H1* AMP HN61 AMP:1HN6 AMP HN62 AMP:2HN6 AMP HB1 AMQ:1HB AMQ HB2 AMQ:2HB AMQ HE21 AMQ:1HE2 AMQ HE22 AMQ:2HE2 AMQ HE23 AMQ:3HE2 AMQ HN71 AMR:1HN7 AMR HN72 AMR:2HN7 AMR HN41 AMR:1HN4 AMR HN42 AMR:2HN4 AMR HN21 AMR:1HN2 AMR HN22 AMR:2HN2 AMR HN11 AMS:1HN1 AMS HN12 AMS:2HN1 AMS HN21 AMS:1HN2 AMS HN22 AMS:2HN2 AMS HN1 AMT:1HN AMT HN2 AMT:2HN AMT H61 AMU:1H6 AMU H62 AMU:2H6 AMU H81 AMU:1H8 AMU H82 AMU:2H8 AMU H83 AMU:3H8 AMU H111 AMU:1H11 AMU H112 AMU:2H11 AMU H113 AMU:3H11 AMU H6C1 AMV:1H6C AMV H6C2 AMV:2H6C AMV H8C1 AMV:1H8C AMV H8C2 AMV:2H8C AMV H8C3 AMV:3H8C AMV H111 AMV:1H11 AMV H112 AMV:2H11 AMV H113 AMV:3H11 AMV H121 AMV:1H12 AMV H122 AMV:2H12 AMV H123 AMV:3H12 AMV HOW2 AMW:2HOW AMW HOW3 AMW:3HOW AMW H5'1 AMW:1H5* AMW H5'2 AMW:2H5* AMW H4' AMW: H4* AMW H3' AMW: H3* AMW HO3' AMW:*HO3 AMW H2' AMW: H2* AMW HO2' AMW:*HO2 AMW H1' AMW: H1* AMW HN61 AMW:1HN6 AMW HN62 AMW:2HN6 AMW H2A AMX: AH2 AMX H61A AMX:AH61 AMX H62A AMX:AH62 AMX H8A AMX: AH8 AMX H1B AMX:AH1* AMX H2B AMX:AH2* AMX HO2A AMX:AHO2 AMX H3B AMX:AH3* AMX HOA8 AMX:8HOA AMX HOA9 AMX:9HOA AMX H4B AMX:AH4* AMX H51A AMX:AH51 AMX H52A AMX:AH52 AMX HOA2 AMX:2HOA AMX HOA5 AMX:5HOA AMX H121 AMX:1H12 AMX H122 AMX:2H12 AMX H131 AMX:1H13 AMX H132 AMX:2H13 AMX H133 AMX:3H13 AMX H141 AMX:1H14 AMX H142 AMX:2H14 AMX H143 AMX:3H14 AMX H71 AMX:1H7 AMX H72 AMX:2H7 AMX H61 AMX:1H6 AMX H62 AMX:2H6 AMX H31 AMX:1H3 AMX H32 AMX:2H3 AMX H21 AMX:1H2 AMX H22 AMX:2H2 AMX H11 AMX:1H1 AMX H12 AMX:2H1 AMX HN21 AMX:1HN2 AMX HN22 AMX:2HN2 AMX H151 AMY:1H15 AMY H152 AMY:2H15 AMY H161 AMY:1H16 AMY H162 AMY:2H16 AMY H171 AMY:1H17 AMY H172 AMY:2H17 AMY H181 AMY:1H18 AMY H182 AMY:2H18 AMY H191 AMY:1H19 AMY H192 AMY:2H19 AMY H193 AMY:3H19 AMY H221 AMY:1H22 AMY H222 AMY:2H22 AMY H241 AMY:1H24 AMY H242 AMY:2H24 AMY H243 AMY:3H24 AMY H251 AMY:1H25 AMY H252 AMY:2H25 AMY H253 AMY:3H25 AMY H261 AMY:1H26 AMY H262 AMY:2H26 AMY H263 AMY:3H26 AMY H271 AMY:1H27 AMY H272 AMY:2H27 AMY H273 AMY:3H27 AMY HB1 AN0:1HB AN0 HB2 AN0:2HB AN0 HG1 AN0:1HG AN0 HG2 AN0:2HG AN0 HD1 AN0:1HD AN0 HD2 AN0:2HD AN0 HD3 AN0:3HD AN0 H21 AN0:1H2 AN0 H22 AN0:2H2 AN0 H23 AN0:3H2 AN0 H3B1 AN2:1H3B AN2 H3B2 AN2:2H3B AN2 HO2B AN2:BHO2 AN2 HO2A AN2:AHO2 AN2 H5'1 AN2:1H5* AN2 H5'2 AN2:2H5* AN2 H4' AN2: H4* AN2 H3' AN2: H3* AN2 H2' AN2: H2* AN2 H1' AN2: H1* AN2 H6N1 AN2:1H6N AN2 H6N2 AN2:2H6N AN2 H201 AN9:1H20 AN9 H202 AN9:2H20 AN9 H151 AN9:1H15 AN9 H152 AN9:2H15 AN9 H161 AN9:1H16 AN9 H162 AN9:2H16 AN9 H171 AN9:1H17 AN9 H172 AN9:2H17 AN9 H191 AN9:1H19 AN9 H192 AN9:2H19 AN9 H193 AN9:3H19 AN9 H211 AN9:1H21 AN9 H212 AN9:2H21 AN9 H221 AN9:1H22 AN9 H222 AN9:2H22 AN9 H223 AN9:3H22 AN9 H231 AN9:1H23 AN9 H232 AN9:2H23 AN9 H241 AN9:1H24 AN9 H242 AN9:2H24 AN9 H251 AN9:1H25 AN9 H252 AN9:2H25 AN9 H253 AN9:3H25 AN9 H261 AN9:1H26 AN9 H262 AN9:2H26 AN9 H271 AN9:1H27 AN9 H272 AN9:2H27 AN9 H273 AN9:3H27 AN9 H31 ANA:1H3 ANA H32 ANA:2H3 ANA H91 ANA:1H9 ANA H92 ANA:2H9 ANA H111 ANA:1H11 ANA H112 ANA:2H11 ANA H113 ANA:3H11 ANA H121 ANA:1H12 ANA H122 ANA:2H12 ANA H123 ANA:3H12 ANA HM41 ANA:1HM4 ANA HM42 ANA:2HM4 ANA HM43 ANA:3HM4 ANA HOB1 ANA:1HOB ANA HC1 ANB:1HC ANB H111 ANB:1H11 ANB H112 ANB:2H11 ANB H121 ANB:1H12 ANB H122 ANB:2H12 ANB HC41 ANB:1HC4 ANB H151 ANB:1H15 ANB H152 ANB:2H15 ANB H161 ANB:1H16 ANB H162 ANB:2H16 ANB H181 ANB:1H18 ANB H182 ANB:2H18 ANB H183 ANB:3H18 ANB H191 ANB:1H19 ANB H192 ANB:2H19 ANB H193 ANB:3H19 ANB HC2 ANB:2HC ANB HC4 ANB:4HC ANB HC61 ANB:1HC6 ANB HC62 ANB:2HC6 ANB HC71 ANB:1HC7 ANB HC72 ANB:2HC7 ANB HC8 ANB:8HC ANB HC9 ANB:9HC ANB H10C ANC:CH10 ANC H13C ANC:CH13 ANC H14C ANC:CH14 ANC H11 AND:1H1 AND H12 AND:2H1 AND H21 AND:1H2 AND H22 AND:2H2 AND H41 AND:1H4 AND H42 AND:2H4 AND H71 AND:1H7 AND H72 AND:2H7 AND H111 AND:1H11 AND H112 AND:2H11 AND H121 AND:1H12 AND H122 AND:2H12 AND H151 AND:1H15 AND H152 AND:2H15 AND H161 AND:1H16 AND H162 AND:2H16 AND H181 AND:1H18 AND H182 AND:2H18 AND H183 AND:3H18 AND H191 AND:1H19 AND H192 AND:2H19 AND H193 AND:3H19 AND HN61 ANE:1HN6 ANE HN62 ANE:2HN6 ANE H21 ANG:1H2 ANG H22 ANG:2H2 ANG H81 ANG:1H8 ANG H82 ANG:2H8 ANG H301 ANH:1H30 ANH H302 ANH:2H30 ANH H161 ANH:1H16 ANH H162 ANH:2H16 ANH H163 ANH:3H16 ANH H281 ANH:1H28 ANH H282 ANH:2H28 ANH H101 ANH:1H10 ANH H102 ANH:2H10 ANH H11 ANH:1H1 ANH H12A ANH:2H1 ANH H13A ANH:3H1 ANH HN1 ANI:1HN ANI HN2 ANI:2HN ANI H111 ANJ:1H11 ANJ H112 ANJ:2H11 ANJ H113 ANJ:3H11 ANJ H161 ANJ:1H16 ANJ H162 ANJ:2H16 ANJ H163 ANJ:3H16 ANJ H181 ANJ:1H18 ANJ H182 ANJ:2H18 ANJ H191 ANJ:1H19 ANJ H192 ANJ:2H19 ANJ H201 ANJ:1H20 ANJ H202 ANJ:2H20 ANJ H211 ANJ:1H21 ANJ H212 ANJ:2H21 ANJ H221 ANJ:1H22 ANJ H222 ANJ:2H22 ANJ H231 ANJ:1H23 ANJ H232 ANJ:2H23 ANJ H233 ANJ:3H23 ANJ H261 ANJ:1H26 ANJ H262 ANJ:2H26 ANJ H263 ANJ:3H26 ANJ H271 ANJ:1H27 ANJ H272 ANJ:2H27 ANJ H281 ANJ:1H28 ANJ H282 ANJ:2H28 ANJ H283 ANJ:3H28 ANJ HN1 ANL:1HN ANL HN2 ANL:2HN ANL H41 ANM:1H4 ANM H42 ANM:2H4 ANM H61 ANM:1H6 ANM H62 ANM:2H6 ANM H63 ANM:3H6 ANM H141 ANM:1H14 ANM H142 ANM:2H14 ANM H143 ANM:3H14 ANM H151 ANM:1H15 ANM H152 ANM:2H15 ANM H81 ANN:1H8 ANN H82 ANN:2H8 ANN H83 ANN:3H8 ANN H11 ANO:1H1 ANO H12 ANO:2H1 ANO H21 ANO:1H2 ANO H22 ANO:2H2 ANO H41 ANO:1H4 ANO H42 ANO:2H4 ANO H61 ANO:1H6 ANO H62 ANO:2H6 ANO H71 ANO:1H7 ANO H72 ANO:2H7 ANO H111 ANO:1H11 ANO H112 ANO:2H11 ANO H121 ANO:1H12 ANO H122 ANO:2H12 ANO H151 ANO:1H15 ANO H152 ANO:2H15 ANO H161 ANO:1H16 ANO H162 ANO:2H16 ANO H181 ANO:1H18 ANO H182 ANO:2H18 ANO H183 ANO:3H18 ANO H191 ANO:1H19 ANO H192 ANO:2H19 ANO H193 ANO:3H19 ANO HOG2 ANP:2HOG ANP HOG3 ANP:3HOG ANP HOB2 ANP:2HOB ANP HNB1 ANP:1HNB ANP HOA2 ANP:2HOA ANP H5'1 ANP:1H5* ANP H5'2 ANP:2H5* ANP H4' ANP: H4* ANP H3' ANP: H3* ANP HO3' ANP:*HO3 ANP H2' ANP: H2* ANP HO2' ANP:*HO2 ANP H1' ANP: H1* ANP HN61 ANP:1HN6 ANP HN62 ANP:2HN6 ANP H151 ANR:1H15 ANR H152 ANR:2H15 ANR H201 ANR:1H20 ANR H202 ANR:2H20 ANR H203 ANR:3H20 ANR H191 ANR:1H19 ANR H192 ANR:2H19 ANR H193 ANR:3H19 ANR H171 ANR:1H17 ANR H172 ANR:2H17 ANR H173 ANR:3H17 ANR H181 ANR:1H18 ANR H182 ANR:2H18 ANR H183 ANR:3H18 ANR H21 ANR:1H2 ANR H22 ANR:2H2 ANR H31 ANR:1H3 ANR H32 ANR:2H3 ANR H161 ANR:1H16 ANR H162 ANR:2H16 ANR H163 ANR:3H16 ANR HM11 ANS:1HM1 ANS HM12 ANS:2HM1 ANS HM13 ANS:3HM1 ANS HM21 ANS:1HM2 ANS HM22 ANS:2HM2 ANS HM23 ANS:3HM2 ANS HOS3 ANS:3HOS ANS H11A ANT:1H1 ANT H12A ANT:2H1 ANT HM81 ANT:1HM8 ANT HM82 ANT:2HM8 ANT HM83 ANT:3HM8 ANT HN51 ANT:1HN5 ANT HN52 ANT:2HN5 ANT H3' ANU: H3* ANU H2' ANU: H2* ANU H1' ANU: H1* ANU H4' ANU: H4* ANU H5'1 ANU:1H5* ANU H5'2 ANU:2H5* ANU H5' ANU: H5* ANU H151 ANY:1H15 ANY H152 ANY:2H15 ANY H161 ANY:1H16 ANY H162 ANY:2H16 ANY H261 ANY:1H26 ANY H262 ANY:2H26 ANY H263 ANY:3H26 ANY H271 ANY:1H27 ANY H272 ANY:2H27 ANY H273 ANY:3H27 ANY H231 ANY:1H23 ANY H232 ANY:2H23 ANY H171 ANY:1H17 ANY H172 ANY:2H17 ANY H241 ANY:1H24 ANY H242 ANY:2H24 ANY H243 ANY:3H24 ANY H251 ANY:1H25 ANY H252 ANY:2H25 ANY H253 ANY:3H25 ANY H181 ANY:1H18 ANY H182 ANY:2H18 ANY H191 ANY:1H19 ANY H192 ANY:2H19 ANY H281 ANY:1H28 ANY H282 ANY:2H28 ANY H291 ANY:1H29 ANY H292 ANY:2H29 ANY H293 ANY:3H29 ANY HBC1 ANZ:1HBC ANZ HBC2 ANZ:2HBC ANZ H1' ANZ: H1* ANZ H6N1 ANZ:1H6N ANZ H6N2 ANZ:2H6N ANZ H5'1 ANZ:1H5* ANZ H5'2 ANZ:2H5* ANZ H4' ANZ: H4* ANZ H3' ANZ: H3* ANZ H2' ANZ: H2* ANZ H151 AO:1H15 AO H152 AO:2H15 AO H153 AO:3H15 AO H154 AO:4H15 AO H155 AO:5H15 AO H156 AO:6H15 AO H161 AO:1H16 AO H162 AO:2H16 AO H163 AO:3H16 AO H164 AO:4H16 AO H165 AO:5H16 AO H166 AO:6H16 AO H11A AO1:1H1 AO1 H12 AO1:2H1 AO1 H13 AO1:3H1 AO1 H21A AO1:1H2 AO1 H22A AO1:2H2 AO1 H41 AO1:1H4 AO1 H42 AO1:2H4 AO1 H51 AO1:1H5 AO1 H52 AO1:2H5 AO1 H141 AO1:1H14 AO1 H142 AO1:2H14 AO1 H143 AO1:3H14 AO1 HN71 AO1:1HN7 AO1 HN72 AO1:2HN7 AO1 H11A AO2:1H1 AO2 H12 AO2:2H1 AO2 H21A AO2:1H2 AO2 H22 AO2:2H2 AO2 H31 AO2:1H3 AO2 H32 AO2:2H3 AO2 H41 AO2:1H4 AO2 H42 AO2:2H4 AO2 H51 AO2:1H5 AO2 H52 AO2:2H5 AO2 H71 AO2:1H7 AO2 H72 AO2:2H7 AO2 HN91 AO2:1HN9 AO2 HN92 AO2:2HN9 AO2 H221 AO2:1H22 AO2 H222 AO2:2H22 AO2 H223 AO2:3H22 AO2 H61 AO3:1H6 AO3 H62 AO3:2H6 AO3 H81 AO3:1H8 AO3 H82 AO3:2H8 AO3 H83 AO3:3H8 AO3 H161 AO3:1H16 AO3 H162 AO3:2H16 AO3 H181 AO3:1H18 AO3 H182 AO3:2H18 AO3 H183 AO3:3H18 AO3 H261 AO3:1H26 AO3 H262 AO3:2H26 AO3 H281 AO3:1H28 AO3 H282 AO3:2H28 AO3 H283 AO3:3H28 AO3 H291 AO3:1H29 AO3 H292 AO3:2H29 AO3 H293 AO3:3H29 AO3 H21 AO5:1H2 AO5 H22A AO5:2H2 AO5 H23 AO5:3H2 AO5 H31 AO5:1H3 AO5 H32 AO5:2H3 AO5 H33 AO5:3H3 AO5 H51 AO5:1H5 AO5 H52 AO5:2H5 AO5 H61 AO5:1H6 AO5 H62 AO5:2H6 AO5 HN81 AO5:1HN8 AO5 HN82 AO5:2HN8 AO5 H1C1 AOA:1H1C AOA H1C2 AOA:2H1C AOA H1N1 AOA:1H1N AOA H1N2 AOA:2H1N AOA HC1 AOE:1HC AOE HC2 AOE:2HC AOE HO3 AOE:3HO AOE HC4 AOE:4HC AOE HC61 AOE:1HC6 AOE HC62 AOE:2HC6 AOE HC7 AOE:7HC AOE HC8 AOE:8HC AOE HC9 AOE:9HC AOE H111 AOE:1H11 AOE H112 AOE:2H11 AOE H121 AOE:1H12 AOE H122 AOE:2H12 AOE HC41 AOE:1HC4 AOE H151 AOE:1H15 AOE H152 AOE:2H15 AOE H161 AOE:1H16 AOE H162 AOE:2H16 AOE HC71 AOE:1HC7 AOE H181 AOE:1H18 AOE H182 AOE:2H18 AOE H183 AOE:3H18 AOE HO71 AOE:1HO7 AOE H191 AOE:1H19 AOE H192 AOE:2H19 AOE H201 AOE:1H20 AOE H202 AOE:2H20 AOE H211 AOE:1H21 AOE H212 AOE:2H21 AOE H221 AOE:1H22 AOE H222 AOE:2H22 AOE H231 AOE:1H23 AOE H232 AOE:2H23 AOE H241 AOE:1H24 AOE H242 AOE:2H24 AOE H251 AOE:1H25 AOE H252 AOE:2H25 AOE H261 AOE:1H26 AOE H262 AOE:2H26 AOE H271 AOE:1H27 AOE H272 AOE:2H27 AOE H281 AOE:1H28 AOE H282 AOE:2H28 AOE H301 AOE:1H30 AOE H302 AOE:2H30 AOE H303 AOE:3H30 AOE H311 AOE:1H31 AOE H312 AOE:2H31 AOE H321 AOE:1H32 AOE H322 AOE:2H32 AOE H331 AOE:1H33 AOE H332 AOE:2H33 AOE H341 AOE:1H34 AOE H342 AOE:2H34 AOE H343 AOE:3H34 AOE H61 AOG:1H6 AOG H62 AOG:2H6 AOG HN31 AOG:1HN3 AOG HN32 AOG:2HN3 AOG H1'1 AOG:1H1' AOG H1'2 AOG:2H1' AOG H2'1 AOG:1H2' AOG H2'2 AOG:2H2' AOG H3'1 AOG:1H3' AOG H3'2 AOG:2H3' AOG H4'1 AOG:1H4' AOG H4'2 AOG:2H4' AOG H5'1 AOG:1H5' AOG H5'2 AOG:2H5' AOG H6'1 AOG:1H6' AOG H6'2 AOG:2H6' AOG H7'1 AOG:1H7' AOG H7'2 AOG:2H7' AOG H8'1 AOG:1H8' AOG H8'2 AOG:2H8' AOG H8'3 AOG:3H8' AOG HN51 AOL:1HN5 AOL HN52 AOL:2HN5 AOL HC11 AOM:1HC1 AOM HC12 AOM:2HC1 AOM H111 AOM:1H11 AOM H112 AOM:2H11 AOM H121 AOM:1H12 AOM H122 AOM:2H12 AOM H14C AOM:CH14 AOM H151 AOM:1H15 AOM H152 AOM:2H15 AOM H161 AOM:1H16 AOM H162 AOM:2H16 AOM H17C AOM:CH17 AOM H181 AOM:1H18 AOM H182 AOM:2H18 AOM H183 AOM:3H18 AOM H191 AOM:1H19 AOM H192 AOM:2H19 AOM H193 AOM:3H19 AOM HC21 AOM:1HC2 AOM HC22 AOM:2HC2 AOM HC41 AOM:1HC4 AOM HC42 AOM:2HC4 AOM HC61 AOM:1HC6 AOM HC62 AOM:2HC6 AOM HC71 AOM:1HC7 AOM HC72 AOM:2HC7 AOM HC11 AON:1HC1 AON HC12 AON:2HC1 AON H111 AON:1H11 AON H112 AON:2H11 AON H121 AON:1H12 AON H122 AON:2H12 AON H14C AON:CH14 AON H151 AON:1H15 AON H152 AON:2H15 AON H161 AON:1H16 AON H162 AON:2H16 AON H17C AON:CH17 AON H181 AON:1H18 AON H182 AON:2H18 AON H183 AON:3H18 AON H191 AON:1H19 AON H192 AON:2H19 AON H193 AON:3H19 AON HC21 AON:1HC2 AON HC22 AON:2HC2 AON HC41 AON:1HC4 AON HC42 AON:2HC4 AON HC61 AON:1HC6 AON HC62 AON:2HC6 AON HC71 AON:1HC7 AON HC72 AON:2HC7 AON H21 AOP:1H2 AOP H22 AOP:2H2 AOP H51 AOP:1H5 AOP H52 AOP:2H5 AOP H61 AOP:1H6 AOP H62 AOP:2H6 AOP H71 AOP:1H7 AOP H72 AOP:2H7 AOP H81 AOP:1H8 AOP H82 AOP:2H8 AOP H91 AOP:1H9 AOP H92 AOP:2H9 AOP H93 AOP:3H9 AOP HB1 AOR:1HB AOR HB2 AOR:2HB AOR HG1 AOR:1HG AOR HG2 AOR:2HG AOR HD1 AOR:1HD AOR HD2 AOR:2HD AOR HNE1 AOR:1HNE AOR HNE2 AOR:2HNE AOR H21 AOR:1H2 AOR H22 AOR:2H2 AOR H23 AOR:3H2 AOR H61 AOS:1H6 AOS H62 AOS:2H6 AOS HN1 AP:1HN AP HN2 AP:2HN AP H81 AP0:1H8 AP0 H82 AP0:2H8 AP0 H83 AP0:3H8 AP0 H41 AP0:1H4 AP0 H42 AP0:2H4 AP0 H1' AP0: H1* AP0 H4' AP0: H4* AP0 H5'1 AP0:1H5* AP0 H5'2 AP0:2H5* AP0 H11 AP0:1H1 AP0 H12X AP0:2H1 AP0 H2' AP0: H2* AP0 H3' AP0: H3* AP0 HN61 AP0:1HN6 AP0 HN62 AP0:2HN6 AP0 H111 AP0:H11 AP0 H31 AP1:1H3 AP1 H32 AP1:2H3 AP1 H41A AP1:1H4 AP1 H42 AP1:2H4 AP1 H51 AP1:1H5 AP1 H52 AP1:2H5 AP1 H61 AP1:1H6 AP1 H62 AP1:2H6 AP1 H161 AP1:1H16 AP1 H162 AP1:2H16 AP1 H163 AP1:3H16 AP1 H181 AP1:1H18 AP1 H182 AP1:2H18 AP1 H183 AP1:3H18 AP1 H191 AP1:1H19 AP1 H192 AP1:2H19 AP1 H193 AP1:3H19 AP1 H201 AP1:1H20 AP1 H202 AP1:2H20 AP1 H203 AP1:3H20 AP1 H211 AP1:1H21 AP1 H212 AP1:2H21 AP1 H213 AP1:3H21 AP1 H271 AP1:1H27 AP1 H272 AP1:2H27 AP1 H281 AP1:1H28 AP1 H282 AP1:2H28 AP1 H371 AP1:1H37 AP1 H372 AP1:2H37 AP1 H421 AP1:1H42 AP1 H422 AP1:2H42 AP1 H423 AP1:3H42 AP1 H461 AP1:1H46 AP1 H462 AP1:2H46 AP1 HOB2 AP2:2HOB AP2 HOB3 AP2:3HOB AP2 H3A1 AP2:1H3A AP2 H3A2 AP2:2H3A AP2 HOA2 AP2:2HOA AP2 H5'1 AP2:1H5* AP2 H5'2 AP2:2H5* AP2 H4' AP2: H4* AP2 H3' AP2: H3* AP2 HO3' AP2:*HO3 AP2 H2' AP2: H2* AP2 HO2' AP2:*HO2 AP2 H1' AP2: H1* AP2 HN61 AP2:1HN6 AP2 HN62 AP2:2HN6 AP2 H511 AP3:1H51 AP3 H512 AP3:2H51 AP3 H513 AP3:3H51 AP3 H521 AP3:1H52 AP3 H522 AP3:2H52 AP3 H523 AP3:3H52 AP3 H91 AP3:1H9 AP3 H92 AP3:2H9 AP3 H93 AP3:3H9 AP3 H101 AP3:1H10 AP3 H102 AP3:2H10 AP3 H103 AP3:3H10 AP3 HN21 AP4:1HN2 AP4 HN22 AP4:2HN2 AP4 H71 AP4:1H7 AP4 H72 AP4:2H7 AP4 H111 AP4:1H11 AP4 H112 AP4:2H11 AP4 HOA2 AP5:2HOA AP5 HOB2 AP5:2HOB AP5 HOG2 AP5:2HOG AP5 HOD2 AP5:2HOD AP5 HOE2 AP5:2HOE AP5 H51A AP5:AH51 AP5 H52A AP5:AH52 AP5 H4F AP5:AH4* AP5 H3F AP5:AH3* AP5 HO3A AP5:AHO3 AP5 H2F AP5:AH2* AP5 HO2A AP5:AHO2 AP5 H1F AP5:AH1* AP5 H8A AP5: AH8 AP5 H61A AP5:AH61 AP5 H62A AP5:AH62 AP5 H2A AP5: AH2 AP5 H51B AP5:BH51 AP5 H52B AP5:BH52 AP5 H4J AP5:BH4* AP5 H3J AP5:BH3* AP5 HO3B AP5:BHO3 AP5 H2J AP5:BH2* AP5 HO2B AP5:BHO2 AP5 H1J AP5:BH1* AP5 H8B AP5: BH8 AP5 H61B AP5:BH61 AP5 H62B AP5:BH62 AP5 H2B AP5: BH2 AP5 HN21 AP6:1HN2 AP6 HN22 AP6:2HN2 AP6 HN41 AP6:1HN4 AP6 HN42 AP6:2HN4 AP6 H71 AP6:1H7 AP6 H72 AP6:2H7 AP6 H1' AP7: H1* AP7 H61 AP7:1H6 AP7 H62 AP7:2H6 AP7 H2' AP7: H2* AP7 HO2' AP7:2HO* AP7 H3' AP7: H3* AP7 HO3' AP7:H3T AP7 H4' AP7: H4* AP7 H5'' AP7:2H5* AP7 H5' AP7:1H5* AP7 HOP2 AP7:2HOP AP7 HOP3 AP7:3HOP AP7 H561 AP8:1H56 AP8 H562 AP8:2H56 AP8 H573 AP8:3H57 AP8 H572 AP8:2H57 AP8 H571 AP8:1H57 AP8 H593 AP8:3H59 AP8 H592 AP8:2H59 AP8 H591 AP8:1H59 AP8 H583 AP8:3H58 AP8 H582 AP8:2H58 AP8 H581 AP8:1H58 AP8 H353 AP8:3H35 AP8 H352 AP8:2H35 AP8 H351 AP8:1H35 AP8 H363 AP8:3H36 AP8 H362 AP8:2H36 AP8 H361 AP8:1H36 AP8 H111 AP8:1H11 AP8 H112 AP8:2H11 AP8 H121 AP8:1H12 AP8 H122 AP8:2H12 AP8 H533 AP8:3H53 AP8 H532 AP8:2H53 AP8 H531 AP8:1H53 AP8 H373 AP8:3H37 AP8 H372 AP8:2H37 AP8 H371 AP8:1H37 AP8 H161 AP8:1H16 AP8 H162 AP8:2H16 AP8 H383 AP8:3H38 AP8 H382 AP8:2H38 AP8 H381 AP8:1H38 AP8 H181 AP8:1H18 AP8 H182 AP8:2H18 AP8 H523 AP8:3H52 AP8 H522 AP8:2H52 AP8 H521 AP8:1H52 AP8 H221 AP8:1H22 AP8 H222 AP8:2H22 AP8 H393 AP8:3H39 AP8 H392 AP8:2H39 AP8 H391 AP8:1H39 AP8 H403 AP8:3H40 AP8 H402 AP8:2H40 AP8 H401 AP8:1H40 AP8 H271 AP8:1H27 AP8 H272 AP8:2H27 AP8 H281 AP8:1H28 AP8 H282 AP8:2H28 AP8 H493 AP8:3H49 AP8 H492 AP8:2H49 AP8 H491 AP8:1H49 AP8 H513 AP8:3H51 AP8 H512 AP8:2H51 AP8 H511 AP8:1H51 AP8 H503 AP8:3H50 AP8 H502 AP8:2H50 AP8 H501 AP8:1H50 AP8 H413 AP8:3H41 AP8 H412 AP8:2H41 AP8 H411 AP8:1H41 AP8 H462 AP8:2H46 AP8 H461 AP8:1H46 AP8 H423 AP8:3H42 AP8 H422 AP8:2H42 AP8 H421 AP8:1H42 AP8 H443 AP8:3H44 AP8 H442 AP8:2H44 AP8 H441 AP8:1H44 AP8 H151 AP9:1H15 AP9 H152 AP9:2H15 AP9 H141 AP9:1H14 AP9 H142 AP9:2H14 AP9 H143 AP9:3H14 AP9 H161 AP9:1H16 AP9 H162 AP9:2H16 AP9 H163 AP9:3H16 AP9 H101 AP9:1H10 AP9 H102 AP9:2H10 AP9 H103 AP9:3H10 AP9 H111 AP9:1H11 AP9 H112 AP9:2H11 AP9 H113 AP9:3H11 AP9 H11 AP9:1H1 AP9 H12A AP9:2H1 AP9 H31 APA:1H3 APA H32 APA:2H3 APA HN11 APA:1HN1 APA HN12 APA:2HN1 APA HN11 APB:1HN1 APB HN12 APB:2HN1 APB HOG2 APC:2HOG APC HOG3 APC:3HOG APC HOB2 APC:2HOB APC HOA2 APC:2HOA APC H3A1 APC:1H3A APC H3A2 APC:2H3A APC H5'1 APC:1H5* APC H5'2 APC:2H5* APC H4' APC: H4* APC H3' APC: H3* APC HO3' APC:*HO3 APC H2' APC: H2* APC HO2' APC:*HO2 APC H1' APC: H1* APC HN61 APC:1HN6 APC HN62 APC:2HN6 APC HN1 APD:1HN APD HN2 APD:2HN APD HBC1 APD:1HBC APD HBC2 APD:2HBC APD H5C1 APD:1H5C APD H5C2 APD:2H5C APD H5C3 APD:3H5C APD H APE:1HN APE H2 APE:2HN APE HB2 APE:1HB APE HB3 APE:2HB APE HC21 APF:1HC2 APF HC22 APF:2HC2 APF HC23 APF:3HC2 APF H41 APF:1H4 APF H42 APF:2H4 APF H141 APG:1H14 APG H142 APG:2H14 APG H143 APG:3H14 APG H APH:1HN APH H2 APH:2HN APH HB2 APH:1HB APH HB3 APH:2HB APH HG21 APH:1HG2 APH HG22 APH:2HG2 APH H31 API:1H3 API H32 API:2H3 API H41 API:1H4 API H42 API:2H4 API H51 API:1H5 API H52 API:2H5 API HN21 API:1HN2 API HN22 API:2HN2 API HN61 API:1HN6 API HN62 API:2HN6 API HC APK: H APK H APK:1HN APK H2 APK:2HN APK HB2 APK:1HB APK HB3 APK:2HB APK HG2 APK:1HG APK HG3 APK:2HG APK HD2 APK:1HD APK HD3 APK:2HD APK HE2 APK:1HE APK HE3 APK:2HE APK HZ APK: HNZ APK H5'1 APK:1H5* APK H5'2 APK:2H5* APK H4' APK: H4* APK H3' APK: H3* APK HO3' APK:HO3* APK H2' APK: H2* APK HO2' APK:HO2* APK H1' APK: H1* APK HC2 APK: H2 APK HN61 APK:1HN6 APK HN62 APK:2HN6 APK HC21 APL:1HC2 APL HC22 APL:2HC2 APL HC23 APL:3HC2 APL H41 APL:1H4 APL H42 APL:2H4 APL H APM:1HN APM H2 APM:2HN APM HB2 APM:1HB APM HB3 APM:2HB APM HG21 APM:1HG2 APM HG22 APM:2HG2 APM H8'1 APN:1H8' APN H8'2 APN:2H8' APN H5'1 APN:1H5' APN H5'2 APN:2H5' APN H3'1 APN:1H3' APN H3'2 APN:2H3' APN H2'1 APN:1H2' APN H2'2 APN:2H2' APN H1'1 APN:1H1' APN H1'2 APN:2H1' APN H1'3 APN:3H1' APN HN61 APN:1HN6 APN HN62 APN:2HN6 APN HN21 APO:1HN2 APO HN22 APO:2HN2 APO HC61 APO:1HC6 APO HC62 APO:2HC6 APO HM1 APP:1HM APP HM2 APP:2HM APP HM3 APP:3HM APP H31 APP:1H3 APP H32 APP:2H3 APP H41 APP:1H4 APP H42 APP:2H4 APP H51 APP:1H5 APP H52 APP:2H5 APP H61 APP:1H6 APP H62 APP:2H6 APP H101 APQ:1H10 APQ H102 APQ:2H10 APQ H111 APQ:1H11 APQ H112 APQ:2H11 APQ H121 APQ:1H12 APQ H122 APQ:2H12 APQ H123 APQ:3H12 APQ H91 APQ:1H9 APQ H92 APQ:2H9 APQ HN11 APQ:1HN1 APQ H51 APQ:1H5 APQ HN41 APQ:1HN4 APQ HN42 APQ:2HN4 APQ H11 APQ:1H1 APQ HN21 APQ:1HN2 APQ HN22 APQ:2HN2 APQ H61 APR:1H6 APR H62 APR:2H6 APR H'1 APR:1H* APR H'2 APR:2H* APR HO'2 APR:2HO* APR H'3 APR:3H* APR HO'3 APR:3HO* APR H'4 APR:4H* APR H5'1 APR:1H5* APR H5'2 APR:2H5* APR HOA2 APR:2HOA APR HOB2 APR:2HOB APR H5R1 APR:1H5R APR H5R2 APR:2H5R APR HOR1 APR:1HOR APR HR'1 APR:1HR* APR HOR2 APR:2HOR APR HR'2 APR:2HR* APR HOR3 APR:3HOR APR HR'3 APR:3HR* APR HR'4 APR:4HR* APR H72 APS:2H7 APS H71 APS:1H7 APS H93 APS:3H9 APS H92 APS:2H9 APS H91 APS:1H9 APS H1C1 APS:1H1C APS H52 APS:2H5 APS H51 APS:1H5 APS H82 APT:2H8 APT H81 APT:1H8 APT H21 APT:1H2 APT H22 APT:2H2 APT HOA2 APU:2HOA APU HO5A APU:AHO5 APU H51A APU:AH51 APU H52A APU:AH52 APU H4B APU:AH4* APU H3B APU:AH3* APU H2B APU:AH2* APU HO2A APU:AHO2 APU H1B APU:AH1* APU H8A APU: AH8 APU H61A APU:AH61 APU H62A APU:AH62 APU H2A APU: AH2 APU H3U APU: UH3 APU H5U APU: UH5 APU H6U APU: UH6 APU H1D APU:UH1* APU H2D APU:UH2* APU HO2' APU:*HO2 APU H3D APU:UH3* APU H4D APU:UH4* APU H51U APU:UH51 APU H52U APU:UH52 APU HO2U APU:UHO2 APU HO3U APU:UHO3 APU H3C1 APV:1H3C APV H3C2 APV:2H3C APV H4C1 APV:1H4C APV H4C2 APV:2H4C APV H7C1 APV:1H7C APV H7C2 APV:2H7C APV H141 APV:1H14 APV H142 APV:2H14 APV H331 APV:1H33 APV H332 APV:2H33 APV H3B1 APW:1H3B APW H3B2 APW:2H3B APW H5'1 APW:1H5* APW H5'2 APW:2H5* APW H4' APW: H4* APW H3' APW: H3* APW H2' APW: H2* APW H1' APW: H1* APW HN61 APW:1HN6 APW HN62 APW:2HN6 APW HOM7 APX:7HOM APX H5M2 APX:2H5M APX H5M1 APX:1H5M APX H3O1 APX:1H3O APX H2O1 APX:1H2O APX HOB7 APX:7HOB APX H5B2 APX:2H5B APX H5B1 APX:1H5B APX H3O2 APX:2H3O APX H6A2 APX:2H6A APX H6A1 APX:1H6A APX HOP2 APX:2HOP APX HOP3 APX:3HOP APX HN1 APY:1HN APY HN2 APY:2HN APY HM1 APY:1HM APY HM2 APY:2HM APY H131 APZ:1H13 APZ H132 APZ:2H13 APZ H71 AQO:1H7 AQO H72 AQO:2H7 AQO HN61 AQP:1HN6 AQP HN62 AQP:2HN6 AQP H1' AQP: H1* AQP H4' AQP: H4* AQP H5'1 AQP:1H5* AQP H5'2 AQP:2H5* AQP H3' AQP: H3* AQP H2' AQP: H2* AQP HA11 AQS:1HA1 AQS HA12 AQS:2HA1 AQS HA21 AQS:1HA2 AQS HA22 AQS:2HA2 AQS HA31 AQS:1HA3 AQS HA32 AQS:2HA3 AQS HNA1 AQS:1HNA AQS HNA2 AQS:2HNA AQS HNA3 AQS:3HNA AQS HB11 AQS:1HB1 AQS HB12 AQS:2HB1 AQS HB21 AQS:1HB2 AQS HB22 AQS:2HB2 AQS HB31 AQS:1HB3 AQS HB32 AQS:2HB3 AQS HNB1 AQS:1HNB AQS HNB2 AQS:2HNB AQS HNB3 AQS:3HNB AQS H11 AQZ:1H1 AQZ H12A AQZ:2H1 AQZ H13 AQZ:3H1 AQZ H241 AQZ:1H24 AQZ H242 AQZ:2H24 AQZ H251 AQZ:1H25 AQZ H252 AQZ:2H25 AQZ H271 AQZ:1H27 AQZ H272 AQZ:2H27 AQZ H281 AQZ:1H28 AQZ H282 AQZ:2H28 AQZ H321 AQZ:1H32 AQZ H322 AQZ:2H32 AQZ H323 AQZ:3H32 AQZ H341 AQZ:1H34 AQZ H371 AQZ:1H37 AQZ H372 AQZ:2H37 AQZ H381 AQZ:1H38 AQZ H382 AQZ:2H38 AQZ H401 AQZ:1H40 AQZ H402 AQZ:2H40 AQZ H411 AQZ:1H41 AQZ H412 AQZ:2H41 AQZ H421 AQZ:1H42 AQZ H422 AQZ:2H42 AQZ H431 AQZ:1H43 AQZ H432 AQZ:2H43 AQZ HN11 AR1:1HN1 AR1 HN12 AR1:2HN1 AR1 HN13 AR1:3HN1 AR1 HN21 AR1:1HN2 AR1 HN22 AR1:2HN2 AR1 HN23 AR1:3HN2 AR1 HN31 AR1:1HN3 AR1 HN32 AR1:2HN3 AR1 HN33 AR1:3HN3 AR1 H1T1 AR1:1H1T AR1 H1T2 AR1:2H1T AR1 H2T1 AR1:1H2T AR1 H2T2 AR1:2H2T AR1 HNT1 AR1:1HNT AR1 HNT2 AR1:2HNT AR1 HNT3 AR1:3HNT AR1 HMT1 AR1:1HMT AR1 HMT2 AR1:2HMT AR1 HMT3 AR1:3HMT AR1 HB1 AR2:1HB AR2 HB2 AR2:2HB AR2 HG1 AR2:1HG AR2 HG2 AR2:2HG AR2 HD1 AR2:1HD AR2 HD2 AR2:2HD AR2 HH11 AR2:1HH1 AR2 HH21 AR2:1HH2 AR2 HH22 AR2:2HH2 AR2 HO21 AR2:1HO2 AR2 H5'1 AR3:1H5' AR3 H5'2 AR3:2H5' AR3 HN41 AR3:1HN4 AR3 HN42 AR3:2HN4 AR3 H AR4:1HN AR4 H2 AR4:2HN AR4 HB2 AR4:1HB AR4 HB3 AR4:2HB AR4 HG2 AR4:1HG AR4 HG3 AR4:2HG AR4 H5' AR4: H5* AR4 H5'1 AR4:1H5* AR4 H5'2 AR4:2H5* AR4 H4' AR4: H4* AR4 H1' AR4: H1* AR4 H3' AR4: H3* AR4 H3'1 AR4:1H3* AR4 HO2' AR4:HO2* AR4 H51 ARA:1H5 ARA H52 ARA:2H5 ARA H51 ARB:1H5 ARB H52 ARB:2H5 ARB H11 ARC:1H1 ARC H12 ARC:2H1 ARC H21 ARC:1H2 ARC H22 ARC:2H2 ARC H41 ARC:1H4 ARC H42 ARC:2H4 ARC H43 ARC:3H4 ARC H51 ARC:1H5 ARC H52 ARC:2H5 ARC H61 ARC:1H6 ARC H62 ARC:2H6 ARC H71 ARC:1H7 ARC H72 ARC:2H7 ARC H91 ARC:1H9 ARC H92 ARC:2H9 ARC H93 ARC:3H9 ARC H101 ARC:1H10 ARC H102 ARC:2H10 ARC H111 ARC:1H11 ARC H112 ARC:2H11 ARC H121 ARC:1H12 ARC H122 ARC:2H12 ARC H141 ARC:1H14 ARC H142 ARC:2H14 ARC H143 ARC:3H14 ARC H151 ARC:1H15 ARC H152 ARC:2H15 ARC H161 ARC:1H16 ARC H162 ARC:2H16 ARC H171 ARC:1H17 ARC H172 ARC:2H17 ARC H191 ARC:1H19 ARC H192 ARC:2H19 ARC H193 ARC:3H19 ARC H201 ARC:1H20 ARC H202 ARC:2H20 ARC H203 ARC:3H20 ARC H31 ARD:1H3 ARD H32 ARD:2H3 ARD H41 ARD:1H4 ARD H42 ARD:2H4 ARD H51 ARD:1H5 ARD H52 ARD:2H5 ARD H61 ARD:1H6 ARD H62 ARD:2H6 ARD H111 ARD:1H11 ARD H112 ARD:2H11 ARD H121 ARD:1H12 ARD H122 ARD:2H12 ARD H421 ARD:1H42 ARD H422 ARD:2H42 ARD H423 ARD:3H42 ARD H141 ARD:1H14 ARD H142 ARD:2H14 ARD H431 ARD:1H43 ARD H432 ARD:2H43 ARD H433 ARD:3H43 ARD H441 ARD:1H44 ARD H442 ARD:2H44 ARD H443 ARD:3H44 ARD H231 ARD:1H23 ARD H232 ARD:2H23 ARD H451 ARD:1H45 ARD H452 ARD:2H45 ARD H453 ARD:3H45 ARD H501 ARD:1H50 ARD H502 ARD:2H50 ARD H503 ARD:3H50 ARD H461 ARD:1H46 ARD H462 ARD:2H46 ARD H463 ARD:3H46 ARD H471 ARD:1H47 ARD H472 ARD:2H47 ARD H473 ARD:3H47 ARD H321 ARD:1H32 ARD H322 ARD:2H32 ARD H481 ARD:1H48 ARD H482 ARD:2H48 ARD H483 ARD:3H48 ARD H351 ARD:1H35 ARD H352 ARD:2H35 ARD H371 ARD:1H37 ARD H372 ARD:2H37 ARD H511 ARD:1H51 ARD H512 ARD:2H51 ARD H513 ARD:3H51 ARD H401 ARD:1H40 ARD H402 ARD:2H40 ARD H411 ARD:1H41 ARD H412 ARD:2H41 ARD H551 ARD:1H55 ARD H552 ARD:2H55 ARD H553 ARD:3H55 ARD H6A1 ARE:1H6A ARE H6A2 ARE:2H6A ARE H6B1 ARE:1H6B ARE H6B2 ARE:2H6B ARE H6C1 ARE:1H6C ARE H6C2 ARE:2H6C ARE H6C3 ARE:3H6C ARE H7H1 ARE:1H7H ARE H7H2 ARE:2H7H ARE H6G1 ARE:1H6G ARE H6G2 ARE:2H6G ARE HN1 ARF:1HN ARF HN2 ARF:2HN ARF H2 ARG: HN2 ARG HB2 ARG:1HB ARG HB3 ARG:2HB ARG HG2 ARG:1HG ARG HG3 ARG:2HG ARG HD2 ARG:1HD ARG HD3 ARG:2HD ARG HH11 ARG:1HH1 ARG HH12 ARG:2HH1 ARG HH21 ARG:1HH2 ARG HH22 ARG:2HH2 ARG HC1 ARH:1HC ARH H131 ARH:1H13 ARH H132 ARH:2H13 ARH HC41 ARH:1HC4 ARH H171 ARH:1H17 ARH H172 ARH:2H17 ARH H173 ARH:3H17 ARH H251 ARH:1H25 ARH H252 ARH:2H25 ARH H253 ARH:3H25 ARH H331 ARH:1H33 ARH H332 ARH:2H33 ARH HO43 ARH:3HO4 ARH HC83 ARH:3HC8 ARH HC93 ARH:3HC9 ARH HC04 ARH:4HC0 ARH HC14 ARH:4HC1 ARH HC24 ARH:4HC2 ARH H21 ARI:1H2 ARI H22 ARI:2H2 ARI H31 ARI:1H3 ARI H32 ARI:2H3 ARI H41 ARI:1H4 ARI H42 ARI:2H4 ARI H43 ARI:3H4 ARI H61 ARI:1H6 ARI H62 ARI:2H6 ARI H63 ARI:3H6 ARI H161 ARL:1H16 ARL H162 ARL:2H16 ARL H163 ARL:3H16 ARL H71 ARL:1H7 ARL H72 ARL:2H7 ARL H73 ARL:3H7 ARL H111 ARL:1H11 ARL H112 ARL:2H11 ARL H113 ARL:3H11 ARL H151 ARL:1H15 ARL H152 ARL:2H15 ARL H153 ARL:3H15 ARL H191 ARL:1H19 ARL H192 ARL:2H19 ARL H193 ARL:3H19 ARL H241 ARL:1H24 ARL H242 ARL:2H24 ARL H243 ARL:3H24 ARL H281 ARL:1H28 ARL H282 ARL:2H28 ARL H283 ARL:3H28 ARL H321 ARL:1H32 ARL H322 ARL:2H32 ARL H323 ARL:3H32 ARL H ARM:1HN ARM H2 ARM:2HN ARM HB2 ARM:1HB ARM HB3 ARM:2HB ARM HG2 ARM:1HG ARM HG3 ARM:2HG ARM HD2 ARM:1HD ARM HD3 ARM:2HD ARM HE ARM: HNE ARM HH1 ARM: HN1 ARM HH21 ARM:1HN2 ARM HH22 ARM:2HN2 ARM HM1 ARM:1HM ARM HM2 ARM:2HM ARM HM3 ARM:3HM ARM HN1 ARN:1HN ARN H11 ARN:1H1 ARN H21 ARN:1H2 ARN H22 ARN:2H2 ARN H31 ARN:1H3 ARN H32 ARN:2H3 ARN HCA1 ARN:1HCA ARN HCA2 ARN:2HCA ARN HC1 ARN:1HC ARN H2 ARO: HN2 ARO HB2 ARO:1HB ARO HB3 ARO:2HB ARO HG ARO:1HG ARO HH ARO: HOH ARO HD2 ARO:1HD ARO HD3 ARO:2HD ARO HH11 ARO:1HH1 ARO HH12 ARO:2HH1 ARO HH21 ARO:1HH2 ARO HH22 ARO:2HH2 ARO H72 ARP:2H7 ARP H71 ARP:1H7 ARP H93 ARP:3H9 ARP H92 ARP:2H9 ARP H91 ARP:1H9 ARP H1C1 ARP:1H1C ARP H52 ARP:2H5 ARP H51 ARP:1H5 ARP H21A ARQ:1H2 ARQ H22 ARQ:2H2 ARQ H23 ARQ:3H2 ARQ H31 ARQ:1H3 ARQ H32 ARQ:2H3 ARQ H33 ARQ:3H3 ARQ H41 ARQ:1H4 ARQ H42 ARQ:2H4 ARQ H43 ARQ:3H4 ARQ H61 ARQ:1H6 ARQ H62 ARQ:2H6 ARQ H141 ARQ:1H14 ARQ H142 ARQ:2H14 ARQ H221 ARQ:1H22 ARQ H222 ARQ:2H22 ARQ H223 ARQ:3H22 ARQ H151 ARQ:1H15 ARQ H152 ARQ:2H15 ARQ H121 ARR:1H12 ARR H122 ARR:2H12 ARR H131 ARR:1H13 ARR H132 ARR:2H13 ARR H141 ARR:1H14 ARR H142 ARR:2H14 ARR H2 ARV: HN2 ARV HB2 ARV:1HB ARV HB3 ARV:2HB ARV HG2 ARV:1HG ARV HG3 ARV:2HG ARV HD2 ARV:1HD ARV HD3 ARV:2HD ARV HH11 ARV:2HH1 ARV HH12 ARV:HNH1 ARV HH2 ARV:1HH2 ARV HC11 ARV:1HC1 ARV HC12 ARV:2HC1 ARV HC31 ARV:1HC3 ARV HC32 ARV:2HC3 ARV H5C1 ARW:1H5C ARW H5C2 ARW:2H5C ARW HMC1 ARW:1HMC ARW HMC2 ARW:2HMC ARW HMC3 ARW:3HMC ARW H501 ARY:1H50 ARY H502 ARY:2H50 ARY H511 ARY:1H51 ARY H512 ARY:2H51 ARY H521 ARY:1H52 ARY H522 ARY:2H52 ARY H531 ARY:1H53 ARY H532 ARY:2H53 ARY H541 ARY:1H54 ARY H542 ARY:2H54 ARY H551 ARY:1H55 ARY H552 ARY:2H55 ARY H561 ARY:1H56 ARY H562 ARY:2H56 ARY H581 ARY:1H58 ARY H582 ARY:2H58 ARY H583 ARY:3H58 ARY H591 ARY:1H59 ARY H592 ARY:2H59 ARY H593 ARY:3H59 ARY H481 ARY:1H48 ARY H482 ARY:2H48 ARY H491 ARY:1H49 ARY H492 ARY:2H49 ARY H493 ARY:3H49 ARY H31 ARY:1H3 ARY H32 ARY:2H3 ARY H91 ARY:1H9 ARY H92 ARY:2H9 ARY H93 ARY:3H9 ARY H131 ARY:1H13 ARY H132 ARY:2H13 ARY H171 ARY:1H17 ARY H172 ARY:2H17 ARY H173 ARY:3H17 ARY H301 ARY:1H30 ARY H302 ARY:2H30 ARY H303 ARY:3H30 ARY H351 ARY:1H35 ARY H352 ARY:2H35 ARY HOP1 AS:1HOP AS HOP3 AS:3HOP AS H5' AS:1H5* AS H5'' AS:2H5* AS H4' AS: H4* AS H3' AS: H3* AS HO3' AS:*HO3 AS H2' AS:1H2* AS H2'' AS:2H2* AS H1' AS: H1* AS HN61 AS:1HN6 AS HN62 AS:2HN6 AS H11 AS0:1H1 AS0 H12A AS0:2H1 AS0 H13 AS0:3H1 AS0 H31A AS0:1H3 AS0 H32 AS0:2H3 AS0 H51 AS0:1H5 AS0 H52 AS0:2H5 AS0 H61 AS0:1H6 AS0 H62 AS0:2H6 AS0 H91 AS0:1H9 AS0 H92 AS0:2H9 AS0 H101 AS0:1H10 AS0 H102 AS0:2H10 AS0 H151 AS0:1H15 AS0 H152 AS0:2H15 AS0 H161 AS0:1H16 AS0 H162 AS0:2H16 AS0 H201 AS0:1H20 AS0 H202 AS0:2H20 AS0 H221 AS0:1H22 AS0 H222 AS0:2H22 AS0 H223 AS0:3H22 AS0 H331 AS0:1H33 AS0 H332 AS0:2H33 AS0 H333 AS0:3H33 AS0 HN41 AS1:1HN4 AS1 HN42 AS1:2HN4 AS1 H31 AS1:1H3 AS1 H32 AS1:2H3 AS1 H21 AS1:1H2 AS1 H22 AS1:2H2 AS1 H11 AS1:1H1 AS1 H12 AS1:2H1 AS1 HB1 AS1:1HB AS1 HB2 AS1:2HB AS1 HB1 AS2:1HB AS2 HB2 AS2:2HB AS2 HN1 AS2:1HN AS2 HN2 AS2:2HN AS2 HN3 AS2:3HN AS2 HN81 AS3:1HN8 AS3 HN82 AS3:2HN8 AS3 H91 AS3:1H9 AS3 H92 AS3:2H9 AS3 H101 AS3:1H10 AS3 H102 AS3:2H10 AS3 H111 AS3:1H11 AS3 H112 AS3:2H11 AS3 H113 AS3:3H11 AS3 H71 AS3:1H7 AS3 H72 AS3:2H7 AS3 H73 AS3:3H7 AS3 H51 AS4:1H5 AS4 H52 AS4:2H5 AS4 H151 AS4:1H15 AS4 H152 AS4:2H15 AS4 H153 AS4:3H15 AS4 H161 AS4:1H16 AS4 H162 AS4:2H16 AS4 H191 AS4:1H19 AS4 H192 AS4:2H19 AS4 H201 AS4:1H20 AS4 H202 AS4:2H20 AS4 H111 AS4:1H11 AS4 H112 AS4:2H11 AS4 H121 AS4:1H12 AS4 H122 AS4:2H12 AS4 H131 AS4:1H13 AS4 H132 AS4:2H13 AS4 H141 AS4:1H14 AS4 H142 AS4:2H14 AS4 HAA1 AS9:1HAA AS9 HAA2 AS9:2HAA AS9 HAA3 AS9:3HAA AS9 H AS9: HN AS9 HXT AS9:HOXT AS9 HB2 AS9:1HB AS9 HB3 AS9:2HB AS9 HD1 AS9:HOD1 AS9 H2 ASA: HN2 ASA HB2 ASA:1HB ASA HB3 ASA:2HB ASA H2 ASB: HN2 ASB HB2 ASB:1HB ASB HB3 ASB:2HB ASB HC21 ASB:1HC2 ASB HC22 ASB:2HC2 ASB H61 ASC:1H6 ASC H62 ASC:2H6 ASC H11 ASD:1H1 ASD H12 ASD:2H1 ASD H111 ASD:1H11 ASD H112 ASD:2H11 ASD H121 ASD:1H12 ASD H122 ASD:2H12 ASD H151 ASD:1H15 ASD H152 ASD:2H15 ASD H161 ASD:1H16 ASD H162 ASD:2H16 ASD H181 ASD:1H18 ASD H182 ASD:2H18 ASD H183 ASD:3H18 ASD H191 ASD:1H19 ASD H192 ASD:2H19 ASD H193 ASD:3H19 ASD H21 ASD:1H2 ASD H22 ASD:2H2 ASD H61 ASD:1H6 ASD H62 ASD:2H6 ASD H71 ASD:1H7 ASD H72 ASD:2H7 ASD H111 ASE:1H11 ASE H112 ASE:2H11 ASE H121 ASE:1H12 ASE H122 ASE:2H12 ASE H151 ASE:1H15 ASE H152 ASE:2H15 ASE H153 ASE:3H15 ASE H2 ASI: HN2 ASI H21 ASI:1H2 ASI H22 ASI:2H2 ASI H ASK:1HN ASK H2 ASK:2HN ASK HB2 ASK:1HB ASK HB3 ASK:2HB ASK HD2 ASK: HOD ASK HM1 ASK:1HM ASK HM2 ASK:2HM ASK HM3 ASK:3HM ASK H2 ASL: HN2 ASL HB1 ASL:1HB ASL HB2 ASL:2HB ASL HC31 ASL:1HC3 ASL HC32 ASL:2HC3 ASL HC33 ASL:3HC3 ASL H ASM:1HN ASM H2 ASM:2HN ASM HB2 ASM:1HB ASM HB3 ASM:2HB ASM H2 ASN: HN2 ASN HB2 ASN:1HB ASN HB3 ASN:2HB ASN HD21 ASN:1HD2 ASN HD22 ASN:2HD2 ASN H11 ASO:1H1 ASO H12 ASO:2H1 ASO H61 ASO:1H6 ASO H62 ASO:2H6 ASO H2 ASP: HN2 ASP HB2 ASP:1HB ASP HB3 ASP:2HB ASP H2 ASQ: HN2 ASQ HB2 ASQ:1HB ASQ HB3 ASQ:2HB ASQ HOP2 ASQ:2HOP ASQ HOP3 ASQ:3HOP ASQ H71 ASR:1H7 ASR H72 ASR:2H7 ASR HOP2 ASU:2HOP ASU HOP3 ASU:3HOP ASU HO'1 ASU:1HO* ASU H2' ASU:1H2* ASU H2'' ASU:2H2* ASU H5' ASU:1H5* ASU H5'' ASU:2H5* ASU H4' ASU: H4* ASU H1' ASU: H1* ASU H3' ASU: H3* ASU HO'3 ASU:3HO* ASU H3C1 ASV:1H3C ASV H3C2 ASV:2H3C ASV H4C1 ASV:1H4C ASV H4C2 ASV:2H4C ASV H7C1 ASV:1H7C ASV H7C2 ASV:2H7C ASV H141 ASV:1H14 ASV H142 ASV:2H14 ASV H161 ASV:1H16 ASV H162 ASV:2H16 ASV H321 ASV:1H32 ASV H331 ASV:1H33 ASV H332 ASV:2H33 ASV HB1 ASX:1HB ASX HB2 ASX:2HB ASX H11 AT2:1H1 AT2 H12 AT2:2H1 AT2 H13 AT2:3H1 AT2 H101 AT2:1H10 AT2 H102 AT2:2H10 AT2 H111 AT2:1H11 AT2 H112 AT2:2H11 AT2 H131 AT2:1H13 AT2 H132 AT2:2H13 AT2 H141 AT2:1H14 AT2 H142 AT2:2H14 AT2 H181 AT2:1H18 AT2 H182 AT2:2H18 AT2 H191 AT2:1H19 AT2 H192 AT2:2H19 AT2 H193 AT2:3H19 AT2 H2C1 AT3:1H2C AT3 H2C2 AT3:2H2C AT3 H3C1 AT3:1H3C AT3 H3C2 AT3:2H3C AT3 H6C1 AT3:1H6C AT3 H6C2 AT3:2H6C AT3 H6C3 AT3:3H6C AT3 H8C1 AT3:1H8C AT3 H8C2 AT3:2H8C AT3 H8C3 AT3:3H8C AT3 H9C1 AT3:1H9C AT3 H9C2 AT3:2H9C AT3 H9C3 AT3:3H9C AT3 H103 AT3:3H10 AT3 H101 AT3:1H10 AT3 H102 AT3:2H10 AT3 H5'1 AT4:1H5* AT4 H5'2 AT4:2H5* AT4 H4' AT4: H4* AT4 H3' AT4: H3* AT4 HO3' AT4:HO3* AT4 H2' AT4: H2* AT4 H1' AT4: H1* AT4 HN61 AT4:1HN6 AT4 HN62 AT4:2HN6 AT4 HO2' AT4:HO2* AT4 H111 AT5:1H11 AT5 H112 AT5:2H11 AT5 H171 AT5:1H17 AT5 H172 AT5:2H17 AT5 H173 AT5:3H17 AT5 H141 AT5:1H14 AT5 H142 AT5:2H14 AT5 H101 AT5:1H10 AT5 H102 AT5:2H10 AT5 H103 AT5:3H10 AT5 HM21 AT5:1HM2 AT5 HM22 AT5:2HM2 AT5 HM23 AT5:3HM2 AT5 HM31 AT5:1HM3 AT5 HM32 AT5:2HM3 AT5 HM33 AT5:3HM3 AT5 H101 AT6:1H10 AT6 H102 AT6:2H10 AT6 H111 AT6:1H11 AT6 H112 AT6:2H11 AT6 HN71 AT6:1HN7 AT6 HN72 AT6:2HN7 AT6 H91 AT6:1H9 AT6 H92 AT6:2H9 AT6 H93 AT6:3H9 AT6 HN'1 ATA:1HN' ATA HN'2 ATA:2HN' ATA HB'1 ATA:1HB' ATA HB'2 ATA:2HB' ATA HG'1 ATA:1HG' ATA HG'2 ATA:2HG' ATA HO'2 ATA:2HO' ATA HB1 ATA:1HB ATA HB2 ATA:2HB ATA H121 ATA:1H12 ATA H122 ATA:2H12 ATA H131 ATA:1H13 ATA H132 ATA:2H13 ATA H133 ATA:3H13 ATA H91 ATA:1H9 ATA H92 ATA:2H9 ATA H93 ATA:3H9 ATA H101 ATA:1H10 ATA H102 ATA:2H10 ATA H103 ATA:3H10 ATA HN' ATA: HN" ATA HA'1 ATA:1HA" ATA HA'2 ATA:2HA" ATA HO' ATA: HO" ATA HOP2 ATB:2HOP ATB HOP3 ATB:3HOP ATB H5'1 ATB:1H5* ATB H5'2 ATB:2H5* ATB H4' ATB: H4* ATB H3' ATB: H3* ATB HO'3 ATB:3HO* ATB H2'1 ATB:1H2* ATB H2'2 ATB:2H2* ATB H1' ATB: H1* ATB HN21 ATC:1HN2 ATC HN22 ATC:2HN2 ATC H421 ATC:1H42 ATC H422 ATC:2H42 ATC H423 ATC:3H42 ATC H431 ATC:1H43 ATC H432 ATC:2H43 ATC H433 ATC:3H43 ATC H51A ATC:1H5 ATC H52 ATC:2H5 ATC H61 ATC:1H6 ATC H62 ATC:2H6 ATC HOC1 ATC:1HOC ATC H921 ATC:1H92 ATC H922 ATC:2H92 ATC H931 ATC:1H93 ATC H932 ATC:2H93 ATC H933 ATC:3H93 ATC H941 ATC:1H94 ATC H942 ATC:2H94 ATC H943 ATC:3H94 ATC HOP2 ATD:2HOP ATD HOP3 ATD:3HOP ATD HO'5 ATD:5HO* ATD H5' ATD:1H5* ATD H5'' ATD:2H5* ATD H4' ATD: H4* ATD H3' ATD: H3* ATD H2' ATD:1H2* ATD H2'' ATD:2H2* ATD H1' ATD: H1* ATD H71 ATD:1H5M ATD H72 ATD:2H5M ATD H73 ATD:3H5M ATD H21 ATE:1H2 ATE H22 ATE:2H2 ATE H11 ATE:1H1 ATE H12 ATE:2H1 ATE H41 ATE:1H4 ATE H42 ATE:2H4 ATE H61 ATE:1H6 ATE H62 ATE:2H6 ATE H191 ATE:1H19 ATE H192 ATE:2H19 ATE H193 ATE:3H19 ATE H111 ATE:1H11 ATE H112 ATE:2H11 ATE H71 ATE:1H7 ATE H72 ATE:2H7 ATE H151 ATE:1H15 ATE H152 ATE:2H15 ATE H121 ATE:1H12 ATE H122 ATE:2H12 ATE H181 ATE:1H18 ATE H182 ATE:2H18 ATE H183 ATE:3H18 ATE HOG2 ATF:2HOG ATF HOG3 ATF:3HOG ATF HOB2 ATF:2HOB ATF HOA2 ATF:2HOA ATF H5'1 ATF:1H5* ATF H5'2 ATF:2H5* ATF H4' ATF: H4* ATF H3' ATF: H3* ATF HO3' ATF:*HO3 ATF H2' ATF: H2* ATF HO2' ATF:*HO2 ATF H1' ATF: H1* ATF HN61 ATF:1HN6 ATF HN62 ATF:2HN6 ATF HOG2 ATG:2HOG ATG HSG3 ATG:3HSG ATG HOB2 ATG:2HOB ATG HOA2 ATG:2HOA ATG H5'1 ATG:1H5* ATG H5'2 ATG:2H5* ATG H4' ATG: H4* ATG H3' ATG: H3* ATG HO3' ATG:*HO3 ATG H2' ATG: H2* ATG HO2' ATG:*HO2 ATG H1' ATG: H1* ATG HN61 ATG:1HN6 ATG HN62 ATG:2HN6 ATG HN11 ATI:1HN1 ATI HN12 ATI:2HN1 ATI H51 ATI:1H5 ATI H52 ATI:2H5 ATI H71 ATI:1H7 ATI H72 ATI:2H7 ATI H73 ATI:3H7 ATI H81 ATI:1H8 ATI H82 ATI:2H8 ATI H83 ATI:3H8 ATI H161 ATI:1H16 ATI H162 ATI:2H16 ATI H163 ATI:3H16 ATI H171 ATI:1H17 ATI H172 ATI:2H17 ATI H173 ATI:3H17 ATI H231 ATI:1H23 ATI H232 ATI:2H23 ATI H233 ATI:3H23 ATI H241 ATI:1H24 ATI H242 ATI:2H24 ATI H243 ATI:3H24 ATI H291 ATI:1H29 ATI H292 ATI:2H29 ATI H1A1 ATJ:1H1A ATJ H2B1 ATJ:1H2B ATJ H2B2 ATJ:2H2B ATJ H1B1 ATJ:1H1B ATJ H1B2 ATJ:2H1B ATJ H1B3 ATJ:3H1B ATJ H5' ATL:1H5* ATL H5'' ATL:2H5* ATL H3' ATL: H3* ATL H2' ATL:1H2* ATL H1' ATL: H1* ATL H9'1 ATL:1H9* ATL H9'2 ATL:2H9* ATL H71 ATL:1H5M ATL H72 ATL:2H5M ATL H73 ATL:3H5M ATL HOP2 ATM:2HOP ATM HOP3 ATM:3HOP ATM H5' ATM:1H5* ATM H5'' ATM:2H5* ATM H4' ATM: H4* ATM H3' ATM: H3* ATM H2' ATM:1H2* ATM H2'' ATM:2H2* ATM H1' ATM: H1* ATM H51 ATM:1H5 ATM H52 ATM:2H5 ATM H53 ATM:3H5 ATM HB1 ATN:1HB ATN HB2 ATN:2HB ATN HN1 ATN:1HN ATN HN2 ATN:2HN ATN HB11 ATN:1HB1 ATN HB12 ATN:2HB1 ATN HG11 ATN:1HG1 ATN HG12 ATN:2HG1 ATN HD1A ATN:1HD ATN HD2A ATN:2HD ATN HB21 ATN:1HB2 ATN HB22 ATN:2HB2 ATN HG21 ATN:1HG2 ATN HG22 ATN:2HG2 ATN HD31 ATN:1HD3 ATN HD32 ATN:2HD3 ATN HB31 ATN:1HB3 ATN HB32 ATN:2HB3 ATN HB33 ATN:3HB3 ATN HN41 ATN:1HN4 ATN HN42 ATN:2HN4 ATN H13 ATO:3H1 ATO H12 ATO:2H1 ATO H11 ATO:1H1 ATO H32 ATO:2H3 ATO H31 ATO:1H3 ATO HOG2 ATP:2HOG ATP HOG3 ATP:3HOG ATP HOB2 ATP:2HOB ATP HOA2 ATP:2HOA ATP H5'1 ATP:1H5* ATP H5'2 ATP:2H5* ATP H4' ATP: H4* ATP H3' ATP: H3* ATP HO3' ATP:*HO3 ATP H2' ATP: H2* ATP HO2' ATP:*HO2 ATP H1' ATP: H1* ATP HN61 ATP:1HN6 ATP HN62 ATP:2HN6 ATP H41 ATQ:1H4 ATQ H42 ATQ:2H4 ATQ H51 ATQ:1H5 ATQ H52 ATQ:2H5 ATQ HN21 ATQ:1HN2 ATQ HN22 ATQ:2HN2 ATQ HOB2 ATR:2HOB ATR HOB3 ATR:3HOB ATR HOA2 ATR:2HOA ATR H5'1 ATR:1H5* ATR H5'2 ATR:2H5* ATR H4' ATR: H4* ATR H3' ATR: H3* ATR HO3' ATR:*HO3 ATR H2' ATR: H2* ATR HOP2 ATR:2HOP ATR HOP3 ATR:3HOP ATR H1' ATR: H1* ATR HN61 ATR:1HN6 ATR HN62 ATR:2HN6 ATR H5'1 ATS:1H5' ATS H5'2 ATS:2H5' ATS HO2' ATS:'HO2 ATS HO3' ATS:'HO3 ATS HN61 ATS:1HN6 ATS HN62 ATS:2HN6 ATS H3B1 ATS:1H3B ATS H3B2 ATS:2H3B ATS H31 ATT:1H3 ATT H32 ATT:2H3 ATT H33 ATT:3H3 ATT H41 ATT:1H4 ATT H42 ATT:2H4 ATT HC31 ATU:1HC3 ATU HC32 ATU:2HC3 ATU HN1 ATX:1HN ATX HN2 ATX:2HN ATX HB1 ATX:1HB ATX HB2 ATX:2HB ATX HB3 ATX:3HB ATX H71 ATX:1H7 ATX H72 ATX:2H7 ATX H73 ATX:3H7 ATX H81 ATX:1H8 ATX H82 ATX:2H8 ATX H83 ATX:3H8 ATX H91 ATX:1H9 ATX H92 ATX:2H9 ATX H93 ATX:3H9 ATX HPA2 ATY:2HPA ATY HPB2 ATY:2HPB ATY HPB3 ATY:3HPB ATY H5'2 ATY:2H5* ATY H5'1 ATY:1H5* ATY H4' ATY: H4* ATY H3' ATY: H3* ATY HHR3 ATY:3HHR ATY HHR2 ATY:2HHR ATY HHR1 ATY:1HHR ATY H2'2 ATY:2H2* ATY H2'1 ATY:1H2* ATY H1' ATY: H1* ATY H5M3 ATY:3H5M ATY H5M2 ATY:2H5M ATY H5M1 ATY:1H5M ATY H91 ATZ:1H9 ATZ H92 ATZ:2H9 ATZ H93 ATZ:3H9 ATZ H101 ATZ:1H10 ATZ H102 ATZ:2H10 ATZ H103 ATZ:3H10 ATZ H121 ATZ:1H12 ATZ H122 ATZ:2H12 ATZ H131 ATZ:1H13 ATZ H132 ATZ:2H13 ATZ H133 ATZ:3H13 ATZ H141 AU4:1H14 AU4 H142 AU4:2H14 AU4 H143 AU4:3H14 AU4 H151 AU4:1H15 AU4 H152 AU4:2H15 AU4 H153 AU4:3H15 AU4 HN81 AU4:1HN8 AU4 HN82 AU4:2HN8 AU4 H171 AU4:1H17 AU4 H172 AU4:2H17 AU4 H173 AU4:3H17 AU4 H161 AU4:1H16 AU4 H162 AU4:2H16 AU4 H163 AU4:3H16 AU4 H21 AUA:1H2 AUA H22 AUA:2H2 AUA H51 AUA:1H5 AUA H52 AUA:2H5 AUA H201 AUA:1H20 AUA H202 AUA:2H20 AUA H203 AUA:3H20 AUA H241 AUA:1H24 AUA H242 AUA:2H24 AUA H291 AUA:1H29 AUA H292 AUA:2H29 AUA H293 AUA:3H29 AUA H331 AUA:1H33 AUA H332 AUA:2H33 AUA H333 AUA:3H33 AUA H511 AUA:1H51 AUA H512 AUA:2H51 AUA H551 AUA:1H55 AUA H552 AUA:2H55 AUA H671 AUA:1H67 AUA H672 AUA:2H67 AUA H673 AUA:3H67 AUA H711 AUA:1H71 AUA H712 AUA:2H71 AUA H713 AUA:3H71 AUA H791 AUA:1H79 AUA H792 AUA:2H79 AUA H821 AUA:1H82 AUA H822 AUA:2H82 AUA H851 AUA:1H85 AUA H852 AUA:2H85 AUA H881 AUA:1H88 AUA H882 AUA:2H88 AUA H883 AUA:3H88 AUA H921 AUA:1H92 AUA H922 AUA:2H92 AUA H971 AUA:1H97 AUA H972 AUA:2H97 AUA H973 AUA:3H97 AUA H981 AUA:1H98 AUA H982 AUA:2H98 AUA H983 AUA:3H98 AUA H991 AUA:1H99 AUA H992 AUA:2H99 AUA H993 AUA:3H99 AUA H31 AUP:1H3 AUP H32 AUP:2H3 AUP H41 AUP:1H4 AUP H42 AUP:2H4 AUP H51 AUP:1H5 AUP H52 AUP:2H5 AUP H61 AUP:1H6 AUP H62 AUP:2H6 AUP H11A AUR:1H1 AUR H12A AUR:2H1 AUR H13A AUR:3H1 AUR H21 AUR:1H2 AUR H22 AUR:2H2 AUR H201 AUR:1H20 AUR H202 AUR:2H20 AUR H203 AUR:3H20 AUR H211 AUR:1H21 AUR H212 AUR:2H21 AUR H213 AUR:3H21 AUR H241 AUR:1H24 AUR H242 AUR:2H24 AUR H243 AUR:3H24 AUR H221 AUR:1H22 AUR H222 AUR:2H22 AUR H223 AUR:3H22 AUR H231 AUR:1H23 AUR H232 AUR:2H23 AUR H233 AUR:3H23 AUR HOB2 AV2:2HOB AV2 HOB3 AV2:3HOB AV2 HOA2 AV2:2HOA AV2 H5'1 AV2:1H5* AV2 H5'2 AV2:2H5* AV2 H4' AV2: H4* AV2 H3' AV2: H3* AV2 H2' AV2: H2* AV2 H1' AV2: H1* AV2 HN61 AV2:1HN6 AV2 HN62 AV2:2HN6 AV2 HOP3 AVC:3HOP AVC HOP2 AVC:2HOP AVC H5' AVC:1H5* AVC H5'' AVC:2H5* AVC H4' AVC: H4* AVC H3' AVC: H3* AVC H2' AVC: H2* AVC H1' AVC: H1* AVC H61 AVC:1H6 AVC H62 AVC:2H6 AVC HN11 AVG:1HN1 AVG HN12 AVG:2HN1 AVG HC31 AVG:1HC3 AVG HC32 AVG:2HC3 AVG HC41 AVG:1HC4 AVG HC42 AVG:2HC4 AVG HC51 AVG:1HC5 AVG HC52 AVG:2HC5 AVG HC61 AVG:1HC6 AVG HC62 AVG:2HC6 AVG HN21 AVG:1HN2 AVG HN22 AVG:2HN2 AVG H2A1 AVP:1H2A AVP H'51 AVP:1H'5 AVP H'52 AVP:2H'5 AVP H'41 AVP:1H'4 AVP H'42 AVP:2H'4 AVP H'11 AVP:1H'1 AVP H'12 AVP:2H'1 AVP HN21 AVP:1HN2 AVP HN22 AVP:2HN2 AVP HN11 AVP:1HN1 AVP HC81 AVP:1HC8 AVP H2B1 AVP:1H2B AVP H1G1 AVP:1H1G AVP H2G1 AVP:1H2G AVP H31 AXD:1H3 AXD H32 AXD:2H3 AXD H41 AXD:1H4 AXD H42 AXD:2H4 AXD H61 AXD:1H6 AXD H62 AXD:2H6 AXD H71 AXD:1H7 AXD H72 AXD:2H7 AXD H111 AXD:1H11 AXD H112 AXD:2H11 AXD H121 AXD:1H12 AXD H122 AXD:2H12 AXD H131 AXD:1H13 AXD H132 AXD:2H13 AXD H141 AXD:1H14 AXD H142 AXD:2H14 AXD H171 AXD:1H17 AXD H172 AXD:2H17 AXD H261 AXD:1H26 AXD H262 AXD:2H26 AXD H263 AXD:3H26 AXD H81 AXF:1H8 AXF H82 AXF:2H8 AXF H111 AXF:1H11 AXF H112 AXF:2H11 AXF H141 AXF:1H14 AXF H142 AXF:2H14 AXF H271 AXF:1H27 AXF H272 AXF:2H27 AXF H311 AXF:1H31 AXF H312 AXF:2H31 AXF H381 AXF:1H38 AXF H382 AXF:2H38 AXF H451 AXF:1H45 AXF H452 AXF:2H45 AXF H501 AXF:1H50 AXF H502 AXF:2H50 AXF H503 AXF:3H50 AXF H581 AXF:1H58 AXF H582 AXF:2H58 AXF H611 AXF:1H61 AXF H612 AXF:2H61 AXF H641 AXF:1H64 AXF H642 AXF:2H64 AXF H671 AXF:1H67 AXF H672 AXF:2H67 AXF H673 AXF:3H67 AXF H721 AXF:1H72 AXF H722 AXF:2H72 AXF H723 AXF:3H72 AXF H511 AXL:1H51 AXL H512 AXL:2H51 AXL H513 AXL:3H51 AXL H521 AXL:1H52 AXL H522 AXL:2H52 AXL H523 AXL:3H52 AXL H62O AXL:OH62 AXL H111 AXL:1H11 AXL H112 AXL:2H11 AXL H18O AXL:OH18 AXL H31 AXP:1H3 AXP H32 AXP:2H3 AXP H91 AXP:1H9 AXP H92 AXP:2H9 AXP H111 AXP:1H11 AXP H112 AXP:2H11 AXP H113 AXP:3H11 AXP HOP2 AXP:2HOP AXP HOP3 AXP:3HOP AXP H21 AXQ:1H2 AXQ H22 AXQ:2H2 AXQ H171 AXQ:1H17 AXQ H172 AXQ:2H17 AXQ H211 AXQ:1H21 AXQ H212 AXQ:2H21 AXQ H281 AXQ:1H28 AXQ H282 AXQ:2H28 AXQ H371 AXQ:1H37 AXQ H372 AXQ:2H37 AXQ H373 AXQ:3H37 AXQ H411 AXQ:1H41 AXQ H412 AXQ:2H41 AXQ H413 AXQ:3H41 AXQ H451 AXQ:1H45 AXQ H452 AXQ:2H45 AXQ H453 AXQ:3H45 AXQ H501 AXQ:1H50 AXQ H502 AXQ:2H50 AXQ H503 AXQ:3H50 AXQ H591 AXQ:1H59 AXQ H592 AXQ:2H59 AXQ H641 AXQ:1H64 AXQ H642 AXQ:2H64 AXQ H643 AXQ:3H64 AXQ H761 AXQ:1H76 AXQ H762 AXQ:2H76 AXQ H763 AXQ:3H76 AXQ H801 AXQ:1H80 AXQ H802 AXQ:2H80 AXQ H803 AXQ:3H80 AXQ H881 AXQ:1H88 AXQ H882 AXQ:2H88 AXQ H911 AXQ:1H91 AXQ H912 AXQ:2H91 AXQ H941 AXQ:1H94 AXQ H942 AXQ:2H94 AXQ H971 AXQ:1H97 AXQ H972 AXQ:2H97 AXQ H973 AXQ:3H97 AXQ HC21 AXT:1HC2 AXT HC22 AXT:2HC2 AXT H161 AXT:1H16 AXT H162 AXT:2H16 AXT H163 AXT:3H16 AXT H171 AXT:1H17 AXT H172 AXT:2H17 AXT H173 AXT:3H17 AXT H181 AXT:1H18 AXT H182 AXT:2H18 AXT H183 AXT:3H18 AXT H191 AXT:1H19 AXT H192 AXT:2H19 AXT H193 AXT:3H19 AXT H201 AXT:1H20 AXT H202 AXT:2H20 AXT H203 AXT:3H20 AXT H221 AXT:1H22 AXT H222 AXT:2H22 AXT H361 AXT:1H36 AXT H362 AXT:2H36 AXT H363 AXT:3H36 AXT H371 AXT:1H37 AXT H372 AXT:2H37 AXT H373 AXT:3H37 AXT H381 AXT:1H38 AXT H382 AXT:2H38 AXT H383 AXT:3H38 AXT H391 AXT:1H39 AXT H392 AXT:2H39 AXT H393 AXT:3H39 AXT H401 AXT:1H40 AXT H402 AXT:2H40 AXT H403 AXT:3H40 AXT H31 AXX:1H3 AXX H32 AXX:2H3 AXX H11 AXX:1H1 AXX H12 AXX:2H1 AXX H181 AXX:1H18 AXX H182 AXX:2H18 AXX H171 AXX:1H17 AXX H172 AXX:2H17 AXX H161 AXX:1H16 AXX H162 AXX:2H16 AXX H151 AXX:1H15 AXX H152 AXX:2H15 AXX H141 AXX:1H14 AXX H142 AXX:2H14 AXX H111 AY1:1H11 AY1 H112 AY1:2H11 AY1 H113 AY1:3H11 AY1 H161 AY1:1H16 AY1 H162 AY1:2H16 AY1 H163 AY1:3H16 AY1 H181 AY1:1H18 AY1 H182 AY1:2H18 AY1 H191 AY1:1H19 AY1 H192 AY1:2H19 AY1 H201 AY1:1H20 AY1 H202 AY1:2H20 AY1 H211 AY1:1H21 AY1 H212 AY1:2H21 AY1 H221 AY1:1H22 AY1 H222 AY1:2H22 AY1 H231 AY1:1H23 AY1 H232 AY1:2H23 AY1 H233 AY1:3H23 AY1 H261 AY1:1H26 AY1 H262 AY1:2H26 AY1 H263 AY1:3H26 AY1 H271 AY1:1H27 AY1 H272 AY1:2H27 AY1 H273 AY1:3H27 AY1 H AYA: HN AYA HB1 AYA:1HB AYA HB2 AYA:2HB AYA HB3 AYA:3HB AYA HM1 AYA:1HM AYA HM2 AYA:2HM AYA HM3 AYA:3HM AYA HM21 AYD:1HM2 AYD HM22 AYD:2HM2 AYD HM23 AYD:3HM2 AYD H4'1 AYD:1H4' AYD H4'2 AYD:2H4' AYD H7'1 AYD:1H7' AYD H7'2 AYD:2H7' AYD HM41 AYD:1HM4 AYD HM42 AYD:2HM4 AYD HM43 AYD:3HM4 AYD H61 AYD:1H6 AYD H62 AYD:2H6 AYD H71 AYD:1H7 AYD H72 AYD:2H7 AYD HA31 AYG:1HA3 AYG HA32 AYG:2HA3 AYG HB11 AYG:1HB1 AYG HB12 AYG:2HB1 AYG HB13 AYG:3HB1 AYG HN11 AYG:1HN1 AYG HN12 AYG:2HN1 AYG H011 AYM:1H01 AYM H012 AYM:2H01 AYM H131 AYM:1H13 AYM H132 AYM:2H13 AYM H133 AYM:3H13 AYM H141 AYM:1H14 AYM H142 AYM:2H14 AYM H201 AYM:1H20 AYM H202 AYM:2H20 AYM H203 AYM:3H20 AYM HC91 AYP:1HC9 AYP HC92 AYP:2HC9 AYP HC93 AYP:3HC9 AYP H21 AZ1:1H2 AZ1 H22 AZ1:2H2 AZ1 H31 AZ1:1H3 AZ1 H32 AZ1:2H3 AZ1 H41 AZ1:1H4 AZ1 H42 AZ1:2H4 AZ1 H51 AZ1:1H5 AZ1 H52 AZ1:2H5 AZ1 H61 AZ1:1H6 AZ1 H62 AZ1:2H6 AZ1 H71 AZ1:1H7 AZ1 H72 AZ1:2H7 AZ1 H81 AZ1:1H8 AZ1 H82 AZ1:2H8 AZ1 H21 AZ2:1H2 AZ2 H22 AZ2:2H2 AZ2 H51 AZ2:1H5 AZ2 H81 AZ2:1H8 AZ2 H82 AZ2:2H8 AZ2 H111 AZ2:1H11 AZ2 H112 AZ2:2H11 AZ2 H113 AZ2:3H11 AZ2 H161 AZ2:1H16 AZ2 H191 AZ2:1H19 AZ2 H211 AZ2:1H21 AZ2 H241 AZ2:1H24 AZ2 H261 AZ2:1H26 AZ2 H291 AZ2:1H29 AZ2 H292 AZ2:2H29 AZ2 H321 AZ2:1H32 AZ2 H322 AZ2:2H32 AZ2 H361 AZ2:1H36 AZ2 H381 AZ2:1H38 AZ2 H411 AZ2:1H41 AZ2 H431 AZ2:1H43 AZ2 H471 AZ2:1H47 AZ2 H472 AZ2:2H47 AZ2 H473 AZ2:3H47 AZ2 H61 AZC:1H6 AZC H62 AZC:2H6 AZC H91 AZC:1H9 AZC H92 AZC:2H9 AZC H93 AZC:3H9 AZC HOA2 AZD:2HOA AZD HOB2 AZD:2HOB AZD HOB3 AZD:3HOB AZD H5'1 AZD:1H5* AZD H5'2 AZD:2H5* AZD H4' AZD: H4* AZD H3' AZD: H3* AZD H2'1 AZD:1H2* AZD H2'2 AZD:2H2* AZD H1' AZD: H1* AZD H51 AZD:1H5 AZD H52 AZD:2H5 AZD H53 AZD:3H5 AZD H21 AZE:1H2 AZE H22 AZE:2H2 AZE H31 AZE:1H3 AZE H32 AZE:2H3 AZE H41 AZE:1H4 AZE H42 AZE:2H4 AZE H151 AZE:1H15 AZE H152 AZE:2H15 AZE H153 AZE:3H15 AZE H161 AZE:1H16 AZE H162 AZE:2H16 AZE H163 AZE:3H16 AZE H171 AZE:1H17 AZE H172 AZE:2H17 AZE H173 AZE:3H17 AZE H181 AZE:1H18 AZE H182 AZE:2H18 AZE H183 AZE:3H18 AZE H191 AZE:1H19 AZE H192 AZE:2H19 AZE H193 AZE:3H19 AZE H201 AZE:1H20 AZE H202 AZE:2H20 AZE H203 AZE:3H20 AZE H2C1 AZF:1H2C AZF H2C2 AZF:2H2C AZF H6C1 AZF:1H6C AZF H6C2 AZF:2H6C AZF HN21 AZG:1HN2 AZG HN22 AZG:2HN2 AZG H AZK:1HN AZK H2 AZK:2HN AZK HB2 AZK:1HB AZK HB3 AZK:2HB AZK HG2 AZK:1HG AZK HG3 AZK:2HG AZK HD2 AZK:1HD AZK HD3 AZK:2HD AZK HE2 AZK:1HE AZK HE3 AZK:2HE AZK HC1 AZK:1H AZK HC2 AZK:2H AZK HN11 AZL:1HN1 AZL HN12 AZL:2HN1 AZL H21A AZL:1H2 AZL H22A AZL:2H2 AZL H31 AZL:1H3 AZL H32 AZL:2H3 AZL H41 AZL:1H4 AZL H42 AZL:2H4 AZL H51 AZL:1H5 AZL H52 AZL:2H5 AZL H101 AZL:1H10 AZL H102 AZL:2H10 AZL H111 AZL:1H11 AZL H112 AZL:2H11 AZL H121 AZL:1H12 AZL H122 AZL:2H12 AZL H161 AZL:1H16 AZL H162 AZL:2H16 AZL H241 AZL:1H24 AZL H242 AZL:2H24 AZL H251 AZL:1H25 AZL H252 AZL:2H25 AZL H253 AZL:3H25 AZL H41 AZM:1H4 AZM H42 AZM:2H4 AZM H43 AZM:3H4 AZM HN11 AZM:1HN1 AZM HN12 AZM:2HN1 AZM H201 AZO:1H20 AZO H202 AZO:2H20 AZO H203 AZO:3H20 AZO H221 AZO:1H22 AZO H222 AZO:2H22 AZO H223 AZO:3H22 AZO HAG1 AZP:1HAG AZP HAG2 AZP:2HAG AZP HB1 AZP:1HB AZP HB2 AZP:2HB AZP HD11 AZP:1HD1 AZP HD12 AZP:2HD1 AZP HD13 AZP:3HD1 AZP HD21 AZP:1HD2 AZP HD22 AZP:2HD2 AZP HD23 AZP:3HD2 AZP HAV1 AZP:1HAV AZP HAV2 AZP:2HAV AZP HBA1 AZP:1HBA AZP HBA2 AZP:2HBA AZP HBB1 AZP:1HBB AZP HBB2 AZP:2HBB AZP HBE1 AZP:1HBE AZP HBE2 AZP:2HBE AZP HBM1 AZP:1HBM AZP HBM2 AZP:2HBM AZP HBS1 AZP:1HBS AZP HBS2 AZP:2HBS AZP HBT1 AZP:1HBT AZP HBT2 AZP:2HBT AZP HBT3 AZP:3HBT AZP H111 AZQ:1H11 AZQ H112 AZQ:2H11 AZQ H131 AZQ:1H13 AZQ H132 AZQ:2H13 AZQ H141 AZQ:1H14 AZQ H142 AZQ:2H14 AZQ H143 AZQ:3H14 AZQ H151 AZQ:1H15 AZQ H152 AZQ:2H15 AZQ H153 AZQ:3H15 AZQ H161 AZQ:1H16 AZQ H162 AZQ:2H16 AZQ H163 AZQ:3H16 AZQ H71 AZR:1H7 AZR H72 AZR:2H7 AZR H73 AZR:3H7 AZR H161 AZR:1H16 AZR H162 AZR:2H16 AZR H271 AZR:1H27 AZR H272 AZR:2H27 AZR H273 AZR:3H27 AZR H281 AZR:1H28 AZR H282 AZR:2H28 AZR H283 AZR:3H28 AZR HOA2 AZT:2HOA AZT HOB2 AZT:2HOB AZT HOG2 AZT:2HOG AZT HOG3 AZT:3HOG AZT H5'1 AZT:1H5* AZT H5'2 AZT:2H5* AZT H4' AZT: H4* AZT H3' AZT: H3* AZT H2'1 AZT:1H2* AZT H2'2 AZT:2H2* AZT H1' AZT: H1* AZT H51 AZT:1H5 AZT H52 AZT:2H5 AZT H53 AZT:3H5 AZT H261 AZX:1H26 AZX H262 AZX:2H26 AZX H263 AZX:3H26 AZX H111 AZX:1H11 AZX H112 AZX:2H11 AZX H113 AZX:3H11 AZX H101 AZX:1H10 AZX H102 AZX:2H10 AZX H103 AZX:3H10 AZX HN1 AZY:1HN AZY HN2 AZY:2HN AZY HB1 AZY:1HB AZY HB2 AZY:2HB AZY HAU1 B08:1HAU B08 HAU2 B08:2HAU B08 H81 B11:1H8 B11 H82 B11:2H8 B11 H111 B11:1H11 B11 H112 B11:2H11 B11 H121 B11:1H12 B11 H122 B11:2H12 B11 H141 B11:1H14 B11 H142 B11:2H14 B11 H151 B11:1H15 B11 H152 B11:2H15 B11 H201 B12:1H20 B12 H202 B12:2H20 B12 H203 B12:3H20 B12 H251 B12:1H25 B12 H252 B12:2H25 B12 H253 B12:3H25 B12 H261 B12:1H26 B12 H262 B12:2H26 B12 H291 B12:1H29 B12 H292 B12:2H29 B12 H301 B12:1H30 B12 H302 B12:2H30 B12 H311 B12:1H31 B12 H312 B12:2H31 B12 H331 B12:1H33 B12 H332 B12:2H33 B12 H351 B12:1H35 B12 H352 B12:2H35 B12 H353 B12:3H35 B12 H361 B12:1H36 B12 H362 B12:2H36 B12 H363 B12:3H36 B12 H371 B12:1H37 B12 H372 B12:2H37 B12 H401 B12:1H40 B12 H402 B12:2H40 B12 H411 B12:1H41 B12 H412 B12:2H41 B12 H421 B12:1H42 B12 H422 B12:2H42 B12 H451 B12:1H45 B12 H452 B12:2H45 B12 H461 B12:1H46 B12 H462 B12:2H46 B12 H463 B12:3H46 B12 H471 B12:1H47 B12 H472 B12:2H47 B12 H473 B12:3H47 B12 H481 B12:1H48 B12 H482 B12:2H48 B12 H491 B12:1H49 B12 H492 B12:2H49 B12 H521 B12:1H52 B12 H522 B12:2H52 B12 H531 B12:1H53 B12 H532 B12:2H53 B12 H533 B12:3H53 B12 H541 B12:1H54 B12 H542 B12:2H54 B12 H543 B12:3H54 B12 H551 B12:1H55 B12 H552 B12:2H55 B12 H561 B12:1H56 B12 H562 B12:2H56 B12 H601 B12:1H60 B12 H602 B12:2H60 B12 H621 B12:1H62 B12 H622 B12:2H62 B12 H1P1 B12:1H1P B12 H1P2 B12:2H1P B12 H3P1 B12:1H3P B12 H3P2 B12:2H3P B12 H3P3 B12:3H3P B12 HOP5 B12:5HOP B12 HOR7 B12:7HOR B12 H5R1 B12:1H5R B12 H5R2 B12:2H5R B12 HOR8 B12:8HOR B12 HM51 B12:1HM5 B12 HM52 B12:2HM5 B12 HM53 B12:3HM5 B12 HM61 B12:1HM6 B12 HM62 B12:2HM6 B12 HM63 B12:3HM6 B12 H3P1 B13:1H3P B13 H3P2 B13:2H3P B13 H3P3 B13:3H3P B13 H1P1 B13:1H1P B13 H1P2 B13:2H1P B13 H561 B13:1H56 B13 H562 B13:2H56 B13 H551 B13:1H55 B13 H552 B13:2H55 B13 H541 B13:1H54 B13 H542 B13:2H54 B13 H543 B13:3H54 B13 H601 B13:1H60 B13 H602 B13:2H60 B13 H621 B13:1H62 B13 H622 B13:2H62 B13 H351 B13:1H35 B13 H352 B13:2H35 B13 H353 B13:3H35 B13 H301 B13:1H30 B13 H302 B13:2H30 B13 H311 B13:1H31 B13 H312 B13:2H31 B13 H331 B13:1H33 B13 H332 B13:2H33 B13 H261 B13:1H26 B13 H262 B13:2H26 B13 H291 B13:1H29 B13 H292 B13:2H29 B13 H251 B13:1H25 B13 H252 B13:2H25 B13 H253 B13:3H25 B13 H201 B13:1H20 B13 H202 B13:2H20 B13 H203 B13:3H20 B13 H531 B13:1H53 B13 H532 B13:2H53 B13 H533 B13:3H53 B13 H481 B13:1H48 B13 H482 B13:2H48 B13 H491 B13:1H49 B13 H492 B13:2H49 B13 H521 B13:1H52 B13 H522 B13:2H52 B13 H461 B13:1H46 B13 H462 B13:2H46 B13 H463 B13:3H46 B13 H471 B13:1H47 B13 H472 B13:2H47 B13 H473 B13:3H47 B13 H411 B13:1H41 B13 H412 B13:2H41 B13 H421 B13:1H42 B13 H422 B13:2H42 B13 H451 B13:1H45 B13 H452 B13:2H45 B13 H361 B13:1H36 B13 H362 B13:2H36 B13 H363 B13:3H36 B13 H371 B13:1H37 B13 H372 B13:2H37 B13 H401 B13:1H40 B13 H402 B13:2H40 B13 H111 B14:1H11 B14 H112 B14:2H11 B14 H121 B14:1H12 B14 H122 B14:2H12 B14 H141 B14:1H14 B14 H142 B14:2H14 B14 H151 B14:1H15 B14 H152 B14:2H15 B14 H181 B14:1H18 B14 H182 B14:2H18 B14 H71 B15:1H7 B15 H72 B15:2H7 B15 H81 B15:1H8 B15 H82 B15:2H8 B15 H171 B15:1H17 B15 H172 B15:2H17 B15 H191 B15:1H19 B15 H192 B15:2H19 B15 H211 B15:1H21 B15 H212 B15:2H21 B15 HN11 B15:1HN1 B15 HN12 B15:2HN1 B15 HN1 B17:1HN B17 HN2 B17:2HN B17 H91 B17:1H9 B17 H92 B17:2H9 B17 H101 B17:1H10 B17 H102 B17:2H10 B17 H121 B17:1H12 B17 H122 B17:2H12 B17 H131 B17:1H13 B17 H132 B17:2H13 B17 H152 B17:2H15 B17 H153 B17:3H15 B17 H81 B17:1H8 B17 H82 B17:2H8 B17 H111 B17:1H11 B17 H112 B17:2H11 B17 H161 B17:1H16 B17 H162 B17:2H16 B17 H111 B18:1H11 B18 H112 B18:2H11 B18 H261 B18:1H26 B18 H262 B18:2H26 B18 H271 B18:1H27 B18 H272 B18:2H27 B18 H291 B18:1H29 B18 H292 B18:2H29 B18 H293 B18:3H29 B18 H301 B18:1H30 B18 H302 B18:2H30 B18 H303 B18:3H30 B18 H311 B18:1H31 B18 H312 B18:2H31 B18 H313 B18:3H31 B18 H111 B19:1H11 B19 H112 B19:2H11 B19 H113 B19:3H11 B19 H121 B19:1H12 B19 H122 B19:2H12 B19 H123 B19:3H12 B19 H81 B19:1H8 B19 H82 B19:2H8 B19 H83 B19:3H8 B19 H91 B19:1H9 B19 H92 B19:2H9 B19 H93 B19:3H9 B19 H61 B19:1H6 B19 H62 B19:2H6 B19 H11 B19:1H1 B19 H12 B19:2H1 B19 HN11 B19:1HN1 B19 HN12 B19:2HN1 B19 HN1 B1F:1HN B1F HN2 B1F:2HN B1F HB1 B1F:1HB B1F HB2 B1F:2HB B1F H101 B1L:1H10 B1L H102 B1L:2H10 B1L H111 B1L:1H11 B1L H112 B1L:2H11 B1L H121 B1L:1H12 B1L H122 B1L:2H12 B1L H141 B1L:1H14 B1L H142 B1L:2H14 B1L H201 B1M:1H20 B1M H202 B1M:2H20 B1M H203 B1M:3H20 B1M H251 B1M:1H25 B1M H252 B1M:2H25 B1M H253 B1M:3H25 B1M H261 B1M:1H26 B1M H262 B1M:2H26 B1M H291 B1M:1H29 B1M H292 B1M:2H29 B1M H301 B1M:1H30 B1M H302 B1M:2H30 B1M H311 B1M:1H31 B1M H312 B1M:2H31 B1M H331 B1M:1H33 B1M H332 B1M:2H33 B1M H351 B1M:1H35 B1M H352 B1M:2H35 B1M H353 B1M:3H35 B1M H361 B1M:1H36 B1M H362 B1M:2H36 B1M H363 B1M:3H36 B1M H371 B1M:1H37 B1M H372 B1M:2H37 B1M H401 B1M:1H40 B1M H402 B1M:2H40 B1M H411 B1M:1H41 B1M H412 B1M:2H41 B1M H421 B1M:1H42 B1M H422 B1M:2H42 B1M H451 B1M:1H45 B1M H452 B1M:2H45 B1M H461 B1M:1H46 B1M H462 B1M:2H46 B1M H463 B1M:3H46 B1M H471 B1M:1H47 B1M H472 B1M:2H47 B1M H473 B1M:3H47 B1M H481 B1M:1H48 B1M H482 B1M:2H48 B1M H491 B1M:1H49 B1M H492 B1M:2H49 B1M H521 B1M:1H52 B1M H522 B1M:2H52 B1M H531 B1M:1H53 B1M H532 B1M:2H53 B1M H533 B1M:3H53 B1M H541 B1M:1H54 B1M H542 B1M:2H54 B1M H543 B1M:3H54 B1M H551 B1M:1H55 B1M H552 B1M:2H55 B1M H561 B1M:1H56 B1M H562 B1M:2H56 B1M H601 B1M:1H60 B1M H602 B1M:2H60 B1M H621 B1M:1H62 B1M H622 B1M:2H62 B1M H1P1 B1M:1H1P B1M H1P2 B1M:2H1P B1M H3P1 B1M:1H3P B1M H3P2 B1M:2H3P B1M H3P3 B1M:3H3P B1M HOP5 B1M:5HOP B1M HOR7 B1M:7HOR B1M H5R1 B1M:1H5R B1M H5R2 B1M:2H5R B1M HOR8 B1M:8HOR B1M HO51 B1M:1HO5 B1M HO52 B1M:2HO5 B1M HO53 B1M:3HO5 B1M HOP2 B1P:2HOP B1P HOP3 B1P:3HOP B1P H5' B1P:1H5* B1P H5'' B1P:2H5* B1P H4' B1P: H4* B1P H1' B1P: H1* B1P HO1' B1P:HO1* B1P H2' B1P:1H2* B1P H2'' B1P:2H2* B1P H3' B1P: H3* B1P HO3' B1P:H3T B1P H151 B1V:1H15 B1V H152 B1V:2H15 B1V H181 B1V:1H18 B1V H182 B1V:2H18 B1V H191 B1V:1H19 B1V H192 B1V:2H19 B1V H201 B1V:1H20 B1V H202 B1V:2H20 B1V H211 B1V:1H21 B1V H212 B1V:2H21 B1V H221 B1V:1H22 B1V H222 B1V:2H22 B1V H141 B2:1H14 B2 H142 B2:2H14 B2 HAL1 B21:1HAL B21 HAL2 B21:2HAL B21 HAL3 B21:3HAL B21 HN12 B22:2HN1 B22 HN11 B22:1HN1 B22 H71 B22:1H7 B22 H72 B22:2H7 B22 H81 B22:1H8 B22 H82 B22:2H8 B22 H191 B22:1H19 B22 H192 B22:2H19 B22 H212 B22:2H21 B22 H211 B22:1H21 B22 H231 B22:1H23 B22 H232 B22:2H23 B22 HAU1 B28:1HAU B28 HAU2 B28:2HAU B28 HAS1 B29:1HAS B29 HAS2 B29:2HAS B29 H B2A:1HN B2A HN2 B2A:2HN B2A HB1 B2A:1HB B2A HB2 B2A:2HB B2A HB3 B2A:3HB B2A HN1 B2F:1HN B2F HN2 B2F:2HN B2F HB1 B2F:1HB B2F HB2 B2F:2HB B2F H6A1 B2G:1H6A B2G H6A2 B2G:2H6A B2G H6B1 B2G:1H6B B2G H6B2 B2G:2H6B B2G HN1 B2I:1HN B2I HN2 B2I:2HN B2I HG11 B2I:1HG1 B2I HG12 B2I:2HG1 B2I HG21 B2I:1HG2 B2I HG22 B2I:2HG2 B2I HG23 B2I:3HG2 B2I HD11 B2I:1HD1 B2I HD12 B2I:2HD1 B2I HD13 B2I:3HD1 B2I HN1 B2V:1HN B2V HN2 B2V:2HN B2V HG11 B2V:1HG1 B2V HG12 B2V:2HG1 B2V HG13 B2V:3HG1 B2V HG21 B2V:1HG2 B2V HG22 B2V:2HG2 B2V HG23 B2V:3HG2 B2V HN11 B30:1HN1 B30 HN12 B30:2HN1 B30 H91 B30:1H9 B30 H92 B30:2H9 B30 H101 B30:1H10 B30 H102 B30:2H10 B30 H121 B30:1H12 B30 H122 B30:2H12 B30 H141 B30:1H14 B30 H142 B30:2H14 B30 H101 B33:1H10 B33 H102 B33:2H10 B33 H121 B33:1H12 B33 H122 B33:2H12 B33 H131 B33:1H13 B33 H132 B33:2H13 B33 H11 B33:1H1 B33 H12 B33:2H1 B33 H13 B33:3H1 B33 H21 B33:1H2 B33 H22 B33:2H2 B33 H41 B33:1H4 B33 H42 B33:2H4 B33 H51 B33:1H5 B33 H52 B33:2H5 B33 H61 B33:1H6 B33 H62 B33:2H6 B33 H81 B33:1H8 B33 H82 B33:2H8 B33 H91 B33:1H9 B33 H92 B33:2H9 B33 H141 B33:1H14 B33 H142 B33:2H14 B33 H143 B33:3H14 B33 HG1 B3A:1HG B3A HG2 B3A:2HG B3A HG3 B3A:3HG B3A H B3A:1HN B3A H2 B3A:2HN B3A HA1 B3A:1HA B3A HA2 B3A:2HA B3A HE1 B3D:HOE1 B3D HG3 B3D:1HG B3D HG2 B3D:2HG B3D H B3D:1HN B3D H2 B3D:2HN B3D HA1 B3D:1HA B3D HA2 B3D:2HA B3D H B3E:1HN B3E H2 B3E:2HN B3E HG2 B3E:1HG B3E HG3 B3E:2HG B3E HD2 B3E:1HD B3E HD3 B3E:2HD B3E HA1 B3E:1HA B3E HA2 B3E:2HA B3E H121 B3H:1H12 B3H H122 B3H:2H12 B3H H131 B3H:1H13 B3H H132 B3H:2H13 B3H H141 B3H:1H14 B3H H142 B3H:2H14 B3H H151 B3H:1H15 B3H H152 B3H:2H15 B3H H161 B3H:1H16 B3H H162 B3H:2H16 B3H H171 B3H:1H17 B3H H172 B3H:2H17 B3H H181 B3H:1H18 B3H H182 B3H:2H18 B3H H191 B3H:1H19 B3H H192 B3H:2H19 B3H H193 B3H:3H19 B3H H221 B3H:1H22 B3H H222 B3H:2H22 B3H H231 B3H:1H23 B3H H232 B3H:2H23 B3H H241 B3H:1H24 B3H H242 B3H:2H24 B3H H243 B3H:3H24 B3H H411 B3H:1H41 B3H H412 B3H:2H41 B3H H431 B3H:1H43 B3H H432 B3H:2H43 B3H H B3K:1HN B3K H2 B3K:2HN B3K HG2 B3K:1HG B3K HG3 B3K:2HG B3K HD2 B3K:1HD B3K HD3 B3K:2HD B3K HE2 B3K:1HE B3K HE3 B3K:2HE B3K HF1 B3K:1HF B3K HF2 B3K:2HF B3K HNZ1 B3K:1HNZ B3K HNZ2 B3K:2HNZ B3K HA1 B3K:1HA B3K HA2 B3K:2HA B3K H221 B3N:1H22 B3N H222 B3N:2H22 B3N H223 B3N:3H22 B3N H211 B3N:1H21 B3N H212 B3N:2H21 B3N H213 B3N:3H21 B3N H101 B3N:1H10 B3N H102 B3N:2H10 B3N H91 B3N:1H9 B3N H92 B3N:2H9 B3N H81 B3N:1H8 B3N H82 B3N:2H8 B3N H71 B3N:1H7 B3N H72 B3N:2H7 B3N H61 B3N:1H6 B3N H62 B3N:2H6 B3N H51 B3N:1H5 B3N H52 B3N:2H5 B3N H11 B3P:1H1 B3P H12 B3P:2H1 B3P H21 B3P:1H2 B3P H22 B3P:2H2 B3P H31 B3P:1H3 B3P H32 B3P:2H3 B3P H51 B3P:1H5 B3P H52 B3P:2H5 B3P H61 B3P:1H6 B3P H62 B3P:2H6 B3P H71 B3P:1H7 B3P H72 B3P:2H7 B3P H91 B3P:1H9 B3P H92 B3P:2H9 B3P H101 B3P:1H10 B3P H102 B3P:2H10 B3P H111 B3P:1H11 B3P H112 B3P:2H11 B3P H B3S:1HN B3S H2 B3S:2HN B3S HD B3S: HOD B3S HG3 B3S:1HG B3S HG2 B3S:2HG B3S HA1 B3S:1HA B3S HA2 B3S:2HA B3S HE21 B3X:1HE2 B3X HE22 B3X:2HE2 B3X HG3 B3X:1HG B3X HG2 B3X:2HG B3X H B3X:1HN B3X H2 B3X:2HN B3X HA1 B3X:1HA B3X HA2 B3X:2HA B3X HA1 B3Y:1HA B3Y HA2 B3Y:2HA B3Y H B3Y:1HN B3Y H2 B3Y:2HN B3Y HG2 B3Y:1HG B3Y HG3 B3Y:2HG B3Y HJ61 B4G:1HJ6 B4G HJ62 B4G:2HJ6 B4G HQ61 B4G:1HQ6 B4G HQ62 B4G:2HQ6 B4G H6A1 B4G:1H6A B4G HOA2 B4P:2HOA B4P HOB2 B4P:2HOB B4P HOG2 B4P:2HOG B4P HOD2 B4P:2HOD B4P H51A B4P:AH51 B4P H52A B4P:AH52 B4P H4E B4P:AH4* B4P H3E B4P:AH3* B4P HO3A B4P:AHO3 B4P H2E B4P:AH2* B4P HO2A B4P:AHO2 B4P H1E B4P:AH1* B4P H8A B4P: AH8 B4P H61A B4P:AH61 B4P H62A B4P:AH62 B4P H2A B4P: AH2 B4P H51B B4P:BH51 B4P H52B B4P:BH52 B4P H4F B4P:BH4* B4P H3F B4P:BH3* B4P HO3B B4P:BHO3 B4P H2F B4P:BH2* B4P HO2B B4P:BHO2 B4P H1F B4P:BH1* B4P H8B B4P: BH8 B4P H61B B4P:BH61 B4P H62B B4P:BH62 B4P H2B B4P: BH2 B4P HAA1 B71:1HAA B71 HAA2 B71:2HAA B71 HAA3 B71:3HAA B71 HAL1 B71:1HAL B71 HAL2 B71:2HAL B71 HAM1 B71:1HAM B71 HAM2 B71:2HAM B71 HAN1 B71:1HAN B71 HAN2 B71:2HAN B71 HAO1 B71:1HAO B71 HAO2 B71:2HAO B71 HAP1 B71:1HAP B71 HAP2 B71:2HAP B71 HAQ1 B71:1HAQ B71 HAQ2 B71:2HAQ B71 HAR1 B71:1HAR B71 HAR2 B71:2HAR B71 HAS1 B71:1HAS B71 HAS2 B71:2HAS B71 HAT1 B71:1HAT B71 HAT2 B71:2HAT B71 HAU1 B71:1HAU B71 HAU2 B71:2HAU B71 HAY1 B75:1HAY B75 HAY2 B75:2HAY B75 HAU1 B76:1HAU B76 HAU2 B76:2HAU B76 H51 B7G:1H5 B7G H11 B7G:1H1 B7G H21 B7G:1H2 B7G H31 B7G:1H3 B7G H41 B7G:1H4 B7G H61 B7G:1H6 B7G H62 B7G:2H6 B7G H71 B7G:1H7 B7G H72 B7G:2H7 B7G H81 B7G:1H8 B7G H82 B7G:2H8 B7G H91 B7G:1H9 B7G H92 B7G:2H9 B7G H101 B7G:1H10 B7G H102 B7G:2H10 B7G H111 B7G:1H11 B7G H112 B7G:2H11 B7G H121 B7G:1H12 B7G H122 B7G:2H12 B7G H131 B7G:1H13 B7G H132 B7G:2H13 B7G H133 B7G:3H13 B7G H101 B8L:1H10 B8L H102 B8L:2H10 B8L H111 B8L:1H11 B8L H112 B8L:2H11 B8L H121 B8L:1H12 B8L H122 B8L:2H12 B8L H141 B8L:1H14 B8L H142 B8L:2H14 B8L H711 B8L:1H71 B8L H712 B8L:2H71 B8L H721 B8L:1H72 B8L H722 B8L:2H72 B8L H723 B8L:3H72 B8L H811 B8L:1H81 B8L H812 B8L:2H81 B8L H813 B8L:3H81 B8L H301 B8L:1H30 B8L H302 B8L:2H30 B8L H303 B8L:3H30 B8L H171 B96:1H17 B96 H172 B96:2H17 B96 H173 B96:3H17 B96 H181 B96:1H18 B96 H182 B96:2H18 B96 H183 B96:3H18 B96 H191 B96:1H19 B96 H192 B96:2H19 B96 H193 B96:3H19 B96 H251 B96:1H25 B96 H252 B96:2H25 B96 H253 B96:3H25 B96 H421 B96:1H42 B96 H422 B96:2H42 B96 H431 B96:1H43 B96 H432 B96:2H43 B96 H451 B96:1H45 B96 H452 B96:2H45 B96 H461 B96:1H46 B96 H462 B96:2H46 B96 H481 B96:1H48 B96 H482 B96:2H48 B96 H491 B96:1H49 B96 H492 B96:2H49 B96 H1A B9A: AH1 B9A H2A B9A: AH2 B9A H3A B9A: AH3 B9A H5A B9A: AH5 B9A H6A B9A: AH6 B9A H7A B9A: AH7 B9A H8A B9A: AH8 B9A H9A B9A: AH9 B9A H151 B9A:1H15 B9A H152 B9A:2H15 B9A H161 B9A:1H16 B9A H162 B9A:2H16 B9A H171 B9A:1H17 B9A H172 B9A:2H17 B9A H191 B9A:1H19 B9A H192 B9A:2H19 B9A H201 B9A:1H20 B9A H202 B9A:2H20 B9A H211 B9A:1H21 B9A H212 B9A:2H21 B9A H221 B9A:1H22 B9A H222 B9A:2H22 B9A H241 B9A:1H24 B9A H242 B9A:2H24 B9A H251 B9A:1H25 B9A H252 B9A:2H25 B9A H261 B9A:1H26 B9A H262 B9A:2H26 B9A H281 B9A:1H28 B9A H282 B9A:2H28 B9A H301 B9A:1H30 B9A H302 B9A:2H30 B9A H311 B9A:1H31 B9A H312 B9A:2H31 B9A H351 B9A:1H35 B9A H352 B9A:2H35 B9A H361 B9A:1H36 B9A H362 B9A:2H36 B9A H401 B9A:1H40 B9A H402 B9A:2H40 B9A H411 B9A:1H41 B9A H412 B9A:2H41 B9A H431 B9A:1H43 B9A H432 B9A:2H43 B9A H1B B9A: BH1 B9A H2B B9A: BH2 B9A H3B B9A: BH3 B9A H4B B9A: BH4 B9A H6B B9A: BH6 B9A H7B B9A: BH7 B9A H8B B9A: BH8 B9A H9B B9A: BH9 B9A HO5' BA1:'HO5 BA1 HN1' BA1:'HN1 BA1 H21 BA1:1H2 BA1 H22 BA1:2H2 BA1 H51 BA1:1H5 BA1 H52 BA1:2H5 BA1 H61 BA1:1H6 BA1 H62 BA1:2H6 BA1 H71 BA1:1H7 BA1 H72 BA1:2H7 BA1 H3B BA1: H3" BA1 HO4' BA1:"HO4 BA1 HO6' BA1:"HO6 BA1 H7B BA1: H7" BA1 H2OA BA1:AH2O BA1 H112 BA1:2H11 BA1 H122 BA1:2H12 BA1 H132 BA1:2H13 BA1 H2OF BA1:FH2O BA1 H271 BA2:1H27 BA2 H272 BA2:2H27 BA2 H241 BA2:1H24 BA2 H242 BA2:2H24 BA2 H231 BA2:1H23 BA2 H232 BA2:2H23 BA2 H221 BA2:1H22 BA2 H222 BA2:2H22 BA2 H211 BA2:1H21 BA2 H212 BA2:2H21 BA2 H171 BA2:1H17 BA2 H172 BA2:2H17 BA2 H161 BA2:1H16 BA2 H162 BA2:2H16 BA2 H151 BA2:1H15 BA2 H152 BA2:2H15 BA2 H141 BA2:1H14 BA2 H142 BA2:2H14 BA2 H1' BA2: H1* BA2 H6N1 BA2:1H6N BA2 H6N2 BA2:2H6N BA2 H2' BA2: H2* BA2 H3' BA2: H3* BA2 H4' BA2: H4* BA2 H5'1 BA2:1H5* BA2 H5'2 BA2:2H5* BA2 H111 BA2:1H11 BA2 H112 BA2:2H11 BA2 H121 BA2:1H12 BA2 H122 BA2:2H12 BA2 H123 BA2:3H12 BA2 H6A1 BA3:1H6A BA3 H6A2 BA3:2H6A BA3 H5B1 BA3:1H5B BA3 H5B2 BA3:2H5B BA3 H5D1 BA3:1H5D BA3 H5D2 BA3:2H5D BA3 H6G1 BA3:1H6G BA3 H6G2 BA3:2H6G BA3 HN31 BAA:1HN3 BAA HN32 BAA:2HN3 BAA HB11 BAA:1HB1 BAA HB12 BAA:2HB1 BAA HB13 BAA:3HB1 BAA HB21 BAA:1HB2 BAA HB22 BAA:2HB2 BAA HB23 BAA:3HB2 BAA H411 BAA:1H41 BAA H412 BAA:2H41 BAA H413 BAA:3H41 BAA H421 BAA:1H42 BAA H422 BAA:2H42 BAA H423 BAA:3H42 BAA H431 BAA:1H43 BAA H432 BAA:2H43 BAA H433 BAA:3H43 BAA H91 BAB:1H9 BAB H92 BAB:2H9 BAB HN21 BAB:1HN2 BAB HN22 BAB:2HN2 BAB H2'1 BAB:1H2' BAB H2'2 BAB:2H2' BAB HN4' BAB:'HN4 BAB HN1 BAB:1H1' BAB HN2 BAB:2H1' BAB HN3 BAB:'HN3 BAB HN5 BAB:1HN1 BAB HN6 BAB:2HN1 BAB H31 BAC:1H3 BAC H32 BAC:2H3 BAC HB11 BAF:1HB1 BAF HB12 BAF:2HB1 BAF HB13 BAF:3HB1 BAF HB21 BAF:1HB2 BAF HB22 BAF:2HB2 BAF HB23 BAF:3HB2 BAF H411 BAF:1H41 BAF H412 BAF:2H41 BAF H413 BAF:3H41 BAF H421 BAF:1H42 BAF H422 BAF:2H42 BAF H423 BAF:3H42 BAF H431 BAF:1H43 BAF H432 BAF:2H43 BAF H433 BAF:3H43 BAF H181 BAG:1H18 BAG H182 BAG:2H18 BAG H31 BAG:1H3 BAG H32 BAG:2H3 BAG H41 BAG:1H4 BAG H42 BAG:2H4 BAG HD1 BAG:1HD BAG HD2 BAG:2HD BAG HH21 BAG:1HH2 BAG HH22 BAG:2HH2 BAG HN11 BAH:1HN1 BAH HN12 BAH:2HN1 BAH HN21 BAH:1HN2 BAH HN22 BAH:2HN2 BAH HC2' BAH:'HC2 BAH HC3' BAH:'HC3 BAH HC6' BAH:'HC6 BAH H1'1 BAH:1H1' BAH H1'2 BAH:2H1' BAH H2'1 BAH:1H2' BAH H2'2 BAH:2H2' BAH HN4' BAH:'HN4 BAH H91 BAI:1H9 BAI H92 BAI:2H9 BAI HH11 BAI:1HH1 BAI HH12 BAI:2HH1 BAI HH21 BAI:1HH2 BAI HN3' BAI:'HN3 BAI HH11 BAK:1HH1 BAK HH12 BAK:2HH1 BAK HH21 BAK:1HH2 BAK HH22 BAK:2HH2 BAK H1'1 BAK:1H1' BAK H1'2 BAK:2H1' BAK H2'1 BAK:1H2' BAK H2'2 BAK:2H2' BAK HN4' BAK:'HN4 BAK H BAL:1HN BAL H2 BAL:2HN BAL HB3 BAL:1HB BAL HB2 BAL:2HB BAL HA1 BAL:1HA BAL HA2 BAL:2HA BAL HC21 BAM:1HC2 BAM HC31 BAM:1HC3 BAM HC41 BAM:1HC4 BAM HC51 BAM:1HC5 BAM HC61 BAM:1HC6 BAM HN11 BAM:1HN1 BAM HN12 BAM:2HN1 BAM HN21 BAM:1HN2 BAM HN22 BAM:2HN2 BAM H6 BAN:6H BAN H7 BAN:7H BAN H23 BAN:3H2 BAN H24 BAN:4H2 BAN H25 BAN:5H2 BAN H29 BAN:9H2 BAN H39 BAN:9H3 BAN HN21 BAO:1HN2 BAO HN22 BAO:2HN2 BAO H2'1 BAO:1H2' BAO H2'2 BAO:2H2' BAO HN4' BAO:'HN4 BAO H4'1 BAP:1H4' BAP H4'2 BAP:2H4' BAP H31 BAR:1H3 BAR H32 BAR:2H3 BAR H61 BAR:1H6 BAR H62 BAR:2H6 BAR HC11 BAS:1HC1 BAS H311 BAS:1H31 BAS H312 BAS:2H31 BAS H321 BAS:1H32 BAS H322 BAS:2H32 BAS H323 BAS:3H32 BAS H31 BAT:1H3 BAT H32 BAT:2H3 BAT H91 BAT:1H9 BAT H92 BAT:2H9 BAT H111 BAT:1H11 BAT H112 BAT:2H11 BAT H113 BAT:3H11 BAT H121 BAT:1H12 BAT H122 BAT:2H12 BAT H123 BAT:3H12 BAT H161 BAT:1H16 BAT H162 BAT:2H16 BAT H163 BAT:3H16 BAT H171 BAT:1H17 BAT H172 BAT:2H17 BAT HAJ1 BAU:1HAJ BAU HAJ2 BAU:2HAJ BAU HAK1 BAU:1HAK BAU HAK2 BAU:2HAK BAU HAM1 BAU:1HAM BAU HAM2 BAU:2HAM BAU HAL1 BAU:1HAL BAU HAL2 BAU:2HAL BAU H311 BAX:1H31 BAX H312 BAX:2H31 BAX H313 BAX:3H31 BAX H11 BAY:1H1 BAY H12A BAY:2H1 BAY H13A BAY:3H1 BAY H21 BAY:1H2 BAY H22 BAY:2H2 BAY H23 BAY:3H2 BAY H31A BAY:1H3 BAY H32 BAY:2H3 BAY H33 BAY:3H3 BAY H81 BAY:1H8 BAY H82 BAY:2H8 BAY H101 BAY:1H10 BAY H102 BAY:2H10 BAY H261 BAY:1H26 BAY H262 BAY:2H26 BAY H263 BAY:3H26 BAY H271 BAY:1H27 BAY H272 BAY:2H27 BAY H273 BAY:3H27 BAY H321 BAY:1H32 BAY H322 BAY:2H32 BAY H441 BAY:1H44 BAY H442 BAY:2H44 BAY H561 BAY:1H56 BAY H562 BAY:2H56 BAY H563 BAY:3H56 BAY H571 BAY:1H57 BAY H572 BAY:2H57 BAY H573 BAY:3H57 BAY H621 BAY:1H62 BAY H622 BAY:2H62 BAY H731 BAY:1H73 BAY H732 BAY:2H73 BAY H781 BAY:1H78 BAY H782 BAY:2H78 BAY H783 BAY:3H78 BAY H791 BAY:1H79 BAY H792 BAY:2H79 BAY H793 BAY:3H79 BAY H801 BAY:1H80 BAY H802 BAY:2H80 BAY H803 BAY:3H80 BAY HN21 BAZ:1HN2 BAZ HN22 BAZ:2HN2 BAZ H2'1 BAZ:1H2' BAZ H2'2 BAZ:2H2' BAZ HN4' BAZ:'HN4 BAZ H91 BAZ:1H9 BAZ H92 BAZ:2H9 BAZ H21 BB1:1H2 BB1 H22 BB1:2H2 BB1 H71 BB1:1H7 BB1 H72 BB1:2H7 BB1 H81 BB1:1H8 BB1 H82 BB1:2H8 BB1 H91 BB1:1H9 BB1 H92 BB1:2H9 BB1 H101 BB1:1H10 BB1 H102 BB1:2H10 BB1 H103 BB1:3H10 BB1 H161 BB1:1H16 BB1 H162 BB1:2H16 BB1 H163 BB1:3H16 BB1 H151 BB1:1H15 BB1 H152 BB1:2H15 BB1 H153 BB1:3H15 BB1 H121 BB1:1H12 BB1 H122 BB1:2H12 BB1 H123 BB1:3H12 BB1 H131 BB1:1H13 BB1 H132 BB1:2H13 BB1 H133 BB1:3H13 BB1 H141 BB1:1H14 BB1 H142 BB1:2H14 BB1 H143 BB1:3H14 BB1 H51 BB2:1H5 BB2 H52 BB2:2H5 BB2 H71 BB2:1H7 BB2 H72 BB2:2H7 BB2 H81 BB2:1H8 BB2 H82 BB2:2H8 BB2 H91 BB2:1H9 BB2 H92 BB2:2H9 BB2 H101 BB2:1H10 BB2 H102 BB2:2H10 BB2 H111 BB2:1H11 BB2 H112 BB2:2H11 BB2 H113 BB2:3H11 BB2 H181 BB2:1H18 BB2 H182 BB2:2H18 BB2 H183 BB2:3H18 BB2 H171 BB2:1H17 BB2 H172 BB2:2H17 BB2 H173 BB2:3H17 BB2 H231 BB2:1H23 BB2 H232 BB2:2H23 BB2 H241 BB2:1H24 BB2 H242 BB2:2H24 BB2 H251 BB2:1H25 BB2 H252 BB2:2H25 BB2 H261 BB2:1H26 BB2 H262 BB2:2H26 BB2 H171 BB3:1H17 BB3 H172 BB3:2H17 BB3 H181 BB3:1H18 BB3 H182 BB3:2H18 BB3 H183 BB3:3H18 BB3 H011 BB3:1H01 BB3 H012 BB3:2H01 BB3 H013 BB3:3H01 BB3 H021 BB3:1H02 BB3 H022 BB3:2H02 BB3 H023 BB3:3H02 BB3 H191 BB5:1H19 BB5 H192 BB5:2H19 BB5 H193 BB5:3H19 BB5 H201 BB5:1H20 BB5 H202 BB5:2H20 BB5 H203 BB5:3H20 BB5 H211 BB5:1H21 BB5 H212 BB5:2H21 BB5 H213 BB5:3H21 BB5 H51 BB5:1H5 BB5 H52 BB5:2H5 BB5 H71 BB5:1H7 BB5 H72 BB5:2H7 BB5 H81 BBA:1H8 BBA H82 BBA:2H8 BBA HG11 BBA:1HG1 BBA HG12 BBA:2HG1 BBA H181 BBA:1H18 BBA H182 BBA:2H18 BBA HG31 BBA:1HG3 BBA HG32 BBA:2HG3 BBA H21A BBA:1H2 BBA H22 BBA:2H2 BBA H31 BBA:1H3 BBA H32 BBA:2H3 BBA H1A BBA:1H BBA H2 BBA:2H BBA H41 BBA:1H4 BBA H42 BBA:2H4 BBA HAN1 BBB:1HAN BBB HAN2 BBB:2HAN BBB HAO1 BBB:1HAO BBB HAO2 BBB:2HAO BBB HAR1 BBB:1HAR BBB HAR2 BBB:2HAR BBB HAQ1 BBB:1HAQ BBB HAQ2 BBB:2HAQ BBB HAP1 BBB:1HAP BBB HAP2 BBB:2HAP BBB HB1 BBC:1HB BBC HB2 BBC:2HB BBC H051 BBC:1H05 BBC H052 BBC:2H05 BBC H1 BBC:1H BBC H2 BBC:2H BBC H081 BBC:1H08 BBC H082 BBC:2H08 BBC H091 BBC:1H09 BBC H092 BBC:2H09 BBC H101 BBC:1H10 BBC H102 BBC:2H10 BBC H111 BBC:1H11 BBC H112 BBC:2H11 BBC H11 BBD:1H1 BBD H21 BBD:1H2 BBD H31 BBD:1H3 BBD H41 BBD:1H4 BBD H51 BBD:1H5 BBD H71 BBD:1H7 BBD H91 BBD:1H9 BBD H92 BBD:2H9 BBD H101 BBD:1H10 BBD HO51 BBD:1HO5 BBD H111 BBD:1H11 BBD HN41 BBD:1HN4 BBD H131 BBD:1H13 BBD H141 BBD:1H14 BBD H142 BBD:2H14 BBD H151 BBD:1H15 BBD H161 BBD:1H16 BBD H162 BBD:2H16 BBD HO11 BBD:1HO1 BBD H171 BBD:1H17 BBD H172 BBD:2H17 BBD H191 BBD:1H19 BBD H201 BBD:1H20 BBD H211 BBD:1H21 BBD H221 BBD:1H22 BBD H231 BBD:1H23 BBD H232 BBD:2H23 BBD H241 BBD:1H24 BBD H242 BBD:2H24 BBD H261 BBD:1H26 BBD HN21 BBD:1HN2 BBD H271 BBD:1H27 BBD H291 BBD:1H29 BBD H301 BBD:1H30 BBD H302 BBD:2H30 BBD H311 BBD:1H31 BBD H312 BBD:2H31 BBD H313 BBD:3H31 BBD H321 BBD:1H32 BBD H322 BBD:2H32 BBD H323 BBD:3H32 BBD HN31 BBD:1HN3 BBD H331 BBD:1H33 BBD H332 BBD:2H33 BBD H341 BBD:1H34 BBD H342 BBD:2H34 BBD H351 BBD:1H35 BBD H352 BBD:2H35 BBD H361 BBD:1H36 BBD H362 BBD:2H36 BBD H371 BBD:1H37 BBD H372 BBD:2H37 BBD HC21 BBH:1HC2 BBH HC31 BBH:1HC3 BBH HC51 BBH:1HC5 BBH HC61 BBH:1HC6 BBH HC81 BBH:1HC8 BBH HC82 BBH:2HC8 BBH HC83 BBH:3HC8 BBH H131 BBH:1H13 BBH H141 BBH:1H14 BBH H142 BBH:2H14 BBH H171 BBH:1H17 BBH H172 BBH:2H17 BBH HC71 BBH:1HC7 BBH HC72 BBH:2HC7 BBH HC91 BBH:1HC9 BBH H101 BBH:1H10 BBH H121 BBH:1H12 BBH H161 BBH:1H16 BBH H181 BBH:1H18 BBH HBZ1 BBL:1HBZ BBL HBZ2 BBL:2HBZ BBL HBZ3 BBL:3HBZ BBL HB1 BBL:1HB BBL HB2 BBL:2HB BBL H151 BBM:1H15 BBM H152 BBM:2H15 BBM H171 BBM:1H17 BBM H172 BBM:2H17 BBM H11 BBS:1H1 BBS H12 BBS:2H1 BBS H13 BBS:3H1 BBS H31 BBS:1H3 BBS H32 BBS:2H3 BBS H33 BBS:3H3 BBS H41 BBS:1H4 BBS H42 BBS:2H4 BBS H43 BBS:3H4 BBS HP21 BBT:1HP2 BBT HP22 BBT:2HP2 BBT HP31 BBT:1HP3 BBT HP32 BBT:2HP3 BBT HP51 BBT:1HP5 BBT HP52 BBT:2HP5 BBT HP61 BBT:1HP6 BBT HP62 BBT:2HP6 BBT HP71 BBT:1HP7 BBT HP72 BBT:2HP7 BBT HP81 BBT:1HP8 BBT HP82 BBT:2HP8 BBT H11 BBU:1H1 BBU H12 BBU:2H1 BBU H21 BBU:1H2 BBU H22 BBU:2H2 BBU H31 BBU:1H3 BBU H32 BBU:2H3 BBU H41 BBU:1H4 BBU H42 BBU:2H4 BBU H43 BBU:3H4 BBU H11 BBX:1H1 BBX H12 BBX:2H1 BBX H21 BBX:1H2 BBX H22 BBX:2H2 BBX H23 BBX:3H2 BBX H201 BBZ:1H20 BBZ H202 BBZ:2H20 BBZ H211 BBZ:1H21 BBZ H212 BBZ:2H21 BBZ H221 BBZ:1H22 BBZ H222 BBZ:2H22 BBZ H231 BBZ:1H23 BBZ H232 BBZ:2H23 BBZ H241 BBZ:1H24 BBZ H242 BBZ:2H24 BBZ H243 BBZ:3H24 BBZ HN11 BBZ:1HN1 BBZ HN12 BBZ:2HN1 BBZ HN13 BBZ:3HN1 BBZ HN21 BBZ:1HN2 BBZ HN22 BBZ:2HN2 BBZ HN23 BBZ:3HN2 BBZ H141 BC:1H14 BC H142 BC:2H14 BC H2A BCA: AH2 BCA H61A BCA:AH61 BCA H62A BCA:AH62 BCA H8A BCA: AH8 BCA H1D BCA:AH1* BCA H2D BCA:AH2* BCA HO2A BCA:AHO2 BCA H3D BCA:AH3* BCA HOA8 BCA:8HOA BCA HOA9 BCA:9HOA BCA H4D BCA:AH4* BCA H51A BCA:AH51 BCA H52A BCA:AH52 BCA HOA2 BCA:2HOA BCA HOA5 BCA:5HOA BCA H121 BCA:1H12 BCA H122 BCA:2H12 BCA H131 BCA:1H13 BCA H132 BCA:2H13 BCA H133 BCA:3H13 BCA H141 BCA:1H14 BCA H142 BCA:2H14 BCA H143 BCA:3H14 BCA H71 BCA:1H7 BCA H72 BCA:2H7 BCA H61 BCA:1H6 BCA H62 BCA:2H6 BCA H31 BCA:1H3 BCA H32 BCA:2H3 BCA H21 BCA:1H2 BCA H22 BCA:2H2 BCA H3B BCA: BH3 BCA H4B BCA: BH4 BCA HO2B BCA:BHO2 BCA H6B BCA: BH6 BCA H7B BCA: BH7 BCA HMA1 BCB:1HMA BCB HMA2 BCB:2HMA BCB HMA3 BCB:3HMA BCB HAA1 BCB:1HAA BCB HAA2 BCB:2HAA BCB HBA1 BCB:1HBA BCB HBA2 BCB:2HBA BCB HMB1 BCB:1HMB BCB HMB2 BCB:2HMB BCB HMB3 BCB:3HMB BCB HBB1 BCB:1HBB BCB HBB2 BCB:2HBB BCB HBB3 BCB:3HBB BCB HMC1 BCB:1HMC BCB HMC2 BCB:2HMC BCB HMC3 BCB:3HMC BCB HAC1 BCB:1HAC BCB HBC1 BCB:1HBC BCB HBC2 BCB:2HBC BCB HBC3 BCB:3HBC BCB HMD1 BCB:1HMD BCB HMD2 BCB:2HMD BCB HMD3 BCB:3HMD BCB HED1 BCB:1HED BCB HED2 BCB:2HED BCB HED3 BCB:3HED BCB H11 BCB:1H1 BCB H12 BCB:2H1 BCB H41 BCB:1H4 BCB H42 BCB:2H4 BCB H43 BCB:3H4 BCB H51 BCB:1H5 BCB H52 BCB:2H5 BCB H61 BCB:1H6 BCB H62 BCB:2H6 BCB H71 BCB:1H7 BCB H72 BCB:2H7 BCB H91 BCB:1H9 BCB H92 BCB:2H9 BCB H93 BCB:3H9 BCB H101 BCB:1H10 BCB H102 BCB:2H10 BCB H111 BCB:1H11 BCB H112 BCB:2H11 BCB H121 BCB:1H12 BCB H122 BCB:2H12 BCB H141 BCB:1H14 BCB H142 BCB:2H14 BCB H143 BCB:3H14 BCB H151 BCB:1H15 BCB H152 BCB:2H15 BCB H161 BCB:1H16 BCB H162 BCB:2H16 BCB H171 BCB:1H17 BCB H172 BCB:2H17 BCB H191 BCB:1H19 BCB H192 BCB:2H19 BCB H193 BCB:3H19 BCB H201 BCB:1H20 BCB H202 BCB:2H20 BCB H203 BCB:3H20 BCB H31 BCC:1H3 BCC H32 BCC:2H3 BCC H41 BCC:1H4 BCC H42 BCC:2H4 BCC H61 BCC:1H6 BCC H62 BCC:2H6 BCC H71 BCC:1H7 BCC H72 BCC:2H7 BCC HN21 BCC:1HN2 BCC HN22 BCC:2HN2 BCC H101 BCC:1H10 BCC H102 BCC:2H10 BCC HO21 BCD:1HO2 BCD HO31 BCD:1HO3 BCD H611 BCD:1H61 BCD H612 BCD:2H61 BCD HO61 BCD:1HO6 BCD HO22 BCD:2HO2 BCD HO32 BCD:2HO3 BCD H621 BCD:1H62 BCD H622 BCD:2H62 BCD HO62 BCD:2HO6 BCD HO23 BCD:3HO2 BCD HO33 BCD:3HO3 BCD H631 BCD:1H63 BCD H632 BCD:2H63 BCD HO63 BCD:3HO6 BCD HO24 BCD:4HO2 BCD HO34 BCD:4HO3 BCD H641 BCD:1H64 BCD H642 BCD:2H64 BCD HO64 BCD:4HO6 BCD HO25 BCD:5HO2 BCD HO35 BCD:5HO3 BCD H651 BCD:1H65 BCD H652 BCD:2H65 BCD HO65 BCD:5HO6 BCD HO26 BCD:6HO2 BCD HO36 BCD:6HO3 BCD H661 BCD:1H66 BCD H662 BCD:2H66 BCD HO66 BCD:6HO6 BCD HO27 BCD:7HO2 BCD HO37 BCD:7HO3 BCD H671 BCD:1H67 BCD H672 BCD:2H67 BCD HO67 BCD:7HO6 BCD H41 BCG:1H4 BCG H42 BCG:2H4 BCG H61 BCG:1H6 BCG H62 BCG:2H6 BCG H71 BCG:1H7 BCG H72 BCG:2H7 BCG H161 BCG:1H16 BCG H162 BCG:2H16 BCG H163 BCG:3H16 BCG H211 BCH:1H21 BCH H212 BCH:2H21 BCH H213 BCH:3H21 BCH H201 BCH:1H20 BCH H202 BCH:2H20 BCH H191 BCH:1H19 BCH H192 BCH:2H19 BCH H161 BCH:1H16 BCH H162 BCH:2H16 BCH H151 BCH:1H15 BCH H152 BCH:2H15 BCH H131 BCH:1H13 BCH H132 BCH:2H13 BCH H133 BCH:3H13 BCH H221 BCH:1H22 BCH H222 BCH:2H22 BCH H223 BCH:3H22 BCH H111 BCH:1H11 BCH H112 BCH:2H11 BCH H113 BCH:3H11 BCH HMA1 BCL:1HMA BCL HMA2 BCL:2HMA BCL HMA3 BCL:3HMA BCL HAA1 BCL:1HAA BCL HAA2 BCL:2HAA BCL HBA1 BCL:1HBA BCL HBA2 BCL:2HBA BCL HMB1 BCL:1HMB BCL HMB2 BCL:2HMB BCL HMB3 BCL:3HMB BCL HBB1 BCL:1HBB BCL HBB2 BCL:2HBB BCL HBB3 BCL:3HBB BCL HMC1 BCL:1HMC BCL HMC2 BCL:2HMC BCL HMC3 BCL:3HMC BCL HAC1 BCL:1HAC BCL HAC2 BCL:2HAC BCL HBC1 BCL:1HBC BCL HBC2 BCL:2HBC BCL HBC3 BCL:3HBC BCL HMD1 BCL:1HMD BCL HMD2 BCL:2HMD BCL HMD3 BCL:3HMD BCL HED1 BCL:1HED BCL HED2 BCL:2HED BCL HED3 BCL:3HED BCL H11 BCL:1H1 BCL H12 BCL:2H1 BCL H41 BCL:1H4 BCL H42 BCL:2H4 BCL H43 BCL:3H4 BCL H51 BCL:1H5 BCL H52 BCL:2H5 BCL H61 BCL:1H6 BCL H62 BCL:2H6 BCL H71 BCL:1H7 BCL H72 BCL:2H7 BCL H91 BCL:1H9 BCL H92 BCL:2H9 BCL H93 BCL:3H9 BCL H101 BCL:1H10 BCL H102 BCL:2H10 BCL H111 BCL:1H11 BCL H112 BCL:2H11 BCL H121 BCL:1H12 BCL H122 BCL:2H12 BCL H141 BCL:1H14 BCL H142 BCL:2H14 BCL H143 BCL:3H14 BCL H151 BCL:1H15 BCL H152 BCL:2H15 BCL H161 BCL:1H16 BCL H162 BCL:2H16 BCL H171 BCL:1H17 BCL H172 BCL:2H17 BCL H191 BCL:1H19 BCL H192 BCL:2H19 BCL H193 BCL:3H19 BCL H201 BCL:1H20 BCL H202 BCL:2H20 BCL H203 BCL:3H20 BCL H5A1 BCM:1H5A BCM H5A2 BCM:2H5A BCM H41 BCM:1H4 BCM H42 BCM:2H4 BCM H31 BCM:1H3 BCM H32 BCM:2H3 BCM HB1 BCM:1HB BCM HB2 BCM:2HB BCM HB3 BCM:3HB BCM HA1 BCM:1HA BCM HA2 BCM:2HA BCM H11 BCN:1H1 BCN H12 BCN:2H1 BCN H31 BCN:1H3 BCN H32 BCN:2H3 BCN H41 BCN:1H4 BCN H42 BCN:2H4 BCN H51 BCN:1H5 BCN H52 BCN:2H5 BCN H61 BCN:1H6 BCN H62 BCN:2H6 BCN H21 BCQ:1H2 BCQ H22 BCQ:2H2 BCQ H31 BCQ:1H3 BCQ H32 BCQ:2H3 BCQ H41 BCQ:1H4 BCQ H42 BCQ:2H4 BCQ H51 BCQ:1H5 BCQ H52 BCQ:2H5 BCQ H031 BCQ:1H03 BCQ H032 BCQ:2H03 BCQ H091 BCQ:1H09 BCQ H092 BCQ:2H09 BCQ H181 BCQ:1H18 BCQ H182 BCQ:2H18 BCQ H183 BCQ:3H18 BCQ H171 BCQ:1H17 BCQ H172 BCQ:2H17 BCQ H173 BCQ:3H17 BCQ HB21 BCQ:1HB2 BCQ HB22 BCQ:2HB2 BCQ HB81 BCQ:1HB8 BCQ HB82 BCQ:2HB8 BCQ H7A1 BCQ:1H7A BCQ H7A2 BCQ:2H7A BCQ HT1 BCQ:1HT BCQ HT2 BCQ:2HT BCQ HC21 BCR:1HC2 BCR HC22 BCR:2HC2 BCR HC31 BCR:1HC3 BCR HC32 BCR:2HC3 BCR HC41 BCR:1HC4 BCR HC42 BCR:2HC4 BCR H10C BCR:CH10 BCR H11C BCR:CH11 BCR H331 BCR:1H33 BCR H332 BCR:2H33 BCR H333 BCR:3H33 BCR H311 BCR:1H31 BCR H312 BCR:2H31 BCR H313 BCR:3H31 BCR H321 BCR:1H32 BCR H322 BCR:2H32 BCR H323 BCR:3H32 BCR H341 BCR:1H34 BCR H342 BCR:2H34 BCR H343 BCR:3H34 BCR H12C BCR:CH12 BCR H14C BCR:CH14 BCR H15C BCR:CH15 BCR H16C BCR:CH16 BCR H17C BCR:CH17 BCR H19C BCR:CH19 BCR H20C BCR:CH20 BCR H21C BCR:CH21 BCR H23C BCR:CH23 BCR H24C BCR:CH24 BCR H271 BCR:1H27 BCR H272 BCR:2H27 BCR H281 BCR:1H28 BCR H282 BCR:2H28 BCR H291 BCR:1H29 BCR H292 BCR:2H29 BCR H351 BCR:1H35 BCR H352 BCR:2H35 BCR H353 BCR:3H35 BCR H361 BCR:1H36 BCR H362 BCR:2H36 BCR H363 BCR:3H36 BCR H371 BCR:1H37 BCR H372 BCR:2H37 BCR H373 BCR:3H37 BCR H381 BCR:1H38 BCR H382 BCR:2H38 BCR H383 BCR:3H38 BCR H391 BCR:1H39 BCR H392 BCR:2H39 BCR H393 BCR:3H39 BCR H401 BCR:1H40 BCR H402 BCR:2H40 BCR H403 BCR:3H40 BCR H BCS:1HN BCS H2 BCS:2HN BCS HB2 BCS:1HB BCS HB3 BCS:2HB BCS HD2 BCS:1HD BCS HD3 BCS:2HD BCS H141 BCV:1H14 BCV H142 BCV:2H14 BCV H3C1 BCV:1H3C BCV H3C2 BCV:2H3C BCV H4C1 BCV:1H4C BCV H4C2 BCV:2H4C BCV H7C1 BCV:1H7C BCV H7C2 BCV:2H7C BCV H161 BCV:1H16 BCV H162 BCV:2H16 BCV H371 BCV:1H37 BCV H372 BCV:2H37 BCV H331 BCV:1H33 BCV H332 BCV:2H33 BCV H2 BCX: HN2 BCX HC1 BCX:1HC BCX HC2 BCX:2HC BCX HB2 BCX:1HB BCX HB3 BCX:2HB BCX HN1 BCY:1HN BCY HN2 BCY:2HN BCY HB1 BCY:1HB BCY HB2 BCY:2HB BCY HB3 BCY:3HB BCY H31 BCY:1H3 BCY H32 BCY:2H3 BCY H41 BCY:1H4 BCY H42 BCY:2H4 BCY H61 BCY:1H6 BCY H62 BCY:2H6 BCY H71 BCY:1H7 BCY H72 BCY:2H7 BCY H21 BCZ:1H2 BCZ H251 BCZ:1H25 BCZ H301 BCZ:1H30 BCZ H271 BCZ:1H27 BCZ H272 BCZ:2H27 BCZ H31 BCZ:1H3 BCZ H101 BCZ:1H10 BCZ H241 BCZ:1H24 BCZ H371 BCZ:1H37 BCZ H372 BCZ:2H37 BCZ H381 BCZ:1H38 BCZ H382 BCZ:2H38 BCZ H383 BCZ:3H38 BCZ H361 BCZ:1H36 BCZ H362 BCZ:2H36 BCZ H391 BCZ:1H39 BCZ H392 BCZ:2H39 BCZ H393 BCZ:3H39 BCZ H111 BCZ:1H11 BCZ H151 BCZ:1H15 BCZ H152 BCZ:2H15 BCZ H153 BCZ:3H15 BCZ H41 BCZ:1H4 BCZ HO91 BCZ:1HO9 BCZ H51 BCZ:1H5 BCZ HO71 BCZ:1HO7 BCZ H11 BCZ:1H1 BCZ H12 BCZ:2H1 BCZ H2C1 BD1:1H2C BD1 H2C2 BD1:2H2C BD1 H5C1 BD1:1H5C BD1 H5C2 BD1:2H5C BD1 H101 BD2:1H10 BD2 H102 BD2:2H10 BD2 H111 BD2:1H11 BD2 H112 BD2:2H11 BD2 H121 BD2:1H12 BD2 H122 BD2:2H12 BD2 H141 BD2:1H14 BD2 H142 BD2:2H14 BD2 H151 BD4:1H15 BD4 H152 BD4:2H15 BD4 H153 BD4:3H15 BD4 H141 BD4:1H14 BD4 H142 BD4:2H14 BD4 H143 BD4:3H14 BD4 H161 BD4:1H16 BD4 H162 BD4:2H16 BD4 H171 BD4:1H17 BD4 H172 BD4:2H17 BD4 H181 BD4:1H18 BD4 H182 BD4:2H18 BD4 H191 BD4:1H19 BD4 H192 BD4:2H19 BD4 H111 BDA:1H11 BDA H112 BDA:2H11 BDA H141 BDA:1H14 BDA H142 BDA:2H14 BDA H143 BDA:3H14 BDA H151 BDA:1H15 BDA H152 BDA:2H15 BDA H211 BDA:1H21 BDA H212 BDA:2H21 BDA H213 BDA:3H21 BDA H1B BDA: H1* BDA H2'1 BDA:1H2* BDA H2'2 BDA:2H2* BDA H3B BDA: H3* BDA HN'1 BDA:1HN* BDA HN'2 BDA:2HN* BDA H4' BDA: H4* BDA HO4' BDA:*HO4 BDA H5' BDA: H5* BDA H6'1 BDA:1H6* BDA H6'2 BDA:2H6* BDA H6'3 BDA:3H6* BDA H7'1 BDA:1H7* BDA H7'2 BDA:2H7* BDA HO8' BDA:'HO8 BDA H10' BDA:'H10 BDA HL'1 BDA:1HL' BDA HL'2 BDA:2HL' BDA H12' BDA:'H12 BDA HK'1 BDA:1HK' BDA HK'2 BDA:2HK' BDA HK'3 BDA:3HK' BDA HJ'1 BDA:1HJ' BDA HJ'2 BDA:2HJ' BDA H17' BDA:'H17 BDA HI'1 BDA:1HI' BDA HI'2 BDA:2HI' BDA HI'3 BDA:3HI' BDA H1D BDA:'H1* BDA H2B BDA:1H2' BDA H2D BDA:2H2' BDA H3D BDA:'H3* BDA HNB BDA:1HN' BDA HND BDA:2HN' BDA H4D BDA:'H4* BDA HO4A BDA:'HO4 BDA H5D BDA:'H5* BDA H6B BDA:1H6' BDA H6D BDA:2H6' BDA H6E BDA:3H6' BDA H7B BDA:1H7' BDA H7D BDA:2H7' BDA H9A' BDA:'H9A BDA H9B' BDA:'H9B BDA HO11 BDB:1HO1 BDB HO21 BDB:1HO2 BDB HC21 BDB:1HC2 BDB HC31 BDB:1HC3 BDB HC51 BDB:1HC5 BDB HC61 BDB:1HC6 BDB HB21 BDB:1HB2 BDB HB31 BDB:1HB3 BDB HB51 BDB:1HB5 BDB HB61 BDB:1HB6 BDB HH11 BDB:1HH1 BDB HH21 BDB:1HH2 BDB HE11 BDC:1HE1 BDC HE12 BDC:2HE1 BDC HE31 BDC:1HE3 BDC HE32 BDC:2HE3 BDC HE21 BDC:1HE2 BDC HE22 BDC:2HE2 BDC HE41 BDC:1HE4 BDC HE42 BDC:2HE4 BDC HD21 BDC:1HD2 BDC HD22 BDC:2HD2 BDC HD31 BDC:1HD3 BDC HD32 BDC:2HD3 BDC HD71 BDC:1HD7 BDC HD72 BDC:2HD7 BDC HD73 BDC:3HD7 BDC HD81 BDC:1HD8 BDC HD82 BDC:2HD8 BDC HD83 BDC:3HD8 BDC H4'1 BDC:1H4' BDC H4'2 BDC:2H4' BDC H3'1 BDC:1H3' BDC H3'2 BDC:2H3' BDC H2'1 BDC:1H2' BDC H2'2 BDC:2H2' BDC H1'1 BDC:1H1' BDC H1'2 BDC:2H1' BDC H9' BDC:'H9 BDC H5' BDC:'H5 BDC H6' BDC:'H6 BDC H7' BDC:'H7 BDC H8' BDC:'H8 BDC H1' BDC:'H1 BDC H2' BDC:'H2 BDC H3' BDC:'H3 BDC HD1' BDC:'HD1 BDC H'21 BDC:1H'2 BDC H'22 BDC:2H'2 BDC H'31 BDC:1H'3 BDC H'32 BDC:2H'3 BDC H'71 BDC:1H'7 BDC H'72 BDC:2H'7 BDC H'73 BDC:3H'7 BDC H'81 BDC:1H'8 BDC H'82 BDC:2H'8 BDC H'83 BDC:3H'8 BDC H11 BDD:1H1 BDD H12 BDD:2H1 BDD H21 BDD:1H2 BDD H22 BDD:2H2 BDD H31 BDD:1H3 BDD H32 BDD:2H3 BDD H41 BDD:1H4 BDD H42 BDD:2H4 BDD H51 BDD:1H5 BDD H52 BDD:2H5 BDD H61 BDD:1H6 BDD H62 BDD:2H6 BDD H71 BDD:1H7 BDD H72 BDD:2H7 BDD H81 BDD:1H8 BDD H82 BDD:2H8 BDD H91 BDD:1H9 BDD H92 BDD:2H9 BDD H101 BDD:1H10 BDD H102 BDD:2H10 BDD H111 BDD:1H11 BDD H112 BDD:2H11 BDD H121 BDD:1H12 BDD H122 BDD:2H12 BDD H11 BDF:1H1 BDF H12 BDF:2H1 BDF H61 BDF:1H6 BDF H62 BDF:2H6 BDF HN21 BDG:1HN2 BDG HN22 BDG:2HN2 BDG H61 BDG:1H6 BDG H62 BDG:2H6 BDG HN61 BDG:1HN6 BDG HN62 BDG:2HN6 BDG HN11 BDH:1HN1 BDH HN12 BDH:2HN1 BDH H21 BDH:1H2 BDH H22 BDH:2H2 BDH HB1 BDH:1HB BDH HB2 BDH:2HB BDH HC61 BDI:1HC6 BDI HC62 BDI:2HC6 BDI HC71 BDI:1HC7 BDI HC72 BDI:2HC7 BDI HC81 BDI:1HC8 BDI HC82 BDI:2HC8 BDI HC91 BDI:1HC9 BDI HC92 BDI:2HC9 BDI HC93 BDI:3HC9 BDI H51 BDK:1H5 BDK H52 BDK:2H5 BDK H53 BDK:3H5 BDK H61 BDK:1H6 BDK H62 BDK:2H6 BDK H63 BDK:3H6 BDK H81 BDK:1H8 BDK H82 BDK:2H8 BDK H181 BDK:1H18 BDK H182 BDK:2H18 BDK H191 BDK:1H19 BDK H192 BDK:2H19 BDK H201 BDK:1H20 BDK H202 BDK:2H20 BDK H211 BDK:1H21 BDK H212 BDK:2H21 BDK H221 BDK:1H22 BDK H222 BDK:2H22 BDK H231 BDK:1H23 BDK H232 BDK:2H23 BDK HN41 BDK:1HN4 BDK HN42 BDK:2HN4 BDK HN21 BDM:1HN2 BDM HN22 BDM:2HN2 BDM HN41 BDM:1HN4 BDM HN42 BDM:2HN4 BDM H71 BDM:1H7 BDM H72 BDM:2H7 BDM H141 BDM:1H14 BDM H142 BDM:2H14 BDM H143 BDM:3H14 BDM H151 BDM:1H15 BDM H152 BDM:2H15 BDM H161 BDM:1H16 BDM H162 BDM:2H16 BDM H171 BDM:1H17 BDM H172 BDM:2H17 BDM H191 BDM:1H19 BDM H192 BDM:2H19 BDM H201 BDM:1H20 BDM H202 BDM:2H20 BDM HN21 BDN:1HN2 BDN HN22 BDN:2HN2 BDN H51 BDR:1H5 BDR H52 BDR:2H5 BDR HC11 BDS:1HC1 BDS HXT2 BDS:2HXT BDS HC51 BDS:1HC5 BDS HC52 BDS:2HC5 BDS HC71 BDS:1HC7 BDS HC81 BDS:1HC8 BDS H111 BDS:1H11 BDS H112 BDS:2H11 BDS H141 BDS:1H14 BDS H151 BDS:1H15 BDS HXT1 BDS:1HXT BDS H191 BDS:1H19 BDS H192 BDS:2H19 BDS H211 BDS:1H21 BDS H221 BDS:1H22 BDS H251 BDS:1H25 BDS H252 BDS:2H25 BDS H281 BDS:1H28 BDS HO21 BDU:1HO2 BDU HO22 BDU:2HO2 BDU HO23 BDU:3HO2 BDU HX31 BDU:1HX3 BDU HX32 BDU:2HX3 BDU H111 BDU:1H11 BDU H112 BDU:2H11 BDU H113 BDU:3H11 BDU HX91 BDU:1HX9 BDU HX92 BDU:2HX9 BDU HOP2 BE1:2HOP BE1 HOP3 BE1:3HOP BE1 HN21 BE2:1HN2 BE2 HN22 BE2:2HN2 BE2 H131 BE3:1H13 BE3 H132 BE3:2H13 BE3 H231 BE3:1H23 BE3 H232 BE3:2H23 BE3 H381 BE3:1H38 BE3 H382 BE3:2H38 BE3 H481 BE3:1H48 BE3 H482 BE3:2H48 BE3 H131 BE4:1H13 BE4 H132 BE4:2H13 BE4 H231 BE4:1H23 BE4 H232 BE4:2H23 BE4 H381 BE4:1H38 BE4 H382 BE4:2H38 BE4 H481 BE4:1H48 BE4 H482 BE4:2H48 BE4 H131 BE5:1H13 BE5 H132 BE5:2H13 BE5 H231 BE5:1H23 BE5 H232 BE5:2H23 BE5 H381 BE5:1H38 BE5 H382 BE5:2H38 BE5 H481 BE5:1H48 BE5 H482 BE5:2H48 BE5 H131 BE6:1H13 BE6 H132 BE6:2H13 BE6 H231 BE6:1H23 BE6 H232 BE6:2H23 BE6 H381 BE6:1H38 BE6 H382 BE6:2H38 BE6 H481 BE6:1H48 BE6 H482 BE6:2H48 BE6 H21 BEA:1H2 BEA H22 BEA:2H2 BEA H23 BEA:3H2 BEA H321 BEB:1H32 BEB H322 BEB:2H32 BEB H221 BEB:1H22 BEB H222 BEB:2H22 BEB H581 BEB:1H58 BEB H582 BEB:2H58 BEB H481 BEB:1H48 BEB H482 BEB:2H48 BEB H321 BEC:1H32 BEC H322 BEC:2H32 BEC H221 BEC:1H22 BEC H222 BEC:2H22 BEC H581 BEC:1H58 BEC H582 BEC:2H58 BEC H431 BEC:1H43 BEC H432 BEC:2H43 BEC H433 BEC:3H43 BEC H441 BEC:1H44 BEC H442 BEC:2H44 BEC H443 BEC:3H44 BEC H481 BEC:1H48 BEC H482 BEC:2H48 BEC H483 BEC:3H48 BEC H131 BED:1H13 BED H132 BED:2H13 BED H231 BED:1H23 BED H232 BED:2H23 BED H381 BED:1H38 BED H382 BED:2H38 BED H481 BED:1H48 BED H482 BED:2H48 BED H131 BEE:1H13 BEE H132 BEE:2H13 BEE H241 BEE:1H24 BEE H242 BEE:2H24 BEE H243 BEE:3H24 BEE H251 BEE:1H25 BEE H252 BEE:2H25 BEE H253 BEE:3H25 BEE H291 BEE:1H29 BEE H292 BEE:2H29 BEE H293 BEE:3H29 BEE H311 BEE:1H31 BEE H312 BEE:2H31 BEE H391 BEE:1H39 BEE H392 BEE:2H39 BEE H393 BEE:3H39 BEE H401 BEE:1H40 BEE H402 BEE:2H40 BEE H403 BEE:3H40 BEE H441 BEE:1H44 BEE H442 BEE:2H44 BEE H443 BEE:3H44 BEE H021 BEG:1H02 BEG H031 BEG:1H03 BEG H041 BEG:1H04 BEG H051 BEG:1H05 BEG H061 BEG:1H06 BEG H081 BEG:1H08 BEG H091 BEG:1H09 BEG H101 BEG:1H10 BEG H111 BEG:1H11 BEG H121 BEG:1H12 BEG H131 BEG:1H13 BEG H132 BEG:2H13 BEG H231 BEG:1H23 BEG H232 BEG:2H23 BEG H151 BEG:1H15 BEG H161 BEG:1H16 BEG H162 BEG:2H16 BEG H171 BEG:1H17 BEG H241 BEG:1H24 BEG H181 BEG:1H18 BEG H211 BEG:1H21 BEG H271 BEG:1H27 BEG H281 BEG:1H28 BEG H311 BEG:1H31 BEG H321 BEG:1H32 BEG H331 BEG:1H33 BEG H341 BEG:1H34 BEG H351 BEG:1H35 BEG H361 BEG:1H36 BEG H371 BEG:1H37 BEG H372 BEG:2H37 BEG H381 BEG:1H38 BEG H411 BEG:1H41 BEG H421 BEG:1H42 BEG H431 BEG:1H43 BEG H441 BEG:1H44 BEG H451 BEG:1H45 BEG H461 BEG:1H46 BEG H471 BEG:1H47 BEG H472 BEG:2H47 BEG H011 BEH:1H01 BEH H021 BEH:1H02 BEH H031 BEH:1H03 BEH H051 BEH:1H05 BEH H052 BEH:2H05 BEH H071 BEH:1H07 BEH H081 BEH:1H08 BEH H091 BEH:1H09 BEH H101 BEH:1H10 BEH H111 BEH:1H11 BEH H141 BEH:1H14 BEH H151 BEH:1H15 BEH H171 BEH:1H17 BEH H181 BEH:1H18 BEH H191 BEH:1H19 BEH H201 BEH:1H20 BEH H221 BEH:1H22 BEH H222 BEH:2H22 BEH H231 BEH:1H23 BEH H241 BEH:1H24 BEH H311 BEH:1H31 BEH H321 BEH:1H32 BEH H331 BEH:1H33 BEH H351 BEH:1H35 BEH H352 BEH:2H35 BEH H371 BEH:1H37 BEH H381 BEH:1H38 BEH H391 BEH:1H39 BEH H401 BEH:1H40 BEH H411 BEH:1H41 BEH H441 BEH:1H44 BEH H451 BEH:1H45 BEH H452 BEH:2H45 BEH H471 BEH:1H47 BEH H481 BEH:1H48 BEH H491 BEH:1H49 BEH H501 BEH:1H50 BEH H511 BEH:1H51 BEH H301 BEI:1H30 BEI H302 BEI:2H30 BEI H211 BEI:1H21 BEI H212 BEI:2H21 BEI H213 BEI:3H21 BEI H221 BEI:1H22 BEI H222 BEI:2H22 BEI H461 BEI:1H46 BEI H462 BEI:2H46 BEI H463 BEI:3H46 BEI H261 BEI:1H26 BEI H262 BEI:2H26 BEI H263 BEI:3H26 BEI H331 BEI:1H33 BEI H332 BEI:2H33 BEI H111 BEI:1H11 BEI H112 BEI:2H11 BEI H113 BEI:3H11 BEI H121 BEI:1H12 BEI H122 BEI:2H12 BEI H471 BEI:1H47 BEI H472 BEI:2H47 BEI H473 BEI:3H47 BEI H161 BEI:1H16 BEI H162 BEI:2H16 BEI H163 BEI:3H16 BEI H131 BEJ:1H13 BEJ H132 BEJ:2H13 BEJ H241 BEJ:1H24 BEJ H242 BEJ:2H24 BEJ H243 BEJ:3H24 BEJ H251 BEJ:1H25 BEJ H252 BEJ:2H25 BEJ H253 BEJ:3H25 BEJ H291 BEJ:1H29 BEJ H292 BEJ:2H29 BEJ H293 BEJ:3H29 BEJ H311 BEJ:1H31 BEJ H312 BEJ:2H31 BEJ H391 BEJ:1H39 BEJ H392 BEJ:2H39 BEJ H393 BEJ:3H39 BEJ H401 BEJ:1H40 BEJ H402 BEJ:2H40 BEJ H403 BEJ:3H40 BEJ H441 BEJ:1H44 BEJ H442 BEJ:2H44 BEJ H443 BEJ:3H44 BEJ HN1 BEK:1HN BEK HN2 BEK:2HN BEK H81 BEK:1H8 BEK H82 BEK:2H8 BEK H83 BEK:3H8 BEK H71 BEL:1H7 BEL H72 BEL:2H7 BEL H81 BEL:1H8 BEL H82 BEL:2H8 BEL H91 BEL:1H9 BEL H92 BEL:2H9 BEL H101 BEL:1H10 BEL H102 BEL:2H10 BEL H121 BEL:1H12 BEL H122 BEL:2H12 BEL HN21 BEN:1HN2 BEN HN22 BEN:2HN2 BEN H41 BEO:1H4 BEO H42 BEO:2H4 BEO H43 BEO:3H4 BEO H11 BEP:1H1 BEP H12 BEP:2H1 BEP H21 BEP:1H2 BEP H31 BEP:1H3 BEP H32 BEP:2H3 BEP H41 BEP:1H4 BEP H42 BEP:2H4 BEP H51 BEP:1H5 BEP H61 BEP:1H6 BEP H62 BEP:2H6 BEP H63 BEP:3H6 BEP H71 BEP:1H7 BEP H72 BEP:2H7 BEP H73 BEP:3H7 BEP H81 BEP:1H8 BEP H82 BEP:2H8 BEP H91 BEP:1H9 BEP H92 BEP:2H9 BEP H101 BEP:1H10 BEP H102 BEP:2H10 BEP H111 BEP:1H11 BEP H112 BEP:2H11 BEP H121 BEP:1H12 BEP H122 BEP:2H12 BEP H141 BEP:1H14 BEP H151 BEP:1H15 BEP H161 BEP:1H16 BEP H171 BEP:1H17 BEP H181 BEP:1H18 BEP H201 BEP:1H20 BEP H211 BEP:1H21 BEP H221 BEP:1H22 BEP H231 BEP:1H23 BEP H241 BEP:1H24 BEP HB1 BEQ:1HB BEQ HB2 BEQ:2HB BEQ HB3 BEQ:3HB BEQ HG1 BEQ:1HG BEQ HG2 BEQ:2HG BEQ HG3 BEQ:3HG BEQ HD1 BEQ:1HD BEQ HD2 BEQ:2HD BEQ H11 BEQ:1H1 BEQ H12 BEQ:2H1 BEQ H21 BEQ:1H2 BEQ H22 BEQ:2H2 BEQ H31 BEQ:1H3 BEQ H32 BEQ:2H3 BEQ H51 BEQ:1H5 BEQ H52 BEQ:2H5 BEQ H61 BEQ:1H6 BEQ H62 BEQ:2H6 BEQ H71 BEQ:1H7 BEQ H72 BEQ:2H7 BEQ H81 BEQ:1H8 BEQ H82 BEQ:2H8 BEQ H91 BEQ:1H9 BEQ H92 BEQ:2H9 BEQ H101 BEQ:1H10 BEQ H102 BEQ:2H10 BEQ H111 BEQ:1H11 BEQ H112 BEQ:2H11 BEQ H121 BEQ:1H12 BEQ H122 BEQ:2H12 BEQ H131 BEQ:1H13 BEQ H132 BEQ:2H13 BEQ H141 BEQ:1H14 BEQ H142 BEQ:2H14 BEQ H151 BEQ:1H15 BEQ H152 BEQ:2H15 BEQ H153 BEQ:3H15 BEQ H31 BER:1H3 BER H51 BER:1H5 BER H61 BER:1H6 BER H71 BER:1H7 BER H72 BER:2H7 BER H91 BER:1H9 BER H101 BER:1H10 BER H102 BER:2H10 BER H131 BER:1H13 BER H161 BER:1H16 BER H171 BER:1H17 BER H172 BER:2H17 BER H191 BER:1H19 BER H192 BER:2H19 BER H193 BER:3H19 BER H201 BER:1H20 BER H202 BER:2H20 BER H203 BER:3H20 BER HN21 BES:1HN2 BES HN22 BES:2HN2 BES H61 BES:1H6 BES H62 BES:2H6 BES H131 BES:1H13 BES H132 BES:2H13 BES H151 BES:1H15 BES H152 BES:2H15 BES H153 BES:3H15 BES H161 BES:1H16 BES H162 BES:2H16 BES H163 BES:3H16 BES HA1 BET:1HA BET HA2 BET:2HA BET H11 BET:1H1 BET H12 BET:2H1 BET H13 BET:3H1 BET H21 BET:1H2 BET H22 BET:2H2 BET H23 BET:3H2 BET H31 BET:1H3 BET H32 BET:2H3 BET H33 BET:3H3 BET H'C1 BEU:1H'C BEU H'C2 BEU:2H'C BEU H3N1 BEU:1H3N BEU H3N2 BEU:2H3N BEU HM41 BEU:1HM4 BEU HM42 BEU:2HM4 BEU HM43 BEU:3HM4 BEU HD21 BFA:1HD2 BFA HD22 BFA:2HD2 BFA HD31 BFA:1HD3 BFA HD32 BFA:2HD3 BFA HD71 BFA:1HD7 BFA HD72 BFA:2HD7 BFA HD73 BFA:3HD7 BFA HD81 BFA:1HD8 BFA HD82 BFA:2HD8 BFA HD83 BFA:3HD8 BFA HAA1 BFB:1HAA BFB HAA2 BFB:2HAA BFB HAO1 BFB:1HAO BFB HAO2 BFB:2HAO BFB HAM1 BFB:1HAM BFB HAM2 BFB:2HAM BFB HAN1 BFB:1HAN BFB HAN2 BFB:2HAN BFB HAP1 BFB:1HAP BFB HAP2 BFB:2HAP BFB HAP3 BFB:3HAP BFB HA1 BFC:1HA BFC HA2 BFC:2HA BFC HC1 BFC:1HC BFC HC2 BFC:2HC BFC HD1 BFC:1HD BFC HD2 BFC:2HD BFC HE1 BFC:1HE BFC HE2 BFC:2HE BFC HF1 BFC:1HF BFC HF2 BFC:2HF BFC HG1 BFC:1HG BFC HG2 BFC:2HG BFC HH1 BFC:1HH BFC HH2 BFC:2HH BFC HI1 BFC:1HI BFC HI2 BFC:2HI BFC HJ1 BFC:1HJ BFC HJ2 BFC:2HJ BFC HK1 BFC:1HK BFC HK2 BFC:2HK BFC HL1 BFC:1HL BFC HL2 BFC:2HL BFC HM1 BFC:1HM BFC HM2 BFC:2HM BFC HM3 BFC:3HM BFC H2 BFD: HN2 BFD HB2 BFD:1HB BFD HB3 BFD:2HB BFD H181 BFI:1H18 BFI H182 BFI:2H18 BFI H231 BFI:1H23 BFI H232 BFI:2H23 BFI H71 BFL:1H7 BFL H72 BFL:2H7 BFL H73 BFL:3H7 BFL HOP2 BFP:2HOP BFP HOP3 BFP:3HOP BFP H11 BFP:1H1 BFP H12 BFP:2H1 BFP H61 BFP:1H6 BFP H62 BFP:2H6 BFP HOP5 BFP:5HOP BFP HOP6 BFP:6HOP BFP H161 BFQ:1H16 BFQ H162 BFQ:2H16 BFQ H191 BFQ:1H19 BFQ H192 BFQ:2H19 BFQ H231 BFQ:1H23 BFQ H232 BFQ:2H23 BFQ H261 BFQ:1H26 BFQ H262 BFQ:2H26 BFQ H291 BFQ:1H29 BFQ H292 BFQ:2H29 BFQ H321 BFQ:1H32 BFQ H322 BFQ:2H32 BFQ H351 BFQ:1H35 BFQ H352 BFQ:2H35 BFQ H353 BFQ:3H35 BFQ H391 BFQ:1H39 BFQ H392 BFQ:2H39 BFQ H393 BFQ:3H39 BFQ HE21 BFS:1HE2 BFS HE22 BFS:2HE2 BFS HE23 BFS:3HE2 BFS HM21 BFT:1HM2 BFT HM22 BFT:2HM2 BFT HM23 BFT:3HM2 BFT HM41 BFT:1HM4 BFT HM42 BFT:2HM4 BFT HM43 BFT:3HM4 BFT H61 BFT:1H6 BFT H62 BFT:2H6 BFT H71 BFT:1H7 BFT H72 BFT:2H7 BFT H4A1 BFT:1H4A BFT H4A2 BFT:2H4A BFT H7A1 BFT:1H7A BFT H7A2 BFT:2H7A BFT H131 BFU:1H13 BFU H132 BFU:2H13 BFU H251 BFU:1H25 BFU H252 BFU:2H25 BFU H261 BFU:1H26 BFU H262 BFU:2H26 BFU H263 BFU:3H26 BFU H41 BG3:1H4 BG3 H42 BG3:2H4 BG3 H61 BG3:1H6 BG3 H62 BG3:2H6 BG3 H63 BG3:3H6 BG3 H41 BG4:1H4 BG4 H42 BG4:2H4 BG4 H61 BG4:1H6 BG4 H62 BG4:2H6 BG4 H63 BG4:3H6 BG4 H71 BG4:1H7 BG4 H72 BG4:2H7 BG4 H73 BG4:3H7 BG4 H41 BG5:1H4 BG5 H42 BG5:2H4 BG5 H61 BG5:1H6 BG5 H62 BG5:2H6 BG5 H63 BG5:3H6 BG5 HC61 BG6:1HC6 BG6 HC62 BG6:2HC6 BG6 H1O1 BG6:1H1O BG6 H2O2 BG6:2H2O BG6 H6C1 BGC:1H6C BGC H6C2 BGC:2H6C BGC H31 BGD:1H3 BGD H32 BGD:2H3 BGD H41A BGD:1H4 BGD H42A BGD:2H4 BGD H221 BGD:1H22 BGD H222 BGD:2H22 BGD H381 BGD:1H38 BGD H382 BGD:2H38 BGD H541 BGD:1H54 BGD H542 BGD:2H54 BGD HN11 BGF:1HN1 BGF HN12 BGF:2HN1 BGF HN21 BGF:1HN2 BGF HN22 BGF:2HN2 BGF H1'1 BGF:1H1' BGF H1'2 BGF:2H1' BGF H2'1 BGF:1H2' BGF H2'2 BGF:2H2' BGF H71 BGG:1H7 BGG H72 BGG:2H7 BGG H1'1 BGL:1H1' BGL H1'2 BGL:2H1' BGL H2'1 BGL:1H2' BGL H2'2 BGL:2H2' BGL H3'1 BGL:1H3' BGL H3'2 BGL:2H3' BGL H4'1 BGL:1H4' BGL H4'2 BGL:2H4' BGL H5'1 BGL:1H5' BGL H5'2 BGL:2H5' BGL H6'1 BGL:1H6' BGL H6'2 BGL:2H6' BGL H7'1 BGL:1H7' BGL H7'2 BGL:2H7' BGL H8'1 BGL:1H8' BGL H8'2 BGL:2H8' BGL H8'3 BGL:3H8' BGL HOP2 BGM:2HOP BGM H5' BGM:1H5* BGM H5'' BGM:2H5* BGM H4' BGM: H4* BGM H1' BGM: H1* BGM H21 BGM:1H2 BGM H22 BGM:2H2 BGM H2' BGM:1H2* BGM H2'' BGM:2H2* BGM H3' BGM: H3* BGM HO3' BGM:H3T BGM HOP3 BGM:3HOP BGM H61 BGN:1H6 BGN H62 BGN:2H6 BGN H81 BGN:1H8 BGN H82 BGN:2H8 BGN H91 BGN:1H9 BGN H92 BGN:2H9 BGN H101 BGN:1H10 BGN H102 BGN:2H10 BGN H103 BGN:3H10 BGN H61 BGP:1H6 BGP H62 BGP:2H6 BGP HOP2 BGP:2HOP BGP HOP3 BGP:3HOP BGP H2'1 BGS:1H2* BGS H2'2 BGS:2H2* BGS H61 BGS:1H6 BGS H62 BGS:2H6 BGS HS1 BGS:1HS BGS HS2 BGS:2HS BGS HS3 BGS:3HS BGS HB1 BGT:1HB BGT HB2 BGT:2HB BGT HG1 BGT:1HG BGT HG2 BGT:2HG BGT HE21 BGT:1HE2 BGT HE22 BGT:2HE2 BGT H11 BGT:1H1 BGT H12 BGT:2H1 BGT H13 BGT:3H1 BGT H21 BGT:1H2 BGT H22 BGT:2H2 BGT H23 BGT:3H2 BGT H31 BGT:1H3 BGT H32 BGT:2H3 BGT H33 BGT:3H3 BGT HN1 BGT:1HN BGT HN2 BGT:2HN BGT HC61 BGX:1HC6 BGX HC62 BGX:2HC6 BGX HC63 BGX:3HC6 BGX H11 BH0:1H1 BH0 H21 BH0:1H2 BH0 H22 BH0:2H2 BH0 H44 BH0:4H4 BH0 H55 BH0:5H5 BH0 H66 BH0:6H6 BH0 H77 BH0:7H7 BH0 H88 BH0:8H8 BH0 H99 BH0:9H9 BH0 H101 BH0:1H10 BH0 H102 BH0:2H10 BH0 H141 BH0:1H14 BH0 H142 BH0:2H14 BH0 H151 BH0:1H15 BH0 H152 BH0:2H15 BH0 H117 BH0:17H1 BH0 H118 BH0:18H1 BH0 H220 BH0:20H2 BH0 H221 BH0:21H2 BH0 H223 BH0:23H2 BH0 H224 BH0:24H2 BH0 H226 BH0:26H2 BH0 H227 BH0:27H2 BH0 H331 BH0:31H3 BH0 H332 BH0:32H3 BH0 H334 BH0:34H3 BH0 H113 BH0:13H1 BH0 HED1 BH1:1HED BH1 HED2 BH1:2HED BH1 HED3 BH1:3HED BH1 HMD1 BH1:1HMD BH1 HMD2 BH1:2HMD BH1 HMD3 BH1:3HMD BH1 HAC1 BH1:1HAC BH1 HAC2 BH1:2HAC BH1 HBC1 BH1:1HBC BH1 HBC2 BH1:2HBC BH1 HBC3 BH1:3HBC BH1 HMC1 BH1:1HMC BH1 HMC2 BH1:2HMC BH1 HMC3 BH1:3HMC BH1 HBB1 BH1:1HBB BH1 HBB2 BH1:2HBB BH1 HBB3 BH1:3HBB BH1 HMB1 BH1:1HMB BH1 HMB2 BH1:2HMB BH1 HMB3 BH1:3HMB BH1 HMA1 BH1:1HMA BH1 HMA2 BH1:2HMA BH1 HMA3 BH1:3HMA BH1 HAA1 BH1:1HAA BH1 HAA2 BH1:2HAA BH1 HBA1 BH1:1HBA BH1 HBA2 BH1:2HBA BH1 H1C1 BH1:1H1C BH1 H1C2 BH1:2H1C BH1 H4C1 BH1:1H4C BH1 H4C2 BH1:2H4C BH1 H4C3 BH1:3H4C BH1 H5C1 BH1:1H5C BH1 H5C2 BH1:2H5C BH1 H6C1 BH1:1H6C BH1 H6C2 BH1:2H6C BH1 H7C1 BH1:1H7C BH1 H7C2 BH1:2H7C BH1 H9C1 BH1:1H9C BH1 H9C2 BH1:2H9C BH1 H9C3 BH1:3H9C BH1 H101 BH1:1H10 BH1 H102 BH1:2H10 BH1 H111 BH1:1H11 BH1 H112 BH1:2H11 BH1 H121 BH1:1H12 BH1 H122 BH1:2H12 BH1 H141 BH1:1H14 BH1 H142 BH1:2H14 BH1 H143 BH1:3H14 BH1 H151 BH1:1H15 BH1 H152 BH1:2H15 BH1 H161 BH1:1H16 BH1 H162 BH1:2H16 BH1 H171 BH1:1H17 BH1 H172 BH1:2H17 BH1 H191 BH1:1H19 BH1 H192 BH1:2H19 BH1 H193 BH1:3H19 BH1 H201 BH1:1H20 BH1 H202 BH1:2H20 BH1 H203 BH1:3H20 BH1 H71 BH4:1H7 BH4 H72 BH4:2H7 BH4 H171 BH4:1H17 BH4 H172 BH4:2H17 BH4 H173 BH4:3H17 BH4 H111 BH4:1H11 BH4 H112 BH4:2H11 BH4 H21A BH7:1H2 BH7 H31 BH7:1H3 BH7 H61 BH7:1H6 BH7 H62 BH7:2H6 BH7 H81 BH7:1H8 BH7 HO2' BHA:'HO2 BHA HN41 BHA:1HN4 BHA HN42 BHA:2HN4 BHA HN41 BHB:1HN4 BHB HN42 BHB:2HN4 BHB HN21 BHB:1HN2 BHB HN22 BHB:2HN2 BHB H91 BHB:1H9 BHB H92 BHB:2H9 BHB H161 BHB:1H16 BHB H162 BHB:2H16 BHB H171 BHB:1H17 BHB H172 BHB:2H17 BHB H201 BHB:1H20 BHB H202 BHB:2H20 BHB H203 BHB:3H20 BHB H191 BHB:1H19 BHB H192 BHB:2H19 BHB H193 BHB:3H19 BHB H BHD:1HN BHD H2 BHD:2HN BHD HD2 BHD: HOD BHD H1'1 BHG:1H1' BHG H1'2 BHG:2H1' BHG H2'1 BHG:1H2' BHG H2'2 BHG:2H2' BHG H3'1 BHG:1H3' BHG H3'2 BHG:2H3' BHG H4'1 BHG:1H4' BHG H4'2 BHG:2H4' BHG H5'1 BHG:1H5' BHG H5'2 BHG:2H5' BHG H6'1 BHG:1H6' BHG H6'2 BHG:2H6' BHG H6'3 BHG:3H6' BHG H41 BHH:1H4 BHH H42 BHH:2H4 BHH H43 BHH:3H4 BHH H31 BHH:1H3 BHH H32 BHH:2H3 BHH H21 BHH:1H2 BHH H22 BHH:2H2 BHH H11 BHH:1H1 BHH H12 BHH:2H1 BHH HE1 BHH:1HE BHH HH11 BHH:1HH1 BHH HH21 BHH:1HH2 BHH HH1 BHH:1HH BHH H101 BHI:1H10 BHI H102 BHI:2H10 BHI H111 BHI:1H11 BHI H112 BHI:2H11 BHI H113 BHI:3H11 BHI H121 BHI:1H12 BHI H122 BHI:2H12 BHI H131 BHI:1H13 BHI H132 BHI:2H13 BHI H11 BHL:1H1 BHL H12 BHL:2H1 BHL H21 BHL:1H2 BHL H22 BHL:2H2 BHL H31 BHL:1H3 BHL H32 BHL:2H3 BHL H41 BHL:1H4 BHL H42 BHL:2H4 BHL H51 BHL:1H5 BHL H52 BHL:2H5 BHL H61 BHL:1H6 BHL H62 BHL:2H6 BHL H131 BHM:1H13 BHM H132 BHM:2H13 BHM H121 BHM:1H12 BHM H122 BHM:2H12 BHM H123 BHM:3H12 BHM H91 BHP:1H9 BHP H92 BHP:2H9 BHP H81 BHP:1H8 BHP H82 BHP:2H8 BHP H71 BHP:1H7 BHP H72 BHP:2H7 BHP H121 BHP:1H12 BHP H122 BHP:2H12 BHP H111 BHP:1H11 BHP H112 BHP:2H11 BHP H101 BHP:1H10 BHP H102 BHP:2H10 BHP H151 BHP:1H15 BHP H152 BHP:2H15 BHP H291 BHP:1H29 BHP H292 BHP:2H29 BHP H301 BHP:1H30 BHP H302 BHP:2H30 BHP H221 BHP:1H22 BHP H222 BHP:2H22 BHP H81 BHQ:1H8 BHQ H82 BHQ:2H8 BHQ H83 BHQ:3H8 BHQ H91 BHQ:1H9 BHQ H92 BHQ:2H9 BHQ H93 BHQ:3H9 BHQ H101 BHQ:1H10 BHQ H102 BHQ:2H10 BHQ H103 BHQ:3H10 BHQ H121 BHQ:1H12 BHQ H122 BHQ:2H12 BHQ H123 BHQ:3H12 BHQ H131 BHQ:1H13 BHQ H132 BHQ:2H13 BHQ H133 BHQ:3H13 BHQ H141 BHQ:1H14 BHQ H142 BHQ:2H14 BHQ H143 BHQ:3H14 BHQ HN21 BHS:1HN2 BHS HN22 BHS:2HN2 BHS H71 BHS:1H7 BHS H72 BHS:2H7 BHS H3'1 BHS:1H3' BHS H3'2 BHS:2H3' BHS H3'3 BHS:3H3' BHS HBD1 BI1:1HBD BI1 HBD2 BI1:2HBD BI1 HBD3 BI1:3HBD BI1 HBE1 BI1:1HBE BI1 HBE2 BI1:2HBE BI1 HBE3 BI1:3HBE BI1 HBB1 BI1:1HBB BI1 HBB2 BI1:2HBB BI1 HBA1 BI1:1HBA BI1 HBA2 BI1:2HBA BI1 HAY1 BI1:1HAY BI1 HAY2 BI1:2HAY BI1 HBD1 BI2:1HBD BI2 HBD2 BI2:2HBD BI2 HBD3 BI2:3HBD BI2 HBG1 BI2:1HBG BI2 HBG2 BI2:2HBG BI2 HBF1 BI2:1HBF BI2 HBF2 BI2:2HBF BI2 HBE1 BI2:1HBE BI2 HBE2 BI2:2HBE BI2 HBA1 BI2:1HBA BI2 HBA2 BI2:2HBA BI2 HAY1 BI2:1HAY BI2 HAY2 BI2:2HAY BI2 HBC1 BI3:1HBC BI3 HBC2 BI3:2HBC BI3 HBB1 BI3:1HBB BI3 HBB2 BI3:2HBB BI3 HBA1 BI3:1HBA BI3 HBA2 BI3:2HBA BI3 HAY1 BI3:1HAY BI3 HAY2 BI3:2HAY BI3 H241 BI4:1H24 BI4 H242 BI4:2H24 BI4 H251 BI4:1H25 BI4 H252 BI4:2H25 BI4 H271 BI4:1H27 BI4 H272 BI4:2H27 BI4 H281 BI4:1H28 BI4 H282 BI4:2H28 BI4 H291 BI4:1H29 BI4 H292 BI4:2H29 BI4 H311 BI4:1H31 BI4 H312 BI4:2H31 BI4 H313 BI4:3H31 BI4 H61 BI5:1H6 BI5 H62 BI5:2H6 BI5 HB01 BI8:1HB0 BI8 HB02 BI8:2HB0 BI8 HB03 BI8:3HB0 BI8 HBC1 BI8:1HBC BI8 HBC2 BI8:2HBC BI8 HBB1 BI8:1HBB BI8 HBB2 BI8:2HBB BI8 HBA1 BI8:1HBA BI8 HBA2 BI8:2HBA BI8 HAY1 BI8:1HAY BI8 HAY2 BI8:2HAY BI8 H121 BIA:1H12 BIA H122 BIA:2H12 BIA H161 BIA:1H16 BIA H162 BIA:2H16 BIA H211 BIA:1H21 BIA H212 BIA:2H21 BIA H221 BIA:1H22 BIA H222 BIA:2H22 BIA H251 BIA:1H25 BIA H252 BIA:2H25 BIA H271 BIA:1H27 BIA H272 BIA:2H27 BIA H21 BIB:1H2 BIB H22 BIB:2H2 BIB H23 BIB:3H2 BIB H41 BIB:1H4 BIB H42 BIB:2H4 BIB HN11 BIB:1HN1 BIB HN12 BIB:2HN1 BIB H21 BIC:1H2 BIC H22 BIC:2H2 BIC H31 BIC:1H3 BIC H32 BIC:2H3 BIC H41 BIC:1H4 BIC H42 BIC:2H4 BIC H51 BIC:1H5 BIC H52 BIC:2H5 BIC HN31 BIC:1HN3 BIC HN32 BIC:2HN3 BIC H91 BIC:1H9 BIC H92 BIC:2H9 BIC H171 BID:1H17 BID H172 BID:2H17 BID H173 BID:3H17 BID H141 BID:1H14 BID H142 BID:2H14 BID H121 BID:1H12 BID H122 BID:2H12 BID H101 BID:1H10 BID H102 BID:2H10 BID H103 BID:3H10 BID H81 BID:1H8 BID H82 BID:2H8 BID H71 BID:1H7 BID H72 BID:2H7 BID H51 BID:1H5 BID H52 BID:2H5 BID H11A BID:1H1 BID H12 BID:2H1 BID H13 BID:3H1 BID H191 BID:1H19 BID H192 BID:2H19 BID H201 BID:1H20 BID H202 BID:2H20 BID H211 BID:1H21 BID H212 BID:2H21 BID H241 BID:1H24 BID H242 BID:2H24 BID H243 BID:3H24 BID H251 BID:1H25 BID H252 BID:2H25 BID H261 BID:1H26 BID H262 BID:2H26 BID H281 BID:1H28 BID H282 BID:2H28 BID H291 BID:1H29 BID H292 BID:2H29 BID H301 BID:1H30 BID H302 BID:2H30 BID H321 BID:1H32 BID H322 BID:2H32 BID H331 BID:1H33 BID H332 BID:2H33 BID H351 BID:1H35 BID H352 BID:2H35 BID H353 BID:3H35 BID H381 BID:1H38 BID H382 BID:2H38 BID H383 BID:3H38 BID H401 BID:1H40 BID H402 BID:2H40 BID H403 BID:3H40 BID H BIF:1HN BIF H2 BIF:2HN BIF HB2 BIF:1HB BIF HB3 BIF:2HB BIF H271 BIM:1H27 BIM H272 BIM:2H27 BIM H351 BIM:1H35 BIM H352 BIM:2H35 BIM H361 BIM:1H36 BIM H362 BIM:2H36 BIM H371 BIM:1H37 BIM H372 BIM:2H37 BIM H381 BIM:1H38 BIM H382 BIM:2H38 BIM H401 BIM:1H40 BIM H402 BIM:2H40 BIM H403 BIM:3H40 BIM H261 BIM:1H26 BIM H262 BIM:2H26 BIM H281 BIM:1H28 BIM H282 BIM:2H28 BIM H411 BIM:1H41 BIM H412 BIM:2H41 BIM H413 BIM:3H41 BIM H151 BIN:1H15 BIN H152 BIN:2H15 BIN H153 BIN:3H15 BIN H161 BIN:1H16 BIN H162 BIN:2H16 BIN H163 BIN:3H16 BIN H171 BIN:1H17 BIN H172 BIN:2H17 BIN H201 BIN:1H20 BIN H202 BIN:2H20 BIN H203 BIN:3H20 BIN H211 BIN:1H21 BIN H212 BIN:2H21 BIN H213 BIN:3H21 BIN HOB3 BIN:3HOB BIN HOB4 BIN:4HOB BIN HN21 BIO:1HN2 BIO HN22 BIO:2HN2 BIO H111 BIO:1H11 BIO H112 BIO:2H11 BIO H113 BIO:3H11 BIO H31 BIP:1H3 BIP H32 BIP:2H3 BIP H1 BIP:1H BIP H2A BIP:2H BIP H31 BIQ:1H3 BIQ H32 BIQ:2H3 BIQ H121 BIQ:1H12 BIQ H122 BIQ:2H12 BIQ H141 BIQ:1H14 BIQ H142 BIQ:2H14 BIQ H231 BIQ:1H23 BIQ H232 BIQ:2H23 BIQ H241 BIQ:1H24 BIQ H242 BIQ:2H24 BIQ H251 BIQ:1H25 BIQ H252 BIQ:2H25 BIQ H253 BIQ:3H25 BIQ H261 BIQ:1H26 BIQ H262 BIQ:2H26 BIQ H411 BIQ:1H41 BIQ H412 BIQ:2H41 BIQ H31 BIR:1H3 BIR H32 BIR:2H3 BIR H33 BIR:3H3 BIR HN11 BIR:1HN1 BIR HN12 BIR:2HN1 BIR H71 BIR:1H7 BIR H72 BIR:2H7 BIR H261 BIR:1H26 BIR H262 BIR:2H26 BIR H263 BIR:3H26 BIR H91 BIR:1H9 BIR H92 BIR:2H9 BIR HO2B BIS:BHO2 BIS HO1A BIS:AHO1 BIS H5'1 BIS:1H5* BIS H5'2 BIS:2H5* BIS H4' BIS: H4* BIS H3' BIS: H3* BIS HO'3 BIS:3HO* BIS H2' BIS: H2* BIS HO'2 BIS:2HO* BIS H1' BIS: H1* BIS HN61 BIS:1HN6 BIS HN62 BIS:2HN6 BIS H121 BIS:1H12 BIS H122 BIS:2H12 BIS H131 BIS:1H13 BIS H132 BIS:2H13 BIS H141 BIS:1H14 BIS H142 BIS:2H14 BIS H181 BIT:1H18 BIT H182 BIT:2H18 BIT H183 BIT:3H18 BIT H21 BIT:1H2 BIT H22 BIT:2H2 BIT H11 BIT:1H1 BIT H12 BIT:2H1 BIT H21 BIV:1H2 BIV H22 BIV:2H2 BIV H41 BIV:1H4 BIV H42 BIV:2H4 BIV H91 BIV:1H9 BIV H92 BIV:2H9 BIV H111 BIV:1H11 BIV H112 BIV:2H11 BIV H121 BIV:1H12 BIV H122 BIV:2H12 BIV H151 BIV:1H15 BIV H152 BIV:2H15 BIV H161 BIV:1H16 BIV H162 BIV:2H16 BIV H181 BIV:1H18 BIV H182 BIV:2H18 BIV H183 BIV:3H18 BIV H191 BIV:1H19 BIV H192 BIV:2H19 BIV H221 BIV:1H22 BIV H222 BIV:2H22 BIV H231 BIV:1H23 BIV H232 BIV:2H23 BIV H241 BIV:1H24 BIV H242 BIV:2H24 BIV H261 BIV:1H26 BIV H262 BIV:2H26 BIV H263 BIV:3H26 BIV H271 BIV:1H27 BIV H272 BIV:2H27 BIV H273 BIV:3H27 BIV H211 BIV:1H21 BIV H212 BIV:2H21 BIV H281 BIV:1H28 BIV H282 BIV:2H28 BIV H291 BIV:1H29 BIV H292 BIV:2H29 BIV H321 BIV:1H32 BIV H322 BIV:2H32 BIV H323 BIV:3H32 BIV H331 BIV:1H33 BIV H332 BIV:2H33 BIV H333 BIV:3H33 BIV H141 BIZ:1H14 BIZ H142 BIZ:2H14 BIZ H181 BIZ:1H18 BIZ H182 BIZ:2H18 BIZ H183 BIZ:3H18 BIZ H261 BIZ:1H26 BIZ H262 BIZ:2H26 BIZ H263 BIZ:3H26 BIZ HN1' BIZ:*HN1 BIZ H3' BIZ: *H3 BIZ H6' BIZ: *H6 BIZ H7' BIZ: *H7 BIZ HN8' BIZ:*HN8 BIZ H10' BIZ:*H10 BIZ H4'1 BIZ:1H4* BIZ H4'2 BIZ:2H4* BIZ H15' BIZ:*H15 BIZ H8'1 BIZ:1H8* BIZ H8'2 BIZ:2H8* BIZ H8'3 BIZ:3H8* BIZ H19' BIZ:*H19 BIZ HO2' BIZ:*HO2 BIZ H25' BIZ:*H25 BIZ H6'1 BIZ:1H6* BIZ H6'2 BIZ:2H6* BIZ H6'3 BIZ:3H6* BIZ HN7' BIZ:*HN7 BIZ H21 BJH:1H2 BJH H22 BJH:2H2 BJH H41 BJH:1H4 BJH H42 BJH:2H4 BJH H43 BJH:3H4 BJH HOB1 BJH:1HOB BJH HOB2 BJH:2HOB BJH H21 BJI:1H2 BJI H22 BJI:2H2 BJI H41 BJI:1H4 BJI H42 BJI:2H4 BJI H43 BJI:3H4 BJI HOB1 BJI:1HOB BJI HOB2 BJI:2HOB BJI H21 BJP:1H2 BJP H22 BJP:2H2 BJP HOB1 BJP:1HOB BJP HOB2 BJP:2HOB BJP H201 BJP:1H20 BJP H211 BJP:1H21 BJP H221 BJP:1H22 BJP H231 BJP:1H23 BJP H241 BJP:1H24 BJP H251 BJP:1H25 BJP H252 BJP:2H25 BJP H111 BL5:1H11 BL5 H112 BL5:2H11 BL5 H121 BL5:1H12 BL5 H122 BL5:2H12 BL5 H131 BL5:1H13 BL5 H132 BL5:2H13 BL5 H141 BL5:1H14 BL5 H142 BL5:2H14 BL5 H151 BL5:1H15 BL5 H152 BL5:2H15 BL5 H201 BL5:1H20 BL5 H202 BL5:2H20 BL5 H211 BL5:1H21 BL5 H212 BL5:2H21 BL5 H221 BL5:1H22 BL5 H222 BL5:2H22 BL5 H231 BL5:1H23 BL5 H232 BL5:2H23 BL5 H233 BL5:3H23 BL5 H241 BL5:1H24 BL5 H242 BL5:2H24 BL5 H271 BL5:1H27 BL5 H272 BL5:2H27 BL5 H311 BL5:1H31 BL5 H312 BL5:2H31 BL5 H301 BL5:1H30 BL5 H302 BL5:2H30 BL5 H291 BL5:1H29 BL5 H292 BL5:2H29 BL5 H281 BL5:1H28 BL5 H282 BL5:2H28 BL5 H283 BL5:3H28 BL5 H401 BL5:1H40 BL5 H402 BL5:2H40 BL5 H391 BL5:1H39 BL5 H392 BL5:2H39 BL5 H381 BL5:1H38 BL5 H382 BL5:2H38 BL5 H371 BL5:1H37 BL5 H372 BL5:2H37 BL5 H361 BL5:1H36 BL5 H362 BL5:2H36 BL5 HA BLA: H_A BLA HMA1 BLA:1HMA BLA HMA2 BLA:2HMA BLA HMA3 BLA:3HMA BLA HAA1 BLA:1HAA BLA HAA2 BLA:2HAA BLA HBA1 BLA:1HBA BLA HBA2 BLA:2HBA BLA HB BLA: H_B BLA HMB1 BLA:1HMB BLA HMB2 BLA:2HMB BLA HMB3 BLA:3HMB BLA HBB1 BLA:1HBB BLA HBB2 BLA:2HBB BLA HC BLA: H_C BLA HMC1 BLA:1HMC BLA HMC2 BLA:2HMC BLA HMC3 BLA:3HMC BLA HBC1 BLA:1HBC BLA HBC2 BLA:2HBC BLA HMD1 BLA:1HMD BLA HMD2 BLA:2HMD BLA HMD3 BLA:3HMD BLA HAD1 BLA:1HAD BLA HAD2 BLA:2HAD BLA HBD1 BLA:1HBD BLA HBD2 BLA:2HBD BLA H501 BLB:1H50 BLB H502 BLB:2H50 BLB H511 BLB:1H51 BLB H512 BLB:2H51 BLB H521 BLB:1H52 BLB H522 BLB:2H52 BLB H531 BLB:1H53 BLB H532 BLB:2H53 BLB HNS1 BLB:1HNS BLB HNS2 BLB:2HNS BLB HNT1 BLB:1HNT BLB HNT2 BLB:2HNT BLB H611 BLB:1H61 BLB H612 BLB:2H61 BLB HNQ1 BLB:1HNQ BLB HNQ2 BLB:2HNQ BLB H661 BLB:1H66 BLB H662 BLB:2H66 BLB HB2 BLE:1HB BLE HB3 BLE:2HB BLE HD11 BLE:1HD1 BLE HD12 BLE:2HD1 BLE HD13 BLE:3HD1 BLE HD21 BLE:1HD2 BLE HD22 BLE:2HD2 BLE HD23 BLE:3HD2 BLE H BLE:1HN BLE HN2 BLE:2HN BLE H81 BLG:1H8 BLG H82 BLG:2H8 BLG H83 BLG:3H8 BLG HO43 BLG:3HO4 BLG H61 BLG:1H6 BLG H62 BLG:2H6 BLG HG1 BLG:1HG BLG HG2 BLG:2HG BLG HN1 BLG:1HN BLG HN2A BLG:2HN BLG H91 BLG:1H9 BLG H92 BLG:2H9 BLG H111 BLG:1H11 BLG H112 BLG:2H11 BLG H121 BLG:1H12 BLG H122 BLG:2H12 BLG HOS3 BLG:3HOS BLG H11 BLI:1H1 BLI H21 BLI:1H2 BLI H22 BLI:2H2 BLI H41 BLI:1H4 BLI H42 BLI:2H4 BLI H011 BLI:1H01 BLI H101 BLI:1H10 BLI H031 BLI:1H03 BLI H032 BLI:2H03 BLI H061 BLI:1H06 BLI H062 BLI:2H06 BLI H021 BLI:1H02 BLI H022 BLI:2H02 BLI H1'1 BLI:1H1' BLI H1'2 BLI:2H1' BLI H2'1 BLI:1H2' BLI H3'1 BLI:1H3' BLI H3'2 BLI:2H3' BLI H7'1 BLI:1H7' BLI H7'2 BLI:2H7' BLI H4'1 BLI:1H4' BLI H4'2 BLI:2H4' BLI H5'1 BLI:1H5' BLI H5'2 BLI:2H5' BLI HN21 BLI:1HN2 BLI HN22 BLI:2HN2 BLI HO31 BLI:1HO3 BLI H1A1 BLI:1H1* BLI H2A1 BLI:1H2* BLI H3A1 BLI:1H3* BLI H4A1 BLI:1H4* BLI H5A1 BLI:1H5* BLI H131 BLL:1H13 BLL H132 BLL:2H13 BLL H141 BLL:1H14 BLL H142 BLL:2H14 BLL H221 BLL:1H22 BLL H222 BLL:2H22 BLL H231 BLL:1H23 BLL H232 BLL:2H23 BLL H381 BLL:1H38 BLL H382 BLL:2H38 BLL H481 BLL:1H48 BLL H482 BLL:2H48 BLL H501 BLM:1H50 BLM H502 BLM:2H50 BLM H511 BLM:1H51 BLM H512 BLM:2H51 BLM H521 BLM:1H52 BLM H522 BLM:2H52 BLM H551 BLM:1H55 BLM H552 BLM:2H55 BLM H553 BLM:3H55 BLM H541 BLM:1H54 BLM H542 BLM:2H54 BLM H543 BLM:3H54 BLM H611 BLM:1H61 BLM H612 BLM:2H61 BLM HNQ1 BLM:1HNQ BLM HNQ2 BLM:2HNQ BLM H661 BLM:1H66 BLM H662 BLM:2H66 BLM HC21 BLN:1HC2 BLN HC22 BLN:2HC2 BLN HC31 BLN:1HC3 BLN HC32 BLN:2HC3 BLN HC51 BLN:1HC5 BLN HC52 BLN:2HC5 BLN HC61 BLN:1HC6 BLN HC62 BLN:2HC6 BLN HCB1 BLN:1HCB BLN HCB2 BLN:2HCB BLN HD11 BLN:1HD1 BLN HD12 BLN:2HD1 BLN HD13 BLN:3HD1 BLN HD21 BLN:1HD2 BLN HD22 BLN:2HD2 BLN HD23 BLN:3HD2 BLN HB'1 BLN:1HB' BLN HB'2 BLN:2HB' BLN HCD1 BLN:1HCD BLN HCD2 BLN:2HCD BLN H2'C BLN:CH2' BLN H3'C BLN:CH3' BLN H4'C BLN:CH4' BLN H5'C BLN:CH5' BLN H6'C BLN:CH6' BLN HA'C BLN:CHA' BLN H81 BLO:1H8 BLO H82 BLO:2H8 BLO H101 BLO:1H10 BLO H102 BLO:2H10 BLO H111 BLO:1H11 BLO H112 BLO:2H11 BLO H141 BLO:1H14 BLO H142 BLO:2H14 BLO H131 BLO:1H13 BLO H132 BLO:2H13 BLO H133 BLO:3H13 BLO HN91 BLO:1HN9 BLO HN92 BLO:2HN9 BLO H91 BLP:1H9 BLP H92 BLP:2H9 BLP H71 BLP:1H7 BLP H72 BLP:2H7 BLP H11 BLP:1H1 BLP H12A BLP:2H1 BLP H13A BLP:3H1 BLP H51 BLP:1H5 BLP H52 BLP:2H5 BLP HN41 BLS:1HN4 BLS HN42 BLS:2HN4 BLS H1' BLS: H1* BLS H2' BLS: H2* BLS H3' BLS: H3* BLS H4' BLS: H4* BLS H5' BLS: H5* BLS H81 BLS:1H8 BLS H82 BLS:2H8 BLS HN91 BLS:1HN9 BLS HN92 BLS:2HN9 BLS H101 BLS:1H10 BLS H102 BLS:2H10 BLS H111 BLS:1H11 BLS H112 BLS:2H11 BLS H131 BLS:1H13 BLS H132 BLS:2H13 BLS H133 BLS:3H13 BLS H151 BLS:1H15 BLS H152 BLS:2H15 BLS H31 BLT:1H3 BLT H32 BLT:2H3 BLT H61 BLT:1H6 BLT H62 BLT:2H6 BLT H71 BLT:1H7 BLT H72 BLT:2H7 BLT H101 BLT:1H10 BLT H102 BLT:2H10 BLT HHA1 BLU:1HHA BLU HHA2 BLU:2HHA BLU HMA1 BLU:1HMA BLU HMA2 BLU:2HMA BLU HMA3 BLU:3HMA BLU HAA1 BLU:1HAA BLU HAA2 BLU:2HAA BLU HBA1 BLU:1HBA BLU HBA2 BLU:2HBA BLU HHB1 BLU:1HHB BLU HHB2 BLU:2HHB BLU HMB1 BLU:1HMB BLU HMB2 BLU:2HMB BLU HMB3 BLU:3HMB BLU HBB1 BLU:1HBB BLU HBB2 BLU:2HBB BLU HBB3 BLU:3HBB BLU HMC1 BLU:1HMC BLU HMC2 BLU:2HMC BLU HMC3 BLU:3HMC BLU HAC1 BLU:1HAC BLU HAC2 BLU:2HAC BLU HBC1 BLU:1HBC BLU HBC2 BLU:2HBC BLU HBC3 BLU:3HBC BLU HHD1 BLU:1HHD BLU HHD2 BLU:2HHD BLU HMD1 BLU:1HMD BLU HMD2 BLU:2HMD BLU HMD3 BLU:3HMD BLU HAD1 BLU:1HAD BLU HAD2 BLU:2HAD BLU HBD1 BLU:1HBD BLU HBD2 BLU:2HBD BLU HA BLV: H_A BLV HMA1 BLV:1HMA BLV HMA2 BLV:2HMA BLV HMA3 BLV:3HMA BLV HAA1 BLV:1HAA BLV HAA2 BLV:2HAA BLV HBA1 BLV:1HBA BLV HBA2 BLV:2HBA BLV HB BLV: H_B BLV HMB1 BLV:1HMB BLV HMB2 BLV:2HMB BLV HMB3 BLV:3HMB BLV HBB1 BLV:1HBB BLV HBB2 BLV:2HBB BLV HC BLV: H_C BLV HMC1 BLV:1HMC BLV HMC2 BLV:2HMC BLV HMC3 BLV:3HMC BLV HBC1 BLV:1HBC BLV HBC2 BLV:2HBC BLV HMD1 BLV:1HMD BLV HMD2 BLV:2HMD BLV HMD3 BLV:3HMD BLV HAD1 BLV:1HAD BLV HAD2 BLV:2HAD BLV HBD1 BLV:1HBD BLV HBD2 BLV:2HBD BLV HN1 BLY:1HN BLY HN2 BLY:2HN BLY HB1 BLY:1HB BLY HB2 BLY:2HB BLY HG1 BLY:1HG BLY HG2 BLY:2HG BLY HD1 BLY:1HD BLY HD2 BLY:2HD BLY HE1 BLY:1HE BLY HE2 BLY:2HE BLY HZ1 BLY:1HZ BLY HZ2 BLY:2HZ BLY HZ3 BLY:3HZ BLY H11 BLZ:1H1 BLZ H12 BLZ:2H1 BLZ H13A BLZ:3H1 BLZ H141 BLZ:1H14 BLZ H142 BLZ:2H14 BLZ H143 BLZ:3H14 BLZ H261 BLZ:1H26 BLZ H262 BLZ:2H26 BLZ H311 BLZ:1H31 BLZ H312 BLZ:2H31 BLZ H313 BLZ:3H31 BLZ H21 BM1:1H2 BM1 H22 BM1:2H2 BM1 H31 BM1:1H3 BM1 H32 BM1:2H3 BM1 H81 BM1:1H8 BM1 H91 BM1:1H9 BM1 H101 BM1:1H10 BM1 H111 BM1:1H11 BM1 H141 BM1:1H14 BM1 HA1 BM1:1HA BM1 HA2 BM1:2HA BM1 HA3 BM1:3HA BM1 H161 BM1:1H16 BM1 H171 BM1:1H17 BM1 H181 BM1:1H18 BM1 H161 BM2:1H16 BM2 H162 BM2:2H16 BM2 H211 BM2:1H21 BM2 H212 BM2:2H21 BM2 H221 BM2:1H22 BM2 H222 BM2:2H22 BM2 H231 BM2:1H23 BM2 H232 BM2:2H23 BM2 H251 BM2:1H25 BM2 H252 BM2:2H25 BM2 H291 BM2:1H29 BM2 H292 BM2:2H29 BM2 H301 BM2:1H30 BM2 H302 BM2:2H30 BM2 H311 BM2:1H31 BM2 H312 BM2:2H31 BM2 HN41 BM2:1HN4 BM2 HN42 BM2:2HN4 BM2 H8C1 BM3:1H8C BM3 H8C2 BM3:2H8C BM3 H8C3 BM3:3H8C BM3 H6C1 BM3:1H6C BM3 H6C2 BM3:2H6C BM3 H21 BM5:1H2 BM5 H22 BM5:2H2 BM5 H81 BM5:1H8 BM5 H91 BM5:1H9 BM5 H101 BM5:1H10 BM5 H111 BM5:1H11 BM5 H141 BM5:1H14 BM5 H151 BM5:1H15 BM5 H161 BM5:1H16 BM5 H171 BM5:1H17 BM5 H181 BM5:1H18 BM5 HD1 BM5:1HD BM5 HD2 BM5:2HD BM5 HD3 BM5:3HD BM5 H161 BM6:1H16 BM6 H162 BM6:2H16 BM6 H171 BM6:1H17 BM6 H172 BM6:2H17 BM6 H191 BM6:1H19 BM6 H192 BM6:2H19 BM6 H201 BM6:1H20 BM6 H202 BM6:2H20 BM6 H211 BM6:1H21 BM6 H212 BM6:2H21 BM6 H213 BM6:3H21 BM6 H221 BM6:1H22 BM6 H222 BM6:2H22 BM6 H223 BM6:3H22 BM6 H231 BM6:1H23 BM6 H232 BM6:2H23 BM6 H233 BM6:3H23 BM6 H241 BM6:1H24 BM6 H242 BM6:2H24 BM6 H243 BM6:3H24 BM6 H161 BM9:1H16 BM9 H162 BM9:2H16 BM9 H211 BM9:1H21 BM9 H212 BM9:2H21 BM9 H221 BM9:1H22 BM9 H222 BM9:2H22 BM9 H231 BM9:1H23 BM9 H232 BM9:2H23 BM9 H251 BM9:1H25 BM9 H252 BM9:2H25 BM9 H301 BM9:1H30 BM9 H302 BM9:2H30 BM9 H321 BM9:1H32 BM9 H322 BM9:2H32 BM9 H331 BM9:1H33 BM9 H332 BM9:2H33 BM9 H341 BM9:1H34 BM9 H342 BM9:2H34 BM9 HN61 BM9:1HN6 BM9 HN62 BM9:2HN6 BM9 H61 BMA:1H6 BMA H62 BMA:2H6 BMA H33 BMD:3H3 BMD H32 BMD:2H3 BMD H31 BMD:1H3 BMD H22 BMD:2H2 BMD H21 BMD:1H2 BMD H12 BMD:2H1 BMD H11 BMD:1H1 BMD HN1 BMD:1HN BMD HN2 BMD:2HN BMD H11 BME:1H1 BME H12 BME:2H1 BME H21 BME:1H2 BME H22 BME:2H2 BME H621 BMH:1H62 BMH H622 BMH:2H62 BMH H623 BMH:3H62 BMH H111 BMH:1H11 BMH H112 BMH:2H11 BMH H113 BMH:3H11 BMH H231 BMH:1H23 BMH H232 BMH:2H23 BMH H271 BMH:1H27 BMH H272 BMH:2H27 BMH H41 BMI:1H4 BMI H42 BMI:2H4 BMI H211 BMI:1H21 BMI H212 BMI:2H21 BMI H213 BMI:3H21 BMI H11 BMM:1H1 BMM H12 BMM:2H1 BMM H13 BMM:3H1 BMM H171 BMO:1H17 BMO H191 BMO:1H19 BMO H192 BMO:2H19 BMO H361 BMO:1H36 BMO H362 BMO:2H36 BMO H221 BMO:1H22 BMO H222 BMO:2H22 BMO H11 BMO:1H1 BMO H12A BMO:2H1 BMO H21 BMO:1H2 BMO H22 BMO:2H2 BMO H31 BMO:1H3 BMO H32A BMO:2H3 BMO HOP2 BMP:2HOP BMP HOP3 BMP:3HOP BMP H5' BMP:1H5* BMP H5'' BMP:2H5* BMP H4' BMP: H4* BMP H3' BMP: H3* BMP HO3' BMP:*HO3 BMP H2' BMP: H2* BMP HO2' BMP:*HO2 BMP H1' BMP: H1* BMP H51 BMP:1H5 BMP HOP2 BMQ:2HOP BMQ HOP3 BMQ:3HOP BMQ H5'1 BMQ:1H5* BMQ H5'2 BMQ:2H5* BMQ H4' BMQ: H4* BMQ H3' BMQ: H3* BMQ HO3' BMQ:*HO3 BMQ H2' BMQ: H2* BMQ HO2' BMQ:*HO2 BMQ H1' BMQ: H1* BMQ H51 BMQ:1H5 BMQ H52 BMQ:2H5 BMQ H161 BMS:1H16 BMS H162 BMS:2H16 BMS H171 BMS:1H17 BMS H172 BMS:2H17 BMS H191 BMS:1H19 BMS H192 BMS:2H19 BMS H193 BMS:3H19 BMS H201 BMS:1H20 BMS H202 BMS:2H20 BMS H203 BMS:3H20 BMS H BMT: HN BMT HN1 BMT:1HCN BMT HN2 BMT:2HCN BMT HN3 BMT:3HCN BMT HD11 BMT:1HD1 BMT HD12 BMT:2HD1 BMT HD13 BMT:3HD1 BMT HD22 BMT:1HD2 BMT HD23 BMT:2HD2 BMT HH1 BMT:1HH BMT HH2 BMT:2HH BMT HH3 BMT:3HH BMT H151 BMU:1H15 BMU H152 BMU:2H15 BMU H153 BMU:3H15 BMU H171 BMU:1H17 BMU H172 BMU:2H17 BMU H173 BMU:3H17 BMU H181 BMU:1H18 BMU H182 BMU:2H18 BMU H183 BMU:3H18 BMU H191 BMU:1H19 BMU H192 BMU:2H19 BMU H193 BMU:3H19 BMU HAR1 BMV:1HAR BMV HAR2 BMV:2HAR BMV HAU1 BMV:1HAU BMV HAU2 BMV:2HAU BMV HAS1 BMV:1HAS BMV HAS2 BMV:2HAS BMV HAT1 BMV:1HAT BMV HAT2 BMV:2HAT BMV H281 BMY:1H28 BMY H282 BMY:2H28 BMY H311 BMY:1H31 BMY H312 BMY:2H31 BMY HO08 BMY:8HO0 BMY H2'1 BMY:1H2' BMY H2'2 BMY:2H2' BMY H7'1 BMY:1H7' BMY H7'2 BMY:2H7' BMY H7'3 BMY:3H7' BMY H8'1 BMY:1H8' BMY H8'2 BMY:2H8' BMY HO'9 BMY:9HO' BMY HO'1 BMY:1HO" BMY H2A1 BMY:1H2" BMY H2A2 BMY:2H2" BMY H2'3 BMY:3H2" BMY H3' BMY: H3" BMY H4' BMY: H4" BMY H5B BMY: H5" BMY H6' BMY: H6" BMY H7' BMY: H7" BMY H9' BMY: H9" BMY HOA1 BMY:1HOA BMY HOA2 BMY:2HOA BMY H3A1 BMY:1H3A BMY H3A2 BMY:2H3A BMY HH11 BMZ:1HH1 BMZ HH12 BMZ:2HH1 BMZ HH21 BMZ:1HH2 BMZ HH22 BMZ:2HH2 BMZ H151 BN2:1H15 BN2 H152 BN2:2H15 BN2 H161 BN2:1H16 BN2 H162 BN2:2H16 BN2 H171 BN2:1H17 BN2 H172 BN2:2H17 BN2 H181 BN2:1H18 BN2 H182 BN2:2H18 BN2 H191 BN2:1H19 BN2 H192 BN2:2H19 BN2 H201 BN2:1H20 BN2 H202 BN2:2H20 BN2 H151 BN3:1H15 BN3 H152 BN3:2H15 BN3 H161 BN3:1H16 BN3 H162 BN3:2H16 BN3 H171 BN3:1H17 BN3 H172 BN3:2H17 BN3 H151 BN4:1H15 BN4 H152 BN4:2H15 BN4 H161 BN4:1H16 BN4 H162 BN4:2H16 BN4 H171 BN4:1H17 BN4 H172 BN4:2H17 BN4 H191 BN4:1H19 BN4 H192 BN4:2H19 BN4 H193 BN4:3H19 BN4 H201 BN4:1H20 BN4 H202 BN4:2H20 BN4 H203 BN4:3H20 BN4 H151 BN5:1H15 BN5 H152 BN5:2H15 BN5 H153 BN5:3H15 BN5 H161 BN5:1H16 BN5 H162 BN5:2H16 BN5 H171 BN5:1H17 BN5 H172 BN5:2H17 BN5 H181 BN5:1H18 BN5 H182 BN5:2H18 BN5 H191 BN5:1H19 BN5 H192 BN5:2H19 BN5 H41A BN6:1H4 BN6 H42 BN6:2H4 BN6 H61 BN6:1H6 BN6 H62 BN6:2H6 BN6 H63 BN6:3H6 BN6 H71 BN6:1H7 BN6 H72 BN6:2H7 BN6 H73 BN6:3H7 BN6 H111 BN6:1H11 BN6 H112 BN6:2H11 BN6 H121 BN6:1H12 BN6 H122 BN6:2H12 BN6 H131 BN6:1H13 BN6 H132 BN6:2H13 BN6 H141 BN6:1H14 BN6 H142 BN6:2H14 BN6 H151 BN6:1H15 BN6 H152 BN6:2H15 BN6 H221 BN6:1H22 BN6 H222 BN6:2H22 BN6 H241 BN6:1H24 BN6 H242 BN6:2H24 BN6 H251 BN6:1H25 BN6 H252 BN6:2H25 BN6 H281 BN6:1H28 BN6 H282 BN6:2H28 BN6 H301 BN6:1H30 BN6 H302 BN6:2H30 BN6 H311 BN6:1H31 BN6 H312 BN6:2H31 BN6 H361 BN6:1H36 BN6 H362 BN6:2H36 BN6 HB11 BNA:1HB1 BNA HB12 BNA:2HB1 BNA HB21 BNA:1HB2 BNA HB22 BNA:2HB2 BNA H1C1 BNC:1H1C BNC H1C2 BNC:2H1C BNC H2C1 BNC:1H2C BNC H2C2 BNC:2H2C BNC H4C1 BNC:1H4C BNC H4C2 BNC:2H4C BNC H6C1 BNC:1H6C BNC H6C2 BNC:2H6C BNC H111 BNC:1H11 BNC H112 BNC:12H1 BNC H151 BNC:1H15 BNC H152 BNC:2H15 BNC H161 BNC:1H16 BNC H162 BNC:2H16 BNC H181 BNC:1H18 BNC H182 BNC:2H18 BNC H183 BNC:3H18 BNC H191 BNC:1H19 BNC H192 BNC:2H19 BNC H193 BNC:3H19 BNC H211 BNC:1H21 BNC H212 BNC:2H21 BNC H213 BNC:3H21 BNC H221 BNC:1H22 BNC H222 BNC:2H22 BNC H231 BNC:1H23 BNC H232 BNC:2H23 BNC H233 BNC:3H23 BNC HY11 BND:1HY1 BND HY12 BND:2HY1 BND HY13 BND:3HY1 BND HX31 BND:1HX3 BND HX32 BND:2HX3 BND H111 BND:1H11 BND H112 BND:2H11 BND H113 BND:3H11 BND HX91 BND:1HX9 BND HX92 BND:2HX9 BND H41 BNE:1H4 BNE H42 BNE:2H4 BNE H51 BNE:1H5 BNE H52 BNE:2H5 BNE H61 BNE:1H6 BNE H71 BNE:1H7 BNE H101 BNE:1H10 BNE H102 BNE:2H10 BNE H111 BNE:1H11 BNE H112 BNE:2H11 BNE H113 BNE:3H11 BNE H131 BNE:1H13 BNE H141 BNE:1H14 BNE H142 BNE:2H14 BNE H151 BNE:1H15 BNE H152 BNE:2H15 BNE H153 BNE:3H15 BNE H161 BNE:1H16 BNE H162 BNE:2H16 BNE H181 BNE:1H18 BNE H211 BNE:1H21 BNE H221 BNE:1H22 BNE H251 BNE:1H25 BNE H291 BNE:1H29 BNE H292 BNE:2H29 BNE H293 BNE:3H29 BNE H301 BNE:1H30 BNE H302 BNE:2H30 BNE H321 BNE:1H32 BNE H331 BNE:1H33 BNE H341 BNE:1H34 BNE H342 BNE:2H34 BNE H343 BNE:3H34 BNE H121 BNF:1H12 BNF H122 BNF:2H12 BNF H61 BNG:1H6 BNG H62 BNG:2H6 BNG H1'1 BNG:1H1' BNG H1'2 BNG:2H1' BNG H2'1 BNG:1H2' BNG H2'2 BNG:2H2' BNG H3'1 BNG:1H3' BNG H3'2 BNG:2H3' BNG H4'1 BNG:1H4' BNG H4'2 BNG:2H4' BNG H5'1 BNG:1H5' BNG H5'2 BNG:2H5' BNG H6'1 BNG:1H6' BNG H6'2 BNG:2H6' BNG H7'1 BNG:1H7' BNG H7'2 BNG:2H7' BNG H8'1 BNG:1H8' BNG H8'2 BNG:2H8' BNG H9'1 BNG:1H9' BNG H9'2 BNG:2H9' BNG H9'3 BNG:3H9' BNG H41A BNH:1H4 BNH H42 BNH:2H4 BNH H61 BNH:1H6 BNH H62 BNH:2H6 BNH H63 BNH:3H6 BNH H71 BNH:1H7 BNH H72 BNH:2H7 BNH H73 BNH:3H7 BNH H111 BNH:1H11 BNH H112 BNH:2H11 BNH H121 BNH:1H12 BNH H122 BNH:2H12 BNH H131 BNH:1H13 BNH H132 BNH:2H13 BNH H141 BNH:1H14 BNH H142 BNH:2H14 BNH H151 BNH:1H15 BNH H152 BNH:2H15 BNH H221 BNH:1H22 BNH H222 BNH:2H22 BNH H241 BNH:1H24 BNH H242 BNH:2H24 BNH H251 BNH:1H25 BNH H252 BNH:2H25 BNH H281 BNH:1H28 BNH H282 BNH:2H28 BNH H301 BNH:1H30 BNH H302 BNH:2H30 BNH H311 BNH:1H31 BNH H312 BNH:2H31 BNH H371 BNH:1H37 BNH H372 BNH:2H37 BNH H101 BNI:1H10 BNI H102 BNI:2H10 BNI H91 BNI:1H9 BNI H92 BNI:2H9 BNI H81 BNI:1H8 BNI H82 BNI:2H8 BNI H71 BNI:1H7 BNI H72 BNI:2H7 BNI H21A BNI:1H2 BNI H61 BNI:1H6 BNI H62 BNI:2H6 BNI HN11 BNI:1HN1 BNI HN21 BNI:1HN2 BNI H171 BNI:1H17 BNI H171 BNL:1H17 BNL H172 BNL:2H17 BNL H151 BNL:1H15 BNL H152 BNL:2H15 BNL H141 BNL:1H14 BNL H142 BNL:2H14 BNL H131 BNL:1H13 BNL H132 BNL:2H13 BNL H121 BNL:1H12 BNL H122 BNL:2H12 BNL H11 BNL:1H1 BNL H12 BNL:2H1 BNL H31 BNL:1H3 BNL H32 BNL:2H3 BNL H41 BNL:1H4 BNL H42 BNL:2H4 BNL H51 BNL:1H5 BNL H52 BNL:2H5 BNL H61 BNL:1H6 BNL H62 BNL:2H6 BNL HH11 BNN:1HH1 BNN HH12 BNN:2HH1 BNN HH13 BNN:3HH1 BNN H161 BNN:1H16 BNN H162 BNN:2H16 BNN H71 BNN:1H7 BNN H72 BNN:2H7 BNN HN1 BNO:1HN BNO HN2 BNO:2HN BNO HB1 BNO:1HB BNO HB2 BNO:2HB BNO HG1 BNO:1HG BNO HG2 BNO:2HG BNO HD1 BNO:1HD BNO HD2 BNO:2HD BNO HE1 BNO:1HE BNO HE2 BNO:2HE BNO HE3 BNO:3HE BNO H81 BNP:1H8 BNP H82 BNP:2H8 BNP H91 BNP:1H9 BNP H92 BNP:2H9 BNP H101 BNP:1H10 BNP H102 BNP:2H10 BNP H111 BNP:1H11 BNP H112 BNP:2H11 BNP H201 BNP:1H20 BNP H202 BNP:2H20 BNP H211 BNP:1H21 BNP H212 BNP:2H21 BNP H221 BNP:1H22 BNP H222 BNP:2H22 BNP H231 BNP:1H23 BNP H232 BNP:2H23 BNP H111 BNR:1H11 BNR H112 BNR:2H11 BNR H141 BNR:1H14 BNR H142 BNR:2H14 BNR H143 BNR:3H14 BNR H151 BNR:1H15 BNR H152 BNR:2H15 BNR H211 BNR:1H21 BNR H212 BNR:2H21 BNR H213 BNR:3H21 BNR H1' BNR: H1* BNR H2'1 BNR:1H2* BNR H2'2 BNR:2H2* BNR H3' BNR: H3* BNR HO3' BNR:*HO3 BNR H4' BNR: H4* BNR HN'1 BNR:1HN* BNR HN'2 BNR:2HN* BNR H5' BNR: H5* BNR H6'1 BNR:1H6* BNR H6'2 BNR:2H6* BNR H6'3 BNR:3H6* BNR H7'1 BNR:1H7* BNR H7'2 BNR:2H7* BNR H1B BNR:'H1 BNR H2' BNR:'H2 BNR H3B BNR:'H3 BNR HO8' BNR:'HO8 BNR H10' BNR:'H10 BNR HL'1 BNR:1HL' BNR HL'2 BNR:2HL' BNR H12' BNR:'H12 BNR HK'1 BNR:1HK' BNR HK'2 BNR:2HK' BNR HK'3 BNR:3HK' BNR HJ'1 BNR:1HJ' BNR HJ'2 BNR:2HJ' BNR H17' BNR:'H17 BNR HI'1 BNR:1HI' BNR HI'2 BNR:2HI' BNR HI'3 BNR:3HI' BNR H1D BNR:'H1* BNR H2B BNR:1H2' BNR H2D BNR:2H2' BNR H3D BNR:'H3* BNR HO3A BNR:'HO3 BNR H4D BNR:'H4* BNR HNB BNR:1HN' BNR HND BNR:2HN' BNR H5D BNR:'H5* BNR H6B BNR:1H6' BNR H6D BNR:2H6' BNR H6E BNR:3H6' BNR H7B BNR:1H7' BNR H7D BNR:2H7' BNR H9A' BNR:'H9A BNR H9B' BNR:'H9B BNR HAA1 BNT:1HAA BNT HAA2 BNT:2HAA BNT HAA3 BNT:3HAA BNT HAC1 BNT:1HAC BNT HAC2 BNT:2HAC BNT HAC3 BNT:3HAC BNT HAM1 BNT:1HAM BNT HAM2 BNT:2HAM BNT HAM3 BNT:3HAM BNT HN11 BO1:1HN1 BO1 HN12 BO1:2HN1 BO1 H121 BO1:1H12 BO1 H122 BO1:2H12 BO1 H111 BO2:1H11 BO2 H112 BO2:2H11 BO2 H221 BO2:1H22 BO2 H222 BO2:2H22 BO2 H241 BO2:1H24 BO2 H242 BO2:2H24 BO2 H243 BO2:3H24 BO2 H251 BO2:1H25 BO2 H252 BO2:2H25 BO2 H253 BO2:3H25 BO2 H411 BO9:1H41 BO9 H412 BO9:2H41 BO9 H413 BO9:3H41 BO9 H401 BO9:1H40 BO9 H402 BO9:2H40 BO9 H403 BO9:3H40 BO9 H391 BO9:1H39 BO9 H392 BO9:2H39 BO9 H393 BO9:3H39 BO9 H291 BO9:1H29 BO9 H292 BO9:2H29 BO9 H281 BO9:1H28 BO9 H282 BO9:2H28 BO9 H51 BO9:1H5 BO9 H52 BO9:2H5 BO9 H53 BO9:3H5 BO9 H101 BO9:1H10 BO9 H102 BO9:2H10 BO9 H111 BO9:1H11 BO9 H112 BO9:2H11 BO9 H121 BO9:1H12 BO9 H122 BO9:2H12 BO9 H131 BO9:1H13 BO9 H132 BO9:2H13 BO9 H181 BO9:1H18 BO9 H182 BO9:2H18 BO9 H11 BOC:1H1 BOC H12 BOC:2H1 BOC H13 BOC:3H1 BOC H21 BOC:1H2 BOC H22 BOC:2H2 BOC H23 BOC:3H2 BOC H31 BOC:1H3 BOC H32 BOC:2H3 BOC H33 BOC:3H3 BOC HOP2 BOE:2HOP BOE H5' BOE:1H5* BOE H5'' BOE:2H5* BOE H4' BOE: H4* BOE H1' BOE: H1* BOE H71 BOE:1H5M BOE H72 BOE:2H5M BOE H73 BOE:3H5M BOE H2' BOE: H2* BOE HB'1 BOE:1HB' BOE HB'2 BOE:2HB' BOE HC'1 BOE:1HC' BOE HC'2 BOE:2HC' BOE HE'1 BOE:1HE' BOE HE'2 BOE:2HE' BOE H3' BOE: H3* BOE HO3' BOE:H3T BOE HOP3 BOE:3HOP BOE H1'1 BOG:1H1' BOG H1'2 BOG:2H1' BOG H2'1 BOG:1H2' BOG H2'2 BOG:2H2' BOG H3'1 BOG:1H3' BOG H3'2 BOG:2H3' BOG H4'1 BOG:1H4' BOG H4'2 BOG:2H4' BOG H5'1 BOG:1H5' BOG H5'2 BOG:2H5' BOG H6'1 BOG:1H6' BOG H6'2 BOG:2H6' BOG H7'1 BOG:1H7' BOG H7'2 BOG:2H7' BOG H8'1 BOG:1H8' BOG H8'2 BOG:2H8' BOG H8'3 BOG:3H8' BOG H21 BOM:1H2 BOM H22 BOM:2H2 BOM H41 BOM:1H4 BOM H42 BOM:2H4 BOM H71 BOM:1H7 BOM H72 BOM:2H7 BOM H101 BOM:1H10 BOM H102 BOM:2H10 BOM H131 BOM:1H13 BOM H132 BOM:2H13 BOM H161 BOM:1H16 BOM H162 BOM:2H16 BOM H191 BOM:1H19 BOM H192 BOM:2H19 BOM H221 BOM:1H22 BOM H222 BOM:2H22 BOM H251 BOM:1H25 BOM H252 BOM:2H25 BOM H281 BOM:1H28 BOM H311 BOM:1H31 BOM H331 BOM:1H33 BOM H351 BOM:1H35 BOM H371 BOM:1H37 BOM H372 BOM:2H37 BOM H391 BOM:1H39 BOM H392 BOM:2H39 BOM H421 BOM:1H42 BOM H422 BOM:2H42 BOM H423 BOM:3H42 BOM H71 BOP:1H7 BOP H72 BOP:2H7 BOP H73 BOP:3H7 BOP HN1 BOR:1HN BOR HN2 BOR:2HN BOR HB1 BOR:1HB BOR HB2 BOR:2HB BOR HG1 BOR:1HG BOR HG2 BOR:2HG BOR HD1 BOR:1HD BOR HD2 BOR:2HD BOR HH21 BOR:1HH2 BOR HH22 BOR:2HH2 BOR HN11 BOS:1HN1 BOS HN12 BOS:2HN1 BOS HN11 BOZ:1HN1 BOZ HN12 BOZ:2HN1 BOZ HN21 BOZ:1HN2 BOZ HN22 BOZ:2HN2 BOZ H1'1 BOZ:1H1' BOZ H1'2 BOZ:2H1' BOZ H2'1 BOZ:1H2' BOZ H2'2 BOZ:2H2' BOZ HN4' BOZ:'HN4 BOZ H101 BP:1H10 BP H102 BP:2H10 BP HC41 BP2:1HC4 BP2 HC42 BP2:2HC4 BP2 HC61 BP2:1HC6 BP2 HC62 BP2:2HC6 BP2 HC71 BP2:1HC7 BP2 HC72 BP2:2HC7 BP2 HC91 BP2:1HC9 BP2 HC92 BP2:2HC9 BP2 HC93 BP2:3HC9 BP2 H101 BP2:1H10 BP2 H102 BP2:2H10 BP2 H103 BP2:3H10 BP2 H111 BP2:1H11 BP2 H112 BP2:2H11 BP2 H113 BP2:3H11 BP2 HA1 BP4:1HA BP4 HA2 BP4:2HA BP4 H121 BP5:1H12 BP5 H122 BP5:2H12 BP5 HN1 BP5:1HN BP5 HN2 BP5:2HN BP5 H101 BPA:1H10 BPA H102 BPA:2H10 BPA HMA1 BPB:1HMA BPB HMA2 BPB:2HMA BPB HMA3 BPB:3HMA BPB HAA1 BPB:1HAA BPB HAA2 BPB:2HAA BPB HBA1 BPB:1HBA BPB HBA2 BPB:2HBA BPB HMB1 BPB:1HMB BPB HMB2 BPB:2HMB BPB HMB3 BPB:3HMB BPB HBB1 BPB:1HBB BPB HBB2 BPB:2HBB BPB HBB3 BPB:3HBB BPB HMC1 BPB:1HMC BPB HMC2 BPB:2HMC BPB HMC3 BPB:3HMC BPB HAC1 BPB:1HAC BPB HAC2 BPB:2HAC BPB HBC1 BPB:1HBC BPB HBC2 BPB:2HBC BPB HBC3 BPB:3HBC BPB HMD1 BPB:1HMD BPB HMD2 BPB:2HMD BPB HMD3 BPB:3HMD BPB HED1 BPB:1HED BPB HED2 BPB:2HED BPB HED3 BPB:3HED BPB H11 BPB:1H1 BPB H12 BPB:2H1 BPB H41 BPB:1H4 BPB H42 BPB:2H4 BPB H43 BPB:3H4 BPB H51 BPB:1H5 BPB H52 BPB:2H5 BPB H61 BPB:1H6 BPB H62 BPB:2H6 BPB H71 BPB:1H7 BPB H72 BPB:2H7 BPB H91 BPB:1H9 BPB H92 BPB:2H9 BPB H93 BPB:3H9 BPB H101 BPB:1H10 BPB H102 BPB:2H10 BPB H111 BPB:1H11 BPB H112 BPB:2H11 BPB H121 BPB:1H12 BPB H122 BPB:2H12 BPB H141 BPB:1H14 BPB H142 BPB:2H14 BPB H143 BPB:3H14 BPB H151 BPB:1H15 BPB H152 BPB:2H15 BPB H161 BPB:1H16 BPB H162 BPB:2H16 BPB H171 BPB:1H17 BPB H172 BPB:2H17 BPB H191 BPB:1H19 BPB H192 BPB:2H19 BPB H193 BPB:3H19 BPB H201 BPB:1H20 BPB H202 BPB:2H20 BPB H203 BPB:3H20 BPB H4'1 BPC:1H4' BPC H4'2 BPC:2H4' BPC HN1 BPE:1HN BPE HN2 BPE:2HN BPE HB1 BPE:1HB BPE HB2 BPE:2HB BPE H051 BPE:1H05 BPE H052 BPE:2H05 BPE H1 BPE:1H BPE H2 BPE:2H BPE H081 BPE:1H08 BPE H082 BPE:2H08 BPE H091 BPE:1H09 BPE H092 BPE:2H09 BPE H101 BPE:1H10 BPE H102 BPE:2H10 BPE H91 BPF:1H9 BPF H92 BPF:2H9 BPF H93 BPF:3H9 BPF HN11 BPF:1HN1 BPF HN12 BPF:2HN1 BPF H8'1 BPF:1H8' BPF H8'2 BPF:2H8' BPF H9'1 BPF:1H9' BPF H9'2 BPF:2H9' BPF H9'3 BPF:3H9' BPF H3'1 BPG:1H3* BPG H3'2 BPG:2H3* BPG H3' BPG: H3* BPG H2'1 BPG:1H2* BPG H2'2 BPG:2H2* BPG H121 BPG:1H12 BPG H122 BPG:2H12 BPG H1'1 BPG:1H1* BPG H1'2 BPG:2H1* BPG HN21 BPG:1HN2 BPG H041 BPG:1H04 BPG H051 BPG:1H05 BPG H061 BPG:1H06 BPG H021 BPG:1H02 BPG H031 BPG:1H03 BPG HMA1 BPH:1HMA BPH HMA2 BPH:2HMA BPH HMA3 BPH:3HMA BPH HAA1 BPH:1HAA BPH HAA2 BPH:2HAA BPH HBA1 BPH:1HBA BPH HBA2 BPH:2HBA BPH HMB1 BPH:1HMB BPH HMB2 BPH:2HMB BPH HMB3 BPH:3HMB BPH HBB1 BPH:1HBB BPH HBB2 BPH:2HBB BPH HBB3 BPH:3HBB BPH HMC1 BPH:1HMC BPH HMC2 BPH:2HMC BPH HMC3 BPH:3HMC BPH HAC1 BPH:1HAC BPH HAC2 BPH:2HAC BPH HBC1 BPH:1HBC BPH HBC2 BPH:2HBC BPH HBC3 BPH:3HBC BPH HMD1 BPH:1HMD BPH HMD2 BPH:2HMD BPH HMD3 BPH:3HMD BPH HED1 BPH:1HED BPH HED2 BPH:2HED BPH HED3 BPH:3HED BPH H11 BPH:1H1 BPH H12 BPH:2H1 BPH H41 BPH:1H4 BPH H42 BPH:2H4 BPH H43 BPH:3H4 BPH H51 BPH:1H5 BPH H52 BPH:2H5 BPH H61 BPH:1H6 BPH H62 BPH:2H6 BPH H71 BPH:1H7 BPH H72 BPH:2H7 BPH H91 BPH:1H9 BPH H92 BPH:2H9 BPH H93 BPH:3H9 BPH H101 BPH:1H10 BPH H102 BPH:2H10 BPH H111 BPH:1H11 BPH H112 BPH:2H11 BPH H121 BPH:1H12 BPH H122 BPH:2H12 BPH H141 BPH:1H14 BPH H142 BPH:2H14 BPH H143 BPH:3H14 BPH H151 BPH:1H15 BPH H152 BPH:2H15 BPH H161 BPH:1H16 BPH H162 BPH:2H16 BPH H171 BPH:1H17 BPH H172 BPH:2H17 BPH H191 BPH:1H19 BPH H192 BPH:2H19 BPH H193 BPH:3H19 BPH H201 BPH:1H20 BPH H202 BPH:2H20 BPH H203 BPH:3H20 BPH H11A BPI:1H1 BPI H12A BPI:2H1 BPI HO2 BPI:2HO BPI HO3 BPI:3HO BPI HO4 BPI:4HO BPI H11A BPJ:1H1 BPJ H12A BPJ:2H1 BPJ HO2 BPJ:2HO BPJ HO3 BPJ:3HO BPJ HO4 BPJ:4HO BPJ HC01 BPM:1HC0 BPM HC02 BPM:2HC0 BPM HOA3 BPM:3HOA BPM HOA4 BPM:4HOA BPM HOB3 BPM:3HOB BPM HOB4 BPM:4HOB BPM H71 BPN:1H7 BPN H72 BPN:2H7 BPN HN11 BPO:1HN1 BPO HN12 BPO:2HN1 BPO H171 BPO:1H17 BPO H172 BPO:2H17 BPO H161 BPO:1H16 BPO H162 BPO:2H16 BPO H201 BPO:1H20 BPO H202 BPO:2H20 BPO H211 BPO:1H21 BPO H212 BPO:2H21 BPO H141 BPP:1H14 BPP H142 BPP:2H14 BPP H151 BPP:1H15 BPP H152 BPP:2H15 BPP H201 BPP:1H20 BPP H202 BPP:2H20 BPP H211 BPP:1H21 BPP H212 BPP:2H21 BPP H231 BPP:1H23 BPP H232 BPP:2H23 BPP H241 BPP:1H24 BPP H242 BPP:2H24 BPP H331 BPP:1H33 BPP H332 BPP:2H33 BPP HB1 BPR:1HB BPR HB2 BPR:2HB BPR HG1 BPR:1HG BPR HG2 BPR:2HG BPR HD1 BPR:1HD BPR HD2 BPR:2HD BPR H11 BPR:1H1 BPR H12 BPR:2H1 BPR H31 BPR:1H3 BPR H32 BPR:2H3 BPR H41 BPR:1H4 BPR H42 BPR:2H4 BPR HN11 BPT:1HN1 BPT HN12 BPT:2HN1 BPT HC11 BPT:1HC1 BPT HC12 BPT:2HC1 BPT HC21 BPT:1HC2 BPT HC22 BPT:2HC2 BPT HC31 BPT:1HC3 BPT HC32 BPT:2HC3 BPT HC41 BPT:1HC4 BPT HC42 BPT:2HC4 BPT HN21 BPT:1HN2 BPT HN22 BPT:2HN2 BPT HN31 BPT:1HN3 BPT HN32 BPT:2HN3 BPT HN33 BPT:3HN3 BPT HN41 BPT:1HN4 BPT HN42 BPT:2HN4 BPT HN43 BPT:3HN4 BPT HN51 BPT:1HN5 BPT HN52 BPT:2HN5 BPT HN53 BPT:3HN5 BPT HN61 BPT:1HN6 BPT HN62 BPT:2HN6 BPT HN63 BPT:3HN6 BPT HA21 BR3:1HA2 BR3 HA22 BR3:2HA2 BR3 HZ31 BR3:1HZ3 BR3 HZ32 BR3:2HZ3 BR3 HE31 BR3:1HE3 BR3 HE32 BR3:2HE3 BR3 HH21 BR3:1HH2 BR3 HH22 BR3:2HH2 BR3 HH23 BR3:3HH2 BR3 H91 BR4:1H9 BR4 H92 BR4:2H9 BR4 H81 BR4:1H8 BR4 H82 BR4:2H8 BR4 H71 BR4:1H7 BR4 H72 BR4:2H7 BR4 H11 BR4:1H1 BR4 H51 BR4:1H5 BR4 H21 BR4:1H2 BR4 H41 BR4:1H4 BR4 H31 BR4:1H3 BR4 H121 BR4:1H12 BR4 H122 BR4:2H12 BR4 H111 BR4:1H11 BR4 H112 BR4:2H11 BR4 H101 BR4:1H10 BR4 H102 BR4:2H10 BR4 HN11 BR4:1HN1 BR4 H231 BR4:1H23 BR4 H232 BR4:2H23 BR4 H141 BR4:1H14 BR4 H151 BR4:1H15 BR4 H152 BR4:2H15 BR4 H161 BR4:1H16 BR4 H162 BR4:2H16 BR4 H181 BR4:1H18 BR4 H221 BR4:1H22 BR4 H191 BR4:1H19 BR4 H211 BR4:1H21 BR4 H201 BR4:1H20 BR4 H241 BR4:1H24 BR4 H242 BR4:2H24 BR4 HO31 BR4:1HO3 BR4 HA11 BR5:1HA1 BR5 HA12 BR5:2HA1 BR5 HA13 BR5:3HA1 BR5 HB21 BR5:1HB2 BR5 HB22 BR5:2HB2 BR5 HZ21 BR5:1HZ2 BR5 HZ22 BR5:2HZ2 BR5 HA21 BR5:1HA2 BR5 HA22 BR5:2HA2 BR5 H71 BRB:1H7 BRB H72 BRB:2H7 BRB H21 BRC:1H2 BRC H22 BRC:2H2 BRC H31 BRC:1H3 BRC H32 BRC:2H3 BRC H41 BRC:1H4 BRC H42 BRC:2H4 BRC H51 BRC:1H5 BRC H52 BRC:2H5 BRC H61 BRC:1H6 BRC H62 BRC:2H6 BRC H71 BRC:1H7 BRC H72 BRC:2H7 BRC H81 BRC:1H8 BRC H82 BRC:2H8 BRC H91 BRC:1H9 BRC H92 BRC:2H9 BRC H101 BRC:1H10 BRC H102 BRC:2H10 BRC H111 BRC:1H11 BRC H112 BRC:2H11 BRC H121 BRC:1H12 BRC H122 BRC:2H12 BRC H3'1 BRD:1H3' BRD H2'1 BRD:1H2' BRD H5'1 BRD:1H5' BRD H5'2 BRD:2H5' BRD H11 BRE:1H1 BRE H12 BRE:2H1 BRE H13 BRE:3H1 BRE H81 BRE:1H8 BRE H91 BRE:1H9 BRE H101 BRE:1H10 BRE H111 BRE:1H11 BRE H121 BRE:1H12 BRE H131 BRE:1H13 BRE H151 BRE:1H15 BRE H181 BRE:1H18 BRE H191 BRE:1H19 BRE H201 BRE:1H20 BRE H211 BRE:1H21 BRE H221 BRE:1H22 BRE H1C1 BRF:1H1C BRF H1C2 BRF:2H1C BRF H1C3 BRF:3H1C BRF H21 BRG:1H2 BRG H22 BRG:2H2 BRG H21 BRI:1H2 BRI H22 BRI:2H2 BRI H41 BRI:1H4 BRI H42 BRI:2H4 BRI H43 BRI:3H4 BRI H61 BRI:1H6 BRI H62 BRI:2H6 BRI H63 BRI:3H6 BRI HB11 BRJ:1HB1 BRJ HB12 BRJ:2HB1 BRJ HB1A BRJ:1HB BRJ HB2 BRJ:2HB BRJ HAB1 BRK:1HAB BRK HAB2 BRK:2HAB BRK HAB3 BRK:3HAB BRK HAC1 BRK:1HAC BRK HAC2 BRK:2HAC BRK HAA1 BRK:1HAA BRK HAA2 BRK:2HAA BRK HAA3 BRK:3HAA BRK H61 BRL:1H6 BRL H62 BRL:2H6 BRL H141 BRL:1H14 BRL H142 BRL:2H14 BRL H151 BRL:1H15 BRL H152 BRL:2H15 BRL H161 BRL:1H16 BRL H162 BRL:2H16 BRL H163 BRL:3H16 BRL H21 BRM:1H2 BRM H22 BRM:2H2 BRM HB1 BRN:1HB BRN HB2 BRN:2HB BRN HB'1 BRN:1HB' BRN HB'2 BRN:2HB' BRN H11 BRP:1H1 BRP H12 BRP:2H1 BRP H31 BRP:1H3 BRP H32 BRP:2H3 BRP H1 BRQ:1H BRQ H2 BRQ:2H BRQ H101 BRR:1H10 BRR H102 BRR:2H10 BRR H103 BRR:3H10 BRR H91 BRR:1H9 BRR H92 BRR:2H9 BRR H81 BRR:1H8 BRR H82 BRR:2H8 BRR H71 BRR:1H7 BRR H72 BRR:2H7 BRR H51 BRR:1H5 BRR H52 BRR:2H5 BRR H221 BRS:1H22 BRS H222 BRS:2H22 BRS H223 BRS:3H22 BRS H8N1 BRT:1H8N BRT H8N2 BRT:2H8N BRT H1' BRU: H1* BRU H2' BRU:1H2* BRU H2'' BRU:2H2* BRU H3' BRU: H3* BRU H4' BRU: H4* BRU HO3' BRU:*HO3 BRU H5' BRU:1H5* BRU H5'' BRU:2H5* BRU HOP2 BRU:2HOP BRU HOP3 BRU:3HOP BRU HC11 BRZ:1HC1 BRZ HC1A BRZ:2HC1 BRZ HC61 BRZ:1HC6 BRZ HC62 BRZ:2HC6 BRZ HC63 BRZ:3HC6 BRZ HC71 BRZ:1HC7 BRZ HC72 BRZ:2HC7 BRZ HC73 BRZ:3HC7 BRZ HC91 BRZ:1HC9 BRZ HC92 BRZ:2HC9 BRZ HC21 BRZ:1HC2 BRZ HC22 BRZ:2HC2 BRZ HC23 BRZ:3HC2 BRZ HC31 BRZ:1HC3 BRZ HC32 BRZ:2HC3 BRZ HC33 BRZ:3HC3 BRZ H71 BSA:1H7 BSA H72 BSA:2H7 BSA H101 BSA:1H10 BSA H102 BSA:2H10 BSA H01C BSB:CH01 BSB H02C BSB:CH02 BSB H04C BSB:CH04 BSB H05C BSB:CH05 BSB H09N BSB:NH09 BSB H101 BSB:1H10 BSB H102 BSB:2H10 BSB HNP1 BSB:1HNP BSB HNP2 BSB:2HNP BSB H16C BSB:CH16 BSB H17C BSB:CH17 BSB H18C BSB:CH18 BSB H19C BSB:CH19 BSB H20C BSB:CH20 BSB HAB1 BSC:1HAB BSC HAB2 BSC:2HAB BSC HAB3 BSC:3HAB BSC HAC1 BSC:1HAC BSC HAC2 BSC:2HAC BSC HAD1 BSC:1HAD BSC HAD2 BSC:2HAD BSC HAE1 BSC:1HAE BSC HAE2 BSC:2HAE BSC HAA1 BSC:1HAA BSC HAA2 BSC:2HAA BSC HAH1 BSC:1HAH BSC HAH2 BSC:2HAH BSC HB1 BSC:1HB BSC HB2 BSC:2HB BSC HXT BSC:HOXT BSC HN1 BSC:1HN BSC HN2 BSC:2HN BSC H2 BSE: HN2 BSE HC1 BSE:1HC BSE HC2 BSE:2HC BSE HB2 BSE:1HB BSE HB3 BSE:2HB BSE HC71 BSI:1HC7 BSI HC72 BSI:2HC7 BSI HC01 BSI:1HC0 BSI HC02 BSI:2HC0 BSI H221 BSM:1H22 BSM H222 BSM:2H22 BSM H223 BSM:3H22 BSM H261 BSM:1H26 BSM H262 BSM:2H26 BSM H271 BSM:1H27 BSM H272 BSM:2H27 BSM H273 BSM:3H27 BSM H101 BSO:1H10 BSO H102 BSO:2H10 BSO H9C1 BSO:1H9C BSO H9C2 BSO:2H9C BSO H8C1 BSO:1H8C BSO H8C2 BSO:2H8C BSO H7C1 BSO:1H7C BSO H7C2 BSO:2H7C BSO H6C1 BSO:1H6C BSO H6C2 BSO:2H6C BSO H2B BSP: H2* BSP H5B BSP: H5* BSP H6B BSP: H6* BSP H4B BSP: H4* BSP H81 BST:1H8 BST H82 BST:2H8 BST HN91 BST:1HN9 BST HN92 BST:2HN9 BST H101 BST:1H10 BST H102 BST:2H10 BST H111 BST:1H11 BST H112 BST:2H11 BST H131 BST:1H13 BST H132 BST:2H13 BST H133 BST:3H13 BST H151 BST:1H15 BST H152 BST:2H15 BST HN41 BST:1HN4 BST HN42 BST:2HN4 BST H41 BSU:1H4 BSU H31 BSU:1H3 BSU H21 BSU:1H2 BSU H11 BSU:1H1 BSU H61 BSU:1H6 BSU H161 BSU:1H16 BSU H151 BSU:1H15 BSU H141 BSU:1H14 BSU H131 BSU:1H13 BSU H121 BSU:1H12 BSU H241 BT1:1H24 BT1 H242 BT1:2H24 BT1 H251 BT1:1H25 BT1 H252 BT1:2H25 BT1 H171 BT1:1H17 BT1 H172 BT1:2H17 BT1 H231 BT1:1H23 BT1 H232 BT1:2H23 BT1 H261 BT1:1H26 BT1 H262 BT1:2H26 BT1 H271 BT1:1H27 BT1 H272 BT1:2H27 BT1 H221 BT1:1H22 BT1 H222 BT1:2H22 BT1 H281 BT1:1H28 BT1 H282 BT1:2H28 BT1 H291 BT1:1H29 BT1 H292 BT1:2H29 BT1 H301 BT1:1H30 BT1 H302 BT1:2H30 BT1 H331 BT1:1H33 BT1 H332 BT1:2H33 BT1 H341 BT1:1H34 BT1 H342 BT1:2H34 BT1 H241 BT2:1H24 BT2 H242 BT2:2H24 BT2 H251 BT2:1H25 BT2 H252 BT2:2H25 BT2 H171 BT2:1H17 BT2 H172 BT2:2H17 BT2 H231 BT2:1H23 BT2 H232 BT2:2H23 BT2 H261 BT2:1H26 BT2 H262 BT2:2H26 BT2 H271 BT2:1H27 BT2 H272 BT2:2H27 BT2 H221 BT2:1H22 BT2 H222 BT2:2H22 BT2 H281 BT2:1H28 BT2 H282 BT2:2H28 BT2 H291 BT2:1H29 BT2 H292 BT2:2H29 BT2 H301 BT2:1H30 BT2 H302 BT2:2H30 BT2 H331 BT2:1H33 BT2 H332 BT2:2H33 BT2 H341 BT2:1H34 BT2 H342 BT2:2H34 BT2 H241 BT3:1H24 BT3 H242 BT3:2H24 BT3 H251 BT3:1H25 BT3 H252 BT3:2H25 BT3 H171 BT3:1H17 BT3 H172 BT3:2H17 BT3 H231 BT3:1H23 BT3 H232 BT3:2H23 BT3 H261 BT3:1H26 BT3 H262 BT3:2H26 BT3 H271 BT3:1H27 BT3 H272 BT3:2H27 BT3 H221 BT3:1H22 BT3 H222 BT3:2H22 BT3 H281 BT3:1H28 BT3 H282 BT3:2H28 BT3 H291 BT3:1H29 BT3 H292 BT3:2H29 BT3 H301 BT3:1H30 BT3 H302 BT3:2H30 BT3 H331 BT3:1H33 BT3 H332 BT3:2H33 BT3 H341 BT3:1H34 BT3 H342 BT3:2H34 BT3 HN61 BT4:1HN6 BT4 HN62 BT4:2HN6 BT4 H101 BT4:1H10 BT4 H102 BT4:2H10 BT4 H2'1 BT4:1H2* BT4 H2'2 BT4:2H2* BT4 H1'1 BT4:1H1* BT4 H1'2 BT4:2H1* BT4 H4' BT4: H4* BT4 H3' BT4: H3* BT4 HO3' BT4:HO3* BT4 H5'1 BT4:1H5* BT4 H5'2 BT4:2H5* BT4 H6'1 BT4:1H6* BT4 H6'2 BT4:2H6* BT4 H7'1 BT4:1H7* BT4 H7'2 BT4:2H7* BT4 H8'1 BT4:1H8* BT4 H8'2 BT4:2H8* BT4 H9'1 BT4:1H9* BT4 H9'2 BT4:2H9* BT4 H9'3 BT4:3H9* BT4 H101 BT5:1H10 BT5 H102 BT5:2H10 BT5 H9B1 BT5:1H9B BT5 H9B2 BT5:2H9B BT5 H8B1 BT5:1H8B BT5 H8B2 BT5:2H8B BT5 H7B1 BT5:1H7B BT5 H7B2 BT5:2H7B BT5 H6B1 BT5:1H6B BT5 H6B2 BT5:2H6B BT5 H5' BT5:1H5* BT5 H5'' BT5:2H5* BT5 H4' BT5: H4* BT5 H3' BT5: H3* BT5 H2' BT5: H2* BT5 H1' BT5: H1* BT5 HN61 BT5:1HN6 BT5 HN62 BT5:2HN6 BT5 HN1 BTA:1HN BTA HN2 BTA:2HN BTA HB1 BTA:1HB BTA HB2 BTA:2HB BTA HG1 BTA:1HG BTA HG2 BTA:2HG BTA HD1 BTA:1HD BTA HD2 BTA:2HD BTA HD3 BTA:3HD BTA H11 BTB:1H1 BTB H12 BTB:2H1 BTB H31 BTB:1H3 BTB H32 BTB:2H3 BTB H41 BTB:1H4 BTB H42 BTB:2H4 BTB H51 BTB:1H5 BTB H52 BTB:2H5 BTB H61 BTB:1H6 BTB H62 BTB:2H6 BTB H71 BTB:1H7 BTB H72 BTB:2H7 BTB H81 BTB:1H8 BTB H82 BTB:2H8 BTB H BTC:1HN BTC H2 BTC:2HN BTC HB2 BTC:1HB BTC HB3 BTC:2HB BTC HG BTC: HSG BTC HO5' BTD:*HO5 BTD H5'1 BTD:1H5* BTD H5'2 BTD:2H5* BTD H4' BTD: H4* BTD H1' BTD: H1* BTD H2'1 BTD:1H2* BTD H2'2 BTD:2H2* BTD H3' BTD: H3* BTD HO3' BTD:*HO3 BTD H311 BTH:1H31 BTH H312 BTH:2H31 BTH H313 BTH:3H31 BTH H351 BTH:1H35 BTH H352 BTH:2H35 BTH H231 BTH:1H23 BTH H232 BTH:2H23 BTH H221 BTH:1H22 BTH H222 BTH:2H22 BTH H91 BTH:1H9 BTH H92 BTH:2H9 BTH H101 BTH:1H10 BTH H102 BTH:2H10 BTH HA1 BTL:1HA BTL HA2 BTL:2HA BTL H31 BTL:1H3 BTL H32 BTL:2H3 BTL H33 BTL:3H3 BTL H21 BTL:1H2 BTL H22 BTL:2H2 BTL H23 BTL:3H2 BTL H11 BTL:1H1 BTL H12 BTL:2H1 BTL H13 BTL:3H1 BTL H101 BTN:1H10 BTN H102 BTN:2H10 BTN H91 BTN:1H9 BTN H92 BTN:2H9 BTN H81 BTN:1H8 BTN H82 BTN:2H8 BTN H71 BTN:1H7 BTN H72 BTN:2H7 BTN H61 BTN:1H6 BTN H62 BTN:2H6 BTN H111 BTO:1H11 BTO H112 BTO:2H11 BTO H101 BTO:1H10 BTO H102 BTO:2H10 BTO H91 BTO:1H9 BTO H92 BTO:2H9 BTO H31 BTP:1H3 BTP H32 BTP:2H3 BTP H'1 BTP:1H* BTP H'2 BTP:2H* BTP HS' BTP: HS* BTP H101 BTQ:1H10 BTQ H102 BTQ:2H10 BTQ H91 BTQ:1H9 BTQ H92 BTQ:2H9 BTQ H81 BTQ:1H8 BTQ H82 BTQ:2H8 BTQ H71 BTQ:1H7 BTQ H72 BTQ:2H7 BTQ H61 BTQ:1H6 BTQ H62 BTQ:2H6 BTQ H BTR:1HN BTR H2 BTR:2HN BTR HB2 BTR:1HB BTR HB3 BTR:2HB BTR H11 BTS:1H1 BTS H12 BTS:2H1 BTS H81 BTS:1H8 BTS H82 BTS:2H8 BTS H91 BTS:1H9 BTS H92 BTS:2H9 BTS H5'1 BTX:1H5* BTX H5'2 BTX:2H5* BTX H4' BTX: H4* BTX H3' BTX: H3* BTX H2' BTX: H2* BTX H1' BTX: H1* BTX HN61 BTX:1HN6 BTX HN62 BTX:2HN6 BTX H111 BTX:1H11 BTX H112 BTX:2H11 BTX H101 BTX:1H10 BTX H102 BTX:2H10 BTX H9B1 BTX:1H9B BTX H9B2 BTX:2H9B BTX H8B1 BTX:1H8B BTX H8B2 BTX:2H8B BTX H7B1 BTX:1H7B BTX H7B2 BTX:2H7B BTX H6B1 BTX:1H6B BTX H6B2 BTX:2H6B BTX H11 BU1:1H1 BU1 H12 BU1:2H1 BU1 H21 BU1:1H2 BU1 H22 BU1:2H2 BU1 H31 BU1:1H3 BU1 H32 BU1:2H3 BU1 H41 BU1:1H4 BU1 H42 BU1:2H4 BU1 HC11 BU2:1HC1 BU2 HC12 BU2:2HC1 BU2 HC21 BU2:1HC2 BU2 HC22 BU2:2HC2 BU2 HC41 BU2:1HC4 BU2 HC42 BU2:2HC4 BU2 HC43 BU2:3HC4 BU2 H41 BU3:1H4 BU3 H42 BU3:2H4 BU3 H43 BU3:3H4 BU3 H11 BU3:1H1 BU3 H12 BU3:2H1 BU3 H13 BU3:3H1 BU3 H11 BUA:1H1 BUA H12 BUA:2H1 BUA H13 BUA:3H1 BUA H21 BUA:1H2 BUA H22 BUA:2H2 BUA H31 BUA:1H3 BUA H32 BUA:2H3 BUA H11 BUB:1H1 BUB H12 BUB:2H1 BUB H13 BUB:3H1 BUB H21 BUB:1H2 BUB H22 BUB:2H2 BUB H61 BUB:1H6 BUB H62 BUB:2H6 BUB H91 BUB:1H9 BUB H92 BUB:2H9 BUB H BUC:1HN BUC H2 BUC:2HN BUC HB2 BUC:1HB BUC HB3 BUC:2HB BUC H11 BUC:1H1 BUC H12 BUC:2H1 BUC H21 BUC:1H2 BUC H22 BUC:2H2 BUC H31 BUC:1H3 BUC H32 BUC:2H3 BUC H41 BUC:1H4 BUC H42 BUC:2H4 BUC H43 BUC:3H4 BUC H BUG:1H1 BUG H2 BUG:2H1 BUG HA1 BUG:1HA BUG HG11 BUG:1HG1 BUG HG12 BUG:2HG1 BUG HG13 BUG:3HG1 BUG HG21 BUG:1HG2 BUG HG22 BUG:2HG2 BUG HG23 BUG:3HG2 BUG HG31 BUG:1HG3 BUG HG32 BUG:2HG3 BUG HG33 BUG:3HG3 BUG HN21 BUG:1HN2 BUG HN22 BUG:2HN2 BUG H21 BUI:1H2 BUI H22 BUI:2H2 BUI H101 BUI:1H10 BUI H102 BUI:2H10 BUI H141 BUI:1H14 BUI H142 BUI:2H14 BUI H143 BUI:3H14 BUI H131 BUI:1H13 BUI H132 BUI:2H13 BUI H133 BUI:3H13 BUI H121 BUI:1H12 BUI H122 BUI:2H12 BUI H123 BUI:3H12 BUI H151 BUI:1H15 BUI H152 BUI:2H15 BUI H161 BUI:1H16 BUI H162 BUI:2H16 BUI H241 BUI:1H24 BUI H242 BUI:2H24 BUI H261 BUI:1H26 BUI H262 BUI:2H26 BUI H271 BUI:1H27 BUI H272 BUI:2H27 BUI H191 BUI:1H19 BUI H192 BUI:2H19 BUI H201 BUI:1H20 BUI H202 BUI:2H20 BUI H211 BUI:1H21 BUI H212 BUI:2H21 BUI H221 BUI:1H22 BUI H222 BUI:2H22 BUI H231 BUI:1H23 BUI H232 BUI:2H23 BUI H251 BUI:1H25 BUI H252 BUI:2H25 BUI H181 BUI:1H18 BUI H182 BUI:2H18 BUI H171 BUI:1H17 BUI H172 BUI:2H17 BUI H281 BUI:1H28 BUI H282 BUI:2H28 BUI H283 BUI:3H28 BUI H061 BUK:1H06 BUK H062 BUK:2H06 BUK H071 BUK:1H07 BUK H072 BUK:2H07 BUK H081 BUK:1H08 BUK H082 BUK:2H08 BUK H111 BUK:1H11 BUK H112 BUK:2H11 BUK H221 BUK:1H22 BUK H222 BUK:2H22 BUK H223 BUK:3H22 BUK H231 BUK:1H23 BUK H232 BUK:2H23 BUK H233 BUK:3H23 BUK H281 BUK:1H28 BUK H282 BUK:2H28 BUK H311 BUK:1H31 BUK H312 BUK:2H31 BUK H431 BUK:1H43 BUK H432 BUK:2H43 BUK H433 BUK:3H43 BUK H91 BUL:1H9 BUL H92 BUL:2H9 BUL H121 BUL:1H12 BUL H122 BUL:2H12 BUL H191 BUL:1H19 BUL H192 BUL:2H19 BUL H193 BUL:3H19 BUL H211 BUL:1H21 BUL H212 BUL:2H21 BUL H261 BUL:1H26 BUL H262 BUL:2H26 BUL H271 BUL:1H27 BUL H272 BUL:2H27 BUL HG21 BUM:1HG2 BUM HG22 BUM:2HG2 BUM HG23 BUM:3HG2 BUM HG31 BUM:1HG3 BUM HG32 BUM:2HG3 BUM HG33 BUM:3HG3 BUM HG11 BUM:1HG1 BUM HG12 BUM:2HG1 BUM HG13 BUM:3HG1 BUM HN1 BUM:1HN BUM HN2 BUM:2HN BUM HN21 BUM:1HN2 BUM HN22 BUM:2HN2 BUM HN23 BUM:3HN2 BUM H11 BUQ:1H1 BUQ H12 BUQ:2H1 BUQ H13 BUQ:3H1 BUQ H31 BUQ:1H3 BUQ H32 BUQ:2H3 BUQ H41 BUQ:1H4 BUQ H42 BUQ:2H4 BUQ HO51 BUQ:1HO5 BUQ H11 BUS:1H1 BUS H12 BUS:2H1 BUS H21 BUS:1H2 BUS H22 BUS:2H2 BUS H31 BUS:1H3 BUS H32 BUS:2H3 BUS H41 BUS:1H4 BUS H42 BUS:2H4 BUS H43 BUS:3H4 BUS H11 BUT:1H1 BUT H12 BUT:2H1 BUT H13 BUT:3H1 BUT H21 BUT:1H2 BUT H22 BUT:2H2 BUT H31 BUT:1H3 BUT H32 BUT:2H3 BUT H41 BUT:1H4 BUT H42 BUT:2H4 BUT H43 BUT:3H4 BUT H501 BV1:1H50 BV1 H502 BV1:2H50 BV1 H11A BV1:1H1 BV1 H12 BV1:2H1 BV1 H111 BV1:1H11 BV1 H112 BV1:2H11 BV1 H121 BV1:1H12 BV1 H122 BV1:2H12 BV1 H131 BV1:1H13 BV1 H132 BV1:2H13 BV1 H141 BV1:1H14 BV1 H142 BV1:2H14 BV1 H151 BV1:1H15 BV1 H152 BV1:2H15 BV1 H161 BV1:1H16 BV1 H162 BV1:2H16 BV1 H171 BV1:1H17 BV1 H172 BV1:2H17 BV1 H181 BV1:1H18 BV1 H182 BV1:2H18 BV1 H191 BV1:1H19 BV1 H192 BV1:2H19 BV1 H201 BV1:1H20 BV1 H202 BV1:2H20 BV1 H231 BV1:1H23 BV1 H232 BV1:2H23 BV1 H241 BV1:1H24 BV1 H242 BV1:2H24 BV1 H251 BV1:1H25 BV1 H252 BV1:2H25 BV1 H261 BV1:1H26 BV1 H262 BV1:2H26 BV1 H271 BV1:1H27 BV1 H272 BV1:2H27 BV1 H281 BV1:1H28 BV1 H282 BV1:2H28 BV1 H291 BV1:1H29 BV1 H292 BV1:2H29 BV1 H301 BV1:1H30 BV1 H302 BV1:2H30 BV1 H311 BV1:1H31 BV1 H312 BV1:2H31 BV1 H321 BV1:1H32 BV1 H322 BV1:2H32 BV1 H511 BV2:1H51 BV2 H512 BV2:2H51 BV2 H11A BV2:1H1 BV2 H12A BV2:2H1 BV2 H111 BV2:1H11 BV2 H112 BV2:2H11 BV2 H121 BV2:1H12 BV2 H122 BV2:2H12 BV2 H131 BV2:1H13 BV2 H132 BV2:2H13 BV2 H141 BV2:1H14 BV2 H142 BV2:2H14 BV2 H151 BV2:1H15 BV2 H152 BV2:2H15 BV2 H161 BV2:1H16 BV2 H162 BV2:2H16 BV2 H171 BV2:1H17 BV2 H172 BV2:2H17 BV2 H181 BV2:1H18 BV2 H182 BV2:2H18 BV2 H191 BV2:1H19 BV2 H192 BV2:2H19 BV2 H201 BV2:1H20 BV2 H202 BV2:2H20 BV2 H221 BV2:1H22 BV2 H222 BV2:2H22 BV2 HN61 BV2:1HN6 BV2 HN62 BV2:2HN6 BV2 H241 BV2:1H24 BV2 H242 BV2:2H24 BV2 H261 BV2:1H26 BV2 H262 BV2:2H26 BV2 H271 BV2:1H27 BV2 H272 BV2:2H27 BV2 H281 BV2:1H28 BV2 H282 BV2:2H28 BV2 H291 BV2:1H29 BV2 H292 BV2:2H29 BV2 H301 BV2:1H30 BV2 H302 BV2:2H30 BV2 H311 BV2:1H31 BV2 H312 BV2:2H31 BV2 H321 BV2:1H32 BV2 H322 BV2:2H32 BV2 H331 BV2:1H33 BV2 H332 BV2:2H33 BV2 H341 BV2:1H34 BV2 H342 BV2:2H34 BV2 H351 BV2:1H35 BV2 H352 BV2:2H35 BV2 H631 BV3:1H63 BV3 H632 BV3:2H63 BV3 H11A BV3:1H1 BV3 H12 BV3:2H1 BV3 H111 BV3:1H11 BV3 H112 BV3:2H11 BV3 H121 BV3:1H12 BV3 H122 BV3:2H12 BV3 H131 BV3:1H13 BV3 H132 BV3:2H13 BV3 H141 BV3:1H14 BV3 H142 BV3:2H14 BV3 H151 BV3:1H15 BV3 H152 BV3:2H15 BV3 H161 BV3:1H16 BV3 H162 BV3:2H16 BV3 H171 BV3:1H17 BV3 H172 BV3:2H17 BV3 H181 BV3:1H18 BV3 H182 BV3:2H18 BV3 H191 BV3:1H19 BV3 H192 BV3:2H19 BV3 H201 BV3:1H20 BV3 H202 BV3:2H20 BV3 H231 BV3:1H23 BV3 H232 BV3:2H23 BV3 H241 BV3:1H24 BV3 H242 BV3:2H24 BV3 H261 BV3:1H26 BV3 H262 BV3:2H26 BV3 HN81 BV3:1HN8 BV3 HN82 BV3:2HN8 BV3 H281 BV3:1H28 BV3 H282 BV3:2H28 BV3 H301 BV3:1H30 BV3 H302 BV3:2H30 BV3 H311 BV3:1H31 BV3 H312 BV3:2H31 BV3 H341 BV3:1H34 BV3 H342 BV3:2H34 BV3 H351 BV3:1H35 BV3 H352 BV3:2H35 BV3 H361 BV3:1H36 BV3 H362 BV3:2H36 BV3 H371 BV3:1H37 BV3 H372 BV3:2H37 BV3 H381 BV3:1H38 BV3 H382 BV3:2H38 BV3 H391 BV3:1H39 BV3 H392 BV3:2H39 BV3 H401 BV3:1H40 BV3 H402 BV3:2H40 BV3 H411 BV3:1H41 BV3 H412 BV3:2H41 BV3 H421 BV3:1H42 BV3 H422 BV3:2H42 BV3 H431 BV3:1H43 BV3 H432 BV3:2H43 BV3 H751 BV4:1H75 BV4 H752 BV4:2H75 BV4 H11A BV4:1H1 BV4 H12 BV4:2H1 BV4 H111 BV4:1H11 BV4 H112 BV4:2H11 BV4 H121 BV4:1H12 BV4 H122 BV4:2H12 BV4 H141 BV4:1H14 BV4 H142 BV4:2H14 BV4 H151 BV4:1H15 BV4 H152 BV4:2H15 BV4 H161 BV4:1H16 BV4 H162 BV4:2H16 BV4 H171 BV4:1H17 BV4 H172 BV4:2H17 BV4 H181 BV4:1H18 BV4 H182 BV4:2H18 BV4 H191 BV4:1H19 BV4 H192 BV4:2H19 BV4 H201 BV4:1H20 BV4 H202 BV4:2H20 BV4 H211 BV4:1H21 BV4 H212 BV4:2H21 BV4 H241 BV4:1H24 BV4 H242 BV4:2H24 BV4 H251 BV4:1H25 BV4 H252 BV4:2H25 BV4 H261 BV4:1H26 BV4 H262 BV4:2H26 BV4 H271 BV4:1H27 BV4 H272 BV4:2H27 BV4 H281 BV4:1H28 BV4 H282 BV4:2H28 BV4 H291 BV4:1H29 BV4 H292 BV4:2H29 BV4 H301 BV4:1H30 BV4 H302 BV4:2H30 BV4 H311 BV4:1H31 BV4 H312 BV4:2H31 BV4 H321 BV4:1H32 BV4 H322 BV4:2H32 BV4 H331 BV4:1H33 BV4 H332 BV4:2H33 BV4 H351 BV4:1H35 BV4 H352 BV4:2H35 BV4 HN81 BV4:1HN8 BV4 HN82 BV4:2HN8 BV4 H371 BV4:1H37 BV4 H372 BV4:2H37 BV4 H391 BV4:1H39 BV4 H392 BV4:2H39 BV4 H401 BV4:1H40 BV4 H402 BV4:2H40 BV4 H411 BV4:1H41 BV4 H412 BV4:2H41 BV4 H421 BV4:1H42 BV4 H422 BV4:2H42 BV4 H431 BV4:1H43 BV4 H432 BV4:2H43 BV4 H441 BV4:1H44 BV4 H442 BV4:2H44 BV4 H451 BV4:1H45 BV4 H452 BV4:2H45 BV4 H461 BV4:1H46 BV4 H462 BV4:2H46 BV4 H471 BV4:1H47 BV4 H472 BV4:2H47 BV4 H481 BV4:1H48 BV4 H482 BV4:2H48 BV4 H511 BV4:1H51 BV4 H512 BV4:2H51 BV4 H521 BV4:1H52 BV4 H522 BV4:2H52 BV4 H531 BV4:1H53 BV4 H532 BV4:2H53 BV4 H541 BV4:1H54 BV4 H542 BV4:2H54 BV4 H551 BV4:1H55 BV4 H552 BV4:2H55 BV4 H561 BV4:1H56 BV4 H562 BV4:2H56 BV4 H571 BV4:1H57 BV4 H572 BV4:2H57 BV4 H581 BV4:1H58 BV4 H582 BV4:2H58 BV4 H591 BV4:1H59 BV4 H592 BV4:2H59 BV4 H601 BV4:1H60 BV4 H602 BV4:2H60 BV4 H61 BVC:1H6 BVC H62 BVC:2H6 BVC HN71 BVC:1HN7 BVC HN72 BVC:2HN7 BVC HO5' BVD:*HO5 BVD H5'1 BVD:1H5* BVD H5'2 BVD:2H5* BVD H4' BVD: H4* BVD H1' BVD: H1* BVD H2'1 BVD:1H2* BVD H2'2 BVD:2H2* BVD H3' BVD: H3* BVD HO3' BVD:*HO3 BVD HN71 BVF:1HN7 BVF HN72 BVF:2HN7 BVF H81 BVF:1H8 BVF H82 BVF:2H8 BVF H83 BVF:3H8 BVF H61 BVG:1H6 BVG H62 BVG:2H6 BVG H3' BVP: H3* BVP H2'1 BVP:1H2* BVP H2'2 BVP:2H2* BVP H1' BVP: H1* BVP H4' BVP: H4* BVP H5'1 BVP:1H5* BVP H5'2 BVP:2H5* BVP H211 BW2:1H21 BW2 H212 BW2:2H21 BW2 H201 BW2:1H20 BW2 H202 BW2:2H20 BW2 HN21 BW2:1HN2 BW2 HN22 BW2:2HN2 BW2 H71 BWD:1H7 BWD H72 BWD:2H7 BWD H81 BWD:1H8 BWD H82 BWD:2H8 BWD H92O BWD:OH92 BWD H221 BWP:1H22 BWP H222 BWP:2H22 BWP H241 BWP:1H24 BWP H242 BWP:2H24 BWP H261 BWP:1H26 BWP H262 BWP:2H26 BWP H263 BWP:3H26 BWP H271 BWP:1H27 BWP H272 BWP:2H27 BWP H273 BWP:3H27 BWP HN31 BX3:1HN3 BX3 HN32 BX3:2HN3 BX3 H141 BX3:1H14 BX3 H142 BX3:2H14 BX3 H271 BX3:1H27 BX3 H272 BX3:2H27 BX3 H291 BX3:1H29 BX3 H292 BX3:2H29 BX3 H301 BX3:1H30 BX3 H302 BX3:2H30 BX3 H331 BX3:1H33 BX3 H332 BX3:2H33 BX3 H333 BX3:3H33 BX3 H341 BX3:1H34 BX3 H342 BX3:2H34 BX3 H5B1 BXP:1H5B BXP H5B2 BXP:2H5B BXP H5A1 BXP:1H5A BXP H5A2 BXP:2H5A BXP H1A1 BXP:1H1A BXP H1A2 BXP:2H1A BXP H221 BYP:1H22 BYP H222 BYP:2H22 BYP H241 BYP:1H24 BYP H242 BYP:2H24 BYP H261 BYP:1H26 BYP H262 BYP:2H26 BYP H263 BYP:3H26 BYP H271 BYP:1H27 BYP H272 BYP:2H27 BYP H273 BYP:3H27 BYP HC11 BYS:1HC1 BYS HXT1 BYS:1HXT BYS HC51 BYS:1HC5 BYS HC52 BYS:2HC5 BYS HC71 BYS:1HC7 BYS HC81 BYS:1HC8 BYS HC91 BYS:1HC9 BYS H101 BYS:1H10 BYS H111 BYS:1H11 BYS H121 BYS:1H12 BYS HXT2 BYS:2HXT BYS H161 BYS:1H16 BYS H162 BYS:2H16 BYS H181 BYS:1H18 BYS H211 BYS:1H21 BYS H212 BYS:2H21 BYS H241 BYS:1H24 BYS H251 BYS:1H25 BYS H31 BZ1:1H3 BZ1 H32 BZ1:2H3 BZ1 H121 BZ1:1H12 BZ1 H122 BZ1:2H12 BZ1 H41 BZ1:1H4 BZ1 H42 BZ1:2H4 BZ1 H51 BZ1:1H5 BZ1 H52 BZ1:2H5 BZ1 H53 BZ1:3H5 BZ1 H61 BZ1:1H6 BZ1 H62 BZ1:2H6 BZ1 HN21 BZ1:1HN2 BZ1 HN22 BZ1:2HN2 BZ1 H21 BZ1:1H2 BZ1 H22 BZ1:2H2 BZ1 H11A BZ1:1H1 BZ1 H12 BZ1:2H1 BZ1 H13 BZ1:3H1 BZ1 H4C1 BZA:1H4C BZA H4C2 BZA:2H4C BZA HO11 BZB:1HO1 BZB HO21 BZB:1HO2 BZB HC21 BZB:1HC2 BZB HC71 BZB:1HC7 BZB HC41 BZB:1HC4 BZB HC61 BZB:1HC6 BZB HC51 BZB:1HC5 BZB HN11 BZC:1HN1 BZC HN12 BZC:2HN1 BZC H181 BZC:1H18 BZC H182 BZC:2H18 BZC H183 BZC:3H18 BZC H61 BZD:1H6 BZD H62 BZD:2H6 BZD H101 BZD:1H10 BZD H111 BZD:1H11 BZD H121 BZD:1H12 BZD H131 BZD:1H13 BZD H141 BZD:1H14 BZD H5'1 BZG:1H5* BZG H5'2 BZG:2H5* BZG HWC1 BZG:1HWC BZG HWC2 BZG:2HWC BZG HIN1 BZG:1HIN BZG HIN2 BZG:2HIN BZG HT' BZG: HT* BZG HP'1 BZG:1HP* BZG HP'2 BZG:2HP* BZG H4' BZG: H4* BZG H3' BZG: H3* BZG H101 BZH:1H10 BZH H102 BZH:2H10 BZH H131 BZH:1H13 BZH H132 BZH:2H13 BZH H141 BZH:1H14 BZH H142 BZH:2H14 BZH H151 BZH:1H15 BZH H152 BZH:2H15 BZH HC21 BZL:1HC2 BZL HC22 BZL:2HC2 BZL HC31 BZL:1HC3 BZL HC32 BZL:2HC3 BZL HC41 BZL:1HC4 BZL HC42 BZL:2HC4 BZL HC51 BZL:1HC5 BZL HC52 BZL:2HC5 BZL HC11 BZL:1HC1 BZL HC12 BZL:2HC1 BZL HC81 BZL:1HC8 BZL HC82 BZL:2HC8 BZL HC91 BZL:1HC9 BZL HC92 BZL:2HC9 BZL H101 BZL:1H10 BZL H102 BZL:2H10 BZL H111 BZL:1H11 BZL H112 BZL:2H11 BZL H82 BZM:2H8 BZM H81 BZM:1H8 BZM H11 BZO:1H1 BZO H21 BZO:1H2 BZO H22 BZO:2H2 BZO H21 BZP:1H2 BZP H22 BZP:2H2 BZP H31 BZP:1H3 BZP H32 BZP:2H3 BZP H51 BZP:1H5 BZP H52 BZP:2H5 BZP H61 BZP:1H6 BZP H62 BZP:2H6 BZP H4C1 BZR:1H4C BZR H4C2 BZR:2H4C BZR H21 BZS:1H2 BZS H22 BZS:2H2 BZS HB1 BZS:1HB BZS HB2 BZS:2HB BZS H241 BZT:1H24 BZT H242 BZT:2H24 BZT H311 BZT:1H31 BZT H312 BZT:2H31 BZT H171 BZT:1H17 BZT H172 BZT:2H17 BZT H231 BZT:1H23 BZT H232 BZT:2H23 BZT H261 BZT:1H26 BZT H262 BZT:2H26 BZT H271 BZT:1H27 BZT H272 BZT:2H27 BZT H221 BZT:1H22 BZT H222 BZT:2H22 BZT H281 BZT:1H28 BZT H282 BZT:2H28 BZT H291 BZT:1H29 BZT H292 BZT:2H29 BZT H301 BZT:1H30 BZT H302 BZT:2H30 BZT H341 BZT:1H34 BZT H342 BZT:2H34 BZT H91 BZU:1H9 BZU H92 BZU:2H9 BZU H111 BZU:1H11 BZU H112 BZU:2H11 BZU H121 BZU:1H12 BZU H122 BZU:2H12 BZU H141 BZU:1H14 BZU H142 BZU:2H14 BZU H151 BZU:1H15 BZU H152 BZU:2H15 BZU H153 BZU:3H15 BZU HN11 BZU:1HN1 BZU HN12 BZU:2HN1 BZU H171 BZU:1H17 BZU H172 BZU:2H17 BZU H181 BZU:1H18 BZU H182 BZU:2H18 BZU H183 BZU:3H18 BZU HX21 BZZ:1HX2 BZZ HX22 BZZ:2HX2 BZZ H11 BZZ:1H1 BZZ H12 BZZ:2H1 BZZ HOP3 C:3HOP C HOP2 C:2HOP C H5' C:1H5* C H5'' C:2H5* C H4' C: H4* C H3' C: H3* C HO3' C:H3T C H2' C: H2* C HO2' C:2HO* C H1' C: H1* C H41 C:1H4 C H42 C:2H4 C H111 C01:1H11 C01 H112 C01:2H11 C01 H113 C01:3H11 C01 H161 C01:1H16 C01 H162 C01:2H16 C01 H171 C01:1H17 C01 H172 C01:2H17 C01 H201 C01:1H20 C01 H202 C01:2H20 C01 H203 C01:3H20 C01 H261 C01:1H26 C01 H262 C01:2H26 C01 H271 C01:1H27 C01 H272 C01:2H27 C01 H301 C01:1H30 C01 H302 C01:2H30 C01 H303 C01:3H30 C01 H501 C01:1H50 C01 H502 C01:2H50 C01 H503 C01:3H50 C01 H541 C01:1H54 C01 H542 C01:2H54 C01 H543 C01:3H54 C01 HN31 C02:1HN3 C02 HN32 C02:2HN3 C02 H101 C02:1H10 C02 H102 C02:2H10 C02 H161 C02:1H16 C02 H162 C02:2H16 C02 H163 C02:3H16 C02 H21N C02:NH21 C02 H141 C03:1H14 C03 H142 C03:2H14 C03 H143 C03:3H14 C03 H181 C03:1H18 C03 H182 C03:2H18 C03 H381 C03:1H38 C03 H382 C03:2H38 C03 H383 C03:3H38 C03 H581 C03:1H58 C03 H582 C03:2H58 C03 H583 C03:3H58 C03 H11 C0M:1H1 C0M H12 C0M:2H1 C0M H271 C0M:1H27 C0M H272 C0M:2H27 C0M H281 C0M:1H28 C0M H282 C0M:2H28 C0M H341 C0M:1H34 C0M H342 C0M:2H34 C0M H331 C0M:1H33 C0M H332 C0M:2H33 C0M H321 C0M:1H32 C0M H322 C0M:2H32 C0M H311 C0M:1H31 C0M H312 C0M:2H31 C0M H301 C0M:1H30 C0M H302 C0M:2H30 C0M H61 C0M:1H6 C0M H62 C0M:2H6 C0M H41 C0M:1H4 C0M H42 C0M:2H4 C0M H11A C0R:1H1 C0R H12 C0R:2H1 C0R H21 C0R:1H2 C0R H22 C0R:2H2 C0R H61 C0R:1H6 C0R H62 C0R:2H6 C0R H71 C0R:1H7 C0R H72 C0R:2H7 C0R H121 C0R:1H12 C0R H122 C0R:2H12 C0R H151 C0R:1H15 C0R H152 C0R:2H15 C0R H161 C0R:1H16 C0R H162 C0R:2H16 C0R H181 C0R:1H18 C0R H182 C0R:2H18 C0R H183 C0R:3H18 C0R H191 C0R:1H19 C0R H192 C0R:2H19 C0R H193 C0R:3H19 C0R H211 C0R:1H21 C0R H212 C0R:2H21 C0R H1C1 C10:1H1C C10 H1C2 C10:2H1C C10 H1C3 C10:3H1C C10 H2C1 C10:1H2C C10 H2C2 C10:2H2C C10 H3C1 C10:1H3C C10 H3C2 C10:2H3C C10 H4C1 C10:1H4C C10 H4C2 C10:2H4C C10 H5C1 C10:1H5C C10 H5C2 C10:2H5C C10 H6C1 C10:1H6C C10 H6C2 C10:2H6C C10 H7C1 C10:1H7C C10 H7C2 C10:2H7C C10 H8C1 C10:1H8C C10 H8C2 C10:2H8C C10 H9C1 C10:1H9C C10 H9C2 C10:2H9C C10 H101 C10:1H10 C10 H102 C10:2H10 C10 H121 C10:1H12 C10 H122 C10:2H12 C10 H131 C10:1H13 C10 H132 C10:2H13 C10 H151 C10:1H15 C10 H152 C10:2H15 C10 H161 C10:1H16 C10 H162 C10:2H16 C10 H181 C10:1H18 C10 H182 C10:2H18 C10 H191 C10:1H19 C10 H192 C10:2H19 C10 H211 C10:1H21 C10 H212 C10:2H21 C10 H221 C10:1H22 C10 H222 C10:2H22 C10 H241 C10:1H24 C10 H242 C10:2H24 C10 H251 C10:1H25 C10 H252 C10:2H25 C10 H271 C10:1H27 C10 H272 C10:2H27 C10 H281 C10:1H28 C10 H282 C10:2H28 C10 H11 C11:1H1 C11 H12 C11:2H1 C11 H21 C11:1H2 C11 H22 C11:2H2 C11 H31 C11:1H3 C11 H32 C11:2H3 C11 H41 C11:1H4 C11 H42 C11:2H4 C11 H51 C11:1H5 C11 H52 C11:2H5 C11 H61 C11:1H6 C11 H62 C11:2H6 C11 H71 C11:1H7 C11 H72 C11:2H7 C11 H81 C11:1H8 C11 H82 C11:2H8 C11 H91 C11:1H9 C11 H92 C11:2H9 C11 H101 C11:1H10 C11 H102 C11:2H10 C11 H111 C11:1H11 C11 H112 C11:2H11 C11 H113 C11:3H11 C11 HY11 C11:1HY1 C11 HY12 C11:2HY1 C11 HY21 C11:1HY2 C11 HY22 C11:2HY2 C11 HY31 C11:1HY3 C11 HY32 C11:2HY3 C11 HY41 C11:1HY4 C11 HY42 C11:2HY4 C11 HY43 C11:3HY4 C11 HG11 C12:1HG1 C12 HG12 C12:2HG1 C12 HG13 C12:3HG1 C12 HN11 C12:1HN1 C12 HN12 C12:2HN1 C12 HA31 C12:1HA3 C12 HA32 C12:2HA3 C12 HB21 C12:1HB2 C12 HB22 C12:2HB2 C12 H011 C14:1H01 C14 H012 C14:2H01 C14 H013 C14:3H01 C14 H021 C14:1H02 C14 H022 C14:2H02 C14 H031 C14:1H03 C14 H032 C14:2H03 C14 H041 C14:1H04 C14 H042 C14:2H04 C14 H051 C14:1H05 C14 H052 C14:2H05 C14 H061 C14:1H06 C14 H062 C14:2H06 C14 H071 C14:1H07 C14 H072 C14:2H07 C14 H081 C14:1H08 C14 H082 C14:2H08 C14 H091 C14:1H09 C14 H092 C14:2H09 C14 H101 C14:1H10 C14 H102 C14:2H10 C14 H111 C14:1H11 C14 H112 C14:2H11 C14 H121 C14:1H12 C14 H122 C14:2H12 C14 H131 C14:1H13 C14 H132 C14:2H13 C14 H141 C14:1H14 C14 H142 C14:2H14 C14 H143 C14:3H14 C14 H1C1 C15:1H1C C15 H1C2 C15:2H1C C15 H2C1 C15:1H2C C15 H2C2 C15:2H2C C15 H3C1 C15:1H3C C15 H3C2 C15:2H3C C15 H5C1 C15:1H5C C15 H5C2 C15:2H5C C15 H5C3 C15:3H5C C15 H6C1 C15:1H6C C15 H6C2 C15:2H6C C15 H7C1 C15:1H7C C15 H7C2 C15:2H7C C15 H8C1 C15:1H8C C15 H8C2 C15:2H8C C15 HCN1 C15:1HCN C15 HCN2 C15:2HCN C15 HCN3 C15:3HCN C15 HCN4 C15:4HCN C15 HCN5 C15:5HCN C15 HCN6 C15:6HCN C15 H9C1 C15:1H9C C15 H9C2 C15:2H9C C15 H101 C15:1H10 C15 H102 C15:2H10 C15 H111 C15:1H11 C15 H112 C15:2H11 C15 H121 C15:1H12 C15 H122 C15:2H12 C15 H131 C15:1H13 C15 H132 C15:2H13 C15 H141 C15:1H14 C15 H142 C15:2H14 C15 H151 C15:1H15 C15 H152 C15:2H15 C15 H161 C15:1H16 C15 H162 C15:2H16 C15 H7B1 C17:1H7B C17 H7B2 C17:2H7B C17 H4C1 C18:1H4C C18 H4C2 C18:2H4C C18 H4N1 C18:1H4N C18 H4N2 C18:2H4N C18 H4N3 C18:3H4N C18 H7B1 C18:1H7B C18 H7B2 C18:2H7B C18 H31 C1A:1H3 C1A H32 C1A:2H3 C1A H33 C1A:3H3 C1A H51 C1A:1H5 C1A H52 C1A:2H5 C1A HN41 C1A:1HN4 C1A HN42 C1A:2HN4 C1A H91 C1A:1H9 C1A H92 C1A:2H9 C1A H93 C1A:3H9 C1A H121 C1A:1H12 C1A H122 C1A:2H12 C1A HN81 C1A:1HN8 C1A HN82 C1A:2HN8 C1A HN21 C1B:1HN2 C1B HN22 C1B:2HN2 C1B H421 C1B:1H42 C1B H422 C1B:2H42 C1B H3B C1B:H3'' C1B H4B C1B:H4'' C1B H511 C1B:1H51 C1B H512 C1B:2H51 C1B H551 C1B:1H55 C1B H552 C1B:2H55 C1B H6B C1B:H6'' C1B H2B C1B:H2'' C1B H121 C1D:1H12 C1D H122 C1D:2H12 C1D H119 C1D:19H1 C1D H241 C1D:1H24 C1D H242 C1D:2H24 C1D H251 C1D:1H25 C1D H252 C1D:2H25 C1D H291 C1D:1H29 C1D H292 C1D:2H29 C1D H330 C1D:30H3 C1D H331 C1D:1H33 C1D H341 C1D:1H34 C1D H2C1 C1D:1H2C C1D H2C2 C1D:2H2C C1D H2C3 C1D:3H2C C1D H335 C1D:35H3 C1D H337 C1D:37H3 C1D H6N1 C1D:1H6N C1D H6N2 C1D:2H6N C1D H4C1 C1F:1H4C C1F H4C2 C1F:2H4C C1F H6C1 C1F:1H6C C1F H6C2 C1F:2H6C C1F H6C3 C1F:3H6C C1F H7C1 C1F:1H7C C1F H7C2 C1F:2H7C C1F H7C3 C1F:3H7C C1F H9C1 C1F:1H9C C1F H9C2 C1F:2H9C C1F H111 C1F:1H11 C1F H112 C1F:2H11 C1F H121 C1F:1H12 C1F H122 C1F:2H12 C1F H71 C1N:1H7 C1N H72 C1N:2H7 C1N H141 C1N:1H14 C1N H142 C1N:2H14 C1N H143 C1N:3H14 C1N H151 C1N:1H15 C1N H152 C1N:2H15 C1N H153 C1N:3H15 C1N H171 C1N:1H17 C1N H172 C1N:2H17 C1N H211 C1N:1H21 C1N H212 C1N:2H21 C1N H231 C1N:1H23 C1N H232 C1N:2H23 C1N H233 C1N:3H23 C1N H241 C1N:1H24 C1N H242 C1N:2H24 C1N H243 C1N:3H24 C1N H281 C1N:1H28 C1N H282 C1N:2H28 C1N H321 C1N:1H32 C1N H322 C1N:2H32 C1N H141 C1P:1H14 C1P H142 C1P:2H14 C1P H131 C1P:1H13 C1P H132 C1P:2H13 C1P H111 C1P:1H11 C1P H112 C1P:2H11 C1P H101 C1P:1H10 C1P H102 C1P:2H10 C1P H201 C1P:1H20 C1P H202 C1P:2H20 C1P H211 C1P:1H21 C1P H212 C1P:2H21 C1P H51 C1P:1H5 C1P H52 C1P:2H5 C1P H71 C1P:1H7 C1P H72 C1P:2H7 C1P H73 C1P:3H7 C1P H81 C1P:1H8 C1P H82 C1P:2H8 C1P H83 C1P:3H8 C1P H11 C1R:1H1 C1R H12 C1R:2H1 C1R H21 C1R:1H2 C1R H22 C1R:2H2 C1R H41 C1R:1H4 C1R H42 C1R:2H4 C1R H51 C1R:1H5 C1R H52 C1R:2H5 C1R H71 C1R:1H7 C1R H72 C1R:2H7 C1R H81 C1R:1H8 C1R H82 C1R:2H8 C1R H91 C1R:1H9 C1R H92 C1R:2H9 C1R H101 C1X:1H10 C1X H102 C1X:2H10 C1X H9C1 C1X:1H9C C1X H9C2 C1X:2H9C C1X H7C1 C1X:1H7C C1X H7C2 C1X:2H7C C1X H5C1 C1X:1H5C C1X H5C2 C1X:2H5C C1X H2C1 C1X:1H2C C1X H2C2 C1X:2H2C C1X HEC1 C1X:1HEC C1X HEC2 C1X:2HEC C1X HDC1 C1X:1HDC C1X HDC2 C1X:2HDC C1X HGC1 C1X:1HGC C1X HGC2 C1X:2HGC C1X HBC1 C1X:1HBC C1X HBC2 C1X:2HBC C1X HN1 C1X:1HN C1X HN2 C1X:2HN C1X H11 C20:1H1 C20 H12A C20:2H1 C20 H13 C20:3H1 C20 H71 C20:1H7 C20 H72 C20:2H7 C20 H73 C20:3H7 C20 H81 C20:1H8 C20 H82 C20:2H8 C20 H83 C20:3H8 C20 H131 C20:1H13 C20 H132 C20:2H13 C20 H221 C20:1H22 C20 H222 C20:2H22 C20 H241 C20:1H24 C20 H242 C20:2H24 C20 H261 C20:1H26 C20 H262 C20:2H26 C20 H271 C20:1H27 C20 H272 C20:2H27 C20 H281 C20:1H28 C20 H282 C20:2H28 C20 H291 C20:1H29 C20 H292 C20:2H29 C20 H301 C20:1H30 C20 H302 C20:2H30 C20 H371 C20:1H37 C20 H372 C20:2H37 C20 H373 C20:3H37 C20 H381 C20:1H38 C20 H382 C20:2H38 C20 H383 C20:3H38 C20 H411 C20:1H41 C20 H412 C20:2H41 C20 H413 C20:3H41 C20 H10N C24:NH10 C24 H111 C24:1H11 C24 H112 C24:2H11 C24 H291 C24:1H29 C24 H292 C24:2H29 C24 H301 C24:1H30 C24 H302 C24:2H30 C24 H341 C24:1H34 C24 H342 C24:2H34 C24 H351 C24:1H35 C24 H352 C24:2H35 C24 H353 C24:3H35 C24 H171 C24:1H17 C24 H172 C24:2H17 C24 H173 C24:3H17 C24 HN81 C24:1HN8 C24 HN82 C24:2HN8 C24 HOP3 C25:3HOP C25 HOP2 C25:2HOP C25 H5' C25:1H5* C25 H5'' C25:2H5* C25 H4' C25: H4* C25 H3' C25: H3* C25 HO'3 C25:3HO* C25 H2' C25: H2* C25 HO2' C25:2HO* C25 H1' C25: H1* C25 H41 C25:1H4 C25 H42 C25:2H4 C25 H1C1 C26:1H1C C26 H1C2 C26:2H1C C26 H7C1 C26:1H7C C26 H7C2 C26:2H7C C26 H8C1 C26:1H8C C26 H8C2 C26:2H8C C26 H8C3 C26:3H8C C26 H3C1 C26:1H3C C26 H3C2 C26:2H3C C26 H4C1 C26:1H4C C26 H4C2 C26:2H4C C26 H5C1 C26:1H5C C26 H5C2 C26:2H5C C26 H6C1 C26:1H6C C26 H6C2 C26:2H6C C26 H6C3 C26:3H6C C26 H131 C28:1H13 C28 H132 C28:2H13 C28 H191 C28:1H19 C28 H192 C28:2H19 C28 H201 C28:1H20 C28 H202 C28:2H20 C28 H261 C28:1H26 C28 H262 C28:2H26 C28 H271 C28:1H27 C28 H272 C28:2H27 C28 H291 C28:1H29 C28 H292 C28:2H29 C28 H301 C28:1H30 C28 H302 C28:2H30 C28 H321 C28:1H32 C28 H322 C28:2H32 C28 H311 C28:1H31 C28 H312 C28:2H31 C28 HN1 C2A:1HN C2A HN2 C2A:2HN C2A HC1 C2A:1HC C2A HC2 C2A:2HC C2A HN11 C2B:1HN1 C2B HN12 C2B:2HN1 C2B HB1 C2B:1HB C2B HB2 C2B:2HB C2B H131 C2D:1H13 C2D H132 C2D:2H13 C2D H151 C2D:1H15 C2D H152 C2D:2H15 C2D H161 C2D:1H16 C2D H162 C2D:2H16 C2D H117 C2D:17H1 C2D H191 C2D:1H19 C2D H220 C2D:20H2 C2D H241 C2D:1H24 C2D H242 C2D:2H24 C2D H251 C2D:1H25 C2D H252 C2D:2H25 C2D H261 C2D:1H26 C2D H227 C2D:27H2 C2D H281 C2D:1H28 C2D H301 C2D:1H30 C2D H311 C2D:1H31 C2D HN21 C2F:1HN2 C2F HN22 C2F:2HN2 C2F H71 C2F:1H7 C2F H72 C2F:2H7 C2F H91 C2F:1H9 C2F H92 C2F:2H9 C2F H111 C2F:1H11 C2F H112 C2F:2H11 C2F H113 C2F:3H11 C2F HB1 C2F:1HB C2F HB2 C2F:2HB C2F HG1 C2F:1HG C2F HG2 C2F:2HG C2F HOE2 C2F:2HOE C2F HN41 C2G:1HN4 C2G HN42 C2G:2HN4 C2G HC51 C2G:1HC5 C2G HC52 C2G:2HC5 C2G H1G1 C2G:1H1G C2G H1G2 C2G:2H1G C2G H3G1 C2G:1H3G C2G H3G2 C2G:2H3G C2G HOP3 C2L:3HOP C2L HOP2 C2L:2HOP C2L H5' C2L:1H5* C2L H5'' C2L:2H5* C2L H4' C2L: H4* C2L H3' C2L: H3* C2L H2' C2L: H2* C2L HO2' C2L:2HO* C2L H1' C2L: H1* C2L H41 C2L:1H4 C2L H42 C2L:2H4 C2L HA'1 C2L:1HA* C2L HA'2 C2L:2HA* C2L HB'1 C2L:1HB* C2L HB'2 C2L:2HB* C2L HD'1 C2L:1HD* C2L HD'2 C2L:2HD* C2L HD'3 C2L:3HD* C2L H71 C2L:1H7 C2L H72 C2L:2H7 C2L H73 C2L:3H7 C2L HN31 C2M:1HN3 C2M HN32 C2M:2HN3 C2M HN41 C2M:1HN4 C2M HN42 C2M:2HN4 C2M H121 C2M:1H12 C2M H122 C2M:2H12 C2M H123 C2M:3H12 C2M HB1 C2N:1HB C2N HB2 C2N:2HB C2N HN1 C2N:1HN C2N HN2 C2N:2HN C2N HN3 C2N:3HN C2N HN41 C2P:1HN4 C2P HN42 C2P:2HN4 C2P H1' C2P: H1* C2P H2' C2P: H2* C2P H3' C2P: H3* C2P H4' C2P: H4* C2P HO3' C2P:*HO3 C2P H5'1 C2P:1H5* C2P H5'2 C2P:2H5* C2P HO5' C2P:*HO5 C2P HOP2 C2P:2HOP C2P HOP3 C2P:3HOP C2P H2' C2R: H2* C2R H3' C2R: H3* C2R H5'1 C2R:1H5* C2R H5'2 C2R:2H5* C2R H4' C2R: H4* C2R H1' C2R: H1* C2R HN51 C2R:1HN5 C2R HN52 C2R:2HN5 C2R HOP3 C2S:3HOP C2S HOP2 C2S:2HOP C2S H5' C2S:1H5* C2S H5'' C2S:2H5* C2S H4' C2S: H4* C2S H3' C2S: H3* C2S HO3' C2S:H3T C2S H2'1 C2S:1H2* C2S H1' C2S: H1* C2S H41 C2S:1H4 C2S H42 C2S:2H4 C2S H2'2 C2S:2H2* C2S H5'1 C31:1H5* C31 H5'2 C31:2H5* C31 H4' C31: H4* C31 H3' C31: H3* C31 H2' C31: H2* C31 H1' C31: H1* C31 H4N1 C31:1H4N C31 H4N2 C31:2H4N C31 HA'1 C31:1HA* C31 HA'2 C31:2HA* C31 HB'1 C31:1HB* C31 HB'2 C31:2HB* C31 HCC1 C31:1HCC C31 HCC2 C31:2HCC C31 HD'1 C31:1HD* C31 HD'2 C31:2HD* C31 H5'1 C32:1H5* C32 H5'2 C32:2H5* C32 H4' C32: H4* C32 H3' C32: H3* C32 H2'1 C32:1H2* C32 H2'2 C32:2H2* C32 H1' C32: H1* C32 H4N1 C32:1H4N C32 H4N2 C32:2H4N C32 H41 C33:1H4 C33 H42 C33:2H4 C33 H121 C33:1H12 C33 H122 C33:2H12 C33 H111 C33:1H11 C33 H112 C33:2H11 C33 H91 C33:1H9 C33 H92 C33:2H9 C33 H151 C33:1H15 C33 H152 C33:2H15 C33 H161 C33:1H16 C33 H162 C33:2H16 C33 H191 C33:1H19 C33 H192 C33:2H19 C33 H221 C33:1H22 C33 H222 C33:2H22 C33 H181 C33:1H18 C33 H182 C33:2H18 C33 H183 C33:3H18 C33 H211 C33:1H21 C33 H212 C33:2H21 C33 H213 C33:3H21 C33 H231 C33:1H23 C33 H232 C33:2H23 C33 H241 C33:1H24 C33 H242 C33:2H24 C33 H271 C33:1H27 C33 H272 C33:2H27 C33 H273 C33:3H27 C33 H261 C33:1H26 C33 H262 C33:2H26 C33 H263 C33:3H26 C33 H281 C33:1H28 C33 H282 C33:2H28 C33 H291 C33:1H29 C33 H292 C33:2H29 C33 H301 C33:1H30 C33 H302 C33:2H30 C33 H303 C33:3H30 C33 HOP2 C34:2HOP C34 HOP3 C34:3HOP C34 H5' C34:1H5* C34 H5'' C34:2H5* C34 H4' C34: H4* C34 H1' C34: H1* C34 H7C1 C34:1H7C C34 H7C2 C34:2H7C C34 H7C3 C34:3H7C C34 H2' C34:1H2* C34 H2'' C34:2H2* C34 H3' C34: H3* C34 HO3' C34:H3T C34 H311 C35:1H31 C35 H312 C35:2H31 C35 H313 C35:3H31 C35 H241 C35:1H24 C35 H242 C35:2H24 C35 H251 C35:1H25 C35 H252 C35:2H25 C35 H261 C35:1H26 C35 H262 C35:2H26 C35 H6N1 C35:1H6N C35 H6N2 C35:2H6N C35 H7N1 C35:1H7N C35 H7N2 C35:2H7N C35 H181 C35:1H18 C35 H182 C35:2H18 C35 H201 C35:1H20 C35 H202 C35:2H20 C35 H203 C35:3H20 C35 H211 C35:1H21 C35 H212 C35:2H21 C35 H213 C35:3H21 C35 H151 C35:1H15 C35 H152 C35:2H15 C35 H153 C35:3H15 C35 H131 C35:1H13 C35 H132 C35:2H13 C35 H141 C35:1H14 C35 H142 C35:2H14 C35 H143 C35:3H14 C35 H7C1 C35:1H7C C35 H7C2 C35:2H7C C35 H1N1 C35:1H1N C35 H1N2 C35:2H1N C35 H5'1 C36:1H5* C36 H5'2 C36:2H5* C36 H4' C36: H4* C36 H3' C36: H3* C36 H2'1 C36:1H2* C36 H2'2 C36:2H2* C36 H1' C36: H1* C36 H4N1 C36:1H4N C36 H4N2 C36:2H4N C36 H5'1 C37:1H5* C37 H5'2 C37:2H5* C37 H4' C37: H4* C37 H3' C37: H3* C37 H2'1 C37:1H2* C37 H2'2 C37:2H2* C37 H1' C37: H1* C37 H4N1 C37:1H4N C37 H4N2 C37:2H4N C37 H5'1 C38:1H5* C38 H5'2 C38:2H5* C38 H4' C38: H4* C38 H3' C38: H3* C38 H2'1 C38:1H2* C38 H2'2 C38:2H2* C38 H1' C38: H1* C38 H4N1 C38:1H4N C38 H4N2 C38:2H4N C38 H1C1 C39:1H1C C39 H1C2 C39:2H1C C39 H1C3 C39:3H1C C39 H3C1 C39:1H3C C39 H3C2 C39:2H3C C39 H4C1 C39:1H4C C39 H4C2 C39:2H4C C39 H5C1 C39:1H5C C39 H5C2 C39:2H5C C39 H161 C39:1H16 C39 H162 C39:2H16 C39 H211 C39:1H21 C39 H212 C39:2H21 C39 H191 C39:1H19 C39 H192 C39:2H19 C39 H193 C39:3H19 C39 H201 C39:1H20 C39 H202 C39:2H20 C39 H203 C39:3H20 C39 H231 C39:1H23 C39 H232 C39:2H23 C39 H261 C39:1H26 C39 H262 C39:2H26 C39 H281 C39:1H28 C39 H282 C39:2H28 C39 H283 C39:3H28 C39 H321 C39:1H32 C39 H322 C39:2H32 C39 H331 C39:1H33 C39 H332 C39:2H33 C39 H341 C39:1H34 C39 H342 C39:2H34 C39 H351 C39:1H35 C39 H352 C39:2H35 C39 H353 C39:3H35 C39 H11A C3A:1H1 C3A H12 C3A:2H1 C3A H31A C3A:1H3 C3A H32A C3A:2H3 C3A H91 C3A:1H9 C3A H92 C3A:2H9 C3A H101 C3A:1H10 C3A H102 C3A:2H10 C3A H121 C3A:1H12 C3A H122 C3A:2H12 C3A H131 C3A:1H13 C3A H132 C3A:2H13 C3A H151 C3A:1H15 C3A H152 C3A:2H15 C3A H221 C3A:1H22 C3A H222 C3A:2H22 C3A H331 C3A:1H33 C3A H332 C3A:2H33 C3A H401 C3A:1H40 C3A H402 C3A:2H40 C3A H31 C3D:1H3 C3D H32 C3D:2H3 C3D H41 C3D:1H4 C3D H42 C3D:2H4 C3D H241 C3D:1H24 C3D H242 C3D:2H24 C3D H251 C3D:1H25 C3D H252 C3D:2H25 C3D H271 C3D:1H27 C3D H272 C3D:2H27 C3D H281 C3D:1H28 C3D H282 C3D:2H28 C3D H291 C3D:1H29 C3D H292 C3D:2H29 C3D H301 C3D:1H30 C3D H302 C3D:2H30 C3D H1N1 C3M:1H1N C3M H1N2 C3M:2H1N C3M H3C1 C3M:1H3C C3M H3C2 C3M:2H3C C3M H121 C3M:1H12 C3M H122 C3M:2H12 C3M H41 C3O:1H4 C3O H42 C3O:2H4 C3O H121 C3O:1H12 C3O H122 C3O:2H12 C3O H111 C3O:1H11 C3O H112 C3O:2H11 C3O H91 C3O:1H9 C3O H92 C3O:2H9 C3O H151 C3O:1H15 C3O H152 C3O:2H15 C3O H161 C3O:1H16 C3O H162 C3O:2H16 C3O H191 C3O:1H19 C3O H192 C3O:2H19 C3O H221 C3O:1H22 C3O H222 C3O:2H22 C3O H181 C3O:1H18 C3O H182 C3O:2H18 C3O H183 C3O:3H18 C3O H211 C3O:1H21 C3O H212 C3O:2H21 C3O H213 C3O:3H21 C3O H231 C3O:1H23 C3O H232 C3O:2H23 C3O H241 C3O:1H24 C3O H242 C3O:2H24 C3O H271 C3O:1H27 C3O H272 C3O:2H27 C3O H273 C3O:3H27 C3O H261 C3O:1H26 C3O H262 C3O:2H26 C3O H263 C3O:3H26 C3O H291 C3O:1H29 C3O H292 C3O:2H29 C3O H301 C3O:1H30 C3O H302 C3O:2H30 C3O H311 C3O:1H31 C3O H312 C3O:2H31 C3O H313 C3O:3H31 C3O HOP2 C3P:2HOP C3P HOP3 C3P:3HOP C3P HO5' C3P:*HO5 C3P H5'1 C3P:1H5* C3P H5'2 C3P:2H5* C3P H4' C3P: H4* C3P H3' C3P: H3* C3P H2'1 C3P:1H2* C3P HO2' C3P:*HO2 C3P H1' C3P: H1* C3P HN41 C3P:1HN4 C3P HN42 C3P:2HN4 C3P H651 C3S:1H65 C3S H652 C3S:2H65 C3S H653 C3S:3H65 C3S H691 C3S:1H69 C3S H692 C3S:2H69 C3S H693 C3S:3H69 C3S H601 C3S:1H60 C3S H602 C3S:2H60 C3S H571 C3S:1H57 C3S H572 C3S:2H57 C3S H541 C3S:1H54 C3S H542 C3S:2H54 C3S H501 C3S:1H50 C3S H502 C3S:2H50 C3S H503 C3S:3H50 C3S H351 C3S:1H35 C3S H352 C3S:2H35 C3S H261 C3S:1H26 C3S H262 C3S:2H26 C3S H401 C3S:1H40 C3S H402 C3S:2H40 C3S H403 C3S:3H40 C3S H321 C3S:1H32 C3S H322 C3S:2H32 C3S H151 C3S:1H15 C3S H152 C3S:2H15 C3S H231 C3S:1H23 C3S H232 C3S:2H23 C3S H441 C3S:1H44 C3S H442 C3S:2H44 C3S H443 C3S:3H44 C3S H91 C3S:1H9 C3S H92 C3S:2H9 C3S H11 C3S:1H1 C3S H12 C3S:2H1 C3S H41 C3S:1H4 C3S H42 C3S:2H4 C3S H51 C3X:1H5 C3X H52 C3X:2H5 C3X H1'1 C3X:1H1' C3X H1'2 C3X:2H1' C3X H3'1 C3X:1H3' C3X H3'2 C3X:2H3' C3X HN1 C3Y:1HN C3Y HN2 C3Y:2HN C3Y HBC1 C3Y:1HBC C3Y HBC2 C3Y:2HBC C3Y H1C1 C3Y:1H1C C3Y H1C2 C3Y:2H1C C3Y H1C3 C3Y:3H1C C3Y H1C1 C40:1H1C C40 H1C2 C40:2H1C C40 H1C3 C40:3H1C C40 H3C1 C40:1H3C C40 H3C2 C40:2H3C C40 H4C1 C40:1H4C C40 H4C2 C40:2H4C C40 H5C1 C40:1H5C C40 H5C2 C40:2H5C C40 H161 C40:1H16 C40 H162 C40:2H16 C40 H181 C40:1H18 C40 H182 C40:2H18 C40 H183 C40:3H18 C40 H191 C40:1H19 C40 H192 C40:2H19 C40 H211 C40:1H21 C40 H212 C40:2H21 C40 H241 C40:1H24 C40 H242 C40:2H24 C40 H261 C40:1H26 C40 H262 C40:2H26 C40 H263 C40:3H26 C40 H301 C40:1H30 C40 H302 C40:2H30 C40 H311 C40:1H31 C40 H312 C40:2H31 C40 H321 C40:1H32 C40 H322 C40:2H32 C40 H331 C40:1H33 C40 H332 C40:2H33 C40 H333 C40:3H33 C40 H1C1 C41:1H1C C41 H1C2 C41:2H1C C41 H1C3 C41:3H1C C41 H3C1 C41:1H3C C41 H3C2 C41:2H3C C41 H4C1 C41:1H4C C41 H4C2 C41:2H4C C41 H5C1 C41:1H5C C41 H5C2 C41:2H5C C41 H151 C41:1H15 C41 H152 C41:2H15 C41 H141 C41:1H14 C41 H142 C41:2H14 C41 H143 C41:3H14 C41 H201 C41:1H20 C41 H202 C41:2H20 C41 H181 C41:1H18 C41 H182 C41:2H18 C41 H183 C41:3H18 C41 H191 C41:1H19 C41 H192 C41:2H19 C41 H193 C41:3H19 C41 H221 C41:1H22 C41 H222 C41:2H22 C41 H251 C41:1H25 C41 H252 C41:2H25 C41 H281 C41:1H28 C41 H282 C41:2H28 C41 H283 C41:3H28 C41 H291 C41:1H29 C41 H292 C41:2H29 C41 H293 C41:3H29 C41 H331 C41:1H33 C41 H332 C41:2H33 C41 H351 C41:1H35 C41 H352 C41:2H35 C41 H353 C41:3H35 C41 H361 C41:1H36 C41 H362 C41:2H36 C41 H363 C41:3H36 C41 H391 C41:1H39 C41 H392 C41:2H39 C41 H4N1 C42:1H4N C42 H4N2 C42:2H4N C42 H1' C42: H1* C42 H2'1 C42:1H2* C42 H2'2 C42:2H2* C42 H3' C42: H3* C42 H4' C42: H4* C42 H5'1 C42:1H5* C42 H5'2 C42:2H5* C42 HN1 C42:1HN C42 HN2 C42:2HN C42 H5'1 C43:1H5* C43 H5'2 C43:2H5* C43 H4' C43: H4* C43 H3' C43: H3* C43 H2' C43: H2* C43 H1' C43: H1* C43 H4N1 C43:1H4N C43 H4N2 C43:2H4N C43 HA'1 C43:1HA* C43 HA'2 C43:2HA* C43 HB'1 C43:1HB* C43 HB'2 C43:2HB* C43 HD'1 C43:1HD* C43 HD'2 C43:2HD* C43 HD'3 C43:3HD* C43 H1' C45: H1* C45 H2'1 C45:1H2* C45 H2'2 C45:2H2* C45 HM21 C45:1HM2 C45 HM22 C45:2HM2 C45 HM23 C45:3HM2 C45 H3' C45: H3* C45 H4' C45: H4* C45 H5'1 C45:1H5* C45 H5'2 C45:2H5* C45 H5'1 C46:1H5* C46 H5'2 C46:2H5* C46 H4' C46: H4* C46 H3' C46: H3* C46 H2'1 C46:1H2* C46 H2'2 C46:2H2* C46 H1' C46: H1* C46 HM51 C46:1HM5 C46 HM52 C46:2HM5 C46 H7C1 C46:1H7C C46 H7C2 C46:2H7C C46 H101 C48:1H10 C48 H102 C48:2H10 C48 H141 C48:1H14 C48 H142 C48:2H14 C48 H221 C48:1H22 C48 H222 C48:2H22 C48 H223 C48:3H22 C48 H231 C48:1H23 C48 H232 C48:2H23 C48 H233 C48:3H23 C48 H241 C48:1H24 C48 H242 C48:2H24 C48 H251 C48:1H25 C48 H252 C48:2H25 C48 H5'1 C49:1H5* C49 H5'2 C49:2H5* C49 H4' C49: H4* C49 H3' C49: H3* C49 H2'1 C49:1H2* C49 H2'2 C49:2H2* C49 H1' C49: H1* C49 HM51 C49:1HM5 C49 HM52 C49:2HM5 C49 HM53 C49:3HM5 C49 HN11 C4A:1HN1 C4A HN12 C4A:2HN1 C4A H21A C4A:1H2 C4A H22A C4A:2H2 C4A H41 C4A:1H4 C4A H42 C4A:2H4 C4A H51 C4A:1H5 C4A H52 C4A:2H5 C4A H31 C4A:1H3 C4A H32 C4A:2H3 C4A H111 C4A:1H11 C4A H112 C4A:2H11 C4A H121 C4A:1H12 C4A H122 C4A:2H12 C4A H123 C4A:3H12 C4A H191 C4A:1H19 C4A H192 C4A:2H19 C4A H301 C4A:1H30 C4A H302 C4A:2H30 C4A H331 C4A:1H33 C4A H332 C4A:2H33 C4A H51 C4H:1H5 C4H H52 C4H:2H5 C4H H53 C4H:3H5 C4H H61 C4H:1H6 C4H H62 C4H:2H6 C4H H63 C4H:3H6 C4H H161 C4H:1H16 C4H H162 C4H:2H16 C4H H171 C4H:1H17 C4H H172 C4H:2H17 C4H H181 C4H:1H18 C4H H182 C4H:2H18 C4H H191 C4H:1H19 C4H H192 C4H:2H19 C4H H231 C4H:1H23 C4H H232 C4H:2H23 C4H H241 C4H:1H24 C4H H242 C4H:2H24 C4H H1C1 C4M:1H1C C4M H1C2 C4M:2H1C C4M H1C3 C4M:3H1C C4M H6C1 C4M:1H6C C4M H6C2 C4M:2H6C C4M H6C3 C4M:3H6C C4M H9C1 C4M:1H9C C4M H9C2 C4M:2H9C C4M H9C3 C4M:3H9C C4M H111 C4M:1H11 C4M H112 C4M:2H11 C4M H113 C4M:3H11 C4M H161 C4M:1H16 C4M H162 C4M:2H16 C4M H201 C4M:1H20 C4M H202 C4M:2H20 C4M H211 C4M:1H21 C4M H212 C4M:2H21 C4M H21 C4P:1H2 C4P H22 C4P:2H2 C4P H31 C4P:1H3 C4P H32 C4P:2H3 C4P H51A C4P:1H5 C4P H52A C4P:2H5 C4P H61 C4P:1H6 C4P H62 C4P:2H6 C4P H581 C4P:1H58 C4P H582 C4P:2H58 C4P H11 C4P:1H1 C4P H12 C4P:2H1 C4P H471 C4P:1H47 C4P H472 C4P:2H47 C4P H51 C4X:1H5 C4X H52 C4X:2H5 C4X H1'1 C4X:1H1' C4X H1'2 C4X:2H1' C4X H2'1 C4X:1H2' C4X H2'2 C4X:2H2' C4X H4'1 C4X:1H4' C4X H4'2 C4X:2H4' C4X H6C1 C53:1H6C C53 H3N1 C53:1H3N C53 HN1 C5A:1HN C5A HN2 C5A:2HN C5A HB11 C5A:1HB1 C5A HB12 C5A:2HB1 C5A HB21 C5A:1HB2 C5A HB22 C5A:2HB2 C5A HG21 C5A:1HG2 C5A HG22 C5A:2HG2 C5A HN1 C5B:1HN C5B HN2 C5B:2HN C5B HB11 C5B:1HB1 C5B HB12 C5B:2HB1 C5B HB21 C5B:1HB2 C5B HB22 C5B:2HB2 C5B HG21 C5B:1HG2 C5B HG22 C5B:2HG2 C5B H C5C:1HN C5C H2 C5C:2HN C5C HB2 C5C:1HB C5C HB3 C5C:2HB C5C H21 C5C:1H2 C5C H22 C5C:2H2 C5C H31 C5C:1H3 C5C H32 C5C:2H3 C5C H41 C5C:1H4 C5C H42 C5C:2H4 C5C H51 C5C:1H5 C5C H52 C5C:2H5 C5C H41 C5G:1H4 C5G H42 C5G:2H4 C5G H1D C5G: H1* C5G H2D C5G: H2* C5G HO'2 C5G:2HO* C5G H3D C5G: H3* C5G H4D C5G: H4* C5G H5'1 C5G:1H5* C5G H5'2 C5G:2H5* C5G HOD C5G:2HO' C5G HO'3 C5G:3HO' C5G HO'4 C5G:4HO' C5G H6'1 C5G:1H6' C5G H6'2 C5G:2H6' C5G HO'6 C5G:6HO' C5G H1C1 C5M:1H1C C5M H1C2 C5M:2H1C C5M H1C3 C5M:3H1C C5M H6C1 C5M:1H6C C5M H6C2 C5M:2H6C C5M H6C3 C5M:3H6C C5M H9C1 C5M:1H9C C5M H9C2 C5M:2H9C C5M H9C3 C5M:3H9C C5M H111 C5M:1H11 C5M H112 C5M:2H11 C5M H113 C5M:3H11 C5M H161 C5M:1H16 C5M H162 C5M:2H16 C5M H201 C5M:1H20 C5M H202 C5M:2H20 C5M H281 C5M:1H28 C5M H282 C5M:2H28 C5M HOP3 C5P:3HOP C5P HOP2 C5P:2HOP C5P H5'1 C5P:1H5* C5P H5'2 C5P:2H5* C5P H4' C5P: H4* C5P H3' C5P: H3* C5P HO3' C5P:*HO3 C5P H2'1 C5P:1H2* C5P HO2' C5P:*HO2 C5P H1' C5P: H1* C5P HN41 C5P:1HN4 C5P HN42 C5P:2HN4 C5P H51 C5X:1H5 C5X H52 C5X:2H5 C5X H1'1 C5X:1H1' C5X H1'2 C5X:2H1' C5X H2'1 C5X:1H2' C5X H2'2 C5X:2H2' C5X H3'1 C5X:1H3' C5X H3'2 C5X:2H3' C5X H5'1 C5X:1H5' C5X H5'2 C5X:2H5' C5X HS21 C60:1HS2 C60 HS22 C60:2HS2 C60 HS23 C60:3HS2 C60 HS31 C60:1HS3 C60 HS32 C60:2HS3 C60 HS33 C60:3HS3 C60 HS41 C60:1HS4 C60 HS42 C60:2HS4 C60 HS43 C60:3HS4 C60 HNF1 C60:1HNF C60 HNF2 C60:2HNF C60 HBF1 C60:1HBF C60 HBF2 C60:2HBF C60 HBH1 C60:1HBH C60 HBH2 C60:2HBH C60 HNH1 C60:1HNH C60 HBC1 C60:1HBC C60 HBC2 C60:2HBC C60 H2C1 C60:1H2C C60 H2C2 C60:2H2C C60 H3C1 C60:1H3C C60 H3C2 C60:2H3C C60 H4C1 C60:1H4C C60 H4C2 C60:2H4C C60 H5C1 C60:1H5C C60 H5C2 C60:2H5C C60 H6C1 C60:1H6C C60 H6C2 C60:2H6C C60 HNV1 C60:1HNV C60 HNV2 C60:2HNV C60 H1V1 C60:1H1V C60 H1V2 C60:2H1V C60 H1V3 C60:3H1V C60 H2V1 C60:1H2V C60 H2V2 C60:2H2V C60 H2V3 C60:3H2V C60 H1T1 C60:1H1T C60 H1T2 C60:2H1T C60 H2T1 C60:1H2T C60 H2T2 C60:2H2T C60 H3T1 C60:1H3T C60 H3T2 C60:2H3T C60 H4T1 C60:1H4T C60 H4T2 C60:2H4T C60 H4T3 C60:3H4T C60 H2C1 C61:1H2C C61 H2C2 C61:2H2C C61 H2C3 C61:3H2C C61 H4C1 C61:1H4C C61 H4C2 C61:2H4C C61 H5C1 C61:1H5C C61 H5C2 C61:2H5C C61 H6C1 C61:1H6C C61 H6C2 C61:2H6C C61 H9C1 C61:1H9C C61 H9C2 C61:2H9C C61 H9C3 C61:3H9C C61 H161 C61:1H16 C61 H162 C61:2H16 C61 H211 C61:1H21 C61 H212 C61:2H21 C61 H191 C61:1H19 C61 H192 C61:2H19 C61 H193 C61:3H19 C61 H201 C61:1H20 C61 H202 C61:2H20 C61 H203 C61:3H20 C61 H231 C61:1H23 C61 H232 C61:2H23 C61 H261 C61:1H26 C61 H262 C61:2H26 C61 H281 C61:1H28 C61 H282 C61:2H28 C61 H283 C61:3H28 C61 H321 C61:1H32 C61 H322 C61:2H32 C61 H331 C61:1H33 C61 H332 C61:2H33 C61 H341 C61:1H34 C61 H342 C61:2H34 C61 H351 C61:1H35 C61 H352 C61:2H35 C61 H353 C61:3H35 C61 H6N1 C62:1H6N C62 H6N2 C62:2H6N C62 H6C1 C62:1H6C C62 H8'1 C66:1H8' C66 H8'2 C66:2H8' C66 H5'1 C66:1H5' C66 H3'1 C66:1H3' C66 H3'2 C66:2H3' C66 H2'1 C66:1H2' C66 H2'2 C66:2H2' C66 H1'1 C66:1H1' C66 H1'2 C66:2H1' C66 HN41 C66:1HN4 C66 HN42 C66:2HN4 C66 HB1 C66:1HB C66 HB2 C66:2HB C66 HG1 C66:1HG C66 HG2 C66:2HG C66 HD1 C66:1HD C66 HD2 C66:2HD C66 HE1 C66:1HE C66 HE2 C66:2HE C66 HZ1 C66:1HZ C66 HZ2 C66:2HZ C66 H C6C:1HN C6C H2 C6C:2HN C6C HB2 C6C:1HB C6C HB3 C6C:2HB C6C H21 C6C:1H2 C6C H22 C6C:2H2 C6C H31 C6C:1H3 C6C H32 C6C:2H3 C6C H41 C6C:1H4 C6C H42 C6C:2H4 C6C H51 C6C:1H5 C6C H52 C6C:2H5 C6C H61 C6C:1H6 C6C H62 C6C:2H6 C6C H5M1 C6P:1H5M C6P H5M2 C6P:2H5M C6P H2A1 C6P:1H2A C6P H2A2 C6P:2H2A C6P H2A3 C6P:3H2A C6P H4A1 C6P:1H4A C6P H4A2 C6P:2H4A C6P HB1 C6P:1HB C6P HB2 C6P:2HB C6P H21 C71:1H2 C71 H22A C71:2H2 C71 H61 C71:1H6 C71 H62 C71:2H6 C71 H63 C71:3H6 C71 H171 C71:1H17 C71 H172 C71:2H17 C71 H181 C71:1H18 C71 H182 C71:2H18 C71 H201 C71:1H20 C71 H202 C71:2H20 C71 H211 C71:1H21 C71 H212 C71:2H21 C71 H271 C71:1H27 C71 H272 C71:2H27 C71 H281 C71:1H28 C71 H282 C71:2H28 C71 H291 C71:1H29 C71 H292 C71:2H29 C71 H301 C71:1H30 C71 H302 C71:2H30 C71 H311 C71:1H31 C71 H312 C71:2H31 C71 H313 C71:3H31 C71 H341 C71:1H34 C71 H342 C71:2H34 C71 H161 C71:1H16 C71 H162 C71:2H16 C71 H611 C75:1H61 C75 H612 C75:2H61 C75 H613 C75:3H61 C75 HN11 C78:1HN1 C78 HN12 C78:2HN1 C78 HC31 C78:1HC3 C78 HC41 C78:1HC4 C78 HC51 C78:1HC5 C78 HC61 C78:1HC6 C78 HC81 C78:1HC8 C78 HC82 C78:2HC8 C78 H121 C78:1H12 C78 H131 C78:1H13 C78 H141 C78:1H14 C78 H142 C78:2H14 C78 H161 C78:1H16 C78 H171 C78:1H17 C78 H181 C78:1H18 C78 H191 C78:1H19 C78 H251 C78:1H25 C78 H271 C78:1H27 C78 H281 C78:1H28 C78 H301 C78:1H30 C78 H302 C78:2H30 C78 H311 C78:1H31 C78 H312 C78:2H31 C78 H321 C78:1H32 C78 H322 C78:2H32 C78 H331 C78:1H33 C78 H332 C78:2H33 C78 H341 C78:1H34 C78 H342 C78:2H34 C78 H371 C78:1H37 C78 H381 C78:1H38 C78 H391 C78:1H39 C78 H392 C78:2H39 C78 H401 C78:1H40 C78 H402 C78:2H40 C78 H411 C78:1H41 C78 H412 C78:2H41 C78 H421 C78:1H42 C78 H422 C78:2H42 C78 H431 C78:1H43 C78 H451 C78:1H45 C78 H452 C78:2H45 C78 H7C1 C80:1H7C C80 H7C2 C80:2H7C C80 H201 C80:1H20 C80 H202 C80:2H20 C80 H221 C80:1H22 C80 H222 C80:2H22 C80 H223 C80:3H22 C80 H231 C80:1H23 C80 H232 C80:2H23 C80 H251 C80:1H25 C80 H252 C80:2H25 C80 H281 C80:1H28 C80 H282 C80:2H28 C80 H301 C80:1H30 C80 H302 C80:2H30 C80 H303 C80:3H30 C80 H341 C80:1H34 C80 H342 C80:2H34 C80 H351 C80:1H35 C80 H352 C80:2H35 C80 H361 C80:1H36 C80 H362 C80:2H36 C80 H371 C80:1H37 C80 H372 C80:2H37 C80 H373 C80:3H37 C80 H6N1 C85:1H6N C85 H6N2 C85:2H6N C85 H3N1 C85:1H3N C85 H3N2 C85:2H3N C85 H11 C8E:1H1 C8E H12 C8E:2H1 C8E H13 C8E:3H1 C8E H21 C8E:1H2 C8E H22 C8E:2H2 C8E H31 C8E:1H3 C8E H32 C8E:2H3 C8E H41 C8E:1H4 C8E H42 C8E:2H4 C8E H51 C8E:1H5 C8E H52 C8E:2H5 C8E H61 C8E:1H6 C8E H62 C8E:2H6 C8E H71 C8E:1H7 C8E H72 C8E:2H7 C8E H81 C8E:1H8 C8E H82 C8E:2H8 C8E H101 C8E:1H10 C8E H102 C8E:2H10 C8E H111 C8E:1H11 C8E H112 C8E:2H11 C8E H131 C8E:1H13 C8E H132 C8E:2H13 C8E H141 C8E:1H14 C8E H142 C8E:2H14 C8E H161 C8E:1H16 C8E H162 C8E:2H16 C8E H171 C8E:1H17 C8E H172 C8E:2H17 C8E H191 C8E:1H19 C8E H192 C8E:2H19 C8E H201 C8E:1H20 C8E H202 C8E:2H20 C8E H6N1 C94:1H6N C94 H6N2 C94:2H6N C94 H3N1 C94:1H3N C94 H3N2 C94:2H3N C94 H3N1 C95:1H3N C95 H3N2 C95:2H3N C95 H6N1 C96:1H6N C96 H6N2 C96:2H6N C96 H201 C96:1H20 C96 H202 C96:2H20 C96 H203 C96:3H20 C96 H3N1 C96:1H3N C96 H3N2 C96:2H3N C96 HN11 C99:1HN1 C99 HN12 C99:2HN1 C99 HG11 C99:1HG1 C99 HG12 C99:2HG1 C99 HG13 C99:3HG1 C99 HA31 C99:1HA3 C99 HA32 C99:2HA3 C99 HX51 CA1:1HX5 CA1 HX52 CA1:2HX5 CA1 H2C1 CA2:1H2C CA2 H2C2 CA2:2H2C CA2 H6C1 CA2:1H6C CA2 H6C2 CA2:2H6C CA2 H8C1 CA2:1H8C CA2 H8C2 CA2:2H8C CA2 H9C1 CA2:1H9C CA2 H9C2 CA2:2H9C CA2 H101 CA2:1H10 CA2 H102 CA2:2H10 CA2 H61 CA3:1H6 CA3 H62 CA3:2H6 CA3 HO'2 CA3:2HO' CA3 H5'1 CA3:1H5' CA3 H5'2 CA3:2H5' CA3 HP91 CA3:1HP9 CA3 HP92 CA3:2HP9 CA3 HPA1 CA3:1HPA CA3 HPA2 CA3:2HPA CA3 HPA3 CA3:3HPA CA3 HPB1 CA3:1HPB CA3 HPB2 CA3:2HPB CA3 HPB3 CA3:3HPB CA3 HP51 CA3:1HP5 CA3 HP52 CA3:2HP5 CA3 HP41 CA3:1HP4 CA3 HP42 CA3:2HP4 CA3 HP21 CA3:1HP2 CA3 HP22 CA3:2HP2 CA3 HP11 CA3:1HP1 CA3 HP12 CA3:2HP1 CA3 HT21 CA3:1HT2 CA3 HT22 CA3:2HT2 CA3 HT10 CA3:0HT1 CA3 HNT6 CA3:6HNT CA3 HA11 CA3:1HA1 CA3 HA12 CA3:2HA1 CA3 HT11 CA3:1HT1 CA3 HT12 CA3:2HT1 CA3 HA31 CA3:1HA3 CA3 HA32 CA3:2HA3 CA3 HA41 CA3:1HA4 CA3 HA42 CA3:2HA4 CA3 HA51 CA3:1HA5 CA3 HA52 CA3:2HA5 CA3 H111 CA4:1H11 CA4 H112 CA4:2H11 CA4 H121 CA4:1H12 CA4 H122 CA4:2H12 CA4 H191 CA4:1H19 CA4 H192 CA4:2H19 CA4 H193 CA4:3H19 CA4 H221 CA4:1H22 CA4 H222 CA4:2H22 CA4 H181 CA4:1H18 CA4 H182 CA4:2H18 CA4 H183 CA4:3H18 CA4 H151 CA4:1H15 CA4 H152 CA4:2H15 CA4 H161 CA4:1H16 CA4 H162 CA4:2H16 CA4 H211 CA4:1H21 CA4 H212 CA4:2H21 CA4 H213 CA4:3H21 CA4 H241 CA4:1H24 CA4 H242 CA4:2H24 CA4 H243 CA4:3H24 CA4 HN61 CA5:1HN6 CA5 HN62 CA5:2HN6 CA5 HO'2 CA5:2HO' CA5 H5'1 CA5:1H5' CA5 H5'2 CA5:2H5' CA5 HP91 CA5:1HP9 CA5 HP92 CA5:2HP9 CA5 HCA1 CA5:1HCA CA5 HCA2 CA5:2HCA CA5 HCA3 CA5:3HCA CA5 HCB1 CA5:1HCB CA5 HCB2 CA5:2HCB CA5 HCB3 CA5:3HCB CA5 HP51 CA5:1HP5 CA5 HP52 CA5:2HP5 CA5 HP41 CA5:1HP4 CA5 HP42 CA5:2HP4 CA5 HP21 CA5:1HP2 CA5 HP22 CA5:2HP2 CA5 HP11 CA5:1HP1 CA5 HP12 CA5:2HP1 CA5 HT21 CA5:1HT2 CA5 HT22 CA5:2HT2 CA5 HT10 CA5:0HT1 CA5 HNT6 CA5:6HNT CA5 HA11 CA5:1HA1 CA5 HA12 CA5:2HA1 CA5 HT11 CA5:1HT1 CA5 HT12 CA5:2HT1 CA5 H2A CAA: AH2 CAA H61A CAA:AH61 CAA H62A CAA:AH62 CAA H8A CAA: AH8 CAA H1B CAA:AH1* CAA H2B CAA:AH2* CAA HO2A CAA:AHO2 CAA H3B CAA:AH3* CAA HOA8 CAA:8HOA CAA HOA9 CAA:9HOA CAA H4B CAA:AH4* CAA H51A CAA:AH51 CAA H52A CAA:AH52 CAA HOA2 CAA:2HOA CAA HOA5 CAA:5HOA CAA H121 CAA:1H12 CAA H122 CAA:2H12 CAA H131 CAA:1H13 CAA H132 CAA:2H13 CAA H133 CAA:3H13 CAA H141 CAA:1H14 CAA H142 CAA:2H14 CAA H143 CAA:3H14 CAA H71 CAA:1H7 CAA H72 CAA:2H7 CAA H61 CAA:1H6 CAA H62 CAA:2H6 CAA H31 CAA:1H3 CAA H32 CAA:2H3 CAA H21 CAA:1H2 CAA H22 CAA:2H2 CAA H2'1 CAA:1H2' CAA H2'2 CAA:2H2' CAA H4'1 CAA:1H4' CAA H4'2 CAA:2H4' CAA H4'3 CAA:3H4' CAA H21 CAB:1H2 CAB H22 CAB:2H2 CAB H31 CAB:1H3 CAB H32 CAB:2H3 CAB HN41 CAB:1HN4 CAB HN42 CAB:2HN4 CAB H11 CAC:1H1 CAC H12 CAC:2H1 CAC H13 CAC:3H1 CAC H21 CAC:1H2 CAC H22 CAC:2H2 CAC H23 CAC:3H2 CAC H11 CAD:1H1 CAD H12 CAD:2H1 CAD H13 CAD:3H1 CAD H21 CAD:1H2 CAD H22 CAD:2H2 CAD H23 CAD:3H2 CAD H21 CAE:1H2 CAE H22 CAE:2H2 CAE H31 CAE:1H3 CAE H32 CAE:2H3 CAE H51 CAE:1H5 CAE H52 CAE:2H5 CAE H61 CAE:1H6 CAE H62 CAE:2H6 CAE H81 CAE:1H8 CAE H82 CAE:2H8 CAE H83 CAE:3H8 CAE H91 CAE:1H9 CAE H92 CAE:2H9 CAE H93 CAE:3H9 CAE H101 CAE:1H10 CAE H102 CAE:2H10 CAE H103 CAE:3H10 CAE H CAF:1HN CAF H2 CAF:2HN CAF HB2 CAF:1HB CAF HB3 CAF:2HB CAF HE11 CAF:1HE1 CAF HE12 CAF:2HE1 CAF HE13 CAF:3HE1 CAF HE21 CAF:1HE2 CAF HE22 CAF:2HE2 CAF HE23 CAF:3HE2 CAF HOG2 CAG:2HOG CAG HOB2 CAG:2HOB CAG HOA2 CAG:2HOA CAG H5'1 CAG:1H5* CAG H5'2 CAG:2H5* CAG H4B CAG: H4* CAG H3B CAG: H3* CAG H2' CAG: H2* CAG H1' CAG: H1* CAG H21 CAG:1H2 CAG H22 CAG:2H2 CAG HCM1 CAG:1HCM CAG HCM2 CAG:2HCM CAG HCM3 CAG:3HCM CAG H31 CAH:1H3 CAH H32 CAH:2H3 CAH H61 CAH:1H6 CAH H62 CAH:2H6 CAH H81 CAH:1H8 CAH H82 CAH:2H8 CAH H83 CAH:3H8 CAH H91 CAH:1H9 CAH H92 CAH:2H9 CAH H93 CAH:3H9 CAH H101 CAH:1H10 CAH H102 CAH:2H10 CAH H103 CAH:3H10 CAH H201 CAI:1H20 CAI H202 CAI:2H20 CAI H21A CAI:1H2 CAI H22 CAI:2H2 CAI H71 CAI:1H7 CAI H72 CAI:2H7 CAI H141 CAI:1H14 CAI H142 CAI:2H14 CAI H161 CAI:1H16 CAI H162 CAI:2H16 CAI H163 CAI:3H16 CAI H221 CAI:1H22 CAI H222 CAI:2H22 CAI H223 CAI:3H22 CAI H6A1 CAI:1H6A CAI H6A2 CAI:2H6A CAI H6A3 CAI:3H6A CAI H7A1 CAI:1H7A CAI H7A2 CAI:2H7A CAI H7A3 CAI:3H7A CAI H2B1 CAI:1H2B CAI H2B2 CAI:2H2B CAI H6B1 CAI:1H6B CAI H6B2 CAI:2H6B CAI H6B3 CAI:3H6B CAI H7B1 CAI:1H7B CAI H7B2 CAI:2H7B CAI H7B3 CAI:3H7B CAI H2C1 CAI:1H2C CAI H2C2 CAI:2H2C CAI H4C1 CAI:1H4C CAI H4C2 CAI:2H4C CAI H4C3 CAI:3H4C CAI H5C1 CAI:1H5C CAI H5C2 CAI:2H5C CAI H5C3 CAI:3H5C CAI H181 CAI:1H18 CAI H182 CAI:2H18 CAI H183 CAI:3H18 CAI H191 CAI:1H19 CAI H192 CAI:2H19 CAI H193 CAI:3H19 CAI H8A1 CAI:1H8A CAI H8A2 CAI:2H8A CAI H8A3 CAI:3H8A CAI HAK1 CAK:1HAK CAK HAK2 CAK:2HAK CAK HAE1 CAK:1HAE CAK HAE2 CAK:2HAE CAK H CAL:1HN CAL H2 CAL:2HN CAL HB2 CAL:1HB CAL HB3 CAL:2HB CAL HD12 CAL:1HD1 CAL HD13 CAL:2HD1 CAL HD23 CAL:1HD2 CAL HD22 CAL:2HD2 CAL HE12 CAL:1HE1 CAL HE13 CAL:2HE1 CAL HE23 CAL:1HE2 CAL HE22 CAL:2HE2 CAL HZ2 CAL:1HZ CAL HZ3 CAL:2HZ CAL HM1 CAL:1HM CAL HM2 CAL:2HM CAL HB21 CAL:1HB2 CAL HB22 CAL:2HB2 CAL HD31 CAL:1HD3 CAL HD32 CAL:2HD3 CAL HD33 CAL:3HD3 CAL HD41 CAL:1HD4 CAL HD42 CAL:2HD4 CAL HD43 CAL:3HD4 CAL H31 CAM:1H3 CAM H32 CAM:2H3 CAM H51 CAM:1H5 CAM H52 CAM:2H5 CAM H61 CAM:1H6 CAM H62 CAM:2H6 CAM H81 CAM:1H8 CAM H82 CAM:2H8 CAM H83 CAM:3H8 CAM H91 CAM:1H9 CAM H92 CAM:2H9 CAM H93 CAM:3H9 CAM H101 CAM:1H10 CAM H102 CAM:2H10 CAM H103 CAM:3H10 CAM HN1 CAN:1HN CAN HN2 CAN:2HN CAN HB1 CAN:1HB CAN HB2 CAN:2HB CAN HG1 CAN:1HG CAN HG2 CAN:2HG CAN HNZ1 CAN:1HNZ CAN HNZ2 CAN:2HNZ CAN H2A CAO: AH2 CAO H61A CAO:AH61 CAO H62A CAO:AH62 CAO H8A CAO: AH8 CAO H1B CAO:AH1* CAO H2B CAO:AH2* CAO HO2A CAO:AHO2 CAO H3B CAO:AH3* CAO HOA8 CAO:8HOA CAO HOA9 CAO:9HOA CAO H4B CAO:AH4* CAO H51A CAO:AH51 CAO H52A CAO:AH52 CAO HOA2 CAO:2HOA CAO HOA5 CAO:5HOA CAO H121 CAO:1H12 CAO H122 CAO:2H12 CAO H131 CAO:1H13 CAO H132 CAO:2H13 CAO H133 CAO:3H13 CAO H141 CAO:1H14 CAO H142 CAO:2H14 CAO H143 CAO:3H14 CAO H71 CAO:1H7 CAO H72 CAO:2H7 CAO H61 CAO:1H6 CAO H62 CAO:2H6 CAO H31 CAO:1H3 CAO H32 CAO:2H3 CAO H21 CAO:1H2 CAO H22 CAO:2H2 CAO HOS1 CAO:1HOS CAO H11 CAP:1H1 CAP H12 CAP:2H1 CAP H51 CAP:1H5 CAP H52 CAP:2H5 CAP HOP2 CAP:2HOP CAP HOP3 CAP:3HOP CAP HOP5 CAP:5HOP CAP HOP6 CAP:6HOP CAP HOP2 CAR:2HOP CAR HOP3 CAR:3HOP CAR H5' CAR:1H5* CAR H5'' CAR:2H5* CAR H4' CAR: H4* CAR H3' CAR: H3* CAR HO3' CAR:H3T CAR H2' CAR: H2* CAR HO2' CAR:2HO* CAR H1' CAR: H1* CAR HN41 CAR:1HN4 CAR HN42 CAR:2HN4 CAR H CAS:1HN CAS H2 CAS:2HN CAS HB2 CAS:1HB CAS HB3 CAS:2HB CAS HE11 CAS:1HE1 CAS HE12 CAS:2HE1 CAS HE13 CAS:3HE1 CAS HE21 CAS:1HE2 CAS HE22 CAS:2HE2 CAS HE23 CAS:3HE2 CAS H11 CAT:1H1 CAT H12 CAT:2H1 CAT H21 CAT:1H2 CAT H22 CAT:2H2 CAT H31 CAT:1H3 CAT H32 CAT:2H3 CAT H41 CAT:1H4 CAT H42 CAT:2H4 CAT H51 CAT:1H5 CAT H52 CAT:2H5 CAT H61 CAT:1H6 CAT H62 CAT:2H6 CAT H71 CAT:1H7 CAT H72 CAT:2H7 CAT H81 CAT:1H8 CAT H82 CAT:2H8 CAT H91 CAT:1H9 CAT H92 CAT:2H9 CAT H101 CAT:1H10 CAT H102 CAT:2H10 CAT H111 CAT:1H11 CAT H112 CAT:2H11 CAT H121 CAT:1H12 CAT H122 CAT:2H12 CAT H123 CAT:3H12 CAT HA11 CAT:1HA1 CAT HA12 CAT:2HA1 CAT HA13 CAT:3HA1 CAT HB11 CAT:1HB1 CAT HB12 CAT:2HB1 CAT HB13 CAT:3HB1 CAT HC11 CAT:1HC1 CAT HC12 CAT:2HC1 CAT HC13 CAT:3HC1 CAT H CAV:1HN CAV H2 CAV:2HN CAV HB2 CAV:1HB CAV HB3 CAV:2HB CAV HD12 CAV:1HD1 CAV HD13 CAV:2HD1 CAV HD23 CAV:1HD2 CAV HD22 CAV:2HD2 CAV HE12 CAV:1HE1 CAV HE13 CAV:2HE1 CAV HE23 CAV:1HE2 CAV HE22 CAV:2HE2 CAV HZ2 CAV:1HZ CAV HZ3 CAV:2HZ CAV HA' CAV: HA* CAV HB' CAV: HB* CAV HG11 CAV:1HG1 CAV HG12 CAV:2HG1 CAV HG13 CAV:3HG1 CAV HG21 CAV:1HG2 CAV HG22 CAV:2HG2 CAV HG23 CAV:3HG2 CAV HOB1 CAV:1HOB CAV H91 CAX:1H9 CAX H92 CAX:2H9 CAX H81 CAX:1H8 CAX H82 CAX:2H8 CAX H83 CAX:3H8 CAX H71 CAX:1H7 CAX H72 CAX:2H7 CAX H73 CAX:3H7 CAX H61 CAX:1H6 CAX H62 CAX:2H6 CAX H63 CAX:3H6 CAX H51 CAX:1H5 CAX H52 CAX:2H5 CAX HN1 CAY:1HN CAY HN2 CAY:2HN CAY HB1 CAY:1HB CAY HB2 CAY:2HB CAY HG1 CAY:1HG CAY HG2 CAY:2HG CAY HC21 CAZ:1HC2 CAZ HC22 CAZ:2HC2 CAZ HC31 CAZ:1HC3 CAZ HC32 CAZ:2HC3 CAZ H4AO CAZ:OH4A CAZ H10N CAZ:NH10 CAZ H15C CAZ:CH15 CAZ H181 CAZ:1H18 CAZ H182 CAZ:2H18 CAZ H191 CAZ:1H19 CAZ H192 CAZ:2H19 CAZ H193 CAZ:3H19 CAZ H201 CAZ:1H20 CAZ H202 CAZ:2H20 CAZ H203 CAZ:3H20 CAZ H2AO CAZ:OH2A CAZ H1 CB1:1H CB1 H41 CB1:1H4 CB1 HN11 CB1:1HN1 CB1 HN12 CB1:2HN1 CB1 H71 CB1:1H7 CB1 H72 CB1:2H7 CB1 H91 CB1:1H9 CB1 H92 CB1:2H9 CB1 HO3' CB2:H3T CB2 H3' CB2: H3* CB2 H2' CB2:1H2* CB2 HO2' CB2:2HO* CB2 H1' CB2: H1* CB2 H4' CB2: H4* CB2 H5' CB2:1H5* CB2 H5'' CB2:2H5* CB2 HN41 CB2:1HN4 CB2 HN42 CB2:2HN4 CB2 HN21 CB3:1HN2 CB3 HN22 CB3:2HN2 CB3 H91 CB3:1H9 CB3 H92 CB3:2H9 CB3 HB1 CB3:1HB CB3 HB2 CB3:2HB CB3 HG1 CB3:1HG CB3 HG2 CB3:2HG CB3 HOE2 CB3:2HOE CB3 HP11 CB3:1HP1 CB3 HP12 CB3:2HP1 CB3 HB1O CB4:OHB1 CB4 HB2O CB4:OHB2 CB4 HC71 CB4:1HC7 CB4 HC72 CB4:2HC7 CB4 H10N CB4:NH10 CB4 H15C CB4:CH15 CB4 H181 CB4:1H18 CB4 H182 CB4:2H18 CB4 H191 CB4:1H19 CB4 H192 CB4:2H19 CB4 H193 CB4:3H19 CB4 H201 CB4:1H20 CB4 H202 CB4:2H20 CB4 H203 CB4:3H20 CB4 H2BO CB4:OH2B CB4 H2A1 CBA:1H2A CBA H2A2 CBA:2H2A CBA H2A3 CBA:3H2A CBA H4A1 CBA:1H4A CBA H4A2 CBA:2H4A CBA H5A1 CBA:1H5A CBA H5A2 CBA:2H5A CBA HOP2 CBA:2HOP CBA HOP3 CBA:3HOP CBA HOD2 CBA:2HOD CBA H101 CBB:1H10 CBB H102 CBB:2H10 CBB H161 CBB:1H16 CBB H118 CBB:18H1 CBB H201 CBB:1H20 CBB H202 CBB:2H20 CBB H331 CBB:1H33 CBB H332 CBB:2H33 CBB H334 CBB:34H3 CBB H371 CBB:1H37 CBB H381 CBB:1H38 CBB H391 CBB:1H39 CBB H411 CBB:1H41 CBB H412 CBB:2H41 CBB H431 CBB:1H43 CBB H432 CBB:2H43 CBB HOA3 CBD:3HOA CBD HN21 CBD:1HN2 CBD HN22 CBD:2HN2 CBD HOB3 CBD:3HOB CBD HOD3 CBD:3HOD CBD H11 CBE:1H1 CBE H12A CBE:2H1 CBE H13A CBE:3H1 CBE H51 CBE:1H5 CBE H52 CBE:2H5 CBE H61 CBE:1H6 CBE H62 CBE:2H6 CBE H61 CBF:1H6 CBF H62 CBF:2H6 CBF HN11 CBF:1HN1 CBF HN12 CBF:2HN1 CBF H11 CBG:1H1 CBG H21 CBG:1H2 CBG H22 CBG:2H2 CBG H31 CBG:1H3 CBG H32 CBG:2H3 CBG H33 CBG:3H3 CBG H151 CBH:1H15 CBH H152 CBH:2H15 CBH H161 CBH:1H16 CBH H162 CBH:2H16 CBH H171 CBH:1H17 CBH H172 CBH:2H17 CBH H191 CBH:1H19 CBH H192 CBH:2H19 CBH H201 CBH:1H20 CBH H102 CBH:2H10 CBH H211 CBH:1H21 CBH H212 CBH:2H21 CBH H221 CBH:1H22 CBH H222 CBH:2H22 CBH H61 CBI:1H6 CBI H62 CBI:2H6 CBI H6'1 CBI:1H6' CBI H6'2 CBI:2H6' CBI HO1' CBI:'HO1 CBI HO2' CBI:'HO2 CBI HO3' CBI:'HO3 CBI HO6' CBI:'HO6 CBI H71 CBL:1H7 CBL H72 CBL:2H7 CBL H81 CBL:1H8 CBL H82 CBL:2H8 CBL H91 CBL:1H9 CBL H92 CBL:2H9 CBL H121 CBL:1H12 CBL H122 CBL:2H12 CBL H131 CBL:1H13 CBL H132 CBL:2H13 CBL H151 CBL:1H15 CBL H152 CBL:2H15 CBL H161 CBL:1H16 CBL H162 CBL:2H16 CBL H21 CBM:1H2 CBM H22 CBM:2H2 CBM H23 CBM:3H2 CBM H71 CBN:1H7 CBN H72 CBN:2H7 CBN H73 CBN:3H7 CBN H81 CBN:1H8 CBN H82 CBN:2H8 CBN H83 CBN:3H8 CBN H121 CBN:1H12 CBN H122 CBN:2H12 CBN H123 CBN:3H12 CBN H251 CBN:1H25 CBN H252 CBN:2H25 CBN H301 CBN:1H30 CBN H302 CBN:2H30 CBN H303 CBN:3H30 CBN H341 CBN:1H34 CBN H342 CBN:2H34 CBN H343 CBN:3H34 CBN H61 CBN:1H6 CBN H62 CBN:2H6 CBN H63 CBN:3H6 CBN H11 CBO:1H1 CBO H12A CBO:2H1 CBO H21 CBO:1H2 CBO H22 CBO:2H2 CBO H61 CBO:1H6 CBO H62 CBO:2H6 CBO H71 CBO:1H7 CBO H72 CBO:2H7 CBO H151 CBO:1H15 CBO H152 CBO:2H15 CBO H161 CBO:1H16 CBO H162 CBO:2H16 CBO H191 CBO:1H19 CBO H192 CBO:2H19 CBO H193 CBO:3H19 CBO H201 CBO:1H20 CBO H202 CBO:2H20 CBO H221 CBO:1H22 CBO H222 CBO:2H22 CBO H231 CBO:1H23 CBO H232 CBO:2H23 CBO H241 CBO:1H24 CBO H242 CBO:2H24 CBO H243 CBO:3H24 CBO H251 CBO:1H25 CBO H252 CBO:2H25 CBO H253 CBO:3H25 CBO H261 CBO:1H26 CBO H262 CBO:2H26 CBO H263 CBO:3H26 CBO H271 CBO:1H27 CBO H272 CBO:2H27 CBO H273 CBO:3H27 CBO H281 CBO:1H28 CBO H282 CBO:2H28 CBO H283 CBO:3H28 CBO H301 CBO:1H30 CBO H302 CBO:2H30 CBO H311 CBO:1H31 CBO H312 CBO:2H31 CBO H341 CBO:1H34 CBO H342 CBO:2H34 CBO H343 CBO:3H34 CBO HO1I CBP:IHO1 CBP HN21 CBP:1HN2 CBP HC51 CBP:1HC5 CBP HC52 CBP:2HC5 CBP HC71 CBP:1HC7 CBP HC72 CBP:2HC7 CBP HC81 CBP:1HC8 CBP HC82 CBP:2HC8 CBP H101 CBP:1H10 CBP H102 CBP:2H10 CBP H111 CBP:1H11 CBP H112 CBP:2H11 CBP H161 CBP:1H16 CBP H171 CBP:1H17 CBP H191 CBP:1H19 CBP H201 CBP:1H20 CBP H231 CBP:1H23 CBP H241 CBP:1H24 CBP H261 CBP:1H26 CBP H271 CBP:1H27 CBP HOP2 CBR:2HOP CBR H41 CBR:1H4 CBR H42 CBR:2H4 CBR H2' CBR:1H2* CBR H2'' CBR:2H2* CBR H5' CBR:1H5* CBR H5'' CBR:2H5* CBR H4' CBR: H4* CBR H1' CBR: H1* CBR H3' CBR: H3* CBR HO3' CBR:H3T CBR HOP3 CBR:3HOP CBR H1A CBS: AH1 CBS H2A CBS: AH2 CBS H3A CBS: AH3 CBS H4A CBS: AH4 CBS H5A CBS: AH5 CBS H61A CBS:AH61 CBS H62A CBS:AH62 CBS H81A CBS:AH81 CBS H82A CBS:AH82 CBS H83A CBS:AH83 CBS HN2A CBS:AHN2 CBS HO3A CBS:AHO3 CBS HO4A CBS:AHO4 CBS HO6A CBS:AHO6 CBS H1B CBS: BH1 CBS H2B CBS: BH2 CBS H3B CBS: BH3 CBS H4B CBS: BH4 CBS H5B CBS: BH5 CBS H61B CBS:BH61 CBS H62B CBS:BH62 CBS H81B CBS:BH81 CBS H82B CBS:BH82 CBS H83B CBS:BH83 CBS HN2B CBS:BHN2 CBS HO1B CBS:BHO1 CBS HO3B CBS:BHO3 CBS HO6B CBS:BHO6 CBS H171 CBT:1H17 CBT H172 CBT:2H17 CBT H11 CBT:1H1 CBT H12 CBT:2H1 CBT H5'1 CBV:1H5* CBV H5'2 CBV:2H5* CBV H4' CBV: H4* CBV H3' CBV: H3* CBV HO3' CBV:HO3* CBV H2' CBV: H2* CBV HO2' CBV:HO2* CBV H1' CBV: H1* CBV HN41 CBV:1HN4 CBV HN42 CBV:2HN4 CBV H1'1 CBZ:1H1' CBZ H1'2 CBZ:2H1' CBZ HC11 CC0:1HC1 CC0 HN11 CC0:1HN1 CC0 HC01 CC0:1HC0 CC0 HN21 CC0:1HN2 CC0 HC41 CC0:1HC4 CC0 HC42 CC0:2HC4 CC0 HC61 CC0:1HC6 CC0 HC71 CC0:1HC7 CC0 HC91 CC0:1HC9 CC0 H111 CC0:1H11 CC0 H112 CC0:2H11 CC0 H113 CC0:3H11 CC0 H131 CC0:1H13 CC0 H132 CC0:2H13 CC0 H133 CC0:3H13 CC0 H151 CC0:1H15 CC0 H181 CC0:1H18 CC0 H191 CC0:1H19 CC0 H201 CC0:1H20 CC0 H202 CC0:2H20 CC0 H211 CC0:1H21 CC0 H221 CC0:1H22 CC0 H222 CC0:2H22 CC0 H231 CC0:1H23 CC0 H232 CC0:2H23 CC0 H241 CC0:1H24 CC0 H242 CC0:2H24 CC0 H251 CC0:1H25 CC0 H252 CC0:2H25 CC0 H261 CC0:1H26 CC0 H262 CC0:2H26 CC0 HN31 CC0:1HN3 CC0 HN32 CC0:2HN3 CC0 H281 CC0:1H28 CC0 H282 CC0:2H28 CC0 HC11 CC1:1HC1 CC1 HN11 CC1:1HN1 CC1 HCO1 CC1:1HCO CC1 HN21 CC1:1HN2 CC1 H131 CC1:1H13 CC1 H132 CC1:2H13 CC1 H133 CC1:3H13 CC1 HC41 CC1:1HC4 CC1 HC42 CC1:2HC4 CC1 HC61 CC1:1HC6 CC1 HR11 CC1:1HR1 CC1 HR31 CC1:1HR3 CC1 HR41 CC1:1HR4 CC1 HR51 CC1:1HR5 CC1 HC91 CC1:1HC9 CC1 HC71 CC1:1HC7 CC1 H111 CC1:1H11 CC1 H112 CC1:2H11 CC1 H301 CC1:1H30 CC1 H302 CC1:2H30 CC1 H281 CC1:1H28 CC1 H282 CC1:2H28 CC1 H311 CC1:1H31 CC1 H312 CC1:2H31 CC1 H181 CC1:1H18 CC1 H201 CC1:1H20 CC1 H202 CC1:2H20 CC1 H211 CC1:1H21 CC1 H221 CC1:1H22 CC1 H222 CC1:2H22 CC1 H231 CC1:1H23 CC1 H232 CC1:2H23 CC1 H241 CC1:1H24 CC1 H242 CC1:2H24 CC1 H251 CC1:1H25 CC1 H252 CC1:2H25 CC1 H261 CC1:1H26 CC1 H262 CC1:2H26 CC1 H151 CC1:1H15 CC1 HN31 CC1:1HN3 CC1 HN32 CC1:2HN3 CC1 H301 CC3:1H30 CC3 H302 CC3:2H30 CC3 H291 CC3:1H29 CC3 H292 CC3:2H29 CC3 H6N1 CC5:1H6N CC5 H6N2 CC5:2H6N CC5 H4'1 CC5:1H4' CC5 H4'2 CC5:2H4' CC5 H71 CCB:1H7 CCB H72 CCB:2H7 CCB H81 CCB:1H8 CCB H82 CCB:2H8 CCB H91 CCB:1H9 CCB H92 CCB:2H9 CCB H101 CCB:1H10 CCB H102 CCB:2H10 CCB H201 CCB:1H20 CCB H202 CCB:2H20 CCB H211 CCB:1H21 CCB H212 CCB:2H21 CCB H221 CCB:1H22 CCB H222 CCB:2H22 CCB HOC2 CCC:2HOC CCC HOP2 CCC:2HOP CCC HOP3 CCC:3HOP CCC H5' CCC:1H5* CCC H5'' CCC:2H5* CCC H4' CCC: H4* CCC H3' CCC: H3* CCC H2' CCC: H2* CCC H1' CCC: H1* CCC H41 CCC:1H4 CCC H42 CCC:2H4 CCC H61 CCD:1H6 CCD H62 CCD:2H6 CCD H63 CCD:3H6 CCD H41 CCD:1H4 CCD H42 CCD:2H4 CCD H31 CCD:1H3 CCD H32 CCD:2H3 CCD H21 CCD:1H2 CCD H22 CCD:2H2 CCD H91 CCD:1H9 CCD H92 CCD:2H9 CCD H93 CCD:3H9 CCD H101 CCD:1H10 CCD H102 CCD:2H10 CCD H103 CCD:3H10 CCD H81 CCD:1H8 CCD H82 CCD:2H8 CCD H83 CCD:3H8 CCD H2C1 CCE:1H2C CCE H2C2 CCE:2H2C CCE H3C1 CCE:1H3C CCE H3C2 CCE:2H3C CCE H8C1 CCE:1H8C CCE H8C2 CCE:2H8C CCE H8C3 CCE:3H8C CCE H9C1 CCE:1H9C CCE H9C2 CCE:2H9C CCE H9C3 CCE:3H9C CCE H101 CCE:1H10 CCE H102 CCE:2H10 CCE H103 CCE:3H10 CCE H6N1 CCE:1H6N CCE H6N2 CCE:2H6N CCE HN61 CCF:1HN6 CCF HN62 CCF:2HN6 CCF HC8A CCF:AHC8 CCF H1' CCF: H1* CCF H2' CCF: H2* CCF H3' CCF: H3* CCF H4' CCF: H4* CCF H5'1 CCF:1H5* CCF H5'2 CCF:2H5* CCF HOA2 CCF:2HOA CCF HOA5 CCF:5HOA CCF H121 CCF:1H12 CCF H122 CCF:2H12 CCF H131 CCF:1H13 CCF H132 CCF:2H13 CCF H133 CCF:3H13 CCF H141 CCF:1H14 CCF H142 CCF:2H14 CCF H143 CCF:3H14 CCF H71 CCF:1H7 CCF H72 CCF:2H7 CCF H61 CCF:1H6 CCF H62 CCF:2H6 CCF H31 CCF:1H3 CCF H32 CCF:2H3 CCF H21 CCF:1H2 CCF H22 CCF:2H2 CCF HBC1 CCG:1HBC CCG HBC2 CCG:2HBC CCG HBC3 CCG:3HBC CCG HCV1 CCG:1HCV CCG HCV2 CCG:2HCV CCG HCV3 CCG:3HCV CCG HCU1 CCG:1HCU CCG HCU2 CCG:2HCU CCG HCX1 CCG:1HCX CCG HCX2 CCG:2HCX CCG HCX3 CCG:3HCX CCG HCO1 CCG:1HCO CCG HCO2 CCG:2HCO CCG HBW1 CCG:1HBW CCG HBW2 CCG:2HBW CCG HCC1 CCG:1HCC CCG HCC2 CCG:2HCC CCG HCC3 CCG:3HCC CCG HBZ1 CCG:1HBZ CCG HBZ2 CCG:2HBZ CCG HCA1 CCG:1HCA CCG HCA2 CCG:2HCA CCG HCB1 CCG:1HCB CCG HCB2 CCG:2HCB CCG HCB3 CCG:3HCB CCG HAF1 CCG:1HAF CCG HAF2 CCG:2HAF CCG HAF3 CCG:3HAF CCG HAM1 CCG:1HAM CCG HAM2 CCG:2HAM CCG HAQ1 CCG:1HAQ CCG HAQ2 CCG:2HAQ CCG HAQ3 CCG:3HAQ CCG HBE1 CCG:1HBE CCG HBE2 CCG:2HBE CCG HBE3 CCG:3HBE CCG HBD1 CCG:1HBD CCG HBD2 CCG:2HBD CCG HBD3 CCG:3HBD CCG HBO1 CCG:1HBO CCG HBO2 CCG:2HBO CCG HBO3 CCG:3HBO CCG HBP1 CCG:1HBP CCG HBP2 CCG:2HBP CCG HBP3 CCG:3HBP CCG HAA1 CCH:1HAA CCH HAA2 CCH:2HAA CCH HMA1 CCH:1HMA CCH HMA2 CCH:2HMA CCH HMA3 CCH:3HMA CCH HBA1 CCH:1HBA CCH HBA2 CCH:2HBA CCH HO1A CCH:AHO1 CCH HMB1 CCH:1HMB CCH HMB2 CCH:2HMB CCH HMB3 CCH:3HMB CCH HMC1 CCH:1HMC CCH HMC2 CCH:2HMC CCH HMC3 CCH:3HMC CCH HBC1 CCH:1HBC CCH HBC2 CCH:2HBC CCH HMD1 CCH:1HMD CCH HMD2 CCH:2HMD CCH HMD3 CCH:3HMD CCH HAD1 CCH:1HAD CCH HAD2 CCH:2HAD CCH HBD1 CCH:1HBD CCH HBD2 CCH:2HBD CCH HO1D CCH:DHO1 CCH H6D1 CCI:1H6D CCI H6D2 CCI:2H6D CCI H6D3 CCI:3H6D CCI HOD2 CCI:2HOD CCI HOD4 CCI:4HOD CCI H7D1 CCI:1H7D CCI H7D2 CCI:2H7D CCI H7D3 CCI:3H7D CCI H8C1 CCI:1H8C CCI H8C2 CCI:2H8C CCI H8C3 CCI:3H8C CCI H9C1 CCI:1H9C CCI H9C2 CCI:2H9C CCI H9C3 CCI:3H9C CCI H7C1 CCI:1H7C CCI H7C2 CCI:2H7C CCI H7C3 CCI:3H7C CCI H2B1 CCI:1H2B CCI H2B2 CCI:2H2B CCI H6B1 CCI:1H6B CCI H6B2 CCI:2H6B CCI H6B3 CCI:3H6B CCI HOB3 CCI:3HOB CCI H6A1 CCI:1H6A CCI H6A2 CCI:2H6A CCI H6A3 CCI:3H6A CCI HOA3 CCI:3HOA CCI HAN1 CCI:1HAN CCI HAN2 CCI:2HAN CCI HAN3 CCI:3HAN CCI H2E1 CCI:1H2E CCI H2E2 CCI:2H2E CCI H5E1 CCI:1H5E CCI H5E2 CCI:2H5E CCI H6E1 CCI:1H6E CCI H6E2 CCI:2H6E CCI H6E3 CCI:3H6E CCI HNE2 CCI:2HNE CCI H7E1 CCI:1H7E CCI H7E2 CCI:2H7E CCI H8E1 CCI:1H8E CCI H8E2 CCI:2H8E CCI H8E3 CCI:3H8E CCI HAK1 CCL:1HAK CCL HAK2 CCL:2HAK CCL HAG1 CCL:1HAG CCL HAG2 CCL:2HAG CCL HAH1 CCL:1HAH CCL HAH2 CCL:2HAH CCL HAL1 CCL:1HAL CCL HAL2 CCL:2HAL CCL HAI1 CCL:1HAI CCL HAI2 CCL:2HAI CCL HAE1 CCL:1HAE CCL HAE2 CCL:2HAE CCL HAF1 CCL:1HAF CCL HAF2 CCL:2HAF CCL HB1 CCL:1HB CCL HB2 CCL:2HB CCL HN1 CCL:1HN CCL HN2 CCL:2HN CCL HH21 CCM:1HH2 CCM HH22 CCM:2HH2 CCM HH23 CCM:3HH2 CCM HB11 CCM:1HB1 CCM HB12 CCM:2HB1 CCM HB21 CCM:1HB2 CCM HB22 CCM:2HB2 CCM HG11 CCM:1HG1 CCM HG12 CCM:2HG1 CCM HG21 CCM:1HG2 CCM HG22 CCM:2HG2 CCM H21 CCN:1H2 CCN H22 CCN:2H2 CCN H23 CCN:3H2 CCN H1B1 CCO:1H1B CCO H1B2 CCO:2H1B CCO HOP2 CCP:2HOP CCP HOP3 CCP:3HOP CCP H11 CCP:1H1 CCP H12 CCP:2H1 CCP H21 CCP:1H2 CCP H22 CCP:2H2 CCP H31 CCP:1H3 CCP H32 CCP:2H3 CCP H41 CCP:1H4 CCP H42 CCP:2H4 CCP H43 CCP:3H4 CCP H21 CCQ:1H2 CCQ H22 CCQ:2H2 CCQ H41 CCQ:1H4 CCQ H42 CCQ:2H4 CCQ H5C1 CCQ:1H5C CCQ H5C2 CCQ:2H5C CCQ H5C3 CCQ:3H5C CCQ H5B1 CCQ:1H5B CCQ H5B2 CCQ:2H5B CCQ H5B3 CCQ:3H5B CCQ H5A1 CCQ:1H5A CCQ H5A2 CCQ:2H5A CCQ H5A3 CCQ:3H5A CCQ H11 CCQ:1H1 CCQ H12 CCQ:2H1 CCQ H31 CCQ:1H3 CCQ H32 CCQ:2H3 CCQ H61 CCQ:1H6 CCQ H62 CCQ:2H6 CCQ H71 CCQ:1H7 CCQ H72 CCQ:2H7 CCQ H131 CCQ:1H13 CCQ H132 CCQ:2H13 CCQ H133 CCQ:3H13 CCQ H141 CCQ:1H14 CCQ H142 CCQ:2H14 CCQ H143 CCQ:3H14 CCQ H121 CCQ:1H12 CCQ H122 CCQ:2H12 CCQ H5'1 CCQ:1H5* CCQ H5'2 CCQ:2H5* CCQ H4' CCQ: H4* CCQ H3' CCQ: H3* CCQ H2' CCQ: H2* CCQ H1' CCQ: H1* CCQ HN61 CCQ:1HN6 CCQ HN62 CCQ:2HN6 CCQ H521 CCR:1H52 CCR H531 CCR:1H53 CCR H551 CCR:1H55 CCR H561 CCR:1H56 CCR H581 CCR:1H58 CCR H582 CCR:2H58 CCR H591 CCR:1H59 CCR H441 CCR:1H44 CCR H442 CCR:2H44 CCR H411 CCR:1H41 CCR H401 CCR:1H40 CCR H611 CCR:1H61 CCR H612 CCR:2H61 CCR H621 CCR:1H62 CCR H622 CCR:2H62 CCR H631 CCR:1H63 CCR H632 CCR:2H63 CCR H641 CCR:1H64 CCR H642 CCR:2H64 CCR H651 CCR:1H65 CCR H652 CCR:2H65 CCR H231 CCR:1H23 CCR H151 CCR:1H15 CCR H171 CCR:1H17 CCR H172 CCR:2H17 CCR H173 CCR:3H17 CCR H181 CCR:1H18 CCR H182 CCR:2H18 CCR H183 CCR:3H18 CCR H101 CCR:1H10 CCR H102 CCR:2H10 CCR H103 CCR:3H10 CCR H191 CCR:1H19 CCR H192 CCR:2H19 CCR H193 CCR:3H19 CCR H301 CCR:1H30 CCR H311 CCR:1H31 CCR H312 CCR:2H31 CCR H341 CCR:1H34 CCR H CCS:1HN CCS H2 CCS:2HN CCS HB2 CCS:1HB CCS HB3 CCS:2HB CCS HD2 CCS:1HD CCS HD3 CCS:2HD CCS HZ2 CCS: HOZ CCS H251 CCT:1H25 CCT H252 CCT:2H25 CCT H253 CCT:3H25 CCT H43 CCV:3H4 CCV H42 CCV:2H4 CCV H41 CCV:1H4 CCV H112 CCV:2H11 CCV H111 CCV:1H11 CCV H132 CCV:2H13 CCV H131 CCV:1H13 CCV H142 CCV:2H14 CCV H141 CCV:1H14 CCV HA31 CCY:1HA3 CCY HA32 CCY:2HA3 CCY HN11 CCY:1HN1 CCY HN12 CCY:2HN1 CCY HB11 CCY:1HB1 CCY HB12 CCY:2HB1 CCY HB21 CCY:1HB2 CCY HB22 CCY:2HB2 CCY HO11 CD1:1HO1 CD1 HO12 CD1:2HO1 CD1 HO11 CD3:1HO1 CD3 HO12 CD3:2HO1 CD3 HO21 CD3:1HO2 CD3 HO22 CD3:2HO2 CD3 HO31 CD3:1HO3 CD3 HO32 CD3:2HO3 CD3 HO11 CD5:1HO1 CD5 HO12 CD5:2HO1 CD5 HO21 CD5:1HO2 CD5 HO22 CD5:2HO2 CD5 HO31 CD5:1HO3 CD5 HO32 CD5:2HO3 CD5 HO41 CD5:1HO4 CD5 HO42 CD5:2HO4 CD5 HO51 CD5:1HO5 CD5 HO52 CD5:2HO5 CD5 H121 CDA:1H12 CDA H122 CDA:2H12 CDA H291 CDA:1H29 CDA H292 CDA:2H29 CDA H293 CDA:3H29 CDA H331 CDA:1H33 CDA H332 CDA:2H33 CDA H391 CDA:1H39 CDA H392 CDA:2H39 CDA H121 CDB:1H12 CDB H122 CDB:2H12 CDB H291 CDB:1H29 CDB H292 CDB:2H29 CDB H293 CDB:3H29 CDB H331 CDB:1H33 CDB H332 CDB:2H33 CDB H391 CDB:1H39 CDB H392 CDB:2H39 CDB H11 CDB:1H1 CDB H12 CDB:2H1 CDB H13 CDB:3H1 CDB H41 CDC:1H4 CDC H42 CDC:2H4 CDC H1' CDC: H1* CDC H2' CDC: H2* CDC HO'2 CDC:2HO* CDC H3' CDC: H3* CDC H4' CDC: H4* CDC H5'1 CDC:1H5* CDC H5'2 CDC:2H5* CDC H141 CDC:1H14 CDC H142 CDC:2H14 CDC H151 CDC:1H15 CDC H152 CDC:2H15 CDC H161 CDC:1H16 CDC H162 CDC:2H16 CDC H163 CDC:3H16 CDC H171 CDC:1H17 CDC H172 CDC:2H17 CDC H173 CDC:3H17 CDC H181 CDC:1H18 CDC H182 CDC:2H18 CDC H183 CDC:3H18 CDC H121 CDD:1H12 CDD H122 CDD:2H12 CDD H241 CDD:1H24 CDD H242 CDD:2H24 CDD H291 CDD:1H29 CDD H292 CDD:2H29 CDD H CDE:1HN CDE H2 CDE:2HN CDE HG11 CDE:1HG1 CDE HG12 CDE:2HG1 CDE HG13 CDE:3HG1 CDE HG21 CDE:1HG2 CDE HG22 CDE:2HG2 CDE HG23 CDE:3HG2 CDE HC1 CDE:1H CDE HC2 CDE:2H CDE HC3 CDE:3H CDE H5'1 CDF:1H5* CDF H5'2 CDF:2H5* CDF H4' CDF: H4* CDF H3' CDF: H3* CDF H2' CDF: H2* CDF H1' CDF: H1* CDF H4N1 CDF:1H4N CDF H4N2 CDF:2H4N CDF H6C1 CDG:1H6C CDG H6C2 CDG:2H6C CDG H9C1 CDG:1H9C CDG H9C2 CDG:2H9C CDG H9C3 CDG:3H9C CDG H101 CDG:1H10 CDG H102 CDG:2H10 CDG H103 CDG:3H10 CDG H371 CDH:1H37 CDH H372 CDH:2H37 CDH H331 CDH:1H33 CDH H332 CDH:2H33 CDH H333 CDH:3H33 CDH H121 CDH:1H12 CDH H161 CDH:1H16 CDH H162 CDH:2H16 CDH H30N CDH:NH30 CDH H241 CDH:1H24 CDH H242 CDH:2H24 CDH H231 CDH:1H23 CDH H232 CDH:2H23 CDH H221 CDH:1H22 CDH H222 CDH:2H22 CDH H211 CDH:1H21 CDH H311 CDH:1H31 CDH H312 CDH:2H31 CDH HC41 CDI:1HC4 CDI HC42 CDI:2HC4 CDI HB2O CDI:OHB2 CDI HA1O CDI:OHA1 CDI HC11 CDI:1HC1 CDI HC12 CDI:2HC1 CDI HC51 CDI:1HC5 CDI HC52 CDI:2HC5 CDI HC53 CDI:3HC5 CDI H1O1 CDL:1H1O CDL HA22 CDL:2HA2 CDL HA21 CDL:1HA2 CDL HA32 CDL:2HA3 CDL HA31 CDL:1HA3 CDL H112 CDL:2H11 CDL H111 CDL:1H11 CDL H122 CDL:2H12 CDL H121 CDL:1H12 CDL H132 CDL:2H13 CDL H131 CDL:1H13 CDL H142 CDL:2H14 CDL H141 CDL:1H14 CDL H152 CDL:2H15 CDL H151 CDL:1H15 CDL H162 CDL:2H16 CDL H161 CDL:1H16 CDL H172 CDL:2H17 CDL H171 CDL:1H17 CDL H182 CDL:2H18 CDL H181 CDL:1H18 CDL H192 CDL:2H19 CDL H191 CDL:1H19 CDL H202 CDL:2H20 CDL H201 CDL:1H20 CDL H212 CDL:2H21 CDL H211 CDL:1H21 CDL H222 CDL:2H22 CDL H221 CDL:1H22 CDL H232 CDL:2H23 CDL H231 CDL:1H23 CDL H242 CDL:2H24 CDL H241 CDL:1H24 CDL H252 CDL:2H25 CDL H251 CDL:1H25 CDL H262 CDL:2H26 CDL H261 CDL:1H26 CDL H273 CDL:3H27 CDL H272 CDL:2H27 CDL H271 CDL:1H27 CDL HA62 CDL:2HA6 CDL HA61 CDL:1HA6 CDL H312 CDL:2H31 CDL H311 CDL:1H31 CDL H322 CDL:2H32 CDL H321 CDL:1H32 CDL H332 CDL:2H33 CDL H331 CDL:1H33 CDL H342 CDL:2H34 CDL H341 CDL:1H34 CDL H352 CDL:2H35 CDL H351 CDL:1H35 CDL H362 CDL:2H36 CDL H361 CDL:1H36 CDL H372 CDL:2H37 CDL H371 CDL:1H37 CDL H382 CDL:2H38 CDL H381 CDL:1H38 CDL H392 CDL:2H39 CDL H391 CDL:1H39 CDL H402 CDL:2H40 CDL H401 CDL:1H40 CDL H412 CDL:2H41 CDL H411 CDL:1H41 CDL H422 CDL:2H42 CDL H421 CDL:1H42 CDL H432 CDL:2H43 CDL H431 CDL:1H43 CDL H442 CDL:2H44 CDL H441 CDL:1H44 CDL H452 CDL:2H45 CDL H451 CDL:1H45 CDL H462 CDL:2H46 CDL H461 CDL:1H46 CDL H473 CDL:3H47 CDL H472 CDL:2H47 CDL H471 CDL:1H47 CDL HB22 CDL:2HB2 CDL HB21 CDL:1HB2 CDL HB32 CDL:2HB3 CDL HB31 CDL:1HB3 CDL H512 CDL:2H51 CDL H511 CDL:1H51 CDL H522 CDL:2H52 CDL H521 CDL:1H52 CDL H532 CDL:2H53 CDL H531 CDL:1H53 CDL H542 CDL:2H54 CDL H541 CDL:1H54 CDL H552 CDL:2H55 CDL H551 CDL:1H55 CDL H562 CDL:2H56 CDL H561 CDL:1H56 CDL H572 CDL:2H57 CDL H571 CDL:1H57 CDL H582 CDL:2H58 CDL H581 CDL:1H58 CDL H592 CDL:2H59 CDL H591 CDL:1H59 CDL H602 CDL:2H60 CDL H601 CDL:1H60 CDL H612 CDL:2H61 CDL H611 CDL:1H61 CDL H622 CDL:2H62 CDL H621 CDL:1H62 CDL H632 CDL:2H63 CDL H631 CDL:1H63 CDL H642 CDL:2H64 CDL H641 CDL:1H64 CDL H652 CDL:2H65 CDL H651 CDL:1H65 CDL H662 CDL:2H66 CDL H661 CDL:1H66 CDL H673 CDL:3H67 CDL H672 CDL:2H67 CDL H671 CDL:1H67 CDL HB62 CDL:2HB6 CDL HB61 CDL:1HB6 CDL H712 CDL:2H71 CDL H711 CDL:1H71 CDL H722 CDL:2H72 CDL H721 CDL:1H72 CDL H732 CDL:2H73 CDL H731 CDL:1H73 CDL H742 CDL:2H74 CDL H741 CDL:1H74 CDL H752 CDL:2H75 CDL H751 CDL:1H75 CDL H762 CDL:2H76 CDL H761 CDL:1H76 CDL H772 CDL:2H77 CDL H771 CDL:1H77 CDL H782 CDL:2H78 CDL H781 CDL:1H78 CDL H792 CDL:2H79 CDL H791 CDL:1H79 CDL H802 CDL:2H80 CDL H801 CDL:1H80 CDL H812 CDL:2H81 CDL H811 CDL:1H81 CDL H822 CDL:2H82 CDL H821 CDL:1H82 CDL H832 CDL:2H83 CDL H831 CDL:1H83 CDL H842 CDL:2H84 CDL H841 CDL:1H84 CDL H852 CDL:2H85 CDL H851 CDL:1H85 CDL H862 CDL:2H86 CDL H861 CDL:1H86 CDL H873 CDL:3H87 CDL H872 CDL:2H87 CDL H871 CDL:1H87 CDL H41 CDM:1H4 CDM H42 CDM:2H4 CDM H1' CDM: H1* CDM H2' CDM: H2* CDM HO'2 CDM:2HO* CDM H3' CDM: H3* CDM H4' CDM: H4* CDM H5'1 CDM:1H5* CDM H5'2 CDM:2H5* CDM H1M1 CDM:1H1M CDM H1M2 CDM:2H1M CDM H2M1 CDM:1H2M CDM H2M2 CDM:2H2M CDM H4M1 CDM:1H4M CDM H4M2 CDM:2H4M CDM H5M1 CDM:1H5M CDM H5M2 CDM:2H5M CDM H5M3 CDM:3H5M CDM HO11 CDN:1HO1 CDN HB31 CDN:1HB3 CDN HB21 CDN:1HB2 CDN HB22 CDN:2HB2 CDN HC11 CDN:1HC1 CDN HB32 CDN:2HB3 CDN HB33 CDN:3HB3 CDN HB41 CDN:1HB4 CDN HB61 CDN:1HB6 CDN HB62 CDN:2HB6 CDN HB91 CDN:1HB9 CDN HB71 CDN:1HB7 CDN H711 CDN:1H71 CDN H712 CDN:2H71 CDN H721 CDN:1H72 CDN H722 CDN:2H72 CDN H731 CDN:1H73 CDN H732 CDN:2H73 CDN H741 CDN:1H74 CDN H742 CDN:2H74 CDN H751 CDN:1H75 CDN H752 CDN:2H75 CDN H753 CDN:3H75 CDN HB7O CDN:OHB7 CDN HB51 CDN:1HB5 CDN H511 CDN:1H51 CDN H512 CDN:2H51 CDN H521 CDN:1H52 CDN H522 CDN:2H52 CDN H531 CDN:1H53 CDN H532 CDN:2H53 CDN H541 CDN:1H54 CDN H542 CDN:2H54 CDN H551 CDN:1H55 CDN H552 CDN:2H55 CDN H561 CDN:1H56 CDN H562 CDN:2H56 CDN H571 CDN:1H57 CDN H572 CDN:2H57 CDN H581 CDN:1H58 CDN H582 CDN:2H58 CDN H591 CDN:1H59 CDN H592 CDN:2H59 CDN H601 CDN:1H60 CDN H602 CDN:2H60 CDN H611 CDN:1H61 CDN H612 CDN:2H61 CDN H621 CDN:1H62 CDN H622 CDN:2H62 CDN H631 CDN:1H63 CDN H632 CDN:2H63 CDN H641 CDN:1H64 CDN H642 CDN:2H64 CDN H643 CDN:3H64 CDN HA3O CDN:OHA3 CDN HA21 CDN:1HA2 CDN HA22 CDN:2HA2 CDN HA31 CDN:1HA3 CDN HA32 CDN:2HA3 CDN HA41 CDN:1HA4 CDN HA61 CDN:1HA6 CDN HA62 CDN:2HA6 CDN HA91 CDN:1HA9 CDN HA71 CDN:1HA7 CDN H311 CDN:1H31 CDN H312 CDN:2H31 CDN H321 CDN:1H32 CDN H322 CDN:2H32 CDN H331 CDN:1H33 CDN H332 CDN:2H33 CDN H341 CDN:1H34 CDN H342 CDN:2H34 CDN H351 CDN:1H35 CDN H352 CDN:2H35 CDN H361 CDN:1H36 CDN H362 CDN:2H36 CDN H371 CDN:1H37 CDN H372 CDN:2H37 CDN H381 CDN:1H38 CDN H382 CDN:2H38 CDN H391 CDN:1H39 CDN H392 CDN:2H39 CDN H401 CDN:1H40 CDN H402 CDN:2H40 CDN H411 CDN:1H41 CDN H412 CDN:2H41 CDN H421 CDN:1H42 CDN H422 CDN:2H42 CDN H423 CDN:3H42 CDN HA7O CDN:OHA7 CDN HA51 CDN:1HA5 CDN H111 CDN:1H11 CDN H112 CDN:2H11 CDN H121 CDN:1H12 CDN H122 CDN:2H12 CDN H131 CDN:1H13 CDN H132 CDN:2H13 CDN H141 CDN:1H14 CDN H142 CDN:2H14 CDN H151 CDN:1H15 CDN H152 CDN:2H15 CDN H161 CDN:1H16 CDN H162 CDN:2H16 CDN H171 CDN:1H17 CDN H172 CDN:2H17 CDN H181 CDN:1H18 CDN H182 CDN:2H18 CDN H191 CDN:1H19 CDN H192 CDN:2H19 CDN H201 CDN:1H20 CDN H202 CDN:2H20 CDN H211 CDN:1H21 CDN H212 CDN:2H21 CDN H221 CDN:1H22 CDN H222 CDN:2H22 CDN H231 CDN:1H23 CDN H232 CDN:2H23 CDN H241 CDN:1H24 CDN H242 CDN:2H24 CDN H243 CDN:3H24 CDN H71 CDO:1H7 CDO H72 CDO:2H7 CDO H101 CDO:1H10 CDO H102 CDO:2H10 CDO H171 CDO:1H17 CDO H172 CDO:2H17 CDO H231 CDO:1H23 CDO H232 CDO:2H23 CDO H271 CDO:1H27 CDO H272 CDO:2H27 CDO H291 CDO:1H29 CDO H292 CDO:2H29 CDO H301 CDO:1H30 CDO H302 CDO:2H30 CDO H311 CDO:1H31 CDO H312 CDO:2H31 CDO H321 CDO:1H32 CDO H322 CDO:2H32 CDO H331 CDO:1H33 CDO H332 CDO:2H33 CDO H41 CDP:1H4 CDP H42 CDP:2H4 CDP H1' CDP: H1* CDP H2' CDP: H2* CDP HO'2 CDP:2HO* CDP H3' CDP: H3* CDP H4' CDP: H4* CDP H5'1 CDP:1H5* CDP H5'2 CDP:2H5* CDP H21 CDR:1H2 CDR H22 CDR:2H2 CDR H31 CDR:1H3 CDR H32 CDR:2H3 CDR H61 CDR:1H6 CDR H62 CDR:2H6 CDR H63 CDR:3H6 CDR H331 CDS:1H33 CDS H332 CDS:2H33 CDS H271 CDS:1H27 CDS H272 CDS:2H27 CDS H273 CDS:3H27 CDS H21 CDS:1H2 CDS H22 CDS:2H2 CDS H201 CDS:1H20 CDS H202 CDS:2H20 CDS H203 CDS:3H20 CDS HT1 CDT:1HT CDT HT2 CDT:2HT CDT HN1 CDT:1HN CDT HB1 CDT:1HB CDT HB2 CDT:2HB CDT HG1 CDT:1HG CDT HG2 CDT:2HG CDT HE1 CDT:1HE CDT HE2 CDT:2HE CDT HE3 CDT:3HE CDT HC11 CDU:1HC1 CDU HC12 CDU:2HC1 CDU HC21 CDU:1HC2 CDU HC22 CDU:2HC2 CDU HC31 CDU:1HC3 CDU HC32 CDU:2HC3 CDU HC41 CDU:1HC4 CDU HC42 CDU:2HC4 CDU HC51 CDU:1HC5 CDU HC61 CDU:1HC6 CDU HC62 CDU:2HC6 CDU H111 CDU:1H11 CDU H112 CDU:2H11 CDU H121 CDU:1H12 CDU H122 CDU:2H12 CDU H131 CDU:1H13 CDU H132 CDU:2H13 CDU H141 CDU:1H14 CDU H142 CDU:2H14 CDU H151 CDU:1H15 CDU H152 CDU:2H15 CDU H161 CDU:1H16 CDU H162 CDU:2H16 CDU H171 CDU:1H17 CDU H172 CDU:2H17 CDU H181 CDU:1H18 CDU H182 CDU:2H18 CDU H191 CDU:1H19 CDU H192 CDU:2H19 CDU H201 CDU:1H20 CDU H202 CDU:2H20 CDU H203 CDU:3H20 CDU HT1 CDV:1HT CDV HT2 CDV:2HT CDV HN1 CDV:1HN CDV HG11 CDV:1HG1 CDV HG12 CDV:2HG1 CDV HG13 CDV:3HG1 CDV HG21 CDV:1HG2 CDV HG22 CDV:2HG2 CDV HG23 CDV:3HG2 CDV HAD1 CDX:1HAD CDX HAD2 CDX:2HAD CDX HAQ1 CDX:1HAQ CDX HAQ2 CDX:2HAQ CDX HAK1 CDX:1HAK CDX HAK2 CDX:2HAK CDX HAE1 CDX:1HAE CDX HAE2 CDX:2HAE CDX HAE3 CDX:3HAE CDX HAR1 CDX:1HAR CDX HAR2 CDX:2HAR CDX HAF1 CDX:1HAF CDX HAF2 CDX:2HAF CDX HC51 CDY:1HC5 CDY HC52 CDY:2HC5 CDY H4' CDY: H4* CDY HC31 CDY:1HC3 CDY HC32 CDY:2HC3 CDY HC21 CDY:1HC2 CDY HC22 CDY:2HC2 CDY H1' CDY: H1* CDY HN61 CDY:1HN6 CDY HN62 CDY:2HN6 CDY HAC1 CDZ:1HAC CDZ HAC2 CDZ:2HAC CDZ HAC3 CDZ:3HAC CDZ HAD1 CDZ:1HAD CDZ HAD2 CDZ:2HAD CDZ HAD3 CDZ:3HAD CDZ HAN1 CDZ:1HAN CDZ HAN2 CDZ:2HAN CDZ HAQ1 CDZ:1HAQ CDZ HAQ2 CDZ:2HAQ CDZ HAR1 CDZ:1HAR CDZ HAR2 CDZ:2HAR CDZ HAO1 CDZ:1HAO CDZ HAO2 CDZ:2HAO CDZ HAF1 CDZ:1HAF CDZ HAF2 CDZ:2HAF CDZ HAF3 CDZ:3HAF CDZ HAE1 CDZ:1HAE CDZ HAE2 CDZ:2HAE CDZ HAE3 CDZ:3HAE CDZ HAH1 CDZ:1HAH CDZ HAH2 CDZ:2HAH CDZ HAH3 CDZ:3HAH CDZ HAG1 CDZ:1HAG CDZ HAG2 CDZ:2HAG CDZ HAG3 CDZ:3HAG CDZ HAP1 CDZ:1HAP CDZ HAP2 CDZ:2HAP CDZ HAM1 CDZ:1HAM CDZ HAM2 CDZ:2HAM CDZ HAB1 CDZ:1HAB CDZ HAB2 CDZ:2HAB CDZ HAB3 CDZ:3HAB CDZ HAA1 CDZ:1HAA CDZ HAA2 CDZ:2HAA CDZ HAA3 CDZ:3HAA CDZ H11 CE1:1H1 CE1 H12 CE1:2H1 CE1 H13 CE1:3H1 CE1 H21 CE1:1H2 CE1 H22 CE1:2H2 CE1 H31 CE1:1H3 CE1 H32 CE1:2H3 CE1 H41 CE1:1H4 CE1 H42 CE1:2H4 CE1 H51 CE1:1H5 CE1 H52 CE1:2H5 CE1 H61 CE1:1H6 CE1 H62 CE1:2H6 CE1 H71 CE1:1H7 CE1 H72 CE1:2H7 CE1 H81 CE1:1H8 CE1 H82 CE1:2H8 CE1 H91 CE1:1H9 CE1 H92 CE1:2H9 CE1 H101 CE1:1H10 CE1 H102 CE1:2H10 CE1 H111 CE1:1H11 CE1 H112 CE1:2H11 CE1 H121 CE1:1H12 CE1 H122 CE1:2H12 CE1 H141 CE1:1H14 CE1 H142 CE1:2H14 CE1 H151 CE1:1H15 CE1 H152 CE1:2H15 CE1 H171 CE1:1H17 CE1 H172 CE1:2H17 CE1 H181 CE1:1H18 CE1 H182 CE1:2H18 CE1 H201 CE1:1H20 CE1 H202 CE1:2H20 CE1 H211 CE1:1H21 CE1 H212 CE1:2H21 CE1 H231 CE1:1H23 CE1 H232 CE1:2H23 CE1 H241 CE1:1H24 CE1 H242 CE1:2H24 CE1 H261 CE1:1H26 CE1 H262 CE1:2H26 CE1 H271 CE1:1H27 CE1 H272 CE1:2H27 CE1 H291 CE1:1H29 CE1 H292 CE1:2H29 CE1 H301 CE1:1H30 CE1 H302 CE1:2H30 CE1 H321 CE1:1H32 CE1 H322 CE1:2H32 CE1 H331 CE1:1H33 CE1 H332 CE1:2H33 CE1 H351 CE1:1H35 CE1 H352 CE1:2H35 CE1 H361 CE1:1H36 CE1 H362 CE1:2H36 CE1 H121 CE2:1H12 CE2 H122 CE2:2H12 CE2 H123 CE2:3H12 CE2 H61 CE2:1H6 CE2 H62 CE2:2H6 CE2 H241 CE2:1H24 CE2 H242 CE2:2H24 CE2 H243 CE2:3H24 CE2 H131 CE2:1H13 CE2 H132 CE2:2H13 CE2 H133 CE2:3H13 CE2 H141 CE2:1H14 CE2 H142 CE2:2H14 CE2 H143 CE2:3H14 CE2 H21 CE3:1H2 CE3 H22 CE3:2H2 CE3 H81 CE3:1H8 CE3 H82 CE3:2H8 CE3 H83 CE3:3H8 CE3 H41 CE3:1H4 CE3 H42 CE3:2H4 CE3 H91 CE3:1H9 CE3 H92 CE3:2H9 CE3 H111 CE3:1H11 CE3 H112 CE3:2H11 CE3 H113 CE3:3H11 CE3 H6E1 CE5:1H6E CE5 H6E2 CE5:2H6E CE5 H6D1 CE5:1H6D CE5 H6D2 CE5:2H6D CE5 H6C1 CE5:1H6C CE5 H6C2 CE5:2H6C CE5 H6B1 CE5:1H6B CE5 H6B2 CE5:2H6B CE5 H6A1 CE5:1H6A CE5 H6A2 CE5:2H6A CE5 H6A1 CE6:1H6A CE6 H6A2 CE6:2H6A CE6 H6B1 CE6:1H6B CE6 H6B2 CE6:2H6B CE6 H6C1 CE6:1H6C CE6 H6C2 CE6:2H6C CE6 H6D1 CE6:1H6D CE6 H6D2 CE6:2H6D CE6 H6F1 CE6:1H6F CE6 H6F2 CE6:2H6F CE6 H6E1 CE6:1H6E CE6 H6E2 CE6:2H6E CE6 H6H1 CE8:1H6H CE8 H6H2 CE8:2H6H CE8 H6G1 CE8:1H6G CE8 H6G2 CE8:2H6G CE8 H6F1 CE8:1H6F CE8 H6F2 CE8:2H6F CE8 H6E1 CE8:1H6E CE8 H6E2 CE8:2H6E CE8 H6D1 CE8:1H6D CE8 H6D2 CE8:2H6D CE8 H6C1 CE8:1H6C CE8 H6C2 CE8:2H6C CE8 H6B1 CE8:1H6B CE8 H6B2 CE8:2H6B CE8 H6A1 CE8:1H6A CE8 H6A2 CE8:2H6A CE8 HN1 CEA:1HN CEA HN2 CEA:2HN CEA HB1 CEA:1HB CEA HB2 CEA:2HB CEA H101 CEB:1H10 CEB H102 CEB:2H10 CEB H111 CEB:1H11 CEB H112 CEB:2H11 CEB H113 CEB:3H11 CEB H121 CEB:1H12 CEB H122 CEB:2H12 CEB H123 CEB:3H12 CEB H141 CEB:1H14 CEB H142 CEB:2H14 CEB H151 CEB:1H15 CEB H152 CEB:2H15 CEB H153 CEB:3H15 CEB H11 CEC:1H1 CEC H21 CEC:1H2 CEC H22 CEC:2H2 CEC H31 CEC:1H3 CEC H32 CEC:2H3 CEC H21 CED:1H2 CED H22 CED:2H2 CED H3'1 CED:1H3' CED H3'2 CED:2H3' CED H3'3 CED:3H3' CED H131 CED:1H13 CED H132 CED:2H13 CED H21 CEF:1H2 CEF H22 CEF:2H2 CEF H3'1 CEF:1H3' CEF H3'2 CEF:2H3' CEF H1'1 CEF:1H1' CEF H1'2 CEF:2H1' CEF H1'3 CEF:3H1' CEF H88 CEF:8H8 CEF H181 CEF:1H18 CEF H182 CEF:2H18 CEF H183 CEF:3H18 CEF HN81 CEF:1HN8 CEF HN82 CEF:2HN8 CEF HOB8 CEG:8HOB CEG H11 CEH:1H1 CEH H12A CEH:2H1 CEH H51 CEH:1H5 CEH H52 CEH:2H5 CEH H101 CEH:1H10 CEH H102 CEH:2H10 CEH H171 CEH:1H17 CEH H172 CEH:2H17 CEH H201 CEH:1H20 CEH H202 CEH:2H20 CEH H251 CEH:1H25 CEH H252 CEH:2H25 CEH H253 CEH:3H25 CEH H281 CEH:1H28 CEH H282 CEH:2H28 CEH H283 CEH:3H28 CEH H211 CEH:1H21 CEH H212 CEH:2H21 CEH H321 CEH:1H32 CEH H322 CEH:2H32 CEH H323 CEH:3H32 CEH H101 CEI:1H10 CEI H102 CEI:2H10 CEI H261 CEI:1H26 CEI H262 CEI:2H26 CEI H1C1 CEJ:1H1C CEJ H1C2 CEJ:2H1C CEJ H5C1 CEJ:1H5C CEJ H5C2 CEJ:2H5C CEJ H101 CEJ:1H10 CEJ H102 CEJ:2H10 CEJ H14C CEL:CH14 CEL H13C CEL:CH13 CEL H17C CEL:CH17 CEL H16C CEL:CH16 CEL H10C CEL:CH10 CEL H111 CEL:1H11 CEL H112 CEL:2H11 CEL H113 CEL:3H11 CEL HN31 CEL:1HN3 CEL HN32 CEL:2HN3 CEL H91 CEM:1H9 CEM H92 CEM:2H9 CEM HO14 CEM:4HO1 CEM HC21 CEN:1HC2 CEN HC22 CEN:2HC2 CEN H131 CEN:1H13 CEN H132 CEN:2H13 CEN H171 CEN:1H17 CEN H172 CEN:2H17 CEN HC1 CEN:1HC CEN HC2 CEN:2HC CEN HC3 CEN:3HC CEN HC51 CEN:1HC5 CEN HC52 CEN:2HC5 CEN HC91 CEN:1HC9 CEN HC92 CEN:2HC9 CEN HC21 CEO:1HC2 CEO HC22 CEO:2HC2 CEO H3'1 CEO:1H3' CEO H3'2 CEO:2H3' CEO H131 CEO:1H13 CEO H132 CEO:2H13 CEO H21 CEP:1H2 CEP H22 CEP:2H2 CEP H3'1 CEP:1H3' CEP H3'2 CEP:2H3' CEP H1'1 CEP:1H1' CEP H1'2 CEP:2H1' CEP H1'3 CEP:3H1' CEP H88 CEP:8H8 CEP H131 CEP:1H13 CEP H132 CEP:2H13 CEP H21 CEQ:1H2 CEQ H22 CEQ:2H2 CEQ H23 CEQ:3H2 CEQ H31 CEQ:1H3 CEQ H32 CEQ:2H3 CEQ H33 CEQ:3H3 CEQ H41 CEQ:1H4 CEQ H42 CEQ:2H4 CEQ H43 CEQ:3H4 CEQ H51 CEQ:1H5 CEQ H52 CEQ:2H5 CEQ H61 CEQ:1H6 CEQ H62 CEQ:2H6 CEQ H63 CEQ:3H6 CEQ HN11 CER:1HN1 CER HN12 CER:2HN1 CER H21 CER:1H2 CER H22 CER:2H2 CER H31 CER:1H3 CER H51 CER:1H5 CER H52 CER:2H5 CER H61 CER:1H6 CER H62 CER:2H6 CER H71 CER:1H7 CER H81 CER:1H8 CER H91 CER:1H9 CER H92 CER:2H9 CER H101 CER:1H10 CER H111 CER:1H11 CER H121 CER:1H12 CER H122 CER:2H12 CER H123 CER:3H12 CER H183 CES:3H18 CES H182 CES:2H18 CES H181 CES:1H18 CES H3'3 CES:3H3' CES H3'2 CES:2H3' CES H3'1 CES:1H3' CES H21 CES:1H2 CES H22 CES:2H2 CES H101 CET:1H10 CET H102 CET:2H10 CET H111 CET:1H11 CET H112 CET:2H11 CET H113 CET:3H11 CET H121 CET:1H12 CET H122 CET:2H12 CET H123 CET:3H12 CET H141 CET:1H14 CET H142 CET:2H14 CET H151 CET:1H15 CET H152 CET:2H15 CET H153 CET:3H15 CET H101 CF3:1H10 CF3 H102 CF3:2H10 CF3 H81 CF3:1H8 CF3 H82 CF3:2H8 CF3 H61 CF3:1H6 CF3 H62 CF3:2H6 CF3 H71 CF3:1H7 CF3 H72 CF3:2H7 CF3 H91 CF3:1H9 CF3 H92 CF3:2H9 CF3 H111 CF3:1H11 CF3 H112 CF3:2H11 CF3 H5S1 CF5:1H5S CF5 H5S2 CF5:2H5S CF5 H71 CF5:1H7 CF5 H72 CF5:2H7 CF5 H2C1 CFA:1H2C CFA H2C2 CFA:2H2C CFA H5'1 CFB:1H5' CFB H5'2 CFB:2H5' CFB HN61 CFB:1HN6 CFB HN62 CFB:2HN6 CFB H121 CFC:1H12 CFC H122 CFC:2H12 CFC H123 CFC:3H12 CFC H131 CFC:1H13 CFC H132 CFC:2H13 CFC H133 CFC:3H13 CFC H101 CFF:1H10 CFF H102 CFF:2H10 CFF H103 CFF:3H10 CFF H121 CFF:1H12 CFF H122 CFF:2H12 CFF H123 CFF:3H12 CFF H81 CFF:1H8 CFF H141 CFF:1H14 CFF H142 CFF:2H14 CFF H143 CFF:3H14 CFF H5'1 CFL:1H5* CFL H5'2 CFL:2H5* CFL H4' CFL: H4* CFL H3' CFL: H3* CFL HO3' CFL:HO3* CFL H2' CFL: H2* CFL H1' CFL: H1* CFL HN41 CFL:1HN4 CFL HN42 CFL:2HN4 CFL H2A CFR: AH2 CFR H61A CFR:AH61 CFR H62A CFR:AH62 CFR H8A CFR: AH8 CFR H1B CFR:AH1* CFR H2B CFR:AH2* CFR HO2A CFR:AHO2 CFR H3B CFR:AH3* CFR HOA8 CFR:8HOA CFR HOA9 CFR:9HOA CFR H4B CFR:AH4* CFR HA51 CFR:1HA5 CFR HA52 CFR:2HA5 CFR HOA2 CFR:2HOA CFR HOA5 CFR:5HOA CFR H121 CFR:1H12 CFR H122 CFR:2H12 CFR H131 CFR:1H13 CFR H132 CFR:2H13 CFR H133 CFR:3H13 CFR H141 CFR:1H14 CFR H142 CFR:2H14 CFR H143 CFR:3H14 CFR H71 CFR:1H7 CFR H72 CFR:2H7 CFR H61 CFR:1H6 CFR H62 CFR:2H6 CFR H31 CFR:1H3 CFR H32 CFR:2H3 CFR H21 CFR:1H2 CFR H22 CFR:2H2 CFR H11O CFR:OH11 CFR H12O CFR:OH12 CFR H101 CFR:1H10 CFR H102 CFR:2H10 CFR H103 CFR:3H10 CFR HN1 CFS:1HN CFS HN2 CFS:2HN CFS HB1 CFS:1HB CFS HB2 CFS:2HB CFS HD11 CFS:1HD1 CFS HD12 CFS:2HD1 CFS HD21 CFS:1HD2 CFS HD22 CFS:2HD2 CFS HE11 CFS:1HE1 CFS HE12 CFS:2HE1 CFS HE21 CFS:1HE2 CFS HE22 CFS:2HE2 CFS HZ1 CFS:1HZ CFS HZ2 CFS:2HZ CFS HC91 CFX:1HC9 CFX HC92 CFX:2HC9 CFX H151 CFX:1H15 CFX H152 CFX:2H15 CFX H171 CFX:1H17 CFX H172 CFX:2H17 CFX H173 CFX:3H17 CFX H201 CFX:1H20 CFX H202 CFX:2H20 CFX H331 CFX:1H33 CFX H332 CFX:2H33 CFX HN11 CFY:1HN1 CFY HN12 CFY:2HN1 CFY HB11 CFY:1HB1 CFY HB12 CFY:2HB1 CFY HB21 CFY:1HB2 CFY HB22 CFY:2HB2 CFY HA41 CFY:1HA4 CFY HA42 CFY:2HA4 CFY H11 CG:1H1 CG HN61 CG:1HN6 CG HN71 CG:1HN7 CG HN72 CG:2HN7 CG H81 CG:1H8 CG H91 CG:1H9 CG H101 CG:1H10 CG H102 CG:2H10 CG H111 CG:1H11 CG H112 CG:2H11 CG H141 CG:1H14 CG H161 CG:1H16 CG H171 CG:1H17 CG H172 CG:2H17 CG HNG1 CG2:1HNG CG2 H2G1 CG2:1H2G CG2 H2G2 CG2:2H2G CG2 HC'1 CG2:1HC' CG2 HC'2 CG2:2HC' CG2 HCA1 CG2:1HCA CG2 HCA2 CG2:2HCA CG2 H4C1 CG2:1H4C CG2 H4C2 CG2:2H4C CG2 H CGA:1HN CGA H2 CGA:2HN CGA HB1 CGA:1HB CGA HB2 CGA:2HB CGA HG1 CGA:1HG CGA HG2 CGA:2HG CGA H21 CGA:1H2 CGA H22 CGA:2H2 CGA H8C1 CGB:1H8C CGB H8C2 CGB:2H8C CGB H7C1 CGB:1H7C CGB H7C2 CGB:2H7C CGB HN71 CGF:1HN7 CGF HN72 CGF:2HN7 CGF H61 CGF:1H6 CGF H62 CGF:2H6 CGF HB2 CGL:2HB CGL HB3 CGL:3HB CGL HN11 CGL:1HN1 CGL HN12 CGL:2HN1 CGL HB12 CGL:2HB1 CGL HB13 CGL:3HB1 CGL HG12 CGL:2HG1 CGL HG13 CGL:3HG1 CGL HB22 CGL:2HB2 CGL HB23 CGL:3HB2 CGL HA31 CGL:1HA3 CGL HA32 CGL:2HA3 CGL HB1 CGN:1HB CGN HB2 CGN:2HB CGN HG1 CGN:1HG CGN HG2 CGN:2HG CGN HOP2 CGP:2HOP CGP HO5C CGP:CHO5 CGP H51C CGP:CH51 CGP H52C CGP:CH52 CGP H4B CGP:CH4* CGP H3B CGP:CH3* CGP H21C CGP:CH21 CGP H22C CGP:CH22 CGP H1B CGP:CH1* CGP H5C CGP: CH5 CGP H6C CGP: CH6 CGP H41C CGP:CH41 CGP H42C CGP:CH42 CGP H51G CGP:GH51 CGP H52G CGP:GH52 CGP H4D CGP:GH4* CGP H3D CGP:GH3* CGP HO3G CGP:GHO3 CGP H21G CGP:GH21 CGP H22G CGP:GH22 CGP H1D CGP:GH1* CGP H8G CGP: GH8 CGP H1G CGP: GH1 CGP HN1G CGP:GHN1 CGP HN2G CGP:GHN2 CGP H21 CGQ:1H2 CGQ H41 CGQ:1H4 CGQ H51 CGQ:1H5 CGQ H61 CGQ:1H6 CGQ H71 CGQ:1H7 CGQ H101 CGQ:1H10 CGQ H102 CGQ:2H10 CGQ H111 CGQ:1H11 CGQ H112 CGQ:2H11 CGQ H121 CGQ:1H12 CGQ H151 CGQ:1H15 CGQ H152 CGQ:2H15 CGQ H191 CGQ:1H19 CGQ H211 CGQ:1H21 CGQ H231 CGQ:1H23 CGQ H241 CGQ:1H24 CGQ H251 CGQ:1H25 CGQ H271 CGQ:1H27 CGQ H291 CGQ:1H29 CGQ H292 CGQ:2H29 CGQ H301 CGQ:1H30 CGQ H302 CGQ:2H30 CGQ H51 CGR:1H5 CGR H52 CGR:2H5 CGR HC4' CGR:HC4* CGR HC1' CGR:HC1* CGR HC2' CGR:HC2* CGR HC3' CGR:HC3* CGR H81 CGR:1H8 CGR H82 CGR:2H8 CGR H1' CGR: H1* CGR H2' CGR: H2* CGR HO2' CGR:HO2* CGR H3' CGR: H3* CGR HO3' CGR:HO3* CGR H4' CGR: H4* CGR H5'1 CGR:1H5* CGR H5'2 CGR:2H5* CGR H2A1 CGR:1H2A CGR H2A2 CGR:2H2A CGR H7C1 CGT:1H7C CGT H7C2 CGT:2H7C CGT H6C1 CGT:1H6C CGT H6C2 CGT:2H6C CGT HBC1 CGT:1HBC CGT HBC2 CGT:2HBC CGT H CGU:1HN CGU HN2 CGU:2HN CGU HB2 CGU:1HB CGU HB3 CGU:2HB CGU HE12 CGU:HE2 CGU HE22 CGU:HE4 CGU HOP3 CH:3HOP CH HOP2 CH:2HOP CH H5' CH:1H5* CH H5'' CH:2H5* CH H4' CH: H4* CH H3' CH: H3* CH HO3' CH:H3T CH H2' CH: H2* CH HO2' CH:2HO* CH H1' CH: H1* CH H41 CH:1H4 CH H42 CH:2H4 CH HN41 CH1:1HN4 CH1 HN42 CH1:2HN4 CH1 H1' CH1: H1* CH1 H2' CH1: H2* CH1 HO2' CH1:*HO2 CH1 H3'2 CH1:2H3* CH1 H3' CH1: H3* CH1 H4' CH1: H4* CH1 H5'1 CH1:1H5* CH1 H5'2 CH1:2H5* CH1 HOA2 CH1:2HOA CH1 HOB2 CH1:2HOB CH1 HOG2 CH1:2HOG CH1 HOG3 CH1:3HOG CH1 H1 CH2:1H CH2 H2 CH2:2H CH2 HC1 CH3:1HC CH3 HC2 CH3:2HC CH3 HC3 CH3:3HC CH3 HC4 CH3:4HC CH3 HB12 CH4:2HB1 CH4 HB13 CH4:3HB1 CH4 HG1 CH4:1HG CH4 HD12 CH4:2HD1 CH4 HD13 CH4:3HD1 CH4 HE12 CH4:2HE1 CH4 HE13 CH4:3HE1 CH4 HZ11 CH4:1HZ1 CH4 HZ12 CH4:2HZ1 CH4 HB22 CH4:2HB2 CH4 HB23 CH4:3HB2 CH4 HG2 CH4:2HG CH4 HD22 CH4:2HD2 CH4 HD23 CH4:3HD2 CH4 HE22 CH4:2HE2 CH4 HE23 CH4:3HE2 CH4 HZ21 CH4:1HZ2 CH4 HZ22 CH4:2HZ2 CH4 H11 CH5:1H1 CH5 H12 CH5:2H1 CH5 H31 CH5:1H3 CH5 H32 CH5:2H3 CH5 H41 CH5:1H4 CH5 H42 CH5:2H4 CH5 H51 CH5:1H5 CH5 H52 CH5:2H5 CH5 H61 CH5:1H6 CH5 H62 CH5:2H6 CH5 H63 CH5:3H6 CH5 H71 CH5:1H7 CH5 H72 CH5:2H7 CH5 H73 CH5:3H7 CH5 H81 CH5:1H8 CH5 H82 CH5:2H8 CH5 H83 CH5:3H8 CH5 HN11 CH6:1HN1 CH6 HN12 CH6:2HN1 CH6 HE1A CH6:1HE CH6 HE2A CH6:2HE CH6 HE3 CH6:3HE CH6 HG11 CH6:1HG1 CH6 HG12 CH6:2HG1 CH6 HB11 CH6:1HB1 CH6 HB12 CH6:2HB1 CH6 HA31 CH6:1HA3 CH6 HA32 CH6:2HA3 CH6 HB1 CH7:1HB CH7 HB2A CH7:2HB CH7 HG1 CH7:1HG CH7 HG2 CH7:2HG CH7 HD1A CH7:1HD CH7 HD2A CH7:2HD CH7 HE1A CH7:1HE CH7 HE2A CH7:2HE CH7 HA31 CH7:1HA3 CH7 HA32 CH7:2HA3 CH7 H11 CHA:1H1 CHA H12 CHA:2H1 CHA H31 CHA:1H3 CHA H32 CHA:2H3 CHA H2'1 CHA:1H2' CHA H2'2 CHA:2H2' CHA H3'1 CHA:1H3' CHA H3'2 CHA:2H3' CHA H4'1 CHA:1H4' CHA H4'2 CHA:2H4' CHA H5'1 CHA:1H5' CHA H5'2 CHA:2H5' CHA H6'1 CHA:1H6' CHA H6'2 CHA:2H6' CHA HN21 CHA:1HN2 CHA HN22 CHA:2HN2 CHA HC11 CHC:1HC1 CHC HC12 CHC:2HC1 CHC HC21 CHC:1HC2 CHC HC22 CHC:2HC2 CHC HC41 CHC:1HC4 CHC HC42 CHC:2HC4 CHC H111 CHC:1H11 CHC H112 CHC:2H11 CHC H121 CHC:1H12 CHC H122 CHC:2H12 CHC H14C CHC:CH14 CHC H151 CHC:1H15 CHC H152 CHC:2H15 CHC H161 CHC:1H16 CHC H162 CHC:2H16 CHC H17C CHC:CH17 CHC H181 CHC:1H18 CHC H182 CHC:2H18 CHC H183 CHC:3H18 CHC H191 CHC:1H19 CHC H192 CHC:2H19 CHC H193 CHC:3H19 CHC H20C CHC:CH20 CHC H211 CHC:1H21 CHC H212 CHC:2H21 CHC H213 CHC:3H21 CHC H221 CHC:1H22 CHC H222 CHC:2H22 CHC H231 CHC:1H23 CHC H232 CHC:2H23 CHC H251 CHC:1H25 CHC H252 CHC:2H25 CHC H253 CHC:3H25 CHC H261 CHC:1H26 CHC H262 CHC:2H26 CHC HT1O CHC:OHT1 CHC H11 CHD:1H1 CHD H12A CHD:2H1 CHD H21 CHD:1H2 CHD H22 CHD:2H2 CHD H41 CHD:1H4 CHD H42 CHD:2H4 CHD H61 CHD:1H6 CHD H62 CHD:2H6 CHD H111 CHD:1H11 CHD H112 CHD:2H11 CHD H151 CHD:1H15 CHD H152 CHD:2H15 CHD H161 CHD:1H16 CHD H162 CHD:2H16 CHD H181 CHD:1H18 CHD H182 CHD:2H18 CHD H183 CHD:3H18 CHD H191 CHD:1H19 CHD H192 CHD:2H19 CHD H193 CHD:3H19 CHD H211 CHD:1H21 CHD H212 CHD:2H21 CHD H213 CHD:3H21 CHD H221 CHD:1H22 CHD H222 CHD:2H22 CHD H231 CHD:1H23 CHD H232 CHD:2H23 CHD H21 CHE:1H2 CHE H22 CHE:2H2 CHE H31 CHE:1H3 CHE H32 CHE:2H3 CHE H41 CHE:1H4 CHE H42 CHE:2H4 CHE H51 CHE:1H5 CHE H52 CHE:2H5 CHE H61 CHE:1H6 CHE H62 CHE:2H6 CHE H CHF:1HN CHF H2 CHF:2HN CHF HB2 CHF:1HB CHF HB3 CHF:2HB CHF HD12 CHF:1HD1 CHF HD13 CHF:2HD1 CHF HD23 CHF:1HD2 CHF HD22 CHF:2HD2 CHF HE12 CHF:1HE1 CHF HE13 CHF:2HE1 CHF HE23 CHF:1HE2 CHF HE22 CHF:2HE2 CHF HZ2 CHF:1HZ CHF HZ3 CHF:2HZ CHF H21 CHG:1H2 CHG H22 CHG:2H2 CHG H31 CHG:1H3 CHG H32 CHG:2H3 CHG H41 CHG:1H4 CHG H42 CHG:2H4 CHG H51 CHG:1H5 CHG H52 CHG:2H5 CHG H61 CHG:1H6 CHG H62 CHG:2H6 CHG HN71 CHG:1HN7 CHG HN72 CHG:2HN7 CHG H61 CHH:1H6 CHH H62 CHH:2H6 CHH H63 CHH:3H6 CHH H41 CHH:1H4 CHH H42 CHH:2H4 CHH H31 CHH:1H3 CHH H32 CHH:2H3 CHH H21 CHH:1H2 CHH H22 CHH:2H2 CHH H91 CHH:1H9 CHH H92 CHH:2H9 CHH H93 CHH:3H9 CHH H101 CHH:1H10 CHH H102 CHH:2H10 CHH H103 CHH:3H10 CHH H81 CHH:1H8 CHH H82 CHH:2H8 CHH H83 CHH:3H8 CHH H21 CHI:1H2 CHI H31 CHI:1H3 CHI H61 CHI:1H6 CHI H101 CHI:1H10 CHI H121 CHI:1H12 CHI H122 CHI:2H12 CHI H131 CHI:1H13 CHI H132 CHI:2H13 CHI H151 CHI:1H15 CHI H152 CHI:2H15 CHI H161 CHI:1H16 CHI H162 CHI:2H16 CHI H171 CHI:1H17 CHI H172 CHI:2H17 CHI H191 CHI:1H19 CHI H201 CHI:1H20 CHI H221 CHI:1H22 CHI H231 CHI:1H23 CHI HX21 CHK:1HX2 CHK HX22 CHK:2HX2 CHK HX41 CHK:1HX4 CHK HX42 CHK:2HX4 CHK HX51 CHK:1HX5 CHK HX52 CHK:2HX5 CHK HX61 CHK:1HX6 CHK HX62 CHK:2HX6 CHK HX71 CHK:1HX7 CHK HX72 CHK:2HX7 CHK HX81 CHK:1HX8 CHK HX82 CHK:2HX8 CHK HX91 CHK:1HX9 CHK HX92 CHK:2HX9 CHK HXA1 CHK:1HXA CHK HXA2 CHK:2HXA CHK HXB1 CHK:1HXB CHK HXB2 CHK:2HXB CHK HXG1 CHK:1HXG CHK HXG2 CHK:2HXG CHK HMA1 CHL:1HMA CHL HMA2 CHL:2HMA CHL HMA3 CHL:3HMA CHL HAA1 CHL:1HAA CHL HAA2 CHL:2HAA CHL HBA1 CHL:1HBA CHL HBA2 CHL:2HBA CHL HMB1 CHL:1HMB CHL HMB2 CHL:2HMB CHL HMB3 CHL:3HMB CHL HBB1 CHL:1HBB CHL HBB2 CHL:2HBB CHL HAC1 CHL:1HAC CHL HAC2 CHL:2HAC CHL HBC1 CHL:1HBC CHL HBC2 CHL:2HBC CHL HBC3 CHL:3HBC CHL HMD1 CHL:1HMD CHL HMD2 CHL:2HMD CHL HMD3 CHL:3HMD CHL HED1 CHL:1HED CHL HED2 CHL:2HED CHL HED3 CHL:3HED CHL H11 CHL:1H1 CHL H12 CHL:2H1 CHL H41 CHL:1H4 CHL H42 CHL:2H4 CHL H43 CHL:3H4 CHL H51 CHL:1H5 CHL H52 CHL:2H5 CHL H61 CHL:1H6 CHL H62 CHL:2H6 CHL H71 CHL:1H7 CHL H72 CHL:2H7 CHL H91 CHL:1H9 CHL H92 CHL:2H9 CHL H93 CHL:3H9 CHL H101 CHL:1H10 CHL H102 CHL:2H10 CHL H111 CHL:1H11 CHL H112 CHL:2H11 CHL H121 CHL:1H12 CHL H122 CHL:2H12 CHL H141 CHL:1H14 CHL H142 CHL:2H14 CHL H143 CHL:3H14 CHL H151 CHL:1H15 CHL H152 CHL:2H15 CHL H161 CHL:1H16 CHL H162 CHL:2H16 CHL H171 CHL:1H17 CHL H172 CHL:2H17 CHL H191 CHL:1H19 CHL H192 CHL:2H19 CHL H193 CHL:3H19 CHL H201 CHL:1H20 CHL H202 CHL:2H20 CHL H203 CHL:3H20 CHL H11 CHM:1H1 CHM H12 CHM:2H1 CHM H31 CHM:1H3 CHM H32 CHM:2H3 CHM HN11 CHN:1HN1 CHN HN12 CHN:2HN1 CHN H11 CHN:1H1 CHN H12 CHN:2H1 CHN H21 CHN:1H2 CHN H71 CHN:1H7 CHN H72 CHN:2H7 CHN H61 CHN:1H6 CHN H62 CHN:2H6 CHN H51 CHN:1H5 CHN H41 CHN:1H4 CHN H42 CHN:2H4 CHN H31 CHN:1H3 CHN H32 CHN:2H3 CHN HN21 CHN:1HN2 CHN HN22 CHN:2HN2 CHN H11 CHO:1H1 CHO H12 CHO:2H1 CHO H21 CHO:1H2 CHO H22 CHO:2H2 CHO H41 CHO:1H4 CHO H42 CHO:2H4 CHO H61 CHO:1H6 CHO H62 CHO:2H6 CHO H111 CHO:1H11 CHO H112 CHO:2H11 CHO H121 CHO:1H12 CHO H122 CHO:2H12 CHO H151 CHO:1H15 CHO H152 CHO:2H15 CHO H161 CHO:1H16 CHO H162 CHO:2H16 CHO H181 CHO:1H18 CHO H182 CHO:2H18 CHO H183 CHO:3H18 CHO H191 CHO:1H19 CHO H192 CHO:2H19 CHO H193 CHO:3H19 CHO H211 CHO:1H21 CHO H212 CHO:2H21 CHO H213 CHO:3H21 CHO H221 CHO:1H22 CHO H222 CHO:2H22 CHO H231 CHO:1H23 CHO H232 CHO:2H23 CHO H261 CHO:1H26 CHO H262 CHO:2H26 CHO H CHP:1HN CHP H2 CHP:2HN CHP HC2 CHP: H2 CHP HBC1 CHQ:1HBC CHQ HBC2 CHQ:2HBC CHQ HBP1 CHQ:1HBP CHQ HBP2 CHQ:2HBP CHQ HGP1 CHQ:1HGP CHQ HGP2 CHQ:2HGP CHQ HDP1 CHQ:1HDP CHQ HDP2 CHQ:2HDP CHQ H191 CHR:1H19 CHR H192 CHR:2H19 CHR H193 CHR:3H19 CHR H181 CHR:1H18 CHR H182 CHR:2H18 CHR H183 CHR:3H18 CHR H311 CHR:1H31 CHR H312 CHR:2H31 CHR H313 CHR:3H31 CHR H321 CHR:1H32 CHR H322 CHR:2H32 CHR H323 CHR:3H32 CHR H351 CHR:1H35 CHR H352 CHR:2H35 CHR H CHS:1HN CHS H2 CHS:2HN CHS HB2 CHS:1HB CHS HB3 CHS:2HB CHS HD12 CHS:1HD1 CHS HD13 CHS:2HD1 CHS HD23 CHS:1HD2 CHS HD22 CHS:2HD2 CHS HE12 CHS:1HE1 CHS HE13 CHS:2HE1 CHS HE23 CHS:1HE2 CHS HE22 CHS:2HE2 CHS HZ2 CHS:1HZ CHS HZ3 CHS:2HZ CHS HM1 CHS:1HM CHS HM2 CHS:2HM CHS HC41 CHT:1HC4 CHT HC42 CHT:2HC4 CHT HC51 CHT:1HC5 CHT HC52 CHT:2HC5 CHT H61 CHT:1H6 CHT H62 CHT:2H6 CHT H63 CHT:3H6 CHT H71 CHT:1H7 CHT H72 CHT:2H7 CHT H73 CHT:3H7 CHT H81 CHT:1H8 CHT H82 CHT:2H8 CHT H83 CHT:3H8 CHT HO6 CHT:6HO CHT H11 CHX:1H1 CHX H12 CHX:2H1 CHX H21 CHX:1H2 CHX H22 CHX:2H2 CHX H31 CHX:1H3 CHX H32 CHX:2H3 CHX H41 CHX:1H4 CHX H42 CHX:2H4 CHX H51 CHX:1H5 CHX H52 CHX:2H5 CHX H61 CHX:1H6 CHX H62 CHX:2H6 CHX H71 CHY:1H7 CHY H72 CHY:2H7 CHY H121 CHY:1H12 CHY H122 CHY:2H12 CHY H141 CHY:1H14 CHY H142 CHY:2H14 CHY H143 CHY:3H14 CHY H151 CHY:1H15 CHY H152 CHY:2H15 CHY H153 CHY:3H15 CHY H191 CHY:1H19 CHY H192 CHY:2H19 CHY H201 CHY:1H20 CHY H202 CHY:2H20 CHY H251 CHY:1H25 CHY H252 CHY:2H25 CHY HN41 CHY:1HN4 CHY HN42 CHY:2HN4 CHY H161 CIA:1H16 CIA H162 CIA:2H16 CIA H101 CIA:1H10 CIA H102 CIA:2H10 CIA H181 CIA:1H18 CIA H182 CIA:2H18 CIA H183 CIA:3H18 CIA H291 CIA:1H29 CIA H292 CIA:2H29 CIA HB11 CIB:1HB1 CIB HB12 CIB:2HB1 CIB HD11 CIB:1HD1 CIB HD12 CIB:2HD1 CIB HD13 CIB:3HD1 CIB HD21 CIB:1HD2 CIB HD22 CIB:2HD2 CIB HD23 CIB:3HD2 CIB H251 CIB:1H25 CIB H252 CIB:2H25 CIB H253 CIB:3H25 CIB HB21 CIB:1HB2 CIB HB22 CIB:2HB2 CIB HD31 CIB:1HD3 CIB HD32 CIB:2HD3 CIB HD33 CIB:3HD3 CIB HD41 CIB:1HD4 CIB HD42 CIB:2HD4 CIB HD43 CIB:3HD4 CIB HB31 CIB:1HB3 CIB HB32 CIB:2HB3 CIB HG31 CIB:1HG3 CIB HG32 CIB:2HG3 CIB HE31 CIB:1HE3 CIB HE32 CIB:2HE3 CIB HE33 CIB:3HE3 CIB H191 CIB:1H19 CIB H192 CIB:2H19 CIB H2A CIC: AH2 CIC H61A CIC:AH61 CIC H62A CIC:AH62 CIC H8A CIC: AH8 CIC H1B CIC:AH1* CIC H2B CIC:AH2* CIC HO2A CIC:AHO2 CIC H3B CIC:AH3* CIC HOA8 CIC:8HOA CIC HOA9 CIC:9HOA CIC H4B CIC:AH4* CIC H51A CIC:AH51 CIC H52A CIC:AH52 CIC HOA2 CIC:2HOA CIC HOA5 CIC:5HOA CIC H121 CIC:1H12 CIC H122 CIC:2H12 CIC H131 CIC:1H13 CIC H132 CIC:2H13 CIC H133 CIC:3H13 CIC H141 CIC:1H14 CIC H142 CIC:2H14 CIC H143 CIC:3H14 CIC H71 CIC:1H7 CIC H72 CIC:2H7 CIC H61 CIC:1H6 CIC H62 CIC:2H6 CIC H31 CIC:1H3 CIC H32 CIC:2H3 CIC H21 CIC:1H2 CIC H22 CIC:2H2 CIC H11 CIC:1H1 CIC H12 CIC:2H1 CIC H111 CIC:H11 CIC H123 CIC:H12 CIC HO32 CIC:2HO3 CIC HO52 CIC:2HO5 CIC H181 CID:1H18 CID H182 CID:2H18 CID H91 CIE:1H9 CIE H92 CIE:2H9 CIE H101 CIE:1H10 CIE H102 CIE:2H10 CIE H103 CIE:3H10 CIE H8'1 CIE:1H8' CIE H8'2 CIE:2H8' CIE H8'3 CIE:3H8' CIE H011 CIG:1H01 CIG H012 CIG:2H01 CIG H11 CIL:1H1 CIL H12A CIL:2H1 CIL H41 CIL:1H4 CIL H42 CIL:2H4 CIL H43 CIL:3H4 CIL H51 CIL:1H5 CIL H52 CIL:2H5 CIL H53 CIL:3H5 CIL H141 CIL:1H14 CIL H142 CIL:2H14 CIL H151 CIL:1H15 CIL H152 CIL:2H15 CIL H161 CIL:1H16 CIL H162 CIL:2H16 CIL H171 CIL:1H17 CIL H172 CIL:2H17 CIL H181 CIL:1H18 CIL H182 CIL:2H18 CIL H211 CIL:1H21 CIL H122 CIL:2H12 CIL H11 CIM:1H1 CIM H12 CIM:2H1 CIM H13 CIM:3H1 CIM HN11 CIM:1HN1 CIM HN12 CIM:2HN1 CIM H55 CIM:5H5 CIM H51 CIO:1H5 CIO H52 CIO:2H5 CIO H61 CIO:1H6 CIO H62 CIO:2H6 CIO H31 CIO:1H3 CIO H32 CIO:2H3 CIO H21 CIO:1H2 CIO H22 CIO:2H2 CIO H121 CIO:1H12 CIO H122 CIO:2H12 CIO H123 CIO:3H12 CIO H161 CIO:1H16 CIO H162 CIO:2H16 CIO H171 CIO:1H17 CIO H172 CIO:2H17 CIO H181 CIO:1H18 CIO H182 CIO:2H18 CIO H191 CIO:1H19 CIO H192 CIO:2H19 CIO H71 CIP:1H7 CIP H72 CIP:2H7 CIP HOP2 CIP:2HOP CIP HN21 CIR:1HN2 CIR HN22 CIR:2HN2 CIR H31 CIR:1H3 CIR H32 CIR:2H3 CIR H41 CIR:1H4 CIR H42 CIR:2H4 CIR H51 CIR:1H5 CIR H52 CIR:2H5 CIR HN81 CIR:1HN8 CIR HN82 CIR:2HN8 CIR H171 CIS:1H17 CIS H172 CIS:2H17 CIS H173 CIS:3H17 CIS H161 CIS:1H16 CIS H162 CIS:2H16 CIS H151 CIS:1H15 CIS H152 CIS:2H15 CIS H141 CIS:1H14 CIS H142 CIS:2H14 CIS H131 CIS:1H13 CIS H132 CIS:2H13 CIS H121 CIS:1H12 CIS H122 CIS:2H12 CIS H111 CIS:1H11 CIS H112 CIS:2H11 CIS H101 CIS:1H10 CIS H102 CIS:2H10 CIS H91 CIS:1H9 CIS H92 CIS:2H9 CIS H81 CIS:1H8 CIS H82 CIS:2H8 CIS H71 CIS:1H7 CIS H72 CIS:2H7 CIS H61 CIS:1H6 CIS H62 CIS:2H6 CIS H51 CIS:1H5 CIS H52 CIS:2H5 CIS H1A CIS:1H CIS H2A CIS:2H CIS H481 CIS:1H48 CIS H482 CIS:2H48 CIS H191 CIS:1H19 CIS H192 CIS:2H19 CIS H201 CIS:1H20 CIS H202 CIS:2H20 CIS H211 CIS:1H21 CIS H212 CIS:2H21 CIS H221 CIS:1H22 CIS H222 CIS:2H22 CIS H231 CIS:1H23 CIS H232 CIS:2H23 CIS H241 CIS:1H24 CIS H242 CIS:2H24 CIS H251 CIS:1H25 CIS H252 CIS:2H25 CIS H261 CIS:1H26 CIS H262 CIS:2H26 CIS H271 CIS:1H27 CIS H272 CIS:2H27 CIS H281 CIS:1H28 CIS H282 CIS:2H28 CIS H291 CIS:1H29 CIS H292 CIS:2H29 CIS H301 CIS:1H30 CIS H302 CIS:2H30 CIS H311 CIS:1H31 CIS H312 CIS:2H31 CIS H341 CIS:1H34 CIS H342 CIS:2H34 CIS H351 CIS:1H35 CIS H352 CIS:2H35 CIS H361 CIS:1H36 CIS H362 CIS:2H36 CIS H371 CIS:1H37 CIS H372 CIS:2H37 CIS H381 CIS:1H38 CIS H382 CIS:2H38 CIS H391 CIS:1H39 CIS H392 CIS:2H39 CIS H401 CIS:1H40 CIS H402 CIS:2H40 CIS H411 CIS:1H41 CIS H412 CIS:2H41 CIS H413 CIS:3H41 CIS H21 CIT:1H2 CIT H22 CIT:2H2 CIT H41 CIT:1H4 CIT H42 CIT:2H4 CIT HC11 CIU:1HC1 CIU HC12 CIU:2HC1 CIU HC21 CIU:1HC2 CIU HC22 CIU:2HC2 CIU HC31 CIU:1HC3 CIU HC41 CIU:1HC4 CIU HC42 CIU:2HC4 CIU HC51 CIU:1HC5 CIU HC52 CIU:2HC5 CIU HC61 CIU:1HC6 CIU HC62 CIU:2HC6 CIU HN71 CK1:1HN7 CK1 HN72 CK1:2HN7 CK1 H7A1 CK2:1H7A CK2 H7A2 CK2:2H7A CK2 H7A3 CK2:3H7A CK2 H6A1 CK2:1H6A CK2 H6A2 CK2:2H6A CK2 H6A3 CK2:3H6A CK2 HN71 CK2:1HN7 CK2 HN72 CK2:2HN7 CK2 H7A1 CK3:1H7A CK3 H7A2 CK3:2H7A CK3 H7A3 CK3:3H7A CK3 H6A1 CK3:1H6A CK3 H6A2 CK3:2H6A CK3 H6A3 CK3:3H6A CK3 H6A1 CK4:1H6A CK4 H6A2 CK4:2H6A CK4 H6A3 CK4:3H6A CK4 H7A1 CK4:1H7A CK4 H7A2 CK4:2H7A CK4 H7A3 CK4:3H7A CK4 H6A1 CK5:1H6A CK5 H6A2 CK5:2H6A CK5 H6A3 CK5:3H6A CK5 H7A1 CK5:1H7A CK5 H7A2 CK5:2H7A CK5 H7A3 CK5:3H7A CK5 H6A1 CK6:1H6A CK6 H6A2 CK6:2H6A CK6 H6A3 CK6:3H6A CK6 H8A1 CK6:1H8A CK6 H8A2 CK6:2H8A CK6 H8A3 CK6:3H8A CK6 H7A1 CK7:1H7A CK7 H7A2 CK7:2H7A CK7 H6A1 CK7:1H6A CK7 H6A2 CK7:2H6A CK7 H6A3 CK7:3H6A CK7 H6A1 CK8:1H6A CK8 H6A2 CK8:2H6A CK8 H6A3 CK8:3H6A CK8 H7A1 CK8:1H7A CK8 H7A2 CK8:2H7A CK8 H7A3 CK8:3H7A CK8 H8B1 CK8:1H8B CK8 H8B2 CK8:2H8B CK8 H8B3 CK8:3H8B CK8 H9B1 CK8:1H9B CK8 H9B2 CK8:2H9B CK8 H9B3 CK8:3H9B CK8 H181 CK9:1H18 CK9 H182 CK9:2H18 CK9 H121 CK9:1H12 CK9 H122 CK9:2H12 CK9 H123 CK9:3H12 CK9 H111 CK9:1H11 CK9 H112 CK9:2H11 CK9 H113 CK9:3H11 CK9 H251 CK9:1H25 CK9 H252 CK9:2H25 CK9 H261 CK9:1H26 CK9 H262 CK9:2H26 CK9 H263 CK9:3H26 CK9 H151 CK9:1H15 CK9 H152 CK9:2H15 CK9 H1'1 CKI:1H1' CKI H1'2 CKI:2H1' CKI H2'1 CKI:1H2' CKI H2'2 CKI:2H2' CKI HN21 CKI:1HN2 CKI HN22 CKI:2HN2 CKI H11 CKP:1H1 CKP H12 CKP:2H1 CKP HMA1 CL1:1HMA CL1 HMA2 CL1:2HMA CL1 HMA3 CL1:3HMA CL1 HAA1 CL1:1HAA CL1 HAA2 CL1:2HAA CL1 HBA1 CL1:1HBA CL1 HBA2 CL1:2HBA CL1 HMB1 CL1:1HMB CL1 HMB2 CL1:2HMB CL1 HMB3 CL1:3HMB CL1 HBB1 CL1:1HBB CL1 HBB2 CL1:2HBB CL1 HMC1 CL1:1HMC CL1 HMC2 CL1:2HMC CL1 HMC3 CL1:3HMC CL1 HAC1 CL1:1HAC CL1 HAC2 CL1:2HAC CL1 HBC1 CL1:1HBC CL1 HBC2 CL1:2HBC CL1 HBC3 CL1:3HBC CL1 HMD1 CL1:1HMD CL1 HMD2 CL1:2HMD CL1 HMD3 CL1:3HMD CL1 HED1 CL1:1HED CL1 HED2 CL1:2HED CL1 HED3 CL1:3HED CL1 H11 CL1:1H1 CL1 H12 CL1:2H1 CL1 H41 CL1:1H4 CL1 H42 CL1:2H4 CL1 H43 CL1:3H4 CL1 H51 CL1:1H5 CL1 H52 CL1:2H5 CL1 H61 CL1:1H6 CL1 H62 CL1:2H6 CL1 H71 CL1:1H7 CL1 H72 CL1:2H7 CL1 H91 CL1:1H9 CL1 H92 CL1:2H9 CL1 H93 CL1:3H9 CL1 H101 CL1:1H10 CL1 H102 CL1:2H10 CL1 H111 CL1:1H11 CL1 H112 CL1:2H11 CL1 H121 CL1:1H12 CL1 H122 CL1:2H12 CL1 H141 CL1:1H14 CL1 H142 CL1:2H14 CL1 H143 CL1:3H14 CL1 H151 CL1:1H15 CL1 H152 CL1:2H15 CL1 H161 CL1:1H16 CL1 H162 CL1:2H16 CL1 H171 CL1:1H17 CL1 H172 CL1:2H17 CL1 H191 CL1:1H19 CL1 H192 CL1:2H19 CL1 H193 CL1:3H19 CL1 H201 CL1:1H20 CL1 H202 CL1:2H20 CL1 H203 CL1:3H20 CL1 HMA1 CL2:1HMA CL2 HMA2 CL2:2HMA CL2 HMA3 CL2:3HMA CL2 HAA1 CL2:1HAA CL2 HAA2 CL2:2HAA CL2 HBA1 CL2:1HBA CL2 HBA2 CL2:2HBA CL2 HMB1 CL2:1HMB CL2 HMB2 CL2:2HMB CL2 HMB3 CL2:3HMB CL2 HBB1 CL2:1HBB CL2 HBB2 CL2:2HBB CL2 HMC1 CL2:1HMC CL2 HMC2 CL2:2HMC CL2 HMC3 CL2:3HMC CL2 HAC1 CL2:1HAC CL2 HAC2 CL2:2HAC CL2 HBC1 CL2:1HBC CL2 HBC2 CL2:2HBC CL2 HBC3 CL2:3HBC CL2 HMD1 CL2:1HMD CL2 HMD2 CL2:2HMD CL2 HMD3 CL2:3HMD CL2 HED1 CL2:1HED CL2 HED2 CL2:2HED CL2 HED3 CL2:3HED CL2 H11 CL2:1H1 CL2 H12 CL2:2H1 CL2 H41 CL2:1H4 CL2 H42 CL2:2H4 CL2 H43 CL2:3H4 CL2 H51 CL2:1H5 CL2 H52 CL2:2H5 CL2 H61 CL2:1H6 CL2 H62 CL2:2H6 CL2 H71 CL2:1H7 CL2 H72 CL2:2H7 CL2 H91 CL2:1H9 CL2 H92 CL2:2H9 CL2 H93 CL2:3H9 CL2 H101 CL2:1H10 CL2 H102 CL2:2H10 CL2 H111 CL2:1H11 CL2 H112 CL2:2H11 CL2 H121 CL2:1H12 CL2 H122 CL2:2H12 CL2 H141 CL2:1H14 CL2 H142 CL2:2H14 CL2 H143 CL2:3H14 CL2 H151 CL2:1H15 CL2 H152 CL2:2H15 CL2 H161 CL2:1H16 CL2 H162 CL2:2H16 CL2 H171 CL2:1H17 CL2 H172 CL2:2H17 CL2 H191 CL2:1H19 CL2 H192 CL2:2H19 CL2 H193 CL2:3H19 CL2 H201 CL2:1H20 CL2 H202 CL2:2H20 CL2 H203 CL2:3H20 CL2 H231 CL3:1H23 CL3 H232 CL3:2H23 CL3 H233 CL3:3H23 CL3 H281 CL3:1H28 CL3 H282 CL3:2H28 CL3 H283 CL3:3H28 CL3 HC21 CL4:1HC2 CL4 HC22 CL4:2HC2 CL4 H171 CL4:1H17 CL4 H172 CL4:2H17 CL4 H61 CL5:1H6 CL5 H62 CL5:2H6 CL5 H51 CL5:1H5 CL5 H52 CL5:2H5 CL5 H31 CL5:1H3 CL5 H32 CL5:2H3 CL5 HMA1 CLA:1HMA CLA HMA2 CLA:2HMA CLA HMA3 CLA:3HMA CLA HAA1 CLA:1HAA CLA HAA2 CLA:2HAA CLA HBA1 CLA:1HBA CLA HBA2 CLA:2HBA CLA HMB1 CLA:1HMB CLA HMB2 CLA:2HMB CLA HMB3 CLA:3HMB CLA HBB1 CLA:1HBB CLA HBB2 CLA:2HBB CLA HMC1 CLA:1HMC CLA HMC2 CLA:2HMC CLA HMC3 CLA:3HMC CLA HAC1 CLA:1HAC CLA HAC2 CLA:2HAC CLA HBC1 CLA:1HBC CLA HBC2 CLA:2HBC CLA HBC3 CLA:3HBC CLA HMD1 CLA:1HMD CLA HMD2 CLA:2HMD CLA HMD3 CLA:3HMD CLA HED1 CLA:1HED CLA HED2 CLA:2HED CLA HED3 CLA:3HED CLA H11 CLA:1H1 CLA H12 CLA:2H1 CLA H41 CLA:1H4 CLA H42 CLA:2H4 CLA H43 CLA:3H4 CLA H51 CLA:1H5 CLA H52 CLA:2H5 CLA H61 CLA:1H6 CLA H62 CLA:2H6 CLA H71 CLA:1H7 CLA H72 CLA:2H7 CLA H91 CLA:1H9 CLA H92 CLA:2H9 CLA H93 CLA:3H9 CLA H101 CLA:1H10 CLA H102 CLA:2H10 CLA H111 CLA:1H11 CLA H112 CLA:2H11 CLA H121 CLA:1H12 CLA H122 CLA:2H12 CLA H141 CLA:1H14 CLA H142 CLA:2H14 CLA H143 CLA:3H14 CLA H151 CLA:1H15 CLA H152 CLA:2H15 CLA H161 CLA:1H16 CLA H162 CLA:2H16 CLA H171 CLA:1H17 CLA H172 CLA:2H17 CLA H191 CLA:1H19 CLA H192 CLA:2H19 CLA H193 CLA:3H19 CLA H201 CLA:1H20 CLA H202 CLA:2H20 CLA H203 CLA:3H20 CLA H CLB:1HN CLB H2 CLB:2HN CLB HB2 CLB:1HB CLB HB3 CLB:2HB CLB H71 CLB:1H7 CLB H72 CLB:2H7 CLB HC2 CLB: H2 CLB HOB1 CLB:1HOB CLB HOB2 CLB:2HOB CLB H111 CLB:1H11 CLB H112 CLB:2H11 CLB H113 CLB:3H11 CLB H121 CLC:1H12 CLC H122 CLC:2H12 CLC H123 CLC:3H12 CLC H211 CLC:1H21 CLC H212 CLC:2H21 CLC H CLD:1HN CLD H2 CLD:2HN CLD HB2 CLD:1HB CLD HB3 CLD:2HB CLD H71 CLD:1H7 CLD H72 CLD:2H7 CLD HC2 CLD: H2 CLD HOB1 CLD:1HOB CLD HOB2 CLD:2HOB CLD H111 CLD:1H11 CLD H112 CLD:2H11 CLD H113 CLD:3H11 CLD H2 CLE: HN CLE HB2 CLE: HB1 CLE HB3 CLE: HB2 CLE HD11 CLE:1HD1 CLE HD12 CLE:2HD1 CLE HD13 CLE:3HD1 CLE HD21 CLE:1HD2 CLE HD22 CLE:2HD2 CLE HD23 CLE:3HD2 CLE HN21 CLE:1HN2 CLE HN22 CLE:2HN2 CLE H2 CLG: HN CLG HB2 CLG:1HB CLG HB3 CLG:2HB CLG HG2 CLG:1HG CLG HG3 CLG:2HG CLG HD2 CLG:1HD CLG HD3 CLG:2HD CLG HE2 CLG:1HE CLG HE3 CLG:2HE CLG HZ CLG: HNZ CLG HI1 CLG:1HI CLG HI2 CLG:2HI CLG HL1 CLG:1HL CLG HL2 CLG:2HL CLG HNM1 CLG:1HNM CLG HNM2 CLG:2HNM CLG H2 CLH: HN CLH HB2 CLH:1HB CLH HB3 CLH:2HB CLH HG2 CLH:1HG CLH HG3 CLH:2HG CLH HD2 CLH:1HD CLH HD3 CLH:2HD CLH HE2 CLH:1HE CLH HE3 CLH:2HE CLH HZ CLH: HNZ CLH HI1 CLH:1HI CLH HI2 CLH:2HI CLH H121 CLI:1H12 CLI H122 CLI:2H12 CLI H61 CLI:1H6 CLI H62 CLI:2H6 CLI H4C1 CLK:1H4C CLK H4C2 CLK:2H4C CLK H9N1 CLK:1H9N CLK H9N2 CLK:2H9N CLK H11 CLL:1H1 CLL H12 CLL:2H1 CLL H21 CLL:1H2 CLL H22 CLL:2H2 CLL H41 CLL:1H4 CLL H42 CLL:2H4 CLL H71 CLL:1H7 CLL H72 CLL:2H7 CLL H111 CLL:1H11 CLL H112 CLL:2H11 CLL H121 CLL:1H12 CLL H122 CLL:2H12 CLL H151 CLL:1H15 CLL H152 CLL:2H15 CLL H161 CLL:1H16 CLL H162 CLL:2H16 CLL H181 CLL:1H18 CLL H182 CLL:2H18 CLL H183 CLL:3H18 CLL H191 CLL:1H19 CLL H192 CLL:2H19 CLL H193 CLL:3H19 CLL H211 CLL:1H21 CLL H212 CLL:2H21 CLL H213 CLL:3H21 CLL H221 CLL:1H22 CLL H222 CLL:2H22 CLL H231 CLL:1H23 CLL H232 CLL:2H23 CLL H241 CLL:1H24 CLL H242 CLL:2H24 CLL H261 CLL:1H26 CLL H262 CLL:2H26 CLL H263 CLL:3H26 CLL H271 CLL:1H27 CLL H272 CLL:2H27 CLL H273 CLL:3H27 CLL H291 CLL:1H29 CLL H292 CLL:2H29 CLL H301 CLL:1H30 CLL H302 CLL:2H30 CLL H311 CLL:1H31 CLL H312 CLL:2H31 CLL H321 CLL:1H32 CLL H322 CLL:2H32 CLL H331 CLL:1H33 CLL H332 CLL:2H33 CLL H341 CLL:1H34 CLL H342 CLL:2H34 CLL H351 CLL:1H35 CLL H352 CLL:2H35 CLL H381 CLL:1H38 CLL H382 CLL:2H38 CLL H411 CLL:1H41 CLL H412 CLL:2H41 CLL H421 CLL:1H42 CLL H422 CLL:2H42 CLL H431 CLL:1H43 CLL H432 CLL:2H43 CLL H441 CLL:1H44 CLL H442 CLL:2H44 CLL H451 CLL:1H45 CLL H452 CLL:2H45 CLL H453 CLL:3H45 CLL H41 CLM:1H4 CLM H42 CLM:2H4 CLM HMA1 CLN:1HMA CLN HMA2 CLN:2HMA CLN HMA3 CLN:3HMA CLN HAA1 CLN:1HAA CLN HAA2 CLN:2HAA CLN HBA1 CLN:1HBA CLN HBA2 CLN:2HBA CLN HMB1 CLN:1HMB CLN HMB2 CLN:2HMB CLN HMB3 CLN:3HMB CLN HBB1 CLN:1HBB CLN HBB2 CLN:2HBB CLN HMC1 CLN:1HMC CLN HMC2 CLN:2HMC CLN HMC3 CLN:3HMC CLN HMD1 CLN:1HMD CLN HMD2 CLN:2HMD CLN HMD3 CLN:3HMD CLN HAD1 CLN:1HAD CLN HAD2 CLN:2HAD CLN HBD1 CLN:1HBD CLN HBD2 CLN:2HBD CLN H11 CLQ:1H1 CLQ H21 CLQ:1H2 CLQ H51 CLQ:1H5 CLQ H61 CLQ:1H6 CLQ H81 CLQ:1H8 CLQ HN21 CLQ:1HN2 CLQ H101 CLQ:1H10 CLQ H111 CLQ:1H11 CLQ H112 CLQ:2H11 CLQ H121 CLQ:1H12 CLQ H122 CLQ:2H12 CLQ H131 CLQ:1H13 CLQ H132 CLQ:2H13 CLQ H141 CLQ:1H14 CLQ H142 CLQ:2H14 CLQ H151 CLQ:1H15 CLQ H152 CLQ:2H15 CLQ H153 CLQ:3H15 CLQ H161 CLQ:1H16 CLQ H162 CLQ:2H16 CLQ H171 CLQ:1H17 CLQ H172 CLQ:2H17 CLQ H173 CLQ:3H17 CLQ H181 CLQ:1H18 CLQ H182 CLQ:2H18 CLQ H183 CLQ:3H18 CLQ H11 CLR:1H1 CLR H12 CLR:2H1 CLR H21 CLR:1H2 CLR H22 CLR:2H2 CLR H41 CLR:1H4 CLR H42 CLR:2H4 CLR H71 CLR:1H7 CLR H72 CLR:2H7 CLR H111 CLR:1H11 CLR H112 CLR:2H11 CLR H121 CLR:1H12 CLR H122 CLR:2H12 CLR H151 CLR:1H15 CLR H152 CLR:2H15 CLR H161 CLR:1H16 CLR H162 CLR:2H16 CLR H181 CLR:1H18 CLR H182 CLR:2H18 CLR H183 CLR:3H18 CLR H191 CLR:1H19 CLR H192 CLR:2H19 CLR H193 CLR:3H19 CLR H211 CLR:1H21 CLR H212 CLR:2H21 CLR H213 CLR:3H21 CLR H221 CLR:1H22 CLR H222 CLR:2H22 CLR H231 CLR:1H23 CLR H232 CLR:2H23 CLR H241 CLR:1H24 CLR H242 CLR:2H24 CLR H261 CLR:1H26 CLR H262 CLR:2H26 CLR H263 CLR:3H26 CLR H271 CLR:1H27 CLR H272 CLR:2H27 CLR H273 CLR:3H27 CLR H21 CLS:1H2 CLS H22 CLS:2H2 CLS H3'1 CLS:1H3' CLS H3'2 CLS:2H3' CLS H231 CLS:1H23 CLS H232 CLS:2H23 CLS H233 CLS:3H23 CLS H131 CLS:1H13 CLS H132 CLS:2H13 CLS HA1 CLT:1HA CLT HA2 CLT:2HA CLT HB11 CLT:1HB1 CLT HB12 CLT:2HB1 CLT HG1 CLT:1HG CLT HG2 CLT:2HG CLT HAG1 CLU:1HAG CLU HAG2 CLU:2HAG CLU HAF1 CLU:1HAF CLU HAF2 CLU:2HAF CLU HN11 CLV:1HN1 CLV HN12 CLV:2HN1 CLV HB11 CLV:1HB1 CLV HB12 CLV:2HB1 CLV HB13 CLV:3HB1 CLV HA31 CLV:1HA3 CLV HA32 CLV:2HA3 CLV H11 CLW:1H1 CLW H21 CLW:1H2 CLW H51 CLW:1H5 CLW HN11 CLW:1HN1 CLW H61 CLY:1H6 CLY H62 CLY:2H6 CLY H63 CLY:3H6 CLY H91 CLY:1H9 CLY H92 CLY:2H9 CLY H93 CLY:3H9 CLY H121 CLY:1H12 CLY H122 CLY:2H12 CLY H141 CLY:1H14 CLY H142 CLY:2H14 CLY H151 CLY:1H15 CLY H152 CLY:2H15 CLY H153 CLY:3H15 CLY H161 CLY:1H16 CLY H162 CLY:2H16 CLY H171 CLY:1H17 CLY H172 CLY:2H17 CLY H181 CLY:1H18 CLY H182 CLY:2H18 CLY H183 CLY:3H18 CLY H51 CLZ:1H5 CLZ H52 CLZ:2H5 CLZ H61 CLZ:1H6 CLZ H62 CLZ:2H6 CLZ H131 CLZ:1H13 CLZ H132 CLZ:2H13 CLZ H21 CM:1H2 CM H22 CM:2H2 CM H23 CM:3H2 CM H5'1 CM0:1H5* CM0 H5'2 CM0:2H5* CM0 H4' CM0: H4* CM0 H3' CM0: H3* CM0 H1' CM0: H1* CM0 H2' CM0: H2* CM0 H7C1 CM0:1H7C CM0 H7C2 CM0:2H7C CM0 H131 CM1:1H13 CM1 H132 CM1:2H13 CM1 H231 CM1:1H23 CM1 H232 CM1:2H23 CM1 H233 CM1:3H23 CM1 H251 CM1:1H25 CM1 H252 CM1:2H25 CM1 H311 CM1:1H31 CM1 H312 CM1:2H31 CM1 H321 CM1:1H32 CM1 H322 CM1:2H32 CM1 H331 CM1:1H33 CM1 H332 CM1:2H33 CM1 H341 CM1:1H34 CM1 H342 CM1:2H34 CM1 H391 CM1:1H39 CM1 H392 CM1:2H39 CM1 H401 CM1:1H40 CM1 H402 CM1:2H40 CM1 H411 CM1:1H41 CM1 H412 CM1:2H41 CM1 H421 CM1:1H42 CM1 H422 CM1:2H42 CM1 H491 CM1:1H49 CM1 H492 CM1:2H49 CM1 H501 CM1:1H50 CM1 H502 CM1:2H50 CM1 H511 CM1:1H51 CM1 H512 CM1:2H51 CM1 H521 CM1:1H52 CM1 H522 CM1:2H52 CM1 H531 CM1:1H53 CM1 H532 CM1:2H53 CM1 H541 CM1:1H54 CM1 H542 CM1:2H54 CM1 H131 CM2:1H13 CM2 H132 CM2:2H13 CM2 H221 CM2:1H22 CM2 H222 CM2:2H22 CM2 H251 CM2:1H25 CM2 H252 CM2:2H25 CM2 H311 CM2:1H31 CM2 H312 CM2:2H31 CM2 H321 CM2:1H32 CM2 H322 CM2:2H32 CM2 H331 CM2:1H33 CM2 H332 CM2:2H33 CM2 H341 CM2:1H34 CM2 H342 CM2:2H34 CM2 H391 CM2:1H39 CM2 H392 CM2:2H39 CM2 H401 CM2:1H40 CM2 H402 CM2:2H40 CM2 H411 CM2:1H41 CM2 H412 CM2:2H41 CM2 H421 CM2:1H42 CM2 H422 CM2:2H42 CM2 H491 CM2:1H49 CM2 H492 CM2:2H49 CM2 H501 CM2:1H50 CM2 H502 CM2:2H50 CM2 H511 CM2:1H51 CM2 H512 CM2:2H51 CM2 H521 CM2:1H52 CM2 H522 CM2:2H52 CM2 H531 CM2:1H53 CM2 H532 CM2:2H53 CM2 H541 CM2:1H54 CM2 H542 CM2:2H54 CM2 H131 CM3:1H13 CM3 H132 CM3:2H13 CM3 H133 CM3:3H13 CM3 H281 CM3:1H28 CM3 H282 CM3:2H28 CM3 H291 CM3:1H29 CM3 H292 CM3:2H29 CM3 H311 CM3:1H31 CM3 H312 CM3:2H31 CM3 H321 CM3:1H32 CM3 H322 CM3:2H32 CM3 H331 CM3:1H33 CM3 H332 CM3:2H33 CM3 H341 CM3:1H34 CM3 H342 CM3:2H34 CM3 H351 CM3:1H35 CM3 H352 CM3:2H35 CM3 H121 CM4:1H12 CM4 H122 CM4:2H12 CM4 H123 CM4:3H12 CM4 H271 CM4:1H27 CM4 H272 CM4:2H27 CM4 H281 CM4:1H28 CM4 H282 CM4:2H28 CM4 H301 CM4:1H30 CM4 H302 CM4:2H30 CM4 H311 CM4:1H31 CM4 H312 CM4:2H31 CM4 H321 CM4:1H32 CM4 H322 CM4:2H32 CM4 H331 CM4:1H33 CM4 H332 CM4:2H33 CM4 H71 CM5:1H7 CM5 H72 CM5:2H7 CM5 H81 CM5:1H8 CM5 H82 CM5:2H8 CM5 H91 CM5:1H9 CM5 H92 CM5:2H9 CM5 H101 CM5:1H10 CM5 H102 CM5:2H10 CM5 H111 CM5:1H11 CM5 H112 CM5:2H11 CM5 H51 CM5:1H5 CM5 H52 CM5:2H5 CM5 H41 CM5:1H4 CM5 H42 CM5:2H4 CM5 H31A CM5:1H3 CM5 H32A CM5:2H3 CM5 H21A CM5:1H2 CM5 H22A CM5:2H2 CM5 H11 CM5:1H1 CM5 H12 CM5:2H1 CM5 H191 CM5:1H19 CM5 H192 CM5:2H19 CM5 H301 CM5:1H30 CM5 H302 CM5:2H30 CM5 HB1 CMA:1HB CMA HB2 CMA:2HB CMA H11 CMA:1H1 CMA H12 CMA:2H1 CMA H21 CMA:1H2 CMA H22 CMA:2H2 CMA HG1 CMA:1HG CMA HG2 CMA:2HG CMA HD1 CMA:1HD CMA HD2 CMA:2HD CMA HH11 CMA:1HH1 CMA HH12 CMA:2HH1 CMA HH21 CMA:1HH2 CMA H101 CMB:1H10 CMB H102 CMB:2H10 CMB H103 CMB:3H10 CMB H131 CMB:1H13 CMB H132 CMB:2H13 CMB H171 CMB:1H17 CMB H172 CMB:2H17 CMB H118 CMB:18H1 CMB H211 CMB:1H21 CMB H221 CMB:1H22 CMB H231 CMB:1H23 CMB H224 CMB:24H2 CMB H251 CMB:1H25 CMB H252 CMB:2H25 CMB H281 CMB:1H28 CMB H531 CMB:1H53 CMB H532 CMB:2H53 CMB H2A CMC: AH2 CMC H61A CMC:AH61 CMC H62A CMC:AH62 CMC H8A CMC: AH8 CMC H1B CMC:AH1* CMC H2B CMC:AH2* CMC HO2A CMC:AHO2 CMC H3B CMC:AH3* CMC HOA8 CMC:8HOA CMC HOA9 CMC:9HOA CMC H4B CMC:AH4* CMC H51A CMC:AH51 CMC H52A CMC:AH52 CMC HOA2 CMC:2HOA CMC HOA5 CMC:5HOA CMC H121 CMC:1H12 CMC H122 CMC:2H12 CMC H131 CMC:1H13 CMC H132 CMC:2H13 CMC H133 CMC:3H13 CMC H141 CMC:1H14 CMC H142 CMC:2H14 CMC H143 CMC:3H14 CMC H71 CMC:1H7 CMC H72 CMC:2H7 CMC H61 CMC:1H6 CMC H62 CMC:2H6 CMC H31 CMC:1H3 CMC H32 CMC:2H3 CMC H21 CMC:1H2 CMC H22 CMC:2H2 CMC HO22 CMC:2HO2 CMC H111 CMD:1H11 CMD H112 CMD:2H11 CMD HO12 CMD:2HO1 CMD H141 CMD:1H14 CMD H142 CMD:2H14 CMD HO14 CMD:4HO1 CMD H151 CMD:1H15 CMD H152 CMD:2H15 CMD HO17 CMD:7HO1 CMD H211 CMD:1H21 CMD H212 CMD:2H21 CMD H213 CMD:3H21 CMD H1' CMD: H1* CMD H2'1 CMD:1H2* CMD H2'2 CMD:2H2* CMD H3' CMD: H3* CMD H4' CMD: H4* CMD HO4' CMD:*HO4 CMD H5' CMD: H5* CMD H6'1 CMD:1H6* CMD H6'2 CMD:2H6* CMD H6'3 CMD:3H6* CMD H231 CMD:1H23 CMD H232 CMD:2H23 CMD H631 CMD:1H63 CMD H632 CMD:2H63 CMD H531 CMD:1H53 CMD H532 CMD:2H53 CMD H CME:1HN CME H2 CME:2HN CME HB2 CME:1HB CME HB3 CME:2HB CME HE2 CME:1HE CME HE3 CME:2HE CME HZ2 CME:1HZ CME HZ3 CME:2HZ CME HH CME: HO CME H241 CMF:1H24 CMF H242 CMF:2H24 CMF H261 CMF:1H26 CMF H262 CMF:2H26 CMF H271 CMF:1H27 CMF H272 CMF:2H27 CMF H251 CMF:1H25 CMF H252 CMF:2H25 CMF H221 CMF:1H22 CMF H222 CMF:2H22 CMF H171 CMF:1H17 CMF H172 CMF:2H17 CMF H201 CMF:1H20 CMF H202 CMF:2H20 CMF H211 CMF:1H21 CMF H212 CMF:2H21 CMF H191 CMF:1H19 CMF H192 CMF:2H19 CMF H181 CMF:1H18 CMF H182 CMF:2H18 CMF H92 CMG:2H9 CMG H91 CMG:1H9 CMG H22 CMG:2H2 CMG H21 CMG:1H2 CMG H112 CMG:2H11 CMG H111 CMG:1H11 CMG H122 CMG:2H12 CMG H121 CMG:1H12 CMG H132 CMG:2H13 CMG H131 CMG:1H13 CMG H142 CMG:2H14 CMG H141 CMG:1H14 CMG H152 CMG:2H15 CMG H151 CMG:1H15 CMG H CMH:1HN CMH H2 CMH:2HN CMH HB2 CMH:1HBC CMH HB3 CMH:2HBC CMH HM1 CMH:1HM CMH HM2 CMH:2HM CMH HM3 CMH:3HM CMH H101 CMI:1H10 CMI H102 CMI:2H10 CMI H103 CMI:3H10 CMI H131 CMI:1H13 CMI H132 CMI:2H13 CMI H171 CMI:1H17 CMI H172 CMI:2H17 CMI H321 CMI:1H32 CMI H322 CMI:2H32 CMI H331 CMI:1H33 CMI H332 CMI:2H33 CMI H333 CMI:3H33 CMI H371 CMI:1H37 CMI H372 CMI:2H37 CMI H373 CMI:3H37 CMI H4C1 CMK:1H4C CMK H4C2 CMK:2H4C CMK H1' CMK: H1* CMK H2' CMK: H2* CMK H3' CMK: H3* CMK H4' CMK: H4* CMK H5'1 CMK:1H5* CMK H5'2 CMK:2H5* CMK H3C1 CMK:1H3C CMK H3C2 CMK:2H3C CMK H8C1 CMK:1H8C CMK H8C2 CMK:2H8C CMK H151 CMM:1H15 CMM H152 CMM:2H15 CMM H161 CMM:1H16 CMM H162 CMM:2H16 CMM H231 CMM:1H23 CMM H232 CMM:2H23 CMM H271 CMM:1H27 CMM H272 CMM:2H27 CMM H273 CMM:3H27 CMM H311 CMM:1H31 CMM H312 CMM:2H31 CMM H331 CMM:1H33 CMM H332 CMM:2H33 CMM H371 CMM:1H37 CMM H372 CMM:2H37 CMM H361 CMM:1H36 CMM H362 CMM:2H36 CMM H351 CMM:1H35 CMM H352 CMM:2H35 CMM H401 CMM:1H40 CMM H402 CMM:2H40 CMM H62 CMN:2H6 CMN H61 CMN:1H6 CMN H12 CMN:2H1 CMN H11 CMN:1H1 CMN H2O1 CMN:1H2O CMN H3O1 CMN:1H3O CMN H4O1 CMN:1H4O CMN HOP2 CMP:2HOP CMP H5'1 CMP:1H5* CMP H5'2 CMP:2H5* CMP H4' CMP: H4* CMP H3' CMP: H3* CMP H2' CMP: H2* CMP HO2' CMP:*HO2 CMP H1' CMP: H1* CMP HN61 CMP:1HN6 CMP HN62 CMP:2HN6 CMP H21A CMQ:1H2 CMQ H22A CMQ:2H2 CMQ H111 CMQ:1H11 CMQ H112 CMQ:2H11 CMQ H131 CMQ:1H13 CMQ H132 CMQ:2H13 CMQ H133 CMQ:3H13 CMQ H141 CMQ:1H14 CMQ H142 CMQ:2H14 CMQ H143 CMQ:3H14 CMQ H241 CMQ:1H24 CMQ H242 CMQ:2H24 CMQ H243 CMQ:3H24 CMQ H171 CMQ:1H17 CMQ H172 CMQ:2H17 CMQ HMP1 CMR:1HMP CMR HMP2 CMR:2HMP CMR HMP3 CMR:3HMP CMR H5' CMR:1H5* CMR H5'' CMR:2H5* CMR H4' CMR: H4* CMR H1' CMR: H1* CMR H41 CMR:1H4 CMR H42 CMR:2H4 CMR H3' CMR: H3* CMR H2' CMR:1H2* CMR H2'' CMR:2H2* CMR HO3' CMR:H3T CMR HOP3 CMR:3HOP CMR H21 CMS:1H2 CMS H22 CMS:2H2 CMS H23 CMS:3H2 CMS H31 CMS:1H3 CMS H32 CMS:2H3 CMS HN11 CMS:1HN1 CMS HN12 CMS:2HN1 CMS H2 CMT: HN2 CMT HB2 CMT:1HB CMT HB3 CMT:2HB CMT H11 CMT:1H1 CMT H12 CMT:2H1 CMT H13 CMT:3H1 CMT H4C1 CMU:1H4C CMU H4C2 CMU:2H4C CMU H6C1 CMU:1H6C CMU H6C2 CMU:2H6C CMU H7C1 CMU:1H7C CMU H7C2 CMU:2H7C CMU H8C1 CMU:1H8C CMU H8C2 CMU:2H8C CMU H2A CMX: AH2 CMX H61A CMX:AH61 CMX H62A CMX:AH62 CMX H8A CMX: AH8 CMX H1B CMX:AH1* CMX H2B CMX:AH2* CMX HO2A CMX:AHO2 CMX H3B CMX:AH3* CMX HOA8 CMX:8HOA CMX HOA9 CMX:9HOA CMX H4B CMX:AH4* CMX H51A CMX:AH51 CMX H52A CMX:AH52 CMX HOA2 CMX:2HOA CMX HOA5 CMX:5HOA CMX H121 CMX:1H12 CMX H122 CMX:2H12 CMX H131 CMX:1H13 CMX H132 CMX:2H13 CMX H133 CMX:3H13 CMX H141 CMX:1H14 CMX H142 CMX:2H14 CMX H143 CMX:3H14 CMX H71 CMX:1H7 CMX H72 CMX:2H7 CMX H61 CMX:1H6 CMX H62 CMX:2H6 CMX H31 CMX:1H3 CMX H32 CMX:2H3 CMX H21 CMX:1H2 CMX H22 CMX:2H2 CMX H11 CMX:1H1 CMX H12 CMX:2H1 CMX H2Y1 CMY:1H2Y CMY H2Y2 CMY:2H2Y CMY H3Y1 CMY:1H3Y CMY H3Y2 CMY:2H3Y CMY H4Y1 CMY:1H4Y CMY H4Y2 CMY:2H4Y CMY H5Y1 CMY:1H5Y CMY H5Y2 CMY:2H5Y CMY H6Y1 CMY:1H6Y CMY H6Y2 CMY:2H6Y CMY H7Y1 CMY:1H7Y CMY H7Y2 CMY:2H7Y CMY H11 CMY:1H1 CMY H12 CMY:2H1 CMY H11 CMZ:1H1 CMZ H12 CMZ:2H1 CMZ H13 CMZ:3H1 CMZ H61 CMZ:1H6 CMZ H62 CMZ:2H6 CMZ H63 CMZ:3H6 CMZ H91 CMZ:1H9 CMZ H92 CMZ:2H9 CMZ H121 CMZ:1H12 CMZ H122 CMZ:2H12 CMZ H141 CMZ:1H14 CMZ H142 CMZ:2H14 CMZ H151 CMZ:1H15 CMZ H152 CMZ:2H15 CMZ H171 CMZ:1H17 CMZ H172 CMZ:2H17 CMZ H181 CMZ:1H18 CMZ H182 CMZ:2H18 CMZ H131 CN2:1H13 CN2 H132 CN2:2H13 CN2 H101 CN2:1H10 CN2 H102 CN2:2H10 CN2 H91 CN2:1H9 CN2 H92 CN2:2H9 CN2 H21 CN2:1H2 CN2 H22 CN2:2H2 CN2 H23 CN2:3H2 CN2 H41 CN2:1H4 CN2 H42 CN2:2H4 CN2 H43 CN2:3H4 CN2 H61 CN2:1H6 CN2 H62 CN2:2H6 CN2 H63 CN2:3H6 CN2 H181 CN2:1H18 CN2 H182 CN2:2H18 CN2 H183 CN2:3H18 CN2 HOA2 CNA:2HOA CNA H51A CNA:AH51 CNA H52A CNA:AH52 CNA H4B CNA:AH4* CNA H3B CNA:AH3* CNA HO3A CNA:AHO3 CNA H2B CNA:AH2* CNA HO2A CNA:AHO2 CNA H1B CNA:AH1* CNA H8A CNA: AH8 CNA H61A CNA:AH61 CNA H62A CNA:AH62 CNA H2A CNA: AH2 CNA H51N CNA:NH51 CNA H52N CNA:NH52 CNA H4D CNA:NH4* CNA H4'1 CNA:1H4* CNA H4'2 CNA:2H4* CNA H3D CNA:NH3* CNA HO3N CNA:NHO3 CNA H2D CNA:NH2* CNA HO2N CNA:NHO2 CNA H1D CNA:NH1* CNA H2N CNA: NH2 CNA H71N CNA:NH71 CNA H72N CNA:NH72 CNA H4N CNA: NH4 CNA H5N CNA: NH5 CNA H6N CNA: NH6 CNA H201 CNC:1H20 CNC H202 CNC:2H20 CNC H203 CNC:3H20 CNC H251 CNC:1H25 CNC H252 CNC:2H25 CNC H253 CNC:3H25 CNC H261 CNC:1H26 CNC H262 CNC:2H26 CNC H291 CNC:1H29 CNC H292 CNC:2H29 CNC H301 CNC:1H30 CNC H302 CNC:2H30 CNC H311 CNC:1H31 CNC H312 CNC:2H31 CNC H331 CNC:1H33 CNC H332 CNC:2H33 CNC H351 CNC:1H35 CNC H352 CNC:2H35 CNC H353 CNC:3H35 CNC H361 CNC:1H36 CNC H362 CNC:2H36 CNC H363 CNC:3H36 CNC H371 CNC:1H37 CNC H372 CNC:2H37 CNC H401 CNC:1H40 CNC H402 CNC:2H40 CNC H411 CNC:1H41 CNC H412 CNC:2H41 CNC H421 CNC:1H42 CNC H422 CNC:2H42 CNC H451 CNC:1H45 CNC H452 CNC:2H45 CNC H461 CNC:1H46 CNC H462 CNC:2H46 CNC H463 CNC:3H46 CNC H471 CNC:1H47 CNC H472 CNC:2H47 CNC H473 CNC:3H47 CNC H481 CNC:1H48 CNC H482 CNC:2H48 CNC H491 CNC:1H49 CNC H492 CNC:2H49 CNC H521 CNC:1H52 CNC H522 CNC:2H52 CNC H531 CNC:1H53 CNC H532 CNC:2H53 CNC H533 CNC:3H53 CNC H541 CNC:1H54 CNC H542 CNC:2H54 CNC H543 CNC:3H54 CNC H551 CNC:1H55 CNC H552 CNC:2H55 CNC H561 CNC:1H56 CNC H562 CNC:2H56 CNC H601 CNC:1H60 CNC H602 CNC:2H60 CNC H621 CNC:1H62 CNC H622 CNC:2H62 CNC H1P1 CNC:1H1P CNC H1P2 CNC:2H1P CNC H3P1 CNC:1H3P CNC H3P2 CNC:2H3P CNC H3P3 CNC:3H3P CNC HOP5 CNC:5HOP CNC HOR7 CNC:7HOR CNC H5R1 CNC:1H5R CNC H5R2 CNC:2H5R CNC HOR8 CNC:8HOR CNC HM51 CNC:1HM5 CNC HM52 CNC:2HM5 CNC HM53 CNC:3HM5 CNC HM61 CNC:1HM6 CNC HM62 CNC:2HM6 CNC HM63 CNC:3HM6 CNC HOA2 CND:2HOA CND H51A CND:AH51 CND H52A CND:AH52 CND H4B CND:AH4* CND H3B CND:AH3* CND HO3A CND:AHO3 CND H2B CND:AH2* CND HO2A CND:AHO2 CND H1B CND:AH1* CND H8A CND: AH8 CND H61A CND:AH61 CND H62A CND:AH62 CND H2A CND: AH2 CND H51N CND:NH51 CND H52N CND:NH52 CND H4D CND:NH4* CND H3D CND:NH3* CND HO3N CND:NHO3 CND H2D CND:NH2* CND HO2N CND:NHO2 CND H1D CND:NH1* CND H2N CND: NH2 CND H71N CND:NH71 CND H72N CND:NH72 CND H4N CND: NH4 CND H5N CND: NH5 CND H6N CND: NH6 CND H291 CNE:1H29 CNE H292 CNE:2H29 CNE H293 CNE:3H29 CNE H301 CNE:1H30 CNE H302 CNE:2H30 CNE H311 CNE:1H31 CNE H312 CNE:2H31 CNE H313 CNE:3H31 CNE H191 CNE:1H19 CNE H192 CNE:2H19 CNE H171 CNE:1H17 CNE H172 CNE:2H17 CNE H173 CNE:3H17 CNE H161 CNE:1H16 CNE H162 CNE:2H16 CNE H163 CNE:3H16 CNE H111 CNE:1H11 CNE H112 CNE:2H11 CNE H81 CNE:1H8 CNE H82 CNE:2H8 CNE H71 CNE:1H7 CNE H72 CNE:2H7 CNE HC21 CNH:1HC2 CNH HC22 CNH:2HC2 CNH HC23 CNH:3HC2 CNH HC31 CNH:1HC3 CNH HC32 CNH:2HC3 CNH HC33 CNH:3HC3 CNH H21 CNL:1H2 CNL H22 CNL:2H2 CNL H31 CNL:1H3 CNL H32 CNL:2H3 CNL H51 CNL:1H5 CNL H52 CNL:2H5 CNL H61 CNL:1H6 CNL H62 CNL:2H6 CNL H71 CNL:1H7 CNL H72 CNL:2H7 CNL H73 CNL:3H7 CNL H91 CNL:1H9 CNL H92 CNL:2H9 CNL H93 CNL:3H9 CNL H101 CNL:1H10 CNL H102 CNL:2H10 CNL H103 CNL:3H10 CNL HN1 CNM:1HN CNM HN2 CNM:2HN CNM H21 CNM:1H2 CNM H22 CNM:2H2 CNM H23 CNM:3H2 CNM HN11 CNN:1HN1 CNN HN12 CNN:2HN1 CNN HC51 CNO:1HC5 CNO HC52 CNO:2HC5 CNO H53C CNO:3CH5 CNO HC61 CNO:1HC6 CNO HC62 CNO:2HC6 CNO HC63 CNO:3HC6 CNO H10C CNO:CH10 CNO H11C CNO:CH11 CNO H12C CNO:CH12 CNO H141 CNO:1H14 CNO H142 CNO:2H14 CNO H17N CNO:NH17 CNO H19C CNO:CH19 CNO H20C CNO:CH20 CNO H21C CNO:CH21 CNO H22C CNO:CH22 CNO H24N CNO:NH24 CNO H271 CNO:1H27 CNO H272 CNO:2H27 CNO H29C CNO:CH29 CNO H30C CNO:CH30 CNO H31C CNO:CH31 CNO H32C CNO:CH32 CNO H361 CNO:1H36 CNO H362 CNO:2H36 CNO H363 CNO:3H36 CNO H371 CNO:1H37 CNO H372 CNO:2H37 CNO H373 CNO:3H37 CNO H40O CNO:OH40 CNO HO1B CNP:BHO1 CNP H121 CNP:1H12 CNP H122 CNP:2H12 CNP H141 CNP:1H14 CNP H142 CNP:2H14 CNP H31 CNP:1H3 CNP H32 CNP:2H3 CNP H111 CNP:1H11 CNP H112 CNP:2H11 CNP H113 CNP:3H11 CNP H91 CNP:1H9 CNP H92 CNP:2H9 CNP H121 CNQ:1H12 CNQ H122 CNQ:2H12 CNQ H31 CNR:1H3 CNR H32 CNR:2H3 CNR H33 CNR:3H3 CNR H241 CNS:1H24 CNS H242 CNS:2H24 CNS H243 CNS:3H24 CNS H231 CNS:1H23 CNS H232 CNS:2H23 CNS H221 CNS:1H22 CNS H222 CNS:2H22 CNS H211 CNS:1H21 CNS H212 CNS:2H21 CNS H201 CNS:1H20 CNS H202 CNS:2H20 CNS H191 CNS:1H19 CNS H192 CNS:2H19 CNS H181 CNS:1H18 CNS H182 CNS:2H18 CNS H171 CNS:1H17 CNS H172 CNS:2H17 CNS H161 CNS:1H16 CNS H162 CNS:2H16 CNS H151 CNS:1H15 CNS H152 CNS:2H15 CNS H141 CNS:1H14 CNS H142 CNS:2H14 CNS H131 CNS:1H13 CNS H132 CNS:2H13 CNS H121 CNS:1H12 CNS H122 CNS:2H12 CNS H111 CNS:1H11 CNS H112 CNS:2H11 CNS H101 CNS:1H10 CNS H102 CNS:2H10 CNS H91 CNS:1H9 CNS H92 CNS:2H9 CNS H71 CNS:1H7 CNS H72 CNS:2H7 CNS H61 CNS:1H6 CNS H62 CNS:2H6 CNS H31 CNS:1H3 CNS H32 CNS:2H3 CNS H41 CNS:1H4 CNS H42 CNS:2H4 CNS H51 CNS:1H5 CNS H52 CNS:2H5 CNS H21 CNS:1H2 CNS H22 CNS:2H2 CNS H11 CNS:1H1 CNS H12 CNS:2H1 CNS H13 CNS:3H1 CNS HMC1 CNT:1HMC CNT HMC2 CNT:2HMC CNT HMC3 CNT:3HMC CNT HBC1 CNT:1HBC CNT HBC2 CNT:2HBC CNT H611 CNY:1H61 CNY H612 CNY:2H61 CNY H11A CNY:1H1 CNY H12A CNY:2H1 CNY H121 CNY:1H12 CNY H122 CNY:2H12 CNY H221 CNY:1H22 CNY H222 CNY:2H22 CNY H321 CNY:1H32 CNY H322 CNY:2H32 CNY H531 CNY:1H53 CNY H532 CNY:2H53 CNY H241 CNY:1H24 CNY H242 CNY:2H24 CNY H641 CNY:1H64 CNY H642 CNY:2H64 CNY H21A CNY:1H2 CNY H22 CNY:2H2 CNY H181 CO1:1H18 CO1 H182 CO1:2H18 CO1 H41 CO1:1H4 CO1 H42 CO1:2H4 CO1 H81 CO1:1H8 CO1 H82 CO1:2H8 CO1 H111 CO1:1H11 CO1 H112 CO1:2H11 CO1 H121 CO1:1H12 CO1 H122 CO1:2H12 CO1 H123 CO1:3H12 CO1 H131 CO1:1H13 CO1 H132 CO1:2H13 CO1 H61 CO1:1H6 CO1 H62 CO1:2H6 CO1 H211 CO1:1H21 CO1 H212 CO1:2H21 CO1 H213 CO1:3H21 CO1 H201 CO1:1H20 CO1 H202 CO1:2H20 CO1 H231 CO1:1H23 CO1 H232 CO1:2H23 CO1 H281 CO1:1H28 CO1 H282 CO1:2H28 CO1 H283 CO1:3H28 CO1 H291 CO1:1H29 CO1 H292 CO1:2H29 CO1 H293 CO1:3H29 CO1 H161 CO1:1H16 CO1 H162 CO1:2H16 CO1 H163 CO1:3H16 CO1 H151 CO1:1H15 CO1 H152 CO1:2H15 CO1 H191 CO1:1H19 CO1 H192 CO1:2H19 CO1 H2'1 CO4:1H2* CO4 H2'2 CO4:2H2* CO4 H4'1 CO4:1H4* CO4 H4'2 CO4:2H4* CO4 H7' CO4: H7* CO4 H8'1 CO4:1H8* CO4 H8'2 CO4:2H8* CO4 H5B1 CO4:1H5B CO4 H5B2 CO4:2H5B CO4 H5B3 CO4:3H5B CO4 H4B1 CO4:1H4B CO4 H4B2 CO4:2H4B CO4 H4B3 CO4:3H4B CO4 H3B1 CO4:1H3B CO4 H3B2 CO4:2H3B CO4 H3B3 CO4:3H3B CO4 H9'1 CO4:1H9* CO4 H9'2 CO4:2H9* CO4 H9'3 CO4:3H9* CO4 H511 CO4:1H51 CO4 H512 CO4:2H51 CO4 H513 CO4:3H51 CO4 HO11 CO5:1HO1 CO5 HO12 CO5:2HO1 CO5 HO21 CO5:1HO2 CO5 HO22 CO5:2HO2 CO5 HO31 CO5:1HO3 CO5 HO32 CO5:2HO3 CO5 HO41 CO5:1HO4 CO5 HO42 CO5:2HO4 CO5 HO51 CO5:1HO5 CO5 HO52 CO5:2HO5 CO5 HN61 CO6:1HN6 CO6 HN62 CO6:2HN6 CO6 H1' CO6: H1* CO6 H2' CO6: H2* CO6 H3' CO6: H3* CO6 H4' CO6: H4* CO6 H5'1 CO6:1H5* CO6 H5'2 CO6:2H5* CO6 H121 CO6:1H12 CO6 H122 CO6:2H12 CO6 H131 CO6:1H13 CO6 H132 CO6:2H13 CO6 H133 CO6:3H13 CO6 H141 CO6:1H14 CO6 H142 CO6:2H14 CO6 H143 CO6:3H14 CO6 H71 CO6:1H7 CO6 H72 CO6:2H7 CO6 H61 CO6:1H6 CO6 H62 CO6:2H6 CO6 H31 CO6:1H3 CO6 H32 CO6:2H3 CO6 H21 CO6:1H2 CO6 H22 CO6:2H2 CO6 H11 CO6:1H1 CO6 H12 CO6:2H1 CO6 H13 CO6:3H1 CO6 H41 CO6:1H4 CO6 H42 CO6:2H4 CO6 H43 CO6:3H4 CO6 H2A CO8: AH2 CO8 H61A CO8:AH61 CO8 H62A CO8:AH62 CO8 H8A CO8: AH8 CO8 H1B CO8:AH1* CO8 H2B CO8:AH2* CO8 HO2A CO8:AHO2 CO8 H3B CO8:AH3* CO8 HOA8 CO8:8HOA CO8 HOA9 CO8:9HOA CO8 H4B CO8:AH4* CO8 H51A CO8:AH51 CO8 H52A CO8:AH52 CO8 HOA2 CO8:2HOA CO8 HOA5 CO8:5HOA CO8 H121 CO8:1H12 CO8 H122 CO8:2H12 CO8 H131 CO8:1H13 CO8 H132 CO8:2H13 CO8 H133 CO8:3H13 CO8 H141 CO8:1H14 CO8 H142 CO8:2H14 CO8 H143 CO8:3H14 CO8 H71 CO8:1H7 CO8 H72 CO8:2H7 CO8 H61 CO8:1H6 CO8 H62 CO8:2H6 CO8 H31 CO8:1H3 CO8 H32 CO8:2H3 CO8 H21 CO8:1H2 CO8 H22 CO8:2H2 CO8 H2'1 CO8:1H2* CO8 H2'2 CO8:2H2* CO8 H3'1 CO8:1H3* CO8 H3'2 CO8:2H3* CO8 H4'1 CO8:1H4* CO8 H4'2 CO8:2H4* CO8 H5'1 CO8:1H5* CO8 H5'2 CO8:2H5* CO8 H6'1 CO8:1H6* CO8 H6'2 CO8:2H6* CO8 H7'1 CO8:1H7* CO8 H7'2 CO8:2H7* CO8 H8'1 CO8:1H8* CO8 H8'2 CO8:2H8* CO8 H8'3 CO8:3H8* CO8 H11A CO9:1H1 CO9 H12 CO9:2H1 CO9 H13 CO9:3H1 CO9 HN11 CO9:1HN1 CO9 HN12 CO9:2HN1 CO9 H61 CO9:1H6 CO9 H62 CO9:2H6 CO9 H71 CO9:1H7 CO9 H72 CO9:2H7 CO9 H81 CO9:1H8 CO9 H82 CO9:2H8 CO9 H121 CO9:1H12 CO9 H122 CO9:2H12 CO9 H2A COA: AH2 COA H61A COA:AH61 COA H62A COA:AH62 COA H8A COA: AH8 COA H1B COA:AH1* COA H2B COA:AH2* COA HO2A COA:AHO2 COA H3B COA:AH3* COA HOA8 COA:8HOA COA HOA9 COA:9HOA COA H4B COA:AH4* COA H51A COA:AH51 COA H52A COA:AH52 COA HOA2 COA:2HOA COA HOA5 COA:5HOA COA H121 COA:1H12 COA H122 COA:2H12 COA H131 COA:1H13 COA H132 COA:2H13 COA H133 COA:3H13 COA H141 COA:1H14 COA H142 COA:2H14 COA H143 COA:3H14 COA H71 COA:1H7 COA H72 COA:2H7 COA H61 COA:1H6 COA H62 COA:2H6 COA H31 COA:1H3 COA H32 COA:2H3 COA H21 COA:1H2 COA H22 COA:2H2 COA H201 COB:1H20 COB H202 COB:2H20 COB H203 COB:3H20 COB H251 COB:1H25 COB H252 COB:2H25 COB H253 COB:3H25 COB H261 COB:1H26 COB H262 COB:2H26 COB H291 COB:1H29 COB H292 COB:2H29 COB H301 COB:1H30 COB H302 COB:2H30 COB H311 COB:1H31 COB H312 COB:2H31 COB H331 COB:1H33 COB H332 COB:2H33 COB H351 COB:1H35 COB H352 COB:2H35 COB H353 COB:3H35 COB H361 COB:1H36 COB H362 COB:2H36 COB H363 COB:3H36 COB H371 COB:1H37 COB H372 COB:2H37 COB H401 COB:1H40 COB H402 COB:2H40 COB H411 COB:1H41 COB H412 COB:2H41 COB H421 COB:1H42 COB H422 COB:2H42 COB H451 COB:1H45 COB H452 COB:2H45 COB H461 COB:1H46 COB H462 COB:2H46 COB H463 COB:3H46 COB H471 COB:1H47 COB H472 COB:2H47 COB H473 COB:3H47 COB H481 COB:1H48 COB H482 COB:2H48 COB H491 COB:1H49 COB H492 COB:2H49 COB H521 COB:1H52 COB H522 COB:2H52 COB H531 COB:1H53 COB H532 COB:2H53 COB H533 COB:3H53 COB H541 COB:1H54 COB H542 COB:2H54 COB H543 COB:3H54 COB H551 COB:1H55 COB H552 COB:2H55 COB H561 COB:1H56 COB H562 COB:2H56 COB H601 COB:1H60 COB H602 COB:2H60 COB H621 COB:1H62 COB H622 COB:2H62 COB H1P1 COB:1H1P COB H1P2 COB:2H1P COB H3P1 COB:1H3P COB H3P2 COB:2H3P COB H3P3 COB:3H3P COB HOP5 COB:5HOP COB HOR7 COB:7HOR COB H5R1 COB:1H5R COB H5R2 COB:2H5R COB HOR8 COB:8HOR COB HM51 COB:1HM5 COB HM52 COB:2HM5 COB HM53 COB:3HM5 COB HM61 COB:1HM6 COB HM62 COB:2HM6 COB HM63 COB:3HM6 COB H1A1 COB:1H1A COB H1A2 COB:2H1A COB H1A3 COB:3H1A COB HN71 COD:1HN7 COD HN72 COD:2HN7 COD H181 COD:1H18 COD H182 COD:2H18 COD H281 COD:1H28 COD H282 COD:2H28 COD H301 COD:1H30 COD H302 COD:2H30 COD H303 COD:3H30 COD H311 COD:1H31 COD H312 COD:2H31 COD H313 COD:3H31 COD H371 COD:1H37 COD H372 COD:2H37 COD H381 COD:1H38 COD H382 COD:2H38 COD H421 COD:1H42 COD H422 COD:2H42 COD H431 COD:1H43 COD H432 COD:2H43 COD HN21 COE:1HN2 COE HN22 COE:2HN2 COE HN41 COE:1HN4 COE HN42 COE:2HN4 COE H91 COE:1H9 COE H92 COE:2H9 COE H101 COE:1H10 COE H102 COE:2H10 COE H103 COE:3H10 COE HB1 COE:1HB COE HB2 COE:2HB COE HG1 COE:1HG COE HG2 COE:2HG COE HOE2 COE:2HOE COE H2A COF: AH2 COF H61A COF:AH61 COF H62A COF:AH62 COF H8A COF: AH8 COF H1B COF:AH1* COF H2B COF:AH2* COF HO2A COF:AHO2 COF H3B COF:AH3* COF HOA8 COF:8HOA COF HOA9 COF:9HOA COF H4B COF:AH4* COF H51A COF:AH51 COF H52A COF:AH52 COF HOA2 COF:2HOA COF HOA5 COF:5HOA COF H121 COF:1H12 COF H122 COF:2H12 COF H131 COF:1H13 COF H132 COF:2H13 COF H133 COF:3H13 COF H141 COF:1H14 COF H142 COF:2H14 COF H143 COF:3H14 COF H71 COF:1H7 COF H72 COF:2H7 COF H61 COF:1H6 COF H62 COF:2H6 COF H31 COF:1H3 COF H32 COF:2H3 COF H21 COF:1H2 COF H22 COF:2H2 COF HI11 COF:1HI1 COF HI12 COF:2HI1 COF H5' COG: H5* COG H7' COG: H7* COG H211 COG:1H21 COG H212 COG:2H21 COG H213 COG:3H21 COG H7'1 COG:1H7' COG H7'2 COG:2H7' COG H611 COG:1H61 COG H612 COG:2H61 COG H613 COG:3H61 COG H511 COG:1H51 COG H512 COG:2H51 COG H513 COG:3H51 COG HN21 COG:1HN2 COG HN22 COG:2HN2 COG HN41 COG:1HN4 COG HN42 COG:2HN4 COG H8' COG: H8* COG HMA1 COH:1HMA COH HMA2 COH:2HMA COH HMA3 COH:3HMA COH HAA1 COH:1HAA COH HAA2 COH:2HAA COH HBA1 COH:1HBA COH HBA2 COH:2HBA COH HMB1 COH:1HMB COH HMB2 COH:2HMB COH HMB3 COH:3HMB COH HBB1 COH:1HBB COH HBB2 COH:2HBB COH HMC1 COH:1HMC COH HMC2 COH:2HMC COH HMC3 COH:3HMC COH HBC1 COH:1HBC COH HBC2 COH:2HBC COH HMD1 COH:1HMD COH HMD2 COH:2HMD COH HMD3 COH:3HMD COH HAD1 COH:1HAD COH HAD2 COH:2HAD COH HBD1 COH:1HBD COH HBD2 COH:2HBD COH H31 COI:1H3 COI H32 COI:2H3 COI H51 COI:1H5 COI H52 COI:2H5 COI H53 COI:3H5 COI H61 COI:1H6 COI H62 COI:2H6 COI H63 COI:3H6 COI H481 COJ:1H48 COJ H482 COJ:2H48 COJ H491 COJ:1H49 COJ H492 COJ:2H49 COJ H461 COJ:1H46 COJ H462 COJ:2H46 COJ H463 COJ:3H46 COJ H471 COJ:1H47 COJ H472 COJ:2H47 COJ H473 COJ:3H47 COJ H601 COJ:1H60 COJ H602 COJ:2H60 COJ H541 COJ:1H54 COJ H542 COJ:2H54 COJ H543 COJ:3H54 COJ H551 COJ:1H55 COJ H552 COJ:2H55 COJ H561 COJ:1H56 COJ H562 COJ:2H56 COJ H421 COJ:1H42 COJ H422 COJ:2H42 COJ H251 COJ:1H25 COJ H252 COJ:2H25 COJ H253 COJ:3H25 COJ H261 COJ:1H26 COJ H262 COJ:2H26 COJ H31 COJ:1H3 COJ H301 COJ:1H30 COJ H302 COJ:2H30 COJ H641 COJ:1H64 COJ H642 COJ:2H64 COJ H643 COJ:3H64 COJ H201 COJ:1H20 COJ H202 COJ:2H20 COJ H203 COJ:3H20 COJ H311 COJ:1H31 COJ H312 COJ:2H31 COJ H361 COJ:1H36 COJ H362 COJ:2H36 COJ H363 COJ:3H36 COJ H371 COJ:1H37 COJ H372 COJ:2H37 COJ H411 COJ:1H41 COJ H412 COJ:2H41 COJ H351 COJ:1H35 COJ H352 COJ:2H35 COJ H353 COJ:3H35 COJ HN61 COK:1HN6 COK HN62 COK:2HN6 COK H1' COK: H1* COK H2' COK: H2* COK H3' COK: H3* COK H4' COK: H4* COK H5'1 COK:1H5* COK H5'2 COK:2H5* COK H121 COK:1H12 COK H122 COK:2H12 COK H131 COK:1H13 COK H132 COK:2H13 COK H133 COK:3H13 COK H141 COK:1H14 COK H142 COK:2H14 COK H143 COK:3H14 COK H71 COK:1H7 COK H72 COK:2H7 COK H61 COK:1H6 COK H62 COK:2H6 COK H31 COK:1H3 COK H32 COK:2H3 COK H21 COK:1H2 COK H22 COK:2H2 COK H501 COK:1H50 COK H502 COK:2H50 COK H511 COK:1H51 COK H512 COK:2H51 COK H21 COL:1H2 COL H22A COL:2H2 COL H51 COL:1H5 COL H52 COL:2H5 COL H61 COL:1H6 COL H62 COL:2H6 COL H11 COM:1H1 COM H12 COM:2H1 COM H21 COM:1H2 COM H22 COM:2H2 COM HOS3 COM:3HOS COM HN11 CON:1HN1 CON HN12 CON:2HN1 CON HN13 CON:3HN1 CON HN21 CON:1HN2 CON HN22 CON:2HN2 CON HN23 CON:3HN2 CON HN31 CON:1HN3 CON HN32 CON:2HN3 CON HN33 CON:3HN3 CON HN41 CON:1HN4 CON HN42 CON:2HN4 CON HN43 CON:3HN4 CON H21 COO:1H2 COO H22 COO:2H2 COO H31 COO:1H3 COO H32 COO:2H3 COO H51 COO:1H5 COO H52 COO:2H5 COO H61 COO:1H6 COO H62 COO:2H6 COO H101 COO:1H10 COO H102 COO:2H10 COO H103 COO:3H10 COO H151 COO:1H15 COO H152 COO:2H15 COO H153 COO:3H15 COO H141 COO:1H14 COO H142 COO:2H14 COO H143 COO:3H14 COO H121 COO:1H12 COO H122 COO:2H12 COO H5X1 COO:1H5X COO H5X2 COO:2H5X COO H6A1 COO:1H6A COO H6A2 COO:2H6A COO H111 COP:1H11 COP H112 COP:2H11 COP H271 COP:1H27 COP H272 COP:2H27 COP H281 COP:1H28 COP H282 COP:2H28 COP H291 COP:1H29 COP H292 COP:2H29 COP HN31 COP:1HN3 COP HN32 COP:2HN3 COP HN11 COP:1HN1 COP HN12 COP:2HN1 COP H5' COQ: H5* COQ H7' COQ: H7* COQ H9'1 COQ:1H9* COQ H9'2 COQ:2H9* COQ H311 COQ:1H31 COQ H312 COQ:2H31 COQ H313 COQ:3H31 COQ H511 COQ:1H51 COQ H512 COQ:2H51 COQ H513 COQ:3H51 COQ HCN1 COQ:1HCN COQ HCN2 COQ:2HCN COQ HCN3 COQ:3HCN COQ HN21 COQ:1HN2 COQ HN22 COQ:2HN2 COQ HN41 COQ:1HN4 COQ HN42 COQ:2HN4 COQ H11 COR:1H1 COR H12 COR:2H1 COR HN21 COR:1HN2 COR HN22 COR:2HN2 COR HN41 COR:1HN4 COR HN42 COR:2HN4 COR H51 COR:1H5 COR H52 COR:2H5 COR H2A COS: AH2 COS H61A COS:AH61 COS H62A COS:AH62 COS H8A COS: AH8 COS H1B COS:AH1* COS H2B COS:AH2* COS HO2A COS:AHO2 COS H3B COS:AH3* COS HOA8 COS:8HOA COS HOA9 COS:9HOA COS H4B COS:AH4* COS H51A COS:AH51 COS H52A COS:AH52 COS HOA2 COS:2HOA COS HOA5 COS:5HOA COS H121 COS:1H12 COS H122 COS:2H12 COS H131 COS:1H13 COS H132 COS:2H13 COS H133 COS:3H13 COS H141 COS:1H14 COS H142 COS:2H14 COS H143 COS:3H14 COS H71 COS:1H7 COS H72 COS:2H7 COS H61 COS:1H6 COS H62 COS:2H6 COS H31 COS:1H3 COS H32 COS:2H3 COS H21 COS:1H2 COS H22 COS:2H2 COS HS'P COS:PHS' COS H1T1 COT:1H1T COT H1T2 COT:2H1T COT H6T1 COT:1H6T COT H6T2 COT:2H6T COT H2T1 COT:1H2T COT H2T2 COT:2H2T COT HC51 COT:1HC5 COT HC52 COT:2HC5 COT HN61 COT:1HN6 COT HN62 COT:2HN6 COT HCA2 COT:2HCA COT H6P1 COT:1H6P COT H6P2 COT:2H6P COT H7P1 COT:1H7P COT H7P2 COT:2H7P COT H161 COT:1H16 COT H162 COT:2H16 COT H141 COT:1H14 COT H142 COT:2H14 COT H143 COT:3H14 COT H151 COT:1H15 COT H152 COT:2H15 COT H153 COT:3H15 COT H2P1 COT:1H2P COT H2P2 COT:2H2P COT H1P1 COT:1H1P COT H1P2 COT:2H1P COT HN11 COX:1HN1 COX HN12 COX:2HN1 COX H91 COX:1H9 COX H92 COX:2H9 COX H93 COX:3H9 COX H201 COY:1H20 COY H202 COY:2H20 COY H203 COY:3H20 COY H251 COY:1H25 COY H252 COY:2H25 COY H253 COY:3H25 COY H261 COY:1H26 COY H262 COY:2H26 COY H291 COY:1H29 COY H292 COY:2H29 COY H301 COY:1H30 COY H302 COY:2H30 COY H311 COY:1H31 COY H312 COY:2H31 COY H331 COY:1H33 COY H332 COY:2H33 COY H351 COY:1H35 COY H352 COY:2H35 COY H353 COY:3H35 COY H66 COY:6H6 COY H361 COY:1H36 COY H362 COY:2H36 COY H363 COY:3H36 COY H371 COY:1H37 COY H372 COY:2H37 COY H401 COY:1H40 COY H402 COY:2H40 COY H411 COY:1H41 COY H412 COY:2H41 COY H421 COY:1H42 COY H422 COY:2H42 COY H451 COY:1H45 COY H452 COY:2H45 COY H111 COY:11H1 COY H461 COY:1H46 COY H462 COY:2H46 COY H463 COY:3H46 COY H471 COY:1H47 COY H472 COY:2H47 COY H473 COY:3H47 COY H481 COY:1H48 COY H482 COY:2H48 COY H491 COY:1H49 COY H492 COY:2H49 COY H521 COY:1H52 COY H522 COY:2H52 COY H531 COY:1H53 COY H532 COY:2H53 COY H533 COY:3H53 COY H116 COY:16H1 COY H541 COY:1H54 COY H542 COY:2H54 COY H543 COY:3H54 COY H551 COY:1H55 COY H552 COY:2H55 COY H561 COY:1H56 COY H562 COY:2H56 COY H601 COY:1H60 COY H602 COY:2H60 COY H621 COY:1H62 COY H622 COY:2H62 COY H119 COY:19H1 COY H1P1 COY:1H1P COY H1P2 COY:2H1P COY H3P1 COY:1H3P COY H3P2 COY:2H3P COY H3P3 COY:3H3P COY HOP5 COY:5HOP COY HOR7 COY:7HOR COY H5R1 COY:1H5R COY H5R2 COY:2H5R COY HOR8 COY:8HOR COY HM51 COY:1HM5 COY HM52 COY:2HM5 COY HM53 COY:3HM5 COY HM61 COY:1HM6 COY HM62 COY:2HM6 COY HM63 COY:3HM6 COY H711 COY:1H71 COY H712 COY:2H71 COY H721 COY:1H72 COY H722 COY:2H72 COY H731 COY:1H73 COY H732 COY:2H73 COY H741 COY:1H74 COY H742 COY:2H74 COY H751 COY:1H75 COY H752 COY:2H75 COY H6A1 COY:1H6A COY H6A2 COY:2H6A COY H2A COZ: AH2 COZ H61A COZ:AH61 COZ H62A COZ:AH62 COZ H8A COZ: AH8 COZ H1B COZ:AH1* COZ H2B COZ:AH2* COZ HO2A COZ:AHO2 COZ H3B COZ:AH3* COZ HOA8 COZ:8HOA COZ HOA9 COZ:9HOA COZ H4B COZ:AH4* COZ H51A COZ:AH51 COZ H52A COZ:AH52 COZ HOA2 COZ:2HOA COZ HOA5 COZ:5HOA COZ H121 COZ:1H12 COZ H122 COZ:2H12 COZ H131 COZ:1H13 COZ H132 COZ:2H13 COZ H133 COZ:3H13 COZ H141 COZ:1H14 COZ H142 COZ:2H14 COZ H143 COZ:3H14 COZ H71 COZ:1H7 COZ H72 COZ:2H7 COZ H61 COZ:1H6 COZ H62 COZ:2H6 COZ H31 COZ:1H3 COZ H32 COZ:2H3 COZ H21 COZ:1H2 COZ H22 COZ:2H2 COZ HN1 CP:1HN CP HN2 CP:2HN CP HOP2 CP:2HOP CP HOP3 CP:3HOP CP H171 CP0:1H17 CP0 H172 CP0:2H17 CP0 H51 CP0:1H5 CP0 H52 CP0:2H5 CP0 H281 CP0:1H28 CP0 H282 CP0:2H28 CP0 H311 CP0:1H31 CP0 H312 CP0:2H31 CP0 H321 CP0:1H32 CP0 H322 CP0:2H32 CP0 H323 CP0:3H32 CP0 H331 CP0:1H33 CP0 H332 CP0:2H33 CP0 H333 CP0:3H33 CP0 H251 CP0:1H25 CP0 H252 CP0:2H25 CP0 H221 CP0:1H22 CP0 H222 CP0:2H22 CP0 H261 CP0:1H26 CP0 H262 CP0:2H26 CP0 H291 CP0:1H29 CP0 H292 CP0:2H29 CP0 H341 CP0:1H34 CP0 H342 CP0:2H34 CP0 H351 CP0:1H35 CP0 H352 CP0:2H35 CP0 H271 CP0:1H27 CP0 H272 CP0:2H27 CP0 H301 CP0:1H30 CP0 H302 CP0:2H30 CP0 H11A CP0:1H1 CP0 H12A CP0:2H1 CP0 H8'1 CP1:1H8' CP1 H8'2 CP1:2H8' CP1 H5'1 CP1:1H5' CP1 H5'2 CP1:2H5' CP1 H3'1 CP1:1H3' CP1 H3'2 CP1:2H3' CP1 H2'1 CP1:1H2' CP1 H2'2 CP1:2H2' CP1 H1'1 CP1:1H1' CP1 H1'2 CP1:2H1' CP1 H1'3 CP1:3H1' CP1 HN41 CP1:1HN4 CP1 HN42 CP1:2HN4 CP1 HC21 CP2:1HC2 CP2 HC22 CP2:2HC2 CP2 HC31 CP2:1HC3 CP2 HC41 CP2:1HC4 CP2 HC42 CP2:2HC4 CP2 HC43 CP2:3HC4 CP2 H621 CP3:1H62 CP3 H622 CP3:2H62 CP3 H611 CP3:1H61 CP3 H612 CP3:2H61 CP3 H201 CP3:1H20 CP3 H202 CP3:2H20 CP3 H861 CP3:1H86 CP3 H862 CP3:2H86 CP3 H863 CP3:3H86 CP3 H151 CP3:1H15 CP3 H152 CP3:2H15 CP3 H511 CP3:1H51 CP3 H512 CP3:2H51 CP3 H521 CP3:1H52 CP3 H522 CP3:2H52 CP3 H811 CP3:1H81 CP3 H812 CP3:2H81 CP3 H813 CP3:3H81 CP3 H101 CP3:1H10 CP3 H102 CP3:2H10 CP3 H7A1 CP3:1H7A CP3 H7A2 CP3:2H7A CP3 H7A3 CP3:3H7A CP3 H411 CP3:1H41 CP3 H412 CP3:2H41 CP3 H421 CP3:1H42 CP3 H422 CP3:2H42 CP3 H51 CP3:1H5 CP3 H52 CP3:2H5 CP3 H2A1 CP3:1H2A CP3 H2A2 CP3:2H2A CP3 H2A3 CP3:3H2A CP3 H311 CP3:1H31 CP3 H312 CP3:2H31 CP3 H321 CP3:1H32 CP3 H322 CP3:2H32 CP3 H131 CP4:1H13 CP4 H132 CP4:2H13 CP4 H141 CP4:1H14 CP4 H142 CP4:2H14 CP4 H161 CP4:1H16 CP4 H162 CP4:2H16 CP4 H171 CP4:1H17 CP4 H172 CP4:2H17 CP4 H191 CP4:1H19 CP4 H192 CP4:2H19 CP4 H201 CP4:1H20 CP4 H202 CP4:2H20 CP4 H131 CP6:1H13 CP6 H132 CP6:2H13 CP6 H141 CP6:1H14 CP6 H142 CP6:2H14 CP6 H151 CP6:1H15 CP6 H152 CP6:2H15 CP6 H161 CP6:1H16 CP6 H162 CP6:2H16 CP6 H163 CP6:3H16 CP6 H131 CP7:1H13 CP7 H132 CP7:2H13 CP7 H141 CP7:1H14 CP7 H142 CP7:2H14 CP7 H151 CP7:1H15 CP7 H152 CP7:2H15 CP7 H161 CP7:1H16 CP7 H162 CP7:2H16 CP7 H163 CP7:3H16 CP7 H6C1 CP8:1H6C CP8 H6C2 CP8:2H6C CP8 H8C1 CP8:1H8C CP8 H8C2 CP8:2H8C CP8 H8C3 CP8:3H8C CP8 H141 CP8:1H14 CP8 H142 CP8:2H14 CP8 H171 CP8:1H17 CP8 H172 CP8:2H17 CP8 H181 CP8:1H18 CP8 H182 CP8:2H18 CP8 H101 CP9:1H10 CP9 H102 CP9:2H10 CP9 H261 CP9:1H26 CP9 H262 CP9:2H26 CP9 H263 CP9:3H26 CP9 HOP2 CPA:2HOP CPA HO5C CPA:CHO5 CPA H51C CPA:CH51 CPA H52C CPA:CH52 CPA H4D CPA:CH4' CPA H3D CPA:CH3' CPA H21C CPA:CH21 CPA H22C CPA:CH22 CPA H1D CPA:CH1' CPA H5C CPA: CH5 CPA H6C CPA: CH6 CPA H41C CPA:CH41 CPA H42C CPA:CH42 CPA H51A CPA:AH51 CPA H52A CPA:AH52 CPA H4B CPA:AH4' CPA H3B CPA:AH3' CPA HO3A CPA:AHO3 CPA H21A CPA:AH21 CPA H22A CPA:AH22 CPA H1B CPA:AH1' CPA H8A CPA: AH8 CPA H61A CPA:AH61 CPA H62A CPA:AH62 CPA H2A CPA: AH2 CPA H11 CPB:1H1 CPB H12 CPB:2H1 CPB H13 CPB:3H1 CPB H161 CPB:1H16 CPB H162 CPB:2H16 CPB H151 CPB:1H15 CPB H152 CPB:2H15 CPB H141 CPB:1H14 CPB H131 CPB:1H13 CPB H121 CPB:1H12 CPB H122 CPB:2H12 CPB H31 CPB:1H3 CPB H61 CPB:1H6 CPB H231 CPB:1H23 CPB H241 CPB:1H24 CPB H251 CPB:1H25 CPB H261 CPB:1H26 CPB H CPC: HN CPC HCN1 CPC:1HCN CPC HCN2 CPC:2HCN CPC HCN3 CPC:3HCN CPC HG13 CPC:1HG1 CPC HG12 CPC:2HG1 CPC HG21 CPC:1HG2 CPC HG22 CPC:2HG2 CPC HG23 CPC:3HG2 CPC H41 CPD:1H4 CPD H42 CPD:2H4 CPD H121 CPD:1H12 CPD H122 CPD:2H12 CPD H221 CPD:1H22 CPD H222 CPD:2H22 CPD H231 CPD:1H23 CPD H232 CPD:2H23 CPD H233 CPD:3H23 CPD H241 CPD:1H24 CPD H242 CPD:2H24 CPD H251 CPD:1H25 CPD H252 CPD:2H25 CPD H261 CPD:1H26 CPD H262 CPD:2H26 CPD H271 CPD:1H27 CPD H272 CPD:2H27 CPD H273 CPD:3H27 CPD H281 CPD:1H28 CPD H282 CPD:2H28 CPD H283 CPD:3H28 CPD H21 CPE:1H2 CPE H22 CPE:2H2 CPE H31 CPE:1H3 CPE H32 CPE:2H3 CPE H41 CPE:1H4 CPE H42 CPE:2H4 CPE H51 CPE:1H5 CPE H52 CPE:2H5 CPE H171 CPF:1H17 CPF H172 CPF:2H17 CPF H161 CPF:1H16 CPF H162 CPF:2H16 CPF H151 CPF:1H15 CPF H152 CPF:2H15 CPF H141 CPF:1H14 CPF H142 CPF:2H14 CPF H121 CPF:1H12 CPF H122 CPF:2H12 CPF H131 CPF:1H13 CPF H132 CPF:2H13 CPF HOP2 CPG:2HOP CPG HOP3 CPG:3HOP CPG H5'1 CPG:1H5* CPG H5'2 CPG:2H5* CPG H4' CPG: H4* CPG H3' CPG: H3* CPG HO3' CPG:*HO3 CPG H2' CPG: H2* CPG HO2' CPG:*HO2 CPG H1' CPG: H1* CPG HN21 CPG:1HN2 CPG HN22 CPG:2HN2 CPG H41 CPH:1H4 CPH H42 CPH:2H4 CPH H101 CPH:1H10 CPH H102 CPH:2H10 CPH H71 CPH:1H7 CPH H72 CPH:2H7 CPH H73 CPH:3H7 CPH H1' CPH: H1* CPH H3' CPH: H3* CPH H4' CPH: H4* CPH H51 CPH:1H5 CPH H52 CPH:2H5 CPH H53 CPH:3H5 CPH H21 CPI:1H2 CPI H22 CPI:2H2 CPI H31 CPI:1H3 CPI H32 CPI:2H3 CPI H41 CPI:1H4 CPI H42 CPI:2H4 CPI H51 CPI:1H5 CPI H52 CPI:2H5 CPI H281 CPJ:1H28 CPJ H282 CPJ:2H28 CPJ H321 CPJ:1H32 CPJ H322 CPJ:2H32 CPJ H323 CPJ:3H32 CPJ H241 CPJ:1H24 CPJ H242 CPJ:2H24 CPJ H161 CPJ:1H16 CPJ H162 CPJ:2H16 CPJ H151 CPJ:1H15 CPJ H152 CPJ:2H15 CPJ H21 CPJ:1H2 CPJ H22 CPJ:2H2 CPJ H41 CPJ:1H4 CPJ H42 CPJ:2H4 CPJ H101 CPJ:1H10 CPJ H102 CPJ:2H10 CPJ H103 CPJ:3H10 CPJ H281 CPK:1H28 CPK H282 CPK:2H28 CPK H321 CPK:1H32 CPK H322 CPK:2H32 CPK H323 CPK:3H32 CPK H241 CPK:1H24 CPK H242 CPK:2H24 CPK H161 CPK:1H16 CPK H162 CPK:2H16 CPK H151 CPK:1H15 CPK H152 CPK:2H15 CPK H181 CPK:1H18 CPK H182 CPK:2H18 CPK H191 CPK:1H19 CPK H192 CPK:2H19 CPK H21 CPK:1H2 CPK H22 CPK:2H2 CPK H41 CPK:1H4 CPK H42 CPK:2H4 CPK H101 CPK:1H10 CPK H102 CPK:2H10 CPK H103 CPK:3H10 CPK HC11 CPL:1HC1 CPL HC12 CPL:2HC1 CPL HC31 CPL:1HC3 CPL HC32 CPL:2HC3 CPL HC41 CPL:1HC4 CPL HC42 CPL:2HC4 CPL HC51 CPL:1HC5 CPL HC52 CPL:2HC5 CPL HC61 CPL:1HC6 CPL HC62 CPL:2HC6 CPL HC63 CPL:3HC6 CPL HC71 CPL:1HC7 CPL HC72 CPL:2HC7 CPL HC73 CPL:3HC7 CPL HC81 CPL:1HC8 CPL HC82 CPL:2HC8 CPL HC83 CPL:3HC8 CPL H121 CPL:1H12 CPL H122 CPL:2H12 CPL H131 CPL:1H13 CPL H132 CPL:2H13 CPL H141 CPL:1H14 CPL H142 CPL:2H14 CPL H151 CPL:1H15 CPL H152 CPL:2H15 CPL H161 CPL:1H16 CPL H162 CPL:2H16 CPL H171 CPL:1H17 CPL H172 CPL:2H17 CPL H181 CPL:1H18 CPL H182 CPL:2H18 CPL H191 CPL:1H19 CPL H192 CPL:2H19 CPL H201 CPL:1H20 CPL H202 CPL:2H20 CPL H211 CPL:1H21 CPL H212 CPL:2H21 CPL H221 CPL:1H22 CPL H222 CPL:2H22 CPL H231 CPL:1H23 CPL H232 CPL:2H23 CPL H241 CPL:1H24 CPL H242 CPL:2H24 CPL H251 CPL:1H25 CPL H252 CPL:2H25 CPL H261 CPL:1H26 CPL H262 CPL:2H26 CPL H263 CPL:3H26 CPL H321 CPL:1H32 CPL H322 CPL:2H32 CPL H331 CPL:1H33 CPL H332 CPL:2H33 CPL H341 CPL:1H34 CPL H342 CPL:2H34 CPL H351 CPL:1H35 CPL H352 CPL:2H35 CPL H361 CPL:1H36 CPL H362 CPL:2H36 CPL H371 CPL:1H37 CPL H372 CPL:2H37 CPL H381 CPL:1H38 CPL H382 CPL:2H38 CPL H411 CPL:1H41 CPL H412 CPL:2H41 CPL H441 CPL:1H44 CPL H442 CPL:2H44 CPL H451 CPL:1H45 CPL H452 CPL:2H45 CPL H461 CPL:1H46 CPL H462 CPL:2H46 CPL H471 CPL:1H47 CPL H472 CPL:2H47 CPL H481 CPL:1H48 CPL H482 CPL:2H48 CPL H483 CPL:3H48 CPL HA11 CPM:1HA1 CPM HA12 CPM:2HA1 CPM HB1 CPM:1HB CPM HB2 CPM:2HB CPM HM1 CPM:1HM CPM HM2 CPM:2HM CPM HM3 CPM:3HM CPM H8'1 CPN:1H8' CPN H8'2 CPN:2H8' CPN H5'1 CPN:1H5' CPN H5'2 CPN:2H5' CPN H3'1 CPN:1H3' CPN H3'2 CPN:2H3' CPN H2'1 CPN:1H2' CPN H2'2 CPN:2H2' CPN H1'1 CPN:1H1' CPN H1'2 CPN:2H1' CPN H1'3 CPN:3H1' CPN HN41 CPN:1HN4 CPN HN42 CPN:2HN4 CPN H21 CPO:1H2 CPO H31 CPO:1H3 CPO H32 CPO:2H3 CPO H41 CPO:1H4 CPO H42 CPO:2H4 CPO H51 CPO:1H5 CPO H52 CPO:2H5 CPO HN21 CPO:1HN2 CPO H81 CPO:1H8 CPO H91 CPO:1H9 CPO H92 CPO:2H9 CPO H101 CPO:1H10 CPO H102 CPO:2H10 CPO H111 CPO:1H11 CPO H112 CPO:2H11 CPO HN31 CPO:1HN3 CPO H121 CPO:1H12 CPO H122 CPO:2H12 CPO H123 CPO:3H12 CPO H141 CPO:1H14 CPO H142 CPO:2H14 CPO H151 CPO:1H15 CPO H152 CPO:2H15 CPO H161 CPO:1H16 CPO H181 CPO:1H18 CPO H201 CPO:1H20 CPO H202 CPO:2H20 CPO H211 CPO:1H21 CPO H212 CPO:2H21 CPO H241 CPO:1H24 CPO H251 CPO:1H25 CPO H252 CPO:2H25 CPO H261 CPO:1H26 CPO H262 CPO:2H26 CPO H271 CPO:1H27 CPO H272 CPO:2H27 CPO H292 CPO:2H29 CPO H311 CPO:1H31 CPO H312 CPO:2H31 CPO H321 CPO:1H32 CPO H322 CPO:2H32 CPO H331 CPO:1H33 CPO H332 CPO:2H33 CPO H333 CPO:3H33 CPO HN61 CPO:1HN6 CPO H351 CPO:1H35 CPO H352 CPO:2H35 CPO H353 CPO:3H35 CPO H191 CPO:1H19 CPO H192 CPO:2H19 CPO H193 CPO:3H19 CPO H31 CPP:1H3 CPP H32 CPP:2H3 CPP H33 CPP:3H3 CPP H2'1 CPP:1H2' CPP H2'2 CPP:2H2' CPP H3'1 CPP:1H3' CPP H3'2 CPP:2H3' CPP H4'1 CPP:1H4' CPP H4'2 CPP:2H4' CPP H11 CPQ:1H1 CPQ H12 CPQ:2H1 CPQ H31 CPQ:1H3 CPQ H32 CPQ:2H3 CPQ H71 CPQ:1H7 CPQ H72 CPQ:2H7 CPQ H81 CPQ:1H8 CPQ H82 CPQ:2H8 CPQ H101 CPQ:1H10 CPQ H102 CPQ:2H10 CPQ H103 CPQ:3H10 CPQ H111 CPQ:1H11 CPQ H112 CPQ:2H11 CPQ H113 CPQ:3H11 CPQ H121 CPQ:1H12 CPQ H122 CPQ:2H12 CPQ H141 CPQ:1H14 CPQ H142 CPQ:2H14 CPQ H151 CPQ:1H15 CPQ H161 CPQ:1H16 CPQ H162 CPQ:2H16 CPQ H171 CPQ:1H17 CPQ H172 CPQ:2H17 CPQ H211 CPQ:1H21 CPQ H212 CPQ:2H21 CPQ H213 CPQ:3H21 CPQ H221 CPQ:1H22 CPQ H222 CPQ:2H22 CPQ H231 CPQ:1H23 CPQ H232 CPQ:2H23 CPQ H741 CPQ:1H74 CPQ H742 CPQ:2H74 CPQ H751 CPQ:1H75 CPQ H752 CPQ:2H75 CPQ H761 CPQ:1H76 CPQ H762 CPQ:2H76 CPQ H771 CPQ:1H77 CPQ H801 CPQ:1H80 CPQ H861 CPQ:1H86 CPQ H811 CPQ:1H81 CPQ H871 CPQ:1H87 CPQ H821 CPQ:1H82 CPQ H881 CPQ:1H88 CPQ H831 CPQ:1H83 CPQ H891 CPQ:1H89 CPQ H841 CPQ:1H84 CPQ H842 CPQ:2H84 CPQ H851 CPQ:1H85 CPQ H681 CPQ:1H68 CPQ H682 CPQ:2H68 CPQ H691 CPQ:1H69 CPQ H692 CPQ:2H69 CPQ H701 CPQ:1H70 CPQ H702 CPQ:2H70 CPQ H711 CPQ:1H71 CPQ H901 CPQ:1H90 CPQ H961 CPQ:1H96 CPQ H911 CPQ:1H91 CPQ H971 CPQ:1H97 CPQ H921 CPQ:1H92 CPQ H981 CPQ:1H98 CPQ H931 CPQ:1H93 CPQ H991 CPQ:1H99 CPQ H941 CPQ:1H94 CPQ H942 CPQ:2H94 CPQ H951 CPQ:1H95 CPQ HOP2 CPR:2HOP CPR HOP3 CPR:3HOP CPR H5'1 CPR:1H5* CPR H5'2 CPR:2H5* CPR H4' CPR: H4* CPR H3' CPR: H3* CPR HO3' CPR:*HO3 CPR H2' CPR: H2* CPR HO2' CPR:*HO2 CPR H1' CPR: H1* CPR H11 CPS:1H1 CPS H12 CPS:2H1 CPS H31 CPS:1H3 CPS H32 CPS:2H3 CPS H71 CPS:1H7 CPS H72 CPS:2H7 CPS H81 CPS:1H8 CPS H82 CPS:2H8 CPS H101 CPS:1H10 CPS H102 CPS:2H10 CPS H103 CPS:3H10 CPS H111 CPS:1H11 CPS H112 CPS:2H11 CPS H113 CPS:3H11 CPS H121 CPS:1H12 CPS H122 CPS:2H12 CPS H141 CPS:1H14 CPS H142 CPS:2H14 CPS H161 CPS:1H16 CPS H162 CPS:2H16 CPS H211 CPS:1H21 CPS H212 CPS:2H21 CPS H213 CPS:3H21 CPS H221 CPS:1H22 CPS H222 CPS:2H22 CPS H231 CPS:1H23 CPS H232 CPS:2H23 CPS H251 CPS:1H25 CPS H252 CPS:2H25 CPS H261 CPS:1H26 CPS H262 CPS:2H26 CPS H271 CPS:1H27 CPS H272 CPS:2H27 CPS H281 CPS:1H28 CPS H282 CPS:2H28 CPS H283 CPS:3H28 CPS H291 CPS:1H29 CPS H292 CPS:2H29 CPS H293 CPS:3H29 CPS H301 CPS:1H30 CPS H302 CPS:2H30 CPS H311 CPS:1H31 CPS H312 CPS:2H31 CPS H321 CPS:1H32 CPS H322 CPS:2H32 CPS H11 CPT:1H1 CPT H12 CPT:2H1 CPT H13 CPT:3H1 CPT H21 CPT:1H2 CPT H22 CPT:2H2 CPT H23 CPT:3H2 CPT H CPV:1HN CPV H2 CPV:2HN CPV HB2 CPV:1HB CPV HB3 CPV:2HB CPV HD12 CPV:1HD1 CPV HD13 CPV:2HD1 CPV HD23 CPV:1HD2 CPV HD22 CPV:2HD2 CPV HE12 CPV:1HE1 CPV HE13 CPV:2HE1 CPV HE23 CPV:1HE2 CPV HE22 CPV:2HE2 CPV HZ2 CPV:1HZ CPV HZ3 CPV:2HZ CPV HB11 CPV:1HB1 CPV HB12 CPV:2HB1 CPV HA' CPV: HA* CPV HB' CPV: HB* CPV HG11 CPV:1HG1 CPV HG12 CPV:2HG1 CPV HG13 CPV:3HG1 CPV HG21 CPV:1HG2 CPV HG22 CPV:2HG2 CPV HG23 CPV:3HG2 CPV H11 CPW:1H1 CPW H12 CPW:2H1 CPW H61 CPW:1H6 CPW H62 CPW:2H6 CPW H71 CPW:1H7 CPW H72 CPW:2H7 CPW H81 CPW:1H8 CPW H82 CPW:2H8 CPW HN31 CPW:1HN3 CPW HN32 CPW:2HN3 CPW H171 CPX:1H17 CPX H172 CPX:2H17 CPX H161 CPX:1H16 CPX H162 CPX:2H16 CPX H301 CPX:1H30 CPX H302 CPX:2H30 CPX H321 CPX:1H32 CPX H322 CPX:2H32 CPX H311 CPX:1H31 CPX H312 CPX:2H31 CPX H281 CPX:1H28 CPX H282 CPX:2H28 CPX H221 CPX:1H22 CPX H222 CPX:2H22 CPX H223 CPX:3H22 CPX H181 CPX:1H18 CPX H182 CPX:2H18 CPX H183 CPX:3H18 CPX H91 CPX:1H9 CPX H92 CPX:2H9 CPX H71 CPX:1H7 CPX H72 CPX:2H7 CPX H231 CPX:1H23 CPX H232 CPX:2H23 CPX H211 CPX:1H21 CPX H212 CPX:2H21 CPX H201 CPX:1H20 CPX H202 CPX:2H20 CPX HN1 CPY:1HN CPY HN2 CPY:2HN CPY HB1 CPY:1HB CPY HB2 CPY:2HB CPY HD11 CPY:1HD1 CPY HD12 CPY:2HD1 CPY HD21 CPY:1HD2 CPY HD22 CPY:2HD2 CPY HE11 CPY:1HE1 CPY HE12 CPY:2HE1 CPY HE21 CPY:1HE2 CPY HE22 CPY:2HE2 CPY HCZ1 CPY:1HCZ CPY HCZ2 CPY:2HCZ CPY HM1 CPY:1HM CPY HM2 CPY:2HM CPY H161 CQA:1H16 CQA H162 CQA:2H16 CQA H171 CQA:1H17 CQA H172 CQA:2H17 CQA H181 CQA:1H18 CQA H182 CQA:2H18 CQA H183 CQA:3H18 CQA H191 CQA:1H19 CQA H192 CQA:2H19 CQA H201 CQA:1H20 CQA H202 CQA:2H20 CQA H203 CQA:3H20 CQA H6C1 CQP:1H6C CQP H6C2 CQP:2H6C CQP H101 CQP:1H10 CQP H102 CQP:2H10 CQP H141 CQP:1H14 CQP H142 CQP:2H14 CQP H311 CQP:1H31 CQP H312 CQP:2H31 CQP HN1 CQR:1HN CQR HN2 CQR:2HN CQR HA11 CQR:1HA1 CQR HA12 CQR:2HA1 CQR HA31 CQR:1HA3 CQR HA32 CQR:2HA3 CQR HN11 CR0:1HN1 CR0 HN12 CR0:2HN1 CR0 HG11 CR0:1HG1 CR0 HG12 CR0:2HG1 CR0 HG13 CR0:3HG1 CR0 HA31 CR0:1HA3 CR0 HA32 CR0:2HA3 CR0 HB21 CR0:1HB2 CR0 HB22 CR0:2HB2 CR0 HD11 CR0:1HD1 CR0 HD12 CR0:2HD1 CR0 HD13 CR0:3HD1 CR0 HD21 CR0:1HD2 CR0 HD22 CR0:2HD2 CR0 HD23 CR0:3HD2 CR0 H21 CR1:1H2 CR1 H41 CR1:1H4 CR1 H51 CR1:1H5 CR1 H61 CR1:1H6 CR1 H62 CR1:2H6 CR1 H11 CR1:1H1 CR1 H31 CR1:1H3 CR1 H81 CR1:1H8 CR1 H82 CR1:2H8 CR1 H83 CR1:3H8 CR1 HN11 CR2:1HN1 CR2 HN12 CR2:2HN1 CR2 HA31 CR2:1HA3 CR2 HA32 CR2:2HA3 CR2 HN1 CR5:1HN CR5 HN2A CR5:2HN CR5 HA11 CR5:1HA1 CR5 HA12 CR5:2HA1 CR5 HA31 CR5:1HA3 CR5 HA32 CR5:2HA3 CR5 H21 CR6:1H2 CR6 H41 CR6:1H4 CR6 H51 CR6:1H5 CR6 H61 CR6:1H6 CR6 H62 CR6:2H6 CR6 H31 CR6:1H3 CR6 H81 CR6:1H8 CR6 H82 CR6:2H8 CR6 H83 CR6:3H8 CR6 HN11 CR7:1HN1 CR7 HN12 CR7:2HN1 CR7 HB11 CR7:1HB1 CR7 HB12 CR7:2HB1 CR7 HG11 CR7:1HG1 CR7 HG12 CR7:2HG1 CR7 HA31 CR7:1HA3 CR7 HA32 CR7:2HA3 CR7 HD1A CR7:1HD CR7 HD2A CR7:2HD CR7 HE1A CR7:1HE CR7 HE2A CR7:2HE CR7 HNZ1 CR7:1HNZ CR7 HNZ2 CR7:2HNZ CR7 H201 CR8:1H20 CR8 H202 CR8:2H20 CR8 H1 CR8:1H CR8 H2A CR8:2H CR8 H171 CR8:1H17 CR8 H172 CR8:2H17 CR8 H6B CR9:H6'' CR9 H21 CRA:1H2 CRA H41 CRA:1H4 CRA H51 CRA:1H5 CRA H61 CRA:1H6 CRA H62 CRA:2H6 CRA H31 CRA:1H3 CRA H81 CRA:1H8 CRA H82 CRA:2H8 CRA H83 CRA:3H8 CRA H31 CRB:1H3 CRB H32 CRB:2H3 CRB H71 CRB:1H7 CRB H72 CRB:2H7 CRB H81 CRB:1H8 CRB H82 CRB:2H8 CRB HOP2 CRB:2HOP CRB HOP3 CRB:3HOP CRB H21 CRC:1H2 CRC H22 CRC:2H2 CRC H31 CRC:1H3 CRC H32 CRC:2H3 CRC H41 CRC:1H4 CRC H42 CRC:2H4 CRC H51 CRC:1H5 CRC H52 CRC:2H5 CRC H61 CRC:1H6 CRC H62 CRC:2H6 CRC H71 CRC:1H7 CRC H72 CRC:2H7 CRC H81 CRC:1H8 CRC H82 CRC:2H8 CRC H91 CRC:1H9 CRC H92 CRC:2H9 CRC H101 CRC:1H10 CRC H102 CRC:2H10 CRC H103 CRC:3H10 CRC HC11 CRD:1HC1 CRD HC12 CRD:2HC1 CRD HC13 CRD:3HC1 CRD H11 CRE:1H1 CRE H12A CRE:2H1 CRE H21 CRE:1H2 CRE H22 CRE:2H2 CRE H41 CRE:1H4 CRE H42 CRE:2H4 CRE H43 CRE:3H4 CRE H51 CRE:1H5 CRE H61 CRE:1H6 CRE H62 CRE:2H6 CRE H71 CRE:1H7 CRE H72 CRE:2H7 CRE H91 CRE:1H9 CRE H92 CRE:2H9 CRE H93 CRE:3H9 CRE H111 CRE:1H11 CRE H112 CRE:2H11 CRE H141 CRE:1H14 CRE H142 CRE:2H14 CRE H143 CRE:3H14 CRE H151 CRE:1H15 CRE H152 CRE:2H15 CRE HN11 CRF:1HN1 CRF HN12 CRF:2HN1 CRF HG11 CRF:1HG1 CRF HG12 CRF:2HG1 CRF HG13 CRF:3HG1 CRF HA31 CRF:1HA3 CRF HA32 CRF:2HA3 CRF HN11 CRG:1HN1 CRG HN12 CRG:2HN1 CRG HG11 CRG:1HG1 CRG HG12 CRG:2HG1 CRG HG13 CRG:3HG1 CRG HG1O CRG:OHG1 CRG HA31 CRG:1HA3 CRG HA32 CRG:2HA3 CRG H21 CRH:1H2 CRH H22 CRH:2H2 CRH H41 CRH:1H4 CRH H42 CRH:2H4 CRH H151 CRH:1H15 CRH H152 CRH:2H15 CRH H153 CRH:3H15 CRH H1' CRH: H1* CRH H3' CRH: H3* CRH H4' CRH: H4* CRH H1'1 CRH:1H1* CRH H1'2 CRH:2H1* CRH H1'3 CRH:3H1* CRH H4'1 CRH:1H4* CRH H4'2 CRH:2H4* CRH H4'3 CRH:3H4* CRH H131 CRJ:1H13 CRJ H132 CRJ:2H13 CRJ H151 CRJ:1H15 CRJ H152 CRJ:2H15 CRJ H191 CRJ:1H19 CRJ H192 CRJ:2H19 CRJ H201 CRJ:1H20 CRJ H202 CRJ:2H20 CRJ H251 CRJ:1H25 CRJ H252 CRJ:2H25 CRJ H261 CRJ:1H26 CRJ H262 CRJ:2H26 CRJ HA31 CRK:1HA3 CRK HA32 CRK:2HA3 CRK HB1 CRK:1HB CRK HB2A CRK:2HB CRK HE1A CRK:1HE CRK HE2A CRK:2HE CRK HE3 CRK:3HE CRK HG1 CRK:1HG CRK HG2 CRK:2HG CRK H21 CRL:1H2 CRL H22 CRL:2H2 CRL H31 CRL:1H3 CRL H32 CRL:2H3 CRL H41 CRL:1H4 CRL H42 CRL:2H4 CRL H51 CRL:1H5 CRL H52 CRL:2H5 CRL H101 CRL:1H10 CRL H102 CRL:2H10 CRL H111 CRL:1H11 CRL H112 CRL:2H11 CRL H121 CRL:1H12 CRL H122 CRL:2H12 CRL H131 CRL:1H13 CRL H132 CRL:2H13 CRL H141 CRL:1H14 CRL H142 CRL:2H14 CRL H151 CRL:1H15 CRL H152 CRL:2H15 CRL H153 CRL:3H15 CRL H161 CRL:1H16 CRL H162 CRL:2H16 CRL H163 CRL:3H16 CRL H171 CRL:1H17 CRL H172 CRL:2H17 CRL H173 CRL:3H17 CRL H171 CRM:1H17 CRM H172 CRM:2H17 CRM H251 CRM:1H25 CRM H252 CRM:2H25 CRM H111 CRM:1H11 CRM H112 CRM:2H11 CRM H121 CRM:1H12 CRM H122 CRM:2H12 CRM H51 CRN:1H5 CRN H52 CRN:2H5 CRN H41 CRN:1H4 CRN H42 CRN:2H4 CRN H43 CRN:3H4 CRN HN31 CRN:1HN3 CRN HN32 CRN:2HN3 CRN HN11 CRO:1HN1 CRO HN12 CRO:2HN1 CRO HG11 CRO:1HG1 CRO HG12 CRO:2HG1 CRO HG13 CRO:3HG1 CRO HA31 CRO:1HA3 CRO HA32 CRO:2HA3 CRO H8'1 CRP:1H8' CRP H8'2 CRP:2H8' CRP H8'3 CRP:3H8' CRP H41 CRP:1H4 CRP H42 CRP:2H4 CRP H43 CRP:3H4 CRP H51 CRP:1H5 CRP H52 CRP:2H5 CRP H61 CRP:1H6 CRP H62 CRP:2H6 CRP H63 CRP:3H6 CRP HB11 CRQ:1HB1 CRQ HB12 CRQ:2HB1 CRQ HG11 CRQ:1HG1 CRQ HG12 CRQ:2HG1 CRQ HA31 CRQ:1HA3 CRQ HA32 CRQ:2HA3 CRQ HB1 CRQ:1HB CRQ HE11 CRQ:1HE1 CRQ HE12 CRQ:2HE1 CRQ H71 CRS:1H7 CRS H72 CRS:2H7 CRS H73 CRS:3H7 CRS H1M1 CRT:1H1M CRT H1M2 CRT:2H1M CRT H1M3 CRT:3H1M CRT H21A CRT:1H2 CRT H22A CRT:2H2 CRT H23 CRT:3H2 CRT H31A CRT:1H3 CRT H32A CRT:2H3 CRT H33 CRT:3H3 CRT H41 CRT:1H4 CRT H42 CRT:2H4 CRT H81 CRT:1H8 CRT H82 CRT:2H8 CRT H83 CRT:3H8 CRT H131 CRT:1H13 CRT H132 CRT:2H13 CRT H133 CRT:3H13 CRT H181 CRT:1H18 CRT H182 CRT:2H18 CRT H183 CRT:3H18 CRT H241 CRT:1H24 CRT H242 CRT:2H24 CRT H243 CRT:3H24 CRT H291 CRT:1H29 CRT H292 CRT:2H29 CRT H293 CRT:3H29 CRT H341 CRT:1H34 CRT H342 CRT:2H34 CRT H343 CRT:3H34 CRT H371 CRT:1H37 CRT H372 CRT:2H37 CRT H391 CRT:1H39 CRT H392 CRT:2H39 CRT H393 CRT:3H39 CRT H401 CRT:1H40 CRT H402 CRT:2H40 CRT H403 CRT:3H40 CRT H2M1 CRT:1H2M CRT H2M2 CRT:2H2M CRT H2M3 CRT:3H2M CRT HE21 CRU:1HE2 CRU HG11 CRU:1HG1 CRU HG12 CRU:2HG1 CRU HB11 CRU:1HB1 CRU HB12 CRU:2HB1 CRU HA31 CRU:1HA3 CRU HA32 CRU:2HA3 CRU HB1 CRU:1HB CRU H101 CRV:1H10 CRV H102 CRV:2H10 CRV H121 CRV:1H12 CRV H122 CRV:2H12 CRV H171 CRV:1H17 CRV H172 CRV:2H17 CRV H181 CRV:1H18 CRV H182 CRV:2H18 CRV H191 CRV:1H19 CRV H192 CRV:2H19 CRV H161 CRV:1H16 CRV H162 CRV:2H16 CRV HN11 CRW:1HN1 CRW HN12 CRW:2HN1 CRW HB11 CRW:1HB1 CRW HB12 CRW:2HB1 CRW HB13 CRW:3HB1 CRW HA31 CRW:1HA3 CRW HA32 CRW:2HA3 CRW HB21 CRW:1HB2 CRW HB22 CRW:2HB2 CRW HN11 CRX:1HN1 CRX HN12 CRX:2HN1 CRX HB11 CRX:1HB1 CRX HB12 CRX:2HB1 CRX HB13 CRX:3HB1 CRX HA31 CRX:1HA3 CRX HA32 CRX:2HA3 CRX HB21 CRX:1HB2 CRX HB22 CRX:2HB2 CRX H11 CRY:1H1 CRY H12 CRY:2H1 CRY H21 CRY:1H2 CRY H31 CRY:1H3 CRY H32 CRY:2H3 CRY H21 CRZ:1H2 CRZ H22 CRZ:2H2 CRZ H31 CRZ:1H3 CRZ H32 CRZ:2H3 CRZ H41 CRZ:1H4 CRZ H42 CRZ:2H4 CRZ H CS1:1HN CS1 H2 CS1:2HN CS1 HB2 CS1:1HB CS1 HB3 CS1:2HB CS1 HC2 CS1: H2 CS1 HN11 CS1:1HN1 CS1 HN12 CS1:2HN1 CS1 H61 CS2:1H6 CS2 H62 CS2:2H6 CS2 H CS3:1HN CS3 H2 CS3:2HN CS3 HB2 CS3:1HB CS3 HB3 CS3:2HB CS3 H1H1 CS3:1H1H CS3 H1H2 CS3:2H1H CS3 H1I1 CS3:1H1I CS3 H1I2 CS3:2H1I CS3 H CS4:1HN CS4 H2 CS4:2HN CS4 HB2 CS4:1HB CS4 HB3 CS4:2HB CS4 H1J1 CS4:1H1J CS4 H1J2 CS4:2H1J CS4 H1K1 CS4:1H1K CS4 H1K2 CS4:2H1K CS4 H81 CS5:1H8 CS5 H82 CS5:2H8 CS5 H91 CS5:1H9 CS5 H92 CS5:2H9 CS5 H101 CS5:1H10 CS5 H102 CS5:2H10 CS5 H103 CS5:3H10 CS5 H111 CS5:1H11 CS5 H112 CS5:2H11 CS5 H121 CS5:1H12 CS5 H122 CS5:2H12 CS5 H131 CS5:1H13 CS5 H132 CS5:2H13 CS5 H133 CS5:3H13 CS5 H171 CS5:1H17 CS5 H172 CS5:2H17 CS5 H181 CS5:1H18 CS5 H182 CS5:2H18 CS5 H191 CS5:1H19 CS5 H192 CS5:2H19 CS5 H321 CS5:1H32 CS5 H322 CS5:2H32 CS5 H323 CS5:3H32 CS5 H331 CS5:1H33 CS5 H332 CS5:2H33 CS5 H333 CS5:3H33 CS5 H81 CS6:1H8 CS6 H82 CS6:2H8 CS6 H91 CS6:1H9 CS6 H92 CS6:2H9 CS6 H101 CS6:1H10 CS6 H102 CS6:2H10 CS6 H103 CS6:3H10 CS6 H111 CS6:1H11 CS6 H112 CS6:2H11 CS6 H121 CS6:1H12 CS6 H122 CS6:2H12 CS6 H131 CS6:1H13 CS6 H132 CS6:2H13 CS6 H133 CS6:3H13 CS6 H991 CS6:1H99 CS6 H992 CS6:2H99 CS6 H993 CS6:3H99 CS6 H171 CS6:1H17 CS6 H172 CS6:2H17 CS6 H261 CS6:1H26 CS6 H262 CS6:2H26 CS6 H181 CS6:1H18 CS6 H182 CS6:2H18 CS6 H201 CS6:1H20 CS6 H202 CS6:2H20 CS6 H71 CS8:1H7 CS8 H72 CS8:2H7 CS8 H61 CS8:1H6 CS8 H62 CS8:2H6 CS8 H31 CS8:1H3 CS8 H32 CS8:2H3 CS8 H21 CS8:1H2 CS8 H22 CS8:2H2 CS8 H2'1 CS8:1H2* CS8 H2'2 CS8:2H2* CS8 H4'1 CS8:1H4* CS8 H4'2 CS8:2H4* CS8 H5'1 CS8:1H5* CS8 H5'2 CS8:2H5* CS8 H6'1 CS8:1H6* CS8 H6'2 CS8:2H6* CS8 H7'1 CS8:1H7* CS8 H7'2 CS8:2H7* CS8 H8'1 CS8:1H8* CS8 H8'2 CS8:2H8* CS8 H8'3 CS8:3H8* CS8 H131 CS8:1H13 CS8 H132 CS8:2H13 CS8 H133 CS8:3H13 CS8 H141 CS8:1H14 CS8 H142 CS8:2H14 CS8 H143 CS8:3H14 CS8 H121 CS8:1H12 CS8 H122 CS8:2H12 CS8 H11 CS8:1H1 CS8 H12 CS8:2H1 CS8 H4' CS8: H4* CS8 H1' CS8: H1* CS8 HN61 CS8:1HN6 CS8 HN62 CS8:2HN6 CS8 H2' CS8: H2* CS8 H3' CS8: H3* CS8 H CSA:1HN CSA H2 CSA:2HN CSA HB2 CSA:1HB CSA HB3 CSA:2HB CSA H31 CSA:1H3 CSA H32 CSA:2H3 CSA H11 CSA:1H1 CSA H12 CSA:2H1 CSA H13 CSA:3H1 CSA H CSB:1HN CSB H2 CSB:2HN CSB HB2 CSB:1HB CSB HB3 CSB:2HB CSB H11 CSC:1H1 CSC H12 CSC:2H1 CSC H3'1 CSC:1H3' CSC H3'2 CSC:2H3' CSC H131 CSC:1H13 CSC H132 CSC:2H13 CSC H141 CSC:1H14 CSC H142 CSC:2H14 CSC H151 CSC:1H15 CSC H152 CSC:2H15 CSC H171 CSC:1H17 CSC H172 CSC:2H17 CSC H173 CSC:3H17 CSC H201 CSC:1H20 CSC H202 CSC:2H20 CSC H203 CSC:3H20 CSC H CSD:1HN CSD H2 CSD:2HN CSD HB2 CSD:1HB CSD HB3 CSD:2HB CSD H CSE:1HN CSE H2 CSE:2HN CSE HB2 CSE:1HB CSE HB3 CSE:2HB CSE H9A1 CSF:1H9A CSF H9A2 CSF:2H9A CSF H3' CSF: H3* CSF H2' CSF: H2* CSF H1' CSF: H1* CSF H4' CSF: H4* CSF H5' CSF:1H5* CSF H5'' CSF:2H5* CSF HO3' CSF:H3T CSF H41 CSF:1H4 CSF H42 CSF:2H4 CSF H111 CSF:1H11 CSF H112 CSF:2H11 CSF H113 CSF:3H11 CSF HA31 CSH:1HA3 CSH HA32 CSH:2HA3 CSH HN11 CSH:1HN1 CSH HN12 CSH:2HN1 CSH HB11 CSH:1HB1 CSH HB12 CSH:2HB1 CSH HB21 CSH:1HB2 CSH HB22 CSH:2HB2 CSH HE CSI: HNE CSI HD13 CSI:1HCD CSI HD12 CSI:2HCD CSI HH CSI: HNH CSI HB CSI: HCB CSI HG13 CSI:1HCG CSI HG12 CSI:2HCG CSI HG2 CSI: HNG CSI H CSI:1HN CSI H2 CSI:2HN CSI HOP2 CSL:2HOP CSL H5'1 CSL:1H5* CSL H5'2 CSL:2H5* CSL H4' CSL: H4* CSL H1' CSL: H1* CSL HN41 CSL:1HN4 CSL HN42 CSL:2HN4 CSL H2' CSL: H2* CSL HA'1 CSL:1HA* CSL HA'2 CSL:2HA* CSL HA'3 CSL:3HA* CSL H3' CSL: H3* CSL HOP3 CSL:3HOP CSL H CSO:1HN CSO HN2 CSO:2HN CSO HB2 CSO:1HB CSO HB3 CSO:2HB CSO H CSP:1HN CSP H2 CSP:2HN CSP HB2 CSP:1HB CSP HB3 CSP:2HB CSP HO2P CSP:PHO2 CSP HO3P CSP:PHO3 CSP H2 CSR: HN2 CSR HB2 CSR:1HB CSR HB3 CSR:2HB CSR H CSS:1HN CSS HN2 CSS:2HN CSS HB2 CSS:1HB CSS HB3 CSS:2HB CSS H71 CST:1H7 CST H72 CST:2H7 CST H121 CST:1H12 CST H122 CST:2H12 CST H141 CST:1H14 CST H142 CST:2H14 CST H143 CST:3H14 CST H151 CST:1H15 CST H152 CST:2H15 CST H153 CST:3H15 CST H191 CST:1H19 CST H192 CST:2H19 CST H201 CST:1H20 CST H202 CST:2H20 CST H251 CST:1H25 CST H252 CST:2H25 CST HN41 CST:1HN4 CST HN42 CST:2HN4 CST H CSU:1HN CSU H2 CSU:2HN CSU HB2 CSU:1HB CSU HB3 CSU:2HB CSU H CSW:1HN CSW H2 CSW:2HN CSW HB2 CSW:1HB CSW HB3 CSW:2HB CSW HG CSW: HS CSW H CSX:1HN CSX H2 CSX:2HN CSX HB2 CSX:1HB CSX HB3 CSX:2HB CSX HG CSX: HS CSX HA31 CSY:1HA3 CSY HA32 CSY:2HA3 CSY HN11 CSY:1HN1 CSY HN12 CSY:2HN1 CSY HB11 CSY:1HB1 CSY HB12 CSY:2HB1 CSY HB21 CSY:1HB2 CSY HB22 CSY:2HB2 CSY H2 CSZ: HN2 CSZ HB2 CSZ:1HB CSZ HB3 CSZ:2HB CSZ HE CSZ:HSE1 CSZ H91 CT0:1H9 CT0 H92 CT0:2H9 CT0 H101 CT0:1H10 CT0 H102 CT0:2H10 CT0 H111 CT0:1H11 CT0 H112 CT0:2H11 CT0 H121 CT0:1H12 CT0 H122 CT0:2H12 CT0 H11 CT1:1H1 CT1 H12A CT1:2H1 CT1 H13 CT1:3H1 CT1 H21 CT1:1H2 CT1 H22 CT1:2H2 CT1 H31 CT1:1H3 CT1 H32 CT1:2H3 CT1 H41 CT1:1H4 CT1 H42 CT1:2H4 CT1 H131 CT1:1H13 CT1 H132 CT1:2H13 CT1 H211 CT1:1H21 CT1 H212 CT1:2H21 CT1 H213 CT1:3H21 CT1 H221 CT1:1H22 CT1 H222 CT1:2H22 CT1 H223 CT1:3H22 CT1 H11 CT2:1H1 CT2 H12 CT2:2H1 CT2 H13 CT2:3H1 CT2 H21 CT2:1H2 CT2 H22 CT2:2H2 CT2 H31 CT2:1H3 CT2 H32 CT2:2H3 CT2 H41 CT2:1H4 CT2 H42 CT2:2H4 CT2 H131 CT2:1H13 CT2 H132 CT2:2H13 CT2 H201 CT2:1H20 CT2 H202 CT2:2H20 CT2 H211 CT2:1H21 CT2 H212 CT2:2H21 CT2 H221 CT2:1H22 CT2 H222 CT2:2H22 CT2 H231 CT2:1H23 CT2 H232 CT2:2H23 CT2 H6A1 CT3:1H6A CT3 H6A2 CT3:2H6A CT3 HOA2 CT3:2HOA CT3 HOA3 CT3:3HOA CT3 HOA6 CT3:6HOA CT3 H6B1 CT3:1H6B CT3 H6B2 CT3:2H6B CT3 HOB2 CT3:2HOB CT3 HOB3 CT3:3HOB CT3 HOB6 CT3:6HOB CT3 H6C1 CT3:1H6C CT3 H6C2 CT3:2H6C CT3 HOC2 CT3:2HOC CT3 HOC3 CT3:3HOC CT3 HOC4 CT3:4HOC CT3 HOC6 CT3:6HOC CT3 H7C1 CT5:1H7C CT5 H7C2 CT5:2H7C CT5 H7C3 CT5:3H7C CT5 H261 CT5:1H26 CT5 H262 CT5:2H26 CT5 H271 CT5:1H27 CT5 H272 CT5:2H27 CT5 H273 CT5:3H27 CT5 H171 CT5:1H17 CT5 H172 CT5:2H17 CT5 H181 CT5:1H18 CT5 H182 CT5:2H18 CT5 H131 CT6:1H13 CT6 H132 CT6:2H13 CT6 H201 CT7:1H20 CT7 H202 CT7:2H20 CT7 H203 CT7:3H20 CT7 H131 CT8:1H13 CT8 H132 CT8:2H13 CT8 HN81 CT9:1HN8 CT9 HN82 CT9:2HN8 CT9 H611 CT9:1H61 CT9 H612 CT9:2H61 CT9 H613 CT9:3H61 CT9 H621 CT9:1H62 CT9 H622 CT9:2H62 CT9 H623 CT9:3H62 CT9 H51 CT9:1H5 CT9 H52 CT9:2H5 CT9 H61 CT9:1H6 CT9 H62 CT9:2H6 CT9 H31 CT9:1H3 CT9 H32 CT9:2H3 CT9 H21 CT9:1H2 CT9 H22 CT9:2H2 CT9 H211 CT9:1H21 CT9 H212 CT9:2H21 CT9 H213 CT9:3H21 CT9 H221 CT9:1H22 CT9 H222 CT9:2H22 CT9 H223 CT9:3H22 CT9 H151 CTA:1H15 CTA H152 CTA:2H15 CTA H161 CTA:1H16 CTA H162 CTA:2H16 CTA H171 CTA:1H17 CTA H172 CTA:2H17 CTA H211 CTA:1H21 CTA H212 CTA:2H21 CTA H241 CTA:1H24 CTA H242 CTA:2H24 CTA H331 CTA:1H33 CTA H332 CTA:2H33 CTA H421 CTA:1H42 CTA H422 CTA:2H42 CTA H431 CTA:1H43 CTA H432 CTA:2H43 CTA H441 CTA:1H44 CTA H442 CTA:2H44 CTA H471 CTA:1H47 CTA H472 CTA:2H47 CTA H31 CTB:1H3 CTB H32 CTB:2H3 CTB H71 CTB:1H7 CTB H72 CTB:2H7 CTB HN21 CTC:1HN2 CTC HN22 CTC:2HN2 CTC H4'1 CTC:1H4' CTC H4'2 CTC:2H4' CTC H4'3 CTC:3H4' CTC H4A1 CTC:1H4" CTC H4A2 CTC:2H4" CTC H4A3 CTC:3H4" CTC H51 CTC:1H5 CTC H52 CTC:2H5 CTC H6'1 CTC:1H6' CTC H6'2 CTC:2H6' CTC H6'3 CTC:3H6' CTC HN41 CTD:1HN4 CTD HN42 CTD:2HN4 CTD H1' CTD: H1* CTD H2' CTD: H2* CTD HO2' CTD:*HO2 CTD H3' CTD: H3* CTD H4' CTD: H4* CTD HO3' CTD:*HO3 CTD H5'1 CTD:1H5* CTD H5'2 CTD:2H5* CTD HO5' CTD:*HO5 CTD HN1 CTE:1HN CTE HN2 CTE:2HN CTE HB1 CTE:1HB CTE HB2 CTE:2HB CTE H71 CTG:1H5M CTG H72 CTG:2H5M CTG H73 CTG:3H5M CTG H1' CTG: H1* CTG H2' CTG:1H2* CTG H2'' CTG:2H2* CTG H3' CTG: H3* CTG HO3' CTG:H3T CTG H4' CTG: H4* CTG H5' CTG:1H5* CTG H5'' CTG:2H5* CTG HOP3 CTG:3HOP CTG HOP2 CTG:2HOP CTG H CTH:1HN CTH H2 CTH:2HN CTH HG22 CTH:1HG2 CTH HG23 CTH:2HG2 CTH HG1 CTH: HO1 CTH H31 CTL:1H3 CTL H32 CTL:2H3 CTL H41 CTL:1H4 CTL H42 CTL:2H4 CTL H121 CTL:1H12 CTL H122 CTL:2H12 CTL H5' CTN: H5* CTN H5'1 CTN:1H5* CTN H5'2 CTN:2H5* CTN H4' CTN: H4* CTN H1' CTN: H1* CTN HN41 CTN:1HN4 CTN HN42 CTN:2HN4 CTN H2' CTN: H2* CTN H3' CTN: H3* CTN H811 CTO:1H81 CTO H812 CTO:2H81 CTO H813 CTO:3H81 CTO H611 CTO:1H61 CTO H612 CTO:2H61 CTO H821 CTO:1H82 CTO H822 CTO:2H82 CTO H823 CTO:3H82 CTO H621 CTO:1H62 CTO H622 CTO:2H62 CTO H831 CTO:1H83 CTO H832 CTO:2H83 CTO H833 CTO:3H83 CTO H631 CTO:1H63 CTO H632 CTO:2H63 CTO HN41 CTP:1HN4 CTP HN42 CTP:2HN4 CTP H1' CTP: H1* CTP H2' CTP: H2* CTP HO2' CTP:*HO2 CTP H3' CTP: H3* CTP H4' CTP: H4* CTP HO3' CTP:*HO3 CTP H5'1 CTP:1H5* CTP H5'2 CTP:2H5* CTP HOA2 CTP:2HOA CTP HOB2 CTP:2HOB CTP HOG2 CTP:2HOG CTP HOG3 CTP:3HOG CTP H6A1 CTR:1H6A CTR H6A2 CTR:2H6A CTR HO2A CTR:AHO2 CTR HO3A CTR:AHO3 CTR HO4A CTR:AHO4 CTR HO6A CTR:AHO6 CTR H6B1 CTR:1H6B CTR H6B2 CTR:2H6B CTR HO2B CTR:BHO2 CTR HO3B CTR:BHO3 CTR HO6B CTR:BHO6 CTR H6C1 CTR:1H6C CTR H6C2 CTR:2H6C CTR HO1C CTR:CHO1 CTR HO2C CTR:CHO2 CTR HO3C CTR:CHO3 CTR HO6C CTR:CHO6 CTR H11 CTS:1H1 CTS H12 CTS:2H1 CTS H71 CTS:1H7 CTS H72 CTS:2H7 CTS H81 CTS:1H8 CTS H82 CTS:2H8 CTS H6A1 CTT:1H6A CTT H6A2 CTT:2H6A CTT HOA2 CTT:2HOA CTT HOA3 CTT:3HOA CTT HOA6 CTT:6HOA CTT H6B1 CTT:1H6B CTT H6B2 CTT:2H6B CTT HOB2 CTT:2HOB CTT HOB3 CTT:3HOB CTT HOB6 CTT:6HOB CTT H6C1 CTT:1H6C CTT H6C2 CTT:2H6C CTT HOC2 CTT:2HOC CTT HOC3 CTT:3HOC CTT HOC6 CTT:6HOC CTT H6D1 CTT:1H6D CTT H6D2 CTT:2H6D CTT HOD2 CTT:2HOD CTT HOD3 CTT:3HOD CTT HOD4 CTT:4HOD CTT HOD6 CTT:6HOD CTT HA1 CTX:1HA CTX HA2 CTX:2HA CTX HA3 CTX:3HA CTX HB1 CTX:1HB CTX HB2 CTX:2HB CTX HA11 CTX:1HA1 CTX HA12 CTX:2HA1 CTX HB11 CTX:1HB1 CTX HB12 CTX:2HB1 CTX H211 CTX:1H21 CTX H212 CTX:2H21 CTX H213 CTX:3H21 CTX H221 CTX:1H22 CTX H222 CTX:2H22 CTX H223 CTX:3H22 CTX H71 CTY:1H7 CTY H72 CTY:2H7 CTY H341 CTY:1H34 CTY H342 CTY:2H34 CTY H343 CTY:3H34 CTY H331 CTY:1H33 CTY H332 CTY:2H33 CTY H333 CTY:3H33 CTY H351 CTY:1H35 CTY H352 CTY:2H35 CTY H353 CTY:3H35 CTY H361 CTY:1H36 CTY H362 CTY:2H36 CTY H301 CTY:1H30 CTY H302 CTY:2H30 CTY H303 CTY:3H30 CTY H321 CTY:1H32 CTY H322 CTY:2H32 CTY H323 CTY:3H32 CTY H251 CTY:1H25 CTY H252 CTY:2H25 CTY H271 CTY:1H27 CTY H272 CTY:2H27 CTY H273 CTY:3H27 CTY H281 CTY:1H28 CTY H282 CTY:2H28 CTY H283 CTY:3H28 CTY H151 CTY:1H15 CTY H152 CTY:2H15 CTY H201 CTY:1H20 CTY H202 CTY:2H20 CTY H203 CTY:3H20 CTY H291 CTY:1H29 CTY H292 CTY:2H29 CTY H293 CTY:3H29 CTY H211 CTY:1H21 CTY H212 CTY:2H21 CTY H213 CTY:3H21 CTY H371 CTY:1H37 CTY H372 CTY:2H37 CTY H373 CTY:3H37 CTY H311 CTY:1H31 CTY H312 CTY:2H31 CTY H313 CTY:3H31 CTY H191 CTY:1H19 CTY H192 CTY:2H19 CTY H193 CTY:3H19 CTY H381 CTY:1H38 CTY H382 CTY:2H38 CTY H383 CTY:3H38 CTY H101 CTZ:1H10 CTZ H102 CTZ:2H10 CTZ H261 CTZ:1H26 CTZ H262 CTZ:2H26 CTZ H31 CUB:1H3 CUB H32 CUB:2H3 CUB H21 CUB:1H2 CUB H22 CUB:2H2 CUB H11 CUB:1H1 CUB H12 CUB:2H1 CUB H41 CUB:1H4 CUB H42 CUB:2H4 CUB H43 CUB:3H4 CUB H2 CUC: HN2 CUC H21 CUC:1H2 CUC H22 CUC:2H2 CUC H31 CUC:1H3 CUC H32 CUC:2H3 CUC H41 CUC:1H4 CUC H42 CUC:2H4 CUC H51 CUC:1H5 CUC H52 CUC:2H5 CUC H61 CUC:1H6 CUC H62 CUC:2H6 CUC H101 CUP:1H10 CUP H102 CUP:2H10 CUP H11 CUR:1H1 CUR H12 CUR:2H1 CUR H21 CUR:1H2 CUR H22 CUR:2H2 CUR H31 CUR:1H3 CUR H32 CUR:2H3 CUR H51 CUR:1H5 CUR H52 CUR:2H5 CUR H111 CUR:1H11 CUR H112 CUR:2H11 CUR H113 CUR:3H11 CUR H311 CUR:1H31 CUR H312 CUR:2H31 CUR H313 CUR:3H31 CUR HN11 CUR:1HN1 CUR HN12 CUR:2HN1 CUR H101 CUS:1H10 CUS H102 CUS:2H10 CUS H161 CUS:1H16 CUS H162 CUS:2H16 CUS H163 CUS:3H16 CUS H121 CUS:1H12 CUS H122 CUS:2H12 CUS H123 CUS:3H12 CUS HO11 CVB:1HO1 CVB HO21 CVB:1HO2 CVB HC21 CVB:1HC2 CVB HC31 CVB:1HC3 CVB HX11 CVB:1HX1 CVB HX21 CVB:1HX2 CVB H11 CVB:1H1 CVB HC51 CVB:1HC5 CVB HC61 CVB:1HC6 CVB H31 CVI:1H3 CVI H41 CVI:1H4 CVI H61 CVI:1H6 CVI H71 CVI:1H7 CVI H91 CVI:1H9 CVI H101 CVI:1H10 CVI H121 CVI:1H12 CVI H131 CVI:1H13 CVI H151 CVI:1H15 CVI H161 CVI:1H16 CVI H181 CVI:1H18 CVI H191 CVI:1H19 CVI H201 CVI:1H20 CVI H202 CVI:2H20 CVI H203 CVI:3H20 CVI H211 CVI:1H21 CVI H212 CVI:2H21 CVI H213 CVI:3H21 CVI H221 CVI:1H22 CVI H222 CVI:2H22 CVI H223 CVI:3H22 CVI H231 CVI:1H23 CVI H232 CVI:2H23 CVI H233 CVI:3H23 CVI H241 CVI:1H24 CVI H242 CVI:2H24 CVI H243 CVI:3H24 CVI H251 CVI:1H25 CVI H252 CVI:2H25 CVI H253 CVI:3H25 CVI H11 CWR:1H1 CWR H12 CWR:2H1 CWR HA31 CWR:1HA3 CWR HA32 CWR:2HA3 CWR H31 CWR:1H3 CWR H32 CWR:2H3 CWR HB21 CWR:1HB2 CWR HB22 CWR:2HB2 CWR HB23 CWR:3HB2 CWR H21 CX6:1H2 CX6 H22 CX6:2H2 CX6 H31 CX6:1H3 CX6 H32 CX6:2H3 CX6 H41 CX6:1H4 CX6 H42 CX6:2H4 CX6 H121 CX6:1H12 CX6 H122 CX6:2H12 CX6 H131 CX6:1H13 CX6 H132 CX6:2H13 CX6 H121 CXA:1H12 CXA H122 CXA:2H12 CXA H191 CXA:1H19 CXA H192 CXA:2H19 CXA H181 CXB:1H18 CXB H182 CXB:2H18 CXB H183 CXB:3H18 CXB H71 CXB:1H7 CXB H72 CXB:2H7 CXB H11 CXB:1H1 CXB H12 CXB:2H1 CXB H011 CXE:1H01 CXE H012 CXE:2H01 CXE H013 CXE:3H01 CXE H021 CXE:1H02 CXE H022 CXE:2H02 CXE H031 CXE:1H03 CXE H032 CXE:2H03 CXE H041 CXE:1H04 CXE H042 CXE:2H04 CXE H051 CXE:1H05 CXE H052 CXE:2H05 CXE H061 CXE:1H06 CXE H062 CXE:2H06 CXE H071 CXE:1H07 CXE H072 CXE:2H07 CXE H081 CXE:1H08 CXE H082 CXE:2H08 CXE H091 CXE:1H09 CXE H092 CXE:2H09 CXE H101 CXE:1H10 CXE H102 CXE:2H10 CXE H121 CXE:1H12 CXE H122 CXE:2H12 CXE H131 CXE:1H13 CXE H132 CXE:2H13 CXE H151 CXE:1H15 CXE H152 CXE:2H15 CXE H161 CXE:1H16 CXE H162 CXE:2H16 CXE H181 CXE:1H18 CXE H182 CXE:2H18 CXE H191 CXE:1H19 CXE H192 CXE:2H19 CXE H211 CXE:1H21 CXE H212 CXE:2H21 CXE H221 CXE:1H22 CXE H222 CXE:2H22 CXE H241 CXE:1H24 CXE H242 CXE:2H24 CXE H251 CXE:1H25 CXE H252 CXE:2H25 CXE H21 CXF:1H2 CXF H22 CXF:2H2 CXF H31 CXF:1H3 CXF H32 CXF:2H3 CXF H41 CXF:1H4 CXF H42 CXF:2H4 CXF H51 CXF:1H5 CXF H52 CXF:2H5 CXF H61 CXF:1H6 CXF H62 CXF:2H6 CXF H21 CXL:1H2 CXL H22 CXL:2H2 CXL H31 CXL:1H3 CXL H32 CXL:2H3 CXL H41 CXL:1H4 CXL H42 CXL:2H4 CXL H51 CXL:1H5 CXL H52 CXL:2H5 CXL H61 CXL:1H6 CXL H62 CXL:2H6 CXL H CXM: HN CXM HB2 CXM:1HB CXM HB3 CXM:2HB CXM HG2 CXM:1HG CXM HG3 CXM:2HG CXM HE1 CXM:1HE CXM HE2 CXM:2HE CXM HE3 CXM:3HE CXM H511 CXN:1H51 CXN H512 CXN:2H51 CXN H513 CXN:3H51 CXN H521 CXN:1H52 CXN H522 CXN:2H52 CXN H523 CXN:3H52 CXN H271 CXN:1H27 CXN H272 CXN:2H27 CXN H273 CXN:3H27 CXN H31 CXO:1H3 CXO H32 CXO:2H3 CXO H41 CXO:1H4 CXO H42 CXO:2H4 CXO H51 CXO:1H5 CXO H52 CXO:2H5 CXO H61 CXO:1H6 CXO H62 CXO:2H6 CXO H21 CXP:1H2 CXP H22 CXP:2H2 CXP H31 CXP:1H3 CXP H32 CXP:2H3 CXP H41 CXP:1H4 CXP H42 CXP:2H4 CXP H51 CXP:1H5 CXP H52 CXP:2H5 CXP H61 CXP:1H6 CXP H62 CXP:2H6 CXP H71 CXP:1H7 CXP H72 CXP:2H7 CXP H81 CXP:1H8 CXP H82 CXP:2H8 CXP H11 CXR:1H1 CXR H12 CXR:2H1 CXR H4' CXR: H4* CXR H3' CXR: H3* CXR H2' CXR: H2* CXR H1' CXR: H1* CXR H5'1 CXR:1H5* CXR H5'2 CXR:2H5* CXR H11 CXS:1H1 CXS H12 CXS:2H1 CXS H21 CXS:1H2 CXS H22 CXS:2H2 CXS H31 CXS:1H3 CXS H32 CXS:2H3 CXS H51 CXS:1H5 CXS H52 CXS:2H5 CXS H61 CXS:1H6 CXS H62 CXS:2H6 CXS H71 CXS:1H7 CXS H72 CXS:2H7 CXS H81 CXS:1H8 CXS H82 CXS:2H8 CXS H91 CXS:1H9 CXS H92 CXS:2H9 CXS H61 CXT:1H6 CXT H62 CXT:2H6 CXT H8C1 CXT:1H8C CXT H8C2 CXT:2H8C CXT H101 CXT:1H10 CXT H102 CXT:2H10 CXT H103 CXT:3H10 CXT H111 CXT:1H11 CXT H112 CXT:2H11 CXT H113 CXT:3H11 CXT H121 CXT:1H12 CXT H211 CXT:1H21 CXT H212 CXT:2H21 CXT H231 CXT:1H23 CXT H232 CXT:2H23 CXT H261 CXT:1H26 CXT H262 CXT:2H26 CXT H271 CXT:1H27 CXT H272 CXT:2H27 CXT H311 CXT:1H31 CXT H312 CXT:2H31 CXT H321 CXT:1H32 CXT H322 CXT:2H32 CXT H341 CXT:1H34 CXT H342 CXT:2H34 CXT H391 CXT:1H39 CXT H392 CXT:2H39 CXT H393 CXT:3H39 CXT H401 CXT:1H40 CXT H402 CXT:2H40 CXT H171 CXX:1H17 CXX H172 CXX:2H17 CXX H181 CXX:1H18 CXX H182 CXX:2H18 CXX H183 CXX:3H18 CXX H151 CXX:1H15 CXX H152 CXX:2H15 CXX H161 CXX:1H16 CXX H162 CXX:2H16 CXX H191 CXX:1H19 CXX H192 CXX:2H19 CXX H193 CXX:3H19 CXX H5'1 CXY:1H5* CXY H5'2 CXY:2H5* CXY H4D CXY: H4* CXY H3D CXY: H3* CXY H2D CXY: H2* CXY H1D CXY: H1* CXY HN41 CXY:1HN4 CXY HN42 CXY:2HN4 CXY H5D CXY:1H5' CXY H5B CXY:2H5' CXY HAO1 CY0:1HAO CY0 HAO2 CY0:2HAO CY0 HAN1 CY0:1HAN CY0 HAN2 CY0:2HAN CY0 HBC1 CY0:1HBC CY0 HBC2 CY0:2HBC CY0 HN1 CY0:1HN CY0 HN2 CY0:2HN CY0 H2 CY1: HN1 CY1 HB2 CY1: HB1 CY1 HB3 CY1: HB2 CY1 HD2 CY1: HD1 CY1 HD3 CY1: HD2 CY1 HE CY1: HE1 CY1 HM1 CY1:1HM CY1 HM2 CY1:2HM CY1 HM3 CY1:3HM CY1 HAO1 CY2:1HAO CY2 HAO2 CY2:2HAO CY2 HAN1 CY2:1HAN CY2 HAN2 CY2:2HAN CY2 HBC1 CY2:1HBC CY2 HBC2 CY2:2HBC CY2 HN1 CY2:1HN CY2 HN2 CY2:2HN CY2 H2 CY3: HN2 CY3 HB2 CY3:1HB CY3 HB3 CY3:2HB CY3 HN11 CY3:1HN1 CY3 HN12 CY3:2HN1 CY3 H2 CY4: HN2 CY4 HB2 CY4:1HB CY4 HB3 CY4:2HB CY4 HA22 CY4:1HA2 CY4 HA23 CY4:2HA2 CY4 HA32 CY4:1HA3 CY4 HA33 CY4:2HA3 CY4 HA41 CY4:1HA4 CY4 HA42 CY4:2HA4 CY4 HA43 CY4:3HA4 CY4 HB21 CY5:1HB2 CY5 HB22 CY5:2HB2 CY5 HA31 CY5:1HA3 CY5 HA32 CY5:2HA3 CY5 HN1 CY5:1HN CY5 HN2 CY5:2HN CY5 HB11 CY5:1HB1 CY5 HB12 CY5:2HB1 CY5 H51 CY6:1H5 CY6 H52 CY6:2H5 CY6 H53 CY6:3H5 CY6 H161 CY6:1H16 CY6 H162 CY6:2H16 CY6 H163 CY6:3H16 CY6 H171 CY6:1H17 CY6 H172 CY6:2H17 CY6 H173 CY6:3H17 CY6 H201 CY6:1H20 CY6 H202 CY6:2H20 CY6 H221 CY6:1H22 CY6 H222 CY6:2H22 CY6 H251 CY6:1H25 CY6 H252 CY6:2H25 CY6 H253 CY6:3H25 CY6 H261 CY6:1H26 CY6 H262 CY6:2H26 CY6 H263 CY6:3H26 CY6 H381 CY6:1H38 CY6 H382 CY6:2H38 CY6 H391 CY6:1H39 CY6 H392 CY6:2H39 CY6 H393 CY6:3H39 CY6 H401 CY6:1H40 CY6 H402 CY6:2H40 CY6 H421 CY6:1H42 CY6 H422 CY6:2H42 CY6 H431 CY6:1H43 CY6 H432 CY6:2H43 CY6 HAV1 CY7:1HAV CY7 HAV2 CY7:2HAV CY7 HAU1 CY7:1HAU CY7 HAU2 CY7:2HAU CY7 HAA1 CY7:1HAA CY7 HAA2 CY7:2HAA CY7 HAA3 CY7:3HAA CY7 HAX1 CY7:1HAX CY7 HAX2 CY7:2HAX CY7 HAY1 CY7:1HAY CY7 HAY2 CY7:2HAY CY7 HAB1 CY7:1HAB CY7 HAB2 CY7:2HAB CY7 HAB3 CY7:3HAB CY7 HAC1 CY7:1HAC CY7 HAC2 CY7:2HAC CY7 HAC3 CY7:3HAC CY7 HBC1 CY7:1HBC CY7 HBC2 CY7:2HBC CY7 HN1 CY7:1HN CY7 HN2 CY7:2HN CY7 HMA1 CYB:1HMA CYB HMA2 CYB:2HMA CYB HMA3 CYB:3HMA CYB HAA1 CYB:1HAA CYB HAA2 CYB:2HAA CYB HBA1 CYB:1HBA CYB HBA2 CYB:2HBA CYB HHB1 CYB:1HHB CYB HHB2 CYB:2HHB CYB HB CYB: H_B CYB HMB1 CYB:1HMB CYB HMB2 CYB:2HMB CYB HMB3 CYB:3HMB CYB HAB1 CYB:1HAB CYB HAB2 CYB:2HAB CYB HBB1 CYB:1HBB CYB HBB2 CYB:2HBB CYB HBB3 CYB:3HBB CYB HC CYB: H_C CYB HAC1 CYB:1HAC CYB HAC2 CYB:2HAC CYB HBC1 CYB:1HBC CYB HBC2 CYB:2HBC CYB HBC3 CYB:3HBC CYB HHD1 CYB:1HHD CYB HHD2 CYB:2HHD CYB HD CYB: H_D CYB HMD1 CYB:1HMD CYB HMD2 CYB:2HMD CYB HMD3 CYB:3HMD CYB HAD1 CYB:1HAD CYB HAD2 CYB:2HAD CYB HBD1 CYB:1HBD CYB HBD2 CYB:2HBD CYB HMA1 CYC:1HMA CYC HMA2 CYC:2HMA CYC HMA3 CYC:3HMA CYC HAA1 CYC:1HAA CYC HAA2 CYC:2HAA CYC HBA1 CYC:1HBA CYC HBA2 CYC:2HBA CYC HB CYC: H_B CYC HMB1 CYC:1HMB CYC HMB2 CYC:2HMB CYC HMB3 CYC:3HMB CYC HAB1 CYC:1HAB CYC HAB2 CYC:2HAB CYC HBB1 CYC:1HBB CYC HBB2 CYC:2HBB CYC HBB3 CYC:3HBB CYC HC CYC: H_C CYC HMC1 CYC:1HMC CYC HMC2 CYC:2HMC CYC HMC3 CYC:3HMC CYC HAC1 CYC:1HAC CYC HAC2 CYC:2HAC CYC HBC1 CYC:1HBC CYC HBC2 CYC:2HBC CYC HBC3 CYC:3HBC CYC HD CYC: H_D CYC HMD1 CYC:1HMD CYC HMD2 CYC:2HMD CYC HMD3 CYC:3HMD CYC HAD1 CYC:1HAD CYC HAD2 CYC:2HAD CYC HBD1 CYC:1HBD CYC HBD2 CYC:2HBD CYC H2 CYD: HN2 CYD HB2 CYD:1HB CYD HB3 CYD:2HB CYD H11 CYD:1H1 CYD H12 CYD:2H1 CYD HN11 CYD:1HN1 CYD HN12 CYD:2HN1 CYD H41 CYD:1H4 CYD H42 CYD:2H4 CYD H31 CYD:1H3 CYD H32 CYD:2H3 CYD H42 CYE:2H4 CYE H41 CYE:1H4 CYE H22 CYE:2H2 CYE HC2 CYF: H2 CYF HAL3 CYF:1HAL CYF HAL2 CYF:2HAL CYF HB3 CYF:1HB CYF HB2 CYF:2HB CYF H CYF:1HN CYF H2 CYF:2HN CYF HNT1 CYF:1HNT CYF HNT2 CYF:2HNT CYF H CYG:1HN CYG H2 CYG:2HN CYG HB2 CYG:1HB CYG HB3 CYG:2HB CYG HN11 CYG:1HN1 CYG HN12 CYG:2HN1 CYG HB13 CYG:1HB1 CYG HB12 CYG:2HB1 CYG HG13 CYG:1HG1 CYG HG12 CYG:2HG1 CYG H21 CYH:1H2 CYH H22 CYH:2H2 CYH H31 CYH:1H3 CYH H32 CYH:2H3 CYH H41 CYH:1H4 CYH H42 CYH:2H4 CYH H51 CYH:1H5 CYH H52 CYH:2H5 CYH H61 CYH:1H6 CYH H62 CYH:2H6 CYH H11 CYI:1H1 CYI H12 CYI:2H1 CYI H21 CYI:1H2 CYI H22 CYI:2H2 CYI H31 CYI:1H3 CYI H32 CYI:2H3 CYI H51 CYI:1H5 CYI H52 CYI:2H5 CYI H61 CYI:1H6 CYI H62 CYI:2H6 CYI H101 CYJ:1H10 CYJ H102 CYJ:2H10 CYJ H9C1 CYJ:1H9C CYJ H9C2 CYJ:2H9C CYJ H7C1 CYJ:1H7C CYJ H7C2 CYJ:2H7C CYJ H5C1 CYJ:1H5C CYJ H5C2 CYJ:2H5C CYJ H2C1 CYJ:1H2C CYJ H2C2 CYJ:2H2C CYJ HEC1 CYJ:1HEC CYJ HEC2 CYJ:2HEC CYJ HDC1 CYJ:1HDC CYJ HDC2 CYJ:2HDC CYJ HGC1 CYJ:1HGC CYJ HGC2 CYJ:2HGC CYJ HBC1 CYJ:1HBC CYJ HBC2 CYJ:2HBC CYJ HN1 CYJ:1HN CYJ HN2 CYJ:2HN CYJ H61 CYL:1H6 CYL H62 CYL:2H6 CYL HN11 CYL:1HN1 CYL HN12 CYL:2HN1 CYL HN1 CYM:1HN CYM HN2 CYM:2HN CYM HB1 CYM:1HB CYM HB2 CYM:2HB CYM HD1 CYM:1HD CYM HD2 CYM:2HD CYM HD3 CYM:3HD CYM HN11 CYP:1HN1 CYP HN12 CYP:2HN1 CYP HB11 CYP:1HB1 CYP HB12 CYP:2HB1 CYP HG11 CYP:1HG1 CYP HG12 CYP:2HG1 CYP HB21 CYP:1HB2 CYP HB22 CYP:2HB2 CYP HA31 CYP:1HA3 CYP HA32 CYP:2HA3 CYP H CYQ:1HN CYQ H2 CYQ:2HN CYQ HB2 CYQ:1HB CYQ HB3 CYQ:2HB CYQ HD2 CYQ:1HD CYQ HD3 CYQ:2HD CYQ HOP2 CYQ:2HOP CYQ HOP3 CYQ:3HOP CYQ HC2 CYR: H2 CYR HN21 CYR:1HN2 CYR HN22 CYR:2HN2 CYR H31 CYR:1H3 CYR H32 CYR:2H3 CYR H41 CYR:1H4 CYR H42 CYR:2H4 CYR H51 CYR:1H5 CYR H52 CYR:2H5 CYR HN71 CYR:1HN7 CYR HN72 CYR:2HN7 CYR HB3 CYR:1HB CYR HB2 CYR:2HB CYR H CYR:1HN CYR H2 CYR:2HN CYR H2 CYS: HN2 CYS HB2 CYS:1HB CYS HB3 CYS:2HB CYS HN41 CYT:1HN4 CYT HN42 CYT:2HN4 CYT H141 CYU:1H14 CYU H142 CYU:2H14 CYU H201 CYU:1H20 CYU H202 CYU:2H20 CYU H241 CYU:1H24 CYU H242 CYU:2H24 CYU H311 CYU:1H31 CYU H312 CYU:2H31 CYU H321 CYU:1H32 CYU H322 CYU:2H32 CYU H411 CYU:1H41 CYU H412 CYU:2H41 CYU H413 CYU:3H41 CYU H421 CYU:1H42 CYU H422 CYU:2H42 CYU H423 CYU:3H42 CYU H431 CYU:1H43 CYU H432 CYU:2H43 CYU H433 CYU:3H43 CYU H441 CYU:1H44 CYU H442 CYU:2H44 CYU H443 CYU:3H44 CYU H451 CYU:1H45 CYU H452 CYU:2H45 CYU H453 CYU:3H45 CYU H461 CYU:1H46 CYU H462 CYU:2H46 CYU H463 CYU:3H46 CYU H471 CYU:1H47 CYU H472 CYU:2H47 CYU H473 CYU:3H47 CYU H481 CYU:1H48 CYU H482 CYU:2H48 CYU H483 CYU:3H48 CYU H491 CYU:1H49 CYU H492 CYU:2H49 CYU H493 CYU:3H49 CYU H501 CYU:1H50 CYU H502 CYU:2H50 CYU H503 CYU:3H50 CYU H371 CYU:1H37 CYU H372 CYU:2H37 CYU H381 CYU:1H38 CYU H382 CYU:2H38 CYU H383 CYU:3H38 CYU H391 CYU:1H39 CYU H392 CYU:2H39 CYU H393 CYU:3H39 CYU H401 CYU:1H40 CYU H402 CYU:2H40 CYU H403 CYU:3H40 CYU H491 CYV:1H49 CYV H492 CYV:2H49 CYV H493 CYV:3H49 CYV H481 CYV:1H48 CYV H482 CYV:2H48 CYV H483 CYV:3H48 CYV H471 CYV:1H47 CYV H472 CYV:2H47 CYV H473 CYV:3H47 CYV H401 CYV:1H40 CYV H402 CYV:2H40 CYV H351 CYV:1H35 CYV H352 CYV:2H35 CYV H353 CYV:3H35 CYV H341 CYV:1H34 CYV H342 CYV:2H34 CYV H343 CYV:3H34 CYV H291 CYV:1H29 CYV H292 CYV:2H29 CYV H231 CYV:1H23 CYV H232 CYV:2H23 CYV H261 CYV:1H26 CYV H262 CYV:2H26 CYV H263 CYV:3H26 CYV H271 CYV:1H27 CYV H272 CYV:2H27 CYV H273 CYV:3H27 CYV H51 CYV:1H5 CYV H52 CYV:2H5 CYV H61 CYV:1H6 CYV H62 CYV:2H6 CYV H91 CYV:1H9 CYV H92 CYV:2H9 CYV H101 CYV:1H10 CYV H102 CYV:2H10 CYV H103 CYV:3H10 CYV H191 CYV:1H19 CYV H192 CYV:2H19 CYV H141 CYV:1H14 CYV H142 CYV:2H14 CYV H151 CYV:1H15 CYV H152 CYV:2H15 CYV H11 CYX:1H1 CYX H41 CYX:1H4 CYX H42 CYX:2H4 CYX H51 CYX:1H5 CYX H52 CYX:2H5 CYX H61 CYX:1H6 CYX H62 CYX:2H6 CYX H81 CYX:1H8 CYX H91 CYX:1H9 CYX H21 CYY:1H2 CYY H22 CYY:2H2 CYY HN11 CYY:1HN1 CYY HN12 CYY:2HN1 CYY HN31 CYY:1HN3 CYY HN32 CYY:2HN3 CYY H11A CYZ:1H1 CYZ H21 CYZ:1H2 CYZ H31A CYZ:1H3 CYZ H41 CYZ:1H4 CYZ H51 CYZ:1H5 CYZ H61 CYZ:1H6 CYZ H62 CYZ:2H6 CYZ H71 CYZ:1H7 CYZ H72 CYZ:2H7 CYZ H81 CYZ:1H8 CYZ H2 CZ2: HN2 CZ2 H CZ2: HN1 CZ2 HB2 CZ2:1HCB CZ2 HB3 CZ2:2HCB CZ2 H11 CZA:1H1 CZA H12 CZA:2H1 CZA H13 CZA:3H1 CZA H161 CZA:1H16 CZA H121 CZA:1H12 CZA H122 CZA:2H12 CZA H101 CZA:1H10 CZA H102 CZA:2H10 CZA H103 CZA:3H10 CZA H111 CZA:1H11 CZA H112 CZA:2H11 CZA H113 CZA:3H11 CZA H261 CZB:1H26 CZB H262 CZB:2H26 CZB H101 CZB:1H10 CZB H102 CZB:2H10 CZB H101 CZH:1H10 CZH H102 CZH:2H10 CZH H261 CZH:1H26 CZH H262 CZH:2H26 CZH H101 CZI:1H10 CZI H102 CZI:2H10 CZI H261 CZI:1H26 CZI H262 CZI:2H26 CZI HB71 CZM:1HB7 CZM HB72 CZM:2HB7 CZM HB73 CZM:3HB7 CZM HA71 CZM:1HA7 CZM HA72 CZM:2HA7 CZM HA73 CZM:3HA7 CZM H291 CZN:1H29 CZN H292 CZN:2H29 CZN H101 CZN:1H10 CZN H102 CZN:2H10 CZN H261 CZP:1H26 CZP H262 CZP:2H26 CZP H281 CZP:1H28 CZP H282 CZP:2H28 CZP H291 CZP:1H29 CZP H292 CZP:2H29 CZP H301 CZP:1H30 CZP H302 CZP:2H30 CZP H311 CZP:1H31 CZP H312 CZP:2H31 CZP H101 CZP:1H10 CZP H102 CZP:2H10 CZP HD1 CZR:1HD CZR HD2 CZR:2HD CZR HD3 CZR:3HD CZR HA1 CZR:1HA CZR HA2 CZR:2HA CZR HB1 CZR:1HB CZR HB2 CZR:2HB CZR HG1 CZR:1HG CZR HG2 CZR:2HG CZR H CZZ: HN1 CZZ H2 CZZ: HN2 CZZ HCB1 CZZ:1HCB CZZ HCB2 CZZ:2HCB CZZ H91 D01:1H9 D01 H92 D01:2H9 D01 H101 D01:1H10 D01 H102 D01:2H10 D01 H191 D01:1H19 D01 H192 D01:2H19 D01 H201 D01:1H20 D01 H202 D01:2H20 D01 H11 D05:1H1 D05 H12 D05:2H1 D05 H21 D05:1H2 D05 H22A D05:2H2 D05 H23A D05:3H2 D05 H201 D05:1H20 D05 H202 D05:2H20 D05 H11 D10:1H1 D10 H12 D10:2H1 D10 H13 D10:3H1 D10 H21 D10:1H2 D10 H22 D10:2H2 D10 H31 D10:1H3 D10 H32 D10:2H3 D10 H41 D10:1H4 D10 H42 D10:2H4 D10 H51 D10:1H5 D10 H52 D10:2H5 D10 H61 D10:1H6 D10 H62 D10:2H6 D10 H71 D10:1H7 D10 H72 D10:2H7 D10 H81 D10:1H8 D10 H82 D10:2H8 D10 H91 D10:1H9 D10 H92 D10:2H9 D10 H101 D10:1H10 D10 H102 D10:2H10 D10 H103 D10:3H10 D10 H D11:1HN D11 H2 D11:2HN D11 HG21 D11:1HG2 D11 HG22 D11:2HG2 D11 HG23 D11:3HG2 D11 HXT D11:HOXT D11 H11 D12:1H1 D12 H12 D12:2H1 D12 H13 D12:3H1 D12 H21 D12:1H2 D12 H22 D12:2H2 D12 H31 D12:1H3 D12 H32 D12:2H3 D12 H41 D12:1H4 D12 H42 D12:2H4 D12 H51 D12:1H5 D12 H52 D12:2H5 D12 H61 D12:1H6 D12 H62 D12:2H6 D12 H71 D12:1H7 D12 H72 D12:2H7 D12 H81 D12:1H8 D12 H82 D12:2H8 D12 H91 D12:1H9 D12 H92 D12:2H9 D12 H101 D12:1H10 D12 H102 D12:2H10 D12 H111 D12:1H11 D12 H112 D12:2H11 D12 H121 D12:1H12 D12 H122 D12:2H12 D12 H123 D12:3H12 D12 H251 D13:1H25 D13 H252 D13:2H25 D13 H253 D13:3H25 D13 HM21 D16:1HM2 D16 HM22 D16:2HM2 D16 HM23 D16:3HM2 D16 H91 D16:1H9 D16 H92 D16:2H9 D16 HB1 D16:1HB D16 HB2 D16:2HB D16 HG1 D16:1HG D16 HG2 D16:2HG D16 HOE2 D16:2HOE D16 HP11 D16:1HP1 D16 HP12 D16:2HP1 D16 HP13 D16:3HP1 D16 H101 D18:1H10 D18 H102 D18:2H10 D18 H103 D18:3H10 D18 H91 D18:1H9 D18 H92 D18:2H9 D18 H93 D18:3H9 D18 HN11 D18:1HN1 D18 HN12 D18:2HN1 D18 HN'1 D18:1HN' D18 HN'2 D18:2HN' D18 HN2' D18:'HN2 D18 H9'1 D18:1H9' D18 H9'2 D18:2H9' D18 H9'3 D18:3H9' D18 H1'1 D18:1H1' D18 H1'2 D18:2H1' D18 H1'3 D18:3H1' D18 H101 D19:1H10 D19 H102 D19:2H10 D19 H91 D19:1H9 D19 H92 D19:2H9 D19 HN11 D19:1HN1 D19 HN12 D19:2HN1 D19 HN'1 D19:1HN' D19 HN'2 D19:2HN' D19 HN2' D19:'HN2 D19 H9'1 D19:1H9' D19 H9'2 D19:2H9' D19 H1'1 D19:1H1' D19 H1'2 D19:2H1' D19 H221 D1B:1H22 D1B H222 D1B:2H22 D1B H261 D1B:1H26 D1B H262 D1B:2H26 D1B H1C1 D1D:1H1C D1D H1C2 D1D:2H1C D1D H4C1 D1D:1H4C D1D H4C2 D1D:2H4C D1D H101 D1G:1H10 D1G H102 D1G:2H10 D1G H111 D1G:1H11 D1G H112 D1G:2H11 D1G H113 D1G:3H11 D1G H121 D1G:1H12 D1G H122 D1G:2H12 D1G H123 D1G:3H12 D1G HAA1 D1H:1HAA D1H HAA2 D1H:2HAA D1H HAA3 D1H:3HAA D1H HAC1 D1H:1HAC D1H HAC2 D1H:2HAC D1H HAC3 D1H:3HAC D1H HAK1 D1H:1HAK D1H HAK2 D1H:2HAK D1H HAL1 D1H:1HAL D1H HAL2 D1H:2HAL D1H HAB1 D1H:1HAB D1H HAB2 D1H:2HAB D1H HAB3 D1H:3HAB D1H HAD1 D1H:1HAD D1H HAD2 D1H:2HAD D1H HAD3 D1H:3HAD D1H H2A1 D1L:1H2A D1L H2A2 D1L:2H2A D1L H2A3 D1L:3H2A D1L HOP3 D1P:3HOP D1P HOP2 D1P:2HOP D1P H5' D1P:1H5* D1P H5'' D1P:2H5* D1P H4' D1P: H4* D1P H3' D1P: H3* D1P HO'3 D1P:3HO* D1P H2' D1P:1H2* D1P H2'' D1P:2H2* D1P H1' D1P: H1* D1P HO1' D1P:HO1* D1P H391 D1R:1H39 D1R H392 D1R:2H39 D1R H401 D1R:1H40 D1R H402 D1R:2H40 D1R H331 D1R:1H33 D1R H332 D1R:2H33 D1R H333 D1R:3H33 D1R H491 D1R:1H49 D1R H492 D1R:2H49 D1R H481 D1R:1H48 D1R H482 D1R:2H48 D1R H101 D1R:1H10 D1R H102 D1R:2H10 D1R H191 D1R:1H19 D1R H192 D1R:2H19 D1R H201 D1R:1H20 D1R H202 D1R:2H20 D1R H271 D1R:1H27 D1R H272 D1R:2H27 D1R H281 D1R:1H28 D1R H282 D1R:2H28 D1R H101 D1T:1H10 D1T H102 D1T:2H10 D1T H103 D1T:3H10 D1T H91 D1T:1H9 D1T H92 D1T:2H9 D1T H81 D1T:1H8 D1T H82 D1T:2H8 D1T H71 D1T:1H7 D1T H72 D1T:2H7 D1T H61 D1T:1H6 D1T H62 D1T:2H6 D1T H51 D1T:1H5 D1T H52 D1T:2H5 D1T H41 D1T:1H4 D1T H42 D1T:2H4 D1T H31 D1T:1H3 D1T H32 D1T:2H3 D1T H21 D1T:1H2 D1T H22 D1T:2H2 D1T H11 D1T:1H1 D1T H12 D1T:2H1 D1T HN1 D20:1HN D20 HN2 D20:2HN D20 H2C1 D20:1H2C D20 H2C2 D20:2H2C D20 H3C1 D20:1H3C D20 H3C2 D20:2H3C D20 H4C1 D20:1H4C D20 H4C2 D20:2H4C D20 H7C1 D20:1H7C D20 H7C2 D20:2H7C D20 H101 D20:1H10 D20 H102 D20:2H10 D20 H8C1 D20:1H8C D20 H8C2 D20:2H8C D20 H8C3 D20:3H8C D20 HN71 D23:1HN7 D23 HN72 D23:2HN7 D23 H201 D23:1H20 D23 H202 D23:2H20 D23 H203 D23:3H20 D23 H211 D23:1H21 D23 H212 D23:2H21 D23 H213 D23:3H21 D23 H221 D23:1H22 D23 H222 D23:2H22 D23 H223 D23:3H22 D23 H11A D24:1H1 D24 H12A D24:2H1 D24 H1'1 D24:1H1' D24 H1'2 D24:2H1' D24 H231 D2A:1H23 D2A H232 D2A:2H23 D2A H261 D2A:1H26 D2A H262 D2A:2H26 D2A H11A D2C:1H1 D2C H12A D2C:2H1 D2C H13 D2C:3H1 D2C H21 D2C:1H2 D2C H22 D2C:2H2 D2C H23 D2C:3H2 D2C H61 D2C:1H6 D2C H62 D2C:2H6 D2C HN21 D2C:1HN2 D2C HN22 D2C:2HN2 D2C H101 D2G:1H10 D2G H102 D2G:2H10 D2G H111 D2G:1H11 D2G H112 D2G:2H11 D2G H113 D2G:3H11 D2G H2C1 D2P:1H2C D2P H2C2 D2P:2H2C D2P H4C1 D2P:1H4C D2P H4C2 D2P:2H4C D2P HOP2 D3:2HOP D3 HOP3 D3:3HOP D3 H5' D3:1H5* D3 H5'' D3:2H5* D3 H4' D3: H4* D3 H3' D3: H3* D3 HO3' D3:*HO3 D3 H2' D3:1H2* D3 H2'' D3:2H2* D3 H1' D3: H1* D3 HN11 D31:1HN1 D31 HN12 D31:2HN1 D31 H21 D31:1H2 D31 H22 D31:2H2 D31 H61 D31:1H6 D31 H62 D31:2H6 D31 H71 D31:1H7 D31 H72 D31:2H7 D31 H91 D31:1H9 D31 H92 D31:2H9 D31 H101 D31:1H10 D31 H102 D31:2H10 D31 H201 D31:1H20 D31 H202 D31:2H20 D31 H371 D31:1H37 D31 H372 D31:2H37 D31 H381 D31:1H38 D31 H382 D31:2H38 D31 H391 D31:1H39 D31 H392 D31:2H39 D31 H401 D31:1H40 D31 H402 D31:2H40 D31 H411 D31:1H41 D31 H412 D31:2H41 D31 H77 D34:7H7 D34 HN1 D34:1HN D34 HN2A D34:2HN D34 H91 D34:1H9 D34 H92 D34:2H9 D34 H01 D34:1H0 D34 H02 D34:2H0 D34 H11 D34:1H1 D34 H12 D34:2H1 D34 H7B D34:'H7' D34 HN'1 D34:1HN' D34 HN'2 D34:2HN' D34 H9'1 D34:1H9' D34 H9'2 D34:2H9' D34 H0'1 D34:1H0' D34 H0'2 D34:2H0' D34 H1'1 D34:1H1' D34 H1'2 D34:2H1' D34 H77 D35:7H7 D35 HN1 D35:1HN D35 HN2A D35:2HN D35 H91 D35:1H9 D35 H92 D35:2H9 D35 H01 D35:1H0 D35 H02 D35:2H0 D35 H11 D35:1H1 D35 H12 D35:2H1 D35 H21 D35:1H2 D35 H22 D35:2H2 D35 H31 D35:1H3 D35 H32 D35:2H3 D35 H7B D35:'H7' D35 HN'1 D35:1HN' D35 HN'2 D35:2HN' D35 H9'1 D35:1H9' D35 H9'2 D35:2H9' D35 H0'1 D35:1H0' D35 H0'2 D35:2H0' D35 H1'1 D35:1H1' D35 H1'2 D35:2H1' D35 H2'1 D35:1H2' D35 H2'2 D35:2H2' D35 H3'1 D35:1H3' D35 H3'2 D35:2H3' D35 H71 D3F:1H7 D3F H72 D3F:2H7 D3F H73 D3F:3H7 D3F H101 D3G:1H10 D3G H102 D3G:2H10 D3G H_21 D3G:1H_2 D3G H_22 D3G:2H_2 D3G HN1 D3P:1HN D3P HN2 D3P:2HN D3P HOA2 D3T:2HOA D3T H5'1 D3T:1H5* D3T H5'2 D3T:2H5* D3T H4' D3T: H4* D3T H1' D3T: H1* D3T H5M1 D3T:1H5M D3T H5M2 D3T:2H5M D3T H5M3 D3T:3H5M D3T H2'1 D3T:1H2* D3T H2'2 D3T:2H2* D3T H3'1 D3T:1H3* D3T H3'2 D3T:2H3* D3T HOB2 D3T:2HOB D3T HOG3 D3T:3HOG D3T H11 D42:1H1 D42 H12 D42:2H1 D42 H21A D42:1H2 D42 H22 D42:2H2 D42 H41 D42:1H4 D42 H42 D42:2H4 D42 H51 D42:1H5 D42 H52 D42:2H5 D42 H151 D42:1H15 D42 H152 D42:2H15 D42 H153 D42:3H15 D42 H421 D42:1H42 D42 H422 D42:2H42 D42 H423 D42:3H42 D42 H461 D42:1H46 D42 H462 D42:2H46 D42 H463 D42:3H46 D42 H2AO D4D:OH2A D4D H1BO D4D:OH1B D4D H3BO D4D:OH3B D4D H5'1 D4D:1H5' D4D H5'2 D4D:2H5' D4D H4'C D4D:CH4' D4D H3'C D4D:CH3' D4D H2'C D4D:CH2' D4D H1'C D4D:CH1' D4D H5M1 D4D:1H5M D4D H5M2 D4D:2H5M D4D H5M3 D4D:3H5M D4D H66 D4D:6H6 D4D HOP2 D4M:2HOP D4M HOP3 D4M:3HOP D4M H5' D4M:1H5* D4M H5'' D4M:2H5* D4M H4' D4M: H4* D4M H3' D4M: H3* D4M H2' D4M: H2* D4M H1' D4M: H1* D4M H71 D4M:1H5M D4M H72 D4M:2H5M D4M H73 D4M:3H5M D4M HN1 D4P:1HN D4P HN2 D4P:2HN D4P H1CO D4T:OH1C D4T H2CO D4T:OH2C D4T H2BO D4T:OH2B D4T H2AO D4T:OH2A D4T H5'1 D4T:1H5' D4T H5'2 D4T:2H5' D4T H4'C D4T:CH4' D4T H1'C D4T:CH1' D4T H66 D4T:6H6 D4T HCA1 D4T:1HCA D4T HCA2 D4T:2HCA D4T HCA3 D4T:3HCA D4T H2'C D4T:CH2' D4T H3'C D4T:CH3' D4T HB1 D5G:1HB D5G HB2 D5G:2HB D5G HD21 D5G:1HD2 D5G HD22 D5G:2HD2 D5G HD23 D5G:3HD2 D5G HD11 D5G:1HD1 D5G HD12 D5G:2HD1 D5G HD13 D5G:3HD1 D5G HAX1 D5G:1HAX D5G HAX2 D5G:2HAX D5G HAN1 D5G:1HAN D5G HAN2 D5G:2HAN D5G H5'1 D5M:1H5* D5M H5'2 D5M:2H5* D5M H4' D5M: H4* D5M H3' D5M: H3* D5M H2'1 D5M:1H2* D5M H2'2 D5M:2H2* D5M H1' D5M: H1* D5M HN61 D5M:1HN6 D5M HN62 D5M:2HN6 D5M H21 D6G:1H2 D6G H22 D6G:2H2 D6G H61 D6G:1H6 D6G H62 D6G:2H6 D6G HOP2 D6G:2HOP D6G HOP3 D6G:3HOP D6G H11 D6P:1H1 D6P H12 D6P:2H1 D6P H21 D6P:1H2 D6P H22 D6P:2H2 D6P HZ71 D76:1HZ7 D76 HZ72 D76:2HZ7 D76 HZ73 D76:3HZ7 D76 HZ31 D76:1HZ3 D76 HZ32 D76:2HZ3 D76 HZ41 D76:1HZ4 D76 HZ42 D76:2HZ4 D76 HZ51 D76:1HZ5 D76 HZ52 D76:2HZ5 D76 HP31 D76:1HP3 D76 HP32 D76:2HP3 D76 HP41 D76:1HP4 D76 HP42 D76:2HP4 D76 HC21 D76:1HC2 D76 HC22 D76:2HC2 D76 HP11 D76:1HP1 D76 HP12 D76:2HP1 D76 H41 D7G:1H4 D7G H42 D7G:2H4 D7G H51 D7G:1H5 D7G H52 D7G:2H5 D7G H101 D7G:1H10 D7G H102 D7G:2H10 D7G H111 D7G:1H11 D7G H112 D7G:2H11 D7G H121 D7G:1H12 D7G H122 D7G:2H12 D7G H131 D7G:1H13 D7G H132 D7G:2H13 D7G H141 D7G:1H14 D7G H142 D7G:2H14 D7G H143 D7G:3H14 D7G H151 D7G:1H15 D7G H152 D7G:2H15 D7G H171 D7G:1H17 D7G H172 D7G:2H17 D7G H173 D7G:3H17 D7G H181 D7G:1H18 D7G H182 D7G:2H18 D7G H183 D7G:3H18 D7G H191 D7G:1H19 D7G H192 D7G:2H19 D7G H1'1 D7P:1H1' D7P H1'2 D7P:2H1' D7P HN'1 D7P:1HN' D7P HN'2 D7P:2HN' D7P HB'1 D7P:1HB' D7P HB'2 D7P:2HB' D7P HB1 D7P:1HB D7P HB2 D7P:2HB D7P HG1 D7P:1HG D7P HG2 D7P:2HG D7P HD1A D7P:1HD D7P HD2A D7P:2HD D7P H191 D91:1H19 D91 H192 D91:2H19 D91 H161 D91:1H16 D91 H162 D91:2H16 D91 H151 D91:1H15 D91 H152 D91:2H15 D91 H71 D91:1H7 D91 H72 D91:2H7 D91 H111 D91:1H11 D91 H112 D91:2H11 D91 H113 D91:3H11 D91 H121 D91:1H12 D91 H122 D91:2H12 D91 H123 D91:3H12 D91 H61 D92:1H6 D92 H62 D92:2H6 D92 H51 D92:1H5 D92 H52 D92:2H5 D92 H41 D92:1H4 D92 H42 D92:2H4 D92 H31 D92:1H3 D92 H32 D92:2H3 D92 H261 D92:1H26 D92 H262 D92:2H26 D92 H301 D92:1H30 D92 H302 D92:2H30 D92 H303 D92:3H30 D92 H281 D92:1H28 D92 H282 D92:2H28 D92 H291 D92:1H29 D92 H292 D92:2H29 D92 H61 D93:1H6 D93 H62 D93:2H6 D93 H51 D93:1H5 D93 H52 D93:2H5 D93 H41 D93:1H4 D93 H42 D93:2H4 D93 H31 D93:1H3 D93 H32 D93:2H3 D93 H261 D93:1H26 D93 H262 D93:2H26 D93 H301 D93:1H30 D93 H302 D93:2H30 D93 H303 D93:3H30 D93 H281 D93:1H28 D93 H282 D93:2H28 D93 H291 D93:1H29 D93 H292 D93:2H29 D93 HAC1 D9G:1HAC D9G HAC2 D9G:2HAC D9G HAC3 D9G:3HAC D9G HAD1 D9G:1HAD D9G HAD2 D9G:2HAD D9G HAE1 D9G:1HAE D9G HAE2 D9G:2HAE D9G HAF1 D9G:1HAF D9G HAF2 D9G:2HAF D9G HAG1 D9G:1HAG D9G HAG2 D9G:2HAG D9G HAH1 D9G:1HAH D9G HAH2 D9G:2HAH D9G HAI1 D9G:1HAI D9G HAI2 D9G:2HAI D9G HAJ1 D9G:1HAJ D9G HAJ2 D9G:2HAJ D9G HAK1 D9G:1HAK D9G HAK2 D9G:2HAK D9G HAL1 D9G:1HAL D9G HAL2 D9G:2HAL D9G HAM1 D9G:1HAM D9G HAM2 D9G:2HAM D9G HAN1 D9G:1HAN D9G HAN2 D9G:2HAN D9G HAS1 D9G:1HAS D9G HAS2 D9G:2HAS D9G HAS3 D9G:3HAS D9G HAA1 D9G:1HAA D9G HAA2 D9G:2HAA D9G HAA3 D9G:3HAA D9G HAP1 D9G:1HAP D9G HAP2 D9G:2HAP D9G HOP3 DA:3HOP DA HOP2 DA:2HOP DA H5' DA:1H5* DA H5'' DA:2H5* DA H4' DA: H4* DA H3' DA: H3* DA HO3' DA:H3T DA H2' DA:1H2* DA H2'' DA:2H2* DA H1' DA: H1* DA H61 DA:1H6 DA H62 DA:2H6 DA HN21 DA1:1HN2 DA1 HN22 DA1:2HN2 DA1 HN31 DA1:1HN3 DA1 HN32 DA1:2HN3 DA1 HC11 DA2:1HC1 DA2 HC12 DA2:2HC1 DA2 HC13 DA2:3HC1 DA2 HC21 DA2:1HC2 DA2 HC22 DA2:2HC2 DA2 HC23 DA2:3HC2 DA2 HN1 DA2:1HN DA2 HN2 DA2:2HN DA2 HCB1 DA2:1HCB DA2 HCB2 DA2:2HCB DA2 HCG1 DA2:1HCG DA2 HCG2 DA2:2HCG DA2 HCD1 DA2:1HCD DA2 HCD2 DA2:2HCD DA2 HN11 DA3:1HN1 DA3 HN12 DA3:2HN1 DA3 H31 DA3:1H3 DA3 H32 DA3:2H3 DA3 H51 DA3:1H5 DA3 H52 DA3:2H5 DA3 HN91 DA5:1HN9 DA5 HN92 DA5:2HN9 DA5 HN93 DA5:3HN9 DA5 HND1 DA5:1HND DA5 HD21 DA5:1HD2 DA5 HD22 DA5:2HD2 DA5 HD31 DA5:1HD3 DA5 HD32 DA5:2HD3 DA5 HD71 DA5:1HD7 DA5 HD72 DA5:2HD7 DA5 HD73 DA5:3HD7 DA5 HD81 DA5:1HD8 DA5 HD82 DA5:2HD8 DA5 HD83 DA5:3HD8 DA5 HN91 DA6:1HN9 DA6 HN92 DA6:2HN9 DA6 HN93 DA6:3HN9 DA6 HND1 DA6:1HND DA6 HD21 DA6:1HD2 DA6 HD22 DA6:2HD2 DA6 HD31 DA6:1HD3 DA6 HD32 DA6:2HD3 DA6 HD71 DA6:1HD7 DA6 HD72 DA6:2HD7 DA6 HD73 DA6:3HD7 DA6 HD81 DA6:1HD8 DA6 HD82 DA6:2HD8 DA6 HD83 DA6:3HD8 DA6 HN91 DA7:1HN9 DA7 HN92 DA7:2HN9 DA7 H171 DA7:1H17 DA7 H172 DA7:2H17 DA7 H181 DA7:1H18 DA7 H182 DA7:2H18 DA7 H201 DA7:1H20 DA7 H202 DA7:2H20 DA7 H203 DA7:3H20 DA7 H211 DA7:1H21 DA7 H212 DA7:2H21 DA7 H213 DA7:3H21 DA7 HCA1 DAA:1HCA DAA HCA2 DAA:2HCA DAA HCB1 DAA:1HCB DAA HCB2 DAA:2HCB DAA HCG1 DAA:1HCG DAA HCG2 DAA:2HCG DAA HCD1 DAA:1HCD DAA HCD2 DAA:2HCD DAA HCE1 DAA:1HCE DAA HCE2 DAA:2HCE DAA HCS1 DAA:1HCS DAA HCS2 DAA:2HCS DAA HCS3 DAA:3HCS DAA HN21 DAA:1HN2 DAA HN22 DAA:2HN2 DAA H DAB:1HN DAB H2 DAB:2HN DAB HB2 DAB:1HB DAB HB3 DAB:2HB DAB HG2 DAB:1HG DAB HG3 DAB:2HG DAB HD1 DAB:1HD DAB HD2 DAB:2HD DAB H41 DAC:1H4 DAC H42 DAC:2H4 DAC H51 DAC:1H5 DAC H52 DAC:2H5 DAC H61 DAC:1H6 DAC H62 DAC:2H6 DAC H71 DAC:1H7 DAC H72 DAC:2H7 DAC H81 DAC:1H8 DAC H82 DAC:2H8 DAC H91 DAC:1H9 DAC H92 DAC:2H9 DAC H101 DAC:1H10 DAC H102 DAC:2H10 DAC H103 DAC:3H10 DAC H1'1 DAC:1H1' DAC H1'2 DAC:2H1' DAC H2'1 DAC:1H2' DAC H2'2 DAC:2H2' DAC H5'1 DAC:1H5' DAC H5'2 DAC:2H5' DAC H5'3 DAC:3H5' DAC HOG2 DAD:2HOG DAD HOG3 DAD:3HOG DAD HOB2 DAD:2HOB DAD HOA2 DAD:2HOA DAD H5'1 DAD:1H5* DAD H5'2 DAD:2H5* DAD H4' DAD: H4* DAD H3'1 DAD:1H3* DAD H3'2 DAD:2H3* DAD H2'1 DAD:1H2* DAD H2'2 DAD:2H2* DAD H1' DAD: H1* DAD HN61 DAD:1HN6 DAD HN62 DAD:2HN6 DAD HOB2 DAE:2HOB DAE HOA2 DAE:2HOA DAE HNA1 DAE:1HNA DAE HA21 DAE:1HA2 DAE HA22 DAE:2HA2 DAE HA11 DAE:1HA1 DAE HA12 DAE:2HA1 DAE H11 DAF:1H1 DAF H12 DAF:2H1 DAF H61 DAF:1H6 DAF H62 DAF:2H6 DAF H63 DAF:3H6 DAF H7H1 DAF:1H7H DAF H7H2 DAF:2H7H DAF HO2' DAF:'HO2 DAF HO3' DAF:'HO3 DAF HO4' DAF:'HO4 DAF H61 DAG:1H6 DAG H62 DAG:2H6 DAG H63 DAG:3H6 DAG HN41 DAG:1HN4 DAG HN42 DAG:2HN4 DAG H2 DAH: HN2 DAH HB2 DAH:1HB DAH HB3 DAH:2HB DAH HE2 DAH: HOE DAH HZ DAH: HOZ DAH H51 DAI:1H5 DAI H52 DAI:2H5 DAI H211 DAI:1H21 DAI H212 DAI:2H21 DAI H201 DAI:1H20 DAI H202 DAI:2H20 DAI H31 DAI:1H3 DAI H32 DAI:2H3 DAI H21 DAI:1H2 DAI H22 DAI:2H2 DAI H11 DAI:1H1 DAI H12 DAI:2H1 DAI H13A DAI:3H1 DAI H11 DAJ:1H1 DAJ H12 DAJ:2H1 DAJ HN1 DAJ:1HN DAJ HN2 DAJ:2HN DAJ HN3 DAJ:3HN DAJ H31 DAJ:1H3 DAJ H32 DAJ:2H3 DAJ H131 DAJ:1H13 DAJ H132 DAJ:2H13 DAJ H133 DAJ:3H13 DAJ HN4 DAJ:4HN DAJ HN5 DAJ:5HN DAJ H101 DAJ:1H10 DAJ H102 DAJ:2H10 DAJ H103 DAJ:3H10 DAJ H22A DAK:2H2 DAK HN61 DAK:1HN6 DAK HN62 DAK:2HN6 DAK H81 DAK:1H8 DAK H1'1 DAK:1H1' DAK H2'1 DAK:1H2' DAK HO21 DAK:1HO2 DAK H3'1 DAK:1H3' DAK H4'1 DAK:1H4' DAK H5'1 DAK:1H5' DAK H5'2 DAK:2H5' DAK HP91 DAK:1HP9 DAK HP92 DAK:2HP9 DAK HPA1 DAK:1HPA DAK HPA2 DAK:2HPA DAK HPA3 DAK:3HPA DAK HPB1 DAK:1HPB DAK HPB2 DAK:2HPB DAK HPB3 DAK:3HPB DAK HP71 DAK:1HP7 DAK HO31 DAK:1HO3 DAK HN21 DAK:1HN2 DAK HP51 DAK:1HP5 DAK HP52 DAK:2HP5 DAK HP41 DAK:1HP4 DAK HP42 DAK:2HP4 DAK HN11 DAK:1HN1 DAK HP21 DAK:1HP2 DAK HP22 DAK:2HP2 DAK HP11 DAK:1HP1 DAK HP12 DAK:2HP1 DAK HD61 DAK:1HD6 DAK HD51 DAK:1HD5 DAK HD91 DAK:1HD9 DAK HD81 DAK:1HD8 DAK HDA1 DAK:1HDA DAK HDA2 DAK:2HDA DAK HDA3 DAK:3HDA DAK HDB1 DAK:1HDB DAK HDB2 DAK:2HDB DAK HDB3 DAK:3HDB DAK HD31 DAK:1HD3 DAK HD21 DAK:1HD2 DAK H2 DAL: HN2 DAL HB1 DAL:1HB DAL HB2 DAL:2HB DAL HB3 DAL:3HB DAL H DAM: HN DAM HM1 DAM:1HM DAM HM2 DAM:2HM DAM HM3 DAM:3HM DAM HB1 DAM:1HB DAM HB2 DAM:2HB DAM H91 DAN:1H9 DAN H92 DAN:2H9 DAN H111 DAN:1H11 DAN H112 DAN:2H11 DAN H113 DAN:3H11 DAN HOB1 DAN:1HOB DAN H21 DAO:1H2 DAO H22 DAO:2H2 DAO H31 DAO:1H3 DAO H32 DAO:2H3 DAO H41 DAO:1H4 DAO H42 DAO:2H4 DAO H51 DAO:1H5 DAO H52 DAO:2H5 DAO H61 DAO:1H6 DAO H62 DAO:2H6 DAO H71 DAO:1H7 DAO H72 DAO:2H7 DAO H81 DAO:1H8 DAO H82 DAO:2H8 DAO H91 DAO:1H9 DAO H92 DAO:2H9 DAO H101 DAO:1H10 DAO H102 DAO:2H10 DAO H111 DAO:1H11 DAO H112 DAO:2H11 DAO H121 DAO:1H12 DAO H122 DAO:2H12 DAO H123 DAO:3H12 DAO HN31 DAP:1HN3 DAP HN32 DAP:2HN3 DAP H2' DAP: H2* DAP H3' DAP: H3* DAP H5' DAP: H5* DAP H6' DAP: H6* DAP HN51 DAP:1HN5 DAP HN52 DAP:2HN5 DAP HOB2 DAQ:2HOB DAQ HOA2 DAQ:2HOA DAQ HNA1 DAQ:1HNA DAQ HA21 DAQ:1HA2 DAQ HA22 DAQ:2HA2 DAQ HA11 DAQ:1HA1 DAQ HA12 DAQ:2HA1 DAQ HA31 DAQ:1HA3 DAQ HA32 DAQ:2HA3 DAQ H2 DAR: HN2 DAR HB2 DAR:1HB DAR HB3 DAR:2HB DAR HG2 DAR:1HG DAR HG3 DAR:2HG DAR HD2 DAR:1HD DAR HD3 DAR:2HD DAR HE DAR: HNE DAR HH11 DAR:1HH1 DAR HH12 DAR:2HH1 DAR HH21 DAR:1HH2 DAR HH22 DAR:2HH2 DAR H2 DAS: HN2 DAS HB2 DAS:1HB DAS HB3 DAS:2HB DAS HOB2 DAT:2HOB DAT HOB3 DAT:3HOB DAT HOA2 DAT:2HOA DAT H5'1 DAT:1H5* DAT H5'2 DAT:2H5* DAT H4' DAT: H4* DAT H3' DAT: H3* DAT HO3' DAT:*HO3 DAT H2'1 DAT:1H2* DAT H2'2 DAT:2H2* DAT H1' DAT: H1* DAT HN61 DAT:1HN6 DAT HN62 DAT:2HN6 DAT HC61 DAU:1HC6 DAU HC62 DAU:2HC6 DAU H4PO DAU:OH4P DAU H2PO DAU:OH2P DAU HC51 DAU:1HC5 DAU HC52 DAU:2HC5 DAU H4,C DAU:CH4, DAU H3,C DAU:CH3, DAU H3,O DAU:OH3, DAU HC21 DAU:1HC2 DAU HC22 DAU:2HC2 DAU H1,C DAU:CH1, DAU H61C DAU:CH61 DAU H5A1 DAU:1H5A DAU H5A2 DAU:2H5A DAU H5A3 DAU:3H5A DAU H31N DAU:NH31 DAU HCB1 DAV:1HCB DAV HCB2 DAV:2HCB DAV HCG1 DAV:1HCG DAV HCG2 DAV:2HCG DAV HCD1 DAV:1HCD DAV HCD2 DAV:2HCD DAV HCA1 DAV:1HCA DAV HCA2 DAV:2HCA DAV H91 DAX:1H9 DAX H92 DAX:2H9 DAX HD21 DAX:1HD2 DAX HD22 DAX:2HD2 DAX HD31 DAX:1HD3 DAX HD32 DAX:2HD3 DAX HD71 DAX:1HD7 DAX HD72 DAX:2HD7 DAX HD73 DAX:3HD7 DAX HD81 DAX:1HD8 DAX HD82 DAX:2HD8 DAX HD83 DAX:3HD8 DAX HAF1 DB0:1HAF DB0 HAF2 DB0:2HAF DB0 HAA1 DB0:1HAA DB0 HAA2 DB0:2HAA DB0 HAA3 DB0:3HAA DB0 HAC1 DB0:1HAC DB0 HAC2 DB0:2HAC DB0 HN11 DB1:1HN1 DB1 HN12 DB1:2HN1 DB1 H141 DB9:1H14 DB9 H142 DB9:2H14 DB9 H261 DB9:1H26 DB9 H262 DB9:2H26 DB9 H21 DBA:1H2 DBA H22 DBA:2H2 DBA HM21 DBA:1HM2 DBA HM22 DBA:2HM2 DBA HM23 DBA:3HM2 DBA HM61 DBA:1HM6 DBA HM62 DBA:2HM6 DBA HM63 DBA:3HM6 DBA H11 DBC:1H1 DBC H12 DBC:2H1 DBC H41 DBC:1H4 DBC H42 DBC:2H4 DBC H51 DBD:1H5 DBD H52 DBD:2H5 DBD H61 DBD:1H6 DBD H62 DBD:2H6 DBD H191 DBD:1H19 DBD H192 DBD:2H19 DBD H151 DBG:1H15 DBG H152 DBG:2H15 DBG HNG3 DBG:3HNG DBG HOG1 DBG:1HOG DBG HNB3 DBG:3HNB DBG HOB1 DBG:1HOB DBG HOA1 DBG:1HOA DBG H5'1 DBG:1H5* DBG H5'2 DBG:2H5* DBG H4' DBG: H4* DBG H2' DBG: H2* DBG HO2' DBG:HO2* DBG H3' DBG: H3* DBG HO3' DBG:HO3* DBG H1' DBG: H1* DBG HN21 DBG:1HN2 DBG HN22 DBG:2HN2 DBG H5'1 DBI:1H5' DBI H5'2 DBI:2H5' DBI H111 DBI:1H11 DBI H112 DBI:2H11 DBI H113 DBI:3H11 DBI H101 DBI:1H10 DBI H102 DBI:2H10 DBI H103 DBI:3H10 DBI HO21 DBI:1HO2 DBI HC1 DBL:1HC DBL HC2 DBL:2HC DBL HC3 DBL:3HC DBL HN2 DBL:2HN DBL HC61 DBL:1HC6 DBL HC62 DBL:2HC6 DBL HC7 DBL:7HC DBL HA1 DBL:1HA DBL HB2 DBL:2HB DBL HD3 DBL:3HD DBL HB1 DBL:1HB DBL HD2 DBL:2HD DBL HE3 DBL:3HE DBL HN01 DBL:1HN0 DBL HC11 DBL:1HC1 DBL HC41 DBL:1HC4 DBL HO51 DBL:1HO5 DBL HC71 DBL:1HC7 DBL HC81 DBL:1HC8 DBL HC02 DBL:2HC0 DBL HN42 DBL:2HN4 DBL HC52 DBL:2HC5 DBL H281 DBL:1H28 DBL H282 DBL:2H28 DBL H311 DBL:1H31 DBL H312 DBL:2H31 DBL HN23 DBL:3HN2 DBL HC33 DBL:3HC3 DBL HC73 DBL:3HC7 DBL HC83 DBL:3HC8 DBL HO24 DBL:4HO2 DBL HN34 DBL:4HN3 DBL HC44 DBL:4HC4 DBL HC84 DBL:4HC8 DBL HC94 DBL:4HC9 DBL HC15 DBL:5HC1 DBL HO35 DBL:5HO3 DBL HN45 DBL:5HN4 DBL HC55 DBL:5HC5 DBL HC85 DBL:5HC8 DBL HC16 DBL:6HC1 DBL HC26 DBL:6HC2 DBL HC36 DBL:6HC3 DBL HN86 DBL:6HN8 DBL HC96 DBL:6HC9 DBL HC47 DBL:7HC4 DBL HC67 DBL:7HC6 DBL HO87 DBL:7HO8 DBL HO97 DBL:7HO9 DBL HO08 DBL:8HO0 DBL HC'1 DBL:1HC' DBL H2'1 DBL:1H2' DBL H2'2 DBL:2H2' DBL HC'5 DBL:5HC' DBL H7'1 DBL:1H7' DBL H7'2 DBL:2H7' DBL H7'3 DBL:3H7' DBL H8'1 DBL:1H8' DBL H8'2 DBL:2H8' DBL H9'O DBL:OH9' DBL HO'1 DBL:1HO" DBL H2A1 DBL:1H2" DBL H2A2 DBL:2H2" DBL H2'3 DBL:3H2" DBL H6'1 DBM:1H6' DBM H6'2 DBM:2H6' DBM H6'3 DBM:3H6' DBM H71 DBM:1H7 DBM H72 DBM:2H7 DBM H73 DBM:3H7 DBM H271 DBN:1H27 DBN H272 DBN:2H27 DBN H281 DBN:1H28 DBN H282 DBN:2H28 DBN H291 DBN:1H29 DBN H292 DBN:2H29 DBN H301 DBN:1H30 DBN H302 DBN:2H30 DBN H91 DBO:1H9 DBO H92 DBO:2H9 DBO H141 DBO:1H14 DBO H142 DBO:2H14 DBO H271 DBO:1H27 DBO H272 DBO:2H27 DBO H273 DBO:3H27 DBO H311 DBO:1H31 DBO H312 DBO:2H31 DBO HN1 DBP:1HN DBP HN21 DBP:1HN2 DBP HB11 DBP:1HB1 DBP HB21 DBP:1HB2 DBP HD11 DBP:1HD1 DBP HC11 DBP:1HC1 DBP HC21 DBP:1HC2 DBP HCZ1 DBP:1HCZ DBP HE21 DBP:1HE2 DBP HE22 DBP:2HE2 DBP H61 DBQ:1H6 DBQ H62 DBQ:2H6 DBQ H71 DBQ:1H7 DBQ H72 DBQ:2H7 DBQ HN51 DBQ:1HN5 DBQ HN52 DBQ:2HN5 DBQ H11A DBR:1H1 DBR H12A DBR:2H1 DBR H31A DBR:1H3 DBR H32 DBR:2H3 DBR H41 DBR:1H4 DBR H42 DBR:2H4 DBR H61 DBR:1H6 DBR H62 DBR:2H6 DBR H71 DBR:1H7 DBR H72 DBR:2H7 DBR H101 DBR:1H10 DBR H102 DBR:2H10 DBR H131 DBR:1H13 DBR H132 DBR:2H13 DBR H141 DBR:1H14 DBR H142 DBR:2H14 DBR H151 DBR:1H15 DBR H152 DBR:2H15 DBR H161 DBR:1H16 DBR H162 DBR:2H16 DBR H281 DBR:1H28 DBR H282 DBR:2H28 DBR H283 DBR:3H28 DBR H291 DBR:1H29 DBR H292 DBR:2H29 DBR H293 DBR:3H29 DBR H281 DBS:1H28 DBS H282 DBS:2H28 DBS H81 DBT:1H8 DBT H82 DBT:2H8 DBT H91 DBT:1H9 DBT H92 DBT:2H9 DBT H101 DBT:1H10 DBT H102 DBT:2H10 DBT H111 DBT:1H11 DBT H112 DBT:2H11 DBT H121 DBT:1H12 DBT H122 DBT:2H12 DBT H131 DBT:1H13 DBT H132 DBT:2H13 DBT H141 DBT:1H14 DBT H142 DBT:2H14 DBT H143 DBT:3H14 DBT HB1 DBU:1HB DBU HG1 DBU:1HG DBU HG2 DBU:2HG DBU HG3 DBU:3HG DBU HMA1 DBV:1HMA DBV HMA2 DBV:2HMA DBV HMA3 DBV:3HMA DBV HBA1 DBV:1HBA DBV HBA2 DBV:2HBA DBV HHA1 DBV:1HHA DBV HAA1 DBV:1HAA DBV HHB1 DBV:1HHB DBV HMB1 DBV:1HMB DBV HMB2 DBV:2HMB DBV HMB3 DBV:3HMB DBV HAB1 DBV:1HAB DBV HAB2 DBV:2HAB DBV HBB1 DBV:1HBB DBV HBB2 DBV:2HBB DBV H2B1 DBV:1H2B DBV HHC1 DBV:1HHC DBV HHC2 DBV:2HHC DBV HMC1 DBV:1HMC DBV HMC2 DBV:2HMC DBV HMC3 DBV:3HMC DBV HAC1 DBV:1HAC DBV HAC2 DBV:2HAC DBV HBC1 DBV:1HBC DBV HBC2 DBV:2HBC DBV H2C1 DBV:1H2C DBV H1D1 DBV:1H1D DBV HMD1 DBV:1HMD DBV HMD2 DBV:2HMD DBV HMD3 DBV:3HMD DBV HAD1 DBV:1HAD DBV HBD1 DBV:1HBD DBV HBD2 DBV:2HBD DBV H DBY:1HN DBY H2 DBY:2HN DBY HB2 DBY:1HB DBY HB3 DBY:2HB DBY HN1 DBZ:1HN DBZ HN2 DBZ:2HN DBZ HB1 DBZ:1HB DBZ HB2 DBZ:2HB DBZ HOP3 DC:3HOP DC HOP2 DC:2HOP DC H5' DC:1H5* DC H5'' DC:2H5* DC H4' DC: H4* DC H3' DC: H3* DC HO3' DC:H3T DC H2' DC:1H2* DC H2'' DC:2H2* DC H1' DC: H1* DC H41 DC:1H4 DC H42 DC:2H4 DC H2C1 DC1:1H2C DC1 H2C2 DC1:2H2C DC1 H4C1 DC1:1H4C DC1 H4C2 DC1:2H4C DC1 H6C1 DC1:1H6C DC1 H6C2 DC1:2H6C DC1 H7C1 DC1:1H7C DC1 H7C2 DC1:2H7C DC1 H7C3 DC1:3H7C DC1 H8C1 DC1:1H8C DC1 H8C2 DC1:2H8C DC1 H8C3 DC1:3H8C DC1 H101 DC8:1H10 DC8 H102 DC8:2H10 DC8 H141 DC8:1H14 DC8 H142 DC8:2H14 DC8 H2A DCA: AH2 DCA H61A DCA:AH61 DCA H62A DCA:AH62 DCA H8A DCA: AH8 DCA H1B DCA:AH1* DCA H2B DCA:AH2* DCA HO2A DCA:AHO2 DCA H3B DCA:AH3* DCA HOA8 DCA:8HOA DCA HOA9 DCA:9HOA DCA H4B DCA:AH4* DCA H51A DCA:AH51 DCA H52A DCA:AH52 DCA HOA2 DCA:2HOA DCA HOA5 DCA:5HOA DCA H121 DCA:1H12 DCA H122 DCA:2H12 DCA H131 DCA:1H13 DCA H132 DCA:2H13 DCA H133 DCA:3H13 DCA H141 DCA:1H14 DCA H142 DCA:2H14 DCA H143 DCA:3H14 DCA H71 DCA:1H7 DCA H72 DCA:2H7 DCA H61 DCA:1H6 DCA H62 DCA:2H6 DCA H31 DCA:1H3 DCA H32 DCA:2H3 DCA H21 DCA:1H2 DCA H22 DCA:2H2 DCA H23 DCA:3H2 DCA H6A1 DCB:1H6A DCB HCA2 DCB:2HCA DCB H6B1 DCB:1H6B DCB H6B2 DCB:2H6B DCB H101 DCC:1H10 DCC H102 DCC:2H10 DCC H111 DCC:1H11 DCC H112 DCC:2H11 DCC H121 DCC:1H12 DCC H122 DCC:2H12 DCC H123 DCC:3H12 DCC HN61 DCC:1HN6 DCC HN62 DCC:2HN6 DCC H5'1 DCC:1H5' DCC H5'2 DCC:2H5' DCC HPA1 DCC:1HPA DCC HPA2 DCC:2HPA DCC HP71 DCC:1HP7 DCC HP72 DCC:2HP7 DCC HP73 DCC:3HP7 DCC HP91 DCC:1HP9 DCC HP92 DCC:2HP9 DCC HP93 DCC:3HP9 DCC HP51 DCC:1HP5 DCC HP52 DCC:2HP5 DCC HP41 DCC:1HP4 DCC HP42 DCC:2HP4 DCC HP21 DCC:1HP2 DCC HP22 DCC:2HP2 DCC HP11 DCC:1HP1 DCC HP12 DCC:2HP1 DCC HA21 DCC:1HA2 DCC HA22 DCC:2HA2 DCC HA31 DCC:1HA3 DCC HA32 DCC:2HA3 DCC HA41 DCC:1HA4 DCC HA42 DCC:2HA4 DCC HA51 DCC:1HA5 DCC HA52 DCC:2HA5 DCC HA61 DCC:1HA6 DCC HA62 DCC:2HA6 DCC HA71 DCC:1HA7 DCC HA72 DCC:2HA7 DCC HA81 DCC:1HA8 DCC HA82 DCC:2HA8 DCC HA91 DCC:1HA9 DCC HA92 DCC:2HA9 DCC H5C1 DCD:1H5C DCD H5C2 DCD:2H5C DCD H5C3 DCD:3H5C DCD H3C1 DCD:1H3C DCD H3C2 DCD:2H3C DCD H2C1 DCD:1H2C DCD H2C2 DCD:2H2C DCD H4C1 DCD:1H4C DCD H4C2 DCD:2H4C DCD H4C3 DCD:3H4C DCD H11 DCE:1H1 DCE H12 DCE:2H1 DCE H21 DCE:1H2 DCE H22 DCE:2H2 DCE H71 DCF:1H7 DCF H72 DCF:2H7 DCF H2S1 DCF:1H2S DCF H2S2 DCF:2H2S DCF H5S1 DCF:1H5S DCF H5S2 DCF:2H5S DCF HOP2 DCG:2HOP DCG HOP3 DCG:3HOP DCG H5' DCG:1H5* DCG H5'' DCG:2H5* DCG H4' DCG: H4* DCG H3' DCG: H3* DCG HO3' DCG:*HO3 DCG H2' DCG:1H2* DCG H2'' DCG:2H2* DCG H1' DCG: H1* DCG HN21 DCG:1HN2 DCG HN22 DCG:2HN2 DCG HZ11 DCH:1HZ1 DCH HZ12 DCH:2HZ1 DCH HZ21 DCH:1HZ2 DCH HZ22 DCH:2HZ2 DCH HA11 DCH:1HA1 DCH HA12 DCH:2HA1 DCH HA51 DCH:1HA5 DCH HA52 DCH:2HA5 DCH HA61 DCH:1HA6 DCH HA62 DCH:2HA6 DCH HA63 DCH:3HA6 DCH H321 DCH:1H32 DCH H322 DCH:2H32 DCH H341 DCH:1H34 DCH H342 DCH:2H34 DCH H351 DCH:1H35 DCH H352 DCH:2H35 DCH HN1 DCI:1HN DCI HN2 DCI:2HN DCI HA1 DCI:1HA DCI HA2 DCI:2HA DCI HG11 DCI:1HG1 DCI HG12 DCI:2HG1 DCI HG21 DCI:1HG2 DCI HG22 DCI:2HG2 DCI HG23 DCI:3HG2 DCI HD1 DCI:1HD DCI HD2 DCI:2HD DCI HD3 DCI:3HD DCI HN1 DCL:1HN DCL HN2 DCL:2HN DCL HC1 DCL:1HC DCL HC2 DCL:2HC DCL HB1 DCL:1HB DCL HB2 DCL:2HB DCL HD11 DCL:1HD1 DCL HD12 DCL:2HD1 DCL HD13 DCL:3HD1 DCL HD21 DCL:1HD2 DCL HD22 DCL:2HD2 DCL HD23 DCL:3HD2 DCL HN41 DCM:1HN4 DCM HN42 DCM:2HN4 DCM H1' DCM: H1* DCM H2'1 DCM:1H2* DCM H2'2 DCM:2H2* DCM H3' DCM: H3* DCM H4' DCM: H4* DCM HO3' DCM:*HO3 DCM H5'1 DCM:1H5* DCM H5'2 DCM:2H5* DCM HOP2 DCM:2HOP DCM HOP3 DCM:3HOP DCM H31 DCO:1H3 DCO H32 DCO:2H3 DCO HN41 DCP:1HN4 DCP HN42 DCP:2HN4 DCP H1' DCP: H1* DCP H2'1 DCP:1H2* DCP H2'2 DCP:2H2* DCP H3' DCP: H3* DCP H4' DCP: H4* DCP HO3' DCP:*HO3 DCP H5'1 DCP:1H5* DCP H5'2 DCP:2H5* DCP HOA2 DCP:2HOA DCP HOB2 DCP:2HOB DCP HOG2 DCP:2HOG DCP HOG3 DCP:3HOG DCP H2A1 DCS:1H2A DCS H2A2 DCS:2H2A DCS H2A3 DCS:3H2A DCS H4A1 DCS:1H4A DCS H4A2 DCS:2H4A DCS H5A1 DCS:1H5A DCS H5A2 DCS:2H5A DCS HOP2 DCS:2HOP DCS HOP3 DCS:3HOP DCS HB1 DCS:1HB DCS HB2 DCS:2HB DCS HN41 DCT:1HN4 DCT HN42 DCT:2HN4 DCT H1' DCT: H1* DCT H2' DCT:1H2* DCT H2'' DCT:2H2* DCT H3'1 DCT:1H3* DCT H3'2 DCT:2H3* DCT H4' DCT: H4* DCT H5' DCT:1H5* DCT H5'' DCT:2H5* DCT HOA2 DCT:2HOA DCT HOB2 DCT:2HOB DCT HOG2 DCT:2HOG DCT HOG3 DCT:3HOG DCT H21A DCU:1H2 DCU H22 DCU:2H2 DCU H31A DCU:1H3 DCU H32A DCU:2H3 DCU H41 DCU:1H4 DCU H42 DCU:2H4 DCU H51 DCU:1H5 DCU H52 DCU:2H5 DCU H61 DCU:1H6 DCU H62 DCU:2H6 DCU H71 DCU:1H7 DCU H72 DCU:2H7 DCU H81 DCU:1H8 DCU H82 DCU:2H8 DCU H91 DCU:1H9 DCU H92 DCU:2H9 DCU H101 DCU:1H10 DCU H102 DCU:2H10 DCU H111 DCU:1H11 DCU H112 DCU:2H11 DCU H131 DCU:1H13 DCU H132 DCU:2H13 DCU H133 DCU:3H13 DCU H141 DCU:1H14 DCU H142 DCU:2H14 DCU H143 DCU:3H14 DCU H151 DCU:1H15 DCU H152 DCU:2H15 DCU H153 DCU:3H15 DCU H361 DCU:1H36 DCU H362 DCU:2H36 DCU H371 DCU:1H37 DCU H372 DCU:2H37 DCU H31 DCX:1H3 DCX H32 DCX:2H3 DCX H33 DCX:3H3 DCX H61 DCX:1H6 DCX H62 DCX:2H6 DCX H141 DCX:1H14 DCX H142 DCX:2H14 DCX H143 DCX:3H14 DCX H131 DCX:1H13 DCX H132 DCX:2H13 DCX H121 DCX:1H12 DCX H122 DCX:2H12 DCX H111 DCX:1H11 DCX H112 DCX:2H11 DCX H101 DCX:1H10 DCX H102 DCX:2H10 DCX H91 DCX:1H9 DCX H92 DCX:2H9 DCX H81 DCX:1H8 DCX H82 DCX:2H8 DCX H71 DCX:1H7 DCX H72 DCX:2H7 DCX H41 DCX:1H4 DCX H42 DCX:2H4 DCX H21 DCX:1H2 DCX H22 DCX:2H2 DCX H23 DCX:3H2 DCX H2 DCY: HN2 DCY HB2 DCY:1HB DCY HB3 DCY:2HB DCY HN41 DCZ:1HN4 DCZ HN42 DCZ:2HN4 DCZ H1' DCZ: H1* DCZ H2'1 DCZ:1H2* DCZ H2'2 DCZ:2H2* DCZ H3' DCZ: H3* DCZ H4' DCZ: H4* DCZ HO3' DCZ:*HO3 DCZ H5'1 DCZ:1H5* DCZ H5'2 DCZ:2H5* DCZ HO51 DCZ:1HO5 DCZ H21 DDA:1H2 DDA H22 DDA:2H2 DDA H61 DDA:1H6 DDA H62 DDA:2H6 DDA H63 DDA:3H6 DDA H21 DDB:1H2 DDB H22 DDB:2H2 DDB H3M1 DDB:1H3M DDB H3M2 DDB:2H3M DDB H3M3 DDB:3H3M DDB H61 DDB:1H6 DDB H62 DDB:2H6 DDB H63 DDB:3H6 DDB H81 DDC:1H8 DDC H82 DDC:2H8 DDC HB21 DDD:1HB2 DDD HB22 DDD:2HB2 DDD HG21 DDD:1HG2 DDD HG22 DDD:2HG2 DDD HA31 DDD:1HA3 DDD HA32 DDD:2HA3 DDD HD21 DDD:1HD2 DDD HD22 DDD:2HD2 DDD HB11 DDD:1HB1 DDD HB12 DDD:2HB1 DDD HA11 DDD:1HA1 DDD HA12 DDD:2HA1 DDD H DDE:1HN DDE H2 DDE:2HN DDE HB2 DDE:1HB DDE HB3 DDE:2HB DDE HAD1 DDE:1HAD DDE HAD2 DDE:2HAD DDE HAB1 DDE:1HAB DDE HAB2 DDE:2HAB DDE HAB3 DDE:3HAB DDE HAC1 DDE:1HAC DDE HAC2 DDE:2HAC DDE HAC3 DDE:3HAC DDE HAA1 DDE:1HAA DDE HAA2 DDE:2HAA DDE HAA3 DDE:3HAA DDE HAU3 DDE:1HAU DDE HAU2 DDE:2HAU DDE HAT2 DDE:1HAT DDE HAT3 DDE:2HAT DDE HN21 DDF:1HN2 DDF HN22 DDF:2HN2 DDF H51 DDF:1H5 DDF H52 DDF:2H5 DDF H71 DDF:1H7 DDF H72 DDF:2H7 DDF H91 DDF:1H9 DDF H92 DDF:2H9 DDF H101 DDF:1H10 DDF H102 DDF:2H10 DDF HB1 DDF:1HB DDF HB2 DDF:2HB DDF HG1 DDF:1HG DDF HG2 DDF:2HG DDF HOE2 DDF:2HOE DDF HOP3 DDG:3HOP DDG HOP2 DDG:2HOP DDG H5' DDG:1H5* DDG H5'' DDG:2H5* DDG H4' DDG: H4* DDG H3'1 DDG:1H3* DDG H3'2 DDG:2H3* DDG H2' DDG:1H2* DDG H2'' DDG:2H2* DDG H1' DDG: H1* DDG H21 DDG:1H2 DDG H22 DDG:2H2 DDG HAA1 DDH:1HAA DDH HAA2 DDH:2HAA DDH HMA1 DDH:1HMA DDH HMA2 DDH:2HMA DDH HMA3 DDH:3HMA DDH HBA1 DDH:1HBA DDH HBA2 DDH:2HBA DDH HO2A DDH:AHO2 DDH HMB1 DDH:1HMB DDH HMB2 DDH:2HMB DDH HMB3 DDH:3HMB DDH HOCB DDH:BHOC DDH HBB1 DDH:1HBB DDH HBB2 DDH:2HBB DDH HMC1 DDH:1HMC DDH HMC2 DDH:2HMC DDH HMC3 DDH:3HMC DDH HBC1 DDH:1HBC DDH HBC2 DDH:2HBC DDH HBC3 DDH:3HBC DDH HMD1 DDH:1HMD DDH HMD2 DDH:2HMD DDH HMD3 DDH:3HMD DDH HAD1 DDH:1HAD DDH HAD2 DDH:2HAD DDH HBD1 DDH:1HBD DDH HBD2 DDH:2HBD DDH HO1D DDH:DHO1 DDH HN1 DDI:1HN DDI HN2 DDI:2HN DDI H21 DDL:1H2 DDL H22 DDL:2H2 DDL H61 DDL:1H6 DDL H62 DDL:2H6 DDL H63 DDL:3H6 DDL HC11 DDM:1HC1 DDM HC12 DDM:2HC1 DDM HC61 DDM:1HC6 DDM HC62 DDM:2HC6 DDM H5' DDN:1H5* DDN H5'' DDN:2H5* DDN H4' DDN: H4* DDN H3' DDN: H3* DDN H2' DDN:1H2* DDN H2'' DDN:2H2* DDN H1' DDN: H1* DDN HN1 DDO:1HN DDO HN2 DDO:2HN DDO HA1 DDO:1HA DDO HB1 DDO:1HB DDO HB2 DDO:2HB DDO HG1 DDO:1HG DDO HG2 DDO:2HG DDO HD1 DDO:1HD DDO HD2 DDO:2HD DDO HE1 DDO:1HE DDO HE2 DDO:2HE DDO H71 DDP:1H7 DDP H72 DDP:2H7 DDP H21 DDP:1H2 DDP H22 DDP:2H2 DDP H61 DDP:1H6 DDP H91 DDP:1H9 DDP HM11 DDQ:1HM1 DDQ HM12 DDQ:2HM1 DDQ HM13 DDQ:3HM1 DDQ HM21 DDQ:1HM2 DDQ HM22 DDQ:2HM2 DDQ HM23 DDQ:3HM2 DDQ H11 DDQ:1H1 DDQ H12 DDQ:2H1 DDQ H21 DDQ:1H2 DDQ H22 DDQ:2H2 DDQ H31 DDQ:1H3 DDQ H32 DDQ:2H3 DDQ H41 DDQ:1H4 DDQ H42 DDQ:2H4 DDQ H51 DDQ:1H5 DDQ H52 DDQ:2H5 DDQ H61 DDQ:1H6 DDQ H62 DDQ:2H6 DDQ H71 DDQ:1H7 DDQ H72 DDQ:2H7 DDQ H81 DDQ:1H8 DDQ H82 DDQ:2H8 DDQ H91 DDQ:1H9 DDQ H92 DDQ:2H9 DDQ H101 DDQ:1H10 DDQ H102 DDQ:2H10 DDQ H103 DDQ:3H10 DDQ HC91 DDT:1HC9 DDT HC92 DDT:2HC9 DDT HC93 DDT:3HC9 DDT H101 DDT:1H10 DDT H102 DDT:2H10 DDT H103 DDT:3H10 DDT H131 DDT:1H13 DDT H132 DDT:2H13 DDT H2'1 DDT:1H2* DDT H3'1 DDT:1H3* DDT H4'1 DDT:1H4* DDT H6'1 DDT:1H6* DDT H7'1 DDT:1H7* DDT H8'1 DDT:1H8* DDT H9'1 DDT:1H9* DDT H9'2 DDT:2H9* DDT H9'3 DDT:3H9* DDT HB1 DDT:1H** DDT HB2 DDT:2H** DDT HB3 DDT:3H** DDT H1' DDU: H1* DDU H2'1 DDU:1H2* DDU H2'2 DDU:2H2* DDU H3' DDU: H3* DDU H4' DDU: H4* DDU HO3' DDU:*HO3 DDU H5'1 DDU:1H5* DDU H5'2 DDU:2H5* DDU H5'3 DDU:3H5* DDU HOP2 DDX:2HOP DDX HOP3 DDX:3HOP DDX H5' DDX:1H5* DDX H5'' DDX:2H5* DDX H4' DDX: H4* DDX H1' DDX: H1* DDX H3' DDX: H3* DDX H2' DDX: H2* DDX HO1' DDX:HO1* DDX H5'1 DDY:1H5* DDY H5'2 DDY:2H5* DDY H4' DDY: H4* DDY H3'1 DDY:1H3* DDY H3'2 DDY:2H3* DDY H2'1 DDY:1H2* DDY H2'2 DDY:2H2* DDY H1' DDY: H1* DDY HN41 DDY:1HN4 DDY HN42 DDY:2HN4 DDY HAA1 DE1:1HAA DE1 HAA2 DE1:2HAA DE1 HAA3 DE1:3HAA DE1 HAC1 DE1:1HAC DE1 HAC2 DE1:2HAC DE1 HAE1 DE1:1HAE DE1 HAE2 DE1:2HAE DE1 HAG1 DE1:1HAG DE1 HAG2 DE1:2HAG DE1 HAI1 DE1:1HAI DE1 HAI2 DE1:2HAI DE1 HAK1 DE1:1HAK DE1 HAK2 DE1:2HAK DE1 HAJ1 DE1:1HAJ DE1 HAJ2 DE1:2HAJ DE1 HAH1 DE1:1HAH DE1 HAH2 DE1:2HAH DE1 HAF1 DE1:1HAF DE1 HAF2 DE1:2HAF DE1 HAD1 DE1:1HAD DE1 HAD2 DE1:2HAD DE1 HN61 DEA:1HN6 DEA HN62 DEA:2HN6 DEA H1'1 DEA:1H1* DEA H1'2 DEA:2H1* DEA H2' DEA: H2* DEA HO'2 DEA:2HO* DEA H3' DEA: H3* DEA HO'3 DEA:3HO* DEA H71 DEB:1H7 DEB H72 DEB:2H7 DEB H141 DEB:1H14 DEB H142 DEB:2H14 DEB H151 DEB:1H15 DEB H152 DEB:2H15 DEB H153 DEB:3H15 DEB H181 DEB:1H18 DEB H182 DEB:2H18 DEB H183 DEB:3H18 DEB H201 DEB:1H20 DEB H202 DEB:2H20 DEB H203 DEB:3H20 DEB H221 DEB:1H22 DEB H222 DEB:2H22 DEB H223 DEB:3H22 DEB H231 DEB:1H23 DEB H232 DEB:2H23 DEB H233 DEB:3H23 DEB H251 DEB:1H25 DEB H252 DEB:2H25 DEB H253 DEB:3H25 DEB H271 DEB:1H27 DEB H272 DEB:2H27 DEB H273 DEB:3H27 DEB H21 DEC:1H2 DEC H22 DEC:2H2 DEC H31 DEC:1H3 DEC H32 DEC:2H3 DEC H41 DEC:1H4 DEC H42 DEC:2H4 DEC H51 DEC:1H5 DEC H52 DEC:2H5 DEC H61 DEC:1H6 DEC H62 DEC:2H6 DEC H71 DEC:1H7 DEC H72 DEC:2H7 DEC H81 DEC:1H8 DEC H82 DEC:2H8 DEC H91 DEC:1H9 DEC H92 DEC:2H9 DEC H101 DED:1H10 DED H102 DED:2H10 DED H111 DED:1H11 DED H112 DED:2H11 DED H131 DED:1H13 DED H132 DED:2H13 DED H133 DED:3H13 DED H141 DED:1H14 DED H142 DED:2H14 DED H143 DED:3H14 DED H111 DEE:1H11 DEE H112 DEE:2H11 DEE H121 DEE:1H12 DEE H122 DEE:2H12 DEE H123 DEE:3H12 DEE H91 DEE:1H9 DEE H92 DEE:2H9 DEE H93 DEE:3H9 DEE H101 DEE:1H10 DEE H102 DEE:2H10 DEE H103 DEE:3H10 DEE H121 DEF:1H12 DEF H122 DEF:2H12 DEF H131 DEF:1H13 DEF H132 DEF:2H13 DEF H12N DEF:NH12 DEF H151 DEF:1H15 DEF H152 DEF:2H15 DEF H161 DEF:1H16 DEF H162 DEF:2H16 DEF H181 DEF:1H18 DEF H182 DEF:2H18 DEF H171 DEF:1H17 DEF H172 DEF:2H17 DEF H191 DEF:1H19 DEF H192 DEF:2H19 DEF H221 DEF:1H22 DEF H222 DEF:2H22 DEF H231 DEF:1H23 DEF H232 DEF:2H23 DEF H22N DEF:NH22 DEF H251 DEF:1H25 DEF H252 DEF:2H25 DEF H261 DEF:1H26 DEF H262 DEF:2H26 DEF H271 DEF:1H27 DEF H272 DEF:2H27 DEF H281 DEF:1H28 DEF H282 DEF:2H28 DEF H291 DEF:1H29 DEF H292 DEF:2H29 DEF H321 DEF:1H32 DEF H322 DEF:2H32 DEF H391 DEF:1H39 DEF H392 DEF:2H39 DEF H331 DEF:1H33 DEF H332 DEF:2H33 DEF H333 DEF:3H33 DEF H401 DEF:1H40 DEF H402 DEF:2H40 DEF H411 DEF:1H41 DEF H412 DEF:2H41 DEF H421 DEF:1H42 DEF H422 DEF:2H42 DEF H431 DEF:1H43 DEF H432 DEF:2H43 DEF H44N DEF:NH44 DEF H491 DEF:1H49 DEF H492 DEF:2H49 DEF H493 DEF:3H49 DEF H3'1 DEG:1H3' DEG H3'2 DEG:2H3' DEG H4'1 DEG:1H4' DEG H4'2 DEG:2H4' DEG H4'3 DEG:3H4' DEG H1'1 DEG:1H1' DEG H1'2 DEG:2H1' DEG H2'1 DEG:1H2' DEG H2'2 DEG:2H2' DEG H6C1 DEG:1H6C DEG H6C2 DEG:2H6C DEG H181 DEK:1H18 DEK H182 DEK:2H18 DEK HZ DEK: HNZ DEK HE3 DEK:1HE DEK HE2 DEK:2HE DEK HD3 DEK:1HD DEK HD2 DEK:2HD DEK HG3 DEK:1HG DEK HG2 DEK:2HG DEK HB3 DEK:1HB DEK HB2 DEK:2HB DEK H DEK:1HN DEK H2 DEK:2HN DEK HC41 DEL:1HC4 DEL HC42 DEL:2HC4 DEL H61 DEL:1H6 DEL H62 DEL:2H6 DEL H6'1 DEL:1H6' DEL H6'2 DEL:2H6' DEL HO1' DEL:'HO1 DEL HO2' DEL:'HO2 DEL HO3' DEL:'HO3 DEL HO6' DEL:'HO6 DEL HCM1 DEM:1HCM DEM HCM2 DEM:2HCM DEM HC11 DEM:1HC1 DEM HC12 DEM:2HC1 DEM HC21 DEM:1HC2 DEM HC22 DEM:2HC2 DEM HC31 DEM:1HC3 DEM HC32 DEM:2HC3 DEM HC41 DEM:1HC4 DEM HC42 DEM:2HC4 DEM HC51 DEM:1HC5 DEM HC52 DEM:2HC5 DEM HC61 DEM:1HC6 DEM HC62 DEM:2HC6 DEM HC71 DEM:1HC7 DEM HC72 DEM:2HC7 DEM HC81 DEM:1HC8 DEM HC82 DEM:2HC8 DEM HC91 DEM:1HC9 DEM HC92 DEM:2HC9 DEM H101 DEM:1H10 DEM H102 DEM:2H10 DEM H103 DEM:3H10 DEM H11 DEN:1H1 DEN H12 DEN:2H1 DEN H91 DEO:1H9 DEO H92 DEO:2H9 DEO H101 DEO:1H10 DEO H102 DEO:2H10 DEO H121 DEO:1H12 DEO H122 DEO:2H12 DEO H261 DEO:1H26 DEO H262 DEO:2H26 DEO H271 DEO:1H27 DEO H272 DEO:2H27 DEO H273 DEO:3H27 DEO H11 DEP:1H1 DEP H12 DEP:2H1 DEP H21 DEP:1H2 DEP H22 DEP:2H2 DEP H23 DEP:3H2 DEP H31 DEP:1H3 DEP H32 DEP:2H3 DEP H41 DEP:1H4 DEP H42 DEP:2H4 DEP H43 DEP:3H4 DEP H11 DEQ:1H1 DEQ H21 DEQ:1H2 DEQ H31 DEQ:1H3 DEQ H41 DEQ:1H4 DEQ H81 DEQ:1H8 DEQ H131 DEQ:1H13 DEQ H151 DEQ:1H15 DEQ H161 DEQ:1H16 DEQ H171 DEQ:1H17 DEQ H181 DEQ:1H18 DEQ H191 DEQ:1H19 DEQ H192 DEQ:2H19 DEQ H201 DEQ:1H20 DEQ H202 DEQ:2H20 DEQ H211 DEQ:1H21 DEQ H212 DEQ:2H21 DEQ H221 DEQ:1H22 DEQ H222 DEQ:2H22 DEQ H231 DEQ:1H23 DEQ H232 DEQ:2H23 DEQ H241 DEQ:1H24 DEQ H242 DEQ:2H24 DEQ H251 DEQ:1H25 DEQ H252 DEQ:2H25 DEQ H261 DEQ:1H26 DEQ H262 DEQ:2H26 DEQ H271 DEQ:1H27 DEQ H272 DEQ:2H27 DEQ H281 DEQ:1H28 DEQ H282 DEQ:2H28 DEQ H301 DEQ:1H30 DEQ H302 DEQ:2H30 DEQ H303 DEQ:3H30 DEQ H291 DEQ:1H29 DEQ H292 DEQ:2H29 DEQ H293 DEQ:3H29 DEQ HN41 DEQ:1HN4 DEQ HN42 DEQ:2HN4 DEQ HN31 DEQ:1HN3 DEQ HN32 DEQ:2HN3 DEQ H41 DER:1H4 DER H42 DER:2H4 DER HP91 DES:1HP9 DES HP92 DES:2HP9 DES HP93 DES:3HP9 DES HP81 DES:1HP8 DES HP82 DES:2HP8 DES HOP3 DES:3HOP DES HO3 DES:3HO DES H81 DES:1H8 DES H82 DES:2H8 DES H91 DES:1H9 DES H92 DES:2H9 DES H93 DES:3H9 DES HM11 DET:1HM1 DET HM12 DET:2HM1 DET HM13 DET:3HM1 DET HM21 DET:1HM2 DET HM22 DET:2HM2 DET HM23 DET:3HM2 DET H11 DET:1H1 DET H12 DET:2H1 DET H21 DET:1H2 DET H22 DET:2H2 DET H31 DET:1H3 DET H32 DET:2H3 DET H41 DET:1H4 DET H42 DET:2H4 DET H51 DET:1H5 DET H52 DET:2H5 DET H61 DET:1H6 DET H62 DET:2H6 DET H71 DET:1H7 DET H72 DET:2H7 DET H81 DET:1H8 DET H82 DET:2H8 DET H91 DET:1H9 DET H92 DET:2H9 DET H101 DET:1H10 DET H102 DET:2H10 DET H111 DET:1H11 DET H112 DET:2H11 DET H113 DET:3H11 DET HMB1 DEU:1HMB DEU HMB2 DEU:2HMB DEU HMB3 DEU:3HMB DEU HMC1 DEU:1HMC DEU HMC2 DEU:2HMC DEU HMC3 DEU:3HMC DEU HMA1 DEU:1HMA DEU HMA2 DEU:2HMA DEU HMA3 DEU:3HMA DEU HMD1 DEU:1HMD DEU HMD2 DEU:2HMD DEU HMD3 DEU:3HMD DEU HAA1 DEU:1HAA DEU HAA2 DEU:2HAA DEU HBA1 DEU:1HBA DEU HBA2 DEU:2HBA DEU HAD1 DEU:1HAD DEU HAD2 DEU:2HAD DEU HBD1 DEU:1HBD DEU HBD2 DEU:2HBD DEU H211 DEX:1H21 DEX H221 DEX:1H22 DEX H511 DEX:1H51 DEX H521 DEX:1H52 DEX H811 DEX:1H81 DEX H821 DEX:1H82 DEX H831 DEX:1H83 DEX H911 DEX:1H91 DEX H921 DEX:1H92 DEX H931 DEX:1H93 DEX H112 DEX:2H11 DEX H122 DEX:2H12 DEX H212 DEX:2H21 DEX H222 DEX:2H22 DEX H232 DEX:2H23 DEX H4C1 DEZ:1H4C DEZ H4C2 DEZ:2H4C DEZ H111 DF1:1H11 DF1 H112 DF1:2H11 DF1 H141 DF1:1H14 DF1 H142 DF1:2H14 DF1 H143 DF1:3H14 DF1 H261 DF2:1H26 DF2 H262 DF2:2H26 DF2 H8C1 DF2:1H8C DF2 H8C2 DF2:2H8C DF2 HC71 DFB:1HC7 DFB HC72 DFB:2HC7 DFB HOP3 DFC:3HOP DFC HOP2 DFC:2HOP DFC H5' DFC:1H5* DFC H5'' DFC:2H5* DFC H4' DFC: H4* DFC H3' DFC: H3* DFC HO3' DFC:H3T DFC H2' DFC:1H2* DFC H2'' DFC:2H2* DFC H1' DFC: H1* DFC H41 DFC:1H4 DFC H42 DFC:2H4 DFC H111 DFD:1H11 DFD H112 DFD:2H11 DFD H113 DFD:3H11 DFD H101 DFD:1H10 DFD H102 DFD:2H10 DFD H91 DFD:1H9 DFD H92 DFD:2H9 DFD H81 DFD:1H8 DFD H82 DFD:2H8 DFD H71 DFD:1H7 DFD H72 DFD:2H7 DFD H61 DFD:1H6 DFD H62 DFD:2H6 DFD H51 DFD:1H5 DFD H52 DFD:2H5 DFD H41 DFD:1H4 DFD H42 DFD:2H4 DFD H31 DFD:1H3 DFD H32 DFD:2H3 DFD H21 DFD:1H2 DFD H22 DFD:2H2 DFD HAA1 DFE:1HAA DFE HAA2 DFE:2HAA DFE HAA3 DFE:3HAA DFE HAG1 DFE:1HAG DFE HAG2 DFE:2HAG DFE HOP3 DFG:3HOP DFG HOP2 DFG:2HOP DFG H5' DFG:1H5* DFG H5'' DFG:2H5* DFG H4' DFG: H4* DFG H3' DFG: H3* DFG HO3' DFG:H3T DFG H2' DFG:1H2* DFG H2'' DFG:2H2* DFG H1' DFG: H1* DFG H21 DFG:1H2 DFG H22 DFG:2H2 DFG H DFI:1HN DFI H2 DFI:2HN DFI HB2 DFI:1HB DFI HB3 DFI:2HB DFI HD11 DFI:1HD1 DFI HD12 DFI:2HD1 DFI HD13 DFI:3HD1 DFI HD21 DFI:1HD2 DFI HD22 DFI:2HD2 DFI HD23 DFI:3HD2 DFI H201 DFJ:1H20 DFJ H202 DFJ:2H20 DFJ H351 DFJ:1H35 DFJ H352 DFJ:2H35 DFJ H401 DFJ:1H40 DFJ H402 DFJ:2H40 DFJ H7C1 DFJ:1H7C DFJ H7C2 DFJ:2H7C DFJ HN11 DFK:1HN1 DFK HN12 DFK:2HN1 DFK HB11 DFK:1HB1 DFK HB12 DFK:2HB1 DFK HB21 DFK:1HB2 DFK HB22 DFK:2HB2 DFK HG21 DFK:1HG2 DFK HG22 DFK:2HG2 DFK HD31 DFK:1HD3 DFK HD32 DFK:2HD3 DFK HB31 DFK:1HB3 DFK HB32 DFK:2HB3 DFK HG31 DFK:1HG3 DFK HG32 DFK:2HG3 DFK HD41 DFK:1HD4 DFK HD42 DFK:2HD4 DFK HH21 DFK:1HH2 DFK HH22 DFK:2HH2 DFK HH23 DFK:3HH2 DFK H81 DFL:1H8 DFL H82 DFL:2H8 DFL H211 DFM:1H21 DFM H212 DFM:2H21 DFM H271 DFM:1H27 DFM H272 DFM:2H27 DFM H4C1 DFM:1H4C DFM H4C2 DFM:2H4C DFM H711 DFM:1H71 DFM H712 DFM:2H71 DFM H713 DFM:3H71 DFM H281 DFN:1H28 DFN H282 DFN:2H28 DFN H283 DFN:3H28 DFN H261 DFN:1H26 DFN H262 DFN:2H26 DFN H401 DFN:1H40 DFN H402 DFN:2H40 DFN H DFO:1HN DFO H2 DFO:2HN DFO HB2 DFO:1HB DFO HB3 DFO:2HB DFO HD11 DFO:1HD1 DFO HD12 DFO:2HD1 DFO HD13 DFO:3HD1 DFO HD21 DFO:1HD2 DFO HD22 DFO:2HD2 DFO HD23 DFO:3HD2 DFO H21 DFP:1H2 DFP H22 DFP:2H2 DFP H23 DFP:3H2 DFP H31 DFP:1H3 DFP H32 DFP:2H3 DFP H33 DFP:3H3 DFP H2'1 DFP:1H2' DFP H2'2 DFP:2H2' DFP H2'3 DFP:3H2' DFP H3'1 DFP:1H3' DFP H3'2 DFP:2H3' DFP H3'3 DFP:3H3' DFP H51 DFR:1H5 DFR H52 DFR:2H5 DFR H61 DFR:1H6 DFR H62 DFR:2H6 DFR H71 DFR:1H7 DFR H72 DFR:2H7 DFR H73 DFR:3H7 DFR HOP2 DFT:2HOP DFT HOP3 DFT:3HOP DFT H5' DFT:1H5* DFT H5'' DFT:2H5* DFT H4' DFT: H4* DFT H3' DFT: H3* DFT HO3' DFT:*HO3 DFT H2' DFT:1H2* DFT H2'' DFT:2H2* DFT H1' DFT: H1* DFT H71 DFT:1H5M DFT H72 DFT:2H5M DFT H73 DFT:3H5M DFT H11 DFU:1H1 DFU H12 DFU:2H1 DFU H61 DFU:1H6 DFU H62 DFU:2H6 DFU H63 DFU:3H6 DFU H81 DFV:1H8 DFV H82 DFV:2H8 DFV H8C1 DFW:1H8C DFW H8C2 DFW:2H8C DFW H11 DFX:1H1 DFX H12 DFX:2H1 DFX H51 DFX:1H5 DFX H52 DFX:2H5 DFX H231 DFY:1H23 DFY H232 DFY:2H23 DFY H8C1 DFY:1H8C DFY H8C2 DFY:2H8C DFY HAA1 DFY:1HAA DFY HAA2 DFY:2HAA DFY HAA3 DFY:3HAA DFY H231 DFZ:1H23 DFZ H232 DFZ:2H23 DFZ H8C1 DFZ:1H8C DFZ H8C2 DFZ:2H8C DFZ HOP3 DG:3HOP DG HOP2 DG:2HOP DG H5' DG:1H5* DG H5'' DG:2H5* DG H4' DG: H4* DG H3' DG: H3* DG HO3' DG:H3T DG H2' DG:1H2* DG H2'' DG:2H2* DG H1' DG: H1* DG H21 DG:1H2 DG H22 DG:2H2 DG HAA1 DG1:1HAA DG1 HAA2 DG1:2HAA DG1 H1' DG1: H1* DG1 H2' DG1: H2* DG1 HO2' DG1:HO2* DG1 H3' DG1: H3* DG1 HO3' DG1:HO3* DG1 H4' DG1: H4* DG1 H5'1 DG1:1H5* DG1 H5'2 DG1:2H5* DG1 HAY1 DG1:1HAY DG1 HAY2 DG1:2HAY DG1 HN61 DG1:1HN6 DG1 HN62 DG1:2HN6 DG1 H41 DG2:1H4 DG2 H42 DG2:2H4 DG2 HOG2 DG3:2HOG DG3 HOG3 DG3:3HOG DG3 HOB2 DG3:2HOB DG3 HOA2 DG3:2HOA DG3 H5'1 DG3:1H5* DG3 H5'2 DG3:2H5* DG3 H4' DG3: H4* DG3 H3'1 DG3:1H3* DG3 H3'2 DG3:2H3* DG3 H2'1 DG3:1H2* DG3 H2'2 DG3:2H2* DG3 H1' DG3: H1* DG3 HN21 DG3:1HN2 DG3 HN22 DG3:2HN2 DG3 HC11 DG6:1HC1 DG6 HC12 DG6:2HC1 DG6 HC21 DG6:1HC2 DG6 HC22 DG6:2HC2 DG6 HC61 DG6:1HC6 DG6 HC62 DG6:2HC6 DG6 HA21 DGA:1HA2 DGA HA22 DGA:2HA2 DGA HA31 DGA:1HA3 DGA HA32 DGA:2HA3 DGA HA41 DGA:1HA4 DGA HA42 DGA:2HA4 DGA HA51 DGA:1HA5 DGA HA52 DGA:2HA5 DGA HA61 DGA:1HA6 DGA HA62 DGA:2HA6 DGA HA71 DGA:1HA7 DGA HA72 DGA:2HA7 DGA HA81 DGA:1HA8 DGA HA82 DGA:2HA8 DGA HA91 DGA:1HA9 DGA HA92 DGA:2HA9 DGA HAT1 DGA:1HAT DGA HAT2 DGA:2HAT DGA HAE1 DGA:1HAE DGA HAE2 DGA:2HAE DGA HAW1 DGA:1HAW DGA HAW2 DGA:2HAW DGA HAH1 DGA:1HAH DGA HAH2 DGA:2HAH DGA HAF1 DGA:1HAF DGA HAF2 DGA:2HAF DGA HAN1 DGA:1HAN DGA HAN2 DGA:2HAN DGA HAS1 DGA:1HAS DGA HAS2 DGA:2HAS DGA HAV1 DGA:1HAV DGA HAV2 DGA:2HAV DGA HAG1 DGA:1HAG DGA HAG2 DGA:2HAG DGA HAG3 DGA:3HAG DGA HB21 DGA:1HB2 DGA HB22 DGA:2HB2 DGA HB31 DGA:1HB3 DGA HB32 DGA:2HB3 DGA HB41 DGA:1HB4 DGA HB42 DGA:2HB4 DGA HB51 DGA:1HB5 DGA HB52 DGA:2HB5 DGA HB61 DGA:1HB6 DGA HB62 DGA:2HB6 DGA HB71 DGA:1HB7 DGA HB72 DGA:2HB7 DGA HB81 DGA:1HB8 DGA HB82 DGA:2HB8 DGA HB91 DGA:1HB9 DGA HB92 DGA:2HB9 DGA HBT1 DGA:1HBT DGA HBT2 DGA:2HBT DGA HBE1 DGA:1HBE DGA HBE2 DGA:2HBE DGA HBW1 DGA:1HBW DGA HBW2 DGA:2HBW DGA HBH1 DGA:1HBH DGA HBH2 DGA:2HBH DGA HBF1 DGA:1HBF DGA HBF2 DGA:2HBF DGA HBN1 DGA:1HBN DGA HBN2 DGA:2HBN DGA HBS1 DGA:1HBS DGA HBS2 DGA:2HBS DGA HBV1 DGA:1HBV DGA HBV2 DGA:2HBV DGA HBG1 DGA:1HBG DGA HBG2 DGA:2HBG DGA HBG3 DGA:3HBG DGA HG11 DGA:1HG1 DGA HG12 DGA:2HG1 DGA HG31 DGA:1HG3 DGA HG32 DGA:2HG3 DGA HAU1 DGB:1HAU DGB HAU2 DGB:2HAU DGB HAS1 DGB:1HAS DGB HAS2 DGB:2HAS DGB HAT1 DGB:1HAT DGB HAT2 DGB:2HAT DGB HAR1 DGB:1HAR DGB HAR2 DGB:2HAR DGB HAQ1 DGB:1HAQ DGB HAQ2 DGB:2HAQ DGB HAO1 DGB:1HAO DGB HAO2 DGB:2HAO DGB HAN1 DGB:1HAN DGB HAN2 DGB:2HAN DGB HAP1 DGB:1HAP DGB HAP2 DGB:2HAP DGB HAC1 DGB:1HAC DGB HAC2 DGB:2HAC DGB HAD1 DGB:1HAD DGB HAD2 DGB:2HAD DGB HA21 DGD:1HA2 DGD HA22 DGD:2HA2 DGD HA31 DGD:1HA3 DGD HA32 DGD:2HA3 DGD HA41 DGD:1HA4 DGD HA42 DGD:2HA4 DGD HA51 DGD:1HA5 DGD HA52 DGD:2HA5 DGD HA61 DGD:1HA6 DGD HA62 DGD:2HA6 DGD HA71 DGD:1HA7 DGD HA72 DGD:2HA7 DGD HA81 DGD:1HA8 DGD HA82 DGD:2HA8 DGD HA91 DGD:1HA9 DGD HA92 DGD:2HA9 DGD HAT1 DGD:1HAT DGD HAT2 DGD:2HAT DGD HAE1 DGD:1HAE DGD HAE2 DGD:2HAE DGD HAW1 DGD:1HAW DGD HAW2 DGD:2HAW DGD HAH1 DGD:1HAH DGD HAH2 DGD:2HAH DGD HAF1 DGD:1HAF DGD HAF2 DGD:2HAF DGD HAN1 DGD:1HAN DGD HAN2 DGD:2HAN DGD HAS1 DGD:1HAS DGD HAS2 DGD:2HAS DGD HAV1 DGD:1HAV DGD HAV2 DGD:2HAV DGD HAG1 DGD:1HAG DGD HAG2 DGD:2HAG DGD HAG3 DGD:3HAG DGD HB21 DGD:1HB2 DGD HB22 DGD:2HB2 DGD HB31 DGD:1HB3 DGD HB32 DGD:2HB3 DGD HB41 DGD:1HB4 DGD HB42 DGD:2HB4 DGD HB51 DGD:1HB5 DGD HB52 DGD:2HB5 DGD HB61 DGD:1HB6 DGD HB62 DGD:2HB6 DGD HB71 DGD:1HB7 DGD HB72 DGD:2HB7 DGD HB81 DGD:1HB8 DGD HB82 DGD:2HB8 DGD HB91 DGD:1HB9 DGD HB92 DGD:2HB9 DGD HBT1 DGD:1HBT DGD HBT2 DGD:2HBT DGD HBE1 DGD:1HBE DGD HBE2 DGD:2HBE DGD HBW1 DGD:1HBW DGD HBW2 DGD:2HBW DGD HBH1 DGD:1HBH DGD HBH2 DGD:2HBH DGD HBF1 DGD:1HBF DGD HBF2 DGD:2HBF DGD HBN1 DGD:1HBN DGD HBN2 DGD:2HBN DGD HBS1 DGD:1HBS DGD HBS2 DGD:2HBS DGD HBV1 DGD:1HBV DGD HBV2 DGD:2HBV DGD HBG1 DGD:1HBG DGD HBG2 DGD:2HBG DGD HBG3 DGD:3HBG DGD HG11 DGD:1HG1 DGD HG12 DGD:2HG1 DGD HG31 DGD:1HG3 DGD HG32 DGD:2HG3 DGD HO2D DGD:DHO2 DGD HO3D DGD:DHO3 DGD HO4D DGD:DHO4 DGD HD61 DGD:1HD6 DGD HD62 DGD:2HD6 DGD HO2E DGD:EHO2 DGD HO3E DGD:EHO3 DGD HO4E DGD:EHO4 DGD HE61 DGD:1HE6 DGD HE62 DGD:2HE6 DGD HO5E DGD:EHO5 DGD H161 DGG:1H16 DGG H162 DGG:2H16 DGG H163 DGG:3H16 DGG H151 DGG:1H15 DGG H152 DGG:2H15 DGG H141 DGG:1H14 DGG H142 DGG:2H14 DGG H131 DGG:1H13 DGG H132 DGG:2H13 DGG H121 DGG:1H12 DGG H122 DGG:2H12 DGG H111 DGG:1H11 DGG H112 DGG:2H11 DGG H101 DGG:1H10 DGG H102 DGG:2H10 DGG HC91 DGG:1HC9 DGG HC92 DGG:2HC9 DGG HC81 DGG:1HC8 DGG HC82 DGG:2HC8 DGG HC71 DGG:1HC7 DGG HC72 DGG:2HC7 DGG HC61 DGG:1HC6 DGG HC62 DGG:2HC6 DGG HC51 DGG:1HC5 DGG HC52 DGG:2HC5 DGG HC41 DGG:1HC4 DGG HC42 DGG:2HC4 DGG HC31 DGG:1HC3 DGG HC32 DGG:2HC3 DGG HC21 DGG:1HC2 DGG HC22 DGG:2HC2 DGG H171 DGG:1H17 DGG H172 DGG:2H17 DGG H191 DGG:1H19 DGG H221 DGG:1H22 DGG H222 DGG:2H22 DGG H231 DGG:1H23 DGG H232 DGG:2H23 DGG H241 DGG:1H24 DGG H242 DGG:2H24 DGG H251 DGG:1H25 DGG H252 DGG:2H25 DGG H261 DGG:1H26 DGG H262 DGG:2H26 DGG H271 DGG:1H27 DGG H272 DGG:2H27 DGG H281 DGG:1H28 DGG H282 DGG:2H28 DGG H291 DGG:1H29 DGG H301 DGG:1H30 DGG H391 DGG:1H39 DGG H392 DGG:2H39 DGG H311 DGG:1H31 DGG H312 DGG:2H31 DGG H321 DGG:1H32 DGG H322 DGG:2H32 DGG H331 DGG:1H33 DGG H332 DGG:2H33 DGG H341 DGG:1H34 DGG H342 DGG:2H34 DGG H351 DGG:1H35 DGG H352 DGG:2H35 DGG H361 DGG:1H36 DGG H362 DGG:2H36 DGG H363 DGG:3H36 DGG H181 DGG:1H18 DGG H182 DGG:2H18 DGG HOP1 DGG:1HOP DGG H401 DGG:1H40 DGG H402 DGG:2H40 DGG H411 DGG:1H41 DGG H421 DGG:1H42 DGG H431 DGG:1H43 DGG H432 DGG:2H43 DGG H441 DGG:1H44 DGG HN1 DGH:1HN DGH HA2 DGH:2HA DGH HOB2 DGI:2HOB DGI HOB3 DGI:3HOB DGI HOA2 DGI:2HOA DGI H5' DGI:1H5* DGI H5'' DGI:2H5* DGI H4' DGI: H4* DGI H3' DGI: H3* DGI HO3' DGI:*HO3 DGI H2' DGI:1H2* DGI H2'' DGI:2H2* DGI H1' DGI: H1* DGI HN21 DGI:1HN2 DGI HN22 DGI:2HN2 DGI H2 DGL: HN2 DGL HB2 DGL:1HB DGL HB3 DGL:2HB DGL HG2 DGL:1HG DGL HG3 DGL:2HG DGL H61 DGM:1H6 DGM H62 DGM:2H6 DGM H2 DGN: HN2 DGN HB2 DGN:1HB DGN HB3 DGN:2HB DGN HG2 DGN:1HG DGN HG3 DGN:2HG DGN HE21 DGN:1HE2 DGN HE22 DGN:2HE2 DGN HOP2 DGP:2HOP DGP HOP3 DGP:3HOP DGP H5' DGP:1H5* DGP H5'' DGP:2H5* DGP H4' DGP: H4* DGP H3' DGP: H3* DGP HO3' DGP:*HO3 DGP H2' DGP:1H2* DGP H2'' DGP:2H2* DGP H1' DGP: H1* DGP HN21 DGP:1HN2 DGP HN22 DGP:2HN2 DGP H61 DGS:1H6 DGS H62 DGS:2H6 DGS HOG2 DGT:2HOG DGT HOG3 DGT:3HOG DGT HOB2 DGT:2HOB DGT HOA2 DGT:2HOA DGT H5'1 DGT:1H5* DGT H5'2 DGT:2H5* DGT H4' DGT: H4* DGT H3' DGT: H3* DGT HO3' DGT:*HO3 DGT H2'1 DGT:1H2* DGT H2'2 DGT:2H2* DGT H1' DGT: H1* DGT HN21 DGT:1HN2 DGT HN22 DGT:2HN2 DGT H11 DGX:1H1 DGX H12A DGX:2H1 DGX H21 DGX:1H2 DGX H22A DGX:2H2 DGX H41 DGX:1H4 DGX H42 DGX:2H4 DGX H61 DGX:1H6 DGX H62 DGX:2H6 DGX H71 DGX:1H7 DGX H72 DGX:2H7 DGX H111 DGX:1H11 DGX H112 DGX:2H11 DGX HO12 DGX:2HO1 DGX HO14 DGX:4HO1 DGX H151 DGX:1H15 DGX H152 DGX:2H15 DGX H161 DGX:1H16 DGX H162 DGX:2H16 DGX H181 DGX:1H18 DGX H182 DGX:2H18 DGX H183 DGX:3H18 DGX H191 DGX:1H19 DGX H192 DGX:2H19 DGX H193 DGX:3H19 DGX H211 DGX:1H21 DGX H212 DGX:2H21 DGX H2X1 DGX:1H2X DGX H2X2 DGX:2H2X DGX HOX3 DGX:3HOX DGX H6X1 DGX:1H6X DGX H6X2 DGX:2H6X DGX H6X3 DGX:3H6X DGX H2Y1 DGX:1H2Y DGX H2Y2 DGX:2H2Y DGX HOY3 DGX:3HOY DGX H6Y1 DGX:1H6Y DGX H6Y2 DGX:2H6Y DGX H6Y3 DGX:3H6Y DGX H2Z1 DGX:1H2Z DGX H2Z2 DGX:2H2Z DGX HOZ3 DGX:3HOZ DGX HOZ4 DGX:4HOZ DGX H6Z1 DGX:1H6Z DGX H6Z2 DGX:2H6Z DGX H6Z3 DGX:3H6Z DGX H3C1 DGY:1H3C DGY H3C2 DGY:2H3C DGY H161 DH1:1H16 DH1 H162 DH1:2H16 DH1 H163 DH1:3H16 DH1 H521 DH1:1H52 DH1 H522 DH1:2H52 DH1 H11 DH1:1H1 DH1 H12 DH1:2H1 DH1 H31 DH1:1H3 DH1 H32 DH1:2H3 DH1 H71 DH1:1H7 DH1 H72 DH1:2H7 DH1 H511 DH1:1H51 DH1 H512 DH1:2H51 DH1 HN21 DH1:1HN2 DH1 HN22 DH1:2HN2 DH1 HN41 DH1:1HN4 DH1 HN42 DH1:2HN4 DH1 HN41 DH3:1HN4 DH3 HN42 DH3:2HN4 DH3 HN21 DH3:1HN2 DH3 HN22 DH3:2HN2 DH3 H511 DH3:1H51 DH3 H512 DH3:2H51 DH3 H11 DH3:1H1 DH3 H12 DH3:2H1 DH3 H31 DH3:1H3 DH3 H32 DH3:2H3 DH3 H71 DH3:1H7 DH3 H72 DH3:2H7 DH3 H5'1 DH3:1H5* DH3 H5'2 DH3:2H5* DH3 H5'3 DH3:3H5* DH3 H4'1 DH3:1H4* DH3 H4'2 DH3:2H4* DH3 H4'3 DH3:3H4* DH3 H221 DH9:1H22 DH9 H222 DH9:2H22 DH9 H223 DH9:3H22 DH9 H211 DH9:1H21 DH9 H212 DH9:2H21 DH9 H201 DH9:1H20 DH9 H202 DH9:2H20 DH9 H191 DH9:1H19 DH9 H192 DH9:2H19 DH9 H181 DH9:1H18 DH9 H182 DH9:2H18 DH9 H171 DH9:1H17 DH9 H172 DH9:2H17 DH9 H2' DH9: H2* DH9 HO2' DH9:HO2* DH9 H3' DH9: H3* DH9 HO3' DH9:HO3* DH9 H4'1 DH9:1H4* DH9 H4'2 DH9:2H4* DH9 H5' DH9: H5* DH9 H261 DH9:1H26 DH9 H262 DH9:2H26 DH9 H281 DH9:1H28 DH9 H282 DH9:2H28 DH9 H283 DH9:3H28 DH9 H291 DH9:1H29 DH9 H292 DH9:2H29 DH9 H293 DH9:3H29 DH9 HN1' DH9:HN1* DH9 H6'1 DH9:1H6* DH9 H6'2 DH9:2H6* DH9 H7'1 DH9:1H7* DH9 H7'2 DH9:2H7* DH9 H8'1 DH9:1H8* DH9 H8'2 DH9:2H8* DH9 H9'1 DH9:1H9* DH9 H9'2 DH9:2H9* DH9 H101 DH9:1H10 DH9 H102 DH9:2H10 DH9 H111 DH9:1H11 DH9 H112 DH9:2H11 DH9 H121 DH9:1H12 DH9 H122 DH9:2H12 DH9 H131 DH9:1H13 DH9 H132 DH9:2H13 DH9 H141 DH9:1H14 DH9 H142 DH9:2H14 DH9 H151 DH9:1H15 DH9 H152 DH9:2H15 DH9 H161 DH9:1H16 DH9 H162 DH9:2H16 DH9 H163 DH9:3H16 DH9 H DHA:1HN DHA H2 DHA:2HN DHA HB1 DHA:2HB DHA HB2 DHA:3HB DHA H31 DHD:1H3 DHD H32 DHD:2H3 DHD HMA1 DHE:1HMA DHE HMA2 DHE:2HMA DHE HMA3 DHE:3HMA DHE HAA1 DHE:1HAA DHE HAA2 DHE:2HAA DHE HBA1 DHE:1HBA DHE HBA2 DHE:2HBA DHE HGB1 DHE:1HGB DHE HGB2 DHE:2HGB DHE HGB3 DHE:3HGB DHE HAB1 DHE:1HAB DHE HAB2 DHE:2HAB DHE HGC1 DHE:1HGC DHE HGC2 DHE:2HGC DHE HGC3 DHE:3HGC DHE HAC1 DHE:1HAC DHE HAC2 DHE:2HAC DHE HMD1 DHE:1HMD DHE HMD2 DHE:2HMD DHE HMD3 DHE:3HMD DHE HAD1 DHE:1HAD DHE HAD2 DHE:2HAD DHE HBD1 DHE:1HBD DHE HBD2 DHE:2HBD DHE HN21 DHF:1HN2 DHF HN22 DHF:2HN2 DHF H71 DHF:1H7 DHF H72 DHF:2H7 DHF H91 DHF:1H9 DHF H92 DHF:2H9 DHF HB1 DHF:1HB DHF HB2 DHF:2HB DHF HG1 DHF:1HG DHF HG2 DHF:2HG DHF HOE2 DHF:2HOE DHF H21 DHG:1H2 DHG H22 DHG:2H2 DHG H31 DHG:1H3 DHG H32 DHG:2H3 DHG H41 DHG:1H4 DHG H42 DHG:2H4 DHG H51 DHG:1H5 DHG H52 DHG:2H5 DHG H61 DHG:1H6 DHG H62 DHG:2H6 DHG H71 DHG:1H7 DHG H72 DHG:2H7 DHG H81 DHG:1H8 DHG H82 DHG:2H8 DHG H91 DHG:1H9 DHG H92 DHG:2H9 DHG H101 DHG:1H10 DHG H102 DHG:2H10 DHG H111 DHG:1H11 DHG H112 DHG:2H11 DHG H121 DHG:1H12 DHG H122 DHG:2H12 DHG H123 DHG:3H12 DHG HH11 DHG:1HH1 DHG HH12 DHG:2HH1 DHG HH31 DHG:1HH3 DHG HH32 DHG:2HH3 DHG HH41 DHG:1HH4 DHG HH42 DHG:2HH4 DHG HH51 DHG:1HH5 DHG HH52 DHG:2HH5 DHG HH61 DHG:1HH6 DHG HH62 DHG:2HH6 DHG HH63 DHG:3HH6 DHG HOP2 DHG:2HOP DHG HG11 DHG:1HG1 DHG HG12 DHG:2HG1 DHG HG21 DHG:1HG2 DHG HG22 DHG:2HG2 DHG HOG2 DHG:2HOG DHG HP11 DHH:1HP1 DHH HP12 DHH:2HP1 DHH H061 DHH:1H06 DHH H062 DHH:2H06 DHH H071 DHH:1H07 DHH H072 DHH:2H07 DHH H081 DHH:1H08 DHH H082 DHH:2H08 DHH H091 DHH:1H09 DHH H092 DHH:2H09 DHH H2 DHI: HN2 DHI HB2 DHI:1HB DHI HB3 DHI:2HB DHI H61 DHJ:1H6 DHJ H62 DHJ:2H6 DHJ H41 DHJ:1H4 DHJ H42 DHJ:2H4 DHJ H6C1 DHK:1H6C DHK H6C2 DHK:2H6C DHK HN1 DHL:1HN DHL HN2 DHL:2HN DHL HA2 DHL:2HA DHL HA3 DHL:3HA DHL HB2 DHL:2HB DHL HB3 DHL:3HB DHL H72 DHM:2H7 DHM H71 DHM:1H7 DHM H61 DHM:1H6 DHM H42 DHM:2H4 DHM H41 DHM:1H4 DHM H32 DHM:2H3 DHM H31 DHM:1H3 DHM H22 DHM:2H2 DHM H21 DHM:1H2 DHM H83 DHM:3H8 DHM H82 DHM:2H8 DHM H81 DHM:1H8 DHM H93 DHM:3H9 DHM H92 DHM:2H9 DHM H91 DHM:1H9 DHM H103 DHM:3H10 DHM H102 DHM:2H10 DHM H101 DHM:1H10 DHM HN1 DHN:1HN DHN HN2 DHN:2HN DHN HB1 DHN:1HB DHN HB2 DHN:2HB DHN HG1 DHN:1HG DHN HG2 DHN:2HG DHN HD1 DHN:1HD DHN HD2 DHN:2HD DHN H11 DHO:1H1 DHO H12A DHO:2H1 DHO H21 DHO:1H2 DHO H22 DHO:2H2 DHO H41 DHO:1H4 DHO H42 DHO:2H4 DHO H61 DHO:1H6 DHO H62 DHO:2H6 DHO H111 DHO:1H11 DHO H112 DHO:2H11 DHO H151 DHO:1H15 DHO H152 DHO:2H15 DHO H161 DHO:1H16 DHO H162 DHO:2H16 DHO H181 DHO:1H18 DHO H182 DHO:2H18 DHO H183 DHO:3H18 DHO H191 DHO:1H19 DHO H192 DHO:2H19 DHO H193 DHO:3H19 DHO H211 DHO:1H21 DHO H212 DHO:2H21 DHO H213 DHO:3H21 DHO H221 DHO:1H22 DHO H222 DHO:2H22 DHO H231 DHO:1H23 DHO H232 DHO:2H23 DHO H51 DHP:1H5 DHP H52 DHP:2H5 DHP H61 DHP:1H6 DHP H62 DHP:2H6 DHP H71 DHP:1H7 DHP H72 DHP:2H7 DHP H81 DHP:1H8 DHP H82 DHP:2H8 DHP H91 DHP:1H9 DHP H92 DHP:2H9 DHP H101 DHP:1H10 DHP H102 DHP:2H10 DHP H111 DHP:1H11 DHP H112 DHP:2H11 DHP H121 DHP:1H12 DHP H122 DHP:2H12 DHP H131 DHP:1H13 DHP H132 DHP:2H13 DHP H141 DHP:1H14 DHP H142 DHP:2H14 DHP H143 DHP:3H14 DHP H31 DHQ:1H3 DHQ H32 DHQ:2H3 DHQ H41 DHQ:1H4 DHQ H42 DHQ:2H4 DHQ H91 DHQ:1H9 DHQ H92 DHQ:2H9 DHQ H93 DHQ:3H9 DHQ HN1 DHS:1HN DHS HN2 DHS:2HN DHS H61 DHS:1H6 DHS H62 DHS:2H6 DHS H11 DHT:1H1 DHT H12 DHT:2H1 DHT H21 DHT:1H2 DHT H22 DHT:2H2 DHT H41 DHT:1H4 DHT H42 DHT:2H4 DHT H61 DHT:1H6 DHT H62 DHT:2H6 DHT H71 DHT:1H7 DHT H72 DHT:2H7 DHT H111 DHT:1H11 DHT H112 DHT:2H11 DHT H121 DHT:1H12 DHT H122 DHT:2H12 DHT H151 DHT:1H15 DHT H152 DHT:2H15 DHT H161 DHT:1H16 DHT H162 DHT:2H16 DHT H181 DHT:1H18 DHT H182 DHT:2H18 DHT H183 DHT:3H18 DHT H191 DHT:1H19 DHT H192 DHT:2H19 DHT H193 DHT:3H19 DHT HOP2 DHU:2HOP DHU HOP3 DHU:3HOP DHU H5' DHU:1H5* DHU H5'' DHU:2H5* DHU H4' DHU: H4* DHU H3' DHU: H3* DHU HO3' DHU:*HO3 DHU H2' DHU: H2* DHU HO2' DHU:*HO2 DHU H1' DHU: H1* DHU H51 DHU:1H5 DHU H52 DHU:2H5 DHU H61 DHU:1H6 DHU H62 DHU:2H6 DHU H2D1 DHX:1H2D DHX H2D2 DHX:2H2D DHX H3D1 DHX:1H3D DHX H3D2 DHX:2H3D DHX H4D1 DHX:1H4D DHX H4D2 DHX:2H4D DHX H5D1 DHX:1H5D DHX H5D2 DHX:2H5D DHX H6D1 DHX:1H6D DHX H6D2 DHX:2H6D DHX H7D1 DHX:1H7D DHX H7D2 DHX:2H7D DHX H8D1 DHX:1H8D DHX H8D2 DHX:2H8D DHX H9D1 DHX:1H9D DHX H9D2 DHX:2H9D DHX H0D1 DHX:1H0D DHX H0D2 DHX:2H0D DHX H1F1 DHX:1H1F DHX H1F2 DHX:2H1F DHX H2F1 DHX:1H2F DHX H2F2 DHX:2H2F DHX H3F1 DHX:1H3F DHX H3F2 DHX:2H3F DHX H4F1 DHX:1H4F DHX H4F2 DHX:2H4F DHX H5F1 DHX:1H5F DHX H5F2 DHX:2H5F DHX H6F1 DHX:1H6F DHX H6F2 DHX:2H6F DHX H7F1 DHX:1H7F DHX H7F2 DHX:2H7F DHX H8F1 DHX:1H8F DHX H8F2 DHX:2H8F DHX H8F3 DHX:3H8F DHX HNP1 DHX:1HNP DHX HNP2 DHX:2HNP DHX HNP3 DHX:3HNP DHX H5P1 DHX:1H5P DHX H5P2 DHX:2H5P DHX H4P1 DHX:1H4P DHX H4P2 DHX:2H4P DHX H3P1 DHX:1H3P DHX H3P2 DHX:2H3P DHX H1P1 DHX:1H1P DHX H1P2 DHX:2H1P DHX H21 DHX:1H2 DHX H22 DHX:2H2 DHX H31 DHX:1H3 DHX H32 DHX:2H3 DHX H41 DHX:1H4 DHX H51 DHX:1H5 DHX H61 DHX:1H6 DHX H62 DHX:2H6 DHX H71 DHX:1H7 DHX H81 DHX:1H8 DHX H91 DHX:1H9 DHX H92 DHX:2H9 DHX H121 DHX:1H12 DHX H122 DHX:2H12 DHX H151 DHX:1H15 DHX H152 DHX:2H15 DHX H181 DHX:1H18 DHX H182 DHX:2H18 DHX H211 DHX:1H21 DHX H212 DHX:2H21 DHX H221 DHX:1H22 DHX H222 DHX:2H22 DHX H223 DHX:3H22 DHX H71 DHY:1H7 DHY H72 DHY:2H7 DHY H41 DHZ:1H4 DHZ H42 DHZ:2H4 DHZ H5'1 DHZ:1H5' DHZ H5'2 DHZ:2H5' DHZ HOP3 DI:3HOP DI HOP2 DI:2HOP DI H5' DI:1H5* DI H5'' DI:2H5* DI H4' DI: H4* DI H3' DI: H3* DI HO3' DI:H3T DI H2' DI:1H2* DI H2'' DI:2H2* DI H1' DI: H1* DI H21A DI2:1H2 DI2 H22 DI2:2H2 DI2 H31 DI2:1H3 DI2 H32 DI2:2H3 DI2 H41 DI2:1H4 DI2 H42 DI2:2H4 DI2 H51 DI2:1H5 DI2 H52 DI2:2H5 DI2 H81 DI2:1H8 DI2 H82 DI2:2H8 DI2 H91 DI2:1H9 DI2 H92 DI2:2H9 DI2 H101 DI2:1H10 DI2 H102 DI2:2H10 DI2 H121 DI2:1H12 DI2 H122 DI2:2H12 DI2 H151 DI2:1H15 DI2 H152 DI2:2H15 DI2 H153 DI2:3H15 DI2 HN11 DI2:1HN1 DI2 HN12 DI2:2HN1 DI2 H21 DI3:1H2 DI3 H22A DI3:2H2 DI3 H31 DI3:1H3 DI3 H32 DI3:2H3 DI3 H41 DI3:1H4 DI3 H42 DI3:2H4 DI3 H51 DI3:1H5 DI3 H52 DI3:2H5 DI3 H91 DI3:1H9 DI3 H92 DI3:2H9 DI3 H101 DI3:1H10 DI3 H102 DI3:2H10 DI3 H111 DI3:1H11 DI3 H112 DI3:2H11 DI3 H131 DI3:1H13 DI3 H132 DI3:2H13 DI3 H161 DI3:1H16 DI3 H162 DI3:2H16 DI3 H163 DI3:3H16 DI3 HN21 DI3:1HN2 DI3 HN22 DI3:2HN2 DI3 H21 DI4:1H2 DI4 H22A DI4:2H2 DI4 H31 DI4:1H3 DI4 H32 DI4:2H3 DI4 H41 DI4:1H4 DI4 H42 DI4:2H4 DI4 H51 DI4:1H5 DI4 H52 DI4:2H5 DI4 H61 DI4:1H6 DI4 H62 DI4:2H6 DI4 H91 DI4:1H9 DI4 H92 DI4:2H9 DI4 H101 DI4:1H10 DI4 H102 DI4:2H10 DI4 H111 DI4:1H11 DI4 H112 DI4:2H11 DI4 H131 DI4:1H13 DI4 H132 DI4:2H13 DI4 H161 DI4:1H16 DI4 H162 DI4:2H16 DI4 H163 DI4:3H16 DI4 HN11 DI4:1HN1 DI4 HN12 DI4:2HN1 DI4 H21 DI5:1H2 DI5 H22 DI5:2H2 DI5 H31 DI5:1H3 DI5 H32 DI5:2H3 DI5 H41 DI5:1H4 DI5 H42 DI5:2H4 DI5 H71 DI5:1H7 DI5 H72 DI5:2H7 DI5 H81 DI5:1H8 DI5 H82 DI5:2H8 DI5 H91 DI5:1H9 DI5 H92 DI5:2H9 DI5 H111 DI5:1H11 DI5 H112 DI5:2H11 DI5 H141 DI5:1H14 DI5 H142 DI5:2H14 DI5 H143 DI5:3H14 DI5 HN11 DI5:1HN1 DI5 HN12 DI5:2HN1 DI5 H61 DI6:1H6 DI6 H62 DI6:2H6 DI6 H71 DI6:1H7 DI6 H72 DI6:2H7 DI6 HAB1 DI9:1HAB DI9 HAB2 DI9:2HAB DI9 HAJ1 DI9:1HAJ DI9 HAJ2 DI9:2HAJ DI9 HAK1 DI9:1HAK DI9 HAK2 DI9:2HAK DI9 HAL1 DI9:1HAL DI9 HAL2 DI9:2HAL DI9 HAM1 DI9:1HAM DI9 HAM2 DI9:2HAM DI9 HAH1 DI9:1HAH DI9 HAH2 DI9:2HAH DI9 HAI1 DI9:1HAI DI9 HAI2 DI9:2HAI DI9 HAO1 DI9:1HAO DI9 HAO2 DI9:2HAO DI9 HAN1 DI9:1HAN DI9 HAN2 DI9:2HAN DI9 HN11 DIA:1HN1 DIA HN12 DIA:2HN1 DIA HC11 DIA:1HC1 DIA HC12 DIA:2HC1 DIA HC21 DIA:1HC2 DIA HC22 DIA:2HC2 DIA HC31 DIA:1HC3 DIA HC32 DIA:2HC3 DIA HC41 DIA:1HC4 DIA HC42 DIA:2HC4 DIA HC51 DIA:1HC5 DIA HC52 DIA:2HC5 DIA HC61 DIA:1HC6 DIA HC62 DIA:2HC6 DIA HC71 DIA:1HC7 DIA HC72 DIA:2HC7 DIA HC81 DIA:1HC8 DIA HC82 DIA:2HC8 DIA HN81 DIA:1HN8 DIA HN82 DIA:2HN8 DIA HA1 DIB:1HA DIB HA2 DIB:2HA DIB HB1 DIB:1HB DIB HB2 DIB:2HB DIB HG1 DIB:1HG DIB HG2 DIB:2HG DIB HE11 DIB:1HE1 DIB HE12 DIB:2HE1 DIB HE13 DIB:3HE1 DIB HE21 DIB:1HE2 DIB HE22 DIB:2HE2 DIB HE23 DIB:3HE2 DIB HN11 DID:1HN1 DID HN12 DID:2HN1 DID H71 DID:1H7 DID H72 DID:2H7 DID H81 DID:1H8 DID H82 DID:2H8 DID H101 DID:1H10 DID H102 DID:2H10 DID H111 DID:1H11 DID H112 DID:2H11 DID H8'1 DID:1H8' DID H8'2 DID:2H8' DID H7'1 DID:1H7' DID H7'2 DID:2H7' DID H1'1 DID:1H1' DID H1'2 DID:2H1' DID H131 DIF:1H13 DIF H132 DIF:2H13 DIF H11 DIG:1H1 DIG H12 DIG:2H1 DIG H61 DIG:1H6 DIG H62 DIG:2H6 DIG HO5' DIH:*HO5 DIH H5'1 DIH:1H5* DIH H5'2 DIH:2H5* DIH H4' DIH: H4* DIH H6'1 DIH:1H6* DIH H6'2 DIH:2H6* DIH H3' DIH: H3* DIH HO3' DIH:*HO3 DIH H2'1 DIH:1H2* DIH H2'2 DIH:2H2* DIH H1' DIH: H1* DIH H101 DIH:1H10 DIH H102 DIH:2H10 DIH H2 DIL: HN2 DIL HG12 DIL:1HG1 DIL HG13 DIL:2HG1 DIL HG21 DIL:1HG2 DIL HG22 DIL:2HG2 DIL HG23 DIL:3HG2 DIL HD11 DIL:1HD1 DIL HD12 DIL:2HD1 DIL HD13 DIL:3HD1 DIL H51 DIM:1H5 DIM H52 DIM:2H5 DIM H53 DIM:3H5 DIM H101 DIM:1H10 DIM H102 DIM:2H10 DIM H103 DIM:3H10 DIM H121 DIM:1H12 DIM H122 DIM:2H12 DIM H131 DIM:1H13 DIM H132 DIM:2H13 DIM HN91 DIM:1HN9 DIM HN92 DIM:2HN9 DIM HN81 DIM:1HN8 DIM HN82 DIM:2HN8 DIM H11 DIO:1H1 DIO H12 DIO:2H1 DIO H21 DIO:1H2 DIO H22 DIO:2H2 DIO H1'1 DIO:1H1' DIO H1'2 DIO:2H1' DIO H2'1 DIO:1H2' DIO H2'2 DIO:2H2' DIO H11 DIP:1H1 DIP H12 DIP:2H1 DIP H21 DIP:1H2 DIP H22 DIP:2H2 DIP H31 DIP:1H3 DIP H32 DIP:2H3 DIP H41 DIP:1H4 DIP H42 DIP:2H4 DIP H51 DIP:1H5 DIP H52 DIP:2H5 DIP H53 DIP:3H5 DIP H1'1 DIP:1H1' DIP H1'2 DIP:2H1' DIP H2'1 DIP:1H2' DIP H2'2 DIP:2H2' DIP H3'1 DIP:1H3' DIP H3'2 DIP:2H3' DIP H4'1 DIP:1H4' DIP H4'2 DIP:2H4' DIP H5'1 DIP:1H5' DIP H5'2 DIP:2H5' DIP H5'3 DIP:3H5' DIP HM1 DIQ:1HM DIQ HM2 DIQ:2HM DIQ HM3 DIQ:3HM DIQ H31 DIQ:1H3 DIQ H32 DIQ:2H3 DIQ H41 DIQ:1H4 DIQ H42 DIQ:2H4 DIQ H51 DIQ:1H5 DIQ H52 DIQ:2H5 DIQ H61 DIQ:1H6 DIQ H62 DIQ:2H6 DIQ H71 DIQ:1H7 DIQ H72 DIQ:2H7 DIQ H81 DIQ:1H8 DIQ H82 DIQ:2H8 DIQ HB2 DIR:1HB DIR HB3 DIR:2HB DIR H DIR:1HN DIR H2 DIR:2HN DIR HG DIR: HNG DIR HH21 DIR:1HH2 DIR HH22 DIR:2HH2 DIR H1 DIS:1H DIS H2 DIS:2H DIS H181 DIT:1H18 DIT H182 DIT:2H18 DIT H183 DIT:3H18 DIT H191 DIT:1H19 DIT H192 DIT:2H19 DIT H201 DIT:1H20 DIT H202 DIT:2H20 DIT H221 DIT:1H22 DIT H222 DIT:2H22 DIT H231 DIT:1H23 DIT H232 DIT:2H23 DIT H251 DIT:1H25 DIT H252 DIT:2H25 DIT H261 DIT:1H26 DIT H262 DIT:2H26 DIT H1X DIT: XH1 DIT H3X DIT: XH3 DIT H4X DIT: XH4 DIT H5X DIT: XH5 DIT H6X DIT: XH6 DIT HN7X DIT:XHN7 DIT H8X DIT: XH8 DIT H9X DIT: XH9 DIT H11X DIT:XH11 DIT HX81 DIT:1HX8 DIT HX82 DIT:2HX8 DIT HX83 DIT:3HX8 DIT HX91 DIT:1HX9 DIT HX92 DIT:2HX9 DIT HX01 DIT:1HX0 DIT HX02 DIT:2HX0 DIT HX21 DIT:1HX2 DIT HX22 DIT:2HX2 DIT HX31 DIT:1HX3 DIT HX32 DIT:2HX3 DIT H24X DIT:XH24 DIT HX51 DIT:1HX5 DIT HX52 DIT:2HX5 DIT HX61 DIT:1HX6 DIT HX62 DIT:2HX6 DIT H DIV:1HN DIV H2 DIV:2HN DIV HB11 DIV:1HB1 DIV HB12 DIV:2HB1 DIV HG11 DIV:1HG1 DIV HG12 DIV:2HG1 DIV HG13 DIV:3HG1 DIV HB21 DIV:1HB2 DIV HB22 DIV:2HB2 DIV HB23 DIV:3HB2 DIV HM1 DIX:1HM DIX HM2 DIX:2HM DIX HM3 DIX:3HM DIX H31 DIX:1H3 DIX H32 DIX:2H3 DIX H21 DIX:1H2 DIX H22 DIX:2H2 DIX H11 DIX:1H1 DIX H12 DIX:2H1 DIX H2'1 DIX:1H2' DIX H2'2 DIX:2H2' DIX H5'1 DIX:1H5' DIX H5'2 DIX:2H5' DIX H4'1 DIX:1H4' DIX H4'2 DIX:2H4' DIX H3'1 DIX:1H3' DIX H3'2 DIX:2H3' DIX H21 DIY:1H2 DIY H22 DIY:2H2 DIY H61 DIY:1H6 DIY H62 DIY:2H6 DIY H31 DIY:1H3 DIY H32 DIY:2H3 DIY H41 DIY:1H4 DIY H42 DIY:2H4 DIY H1'1 DIY:1H1' DIY H1'2 DIY:2H1' DIY H2'1 DIY:1H2' DIY H2'2 DIY:2H2' DIY H3'1 DIY:1H3' DIY H3'2 DIY:2H3' DIY H4'1 DIY:1H4' DIY H4'2 DIY:2H4' DIY H4'3 DIY:3H4' DIY H511 DJK:1H51 DJK H512 DJK:2H51 DJK H111 DJK:1H11 DJK H21 DJR:1H2 DJR H22A DJR:2H2 DJR H11A DJR:1H1 DJR H12A DJR:2H1 DJR H31 DJR:1H3 DJR H32 DJR:2H3 DJR H81 DJR:1H8 DJR H82 DJR:2H8 DJR H151 DJR:1H15 DJR H152 DJR:2H15 DJR H261 DJR:1H26 DJR H262 DJR:2H26 DJR H263 DJR:3H26 DJR H161 DJR:1H16 DJR H162 DJR:2H16 DJR H251 DJR:1H25 DJR H252 DJR:2H25 DJR H253 DJR:3H25 DJR H241 DJR:1H24 DJR H242 DJR:2H24 DJR H243 DJR:3H24 DJR H161 DK2:1H16 DK2 H162 DK2:2H16 DK2 H21 DKA:1H2 DKA H22 DKA:2H2 DKA H31 DKA:1H3 DKA H32 DKA:2H3 DKA H41 DKA:1H4 DKA H42 DKA:2H4 DKA H51 DKA:1H5 DKA H52 DKA:2H5 DKA H61 DKA:1H6 DKA H62 DKA:2H6 DKA H71 DKA:1H7 DKA H72 DKA:2H7 DKA H81 DKA:1H8 DKA H82 DKA:2H8 DKA H91 DKA:1H9 DKA H92 DKA:2H9 DKA H101 DKA:1H10 DKA H102 DKA:2H10 DKA H103 DKA:3H10 DKA HAA1 DKI:1HAA DKI HAA2 DKI:2HAA DKI HAB1 DKI:1HAB DKI HAB2 DKI:2HAB DKI HC21 DKT:1HC2 DKT HC22 DKT:2HC2 DKT HB11 DKT:1HB1 DKT HB12 DKT:2HB1 DKT HD11 DKT:1HD1 DKT HD12 DKT:2HD1 DKT HD21 DKT:1HD2 DKT HD22 DKT:2HD2 DKT HE11 DKT:1HE1 DKT HE12 DKT:2HE1 DKT HE21 DKT:1HE2 DKT HE22 DKT:2HE2 DKT HZ11 DKT:1HZ1 DKT HZ12 DKT:2HZ1 DKT HB21 DKT:1HB2 DKT HB22 DKT:2HB2 DKT HG21 DKT:1HG2 DKT HG22 DKT:2HG2 DKT HD31 DKT:1HD3 DKT HD32 DKT:2HD3 DKT HH11 DKT:1HH1 DKT HH12 DKT:2HH1 DKT HH21 DKT:1HH2 DKT HB31 DKT:1HB3 DKT HB32 DKT:2HB3 DKT HG31 DKT:1HG3 DKT HG32 DKT:2HG3 DKT HB41 DKT:1HB4 DKT HB42 DKT:2HB4 DKT HD51 DKT:1HD5 DKT HD52 DKT:2HD5 DKT HD61 DKT:1HD6 DKT HD62 DKT:2HD6 DKT HE61 DKT:1HE6 DKT HE62 DKT:2HE6 DKT HE71 DKT:1HE7 DKT HE72 DKT:2HE7 DKT HZ31 DKT:1HZ3 DKT HZ32 DKT:2HZ3 DKT H61 DL6:1H6 DL6 H62 DL6:2H6 DL6 H81 DL6:1H8 DL6 H82 DL6:2H8 DL6 H81 DL8:1H8 DL8 H82 DL8:2H8 DL8 H61 DL8:1H6 DL8 H62 DL8:2H6 DL8 H31 DLA:1H3 DLA H32 DLA:2H3 DLA H33 DLA:3H3 DLA H2 DLE: HN2 DLE HB2 DLE:1HB DLE HB3 DLE:2HB DLE HD11 DLE:1HD1 DLE HD12 DLE:2HD1 DLE HD13 DLE:3HD1 DLE HD21 DLE:1HD2 DLE HD22 DLE:2HD2 DLE HD23 DLE:3HD2 DLE H21 DLF:1H2 DLF H22 DLF:2H2 DLF H61 DLF:1H6 DLF H62 DLF:2H6 DLF H63 DLF:3H6 DLF H31 DLG:1H3 DLG H32 DLG:2H3 DLG H61 DLG:1H6 DLG H62 DLG:2H6 DLG H111 DLG:1H11 DLG H112 DLG:2H11 DLG H121 DLG:1H12 DLG H122 DLG:2H12 DLG H131 DLG:1H13 DLG H132 DLG:2H13 DLG H141 DLG:1H14 DLG H142 DLG:2H14 DLG H151 DLG:1H15 DLG H152 DLG:2H15 DLG H161 DLG:1H16 DLG H162 DLG:2H16 DLG H163 DLG:3H16 DLG H81 DLI:1H8 DLI H82 DLI:2H8 DLI H101 DLI:1H10 DLI H102 DLI:2H10 DLI H103 DLI:3H10 DLI H121 DLI:1H12 DLI H122 DLI:2H12 DLI H221 DLI:1H22 DLI H222 DLI:2H22 DLI HC11 DLP:1HC1 DLP HC12 DLP:2HC1 DLP HC31 DLP:1HC3 DLP HC32 DLP:2HC3 DLP HC41 DLP:1HC4 DLP HC42 DLP:2HC4 DLP HC51 DLP:1HC5 DLP HC52 DLP:2HC5 DLP HC61 DLP:1HC6 DLP HC62 DLP:2HC6 DLP HC63 DLP:3HC6 DLP HC71 DLP:1HC7 DLP HC72 DLP:2HC7 DLP HC73 DLP:3HC7 DLP HC81 DLP:1HC8 DLP HC82 DLP:2HC8 DLP HC83 DLP:3HC8 DLP H121 DLP:1H12 DLP H122 DLP:2H12 DLP H131 DLP:1H13 DLP H132 DLP:2H13 DLP H141 DLP:1H14 DLP H142 DLP:2H14 DLP H151 DLP:1H15 DLP H152 DLP:2H15 DLP H161 DLP:1H16 DLP H162 DLP:2H16 DLP H171 DLP:1H17 DLP H172 DLP:2H17 DLP H181 DLP:1H18 DLP H182 DLP:2H18 DLP H211 DLP:1H21 DLP H212 DLP:2H21 DLP H241 DLP:1H24 DLP H242 DLP:2H24 DLP H251 DLP:1H25 DLP H252 DLP:2H25 DLP H261 DLP:1H26 DLP H262 DLP:2H26 DLP H271 DLP:1H27 DLP H272 DLP:2H27 DLP H281 DLP:1H28 DLP H282 DLP:2H28 DLP H283 DLP:3H28 DLP H321 DLP:1H32 DLP H322 DLP:2H32 DLP H331 DLP:1H33 DLP H332 DLP:2H33 DLP H341 DLP:1H34 DLP H342 DLP:2H34 DLP H351 DLP:1H35 DLP H352 DLP:2H35 DLP H361 DLP:1H36 DLP H362 DLP:2H36 DLP H371 DLP:1H37 DLP H372 DLP:2H37 DLP H381 DLP:1H38 DLP H382 DLP:2H38 DLP H411 DLP:1H41 DLP H412 DLP:2H41 DLP H441 DLP:1H44 DLP H442 DLP:2H44 DLP H451 DLP:1H45 DLP H452 DLP:2H45 DLP H461 DLP:1H46 DLP H462 DLP:2H46 DLP H471 DLP:1H47 DLP H472 DLP:2H47 DLP H481 DLP:1H48 DLP H482 DLP:2H48 DLP H483 DLP:3H48 DLP H31 DLQ:1H3 DLQ H32 DLQ:2H3 DLQ H33A DLQ:3H3 DLQ H51 DLQ:1H5 DLQ H52 DLQ:2H5 DLQ H71 DLQ:1H7 DLQ H72 DLQ:2H7 DLQ H73 DLQ:3H7 DLQ H81 DLQ:1H8 DLQ H82 DLQ:2H8 DLQ H83 DLQ:3H8 DLQ H141 DLQ:1H14 DLQ H142 DLQ:2H14 DLQ H143 DLQ:3H14 DLQ H171 DLQ:1H17 DLQ H172 DLQ:2H17 DLQ H173 DLQ:3H17 DLQ H181 DLQ:1H18 DLQ H182 DLQ:2H18 DLQ H183 DLQ:3H18 DLQ H191 DLQ:1H19 DLQ H192 DLQ:2H19 DLQ H193 DLQ:3H19 DLQ H201 DLQ:1H20 DLQ H202 DLQ:2H20 DLQ H203 DLQ:3H20 DLQ H211 DLQ:1H21 DLQ H212 DLQ:2H21 DLQ H213 DLQ:3H21 DLQ H251 DLQ:1H25 DLQ H252 DLQ:2H25 DLQ H261 DLQ:1H26 DLQ H262 DLQ:2H26 DLQ H281 DLQ:1H28 DLQ H282 DLQ:2H28 DLQ H311 DLQ:1H31 DLQ H312 DLQ:2H31 DLQ H401 DLQ:1H40 DLQ H402 DLQ:2H40 DLQ H411 DLQ:1H41 DLQ H412 DLQ:2H41 DLQ H451 DLQ:1H45 DLQ H452 DLQ:2H45 DLQ H453 DLQ:3H45 DLQ H461 DLQ:1H46 DLQ H462 DLQ:2H46 DLQ H463 DLQ:3H46 DLQ H21 DLS:1H2 DLS H22 DLS:2H2 DLS H23 DLS:3H2 DLS H DLS: HN DLS HB2 DLS:1HCB DLS HB3 DLS:2HCB DLS HG2 DLS:1HCG DLS HG3 DLS:2HCG DLS HD2 DLS:1HCD DLS HD3 DLS:2HCD DLS HE2 DLS:1HCE DLS HE3 DLS:2HCE DLS HZ DLS: HNZ DLS HH31 DLS:1HH3 DLS HH32 DLS:2HH3 DLS HH33 DLS:3HH3 DLS H2 DLY: HN2 DLY HB2 DLY:1HB DLY HB3 DLY:2HB DLY HG2 DLY:1HG DLY HG3 DLY:2HG DLY HD2 DLY:1HD DLY HD3 DLY:2HD DLY HE2 DLY:1HE DLY HE3 DLY:2HE DLY HZ1 DLY:1HZ DLY HZ2 DLY:2HZ DLY H111 DM1:1H11 DM1 H112 DM1:2H11 DM1 HO12 DM1:2HO1 DM1 H141 DM1:1H14 DM1 H142 DM1:2H14 DM1 H143 DM1:3H14 DM1 H151 DM1:1H15 DM1 H152 DM1:2H15 DM1 HO17 DM1:7HO1 DM1 H211 DM1:1H21 DM1 H212 DM1:2H21 DM1 H213 DM1:3H21 DM1 H1' DM1: H1* DM1 H2'1 DM1:1H2* DM1 H2'2 DM1:2H2* DM1 H3' DM1: H3* DM1 HN'1 DM1:1HN* DM1 HN'2 DM1:2HN* DM1 H4' DM1: H4* DM1 HO4' DM1:*HO4 DM1 H5' DM1: H5* DM1 H6'1 DM1:1H6* DM1 H6'2 DM1:2H6* DM1 H6'3 DM1:3H6* DM1 H111 DM2:1H11 DM2 H112 DM2:2H11 DM2 HO12 DM2:2HO1 DM2 H141 DM2:1H14 DM2 H142 DM2:2H14 DM2 HO14 DM2:4HO1 DM2 H151 DM2:1H15 DM2 H152 DM2:2H15 DM2 HO17 DM2:7HO1 DM2 H211 DM2:1H21 DM2 H212 DM2:2H21 DM2 H213 DM2:3H21 DM2 H1' DM2: H1* DM2 H2'1 DM2:1H2* DM2 H2'2 DM2:2H2* DM2 H3' DM2: H3* DM2 HN'1 DM2:1HN* DM2 HN'2 DM2:2HN* DM2 H4' DM2: H4* DM2 HO4' DM2:*HO4 DM2 H5' DM2: H5* DM2 H6'1 DM2:1H6* DM2 H6'2 DM2:2H6* DM2 H6'3 DM2:3H6* DM2 H111 DM3:1H11 DM3 H112 DM3:2H11 DM3 HO12 DM3:2HO1 DM3 H141 DM3:1H14 DM3 H142 DM3:2H14 DM3 H143 DM3:3H14 DM3 H151 DM3:1H15 DM3 H152 DM3:2H15 DM3 H211 DM3:1H21 DM3 H212 DM3:2H21 DM3 H213 DM3:3H21 DM3 H1' DM3: H1* DM3 H2'1 DM3:1H2* DM3 H2'2 DM3:2H2* DM3 H3' DM3: H3* DM3 HN'1 DM3:1HN* DM3 HN'2 DM3:2HN* DM3 H4' DM3: H4* DM3 HO4' DM3:*HO4 DM3 H5' DM3: H5* DM3 H6'1 DM3:1H6* DM3 H6'2 DM3:2H6* DM3 H6'3 DM3:3H6* DM3 H111 DM4:1H11 DM4 H112 DM4:2H11 DM4 HO12 DM4:2HO1 DM4 H141 DM4:1H14 DM4 H142 DM4:2H14 DM4 HO14 DM4:4HO1 DM4 H151 DM4:1H15 DM4 H152 DM4:2H15 DM4 H1' DM4: H1* DM4 H2'1 DM4:1H2* DM4 H2'2 DM4:2H2* DM4 H3' DM4: H3* DM4 HN'1 DM4:1HN* DM4 HN'2 DM4:2HN* DM4 H4' DM4: H4* DM4 HO4' DM4:*HO4 DM4 H5' DM4: H5* DM4 H6'1 DM4:1H6* DM4 H6'2 DM4:2H6* DM4 H6'3 DM4:3H6* DM4 H111 DM5:1H11 DM5 H112 DM5:2H11 DM5 HO12 DM5:2HO1 DM5 H141 DM5:1H14 DM5 H142 DM5:2H14 DM5 H143 DM5:3H14 DM5 H151 DM5:1H15 DM5 H152 DM5:2H15 DM5 HO17 DM5:7HO1 DM5 H1' DM5: H1* DM5 H2'1 DM5:1H2* DM5 H2'2 DM5:2H2* DM5 H3' DM5: H3* DM5 HN'1 DM5:1HN* DM5 HN'2 DM5:2HN* DM5 H4' DM5: H4* DM5 HO4' DM5:*HO4 DM5 H5' DM5: H5* DM5 H6'1 DM5:1H6* DM5 H6'2 DM5:2H6* DM5 H6'3 DM5:3H6* DM5 H81 DM6:1H8 DM6 H82 DM6:2H8 DM6 H101 DM6:1H10 DM6 H102 DM6:2H10 DM6 H141 DM6:1H14 DM6 H142 DM6:2H14 DM6 H211 DM6:1H21 DM6 H212 DM6:2H21 DM6 H213 DM6:3H21 DM6 H1' DM6: H1* DM6 H2'1 DM6:1H2* DM6 H2'2 DM6:2H2* DM6 H3' DM6: H3* DM6 H4' DM6: H4* DM6 H5' DM6: H5* DM6 H6'1 DM6:1H6* DM6 H6'2 DM6:2H6* DM6 H6'3 DM6:3H6* DM6 HO'4 DM6:4HO* DM6 HN'1 DM6:1HN* DM6 HN'2 DM6:2HN* DM6 HN'3 DM6:3HN* DM6 H81 DM7:1H8 DM7 H82 DM7:2H8 DM7 H101 DM7:1H10 DM7 H102 DM7:2H10 DM7 H141 DM7:1H14 DM7 H142 DM7:2H14 DM7 H211 DM7:1H21 DM7 H212 DM7:2H21 DM7 H213 DM7:3H21 DM7 H1' DM7: H1* DM7 H2'1 DM7:1H2* DM7 H2'2 DM7:2H2* DM7 H3' DM7: H3* DM7 H4' DM7: H4* DM7 H5' DM7: H5* DM7 H6'1 DM7:1H6* DM7 H6'2 DM7:2H6* DM7 H6'3 DM7:3H6* DM7 HN'1 DM7:1HN* DM7 HN'2 DM7:2HN* DM7 HN'3 DM7:3HN* DM7 H81 DM8:1H8 DM8 H82 DM8:2H8 DM8 H101 DM8:1H10 DM8 H102 DM8:2H10 DM8 H141 DM8:1H14 DM8 H142 DM8:2H14 DM8 H143 DM8:3H14 DM8 H211 DM8:1H21 DM8 H212 DM8:2H21 DM8 H213 DM8:3H21 DM8 H1' DM8: H1* DM8 H2' DM8: H2* DM8 H3' DM8: H3* DM8 H4' DM8: H4* DM8 H5' DM8: H5* DM8 H6'1 DM8:1H6* DM8 H6'2 DM8:2H6* DM8 H6'3 DM8:3H6* DM8 HO4' DM8:*HO4 DM8 HN'1 DM8:1HN* DM8 HN'2 DM8:2HN* DM8 H81 DM9:1H8 DM9 H82 DM9:2H8 DM9 H101 DM9:1H10 DM9 H102 DM9:2H10 DM9 H141 DM9:1H14 DM9 H142 DM9:2H14 DM9 H143 DM9:3H14 DM9 H211 DM9:1H21 DM9 H212 DM9:2H21 DM9 H213 DM9:3H21 DM9 H1' DM9: H1* DM9 H2'1 DM9:1H2* DM9 H2'2 DM9:2H2* DM9 H3' DM9: H3* DM9 H4' DM9: H4* DM9 HO4' DM9:HO4* DM9 H5' DM9: H5* DM9 H6'1 DM9:1H6* DM9 H6'2 DM9:2H6* DM9 H6'3 DM9:3H6* DM9 H311 DM9:1H31 DM9 H312 DM9:2H31 DM9 H411 DM9:1H41 DM9 H412 DM9:2H41 DM9 H421 DM9:1H42 DM9 H422 DM9:2H42 DM9 H431 DM9:1H43 DM9 H432 DM9:2H43 DM9 H433 DM9:3H43 DM9 H11 DMA:1H1 DMA H12 DMA:2H1 DMA H41 DMA:1H4 DMA H42 DMA:2H4 DMA H43 DMA:3H4 DMA H51 DMA:1H5 DMA H52 DMA:2H5 DMA H53 DMA:3H5 DMA HOA2 DMA:2HOA DMA HOB2 DMA:2HOB DMA HOB3 DMA:3HOB DMA HM31 DMB:1HM3 DMB HM32 DMB:2HM3 DMB HM33 DMB:3HM3 DMB HM51 DMB:1HM5 DMB HM52 DMB:2HM5 DMB HM53 DMB:3HM5 DMB HO4' DMB:'HO4 DMB HB21 DMC:1HB2 DMC HB22 DMC:2HB2 DMC HB23 DMC:3HB2 DMC HH11 DMC:1HH1 DMC HH12 DMC:2HH1 DMC HH21 DMC:1HH2 DMC HH22 DMC:2HH2 DMC HM11 DMC:1HM1 DMC HM12 DMC:2HM1 DMC HM13 DMC:3HM1 DMC HM21 DMC:1HM2 DMC HM22 DMC:2HM2 DMC HM23 DMC:3HM2 DMC HN31 DMD:1HN3 DMD H21 DMD:1H2 DMD H41 DMD:1H4 DMD H71 DMD:1H7 DMD H81 DMD:1H8 DMD H82 DMD:2H8 DMD H83 DMD:3H8 DMD H91 DMD:1H9 DMD H92 DMD:2H9 DMD H93 DMD:3H9 DMD H21 DME:1H2 DME H22 DME:2H2 DME H31 DME:1H3 DME H32 DME:2H3 DME H41 DME:1H4 DME H42 DME:2H4 DME H51 DME:1H5 DME H52 DME:2H5 DME H61 DME:1H6 DME H62 DME:2H6 DME H71 DME:1H7 DME H72 DME:2H7 DME H81 DME:1H8 DME H82 DME:2H8 DME H91 DME:1H9 DME H92 DME:2H9 DME H101 DME:1H10 DME H102 DME:2H10 DME H111 DME:1H11 DME H112 DME:2H11 DME H131 DME:1H13 DME H132 DME:2H13 DME H133 DME:3H13 DME H141 DME:1H14 DME H142 DME:2H14 DME H143 DME:3H14 DME H151 DME:1H15 DME H152 DME:2H15 DME H153 DME:3H15 DME H161 DME:1H16 DME H162 DME:2H16 DME H163 DME:3H16 DME H171 DME:1H17 DME H172 DME:2H17 DME H173 DME:3H17 DME H181 DME:1H18 DME H182 DME:2H18 DME H183 DME:3H18 DME H11 DMF:1H1 DMF H12 DMF:2H1 DMF H13 DMF:3H1 DMF H21 DMF:1H2 DMF H22 DMF:2H2 DMF H23 DMF:3H2 DMF HA1 DMG:1HA DMG HA2 DMG:2HA DMG H41 DMG:1H4 DMG H42 DMG:2H4 DMG H43 DMG:3H4 DMG H51 DMG:1H5 DMG H52 DMG:2H5 DMG H53 DMG:3H5 DMG H2 DMH: HN2 DMH HA1 DMH:1HA DMH HB2 DMH:1HB DMH HB3 DMH:2HB DMH HE11 DMH:1HE1 DMH HE12 DMH:2HE1 DMH HE13 DMH:3HE1 DMH HE21 DMH:1HE2 DMH HE22 DMH:2HE2 DMH HE23 DMH:3HE2 DMH HM21 DMI:1HM2 DMI HM22 DMI:2HM2 DMI HM23 DMI:3HM2 DMI HM31 DMI:1HM3 DMI HM32 DMI:2HM3 DMI HM33 DMI:3HM3 DMI H11 DMJ:1H1 DMJ H12 DMJ:2H1 DMJ H61 DMJ:1H6 DMJ H62 DMJ:2H6 DMJ H DMK:1HN DMK H2 DMK:2HN DMK HG21 DMK:1HG2 DMK HG22 DMK:2HG2 DMK HG23 DMK:3HG2 DMK HG31 DMK:1HG3 DMK HG32 DMK:2HG3 DMK HG33 DMK:3HG3 DMK HD1 DMK:OHD1 DMK HM11 DML:1HM1 DML HM12 DML:2HM1 DML HM13 DML:3HM1 DML HM21 DML:1HM2 DML HM22 DML:2HM2 DML HM23 DML:3HM2 DML H111 DMM:1H11 DMM H112 DMM:2H11 DMM HO12 DMM:2HO1 DMM H141 DMM:1H14 DMM H142 DMM:2H14 DMM HO14 DMM:4HO1 DMM H151 DMM:1H15 DMM H152 DMM:2H15 DMM HO17 DMM:7HO1 DMM H211 DMM:1H21 DMM H212 DMM:2H21 DMM H213 DMM:3H21 DMM H1' DMM: H1* DMM H2'1 DMM:1H2* DMM H2'2 DMM:2H2* DMM H3' DMM: H3* DMM H4' DMM: H4* DMM HO4' DMM:*HO4 DMM H5' DMM: H5* DMM H6'1 DMM:1H6* DMM H6'2 DMM:2H6* DMM H6'3 DMM:3H6* DMM H331 DMM:1H33 DMM H332 DMM:2H33 DMM H631 DMM:1H63 DMM H632 DMM:2H63 DMM H531 DMM:1H53 DMM H532 DMM:2H53 DMM H731 DMM:1H73 DMM H732 DMM:2H73 DMM H733 DMM:3H73 DMM H21 DMN:1H2 DMN H22 DMN:2H2 DMN H23 DMN:3H2 DMN H31 DMN:1H3 DMN H32 DMN:2H3 DMN H33 DMN:3H3 DMN HCO1 DMO:1HCO DMO HNO1 DMO:1HNO DMO HNO2 DMO:2HNO DMO HBO1 DMO:1HBO DMO HBO2 DMO:2HBO DMO HGO1 DMO:1HGO DMO HGO2 DMO:2HGO DMO HDO1 DMO:1HDO DMO HDO2 DMO:2HDO DMO HEO1 DMO:1HEO DMO HEO2 DMO:2HEO DMO H201 DMP:1H20 DMP H202 DMP:2H20 DMP H271 DMP:1H27 DMP H272 DMP:2H27 DMP H301 DMP:1H30 DMP H302 DMP:2H30 DMP H601 DMP:1H60 DMP H602 DMP:2H60 DMP H701 DMP:1H70 DMP H702 DMP:2H70 DMP H771 DMP:1H77 DMP H772 DMP:2H77 DMP HO27 DMP:7HO2 DMP HO77 DMP:7HO7 DMP H21A DMQ:1H2 DMQ H22A DMQ:2H2 DMQ H71A DMQ:1H7 DMQ H72 DMQ:2H7 DMQ HN21 DMQ:1HN2 DMQ HN22 DMQ:2HN2 DMQ H311 DMQ:1H31 DMQ H312 DMQ:2H31 DMQ H611 DMQ:1H61 DMQ H612 DMQ:2H61 DMQ HN71 DMQ:1HN7 DMQ HN72 DMQ:2HN7 DMQ HO11 DMR:1HO1 DMR H21 DMR:1H2 DMR HO21 DMR:1HO2 DMR H31 DMR:1H3 DMR H32 DMR:2H3 DMR HO41 DMR:1HO4 DMR H11 DMS:1H1 DMS H12 DMS:2H1 DMS H13 DMS:3H1 DMS H21 DMS:1H2 DMS H22 DMS:2H2 DMS H23 DMS:3H2 DMS H DMT: HN DMT HCN1 DMT:1HCN DMT HCN2 DMT:2HCN DMT HCN3 DMT:3HCN DMT HD12 DMT:1HD1 DMT HD13 DMT:2HD1 DMT HD21 DMT:1HD2 DMT HD22 DMT:2HD2 DMT HD23 DMT:3HD2 DMT HD31 DMT:1HD3 DMT HD32 DMT:2HD3 DMT HD33 DMT:3HD3 DMT HH1 DMT:1HH DMT HH2 DMT:2HH DMT HH3 DMT:3HH DMT H181 DMU:1H18 DMU H182 DMU:2H18 DMU H191 DMU:1H19 DMU H192 DMU:2H19 DMU H221 DMU:1H22 DMU H222 DMU:2H22 DMU H251 DMU:1H25 DMU H252 DMU:2H25 DMU H281 DMU:1H28 DMU H282 DMU:2H28 DMU H311 DMU:1H31 DMU H312 DMU:2H31 DMU H341 DMU:1H34 DMU H342 DMU:2H34 DMU H371 DMU:1H37 DMU H372 DMU:2H37 DMU H401 DMU:1H40 DMU H402 DMU:2H40 DMU H431 DMU:1H43 DMU H432 DMU:2H43 DMU H433 DMU:3H43 DMU H571 DMU:1H57 DMU H572 DMU:2H57 DMU H111 DMU:1H11 DMU H112 DMU:2H11 DMU H323 DMV:3H32 DMV H322 DMV:2H32 DMV H321 DMV:1H32 DMV H42 DMV:2H4 DMV H41 DMV:1H4 DMV H53 DMV:3H5 DMV H52 DMV:2H5 DMV H51 DMV:1H5 DMV H5M1 DMW:1H5M DMW H5M2 DMW:2H5M DMW H5M3 DMW:3H5M DMW H6M1 DMW:1H6M DMW H6M2 DMW:2H6M DMW H6M3 DMW:3H6M DMW H71 DMX:1H7 DMX H72 DMX:2H7 DMX H91 DMX:1H9 DMX H92 DMX:2H9 DMX H101 DMX:1H10 DMX H102 DMX:2H10 DMX H121 DMX:1H12 DMX H122 DMX:2H12 DMX H123 DMX:3H12 DMX H131 DMX:1H13 DMX H132 DMX:2H13 DMX H133 DMX:3H13 DMX H171 DMX:1H17 DMX H172 DMX:2H17 DMX H61 DMY:1H6 DMY H62 DMY:2H6 DMY H63 DMY:3H6 DMY H121 DMY:1H12 DMY H122 DMY:2H12 DMY H123 DMY:3H12 DMY H181 DMY:1H18 DMY H182 DMY:2H18 DMY H183 DMY:3H18 DMY H201 DMY:1H20 DMY H202 DMY:2H20 DMY H211 DMY:1H21 DMY H212 DMY:2H21 DMY HN91 DMY:1HN9 DMY HN92 DMY:2HN9 DMY H411 DMZ:1H41 DMZ H412 DMZ:2H41 DMZ H413 DMZ:3H41 DMZ H311 DMZ:1H31 DMZ H312 DMZ:2H31 DMZ H313 DMZ:3H31 DMZ H5C1 DN1:1H5C DN1 H5C2 DN1:2H5C DN1 H6C1 DN1:1H6C DN1 H6C2 DN1:2H6C DN1 H6C3 DN1:3H6C DN1 H7C1 DN1:1H7C DN1 H7C2 DN1:2H7C DN1 H7C3 DN1:3H7C DN1 H221 DN1:1H22 DN1 H222 DN1:2H22 DN1 H231 DN1:1H23 DN1 H232 DN1:2H23 DN1 H5C1 DN2:1H5C DN2 H5C2 DN2:2H5C DN2 H6C1 DN2:1H6C DN2 H6C2 DN2:2H6C DN2 H6C3 DN2:3H6C DN2 H7C1 DN2:1H7C DN2 H7C2 DN2:2H7C DN2 H7C3 DN2:3H7C DN2 H131 DN2:1H13 DN2 H132 DN2:2H13 DN2 H221 DN2:1H22 DN2 H222 DN2:2H22 DN2 H231 DN2:1H23 DN2 H232 DN2:2H23 DN2 HPNO DND:OHPN DND H5N1 DND:1H5N DND H5N2 DND:2H5N DND H4N1 DND:1H4N DND H3NC DND:CH3N DND H3NO DND:OH3N DND H2B DND:CH2' DND H2'O DND:OH2' DND H1NC DND:CH1N DND H6NC DND:CH6N DND H5NC DND:CH5N DND H4NC DND:CH4N DND H2NC DND:CH2N DND H7NO DND:OH7N DND HPAO DND:OHPA DND H5A1 DND:1H5A DND H5A2 DND:2H5A DND HB4 DND:4H'A DND H3AC DND:CH3A DND HB3 DND:3H'A DND HB2 DND:2H'A DND HBO DND:OH'A DND HB1 DND:1H'A DND H2AC DND:CH2A DND H8AC DND:CH8A DND HN61 DND:1HN6 DND HN62 DND:2HN6 DND H DNE:1HN DNE H2 DNE:2HN DNE HB2 DNE:1HB DNE HB3 DNE:2HB DNE HG2 DNE:1HG DNE HG3 DNE:2HG DNE HD2 DNE:1HD DNE HD3 DNE:2HD DNE HE1 DNE:1HE DNE HE2 DNE:2HE DNE HE3 DNE:3HE DNE H DNG:1HN DNG HB2 DNG:1HB DNG HB3 DNG:2HB DNG HG2 DNG:1HG DNG HG3 DNG:2HG DNG HD2 DNG:1HD DNG HD3 DNG:2HD DNG HE1 DNG:1HE DNG HE2 DNG:2HE DNG HE3 DNG:3HE DNG H71 DNH:1H7 DNH H72 DNH:2H7 DNH H81 DNH:1H8 DNH H82 DNH:2H8 DNH H51 DNH:1H5 DNH H52 DNH:2H5 DNH H61 DNH:1H6 DNH H62 DNH:2H6 DNH H11 DNH:1H1 DNH H12 DNH:2H1 DNH H21 DNH:1H2 DNH H22 DNH:2H2 DNH H11 DNJ:1H1 DNJ H12 DNJ:2H1 DNJ H61 DNJ:1H6 DNJ H62 DNJ:2H6 DNJ HB1 DNL:1HB DNL HB2 DNL:2HB DNL HG1 DNL:1HG DNL HG2 DNL:2HG DNL HD1 DNL:1HD DNL HD2 DNL:2HD DNL HE1 DNL:1HE DNL HE2 DNL:2HE DNL HZ1 DNL:1HZ DNL HZ2 DNL:2HZ DNL H DNM: HN DNM HB2 DNM:1HB DNM HB3 DNM:2HB DNM HG2 DNM:1HG DNM HG3 DNM:2HG DNM HD2 DNM:1HD DNM HD3 DNM:2HD DNM HE1 DNM:1HE DNM HE2 DNM:2HE DNM HE3 DNM:3HE DNM H21 DNN:1H2 DNN H22 DNN:2H2 DNN H31 DNN:1H3 DNN H32 DNN:2H3 DNN H41 DNN:1H4 DNN H42 DNN:2H4 DNN H51 DNN:1H5 DNN H52 DNN:2H5 DNN H61 DNN:1H6 DNN H62 DNN:2H6 DNN H91 DNN:1H9 DNN H92 DNN:2H9 DNN H93 DNN:3H9 DNN HN71 DNN:1HN7 DNN HN72 DNN:2HN7 DNN HN81 DNN:1HN8 DNN HN82 DNN:2HN8 DNN H DNP:1HN DNP H2 DNP:2HN DNP HB2 DNP:1HB DNP HB3 DNP:2HB DNP HG1 DNP:1HG DNP HG2 DNP:2HG DNP HG3 DNP:3HG DNP H51 DNQ:1H5 DNQ H61 DNQ:1H6 DNQ HOP2 DNR:2HOP DNR H5' DNR:1H5* DNR H5'' DNR:2H5* DNR H4' DNR: H4* DNR H1' DNR: H1* DNR H2' DNR:1H2* DNR H2'' DNR:2H2* DNR H3' DNR: H3* DNR HO3' DNR:H3T DNR HOP3 DNR:3HOP DNR H11A DNS:1H1 DNS H12 DNS:2H1 DNS H13 DNS:3H1 DNS H21 DNS:1H2 DNS H22 DNS:2H2 DNS H23 DNS:3H2 DNS HZ DNS: HNZ DNS HE3 DNS:1HE DNS HE2 DNS:2HE DNS HD3 DNS:1HD DNS HD2 DNS:2HD DNS HG3 DNS:1HG DNS HG2 DNS:2HG DNS HB3 DNS:1HB DNS HB2 DNS:2HB DNS H DNS:1HN DNS H2 DNS:2HN DNS H131 DNT:1H13 DNT H132 DNT:2H13 DNT H133 DNT:3H13 DNT H121 DNT:1H12 DNT H122 DNT:2H12 DNT H111 DNT:1H11 DNT H112 DNT:2H11 DNT H91 DNT:1H9 DNT H92 DNT:2H9 DNT H81 DNT:1H8 DNT H82 DNT:2H8 DNT H101 DNT:1H10 DNT H102 DNT:2H10 DNT H103 DNT:3H10 DNT HB1 DO2:1HB DO2 HB2 DO2:2HB DO2 HG1 DO2:1HG DO2 HG2 DO2:2HG DO2 HD1 DO2:1HD DO2 HD2 DO2:2HD DO2 HE1 DO2:1HE DO2 HO1 DO3:1HO DO3 HO3 DO3:3HO DO3 HO5 DO3:5HO DO3 HO7 DO3:7HO DO3 HC11 DO3:1HC1 DO3 HC12 DO3:2HC1 DO3 HC21 DO3:1HC2 DO3 HC22 DO3:2HC2 DO3 HC31 DO3:1HC3 DO3 HC32 DO3:2HC3 DO3 HC41 DO3:1HC4 DO3 HC42 DO3:2HC4 DO3 HC51 DO3:1HC5 DO3 HC52 DO3:2HC5 DO3 HC61 DO3:1HC6 DO3 HC62 DO3:2HC6 DO3 HC71 DO3:1HC7 DO3 HC72 DO3:2HC7 DO3 HC81 DO3:1HC8 DO3 HC82 DO3:2HC8 DO3 H101 DO3:1H10 DO3 H102 DO3:2H10 DO3 H121 DO3:1H12 DO3 H122 DO3:2H12 DO3 H141 DO3:1H14 DO3 H142 DO3:2H14 DO3 H161 DO3:1H16 DO3 H162 DO3:2H16 DO3 H171 DO3:1H17 DO3 H172 DO3:2H17 DO3 H173 DO3:3H17 DO3 H41 DO4:1H4 DO4 H42 DO4:2H4 DO4 H31 DO4:1H3 DO4 H32 DO4:2H3 DO4 H31 DO8:1H3 DO8 H32 DO8:2H3 DO8 H81 DO8:1H8 DO8 H82 DO8:2H8 DO8 HOP2 DO8:2HOP DO8 HOP3 DO8:3HOP DO8 H2 DOA: HN2 DOA HA1 DOA:1HA DOA HA2 DOA:2HA DOA H21 DOA:1H2 DOA H22 DOA:2H2 DOA H31 DOA:1H3 DOA H32 DOA:2H3 DOA H41 DOA:1H4 DOA H42 DOA:2H4 DOA H51 DOA:1H5 DOA H52 DOA:2H5 DOA H61 DOA:1H6 DOA H62 DOA:2H6 DOA H71 DOA:1H7 DOA H72 DOA:2H7 DOA H81 DOA:1H8 DOA H82 DOA:2H8 DOA H91 DOA:1H9 DOA H92 DOA:2H9 DOA H101 DOA:1H10 DOA H102 DOA:2H10 DOA HA21 DOA:1HA2 DOA HA22 DOA:2HA2 DOA HO2' DOB:'HO2 DOB HN41 DOC:1HN4 DOC HN42 DOC:2HN4 DOC H1' DOC: H1* DOC H2' DOC:1H2* DOC H2'' DOC:2H2* DOC H3'1 DOC:1H3* DOC H3'2 DOC:2H3* DOC H4' DOC: H4* DOC H5' DOC:1H5* DOC H5'' DOC:2H5* DOC HOP2 DOC:2HOP DOC HOP3 DOC:3HOP DOC HC21 DOE:1HC2 DOE HC22 DOE:2HC2 DOE HC31 DOE:1HC3 DOE HC32 DOE:2HC3 DOE HC41 DOE:1HC4 DOE HC42 DOE:2HC4 DOE HC51 DOE:1HC5 DOE HC52 DOE:2HC5 DOE HC61 DOE:1HC6 DOE HC62 DOE:2HC6 DOE HC71 DOE:1HC7 DOE HC72 DOE:2HC7 DOE HC81 DOE:1HC8 DOE HC82 DOE:2HC8 DOE HC91 DOE:1HC9 DOE HC92 DOE:2HC9 DOE H111 DOE:1H11 DOE H112 DOE:2H11 DOE H131 DOE:1H13 DOE H132 DOE:2H13 DOE H151 DOE:1H15 DOE H152 DOE:2H15 DOE H171 DOE:1H17 DOE H172 DOE:2H17 DOE H251 DOE:1H25 DOE H252 DOE:2H25 DOE H261 DOE:1H26 DOE H262 DOE:2H26 DOE H271 DOE:1H27 DOE H272 DOE:2H27 DOE HC21 DOF:1HC2 DOF HC22 DOF:2HC2 DOF HC31 DOF:1HC3 DOF HC32 DOF:2HC3 DOF HC41 DOF:1HC4 DOF HC42 DOF:2HC4 DOF HC51 DOF:1HC5 DOF HC52 DOF:2HC5 DOF HC61 DOF:1HC6 DOF HC62 DOF:2HC6 DOF HC71 DOF:1HC7 DOF HC72 DOF:2HC7 DOF HC81 DOF:1HC8 DOF HC82 DOF:2HC8 DOF HC91 DOF:1HC9 DOF HC92 DOF:2HC9 DOF H111 DOF:1H11 DOF H112 DOF:2H11 DOF H131 DOF:1H13 DOF H132 DOF:2H13 DOF H151 DOF:1H15 DOF H152 DOF:2H15 DOF H171 DOF:1H17 DOF H172 DOF:2H17 DOF H211 DOG:1H21 DOG H212 DOG:2H21 DOG H161 DOG:1H16 DOG H162 DOG:2H16 DOG H181 DOG:1H18 DOG H182 DOG:2H18 DOG H183 DOG:3H18 DOG H12O DOG:OH12 DOG H151 DOG:1H15 DOG H152 DOG:2H15 DOG H14O DOG:OH14 DOG HC71 DOG:1HC7 DOG HC72 DOG:2HC7 DOG H111 DOG:1H11 DOG H112 DOG:2H11 DOG H191 DOG:1H19 DOG H192 DOG:2H19 DOG H193 DOG:3H19 DOG HC61 DOG:1HC6 DOG HC62 DOG:2HC6 DOG HC41 DOG:1HC4 DOG HC42 DOG:2HC4 DOG H32O DOG:OH32 DOG HC21 DOG:1HC2 DOG HC22 DOG:2HC2 DOG HC11 DOG:1HC1 DOG HC12 DOG:2HC1 DOG HN1 DOH:1HN DOH HN2 DOH:2HN DOH H5'1 DOI:1H5* DOI H5'2 DOI:2H5* DOI H4' DOI: H4* DOI H1' DOI: H1* DOI H2'1 DOI:1H2* DOI H2'2 DOI:2H2* DOI H3' DOI: H3* DOI HO3' DOI:*HO3 DOI HC41 DOL:1HC4 DOL HC42 DOL:2HC4 DOL HC31 DOL:1HC3 DOL HC3A DOL:2HC3 DOL H421 DOL:1H42 DOL H422 DOL:2H42 DOL H431 DOL:1H43 DOL H432 DOL:2H43 DOL H471 DOL:1H47 DOL H472 DOL:2H47 DOL H481 DOL:1H48 DOL H482 DOL:2H48 DOL H483 DOL:3H48 DOL H451 DOL:1H45 DOL H452 DOL:2H45 DOL H461 DOL:1H46 DOL H462 DOL:2H46 DOL H463 DOL:3H46 DOL H131 DOL:1H13 DOL H132 DOL:2H13 DOL H161 DOL:1H16 DOL H162 DOL:2H16 DOL H211 DOL:1H21 DOL H212 DOL:2H21 DOL H213 DOL:3H21 DOL H241 DOL:1H24 DOL H242 DOL:2H24 DOL H311 DOL:1H31 DOL H312 DOL:2H31 DOL H313 DOL:3H31 DOL H351 DOL:1H35 DOL H352 DOL:2H35 DOL H353 DOL:3H35 DOL H341 DOL:1H34 DOL H342 DOL:2H34 DOL H343 DOL:3H34 DOL H61 DOM:1H6 DOM H62 DOM:2H6 DOM H2'1 DOM:1H2' DOM H2'2 DOM:2H2' DOM H6'1 DOM:1H6' DOM H6'2 DOM:2H6' DOM HO1' DOM:'HO1 DOM HO3' DOM:'HO3 DOM HO6' DOM:'HO6 DOM HXT DON:HOXT DON H DON:1HN DON H2 DON:2HN DON HB2 DON:1HB DON HB3 DON:2HB DON H1E1 DON:1H1E DON H1E2 DON:2H1E DON H1C1 DON:1H1C DON H1C2 DON:2H1C DON H1A1 DON:1H1A DON H11 DOP:1H1 DOP H12 DOP:2H1 DOP H21 DOP:1H2 DOP H22 DOP:2H2 DOP H31 DOP:1H3 DOP H32 DOP:2H3 DOP H41 DOP:1H4 DOP H42 DOP:2H4 DOP H51 DOP:1H5 DOP H52 DOP:2H5 DOP H61 DOP:1H6 DOP H62 DOP:2H6 DOP H71 DOP:1H7 DOP H72 DOP:2H7 DOP H81 DOP:1H8 DOP H82 DOP:2H8 DOP H83 DOP:3H8 DOP H1'1 DOP:1H1' DOP H1'2 DOP:2H1' DOP H2'1 DOP:1H2' DOP H2'2 DOP:2H2' DOP H3'1 DOP:1H3' DOP H3'2 DOP:2H3' DOP H4'1 DOP:1H4' DOP H4'2 DOP:2H4' DOP H5'1 DOP:1H5' DOP H5'2 DOP:2H5' DOP H6'1 DOP:1H6' DOP H6'2 DOP:2H6' DOP H7'1 DOP:1H7' DOP H7'2 DOP:2H7' DOP H8'1 DOP:1H8' DOP H8'2 DOP:2H8' DOP H8'3 DOP:3H8' DOP HAB1 DOQ:1HAB DOQ HAB2 DOQ:2HAB DOQ HAB3 DOQ:3HAB DOQ HAA1 DOQ:1HAA DOQ HAA2 DOQ:2HAA DOQ HAA3 DOQ:3HAA DOQ HAL1 DOQ:1HAL DOQ HAL2 DOQ:2HAL DOQ HG1 DOQ:1HG DOQ HG2 DOQ:2HG DOQ H51 DOR:1H5 DOR H52 DOR:2H5 DOR H31 DOS:1H3 DOS H32 DOS:2H3 DOS H41 DOS:1H4 DOS H42 DOS:2H4 DOS H51 DOS:1H5 DOS H61 DOS:1H6 DOS H77 DOS:7H7 DOS H88 DOS:8H8 DOS H91 DOS:1H9 DOS H92 DOS:2H9 DOS H101 DOS:1H10 DOS H102 DOS:2H10 DOS H111 DOS:1H11 DOS H112 DOS:2H11 DOS H121 DOS:1H12 DOS H122 DOS:2H12 DOS H271 DOS:1H27 DOS H272 DOS:2H27 DOS H281 DOS:1H28 DOS H282 DOS:2H28 DOS H291 DOS:1H29 DOS H292 DOS:2H29 DOS H301 DOS:1H30 DOS H302 DOS:2H30 DOS H331 DOS:31H3 DOS H332 DOS:32H3 DOS H33A DOS:1H33 DOS H33B DOS:2H33 DOS H341 DOS:1H34 DOS H342 DOS:2H34 DOS H351 DOS:1H35 DOS H352 DOS:2H35 DOS H361 DOS:1H36 DOS H362 DOS:2H36 DOS HG1 DOS:1HG DOS HG2 DOS:2HG DOS HD21 DOS:1HD2 DOS HD22 DOS:2HD2 DOS HE11 DOS:1HE1 DOS HE12 DOS:2HE1 DOS HE21 DOS:1HE2 DOS HOG1 DOT:1HOG DOT HOG3 DOT:3HOG DOT HOB2 DOT:2HOB DOT HOA2 DOT:2HOA DOT H5'1 DOT:1H5* DOT H5'2 DOT:2H5* DOT H4B DOT: H4* DOT H3B DOT: H3* DOT H2'1 DOT:1H2* DOT H2'2 DOT:2H2* DOT H1' DOT: H1* DOT HN61 DOT:1HN6 DOT HN62 DOT:2HN6 DOT H2B DOT:1H2' DOT H2D DOT:2H2' DOT H11 DOX:1H1 DOX H12 DOX:2H1 DOX H21 DOX:1H2 DOX H22 DOX:2H2 DOX H31 DOX:1H3 DOX H32 DOX:2H3 DOX H41 DOX:1H4 DOX H42 DOX:2H4 DOX HD1 DP1:1HD DP1 HD2 DP1:2HD DP1 HG1 DP1:1HG DP1 HG2 DP1:2HG DP1 HB1 DP1:1HB DP1 HB2 DP1:2HB DP1 HN1 DP1:1HN DP1 HN2 DP1:2HN DP1 H1'1 DP1:1H1' DP1 H1'2 DP1:2H1' DP1 HB'1 DP1:1HB' DP1 HB'2 DP1:2HB' DP1 H11 DP1:1H1 DP1 H12 DP1:2H1 DP1 HN11 DP1:1HN1 DP1 HN12 DP1:2HN1 DP1 HN21 DP2:1HN2 DP2 HN22 DP2:2HN2 DP2 HB1 DP2:1HB DP2 HB2 DP2:2HB DP2 HG1 DP2:1HG DP2 HG2 DP2:2HG DP2 HD1 DP2:1HD DP2 HD2 DP2:2HD DP2 HN'1 DP2:1HN' DP2 HN'2 DP2:2HN' DP2 HB'1 DP2:1HB' DP2 HB'2 DP2:2HB' DP2 HG'1 DP2:1HG' DP2 HG'2 DP2:2HG' DP2 HD'1 DP2:1HD' DP2 HD'2 DP2:2HD' DP2 HE'1 DP2:1HE' DP2 HE'2 DP2:2HE' DP2 HZ'1 DP2:1HZ' DP2 HZ'2 DP2:2HZ' DP2 H2'1 DP3:1H2' DP3 H2'2 DP3:2H2' DP3 H11 DP3:1H1 DP3 H12 DP3:2H1 DP3 H1'1 DP3:1H1' DP3 H1'2 DP3:2H1' DP3 H1 DP3:1H DP3 H2 DP3:2H DP3 HN1 DP3:1HN DP3 HN2 DP3:2HN DP3 HB1 DP3:1HB DP3 HB2 DP3:2HB DP3 HG1 DP3:1HG DP3 HG2 DP3:2HG DP3 HD1 DP3:1HD DP3 HD2 DP3:2HD DP3 HC71 DP4:1HC7 DP4 HC72 DP4:2HC7 DP4 HC73 DP4:3HC7 DP4 HC81 DP4:1HC8 DP4 HC82 DP4:2HC8 DP4 HC83 DP4:3HC8 DP4 H101 DP4:1H10 DP4 H102 DP4:2H10 DP4 H111 DP4:1H11 DP4 H112 DP4:2H11 DP4 H121 DP4:1H12 DP4 H122 DP4:2H12 DP4 H131 DP4:1H13 DP4 H132 DP4:2H13 DP4 H141 DP4:1H14 DP4 H142 DP4:2H14 DP4 H143 DP4:3H14 DP4 H6A1 DP5:1H6A DP5 H6A2 DP5:2H6A DP5 HO2A DP5:AHO2 DP5 HO3A DP5:AHO3 DP5 HS4A DP5:AHS4 DP5 HO6A DP5:AHO6 DP5 H6B1 DP5:1H6B DP5 H6B2 DP5:2H6B DP5 HO2B DP5:BHO2 DP5 HO3B DP5:BHO3 DP5 HO6B DP5:BHO6 DP5 H6C1 DP5:1H6C DP5 H6C2 DP5:2H6C DP5 HS1C DP5:CHS1 DP5 HO2C DP5:CHO2 DP5 HO3C DP5:CHO3 DP5 HO6C DP5:CHO6 DP5 H3A1 DP6:1H3A DP6 H3A2 DP6:2H3A DP6 H3A3 DP6:3H3A DP6 H51 DP6:1H5 DP6 H52 DP6:2H5 DP6 H41 DP6:1H4 DP6 H42 DP6:2H4 DP6 H21 DP6:1H2 DP6 H22 DP6:2H2 DP6 H31 DP7:1H3 DP7 H32 DP7:2H3 DP7 H41 DP7:1H4 DP7 H42 DP7:2H4 DP7 H51 DP7:1H5 DP7 H52 DP7:2H5 DP7 H91 DP7:1H9 DP7 H92 DP7:2H9 DP7 H101 DP7:1H10 DP7 H102 DP7:2H10 DP7 H111 DP7:1H11 DP7 H112 DP7:2H11 DP7 H131 DP7:1H13 DP7 H132 DP7:2H13 DP7 H161 DP7:1H16 DP7 H162 DP7:2H16 DP7 H163 DP7:3H16 DP7 HN31 DP7:1HN3 DP7 HN32 DP7:2HN3 DP7 HD1 DP9:1HD DP9 HD2 DP9:2HD DP9 HG1 DP9:1HG DP9 HG2 DP9:2HG DP9 HB1 DP9:1HB DP9 HB2 DP9:2HB DP9 HN1 DP9:1HN DP9 HN2 DP9:2HN DP9 HD'1 DP9:1HD' DP9 HD'2 DP9:2HD' DP9 H1'1 DP9:1H1' DP9 H1'2 DP9:2H1' DP9 HB'1 DP9:1HB' DP9 HB'2 DP9:2HB' DP9 H101 DPA:1H10 DPA H102 DPA:2H10 DPA H111 DPA:1H11 DPA H112 DPA:2H11 DPA H113 DPA:3H11 DPA H121 DPA:1H12 DPA H122 DPA:2H12 DPA H123 DPA:3H12 DPA H131 DPA:1H13 DPA H132 DPA:2H13 DPA H133 DPA:3H13 DPA H71 DPB:1H5M DPB H72 DPB:2H5M DPB H73 DPB:3H5M DPB H1' DPB: H1* DPB H4' DPB: H4* DPB H3' DPB: H3* DPB H2' DPB:1H2* DPB H2'' DPB:2H2* DPB H5' DPB:1H5* DPB H5'' DPB:2H5* DPB HOP2 DPB:2HOP DPB HOP3 DPB:3HOP DPB H111 DPC:1H11 DPC H112 DPC:2H11 DPC H113 DPC:3H11 DPC H811 DPC:1H81 DPC H812 DPC:2H81 DPC H821 DPC:1H82 DPC H822 DPC:2H82 DPC H91 DPC:1H9 DPC H92 DPC:2H9 DPC H911 DPC:1H91 DPC H912 DPC:2H91 DPC H921 DPC:1H92 DPC H922 DPC:2H92 DPC H923 DPC:3H92 DPC HNE1 DPC:1HNE DPC HNE2 DPC:2HNE DPC H22A DPD:2H2 DPD H21 DPD:1H2 DPD H32A DPD:2H3 DPD H31 DPD:1H3 DPD H52 DPD:2H5 DPD H51 DPD:1H5 DPD H62 DPD:2H6 DPD H61 DPD:1H6 DPD H72 DPD:2H7 DPD H71 DPD:1H7 DPD H193 DPD:3H19 DPD H192 DPD:2H19 DPD H191 DPD:1H19 DPD H412 DPD:2H41 DPD H411 DPD:1H41 DPD H422 DPD:2H42 DPD H421 DPD:1H42 DPD H432 DPD:2H43 DPD H431 DPD:1H43 DPD H443 DPD:3H44 DPD H442 DPD:2H44 DPD H441 DPD:1H44 DPD H512 DPD:2H51 DPD H511 DPD:1H51 DPD H522 DPD:2H52 DPD H521 DPD:1H52 DPD H532 DPD:2H53 DPD H531 DPD:1H53 DPD H543 DPD:3H54 DPD H542 DPD:2H54 DPD H541 DPD:1H54 DPD H11 DPE:1H1 DPE H12 DPE:2H1 DPE H21 DPE:1H2 DPE H22 DPE:2H2 DPE H31 DPE:1H3 DPE H32 DPE:2H3 DPE H41 DPE:1H4 DPE H42 DPE:2H4 DPE H51 DPE:1H5 DPE H52 DPE:2H5 DPE H61 DPE:1H6 DPE H62 DPE:2H6 DPE H71 DPE:1H7 DPE H72 DPE:2H7 DPE H81 DPE:1H8 DPE H82 DPE:2H8 DPE H91 DPE:1H9 DPE H92 DPE:2H9 DPE H101 DPE:1H10 DPE H102 DPE:2H10 DPE H111 DPE:1H11 DPE H112 DPE:2H11 DPE H113 DPE:3H11 DPE HM1 DPE:1HM DPE HM2 DPE:2HM DPE HM3 DPE:3HM DPE H11 DPG:1H1 DPG H12 DPG:2H1 DPG H31 DPG:1H3 DPG H32 DPG:2H3 DPG H41 DPG:1H4 DPG H42 DPG:2H4 DPG H61 DPG:1H6 DPG H62 DPG:2H6 DPG H111 DPG:1H11 DPG H112 DPG:2H11 DPG H121 DPG:1H12 DPG H122 DPG:2H12 DPG H141 DPG:1H14 DPG H142 DPG:2H14 DPG H143 DPG:3H14 DPG H151 DPG:1H15 DPG H152 DPG:2H15 DPG H161 DPG:1H16 DPG H162 DPG:2H16 DPG H171 DPG:1H17 DPG H172 DPG:2H17 DPG H191 DPG:1H19 DPG H192 DPG:2H19 DPG H193 DPG:3H19 DPG H201 DPG:1H20 DPG H202 DPG:2H20 DPG H211 DPG:1H21 DPG H212 DPG:2H21 DPG H221 DPG:1H22 DPG H222 DPG:2H22 DPG H241 DPG:1H24 DPG H242 DPG:2H24 DPG H243 DPG:3H24 DPG H251 DPG:1H25 DPG H252 DPG:2H25 DPG H261 DPG:1H26 DPG H262 DPG:2H26 DPG H271 DPG:1H27 DPG H272 DPG:2H27 DPG H291 DPG:1H29 DPG H292 DPG:2H29 DPG H293 DPG:3H29 DPG H301 DPG:1H30 DPG H302 DPG:2H30 DPG H303 DPG:3H30 DPG H411 DPG:1H41 DPG H412 DPG:2H41 DPG H421 DPG:1H42 DPG H422 DPG:2H42 DPG H441 DPG:1H44 DPG H442 DPG:2H44 DPG H443 DPG:3H44 DPG H451 DPG:1H45 DPG H452 DPG:2H45 DPG H461 DPG:1H46 DPG H462 DPG:2H46 DPG H471 DPG:1H47 DPG H472 DPG:2H47 DPG H491 DPG:1H49 DPG H492 DPG:2H49 DPG H493 DPG:3H49 DPG H501 DPG:1H50 DPG H502 DPG:2H50 DPG H511 DPG:1H51 DPG H512 DPG:2H51 DPG H521 DPG:1H52 DPG H522 DPG:2H52 DPG H541 DPG:1H54 DPG H542 DPG:2H54 DPG H543 DPG:3H54 DPG H551 DPG:1H55 DPG H552 DPG:2H55 DPG H561 DPG:1H56 DPG H562 DPG:2H56 DPG H571 DPG:1H57 DPG H572 DPG:2H57 DPG H591 DPG:1H59 DPG H592 DPG:2H59 DPG H593 DPG:3H59 DPG H601 DPG:1H60 DPG H602 DPG:2H60 DPG H603 DPG:3H60 DPG HM1 DPH:1HM DPH HM2 DPH:2HM DPH HM3 DPH:3HM DPH HB1 DPH:1HB DPH HB2 DPH:2HB DPH HC1 DPI:1HC DPI HC2 DPI:2HC DPI HC3 DPI:3HC DPI HN2 DPI:2HN DPI HC61 DPI:1HC6 DPI HC62 DPI:2HC6 DPI HC7 DPI:7HC DPI HA1 DPI:1HA DPI HB2 DPI:2HB DPI HD3 DPI:3HD DPI HB1 DPI:1HB DPI HD2 DPI:2HD DPI HE3 DPI:3HE DPI HN01 DPI:1HN0 DPI HC11 DPI:1HC1 DPI HC41 DPI:1HC4 DPI HO51 DPI:1HO5 DPI HC71 DPI:1HC7 DPI HC81 DPI:1HC8 DPI HC02 DPI:2HC0 DPI HN42 DPI:2HN4 DPI HC52 DPI:2HC5 DPI HN23 DPI:3HN2 DPI HC33 DPI:3HC3 DPI HC73 DPI:3HC7 DPI HC83 DPI:3HC8 DPI HN34 DPI:4HN3 DPI HC44 DPI:4HC4 DPI HC84 DPI:4HC8 DPI HC94 DPI:4HC9 DPI HC15 DPI:5HC1 DPI HO35 DPI:5HO3 DPI HN45 DPI:5HN4 DPI HC55 DPI:5HC5 DPI HC85 DPI:5HC8 DPI HC16 DPI:6HC1 DPI HC26 DPI:6HC2 DPI HC36 DPI:6HC3 DPI HC46 DPI:6HC4 DPI HN86 DPI:6HN8 DPI HC96 DPI:6HC9 DPI HO17 DPI:7HO1 DPI HC47 DPI:7HC4 DPI HC67 DPI:7HC6 DPI HO87 DPI:7HO8 DPI HO97 DPI:7HO9 DPI HC'1 DPI:1HC' DPI H2'1 DPI:1H2' DPI H2'2 DPI:2H2' DPI HC'4 DPI:4HC' DPI HC'5 DPI:5HC' DPI H7'1 DPI:1H7' DPI H7'2 DPI:2H7' DPI H7'3 DPI:3H7' DPI H8'1 DPI:1H8' DPI H8'2 DPI:2H8' DPI HO'9 DPI:9HO' DPI H1'1 DPI:1H1" DPI H1'2 DPI:2H1" DPI H1'3 DPI:3H1" DPI HC'2 DPI:2HC" DPI HC'3 DPI:3HC" DPI HCA4 DPI:4HC" DPI HCA5 DPI:5HC" DPI HC'6 DPI:6HC" DPI HOA9 DPI:9HO" DPI HOA1 DPI:1HOA DPI HCAA DPI:4HCA DPI HCAB DPI:5HCA DPI HCA6 DPI:6HCA DPI HCA7 DPI:7HCA DPI HCA8 DPI:8HCA DPI HOB1 DPI:1HOB DPI HOB2 DPI:2HOB DPI HOB3 DPI:3HOB DPI H4B1 DPI:1H4B DPI H4B2 DPI:2H4B DPI H4B3 DPI:3H4B DPI H281 DPI:1H28 DPI H282 DPI:2H28 DPI H311 DPI:1H31 DPI H312 DPI:2H31 DPI H2A1 DPI:1H2A DPI H2A2 DPI:2H2A DPI HOA3 DPI:3HOA DPI H121 DPK:1H12 DPK H122 DPK:2H12 DPK H101 DPK:1H10 DPK H102 DPK:2H10 DPK H9N1 DPK:1H9N DPK H9N2 DPK:2H9N DPK H9N3 DPK:3H9N DPK H8C1 DPK:1H8C DPK H8C2 DPK:2H8C DPK H8C3 DPK:3H8C DPK H7C1 DPK:1H7C DPK H7C2 DPK:2H7C DPK HB2 DPL:1HB DPL HB3 DPL:2HB DPL HD3 DPL:1HD DPL HD2 DPL:2HD DPL H5A1 DPM:1H5A DPM H5A2 DPM:2H5A DPM H7A1 DPM:1H7A DPM H7A2 DPM:2H7A DPM H8A1 DPM:1H8A DPM H8A2 DPM:2H8A DPM HCA1 DPM:1HCA DPM HCA2 DPM:2HCA DPM HCA3 DPM:3HCA DPM HOA2 DPM:2HOA DPM HOA4 DPM:4HOA DPM H4B1 DPM:1H4B DPM H4B2 DPM:2H4B DPM H5B1 DPM:1H5B DPM H5B2 DPM:2H5B DPM H7B1 DPM:1H7B DPM H7B2 DPM:2H7B DPM H8B1 DPM:1H8B DPM H8B2 DPM:2H8B DPM HCB1 DPM:1HCB DPM HCB2 DPM:2HCB DPM HOB2 DPM:2HOB DPM HOB4 DPM:4HOB DPM H2 DPN: HN2 DPN HB2 DPN:1HB DPN HB3 DPN:2HB DPN H DPP:1HN DPP H2 DPP:2HN DPP HB2 DPP:1HB DPP HB3 DPP:2HB DPP HG1 DPP:1HG DPP HG2 DPP:2HG DPP HB1 DPQ:1HB DPQ HB2 DPQ:2HB DPQ HD11 DPQ:1HD1 DPQ HD12 DPQ:2HD1 DPQ H DPR: HT1 DPR HB2 DPR:1HB DPR HB3 DPR:2HB DPR HG2 DPR:1HG DPR HG3 DPR:2HG DPR HD2 DPR:1HD DPR HD3 DPR:2HD DPR H71 DPS:1H7 DPS H72 DPS:2H7 DPS H131 DPS:1H13 DPS H132 DPS:2H13 DPS H151 DPS:1H15 DPS H152 DPS:2H15 DPS H181 DPS:1H18 DPS H182 DPS:2H18 DPS H201 DPS:1H20 DPS H202 DPS:2H20 DPS H111 DPT:1H11 DPT H112 DPT:2H11 DPT H113 DPT:3H11 DPT H121 DPT:1H12 DPT H122 DPT:2H12 DPT H123 DPT:3H12 DPT HA1 DPU:1HA DPU HA2 DPU:2HA DPU HB1 DPU:1HB DPU HB2 DPU:2HB DPU HG1 DPU:1HG DPU HG2 DPU:2HG DPU HD1 DPU:1HD DPU HD2 DPU:2HD DPU HE1 DPU:1HE DPU HE2 DPU:2HE DPU HS1 DPU:1HS DPU HS2 DPU:2HS DPU HS3 DPU:3HS DPU HN21 DPU:1HN2 DPU HN22 DPU:2HN2 DPU H171 DPX:1H17 DPX H172 DPX:2H17 DPX H151 DPX:1H15 DPX H152 DPX:2H15 DPX H153 DPX:3H15 DPX H61 DPX:1H6 DPX H62 DPX:2H6 DPX HND1 DPX:1HND DPX HND2 DPX:2HND DPX H141 DPX:1H14 DPX H142 DPX:2H14 DPX H143 DPX:3H14 DPX HOP2 DPY:2HOP DPY H2'1 DPY:1H2* DPY H2'2 DPY:2H2* DPY H5'1 DPY:1H5* DPY H5'2 DPY:2H5* DPY H4' DPY: H4* DPY H1' DPY: H1* DPY H3' DPY: H3* DPY HOP3 DPY:3HOP DPY H131 DPZ:1H13 DPZ H132 DPZ:2H13 DPZ H141 DPZ:1H14 DPZ H142 DPZ:2H14 DPZ H21 DQA:1H2 DQA H22 DQA:2H2 DQA H61 DQA:1H6 DQA H62 DQA:2H6 DQA HA1 DQB:1HA DQB HA2 DQB:2HA DQB HB1 DQB:1HB DQB HB2 DQB:2HB DQB HG1 DQB:1HG DQB HG2 DQB:2HG DQB HA21 DQB:1HA2 DQB HA22 DQB:2HA2 DQB H91 DQB:1H9 DQB H92 DQB:2H9 DQB H2M1 DQN:1H2M DQN H2M2 DQN:2H2M DQN H2M3 DQN:3H2M DQN H3M1 DQN:1H3M DQN H3M2 DQN:2H3M DQN H3M3 DQN:3H3M DQN H5M1 DQN:1H5M DQN H5M2 DQN:2H5M DQN H5M3 DQN:3H5M DQN H6M1 DQN:1H6M DQN H6M2 DQN:2H6M DQN H6M3 DQN:3H6M DQN H141 DQO:1H14 DQO H142 DQO:2H14 DQO H401 DQO:1H40 DQO H402 DQO:2H40 DQO H411 DQO:1H41 DQO H412 DQO:2H41 DQO H421 DQO:1H42 DQO H431 DQO:1H43 DQO H432 DQO:2H43 DQO H441 DQO:1H44 DQO H442 DQO:2H44 DQO H51 DQQ:1H5 DQQ H52 DQQ:2H5 DQQ H61 DQQ:1H6 DQQ H62 DQQ:2H6 DQQ H101 DQR:1H10 DQR H102 DQR:2H10 DQR H111 DQR:1H11 DQR H112 DQR:2H11 DQR H61A DQR:1H6 DQR H62 DQR:2H6 DQR H601 DQR:1H60 DQR H602 DQR:2H60 DQR H611 DQR:1H61 DQR H612 DQR:2H61 DQR HN41 DQU:1HN4 DQU HN42 DQU:2HN4 DQU HN21 DQU:1HN2 DQU HN22 DQU:2HN2 DQU HAJ1 DR0:1HAJ DR0 HAJ2 DR0:2HAJ DR0 HAJ3 DR0:3HAJ DR0 HAI1 DR0:1HAI DR0 HAI2 DR0:2HAI DR0 HAH1 DR0:1HAH DR0 HAH2 DR0:2HAH DR0 HAG1 DR0:1HAG DR0 HAG2 DR0:2HAG DR0 HAF1 DR0:1HAF DR0 HAF2 DR0:2HAF DR0 HAE1 DR0:1HAE DR0 HAE2 DR0:2HAE DR0 HAC1 DR0:1HAC DR0 HAC2 DR0:2HAC DR0 HAC3 DR0:3HAC DR0 HAK1 DR0:1HAK DR0 HAK2 DR0:2HAK DR0 HAK3 DR0:3HAK DR0 HAB1 DR0:1HAB DR0 HAB2 DR0:2HAB DR0 H181 DR1:1H18 DR1 H182 DR1:2H18 DR1 H183 DR1:3H18 DR1 HAB1 DR2:1HAB DR2 HAB2 DR2:2HAB DR2 HAB3 DR2:3HAB DR2 HAV1 DR2:1HAV DR2 HAV2 DR2:2HAV DR2 H1' DR2: H1* DR2 H5' DR2: H5* DR2 H6'1 DR2:1H6* DR2 H6'2 DR2:2H6* DR2 H6' DR2: H6* DR2 H4' DR2: H4* DR2 H3' DR2: H3* DR2 H2' DR2: H2* DR2 HAC1 DR2:1HAC DR2 HAC2 DR2:2HAC DR2 HAC3 DR2:3HAC DR2 HAC1 DR3:1HAC DR3 HAC2 DR3:2HAC DR3 HAC3 DR3:3HAC DR3 H2' DR3: H2* DR3 H3' DR3: H3* DR3 H4' DR3: H4* DR3 H5' DR3: H5* DR3 H6'1 DR3:1H6* DR3 H6'2 DR3:2H6* DR3 H6' DR3: H6* DR3 H1' DR3: H1* DR3 HAV1 DR3:1HAV DR3 HAV2 DR3:2HAV DR3 HAB1 DR3:1HAB DR3 HAB2 DR3:2HAB DR3 HAB3 DR3:3HAB DR3 HAA1 DR4:1HAA DR4 HAA2 DR4:2HAA DR4 HAA3 DR4:3HAA DR4 HAO1 DR4:1HAO DR4 HAO2 DR4:2HAO DR4 HAL1 DR4:1HAL DR4 HAL2 DR4:2HAL DR4 HAJ1 DR4:1HAJ DR4 HAJ2 DR4:2HAJ DR4 HAH1 DR4:1HAH DR4 HAH2 DR4:2HAH DR4 HAG1 DR4:1HAG DR4 HAG2 DR4:2HAG DR4 HAI1 DR4:1HAI DR4 HAI2 DR4:2HAI DR4 HAK1 DR4:1HAK DR4 HAK2 DR4:2HAK DR4 HAM1 DR4:1HAM DR4 HAM2 DR4:2HAM DR4 H61 DR4:1H6 DR4 H62 DR4:2H6 DR4 H61 DR5:1H6 DR5 H62 DR5:2H6 DR5 HAA1 DR5:1HAA DR5 HAA2 DR5:2HAA DR5 HAA3 DR5:3HAA DR5 HAJ1 DR5:1HAJ DR5 HAJ2 DR5:2HAJ DR5 HCY1 DR6:1HCY DR6 HCY2 DR6:2HCY DR6 HAA1 DR7:1HAA DR7 HAA2 DR7:2HAA DR7 HAA3 DR7:3HAA DR7 HAE1 DR7:1HAE DR7 HAE2 DR7:2HAE DR7 HAE3 DR7:3HAE DR7 HG21 DR7:1HG2 DR7 HG22 DR7:2HG2 DR7 HG23 DR7:3HG2 DR7 HG11 DR7:1HG1 DR7 HG12 DR7:2HG1 DR7 HG13 DR7:3HG1 DR7 HBA1 DR7:1HBA DR7 HBA2 DR7:2HBA DR7 HBC1 DR7:1HBC DR7 HBC2 DR7:2HBC DR7 HAH1 DR7:1HAH DR7 HAH2 DR7:2HAH DR7 HAH3 DR7:3HAH DR7 HAF1 DR7:1HAF DR7 HAF2 DR7:2HAF DR7 HAF3 DR7:3HAF DR7 HAG1 DR7:1HAG DR7 HAG2 DR7:2HAG DR7 HAG3 DR7:3HAG DR7 HAB1 DR7:1HAB DR7 HAB2 DR7:2HAB DR7 HAB3 DR7:3HAB DR7 HBB1 DR7:1HBB DR7 HBB2 DR7:2HBB DR7 HAJ1 DR8:1HAJ DR8 HAJ2 DR8:2HAJ DR8 HAJ3 DR8:3HAJ DR8 HAK1 DR8:1HAK DR8 HAK2 DR8:2HAK DR8 HAK3 DR8:3HAK DR8 HAA1 DR8:1HAA DR8 HAA2 DR8:2HAA DR8 HAA3 DR8:3HAA DR8 HAB1 DR8:1HAB DR8 HAB2 DR8:2HAB DR8 HAB3 DR8:3HAB DR8 HBX1 DR9:1HBX DR9 HBX2 DR9:2HBX DR9 HBX3 DR9:3HBX DR9 HBV1 DR9:1HBV DR9 HBV2 DR9:2HBV DR9 HBS1 DR9:1HBS DR9 HBS2 DR9:2HBS DR9 HBH1 DR9:1HBH DR9 HBH2 DR9:2HBH DR9 HAQ1 DR9:1HAQ DR9 HAQ2 DR9:2HAQ DR9 HAP1 DR9:1HAP DR9 HAP2 DR9:2HAP DR9 HAO1 DR9:1HAO DR9 HAO2 DR9:2HAO DR9 HAN1 DR9:1HAN DR9 HAN2 DR9:2HAN DR9 HAK1 DR9:1HAK DR9 HAK2 DR9:2HAK DR9 HAJ1 DR9:1HAJ DR9 HAJ2 DR9:2HAJ DR9 HAI1 DR9:1HAI DR9 HAI2 DR9:2HAI DR9 HAH1 DR9:1HAH DR9 HAH2 DR9:2HAH DR9 HAG1 DR9:1HAG DR9 HAG2 DR9:2HAG DR9 HAF1 DR9:1HAF DR9 HAF2 DR9:2HAF DR9 HAE1 DR9:1HAE DR9 HAE2 DR9:2HAE DR9 HAB1 DR9:1HAB DR9 HAB2 DR9:2HAB DR9 HBK1 DR9:1HBK DR9 HBK2 DR9:2HBK DR9 HBO1 DR9:1HBO DR9 HBO2 DR9:2HBO DR9 HBQ1 DR9:1HBQ DR9 HBQ2 DR9:2HBQ DR9 HBB1 DR9:1HBB DR9 HBB2 DR9:2HBB DR9 HBA1 DR9:1HBA DR9 HBA2 DR9:2HBA DR9 HAZ1 DR9:1HAZ DR9 HAZ2 DR9:2HAZ DR9 HAY1 DR9:1HAY DR9 HAY2 DR9:2HAY DR9 HAX1 DR9:1HAX DR9 HAX2 DR9:2HAX DR9 HAW1 DR9:1HAW DR9 HAW2 DR9:2HAW DR9 HAV1 DR9:1HAV DR9 HAV2 DR9:2HAV DR9 HAS1 DR9:1HAS DR9 HAS2 DR9:2HAS DR9 HAR1 DR9:1HAR DR9 HAR2 DR9:2HAR DR9 HBI1 DR9:1HBI DR9 HBI2 DR9:2HBI DR9 HBT1 DR9:1HBT DR9 HBT2 DR9:2HBT DR9 HBW1 DR9:1HBW DR9 HBW2 DR9:2HBW DR9 HBY1 DR9:1HBY DR9 HBY2 DR9:2HBY DR9 HBY3 DR9:3HBY DR9 H131 DRA:1H13 DRA H132 DRA:2H13 DRA H141 DRA:1H14 DRA H142 DRA:2H14 DRA H143 DRA:3H14 DRA H81 DRA:1H8 DRA H82 DRA:2H8 DRA H1' DRA: H1* DRA H2'1 DRA:1H2* DRA H2'2 DRA:2H2* DRA H3' DRA: H3* DRA H7'1 DRA:1H7* DRA H7'2 DRA:2H7* DRA H7'3 DRA:3H7* DRA H8'1 DRA:1H8* DRA H8'2 DRA:2H8* DRA H8'3 DRA:3H8* DRA H5' DRA: H5* DRA H6'1 DRA:1H6* DRA H6'2 DRA:2H6* DRA H6'3 DRA:3H6* DRA H4' DRA: H4* DRA H321 DRA:1H32 DRA H322 DRA:2H32 DRA HO16 DRA:6HO1 DRA H361 DRA:1H36 DRA H362 DRA:2H36 DRA H363 DRA:3H36 DRA H411 DRA:1H41 DRA H412 DRA:2H41 DRA H413 DRA:3H41 DRA H381 DRA:1H38 DRA H382 DRA:2H38 DRA H401 DRA:1H40 DRA H402 DRA:2H40 DRA H383 DRB:3H38 DRB H382 DRB:2H38 DRB H381 DRB:1H38 DRB H392 DRB:2H39 DRB H391 DRB:1H39 DRB H402 DRB:2H40 DRB H401 DRB:1H40 DRB H412 DRB:2H41 DRB H411 DRB:1H41 DRB H422 DRB:2H42 DRB H421 DRB:1H42 DRB H432 DRB:2H43 DRB H431 DRB:1H43 DRB H442 DRB:2H44 DRB H441 DRB:1H44 DRB H452 DRB:2H45 DRB H451 DRB:1H45 DRB H462 DRB:2H46 DRB H461 DRB:1H46 DRB H512 DRB:2H51 DRB H511 DRB:1H51 DRB H552 DRB:2H55 DRB H551 DRB:1H55 DRB H572 DRB:2H57 DRB H571 DRB:1H57 DRB H582 DRB:2H58 DRB H581 DRB:1H58 DRB H592 DRB:2H59 DRB H591 DRB:1H59 DRB H201 DRC:1H20 DRC H202 DRC:2H20 DRC H211 DRC:1H21 DRC H212 DRC:2H21 DRC H221 DRC:1H22 DRC H222 DRC:2H22 DRC H231 DRC:1H23 DRC H232 DRC:2H23 DRC H181 DRC:1H18 DRC H182 DRC:2H18 DRC H171 DRC:1H17 DRC H172 DRC:2H17 DRC HN91 DRC:1HN9 DRC HN92 DRC:2HN9 DRC HAA1 DRD:1HAA DRD HAA2 DRD:2HAA DRD HAB1 DRD:1HAB DRD HAB2 DRD:2HAB DRD HAC1 DRD:1HAC DRD HAC2 DRD:2HAC DRD HBL1 DRD:1HBL DRD HBL2 DRD:2HBL DRD HBM1 DRD:1HBM DRD HBM2 DRD:2HBM DRD HBN1 DRD:1HBN DRD HBN2 DRD:2HBN DRD HBN3 DRD:3HBN DRD HAL1 DRD:1HAL DRD HAL2 DRD:2HAL DRD HAL3 DRD:3HAL DRD HAK1 DRD:1HAK DRD HAK2 DRD:2HAK DRD HAK3 DRD:3HAK DRD HAA1 DRE:1HAA DRE HAA2 DRE:2HAA DRE HAB1 DRE:1HAB DRE HAB2 DRE:2HAB DRE HAC1 DRE:1HAC DRE HAC2 DRE:2HAC DRE HAD1 DRE:1HAD DRE HAD2 DRE:2HAD DRE HAE1 DRE:1HAE DRE HAE2 DRE:2HAE DRE HAF1 DRE:1HAF DRE HAF2 DRE:2HAF DRE HAG1 DRE:1HAG DRE HAG2 DRE:2HAG DRE HAI1 DRE:1HAI DRE HAI2 DRE:2HAI DRE HAJ1 DRE:1HAJ DRE HAJ2 DRE:2HAJ DRE HAK1 DRE:1HAK DRE HAK2 DRE:2HAK DRE HAL1 DRE:1HAL DRE HAL2 DRE:2HAL DRE HAM1 DRE:1HAM DRE HAM2 DRE:2HAM DRE HAN1 DRE:1HAN DRE HAN2 DRE:2HAN DRE HAO1 DRE:1HAO DRE HAO2 DRE:2HAO DRE H481 DRF:1H48 DRF H482 DRF:2H48 DRF H491 DRF:1H49 DRF H492 DRF:2H49 DRF H493 DRF:3H49 DRF H401 DRF:1H40 DRF H402 DRF:2H40 DRF H241 DRF:1H24 DRF H242 DRF:2H24 DRF H231 DRF:1H23 DRF H232 DRF:2H23 DRF HC51 DRG:1HC5 DRG HC52 DRG:2HC5 DRG HC61 DRG:1HC6 DRG HC62 DRG:2HC6 DRG H10C DRG:CH10 DRG HN31 DRG:1HN3 DRG HN32 DRG:2HN3 DRG HAB1 DRH:1HAB DRH HAB2 DRH:2HAB DRH HAB3 DRH:3HAB DRH HAO1 DRH:1HAO DRH HAO2 DRH:2HAO DRH HAC1 DRH:1HAC DRH HAC2 DRH:2HAC DRH HAC3 DRH:3HAC DRH HAT1 DRH:1HAT DRH HAT2 DRH:2HAT DRH HAV1 DRH:1HAV DRH HAV2 DRH:2HAV DRH HAU1 DRH:1HAU DRH HAU2 DRH:2HAU DRH HAS1 DRH:1HAS DRH HAS2 DRH:2HAS DRH HAR1 DRH:1HAR DRH HAR2 DRH:2HAR DRH HAQ1 DRH:1HAQ DRH HAQ2 DRH:2HAQ DRH HAP1 DRH:1HAP DRH HAP2 DRH:2HAP DRH HAN1 DRH:1HAN DRH HAN2 DRH:2HAN DRH HAA1 DRH:1HAA DRH HAA2 DRH:2HAA DRH HAA3 DRH:3HAA DRH H21 DRI:1H2 DRI H22 DRI:2H2 DRI H41 DRI:1H4 DRI H42 DRI:2H4 DRI H43 DRI:3H4 DRI H61 DRI:1H6 DRI H62 DRI:2H6 DRI H63 DRI:3H6 DRI HAB1 DRJ:1HAB DRJ HAB2 DRJ:2HAB DRJ HAB3 DRJ:3HAB DRJ HAO1 DRJ:1HAO DRJ HAO2 DRJ:2HAO DRJ HAC1 DRJ:1HAC DRJ HAC2 DRJ:2HAC DRJ HAC3 DRJ:3HAC DRJ HAT1 DRJ:1HAT DRJ HAT2 DRJ:2HAT DRJ HAV1 DRJ:1HAV DRJ HAV2 DRJ:2HAV DRJ HAU1 DRJ:1HAU DRJ HAU2 DRJ:2HAU DRJ HAS1 DRJ:1HAS DRJ HAS2 DRJ:2HAS DRJ HAR1 DRJ:1HAR DRJ HAR2 DRJ:2HAR DRJ HAQ1 DRJ:1HAQ DRJ HAQ2 DRJ:2HAQ DRJ HAP1 DRJ:1HAP DRJ HAP2 DRJ:2HAP DRJ HAN1 DRJ:1HAN DRJ HAN2 DRJ:2HAN DRJ HAA1 DRJ:1HAA DRJ HAA2 DRJ:2HAA DRJ HAA3 DRJ:3HAA DRJ HOP2 DRM:2HOP DRM HOP3 DRM:3HOP DRM H6'1 DRM:1H6* DRM H6'2 DRM:2H6* DRM H5' DRM: H5* DRM H4'1 DRM:1H4* DRM H4'2 DRM:2H4* DRM H3'1 DRM:1H3* DRM H3'2 DRM:2H3* DRM H2' DRM:1H2* DRM H2'' DRM:2H2* DRM H1' DRM: H1* DRM HOP2 DRP:2HOP DRP H2'1 DRP:1H2* DRP H2'2 DRP:2H2* DRP H5'1 DRP:1H5* DRP H5'2 DRP:2H5* DRP H4' DRP: H4* DRP H1' DRP: H1* DRP H3' DRP: H3* DRP HOP3 DRP:3HOP DRP HAX1 DRQ:1HAX DRQ HAX2 DRQ:2HAX DRQ HAX3 DRQ:3HAX DRQ HAW1 DRQ:1HAW DRQ HAW2 DRQ:2HAW DRQ HAR1 DRQ:1HAR DRQ HAR2 DRQ:2HAR DRQ HAQ1 DRQ:1HAQ DRQ HAQ2 DRQ:2HAQ DRQ HAP1 DRQ:1HAP DRQ HAP2 DRQ:2HAP DRQ HAP3 DRQ:3HAP DRQ HAL1 DRQ:1HAL DRQ HAL2 DRQ:2HAL DRQ HAK1 DRQ:1HAK DRQ HAK2 DRQ:2HAK DRQ HAH1 DRQ:1HAH DRQ HAH2 DRQ:2HAH DRQ HAG1 DRQ:1HAG DRQ HAG2 DRQ:2HAG DRQ HOP3 DRT:3HOP DRT HOP2 DRT:2HOP DRT H5' DRT:1H5* DRT H5'' DRT:2H5* DRT H4' DRT: H4* DRT H3' DRT: H3* DRT HO3' DRT:H3T DRT H2' DRT:1H2* DRT H2'' DRT:2H2* DRT H1' DRT: H1* DRT H71 DRT:1H5M DRT H72 DRT:2H5M DRT H73 DRT:3H5M DRT H31 DRU:1H3 DRU H32 DRU:2H3 DRU H41 DRU:1H4 DRU H42 DRU:2H4 DRU H51 DRU:1H5 DRU H61 DRU:1H6 DRU H77 DRU:7H7 DRU H88 DRU:8H8 DRU H91 DRU:1H9 DRU H92 DRU:2H9 DRU H101 DRU:1H10 DRU H102 DRU:2H10 DRU H111 DRU:1H11 DRU H112 DRU:2H11 DRU H121 DRU:1H12 DRU H122 DRU:2H12 DRU H271 DRU:1H27 DRU H272 DRU:2H27 DRU H281 DRU:1H28 DRU H282 DRU:2H28 DRU H291 DRU:1H29 DRU H292 DRU:2H29 DRU H301 DRU:1H30 DRU H302 DRU:2H30 DRU H331 DRU:31H3 DRU H332 DRU:32H3 DRU H33A DRU:1H33 DRU H33B DRU:2H33 DRU H341 DRU:1H34 DRU H342 DRU:2H34 DRU H351 DRU:1H35 DRU H352 DRU:2H35 DRU H361 DRU:1H36 DRU H362 DRU:2H36 DRU HG1 DRU:1HG DRU HG2 DRU:2HG DRU HD21 DRU:1HD2 DRU HD22 DRU:2HD2 DRU HE11 DRU:1HE1 DRU HE12 DRU:2HE1 DRU HE21 DRU:1HE2 DRU HBJ1 DRY:1HBJ DRY HBJ2 DRY:2HBJ DRY HAA1 DRY:1HAA DRY HAA2 DRY:2HAA DRY HAB1 DRY:1HAB DRY HAB2 DRY:2HAB DRY HAC1 DRY:1HAC DRY HAC2 DRY:2HAC DRY HBE1 DRY:1HBE DRY HBE2 DRY:2HBE DRY HBF1 DRY:1HBF DRY HBF2 DRY:2HBF DRY HBG1 DRY:1HBG DRY HBG2 DRY:2HBG DRY HBG3 DRY:3HBG DRY HOP2 DRZ:2HOP DRZ HOP3 DRZ:3HOP DRZ H5' DRZ:1H5* DRZ H5'' DRZ:2H5* DRZ H4' DRZ: H4* DRZ H4'O DRZ:OH4* DRZ H3' DRZ: H3* DRZ H2' DRZ:1H2* DRZ H2'' DRZ:2H2* DRZ H1' DRZ: H1* DRZ HO3' DRZ:H3T DRZ H111 DSA:1H11 DSA H112 DSA:2H11 DSA H131 DSA:1H13 DSA H132 DSA:2H13 DSA H133 DSA:3H13 DSA H261 DSA:1H26 DSA H262 DSA:2H26 DSA H263 DSA:3H26 DSA H271 DSA:1H27 DSA H272 DSA:2H27 DSA H273 DSA:3H27 DSA H281 DSA:1H28 DSA H282 DSA:2H28 DSA H283 DSA:3H28 DSA H151 DSA:1H15 DSA H152 DSA:2H15 DSA H153 DSA:3H15 DSA H21 DSB:1H2 DSB H22 DSB:2H2 DSB H31 DSB:1H3 DSB H32 DSB:2H3 DSB H51 DSB:1H5 DSB H52 DSB:2H5 DSB H11 DSB:1H1 DSB H61 DSB:1H6 DSB H62 DSB:2H6 DSB H81 DSB:1H8 DSB H82 DSB:2H8 DSB H91 DSB:1H9 DSB H92 DSB:2H9 DSB H111 DSB:1H11 DSB H11 DSC:1H1 DSC H12 DSC:2H1 DSC H21 DSC:1H2 DSC H22 DSC:2H2 DSC H31 DSC:1H3 DSC H32 DSC:2H3 DSC H41 DSC:1H4 DSC H42 DSC:2H4 DSC H51 DSC:1H5 DSC H52 DSC:2H5 DSC H61 DSC:1H6 DSC H62 DSC:2H6 DSC H71 DSC:1H7 DSC H72 DSC:2H7 DSC H81 DSC:1H8 DSC H82 DSC:2H8 DSC H91 DSC:1H9 DSC H92 DSC:2H9 DSC H101 DSC:1H10 DSC H102 DSC:2H10 DSC H111 DSC:1H11 DSC H112 DSC:2H11 DSC H121 DSC:1H12 DSC H122 DSC:2H12 DSC H123 DSC:3H12 DSC H21 DSD:1H2 DSD H22 DSD:2H2 DSD H31 DSD:1H3 DSD H32 DSD:2H3 DSD H41 DSD:1H4 DSD H42 DSD:2H4 DSD H51 DSD:1H5 DSD H52 DSD:2H5 DSD H61 DSD:1H6 DSD H62 DSD:2H6 DSD H91 DSD:1H9 DSD H92 DSD:2H9 DSD H93 DSD:3H9 DSD HN81 DSD:1HN8 DSD HN82 DSD:2HN8 DSD H DSE: HN DSE HB2 DSE:1HB DSE HB3 DSE:2HB DSE HN1 DSE:1HN DSE HN2 DSE:2HN DSE HN3 DSE:3HN DSE HG DSE: HOG DSE H2 DSG: HN2 DSG HB2 DSG:1HB DSG HB3 DSG:2HB DSG HD21 DSG:1HD2 DSG HD22 DSG:2HD2 DSG H111 DSI:1H11 DSI H112 DSI:2H11 DSI H131 DSI:1H13 DSI H132 DSI:2H13 DSI H133 DSI:3H13 DSI H151 DSI:1H15 DSI H152 DSI:2H15 DSI H153 DSI:3H15 DSI H181 DSM:1H18 DSM H182 DSM:2H18 DSM H183 DSM:3H18 DSM H171 DSM:1H17 DSM H172 DSM:2H17 DSM H161 DSM:1H16 DSM H162 DSM:2H16 DSM H151 DSM:1H15 DSM H152 DSM:2H15 DSM H51 DSM:1H5 DSM H52 DSM:2H5 DSM H61 DSM:1H6 DSM H62 DSM:2H6 DSM H2 DSN: HN2 DSN HB2 DSN:1HB DSN HB3 DSN:2HB DSN HG DSN: HOG DSN H1C1 DSO:1H1C DSO H1C2 DSO:2H1C DSO H3C1 DSO:1H3C DSO H3C2 DSO:2H3C DSO H4C1 DSO:1H4C DSO H4C2 DSO:2H4C DSO H6C1 DSO:1H6C DSO H6C2 DSO:2H6C DSO H7C1 DSO:1H7C DSO H7C2 DSO:2H7C DSO H101 DSO:1H10 DSO H102 DSO:2H10 DSO H221 DSO:1H22 DSO H222 DSO:2H22 DSO H223 DSO:3H22 DSO H231 DSO:1H23 DSO H232 DSO:2H23 DSO H233 DSO:3H23 DSO H261 DSO:1H26 DSO H262 DSO:2H26 DSO H271 DSO:1H27 DSO H272 DSO:2H27 DSO H281 DSO:1H28 DSO H282 DSO:2H28 DSO H291 DSO:1H29 DSO H292 DSO:2H29 DSO H301 DSO:1H30 DSO H302 DSO:2H30 DSO H311 DSO:1H31 DSO H312 DSO:2H31 DSO H321 DSO:1H32 DSO H322 DSO:2H32 DSO H331 DSO:1H33 DSO H332 DSO:2H33 DSO HB1 DSP:1HB DSP HB2 DSP:2HB DSP H21 DSR:1H2 DSR H22 DSR:2H2 DSR H61 DSR:1H6 DSR H62 DSR:2H6 DSR H63 DSR:3H6 DSR H11 DSS:1H1 DSS H12 DSS:2H1 DSS H13 DSS:3H1 DSS H21 DSS:1H2 DSS H22 DSS:2H2 DSS H41 DSS:1H4 DSS H42 DSS:2H4 DSS H43 DSS:3H4 DSS H101 DST:1H10 DST H102 DST:2H10 DST H111 DST:1H11 DST H112 DST:2H11 DST H131 DST:1H13 DST H132 DST:2H13 DST H133 DST:3H13 DST H141 DST:1H14 DST H142 DST:2H14 DST H143 DST:3H14 DST H2N1 DSU:1H2N DSU H2N2 DSU:2H2N DSU H3N1 DSU:1H3N DSU H3N2 DSU:2H3N DSU H4N1 DSU:1H4N DSU H4N2 DSU:2H4N DSU H5N1 DSU:1H5N DSU H5N2 DSU:2H5N DSU H6N1 DSU:1H6N DSU H6N2 DSU:2H6N DSU H7N1 DSU:1H7N DSU H7N2 DSU:2H7N DSU H8N1 DSU:1H8N DSU H8N2 DSU:2H8N DSU H9N1 DSU:1H9N DSU H9N2 DSU:2H9N DSU H101 DSU:1H10 DSU H102 DSU:2H10 DSU H103 DSU:3H10 DSU H6'1 DSU:1H6* DSU H6'2 DSU:2H6* DSU H5' DSU: H5* DSU H4' DSU: H4* DSU H3' DSU: H3* DSU H1'1 DSU:1H1* DSU H1'2 DSU:2H1* DSU H1' DSU: H1* DSU H61 DSU:1H6 DSU H62 DSU:2H6 DSU H63 DSU:3H6 DSU H101 DSX:1H10 DSX H102 DSX:2H10 DSX H171 DSX:1H17 DSX H172 DSX:2H17 DSX H173 DSX:3H17 DSX H221 DSX:1H22 DSX H222 DSX:2H22 DSX H241 DSX:1H24 DSX H242 DSX:2H24 DSX H243 DSX:3H24 DSX H251 DSX:1H25 DSX H252 DSX:2H25 DSX H253 DSX:3H25 DSX H281 DSX:1H28 DSX H282 DSX:2H28 DSX HM11 DSY:1HM1 DSY HM12 DSY:2HM1 DSY HM13 DSY:3HM1 DSY HM21 DSY:1HM2 DSY HM22 DSY:2HM2 DSY HM23 DSY:3HM2 DSY HOS2 DSY:2HOS DSY HOP3 DT:3HOP DT HOP2 DT:2HOP DT H5' DT:1H5* DT H5'' DT:2H5* DT H4' DT: H4* DT H3' DT: H3* DT HO3' DT:H3T DT H2' DT:1H2* DT H2'' DT:2H2* DT H1' DT: H1* DT H71 DT:1H5M DT H72 DT:2H5M DT H73 DT:3H5M DT H6N1 DT1:1H6N DT1 H6N2 DT1:2H6N DT1 H201 DT1:1H20 DT1 H202 DT1:2H20 DT1 H2C1 DT1:1H2C DT1 H2C2 DT1:2H2C DT1 H3C1 DT1:1H3C DT1 H3C2 DT1:2H3C DT1 H4C1 DT1:1H4C DT1 H4C2 DT1:2H4C DT1 H5C1 DT1:1H5C DT1 H5C2 DT1:2H5C DT1 H6C1 DT1:1H6C DT1 H6C2 DT1:2H6C DT1 H6N1 DT2:1H6N DT2 H6N2 DT2:2H6N DT2 H2C1 DT2:1H2C DT2 H2C2 DT2:2H2C DT2 H3C1 DT2:1H3C DT2 H3C2 DT2:2H3C DT2 H4C1 DT2:1H4C DT2 H4C2 DT2:2H4C DT2 H5C1 DT2:1H5C DT2 H5C2 DT2:2H5C DT2 H6C1 DT2:1H6C DT2 H6C2 DT2:2H6C DT2 H41 DT3:1H4 DT3 H42 DT3:2H4 DT3 H11 DT3:1H1 DT3 H12 DT3:2H1 DT3 H6N1 DT4:1H6N DT4 H6N2 DT4:2H6N DT4 H2C1 DT4:1H2C DT4 H2C2 DT4:2H2C DT4 H3C1 DT4:1H3C DT4 H3C2 DT4:2H3C DT4 H8N1 DT4:1H8N DT4 H8N2 DT4:2H8N DT4 H5C1 DT4:1H5C DT4 H5C2 DT4:2H5C DT4 H6C1 DT4:1H6C DT4 H6C2 DT4:2H6C DT4 H2C1 DT5:1H2C DT5 H2C2 DT5:2H2C DT5 H3C1 DT5:1H3C DT5 H3C2 DT5:2H3C DT5 H4C1 DT5:1H4C DT5 H4C2 DT5:2H4C DT5 H5C1 DT5:1H5C DT5 H5C2 DT5:2H5C DT5 H6C1 DT5:1H6C DT5 H6C2 DT5:2H6C DT5 H11 DT6:1H1 DT6 H12 DT6:2H1 DT6 H81 DT6:1H8 DT6 H82 DT6:2H8 DT6 H83 DT6:3H8 DT6 H101 DT6:1H10 DT6 H102 DT6:2H10 DT6 H103 DT6:3H10 DT6 H61 DT6:1H6 DT6 H62 DT6:2H6 DT6 H371 DT8:1H37 DT8 H372 DT8:2H37 DT8 H373 DT8:3H37 DT8 H361 DT8:1H36 DT8 H362 DT8:2H36 DT8 H363 DT8:3H36 DT8 H181 DT8:1H18 DT8 H182 DT8:2H18 DT8 H191 DT8:1H19 DT8 H192 DT8:2H19 DT8 H161 DT8:1H16 DT8 H162 DT8:2H16 DT8 H281 DT8:1H28 DT8 H282 DT8:2H28 DT8 H331 DT8:1H33 DT8 H332 DT8:2H33 DT8 H333 DT8:3H33 DT8 H301 DT8:1H30 DT8 H302 DT8:2H30 DT8 H311 DT8:1H31 DT8 H312 DT8:2H31 DT8 H621 DTA:1H62 DTA H622 DTA:2H62 DTA H1' DTA: H1* DTA H2' DTA: H2* DTA HO2' DTA:HO2* DTA H3' DTA: H3* DTA HO3' DTA:HO3* DTA H4' DTA: H4* DTA H5'1 DTA:1H5* DTA H5'2 DTA:2H5* DTA H5R1 DTA:1H5R DTA H5R2 DTA:2H5R DTA H611 DTA:1H61 DTA H612 DTA:2H61 DTA HCT1 DTB:1HCT DTB HCT2 DTB:2HCT DTB HCT3 DTB:3HCT DTB HCE1 DTB:1HCE DTB HCE2 DTB:2HCE DTB HCD1 DTB:1HCD DTB HCD2 DTB:2HCD DTB HCG1 DTB:1HCG DTB HCG2 DTB:2HCG DTB HCB1 DTB:1HCB DTB HCB2 DTB:2HCB DTB HCA1 DTB:1HCA DTB HCA2 DTB:2HCA DTB H151 DTC:1H15 DTC H152 DTC:2H15 DTC HAU1 DTF:1HAU DTF HAL1 DTF:1HAL DTF HAK1 DTF:1HAK DTF HAS1 DTF:1HAS DTF HAT1 DTF:1HAT DTF HAM1 DTF:1HAM DTF HAP1 DTF:1HAP DTF HBE1 DTF:1HBE DTF HBE2 DTF:2HBE DTF HBT1 DTF:1HBT DTF HAY1 DTF:1HAY DTF HAY2 DTF:2HAY DTF HAI1 DTF:1HAI DTF HAJ1 DTF:1HAJ DTF HBB1 DTF:1HBB DTF HBB2 DTF:2HBB DTF HA1 DTF:1HA DTF HB1 DTF:1HB DTF HB2 DTF:2HB DTF HAZ1 DTF:1HAZ DTF HAZ2 DTF:2HAZ DTF HAW1 DTF:1HAW DTF HAW2 DTF:2HAW DTF HAV1 DTF:1HAV DTF HAV2 DTF:2HAV DTF HAX1 DTF:1HAX DTF HAX2 DTF:2HAX DTF HBA1 DTF:1HBA DTF HBA2 DTF:2HBA DTF HBC1 DTF:1HBC DTF HBC2 DTF:2HBC DTF HBS1 DTF:1HBS DTF HAR1 DTF:1HAR DTF HAO1 DTF:1HAO DTF HAQ1 DTF:1HAQ DTF HAN1 DTF:1HAN DTF HBF1 DTF:1HBF DTF HBF2 DTF:2HBF DTF HA1 DTG:1HA DTG HA2 DTG:2HA DTG H11 DTG:1H1 DTG H12 DTG:2H1 DTG H13 DTG:3H1 DTG H21 DTG:1H2 DTG H22 DTG:2H2 DTG H23 DTG:3H2 DTG H31 DTG:1H3 DTG H32 DTG:2H3 DTG H33 DTG:3H3 DTG HG21 DTH:1HG2 DTH HG22 DTH:2HG2 DTH HG23 DTH:3HG2 DTH HG1 DTH: HOG DTH H11A DTI:1H1 DTI H12 DTI:2H1 DTI H13 DTI:3H1 DTI H51 DTI:1H5 DTI H52 DTI:2H5 DTI H53 DTI:3H5 DTI H1C1 DTL:1H1C DTL H1C2 DTL:2H1C DTL H4C1 DTL:1H4C DTL H4C2 DTL:2H4C DTL H5' DTM: H5* DTM H7' DTM: H7* DTM HC91 DTM:1HC9 DTM HC92 DTM:2HC9 DTM H311 DTM:1H31 DTM H312 DTM:2H31 DTM H313 DTM:3H31 DTM H411 DTM:1H41 DTM H412 DTM:2H41 DTM H413 DTM:3H41 DTM H511 DTM:1H51 DTM H512 DTM:2H51 DTM H513 DTM:3H51 DTM HCN1 DTM:1HCN DTM HCN2 DTM:2HCN DTM HCN3 DTM:3HCN DTM HN21 DTM:1HN2 DTM HN22 DTM:2HN2 DTM HN41 DTM:1HN4 DTM HN42 DTM:2HN4 DTM H12 DTO:2H1 DTO H11 DTO:1H1 DTO H2O1 DTO:1H2O DTO H3O1 DTO:1H3O DTO H42 DTO:2H4 DTO H41 DTO:1H4 DTO HOG2 DTP:2HOG DTP HOG3 DTP:3HOG DTP HOB2 DTP:2HOB DTP HOA2 DTP:2HOA DTP H5'1 DTP:1H5* DTP H5'2 DTP:2H5* DTP H4' DTP: H4* DTP H3' DTP: H3* DTP HO3' DTP:*HO3 DTP H2'1 DTP:1H2* DTP H2'2 DTP:2H2* DTP H1' DTP: H1* DTP HN61 DTP:1HN6 DTP HN62 DTP:2HN6 DTP H21 DTQ:1H2 DTQ H71 DTQ:1H7 DTQ H101 DTQ:1H10 DTQ H121 DTQ:1H12 DTQ H151 DTQ:1H15 DTQ H171 DTQ:1H17 DTQ H181 DTQ:1H18 DTQ H191 DTQ:1H19 DTQ H211 DTQ:1H21 DTQ H271 DTQ:1H27 DTQ H272 DTQ:2H27 DTQ H273 DTQ:3H27 DTQ H321 DTQ:1H32 DTQ H322 DTQ:2H32 DTQ H323 DTQ:3H32 DTQ HB2 DTR:1HB DTR HB3 DTR:2HB DTR H11 DTT:1H1 DTT H12 DTT:2H1 DTT H41 DTT:1H4 DTT H42 DTT:2H4 DTT H1C1 DTU:1H1C DTU H1C2 DTU:2H1C DTU H4C1 DTU:1H4C DTU H4C2 DTU:2H4C DTU H1C1 DTV:1H1C DTV H1C2 DTV:2H1C DTV H4C1 DTV:1H4C DTV H4C2 DTV:2H4C DTV H211 DTX:1H21 DTX H212 DTX:2H21 DTX H161 DTX:1H16 DTX H162 DTX:2H16 DTX H121 DTX:1H12 DTX H122 DTX:2H12 DTX H111 DTX:1H11 DTX H112 DTX:2H11 DTX H181 DTX:1H18 DTX H182 DTX:2H18 DTX H183 DTX:3H18 DTX H151 DTX:1H15 DTX H152 DTX:2H15 DTX H14O DTX:OH14 DTX HC71 DTX:1HC7 DTX HC72 DTX:2HC7 DTX HC11 DTX:1HC1 DTX HC12 DTX:2HC1 DTX H191 DTX:1H19 DTX H192 DTX:2H19 DTX H193 DTX:3H19 DTX HC61 DTX:1HC6 DTX HC62 DTX:2HC6 DTX HC41 DTX:1HC4 DTX HC42 DTX:2HC4 DTX HC21 DTX:1HC2 DTX HC22 DTX:2HC2 DTX H32O DTX:OH32 DTX H2 DTY: HN2 DTY HB2 DTY:1HB DTY HB3 DTY:2HB DTY HOP3 DU:3HOP DU HOP2 DU:2HOP DU H5' DU:1H5* DU H5'' DU:2H5* DU H4' DU: H4* DU H3' DU: H3* DU HO3' DU:H3T DU H2' DU:1H2* DU H2'' DU:2H2* DU H1' DU: H1* DU H61 DUC:1H6 DUC H62 DUC:2H6 DUC H51 DUC:1H5 DUC H52 DUC:2H5 DUC H1' DUD: H1* DUD H2'1 DUD:1H2* DUD H2'2 DUD:2H2* DUD H3' DUD: H3* DUD H4' DUD: H4* DUD HO3' DUD:*HO3 DUD H5'1 DUD:1H5* DUD H5'2 DUD:2H5* DUD HOA2 DUD:2HOA DUD HOB2 DUD:2HOB DUD HOB3 DUD:3HOB DUD H1' DUN: H1* DUN H2'1 DUN:1H2* DUN H2'2 DUN:2H2* DUN H3' DUN: H3* DUN H4' DUN: H4* DUN H5'1 DUN:1H5* DUN H5'2 DUN:2H5* DUN H101 DUO:1H10 DUO H102 DUO:2H10 DUO H103 DUO:3H10 DUO H121 DUO:1H12 DUO H122 DUO:2H12 DUO H251 DUO:1H25 DUO H252 DUO:2H25 DUO H253 DUO:3H25 DUO H271 DUO:1H27 DUO H272 DUO:2H27 DUO H273 DUO:3H27 DUO H291 DUO:1H29 DUO H292 DUO:2H29 DUO H293 DUO:3H29 DUO H331 DUO:1H33 DUO H332 DUO:2H33 DUO H333 DUO:3H33 DUO H371 DUO:1H37 DUO H372 DUO:2H37 DUO H373 DUO:3H37 DUO H1' DUP: H1* DUP H2'1 DUP:1H2* DUP H2'2 DUP:2H2* DUP H3' DUP: H3* DUP H4' DUP: H4* DUP H5'1 DUP:1H5* DUP H5'2 DUP:2H5* DUP H1' DUR: H1* DUR H2'1 DUR:1H2* DUR H2'2 DUR:2H2* DUR H3' DUR: H3* DUR H4' DUR: H4* DUR HO3' DUR:*HO3 DUR H5'1 DUR:1H5* DUR H5'2 DUR:2H5* DUR HO5' DUR:*HO5 DUR H1' DUT: H1* DUT H2'1 DUT:1H2* DUT H2'2 DUT:2H2* DUT H3' DUT: H3* DUT H4' DUT: H4* DUT HO3' DUT:*HO3 DUT H5'1 DUT:1H5* DUT H5'2 DUT:2H5* DUT HOA2 DUT:2HOA DUT HOB2 DUT:2HOB DUT HOG2 DUT:2HOG DUT HOG3 DUT:3HOG DUT H2'1 DUX:1H2' DUX H2'2 DUX:2H2' DUX H5'1 DUX:1H5' DUX H5'2 DUX:2H5' DUX H DVA:1HN DVA H2 DVA:2HN DVA HG11 DVA:1HG1 DVA HG12 DVA:2HG1 DVA HG13 DVA:3HG1 DVA HG21 DVA:1HG2 DVA HG22 DVA:2HG2 DVA HG23 DVA:3HG2 DVA HAY1 DVP:1HAY DVP HAY2 DVP:2HAY DVP HAY3 DVP:3HAY DVP HAU1 DVP:1HAU DVP HAU2 DVP:2HAU DVP HAT1 DVP:1HAT DVP HAT2 DVP:2HAT DVP HAI1 DVP:1HAI DVP HAI2 DVP:2HAI DVP HAH1 DVP:1HAH DVP HAH2 DVP:2HAH DVP H91 DVP:1H9 DVP H92 DVP:2H9 DVP HN21 DVP:1HN2 DVP HN22 DVP:2HN2 DVP HN41 DVP:1HN4 DVP HN42 DVP:2HN4 DVP HC21 DVR:1HC2 DVR HC22 DVR:2HC2 DVR H121 DVR:1H12 DVR H122 DVR:2H12 DVR H11A DVV:1H1 DVV H12 DVV:2H1 DVV H13 DVV:3H1 DVV H61A DVV:1H6 DVV H62A DVV:2H6 DVV H81 DVV:1H8 DVV H82 DVV:2H8 DVV H83 DVV:3H8 DVV H91 DVV:1H9 DVV H92 DVV:2H9 DVV H93 DVV:3H9 DVV H6'1 DVV:1H6' DVV H6'2 DVV:2H6' DVV H281 DVV:1H28 DVV H282 DVV:2H28 DVV H311 DVV:1H31 DVV H312 DVV:2H31 DVV H121 DW2:1H12 DW2 H131 DW2:1H13 DW2 H141 DW2:1H14 DW2 H161 DW2:1H16 DW2 H61 DW2:1H6 DW2 H51 DW2:1H5 DW2 H223 DW2:23H2 DW2 H228 DW2:28H2 DW2 H271 DW2:1H27 DW2 H226 DW2:26H2 DW2 H251 DW2:1H25 DW2 H241 DW2:1H24 DW2 H11 DX5:1H1 DX5 H12 DX5:2H1 DX5 H51 DX5:1H5 DX5 H52 DX5:2H5 DX5 HN22 DX9:2HN2 DX9 HN21 DX9:1HN2 DX9 HN12 DX9:2HN1 DX9 HN11 DX9:1HN1 DX9 H141 DX9:1H14 DX9 H142 DX9:2H14 DX9 HN31 DX9:1HN3 DX9 HN32 DX9:2HN3 DX9 H331 DX9:1H33 DX9 H332 DX9:2H33 DX9 H333 DX9:3H33 DX9 H21 DXA:1H2 DXA H22 DXA:2H2 DXA H11 DXA:1H1 DXA H12 DXA:2H1 DXA H13 DXA:3H1 DXA H51 DXA:1H5 DXA H52 DXA:2H5 DXA H53 DXA:3H5 DXA H71 DXA:1H7 DXA H72 DXA:2H7 DXA H73 DXA:3H7 DXA H81 DXA:1H8 DXA H82 DXA:2H8 DXA H91 DXA:1H9 DXA H92 DXA:2H9 DXA H93 DXA:3H9 DXA H21 DXB:1H2 DXB H22 DXB:2H2 DXB H22 DXC:2H2 DXC H21 DXC:1H2 DXC H52 DXC:2H5 DXC H51 DXC:1H5 DXC H62 DXC:2H6 DXC H61 DXC:1H6 DXC H72 DXC:2H7 DXC H71 DXC:1H7 DXC H82 DXC:2H8 DXC H81 DXC:1H8 DXC H142 DXC:2H14 DXC H141 DXC:1H14 DXC H152 DXC:2H15 DXC H151 DXC:1H15 DXC H162 DXC:2H16 DXC H161 DXC:1H16 DXC H183 DXC:3H18 DXC H182 DXC:2H18 DXC H181 DXC:1H18 DXC H1O1 DXC:1H1O DXC H203 DXC:3H20 DXC H202 DXC:2H20 DXC H201 DXC:1H20 DXC H212 DXC:2H21 DXC H211 DXC:1H21 DXC H222 DXC:2H22 DXC H221 DXC:1H22 DXC H243 DXC:3H24 DXC H242 DXC:2H24 DXC H241 DXC:1H24 DXC HOP2 DXD:2HOP DXD H5'1 DXD:1H5* DXD H5'2 DXD:2H5* DXD H4' DXD: H4* DXD H1' DXD: H1* DXD H6'1 DXD:1H6* DXD H6'2 DXD:2H6* DXD H7' DXD: H7* DXD H2'1 DXD:1H2* DXD H2'2 DXD:2H2* DXD H3' DXD: H3* DXD HO3' DXD:H3T DXD HOP3 DXD:3HOP DXD H41 DXE:1H4 DXE H42 DXE:2H4 DXE H43 DXE:3H4 DXE H31 DXE:1H3 DXE H32 DXE:2H3 DXE H21 DXE:1H2 DXE H22 DXE:2H2 DXE H11 DXE:1H1 DXE H12 DXE:2H1 DXE H13 DXE:3H1 DXE H21 DXG:1H2 DXG HO21 DXG:1HO2 DXG H31 DXG:1H3 DXG HO31 DXG:1HO3 DXG H41 DXG:1H4 DXG H42 DXG:2H4 DXG HO51 DXG:1HO5 DXG H51 DXG:1H5 DXG HOP2 DXN:2HOP DXN H5'1 DXN:1H5* DXN H5'2 DXN:2H5* DXN H4' DXN: H4* DXN H1' DXN: H1* DXN H6'1 DXN:1H6* DXN H6'2 DXN:2H6* DXN H7' DXN: H7* DXN H2'1 DXN:1H2* DXN H2'2 DXN:2H2* DXN H3' DXN: H3* DXN HO3' DXN:H3T DXN HOP3 DXN:3HOP DXN HC11 DXP:1HC1 DXP HC12 DXP:2HC1 DXP HC13 DXP:3HC1 DXP HOP2 DXP:2HOP DXP HOP1 DXP:1HOP DXP H211 DXT:1H21 DXT H212 DXT:2H21 DXT H411 DXT:1H41 DXT H412 DXT:2H41 DXT H413 DXT:3H41 DXT H421 DXT:1H42 DXT H422 DXT:2H42 DXT H423 DXT:3H42 DXT H611 DXT:1H61 DXT H612 DXT:2H61 DXT H613 DXT:3H61 DXT H1 DXX:1H DXX HB1 DXX:1HB DXX HB2 DXX:2HB DXX HB3 DXX:3HB DXX HZ22 DYB:2HZ2 DYB HZ23 DYB:3HZ2 DYB HZ32 DYB:2HZ3 DYB HZ33 DYB:3HZ3 DYB HZ12 DYB:2HZ1 DYB HZ13 DYB:3HZ1 DYB HH2 DYB:2HH DYB HH3 DYB:3HH DYB HQ2 DYB:2HQ DYB HQ3 DYB:3HQ DYB HI2 DYB:2HI DYB HI3 DYB:3HI DYB HK1 DYB:1HK DYB HK2 DYB:2HK DYB HK3 DYB:3HK DYB HB11 DYG:1HB1 DYG HB12 DYG:2HB1 DYG HN1 DYG:1HN DYG HN2 DYG:2HN DYG HA31 DYG:1HA3 DYG HA32 DYG:2HA3 DYG H71 DYM:1H7 DYM H72 DYM:2H7 DYM H91 DYM:1H9 DYM H92 DYM:2H9 DYM H111 DYM:1H11 DYM H112 DYM:2H11 DYM H113 DYM:3H11 DYM HAY1 DYP:1HAY DYP HAY2 DYP:2HAY DYP HAY3 DYP:3HAY DYP HAX1 DYP:1HAX DYP HAX2 DYP:2HAX DYP HAU1 DYP:1HAU DYP HAU2 DYP:2HAU DYP HAT1 DYP:1HAT DYP HAT2 DYP:2HAT DYP HAI1 DYP:1HAI DYP HAI2 DYP:2HAI DYP HAH1 DYP:1HAH DYP HAH2 DYP:2HAH DYP HAF1 DYP:1HAF DYP HAF2 DYP:2HAF DYP H91 DYP:1H9 DYP H92 DYP:2H9 DYP HN21 DYP:1HN2 DYP HN22 DYP:2HN2 DYP HN41 DYP:1HN4 DYP HN42 DYP:2HN4 DYP H961 DZ8:1H96 DZ8 H962 DZ8:2H96 DZ8 H963 DZ8:3H96 DZ8 H951 DZ8:1H95 DZ8 H952 DZ8:2H95 DZ8 H953 DZ8:3H95 DZ8 H931 DZ8:1H93 DZ8 H932 DZ8:2H93 DZ8 H921 DZ8:1H92 DZ8 H922 DZ8:2H92 DZ8 H911 DZ8:1H91 DZ8 H912 DZ8:2H91 DZ8 HN61 DZ8:1HN6 DZ8 HN62 DZ8:2HN6 DZ8 H811 DZ8:1H81 DZ8 H812 DZ8:2H81 DZ8 H7'1 DZ8:1H7' DZ8 H7'2 DZ8:2H7' DZ8 HN21 DZF:1HN2 DZF HN22 DZF:2HN2 DZF H91 DZF:1H9 DZF H92 DZF:2H9 DZF HB1 DZF:1HB DZF HB2 DZF:2HB DZF HG1 DZF:1HG DZF HG2 DZF:2HG DZF HOE2 DZF:2HOE DZF H6C1 DZN:1H6C DZN H6C2 DZN:2H6C DZN H171 DZP:1H17 DZP H172 DZP:2H17 DZP H201 DZP:1H20 DZP H202 DZP:2H20 DZP H203 DZP:3H20 DZP H11 DZZ:1H1 DZZ H12 DZZ:2H1 DZZ H13 DZZ:3H1 DZZ H21 DZZ:1H2 DZZ H22 DZZ:2H2 DZZ H23 DZZ:3H2 DZZ HOP2 E:2HOP E HOP3 E:3HOP E H5' E:1H5* E H5'' E:2H5* E H4' E: H4* E H3' E: H3* E HO3' E:*HO3 E H2' E:1H2* E H2'' E:2H2* E H1' E: H1* E H251 E04:1H25 E04 H252 E04:2H25 E04 H253 E04:3H25 E04 H241 E04:1H24 E04 H242 E04:2H24 E04 H243 E04:3H24 E04 H221 E04:1H22 E04 H222 E04:2H22 E04 H231 E04:1H23 E04 H232 E04:2H23 E04 H181 E04:1H18 E04 H182 E04:2H18 E04 H183 E04:3H18 E04 H151 E04:1H15 E04 H152 E04:2H15 E04 H161 E04:1H16 E04 H162 E04:2H16 E04 H111 E04:1H11 E04 H112 E04:2H11 E04 H121 E04:1H12 E04 H122 E04:2H12 E04 H281 E04:1H28 E04 H282 E04:2H28 E04 H61 E04:1H6 E04 H62 E04:2H6 E04 H71 E04:1H7 E04 H72 E04:2H7 E04 H51 E09:1H5 E09 H111 E09:1H11 E09 H112 E09:2H11 E09 H121 E09:1H12 E09 H122 E09:2H12 E09 H201 E09:1H20 E09 H202 E09:2H20 E09 H251 E09:1H25 E09 H252 E09:2H25 E09 H261 E09:1H26 E09 H262 E09:2H26 E09 H71 E09:1H7 E09 H72 E09:2H7 E09 H311 E09:1H31 E09 H312 E09:2H31 E09 H313 E09:3H31 E09 H9C1 E10:1H9C E10 H9C2 E10:2H9C E10 H131 E10:1H13 E10 H132 E10:2H13 E10 H141 E10:1H14 E10 H142 E10:2H14 E10 H241 E10:1H24 E10 H242 E10:2H24 E10 H361 E10:1H36 E10 H362 E10:2H36 E10 H381 E10:1H38 E10 H382 E10:2H38 E10 H391 E10:1H39 E10 H392 E10:2H39 E10 H411 E10:1H41 E10 H412 E10:2H41 E10 H631 E10:1H63 E10 H632 E10:2H63 E10 H641 E10:1H64 E10 H642 E10:2H64 E10 H651 E10:1H65 E10 H652 E10:2H65 E10 H661 E10:1H66 E10 H662 E10:2H66 E10 H671 E10:1H67 E10 H672 E10:2H67 E10 H681 E10:1H68 E10 H682 E10:2H68 E10 H691 E10:1H69 E10 H692 E10:2H69 E10 H701 E10:1H70 E10 H702 E10:2H70 E10 H141 E12:1H14 E12 H142 E12:2H14 E12 H241 E12:1H24 E12 H242 E12:2H24 E12 H9C1 E12:1H9C E12 H9C2 E12:2H9C E12 H131 E12:1H13 E12 H132 E12:2H13 E12 H631 E12:1H63 E12 H632 E12:2H63 E12 H361 E12:1H36 E12 H362 E12:2H36 E12 H381 E12:1H38 E12 H382 E12:2H38 E12 H391 E12:1H39 E12 H392 E12:2H39 E12 H411 E12:1H41 E12 H412 E12:2H41 E12 H641 E12:1H64 E12 H642 E12:2H64 E12 H651 E12:1H65 E12 H652 E12:2H65 E12 H661 E12:1H66 E12 H662 E12:2H66 E12 H671 E12:1H67 E12 H672 E12:2H67 E12 H681 E12:1H68 E12 H682 E12:2H68 E12 H691 E12:1H69 E12 H692 E12:2H69 E12 H701 E12:1H70 E12 H702 E12:2H70 E12 H711 E12:1H71 E12 H712 E12:2H71 E12 H721 E12:1H72 E12 H722 E12:2H72 E12 HN11 E1H:1HN1 E1H HA12 E1H:2HA1 E1H HB11 E1H:1HB1 E1H HB12 E1H:2HB1 E1H HB13 E1H:3HB1 E1H H3C1 E1P:1H3C E1P H3C2 E1P:2H3C E1P H2C1 E1P:1H2C E1P H2C2 E1P:2H2C E1P H1C1 E1P:1H1C E1P H1C2 E1P:2H1C E1P H5C1 E1P:1H5C E1P H5C2 E1P:2H5C E1P H4C1 E1P:1H4C E1P H4C2 E1P:2H4C E1P H8C1 E1P:1H8C E1P H8C2 E1P:2H8C E1P H9C1 E1P:1H9C E1P H9C2 E1P:2H9C E1P H9C3 E1P:3H9C E1P HOP2 E1X:2HOP E1X H101 E1X:1H10 E1X H102 E1X:2H10 E1X H111 E1X:1H11 E1X H112 E1X:2H11 E1X H113 E1X:3H11 E1X H2' E1X:1H2* E1X H2'' E1X:2H2* E1X H5' E1X:1H5* E1X H5'' E1X:2H5* E1X H4' E1X: H4* E1X H1' E1X: H1* E1X HO3' E1X:H3T E1X HOP3 E1X:3HOP E1X H91 E20:1H9 E20 H92 E20:2H9 E20 H101 E20:1H10 E20 H102 E20:2H10 E20 H121 E20:1H12 E20 H122 E20:2H12 E20 H131 E20:1H13 E20 H132 E20:2H13 E20 H151 E20:1H15 E20 H152 E20:2H15 E20 H161 E20:1H16 E20 H162 E20:2H16 E20 H171 E20:1H17 E20 H172 E20:2H17 E20 H261 E20:1H26 E20 H262 E20:2H26 E20 H263 E20:3H26 E20 H281 E20:1H28 E20 H282 E20:2H28 E20 H283 E20:3H28 E20 H61 E3G:1H6 E3G H62 E3G:2H6 E3G H71 E3G:1H7 E3G H72 E3G:2H7 E3G H111 E3G:1H11 E3G H112 E3G:2H11 E3G H121 E3G:1H12 E3G H122 E3G:2H12 E3G H151 E3G:1H15 E3G H152 E3G:2H15 E3G H161 E3G:1H16 E3G H162 E3G:2H16 E3G H181 E3G:1H18 E3G H182 E3G:2H18 E3G H183 E3G:3H18 E3G H3C1 E3O:1H3C E3O H3C2 E3O:2H3C E3O H4C1 E3O:1H4C E3O H4C2 E3O:2H4C E3O H6C1 E3O:1H6C E3O H6C2 E3O:2H6C E3O H6C3 E3O:3H6C E3O H9C1 E3O:1H9C E3O H9C2 E3O:2H9C E3O H141 E3O:1H14 E3O H142 E3O:2H14 E3O H151 E3O:1H15 E3O H152 E3O:2H15 E3O H261 E4D:1H26 E4D H262 E4D:2H26 E4D H271 E4D:1H27 E4D H272 E4D:2H27 E4D H291 E4D:1H29 E4D H292 E4D:2H29 E4D H301 E4D:1H30 E4D H302 E4D:2H30 E4D H311 E4D:1H31 E4D H312 E4D:2H31 E4D H321 E4D:1H32 E4D H322 E4D:2H32 E4D H331 E4D:1H33 E4D H332 E4D:2H33 E4D HAD1 E4H:1HAD E4H HAD2 E4H:2HAD E4H HAD3 E4H:3HAD E4H HAL1 E4H:1HAL E4H HAL2 E4H:2HAL E4H HAC1 E4H:1HAC E4H HAC2 E4H:2HAC E4H HAC3 E4H:3HAC E4H HAB1 E4H:1HAB E4H HAB2 E4H:2HAB E4H HAB3 E4H:3HAB E4H HAK1 E4H:1HAK E4H HAK2 E4H:2HAK E4H HAA1 E4H:1HAA E4H HAA2 E4H:2HAA E4H HAA3 E4H:3HAA E4H HAE1 E4H:1HAE E4H HAE2 E4H:2HAE E4H HAE3 E4H:3HAE E4H H111 E4N:1H11 E4N H112 E4N:2H11 E4N H121 E4N:1H12 E4N H122 E4N:2H12 E4N H123 E4N:3H12 E4N H211 E4N:1H21 E4N H212 E4N:2H21 E4N H221 E4N:1H22 E4N H222 E4N:2H22 E4N H223 E4N:3H22 E4N H311 E4N:1H31 E4N H312 E4N:2H31 E4N H321 E4N:1H32 E4N H322 E4N:2H32 E4N H323 E4N:3H32 E4N H411 E4N:1H41 E4N H412 E4N:2H41 E4N H421 E4N:1H42 E4N H422 E4N:2H42 E4N H423 E4N:3H42 E4N H41 E4P:1H4 E4P H42 E4P:2H4 E4P HOP2 E4P:2HOP E4P HOP3 E4P:3HOP E4P H21 E64:1H2 E64 H22 E64:2H2 E64 H71 E64:1H7 E64 H72 E64:2H7 E64 H91 E64:1H9 E64 H92 E64:2H9 E64 H93 E64:3H9 E64 H101 E64:1H10 E64 H102 E64:2H10 E64 H103 E64:3H10 E64 H121 E64:1H12 E64 H122 E64:2H12 E64 H131 E64:1H13 E64 H132 E64:2H13 E64 H141 E64:1H14 E64 H142 E64:2H14 E64 H151 E64:1H15 E64 H152 E64:2H15 E64 HN41 E64:1HN4 E64 HN42 E64:2HN4 E64 HN51 E64:1HN5 E64 HN52 E64:2HN5 E64 H21 E6C:1H2 E6C H22 E6C:2H2 E6C H111 E6C:1H11 E6C H112 E6C:2H11 E6C H121 E6C:1H12 E6C H122 E6C:2H12 E6C H141 E6C:1H14 E6C H142 E6C:2H14 E6C H143 E6C:3H14 E6C H151 E6C:1H15 E6C H152 E6C:2H15 E6C H153 E6C:3H15 E6C H191 E6C:1H19 E6C H192 E6C:2H19 E6C H211 E6C:1H21 E6C H212 E6C:2H21 E6C H213 E6C:3H21 E6C H221 E6C:1H22 E6C H222 E6C:2H22 E6C H223 E6C:3H22 E6C H251 E89:1H25 E89 H252 E89:2H25 E89 H141 E89:1H14 E89 H142 E89:2H14 E89 H151 E89:1H15 E89 H152 E89:2H15 E89 H231 E89:1H23 E89 H232 E89:2H23 E89 H233 E89:3H23 E89 H321 E97:1H32 E97 H322 E97:2H32 E97 H331 E97:1H33 E97 H332 E97:2H33 E97 H341 E97:1H34 E97 H342 E97:2H34 E97 H371 E97:1H37 E97 H372 E97:2H37 E97 H381 E97:1H38 E97 H382 E97:2H38 E97 H391 E97:1H39 E97 H392 E97:2H39 E97 H411 E97:1H41 E97 H412 E97:2H41 E97 H413 E97:3H41 E97 H421 E97:1H42 E97 H422 E97:2H42 E97 H423 E97:3H42 E97 H431 E97:1H43 E97 H432 E97:2H43 E97 H433 E97:3H43 E97 H441 E97:1H44 E97 H442 E97:2H44 E97 H443 E97:3H44 E97 H11 EA2:1H1 EA2 H12 EA2:2H1 EA2 H21 EA2:1H2 EA2 H22 EA2:2H2 EA2 HN31 EA2:1HN3 EA2 HN32 EA2:2HN3 EA2 H5A1 EA5:1H5A EA5 H5A2 EA5:2H5A EA5 H2A1 EA5:1H2A EA5 H2A2 EA5:2H2A EA5 H2A3 EA5:3H2A EA5 H4A1 EA5:1H4A EA5 H4A2 EA5:2H4A EA5 HN41 EA5:1HN4 EA5 HN42 EA5:2HN4 EA5 H1 EA5:1H EA5 H2 EA5:2H EA5 HB1 EA5:1HB EA5 HB2 EA5:2HB EA5 HG1 EA5:1HG EA5 HG2 EA5:2HG EA5 H91 EAA:1H9 EAA H92 EAA:2H9 EAA H101 EAA:1H10 EAA H102 EAA:2H10 EAA H103 EAA:3H10 EAA H111 EAA:1H11 EAA H112 EAA:2H11 EAA H121 EAA:1H12 EAA H122 EAA:2H12 EAA HN1 EAB:1HN EAB HN2 EAB:2HN EAB HA2 EAB:2HA EAB HA3 EAB:3HA EAB HM3 EAB:3HM EAB HM2 EAB:2HM EAB H11 EAD:1H1 EAD H12A EAD:2H1 EAD HN31 EAD:1HN3 EAD HN32 EAD:2HN3 EAD H111 EAD:1H11 EAD H112 EAD:2H11 EAD HN71 EAD:1HN7 EAD HN72 EAD:2HN7 EAD H281 EAD:1H28 EAD H282 EAD:2H28 EAD H291 EAD:1H29 EAD H292 EAD:2H29 EAD H293 EAD:3H29 EAD H61 EAL:1H6 EAL H62 EAL:2H6 EAL H71 EAL:1H7 EAL H72 EAL:2H7 EAL H8C1 EAL:1H8C EAL H8C2 EAL:2H8C EAL H101 EAL:1H10 EAL H102 EAL:2H10 EAL H103 EAL:3H10 EAL H141 EAL:1H14 EAL H142 EAL:2H14 EAL H151 EAL:1H15 EAL H152 EAL:2H15 EAL H11 EAP:1H1 EAP H21 EAP:1H2 EAP HN31 EAP:1HN3 EAP HN32 EAP:2HN3 EAP H21 EB1:1H2 EB1 H22A EB1:2H2 EB1 H41 EB1:1H4 EB1 H42 EB1:2H4 EB1 H91 EB1:1H9 EB1 H92 EB1:2H9 EB1 H111 EB1:1H11 EB1 H112 EB1:2H11 EB1 H121 EB1:1H12 EB1 H122 EB1:2H12 EB1 H151 EB1:1H15 EB1 H152 EB1:2H15 EB1 H161 EB1:1H16 EB1 H162 EB1:2H16 EB1 H181 EB1:1H18 EB1 H182 EB1:2H18 EB1 H183 EB1:3H18 EB1 H191 EB1:1H19 EB1 H192 EB1:2H19 EB1 H211 EB1:1H21 EB1 H212 EB1:2H21 EB1 H213 EB1:3H21 EB1 H261 EB1:1H26 EB1 H262 EB1:2H26 EB1 H281 EB1:1H28 EB1 H282 EB1:2H28 EB1 H301 EB1:1H30 EB1 H302 EB1:2H30 EB1 H303 EB1:3H30 EB1 H311 EB1:1H31 EB1 H312 EB1:2H31 EB1 H313 EB1:3H31 EB1 HCB1 EBA:1HCB EBA HCB2 EBA:2HCB EBA HCG1 EBA:1HCG EBA HCG2 EBA:2HCG EBA HCG3 EBA:3HCG EBA HB21 EBA:1HB2 EBA HB22 EBA:2HB2 EBA HCM1 EBA:1HCM EBA HCM2 EBA:2HCM EBA HCM3 EBA:3HCM EBA HCT1 EBA:1HCT EBA HCT2 EBA:2HCT EBA H61 EBG:1H6 EBG H62 EBG:2H6 EBG H71 EBG:1H7 EBG H72 EBG:2H7 EBG H81 EBG:1H8 EBG H82 EBG:2H8 EBG H101 EBG:1H10 EBG H102 EBG:2H10 EBG H71 EBP:1H7 EBP H72 EBP:2H7 EBP H81 EBP:1H8 EBP H82 EBP:2H8 EBP H83 EBP:3H8 EBP H91 EBP:1H9 EBP H92 EBP:2H9 EBP H101 EBP:1H10 EBP H102 EBP:2H10 EBP H103 EBP:3H10 EBP H111 EBP:1H11 EBP H112 EBP:2H11 EBP H121 EBP:1H12 EBP H122 EBP:2H12 EBP H123 EBP:3H12 EBP H211 EBS:1H21 EBS H212 EBS:2H21 EBS H221 EBS:1H22 EBS H222 EBS:2H22 EBS H223 EBS:3H22 EBS H241 EBS:1H24 EBS H242 EBS:2H24 EBS H251 EBS:1H25 EBS H252 EBS:2H25 EBS H253 EBS:3H25 EBS H22 EBW:2H2 EBW H21 EBW:1H2 EBW H52 EBW:2H5 EBW H51 EBW:1H5 EBW H62 EBW:2H6 EBW H61 EBW:1H6 EBW H132 EBW:2H13 EBW H131 EBW:1H13 EBW H203 EBW:3H20 EBW H202 EBW:2H20 EBW H201 EBW:1H20 EBW H213 EBW:3H21 EBW H212 EBW:2H21 EBW H211 EBW:1H21 EBW H222 EBW:2H22 EBW H221 EBW:1H22 EBW H242 EBW:2H24 EBW H241 EBW:1H24 EBW H253 EBW:3H25 EBW H252 EBW:2H25 EBW H251 EBW:1H25 EBW H263 EBW:3H26 EBW H262 EBW:2H26 EBW H261 EBW:1H26 EBW H282 EBW:2H28 EBW H281 EBW:1H28 EBW H292 EBW:2H29 EBW H291 EBW:1H29 EBW H9C1 ECA:1H9C ECA H9C2 ECA:2H9C ECA H8C1 ECA:1H8C ECA H8C2 ECA:2H8C ECA H7C1 ECA:1H7C ECA H7C2 ECA:2H7C ECA H211 ECG:1H21 ECG H212 ECG:2H21 ECG H261 ECG:1H26 ECG H262 ECG:2H26 ECG H181 ECG:1H18 ECG H182 ECG:2H18 ECG H11 ECG:1H1 ECG H12 ECG:2H1 ECG H13 ECG:3H1 ECG H141 ECG:1H14 ECG H142 ECG:2H14 ECG H143 ECG:3H14 ECG H8C1 ECN:1H8C ECN H8C2 ECN:2H8C ECN H191 ECN:1H19 ECN H192 ECN:2H19 ECN HC71 ECO:1HC7 ECO HC72 ECO:2HC7 ECO H111 ECO:1H11 ECO H112 ECO:2H11 ECO H121 ECO:1H12 ECO H122 ECO:2H12 ECO H151 ECO:1H15 ECO H152 ECO:2H15 ECO H161 ECO:1H16 ECO H162 ECO:2H16 ECO H17O ECO:OH17 ECO H181 ECO:1H18 ECO H182 ECO:2H18 ECO H183 ECO:3H18 ECO H191 ECO:1H19 ECO H192 ECO:2H19 ECO HN1 ECQ:1HN ECQ HN2 ECQ:2HN ECQ HMK1 ECQ:1HMK ECQ HMK2 ECQ:2HMK ECQ HMK3 ECQ:3HMK ECQ HB1 ECQ:1HB ECQ HB2 ECQ:2HB ECQ HAE1 ECQ:1HAE ECQ HAE2 ECQ:2HAE ECQ HD11 ECQ:1HD1 ECQ HD12 ECQ:2HD1 ECQ H111 ECS:1H11 ECS H112 ECS:2H11 ECS H121 ECS:1H12 ECS H122 ECS:2H12 ECS H181 ECS:1H18 ECS H182 ECS:2H18 ECS H183 ECS:3H18 ECS H151 ECS:1H15 ECS H152 ECS:2H15 ECS H161 ECS:1H16 ECS H162 ECS:2H16 ECS H6C1 ECS:1H6C ECS H6C2 ECS:2H6C ECS H7C1 ECS:1H7C ECS H7C2 ECS:2H7C ECS H11A ECT:1H1 ECT H12A ECT:2H1 ECT H61 ECT:1H6 ECT H62 ECT:2H6 ECT H181 ECT:1H18 ECT H182 ECT:2H18 ECT H183 ECT:3H18 ECT H231 ECT:1H23 ECT H232 ECT:2H23 ECT H321 ECT:1H32 ECT H322 ECT:2H32 ECT H323 ECT:3H32 ECT H371 ECT:1H37 ECT H372 ECT:2H37 ECT H381 ECT:1H38 ECT H382 ECT:2H38 ECT H431 ECT:1H43 ECT H432 ECT:2H43 ECT H433 ECT:3H43 ECT H491 ECT:1H49 ECT H492 ECT:2H49 ECT H493 ECT:3H49 ECT H511 ECT:1H51 ECT H512 ECT:2H51 ECT H513 ECT:3H51 ECT H541 ECT:1H54 ECT H542 ECT:2H54 ECT HOP2 EDA:2HOP EDA HOP3 EDA:3HOP EDA H2' EDA:1H2* EDA H2'' EDA:2H2* EDA H5' EDA:1H5* EDA H5'' EDA:2H5* EDA H4' EDA: H4* EDA H1' EDA: H1* EDA H3' EDA: H3* EDA HO3' EDA:H3T EDA HOP2 EDC:2HOP EDC HOP3 EDC:3HOP EDC H5' EDC:1H5* EDC H5'' EDC:2H5* EDC H4' EDC: H4* EDC H1' EDC: H1* EDC H2' EDC:1H2* EDC H2'' EDC:2H2* EDC H3' EDC: H3* EDC HO3' EDC:*HO3 EDC H21 EDE:1H2 EDE H22 EDE:2H2 EDE H101 EDE:1H10 EDE H102 EDE:2H10 EDE H111 EDE:1H11 EDE H112 EDE:2H11 EDE H121 EDE:1H12 EDE H122 EDE:2H12 EDE H151 EDE:1H15 EDE H152 EDE:2H15 EDE H181 EDE:1H18 EDE H182 EDE:2H18 EDE H211 EDE:1H21 EDE H212 EDE:2H21 EDE H221 EDE:1H22 EDE H222 EDE:2H22 EDE H231 EDE:1H23 EDE H232 EDE:2H23 EDE H251 EDE:1H25 EDE H252 EDE:2H25 EDE H261 EDE:1H26 EDE H262 EDE:2H26 EDE H271 EDE:1H27 EDE H272 EDE:2H27 EDE H281 EDE:1H28 EDE H282 EDE:2H28 EDE H311 EDE:1H31 EDE H312 EDE:2H31 EDE H331 EDE:1H33 EDE H332 EDE:2H33 EDE H451 EDE:1H45 EDE H452 EDE:2H45 EDE H461 EDE:1H46 EDE H462 EDE:2H46 EDE H501 EDE:1H50 EDE H502 EDE:2H50 EDE H551 EDE:1H55 EDE H552 EDE:2H55 EDE H11 EDO:1H1 EDO H12 EDO:2H1 EDO H21 EDO:1H2 EDO H22 EDO:2H2 EDO H71 EDR:1H7 EDR H72 EDR:2H7 EDR H73 EDR:3H7 EDR H81 EDR:1H8 EDR H82 EDR:2H8 EDR H83 EDR:3H8 EDR H91 EDR:1H9 EDR H92 EDR:2H9 EDR H101 EDR:1H10 EDR H102 EDR:2H10 EDR H103 EDR:3H10 EDR H041 EDT:1H04 EDT H042 EDT:2H04 EDT H021 EDT:1H02 EDT H022 EDT:2H02 EDT H061 EDT:1H06 EDT H062 EDT:2H06 EDT H071 EDT:1H07 EDT H072 EDT:2H07 EDT H091 EDT:1H09 EDT H092 EDT:2H09 EDT H111 EDT:1H11 EDT H112 EDT:2H11 EDT HN3U EEB:UHN3 EEB H5U EEB: UH5 EEB H6U EEB: UH6 EEB H1D EEB:UH1* EEB H2D EEB:UH2* EEB HO2U EEB:UHO2 EEB H3D EEB:UH3* EEB H4D EEB:UH4* EEB HO3U EEB:UHO3 EEB H5'1 EEB:1H5* EEB H5'2 EEB:2H5* EEB HOA2 EEB:2HOA EEB HOB2 EEB:2HOB EEB H61 EEB:1H6 EEB H62 EEB:2H6 EEB H81 EEB:1H8 EEB H82 EEB:2H8 EEB H83 EEB:3H8 EEB H2E EEB: EH2 EEB HE31 EEB:1HE3 EEB HE32 EEB:2HE3 EEB HE41 EEB:1HE4 EEB HE42 EEB:2HE4 EEB HE43 EEB:3HE4 EEB HO2E EEB:EHO2 EEB H61 EED:1H6 EED H62 EED:2H6 EED H71 EED:1H7 EED H72 EED:2H7 EED H151 EED:1H15 EED H152 EED:2H15 EED H161 EED:1H16 EED H162 EED:2H16 EED H181 EED:1H18 EED H182 EED:2H18 EED H183 EED:3H18 EED H121 EED:1H12 EED H122 EED:2H12 EED H191 EED:1H19 EED H192 EED:2H19 EED H211 EED:1H21 EED H212 EED:2H21 EED H213 EED:3H21 EED H21 EEE:1H2 EEE H22 EEE:2H2 EEE H23 EEE:3H2 EEE H31 EEE:1H3 EEE H32 EEE:2H3 EEE H41 EEE:1H4 EEE H42 EEE:2H4 EEE H43 EEE:3H4 EEE H EFC:1HN EFC H2 EFC:2HN EFC HB2 EFC:1HB EFC HB3 EFC:2HB EFC H11 EFC:1H1 EFC H12 EFC:2H1 EFC H21 EFC:1H2 EFC H22 EFC:2H2 EFC H121 EFS:1H12 EFS H122 EFS:2H12 EFS H123 EFS:3H12 EFS H111 EFS:1H11 EFS H112 EFS:2H11 EFS H101 EFZ:1H10 EFZ H111 EFZ:1H11 EFZ H112 EFZ:2H11 EFZ H121 EFZ:1H12 EFZ H122 EFZ:2H12 EFZ HN11 EG1:1HN1 EG1 HN12 EG1:2HN1 EG1 H81 EG1:1H8 EG1 H82 EG1:2H8 EG1 H91 EG1:1H9 EG1 H92 EG1:2H9 EG1 H101 EG1:1H10 EG1 H102 EG1:2H10 EG1 H111 EG1:1H11 EG1 H112 EG1:2H11 EG1 H121 EG1:1H12 EG1 H122 EG1:2H12 EG1 H131 EG1:1H13 EG1 H132 EG1:2H13 EG1 H151 EG1:1H15 EG1 H152 EG1:2H15 EG1 HN41 EG1:1HN4 EG1 HN42 EG1:2HN4 EG1 HN11 EG2:1HN1 EG2 HN12 EG2:2HN1 EG2 H81 EG2:1H8 EG2 H82 EG2:2H8 EG2 H91 EG2:1H9 EG2 H92 EG2:2H9 EG2 H101 EG2:1H10 EG2 H102 EG2:2H10 EG2 H111 EG2:1H11 EG2 H112 EG2:2H11 EG2 H121 EG2:1H12 EG2 H122 EG2:2H12 EG2 H131 EG2:1H13 EG2 H132 EG2:2H13 EG2 HN31 EG2:1HN3 EG2 HN32 EG2:2HN3 EG2 HN11 EG3:1HN1 EG3 HN12 EG3:2HN1 EG3 H81 EG3:1H8 EG3 H82 EG3:2H8 EG3 H91 EG3:1H9 EG3 H92 EG3:2H9 EG3 H101 EG3:1H10 EG3 H102 EG3:2H10 EG3 H111 EG3:1H11 EG3 H112 EG3:2H11 EG3 H121 EG3:1H12 EG3 H122 EG3:2H12 EG3 H131 EG3:1H13 EG3 H132 EG3:2H13 EG3 HN41 EG3:1HN4 EG3 HN42 EG3:2HN4 EG3 H161 EG3:1H16 EG3 H162 EG3:2H16 EG3 H21 EGC:1H2 EGC H22 EGC:2H2 EGC H31A EGC:1H3 EGC H32 EGC:2H3 EGC H51 EGC:1H5 EGC H52 EGC:2H5 EGC H61 EGC:1H6 EGC H62 EGC:2H6 EGC H81 EGC:1H8 EGC H82 EGC:2H8 EGC H91 EGC:1H9 EGC H92 EGC:2H9 EGC H111 EGC:1H11 EGC H112 EGC:2H11 EGC H121 EGC:1H12 EGC H122 EGC:2H12 EGC H141 EGC:1H14 EGC H142 EGC:2H14 EGC H151 EGC:1H15 EGC H152 EGC:2H15 EGC H171 EGC:1H17 EGC H172 EGC:2H17 EGC H181 EGC:1H18 EGC H182 EGC:2H18 EGC H201 EGC:1H20 EGC H202 EGC:2H20 EGC H211 EGC:1H21 EGC H212 EGC:2H21 EGC H231 EGC:1H23 EGC H232 EGC:2H23 EGC H241 EGC:1H24 EGC H242 EGC:2H24 EGC H261 EGC:1H26 EGC H262 EGC:2H26 EGC H271 EGC:1H27 EGC H272 EGC:2H27 EGC H361 EGC:1H36 EGC H362 EGC:2H36 EGC H363 EGC:3H36 EGC H371 EGC:1H37 EGC H372 EGC:2H37 EGC H373 EGC:3H37 EGC H381 EGC:1H38 EGC H382 EGC:2H38 EGC H401 EGC:1H40 EGC H402 EGC:2H40 EGC H403 EGC:3H40 EGC H411 EGC:1H41 EGC H412 EGC:2H41 EGC H413 EGC:3H41 EGC H421 EGC:1H42 EGC H422 EGC:2H42 EGC H423 EGC:3H42 EGC HG1 EGD:1HG EGD HG2 EGD:2HG EGD HG3 EGD:3HG EGD HD1 EGD:1HD EGD HD2 EGD:2HD EGD HH21 EGD:1HH2 EGD HH22 EGD:2HH2 EGD H11 EGL:1H1 EGL H12 EGL:2H1 EGL H21 EGL:1H2 EGL H22 EGL:2H2 EGL HC41 EGT:1HC4 EGT HC42 EGT:2HC4 EGT HA1 EH5:1HA EH5 HB1 EH5:1HB EH5 HB2 EH5:2HB EH5 HD11 EH5:1HD1 EH5 HD21 EH5:1HD2 EH5 HE11 EH5:1HE1 EH5 HE21 EH5:1HE2 EH5 HZ1 EH5:1HZ EH5 HN21 EH5:1HN2 EH5 H11 EH5:1H1 EH5 HB11 EH5:1HB1 EH5 HB12 EH5:2HB1 EH5 HO11 EH5:1HO1 EH5 H31 EH5:1H3 EH5 H32 EH5:2H3 EH5 H41 EH5:1H4 EH5 H42 EH5:2H4 EH5 H61 EH5:1H6 EH5 H62 EH5:2H6 EH5 H71 EH5:1H7 EH5 H72 EH5:2H7 EH5 H101 EH5:1H10 EH5 H221 EH5:1H22 EH5 H321 EH5:1H32 EH5 H261 EH5:1H26 EH5 H111 EH5:1H11 EH5 H112 EH5:2H11 EH5 H231 EH5:1H23 EH5 H232 EH5:2H23 EH5 H151 EH5:1H15 EH5 H191 EH5:1H19 EH5 H331 EH5:1H33 EH5 H332 EH5:2H33 EH5 H271 EH5:1H27 EH5 H81 EH5:1H8 EH5 H82 EH5:2H8 EH5 H161 EH5:1H16 EH5 H341 EH5:1H34 EH5 H311 EH5:1H31 EH5 H312 EH5:2H31 EH5 H313 EH5:3H31 EH5 H371 EH5:1H37 EH5 H372 EH5:2H37 EH5 H373 EH5:3H37 EH5 H361 EH5:1H36 EH5 H362 EH5:2H36 EH5 H131 EH5:1H13 EH5 H251 EH5:1H25 EH5 H171 EH5:1H17 EH5 H351 EH5:1H35 EH5 H291 EH5:1H29 EH5 HBK1 EHA:1HBK EHA HBK2 EHA:2HBK EHA HBL1 EHA:1HBL EHA HBL2 EHA:2HBL EHA HBM1 EHA:1HBM EHA HBM2 EHA:2HBM EHA HBM3 EHA:3HBM EHA HBI1 EHA:1HBI EHA HBI2 EHA:2HBI EHA HBH1 EHA:1HBH EHA HBH2 EHA:2HBH EHA HBG1 EHA:1HBG EHA HBG2 EHA:2HBG EHA HA1 EHA:1HA EHA HA2 EHA:2HA EHA H191 EHD:1H19 EHD H192 EHD:2H19 EHD H251 EHD:1H25 EHD H252 EHD:2H25 EHD H311 EHD:1H31 EHD H312 EHD:2H31 EHD H313 EHD:3H31 EHD H111 EHD:1H11 EHD H112 EHD:2H11 EHD H41 EHM:1H4 EHM H42 EHM:2H4 EHM HN1 EHP:1HN EHP HN2 EHP:2HN EHP HB1 EHP:1HB EHP HB2 EHP:2HB EHP HAA1 EI1:1HAA EI1 HAA2 EI1:2HAA EI1 HAA3 EI1:3HAA EI1 HAK1 EI1:1HAK EI1 HAK2 EI1:2HAK EI1 H21 EIC:1H2 EIC H22 EIC:2H2 EIC H31 EIC:1H3 EIC H32 EIC:2H3 EIC H41 EIC:1H4 EIC H42 EIC:2H4 EIC H51 EIC:1H5 EIC H52 EIC:2H5 EIC H61 EIC:1H6 EIC H62 EIC:2H6 EIC H71 EIC:1H7 EIC H72 EIC:2H7 EIC H81 EIC:1H8 EIC H82 EIC:2H8 EIC H91 EIC:1H9 EIC H1O1 EIC:1H1O EIC H111 EIC:1H11 EIC H112 EIC:2H11 EIC H121 EIC:1H12 EIC H131 EIC:1H13 EIC H141 EIC:1H14 EIC H142 EIC:2H14 EIC H151 EIC:1H15 EIC H152 EIC:2H15 EIC H161 EIC:1H16 EIC H162 EIC:2H16 EIC H171 EIC:1H17 EIC H172 EIC:2H17 EIC H181 EIC:1H18 EIC H182 EIC:2H18 EIC H183 EIC:3H18 EIC H31 EIN:1H3 EIN H32 EIN:2H3 EIN H33 EIN:3H3 EIN H121 EIN:1H12 EIN H122 EIN:2H12 EIN H123 EIN:3H12 EIN H131 EIN:1H13 EIN H132 EIN:2H13 EIN H133 EIN:3H13 EIN H101 EIP:1H10 EIP H102 EIP:2H10 EIP H111 EIP:1H11 EIP H112 EIP:2H11 EIP H131 EIP:1H13 EIP H132 EIP:2H13 EIP H141 EIP:1H14 EIP H142 EIP:2H14 EIP H143 EIP:3H14 EIP HOP3 EIT:3HOP EIT HOP2 EIT:2HOP EIT H5' EIT:1H5* EIT H5'' EIT:2H5* EIT H4' EIT: H4* EIT H1' EIT: H1* EIT H71 EIT:1H5M EIT H72 EIT:2H5M EIT H73 EIT:3H5M EIT H2' EIT: H2* EIT HB'1 EIT:1HB' EIT HB'2 EIT:2HB' EIT HC'1 EIT:1HC' EIT HC'2 EIT:2HC' EIT H3' EIT: H3* EIT HO3' EIT:H3T EIT HC61 EJT:1HC6 EJT HC62 EJT:2HC6 EJT HX61 EJT:1HX6 EJT HX62 EJT:2HX6 EJT HCB1 EJT:1HCB EJT HCB2 EJT:2HCB EJT HCG1 EJT:1HCG EJT HCG2 EJT:2HCG EJT HCDA EJT:1HCD EJT HCDB EJT:2HCD EJT HCE1 EJT:1HCE EJT HCE2 EJT:2HCE EJT HXG1 EJT:1HXG EJT HXG2 EJT:2HXG EJT HXD1 EJT:1HXD EJT HXD2 EJT:2HXD EJT HXE1 EJT:1HXE EJT HXE2 EJT:2HXE EJT HN1 EKE:1HN EKE HN2 EKE:2HN EKE HB1 EKE:1HB EKE HB2 EKE:2HB EKE HG1 EKE:1HG EKE HG2 EKE:2HG EKE HMK1 EKE:1HMK EKE HMK2 EKE:2HMK EKE HMK3 EKE:3HMK EKE H111 EL:1H11 EL H112 EL:2H11 EL H113 EL:3H11 EL H151 EL:1H15 EL H152 EL:2H15 EL H153 EL:3H15 EL HA1 ELA:1HA ELA HA2 ELA:2HA ELA H31 ELA:1H3 ELA H32 ELA:2H3 ELA H41 ELA:1H4 ELA H42 ELA:2H4 ELA H51 ELA:1H5 ELA H52 ELA:2H5 ELA H61 ELA:1H6 ELA H62 ELA:2H6 ELA H71 ELA:1H7 ELA H72 ELA:2H7 ELA H81 ELA:1H8 ELA H82 ELA:2H8 ELA H111 ELA:1H11 ELA H112 ELA:2H11 ELA H121 ELA:1H12 ELA H122 ELA:2H12 ELA H131 ELA:1H13 ELA H132 ELA:2H13 ELA H141 ELA:1H14 ELA H142 ELA:2H14 ELA H151 ELA:1H15 ELA H152 ELA:2H15 ELA H161 ELA:1H16 ELA H162 ELA:2H16 ELA H171 ELA:1H17 ELA H172 ELA:2H17 ELA H181 ELA:1H18 ELA H182 ELA:2H18 ELA H183 ELA:3H18 ELA HN11 ELD:1HN1 ELD HN12 ELD:2HN1 ELD H21 ELD:1H2 ELD H22 ELD:2H2 ELD H31 ELD:1H3 ELD H32 ELD:2H3 ELD H41 ELD:1H4 ELD H42 ELD:2H4 ELD H51 ELD:1H5 ELD H52 ELD:2H5 ELD H61 ELD:1H6 ELD H62 ELD:2H6 ELD H71 ELD:1H7 ELD H72 ELD:2H7 ELD H81 ELD:1H8 ELD H82 ELD:2H8 ELD H111 ELD:1H11 ELD H112 ELD:2H11 ELD H121 ELD:1H12 ELD H122 ELD:2H12 ELD H131 ELD:1H13 ELD H132 ELD:2H13 ELD H141 ELD:1H14 ELD H142 ELD:2H14 ELD H151 ELD:1H15 ELD H152 ELD:2H15 ELD H161 ELD:1H16 ELD H162 ELD:2H16 ELD H171 ELD:1H17 ELD H172 ELD:2H17 ELD H181 ELD:1H18 ELD H182 ELD:2H18 ELD H183 ELD:3H18 ELD H171 ELI:1H17 ELI H172 ELI:2H17 ELI H173 ELI:3H17 ELI H181 ELI:1H18 ELI H182 ELI:2H18 ELI H191 ELI:1H19 ELI H192 ELI:2H19 ELI H201 ELI:1H20 ELI H202 ELI:2H20 ELI H231 ELI:1H23 ELI H232 ELI:2H23 ELI H261 ELI:1H26 ELI H262 ELI:2H26 ELI HA11 ELP:1HA1 ELP HA12 ELP:2HA1 ELP HA13 ELP:3HA1 ELP H2A1 ELP:1H2A ELP H2A2 ELP:2H2A ELP H2A3 ELP:3H2A ELP H5A1 ELP:1H5A ELP H5A2 ELP:2H5A ELP H5'1 EMA:1H5* EMA H5'2 EMA:2H5* EMA H4'1 EMA:1H4* EMA H4'2 EMA:2H4* EMA H1'1 EMA:1H1* EMA H1'2 EMA:2H1* EMA HN61 EMA:1HN6 EMA HN62 EMA:2HN6 EMA H13 EMB:3H1 EMB H12 EMB:2H1 EMB H11 EMB:1H1 EMB H22 EMB:2H2 EMB H21 EMB:1H2 EMB H43 EMB:3H4 EMB H42 EMB:2H4 EMB H41 EMB:1H4 EMB H11 EMC:1H1 EMC H12 EMC:2H1 EMC H21 EMC:1H2 EMC H22 EMC:2H2 EMC H23 EMC:3H2 EMC H71 EMD:1H7 EMD H72 EMD:2H7 EMD H73 EMD:3H7 EMD H151 EMD:1H15 EMD H152 EMD:2H15 EMD H161 EMD:1H16 EMD H162 EMD:2H16 EMD H171 EMD:1H17 EMD H172 EMD:2H17 EMD H251 EMD:1H25 EMD H252 EMD:2H25 EMD H253 EMD:3H25 EMD H261 EMD:1H26 EMD H262 EMD:2H26 EMD H263 EMD:3H26 EMD H2C1 EMM:1H2C EMM H2C2 EMM:2H2C EMM H2C3 EMM:3H2C EMM H3C1 EMM:1H3C EMM H3C2 EMM:2H3C EMM H101 EMO:1H10 EMO H102 EMO:2H10 EMO H103 EMO:3H10 EMO H21 EMP:1H2 EMP H22 EMP:2H2 EMP H51 EMP:1H5 EMP H52 EMP:2H5 EMP H61 EMP:1H6 EMP H62 EMP:2H6 EMP H71 EMP:1H7 EMP H72 EMP:2H7 EMP H73 EMP:3H7 EMP H81 EMP:1H8 EMP H82 EMP:2H8 EMP H83 EMP:3H8 EMP H21 EMR:1H2 EMR H22 EMR:2H2 EMR H31 EMR:1H3 EMR H32 EMR:2H3 EMR H51 EMR:1H5 EMR H52 EMR:2H5 EMR H61 EMR:1H6 EMR H62 EMR:2H6 EMR H1'1 EMR:1H1' EMR H1'2 EMR:2H1' EMR H2'1 EMR:1H2' EMR H2'2 EMR:2H2' EMR HN21 EMR:1HN2 EMR HN22 EMR:2HN2 EMR H11 EMT:1H1 EMT H12 EMT:2H1 EMT H21 EMT:1H2 EMT H22 EMT:2H2 EMT H23 EMT:3H2 EMT H9C1 EMU:1H9C EMU H9C2 EMU:2H9C EMU H1' ENA: H1* ENA H2' ENA: H2* ENA H4' ENA: H4* ENA H3' ENA: H3* ENA HO'4 ENA:4HO* ENA H5' ENA:1H5* ENA H5'' ENA:2H5* ENA HO'3 ENA:3HO* ENA H6'1 ENA:1H6* ENA H6'2 ENA:2H6* ENA H7' ENA: H7* ENA H8' ENA: H8* ENA H9' ENA: H9* ENA H0' ENA: H0* ENA HO'7 ENA:7HO* ENA HO'8 ENA:8HO* ENA H151 ENB:1H15 ENB H152 ENB:2H15 ENB H171 ENB:1H17 ENB H172 ENB:2H17 ENB H181 ENB:1H18 ENB H182 ENB:2H18 ENB H211 ENB:1H21 ENB H212 ENB:2H21 ENB H213 ENB:3H21 ENB H221 ENB:1H22 ENB H222 ENB:2H22 ENB H223 ENB:3H22 ENB H231 ENB:1H23 ENB H232 ENB:2H23 ENB H233 ENB:3H23 ENB H241 ENB:1H24 ENB H242 ENB:2H24 ENB H243 ENB:3H24 ENB H251 ENB:1H25 ENB H252 ENB:2H25 ENB H253 ENB:3H25 ENB H281 ENB:1H28 ENB H282 ENB:2H28 ENB H291 ENB:1H29 ENB H292 ENB:2H29 ENB H293 ENB:3H29 ENB H11 ENC:1H1 ENC H12 ENC:2H1 ENC H21 ENC:1H2 ENC H22 ENC:2H2 ENC H23 ENC:3H2 ENC H1 ENH:1H ENH H91 ENH:1H9 ENH H11 ENH:1H1 ENH H12 ENH:2H1 ENH H13 ENH:3H1 ENH H211 ENM:1H21 ENM H212 ENM:2H21 ENM H201 ENM:1H20 ENM H202 ENM:2H20 ENM H191 ENM:1H19 ENM H192 ENM:2H19 ENM H131 ENM:1H13 ENM H132 ENM:2H13 ENM H141 ENM:1H14 ENM H142 ENM:2H14 ENM H181 ENM:1H18 ENM H182 ENM:2H18 ENM H183 ENM:3H18 ENM H061 ENM:1H06 ENM H062 ENM:2H06 ENM H011 ENM:1H01 ENM H012 ENM:2H01 ENM H031 ENM:1H03 ENM H032 ENM:2H03 ENM H071 ENM:1H07 ENM H072 ENM:2H07 ENM H081 ENM:1H08 ENM H082 ENM:2H08 ENM H151 ENM:1H15 ENM H152 ENM:2H15 ENM H161 ENM:1H16 ENM H162 ENM:2H16 ENM H31 ENO:1H3 ENO H32 ENO:2H3 ENO H5' ENP:1H5* ENP H5'' ENP:2H5* ENP H4' ENP: H4* ENP H3' ENP: H3* ENP H2' ENP: H2* ENP H1' ENP: H1* ENP H0'1 ENP:1H0* ENP H0'2 ENP:2H0* ENP H9' ENP: H9* ENP H8' ENP: H8* ENP HO'7 ENP:7HO* ENP H7' ENP: H7* ENP HO'6 ENP:6HO* ENP H6' ENP: H6* ENP H81 ENT:1H8 ENT H82 ENT:2H8 ENT H161 ENT:1H16 ENT H162 ENT:2H16 ENT H163 ENT:3H16 ENT H71 ENT:1H7 ENT H72 ENT:2H7 ENT H151 ENT:1H15 ENT H152 ENT:2H15 ENT H153 ENT:3H15 ENT H141 ENT:1H14 ENT H142 ENT:2H14 ENT H143 ENT:3H14 ENT H131 ENT:1H13 ENT H132 ENT:2H13 ENT H133 ENT:3H13 ENT H1C1 ENX:1H1C ENX H1C2 ENX:2H1C ENX H1C3 ENX:3H1C ENX H2C1 ENX:1H2C ENX H2C2 ENX:2H2C ENX H8C1 ENX:1H8C ENX H8C2 ENX:2H8C ENX H261 ENX:1H26 ENX H262 ENX:2H26 ENX H341 ENX:1H34 ENX H342 ENX:2H34 ENX H343 ENX:3H34 ENX H361 ENX:1H36 ENX H362 ENX:2H36 ENX H363 ENX:3H36 ENX H391 ENX:1H39 ENX H392 ENX:2H39 ENX H401 ENX:1H40 ENX H402 ENX:2H40 ENX H431 ENX:1H43 ENX H432 ENX:2H43 ENX H71 EOA:1H7 EOA H72 EOA:2H7 EOA H81 EOA:1H8 EOA H82 EOA:2H8 EOA HAM1 EOB:1HAM EOB HAM2 EOB:2HAM EOB HAN1 EOB:1HAN EOB HAN2 EOB:2HAN EOB H21 EOD:1H2 EOD H22 EOD:2H2 EOD H31 EOD:1H3 EOD H32 EOD:2H3 EOD H41 EOD:1H4 EOD H42 EOD:2H4 EOD H51 EOD:1H5 EOD H52 EOD:2H5 EOD H61 EOD:1H6 EOD H62 EOD:2H6 EOD H71 EOD:1H7 EOD H72 EOD:2H7 EOD H81 EOD:1H8 EOD H82 EOD:2H8 EOD H91 EOD:1H9 EOD H92 EOD:2H9 EOD H101 EOD:1H10 EOD H102 EOD:2H10 EOD H111 EOD:1H11 EOD H112 EOD:2H11 EOD H141 EOD:1H14 EOD H142 EOD:2H14 EOD H151 EOD:1H15 EOD H152 EOD:2H15 EOD H161 EOD:1H16 EOD H162 EOD:2H16 EOD H171 EOD:1H17 EOD H172 EOD:2H17 EOD H181 EOD:1H18 EOD H182 EOD:2H18 EOD H183 EOD:3H18 EOD H11 EOH:1H1 EOH H12 EOH:2H1 EOH H21 EOH:1H2 EOH H22 EOH:2H2 EOH H23 EOH:3H2 EOH HA'1 EOM:1HA* EOM HA'2 EOM:2HA* EOM HC'1 EOM:1HC* EOM HC'2 EOM:2HC* EOM HD'1 EOM:1HD* EOM HD'2 EOM:2HD* EOM HD'3 EOM:3HD* EOM HAL1 EOP:1HAL EOP HAL2 EOP:2HAL EOP HAJ1 EOP:1HAJ EOP HAJ2 EOP:2HAJ EOP HAI1 EOP:1HAI EOP HAI2 EOP:2HAI EOP HAK1 EOP:1HAK EOP HAK2 EOP:2HAK EOP H191 EOT:1H19 EOT H192 EOT:2H19 EOT H201 EOT:1H20 EOT H202 EOT:2H20 EOT H111 EOT:1H11 EOT H112 EOT:2H11 EOT H21 EOT:1H2 EOT H22 EOT:2H2 EOT H91 EOT:1H9 EOT H92 EOT:2H9 EOT H71 EOT:1H7 EOT H72 EOT:2H7 EOT H51 EOT:1H5 EOT H52 EOT:2H5 EOT H31 EOT:1H3 EOT H32 EOT:2H3 EOT H11 EOX:1H1 EOX H12 EOX:2H1 EOX H21 EOX:1H2 EOX H22 EOX:2H2 EOX H23 EOX:3H2 EOX HAN1 EOZ:1HAN EOZ HAN2 EOZ:2HAN EOZ HAO1 EOZ:1HAO EOZ HAO2 EOZ:2HAO EOZ H161 EP:1H16 EP H162 EP:2H16 EP H163 EP:3H16 EP H61 EP:1H6 EP H62 EP:2H6 EP H63 EP:3H6 EP H211 EP:1H21 EP H212 EP:2H21 EP H321 EP:1H32 EP H322 EP:2H32 EP H351 EP:1H35 EP H352 EP:2H35 EP H381 EP:1H38 EP H382 EP:2H38 EP H431 EP:1H43 EP H432 EP:2H43 EP H433 EP:3H43 EP H531 EP:1H53 EP H532 EP:2H53 EP H533 EP:3H53 EP H641 EP:1H64 EP H642 EP:2H64 EP H643 EP:3H64 EP H601 EP:1H60 EP H602 EP:2H60 EP H603 EP:3H60 EP H721 EP:1H72 EP H722 EP:2H72 EP H111 EP1:1H11 EP1 H112 EP1:2H11 EP1 H101 EP1:1H10 EP1 H102 EP1:2H10 EP1 H91 EP1:1H9 EP1 H92 EP1:2H9 EP1 H21 EP1:1H2 EP1 H22 EP1:2H2 EP1 H31 EP1:1H3 EP1 H32 EP1:2H3 EP1 H51 EP1:1H5 EP1 H52 EP1:2H5 EP1 H61 EP1:1H6 EP1 H62 EP1:2H6 EP1 H71 EP1:1H7 EP1 H72 EP1:2H7 EP1 H81 EP1:1H8 EP1 H82 EP1:2H8 EP1 H21 EPA:1H2 EPA H22 EPA:2H2 EPA H31 EPA:1H3 EPA H32 EPA:2H3 EPA H41 EPA:1H4 EPA H42 EPA:2H4 EPA H51 EPA:1H5 EPA H61 EPA:1H6 EPA H71 EPA:1H7 EPA H72 EPA:2H7 EPA H81 EPA:1H8 EPA H91 EPA:1H9 EPA H101 EPA:1H10 EPA H102 EPA:2H10 EPA H111 EPA:1H11 EPA H121 EPA:1H12 EPA H131 EPA:1H13 EPA H132 EPA:2H13 EPA H141 EPA:1H14 EPA H151 EPA:1H15 EPA H161 EPA:1H16 EPA H162 EPA:2H16 EPA H171 EPA:1H17 EPA H181 EPA:1H18 EPA H191 EPA:1H19 EPA H192 EPA:2H19 EPA H201 EPA:1H20 EPA H202 EPA:2H20 EPA H203 EPA:3H20 EPA H511 EPB:1H51 EPB H512 EPB:2H51 EPB H513 EPB:3H51 EPB H31 EPB:1H3 EPB H32 EPB:2H3 EPB H211 EPB:1H21 EPB H212 EPB:2H21 EPB H213 EPB:3H21 EPB H271 EPB:1H27 EPB H272 EPB:2H27 EPB H273 EPB:3H27 EPB H151 EPB:1H15 EPB H152 EPB:2H15 EPB H291 EPB:1H29 EPB H292 EPB:2H29 EPB H293 EPB:3H29 EPB H301 EPB:1H30 EPB H302 EPB:2H30 EPB H303 EPB:3H30 EPB H281 EPB:1H28 EPB H282 EPB:2H28 EPB H283 EPB:3H28 EPB H911 EPB:1H91 EPB H912 EPB:2H91 EPB H913 EPB:3H91 EPB H81 EPB:1H8 EPB H82 EPB:2H8 EPB H71 EPB:1H7 EPB H72 EPB:2H7 EPB H61 EPB:1H6 EPB H62 EPB:2H6 EPB H1C1 EPC:1H1C EPC H2A1 EPC:1H2A EPC H2A2 EPC:2H2A EPC H2A3 EPC:3H2A EPC H4A1 EPC:1H4A EPC HC61 EPC:1HC6 EPC H5A1 EPC:1H5A EPC H5A2 EPC:2H5A EPC HCA1 EPC:1HCA EPC HCA2 EPC:2HCA EPC HCA3 EPC:3HCA EPC H511 EPD:1H51 EPD H512 EPD:2H51 EPD H513 EPD:3H51 EPD H31 EPD:1H3 EPD H32 EPD:2H3 EPD H211 EPD:1H21 EPD H212 EPD:2H21 EPD H213 EPD:3H21 EPD H271 EPD:1H27 EPD H272 EPD:2H27 EPD H273 EPD:3H27 EPD H61 EPD:1H6 EPD H62 EPD:2H6 EPD H71 EPD:1H7 EPD H72 EPD:2H7 EPD H81 EPD:1H8 EPD H82 EPD:2H8 EPD H911 EPD:1H91 EPD H912 EPD:2H91 EPD H913 EPD:3H91 EPD H281 EPD:1H28 EPD H282 EPD:2H28 EPD H283 EPD:3H28 EPD H301 EPD:1H30 EPD H302 EPD:2H30 EPD H303 EPD:3H30 EPD H291 EPD:1H29 EPD H292 EPD:2H29 EPD H293 EPD:3H29 EPD H151 EPD:1H15 EPD H152 EPD:2H15 EPD H21 EPE:1H2 EPE H22 EPE:2H2 EPE H31 EPE:1H3 EPE H32 EPE:2H3 EPE H51 EPE:1H5 EPE H52 EPE:2H5 EPE H61 EPE:1H6 EPE H62 EPE:2H6 EPE H71 EPE:1H7 EPE H72 EPE:2H7 EPE H81 EPE:1H8 EPE H82 EPE:2H8 EPE H91 EPE:1H9 EPE H92 EPE:2H9 EPE H101 EPE:1H10 EPE H102 EPE:2H10 EPE HOS3 EPE:3HOS EPE H111 EPF:1H11 EPF H112 EPF:2H11 EPF HO12 EPF:2HO1 EPF H141 EPF:1H14 EPF H142 EPF:2H14 EPF HO14 EPF:4HO1 EPF H151 EPF:1H15 EPF H152 EPF:2H15 EPF HO17 EPF:7HO1 EPF H211 EPF:1H21 EPF H212 EPF:2H21 EPF H213 EPF:3H21 EPF H1' EPF: H1* EPF H2'1 EPF:1H2* EPF H2'2 EPF:2H2* EPF H3' EPF: H3* EPF HN' EPF: HN* EPF HC'1 EPF:1HC* EPF HC'2 EPF:2HC* EPF HC'3 EPF:3HC* EPF H4' EPF: H4* EPF HO4' EPF:*HO4 EPF H5' EPF: H5* EPF H6'1 EPF:1H6* EPF H6'2 EPF:2H6* EPF H6'3 EPF:3H6* EPF H61 EPG:1H6 EPG H62 EPG:2H6 EPG H71 EPG:1H7 EPG H72 EPG:2H7 EPG H91 EPG:1H9 EPG H92 EPG:2H9 EPG H11 EPH:1H1 EPH H12A EPH:2H1 EPH H181 EPH:1H18 EPH H182 EPH:2H18 EPH H191 EPH:1H19 EPH H192 EPH:2H19 EPH H201 EPH:1H20 EPH H202 EPH:2H20 EPH H211 EPH:1H21 EPH H212 EPH:2H21 EPH H221 EPH:1H22 EPH H222 EPH:2H22 EPH H231 EPH:1H23 EPH H232 EPH:2H23 EPH H261 EPH:1H26 EPH H262 EPH:2H26 EPH H271 EPH:1H27 EPH H272 EPH:2H27 EPH H301 EPH:1H30 EPH H302 EPH:2H30 EPH H311 EPH:1H31 EPH H312 EPH:2H31 EPH H341 EPH:1H34 EPH H342 EPH:2H34 EPH H343 EPH:3H34 EPH H371 EPH:1H37 EPH H372 EPH:2H37 EPH H51 EPH:1H5 EPH H52 EPH:2H5 EPH H61 EPH:1H6 EPH H62 EPH:2H6 EPH H71 EPH:1H7 EPH H72 EPH:2H7 EPH H81 EPH:1H8 EPH H82 EPH:2H8 EPH H91 EPH:1H9 EPH H92 EPH:2H9 EPH H101 EPH:1H10 EPH H102 EPH:2H10 EPH H111 EPH:1H11 EPH H112 EPH:2H11 EPH H141 EPH:1H14 EPH H142 EPH:2H14 EPH H171 EPH:1H17 EPH H172 EPH:2H17 EPH H351 EPH:1H35 EPH H352 EPH:2H35 EPH H361 EPH:1H36 EPH H362 EPH:2H36 EPH H363 EPH:3H36 EPH H381 EPH:1H38 EPH H382 EPH:2H38 EPH H391 EPH:1H39 EPH H392 EPH:2H39 EPH HN11 EPH:1HN1 EPH HN12 EPH:2HN1 EPH H21 EPI:1H2 EPI H22 EPI:2H2 EPI H31 EPI:1H3 EPI H32 EPI:2H3 EPI H51 EPI:1H5 EPI H52 EPI:2H5 EPI H61 EPI:1H6 EPI H62 EPI:2H6 EPI H1'1 EPI:1H1' EPI H1'2 EPI:2H1' EPI H2'1 EPI:1H2' EPI H2'2 EPI:2H2' EPI H2'3 EPI:3H2' EPI H2C1 EPJ:1H2C EPJ H2C2 EPJ:2H2C EPJ H4C1 EPJ:1H4C EPJ H4C2 EPJ:2H4C EPJ H5C1 EPJ:1H5C EPJ H5C2 EPJ:2H5C EPJ H31 EPM:1H3 EPM H32 EPM:2H3 EPM H41 EPM:1H4 EPM H42 EPM:2H4 EPM H51 EPM:1H5 EPM H52 EPM:2H5 EPM H53 EPM:3H5 EPM H71 EPM:1H7 EPM H72 EPM:2H7 EPM H81 EPM:1H8 EPM H82 EPM:2H8 EPM H91 EPM:1H9 EPM H92 EPM:2H9 EPM H101 EPM:1H10 EPM H102 EPM:2H10 EPM H111 EPM:1H11 EPM H112 EPM:2H11 EPM H121 EPM:1H12 EPM H122 EPM:2H12 EPM H131 EPM:1H13 EPM H132 EPM:2H13 EPM H141 EPM:1H14 EPM H142 EPM:2H14 EPM H151 EPM:1H15 EPM H152 EPM:2H15 EPM H161 EPM:1H16 EPM H162 EPM:2H16 EPM H171 EPM:1H17 EPM H172 EPM:2H17 EPM H181 EPM:1H18 EPM H182 EPM:2H18 EPM H191 EPM:1H19 EPM H192 EPM:2H19 EPM H201 EPM:1H20 EPM H202 EPM:2H20 EPM H211 EPM:1H21 EPM H212 EPM:2H21 EPM H213 EPM:3H21 EPM H11 EPN:1H1 EPN H12 EPN:2H1 EPN H21 EPN:1H2 EPN H22 EPN:2H2 EPN H31 EPN:1H3 EPN H32 EPN:2H3 EPN H11 EPO:1H1 EPO H31 EPO:1H3 EPO H32 EPO:2H3 EPO H44 EPO:4H4 EPO H111 EPP:1H11 EPP H112 EPP:2H11 EPP H121 EPP:1H12 EPP H122 EPP:2H12 EPP H123 EPP:3H12 EPP H211 EPP:1H21 EPP H212 EPP:2H21 EPP H221 EPP:1H22 EPP H222 EPP:2H22 EPP H223 EPP:3H22 EPP HNQ1 EPQ:1HNQ EPQ HNQ2 EPQ:2HNQ EPQ HQB1 EPQ:1HQB EPQ HQB2 EPQ:2HQB EPQ HMK1 EPQ:1HMK EPQ HMK2 EPQ:2HMK EPQ HMK3 EPQ:3HMK EPQ HG1 EPQ:1HG EPQ HG2 EPQ:2HG EPQ HH11 EPQ:1HH1 EPQ HH12 EPQ:2HH1 EPQ HH13 EPQ:3HH1 EPQ HH21 EPQ:1HH2 EPQ HH22 EPQ:2HH2 EPQ HH23 EPQ:3HH2 EPQ H61 EPS:1H6 EPS H62 EPS:2H6 EPS H81 EPS:1H8 EPS H82 EPS:2H8 EPS H71 EPT:1H7 EPT H72 EPT:2H7 EPT H81 EPT:1H8 EPT H82 EPT:2H8 EPT H91 EPT:1H9 EPT H92 EPT:2H9 EPT H101 EPT:1H10 EPT H102 EPT:2H10 EPT H111 EPT:1H11 EPT H112 EPT:2H11 EPT H121 EPT:1H12 EPT H122 EPT:2H12 EPT H131 EPT:1H13 EPT H132 EPT:2H13 EPT H133 EPT:3H13 EPT HN3U EPU:UHN3 EPU H5U EPU: UH5 EPU H6U EPU: UH6 EPU H1D EPU:UH1* EPU H2D EPU:UH2* EPU HO2U EPU:UHO2 EPU H3D EPU:UH3* EPU H4D EPU:UH4* EPU HO3U EPU:UHO3 EPU H5'1 EPU:1H5* EPU H5'2 EPU:2H5* EPU HOA2 EPU:2HOA EPU HOB2 EPU:2HOB EPU H61 EPU:1H6 EPU H62 EPU:2H6 EPU H81 EPU:1H8 EPU H82 EPU:2H8 EPU H83 EPU:3H8 EPU HO2E EPU:EHO2 EPU HE31 EPU:1HE3 EPU HE32 EPU:2HE3 EPU H11 EPX:1H1 EPX H31A EPX:1H3 EPX H32A EPX:2H3 EPX H33 EPX:3H3 EPX H51 EPX:1H5 EPX H61 EPX:1H6 EPX H62 EPX:2H6 EPX H63 EPX:3H6 EPX H71 EPX:1H7 EPX H72 EPX:2H7 EPX H81 EPX:1H8 EPX H82 EPX:2H8 EPX H83 EPX:3H8 EPX H91 EPX:1H9 EPX H92 EPX:2H9 EPX H93 EPX:3H9 EPX HN21 EPX:1HN2 EPX H131 EPX:1H13 EPX H132 EPX:2H13 EPX H133 EPX:3H13 EPX H141 EPX:1H14 EPX H142 EPX:2H14 EPX H151 EPX:1H15 EPX H152 EPX:2H15 EPX H153 EPX:3H15 EPX HN31 EPX:1HN3 EPX H191 EPX:1H19 EPX H192 EPX:2H19 EPX H193 EPX:3H19 EPX HN51 EPX:1HN5 EPX H261 EPX:1H26 EPX H262 EPX:2H26 EPX H251 EPX:1H25 EPX H252 EPX:2H25 EPX H253 EPX:3H25 EPX H241 EPX:1H24 EPX H242 EPX:2H24 EPX H243 EPX:3H24 EPX HO61 EPX:1HO6 EPX HN41 EPX:1HN4 EPX H301 EPX:1H30 EPX H302 EPX:2H30 EPX H303 EPX:3H30 EPX H281 EPX:1H28 EPX H282 EPX:2H28 EPX H283 EPX:3H28 EPX H271 EPX:1H27 EPX H272 EPX:2H27 EPX HO71 EPX:1HO7 EPX H3A1 EPY:1H3A EPY HNA4 EPY:4HNA EPY H1A1 EPY:1H1A EPY H1A2 EPY:2H1A EPY H5A1 EPY:1H5A EPY H5A2 EPY:2H5A EPY HOA6 EPY:6HOA EPY HOB6 EPY:6HOB EPY H5B1 EPY:1H5B EPY HN51 EPY:1HN5 EPY HN52 EPY:2HN5 EPY H4B1 EPY:1H4B EPY H4B2 EPY:2H4B EPY H3B1 EPY:1H3B EPY H3B2 EPY:2H3B EPY HNB1 EPY:1HNB EPY H1C1 EPY:1H1C EPY H3C1 EPY:1H3C EPY H3C2 EPY:2H3C EPY HOC2 EPY:2HOC EPY H2C1 EPY:1H2C EPY H2C2 EPY:2H2C EPY H9C1 EPY:1H9C EPY H8C1 EPY:1H8C EPY H6C1 EPY:1H6C EPY H5C1 EPY:1H5C EPY H102 EQI:2H10 EQI H131 EQI:1H13 EQI H181 EQI:1H18 EQI H182 EQI:2H18 EQI H191 EQI:1H19 EQI H192 EQI:2H19 EQI H241 EQI:1H24 EQI H242 EQI:2H24 EQI H251 EQI:1H25 EQI H252 EQI:2H25 EQI H271 EQI:1H27 EQI H272 EQI:2H27 EQI H273 EQI:3H27 EQI H31 EQP:1H3 EQP H32 EQP:2H3 EQP H91 EQP:1H9 EQP H92 EQP:2H9 EQP H111 EQP:1H11 EQP H112 EQP:2H11 EQP H113 EQP:3H11 EQP HOP2 EQP:2HOP EQP HOP3 EQP:3HOP EQP H181 EQU:1H18 EQU H182 EQU:2H18 EQU H191 EQU:1H19 EQU H192 EQU:2H19 EQU H241 EQU:1H24 EQU H242 EQU:2H24 EQU H251 EQU:1H25 EQU H252 EQU:2H25 EQU H271 EQU:1H27 EQU H272 EQU:2H27 EQU H273 EQU:3H27 EQU H101 ERD:1H10 ERD H102 ERD:2H10 ERD H11 ERG:1H1 ERG H12 ERG:2H1 ERG H21 ERG:1H2 ERG H22A ERG:2H2 ERG H41 ERG:1H4 ERG H42 ERG:2H4 ERG H111 ERG:1H11 ERG H112 ERG:2H11 ERG H121 ERG:1H12 ERG H122 ERG:2H12 ERG H151 ERG:1H15 ERG H152 ERG:2H15 ERG H161 ERG:1H16 ERG H162 ERG:2H16 ERG H181 ERG:1H18 ERG H182 ERG:2H18 ERG H183 ERG:3H18 ERG H191 ERG:1H19 ERG H192 ERG:2H19 ERG H193 ERG:3H19 ERG H211 ERG:1H21 ERG H212 ERG:2H21 ERG H213 ERG:3H21 ERG H261 ERG:1H26 ERG H262 ERG:2H26 ERG H263 ERG:3H26 ERG H271 ERG:1H27 ERG H272 ERG:2H27 ERG H273 ERG:3H27 ERG H281 ERG:1H28 ERG H282 ERG:2H28 ERG H283 ERG:3H28 ERG H21 ERI:1H2 ERI H22 ERI:2H2 ERI H31 ERI:1H3 ERI H32 ERI:2H3 ERI H33 ERI:3H3 ERI H41 ERI:1H4 ERI H42 ERI:2H4 ERI H43 ERI:3H4 ERI H61 ERI:1H6 ERI H62 ERI:2H6 ERI H63 ERI:3H6 ERI HN21 ERN:1HN2 ERN HN22 ERN:2HN2 ERN H341 ERN:1H34 ERN H342 ERN:2H34 ERN H343 ERN:3H34 ERN H361 ERN:1H36 ERN H362 ERN:2H36 ERN H371 ERN:1H37 ERN H372 ERN:2H37 ERN H373 ERN:3H37 ERN H301 ERN:1H30 ERN H302 ERN:2H30 ERN H303 ERN:3H30 ERN H321 ERN:1H32 ERN H322 ERN:2H32 ERN H323 ERN:3H32 ERN H71 ERN:1H7 ERN H72 ERN:2H7 ERN H331 ERN:1H33 ERN H332 ERN:2H33 ERN H333 ERN:3H33 ERN H351 ERN:1H35 ERN H352 ERN:2H35 ERN H353 ERN:3H35 ERN H311 ERN:1H31 ERN H312 ERN:2H31 ERN H313 ERN:3H31 ERN H251 ERN:1H25 ERN H252 ERN:2H25 ERN H271 ERN:1H27 ERN H272 ERN:2H27 ERN H273 ERN:3H27 ERN H281 ERN:1H28 ERN H282 ERN:2H28 ERN H283 ERN:3H28 ERN H291 ERN:1H29 ERN H292 ERN:2H29 ERN H293 ERN:3H29 ERN H151 ERN:1H15 ERN H152 ERN:2H15 ERN H201 ERN:1H20 ERN H202 ERN:2H20 ERN H203 ERN:3H20 ERN H191 ERN:1H19 ERN H192 ERN:2H19 ERN H193 ERN:3H19 ERN H211 ERN:1H21 ERN H212 ERN:2H21 ERN H213 ERN:3H21 ERN H401 ERT:1H40 ERT H402 ERT:2H40 ERT H403 ERT:3H40 ERT H221 ERT:1H22 ERT H222 ERT:2H22 ERT H223 ERT:3H22 ERT H81 ERT:1H8 ERT H82 ERT:2H8 ERT H131 ERT:1H13 ERT H132 ERT:2H13 ERT H141 ERT:1H14 ERT H142 ERT:2H14 ERT H143 ERT:3H14 ERT H1' ERT: H1* ERT H2'1 ERT:1H2* ERT H2'2 ERT:2H2* ERT H3' ERT: H3* ERT H7'1 ERT:1H7* ERT H7'2 ERT:2H7* ERT H7'3 ERT:3H7* ERT H8'1 ERT:1H8* ERT H8'2 ERT:2H8* ERT H8'3 ERT:3H8* ERT H4' ERT: H4* ERT H5' ERT: H5* ERT H6'1 ERT:1H6* ERT H6'2 ERT:2H6* ERT H6'3 ERT:3H6* ERT H71 ERY:1H7 ERY H72 ERY:2H7 ERY H341 ERY:1H34 ERY H342 ERY:2H34 ERY H343 ERY:3H34 ERY H331 ERY:1H33 ERY H332 ERY:2H33 ERY H333 ERY:3H33 ERY H351 ERY:1H35 ERY H352 ERY:2H35 ERY H353 ERY:3H35 ERY H361 ERY:1H36 ERY H362 ERY:2H36 ERY H301 ERY:1H30 ERY H302 ERY:2H30 ERY H303 ERY:3H30 ERY H321 ERY:1H32 ERY H322 ERY:2H32 ERY H323 ERY:3H32 ERY H251 ERY:1H25 ERY H252 ERY:2H25 ERY H271 ERY:1H27 ERY H272 ERY:2H27 ERY H273 ERY:3H27 ERY H281 ERY:1H28 ERY H282 ERY:2H28 ERY H283 ERY:3H28 ERY H151 ERY:1H15 ERY H152 ERY:2H15 ERY H201 ERY:1H20 ERY H202 ERY:2H20 ERY H203 ERY:3H20 ERY H291 ERY:1H29 ERY H292 ERY:2H29 ERY H293 ERY:3H29 ERY H211 ERY:1H21 ERY H212 ERY:2H21 ERY H213 ERY:3H21 ERY H371 ERY:1H37 ERY H372 ERY:2H37 ERY H373 ERY:3H37 ERY H311 ERY:1H31 ERY H312 ERY:2H31 ERY H313 ERY:3H31 ERY H191 ERY:1H19 ERY H192 ERY:2H19 ERY H193 ERY:3H19 ERY H11 ESA:1H1 ESA H12 ESA:2H1 ESA H13 ESA:3H1 ESA H21 ESA:1H2 ESA H22 ESA:2H2 ESA H ESC:1HN ESC H2 ESC:2HN ESC HCA1 ESC:1HCA ESC HB2 ESC:1HCB ESC HB3 ESC:2HCB ESC HG2 ESC:1HCG ESC HG3 ESC:2HCG ESC HD2 ESC:1HCD ESC HD3 ESC:2HCD ESC HE1 ESC:1HCE ESC HE2 ESC:2HCE ESC HE3 ESC:3HCE ESC HG1 ESD:1HG ESD HG2 ESD:2HG ESD HD2 ESD:2HD ESD HD1 ESD:1HD ESD HA2 ESD:2HA ESD HA1 ESD:1HA ESD H121 ESH:1H12 ESH H122 ESH:2H12 ESH H132 ESH:2H13 ESH H131 ESH:1H13 ESH H141 ESH:1H14 ESH H142 ESH:2H14 ESH H231 ESH:1H23 ESH H232 ESH:2H23 ESH H323 ESH:3H32 ESH H322 ESH:2H32 ESH H321 ESH:1H32 ESH H333 ESH:3H33 ESH H332 ESH:2H33 ESH H331 ESH:1H33 ESH HH11 ESI:1HH1 ESI HH12 ESI:2HH1 ESI HH21 ESI:1HH2 ESI HH22 ESI:2HH2 ESI H31 ESL:1H3 ESL H32 ESL:2H3 ESL H41 ESL:1H4 ESL H42 ESL:2H4 ESL H61 ESL:1H6 ESL H62 ESL:2H6 ESL H63 ESL:3H6 ESL H91 ESL:1H9 ESL H92 ESL:2H9 ESL H141 ESL:1H14 ESL H142 ESL:2H14 ESL H151 ESL:1H15 ESL H152 ESL:2H15 ESL H111 ESM:1H11 ESM H112 ESM:2H11 ESM H121 ESM:1H12 ESM H122 ESM:2H12 ESM H14C ESM:CH14 ESM H151 ESM:1H15 ESM H152 ESM:2H15 ESM H161 ESM:1H16 ESM H162 ESM:2H16 ESM H17C ESM:CH17 ESM H181 ESM:1H18 ESM H182 ESM:2H18 ESM H183 ESM:3H18 ESM HC61 ESM:1HC6 ESM HC62 ESM:2HC6 ESM HC71 ESM:1HC7 ESM HC72 ESM:2HC7 ESM H17O ESM:OH17 ESM H191 ESM:1H19 ESM H192 ESM:2H19 ESM H193 ESM:3H19 ESM HOP2 ESO:2HOP ESO HOP3 ESO:3HOP ESO H61 ESO:1H6 ESO H62 ESO:2H6 ESO H71 ESO:1H7 ESO H72 ESO:2H7 ESO H111 ESO:1H11 ESO H112 ESO:2H11 ESO H121 ESO:1H12 ESO H122 ESO:2H12 ESO H151 ESO:1H15 ESO H152 ESO:2H15 ESO H161 ESO:1H16 ESO H162 ESO:2H16 ESO H181 ESO:1H18 ESO H182 ESO:2H18 ESO H183 ESO:3H18 ESO HH11 ESP:1HH1 ESP HH12 ESP:2HH1 ESP HH21 ESP:1HH2 ESP HH22 ESP:2HH2 ESP H2C1 ESR:1H2C ESR H2C2 ESR:2H2C ESR H5C1 ESR:1H5C ESR H5C2 ESR:2H5C ESR H6C1 ESR:1H6C ESR H6C2 ESR:2H6C ESR H101 ESR:1H10 ESR H102 ESR:2H10 ESR H111 ESR:1H11 ESR H112 ESR:2H11 ESR H191 ESR:1H19 ESR H192 ESR:2H19 ESR H241 ESR:1H24 ESR H242 ESR:2H24 ESR H251 ESR:1H25 ESR H252 ESR:2H25 ESR H271 ESR:1H27 ESR H272 ESR:2H27 ESR H273 ESR:3H27 ESR H181 ESR:1H18 ESR H182 ESR:2H18 ESR H61 EST:1H6 EST H62 EST:2H6 EST H71 EST:1H7 EST H72 EST:2H7 EST H111 EST:1H11 EST H112 EST:2H11 EST H121 EST:1H12 EST H122 EST:2H12 EST H151 EST:1H15 EST H152 EST:2H15 EST H161 EST:1H16 EST H162 EST:2H16 EST H181 EST:1H18 EST H182 EST:2H18 EST H183 EST:3H18 EST HH11 ESX:1HH1 ESX HH12 ESX:2HH1 ESX HH21 ESX:1HH2 ESX HH22 ESX:2HH2 ESX H51 ESY:1H5 ESY H52 ESY:2H5 ESY H131 ESY:1H13 ESY H132 ESY:2H13 ESY H141 ESY:1H14 ESY H142 ESY:2H14 ESY H151 ESY:1H15 ESY H152 ESY:2H15 ESY H161 ESY:1H16 ESY H162 ESY:2H16 ESY H241 ESY:1H24 ESY H242 ESY:2H24 ESY H251 ESY:1H25 ESY H252 ESY:2H25 ESY H253 ESY:3H25 ESY H261 ESY:1H26 ESY H262 ESY:2H26 ESY H263 ESY:3H26 ESY H311 ESY:1H31 ESY H312 ESY:2H31 ESY H401 ESY:1H40 ESY H402 ESY:2H40 ESY H403 ESY:3H40 ESY H211 ET:1H21 ET H212 ET:2H21 ET H221 ET:1H22 ET H222 ET:2H22 ET H223 ET:3H22 ET H231 ET:1H23 ET H232 ET:2H23 ET H241 ET:1H24 ET H242 ET:2H24 ET HA1 ETA:1HA ETA HA2 ETA:2HA ETA HN1 ETA:1HN ETA HN2 ETA:2HN ETA HB1 ETA:1HB ETA HB2 ETA:2HB ETA H221 ETC:1H22 ETC H222 ETC:2H22 ETC H223 ETC:3H22 ETC H211 ETC:1H21 ETC H212 ETC:2H21 ETC H121 ETC:1H12 ETC H122 ETC:2H12 ETC HC61 ETC:1HC6 ETC HC62 ETC:2HC6 ETC H201 ETC:1H20 ETC H202 ETC:2H20 ETC H191 ETC:1H19 ETC H192 ETC:2H19 ETC H193 ETC:3H19 ETC H121 ETE:1H12 ETE H122 ETE:2H12 ETE H221 ETE:1H22 ETE H222 ETE:2H22 ETE H131 ETE:1H13 ETE H132 ETE:2H13 ETE H231 ETE:1H23 ETE H232 ETE:2H23 ETE H141 ETE:1H14 ETE H142 ETE:2H14 ETE H241 ETE:1H24 ETE H242 ETE:2H24 ETE H151 ETE:1H15 ETE H152 ETE:2H15 ETE H251 ETE:1H25 ETE H252 ETE:2H25 ETE H261 ETE:1H26 ETE H262 ETE:2H26 ETE H263 ETE:3H26 ETE H21 ETF:1H2 ETF H22 ETF:2H2 ETF H11 ETH:1H1 ETH H12 ETH:2H1 ETH H21 ETH:1H2 ETH H22 ETH:2H2 ETH H23 ETH:3H2 ETH H11 ETI:1H1 ETI H12 ETI:2H1 ETI H21 ETI:1H2 ETI H22 ETI:2H2 ETI H23 ETI:3H2 ETI H11 ETM:1H1 ETM H12 ETM:2H1 ETM H21 ETM:1H2 ETM H22 ETM:2H2 ETM H31 ETM:1H3 ETM H32 ETM:2H3 ETM H33 ETM:3H3 ETM H41 ETM:1H4 ETM H42 ETM:2H4 ETM H43 ETM:3H4 ETM H51 ETM:1H5 ETM H52 ETM:2H5 ETM H53 ETM:3H5 ETM H1 ETN:1H ETN H2 ETN:2H ETN H3 ETN:3H ETN H11 ETN:1H1 ETN H12 ETN:2H1 ETN H21 ETN:1H2 ETN H22 ETN:2H2 ETN H23 ETN:3H2 ETN HB1 ETO:1HB ETO HB2 ETO:2HB ETO HB3 ETO:3HB ETO HA1 ETO:1HA ETO HA2 ETO:2HA ETO H21 ETR:1H2 ETR H22 ETR:2H2 ETR H31 ETR:1H3 ETR H32 ETR:2H3 ETR H41 ETR:1H4 ETR H42 ETR:2H4 ETR H161 ETR:1H16 ETR H162 ETR:2H16 ETR H163 ETR:3H16 ETR H171 ETR:1H17 ETR H172 ETR:2H17 ETR H173 ETR:3H17 ETR H181 ETR:1H18 ETR H182 ETR:2H18 ETR H183 ETR:3H18 ETR H191 ETR:1H19 ETR H192 ETR:2H19 ETR H193 ETR:3H19 ETR H201 ETR:1H20 ETR H202 ETR:2H20 ETR H203 ETR:3H20 ETR H211 ETR:1H21 ETR H212 ETR:2H21 ETR H221 ETR:1H22 ETR H222 ETR:2H22 ETR H223 ETR:3H22 ETR HN31 ETS:1HN3 ETS HN32 ETS:2HN3 ETS H151 ETS:1H15 ETS H152 ETS:2H15 ETS H153 ETS:3H15 ETS H181 ETS:1H18 ETS H182 ETS:2H18 ETS H191 ETS:1H19 ETS H192 ETS:2H19 ETS H193 ETS:3H19 ETS HN61 ETV:1HN6 ETV HN62 ETV:2HN6 ETV H161 ETV:1H16 ETV H162 ETV:2H16 ETV H141 ETV:1H14 ETV H142 ETV:2H14 ETV H21 ETX:1H2 ETX H22 ETX:2H2 ETX H31 ETX:1H3 ETX H32 ETX:2H3 ETX H41 ETX:1H4 ETX H42 ETX:2H4 ETX H43 ETX:3H4 ETX H11 ETX:1H1 ETX H12 ETX:2H1 ETX H11 EUD:1H1 EUD H12 EUD:2H1 EUD H33 EUD:3H3 EUD H41 EUD:1H4 EUD H42 EUD:2H4 EUD H43 EUD:3H4 EUD H51 EUD:1H5 EUD H52 EUD:2H5 EUD H61 EUD:1H6 EUD H62 EUD:2H6 EUD H71 EUD:1H7 EUD H72 EUD:2H7 EUD H91 EUD:1H9 EUD H92 EUD:2H9 EUD H93 EUD:3H9 EUD H101 EUD:1H10 EUD H102 EUD:2H10 EUD H111 EUD:1H11 EUD H112 EUD:2H11 EUD H121 EUD:1H12 EUD H141 EUD:1H14 EUD H142 EUD:2H14 EUD H143 EUD:3H14 EUD H151 EUD:1H15 EUD H152 EUD:2H15 EUD H81 EUG:1H8 EUG H82 EUG:2H8 EUG H91 EUG:1H9 EUG H92 EUG:2H9 EUG H93 EUG:3H9 EUG HBH1 EXO:1HBH EXO HBH2 EXO:2HBH EXO HBE1 EXO:1HBE EXO HBE2 EXO:2HBE EXO H3 EYS:3H EYS H2 EYS:2H EYS H EYS:1H EYS HB2 EYS:2HB EYS HB3 EYS:1HB EYS HC EYS: H EYS H181 EZT:1H18 EZT H182 EZT:2H18 EZT H183 EZT:3H18 EZT H121 EZT:1H12 EZT H122 EZT:2H12 EZT H111 EZT:1H11 EZT H112 EZT:2H11 EZT H61 EZT:1H6 EZT H62 EZT:2H6 EZT H71 EZT:1H7 EZT H72 EZT:2H7 EZT H151 EZT:1H15 EZT H152 EZT:2H15 EZT H161 EZT:1H16 EZT H162 EZT:2H16 EZT H11 F09:1H1 F09 H12 F09:2H1 F09 H13 F09:3H1 F09 H21 F09:1H2 F09 H22 F09:2H2 F09 H31 F09:1H3 F09 H32 F09:2H3 F09 H41 F09:1H4 F09 H42 F09:2H4 F09 H51 F09:1H5 F09 H52 F09:2H5 F09 H61 F09:1H6 F09 H62 F09:2H6 F09 H71 F09:1H7 F09 H72 F09:2H7 F09 H81 F09:1H8 F09 H82 F09:2H8 F09 H91 F09:1H9 F09 H92 F09:2H9 F09 H171 F10:1H17 F10 H172 F10:2H17 F10 H181 F10:1H18 F10 H182 F10:2H18 F10 H3C1 F11:1H3C F11 H3C2 F11:2H3C F11 H4C1 F11:1H4C F11 H4C2 F11:2H4C F11 H5C1 F11:1H5C F11 H5C2 F11:2H5C F11 H6C1 F11:1H6C F11 H6C2 F11:2H6C F11 H191 F11:1H19 F11 H192 F11:2H19 F11 H201 F11:1H20 F11 H202 F11:2H20 F11 H211 F11:1H21 F11 H212 F11:2H21 F11 H241 F11:1H24 F11 H242 F11:2H24 F11 H251 F11:1H25 F11 H252 F11:2H25 F11 H281 F11:1H28 F11 H282 F11:2H28 F11 H291 F11:1H29 F11 H292 F11:2H29 F11 H301 F11:1H30 F11 H302 F11:2H30 F11 H311 F11:1H31 F11 H312 F11:2H31 F11 H121 F12:1H12 F12 H122 F12:2H12 F12 H123 F12:3H12 F12 H201 F17:1H20 F17 H202 F17:2H20 F17 H351 F17:1H35 F17 H352 F17:2H35 F17 H401 F17:1H40 F17 H402 F17:2H40 F17 H7C1 F17:1H7C F17 H7C2 F17:2H7C F17 H161 F18:1H16 F18 H162 F18:2H16 F18 H181 F18:1H18 F18 H182 F18:2H18 F18 H161 F19:1H16 F19 H162 F19:2H16 F19 H181 F19:1H18 F19 H182 F19:2H18 F19 H191 F1G:1H19 F1G H192 F1G:2H19 F1G H193 F1G:3H19 F1G H31 F1G:1H3 F1G H32 F1G:2H3 F1G H21 F1G:1H2 F1G H22 F1G:2H2 F1G H11 F1P:1H1 F1P H12 F1P:2H1 F1P H61 F1P:1H6 F1P H62 F1P:2H6 F1P H2C1 F20:1H2C F20 H2C2 F20:2H2C F20 H211 F20:1H21 F20 H212 F20:2H21 F20 H271 F20:1H27 F20 H272 F20:2H27 F20 H4C1 F20:1H4C F20 H4C2 F20:2H4C F20 H121 F21:1H12 F21 H122 F21:2H12 F21 H131 F21:1H13 F21 H132 F21:2H13 F21 H151 F21:1H15 F21 H152 F21:2H15 F21 H141 F21:1H14 F21 H142 F21:2H14 F21 H11 F21:1H1 F21 H12 F21:2H1 F21 H111 F21:1H11 F21 H112 F21:2H11 F21 H41 F21:1H4 F21 H42 F21:2H4 F21 H101 F23:1H10 F23 H102 F23:2H10 F23 H111 F23:1H11 F23 H112 F23:2H11 F23 H121 F23:1H12 F23 H122 F23:2H12 F23 H131 F23:1H13 F23 H132 F23:2H13 F23 H141 F23:1H14 F23 H142 F23:2H14 F23 H151 F23:1H15 F23 H152 F23:2H15 F23 H161 F23:1H16 F23 H162 F23:2H16 F23 H171 F23:1H17 F23 H172 F23:2H17 F23 H181 F23:1H18 F23 H182 F23:2H18 F23 H191 F23:1H19 F23 H192 F23:2H19 F23 H201 F23:1H20 F23 H202 F23:2H20 F23 H211 F23:1H21 F23 H212 F23:2H21 F23 H221 F23:1H22 F23 H222 F23:2H22 F23 H231 F23:1H23 F23 H232 F23:2H23 F23 H233 F23:3H23 F23 H61 F24:1H6 F24 H62 F24:2H6 F24 H211 F24:1H21 F24 H212 F24:2H21 F24 H213 F24:3H21 F24 H121 F24:1H12 F24 H122 F24:2H12 F24 H71 F24:1H7 F24 H72 F24:2H7 F24 H73 F24:3H7 F24 H161 F24:1H16 F24 H162 F24:2H16 F24 H131 F24:1H13 F24 H132 F24:2H13 F24 H133 F24:3H13 F24 H201 F24:1H20 F24 H202 F24:2H20 F24 H111 F24:1H11 F24 H112 F24:2H11 F24 H101 F24:1H10 F24 H102 F24:2H10 F24 H51 F24:1H5 F24 H52 F24:2H5 F24 H41 F24:1H4 F24 H42 F24:2H4 F24 H231 F25:1H23 F25 H232 F25:2H23 F25 H121 F25:1H12 F25 H122 F25:2H12 F25 H131 F25:1H13 F25 H132 F25:2H13 F25 H142 F25:2H14 F25 H141 F25:1H14 F25 H33 F25:3H3 F25 H301 F29:1H30 F29 H302 F29:2H30 F29 H31 F29:1H3 F29 H32 F29:2H3 F29 H171 F29:1H17 F29 H172 F29:2H17 F29 H01C F2B:CH01 F2B H02C F2B:CH02 F2B H04C F2B:CH04 F2B H05C F2B:CH05 F2B H09N F2B:NH09 F2B H101 F2B:1H10 F2B H102 F2B:2H10 F2B HNP1 F2B:1HNP F2B HNP2 F2B:2HNP F2B H16C F2B:CH16 F2B H17C F2B:CH17 F2B H18C F2B:CH18 F2B H241 F2G:1H24 F2G H242 F2G:2H24 F2G H261 F2G:1H26 F2G H262 F2G:2H26 F2G H271 F2G:1H27 F2G H272 F2G:2H27 F2G H281 F2G:1H28 F2G H282 F2G:2H28 F2G H291 F2G:1H29 F2G H292 F2G:2H29 F2G H301 F2G:1H30 F2G H302 F2G:2H30 F2G H51 F2G:1H5 F2G H52 F2G:2H5 F2G H53 F2G:3H5 F2G H41 F2G:1H4 F2G H42 F2G:2H4 F2G H43 F2G:3H4 F2G H101 F2G:1H10 F2G H102 F2G:2H10 F2G H103 F2G:3H10 F2G H311 F2G:1H31 F2G H312 F2G:2H31 F2G H313 F2G:3H31 F2G H151 F2G:1H15 F2G H152 F2G:2H15 F2G H71 F2I:1H7 F2I H72 F2I:2H7 F2I H73 F2I:3H7 F2I H101 F2I:1H10 F2I H102 F2I:2H10 F2I H131 F2I:1H13 F2I H132 F2I:2H13 F2I H171 F2I:1H17 F2I H172 F2I:2H17 F2I H91 F2I:1H9 F2I H92 F2I:2H9 F2I H111 F2I:1H11 F2I H112 F2I:2H11 F2I H121 F2I:1H12 F2I H122 F2I:2H12 F2I H123 F2I:3H12 F2I H141 F2I:1H14 F2I H142 F2I:2H14 F2I H143 F2I:3H14 F2I H181 F2I:1H18 F2I H182 F2I:2H18 F2I H191 F2I:1H19 F2I H192 F2I:2H19 F2I HCD1 F2N:1HCD F2N HCD2 F2N:2HCD F2N HCE1 F2N:1HCE F2N HCE2 F2N:2HCE F2N HBJ1 F2N:1HBJ F2N HBJ2 F2N:2HBJ F2N HBJ3 F2N:3HBJ F2N HBH1 F2N:1HBH F2N HBH2 F2N:2HBH F2N HBH3 F2N:3HBH F2N HBO1 F2N:1HBO F2N HBO2 F2N:2HBO F2N HBV1 F2N:1HBV F2N HBV2 F2N:2HBV F2N H5'1 F2N:1H5* F2N H5'2 F2N:2H5* F2N H4' F2N: H4* F2N H3' F2N: H3* F2N HO3' F2N:HO3* F2N H2' F2N: H2* F2N HO2' F2N:HO2* F2N H1' F2N: H1* F2N HN61 F2N:1HN6 F2N HN62 F2N:2HN6 F2N H1C1 F2P:1H1C F2P H1C2 F2P:2H1C F2P H6C1 F2P:1H6C F2P H6C2 F2P:2H6C F2P H2C1 F32:1H2C F32 H2C2 F32:2H2C F32 H211 F32:1H21 F32 H212 F32:2H21 F32 H241 F3G:1H24 F3G H242 F3G:2H24 F3G H51 F3G:1H5 F3G H52 F3G:2H5 F3G H53 F3G:3H5 F3G H41 F3G:1H4 F3G H42 F3G:2H4 F3G H43 F3G:3H4 F3G H101 F3G:1H10 F3G H102 F3G:2H10 F3G H103 F3G:3H10 F3G H311 F3G:1H31 F3G H312 F3G:2H31 F3G H313 F3G:3H31 F3G H151 F3G:1H15 F3G H152 F3G:2H15 F3G H11 F3P:1H1 F3P H12 F3P:2H1 F3P H13 F3P:3H1 F3P H41 F3P:1H4 F3P H42 F3P:2H4 F3P H51 F3P:1H5 F3P H52 F3P:2H5 F3P H61 F3P:1H6 F3P H62 F3P:2H6 F3P H81 F3P:1H8 F3P H82 F3P:2H8 F3P H83 F3P:3H8 F3P H91 F3P:1H9 F3P H92 F3P:2H9 F3P H93 F3P:3H9 F3P H101 F3P:1H10 F3P H102 F3P:2H10 F3P H103 F3P:3H10 F3P HM81 F42:1HM8 F42 H1'1 F42:1H1* F42 H1'2 F42:2H1* F42 H2' F42: H2* F42 HO2' F42:*HO2 F42 H3' F42: H3* F42 HO3' F42:*HO3 F42 H4' F42: H4* F42 HO4' F42:*HO4 F42 H5'1 F42:1H5* F42 H5'2 F42:2H5* F42 HOP2 F42:2HOP F42 H1I1 F42:1H1I F42 H2I1 F42:1H2I F42 H2I2 F42:2H2I F42 H2I3 F42:3H2I F42 HNH1 F42:1HNH F42 H1H1 F42:1H1H F42 H3H1 F42:1H3H F42 H3H2 F42:2H3H F42 H4H1 F42:1H4H F42 H4H2 F42:2H4H F42 HNG1 F42:1HNG F42 H1G1 F42:1H1G F42 H3G1 F42:1H3G F42 H3G2 F42:2H3G F42 H4G1 F42:1H4G F42 H4G2 F42:2H4G F42 HHA1 F43:1HHA F43 HHA2 F43:2HHA F43 H5A1 F43:1H5A F43 H5A2 F43:2H5A F43 HN81 F43:1HN8 F43 HN82 F43:2HN8 F43 H9A1 F43:1H9A F43 H9A2 F43:2H9A F43 H9A3 F43:3H9A F43 HAA1 F43:1HAA F43 HAA2 F43:2HAA F43 HBA1 F43:1HBA F43 HBA2 F43:2HBA F43 HHB1 F43:1HHB F43 HHB2 F43:2HHB F43 H8B1 F43:1H8B F43 H8B2 F43:2H8B F43 H9B1 F43:1H9B F43 H9B2 F43:2H9B F43 H9B3 F43:3H9B F43 HAB1 F43:1HAB F43 HAB2 F43:2HAB F43 HBB1 F43:1HBB F43 HBB2 F43:2HBB F43 H5C1 F43:1H5C F43 H5C2 F43:2H5C F43 H8C1 F43:1H8C F43 H8C2 F43:2H8C F43 H9C1 F43:1H9C F43 H9C2 F43:2H9C F43 H5D1 F43:1H5D F43 H5D2 F43:2H5D F43 H6D1 F43:1H6D F43 H6D2 F43:2H6D F43 H9D1 F43:1H9D F43 H9D2 F43:2H9D F43 HH31 F50:1HH3 F50 HH32 F50:2HH3 F50 HH33 F50:3HH3 F50 H01C F6B:CH01 F6B H02C F6B:CH02 F6B H04C F6B:CH04 F6B H05C F6B:CH05 F6B H09N F6B:NH09 F6B H101 F6B:1H10 F6B H102 F6B:2H10 F6B HNP1 F6B:1HNP F6B HNP2 F6B:2HNP F6B H17C F6B:CH17 F6B H18C F6B:CH18 F6B H19C F6B:CH19 F6B H151 F6F:1H15 F6F H152 F6F:2H15 F6F H161 F6F:1H16 F6F H162 F6F:2H16 F6F H11 F6P:1H1 F6P H12 F6P:2H1 F6P H61 F6P:1H6 F6P H62 F6P:2H6 F6P HOP2 F6P:2HOP F6P HOP3 F6P:3HOP F6P H1C1 F6R:1H1C F6R H1C2 F6R:2H1C F6R H6C1 F6R:1H6C F6R H6C2 F6R:2H6C F6R H11 F77:1H1 F77 H12 F77:2H1 F77 H13 F77:3H1 F77 H21A F77:1H2 F77 H22A F77:2H2 F77 H91 F77:1H9 F77 H92 F77:2H9 F77 H93 F77:3H9 F77 H71 F79:1H7 F79 H72 F79:2H7 F79 H81 F79:1H8 F79 H82 F79:2H8 F79 H83 F79:3H8 F79 H101 F79:1H10 F79 H102 F79:2H10 F79 H111 F79:1H11 F79 H112 F79:2H11 F79 H121 F79:1H12 F79 H122 F79:2H12 F79 H11 F83:1H1 F83 H12A F83:2H1 F83 H31 F83:1H3 F83 H32 F83:2H3 F83 H101 F83:1H10 F83 H102 F83:2H10 F83 H3M1 F89:1H3M F89 H3M2 F89:2H3M F89 H3M3 F89:3H3M F89 H111 F89:1H11 F89 H112 F89:2H11 F89 HN12 F89:2HN1 F89 H191 F89:1H19 F89 H192 F89:2H19 F89 HB1 F89:1HB F89 HB2 F89:2HB F89 HG1 F89:1HG F89 HG2 F89:2HG F89 HOE2 F89:2HOE F89 H141 F9F:1H14 F9F H142 F9F:2H14 F9F H151 F9F:1H15 F9F H152 F9F:2H15 F9F H91 FA:1H9 FA H92 FA:2H9 FA HB11 FA:1HB1 FA HB12 FA:2HB1 FA HG11 FA:1HG1 FA HG12 FA:2HG1 FA HA21 FA:1HA2 FA HA22 FA:2HA2 FA HOE1 FA:1HOE FA H2C1 FA1:1H2C FA1 H2C2 FA1:2H2C FA1 HOP2 FA2:2HOP FA2 H2' FA2: H2* FA2 H4'1 FA2:1H4* FA2 H4'2 FA2:2H4* FA2 H1' FA2: H1* FA2 H3' FA2: H3* FA2 HO2' FA2:2HO* FA2 HOP3 FA2:3HOP FA2 H2C1 FA3:1H2C FA3 H2C2 FA3:2H2C FA3 H71 FA4:1H7 FA4 H72 FA4:2H7 FA4 H81 FA4:1H8 FA4 H82 FA4:2H8 FA4 H91 FA4:1H9 FA4 H92 FA4:2H9 FA4 H101 FA4:1H10 FA4 H102 FA4:2H10 FA4 H111 FA4:1H11 FA4 H112 FA4:2H11 FA4 H121 FA4:1H12 FA4 H122 FA4:2H12 FA4 H131 FA4:1H13 FA4 H132 FA4:2H13 FA4 H141 FA4:1H14 FA4 H142 FA4:2H14 FA4 H151 FA4:1H15 FA4 H152 FA4:2H15 FA4 H201 FA4:1H20 FA4 H202 FA4:2H20 FA4 H231 FA4:1H23 FA4 H232 FA4:2H23 FA4 H241 FA4:1H24 FA4 H242 FA4:2H24 FA4 H251 FA4:1H25 FA4 H252 FA4:2H25 FA4 H261 FA4:1H26 FA4 H262 FA4:2H26 FA4 H271 FA4:1H27 FA4 H272 FA4:2H27 FA4 H301 FA4:1H30 FA4 H302 FA4:2H30 FA4 HN1 FA5:1HN FA5 HN2 FA5:2HN FA5 HB1 FA5:1HB FA5 HB2 FA5:2HB FA5 HOP2 FA5:2HOP FA5 H5' FA5:1H5* FA5 H5'' FA5:2H5* FA5 H4' FA5: H4* FA5 H3' FA5: H3* FA5 HO'3 FA5:3HO* FA5 H2' FA5: H2* FA5 HO2' FA5:2HO* FA5 H1' FA5: H1* FA5 H61 FA5:1H6 FA5 H62 FA5:2H6 FA5 H2C1 FA6:1H2C FA6 H2C2 FA6:2H2C FA6 H6C1 FA6:1H6C FA6 H6C2 FA6:2H6C FA6 H121 FA9:1H12 FA9 H122 FA9:2H12 FA9 H171 FA9:1H17 FA9 H172 FA9:2H17 FA9 H173 FA9:3H17 FA9 H191 FA9:1H19 FA9 H192 FA9:2H19 FA9 H193 FA9:3H19 FA9 H221 FA9:1H22 FA9 H222 FA9:2H22 FA9 H261 FA9:1H26 FA9 H262 FA9:2H26 FA9 H271 FA9:1H27 FA9 H272 FA9:2H27 FA9 H9N1 FA9:1H9N FA9 H9N2 FA9:2H9N FA9 HOA2 FAA:2HOA FAA H51A FAA:AH51 FAA H52A FAA:AH52 FAA H4B FAA:AH4* FAA H3B FAA:AH3* FAA HO3A FAA:AHO3 FAA H2B FAA:AH2* FAA HO2A FAA:AHO2 FAA H1B FAA:AH1* FAA H8A FAA: AH8 FAA H61A FAA:AH61 FAA H62A FAA:AH62 FAA H2A FAA: AH2 FAA HM71 FAA:1HM7 FAA HM72 FAA:2HM7 FAA HM73 FAA:3HM7 FAA HM81 FAA:1HM8 FAA HM82 FAA:2HM8 FAA HM83 FAA:3HM8 FAA H1'1 FAA:1H1* FAA H1'2 FAA:2H1* FAA H2' FAA: H2* FAA HO2' FAA:*HO2 FAA H3' FAA: H3* FAA HO3' FAA:*HO3 FAA H4' FAA: H4* FAA HO4' FAA:*HO4 FAA H5'1 FAA:1H5* FAA H5'2 FAA:2H5* FAA H7P1 FAA:1H7P FAA H7P2 FAA:2H7P FAA HOP4 FAA:4HOP FAA HOA2 FAB:2HOA FAB H51A FAB:AH51 FAB H52A FAB:AH52 FAB H4B FAB:AH4* FAB H3B FAB:AH3* FAB HO3A FAB:AHO3 FAB H2B FAB:AH2* FAB HO2A FAB:AHO2 FAB H1B FAB:AH1* FAB H8A FAB: AH8 FAB H61A FAB:AH61 FAB H62A FAB:AH62 FAB H2A FAB: AH2 FAB HM71 FAB:1HM7 FAB HM72 FAB:2HM7 FAB HM73 FAB:3HM7 FAB HM81 FAB:1HM8 FAB HM82 FAB:2HM8 FAB HM83 FAB:3HM8 FAB H1'1 FAB:1H1* FAB H1'2 FAB:2H1* FAB H2' FAB: H2* FAB HO2' FAB:*HO2 FAB H3D FAB: H3* FAB HO3' FAB:*HO3 FAB H4' FAB: H4* FAB HO4' FAB:*HO4 FAB H5'1 FAB:1H5* FAB H5'2 FAB:2H5* FAB H4'1 FAB:1H4' FAB H4'2 FAB:2H4' FAB H4'3 FAB:3H4' FAB H51X FAB:1H5' FAB H52X FAB:2H5' FAB H5'3 FAB:3H5' FAB HOA2 FAD:2HOA FAD H51A FAD:AH51 FAD H52A FAD:AH52 FAD H4B FAD:AH4* FAD H3B FAD:AH3* FAD HO3A FAD:AHO3 FAD H2B FAD:AH2* FAD HO2A FAD:AHO2 FAD H1B FAD:AH1* FAD H8A FAD: AH8 FAD H61A FAD:AH61 FAD H62A FAD:AH62 FAD H2A FAD: AH2 FAD HM71 FAD:1HM7 FAD HM72 FAD:2HM7 FAD HM73 FAD:3HM7 FAD HM81 FAD:1HM8 FAD HM82 FAD:2HM8 FAD HM83 FAD:3HM8 FAD H1'1 FAD:1H1* FAD H1'2 FAD:2H1* FAD H2' FAD: H2* FAD HO2' FAD:*HO2 FAD H3' FAD: H3* FAD HO3' FAD:*HO3 FAD H4' FAD: H4* FAD HO4' FAD:*HO4 FAD H5'1 FAD:1H5* FAD H5'2 FAD:2H5* FAD HOP2 FAD:2HOP FAD HOA2 FAE:2HOA FAE H51A FAE:AH51 FAE H52A FAE:AH52 FAE H4B FAE:AH4* FAE H3B FAE:AH3* FAE HO3A FAE:AHO3 FAE H2B FAE:AH2* FAE HO2A FAE:AHO2 FAE H1B FAE:AH1* FAE H8A FAE: AH8 FAE H7A FAE: AH7 FAE H61A FAE:AH61 FAE H62A FAE:AH62 FAE H2A FAE: AH2 FAE HM71 FAE:1HM7 FAE HM72 FAE:2HM7 FAE HM73 FAE:3HM7 FAE HM81 FAE:1HM8 FAE HM82 FAE:2HM8 FAE HM83 FAE:3HM8 FAE H1'1 FAE:1H1* FAE H1'2 FAE:2H1* FAE H2' FAE: H2* FAE HO2' FAE:*HO2 FAE H3' FAE: H3* FAE HO3' FAE:*HO3 FAE H4' FAE: H4* FAE HO4' FAE:*HO4 FAE H5'1 FAE:1H5* FAE H5'2 FAE:2H5* FAE HOP2 FAE:2HOP FAE HAX1 FAF:1HAX FAF HAX2 FAF:2HAX FAF HAX3 FAF:3HAX FAF HBL1 FAF:1HBL FAF HBL2 FAF:2HBL FAF HDL1 FAF:1HDL FAF HDL2 FAF:2HDL FAF HDL3 FAF:3HDL FAF HDM1 FAF:1HDM FAF HDM2 FAF:2HDM FAF HDM3 FAF:3HDM FAF H32 FAG:2H3 FAG H2A1 FAG:1H2A FAG H2A2 FAG:2H2A FAG HOP2 FAG:2HOP FAG H5'1 FAG:1H5* FAG H5'2 FAG:2H5* FAG H4' FAG: H4* FAG H1' FAG: H1* FAG HN21 FAG:1HN2 FAG HN22 FAG:2HN2 FAG H2'1 FAG:1H2* FAG H2'2 FAG:2H2* FAG H3' FAG: H3* FAG HO3' FAG:*HO3 FAG HM1 FAG:1HM FAG HM2 FAG:2HM FAG HM3 FAG:3HM FAG HOP3 FAG:3HOP FAG H221 FAL:1H22 FAL H222 FAL:2H22 FAL H241 FAL:1H24 FAL H242 FAL:2H24 FAL H261 FAL:1H26 FAL H262 FAL:2H26 FAL H263 FAL:3H26 FAL H271 FAL:1H27 FAL H272 FAL:2H27 FAL H273 FAL:3H27 FAL H2A FAM: AH2 FAM H61A FAM:AH61 FAM H62A FAM:AH62 FAM H8A FAM: AH8 FAM H1B FAM:AH1* FAM H2B FAM:AH2* FAM HO2A FAM:AHO2 FAM H3B FAM:AH3* FAM HOA8 FAM:8HOA FAM HOA9 FAM:9HOA FAM H4B FAM:AH4* FAM H51A FAM:AH51 FAM H52A FAM:AH52 FAM HOA2 FAM:2HOA FAM HOA5 FAM:5HOA FAM H121 FAM:1H12 FAM H122 FAM:2H12 FAM H131 FAM:1H13 FAM H132 FAM:2H13 FAM H133 FAM:3H13 FAM H141 FAM:1H14 FAM H142 FAM:2H14 FAM H143 FAM:3H14 FAM H71 FAM:1H7 FAM H72 FAM:2H7 FAM H61 FAM:1H6 FAM H62 FAM:2H6 FAM H31 FAM:1H3 FAM H32 FAM:2H3 FAM H21 FAM:1H2 FAM H22 FAM:2H2 FAM HN21 FAM:1HN2 FAM HN22 FAM:2HN2 FAM HA'1 FAO:1HA' FAO HA'2 FAO:2HA' FAO HAA1 FAO:1HAA FAO HAA2 FAO:2HAA FAO H7M1 FAO:1H7M FAO H7M2 FAO:2H7M FAO H7M3 FAO:3H7M FAO H8M1 FAO:1H8M FAO H8M2 FAO:2H8M FAO H8M3 FAO:3H8M FAO H1'1 FAO:1H1* FAO H1'2 FAO:2H1* FAO H2' FAO: H2* FAO H3' FAO: H3* FAO H4' FAO: H4* FAO H5'1 FAO:1H5* FAO H5'2 FAO:2H5* FAO H241 FAP:1H24 FAP H242 FAP:2H24 FAP H261 FAP:1H26 FAP H262 FAP:2H26 FAP H281 FAP:1H28 FAP H282 FAP:2H28 FAP H283 FAP:3H28 FAP H291 FAP:1H29 FAP H292 FAP:2H29 FAP H293 FAP:3H29 FAP H11 FAR:1H1 FAR H12A FAR:2H1 FAR H13 FAR:3H1 FAR H51 FAR:1H5 FAR H52 FAR:2H5 FAR H61 FAR:1H6 FAR H62 FAR:2H6 FAR H91 FAR:1H9 FAR H92 FAR:2H9 FAR H111 FAR:1H11 FAR H112 FAR:2H11 FAR H141 FAR:1H14 FAR H142 FAR:2H14 FAR H143 FAR:3H14 FAR H151 FAR:1H15 FAR H152 FAR:2H15 FAR H153 FAR:3H15 FAR H41 FAR:1H4 FAR H42 FAR:2H4 FAR H43 FAR:3H4 FAR H101 FAR:1H10 FAR H102 FAR:2H10 FAR H103 FAR:3H10 FAR HOA2 FAS:2HOA FAS H51A FAS:AH51 FAS H52A FAS:AH52 FAS H4B FAS:AH4* FAS H3B FAS:AH3* FAS HO3A FAS:AHO3 FAS H2B FAS:AH2* FAS HO2A FAS:AHO2 FAS H1B FAS:AH1* FAS H8A FAS: AH8 FAS H61A FAS:AH61 FAS H62A FAS:AH62 FAS H2A FAS: AH2 FAS HM71 FAS:1HM7 FAS HM72 FAS:2HM7 FAS HM73 FAS:3HM7 FAS HM81 FAS:1HM8 FAS HM82 FAS:2HM8 FAS HM83 FAS:3HM8 FAS H1'1 FAS:1H1* FAS H1'2 FAS:2H1* FAS H2' FAS: H2* FAS HO2' FAS:*HO2 FAS H3' FAS: H3* FAS HO3' FAS:*HO3 FAS H4' FAS: H4* FAS HO4' FAS:*HO4 FAS H5'1 FAS:1H5* FAS H5'2 FAS:2H5* FAS HOP2 FAS:2HOP FAS H21 FAT:1H2 FAT H22 FAT:2H2 FAT H31 FAT:1H3 FAT H32 FAT:2H3 FAT H41 FAT:1H4 FAT H42 FAT:2H4 FAT H51 FAT:1H5 FAT H52 FAT:2H5 FAT H61 FAT:1H6 FAT H62 FAT:2H6 FAT H71 FAT:1H7 FAT H72 FAT:2H7 FAT H81 FAT:1H8 FAT H82 FAT:2H8 FAT H91 FAT:1H9 FAT H92 FAT:2H9 FAT H101 FAT:1H10 FAT H102 FAT:2H10 FAT H111 FAT:1H11 FAT H112 FAT:2H11 FAT H121 FAT:1H12 FAT H122 FAT:2H12 FAT H131 FAT:1H13 FAT H132 FAT:2H13 FAT H141 FAT:1H14 FAT H142 FAT:2H14 FAT H151 FAT:1H15 FAT H152 FAT:2H15 FAT H161 FAT:1H16 FAT H162 FAT:2H16 FAT H163 FAT:3H16 FAT H41 FB:1H4 FB H42 FB:2H4 FB H31 FB:1H3 FB H32 FB:2H3 FB HB1 FB:1HB FB HB2 FB:2HB FB HB3 FB:3HB FB HA1 FB:1HA FB HA2 FB:2HA FB H1 FBA:1H FBA H2A FBA:2H FBA HN1 FBA:1HN FBA HN2 FBA:2HN FBA HN3 FBA:3HN FBA H11 FBE:1H1 FBE H12 FBE:2H1 FBE H41 FBE:1H4 FBE H42 FBE:2H4 FBE HN1 FBE:1HN FBE HN2 FBE:2HN FBE H121 FBI:1H12 FBI H122 FBI:2H12 FBI H123 FBI:3H12 FBI H131 FBI:1H13 FBI H132 FBI:2H13 FBI H133 FBI:3H13 FBI H21 FBI:1H2 FBI H22 FBI:2H2 FBI H41 FBI:1H4 FBI H42 FBI:2H4 FBI H61 FBI:1H6 FBI H62 FBI:2H6 FBI H71 FBI:1H7 FBI H72 FBI:2H7 FBI H921 FBI:1H92 FBI H922 FBI:2H92 FBI H923 FBI:3H92 FBI H931 FBI:1H93 FBI H932 FBI:2H93 FBI H933 FBI:3H93 FBI H221 FBL:1H22 FBL H222 FBL:2H22 FBL H241 FBL:1H24 FBL H242 FBL:2H24 FBL H261 FBL:1H26 FBL H262 FBL:2H26 FBL H263 FBL:3H26 FBL H271 FBL:1H27 FBL H272 FBL:2H27 FBL H273 FBL:3H27 FBL HOP2 FBP:2HOP FBP HOP3 FBP:3HOP FBP H11 FBP:1H1 FBP H12 FBP:2H1 FBP H61 FBP:1H6 FBP H62 FBP:2H6 FBP HOP5 FBP:5HOP FBP HOP6 FBP:6HOP FBP HC8 FBQ:8HC FBQ HC9 FBQ:9HC FBQ HC01 FBQ:1HC0 FBQ H111 FBQ:1H11 FBQ H112 FBQ:2H11 FBQ H121 FBQ:1H12 FBQ H122 FBQ:2H12 FBQ H141 FBQ:1H14 FBQ H142 FBQ:2H14 FBQ HC61 FBQ:1HC6 FBQ HC81 FBQ:1HC8 FBQ HC91 FBQ:1HC9 FBQ HC02 FBQ:2HC0 FBQ HO62 FBQ:2HO6 FBQ H281 FBQ:1H28 FBQ H282 FBQ:2H28 FBQ H283 FBQ:3H28 FBQ H6SO FBQ:OH6S FBQ H21 FBR:1H2 FBR H22 FBR:2H2 FBR H31 FBR:1H3 FBR H32 FBR:2H3 FBR H161 FBR:1H16 FBR H162 FBR:2H16 FBR H171 FBR:1H17 FBR H172 FBR:2H17 FBR H181 FBR:1H18 FBR H182 FBR:2H18 FBR H191 FBR:1H19 FBR H192 FBR:2H19 FBR H201 FBR:1H20 FBR H202 FBR:2H20 FBR H203 FBR:3H20 FBR HN01 FBS:1HN0 FBS HN02 FBS:2HN0 FBS HN01 FBT:1HN0 FBT HN02 FBT:2HN0 FBT HN01 FBU:1HN0 FBU HN02 FBU:2HN0 FBU H171 FC1:1H17 FC1 H172 FC1:2H17 FC1 H173 FC1:3H17 FC1 H181 FC1:1H18 FC1 H182 FC1:2H18 FC1 H183 FC1:3H18 FC1 H111 FC1:1H11 FC1 H112 FC1:2H11 FC1 H141 FC1:1H14 FC1 H142 FC1:2H14 FC1 H151 FC1:1H15 FC1 H152 FC1:2H15 FC1 H61 FCA:1H6 FCA H62 FCA:2H6 FCA H63 FCA:3H6 FCA H61 FCB:1H6 FCB H62 FCB:2H6 FCB H63 FCB:3H6 FCB H11 FCG:1H1 FCG H12 FCG:2H1 FCG H1' FCG: H1* FCG HN61 FCG:1HN6 FCG HN62 FCG:2HN6 FCG H111 FCG:H11 FCG H122 FCG:H12 FCG H5'1 FCG:1H5* FCG H5'2 FCG:2H5* FCG H4' FCG: H4* FCG H3' FCG: H3* FCG H2' FCG: H2* FCG H1'1 FCG:1H1* FCG H1'2 FCG:2H1* FCG H7M1 FCG:1H7M FCG H7M2 FCG:2H7M FCG H7M3 FCG:3H7M FCG H141 FCG:1H11 FCG H112 FCG:2H11 FCG H121 FCG:1H12 FCG H142 FCG:2H12 FCG H8M1 FCG:1H8M FCG H8M2 FCG:2H8M FCG H8M3 FCG:3H8M FCG H141 FCI:1H14 FCI H142 FCI:2H14 FCI H171 FCI:1H17 FCI H172 FCI:2H17 FCI H181 FCI:1H18 FCI H182 FCI:2H18 FCI H211 FCI:1H21 FCI H212 FCI:2H21 FCI H241 FCI:1H24 FCI H242 FCI:2H24 FCI H251 FCI:1H25 FCI H252 FCI:2H25 FCI H271 FCI:1H27 FCI H272 FCI:2H27 FCI H291 FCI:1H29 FCI H292 FCI:2H29 FCI H301 FCI:1H30 FCI H302 FCI:2H30 FCI H321 FCI:1H32 FCI H322 FCI:2H32 FCI H341 FCI:1H34 FCI H342 FCI:2H34 FCI H351 FCI:1H35 FCI H352 FCI:2H35 FCI H353 FCI:3H35 FCI H361 FCI:1H36 FCI H362 FCI:2H36 FCI H363 FCI:3H36 FCI H371 FCI:1H37 FCI H372 FCI:2H37 FCI H373 FCI:3H37 FCI H381 FCI:1H38 FCI H382 FCI:2H38 FCI HN1 FCL:1HN FCL HN2 FCL:2HN FCL HBC1 FCL:1HBC FCL HBC2 FCL:2HBC FCL H31 FCN:1H3 FCN H32 FCN:2H3 FCN H33 FCN:3H3 FCN HOP2 FCN:2HOP FCN HOP3 FCN:3HOP FCN HA1 FCP:1HA FCP HB2 FCP:2HB FCP HB1 FCP:1HB FCP HC2 FCP:2HC FCP HC1 FCP:1HC FCP HD2 FCP:2HD FCP HE3 FCP:3HE FCP HD1 FCP:1HD FCP HE2 FCP:2HE FCP HF3 FCP:3HF FCP H6A1 FCT:1H6A FCT H6A2 FCT:2H6A FCT HOA3 FCT:3HOA FCT HOA6 FCT:6HOA FCT H6B1 FCT:1H6B FCT H6B2 FCT:2H6B FCT HOB2 FCT:2HOB FCT HOB3 FCT:3HOB FCT HOB6 FCT:6HOB FCT H6C1 FCT:1H6C FCT H6C2 FCT:2H6C FCT HOC2 FCT:2HOC FCT HOC3 FCT:3HOC FCT HOC4 FCT:4HOC FCT HOC6 FCT:6HOC FCT H2A FCX: AH2 FCX H61A FCX:AH61 FCX H62A FCX:AH62 FCX H8A FCX: AH8 FCX H1B FCX:AH1* FCX H2B FCX:AH2* FCX HO2A FCX:AHO2 FCX H3B FCX:AH3* FCX HOA8 FCX:8HOA FCX HOA9 FCX:9HOA FCX H4B FCX:AH4* FCX H51A FCX:AH51 FCX H52A FCX:AH52 FCX HOA2 FCX:2HOA FCX HOA5 FCX:5HOA FCX H121 FCX:1H12 FCX H122 FCX:2H12 FCX H131 FCX:1H13 FCX H132 FCX:2H13 FCX H133 FCX:3H13 FCX H141 FCX:1H14 FCX H142 FCX:2H14 FCX H143 FCX:3H14 FCX H71 FCX:1H7 FCX H72 FCX:2H7 FCX H61 FCX:1H6 FCX H62 FCX:2H6 FCX H31 FCX:1H3 FCX H32 FCX:2H3 FCX H21 FCX:1H2 FCX H22 FCX:2H2 FCX HB1 FCY:1HB FCY HB2 FCY:2HB FCY H661 FD1:1H66 FD1 H641 FD1:1H64 FD1 H631 FD1:1H63 FD1 H621 FD1:1H62 FD1 H431 FD1:1H43 FD1 H432 FD1:2H43 FD1 H541 FD1:1H54 FD1 H341 FD1:1H34 FD1 H342 FD1:2H34 FD1 H311 FD1:1H31 FD1 H711 FD1:1H71 FD1 H721 FD1:1H72 FD1 H722 FD1:2H72 FD1 H741 FD1:1H74 FD1 H742 FD1:2H74 FD1 H751 FD1:1H75 FD1 H752 FD1:2H75 FD1 H401 FD1:1H40 FD1 H402 FD1:2H40 FD1 H921 FD1:1H92 FD1 H291 FD1:1H29 FD1 H31 FD1:1H3 FD1 H41 FD1:1H4 FD1 H11 FD1:1H1 FD1 H51 FD1:1H5 FD1 H61 FD1:1H6 FD1 H71 FD1:1H7 FD1 H81 FD1:1H8 FD1 H661 FD2:1H66 FD2 H641 FD2:1H64 FD2 H631 FD2:1H63 FD2 H621 FD2:1H62 FD2 H431 FD2:1H43 FD2 H432 FD2:2H43 FD2 H541 FD2:1H54 FD2 H341 FD2:1H34 FD2 H342 FD2:2H34 FD2 H311 FD2:1H31 FD2 H711 FD2:1H71 FD2 H712 FD2:2H71 FD2 H721 FD2:1H72 FD2 H722 FD2:2H72 FD2 H741 FD2:1H74 FD2 H742 FD2:2H74 FD2 H751 FD2:1H75 FD2 H752 FD2:2H75 FD2 H401 FD2:1H40 FD2 H991 FD2:1H99 FD2 H992 FD2:2H99 FD2 H993 FD2:3H99 FD2 H291 FD2:1H29 FD2 H31 FD2:1H3 FD2 H41 FD2:1H4 FD2 H11 FD2:1H1 FD2 H51 FD2:1H5 FD2 H61 FD2:1H6 FD2 H71 FD2:1H7 FD2 H81 FD2:1H8 FD2 H661 FD3:1H66 FD3 H641 FD3:1H64 FD3 H631 FD3:1H63 FD3 H621 FD3:1H62 FD3 H431 FD3:1H43 FD3 H432 FD3:2H43 FD3 H541 FD3:1H54 FD3 H341 FD3:1H34 FD3 H342 FD3:2H34 FD3 H311 FD3:1H31 FD3 H711 FD3:1H71 FD3 H712 FD3:2H71 FD3 H721 FD3:1H72 FD3 H722 FD3:2H72 FD3 H741 FD3:1H74 FD3 H742 FD3:2H74 FD3 H751 FD3:1H75 FD3 H752 FD3:2H75 FD3 H401 FD3:1H40 FD3 H291 FD3:1H29 FD3 H31 FD3:1H3 FD3 H41 FD3:1H4 FD3 H11 FD3:1H1 FD3 H51 FD3:1H5 FD3 H61 FD3:1H6 FD3 H71 FD3:1H7 FD3 H81 FD3:1H8 FD3 H661 FD4:1H66 FD4 H641 FD4:1H64 FD4 H631 FD4:1H63 FD4 H621 FD4:1H62 FD4 H431 FD4:1H43 FD4 H432 FD4:2H43 FD4 H541 FD4:1H54 FD4 H341 FD4:1H34 FD4 H342 FD4:2H34 FD4 H311 FD4:1H31 FD4 H711 FD4:1H71 FD4 H712 FD4:2H71 FD4 H721 FD4:1H72 FD4 H722 FD4:2H72 FD4 H741 FD4:1H74 FD4 H742 FD4:2H74 FD4 H751 FD4:1H75 FD4 H752 FD4:2H75 FD4 H291 FD4:1H29 FD4 H31 FD4:1H3 FD4 H41 FD4:1H4 FD4 H11 FD4:1H1 FD4 H51 FD4:1H5 FD4 H61 FD4:1H6 FD4 H71 FD4:1H7 FD4 H81 FD4:1H8 FD4 H551 FD4:1H55 FD4 H552 FD4:2H55 FD4 H553 FD4:3H55 FD4 HOA2 FDA:2HOA FDA H51A FDA:AH51 FDA H52A FDA:AH52 FDA H4B FDA:AH4* FDA H3B FDA:AH3* FDA HO3A FDA:AHO3 FDA H2B FDA:AH2* FDA HO2A FDA:AHO2 FDA H1B FDA:AH1* FDA H8A FDA: AH8 FDA H61A FDA:AH61 FDA H62A FDA:AH62 FDA H2A FDA: AH2 FDA HM71 FDA:1HM7 FDA HM72 FDA:2HM7 FDA HM73 FDA:3HM7 FDA HM81 FDA:1HM8 FDA HM82 FDA:2HM8 FDA HM83 FDA:3HM8 FDA H1'1 FDA:1H1* FDA H1'2 FDA:2H1* FDA H2' FDA: H2* FDA HO2' FDA:*HO2 FDA H3' FDA: H3* FDA HO3' FDA:*HO3 FDA H4' FDA: H4* FDA HO4' FDA:*HO4 FDA H5'1 FDA:1H5* FDA H5'2 FDA:2H5* FDA HOP2 FDA:2HOP FDA H21 FDC:1H2 FDC H22 FDC:2H2 FDC H41 FDC:1H4 FDC H42 FDC:2H4 FDC H81 FDC:1H8 FDC H82 FDC:2H8 FDC H10O FDC:OH10 FDC H11O FDC:OH11 FDC H101 FDC:1H10 FDC H102 FDC:2H10 FDC HBD1 FDD:1HBD FDD HBD2 FDD:2HBD FDD HAD1 FDD:1HAD FDD HAD2 FDD:2HAD FDD HMD1 FDD:1HMD FDD HMD2 FDD:2HMD FDD HMD3 FDD:3HMD FDD HMF1 FDD:1HMF FDD HMF2 FDD:2HMF FDD HMF3 FDD:3HMF FDD HMC1 FDD:1HMC FDD HMC2 FDD:2HMC FDD HMC3 FDD:3HMC FDD HME1 FDD:1HME FDD HME2 FDD:2HME FDD HME3 FDD:3HME FDD HMB1 FDD:1HMB FDD HMB2 FDD:2HMB FDD HMB3 FDD:3HMB FDD HMA1 FDD:1HMA FDD HMA2 FDD:2HMA FDD HMA3 FDD:3HMA FDD HAA1 FDD:1HAA FDD HAA2 FDD:2HAA FDD HBA1 FDD:1HBA FDD HBA2 FDD:2HBA FDD HAA1 FDE:1HAA FDE HAA2 FDE:2HAA FDE HBA1 FDE:1HBA FDE HBA2 FDE:2HBA FDE HMA1 FDE:1HMA FDE HMA2 FDE:2HMA FDE HMA3 FDE:3HMA FDE HME1 FDE:1HME FDE HME2 FDE:2HME FDE HME3 FDE:3HME FDE HMF1 FDE:1HMF FDE HMF2 FDE:2HMF FDE HMF3 FDE:3HMF FDE HMD1 FDE:1HMD FDE HMD2 FDE:2HMD FDE HMD3 FDE:3HMD FDE HAD1 FDE:1HAD FDE HAD2 FDE:2HAD FDE HBD1 FDE:1HBD FDE HBD2 FDE:2HBD FDE H171 FDI:1H17 FDI H172 FDI:2H17 FDI H181 FDI:1H18 FDI H182 FDI:2H18 FDI H183 FDI:3H18 FDI H241 FDI:1H24 FDI H242 FDI:2H24 FDI H261 FDI:1H26 FDI H262 FDI:2H26 FDI H263 FDI:3H26 FDI H341 FDI:1H34 FDI H342 FDI:2H34 FDI H343 FDI:3H34 FDI HC61 FDM:1HC6 FDM HN31 FDM:1HN3 FDM HC71 FDM:1HC7 FDM HC72 FDM:2HC7 FDM HC73 FDM:3HC7 FDM H1'1 FDM:1H1* FDM H2'1 FDM:1H2* FDM H2'2 FDM:2H2* FDM H3'1 FDM:1H3* FDM H4'1 FDM:1H4* FDM H5'1 FDM:1H5* FDM H5'2 FDM:2H5* FDM HP31 FDM:1HP3 FDM HP21 FDM:1HP2 FDM H71 FDN:1H7 FDN H72 FDN:2H7 FDN H73 FDN:3H7 FDN HOP2 FDP:2HOP FDP HOP3 FDP:3HOP FDP H11 FDP:1H1 FDP H12 FDP:2H1 FDP H61 FDP:1H6 FDP H62 FDP:2H6 FDP HOP5 FDP:5HOP FDP HOP6 FDP:6HOP FDP HOP2 FDQ:2HOP FDQ HOP3 FDQ:3HOP FDQ H211 FDQ:1H21 FDQ H212 FDQ:2H21 FDQ H61 FDQ:1H6 FDQ H62 FDQ:2H6 FDQ HOP5 FDQ:5HOP FDQ HOP6 FDQ:6HOP FDQ H191 FDT:1H19 FDT H192 FDT:2H19 FDT H193 FDT:3H19 FDT HAW1 FE1:1HAW FE1 HAW2 FE1:2HAW FE1 HAX1 FE1:1HAX FE1 HAX2 FE1:2HAX FE1 HBA1 FE1:1HBA FE1 HBA2 FE1:2HBA FE1 HBB1 FE1:1HBB FE1 HBB2 FE1:2HBB FE1 HBF1 FE1:1HBF FE1 HBF2 FE1:2HBF FE1 HBF3 FE1:3HBF FE1 HAB1 FE1:1HAB FE1 HAB2 FE1:2HAB FE1 HAB3 FE1:3HAB FE1 H91 FE1:1H9 FE1 H92 FE1:2H9 FE1 HN41 FE1:1HN4 FE1 HN42 FE1:2HN4 FE1 HN21 FE1:1HN2 FE1 HN22 FE1:2HN2 FE1 HBA1 FEC:1HBA FEC HBA2 FEC:2HBA FEC HAA1 FEC:1HAA FEC HAA2 FEC:2HAA FEC HMB1 FEC:1HMB FEC HMB2 FEC:2HMB FEC HMB3 FEC:3HMB FEC HAB1 FEC:1HAB FEC HAB2 FEC:2HAB FEC HBB1 FEC:1HBB FEC HBB2 FEC:2HBB FEC HAC1 FEC:1HAC FEC HAC2 FEC:2HAC FEC HBC1 FEC:1HBC FEC HBC2 FEC:2HBC FEC HMC1 FEC:1HMC FEC HMC2 FEC:2HMC FEC HMC3 FEC:3HMC FEC HAD1 FEC:1HAD FEC HAD2 FEC:2HAD FEC HBD1 FEC:1HBD FEC HBD2 FEC:2HBD FEC HMD1 FEC:1HMD FEC HMD2 FEC:2HMD FEC HMD3 FEC:3HMD FEC HMA1 FEC:1HMA FEC HMA2 FEC:2HMA FEC HMA3 FEC:3HMA FEC HO11 FEL:1HO1 FEL HO12 FEL:2HO1 FEL HO21 FEL:1HO2 FEL HO22 FEL:2HO2 FEL HO31 FEL:1HO3 FEL HO32 FEL:2HO3 FEL H111 FEM:1H11 FEM H112 FEM:2H11 FEM H121 FEM:1H12 FEM H122 FEM:2H12 FEM H151 FEM:1H15 FEM H152 FEM:2H15 FEM H161 FEM:1H16 FEM H162 FEM:2H16 FEM H21 FEN:1H2 FEN H22 FEN:2H2 FEN H31 FEN:1H3 FEN H32 FEN:2H3 FEN H41 FEN:1H4 FEN H42 FEN:2H4 FEN H161 FEN:1H16 FEN H162 FEN:2H16 FEN H163 FEN:3H16 FEN H171 FEN:1H17 FEN H172 FEN:2H17 FEN H173 FEN:3H17 FEN H181 FEN:1H18 FEN H182 FEN:2H18 FEN H183 FEN:3H18 FEN H191 FEN:1H19 FEN H192 FEN:2H19 FEN H193 FEN:3H19 FEN H201 FEN:1H20 FEN H202 FEN:2H20 FEN H203 FEN:3H20 FEN HO4' FEN:'HO4 FEN HC11 FEP:1HC1 FEP HC12 FEP:2HC1 FEP HC21 FEP:1HC2 FEP HC22 FEP:2HC2 FEP HC31 FEP:1HC3 FEP HC32 FEP:2HC3 FEP HC41 FEP:1HC4 FEP HC42 FEP:2HC4 FEP H101 FER:1H10 FER H102 FER:2H10 FER H103 FER:3H10 FER H11 FET:1H1 FET H12 FET:2H1 FET H21 FET:1H2 FET H22 FET:2H2 FET H261 FEX:1H26 FEX H262 FEX:2H26 FEX H263 FEX:3H26 FEX H241 FEX:1H24 FEX H242 FEX:2H24 FEX H231 FEX:1H23 FEX H232 FEX:2H23 FEX H151 FEX:1H15 FEX H152 FEX:2H15 FEX H21 FEX:1H2 FEX H22A FEX:2H2 FEX H23 FEX:3H2 FEX H31A FEX:1H3 FEX H32A FEX:2H3 FEX H33 FEX:3H3 FEX HN41 FF3:1HN4 FF3 HN42 FF3:2HN4 FF3 HN31 FF3:1HN3 FF3 HN32 FF3:2HN3 FF3 H11 FFA:1H1 FFA H12 FFA:2H1 FFA H21 FFA:1H2 FFA H22 FFA:2H2 FFA H91 FFA:1H9 FFA H92 FFA:2H9 FFA H101 FFA:1H10 FFA H102 FFA:2H10 FFA H111 FFA:1H11 FFA H112 FFA:2H11 FFA H121 FFA:1H12 FFA H122 FFA:2H12 FFA H151 FFA:1H15 FFA H152 FFA:2H15 FFA H161 FFA:1H16 FFA H162 FFA:2H16 FFA H181 FFA:1H18 FFA H182 FFA:2H18 FFA H183 FFA:3H18 FFA H191 FFA:1H19 FFA H192 FFA:2H19 FFA H193 FFA:3H19 FFA H01C FFB:CH01 FFB H02C FFB:CH02 FFB H04C FFB:CH04 FFB H05C FFB:CH05 FFB H09N FFB:NH09 FFB H101 FFB:1H10 FFB H102 FFB:2H10 FFB HNP1 FFB:1HNP FFB HNP2 FFB:2HNP FFB H1A1 FFC:1H1A FFC H1A2 FFC:2H1A FFC H6A1 FFC:1H6A FFC H6A2 FFC:2H6A FFC HO3A FFC:AHO3 FFC HO6A FFC:AHO6 FFC H6B1 FFC:1H6B FFC H6B2 FFC:2H6B FFC HO2B FFC:BHO2 FFC HO3B FFC:BHO3 FFC HO4B FFC:BHO4 FFC HO6B FFC:BHO6 FFC HOP3 FFD:3HOP FFD H1' FFD: H1* FFD H2'1 FFD:1H2* FFD H2'2 FFD:2H2* FFD H3' FFD: H3* FFD H4' FFD: H4* FFD H5'1 FFD:1H5* FFD H5'2 FFD:2H5* FFD HOP2 FFD:2HOP FFD HOA2 FFF:2HOA FFF HOB2 FFF:2HOB FFF HOB3 FFF:3HOB FFF H11 FFF:1H1 FFF H12 FFF:2H1 FFF H41 FFF:1H4 FFF H42 FFF:2H4 FFF H51 FFF:1H5 FFF H52 FFF:2H5 FFF H81 FFF:1H8 FFF H82 FFF:2H8 FFF H91 FFF:1H9 FFF H92 FFF:2H9 FFF H121 FFF:1H12 FFF H122 FFF:2H12 FFF H123 FFF:3H12 FFF H151 FFF:1H15 FFF H152 FFF:2H15 FFF H153 FFF:3H15 FFF H131 FFF:1H13 FFF H132 FFF:2H13 FFF H133 FFF:3H13 FFF HN21 FFO:1HN2 FFO HN22 FFO:2HN2 FFO H91 FFO:1H9 FFO H92 FFO:2H9 FFO HB1 FFO:1HB FFO HB2 FFO:2HB FFO HG1 FFO:1HG FFO HG2 FFO:2HG FFO HOE2 FFO:2HOE FFO H181 FG1:1H18 FG1 H182 FG1:2H18 FG1 H171 FG1:1H17 FG1 H172 FG1:2H17 FG1 H71 FG1:1H7 FG1 H72 FG1:2H7 FG1 H61 FG1:1H6 FG1 H62 FG1:2H6 FG1 H21A FG1:1H2 FG1 H22 FG1:2H2 FG1 H141 FG1:1H14 FG1 H142 FG1:2H14 FG1 H2 FGL:2H FGL H FGL:1H FGL HN1 FGP:1HN FGP HN2 FGP:2HN FGP H101 FGR:1H10 FGR H102 FGR:2H10 FGR H231 FGR:1H23 FGR H232 FGR:2H23 FGR H2C1 FHL:1H2C FHL H2C2 FHL:2H2C FHL H3C1 FHL:1H3C FHL H3C2 FHL:2H3C FHL H5C1 FHL:1H5C FHL H5C2 FHL:2H5C FHL HEC1 FHL:1HEC FHL HEC2 FHL:2HEC FHL HDC1 FHL:1HDC FHL HDC2 FHL:2HDC FHL HGC1 FHL:1HGC FHL HGC2 FHL:2HGC FHL HBC1 FHL:1HBC FHL HBC2 FHL:2HBC FHL HN1 FHL:1HN FHL HN2 FHL:2HN FHL H131 FHM:1H13 FHM H132 FHM:2H13 FHM H121 FHM:1H12 FHM H122 FHM:2H12 FHM H123 FHM:3H12 FHM H41 FHP:1H4 FHP H42 FHP:2H4 FHP H51 FHP:1H5 FHP H52 FHP:2H5 FHP H81 FHP:1H8 FHP H82 FHP:2H8 FHP H91 FHP:1H9 FHP H92 FHP:2H9 FHP H121 FHP:1H12 FHP H122 FHP:2H12 FHP H123 FHP:3H12 FHP H131 FHP:1H13 FHP H132 FHP:2H13 FHP H133 FHP:3H13 FHP H141 FHP:1H14 FHP H142 FHP:2H14 FHP H143 FHP:3H14 FHP H151 FHP:1H15 FHP H152 FHP:2H15 FHP H153 FHP:3H15 FHP HOA2 FHP:2HOA FHP HOA3 FHP:3HOA FHP H1' FHU: H1* FHU H2' FHU: H2* FHU HO2' FHU:2HO* FHU H3' FHU: H3* FHU H4' FHU: H4* FHU HO3' FHU:H3T FHU H5' FHU:1H5* FHU H5'' FHU:2H5* FHU HOP2 FHU:2HOP FHU HOP3 FHU:3HOP FHU H211 FID:1H21 FID H212 FID:2H21 FID H8I1 FID:1H8I FID H8I2 FID:2H8I FID H251 FIH:1H25 FIH H252 FIH:2H25 FIH H253 FIH:3H25 FIH H11 FII:1H1 FII H12 FII:2H1 FII H13 FII:3H1 FII H61 FII:1H6 FII H62 FII:2H6 FII H63 FII:3H6 FII H101 FII:1H10 FII H111 FII:1H11 FII H112 FII:2H11 FII H121 FII:1H12 FII H122 FII:2H12 FII H181 FII:1H18 FII H182 FII:2H18 FII H183 FII:3H18 FII H221 FII:1H22 FII H231 FII:1H23 FII H232 FII:2H23 FII H241 FII:1H24 FII H242 FII:2H24 FII H301 FII:1H30 FII H302 FII:2H30 FII H303 FII:3H30 FII H341 FII:1H34 FII H351 FII:1H35 FII H352 FII:2H35 FII HN1 FII:1HN FII H451 FII:1H45 FII H452 FII:2H45 FII H501 FII:1H50 FII H511 FII:1H51 FII H201 FIL:1H20 FIL H202 FIL:2H20 FIL H171 FIL:1H17 FIL H172 FIL:2H17 FIL H173 FIL:3H17 FIL H81 FIL:1H8 FIL H82 FIL:2H8 FIL H83 FIL:3H8 FIL H121 FIL:1H12 FIL H122 FIL:2H12 FIL H131 FIL:1H13 FIL H132 FIL:2H13 FIL H141 FIL:1H14 FIL H142 FIL:2H14 FIL H151 FIL:1H15 FIL H152 FIL:2H15 FIL H31 FIN:1H3 FIN H32 FIN:2H3 FIN H33 FIN:3H3 FIN H121 FIN:1H12 FIN H122 FIN:2H12 FIN H123 FIN:3H12 FIN H131 FIN:1H13 FIN H132 FIN:2H13 FIN H133 FIN:3H13 FIN H3P1 FIP:1H3P FIP H3P2 FIP:2H3P FIP H2P1 FIP:1H2P FIP H2P2 FIP:2H2P FIP H1P1 FIP:1H1P FIP H1P2 FIP:2H1P FIP H211 FIR:1H21 FIR H212 FIR:2H21 FIR H8I1 FIR:1H8I FIR H8I2 FIR:2H8I FIR H211 FIS:1H21 FIS H212 FIS:2H21 FIS H8I1 FIS:1H8I FIS H8I2 FIS:2H8I FIS H31A FK5:1H3 FK5 H32A FK5:2H3 FK5 H41 FK5:1H4 FK5 H42 FK5:2H4 FK5 H51 FK5:1H5 FK5 H52 FK5:2H5 FK5 H61 FK5:1H6 FK5 H62 FK5:2H6 FK5 H121 FK5:1H12 FK5 H122 FK5:2H12 FK5 H161 FK5:1H16 FK5 H162 FK5:2H16 FK5 H181 FK5:1H18 FK5 H182 FK5:2H18 FK5 H231 FK5:1H23 FK5 H232 FK5:2H23 FK5 H301 FK5:1H30 FK5 H302 FK5:2H30 FK5 H331 FK5:1H33 FK5 H332 FK5:2H33 FK5 H341 FK5:1H34 FK5 H342 FK5:2H34 FK5 H351 FK5:1H35 FK5 H352 FK5:2H35 FK5 H353 FK5:3H35 FK5 H361 FK5:1H36 FK5 H362 FK5:2H36 FK5 H363 FK5:3H36 FK5 H371 FK5:1H37 FK5 H372 FK5:2H37 FK5 H373 FK5:3H37 FK5 H381 FK5:1H38 FK5 H382 FK5:2H38 FK5 H401 FK5:1H40 FK5 H402 FK5:2H40 FK5 H411 FK5:1H41 FK5 H412 FK5:2H41 FK5 H413 FK5:3H41 FK5 H421 FK5:1H42 FK5 H422 FK5:2H42 FK5 H423 FK5:3H42 FK5 H431 FK5:1H43 FK5 H432 FK5:2H43 FK5 H433 FK5:3H43 FK5 H441 FK5:1H44 FK5 H442 FK5:2H44 FK5 H443 FK5:3H44 FK5 H451 FK5:1H45 FK5 H452 FK5:2H45 FK5 H453 FK5:3H45 FK5 HO10 FK5:0HO1 FK5 HO12 FK5:2HO1 FK5 H101 FK6:1H10 FK6 H102 FK6:2H10 FK6 H103 FK6:3H10 FK6 H141 FK6:1H14 FK6 H142 FK6:2H14 FK6 H351 FK6:1H35 FK6 H352 FK6:2H35 FK6 H381 FK6:1H38 FK6 H382 FK6:2H38 FK6 H411 FK6:1H41 FK6 H412 FK6:2H41 FK6 H441 FK6:1H44 FK6 H442 FK6:2H44 FK6 H471 FK6:1H47 FK6 H472 FK6:2H47 FK6 H473 FK6:3H47 FK6 H31A FKA:1H3 FKA H32 FKA:2H3 FKA H41 FKA:1H4 FKA H42 FKA:2H4 FKA H51 FKA:1H5 FKA H52 FKA:2H5 FKA H61 FKA:1H6 FKA H62 FKA:2H6 FKA H111 FKA:1H11 FKA H112 FKA:2H11 FKA H341 FKA:1H34 FKA H342 FKA:2H34 FKA H343 FKA:3H34 FKA H421 FKA:1H42 FKA H422 FKA:2H42 FKA H423 FKA:3H42 FKA H431 FKA:1H43 FKA H432 FKA:2H43 FKA H433 FKA:3H43 FKA H151 FKA:1H15 FKA H152 FKA:2H15 FKA H351 FKA:1H35 FKA H352 FKA:2H35 FKA H353 FKA:3H35 FKA H171 FKA:1H17 FKA H172 FKA:2H17 FKA H361 FKA:1H36 FKA H362 FKA:2H36 FKA H363 FKA:3H36 FKA H371 FKA:1H37 FKA H372 FKA:2H37 FKA H221 FKA:1H22 FKA H222 FKA:2H22 FKA H401 FKA:1H40 FKA H402 FKA:2H40 FKA H403 FKA:3H40 FKA H411 FKA:1H41 FKA H412 FKA:2H41 FKA H413 FKA:3H41 FKA H291 FKA:1H29 FKA H292 FKA:2H29 FKA H321 FKA:1H32 FKA H322 FKA:2H32 FKA H331 FKA:1H33 FKA H332 FKA:2H33 FKA H441 FKA:1H44 FKA H442 FKA:2H44 FKA H443 FKA:3H44 FKA H511 FKA:1H51 FKA H512 FKA:2H51 FKA H491 FKA:1H49 FKA H492 FKA:2H49 FKA H91 FKD:1H9 FKD H92 FKD:2H9 FKD H2 FKI:2H FKI H1 FKI:1H FKI HB2 FKI:2HB FKI HB1 FKI:1HB FKI H21 FKP:1H2 FKP H22 FKP:2H2 FKP H31 FKP:1H3 FKP H32 FKP:2H3 FKP H121 FKP:1H12 FKP H122 FKP:2H12 FKP H151 FKP:1H15 FKP H152 FKP:2H15 FKP H161 FKP:1H16 FKP H162 FKP:2H16 FKP H163 FKP:3H16 FKP H171 FKP:1H17 FKP H172 FKP:2H17 FKP H173 FKP:3H17 FKP H181 FKP:1H18 FKP H182 FKP:2H18 FKP H183 FKP:3H18 FKP H191 FKP:1H19 FKP H192 FKP:2H19 FKP H193 FKP:3H19 FKP H201 FKP:1H20 FKP H202 FKP:2H20 FKP H203 FKP:3H20 FKP H221 FKP:1H22 FKP H222 FKP:2H22 FKP H231 FKP:1H23 FKP H232 FKP:2H23 FKP H241 FKP:1H24 FKP H242 FKP:2H24 FKP H251 FKP:1H25 FKP H252 FKP:2H25 FKP H261 FKP:1H26 FKP H262 FKP:2H26 FKP H271 FKP:1H27 FKP H272 FKP:2H27 FKP H281 FKP:1H28 FKP H282 FKP:2H28 FKP H291 FKP:1H29 FKP H292 FKP:2H29 FKP H301 FKP:1H30 FKP H302 FKP:2H30 FKP H303 FKP:3H30 FKP HN11 FL1:1HN1 FL1 HN12 FL1:2HN1 FL1 H71 FL1:1H7 FL1 H72 FL1:2H7 FL1 H291 FL1:1H29 FL1 H292 FL1:2H29 FL1 H131 FL2:1H13 FL2 H132 FL2:2H13 FL2 H133 FL2:3H13 FL2 H161 FL2:1H16 FL2 H162 FL2:2H16 FL2 H163 FL2:3H16 FL2 H51 FL8:1H5 FL8 H71 FL8:1H7 FL8 H81 FL8:1H8 FL8 H2'1 FL8:1H2' FL8 H6'1 FL8:1H6' FL8 H4'O FL8:OH4' FL8 H3'1 FL8:1H3* FL8 H3'2 FL8:2H3* FL8 H3'3 FL8:3H3* FL8 HO61 FL8:1HO6 FL8 H6' FL9: H6* FL9 HO2' FL9:*HO2 FL9 HO4' FL9:*HO4 FL9 H2 FLA: HN2 FLA HA1 FLC:1HA FLC HA2 FLC:2HA FLC HG1 FLC:1HG FLC HG2 FLC:2HG FLC H181 FLD:1H18 FLD H182 FLD:2H18 FLD H183 FLD:3H18 FLD H191 FLD:1H19 FLD H192 FLD:2H19 FLD H201 FLD:1H20 FLD H202 FLD:2H20 FLD HN21 FLD:1HN2 FLD HN22 FLD:2HN2 FLD H221 FLD:1H22 FLD H222 FLD:2H22 FLD H231 FLD:1H23 FLD H232 FLD:2H23 FLD H241 FLD:1H24 FLD H242 FLD:2H24 FLD H1X FLD: XH1 FLD H3X FLD: XH3 FLD H4X FLD: XH4 FLD H5X FLD: XH5 FLD H6X FLD: XH6 FLD HN7X FLD:XHN7 FLD H8X FLD: XH8 FLD H9X FLD: XH9 FLD H11X FLD:XH11 FLD HX81 FLD:1HX8 FLD HX82 FLD:2HX8 FLD HX83 FLD:3HX8 FLD HX91 FLD:1HX9 FLD HX92 FLD:2HX9 FLD HX01 FLD:1HX0 FLD HX02 FLD:2HX0 FLD HN1X FLD:XHN1 FLD HN2X FLD:XHN2 FLD HX21 FLD:1HX2 FLD HX22 FLD:2HX2 FLD HX31 FLD:1HX3 FLD HX32 FLD:2HX3 FLD HX41 FLD:1HX4 FLD HX42 FLD:2HX4 FLD H FLE: HN FLE HB2 FLE:1HB FLE HB3 FLE:2HB FLE HD11 FLE:1HD1 FLE HD12 FLE:2HD1 FLE HD13 FLE:3HD1 FLE HD21 FLE:1HD2 FLE HD22 FLE:2HD2 FLE HD23 FLE:3HD2 FLE H221 FLG:1H22 FLG H222 FLG:2H22 FLG H231 FLG:1H23 FLG H232 FLG:2H23 FLG H233 FLG:3H23 FLG H11 FLH:1H1 FLH H12 FLH:2H1 FLH HC41 FLM:1HC4 FLM HC42 FLM:2HC4 FLM HC43 FLM:3HC4 FLM HN61 FLM:1HN6 FLM HN62 FLM:2HN6 FLM H3 FLN:3H FLN H2' FLN: H2* FLN H3' FLN: H3* FLN H4' FLN: H4* FLN H5' FLN: H5* FLN H6' FLN: H6* FLN H5 FLN:5H FLN H6 FLN:6H FLN H7 FLN:7H FLN H8 FLN:8H FLN H131 FLP:1H13 FLP H132 FLP:2H13 FLP H133 FLP:3H13 FLP H161 FLQ:1H16 FLQ H162 FLQ:2H16 FLQ H171 FLQ:1H17 FLQ H172 FLQ:2H17 FLQ H181 FLQ:1H18 FLQ H182 FLQ:2H18 FLQ H191 FLQ:1H19 FLQ H192 FLQ:2H19 FLQ H2' FLQ: H2* FLQ H3' FLQ: H3* FLQ H6' FLQ: H6* FLQ H201 FLQ:1H20 FLQ H202 FLQ:2H20 FLQ H211 FLQ:1H21 FLQ H212 FLQ:2H21 FLQ H231 FLQ:1H23 FLQ H232 FLQ:2H23 FLQ H233 FLQ:3H23 FLQ H FLT:1HN FLT H2 FLT:2HN FLT HA1 FLT:1HA FLT HB2 FLT:1HB FLT HB3 FLT:2HB FLT HD1 FLT:1HD1 FLT HE1 FLT:1HE1 FLT HD2 FLT:1HD2 FLT HE2 FLT:1HE2 FLT HO11 FLT:1HO1 FLT HO31 FLT:1HO3 FLT HXT FLT:1HOX FLT HB1 FLX:1HB FLX HB2 FLX:2HB FLX HD11 FLX:1HD1 FLX HD12 FLX:2HD1 FLX HD13 FLX:3HD1 FLX HD21 FLX:1HD2 FLX HD22 FLX:2HD2 FLX HD23 FLX:3HD2 FLX H21A FLX:1H2 FLX H22 FLX:2H2 FLX HOP2 FLX:2HOP FLX HOP3 FLX:3HOP FLX HN61 FM1:1HN6 FM1 HO2' FM1:'HO2 FM1 HO3' FM1:'HO3 FM1 H5'1 FM1:1H5' FM1 H5'2 FM1:2H5' FM1 HO5' FM1:'HO5 FM1 H661 FM1:1H66 FM1 H662 FM1:2H66 FM1 H663 FM1:3H66 FM1 HN61 FM2:1HN6 FM2 HN62 FM2:2HN6 FM2 HO2' FM2:'HO2 FM2 HO3' FM2:'HO3 FM2 H5'1 FM2:1H5' FM2 H5'2 FM2:2H5' FM2 HO5' FM2:'HO5 FM2 H111 FM2:1H11 FM2 H112 FM2:2H11 FM2 H113 FM2:3H11 FM2 HM71 FMA:1HM7 FMA HM72 FMA:2HM7 FMA HM73 FMA:3HM7 FMA HM81 FMA:1HM8 FMA HM82 FMA:2HM8 FMA HM83 FMA:3HM8 FMA H1'1 FMA:1H1* FMA H1'2 FMA:2H1* FMA H2' FMA: H2* FMA HO2' FMA:*HO2 FMA H3B FMA: H3* FMA HO3' FMA:*HO3 FMA H4' FMA: H4* FMA HO4' FMA:*HO4 FMA H5'1 FMA:1H5* FMA H5'2 FMA:2H5* FMA HOP2 FMA:2HOP FMA HOP3 FMA:3HOP FMA HO2A FMA:'HO2 FMA H2'1 FMA:1H2' FMA H2'2 FMA:2H2' FMA H4'1 FMA:1H4' FMA H4'2 FMA:2H4' FMA H5B FMA:1H5' FMA H5D FMA:2H5' FMA H6'1 FMA:1H6' FMA H6'2 FMA:2H6' FMA H7'1 FMA:1H7' FMA H7'2 FMA:2H7' FMA H8'1 FMA:1H8' FMA H8'2 FMA:2H8' FMA H9'1 FMA:1H9' FMA H9'2 FMA:2H9' FMA H111 FMA:1H11 FMA H112 FMA:2H11 FMA H121 FMA:1H12 FMA H122 FMA:2H12 FMA H131 FMA:1H13 FMA H132 FMA:2H13 FMA H141 FMA:1H14 FMA H142 FMA:2H14 FMA H151 FMA:1H15 FMA H152 FMA:2H15 FMA H153 FMA:3H15 FMA H5'1 FMB:1H5' FMB H5'2 FMB:2H5' FMB HN61 FMC:1HN6 FMC HN62 FMC:2HN6 FMC HO2' FMC:'HO2 FMC HO3' FMC:'HO3 FMC H5'1 FMC:1H5' FMC H5'2 FMC:2H5' FMC HO5' FMC:'HO5 FMC H281 FMD:1H28 FMD H282 FMD:2H28 FMD H251 FMD:1H25 FMD H252 FMD:2H25 FMD H253 FMD:3H25 FMD H221 FMD:1H22 FMD H222 FMD:2H22 FMD H223 FMD:3H22 FMD H FME: HN FME HB2 FME:1HB FME HB3 FME:2HB FME HG2 FME:1HG FME HG3 FME:2HG FME HE1 FME:1HE FME HE2 FME:2HE FME HE3 FME:3HE FME H61 FMF:1H6 FMF H62 FMF:2H6 FMF HAA1 FMI:1HAA FMI HAA2 FMI:2HAA FMI HMA1 FMI:1HMA FMI HMA2 FMI:2HMA FMI HMA3 FMI:3HMA FMI HBA1 FMI:1HBA FMI HBA2 FMI:2HBA FMI HLB1 FMI:1HLB FMI HLB2 FMI:2HLB FMI HLB3 FMI:3HLB FMI HMB1 FMI:1HMB FMI HMB2 FMI:2HMB FMI HNB1 FMI:1HNB FMI HNB2 FMI:2HNB FMI HNB3 FMI:3HNB FMI HMC1 FMI:1HMC FMI HMC2 FMI:2HMC FMI HMC3 FMI:3HMC FMI HAC1 FMI:1HAC FMI HAC2 FMI:2HAC FMI HBC1 FMI:1HBC FMI HBC2 FMI:2HBC FMI HBC3 FMI:3HBC FMI HMD1 FMI:1HMD FMI HMD2 FMI:2HMD FMI HMD3 FMI:3HMD FMI HAD1 FMI:1HAD FMI HAD2 FMI:2HAD FMI HBD1 FMI:1HBD FMI HBD2 FMI:2HBD FMI H11A FMM:1H1 FMM H12 FMM:2H1 FMM H13 FMM:3H1 FMM H51 FMM:1H5 FMM H52 FMM:2H5 FMM H61 FMM:1H6 FMM H62 FMM:2H6 FMM H81 FMM:1H8 FMM H82 FMM:2H8 FMM H281 FMM:1H28 FMM H282 FMM:2H28 FMM HM71 FMN:1HM7 FMN HM72 FMN:2HM7 FMN HM73 FMN:3HM7 FMN HM81 FMN:1HM8 FMN HM82 FMN:2HM8 FMN HM83 FMN:3HM8 FMN H1'1 FMN:1H1* FMN H1'2 FMN:2H1* FMN H2' FMN: H2* FMN HO2' FMN:*HO2 FMN H3' FMN: H3* FMN HO3' FMN:*HO3 FMN H4' FMN: H4* FMN HO4' FMN:*HO4 FMN H5'1 FMN:1H5* FMN H5'2 FMN:2H5* FMN HOP2 FMN:2HOP FMN HOP3 FMN:3HOP FMN HOP2 FMP:2HOP FMP HOP3 FMP:3HOP FMP H5'1 FMP:1H5* FMP H5'2 FMP:2H5* FMP H4' FMP: H4* FMP H3' FMP: H3* FMP HO3' FMP:*HO3 FMP H2' FMP: H2* FMP HO2' FMP:*HO2 FMP H1' FMP: H1* FMP HN61 FMP:1HN6 FMP HN62 FMP:2HN6 FMP HN1 FMS:1HN FMS HN2 FMS:2HN FMS H5M1 FMU:1H5M FMU H5M2 FMU:2H5M FMU H5M3 FMU:3H5M FMU H6C1 FMU:1H6C FMU H6C2 FMU:2H6C FMU H1' FMU: H1* FMU H2' FMU: H2* FMU H3' FMU: H3* FMU H4' FMU: H4* FMU H5'1 FMU:1H5* FMU H5'2 FMU:2H5* FMU HN11 FMX:1HN1 FMX H221 FMX:1H22 FMX H231 FMX:1H23 FMX H241 FMX:1H24 FMX H251 FMX:1H25 FMX H261 FMX:1H26 FMX H71 FMX:1H7 FMX H72 FMX:2H7 FMX H73 FMX:3H7 FMX H91 FMX:1H9 FMX H101 FMX:1H10 FMX H121 FMX:1H12 FMX H131 FMX:1H13 FMX H161 FMX:1H16 FMX H171 FMX:1H17 FMX H181 FMX:1H18 FMX H191 FMX:1H19 FMX H201 FMX:1H20 FMX H11 FNG:1H1 FNG H21 FNG:1H2 FNG HO21 FNG:1HO2 FNG H31 FNG:1H3 FNG HO31 FNG:1HO3 FNG H41 FNG:1H4 FNG HO41 FNG:1HO4 FNG H51 FNG:1H5 FNG H61 FNG:1H6 FNG H62 FNG:2H6 FNG HO61 FNG:1HO6 FNG H121 FNG:1H12 FNG H101 FNG:1H10 FNG H81 FNG:1H8 FNG H151 FNG:1H15 FNG H152 FNG:2H15 FNG H31A FNH:1H3 FNH H32A FNH:2H3 FNH H41 FNH:1H4 FNH H42 FNH:2H4 FNH H51A FNH:1H5 FNH H52 FNH:2H5 FNH H61 FNH:1H6 FNH H62 FNH:2H6 FNH H71 FNH:1H7 FNH H72 FNH:2H7 FNH H81 FNH:1H8 FNH H82 FNH:2H8 FNH H91 FNH:1H9 FNH H92 FNH:2H9 FNH H131 FNH:1H13 FNH H132 FNH:2H13 FNH H171 FNH:1H17 FNH H172 FNH:2H17 FNH H141 FNH:1H14 FNH H142 FNH:2H14 FNH H161 FNH:1H16 FNH H162 FNH:2H16 FNH H151 FNH:1H15 FNH H152 FNH:2H15 FNH H221 FNH:1H22 FNH H222 FNH:2H22 FNH H331 FNH:1H33 FNH H332 FNH:2H33 FNH H341 FNH:1H34 FNH H342 FNH:2H34 FNH H351 FNH:1H35 FNH H352 FNH:2H35 FNH H353 FNH:3H35 FNH H401 FNH:1H40 FNH H402 FNH:2H40 FNH H7M1 FNR:1H7M FNR H7M2 FNR:2H7M FNR H7M3 FNR:3H7M FNR H8M1 FNR:1H8M FNR H8M2 FNR:2H8M FNR H8M3 FNR:3H8M FNR H1'1 FNR:1H1* FNR H1'2 FNR:2H1* FNR H2' FNR: H2* FNR H3' FNR: H3* FNR H4' FNR: H4* FNR H5'1 FNR:1H5* FNR H5'2 FNR:2H5* FNR HM71 FNS:1HM7 FNS HM72 FNS:2HM7 FNS HM73 FNS:3HM7 FNS HM81 FNS:1HM8 FNS HM82 FNS:2HM8 FNS HM83 FNS:3HM8 FNS H1'1 FNS:1H1* FNS H1'2 FNS:2H1* FNS H2' FNS: H2* FNS HO2' FNS:*HO2 FNS H3' FNS: H3* FNS HO3' FNS:*HO3 FNS H4' FNS: H4* FNS HO4' FNS:*HO4 FNS H5'1 FNS:1H5* FNS H5'2 FNS:2H5* FNS HOP2 FNS:2HOP FNS HOP3 FNS:3HOP FNS H3C1 FNZ:1H3C FNZ H3C2 FNZ:2H3C FNZ H11 FOC:1H1 FOC H12 FOC:2H1 FOC H61 FOC:1H6 FOC H62 FOC:2H6 FOC H63 FOC:3H6 FOC H FOE:1HN FOE H2 FOE:2HN FOE HB2 FOE:1HB FOE HB3 FOE:2HB FOE H11A FOE:1H1 FOE H12A FOE:2H1 FOE H51 FOE:1H5 FOE H52 FOE:2H5 FOE H53 FOE:3H5 FOE H71 FOE:1H7 FOE H72 FOE:2H7 FOE H73 FOE:3H7 FOE HC1 FOG:1H FOG HC2 FOG:2H FOG H FOG:1HN FOG H2 FOG:2HN FOG HB2 FOG:1HB FOG HB3 FOG:2HB FOG H101 FOH:1H10 FOH H102 FOH:2H10 FOH H111 FOH:1H11 FOH H112 FOH:2H11 FOH H133 FOH:3H13 FOH H132 FOH:2H13 FOH H131 FOH:1H13 FOH H151 FOH:1H15 FOH H152 FOH:2H15 FOH H21 FOK:1H2 FOK H22 FOK:2H2 FOK H31 FOK:1H3 FOK H32 FOK:2H3 FOK H121 FOK:1H12 FOK H122 FOK:2H12 FOK H151 FOK:1H15 FOK H152 FOK:2H15 FOK H161 FOK:1H16 FOK H162 FOK:2H16 FOK H163 FOK:3H16 FOK H171 FOK:1H17 FOK H172 FOK:2H17 FOK H173 FOK:3H17 FOK H181 FOK:1H18 FOK H182 FOK:2H18 FOK H183 FOK:3H18 FOK H191 FOK:1H19 FOK H192 FOK:2H19 FOK H193 FOK:3H19 FOK H201 FOK:1H20 FOK H202 FOK:2H20 FOK H203 FOK:3H20 FOK H221 FOK:1H22 FOK H222 FOK:2H22 FOK H223 FOK:3H22 FOK HN21 FOL:1HN2 FOL HN22 FOL:2HN2 FOL H91 FOL:1H9 FOL H92 FOL:2H9 FOL HB1 FOL:1HB FOL HB2 FOL:2HB FOL HG1 FOL:1HG FOL HG2 FOL:2HG FOL HOE2 FOL:2HOE FOL H21 FOM:1H2 FOM H22 FOM:2H2 FOM H31 FOM:1H3 FOM H32 FOM:2H3 FOM H41 FOM:1H4 FOM H42 FOM:2H4 FOM HN21 FON:1HN2 FON HN22 FON:2HN2 FON H61 FON:1H6 FON HC72 FON:2HC7 FON H91 FON:1H9 FON H92 FON:2H9 FON HB1 FON:1HB FON HB2 FON:2HB FON HG1 FON:1HG FON HG2 FON:2HG FON HOE2 FON:2HOE FON H2A1 FOO:1H2A FOO H2A2 FOO:2H2A FOO H2A3 FOO:3H2A FOO H5A1 FOO:1H5A FOO H5A2 FOO:2H5A FOO H1 FOR:1H FOR H2 FOR:2H FOR H1 FOS:1H FOS H2A FOS:2H FOS HM1 FOS:1HM FOS HM2 FOS:2HM FOS HOP2 FOS:2HOP FOS HOP3 FOS:3HOP FOS HOP2 FOX:2HOP FOX H5'1 FOX:1H5* FOX H5'2 FOX:2H5* FOX H4' FOX: H4* FOX H6'1 FOX:1H6* FOX H6'2 FOX:2H6* FOX H3' FOX: H3* FOX H2'1 FOX:1H2* FOX H2'2 FOX:2H2* FOX H1' FOX: H1* FOX H21 FOX:1H2 FOX H22 FOX:2H2 FOX HOP3 FOX:3HOP FOX H31 FPA:1H3 FPA H32 FPA:2H3 FPA H41 FPA:1H4 FPA H42 FPA:2H4 FPA H111 FPB:1H11 FPB H112 FPB:2H11 FPB H181 FPB:1H18 FPB H182 FPB:2H18 FPB H9C1 FPB:1H9C FPB H9C2 FPB:2H9C FPB H211 FPB:1H21 FPB H212 FPB:2H21 FPB H201 FPB:1H20 FPB H202 FPB:2H20 FPB H191 FPB:1H19 FPB H192 FPB:2H19 FPB H151 FPB:1H15 FPB H152 FPB:2H15 FPB H61 FPC:1H6 FPC H62 FPC:2H6 FPC H11 FPC:1H1 FPC H12 FPC:2H1 FPC HOP2 FPC:2HOP FPC HOP3 FPC:3HOP FPC H31 FPD:1H3 FPD H32 FPD:2H3 FPD H33 FPD:3H3 FPD H21 FPD:1H2 FPD H22 FPD:2H2 FPD H71 FPD:1H7 FPD H72 FPD:2H7 FPD H81 FPD:1H8 FPD H82 FPD:2H8 FPD H121 FPD:1H12 FPD H122 FPD:2H12 FPD H31 FPE:1H3 FPE H32 FPE:2H3 FPE H91 FPG:1H9 FPG H92 FPG:2H9 FPG H93 FPG:3H9 FPG H61 FPG:1H6 FPG H62 FPG:2H6 FPG H81 FPG:1H8 FPG H82 FPG:2H8 FPG H83 FPG:3H8 FPG H11 FPG:1H1 FPG H12 FPG:2H1 FPG H13 FPG:3H1 FPG H101 FPG:1H10 FPG H102 FPG:2H10 FPG H103 FPG:3H10 FPG H51 FPG:1H5 FPG H52 FPG:2H5 FPG H41 FPG:1H4 FPG H42 FPG:2H4 FPG H21 FPI:1H2 FPI H22 FPI:2H2 FPI H31 FPI:1H3 FPI H32 FPI:2H3 FPI H41 FPI:1H4 FPI H42 FPI:2H4 FPI H51 FPI:1H5 FPI H52 FPI:2H5 FPI H61 FPI:1H6 FPI H62 FPI:2H6 FPI H11 FPP:1H1 FPP H12A FPP:2H1 FPP H41 FPP:1H4 FPP H42 FPP:2H4 FPP H43 FPP:3H4 FPP H51 FPP:1H5 FPP H52 FPP:2H5 FPP H61 FPP:1H6 FPP H62 FPP:2H6 FPP H101 FPP:1H10 FPP H102 FPP:2H10 FPP H103 FPP:3H10 FPP H91 FPP:1H9 FPP H92 FPP:2H9 FPP H111 FPP:1H11 FPP H112 FPP:2H11 FPP H141 FPP:1H14 FPP H142 FPP:2H14 FPP H143 FPP:3H14 FPP H151 FPP:1H15 FPP H152 FPP:2H15 FPP H153 FPP:3H15 FPP HOA2 FPP:2HOA FPP HOB2 FPP:2HOB FPP HOB3 FPP:3HOB FPP H11 FPR:1H1 FPR H12 FPR:2H1 FPR H13 FPR:3H1 FPR H21 FPR:1H2 FPR H22 FPR:2H2 FPR H31 FPR:1H3 FPR H32 FPR:2H3 FPR H11 FPS:1H1 FPS H12A FPS:2H1 FPS H41 FPS:1H4 FPS H42 FPS:2H4 FPS H43 FPS:3H4 FPS H51 FPS:1H5 FPS H52 FPS:2H5 FPS H61 FPS:1H6 FPS H62 FPS:2H6 FPS H101 FPS:1H10 FPS H102 FPS:2H10 FPS H91 FPS:1H9 FPS H92 FPS:2H9 FPS H93 FPS:3H9 FPS H111 FPS:1H11 FPS H112 FPS:2H11 FPS H141 FPS:1H14 FPS H142 FPS:2H14 FPS H143 FPS:3H14 FPS H151 FPS:1H15 FPS H152 FPS:2H15 FPS H153 FPS:3H15 FPS H111 FPT:1H11 FPT H112 FPT:2H11 FPT H121 FPT:1H12 FPT H122 FPT:2H12 FPT HA1 FPT:1HA FPT HA2 FPT:2HA FPT HB1 FPT:1HB FPT HB2 FPT:2HB FPT HB3 FPT:3HB FPT H4A1 FQP:1H4A FQP H4A2 FQP:2H4A FQP H6A1 FQP:1H6A FQP H7A1 FQP:1H7A FQP H7A2 FQP:2H7A FQP HO21 FQP:1HO2 FQP HO51 FQP:1HO5 FQP HO61 FQP:1HO6 FQP H111 FR0:1H11 FR0 H112 FR0:2H11 FR0 H281 FR0:1H28 FR0 H282 FR0:2H28 FR0 H291 FR0:1H29 FR0 H292 FR0:2H29 FR0 H151 FR1:1H15 FR1 H152 FR1:2H15 FR1 H153 FR1:3H15 FR1 H161 FR1:1H16 FR1 H162 FR1:2H16 FR1 H163 FR1:3H16 FR1 H211 FR1:1H21 FR1 H212 FR1:2H21 FR1 H221 FR1:1H22 FR1 H222 FR1:2H22 FR1 H231 FR1:1H23 FR1 H232 FR1:2H23 FR1 H291 FR1:1H29 FR1 H292 FR1:2H29 FR1 H293 FR1:3H29 FR1 H301 FR1:1H30 FR1 H302 FR1:2H30 FR1 H303 FR1:3H30 FR1 H371 FR1:1H37 FR1 H372 FR1:2H37 FR1 H101 FR2:1H10 FR2 H102 FR2:2H10 FR2 H141 FR2:1H14 FR2 H142 FR2:2H14 FR2 H181 FR2:1H18 FR2 H182 FR2:2H18 FR2 H191 FR2:1H19 FR2 H192 FR2:2H19 FR2 H101 FR3:1H10 FR3 H102 FR3:2H10 FR3 H141 FR3:1H14 FR3 H142 FR3:2H14 FR3 H181 FR3:1H18 FR3 H182 FR3:2H18 FR3 H191 FR3:1H19 FR3 H192 FR3:2H19 FR3 H101 FR4:1H10 FR4 H102 FR4:2H10 FR4 H141 FR4:1H14 FR4 H142 FR4:2H14 FR4 H181 FR4:1H18 FR4 H182 FR4:2H18 FR4 H191 FR4:1H19 FR4 H192 FR4:2H19 FR4 H41 FR4:1H4 FR4 H42 FR4:2H4 FR4 H61 FR4:1H6 FR4 H62 FR4:2H6 FR4 H101 FR5:1H10 FR5 H102 FR5:2H10 FR5 H141 FR5:1H14 FR5 H142 FR5:2H14 FR5 H15O FR5:OH15 FR5 H181 FR5:1H18 FR5 H182 FR5:2H18 FR5 H191 FR5:1H19 FR5 H192 FR5:2H19 FR5 H41 FR5:1H4 FR5 H42 FR5:2H4 FR5 H61 FR5:1H6 FR5 H62 FR5:2H6 FR5 H71 FR5:1H7 FR5 H72 FR5:2H7 FR5 H73 FR5:3H7 FR5 H101 FR6:1H10 FR6 H102 FR6:2H10 FR6 H181 FR6:1H18 FR6 H182 FR6:2H18 FR6 H191 FR6:1H19 FR6 H192 FR6:2H19 FR6 H91 FR6:1H9 FR6 H92 FR6:2H9 FR6 H93 FR6:3H9 FR6 H101 FR7:1H10 FR7 H102 FR7:2H10 FR7 H181 FR7:1H18 FR7 H182 FR7:2H18 FR7 H21 FR7:1H2 FR7 H22 FR7:2H2 FR7 H91 FR7:1H9 FR7 H92 FR7:2H9 FR7 H93 FR7:3H9 FR7 H101 FR8:1H10 FR8 H102 FR8:2H10 FR8 H141 FR8:1H14 FR8 H142 FR8:2H14 FR8 H181 FR8:1H18 FR8 H182 FR8:2H18 FR8 H191 FR8:1H19 FR8 H192 FR8:2H19 FR8 H41 FR8:1H4 FR8 H42 FR8:2H4 FR8 H61 FR8:1H6 FR8 H62 FR8:2H6 FR8 H161 FR8:1H16 FR8 H162 FR8:2H16 FR8 H171 FR8:1H17 FR8 H172 FR8:2H17 FR8 H101 FR9:1H10 FR9 H102 FR9:2H10 FR9 H141 FR9:1H14 FR9 H142 FR9:2H14 FR9 H181 FR9:1H18 FR9 H182 FR9:2H18 FR9 H191 FR9:1H19 FR9 H192 FR9:2H19 FR9 H61 FR9:1H6 FR9 H62 FR9:2H6 FR9 H221 FRA:1H22 FRA H222 FRA:2H22 FRA H223 FRA:3H22 FRA H171 FRA:1H17 FRA H172 FRA:2H17 FRA H161 FRA:1H16 FRA H162 FRA:2H16 FRA H141 FRA:1H14 FRA H142 FRA:2H14 FRA H131 FRA:1H13 FRA H132 FRA:2H13 FRA H191 FRA:1H19 FRA H192 FRA:2H19 FRA HN31 FRB:1HN3 FRB HN32 FRB:2HN3 FRB H71 FRB:1H7 FRB H72 FRB:2H7 FRB H81 FRB:1H8 FRB H82 FRB:2H8 FRB H91 FRB:1H9 FRB H92 FRB:2H9 FRB H101 FRB:1H10 FRB H102 FRB:2H10 FRB H111 FRB:1H11 FRB H112 FRB:2H11 FRB H151 FRB:1H15 FRB H152 FRB:2H15 FRB H191 FRB:1H19 FRB H192 FRB:2H19 FRB H201 FRB:1H20 FRB H202 FRB:2H20 FRB H231 FRB:1H23 FRB H232 FRB:2H23 FRB H221 FRB:1H22 FRB H222 FRB:2H22 FRB H101 FRC:1H10 FRC H102 FRC:2H10 FRC H181 FRC:1H18 FRC H182 FRC:2H18 FRC H21 FRC:1H2 FRC H22 FRC:2H2 FRC H91 FRC:1H9 FRC H92 FRC:2H9 FRC H93 FRC:3H9 FRC H2 FRD: HN2 FRD HC1 FRD:1H FRD HC2 FRD:2H FRD HC3 FRD:3H FRD HB2 FRD:1HB FRD HB3 FRD:2HB FRD HN61 FRE:1HN6 FRE HN62 FRE:2HN6 FRE H1' FRE: H1* FRE H2' FRE: H2* FRE H3' FRE: H3* FRE H4' FRE: H4* FRE H5'1 FRE:1H5* FRE H5'2 FRE:2H5* FRE H121 FRE:1H12 FRE H122 FRE:2H12 FRE H11 FRE:1H1 FRE H12 FRE:2H1 FRE H13 FRE:3H1 FRE H141 FRE:1H14 FRE H142 FRE:2H14 FRE H143 FRE:3H14 FRE H71 FRE:1H7 FRE H72 FRE:2H7 FRE H61 FRE:1H6 FRE H62 FRE:2H6 FRE H31 FRE:1H3 FRE H32 FRE:2H3 FRE H21 FRE:1H2 FRE H22 FRE:2H2 FRE H111 FRE:H11 FRE H112 FRE:H12 FRE H131 FRE:1H13 FRE H132 FRE:2H13 FRE H133 FRE:3H13 FRE HN1 FRF:1HN FRF HN2 FRF:2HN FRF HTC1 FRF:1HTC FRF HTC2 FRF:2HTC FRF HBC1 FRF:1HBC FRF HBC2 FRF:2HBC FRF HB11 FRF:1HB1 FRF HB12 FRF:2HB1 FRF H321 FRG:1H32 FRG H322 FRG:2H32 FRG H301 FRG:1H30 FRG H302 FRG:2H30 FRG H281 FRG:1H28 FRG H282 FRG:2H28 FRG H271 FRG:1H27 FRG H272 FRG:2H27 FRG H261 FRG:1H26 FRG H262 FRG:2H26 FRG H231 FRG:1H23 FRG H232 FRG:2H23 FRG H201 FRG:1H20 FRG H202 FRG:2H20 FRG H203 FRG:3H20 FRG H151 FRG:1H15 FRG H152 FRG:2H15 FRG H321 FRH:1H32 FRH H322 FRH:2H32 FRH H381 FRH:1H38 FRH H382 FRH:2H38 FRH H383 FRH:3H38 FRH H371 FRH:1H37 FRH H372 FRH:2H37 FRH H373 FRH:3H37 FRH HN41 FRH:1HN4 FRH HN42 FRH:2HN4 FRH H281 FRH:1H28 FRH H282 FRH:2H28 FRH H221 FRH:1H22 FRH H222 FRH:2H22 FRH H151 FRH:1H15 FRH H152 FRH:2H15 FRH H271 FRH:1H27 FRH H272 FRH:2H27 FRH H291 FRH:1H29 FRH H292 FRH:2H29 FRH H341 FRH:1H34 FRH H342 FRH:2H34 FRH H343 FRH:3H34 FRH H351 FRH:1H35 FRH H352 FRH:2H35 FRH H291 FRI:1H29 FRI H292 FRI:2H29 FRI H411 FRI:1H41 FRI H412 FRI:2H41 FRI H371 FRI:1H37 FRI H372 FRI:2H37 FRI H373 FRI:3H37 FRI H361 FRI:1H36 FRI H362 FRI:2H36 FRI H363 FRI:3H36 FRI HN41 FRI:1HN4 FRI HN42 FRI:2HN4 FRI H311 FRI:1H31 FRI H312 FRI:2H31 FRI H391 FRI:1H39 FRI H392 FRI:2H39 FRI H211 FRI:1H21 FRI H212 FRI:2H21 FRI H431 FRI:1H43 FRI H432 FRI:2H43 FRI H381 FRI:1H38 FRI H382 FRI:2H38 FRI H383 FRI:3H38 FRI H401 FRI:1H40 FRI H402 FRI:2H40 FRI H421 FRI:1H42 FRI H422 FRI:2H42 FRI H423 FRI:3H42 FRI H131 FRJ:1H13 FRJ H132 FRJ:2H13 FRJ H141 FRJ:1H14 FRJ H142 FRJ:2H14 FRJ H143 FRJ:3H14 FRJ H91 FRK:1H9 FRK H92 FRK:2H9 FRK H111 FRK:1H11 FRK H112 FRK:2H11 FRK H121 FRK:1H12 FRK H122 FRK:2H12 FRK H151 FRK:1H15 FRK H152 FRK:2H15 FRK H181 FRK:1H18 FRK H182 FRK:2H18 FRK H183 FRK:3H18 FRK H171 FRL:1H17 FRL H172 FRL:2H17 FRL H181 FRL:1H18 FRL H182 FRL:2H18 FRL H231 FRL:1H23 FRL H232 FRL:2H23 FRL H233 FRL:3H23 FRL H301 FRL:1H30 FRL H302 FRL:2H30 FRL H171 FRM:1H17 FRM H172 FRM:2H17 FRM H201 FRM:1H20 FRM H202 FRM:2H20 FRM H231 FRM:1H23 FRM H232 FRM:2H23 FRM H291 FRM:1H29 FRM H292 FRM:2H29 FRM H321 FRM:1H32 FRM H322 FRM:2H32 FRM H331 FRM:1H33 FRM H332 FRM:2H33 FRM H71 FRM:1H7 FRM H72 FRM:2H7 FRM H73 FRM:3H7 FRM HN1A FRN:1HN FRN HN2A FRN:2HN FRN HN3A FRN:3HN FRN HG21 FRN:1HG2 FRN HG22 FRN:2HG2 FRN HG23 FRN:3HG2 FRN H311 FRN:1H31 FRN H312 FRN:2H31 FRN H313 FRN:3H31 FRN H221 FRN:1H22 FRN H222 FRN:2H22 FRN HD11 FRN:1HD1 FRN HD12 FRN:2HD1 FRN HD13 FRN:3HD1 FRN HD21 FRN:1HD2 FRN HD22 FRN:2HD2 FRN HD23 FRN:3HD2 FRN H231 FRN:1H23 FRN H232 FRN:2H23 FRN H321 FRN:1H32 FRN H322 FRN:2H32 FRN HD1 FRN:1HD FRN HD2 FRN:2HD FRN HE1A FRN:1HE FRN HE2A FRN:2HE FRN H241 FRN:1H24 FRN H242 FRN:2H24 FRN H251 FRN:1H25 FRN H252 FRN:2H25 FRN H341 FRN:1H34 FRN H342 FRN:2H34 FRN H421 FRN:1H42 FRN H422 FRN:2H42 FRN H261 FRN:1H26 FRN H262 FRN:2H26 FRN H271 FRN:1H27 FRN H272 FRN:2H27 FRN H281 FRN:1H28 FRN H282 FRN:2H28 FRN H291 FRN:1H29 FRN H292 FRN:2H29 FRN H441 FRN:1H44 FRN H442 FRN:2H44 FRN H81 FRO:1H8 FRO H82 FRO:2H8 FRO H91 FRO:1H9 FRO H92 FRO:2H9 FRO H101 FRO:1H10 FRO H102 FRO:2H10 FRO H181 FRO:1H18 FRO H182 FRO:2H18 FRO H183 FRO:3H18 FRO H171 FRP:1H17 FRP H172 FRP:2H17 FRP H131 FRP:1H13 FRP H132 FRP:2H13 FRP H133 FRP:3H13 FRP H141 FRP:1H14 FRP H142 FRP:2H14 FRP H143 FRP:3H14 FRP H111 FRP:1H11 FRP H112 FRP:2H11 FRP H101 FRP:1H10 FRP H102 FRP:2H10 FRP H91 FRP:1H9 FRP H92 FRP:2H9 FRP H81 FRP:1H8 FRP H82 FRP:2H8 FRP H211 FRP:1H21 FRP H212 FRP:2H21 FRP H213 FRP:3H21 FRP H181 FRP:1H18 FRP H182 FRP:2H18 FRP HN41 FRP:1HN4 FRP HN42 FRP:2HN4 FRP H161 FRQ:1H16 FRQ H162 FRQ:2H16 FRQ H171 FRQ:1H17 FRQ H172 FRQ:2H17 FRQ H201 FRQ:1H20 FRQ H202 FRQ:2H20 FRQ H231 FRQ:1H23 FRQ H232 FRQ:2H23 FRQ H291 FRQ:1H29 FRQ H292 FRQ:2H29 FRQ H301 FRQ:1H30 FRQ H302 FRQ:2H30 FRQ H331 FRQ:1H33 FRQ H332 FRQ:2H33 FRQ H591 FRR:1H59 FRR H592 FRR:2H59 FRR H593 FRR:3H59 FRR H341 FRR:1H34 FRR H342 FRR:2H34 FRR H181 FRR:1H18 FRR H182 FRR:2H18 FRR H621 FRR:1H62 FRR H622 FRR:2H62 FRR H623 FRR:3H62 FRR H11 FRU:1H1 FRU H12 FRU:2H1 FRU H61 FRU:1H6 FRU H62 FRU:2H6 FRU H241 FRX:1H24 FRX H242 FRX:2H24 FRX H251 FRX:1H25 FRX H252 FRX:2H25 FRX H211 FRX:1H21 FRX H212 FRX:2H21 FRX H151 FRX:1H15 FRX H152 FRX:2H15 FRX H141 FRY:1H14 FRY H142 FRY:2H14 FRY H201 FRY:1H20 FRY H202 FRY:2H20 FRY H231 FRY:1H23 FRY H232 FRY:2H23 FRY H301 FRZ:1H30 FRZ H302 FRZ:2H30 FRZ H01C FSB:CH01 FSB H02C FSB:CH02 FSB H04C FSB:CH04 FSB H05C FSB:CH05 FSB H09N FSB:NH09 FSB H101 FSB:1H10 FSB H102 FSB:2H10 FSB HNP1 FSB:1HNP FSB HNP2 FSB:2HNP FSB H16C FSB:CH16 FSB H17C FSB:CH17 FSB H18C FSB:CH18 FSB H19C FSB:CH19 FSB H181 FSC:1H18 FSC H182 FSC:2H18 FSC H183 FSC:3H18 FSC H171 FSC:1H17 FSC H172 FSC:2H17 FSC H361 FSC:1H36 FSC H362 FSC:2H36 FSC H363 FSC:3H36 FSC H101 FSC:1H10 FSC H102 FSC:2H10 FSC H7C1 FSC:1H7C FSC H7C2 FSC:2H7C FSC H7C3 FSC:3H7C FSC H271 FSC:1H27 FSC H272 FSC:2H27 FSC H381 FSC:1H38 FSC H382 FSC:2H38 FSC H383 FSC:3H38 FSC H261 FSC:1H26 FSC H262 FSC:2H26 FSC H251 FSC:1H25 FSC H252 FSC:2H25 FSC H231 FSC:1H23 FSC H232 FSC:2H23 FSC H233 FSC:3H23 FSC H421 FSC:1H42 FSC H422 FSC:2H42 FSC H423 FSC:3H42 FSC H351 FSC:1H35 FSC H352 FSC:2H35 FSC H471 FSC:1H47 FSC H472 FSC:2H47 FSC H473 FSC:3H47 FSC H461 FSC:1H46 FSC H462 FSC:2H46 FSC H463 FSC:3H46 FSC H481 FSC:1H48 FSC H482 FSC:2H48 FSC H111 FSI:1H11 FSI H112 FSI:2H11 FSI H113 FSI:3H11 FSI H91 FSI:1H9 FSI H92 FSI:2H9 FSI HAA1 FSM:1HAA FSM HAA2 FSM:2HAA FSM HA'1 FSM:1HA' FSM HA'2 FSM:2HA' FSM HA'3 FSM:3HA' FSM HB'1 FSM:1HB' FSM HB'2 FSM:2HB' FSM HBA1 FSM:1HBA FSM HBA2 FSM:2HBA FSM HBA3 FSM:3HBA FSM H231 FSN:1H23 FSN H232 FSN:2H23 FSN H121 FSN:1H12 FSN H122 FSN:2H12 FSN H131 FSN:1H13 FSN H132 FSN:2H13 FSN H141 FSN:1H14 FSN H142 FSN:2H14 FSN HN11 FSN:1HN1 FSN HN12 FSN:2HN1 FSN HN21 FSN:1HN2 FSN HN22 FSN:2HN2 FSN H11 FSP:1H1 FSP H12 FSP:2H1 FSP H13 FSP:3H1 FSP H21 FSP:1H2 FSP H22 FSP:2H2 FSP H31 FSP:1H3 FSP H32A FSP:2H3 FSP H41 FSP:1H4 FSP H42 FSP:2H4 FSP H101 FSP:1H10 FSP H102 FSP:2H10 FSP H121 FSP:1H12 FSP H122 FSP:2H12 FSP H201 FSP:1H20 FSP H202 FSP:2H20 FSP H211 FSP:1H21 FSP H212 FSP:2H21 FSP H221 FSP:1H22 FSP H222 FSP:2H22 FSP H FT6:1HN FT6 H2 FT6:2HN FT6 HB2 FT6:1HB FT6 HB3 FT6:2HB FT6 HE1 FT6:HNE1 FT6 H341 FTB:1H34 FTB H342 FTB:2H34 FTB H343 FTB:3H34 FTB H241 FTB:1H24 FTB H242 FTB:2H24 FTB H121 FTB:1H12 FTB H122 FTB:2H12 FTB H131 FTB:1H13 FTB H132 FTB:2H13 FTB H141 FTB:1H14 FTB H142 FTB:2H14 FTB H151 FTB:1H15 FTB H152 FTB:2H15 FTB H153 FTB:3H15 FTB H161 FTB:1H16 FTB H162 FTB:2H16 FTB H111 FTC:1H11 FTC H112 FTC:2H11 FTC H121 FTC:1H12 FTC H122 FTC:2H12 FTC HA1 FTC:1HA FTC HA2 FTC:2HA FTC HB1 FTC:1HB FTC HB2 FTC:2HB FTC HB3 FTC:3HB FTC HC11 FTH:1HC1 FTH HC1A FTH:2HC1 FTH HC1B FTH:3HC1 FTH HC71 FTH:1HC7 FTH HC72 FTH:2HC7 FTH H101 FTH:1H10 FTH H102 FTH:2H10 FTH H221 FTH:1H22 FTH H222 FTH:2H22 FTH H231 FTH:1H23 FTH H232 FTH:2H23 FTH H261 FTH:1H26 FTH H262 FTH:2H26 FTH HC1A FTI:1HC1 FTI HC12 FTI:2HC1 FTI HC2A FTI:1HC2 FTI HC22 FTI:2HC2 FTI HC31 FTI:1HC3 FTI HC32 FTI:2HC3 FTI H161 FTI:1H16 FTI H162 FTI:2H16 FTI H201 FTI:1H20 FTI H202 FTI:2H20 FTI HC81 FTL:1HC8 FTL HC82 FTL:2HC8 FTL H151 FTL:1H15 FTL H152 FTL:2H15 FTL H153 FTL:3H15 FTL H181 FTL:1H18 FTL H182 FTL:2H18 FTL H4A1 FTP:1H4A FTP H4A2 FTP:2H4A FTP H6A1 FTP:1H6A FTP H7A1 FTP:1H7A FTP H7A2 FTP:2H7A FTP H21 FTP:1H2 FTP HM41 FTP:1HM4 FTP HM42 FTP:2HM4 FTP HM43 FTP:3HM4 FTP H61 FTP:1H6 FTP H62 FTP:2H6 FTP H71 FTP:1H7 FTP H72 FTP:2H7 FTP H FTR:1HN FTR H2 FTR:2HN FTR HB2 FTR:1HB FTR HB3 FTR:2HB FTR HE1 FTR: HNE FTR H11 FTS:1H1 FTS H12 FTS:2H1 FTS H101 FTS:1H10 FTS H102 FTS:2H10 FTS H31 FTS:1H3 FTS H32 FTS:2H3 FTS H111 FTS:1H11 FTS H112 FTS:2H11 FTS H121 FTS:1H12 FTS H122 FTS:2H12 FTS H21 FTT:1H2 FTT H22 FTT:2H2 FTT H41 FTT:1H4 FTT H42 FTT:2H4 FTT H51 FTT:1H5 FTT H52 FTT:2H5 FTT H61 FTT:1H6 FTT H62 FTT:2H6 FTT H71 FTT:1H7 FTT H72 FTT:2H7 FTT H81 FTT:1H8 FTT H82 FTT:2H8 FTT H91 FTT:1H9 FTT H92 FTT:2H9 FTT H101 FTT:1H10 FTT H102 FTT:2H10 FTT H111 FTT:1H11 FTT H112 FTT:2H11 FTT H121 FTT:1H12 FTT H122 FTT:2H12 FTT H131 FTT:1H13 FTT H132 FTT:2H13 FTT H141 FTT:1H14 FTT H142 FTT:2H14 FTT H143 FTT:3H14 FTT H FTY:1HN FTY H2 FTY:2HN FTY HB2 FTY:1HB FTY HB3 FTY:2HB FTY HO2P FTY:PHO2 FTY HO3P FTY:PHO3 FTY H1C1 FU4:1H1C FU4 H1C2 FU4:2H1C FU4 H6C1 FU4:1H6C FU4 H6C2 FU4:2H6C FU4 H6C3 FU4:3H6C FU4 H11A FUA:1H1 FUA H12 FUA:2H1 FUA H21 FUA:1H2 FUA H22 FUA:2H2 FUA H61 FUA:1H6 FUA H62 FUA:2H6 FUA H71 FUA:1H7 FUA H72 FUA:2H7 FUA H121 FUA:1H12 FUA H122 FUA:2H12 FUA H151 FUA:1H15 FUA H152 FUA:2H15 FUA H181 FUA:1H18 FUA H182 FUA:2H18 FUA H183 FUA:3H18 FUA H191 FUA:1H19 FUA H192 FUA:2H19 FUA H193 FUA:3H19 FUA H201 FUA:1H20 FUA H202 FUA:2H20 FUA H203 FUA:3H20 FUA H211 FUA:1H21 FUA H212 FUA:2H21 FUA H213 FUA:3H21 FUA H231 FUA:1H23 FUA H232 FUA:2H23 FUA H241 FUA:1H24 FUA H242 FUA:2H24 FUA H271 FUA:1H27 FUA H272 FUA:2H27 FUA H273 FUA:3H27 FUA H281 FUA:1H28 FUA H282 FUA:2H28 FUA H283 FUA:3H28 FUA H321 FUA:1H32 FUA H322 FUA:2H32 FUA H323 FUA:3H32 FUA H61 FUC:1H6 FUC H62 FUC:2H6 FUC H63 FUC:3H6 FUC H6C1 FUF:1H6C FUF H6C2 FUF:2H6C FUF H6C3 FUF:3H6C FUF H51 FUG:1H5 FUG H52 FUG:2H5 FUG H61 FUG:1H6 FUG H62 FUG:2H6 FUG H111 FUG:1H11 FUG H112 FUG:2H11 FUG H113 FUG:3H11 FUG H231 FUG:1H23 FUG H232 FUG:2H23 FUG H2A1 FUG:1H2A FUG H2A2 FUG:2H2A FUG H2A3 FUG:3H2A FUG H2B1 FUG:1H2B FUG H2B2 FUG:2H2B FUG H2B3 FUG:3H2B FUG H2C1 FUG:1H2C FUG H2C2 FUG:2H2C FUG H2C3 FUG:3H2C FUG H311 FUG:1H31 FUG H312 FUG:2H31 FUG H313 FUG:3H31 FUG HOB4 FUG:4HOB FUG H61 FUL:1H6 FUL H62 FUL:2H6 FUL H63 FUL:3H6 FUL HN11 FUN:1HN1 FUN HN12 FUN:2HN1 FUN H51 FUN:1H5 FUN H52 FUN:2H5 FUN HOB2 FUP:2HOB FUP HOB3 FUP:3HOB FUP HOA2 FUP:2HOA FUP H5'1 FUP:1H5* FUP H5'2 FUP:2H5* FUP H4' FUP: H4* FUP H3' FUP: H3* FUP H2'1 FUP:1H2* FUP H2'2 FUP:2H2* FUP H1' FUP: H1* FUP H71 FUX:1H7 FUX H72 FUX:2H7 FUX HB11 FVF:1HB1 FVF HB21 FVF:1HB2 FVF HD11 FVF:1HD1 FVF HD21 FVF:1HD2 FVF HE11 FVF:1HE1 FVF HE21 FVF:1HE2 FVF HZ1 FVF:1HZ FVF HN2 FVF:2HN FVF HA2 FVF:2HA FVF HB12 FVF:2HB1 FVF HB22 FVF:2HB2 FVF HD12 FVF:2HD1 FVF HD22 FVF:2HD2 FVF HE12 FVF:2HE1 FVF HE22 FVF:2HE2 FVF HZ2 FVF:2HZ FVF HN3 FVF:3HN FVF HA3 FVF:3HA FVF HB3 FVF:3HB FVF H113 FVF:3H11 FVF H123 FVF:3H12 FVF H133 FVF:3H13 FVF H213 FVF:3H21 FVF H223 FVF:3H22 FVF H233 FVF:3H23 FVF HOP2 FVF:2HOP FVF HA4 FVF:4HA FVF HXT4 FVF:4HXT FVF HB14 FVF:4HB1 FVF HB24 FVF:4HB2 FVF HD14 FVF:4HD1 FVF HD24 FVF:4HD2 FVF HE14 FVF:4HE1 FVF HE24 FVF:4HE2 FVF HZ4 FVF:4HZ FVF H71 FWD:1H7 FWD H72 FWD:2H7 FWD H81 FWD:1H8 FWD H82 FWD:2H8 FWD H92O FWD:OH92 FWD H311 FXM:1H31 FXM H312 FXM:2H31 FXM H313 FXM:3H31 FXM H321 FXM:1H32 FXM H322 FXM:2H32 FXM H323 FXM:3H32 FXM H331 FXM:1H33 FXM H332 FXM:2H33 FXM H333 FXM:3H33 FXM H261 FXM:1H26 FXM H262 FXM:2H26 FXM H161 FXM:1H16 FXM H162 FXM:2H16 FXM H191 FXM:1H19 FXM H192 FXM:2H19 FXM H61 FXM:1H6 FXM H62 FXM:2H6 FXM H361 FXM:1H36 FXM H362 FXM:2H36 FXM H371 FXM:1H37 FXM H372 FXM:2H37 FXM H373 FXM:3H37 FXM H381 FXM:1H38 FXM H382 FXM:2H38 FXM H141 FXN:1H14 FXN H142 FXN:2H14 FXN H91 FXN:1H9 FXN H92 FXN:2H9 FXN H1A1 FXP:1H1A FXP H1A2 FXP:2H1A FXP H5A1 FXP:1H5A FXP H5A2 FXP:2H5A FXP H5B1 FXP:1H5B FXP H5B2 FXP:2H5B FXP H161 FXV:1H16 FXV H162 FXV:2H16 FXV H163 FXV:3H16 FXV H201 FXV:1H20 FXV H202 FXV:2H20 FXV H301 FXV:1H30 FXV H302 FXV:2H30 FXV H311 FXV:1H31 FXV H312 FXV:2H31 FXV H341 FXV:1H34 FXV H342 FXV:2H34 FXV H343 FXV:3H34 FXV H251 FXY:1H25 FXY H252 FXY:2H25 FXY H253 FXY:3H25 FXY H21 FXY:1H2 FXY H22 FXY:2H2 FXY H31 FXY:1H3 FXY H32 FXY:2H3 FXY H41 FXY:1H4 FXY H42 FXY:2H4 FXY H51 FXY:1H5 FXY H52 FXY:2H5 FXY H61 FXY:1H6 FXY H62 FXY:2H6 FXY H71 FXY:1H7 FXY H72 FXY:2H7 FXY H73 FXY:3H7 FXY H1 FYA:1H FYA H2A FYA:2H FYA HN1 FYA:1HN FYA HN2 FYA:2HN FYA HB1 FYA:1HB FYA HB2 FYA:2HB FYA HOP2 FYA:2HOP FYA H5'1 FYA:1H5* FYA H5'2 FYA:2H5* FYA H4' FYA: H4* FYA H3' FYA: H3* FYA HO'3 FYA:3HO* FYA H2' FYA: H2* FYA HO'2 FYA:2HO* FYA H1' FYA: H1* FYA H61 FYA:1H6 FYA H62 FYA:2H6 FYA H6N1 FYN:1H6N FYN H6N2 FYN:2H6N FYN H5'1 FYN:1H5' FYN H5'2 FYN:2H5' FYN HPB1 FYN:1HPB FYN HPB2 FYN:2HPB FYN HP91 FYN:1HP9 FYN HP92 FYN:2HP9 FYN HP93 FYN:3HP9 FYN HP81 FYN:1HP8 FYN HP82 FYN:2HP8 FYN HP83 FYN:3HP8 FYN HP51 FYN:1HP5 FYN HP52 FYN:2HP5 FYN HP41 FYN:1HP4 FYN HP42 FYN:2HP4 FYN HP21 FYN:1HP2 FYN HP22 FYN:2HP2 FYN HP11 FYN:1HP1 FYN HP12 FYN:2HP1 FYN HOP3 G:3HOP G HOP2 G:2HOP G H5' G:1H5* G H5'' G:2H5* G H4' G: H4* G H3' G: H3* G HO3' G:H3T G H2' G: H2* G HO2' G:2HO* G H1' G: H1* G H21 G:1H2 G H22 G:2H2 G H71 G0G:1H7 G0G H72 G0G:2H7 G0G H211 G0G:1H21 G0G H212 G0G:2H21 G0G H251 G0G:1H25 G0G H252 G0G:2H25 G0G H331 G0G:1H33 G0G H332 G0G:2H33 G0G H131 G12:1H13 G12 H132 G12:2H13 G12 H133 G12:3H13 G12 H271 G15:1H27 G15 H272 G15:2H27 G15 H281 G15:1H28 G15 H282 G15:2H28 G15 H291 G15:1H29 G15 H292 G15:2H29 G15 H301 G15:1H30 G15 H302 G15:2H30 G15 H241 G15:1H24 G15 H242 G15:2H24 G15 H243 G15:3H24 G15 H211 G15:1H21 G15 H212 G15:2H21 G15 H181 G15:1H18 G15 H182 G15:2H18 G15 H61 G16:1H6 G16 H62 G16:2H6 G16 HOP2 G16:2HOP G16 HOP3 G16:3HOP G16 HO1' G16:HO1* G16 HN41 G19:1HN4 G19 HN42 G19:2HN4 G19 H11A G19:1H1 G19 H12 G19:2H1 G19 H131 G19:1H13 G19 H132 G19:2H13 G19 H151 G19:1H15 G19 H152 G19:2H15 G19 H153 G19:3H15 G19 H161 G19:1H16 G19 H162 G19:2H16 G19 H163 G19:3H16 G19 H171 G19:1H17 G19 H172 G19:2H17 G19 H173 G19:3H17 G19 H181 G19:1H18 G19 H182 G19:2H18 G19 H183 G19:3H18 G19 H201 G19:1H20 G19 H202 G19:2H20 G19 H581 G1B:1H58 G1B H582 G1B:2H58 G1B H491 G1B:1H49 G1B H492 G1B:2H49 G1B H391 G1B:1H39 G1B H392 G1B:2H39 G1B H281 G1B:1H28 G1B H282 G1B:2H28 G1B H201 G1B:1H20 G1B H202 G1B:2H20 G1B H321 G1B:1H32 G1B H322 G1B:2H32 G1B H61 G1B:1H6 G1B H62 G1B:2H6 G1B H151 G1B:1H15 G1B H152 G1B:2H15 G1B H111 G1B:1H11 G1B H112 G1B:2H11 G1B H541 G1B:1H54 G1B H542 G1B:2H54 G1B H321 G1G:1H32 G1G H322 G1G:2H32 G1G H461 G1G:1H46 G1G H462 G1G:2H46 G1G H463 G1G:3H46 G1G H451 G1G:1H45 G1G H452 G1G:2H45 G1G H251 G1G:1H25 G1G H252 G1G:2H25 G1G H121 G1G:1H12 G1G H122 G1G:2H12 G1G H371 G1G:1H37 G1G H372 G1G:2H37 G1G H373 G1G:3H37 G1G H141 G1L:1H14 G1L H142 G1L:2H14 G1L H143 G1L:3H14 G1L H151 G1L:1H15 G1L H152 G1L:2H15 G1L H153 G1L:3H15 G1L H161 G1L:1H16 G1L H162 G1L:2H16 G1L H61 G1P:1H6 G1P H62 G1P:2H6 G1P HOP2 G1P:2HOP G1P HOP3 G1P:3HOP G1P HN21 G1R:1HN2 G1R HN22 G1R:2HN2 G1R H1' G1R: H1* G1R H2' G1R: H2* G1R HO2' G1R:HO2* G1R H3' G1R: H3* G1R HO3' G1R:HO3* G1R H4' G1R: H4* G1R H5'1 G1R:1H5* G1R H5'2 G1R:2H5* G1R H5X1 G1R:1H5X G1R H5X2 G1R:2H5X G1R H111 G20:1H11 G20 H112 G20:2H11 G20 H113 G20:3H11 G20 H811 G20:1H81 G20 H812 G20:2H81 G20 H813 G20:3H81 G20 H91 G20:1H9 G20 H92 G20:2H9 G20 H911 G20:1H91 G20 H912 G20:2H91 G20 H921 G20:1H92 G20 H922 G20:2H92 G20 H923 G20:3H92 G20 HN21 G20:1HN2 G20 HN22 G20:2HN2 G20 H31 G21:1H3 G21 H32 G21:2H3 G21 H111 G21:1H11 G21 H112 G21:2H11 G21 H113 G21:3H11 G21 H811 G21:1H81 G21 H812 G21:2H81 G21 H821 G21:1H82 G21 H822 G21:2H82 G21 H91 G21:1H9 G21 H92 G21:2H9 G21 H911 G21:1H91 G21 H912 G21:2H91 G21 H921 G21:1H92 G21 H922 G21:2H92 G21 H923 G21:3H92 G21 HNE1 G21:1HNE G21 HNE2 G21:2HNE G21 H51 G23:1H5 G23 H52 G23:2H5 G23 H53 G23:3H5 G23 H61 G23:1H6 G23 H62 G23:2H6 G23 H63 G23:3H6 G23 H91 G23:1H9 G23 H92 G23:2H9 G23 H111 G23:1H11 G23 H112 G23:2H11 G23 HAQ1 G24:1HAQ G24 HAQ2 G24:2HAQ G24 HAM1 G24:1HAM G24 HAM2 G24:2HAM G24 HBB1 G24:1HBB G24 HBB2 G24:2HBB G24 HBB3 G24:3HBB G24 HAE1 G24:1HAE G24 HAE2 G24:2HAE G24 HAE3 G24:3HAE G24 HAT1 G24:1HAT G24 HAT2 G24:2HAT G24 HOP3 G25:3HOP G25 HOP2 G25:2HOP G25 H5' G25:1H5* G25 H5'' G25:2H5* G25 H4' G25: H4* G25 H3' G25: H3* G25 HO'3 G25:3HO* G25 H2' G25: H2* G25 HO2' G25:2HO* G25 H1' G25: H1* G25 H21 G25:1H2 G25 H22 G25:2H2 G25 H51 G26:1H5 G26 H52 G26:2H5 G26 H53 G26:3H5 G26 H61 G26:1H6 G26 H62 G26:2H6 G26 H63 G26:3H6 G26 H91 G26:1H9 G26 H92 G26:2H9 G26 H101 G26:1H10 G26 H102 G26:2H10 G26 H121 G26:1H12 G26 H122 G26:2H12 G26 H191 G26:1H19 G26 H192 G26:2H19 G26 H101 G27:1H10 G27 H102 G27:2H10 G27 H91 G27:1H9 G27 H92 G27:2H9 G27 H81 G27:1H8 G27 H82 G27:2H8 G27 H71 G27:1H7 G27 H72 G27:2H7 G27 H21 G27:1H2 G27 H22 G27:2H2 G27 H61 G27:1H6 G27 H62 G27:2H6 G27 H31 G28:1H3 G28 H32 G28:2H3 G28 H111 G28:1H11 G28 H112 G28:2H11 G28 H113 G28:3H11 G28 H811 G28:1H81 G28 H812 G28:2H81 G28 H821 G28:1H82 G28 H822 G28:2H82 G28 H823 G28:3H82 G28 H91 G28:1H9 G28 H92 G28:2H9 G28 H911 G28:1H91 G28 H912 G28:2H91 G28 H913 G28:3H91 G28 HN41 G28:1HN4 G28 HN42 G28:2HN4 G28 H61 G2F:1H6 G2F H62 G2F:2H6 G2F H91 G2G:1H9 G2G H92 G2G:2H9 G2G H151 G2G:1H15 G2G H152 G2G:2H15 G2G H153 G2G:3H15 G2G H161 G2G:1H16 G2G H162 G2G:2H16 G2G H163 G2G:3H16 G2G H171 G2G:1H17 G2G H172 G2G:2H17 G2G H173 G2G:3H17 G2G H221 G2G:1H22 G2G H222 G2G:2H22 G2G H223 G2G:3H22 G2G H231 G2G:1H23 G2G H232 G2G:2H23 G2G H311 G2G:1H31 G2G H312 G2G:2H31 G2G H321 G2G:1H32 G2G H322 G2G:2H32 G2G H331 G2G:1H33 G2G H332 G2G:2H33 G2G H11A G2H:1H1 G2H H12 G2H:2H1 G2H H31A G2H:1H3 G2H H32 G2H:2H3 G2H HOP3 G2L:3HOP G2L HOP2 G2L:2HOP G2L H5' G2L:1H5* G2L H5'' G2L:2H5* G2L H4' G2L: H4* G2L H3' G2L: H3* G2L H2' G2L: H2* G2L HO2' G2L:2HO* G2L H1' G2L: H1* G2L H21 G2L:1H2 G2L H22 G2L:2H2 G2L HA'1 G2L:1HA* G2L HA'2 G2L:2HA* G2L HB'1 G2L:1HB* G2L HB'2 G2L:2HB* G2L HD'1 G2L:1HD* G2L HD'2 G2L:2HD* G2L HD'3 G2L:3HD* G2L H3A1 G2P:1H3A G2P H3A2 G2P:2H3A G2P H5'1 G2P:1H5* G2P H5'2 G2P:2H5* G2P H4' G2P: H4* G2P H3' G2P: H3* G2P H2' G2P: H2* G2P H1' G2P: H1* G2P H2N1 G2P:1H2N G2P H2N2 G2P:2H2N G2P HN21 G2R:1HN2 G2R HN22 G2R:2HN2 G2R H1' G2R: H1* G2R H2' G2R: H2* G2R HO2' G2R:HO2* G2R H3' G2R: H3* G2R HO3' G2R:HO3* G2R H4' G2R: H4* G2R H5'1 G2R:1H5* G2R H5'2 G2R:2H5* G2R H5X1 G2R:1H5X G2R H5X2 G2R:2H5X G2R H1X1 G2R:1H1X G2R H1X2 G2R:2H1X G2R HOP3 G2S:3HOP G2S HOP2 G2S:2HOP G2S H5' G2S:1H5* G2S H5'' G2S:2H5* G2S H4' G2S: H4* G2S H3' G2S: H3* G2S HO3' G2S:H3T G2S H2'1 G2S:1H2* G2S H1' G2S: H1* G2S H21 G2S:1H2 G2S H22 G2S:2H2 G2S H2'2 G2S:2H2* G2S H5'1 G31:1H5* G31 H5'2 G31:2H5* G31 H4' G31: H4* G31 H3' G31: H3* G31 H2'1 G31:1H2* G31 H2'2 G31:2H2* G31 H1' G31: H1* G31 H2N1 G31:1H2N G31 H2N2 G31:2H2N G31 H3M1 G31:1H3M G31 H3M2 G31:2H3M G31 H3M3 G31:3H3M G31 H5'1 G32:1H5* G32 H5'2 G32:2H5* G32 H4' G32: H4* G32 H3' G32: H3* G32 H2'1 G32:1H2* G32 H2'2 G32:2H2* G32 H1' G32: H1* G32 H2N1 G32:1H2N G32 H2N2 G32:2H2N G32 H6M1 G32:1H6M G32 H6M2 G32:2H6M G32 H6M3 G32:3H6M G32 H5'1 G33:1H5* G33 H5'2 G33:2H5* G33 H4' G33: H4* G33 H3' G33: H3* G33 H2'1 G33:1H2* G33 H2'2 G33:2H2* G33 H1' G33: H1* G33 H21 G33:1H2 G33 H22 G33:2H2 G33 H8M1 G33:1H8M G33 H8M2 G33:2H8M G33 H8M3 G33:3H8M G33 H81 G34:1H8 G34 H82 G34:2H8 G34 H21 G34:1H2 G34 H22 G34:2H2 G34 H11A G34:1H1 G34 H12 G34:2H1 G34 H71 G34:1H7 G34 H72 G34:2H7 G34 H131 G34:1H13 G34 H132 G34:2H13 G34 H151 G34:1H15 G34 H152 G34:2H15 G34 H153 G34:3H15 G34 H161 G34:1H16 G34 H162 G34:2H16 G34 H163 G34:3H16 G34 H171 G34:1H17 G34 H172 G34:2H17 G34 H173 G34:3H17 G34 H181 G34:1H18 G34 H182 G34:2H18 G34 H183 G34:3H18 G34 H201 G34:1H20 G34 H202 G34:2H20 G34 H221 G34:1H22 G34 H222 G34:2H22 G34 H241 G34:1H24 G34 H242 G34:2H24 G34 H261 G34:1H26 G34 H262 G34:2H26 G34 H271 G34:1H27 G34 H272 G34:2H27 G34 H291 G34:1H29 G34 H292 G34:2H29 G34 H301 G34:1H30 G34 H302 G34:2H30 G34 H303 G34:3H30 G34 H5'1 G36:1H5* G36 H5'2 G36:2H5* G36 H4' G36: H4* G36 H3' G36: H3* G36 H2'1 G36:1H2* G36 H2'2 G36:2H2* G36 HM21 G36:1HM2 G36 HM22 G36:2HM2 G36 HM23 G36:3HM2 G36 H1' G36: H1* G36 H2N1 G36:1H2N G36 H2N2 G36:2H2N G36 H1M1 G36:1H1M G36 H1M2 G36:2H1M G36 H11 G37:1H1 G37 H12 G37:2H1 G37 H71 G37:1H7 G37 H72 G37:2H7 G37 H73 G37:3H7 G37 H81 G37:1H8 G37 H82 G37:2H8 G37 H83 G37:3H8 G37 H111 G37:1H11 G37 H112 G37:2H11 G37 H191 G37:1H19 G37 H192 G37:2H19 G37 H341 G37:1H34 G37 H342 G37:2H34 G37 H411 G37:1H41 G37 H412 G37:2H41 G37 H5'1 G38:1H5* G38 H5'2 G38:2H5* G38 H4' G38: H4* G38 H3' G38: H3* G38 H2'1 G38:1H2* G38 H2'2 G38:2H2* G38 H1' G38: H1* G38 HN3 G38:3HN G38 H2N1 G38:1H2N G38 H2N2 G38:2H2N G38 HN1 G38:1HN G38 HN2 G38:2HN G38 H31 G39:1H3 G39 H32 G39:2H3 G39 H111 G39:1H11 G39 H112 G39:2H11 G39 H113 G39:3H11 G39 H91 G39:1H9 G39 H92 G39:2H9 G39 H811 G39:1H81 G39 H812 G39:2H81 G39 H821 G39:1H82 G39 H822 G39:2H82 G39 H823 G39:3H82 G39 H911 G39:1H91 G39 H912 G39:2H91 G39 H913 G39:3H91 G39 HN41 G39:1HN4 G39 HN42 G39:2HN4 G39 H321 G3A:1H32 G3A H322 G3A:2H32 G3A H451 G3A:1H45 G3A H452 G3A:2H45 G3A H251 G3A:1H25 G3A H252 G3A:2H25 G3A H161 G3A:1H16 G3A H162 G3A:2H16 G3A HOB2 G3D:2HOB G3D HOB3 G3D:3HOB G3D HOA2 G3D:2HOA G3D H5'1 G3D:1H5* G3D H5'2 G3D:2H5* G3D H4' G3D: H4* G3D H3' G3D: H3* G3D H2' G3D: H2* G3D HO2' G3D:*HO2 G3D H1' G3D: H1* G3D HN21 G3D:1HN2 G3D HN22 G3D:2HN2 G3D H331 G3G:1H33 G3G H332 G3G:2H33 G3G H251 G3G:1H25 G3G H252 G3G:2H25 G3G H211 G3G:1H21 G3G H212 G3G:2H21 G3G H71 G3G:1H7 G3G H72 G3G:2H7 G3G H421 G3G:1H42 G3G H422 G3G:2H42 G3G H431 G3G:1H43 G3G H432 G3G:2H43 G3G H11 G3H:1H1 G3H H31 G3H:1H3 G3H H32 G3H:2H3 G3H HOP3 G3H:3HOP G3H HOP4 G3H:4HOP G3H H11 G3P:1H1 G3P H12 G3P:2H1 G3P H31 G3P:1H3 G3P H32 G3P:2H3 G3P HOP3 G3P:3HOP G3P HOP4 G3P:4HOP G3P H5'1 G42:1H5* G42 H5'2 G42:2H5* G42 H4' G42: H4* G42 H3' G42: H3* G42 H2'1 G42:1H2* G42 H2'2 G42:2H2* G42 H1' G42: H1* G42 H2N1 G42:1H2N G42 H2N2 G42:2H2N G42 H11A G44:1H1 G44 H12A G44:2H1 G44 H13 G44:3H1 G44 H161 G44:1H16 G44 H162 G44:2H16 G44 H241 G44:1H24 G44 H242 G44:2H24 G44 H5'1 G46:1H5* G46 H5'2 G46:2H5* G46 H4' G46: H4* G46 H3' G46: H3* G46 H2' G46: H2* G46 H1' G46: H1* G46 H2N1 G46:1H2N G46 H2N2 G46:2H2N G46 H5'1 G47:1H5* G47 H5'2 G47:2H5* G47 H4' G47: H4* G47 H3' G47: H3* G47 H2'1 G47:1H2* G47 H2'2 G47:2H2* G47 H1' G47: H1* G47 H6A1 G47:1H6A G47 H6A2 G47:2H6A G47 H7A1 G47:1H7A G47 H7A2 G47:2H7A G47 H5'1 G48:1H5* G48 H5'2 G48:2H5* G48 H4' G48: H4* G48 H3' G48: H3* G48 H2' G48: H2* G48 H1' G48: H1* G48 H2N1 G48:1H2N G48 H2N2 G48:2H2N G48 HA'1 G48:1HA* G48 HA'2 G48:2HA* G48 HB'1 G48:1HB* G48 HB'2 G48:2HB* G48 HD'1 G48:1HD* G48 HD'2 G48:2HD* G48 HD'3 G48:3HD* G48 H5'1 G49:1H5* G49 H5'2 G49:2H5* G49 H4' G49: H4* G49 H3' G49: H3* G49 H2'1 G49:1H2* G49 H2'2 G49:2H2* G49 H1' G49: H1* G49 HM21 G49:1HM2 G49 HM22 G49:2HM2 G49 HM23 G49:3HM2 G49 H41 G4D:1H4 G4D H42 G4D:2H4 G4D H61 G4D:1H6 G4D H62 G4D:2H6 G4D HN21 G4G:1HN2 G4G HN2A G4G:2HN2 G4G HN11 G4G:1HN1 G4G HN12 G4G:2HN1 G4G H71 G4G:1H7 G4G H72 G4G:2H7 G4G H211 G4G:1H21 G4G H212 G4G:2H21 G4G H251 G4G:1H25 G4G H252 G4G:2H25 G4G H331 G4G:1H33 G4G H332 G4G:2H33 G4G HOB2 G4P:2HOB G4P HOB3 G4P:3HOB G4P HOA2 G4P:2HOA G4P H5' G4P:1H5* G4P H5'' G4P:2H5* G4P H4' G4P: H4* G4P H3' G4P: H3* G4P H2' G4P: H2* G4P HO2' G4P:*HO2 G4P H1' G4P: H1* G4P HN21 G4P:1HN2 G4P HN22 G4P:2HN2 G4P H61 G4S:1H6 G4S H62 G4S:2H6 G4S H8C1 G50:1H8C G50 H8C2 G50:2H8C G50 H9C1 G50:1H9C G50 H9C2 G50:2H9C G50 H5'1 G5P:1H5* G5P H5'2 G5P:2H5* G5P H4' G5P: H4* G5P H1' G5P: H1* G5P HN21 G5P:1HN2 G5P HN22 G5P:2HN2 G5P H11X G5P:1H1 G5P H12 G5P:2H1 G5P H2' G5P: H2* G5P H3' G5P: H3* G5P HN61 G5P:1HN6 G5P HN62 G5P:2HN6 G5P H8'1 G66:1H8' G66 H8'2 G66:2H8' G66 H5'1 G66:1H5' G66 H3'1 G66:1H3' G66 H3'2 G66:2H3' G66 H2'1 G66:1H2' G66 H2'2 G66:2H2' G66 H1'1 G66:1H1' G66 H1'2 G66:2H1' G66 HN21 G66:1HN2 G66 HN22 G66:2HN2 G66 HB1 G66:1HB G66 HB2 G66:2HB G66 HG1 G66:1HG G66 HG2 G66:2HG G66 HD1 G66:1HD G66 HD2 G66:2HD G66 HE1 G66:1HE G66 HE2 G66:2HE G66 HZ1 G66:1HZ G66 HZ2 G66:2HZ G66 HCA3 G6D:3HCA G6D HOA3 G6D:3HOA G6D HCA4 G6D:4HCA G6D HOA4 G6D:4HOA G6D HCA5 G6D:5HCA G6D HC61 G6D:1HC6 G6D HC62 G6D:2HC6 G6D HC63 G6D:3HC6 G6D H61 G6P:1H6 G6P H62 G6P:2H6 G6P H61 G6Q:1H6 G6Q H62 G6Q:2H6 G6Q HOP2 G6Q:2HOP G6Q HOP3 G6Q:3HOP G6Q H61 G6S:1H6 G6S H62 G6S:2H6 G6S HOP3 G7M:3HOP G7M HOP2 G7M:2HOP G7M H5' G7M:1H5* G7M H5'' G7M:2H5* G7M H4' G7M: H4* G7M H3' G7M: H3* G7M HO3' G7M:H3T G7M H2' G7M: H2* G7M HO2' G7M:2HO* G7M H1' G7M: H1* G7M HN71 G7M:1HN7 G7M HN72 G7M:2HN7 G7M HN73 G7M:3HN7 G7M H21 G7M:1H2 G7M H22 G7M:2H2 G7M H11A G80:1H1 G80 H12 G80:2H1 G80 H21 G80:1H2 G80 H22 G80:2H2 G80 H71 G80:1H7 G80 H72 G80:2H7 G80 H81 G80:1H8 G80 H82 G80:2H8 G80 H131 G80:1H13 G80 H132 G80:2H13 G80 H151 G80:1H15 G80 H152 G80:2H15 G80 H153 G80:3H15 G80 H161 G80:1H16 G80 H162 G80:2H16 G80 H163 G80:3H16 G80 H171 G80:1H17 G80 H172 G80:2H17 G80 H173 G80:3H17 G80 H181 G80:1H18 G80 H182 G80:2H18 G80 H183 G80:3H18 G80 H201 G80:1H20 G80 H202 G80:2H20 G80 H221 G80:1H22 G80 H222 G80:2H22 G80 H241 G80:1H24 G80 H242 G80:2H24 G80 H251 G80:1H25 G80 H252 G80:2H25 G80 H271 G80:1H27 G80 H272 G80:2H27 G80 H261 G80:1H26 G80 H262 G80:2H26 G80 H5C1 G88:1H5C G88 H5C2 G88:2H5C G88 H4C1 G88:1H4C G88 H4C2 G88:2H4C G88 H1C1 G88:1H1C G88 H1C2 G88:2H1C G88 HN11 GA0:1HN1 GA0 HN12 GA0:2HN1 GA0 HA11 GA0:1HA1 GA0 HA12 GA0:2HA1 GA0 HB21 GA0:1HB2 GA0 HB22 GA0:2HB2 GA0 HB23 GA0:3HB2 GA0 HD31 GA0:1HD3 GA0 HD32 GA0:2HD3 GA0 HB31 GA0:1HB3 GA0 HB32 GA0:2HB3 GA0 HG31 GA0:1HG3 GA0 HG32 GA0:2HG3 GA0 H4'1 GA2:1H4* GA2 H4'2 GA2:2H4* GA2 HO4' GA2:*HO4 GA2 H3'1 GA2:1H3* GA2 H3'2 GA2:2H3* GA2 HO3' GA2:*HO3 GA2 H2' GA2: H2* GA2 H1'1 GA2:1H1* GA2 H1'2 GA2:2H1* GA2 HN21 GA2:1HN2 GA2 HN22 GA2:2HN2 GA2 H11 GA4:1H1 GA4 H12 GA4:2H1 GA4 H21 GA4:1H2 GA4 H22 GA4:2H2 GA4 H111 GA4:1H11 GA4 H112 GA4:2H11 GA4 H121 GA4:1H12 GA4 H122 GA4:2H12 GA4 H141 GA4:1H14 GA4 H142 GA4:2H14 GA4 H151 GA4:1H15 GA4 H152 GA4:2H15 GA4 H171 GA4:1H17 GA4 H172 GA4:2H17 GA4 H181 GA4:1H18 GA4 H182 GA4:2H18 GA4 H183 GA4:3H18 GA4 H61 GAA:1H6 GAA H62 GAA:2H6 GAA HO2' GAB:'HO2 GAB HN31 GAB:1HN3 GAB HN32 GAB:2HN3 GAB H6A1 GAC:1H6A GAC H6A2 GAC:2H6A GAC H7A1 GAC:1H7A GAC H7A2 GAC:2H7A GAC HOA2 GAC:2HOA GAC HOA3 GAC:3HOA GAC HOA4 GAC:4HOA GAC HOA6 GAC:6HOA GAC H6B1 GAC:1H6B GAC H6B2 GAC:2H6B GAC H6B3 GAC:3H6B GAC HOB2 GAC:2HOB GAC HOB3 GAC:3HOB GAC H6C1 GAC:1H6C GAC H6C2 GAC:2H6C GAC HOC2 GAC:2HOC GAC HOC3 GAC:3HOC GAC HOC6 GAC:6HOC GAC H6D1 GAC:1H6D GAC H6D2 GAC:2H6D GAC HOD1 GAC:1HOD GAC HOD2 GAC:2HOD GAC HOD3 GAC:3HOD GAC HOD6 GAC:6HOD GAC H11 GAD:1H1 GAD H12 GAD:2H1 GAD H1C1 GAF:1H1C GAF H6C1 GAF:1H6C GAF H6C2 GAF:2H6C GAF H11A GAH:1H1 GAH H12 GAH:2H1 GAH H71 GAH:1H7 GAH H72 GAH:2H7 GAH H101 GAH:1H10 GAH H102 GAH:2H10 GAH H51 GAH:1H5 GAH H52A GAH:2H5 GAH H41 GAH:1H4 GAH H42 GAH:2H4 GAH H481 GAH:1H48 GAH H482 GAH:2H48 GAH H491 GAH:1H49 GAH H492 GAH:2H49 GAH H501 GAH:1H50 GAH H502 GAH:2H50 GAH H511 GAH:1H51 GAH H512 GAH:2H51 GAH H541 GAH:1H54 GAH H542 GAH:2H54 GAH H471 GAH:1H47 GAH H472 GAH:2H47 GAH H331 GAH:1H33 GAH H332 GAH:2H33 GAH H271 GAH:1H27 GAH H272 GAH:2H27 GAH H261 GAH:1H26 GAH H262 GAH:2H26 GAH H161 GAH:1H16 GAH H162 GAH:2H16 GAH H21 GAH:1H2 GAH H22 GAH:2H2 GAH H231 GAH:1H23 GAH H232 GAH:2H23 GAH H221 GAH:1H22 GAH H222 GAH:2H22 GAH H211 GAH:1H21 GAH H212 GAH:2H21 GAH H201 GAH:1H20 GAH H202 GAH:2H20 GAH H191 GAH:1H19 GAH H192 GAH:2H19 GAH HN21 GAI:1HN2 GAI HN22 GAI:2HN2 GAI HN31 GAI:1HN3 GAI HN32 GAI:2HN3 GAI H61 GAL:1H6 GAL H62 GAL:2H6 GAL H21 GAM:1H2 GAM H22 GAM:2H2 GAM H23 GAM:3H2 GAM H11 GAM:1H1 GAM H12 GAM:2H1 GAM HG1 GAM:1HG GAM HG2 GAM:2HG GAM HN1 GAM:1HN GAM HN2 GAM:2HN GAM HN11 GAN:1HN1 GAN HN12 GAN:2HN1 GAN H31 GAN:1H3 GAN H32 GAN:2H3 GAN H33 GAN:3H3 GAN H81 GAN:1H8 GAN H82 GAN:2H8 GAN H83 GAN:3H8 GAN H121 GAN:1H12 GAN H122 GAN:2H12 GAN H191 GAN:1H19 GAN H192 GAN:2H19 GAN H201 GAN:1H20 GAN H202 GAN:2H20 GAN H211 GAN:1H21 GAN H212 GAN:2H21 GAN H241 GAN:1H24 GAN H242 GAN:2H24 GAN H243 GAN:3H24 GAN H301 GAN:1H30 GAN H302 GAN:2H30 GAN H303 GAN:3H30 GAN H311 GAN:1H31 GAN H312 GAN:2H31 GAN H313 GAN:3H31 GAN H381 GAN:1H38 GAN H382 GAN:2H38 GAN H383 GAN:3H38 GAN H391 GAN:1H39 GAN H392 GAN:2H39 GAN H393 GAN:3H39 GAN H421 GAN:1H42 GAN H422 GAN:2H42 GAN H423 GAN:3H42 GAN HOP3 GAO:3HOP GAO HOP2 GAO:2HOP GAO H5' GAO:1H5* GAO H5'' GAO:2H5* GAO H4' GAO: H4* GAO H3' GAO: H3* GAO HO3' GAO:H3T GAO H2' GAO: H2* GAO HO2' GAO:2HO* GAO H1' GAO: H1* GAO H21 GAO:1H2 GAO H22 GAO:2H2 GAO H1 GAP:1H GAP H2A GAP:2H GAP H3 GAP:3H GAP HA1 GAP:1HA GAP HA2 GAP:2HA GAP H5'1 GAP:1H5* GAP H5'2 GAP:2H5* GAP H4' GAP: H4* GAP H3' GAP: H3* GAP HO'3 GAP:3HO* GAP H2' GAP: H2* GAP HO'2 GAP:2HO* GAP H1' GAP: H1* GAP H55 GAQ:5H5 GAQ H41 GAQ:1H4 GAQ H42 GAQ:2H4 GAQ H31 GAQ:1H3 GAQ H32 GAQ:2H3 GAQ H21 GAQ:1H2 GAQ H22 GAQ:2H2 GAQ H11 GAQ:1H1 GAQ H101 GAR:1H10 GAR H102 GAR:2H10 GAR H231 GAR:1H23 GAR H232 GAR:2H23 GAR H241 GAR:1H24 GAR H242 GAR:2H24 GAR H91 GAS:1H9 GAS H92 GAS:2H9 GAS H61 GAT:1H6 GAT H62 GAT:2H6 GAT HN11 GAT:1HN1 GAT HN12 GAT:2HN1 GAT H GAU:1HN GAU H2 GAU:2HN GAU HB2 GAU:1HB GAU HB3 GAU:2HB GAU HG2 GAU:1HG GAU HG3 GAU:2HG GAU HO1 GAU:1HO GAU HO2 GAU:2HO GAU H2N1 GAV:1H2N GAV H2N2 GAV:2H2N GAV H1' GAV: H1* GAV H2' GAV: H2* GAV H3' GAV: H3* GAV H4' GAV: H4* GAV H5'1 GAV:1H5* GAV H5'2 GAV:2H5* GAV H1 GB:1H GB H2 GB:2H GB H3 GB:3H GB H91 GB1:1H9 GB1 H92 GB1:2H9 GB1 H61 GB1:1H6 GB1 H62 GB1:2H6 GB1 H21 GB1:1H2 GB1 H22 GB1:2H2 GB1 H61 GB2:1H6 GB2 H62 GB2:2H6 GB2 H21 GB2:1H2 GB2 H22 GB2:2H2 GB2 H91 GB2:1H9 GB2 H92 GB2:2H9 GB2 H91 GB3:1H9 GB3 H92 GB3:2H9 GB3 H61 GB3:1H6 GB3 H62 GB3:2H6 GB3 H211 GB3:1H21 GB3 H212 GB3:2H21 GB3 H213 GB3:3H21 GB3 HOP2 GBB:2HOP GBB H5' GBB:1H5* GBB H5'' GBB:2H5* GBB H4' GBB: H4* GBB H1' GBB: H1* GBB H2' GBB:1H2* GBB H2'' GBB:2H2* GBB H3' GBB: H3* GBB HO3' GBB:*HO3 GBB HOP3 GBB:3HOP GBB H41 GBC:1H4 GBC H42 GBC:2H4 GBC H51 GBC:1H5 GBC H52 GBC:2H5 GBC H61 GBC:1H6 GBC H62 GBC:2H6 GBC HN31 GBC:1HN3 GBC HN32 GBC:2HN3 GBC HN11 GBI:1HN1 GBI HN12 GBI:2HN1 GBI HB11 GBI:1HB1 GBI HB12 GBI:2HB1 GBI HG11 GBI:1HG1 GBI HG12 GBI:2HG1 GBI HB21 GBI:1HB2 GBI HB22 GBI:2HB2 GBI HA31 GBI:1HA3 GBI HA32 GBI:2HA3 GBI H'1 GBI:1H' GBI H'2 GBI:2H' GBI HAC1 GBL:1HAC GBL HAC2 GBL:2HAC GBL HBC1 GBL:1HBC GBL HBC2 GBL:2HBC GBL HGC1 GBL:1HGC GBL HGC2 GBL:2HGC GBL HN11 GBN:1HN1 GBN HN12 GBN:2HN1 GBN H21 GBN:1H2 GBN H22 GBN:2H2 GBN H31 GBN:1H3 GBN H32 GBN:2H3 GBN H2R1 GBN:1H2R GBN H2R2 GBN:2H2R GBN H3R1 GBN:1H3R GBN H3R2 GBN:2H3R GBN H4R1 GBN:1H4R GBN H4R2 GBN:2H4R GBN H5R1 GBN:1H5R GBN H5R2 GBN:2H5R GBN H6R1 GBN:1H6R GBN H6R2 GBN:2H6R GBN HOT1 GBP:1HOT GBP H11N GBP:1NH1 GBP H12N GBP:2NH1 GBP HA1 GBP:1HA GBP HB1 GBP:1HB GBP HB2 GBP:2HB GBP HB21 GBP:1HB2 GBP HB22 GBP:2HB2 GBP HG1 GBP:1HG GBP HG2 GBP:2HG GBP HN21 GBP:1HN2 GBP HA31 GBP:1HA3 GBP HA32 GBP:2HA3 GBP HO31 GBP:1HO3 GBP HH11 GBS:1HH1 GBS HH12 GBS:2HH1 GBS HN11 GBX:1HN1 GBX HN12 GBX:2HN1 GBX HB11 GBX:1HB1 GBX HB12 GBX:2HB1 GBX HG11 GBX:1HG1 GBX HG12 GBX:2HG1 GBX HB21 GBX:1HB2 GBX HB22 GBX:2HB2 GBX HA31 GBX:1HA3 GBX HA32 GBX:2HA3 GBX H11 GC1:1H1 GC1 H41 GC4:1H4 GC4 H42 GC4:2H4 GC4 HN11 GC7:1HN1 GC7 HN12 GC7:2HN1 GC7 H11 GC7:1H1 GC7 H12 GC7:2H1 GC7 H21 GC7:1H2 GC7 H22 GC7:2H2 GC7 H31 GC7:1H3 GC7 H32 GC7:2H3 GC7 H41 GC7:1H4 GC7 H42 GC7:2H4 GC7 H51 GC7:1H5 GC7 H52 GC7:2H5 GC7 H61 GC7:1H6 GC7 H62 GC7:2H6 GC7 H71 GC7:1H7 GC7 H72 GC7:2H7 GC7 HH11 GC7:1HH1 GC7 HH12 GC7:2HH1 GC7 HH21 GC7:1HH2 GC7 HH22 GC7:2HH2 GC7 H21 GCA:1H2 GCA H41 GCA:1H4 GCA H61 GCA:1H6 GCA HP1 GCA:1HP GCA HP2 GCA:2HP GCA HP3 GCA:3HP GCA HQ1 GCA:1HQ GCA HQ2 GCA:2HQ GCA HQ3 GCA:3HQ GCA HG1 GCA:1HG GCA HG2 GCA:2HG GCA HF1 GCA:1HF GCA HH1 GCA:1HH GCA HH2 GCA:2HH GCA HH3 GCA:3HH GCA HI1 GCA:1HI GCA HI2 GCA:2HI GCA HI3 GCA:3HI GCA HN1 GCA:1HN GCA HA1 GCA:1HA GCA HA2 GCA:2HA GCA HC1 GCA:1HC GCA HC2 GCA:2HC GCA HD1 GCA:1HD GCA HD2 GCA:2HD GCA HD3 GCA:3HD GCA HB11 GCG:1HB1 GCG HB12 GCG:2HB1 GCG HN11 GCG:1HN1 GCG HN12 GCG:2HN1 GCG HG11 GCG:1HG1 GCG HG12 GCG:2HG1 GCG HB21 GCG:1HB2 GCG HB22 GCG:2HB2 GCG HA31 GCG:1HA3 GCG HA32 GCG:2HA3 GCG HNS1 GCG:1HNS GCG H2S1 GCG:1H2S GCG H2S2 GCG:2H2S GCG H3S1 GCG:1H3S GCG H3S2 GCG:2H3S GCG H4S1 GCG:1H4S GCG H4S2 GCG:2H4S GCG H5S1 GCG:1H5S GCG H5S2 GCG:2H5S GCG H7S1 GCG:1H7S GCG H7S2 GCG:2H7S GCG HNS6 GCG:6HNS GCG H8S1 GCG:1H8S GCG H8S2 GCG:2H8S GCG H9S1 GCG:1H9S GCG H9S2 GCG:2H9S GCG HA51 GCG:1HA5 GCG HA52 GCG:2HA5 GCG HB61 GCG:1HB6 GCG HB62 GCG:2HB6 GCG HB71 GCG:1HB7 GCG HB72 GCG:2HB7 GCG HN71 GCG:1HN7 GCG HN72 GCG:2HN7 GCG HG71 GCG:1HG7 GCG HG72 GCG:2HG7 GCG HOP2 GCK:2HOP GCK H161 GCK:1H16 GCK H162 GCK:2H16 GCK H171 GCK:1H17 GCK H172 GCK:2H17 GCK H201 GCK:1H20 GCK H202 GCK:2H20 GCK H211 GCK:1H21 GCK H212 GCK:2H21 GCK H2'1 GCK:1H2* GCK H2'2 GCK:2H2* GCK H5'1 GCK:1H5* GCK H5'2 GCK:2H5* GCK H4' GCK: H4* GCK H1' GCK: H1* GCK H3' GCK: H3* GCK HOP3 GCK:3HOP GCK H11 GCL:1H1 GCL H12 GCL:2H1 GCL H51 GCL:1H5 GCL H52 GCL:2H5 GCL H71 GCL:1H7 GCL H72 GCL:2H7 GCL H73 GCL:3H7 GCL H81 GCL:1H8 GCL H82 GCL:2H8 GCL H83 GCL:3H8 GCL H2'1 GCL:1H2' GCL H2'2 GCL:2H2' GCL H3'1 GCL:1H3' GCL H3'2 GCL:2H3' GCL H4'1 GCL:1H4' GCL H4'2 GCL:2H4' GCL H5'1 GCL:1H5' GCL H5'2 GCL:2H5' GCL H6'1 GCL:1H6' GCL H6'2 GCL:2H6' GCL HN21 GCL:1HN2 GCL HN22 GCL:2HN2 GCL H GCM:1HN GCM H2 GCM:2HN GCM HA1 GCM:1HA GCM HA2 GCM:2HA GCM HM1 GCM:1HM GCM HM2 GCM:2HM GCM HM3 GCM:3HM GCM H31 GCN:1H3 GCN H32 GCN:2H3 GCN H61 GCN:1H6 GCN H62 GCN:2H6 GCN HN21 GCN:1HN2 GCN HN22 GCN:2HN2 GCN H61 GCO:1H6 GCO H62 GCO:2H6 GCO HOG2 GCP:2HOG GCP HOG3 GCP:3HOG GCP H3B1 GCP:1H3B GCP H3B2 GCP:2H3B GCP HOB2 GCP:2HOB GCP HOA2 GCP:2HOA GCP H5'2 GCP:2H5* GCP H5'1 GCP:1H5* GCP H4' GCP: H4* GCP H3' GCP: H3* GCP HO3' GCP:*HO3 GCP H2' GCP: H2* GCP HO2' GCP:*HO2 GCP H1' GCP: H1* GCP HN21 GCP:1HN2 GCP HN22 GCP:2HN2 GCP H5'1 GCQ:1H5* GCQ H5'2 GCQ:2H5* GCQ H4' GCQ: H4* GCQ H3' GCQ: H3* GCQ H1' GCQ: H1* GCQ HN41 GCQ:1HN4 GCQ HN42 GCQ:2HN4 GCQ H141 GCR:1H14 GCR H142 GCR:2H14 GCR H171 GCR:1H17 GCR H172 GCR:2H17 GCR H181 GCR:1H18 GCR H182 GCR:2H18 GCR H211 GCR:1H21 GCR H212 GCR:2H21 GCR H241 GCR:1H24 GCR H242 GCR:2H24 GCR H251 GCR:1H25 GCR H252 GCR:2H25 GCR H271 GCR:1H27 GCR H272 GCR:2H27 GCR H291 GCR:1H29 GCR H292 GCR:2H29 GCR H301 GCR:1H30 GCR H302 GCR:2H30 GCR H321 GCR:1H32 GCR H322 GCR:2H32 GCR H341 GCR:1H34 GCR H342 GCR:2H34 GCR H351 GCR:1H35 GCR H352 GCR:2H35 GCR H353 GCR:3H35 GCR H361 GCR:1H36 GCR H362 GCR:2H36 GCR H363 GCR:3H36 GCR H371 GCR:1H37 GCR H372 GCR:2H37 GCR H373 GCR:3H37 GCR H381 GCR:1H38 GCR H382 GCR:2H38 GCR H31 GCS:1H3 GCS H61 GCS:1H6 GCS H62 GCS:2H6 GCS HN21 GCS:1HN2 GCS HN22 GCS:2HN2 GCS H32 GCS:2H3 GCS HC11 GCT:1HC1 GCT HC12 GCT:2HC1 GCT HC41 GCT:1HC4 GCT HC42 GCT:2HC4 GCT H71 GCV:1H7 GCV H72 GCV:2H7 GCV H73 GCV:3H7 GCV H71 GCW:1H7 GCW H72 GCW:2H7 GCW H73 GCW:3H7 GCW H11 GD7:1H1 GD7 H12 GD7:2H1 GD7 H13 GD7:3H1 GD7 H21 GD7:1H2 GD7 H22 GD7:2H2 GD7 H23 GD7:3H2 GD7 H31 GD7:1H3 GD7 H32 GD7:2H3 GD7 H33 GD7:3H3 GD7 H41 GD7:1H4 GD7 H42 GD7:2H4 GD7 H43 GD7:3H4 GD7 H71 GD7:1H7 GD7 H72 GD7:2H7 GD7 H73 GD7:3H7 GD7 H6C1 GDA:1H6C GDA H6C2 GDA:2H6C GDA H4N1 GDA:1H4N GDA H4N2 GDA:2H4N GDA HN11 GDB:1HN1 GDB HN12 GDB:2HN1 GDB HB11 GDB:1HB1 GDB HB12 GDB:2HB1 GDB HG11 GDB:1HG1 GDB HG12 GDB:2HG1 GDB HB21 GDB:1HB2 GDB HB22 GDB:2HB2 GDB HA31 GDB:1HA3 GDB HA32 GDB:2HA3 GDB H5'1 GDC:1H5* GDC H5'2 GDC:2H5* GDC H4' GDC: H4* GDC H3' GDC: H3* GDC H2' GDC: H2* GDC H1' GDC: H1* GDC H2N1 GDC:1H2N GDC H2N2 GDC:2H2N GDC H6A1 GDC:1H6A GDC H6A2 GDC:2H6A GDC H2N1 GDD:1H2N GDD H2N2 GDD:2H2N GDD H1' GDD: H1* GDD H2' GDD: H2* GDD H3' GDD: H3* GDD H4' GDD: H4* GDD H5'1 GDD:1H5* GDD H5'2 GDD:2H5* GDD H611 GDD:1H61 GDD H612 GDD:2H61 GDD H611 GDG:1H61 GDG H612 GDG:2H61 GDG H5'1 GDG:1H5* GDG H5'2 GDG:2H5* GDG H4' GDG: H4* GDG H3' GDG: H3* GDG HO3' GDG:HO3* GDG H2' GDG: H2* GDG HO2' GDG:HO2* GDG H1' GDG: H1* GDG HN21 GDG:1HN2 GDG HN22 GDG:2HN2 GDG H6C1 GDL:1H6C GDL H6C2 GDL:2H6C GDL H8C1 GDL:1H8C GDL H8C2 GDL:2H8C GDL H8C3 GDL:3H8C GDL HN21 GDM:1HN2 GDM HN22 GDM:2HN2 GDM H131 GDM:1H13 GDM H132 GDM:2H13 GDM H151 GDM:1H15 GDM H152 GDM:2H15 GDM H221 GDM:1H22 GDM H222 GDM:2H22 GDM H223 GDM:3H22 GDM H231 GDM:1H23 GDM H232 GDM:2H23 GDM H233 GDM:3H23 GDM H251 GDM:1H25 GDM H252 GDM:2H25 GDM H253 GDM:3H25 GDM H261 GDM:1H26 GDM H262 GDM:2H26 GDM H263 GDM:3H26 GDM H271 GDM:1H27 GDM H272 GDM:2H27 GDM H273 GDM:3H27 GDM H281 GDM:1H28 GDM H282 GDM:2H28 GDM H283 GDM:3H28 GDM H291 GDM:1H29 GDM H292 GDM:2H29 GDM H293 GDM:3H29 GDM HN1 GDN:1HN GDN HN2A GDN:2HN GDN HB11 GDN:1HB1 GDN HB12 GDN:2HB1 GDN HG11 GDN:1HG1 GDN HG12 GDN:2HG1 GDN HB21 GDN:1HB2 GDN HB22 GDN:2HB2 GDN HA31 GDN:1HA3 GDN HA32 GDN:2HA3 GDN HOB2 GDP:2HOB GDP HOB3 GDP:3HOB GDP HOA2 GDP:2HOA GDP H5' GDP:1H5* GDP H5'' GDP:2H5* GDP H4' GDP: H4* GDP H3' GDP: H3* GDP HO3' GDP:*HO3 GDP H2' GDP: H2* GDP HO2' GDP:*HO2 GDP H1' GDP: H1* GDP HN21 GDP:1HN2 GDP HN22 GDP:2HN2 GDP HOB2 GDR:2HOB GDR HOA2 GDR:2HOA GDR H5' GDR:1H5* GDR H5'' GDR:2H5* GDR H4' GDR: H4* GDR H1' GDR: H1* GDR HN21 GDR:1HN2 GDR HN22 GDR:2HN2 GDR H2' GDR: H2* GDR HO2A GDR:HO2* GDR H3' GDR: H3* GDR HO3A GDR:HO3* GDR HC61 GDR:1HC6 GDR HC62 GDR:2HC6 GDR HC63 GDR:3HC6 GDR HN11 GDS:1HN1 GDS HN12 GDS:2HN1 GDS HB11 GDS:1HB1 GDS HB12 GDS:2HB1 GDS HG11 GDS:1HG1 GDS HG12 GDS:2HG1 GDS HB21 GDS:1HB2 GDS HB22 GDS:2HB2 GDS HA31 GDS:1HA3 GDS HA32 GDS:2HA3 GDS HA41 GDS:1HA4 GDS HA42 GDS:2HA4 GDS HB51 GDS:1HB5 GDS HB52 GDS:2HB5 GDS HN61 GDS:1HN6 GDS HN62 GDS:2HN6 GDS HB61 GDS:1HB6 GDS HB62 GDS:2HB6 GDS HG61 GDS:1HG6 GDS HG62 GDS:2HG6 GDS H1D GDU: H1* GDU H2D GDU: H2* GDU HO2' GDU:*HO2 GDU H3D GDU: H3* GDU H4D GDU: H4* GDU HO3' GDU:*HO3 GDU H5'1 GDU:1H5* GDU H5'2 GDU:2H5* GDU HOA2 GDU:2HOA GDU HOB2 GDU:2HOB GDU H6'1 GDU:1H6' GDU H6'2 GDU:2H6' GDU HO2A GDU:'HO2 GDU HO3A GDU:'HO3 GDU HO4' GDU:'HO4 GDU HO6' GDU:'HO6 GDU H121 GDV:1H12 GDV H122 GDV:2H12 GDV H123 GDV:3H12 GDV H6C1 GDV:1H6C GDV H6C2 GDV:2H6C GDV HN21 GDX:1HN2 GDX HN22 GDX:2HN2 GDX H1' GDX: H1* GDX H2' GDX: H2* GDX HO2A GDX:*HO2 GDX H3' GDX: H3* GDX HO3A GDX:*HO3 GDX H4' GDX: H4* GDX H5'2 GDX:2H5* GDX H5'1 GDX:1H5* GDX HOA2 GDX:2HOA GDX HOB2 GDX:2HOB GDX HN21 GE1:1HN2 GE1 HN22 GE1:2HN2 GE1 H31 GE1:1H3 GE1 H32 GE1:2H3 GE1 H41 GE1:1H4 GE1 H42 GE1:2H4 GE1 H61 GE1:1H6 GE1 H62 GE1:2H6 GE1 HN11 GE1:1HN1 GE1 HN12 GE1:2HN1 GE1 H1A GE2:1H GE2 H2 GE2:2H GE2 HN11 GE2:1HN1 GE2 HN12 GE2:2HN1 GE2 H21 GE2:1H2 GE2 H22 GE2:2H2 GE2 H41 GE2:1H4 GE2 H42 GE2:2H4 GE2 HN61 GE2:1HN6 GE2 HN62 GE2:2HN6 GE2 H1 GE3:1H GE3 H2A GE3:2H GE3 H311 GE3:1H31 GE3 H312 GE3:2H31 GE3 H313 GE3:3H31 GE3 H411 GE3:1H41 GE3 H412 GE3:2H41 GE3 H413 GE3:3H41 GE3 HN11 GEA:1HN1 GEA HN12 GEA:2HN1 GEA HC41 GEA:1HC4 GEA HC51 GEA:1HC5 GEA HC52 GEA:2HC5 GEA HC61 GEA:1HC6 GEA HC62 GEA:2HC6 GEA HC71 GEA:1HC7 GEA HC72 GEA:2HC7 GEA H111 GEA:1H11 GEA H121 GEA:1H12 GEA H122 GEA:2H12 GEA H171 GEA:1H17 GEA H221 GEA:1H22 GEA H231 GEA:1H23 GEA H281 GEA:1H28 GEA H331 GEA:1H33 GEA H371 GEA:1H37 GEA H381 GEA:1H38 GEA H411 GEA:1H41 GEA H421 GEA:1H42 GEA H431 GEA:1H43 GEA H441 GEA:1H44 GEA H451 GEA:1H45 GEA H491 GEA:1H49 GEA H492 GEA:2H49 GEA H501 GEA:1H50 GEA H581 GEA:1H58 GEA H582 GEA:2H58 GEA H601 GEA:1H60 GEA H602 GEA:2H60 GEA H603 GEA:3H60 GEA H611 GEA:1H61 GEA H621 GEA:1H62 GEA H631 GEA:1H63 GEA H632 GEA:2H63 GEA H633 GEA:3H63 GEA H641 GEA:1H64 GEA H642 GEA:2H64 GEA H643 GEA:3H64 GEA H651 GEA:1H65 GEA H731 GEA:1H73 GEA H732 GEA:2H73 GEA H733 GEA:3H73 GEA H741 GEA:1H74 GEA H751 GEA:1H75 GEA H752 GEA:2H75 GEA H781 GEA:1H78 GEA H791 GEA:1H79 GEA H792 GEA:2H79 GEA H793 GEA:3H79 GEA H801 GEA:1H80 GEA H841 GEA:1H84 GEA H1C1 GEG:1H1C GEG H1C2 GEG:2H1C GEG H2C1 GEG:1H2C GEG H2C2 GEG:2H2C GEG H5C1 GEG:1H5C GEG H5C2 GEG:2H5C GEG H5C3 GEG:3H5C GEG H3N1 GEG:1H3N GEG H3N2 GEG:2H3N GEG H11 GEL:1H1 GEL H12 GEL:2H1 GEL H111 GEL:1H11 GEL H112 GEL:2H11 GEL H121 GEL:1H12 GEL H122 GEL:2H12 GEL H131 GEL:1H13 GEL H132 GEL:2H13 GEL H141 GEL:1H14 GEL H142 GEL:2H14 GEL H151 GEL:1H15 GEL H152 GEL:2H15 GEL H161 GEL:1H16 GEL H162 GEL:2H16 GEL H171 GEL:1H17 GEL H172 GEL:2H17 GEL H181 GEL:1H18 GEL H182 GEL:2H18 GEL H183 GEL:3H18 GEL HOP2 GEL:2HOP GEL H221 GEL:1H22 GEL H222 GEL:2H22 GEL H231 GEL:1H23 GEL H232 GEL:2H23 GEL H241 GEL:1H24 GEL H242 GEL:2H24 GEL H251 GEL:1H25 GEL H252 GEL:2H25 GEL H261 GEL:1H26 GEL H262 GEL:2H26 GEL H271 GEL:1H27 GEL H272 GEL:2H27 GEL H281 GEL:1H28 GEL H282 GEL:2H28 GEL H283 GEL:3H28 GEL H31 GEL:1H3 GEL H32 GEL:2H3 GEL HOP4 GEL:4HOP GEL H311 GEL:1H31 GEL H312 GEL:2H31 GEL H321 GEL:1H32 GEL H322 GEL:2H32 GEL HN31 GEL:1HN3 GEL HN32 GEL:2HN3 GEL HC8 GEM:8HC GEM HC61 GEM:1HC6 GEM HC62 GEM:2HC6 GEM HC51 GEM:1HC5 GEM HC52 GEM:2HC5 GEM HN3 GEM:3HN GEM HN41 GEM:1HN4 GEM HN42 GEM:2HN4 GEM HN21 GEM:1HN2 GEM HO41 GEM:1HO4 GEM H101 GEM:1H10 GEM H102 GEM:2H10 GEM HO31 GEM:1HO3 GEM H5'1 GEO:1H5' GEO H5'2 GEO:2H5' GEO HN41 GEO:1HN4 GEO HN42 GEO:2HN4 GEO H21 GEP:1H2 GEP H22 GEP:2H2 GEP H31 GEP:1H3 GEP H32 GEP:2H3 GEP H41 GEP:1H4 GEP H42 GEP:2H4 GEP H51 GEP:1H5 GEP H52 GEP:2H5 GEP H61 GEP:1H6 GEP H62 GEP:2H6 GEP H71 GEP:1H7 GEP H72 GEP:2H7 GEP H73 GEP:3H7 GEP H81 GEP:1H8 GEP H82 GEP:2H8 GEP H91 GEP:1H9 GEP H92 GEP:2H9 GEP H191 GEP:1H19 GEP H192 GEP:2H19 GEP H201 GEP:1H20 GEP H202 GEP:2H20 GEP H211 GEP:1H21 GEP H212 GEP:2H21 GEP H2C1 GEQ:1H2C GEQ H2C2 GEQ:2H2C GEQ H3C1 GEQ:1H3C GEQ H3C2 GEQ:2H3C GEQ H5C1 GEQ:1H5C GEQ H5C2 GEQ:2H5C GEQ H6C1 GEQ:1H6C GEQ H6C2 GEQ:2H6C GEQ H11 GER:1H1 GER H12 GER:2H1 GER H13 GER:3H1 GER H21 GER:1H2 GER H41 GER:1H4 GER H42 GER:2H4 GER H43 GER:3H4 GER H51 GER:1H5 GER H52 GER:2H5 GER H61 GER:1H6 GER H62 GER:2H6 GER H71 GER:1H7 GER H91 GER:1H9 GER H92 GER:2H9 GER H93 GER:3H9 GER H101 GER:1H10 GER H102 GER:2H10 GER H111 GER:1H11 GER H112 GER:2H11 GER H121 GER:1H12 GER H141 GER:1H14 GER H142 GER:2H14 GER H143 GER:3H14 GER H151 GER:1H15 GER H152 GER:2H15 GER H161 GER:1H16 GER H162 GER:2H16 GER H171 GER:1H17 GER H191 GER:1H19 GER H192 GER:2H19 GER H193 GER:3H19 GER H201 GER:1H20 GER H202 GER:2H20 GER H203 GER:3H20 GER H111 GET:1H11 GET H211 GET:1H21 GET H212 GET:2H21 GET H311 GET:1H31 GET H411 GET:1H41 GET H511 GET:1H51 GET H611 GET:1H61 GET H711 GET:1H71 GET H712 GET:2H71 GET H713 GET:3H71 GET H121 GET:1H12 GET H122 GET:2H12 GET H221 GET:1H22 GET H222 GET:2H22 GET H321 GET:1H32 GET H322 GET:2H32 GET H421 GET:1H42 GET H521 GET:1H52 GET H621 GET:1H62 GET H131 GET:1H13 GET H231 GET:1H23 GET H331 GET:1H33 GET H931 GET:1H93 GET H932 GET:2H93 GET H933 GET:3H93 GET H831 GET:1H83 GET H832 GET:2H83 GET H833 GET:3H83 GET H531 GET:1H53 GET H532 GET:2H53 GET HN21 GFF:1HN2 GFF HN22 GFF:2HN2 GFF H2'1 GFF:1H2' GFF H2'2 GFF:2H2' GFF H5'1 GFF:1H5' GFF H5'2 GFF:2H5' GFF H631 GFG:1H63 GFG H632 GFG:2H63 GFG H621 GFG:1H62 GFG H622 GFG:2H62 GFG H121 GFG:1H12 GFG H122 GFG:2H12 GFG H61 GFG:1H6 GFG H62 GFG:2H6 GFG H5'1 GFH:1H5' GFH H5'2 GFH:2H5' GFH HN21 GFH:1HN2 GFH HN22 GFH:2HN2 GFH H2'1 GFH:1H2' GFH H2'2 GFH:2H2' GFH H5'1 GFL:1H5* GFL H5'2 GFL:2H5* GFL H4' GFL: H4* GFL H3' GFL: H3* GFL HO3' GFL:HO3* GFL H2' GFL: H2* GFL H1' GFL: H1* GFL HN21 GFL:1HN2 GFL HN22 GFL:2HN2 GFL H61 GFP:1H6 GFP H62 GFP:2H6 GFP HOP2 GFP:2HOP GFP HOP3 GFP:3HOP GFP H41 GG1:1H4 GG1 H42 GG1:2H4 GG1 H251 GG1:1H25 GG1 H252 GG1:2H25 GG1 H253 GG1:3H25 GG1 H111 GG1:1H11 GG1 H112 GG1:2H11 GG1 H151 GG2:1H15 GG2 H152 GG2:2H15 GG2 H153 GG2:3H15 GG2 H201 GG2:1H20 GG2 H202 GG2:2H20 GG2 H211 GG2:1H21 GG2 H212 GG2:2H21 GG2 H241 GG2:1H24 GG2 H242 GG2:2H24 GG2 H251 GG2:1H25 GG2 H252 GG2:2H25 GG2 H231 GG2:1H23 GG2 H232 GG2:2H23 GG2 HN31 GG2:1HN3 GG2 HN32 GG2:2HN3 GG2 H171 GG2:1H17 GG2 H172 GG2:2H17 GG2 H21 GG3:1H2 GG3 H22 GG3:2H2 GG3 H61 GG3:1H6 GG3 H62 GG3:2H6 GG3 H71 GG3:1H7 GG3 H72 GG3:2H7 GG3 H211 GG3:1H21 GG3 H212 GG3:2H21 GG3 H213 GG3:3H21 GG3 H221 GG3:1H22 GG3 H222 GG3:2H22 GG3 H261 GG3:1H26 GG3 H262 GG3:2H26 GG3 H271 GG3:1H27 GG3 H272 GG3:2H27 GG3 H31A GG4:1H3 GG4 H32 GG4:2H3 GG4 H51 GG4:1H5 GG4 H52 GG4:2H5 GG4 H61 GG4:1H6 GG4 H62 GG4:2H6 GG4 H71 GG4:1H7 GG4 H72 GG4:2H7 GG4 H121 GG4:1H12 GG4 H122 GG4:2H12 GG4 H161 GG4:1H16 GG4 H162 GG4:2H16 GG4 H191 GG4:1H19 GG4 H192 GG4:2H19 GG4 H201 GG4:1H20 GG4 H202 GG4:2H20 GG4 H211 GG4:1H21 GG4 H212 GG4:2H21 GG4 H213 GG4:3H21 GG4 H221 GG4:1H22 GG4 H222 GG4:2H22 GG4 H223 GG4:3H22 GG4 H231 GG4:1H23 GG4 H232 GG4:2H23 GG4 H233 GG4:3H23 GG4 H241 GG4:1H24 GG4 H242 GG4:2H24 GG4 H251 GG4:1H25 GG4 H252 GG4:2H25 GG4 H271 GG4:1H27 GG4 H272 GG4:2H27 GG4 H281 GG4:1H28 GG4 H282 GG4:2H28 GG4 H331 GG4:1H33 GG4 H332 GG4:2H33 GG4 H333 GG4:3H33 GG4 H291 GG4:1H29 GG4 H292 GG4:2H29 GG4 H301 GG4:1H30 GG4 H302 GG4:2H30 GG4 H31 GG6:1H3 GG6 H32 GG6:2H3 GG6 H33 GG6:3H3 GG6 HB1 GG7:1HB GG7 HB2 GG7:2HB GG7 HB3 GG7:3HB GG7 HN1 GG7:1HN GG7 HN2 GG7:2HN GG7 H61 GG9:1H6 GG9 H62 GG9:2H6 GG9 HN81 GGA:1HN8 GGA HN82 GGA:2HN8 GGA H101 GGA:1H10 GGA H102 GGA:2H10 GGA H121 GGA:1H12 GGA H122 GGA:2H12 GGA H221 GGA:1H22 GGA H222 GGA:2H22 GGA H223 GGA:3H22 GGA H291 GGA:1H29 GGA H292 GGA:2H29 GGA H331 GGA:1H33 GGA H332 GGA:2H33 GGA H351 GGA:1H35 GGA H352 GGA:2H35 GGA H371 GGA:1H37 GGA H372 GGA:2H37 GGA H391 GGA:1H39 GGA H392 GGA:2H39 GGA H431 GGA:1H43 GGA H432 GGA:2H43 GGA H451 GGA:1H45 GGA H452 GGA:2H45 GGA H471 GGA:1H47 GGA H472 GGA:2H47 GGA H491 GGA:1H49 GGA H492 GGA:2H49 GGA H541 GGA:1H54 GGA H542 GGA:2H54 GGA HN1A GGB:1HN GGB HN2 GGB:2HN GGB HCB1 GGB:1HCB GGB HCB2 GGB:2HCB GGB HCG1 GGB:1HCG GGB HCG2 GGB:2HCG GGB HN21 GGB:1HN2 GGB HN22 GGB:2HN2 GGB HB11 GGC:1HB1 GGC HB12 GGC:2HB1 GGC HG11 GGC:1HG1 GGC HG12 GGC:2HG1 GGC HN11 GGC:1HN1 GGC HN12 GGC:2HN1 GGC HB21 GGC:1HB2 GGC HB22 GGC:2HB2 GGC H101 GGC:1H10 GGC H102 GGC:2H10 GGC HA31 GGC:1HA3 GGC HA32 GGC:2HA3 GGC HA11 GGD:1HA1 GGD HA21 GGD:1HA2 GGD HA31 GGD:1HA3 GGD HA41 GGD:1HA4 GGD HA51 GGD:1HA5 GGD HA61 GGD:1HA6 GGD HA62 GGD:2HA6 GGD HO21 GGD:1HO2 GGD HO41 GGD:1HO4 GGD HO61 GGD:1HO6 GGD HB11 GGD:1HB1 GGD HB21 GGD:1HB2 GGD HB31 GGD:1HB3 GGD HB41 GGD:1HB4 GGD HB51 GGD:1HB5 GGD HB61 GGD:1HB6 GGD HB62 GGD:2HB6 GGD HC31 GGD:1HC3 GGD HC32 GGD:2HC3 GGD HC41 GGD:1HC4 GGD HC61 GGD:1HC6 GGD HC62 GGD:2HC6 GGD H141 GGD:1H14 GGD H142 GGD:2H14 GGD H151 GGD:1H15 GGD H152 GGD:2H15 GGD H161 GGD:1H16 GGD H162 GGD:2H16 GGD H171 GGD:1H17 GGD H172 GGD:2H17 GGD H181 GGD:1H18 GGD H182 GGD:2H18 GGD H191 GGD:1H19 GGD H192 GGD:2H19 GGD H201 GGD:1H20 GGD H202 GGD:2H20 GGD H211 GGD:1H21 GGD H212 GGD:2H21 GGD H221 GGD:1H22 GGD H231 GGD:1H23 GGD H241 GGD:1H24 GGD H242 GGD:2H24 GGD H311 GGD:1H31 GGD H312 GGD:2H31 GGD H321 GGD:1H32 GGD H322 GGD:2H32 GGD H331 GGD:1H33 GGD H332 GGD:2H33 GGD H341 GGD:1H34 GGD H342 GGD:2H34 GGD H351 GGD:1H35 GGD H352 GGD:2H35 GGD H361 GGD:1H36 GGD H362 GGD:2H36 GGD H371 GGD:1H37 GGD H372 GGD:2H37 GGD H381 GGD:1H38 GGD H391 GGD:1H39 GGD H401 GGD:1H40 GGD H402 GGD:2H40 GGD H411 GGD:1H41 GGD H412 GGD:2H41 GGD H421 GGD:1H42 GGD H422 GGD:2H42 GGD H431 GGD:1H43 GGD H432 GGD:2H43 GGD H441 GGD:1H44 GGD H442 GGD:2H44 GGD H251 GGD:1H25 GGD H252 GGD:2H25 GGD H261 GGD:1H26 GGD H262 GGD:2H26 GGD H271 GGD:1H27 GGD H272 GGD:2H27 GGD H281 GGD:1H28 GGD H282 GGD:2H28 GGD H291 GGD:1H29 GGD H292 GGD:2H29 GGD H301 GGD:1H30 GGD H302 GGD:2H30 GGD H481 GGD:1H48 GGD H482 GGD:2H48 GGD H483 GGD:3H48 GGD H451 GGD:1H45 GGD H452 GGD:2H45 GGD H461 GGD:1H46 GGD H462 GGD:2H46 GGD H471 GGD:1H47 GGD H472 GGD:2H47 GGD H473 GGD:3H47 GGD H3B1 GGH:1H3B GGH H3B2 GGH:2H3B GGH H5'1 GGH:1H5' GGH H5'2 GGH:2H5' GGH HN21 GGH:1HN2 GGH HN22 GGH:2HN2 GGH H2'1 GGH:1H2' GGH H2'2 GGH:2H2' GGH HN1 GGL:1HN GGL HN2 GGL:2HN GGL HB1 GGL:1HB GGL HB2 GGL:2HB GGL HG1 GGL:1HG GGL HG2 GGL:2HG GGL H51 GGO:1H5 GGO H52 GGO:2H5 GGO H61 GGO:1H6 GGO H62 GGO:2H6 GGO HN1 GGO:1HN GGO HN2 GGO:2HN GGO H31 GGO:1H3 GGO H32 GGO:2H3 GGO H121 GGO:1H12 GGO H122 GGO:2H12 GGO H181 GGO:1H18 GGO H182 GGO:2H18 GGO H301 GGP:1H30 GGP H302 GGP:2H30 GGP H3' GGZ: H3* GGZ H4' GGZ: H4* GGZ H5'1 GGZ:1H5* GGZ H5'2 GGZ:2H5* GGZ H2' GGZ: H2* GGZ H1' GGZ: H1* GGZ HN61 GGZ:1HN6 GGZ HN62 GGZ:2HN6 GGZ HOG2 GH3:2HOG GH3 HOG3 GH3:3HOG GH3 HOB2 GH3:2HOB GH3 HOA2 GH3:2HOA GH3 H5' GH3:1H5* GH3 H5'' GH3:2H5* GH3 H4' GH3: H4* GH3 H3'2 GH3:2H3* GH3 H3' GH3: H3* GH3 H2' GH3: H2* GH3 HO2' GH3:*HO2 GH3 H1' GH3: H1* GH3 HN21 GH3:1HN2 GH3 HN22 GH3:2HN2 GH3 H31 GHA:1H3 GHA H32 GHA:2H3 GHA H61 GHA:1H6 GHA H62 GHA:2H6 GHA H71 GHA:1H7 GHA H72 GHA:2H7 GHA H101 GHA:1H10 GHA H102 GHA:2H10 GHA H GHG:1HN GHG H2 GHG:2HN GHG HB2 GHG:1HB GHG HB3 GHG:2HB GHG HE21 GHG:1HE2 GHG HE22 GHG:2HE2 GHG H71 GHH:1H7 GHH H72 GHH:2H7 GHH H GHP:1HN GHP H2 GHP:2HN GHP HC2 GHP: H2 GHP H6C1 GI1:1H6C GI1 H6C2 GI1:2H6C GI1 H9C1 GI1:1H9C GI1 H9C2 GI1:2H9C GI1 H9C3 GI1:3H9C GI1 H1C1 GI2:1H1C GI2 H1C2 GI2:2H1C GI2 H4C1 GI2:1H4C GI2 H4C2 GI2:2H4C GI2 H4C3 GI2:3H4C GI2 H6B1 GI2:1H6B GI2 H6B2 GI2:2H6B GI2 H6C1 GI3:1H6C GI3 H6C2 GI3:2H6C GI3 H1C1 GI4:1H1C GI4 H1C2 GI4:2H1C GI4 H6B1 GI4:1H6B GI4 H6B2 GI4:2H6B GI4 H361 GIG:1H36 GIG H362 GIG:2H36 GIG H363 GIG:3H36 GIG H1N1 GIL:1H1N GIL H1N2 GIL:2H1N GIL H171 GIL:1H17 GIL H172 GIL:2H17 GIL H173 GIL:3H17 GIL H181 GIL:1H18 GIL H182 GIL:2H18 GIL H183 GIL:3H18 GIL H191 GIL:1H19 GIL H192 GIL:2H19 GIL H193 GIL:3H19 GIL H201 GIL:1H20 GIL H202 GIL:2H20 GIL H203 GIL:3H20 GIL H9C1 GIL:1H9C GIL H9C2 GIL:2H9C GIL H281 GIL:1H28 GIL H282 GIL:2H28 GIL H283 GIL:3H28 GIL H301 GIL:1H30 GIL H302 GIL:2H30 GIL H303 GIL:3H30 GIL H6C1 GIM:1H6C GIM H6C2 GIM:2H6C GIM H241 GIN:1H24 GIN H242 GIN:2H24 GIN H301 GIN:1H30 GIN H302 GIN:2H30 GIN H311 GIN:1H31 GIN H312 GIN:2H31 GIN H313 GIN:3H31 GIN H321 GIN:1H32 GIN H322 GIN:2H32 GIN HBP1 GIO:1HBP GIO HBP2 GIO:2HBP GIO HGP1 GIO:1HGP GIO HGP2 GIO:2HGP GIO HDP1 GIO:1HDP GIO HDP2 GIO:2HDP GIO HAC1 GIO:1HAC GIO HAC2 GIO:2HAC GIO HOT1 GIP:1HOT GIP H11N GIP:1NH1 GIP H12N GIP:2NH1 GIP HA1 GIP:1HA GIP HB1 GIP:1HB GIP HB2 GIP:2HB GIP HB21 GIP:1HB2 GIP HB22 GIP:2HB2 GIP HG1 GIP:1HG GIP HG2 GIP:2HG GIP HN21 GIP:1HN2 GIP HA31 GIP:1HA3 GIP HA32 GIP:2HA3 GIP HO31 GIP:1HO3 GIP H101 GIQ:1H10 GIQ H102 GIQ:2H10 GIQ HN11 GIR:1HN1 GIR HN12 GIR:2HN1 GIR H21 GIR:1H2 GIR H22 GIR:2H2 GIR H111 GIR:1H11 GIR H112 GIR:2H11 GIR H111 GIS:1H11 GIS H112 GIS:2H11 GIS H121 GIS:1H12 GIS H122 GIS:2H12 GIS H123 GIS:3H12 GIS HN31 GIS:1HN3 GIS HN32 GIS:2HN3 GIS H2N1 GKD:1H2N GKD H2N2 GKD:2H2N GKD H1' GKD: H1* GKD H2' GKD: H2* GKD H3' GKD: H3* GKD H4' GKD: H4* GKD H5'1 GKD:1H5* GKD H5'2 GKD:2H5* GKD H6G1 GKD:1H6G GKD H6G2 GKD:2H6G GKD H2N1 GKE:1H2N GKE HA2 GKE:2HA GKE H2' GKE: H2* GKE H3' GKE: H3* GKE HA1 GKE:1HA GKE HB2 GKE:2HB GKE HB1 GKE:1HB GKE HC2 GKE:2HC GKE H21 GKR:1H2 GKR HO21 GKR:1HO2 GKR H31 GKR:1H3 GKR HO31 GKR:1HO3 GKR H42 GKR:2H4 GKR H41 GKR:1H4 GKR HO51 GKR:1HO5 GKR H51 GKR:1H5 GKR H61 GL1:1H6 GL1 H62 GL1:2H6 GL1 H61 GL2:1H6 GL2 H62 GL2:2H6 GL2 HN31 GL2:1HN3 GL2 HN32 GL2:2HN3 GL2 HA1 GL3:1HA GL3 HA2 GL3:2HA GL3 H GL3:1HN GL3 H2 GL3:2HN GL3 H61 GL4:1H6 GL4 H62 GL4:2H6 GL4 H61 GL5:1H6 GL5 H62 GL5:2H6 GL5 H151 GL6:1H15 GL6 H152 GL6:2H15 GL6 H153 GL6:3H15 GL6 H161 GL6:1H16 GL6 H162 GL6:2H16 GL6 H163 GL6:3H16 GL6 H61 GL6:1H6 GL6 H62 GL6:2H6 GL6 H61 GL7:1H6 GL7 H62 GL7:2H6 GL7 H91 GL7:1H9 GL7 H92 GL7:2H9 GL7 H93 GL7:3H9 GL7 H4C1 GL8:1H4C GL8 H4C2 GL8:2H4C GL8 H111 GL8:1H11 GL8 H112 GL8:2H11 GL8 H121 GL8:1H12 GL8 H122 GL8:2H12 GL8 H161 GL8:1H16 GL8 H162 GL8:2H16 GL8 H163 GL8:3H16 GL8 H171 GL8:1H17 GL8 H172 GL8:2H17 GL8 H181 GL8:1H18 GL8 H182 GL8:2H18 GL8 H191 GL8:1H19 GL8 H192 GL8:2H19 GL8 H201 GL8:1H20 GL8 H202 GL8:2H20 GL8 H211 GL8:1H21 GL8 H212 GL8:2H21 GL8 H221 GL8:1H22 GL8 H222 GL8:2H22 GL8 H231 GL8:1H23 GL8 H232 GL8:2H23 GL8 H241 GL8:1H24 GL8 H242 GL8:2H24 GL8 H61 GL9:1H6 GL9 H62 GL9:2H6 GL9 H101 GL9:1H10 GL9 H102 GL9:2H10 GL9 H103 GL9:3H10 GL9 H61 GLA:1H6 GLA H62 GLA:2H6 GLA H61 GLB:1H6 GLB H62 GLB:2H6 GLB H61 GLC:1H6 GLC H62 GLC:2H6 GLC H41 GLD:1H4 GLD H42 GLD:2H4 GLD H61 GLD:1H6 GLD H62 GLD:2H6 GLD H63 GLD:3H6 GLD H11 GLE:1H1 GLE H12 GLE:2H1 GLE H31 GLE:1H3 GLE H32 GLE:2H3 GLE H311 GLE:1H31 GLE H312 GLE:2H31 GLE H2P1 GLE:1H2P GLE H2P2 GLE:2H2P GLE H2P3 GLE:3H2P GLE H111 GLE:1H11 GLE H112 GLE:2H11 GLE H121 GLE:1H12 GLE H122 GLE:2H12 GLE H131 GLE:1H13 GLE H132 GLE:2H13 GLE H141 GLE:1H14 GLE H142 GLE:2H14 GLE H151 GLE:1H15 GLE H152 GLE:2H15 GLE H161 GLE:1H16 GLE H162 GLE:2H16 GLE H171 GLE:1H17 GLE H172 GLE:2H17 GLE H181 GLE:1H18 GLE H182 GLE:2H18 GLE H191 GLE:1H19 GLE H192 GLE:2H19 GLE H201 GLE:1H20 GLE H202 GLE:2H20 GLE H203 GLE:3H20 GLE H61 GLF:1H6 GLF H62 GLF:2H6 GLF H61 GLG:1H6 GLG H62 GLG:2H6 GLG HN1 GLG:1HN GLG HN2 GLG:2HN GLG H GLH:1HN GLH H2 GLH:2HN GLH HB2 GLH:1HCB GLH HB3 GLH:2HCB GLH HG2 GLH:1HCG GLH HG3 GLH:2HCG GLH HC31 GLH:1HC3 GLH HC32 GLH:2HC3 GLH HC71 GLH:1HC7 GLH HC72 GLH:2HC7 GLH HC41 GLH:1HC4 GLH HC42 GLH:2HC4 GLH HC51 GLH:1HC5 GLH HC52 GLH:2HC5 GLH HC61 GLH:1HC6 GLH HC62 GLH:2HC6 GLH HC91 GLH:1HC9 GLH HC92 GLH:2HC9 GLH H131 GLH:1H13 GLH H132 GLH:2H13 GLH H101 GLH:1H10 GLH H102 GLH:2H10 GLH H111 GLH:1H11 GLH H112 GLH:2H11 GLH H121 GLH:1H12 GLH H122 GLH:2H12 GLH HN1 GLI:1HN GLI HN2A GLI:2HN GLI HB11 GLI:1HB1 GLI HB12 GLI:2HB1 GLI HB13 GLI:3HB1 GLI HB21 GLI:1HB2 GLI HB22 GLI:2HB2 GLI HB23 GLI:3HB2 GLI HB31 GLI:1HB3 GLI HB32 GLI:2HB3 GLI HD31 GLI:1HD3 GLI HD32 GLI:2HD3 GLI HE31 GLI:1HE3 GLI HE32 GLI:2HE3 GLI HX41 GLI:1HX4 GLI HX42 GLI:2HX4 GLI HA41 GLI:1HA4 GLI HA42 GLI:2HA4 GLI H511 GLI:1H51 GLI H512 GLI:2H51 GLI H513 GLI:3H51 GLI H521 GLI:1H52 GLI H522 GLI:2H52 GLI H523 GLI:3H52 GLI H611 GLI:1H61 GLI H612 GLI:2H61 GLI H613 GLI:3H61 GLI H621 GLI:1H62 GLI H622 GLI:2H62 GLI H623 GLI:3H62 GLI HM61 GLI:1HM6 GLI HM62 GLI:2HM6 GLI HM63 GLI:3HM6 GLI HN1' GLL:'HN1 GLL HN2' GLL:'HN2 GLL H GLM:1HN GLM H2 GLM:2HN GLM HA1 GLM:1HA GLM HA2 GLM:2HA GLM HM1 GLM:1HM GLM HM2 GLM:2HM GLM HM3 GLM:3HM GLM H2 GLN: HN2 GLN HB2 GLN:1HB GLN HB3 GLN:2HB GLN HG2 GLN:1HG GLN HG3 GLN:2HG GLN HE21 GLN:1HE2 GLN HE22 GLN:2HE2 GLN H61 GLO:1H6 GLO H62 GLO:2H6 GLO H61 GLP:1H6 GLP H62 GLP:2H6 GLP HN21 GLP:1HN2 GLP HN22 GLP:2HN2 GLP HOP2 GLP:2HOP GLP HOP3 GLP:3HOP GLP H2 GLQ: HN2 GLQ HB1 GLQ:1HB GLQ HB2 GLQ:2HB GLQ HG1 GLQ:1HG GLQ HG2 GLQ:2HG GLQ H21 GLR:1H2 GLR HO21 GLR:1HO2 GLR H31 GLR:1H3 GLR HO31 GLR:1HO3 GLR H41 GLR:1H4 GLR H42 GLR:2H4 GLR H61 GLS:1H6 GLS H62 GLS:2H6 GLS H61 GLT:1H6 GLT H62 GLT:2H6 GLT H2 GLU: HN2 GLU HB2 GLU:1HB GLU HB3 GLU:2HB GLU HG2 GLU:1HG GLU HG3 GLU:2HG GLU H61 GLW:1H6 GLW H62 GLW:2H6 GLW H63 GLW:3H6 GLW HB1 GLX:1HB GLX HB2 GLX:2HB GLX HG1 GLX:1HG GLX HG2 GLX:2HG GLX H2 GLY: HN2 GLY HA2 GLY:1HA GLY HA3 GLY:2HA GLY H2 GLZ: HN2 GLZ HA1 GLZ:1HA GLZ HA2 GLZ:2HA GLZ HN11 GM1:1HN1 GM1 HN12 GM1:2HN1 GM1 H21 GM1:1H2 GM1 H22 GM1:2H2 GM1 HN21 GM1:1HN2 GM1 HN22 GM1:2HN2 GM1 HB11 GM2:1HB1 GM2 HB12 GM2:2HB1 GM2 H6C1 GM2:1H6C GM2 H6C2 GM2:2H6C GM2 HL61 GM2:1HL6 GM2 HL62 GM2:2HL6 GM2 HL51 GM2:1HL5 GM2 HL52 GM2:2HL5 GM2 HL71 GM2:1HL7 GM2 HL72 GM2:2HL7 GM2 HL41 GM2:1HL4 GM2 HL42 GM2:2HL4 GM2 HL31 GM2:1HL3 GM2 HL32 GM2:2HL3 GM2 HL21 GM2:1HL2 GM2 HL22 GM2:2HL2 GM2 HR21 GM2:1HR2 GM2 HR22 GM2:2HR2 GM2 HR31 GM2:1HR3 GM2 HR32 GM2:2HR3 GM2 HR41 GM2:1HR4 GM2 HR42 GM2:2HR4 GM2 HR51 GM2:1HR5 GM2 HR52 GM2:2HR5 GM2 HR61 GM2:1HR6 GM2 HR62 GM2:2HR6 GM2 HR71 GM2:1HR7 GM2 HR72 GM2:2HR7 GM2 HR81 GM2:1HR8 GM2 HR82 GM2:2HR8 GM2 HR91 GM2:1HR9 GM2 HR92 GM2:2HR9 GM2 HR11 GM2:1HR1 GM2 HL81 GM2:1HL8 GM2 HL82 GM2:2HL8 GM2 HL91 GM2:1HL9 GM2 HL92 GM2:2HL9 GM2 HL11 GM2:1HL1 GM2 HL12 GM2:2HL1 GM2 HBC1 GM3:1HBC GM3 HBC2 GM3:2HBC GM3 HBD1 GM3:1HBD GM3 HBD2 GM3:2HBD GM3 HBE1 GM3:1HBE GM3 HBE2 GM3:2HBE GM3 HBF1 GM3:1HBF GM3 HBF2 GM3:2HBF GM3 HBG1 GM3:1HBG GM3 HBG2 GM3:2HBG GM3 HBH1 GM3:1HBH GM3 HBH2 GM3:2HBH GM3 HBI1 GM3:1HBI GM3 HBI2 GM3:2HBI GM3 HBJ1 GM3:1HBJ GM3 HBJ2 GM3:2HBJ GM3 HBK1 GM3:1HBK GM3 HBK2 GM3:2HBK GM3 HBL1 GM3:1HBL GM3 HBL2 GM3:2HBL GM3 HBM1 GM3:1HBM GM3 HBM2 GM3:2HBM GM3 HBN1 GM3:1HBN GM3 HBN2 GM3:2HBN GM3 HBO1 GM3:1HBO GM3 HBO2 GM3:2HBO GM3 HBP1 GM3:1HBP GM3 HBP2 GM3:2HBP GM3 HBQ1 GM3:1HBQ GM3 HBQ2 GM3:2HBQ GM3 HB11 GM3:1HB1 GM3 HB12 GM3:2HB1 GM3 HB21 GM3:1HB2 GM3 HB22 GM3:2HB2 GM3 HB23 GM3:3HB2 GM3 HAX1 GM3:1HAX GM3 HAX2 GM3:2HAX GM3 HAV1 GM3:1HAV GM3 HAV2 GM3:2HAV GM3 HBS1 GM3:1HBS GM3 HBS2 GM3:2HBS GM3 HBU1 GM3:1HBU GM3 HBU2 GM3:2HBU GM3 HBV1 GM3:1HBV GM3 HBV2 GM3:2HBV GM3 HBW1 GM3:1HBW GM3 HBW2 GM3:2HBW GM3 HBX1 GM3:1HBX GM3 HBX2 GM3:2HBX GM3 HBY1 GM3:1HBY GM3 HBY2 GM3:2HBY GM3 HBZ1 GM3:1HBZ GM3 HBZ2 GM3:2HBZ GM3 HCA1 GM3:1HCA GM3 HCA2 GM3:2HCA GM3 HCB1 GM3:1HCB GM3 HCB2 GM3:2HCB GM3 HCC1 GM3:1HCC GM3 HCC2 GM3:2HCC GM3 HCD1 GM3:1HCD GM3 HCD2 GM3:2HCD GM3 HCE1 GM3:1HCE GM3 HCE2 GM3:2HCE GM3 HCF1 GM3:1HCF GM3 HCF2 GM3:2HCF GM3 HCG1 GM3:1HCG GM3 HCG2 GM3:2HCG GM3 HCH1 GM3:1HCH GM3 HCH2 GM3:2HCH GM3 HCI1 GM3:1HCI GM3 HCI2 GM3:2HCI GM3 HCJ1 GM3:1HCJ GM3 HCJ2 GM3:2HCJ GM3 HCK1 GM3:1HCK GM3 HCK2 GM3:2HCK GM3 HCL1 GM3:1HCL GM3 HCL2 GM3:2HCL GM3 HCM1 GM3:1HCM GM3 HCM2 GM3:2HCM GM3 HCN1 GM3:1HCN GM3 HCN2 GM3:2HCN GM3 HCO1 GM3:1HCO GM3 HCO2 GM3:2HCO GM3 HCP1 GM3:1HCP GM3 HCP2 GM3:2HCP GM3 HCP3 GM3:3HCP GM3 HAC1 GM6:1HAC GM6 HAC2 GM6:2HAC GM6 HBA1 GM6:1HBA GM6 HBA2 GM6:2HBA GM6 HBA3 GM6:3HBA GM6 HAO1 GM6:1HAO GM6 HAO2 GM6:2HAO GM6 HAA1 GM6:1HAA GM6 HAA2 GM6:2HAA GM6 HAJ1 GM6:1HAJ GM6 HAJ2 GM6:2HAJ GM6 HAJ3 GM6:3HAJ GM6 HAI1 GM6:1HAI GM6 HAI2 GM6:2HAI GM6 HAI3 GM6:3HAI GM6 H2 GMA: HN2 GMA HB2 GMA:1HB GMA HB3 GMA:2HB GMA HG2 GMA:1HG GMA HG3 GMA:2HG GMA HE2 GMA: HO2 GMA HN2A GMA:2HN GMA HN1 GMA:1HN GMA H101 GMC:1H10 GMC H102 GMC:2H10 GMC H103 GMC:3H10 GMC HC1 GMC:1HC GMC HC2 GMC:2HC GMC HC3 GMC:3HC GMC H1' GMC: H1* GMC H4' GMC: H4* GMC H5'1 GMC:1H5* GMC H5'2 GMC:2H5* GMC H5' GMC: H5* GMC H2' GMC: H2* GMC H3' GMC: H3* GMC H3'1 GMC:1H3* GMC H3'2 GMC:2H3* GMC H71 GMH:1H7 GMH H72 GMH:2H7 GMH H11 GML:1H1 GML H12 GML:2H1 GML H31 GML:1H3 GML H32 GML:2H3 GML H41 GML:1H4 GML H42 GML:2H4 GML H43 GML:3H4 GML HAH1 GMM:1HAH GMM HAH2 GMM:2HAH GMM HAH3 GMM:3HAH GMM HAI1 GMM:1HAI GMM HAI2 GMM:2HAI GMM HAJ1 GMM:1HAJ GMM HAJ2 GMM:2HAJ GMM HAK1 GMM:1HAK GMM HAK2 GMM:2HAK GMM HAL1 GMM:1HAL GMM HAL2 GMM:2HAL GMM HAM1 GMM:1HAM GMM HAM2 GMM:2HAM GMM HAN1 GMM:1HAN GMM HAN2 GMM:2HAN GMM HAO1 GMM:1HAO GMM HAO2 GMM:2HAO GMM HAP1 GMM:1HAP GMM HAP2 GMM:2HAP GMM HAQ1 GMM:1HAQ GMM HAQ2 GMM:2HAQ GMM HAR1 GMM:1HAR GMM HAR2 GMM:2HAR GMM HAS1 GMM:1HAS GMM HAS2 GMM:2HAS GMM HAT1 GMM:1HAT GMM HAT2 GMM:2HAT GMM HAU1 GMM:1HAU GMM HAU2 GMM:2HAU GMM HAV1 GMM:1HAV GMM HAV2 GMM:2HAV GMM HAW1 GMM:1HAW GMM HAW2 GMM:2HAW GMM HAX1 GMM:1HAX GMM HAX2 GMM:2HAX GMM HAY1 GMM:1HAY GMM HAY2 GMM:2HAY GMM HBB1 GMM:1HBB GMM HBB2 GMM:2HBB GMM HBC1 GMM:1HBC GMM HBC2 GMM:2HBC GMM HBD1 GMM:1HBD GMM HBD2 GMM:2HBD GMM HBE1 GMM:1HBE GMM HBE2 GMM:2HBE GMM HBF1 GMM:1HBF GMM HBF2 GMM:2HBF GMM HBG1 GMM:1HBG GMM HBG2 GMM:2HBG GMM HBH1 GMM:1HBH GMM HBH2 GMM:2HBH GMM HBI1 GMM:1HBI GMM HBI2 GMM:2HBI GMM HBL1 GMM:1HBL GMM HBL2 GMM:2HBL GMM HBM1 GMM:1HBM GMM HBM2 GMM:2HBM GMM HBN1 GMM:1HBN GMM HBN2 GMM:2HBN GMM HBO1 GMM:1HBO GMM HBO2 GMM:2HBO GMM HBP1 GMM:1HBP GMM HBP2 GMM:2HBP GMM HBQ1 GMM:1HBQ GMM HBQ2 GMM:2HBQ GMM HBR1 GMM:1HBR GMM HBR2 GMM:2HBR GMM HBS1 GMM:1HBS GMM HBS2 GMM:2HBS GMM HBT1 GMM:1HBT GMM HBT2 GMM:2HBT GMM HBU1 GMM:1HBU GMM HBU2 GMM:2HBU GMM HBV1 GMM:1HBV GMM HBV2 GMM:2HBV GMM HBW1 GMM:1HBW GMM HBW2 GMM:2HBW GMM HBX1 GMM:1HBX GMM HBX2 GMM:2HBX GMM HBY1 GMM:1HBY GMM HBY2 GMM:2HBY GMM HBZ1 GMM:1HBZ GMM HBZ2 GMM:2HBZ GMM HCA1 GMM:1HCA GMM HCA2 GMM:2HCA GMM HCB1 GMM:1HCB GMM HCB2 GMM:2HCB GMM HCC1 GMM:1HCC GMM HCC2 GMM:2HCC GMM HCD1 GMM:1HCD GMM HCD2 GMM:2HCD GMM HCH1 GMM:1HCH GMM HCH2 GMM:2HCH GMM HCI1 GMM:1HCI GMM HCI2 GMM:2HCI GMM HCJ1 GMM:1HCJ GMM HCJ2 GMM:2HCJ GMM HCK1 GMM:1HCK GMM HCK2 GMM:2HCK GMM HCL1 GMM:1HCL GMM HCL2 GMM:2HCL GMM HCM1 GMM:1HCM GMM HCM2 GMM:2HCM GMM HCN1 GMM:1HCN GMM HCN2 GMM:2HCN GMM HCO1 GMM:1HCO GMM HCO2 GMM:2HCO GMM HCO3 GMM:3HCO GMM HCT1 GMM:1HCT GMM HCT2 GMM:2HCT GMM H11 GMN:1H1 GMN H12 GMN:2H1 GMN H21 GMN:1H2 GMN H22 GMN:2H2 GMN H41 GMN:1H4 GMN H42 GMN:2H4 GMN H51 GMN:1H5 GMN H52 GMN:2H5 GMN H53 GMN:3H5 GMN H61 GMN:1H6 GMN H62 GMN:2H6 GMN H71 GMN:1H7 GMN H72 GMN:2H7 GMN H73 GMN:3H7 GMN H81 GMN:1H8 GMN H82 GMN:2H8 GMN H91 GMN:1H9 GMN H92 GMN:2H9 GMN H93 GMN:3H9 GMN H101 GMN:1H10 GMN H102 GMN:2H10 GMN H111 GMN:1H11 GMN H112 GMN:2H11 GMN H131 GMN:1H13 GMN H132 GMN:2H13 GMN H141 GMN:1H14 GMN H142 GMN:2H14 GMN H143 GMN:3H14 GMN H151 GMN:1H15 GMN H152 GMN:2H15 GMN H161 GMN:1H16 GMN H162 GMN:2H16 GMN H163 GMN:3H16 GMN H171 GMN:1H17 GMN H172 GMN:2H17 GMN H181 GMN:1H18 GMN H182 GMN:2H18 GMN H183 GMN:3H18 GMN H251 GMN:1H25 GMN H252 GMN:2H25 GMN H261 GMN:1H26 GMN H262 GMN:2H26 GMN H281 GMN:1H28 GMN H282 GMN:2H28 GMN H291 GMN:1H29 GMN H292 GMN:2H29 GMN H293 GMN:3H29 GMN H301 GMN:1H30 GMN H302 GMN:2H30 GMN H311 GMN:1H31 GMN H312 GMN:2H31 GMN H313 GMN:3H31 GMN H321 GMN:1H32 GMN H322 GMN:2H32 GMN H331 GMN:1H33 GMN H332 GMN:2H33 GMN H333 GMN:3H33 GMN HO5' GMP:*HO5 GMP H5'1 GMP:1H5* GMP H5'2 GMP:2H5* GMP H4' GMP: H4* GMP H3' GMP: H3* GMP HO3' GMP:*HO3 GMP H2' GMP: H2* GMP HO2' GMP:*HO2 GMP H1' GMP: H1* GMP HN21 GMP:1HN2 GMP HN22 GMP:2HN2 GMP H21 GMS:1H2 GMS H22 GMS:2H2 GMS H2' GMS:1H2* GMS H2'' GMS:2H2* GMS H5' GMS:1H5* GMS H5'' GMS:2H5* GMS H4' GMS: H4* GMS H1' GMS: H1* GMS H3' GMS: H3* GMS HO3' GMS:H3T GMS HOP2 GMS:2HOP GMS H5' GMU:1H5* GMU H5'' GMU:2H5* GMU H4' GMU: H4* GMU H3' GMU: H3* GMU H2' GMU: H2* GMU H1' GMU: H1* GMU H71 GMU:1H5M GMU H72 GMU:2H5M GMU H73 GMU:3H5M GMU HA'1 GMU:1HA* GMU HA'2 GMU:2HA* GMU HB'1 GMU:1HB* GMU HB'2 GMU:2HB* GMU HC' GMU: HC* GMU HD' GMU: HD* GMU HE'1 GMU:1HE* GMU HE'2 GMU:2HE* GMU HF'1 GMU:1HF* GMU HF'2 GMU:2HF* GMU H71 GMY:1H7 GMY H72 GMY:2H7 GMY H91 GMY:1H9 GMY H92 GMY:2H9 GMY H261 GMY:1H26 GMY H262 GMY:2H26 GMY H263 GMY:3H26 GMY H271 GMY:1H27 GMY H272 GMY:2H27 GMY H273 GMY:3H27 GMY H291 GMY:1H29 GMY H292 GMY:2H29 GMY H293 GMY:3H29 GMY H311 GMY:1H31 GMY H312 GMY:2H31 GMY H313 GMY:3H31 GMY H321 GMY:1H32 GMY H322 GMY:2H32 GMY H323 GMY:3H32 GMY HN61 GMY:1HN6 GMY HN62 GMY:2HN6 GMY H381 GMY:1H38 GMY H382 GMY:2H38 GMY H383 GMY:3H38 GMY H391 GMY:1H39 GMY H392 GMY:2H39 GMY H393 GMY:3H39 GMY H6'1 GN1:1H6' GN1 H6'2 GN1:2H6' GN1 H8'1 GN1:1H8' GN1 H8'2 GN1:2H8' GN1 H8'3 GN1:3H8' GN1 HOP2 GN7:2HOP GN7 HOP3 GN7:3HOP GN7 H5' GN7:1H5* GN7 H5'' GN7:2H5* GN7 H4' GN7: H4* GN7 H3' GN7: H3* GN7 HO3' GN7:*HO3 GN7 H2' GN7:1H2* GN7 H2'' GN7:2H2* GN7 H1' GN7: H1* GN7 HN21 GN7:1HN2 GN7 HN22 GN7:2HN2 GN7 HAO1 GN8:1HAO GN8 HAO2 GN8:2HAO GN8 H31 GNA:1H3 GNA H32 GNA:2H3 GNA H91 GNA:1H9 GNA H92 GNA:2H9 GNA H111 GNA:1H11 GNA H112 GNA:2H11 GNA H113 GNA:3H11 GNA HN71 GNA:1HN7 GNA HN72 GNA:2HN7 GNA HOB1 GNA:1HOB GNA HOT1 GNB:1HOT GNB H11N GNB:1NH1 GNB H12N GNB:2NH1 GNB HA1 GNB:1HA GNB HB1 GNB:1HB GNB HB2 GNB:2HB GNB HB21 GNB:1HB2 GNB HB22 GNB:2HB2 GNB HG1 GNB:1HG GNB HG2 GNB:2HG GNB HN21 GNB:1HN2 GNB HA31 GNB:1HA3 GNB HA32 GNB:2HA3 GNB HO31 GNB:1HO3 GNB HC1 GNB:1HC GNB HC2 GNB:2HC GNB HB1 GND:1HB GND HB2 GND:2HB GND HG1 GND:1HG GND HG2 GND:2HG GND HD1 GND:1HD GND HD2 GND:2HD GND HH11 GND:1HH1 GND HH21 GND:1HH2 GND HH22 GND:2HH2 GND HN1 GND:1HN GND HN2 GND:2HN GND HN3 GND:3HN GND H5' GNE:1H5* GNE H5'' GNE:2H5* GNE H4' GNE: H4* GNE H3' GNE: H3* GNE H2' GNE:1H2* GNE H2'' GNE:2H2* GNE H1' GNE: H1* GNE H131 GNF:1H13 GNF H132 GNF:2H13 GNF H191 GNF:1H19 GNF H192 GNF:2H19 GNF H181 GNF:1H18 GNF H182 GNF:2H18 GNF H171 GNF:1H17 GNF H172 GNF:2H17 GNF H161 GNF:1H16 GNF H162 GNF:2H16 GNF H151 GNF:1H15 GNF H152 GNF:2H15 GNF H81 GNF:1H8 GNF H82 GNF:2H8 GNF H71 GNF:1H7 GNF H72 GNF:2H7 GNF H1 GNF:1H GNF H2 GNF:2H GNF H3A GNF:3H GNF H5' GNG: H5* GNG H5'1 GNG:1H5* GNG H5'2 GNG:2H5* GNG H4' GNG: H4* GNG H1' GNG: H1* GNG HN21 GNG:1HN2 GNG HN22 GNG:2HN2 GNG H2'1 GNG:1H2* GNG H2'2 GNG:2H2* GNG H3' GNG: H3* GNG HN31 GNH:1HN3 GNH HN32 GNH:2HN3 GNH HOB2 GNH:2HOB GNH HOA2 GNH:2HOA GNH H5'2 GNH:2H5* GNH H5'1 GNH:1H5* GNH H4' GNH: H4* GNH H3' GNH: H3* GNH HO3' GNH:*HO3 GNH H2' GNH: H2* GNH HO2' GNH:*HO2 GNH H1' GNH: H1* GNH HN21 GNH:1HN2 GNH HN22 GNH:2HN2 GNH H8C1 GNI:1H8C GNI H8C2 GNI:2H8C GNI H7C1 GNI:1H7C GNI H7C2 GNI:2H7C GNI H2C1 GNI:1H2C GNI H2C2 GNI:2H2C GNI H31 GNN:1H3 GNN H32 GNN:2H3 GNN H61 GNN:1H6 GNN H62 GNN:2H6 GNN HN21 GNN:1HN2 GNN HN22 GNN:2HN2 GNN HOG2 GNP:2HOG GNP HOG3 GNP:3HOG GNP HNB3 GNP:3HNB GNP HOB2 GNP:2HOB GNP HOA2 GNP:2HOA GNP H5'2 GNP:2H5* GNP H5'1 GNP:1H5* GNP H4' GNP: H4* GNP H3' GNP: H3* GNP HO3' GNP:*HO3 GNP H2' GNP: H2* GNP HO2' GNP:*HO2 GNP H1' GNP: H1* GNP HN21 GNP:1HN2 GNP HN22 GNP:2HN2 GNP H171 GNQ:1H17 GNQ H172 GNQ:2H17 GNQ H161 GNQ:1H16 GNQ H162 GNQ:2H16 GNQ H151 GNQ:1H15 GNQ H152 GNQ:2H15 GNQ H141 GNQ:1H14 GNQ H142 GNQ:2H14 GNQ H131 GNQ:1H13 GNQ H132 GNQ:2H13 GNQ H121 GNQ:1H12 GNQ H122 GNQ:2H12 GNQ H101 GNQ:1H10 GNQ H102 GNQ:2H10 GNQ H103 GNQ:3H10 GNQ H81 GNQ:1H8 GNQ H82 GNQ:2H8 GNQ HAK1 GNR:1HAK GNR HAK2 GNR:2HAK GNR H61 GNS:1H6 GNS H62 GNS:2H6 GNS H41A GNT:1H4 GNT H42 GNT:2H4 GNT H91 GNT:1H9 GNT H92 GNT:2H9 GNT H111 GNT:1H11 GNT H112 GNT:2H11 GNT H121 GNT:1H12 GNT H122 GNT:2H12 GNT H161 GNT:1H16 GNT H162 GNT:2H16 GNT H163 GNT:3H16 GNT H191 GNT:1H19 GNT H192 GNT:2H19 GNT H193 GNT:3H19 GNT H22 GOA:2H2 GOA H21 GOA:1H2 GOA H11 GOL:1H1 GOL H12 GOL:2H1 GOL H31 GOL:1H3 GOL H32 GOL:2H3 GOL HC1 GOM:1HC GOM HC2 GOM:2HC GOM HB1 GOM:1HB GOM HB2 GOM:2HB GOM HG1 GOM:1HG GOM HG2 GOM:2HG GOM H5' GOM:1H5* GOM H5'' GOM:2H5* GOM H4' GOM: H4* GOM H1' GOM: H1* GOM HN61 GOM:1HN6 GOM HN62 GOM:2HN6 GOM H2' GOM: H2* GOM HO2' GOM:*HO2 GOM H3' GOM: H3* GOM HO3' GOM:*HO3 GOM HC61 GOX:1HC6 GOX HC62 GOX:2HC6 GOX H61 GP1:1H6 GP1 H62 GP1:2H6 GP1 HN21 GP1:1HN2 GP1 HN22 GP1:2HN2 GP1 HOP1 GP1:1HOP GP1 HOP2 GP1:2HOP GP1 HN21 GP2:1HN2 GP2 HN22 GP2:2HN2 GP2 H1' GP2: H1* GP2 H2' GP2: H2* GP2 H3' GP2: H3* GP2 H4' GP2: H4* GP2 H5'1 GP2:1H5* GP2 H5'2 GP2:2H5* GP2 H3A1 GP2:1H3A GP2 H3A2 GP2:2H3A GP2 H8A GP3: AH8 GP3 H1A GP3: AH1 GP3 H21A GP3:AH21 GP3 H22A GP3:AH22 GP3 H51A GP3:AH51 GP3 H52A GP3:AH52 GP3 H4D GP3:AH4* GP3 H3D GP3:AH3* GP3 HO3A GP3:AHO3 GP3 H2D GP3:AH2* GP3 HO2A GP3:AHO2 GP3 H1D GP3:AH1* GP3 HOA2 GP3:2HOA GP3 HOB2 GP3:2HOB GP3 HOG2 GP3:2HOG GP3 H51B GP3:BH51 GP3 H52B GP3:BH52 GP3 H4E GP3:BH4* GP3 H3E GP3:BH3* GP3 HO3B GP3:BHO3 GP3 H2E GP3:BH2* GP3 HO2B GP3:BHO2 GP3 H1E GP3:BH1* GP3 H8B GP3: BH8 GP3 H1B GP3: BH1 GP3 H21B GP3:BH21 GP3 H22B GP3:BH22 GP3 H61 GP4:1H6 GP4 H62 GP4:2H6 GP4 HN21 GP4:1HN2 GP4 HN22 GP4:2HN2 GP4 HOP1 GP4:1HOP GP4 HOP2 GP4:2HOP GP4 HN21 GP5:1HN2 GP5 HN22 GP5:2HN2 GP5 H1' GP5: H1* GP5 H2' GP5: H2* GP5 H3' GP5: H3* GP5 H4' GP5: H4* GP5 H5'1 GP5:1H5* GP5 H5'2 GP5:2H5* GP5 HAV1 GP5:1HAV GP5 HAV2 GP5:2HAV GP5 HAB1 GP5:1HAB GP5 HAB2 GP5:2HAB GP5 HN21 GP6:1HN2 GP6 HN22 GP6:2HN2 GP6 HN11 GP8:1HN1 GP8 HN12 GP8:2HN1 GP8 HCD1 GPA:1HCD GPA HCD2 GPA:2HCD GPA HNE1 GPA:1HNE GPA HN11 GPA:1HN1 GPA HN12 GPA:2HN1 GPA HN21 GPA:1HN2 GPA HA22 GPB:2HA2 GPB HA21 GPB:1HA2 GPB H53 GPB:3H5 GPB H52 GPB:2H5 GPB H51 GPB:1H5 GPB H91 GPB:1H9 GPB H92 GPB:2H9 GPB H101 GPB:1H10 GPB H102 GPB:2H10 GPB HA1 GPB:1HA GPB HB2 GPB:2HB GPB HB1 GPB:1HB GPB HG2 GPB:2HG GPB HG1 GPB:1HG GPB HE2O GPB:OHE2 GPB H1O GPB: OH1 GPB H1G GPC: GH1 GPC H21G GPC:GH21 GPC H22G GPC:GH22 GPC H8G GPC: GH8 GPC H1D GPC:GH1* GPC H2D GPC:GH2* GPC H3D GPC:GH3* GPC H4D GPC:GH4* GPC H51G GPC:GH51 GPC H52G GPC:GH52 GPC HO5G GPC:GHO5 GPC HOC2 GPC:2HOC GPC H51C GPC:CH51 GPC H52C GPC:CH52 GPC H4B GPC:CH4* GPC H3B GPC:CH3* GPC HO3C GPC:CHO3 GPC H2B GPC:CH2* GPC HO2C GPC:CHO2 GPC H1B GPC:CH1* GPC H41C GPC:CH41 GPC H42C GPC:CH42 GPC H5C GPC: CH5 GPC H6C GPC: CH6 GPC H11 GPE:1H1 GPE H12 GPE:2H1 GPE H31 GPE:1H3 GPE H32 GPE:2H3 GPE H111 GPE:1H11 GPE H112 GPE:2H11 GPE H121 GPE:1H12 GPE H122 GPE:2H12 GPE HN1 GPE:1HN GPE HN2 GPE:2HN GPE H8A GPG: AH8 GPG H1A GPG: AH1 GPG H21A GPG:AH21 GPG H22A GPG:AH22 GPG HO5A GPG:AHO5 GPG H51A GPG:AH51 GPG H52A GPG:AH52 GPG H4D GPG:AH4* GPG H3D GPG:AH3* GPG HO3A GPG:AHO3 GPG H2D GPG:AH2* GPG H1D GPG:AH1* GPG HOP2 GPG:2HOP GPG H51B GPG:BH51 GPG H52B GPG:BH52 GPG H4E GPG:BH4* GPG H3E GPG:BH3* GPG HO3B GPG:BHO3 GPG H2E GPG:BH2* GPG HO2B GPG:BHO2 GPG H1E GPG:BH1* GPG H8B GPG: BH8 GPG H1B GPG: BH1 GPG H21B GPG:BH21 GPG H22B GPG:BH22 GPG H71 GPH:1H7 GPH H72 GPH:2H7 GPH H51 GPI:1H5 GPI H52 GPI:2H5 GPI H31 GPI:1H3 GPI H32 GPI:2H3 GPI H41 GPI:1H4 GPI H42 GPI:2H4 GPI H141 GPI:1H14 GPI H142 GPI:2H14 GPI H151 GPI:1H15 GPI H152 GPI:2H15 GPI H161 GPI:1H16 GPI H162 GPI:2H16 GPI H121 GPI:1H12 GPI H122 GPI:2H12 GPI H123 GPI:3H12 GPI H131 GPI:1H13 GPI H132 GPI:2H13 GPI H133 GPI:3H13 GPI H101 GPI:1H10 GPI H102 GPI:2H10 GPI H111 GPI:1H11 GPI H112 GPI:2H11 GPI H113 GPI:3H11 GPI H11 GPJ:1H1 GPJ H12 GPJ:2H1 GPJ H21 GPJ:1H2 GPJ H22 GPJ:2H2 GPJ HN11 GPJ:1HN1 GPJ HOP2 GPL:2HOP GPL H5'1 GPL:1H5* GPL H5'2 GPL:2H5* GPL H4' GPL: H4* GPL H3' GPL: H3* GPL HO3' GPL:*HO3 GPL H2' GPL: H2* GPL HO2' GPL:*HO2 GPL H1' GPL: H1* GPL HN21 GPL:1HN2 GPL HN22 GPL:2HN2 GPL H GPL:1HN GPL H2 GPL:2HN GPL HB2 GPL:1HB GPL HB3 GPL:2HB GPL HG2 GPL:1HG GPL HG3 GPL:2HG GPL HD2 GPL:1HD GPL HD3 GPL:2HD GPL HE2 GPL:1HE GPL HE3 GPL:2HE GPL HZ GPL: HNZ GPL H61 GPM:1H6 GPM H62 GPM:2H6 GPM H71 GPM:1H7 GPM H72 GPM:2H7 GPM HOP2 GPM:2HOP GPM HOP3 GPM:3HOP GPM H8'1 GPN:1H8' GPN H8'2 GPN:2H8' GPN H5'1 GPN:1H5' GPN H5'2 GPN:2H5' GPN H3'1 GPN:1H3' GPN H3'2 GPN:2H3' GPN H2'1 GPN:1H2' GPN H2'2 GPN:2H2' GPN H1'1 GPN:1H1' GPN H1'2 GPN:2H1' GPN H1'3 GPN:3H1' GPN HN21 GPN:1HN2 GPN HN22 GPN:2HN2 GPN H11 GPP:1H1 GPP H12 GPP:2H1 GPP H41 GPP:1H4 GPP H42 GPP:2H4 GPP H43 GPP:3H4 GPP H51 GPP:1H5 GPP H52 GPP:2H5 GPP H61 GPP:1H6 GPP H62 GPP:2H6 GPP H91 GPP:1H9 GPP H92 GPP:2H9 GPP H93 GPP:3H9 GPP H101 GPP:1H10 GPP H102 GPP:2H10 GPP H103 GPP:3H10 GPP HOA2 GPP:2HOA GPP HOB2 GPP:2HOB GPP HOB3 GPP:3HOB GPP HN11 GPR:1HN1 GPR HN12 GPR:2HN1 GPR HB11 GPR:1HB1 GPR HB12 GPR:2HB1 GPR HG11 GPR:1HG1 GPR HG12 GPR:2HG1 GPR HB21 GPR:1HB2 GPR HB22 GPR:2HB2 GPR HA31 GPR:1HA3 GPR HA32 GPR:2HA3 GPR HN11 GPS:1HN1 GPS HN12 GPS:2HN1 GPS HB11 GPS:1HB1 GPS HB12 GPS:2HB1 GPS HG11 GPS:1HG1 GPS HG12 GPS:2HG1 GPS HB21 GPS:1HB2 GPS HB22 GPS:2HB2 GPS HA31 GPS:1HA3 GPS HA32 GPS:2HA3 GPS HN21 GPX:1HN2 GPX HN22 GPX:2HN2 GPX HOA2 GPX:2HOA GPX HOB2 GPX:2HOB GPX HOB3 GPX:3HOB GPX H5'1 GPX:1H5' GPX H5'2 GPX:2H5' GPX H72 GR1:2H7 GR1 H71 GR1:1H7 GR1 H172 GR1:2H17 GR1 H171 GR1:1H17 GR1 H182 GR1:2H18 GR1 H181 GR1:1H18 GR1 H192 GR1:2H19 GR1 H191 GR1:1H19 GR1 H202 GR1:2H20 GR1 H201 GR1:1H20 GR1 H32 GR1:2H3 GR1 H31 GR1:1H3 GR1 H142 GR1:2H14 GR1 H141 GR1:1H14 GR1 H3C1 GR1:1H3C GR1 H273 GR1:3H27 GR1 H272 GR1:2H27 GR1 H271 GR1:1H27 GR1 H12 GR1:2H1 GR1 H11 GR1:1H1 GR1 H23A GR1:3H2 GR1 H22A GR1:2H2 GR1 H21 GR1:1H2 GR1 H11 GR3:1H1 GR3 H12 GR3:2H1 GR3 H21A GR3:1H2 GR3 H22 GR3:2H2 GR3 H61 GR3:1H6 GR3 H62 GR3:2H6 GR3 H111 GR3:1H11 GR3 H112 GR3:2H11 GR3 H121 GR3:1H12 GR3 H122 GR3:2H12 GR3 H151 GR3:1H15 GR3 H152 GR3:2H15 GR3 H181 GR3:1H18 GR3 H182 GR3:2H18 GR3 H183 GR3:3H18 GR3 H191 GR3:1H19 GR3 H192 GR3:2H19 GR3 H193 GR3:3H19 GR3 H221 GR3:1H22 GR3 H222 GR3:2H22 GR3 H261 GR3:1H26 GR3 H262 GR3:2H26 GR3 H263 GR3:3H26 GR3 H271 GR3:1H27 GR3 H272 GR3:2H27 GR3 H273 GR3:3H27 GR3 H281 GR3:1H28 GR3 H282 GR3:2H28 GR3 H283 GR3:3H28 GR3 H301 GR3:1H30 GR3 H302 GR3:2H30 GR3 H303 GR3:3H30 GR3 H381 GR3:1H38 GR3 H382 GR3:2H38 GR3 H383 GR3:3H38 GR3 H11 GR4:1H1 GR4 H12A GR4:2H1 GR4 H21A GR4:1H2 GR4 H22 GR4:2H2 GR4 H61 GR4:1H6 GR4 H62 GR4:2H6 GR4 H111 GR4:1H11 GR4 H112 GR4:2H11 GR4 H151 GR4:1H15 GR4 H152 GR4:2H15 GR4 H181 GR4:1H18 GR4 H182 GR4:2H18 GR4 H183 GR4:3H18 GR4 H191 GR4:1H19 GR4 H192 GR4:2H19 GR4 H193 GR4:3H19 GR4 H221 GR4:1H22 GR4 H222 GR4:2H22 GR4 H261 GR4:1H26 GR4 H262 GR4:2H26 GR4 H263 GR4:3H26 GR4 H271 GR4:1H27 GR4 H272 GR4:2H27 GR4 H273 GR4:3H27 GR4 H281 GR4:1H28 GR4 H282 GR4:2H28 GR4 H301 GR4:1H30 GR4 H302 GR4:2H30 GR4 H303 GR4:3H30 GR4 H381 GR4:1H38 GR4 H382 GR4:2H38 GR4 H383 GR4:3H38 GR4 H311 GR4:1H31 GR4 H312 GR4:2H31 GR4 H101 GRF:1H10 GRF H102 GRF:2H10 GRF H191 GRF:1H19 GRF H192 GRF:2H19 GRF H201 GRG:1H20 GRG H202 GRG:2H20 GRG H203 GRG:3H20 GRG H191 GRG:1H19 GRG H192 GRG:2H19 GRG H193 GRG:3H19 GRG H161 GRG:1H16 GRG H162 GRG:2H16 GRG H141 GRG:1H14 GRG H142 GRG:2H14 GRG H143 GRG:3H14 GRG H151 GRG:1H15 GRG H152 GRG:2H15 GRG H111 GRG:1H11 GRG H112 GRG:2H11 GRG HC91 GRG:1HC9 GRG HC92 GRG:2HC9 GRG H101 GRG:1H10 GRG H102 GRG:2H10 GRG H103 GRG:3H10 GRG HC61 GRG:1HC6 GRG HC62 GRG:2HC6 GRG HC51 GRG:1HC5 GRG HC52 GRG:2HC5 GRG HC41 GRG:1HC4 GRG HC42 GRG:2HC4 GRG HC43 GRG:3HC4 GRG HC11 GRG:1HC1 GRG HC12 GRG:2HC1 GRG H1AO GRG:OH1A GRG H1BO GRG:OH1B GRG H2BO GRG:OH2B GRG H121 GRL:1H12 GRL H122 GRL:2H12 GRL H141 GRL:1H14 GRL H142 GRL:2H14 GRL H161 GRL:1H16 GRL H162 GRL:2H16 GRL H21 GRL:1H2 GRL H22A GRL:2H2 GRL H231 GRL:1H23 GRL H232 GRL:2H23 GRL H321 GRL:1H32 GRL H322 GRL:2H32 GRL H331 GRL:1H33 GRL H332 GRL:2H33 GRL H351 GRL:1H35 GRL H352 GRL:2H35 GRL H353 GRL:3H35 GRL H361 GRL:1H36 GRL H362 GRL:2H36 GRL H363 GRL:3H36 GRL H31A GRL:1H3 GRL H32 GRL:2H3 GRL HC31 GRO:1HC3 GRO HC32 GRO:2HC3 GRO HC33 GRO:3HC3 GRO HSP2 GS:2HSP GS HOP3 GS:3HOP GS H5' GS:1H5* GS H5'' GS:2H5* GS H4' GS: H4* GS H3' GS: H3* GS HO3' GS:*HO3 GS H2' GS:1H2* GS H2'' GS:2H2* GS H1' GS: H1* GS HN21 GS:1HN2 GS HN22 GS:2HN2 GS H61 GS1:1H6 GS1 H62 GS1:2H6 GS1 H61 GS4:1H6 GS4 H62 GS4:2H6 GS4 H161 GS5:1H16 GS5 H162 GS5:2H16 GS5 H201 GS5:1H20 GS5 H202 GS5:2H20 GS5 H231 GS5:1H23 GS5 H232 GS5:2H23 GS5 H233 GS5:3H23 GS5 H261 GS5:1H26 GS5 H262 GS5:2H26 GS5 H271 GS5:1H27 GS5 H272 GS5:2H27 GS5 H281 GS5:1H28 GS5 H282 GS5:2H28 GS5 H291 GS5:1H29 GS5 H292 GS5:2H29 GS5 H131 GS6:1H13 GS6 H132 GS6:2H13 GS6 H141 GS6:1H14 GS6 H142 GS6:2H14 GS6 H171 GS6:1H17 GS6 H172 GS6:2H17 GS6 H173 GS6:3H17 GS6 H191 GS6:1H19 GS6 H192 GS6:2H19 GS6 H231 GS6:1H23 GS6 H232 GS6:2H23 GS6 H201 GS6:1H20 GS6 H202 GS6:2H20 GS6 H221 GS6:1H22 GS6 H222 GS6:2H22 GS6 H61 GSA:1H6 GSA H62 GSA:2H6 GSA HOS3 GSA:3HOS GSA HN11 GSB:1HN1 GSB HN12 GSB:2HN1 GSB HB11 GSB:1HB1 GSB HB12 GSB:2HB1 GSB HG11 GSB:1HG1 GSB HG12 GSB:2HG1 GSB HA31 GSB:1HA3 GSB HA32 GSB:2HA3 GSB HB21 GSB:1HB2 GSB HB22 GSB:2HB2 GSB H'1 GSB:1H' GSB H'2 GSB:2H' GSB H GSC:1HN GSC H2 GSC:2HN GSC H11 GSC:1H1 GSC H12 GSC:2H1 GSC H21 GSC:1H2 GSC H22 GSC:2H2 GSC H23 GSC:3H2 GSC H61 GSD:1H6 GSD H62 GSD:2H6 GSD H11 GSE:1H1 GSE H12A GSE:2H1 GSE H31 GSE:1H3 GSE H32 GSE:2H3 GSE H111 GSE:1H11 GSE H112 GSE:2H11 GSE HN1 GSE:1HN GSE HN2 GSE:2HN GSE HB11 GSF:1HB1 GSF HB12 GSF:2HB1 GSF HG11 GSF:1HG1 GSF HG12 GSF:2HG1 GSF HN11 GSF:1HN1 GSF HN12 GSF:2HN1 GSF HB21 GSF:1HB2 GSF HB22 GSF:2HB2 GSF HA31 GSF:1HA3 GSF HA32 GSF:2HA3 GSF H81 GSG:1H8 GSG H82 GSG:2H8 GSG H91 GSG:1H9 GSG H92 GSG:2H9 GSG H93 GSG:3H9 GSG H141 GSG:1H14 GSG H142 GSG:2H14 GSG H143 GSG:3H14 GSG H191 GSG:1H19 GSG H192 GSG:2H19 GSG H193 GSG:3H19 GSG H201 GSG:1H20 GSG H202 GSG:2H20 GSG H211 GSG:1H21 GSG H212 GSG:2H21 GSG H221 GSG:1H22 GSG H222 GSG:2H22 GSG H223 GSG:3H22 GSG HN11 GSH:1HN1 GSH HN12 GSH:2HN1 GSH HB12 GSH:2HB1 GSH HB13 GSH:3HB1 GSH HG12 GSH:2HG1 GSH HG13 GSH:3HG1 GSH HB22 GSH:2HB2 GSH HB23 GSH:3HB2 GSH HA31 GSH:1HA3 GSH HA32 GSH:2HA3 GSH H231 GSJ:1H23 GSJ H232 GSJ:2H23 GSJ H233 GSJ:3H23 GSJ H221 GSJ:1H22 GSJ H222 GSJ:2H22 GSJ H111 GSJ:1H11 GSJ H112 GSJ:2H11 GSJ H201 GSJ:1H20 GSJ H202 GSJ:2H20 GSJ H203 GSJ:3H20 GSJ H211 GSJ:1H21 GSJ H212 GSJ:2H21 GSJ H213 GSJ:3H21 GSJ H171 GSJ:1H17 GSJ H172 GSJ:2H17 GSJ H173 GSJ:3H17 GSJ H141 GSJ:1H14 GSJ H142 GSJ:2H14 GSJ H131 GSJ:1H13 GSJ H132 GSJ:2H13 GSJ H131 GSK:1H13 GSK H132 GSK:2H13 GSK H141 GSK:1H14 GSK H142 GSK:2H14 GSK H171 GSK:1H17 GSK H172 GSK:2H17 GSK H173 GSK:3H17 GSK H191 GSK:1H19 GSK H192 GSK:2H19 GSK H201 GSK:1H20 GSK H202 GSK:2H20 GSK H221 GSK:1H22 GSK H222 GSK:2H22 GSK H231 GSK:1H23 GSK H232 GSK:2H23 GSK H171 GSL:1H17 GSL H172 GSL:2H17 GSL H173 GSL:3H17 GSL H161 GSL:1H16 GSL H162 GSL:2H16 GSL H151 GSL:1H15 GSL H152 GSL:2H15 GSL H141 GSL:1H14 GSL H142 GSL:2H14 GSL H131 GSL:1H13 GSL H132 GSL:2H13 GSL H121 GSL:1H12 GSL H122 GSL:2H12 GSL H111 GSL:1H11 GSL H112 GSL:2H11 GSL H101 GSL:1H10 GSL H102 GSL:2H10 GSL H91 GSL:1H9 GSL H92 GSL:2H9 GSL H81 GSL:1H8 GSL H82 GSL:2H8 GSL H71 GSL:1H7 GSL H72 GSL:2H7 GSL H61 GSL:1H6 GSL H62 GSL:2H6 GSL H51 GSL:1H5 GSL H52 GSL:2H5 GSL H41 GSL:1H4 GSL H42 GSL:2H4 GSL H31A GSL:1H3 GSL H32A GSL:2H3 GSL H1A GSL:1H GSL H2A GSL:2H GSL H191 GSL:1H19 GSL H192 GSL:2H19 GSL H201 GSL:1H20 GSL H202 GSL:2H20 GSL H211 GSL:1H21 GSL H212 GSL:2H21 GSL H221 GSL:1H22 GSL H222 GSL:2H22 GSL H231 GSL:1H23 GSL H232 GSL:2H23 GSL H241 GSL:1H24 GSL H242 GSL:2H24 GSL H251 GSL:1H25 GSL H252 GSL:2H25 GSL H261 GSL:1H26 GSL H262 GSL:2H26 GSL H271 GSL:1H27 GSL H272 GSL:2H27 GSL H381 GSL:1H38 GSL H382 GSL:2H38 GSL H371 GSL:1H37 GSL H372 GSL:2H37 GSL H361 GSL:1H36 GSL H362 GSL:2H36 GSL H351 GSL:1H35 GSL H352 GSL:2H35 GSL H353 GSL:3H35 GSL HA31 GSM:1HA3 GSM HA32 GSM:2HA3 GSM HB21 GSM:1HB2 GSM HB22 GSM:2HB2 GSM H41 GSM:1H4 GSM H42 GSM:2H4 GSM H43 GSM:3H4 GSM HG11 GSM:1HG1 GSM HG12 GSM:2HG1 GSM HB11 GSM:1HB1 GSM HB12 GSM:2HB1 GSM HN11 GSM:1HN1 GSM HN12 GSM:2HN1 GSM HN1 GSN:1HN GSN HN2 GSN:2HN GSN HB1 GSN:1HB GSN HB2 GSN:2HB GSN HAG1 GSN:1HAG GSN HAG2 GSN:2HAG GSN HAL1 GSN:1HAL GSN HAL2 GSN:2HAL GSN HAR1 GSN:1HAR GSN HAR2 GSN:2HAR GSN HN1 GSO:1HN GSO HN2 GSO:2HN GSO HBC1 GSO:1HBC GSO HBC2 GSO:2HBC GSO HB21 GSO:1HB2 GSO HB22 GSO:2HB2 GSO HGC1 GSO:1HGC GSO HGC2 GSO:2HGC GSO HA31 GSO:1HA3 GSO HA32 GSO:2HA3 GSO HD21 GSO:1HD2 GSO HD22 GSO:2HD2 GSO HOG2 GSP:2HOG GSP HOG3 GSP:3HOG GSP HOB2 GSP:2HOB GSP HOA2 GSP:2HOA GSP H5'1 GSP:1H5* GSP H5'2 GSP:2H5* GSP H4' GSP: H4* GSP H3' GSP: H3* GSP HO3' GSP:*HO3 GSP H2' GSP: H2* GSP HO2' GSP:*HO2 GSP H1' GSP: H1* GSP HN21 GSP:1HN2 GSP HN22 GSP:2HN2 GSP H161 GSQ:1H16 GSQ H162 GSQ:2H16 GSQ H201 GSQ:1H20 GSQ H202 GSQ:2H20 GSQ H231 GSQ:1H23 GSQ H232 GSQ:2H23 GSQ H233 GSQ:3H23 GSQ H261 GSQ:1H26 GSQ H262 GSQ:2H26 GSQ H271 GSQ:1H27 GSQ H272 GSQ:2H27 GSQ H281 GSQ:1H28 GSQ H282 GSQ:2H28 GSQ H291 GSQ:1H29 GSQ H292 GSQ:2H29 GSQ HOP2 GSR:2HOP GSR HOP3 GSR:3HOP GSR H5' GSR:1H5* GSR H5'' GSR:2H5* GSR H4' GSR: H4* GSR H3' GSR: H3* GSR HO3' GSR:*HO3 GSR H2' GSR:1H2* GSR H2'' GSR:2H2* GSR H1' GSR: H1* GSR HB1 GSR:1HB GSR HB2 GSR:2HB GSR HOP2 GSS:2HOP GSS HOP3 GSS:3HOP GSS H5' GSS:1H5* GSS H5'' GSS:2H5* GSS H4' GSS: H4* GSS H3' GSS: H3* GSS HO3' GSS:*HO3 GSS H2' GSS:1H2* GSS H2'' GSS:2H2* GSS H1' GSS: H1* GSS HB1 GSS:1HB GSS HB2 GSS:2HB GSS H11 GST:1H1 GST H12 GST:2H1 GST H101 GST:1H10 GST H102 GST:2H10 GST H103 GST:3H10 GST H41 GST:1H4 GST H42 GST:2H4 GST H51 GST:1H5 GST H52 GST:2H5 GST H91 GST:1H9 GST H92 GST:2H9 GST H93 GST:3H9 GST H81 GST:1H8 GST H82 GST:2H8 GST H83 GST:3H8 GST HC2 GSU: H2 GSU H GSU:1HN GSU H2 GSU:2HN GSU HB2 GSU:1HB GSU HB3 GSU:2HB GSU HG2 GSU:1HG GSU HG3 GSU:2HG GSU H5'1 GSU:1H5* GSU H5'2 GSU:2H5* GSU H4' GSU: H4* GSU H1' GSU: H1* GSU HN61 GSU:1HN6 GSU HN62 GSU:2HN6 GSU H2' GSU: H2* GSU HO2' GSU:*HO2 GSU H3' GSU: H3* GSU HO3' GSU:*HO3 GSU H1N1 GSW:1H1N GSW H1N2 GSW:2H1N GSW HB11 GSW:1HB1 GSW HB12 GSW:2HB1 GSW HG11 GSW:1HG1 GSW HG12 GSW:2HG1 GSW HB21 GSW:1HB2 GSW HB22 GSW:2HB2 GSW HA31 GSW:1HA3 GSW HA32 GSW:2HA3 GSW H131 GSX:1H13 GSX H132 GSX:2H13 GSX H141 GSX:1H14 GSX H142 GSX:2H14 GSX H171 GSX:1H17 GSX H172 GSX:2H17 GSX H173 GSX:3H17 GSX H191 GSX:1H19 GSX H192 GSX:2H19 GSX H231 GSX:1H23 GSX H232 GSX:2H23 GSX H201 GSX:1H20 GSX H202 GSX:2H20 GSX H221 GSX:1H22 GSX H222 GSX:2H22 GSX HAZ1 GSZ:1HAZ GSZ HAZ2 GSZ:2HAZ GSZ HAZ3 GSZ:3HAZ GSZ HBA1 GSZ:1HBA GSZ HBA2 GSZ:2HBA GSZ HBA3 GSZ:3HBA GSZ HAI1 GSZ:1HAI GSZ HAI2 GSZ:2HAI GSZ HAR1 GSZ:1HAR GSZ HAR2 GSZ:2HAR GSZ HAS1 GSZ:1HAS GSZ HAS2 GSZ:2HAS GSZ H GT9:1HN GT9 H2 GT9:2HN GT9 HB2 GT9:1HB GT9 HB3 GT9:2HB GT9 H11 GT9:1H1 GT9 H12 GT9:2H1 GT9 H21 GT9:1H2 GT9 H22 GT9:2H2 GT9 H31 GT9:1H3 GT9 H32 GT9:2H3 GT9 H41 GT9:1H4 GT9 H42 GT9:2H4 GT9 H51 GT9:1H5 GT9 H52 GT9:2H5 GT9 H61 GT9:1H6 GT9 H62 GT9:2H6 GT9 H71 GT9:1H7 GT9 H72 GT9:2H7 GT9 H81 GT9:1H8 GT9 H82 GT9:2H8 GT9 H91 GT9:1H9 GT9 H92 GT9:2H9 GT9 H93 GT9:3H9 GT9 HN21 GTA:1HN2 GTA HN22 GTA:2HN2 GTA H71 GTA:1H7 GTA H72 GTA:2H7 GTA H73 GTA:3H7 GTA HO3A GTA:AHO3 GTA H5A1 GTA:1H5A GTA H5A2 GTA:2H5A GTA HO2A GTA:AHO2 GTA H122 GTA:2H12 GTA H222 GTA:2H22 GTA H322 GTA:2H32 GTA H5B1 GTA:1H5B GTA H5B2 GTA:2H5B GTA HO3B GTA:BHO3 GTA HO2B GTA:BHO2 GTA HN61 GTA:1HN6 GTA HN62 GTA:2HN6 GTA HN11 GTB:1HN1 GTB HN12 GTB:2HN1 GTB HB11 GTB:1HB1 GTB HB12 GTB:2HB1 GTB HG11 GTB:1HG1 GTB HG12 GTB:2HG1 GTB HB21 GTB:1HB2 GTB HB22 GTB:2HB2 GTB HA31 GTB:1HA3 GTB HA32 GTB:2HA3 GTB H'1 GTB:1H' GTB H'2 GTB:2H' GTB HN11 GTD:1HN1 GTD HN12 GTD:2HN1 GTD HB11 GTD:1HB1 GTD HB12 GTD:2HB1 GTD HG11 GTD:1HG1 GTD HG12 GTD:2HG1 GTD HB21 GTD:1HB2 GTD HB22 GTD:2HB2 GTD HA31 GTD:1HA3 GTD HA32 GTD:2HA3 GTD HOA2 GTG:2HOA GTG HOB2 GTG:2HOB GTG HC71 GTG:1HC7 GTG HC72 GTG:2HC7 GTG HC73 GTG:3HC7 GTG HN21 GTG:1HN2 GTG HN22 GTG:2HN2 GTG H5'1 GTG:1H5* GTG H5'2 GTG:2H5* GTG H4' GTG: H4* GTG H3' GTG: H3* GTG HO3' GTG:*HO3 GTG H2' GTG: H2* GTG HO2' GTG:*HO2 GTG H1' GTG: H1* GTG HOG2 GTG:2HOG GTG H5B1 GTG:1H5B GTG H5B2 GTG:2H5B GTG H3BO GTG:OH3B GTG H2BO GTG:OH2B GTG H1BN GTG:NH1B GTG H2B1 GTG:1H2B GTG H2B2 GTG:2H2B GTG HN11 GTH:1HN1 GTH HN12 GTH:2HN1 GTH HG1 GTH:1HG GTH HG2 GTH:2HG GTH HG3 GTH:3HG GTH H61 GTH:1H6 GTH H62 GTH:2H6 GTH H121 GTH:1H12 GTH H122 GTH:2H12 GTH H141 GTH:1H14 GTH H142 GTH:2H14 GTH H143 GTH:3H14 GTH H6C1 GTL:1H6C GTL H6C2 GTL:2H6C GTL H6C1 GTM:1H6C GTM H6C2 GTM:2H6C GTM H7C1 GTM:1H7C GTM H7C2 GTM:2H7C GTM H7C3 GTM:3H7C GTM HOG2 GTN:2HOG GTN HOG3 GTN:3HOG GTN HOB2 GTN:2HOB GTN HOA2 GTN:2HOA GTN H5'1 GTN:1H5* GTN H5'2 GTN:2H5* GTN H4' GTN: H4* GTN H3'1 GTN:1H3* GTN H3'2 GTN:2H3* GTN H2'1 GTN:1H2* GTN H2'2 GTN:2H2* GTN H1' GTN: H1* GTN H21 GTN:1H2 GTN H22 GTN:2H2 GTN HOG2 GTO:2HOG GTO HOG3 GTO:3HOG GTO H3B1 GTO:1H3B GTO H3B2 GTO:2H3B GTO HOB2 GTO:2HOB GTO HOA2 GTO:2HOA GTO H5'1 GTO:1H5* GTO H5'2 GTO:2H5* GTO H4' GTO: H4* GTO H3' GTO: H3* GTO HO3' GTO:*HO3 GTO H2' GTO: H2* GTO HO2' GTO:*HO2 GTO H1' GTO: H1* GTO HN21 GTO:1HN2 GTO HN22 GTO:2HN2 GTO HOG2 GTP:2HOG GTP HOG3 GTP:3HOG GTP HOB2 GTP:2HOB GTP HOA2 GTP:2HOA GTP H5' GTP:1H5* GTP H5'' GTP:2H5* GTP H4' GTP: H4* GTP H3' GTP: H3* GTP HO3' GTP:*HO3 GTP H2' GTP: H2* GTP HO2' GTP:*HO2 GTP H1' GTP: H1* GTP HN21 GTP:1HN2 GTP HN22 GTP:2HN2 GTP HN11 GTS:1HN1 GTS HN12 GTS:2HN1 GTS HB11 GTS:1HB1 GTS HB12 GTS:2HB1 GTS HG11 GTS:1HG1 GTS HG12 GTS:2HG1 GTS HB21 GTS:1HB2 GTS HB22 GTS:2HB2 GTS HOS3 GTS:3HOS GTS HA31 GTS:1HA3 GTS HA32 GTS:2HA3 GTS HN11 GTT:1HN1 GTT HN12 GTT:2HN1 GTT HN13 GTT:3HN1 GTT HB11 GTT:1HB1 GTT HB12 GTT:2HB1 GTT HG11 GTT:1HG1 GTT HG12 GTT:2HG1 GTT HB21 GTT:1HB2 GTT HB22 GTT:2HB2 GTT HA31 GTT:1HA3 GTT HA32 GTT:2HA3 GTT HN11 GTX:1HN1 GTX HN12 GTX:2HN1 GTX HN13 GTX:3HN1 GTX HB11 GTX:1HB1 GTX HB12 GTX:2HB1 GTX HG11 GTX:1HG1 GTX HG12 GTX:2HG1 GTX HB21 GTX:1HB2 GTX HB22 GTX:2HB2 GTX HS11 GTX:1HS1 GTX HS12 GTX:2HS1 GTX HS21 GTX:1HS2 GTX HS22 GTX:2HS2 GTX HS31 GTX:1HS3 GTX HS32 GTX:2HS3 GTX HS41 GTX:1HS4 GTX HS42 GTX:2HS4 GTX HS51 GTX:1HS5 GTX HS52 GTX:2HS5 GTX HS61 GTX:1HS6 GTX HS62 GTX:2HS6 GTX HS63 GTX:3HS6 GTX HA31 GTX:1HA3 GTX HA32 GTX:2HA3 GTX HN11 GTY:1HN1 GTY HN12 GTY:2HN1 GTY HB11 GTY:1HB1 GTY HB12 GTY:2HB1 GTY HG11 GTY:1HG1 GTY HG12 GTY:2HG1 GTY HB21 GTY:1HB2 GTY HB22 GTY:2HB2 GTY H1S1 GTY:1H1S GTY H1S2 GTY:2H1S GTY H2S1 GTY:1H2S GTY H2S2 GTY:2H2S GTY H3S1 GTY:1H3S GTY H3S2 GTY:2H3S GTY H4S1 GTY:1H4S GTY H4S2 GTY:2H4S GTY H5S1 GTY:1H5S GTY H5S2 GTY:2H5S GTY H6S1 GTY:1H6S GTY H6S2 GTY:2H6S GTY H7S1 GTY:1H7S GTY H7S2 GTY:2H7S GTY H8S1 GTY:1H8S GTY H8S2 GTY:2H8S GTY H8S3 GTY:3H8S GTY HA31 GTY:1HA3 GTY HA32 GTY:2HA3 GTY H61 GTZ:1H6 GTZ H62 GTZ:2H6 GTZ H61 GU0:1H6 GU0 H62 GU0:2H6 GU0 H71 GU1:1H7 GU1 H72 GU1:2H7 GU1 H73 GU1:3H7 GU1 H81 GU1:1H8 GU1 H82 GU1:2H8 GU1 H83 GU1:3H8 GU1 H71 GU2:1H7 GU2 H72 GU2:2H7 GU2 H73 GU2:3H7 GU2 H81 GU2:1H8 GU2 H82 GU2:2H8 GU2 H83 GU2:3H8 GU2 H61 GU3:1H6 GU3 H62 GU3:2H6 GU3 H81 GU3:1H8 GU3 H82 GU3:2H8 GU3 H83 GU3:3H8 GU3 H71 GU3:1H7 GU3 H72 GU3:2H7 GU3 H73 GU3:3H7 GU3 H61 GU4:1H6 GU4 H62 GU4:2H6 GU4 H71 GU5:1H7 GU5 H72 GU5:2H7 GU5 H73 GU5:3H7 GU5 H81 GU5:1H8 GU5 H82 GU5:2H8 GU5 H83 GU5:3H8 GU5 H61 GU5:1H6 GU5 H62 GU5:2H6 GU5 H61 GU6:1H6 GU6 H62 GU6:2H6 GU6 HN21 GU7:1HN2 GU7 HN22 GU7:2HN2 GU7 H101 GU7:1H10 GU7 H102 GU7:2H10 GU7 H111 GU7:1H11 GU7 H112 GU7:2H11 GU7 H141 GU7:1H14 GU7 H142 GU7:2H14 GU7 H161 GU7:1H16 GU7 H162 GU7:2H16 GU7 H91 GU8:1H9 GU8 H92 GU8:2H9 GU8 H93 GU8:3H9 GU8 H61 GU8:1H6 GU8 H62 GU8:2H6 GU8 H71 GU8:1H7 GU8 H72 GU8:2H7 GU8 H73 GU8:3H7 GU8 H81 GU8:1H8 GU8 H82 GU8:2H8 GU8 H83 GU8:3H8 GU8 H61 GU9:1H6 GU9 H62 GU9:2H6 GU9 H91 GU9:1H9 GU9 H92 GU9:2H9 GU9 H93 GU9:3H9 GU9 H81 GU9:1H8 GU9 H82 GU9:2H8 GU9 H83 GU9:3H8 GU9 H71 GU9:1H7 GU9 H72 GU9:2H7 GU9 H73 GU9:3H7 GU9 H21 GUA:1H2 GUA H22 GUA:2H2 GUA H31 GUA:1H3 GUA H32 GUA:2H3 GUA H41 GUA:1H4 GUA H42 GUA:2H4 GUA H1D GUD: H1* GUD H2D GUD: H2* GUD HO2' GUD:*HO2 GUD H3D GUD: H3* GUD H4D GUD: H4* GUD HO3' GUD:*HO3 GUD H5'1 GUD:1H5* GUD H5'2 GUD:2H5* GUD HOA2 GUD:2HOA GUD HOB2 GUD:2HOB GUD H6'1 GUD:1H6' GUD H6'2 GUD:2H6' GUD HO2A GUD:'HO2 GUD HO3A GUD:'HO3 GUD HO4' GUD:'HO4 GUD HO6' GUD:'HO6 GUD H61 GUL:1H6 GUL H62 GUL:2H6 GUL H101 GUM:1H10 GUM H102 GUM:2H10 GUM H103 GUM:3H10 GUM H161 GUM:1H16 GUM H162 GUM:2H16 GUM H181 GUM:1H18 GUM H182 GUM:2H18 GUM H183 GUM:3H18 GUM H241 GUM:1H24 GUM H242 GUM:2H24 GUM H261 GUM:1H26 GUM H262 GUM:2H26 GUM H263 GUM:3H26 GUM HN21 GUN:1HN2 GUN HN22 GUN:2HN2 GUN H61 GUP:1H6 GUP H62 GUP:2H6 GUP HN1' GUR:'HN1 GUR HN2' GUR:'HN2 GUR HA1 GVA:1HA GVA HA2 GVA:2HA GVA HB1 GVA:1HB GVA HB2 GVA:2HB GVA HG1 GVA:1HG GVA HG2 GVA:2HG GVA HD1 GVA:1HD GVA HD2 GVA:2HD GVA HH21 GVA:1HH2 GVA HH22 GVA:2HH2 GVA H291 GVB:1H29 GVB H292 GVB:2H29 GVB H293 GVB:3H29 GVB H281 GVB:1H28 GVB H282 GVB:2H28 GVB H283 GVB:3H28 GVB H9C1 GVB:1H9C GVB H9C2 GVB:2H9C GVB H1C1 GVB:1H1C GVB H1C2 GVB:2H1C GVB H221 GVB:1H22 GVB H222 GVB:2H22 GVB H201 GVB:1H20 GVB H202 GVB:2H20 GVB H301 GVB:1H30 GVB H302 GVB:2H30 GVB H303 GVB:3H30 GVB H361 GVC:1H36 GVC H362 GVC:2H36 GVC H363 GVC:3H36 GVC HAL1 GVD:1HAL GVD HAL2 GVD:2HAL GVD HAM1 GVD:1HAM GVD HAM2 GVD:2HAM GVD HA01 GVD:1HA0 GVD HA02 GVD:2HA0 GVD HN1 GVE:1HN GVE HN2 GVE:2HN GVE HA1 GVE:1HA GVE HA2 GVE:2HA GVE HB1 GVE:1HB GVE HB2 GVE:2HB GVE HG1 GVE:1HG GVE HG2 GVE:2HG GVE HH31 GVE:1HH3 GVE HH32 GVE:2HH3 GVE HH33 GVE:3HH3 GVE H2C1 GVG:1H2C GVG H2C2 GVG:2H2C GVG H2C3 GVG:3H2C GVG H9C1 GVI:1H9C GVI H9C2 GVI:2H9C GVI H1C1 GVI:1H1C GVI H1C2 GVI:2H1C GVI H1C3 GVI:3H1C GVI H1N1 GVJ:1H1N GVJ H1N2 GVJ:2H1N GVJ H9C1 GVK:1H9C GVK H9C2 GVK:2H9C GVK H151 GVK:1H15 GVK H152 GVK:2H15 GVK H101 GVK:1H10 GVK H102 GVK:2H10 GVK H141 GVK:1H14 GVK H142 GVK:2H14 GVK HN1 GVL:1HN GVL HN2 GVL:2HN GVL HBC1 GVL:1HBC GVL HBC2 GVL:2HBC GVL H281 GVL:1H28 GVL H282 GVL:2H28 GVL H301 GVL:1H30 GVL H302 GVL:2H30 GVL H303 GVL:3H30 GVL H311 GVL:1H31 GVL H312 GVL:2H31 GVL H313 GVL:3H31 GVL H361 GVL:1H36 GVL H362 GVL:2H36 GVL H2C1 GVM:1H2C GVM H2C2 GVM:2H2C GVM H4C1 GVM:1H4C GVM H4C2 GVM:2H4C GVM H5A1 GVM:1H5A GVM H5A2 GVM:2H5A GVM H5A3 GVM:3H5A GVM H5B1 GVM:1H5B GVM H5B2 GVM:2H5B GVM H5B3 GVM:3H5B GVM H5C1 GVM:1H5C GVM H5C2 GVM:2H5C GVM H5C3 GVM:3H5C GVM H1N1 GVN:1H1N GVN H1N2 GVN:2H1N GVN H2C1 GVN:1H2C GVN H2C2 GVN:2H2C GVN H1N1 GVO:1H1N GVO H1N2 GVO:2H1N GVO H2C1 GVO:1H2C GVO H2C2 GVO:2H2C GVO H9C1 GVP:1H9C GVP H9C2 GVP:2H9C GVP H131 GVP:1H13 GVP H132 GVP:2H13 GVP H101 GVP:1H10 GVP H102 GVP:2H10 GVP H121 GVP:1H12 GVP H122 GVP:2H12 GVP H151 GVQ:1H15 GVQ H152 GVQ:2H15 GVQ H1N1 GVQ:1H1N GVQ H1N2 GVQ:2H1N GVQ HN71 GW3:1HN7 GW3 HN72 GW3:2HN7 GW3 HN91 GW3:1HN9 GW3 HN92 GW3:2HN9 GW3 H271 GW3:1H27 GW3 H272 GW3:2H27 GW3 H301 GW3:1H30 GW3 H302 GW3:2H30 GW3 H303 GW3:3H30 GW3 H341 GW3:1H34 GW3 H342 GW3:2H34 GW3 H371 GW3:1H37 GW3 H372 GW3:2H37 GW3 H373 GW3:3H37 GW3 H31 GW4:1H3 GW4 H32 GW4:2H3 GW4 H33 GW4:3H3 GW4 H111 GW4:1H11 GW4 H112 GW4:2H11 GW4 H121 GW4:1H12 GW4 H122 GW4:2H12 GW4 H321 GW4:1H32 GW4 H322 GW4:2H32 GW4 H331 GW4:1H33 GW4 H332 GW4:2H33 GW4 H351 GW4:1H35 GW4 H352 GW4:2H35 GW4 H353 GW4:3H35 GW4 H21A GW5:1H2 GW5 H22A GW5:2H2 GW5 H11 GW5:1H1 GW5 H12A GW5:2H1 GW5 H13A GW5:3H1 GW5 HD1 GWB:1HD GWB HD2 GWB:2HD GWB HE1 GWB:1HE GWB HE2 GWB:2HE GWB H121 GWB:1H12 GWB H122 GWB:2H12 GWB H123 GWB:3H12 GWB H131 GWB:1H13 GWB H132 GWB:2H13 GWB H133 GWB:3H13 GWB H6C1 GXL:1H6C GXL H6C2 GXL:2H6C GXL HN1 GYC:1HN GYC HN2 GYC:2HN GYC HB11 GYC:1HB1 GYC HB12 GYC:2HB1 GYC HA31 GYC:1HA3 GYC HA32 GYC:2HA3 GYC H6C1 GYP:1H6C GYP H6C2 GYP:2H6C GYP H7C1 GYP:1H7C GYP H7C2 GYP:2H7C GYP H7C3 GYP:3H7C GYP HN1 GYS:1HN GYS HN2 GYS:2HN GYS HB11 GYS:1HB1 GYS HB12 GYS:2HB1 GYS HA31 GYS:1HA3 GYS HA32 GYS:2HA3 GYS HBV1 GYT:1HBV GYT HBV2 GYT:2HBV GYT HBV3 GYT:3HBV GYT HBM1 GYT:1HBM GYT HBM2 GYT:2HBM GYT HAD1 GYT:1HAD GYT HAD2 GYT:2HAD GYT HAE1 GYT:1HAE GYT HAE2 GYT:2HAE GYT HAF1 GYT:1HAF GYT HAF2 GYT:2HAF GYT HAH1 GYT:1HAH GYT HAH2 GYT:2HAH GYT HAI1 GYT:1HAI GYT HAI2 GYT:2HAI GYT HAK1 GYT:1HAK GYT HAK2 GYT:2HAK GYT HAL1 GYT:1HAL GYT HAL2 GYT:2HAL GYT HAN1 GYT:1HAN GYT HAN2 GYT:2HAN GYT HAO1 GYT:1HAO GYT HAO2 GYT:2HAO GYT HAP1 GYT:1HAP GYT HAP2 GYT:2HAP GYT H6C1 GYT:1H6C GYT H6C2 GYT:2H6C GYT HAZ1 GYT:1HAZ GYT HAZ2 GYT:2HAZ GYT HAZ3 GYT:3HAZ GYT H121 GYU:1H12 GYU H122 GYU:2H12 GYU H131 GYU:1H13 GYU H132 GYU:2H13 GYU H141 GYU:1H14 GYU H142 GYU:2H14 GYU H143 GYU:3H14 GYU H111 GYU:1H11 GYU H112 GYU:2H11 GYU H113 GYU:3H11 GYU H9C1 GYU:1H9C GYU H9C2 GYU:2H9C GYU HH21 GZZ:1HH2 GZZ HH22 GZZ:2HH2 GZZ HN1E GZZ:EHN1 GZZ HC11 GZZ:1HC1 GZZ HC12 GZZ:2HC1 GZZ HC21 GZZ:1HC2 GZZ HC22 GZZ:2HC2 GZZ HC31 GZZ:1HC3 GZZ HC32 GZZ:2HC3 GZZ HC41 GZZ:1HC4 GZZ HC42 GZZ:2HC4 GZZ HC51 GZZ:1HC5 GZZ HC52 GZZ:2HC5 GZZ HC61 GZZ:1HC6 GZZ HC62 GZZ:2HC6 GZZ HC71 GZZ:1HC7 GZZ HC72 GZZ:2HC7 GZZ HC81 GZZ:1HC8 GZZ HC82 GZZ:2HC8 GZZ HN9 GZZ:9HN GZZ H101 GZZ:1H10 GZZ H102 GZZ:2H10 GZZ H111 GZZ:1H11 GZZ H112 GZZ:2H11 GZZ H121 GZZ:1H12 GZZ H122 GZZ:2H12 GZZ H131 GZZ:1H13 GZZ H132 GZZ:2H13 GZZ H141 GZZ:1H14 GZZ H142 GZZ:2H14 GZZ H151 GZZ:1H15 GZZ H152 GZZ:2H15 GZZ H161 GZZ:1H16 GZZ H162 GZZ:2H16 GZZ H171 GZZ:1H17 GZZ H172 GZZ:2H17 GZZ HN2E GZZ:EHN2 GZZ HH31 GZZ:1HH3 GZZ HH32 GZZ:2HH3 GZZ H161 H01:1H16 H01 H162 H01:2H16 H01 H163 H01:3H16 H01 H261 H01:1H26 H01 H262 H01:2H26 H01 H263 H01:3H26 H01 H481 H01:1H48 H01 H482 H01:2H48 H01 H471 H01:1H47 H01 H472 H01:2H47 H01 H461 H01:1H46 H01 H462 H01:2H46 H01 H463 H01:3H46 H01 H371 H01:1H37 H01 H372 H01:2H37 H01 H381 H01:1H38 H01 H382 H01:2H38 H01 H361 H01:1H36 H01 H362 H01:2H36 H01 H363 H01:3H36 H01 HBA1 H02:1HBA H02 HBA2 H02:2HBA H02 HBA3 H02:3HBA H02 HAA1 H02:1HAA H02 HAA2 H02:2HAA H02 HMA1 H02:1HMA H02 HMA2 H02:2HMA H02 HMA3 H02:3HMA H02 HNA H02:HN_A H02 HCB1 H02:1HCB H02 HCB2 H02:2HCB H02 HCB3 H02:3HCB H02 HMB1 H02:1HMB H02 HMB2 H02:2HMB H02 HMB3 H02:3HMB H02 HAB1 H02:1HAB H02 HAB2 H02:2HAB H02 HBB1 H02:1HBB H02 HBB2 H02:2HBB H02 HBB3 H02:3HBB H02 HNC H02:HN_C H02 HMC1 H02:1HMC H02 HMC2 H02:2HMC H02 HMC3 H02:3HMC H02 HAC1 H02:1HAC H02 HAC2 H02:2HAC H02 HBC1 H02:1HBC H02 HBC2 H02:2HBC H02 HND H02:HN_D H02 HMD1 H02:1HMD H02 HMD2 H02:2HMD H02 HMD3 H02:3HMD H02 HAD1 H02:1HAD H02 HAD2 H02:2HAD H02 HBD1 H02:1HBD H02 HBD2 H02:2HBD H02 HB1 H12:1HB H12 HB2 H12:2HB H12 HC1 H12:1HC H12 HC2 H12:2HC H12 HD1 H12:1HD H12 HD2 H12:2HD H12 HE1 H12:1HE H12 HE2 H12:2HE H12 HF1 H12:1HF H12 HF2 H12:2HF H12 H111 H12:1H11 H12 H112 H12:2H11 H12 H121 H12:1H12 H12 H122 H12:2H12 H12 H131 H12:1H13 H12 H132 H12:2H13 H12 H133 H12:3H13 H12 HB1 H16:1HB H16 HB2 H16:2HB H16 HC1 H16:1HC H16 HC2 H16:2HC H16 HD1 H16:1HD H16 HD2 H16:2HD H16 HE1 H16:1HE H16 HE2 H16:2HE H16 HF1 H16:1HF H16 HF2 H16:2HF H16 H111 H16:1H11 H16 H112 H16:2H11 H16 H121 H16:1H12 H16 H122 H16:2H12 H16 H131 H16:1H13 H16 H132 H16:2H13 H16 H133 H16:3H13 H16 HB1 H18:1HB H18 HB2 H18:2HB H18 HC1 H18:1HC H18 HC2 H18:2HC H18 HD1 H18:1HD H18 HD2 H18:2HD H18 HE1 H18:1HE H18 HE2 H18:2HE H18 HF1 H18:1HF H18 HF2 H18:2HF H18 H111 H18:1H11 H18 H112 H18:2H11 H18 H121 H18:1H12 H18 H122 H18:2H12 H18 H131 H18:1H13 H18 H132 H18:2H13 H18 H133 H18:3H13 H18 HN1A H1D:1HN H1D HN2 H1D:2HN H1D HB1 H1D:1HB H1D HB2 H1D:2HB H1D HG1 H1D:1HG H1D HG2 H1D:2HG H1D H51 H1D:1H5 H1D H52 H1D:2H5 H1D H2A1 H1L:1H2A H1L H2A2 H1L:2H2A H1L H2A3 H1L:3H2A H1L HAJ1 H1N:1HAJ H1N HAJ2 H1N:2HAJ H1N HAL1 H1N:1HAL H1N HAL2 H1N:2HAL H1N HAW1 H1N:1HAW H1N HAW2 H1N:2HAW H1N HAV1 H1N:1HAV H1N HAV2 H1N:2HAV H1N HAK1 H1N:1HAK H1N HAK2 H1N:2HAK H1N HAH1 H1N:1HAH H1N HAH2 H1N:2HAH H1N HAX1 H1N:1HAX H1N HAX2 H1N:2HAX H1N HAT1 H1N:1HAT H1N HAT2 H1N:2HAT H1N HAT3 H1N:3HAT H1N H61 H1S:1H6 H1S H62 H1S:2H6 H1S HB1 H20:1HB H20 HB2 H20:2HB H20 HC1 H20:1HC H20 HC2 H20:2HC H20 HD1 H20:1HD H20 HD2 H20:2HD H20 HE1 H20:1HE H20 HE2 H20:2HE H20 HF1 H20:1HF H20 HF2 H20:2HF H20 H121 H20:1H12 H20 H122 H20:2H12 H20 H123 H20:3H12 H20 H131 H20:1H13 H20 H132 H20:2H13 H20 H133 H20:3H13 H20 HAA1 H23:1HAA H23 HAA2 H23:2HAA H23 HAA3 H23:3HAA H23 HAI1 H23:1HAI H23 HAI2 H23:2HAI H23 HAJ1 H23:1HAJ H23 HAJ2 H23:2HAJ H23 HAK1 H23:1HAK H23 HAK2 H23:2HAK H23 HAL1 H23:1HAL H23 HAL2 H23:2HAL H23 HAM1 H23:1HAM H23 HAM2 H23:2HAM H23 HAN1 H23:1HAN H23 HAN2 H23:2HAN H23 HAO1 H23:1HAO H23 HAO2 H23:2HAO H23 HAP1 H23:1HAP H23 HAP2 H23:2HAP H23 HAQ1 H23:1HAQ H23 HAQ2 H23:2HAQ H23 HAR1 H23:1HAR H23 HAR2 H23:2HAR H23 H21A H2A:1H2 H2A H22 H2A:2H2 H2A H3'1 H2A:1H3' H2A H3'2 H2A:2H3' H2A H131 H2A:1H13 H2A H132 H2A:2H13 H2A H141 H2A:1H14 H2A H142 H2A:2H14 H2A H151 H2A:1H15 H2A H152 H2A:2H15 H2A H161 H2A:1H16 H2A H162 H2A:2H16 H2A H241 H2A:1H24 H2A H242 H2A:2H24 H2A H251 H2A:1H25 H2A H252 H2A:2H25 H2A H253 H2A:3H25 H2A H261 H2A:1H26 H2A H262 H2A:2H26 H2A H263 H2A:3H26 H2A H22 H2B:2H2 H2B H21 H2B:1H2 H2B H71 H2B:1H7 H2B H72 H2B:2H7 H2B H9O1 H2B:1H9O H2B H113 H2B:3H11 H2B H112 H2B:2H11 H2B H111 H2B:1H11 H2B H1O1 H2B:1H1O H2B H61 H2P:1H6 H2P H62 H2P:2H6 H2P H71 H2P:1H7 H2P H72 H2P:2H7 H2P H73 H2P:3H7 H2P HOP2 H2P:2HOP H2P HOP3 H2P:3HOP H2P HS1 H2S:1HS H2S HS2 H2S:2HS H2S HOP2 H2U:2HOP H2U HOP3 H2U:3HOP H2U H5' H2U:1H5* H2U H5'' H2U:2H5* H2U H4' H2U: H4* H2U H3' H2U: H3* H2U HO3' H2U:*HO3 H2U H1' H2U: H1* H2U H2' H2U: H2* H2U HO2' H2U:*HO2 H2U H51 H2U:1H5 H2U H52 H2U:2H5 H2U H61 H2U:1H6 H2U H62 H2U:2H6 H2U H151 H33:1H15 H33 H152 H33:2H15 H33 H153 H33:3H15 H33 H111 H33:1H11 H33 H112 H33:2H11 H33 H113 H33:3H11 H33 HAP1 H35:1HAP H35 HAP2 H35:2HAP H35 H61 H3S:1H6 H3S H62 H3S:2H6 H3S HN21 H4B:1HN2 H4B HN22 H4B:2HN2 H4B H71 H4B:1H7 H4B H72 H4B:2H7 H4B H111 H4B:1H11 H4B H112 H4B:2H11 H4B H113 H4B:3H11 H4B HA21 H4M:1HA2 H4M HA22 H4M:2HA2 H4M H7M1 H4M:1H7M H4M H7M2 H4M:2H7M H4M H7M3 H4M:3H7M H4M H9M1 H4M:1H9M H4M H9M2 H4M:2H9M H4M H9M3 H4M:3H9M H4M H101 H4M:1H10 H4M H102 H4M:2H10 H4M HX11 H4M:1HX1 H4M HX12 H4M:2HX1 H4M HX51 H4M:1HX5 H4M HX52 H4M:2HX5 H4M HOX2 H4M:2HOX H4M HOX3 H4M:3HOX H4M HOX4 H4M:4HOX H4M H5J1 H4M:1H5J H4M H5J2 H4M:2H5J H4M HOJ3 H4M:3HOJ H4M HOJ2 H4M:2HOJ H4M HP31 H4M:1HP3 H4M HP32 H4M:2HP3 H4M HP41 H4M:1HP4 H4M HP42 H4M:2HP4 H4M HA51 H4P:1HA5 H4P HA52 H4P:2HA5 H4P H31 H4P:1H3 H4P H32 H4P:2H3 H4P H41 H4P:1H4 H4P H42 H4P:2H4 H4P H21 H4Z:1H2 H4Z H22 H4Z:2H2 H4Z H31A H4Z:1H3 H4Z H32 H4Z:2H3 H4Z H51 H4Z:1H5 H4Z H52 H4Z:2H5 H4Z H81 H4Z:1H8 H4Z H82 H4Z:2H8 H4Z H121 H4Z:1H12 H4Z H122 H4Z:2H12 H4Z H181 H4Z:1H18 H4Z H182 H4Z:2H18 H4Z H183 H4Z:3H18 H4Z HN41 H4Z:1HN4 H4Z HN42 H4Z:2HN4 H4Z H251 H4Z:1H25 H4Z H252 H4Z:2H25 H4Z H253 H4Z:3H25 H4Z H2M1 H52:1H2M H52 H2M2 H52:2H2M H52 H2M3 H52:3H2M H52 H231 H52:1H23 H52 H232 H52:2H23 H52 H251 H52:1H25 H52 H252 H52:2H25 H52 H261 H52:1H26 H52 H262 H52:2H26 H52 H271 H52:1H27 H52 H272 H52:2H27 H52 HM1 H52:1HM H52 HM2 H52:2HM H52 HM3 H52:3HM H52 H61 H53:1H6 H53 H62 H53:2H6 H53 H H5M: HN H5M HG2 H5M:1HG H5M HG3 H5M:2HG H5M HD11 H5M:1HD1 H5M HD12 H5M:2HD1 H5M HD13 H5M:3HD1 H5M HO2' H5P:'HO2 H5P HO3' H5P:'HO3 H5P H5'1 H5P:1H5' H5P H5'2 H5P:2H5' H5P HOP2 H5P:2HOP H5P HOP3 H5P:3HOP H5P H971 H64:1H97 H64 H972 H64:2H97 H64 H973 H64:3H97 H64 H961 H64:1H96 H64 H962 H64:2H96 H64 H963 H64:3H96 H64 H931 H64:1H93 H64 H932 H64:2H93 H64 H921 H64:1H92 H64 H922 H64:2H92 H64 H911 H64:1H91 H64 H912 H64:2H91 H64 HN61 H64:1HN6 H64 HN62 H64:2HN6 H64 H'21 H64:1H'2 H64 H'22 H64:2H'2 H64 H961 H71:1H96 H71 H962 H71:2H96 H71 H963 H71:3H96 H71 H971 H71:1H97 H71 H972 H71:2H97 H71 H973 H71:3H97 H71 H931 H71:1H93 H71 H932 H71:2H93 H71 H921 H71:1H92 H71 H922 H71:2H92 H71 H911 H71:1H91 H71 H912 H71:2H91 H71 HN61 H71:1HN6 H71 HN62 H71:2HN6 H71 H'21 H71:1H'2 H71 H'22 H71:2H'2 H71 H161 H7J:1H16 H7J H162 H7J:2H16 H7J H163 H7J:3H16 H7J H271 H7J:1H27 H7J H272 H7J:2H27 H7J H273 H7J:3H27 H7J H261 H7J:1H26 H7J H262 H7J:2H26 H7J H263 H7J:3H26 H7J H1 H7J:1H H7J H2 H7J:2H H7J H3 H7J:3H H7J H51 H7J:1H5 H7J H52 H7J:2H5 H7J H91 H7J:1H9 H7J H92 H7J:2H9 H7J H93 H7J:3H9 H7J H11 H8H:1H1 H8H H12 H8H:2H1 H8H H13A H8H:3H1 H8H H31 H8H:1H3 H8H H32 H8H:2H3 H8H H41 H8H:1H4 H8H H42 H8H:2H4 H8H H61 H8H:1H6 H8H H62 H8H:2H6 H8H H71 H8H:1H7 H8H H72 H8H:2H7 H8H H141 H8H:1H14 H8H H142 H8H:2H14 H8H H151 H8H:1H15 H8H H152 H8H:2H15 H8H H171 H8H:1H17 H8H H172 H8H:2H17 H8H H181 H8H:1H18 H8H H182 H8H:2H18 H8H H251 H8H:1H25 H8H H252 H8H:2H25 H8H H371 H8H:1H37 H8H H372 H8H:2H37 H8H H381 H8H:1H38 H8H H382 H8H:2H38 H8H HN21 HA1:1HN2 HA1 HN22 HA1:2HN2 HA1 H101 HA1:1H10 HA1 H102 HA1:2H10 HA1 H111 HA1:1H11 HA1 H112 HA1:2H11 HA1 H121 HA1:1H12 HA1 H122 HA1:2H12 HA1 H131 HA1:1H13 HA1 H132 HA1:2H13 HA1 H21 HAA:1H2 HAA H22 HAA:2H2 HAA HO4' HAB:'HO4 HAB H21 HAC:1H2 HAC H22 HAC:2H2 HAC H31 HAC:1H3 HAC H32 HAC:2H3 HAC H41 HAC:1H4 HAC H42 HAC:2H4 HAC H51 HAC:1H5 HAC H52 HAC:2H5 HAC H61 HAC:1H6 HAC H62 HAC:2H6 HAC H71 HAC:1H7 HAC H72 HAC:2H7 HAC HN81 HAC:1HN8 HAC HN82 HAC:2HN8 HAC H11 HAD:1H1 HAD H12 HAD:2H1 HAD H11 HAE:1H1 HAE H12 HAE:2H1 HAE H13 HAE:3H1 HAE HN11 HAG:1HN1 HAG HN12 HAG:2HN1 HAG HB11 HAG:1HB1 HAG HB12 HAG:2HB1 HAG HG12 HAG:2HG1 HAG HG11 HAG:1HG1 HAG HN21 HAG:1HN2 HAG HB21 HAG:1HB2 HAG HB22 HAG:2HB2 HAG HN31 HAG:1HN3 HAG HA31 HAG:1HA3 HAG HA32 HAG:2HA3 HAG H421 HAG:1H42 HAG H422 HAG:2H42 HAG H451 HAG:1H45 HAG H452 HAG:2H45 HAG H461 HAG:1H46 HAG H462 HAG:2H46 HAG H471 HAG:1H47 HAG H472 HAG:2H47 HAG H481 HAG:1H48 HAG H482 HAG:2H48 HAG H491 HAG:1H49 HAG H492 HAG:2H49 HAG H493 HAG:3H49 HAG H21 HAI:1H2 HAI H22 HAI:2H2 HAI H31 HAI:1H3 HAI H32 HAI:2H3 HAI H41 HAI:1H4 HAI H42 HAI:2H4 HAI H51 HAI:1H5 HAI H52 HAI:2H5 HAI H61 HAI:1H6 HAI H62 HAI:2H6 HAI HN1 HAI:1HN HAI HN2 HAI:2HN HAI HN3 HAI:3HN HAI HC11 HAL:1HC1 HAL HC12 HAL:2HC1 HAL HC21 HAL:1HC2 HAL HC22 HAL:2HC2 HAL HC41 HAL:1HC4 HAL HC42 HAL:2HC4 HAL HC61 HAL:1HC6 HAL HC62 HAL:2HC6 HAL HC81 HAL:1HC8 HAL HC82 HAL:2HC8 HAL HC91 HAL:1HC9 HAL HC92 HAL:2HC9 HAL H101 HAL:1H10 HAL H102 HAL:2H10 HAL H5'1 HAM:1H5* HAM H5'2 HAM:2H5* HAM H4' HAM: H4* HAM H3' HAM: H3* HAM HO3' HAM:*HO3 HAM H2' HAM: H2* HAM HO2' HAM:*HO2 HAM H1' HAM: H1* HAM HN61 HAM:1HN6 HAM HN62 HAM:2HN6 HAM HN1 HAM:1HN HAM HN2 HAM:2HN HAM HN3 HAM:3HN HAM HB1 HAM:1HB HAM HB2 HAM:2HB HAM H101 HAN:1H10 HAN H102 HAN:2H10 HAN H103 HAN:3H10 HAN H111 HAN:1H11 HAN H112 HAN:2H11 HAN H113 HAN:3H11 HAN H121 HAN:1H12 HAN H122 HAN:2H12 HAN H131 HAN:1H13 HAN H132 HAN:2H13 HAN H141 HAN:1H14 HAN H142 HAN:2H14 HAN H151 HAN:1H15 HAN H152 HAN:2H15 HAN H161 HAN:1H16 HAN H162 HAN:2H16 HAN H21 HAP:1H2 HAP H22 HAP:2H2 HAP H41 HAP:1H4 HAP H42 HAP:2H4 HAP H61 HAP:1H6 HAP H62 HAP:2H6 HAP H63 HAP:3H6 HAP H71 HAP:1H7 HAP H72 HAP:2H7 HAP H73 HAP:3H7 HAP H111 HAP:1H11 HAP H112 HAP:2H11 HAP H113 HAP:3H11 HAP H121 HAP:1H12 HAP H122 HAP:2H12 HAP H HAQ:1HN HAQ H2 HAQ:2HN HAQ HA1 HAQ:1HA HAQ HB2 HAQ:1HB HAQ HB3 HAQ:2HB HAQ HG2 HAQ:1HG HAQ HG3 HAQ:2HG HAQ HA2 HAQ:1HA2 HAQ HB23 HAQ:1HB2 HAQ HB22 HAQ:2HB2 HAQ HD2 HAQ:1HD2 HAQ HE2 HAQ:1HE2 HAQ HZ HAQ:1HZ HAQ H2 HAR: HN2 HAR HB2 HAR:1HB HAR HB3 HAR:2HB HAR HG2 HAR:1HG HAR HG3 HAR:2HG HAR HD2 HAR:1HD HAR HD3 HAR:2HD HAR HMA1 HAS:1HMA HAS HMA2 HAS:2HMA HAS HMA3 HAS:3HMA HAS HAA1 HAS:1HAA HAS HAA2 HAS:2HAA HAS HBA1 HAS:1HBA HAS HBA2 HAS:2HBA HAS HMB1 HAS:1HMB HAS HMB2 HAS:2HMB HAS HMB3 HAS:3HMB HAS HMC1 HAS:1HMC HAS HMC2 HAS:2HMC HAS HMC3 HAS:3HMC HAS HBC1 HAS:1HBC HAS HBC2 HAS:2HBC HAS HAD1 HAS:1HAD HAS HAD2 HAS:2HAD HAS HBD1 HAS:1HBD HAS HBD2 HAS:2HBD HAS H121 HAS:1H12 HAS H122 HAS:2H12 HAS H131 HAS:1H13 HAS H132 HAS:2H13 HAS H161 HAS:1H16 HAS H162 HAS:2H16 HAS H171 HAS:1H17 HAS H172 HAS:2H17 HAS H201 HAS:1H20 HAS H202 HAS:2H20 HAS H211 HAS:1H21 HAS H212 HAS:2H21 HAS H241 HAS:1H24 HAS H242 HAS:2H24 HAS H251 HAS:1H25 HAS H252 HAS:2H25 HAS H253 HAS:3H25 HAS H261 HAS:1H26 HAS H262 HAS:2H26 HAS H263 HAS:3H26 HAS H271 HAS:1H27 HAS H272 HAS:2H27 HAS H273 HAS:3H27 HAS H281 HAS:1H28 HAS H282 HAS:2H28 HAS H311 HAS:1H31 HAS H312 HAS:2H31 HAS H313 HAS:3H31 HAS H321 HAS:1H32 HAS H322 HAS:2H32 HAS H323 HAS:3H32 HAS HNA1 HAV:1HNA HAV HNA2 HAV:2HNA HAV HG11 HAV:1HG1 HAV HG12 HAV:2HG1 HAV HG13 HAV:3HG1 HAV HG21 HAV:1HG2 HAV HG22 HAV:2HG2 HAV HG23 HAV:3HG2 HAV H2A HAX: AH2 HAX H61A HAX:AH61 HAX H62A HAX:AH62 HAX H8A HAX: AH8 HAX H1B HAX:AH1* HAX H2B HAX:AH2* HAX HO2A HAX:AHO2 HAX H3B HAX:AH3* HAX HOA8 HAX:8HOA HAX HOA9 HAX:9HOA HAX H4B HAX:AH4* HAX H51A HAX:AH51 HAX H52A HAX:AH52 HAX HOA2 HAX:2HOA HAX HOA5 HAX:5HOA HAX H121 HAX:1H12 HAX H122 HAX:2H12 HAX H131 HAX:1H13 HAX H132 HAX:2H13 HAX H133 HAX:3H13 HAX H141 HAX:1H14 HAX H142 HAX:2H14 HAX H143 HAX:3H14 HAX H71 HAX:1H7 HAX H72 HAX:2H7 HAX H61 HAX:1H6 HAX H62 HAX:2H6 HAX H31 HAX:1H3 HAX H32 HAX:2H3 HAX H21 HAX:1H2 HAX H22 HAX:2H2 HAX H11 HAX:1H1 HAX H12 HAX:2H1 HAX H221 HAZ:1H22 HAZ H222 HAZ:2H22 HAZ H231 HAZ:1H23 HAZ H232 HAZ:2H23 HAZ H241 HAZ:1H24 HAZ H242 HAZ:2H24 HAZ H11 HAZ:1H1 HAZ H12 HAZ:2H1 HAZ H111 HAZ:1H11 HAZ H112 HAZ:2H11 HAZ H113 HAZ:3H11 HAZ H121 HAZ:1H12 HAZ H122 HAZ:2H12 HAZ H123 HAZ:3H12 HAZ H21 HAZ:1H2 HAZ H22 HAZ:2H2 HAZ H31 HAZ:1H3 HAZ H32 HAZ:2H3 HAZ H131 HAZ:1H13 HAZ H132 HAZ:2H13 HAZ H61 HAZ:1H6 HAZ H62 HAZ:2H6 HAZ H71 HAZ:1H7 HAZ H72 HAZ:2H7 HAZ H6C1 HB1:1H6C HB1 H7C1 HB1:1H7C HB1 H8C1 HB1:1H8C HB1 H9C1 HB1:1H9C HB1 H21 HBB:1H2 HBB H22A HBB:2H2 HBB H101 HBB:1H10 HBB H102 HBB:2H10 HBB H111 HBB:1H11 HBB H112 HBB:2H11 HBB H121 HBB:1H12 HBB H122 HBB:2H12 HBB H191 HBB:1H19 HBB H192 HBB:2H19 HBB H193 HBB:3H19 HBB H271 HBB:1H27 HBB H272 HBB:2H27 HBB H301 HBB:1H30 HBB H302 HBB:2H30 HBB H303 HBB:3H30 HBB H311 HBB:1H31 HBB H312 HBB:2H31 HBB H313 HBB:3H31 HBB H181 HBB:1H18 HBB H182 HBB:2H18 HBB H183 HBB:3H18 HBB H251 HBB:1H25 HBB H252 HBB:2H25 HBB H281 HBB:1H28 HBB H282 HBB:2H28 HBB H21 HBC:1H2 HBC H31 HBC:1H3 HBC H41 HBC:1H4 HBC H51 HBC:1H5 HBC H61 HBC:1H6 HBC H71 HBC:1H7 HBC H81 HBC:1H8 HBC H82 HBC:2H8 HBC H91 HBC:1H9 HBC H92 HBC:2H9 HBC H111 HBC:1H11 HBC H112 HBC:2H11 HBC HN11 HBC:1HN1 HBC HN12 HBC:2HN1 HBC HN'1 HBD:1HN' HBD HN'2 HBD:2HN' HBD H21 HBH:1H2 HBH H22A HBH:2H2 HBH H101 HBH:1H10 HBH H102 HBH:2H10 HBH H111 HBH:1H11 HBH H112 HBH:2H11 HBH H121 HBH:1H12 HBH H122 HBH:2H12 HBH H271 HBH:1H27 HBH H272 HBH:2H27 HBH H301 HBH:1H30 HBH H302 HBH:2H30 HBH H303 HBH:3H30 HBH H311 HBH:1H31 HBH H312 HBH:2H31 HBH H313 HBH:3H31 HBH H171 HBH:1H17 HBH H172 HBH:2H17 HBH H191 HBH:1H19 HBH H192 HBH:2H19 HBH H251 HBH:1H25 HBH H252 HBH:2H25 HBH H281 HBH:1H28 HBH H282 HBH:2H28 HBH HN21 HBI:1HN2 HBI HN22 HBI:2HN2 HBI H71 HBI:1H7 HBI H72 HBI:2H7 HBI H111 HBI:1H11 HBI H112 HBI:2H11 HBI H113 HBI:3H11 HBI HN21 HBL:1HN2 HBL HN22 HBL:2HN2 HBL HC71 HBL:1HC7 HBL HC72 HBL:2HC7 HBL H101 HBL:1H10 HBL H102 HBL:2H10 HBL H103 HBL:3H10 HBL H10O HBL:OH10 HBL H201 HBM:1H20 HBM H202 HBM:2H20 HBM H211 HBM:1H21 HBM H212 HBM:2H21 HBM H301 HBM:1H30 HBM H302 HBM:2H30 HBM H303 HBM:3H30 HBM HC2 HBN: H2 HBN H HBN:1HN HBN H2 HBN:2HN HBN HB2 HBN:1HB HBN HB3 HBN:2HB HBN H9B3 HBO:3H9B HBO H9B2 HBO:2H9B HBO H9B1 HBO:1H9B HBO H10A HBP:AH10 HBP H91 HBQ:1H9 HBQ H92 HBQ:2H9 HBQ H101 HBQ:1H10 HBQ H102 HBQ:2H10 HBQ H103 HBQ:3H10 HBQ H131 HBQ:1H13 HBQ H132 HBQ:2H13 HBQ H133 HBQ:3H13 HBQ H141 HBQ:1H14 HBQ H142 HBQ:2H14 HBQ H143 HBQ:3H14 HBQ H41 HBR:1H4 HBR H42 HBR:2H4 HBR H43 HBR:3H4 HBR H11 HBR:1H1 HBR H12 HBR:2H1 HBR H13 HBR:3H1 HBR H41 HBS:1H4 HBS H42 HBS:2H4 HBS H43 HBS:3H4 HBS H11 HBS:1H1 HBS H12 HBS:2H1 HBS H13 HBS:3H1 HBS HO11 HBU:1HO1 HBU HC41 HBU:1HC4 HBU HC42 HBU:2HC4 HBU HC91 HBU:1HC9 HBU HC92 HBU:2HC9 HBU H141 HBU:1H14 HBU H151 HBU:1H15 HBU H152 HBU:2H15 HBU H153 HBU:3H15 HBU H121 HBY:1H12 HBY H122 HBY:2H12 HBY H123 HBY:3H12 HBY H111 HBY:1H11 HBY H112 HBY:2H11 HBY H113 HBY:3H11 HBY H131 HBY:1H13 HBY H132 HBY:2H13 HBY H141 HBY:1H14 HBY H142 HBY:2H14 HBY H143 HBY:3H14 HBY H151 HBY:1H15 HBY H152 HBY:2H15 HBY H153 HBY:3H15 HBY HO11 HC0:1HO1 HC0 HO12 HC0:2HO1 HC0 H33 HC0:3H3 HC0 H44 HC0:4H4 HC0 H66 HC0:6H6 HC0 H77 HC0:7H7 HC0 H88 HC0:8H8 HC0 HO11 HC1:1HO1 HC1 HO12 HC1:2HO1 HC1 HO21 HC1:1HO2 HC1 HO22 HC1:2HO2 HC1 H33 HC1:3H3 HC1 H44 HC1:4H4 HC1 H66 HC1:6H6 HC1 H77 HC1:7H7 HC1 H11 HC2:1H1 HC2 H12 HC2:2H1 HC2 H21 HC2:1H2 HC2 H22 HC2:2H2 HC2 H41 HC2:1H4 HC2 H42 HC2:2H4 HC2 H71 HC2:1H7 HC2 H72 HC2:2H7 HC2 H111 HC2:1H11 HC2 H112 HC2:2H11 HC2 H121 HC2:1H12 HC2 H122 HC2:2H12 HC2 H151 HC2:1H15 HC2 H152 HC2:2H15 HC2 H161 HC2:1H16 HC2 H162 HC2:2H16 HC2 H181 HC2:1H18 HC2 H182 HC2:2H18 HC2 H183 HC2:3H18 HC2 H191 HC2:1H19 HC2 H192 HC2:2H19 HC2 H193 HC2:3H19 HC2 H211 HC2:1H21 HC2 H212 HC2:2H21 HC2 H213 HC2:3H21 HC2 H221 HC2:1H22 HC2 H222 HC2:2H22 HC2 H231 HC2:1H23 HC2 H232 HC2:2H23 HC2 H241 HC2:1H24 HC2 H242 HC2:2H24 HC2 H261 HC2:1H26 HC2 H262 HC2:2H26 HC2 H263 HC2:3H26 HC2 H271 HC2:1H27 HC2 H272 HC2:2H27 HC2 H273 HC2:3H27 HC2 H181 HC3:1H18 HC3 H182 HC3:2H18 HC3 H183 HC3:3H18 HC3 H121 HC3:1H12 HC3 H122 HC3:2H12 HC3 H111 HC3:1H11 HC3 H112 HC3:2H11 HC3 H191 HC3:1H19 HC3 H192 HC3:2H19 HC3 H193 HC3:3H19 HC3 H11 HC3:1H1 HC3 H12 HC3:2H1 HC3 H21 HC3:1H2 HC3 H22 HC3:2H2 HC3 H41 HC3:1H4 HC3 H42 HC3:2H4 HC3 H71 HC3:1H7 HC3 H72 HC3:2H7 HC3 H151 HC3:1H15 HC3 H152 HC3:2H15 HC3 H161 HC3:1H16 HC3 H162 HC3:2H16 HC3 H211 HC3:1H21 HC3 H212 HC3:2H21 HC3 H213 HC3:3H21 HC3 H221 HC3:1H22 HC3 H222 HC3:2H22 HC3 H231 HC3:1H23 HC3 H232 HC3:2H23 HC3 H241 HC3:1H24 HC3 H242 HC3:2H24 HC3 H261 HC3:1H26 HC3 H262 HC3:2H26 HC3 H263 HC3:3H26 HC3 H271 HC3:1H27 HC3 H272 HC3:2H27 HC3 H273 HC3:3H27 HC3 HO4' HC4:'HO4 HC4 HAC1 HC5:1HAC HC5 HAC2 HC5:2HAC HC5 HAC3 HC5:3HAC HC5 HAD1 HC5:1HAD HC5 HAD2 HC5:2HAD HC5 HAE1 HC5:1HAE HC5 HAE2 HC5:2HAE HC5 HAF1 HC5:1HAF HC5 HAF2 HC5:2HAF HC5 HAG1 HC5:1HAG HC5 HAG2 HC5:2HAG HC5 HAQ1 HC5:1HAQ HC5 HAQ2 HC5:2HAQ HC5 HAO1 HC5:1HAO HC5 HAO2 HC5:2HAO HC5 HAT1 HC5:1HAT HC5 HAT2 HC5:2HAT HC5 HAT3 HC5:3HAT HC5 HAJ1 HC5:1HAJ HC5 HAJ2 HC5:2HAJ HC5 HAJ3 HC5:3HAJ HC5 HAM1 HC5:1HAM HC5 HAM2 HC5:2HAM HC5 HAM3 HC5:3HAM HC5 H21 HCA:1H2 HCA H22 HCA:2H2 HCA H41 HCA:1H4 HCA H42 HCA:2H4 HCA H51 HCA:1H5 HCA H52 HCA:2H5 HCA H201 HCB:1H20 HCB H202 HCB:2H20 HCB H203 HCB:3H20 HCB H251 HCB:1H25 HCB H252 HCB:2H25 HCB H253 HCB:3H25 HCB H261 HCB:1H26 HCB H262 HCB:2H26 HCB H291 HCB:1H29 HCB H292 HCB:2H29 HCB H301 HCB:1H30 HCB H302 HCB:2H30 HCB H311 HCB:1H31 HCB H312 HCB:2H31 HCB H331 HCB:1H33 HCB H332 HCB:2H33 HCB H351 HCB:1H35 HCB H352 HCB:2H35 HCB H353 HCB:3H35 HCB H361 HCB:1H36 HCB H362 HCB:2H36 HCB H363 HCB:3H36 HCB H371 HCB:1H37 HCB H372 HCB:2H37 HCB H401 HCB:1H40 HCB H402 HCB:2H40 HCB H411 HCB:1H41 HCB H412 HCB:2H41 HCB H421 HCB:1H42 HCB H422 HCB:2H42 HCB H451 HCB:1H45 HCB H452 HCB:2H45 HCB H461 HCB:1H46 HCB H462 HCB:2H46 HCB H463 HCB:3H46 HCB H471 HCB:1H47 HCB H472 HCB:2H47 HCB H473 HCB:3H47 HCB H481 HCB:1H48 HCB H482 HCB:2H48 HCB H491 HCB:1H49 HCB H492 HCB:2H49 HCB H521 HCB:1H52 HCB H522 HCB:2H52 HCB H531 HCB:1H53 HCB H532 HCB:2H53 HCB H533 HCB:3H53 HCB H541 HCB:1H54 HCB H542 HCB:2H54 HCB H543 HCB:3H54 HCB H551 HCB:1H55 HCB H552 HCB:2H55 HCB H561 HCB:1H56 HCB H562 HCB:2H56 HCB H601 HCB:1H60 HCB H602 HCB:2H60 HCB H621 HCB:1H62 HCB H622 HCB:2H62 HCB H1P1 HCB:1H1P HCB H1P2 HCB:2H1P HCB H3P1 HCB:1H3P HCB H3P2 HCB:2H3P HCB H3P3 HCB:3H3P HCB H5R1 HCB:1H5R HCB H5R2 HCB:2H5R HCB H3C1 HCG:1H3C HCG H3C2 HCG:2H3C HCG H4C1 HCG:1H4C HCG H4C2 HCG:2H4C HCG H7C1 HCG:1H7C HCG H7C2 HCG:2H7C HCG H141 HCG:1H14 HCG H142 HCG:2H14 HCG H161 HCG:1H16 HCG H162 HCG:2H16 HCG H21 HCI:1H2 HCI H22 HCI:2H2 HCI H31 HCI:1H3 HCI H32 HCI:2H3 HCI HMA1 HCO:1HMA HCO HMA2 HCO:2HMA HCO HMA3 HCO:3HMA HCO HAA1 HCO:1HAA HCO HAA2 HCO:2HAA HCO HBA1 HCO:1HBA HCO HBA2 HCO:2HBA HCO H3B3 HCO:3H3B HCO HMB1 HCO:1HMB HCO HMB2 HCO:2HMB HCO HMB3 HCO:3HMB HCO HBB1 HCO:1HBB HCO HBB2 HCO:2HBB HCO H3C3 HCO:3H3C HCO HMC1 HCO:1HMC HCO HMC2 HCO:2HMC HCO HMC3 HCO:3HMC HCO HBC1 HCO:1HBC HCO HBC2 HCO:2HBC HCO HMD1 HCO:1HMD HCO HMD2 HCO:2HMD HCO HMD3 HCO:3HMD HCO HAD1 HCO:1HAD HCO HAD2 HCO:2HAD HCO HBD1 HCO:1HBD HCO HBD2 HCO:2HBD HCO HA11 HCP:1HA1 HCP HA12 HCP:2HA1 HCP HB11 HCP:1HB1 HCP HB12 HCP:2HB1 HCP HB21 HCP:1HB2 HCP HB22 HCP:2HB2 HCP HA21 HCP:1HA2 HCP HA22 HCP:2HA2 HCP HC21 HCP:1HC2 HCP HC22 HCP:2HC2 HCP HC23 HCP:3HC2 HCP HC51 HCP:1HC5 HCP HC52 HCP:2HC5 HCP H181 HCR:1H18 HCR H182 HCR:2H18 HCR H183 HCR:3H18 HCR H121 HCR:1H12 HCR H122 HCR:2H12 HCR H111 HCR:1H11 HCR H112 HCR:2H11 HCR H191 HCR:1H19 HCR H192 HCR:2H19 HCR H193 HCR:3H19 HCR H11 HCR:1H1 HCR H12 HCR:2H1 HCR H21 HCR:1H2 HCR H22 HCR:2H2 HCR H41 HCR:1H4 HCR H42 HCR:2H4 HCR H151 HCR:1H15 HCR H152 HCR:2H15 HCR H161 HCR:1H16 HCR H162 HCR:2H16 HCR H211 HCR:1H21 HCR H212 HCR:2H21 HCR H213 HCR:3H21 HCR H221 HCR:1H22 HCR H222 HCR:2H22 HCR H231 HCR:1H23 HCR H232 HCR:2H23 HCR H241 HCR:1H24 HCR H242 HCR:2H24 HCR H271 HCR:1H27 HCR H272 HCR:2H27 HCR H273 HCR:3H27 HCR H261 HCR:1H26 HCR H262 HCR:2H26 HCR H263 HCR:3H26 HCR H HCS: HN HCS H2 HCS:2HN HCS HB2 HCS:1HCB HCS HB3 HCS:2HCB HCS HG2 HCS:1HCG HCS HG3 HCS:2HCG HCS HD HCS: HSD HCS H71 HCX:1H7 HCX H72 HCX:2H7 HCX H2'1 HCX:1H2* HCX H2'2 HCX:2H2* HCX H5'1 HCX:1H5* HCX H5'2 HCX:2H5* HCX H4' HCX: H4* HCX H1' HCX: H1* HCX H3' HCX: H3* HCX HB1 HDA:1HB HDA HB2 HDA:2HB HDA H071 HDB:1H07 HDB H072 HDB:2H07 HDB H111 HDB:1H11 HDB H112 HDB:2H11 HDB H161 HDB:1H16 HDB H162 HDB:2H16 HDB H171 HDB:1H17 HDB H172 HDB:2H17 HDB H71 HDC:1H7 HDC H72 HDC:2H7 HDC H61 HDC:1H6 HDC H62 HDC:2H6 HDC H31 HDC:1H3 HDC H32 HDC:2H3 HDC H21 HDC:1H2 HDC H22 HDC:2H2 HDC H2'1 HDC:1H2* HDC H2'2 HDC:2H2* HDC H3' HDC: H3* HDC H2' HDC: H2* HDC H4'1 HDC:1H4* HDC H4'2 HDC:2H4* HDC H5'1 HDC:1H5* HDC H5'2 HDC:2H5* HDC H6'1 HDC:1H6* HDC H6'2 HDC:2H6* HDC H7'1 HDC:1H7* HDC H7'2 HDC:2H7* HDC H8'1 HDC:1H8* HDC H8'2 HDC:2H8* HDC H9'1 HDC:1H9* HDC H9'2 HDC:2H9* HDC H101 HDC:1H10 HDC H102 HDC:2H10 HDC H103 HDC:3H10 HDC H131 HDC:1H13 HDC H132 HDC:2H13 HDC H133 HDC:3H13 HDC H141 HDC:1H14 HDC H142 HDC:2H14 HDC H143 HDC:3H14 HDC H121 HDC:1H12 HDC H122 HDC:2H12 HDC H11 HDC:1H1 HDC H12 HDC:2H1 HDC H4' HDC: H4* HDC H1' HDC: H1* HDC HN61 HDC:1HN6 HDC HN62 HDC:2HN6 HDC HMA1 HDD:1HMA HDD HMA2 HDD:2HMA HDD HMA3 HDD:3HMA HDD HAA1 HDD:1HAA HDD HAA2 HDD:2HAA HDD HBA1 HDD:1HBA HDD HBA2 HDD:2HBA HDD HMB1 HDD:1HMB HDD HMB2 HDD:2HMB HDD HMB3 HDD:3HMB HDD HBB1 HDD:1HBB HDD HBB2 HDD:2HBB HDD HMC1 HDD:1HMC HDD HMC2 HDD:2HMC HDD HMC3 HDD:3HMC HDD HBC1 HDD:1HBC HDD HBC2 HDD:2HBC HDD HMD1 HDD:1HMD HDD HMD2 HDD:2HMD HDD HMD3 HDD:3HMD HDD HAD1 HDD:1HAD HDD HAD2 HDD:2HAD HDD HBD1 HDD:1HBD HDD HBD2 HDD:2HBD HDD H1'1 HDF:1H1* HDF H1'2 HDF:2H1* HDF H2' HDF: H2* HDF HO2' HDF:*HO2 HDF H3' HDF: H3* HDF HO3' HDF:*HO3 HDF H4' HDF: H4* HDF HO4' HDF:*HO4 HDF H5'1 HDF:1H5* HDF H5'2 HDF:2H5* HDF HO5' HDF:*HO5 HDF H121 HDI:1H12 HDI H122 HDI:2H12 HDI H123 HDI:3H12 HDI H101 HDI:1H10 HDI H102 HDI:2H10 HDI HC81 HDI:1HC8 HDI HC82 HDI:2HC8 HDI HOP2 HDP:2HOP HDP H5'1 HDP:1H5* HDP H5'' HDP:2H5* HDP HO3' HDP:H3T HDP HOP3 HDP:3HOP HDP H11 HDR:1H1 HDR H12 HDR:2H1 HDR H21 HDR:1H2 HDR H22 HDR:2H2 HDR H31 HDR:1H3 HDR H32 HDR:2H3 HDR H41 HDR:1H4 HDR H42 HDR:2H4 HDR H51 HDR:1H5 HDR H52 HDR:2H5 HDR H61 HDR:1H6 HDR H62 HDR:2H6 HDR H71 HDR:1H7 HDR H72 HDR:2H7 HDR H81 HDR:1H8 HDR H82 HDR:2H8 HDR H91 HDR:1H9 HDR H92 HDR:2H9 HDR H101 HDR:1H10 HDR H102 HDR:2H10 HDR H111 HDR:1H11 HDR H112 HDR:2H11 HDR H121 HDR:1H12 HDR H122 HDR:2H12 HDR H131 HDR:1H13 HDR H132 HDR:2H13 HDR H141 HDR:1H14 HDR H142 HDR:2H14 HDR H151 HDR:1H15 HDR H152 HDR:2H15 HDR H161 HDR:1H16 HDR H162 HDR:2H16 HDR H163 HDR:3H16 HDR HOS2 HDR:2HOS HDR H11 HDS:1H1 HDS H12 HDS:2H1 HDS H21 HDS:1H2 HDS H22 HDS:2H2 HDS H31 HDS:1H3 HDS H32 HDS:2H3 HDS H41 HDS:1H4 HDS H42 HDS:2H4 HDS H51 HDS:1H5 HDS H52 HDS:2H5 HDS H61 HDS:1H6 HDS H62 HDS:2H6 HDS H71 HDS:1H7 HDS H72 HDS:2H7 HDS H81 HDS:1H8 HDS H82 HDS:2H8 HDS H91 HDS:1H9 HDS H92 HDS:2H9 HDS H101 HDS:1H10 HDS H102 HDS:2H10 HDS H111 HDS:1H11 HDS H112 HDS:2H11 HDS H121 HDS:1H12 HDS H122 HDS:2H12 HDS H131 HDS:1H13 HDS H132 HDS:2H13 HDS H141 HDS:1H14 HDS H142 HDS:2H14 HDS H151 HDS:1H15 HDS H152 HDS:2H15 HDS H161 HDS:1H16 HDS H162 HDS:2H16 HDS H163 HDS:3H16 HDS HOS3 HDS:3HOS HDS H241 HDT:1H24 HDT H242 HDT:2H24 HDT H191 HDU:1H19 HDU H192 HDU:2H19 HDU H193 HDU:3H19 HDU H101 HDU:1H10 HDU H102 HDU:2H10 HDU H103 HDU:3H10 HDU H101 HDY:1H10 HDY H102 HDY:2H10 HDY H103 HDY:3H10 HDY H251 HDY:1H25 HDY H252 HDY:2H25 HDY H271 HDY:1H27 HDY H272 HDY:2H27 HDY H301 HDY:1H30 HDY H302 HDY:2H30 HDY H303 HDY:3H30 HDY H291 HDY:1H29 HDY H292 HDY:2H29 HDY H293 HDY:3H29 HDY H31 HE1:1H3 HE1 H32 HE1:2H3 HE1 H41 HE1:1H4 HE1 H42 HE1:2H4 HE1 HAA1 HE2:1HAA HE2 HAA2 HE2:2HAA HE2 HAA3 HE2:3HAA HE2 HAC1 HE2:1HAC HE2 HAC2 HE2:2HAC HE2 HAE1 HE2:1HAE HE2 HAE2 HE2:2HAE HE2 HAG1 HE2:1HAG HE2 HAG2 HE2:2HAG HE2 HAF1 HE2:1HAF HE2 HAF2 HE2:2HAF HE2 HAD1 HE2:1HAD HE2 HAD2 HE2:2HAD HE2 H91 HE3:1H9 HE3 H92 HE3:2H9 HE3 H93 HE3:3H9 HE3 HM21 HE3:1HM2 HE3 HM22 HE3:2HM2 HE3 HM23 HE3:3HM2 HE3 H7'1 HE3:1H7' HE3 H7'2 HE3:2H7' HE3 HM41 HE3:1HM4 HE3 HM42 HE3:2HM4 HE3 HM43 HE3:3HM4 HE3 H61 HE3:1H6 HE3 H62 HE3:2H6 HE3 H71 HE3:1H7 HE3 H72 HE3:2H7 HE3 HAA1 HE4:1HAA HE4 HAA2 HE4:2HAA HE4 HAA3 HE4:3HAA HE4 HAC1 HE4:1HAC HE4 HAC2 HE4:2HAC HE4 HAE1 HE4:1HAE HE4 HAE2 HE4:2HAE HE4 HAG1 HE4:1HAG HE4 HAG2 HE4:2HAG HE4 HAH1 HE4:1HAH HE4 HAH2 HE4:2HAH HE4 HAF1 HE4:1HAF HE4 HAF2 HE4:2HAF HE4 HAD1 HE4:1HAD HE4 HAD2 HE4:2HAD HE4 H401 HE5:1H40 HE5 H402 HE5:2H40 HE5 H403 HE5:3H40 HE5 HBA1 HE5:1HBA HE5 HBA2 HE5:2HBA HE5 HAA1 HE5:1HAA HE5 HAA2 HE5:2HAA HE5 HMA1 HE5:1HMA HE5 HMA2 HE5:2HMA HE5 HMA3 HE5:3HMA HE5 H2B1 HE5:1H2B HE5 H2B2 HE5:2H2B HE5 HAB1 HE5:1HAB HE5 HAB2 HE5:2HAB HE5 HAB3 HE5:3HAB HE5 HAC1 HE5:1HAC HE5 HAC2 HE5:2HAC HE5 HAC3 HE5:3HAC HE5 HMD1 HE5:1HMD HE5 HMD2 HE5:2HMD HE5 HMD3 HE5:3HMD HE5 HAD1 HE5:1HAD HE5 HAD2 HE5:2HAD HE5 HBD1 HE5:1HBD HE5 HBD2 HE5:2HBD HE5 H411 HE5:1H41 HE5 H412 HE5:2H41 HE5 H413 HE5:3H41 HE5 HMA1 HE6:1HMA HE6 HMA2 HE6:2HMA HE6 HMA3 HE6:3HMA HE6 HMB1 HE6:1HMB HE6 HMB2 HE6:2HMB HE6 HMB3 HE6:3HMB HE6 HNB1 HE6:1HNB HE6 HNB2 HE6:2HNB HE6 HNB3 HE6:3HNB HE6 HMC1 HE6:1HMC HE6 HMC2 HE6:2HMC HE6 HMC3 HE6:3HMC HE6 HNC1 HE6:1HNC HE6 HNC2 HE6:2HNC HE6 HNC3 HE6:3HNC HE6 HMD1 HE6:1HMD HE6 HMD2 HE6:2HMD HE6 HMD3 HE6:3HMD HE6 HAA1 HEA:1HAA HEA HAA2 HEA:2HAA HEA HBA1 HEA:1HBA HEA HBA2 HEA:2HBA HEA HMB1 HEA:1HMB HEA HMB2 HEA:2HMB HEA HMB3 HEA:3HMB HEA HMC1 HEA:1HMC HEA HMC2 HEA:2HMC HEA HMC3 HEA:3HMC HEA HBC1 HEA:1HBC HEA HBC2 HEA:2HBC HEA HMD1 HEA:1HMD HEA HMD2 HEA:2HMD HEA HMD3 HEA:3HMD HEA HAD1 HEA:1HAD HEA HAD2 HEA:2HAD HEA HBD1 HEA:1HBD HEA HBD2 HEA:2HBD HEA H121 HEA:1H12 HEA H122 HEA:2H12 HEA H131 HEA:1H13 HEA H132 HEA:2H13 HEA H161 HEA:1H16 HEA H162 HEA:2H16 HEA H171 HEA:1H17 HEA H172 HEA:2H17 HEA H201 HEA:1H20 HEA H202 HEA:2H20 HEA H211 HEA:1H21 HEA H212 HEA:2H21 HEA H241 HEA:1H24 HEA H242 HEA:2H24 HEA H243 HEA:3H24 HEA H251 HEA:1H25 HEA H252 HEA:2H25 HEA H253 HEA:3H25 HEA H261 HEA:1H26 HEA H262 HEA:2H26 HEA H263 HEA:3H26 HEA H271 HEA:1H27 HEA H272 HEA:2H27 HEA H273 HEA:3H27 HEA HMA1 HEB:1HMA HEB HMA2 HEB:2HMA HEB HMA3 HEB:3HMA HEB HAA1 HEB:1HAA HEB HAA2 HEB:2HAA HEB HBA1 HEB:1HBA HEB HBA2 HEB:2HBA HEB HMB1 HEB:1HMB HEB HMB2 HEB:2HMB HEB HMB3 HEB:3HMB HEB HAB2 HEB:2HAB HEB HBB1 HEB:1HBB HEB HBB2 HEB:2HBB HEB HBB3 HEB:3HBB HEB HMC1 HEB:1HMC HEB HMC2 HEB:2HMC HEB HMC3 HEB:3HMC HEB HBC1 HEB:1HBC HEB HBC2 HEB:2HBC HEB HMD1 HEB:1HMD HEB HMD2 HEB:2HMD HEB HMD3 HEB:3HMD HEB HAD1 HEB:1HAD HEB HAD2 HEB:2HAD HEB HBD1 HEB:1HBD HEB HBD2 HEB:2HBD HEB HMA1 HEC:1HMA HEC HMA2 HEC:2HMA HEC HMA3 HEC:3HMA HEC HAA1 HEC:1HAA HEC HAA2 HEC:2HAA HEC HBA1 HEC:1HBA HEC HBA2 HEC:2HBA HEC HMB1 HEC:1HMB HEC HMB2 HEC:2HMB HEC HMB3 HEC:3HMB HEC HBB1 HEC:1HBB HEC HBB2 HEC:2HBB HEC HBB3 HEC:3HBB HEC HMC1 HEC:1HMC HEC HMC2 HEC:2HMC HEC HMC3 HEC:3HMC HEC HBC1 HEC:1HBC HEC HBC2 HEC:2HBC HEC HBC3 HEC:3HBC HEC HMD1 HEC:1HMD HEC HMD2 HEC:2HMD HEC HMD3 HEC:3HMD HEC HAD1 HEC:1HAD HEC HAD2 HEC:2HAD HEC HBD1 HEC:1HBD HEC HBD2 HEC:2HBD HEC H11 HED:1H1 HED H12 HED:2H1 HED H21 HED:1H2 HED H22 HED:2H2 HED H51 HED:1H5 HED H52 HED:2H5 HED H61 HED:1H6 HED H62 HED:2H6 HED H11 HEE:1H1 HEE H12 HEE:2H1 HEE H21 HEE:1H2 HEE H22 HEE:2H2 HEE H31 HEE:1H3 HEE H32 HEE:2H3 HEE H41 HEE:1H4 HEE H42 HEE:2H4 HEE H51 HEE:1H5 HEE H52 HEE:2H5 HEE H61 HEE:1H6 HEE H62 HEE:2H6 HEE H63 HEE:3H6 HEE HOP3 HEE:3HOP HEE H1'1 HEE:1H1' HEE H1'2 HEE:2H1' HEE H2'1 HEE:1H2' HEE H2'2 HEE:2H2' HEE H2'3 HEE:3H2' HEE HM51 HEF:1HM5 HEF HM52 HEF:2HM5 HEF HM53 HEF:3HM5 HEF HM1 HEF:1HM HEF HM2 HEF:2HM HEF HE11 HEF:1HE1 HEF HE12 HEF:2HE1 HEF HE21 HEF:1HE2 HEF HE22 HEF:2HE2 HEF HMA1 HEG:1HMA HEG HMA2 HEG:2HMA HEG HMA3 HEG:3HMA HEG HAA1 HEG:1HAA HEG HAA2 HEG:2HAA HEG HBA1 HEG:1HBA HEG HBA2 HEG:2HBA HEG HMB1 HEG:1HMB HEG HMB2 HEG:2HMB HEG HMB3 HEG:3HMB HEG HBB1 HEG:1HBB HEG HBB2 HEG:2HBB HEG HMC1 HEG:1HMC HEG HMC2 HEG:2HMC HEG HMC3 HEG:3HMC HEG HBC1 HEG:1HBC HEG HBC2 HEG:2HBC HEG HMD1 HEG:1HMD HEG HMD2 HEG:2HMD HEG HMD3 HEG:3HMD HEG HAD1 HEG:1HAD HEG HAD2 HEG:2HAD HEG HBD1 HEG:1HBD HEG HBD2 HEG:2HBD HEG HMA1 HEH:1HMA HEH HMA2 HEH:2HMA HEH HMA3 HEH:3HMA HEH HE6' HEH:HE6* HEH HE2' HEH:HE2* HEH HM11 HEH:1HM1 HEH HM12 HEH:2HM1 HEH HM13 HEH:3HM1 HEH HE3' HEH:HE3* HEH HE4' HEH:HE4* HEH HG21 HEH:1HG2 HEH HG22 HEH:2HG2 HEH HG23 HEH:3HG2 HEH HG31 HEH:1HG3 HEH HG32 HEH:2HG3 HEH HG33 HEH:3HG3 HEH HE5' HEH:HE5* HEH HF6' HEH:HF6* HEH HF2' HEH:HF2* HEH HF3' HEH:HF3* HEH HK51 HEH:1HK5 HEH HK52 HEH:2HK5 HEH HK53 HEH:3HK5 HEH HK61 HEH:1HK6 HEH HK62 HEH:2HK6 HEH HK63 HEH:3HK6 HEH HM41 HEH:1HM4 HEH HM42 HEH:2HM4 HEH HM43 HEH:3HM4 HEH HF5' HEH:HF5* HEH HMB1 HEH:1HMB HEH HMB2 HEH:2HMB HEH HMB3 HEH:3HMB HEH HMC1 HEH:1HMC HEH HMC2 HEH:2HMC HEH HMC3 HEH:3HMC HEH H111 HEL:1H11 HEL H112 HEL:2H11 HEL H121 HEL:1H12 HEL H122 HEL:2H12 HEL H131 HEL:1H13 HEL H132 HEL:2H13 HEL H141 HEL:1H14 HEL H142 HEL:2H14 HEL H221 HEL:1H22 HEL H222 HEL:2H22 HEL H231 HEL:1H23 HEL H232 HEL:2H23 HEL H233 HEL:3H23 HEL H241 HEL:1H24 HEL H242 HEL:2H24 HEL H243 HEL:3H24 HEL H251 HEL:1H25 HEL H252 HEL:2H25 HEL H253 HEL:3H25 HEL HMA1 HEM:1HMA HEM HMA2 HEM:2HMA HEM HMA3 HEM:3HMA HEM HAA1 HEM:1HAA HEM HAA2 HEM:2HAA HEM HBA1 HEM:1HBA HEM HBA2 HEM:2HBA HEM HMB1 HEM:1HMB HEM HMB2 HEM:2HMB HEM HMB3 HEM:3HMB HEM HBB1 HEM:1HBB HEM HBB2 HEM:2HBB HEM HMC1 HEM:1HMC HEM HMC2 HEM:2HMC HEM HMC3 HEM:3HMC HEM HBC1 HEM:1HBC HEM HBC2 HEM:2HBC HEM HMD1 HEM:1HMD HEM HMD2 HEM:2HMD HEM HMD3 HEM:3HMD HEM HAD1 HEM:1HAD HEM HAD2 HEM:2HAD HEM HBD1 HEM:1HBD HEM HBD2 HEM:2HBD HEM H2A1 HEN:1H2A HEN H2A2 HEN:2H2A HEN H2A3 HEN:3H2A HEN H4A1 HEN:1H4A HEN H4A2 HEN:2H4A HEN H5A1 HEN:1H5A HEN H5A2 HEN:2H5A HEN HP1O HEN:OHP1 HEN HP3O HEN:OHP3 HEN H2BO HEN:OH2B HEN HBIC HEN:CHBI HEN HGIC HEN:CHGI HEN HCE1 HEN:1HCE HEN HCEC HEN:CHCE HEN HG1O HEN:OHG1 HEN HG2O HEN:OHG2 HEN HA1 HEO:1HA HEO HA2 HEO:2HA HEO HA3 HEO:3HA HEO HAA1 HEO:1HAA HEO HAA2 HEO:2HAA HEO HBA1 HEO:1HBA HEO HBA2 HEO:2HBA HEO HMB1 HEO:1HMB HEO HMB2 HEO:2HMB HEO HMB3 HEO:3HMB HEO HMC1 HEO:1HMC HEO HMC2 HEO:2HMC HEO HMC3 HEO:3HMC HEO HBC1 HEO:1HBC HEO HBC2 HEO:2HBC HEO HMD1 HEO:1HMD HEO HMD2 HEO:2HMD HEO HMD3 HEO:3HMD HEO HAD1 HEO:1HAD HEO HAD2 HEO:2HAD HEO HBD1 HEO:1HBD HEO HBD2 HEO:2HBD HEO H121 HEO:1H12 HEO H122 HEO:2H12 HEO H131 HEO:1H13 HEO H132 HEO:2H13 HEO H161 HEO:1H16 HEO H162 HEO:2H16 HEO H171 HEO:1H17 HEO H172 HEO:2H17 HEO H201 HEO:1H20 HEO H202 HEO:2H20 HEO H211 HEO:1H21 HEO H212 HEO:2H21 HEO H241 HEO:1H24 HEO H242 HEO:2H24 HEO H243 HEO:3H24 HEO H251 HEO:1H25 HEO H252 HEO:2H25 HEO H253 HEO:3H25 HEO H261 HEO:1H26 HEO H262 HEO:2H26 HEO H263 HEO:3H26 HEO H271 HEO:1H27 HEO H272 HEO:2H27 HEO H273 HEO:3H27 HEO H21 HEP:1H2 HEP H22 HEP:2H2 HEP H31 HEP:1H3 HEP H32 HEP:2H3 HEP H41 HEP:1H4 HEP H42 HEP:2H4 HEP H51 HEP:1H5 HEP H52 HEP:2H5 HEP H53 HEP:3H5 HEP H131 HEP:1H13 HEP H132 HEP:2H13 HEP H141 HEP:1H14 HEP H142 HEP:2H14 HEP HOP2 HEP:2HOP HEP H321 HEQ:1H32 HEQ H322 HEQ:2H32 HEQ H323 HEQ:3H32 HEQ H311 HEQ:1H31 HEQ H312 HEQ:2H31 HEQ H313 HEQ:3H31 HEQ HC21 HEQ:1HC2 HEQ HC22 HEQ:2HC2 HEQ HC31 HEQ:1HC3 HEQ HO31 HEQ:1HO3 HEQ HC41 HEQ:1HC4 HEQ HC42 HEQ:2HC4 HEQ H331 HEQ:1H33 HEQ H332 HEQ:2H33 HEQ H333 HEQ:3H33 HEQ HC71 HEQ:1HC7 HEQ HC81 HEQ:1HC8 HEQ H341 HEQ:1H34 HEQ H342 HEQ:2H34 HEQ H343 HEQ:3H34 HEQ H101 HEQ:1H10 HEQ H111 HEQ:1H11 HEQ H121 HEQ:1H12 HEQ H351 HEQ:1H35 HEQ H352 HEQ:2H35 HEQ H353 HEQ:3H35 HEQ H141 HEQ:1H14 HEQ H151 HEQ:1H15 HEQ H161 HEQ:1H16 HEQ H171 HEQ:1H17 HEQ H361 HEQ:1H36 HEQ H362 HEQ:2H36 HEQ H363 HEQ:3H36 HEQ H191 HEQ:1H19 HEQ H201 HEQ:1H20 HEQ H211 HEQ:1H21 HEQ H371 HEQ:1H37 HEQ H372 HEQ:2H37 HEQ H373 HEQ:3H37 HEQ H231 HEQ:1H23 HEQ H242 HEQ:2H24 HEQ H381 HEQ:1H38 HEQ H382 HEQ:2H38 HEQ H383 HEQ:3H38 HEQ H281 HEQ:1H28 HEQ H282 HEQ:2H28 HEQ H291 HEQ:1H29 HEQ H292 HEQ:2H29 HEQ H401 HEQ:1H40 HEQ H402 HEQ:2H40 HEQ H403 HEQ:3H40 HEQ H391 HEQ:1H39 HEQ H392 HEQ:2H39 HEQ H393 HEQ:3H39 HEQ HMA1 HES:1HMA HES HMA2 HES:2HMA HES HMA3 HES:3HMA HES HAA1 HES:1HAA HES HAA2 HES:2HAA HES HBA1 HES:1HBA HES HBA2 HES:2HBA HES HMB1 HES:1HMB HES HMB2 HES:2HMB HES HMB3 HES:3HMB HES HBB1 HES:1HBB HES HBB2 HES:2HBB HES HBB3 HES:3HBB HES HMC1 HES:1HMC HES HMC2 HES:2HMC HES HMC3 HES:3HMC HES HBC1 HES:1HBC HES HBC2 HES:2HBC HES HBC3 HES:3HBC HES HMD1 HES:1HMD HES HMD2 HES:2HMD HES HMD3 HES:3HMD HES HAD1 HES:1HAD HES HAD2 HES:2HAD HES HBD1 HES:1HBD HES HBD2 HES:2HBD HES H1A1 HET:1H1A HET H1A2 HET:2H1A HET HT01 HET:1HT0 HET HT02 HET:2HT0 HET HA21 HET:1HA2 HET HA22 HET:2HA2 HET HA23 HET:3HA2 HET HA31 HET:1HA3 HET HA32 HET:2HA3 HET HA33 HET:3HA3 HET HS21 HET:1HS2 HET HS22 HET:2HS2 HET HS31 HET:1HS3 HET HS32 HET:2HS3 HET HS41 HET:1HS4 HET HS42 HET:2HS4 HET HS51 HET:1HS5 HET HS52 HET:2HS5 HET HOP2 HEU:2HOP HEU H5' HEU:1H5* HEU H5'' HEU:2H5* HEU H4' HEU: H4* HEU H1' HEU: H1* HEU H71 HEU:1H7 HEU H72 HEU:2H7 HEU H81 HEU:1H8 HEU H82 HEU:2H8 HEU H3' HEU: H3* HEU H2' HEU:1H2* HEU H2'' HEU:2H2* HEU HO3' HEU:H3T HEU HOP3 HEU:3HOP HEU HMA1 HEV:1HMA HEV HMA2 HEV:2HMA HEV HMA3 HEV:3HMA HEV HAA1 HEV:1HAA HEV HAA2 HEV:2HAA HEV HBA1 HEV:1HBA HEV HBA2 HEV:2HBA HEV HM11 HEV:1HM1 HEV HM12 HEV:2HM1 HEV HBB1 HEV:1HBB HEV HBB2 HEV:2HBB HEV HM21 HEV:1HM2 HEV HM22 HEV:2HM2 HEV HBC1 HEV:1HBC HEV HBC2 HEV:2HBC HEV HMD1 HEV:1HMD HEV HMD2 HEV:2HMD HEV HMD3 HEV:3HMD HEV HAD1 HEV:1HAD HEV HAD2 HEV:2HAD HEV HBD1 HEV:1HBD HEV HBD2 HEV:2HBD HEV H11 HEX:1H1 HEX H12 HEX:2H1 HEX H13 HEX:3H1 HEX H21 HEX:1H2 HEX H22 HEX:2H2 HEX H31 HEX:1H3 HEX H32 HEX:2H3 HEX H41 HEX:1H4 HEX H42 HEX:2H4 HEX H51 HEX:1H5 HEX H52 HEX:2H5 HEX H61 HEX:1H6 HEX H62 HEX:2H6 HEX H63 HEX:3H6 HEX H2A1 HEY:1H2A HEY H2A2 HEY:2H2A HEY H2A3 HEY:3H2A HEY H4A1 HEY:1H4A HEY H4A2 HEY:2H4A HEY H5A1 HEY:1H5A HEY H5A2 HEY:2H5A HEY HGI1 HEY:1HGI HEY HGI2 HEY:2HGI HEY HEI1 HEY:1HEI HEY HEI2 HEY:2HEI HEY H11 HEZ:1H1 HEZ H12 HEZ:2H1 HEZ H21 HEZ:1H2 HEZ H22 HEZ:2H2 HEZ H31 HEZ:1H3 HEZ H32 HEZ:2H3 HEZ H41 HEZ:1H4 HEZ H42 HEZ:2H4 HEZ H51 HEZ:1H5 HEZ H52 HEZ:2H5 HEZ H61 HEZ:1H6 HEZ H62 HEZ:2H6 HEZ H31 HF1:1H3 HF1 H32 HF1:2H3 HF1 H41 HF1:1H4 HF1 H42 HF1:2H4 HF1 HB31 HF3:1HB3 HF3 HB11 HF3:1HB1 HF3 HB21 HF3:1HB2 HF3 HA21 HF3:1HA2 HF3 HA11 HF3:1HA1 HF3 HC11 HF3:1HC1 HF3 HC21 HF3:1HC2 HF3 HA11 HF5:1HA1 HF5 HB11 HF5:1HB1 HF5 HB21 HF5:1HB2 HF5 HB31 HF5:1HB3 HF5 HC11 HF5:1HC1 HF5 HC21 HF5:1HC2 HF5 HD11 HF5:1HD1 HF5 HD21 HF5:1HD2 HF5 HE11 HF5:1HE1 HF5 HE21 HF5:1HE2 HF5 HE31 HF5:1HE3 HF5 HE41 HF5:1HE4 HF5 HB1 HFA:1HB HFA HB2 HFA:2HB HFA H151 HFL:1H15 HFL H152 HFL:2H15 HFL H153 HFL:3H15 HFL HMA1 HFM:1HMA HFM HMA2 HFM:2HMA HFM HMA3 HFM:3HMA HFM HAA1 HFM:1HAA HFM HAA2 HFM:2HAA HFM HBA1 HFM:1HBA HFM HBA2 HFM:2HBA HFM HMB1 HFM:1HMB HFM HMB2 HFM:2HMB HFM HMB3 HFM:3HMB HFM H3C3 HFM:3H3C HFM HMC1 HFM:1HMC HFM HMC2 HFM:2HMC HFM HMC3 HFM:3HMC HFM HBC1 HFM:1HBC HFM HBC2 HFM:2HBC HFM HMD1 HFM:1HMD HFM HMD2 HFM:2HMD HFM HMD3 HFM:3HMD HFM HAD1 HFM:1HAD HFM HAD2 HFM:2HAD HFM HBD1 HFM:1HBD HFM HBD2 HFM:2HBD HFM H21 HFP:1H2 HFP H22 HFP:2H2 HFP H41 HFP:1H4 HFP H42 HFP:2H4 HFP H43 HFP:3H4 HFP H51 HFP:1H5 HFP H52 HFP:2H5 HFP H61 HFP:1H6 HFP H62 HFP:2H6 HFP H71 HFP:1H7 HFP H72 HFP:2H7 HFP H91 HFP:1H9 HFP H92 HFP:2H9 HFP H93 HFP:3H9 HFP H101 HFP:1H10 HFP H102 HFP:2H10 HFP H111 HFP:1H11 HFP H112 HFP:2H11 HFP H121 HFP:1H12 HFP H122 HFP:2H12 HFP H141 HFP:1H14 HFP H142 HFP:2H14 HFP H143 HFP:3H14 HFP H151 HFP:1H15 HFP H152 HFP:2H15 HFP H153 HFP:3H15 HFP H101 HFS:1H10 HFS H102 HFS:2H10 HFS H111 HFS:1H11 HFS H112 HFS:2H11 HFS H121 HFS:1H12 HFS H122 HFS:2H12 HFS H131 HFS:1H13 HFS H132 HFS:2H13 HFS H141 HFS:1H14 HFS H142 HFS:2H14 HFS H121 HFT:1H12 HFT H122 HFT:2H12 HFT H123 HFT:3H12 HFT H131 HFT:1H13 HFT H132 HFT:2H13 HFT H133 HFT:3H13 HFT H141 HFV:1H14 HFV H142 HFV:2H14 HFV H3C1 HFV:1H3C HFV H3C2 HFV:2H3C HFV H4C1 HFV:1H4C HFV H4C2 HFV:2H4C HFV H7C1 HFV:1H7C HFV H7C2 HFV:2H7C HFV H161 HFV:1H16 HFV H162 HFV:2H16 HFV H91 HG9:1H9 HG9 H92 HG9:2H9 HG9 H121 HG9:1H12 HG9 H122 HG9:2H12 HG9 H151 HG9:1H15 HG9 H152 HG9:2H15 HG9 H181 HG9:1H18 HG9 H182 HG9:2H18 HG9 H211 HG9:1H21 HG9 H212 HG9:2H21 HG9 H241 HG9:1H24 HG9 H242 HG9:2H24 HG9 H271 HG9:1H27 HG9 H272 HG9:2H27 HG9 H351 HG9:1H35 HG9 H352 HG9:2H35 HG9 H361 HG9:1H36 HG9 H362 HG9:2H36 HG9 H431 HG9:1H43 HG9 H432 HG9:2H43 HG9 H601 HG9:1H60 HG9 H602 HG9:2H60 HG9 H11 HG9:1H1 HG9 H12 HG9:2H1 HG9 H13 HG9:3H1 HG9 HN1 HGA:1HN HGA HN2 HGA:2HN HGA HB1 HGA:1HB HGA HB2 HGA:2HB HGA HG1 HGA:1HG HGA HG2 HGA:2HG HGA HO11 HGB:1HO1 HGB HO31 HGB:1HO3 HGB H121 HGP:1H12 HGP H122 HGP:2H12 HGP H131 HGP:1H13 HGP H132 HGP:2H13 HGP H141 HGP:1H14 HGP H142 HGP:2H14 HGP H151 HGP:1H15 HGP H152 HGP:2H15 HGP H161 HGP:1H16 HGP H162 HGP:2H16 HGP H171 HGP:1H17 HGP H172 HGP:2H17 HGP H181 HGP:1H18 HGP H182 HGP:2H18 HGP H191 HGP:1H19 HGP H192 HGP:2H19 HGP H201 HGP:1H20 HGP H202 HGP:2H20 HGP H211 HGP:1H21 HGP H212 HGP:2H21 HGP H221 HGP:1H22 HGP H222 HGP:2H22 HGP H231 HGP:1H23 HGP H232 HGP:2H23 HGP H241 HGP:1H24 HGP H242 HGP:2H24 HGP H251 HGP:1H25 HGP H252 HGP:2H25 HGP H261 HGP:1H26 HGP H262 HGP:2H26 HGP H263 HGP:3H26 HGP H31 HGP:1H3 HGP H32 HGP:2H3 HGP H11 HGP:1H1 HGP H12 HGP:2H1 HGP H321 HGP:1H32 HGP H322 HGP:2H32 HGP H331 HGP:1H33 HGP H332 HGP:2H33 HGP H341 HGP:1H34 HGP H342 HGP:2H34 HGP H351 HGP:1H35 HGP H352 HGP:2H35 HGP H361 HGP:1H36 HGP H362 HGP:2H36 HGP H371 HGP:1H37 HGP H372 HGP:2H37 HGP H381 HGP:1H38 HGP H382 HGP:2H38 HGP H391 HGP:1H39 HGP H392 HGP:2H39 HGP H401 HGP:1H40 HGP H402 HGP:2H40 HGP H421 HGP:1H42 HGP H422 HGP:2H42 HGP H431 HGP:1H43 HGP H432 HGP:2H43 HGP H441 HGP:1H44 HGP H442 HGP:2H44 HGP H41 HGP:1H4 HGP H42 HGP:2H4 HGP H51 HGP:1H5 HGP H52 HGP:2H5 HGP H61 HGP:1H6 HGP H62 HGP:2H6 HGP H63 HGP:3H6 HGP H71 HGP:1H7 HGP H72 HGP:2H7 HGP H73 HGP:3H7 HGP H81 HGP:1H8 HGP H82 HGP:2H8 HGP H83 HGP:3H8 HGP H91 HGP:1H9 HGP H92 HGP:2H9 HGP H93 HGP:3H9 HGP HN21 HGT:1HN2 HGT HN22 HGT:2HN2 HGT H261 HGT:1H26 HGT H262 HGT:2H26 HGT H221 HGT:1H22 HGT H222 HGT:2H22 HGT H211 HGT:1H21 HGT H212 HGT:2H21 HGT HN21 HGU:1HN2 HGU HN22 HGU:2HN2 HGU H121 HGX:1H12 HGX H122 HGX:2H12 HGX H131 HGX:1H13 HGX H132 HGX:2H13 HGX H141 HGX:1H14 HGX H142 HGX:2H14 HGX H151 HGX:1H15 HGX H152 HGX:2H15 HGX H161 HGX:1H16 HGX H162 HGX:2H16 HGX H171 HGX:1H17 HGX H172 HGX:2H17 HGX H181 HGX:1H18 HGX H182 HGX:2H18 HGX H191 HGX:1H19 HGX H192 HGX:2H19 HGX H201 HGX:1H20 HGX H202 HGX:2H20 HGX H211 HGX:1H21 HGX H212 HGX:2H21 HGX H221 HGX:1H22 HGX H222 HGX:2H22 HGX H231 HGX:1H23 HGX H232 HGX:2H23 HGX H233 HGX:3H23 HGX H31 HGX:1H3 HGX H32 HGX:2H3 HGX H11 HGX:1H1 HGX H12 HGX:2H1 HGX H321 HGX:1H32 HGX H322 HGX:2H32 HGX H331 HGX:1H33 HGX H332 HGX:2H33 HGX H341 HGX:1H34 HGX H342 HGX:2H34 HGX H351 HGX:1H35 HGX H352 HGX:2H35 HGX H361 HGX:1H36 HGX H362 HGX:2H36 HGX H371 HGX:1H37 HGX H372 HGX:2H37 HGX H381 HGX:1H38 HGX H382 HGX:2H38 HGX H391 HGX:1H39 HGX H392 HGX:2H39 HGX H401 HGX:1H40 HGX H402 HGX:2H40 HGX H421 HGX:1H42 HGX H422 HGX:2H42 HGX H431 HGX:1H43 HGX H432 HGX:2H43 HGX H441 HGX:1H44 HGX H442 HGX:2H44 HGX H451 HGX:1H45 HGX H452 HGX:2H45 HGX H461 HGX:1H46 HGX H462 HGX:2H46 HGX H471 HGX:1H47 HGX H472 HGX:2H47 HGX H481 HGX:1H48 HGX H482 HGX:2H48 HGX H483 HGX:3H48 HGX H41 HGX:1H4 HGX H42 HGX:2H4 HGX H51 HGX:1H5 HGX H52 HGX:2H5 HGX H61 HGX:1H6 HGX H62 HGX:2H6 HGX H63 HGX:3H6 HGX H71 HGX:1H7 HGX H72 HGX:2H7 HGX H73 HGX:3H7 HGX H81 HGX:1H8 HGX H82 HGX:2H8 HGX H83 HGX:3H8 HGX H081 HH1:1H08 HH1 H082 HH1:2H08 HH1 H101 HH1:1H10 HH1 H102 HH1:2H10 HH1 H201 HH1:1H20 HH1 H202 HH1:2H20 HH1 H491 HH1:1H49 HH1 H492 HH1:2H49 HH1 H361 HH1:1H36 HH1 H362 HH1:2H36 HH1 H451 HH1:1H45 HH1 H452 HH1:2H45 HH1 H471 HH1:1H47 HH1 H472 HH1:2H47 HH1 H481 HH1:1H48 HH1 H482 HH1:2H48 HH1 HN11 HH1:1HN1 HH1 HN12 HH1:2HN1 HH1 H31 HH2:1H3 HH2 HN61 HH2:1HN6 HH2 HN62 HH2:2HN6 HH2 H111 HH2:1H11 HH2 H112 HH2:2H11 HH2 HOP2 HH2:2HOP HH2 HOP5 HH2:5HOP HH2 HOP6 HH2:6HOP HH2 HN21 HHA:1HN2 HHA HN22 HHA:2HN2 HHA H11 HHG:1H1 HHG H12 HHG:2H1 HHG H31 HHG:1H3 HHG H32 HHG:2H3 HHG H51 HHG:1H5 HHG H52 HHG:2H5 HHG H61 HHG:1H6 HHG H62 HHG:2H6 HHG H71 HHG:1H7 HHG H72 HHG:2H7 HHG H81 HHG:1H8 HHG H82 HHG:2H8 HHG H91 HHG:1H9 HHG H92 HHG:2H9 HHG H93 HHG:3H9 HHG H2 HHK: HN2 HHK HB2 HHK:2HB HHK HB3 HHK:1HB HHK HG2 HHK:2HG HHK HG3 HHK:1HG HHK HD2 HHK:2HD HHK HD3 HHK:1HD HHK HE2 HHK:2HE HHK HE3 HHK:3HE HHK HZ2 HHK:2HZ HHK HZ3 HHK:1HZ HHK HT2 HHK:2HT HHK HT1 HHK:1HT HHK HH1 HHK:1HH HHK HH2 HHK:2HH HHK H1 HHO:1H HHO H2 HHO:2H HHO H11 HHO:1H1 HHO H12 HHO:2H1 HHO H21 HHO:1H2 HHO H22 HHO:2H2 HHO H31 HHO:1H3 HHO H32 HHO:2H3 HHO H41 HHO:1H4 HHO H42 HHO:2H4 HHO H51 HHO:1H5 HHO H52 HHO:2H5 HHO H61 HHO:1H6 HHO H62 HHO:2H6 HHO H71 HHO:1H7 HHO H72 HHO:2H7 HHO H81 HHO:1H8 HHO H82 HHO:2H8 HHO H71 HHP:1H7 HHP H72 HHP:2H7 HHP HN21 HHP:1HN2 HHP HN22 HHP:2HN2 HHP H6A1 HHP:1H6A HHP H6A2 HHP:2H6A HHP H71 HHR:1H7 HHR HN21 HHR:1HN2 HHR HN22 HHR:2HN2 HHR H6A1 HHR:1H6A HHR H6A2 HHR:2H6A HHR H401 HI1:1H40 HI1 H402 HI1:2H40 HI1 H141 HI1:1H14 HI1 H142 HI1:2H14 HI1 H4C1 HI1:1H4C HI1 H4C2 HI1:2H4C HI1 H221 HI1:1H22 HI1 H222 HI1:2H22 HI1 H321 HI1:1H32 HI1 H322 HI1:2H32 HI1 H581 HI1:1H58 HI1 H582 HI1:2H58 HI1 H431 HI1:1H43 HI1 H432 HI1:2H43 HI1 H433 HI1:3H43 HI1 H441 HI1:1H44 HI1 H442 HI1:2H44 HI1 H443 HI1:3H44 HI1 H861 HI1:1H86 HI1 H862 HI1:2H86 HI1 H863 HI1:3H86 HI1 H7C1 HI1:1H7C HI1 H7C2 HI1:2H7C HI1 H7C3 HI1:3H7C HI1 H1C1 HI5:1H1C HI5 H1C2 HI5:2H1C HI5 H3C1 HI5:1H3C HI5 H3C2 HI5:2H3C HI5 H121 HI5:1H12 HI5 H122 HI5:2H12 HI5 H131 HI5:1H13 HI5 H132 HI5:2H13 HI5 H141 HI5:1H14 HI5 H142 HI5:2H14 HI5 H143 HI5:3H14 HI5 H321 HI5:1H32 HI5 H322 HI5:2H32 HI5 H331 HI5:1H33 HI5 H332 HI5:2H33 HI5 H341 HI5:1H34 HI5 H342 HI5:2H34 HI5 H343 HI5:3H34 HI5 HN41 HI6:1HN4 HI6 HN42 HI6:2HN4 HI6 H81 HI6:1H8 HI6 H82 HI6:2H8 HI6 H71 HI6:1H7 HI6 H72 HI6:2H7 HI6 H HIA:1HN HIA H2 HIA:2HN HIA HB2 HIA:1HBC HIA HB3 HIA:2HBC HIA HXT1 HIA:1HXT HIA HXT2 HIA:2HXT HIA H81 HIB:1H8 HIB H82 HIB:2H8 HIB H83 HIB:3H8 HIB H91 HIB:1H9 HIB H92 HIB:2H9 HIB H93 HIB:3H9 HIB HX1 HIB:1HX HIB HX2 HIB:2HX HIB HX3 HIB:3HX HIB H2 HIC: HN2 HIC HB2 HIC:1HB HIC HB3 HIC:2HB HIC HZ1 HIC:1HZ HIC HZ2 HIC:2HZ HIC HZ3 HIC:3HZ HIC HAA1 HIF:1HAA HIF HAA2 HIF:2HAA HIF HMA1 HIF:1HMA HIF HMA2 HIF:2HMA HIF HMA3 HIF:3HMA HIF HBA1 HIF:1HBA HIF HBA2 HIF:2HBA HIF HMB1 HIF:1HMB HIF HMB2 HIF:2HMB HIF HMB3 HIF:3HMB HIF HAB1 HIF:1HAB HIF HAB2 HIF:2HAB HIF HBB1 HIF:1HBB HIF HBB2 HIF:2HBB HIF HBB3 HIF:3HBB HIF HAC1 HIF:1HAC HIF HAC2 HIF:2HAC HIF HBC1 HIF:1HBC HIF HBC2 HIF:2HBC HIF HBC3 HIF:3HBC HIF HIF1 HIF:1HIF HIF HIF2 HIF:2HIF HIF HIF3 HIF:3HIF HIF HMD1 HIF:1HMD HIF HMD2 HIF:2HMD HIF HMD3 HIF:3HMD HIF HAD1 HIF:1HAD HIF HAD2 HIF:2HAD HIF HBD1 HIF:1HBD HIF HBD2 HIF:2HBD HIF HN1 HII:1HN HII HN2 HII:2HN HII HN3 HII:3HN HII HB1 HII:1HB HII HB2 HII:2HB HII HNZ1 HII:1HNZ HII HNZ2 HII:2HNZ HII HN1 HIM:1HN HIM HN2 HIM:2HN HIM HB1 HIM:1HB HIM HB2 HIM:2HB HIM HZ1 HIM:1HZ HIM HZ2 HIM:2HZ HIM HZ3 HIM:3HZ HIM H11 HIN:1H1 HIN H12 HIN:2H1 HIN H21 HIN:1H2 HIN H22 HIN:2H2 HIN H101 HIN:1H10 HIN H102 HIN:2H10 HIN H103 HIN:3H10 HIN H111 HIN:1H11 HIN H112 HIN:2H11 HIN H113 HIN:3H11 HIN H121 HIN:1H12 HIN H122 HIN:2H12 HIN H411 HIO:1H41 HIO H412 HIO:2H41 HIO H413 HIO:3H41 HIO H421 HIO:1H42 HIO H422 HIO:2H42 HIO H423 HIO:3H42 HIO H HIP:1HN HIP H2 HIP:2HN HIP HB2 HIP:1HB HIP HB3 HIP:2HB HIP HOP2 HIP:2HOP HIP HOP3 HIP:3HOP HIP HN1 HIQ:1HN HIQ HN2 HIQ:2HN HIQ HB1 HIQ:1HB HIQ HB2 HIQ:2HB HIQ H1C1 HIQ:1H1C HIQ H1C2 HIQ:2H1C HIQ H3C1 HIQ:1H3C HIQ H3C2 HIQ:2H3C HIQ H2 HIS: HN2 HIS HB2 HIS:1HB HIS HB3 HIS:2HB HIS H51 HIT:1H5 HIT H52 HIT:2H5 HIT H53 HIT:3H5 HIT H91 HIT:1H9 HIT H92 HIT:2H9 HIT H93 HIT:3H9 HIT H171 HIT:1H17 HIT H172 HIT:2H17 HIT H173 HIT:3H17 HIT H31 HIU:1H3 HIU H32 HIU:2H3 HIU H33 HIU:3H3 HIU H41 HIU:1H4 HIU H42 HIU:2H4 HIU H3C1 HKV:1H3C HKV H3C2 HKV:2H3C HKV H41 HKV:1H4 HKV HB1 HLE:1HB HLE HB2 HLE:2HB HLE HD11 HLE:1HD1 HLE HD12 HLE:2HD1 HLE HD13 HLE:3HD1 HLE HD21 HLE:1HD2 HLE HD22 HLE:2HD2 HLE HD23 HLE:3HD2 HLE H4N1 HLO:1H4N HLO H4N2 HLO:2H4N HLO H8C1 HLO:1H8C HLO H8C2 HLO:2H8C HLO H7C1 HLO:1H7C HLO H7C2 HLO:2H7C HLO H HLU:1HN HLU H2 HLU:2HN HLU HD11 HLU:1HD1 HLU HD12 HLU:2HD1 HLU HD13 HLU:3HD1 HLU HD21 HLU:1HD2 HLU HD22 HLU:2HD2 HLU HD23 HLU:3HD2 HLU HH HLU: HO HLU H101 HM1:1H10 HM1 H102 HM1:2H10 HM1 H111 HM1:1H11 HM1 H112 HM1:2H11 HM1 H171 HM1:1H17 HM1 H172 HM1:2H17 HM1 H173 HM1:3H17 HM1 HL11 HM1:1HL1 HM1 HL12 HM1:2HL1 HM1 HL13 HM1:3HL1 HM1 H101 HM2:1H10 HM2 H102 HM2:2H10 HM2 H111 HM2:1H11 HM2 H112 HM2:2H11 HM2 H181 HM2:1H18 HM2 H182 HM2:2H18 HM2 H183 HM2:3H18 HM2 H121 HM4:1H12 HM4 H122 HM4:2H12 HM4 H123 HM4:3H12 HM4 H131 HM4:1H13 HM4 H132 HM4:2H13 HM4 H133 HM4:3H13 HM4 H141 HM4:1H14 HM4 H142 HM4:2H14 HM4 H143 HM4:3H14 HM4 H121 HM5:1H12 HM5 H122 HM5:2H12 HM5 H123 HM5:3H12 HM5 H131 HM5:1H13 HM5 H132 HM5:2H13 HM5 H133 HM5:3H13 HM5 H141 HM5:1H14 HM5 H142 HM5:2H14 HM5 H143 HM5:3H14 HM5 HN1 HMA:1HN HMA HN2A HMA:2HN HMA HB1 HMA:1HB HMA HB2 HMA:2HB HMA HB3 HMA:3HB HMA HA1 HMB:1HA HMB HA2 HMB:2HA HMB HB1 HMB:1HB HMB HB2 HMB:2HB HMB HE1 HMB:1HE HMB HE2 HMB:2HE HMB HE3 HMB:3HE HMB H71 HMC:1H7 HMC H72 HMC:2H7 HMC HN51 HMD:1HN5 HMD HN52 HMD:2HN5 HMD HAC1 HME:1HAC HME HAC2 HME:2HAC HME HBC1 HME:1HBC HME HBC2 HME:2HBC HME HBC3 HME:3HBC HME HMC1 HME:1HMC HME HMC2 HME:2HMC HME HMC3 HME:3HMC HME HMB1 HME:1HMB HME HMB2 HME:2HMB HME HMB3 HME:3HMB HME HAB1 HME:1HAB HME HAB2 HME:2HAB HME HBB1 HME:1HBB HME HBB2 HME:2HBB HME HBB3 HME:3HBB HME HMA1 HME:1HMA HME HMA2 HME:2HMA HME HMA3 HME:3HMA HME HAA1 HME:1HAA HME HAA2 HME:2HAA HME HBA1 HME:1HBA HME HBA2 HME:2HBA HME HAD1 HME:1HAD HME HAD2 HME:2HAD HME HBD1 HME:1HBD HME HBD2 HME:2HBD HME HMD1 HME:1HMD HME HMD2 HME:2HMD HME HMD3 HME:3HMD HME H HMF:1HN HMF H2 HMF:2HN HMF HB2 HMF:1HB HMF HB3 HMF:2HB HMF HG2 HMF:1HG HMF HG3 HMF:2HG HMF HC2 HMF: H2 HMF H5'1 HMG:1H5* HMG H5'2 HMG:2H5* HMG H4B HMG:H4*A HMG H3B HMG:H3*A HMG H2' HMG: H2* HMG H2B HMG:H2*A HMG H1B HMG:H1*A HMG H2A1 HMG:1H2A HMG H8A1 HMG:1H8A HMG H121 HMG:1H12 HMG H122 HMG:2H12 HMG H131 HMG:1H13 HMG H132 HMG:2H13 HMG H133 HMG:3H13 HMG H141 HMG:1H14 HMG H142 HMG:2H14 HMG H143 HMG:3H14 HMG H101 HMG:1H10 HMG H7P1 HMG:1H7P HMG H7P2 HMG:2H7P HMG H6P1 HMG:1H6P HMG H6P2 HMG:2H6P HMG H3P1 HMG:1H3P HMG H3P2 HMG:2H3P HMG H2P1 HMG:1H2P HMG H2P2 HMG:2H2P HMG H21 HMG:1H2 HMG H22 HMG:2H2 HMG H41 HMG:1H4 HMG H42 HMG:2H4 HMG H61 HMG:1H6 HMG H62 HMG:2H6 HMG H63 HMG:3H6 HMG HCM1 HMH:1HCM HMH HCM2 HMH:2HCM HMH HCM3 HMH:3HCM HMH HN41 HMH:1HN4 HMH HN42 HMH:2HN4 HMH HC71 HMH:1HC7 HMH HC72 HMH:2HC7 HMH HB1 HMI:1HB HMI HB2 HMI:2HB HMI HD11 HMI:1HD1 HMI HD12 HMI:2HD1 HMI HD13 HMI:3HD1 HMI HD21 HMI:1HD2 HMI HD22 HMI:2HD2 HMI HD23 HMI:3HD2 HMI H11 HMK:1H1 HMK H12A HMK:2H1 HMK H161 HMK:1H16 HMK H162 HMK:2H16 HMK H311 HMM:1H31 HMM H312 HMM:2H31 HMM H313 HMM:3H31 HMM H141 HMM:1H14 HMM H142 HMM:2H14 HMM H151 HMM:1H15 HMM H161 HMM:1H16 HMM H171 HMM:1H17 HMM H181 HMM:1H18 HMM H182 HMM:2H18 HMM HC31 HMN:1HC3 HMN HC32 HMN:2HC3 HMN H111 HMN:1H11 HMN H112 HMN:2H11 HMN H113 HMN:3H11 HMN HC91 HMN:1HC9 HMN HC92 HMN:2HC9 HMN H201 HMO:1H20 HMO H202 HMO:2H20 HMO H203 HMO:3H20 HMO H1'1 HMP:1H1' HMP H1'2 HMP:2H1' HMP H3'1 HMP:1H3' HMP H3'2 HMP:2H3' HMP H3'3 HMP:3H3' HMP H4'1 HMP:1H4' HMP H4'2 HMP:2H4' HMP H4'3 HMP:3H4' HMP H HMR:1HN HMR H2 HMR:2HN HMR HB2 HMR:1HB HMR HB3 HMR:2HB HMR HG2 HMR:1HG HMR HG3 HMR:2HG HMR HD2 HMR:1HD HMR HD3 HMR:2HD HMR HE HMR: HNE HMR HH1 HMR: HN1 HMR HH21 HMR:1HN2 HMR HH22 HMR:2HN2 HMR HC1 HMR:1HC HMR HC2 HMR:2HC HMR HM51 HMU:1HM5 HMU HM52 HMU:2HM5 HMU H5C1 HNE:1H5C HNE H5C2 HNE:2H5C HNE H6C1 HNE:1H6C HNE H6C2 HNE:2H6C HNE H7C1 HNE:1H7C HNE H7C2 HNE:2H7C HNE H8C1 HNE:1H8C HNE H8C2 HNE:2H8C HNE H9C1 HNE:1H9C HNE H9C2 HNE:2H9C HNE H9C3 HNE:3H9C HNE HMA1 HNI:1HMA HNI HMA2 HNI:2HMA HNI HMA3 HNI:3HMA HNI HAA1 HNI:1HAA HNI HAA2 HNI:2HAA HNI HBA1 HNI:1HBA HNI HBA2 HNI:2HBA HNI HMB1 HNI:1HMB HNI HMB2 HNI:2HMB HNI HMB3 HNI:3HMB HNI HBB1 HNI:1HBB HNI HBB2 HNI:2HBB HNI HMC1 HNI:1HMC HNI HMC2 HNI:2HMC HNI HMC3 HNI:3HMC HNI HBC1 HNI:1HBC HNI HBC2 HNI:2HBC HNI HMD1 HNI:1HMD HNI HMD2 HNI:2HMD HNI HMD3 HNI:3HMD HNI HAD1 HNI:1HAD HNI HAD2 HNI:2HAD HNI HBD1 HNI:1HBD HNI HBD2 HNI:2HBD HNI H11 HNP:1H1 HNP H12 HNP:2H1 HNP H11 HNT:1H1 HNT H12 HNT:2H1 HNT H41A HNT:1H4 HNT H42 HNT:2H4 HNT H221 HNT:1H22 HNT H222 HNT:2H22 HNT HN1 HOA:1HN HOA HN2 HOA:2HN HOA HOP2 HOB:2HOP HOB H5' HOB:1H5* HOB H5'' HOB:2H5* HOB H4' HOB: H4* HOB H3' HOB: H3* HOB H2' HOB:1H2* HOB H2'' HOB:2H2* HOB H1' HOB: H1* HOB H21 HOB:1H2 HOB H22 HOB:2H2 HOB H31 HOB:1H3 HOB H32 HOB:2H3 HOB H41 HOB:1H4 HOB H42 HOB:2H4 HOB H9 HOB:9H HOB H141 HOB:1H14 HOB H142 HOB:2H14 HOB H131 HOB:1H13 HOB H132 HOB:2H13 HOB H101 HOB:1H10 HOB H102 HOB:2H10 HOB H16 HOB:6H1 HOB H171 HOB:1H17 HOB H172 HOB:2H17 HOB H18 HOB:8H1 HOB H19 HOB:9H1 HOB H201 HOB:1H20 HOB H202 HOB:2H20 HOB H211 HOB:1H21 HOB H212 HOB:2H21 HOB H23 HOB:3H2 HOB H251 HOB:1H25 HOB H252 HOB:2H25 HOB H261 HOB:1H26 HOB H262 HOB:2H26 HOB H27 HOB:7H2 HOB H28 HOB:8H2 HOB H291 HOB:1H29 HOB H292 HOB:2H29 HOB H293 HOB:3H29 HOB H301 HOB:1H30 HOB H302 HOB:2H30 HOB H311 HOB:1H31 HOB H312 HOB:2H31 HOB H321 HOB:1H32 HOB H322 HOB:2H32 HOB H33 HOB:3H3 HOB H341 HOB:1H34 HOB H342 HOB:2H34 HOB H343 HOB:3H34 HOB H351 HOB:1H35 HOB H352 HOB:2H35 HOB H353 HOB:3H35 HOB H241 HOB:1H24 HOB H242 HOB:2H24 HOB H243 HOB:3H24 HOB H151 HOB:1H15 HOB H152 HOB:2H15 HOB H153 HOB:3H15 HOB HO3' HOB:H3T HOB HOP3 HOB:3HOP HOB H81 HOC:1H8 HOC H82 HOC:2H8 HOC H83 HOC:3H8 HOC H71 HOC:1H7 HOC H72 HOC:2H7 HOC H31 HOC:1H3 HOC H32 HOC:2H3 HOC H41 HOC:1H4 HOC H42 HOC:2H4 HOC H51 HOC:1H5 HOC H52 HOC:2H5 HOC H61 HOC:1H6 HOC H62 HOC:2H6 HOC H211 HOE:1H21 HOE H212 HOE:2H21 HOE H221 HOE:1H22 HOE H222 HOE:2H22 HOE H231 HOE:1H23 HOE H232 HOE:2H23 HOE H241 HOE:1H24 HOE H242 HOE:2H24 HOE H251 HOE:1H25 HOE H252 HOE:2H25 HOE H253 HOE:3H25 HOE H1 HOH:1H HOH H2 HOH:2H HOH HOP2 HOL:2HOP HOL H5' HOL:1H5* HOL H5'' HOL:2H5* HOL H4' HOL: H4* HOL H3' HOL: H3* HOL H2' HOL:1H2* HOL H2'' HOL:2H2* HOL H1' HOL: H1* HOL H21 HOL:1H2 HOL H22 HOL:2H2 HOL H31 HOL:1H3 HOL H32 HOL:2H3 HOL H41 HOL:1H4 HOL H42 HOL:2H4 HOL H9 HOL:9H HOL H141 HOL:1H14 HOL H142 HOL:2H14 HOL H131 HOL:1H13 HOL H132 HOL:2H13 HOL H101 HOL:1H10 HOL H102 HOL:2H10 HOL H16 HOL:6H1 HOL H171 HOL:1H17 HOL H172 HOL:2H17 HOL H18 HOL:8H1 HOL H19 HOL:9H1 HOL H201 HOL:1H20 HOL H202 HOL:2H20 HOL H211 HOL:1H21 HOL H212 HOL:2H21 HOL H23 HOL:3H2 HOL H251 HOL:1H25 HOL H252 HOL:2H25 HOL H261 HOL:1H26 HOL H262 HOL:2H26 HOL H27 HOL:7H2 HOL H28 HOL:8H2 HOL H291 HOL:1H29 HOL H292 HOL:2H29 HOL H293 HOL:3H29 HOL H301 HOL:1H30 HOL H302 HOL:2H30 HOL H311 HOL:1H31 HOL H312 HOL:2H31 HOL H321 HOL:1H32 HOL H322 HOL:2H32 HOL H33 HOL:3H3 HOL H341 HOL:1H34 HOL H342 HOL:2H34 HOL H343 HOL:3H34 HOL H351 HOL:1H35 HOL H352 HOL:2H35 HOL H353 HOL:3H35 HOL H241 HOL:1H24 HOL H242 HOL:2H24 HOL H243 HOL:3H24 HOL H151 HOL:1H15 HOL H152 HOL:2H15 HOL H153 HOL:3H15 HOL HO3' HOL:H3T HOL HOP3 HOL:3HOP HOL HA41 HOM:1HA4 HOM HA61 HOM:1HA6 HOM HA71 HOM:1HA7 HOM HB1 HOM:1HB HOM HB2 HOM:2HB HOM HB71 HOM:1HB7 HOM HB72 HOM:2HB7 HOM HB81 HOM:1HB8 HOM HB82 HOM:2HB8 HOM HB83 HOM:3HB8 HOM HO41 HOM:1HO4 HOM HO11 HOM:1HO1 HOM H81 HON:1H8 HON H82 HON:2H8 HON H83 HON:3H8 HON H61 HON:1H6 HON H62 HON:2H6 HON H181 HON:1H18 HON H182 HON:2H18 HON H183 HON:3H18 HON H221 HON:1H22 HON H222 HON:2H22 HON H121 HOP:1H12 HOP H122 HOP:2H12 HOP H91 HOP:1H9 HOP H92 HOP:2H9 HOP H81 HOP:1H8 HOP H82 HOP:2H8 HOP H231 HOP:1H23 HOP H232 HOP:2H23 HOP H241 HOP:1H24 HOP H242 HOP:2H24 HOP H251 HOP:1H25 HOP H252 HOP:2H25 HOP H511 HOQ:1H51 HOQ H512 HOQ:2H51 HOQ H513 HOQ:3H51 HOQ H521 HOQ:1H52 HOQ H522 HOQ:2H52 HOQ H523 HOQ:3H52 HOQ H91 HOQ:1H9 HOQ H92 HOQ:2H9 HOQ H93 HOQ:3H9 HOQ H101 HOQ:1H10 HOQ H102 HOQ:2H10 HOQ H103 HOQ:3H10 HOQ HN1 HOZ:1HN HOZ HN2 HOZ:2HN HOZ H1 HOZ:1H HOZ H2 HOZ:2H HOZ HN11 HOZ:1HN1 HOZ HN12 HOZ:2HN1 HOZ HB1 HOZ:1HB HOZ HB2 HOZ:2HB HOZ HG1 HOZ:1HG HOZ HG2 HOZ:2HG HOZ H31 HP1:1H3 HP1 H32 HP1:2H3 HP1 H33 HP1:3H3 HP1 H91 HP1:1H9 HP1 H92 HP1:2H9 HP1 H93 HP1:3H9 HP1 H151 HP1:1H15 HP1 H152 HP1:2H15 HP1 H153 HP1:3H15 HP1 H181 HP1:1H18 HP1 H182 HP1:2H18 HP1 H191 HP1:1H19 HP1 H192 HP1:2H19 HP1 H201 HP1:1H20 HP1 H202 HP1:2H20 HP1 H211 HP1:1H21 HP1 H212 HP1:2H21 HP1 H213 HP1:3H21 HP1 H221 HP1:1H22 HP1 H222 HP1:2H22 HP1 H223 HP1:3H22 HP1 H281 HP1:1H28 HP1 H282 HP1:2H28 HP1 H283 HP1:3H28 HP1 H291 HP1:1H29 HP1 H292 HP1:2H29 HP1 H301 HP1:1H30 HP1 H302 HP1:2H30 HP1 H91 HP2:1H9 HP2 H92 HP2:2H9 HP2 H93 HP2:3H9 HP2 H151 HP2:1H15 HP2 H152 HP2:2H15 HP2 H153 HP2:3H15 HP2 H211 HP2:1H21 HP2 H212 HP2:2H21 HP2 H213 HP2:3H21 HP2 H221 HP2:1H22 HP2 H222 HP2:2H22 HP2 H223 HP2:3H22 HP2 H201 HP2:1H20 HP2 H202 HP2:2H20 HP2 H181 HP2:1H18 HP2 H182 HP2:2H18 HP2 H191 HP2:1H19 HP2 H192 HP2:2H19 HP2 H31 HP2:1H3 HP2 H32A HP2:2H3 HP2 H33 HP2:3H3 HP2 H281 HP2:1H28 HP2 H282 HP2:2H28 HP2 H283 HP2:3H28 HP2 H301 HP2:1H30 HP2 H302 HP2:2H30 HP2 H291 HP2:1H29 HP2 H292 HP2:2H29 HP2 H11 HP3:1H1 HP3 H12 HP3:2H1 HP3 H13 HP3:3H1 HP3 H31 HP3:1H3 HP3 H32 HP3:2H3 HP3 H201 HP6:1H20 HP6 H202 HP6:2H20 HP6 H203 HP6:3H20 HP6 H211 HP6:1H21 HP6 H212 HP6:2H21 HP6 H221 HP6:1H22 HP6 H222 HP6:2H22 HP6 H231 HP6:1H23 HP6 H232 HP6:2H23 HP6 H241 HP6:1H24 HP6 H242 HP6:2H24 HP6 H251 HP6:1H25 HP6 H252 HP6:2H25 HP6 H261 HP6:1H26 HP6 H262 HP6:2H26 HP6 H263 HP6:3H26 HP6 H11 HPB:1H1 HPB H12 HPB:2H1 HPB H13 HPB:3H1 HPB H41 HPB:1H4 HPB H42 HPB:2H4 HPB HN31 HPB:1HN3 HPB HN32 HPB:2HN3 HPB HB1 HPC:1HB HPC HB2 HPC:2HB HPC HCH1 HPC:1HCH HPC HCH2 HPC:2HCH HPC HCH3 HPC:3HCH HPC HOP2 HPD:2HOP HPD HOP3 HPD:3HOP HPD H5'1 HPD:1H5* HPD H5'2 HPD:2H5* HPD HO'4 HPD:4HO* HPD HO'3 HPD:3HO* HPD H1'1 HPD:1H1* HPD H1'2 HPD:2H1* HPD HO'1 HPD:1HO* HPD H3' HPD: H3* HPD H4' HPD: H4* HPD H2'1 HPD:1H2* HPD H2'2 HPD:2H2* HPD H HPE:1HN HPE H2 HPE:2HN HPE HB2 HPE:1HB HPE HB3 HPE:2HB HPE HG2 HPE:1HG HPE HG3 HPE:2HG HPE HE1 HPE:1HE HPE HE2 HPE:2HE HPE HZ1 HPE:1HZ HPE HZ2 HPE:2HZ HPE HH HPE:1HH HPE H111 HPF:1H11 HPF H112 HPF:2H11 HPF H11 HPG:1H1 HPG H12 HPG:2H1 HPG H21 HPG:1H2 HPG H22 HPG:2H2 HPG H31 HPG:1H3 HPG H32 HPG:2H3 HPG HC HPH: H HPH H HPH:1HN HPH H2 HPH:2HN HPH HB2 HPH:1HB HPH HB3 HPH:2HB HPH H071 HPI:1H07 HPI H072 HPI:2H07 HPI H111 HPI:1H11 HPI H112 HPI:2H11 HPI H121 HPI:1H12 HPI H122 HPI:2H12 HPI H281 HPI:1H28 HPI H282 HPI:2H28 HPI H291 HPI:1H29 HPI H292 HPI:2H29 HPI HA51 HPK:1HA5 HPK HA52 HPK:2HA5 HPK H11 HPL:1H1 HPL H12 HPL:2H1 HPL H21 HPL:1H2 HPL H22 HPL:2H2 HPL H31 HPL:1H3 HPL H32 HPL:2H3 HPL H41 HPL:1H4 HPL H42 HPL:2H4 HPL H51 HPL:1H5 HPL H52 HPL:2H5 HPL H61 HPL:1H6 HPL H62 HPL:2H6 HPL H63 HPL:3H6 HPL H121 HPL:1H12 HPL H122 HPL:2H12 HPL H1C1 HPM:1H1C HPM H1C2 HPM:2H1C HPM H2C1 HPM:1H2C HPM H2C2 HPM:2H2C HPM H3C1 HPM:1H3C HPM H3C2 HPM:2H3C HPM H4C1 HPM:1H4C HPM H4C2 HPM:2H4C HPM H5C1 HPM:1H5C HPM H5C2 HPM:2H5C HPM H7C1 HPM:1H7C HPM H7C2 HPM:2H7C HPM H9C1 HPM:1H9C HPM H9C2 HPM:2H9C HPM H381 HPM:1H38 HPM H382 HPM:2H38 HPM H383 HPM:3H38 HPM HN11 HPN:1HN1 HPN HN12 HPN:2HN1 HPN H21 HPN:1H2 HPN H22 HPN:2H2 HPN H31 HPN:1H3 HPN H32 HPN:2H3 HPN H41 HPN:1H4 HPN H42 HPN:2H4 HPN H51 HPN:1H5 HPN H52 HPN:2H5 HPN H61 HPN:1H6 HPN H62 HPN:2H6 HPN H71 HPN:1H7 HPN H72 HPN:2H7 HPN H73 HPN:3H7 HPN H11 HPO:1H1 HPO H12 HPO:2H1 HPO H13 HPO:3H1 HPO H21 HPO:1H2 HPO H22 HPO:2H2 HPO H31 HPO:1H3 HPO H32 HPO:2H3 HPO H41 HPO:1H4 HPO H42 HPO:2H4 HPO H51 HPO:1H5 HPO H52 HPO:2H5 HPO H71 HPO:1H7 HPO H72 HPO:2H7 HPO H71 HPP:1H7 HPP H72 HPP:2H7 HPP H81 HPP:1H8 HPP H82 HPP:2H8 HPP H HPQ:1HN HPQ H2 HPQ:2HN HPQ HB1 HPQ:1HB HPQ HB2 HPQ:2HB HPQ HG1 HPQ:1HG HPQ HG2 HPQ:2HG HPQ HE1 HPQ:1HE HPQ HE2 HPQ:2HE HPQ HZ1 HPQ:1HZ HPQ HZ2 HPQ:2HZ HPQ HH1 HPQ:1HH HPQ HM1 HPQ:1HM HPQ HM2 HPQ:2HM HPQ HM3 HPQ:3HM HPQ H81 HPR:1H8 HPR H82 HPR:2H8 HPR H1' HPR: H1* HPR H2' HPR: H2* HPR HO2' HPR:*HO2 HPR H3' HPR: H3* HPR HO3' HPR:*HO3 HPR H4' HPR: H4* HPR H5'1 HPR:1H5* HPR H5'2 HPR:2H5* HPR HO5' HPR:*HO5 HPR H43 HPT:3H4 HPT H42 HPT:2H4 HPT H41 HPT:1H4 HPT H112 HPT:2H11 HPT H111 HPT:1H11 HPT H122 HPT:2H12 HPT H121 HPT:1H12 HPT H132 HPT:2H13 HPT H131 HPT:1H13 HPT H111 HQ:1H11 HQ H112 HQ:2H11 HQ H121 HQ:1H12 HQ H122 HQ:2H12 HQ H131 HQ:1H13 HQ H132 HQ:2H13 HQ H141 HQ:1H14 HQ H142 HQ:2H14 HQ H151 HQ:1H15 HQ H152 HQ:2H15 HQ H161 HQ:1H16 HQ H162 HQ:2H16 HQ H171 HQ:1H17 HQ H172 HQ:2H17 HQ H173 HQ:3H17 HQ H91 HQC:1H9 HQC H92 HQC:2H9 HQC H121 HQC:1H12 HQC H122 HQC:2H12 HQC H131 HQC:1H13 HQC H132 HQC:2H13 HQC H61 HQC:1H6 HQC H62 HQC:2H6 HQC H161 HQC:1H16 HQC H162 HQC:2H16 HQC H71 HQL:1H7 HQL H72 HQL:2H7 HQL H81 HQL:1H8 HQL H82 HQL:2H8 HQL H91 HQL:1H9 HQL H92 HQL:2H9 HQL H101 HQL:1H10 HQL H102 HQL:2H10 HQL H111 HQL:1H11 HQL H112 HQL:2H11 HQL H131 HQL:1H13 HQL H132 HQL:2H13 HQL H141 HQL:1H14 HQL H142 HQL:2H14 HQL HO11 HQO:1HO1 HQO H111 HQO:1H11 HQO H112 HQO:2H11 HQO H121 HQO:1H12 HQO H122 HQO:2H12 HQO H131 HQO:1H13 HQO H132 HQO:2H13 HQO H141 HQO:1H14 HQO H142 HQO:2H14 HQO H151 HQO:1H15 HQO H152 HQO:2H15 HQO H161 HQO:1H16 HQO H162 HQO:2H16 HQO H171 HQO:1H17 HQO H172 HQO:2H17 HQO H173 HQO:3H17 HQO HAL1 HQP:1HAL HQP HAL2 HQP:2HAL HQP HAM1 HQP:1HAM HQP HAM2 HQP:2HAM HQP H71 HQQ:1H7 HQQ H72 HQQ:2H7 HQQ H73 HQQ:3H7 HQQ H71 HR1:1H7 HR1 H72 HR1:2H7 HR1 H81 HR1:1H8 HR1 H82 HR1:2H8 HR1 H101 HR1:1H10 HR1 H102 HR1:2H10 HR1 H131 HR1:1H13 HR1 H132 HR1:2H13 HR1 H133 HR1:3H13 HR1 H141 HR1:1H14 HR1 H142 HR1:2H14 HR1 H143 HR1:3H14 HR1 H351 HR1:1H35 HR1 H352 HR1:2H35 HR1 H61 HR2:1H6 HR2 H62 HR2:2H6 HR2 H201 HR2:1H20 HR2 H202 HR2:2H20 HR2 H221 HR2:1H22 HR2 H222 HR2:2H22 HR2 H241 HR2:1H24 HR2 H242 HR2:2H24 HR2 H191 HR2:1H19 HR2 H192 HR2:2H19 HR2 H121 HR2:1H12 HR2 H122 HR2:2H12 HR2 H123 HR2:3H12 HR2 H111 HR2:1H11 HR2 H112 HR2:2H11 HR2 H113 HR2:3H11 HR2 H21A HR2:1H2 HR2 H22 HR2:2H2 HR2 H161 HR2:1H16 HR2 H162 HR2:2H16 HR2 HP51 HRB:1HP5 HRB HP52 HRB:2HP5 HRB HP53 HRB:3HP5 HRB HP41 HRB:1HP4 HRB HP42 HRB:2HP4 HRB HP31 HRB:1HP3 HRB HP32 HRB:2HP3 HRB HP21 HRB:1HP2 HRB HP22 HRB:2HP2 HRB HP11 HRB:1HP1 HRB HP12 HRB:2HP1 HRB H31 HRB:1H3 HRB H32 HRB:2H3 HRB HB1 HRB:1HB HRB HB2 HRB:2HB HRB HA21 HRB:1HA2 HRB HA22 HRB:2HA2 HRB HA23 HRB:3HA2 HRB HN1A HRG:1HN HRG HN2 HRG:2HN HRG HB1 HRG:1HB HRG HB2 HRG:2HB HRG HG1 HRG:1HG HRG HG2 HRG:2HG HRG HG'1 HRG:1HG' HRG HG'2 HRG:2HG' HRG HD1 HRG:1HD HRG HD2 HRG:2HD HRG HN21 HRG:1HN2 HRG HN22 HRG:2HN2 HRG HCH1 HRI:1HCH HRI HCH2 HRI:2HCH HRI HCF1 HRI:1HCF HRI HI11 HRI:1HI1 HRI HI12 HRI:2HI1 HRI HI13 HRI:3HI1 HRI HI21 HRI:1HI2 HRI HI22 HRI:2HI2 HRI HI23 HRI:3HI2 HRI HAB1 HRM:1HAB HRM HAB2 HRM:2HAB HRM HAB3 HRM:3HAB HRM HAA1 HRM:1HAA HRM HAA2 HRM:2HAA HRM HAA3 HRM:3HAA HRM H HRP:1HN HRP H2 HRP:2HN HRP HB2 HRP:1HB HRP HB3 HRP:2HB HRP HXT HRP: HO1 HRP HB1 HSA:1HB HSA HB2 HSA:2HB HSA H41 HSA:1H4 HSA H42 HSA:2H4 HSA HO2 HSA:2HO HSA HO3 HSA:3HO HSA HN1 HSA:1HN HSA HN2 HSA:2HN HSA HBC1 HSB:1HBC HSB HBC2 HSB:2HBC HSB HC1 HSB:1HC HSB HC2 HSB:2HC HSB HOP1 HSB:1HOP HSB HOP2 HSB:2HOP HSB HAC1 HSB:1HAC HSB H31 HSE:1H3 HSE H32 HSE:2H3 HSE H41 HSE:1H4 HSE H42 HSE:2H4 HSE H11 HSF:1H1 HSF H12 HSF:2H1 HSF H21 HSF:1H2 HSF H22 HSF:2H2 HSF H31 HSF:1H3 HSF H32 HSF:2H3 HSF H41 HSF:1H4 HSF H42 HSF:2H4 HSF H51 HSF:1H5 HSF H52 HSF:2H5 HSF H61 HSF:1H6 HSF H62 HSF:2H6 HSF H71 HSF:1H7 HSF H72 HSF:2H7 HSF H81 HSF:1H8 HSF H82 HSF:2H8 HSF H91 HSF:1H9 HSF H92 HSF:2H9 HSF H101 HSF:1H10 HSF H102 HSF:2H10 HSF H111 HSF:1H11 HSF H112 HSF:2H11 HSF H121 HSF:1H12 HSF H122 HSF:2H12 HSF H131 HSF:1H13 HSF H132 HSF:2H13 HSF H141 HSF:1H14 HSF H142 HSF:2H14 HSF H151 HSF:1H15 HSF H152 HSF:2H15 HSF H161 HSF:1H16 HSF H162 HSF:2H16 HSF H163 HSF:3H16 HSF H601 HSI:1H60 HSI H602 HSI:2H60 HSI H603 HSI:3H60 HSI H561 HSI:1H56 HSI H562 HSI:2H56 HSI H521 HSI:1H52 HSI H522 HSI:2H52 HSI H481 HSI:1H48 HSI H482 HSI:2H48 HSI H441 HSI:1H44 HSI H442 HSI:2H44 HSI H401 HSI:1H40 HSI H402 HSI:2H40 HSI H51 HSI:1H5 HSI H52 HSI:2H5 HSI H2 HSL: HN2 HSL HB2 HSL:1HB HSL HB3 HSL:2HB HSL HG2 HSL:1HG HSL HG3 HSL:2HG HSL H1 HSM:1H HSM H2 HSM:2H HSM HA1 HSM:1HA HSM HA2 HSM:2HA HSM HB1 HSM:1HB HSM HB2 HSM:2HB HSM HMA1 HSN:1HMA HSN HMA2 HSN:2HMA HSN HMA3 HSN:3HMA HSN HAA1 HSN:1HAA HSN HAA2 HSN:2HAA HSN HBA1 HSN:1HBA HSN HBA2 HSN:2HBA HSN HMB1 HSN:1HMB HSN HMB2 HSN:2HMB HSN HMB3 HSN:3HMB HSN HBB1 HSN:1HBB HSN HBB2 HSN:2HBB HSN HMC1 HSN:1HMC HSN HMC2 HSN:2HMC HSN HMC3 HSN:3HMC HSN HBC1 HSN:1HBC HSN HBC2 HSN:2HBC HSN HMD1 HSN:1HMD HSN HMD2 HSN:2HMD HSN HMD3 HSN:3HMD HSN HAD1 HSN:1HAD HSN HAD2 HSN:2HAD HSN HBD1 HSN:1HBD HSN HBD2 HSN:2HBD HSN HN1 HSO:1HN HSO HN2 HSO:2HN HSO HB1 HSO:1HB HSO HB2 HSO:2HB HSO H71 HSP:1H7 HSP H72 HSP:2H7 HSP H81 HSP:1H8 HSP H82 HSP:2H8 HSP H91 HSP:1H9 HSP H92 HSP:2H9 HSP H101 HSP:1H10 HSP H102 HSP:2H10 HSP HB1 HSS:1HB HSS HB2 HSS:2HB HSS HN1 HSS:1HN HSS HN2 HSS:2HN HSS H5'1 HSS:1H5* HSS H5'2 HSS:2H5* HSS H4' HSS: H4* HSS H3' HSS: H3* HSS HO3' HSS:HO3* HSS H2' HSS: H2* HSS HO2' HSS:HO2* HSS H1' HSS: H1* HSS HN61 HSS:1HN6 HSS HN62 HSS:2HN6 HSS H11 HST:1H1 HST H12 HST:2H1 HST H13 HST:3H1 HST H21 HST:1H2 HST H22 HST:2H2 HST H31 HST:1H3 HST H32 HST:2H3 HST H41 HST:1H4 HST H42 HST:2H4 HST H51 HST:1H5 HST H52 HST:2H5 HST H71 HST:1H7 HST H72 HST:2H7 HST H81 HST:1H8 HST H82 HST:2H8 HST H91 HST:1H9 HST H92 HST:2H9 HST H101 HST:1H10 HST H102 HST:2H10 HST H111 HST:1H11 HST H112 HST:2H11 HST H113 HST:3H11 HST HN11 HSW:1HN1 HSW HN12 HSW:2HN1 HSW H211 HT:1H21 HT H212 HT:2H21 HT H221 HT:1H22 HT H222 HT:2H22 HT H231 HT:1H23 HT H232 HT:2H23 HT H241 HT:1H24 HT H242 HT:2H24 HT H253 HT:3H25 HT H252 HT:2H25 HT H251 HT:1H25 HT H211 HT1:1H21 HT1 H212 HT1:2H21 HT1 H221 HT1:1H22 HT1 H222 HT1:2H22 HT1 H231 HT1:1H23 HT1 H232 HT1:2H23 HT1 H241 HT1:1H24 HT1 H242 HT1:2H24 HT1 H251 HT1:1H25 HT1 H252 HT1:2H25 HT1 H253 HT1:3H25 HT1 H261 HT1:1H26 HT1 H262 HT1:2H26 HT1 H271 HT1:1H27 HT1 H272 HT1:2H27 HT1 H273 HT1:3H27 HT1 HN11 HT2:1HN1 HT2 HN12 HT2:2HN1 HT2 HN71 HT2:1HN7 HT2 HN72 HT2:2HN7 HT2 H21 HTA:1H2 HTA H22 HTA:2H2 HTA H51 HTA:1H5 HTA H52 HTA:2H5 HTA H71 HTA:1H7 HTA H72 HTA:2H7 HTA H73 HTA:3H7 HTA H81 HTA:1H8 HTA H82 HTA:2H8 HTA H83 HTA:3H8 HTA H111 HTA:1H11 HTA H112 HTA:2H11 HTA H181 HTA:1H18 HTA H182 HTA:2H18 HTA H183 HTA:3H18 HTA H191 HTA:1H19 HTA H192 HTA:2H19 HTA H193 HTA:3H19 HTA H81 HTF:1H8 HTF H82 HTF:2H8 HTF H83 HTF:3H8 HTF H72 HTF:2H7 HTF H73 HTF:3H7 HTF H62 HTF:2H6 HTF H63 HTF:3H6 HTF H52 HTF:2H5 HTF H53 HTF:3H5 HTF H42 HTF:2H4 HTF H43 HTF:3H4 HTF H32 HTF:2H3 HTF H33 HTF:3H3 HTF H22 HTF:2H2 HTF H23 HTF:3H2 HTF HG2 HTF:2HG HTF HG3 HTF:3HG HTF HB2 HTF:2HB HTF HB3 HTF:3HB HTF H61 HTG:1H6 HTG H62 HTG:2H6 HTG H1'1 HTG:1H1' HTG H1'2 HTG:2H1' HTG H2'1 HTG:1H2' HTG H2'2 HTG:2H2' HTG H3'1 HTG:1H3' HTG H3'2 HTG:2H3' HTG H4'1 HTG:1H4' HTG H4'2 HTG:2H4' HTG H5'1 HTG:1H5' HTG H5'2 HTG:2H5' HTG H6'1 HTG:1H6' HTG H6'2 HTG:2H6' HTG H7'1 HTG:1H7' HTG H7'2 HTG:2H7' HTG H7'3 HTG:3H7' HTG H HTI:1HN HTI H2 HTI:2HN HTI HB2 HTI:1HB HTI HB3 HTI:2HB HTI HAJ1 HTI:1HAJ HTI HAJ2 HTI:2HAJ HTI HAL1 HTI:1HAL HTI HAL2 HTI:2HAL HTI H2A1 HTL:1H2A HTL H2A2 HTL:2H2A HTL H2A3 HTL:3H2A HTL H4'1 HTL:1H4* HTL H4'2 HTL:2H4* HTL H6' HTL: H6* HTL H351 HTL:1H35 HTL H352 HTL:2H35 HTL H4A1 HTL:1H4A HTL H4A2 HTL:2H4A HTL H4A3 HTL:3H4A HTL H5A1 HTL:1H5A HTL H5A2 HTL:2H5A HTL H5B1 HTL:1H5B HTL H5B2 HTL:2H5B HTL H22O HTL:OH22 HTL H23O HTL:OH23 HTL H3'1 HTL:1H3' HTL H3'2 HTL:2H3' HTL H3'3 HTL:3H3' HTL H71 HTM:1H7 HTM H72 HTM:2H7 HTM H81 HTM:1H8 HTM H82 HTM:2H8 HTM H91 HTM:1H9 HTM H92 HTM:2H9 HTM H111 HTM:1H11 HTM H112 HTM:2H11 HTM H113 HTM:3H11 HTM H11 HTO:1H1 HTO H12 HTO:2H1 HTO H41 HTO:1H4 HTO H42 HTO:2H4 HTO H51 HTO:1H5 HTO H52 HTO:2H5 HTO H61 HTO:1H6 HTO H62 HTO:2H6 HTO H71 HTO:1H7 HTO H72 HTO:2H7 HTO H73 HTO:3H7 HTO H61 HTP:1H6 HTP H62 HTP:2H6 HTP H11 HTQ:1H1 HTQ H21 HTQ:1H2 HTQ H22 HTQ:2H2 HTQ H31 HTQ:1H3 HTQ H41 HTQ:1H4 HTQ H42 HTQ:2H4 HTQ H51 HTQ:1H5 HTQ H61 HTQ:1H6 HTQ H62 HTQ:2H6 HTQ H71 HTQ:1H7 HTQ H72 HTQ:2H7 HTQ H91 HTQ:1H9 HTQ H92 HTQ:2H9 HTQ H93 HTQ:3H9 HTQ H131 HTQ:1H13 HTQ H151 HTQ:1H15 HTQ H161 HTQ:1H16 HTQ H171 HTQ:1H17 HTQ H181 HTQ:1H18 HTQ H191 HTQ:1H19 HTQ H201 HTQ:1H20 HTQ H HTR:1HN HTR H2 HTR:2HN HTR HH HTR: HO HTR H2 HTY: HN2 HTY HH HTY: HOH HTY H51 HU1:1H5 HU1 H52 HU1:2H5 HU1 H53 HU1:3H5 HU1 H61 HU1:1H6 HU1 H62 HU1:2H6 HU1 H63 HU1:3H6 HU1 H71 HU1:1H7 HU1 H72 HU1:2H7 HU1 H73 HU1:3H7 HU1 H111 HU1:1H11 HU1 H112 HU1:2H11 HU1 H121 HU1:1H12 HU1 H122 HU1:2H12 HU1 H131 HU1:1H13 HU1 H132 HU1:2H13 HU1 H141 HU1:1H14 HU1 H142 HU1:2H14 HU1 H151 HU1:1H15 HU1 H152 HU1:2H15 HU1 H191 HU1:1H19 HU1 H192 HU1:2H19 HU1 H241 HU1:1H24 HU1 H242 HU1:2H24 HU1 H243 HU1:3H24 HU1 H251 HU1:1H25 HU1 H252 HU1:2H25 HU1 H253 HU1:3H25 HU1 H301 HU1:1H30 HU1 H302 HU1:2H30 HU1 H321 HU1:1H32 HU1 H322 HU1:2H32 HU1 H331 HU1:1H33 HU1 H332 HU1:2H33 HU1 H341 HU1:1H34 HU1 H342 HU1:2H34 HU1 H381 HU1:1H38 HU1 H382 HU1:2H38 HU1 H31 HU2:1H3 HU2 H32 HU2:2H3 HU2 H41A HU2:1H4 HU2 H51 HU2:1H5 HU2 H61 HU2:1H6 HU2 H62 HU2:2H6 HU2 H81 HU2:1H8 HU2 H82 HU2:2H8 HU2 H83 HU2:3H8 HU2 H91 HU2:1H9 HU2 H92 HU2:2H9 HU2 H93 HU2:3H9 HU2 H111 HU2:1H11 HU2 H112 HU2:2H11 HU2 H113 HU2:3H11 HU2 H121 HU2:1H12 HU2 H122 HU2:2H12 HU2 H123 HU2:3H12 HU2 H161 HU2:1H16 HU2 H162 HU2:2H16 HU2 H181 HU2:1H18 HU2 H182 HU2:2H18 HU2 H183 HU2:3H18 HU2 H191 HU2:1H19 HU2 H192 HU2:2H19 HU2 H193 HU2:3H19 HU2 H241 HU2:1H24 HU2 H242 HU2:2H24 HU2 H251 HU2:1H25 HU2 H252 HU2:2H25 HU2 H261 HU2:1H26 HU2 H262 HU2:2H26 HU2 H263 HU2:3H26 HU2 H311 HU2:1H31 HU2 H312 HU2:2H31 HU2 H51 HU4:1H5 HU4 H52 HU4:2H5 HU4 H53 HU4:3H5 HU4 H61 HU4:1H6 HU4 H62 HU4:2H6 HU4 H63 HU4:3H6 HU4 H71 HU4:1H7 HU4 H72 HU4:2H7 HU4 H73 HU4:3H7 HU4 H111 HU4:1H11 HU4 H112 HU4:2H11 HU4 H121 HU4:1H12 HU4 H122 HU4:2H12 HU4 H131 HU4:1H13 HU4 H132 HU4:2H13 HU4 H141 HU4:1H14 HU4 H142 HU4:2H14 HU4 H151 HU4:1H15 HU4 H152 HU4:2H15 HU4 H191 HU4:1H19 HU4 H192 HU4:2H19 HU4 H251 HU4:1H25 HU4 H252 HU4:2H25 HU4 H253 HU4:3H25 HU4 H261 HU4:1H26 HU4 H262 HU4:2H26 HU4 H263 HU4:3H26 HU4 H311 HU4:1H31 HU4 H312 HU4:2H31 HU4 H331 HU4:1H33 HU4 H332 HU4:2H33 HU4 H341 HU4:1H34 HU4 H342 HU4:2H34 HU4 H351 HU4:1H35 HU4 H352 HU4:2H35 HU4 H391 HU4:1H39 HU4 H392 HU4:2H39 HU4 H51 HU5:1H5 HU5 H52 HU5:2H5 HU5 H53 HU5:3H5 HU5 H61 HU5:1H6 HU5 H62 HU5:2H6 HU5 H63 HU5:3H6 HU5 H71 HU5:1H7 HU5 H72 HU5:2H7 HU5 H73 HU5:3H7 HU5 H111 HU5:1H11 HU5 H112 HU5:2H11 HU5 H113 HU5:3H11 HU5 H121 HU5:1H12 HU5 H122 HU5:2H12 HU5 H123 HU5:3H12 HU5 H131 HU5:1H13 HU5 H132 HU5:2H13 HU5 H133 HU5:3H13 HU5 H171 HU5:1H17 HU5 H172 HU5:2H17 HU5 H221 HU5:1H22 HU5 H222 HU5:2H22 HU5 H223 HU5:3H22 HU5 H231 HU5:1H23 HU5 H232 HU5:2H23 HU5 H233 HU5:3H23 HU5 H281 HU5:1H28 HU5 H282 HU5:2H28 HU5 H301 HU5:1H30 HU5 H302 HU5:2H30 HU5 H311 HU5:1H31 HU5 H312 HU5:2H31 HU5 H321 HU5:1H32 HU5 H322 HU5:2H32 HU5 H361 HU5:1H36 HU5 H362 HU5:2H36 HU5 H6C1 HUB:1H6C HUB H6C2 HUB:2H6C HUB H9C1 HUB:1H9C HUB H9C2 HUB:2H9C HUB H101 HUB:1H10 HUB H102 HUB:2H10 HUB H131 HUB:1H13 HUB H132 HUB:2H13 HUB H151 HUB:1H15 HUB H152 HUB:2H15 HUB H153 HUB:3H15 HUB H901 HUB:1H90 HUB H902 HUB:2H90 HUB H51 HUD:1H5 HUD H52 HUD:2H5 HUD H53 HUD:3H5 HUD H61 HUD:1H6 HUD H62 HUD:2H6 HUD H63 HUD:3H6 HUD H71 HUD:1H7 HUD H72 HUD:2H7 HUD H73 HUD:3H7 HUD H111 HUD:1H11 HUD H112 HUD:2H11 HUD H113 HUD:3H11 HUD H121 HUD:1H12 HUD H122 HUD:2H12 HUD H123 HUD:3H12 HUD H131 HUD:1H13 HUD H132 HUD:2H13 HUD H133 HUD:3H13 HUD H171 HUD:1H17 HUD H172 HUD:2H17 HUD H221 HUD:1H22 HUD H222 HUD:2H22 HUD H223 HUD:3H22 HUD H231 HUD:1H23 HUD H232 HUD:2H23 HUD H233 HUD:3H23 HUD H281 HUD:1H28 HUD H282 HUD:2H28 HUD H301 HUD:1H30 HUD H302 HUD:2H30 HUD H311 HUD:1H31 HUD H312 HUD:2H31 HUD H351 HUD:1H35 HUD H352 HUD:2H35 HUD H61 HUP:1H6 HUP H62 HUP:2H6 HUP H81 HUP:1H8 HUP H82 HUP:2H8 HUP H91 HUP:1H9 HUP H92 HUP:2H9 HUP H93 HUP:3H9 HUP HN21 HUP:1HN2 HUP HN22 HUP:2HN2 HUP H131 HUP:1H13 HUP H132 HUP:2H13 HUP H151 HUP:1H15 HUP H152 HUP:2H15 HUP H153 HUP:3H15 HUP HN21 HUX:1HN2 HUX HN22 HUX:2HN2 HUX HC51 HUX:1HC5 HUX HC52 HUX:2HC5 HUX H121 HUX:1H12 HUX H122 HUX:2H12 HUX HC91 HUX:1HC9 HUX HC92 HUX:2HC9 HUX H181 HUX:1H18 HUX H182 HUX:2H18 HUX H101 HUX:1H10 HUX H102 HUX:2H10 HUX H103 HUX:3H10 HUX H4C1 HV1:1H4C HV1 H4C2 HV1:2H4C HV1 H141 HV1:1H14 HV1 H142 HV1:2H14 HV1 H271 HV1:1H27 HV1 H272 HV1:2H27 HV1 H361 HV1:1H36 HV1 H362 HV1:2H36 HV1 H363 HV1:3H36 HV1 H471 HV1:1H47 HV1 H472 HV1:2H47 HV1 H473 HV1:3H47 HV1 H461 HV1:1H46 HV1 H462 HV1:2H46 HV1 H463 HV1:3H46 HV1 H451 HV1:1H45 HV1 H452 HV1:2H45 HV1 H453 HV1:3H45 HV1 H151 HV1:1H15 HV1 H152 HV1:2H15 HV1 H121 HV1:1H12 HV1 H122 HV1:2H12 HV1 HN1 HV5:1HN HV5 HN2 HV5:2HN HV5 HG11 HV5:1HG1 HV5 HG12 HV5:2HG1 HV5 HG13 HV5:3HG1 HV5 HG21 HV5:1HG2 HV5 HG22 HV5:2HG2 HV5 HG23 HV5:3HG2 HV5 HG31 HV5:1HG3 HV5 HG32 HV5:2HG3 HV5 HG33 HV5:3HG3 HV5 HN1 HV7:1HN HV7 HN2 HV7:2HN HV7 HB1 HV7:1HB HV7 HB2 HV7:2HB HV7 HM1 HV7:1HM HV7 HM2 HV7:2HM HV7 HM3 HV7:3HM HV7 HN1 HV8:1HN HV8 HN2A HV8:2HN HV8 HB11 HV8:1HB1 HV8 HB12 HV8:2HB1 HV8 HB21 HV8:1HB2 HV8 HB22 HV8:2HB2 HV8 HM21 HV8:1HM2 HV8 HM22 HV8:2HM2 HV8 HM23 HV8:3HM2 HV8 H71 HWD:1H7 HWD H72 HWD:2H7 HWD H81 HWD:1H8 HWD H82 HWD:2H8 HWD H92O HWD:OH92 HWD H141 HWG:1H14 HWG H142 HWG:2H14 HWG H151 HWG:1H15 HWG H152 HWG:2H15 HWG H261 HWG:1H26 HWG H262 HWG:2H26 HWG H263 HWG:3H26 HWG H301 HWG:1H30 HWG H302 HWG:2H30 HWG H303 HWG:3H30 HWG H341 HWG:1H34 HWG H342 HWG:2H34 HWG H343 HWG:3H34 HWG H461 HWG:1H46 HWG H462 HWG:2H46 HWG H463 HWG:3H46 HWG H501 HWG:1H50 HWG H502 HWG:2H50 HWG H503 HWG:3H50 HWG H541 HWG:1H54 HWG H542 HWG:2H54 HWG H543 HWG:3H54 HWG H21 HXA:1H2 HXA H22 HXA:2H2 HXA H31 HXA:1H3 HXA H32 HXA:2H3 HXA H61 HXA:1H6 HXA H62 HXA:2H6 HXA H91 HXA:1H9 HXA H92 HXA:2H9 HXA H121 HXA:1H12 HXA H122 HXA:2H12 HXA H151 HXA:1H15 HXA H152 HXA:2H15 HXA H181 HXA:1H18 HXA H182 HXA:2H18 HXA H211 HXA:1H21 HXA H212 HXA:2H21 HXA H221 HXA:1H22 HXA H222 HXA:2H22 HXA H223 HXA:3H22 HXA HN61 HXC:1HN6 HXC HN62 HXC:2HN6 HXC H5'1 HXC:1H5' HXC H5'2 HXC:2H5' HXC HPB1 HXC:1HPB HXC HPB2 HXC:2HPB HXC HP91 HXC:1HP9 HXC HP92 HXC:2HP9 HXC HP93 HXC:3HP9 HXC HP81 HXC:1HP8 HXC HP82 HXC:2HP8 HXC HP83 HXC:3HP8 HXC HP51 HXC:1HP5 HXC HP52 HXC:2HP5 HXC HP41 HXC:1HP4 HXC HP42 HXC:2HP4 HXC HP21 HXC:1HP2 HXC HP22 HXC:2HP2 HXC HP11 HXC:1HP1 HXC HP12 HXC:2HP1 HXC HM21 HXC:1HM2 HXC HM22 HXC:2HM2 HXC HM31 HXC:1HM3 HXC HM32 HXC:2HM3 HXC HM41 HXC:1HM4 HXC HM42 HXC:2HM4 HXC HM51 HXC:1HM5 HXC HM52 HXC:2HM5 HXC HM61 HXC:1HM6 HXC HM62 HXC:2HM6 HXC HM63 HXC:3HM6 HXC H111 HXD:1H11 HXD H112 HXD:2H11 HXD H101 HXD:1H10 HXD H102 HXD:2H10 HXD H121 HXD:1H12 HXD H122 HXD:2H12 HXD H123 HXD:3H12 HXD H91 HXD:1H9 HXD H92 HXD:2H9 HXD H81 HXD:1H8 HXD H82 HXD:2H8 HXD H71 HXD:1H7 HXD H72 HXD:2H7 HXD H61 HXD:1H6 HXD H62 HXD:2H6 HXD H51 HXD:1H5 HXD H52 HXD:2H5 HXD H41 HXD:1H4 HXD H42 HXD:2H4 HXD H21 HXD:1H2 HXD H22 HXD:2H2 HXD HN21 HXL:1HN2 HXL HN22 HXL:2HN2 HXL HN61 HXL:1HN6 HXL HN62 HXL:2HN6 HXL H1'1 HXP:1H1' HXP H1'2 HXP:2H1' HXP H2'1 HXP:1H2' HXP H2'2 HXP:2H2' HXP HO2' HXP:'HO2 HXP HC HY3: H HY3 H HY3: HN HY3 HG2 HY3:1HG HY3 HG3 HY3:2HG HY3 HD3 HY3:1HD HY3 HD2 HY3:2HD HY3 H41 HYA:1H4 HYA H42 HYA:2H4 HYA H151 HYB:1H15 HYB H152 HYB:2H15 HYB H181 HYB:1H18 HYB H182 HYB:2H18 HYB H301 HYB:1H30 HYB H302 HYB:2H30 HYB H303 HYB:3H30 HYB H311 HYB:1H31 HYB H312 HYB:2H31 HYB H313 HYB:3H31 HYB H351 HYB:1H35 HYB H352 HYB:2H35 HYB H361 HYB:1H36 HYB H362 HYB:2H36 HYB H371 HYB:1H37 HYB H372 HYB:2H37 HYB H373 HYB:3H37 HYB H391 HYB:1H39 HYB H392 HYB:2H39 HYB H393 HYB:3H39 HYB H401 HYB:1H40 HYB H402 HYB:2H40 HYB H403 HYB:3H40 HYB H61 HYC:1H6 HYC H62 HYC:2H6 HYC H71 HYC:1H7 HYC H72 HYC:2H7 HYC H111 HYC:1H11 HYC H112 HYC:2H11 HYC H121 HYC:1H12 HYC H122 HYC:2H12 HYC H151 HYC:1H15 HYC H152 HYC:2H15 HYC H161 HYC:1H16 HYC H181 HYC:1H18 HYC H182 HYC:2H18 HYC H183 HYC:3H18 HYC H211 HYC:1H21 HYC H212 HYC:2H21 HYC H221 HYC:1H22 HYC H222 HYC:2H22 HYC H231 HYC:1H23 HYC H232 HYC:2H23 HYC H241 HYC:1H24 HYC H242 HYC:2H24 HYC H251 HYC:1H25 HYC H252 HYC:2H25 HYC H261 HYC:1H26 HYC H262 HYC:2H26 HYC H271 HYC:1H27 HYC H272 HYC:2H27 HYC H281 HYC:1H28 HYC H282 HYC:2H28 HYC HO21 HYC:1HO2 HYC HO31 HYC:1HO3 HYC H351 HYC:1H35 HYC H352 HYC:2H35 HYC HN41 HYC:1HN4 HYC HN42 HYC:2HN4 HYC H021 HYF:1H02 HYF H022 HYF:2H02 HYF H023 HYF:3H02 HYF H031 HYF:1H03 HYF H032 HYF:2H03 HYF H033 HYF:3H03 HYF H041 HYF:1H04 HYF H042 HYF:2H04 HYF H043 HYF:3H04 HYF H051 HYF:1H05 HYF H061 HYF:1H06 HYF H062 HYF:2H06 HYF H063 HYF:3H06 HYF H091 HYF:1H09 HYF H111 HYF:1H11 HYF H112 HYF:2H11 HYF H121 HYF:1H12 HYF H122 HYF:2H12 HYF H123 HYF:3H12 HYF H131 HYF:1H13 HYF H132 HYF:2H13 HYF H133 HYF:3H13 HYF H141 HYF:1H14 HYF H142 HYF:2H14 HYF H143 HYF:3H14 HYF H161 HYF:1H16 HYF H171 HYF:1H17 HYF H172 HYF:2H17 HYF H211 HYF:1H21 HYF H221 HYF:1H22 HYF H222 HYF:2H22 HYF H223 HYF:3H22 HYF H231 HYF:1H23 HYF H232 HYF:2H23 HYF H233 HYF:3H23 HYF H251 HYF:1H25 HYF H261 HYF:1H26 HYF H262 HYF:2H26 HYF H321 HYF:1H32 HYF H322 HYF:2H32 HYF H331 HYF:1H33 HYF H351 HYF:1H35 HYF H352 HYF:2H35 HYF H361 HYF:1H36 HYF H362 HYF:2H36 HYF H371 HYF:1H37 HYF H381 HYF:1H38 HYF H382 HYF:2H38 HYF H383 HYF:3H38 HYF H391 HYF:1H39 HYF H392 HYF:2H39 HYF H393 HYF:3H39 HYF H31A HYG:1H3 HYG H32A HYG:2H3 HYG H71 HYG:1H7 HYG H72 HYG:2H7 HYG H101 HYG:1H10 HYG H102 HYG:2H10 HYG H103 HYG:3H10 HYG H191 HYG:1H19 HYG H192 HYG:2H19 HYG H341 HYG:1H34 HYG H342 HYG:2H34 HYG H361 HYG:1H36 HYG H362 HYG:2H36 HYG HN1A HYI:1HN HYI HN2 HYI:2HN HYI HB1 HYI:1HB HYI HB2 HYI:2HB HYI HG1 HYI:1HG HYI HG2 HYI:2HG HYI H51 HYI:1H5 HYI H52 HYI:2H5 HYI H81 HYL:1H8 HYL H82 HYL:2H8 HYL H83 HYL:3H8 HYL H61 HYL:1H6 HYL H62 HYL:2H6 HYL HAI1 HYM:1HAI HYM HAI2 HYM:2HAI HYM HAH1 HYM:1HAH HYM HAH2 HYM:2HAH HYM HAQ1 HYM:1HAQ HYM HAQ2 HYM:2HAQ HYM HB2 HYP:1HB HYP HB3 HYP:2HB HYP HD22 HYP:1HD HYP HD23 HYP:2HD HYP HD1 HYP: HOD HYP H121 HYQ:1H12 HYQ H122 HYQ:2H12 HYQ H81 HYQ:1H8 HYQ H82 HYQ:2H8 HYQ H71 HYQ:1H7 HYQ H72 HYQ:2H7 HYQ H111 HYQ:1H11 HYQ H112 HYQ:2H11 HYQ HOP3 I:3HOP I HOP2 I:2HOP I H5' I:1H5* I H5'' I:2H5* I H4' I: H4* I H3' I: H3* I HO3' I:H3T I H2' I: H2* I HO2' I:2HO* I H1' I: H1* I H981 I01:1H98 I01 H982 I01:2H98 I01 H983 I01:3H98 I01 H361 I01:1H36 I01 H362 I01:2H36 I01 H351 I01:1H35 I01 H352 I01:2H35 I01 H341 I01:1H34 I01 H342 I01:2H34 I01 H321 I01:1H32 I01 H322 I01:2H32 I01 H151 I02:1H15 I02 H152 I02:2H15 I02 H153 I02:3H15 I02 H161 I02:1H16 I02 H162 I02:2H16 I02 H163 I02:3H16 I02 H171 I02:1H17 I02 H172 I02:2H17 I02 H173 I02:3H17 I02 HN31 I02:1HN3 I02 HN32 I02:2HN3 I02 H211 I02:1H21 I02 H212 I02:2H21 I02 H213 I02:3H21 I02 H221 I02:1H22 I02 H222 I02:2H22 I02 H151 I03:1H15 I03 H152 I03:2H15 I03 H153 I03:3H15 I03 H161 I03:1H16 I03 H162 I03:2H16 I03 H163 I03:3H16 I03 H171 I03:1H17 I03 H172 I03:2H17 I03 H173 I03:3H17 I03 H191 I03:1H19 I03 H192 I03:2H19 I03 HN31 I03:1HN3 I03 HN32 I03:2HN3 I03 H211 I03:1H21 I03 H212 I03:2H21 I03 H221 I03:1H22 I03 H222 I03:2H22 I03 H981 I04:1H98 I04 H982 I04:2H98 I04 H983 I04:3H98 I04 H361 I04:1H36 I04 H362 I04:2H36 I04 H351 I04:1H35 I04 H352 I04:2H35 I04 H341 I04:1H34 I04 H342 I04:2H34 I04 H321 I04:1H32 I04 H322 I04:2H32 I04 H971 I05:1H97 I05 H972 I05:2H97 I05 H973 I05:3H97 I05 H421 I05:1H42 I05 H422 I05:2H42 I05 H361 I05:1H36 I05 H362 I05:2H36 I05 H351 I05:1H35 I05 H352 I05:2H35 I05 H341 I05:1H34 I05 H342 I05:2H34 I05 H321 I05:1H32 I05 H322 I05:2H32 I05 H71 I06:1H7 I06 H81 I06:1H8 I06 H111 I06:1H11 I06 H121 I06:1H12 I06 HA1 I06:1HA I06 HA2 I06:2HA I06 HB1 I06:1HB I06 HB2 I06:2HB I06 HD11 I06:1HD1 I06 HD21 I06:1HD2 I06 HE11 I06:1HE1 I06 HE21 I06:1HE2 I06 HZ1 I06:1HZ I06 H981 I08:1H98 I08 H982 I08:2H98 I08 H983 I08:3H98 I08 H361 I08:1H36 I08 H362 I08:2H36 I08 H351 I08:1H35 I08 H352 I08:2H35 I08 H341 I08:1H34 I08 H342 I08:2H34 I08 H321 I08:1H32 I08 H322 I08:2H32 I08 H241 I0G:1H24 I0G H242 I0G:2H24 I0G H11A I0G:1H1 I0G H12 I0G:2H1 I0G H231 I0G:1H23 I0G H232 I0G:2H23 I0G H161 I10:1H16 I10 H162 I10:2H16 I10 H201 I10:1H20 I10 H202 I10:2H20 I10 H203 I10:3H20 I10 H241 I10:1H24 I10 H242 I10:2H24 I10 H243 I10:3H24 I10 H301 I10:1H30 I10 H302 I10:2H30 I10 H351 I10:1H35 I10 H352 I10:2H35 I10 H11 I11:1H1 I11 H12 I11:2H1 I11 H21 I11:1H2 I11 H22 I11:2H2 I11 H41 I11:1H4 I11 H42 I11:2H4 I11 H51 I11:1H5 I11 H52 I11:2H5 I11 H61 I11:1H6 I11 H62 I11:2H6 I11 H211 I11:1H21 I11 H212 I11:2H21 I11 H251 I11:1H25 I11 H252 I11:2H25 I11 H261 I11:1H26 I11 H262 I11:2H26 I11 H361 I11:1H36 I11 H362 I11:2H36 I11 H371 I11:1H37 I11 H372 I11:2H37 I11 H381 I11:1H38 I11 H382 I11:2H38 I11 H391 I11:1H39 I11 H392 I11:2H39 I11 H401 I11:1H40 I11 H402 I11:2H40 I11 H41 I12:1H4 I12 H42 I12:2H4 I12 H43 I12:3H4 I12 H81 I12:1H8 I12 H82 I12:2H8 I12 H83 I12:3H8 I12 H111 I12:1H11 I12 H112 I12:2H11 I12 H113 I12:3H11 I12 H121 I12:1H12 I12 H122 I12:2H12 I12 H123 I12:3H12 I12 H151 I12:1H15 I12 H152 I12:2H15 I12 H171 I12:1H17 I12 H172 I12:2H17 I12 H173 I12:3H17 I12 H181 I12:1H18 I12 H182 I12:2H18 I12 H183 I12:3H18 I12 H241 I12:1H24 I12 H242 I12:2H24 I12 H251 I12:1H25 I12 H252 I12:2H25 I12 H253 I12:3H25 I12 H261 I12:1H26 I12 H262 I12:2H26 I12 H281 I12:1H28 I12 H282 I12:2H28 I12 H291 I12:1H29 I12 H292 I12:2H29 I12 H261 I17:1H26 I17 H81 I17:1H8 I17 H181 I17:1H18 I17 H191 I17:1H19 I17 H192 I17:2H19 I17 H251 I17:1H25 I17 H241 I17:1H24 I17 H231 I17:1H23 I17 H221 I17:1H22 I17 H211 I17:1H21 I17 H101 I17:1H10 I17 H111 I17:1H11 I17 H141 I17:1H14 I17 H151 I17:1H15 I17 H152 I17:2H15 I17 H161 I17:1H16 I17 H162 I17:2H16 I17 H121 I17:1H12 I17 H122 I17:2H12 I17 H131 I17:1H13 I17 H132 I17:2H13 I17 H171 I17:1H17 I17 H172 I17:2H17 I17 H301 I17:1H30 I17 H302 I17:2H30 I17 H291 I17:1H29 I17 H292 I17:2H29 I17 H271 I17:1H27 I17 H272 I17:2H27 I17 H281 I17:1H28 I17 H282 I17:2H28 I17 H9C1 I1H:1H9C I1H H9C2 I1H:2H9C I1H H101 I1H:1H10 I1H H102 I1H:2H10 I1H H251 I1H:1H25 I1H H252 I1H:2H25 I1H H291 I1H:1H29 I1H H292 I1H:2H29 I1H H301 I1H:1H30 I1H H302 I1H:2H30 I1H H321 I1H:1H32 I1H H322 I1H:2H32 I1H H331 I1H:1H33 I1H H332 I1H:2H33 I1H H7C1 I1H:1H7C I1H H7C2 I1H:2H7C I1H H7C3 I1H:3H7C I1H H251 I1P:1H25 I1P H252 I1P:2H25 I1P H261 I1P:1H26 I1P H262 I1P:2H26 I1P H271 I1P:1H27 I1P H272 I1P:2H27 I1P H291 I1P:1H29 I1P H292 I1P:2H29 I1P H293 I1P:3H29 I1P H301 I1P:1H30 I1P H302 I1P:2H30 I1P H303 I1P:3H30 I1P H71 I22:1H7 I22 H72 I22:2H7 I22 H21 I22:1H2 I22 H22 I22:2H2 I22 H191 I25:1H19 I25 H192 I25:2H19 I25 H211 I25:1H21 I25 H212 I25:2H21 I25 H221 I25:1H22 I25 H222 I25:2H22 I25 H223 I25:3H22 I25 H241 I25:1H24 I25 H242 I25:2H24 I25 H261 I25:1H26 I25 H262 I25:2H26 I25 H263 I25:3H26 I25 H271 I25:1H27 I25 H272 I25:2H27 I25 H273 I25:3H27 I25 H281 I25:1H28 I25 H282 I25:2H28 I25 H311 I25:1H31 I25 H312 I25:2H31 I25 H313 I25:3H31 I25 H301 I25:1H30 I25 H302 I25:2H30 I25 H303 I25:3H30 I25 H201 I26:1H20 I26 H202 I26:2H20 I26 H211 I26:1H21 I26 H212 I26:2H21 I26 H221 I26:1H22 I26 H222 I26:2H22 I26 H223 I26:3H22 I26 H241 I26:1H24 I26 H242 I26:2H24 I26 H261 I26:1H26 I26 H262 I26:2H26 I26 H263 I26:3H26 I26 H271 I26:1H27 I26 H272 I26:2H27 I26 H273 I26:3H27 I26 H281 I26:1H28 I26 H282 I26:2H28 I26 H311 I26:1H31 I26 H312 I26:2H31 I26 H313 I26:3H31 I26 H301 I26:1H30 I26 H302 I26:2H30 I26 H303 I26:3H30 I26 HO22 I2P:2HO2 I2P HO23 I2P:3HO2 I2P HO42 I2P:2HO4 I2P HO43 I2P:3HO4 I2P HO52 I2P:2HO5 I2P HO53 I2P:3HO5 I2P H11 I38:1H1 I38 H12 I38:2H1 I38 H21 I38:1H2 I38 H22 I38:2H2 I38 H511 I38:1H51 I38 H512 I38:2H51 I38 H513 I38:3H51 I38 H3' I3A: H3* I3A H11 I3N:1H1 I3N H12 I3N:2H1 I3N H13 I3N:3H1 I3N H121 I3N:1H12 I3N H122 I3N:2H12 I3N H161 I3N:1H16 I3N H162 I3N:2H16 I3N H163 I3N:3H16 I3N H171 I3N:1H17 I3N H172 I3N:2H17 I3N HO12 I3P:2HO1 I3P HO13 I3P:3HO1 I3P HO42 I3P:2HO4 I3P HO43 I3P:3HO4 I3P HO52 I3P:2HO5 I3P HO53 I3P:3HO5 I3P H12 I40:2H1 I40 H11 I40:1H1 I40 H22 I40:2H2 I40 H21 I40:1H2 I40 H32 I40:2H3 I40 H31 I40:1H3 I40 H42 I40:2H4 I40 H41 I40:1H4 I40 H2N1 I40:1H2N I40 H142 I40:2H14 I40 H141 I40:1H14 I40 HA21 I48:1HA2 I48 HA22 I48:2HA2 I48 HA31 I48:1HA3 I48 HA32 I48:2HA3 I48 H271 I48:1H27 I48 H272 I48:2H27 I48 H273 I48:3H27 I48 H1'1 I4B:1H1' I4B H1'2 I4B:2H1' I4B H3'1 I4B:1H3' I4B H3'2 I4B:2H3' I4B H3'3 I4B:3H3' I4B H4'1 I4B:1H4' I4B H4'2 I4B:2H4' I4B H4'3 I4B:3H4' I4B H381 I52:1H38 I52 H382 I52:2H38 I52 H391 I52:1H39 I52 H392 I52:2H39 I52 H393 I52:3H39 I52 H371 I52:1H37 I52 H372 I52:2H37 I52 H351 I52:1H35 I52 H352 I52:2H35 I52 H361 I52:1H36 I52 H362 I52:2H36 I52 H251 I52:1H25 I52 H252 I52:2H25 I52 H253 I52:3H25 I52 H241 I52:1H24 I52 H242 I52:2H24 I52 H243 I52:3H24 I52 H71 I52:1H7 I52 H72 I52:2H7 I52 H91 I52:1H9 I52 H92 I52:2H9 I52 H131 I52:1H13 I52 H132 I52:2H13 I52 H121 I52:1H12 I52 H122 I52:2H12 I52 H101 I52:1H10 I52 H102 I52:2H10 I52 H61 I52:1H6 I52 H62 I52:2H6 I52 H I58:1HN I58 H2 I58:2HN I58 HB2 I58:1HB I58 HB3 I58:2HB I58 HD2 I58:1HD I58 HD3 I58:2HD I58 HE2 I58:1HE I58 HE3 I58:2HE I58 HZ I58:1HZ I58 HT1 I58:1HT I58 HT2 I58:2HT I58 HT3 I58:3HT I58 HOP2 I5C:2HOP I5C H41 I5C:1H4 I5C H42 I5C:2H4 I5C H2' I5C:1H2* I5C H2'' I5C:2H2* I5C H5' I5C:1H5* I5C H5'' I5C:2H5* I5C H4' I5C: H4* I5C H1' I5C: H1* I5C H3' I5C: H3* I5C HO3' I5C:H3T I5C HOP3 I5C:3HOP I5C H6C1 I5S:1H6C I5S H6C2 I5S:2H6C I5S H8C1 I5S:1H8C I5S H8C2 I5S:2H8C I5S H9C1 I5S:1H9C I5S H9C2 I5S:2H9C I5S H131 I5S:1H13 I5S H132 I5S:2H13 I5S H141 I5S:1H14 I5S H142 I5S:2H14 I5S HN11 I7A:1HN1 I7A HN12 I7A:2HN1 I7A HN21 I7A:1HN2 I7A HN22 I7A:2HN2 I7A HN11 I7B:1HN1 I7B HN12 I7B:2HN1 I7B HN21 I7B:1HN2 I7B HN22 I7B:2HN2 I7B HN31 I7B:1HN3 I7B HN32 I7B:2HN3 I7B HN11 I7C:1HN1 I7C HN12 I7C:2HN1 I7C HN21 I7C:1HN2 I7C HN22 I7C:2HN2 I7C HN31 I7C:1HN3 I7C HN32 I7C:2HN3 I7C H111 I84:1H11 I84 H112 I84:2H11 I84 H113 I84:3H11 I84 H151 I84:1H15 I84 H152 I84:2H15 I84 H291 I84:1H29 I84 H292 I84:2H29 I84 H293 I84:3H29 I84 H331 I84:1H33 I84 H332 I84:2H33 I84 H333 I84:3H33 I84 H391 I84:1H39 I84 H392 I84:2H39 I84 HN21 I8S:1HN2 I8S HN22 I8S:2HN2 I8S H1' I8S: H1* I8S H2' I8S: H2* I8S H4' I8S: H4* I8S HO3' I8S:HO3* I8S H5' I8S: H5* I8S H6' I8S: H6* I8S HO4' I8S:HO4* I8S HO5' I8S:HO5* I8S H7' I8S: H7* I8S H8' I8S: H8* I8S HO7' I8S:HO7* I8S H9'1 I8S:1H9* I8S H9'2 I8S:2H9* I8S H111 I8S:1H11 I8S H112 I8S:2H11 I8S H113 I8S:3H11 I8S H101 I96:1H10 I96 H102 I96:2H10 I96 H103 I96:3H10 I96 H111 I96:1H11 I96 H112 I96:2H11 I96 H113 I96:3H11 I96 H171 I96:1H17 I96 H172 I96:2H17 I96 H201 IA:1H20 IA H202 IA:2H20 IA H211 IA:1H21 IA H212 IA:2H21 IA H221 IA:1H22 IA H222 IA:2H22 IA H231 IA:1H23 IA H232 IA:2H23 IA H241 IA:1H24 IA H242 IA:2H24 IA H243 IA:3H24 IA H171 IAA:1H17 IAA H172 IAA:2H17 IAA H21 IAA:1H2 IAA H22 IAA:2H2 IAA H161 IAA:1H16 IAA H162 IAA:2H16 IAA H6X1 IAB:1H6X IAB H6X2 IAB:2H6X IAB H6Y1 IAB:1H6Y IAB H6Y2 IAB:2H6Y IAB H6Y3 IAB:3H6Y IAB H7Z1 IAB:1H7Z IAB H7Z2 IAB:2H7Z IAB H6W1 IAB:1H6W IAB H6W2 IAB:2H6W IAB H171 IAC:1H17 IAC H172 IAC:2H17 IAC HB1 IAD:1HB IAD HB2 IAD:2HB IAD H1 IAD:1H IAD H2A IAD:2H IAD H111 IAG:1H11 IAG H112 IAG:2H11 IAG HC91 IAG:1HC9 IAG HC92 IAG:2HC9 IAG HB1 IAM:1HB IAM HT1 IAM:1HT IAM HT2 IAM:2HT IAM HK11 IAM:1HK1 IAM HK12 IAM:2HK1 IAM HK13 IAM:3HK1 IAM HK21 IAM:1HK2 IAM HK22 IAM:2HK2 IAM HK23 IAM:3HK2 IAM HO11 IAP:1HO1 IAP HO21 IAP:1HO2 IAP H21 IAP:1H2 IAP H31 IAP:1H3 IAP H41 IAP:1H4 IAP H61 IAP:1H6 IAP HN11 IAP:1HN1 IAP H81 IAP:1H8 IAP H82 IAP:2H8 IAP H IAS:1HN IAS H2 IAS:2HN IAS HB2 IAS:1HB IAS HB3 IAS:2HB IAS H141 IAV:1H14 IAV H142 IAV:2H14 IAV H143 IAV:3H14 IAV H151 IAV:1H15 IAV H152 IAV:2H15 IAV H153 IAV:3H15 IAV HC91 IAV:1HC9 IAV HC92 IAV:2HC9 IAV H201 IB:1H20 IB H202 IB:2H20 IB H211 IB:1H21 IB H212 IB:2H21 IB H221 IB:1H22 IB H222 IB:2H22 IB H231 IB:1H23 IB H232 IB:2H23 IB H241 IB:1H24 IB H242 IB:2H24 IB H243 IB:3H24 IB HN21 IB:1HN2 IB HN22 IB:2HN2 IB HN23 IB:3HN2 IB HOA2 IB2:2HOA IB2 H3A1 IB2:1H3A IB2 H3A2 IB2:2H3A IB2 HOB2 IB2:2HOB IB2 HSG2 IB2:2HSG IB2 H5'1 IB2:1H5* IB2 H5'2 IB2:2H5* IB2 H4D IB2: H4* IB2 H3D IB2: H3* IB2 HO3' IB2:*HO3 IB2 H2D IB2: H2* IB2 HO2' IB2:*HO2 IB2 H1D IB2: H1* IB2 H51X IB2:1H5' IB2 H52X IB2:2H5' IB2 HO3X IB2:'HO3 IB2 HO2X IB2:'HO2 IB2 HN61 IB2:1HN6 IB2 HN62 IB2:2HN6 IB2 H8A IB2: AH8 IB2 HNA1 IB2:1HNA IB2 HNA2 IB2:2HNA IB2 H2A IB2: AH2 IB2 H151 IBA:1H15 IBA H152 IBA:2H15 IBA H141 IBA:1H14 IBA H142 IBA:2H14 IBA H181 IBA:1H18 IBA H182 IBA:2H18 IBA H171 IBA:1H17 IBA H172 IBA:2H17 IBA H11 IBA:1H1 IBA H12 IBA:2H1 IBA H111 IBA:1H11 IBA H112 IBA:2H11 IBA H121 IBA:1H12 IBA H122 IBA:2H12 IBA H123 IBA:3H12 IBA H91 IBA:1H9 IBA H92 IBA:2H9 IBA H101 IBA:1H10 IBA H102 IBA:2H10 IBA H103 IBA:3H10 IBA H21A IBB:1H2 IBB H22 IBB:2H2 IBB H31 IBB:1H3 IBB H32 IBB:2H3 IBB HN21 IBC:1HN2 IBC HN22 IBC:2HN2 IBC H91 IBC:1H9 IBC H92 IBC:2H9 IBC H61 IBC:1H6 IBC H62 IBC:2H6 IBC H71 IBC:1H7 IBC H72 IBC:2H7 IBC H81 IBC:1H8 IBC H82 IBC:2H8 IBC HN11 IBG:1HN1 IBG HN12 IBG:2HN1 IBG HA1C IBG:CHA1 IBG HCB1 IBG:1HCB IBG HCB2 IBG:2HCB IBG HCG1 IBG:1HCG IBG HCG2 IBG:2HCG IBG HA2C IBG:CHA2 IBG HB21 IBG:1HB2 IBG HB22 IBG:2HB2 IBG HC31 IBG:1HC3 IBG HC32 IBG:2HC3 IBG HCS1 IBG:1HCS IBG HCS2 IBG:2HCS IBG H101 IBM:1H10 IBM H102 IBM:2H10 IBM H103 IBM:3H10 IBM H111 IBM:1H11 IBM H112 IBM:2H11 IBM H131 IBM:1H13 IBM H132 IBM:2H13 IBM H133 IBM:3H13 IBM H141 IBM:1H14 IBM H142 IBM:2H14 IBM H143 IBM:3H14 IBM H41 IBN:1H4 IBN H42 IBN:2H4 IBN H43 IBN:3H4 IBN H31 IBN:1H3 IBN H32 IBN:2H3 IBN H33 IBN:3H3 IBN H11 IBN:1H1 IBN H12 IBN:2H1 IBN HN1 IBN:1HN IBN HN2 IBN:2HN IBN HAN1 IBO:1HAN IBO HAN2 IBO:2HAN IBO HB21 IBO:1HB2 IBO HB22 IBO:2HB2 IBO HB23 IBO:3HB2 IBO HB11 IBO:1HB1 IBO HB12 IBO:2HB1 IBO HB13 IBO:3HB1 IBO H21 IBP:1H2 IBP H22 IBP:2H2 IBP H31 IBP:1H3 IBP H41 IBP:1H4 IBP H42 IBP:2H4 IBP H43 IBP:3H4 IBP H51 IBP:1H5 IBP H52 IBP:2H5 IBP H53 IBP:3H5 IBP H61 IBP:1H6 IBP H71 IBP:1H7 IBP H72 IBP:2H7 IBP H73 IBP:3H7 IBP H91 IBP:1H9 IBP H101 IBP:1H10 IBP H121 IBP:1H12 IBP H131 IBP:1H13 IBP HN1 IBR:1HN IBR HN2 IBR:2HN IBR H21 IBR:1H2 IBR H22 IBR:2H2 IBR HE11 IBR:1HE1 IBR HE12 IBR:2HE1 IBR HE21 IBR:1HE2 IBR HE22 IBR:2HE2 IBR H211 IBS:1H21 IBS H212 IBS:2H21 IBS H251 IBS:1H25 IBS HO13 IBS:3HO1 IBS HO42 IBS:2HO4 IBS HO43 IBS:3HO4 IBS HO52 IBS:2HO5 IBS HO53 IBS:3HO5 IBS H1 IBZ:1H IBZ H2 IBZ:2H IBZ HOP2 IC:2HOP IC HOP3 IC:3HOP IC HO3' IC:H3T IC H1' IC: H1* IC H2' IC: H2* IC H3' IC: H3* IC H4' IC: H4* IC H5' IC:1H5* IC H5'' IC:2H5* IC HO2' IC:2HO* IC H21 IC:1H2 IC H22 IC:2H2 IC H41 IC1:1H4 IC1 H51 IC1:1H5 IC1 H61 IC1:1H6 IC1 H71 IC1:1H7 IC1 H101 IC1:1H10 IC1 H3'1 IC1:1H3' IC1 H5'1 IC1:1H5' IC1 H111 IC1:1H11 IC1 H112 IC1:2H11 IC1 H113 IC1:3H11 IC1 H121 IC1:1H12 IC1 H122 IC1:2H12 IC1 H123 IC1:3H12 IC1 H131 IC1:1H13 IC1 H132 IC1:2H13 IC1 H133 IC1:3H13 IC1 H41 ICA:1H4 ICA H42 ICA:2H4 ICA H41 ICI:1H4 ICI H42 ICI:2H4 ICI H111 ICL:1H11 ICL H112 ICL:2H11 ICL H113 ICL:3H11 ICL H121 ICL:1H12 ICL H122 ICL:2H12 ICL H123 ICL:3H12 ICL H151 ICL:1H15 ICL H152 ICL:2H15 ICL H153 ICL:3H15 ICL H161 ICL:1H16 ICL H162 ICL:2H16 ICL H163 ICL:3H16 ICL H171 ICL:1H17 ICL H172 ICL:2H17 ICL H173 ICL:3H17 ICL H11 ICN:1H1 ICN H12 ICN:2H1 ICN H13 ICN:3H1 ICN H31 ICN:1H3 ICN H32 ICN:2H3 ICN H33 ICN:3H3 ICN H51 ICN:1H5 ICN H52 ICN:2H5 ICN H53 ICN:3H5 ICN HM21 ICP:1HM2 ICP HM22 ICP:2HM2 ICP HM23 ICP:3HM2 ICP H6A1 ICP:1H6A ICP H7A1 ICP:1H7A ICP H7A2 ICP:2H7A ICP H5'1 ICR:1H5' ICR H5'2 ICR:2H5' ICR H41 ICT:1H4 ICT H42 ICT:2H4 ICT HN11 ICU:1HN1 ICU HN12 ICU:2HN1 ICU H101 ICU:1H10 ICU H102 ICU:2H10 ICU H103 ICU:3H10 ICU H121 ICU:1H12 ICU H122 ICU:2H12 ICU H123 ICU:3H12 ICU HO5' ID2:*HO5 ID2 H5'1 ID2:1H5* ID2 H5'2 ID2:2H5* ID2 H4' ID2: H4* ID2 H1' ID2: H1* ID2 H2'1 ID2:1H2* ID2 H2'2 ID2:2H2* ID2 H3' ID2: H3* ID2 HO3' ID2:*HO3 ID2 H181 ID5:1H18 ID5 H182 ID5:2H18 ID5 H201 ID5:1H20 ID5 H202 ID5:2H20 ID5 HN21 IDA:1HN2 IDA HN22 IDA:2HN2 IDA HC91 IDA:1HC9 IDA HC92 IDA:2HC9 IDA H121 IDA:1H12 IDA H122 IDA:2H12 IDA H131 IDA:1H13 IDA H132 IDA:2H13 IDA H141 IDA:1H14 IDA H142 IDA:2H14 IDA H143 IDA:3H14 IDA H111 IDA:1H11 IDA H112 IDA:2H11 IDA H8C1 IDB:1H8C IDB H8C2 IDB:2H8C IDB H101 IDB:1H10 IDB H102 IDB:2H10 IDB H111 IDB:1H11 IDB H112 IDB:2H11 IDB H191 IDB:1H19 IDB H192 IDB:2H19 IDB HCA1 IDC:1HCA IDC HCA2 IDC:2HCA IDC HCB1 IDC:1HCB IDC HCB2 IDC:2HCB IDC H21 IDD:1H2 IDD H31 IDD:1H3 IDD H41 IDD:1H4 IDD H51 IDD:1H5 IDD H61 IDD:1H6 IDD H2B1 IDD:1H2B IDD H3B1 IDD:1H3B IDD H4B1 IDD:1H4B IDD H5B1 IDD:1H5B IDD H6B1 IDD:1H6B IDD H6B2 IDD:2H6B IDD HO21 IDD:1HO2 IDD HO31 IDD:1HO3 IDD HO41 IDD:1HO4 IDD HO61 IDD:1HO6 IDD H8B1 IDD:1H8B IDD H6B1 IDE:1H6B IDE H6B2 IDE:2H6B IDE H71 IDE:1H7 IDE H72 IDE:2H7 IDE HN21 IDG:1HN2 IDG HN22 IDG:2HN2 IDG H61 IDG:1H6 IDG H62 IDG:2H6 IDG HN61 IDG:1HN6 IDG HN62 IDG:2HN6 IDG H6C1 IDH:1H6C IDH H6C2 IDH:2H6C IDH HC41 IDI:1HC4 IDI HC51 IDI:1HC5 IDI HC71 IDI:1HC7 IDI HC11 IDI:1HC1 IDI HC12 IDI:2HC1 IDI HC21 IDI:1HC2 IDI HC22 IDI:2HC2 IDI HC31 IDI:1HC3 IDI HC32 IDI:2HC3 IDI HN11 IDI:1HN1 IDI H21 IDM:1H2 IDM H22 IDM:2H2 IDM H31 IDM:1H3 IDM H32 IDM:2H3 IDM H121 IDN:1H12 IDN H122 IDN:2H12 IDN H123 IDN:3H12 IDN H131 IDN:1H13 IDN H132 IDN:2H13 IDN H201 IDN:1H20 IDN H202 IDN:2H20 IDN H203 IDN:3H20 IDN H251 IDN:1H25 IDN H252 IDN:2H25 IDN H261 IDN:1H26 IDN H262 IDN:2H26 IDN HOB2 IDP:2HOB IDP HOB3 IDP:3HOB IDP HOA2 IDP:2HOA IDP H5'1 IDP:1H5* IDP H5'2 IDP:2H5* IDP H4' IDP: H4* IDP H3' IDP: H3* IDP HO3' IDP:*HO3 IDP H2' IDP: H2* IDP HO2' IDP:*HO2 IDP H1' IDP: H1* IDP HOS3 IDS:3HOS IDS H11 IDU:1H1 IDU H12 IDU:2H1 IDU H41 IDU:1H4 IDU H42 IDU:2H4 IDU HOS3 IDU:3HOS IDU H71 IEM:1H7 IEM H72 IEM:2H7 IEM H91 IEM:1H9 IEM H92 IEM:2H9 IEM H93 IEM:3H9 IEM H101 IEM:1H10 IEM H102 IEM:2H10 IEM H103 IEM:3H10 IEM H121 IEM:1H12 IEM H122 IEM:2H12 IEM H123 IEM:3H12 IEM H71 IET:1H7 IET H72 IET:2H7 IET HA31 IEY:1HA3 IEY HA32 IEY:2HA3 IEY HB21 IEY:1HB2 IEY HB22 IEY:2HB2 IEY HAM1 IFA:1HAM IFA HAM2 IFA:2HAM IFA HAN1 IFA:1HAN IFA HAN2 IFA:2HAN IFA HAA1 IFA:1HAA IFA HAA2 IFA:2HAA IFA HAA3 IFA:3HAA IFA HAN1 IFB:1HAN IFB HAN2 IFB:2HAN IFB HAM1 IFB:1HAM IFB HAM2 IFB:2HAM IFB HC61 IFG:1HC6 IFG HC62 IFG:2HC6 IFG HC81 IFG:1HC8 IFG HC82 IFG:2HC8 IFG HC83 IFG:3HC8 IFG HC91 IFG:1HC9 IFG HC92 IFG:2HC9 IFG H7C1 IFL:1H7C IFL H7C2 IFL:2H7C IFL H6C1 IFL:1H6C IFL H6C2 IFL:2H6C IFL H2C1 IFM:1H2C IFM H2C2 IFM:2H2C IFM H1C1 IFM:1H1C IFM H1C2 IFM:2H1C IFM H6C1 IFM:1H6C IFM H6C2 IFM:2H6C IFM H6A1 IFP:1H6A IFP H7A1 IFP:1H7A IFP H7A2 IFP:2H7A IFP HOP2 IG:2HOP IG HOP3 IG:3HOP IG HO3' IG:H3T IG H1' IG: H1* IG H2' IG: H2* IG H3' IG: H3* IG H4' IG: H4* IG H5' IG:1H5* IG H5'' IG:2H5* IG HO2' IG:2HO* IG H61 IG:1H6 IG H62 IG:2H6 IG H2O1 IG4:1H2O IG4 H3O1 IG4:1H3O IG4 H612 IG4:2H61 IG4 H611 IG4:1H61 IG4 H713 IG4:3H71 IG4 H712 IG4:2H71 IG4 H711 IG4:1H71 IG4 H2O2 IG4:2H2O IG4 H3O2 IG4:2H3O IG4 H622 IG4:2H62 IG4 H621 IG4:1H62 IG4 H2O3 IG4:3H2O IG4 H3O3 IG4:3H3O IG4 H632 IG4:2H63 IG4 H631 IG4:1H63 IG4 H2O4 IG4:4H2O IG4 H3O4 IG4:4H3O IG4 H4O1 IG4:1H4O IG4 H642 IG4:2H64 IG4 H641 IG4:1H64 IG4 H11A IGC:1H1 IGC H12A IGC:2H1 IGC H13A IGC:3H1 IGC H21 IGC:1H2 IGC H22A IGC:2H2 IGC H31A IGC:1H3 IGC H32A IGC:2H3 IGC H41 IGC:1H4 IGC H42 IGC:2H4 IGC H51 IGC:1H5 IGC H52 IGC:2H5 IGC H61 IGC:1H6 IGC H62 IGC:2H6 IGC H71 IGC:1H7 IGC H72 IGC:2H7 IGC H81 IGC:1H8 IGC H82 IGC:2H8 IGC H91 IGC:1H9 IGC H92 IGC:2H9 IGC H101 IGC:1H10 IGC H102 IGC:2H10 IGC H111 IGC:1H11 IGC H112 IGC:2H11 IGC H121 IGC:1H12 IGC H122 IGC:2H12 IGC H131 IGC:1H13 IGC H132 IGC:2H13 IGC H181 IGC:1H18 IGC H182 IGC:2H18 IGC H211 IGC:1H21 IGC H212 IGC:2H21 IGC H251 IGC:1H25 IGC H252 IGC:2H25 IGC H301 IGC:1H30 IGC H302 IGC:2H30 IGC H381 IGC:1H38 IGC H382 IGC:2H38 IGC H391 IGC:1H39 IGC H392 IGC:2H39 IGC H401 IGC:1H40 IGC H402 IGC:2H40 IGC H411 IGC:1H41 IGC H412 IGC:2H41 IGC H421 IGC:1H42 IGC H422 IGC:2H42 IGC H431 IGC:1H43 IGC H432 IGC:2H43 IGC H441 IGC:1H44 IGC H442 IGC:2H44 IGC H443 IGC:3H44 IGC H IGL:1HN IGL H2 IGL:2HN IGL HG12 IGL:1HG1 IGL HG13 IGL:2HG1 IGL HG22 IGL:1HG2 IGL HG23 IGL:2HG2 IGL H31 IGN:1H3 IGN H41 IGN:1H4 IGN H42 IGN:2H4 IGN H51 IGN:1H5 IGN H52 IGN:2H5 IGN H61 IGN:1H6 IGN H62 IGN:2H6 IGN H71 IGN:1H7 IGN H91 IGN:1H9 IGN H101 IGN:1H10 IGN H102 IGN:2H10 IGN H121 IGN:1H12 IGN H131 IGN:1H13 IGN H132 IGN:2H13 IGN H141 IGN:1H14 IGN H142 IGN:2H14 IGN H151 IGN:1H15 IGN H152 IGN:2H15 IGN H161 IGN:1H16 IGN H162 IGN:2H16 IGN H331 IGN:1H33 IGN H341 IGN:1H34 IGN H342 IGN:2H34 IGN H511 IGN:1H51 IGN H512 IGN:2H51 IGN H521 IGN:1H52 IGN H531 IGN:1H53 IGN H532 IGN:2H53 IGN H541 IGN:1H54 IGN H542 IGN:2H54 IGN H551 IGN:1H55 IGN H552 IGN:2H55 IGN H561 IGN:1H56 IGN H562 IGN:2H56 IGN H211 IGN:1H21 IGN H221 IGN:1H22 IGN H222 IGN:2H22 IGN H251 IGN:1H25 IGN H11 IGP:1H1 IGP H12 IGP:2H1 IGP HOP1 IGP:1HOP IGP HOP2 IGP:2HOP IGP HOP2 IGU:2HOP IGU HOP3 IGU:3HOP IGU H5' IGU:1H5* IGU H5'' IGU:2H5* IGU H4' IGU: H4* IGU H3' IGU: H3* IGU HO3' IGU:*HO3 IGU H2' IGU:1H2* IGU H2'' IGU:2H2* IGU H1' IGU: H1* IGU HN61 IGU:1HN6 IGU HN62 IGU:2HN6 IGU H231 IH1:1H23 IH1 H232 IH1:2H23 IH1 H221 IH1:1H22 IH1 H222 IH1:2H22 IH1 H161 IH1:1H16 IH1 H162 IH1:2H16 IH1 HC11 IH1:1HC1 IH1 HC12 IH1:2HC1 IH1 HC31 IH1:1HC3 IH1 HC32 IH1:2HC3 IH1 HC41 IH1:1HC4 IH1 HC42 IH1:2HC4 IH1 HC61 IH1:1HC6 IH1 HC62 IH1:2HC6 IH1 HC71 IH1:1HC7 IH1 HC72 IH1:2HC7 IH1 H111 IH1:1H11 IH1 H112 IH1:2H11 IH1 H11 IH2:1H1 IH2 H12 IH2:2H1 IH2 H101 IH2:1H10 IH2 H102 IH2:2H10 IH2 H71 IH2:1H7 IH2 H72 IH2:2H7 IH2 H61 IH2:1H6 IH2 H62 IH2:2H6 IH2 H41 IH2:1H4 IH2 H42 IH2:2H4 IH2 H31 IH2:1H3 IH2 H32A IH2:2H3 IH2 H171 IH2:1H17 IH2 H172 IH2:2H17 IH2 H161 IH2:1H16 IH2 H162 IH2:2H16 IH2 H163 IH2:3H16 IH2 H231 IH2:1H23 IH2 H232 IH2:2H23 IH2 HNB1 IH3:1HNB IH3 HNB2 IH3:2HNB IH3 HC71 IH3:1HC7 IH3 HC72 IH3:2HC7 IH3 HC91 IH3:1HC9 IH3 HC92 IH3:2HC9 IH3 HC41 IH3:1HC4 IH3 HC42 IH3:2HC4 IH3 HC61 IH3:1HC6 IH3 HC62 IH3:2HC6 IH3 H161 IH3:1H16 IH3 H162 IH3:2H16 IH3 H151 IH3:1H15 IH3 H152 IH3:2H15 IH3 H153 IH3:3H15 IH3 H221 IH3:1H22 IH3 H222 IH3:2H22 IH3 H291 IH4:1H29 IH4 H292 IH4:2H29 IH4 H293 IH4:3H29 IH4 H251 IH4:1H25 IH4 H252 IH4:2H25 IH4 H161 IH4:1H16 IH4 H162 IH4:2H16 IH4 H381 IH4:1H38 IH4 H382 IH4:2H38 IH4 H391 IH4:1H39 IH4 H392 IH4:2H39 IH4 H401 IH4:1H40 IH4 H402 IH4:2H40 IH4 H411 IH4:1H41 IH4 H412 IH4:2H41 IH4 H421 IH4:1H42 IH4 H422 IH4:2H42 IH4 H423 IH4:3H42 IH4 H5C1 IH4:1H5C IH4 H5C2 IH4:2H5C IH4 H6C1 IH4:1H6C IH4 H6C2 IH4:2H6C IH4 H141 IH4:1H14 IH4 H142 IH4:2H14 IH4 H151 IH4:1H15 IH4 H152 IH4:2H15 IH4 H8C1 IH4:1H8C IH4 H8C2 IH4:2H8C IH4 H131 IH5:1H13 IH5 H132 IH5:2H13 IH5 H161 IH5:1H16 IH5 H162 IH5:2H16 IH5 H163 IH5:3H16 IH5 H181 IH5:1H18 IH5 H182 IH5:2H18 IH5 H183 IH5:3H18 IH5 HL51 IH5:1HL5 IH5 HL52 IH5:2HL5 IH5 HL53 IH5:3HL5 IH5 HL61 IH5:1HL6 IH5 HL62 IH5:2HL6 IH5 HL63 IH5:3HL6 IH5 H11 IH6:1H1 IH6 H12 IH6:2H1 IH6 H13 IH6:3H1 IH6 H41 IH6:1H4 IH6 H42 IH6:2H4 IH6 H111 IH6:1H11 IH6 H112 IH6:2H11 IH6 H121 IH6:1H12 IH6 H122 IH6:2H12 IH6 H161 IH6:1H16 IH6 H162 IH6:2H16 IH6 H163 IH6:3H16 IH6 H171 IH6:1H17 IH6 H172 IH6:2H17 IH6 H173 IH6:3H17 IH6 H171 IHD:1H17 IHD H172 IHD:2H17 IHD H173 IHD:3H17 IHD H161 IHD:1H16 IHD H162 IHD:2H16 IHD H151 IHD:1H15 IHD H152 IHD:2H15 IHD H141 IHD:1H14 IHD H142 IHD:2H14 IHD H131 IHD:1H13 IHD H132 IHD:2H13 IHD H121 IHD:1H12 IHD H122 IHD:2H12 IHD H111 IHD:1H11 IHD H112 IHD:2H11 IHD H101 IHD:1H10 IHD H102 IHD:2H10 IHD H91 IHD:1H9 IHD H92 IHD:2H9 IHD H81 IHD:1H8 IHD H82 IHD:2H8 IHD H71 IHD:1H7 IHD H72 IHD:2H7 IHD H61 IHD:1H6 IHD H62 IHD:2H6 IHD H51 IHD:1H5 IHD H52 IHD:2H5 IHD H41 IHD:1H4 IHD H42 IHD:2H4 IHD H31 IHD:1H3 IHD H32 IHD:2H3 IHD H21 IHD:1H2 IHD H22 IHD:2H2 IHD H011 IHE:1H01 IHE H012 IHE:2H01 IHE H021 IHE:1H02 IHE H022 IHE:2H02 IHE H041 IHE:1H04 IHE H042 IHE:2H04 IHE H051 IHE:1H05 IHE H052 IHE:2H05 IHE H151 IHE:1H15 IHE H152 IHE:2H15 IHE H153 IHE:3H15 IHE H161 IHE:1H16 IHE H162 IHE:2H16 IHE H171 IHE:1H17 IHE H172 IHE:2H17 IHE H301 IHE:1H30 IHE H302 IHE:2H30 IHE H311 IHE:1H31 IHE H312 IHE:2H31 IHE H321 IHE:1H32 IHE H322 IHE:2H32 IHE H331 IHE:1H33 IHE H332 IHE:2H33 IHE H341 IHE:1H34 IHE H342 IHE:2H34 IHE H11 IHG:1H1 IHG H12 IHG:2H1 IHG H13 IHG:3H1 IHG H21 IHG:1H2 IHG H31 IHG:1H3 IHG H32 IHG:2H3 IHG H33 IHG:3H3 IHG HE1 IHG:1HE IHG HH11 IHG:1HH1 IHG HH21 IHG:1HH2 IHG HH1 IHG:1HH IHG H131 IHI:1H13 IHI H132 IHI:2H13 IHI H141 IHI:1H14 IHI H142 IHI:2H14 IHI H151 IHI:1H15 IHI H152 IHI:2H15 IHI H161 IHI:1H16 IHI H162 IHI:2H16 IHI H391 IHI:1H39 IHI H392 IHI:2H39 IHI H401 IHI:1H40 IHI H402 IHI:2H40 IHI H411 IHI:1H41 IHI H412 IHI:2H41 IHI H171 IHJ:1H17 IHJ H172 IHJ:2H17 IHJ H181 IHJ:1H18 IHJ H182 IHJ:2H18 IHJ H191 IHJ:1H19 IHJ H192 IHJ:2H19 IHJ H201 IHJ:1H20 IHJ H202 IHJ:2H20 IHJ H411 IHJ:1H41 IHJ H412 IHJ:2H41 IHJ H421 IHJ:1H42 IHJ H422 IHJ:2H42 IHJ H431 IHJ:1H43 IHJ H432 IHJ:2H43 IHJ H521 IHJ:1H52 IHJ H522 IHJ:2H52 IHJ H531 IHJ:1H53 IHJ H532 IHJ:2H53 IHJ H551 IHJ:1H55 IHJ H552 IHJ:2H55 IHJ H561 IHJ:1H56 IHJ H562 IHJ:2H56 IHJ H611 IHJ:1H61 IHJ H612 IHJ:2H61 IHJ H613 IHJ:3H61 IHJ H21 IHN:1H2 IHN H22 IHN:2H2 IHN H101 IHN:1H10 IHN H102 IHN:2H10 IHN H131 IHN:1H13 IHN H132 IHN:2H13 IHN H221 IHN:1H22 IHN H222 IHN:2H22 IHN H241 IHN:1H24 IHN H242 IHN:2H24 IHN H243 IHN:3H24 IHN H251 IHN:1H25 IHN H252 IHN:2H25 IHN H271 IHN:1H27 IHN H272 IHN:2H27 IHN H273 IHN:3H27 IHN H281 IHN:1H28 IHN H282 IHN:2H28 IHN H283 IHN:3H28 IHN H291 IHN:1H29 IHN H292 IHN:2H29 IHN H293 IHN:3H29 IHN H311 IHN:1H31 IHN H312 IHN:2H31 IHN H313 IHN:3H31 IHN H321 IHN:1H32 IHN H322 IHN:2H32 IHN H323 IHN:3H32 IHN H341 IHN:1H34 IHN H342 IHN:2H34 IHN H343 IHN:3H34 IHN H351 IHN:1H35 IHN H352 IHN:2H35 IHN H353 IHN:3H35 IHN H371 IHN:1H37 IHN H372 IHN:2H37 IHN H373 IHN:3H37 IHN H381 IHN:1H38 IHN H382 IHN:2H38 IHN H383 IHN:3H38 IHN H391 IHN:1H39 IHN H392 IHN:2H39 IHN H393 IHN:3H39 IHN HO42 IHS:2HO4 IHS HO43 IHS:3HO4 IHS HO44 IHS:4HO4 IHS HO45 IHS:5HO4 IHS HO46 IHS:6HO4 IHS H511 IHU:1H51 IHU H512 IHU:2H51 IHU H513 IHU:3H51 IHU H131 IIA:1H13 IIA H132 IIA:2H13 IIA H141 IIA:1H14 IIA H142 IIA:2H14 IIA H161 IIA:1H16 IIA H162 IIA:2H16 IIA H171 IIA:1H17 IIA H172 IIA:2H17 IIA H281 IIA:1H28 IIA H282 IIA:2H28 IIA H283 IIA:3H28 IIA H321 IIA:1H32 IIA H322 IIA:2H32 IIA H323 IIA:3H32 IIA H371 IIA:1H37 IIA H372 IIA:2H37 IIA H131 IIB:1H13 IIB H132 IIB:2H13 IIB H141 IIB:1H14 IIB H142 IIB:2H14 IIB H161 IIB:1H16 IIB H162 IIB:2H16 IIB H171 IIB:1H17 IIB H172 IIB:2H17 IIB H281 IIB:1H28 IIB H282 IIB:2H28 IIB H283 IIB:3H28 IIB H321 IIB:1H32 IIB H322 IIB:2H32 IIB H323 IIB:3H32 IIB H371 IIB:1H37 IIB H372 IIB:2H37 IIB H111 IIB:1H11 IIB H112 IIB:2H11 IIB H113 IIB:3H11 IIB HN11 IIC:1HN1 IIC HN12 IIC:2HN1 IIC HB11 IIC:1HB1 IIC HB12 IIC:2HB1 IIC HA31 IIC:1HA3 IIC HA32 IIC:2HA3 IIC H31 IIC:1H3 IIC H32 IIC:2H3 IIC HB21 IIC:1HB2 IIC HB22 IIC:2HB2 IIC H141 IID:1H14 IID H142 IID:2H14 IID H171 IID:1H17 IID H172 IID:2H17 IID H261 IID:1H26 IID H262 IID:2H26 IID H7C1 IID:1H7C IID H7C2 IID:2H7C IID H7C3 IID:3H7C IID H101 IID:1H10 IID H102 IID:2H10 IID H121 IID:1H12 IID H122 IID:2H12 IID H191 IID:1H19 IID H192 IID:2H19 IID H193 IID:3H19 IID H201 IID:1H20 IID H202 IID:2H20 IID H203 IID:3H20 IID H131 IIE:1H13 IIE H132 IIE:2H13 IIE H141 IIE:1H14 IIE H142 IIE:2H14 IIE H161 IIE:1H16 IIE H162 IIE:2H16 IIE H171 IIE:1H17 IIE H172 IIE:2H17 IIE H281 IIE:1H28 IIE H282 IIE:2H28 IIE H283 IIE:3H28 IIE H321 IIE:1H32 IIE H322 IIE:2H32 IIE H323 IIE:3H32 IIE H371 IIE:1H37 IIE H372 IIE:2H37 IIE H2 IIL: HN2 IIL HG21 IIL:1HG2 IIL HG22 IIL:2HG2 IIL HG23 IIL:3HG2 IIL HG12 IIL:1HG1 IIL HG13 IIL:2HG1 IIL HD11 IIL:1HD1 IIL HD12 IIL:2HD1 IIL HD13 IIL:3HD1 IIL HM21 IIN:1HM2 IIN HM22 IIN:2HM2 IIN HM23 IIN:3HM2 IIN HN31 IIN:1HN3 IIN HN32 IIN:2HN3 IIN H31 IIP:1H3 IIP H32 IIP:2H3 IIP H33 IIP:3H3 IIP H91 IIP:1H9 IIP H92 IIP:2H9 IIP H93 IIP:3H9 IIP H151 IIP:1H15 IIP H152 IIP:2H15 IIP H153 IIP:3H15 IIP H181 IIP:1H18 IIP H182 IIP:2H18 IIP H191 IIP:1H19 IIP H192 IIP:2H19 IIP H201 IIP:1H20 IIP H202 IIP:2H20 IIP H211 IIP:1H21 IIP H212 IIP:2H21 IIP H213 IIP:3H21 IIP H221 IIP:1H22 IIP H222 IIP:2H22 IIP H223 IIP:3H22 IIP H281 IIP:1H28 IIP H282 IIP:2H28 IIP H283 IIP:3H28 IIP H291 IIP:1H29 IIP H292 IIP:2H29 IIP H301 IIP:1H30 IIP H302 IIP:2H30 IIP H2A1 IK2:1H2A IK2 H2A2 IK2:2H2A IK2 H2A3 IK2:3H2A IK2 H4A1 IK2:1H4A IK2 H4A2 IK2:2H4A IK2 H1'1 IK2:1H1' IK2 H1'2 IK2:2H1' IK2 H5A1 IK2:1H5A IK2 H5A2 IK2:2H5A IK2 HOP2 IK2:2HOP IK2 HOP3 IK2:3HOP IK2 HN11 IK8:1HN1 IK8 HN12 IK8:2HN1 IK8 H111 IK8:1H11 IK8 H112 IK8:2H11 IK8 H201 IK8:1H20 IK8 H202 IK8:2H20 IK8 H203 IK8:3H20 IK8 H231 IK8:1H23 IK8 H232 IK8:2H23 IK8 H233 IK8:3H23 IK8 H21 IKT:1H2 IKT H22 IKT:2H2 IKT H41 IKT:1H4 IKT H42 IKT:2H4 IKT H51 IKT:1H5 IKT H52 IKT:2H5 IKT H61 IKT:1H6 IKT H62 IKT:2H6 IKT H71 IKT:1H7 IKT H72 IKT:2H7 IKT H81 IKT:1H8 IKT H82 IKT:2H8 IKT H2'1 IKT:1H2' IKT H2'2 IKT:2H2' IKT H2'3 IKT:3H2' IKT HN11 IKT:1HN1 IKT HN12 IKT:2HN1 IKT HN1 ILA:1HN ILA HN2 ILA:2HN ILA HA1 ILA:1HA ILA HG21 ILA:1HG2 ILA HG22 ILA:2HG2 ILA HG23 ILA:3HG2 ILA HG11 ILA:1HG1 ILA HG12 ILA:2HG1 ILA HD1 ILA:1HD ILA HD2 ILA:2HD ILA HD3 ILA:3HD ILA H51 ILA:1H5 ILA H52 ILA:2H5 ILA H61 ILA:1H6 ILA H62 ILA:2H6 ILA H201 ILB:1H20 ILB H202 ILB:2H20 ILB H211 ILB:1H21 ILB H212 ILB:2H21 ILB H221 ILB:1H22 ILB H222 ILB:2H22 ILB H41 ILC:1H4 ILC H42 ILC:2H4 ILC H43 ILC:3H4 ILC H2 ILE: HN2 ILE HG12 ILE:1HG1 ILE HG13 ILE:2HG1 ILE HG21 ILE:1HG2 ILE HG22 ILE:2HG2 ILE HG23 ILE:3HG2 ILE HD11 ILE:1HD1 ILE HD12 ILE:2HD1 ILE HD13 ILE:3HD1 ILE H ILG:1HN ILG H2 ILG:2HN ILG H3 ILG:3HN ILG HB2 ILG:1HB ILG HB3 ILG:2HB ILG HG2 ILG:1HG ILG HG3 ILG:2HG ILG H61 ILH:1H6 ILH H62 ILH:2H6 ILH H261 ILI:1H26 ILI H262 ILI:2H26 ILI H263 ILI:3H26 ILI H111 ILI:1H11 ILI H112 ILI:2H11 ILI H181 ILI:1H18 ILI H182 ILI:2H18 ILI H183 ILI:3H18 ILI H231 ILI:1H23 ILI H232 ILI:2H23 ILI H251 ILI:1H25 ILI H252 ILI:2H25 ILI H253 ILI:3H25 ILI HN1 ILO:1HN ILO HN2A ILO:2HN ILO HCB1 ILO:1HCB ILO HCB2 ILO:2HCB ILO HCG1 ILO:1HCG ILO HCG2 ILO:2HCG ILO HCD1 ILO:1HCD ILO HCD2 ILO:2HCD ILO HC11 ILO:1HC1 ILO HC12 ILO:2HC1 ILO HC13 ILO:3HC1 ILO HOP2 ILP:2HOP ILP HOP3 ILP:3HOP ILP H5A1 ILP:1H5A ILP H5A2 ILP:2H5A ILP H2A1 ILP:1H2A ILP H2A2 ILP:2H2A ILP H2A3 ILP:3H2A ILP H4A1 ILP:1H4A ILP H4A2 ILP:2H4A ILP HG21 ILP:1HG2 ILP HG22 ILP:2HG2 ILP HG23 ILP:3HG2 ILP HG11 ILP:1HG1 ILP HG12 ILP:2HG1 ILP HD11 ILP:1HD1 ILP HD12 ILP:2HD1 ILP HD13 ILP:3HD1 ILP HN11 ILT:1HN1 ILT HN12 ILT:2HN1 ILT HN21 ILT:1HN2 ILT HN22 ILT:2HN2 ILT H21 ILT:1H2 ILT H22 ILT:2H2 ILT H81 ILT:1H8 ILT H82 ILT:2H8 ILT H83 ILT:3H8 ILT H141 ILT:1H14 ILT H142 ILT:2H14 ILT H143 ILT:3H14 ILT H161 ILT:1H16 ILT H162 ILT:2H16 ILT H171 ILT:1H17 ILT H172 ILT:2H17 ILT HN91 ILT:1HN9 ILT HN92 ILT:2HN9 ILT HN01 ILT:1HN0 ILT HN02 ILT:2HN0 ILT H2 ILX: HN2 ILX HG11 ILX:1HG1 ILX HG21 ILX:1HG2 ILX HG22 ILX:2HG2 ILX HG23 ILX:3HG2 ILX HD12 ILX:1HD1 ILX HD13 ILX:2HD1 ILX H71 IM2:1H7 IM2 H61A IM2:1H6 IM2 H51 IM2:1H5 IM2 H621 IM2:1H62 IM2 H622 IM2:2H62 IM2 H623 IM2:3H62 IM2 H41 IM2:1H4 IM2 H321 IM2:1H32 IM2 H221 IM2:1H22 IM2 H222 IM2:2H22 IM2 H231 IM2:1H23 IM2 H232 IM2:2H23 IM2 H241 IM2:1H24 IM2 H11 IM2:1H1 IM2 H12 IM2:2H1 IM2 HB1 IM3:1HB IM3 HB2 IM3:2HB IM3 H61 IM8:1H6 IM8 H62 IM8:2H6 IM8 H63 IM8:3H6 IM8 H161 IM8:1H16 IM8 H162 IM8:2H16 IM8 H163 IM8:3H16 IM8 H171 IM8:1H17 IM8 H172 IM8:2H17 IM8 H201 IM8:1H20 IM8 H202 IM8:2H20 IM8 H211 IM8:1H21 IM8 H212 IM8:2H21 IM8 H221 IM8:1H22 IM8 H222 IM8:2H22 IM8 H223 IM8:3H22 IM8 H201 IMA:1H20 IMA H202 IMA:2H20 IMA H231 IMA:1H23 IMA H232 IMA:2H23 IMA H371 IMA:1H37 IMA H372 IMA:2H37 IMA H451 IMA:1H45 IMA H452 IMA:2H45 IMA H453 IMA:3H45 IMA H491 IMA:1H49 IMA H492 IMA:2H49 IMA H493 IMA:3H49 IMA H531 IMA:1H53 IMA H532 IMA:2H53 IMA H533 IMA:3H53 IMA HC11 IMA:1HC1 IMA HC12 IMA:2HC1 IMA HOP2 IMC:2HOP IMC HOP3 IMC:3HOP IMC H5' IMC:1H5* IMC H5'' IMC:2H5* IMC H4' IMC: H4* IMC H1' IMC: H1* IMC HN21 IMC:1HN2 IMC HN22 IMC:2HN2 IMC H71 IMC:1H5M IMC H72 IMC:2H5M IMC H73 IMC:3H5M IMC H2' IMC:1H2* IMC H2'' IMC:2H2* IMC H3' IMC: H3* IMC HO3' IMC:*HO3 IMC HG1 IME:1HG IME HD21 IME:1HD2 IME HE11 IME:1HE1 IME HG2 IME:2HG IME HD22 IME:2HD2 IME HE12 IME:2HE1 IME HG3 IME:3HG IME HD23 IME:3HD2 IME HE13 IME:3HE1 IME HG4 IME:4HG IME HD24 IME:4HD2 IME HE14 IME:4HE1 IME HO11 IMF:1HO1 IMF HO12 IMF:2HO1 IMF HO21 IMF:1HO2 IMF HO22 IMF:2HO2 IMF HG1 IMF:1HG IMF HD21 IMF:1HD2 IMF HD11 IMF:1HD1 IMF H1E2 IMF:2H1E IMF HG2 IMF:2HG IMF HD22 IMF:2HD2 IMF HD12 IMF:2HD1 IMF H2E1 IMF:1H2E IMF HG3 IMF:3HG IMF HD23 IMF:3HD2 IMF HD13 IMF:3HD1 IMF HG4 IMF:4HG IMF HD24 IMF:4HD2 IMF HD14 IMF:4HD1 IMF H4E1 IMF:1H4E IMF HO'5 IMG:5HO* IMG H5'1 IMG:1H5* IMG H5'2 IMG:2H5* IMG H4' IMG: H4* IMG HN'4 IMG:4HN* IMG H3' IMG: H3* IMG HO'3 IMG:3HO* IMG H2' IMG: H2* IMG HO'2 IMG:2HO* IMG H1' IMG: H1* IMG H21 IMG:1H2 IMG H22 IMG:2H2 IMG HO'5 IMH:5HO* IMH H5'1 IMH:1H5* IMH H5'2 IMH:2H5* IMH H4' IMH: H4* IMH HN'4 IMH:4HN* IMH H3' IMH: H3* IMH HO'3 IMH:3HO* IMH H2' IMH: H2* IMH HO'2 IMH:2HO* IMH H1' IMH: H1* IMH H101 IMI:1H10 IMI H102 IMI:2H10 IMI H91 IMI:1H9 IMI H92 IMI:2H9 IMI H81 IMI:1H8 IMI H82 IMI:2H8 IMI H71 IMI:1H7 IMI H72 IMI:2H7 IMI H61 IMI:1H6 IMI H62 IMI:2H6 IMI H61 IMK:1H6 IMK H62 IMK:2H6 IMK H141 IMK:1H14 IMK H142 IMK:2H14 IMK H143 IMK:3H14 IMK H IML: HN IML HN1 IML:1HN IML HN2 IML:2HN IML HN3 IML:3HN IML HG21 IML:1HG2 IML HG22 IML:2HG2 IML HG23 IML:3HG2 IML HG12 IML:1HG1 IML HG13 IML:2HG1 IML HD11 IML:1HD1 IML HD12 IML:2HD1 IML HD13 IML:3HD1 IML H171 IMM:1H17 IMM H172 IMM:2H17 IMM H173 IMM:3H17 IMM H181 IMM:1H18 IMM H182 IMM:2H18 IMM H201 IMM:1H20 IMM H202 IMM:2H20 IMM H203 IMM:3H20 IMM H61 IMN:1H6 IMN H62 IMN:2H6 IMN H63 IMN:3H6 IMN H161 IMN:1H16 IMN H162 IMN:2H16 IMN H163 IMN:3H16 IMN H171 IMN:1H17 IMN H172 IMN:2H17 IMN H5'1 IMO:1H5' IMO H5'2 IMO:2H5' IMO HOA1 IMO:1HOA IMO HOA2 IMO:2HOA IMO H81 IMO:1H8 IMO HO'2 IMO:2HO' IMO HO'3 IMO:3HO' IMO HOP2 IMP:2HOP IMP HOP3 IMP:3HOP IMP H5'1 IMP:1H5* IMP H5'2 IMP:2H5* IMP H4' IMP: H4* IMP H3' IMP: H3* IMP HO3' IMP:*HO3 IMP H2' IMP: H2* IMP HO2' IMP:*HO2 IMP H1' IMP: H1* IMP HO'5 IMR:5HO* IMR H5'1 IMR:1H5* IMR H5'2 IMR:2H5* IMR H4' IMR: H4* IMR HN'4 IMR:4HN* IMR H3' IMR: H3* IMR HO'3 IMR:3HO* IMR H2' IMR: H2* IMR HO'2 IMR:2HO* IMR H1'1 IMR:1H1* IMR H1'2 IMR:2H1* IMR H61 IMS:1H6 IMS H62 IMS:2H6 IMS H63 IMS:3H6 IMS H211 IMS:1H21 IMS H212 IMS:2H21 IMS H221 IMS:1H22 IMS H222 IMS:2H22 IMS H223 IMS:3H22 IMS H201 IMS:1H20 IMS H202 IMS:2H20 IMS H171 IMS:1H17 IMS H172 IMS:2H17 IMS H161 IMS:1H16 IMS H162 IMS:2H16 IMS H163 IMS:3H16 IMS HD1 IMT:1HD IMT HD2 IMT:2HD IMT HD3 IMT:3HD IMT HO1P IMU:PHO1 IMU HO3P IMU:PHO3 IMU H5'1 IMU:1H5* IMU H5'2 IMU:2H5* IMU H4' IMU: H4* IMU HN4' IMU:*HN4 IMU H3' IMU: H3* IMU HO3' IMU:*HO3 IMU H2' IMU: H2* IMU HO2' IMU:*HO2 IMU H1' IMU: H1* IMU HN21 IMU:1HN2 IMU HN22 IMU:2HN2 IMU H321 IMY:1H32 IMY H322 IMY:2H32 IMY H323 IMY:3H32 IMY H331 IMY:1H33 IMY H332 IMY:2H33 IMY H333 IMY:3H33 IMY H301 IMY:1H30 IMY H302 IMY:2H30 IMY H51 IMY:1H5 IMY H52 IMY:2H5 IMY H61 IMY:1H6 IMY H62 IMY:2H6 IMY H71 IMY:1H7 IMY H72 IMY:2H7 IMY H81 IMY:1H8 IMY H82 IMY:2H8 IMY H271 IMZ:1H27 IMZ H272 IMZ:2H27 IMZ H281 IMZ:1H28 IMZ H282 IMZ:2H28 IMZ H283 IMZ:3H28 IMZ H241 IMZ:1H24 IMZ H242 IMZ:2H24 IMZ H243 IMZ:3H24 IMZ H151 IMZ:1H15 IMZ H152 IMZ:2H15 IMZ H141 IMZ:1H14 IMZ H142 IMZ:2H14 IMZ H131 IMZ:1H13 IMZ H132 IMZ:2H13 IMZ H161 IMZ:1H16 IMZ H162 IMZ:2H16 IMZ H111 IMZ:1H11 IMZ H112 IMZ:2H11 IMZ H121 IMZ:1H12 IMZ H122 IMZ:2H12 IMZ H141 IN0:1H14 IN0 H142 IN0:2H14 IN0 H611 IN0:1H61 IN0 H612 IN0:2H61 IN0 H431 IN0:1H43 IN0 H432 IN0:2H43 IN0 H321 IN0:1H32 IN0 H322 IN0:2H32 IN0 H323 IN0:3H32 IN0 H251 IN0:1H25 IN0 H252 IN0:2H25 IN0 H253 IN0:3H25 IN0 H241 IN0:1H24 IN0 H242 IN0:2H24 IN0 H243 IN0:3H24 IN0 H11 IN1:1H1 IN1 H12 IN1:2H1 IN1 H21 IN1:1H2 IN1 H22 IN1:2H2 IN1 H31 IN1:1H3 IN1 H32 IN1:2H3 IN1 H71 IN1:1H7 IN1 H72 IN1:2H7 IN1 H73 IN1:3H7 IN1 H6B1 IN1:1H6B IN1 H6B2 IN1:2H6B IN1 H51 IN1:1H5 IN1 H52 IN1:2H5 IN1 HOS4 IN1:4HOS IN1 HN11 IN2:1HN1 IN2 HN12 IN2:2HN1 IN2 H21 IN2:1H2 IN2 H22 IN2:2H2 IN2 H31 IN2:1H3 IN2 H32 IN2:2H3 IN2 H41 IN2:1H4 IN2 H42 IN2:2H4 IN2 H51 IN2:1H5 IN2 H52 IN2:2H5 IN2 H101 IN2:1H10 IN2 H102 IN2:2H10 IN2 H103 IN2:3H10 IN2 H111 IN2:1H11 IN2 H112 IN2:2H11 IN2 H113 IN2:3H11 IN2 H71 IN3:1H7 IN3 H72 IN3:2H7 IN3 H7'1 IN3:1H7' IN3 H7'2 IN3:2H7' IN3 H11' IN3:'H11 IN3 H12A IN3:AH12 IN3 H12B IN3:BH12 IN3 H14' IN3:'H14 IN3 H15A IN3:AH15 IN3 H15B IN3:BH15 IN3 H15C IN3:CH15 IN3 H16A IN3:AH16 IN3 H16B IN3:BH16 IN3 H16C IN3:CH16 IN3 H91 IN4:1H9 IN4 H92 IN4:2H9 IN4 H111 IN4:1H11 IN4 H112 IN4:2H11 IN4 HN41 IN4:1HN4 IN4 HN42 IN4:2HN4 IN4 HN11 IN4:1HN1 IN4 HN12 IN4:2HN1 IN4 H141 IN4:1H14 IN4 H142 IN4:2H14 IN4 H81 IN4:1H8 IN4 H82 IN4:2H8 IN4 H83 IN4:3H8 IN4 H71 IN5:1H7 IN5 H72 IN5:2H7 IN5 H81 IN5:1H8 IN5 H82 IN5:2H8 IN5 H101 IN5:1H10 IN5 H102 IN5:2H10 IN5 H103 IN5:3H10 IN5 H61 IN5:1H6 IN5 H62 IN5:2H6 IN5 H63 IN5:3H6 IN5 H71 IN6:1H7 IN6 H72 IN6:2H7 IN6 H121 IN6:1H12 IN6 H122 IN6:2H12 IN6 H151 IN6:1H15 IN6 H152 IN6:2H15 IN6 H153 IN6:3H15 IN6 H161 IN6:1H16 IN6 H162 IN6:2H16 IN6 H163 IN6:3H16 IN6 H7'1 IN6:1H7' IN6 H7'2 IN6:2H7' IN6 H11' IN6:'H11 IN6 H12A IN6:AH12 IN6 H12B IN6:BH12 IN6 H14' IN6:'H14 IN6 H15A IN6:AH15 IN6 H15B IN6:BH15 IN6 H15C IN6:CH15 IN6 H16A IN6:AH16 IN6 H16B IN6:BH16 IN6 H16C IN6:CH16 IN6 H71 IN7:1H7 IN7 H72 IN7:2H7 IN7 H131 IN7:1H13 IN7 H132 IN7:2H13 IN7 H151 IN7:1H15 IN7 H152 IN7:2H15 IN7 H181 IN7:1H18 IN7 H182 IN7:2H18 IN7 H81 IN7:1H8 IN7 H82 IN7:2H8 IN7 H131 IN8:1H13 IN8 H132 IN8:2H13 IN8 H41 IN8:1H4 IN8 H42 IN8:2H4 IN8 H71 IN9:1H7 IN9 H72 IN9:2H7 IN9 H141 IN9:1H14 IN9 H142 IN9:2H14 IN9 H143 IN9:3H14 IN9 H71 INA:1H7 INA H72 INA:2H7 INA H121 INA:1H12 INA H122 INA:2H12 INA H141 INA:1H14 INA H142 INA:2H14 INA H143 INA:3H14 INA H151 INA:1H15 INA H152 INA:2H15 INA H153 INA:3H15 INA H291 INA:1H29 INA H292 INA:2H29 INA H341 INA:1H34 INA H342 INA:2H34 INA H361 INA:1H36 INA H362 INA:2H36 INA H363 INA:3H36 INA H371 INA:1H37 INA H372 INA:2H37 INA H373 INA:3H37 INA H1'1 INB:1H1' INB H1'2 INB:2H1' INB H3'1 INB:1H3' INB H3'2 INB:2H3' INB HN2' INB:'HN2 INB HM'1 INB:1HM' INB HM'2 INB:2HM' INB HM'3 INB:3HM' INB HOP2 INB:2HOP INB H1A1 INB:1H1" INB H1A2 INB:2H1" INB H2'1 INB:1H2" INB H2'2 INB:2H2" INB HMA1 INB:1HM" INB HMA2 INB:2HM" INB HMA3 INB:3HM" INB H11 INB:1H1 INB H12 INB:2H1 INB H21 INB:1H2 INB H22 INB:2H2 INB H31 INB:1H3 INB H32 INB:2H3 INB H41 INB:1H4 INB H42 INB:2H4 INB H51 INB:1H5 INB H52 INB:2H5 INB H61 INB:1H6 INB H62 INB:2H6 INB H71 INB:1H7 INB H72 INB:2H7 INB H81 INB:1H8 INB H82 INB:2H8 INB H91 INB:1H9 INB H92 INB:2H9 INB H101 INB:1H10 INB H102 INB:2H10 INB H111 INB:1H11 INB H112 INB:2H11 INB H121 INB:1H12 INB H122 INB:2H12 INB H131 INB:1H13 INB H132 INB:2H13 INB H141 INB:1H14 INB H142 INB:2H14 INB H151 INB:1H15 INB H152 INB:2H15 INB H161 INB:1H16 INB H162 INB:2H16 INB H171 INB:1H17 INB H172 INB:2H17 INB H181 INB:1H18 INB H182 INB:2H18 INB H183 INB:3H18 INB HA11 INC:1HA1 INC HA12 INC:2HA1 INC HA13 INC:3HA1 INC HB21 INC:1HB2 INC HB22 INC:2HB2 INC HD11 INC:1HD1 INC HD12 INC:2HD1 INC HD13 INC:3HD1 INC HD21 INC:1HD2 INC HD22 INC:2HD2 INC HD23 INC:3HD2 INC H31 INC:1H3 INC H32 INC:2H3 INC H33 INC:3H3 INC H11 INE:1H1 INE H41 INE:1H4 INE H51 INE:1H5 INE H61 INE:1H6 INE HB1 INF:1HB INF HB2 INF:2HB INF HB1 ING:1HB ING HB2 ING:2HB ING HN11 ING:1HN1 ING HN12 ING:2HN1 ING H81 INI:1H8 INI H82 INI:2H8 INI H121 INI:1H12 INI H122 INI:2H12 INI H81 INJ:1H8 INJ H82 INJ:2H8 INJ H91 INJ:1H9 INJ H101 INJ:1H10 INJ H111 INJ:1H11 INJ H121 INJ:1H12 INJ H122 INJ:2H12 INJ H131 INJ:1H13 INJ H132 INJ:2H13 INJ H141 INJ:1H14 INJ H142 INJ:2H14 INJ H151 INJ:1H15 INJ H152 INJ:2H15 INJ H161 INJ:1H16 INJ H162 INJ:2H16 INJ H171 INJ:1H17 INJ H172 INJ:2H17 INJ HOP2 INJ:2HOP INJ HOP3 INJ:3HOP INJ HC11 INK:1HC1 INK HC12 INK:2HC1 INK HC13 INK:3HC1 INK HC31 INK:1HC3 INK HC32 INK:2HC3 INK HC41 INK:1HC4 INK HC42 INK:2HC4 INK HC43 INK:3HC4 INK HC51 INK:1HC5 INK HC52 INK:2HC5 INK HN41 INL:1HN4 INL HN42 INL:2HN4 INL H61 INL:1H6 INL H101 INL:1H10 INL H161 INL:1H16 INL H162 INL:2H16 INL H171 INL:1H17 INL H172 INL:2H17 INL H181 INL:1H18 INL H182 INL:2H18 INL H201 INL:1H20 INL H202 INL:2H20 INL H211 INL:1H21 INL H212 INL:2H21 INL H231 INL:1H23 INL H251 INL:1H25 INL H261 INL:1H26 INL H271 INL:1H27 INL H301 INL:1H30 INL H302 INL:2H30 INL H303 INL:3H30 INL HC21 INM:1HC2 INM H71 INM:1H7 INM H72 INM:2H7 INM H81 INM:1H8 INM H82 INM:2H8 INM H91 INM:1H9 INM H92 INM:2H9 INM H101 INM:1H10 INM H102 INM:2H10 INM H121 INM:1H12 INM H122 INM:2H12 INM H123 INM:3H12 INM H131 INM:1H13 INM H191 INM:1H19 INM H192 INM:2H19 INM H21 INN:1H2 INN H22 INN:2H2 INN H23 INN:3H2 INN H81 INN:1H8 INN H82 INN:2H8 INN H83 INN:3H8 INN H91 INN:1H9 INN H92 INN:2H9 INN H93 INN:3H9 INN H121 INN:1H12 INN H122 INN:2H12 INN H123 INN:3H12 INN H01 INN:1H0 INN H02 INN:2H0 INN HB1 INN:1HB INN HB2 INN:2HB INN H31 INN:1H3 INN H32 INN:2H3 INN H33 INN:3H3 INN H71 INN:1H7 INN H72 INN:2H7 INN H73 INN:3H7 INN H141 INN:1H14 INN H142 INN:2H14 INN H151 INN:1H15 INN H152 INN:2H15 INN HN41 INN:1HN4 INN HN42 INN:2HN4 INN H71 INP:1H7 INP H72 INP:2H7 INP H131 INP:1H13 INP H132 INP:2H13 INP H151 INP:1H15 INP H152 INP:2H15 INP H161 INP:1H16 INP H162 INP:2H16 INP H191 INP:1H19 INP H192 INP:2H19 INP H211 INP:1H21 INP H212 INP:2H21 INP H213 INP:3H21 INP H221 INP:1H22 INP H222 INP:2H22 INP H223 INP:3H22 INP H271 INP:1H27 INP H272 INP:2H27 INP H291 INP:1H29 INP H292 INP:2H29 INP H293 INP:3H29 INP H301 INP:1H30 INP H302 INP:2H30 INP H303 INP:3H30 INP H351 INP:1H35 INP H352 INP:2H35 INP H031 INQ:1H03 INQ H032 INQ:2H03 INQ H051 INQ:1H05 INQ H091 INQ:1H09 INQ H151 INQ:1H15 INQ H152 INQ:2H15 INQ H161 INQ:1H16 INQ H162 INQ:2H16 INQ H171 INQ:1H17 INQ H172 INQ:2H17 INQ H191 INQ:1H19 INQ H192 INQ:2H19 INQ H201 INQ:1H20 INQ H202 INQ:2H20 INQ H221 INQ:1H22 INQ H241 INQ:1H24 INQ H251 INQ:1H25 INQ H261 INQ:1H26 INQ H281 INQ:1H28 INQ H21 INT:1H2 INT H22 INT:2H2 INT H31 INT:1H3 INT H32 INT:2H3 INT HG11 INT:1HG1 INT HG12 INT:2HG1 INT HG13 INT:3HG1 INT HG21 INT:1HG2 INT HG22 INT:2HG2 INT HG23 INT:3HG2 INT H201 INT:1H20 INT H202 INT:2H20 INT H203 INT:3H20 INT HA1 INT:1HA INT HA2 INT:2HA INT HG31 INU:1HG3 INU HG32 INU:2HG3 INU HG41 INU:1HG4 INU HG42 INU:2HG4 INU HD11 INU:1HD1 INU HD12 INU:2HD1 INU HD21 INU:1HD2 INU HD22 INU:2HD2 INU HD31 INU:1HD3 INU HD32 INU:2HD3 INU HD41 INU:1HD4 INU HD42 INU:2HD4 INU HD51 INU:1HD5 INU HD52 INU:2HD5 INU HD61 INU:1HD6 INU HD62 INU:2HD6 INU H011 INV:1H01 INV H021 INV:1H02 INV H041 INV:1H04 INV H051 INV:1H05 INV H091 INV:1H09 INV H101 INV:1H10 INV H102 INV:2H10 INV HP21 INV:1HP2 INV HP22 INV:2HP2 INV H161 INV:1H16 INV H171 INV:1H17 INV H191 INV:1H19 INV H201 INV:1H20 INV H011 INW:1H01 INW H021 INW:1H02 INW H041 INW:1H04 INW H051 INW:1H05 INW H091 INW:1H09 INW H101 INW:1H10 INW H102 INW:2H10 INW HP21 INW:1HP2 INW HP22 INW:2HP2 INW H171 INW:1H17 INW H191 INW:1H19 INW H201 INW:1H20 INW HC71 INX:1HC7 INX HC72 INX:2HC7 INX H151 INX:1H15 INX H152 INX:2H15 INX H161 INX:1H16 INX H162 INX:2H16 INX H171 INX:1H17 INX H172 INX:2H17 INX H181 INX:1H18 INX H182 INX:2H18 INX H191 INX:1H19 INX H192 INX:2H19 INX H193 INX:3H19 INX H231 INX:1H23 INX H232 INX:2H23 INX H301 INX:1H30 INX H302 INX:2H30 INX H381 INX:1H38 INX H382 INX:2H38 INX H391 INX:1H39 INX H392 INX:2H39 INX H61 INY:1H6 INY H62 INY:2H6 INY H63 INY:3H6 INY H171 INY:1H17 INY H172 INY:2H17 INY H121 INY:1H12 INY H122 INY:2H12 INY H123 INY:3H12 INY H111 INZ:1H11 INZ H112 INZ:2H11 INZ H221 INZ:1H22 INZ H222 INZ:2H22 INZ H231 INZ:1H23 INZ H232 INZ:2H23 INZ H241 INZ:1H24 INZ H242 INZ:2H24 INZ H251 INZ:1H25 INZ H252 INZ:2H25 INZ H261 INZ:1H26 INZ H262 INZ:2H26 INZ H263 INZ:3H26 INZ H301 INZ:1H30 INZ H302 INZ:2H30 INZ H011 IOA:1H01 IOA H021 IOA:1H02 IOA H041 IOA:1H04 IOA H051 IOA:1H05 IOA H091 IOA:1H09 IOA H101 IOA:1H10 IOA H102 IOA:2H10 IOA HP21 IOA:1HP2 IOA HP22 IOA:2HP2 IOA H161 IOA:1H16 IOA H181 IOA:1H18 IOA H191 IOA:1H19 IOA HB2 IOB:2HB IOB HB1 IOB:1HB IOB H011 IOC:1H01 IOC H021 IOC:1H02 IOC H041 IOC:1H04 IOC H051 IOC:1H05 IOC H091 IOC:1H09 IOC H101 IOC:1H10 IOC H102 IOC:2H10 IOC HP21 IOC:1HP2 IOC HP22 IOC:2HP2 IOC H191 IOC:1H19 IOC H201 IOC:1H20 IOC H011 IOE:1H01 IOE H021 IOE:1H02 IOE H041 IOE:1H04 IOE H051 IOE:1H05 IOE H091 IOE:1H09 IOE H101 IOE:1H10 IOE H102 IOE:2H10 IOE HP21 IOE:1HP2 IOE HP22 IOE:2HP2 IOE H171 IOE:1H17 IOE H191 IOE:1H19 IOE H011 IOF:1H01 IOF H021 IOF:1H02 IOF H041 IOF:1H04 IOF H051 IOF:1H05 IOF H091 IOF:1H09 IOF H101 IOF:1H10 IOF H102 IOF:2H10 IOF HP21 IOF:1HP2 IOF HP22 IOF:2HP2 IOF H161 IOF:1H16 IOF H201 IOF:1H20 IOF H81 IOG:1H8 IOG H82 IOG:2H8 IOG H91 IOG:1H9 IOG H92 IOG:2H9 IOG H111 IOG:1H11 IOG H112 IOG:2H11 IOG H113 IOG:3H11 IOG H151 IOG:1H15 IOG H152 IOG:2H15 IOG H321 IOG:1H32 IOG H322 IOG:2H32 IOG H331 IOG:1H33 IOG H332 IOG:2H33 IOG H351 IOG:1H35 IOG H352 IOG:2H35 IOG H361 IOG:1H36 IOG H362 IOG:2H36 IOG H371 IOG:1H37 IOG H372 IOG:2H37 IOG H381 IOG:1H38 IOG H382 IOG:2H38 IOG H391 IOG:1H39 IOG H392 IOG:2H39 IOG HB11 IOH:1HB1 IOH HB12 IOH:2HB1 IOH HB13 IOH:3HB1 IOH HB21 IOH:1HB2 IOH HB22 IOH:2HB2 IOH HB23 IOH:3HB2 IOH H81 IOK:1H8 IOK H82 IOK:2H8 IOK H91 IOK:1H9 IOK H92 IOK:2H9 IOK H111 IOK:1H11 IOK H112 IOK:2H11 IOK H113 IOK:3H11 IOK H151 IOK:1H15 IOK H152 IOK:2H15 IOK HNA1 IOM:1HNA IOM HNA2 IOM:2HNA IOM HNB1 IOM:1HNB IOM HNB2 IOM:2HNB IOM HCB1 IOM:1HCB IOM HCB2 IOM:2HCB IOM HCB3 IOM:3HCB IOM HCC1 IOM:1HCC IOM HCC2 IOM:2HCC IOM H11 ION:1H1 ION H12 ION:2H1 ION H41 ION:1H4 ION H42 ION:2H4 ION H43 ION:3H4 ION H51 ION:1H5 ION H52 ION:2H5 ION H61 ION:1H6 ION H62 ION:2H6 ION H71 ION:1H7 ION H72 ION:2H7 ION H91 ION:1H9 ION H92 ION:2H9 ION H93 ION:3H9 ION H111 ION:1H11 ION H112 ION:2H11 ION H121 ION:1H12 ION H141 ION:1H14 ION H142 ION:2H14 ION H143 ION:3H14 ION H151 ION:1H15 ION H152 ION:2H15 ION H2'1 IOP:1H2' IOP H2'2 IOP:2H2' IOP H3'1 IOP:1H3' IOP H3'2 IOP:2H3' IOP H5'1 IOT:1H5* IOT H5'2 IOT:2H5* IOT H4' IOT: H4* IOT H3' IOT: H3* IOT HO'3 IOT:3HO* IOT H2' IOT: H2* IOT HO'2 IOT:2HO* IOT H1' IOT: H1* IOT H61 IOT:1H6 IOT H62 IOT:2H6 IOT HCX1 IOT:1HCX IOT HCX2 IOT:2HCX IOT HB1 IOT:1HB IOT HB2 IOT:2HB IOT HG1 IOT:1HG IOT HG2 IOT:2HG IOT HD1 IOT:1HD IOT HD2 IOT:2HD IOT HH11 IOT:1HH1 IOT HH21 IOT:1HH2 IOT HH22 IOT:2HH2 IOT HB3 IOY:1HB IOY HB2 IOY:2HB IOY H IOY:1HN IOY H2 IOY:2HN IOY H32 IP1:2H3 IP1 H31 IP1:1H3 IP1 H42A IP1:2H4 IP1 H41 IP1:1H4 IP1 H72 IP1:2H7 IP1 H71 IP1:1H7 IP1 H142 IP1:2H14 IP1 H141 IP1:1H14 IP1 H333 IP1:3H33 IP1 H332 IP1:2H33 IP1 H331 IP1:1H33 IP1 H373 IP1:3H37 IP1 H372 IP1:2H37 IP1 H371 IP1:1H37 IP1 HO42 IP2:2HO4 IP2 HO43 IP2:3HO4 IP2 HO52 IP2:2HO5 IP2 HO53 IP2:3HO5 IP2 H11 IP3:1H1 IP3 H12 IP3:2H1 IP3 H21 IP3:1H2 IP3 H22 IP3:2H2 IP3 H41 IP3:1H4 IP3 H42 IP3:2H4 IP3 H43 IP3:3H4 IP3 H51 IP3:1H5 IP3 H52 IP3:2H5 IP3 H53 IP3:3H5 IP3 H31 IP4:1H3 IP4 H32 IP4:2H3 IP4 H41 IP4:1H4 IP4 H42 IP4:2H4 IP4 HM11 IP4:1HM1 IP4 HM12 IP4:2HM1 IP4 HM13 IP4:3HM1 IP4 HM21 IP4:1HM2 IP4 HM22 IP4:2HM2 IP4 HM23 IP4:3HM2 IP4 HM31 IP4:1HM3 IP4 HM32 IP4:2HM3 IP4 HM33 IP4:3HM3 IP4 HN11 IP6:1HN1 IP6 HN12 IP6:2HN1 IP6 H91 IP6:1H9 IP6 H92 IP6:2H9 IP6 HN11 IP7:1HN1 IP7 HN12 IP7:2HN1 IP7 H91 IP7:1H9 IP7 H92 IP7:2H9 IP7 H171 IP7:1H17 IP7 H172 IP7:2H17 IP7 H11 IPA:1H1 IPA H12 IPA:2H1 IPA H13 IPA:3H1 IPA H31 IPA:1H3 IPA H32 IPA:2H3 IPA H33 IPA:3H3 IPA H73 IPB:3H7 IPB H72 IPB:2H7 IPB H71 IPB:1H7 IPB H93 IPB:3H9 IPB H92 IPB:2H9 IPB H91 IPB:1H9 IPB H103 IPB:3H10 IPB H102 IPB:2H10 IPB H101 IPB:1H10 IPB H31 IPC:1H3 IPC H32 IPC:2H3 IPC H33 IPC:3H3 IPC H41 IPC:1H4 IPC H42 IPC:2H4 IPC H43 IPC:3H4 IPC H131 IPC:1H13 IPC H132 IPC:2H13 IPC H133 IPC:3H13 IPC H11 IPE:1H1 IPE H12 IPE:2H1 IPE H21 IPE:1H2 IPE H22 IPE:2H2 IPE H41 IPE:1H4 IPE H42 IPE:2H4 IPE H51 IPE:1H5 IPE H52 IPE:2H5 IPE H53 IPE:3H5 IPE H21 IPF:1H2 IPF H22A IPF:2H2 IPF H23A IPF:3H2 IPF H41A IPF:1H4 IPF H42 IPF:2H4 IPF H161 IPF:1H16 IPF H162 IPF:2H16 IPF H163 IPF:3H16 IPF H171 IPF:1H17 IPF H172 IPF:2H17 IPF H173 IPF:3H17 IPF H201 IPF:1H20 IPF H202 IPF:2H20 IPF H291 IPF:1H29 IPF H292 IPF:2H29 IPF H301 IPF:1H30 IPF H302 IPF:2H30 IPF H311 IPF:1H31 IPF H312 IPF:2H31 IPF H351 IPF:1H35 IPF H352 IPF:2H35 IPF H353 IPF:3H35 IPF H361 IPF:1H36 IPF H362 IPF:2H36 IPF H363 IPF:3H36 IPF H391 IPF:1H39 IPF H392 IPF:2H39 IPF H501 IPF:1H50 IPF H502 IPF:2H50 IPF H503 IPF:3H50 IPF HA1 IPG:1HA IPG HA2 IPG:2HA IPG HG11 IPG:1HG1 IPG HG12 IPG:2HG1 IPG HG13 IPG:3HG1 IPG HG21 IPG:1HG2 IPG HG22 IPG:2HG2 IPG HG23 IPG:3HG2 IPG H1'1 IPL:1H1' IPL H1'2 IPL:2H1' IPL H2'1 IPL:1H2' IPL H2'2 IPL:2H2' IPL H3'1 IPL:1H3' IPL H3'2 IPL:2H3' IPL HOP2 IPL:2HOP IPL HOP3 IPL:3HOP IPL H61 IPM:1H6 IPM H62 IPM:2H6 IPM H63 IPM:3H6 IPM H71 IPM:1H7 IPM H72 IPM:2H7 IPM H73 IPM:3H7 IPM H8'1 IPN:1H8' IPN H8'2 IPN:2H8' IPN H5'1 IPN:1H5' IPN H5'2 IPN:2H5' IPN HO2' IPN:'HO2 IPN H3'1 IPN:1H3' IPN H3'2 IPN:2H3' IPN H2'1 IPN:1H2' IPN H2'2 IPN:2H2' IPN H1'1 IPN:1H1' IPN H1'2 IPN:2H1' IPN H1'3 IPN:3H1' IPN H1'1 IPO:1H1' IPO H1'2 IPO:2H1' IPO HN21 IPO:1HN2 IPO HN22 IPO:2HN2 IPO HOP1 IPP:1HOP IPP H1 IPP:1H IPP H2 IPP:2H IPP H21 IPP:1H2 IPP H22 IPP:2H2 IPP HC51 IPR:1HC5 IPR HC52 IPR:2HC5 IPR HC41 IPR:1HC4 IPR HC42 IPR:2HC4 IPR HC11 IPR:1HC1 IPR HC12 IPR:2HC1 IPR HC13 IPR:3HC1 IPR HC31 IPR:1HC3 IPR HC32 IPR:2HC3 IPR HC33 IPR:3HC3 IPR H61 IPT:1H6 IPT H62 IPT:2H6 IPT H2'1 IPT:1H2' IPT H2'2 IPT:2H2' IPT H2'3 IPT:3H2' IPT H3'1 IPT:1H3' IPT H3'2 IPT:2H3' IPT H3'3 IPT:3H3' IPT H11 IPU:1H1 IPU H12 IPU:2H1 IPU H13 IPU:3H1 IPU H31 IPU:1H3 IPU H32 IPU:2H3 IPU H33 IPU:3H3 IPU HN21 IPU:1HN2 IPU HN22 IPU:2HN2 IPU H31 IPY:1H3 IPY H32A IPY:2H3 IPY H33 IPY:3H3 IPY H91 IPY:1H9 IPY H92 IPY:2H9 IPY H93 IPY:3H9 IPY H151 IPY:1H15 IPY H152 IPY:2H15 IPY H153 IPY:3H15 IPY H181 IPY:1H18 IPY H182 IPY:2H18 IPY H191 IPY:1H19 IPY H192 IPY:2H19 IPY H201 IPY:1H20 IPY H202 IPY:2H20 IPY H211 IPY:1H21 IPY H212 IPY:2H21 IPY H213 IPY:3H21 IPY H221 IPY:1H22 IPY H222 IPY:2H22 IPY H223 IPY:3H22 IPY H281 IPY:1H28 IPY H282 IPY:2H28 IPY H283 IPY:3H28 IPY H291 IPY:1H29 IPY H292 IPY:2H29 IPY H301 IPY:1H30 IPY H302 IPY:2H30 IPY H91 IPZ:1H9 IPZ H92 IPZ:2H9 IPZ H93 IPZ:3H9 IPZ H101 IPZ:1H10 IPZ H102 IPZ:2H10 IPZ H103 IPZ:3H10 IPZ H111 IPZ:1H11 IPZ H112 IPZ:2H11 IPZ H113 IPZ:3H11 IPZ H181 IQA:1H18 IQA H182 IQA:2H18 IQA H2'1 IQB:1H2' IQB H2'2 IQB:2H2' IQB H3'1 IQB:1H3' IQB H3'2 IQB:2H3' IQB H5'1 IQB:1H5' IQB H5'2 IQB:2H5' IQB H2' IQB: H2* IQB H3' IQB: H3* IQB H5' IQB: H5* IQB H6B IQB: H6* IQB HM21 IQP:1HM2 IQP HM22 IQP:2HM2 IQP HM23 IQP:3HM2 IQP H3'1 IQP:1H3' IQP H3'2 IQP:2H3' IQP H5'1 IQP:1H5' IQP H5'2 IQP:2H5' IQP H6'1 IQP:1H6' IQP H6'2 IQP:2H6' IQP H2'1 IQS:1H2' IQS H2'2 IQS:2H2' IQS H3'1 IQS:1H3' IQS H3'2 IQS:2H3' IQS H5'1 IQS:1H5' IQS H5'2 IQS:2H5' IQS H5'3 IQS:3H5' IQS H2'1 IQU:1H2' IQU H2'2 IQU:2H2' IQU H3'1 IQU:1H3' IQU H3'2 IQU:2H3' IQU H4'1 IQU:1H4' IQU H4'2 IQU:2H4' IQU H121 IQZ:1H12 IQZ H122 IQZ:2H12 IQZ H161 IQZ:1H16 IQZ H162 IQZ:2H16 IQZ H171 IQZ:1H17 IQZ H172 IQZ:2H17 IQZ H181 IQZ:1H18 IQZ H182 IQZ:2H18 IQZ H191 IQZ:1H19 IQZ H192 IQZ:2H19 IQZ HAO1 IRE:1HAO IRE HAO2 IRE:2HAO IRE HAL1 IRE:1HAL IRE HAL2 IRE:2HAL IRE HAM1 IRE:1HAM IRE HAM2 IRE:2HAM IRE HAP1 IRE:1HAP IRE HAP2 IRE:2HAP IRE HAN1 IRE:1HAN IRE HAN2 IRE:2HAN IRE HAJ1 IRE:1HAJ IRE HAJ2 IRE:2HAJ IRE HAK1 IRE:1HAK IRE HAK2 IRE:2HAK IRE HAA1 IRE:1HAA IRE HAA2 IRE:2HAA IRE HAA3 IRE:3HAA IRE H7M1 IRF:1H7M IRF H7M2 IRF:2H7M IRF H7M3 IRF:3H7M IRF H1'1 IRF:1H1* IRF H1'2 IRF:2H1* IRF H2' IRF: H2* IRF H3' IRF: H3* IRF H4' IRF: H4* IRF H5'1 IRF:1H5* IRF H5'2 IRF:2H5* IRF H5' IRF: H5* IRF HN11 IRI:1HN1 IRI HN12 IRI:2HN1 IRI HN13 IRI:3HN1 IRI HN21 IRI:1HN2 IRI HN22 IRI:2HN2 IRI HN23 IRI:3HN2 IRI HN31 IRI:1HN3 IRI HN32 IRI:2HN3 IRI HN33 IRI:3HN3 IRI HN41 IRI:1HN4 IRI HN42 IRI:2HN4 IRI HN43 IRI:3HN4 IRI HN51 IRI:1HN5 IRI HN52 IRI:2HN5 IRI HN53 IRI:3HN5 IRI HN61 IRI:1HN6 IRI HN62 IRI:2HN6 IRI HN63 IRI:3HN6 IRI H5'1 IRP:1H5* IRP H5'2 IRP:2H5* IRP H4' IRP: H4* IRP HN'4 IRP:4HN* IRP H3' IRP: H3* IRP HO'3 IRP:3HO* IRP H2' IRP: H2* IRP HO'2 IRP:2HO* IRP H1' IRP: H1* IRP H181 IS2:1H18 IS2 H182 IS2:2H18 IS2 H191 IS2:1H19 IS2 H192 IS2:2H19 IS2 H193 IS2:3H19 IS2 H41 ISA:1H4 ISA H42 ISA:2H4 ISA HB11 ISB:1HB1 ISB HB12 ISB:2HB1 ISB HB13 ISB:3HB1 ISB HB21 ISB:1HB2 ISB HB22 ISB:2HB2 ISB HB23 ISB:3HB2 ISB H3'1 ISC:1H3' ISC H3'2 ISC:2H3' ISC H131 ISD:1H13 ISD H132 ISD:2H13 ISD H151 ISF:1H15 ISF H152 ISF:2H15 ISF H153 ISF:3H15 ISF HN11 ISO:1HN1 ISO HN12 ISO:2HN1 ISO H2'1 ISO:1H2' ISO H2'2 ISO:2H2' ISO H2'3 ISO:3H2' ISO H3'1 ISO:1H3' ISO H3'2 ISO:2H3' ISO H3'3 ISO:3H3' ISO H11 ISP:1H1 ISP H12 ISP:2H1 ISP H13 ISP:3H1 ISP H31 ISP:1H3 ISP H32 ISP:2H3 ISP H33 ISP:3H3 ISP HOP2 ISP:2HOP ISP HOP3 ISP:3HOP ISP H121 ISR:1H12 ISR H122 ISR:2H12 ISR H21 IST:1H2 IST H23 IST:3H2 IST H22 IST:2H2 IST H51 IST:1H5 IST H52 IST:2H5 IST H101 IST:1H10 IST H102 IST:2H10 IST H103 IST:3H10 IST HA21 IST:1HA2 IST HA22 IST:2HA2 IST H11 IST:1H1 IST H12 IST:2H1 IST HC11 ISU:1HC1 ISU HC12 ISU:2HC1 ISU HC13 ISU:3HC1 ISU HC21 ISU:1HC2 ISU HC22 ISU:2HC2 ISU HN11 ISU:1HN1 ISU HN12 ISU:2HN1 ISU H5C1 ISX:1H5C ISX H5C2 ISX:2H5C ISX H1C1 ISX:1H1C ISX H1C2 ISX:2H1C ISX H6C1 ISX:1H6C ISX H6C2 ISX:2H6C ISX H6A1 ISX:1H6A ISX H6A2 ISX:2H6A ISX H211 ITA:1H21 ITA H212 ITA:2H21 ITA H101 ITA:1H10 ITA H102 ITA:2H10 ITA H201 ITB:1H20 ITB H202 ITB:2H20 ITB H41 ITM:1H4 ITM H42 ITM:2H4 ITM HB1 ITR:1HB ITR HB2 ITR:2HB ITR H5'1 ITT:1H5* ITT H5'2 ITT:2H5* ITT H4' ITT: H4* ITT H3' ITT: H3* ITT H2' ITT: H2* ITT H1' ITT: H1* ITT H11 ITU:1H1 ITU H12 ITU:2H1 ITU H13 ITU:3H1 ITU H21 ITU:1H2 ITU H22 ITU:2H2 ITU HN11 ITU:1HN1 ITU HN12 ITU:2HN1 ITU HOP2 IU:2HOP IU HOP3 IU:3HOP IU H5' IU:1H5* IU H5'' IU:2H5* IU H4' IU: H4* IU H3' IU: H3* IU HO3' IU:H3T IU H2' IU: H2* IU HO2' IU:2HO* IU H1' IU: H1* IU HC11 IU5:1HC1 IU5 HC12 IU5:2HC1 IU5 H111 IU5:1H11 IU5 H112 IU5:2H11 IU5 H121 IU5:1H12 IU5 H122 IU5:2H12 IU5 H141 IU5:1H14 IU5 H151 IU5:1H15 IU5 H152 IU5:2H15 IU5 H161 IU5:1H16 IU5 H162 IU5:2H16 IU5 H171 IU5:1H17 IU5 H181 IU5:1H18 IU5 H182 IU5:2H18 IU5 H183 IU5:3H18 IU5 H191 IU5:1H19 IU5 H192 IU5:2H19 IU5 H193 IU5:3H19 IU5 HOA1 IU5:1HOA IU5 HOB1 IU5:1HOB IU5 HC21 IU5:1HC2 IU5 HC22 IU5:2HC2 IU5 H201 IU5:1H20 IU5 H211 IU5:1H21 IU5 H212 IU5:2H21 IU5 H213 IU5:3H21 IU5 H221 IU5:1H22 IU5 H222 IU5:2H22 IU5 H231 IU5:1H23 IU5 H232 IU5:2H23 IU5 HC31 IU5:1HC3 IU5 HC41 IU5:1HC4 IU5 HC42 IU5:2HC4 IU5 HOA4 IU5:4HOA IU5 HC51 IU5:1HC5 IU5 HC61 IU5:1HC6 IU5 HC62 IU5:2HC6 IU5 HC71 IU5:1HC7 IU5 HC81 IU5:1HC8 IU5 HC91 IU5:1HC9 IU5 HC11 IU6:1HC1 IU6 HC12 IU6:2HC1 IU6 H111 IU6:1H11 IU6 H112 IU6:2H11 IU6 H121 IU6:1H12 IU6 H122 IU6:2H12 IU6 H141 IU6:1H14 IU6 H151 IU6:1H15 IU6 H152 IU6:2H15 IU6 H161 IU6:1H16 IU6 H162 IU6:2H16 IU6 H171 IU6:1H17 IU6 H181 IU6:1H18 IU6 H182 IU6:2H18 IU6 H183 IU6:3H18 IU6 H191 IU6:1H19 IU6 H192 IU6:2H19 IU6 H193 IU6:3H19 IU6 HOA1 IU6:1HOA IU6 HOB1 IU6:1HOB IU6 HC21 IU6:1HC2 IU6 HC22 IU6:2HC2 IU6 H201 IU6:1H20 IU6 H211 IU6:1H21 IU6 H212 IU6:2H21 IU6 H213 IU6:3H21 IU6 H221 IU6:1H22 IU6 H222 IU6:2H22 IU6 H231 IU6:1H23 IU6 H232 IU6:2H23 IU6 HC31 IU6:1HC3 IU6 HC41 IU6:1HC4 IU6 HC42 IU6:2HC4 IU6 HOA4 IU6:4HOA IU6 HC51 IU6:1HC5 IU6 HC61 IU6:1HC6 IU6 H261 IU6:1H26 IU6 H262 IU6:2H26 IU6 H251 IU6:1H25 IU6 H252 IU6:2H25 IU6 H253 IU6:3H25 IU6 HC71 IU6:1HC7 IU6 HC81 IU6:1HC8 IU6 HC91 IU6:1HC9 IU6 HA1 IVA:1HA IVA HA2 IVA:2HA IVA HG11 IVA:1HG1 IVA HG12 IVA:2HG1 IVA HG13 IVA:3HG1 IVA HG21 IVA:1HG2 IVA HG22 IVA:2HG2 IVA HG23 IVA:3HG2 IVA H571 IVS:1H57 IVS H572 IVS:2H57 IVS H521 IVS:1H52 IVS H522 IVS:2H52 IVS H511 IVS:1H51 IVS H231 IVS:1H23 IVS H581 IVS:1H58 IVS H582 IVS:2H58 IVS H221 IVS:1H22 IVS H201 IVS:1H20 IVS H191 IVS:1H19 IVS H171 IVS:1H17 IVS H161 IVS:1H16 IVS H101 IVS:1H10 IVS H102 IVS:2H10 IVS HC21 IVS:1HC2 IVS HC61 IVS:1HC6 IVS HC62 IVS:2HC6 IVS HC63 IVS:3HC6 IVS H761 IVS:1H76 IVS H762 IVS:2H76 IVS H763 IVS:3H76 IVS H601 IVS:1H60 IVS H671 IVS:1H67 IVS H672 IVS:2H67 IVS H673 IVS:3H67 IVS H631 IVS:1H63 IVS H632 IVS:2H63 IVS H633 IVS:3H63 IVS H381 IVS:1H38 IVS H401 IVS:1H40 IVS H402 IVS:2H40 IVS H403 IVS:3H40 IVS H441 IVS:1H44 IVS H442 IVS:2H44 IVS H443 IVS:3H44 IVS H251 IVS:1H25 IVS H271 IVS:1H27 IVS H272 IVS:2H27 IVS H273 IVS:3H27 IVS H311 IVS:1H31 IVS H312 IVS:2H31 IVS H313 IVS:3H31 IVS HC11 IVS:1HC1 IVS HC12 IVS:2HC1 IVS HC13 IVS:3HC1 IVS H71 IWD:1H7 IWD H72 IWD:2H7 IWD H81 IWD:1H8 IWD H82 IWD:2H8 IWD H92O IWD:OH92 IWD H391 IX1:1H39 IX1 H392 IX1:2H39 IX1 H393 IX1:3H39 IX1 H401 IX1:1H40 IX1 H402 IX1:2H40 IX1 H91 IX1:1H9 IX1 H92 IX1:2H9 IX1 H151 IXX:1H15 IXX H152 IXX:2H15 IXX H161 IXX:1H16 IXX H162 IXX:2H16 IXX H171 IXX:1H17 IXX H172 IXX:2H17 IXX H181 IXX:1H18 IXX H182 IXX:2H18 IXX H183 IXX:3H18 IXX H191 IXX:1H19 IXX H192 IXX:2H19 IXX H193 IXX:3H19 IXX HAN1 IYG:1HAN IYG HAN2 IYG:2HAN IYG HAN3 IYG:3HAN IYG H1O IYG:1OH IYG HT1 IYG:1HT IYG HAT1 IYG:1HAT IYG HAT2 IYG:2HAT IYG H2 IYR: HN2 IYR HB2 IYR:1HB IYR HB3 IYR:2HB IYR HAN1 IYT:1HAN IYT HAN2 IYT:2HAN IYT HAN3 IYT:3HAN IYT H IYT: HN IYT HB2 IYT:1HB IYT HB3 IYT:2HB IYT HH IYT: HOH IYT HGT1 IYT:1HGT IYT HGT2 IYT:2HGT IYT HGT3 IYT:3HGT IYT HAJ1 IYZ:1HAJ IYZ HAJ2 IYZ:2HAJ IYZ HAK1 IYZ:1HAK IYZ HAK2 IYZ:2HAK IYZ HAL1 IYZ:1HAL IYZ HAL2 IYZ:2HAL IYZ HAA1 IYZ:1HAA IYZ HAA2 IYZ:2HAA IYZ HAA3 IYZ:3HAA IYZ H171 IZA:1H17 IZA H172 IZA:2H17 IZA H173 IZA:3H17 IZA H161 IZA:1H16 IZA H162 IZA:2H16 IZA H163 IZA:3H16 IZA H151 IZA:1H15 IZA H152 IZA:2H15 IZA H153 IZA:3H15 IZA H2C1 IZB:1H2C IZB H2C2 IZB:2H2C IZB H211 IZB:1H21 IZB H212 IZB:2H21 IZB H181 IZB:1H18 IZB H182 IZB:2H18 IZB H271 IZB:1H27 IZB H272 IZB:2H27 IZB H201 IZB:1H20 IZB H202 IZB:2H20 IZB H203 IZB:3H20 IZB H21 IZC:1H2 IZC H22 IZC:2H2 IZC H61 IZC:1H6 IZC H62 IZC:2H6 IZC H2C1 IZD:1H2C IZD H2C2 IZD:2H2C IZD H211 IZD:1H21 IZD H212 IZD:2H21 IZD H271 IZD:1H27 IZD H272 IZD:2H27 IZD H4C1 IZD:1H4C IZD H4C2 IZD:2H4C IZD H711 IZD:1H71 IZD H712 IZD:2H71 IZD H713 IZD:3H71 IZD H2C1 IZE:1H2C IZE H2C2 IZE:2H2C IZE H211 IZE:1H21 IZE H212 IZE:2H21 IZE H2C1 IZF:1H2C IZF H2C2 IZF:2H2C IZF H211 IZF:1H21 IZF H212 IZF:2H21 IZF H231 IZF:1H23 IZF H232 IZF:2H23 IZF H271 IZF:1H27 IZF H272 IZF:2H27 IZF H181 IZF:1H18 IZF H182 IZF:2H18 IZF H4C1 IZF:1H4C IZF H4C2 IZF:2H4C IZF H5C1 IZF:1H5C IZF H5C2 IZF:2H5C IZF H391 IZF:1H39 IZF H392 IZF:2H39 IZF H393 IZF:3H39 IZF H4C1 J01:1H4C J01 H4C2 J01:2H4C J01 H7C1 J01:1H7C J01 H7C2 J01:2H7C J01 H011 J07:1H01 J07 H012 J07:2H01 J07 H013 J07:3H01 J07 H021 J07:1H02 J07 H022 J07:2H02 J07 H071 J07:1H07 J07 H072 J07:2H07 J07 H081 J07:1H08 J07 H082 J07:2H08 J07 H101 J07:1H10 J07 H102 J07:2H10 J07 H111 J07:1H11 J07 H112 J07:2H11 J07 H191 J12:1H19 J12 H192 J12:2H19 J12 H201 J12:1H20 J12 H202 J12:2H20 J12 H211 J12:1H21 J12 H212 J12:2H21 J12 H231 J12:1H23 J12 H232 J12:2H23 J12 H241 J12:1H24 J12 H242 J12:2H24 J12 H261 J12:1H26 J12 H262 J12:2H26 J12 H271 J12:1H27 J12 H272 J12:2H27 J12 H281 J12:1H28 J12 H282 J12:2H28 J12 H351 J12:1H35 J12 H352 J12:2H35 J12 H361 J12:1H36 J12 H362 J12:2H36 J12 H371 J12:1H37 J12 H372 J12:2H37 J12 H61 J12:1H6 J12 H62 J12:2H6 J12 H421 J12:1H42 J12 H422 J12:2H42 J12 H191 J15:1H19 J15 H192 J15:2H19 J15 H201 J15:1H20 J15 H202 J15:2H20 J15 H211 J15:1H21 J15 H212 J15:2H21 J15 H231 J15:1H23 J15 H232 J15:2H23 J15 H241 J15:1H24 J15 H242 J15:2H24 J15 H281 J15:1H28 J15 H282 J15:2H28 J15 H351 J15:1H35 J15 H352 J15:2H35 J15 H361 J15:1H36 J15 H362 J15:2H36 J15 H371 J15:1H37 J15 H372 J15:2H37 J15 H261 J15:1H26 J15 H262 J15:2H26 J15 H271 J15:1H27 J15 H272 J15:2H27 J15 H61 J15:1H6 J15 H62 J15:2H6 J15 H1C1 J16:1H1C J16 H1C2 J16:2H1C J16 H1C3 J16:3H1C J16 H6C1 J16:1H6C J16 H6C2 J16:2H6C J16 H231 J16:1H23 J16 H232 J16:2H23 J16 H233 J16:3H23 J16 H271 J16:1H27 J16 H272 J16:2H27 J16 H273 J16:3H27 J16 H311 J16:1H31 J16 H312 J16:2H31 J16 H313 J16:3H31 J16 H821 J16:1H82 J16 H822 J16:2H82 J16 H4C1 J16:1H4C J16 H4C2 J16:2H4C J16 H141 J16:1H14 J16 H142 J16:2H14 J16 H151 J16:1H15 J16 H152 J16:2H15 J16 H181 J16:1H18 J16 H182 J16:2H18 J16 H183 J16:3H18 J16 H241 J16:1H24 J16 H242 J16:2H24 J16 H243 J16:3H24 J16 H2C1 J17:1H2C J17 H2C2 J17:2H2C J17 H311 J17:1H31 J17 H312 J17:2H31 J17 H611 J17:1H61 J17 H612 J17:2H61 J17 H7C1 J17:1H7C J17 H7C2 J17:2H7C J17 H1N1 J17:1H1N J17 H1N2 J17:2H1N J17 H041 J54:1H04 J54 H042 J54:2H04 J54 H021 J54:1H02 J54 H022 J54:2H02 J54 HBA1 J60:1HBA J60 HBA2 J60:2HBA J60 HBA3 J60:3HBA J60 HAZ1 J60:1HAZ J60 HAZ2 J60:2HAZ J60 HAY1 J60:1HAY J60 HAY2 J60:2HAY J60 HAW1 J60:1HAW J60 HAW2 J60:2HAW J60 HBB1 J60:1HBB J60 HBB2 J60:2HBB J60 HBB3 J60:3HBB J60 HAV1 J60:1HAV J60 HAV2 J60:2HAV J60 HAQ1 J60:1HAQ J60 HAQ2 J60:2HAQ J60 HAQ3 J60:3HAQ J60 HAR1 J60:1HAR J60 HAR2 J60:2HAR J60 HAR3 J60:3HAR J60 H11 J77:1H1 J77 H12 J77:2H1 J77 H13 J77:3H1 J77 H71 J77:1H7 J77 H72 J77:2H7 J77 H81 J77:1H8 J77 H82 J77:2H8 J77 H101 J77:1H10 J77 H102 J77:2H10 J77 H111 J77:1H11 J77 H112 J77:2H11 J77 H121 J77:1H12 J77 H122 J77:2H12 J77 H131 J77:1H13 J77 H132 J77:2H13 J77 H241 J77:1H24 J77 H242 J77:2H24 J77 H251 J77:1H25 J77 H252 J77:2H25 J77 H253 J77:3H25 J77 H11 J78:1H1 J78 H12 J78:2H1 J78 H13 J78:3H1 J78 H71 J78:1H7 J78 H72 J78:2H7 J78 H81 J78:1H8 J78 H82 J78:2H8 J78 H101 J78:1H10 J78 H102 J78:2H10 J78 H111 J78:1H11 J78 H112 J78:2H11 J78 H121 J78:1H12 J78 H122 J78:2H12 J78 H131 J78:1H13 J78 H132 J78:2H13 J78 H141 J78:1H14 J78 H142 J78:2H14 J78 H251 J78:1H25 J78 H252 J78:2H25 J78 H261 J78:1H26 J78 H262 J78:2H26 J78 H263 J78:3H26 J78 H11 J80:1H1 J80 H12 J80:2H1 J80 H13 J80:3H1 J80 H71 J80:1H7 J80 H72 J80:2H7 J80 H81 J80:1H8 J80 H82 J80:2H8 J80 H101 J80:1H10 J80 H102 J80:2H10 J80 H111 J80:1H11 J80 H112 J80:2H11 J80 H121 J80:1H12 J80 H122 J80:2H12 J80 H131 J80:1H13 J80 H132 J80:2H13 J80 H141 J80:1H14 J80 H142 J80:2H14 J80 H151 J80:1H15 J80 H152 J80:2H15 J80 H261 J80:1H26 J80 H262 J80:2H26 J80 H271 J80:1H27 J80 H272 J80:2H27 J80 H273 J80:3H27 J80 H11A JAN:1H1 JAN H12 JAN:2H1 JAN H13A JAN:3H1 JAN HN31 JAN:1HN3 JAN HN32 JAN:2HN3 JAN H181 JAN:1H18 JAN H182 JAN:2H18 JAN H183 JAN:3H18 JAN H401 JAS:1H40 JAS H402 JAS:2H40 JAS H411 JAS:1H41 JAS H412 JAS:2H41 JAS H413 JAS:3H41 JAS H331 JAS:1H33 JAS H332 JAS:2H33 JAS H421 JAS:1H42 JAS H422 JAS:2H42 JAS H423 JAS:3H42 JAS H391 JAS:1H39 JAS H392 JAS:2H39 JAS H393 JAS:3H39 JAS H291 JAS:1H29 JAS H292 JAS:2H29 JAS H281 JAS:1H28 JAS H282 JAS:2H28 JAS H381 JAS:1H38 JAS H382 JAS:2H38 JAS H383 JAS:3H38 JAS H431 JAS:1H43 JAS H432 JAS:2H43 JAS H433 JAS:3H43 JAS H251 JAS:1H25 JAS H252 JAS:2H25 JAS H21 JAS:1H2 JAS H22 JAS:2H2 JAS H41 JAS:1H4 JAS H42 JAS:2H4 JAS H61 JAS:1H6 JAS H62 JAS:2H6 JAS H371 JAS:1H37 JAS H372 JAS:2H37 JAS H373 JAS:3H37 JAS H221 JAS:1H22 JAS H222 JAS:2H22 JAS H211 JAS:1H21 JAS H212 JAS:2H21 JAS H441 JAS:1H44 JAS H442 JAS:2H44 JAS H443 JAS:3H44 JAS H361 JAS:1H36 JAS H362 JAS:2H36 JAS H363 JAS:3H36 JAS H7C1 JCL:1H7C JCL H7C2 JCL:2H7C JCL H8C1 JCL:1H8C JCL H8C2 JCL:2H8C JCL H9C1 JCL:1H9C JCL H9C2 JCL:2H9C JCL H101 JCL:1H10 JCL H102 JCL:2H10 JCL HC81 JE2:1HC8 JE2 HC82 JE2:2HC8 JE2 HC83 JE2:3HC8 JE2 H131 JE2:1H13 JE2 H132 JE2:2H13 JE2 H251 JE2:1H25 JE2 H252 JE2:2H25 JE2 H281 JE2:1H28 JE2 H282 JE2:2H28 JE2 H283 JE2:3H28 JE2 H291 JE2:1H29 JE2 H292 JE2:2H29 JE2 H293 JE2:3H29 JE2 H341 JE2:1H34 JE2 H342 JE2:2H34 JE2 H411 JE2:1H41 JE2 H412 JE2:2H41 JE2 H413 JE2:3H41 JE2 H381 JEF:1H38 JEF H382 JEF:2H38 JEF H383 JEF:3H38 JEF H371 JEF:1H37 JEF H372 JEF:2H37 JEF H361 JEF:1H36 JEF H362 JEF:2H36 JEF H351 JEF:1H35 JEF H352 JEF:2H35 JEF H341 JEF:1H34 JEF H342 JEF:2H34 JEF H343 JEF:3H34 JEF H321 JEF:1H32 JEF H322 JEF:2H32 JEF H401 JEF:1H40 JEF H402 JEF:2H40 JEF H403 JEF:3H40 JEF H201 JEF:1H20 JEF H202 JEF:2H20 JEF H181 JEF:1H18 JEF H182 JEF:2H18 JEF H183 JEF:3H18 JEF H171 JEF:1H17 JEF H172 JEF:2H17 JEF H11A JEF:1H1 JEF H12 JEF:2H1 JEF H13A JEF:3H1 JEF H31 JEF:1H3 JEF H32 JEF:2H3 JEF H61 JEF:1H6 JEF H62 JEF:2H6 JEF H63 JEF:3H6 JEF H41 JEF:1H4 JEF H42 JEF:2H4 JEF H91 JEF:1H9 JEF H92 JEF:2H9 JEF H93 JEF:3H9 JEF H81 JEF:1H8 JEF H82 JEF:2H8 JEF H121 JEF:1H12 JEF H122 JEF:2H12 JEF H123 JEF:3H12 JEF H101 JEF:1H10 JEF H102 JEF:2H10 JEF H151 JEF:1H15 JEF H152 JEF:2H15 JEF H153 JEF:3H15 JEF H141 JEF:1H14 JEF H142 JEF:2H14 JEF H161 JEF:1H16 JEF H162 JEF:2H16 JEF H311 JEF:1H31 JEF H312 JEF:2H31 JEF H313 JEF:3H31 JEF HN11 JEF:1HN1 JEF HN12 JEF:2HN1 JEF H11 JEN:1H1 JEN H12 JEN:2H1 JEN H13 JEN:3H1 JEN H101 JEN:1H10 JEN H102 JEN:2H10 JEN H111 JEN:1H11 JEN H112 JEN:2H11 JEN H131 JEN:1H13 JEN H132 JEN:2H13 JEN H141 JEN:1H14 JEN H142 JEN:2H14 JEN H211 JEN:1H21 JEN H212 JEN:2H21 JEN H213 JEN:3H21 JEN H121 JH0:1H12 JH0 H122 JH0:2H12 JH0 H131 JH0:1H13 JH0 H132 JH0:2H13 JH0 H141 JH0:1H14 JH0 H142 JH0:2H14 JH0 H151 JH0:1H15 JH0 H152 JH0:2H15 JH0 H161 JH0:1H16 JH0 H162 JH0:2H16 JH0 H171 JH0:1H17 JH0 H172 JH0:2H17 JH0 H181 JH0:1H18 JH0 H182 JH0:2H18 JH0 H191 JH0:1H19 JH0 H192 JH0:2H19 JH0 H201 JH0:1H20 JH0 H202 JH0:2H20 JH0 H211 JH0:1H21 JH0 H212 JH0:2H21 JH0 H221 JH0:1H22 JH0 H222 JH0:2H22 JH0 H231 JH0:1H23 JH0 H232 JH0:2H23 JH0 H241 JH0:1H24 JH0 H242 JH0:2H24 JH0 H251 JH0:1H25 JH0 H252 JH0:2H25 JH0 H261 JH0:1H26 JH0 H262 JH0:2H26 JH0 H263 JH0:3H26 JH0 H11 JH0:1H1 JH0 H12 JH0:2H1 JH0 H21 JH0:1H2 JH0 H22 JH0:2H2 JH0 H31 JH0:1H3 JH0 H32 JH0:2H3 JH0 H41A JH0:1H4 JH0 H42A JH0:2H4 JH0 H371 JH0:1H37 JH0 H372 JH0:2H37 JH0 H91 JH0:1H9 JH0 H92 JH0:2H9 JH0 H93 JH0:3H9 JH0 H81 JH0:1H8 JH0 H82 JH0:2H8 JH0 H341 JH0:1H34 JH0 H342 JH0:2H34 JH0 H331 JH0:1H33 JH0 H332 JH0:2H33 JH0 H321 JH0:1H32 JH0 H322 JH0:2H32 JH0 H311 JH0:1H31 JH0 H312 JH0:2H31 JH0 H281 JH0:1H28 JH0 H282 JH0:2H28 JH0 H283 JH0:3H28 JH0 H291 JH0:1H29 JH0 H292 JH0:2H29 JH0 H293 JH0:3H29 JH0 H301 JH0:1H30 JH0 H302 JH0:2H30 JH0 H303 JH0:3H30 JH0 HN61 JI3:1HN6 JI3 HN62 JI3:2HN6 JI3 H2'1 JI3:1H2' JI3 H2'2 JI3:2H2' JI3 H5'1 JI3:1H5' JI3 H5'2 JI3:2H5' JI3 H71 JI3:1H7 JI3 H72 JI3:2H7 JI3 H81 JI3:1H8 JI3 H82 JI3:2H8 JI3 H83 JI3:3H8 JI3 H91 JI3:1H9 JI3 H92 JI3:2H9 JI3 H101 JI3:1H10 JI3 H102 JI3:2H10 JI3 H121 JI3:1H12 JI3 H122 JI3:2H12 JI3 H131 JIN:1H13 JIN H132 JIN:2H13 JIN H133 JIN:3H13 JIN H341 JIN:1H34 JIN H342 JIN:2H34 JIN H343 JIN:3H34 JIN H241 JJ3:1H24 JJ3 H242 JJ3:2H24 JJ3 H101 JJ3:1H10 JJ3 H102 JJ3:2H10 JJ3 H111 JJ3:1H11 JJ3 H112 JJ3:2H11 JJ3 H121 JJ3:1H12 JJ3 H122 JJ3:2H12 JJ3 H261 JJ3:1H26 JJ3 H262 JJ3:2H26 JJ3 H263 JJ3:3H26 JJ3 H11 JN3:1H1 JN3 H12 JN3:2H1 JN3 H21 JN3:1H2 JN3 H22 JN3:2H2 JN3 H41 JN3:1H4 JN3 H42 JN3:2H4 JN3 H61 JN3:1H6 JN3 H62 JN3:2H6 JN3 H111 JN3:1H11 JN3 H112 JN3:2H11 JN3 H121 JN3:1H12 JN3 H122 JN3:2H12 JN3 H151 JN3:1H15 JN3 H152 JN3:2H15 JN3 H161 JN3:1H16 JN3 H162 JN3:2H16 JN3 H181 JN3:1H18 JN3 H182 JN3:2H18 JN3 H183 JN3:3H18 JN3 H191 JN3:1H19 JN3 H192 JN3:2H19 JN3 H193 JN3:3H19 JN3 H211 JN3:1H21 JN3 H212 JN3:2H21 JN3 H213 JN3:3H21 JN3 H221 JN3:1H22 JN3 H222 JN3:2H22 JN3 H231 JN3:1H23 JN3 H232 JN3:2H23 JN3 H21 JNH:1H2 JNH H22 JNH:2H2 JNH H31 JNH:1H3 JNH H32 JNH:2H3 JNH H41 JNH:1H4 JNH H42 JNH:2H4 JNH HN21 JNH:1HN2 JNH HN22 JNH:2HN2 JNH H71 JNH:1H7 JNH H72 JNH:2H7 JNH H201 JNH:1H20 JNH H202 JNH:2H20 JNH HN31 JNH:1HN3 JNH HN32 JNH:2HN3 JNH H231 JNK:1H23 JNK H232 JNK:2H23 JNK H241 JNK:1H24 JNK H242 JNK:2H24 JNK H261 JNK:1H26 JNK H262 JNK:2H26 JNK H271 JNK:1H27 JNK H272 JNK:2H27 JNK H301 JNK:1H30 JNK H302 JNK:2H30 JNK H303 JNK:3H30 JNK H101 JOS:1H10 JOS H102 JOS:2H10 JOS H161 JOS:1H16 JOS H162 JOS:2H16 JOS H163 JOS:3H16 JOS H21A JOS:1H2 JOS H22 JOS:2H2 JOS H181 JOS:1H18 JOS H182 JOS:2H18 JOS H183 JOS:3H18 JOS H191 JOS:1H19 JOS H192 JOS:2H19 JOS H193 JOS:3H19 JOS H201 JOS:1H20 JOS H202 JOS:2H20 JOS H71 JOS:1H7 JOS H72 JOS:2H7 JOS H221 JOS:1H22 JOS H222 JOS:2H22 JOS H223 JOS:3H22 JOS H6A1 JOS:1H6A JOS H6A2 JOS:2H6A JOS H6A3 JOS:3H6A JOS H7A1 JOS:1H7A JOS H7A2 JOS:2H7A JOS H7A3 JOS:3H7A JOS H2B1 JOS:1H2B JOS H2B2 JOS:2H2B JOS H6B1 JOS:1H6B JOS H6B2 JOS:2H6B JOS H6B3 JOS:3H6B JOS H7B1 JOS:1H7B JOS H7B2 JOS:2H7B JOS H7B3 JOS:3H7B JOS H2C1 JOS:1H2C JOS H2C2 JOS:2H2C JOS H4C1 JOS:1H4C JOS H4C2 JOS:2H4C JOS H4C3 JOS:3H4C JOS H5C1 JOS:1H5C JOS H5C2 JOS:2H5C JOS H5C3 JOS:3H5C JOS H8A1 JOS:1H8A JOS H8A2 JOS:2H8A JOS H8A3 JOS:3H8A JOS H231 JP1:1H23 JP1 H232 JP1:2H23 JP1 H251 JP1:1H25 JP1 H252 JP1:2H25 JP1 H261 JP1:1H26 JP1 H262 JP1:2H26 JP1 H221 JP1:1H22 JP1 H222 JP1:2H22 JP1 H231 JPA:1H23 JPA H232 JPA:2H23 JPA H233 JPA:3H23 JPA H31 JPC:1H3 JPC H32 JPC:2H3 JPC H33 JPC:3H3 JPC H41 JPC:1H4 JPC H42 JPC:2H4 JPC H43 JPC:3H4 JPC H71 JPJ:1H7 JPJ H72 JPJ:2H7 JPJ H181 JPJ:1H18 JPJ H182 JPJ:2H18 JPJ H91 JPN:1H9 JPN H92 JPN:2H9 JPN H81 JPN:1H8 JPN H82 JPN:2H8 JPN H71 JPN:1H7 JPN H72 JPN:2H7 JPN H11 JPR:1H1 JPR H12 JPR:2H1 JPR H13A JPR:3H1 JPR H91 JPR:1H9 JPR H92 JPR:2H9 JPR H101 JPR:1H10 JPR H102 JPR:2H10 JPR H111 JPR:1H11 JPR H112 JPR:2H11 JPR H161 JPR:1H16 JPR H162 JPR:2H16 JPR H171 JPR:1H17 JPR H172 JPR:2H17 JPR H173 JPR:3H17 JPR H181 JPR:1H18 JPR H182 JPR:2H18 JPR H183 JPR:3H18 JPR H211 JS4:1H21 JS4 H212 JS4:2H21 JS4 H611 JS4:1H61 JS4 H612 JS4:2H61 JS4 H121 JS4:1H12 JS4 H122 JS4:2H12 JS4 H221 JS4:1H22 JS4 H222 JS4:2H22 JS4 H321 JS4:1H32 JS4 H322 JS4:2H32 JS4 H531 JS4:1H53 JS4 H532 JS4:2H53 JS4 H631 JS4:1H63 JS4 H632 JS4:2H63 JS4 H731 JS4:1H73 JS4 H732 JS4:2H73 JS4 H831 JS4:1H83 JS4 H832 JS4:2H83 JS4 H151 JS4:1H15 JS4 H152 JS4:2H15 JS4 H11A JS4:1H1 JS4 H12A JS4:2H1 JS4 H251 JS4:1H25 JS4 H252 JS4:2H25 JS4 H241 JS4:1H24 JS4 H242 JS4:2H24 JS4 H641 JS4:1H64 JS4 H642 JS4:2H64 JS4 H21A JS4:1H2 JS4 H22 JS4:2H2 JS4 H211 JS5:1H21 JS5 H212 JS5:2H21 JS5 H611 JS5:1H61 JS5 H612 JS5:2H61 JS5 H121 JS5:1H12 JS5 H122 JS5:2H12 JS5 H221 JS5:1H22 JS5 H222 JS5:2H22 JS5 H321 JS5:1H32 JS5 H322 JS5:2H32 JS5 H531 JS5:1H53 JS5 H532 JS5:2H53 JS5 H631 JS5:1H63 JS5 H632 JS5:2H63 JS5 H731 JS5:1H73 JS5 H732 JS5:2H73 JS5 H831 JS5:1H83 JS5 H832 JS5:2H83 JS5 H251 JS5:1H25 JS5 H252 JS5:2H25 JS5 H351 JS5:1H35 JS5 H352 JS5:2H35 JS5 H451 JS5:1H45 JS5 H452 JS5:2H45 JS5 H551 JS5:1H55 JS5 H552 JS5:2H55 JS5 H241 JS5:1H24 JS5 H242 JS5:2H24 JS5 H11A JS5:1H1 JS5 H12A JS5:2H1 JS5 H641 JS5:1H64 JS5 H642 JS5:2H64 JS5 H82 JST:2H8 JST H81 JST:1H8 JST H101 JST:1H10 JST H102 JST:2H10 JST H111 JST:1H11 JST H112 JST:2H11 JST H131 JST:1H13 JST H132 JST:2H13 JST H11 JTP:1H1 JTP H12 JTP:2H1 JTP H13 JTP:3H1 JTP H331 JTP:1H33 JTP H332 JTP:2H33 JTP H333 JTP:3H33 JTP H201 JTP:1H20 JTP H202 JTP:2H20 JTP H191 JTP:1H19 JTP H192 JTP:2H19 JTP H271 JTP:1H27 JTP H272 JTP:2H27 JTP H261 JTP:1H26 JTP H262 JTP:2H26 JTP H251 JTP:1H25 JTP H252 JTP:2H25 JTP H241 JTP:1H24 JTP H242 JTP:2H24 JTP H231 JTP:1H23 JTP H232 JTP:2H23 JTP H71 JW5:1H7 JW5 H72 JW5:2H7 JW5 H1' JW5: H1* JW5 H2' JW5: H2* JW5 HO'2 JW5:2HO* JW5 H3' JW5: H3* JW5 H4' JW5: H4* JW5 H5'1 JW5:1H5* JW5 H5'2 JW5:2H5* JW5 HOP3 JW5:3HOP JW5 HOP2 JW5:2HOP JW5 HO21 JY:1HO2 JY H11 JY:1H1 JY H12 JY:2H1 JY H21 JY:1H2 JY H22 JY:2H2 JY H31 JY:1H3 JY H41 JY:1H4 JY H42 JY:2H4 JY H61 JY:1H6 JY H71 JY:1H7 JY H91 JY:1H9 JY H92 JY:2H9 JY H111 JY:1H11 JY H112 JY:2H11 JY H121 JY:1H12 JY H122 JY:2H12 JY H141 JY:1H14 JY H151 JY:1H15 JY H152 JY:2H15 JY H161 JY:1H16 JY H162 JY:2H16 JY H171 JY:1H17 JY H181 JY:1H18 JY H182 JY:2H18 JY H183 JY:3H18 JY H191 JY:1H19 JY H192 JY:2H19 JY H201 JY:1H20 JY H211 JY:1H21 JY H212 JY:2H21 JY H213 JY:3H21 JY H221 JY:1H22 JY H222 JY:2H22 JY H231 JY:1H23 JY H241 JY:1H24 JY H261 JY:1H26 JY H281 JY:1H28 JY HO11 JY:1HO1 JY H111 K01:1H11 K01 H112 K01:2H11 K01 H101 K01:1H10 K01 H102 K01:2H10 K01 H91 K01:1H9 K01 H92 K01:2H9 K01 H81 K01:1H8 K01 H82 K01:2H8 K01 H21 K01:1H2 K01 H22 K01:2H2 K01 H11 K01:1H1 K01 H12 K01:2H1 K01 H13 K01:3H1 K01 H231 K01:1H23 K01 H232 K01:2H23 K01 H241 K01:1H24 K01 H242 K01:2H24 K01 H243 K01:3H24 K01 H7C1 K02:1H7C K02 H7C2 K02:2H7C K02 H111 K02:1H11 K02 H112 K02:2H11 K02 H101 K02:1H10 K02 H102 K02:2H10 K02 H103 K02:3H10 K02 H8C1 K02:1H8C K02 H8C2 K02:2H8C K02 H2C1 K02:1H2C K02 H2C2 K02:2H2C K02 H181 K02:1H18 K02 H182 K02:2H18 K02 H1C1 K02:1H1C K02 H1C2 K02:2H1C K02 H1C3 K02:3H1C K02 H191 K02:1H19 K02 H192 K02:2H19 K02 H193 K02:3H19 K02 H201 K03:1H20 K03 H202 K03:2H20 K03 H251 K03:1H25 K03 H252 K03:2H25 K03 H241 K03:1H24 K03 H242 K03:2H24 K03 H243 K03:3H24 K03 H231 K03:1H23 K03 H232 K03:2H23 K03 H233 K03:3H23 K03 H211 K03:1H21 K03 H212 K03:2H21 K03 H4C1 K03:1H4C K03 H4C2 K03:2H4C K03 H2C1 K03:1H2C K03 H2C2 K03:2H2C K03 H5C1 K03:1H5C K03 H5C2 K03:2H5C K03 H5C3 K03:3H5C K03 H1C1 K03:1H1C K03 H1C2 K03:2H1C K03 H1C3 K03:3H1C K03 H2' K05: H2* K05 H5' K05: H5* K05 H6' K05: H6* K05 H112 K05:2H11 K05 H101 K05:1H10 K05 H102 K05:2H10 K05 H103 K05:3H10 K05 HN11 K10:1HN1 K10 HN12 K10:2HN1 K10 H71 K10:1H7 K10 H72 K10:2H7 K10 H73 K10:3H7 K10 H81 K10:1H8 K10 H82 K10:2H8 K10 H83 K10:3H8 K10 H91 K10:1H9 K10 H92 K10:2H9 K10 H93 K10:3H9 K10 H101 K10:1H10 K10 H102 K10:2H10 K10 H171 K10:1H17 K10 H172 K10:2H17 K10 H173 K10:3H17 K10 H181 K10:1H18 K10 H182 K10:2H18 K10 H183 K10:3H18 K10 H1N1 K1R:1H1N K1R H1N2 K1R:2H1N K1R HB11 K1R:1HB1 K1R HB12 K1R:2HB1 K1R HG11 K1R:1HG1 K1R HG12 K1R:2HG1 K1R H2N1 K1R:1H2N K1R H2N2 K1R:2H2N K1R HB21 K1R:1HB2 K1R HB22 K1R:2HB2 K1R H101 K21:1H10 K21 H102 K21:2H10 K21 H121 K21:1H12 K21 H122 K21:2H12 K21 H131 K21:1H13 K21 H132 K21:2H13 K21 H221 K21:1H22 K21 H222 K21:2H22 K21 H241 K21:1H24 K21 H242 K21:2H24 K21 H301 K21:1H30 K21 H302 K21:2H30 K21 H311 K21:1H31 K21 H312 K21:2H31 K21 H331 K21:1H33 K21 H332 K21:2H33 K21 H341 K21:1H34 K21 H342 K21:2H34 K21 H431 K21:1H43 K21 H432 K21:2H43 K21 H591 K21:1H59 K21 H592 K21:2H59 K21 H593 K21:3H59 K21 H161 K25:1H16 K25 H162 K25:2H16 K25 H163 K25:3H16 K25 H171 K25:1H17 K25 H172 K25:2H17 K25 H173 K25:3H17 K25 H111 K37:1H11 K37 H112 K37:2H11 K37 H113 K37:3H11 K37 H111 K44:1H11 K44 H112 K44:2H11 K44 H113 K44:3H11 K44 H121 K44:1H12 K44 H122 K44:2H12 K44 H141 K44:1H14 K44 H142 K44:2H14 K44 H151 K51:1H15 K51 H152 K51:2H15 K51 H171 K51:1H17 K51 H172 K51:2H17 K51 H173 K51:3H17 K51 H181 K51:1H18 K51 H182 K51:2H18 K51 H183 K51:3H18 K51 HB11 KA1:1HB1 KA1 HB12 KA1:2HB1 KA1 HD1A KA1:1HD KA1 HD2 KA1:2HD KA1 HD11 KA1:1HD1 KA1 HD12 KA1:2HD1 KA1 HD13 KA1:3HD1 KA1 HD21 KA1:1HD2 KA1 HD22 KA1:2HD2 KA1 HNZ1 KAA:1HNZ KAA HNZ2 KAA:2HNZ KAA HE1 KAA:1HE KAA HE2 KAA:2HE KAA HD1 KAA:1HD KAA HD2 KAA:2HD KAA HG1 KAA:1HG KAA HG2 KAA:2HG KAA HB1 KAA:1HB KAA HB2 KAA:2HB KAA HN1 KAA:1HN KAA HN2 KAA:2HN KAA H5'1 KAA:1H5* KAA H5'2 KAA:2H5* KAA H4' KAA: H4* KAA H3' KAA: H3* KAA HO3' KAA:HO3* KAA H2' KAA: H2* KAA HO2' KAA:HO2* KAA H1' KAA: H1* KAA HN61 KAA:1HN6 KAA HN62 KAA:2HN6 KAA H61 KAB:1H6 KAB H62 KAB:2H6 KAB H361 KAB:1H36 KAB H362 KAB:2H36 KAB H363 KAB:3H36 KAB H41 KAB:1H4 KAB H42 KAB:2H4 KAB HN11 KAB:1HN1 KAB HN12 KAB:2HN1 KAB H21 KAB:1H2 KAB H22A KAB:2H2 KAB H371 KAB:1H37 KAB H372 KAB:2H37 KAB H373 KAB:3H37 KAB H471 KAB:1H47 KAB H472 KAB:2H47 KAB H473 KAB:3H47 KAB H111 KAB:11H1 KAB H211 KAB:1H21 KAB H212 KAB:2H21 KAB H461 KAB:1H46 KAB H462 KAB:2H46 KAB H463 KAB:3H46 KAB H381 KAB:1H38 KAB H382 KAB:2H38 KAB H383 KAB:3H38 KAB H251 KAB:1H25 KAB H252 KAB:2H25 KAB H451 KAB:1H45 KAB H452 KAB:2H45 KAB H453 KAB:3H45 KAB H391 KAB:1H39 KAB H392 KAB:2H39 KAB H393 KAB:3H39 KAB H281 KAB:1H28 KAB H282 KAB:2H28 KAB H291 KAB:1H29 KAB H292 KAB:2H29 KAB H401 KAB:1H40 KAB H402 KAB:2H40 KAB H403 KAB:3H40 KAB H441 KAB:1H44 KAB H442 KAB:2H44 KAB H443 KAB:3H44 KAB H411 KAB:1H41 KAB H412 KAB:2H41 KAB H413 KAB:3H41 KAB H431 KAB:1H43 KAB H432 KAB:2H43 KAB H433 KAB:3H43 KAB H421 KAB:1H42 KAB H422 KAB:2H42 KAB H5' KAG:1H5* KAG H5'' KAG:2H5* KAG H4' KAG: H4* KAG H3' KAG: H3* KAG H2'' KAG:2H2* KAG H2' KAG:1H2* KAG H1' KAG: H1* KAG HN51 KAH:1HN5 KAH HN52 KAH:2HN5 KAH HC1 KAH:1HC KAH HC2 KAH:2HC KAH HC3 KAH:3HC KAH HC31 KAH:1HC3 KAH HC32 KAH:2HC3 KAH HC21 KAH:1HC2 KAH HC22 KAH:2HC2 KAH HN1 KAI:1HN KAI HD1 KAI:1HD KAI HD2 KAI:2HD KAI HD11 KAI:1HD1 KAI HD12 KAI:2HD1 KAI HD13 KAI:3HD1 KAI HD21 KAI:1HD2 KAI HD22 KAI:2HD2 KAI HD23 KAI:3HD2 KAI HB11 KAI:1HB1 KAI HB12 KAI:2HB1 KAI HOD1 KAI:1HOD KAI HA21 KAM:1HA2 KAM HA22 KAM:2HA2 KAM HA23 KAM:3HA2 KAM H4A1 KAM:1H4A KAM H4A2 KAM:2H4A KAM HA51 KAM:1HA5 KAM HA52 KAM:2HA5 KAM HOP2 KAM:2HOP KAM HOP3 KAM:3HOP KAM HNC9 KAM:9HNC KAM HC91 KAM:1HC9 KAM HC92 KAM:2HC9 KAM HC93 KAM:3HC9 KAM HC61 KAM:1HC6 KAM HC62 KAM:2HC6 KAM HC51 KAM:1HC5 KAM HC52 KAM:2HC5 KAM HC41 KAM:1HC4 KAM HC42 KAM:2HC4 KAM HC31 KAM:1HC3 KAM HC32 KAM:2HC3 KAM HC21 KAM:1HC2 KAM HC22 KAM:2HC2 KAM HOC1 KAM:1HOC KAM H61 KAN:1H6 KAN H62 KAN:2H6 KAN H121 KAN:1H12 KAN H122 KAN:2H12 KAN H181 KAN:1H18 KAN H182 KAN:2H18 KAN HN11 KAN:1HN1 KAN HN12 KAN:2HN1 KAN HN21 KAN:1HN2 KAN HN22 KAN:2HN2 KAN HN31 KAN:1HN3 KAN HN32 KAN:2HN3 KAN HN41 KAN:1HN4 KAN HN42 KAN:2HN4 KAN HA2 KAP:2HA KAP HA1 KAP:1HA KAP HB2 KAP:2HB KAP HB1 KAP:1HB KAP HG2 KAP:2HG KAP HG1 KAP:1HG KAP HD2 KAP:2HD KAP HD1 KAP:1HD KAP HE2 KAP:2HE KAP HE1 KAP:1HE KAP HS3 KAP:3HS KAP HS2 KAP:2HS KAP HS1 KAP:1HS KAP H1 KAP:1H KAP H2 KAP:2H KAP H91 KAR:1H9 KAR H92 KAR:2H9 KAR H93 KAR:3H9 KAR H201 KAR:1H20 KAR H202 KAR:2H20 KAR H203 KAR:3H20 KAR H251 KAR:1H25 KAR H252 KAR:2H25 KAR H253 KAR:3H25 KAR H231 KAR:1H23 KAR H232 KAR:2H23 KAR H341 KAR:1H34 KAR H342 KAR:2H34 KAR H311 KAR:1H31 KAR H312 KAR:2H31 KAR H351 KAR:1H35 KAR H352 KAR:2H35 KAR H361 KAR:1H36 KAR H362 KAR:2H36 KAR H363 KAR:3H36 KAR H281 KAR:1H28 KAR H282 KAR:2H28 KAR H191 KAR:1H19 KAR H192 KAR:2H19 KAR H301 KAR:1H30 KAR H302 KAR:2H30 KAR H131 KAR:1H13 KAR H132 KAR:2H13 KAR H911 KAR:1H91 KAR H912 KAR:2H91 KAR H921 KAR:1H92 KAR H922 KAR:2H92 KAR H941 KAR:1H94 KAR H942 KAR:2H94 KAR H451 KAR:1H45 KAR H452 KAR:2H45 KAR H453 KAR:3H45 KAR H951 KAR:1H95 KAR H952 KAR:2H95 KAR H901 KAR:1H90 KAR H902 KAR:2H90 KAR H891 KAR:1H89 KAR H892 KAR:2H89 KAR HAE1 KBG:1HAE KBG HAE2 KBG:2HAE KBG H21 KCP:1H2 KCP H22 KCP:2H2 KCP H3'1 KCP:1H3' KCP H3'2 KCP:2H3' KCP H3'3 KCP:3H3' KCP H131 KCP:1H13 KCP H132 KCP:2H13 KCP HN1 KCQ:1HN KCQ HN2 KCQ:2HN KCQ HMK1 KCQ:1HMK KCQ HMK2 KCQ:2HMK KCQ HMK3 KCQ:3HMK KCQ HB1 KCQ:1HB KCQ HB2 KCQ:2HB KCQ HAE1 KCQ:1HAE KCQ HAE2 KCQ:2HAE KCQ HD11 KCQ:1HD1 KCQ HD12 KCQ:2HD1 KCQ H KCX:1HN KCX HN2 KCX:2HN KCX HB2 KCX:1HB KCX HB3 KCX:2HB KCX HG2 KCX:1HG KCX HG3 KCX:2HG KCX HD2 KCX:1HD KCX HD3 KCX:2HD KCX HE2 KCX:1HE KCX HE3 KCX:2HE KCX HZ KCX:1HZ KCX HQ2 KCX: HX2 KCX H31 KDA:1H3 KDA H32 KDA:2H3 KDA H81 KDA:1H8 KDA H82 KDA:2H8 KDA H91 KDA:1H9 KDA H92 KDA:2H9 KDA H111 KDA:1H11 KDA H112 KDA:2H11 KDA H1C1 KDG:1H1C KDG H1C2 KDG:2H1C KDG H4C1 KDG:1H4C KDG H4C2 KDG:2H4C KDG H31 KDO:1H3 KDO H32 KDO:2H3 KDO H81 KDO:1H8 KDO H82 KDO:2H8 KDO H5A1 KE4:1H5A KE4 H5A2 KE4:2H5A KE4 H2A1 KE4:1H2A KE4 H2A2 KE4:2H2A KE4 H2A3 KE4:3H2A KE4 H4A1 KE4:1H4A KE4 H4A2 KE4:2H4A KE4 H1 KE4:1H KE4 H2 KE4:2H KE4 HN51 KE4:1HN5 KE4 HN52 KE4:2HN5 KE4 HB1 KE4:1HB KE4 HB2 KE4:2HB KE4 HG1 KE4:1HG KE4 HG2 KE4:2HG KE4 H183 KEF:3H18 KEF H182 KEF:2H18 KEF H181 KEF:1H18 KEF H3'2 KEF:2H3' KEF H3'1 KEF:1H3' KEF HN31 KEF:1HN3 KEF HN32 KEF:2HN3 KEF H2A1 KET:1H2A KET H2A2 KET:2H2A KET H2A3 KET:3H2A KET H5A1 KET:1H5A KET H5A2 KET:2H5A KET HOP2 KET:2HOP KET HOP3 KET:3HOP KET HB1 KET:1HB KET HB2 KET:2HB KET H201 KEU:1H20 KEU H202 KEU:2H20 KEU H191 KEU:1H19 KEU H192 KEU:2H19 KEU H11 KEU:1H1 KEU H12A KEU:2H1 KEU H21 KEU:1H2 KEU H22 KEU:2H2 KEU H31 KEU:1H3 KEU H32 KEU:2H3 KEU HN21 KEU:1HN2 KEU HN22 KEU:2HN2 KEU HN61 KEU:1HN6 KEU HN62 KEU:2HN6 KEU H KGC:1HN KGC H2 KGC:2HN KGC HB2 KGC:1HB KGC HB3 KGC:2HB KGC HG2 KGC:1HG KGC HG3 KGC:2HG KGC HD2 KGC:1HD KGC HD3 KGC:2HD KGC HE2 KGC:1HE KGC HE3 KGC:2HE KGC HZ KGC: HNZ KGC H271 KGC:1H27 KGC H272 KGC:2H27 KGC H121 KGC:1H12 KGC H122 KGC:2H12 KGC H81 KGQ:1H8 KGQ H82 KGQ:2H8 KGQ H151 KGQ:1H15 KGQ H152 KGQ:2H15 KGQ H181 KGQ:1H18 KGQ H182 KGQ:2H18 KGQ H191 KGQ:1H19 KGQ H192 KGQ:2H19 KGQ H193 KGQ:3H19 KGQ H161 KGQ:1H16 KGQ H162 KGQ:2H16 KGQ H171 KGQ:1H17 KGQ H172 KGQ:2H17 KGQ H173 KGQ:3H17 KGQ H201 KGQ:1H20 KGQ H202 KGQ:2H20 KGQ H211 KGQ:1H21 KGQ H212 KGQ:2H21 KGQ H301 KGQ:1H30 KGQ H302 KGQ:2H30 KGQ H303 KGQ:3H30 KGQ H291 KGQ:1H29 KGQ H292 KGQ:2H29 KGQ H293 KGQ:3H29 KGQ H311 KGQ:1H31 KGQ H312 KGQ:2H31 KGQ H313 KGQ:3H31 KGQ H31 KGQ:1H3 KGQ H32A KGQ:2H3 KGQ H21 KGQ:1H2 KGQ H22A KGQ:2H2 KGQ H11A KGQ:1H1 KGQ H12A KGQ:2H1 KGQ H21 KGR:1H2 KGR HO21 KGR:1HO2 KGR H31 KGR:1H3 KGR HO31 KGR:1HO3 KGR H41 KGR:1H4 KGR H42 KGR:2H4 KGR H81 KGY:1H8 KGY H82 KGY:2H8 KGY H83 KGY:3H8 KGY H101 KGY:1H10 KGY H102 KGY:2H10 KGY H103 KGY:3H10 KGY H121 KGY:1H12 KGY H122 KGY:2H12 KGY H131 KGY:1H13 KGY H132 KGY:2H13 KGY H151 KGY:1H15 KGY H152 KGY:2H15 KGY H161 KGY:1H16 KGY H162 KGY:2H16 KGY H181 KGY:1H18 KGY H182 KGY:2H18 KGY H311 KGY:1H31 KGY H312 KGY:2H31 KGY H341 KGY:1H34 KGY H342 KGY:2H34 KGY H343 KGY:3H34 KGY HC21 KH1:1HC2 KH1 HC22 KH1:2HC2 KH1 HC41 KH1:1HC4 KH1 HC42 KH1:2HC4 KH1 HC91 KH1:1HC9 KH1 HC92 KH1:2HC9 KH1 H111 KH1:1H11 KH1 H112 KH1:2H11 KH1 H121 KH1:1H12 KH1 H122 KH1:2H12 KH1 H151 KH1:1H15 KH1 H152 KH1:2H15 KH1 H161 KH1:1H16 KH1 H162 KH1:2H16 KH1 H181 KH1:1H18 KH1 H182 KH1:2H18 KH1 H183 KH1:3H18 KH1 H191 KH1:1H19 KH1 H192 KH1:2H19 KH1 H221 KH1:1H22 KH1 H222 KH1:2H22 KH1 H231 KH1:1H23 KH1 H232 KH1:2H23 KH1 H261 KH1:1H26 KH1 H262 KH1:2H26 KH1 H271 KH1:1H27 KH1 H272 KH1:2H27 KH1 H211 KH1:1H21 KH1 H212 KH1:2H21 KH1 H213 KH1:3H21 KH1 H241 KH1:1H24 KH1 H242 KH1:2H24 KH1 H281 KH1:1H28 KH1 H282 KH1:2H28 KH1 H283 KH1:3H28 KH1 H291 KH1:1H29 KH1 H292 KH1:2H29 KH1 H293 KH1:3H29 KH1 H9C1 KHA:1H9C KHA H9C2 KHA:2H9C KHA H101 KHA:1H10 KHA H102 KHA:2H10 KHA H7C1 KHA:1H7C KHA H7C2 KHA:2H7C KHA H111 KHA:1H11 KHA H112 KHA:2H11 KHA H113 KHA:3H11 KHA H161 KHA:1H16 KHA H162 KHA:2H16 KHA H151 KHA:1H15 KHA H152 KHA:2H15 KHA H131 KHA:1H13 KHA H132 KHA:2H13 KHA H141 KHA:1H14 KHA H142 KHA:2H14 KHA H121 KHA:1H12 KHA H122 KHA:2H12 KHA H1' KHO: H1* KHO H2' KHO: H2* KHO H3' KHO: H3* KHO H4' KHO: H4* KHO H5'1 KHO:1H5* KHO H5'2 KHO:2H5* KHO H5' KHO: H5* KHO H51 KHO:1H5 KHO H52 KHO:2H5 KHO H5B KHP: H5* KHP H5'1 KHP:1H5* KHP H5'2 KHP:2H5* KHP H4' KHP: H4* KHP H1' KHP: H1* KHP H2B KHP: H2* KHP H3B KHP: H3* KHP H121 KI2:1H12 KI2 H122 KI2:2H12 KI2 H191 KI2:1H19 KI2 H192 KI2:2H19 KI2 H61 KIF:1H6 KIF H62 KIF:2H6 KIF H81 KIQ:1H8 KIQ H82 KIQ:2H8 KIQ H211 KIQ:1H21 KIQ H212 KIQ:2H21 KIQ HN1 KIQ:1HN KIQ HN2 KIQ:2HN KIQ H31 KIQ:1H3 KIQ H32 KIQ:2H3 KIQ H121 KIQ:1H12 KIQ H122 KIQ:2H12 KIQ H91 KIQ:1H9 KIQ H92 KIQ:2H9 KIQ H51 KIR:1H5 KIR H61 KIR:1H6 KIR H201 KIR:1H20 KIR H241 KIR:1H24 KIR H251 KIR:1H25 KIR H252 KIR:2H25 KIR H41 KIR:1H4 KIR H91 KIR:1H9 KIR H101 KIR:1H10 KIR H111 KIR:1H11 KIR H121 KIR:1H12 KIR H131 KIR:1H13 KIR H141 KIR:1H14 KIR H151 KIR:1H15 KIR H161 KIR:1H16 KIR H171 KIR:1H17 KIR H191 KIR:1H19 KIR H221 KIR:1H22 KIR H231 KIR:1H23 KIR HO51 KIR:1HO5 KIR H11 KIR:1H1 KIR H411 KIR:1H41 KIR H412 KIR:2H41 KIR H413 KIR:3H41 KIR HO61 KIR:1HO6 KIR H421 KIR:1H42 KIR H422 KIR:2H42 KIR H423 KIR:3H42 KIR H431 KIR:1H43 KIR H432 KIR:2H43 KIR H433 KIR:3H43 KIR H441 KIR:1H44 KIR H442 KIR:2H44 KIR H443 KIR:3H44 KIR H261 KIR:1H26 KIR H451 KIR:1H45 KIR H452 KIR:2H45 KIR H461 KIR:1H46 KIR H462 KIR:2H46 KIR H463 KIR:3H46 KIR H281 KIR:1H28 KIR H291 KIR:1H29 KIR H301 KIR:1H30 KIR HO01 KIR:1HO0 KIR H311 KIR:1H31 KIR HO11 KIR:1HO1 KIR H471 KIR:1H47 KIR H472 KIR:2H47 KIR H473 KIR:3H47 KIR H481 KIR:1H48 KIR H482 KIR:2H48 KIR H483 KIR:3H48 KIR H331 KIR:1H33 KIR H351 KIR:1H35 KIR H361 KIR:1H36 KIR H371 KIR:1H37 KIR H381 KIR:1H38 KIR H391 KIR:1H39 KIR H392 KIR:2H39 KIR H393 KIR:3H39 KIR HO11 KIV:1HO1 KIV HC31 KIV:1HC3 KIV HC41 KIV:1HC4 KIV HC42 KIV:2HC4 KIV HC43 KIV:3HC4 KIV HC51 KIV:1HC5 KIV HC52 KIV:2HC5 KIV HC53 KIV:3HC5 KIV H221 KJ2:1H22 KJ2 H222 KJ2:2H22 KJ2 H231 KJ2:1H23 KJ2 H232 KJ2:2H23 KJ2 H241 KJ2:1H24 KJ2 H242 KJ2:2H24 KJ2 H251 KJ2:1H25 KJ2 H252 KJ2:2H25 KJ2 H4C1 KLN:1H4C KLN H4C2 KLN:2H4C KLN H7C1 KLN:1H7C KLN H7C2 KLN:2H7C KLN H141 KLN:1H14 KLN H142 KLN:2H14 KLN H211 KLN:1H21 KLN H212 KLN:2H21 KLN H241 KLN:1H24 KLN H242 KLN:2H24 KLN H221 KLN:1H22 KLN H222 KLN:2H22 KLN H231 KLN:1H23 KLN H232 KLN:2H23 KLN H261 KLN:1H26 KLN H262 KLN:2H26 KLN H263 KLN:3H26 KLN H41 KMB:1H4 KMB H42 KMB:2H4 KMB HN41 KMB:1HN4 KMB HN42 KMB:2HN4 KMB HN21 KMB:1HN2 KMB HN22 KMB:2HN2 KMB H91 KMB:1H9 KMB H92 KMB:2H9 KMB H31 KMT:1H3 KMT H32 KMT:2H3 KMT H41 KMT:1H4 KMT H42 KMT:2H4 KMT H51 KMT:1H5 KMT H52 KMT:2H5 KMT H53 KMT:3H5 KMT H101 KNI:1H10 KNI H102 KNI:2H10 KNI H121 KNI:1H12 KNI H122 KNI:2H12 KNI H161 KNI:1H16 KNI H162 KNI:2H16 KNI H191 KNI:1H19 KNI H192 KNI:2H19 KNI H201 KNI:1H20 KNI H202 KNI:2H20 KNI H231 KNI:1H23 KNI H232 KNI:2H23 KNI H233 KNI:3H23 KNI H241 KNI:1H24 KNI H242 KNI:2H24 KNI H243 KNI:3H24 KNI H251 KNI:1H25 KNI H252 KNI:2H25 KNI H253 KNI:3H25 KNI H271 KNI:1H27 KNI H272 KNI:2H27 KNI H273 KNI:3H27 KNI HN12 KNK:2HN1 KNK HB11 KNK:1HB1 KNK HB12 KNK:2HB1 KNK HG11 KNK:1HG1 KNK HG12 KNK:2HG1 KNK HD11 KNK:1HD1 KNK HD12 KNK:2HD1 KNK HE11 KNK:1HE1 KNK HE12 KNK:2HE1 KNK HD21 KNK:1HD2 KNK HD22 KNK:2HD2 KNK HG21 KNK:1HG2 KNK HG22 KNK:2HG2 KNK HB21 KNK:1HB2 KNK HB22 KNK:2HB2 KNK H11 KO4:1H1 KO4 H12 KO4:2H1 KO4 H21 KO4:1H2 KO4 H22 KO4:2H2 KO4 H31 KO4:1H3 KO4 H32 KO4:2H3 KO4 H41 KO4:1H4 KO4 H42 KO4:2H4 KO4 H6C1 KOJ:1H6C KOJ H6C2 KOJ:2H6C KOJ HAK1 KOR:1HAK KOR HAK2 KOR:2HAK KOR HAI3 KOR:1HAI KOR HAI2 KOR:2HAI KOR H KOR:1HN KOR H2 KOR:2HN KOR HAH3 KOR:1HAH KOR HAH2 KOR:2HAH KOR HB3 KOR:1HBC KOR HB2 KOR:2HBC KOR H271 KOS:1H27 KOS H272 KOS:2H27 KOS H273 KOS:3H27 KOS H131 KOS:1H13 KOS H132 KOS:2H13 KOS H281 KOS:1H28 KOS H282 KOS:2H28 KOS H283 KOS:3H28 KOS H151 KOS:1H15 KOS H152 KOS:2H15 KOS H301 KOS:1H30 KOS H302 KOS:2H30 KOS H311 KOS:1H31 KOS H312 KOS:2H31 KOS H331 KOS:1H33 KOS H332 KOS:2H33 KOS H333 KOS:3H33 KOS H341 KOS:1H34 KOS H342 KOS:2H34 KOS H343 KOS:3H34 KOS H221 KOS:1H22 KOS H222 KOS:2H22 KOS H223 KOS:3H22 KOS H231 KOS:1H23 KOS H232 KOS:2H23 KOS H233 KOS:3H23 KOS HN21 KOS:1HN2 KOS HN22 KOS:2HN2 KOS H251 KOS:1H25 KOS H252 KOS:2H25 KOS H253 KOS:3H25 KOS H261 KOS:1H26 KOS H262 KOS:2H26 KOS H263 KOS:3H26 KOS HB1 KPA:1HB KPA HB2 KPA:2HB KPA HG1 KPA:1HG KPA HG2 KPA:2HG KPA HP1 KPA:1HP KPA HP2 KPA:2HP KPA HAK1 KPC:1HAK KPC HAK2 KPC:2HAK KPC HAK3 KPC:3HAK KPC HAI1 KPC:1HAI KPC HAI2 KPC:2HAI KPC HAG1 KPC:1HAG KPC HAG2 KPC:2HAG KPC HAF1 KPC:1HAF KPC HAF2 KPC:2HAF KPC HAL1 KPC:1HAL KPC HN1 KPH:1HN KPH HN2 KPH:2HN KPH HOP2 KPH:2HOP KPH HB1 KPH:1HB KPH HB2 KPH:2HB KPH HG1 KPH:1HG KPH HG2 KPH:2HG KPH HD1 KPH:1HD KPH HD2 KPH:2HD KPH HE1 KPH:1HE KPH HE2 KPH:2HE KPH HNZ1 KPH:1HNZ KPH HNZ2 KPH:2HNZ KPH H31 KPL:1H3 KPL H32 KPL:2H3 KPL H33 KPL:3H3 KPL H11 KPL:1H1 KPL H12 KPL:2H1 KPL H13 KPL:3H1 KPL H41 KPL:1H4 KPL H42 KPL:2H4 KPL H71 KPV:1H7 KPV H72 KPV:2H7 KPV H81 KPV:1H8 KPV H82 KPV:2H8 KPV H91 KPV:1H9 KPV H92 KPV:2H9 KPV HAM1 KR2:1HAM KR2 HAM2 KR2:2HAM KR2 HAN1 KR2:1HAN KR2 HAN2 KR2:2HAN KR2 HAV1 KR2:1HAV KR2 HAV2 KR2:2HAV KR2 HDD1 KR2:1HDD KR2 HDD2 KR2:2HDD KR2 HNN1 KR2:1HNN KR2 HNN2 KR2:2HNN KR2 HAT1 KR2:1HAT KR2 HAT2 KR2:2HAT KR2 HAS1 KR2:1HAS KR2 HAS2 KR2:2HAS KR2 HAK1 KR2:1HAK KR2 HAK2 KR2:2HAK KR2 H71 KRA:1H7 KRA H72 KRA:2H7 KRA H101 KRA:1H10 KRA H102 KRA:2H10 KRA H161 KRB:1H16 KRB H162 KRB:2H16 KRB H251 KRB:1H25 KRB H252 KRB:2H25 KRB HN1 KRI:1HN KRI HN2 KRI:2HN KRI HB1 KRI:1HB KRI HB2 KRI:2HB KRI HG1 KRI:1HG KRI HG2 KRI:2HG KRI H51 KRI:1H5 KRI H52 KRI:2H5 KRI H11 KRI:1H1 KRI H12 KRI:2H1 KRI H261 KSA:1H26 KSA H262 KSA:2H26 KSA H263 KSA:3H26 KSA H251 KSA:1H25 KSA H252 KSA:2H25 KSA H253 KSA:3H25 KSA H271 KSA:1H27 KSA H272 KSA:2H27 KSA H231 KSA:1H23 KSA H232 KSA:2H23 KSA H91 KSG:1H9 KSG H92 KSG:2H9 KSG H93 KSG:3H9 KSG H111 KSG:1H11 KSG H112 KSG:2H11 KSG HN11 KSG:1HN1 KSG HN12 KSG:2HN1 KSG H41 KST:1H4 KST H42 KST:2H4 KST H31 KST:1H3 KST H32 KST:2H3 KST H21 KST:1H2 KST H22 KST:2H2 KST H11 KST:1H1 KST H12 KST:2H1 KST HN1A KST:1HN KST HN2 KST:2HN KST H2 KT3:2H KT3 HG11 KT3:1HG1 KT3 HG21 KT3:1HG2 KT3 HB11 KT3:1HB1 KT3 HB21 KT3:1HB2 KT3 HA1A KT3:1HA KT3 HXT1 KT3:1HXT KT3 H1 KT3:1H KT3 H11 KT3:1H1 KT3 H12A KT3:2H1 KT3 H21 KT3:1H2 KT3 H22 KT3:2H2 KT3 H31 KT3:1H3 KT3 H32 KT3:2H3 KT3 HN81 KT3:1HN8 KT3 HN82 KT3:2HN8 KT3 HN21 KT3:1HN2 KT3 HN22 KT3:2HN2 KT3 HE23 KT3:3HE2 KT3 HG13 KT3:3HG1 KT3 HG23 KT3:3HG2 KT3 HB13 KT3:3HB1 KT3 HB23 KT3:3HB2 KT3 HA3 KT3:3HA KT3 HXT3 KT3:3HXT KT3 H3 KT3:3H KT3 HG12 KT3:2HG1 KT3 HG22 KT3:2HG2 KT3 HB12 KT3:2HB1 KT3 HB22 KT3:2HB2 KT3 HA2A KT3:2HA KT3 HXT2 KT3:2HXT KT3 H2 KT5:2H KT5 HG11 KT5:1HG1 KT5 HG21 KT5:1HG2 KT5 HB11 KT5:1HB1 KT5 HB21 KT5:1HB2 KT5 HA1A KT5:1HA KT5 HXT1 KT5:1HXT KT5 H1 KT5:1H KT5 H11 KT5:1H1 KT5 H12A KT5:2H1 KT5 H21 KT5:1H2 KT5 H22 KT5:2H2 KT5 H31 KT5:1H3 KT5 H32 KT5:2H3 KT5 HN81 KT5:1HN8 KT5 HN82 KT5:2HN8 KT5 HN21 KT5:1HN2 KT5 HN22 KT5:2HN2 KT5 HE25 KT5:5HE2 KT5 HG15 KT5:5HG1 KT5 HG25 KT5:5HG2 KT5 HB15 KT5:5HB1 KT5 HB25 KT5:5HB2 KT5 HA5 KT5:5HA KT5 HXT5 KT5:5HXT KT5 H5 KT5:5H KT5 HG14 KT5:4HG1 KT5 HG24 KT5:4HG2 KT5 HB14 KT5:4HB1 KT5 HB24 KT5:4HB2 KT5 HA4 KT5:4HA KT5 HXT4 KT5:4HXT KT5 H4 KT5:4H KT5 HG13 KT5:3HG1 KT5 HG23 KT5:3HG2 KT5 HB13 KT5:3HB1 KT5 HB23 KT5:3HB2 KT5 HA3 KT5:3HA KT5 HXT3 KT5:3HXT KT5 H3 KT5:3H KT5 HG12 KT5:2HG1 KT5 HG22 KT5:2HG2 KT5 HB12 KT5:2HB1 KT5 HB22 KT5:2HB2 KT5 HA2A KT5:2HA KT5 HXT2 KT5:2HXT KT5 H6C1 KTA:1H6C KTA H6C2 KTA:2H6C KTA H5C1 KTA:1H5C KTA H5C2 KTA:2H5C KTA H4C1 KTA:1H4C KTA H4C2 KTA:2H4C KTA H2C1 KTA:1H2C KTA H2C2 KTA:2H2C KTA H7C1 KTA:1H7C KTA H7C2 KTA:2H7C KTA HC41 KTN:1HC4 KTN HC42 KTN:2HC4 KTN HC71 KTN:1HC7 KTN HC72 KTN:2HC7 KTN H141 KTN:1H14 KTN H142 KTN:2H14 KTN H211 KTN:1H21 KTN H212 KTN:2H21 KTN H221 KTN:1H22 KTN H222 KTN:2H22 KTN H231 KTN:1H23 KTN H232 KTN:2H23 KTN H241 KTN:1H24 KTN H242 KTN:2H24 KTN H261 KTN:1H26 KTN H262 KTN:2H26 KTN H263 KTN:3H26 KTN H231 KWT:1H23 KWT H232 KWT:2H23 KWT H101 KWT:1H10 KWT H102 KWT:2H10 KWT H103 KWT:3H10 KWT H121 KWT:1H12 KWT H122 KWT:2H12 KWT H141 KWT:1H14 KWT H142 KWT:2H14 KWT H143 KWT:3H14 KWT H161 KWT:1H16 KWT H162 KWT:2H16 KWT H171 KWT:1H17 KWT H172 KWT:2H17 KWT H221 KWT:1H22 KWT H222 KWT:2H22 KWT H223 KWT:3H22 KWT H241 KWT:1H24 KWT H242 KWT:2H24 KWT H243 KWT:3H24 KWT HAC1 KY1:1HAC KY1 HAC2 KY1:2HAC KY1 HBC1 KY1:1HBC KY1 HBC2 KY1:2HBC KY1 H1N1 KY1:1H1N KY1 H1N2 KY1:2H1N KY1 H2 KYN: HN2 KYN HB2 KYN:1HB KYN HB3 KYN:2HB KYN HD1 KYN:1HD KYN HE1 KYN:1HE KYN HE2 KYN:2HE KYN H11 KYN:1H1 KYN H12 KYN:2H1 KYN H511 KYS:1H51 KYS H512 KYS:2H51 KYS H471 KYS:1H47 KYS H472 KYS:2H47 KYS H461 KYS:1H46 KYS H462 KYS:2H46 KYS H451 KYS:1H45 KYS H452 KYS:2H45 KYS H401 KYS:1H40 KYS H402 KYS:2H40 KYS H281 KYS:1H28 KYS H282 KYS:2H28 KYS H291 KYS:1H29 KYS H292 KYS:2H29 KYS H151 L00:1H15 L00 H152 L00:2H15 L00 H153 L00:3H15 L00 H161 L00:1H16 L00 H162 L00:2H16 L00 H163 L00:3H16 L00 HN61 L00:1HN6 L00 HN62 L00:2HN6 L00 H211 L00:1H21 L00 H212 L00:2H21 L00 H213 L00:3H21 L00 H221 L00:1H22 L00 H222 L00:2H22 L00 H11 L00:1H1 L00 H12 L00:2H1 L00 H21 L00:1H2 L00 H22 L00:2H2 L00 H31 L00:1H3 L00 H32 L00:2H3 L00 H41 L00:1H4 L00 H42 L00:2H4 L00 H43 L00:3H4 L00 H71 L00:1H7 L00 H72 L00:2H7 L00 H81 L00:1H8 L00 H82 L00:2H8 L00 H83 L00:3H8 L00 H1C1 L01:1H1C L01 H1C2 L01:2H1C L01 H1C3 L01:3H1C L01 H2C1 L01:1H2C L01 H2C2 L01:2H2C L01 H3C1 L01:1H3C L01 H3C2 L01:2H3C L01 H5C1 L01:1H5C L01 H5C2 L01:2H5C L01 H6C1 L01:1H6C L01 H6C2 L01:2H6C L01 H7C1 L01:1H7C L01 H7C2 L01:2H7C L01 H7C3 L01:3H7C L01 H211 L01:1H21 L01 H212 L01:2H21 L01 H311 L01:1H31 L01 H312 L01:2H31 L01 H351 L01:1H35 L01 H352 L01:2H35 L01 H421 L01:1H42 L01 H422 L01:2H42 L01 H423 L01:3H42 L01 H8C1 L02:1H8C L02 H8C2 L02:2H8C L02 H101 L02:1H10 L02 H102 L02:2H10 L02 H131 L02:1H13 L02 H132 L02:2H13 L02 H151 L02:1H15 L02 H152 L02:2H15 L02 H1C1 L03:1H1C L03 H1C2 L03:2H1C L03 H1C3 L03:3H1C L03 H11A L04:1H1 L04 H12A L04:2H1 L04 H41 L04:1H4 L04 H42A L04:2H4 L04 H43A L04:3H4 L04 H81 L04:1H8 L04 H82 L04:2H8 L04 H91 L04:1H9 L04 H92 L04:2H9 L04 H181 L04:1H18 L04 H182 L04:2H18 L04 H201 L04:1H20 L04 H202 L04:2H20 L04 H221 L04:1H22 L04 H222 L04:2H22 L04 H223 L04:3H22 L04 H231 L04:1H23 L04 H232 L04:2H23 L04 H241 L04:1H24 L04 H242 L04:2H24 L04 H251 L04:1H25 L04 H252 L04:2H25 L04 H281 L04:1H28 L04 H282 L04:2H28 L04 H11 L05:1H1 L05 H12 L05:2H1 L05 H13 L05:3H1 L05 H131 L05:1H13 L05 H132 L05:2H13 L05 H11 L06:1H1 L06 H12A L06:2H1 L06 H31 L06:1H3 L06 H32 L06:2H3 L06 H41 L06:1H4 L06 H42 L06:2H4 L06 H51 L06:1H5 L06 H52 L06:2H5 L06 HN91 L06:1HN9 L06 HN92 L06:2HN9 L06 H191 L08:1H19 L08 H192 L08:2H19 L08 H201 L08:1H20 L08 H202 L08:2H20 L08 H211 L08:1H21 L08 H212 L08:2H21 L08 H221 L08:1H22 L08 H222 L08:2H22 L08 H241 L08:1H24 L08 H242 L08:2H24 L08 H243 L08:3H24 L08 H91 L08:1H9 L08 H92 L08:2H9 L08 H331 L08:1H33 L08 H332 L08:2H33 L08 H333 L08:3H33 L08 H1C1 L09:1H1C L09 H1C2 L09:2H1C L09 H1C3 L09:3H1C L09 H3C1 L09:1H3C L09 H3C2 L09:2H3C L09 H3C3 L09:3H3C L09 H4C1 L09:1H4C L09 H4C2 L09:2H4C L09 H4C3 L09:3H4C L09 H181 L09:1H18 L09 H182 L09:2H18 L09 H4C1 L10:1H4C L10 H4C2 L10:2H4C L10 H4C3 L10:3H4C L10 H3C1 L10:1H3C L10 H3C2 L10:2H3C L10 H3C3 L10:3H3C L10 H1C1 L10:1H1C L10 H1C2 L10:2H1C L10 H1C3 L10:3H1C L10 H171 L11:1H17 L11 H172 L11:2H17 L11 H3C1 L11:1H3C L11 H3C2 L11:2H3C L11 H311 L11:1H31 L11 H312 L11:2H31 L11 H301 L11:1H30 L11 H302 L11:2H30 L11 H281 L11:1H28 L11 H282 L11:2H28 L11 H271 L11:1H27 L11 H272 L11:2H27 L11 H5C1 L12:1H5C L12 H5C2 L12:2H5C L12 H6C1 L12:1H6C L12 H6C2 L12:2H6C L12 H141 L13:1H14 L13 H142 L13:2H14 L13 H131 L13:1H13 L13 H132 L13:2H13 L13 H133 L13:3H13 L13 H1C1 L15:1H1C L15 H1C2 L15:2H1C L15 H1C3 L15:3H1C L15 H111 L15:1H11 L15 H112 L15:2H11 L15 H121 L15:1H12 L15 H122 L15:2H12 L15 H131 L15:1H13 L15 H132 L15:2H13 L15 H11 L17:1H1 L17 H12 L17:2H1 L17 H331 L17:1H33 L17 H332 L17:2H33 L17 H71 L17:1H7 L17 H72 L17:2H7 L17 H73 L17:3H7 L17 H91 L1A:1H9 L1A H92 L1A:2H9 L1A H131 L1A:1H13 L1A H132 L1A:2H13 L1A HN41 L1A:1HN4 L1A HN42 L1A:2HN4 L1A H171 L1A:1H17 L1A H172 L1A:2H17 L1A H201 L1A:1H20 L1A H202 L1A:2H20 L1A H221 L1A:1H22 L1A H222 L1A:2H22 L1A H223 L1A:3H22 L1A H231 L1A:1H23 L1A H232 L1A:2H23 L1A H233 L1A:3H23 L1A H241 L1A:1H24 L1A H242 L1A:2H24 L1A H251 L1A:1H25 L1A H252 L1A:2H25 L1A H261 L1A:1H26 L1A H262 L1A:2H26 L1A H271 L1A:1H27 L1A H272 L1A:2H27 L1A H281 L1A:1H28 L1A H282 L1A:2H28 L1A H301 L1A:1H30 L1A H302 L1A:2H30 L1A H331 L1A:1H33 L1A H332 L1A:2H33 L1A HN31 L1B:1HN3 L1B HN32 L1B:2HN3 L1B HN41 L1B:1HN4 L1B HN42 L1B:2HN4 L1B H51 L1B:1H5 L1B H52 L1B:2H5 L1B H61 L1B:1H6 L1B H62 L1B:2H6 L1B H63 L1B:3H6 L1B H161 L1B:1H16 L1B H162 L1B:2H16 L1B H171 L1B:1H17 L1B H172 L1B:2H17 L1B H181 L1B:1H18 L1B H182 L1B:2H18 L1B H191 L1B:1H19 L1B H192 L1B:2H19 L1B H193 L1B:3H19 L1B H5N1 L1G:1H5N L1G H5N2 L1G:2H5N L1G H131 L1G:1H13 L1G H132 L1G:2H13 L1G H141 L1G:1H14 L1G H142 L1G:2H14 L1G H151 L1G:1H15 L1G H152 L1G:2H15 L1G H153 L1G:3H15 L1G H161 L1G:1H16 L1G H162 L1G:2H16 L1G H171 L1G:1H17 L1G H172 L1G:2H17 L1G H221 L1G:1H22 L1G H222 L1G:2H22 L1G H231 L1G:1H23 L1G H232 L1G:2H23 L1G H251 L1G:1H25 L1G H252 L1G:2H25 L1G H253 L1G:3H25 L1G H271 L1G:1H27 L1G H272 L1G:2H27 L1G H281 L1G:1H28 L1G H282 L1G:2H28 L1G H331 L1G:1H33 L1G H332 L1G:2H33 L1G H333 L1G:3H33 L1G H12 L1P:2H1 L1P H11 L1P:1H1 L1P H32 L1P:2H3 L1P H31 L1P:1H3 L1P HOP2 L1P:2HOP L1P HOP3 L1P:3HOP L1P H112 L1P:2H11 L1P H111 L1P:1H11 L1P H122 L1P:2H12 L1P H121 L1P:1H12 L1P H143 L1P:3H14 L1P H142 L1P:2H14 L1P H141 L1P:1H14 L1P H152 L1P:2H15 L1P H151 L1P:1H15 L1P H162 L1P:2H16 L1P H161 L1P:1H16 L1P H172 L1P:2H17 L1P H171 L1P:1H17 L1P H193 L1P:3H19 L1P H192 L1P:2H19 L1P H191 L1P:1H19 L1P H202 L1P:2H20 L1P H201 L1P:1H20 L1P H212 L1P:2H21 L1P H211 L1P:1H21 L1P H222 L1P:2H22 L1P H221 L1P:1H22 L1P H243 L1P:3H24 L1P H242 L1P:2H24 L1P H241 L1P:1H24 L1P H252 L1P:2H25 L1P H251 L1P:1H25 L1P H262 L1P:2H26 L1P H261 L1P:1H26 L1P H272 L1P:2H27 L1P H271 L1P:1H27 L1P H293 L1P:3H29 L1P H292 L1P:2H29 L1P H291 L1P:1H29 L1P H303 L1P:3H30 L1P H302 L1P:2H30 L1P H301 L1P:1H30 L1P H412 L1P:2H41 L1P H411 L1P:1H41 L1P H422 L1P:2H42 L1P H421 L1P:1H42 L1P H443 L1P:3H44 L1P H442 L1P:2H44 L1P H441 L1P:1H44 L1P H452 L1P:2H45 L1P H451 L1P:1H45 L1P H462 L1P:2H46 L1P H461 L1P:1H46 L1P H472 L1P:2H47 L1P H471 L1P:1H47 L1P H493 L1P:3H49 L1P H492 L1P:2H49 L1P H491 L1P:1H49 L1P H502 L1P:2H50 L1P H501 L1P:1H50 L1P H512 L1P:2H51 L1P H511 L1P:1H51 L1P H522 L1P:2H52 L1P H521 L1P:1H52 L1P H543 L1P:3H54 L1P H542 L1P:2H54 L1P H541 L1P:1H54 L1P H552 L1P:2H55 L1P H551 L1P:1H55 L1P H562 L1P:2H56 L1P H561 L1P:1H56 L1P H572 L1P:2H57 L1P H571 L1P:1H57 L1P H593 L1P:3H59 L1P H592 L1P:2H59 L1P H591 L1P:1H59 L1P H603 L1P:3H60 L1P H602 L1P:2H60 L1P H601 L1P:1H60 L1P H1C1 L20:1H1C L20 H1C2 L20:2H1C L20 H1C3 L20:3H1C L20 H181 L20:1H18 L20 H182 L20:2H18 L20 H211 L20:1H21 L20 H212 L20:2H21 L20 H251 L20:1H25 L20 H252 L20:2H25 L20 HN21 L24:1HN2 L24 HN22 L24:2HN2 L24 H81 L24:1H8 L24 H82 L24:2H8 L24 H101 L24:1H10 L24 H102 L24:2H10 L24 H111 L24:1H11 L24 H112 L24:2H11 L24 H121 L24:1H12 L24 H122 L24:2H12 L24 HB1 L24:1HB L24 HB2 L24:2HB L24 HG1 L24:1HG L24 HG2 L24:2HG L24 H121 L2C:1H12 L2C H122 L2C:2H12 L2C H131 L2C:1H13 L2C H132 L2C:2H13 L2C H141 L2C:1H14 L2C H142 L2C:2H14 L2C H151 L2C:1H15 L2C H152 L2C:2H15 L2C H161 L2C:1H16 L2C H162 L2C:2H16 L2C H171 L2C:1H17 L2C H172 L2C:2H17 L2C H181 L2C:1H18 L2C H182 L2C:2H18 L2C H191 L2C:1H19 L2C H192 L2C:2H19 L2C H193 L2C:3H19 L2C H221 L2C:1H22 L2C H222 L2C:2H22 L2C H231 L2C:1H23 L2C H232 L2C:2H23 L2C H241 L2C:1H24 L2C H242 L2C:2H24 L2C H251 L2C:1H25 L2C H252 L2C:2H25 L2C H261 L2C:1H26 L2C H262 L2C:2H26 L2C H271 L2C:1H27 L2C H272 L2C:2H27 L2C H281 L2C:1H28 L2C H282 L2C:2H28 L2C H291 L2C:1H29 L2C H292 L2C:2H29 L2C H301 L2C:1H30 L2C H302 L2C:2H30 L2C H311 L2C:1H31 L2C H312 L2C:2H31 L2C H321 L2C:1H32 L2C H322 L2C:2H32 L2C H323 L2C:3H32 L2C H411 L2C:1H41 L2C H412 L2C:2H41 L2C H431 L2C:1H43 L2C H432 L2C:2H43 L2C H5N1 L2G:1H5N L2G H5N2 L2G:2H5N L2G H131 L2G:1H13 L2G H132 L2G:2H13 L2G H141 L2G:1H14 L2G H142 L2G:2H14 L2G H151 L2G:1H15 L2G H152 L2G:2H15 L2G H153 L2G:3H15 L2G H161 L2G:1H16 L2G H162 L2G:2H16 L2G H171 L2G:1H17 L2G H172 L2G:2H17 L2G H221 L2G:1H22 L2G H222 L2G:2H22 L2G H231 L2G:1H23 L2G H232 L2G:2H23 L2G H251 L2G:1H25 L2G H252 L2G:2H25 L2G H253 L2G:3H25 L2G H271 L2G:1H27 L2G H272 L2G:2H27 L2G H281 L2G:1H28 L2G H282 L2G:2H28 L2G H341 L2G:1H34 L2G H342 L2G:2H34 L2G H343 L2G:3H34 L2G H12 L2P:2H1 L2P H11 L2P:1H1 L2P H32 L2P:2H3 L2P H31 L2P:1H3 L2P H112 L2P:2H11 L2P H111 L2P:1H11 L2P H122 L2P:2H12 L2P H121 L2P:1H12 L2P H143 L2P:3H14 L2P H142 L2P:2H14 L2P H141 L2P:1H14 L2P H152 L2P:2H15 L2P H151 L2P:1H15 L2P H162 L2P:2H16 L2P H161 L2P:1H16 L2P H172 L2P:2H17 L2P H171 L2P:1H17 L2P H193 L2P:3H19 L2P H192 L2P:2H19 L2P H191 L2P:1H19 L2P H202 L2P:2H20 L2P H201 L2P:1H20 L2P H212 L2P:2H21 L2P H211 L2P:1H21 L2P H222 L2P:2H22 L2P H221 L2P:1H22 L2P H243 L2P:3H24 L2P H242 L2P:2H24 L2P H241 L2P:1H24 L2P H252 L2P:2H25 L2P H251 L2P:1H25 L2P H262 L2P:2H26 L2P H261 L2P:1H26 L2P H272 L2P:2H27 L2P H271 L2P:1H27 L2P H293 L2P:3H29 L2P H292 L2P:2H29 L2P H291 L2P:1H29 L2P H303 L2P:3H30 L2P H302 L2P:2H30 L2P H301 L2P:1H30 L2P H412 L2P:2H41 L2P H411 L2P:1H41 L2P H422 L2P:2H42 L2P H421 L2P:1H42 L2P H443 L2P:3H44 L2P H442 L2P:2H44 L2P H441 L2P:1H44 L2P H452 L2P:2H45 L2P H451 L2P:1H45 L2P H462 L2P:2H46 L2P H461 L2P:1H46 L2P H472 L2P:2H47 L2P H471 L2P:1H47 L2P H493 L2P:3H49 L2P H492 L2P:2H49 L2P H491 L2P:1H49 L2P H502 L2P:2H50 L2P H501 L2P:1H50 L2P H512 L2P:2H51 L2P H511 L2P:1H51 L2P H522 L2P:2H52 L2P H521 L2P:1H52 L2P H543 L2P:3H54 L2P H542 L2P:2H54 L2P H541 L2P:1H54 L2P H552 L2P:2H55 L2P H551 L2P:1H55 L2P H562 L2P:2H56 L2P H561 L2P:1H56 L2P H572 L2P:2H57 L2P H571 L2P:1H57 L2P H593 L2P:3H59 L2P H592 L2P:2H59 L2P H591 L2P:1H59 L2P H603 L2P:3H60 L2P H602 L2P:2H60 L2P H601 L2P:1H60 L2P HN21 L34:1HN2 L34 HN22 L34:2HN2 L34 H71 L34:1H7 L34 H72 L34:2H7 L34 H91 L34:1H9 L34 H92 L34:2H9 L34 HB1 L34:1HB L34 HB2 L34:2HB L34 HG1 L34:1HG L34 HG2 L34:2HG L34 H151 L35:1H15 L35 H152 L35:2H15 L35 H153 L35:3H15 L35 H161 L35:1H16 L35 H162 L35:2H16 L35 H163 L35:3H16 L35 HN21 L37:1HN2 L37 HN22 L37:2HN2 L37 HN51 L37:1HN5 L37 HN52 L37:2HN5 L37 HB1 L37:1HB L37 HB2 L37:2HB L37 HG1 L37:1HG L37 HG2 L37:2HG L37 H5N1 L3G:1H5N L3G H5N2 L3G:2H5N L3G H131 L3G:1H13 L3G H132 L3G:2H13 L3G H141 L3G:1H14 L3G H142 L3G:2H14 L3G H151 L3G:1H15 L3G H152 L3G:2H15 L3G H153 L3G:3H15 L3G H161 L3G:1H16 L3G H162 L3G:2H16 L3G H171 L3G:1H17 L3G H172 L3G:2H17 L3G H221 L3G:1H22 L3G H222 L3G:2H22 L3G H231 L3G:1H23 L3G H232 L3G:2H23 L3G H251 L3G:1H25 L3G H252 L3G:2H25 L3G H253 L3G:3H25 L3G H271 L3G:1H27 L3G H272 L3G:2H27 L3G H281 L3G:1H28 L3G H282 L3G:2H28 L3G H12 L3P:2H1 L3P H11 L3P:1H1 L3P H32 L3P:2H3 L3P H31 L3P:1H3 L3P H42 L3P:2H4 L3P H41 L3P:1H4 L3P H62 L3P:2H6 L3P H61 L3P:1H6 L3P HOP6 L3P:6HOP L3P H112 L3P:2H11 L3P H111 L3P:1H11 L3P H122 L3P:2H12 L3P H121 L3P:1H12 L3P H143 L3P:3H14 L3P H142 L3P:2H14 L3P H141 L3P:1H14 L3P H152 L3P:2H15 L3P H151 L3P:1H15 L3P H162 L3P:2H16 L3P H161 L3P:1H16 L3P H172 L3P:2H17 L3P H171 L3P:1H17 L3P H193 L3P:3H19 L3P H192 L3P:2H19 L3P H191 L3P:1H19 L3P H202 L3P:2H20 L3P H201 L3P:1H20 L3P H212 L3P:2H21 L3P H211 L3P:1H21 L3P H222 L3P:2H22 L3P H221 L3P:1H22 L3P H243 L3P:3H24 L3P H242 L3P:2H24 L3P H241 L3P:1H24 L3P H252 L3P:2H25 L3P H251 L3P:1H25 L3P H262 L3P:2H26 L3P H261 L3P:1H26 L3P H272 L3P:2H27 L3P H271 L3P:1H27 L3P H293 L3P:3H29 L3P H292 L3P:2H29 L3P H291 L3P:1H29 L3P H303 L3P:3H30 L3P H302 L3P:2H30 L3P H301 L3P:1H30 L3P H412 L3P:2H41 L3P H411 L3P:1H41 L3P H422 L3P:2H42 L3P H421 L3P:1H42 L3P H443 L3P:3H44 L3P H442 L3P:2H44 L3P H441 L3P:1H44 L3P H452 L3P:2H45 L3P H451 L3P:1H45 L3P H462 L3P:2H46 L3P H461 L3P:1H46 L3P H472 L3P:2H47 L3P H471 L3P:1H47 L3P H493 L3P:3H49 L3P H492 L3P:2H49 L3P H491 L3P:1H49 L3P H502 L3P:2H50 L3P H501 L3P:1H50 L3P H512 L3P:2H51 L3P H511 L3P:1H51 L3P H522 L3P:2H52 L3P H521 L3P:1H52 L3P H543 L3P:3H54 L3P H542 L3P:2H54 L3P H541 L3P:1H54 L3P H552 L3P:2H55 L3P H551 L3P:1H55 L3P H562 L3P:2H56 L3P H561 L3P:1H56 L3P H572 L3P:2H57 L3P H571 L3P:1H57 L3P H593 L3P:3H59 L3P H592 L3P:2H59 L3P H591 L3P:1H59 L3P H603 L3P:3H60 L3P H602 L3P:2H60 L3P H601 L3P:1H60 L3P H151 L47:1H15 L47 H152 L47:2H15 L47 H211 L47:1H21 L47 H212 L47:2H21 L47 H213 L47:3H21 L47 H101 L48:1H10 L48 H102 L48:2H10 L48 H241 L48:1H24 L48 H242 L48:2H24 L48 H243 L48:3H24 L48 H291 L48:1H29 L48 H292 L48:2H29 L48 H293 L48:3H29 L48 H331 L48:1H33 L48 H332 L48:2H33 L48 H333 L48:3H33 L48 H371 L48:1H37 L48 H372 L48:2H37 L48 H101 L4C:1H10 L4C H102 L4C:2H10 L4C H111 L4C:1H11 L4C H112 L4C:2H11 L4C H5C1 L4C:1H5C L4C H5C2 L4C:2H5C L4C H7C1 L4C:1H7C L4C H7C2 L4C:2H7C L4C H7C3 L4C:3H7C L4C H271 L4G:1H27 L4G H272 L4G:2H27 L4G H273 L4G:3H27 L4G H301 L4G:1H30 L4G H302 L4G:2H30 L4G H311 L4G:1H31 L4G H312 L4G:2H31 L4G H331 L4G:1H33 L4G H332 L4G:2H33 L4G H341 L4G:1H34 L4G H342 L4G:2H34 L4G H351 L4G:1H35 L4G H352 L4G:2H35 L4G H361 L4G:1H36 L4G H362 L4G:2H36 L4G H371 L4G:1H37 L4G H372 L4G:2H37 L4G H12 L4P:2H1 L4P H11 L4P:1H1 L4P H32 L4P:2H3 L4P H31 L4P:1H3 L4P H42 L4P:2H4 L4P H41 L4P:1H4 L4P H62 L4P:2H6 L4P H61 L4P:1H6 L4P HOP2 L4P:2HOP L4P H112 L4P:2H11 L4P H111 L4P:1H11 L4P H122 L4P:2H12 L4P H121 L4P:1H12 L4P H143 L4P:3H14 L4P H142 L4P:2H14 L4P H141 L4P:1H14 L4P H152 L4P:2H15 L4P H151 L4P:1H15 L4P H162 L4P:2H16 L4P H161 L4P:1H16 L4P H172 L4P:2H17 L4P H171 L4P:1H17 L4P H193 L4P:3H19 L4P H192 L4P:2H19 L4P H191 L4P:1H19 L4P H202 L4P:2H20 L4P H201 L4P:1H20 L4P H212 L4P:2H21 L4P H211 L4P:1H21 L4P H222 L4P:2H22 L4P H221 L4P:1H22 L4P H243 L4P:3H24 L4P H242 L4P:2H24 L4P H241 L4P:1H24 L4P H252 L4P:2H25 L4P H251 L4P:1H25 L4P H262 L4P:2H26 L4P H261 L4P:1H26 L4P H272 L4P:2H27 L4P H271 L4P:1H27 L4P H293 L4P:3H29 L4P H292 L4P:2H29 L4P H291 L4P:1H29 L4P H303 L4P:3H30 L4P H302 L4P:2H30 L4P H301 L4P:1H30 L4P H412 L4P:2H41 L4P H411 L4P:1H41 L4P H422 L4P:2H42 L4P H421 L4P:1H42 L4P H443 L4P:3H44 L4P H442 L4P:2H44 L4P H441 L4P:1H44 L4P H452 L4P:2H45 L4P H451 L4P:1H45 L4P H462 L4P:2H46 L4P H461 L4P:1H46 L4P H472 L4P:2H47 L4P H471 L4P:1H47 L4P H493 L4P:3H49 L4P H492 L4P:2H49 L4P H491 L4P:1H49 L4P H502 L4P:2H50 L4P H501 L4P:1H50 L4P H512 L4P:2H51 L4P H511 L4P:1H51 L4P H522 L4P:2H52 L4P H521 L4P:1H52 L4P H543 L4P:3H54 L4P H542 L4P:2H54 L4P H541 L4P:1H54 L4P H552 L4P:2H55 L4P H551 L4P:1H55 L4P H562 L4P:2H56 L4P H561 L4P:1H56 L4P H572 L4P:2H57 L4P H571 L4P:1H57 L4P H593 L4P:3H59 L4P H592 L4P:2H59 L4P H591 L4P:1H59 L4P H603 L4P:3H60 L4P H602 L4P:2H60 L4P H601 L4P:1H60 L4P H11 L75:1H1 L75 H12 L75:2H1 L75 H21 L75:1H2 L75 H51 L75:1H5 L75 H52 L75:2H5 L75 H53 L75:3H5 L75 H61 L75:1H6 L75 H62 L75:2H6 L75 H63 L75:3H6 L75 H71 L75:1H7 L75 H72 L75:2H7 L75 H73 L75:3H7 L75 H81 L75:1H8 L75 H82 L75:2H8 L75 H91 L75:1H9 L75 H92 L75:2H9 L75 H101 L75:1H10 L75 H102 L75:2H10 L75 H111 L75:1H11 L75 H121 L75:1H12 L75 H122 L75:2H12 L75 H131 L75:1H13 L75 H141 L75:1H14 L75 H142 L75:2H14 L75 H161 L75:1H16 L75 H171 L75:1H17 L75 H181 L75:1H18 L75 H191 L75:1H19 L75 H201 L75:1H20 L75 H221 L75:1H22 L75 H231 L75:1H23 L75 H241 L75:1H24 L75 H242 L75:2H24 L75 H261 L75:1H26 L75 H271 L75:1H27 L75 H281 L75:1H28 L75 H291 L75:1H29 L75 H311 L75:1H31 L75 H312 L75:2H31 L75 H321 L75:1H32 L75 H331 L75:1H33 L75 H361 L75:1H36 L75 H371 L75:1H37 L75 H391 L75:1H39 L75 H1A L79:1H L79 H2A L79:2H L79 H161 L79:1H16 L79 H162 L79:2H16 L79 H171 L79:1H17 L79 H172 L79:2H17 L79 H173 L79:3H17 L79 H181 L79:1H18 L79 H182 L79:2H18 L79 H183 L79:3H18 L79 H211 L79:1H21 L79 H212 L79:2H21 L79 H213 L79:3H21 L79 H221 L79:1H22 L79 H222 L79:2H22 L79 H231 L79:1H23 L79 H232 L79:2H23 L79 H233 L79:3H23 L79 H111 L86:1H11 L86 H112 L86:2H11 L86 H331 L86:1H33 L86 H332 L86:2H33 L86 H391 L86:1H39 L86 H392 L86:2H39 L86 H91 L86:1H9 L86 H92 L86:2H9 L86 H31 L86:1H3 L86 H32 L86:2H3 L86 H71 L86:1H7 L86 H72 L86:2H7 L86 H121 L86:1H12 L86 H122 L86:2H12 L86 H131 L86:1H13 L86 H132 L86:2H13 L86 H141 L86:1H14 L86 H142 L86:2H14 L86 H31 L92:1H3 L92 H32 L92:2H3 L92 H141 L92:1H14 L92 H142 L92:2H14 L92 H151 L92:1H15 L92 H152 L92:2H15 L92 H161 L92:1H16 L92 H162 L92:2H16 L92 H261 L92:1H26 L92 H262 L92:2H26 L92 H263 L92:3H26 L92 H11A L98:1H1 L98 H12 L98:2H1 L98 H121 L98:1H12 L98 H122 L98:2H12 L98 H731 LA1:1H73 LA1 H732 LA1:2H73 LA1 H733 LA1:3H73 LA1 H491 LA1:1H49 LA1 H492 LA1:2H49 LA1 H31 LA1:1H3 LA1 H32 LA1:2H3 LA1 H61A LA1:1H6 LA1 H62 LA1:2H6 LA1 H141 LA1:1H14 LA1 H142 LA1:2H14 LA1 H231 LA1:1H23 LA1 H232 LA1:2H23 LA1 H233 LA1:3H23 LA1 H191 LA1:1H19 LA1 H192 LA1:2H19 LA1 H193 LA1:3H19 LA1 H271 LA1:1H27 LA1 H272 LA1:2H27 LA1 H171 LAB:1H17 LAB H172 LAB:2H17 LAB H141 LAB:1H14 LAB H142 LAB:2H14 LAB H121 LAB:1H12 LAB H122 LAB:2H12 LAB H101 LAB:1H10 LAB H102 LAB:2H10 LAB H91 LAB:1H9 LAB H92 LAB:2H9 LAB H201 LAB:1H20 LAB H202 LAB:2H20 LAB H203 LAB:3H20 LAB H51 LAB:1H5 LAB H52 LAB:2H5 LAB H41 LAB:1H4 LAB H42 LAB:2H4 LAB H191 LAB:1H19 LAB H192 LAB:2H19 LAB H193 LAB:3H19 LAB H31 LAC:1H3 LAC H32 LAC:2H3 LAC H33 LAC:3H3 LAC H2A LAD:2H LAD H1 LAD:1H LAD HB2 LAD:2HB LAD HB1 LAD:1HB LAD HG2 LAD:2HG LAD HG1 LAD:1HG LAD HD2 LAD:2HD LAD HD1 LAD:1HD LAD HE2 LAD:2HE LAD HE1 LAD:1HE LAD HZ2 LAD:2HZ LAD HZ1 LAD:1HZ LAD H5'2 LAD:2H5' LAD H5'1 LAD:1H5' LAD H62 LAD:2H6 LAD H61 LAD:1H6 LAD H2O1 LAD:1H2O LAD H3O1 LAD:1H3O LAD H2AO LAD:OH2A LAD H11 LAE:1H1 LAE H41 LAE:1H4 LAE H42 LAE:2H4 LAE H51 LAE:1H5 LAE H52 LAE:2H5 LAE H111 LAE:1H11 LAE H141 LAE:1H14 LAE H142 LAE:2H14 LAE H181 LAE:1H18 LAE H182 LAE:2H18 LAE H191 LAE:1H19 LAE H192 LAE:2H19 LAE H221 LAE:1H22 LAE H222 LAE:2H22 LAE H251 LAE:1H25 LAE H252 LAE:2H25 LAE H281 LAE:1H28 LAE H282 LAE:2H28 LAE H283 LAE:3H28 LAE H5C1 LAF:1H5C LAF H5C2 LAF:2H5C LAF H3C1 LAF:1H3C LAF H3C2 LAF:2H3C LAF H2C1 LAF:1H2C LAF H2C2 LAF:2H2C LAF HA61 LAG:1HA6 LAG HA62 LAG:2HA6 LAG HB61 LAG:1HB6 LAG HB62 LAG:2HB6 LAG HD61 LAG:1HD6 LAG HD62 LAG:2HD6 LAG H61 LAK:1H6 LAK H62 LAK:2H6 LAK H6'1 LAK:1H6' LAK H6'2 LAK:2H6' LAK HO1' LAK:'HO1 LAK HO2' LAK:'HO2 LAK HO3' LAK:'HO3 LAK HO4' LAK:'HO4 LAK HB1 LAL:1HB LAL HB2 LAL:2HB LAL HB3 LAL:3HB LAL HH11 LAL:1HH1 LAL HH12 LAL:2HH1 LAL HH13 LAL:3HH1 LAL HH21 LAL:1HH2 LAL HH22 LAL:2HH2 LAL HH23 LAL:3HH2 LAL H11 LAM:1H1 LAM H21 LAM:1H2 LAM HO21 LAM:1HO2 LAM H31 LAM:1H3 LAM HO31 LAM:1HO3 LAM H41 LAM:1H4 LAM HO41 LAM:1HO4 LAM H51 LAM:1H5 LAM H61 LAM:1H6 LAM H62 LAM:2H6 LAM HO61 LAM:1HO6 LAM H1A1 LAM:1H1A LAM H2A1 LAM:1H2A LAM H3A1 LAM:1H3A LAM H4A1 LAM:1H4A LAM H5A1 LAM:1H5A LAM H6A1 LAM:1H6A LAM H6A2 LAM:2H6A LAM HA21 LAM:1HA2 LAM HA41 LAM:1HA4 LAM HA61 LAM:1HA6 LAM H1B1 LAM:1H1B LAM H2B1 LAM:1H2B LAM H3B1 LAM:1H3B LAM H4B1 LAM:1H4B LAM H5B1 LAM:1H5B LAM H6B1 LAM:1H6B LAM H6B2 LAM:2H6B LAM HB21 LAM:1HB2 LAM HB41 LAM:1HB4 LAM HB61 LAM:1HB6 LAM H2'1 LAM:1H2' LAM H3'1 LAM:1H3' LAM H5'1 LAM:1H5' LAM H6'1 LAM:1H6' LAM H5C1 LAN:1H5C LAN H5C2 LAN:2H5C LAN H4C1 LAN:1H4C LAN H4C2 LAN:2H4C LAN H261 LAN:1H26 LAN H262 LAN:2H26 LAN H263 LAN:3H26 LAN H271 LAN:1H27 LAN H272 LAN:2H27 LAN H273 LAN:3H27 LAN H301 LAN:1H30 LAN H302 LAN:2H30 LAN H311 LAN:1H31 LAN H312 LAN:2H31 LAN H2C1 LAN:1H2C LAN H2C2 LAN:2H2C LAN H2C3 LAN:3H2C LAN H231 LAN:1H23 LAN H232 LAN:2H23 LAN H221 LAN:1H22 LAN H222 LAN:2H22 LAN H111 LAN:1H11 LAN H112 LAN:2H11 LAN H113 LAN:3H11 LAN H8C1 LAN:1H8C LAN H8C2 LAN:2H8C LAN H8C3 LAN:3H8C LAN H9C1 LAN:1H9C LAN H9C2 LAN:2H9C LAN H211 LAN:1H21 LAN H212 LAN:2H21 LAN H201 LAN:1H20 LAN H202 LAN:2H20 LAN H203 LAN:3H20 LAN H141 LAN:1H14 LAN H142 LAN:2H14 LAN H151 LAN:1H15 LAN H152 LAN:2H15 LAN H191 LAN:1H19 LAN H192 LAN:2H19 LAN H193 LAN:3H19 LAN H181 LAN:1H18 LAN H182 LAN:2H18 LAN H183 LAN:3H18 LAN H21 LAP:1H2 LAP H22 LAP:2H2 LAP H31 LAP:1H3 LAP H32 LAP:2H3 LAP H41 LAP:1H4 LAP H42 LAP:2H4 LAP H51 LAP:1H5 LAP H52 LAP:2H5 LAP H61 LAP:1H6 LAP H62 LAP:2H6 LAP H71 LAP:1H7 LAP H72 LAP:2H7 LAP H81 LAP:1H8 LAP H82 LAP:2H8 LAP H91 LAP:1H9 LAP H92 LAP:2H9 LAP H101 LAP:1H10 LAP H102 LAP:2H10 LAP H111 LAP:1H11 LAP H112 LAP:2H11 LAP H121 LAP:1H12 LAP H122 LAP:2H12 LAP H123 LAP:3H12 LAP H131 LAP:1H13 LAP H132 LAP:2H13 LAP H151 LAP:1H15 LAP H152 LAP:2H15 LAP H161 LAP:1H16 LAP H162 LAP:2H16 LAP H171 LAP:1H17 LAP H172 LAP:2H17 LAP H181 LAP:1H18 LAP H182 LAP:2H18 LAP H183 LAP:3H18 LAP H191 LAP:1H19 LAP H192 LAP:2H19 LAP H193 LAP:3H19 LAP H201 LAP:1H20 LAP H202 LAP:2H20 LAP H203 LAP:3H20 LAP H111 LAQ:1H11 LAQ H112 LAQ:2H11 LAQ H121 LAQ:1H12 LAQ H122 LAQ:2H12 LAQ H131 LAQ:1H13 LAQ H132 LAQ:2H13 LAQ H141 LAQ:1H14 LAQ H142 LAQ:2H14 LAQ H171 LAQ:1H17 LAQ H172 LAQ:2H17 LAQ H161 LAQ:1H16 LAQ H162 LAQ:2H16 LAQ H5'1 LAQ:1H5* LAQ H5'2 LAQ:2H5* LAQ H4' LAQ: H4* LAQ H3' LAQ: H3* LAQ HO3' LAQ:HO3* LAQ H2' LAQ: H2* LAQ HO2' LAQ:HO2* LAQ H1' LAQ: H1* LAQ HN61 LAQ:1HN6 LAQ HN62 LAQ:2HN6 LAQ H21 LAR:1H2 LAR H41 LAR:1H4 LAR H42 LAR:2H4 LAR H51 LAR:1H5 LAR H52 LAR:2H5 LAR H61 LAR:1H6 LAR H71 LAR:1H7 LAR H81 LAR:1H8 LAR H91 LAR:1H9 LAR H101 LAR:1H10 LAR H111 LAR:1H11 LAR H112 LAR:2H11 LAR H121 LAR:1H12 LAR H122 LAR:2H12 LAR H131 LAR:1H13 LAR H141 LAR:1H14 LAR H142 LAR:2H14 LAR H151 LAR:1H15 LAR H161 LAR:1H16 LAR H162 LAR:2H16 LAR H181 LAR:1H18 LAR H191 LAR:1H19 LAR H192 LAR:2H19 LAR H211 LAR:1H21 LAR H212 LAR:2H21 LAR H213 LAR:3H21 LAR H221 LAR:1H22 LAR H222 LAR:2H22 LAR H223 LAR:3H22 LAR H61 LAT:1H6 LAT H62 LAT:2H6 LAT H6'1 LAT:1H6' LAT H6'2 LAT:2H6' LAT HO1' LAT:'HO1 LAT HO2' LAT:'HO2 LAT HO3' LAT:'HO3 LAT HO6' LAT:'HO6 LAT H21 LAU:1H2 LAU H22 LAU:2H2 LAU H31 LAU:1H3 LAU H32 LAU:2H3 LAU H41 LAU:1H4 LAU H42 LAU:2H4 LAU H51 LAU:1H5 LAU H52 LAU:2H5 LAU H61 LAU:1H6 LAU H62 LAU:2H6 LAU H71 LAU:1H7 LAU H72 LAU:2H7 LAU H81 LAU:1H8 LAU H82 LAU:2H8 LAU H91 LAU:1H9 LAU H92 LAU:2H9 LAU H101 LAU:1H10 LAU H102 LAU:2H10 LAU H111 LAU:1H11 LAU H112 LAU:2H11 LAU H121 LAU:1H12 LAU H122 LAU:2H12 LAU H123 LAU:3H12 LAU H21 LAX:1H2 LAX H22 LAX:2H2 LAX H31 LAX:1H3 LAX H32 LAX:2H3 LAX H41 LAX:1H4 LAX H42 LAX:2H4 LAX H51 LAX:1H5 LAX H52 LAX:2H5 LAX H61 LAX:1H6 LAX H62 LAX:2H6 LAX H71 LAX:1H7 LAX H72 LAX:2H7 LAX H101 LAX:1H10 LAX H102 LAX:2H10 LAX H131 LAX:1H13 LAX H132 LAX:2H13 LAX H161 LAX:1H16 LAX H162 LAX:2H16 LAX H171 LAX:1H17 LAX H172 LAX:2H17 LAX H181 LAX:1H18 LAX H182 LAX:2H18 LAX H191 LAX:1H19 LAX H192 LAX:2H19 LAX H201 LAX:1H20 LAX H202 LAX:2H20 LAX H203 LAX:3H20 LAX H9C1 LAZ:1H9C LAZ H9C2 LAZ:2H9C LAZ H101 LAZ:1H10 LAZ H102 LAZ:2H10 LAZ H6C1 LBT:1H6C LBT H6C2 LBT:2H6C LBT H6'1 LBT:1H6' LBT H6'2 LBT:2H6' LBT HBC1 LBV:1HBC LBV HBC2 LBV:2HBC LBV HBC3 LBV:3HBC LBV HAC1 LBV:1HAC LBV HMC1 LBV:1HMC LBV HMC2 LBV:2HMC LBV HMC3 LBV:3HMC LBV HHD1 LBV:1HHD LBV HAD1 LBV:1HAD LBV HAD2 LBV:2HAD LBV HBD1 LBV:1HBD LBV HBD2 LBV:2HBD LBV HMD1 LBV:1HMD LBV HMD2 LBV:2HMD LBV HMD3 LBV:3HMD LBV HHA1 LBV:1HHA LBV HAA1 LBV:1HAA LBV HAA2 LBV:2HAA LBV HBA1 LBV:1HBA LBV HBA2 LBV:2HBA LBV HMA1 LBV:1HMA LBV HMA2 LBV:2HMA LBV HMA3 LBV:3HMA LBV HHB1 LBV:1HHB LBV HMB1 LBV:1HMB LBV HMB2 LBV:2HMB LBV HMB3 LBV:3HMB LBV HBB1 LBV:1HBB LBV HBB2 LBV:2HBB LBV H11 LBY:1H1 LBY H12 LBY:2H1 LBY H13 LBY:3H1 LBY H21 LBY:1H2 LBY H22 LBY:2H2 LBY H23 LBY:3H2 LBY H31 LBY:1H3 LBY H32 LBY:2H3 LBY H33 LBY:3H3 LBY HZ LBY: HNZ LBY HE3 LBY:1HE LBY HE2 LBY:2HE LBY HD3 LBY:1HD LBY HD2 LBY:2HD LBY HG3 LBY:1HG LBY HG2 LBY:2HG LBY HB3 LBY:1HB LBY HB2 LBY:2HB LBY H LBY:1HN LBY H2 LBY:2HN LBY HOP3 LC:3HOP LC HOP2 LC:2HOP LC H5' LC:1H5* LC H5'' LC:2H5* LC H4' LC: H4* LC H3' LC: H3* LC HO3' LC:H3T LC H2' LC: H2* LC HO2' LC:2HO* LC H1' LC: H1* LC H41 LC:1H4 LC H42 LC:2H4 LC H5'1 LCA:1H5* LCA H5'2 LCA:2H5* LCA H3' LCA: H3* LCA H6'1 LCA:1H6* LCA H6'2 LCA:2H6* LCA H2'1 LCA:1H2* LCA H61 LCA:1H6 LCA H62 LCA:2H6 LCA H1' LCA: H1* LCA H5'1 LCC:1H5* LCC H5'2 LCC:2H5* LCC H1' LCC: H1* LCC H5M1 LCC:1H5M LCC H5M2 LCC:2H5M LCC H5M3 LCC:3H5M LCC H41 LCC:1H4 LCC H42 LCC:2H4 LCC H3' LCC: H3* LCC H2'1 LCC:1H2* LCC H6'1 LCC:1H6* LCC H6'2 LCC:2H6* LCC H21 LCF:1H2 LCF H22A LCF:2H2 LCF H41 LCF:1H4 LCF H42 LCF:2H4 LCF H81 LCF:1H8 LCF H82 LCF:2H8 LCF H101 LCF:1H10 LCF H102 LCF:2H10 LCF H103 LCF:3H10 LCF H111 LCF:1H11 LCF H112 LCF:2H11 LCF H113 LCF:3H11 LCF H5' LCG:1H5* LCG H5'' LCG:2H5* LCG H3' LCG: H3* LCG H6'1 LCG:1H6* LCG H6'2 LCG:2H6* LCG H2' LCG:1H2* LCG H1' LCG: H1* LCG HOP2 LCG:2HOP LCG H21 LCG:1H2 LCG H22 LCG:2H2 LCG HO3' LCG:H3T LCG HOP3 LCG:3HOP LCG H5'1 LCH:1H5* LCH H5'2 LCH:2H5* LCH H1' LCH: H1* LCH H5M1 LCH:1H5M LCH H5M2 LCH:2H5M LCH H5M3 LCH:3H5M LCH H41 LCH:1H4 LCH H42 LCH:2H4 LCH H3' LCH: H3* LCH H2'1 LCH:1H2* LCH H6'1 LCH:1H6* LCH H6'2 LCH:2H6* LCH H2A1 LCS:1H2A LCS H2A2 LCS:2H2A LCS H2A3 LCS:3H2A LCS H4A1 LCS:1H4A LCS H4A2 LCS:2H4A LCS H5A1 LCS:1H5A LCS H5A2 LCS:2H5A LCS HOP2 LCS:2HOP LCS HOP3 LCS:3HOP LCS HB1 LCS:1HB LCS HB2 LCS:2HB LCS H LCX:1HN LCX H2 LCX:2HN LCX HC1 LCX:1H LCX HC2 LCX:2H LCX HB2 LCX:1HB LCX HB3 LCX:2HB LCX HG2 LCX:1HG LCX HG3 LCX:2HG LCX HD2 LCX:1HD LCX HD3 LCX:2HD LCX HE2 LCX:1HE LCX HE3 LCX:2HE LCX HZ LCX: HNZ LCX HM11 LDA:1HM1 LDA HM12 LDA:2HM1 LDA HM13 LDA:3HM1 LDA HM21 LDA:1HM2 LDA HM22 LDA:2HM2 LDA HM23 LDA:3HM2 LDA H11 LDA:1H1 LDA H12 LDA:2H1 LDA H21 LDA:1H2 LDA H22 LDA:2H2 LDA H31 LDA:1H3 LDA H32 LDA:2H3 LDA H41 LDA:1H4 LDA H42 LDA:2H4 LDA H51 LDA:1H5 LDA H52 LDA:2H5 LDA H61 LDA:1H6 LDA H62 LDA:2H6 LDA H71 LDA:1H7 LDA H72 LDA:2H7 LDA H81 LDA:1H8 LDA H82 LDA:2H8 LDA H91 LDA:1H9 LDA H92 LDA:2H9 LDA H101 LDA:1H10 LDA H102 LDA:2H10 LDA H111 LDA:1H11 LDA H112 LDA:2H11 LDA H121 LDA:1H12 LDA H122 LDA:2H12 LDA H123 LDA:3H12 LDA HN41 LDC:1HN4 LDC HN42 LDC:2HN4 LDC H91 LDC:1H9 LDC H92 LDC:2H9 LDC H121 LDC:1H12 LDC H122 LDC:2H12 LDC HN1 LDH:1HN LDH HN2 LDH:2HN LDH HB1 LDH:1HB LDH HB2 LDH:2HB LDH HG1 LDH:1HG LDH HG2 LDH:2HG LDH HD1 LDH:1HD LDH HD2 LDH:2HD LDH HE1 LDH:1HE LDH HE2 LDH:2HE LDH HH1 LDH:1HH LDH HH2 LDH:2HH LDH H11 LDH:1H1 LDH H12 LDH:2H1 LDH H13 LDH:3H1 LDH H1C1 LDM:1H1C LDM H1C2 LDM:2H1C LDM H3C1 LDM:1H3C LDM H3C2 LDM:2H3C LDM H5C1 LDM:1H5C LDM H5C2 LDM:2H5C LDM H7C1 LDM:1H7C LDM H7C2 LDM:2H7C LDM H8C1 LDM:1H8C LDM H8C2 LDM:2H8C LDM H101 LDM:1H10 LDM H102 LDM:2H10 LDM H111 LDM:1H11 LDM H112 LDM:2H11 LDM H121 LDM:1H12 LDM H122 LDM:2H12 LDM HM11 LDM:1HM1 LDM HM12 LDM:2HM1 LDM HM13 LDM:3HM1 LDM HM21 LDM:1HM2 LDM HM22 LDM:2HM2 LDM HM23 LDM:3HM2 LDM H2C1 LDM:1H2C LDM H2C2 LDM:2H2C LDM H9C1 LDM:1H9C LDM H9C2 LDM:2H9C LDM H141 LDM:1H14 LDM H142 LDM:2H14 LDM H151 LDM:1H15 LDM H152 LDM:2H15 LDM H153 LDM:3H15 LDM H6C1 LDM:1H6C LDM H6C2 LDM:2H6C LDM H131 LDM:1H13 LDM H132 LDM:2H13 LDM HN1 LDO:1HN LDO HN2 LDO:2HN LDO HA1 LDO:1HA LDO HB1 LDO:1HB LDO HB2 LDO:2HB LDO HG1 LDO:1HG LDO HG2 LDO:2HG LDO HD1 LDO:1HD LDO HD2 LDO:2HD LDO HE1 LDO:1HE LDO HE2 LDO:2HE LDO H71 LDP:1H7 LDP H72 LDP:2H7 LDP H81 LDP:1H8 LDP H82 LDP:2H8 LDP HN11 LDP:1HN1 LDP HN12 LDP:2HN1 LDP H131 LDT:1H13 LDT H132 LDT:2H13 LDT H201 LDT:1H20 LDT H202 LDT:2H20 LDT H31 LEA:1H3 LEA H32 LEA:2H3 LEA H41 LEA:1H4 LEA H42 LEA:2H4 LEA H51 LEA:1H5 LEA H52 LEA:2H5 LEA H61 LEA:1H6 LEA H62 LEA:2H6 LEA H63 LEA:3H6 LEA HN1 LED:1HN LED HN2 LED:2HN LED HBC1 LED:1HBC LED HBC2 LED:2HBC LED HD11 LED:1HD1 LED HD12 LED:2HD1 LED HD13 LED:3HD1 LED HD12 LEF:1HD1 LEF HD13 LEF:2HD1 LEF HD21 LEF:1HD2 LEF HD22 LEF:2HD2 LEF HD23 LEF:3HD2 LEF HB3 LEF:1HBC LEF HB2 LEF:2HBC LEF H LEF:1HN LEF H2 LEF:2HN LEF H271 LEG:1H27 LEG H272 LEG:2H27 LEG H273 LEG:3H27 LEG H241 LEG:1H24 LEG H242 LEG:2H24 LEG H211 LEG:1H21 LEG H212 LEG:2H21 LEG H181 LEG:1H18 LEG H182 LEG:2H18 LEG H151 LEG:1H15 LEG H152 LEG:2H15 LEG H141 LEG:1H14 LEG H142 LEG:2H14 LEG H331 LEG:1H33 LEG H332 LEG:2H33 LEG HD21 LEN:1HD2 LEN HD22 LEN:2HD2 LEN HD23 LEN:3HD2 LEN HD11 LEN:1HD1 LEN HD12 LEN:2HD1 LEN HD13 LEN:3HD1 LEN HB1 LEN:1HB LEN HB2 LEN:2HB LEN HA1 LEN:1HA LEN HA2 LEN:2HA LEN HN1 LEN:1HN LEN HN2 LEN:2HN LEN H21 LEO:1H2 LEO H22 LEO:2H2 LEO H41 LEO:1H4 LEO H42 LEO:2H4 LEO H51 LEO:1H5 LEO H52 LEO:2H5 LEO H81 LEO:1H8 LEO H82 LEO:2H8 LEO H83 LEO:3H8 LEO H211 LEO:1H21 LEO H212 LEO:2H21 LEO H221 LEO:1H22 LEO H222 LEO:2H22 LEO H223 LEO:3H22 LEO H101 LET:1H10 LET H102 LET:2H10 LET H9C1 LET:1H9C LET H9C2 LET:2H9C LET H7C1 LET:1H7C LET H7C2 LET:2H7C LET H5C1 LET:1H5C LET H5C2 LET:2H5C LET H3C1 LET:1H3C LET H3C2 LET:2H3C LET H2C1 LET:1H2C LET H2C2 LET:2H2C LET HEC1 LET:1HEC LET HEC2 LET:2HEC LET HDC1 LET:1HDC LET HDC2 LET:2HDC LET HGC1 LET:1HGC LET HGC2 LET:2HGC LET HBC1 LET:1HBC LET HBC2 LET:2HBC LET HN1 LET:1HN LET HN2 LET:2HN LET H2 LEU: HN2 LEU HB2 LEU:1HB LEU HB3 LEU:2HB LEU HD11 LEU:1HD1 LEU HD12 LEU:2HD1 LEU HD13 LEU:3HD1 LEU HD21 LEU:1HD2 LEU HD22 LEU:2HD2 LEU HD23 LEU:3HD2 LEU H11 LFA:1H1 LFA H12 LFA:2H1 LFA H13 LFA:3H1 LFA H21 LFA:1H2 LFA H22 LFA:2H2 LFA H31 LFA:1H3 LFA H32 LFA:2H3 LFA H41 LFA:1H4 LFA H42 LFA:2H4 LFA H51 LFA:1H5 LFA H52 LFA:2H5 LFA H61 LFA:1H6 LFA H62 LFA:2H6 LFA H71 LFA:1H7 LFA H72 LFA:2H7 LFA H81 LFA:1H8 LFA H82 LFA:2H8 LFA H91 LFA:1H9 LFA H92 LFA:2H9 LFA H101 LFA:1H10 LFA H102 LFA:2H10 LFA H111 LFA:1H11 LFA H112 LFA:2H11 LFA H121 LFA:1H12 LFA H122 LFA:2H12 LFA H131 LFA:1H13 LFA H132 LFA:2H13 LFA H141 LFA:1H14 LFA H142 LFA:2H14 LFA H151 LFA:1H15 LFA H152 LFA:2H15 LFA H161 LFA:1H16 LFA H162 LFA:2H16 LFA H171 LFA:1H17 LFA H172 LFA:2H17 LFA H181 LFA:1H18 LFA H182 LFA:2H18 LFA H191 LFA:1H19 LFA H192 LFA:2H19 LFA H201 LFA:1H20 LFA H202 LFA:2H20 LFA H203 LFA:3H20 LFA H61 LFC:1H6 LFC H62 LFC:2H6 LFC H63 LFC:3H6 LFC H7M1 LFN:1H7M LFN H7M2 LFN:2H7M LFN H7M3 LFN:3H7M LFN H8M1 LFN:1H8M LFN H8M2 LFN:2H8M LFN H8M3 LFN:3H8M LFN H1'1 LFN:1H1* LFN H1'2 LFN:2H1* LFN H1'3 LFN:3H1* LFN H1C1 LFR:1H1C LFR H1C2 LFR:2H1C LFR H6C1 LFR:1H6C LFR H6C2 LFR:2H6C LFR HOP3 LG:3HOP LG HOP2 LG:2HOP LG H5' LG:1H5* LG H5'' LG:2H5* LG H4' LG: H4* LG H3' LG: H3* LG HO3' LG:H3T LG H2' LG: H2* LG HO2' LG:2HO* LG H1' LG: H1* LG H21 LG:1H2 LG H22 LG:2H2 LG HC2 LG2:2HC LG2 HC5 LG2:5HC LG2 HC81 LG2:1HC8 LG2 HC82 LG2:2HC8 LG2 HC91 LG2:1HC9 LG2 HC92 LG2:2HC9 LG2 HC41 LG2:1HC4 LG2 HC61 LG2:1HC6 LG2 HC71 LG2:1HC7 LG2 HO02 LG2:2HO0 LG2 H211 LG2:1H21 LG2 H212 LG2:2H21 LG2 H221 LG2:1H22 LG2 H222 LG2:2H22 LG2 H231 LG2:1H23 LG2 H232 LG2:2H23 LG2 H233 LG2:3H23 LG2 H241 LG2:1H24 LG2 H242 LG2:2H24 LG2 H243 LG2:3H24 LG2 H251 LG2:1H25 LG2 H252 LG2:2H25 LG2 H253 LG2:3H25 LG2 H261 LG2:1H26 LG2 H262 LG2:2H26 LG2 H263 LG2:3H26 LG2 H271 LG2:1H27 LG2 H272 LG2:2H27 LG2 H273 LG2:3H27 LG2 HN71 LG3:1HN7 LG3 HN72 LG3:2HN7 LG3 HN81 LG3:1HN8 LG3 HN82 LG3:2HN8 LG3 HN71 LG4:1HN7 LG4 HN72 LG4:2HN7 LG4 H81 LG4:1H8 LG4 H82 LG4:2H8 LG4 H83 LG4:3H8 LG4 H21 LG5:1H2 LG5 H22 LG5:2H2 LG5 H71 LG5:1H7 LG5 H72 LG5:2H7 LG5 H73 LG5:3H7 LG5 HN81 LG5:1HN8 LG5 HN82 LG5:2HN8 LG5 H61 LG6:1H6 LG6 H62 LG6:2H6 LG6 HOP2 LG6:2HOP LG6 HOP3 LG6:3HOP LG6 H31 LG7:1H3 LG7 H32 LG7:2H3 LG7 H41 LG7:1H4 LG7 H42 LG7:2H4 LG7 HBD1 LG8:1HBD LG8 HBD2 LG8:2HBD LG8 HBB1 LG8:1HBB LG8 HBB2 LG8:2HBB LG8 H6C1 LG8:1H6C LG8 H6C2 LG8:2H6C LG8 HBA1 LG8:1HBA LG8 HBA2 LG8:2HBA LG8 HBA3 LG8:3HBA LG8 HBG1 LG8:1HBG LG8 HBG2 LG8:2HBG LG8 HBJ1 LG8:1HBJ LG8 HBJ2 LG8:2HBJ LG8 HBJ3 LG8:3HBJ LG8 HBI1 LG8:1HBI LG8 HBI2 LG8:2HBI LG8 HBI3 LG8:3HBI LG8 HC61 LGC:1HC6 LGC HC62 LGC:2HC6 LGC H121 LGD:1H12 LGD H122 LGD:2H12 LGD H141 LGD:1H14 LGD H142 LGD:2H14 LGD H41 LGF:1H4 LGF H42 LGF:2H4 LGF H21 LGF:1H2 LGF H22 LGF:2H2 LGF H11 LGF:1H1 LGF H12A LGF:2H1 LGF H351 LGF:1H35 LGF H352 LGF:2H35 LGF H353 LGF:3H35 LGF H361 LGF:1H36 LGF H362 LGF:2H36 LGF H381 LGF:1H38 LGF H382 LGF:2H38 LGF H391 LGF:1H39 LGF H392 LGF:2H39 LGF H171 LGG:1H17 LGG H172 LGG:2H17 LGG H201 LGG:1H20 LGG H202 LGG:2H20 LGG H203 LGG:3H20 LGG H211 LGG:1H21 LGG H212 LGG:2H21 LGG H213 LGG:3H21 LGG H281 LGG:1H28 LGG H282 LGG:2H28 LGG H121 LGG:1H12 LGG H122 LGG:2H12 LGG H31 LGG:1H3 LGG H32 LGG:2H3 LGG H21 LGG:1H2 LGG H22A LGG:2H2 LGG H341 LGG:1H34 LGG H342 LGG:2H34 LGG H343 LGG:3H34 LGG H161 LGG:1H16 LGG H162 LGG:2H16 LGG HN41 LGG:1HN4 LGG HN42 LGG:2HN4 LGG H231 LGG:1H23 LGG H232 LGG:2H23 LGG H301 LGG:1H30 LGG H302 LGG:2H30 LGG H311 LGG:1H31 LGG H312 LGG:2H31 LGG H271 LGG:1H27 LGG H272 LGG:2H27 LGG HN71 LGG:1HN7 LGG HN72 LGG:2HN7 LGG H271 LGI:1H27 LGI H272 LGI:2H27 LGI H273 LGI:3H27 LGI H241 LGI:1H24 LGI H242 LGI:2H24 LGI H211 LGI:1H21 LGI H212 LGI:2H21 LGI H181 LGI:1H18 LGI H182 LGI:2H18 LGI H151 LGI:1H15 LGI H152 LGI:2H15 LGI H141 LGI:1H14 LGI H142 LGI:2H14 LGI H121 LGI:1H12 LGI H122 LGI:2H12 LGI H331 LGI:1H33 LGI H332 LGI:2H33 LGI H333 LGI:3H33 LGI HOP2 LGP:2HOP LGP HOP3 LGP:3HOP LGP H5' LGP:1H5* LGP H5'' LGP:2H5* LGP H4' LGP: H4* LGP H3'1 LGP:1H3* LGP H3'2 LGP:2H3* LGP HO3' LGP:*HO3 LGP H1'1 LGP:1H1* LGP H1'2 LGP:2H1* LGP HN21 LGP:1HN2 LGP HN22 LGP:2HN2 LGP H211 LHA:1H21 LHA H212 LHA:2H21 LHA H611 LHA:1H61 LHA H612 LHA:2H61 LHA H221 LHA:1H22 LHA H222 LHA:2H22 LHA H321 LHA:1H32 LHA H322 LHA:2H32 LHA H531 LHA:1H53 LHA H532 LHA:2H53 LHA H241 LHA:1H24 LHA H242 LHA:2H24 LHA H641 LHA:1H64 LHA H642 LHA:2H64 LHA HN41 LHA:1HN4 LHA HN42 LHA:2HN4 LHA H151 LHA:1H15 LHA H152 LHA:2H15 LHA H251 LHA:1H25 LHA H252 LHA:2H25 LHA H351 LHA:1H35 LHA H352 LHA:2H35 LHA H451 LHA:1H45 LHA H452 LHA:2H45 LHA H371 LHA:1H37 LHA H372 LHA:2H37 LHA H471 LHA:1H47 LHA H472 LHA:2H47 LHA HN71 LHA:1HN7 LHA HN72 LHA:2HN7 LHA HC11 LHG:1HC1 LHG HC12 LHG:2HC1 LHG HC31 LHG:1HC3 LHG HC32 LHG:2HC3 LHG HC41 LHG:1HC4 LHG HC42 LHG:2HC4 LHG HC61 LHG:1HC6 LHG HC62 LHG:2HC6 LHG HC81 LHG:1HC8 LHG HC82 LHG:2HC8 LHG HC91 LHG:1HC9 LHG HC92 LHG:2HC9 LHG H101 LHG:1H10 LHG H102 LHG:2H10 LHG H241 LHG:1H24 LHG H242 LHG:2H24 LHG H111 LHG:1H11 LHG H112 LHG:2H11 LHG H121 LHG:1H12 LHG H122 LHG:2H12 LHG H131 LHG:1H13 LHG H132 LHG:2H13 LHG H141 LHG:1H14 LHG H142 LHG:2H14 LHG H151 LHG:1H15 LHG H152 LHG:2H15 LHG H161 LHG:1H16 LHG H162 LHG:2H16 LHG H171 LHG:1H17 LHG H172 LHG:2H17 LHG H181 LHG:1H18 LHG H182 LHG:2H18 LHG H191 LHG:1H19 LHG H192 LHG:2H19 LHG H201 LHG:1H20 LHG H202 LHG:2H20 LHG H211 LHG:1H21 LHG H212 LHG:2H21 LHG H221 LHG:1H22 LHG H222 LHG:2H22 LHG H223 LHG:3H22 LHG H251 LHG:1H25 LHG H252 LHG:2H25 LHG H261 LHG:1H26 LHG H262 LHG:2H26 LHG H271 LHG:1H27 LHG H272 LHG:2H27 LHG H281 LHG:1H28 LHG H282 LHG:2H28 LHG H291 LHG:1H29 LHG H292 LHG:2H29 LHG H301 LHG:1H30 LHG H302 LHG:2H30 LHG H311 LHG:1H31 LHG H312 LHG:2H31 LHG H321 LHG:1H32 LHG H322 LHG:2H32 LHG H331 LHG:1H33 LHG H332 LHG:2H33 LHG H341 LHG:1H34 LHG H342 LHG:2H34 LHG H351 LHG:1H35 LHG H352 LHG:2H35 LHG H361 LHG:1H36 LHG H362 LHG:2H36 LHG H371 LHG:1H37 LHG H372 LHG:2H37 LHG H381 LHG:1H38 LHG H382 LHG:2H38 LHG H383 LHG:3H38 LHG HOP3 LHU:3HOP LHU HOP2 LHU:2HOP LHU H5' LHU:1H5* LHU H5'' LHU:2H5* LHU H4' LHU: H4* LHU H3' LHU: H3* LHU HO3' LHU:H3T LHU H2' LHU: H2* LHU HO2' LHU:2HO* LHU H1' LHU: H1* LHU HB1 LHY:1HB LHY HB2 LHY:2HB LHY H11 LI0:1H1 LI0 H12A LI0:2H1 LI0 H31A LI0:1H3 LI0 H32A LI0:2H3 LI0 H41 LI0:1H4 LI0 H42 LI0:2H4 LI0 H51 LI0:1H5 LI0 H52 LI0:2H5 LI0 H181 LI0:1H18 LI0 H182 LI0:2H18 LI0 H251 LI0:1H25 LI0 H252 LI0:2H25 LI0 H253 LI0:3H25 LI0 H261 LI0:1H26 LI0 H262 LI0:2H26 LI0 H263 LI0:3H26 LI0 H291 LI0:1H29 LI0 H292 LI0:2H29 LI0 H293 LI0:3H29 LI0 H301 LI0:1H30 LI0 H302 LI0:2H30 LI0 H11 LI1:1H1 LI1 H12 LI1:2H1 LI1 H31 LI1:1H3 LI1 H32 LI1:2H3 LI1 H411 LI1:1H41 LI1 H412 LI1:2H41 LI1 H421 LI1:1H42 LI1 H422 LI1:2H42 LI1 H441 LI1:1H44 LI1 H442 LI1:2H44 LI1 H443 LI1:3H44 LI1 H451 LI1:1H45 LI1 H452 LI1:2H45 LI1 H461 LI1:1H46 LI1 H462 LI1:2H46 LI1 H471 LI1:1H47 LI1 H472 LI1:2H47 LI1 H491 LI1:1H49 LI1 H492 LI1:2H49 LI1 H493 LI1:3H49 LI1 H501 LI1:1H50 LI1 H502 LI1:2H50 LI1 H511 LI1:1H51 LI1 H512 LI1:2H51 LI1 H521 LI1:1H52 LI1 H522 LI1:2H52 LI1 H531 LI1:1H53 LI1 H532 LI1:2H53 LI1 H551 LI1:1H55 LI1 H552 LI1:2H55 LI1 H561 LI1:1H56 LI1 H562 LI1:2H56 LI1 H571 LI1:1H57 LI1 H572 LI1:2H57 LI1 H591 LI1:1H59 LI1 H592 LI1:2H59 LI1 H593 LI1:3H59 LI1 H601 LI1:1H60 LI1 H602 LI1:2H60 LI1 H603 LI1:3H60 LI1 H111 LI1:1H11 LI1 H112 LI1:2H11 LI1 H121 LI1:1H12 LI1 H122 LI1:2H12 LI1 H141 LI1:1H14 LI1 H142 LI1:2H14 LI1 H143 LI1:3H14 LI1 H151 LI1:1H15 LI1 H152 LI1:2H15 LI1 H161 LI1:1H16 LI1 H162 LI1:2H16 LI1 H171 LI1:1H17 LI1 H172 LI1:2H17 LI1 H191 LI1:1H19 LI1 H192 LI1:2H19 LI1 H193 LI1:3H19 LI1 H201 LI1:1H20 LI1 H202 LI1:2H20 LI1 H211 LI1:1H21 LI1 H212 LI1:2H21 LI1 H221 LI1:1H22 LI1 H222 LI1:2H22 LI1 H241 LI1:1H24 LI1 H242 LI1:2H24 LI1 H243 LI1:3H24 LI1 H251 LI1:1H25 LI1 H252 LI1:2H25 LI1 H261 LI1:1H26 LI1 H262 LI1:2H26 LI1 H271 LI1:1H27 LI1 H272 LI1:2H27 LI1 H291 LI1:1H29 LI1 H292 LI1:2H29 LI1 H293 LI1:3H29 LI1 H301 LI1:1H30 LI1 H302 LI1:2H30 LI1 H303 LI1:3H30 LI1 H191 LI2:1H19 LI2 H192 LI2:2H19 LI2 H201 LI2:1H20 LI2 H202 LI2:2H20 LI2 H301 LI2:1H30 LI2 H302 LI2:2H30 LI2 H311 LI2:1H31 LI2 H312 LI2:2H31 LI2 H331 LI2:1H33 LI2 H332 LI2:2H33 LI2 H341 LI2:1H34 LI2 H342 LI2:2H34 LI2 H221 LI3:1H22 LI3 H222 LI3:2H22 LI3 H231 LI3:1H23 LI3 H232 LI3:2H23 LI3 H251 LI3:1H25 LI3 H252 LI3:2H25 LI3 H261 LI3:1H26 LI3 H262 LI3:2H26 LI3 H121 LI4:1H12 LI4 H122 LI4:2H12 LI4 H9C1 LI4:1H9C LI4 H9C2 LI4:2H9C LI4 H11 LI5:1H1 LI5 H12 LI5:2H1 LI5 H31 LI5:1H3 LI5 H32 LI5:2H3 LI5 H311 LI5:1H31 LI5 H312 LI5:2H31 LI5 H321 LI5:1H32 LI5 H322 LI5:2H32 LI5 H323 LI5:3H32 LI5 H111 LI6:1H11 LI6 H112 LI6:2H11 LI6 H113 LI6:3H11 LI6 H211 LI8:1H21 LI8 H212 LI8:2H21 LI8 H221 LI8:1H22 LI8 H222 LI8:2H22 LI8 H231 LI8:1H23 LI8 H232 LI8:2H23 LI8 H241 LI8:1H24 LI8 H242 LI8:2H24 LI8 H271 LI8:1H27 LI8 H272 LI8:2H27 LI8 H281 LI8:1H28 LI8 H282 LI8:2H28 LI8 H331 LI8:1H33 LI8 H332 LI8:2H33 LI8 H351 LI8:1H35 LI8 H352 LI8:2H35 LI8 H353 LI8:3H35 LI8 H361 LI8:1H36 LI8 H362 LI8:2H36 LI8 H363 LI8:3H36 LI8 H391 LI8:1H39 LI8 H392 LI8:2H39 LI8 H121 LI9:1H12 LI9 H122 LI9:2H12 LI9 H123 LI9:3H12 LI9 H181 LI9:1H18 LI9 H182 LI9:2H18 LI9 H191 LI9:1H19 LI9 H192 LI9:2H19 LI9 H201 LI9:1H20 LI9 H202 LI9:2H20 LI9 H211 LI9:1H21 LI9 H212 LI9:2H21 LI9 H311 LI9:1H31 LI9 H312 LI9:2H31 LI9 H313 LI9:3H31 LI9 H21 LIA:1H2 LIA H22 LIA:2H2 LIA H31 LIA:1H3 LIA H32 LIA:2H3 LIA H51 LIA:1H5 LIA H52 LIA:2H5 LIA H61 LIA:1H6 LIA H62 LIA:2H6 LIA H231 LIA:1H23 LIA H232 LIA:2H23 LIA H233 LIA:3H23 LIA H261 LIA:1H26 LIA H262 LIA:2H26 LIA H281 LIA:1H28 LIA H282 LIA:2H28 LIA H283 LIA:3H28 LIA H141 LIB:1H14 LIB H142 LIB:2H14 LIB H143 LIB:3H14 LIB H431 LIB:1H43 LIB H432 LIB:2H43 LIB H433 LIB:3H43 LIB H471 LIB:1H47 LIB H472 LIB:2H47 LIB H473 LIB:3H47 LIB H461 LIB:1H46 LIB H462 LIB:2H46 LIB H463 LIB:3H46 LIB H71 LIC:1H7 LIC H72 LIC:2H7 LIC H311 LIC:1H31 LIC H312 LIC:2H31 LIC H313 LIC:3H31 LIC H451 LIC:1H45 LIC H452 LIC:2H45 LIC H453 LIC:3H45 LIC H531 LIC:1H53 LIC H532 LIC:2H53 LIC H533 LIC:3H53 LIC H511 LIC:1H51 LIC H512 LIC:2H51 LIC H513 LIC:3H51 LIC H101 LID:1H10 LID H102 LID:2H10 LID H111 LID:1H11 LID H112 LID:2H11 LID H113 LID:3H11 LID H261 LIE:1H26 LIE H262 LIE:2H26 LIE H263 LIE:3H26 LIE H251 LIE:1H25 LIE H252 LIE:2H25 LIE H253 LIE:3H25 LIE H391 LIF:1H39 LIF H392 LIF:2H39 LIF H393 LIF:3H39 LIF H311 LIF:1H31 LIF H312 LIF:2H31 LIF H171 LIG:1H17 LIG H172 LIG:2H17 LIG H71 LIH:1H7 LIH H5A1 LIH:1H5A LIH H5A2 LIH:2H5A LIH H5A3 LIH:3H5A LIH H6'1 LIH:1H6' LIH H7'1 LIH:1H7' LIH H8'1 LIH:1H8' LIH H91 LIH:1H9 LIH H92 LIH:2H9 LIH H4'1 LIH:1H4' LIH H2'1 LIH:1H2' LIH H3'1 LIH:1H3' LIH H101 LIH:1H10 LIH H41 LIH:1H4 LIH H42 LIH:2H4 LIH H21 LIH:1H2 LIH H22 LIH:2H2 LIH H71 LII:1H7 LII H51 LII:1H5 LII H52 LII:2H5 LII H53 LII:3H5 LII H91 LII:1H9 LII H3'1 LII:1H3' LII H4'1 LII:1H4' LII H6'1 LII:1H6' LII H101 LII:1H10 LII H2A1 LII:1H2A LII H2A2 LII:2H2A LII H2A3 LII:3H2A LII H5'1 LII:1H5' LII H5'2 LII:2H5' LII H5'3 LII:3H5' LII H41 LII:1H4 LII H42 LII:2H4 LII H161 LII:1H16 LII H162 LII:2H16 LII H41 LIJ:1H4 LIJ H42 LIJ:2H4 LIJ H43 LIJ:3H4 LIJ H51 LIJ:1H5 LIJ H52 LIJ:2H5 LIJ H61 LIJ:1H6 LIJ H62 LIJ:2H6 LIJ H221 LIJ:1H22 LIJ H222 LIJ:2H22 LIJ H241 LIJ:1H24 LIJ H242 LIJ:2H24 LIJ H11 LIJ:1H1 LIJ H12 LIJ:2H1 LIJ H13A LIJ:3H1 LIJ H21A LIJ:1H2 LIJ H22 LIJ:2H2 LIJ H31 LIJ:1H3 LIJ H32 LIJ:2H3 LIJ H91 LIJ:1H9 LIJ H92 LIJ:2H9 LIJ H141 LIJ:1H14 LIJ H142 LIJ:2H14 LIJ H311 LIJ:1H31 LIJ H312 LIJ:2H31 LIJ H313 LIJ:3H31 LIJ H441 LIJ:1H44 LIJ H442 LIJ:2H44 LIJ H141 LIK:1H14 LIK H142 LIK:2H14 LIK HC11 LIK:1HC1 LIK HC12 LIK:2HC1 LIK H71 LIK:1H7 LIK H72 LIK:2H7 LIK H11 LIK:1H1 LIK H12 LIK:2H1 LIK HC31 LIK:1HC3 LIK HC32 LIK:2HC3 LIK H31 LIK:1H3 LIK H32 LIK:2H3 LIK H41 LIK:1H4 LIK H42 LIK:2H4 LIK H51 LIK:1H5 LIK H52 LIK:2H5 LIK H61 LIK:1H6 LIK H62 LIK:2H6 LIK H63 LIK:3H6 LIK H2E1 LIL:1H2E LIL H2E2 LIL:2H2E LIL H3E1 LIL:1H3E LIL H4E1 LIL:1H4E LIL H4E2 LIL:2H4E LIL H5E1 LIL:1H5E LIL H5E2 LIL:2H5E LIL H6E1 LIL:1H6E LIL H6E2 LIL:2H6E LIL H7E1 LIL:1H7E LIL H7E2 LIL:2H7E LIL H8E1 LIL:1H8E LIL H8E2 LIL:2H8E LIL H9E1 LIL:1H9E LIL H9E2 LIL:2H9E LIL H0S1 LIL:1H0S LIL H0S2 LIL:2H0S LIL H1S1 LIL:1H1S LIL H1S2 LIL:2H1S LIL H2S1 LIL:1H2S LIL H2S2 LIL:2H2S LIL H3S1 LIL:1H3S LIL H3S2 LIL:2H3S LIL H4S1 LIL:1H4S LIL H4S2 LIL:2H4S LIL H5S1 LIL:1H5S LIL H5S2 LIL:2H5S LIL H5S3 LIL:3H5S LIL H2F1 LIL:1H2F LIL H2F2 LIL:2H2F LIL H3F1 LIL:1H3F LIL H3F2 LIL:2H3F LIL H4F1 LIL:1H4F LIL H4F2 LIL:2H4F LIL H5F1 LIL:1H5F LIL H5F2 LIL:2H5F LIL H6F1 LIL:1H6F LIL H6F2 LIL:2H6F LIL H7F1 LIL:1H7F LIL H7F2 LIL:2H7F LIL H8F1 LIL:1H8F LIL H8F2 LIL:2H8F LIL H9F1 LIL:1H9F LIL H9F2 LIL:2H9F LIL H0T1 LIL:1H0T LIL H0T2 LIL:2H0T LIL H1T1 LIL:1H1T LIL H1T2 LIL:2H1T LIL H2T1 LIL:1H2T LIL H2T2 LIL:2H2T LIL H3T1 LIL:1H3T LIL H3T2 LIL:2H3T LIL H3T3 LIL:3H3T LIL H2J1 LIM:1H2J LIM H2J2 LIM:2H2J LIM H4J1 LIM:1H4J LIM H4J2 LIM:2H4J LIM H5J1 LIM:1H5J LIM H5J2 LIM:2H5J LIM H6J1 LIM:1H6J LIM H6J2 LIM:2H6J LIM H7J1 LIM:1H7J LIM H7J2 LIM:2H7J LIM H8J1 LIM:1H8J LIM H8J2 LIM:2H8J LIM H9J1 LIM:1H9J LIM H9J2 LIM:2H9J LIM H0X1 LIM:1H0X LIM H0X2 LIM:2H0X LIM H1X1 LIM:1H1X LIM H1X2 LIM:2H1X LIM H2X1 LIM:1H2X LIM H2X2 LIM:2H2X LIM H3X1 LIM:1H3X LIM H3X2 LIM:2H3X LIM H4X1 LIM:1H4X LIM H4X2 LIM:2H4X LIM H5X1 LIM:1H5X LIM H5X2 LIM:2H5X LIM H5X3 LIM:3H5X LIM H2I1 LIN:1H2I LIN H2I2 LIN:2H2I LIN H4I1 LIN:1H4I LIN H4I2 LIN:2H4I LIN H4I3 LIN:3H4I LIN H11 LIO:1H1 LIO H12 LIO:2H1 LIO H21 LIO:1H2 LIO H31 LIO:1H3 LIO H32 LIO:2H3 LIO H41 LIO:1H4 LIO H42 LIO:2H4 LIO H51 LIO:1H5 LIO H52 LIO:2H5 LIO H61 LIO:1H6 LIO H62 LIO:2H6 LIO H63 LIO:3H6 LIO H71 LIO:1H7 LIO H72 LIO:2H7 LIO H73 LIO:3H7 LIO H81 LIO:1H8 LIO H82 LIO:2H8 LIO H83 LIO:3H8 LIO H121 LIO:1H12 LIO H122 LIO:2H12 LIO H131 LIO:1H13 LIO H132 LIO:2H13 LIO H141 LIO:1H14 LIO H142 LIO:2H14 LIO H151 LIO:1H15 LIO H152 LIO:2H15 LIO H161 LIO:1H16 LIO H162 LIO:2H16 LIO H171 LIO:1H17 LIO H172 LIO:2H17 LIO H181 LIO:1H18 LIO H182 LIO:2H18 LIO H191 LIO:1H19 LIO H192 LIO:2H19 LIO H201 LIO:1H20 LIO H202 LIO:2H20 LIO H211 LIO:1H21 LIO H212 LIO:2H21 LIO H221 LIO:1H22 LIO H222 LIO:2H22 LIO H231 LIO:1H23 LIO H232 LIO:2H23 LIO H241 LIO:1H24 LIO H242 LIO:2H24 LIO H251 LIO:1H25 LIO H252 LIO:2H25 LIO H253 LIO:3H25 LIO H321 LIO:1H32 LIO H322 LIO:2H32 LIO H331 LIO:1H33 LIO H332 LIO:2H33 LIO H341 LIO:1H34 LIO H342 LIO:2H34 LIO H351 LIO:1H35 LIO H352 LIO:2H35 LIO H361 LIO:1H36 LIO H362 LIO:2H36 LIO H371 LIO:1H37 LIO H372 LIO:2H37 LIO H381 LIO:1H38 LIO H382 LIO:2H38 LIO H391 LIO:1H39 LIO H392 LIO:2H39 LIO H401 LIO:1H40 LIO H402 LIO:2H40 LIO H403 LIO:3H40 LIO HOP1 LIO:1HOP LIO H71 LIQ:1H7 LIQ H72 LIQ:2H7 LIQ H221 LIQ:1H22 LIQ H222 LIQ:2H22 LIQ H241 LIQ:1H24 LIQ H242 LIQ:2H24 LIQ H281 LIQ:1H28 LIQ H282 LIQ:2H28 LIQ H11 LIQ:1H1 LIQ H12 LIQ:2H1 LIQ H1A1 LIQ:1H1A LIQ H1A2 LIQ:2H1A LIQ H1A3 LIQ:3H1A LIQ H21A LIQ:1H2 LIQ H22 LIQ:2H2 LIQ H31A LIQ:1H3 LIQ H32 LIQ:2H3 LIQ H91 LIQ:1H9 LIQ H92 LIQ:2H9 LIQ H141 LIQ:1H14 LIQ H142 LIQ:2H14 LIQ H321 LIQ:1H32 LIQ H322 LIQ:2H32 LIQ H323 LIQ:3H32 LIQ H131 LIR:1H13 LIR H132 LIR:2H13 LIR H151 LIR:1H15 LIR H152 LIR:2H15 LIR H171 LIR:1H17 LIR H172 LIR:2H17 LIR H111 LIR:1H11 LIR H112 LIR:2H11 LIR H113 LIR:3H11 LIR H161 LIR:1H16 LIR H162 LIR:2H16 LIR H181 LIR:1H18 LIR H182 LIR:2H18 LIR H191 LIR:1H19 LIR H192 LIR:2H19 LIR HN1 LIS:1HN LIS HN2 LIS:2HN LIS HBC1 LIS:1HBC LIS HBC2 LIS:2HBC LIS HDC1 LIS:1HDC LIS HDC2 LIS:2HDC LIS H101 LIT:1H10 LIT H102 LIT:2H10 LIT H11A LIU:1H1 LIU H12 LIU:2H1 LIU H31A LIU:1H3 LIU H32A LIU:2H3 LIU H41 LIU:1H4 LIU H42 LIU:2H4 LIU H61 LIU:1H6 LIU H62 LIU:2H6 LIU H71 LIU:1H7 LIU H72 LIU:2H7 LIU H73 LIU:3H7 LIU H81 LIU:1H8 LIU H82 LIU:2H8 LIU H83 LIU:3H8 LIU H271 LIU:1H27 LIU H272 LIU:2H27 LIU H401 LIU:1H40 LIU H402 LIU:2H40 LIU H403 LIU:3H40 LIU H411 LIU:1H41 LIU H412 LIU:2H41 LIU H413 LIU:3H41 LIU H211 LIV:1H21 LIV H212 LIV:2H21 LIV H311 LIV:1H31 LIV H312 LIV:2H31 LIV H611 LIV:1H61 LIV H612 LIV:2H61 LIV H121 LIV:1H12 LIV H122 LIV:2H12 LIV H321 LIV:1H32 LIV H322 LIV:2H32 LIV H221 LIV:1H22 LIV H222 LIV:2H22 LIV H531 LIV:1H53 LIV H532 LIV:2H53 LIV H241 LIV:1H24 LIV H242 LIV:2H24 LIV H11A LIV:1H1 LIV H12A LIV:2H1 LIV H641 LIV:1H64 LIV H642 LIV:2H64 LIV H651 LIV:1H65 LIV H652 LIV:2H65 LIV H81 LIW:1H8 LIW H82 LIW:2H8 LIW H91 LIW:1H9 LIW H92 LIW:2H9 LIW H101 LIW:1H10 LIW H102 LIW:2H10 LIW H111 LIW:1H11 LIW H112 LIW:2H11 LIW H121 LIW:1H12 LIW H122 LIW:2H12 LIW H191 LIW:1H19 LIW H192 LIW:2H19 LIW H193 LIW:3H19 LIW H201 LIW:1H20 LIW H202 LIW:2H20 LIW H271 LIW:1H27 LIW H272 LIW:2H27 LIW H273 LIW:3H27 LIW H51 LIX:1H5 LIX H52 LIX:2H5 LIX H61 LIX:1H6 LIX H62 LIX:2H6 LIX H63 LIX:3H6 LIX H131 LIX:1H13 LIX H132 LIX:2H13 LIX H133 LIX:3H13 LIX H171 LIX:1H17 LIX H172 LIX:2H17 LIX H201 LIX:1H20 LIX H202 LIX:2H20 LIX H211 LIX:1H21 LIX H212 LIX:2H21 LIX H221 LIX:1H22 LIX H222 LIX:2H22 LIX H223 LIX:3H22 LIX HN41 LIX:1HN4 LIX HN42 LIX:2HN4 LIX H161 LIX:1H16 LIX H162 LIX:2H16 LIX H181 LIX:1H18 LIX H182 LIX:2H18 LIX H191 LIX:1H19 LIX H192 LIX:2H19 LIX H193 LIX:3H19 LIX HN31 LIY:1HN3 LIY HN32 LIY:2HN3 LIY H61 LIY:1H6 LIY H62 LIY:2H6 LIY H131 LIY:1H13 LIY H132 LIY:2H13 LIY H171 LIY:1H17 LIY H172 LIY:2H17 LIY H201 LIY:1H20 LIY H202 LIY:2H20 LIY H203 LIY:3H20 LIY HN41 LIY:1HN4 LIY HN42 LIY:2HN4 LIY H141 LIY:1H14 LIY H142 LIY:2H14 LIY H161 LIY:1H16 LIY H162 LIY:2H16 LIY H181 LIY:1H18 LIY H182 LIY:2H18 LIY H191 LIY:1H19 LIY H192 LIY:2H19 LIY H193 LIY:3H19 LIY HBC1 LK1:1HBC LK1 HBC2 LK1:2HBC LK1 HGC1 LK1:1HGC LK1 HGC2 LK1:2HGC LK1 H231 LK1:1H23 LK1 H232 LK1:2H23 LK1 H241 LK1:1H24 LK1 H242 LK1:2H24 LK1 H251 LK1:1H25 LK1 H252 LK1:2H25 LK1 H261 LK1:1H26 LK1 H262 LK1:2H26 LK1 H263 LK1:3H26 LK1 HBC1 LK2:1HBC LK2 HBC2 LK2:2HBC LK2 HGC1 LK2:1HGC LK2 HGC2 LK2:2HGC LK2 H231 LK2:1H23 LK2 H232 LK2:2H23 LK2 H241 LK2:1H24 LK2 H242 LK2:2H24 LK2 H291 LK2:1H29 LK2 H292 LK2:2H29 LK2 H441 LK2:1H44 LK2 H442 LK2:2H44 LK2 H443 LK2:3H44 LK2 HBC1 LK3:1HBC LK3 HBC2 LK3:2HBC LK3 HGC1 LK3:1HGC LK3 HGC2 LK3:2HGC LK3 H231 LK3:1H23 LK3 H232 LK3:2H23 LK3 H241 LK3:1H24 LK3 H242 LK3:2H24 LK3 H251 LK3:1H25 LK3 H252 LK3:2H25 LK3 H261 LK3:1H26 LK3 H262 LK3:2H26 LK3 H301 LK3:1H30 LK3 H302 LK3:2H30 LK3 H303 LK3:3H30 LK3 H231 LK4:1H23 LK4 H232 LK4:2H23 LK4 HBC1 LK4:1HBC LK4 HBC2 LK4:2HBC LK4 HGC1 LK4:1HGC LK4 HGC2 LK4:2HGC LK4 H11 LK5:1H1 LK5 H12 LK5:2H1 LK5 H13 LK5:3H1 LK5 H31 LK5:1H3 LK5 H32 LK5:2H3 LK5 H41 LK5:1H4 LK5 H42 LK5:2H4 LK5 H51 LK5:1H5 LK5 H52 LK5:2H5 LK5 H71 LK5:1H7 LK5 H72 LK5:2H7 LK5 H81 LK5:1H8 LK5 H82 LK5:2H8 LK5 H91 LK5:1H9 LK5 H92 LK5:2H9 LK5 H161 LK5:1H16 LK5 H162 LK5:2H16 LK5 H21 LK5:1H2 LK5 H22 LK5:2H2 LK5 H23 LK5:3H2 LK5 H11 LK7:1H1 LK7 H12 LK7:2H1 LK7 H13A LK7:3H1 LK7 H101 LK7:1H10 LK7 H102 LK7:2H10 LK7 H111 LK7:1H11 LK7 H112 LK7:2H11 LK7 H121 LK7:1H12 LK7 H122 LK7:2H12 LK7 H141 LK7:1H14 LK7 H142 LK7:2H14 LK7 H143 LK7:3H14 LK7 HN11 LKA:1HN1 LKA HN12 LKA:2HN1 LKA H61 LKA:1H6 LKA H62 LKA:2H6 LKA H41 LKC:1H4 LKC H42 LKC:2H4 LKC H1' LKC: H1* LKC H2'1 LKC:1H2* LKC H3' LKC: H3* LKC H5'1 LKC:1H5* LKC H5'2 LKC:2H5* LKC H5M1 LKC:1H5M LKC H5M2 LKC:2H5M LKC H5M3 LKC:3H5M LKC H6'1 LKC:1H6* LKC H6'2 LKC:2H6* LKC H61 LKS:1H6 LKS H62 LKS:2H6 LKS H81 LKS:1H8 LKS H82 LKS:2H8 LKS HAF1 LLF:1HAF LLF HAF2 LLF:2HAF LLF H2A1 LLF:1H2A LLF H2A2 LLF:2H2A LLF H2A3 LLF:3H2A LLF H5M1 LLF:1H5M LLF H5M2 LLF:2H5M LLF H211 LLL:1H21 LLL H212 LLL:2H21 LLL H311 LLL:1H31 LLL H312 LLL:2H31 LLL H411 LLL:1H41 LLL H412 LLL:2H41 LLL H611 LLL:1H61 LLL H612 LLL:2H61 LLL H11A LLL:1H1 LLL H12A LLL:2H1 LLL H121 LLL:1H12 LLL H122 LLL:2H12 LLL H221 LLL:1H22 LLL H222 LLL:2H22 LLL H321 LLL:1H32 LLL H322 LLL:2H32 LLL H531 LLL:1H53 LLL H532 LLL:2H53 LLL H831 LLL:1H83 LLL H832 LLL:2H83 LLL H833 LLL:3H83 LLL H931 LLL:1H93 LLL H932 LLL:2H93 LLL H933 LLL:3H93 LLL H2'1 LLP:1H2A LLP H2'2 LLP:2H2A LLP H2'3 LLP:3H2A LLP H4'1 LLP:1H4A LLP H4'2 LLP:2H4A LLP H5'1 LLP:1H5A LLP H5'2 LLP:2H5A LLP HOP2 LLP:2HOP LLP HOP3 LLP:3HOP LLP H LLP:1HN LLP HN2 LLP:2HN LLP HB2 LLP:1HB LLP HB3 LLP:2HB LLP HG2 LLP:1HG LLP HG3 LLP:2HG LLP HD2 LLP:1HD LLP HD3 LLP:2HD LLP HE2 LLP:1HE LLP HE3 LLP:2HE LLP HZ1 LLP: HNZ LLP H LLY:1HN LLY H2 LLY:2HN LLY HB2 LLY:1HB LLY HB3 LLY:2HB LLY HG2 LLY:1HG LLY HG3 LLY:2HG LLY HD2 LLY:1HD LLY HD3 LLY:2HD LLY HE2 LLY:1HE LLY HE3 LLY:2HE LLY HZ LLY: HNZ LLY H461 LM1:1H46 LM1 H462 LM1:2H46 LM1 H1C1 LM1:1H1C LM1 H1C2 LM1:2H1C LM1 H2C1 LM1:1H2C LM1 H2C2 LM1:2H2C LM1 H3C1 LM1:1H3C LM1 H3C2 LM1:2H3C LM1 H4C1 LM1:1H4C LM1 H4C2 LM1:2H4C LM1 H5C1 LM1:1H5C LM1 H5C2 LM1:2H5C LM1 H6C1 LM1:1H6C LM1 H6C2 LM1:2H6C LM1 H7C1 LM1:1H7C LM1 H7C2 LM1:2H7C LM1 H8C1 LM1:1H8C LM1 H8C2 LM1:2H8C LM1 H9C1 LM1:1H9C LM1 H9C2 LM1:2H9C LM1 H101 LM1:1H10 LM1 H102 LM1:2H10 LM1 H111 LM1:1H11 LM1 H112 LM1:2H11 LM1 H121 LM1:1H12 LM1 H122 LM1:2H12 LM1 H123 LM1:3H12 LM1 H851 LM1:1H85 LM1 H852 LM1:2H85 LM1 HA61 LM2:1HA6 LM2 HA62 LM2:2HA6 LM2 HB61 LM2:1HB6 LM2 HB62 LM2:2HB6 LM2 HD61 LM2:1HD6 LM2 HD62 LM2:2HD6 LM2 HD71 LM2:1HD7 LM2 HD72 LM2:2HD7 LM2 HD73 LM2:3HD7 LM2 H2 LME: HN2 LME H LME: HN LME H11 LME:1H1 LME H12 LME:2H1 LME H13 LME:3H1 LME HG2 LME:1HG LME HG3 LME:2HG LME H LMF:1HN LMF H2 LMF:2HN LMF HB1 LMF:1HB LMF HB2 LMF:2HB LMF HG1 LMF:1HG LMF HG2 LMF:2HG LMF HD1 LMF:1HD LMF HD2 LMF:2HD LMF HE1 LMF:1HE LMF HE2 LMF:2HE LMF HM1 LMF:1HM LMF HM2 LMF:2HM LMF HM3 LMF:3HM LMF HC61 LMG:1HC6 LMG HC62 LMG:2HC6 LMG HC71 LMG:1HC7 LMG HC72 LMG:2HC7 LMG HC91 LMG:1HC9 LMG HC92 LMG:2HC9 LMG H111 LMG:1H11 LMG H112 LMG:2H11 LMG H121 LMG:1H12 LMG H122 LMG:2H12 LMG H131 LMG:1H13 LMG H132 LMG:2H13 LMG H141 LMG:1H14 LMG H142 LMG:2H14 LMG H151 LMG:1H15 LMG H152 LMG:2H15 LMG H161 LMG:1H16 LMG H162 LMG:2H16 LMG H171 LMG:1H17 LMG H172 LMG:2H17 LMG H181 LMG:1H18 LMG H182 LMG:2H18 LMG H191 LMG:1H19 LMG H192 LMG:2H19 LMG H201 LMG:1H20 LMG H202 LMG:2H20 LMG H211 LMG:1H21 LMG H212 LMG:2H21 LMG H221 LMG:1H22 LMG H222 LMG:2H22 LMG H231 LMG:1H23 LMG H232 LMG:2H23 LMG H241 LMG:1H24 LMG H242 LMG:2H24 LMG H251 LMG:1H25 LMG H252 LMG:2H25 LMG H261 LMG:1H26 LMG H262 LMG:2H26 LMG H271 LMG:1H27 LMG H272 LMG:2H27 LMG H273 LMG:3H27 LMG H291 LMG:1H29 LMG H292 LMG:2H29 LMG H301 LMG:1H30 LMG H302 LMG:2H30 LMG H311 LMG:1H31 LMG H312 LMG:2H31 LMG H321 LMG:1H32 LMG H322 LMG:2H32 LMG H331 LMG:1H33 LMG H332 LMG:2H33 LMG H341 LMG:1H34 LMG H342 LMG:2H34 LMG H351 LMG:1H35 LMG H352 LMG:2H35 LMG H361 LMG:1H36 LMG H362 LMG:2H36 LMG H371 LMG:1H37 LMG H372 LMG:2H37 LMG H381 LMG:1H38 LMG H382 LMG:2H38 LMG H391 LMG:1H39 LMG H392 LMG:2H39 LMG H401 LMG:1H40 LMG H402 LMG:2H40 LMG H411 LMG:1H41 LMG H412 LMG:2H41 LMG H421 LMG:1H42 LMG H422 LMG:2H42 LMG H431 LMG:1H43 LMG H432 LMG:2H43 LMG H441 LMG:1H44 LMG H442 LMG:2H44 LMG H451 LMG:1H45 LMG H452 LMG:2H45 LMG H453 LMG:3H45 LMG HB1 LML:1HB LML HB2 LML:2HB LML HD11 LML:1HD1 LML HD12 LML:2HD1 LML HD13 LML:3HD1 LML HD21 LML:1HD2 LML HD22 LML:2HD2 LML HD23 LML:3HD2 LML O3' LMS: O3* LMS C2' LMS: C2* LMS O2' LMS: O2* LMS C1' LMS: C1* LMS H5'1 LMS:1H5* LMS H5'2 LMS:2H5* LMS H4' LMS: H4* LMS H3' LMS: H3* LMS H2' LMS: H2* LMS H1' LMS: H1* LMS H6N1 LMS:1H6N LMS H6N2 LMS:2H6N LMS HN1 LMS:1HN LMS HN2 LMS:2HN LMS H1B LMT: H1* LMT H2B LMT: H2* LMT H3B LMT: H3* LMT H4B LMT: H4* LMT H5B LMT: H5* LMT H6'2 LMT:2H6* LMT H6'1 LMT:1H6* LMT H2O1 LMT:1H2O LMT H3O1 LMT:1H3O LMT H4O1 LMT:1H4O LMT H6B LMT: H6* LMT H6D LMT:2H6' LMT H6E LMT:1H6' LMT H2O2 LMT:2H2O LMT H3O2 LMT:2H3O LMT H12 LMT:2H1 LMT H11 LMT:1H1 LMT H22 LMT:2H2 LMT H21 LMT:1H2 LMT H32 LMT:2H3 LMT H31 LMT:1H3 LMT H42 LMT:2H4 LMT H41 LMT:1H4 LMT H52 LMT:2H5 LMT H51 LMT:1H5 LMT H62 LMT:2H6 LMT H61 LMT:1H6 LMT H72 LMT:2H7 LMT H71 LMT:1H7 LMT H82 LMT:2H8 LMT H81 LMT:1H8 LMT H92 LMT:2H9 LMT H91 LMT:1H9 LMT H102 LMT:2H10 LMT H101 LMT:1H10 LMT H112 LMT:2H11 LMT H111 LMT:1H11 LMT H123 LMT:3H12 LMT H122 LMT:2H12 LMT H121 LMT:1H12 LMT H1B LMU: H1* LMU H2B LMU: H2* LMU H3B LMU: H3* LMU H4B LMU: H4* LMU H5B LMU: H5* LMU H6'2 LMU:2H6* LMU H6'1 LMU:1H6* LMU H2O1 LMU:1H2O LMU H3O1 LMU:1H3O LMU H4O1 LMU:1H4O LMU H6B LMU: H6* LMU H6D LMU:2H6' LMU H6E LMU:1H6' LMU H2O2 LMU:2H2O LMU H3O2 LMU:2H3O LMU H12 LMU:2H1 LMU H11 LMU:1H1 LMU H22 LMU:2H2 LMU H21 LMU:1H2 LMU H32 LMU:2H3 LMU H31 LMU:1H3 LMU H42 LMU:2H4 LMU H41 LMU:1H4 LMU H52 LMU:2H5 LMU H51 LMU:1H5 LMU H62 LMU:2H6 LMU H61 LMU:1H6 LMU H72 LMU:2H7 LMU H71 LMU:1H7 LMU H82 LMU:2H8 LMU H81 LMU:1H8 LMU H92 LMU:2H9 LMU H91 LMU:1H9 LMU H102 LMU:2H10 LMU H101 LMU:1H10 LMU H112 LMU:2H11 LMU H111 LMU:1H11 LMU H123 LMU:3H12 LMU H122 LMU:2H12 LMU H121 LMU:1H12 LMU H81 LMZ:1H8 LMZ H82 LMZ:2H8 LMZ H121 LMZ:1H12 LMZ H122 LMZ:2H12 LMZ HN71 LNC:1HN7 LNC HN72 LNC:2HN7 LNC HGS1 LNC:1HGS LNC HGS2 LNC:2HGS LNC HBS1 LNC:1HBS LNC HBS2 LNC:2HBS LNC H1' LNC: H1* LNC H4' LNC: H4* LNC H5'1 LNC:1H5* LNC H5'2 LNC:2H5* LNC H11 LNC:1H1 LNC H12 LNC:2H1 LNC H2' LNC: H2* LNC H3' LNC: H3* LNC HN61 LNC:1HN6 LNC HN62 LNC:2HN6 LNC H111 LNC:H11 LNC H122 LNC:H12 LNC H2C1 LNG:1H2C LNG H2C2 LNG:2H2C LNG H3C1 LNG:1H3C LNG H3C2 LNG:2H3C LNG H4C1 LNG:1H4C LNG H4C2 LNG:2H4C LNG H5C1 LNG:1H5C LNG H5C2 LNG:2H5C LNG H6C1 LNG:1H6C LNG H6C2 LNG:2H6C LNG H7C1 LNG:1H7C LNG H7C2 LNG:2H7C LNG H8C1 LNG:1H8C LNG H8C2 LNG:2H8C LNG H9C1 LNG:1H9C LNG H9C2 LNG:2H9C LNG H101 LNG:1H10 LNG H102 LNG:2H10 LNG H111 LNG:1H11 LNG H112 LNG:2H11 LNG H131 LNG:1H13 LNG H132 LNG:2H13 LNG H133 LNG:3H13 LNG H141 LNG:1H14 LNG H142 LNG:2H14 LNG H143 LNG:3H14 LNG H21 LNL:1H2 LNL H22 LNL:2H2 LNL H31 LNL:1H3 LNL H32 LNL:2H3 LNL H41 LNL:1H4 LNL H42 LNL:2H4 LNL H51 LNL:1H5 LNL H52 LNL:2H5 LNL H61 LNL:1H6 LNL H62 LNL:2H6 LNL H71 LNL:1H7 LNL H72 LNL:2H7 LNL H81 LNL:1H8 LNL H82 LNL:2H8 LNL H111 LNL:1H11 LNL H112 LNL:2H11 LNL H141 LNL:1H14 LNL H142 LNL:2H14 LNL H171 LNL:1H17 LNL H172 LNL:2H17 LNL H181 LNL:1H18 LNL H182 LNL:2H18 LNL H183 LNL:3H18 LNL HN1 LNO:1HN LNO HN2A LNO:2HN LNO HB1 LNO:1HB LNO HB2 LNO:2HB LNO HD11 LNO:1HD1 LNO HD12 LNO:2HD1 LNO HD13 LNO:3HD1 LNO HD21 LNO:1HD2 LNO HD22 LNO:2HD2 LNO HD23 LNO:3HD2 LNO H11 LNQ:1H1 LNQ H12 LNQ:2H1 LNQ H13 LNQ:3H1 LNQ H21 LNQ:1H2 LNQ H22 LNQ:2H2 LNQ H31 LNQ:1H3 LNQ H32 LNQ:2H3 LNQ H51 LNQ:1H5 LNQ H52 LNQ:2H5 LNQ H61 LNQ:1H6 LNQ H62 LNQ:2H6 LNQ H81 LNQ:1H8 LNQ H82 LNQ:2H8 LNQ H91 LNQ:1H9 LNQ H92 LNQ:2H9 LNQ H111 LNQ:1H11 LNQ H112 LNQ:2H11 LNQ H121 LNQ:1H12 LNQ H122 LNQ:2H12 LNQ H131 LNQ:1H13 LNQ H132 LNQ:2H13 LNQ H141 LNQ:1H14 LNQ H211 LNQ:1H21 LNQ H212 LNQ:2H21 LNQ H81 LNR:1H8 LNR H82 LNR:2H8 LNR HN11 LNR:1HN1 LNR HN12 LNR:2HN1 LNR HC1 LO1:1HC LO1 HC2 LO1:2HC LO1 H1N1 LO1:1H1N LO1 H1N2 LO1:2H1N LO1 H8C1 LOB:1H8C LOB H8C2 LOB:2H8C LOB H121 LOB:1H12 LOB H122 LOB:2H12 LOB H151 LOB:1H15 LOB H152 LOB:2H15 LOB H131 LOB:1H13 LOB H132 LOB:2H13 LOB H221 LOB:1H22 LOB H222 LOB:2H22 LOB H223 LOB:3H22 LOB H141 LOB:1H14 LOB H142 LOB:2H14 LOB H31 LOF:1H3 LOF H32 LOF:2H3 LOF HD11 LOL:1HD1 LOL HD12 LOL:2HD1 LOL HD13 LOL:3HD1 LOL HD21 LOL:1HD2 LOL HD22 LOL:2HD2 LOL HD23 LOL:3HD2 LOL HB3 LOL:1HB LOL HB2 LOL:2HB LOL H LOL:1HN LOL H2 LOL:2HN LOL HC LOL: H LOL HN11 LOP:1HN1 LOP HN12 LOP:2HN1 LOP H11 LOP:1H1 LOP H12 LOP:2H1 LOP H21 LOP:1H2 LOP H22 LOP:2H2 LOP H31 LOP:1H3 LOP H32 LOP:2H3 LOP H51 LOP:1H5 LOP H52 LOP:2H5 LOP H71 LOP:1H7 LOP H72 LOP:2H7 LOP H81 LOP:1H8 LOP H82 LOP:2H8 LOP H91 LOP:1H9 LOP H92 LOP:2H9 LOP H101 LOP:1H10 LOP H102 LOP:2H10 LOP H111 LOP:1H11 LOP H112 LOP:2H11 LOP H121 LOP:1H12 LOP H122 LOP:2H12 LOP H131 LOP:1H13 LOP H132 LOP:2H13 LOP H161 LOP:1H16 LOP H162 LOP:2H16 LOP H171 LOP:1H17 LOP H172 LOP:2H17 LOP H181 LOP:1H18 LOP H182 LOP:2H18 LOP H191 LOP:1H19 LOP H192 LOP:2H19 LOP H201 LOP:1H20 LOP H202 LOP:2H20 LOP H211 LOP:1H21 LOP H212 LOP:2H21 LOP H221 LOP:1H22 LOP H222 LOP:2H22 LOP H231 LOP:1H23 LOP H232 LOP:2H23 LOP H233 LOP:3H23 LOP H251 LOP:1H25 LOP H252 LOP:2H25 LOP H261 LOP:1H26 LOP H262 LOP:2H26 LOP H271 LOP:1H27 LOP H272 LOP:2H27 LOP H281 LOP:1H28 LOP H282 LOP:2H28 LOP H291 LOP:1H29 LOP H292 LOP:2H29 LOP H301 LOP:1H30 LOP H302 LOP:2H30 LOP H311 LOP:1H31 LOP H312 LOP:2H31 LOP H321 LOP:1H32 LOP H322 LOP:2H32 LOP H331 LOP:1H33 LOP H332 LOP:2H33 LOP H341 LOP:1H34 LOP H342 LOP:2H34 LOP H351 LOP:1H35 LOP H352 LOP:2H35 LOP H353 LOP:3H35 LOP H51 LOR:1H5 LOR H52 LOR:2H5 LOR H41 LOR:1H4 LOR H42 LOR:2H4 LOR H221 LOR:1H22 LOR H222 LOR:2H22 LOR H31 LOS:1H3 LOS H32 LOS:2H3 LOS H41 LOS:1H4 LOS H42 LOS:2H4 LOS H51 LOS:1H5 LOS H61 LOS:1H6 LOS H77 LOS:7H7 LOS H88 LOS:8H8 LOS H91 LOS:1H9 LOS H92 LOS:2H9 LOS H101 LOS:1H10 LOS H102 LOS:2H10 LOS H111 LOS:1H11 LOS H112 LOS:2H11 LOS H121 LOS:1H12 LOS H122 LOS:2H12 LOS H271 LOS:1H27 LOS H272 LOS:2H27 LOS H281 LOS:1H28 LOS H282 LOS:2H28 LOS H291 LOS:1H29 LOS H292 LOS:2H29 LOS H301 LOS:1H30 LOS H302 LOS:2H30 LOS H331 LOS:31H3 LOS H332 LOS:32H3 LOS H33A LOS:1H33 LOS H33B LOS:2H33 LOS H341 LOS:1H34 LOS H342 LOS:2H34 LOS H351 LOS:1H35 LOS H352 LOS:2H35 LOS H361 LOS:1H36 LOS H362 LOS:2H36 LOS HG1 LOS:1HG LOS HG2 LOS:2HG LOS HD21 LOS:1HD2 LOS HD22 LOS:2HD2 LOS HE11 LOS:1HE1 LOS HE12 LOS:2HE1 LOS HE21 LOS:1HE2 LOS HD11 LOV:1HD1 LOV HD12 LOV:2HD1 LOV HD13 LOV:3HD1 LOV HD21 LOV:1HD2 LOV HD22 LOV:2HD2 LOV HD23 LOV:3HD2 LOV H1B1 LOV:1H1B LOV H1B2 LOV:2H1B LOV HS1 LOV:1HS LOV H LOV:1HN LOV H2 LOV:2HN LOV HT1 LOV:1HT LOV HT2 LOV:2HT LOV HG11 LOV:1HG1 LOV HG12 LOV:2HG1 LOV HG13 LOV:3HG1 LOV HG21 LOV:1HG2 LOV HG22 LOV:2HG2 LOV HG23 LOV:3HG2 LOV H51 LOX:1H5 LOX H52 LOX:2H5 LOX H11 LP1:1H1 LP1 H12 LP1:2H1 LP1 H13A LP1:3H1 LP1 H241 LP1:1H24 LP1 H242 LP1:2H24 LP1 H243 LP1:3H24 LP1 H301 LP1:1H30 LP1 H302 LP1:2H30 LP1 H303 LP1:3H30 LP1 H311 LP1:1H31 LP1 H312 LP1:2H31 LP1 H313 LP1:3H31 LP1 H331 LP1:1H33 LP1 H332 LP1:2H33 LP1 H61 LP1:1H6 LP1 H62 LP1:2H6 LP1 H251 LP1:1H25 LP1 H252 LP1:2H25 LP1 H253 LP1:3H25 LP1 H281 LP1:1H28 LP1 H282 LP1:2H28 LP1 H391 LP1:1H39 LP1 H392 LP1:2H39 LP1 H401 LP1:1H40 LP1 H402 LP1:2H40 LP1 H403 LP1:3H40 LP1 H451 LP1:1H45 LP1 H452 LP1:2H45 LP1 HN1 LP1:1HN LP1 HN2 LP1:2HN LP1 H11 LP2:1H1 LP2 H12 LP2:2H1 LP2 H13A LP2:3H1 LP2 H61 LP2:1H6 LP2 H62 LP2:2H6 LP2 H241 LP2:1H24 LP2 H242 LP2:2H24 LP2 H243 LP2:3H24 LP2 H251 LP2:1H25 LP2 H252 LP2:2H25 LP2 H253 LP2:3H25 LP2 H281 LP2:1H28 LP2 H282 LP2:2H28 LP2 H301 LP2:1H30 LP2 H302 LP2:2H30 LP2 H303 LP2:3H30 LP2 H311 LP2:1H31 LP2 H312 LP2:2H31 LP2 H313 LP2:3H31 LP2 H331 LP2:1H33 LP2 H332 LP2:2H33 LP2 H391 LP2:1H39 LP2 H392 LP2:2H39 LP2 H401 LP2:1H40 LP2 H402 LP2:2H40 LP2 H403 LP2:3H40 LP2 H451 LP2:1H45 LP2 H452 LP2:2H45 LP2 HN1 LP2:1HN LP2 HN2 LP2:2HN LP2 H11 LP3:1H1 LP3 H12 LP3:2H1 LP3 H31 LP3:1H3 LP3 H32 LP3:2H3 LP3 H41 LP3:1H4 LP3 H42 LP3:2H4 LP3 H51 LP3:1H5 LP3 H52 LP3:2H5 LP3 H61 LP3:1H6 LP3 H62 LP3:2H6 LP3 H63 LP3:3H6 LP3 H71 LP3:1H7 LP3 H72 LP3:2H7 LP3 H73 LP3:3H7 LP3 H81 LP3:1H8 LP3 H82 LP3:2H8 LP3 H83 LP3:3H8 LP3 H121 LP3:1H12 LP3 H122 LP3:2H12 LP3 H131 LP3:1H13 LP3 H132 LP3:2H13 LP3 H141 LP3:1H14 LP3 H142 LP3:2H14 LP3 H151 LP3:1H15 LP3 H152 LP3:2H15 LP3 H161 LP3:1H16 LP3 H162 LP3:2H16 LP3 H171 LP3:1H17 LP3 H172 LP3:2H17 LP3 H181 LP3:1H18 LP3 H182 LP3:2H18 LP3 H191 LP3:1H19 LP3 H192 LP3:2H19 LP3 H201 LP3:1H20 LP3 H202 LP3:2H20 LP3 H211 LP3:1H21 LP3 H212 LP3:2H21 LP3 H221 LP3:1H22 LP3 H222 LP3:2H22 LP3 H231 LP3:1H23 LP3 H232 LP3:2H23 LP3 H241 LP3:1H24 LP3 H242 LP3:2H24 LP3 H251 LP3:1H25 LP3 H252 LP3:2H25 LP3 H261 LP3:1H26 LP3 H262 LP3:2H26 LP3 H271 LP3:1H27 LP3 H272 LP3:2H27 LP3 H281 LP3:1H28 LP3 H282 LP3:2H28 LP3 H283 LP3:3H28 LP3 H61 LP4:1H6 LP4 H62 LP4:2H6 LP4 H291 LP4:1H29 LP4 H292 LP4:2H29 LP4 H311 LP4:1H31 LP4 H312 LP4:2H31 LP4 H321 LP4:1H32 LP4 H322 LP4:2H32 LP4 H331 LP4:1H33 LP4 H332 LP4:2H33 LP4 H341 LP4:1H34 LP4 H342 LP4:2H34 LP4 H351 LP4:1H35 LP4 H352 LP4:2H35 LP4 H361 LP4:1H36 LP4 H362 LP4:2H36 LP4 H371 LP4:1H37 LP4 H372 LP4:2H37 LP4 H381 LP4:1H38 LP4 H382 LP4:2H38 LP4 H391 LP4:1H39 LP4 H392 LP4:2H39 LP4 H401 LP4:1H40 LP4 H402 LP4:2H40 LP4 H411 LP4:1H41 LP4 H412 LP4:2H41 LP4 H413 LP4:3H41 LP4 H11 LP4:1H1 LP4 H12 LP4:2H1 LP4 H81 LP4:1H8 LP4 H82 LP4:2H8 LP4 H171 LP4:1H17 LP4 H172 LP4:2H17 LP4 H181 LP4:1H18 LP4 H182 LP4:2H18 LP4 H191 LP4:1H19 LP4 H192 LP4:2H19 LP4 H201 LP4:1H20 LP4 H202 LP4:2H20 LP4 H211 LP4:1H21 LP4 H212 LP4:2H21 LP4 H221 LP4:1H22 LP4 H222 LP4:2H22 LP4 H231 LP4:1H23 LP4 H232 LP4:2H23 LP4 H241 LP4:1H24 LP4 H242 LP4:2H24 LP4 H251 LP4:1H25 LP4 H252 LP4:2H25 LP4 H261 LP4:1H26 LP4 H262 LP4:2H26 LP4 H271 LP4:1H27 LP4 H272 LP4:2H27 LP4 H273 LP4:3H27 LP4 H81 LP5:1H8 LP5 H82 LP5:2H8 LP5 H171 LP5:1H17 LP5 H172 LP5:2H17 LP5 H181 LP5:1H18 LP5 H182 LP5:2H18 LP5 H191 LP5:1H19 LP5 H192 LP5:2H19 LP5 H201 LP5:1H20 LP5 H202 LP5:2H20 LP5 H211 LP5:1H21 LP5 H212 LP5:2H21 LP5 H221 LP5:1H22 LP5 H222 LP5:2H22 LP5 H231 LP5:1H23 LP5 H232 LP5:2H23 LP5 H241 LP5:1H24 LP5 H242 LP5:2H24 LP5 H251 LP5:1H25 LP5 H252 LP5:2H25 LP5 H261 LP5:1H26 LP5 H262 LP5:2H26 LP5 H271 LP5:1H27 LP5 H272 LP5:2H27 LP5 H273 LP5:3H27 LP5 H61 LP5:1H6 LP5 H62 LP5:2H6 LP5 H291 LP5:1H29 LP5 H292 LP5:2H29 LP5 H311 LP5:1H31 LP5 H312 LP5:2H31 LP5 H321 LP5:1H32 LP5 H322 LP5:2H32 LP5 H331 LP5:1H33 LP5 H332 LP5:2H33 LP5 H341 LP5:1H34 LP5 H342 LP5:2H34 LP5 H351 LP5:1H35 LP5 H352 LP5:2H35 LP5 H361 LP5:1H36 LP5 H362 LP5:2H36 LP5 H371 LP5:1H37 LP5 H372 LP5:2H37 LP5 H381 LP5:1H38 LP5 H382 LP5:2H38 LP5 H391 LP5:1H39 LP5 H392 LP5:2H39 LP5 H401 LP5:1H40 LP5 H402 LP5:2H40 LP5 H411 LP5:1H41 LP5 H412 LP5:2H41 LP5 H413 LP5:3H41 LP5 H21 LPA:1H2 LPA H22 LPA:2H2 LPA H31 LPA:1H3 LPA H32 LPA:2H3 LPA H41 LPA:1H4 LPA H42 LPA:2H4 LPA H51 LPA:1H5 LPA H52 LPA:2H5 LPA H71 LPA:1H7 LPA H72 LPA:2H7 LPA H81 LPA:1H8 LPA H82 LPA:2H8 LPA H0A1 LPC:1H0A LPC H0A2 LPC:2H0A LPC H0A3 LPC:3H0A LPC H0B1 LPC:1H0B LPC H0B2 LPC:2H0B LPC H0B3 LPC:3H0B LPC H0C1 LPC:1H0C LPC H0C2 LPC:2H0C LPC H0C3 LPC:3H0C LPC H21 LPC:1H2 LPC H22 LPC:2H2 LPC H31 LPC:1H3 LPC H32 LPC:2H3 LPC HO5A LPC:AHO5 LPC H71 LPC:1H7 LPC H72 LPC:2H7 LPC H91 LPC:1H9 LPC H92 LPC:2H9 LPC HB1 LPC:1HB LPC HB2 LPC:2HB LPC HC1 LPC:1HC LPC HC2 LPC:2HC LPC HD1 LPC:1HD LPC HD2 LPC:2HD LPC HE1 LPC:1HE LPC HE2 LPC:2HE LPC HF1 LPC:1HF LPC HF2 LPC:2HF LPC HG1 LPC:1HG LPC HG2 LPC:2HG LPC HH1 LPC:1HH LPC HH2 LPC:2HH LPC HI1 LPC:1HI LPC HI2 LPC:2HI LPC HJ1 LPC:1HJ LPC HJ2 LPC:2HJ LPC HK1 LPC:1HK LPC HK2 LPC:2HK LPC HL1 LPC:1HL LPC HL2 LPC:2HL LPC HM1 LPC:1HM LPC HM2 LPC:2HM LPC HN1 LPC:1HN LPC HN2 LPC:2HN LPC HN3 LPC:3HN LPC HN21 LPD:1HN2 LPD HN22 LPD:2HN2 LPD H LPD: HN LPD HD3 LPD:1HD LPD HD2 LPD:2HD LPD HG3 LPD:1HG LPD HG2 LPD:2HG LPD HB2 LPD:1HB LPD HB3 LPD:2HB LPD H11 LPE:1H1 LPE H12 LPE:2H1 LPE H21 LPE:1H2 LPE HO21 LPE:1HO2 LPE H31 LPE:1H3 LPE H32 LPE:2H3 LPE H111 LPE:1H11 LPE H112 LPE:2H11 LPE H121 LPE:1H12 LPE H122 LPE:2H12 LPE HO31 LPE:1HO3 LPE H311 LPE:1H31 LPE H312 LPE:2H31 LPE H321 LPE:1H32 LPE H322 LPE:2H32 LPE H1N1 LPE:1H1N LPE H1N2 LPE:2H1N LPE H1N3 LPE:3H1N LPE H2N1 LPE:1H2N LPE H2N2 LPE:2H2N LPE H2N3 LPE:3H2N LPE H3N1 LPE:1H3N LPE H3N2 LPE:2H3N LPE H3N3 LPE:3H3N LPE H131 LPE:1H13 LPE H132 LPE:2H13 LPE H141 LPE:1H14 LPE H142 LPE:2H14 LPE H151 LPE:1H15 LPE H152 LPE:2H15 LPE H161 LPE:1H16 LPE H162 LPE:2H16 LPE H171 LPE:1H17 LPE H172 LPE:2H17 LPE H181 LPE:1H18 LPE H182 LPE:2H18 LPE H191 LPE:1H19 LPE H192 LPE:2H19 LPE H201 LPE:1H20 LPE H202 LPE:2H20 LPE H211 LPE:1H21 LPE H212 LPE:2H21 LPE H221 LPE:1H22 LPE H222 LPE:2H22 LPE H231 LPE:1H23 LPE H232 LPE:2H23 LPE H241 LPE:1H24 LPE H242 LPE:2H24 LPE H251 LPE:1H25 LPE H252 LPE:2H25 LPE H261 LPE:1H26 LPE H262 LPE:2H26 LPE H271 LPE:1H27 LPE H272 LPE:2H27 LPE H281 LPE:1H28 LPE H282 LPE:2H28 LPE H283 LPE:3H28 LPE H41 LPF:1H4 LPF H42 LPF:2H4 LPF HL21 LPF:1HL2 LPF HL22 LPF:2HL2 LPF HL23 LPF:3HL2 LPF HA11 LPF:1HA1 LPF HA12 LPF:2HA1 LPF HA31 LPF:1HA3 LPF HA32 LPF:2HA3 LPF HA33 LPF:3HA3 LPF HA41 LPF:1HA4 LPF HA42 LPF:2HA4 LPF HA43 LPF:3HA4 LPF H LPG:1HN LPG H2 LPG:2HN LPG H LPL:1HN LPL H2 LPL:2HN LPL HB2 LPL:1HB LPL HB3 LPL:2HB LPL HD11 LPL:1HD1 LPL HD12 LPL:2HD1 LPL HD13 LPL:3HD1 LPL HD21 LPL:1HD2 LPL HD22 LPL:2HD2 LPL HD23 LPL:3HD2 LPL HM1 LPL:1HM LPL HM2 LPL:2HM LPL HB11 LPL:1HB1 LPL HB12 LPL:2HB1 LPL HD31 LPL:1HD3 LPL HD32 LPL:2HD3 LPL HD33 LPL:3HD3 LPL HD41 LPL:1HD4 LPL HD42 LPL:2HD4 LPL HD43 LPL:3HD4 LPL HN1 LPM:1HN LPM HN2 LPM:2HN LPM H21 LPM:1H2 LPM H22 LPM:2H2 LPM H31 LPM:1H3 LPM H32 LPM:2H3 LPM H41 LPM:1H4 LPM H42 LPM:2H4 LPM H51 LPM:1H5 LPM H52 LPM:2H5 LPM H71 LPM:1H7 LPM H72 LPM:2H7 LPM H81 LPM:1H8 LPM H82 LPM:2H8 LPM HC61 LPP:1HC6 LPP HC62 LPP:2HC6 LPP HC81 LPP:1HC8 LPP HC82 LPP:2HC8 LPP H121 LPP:1H12 LPP H122 LPP:2H12 LPP H131 LPP:1H13 LPP H132 LPP:2H13 LPP H141 LPP:1H14 LPP H142 LPP:2H14 LPP H151 LPP:1H15 LPP H152 LPP:2H15 LPP H161 LPP:1H16 LPP H162 LPP:2H16 LPP H171 LPP:1H17 LPP H172 LPP:2H17 LPP H181 LPP:1H18 LPP H182 LPP:2H18 LPP H191 LPP:1H19 LPP H192 LPP:2H19 LPP H201 LPP:1H20 LPP H202 LPP:2H20 LPP H211 LPP:1H21 LPP H212 LPP:2H21 LPP H221 LPP:1H22 LPP H222 LPP:2H22 LPP H231 LPP:1H23 LPP H232 LPP:2H23 LPP H241 LPP:1H24 LPP H242 LPP:2H24 LPP H251 LPP:1H25 LPP H252 LPP:2H25 LPP H261 LPP:1H26 LPP H262 LPP:2H26 LPP H263 LPP:3H26 LPP H301 LPP:1H30 LPP H302 LPP:2H30 LPP H311 LPP:1H31 LPP H312 LPP:2H31 LPP H321 LPP:1H32 LPP H322 LPP:2H32 LPP H331 LPP:1H33 LPP H332 LPP:2H33 LPP H341 LPP:1H34 LPP H342 LPP:2H34 LPP H351 LPP:1H35 LPP H352 LPP:2H35 LPP H361 LPP:1H36 LPP H362 LPP:2H36 LPP H371 LPP:1H37 LPP H372 LPP:2H37 LPP H381 LPP:1H38 LPP H382 LPP:2H38 LPP H391 LPP:1H39 LPP H392 LPP:2H39 LPP H401 LPP:1H40 LPP H402 LPP:2H40 LPP H411 LPP:1H41 LPP H412 LPP:2H41 LPP H421 LPP:1H42 LPP H422 LPP:2H42 LPP H431 LPP:1H43 LPP H432 LPP:2H43 LPP H441 LPP:1H44 LPP H442 LPP:2H44 LPP H443 LPP:3H44 LPP H3N1 LPR:1H3N LPR H3N2 LPR:2H3N LPR H62 LPR:2H6 LPR H72 LPR:2H7 LPR H8C1 LPR:1H8C LPR H8C2 LPR:2H8C LPR H101 LPR:1H10 LPR H102 LPR:2H10 LPR H111 LPR:1H11 LPR H112 LPR:2H11 LPR H121 LPR:1H12 LPR H122 LPR:2H12 LPR H131 LPR:1H13 LPR H132 LPR:2H13 LPR H141 LPR:1H14 LPR H142 LPR:2H14 LPR H151 LPR:1H15 LPR H152 LPR:2H15 LPR HN1 LPS:1HN LPS HN2 LPS:2HN LPS H111 LPS:1H11 LPS H112 LPS:2H11 LPS H11 LPS:1H1 LPS H12A LPS:2H1 LPS H31A LPS:1H3 LPS H32A LPS:2H3 LPS H321 LPS:1H32 LPS H322 LPS:2H32 LPS H331 LPS:1H33 LPS H332 LPS:2H33 LPS H341 LPS:1H34 LPS H342 LPS:2H34 LPS H351 LPS:1H35 LPS H352 LPS:2H35 LPS H361 LPS:1H36 LPS H362 LPS:2H36 LPS H371 LPS:1H37 LPS H372 LPS:2H37 LPS H381 LPS:1H38 LPS H382 LPS:2H38 LPS H391 LPS:1H39 LPS H392 LPS:2H39 LPS H401 LPS:1H40 LPS H402 LPS:2H40 LPS H411 LPS:1H41 LPS H412 LPS:2H41 LPS H421 LPS:1H42 LPS H422 LPS:2H42 LPS H431 LPS:1H43 LPS H432 LPS:2H43 LPS H441 LPS:1H44 LPS H442 LPS:2H44 LPS H451 LPS:1H45 LPS H452 LPS:2H45 LPS H453 LPS:3H45 LPS H81 LPT:1H8 LPT H82 LPT:2H8 LPT H71 LPT:1H7 LPT H72 LPT:2H7 LPT H61 LPT:1H6 LPT H62 LPT:2H6 LPT H51 LPT:1H5 LPT H52 LPT:2H5 LPT H41 LPT:1H4 LPT H42 LPT:2H4 LPT HN21 LPT:1HN2 LPT HN22 LPT:2HN2 LPT HN11 LPT:1HN1 LPT HN12 LPT:2HN1 LPT HN13 LPT:3HN1 LPT H011 LQQ:1H01 LQQ H012 LQQ:2H01 LQQ H013 LQQ:3H01 LQQ H051 LQQ:1H05 LQQ H052 LQQ:2H05 LQQ H053 LQQ:3H05 LQQ H111 LQQ:1H11 LQQ H112 LQQ:2H11 LQQ H121 LQQ:1H12 LQQ H122 LQQ:2H12 LQQ H131 LQQ:1H13 LQQ H132 LQQ:2H13 LQQ H141 LQQ:1H14 LQQ H142 LQQ:2H14 LQQ H211 LQQ:1H21 LQQ H212 LQQ:2H21 LQQ H221 LQQ:1H22 LQQ H222 LQQ:2H22 LQQ H231 LQQ:1H23 LQQ H232 LQQ:2H23 LQQ H241 LQQ:1H24 LQQ H242 LQQ:2H24 LQQ H383 LRB:3H38 LRB H382 LRB:2H38 LRB H381 LRB:1H38 LRB H392 LRB:2H39 LRB H391 LRB:1H39 LRB H402 LRB:2H40 LRB H401 LRB:1H40 LRB H412 LRB:2H41 LRB H411 LRB:1H41 LRB H422 LRB:2H42 LRB H421 LRB:1H42 LRB H432 LRB:2H43 LRB H431 LRB:1H43 LRB H442 LRB:2H44 LRB H441 LRB:1H44 LRB H452 LRB:2H45 LRB H451 LRB:1H45 LRB H462 LRB:2H46 LRB H461 LRB:1H46 LRB H512 LRB:2H51 LRB H511 LRB:1H51 LRB H552 LRB:2H55 LRB H551 LRB:1H55 LRB H572 LRB:2H57 LRB H571 LRB:1H57 LRB H582 LRB:2H58 LRB H581 LRB:1H58 LRB H592 LRB:2H59 LRB H591 LRB:1H59 LRB H1C1 LRH:1H1C LRH H1C2 LRH:2H1C LRH H6C1 LRH:1H6C LRH H6C2 LRH:2H6C LRH H6C3 LRH:3H6C LRH H31 LRU:1H3 LRU H32 LRU:2H3 LRU H41 LRU:1H4 LRU H42 LRU:2H4 LRU H51 LRU:1H5 LRU H61 LRU:1H6 LRU H77 LRU:7H7 LRU H88 LRU:8H8 LRU H91 LRU:1H9 LRU H92 LRU:2H9 LRU H101 LRU:1H10 LRU H102 LRU:2H10 LRU H111 LRU:1H11 LRU H112 LRU:2H11 LRU H121 LRU:1H12 LRU H122 LRU:2H12 LRU H271 LRU:1H27 LRU H272 LRU:2H27 LRU H281 LRU:1H28 LRU H282 LRU:2H28 LRU H291 LRU:1H29 LRU H292 LRU:2H29 LRU H301 LRU:1H30 LRU H302 LRU:2H30 LRU H331 LRU:31H3 LRU H332 LRU:32H3 LRU H33A LRU:1H33 LRU H33B LRU:2H33 LRU H341 LRU:1H34 LRU H342 LRU:2H34 LRU H351 LRU:1H35 LRU H352 LRU:2H35 LRU H361 LRU:1H36 LRU H362 LRU:2H36 LRU HG1 LRU:1HG LRU HG2 LRU:2HG LRU HD21 LRU:1HD2 LRU HD22 LRU:2HD2 LRU HE11 LRU:1HE1 LRU HE12 LRU:2HE1 LRU HE21 LRU:1HE2 LRU H1N LS1: NH1 LS1 H41 LS1:1H4 LS1 H51 LS1:1H5 LS1 H61 LS1:1H6 LS1 H71 LS1:1H7 LS1 H121 LS1:1H12 LS1 H17N LS1:NH17 LS1 H211 LS1:1H21 LS1 H221 LS1:1H22 LS1 H241 LS1:1H24 LS1 H251 LS1:1H25 LS1 H33N LS1:NH33 LS1 H351 LS1:1H35 LS1 H352 LS1:2H35 LS1 H353 LS1:3H35 LS1 H1N LS2: NH1 LS2 H61 LS2:1H6 LS2 H71 LS2:1H7 LS2 H141 LS2:1H14 LS2 H19N LS2:NH19 LS2 H221 LS2:1H22 LS2 H231 LS2:1H23 LS2 H251 LS2:1H25 LS2 H261 LS2:1H26 LS2 H291 LS2:1H29 LS2 H292 LS2:2H29 LS2 H37N LS2:NH37 LS2 H391 LS2:1H39 LS2 H392 LS2:2H39 LS2 H393 LS2:3H39 LS2 H7N LS3: NH7 LS3 H91 LS3:1H9 LS3 H101 LS3:1H10 LS3 H141 LS3:1H14 LS3 H161 LS3:1H16 LS3 H171 LS3:1H17 LS3 H201 LS3:1H20 LS3 H21N LS3:NH21 LS3 H231 LS3:1H23 LS3 H251 LS3:1H25 LS3 H252 LS3:2H25 LS3 H291 LS3:1H29 LS3 H292 LS3:2H29 LS3 H311 LS3:1H31 LS3 H321 LS3:1H32 LS3 H71 LS4:1H7 LS4 H91 LS4:1H9 LS4 H101 LS4:1H10 LS4 H111 LS4:1H11 LS4 H121 LS4:1H12 LS4 H151 LS4:1H15 LS4 H16N LS4:NH16 LS4 H181 LS4:1H18 LS4 H191 LS4:1H19 LS4 H211 LS4:1H21 LS4 H221 LS4:1H22 LS4 H26N LS4:NH26 LS4 H291 LS4:1H29 LS4 H301 LS4:1H30 LS4 H1N LS5: NH1 LS5 H41 LS5:1H4 LS5 H51 LS5:1H5 LS5 H61 LS5:1H6 LS5 H71 LS5:1H7 LS5 H121 LS5:1H12 LS5 H17N LS5:NH17 LS5 H211 LS5:1H21 LS5 H221 LS5:1H22 LS5 H241 LS5:1H24 LS5 H251 LS5:1H25 LS5 H33N LS5:NH33 LS5 H36N LS5:NH36 LS5 H371 LS5:1H37 LS5 H372 LS5:2H37 LS5 HN1 LSO:1HN LSO HN2 LSO:2HN LSO HBC1 LSO:1HBC LSO HBC2 LSO:2HBC LSO HGC1 LSO:1HGC LSO HGC2 LSO:2HGC LSO HDC1 LSO:1HDC LSO HDC2 LSO:2HDC LSO HEC1 LSO:1HEC LSO HEC2 LSO:2HEC LSO H3C1 LSO:1H3C LSO H3C2 LSO:2H3C LSO H2C1 LSO:1H2C LSO H2C2 LSO:2H2C LSO H5C1 LSO:1H5C LSO H5C2 LSO:2H5C LSO H7C1 LSO:1H7C LSO H7C2 LSO:2H7C LSO H9C1 LSO:1H9C LSO H9C2 LSO:2H9C LSO H101 LSO:1H10 LSO H102 LSO:2H10 LSO HN1 LSP:1HN LSP HN2 LSP:2HN LSP HN3 LSP:3HN LSP H121 LSP:1H12 LSP H122 LSP:2H12 LSP H111 LSP:1H11 LSP H112 LSP:2H11 LSP H321 LSP:1H32 LSP H322 LSP:2H32 LSP H323 LSP:3H32 LSP H LTA:1HN LTA H2 LTA:2HN LTA HB2 LTA:1HB LTA HB3 LTA:2HB LTA HG2 LTA:1HG LTA HG3 LTA:2HG LTA HD2 LTA:1HD LTA HD3 LTA:2HD LTA HE2 LTA:1HE LTA HE3 LTA:2HE LTA HZ1 LTA:1HZ LTA HZ2 LTA:2HZ LTA HC LTA: H LTA H21 LTA:1H2 LTA H22 LTA:2H2 LTA H91 LTA:1H9 LTA H92 LTA:2H9 LTA H101 LTA:1H10 LTA H102 LTA:2H10 LTA H103 LTA:3H10 LTA HC11 LTL:1HC1 LTL HC12 LTL:2HC1 LTL HC13 LTL:3HC1 LTL HC61 LTL:1HC6 LTL HC62 LTL:2HC6 LTL HC71 LTL:1HC7 LTL HC72 LTL:2HC7 LTL H131 LTL:1H13 LTL H132 LTL:2H13 LTL H141 LTL:1H14 LTL H142 LTL:2H14 LTL H143 LTL:3H14 LTL H221 LTL:1H22 LTL H222 LTL:2H22 LTL H223 LTL:3H22 LTL HH31 LTN:1HH3 LTN HH32 LTN:2HH3 LTN HB1 LTN:1HB LTN HB2 LTN:2HB LTN HN1 LTN:1HN LTN HN2 LTN:2HN LTN HB1 LTR:1HB LTR HB2 LTR:2HB LTR HN31 LTT:1HN3 LTT HN32 LTT:2HN3 LTT H81 LTT:1H8 LTT H82 LTT:2H8 LTT H61 LTT:1H6 LTT H62 LTT:2H6 LTT H7M1 LUM:1H7M LUM H7M2 LUM:2H7M LUM H7M3 LUM:3H7M LUM H8M1 LUM:1H8M LUM H8M2 LUM:2H8M LUM H8M3 LUM:3H8M LUM H21 LUT:1H2 LUT H22 LUT:2H2 LUT H41 LUT:1H4 LUT H42 LUT:2H4 LUT H161 LUT:1H16 LUT H162 LUT:2H16 LUT H163 LUT:3H16 LUT H171 LUT:1H17 LUT H172 LUT:2H17 LUT H173 LUT:3H17 LUT H181 LUT:1H18 LUT H182 LUT:2H18 LUT H183 LUT:3H18 LUT H191 LUT:1H19 LUT H192 LUT:2H19 LUT H193 LUT:3H19 LUT H201 LUT:1H20 LUT H202 LUT:2H20 LUT H203 LUT:3H20 LUT H221 LUT:1H22 LUT H222 LUT:2H22 LUT H361 LUT:1H36 LUT H362 LUT:2H36 LUT H363 LUT:3H36 LUT H371 LUT:1H37 LUT H372 LUT:2H37 LUT H373 LUT:3H37 LUT H381 LUT:1H38 LUT H382 LUT:2H38 LUT H383 LUT:3H38 LUT H391 LUT:1H39 LUT H392 LUT:2H39 LUT H393 LUT:3H39 LUT H401 LUT:1H40 LUT H402 LUT:2H40 LUT H403 LUT:3H40 LUT H2C1 LUX:1H2C LUX H2C2 LUX:2H2C LUX H4C1 LUX:1H4C LUX H4C2 LUX:2H4C LUX H101 LUX:1H10 LUX H102 LUX:2H10 LUX H111 LUX:1H11 LUX H112 LUX:2H11 LUX H121 LUX:1H12 LUX H122 LUX:2H12 LUX H141 LUX:1H14 LUX H142 LUX:2H14 LUX H151 LUX:1H15 LUX H152 LUX:2H15 LUX H161 LUX:1H16 LUX H162 LUX:2H16 LUX H163 LUX:3H16 LUX H171 LUX:1H17 LUX H172 LUX:2H17 LUX H173 LUX:3H17 LUX H181 LUX:1H18 LUX H182 LUX:2H18 LUX H191 LUX:1H19 LUX H192 LUX:2H19 LUX H193 LUX:3H19 LUX H201 LUX:1H20 LUX H202 LUX:2H20 LUX H203 LUX:3H20 LUX H221 LUX:1H22 LUX H222 LUX:2H22 LUX H241 LUX:1H24 LUX H271 LUX:1H27 LUX H281 LUX:1H28 LUX H282 LUX:2H28 LUX H301 LUX:1H30 LUX H302 LUX:2H30 LUX H311 LUX:1H31 LUX H312 LUX:2H31 LUX H321 LUX:1H32 LUX H322 LUX:2H32 LUX H341 LUX:1H34 LUX H342 LUX:2H34 LUX H351 LUX:1H35 LUX H352 LUX:2H35 LUX H361 LUX:1H36 LUX H362 LUX:2H36 LUX H363 LUX:3H36 LUX H371 LUX:1H37 LUX H372 LUX:2H37 LUX H373 LUX:3H37 LUX H381 LUX:1H38 LUX H382 LUX:2H38 LUX H383 LUX:3H38 LUX H391 LUX:1H39 LUX H392 LUX:2H39 LUX H393 LUX:3H39 LUX H401 LUX:1H40 LUX H402 LUX:2H40 LUX H403 LUX:3H40 LUX H161 LVA:1H16 LVA H162 LVA:2H16 LVA H171 LVA:1H17 LVA H172 LVA:2H17 LVA H181 LVA:1H18 LVA H182 LVA:2H18 LVA H191 LVA:1H19 LVA H192 LVA:2H19 LVA H201 LVA:1H20 LVA H202 LVA:2H20 LVA H203 LVA:3H20 LVA H211 LVA:1H21 LVA H212 LVA:2H21 LVA H231 LVA:1H23 LVA H232 LVA:2H23 LVA H233 LVA:3H23 LVA H271 LVA:1H27 LVA H272 LVA:2H27 LVA H281 LVA:1H28 LVA H282 LVA:2H28 LVA H283 LVA:3H28 LVA H291 LVA:1H29 LVA H292 LVA:2H29 LVA H293 LVA:3H29 LVA H LVG:1HN LVG H2 LVG:2HN LVG HG11 LVG:1HG1 LVG HG12 LVG:2HG1 LVG HB11 LVS:1HB1 LVS HB12 LVS:2HB1 LVS HD11 LVS:1HD1 LVS HD12 LVS:2HD1 LVS HD13 LVS:3HD1 LVS HD21 LVS:1HD2 LVS HD22 LVS:2HD2 LVS HD23 LVS:3HD2 LVS HB21 LVS:1HB2 LVS HB22 LVS:2HB2 LVS HD31 LVS:1HD3 LVS HD32 LVS:2HD3 LVS HD33 LVS:3HD3 LVS HD41 LVS:1HD4 LVS HD42 LVS:2HD4 LVS HD43 LVS:3HD4 LVS HB31 LVS:1HB3 LVS HB32 LVS:2HB3 LVS HD51 LVS:1HD5 LVS HD52 LVS:2HD5 LVS HD53 LVS:3HD5 LVS HD61 LVS:1HD6 LVS HD62 LVS:2HD6 LVS HD63 LVS:3HD6 LVS H1'1 LVS:1H1* LVS H1'2 LVS:2H1* LVS H1'3 LVS:3H1* LVS H2' LVS: H2* LVS HC41 LVS:1HC4 LVS HC42 LVS:2HC4 LVS H51 LX1:1H5 LX1 H52 LX1:2H5 LX1 H11 LX1:1H1 LX1 H12 LX1:2H1 LX1 H13 LX1:3H1 LX1 H5C1 LXC:1H5C LXC H5C2 LXC:2H5C LXC H51 LXP:1H5 LXP H52 LXP:2H5 LXP H11 LXP:1H1 LXP H12 LXP:2H1 LXP HC11 LY1:1HC1 LY1 HC12 LY1:2HC1 LY1 HN11 LY1:1HN1 LY1 HC21 LY1:1HC2 LY1 HC22 LY1:2HC2 LY1 HC31 LY1:1HC3 LY1 HC32 LY1:2HC3 LY1 HC41 LY1:1HC4 LY1 HC42 LY1:2HC4 LY1 HC51 LY1:1HC5 LY1 HC61 LY1:1HC6 LY1 H151 LY2:1H15 LY2 H152 LY2:2H15 LY2 H191 LY2:1H19 LY2 H192 LY2:2H19 LY2 H161 LY2:1H16 LY2 H162 LY2:2H16 LY2 H181 LY2:1H18 LY2 H182 LY2:2H18 LY2 HC71 LY3:1HC7 LY3 HC72 LY3:2HC7 LY3 HC81 LY3:1HC8 LY3 HC82 LY3:2HC8 LY3 HN41 LY3:1HN4 LY3 HN42 LY3:2HN4 LY3 H171 LY3:1H17 LY3 H172 LY3:2H17 LY3 H191 LY3:1H19 LY3 H192 LY3:2H19 LY3 HBD1 LY4:1HBD LY4 HBD2 LY4:2HBD LY4 HBB1 LY4:1HBB LY4 HBB2 LY4:2HBB LY4 HBA1 LY4:1HBA LY4 HBA2 LY4:2HBA LY4 HBC1 LY4:1HBC LY4 HBC2 LY4:2HBC LY4 HBG1 LY4:1HBG LY4 HBG2 LY4:2HBG LY4 HBI1 LY4:1HBI LY4 HBI2 LY4:2HBI LY4 HBI3 LY4:3HBI LY4 HBJ1 LY4:1HBJ LY4 HBJ2 LY4:2HBJ LY4 HBJ3 LY4:3HBJ LY4 HC71 LYA:1HC7 LYA HC72 LYA:2HC7 LYA HC81 LYA:1HC8 LYA HC82 LYA:2HC8 LYA H191 LYA:1H19 LYA H192 LYA:2H19 LYA H241 LYA:1H24 LYA H242 LYA:2H24 LYA H251 LYA:1H25 LYA H252 LYA:2H25 LYA HC81 LYB:1HC8 LYB HC82 LYB:2HC8 LYB HC91 LYB:1HC9 LYB HC92 LYB:2HC9 LYB HN41 LYB:1HN4 LYB HN42 LYB:2HN4 LYB H181 LYB:1H18 LYB H182 LYB:2H18 LYB H191 LYB:1H19 LYB H192 LYB:2H19 LYB H231 LYB:1H23 LYB H232 LYB:2H23 LYB H241 LYB:1H24 LYB H242 LYB:2H24 LYB H281 LYB:1H28 LYB H282 LYB:2H28 LYB H291 LYB:1H29 LYB H292 LYB:2H29 LYB H331 LYB:1H33 LYB H332 LYB:2H33 LYB H341 LYB:1H34 LYB H342 LYB:2H34 LYB H11A LYC:1H1 LYC H12 LYC:2H1 LYC H13 LYC:3H1 LYC H31 LYC:1H3 LYC H32 LYC:2H3 LYC H33 LYC:3H3 LYC H51 LYC:1H5 LYC H52 LYC:2H5 LYC H61 LYC:1H6 LYC H62 LYC:2H6 LYC H81 LYC:1H8 LYC H82 LYC:2H8 LYC H83 LYC:3H8 LYC H131 LYC:1H13 LYC H132 LYC:2H13 LYC H133 LYC:3H13 LYC H181 LYC:1H18 LYC H182 LYC:2H18 LYC H183 LYC:3H18 LYC H521 LYC:1H52 LYC H522 LYC:2H52 LYC H523 LYC:3H52 LYC H571 LYC:1H57 LYC H572 LYC:2H57 LYC H573 LYC:3H57 LYC H621 LYC:1H62 LYC H622 LYC:2H62 LYC H623 LYC:3H62 LYC H631 LYC:1H63 LYC H632 LYC:2H63 LYC H641 LYC:1H64 LYC H642 LYC:2H64 LYC H671 LYC:1H67 LYC H672 LYC:2H67 LYC H673 LYC:3H67 LYC H681 LYC:1H68 LYC H682 LYC:2H68 LYC H683 LYC:3H68 LYC HG11 LYD:1HG1 LYD HG12 LYD:2HG1 LYD HG13 LYD:3HG1 LYD HG21 LYD:1HG2 LYD HG22 LYD:2HG2 LYD HG23 LYD:3HG2 LYD HC81 LYD:1HC8 LYD HC82 LYD:2HC8 LYD HC71 LYD:1HC7 LYD HC72 LYD:2HC7 LYD HN21 LYD:1HN2 LYD HN22 LYD:2HN2 LYD HC41 LYL:1HC4 LYL HC42 LYL:2HC4 LYL H151 LYL:1H15 LYL H152 LYL:2H15 LYL H153 LYL:3H15 LYL H141 LYL:1H14 LYL H142 LYL:2H14 LYL H LYM:1HN LYM H2 LYM:2HN LYM HB2 LYM:1HB LYM HB3 LYM:2HB LYM HG2 LYM:1HG LYM HG3 LYM:2HG LYM HD2 LYM:1HD LYM HD3 LYM:2HD LYM HE2 LYM:1HE LYM HE3 LYM:2HE LYM HZ1 LYM:1HZ LYM HZ2 LYM:2HZ LYM HM1 LYM:1HM LYM HM2 LYM:2HM LYM HM3 LYM:3HM LYM H LYN: HN LYN H2 LYN: HN2 LYN HB2 LYN: HB1 LYN HB3 LYN: HB2 LYN HG2 LYN: HG1 LYN HG3 LYN: HG2 LYN HD2 LYN: HD1 LYN HD3 LYN: HD2 LYN HE2 LYN: HE1 LYN HE3 LYN: HE2 LYN HNT1 LYN:H1 LYN HNT2 LYN:H2 LYN HN1 LYP:1HN LYP HN2 LYP:2HN LYP HBC1 LYP:1HBC LYP HBC2 LYP:2HBC LYP HGC1 LYP:1HGC LYP HGC2 LYP:2HGC LYP HDC1 LYP:1HDC LYP HDC2 LYP:2HDC LYP HEC1 LYP:1HEC LYP HEC2 LYP:2HEC LYP HMC1 LYP:1HMC LYP HMC2 LYP:2HMC LYP HMC3 LYP:3HMC LYP HCD1 LYP:1HCD LYP HCD2 LYP:2HCD LYP HCA1 LYP:1HCA LYP HCA2 LYP:2HCA LYP HCA3 LYP:3HCA LYP HCC1 LYP:1HCC LYP HCC2 LYP:2HCC LYP H2 LYR: HN2 LYR HB2 LYR: HB1 LYR HB3 LYR: HB2 LYR HG2 LYR: HG1 LYR HG3 LYR: HG2 LYR HD2 LYR: HD1 LYR HD3 LYR: HD2 LYR HE2 LYR: HE1 LYR HE3 LYR: HE2 LYR H11 LYR:1H1 LYR HC2 LYR: H2 LYR H41 LYR:1H4 LYR H42 LYR:2H4 LYR H43 LYR:3H4 LYR H81 LYR:1H8 LYR H82 LYR:2H8 LYR H83 LYR:3H8 LYR H131 LYR:1H13 LYR H132 LYR:2H13 LYR H133 LYR:3H13 LYR H141 LYR:1H14 LYR H142 LYR:2H14 LYR H151 LYR:1H15 LYR H152 LYR:2H15 LYR H161 LYR:1H16 LYR H162 LYR:2H16 LYR H181 LYR:1H18 LYR H182 LYR:2H18 LYR H183 LYR:3H18 LYR H191 LYR:1H19 LYR H192 LYR:2H19 LYR H193 LYR:3H19 LYR H2 LYS: HN2 LYS HB2 LYS:1HB LYS HB3 LYS:2HB LYS HG2 LYS:1HG LYS HG3 LYS:2HG LYS HD2 LYS:1HD LYS HD3 LYS:2HD LYS HE2 LYS:1HE LYS HE3 LYS:2HE LYS HZ1 LYS:1HZ LYS HZ2 LYS:2HZ LYS HZ3 LYS:3HZ LYS H11 LYT:1H1 LYT H12 LYT:2H1 LYT HN1 LYT:1HN LYT HN2 LYT:2HN LYT H21 LYT:1H2 LYT H22 LYT:2H2 LYT H31 LYT:1H3 LYT H32 LYT:2H3 LYT H41 LYT:1H4 LYT H42 LYT:2H4 LYT H43 LYT:3H4 LYT HN1 LYW:1HN LYW HN2 LYW:2HN LYW H21 LYW:1H2 LYW H22 LYW:2H2 LYW H31 LYW:1H3 LYW H32 LYW:2H3 LYW H41 LYW:1H4 LYW H42 LYW:2H4 LYW H51 LYW:1H5 LYW H52 LYW:2H5 LYW H53 LYW:3H5 LYW H61 LYX:1H6 LYX H62 LYX:2H6 LYX H81 LYX:1H8 LYX H82 LYX:2H8 LYX H83 LYX:3H8 LYX H91 LYX:1H9 LYX H92 LYX:2H9 LYX H93 LYX:3H9 LYX H141 LYX:1H14 LYX H142 LYX:2H14 LYX H151 LYX:1H15 LYX H152 LYX:2H15 LYX H181 LYX:1H18 LYX H182 LYX:2H18 LYX H191 LYX:1H19 LYX H192 LYX:2H19 LYX H211 LYX:1H21 LYX H221 LYX:1H22 LYX H222 LYX:2H22 LYX H223 LYX:3H22 LYX HE3 LYX:1HE LYX HE2 LYX:2HE LYX HD3 LYX:1HD LYX HD2 LYX:2HD LYX HG3 LYX:1HG LYX HG2 LYX:2HG LYX HB3 LYX:1HB LYX HB2 LYX:2HB LYX H2 LYX: HN2 LYX H401 LYX:1H40 LYX H402 LYX:2H40 LYX H601 LYX:1H60 LYX H602 LYX:2H60 LYX H2 LYZ: HN2 LYZ HB2 LYZ:1HB LYZ HB3 LYZ:2HB LYZ HG2 LYZ:1HG LYZ HG3 LYZ:2HG LYZ HE2 LYZ:1HE LYZ HE3 LYZ:2HE LYZ HZ1 LYZ:1HZ LYZ HZ2 LYZ:2HZ LYZ HH LYZ: HO LYZ HDK1 M0E:1HDK M0E HDK2 M0E:2HDK M0E HAU1 M0E:1HAU M0E HAU2 M0E:2HAU M0E HAS1 M0E:1HAS M0E HAS2 M0E:2HAS M0E HAS3 M0E:3HAS M0E HAT1 M0E:1HAT M0E HAT2 M0E:2HAT M0E HAH1 M0E:1HAH M0E HAH2 M0E:2HAH M0E HAH3 M0E:3HAH M0E H61 M0E:1H6 M0E H62 M0E:2H6 M0E HBO1 M0E:1HBO M0E HBO2 M0E:2HBO M0E HCB1 M0E:1HCB M0E HCB2 M0E:2HCB M0E HCB3 M0E:3HCB M0E HBZ1 M0E:1HBZ M0E HBZ2 M0E:2HBZ M0E HBZ3 M0E:3HBZ M0E H11 M0E:1H1 M0E H41 M0E:1H4 M0E H42 M0E:2H4 M0E H43 M0E:3H4 M0E H51 M0E:1H5 M0E H52 M0E:2H5 M0E H361 M0E:1H36 M0E H362 M0E:2H36 M0E H101 M0E:1H10 M0E H102 M0E:2H10 M0E H103 M0E:3H10 M0E H111 M0E:1H11 M0E H112 M0E:2H11 M0E H113 M0E:3H11 M0E H121 M0E:1H12 M0E H122 M0E:2H12 M0E H131 M0E:1H13 M0E H132 M0E:2H13 M0E H151 M0E:1H15 M0E H152 M0E:2H15 M0E H161 M0E:1H16 M0E H162 M0E:2H16 M0E H191 M0E:1H19 M0E H192 M0E:2H19 M0E H193 M0E:3H19 M0E H201 M0E:1H20 M0E H202 M0E:2H20 M0E H211 M0E:1H21 M0E H212 M0E:2H21 M0E H241 M0E:1H24 M0E H242 M0E:2H24 M0E H243 M0E:3H24 M0E H251 M0E:1H25 M0E H252 M0E:2H25 M0E H253 M0E:3H25 M0E H21 M0E:1H2 M0E HN1 M0H:1HN M0H HN2 M0H:2HN M0H HB1 M0H:1HB M0H HB2 M0H:2HB M0H HD1 M0H:1HD M0H HD2 M0H:2HD M0H H81 M0N:1H8 M0N H82 M0N:2H8 M0N H121 M13:1H12 M13 H122 M13:2H12 M13 HM1 M13:1HM M13 HM2 M13:2HM M13 HM3 M13:3HM M13 H61 M13:1H6 M13 H62 M13:2H6 M13 HN61 M1A:1HN6 M1A HN62 M1A:2HN6 M1A H11 M1A:1H1 M1A H12 M1A:2H1 M1A H13 M1A:3H1 M1A H161 M1B:1H16 M1B H162 M1B:2H16 M1B H261 M1B:1H26 M1B H262 M1B:2H26 M1B H131 M1C:1H13 M1C H132 M1C:2H13 M1C H121 M1C:1H12 M1C H122 M1C:2H12 M1C HN31 M1C:1HN3 M1C HN32 M1C:2HN3 M1C H91 M1C:1H9 M1C H92 M1C:2H9 M1C H41 M1C:1H4 M1C H42 M1C:2H4 M1C H51 M1C:1H5 M1C H52 M1C:2H5 M1C H61 M1C:1H6 M1C H62 M1C:2H6 M1C H71 M1C:1H7 M1C H72 M1C:2H7 M1C H73 M1C:3H7 M1C HOP2 M1G:2HOP M1G HOP3 M1G:3HOP M1G H5' M1G:1H5* M1G H5'' M1G:2H5* M1G H4' M1G: H4* M1G H3' M1G: H3* M1G HO3' M1G:H3T M1G H2' M1G:1H2* M1G H2'' M1G:2H2* M1G H1' M1G: H1* M1G H11 M1L:1H1 M1L H12 M1L:2H1 M1L H81 M1L:1H8 M1L H82 M1L:2H8 M1L H101 M1L:1H10 M1L H102 M1L:2H10 M1L H131 M1L:1H13 M1L H132 M1L:2H13 M1L H133 M1L:3H13 M1L H201 M1L:1H20 M1L H202 M1L:2H20 M1L H203 M1L:3H20 M1L H211 M1L:1H21 M1L H212 M1L:2H21 M1L H213 M1L:3H21 M1L H231 M1L:1H23 M1L H232 M1L:2H23 M1L H241 M1L:1H24 M1L H242 M1L:2H24 M1L H221 M1N:1H22 M1N H222 M1N:2H22 M1N H251 M1N:1H25 M1N H252 M1N:2H25 M1N H253 M1N:3H25 M1N H241 M1N:1H24 M1N H242 M1N:2H24 M1N H243 M1N:3H24 M1N H141 M1N:1H14 M1N H142 M1N:2H14 M1N H131 M1N:1H13 M1N H132 M1N:2H13 M1N H111 M1N:1H11 M1N H112 M1N:2H11 M1N H101 M1N:1H10 M1N H102 M1N:2H10 M1N H51 M1N:1H5 M1N H52 M1N:2H5 M1N H61 M1P:1H6 M1P H62 M1P:2H6 M1P H8C1 M1S:1H8C M1S H8C2 M1S:2H8C M1S H101 M1S:1H10 M1S H102 M1S:2H10 M1S H111 M1S:1H11 M1S H112 M1S:2H11 M1S H121 M1S:1H12 M1S H122 M1S:2H12 M1S H131 M1S:1H13 M1S H132 M1S:2H13 M1S H141 M1S:1H14 M1S H142 M1S:2H14 M1S H171 M1S:1H17 M1S H172 M1S:2H17 M1S H181 M1S:1H18 M1S H182 M1S:2H18 M1S HN11 M25:1HN1 M25 HN12 M25:2HN1 M25 H71 M25:1H7 M25 H72 M25:2H7 M25 H81 M25:1H8 M25 H82 M25:2H8 M25 H101 M25:1H10 M25 H102 M25:2H10 M25 H103 M25:3H10 M25 HN31 M28:1HN3 M28 HN32 M28:2HN3 M28 H71 M28:1H7 M28 H72 M28:2H7 M28 H81 M28:1H8 M28 H82 M28:2H8 M28 HN1 M29:1HN M29 HN2 M29:2HN M29 H71 M29:1H7 M29 H72 M29:2H7 M29 H81 M29:1H8 M29 H82 M29:2H8 M29 H101 M29:1H10 M29 H102 M29:2H10 M29 H111 M29:1H11 M29 H112 M29:2H11 M29 H113 M29:3H11 M29 H111 M2C:1H11 M2C H112 M2C:2H11 M2C H121 M2C:1H12 M2C H122 M2C:2H12 M2C H141 M2C:1H14 M2C H142 M2C:2H14 M2C H143 M2C:3H14 M2C H101 M2C:1H10 M2C H102 M2C:2H10 M2C HOP2 M2G:2HOP M2G HOP3 M2G:3HOP M2G H5' M2G:1H5* M2G H5'' M2G:2H5* M2G H4' M2G: H4* M2G H3' M2G: H3* M2G HO3' M2G:*HO3 M2G H2' M2G: H2* M2G HO2' M2G:*HO2 M2G H1' M2G: H1* M2G HM11 M2G:1HM1 M2G HM12 M2G:2HM1 M2G HM13 M2G:3HM1 M2G HM21 M2G:1HM2 M2G HM22 M2G:2HM2 M2G HM23 M2G:3HM2 M2G H11 M2M:1H1 M2M H12 M2M:2H1 M2M H13 M2M:3H1 M2M H21 M2M:1H2 M2M H22 M2M:2H2 M2M H31 M2M:1H3 M2M H32 M2M:2H3 M2M H41 M2M:1H4 M2M H42 M2M:2H4 M2M H51 M2M:1H5 M2M H52 M2M:2H5 M2M H61 M2M:1H6 M2M H62 M2M:2H6 M2M H63 M2M:3H6 M2M H11A M2P:1H1 M2P H12 M2P:2H1 M2P H61 M2P:1H6 M2P H62A M2P:2H6 M2P H221 M38:1H22 M38 H222 M38:2H22 M38 H231 M38:1H23 M38 H232 M38:2H23 M38 H251 M38:1H25 M38 H252 M38:2H25 M38 HN11 M3C:1HN1 M3C HN12 M3C:2HN1 M3C H101 M3C:1H10 M3C H102 M3C:2H10 M3C H111 M3C:1H11 M3C H112 M3C:2H11 M3C H131 M3C:1H13 M3C H132 M3C:2H13 M3C H133 M3C:3H13 M3C H M3L:1HN M3L H2 M3L:2HN M3L HB2 M3L:1HB M3L HB3 M3L:2HB M3L HG2 M3L:1HG M3L HG3 M3L:2HG M3L HD2 M3L:1HD M3L HD3 M3L:2HD M3L HE2 M3L:1HE M3L HE3 M3L:2HE M3L HM11 M3L:1HM1 M3L HM12 M3L:2HM1 M3L HM13 M3L:3HM1 M3L HM21 M3L:1HM2 M3L HM22 M3L:2HM2 M3L HM23 M3L:3HM2 M3L HM31 M3L:1HM3 M3L HM32 M3L:2HM3 M3L HM33 M3L:3HM3 M3L HC11 M47:1HC1 M47 HC12 M47:2HC1 M47 HD1O M47:OHD1 M47 HD2O M47:OHD2 M47 HD61 M47:1HD6 M47 HD62 M47:2HD6 M47 HN'2 M5M:2HN* M5M H7'1 M5M:1H7* M5M H7'2 M5M:2H7* M5M H7'3 M5M:3H7* M5M HOP2 M5M:2HOP M5M H5' M5M:1H5* M5M H5'' M5M:2H5* M5M H4' M5M: H4* M5M H1' M5M: H1* M5M HN41 M5M:1HN4 M5M HN42 M5M:2HN4 M5M H2' M5M: H2* M5M H3' M5M: H3* M5M HO3' M5M:H3T M5M HOP3 M5M:3HOP M5M H71 M5P:1H7 M5P H72 M5P:2H7 M5P H81 M5P:1H8 M5P H82 M5P:2H8 M5P H91 M5P:1H9 M5P H92 M5P:2H9 M5P H111 M5P:1H11 M5P H112 M5P:2H11 M5P H61 M6P:1H6 M6P H62 M6P:2H6 M6P HOP2 M6P:2HOP M6P HOP3 M6P:3HOP M6P H61 M6R:1H6 M6R H62 M6R:2H6 M6R HN21 M6R:1HN2 M6R HN22 M6R:2HN2 M6R H11 M6R:1H1 M6R H12 M6R:2H1 M6R HM21 M6T:1HM2 M6T HM22 M6T:2HM2 M6T HM23 M6T:3HM2 M6T HN41 M6T:1HN4 M6T HN42 M6T:2HN4 M6T H7'1 M6T:1H7' M6T H7'2 M6T:2H7' M6T HM41 M6T:1HM4 M6T HM42 M6T:2HM4 M6T HM43 M6T:3HM4 M6T HM61 M6T:1HM6 M6T HM62 M6T:2HM6 M6T HM63 M6T:3HM6 M6T H61 M6T:1H6 M6T H62 M6T:2H6 M6T H71 M6T:1H7 M6T H72 M6T:2H7 M6T HOA2 M6T:2HOA M6T HOB2 M6T:2HOB M6T H221 M77:1H22 M77 H222 M77:2H22 M77 H211 M77:1H21 M77 H212 M77:2H21 M77 H161 M77:1H16 M77 H162 M77:2H16 M77 H201 M77:1H20 M77 H202 M77:2H20 M77 H151 M77:1H15 M77 H152 M77:2H15 M77 HOA2 M7G:2HOA M7G HOB2 M7G:2HOB M7G HOB3 M7G:3HOB M7G H5'1 M7G:1H5* M7G H5'2 M7G:2H5* M7G H4' M7G: H4* M7G H3' M7G: H3* M7G HO3' M7G:*HO3 M7G H2' M7G: H2* M7G HO2' M7G:*HO2 M7G H1' M7G: H1* M7G H81 M7G:1H8 M7G H82 M7G:2H8 M7G HM71 M7G:1HM7 M7G HM72 M7G:2HM7 M7G HM73 M7G:3HM7 M7G HN21 M7G:1HN2 M7G HN22 M7G:2HN2 M7G H71 M7P:1H7 M7P H72 M7P:2H7 M7P HH31 M8C:1HH3 M8C HH32 M8C:2HH3 M8C HH33 M8C:3HH3 M8C H121 M98:1H12 M98 H122 M98:2H12 M98 H131 M98:1H13 M98 H132 M98:2H13 M98 H181 M98:1H18 M98 H182 M98:2H18 M98 H11 M99:1H1 M99 H121 M99:1H12 M99 H122 M99:2H12 M99 H131 M99:1H13 M99 H132 M99:2H13 M99 H88 M99:8H8 M99 H44 M99:4H4 M99 H66 M99:6H6 M99 H77 M99:7H7 M99 H99 M99:9H9 M99 H111 M99:11H1 M99 H181 M99:1H18 M99 H182 M99:2H18 M99 H220 M99:20H2 M99 H221 M99:21H2 M99 H222 M99:22H2 M99 H223 M99:23H2 M99 H131 MA0:1H13 MA0 H132 MA0:2H13 MA0 H1C1 MA0:1H1C MA0 H1C2 MA0:2H1C MA0 H2C1 MA0:1H2C MA0 H2C2 MA0:2H2C MA0 H101 MA0:1H10 MA0 H102 MA0:2H10 MA0 H103 MA0:3H10 MA0 H61 MA1:1H6 MA1 H62 MA1:2H6 MA1 H61 MA2:1H6 MA2 H62 MA2:2H6 MA2 H71 MA2:1H7 MA2 H72 MA2:2H7 MA2 H73 MA2:3H7 MA2 H61 MA3:1H6 MA3 H62 MA3:2H6 MA3 H71 MA3:1H7 MA3 H72 MA3:2H7 MA3 H73 MA3:3H7 MA3 H11 MA4:1H1 MA4 H21 MA4:1H2 MA4 H31 MA4:1H3 MA4 H41 MA4:1H4 MA4 H51 MA4:1H5 MA4 H61 MA4:1H6 MA4 H62 MA4:2H6 MA4 H101 MA4:1H10 MA4 H201 MA4:1H20 MA4 H301 MA4:1H30 MA4 H401 MA4:1H40 MA4 H501 MA4:1H50 MA4 H601 MA4:1H60 MA4 H602 MA4:2H60 MA4 H111 MA4:1H11 MA4 H112 MA4:2H11 MA4 H211 MA4:1H21 MA4 H212 MA4:2H21 MA4 H311 MA4:1H31 MA4 H312 MA4:2H31 MA4 H411 MA4:1H41 MA4 H412 MA4:2H41 MA4 H511 MA4:1H51 MA4 H512 MA4:2H51 MA4 H611 MA4:1H61 MA4 H612 MA4:2H61 MA4 H121 MA4:1H12 MA4 H221 MA4:1H22 MA4 H222 MA4:2H22 MA4 H321 MA4:1H32 MA4 H322 MA4:2H32 MA4 H421 MA4:1H42 MA4 H422 MA4:2H42 MA4 H521 MA4:1H52 MA4 H522 MA4:2H52 MA4 H621 MA4:1H62 MA4 H622 MA4:2H62 MA4 H421 MA5:1H42 MA5 H422 MA5:2H42 MA5 H321 MA5:1H32 MA5 H322 MA5:2H32 MA5 H221 MA5:1H22 MA5 H222 MA5:2H22 MA5 H121 MA5:1H12 MA5 H122 MA5:2H12 MA5 H621 MA5:1H62 MA5 H622 MA5:2H62 MA5 H611 MA5:1H61 MA5 H612 MA5:2H61 MA5 H111 MA5:1H11 MA5 H112 MA5:2H11 MA5 H601 MA5:1H60 MA5 H602 MA5:2H60 MA5 H61 MA5:1H6 MA5 H62 MA5:2H6 MA5 HOP1 MA6:1HOP MA6 HOP2 MA6:2HOP MA6 H5' MA6:1H5* MA6 H5'' MA6:2H5* MA6 H4' MA6: H4* MA6 H1' MA6: H1* MA6 H91 MA6:1H9 MA6 H92 MA6:2H9 MA6 H93 MA6:3H9 MA6 H101 MA6:1H10 MA6 H102 MA6:2H10 MA6 H103 MA6:3H10 MA6 H2' MA6: H2* MA6 HO2' MA6:*HO2 MA6 H3' MA6: H3* MA6 HO3' MA6:*HO3 MA6 HOP2 MA7:2HOP MA7 H61 MA7:1H6 MA7 H62 MA7:2H6 MA7 HN1 MA7:1HN MA7 HN2 MA7:2HN MA7 HN3 MA7:3HN MA7 H2' MA7:1H2* MA7 H2'' MA7:2H2* MA7 H5' MA7:1H5* MA7 H5'' MA7:2H5* MA7 H4' MA7: H4* MA7 H1' MA7: H1* MA7 H3' MA7: H3* MA7 HO3' MA7:H3T MA7 HOP3 MA7:3HOP MA7 H4C1 MA8:1H4C MA8 H4C2 MA8:2H4C MA8 H2N1 MA8:1H2N MA8 H2N2 MA8:2H2N MA8 H151 MA8:1H15 MA8 H152 MA8:2H15 MA8 H151 MA9:1H15 MA9 H152 MA9:2H15 MA9 H281 MA9:1H28 MA9 H282 MA9:2H28 MA9 H141 MA9:1H14 MA9 H142 MA9:2H14 MA9 H271 MA9:1H27 MA9 H272 MA9:2H27 MA9 H1 MA9:1H MA9 H2 MA9:2H MA9 H3 MA9:3H MA9 H MAA: HN MAA HM1 MAA:1HM MAA HM2 MAA:2HM MAA HM3 MAA:3HM MAA HB1 MAA:1HB MAA HB2 MAA:2HB MAA HB3 MAA:3HB MAA H6A2 MAB:2H6A MAB H6A1 MAB:1H6A MAB H2O1 MAB:1H2O MAB H3O1 MAB:1H3O MAB H6B2 MAB:2H6B MAB H6B1 MAB:1H6B MAB H2O2 MAB:2H2O MAB H3O2 MAB:2H3O MAB H4O1 MAB:1H4O MAB H1O1 MAB:1H1O MAB H21 MAC:1H2 MAC H22 MAC:2H2 MAC H23 MAC:3H2 MAC H5' MAD:1H5* MAD H5'' MAD:2H5* MAD H4' MAD: H4* MAD H3' MAD: H3* MAD H2' MAD: H2* MAD H1' MAD: H1* MAD HM11 MAD:1HM1 MAD HM12 MAD:2HM1 MAD HM13 MAD:3HM1 MAD H6C1 MAF:1H6C MAF H6C2 MAF:2H6C MAF H61 MAG:1H6 MAG H62 MAG:2H6 MAG H81 MAG:1H8 MAG H82 MAG:2H8 MAG H83 MAG:3H8 MAG HM1 MAG:1HM MAG HM2 MAG:2HM MAG HM3 MAG:3HM MAG H21 MAH:1H2 MAH H22 MAH:2H2 MAH H41 MAH:1H4 MAH H42 MAH:2H4 MAH H61 MAH:1H6 MAH H62 MAH:2H6 MAH H63 MAH:3H6 MAH HN1A MAI:1HN MAI HN2 MAI:2HN MAI HJ1 MAI:1HJ MAI HJ2 MAI:2HJ MAI HJ3 MAI:3HJ MAI HB1 MAI:1HB MAI HB2 MAI:2HB MAI HG1 MAI:1HG MAI HG2 MAI:2HG MAI HD1 MAI:1HD MAI HD2 MAI:2HD MAI HN21 MAI:1HN2 MAI HN22 MAI:2HN2 MAI H61 MAL:1H6 MAL H62 MAL:2H6 MAL H6'1 MAL:1H6' MAL H6'2 MAL:2H6' MAL HO1' MAL:'HO1 MAL HO2' MAL:'HO2 MAL HO3' MAL:'HO3 MAL HO6' MAL:'HO6 MAL H61 MAM:1H6 MAM H62 MAM:2H6 MAM H71 MAM:1H7 MAM H72 MAM:2H7 MAM H73 MAM:3H7 MAM H61 MAN:1H6 MAN H62 MAN:2H6 MAN HN1 MAO:1HN MAO HN2 MAO:2HN MAO HB1 MAO:1HB MAO HB2 MAO:2HB MAO HG1 MAO:1HG MAO HG2 MAO:2HG MAO HE1 MAO:1HE MAO HE2 MAO:2HE MAO HE3 MAO:3HE MAO H5'1 MAO:1H5* MAO H5'2 MAO:2H5* MAO H4' MAO: H4* MAO H1' MAO: H1* MAO HN61 MAO:1HN6 MAO HN62 MAO:2HN6 MAO H2' MAO: H2* MAO HO2' MAO:*HO2 MAO H3' MAO: H3* MAO HO3' MAO:*HO3 MAO HOG2 MAP:2HOG MAP HOG3 MAP:3HOG MAP HOB2 MAP:2HOB MAP HNB1 MAP:1HNB MAP H5'1 MAP:1H5* MAP H5'2 MAP:2H5* MAP H4' MAP: H4* MAP H3' MAP: H3* MAP HO3' MAP:*HO3 MAP H2' MAP: H2* MAP HO2' MAP:*HO2 MAP H1' MAP: H1* MAP HN61 MAP:1HN6 MAP HN62 MAP:2HN6 MAP H91 MAQ:1H9 MAQ H92 MAQ:2H9 MAQ H93 MAQ:3H9 MAQ H21 MAQ:1H2 MAQ H22 MAQ:2H2 MAQ H111 MAR:1H11 MAR H112 MAR:2H11 MAR HO12 MAR:2HO1 MAR H141 MAR:1H14 MAR H142 MAR:2H14 MAR H143 MAR:3H14 MAR H151 MAR:1H15 MAR H152 MAR:2H15 MAR HO17 MAR:7HO1 MAR H211 MAR:1H21 MAR H212 MAR:2H21 MAR H213 MAR:3H21 MAR H1' MAR: H1* MAR H2'1 MAR:1H2* MAR H2'2 MAR:2H2* MAR H3' MAR: H3* MAR HN'1 MAR:1HN* MAR HN'2 MAR:2HN* MAR H4' MAR: H4* MAR H5' MAR: H5* MAR H6'1 MAR:1H6* MAR H6'2 MAR:2H6* MAR H6'3 MAR:3H6* MAR HB21 MAR:1HB2 MAR HB22 MAR:2HB2 MAR HOB3 MAR:3HOB MAR HOB4 MAR:4HOB MAR HB61 MAR:1HB6 MAR HB62 MAR:2HB6 MAR HB63 MAR:3HB6 MAR H11 MAS:1H1 MAS H12 MAS:2H1 MAS H13 MAS:3H1 MAS H21 MAS:1H2 MAS H22 MAS:2H2 MAS H23 MAS:3H2 MAS H21 MAT:1H2 MAT H22 MAT:2H2 MAT H51 MAT:1H5 MAT H52 MAT:2H5 MAT H71 MAT:1H7 MAT H72 MAT:2H7 MAT H73 MAT:3H7 MAT H81 MAT:1H8 MAT H82 MAT:2H8 MAT H83 MAT:3H8 MAT H91 MAT:1H9 MAT H92 MAT:2H9 MAT H93 MAT:3H9 MAT HC5 MAU:5HC MAU HC6 MAU:6HC MAU HC02 MAU:2HC0 MAU HC42 MAU:2HC4 MAU H251 MAU:1H25 MAU H252 MAU:2H25 MAU HO4 MAU:4HO MAU HC9 MAU:9HC MAU HC01 MAU:1HC0 MAU HC11 MAU:1HC1 MAU HC21 MAU:1HC2 MAU HC31 MAU:1HC3 MAU HC41 MAU:1HC4 MAU HC51 MAU:1HC5 MAU HC61 MAU:1HC6 MAU HC71 MAU:1HC7 MAU HC91 MAU:1HC9 MAU HC22 MAU:2HC2 MAU HC32 MAU:2HC3 MAU HO51 MAU:1HO5 MAU H401 MAU:1H40 MAU H402 MAU:2H40 MAU H403 MAU:3H40 MAU H411 MAU:1H41 MAU H412 MAU:2H41 MAU H413 MAU:3H41 MAU HO61 MAU:1HO6 MAU H421 MAU:1H42 MAU H422 MAU:2H42 MAU H423 MAU:3H42 MAU H431 MAU:1H43 MAU H432 MAU:2H43 MAU H433 MAU:3H43 MAU H441 MAU:1H44 MAU H442 MAU:2H44 MAU H443 MAU:3H44 MAU HN62 MAU:2HN6 MAU H451 MAU:1H45 MAU H452 MAU:2H45 MAU H461 MAU:1H46 MAU H462 MAU:2H46 MAU H463 MAU:3H46 MAU HC82 MAU:2HC8 MAU HO92 MAU:2HO9 MAU HO3 MAU:3HO MAU HC13 MAU:3HC1 MAU HO13 MAU:3HO1 MAU H471 MAU:1H47 MAU H472 MAU:2H47 MAU H473 MAU:3H47 MAU H481 MAU:1H48 MAU H482 MAU:2H48 MAU H483 MAU:3H48 MAU HC33 MAU:3HC3 MAU HC53 MAU:3HC5 MAU HC63 MAU:3HC6 MAU HC73 MAU:3HC7 MAU HC83 MAU:3HC8 MAU H391 MAU:1H39 MAU H392 MAU:2H39 MAU H393 MAU:3H39 MAU H7C1 MAX:1H7C MAX H7C2 MAX:2H7C MAX H9C1 MAX:1H9C MAX H9C2 MAX:2H9C MAX H141 MAX:1H14 MAX H142 MAX:2H14 MAX H221 MAX:1H22 MAX H222 MAX:2H22 MAX H223 MAX:3H22 MAX H261 MAX:1H26 MAX H262 MAX:2H26 MAX H263 MAX:3H26 MAX HCM1 MAY:1HCM MAY HCM2 MAY:2HCM MAY HCM3 MAY:3HCM MAY H11 MAY:1H1 MAY H12 MAY:2H1 MAY H21 MAY:1H2 MAY H22 MAY:2H2 MAY H31 MAY:1H3 MAY H32 MAY:2H3 MAY H41 MAY:1H4 MAY H42 MAY:2H4 MAY H51 MAY:1H5 MAY H61 MAY:1H6 MAY H71 MAY:1H7 MAY H72 MAY:2H7 MAY H81 MAY:1H8 MAY H91 MAY:1H9 MAY H101 MAY:1H10 MAY H102 MAY:2H10 MAY H111 MAY:1H11 MAY H121 MAY:1H12 MAY H131 MAY:1H13 MAY H132 MAY:2H13 MAY H141 MAY:1H14 MAY H151 MAY:1H15 MAY H161 MAY:1H16 MAY H162 MAY:2H16 MAY H171 MAY:1H17 MAY H172 MAY:2H17 MAY H181 MAY:1H18 MAY H182 MAY:2H18 MAY H191 MAY:1H19 MAY H192 MAY:2H19 MAY H201 MAY:1H20 MAY H202 MAY:2H20 MAY H203 MAY:3H20 MAY H121 MAZ:1H12 MAZ H122 MAZ:2H12 MAZ H111 MAZ:1H11 MAZ H112 MAZ:2H11 MAZ HN1 MBA:1HN MBA HN2 MBA:2HN MBA H11 MBA:1H1 MBA H12 MBA:2H1 MBA H2'1 MBA:1H2' MBA H2'2 MBA:2H2' MBA H2'3 MBA:3H2' MBA H31 MBA:1H3 MBA H32 MBA:2H3 MBA H41 MBA:1H4 MBA H42 MBA:2H4 MBA H43 MBA:3H4 MBA H201 MBB:1H20 MBB H202 MBB:2H20 MBB H211 MBB:1H21 MBB H212 MBB:2H21 MBB H221 MBB:1H22 MBB H222 MBB:2H22 MBB H231 MBB:1H23 MBB H232 MBB:2H23 MBB H241 MBB:1H24 MBB H242 MBB:2H24 MBB H243 MBB:3H24 MBB HN11 MBB:1HN1 MBB HN12 MBB:2HN1 MBB HN13 MBB:3HN1 MBB HN21 MBB:1HN2 MBB HN22 MBB:2HN2 MBB HN23 MBB:3HN2 MBB H251 MBB:1H25 MBB H252 MBB:2H25 MBB H253 MBB:3H25 MBB H241 MBC:1H24 MBC H242 MBC:2H24 MBC H261 MBC:1H26 MBC H262 MBC:2H26 MBC HB31 MBD:1HB3 MBD HB32 MBD:2HB3 MBD HB33 MBD:3HB3 MBD H6C1 MBF:1H6C MBF H6C2 MBF:2H6C MBF H61 MBG:1H6 MBG H62 MBG:2H6 MBG H71 MBG:1H7 MBG H72 MBG:2H7 MBG H73 MBG:3H7 MBG HN21 MBH:1HN2 MBH HN22 MBH:2HN2 MBH H1 MBH:1H MBH H2A MBH:2H MBH H1M1 MBH:1H1M MBH H1M2 MBH:2H1M MBH H1M3 MBH:3H1M MBH HA21 MBH:1HA2 MBH HA22 MBH:2HA2 MBH H1 MBN:1H MBN H2A MBN:2H MBN H3A MBN:3H MBN H3'1 MBP:1H3* MBP H3'2 MBP:2H3* MBP H3'3 MBP:3H3* MBP H2' MBP: H2* MBP H121 MBP:1H12 MBP H122 MBP:2H12 MBP H123 MBP:3H12 MBP H2N1 MBP:1H2N MBP H2N2 MBP:2H2N MBP H601 MBP:1H60 MBP H602 MBP:2H60 MBP H2 MBQ: HN MBQ HB2 MBQ: HB1 MBQ HB3 MBQ: HB2 MBQ HAE1 MBQ:1HAE MBQ HAE2 MBQ:2HAE MBQ HAK3 MBQ:3HAK MBQ HAK2 MBQ:2HAK MBQ HAK1 MBQ:1HAK MBQ H51 MBS:1H5 MBS H52 MBS:2H5 MBS H53 MBS:3H5 MBS H161 MBS:1H16 MBS H162 MBS:2H16 MBS H31 MBS:1H3 MBS H32 MBS:2H3 MBS H21 MBS:1H2 MBS HO11 MBS:1HO1 MBS H221 MBS:1H22 MBS H231 MBS:1H23 MBS H251 MBS:1H25 MBS H261 MBS:1H26 MBS H321 MBS:1H32 MBS H331 MBS:1H33 MBS H351 MBS:1H35 MBS H361 MBS:1H36 MBS H71 MBS:1H7 MBS H72 MBS:2H7 MBS H73 MBS:3H7 MBS H191 MBT:1H19 MBT H192 MBT:2H19 MBT H193 MBT:3H19 MBT H201 MBT:1H20 MBT H202 MBT:2H20 MBT H203 MBT:3H20 MBT H161 MBT:1H16 MBT H162 MBT:2H16 MBT H163 MBT:3H16 MBT H171 MBT:1H17 MBT H172 MBT:2H17 MBT H173 MBT:3H17 MBT H1A1 MBV:1H1A MBV H1A2 MBV:2H1A MBV H1A3 MBV:3H1A MBV H2A1 MBV:1H2A MBV H2A2 MBV:2H2A MBV H1B1 MBV:1H1B MBV H1B2 MBV:2H1B MBV H6B1 MBV:1H6B MBV H6B2 MBV:2H6B MBV H6B3 MBV:3H6B MBV H6C1 MBV:1H6C MBV H6C2 MBV:2H6C MBV H6C3 MBV:3H6C MBV H1C1 MBV:1H1C MBV H1C2 MBV:2H1C MBV H2D1 MBV:1H2D MBV H2D2 MBV:2H2D MBV H1D1 MBV:1H1D MBV H1D2 MBV:2H1D MBV H1D3 MBV:3H1D MBV H3A1 MBV:1H3A MBV H3A2 MBV:2H3A MBV H3A3 MBV:3H3A MBV H2B1 MBV:1H2B MBV H2B2 MBV:2H2B MBV H2C1 MBV:1H2C MBV H2C2 MBV:2H2C MBV H3D1 MBV:1H3D MBV H3D2 MBV:2H3D MBV H3D3 MBV:3H3D MBV HOP2 MBZ:2HOP MBZ HOP3 MBZ:3HOP MBZ HO'3 MBZ:3HO* MBZ H1' MBZ: H1* MBZ H2' MBZ:1H2* MBZ H2'' MBZ:2H2* MBZ H3' MBZ: H3* MBZ H4' MBZ: H4* MBZ H5' MBZ:1H5* MBZ H5'' MBZ:2H5* MBZ H71 MBZ:1H5M MBZ H72 MBZ:2H5M MBZ H73 MBZ:3H5M MBZ H111 MC:1H11 MC H112 MC:2H11 MC H113 MC:3H11 MC H71 MC:1H7 MC H72 MC:2H7 MC H101 MC:1H10 MC H102 MC:2H10 MC H141 MC:1H14 MC H142 MC:2H14 MC H31 MC:1H3 MC H32 MC:2H3 MC H11 MC:1H1 MC H12 MC:2H1 MC H241 MC1:H1 MC1 H242 MC1:H2 MC1 H243 MC1:H3 MC1 H MC1: H25 MC1 H2 MC1: H26 MC1 HB2 MC1: H22 MC1 HB3 MC1: H23 MC1 H121 MC2:1H12 MC2 H122 MC2:2H12 MC2 H131 MC2:1H13 MC2 H132 MC2:2H13 MC2 H141 MC2:1H14 MC2 H142 MC2:2H14 MC2 HN41 MC2:1HN4 MC2 HN42 MC2:2HN4 MC2 HN11 MC2:1HN1 MC2 HN12 MC2:2HN1 MC2 H31 MC2:1H3 MC2 H32 MC2:2H3 MC2 H11 MC3:1H1 MC3 H12 MC3:2H1 MC3 H31 MC3:1H3 MC3 H32 MC3:2H3 MC3 H41 MC3:1H4 MC3 H42 MC3:2H4 MC3 H51 MC3:1H5 MC3 H52 MC3:2H5 MC3 H61 MC3:1H6 MC3 H62 MC3:2H6 MC3 H63 MC3:3H6 MC3 H71 MC3:1H7 MC3 H72 MC3:2H7 MC3 H73 MC3:3H7 MC3 H81 MC3:1H8 MC3 H82 MC3:2H8 MC3 H83 MC3:3H8 MC3 H121 MC3:1H12 MC3 H122 MC3:2H12 MC3 H131 MC3:1H13 MC3 H132 MC3:2H13 MC3 H141 MC3:1H14 MC3 H142 MC3:2H14 MC3 H151 MC3:1H15 MC3 H152 MC3:2H15 MC3 H161 MC3:1H16 MC3 H162 MC3:2H16 MC3 H171 MC3:1H17 MC3 H172 MC3:2H17 MC3 H181 MC3:1H18 MC3 H182 MC3:2H18 MC3 H191 MC3:1H19 MC3 H192 MC3:2H19 MC3 H201 MC3:1H20 MC3 H202 MC3:2H20 MC3 H211 MC3:1H21 MC3 H212 MC3:2H21 MC3 H221 MC3:1H22 MC3 H222 MC3:2H22 MC3 H231 MC3:1H23 MC3 H232 MC3:2H23 MC3 H241 MC3:1H24 MC3 H242 MC3:2H24 MC3 H243 MC3:3H24 MC3 H321 MC3:1H32 MC3 H322 MC3:2H32 MC3 H331 MC3:1H33 MC3 H332 MC3:2H33 MC3 H341 MC3:1H34 MC3 H342 MC3:2H34 MC3 H351 MC3:1H35 MC3 H352 MC3:2H35 MC3 H361 MC3:1H36 MC3 H362 MC3:2H36 MC3 H371 MC3:1H37 MC3 H372 MC3:2H37 MC3 H381 MC3:1H38 MC3 H382 MC3:2H38 MC3 H391 MC3:1H39 MC3 H392 MC3:2H39 MC3 H401 MC3:1H40 MC3 H402 MC3:2H40 MC3 H411 MC3:1H41 MC3 H412 MC3:2H41 MC3 H421 MC3:1H42 MC3 H422 MC3:2H42 MC3 H431 MC3:1H43 MC3 H432 MC3:2H43 MC3 H441 MC3:1H44 MC3 H442 MC3:2H44 MC3 H443 MC3:3H44 MC3 H21 MC9:1H2 MC9 H22A MC9:2H2 MC9 H41 MC9:1H4 MC9 H42 MC9:2H4 MC9 H91 MC9:1H9 MC9 H92 MC9:2H9 MC9 H111 MC9:1H11 MC9 H112 MC9:2H11 MC9 H121 MC9:1H12 MC9 H122 MC9:2H12 MC9 H151 MC9:1H15 MC9 H152 MC9:2H15 MC9 H161 MC9:1H16 MC9 H162 MC9:2H16 MC9 H181 MC9:1H18 MC9 H182 MC9:2H18 MC9 H183 MC9:3H18 MC9 H191 MC9:1H19 MC9 H192 MC9:2H19 MC9 H211 MC9:1H21 MC9 H212 MC9:2H21 MC9 H213 MC9:3H21 MC9 H261 MC9:1H26 MC9 H262 MC9:2H26 MC9 H271 MC9:1H27 MC9 H272 MC9:2H27 MC9 HN61 MCA:1HN6 MCA HN62 MCA:2HN6 MCA HO2' MCA:'HO2 MCA H5'1 MCA:1H5' MCA H5'2 MCA:2H5' MCA HPB1 MCA:1HPB MCA HPB2 MCA:2HPB MCA H91 MCA:1H9 MCA H92 MCA:2H9 MCA H93 MCA:3H9 MCA H81 MCA:1H8 MCA H82 MCA:2H8 MCA H83 MCA:3H8 MCA H51 MCA:1H5 MCA H52 MCA:2H5 MCA H41 MCA:1H4 MCA H42 MCA:2H4 MCA H21 MCA:1H2 MCA H22 MCA:2H2 MCA H11 MCA:1H1 MCA H12 MCA:2H1 MCA H31 MCA:1H3 MCA H32 MCA:2H3 MCA H33 MCA:3H3 MCA HA1A MCB:1HA MCB H7A1 MCC:1H7A MCC H7A2 MCC:2H7A MCC H7A3 MCC:3H7A MCC H1AC MCC:CH1A MCC H2AC MCC:CH2A MCC H2AO MCC:OH2A MCC H3AC MCC:CH3A MCC H3AO MCC:OH3A MCC H4AC MCC:CH4A MCC H5AC MCC:CH5A MCC H6A1 MCC:1H6A MCC H6A2 MCC:2H6A MCC H6AO MCC:OH6A MCC H2BC MCC:CH2B MCC H2BO MCC:OH2B MCC H3BC MCC:CH3B MCC H3BO MCC:OH3B MCC H4BC MCC:CH4B MCC H5BC MCC:CH5B MCC H5BN MCC:NH5B MCC H6B1 MCC:1H6B MCC H6B2 MCC:2H6B MCC H6BO MCC:OH6B MCC H1CC MCC:CH1C MCC H2C1 MCC:1H2C MCC H2CO MCC:OH2C MCC H3C1 MCC:1H3C MCC H3CO MCC:OH3C MCC H4C1 MCC:1H4C MCC H4CO MCC:OH4C MCC H5C1 MCC:1H5C MCC H6C1 MCC:1H6C MCC H6C2 MCC:2H6C MCC H6CO MCC:OH6C MCC HN61 MCD:1HN6 MCD HN62 MCD:2HN6 MCD HO2' MCD:'HO2 MCD H5'1 MCD:1H5' MCD H5'2 MCD:2H5' MCD HPB1 MCD:1HPB MCD HPB2 MCD:2HPB MCD HP91 MCD:1HP9 MCD HP92 MCD:2HP9 MCD HP93 MCD:3HP9 MCD HP81 MCD:1HP8 MCD HP82 MCD:2HP8 MCD HP83 MCD:3HP8 MCD HOP3 MCD:3HOP MCD HNP2 MCD:2HNP MCD HP51 MCD:1HP5 MCD HP52 MCD:2HP5 MCD HP41 MCD:1HP4 MCD HP42 MCD:2HP4 MCD HNP1 MCD:1HNP MCD HP21 MCD:1HP2 MCD HP22 MCD:2HP2 MCD HP11 MCD:1HP1 MCD HP12 MCD:2HP1 MCD HPS1 MCD:1HPS MCD HPS2 MCD:2HPS MCD HS31 MCD:1HS3 MCD HS32 MCD:2HS3 MCD HS33 MCD:3HS3 MCD HOS5 MCD:5HOS MCD H11 MCE:1H1 MCE H12 MCE:2H1 MCE H13 MCE:3H1 MCE H21 MCE:1H2 MCE H22 MCE:2H2 MCE H MCG:1HN MCG H2 MCG:2HN MCG HH2 MCG: HO2 MCG HM1 MCG:1HM MCG HM2 MCG:2HM MCG HM3 MCG:3HM MCG H11 MCI:1H1 MCI H31 MCI:1H3 MCI H41 MCI:1H4 MCI H51 MCI:1H5 MCI H61 MCI:1H6 MCI H121 MCI:1H12 MCI H122 MCI:2H12 MCI H131 MCI:1H13 MCI H132 MCI:2H13 MCI H161 MCI:1H16 MCI H191 MCI:1H19 MCI H192 MCI:2H19 MCI H331 MCI:1H33 MCI H341 MCI:1H34 MCI H371 MCI:1H37 MCI H372 MCI:2H37 MCI H411 MCI:1H41 MCI H MCL:1HN MCL H2 MCL:2HN MCL HB2 MCL:1HB MCL HB3 MCL:2HB MCL HG2 MCL:1HG MCL HG3 MCL:2HG MCL HD2 MCL:1HD MCL HD3 MCL:2HD MCL HE2 MCL:1HE MCL HE3 MCL:2HE MCL HZ MCL: HNZ MCL H11 MCL:1H1 MCL H12 MCL:2H1 MCL H13 MCL:3H1 MCL HN1 MCM:1HN MCM HN2 MCM:2HN MCM H101 MCM:1H10 MCM H102 MCM:2H10 MCM H103 MCM:3H10 MCM HN41 MCN:1HN4 MCN HN42 MCN:2HN4 MCN H1' MCN: H1* MCN H2' MCN: H2* MCN HO2' MCN:*HO2 MCN H3' MCN: H3* MCN H4' MCN: H4* MCN HO3' MCN:*HO3 MCN H5'1 MCN:1H5* MCN H5'2 MCN:2H5* MCN HOA2 MCN:2HOA MCN HOB2 MCN:2HOB MCN H101 MCN:1H10 MCN H102 MCN:2H10 MCN HN21 MCN:1HN2 MCN HN22 MCN:2HN2 MCN HO31 MCO:1HO3 MCO HC81 MCO:1HC8 MCO HC71 MCO:1HC7 MCO HC72 MCO:2HC7 MCO HC61 MCO:1HC6 MCO HC62 MCO:2HC6 MCO HC51 MCO:1HC5 MCO HC52 MCO:2HC5 MCO HC21 MCO:1HC2 MCO HC31 MCO:1HC3 MCO HC32 MCO:2HC3 MCO HC33 MCO:3HC3 MCO HC11 MCO:1HC1 MCO HC12 MCO:2HC1 MCO HS1 MCO:1HS MCO H21 MCP:1H2 MCP H22 MCP:2H2 MCP H41 MCP:1H4 MCP H42 MCP:2H4 MCP H51 MCP:1H5 MCP H52 MCP:2H5 MCP H71 MCP:1H7 MCP H72 MCP:2H7 MCP H73 MCP:3H7 MCP H21 MCR:1H2 MCR H22 MCR:2H2 MCR HN1 MCS:1HN MCS HN2 MCS:2HN MCS HBC1 MCS:1HBC MCS HBC2 MCS:2HBC MCS HAG1 MCS:1HAG MCS HAG2 MCS:2HAG MCS H1 MCT:1H MCT H2A MCT:2H MCT H3 MCT:3H MCT HN41 MCY:1HN4 MCY HN42 MCY:2HN4 MCY H1' MCY: H1* MCY H2' MCY:1H2* MCY H2'' MCY:2H2* MCY H3' MCY: H3* MCY H4' MCY: H4* MCY HO3' MCY:*HO3 MCY H5' MCY:1H5* MCY H5'' MCY:2H5* MCY HO5' MCY:*HO5 MCY H5A1 MCY:1H5A MCY H5A2 MCY:2H5A MCY H5A3 MCY:3H5A MCY H101 MD1:1H10 MD1 H102 MD1:2H10 MD1 H161 MD1:1H16 MD1 H162 MD1:2H16 MD1 H5'1 MD1:1H5* MD1 H5'2 MD1:2H5* MD1 H4' MD1: H4* MD1 H1' MD1: H1* MD1 HN21 MD1:1HN2 MD1 HN22 MD1:2HN2 MD1 H2' MD1: H2* MD1 H3' MD1: H3* MD1 HC11 MD2:1HC1 MD2 HC1A MD2:2HC1 MD2 HC61 MD2:1HC6 MD2 HC62 MD2:2HC6 MD2 HC71 MD2:1HC7 MD2 HC72 MD2:2HC7 MD2 H111 MD2:1H11 MD2 H112 MD2:2H11 MD2 HC41 MD2:1HC4 MD2 HC42 MD2:2HC4 MD2 HC81 MD2:1HC8 MD2 HC82 MD2:2HC8 MD2 HC91 MD2:1HC9 MD2 HC92 MD2:2HC9 MD2 H141 MD2:1H14 MD2 H142 MD2:2H14 MD2 H21 MDA:1H2 MDA H22 MDA:2H2 MDA H61 MDA:1H6 MDA H62 MDA:2H6 MDA H63 MDA:3H6 MDA H3'1 MDA:1H3' MDA H3'2 MDA:2H3' MDA H3'3 MDA:3H3' MDA H11 MDC:1H1 MDC H12 MDC:2H1 MDC H21 MDC:1H2 MDC H22 MDC:2H2 MDC H191 MDC:1H19 MDC H192 MDC:2H19 MDC H201 MDC:1H20 MDC H202 MDC:2H20 MDC H203 MDC:3H20 MDC H211 MDC:1H21 MDC H212 MDC:2H21 MDC H221 MDC:1H22 MDC H222 MDC:2H22 MDC H223 MDC:3H22 MDC HA61 MDD:1HA6 MDD HA62 MDD:2HA6 MDD H5'1 MDE:1H5* MDE H5'2 MDE:2H5* MDE H4' MDE: H4* MDE H1' MDE: H1* MDE HN61 MDE:1HN6 MDE HN62 MDE:2HN6 MDE H7' MDE: H7* MDE H8' MDE: H8* MDE H121 MDE:1H12 MDE H122 MDE:2H12 MDE H131 MDE:1H13 MDE H132 MDE:2H13 MDE H133 MDE:3H13 MDE H141 MDE:1H14 MDE H142 MDE:2H14 MDE H143 MDE:3H14 MDE H71 MDE:1H7 MDE H72 MDE:2H7 MDE H61 MDE:1H6 MDE H62 MDE:2H6 MDE H31 MDE:1H3 MDE H32 MDE:2H3 MDE H21 MDE:1H2 MDE H22 MDE:2H2 MDE H2' MDE: H2* MDE H3' MDE: H3* MDE H4'1 MDE:1H4* MDE H4'2 MDE:2H4* MDE H5' MDE: H5* MDE HB1 MDE:1HB MDE HB2 MDE:2HB MDE HB11 MDE:HB1 MDE H6'1 MDE:1H6* MDE H6'2 MDE:2H6* MDE H7'1 MDE:1H7* MDE H7'2 MDE:2H7* MDE H8'1 MDE:1H8* MDE H8'2 MDE:2H8* MDE H9'1 MDE:1H9* MDE H9'2 MDE:2H9* MDE H101 MDE:1H10 MDE H102 MDE:2H10 MDE H103 MDE:3H10 MDE H2 MDF: H2N MDF H31 MDF:1H3 MDF H32 MDF:2H3 MDF H33 MDF:3H3 MDF HOB2 MDG:2HOB MDG HOB3 MDG:3HOB MDG HOA2 MDG:2HOA MDG H5'1 MDG:1H5* MDG H5'2 MDG:2H5* MDG H4' MDG: H4* MDG H3' MDG: H3* MDG HO3' MDG:*HO3 MDG H2' MDG: H2* MDG HO2' MDG:*HO2 MDG H1' MDG: H1* MDG H81 MDG:1H8 MDG H82 MDG:2H8 MDG HM71 MDG:1HM7 MDG HM72 MDG:2HM7 MDG HM73 MDG:3HM7 MDG HN21 MDG:1HN2 MDG HN22 MDG:2HN2 MDG H MDH: HN MDH HM1 MDH:1HM MDH HM2 MDH:2HM MDH HM3 MDH:3HM MDH HG1 MDH:1HG MDH HG2 MDH:2HG MDH HG3 MDH:3HG MDH H11 MDL:1H1 MDL H12 MDL:2H1 MDL H13 MDL:3H1 MDL H111 MDL:1H11 MDL H112 MDL:2H11 MDL H121 MDL:1H12 MDL H122 MDL:2H12 MDL H151 MDL:1H15 MDL H152 MDL:2H15 MDL H261 MDL:1H26 MDL H262 MDL:2H26 MDL HN33 MDL:3HN3 MDL H551 MDL:1H55 MDL H552 MDL:2H55 MDL H61 MDM:1H6 MDM H62 MDM:2H6 MDM H6'1 MDM:1H6' MDM H6'2 MDM:2H6' MDM H7'1 MDM:1H7' MDM H7'2 MDM:2H7' MDM H7'3 MDM:3H7' MDM HO2' MDM:'HO2 MDM HO4' MDM:'HO4 MDM HO6' MDM:'HO6 MDM HO3 MDN:3HO MDN HO2 MDN:2HO MDN H41 MDN:1H4 MDN H42 MDN:2H4 MDN HO7 MDN:7HO MDN HO8 MDN:8HO MDN H MDO:1HN MDO H2 MDO:2HN MDO HB1 MDO:1HC MDO HB2 MDO:2HC MDO HB3 MDO:3HC MDO HB21 MDO:1HB2 MDO HB22 MDO:2HB2 MDO HB23 MDO:3HB2 MDO HA31 MDO:1HA3 MDO HA32 MDO:2HA3 MDO H61 MDP:1H6 MDP H62 MDP:2H6 MDP H91 MDP:1H9 MDP H92 MDP:2H9 MDP H93 MDP:3H9 MDP H111 MDP:1H11 MDP H112 MDP:2H11 MDP H113 MDP:3H11 MDP H6'1 MDR:1H6' MDR H6'2 MDR:2H6' MDR H6'3 MDR:3H6' MDR H2'1 MDR:1H2' MDR H2'2 MDR:2H2' MDR H5'1 MDR:1H5' MDR H5'2 MDR:2H5' MDR H41 MDS:1H4 MDS H42 MDS:2H4 MDS HN31 MDS:1HN3 MDS HN32 MDS:2HN3 MDS H71 MDS:1H7 MDS H72 MDS:2H7 MDS H81 MDS:1H8 MDS H82 MDS:2H8 MDS H91 MDS:1H9 MDS H92 MDS:2H9 MDS H93 MDS:3H9 MDS HN81 MDS:1HN8 MDS HN82 MDS:2HN8 MDS HOB2 MDT:2HOB MDT HOB3 MDT:3HOB MDT HO2 MDT:2HO MDT H5'1 MDT:1H5* MDT H5'2 MDT:2H5* MDT H4' MDT: H4* MDT H'1 MDT:1H* MDT H2'1 MDT:1H2* MDT H2'2 MDT:2H2* MDT H'3 MDT:3H* MDT HO3' MDT:HO3* MDT H28 MDW:8H2 MDW H27 MDW:7H2 MDW H35 MDW:5H3 MDW H36 MDW:6H3 MDW H37 MDW:7H3 MDW H29 MDW:9H2 MDW H30 MDW:0H3 MDW H38 MDW:8H3 MDW H39 MDW:9H3 MDW H31 MDW:1H3 MDW H32 MDW:2H3 MDW H33 MDW:3H3 MDW H34 MDW:4H3 MDW H48 MDW:8H4 MDW H42 MDW:2H4 MDW H45 MDW:5H4 MDW H46 MDW:6H4 MDW H47 MDW:7H4 MDW H43 MDW:3H4 MDW H44 MDW:4H4 MDW H101 MDX:1H10 MDX H102 MDX:2H10 MDX H91 MDX:1H9 MDX H92 MDX:2H9 MDX H81 MDX:1H8 MDX H82 MDX:2H8 MDX H71 MDX:1H7 MDX H72 MDX:2H7 MDX H61 MDX:1H6 MDX H62 MDX:2H6 MDX H51 MDX:1H5 MDX H52 MDX:2H5 MDX H41 MDX:1H4 MDX H42 MDX:2H4 MDX H31 MDX:1H3 MDX H32 MDX:2H3 MDX H21 MDX:1H2 MDX H22 MDX:2H2 MDX H11 MDX:1H1 MDX H12 MDX:2H1 MDX H251 MDZ:1H25 MDZ H252 MDZ:2H25 MDZ H253 MDZ:3H25 MDZ H7C1 MDZ:1H7C MDZ H7C2 MDZ:2H7C MDZ H4C1 MDZ:1H4C MDZ H4C2 MDZ:2H4C MDZ H3C1 MDZ:1H3C MDZ H3C2 MDZ:2H3C MDZ H141 MDZ:1H14 MDZ H142 MDZ:2H14 MDZ H371 MDZ:1H37 MDZ H372 MDZ:2H37 MDZ H373 MDZ:3H37 MDZ H331 MDZ:1H33 MDZ H332 MDZ:2H33 MDZ H333 MDZ:3H33 MDZ H91 ME1:1H9 ME1 H92 ME1:2H9 ME1 H101 ME1:1H10 ME1 H102 ME1:2H10 ME1 H71 ME2:1H7 ME2 H72 ME2:2H7 ME2 H73 ME2:3H7 ME2 H61 ME2:1H6 ME2 H62 ME2:2H6 ME2 H51 ME2:1H5 ME2 H52 ME2:2H5 ME2 H41 ME2:1H4 ME2 H42 ME2:2H4 ME2 H31 ME2:1H3 ME2 H32 ME2:2H3 ME2 H21 ME2:1H2 ME2 H22 ME2:2H2 ME2 H11 ME2:1H1 ME2 H12 ME2:2H1 ME2 H13 ME2:3H1 ME2 H251 ME3:1H25 ME3 H252 ME3:2H25 ME3 H261 ME3:1H26 ME3 H262 ME3:2H26 ME3 H263 ME3:3H26 ME3 H8C1 ME3:1H8C ME3 H9C1 ME3:1H9C ME3 H5C1 ME3:1H5C ME3 H4C1 ME3:1H4C ME3 H21 ME4:1H2 ME4 H22 ME4:2H2 ME4 H31A ME4:1H3 ME4 H32A ME4:2H3 ME4 H41 ME4:1H4 ME4 H42 ME4:2H4 ME4 H51 ME4:1H5 ME4 H52 ME4:2H5 ME4 H81 ME5:1H8 ME5 H82 ME5:2H8 ME5 H101 ME5:1H10 ME5 H102 ME5:2H10 ME5 H121 ME5:1H12 ME5 H122 ME5:2H12 ME5 H1C1 MEA:1H1C MEA H1C2 MEA:2H1C MEA H1C3 MEA:3H1C MEA H'C1 MEA:1H'C MEA H'C2 MEA:2H'C MEA H21 MEB:1H2 MEB H31 MEB:1H3 MEB H32 MEB:2H3 MEB H1'1 MEB:1H1' MEB H1'2 MEB:2H1' MEB H1'3 MEB:3H1' MEB H23 MEC:3H2 MEC H22 MEC:2H2 MEC H21 MEC:1H2 MEC H42 MEC:2H4 MEC H41 MEC:1H4 MEC H53 MEC:3H5 MEC H52 MEC:2H5 MEC H51 MEC:1H5 MEC H2 MED: HN2 MED HB2 MED:1HB MED HB3 MED:2HB MED HG2 MED:1HG MED HG3 MED:2HG MED HE1 MED:1HE MED HE2 MED:2HE MED HE3 MED:3HE MED H1 MEE:1H MEE H2 MEE:2H MEE H3 MEE:3H MEE H2 MEG: HN2 MEG HG2 MEG:1HG MEG HG3 MEG:2HG MEG H11 MEG:1H1 MEG H12 MEG:2H1 MEG H13 MEG:3H1 MEG HE2 MEG: HO1 MEG H11A MEI:1H1 MEI H12A MEI:2H1 MEI H13 MEI:3H1 MEI H31 MEI:1H3 MEI H32 MEI:2H3 MEI H33 MEI:3H3 MEI H41 MEI:1H4 MEI H42 MEI:2H4 MEI H43 MEI:3H4 MEI H51 MEI:1H5 MEI H52 MEI:2H5 MEI H61 MEI:1H6 MEI H62 MEI:2H6 MEI H71 MEI:1H7 MEI H72 MEI:2H7 MEI H91 MEI:1H9 MEI H92 MEI:2H9 MEI H93 MEI:3H9 MEI H101 MEI:1H10 MEI H102 MEI:2H10 MEI H141 MEI:1H14 MEI H142 MEI:2H14 MEI H143 MEI:3H14 MEI H11 MEL:1H1 MEL H21 MEL:1H2 MEL H22 MEL:2H2 MEL H31 MEL:1H3 MEL H32 MEL:2H3 MEL H41 MEL:1H4 MEL H42 MEL:2H4 MEL H51 MEL:1H5 MEL H52 MEL:2H5 MEL H61 MEL:1H6 MEL H62 MEL:2H6 MEL H71 MEL:1H7 MEL H81 MEL:1H8 MEL H121 MEL:1H12 MEL H151 MEL:1H15 MEL H161 MEL:1H16 MEL H162 MEL:2H16 MEL H181 MEL:1H18 MEL H191 MEL:1H19 MEL H211 MEL:1H21 MEL H221 MEL:1H22 MEL H241 MEL:1H24 MEL H251 MEL:1H25 MEL H252 MEL:2H25 MEL H261 MEL:1H26 MEL H262 MEL:2H26 MEL H271 MEL:1H27 MEL H272 MEL:2H27 MEL H281 MEL:1H28 MEL H282 MEL:2H28 MEL H301 MEL:1H30 MEL H2 MEN: HN2 MEN HB2 MEN:1HB MEN HB3 MEN:2HB MEN HE21 MEN:1HE2 MEN HE22 MEN:2HE2 MEN HE23 MEN:3HE2 MEN HOP2 MEP:2HOP MEP HOP3 MEP:3HOP MEP H5' MEP:1H5* MEP H5'' MEP:2H5* MEP H4' MEP: H4* MEP H3' MEP: H3* MEP HO3' MEP:H3T MEP H3T2 MEP:2H3T MEP H3T3 MEP:3H3T MEP H2' MEP: H2* MEP H1' MEP: H1* MEP H71 MEP:1H5M MEP H72 MEP:2H5M MEP H73 MEP:3H5M MEP HA'1 MEP:1HA* MEP HA'2 MEP:2HA* MEP HA'3 MEP:3HA* MEP H2 MEQ: HN2 MEQ HB2 MEQ:1HB MEQ HB3 MEQ:2HB MEQ HG2 MEQ:1HG MEQ HG3 MEQ:2HG MEQ HE21 MEQ:1HE2 MEQ HE1 MEQ:1HE MEQ HE2 MEQ:2HE MEQ HE3 MEQ:3HE MEQ HC2 MER:2HC MER HC6 MER:6HC MER HC5 MER:5HC MER HC16 MER:6HC1 MER HO26 MER:6HO2 MER H621 MER:1H62 MER H622 MER:2H62 MER H623 MER:3H62 MER HO23 MER:3HO2 MER HCA1 MER:1HCA MER H4A1 MER:1H4A MER H4A2 MER:2H4A MER HCA5 MER:5HCA MER HC1 MER:1HC MER HNA3 MER:3HNA MER H111 MER:1H11 MER H112 MER:2H11 MER H113 MER:3H11 MER H2A1 MER:1H2A MER H2A2 MER:2H2A MER H8A1 MER:1H8A MER H8A2 MER:2H8A MER H8A3 MER:3H8A MER H9A1 MER:1H9A MER H9A2 MER:2H9A MER H9A3 MER:3H9A MER H21 MES:1H2 MES H22 MES:2H2 MES H31 MES:1H3 MES H32 MES:2H3 MES H51 MES:1H5 MES H52 MES:2H5 MES H61 MES:1H6 MES H62 MES:2H6 MES H71 MES:1H7 MES H72 MES:2H7 MES H81 MES:1H8 MES H82 MES:2H8 MES H2 MET: HN2 MET HB2 MET:1HB MET HB3 MET:2HB MET HG2 MET:1HG MET HG3 MET:2HG MET HE1 MET:1HE MET HE2 MET:2HE MET HE3 MET:3HE MET HB1 MEU:1HB MEU HB2 MEU:2HB MEU HB3 MEU:3HB MEU H MEU:1HN MEU H2 MEU:2HN MEU HA1 MEU:1HA MEU HA2 MEU:2HA MEU H81 MEV:1H8 MEV H82 MEV:2H8 MEV H21 MEV:1H2 MEV H22 MEV:2H2 MEV H41 MEV:1H4 MEV H42 MEV:2H4 MEV H61 MEV:1H6 MEV H62 MEV:2H6 MEV H63 MEV:3H6 MEV H41 MEZ:1H4 MEZ H42 MEZ:2H4 MEZ H43 MEZ:3H4 MEZ H21 MF2:1H2 MF2 H22 MF2:2H2 MF2 H71 MF2:1H7 MF2 H72 MF2:2H7 MF2 H73 MF2:3H7 MF2 H81 MF2:1H8 MF2 H82 MF2:2H8 MF2 H83 MF2:3H8 MF2 H91 MF2:1H9 MF2 H92 MF2:2H9 MF2 H101 MF2:1H10 MF2 H102 MF2:2H10 MF2 H111 MF2:1H11 MF2 H112 MF2:2H11 MF2 H121 MF2:1H12 MF2 H122 MF2:2H12 MF2 H131 MF2:1H13 MF2 H132 MF2:2H13 MF2 H141 MF2:1H14 MF2 H142 MF2:2H14 MF2 H151 MF2:1H15 MF2 H152 MF2:2H15 MF2 H161 MF2:1H16 MF2 H162 MF2:2H16 MF2 H61 MF2:1H6 MF2 H62 MF2:2H6 MF2 H2 MF3: HN2 MF3 HB2 MF3:1HB MF3 HB3 MF3:2HB MF3 HG2 MF3:1HG MF3 HG3 MF3:2HG MF3 HM1 MFA:1HM MFA HM2 MFA:2HM MFA HM3 MFA:3HM MFA H61 MFA:1H6 MFA H62 MFA:2H6 MFA H63 MFA:3H6 MFA H61 MFB:1H6 MFB H62 MFB:2H6 MFB H63 MFB:3H6 MFB HM1 MFB:1HM MFB HM2 MFB:2HM MFB HM3 MFB:3HM MFB HG11 MFC:1HG1 MFC HG12 MFC:2HG1 MFC HG13 MFC:3HG1 MFC HA31 MFC:1HA3 MFC HA32 MFC:2HA3 MFC HN31 MFD:1HN3 MFD HN32 MFD:2HN3 MFD HM21 MFD:1HM2 MFD HM22 MFD:2HM2 MFD HM23 MFD:3HM2 MFD H'1 MFD:1H' MFD H'2 MFD:2H' MFD HM91 MFD:1HM9 MFD HM92 MFD:2HM9 MFD HM93 MFD:3HM9 MFD HM81 MFD:1HM8 MFD HM82 MFD:2HM8 MFD HM83 MFD:3HM8 MFD HM61 MFD:1HM6 MFD HM62 MFD:2HM6 MFD HM63 MFD:3HM6 MFD H151 MFM:1H15 MFM H152 MFM:2H15 MFM H161 MFM:1H16 MFM H162 MFM:2H16 MFM H11A MFN:1H1 MFN H12A MFN:2H1 MFN H221 MFN:1H22 MFN H222 MFN:2H22 MFN H141 MFN:1H14 MFN H142 MFN:2H14 MFN H261 MFN:1H26 MFN H262 MFN:2H26 MFN H271 MFN:1H27 MFN H272 MFN:2H27 MFN H282 MFN:2H28 MFN H171 MFN:1H17 MFN H172 MFN:2H17 MFN H181 MFN:1H18 MFN H182 MFN:2H18 MFN H151 MFN:1H15 MFN H152 MFN:2H15 MFN H121 MFN:1H12 MFN H122 MFN:2H12 MFN H131 MFN:1H13 MFN H132 MFN:2H13 MFN HN11 MFN:1HN1 MFN H311 MFN:1H31 MFN H312 MFN:2H31 MFN H321 MFN:1H32 MFN H322 MFN:2H32 MFN H161 MFP:1H16 MFP H162 MFP:2H16 MFP H151 MFP:1H15 MFP H152 MFP:2H15 MFP H153 MFP:3H15 MFP H271 MFP:1H27 MFP H272 MFP:2H27 MFP H291 MFP:1H29 MFP H292 MFP:2H29 MFP H311 MFP:1H31 MFP H312 MFP:2H31 MFP H313 MFP:3H31 MFP H321 MFP:1H32 MFP H322 MFP:2H32 MFP H323 MFP:3H32 MFP H161 MFQ:1H16 MFQ H162 MFQ:2H16 MFQ H151 MFQ:1H15 MFQ H152 MFQ:2H15 MFQ H153 MFQ:3H15 MFQ H271 MFQ:1H27 MFQ H272 MFQ:2H27 MFQ H291 MFQ:1H29 MFQ H292 MFQ:2H29 MFQ H311 MFQ:1H31 MFQ H312 MFQ:2H31 MFQ H313 MFQ:3H31 MFQ H321 MFQ:1H32 MFQ H322 MFQ:2H32 MFQ H323 MFQ:3H32 MFQ H61 MFU:1H6 MFU H62 MFU:2H6 MFU H63 MFU:3H6 MFU HM1 MFU:1HM MFU HM2 MFU:2HM MFU HM3 MFU:3HM MFU HOP3 MG1:3HOP MG1 HOP2 MG1:2HOP MG1 H5' MG1:1H5* MG1 H5'' MG1:2H5* MG1 H4' MG1: H4* MG1 H3' MG1: H3* MG1 HO3' MG1:H3T MG1 H2' MG1:1H2* MG1 H2'' MG1:2H2* MG1 H1' MG1: H1* MG1 HM11 MG1:1HM1 MG1 HM12 MG1:2HM1 MG1 HM13 MG1:3HM1 MG1 H21 MG1:1H2 MG1 H22 MG1:2H2 MG1 HN21 MG7:1HN2 MG7 HN22 MG7:2HN2 MG7 HO5' MG7:'HO5 MG7 H5'1 MG7:1H5' MG7 H5'2 MG7:2H5' MG7 H71 MG7:1H7 MG7 H72 MG7:2H7 MG7 H73 MG7:3H7 MG7 HO2' MG7:'HO2 MG7 HO3' MG7:'HO3 MG7 H11A MG8:1H1 MG8 H12A MG8:2H1 MG8 H13A MG8:3H1 MG8 H21 MG8:1H2 MG8 H22 MG8:2H2 MG8 H31 MG8:1H3 MG8 H32 MG8:2H3 MG8 H41 MG8:1H4 MG8 H42 MG8:2H4 MG8 H51 MG8:1H5 MG8 H52 MG8:2H5 MG8 H61 MG8:1H6 MG8 H62 MG8:2H6 MG8 H71 MG8:1H7 MG8 H72 MG8:2H7 MG8 H91 MG8:1H9 MG8 H92 MG8:2H9 MG8 H141 MG8:1H14 MG8 H142 MG8:2H14 MG8 H151 MG8:1H15 MG8 H152 MG8:2H15 MG8 H153 MG8:3H15 MG8 H61 MGA:1H6 MGA H62 MGA:2H6 MGA H71 MGA:1H7 MGA H72 MGA:2H7 MGA H73 MGA:3H7 MGA H11 MGB:1H1 MGB H12 MGB:2H1 MGB H21 MGB:1H2 MGB H41 MGB:1H4 MGB H61 MGB:1H6 MGB H81 MGB:1H8 MGB H82 MGB:2H8 MGB H83 MGB:3H8 MGB H101 MGB:1H10 MGB H121 MGB:1H12 MGB H131 MGB:1H13 MGB H132 MGB:2H13 MGB H61 MGC:1H6 MGC H62 MGC:2H6 MGC HM1 MGC:1HM MGC HM2 MGC:2HM MGC HM3 MGC:3HM MGC H81 MGC:1H8 MGC H82 MGC:2H8 MGC H83 MGC:3H8 MGC HOB2 MGD:2HOB MGD HOA2 MGD:2HOA MGD H5'1 MGD:1H5' MGD H5'2 MGD:2H5' MGD HO3' MGD:'HO3 MGD HO2' MGD:'HO2 MGD HN21 MGD:1HN2 MGD HN22 MGD:2HN2 MGD H101 MGD:1H10 MGD H102 MGD:2H10 MGD H191 MGD:1H19 MGD H192 MGD:2H19 MGD H2A1 MGE:1H2A MGE H2A2 MGE:2H2A MGE H3A1 MGE:1H3A MGE H3A2 MGE:2H3A MGE H4A1 MGE:1H4A MGE H4A2 MGE:2H4A MGE H5A1 MGE:1H5A MGE H5A2 MGE:2H5A MGE H6A1 MGE:1H6A MGE H6A2 MGE:2H6A MGE H7A1 MGE:1H7A MGE H7A2 MGE:2H7A MGE H8A1 MGE:1H8A MGE H8A2 MGE:2H8A MGE H9A1 MGE:1H9A MGE H9A2 MGE:2H9A MGE H101 MGE:1H10 MGE H102 MGE:2H10 MGE H111 MGE:1H11 MGE H112 MGE:2H11 MGE H121 MGE:1H12 MGE H122 MGE:2H12 MGE H131 MGE:1H13 MGE H132 MGE:2H13 MGE H133 MGE:3H13 MGE H2B1 MGE:1H2B MGE H2B2 MGE:2H2B MGE H3B1 MGE:1H3B MGE H3B2 MGE:2H3B MGE H4B1 MGE:1H4B MGE H4B2 MGE:2H4B MGE H5B1 MGE:1H5B MGE H5B2 MGE:2H5B MGE H6B1 MGE:1H6B MGE H6B2 MGE:2H6B MGE H7B1 MGE:1H7B MGE H7B2 MGE:2H7B MGE H8B1 MGE:1H8B MGE H8B2 MGE:2H8B MGE H9B1 MGE:1H9B MGE H9B2 MGE:2H9B MGE H201 MGE:1H20 MGE H202 MGE:2H20 MGE H211 MGE:1H21 MGE H212 MGE:2H21 MGE H221 MGE:1H22 MGE H222 MGE:2H22 MGE H231 MGE:1H23 MGE H232 MGE:2H23 MGE H241 MGE:1H24 MGE H242 MGE:2H24 MGE H251 MGE:1H25 MGE H252 MGE:2H25 MGE H261 MGE:1H26 MGE H262 MGE:2H26 MGE H263 MGE:3H26 MGE H1G1 MGE:1H1G MGE H1G2 MGE:2H1G MGE H3G1 MGE:1H3G MGE H3G2 MGE:2H3G MGE H6D1 MGE:1H6D MGE H6D2 MGE:2H6D MGE HB2 MGG:1HB MGG HB3 MGG:2HB MGG HG2 MGG:1HG MGG HG3 MGG:2HG MGG HD2 MGG:1HD MGG HD3 MGG:2HD MGG HE MGG: HNE MGG HH11 MGG:1HH1 MGG HH12 MGG:2HH1 MGG HH21 MGG:1HH2 MGG HH22 MGG:2HH2 MGG H21 MGG:1H2 MGG H22 MGG:2H2 MGG H1 MGG:1H MGG H61 MGL:1H6 MGL H62 MGL:2H6 MGL H71 MGL:1H7 MGL H72 MGL:2H7 MGL H73 MGL:3H7 MGL H201 MGM:1H20 MGM H202 MGM:2H20 MGM H203 MGM:3H20 MGM H191 MGM:1H19 MGM H192 MGM:2H19 MGM H193 MGM:3H19 MGM H161 MGM:1H16 MGM H162 MGM:2H16 MGM H141 MGM:1H14 MGM H142 MGM:2H14 MGM H143 MGM:3H14 MGM H151 MGM:1H15 MGM H152 MGM:2H15 MGM H111 MGM:1H11 MGM H112 MGM:2H11 MGM HC91 MGM:1HC9 MGM HC92 MGM:2HC9 MGM H101 MGM:1H10 MGM H102 MGM:2H10 MGM H103 MGM:3H10 MGM HC61 MGM:1HC6 MGM HC62 MGM:2HC6 MGM HC51 MGM:1HC5 MGM HC52 MGM:2HC5 MGM HC41 MGM:1HC4 MGM HC42 MGM:2HC4 MGM HC43 MGM:3HC4 MGM HC21 MGM:1HC2 MGM HC22 MGM:2HC2 MGM HC11 MGM:1HC1 MGM HC12 MGM:2HC1 MGM H1AO MGM:OH1A MGM H1BO MGM:OH1B MGM H2BO MGM:OH2B MGM H MGN:1HN MGN H2 MGN:2HN MGN HB11 MGN:1HB1 MGN HB12 MGN:2HB1 MGN HB21 MGN:1HB2 MGN HB22 MGN:2HB2 MGN HB23 MGN:3HB2 MGN HG1 MGN:1HG MGN HG2 MGN:2HG MGN HN21 MGN:1HN2 MGN HN22 MGN:2HN2 MGN HOA2 MGP:2HOA MGP HOB2 MGP:2HOB MGP HOC2 MGP:2HOC MGP HOC3 MGP:3HOC MGP H5'1 MGP:1H5* MGP H5'2 MGP:2H5* MGP H4' MGP: H4* MGP H3' MGP: H3* MGP HO3' MGP:*HO3 MGP H2' MGP: H2* MGP HO2' MGP:*HO2 MGP H1' MGP: H1* MGP HC71 MGP:1HC7 MGP HC72 MGP:2HC7 MGP HC73 MGP:3HC7 MGP HN21 MGP:1HN2 MGP HN22 MGP:2HN2 MGP H31 MGR:1H3 MGR H41 MGR:1H4 MGR H51 MGR:1H5 MGR H61 MGR:1H6 MGR H71 MGR:1H7 MGR H91 MGR:1H9 MGR H101 MGR:1H10 MGR H121 MGR:1H12 MGR H131 MGR:1H13 MGR H151 MGR:1H15 MGR H161 MGR:1H16 MGR H181 MGR:1H18 MGR H191 MGR:1H19 MGR H221 MGR:1H22 MGR H222 MGR:2H22 MGR H223 MGR:3H22 MGR H231 MGR:1H23 MGR H232 MGR:2H23 MGR H233 MGR:3H23 MGR H241 MGR:1H24 MGR H242 MGR:2H24 MGR H243 MGR:3H24 MGR H251 MGR:1H25 MGR H252 MGR:2H25 MGR H253 MGR:3H25 MGR HC71 MGS:1HC7 MGS HC72 MGS:2HC7 MGS HC73 MGS:3HC7 MGS HC81 MGS:1HC8 MGS HC82 MGS:2HC8 MGS HC83 MGS:3HC8 MGS HC61 MGS:1HC6 MGS HC62 MGS:2HC6 MGS HC63 MGS:3HC6 MGS H121 MGS:1H12 MGS H122 MGS:2H12 MGS H111 MGS:1H11 MGS H112 MGS:2H11 MGS HOG2 MGT:2HOG MGT HOG3 MGT:3HOG MGT HOB2 MGT:2HOB MGT HOA2 MGT:2HOA MGT H5'1 MGT:1H5* MGT H5'2 MGT:2H5* MGT H4' MGT: H4* MGT H3' MGT: H3* MGT HO3' MGT:*HO3 MGT H2' MGT: H2* MGT HO2' MGT:*HO2 MGT H1' MGT: H1* MGT H81 MGT:1H8 MGT H82 MGT:2H8 MGT HM71 MGT:1HM7 MGT HM72 MGT:2HM7 MGT HM73 MGT:3HM7 MGT HN21 MGT:1HN2 MGT HN22 MGT:2HN2 MGT HC81 MGU:1HC8 MGU HC82 MGU:2HC8 MGU HC83 MGU:3HC8 MGU HC61 MGU:1HC6 MGU HC62 MGU:2HC6 MGU HC63 MGU:3HC6 MGU H121 MGU:1H12 MGU H122 MGU:2H12 MGU H111 MGU:1H11 MGU H112 MGU:2H11 MGU H271 MGU:1H27 MGU H272 MGU:2H27 MGU H273 MGU:3H27 MGU H261 MGU:1H26 MGU H262 MGU:2H26 MGU H263 MGU:3H26 MGU H321 MGU:1H32 MGU H322 MGU:2H32 MGU H311 MGU:1H31 MGU H312 MGU:2H31 MGU HD1 MGX:1HD MGX HD2 MGX:2HD MGX HD3 MGX:3HD MGX HH11 MGX:1HH1 MGX HH12 MGX:2HH1 MGX HA1 MGY:1HA MGY HA2 MGY:2HA MGY HN1 MGY:1HN MGY HN2 MGY:2HN MGY HN3 MGY:3HN MGY HC11 MHA:1HC1 MHA HC12 MHA:2HC1 MHA HC31 MHA:1HC3 MHA HC32 MHA:2HC3 MHA HC51 MHA:1HC5 MHA HC52 MHA:2HC5 MHA HN21 MHA:1HN2 MHA HN22 MHA:2HN2 MHA HM31 MHB:1HM3 MHB HM32 MHB:2HM3 MHB HM33 MHB:3HM3 MHB HO4' MHB:'HO4 MHB H21 MHC:1H2 MHC H22 MHC:2H2 MHC H31 MHC:1H3 MHC H32 MHC:2H3 MHC H71 MHC:1H7 MHC H72 MHC:2H7 MHC H81 MHC:1H8 MHC H82 MHC:2H8 MHC H111 MHC:1H11 MHC H112 MHC:2H11 MHC HN21 MHF:1HN2 MHF HN22 MHF:2HN2 MHF H71 MHF:1H7 MHF H72 MHF:2H7 MHF H91 MHF:1H9 MHF H92 MHF:2H9 MHF H111 MHF:1H11 MHF H112 MHF:2H11 MHF HB1 MHF:1HB MHF HB2 MHF:2HB MHF HG1 MHF:1HG MHF HG2 MHF:2HG MHF HOE2 MHF:2HOE MHF H MHL: HN MHL HB2 MHL:1HB MHL HB3 MHL:2HB MHL HD11 MHL:1HD1 MHL HD12 MHL:2HD1 MHL HD13 MHL:3HD1 MHL HD21 MHL:1HD2 MHL HD22 MHL:2HD2 MHL HD23 MHL:3HD2 MHL HN1 MHL:1HN MHL HN2 MHL:2HN MHL HN3 MHL:3HN MHL HD3 MHL: HO3 MHL HAA2 MHM:2HAA MHM HMA2 MHM:2HMA MHM HMA3 MHM:3HMA MHM HBA2 MHM:2HBA MHM HO1A MHM:AHO1 MHM HMB2 MHM:2HMB MHM HMB3 MHM:3HMB MHM HBB2 MHM:2HBB MHM HMC2 MHM:2HMC MHM HMC3 MHM:3HMC MHM HBC2 MHM:2HBC MHM HMD2 MHM:2HMD MHM HMD3 MHM:3HMD MHM HAD2 MHM:2HAD MHM HBD2 MHM:2HBD MHM HO2D MHM:DHO2 MHM H81 MHN:1H8 MHN H82 MHN:2H8 MHN H71 MHN:1H7 MHN H72 MHN:2H7 MHN H61 MHN:1H6 MHN H62 MHN:2H6 MHN H51 MHN:1H5 MHN H52 MHN:2H5 MHN H41 MHN:1H4 MHN H42 MHN:2H4 MHN H11 MHN:1H1 MHN H12 MHN:2H1 MHN H13 MHN:3H1 MHN H31 MHN:1H3 MHN H32 MHN:2H3 MHN H33 MHN:3H3 MHN H MHO:1HN MHO H2 MHO:2HN MHO HB2 MHO:1HB MHO HB3 MHO:2HB MHO HG2 MHO:1HG MHO HG3 MHO:2HG MHO HE1 MHO:1HE MHO HE2 MHO:2HE MHO HE3 MHO:3HE MHO H2 MHP: HN2 MHP HH1 MHP:1HH MHP HH2 MHP:2HH MHP HH3 MHP:3HH MHP H2 MHS: HN2 MHS HB2 MHS:1HB MHS HB3 MHS:2HB MHS HM1 MHS:1HM MHS HM2 MHS:2HM MHS HM3 MHS:3HM MHS HN1 MHZ:1HN MHZ HN2 MHZ:2HN MHZ HNA1 MHZ:1HNA MHZ HB1 MHZ:1HB MHZ HB2 MHZ:2HB MHZ HCC1 MHZ:1HCC MHZ HCC2 MHZ:2HCC MHZ HG1 MHZ:1HG MHZ HG2 MHZ:2HG MHZ HE1 MHZ:1HE MHZ HE2 MHZ:2HE MHZ HE3 MHZ:3HE MHZ H5'1 MHZ:1H5* MHZ H5'2 MHZ:2H5* MHZ H4' MHZ: H4* MHZ H1' MHZ: H1* MHZ HN61 MHZ:1HN6 MHZ HN62 MHZ:2HN6 MHZ H2' MHZ: H2* MHZ HO2' MHZ:*HO2 MHZ H3' MHZ: H3* MHZ HO3' MHZ:*HO3 MHZ H121 MI2:1H12 MI2 H122 MI2:2H12 MI2 H123 MI2:3H12 MI2 H191 MI2:1H19 MI2 H192 MI2:2H19 MI2 H111 MI7:1H11 MI7 H112 MI7:2H11 MI7 H113 MI7:3H11 MI7 HOP3 MIA:3HOP MIA HOP2 MIA:2HOP MIA H5' MIA:1H5* MIA H5'' MIA:2H5* MIA H4' MIA: H4* MIA H3' MIA: H3* MIA HO3' MIA:H3T MIA H2' MIA: H2* MIA HO2' MIA:2HO* MIA H1' MIA: H1* MIA H111 MIA:1H11 MIA H112 MIA:2H11 MIA H113 MIA:3H11 MIA H121 MIA:1H12 MIA H122 MIA:2H12 MIA H131 MIA:1H13 MIA H132 MIA:2H13 MIA H151 MIA:1H15 MIA H152 MIA:2H15 MIA H153 MIA:3H15 MIA H161 MIA:1H16 MIA H162 MIA:2H16 MIA H163 MIA:3H16 MIA HM21 MIC:1HM2 MIC HM22 MIC:2HM2 MIC HM23 MIC:3HM2 MIC H41 MIC:1H4 MIC H42 MIC:2H4 MIC H21 MID:1H2 MID H22 MID:2H2 MID H31A MID:1H3 MID H32A MID:2H3 MID H41 MID:1H4 MID H42 MID:2H4 MID H51 MID:1H5 MID H52 MID:2H5 MID H61 MID:1H6 MID H62 MID:2H6 MID H111 MID:1H11 MID H112 MID:2H11 MID H191 MID:1H19 MID H192 MID:2H19 MID H371 MID:1H37 MID H372 MID:2H37 MID HBC1 MIK:1HBC MIK HBC2 MIK:2HBC MIK HGC1 MIK:1HGC MIK HGC2 MIK:2HGC MIK HDC1 MIK:1HDC MIK HDC2 MIK:2HDC MIK HEC1 MIK:1HEC MIK HEC2 MIK:2HEC MIK H2A1 MIL:1H2A MIL H2A2 MIL:2H2A MIL H2A3 MIL:3H2A MIL HIB1 MIM:1HIB MIM HIB2 MIM:2HIB MIM HIB3 MIM:3HIB MIM H9B1 MIM:1H9B MIM H9B2 MIM:2H9B MIM H8B1 MIM:1H8B MIM H8B2 MIM:2H8B MIM H7B1 MIM:1H7B MIM H7B2 MIM:2H7B MIM H6B1 MIM:1H6B MIM H6B2 MIM:2H6B MIM HAB1 MIM:1HAB MIM HAB2 MIM:2HAB MIM HBS1 MIM:1HBS MIM HBS2 MIM:2HBS MIM HOGS MIM:SHOG MIM HBK1 MIM:1HBK MIM HBK2 MIM:2HBK MIM HGK1 MIM:1HGK MIM HGK2 MIM:2HGK MIM HDK1 MIM:1HDK MIM HDK2 MIM:2HDK MIM HEK1 MIM:1HEK MIM HEK2 MIM:2HEK MIM HNZ1 MIM:1HNZ MIM HNZ2 MIM:2HNZ MIM HAY1 MIM:1HAY MIM HAY2 MIM:2HAY MIM HBY1 MIM:1HBY MIM HBY2 MIM:2HBY MIM HKY1 MIM:1HKY MIM HKY2 MIM:2HKY MIM HHY1 MIM:1HHY MIM HHY2 MIM:2HHY MIM HZY1 MIM:1HZY MIM HZY2 MIM:2HZY MIM HEY1 MIM:1HEY MIM HEY2 MIM:2HEY MIM HDY1 MIM:1HDY MIM HDY2 MIM:2HDY MIM HN11 MIN:1HN1 MIN HN12 MIN:2HN1 MIN H21A MIN:1H2 MIN H22A MIN:2H2 MIN H31 MIN:1H3 MIN H32 MIN:2H3 MIN H51 MIN:1H5 MIN H52 MIN:2H5 MIN H61 MIN:1H6 MIN H62 MIN:2H6 MIN H71 MIN:1H7 MIN H72 MIN:2H7 MIN H101 MIN:1H10 MIN H102 MIN:2H10 MIN H111 MIN:1H11 MIN H112 MIN:2H11 MIN H121 MIN:1H12 MIN H122 MIN:2H12 MIN H141 MIN:1H14 MIN H142 MIN:2H14 MIN H143 MIN:3H14 MIN H161 MIN:1H16 MIN H162 MIN:2H16 MIN H1B1 MIP:1H1B MIP H1B2 MIP:2H1B MIP H1B3 MIP:3H1B MIP H3B1 MIP:1H3B MIP H3B2 MIP:2H3B MIP H3B3 MIP:3H3B MIP H MIS:1HN MIS H2 MIS:2HN MIS HB2 MIS:1HB MIS HB3 MIS:2HB MIS HOP1 MIS:1HOP MIS H21 MIS:1H2 MIS H22 MIS:2H2 MIS H23 MIS:3H2 MIS H31 MIS:1H3 MIS H32 MIS:2H3 MIS H33 MIS:3H3 MIS H61 MIT:1H6 MIT H62 MIT:2H6 MIT H81 MIT:1H8 MIT H82 MIT:2H8 MIT H161 MIT:1H16 MIT H162 MIT:2H16 MIT H171 MIT:1H17 MIT H172 MIT:2H17 MIT H181 MIT:1H18 MIT H182 MIT:2H18 MIT HN19 MIT:9HN1 MIT HN21 MIT:1HN2 MIT HN22 MIT:2HN2 MIT H231 MIT:1H23 MIT H232 MIT:2H23 MIT H233 MIT:3H23 MIT H281 MIT:1H28 MIT H282 MIT:2H28 MIT H301 MIT:1H30 MIT H302 MIT:2H30 MIT H311 MIT:1H31 MIT H312 MIT:2H31 MIT H351 MIT:1H35 MIT H352 MIT:2H35 MIT H353 MIT:3H35 MIT H271 MIU:1H27 MIU H272 MIU:2H27 MIU H281 MIU:1H28 MIU H282 MIU:2H28 MIU H301 MIU:1H30 MIU H302 MIU:2H30 MIU H311 MIU:1H31 MIU H312 MIU:2H31 MIU H321 MIU:1H32 MIU H322 MIU:2H32 MIU H161 MIU:1H16 MIU H162 MIU:2H16 MIU H171 MIU:1H17 MIU H172 MIU:2H17 MIU H181 MIU:1H18 MIU H182 MIU:2H18 MIU H211 MIU:1H21 MIU H212 MIU:2H21 MIU H221 MIU:1H22 MIU H222 MIU:2H22 MIU H331 MIU:1H33 MIU H332 MIU:2H33 MIU H8C1 MIU:1H8C MIU H8C2 MIU:2H8C MIU H9N1 MIU:1H9N MIU H9N2 MIU:2H9N MIU HAK1 MIX:1HAK MIX HAK2 MIX:2HAK MIX HAM1 MIX:1HAM MIX HAM2 MIX:2HAM MIX HAO1 MIX:1HAO MIX HAO2 MIX:2HAO MIX HAQ1 MIX:1HAQ MIX HAQ2 MIX:2HAQ MIX HAR1 MIX:1HAR MIX HAR2 MIX:2HAR MIX HAP1 MIX:1HAP MIX HAP2 MIX:2HAP MIX HAN1 MIX:1HAN MIX HAN2 MIX:2HAN MIX HAL1 MIX:1HAL MIX HAL2 MIX:2HAL MIX HN21 MIY:1HN2 MIY HN22 MIY:2HN2 MIY H201 MIY:1H20 MIY H202 MIY:2H20 MIY H203 MIY:3H20 MIY H191 MIY:1H19 MIY H192 MIY:2H19 MIY H193 MIY:3H19 MIY H61 MIY:1H6 MIY H62 MIY:2H6 MIY H81 MIY:1H8 MIY H82 MIY:2H8 MIY HN71 MIY:1HN7 MIY HN72 MIY:2HN7 MIY HN73 MIY:3HN7 MIY H711 MIY:1H71 MIY H712 MIY:2H71 MIY H713 MIY:3H71 MIY H11 MJI:1H1 MJI H12 MJI:2H1 MJI H21 MJI:1H2 MJI H31 MJI:1H3 MJI H32 MJI:2H3 MJI H311 MJI:1H31 MJI H312 MJI:2H31 MJI HO21 MJI:1HO2 MJI H2P1 MJI:1H2P MJI H2P2 MJI:2H2P MJI H2P3 MJI:3H2P MJI H111 MJI:1H11 MJI H112 MJI:2H11 MJI H121 MJI:1H12 MJI H122 MJI:2H12 MJI H131 MJI:1H13 MJI H132 MJI:2H13 MJI H141 MJI:1H14 MJI H142 MJI:2H14 MJI H151 MJI:1H15 MJI H152 MJI:2H15 MJI H161 MJI:1H16 MJI H162 MJI:2H16 MJI H171 MJI:1H17 MJI H172 MJI:2H17 MJI H181 MJI:1H18 MJI H182 MJI:2H18 MJI H191 MJI:1H19 MJI H192 MJI:2H19 MJI H201 MJI:1H20 MJI H202 MJI:2H20 MJI H211 MJI:1H21 MJI H212 MJI:2H21 MJI H221 MJI:1H22 MJI H222 MJI:2H22 MJI H231 MJI:1H23 MJI H232 MJI:2H23 MJI H241 MJI:1H24 MJI H242 MJI:2H24 MJI H251 MJI:1H25 MJI H252 MJI:2H25 MJI H261 MJI:1H26 MJI H262 MJI:2H26 MJI H263 MJI:3H26 MJI H11A MK1:1H1 MK1 H12 MK1:2H1 MK1 H51 MK1:1H5 MK1 H52 MK1:2H5 MK1 H53 MK1:3H5 MK1 H61 MK1:1H6 MK1 H62 MK1:2H6 MK1 H63 MK1:3H6 MK1 H71 MK1:1H7 MK1 H72 MK1:2H7 MK1 H73 MK1:3H7 MK1 H81 MK1:1H8 MK1 H82 MK1:2H8 MK1 H91 MK1:1H9 MK1 H92 MK1:2H9 MK1 H101 MK1:1H10 MK1 H102 MK1:2H10 MK1 H121 MK1:1H12 MK1 H122 MK1:2H12 MK1 H141 MK1:1H14 MK1 H142 MK1:2H14 MK1 H241 MK1:1H24 MK1 H242 MK1:2H24 MK1 H311 MK1:1H31 MK1 H312 MK1:2H31 MK1 H131 MKC:1H13 MKC H132 MKC:2H13 MKC H151 MKC:1H15 MKC H152 MKC:2H15 MKC H153 MKC:3H15 MKC H161 MKC:1H16 MKC H162 MKC:2H16 MKC H163 MKC:3H16 MKC H171 MKC:1H17 MKC H172 MKC:2H17 MKC H181 MKC:1H18 MKC H182 MKC:2H18 MKC H191 MKC:1H19 MKC H192 MKC:2H19 MKC H193 MKC:3H19 MKC HN1 MKE:1HN MKE HN2 MKE:2HN MKE HB1 MKE:1HB MKE HB2 MKE:2HB MKE HG1 MKE:1HG MKE HG2 MKE:2HG MKE HMK1 MKE:1HMK MKE HMK2 MKE:2HMK MKE HMK3 MKE:3HMK MKE H141 MKK:1H14 MKK H142 MKK:2H14 MKK H91 MKK:1H9 MKK H92 MKK:2H9 MKK H93 MKK:3H9 MKK H101 MKK:1H10 MKK H102 MKK:2H10 MKK H103 MKK:3H10 MKK H71 MKK:1H7 MKK H72 MKK:2H7 MKK H81 MKK:1H8 MKK H82 MKK:2H8 MKK H111 MKK:1H11 MKK H112 MKK:2H11 MKK H121 MKK:1H12 MKK H122 MKK:2H12 MKK H151 MKK:1H15 MKK H152 MKK:2H15 MKK H161 MKK:1H16 MKK H162 MKK:2H16 MKK H181 MKK:1H18 MKK H182 MKK:2H18 MKK H261 MKK:1H26 MKK H262 MKK:2H26 MKK H263 MKK:3H26 MKK H91 MKR:1H9 MKR H92 MKR:2H9 MKR H93 MKR:3H9 MKR H71 MKR:1H7 MKR H72 MKR:2H7 MKR H101 MKR:1H10 MKR H102 MKR:2H10 MKR H111 MKR:1H11 MKR H112 MKR:2H11 MKR H121 MKR:1H12 MKR H122 MKR:2H12 MKR H161 MKR:1H16 MKR H162 MKR:2H16 MKR H171 MKR:1H17 MKR H172 MKR:2H17 MKR H191 MKR:1H19 MKR H192 MKR:2H19 MKR H211 MKR:1H21 MKR H212 MKR:2H21 MKR H241 MKR:1H24 MKR H242 MKR:2H24 MKR H243 MKR:3H24 MKR HC21 MLA:1HC2 MLA HC22 MLA:2HC2 MLA HN61 MLC:1HN6 MLC HN62 MLC:2HN6 MLC H5'1 MLC:1H5' MLC H5'2 MLC:2H5' MLC HPB1 MLC:1HPB MLC HPB2 MLC:2HPB MLC HP91 MLC:1HP9 MLC HP92 MLC:2HP9 MLC HP93 MLC:3HP9 MLC HP81 MLC:1HP8 MLC HP82 MLC:2HP8 MLC HP83 MLC:3HP8 MLC HP51 MLC:1HP5 MLC HP52 MLC:2HP5 MLC HP41 MLC:1HP4 MLC HP42 MLC:2HP4 MLC HP21 MLC:1HP2 MLC HP22 MLC:2HP2 MLC HP11 MLC:1HP1 MLC HP12 MLC:2HP1 MLC HM21 MLC:1HM2 MLC HM22 MLC:2HM2 MLC HAA1 MLD:1HAA MLD HAA2 MLD:2HAA MLD HAA3 MLD:3HAA MLD H61 MLD:1H6 MLD H62 MLD:2H6 MLD HA61 MLD:1HA6 MLD HA62 MLD:2HA6 MLD HAF1 MLD:1HAF MLD HAF2 MLD:2HAF MLD HAF3 MLD:3HAF MLD HAJ1 MLD:1HAJ MLD HAJ2 MLD:2HAJ MLD HAJ3 MLD:3HAJ MLD HB1 MLD:1HB MLD HB2 MLD:2HB MLD HB3 MLD:3HB MLD HBB1 MLD:1HBB MLD HBB2 MLD:2HBB MLD HBC1 MLD:1HBC MLD HBC2 MLD:2HBC MLD HBL1 MLD:1HBL MLD HBL2 MLD:2HBL MLD HBL3 MLD:3HBL MLD HBP1 MLD:1HBP MLD HBP2 MLD:2HBP MLD HBQ1 MLD:1HBQ MLD HBQ2 MLD:2HBQ MLD HBR1 MLD:1HBR MLD HBR2 MLD:2HBR MLD HBW1 MLD:1HBW MLD HBW2 MLD:2HBW MLD H MLE: HN MLE HN1 MLE:1HN MLE HN2 MLE:2HN MLE HN3 MLE:3HN MLE HB2 MLE:1HB MLE HB3 MLE:2HB MLE HD11 MLE:1HD1 MLE HD12 MLE:2HD1 MLE HD13 MLE:3HD1 MLE HD21 MLE:1HD2 MLE HD22 MLE:2HD2 MLE HD23 MLE:3HD2 MLE H111 MLG:1H11 MLG H112 MLG:2H11 MLG H101 MLG:1H10 MLG H102 MLG:2H10 MLG H121 MLG:1H12 MLG H122 MLG:2H12 MLG H171 MLG:1H17 MLG H172 MLG:2H17 MLG H173 MLG:3H17 MLG H141 MLG:1H14 MLG H142 MLG:2H14 MLG H11 MLI:1H1 MLI H12 MLI:2H1 MLI H9C1 MLK:1H9C MLK H9C2 MLK:2H9C MLK H121 MLK:1H12 MLK H122 MLK:2H12 MLK H123 MLK:3H12 MLK H151 MLK:1H15 MLK H152 MLK:2H15 MLK H211 MLK:1H21 MLK H212 MLK:2H21 MLK H201 MLK:1H20 MLK H202 MLK:2H20 MLK H221 MLK:1H22 MLK H222 MLK:2H22 MLK H223 MLK:3H22 MLK H241 MLK:1H24 MLK H242 MLK:2H24 MLK H251 MLK:1H25 MLK H252 MLK:2H25 MLK H253 MLK:3H25 MLK H231 MLK:1H23 MLK H232 MLK:2H23 MLK H331 MLK:1H33 MLK H332 MLK:2H33 MLK H371 MLK:1H37 MLK H372 MLK:2H37 MLK H373 MLK:3H37 MLK H361 MLK:1H36 MLK H362 MLK:2H36 MLK H391 MLK:1H39 MLK H392 MLK:2H39 MLK H393 MLK:3H39 MLK H291 MLK:1H29 MLK H292 MLK:2H29 MLK H293 MLK:3H29 MLK H MLL:1HN MLL H2 MLL:2HN MLL HB2 MLL:1HB MLL HB3 MLL:2HB MLL HD21 MLL:1HD2 MLL HD22 MLL:2HD2 MLL HD23 MLL:3HD2 MLL HD11 MLL:1HD1 MLL HD12 MLL:2HD1 MLL HD13 MLL:3HD1 MLL H101 MLL:1H10 MLL H102 MLL:2H10 MLL H103 MLL:3H10 MLL H2C1 MLM:1H2C MLM H2C2 MLM:2H2C MLM H6N1 MLM:1H6N MLM H6N2 MLM:2H6N MLM HOP3 MLN:3HOP MLN HOP4 MLN:4HOP MLN HC51 MLN:1HC5 MLN HC71 MLN:1HC7 MLN HC72 MLN:2HC7 MLN HC81 MLN:1HC8 MLN HC82 MLN:2HC8 MLN HC91 MLN:1HC9 MLN HC92 MLN:2HC9 MLN H101 MLN:1H10 MLN H102 MLN:2H10 MLN H103 MLN:3H10 MLN H141 MLN:1H14 MLN H142 MLN:2H14 MLN H161 MLN:1H16 MLN H162 MLN:2H16 MLN H163 MLN:3H16 MLN H171 MLN:1H17 MLN H172 MLN:2H17 MLN H173 MLN:3H17 MLN H11 MLP:1H1 MLP H12 MLP:2H1 MLP H21 MLP:1H2 MLP H22 MLP:2H2 MLP HN41 MLP:1HN4 MLP HN42 MLP:2HN4 MLP H6A1 MLR:1H6A MLR H6A2 MLR:2H6A MLR HOA2 MLR:2HOA MLR HOA3 MLR:3HOA MLR HOA6 MLR:6HOA MLR H6B1 MLR:1H6B MLR H6B2 MLR:2H6B MLR HOB2 MLR:2HOB MLR HOB3 MLR:3HOB MLR HOB6 MLR:6HOB MLR H6C1 MLR:1H6C MLR H6C2 MLR:2H6C MLR HOC2 MLR:2HOC MLR HOC3 MLR:3HOC MLR HOC4 MLR:4HOC MLR HOC6 MLR:6HOC MLR H31 MLT:1H3 MLT H32 MLT:2H3 MLT H MLY:1HN MLY H2 MLY:2HN MLY HB2 MLY:1HB MLY HB3 MLY:2HB MLY HG2 MLY:1HG MLY HG3 MLY:2HG MLY HD2 MLY:1HD MLY HD3 MLY:2HD MLY HE2 MLY:1HE MLY HE3 MLY:2HE MLY HH11 MLY:1HC1 MLY HH12 MLY:2HC1 MLY HH13 MLY:3HC1 MLY HH21 MLY:1HC2 MLY HH22 MLY:2HC2 MLY HH23 MLY:3HC2 MLY H MLZ:1HN MLZ H2 MLZ:2HN MLZ HB2 MLZ:1HB MLZ HB3 MLZ:2HB MLZ HG2 MLZ:1HG MLZ HG3 MLZ:2HG MLZ HD2 MLZ:1HD MLZ HD3 MLZ:2HD MLZ HE2 MLZ:1HE MLZ HE3 MLZ:2HE MLZ HCM1 MLZ:1HCM MLZ HCM2 MLZ:2HCM MLZ HCM3 MLZ:3HCM MLZ H11A MM1:1H1 MM1 H12 MM1:2H1 MM1 H21 MM1:1H2 MM1 H22 MM1:2H2 MM1 H31 MM1:1H3 MM1 H32 MM1:2H3 MM1 H51 MM1:1H5 MM1 H52 MM1:2H5 MM1 H61 MM1:1H6 MM1 H62 MM1:2H6 MM1 H81 MM1:1H8 MM1 H82 MM1:2H8 MM1 H91 MM1:1H9 MM1 H92 MM1:2H9 MM1 H101 MM1:1H10 MM1 H102 MM1:2H10 MM1 H121 MM1:1H12 MM1 H122 MM1:2H12 MM1 H131 MM1:1H13 MM1 H132 MM1:2H13 MM1 H11A MM2:1H1 MM2 H12 MM2:2H1 MM2 H21A MM2:1H2 MM2 H22 MM2:2H2 MM2 H31 MM2:1H3 MM2 H32 MM2:2H3 MM2 H51 MM2:1H5 MM2 H52 MM2:2H5 MM2 H61 MM2:1H6 MM2 H62 MM2:2H6 MM2 H81 MM2:1H8 MM2 H82 MM2:2H8 MM2 H91 MM2:1H9 MM2 H92 MM2:2H9 MM2 H101 MM2:1H10 MM2 H102 MM2:2H10 MM2 H121 MM2:1H12 MM2 H122 MM2:2H12 MM2 H131 MM2:1H13 MM2 H132 MM2:2H13 MM2 H41 MM2:1H4 MM2 H42 MM2:2H4 MM2 H71 MM2:1H7 MM2 H72 MM2:2H7 MM2 H111 MM2:1H11 MM2 H112 MM2:2H11 MM2 H141 MM2:1H14 MM2 H142 MM2:2H14 MM2 H151 MM2:1H15 MM2 H152 MM2:2H15 MM2 H161 MM2:1H16 MM2 H162 MM2:2H16 MM2 H171 MM2:1H17 MM2 H172 MM2:2H17 MM2 H181 MM2:1H18 MM2 H182 MM2:2H18 MM2 H191 MM2:1H19 MM2 H192 MM2:2H19 MM2 H201 MM2:1H20 MM2 H202 MM2:2H20 MM2 H271 MM2:1H27 MM2 H272 MM2:2H27 MM2 H281 MM2:1H28 MM2 H282 MM2:2H28 MM2 H21 MM3:1H2 MM3 H31 MM3:1H3 MM3 H51 MM3:1H5 MM3 H61 MM3:1H6 MM3 H81 MM3:1H8 MM3 H82 MM3:2H8 MM3 H83 MM3:3H8 MM3 H131 MM3:1H13 MM3 H161 MM3:1H16 MM3 H162 MM3:2H16 MM3 H171 MM3:1H17 MM3 H172 MM3:2H17 MM3 H181 MM3:1H18 MM3 H182 MM3:2H18 MM3 H191 MM3:1H19 MM3 H192 MM3:2H19 MM3 H193 MM3:3H19 MM3 H201 MM3:1H20 MM3 H202 MM3:2H20 MM3 H203 MM3:3H20 MM3 H171 MM5:1H17 MM5 H172 MM5:2H17 MM5 H181 MM5:1H18 MM5 H182 MM5:2H18 MM5 H191 MM5:1H19 MM5 H192 MM5:2H19 MM5 H201 MM5:1H20 MM5 H202 MM5:2H20 MM5 H211 MM5:1H21 MM5 H212 MM5:2H21 MM5 H221 MM5:1H22 MM5 H222 MM5:2H22 MM5 H231 MM5:1H23 MM5 H232 MM5:2H23 MM5 H241 MM5:1H24 MM5 H242 MM5:2H24 MM5 H251 MM5:1H25 MM5 H252 MM5:2H25 MM5 H261 MM5:1H26 MM5 H262 MM5:2H26 MM5 H271 MM5:1H27 MM5 H272 MM5:2H27 MM5 H281 MM5:1H28 MM5 H282 MM5:2H28 MM5 H51 MM5:1H5 MM5 H52 MM5:2H5 MM5 H61 MM5:1H6 MM5 H62 MM5:2H6 MM5 H81 MM5:1H8 MM5 H82 MM5:2H8 MM5 H91 MM5:1H9 MM5 H92 MM5:2H9 MM5 H101 MM5:1H10 MM5 H102 MM5:2H10 MM5 H121 MM5:1H12 MM5 H122 MM5:2H12 MM5 H131 MM5:1H13 MM5 H132 MM5:2H13 MM5 H11 MM5:1H1 MM5 H12 MM5:2H1 MM5 H21 MM5:1H2 MM5 H22 MM5:2H2 MM5 H31 MM5:1H3 MM5 H32 MM5:2H3 MM5 H131 MM6:1H13 MM6 H132 MM6:2H13 MM6 H11 MM6:1H1 MM6 H12 MM6:2H1 MM6 H121 MM6:1H12 MM6 H122 MM6:2H12 MM6 H101 MM6:1H10 MM6 H102 MM6:2H10 MM6 H91 MM6:1H9 MM6 H92 MM6:2H9 MM6 H81 MM6:1H8 MM6 H82 MM6:2H8 MM6 H61 MM6:1H6 MM6 H62 MM6:2H6 MM6 H51 MM6:1H5 MM6 H52 MM6:2H5 MM6 H31 MM6:1H3 MM6 H32 MM6:2H3 MM6 H21 MM6:1H2 MM6 H22 MM6:2H2 MM6 H61 MMA:1H6 MMA H62 MMA:2H6 MMA H71 MMA:1H7 MMA H72 MMA:2H7 MMA H73 MMA:3H7 MMA H11A MMB:1H1 MMB H12A MMB:2H1 MMB H131 MMB:1H13 MMB H132 MMB:2H13 MMB H261 MMB:1H26 MMB H262 MMB:2H26 MMB H281 MMB:1H28 MMB H282 MMB:2H28 MMB H283 MMB:3H28 MMB H291 MMB:1H29 MMB H292 MMB:2H29 MMB H321 MMB:1H32 MMB H322 MMB:2H32 MMB H323 MMB:3H32 MMB H51 MMB:1H5 MMB H52 MMB:2H5 MMB H53 MMB:3H5 MMB H1 MMC:1H MMC H2 MMC:2H MMC H3 MMC:3H MMC HB2 MME:1HB MME HB3 MME:2HB MME HG2 MME:1HG MME HG3 MME:2HG MME HE1 MME:1HE MME HE2 MME:2HE MME HE3 MME:3HE MME HM1 MME:1HM MME HM2 MME:2HM MME HM3 MME:3HM MME H131 MMI:1H13 MMI H132 MMI:2H13 MMI H133 MMI:3H13 MMI H141 MMI:1H14 MMI H142 MMI:2H14 MMI H143 MMI:3H14 MMI H171 MMI:1H17 MMI H172 MMI:2H17 MMI H221 MMI:1H22 MMI H222 MMI:2H22 MMI H281 MMI:1H28 MMI H282 MMI:2H28 MMI H271 MMI:1H27 MMI H272 MMI:2H27 MMI H261 MMI:1H26 MMI H262 MMI:2H26 MMI H251 MMI:1H25 MMI H252 MMI:2H25 MMI H241 MMI:1H24 MMI H242 MMI:2H24 MMI H331 MMI:1H33 MMI H332 MMI:2H33 MMI H351 MMI:1H35 MMI H352 MMI:2H35 MMI H353 MMI:3H35 MMI H361 MMI:1H36 MMI H362 MMI:2H36 MMI H363 MMI:3H36 MMI H371 MMI:1H37 MMI H372 MMI:2H37 MMI H391 MMI:1H39 MMI H392 MMI:2H39 MMI H393 MMI:3H39 MMI H441 MMI:1H44 MMI H442 MMI:2H44 MMI H443 MMI:3H44 MMI H431 MMI:1H43 MMI H432 MMI:2H43 MMI H433 MMI:3H43 MMI H511 MMI:1H51 MMI H512 MMI:2H51 MMI H2A1 MMM:1H2A MMM H2A2 MMM:2H2A MMM H2A3 MMM:3H2A MMM H5A1 MMM:1H5A MMM H5A2 MMM:2H5A MMM HAB1 MMM:1HAB MMM HAB2 MMM:2HAB MMM HAB3 MMM:3HAB MMM HBA1 MMM:1HBA MMM HBA2 MMM:2HBA MMM H81 MMN:1H8 MMN H82 MMN:2H8 MMN H83 MMN:3H8 MMN H11 MMN:1H1 MMN H12 MMN:2H1 MMN H61 MMN:1H6 MMN H62 MMN:2H6 MMN HCB1 MMO:1HCB MMO HCB2 MMO:2HCB MMO HCG1 MMO:1HCG MMO HCG2 MMO:2HCG MMO HCD1 MMO:1HCD MMO HCD2 MMO:2HCD MMO HH21 MMO:1HH2 MMO HH22 MMO:2HH2 MMO HH11 MMO:1HH1 MMO HH12 MMO:2HH1 MMO HC1 MMO:1HC MMO HC2 MMO:2HC MMO HC3 MMO:3HC MMO H11 MMP:1H1 MMP H12 MMP:2H1 MMP H13 MMP:3H1 MMP H161 MMP:1H16 MMP H162 MMP:2H16 MMP H163 MMP:3H16 MMP H171 MMP:1H17 MMP H172 MMP:2H17 MMP H181 MMP:1H18 MMP H182 MMP:2H18 MMP H183 MMP:3H18 MMP H261 MMP:1H26 MMP H262 MMP:2H26 MMP H263 MMP:3H26 MMP H271 MMP:1H27 MMP H272 MMP:2H27 MMP H281 MMP:1H28 MMP H282 MMP:2H28 MMP H283 MMP:3H28 MMP H361 MMP:1H36 MMP H362 MMP:2H36 MMP H363 MMP:3H36 MMP H371 MMP:1H37 MMP H372 MMP:2H37 MMP H381 MMP:1H38 MMP H382 MMP:2H38 MMP H461 MMP:1H46 MMP H462 MMP:2H46 MMP H463 MMP:3H46 MMP H471 MMP:1H47 MMP H472 MMP:2H47 MMP H481 MMP:1H48 MMP H482 MMP:2H48 MMP HC11 MMQ:1HC1 MMQ HC12 MMQ:2HC1 MMQ H41 MMR:1H4 MMR H42 MMR:2H4 MMR H61 MMR:1H6 MMR H62 MMR:2H6 MMR H71 MMR:1H7 MMR H72 MMR:2H7 MMR H73 MMR:3H7 MMR H91 MMR:1H9 MMR H92 MMR:2H9 MMR H93 MMR:3H9 MMR H121 MMR:1H12 MMR H122 MMR:2H12 MMR H123 MMR:3H12 MMR HN11 MMS:1HN1 MMS HN12 MMS:2HN1 MMS HC31 MMS:1HC3 MMS HC32 MMS:2HC3 MMS HC31 MMT:1HC3 MMT HC32 MMT:2HC3 MMT HC33 MMT:3HC3 MMT HNP1 MMT:1HNP MMT HNP2 MMT:2HNP MMT HNP3 MMT:3HNP MMT H5' MMT:1H5* MMT H5'' MMT:2H5* MMT H4' MMT: H4* MMT H1' MMT: H1* MMT H2' MMT:1H2* MMT H2'' MMT:2H2* MMT H3' MMT: H3* MMT HO3' MMT:H3T MMT H71 MMT:1H5M MMT H72 MMT:2H5M MMT H73 MMT:3H5M MMT H41 MMZ:1H4 MMZ H42 MMZ:2H4 MMZ H43 MMZ:3H4 MMZ H21 MN1:1H2 MN1 H22 MN1:2H2 MN1 H31 MN1:1H3 MN1 H32 MN1:2H3 MN1 H51 MN1:1H5 MN1 H52 MN1:2H5 MN1 H61 MN1:1H6 MN1 H62 MN1:2H6 MN1 H71 MN2:1H7 MN2 H72 MN2:2H7 MN2 H91 MN2:1H9 MN2 H92 MN2:2H9 MN2 H101 MN2:1H10 MN2 H102 MN2:2H10 MN2 H111 MN2:1H11 MN2 H112 MN2:2H11 MN2 HN21 MN2:1HN2 MN2 HN22 MN2:2HN2 MN2 HN23 MN2:3HN2 MN2 H11 MN4:1H1 MN4 H12 MN4:2H1 MN4 H31 MN4:1H3 MN4 H32 MN4:2H3 MN4 H21 MN4:1H2 MN4 H22 MN4:2H2 MN4 HO11 MN5:1HO1 MN5 HO12 MN5:2HO1 MN5 HO21 MN5:1HO2 MN5 HO22 MN5:2HO2 MN5 HO31 MN5:1HO3 MN5 HO32 MN5:2HO3 MN5 HO41 MN5:1HO4 MN5 HO42 MN5:2HO4 MN5 HO51 MN5:1HO5 MN5 HO52 MN5:2HO5 MN5 HO11 MN6:1HO1 MN6 HO12 MN6:2HO1 MN6 HO21 MN6:1HO2 MN6 HO22 MN6:2HO2 MN6 HO31 MN6:1HO3 MN6 HO32 MN6:2HO3 MN6 HO41 MN6:1HO4 MN6 HO42 MN6:2HO4 MN6 HO51 MN6:1HO5 MN6 HO52 MN6:2HO5 MN6 HO61 MN6:1HO6 MN6 HO62 MN6:2HO6 MN6 H71 MN7:1H7 MN7 H72 MN7:2H7 MN7 H91 MN7:1H9 MN7 H92 MN7:2H9 MN7 H111 MN7:1H11 MN7 H112 MN7:2H11 MN7 H113 MN7:3H11 MN7 H121 MN7:1H12 MN7 H122 MN7:2H12 MN7 H123 MN7:3H12 MN7 H51 MN8:1H5 MN8 H52 MN8:2H5 MN8 H53 MN8:3H5 MN8 H61 MN8:1H6 MN8 H62 MN8:2H6 MN8 H63 MN8:3H6 MN8 H121 MN8:1H12 MN8 H122 MN8:2H12 MN8 H151 MN8:1H15 MN8 H152 MN8:2H15 MN8 H31 MNA:1H3 MNA H32 MNA:2H3 MNA H91 MNA:1H9 MNA H92 MNA:2H9 MNA H111 MNA:1H11 MNA H112 MNA:2H11 MNA H113 MNA:3H11 MNA H121 MNA:1H12 MNA H122 MNA:2H12 MNA H123 MNA:3H12 MNA HOB1 MNA:1HOB MNA H11 MNC:1H1 MNC H12 MNC:2H1 MNC H13 MNC:3H1 MNC H91 MNE:1H9 MNE H92 MNE:2H9 MNE H101 MNE:1H10 MNE H102 MNE:2H10 MNE H131 MNE:1H13 MNE H132 MNE:2H13 MNE H133 MNE:3H13 MNE H121 MNE:1H12 MNE H122 MNE:2H12 MNE H123 MNE:3H12 MNE H71 MNE:1H7 MNE H72 MNE:2H7 MNE H73 MNE:3H7 MNE H81 MNG:1H8 MNG H82 MNG:2H8 MNG H101 MNG:1H10 MNG H102 MNG:2H10 MNG H1' MNG: H1* MNG H2' MNG: H2* MNG H3' MNG: H3* MNG H4' MNG: H4* MNG H5M1 MNG:1H5M MNG H5M2 MNG:2H5M MNG H5M3 MNG:3H5M MNG H1M1 MNG:1H1M MNG H1M2 MNG:2H1M MNG H1M3 MNG:3H1M MNG H2M1 MNG:1H2M MNG H2M2 MNG:2H2M MNG H2M3 MNG:3H2M MNG H7M1 MNG:1H7M MNG H7M2 MNG:2H7M MNG H7M3 MNG:3H7M MNG H9M1 MNG:1H9M MNG H9M2 MNG:2H9M MNG H9M3 MNG:3H9M MNG HO2' MNG:*HO2 MNG HO4' MNG:*HO4 MNG HMA1 MNH:1HMA MNH HMA2 MNH:2HMA MNH HMA3 MNH:3HMA MNH HAA1 MNH:1HAA MNH HAA2 MNH:2HAA MNH HBA1 MNH:1HBA MNH HBA2 MNH:2HBA MNH HMB1 MNH:1HMB MNH HMB2 MNH:2HMB MNH HMB3 MNH:3HMB MNH HBB1 MNH:1HBB MNH HBB2 MNH:2HBB MNH HMC1 MNH:1HMC MNH HMC2 MNH:2HMC MNH HMC3 MNH:3HMC MNH HBC1 MNH:1HBC MNH HBC2 MNH:2HBC MNH HMD1 MNH:1HMD MNH HMD2 MNH:2HMD MNH HMD3 MNH:3HMD MNH HAD1 MNH:1HAD MNH HAD2 MNH:2HAD MNH HBD1 MNH:1HBD MNH HBD2 MNH:2HBD MNH H8B1 MNI:1H8B MNI H8B2 MNI:2H8B MNI H8B3 MNI:3H8B MNI H9B1 MNI:1H9B MNI H9B2 MNI:2H9B MNI H9B3 MNI:3H9B MNI H1A1 MNI:1H1A MNI H1A2 MNI:2H1A MNI H6A1 MNI:1H6A MNI H6A2 MNI:2H6A MNI H MNL: HN MNL HB2 MNL:1HB MNL HB3 MNL:2HB MNL HD2 MNL:1HD MNL HD3 MNL:2HD MNL HE1 MNL:1HE MNL HE2 MNL:2HE MNL HE3 MNL:3HE MNL HM11 MNL:1HM1 MNL HM12 MNL:2HM1 MNL HM13 MNL:3HM1 MNL HM41 MNL:1HM4 MNL HM42 MNL:2HM4 MNL HM43 MNL:3HM4 MNL HC91 MNM:1HC9 MNM HC92 MNM:2HC9 MNM H161 MNO:1H16 MNO H162 MNO:2H16 MNO H163 MNO:3H16 MNO H171 MNO:1H17 MNO H172 MNO:2H17 MNO H173 MNO:3H17 MNO H201 MNO:1H20 MNO H202 MNO:2H20 MNO H211 MNO:1H21 MNO H212 MNO:2H21 MNO H221 MNO:1H22 MNO H222 MNO:2H22 MNO H241 MNO:1H24 MNO H242 MNO:2H24 MNO H151 MNO:1H15 MNO H152 MNO:2H15 MNO H153 MNO:3H15 MNO H21 MNP:1H2 MNP H22 MNP:2H2 MNP HOB2 MNQ:2HOB MNQ HOA2 MNQ:2HOA MNQ HNA1 MNQ:1HNA MNQ HA21 MNQ:1HA2 MNQ HA22 MNQ:2HA2 MNQ HA11 MNQ:1HA1 MNQ HA12 MNQ:2HA1 MNQ HMA1 MNR:1HMA MNR HMA2 MNR:2HMA MNR HMA3 MNR:3HMA MNR HAA1 MNR:1HAA MNR HAA2 MNR:2HAA MNR HBA1 MNR:1HBA MNR HBA2 MNR:2HBA MNR HMB1 MNR:1HMB MNR HMB2 MNR:2HMB MNR HMB3 MNR:3HMB MNR HBB1 MNR:1HBB MNR HBB2 MNR:2HBB MNR HMC1 MNR:1HMC MNR HMC2 MNR:2HMC MNR HMC3 MNR:3HMC MNR HBC1 MNR:1HBC MNR HBC2 MNR:2HBC MNR HMD1 MNR:1HMD MNR HMD2 MNR:2HMD MNR HMD3 MNR:3HMD MNR HAD1 MNR:1HAD MNR HAD2 MNR:2HAD MNR HBD1 MNR:1HBD MNR HBD2 MNR:2HBD MNR HM11 MNS:1HM1 MNS HM12 MNS:2HM1 MNS HM13 MNS:3HM1 MNS HM21 MNS:1HM2 MNS HM22 MNS:2HM2 MNS HM23 MNS:3HM2 MNS HN31 MNS:1HN3 MNS HN32 MNS:2HN3 MNS HOB2 MNT:2HOB MNT HOB3 MNT:3HOB MNT HOA2 MNT:2HOA MNT H5'1 MNT:1H5* MNT H5'2 MNT:2H5* MNT H4B MNT: H4* MNT H3B MNT: H3* MNT H2'1 MNT:1H2* MNT H2'2 MNT:2H2* MNT H1' MNT: H1* MNT HN61 MNT:1HN6 MNT HN62 MNT:2HN6 MNT HN2' MNT:'HN2 MNT HM'1 MNT:1HM' MNT HM'2 MNT:2HM' MNT HM'3 MNT:3HM' MNT HOP2 MNU:2HOP MNU H5' MNU:1H5* MNU H5'' MNU:2H5* MNU H4' MNU: H4* MNU H1' MNU: H1* MNU H71 MNU:1H7 MNU H72 MNU:2H7 MNU H91 MNU:1H9 MNU H92 MNU:2H9 MNU H93 MNU:3H9 MNU H2' MNU: H2* MNU HO2' MNU:2HO* MNU H3' MNU: H3* MNU HO3' MNU:H3T MNU HOP3 MNU:3HOP MNU H MNV: HN MNV HN1 MNV:1HN MNV HN2 MNV:2HN MNV HN3 MNV:3HN MNV HG11 MNV:1HG1 MNV HG12 MNV:2HG1 MNV HG13 MNV:3HG1 MNV HG21 MNV:1HG2 MNV HG22 MNV:2HG2 MNV HG23 MNV:3HG2 MNV HNT1 MNV:1HNT MNV HNT2 MNV:2HNT MNV H221 MNY:1H22 MNY H222 MNY:2H22 MNY H251 MNY:1H25 MNY H252 MNY:2H25 MNY HO11 MO1:1HO1 MO1 HO12 MO1:2HO1 MO1 HO11 MO2:1HO1 MO2 HO12 MO2:2HO1 MO2 HO21 MO2:1HO2 MO2 HO22 MO2:2HO2 MO2 HO11 MO3:1HO1 MO3 HO12 MO3:2HO1 MO3 HO21 MO3:1HO2 MO3 HO22 MO3:2HO2 MO3 HO31 MO3:1HO3 MO3 HO32 MO3:2HO3 MO3 HO11 MO4:1HO1 MO4 HO12 MO4:2HO1 MO4 HO21 MO4:1HO2 MO4 HO22 MO4:2HO2 MO4 HO31 MO4:1HO3 MO4 HO32 MO4:2HO3 MO4 HO41 MO4:1HO4 MO4 HO42 MO4:2HO4 MO4 HO11 MO5:1HO1 MO5 HO12 MO5:2HO1 MO5 HO21 MO5:1HO2 MO5 HO22 MO5:2HO2 MO5 HO31 MO5:1HO3 MO5 HO32 MO5:2HO3 MO5 HO41 MO5:1HO4 MO5 HO42 MO5:2HO4 MO5 HO51 MO5:1HO5 MO5 HO52 MO5:2HO5 MO5 HO11 MO6:1HO1 MO6 HO12 MO6:2HO1 MO6 HO21 MO6:1HO2 MO6 HO22 MO6:2HO2 MO6 HO31 MO6:1HO3 MO6 HO32 MO6:2HO3 MO6 HO41 MO6:1HO4 MO6 HO42 MO6:2HO4 MO6 HO51 MO6:1HO5 MO6 HO52 MO6:2HO5 MO6 HO61 MO6:1HO6 MO6 HO62 MO6:2HO6 MO6 H71 MO9:1H7 MO9 H72 MO9:2H7 MO9 H91 MO9:1H9 MO9 H92 MO9:2H9 MO9 H171 MO9:1H17 MO9 H172 MO9:2H17 MO9 H221 MO9:1H22 MO9 H222 MO9:2H22 MO9 H231 MO9:1H23 MO9 H232 MO9:2H23 MO9 H251 MO9:1H25 MO9 H252 MO9:2H25 MO9 H261 MO9:1H26 MO9 H262 MO9:2H26 MO9 H21 MOA:1H2 MOA H41 MOA:1H4 MOA H42 MOA:2H4 MOA H51 MOA:1H5 MOA H52 MOA:2H5 MOA H71 MOA:1H7 MOA H72 MOA:2H7 MOA H73 MOA:3H7 MOA H81 MOA:1H8 MOA H82 MOA:2H8 MOA H83 MOA:3H8 MOA H91 MOA:1H9 MOA H92 MOA:2H9 MOA H93 MOA:3H9 MOA H1O1 MOA:1H1O MOA H102 MOA:2H10 MOA H171 MOA:1H17 MOA H172 MOA:2H17 MOA HO41 MOA:1HO4 MOA HO51 MOA:1HO5 MOA H31 MOB:1H3 MOB H32 MOB:2H3 MOB H33 MOB:3H3 MOB H51 MOB:1H5 MOB H52 MOB:2H5 MOB H53 MOB:3H5 MOB HO4' MOB:'HO4 MOB H11 MOC:1H1 MOC H12 MOC:2H1 MOC HN21 MOC:1HN2 MOC HN22 MOC:2HN2 MOC H31 MOC:1H3 MOC H32 MOC:2H3 MOC HM61 MOC:1HM6 MOC HM62 MOC:2HM6 MOC HM63 MOC:3HM6 MOC HN71 MOC:1HN7 MOC HN72 MOC:2HN7 MOC H101 MOC:1H10 MOC H102 MOC:2H10 MOC H121 MOC:1H12 MOC H122 MOC:2H12 MOC HN21 MOD:1HN2 MOD HN22 MOD:2HN2 MOD HB1 MOD:1HB MOD HB2 MOD:2HB MOD HG1 MOD:1HG MOD HG2 MOD:2HG MOD HE1 MOD:1HE MOD HE2 MOD:2HE MOD HE3 MOD:3HE MOD H91 MOD:1H9 MOD H92 MOD:2H9 MOD HOS1 MOD:1HOS MOD H5'1 MOD:1H5* MOD H5'2 MOD:2H5* MOD H4' MOD: H4* MOD H3' MOD: H3* MOD H2' MOD: H2* MOD H1' MOD: H1* MOD HN61 MOD:1HN6 MOD HN62 MOD:2HN6 MOD HA'1 MOE:1HA* MOE HA'2 MOE:2HA* MOE HB'1 MOE:1HB* MOE HB'2 MOE:2HB* MOE HD'1 MOE:1HD* MOE HD'2 MOE:2HD* MOE HD'3 MOE:3HD* MOE H261 MOF:1H26 MOF H262 MOF:2H26 MOF H311 MOF:1H31 MOF H312 MOF:2H31 MOF H313 MOF:3H31 MOF H201 MOF:1H20 MOF H202 MOF:2H20 MOF H91 MOF:1H9 MOF H92 MOF:2H9 MOF H101 MOF:1H10 MOF H102 MOF:2H10 MOF H103 MOF:3H10 MOF H71 MOF:1H7 MOF H72 MOF:2H7 MOF H81 MOF:1H8 MOF H82 MOF:2H8 MOF H83 MOF:3H8 MOF H121 MOF:1H12 MOF H122 MOF:2H12 MOF H101 MOG:1H10 MOG H102 MOG:2H10 MOG H103 MOG:3H10 MOG HN21 MOG:1HN2 MOG HN22 MOG:2HN2 MOG H1 MOH:1H MOH H2 MOH:2H MOH H3 MOH:3H MOH H21 MOI:1H2 MOI H22 MOI:2H2 MOI H71 MOI:1H7 MOI H72 MOI:2H7 MOI H81 MOI:1H8 MOI H82 MOI:2H8 MOI H91 MOI:1H9 MOI H92 MOI:2H9 MOI H93 MOI:3H9 MOI HN11 MOL:1HN1 MOL HN12 MOL:2HN1 MOL H71 MOL:1H7 MOL H72 MOL:2H7 MOL H101 MOL:1H10 MOL H102 MOL:2H10 MOL H111 MOL:1H11 MOL H112 MOL:2H11 MOL H121 MOL:1H12 MOL H122 MOL:2H12 MOL H131 MOL:1H13 MOL H132 MOL:2H13 MOL H51 MON:1H5 MON H52 MON:2H5 MON H61 MON:1H6 MON H62 MON:2H6 MON H91 MON:1H9 MON H92 MON:2H9 MON H101 MON:1H10 MON H102 MON:2H10 MON H151 MON:1H15 MON H152 MON:2H15 MON H161 MON:1H16 MON H162 MON:2H16 MON H171 MON:1H17 MON H172 MON:2H17 MON H181 MON:1H18 MON H182 MON:2H18 MON H201 MON:1H20 MON H202 MON:2H20 MON H21 MOP:1H2 MOP H22 MOP:2H2 MOP H31 MOP:1H3 MOP H32 MOP:2H3 MOP H51 MOP:1H5 MOP H52 MOP:2H5 MOP H53 MOP:3H5 MOP HM41 MOP:1HM4 MOP HM42 MOP:2HM4 MOP HM43 MOP:3HM4 MOP H31 MOQ:1H3 MOQ H32A MOQ:2H3 MOQ H41 MOQ:1H4 MOQ H42 MOQ:2H4 MOQ H61 MOQ:1H6 MOQ H62 MOQ:2H6 MOQ H63 MOQ:3H6 MOQ H91 MOQ:1H9 MOQ H92 MOQ:2H9 MOQ H101 MOQ:1H10 MOQ H102 MOQ:2H10 MOQ H103 MOQ:3H10 MOQ H151 MOQ:1H15 MOQ H152 MOQ:2H15 MOQ H153 MOQ:3H15 MOQ H191 MOQ:1H19 MOQ H192 MOQ:2H19 MOQ H193 MOQ:3H19 MOQ H201 MOQ:1H20 MOQ H202 MOQ:2H20 MOQ H203 MOQ:3H20 MOQ H231 MOQ:1H23 MOQ H232 MOQ:2H23 MOQ H233 MOQ:3H23 MOQ H251 MOQ:1H25 MOQ H252 MOQ:2H25 MOQ H261 MOQ:1H26 MOQ H262 MOQ:2H26 MOQ H281 MOQ:1H28 MOQ H282 MOQ:2H28 MOQ H283 MOQ:3H28 MOQ H291 MOQ:1H29 MOQ H292 MOQ:2H29 MOQ H311 MOQ:1H31 MOQ H312 MOQ:2H31 MOQ H313 MOQ:3H31 MOQ H331 MOQ:1H33 MOQ H332 MOQ:2H33 MOQ H333 MOQ:3H33 MOQ H341 MOQ:1H34 MOQ H342 MOQ:2H34 MOQ H21 MOR:1H2 MOR H22 MOR:2H2 MOR H31 MOR:1H3 MOR H32 MOR:2H3 MOR H51 MOR:1H5 MOR H52 MOR:2H5 MOR H61 MOR:1H6 MOR H62 MOR:2H6 MOR HN21 MOT:1HN2 MOT HN22 MOT:2HN2 MOT HN41 MOT:1HN4 MOT HN42 MOT:2HN4 MOT H91 MOT:1H9 MOT H92 MOT:2H9 MOT HM1 MOT:1HM MOT HM2 MOT:2HM MOT HM3 MOT:3HM MOT HB1 MOT:1HB MOT HB2 MOT:2HB MOT HG1 MOT:1HG MOT HG2 MOT:2HG MOT HOE2 MOT:2HOE MOT H441 MOU:1H44 MOU H442 MOU:2H44 MOU H431 MOU:1H43 MOU H432 MOU:2H43 MOU H421 MOU:1H42 MOU H422 MOU:2H42 MOU H411 MOU:1H41 MOU H412 MOU:2H41 MOU H401 MOU:1H40 MOU H402 MOU:2H40 MOU H391 MOU:1H39 MOU H392 MOU:2H39 MOU H381 MOU:1H38 MOU H382 MOU:2H38 MOU H261 MOU:1H26 MOU H262 MOU:2H26 MOU H131 MOU:1H13 MOU H132 MOU:2H13 MOU H191 MOU:1H19 MOU H192 MOU:2H19 MOU H193 MOU:3H19 MOU H171 MOU:1H17 MOU H172 MOU:2H17 MOU H181 MOU:1H18 MOU H182 MOU:2H18 MOU H71 MOU:1H7 MOU H72 MOU:2H7 MOU H211 MOU:1H21 MOU H212 MOU:2H21 MOU H213 MOU:3H21 MOU H221 MOU:1H22 MOU H222 MOU:2H22 MOU H223 MOU:3H22 MOU H341 MOU:1H34 MOU H342 MOU:2H34 MOU H343 MOU:3H34 MOU H361 MOU:1H36 MOU H362 MOU:2H36 MOU H363 MOU:3H36 MOU H621 MOX:1H62 MOX H622 MOX:2H62 MOX H623 MOX:3H62 MOX H51 MOX:1H5 MOX H52 MOX:2H5 MOX H91 MOX:1H9 MOX H92 MOX:2H9 MOX H93 MOX:3H9 MOX H51 MOY:1H5 MOY H52 MOY:2H5 MOY H53 MOY:3H5 MOY H61 MOY:1H6 MOY H62 MOY:2H6 MOY H63 MOY:3H6 MOY H11 MP1:1H1 MP1 H12 MP1:2H1 MP1 H13 MP1:3H1 MP1 H161 MP1:1H16 MP1 H162 MP1:2H16 MP1 H163 MP1:3H16 MP1 H171 MP1:1H17 MP1 H172 MP1:2H17 MP1 H181 MP1:1H18 MP1 H182 MP1:2H18 MP1 H183 MP1:3H18 MP1 H261 MP1:1H26 MP1 H262 MP1:2H26 MP1 H263 MP1:3H26 MP1 H271 MP1:1H27 MP1 H272 MP1:2H27 MP1 H281 MP1:1H28 MP1 H282 MP1:2H28 MP1 H283 MP1:3H28 MP1 H361 MP1:1H36 MP1 H362 MP1:2H36 MP1 H363 MP1:3H36 MP1 H371 MP1:1H37 MP1 H372 MP1:2H37 MP1 H381 MP1:1H38 MP1 H382 MP1:2H38 MP1 H461 MP1:1H46 MP1 H462 MP1:2H46 MP1 H463 MP1:3H46 MP1 H471 MP1:1H47 MP1 H472 MP1:2H47 MP1 H481 MP1:1H48 MP1 H482 MP1:2H48 MP1 H171 MP2:1H17 MP2 H172 MP2:2H17 MP2 HA1 MP2:1HA MP2 HA2 MP2:2HA MP2 H231 MP2:1H23 MP2 H232 MP2:2H23 MP2 H31 MP3:1H3 MP3 H32 MP3:2H3 MP3 HOC2 MP3:2HOC MP3 HOC3 MP3:3HOC MP3 H31 MP5:1H3 MP5 H32 MP5:2H3 MP5 HN11 MP5:1HN1 MP5 HN12 MP5:2HN1 MP5 H51 MP5:1H5 MP5 H52 MP5:2H5 MP5 H53 MP5:3H5 MP5 H111 MP9:1H11 MP9 H112 MP9:2H11 MP9 H241 MP9:1H24 MP9 H242 MP9:2H24 MP9 H291 MP9:1H29 MP9 H292 MP9:2H29 MP9 H12A MPA:2H1 MPA H21 MPA:1H2 MPA H22 MPA:2H2 MPA H31 MPA:1H3 MPA H32 MPA:2H3 MPA H41 MPA:1H4 MPA H42 MPA:2H4 MPA H51 MPA:1H5 MPA H52 MPA:2H5 MPA H61 MPA:1H6 MPA H62 MPA:2H6 MPA H63 MPA:3H6 MPA H81 MPA:1H8 MPA H82 MPA:2H8 MPA H101 MPA:1H10 MPA H102 MPA:2H10 MPA H111 MPA:1H11 MPA H112 MPA:2H11 MPA H131 MPA:1H13 MPA H132 MPA:2H13 MPA H133 MPA:3H13 MPA H151 MPA:1H15 MPA H152 MPA:2H15 MPA H153 MPA:3H15 MPA H161 MPA:1H16 MPA H162 MPA:2H16 MPA H163 MPA:3H16 MPA HM1 MPB:1HM MPB HM2 MPB:2HM MPB HM3 MPB:3HM MPB H12A MPC:2H1 MPC H21 MPC:1H2 MPC H22 MPC:2H2 MPC H31 MPC:1H3 MPC H32 MPC:2H3 MPC H41 MPC:1H4 MPC H42 MPC:2H4 MPC H51 MPC:1H5 MPC H52 MPC:2H5 MPC H61 MPC:1H6 MPC H62 MPC:2H6 MPC H63 MPC:3H6 MPC H81 MPC:1H8 MPC H82 MPC:2H8 MPC H101 MPC:1H10 MPC H102 MPC:2H10 MPC H111 MPC:1H11 MPC H112 MPC:2H11 MPC H131 MPC:1H13 MPC H132 MPC:2H13 MPC H133 MPC:3H13 MPC H151 MPC:1H15 MPC H152 MPC:2H15 MPC H153 MPC:3H15 MPC H161 MPC:1H16 MPC H162 MPC:2H16 MPC H163 MPC:3H16 MPC H11 MPD:1H1 MPD H12 MPD:2H1 MPD H13 MPD:3H1 MPD HM1 MPD:1HM MPD HM2 MPD:2HM MPD HM3 MPD:3HM MPD H31 MPD:1H3 MPD H32 MPD:2H3 MPD H51 MPD:1H5 MPD H52 MPD:2H5 MPD H53 MPD:3H5 MPD H31 MPE:1H3 MPE H32 MPE:2H3 MPE H21 MPE:1H2 MPE H22 MPE:2H2 MPE H1M1 MPF:1H1M MPF H1M2 MPF:2H1M MPF H1M3 MPF:3H1M MPF H2M1 MPF:1H2M MPF H2M2 MPF:2H2M MPF H2M3 MPF:3H2M MPF H161 MPF:1H16 MPF H162 MPF:2H16 MPF H22 MPG:2H2 MPG H21 MPG:1H2 MPG H32 MPG:2H3 MPG H31 MPG:1H3 MPG H42 MPG:2H4 MPG H41 MPG:1H4 MPG H52 MPG:2H5 MPG H51 MPG:1H5 MPG H62 MPG:2H6 MPG H61 MPG:1H6 MPG H72 MPG:2H7 MPG H71 MPG:1H7 MPG H82 MPG:2H8 MPG H81 MPG:1H8 MPG H112 MPG:2H11 MPG H111 MPG:1H11 MPG H122 MPG:2H12 MPG H121 MPG:1H12 MPG H132 MPG:2H13 MPG H131 MPG:1H13 MPG H142 MPG:2H14 MPG H141 MPG:1H14 MPG H152 MPG:2H15 MPG H151 MPG:1H15 MPG H162 MPG:2H16 MPG H161 MPG:1H16 MPG H172 MPG:2H17 MPG H171 MPG:1H17 MPG H183 MPG:3H18 MPG H182 MPG:2H18 MPG H181 MPG:1H18 MPG H12A MPG:2H1 MPG H11 MPG:1H1 MPG H212 MPG:2H21 MPG H211 MPG:1H21 MPG HB1 MPH:1HB MPH HB2 MPH:2HB MPH HG1 MPH:1HG MPH HG2 MPH:2HG MPH HE1 MPH:1HE MPH HE2 MPH:2HE MPH HE3 MPH:3HE MPH HB1 MPJ:1HB MPJ HB2 MPJ:2HB MPJ HG1 MPJ:1HG MPJ HG2 MPJ:2HG MPJ HE1 MPJ:1HE MPJ HE2 MPJ:2HE MPJ HE3 MPJ:3HE MPJ HOP2 MPL:2HOP MPL HOP3 MPL:3HOP MPL H51 MPL:1H5 MPL H52 MPL:2H5 MPL H11 MPL:1H1 MPL H12 MPL:2H1 MPL H13 MPL:3H1 MPL H21 MPL:1H2 MPL H22 MPL:2H2 MPL H23 MPL:3H2 MPL H4AC MPM:CH4A MPM H5A1 MPM:1H5A MPM H5A2 MPM:2H5A MPM H2A1 MPM:1H2A MPM H2A2 MPM:2H2A MPM H2A3 MPM:3H2A MPM HA21 MPM:1HA2 MPM HA22 MPM:2HA2 MPM HA11 MPM:1HA1 MPM HA12 MPM:2HA1 MPM HA13 MPM:3HA1 MPM HA31 MPM:1HA3 MPM HA32 MPM:2HA3 MPM HA33 MPM:3HA3 MPM HOP3 MPN:3HOP MPN HOP2 MPN:2HOP MPN H4'1 MPN:1H4' MPN H4'2 MPN:2H4' MPN H21 MPN:1H2 MPN H22 MPN:2H2 MPN H11 MPO:1H1 MPO H12 MPO:2H1 MPO H21 MPO:1H2 MPO H22 MPO:2H2 MPO H31 MPO:1H3 MPO H32 MPO:2H3 MPO H41 MPO:1H4 MPO H42 MPO:2H4 MPO H51 MPO:1H5 MPO H52 MPO:2H5 MPO H61 MPO:1H6 MPO H62 MPO:2H6 MPO H71 MPO:1H7 MPO H72 MPO:2H7 MPO HA1 MPP:1HA MPP HA2 MPP:2HA MPP HB1 MPP:1HB MPP HB2 MPP:2HB MPP HEA1 MPP:1HEA MPP HEA2 MPP:2HEA MPP HEA3 MPP:3HEA MPP HZA1 MPP:1HZA MPP HZA2 MPP:2HZA MPP HZA3 MPP:3HZA MPP HM1 MPQ:1HM MPQ HM2 MPQ:2HM MPQ HM3 MPQ:3HM MPQ HA1 MPQ:1HA MPQ HD11 MPQ:1HD1 MPQ HD21 MPQ:1HD2 MPQ HE11 MPQ:1HE1 MPQ HE21 MPQ:1HE2 MPQ HZ1 MPQ:1HZ MPQ H21 MPR:1H2 MPR H22 MPR:2H2 MPR H31 MPR:1H3 MPR H32 MPR:2H3 MPR HM1 MPS:1HM MPS HM2 MPS:2HM MPS HM3 MPS:3HM MPS HA1 MPT:1HA MPT HA2 MPT:2HA MPT HB1 MPT:1HB MPT HB2 MPT:2HB MPT H131 MPU:1H13 MPU H132 MPU:2H13 MPU H281 MPU:1H28 MPU H282 MPU:2H28 MPU H231 MPX:1H23 MPX H232 MPX:2H23 MPX H221 MPX:1H22 MPX H222 MPX:2H22 MPX H241 MPX:1H24 MPX H242 MPX:2H24 MPX H243 MPX:3H24 MPX H201 MPX:1H20 MPX H202 MPX:2H20 MPX H191 MPX:1H19 MPX H192 MPX:2H19 MPX H151 MPX:1H15 MPX H152 MPX:2H15 MPX H181 MPY:1H18 MPY H182 MPY:2H18 MPY H191 MPY:1H19 MPY H192 MPY:2H19 MPY H211 MPY:1H21 MPY H212 MPY:2H21 MPY H221 MPY:1H22 MPY H222 MPY:2H22 MPY H231 MPY:1H23 MPY H232 MPY:2H23 MPY H233 MPY:3H23 MPY H321 MPY:1H32 MPY H322 MPY:2H32 MPY H341 MPY:1H34 MPY H342 MPY:2H34 MPY H361 MPY:1H36 MPY H362 MPY:2H36 MPY H363 MPY:3H36 MPY H371 MPY:1H37 MPY H372 MPY:2H37 MPY H373 MPY:3H37 MPY H081 MPZ:1H08 MPZ H082 MPZ:2H08 MPZ H061 MPZ:1H06 MPZ H062 MPZ:2H06 MPZ H051 MPZ:1H05 MPZ H052 MPZ:2H05 MPZ H041 MPZ:1H04 MPZ H042 MPZ:2H04 MPZ H031 MPZ:1H03 MPZ H032 MPZ:2H03 MPZ H011 MPZ:1H01 MPZ H012 MPZ:2H01 MPZ H013 MPZ:3H01 MPZ H201 MQ0:1H20 MQ0 H202 MQ0:2H20 MQ0 HN91 MQ0:1HN9 MQ0 HN92 MQ0:2HN9 MQ0 H71 MQ1:1H7 MQ1 H72 MQ1:2H7 MQ1 H141 MQ1:1H14 MQ1 H142 MQ1:2H14 MQ1 H331 MQ1:1H33 MQ1 H332 MQ1:2H33 MQ1 H333 MQ1:3H33 MQ1 H2M1 MQ7:1H2M MQ7 H2M2 MQ7:2H2M MQ7 H2M3 MQ7:3H2M MQ7 H111 MQ7:1H11 MQ7 H112 MQ7:2H11 MQ7 H141 MQ7:1H14 MQ7 H142 MQ7:2H14 MQ7 H143 MQ7:3H14 MQ7 H151 MQ7:1H15 MQ7 H152 MQ7:2H15 MQ7 H161 MQ7:1H16 MQ7 H162 MQ7:2H16 MQ7 H191 MQ7:1H19 MQ7 H192 MQ7:2H19 MQ7 H193 MQ7:3H19 MQ7 H201 MQ7:1H20 MQ7 H202 MQ7:2H20 MQ7 H211 MQ7:1H21 MQ7 H212 MQ7:2H21 MQ7 H241 MQ7:1H24 MQ7 H242 MQ7:2H24 MQ7 H243 MQ7:3H24 MQ7 H251 MQ7:1H25 MQ7 H252 MQ7:2H25 MQ7 H261 MQ7:1H26 MQ7 H262 MQ7:2H26 MQ7 H291 MQ7:1H29 MQ7 H292 MQ7:2H29 MQ7 H293 MQ7:3H29 MQ7 H301 MQ7:1H30 MQ7 H302 MQ7:2H30 MQ7 H311 MQ7:1H31 MQ7 H312 MQ7:2H31 MQ7 H341 MQ7:1H34 MQ7 H342 MQ7:2H34 MQ7 H343 MQ7:3H34 MQ7 H351 MQ7:1H35 MQ7 H352 MQ7:2H35 MQ7 H361 MQ7:1H36 MQ7 H362 MQ7:2H36 MQ7 H391 MQ7:1H39 MQ7 H392 MQ7:2H39 MQ7 H393 MQ7:3H39 MQ7 H401 MQ7:1H40 MQ7 H402 MQ7:2H40 MQ7 H411 MQ7:1H41 MQ7 H412 MQ7:2H41 MQ7 H441 MQ7:1H44 MQ7 H442 MQ7:2H44 MQ7 H443 MQ7:3H44 MQ7 H451 MQ7:1H45 MQ7 H452 MQ7:2H45 MQ7 H453 MQ7:3H45 MQ7 H2M1 MQ8:1H2M MQ8 H2M2 MQ8:2H2M MQ8 H2M3 MQ8:3H2M MQ8 H61 MQ8:1H6 MQ8 H71 MQ8:1H7 MQ8 H81 MQ8:1H8 MQ8 H91 MQ8:1H9 MQ8 H111 MQ8:1H11 MQ8 H112 MQ8:2H11 MQ8 H121 MQ8:1H12 MQ8 H141 MQ8:1H14 MQ8 H142 MQ8:2H14 MQ8 H143 MQ8:3H14 MQ8 H151 MQ8:1H15 MQ8 H152 MQ8:2H15 MQ8 H161 MQ8:1H16 MQ8 H162 MQ8:2H16 MQ8 H171 MQ8:1H17 MQ8 H191 MQ8:1H19 MQ8 H192 MQ8:2H19 MQ8 H193 MQ8:3H19 MQ8 H201 MQ8:1H20 MQ8 H202 MQ8:2H20 MQ8 H211 MQ8:1H21 MQ8 H212 MQ8:2H21 MQ8 H221 MQ8:1H22 MQ8 H241 MQ8:1H24 MQ8 H242 MQ8:2H24 MQ8 H243 MQ8:3H24 MQ8 H251 MQ8:1H25 MQ8 H252 MQ8:2H25 MQ8 H261 MQ8:1H26 MQ8 H262 MQ8:2H26 MQ8 H271 MQ8:1H27 MQ8 H291 MQ8:1H29 MQ8 H292 MQ8:2H29 MQ8 H293 MQ8:3H29 MQ8 H301 MQ8:1H30 MQ8 H302 MQ8:2H30 MQ8 H311 MQ8:1H31 MQ8 H312 MQ8:2H31 MQ8 H321 MQ8:1H32 MQ8 H341 MQ8:1H34 MQ8 H342 MQ8:2H34 MQ8 H343 MQ8:3H34 MQ8 H351 MQ8:1H35 MQ8 H352 MQ8:2H35 MQ8 H361 MQ8:1H36 MQ8 H362 MQ8:2H36 MQ8 H371 MQ8:1H37 MQ8 H391 MQ8:1H39 MQ8 H392 MQ8:2H39 MQ8 H393 MQ8:3H39 MQ8 H401 MQ8:1H40 MQ8 H402 MQ8:2H40 MQ8 H411 MQ8:1H41 MQ8 H412 MQ8:2H41 MQ8 H421 MQ8:1H42 MQ8 H441 MQ8:1H44 MQ8 H442 MQ8:2H44 MQ8 H451 MQ8:1H45 MQ8 H452 MQ8:2H45 MQ8 H453 MQ8:3H45 MQ8 H461 MQ8:1H46 MQ8 H462 MQ8:2H46 MQ8 H471 MQ8:1H47 MQ8 H491 MQ8:1H49 MQ8 H492 MQ8:2H49 MQ8 H493 MQ8:3H49 MQ8 H501 MQ8:1H50 MQ8 H502 MQ8:2H50 MQ8 H503 MQ8:3H50 MQ8 H5M3 MQ9:3H5M MQ9 H5M2 MQ9:2H5M MQ9 H5M1 MQ9:1H5M MQ9 H72 MQ9:2H7 MQ9 H71 MQ9:1H7 MQ9 H103 MQ9:3H10 MQ9 H102 MQ9:2H10 MQ9 H101 MQ9:1H10 MQ9 H112 MQ9:2H11 MQ9 H111 MQ9:1H11 MQ9 H121 MQ9:1H12 MQ9 H122 MQ9:2H12 MQ9 H153 MQ9:3H15 MQ9 H152 MQ9:2H15 MQ9 H151 MQ9:1H15 MQ9 H162 MQ9:2H16 MQ9 H161 MQ9:1H16 MQ9 H172 MQ9:2H17 MQ9 H171 MQ9:1H17 MQ9 H203 MQ9:3H20 MQ9 H202 MQ9:2H20 MQ9 H201 MQ9:1H20 MQ9 H212 MQ9:2H21 MQ9 H211 MQ9:1H21 MQ9 H222 MQ9:2H22 MQ9 H221 MQ9:1H22 MQ9 H253 MQ9:3H25 MQ9 H252 MQ9:2H25 MQ9 H251 MQ9:1H25 MQ9 H262 MQ9:2H26 MQ9 H261 MQ9:1H26 MQ9 H272 MQ9:2H27 MQ9 H271 MQ9:1H27 MQ9 H303 MQ9:3H30 MQ9 H302 MQ9:2H30 MQ9 H301 MQ9:1H30 MQ9 H312 MQ9:2H31 MQ9 H311 MQ9:1H31 MQ9 H321 MQ9:1H32 MQ9 H322 MQ9:2H32 MQ9 H353 MQ9:3H35 MQ9 H352 MQ9:2H35 MQ9 H351 MQ9:1H35 MQ9 H362 MQ9:2H36 MQ9 H361 MQ9:1H36 MQ9 H372 MQ9:2H37 MQ9 H371 MQ9:1H37 MQ9 H403 MQ9:3H40 MQ9 H402 MQ9:2H40 MQ9 H401 MQ9:1H40 MQ9 H412 MQ9:2H41 MQ9 H411 MQ9:1H41 MQ9 H422 MQ9:2H42 MQ9 H421 MQ9:1H42 MQ9 H453 MQ9:3H45 MQ9 H452 MQ9:2H45 MQ9 H451 MQ9:1H45 MQ9 H462 MQ9:2H46 MQ9 H461 MQ9:1H46 MQ9 H472 MQ9:2H47 MQ9 H471 MQ9:1H47 MQ9 H503 MQ9:3H50 MQ9 H502 MQ9:2H50 MQ9 H501 MQ9:1H50 MQ9 H513 MQ9:3H51 MQ9 H512 MQ9:2H51 MQ9 H511 MQ9:1H51 MQ9 H1C1 MQD:1H1C MQD H1C2 MQD:2H1C MQD H1C3 MQD:3H1C MQD HMC1 MQD:1HMC MQD HMC2 MQD:2HMC MQD H3C1 MQD:1H3C MQD H3C2 MQD:2H3C MQD H5C1 MQD:1H5C MQD H5C2 MQD:2H5C MQD H5C3 MQD:3H5C MQD H101 MQI:1H10 MQI H102 MQI:2H10 MQI H103 MQI:3H10 MQI H21A MQQ:1H2 MQQ H22 MQQ:2H2 MQQ H31A MQQ:1H3 MQQ H32 MQQ:2H3 MQQ H41 MQQ:1H4 MQQ H42 MQQ:2H4 MQQ H51A MQQ:1H5 MQQ H52 MQQ:2H5 MQQ HB1 MQQ:1HB MQQ HB2 MQQ:2HB MQQ HG1 MQQ:1HG MQQ HG2 MQQ:2HG MQQ HM1 MQQ:1HM MQQ HM2 MQQ:2HM MQQ HB31 MQQ:1HB3 MQQ HB32 MQQ:2HB3 MQQ HB21 MQQ:1HB2 MQQ HB22 MQQ:2HB2 MQQ HT1 MQQ:1HT MQQ HT2 MQQ:2HT MQQ H21 MQU:1H2 MQU H22 MQU:2H2 MQU H141 MQU:1H14 MQU H142 MQU:2H14 MQU H143 MQU:3H14 MQU H51 MQU:1H5 MQU H52 MQU:2H5 MQU H181 MQU:1H18 MQU H182 MQU:2H18 MQU H183 MQU:3H18 MQU H251 MQU:1H25 MQU H252 MQU:2H25 MQU H261 MQU:1H26 MQU H262 MQU:2H26 MQU H101 MR0:1H10 MR0 H102 MR0:2H10 MR0 H131 MR0:1H13 MR0 H132 MR0:2H13 MR0 H171 MR0:1H17 MR0 H172 MR0:2H17 MR0 H91 MR0:1H9 MR0 H92 MR0:2H9 MR0 H111 MR0:1H11 MR0 H112 MR0:2H11 MR0 H121 MR0:1H12 MR0 H122 MR0:2H12 MR0 H123 MR0:3H12 MR0 H141 MR0:1H14 MR0 H142 MR0:2H14 MR0 H143 MR0:3H14 MR0 H181 MR0:1H18 MR0 H182 MR0:2H18 MR0 H191 MR0:1H19 MR0 H192 MR0:2H19 MR0 HO1 MR0:1HO MR0 HO2A MR0:2HO MR0 HO3 MR0:3HO MR0 H7A1 MR0:1H7A MR0 H7A2 MR0:2H7A MR0 H381 MR1:1H38 MR1 H382 MR1:2H38 MR1 H301 MR1:1H30 MR1 H302 MR1:2H30 MR1 HN1 MR1:1HN MR1 HN2 MR1:2HN MR1 HAA1 MR3:1HAA MR3 HAA2 MR3:2HAA MR3 HAA3 MR3:3HAA MR3 HAA1 MR4:1HAA MR4 HAA2 MR4:2HAA MR4 HAA3 MR4:3HAA MR4 HAB1 MR4:1HAB MR4 HAB2 MR4:2HAB MR4 HAB3 MR4:3HAB MR4 HAA1 MR6:1HAA MR6 HAA2 MR6:2HAA MR6 HAA3 MR6:3HAA MR6 HAB1 MR6:1HAB MR6 HAB2 MR6:2HAB MR6 HAB3 MR6:3HAB MR6 H261 MR9:1H26 MR9 H262 MR9:2H26 MR9 H271 MR9:1H27 MR9 H272 MR9:2H27 MR9 H281 MR9:1H28 MR9 H282 MR9:2H28 MR9 H291 MR9:1H29 MR9 H292 MR9:2H29 MR9 H161 MR9:1H16 MR9 H162 MR9:2H16 MR9 H163 MR9:3H16 MR9 H181 MR9:1H18 MR9 H182 MR9:2H18 MR9 H183 MR9:3H18 MR9 H161 MRA:1H16 MRA H162 MRA:2H16 MRA H171 MRA:1H17 MRA H172 MRA:2H17 MRA H41 MRC:1H4 MRC H42 MRC:2H4 MRC H91 MRC:1H9 MRC H92 MRC:2H9 MRC H141 MRC:1H14 MRC H142 MRC:2H14 MRC H143 MRC:3H14 MRC H151 MRC:1H15 MRC H152 MRC:2H15 MRC H153 MRC:3H15 MRC H161 MRC:1H16 MRC H162 MRC:2H16 MRC HOP1 MRC:1HOP MRC H2'1 MRC:1H2* MRC H2'2 MRC:2H2* MRC H3'1 MRC:1H3* MRC H3'2 MRC:2H3* MRC H4'1 MRC:1H4* MRC H4'2 MRC:2H4* MRC H5'1 MRC:1H5* MRC H5'2 MRC:2H5* MRC H6'1 MRC:1H6* MRC H6'2 MRC:2H6* MRC H7'1 MRC:1H7* MRC H7'2 MRC:2H7* MRC H8'1 MRC:1H8* MRC H8'2 MRC:2H8* MRC H9'1 MRC:1H9* MRC H9'2 MRC:2H9* MRC H171 MRC:1H17 MRC H172 MRC:2H17 MRC H173 MRC:3H17 MRC H1C1 MRD:1H1C MRD H1C2 MRD:2H1C MRD H1C3 MRD:3H1C MRD HMC1 MRD:1HMC MRD HMC2 MRD:2HMC MRD HMC3 MRD:3HMC MRD H3C1 MRD:1H3C MRD H3C2 MRD:2H3C MRD H5C1 MRD:1H5C MRD H5C2 MRD:2H5C MRD H5C3 MRD:3H5C MRD HOP2 MRG:2HOP MRG H21 MRG:1H2 MRG H211 MRG:1H21 MRG H212 MRG:2H21 MRG H221 MRG:1H22 MRG H222 MRG:2H22 MRG H231 MRG:1H23 MRG H232 MRG:2H23 MRG H2' MRG:1H2* MRG H2'' MRG:2H2* MRG H5' MRG:1H5* MRG H5'' MRG:2H5* MRG H4' MRG: H4* MRG H1' MRG: H1* MRG H3' MRG: H3* MRG HO3' MRG:H3T MRG HOP3 MRG:3HOP MRG H221 MRK:1H22 MRK H222 MRK:2H22 MRK H223 MRK:3H22 MRK H231 MRK:1H23 MRK H232 MRK:2H23 MRK HNB1 MRM:1HNB MRM HNB2 MRM:2HNB MRM HM21 MRM:1HM2 MRM HM22 MRM:2HM2 MRM HM51 MRM:1HM5 MRM HM52 MRM:2HM5 MRM HM31 MRM:1HM3 MRM HM32 MRM:2HM3 MRM HM41 MRM:1HM4 MRM HM42 MRM:2HM4 MRM H61 MRP:1H6 MRP H62 MRP:2H6 MRP H63 MRP:3H6 MRP H71 MRP:1H7 MRP H72 MRP:2H7 MRP H73 MRP:3H7 MRP H3' MRR: H3* MRR H2' MRR: H2* MRR H1' MRR: H1* MRR HN61 MRR:1HN6 MRR HN62 MRR:2HN6 MRR H4' MRR: H4* MRR H5'1 MRR:1H5* MRR H5'2 MRR:2H5* MRR H201 MRR:1H20 MRR H202 MRR:2H20 MRR H181 MRR:1H18 MRR H182 MRR:2H18 MRR H183 MRR:3H18 MRR H191 MRR:1H19 MRR H192 MRR:2H19 MRR H193 MRR:3H19 MRR H171 MRR:1H17 MRR H172 MRR:2H17 MRR H161 MRR:1H16 MRR H162 MRR:2H16 MRR H11 MRR:1H1 MRR H12 MRR:2H1 MRR H21 MRR:1H2 MRR H22 MRR:2H2 MRR H131 MRR:1H13 MRR H132 MRR:2H13 MRR H133 MRR:3H13 MRR H31 MRR:1H3 MRR H32 MRR:2H3 MRR H41 MRR:1H4 MRR H42 MRR:2H4 MRR H51 MRR:1H5 MRR H52 MRR:2H5 MRR H61 MRR:1H6 MRR H62 MRR:2H6 MRR H71 MRR:1H7 MRR H72 MRR:2H7 MRR H81 MRR:1H8 MRR H82 MRR:2H8 MRR H91 MRR:1H9 MRR H92 MRR:2H9 MRR H101 MRR:1H10 MRR H102 MRR:2H10 MRR H111 MRR:1H11 MRR H112 MRR:2H11 MRR H121 MRR:1H12 MRR H122 MRR:2H12 MRR H141 MRR:1H14 MRR H142 MRR:2H14 MRR H151 MRR:1H15 MRR H152 MRR:2H15 MRR H153 MRR:3H15 MRR H3' MRS: H3* MRS H2' MRS: H2* MRS H1' MRS: H1* MRS HN61 MRS:1HN6 MRS HN62 MRS:2HN6 MRS H4' MRS: H4* MRS H5'1 MRS:1H5* MRS H5'2 MRS:2H5* MRS H201 MRS:1H20 MRS H202 MRS:2H20 MRS H181 MRS:1H18 MRS H182 MRS:2H18 MRS H183 MRS:3H18 MRS H191 MRS:1H19 MRS H192 MRS:2H19 MRS H193 MRS:3H19 MRS H171 MRS:1H17 MRS H172 MRS:2H17 MRS H161 MRS:1H16 MRS H162 MRS:2H16 MRS H11 MRS:1H1 MRS H12 MRS:2H1 MRS H21 MRS:1H2 MRS H22 MRS:2H2 MRS H131 MRS:1H13 MRS H132 MRS:2H13 MRS H133 MRS:3H13 MRS H31 MRS:1H3 MRS H32 MRS:2H3 MRS H41 MRS:1H4 MRS H42 MRS:2H4 MRS H51 MRS:1H5 MRS H52 MRS:2H5 MRS H61 MRS:1H6 MRS H62 MRS:2H6 MRS H71 MRS:1H7 MRS H72 MRS:2H7 MRS H81 MRS:1H8 MRS H82 MRS:2H8 MRS H91 MRS:1H9 MRS H92 MRS:2H9 MRS H101 MRS:1H10 MRS H102 MRS:2H10 MRS H111 MRS:1H11 MRS H112 MRS:2H11 MRS H121 MRS:1H12 MRS H122 MRS:2H12 MRS H141 MRS:1H14 MRS H142 MRS:2H14 MRS H151 MRS:1H15 MRS H152 MRS:2H15 MRS H153 MRS:3H15 MRS H11 MRU:1H1 MRU H12 MRU:2H1 MRU H51 MRU:1H5 MRU H52 MRU:2H5 MRU H61 MRU:1H6 MRU H62 MRU:2H6 MRU H63 MRU:3H6 MRU HAA1 MRY:1HAA MRY HAA2 MRY:2HAA MRY HAG1 MRY:1HAG MRY HAG2 MRY:2HAG MRY HG1 MS1:1HG MS1 HG2 MS1:2HG MS1 HB1 MS1:1HB MS1 HB2 MS1:2HB MS1 H51 MS1:1H5 MS1 H52 MS1:2H5 MS1 HN11 MS1:1HN1 MS1 HN12 MS1:2HN1 MS1 H91 MS1:1H9 MS1 H92 MS1:2H9 MS1 H2F1 MS1:1H2F MS1 H2F2 MS1:2H2F MS1 H61 MS2:1H6 MS2 H62 MS2:2H6 MS2 H63 MS2:3H6 MS2 H121 MS2:1H12 MS2 H122 MS2:2H12 MS2 H123 MS2:3H12 MS2 H131 MS3:1H13 MS3 H132 MS3:2H13 MS3 H241 MS3:1H24 MS3 H242 MS3:2H24 MS3 H243 MS3:3H24 MS3 H251 MS3:1H25 MS3 H252 MS3:2H25 MS3 H253 MS3:3H25 MS3 H291 MS3:1H29 MS3 H292 MS3:2H29 MS3 H311 MS3:1H31 MS3 H312 MS3:2H31 MS3 H391 MS3:1H39 MS3 H392 MS3:2H39 MS3 H393 MS3:3H39 MS3 H401 MS3:1H40 MS3 H402 MS3:2H40 MS3 H403 MS3:3H40 MS3 H441 MS3:1H44 MS3 H442 MS3:2H44 MS3 H MSA: HN MSA HN1 MSA:1HN MSA HN2 MSA:2HN MSA HN3 MSA:3HN MSA HG1 MSA:1HG MSA HG2 MSA:2HG MSA HG3 MSA:3HG MSA HH1 MSB:1HH MSB HH2 MSB:2HH MSB HH3 MSB:3HH MSB H011 MSC:1H01 MSC H021 MSC:1H02 MSC H031 MSC:1H03 MSC H051 MSC:1H05 MSC H052 MSC:2H05 MSC H071 MSC:1H07 MSC H081 MSC:1H08 MSC H091 MSC:1H09 MSC H101 MSC:1H10 MSC H111 MSC:1H11 MSC H141 MSC:1H14 MSC H151 MSC:1H15 MSC H171 MSC:1H17 MSC H181 MSC:1H18 MSC H191 MSC:1H19 MSC H201 MSC:1H20 MSC H221 MSC:1H22 MSC H222 MSC:2H22 MSC H231 MSC:1H23 MSC H241 MSC:1H24 MSC H311 MSC:1H31 MSC H321 MSC:1H32 MSC H331 MSC:1H33 MSC H351 MSC:1H35 MSC H352 MSC:2H35 MSC H371 MSC:1H37 MSC H381 MSC:1H38 MSC H391 MSC:1H39 MSC H401 MSC:1H40 MSC H411 MSC:1H41 MSC H441 MSC:1H44 MSC H451 MSC:1H45 MSC H452 MSC:2H45 MSC H481 MSC:1H48 MSC H491 MSC:1H49 MSC H501 MSC:1H50 MSC H11N MSD:NH11 MSD H12C MSD:CH12 MSD H131 MSD:1H13 MSD H132 MSD:2H13 MSD H14C MSD:CH14 MSD H18C MSD:CH18 MSD H19C MSD:CH19 MSD H22O MSD:OH22 MSD H251 MSD:1H25 MSD H252 MSD:2H25 MSD H253 MSD:3H25 MSD H441 MSD:1H44 MSD H442 MSD:2H44 MSD H443 MSD:3H44 MSD H MSE:1HN MSE HN2 MSE:2HN MSE HB2 MSE:1HB MSE HB3 MSE:2HB MSE HG2 MSE:1HG MSE HG3 MSE:2HG MSE HE1 MSE:1HE MSE HE2 MSE:2HE MSE HE3 MSE:3HE MSE H21 MSF:1H2 MSF H22 MSF:2H2 MSF H41 MSF:1H4 MSF H42 MSF:2H4 MSF H43 MSF:3H4 MSF H5' MSG: H5* MSG H5'1 MSG:1H5* MSG H5'2 MSG:2H5* MSG H4' MSG: H4* MSG H1' MSG: H1* MSG H11 MSG:1H1 MSG H12 MSG:2H1 MSG H13 MSG:3H1 MSG HN21 MSG:1HN2 MSG HN22 MSG:2HN2 MSG H2' MSG: H2* MSG H3' MSG: H3* MSG HC41 MSH:1HC4 MSH HC42 MSH:2HC4 MSH HC43 MSH:3HC4 MSH HC51 MSH:1HC5 MSH HC52 MSH:2HC5 MSH HC53 MSH:3HC5 MSH HC61 MSH:1HC6 MSH HC62 MSH:2HC6 MSH HC71 MSH:1HC7 MSH HC81 MSH:1HC8 MSH HC82 MSH:2HC8 MSH HC91 MSH:1HC9 MSH HC92 MSH:2HC9 MSH H101 MSH:1H10 MSH H102 MSH:2H10 MSH H103 MSH:3H10 MSH H101 MSI:1H10 MSI H102 MSI:2H10 MSI H111 MSI:1H11 MSI H112 MSI:2H11 MSI H121 MSI:1H12 MSI H122 MSI:2H12 MSI H131 MSI:1H13 MSI H132 MSI:2H13 MSI HC11 MSI:1HC1 MSI HC12 MSI:2HC1 MSI HC13 MSI:3HC1 MSI H MSL:1HN MSL H2 MSL:2HN MSL HB2 MSL:1HB MSL HB3 MSL:2HB MSL HG2 MSL:1HG MSL HG3 MSL:2HG MSL HE MSL: HNE MSL HE1 MSL:1HE MSL HE2 MSL:2HE MSL HE3 MSL:3HE MSL HB11 MSM:1HB1 MSM HB12 MSM:2HB1 MSM HB13 MSM:3HB1 MSM HD11 MSM:1HD1 MSM HD12 MSM:2HD1 MSM HD13 MSM:3HD1 MSM HN51 MSN:1HN5 MSN HN52 MSN:2HN5 MSN H71 MSN:1H7 MSN H72 MSN:2H7 MSN H73 MSN:3H7 MSN H MSO:1HN MSO H2 MSO:2HN MSO HB2 MSO:1HCB MSO HB3 MSO:2HCB MSO HG2 MSO:1HCG MSO HG3 MSO:2HCG MSO HE1 MSO:1HC MSO HE2 MSO:2HC MSO HE3 MSO:3HC MSO HN21 MSP:1HN2 MSP HN22 MSP:2HN2 MSP HB1 MSP:1HB MSP HB2 MSP:2HB MSP HG1 MSP:1HG MSP HG2 MSP:2HG MSP HE1 MSP:1HE MSP HE2 MSP:2HE MSP HE3 MSP:3HE MSP H5'1 MSP:1H5* MSP H5'2 MSP:2H5* MSP H4' MSP: H4* MSP H3' MSP: H3* MSP H2' MSP: H2* MSP H1' MSP: H1* MSP HN61 MSP:1HN6 MSP HN62 MSP:2HN6 MSP H21 MSQ:1H2 MSQ H71 MSQ:1H7 MSQ H101 MSQ:1H10 MSQ H121 MSQ:1H12 MSQ H151 MSQ:1H15 MSQ H171 MSQ:1H17 MSQ H181 MSQ:1H18 MSQ H191 MSQ:1H19 MSQ H221 MSQ:1H22 MSQ H222 MSQ:2H22 MSQ H223 MSQ:3H22 MSQ H271 MSQ:1H27 MSQ H272 MSQ:2H27 MSQ H273 MSQ:3H27 MSQ H321 MSQ:1H32 MSQ H322 MSQ:2H32 MSQ H323 MSQ:3H32 MSQ H2N1 MSS:1H2N MSS H2N2 MSS:2H2N MSS H4'1 MSS:1H4' MSS H4'2 MSS:2H4' MSS HP1 MSS:1HP MSS HP2 MSS:2HP MSS H83 MST:3H8 MST H82 MST:2H8 MST H81 MST:1H8 MST H113 MST:3H11 MST H112 MST:2H11 MST H111 MST:1H11 MST H123 MST:3H12 MST H122 MST:2H12 MST H121 MST:1H12 MST H133 MST:3H13 MST H132 MST:2H13 MST H131 MST:1H13 MST H152 MST:2H15 MST H151 MST:1H15 MST H163 MST:3H16 MST H162 MST:2H16 MST H161 MST:1H16 MST H21 MSU:1H2 MSU H22 MSU:2H2 MSU H31 MSU:1H3 MSU H32 MSU:2H3 MSU HT1 MSU:1HT MSU HT2 MSU:2HT MSU HT3 MSU:3HT MSU HA21 MT1:1HA2 MT1 HA22 MT1:2HA2 MT1 HA41 MT1:1HA4 MT1 HA42 MT1:2HA4 MT1 H91 MT1:1H9 MT1 H92 MT1:2H9 MT1 HM1 MT1:1HM MT1 HM2 MT1:2HM MT1 HM3 MT1:3HM MT1 HB1 MT1:1HB MT1 HB2 MT1:2HB MT1 HG1 MT1:1HG MT1 HG2 MT1:2HG MT1 HCS1 MTA:1HCS MTA HCS2 MTA:2HCS MTA HCS3 MTA:3HCS MTA H5'1 MTA:1H5* MTA H5'2 MTA:2H5* MTA H4' MTA: H4* MTA H2' MTA: H2* MTA HO2' MTA:HO2* MTA H3' MTA: H3* MTA H1' MTA: H1* MTA H61 MTA:1H6 MTA H62 MTA:2H6 MTA H11 MTB:1H1 MTB H12 MTB:2H1 MTB H13 MTB:3H1 MTB H21 MTB:1H2 MTB H22 MTB:2H2 MTB H23 MTB:3H2 MTB H31 MTB:1H3 MTB H32 MTB:2H3 MTB H33 MTB:3H3 MTB HO4' MTB:'HO4 MTB H11A MTC:1H1 MTC H12 MTC:2H1 MTC H91 MTC:1H9 MTC H92 MTC:2H9 MTC H151 MTC:1H15 MTC H152 MTC:2H15 MTC H161 MTC:1H16 MTC H162 MTC:2H16 MTC H163 MTC:3H16 MTC H181 MTC:1H18 MTC H182 MTC:2H18 MTC H183 MTC:3H18 MTC H21 MTD:1H2 MTD H22 MTD:2H2 MTD H41 MTD:1H4 MTD H42 MTD:2H4 MTD H43 MTD:3H4 MTD HN21 MTE:1HN2 MTE HN22 MTE:2HN2 MTE H4'1 MTE:1H4' MTE H4'2 MTE:2H4' MTE HOP2 MTE:2HOP MTE HOP3 MTE:3HOP MTE HM1 MTF:1HM MTF HM2 MTF:2HM MTF HM3 MTF:3HM MTF H21 MTG:1H2 MTG H22 MTG:2H2 MTG H41 MTG:1H4 MTG H42 MTG:2H4 MTG H43 MTG:3H4 MTG HCS1 MTH:1HCS MTH HCS2 MTH:2HCS MTH HCS3 MTH:3HCS MTH H5'1 MTH:1H5* MTH H5'2 MTH:2H5* MTH H4'1 MTH:1H4* MTH H2'1 MTH:1H2* MTH HO21 MTH:1HO2 MTH H3'1 MTH:1H3* MTH HO31 MTH:1HO3 MTH H1'1 MTH:1H1* MTH HC81 MTH:1HC8 MTH HC71 MTH:1HC7 MTH HN61 MTH:1HN6 MTH HN62 MTH:2HN6 MTH HC21 MTH:1HC2 MTH HS1 MTI:1HS MTI HS2 MTI:2HS MTI HS3 MTI:3HS MTI H5'1 MTI:1H5* MTI H5'2 MTI:2H5* MTI H4' MTI: H4* MTI H4'1 MTI:1H4* MTI H4'2 MTI:2H4* MTI H2' MTI: H2* MTI H3' MTI: H3* MTI H1' MTI: H1* MTI HN1A MTJ:1HN MTJ HN2 MTJ:2HN MTJ HN3 MTJ:3HN MTJ HB1 MTJ:1HB MTJ HB2 MTJ:2HB MTJ HM1 MTJ:1HM MTJ HM2 MTJ:2HM MTJ HM3 MTJ:3HM MTJ HAH1 MTK:1HAH MTK HAH2 MTK:2HAH MTK HAG1 MTK:1HAG MTK HAG2 MTK:2HAG MTK HAZ1 MTK:1HAZ MTK HAZ2 MTK:2HAZ MTK HAX1 MTK:1HAX MTK HAX2 MTK:2HAX MTK HAY1 MTK:1HAY MTK HAY2 MTK:2HAY MTK HBA1 MTK:1HBA MTK HBA2 MTK:2HBA MTK HAW1 MTK:1HAW MTK HAW2 MTK:2HAW MTK HAV1 MTK:1HAV MTK HAV2 MTK:2HAV MTK HAA1 MTK:1HAA MTK HAA2 MTK:2HAA MTK HAA3 MTK:3HAA MTK HAB1 MTK:1HAB MTK HAB2 MTK:2HAB MTK HAB3 MTK:3HAB MTK H11 MTL:1H1 MTL H12 MTL:2H1 MTL H61 MTL:1H6 MTL H62 MTL:2H6 MTL HCS1 MTM:1HCS MTM HCS2 MTM:2HCS MTM HCS3 MTM:3HCS MTM H5'1 MTM:1H5* MTM H5'2 MTM:2H5* MTM H4' MTM: H4* MTM H2' MTM: H2* MTM HO'2 MTM:2HO* MTM H3' MTM: H3* MTM H1' MTM: H1* MTM H61 MTM:1H6 MTM H62 MTM:2H6 MTM H41 MTN:1H4 MTN H42 MTN:2H4 MTN H61 MTN:1H6 MTN H62 MTN:2H6 MTN H63 MTN:3H6 MTN H71 MTN:1H7 MTN H72 MTN:2H7 MTN H73 MTN:3H7 MTN H81 MTN:1H8 MTN H82 MTN:2H8 MTN H83 MTN:3H8 MTN H91 MTN:1H9 MTN H92 MTN:2H9 MTN H93 MTN:3H9 MTN H1 MTO:1H MTO H2 MTO:2H MTO H5'1 MTP:1H5' MTP H5'2 MTP:2H5' MTP HS1 MTP:1HS MTP HS2 MTP:2HS MTP HS3 MTP:3HS MTP HN21 MTQ:1HN2 MTQ HN22 MTQ:2HN2 MTQ H4'1 MTQ:1H4' MTQ H4'2 MTQ:2H4' MTQ HOP2 MTQ:2HOP MTQ HOP3 MTQ:3HOP MTQ HOP2 MTR:2HOP MTR H71 MTR:1H5M MTR H72 MTR:2H5M MTR H73 MTR:3H5M MTR H2' MTR:1H2* MTR H2'' MTR:2H2* MTR H5' MTR:1H5* MTR H5'' MTR:2H5* MTR H4' MTR: H4* MTR H1' MTR: H1* MTR H3' MTR: H3* MTR HO3' MTR:H3T MTR HOP3 MTR:3HOP MTR HN31 MTS:1HN3 MTS HN32 MTS:2HN3 MTS H151 MTS:1H15 MTS H152 MTS:2H15 MTS H153 MTS:3H15 MTS H181 MTS:1H18 MTS H182 MTS:2H18 MTS H183 MTS:3H18 MTS H141 MTT:1H14 MTT H131 MTT:1H13 MTT H121 MTT:1H12 MTT H111 MTT:1H11 MTT H151 MTT:1H15 MTT H161 MTT:1H16 MTT H162 MTT:2H16 MTT H241 MTT:1H24 MTT H231 MTT:1H23 MTT H221 MTT:1H22 MTT H211 MTT:1H21 MTT H251 MTT:1H25 MTT H261 MTT:1H26 MTT H262 MTT:2H26 MTT H341 MTT:1H34 MTT H331 MTT:1H33 MTT H321 MTT:1H32 MTT H311 MTT:1H31 MTT H351 MTT:1H35 MTT H361 MTT:1H36 MTT H362 MTT:2H36 MTT H441 MTT:1H44 MTT H431 MTT:1H43 MTT H421 MTT:1H42 MTT H411 MTT:1H41 MTT H451 MTT:1H45 MTT H461 MTT:1H46 MTT H462 MTT:2H46 MTT H5' MTU:1H5* MTU H5'' MTU:2H5* MTU H4' MTU: H4* MTU H1' MTU: H1* MTU HN21 MTU:1HN2 MTU HN22 MTU:2HN2 MTU H2' MTU: H2* MTU HO2' MTU:HO2* MTU H3' MTU: H3* MTU HO3' MTU:HO3* MTU H2N1 MTV:1H2N MTV H2N2 MTV:2H2N MTV H3N1 MTV:1H3N MTV H5N1 MTV:1H5N MTV H6C1 MTV:1H6C MTV H3'1 MTV:1H3' MTV H4'1 MTV:1H4' MTV H4'2 MTV:2H4' MTV H2P1 MTV:1H2P MTV H3P1 MTV:1H3P MTV HM21 MTV:1HM2 MTV H2C1 MTW:1H2C MTW H2C2 MTW:2H2C MTW H8C1 MTW:1H8C MTW H8C2 MTW:2H8C MTW HN21 MTX:1HN2 MTX HN22 MTX:2HN2 MTX HN41 MTX:1HN4 MTX HN42 MTX:2HN4 MTX H91 MTX:1H9 MTX H92 MTX:2H9 MTX HM1 MTX:1HM MTX HM2 MTX:2HM MTX HM3 MTX:3HM MTX HB1 MTX:1HB MTX HB2 MTX:2HB MTX HG1 MTX:1HG MTX HG2 MTX:2HG MTX HOE2 MTX:2HOE MTX H MTY:1HN MTY H2 MTY:2HN MTY HB2 MTY:1HB MTY HB3 MTY:2HB MTY HH MTY: HOH MTY H141 MTZ:1H14 MTZ H142 MTZ:2H14 MTZ H151 MTZ:1H15 MTZ H152 MTZ:2H15 MTZ H161 MTZ:1H16 MTZ H162 MTZ:2H16 MTZ H171 MTZ:1H17 MTZ H172 MTZ:2H17 MTZ H7C1 MTZ:1H7C MTZ H7C2 MTZ:2H7C MTZ H2C1 MTZ:1H2C MTZ H2C2 MTZ:2H2C MTZ H2C3 MTZ:3H2C MTZ HN1 MTZ:1HN MTZ HN2 MTZ:2HN MTZ H321 MU0:1H32 MU0 H322 MU0:2H32 MU0 H291 MU0:1H29 MU0 H292 MU0:2H29 MU0 H231 MU0:1H23 MU0 H232 MU0:2H23 MU0 H141 MU0:1H14 MU0 H142 MU0:2H14 MU0 H143 MU0:3H14 MU0 H151 MU0:1H15 MU0 H152 MU0:2H15 MU0 H153 MU0:3H15 MU0 H21A MU0:1H2 MU0 H22 MU0:2H2 MU0 H391 MU0:1H39 MU0 H392 MU0:2H39 MU0 H11 MU0:1H1 MU0 H12A MU0:2H1 MU0 H221 MU0:1H22 MU0 H222 MU0:2H22 MU0 H21A MU1:1H2 MU1 H22 MU1:2H2 MU1 H23 MU1:3H2 MU1 H141 MU1:1H14 MU1 H142 MU1:2H14 MU1 H143 MU1:3H14 MU1 H151 MU1:1H15 MU1 H152 MU1:2H15 MU1 H153 MU1:3H15 MU1 H221 MU1:1H22 MU1 H222 MU1:2H22 MU1 H231 MU1:1H23 MU1 H232 MU1:2H23 MU1 H291 MU1:1H29 MU1 H292 MU1:2H29 MU1 H321 MU1:1H32 MU1 H322 MU1:2H32 MU1 H401 MU1:1H40 MU1 H402 MU1:2H40 MU1 H403 MU1:3H40 MU1 H8C1 MU2:1H8C MU2 H8C2 MU2:2H8C MU2 H8C3 MU2:3H8C MU2 H6C1 MU2:1H6C MU2 H6C2 MU2:2H6C MU2 H201 MU2:1H20 MU2 H202 MU2:2H20 MU2 H203 MU2:3H20 MU2 H231 MU2:1H23 MU2 H232 MU2:2H23 MU2 H233 MU2:3H23 MU2 H251 MU2:1H25 MU2 H252 MU2:2H25 MU2 H261 MU2:1H26 MU2 H262 MU2:2H26 MU2 HA1 MU2:1HA MU2 HB2 MU2:2HB MU2 H101 MUA:1H10 MUA H102 MUA:2H10 MUA H103 MUA:3H10 MUA H1 MUB:1H MUB H2 MUB:2H MUB HN2 MUB:2HN MUB H81 MUB:1H8 MUB H82 MUB:2H8 MUB H83 MUB:3H8 MUB H3 MUB:3H MUB H9 MUB:9H MUB H111 MUB:1H11 MUB H112 MUB:2H11 MUB H113 MUB:3H11 MUB H4A MUB:4H MUB H5 MUB:5H MUB H61 MUB:1H6 MUB H62 MUB:2H6 MUB HO6 MUB:6HO MUB HM41 MUG:1HM4 MUG HM42 MUG:2HM4 MUG HM43 MUG:3HM4 MUG HO2' MUG:'HO2 MUG HO3' MUG:'HO3 MUG HO4' MUG:'HO4 MUG H6'1 MUG:1H6' MUG H6'2 MUG:2H6' MUG HO6' MUG:'HO6 MUG H151 MUH:1H15 MUH H152 MUH:2H15 MUH H153 MUH:3H15 MUH H471 MUI:1H47 MUI H472 MUI:2H47 MUI H473 MUI:3H47 MUI H251 MUI:1H25 MUI H252 MUI:2H25 MUI H321 MUI:1H32 MUI H322 MUI:2H32 MUI H161 MUI:1H16 MUI H162 MUI:2H16 MUI H121 MUI:1H12 MUI H122 MUI:2H12 MUI H151 MUI:1H15 MUI H152 MUI:2H15 MUI H153 MUI:3H15 MUI H141 MUI:1H14 MUI H142 MUI:2H14 MUI H143 MUI:3H14 MUI H181 MUI:1H18 MUI H182 MUI:2H18 MUI H183 MUI:3H18 MUI H11A MUL:1H1 MUL H12 MUL:2H1 MUL H21 MUL:1H2 MUL H22 MUL:2H2 MUL H71 MUL:1H7 MUL H72 MUL:2H7 MUL H81 MUL:1H8 MUL H82 MUL:2H8 MUL H131 MUL:1H13 MUL H132 MUL:2H13 MUL H151 MUL:1H15 MUL H152 MUL:2H15 MUL H153 MUL:3H15 MUL H161 MUL:1H16 MUL H162 MUL:2H16 MUL H163 MUL:3H16 MUL H171 MUL:1H17 MUL H172 MUL:2H17 MUL H173 MUL:3H17 MUL H181 MUL:1H18 MUL H182 MUL:2H18 MUL H183 MUL:3H18 MUL H201 MUL:1H20 MUL H202 MUL:2H20 MUL H221 MUL:1H22 MUL H222 MUL:2H22 MUL H231 MUL:1H23 MUL H232 MUL:2H23 MUL H241 MUL:1H24 MUL H242 MUL:2H24 MUL H251 MUL:1H25 MUL H252 MUL:2H25 MUL H261 MUL:1H26 MUL H262 MUL:2H26 MUL H263 MUL:3H26 MUL H271 MUL:1H27 MUL H272 MUL:2H27 MUL H281 MUL:1H28 MUL H282 MUL:2H28 MUL H283 MUL:3H28 MUL H11 MUP:1H1 MUP H12 MUP:2H1 MUP H21 MUP:1H2 MUP H22 MUP:2H2 MUP H31 MUP:1H3 MUP H32 MUP:2H3 MUP H41 MUP:1H4 MUP H42 MUP:2H4 MUP H51 MUP:1H5 MUP H52 MUP:2H5 MUP H61 MUP:1H6 MUP H62 MUP:2H6 MUP H71 MUP:1H7 MUP H72 MUP:2H7 MUP H81 MUP:1H8 MUP H82 MUP:2H8 MUP H91 MUP:1H9 MUP H92 MUP:2H9 MUP H101 MUP:1H10 MUP H102 MUP:2H10 MUP H111 MUP:1H11 MUP H112 MUP:2H11 MUP H113 MUP:3H11 MUP HM1 MUP:1HM MUP HM2 MUP:2HM MUP HM3 MUP:3HM MUP HOP3 MUP:3HOP MUP HN21 MUR:1HN2 MUR HN22 MUR:2HN2 MUR H61 MUR:1H6 MUR H62 MUR:2H6 MUR H91 MUR:1H9 MUR H92 MUR:2H9 MUR H93 MUR:3H9 MUR H161 MUS:1H16 MUS H162 MUS:2H16 MUS H181 MUS:1H18 MUS H182 MUS:2H18 MUS H183 MUS:3H18 MUS H101 MUS:1H10 MUS H102 MUS:2H10 MUS HM41 MUS:1HM4 MUS HM42 MUS:2HM4 MUS HM43 MUS:3HM4 MUS H181 MUT:1H18 MUT H182 MUT:2H18 MUT H183 MUT:3H18 MUT H121 MUT:1H12 MUT H122 MUT:2H12 MUT H141 MUT:1H14 MUT H142 MUT:2H14 MUT H143 MUT:3H14 MUT H151 MUT:1H15 MUT H152 MUT:2H15 MUT H153 MUT:3H15 MUT H161 MUT:1H16 MUT H162 MUT:2H16 MUT H321 MUT:1H32 MUT H322 MUT:2H32 MUT H251 MUT:1H25 MUT H252 MUT:2H25 MUT H471 MUT:1H47 MUT H472 MUT:2H47 MUT H473 MUT:3H47 MUT H181 MUU:1H18 MUU H182 MUU:2H18 MUU H183 MUU:3H18 MUU H121 MUU:1H12 MUU H122 MUU:2H12 MUU H151 MUU:1H15 MUU H152 MUU:2H15 MUU H141 MUU:1H14 MUU H142 MUU:2H14 MUU H161 MUU:1H16 MUU H162 MUU:2H16 MUU H321 MUU:1H32 MUU H322 MUU:2H32 MUU H231 MUU:1H23 MUU H232 MUU:2H23 MUU H241 MUU:1H24 MUU H242 MUU:2H24 MUU H281 MUU:1H28 MUU H282 MUU:2H28 MUU H283 MUU:3H28 MUU H281 MUV:1H28 MUV H282 MUV:2H28 MUV H283 MUV:3H28 MUV H241 MUV:1H24 MUV H242 MUV:2H24 MUV H231 MUV:1H23 MUV H232 MUV:2H23 MUV H321 MUV:1H32 MUV H322 MUV:2H32 MUV H161 MUV:1H16 MUV H162 MUV:2H16 MUV H121 MUV:1H12 MUV H122 MUV:2H12 MUV H141 MUV:1H14 MUV H142 MUV:2H14 MUV H151 MUV:1H15 MUV H152 MUV:2H15 MUV H151 MUW:1H15 MUW H152 MUW:2H15 MUW H451 MUW:1H45 MUW H452 MUW:2H45 MUW H111 MUW:1H11 MUW H112 MUW:2H11 MUW H131 MUW:1H13 MUW H132 MUW:2H13 MUW H133 MUW:3H13 MUW H141 MUW:1H14 MUW H142 MUW:2H14 MUW H143 MUW:3H14 MUW H221 MUW:1H22 MUW H222 MUW:2H22 MUW H171 MUW:1H17 MUW H172 MUW:2H17 MUW H181 MUW:1H18 MUW H182 MUW:2H18 MUW H191 MUW:1H19 MUW H192 MUW:2H19 MUW H201 MUW:1H20 MUW H202 MUW:2H20 MUW H441 MUW:1H44 MUW H442 MUW:2H44 MUW H443 MUW:3H44 MUW H MVA: HN MVA HN1 MVA:1HN MVA HN2 MVA:2HN MVA HN3 MVA:3HN MVA HG11 MVA:1HG1 MVA HG12 MVA:2HG1 MVA HG13 MVA:3HG1 MVA HG21 MVA:1HG2 MVA HG22 MVA:2HG2 MVA HG23 MVA:3HG2 MVA H81 MVB:1H8 MVB H82 MVB:2H8 MVB H101 MVB:1H10 MVB H102 MVB:2H10 MVB H111 MVB:1H11 MVB H112 MVB:2H11 MVB H113 MVB:3H11 MVB H121 MVB:1H12 MVB H122 MVB:2H12 MVB H131 MVB:1H13 MVB H132 MVB:2H13 MVB H211 MVB:1H21 MVB H212 MVB:2H21 MVB H221 MVB:1H22 MVB H222 MVB:2H22 MVB H41 MVD:1H4 MVD H42 MVD:2H4 MVD H91 MVD:1H9 MVD H92 MVD:2H9 MVD H111 MVD:1H11 MVD H112 MVD:2H11 MVD H121 MVD:1H12 MVD H122 MVD:2H12 MVD H151 MVD:1H15 MVD H152 MVD:2H15 MVD H161 MVD:1H16 MVD H162 MVD:2H16 MVD H181 MVD:1H18 MVD H182 MVD:2H18 MVD H183 MVD:3H18 MVD H191 MVD:1H19 MVD H192 MVD:2H19 MVD H211 MVD:1H21 MVD H212 MVD:2H21 MVD H213 MVD:3H21 MVD H221 MVD:1H22 MVD H222 MVD:2H22 MVD H231 MVD:1H23 MVD H232 MVD:2H23 MVD H241 MVD:1H24 MVD H242 MVD:2H24 MVD H261 MVD:1H26 MVD H262 MVD:2H26 MVD H263 MVD:3H26 MVD H271 MVD:1H27 MVD H272 MVD:2H27 MVD H273 MVD:3H27 MVD H281 MVD:1H28 MVD H282 MVD:2H28 MVD H283 MVD:3H28 MVD HO11 MW1:1HO1 MW1 HO12 MW1:2HO1 MW1 HO11 MW2:1HO1 MW2 HO12 MW2:2HO1 MW2 HO21 MW2:1HO2 MW2 HO22 MW2:2HO2 MW2 HO11 MW3:1HO1 MW3 HO12 MW3:2HO1 MW3 HO21 MW3:1HO2 MW3 HO22 MW3:2HO2 MW3 HO31 MW3:1HO3 MW3 HO32 MW3:2HO3 MW3 H81 MX1:1H8 MX1 H82 MX1:2H8 MX1 H61 MX1:1H6 MX1 H62 MX1:2H6 MX1 H91 MX1:1H9 MX1 H92 MX1:2H9 MX1 H93 MX1:3H9 MX1 HAJ1 MX2:1HAJ MX2 HAJ2 MX2:2HAJ MX2 HAH1 MX2:1HAH MX2 HAH2 MX2:2HAH MX2 HAG1 MX2:1HAG MX2 HAG2 MX2:2HAG MX2 HAK1 MX2:1HAK MX2 HAK2 MX2:2HAK MX2 HAM1 MX2:1HAM MX2 HAM2 MX2:2HAM MX2 HAO1 MX2:1HAO MX2 HAO2 MX2:2HAO MX2 H201 MX3:1H20 MX3 H202 MX3:2H20 MX3 H7C1 MX3:1H7C MX3 H7C2 MX3:2H7C MX3 H9C1 MX3:1H9C MX3 H9C2 MX3:2H9C MX3 H101 MX3:1H10 MX3 H102 MX3:2H10 MX3 H121 MX3:1H12 MX3 H122 MX3:2H12 MX3 H141 MX3:1H14 MX3 H142 MX3:2H14 MX3 H143 MX3:3H14 MX3 H2C1 MX4:1H2C MX4 H2C2 MX4:2H2C MX4 H3C1 MX4:1H3C MX4 H3C2 MX4:2H3C MX4 H101 MX4:1H10 MX4 H102 MX4:2H10 MX4 H9C1 MX4:1H9C MX4 H9C2 MX4:2H9C MX4 H161 MX4:1H16 MX4 H162 MX4:2H16 MX4 H2C1 MX5:1H2C MX5 H2C2 MX5:2H2C MX5 H201 MX5:1H20 MX5 H202 MX5:2H20 MX5 H9C1 MX5:1H9C MX5 H9C2 MX5:2H9C MX5 H101 MX5:1H10 MX5 H102 MX5:2H10 MX5 H121 MX5:1H12 MX5 H122 MX5:2H12 MX5 H141 MX5:1H14 MX5 H142 MX5:2H14 MX5 H191 MX5:1H19 MX5 H192 MX5:2H19 MX5 HAO1 MX6:1HAO MX6 HAO2 MX6:2HAO MX6 HAM1 MX6:1HAM MX6 HAM2 MX6:2HAM MX6 HAK1 MX6:1HAK MX6 HAK2 MX6:2HAK MX6 HAL1 MX6:1HAL MX6 HAL2 MX6:2HAL MX6 HAG1 MX6:1HAG MX6 HAG2 MX6:2HAG MX6 HAH1 MX6:1HAH MX6 HAH2 MX6:2HAH MX6 HN21 MXA:1HN2 MXA HN22 MXA:2HN2 MXA HN41 MXA:1HN4 MXA HN42 MXA:2HN4 MXA H5M1 MXA:1H5M MXA H5M2 MXA:2H5M MXA H5M3 MXA:3H5M MXA H91 MXA:1H9 MXA H92 MXA:2H9 MXA H211 MXA:1H21 MXA H212 MXA:2H21 MXA H213 MXA:3H21 MXA H511 MXA:1H51 MXA H512 MXA:2H51 MXA H513 MXA:3H51 MXA HAO1 MXD:1HAO MXD HAO2 MXD:2HAO MXD HAM1 MXD:1HAM MXD HAM2 MXD:2HAM MXD HAG1 MXD:1HAG MXD HAG2 MXD:2HAG MXD HAK1 MXD:1HAK MXD HAK2 MXD:2HAK MXD HAL1 MXD:1HAL MXD HAL2 MXD:2HAL MXD HAJ1 MXD:1HAJ MXD HAJ2 MXD:2HAJ MXD HAH1 MXD:1HAH MXD HAH2 MXD:2HAH MXD H11 MXE:1H1 MXE H12 MXE:2H1 MXE H21 MXE:1H2 MXE H22 MXE:2H2 MXE H31 MXE:1H3 MXE H32 MXE:2H3 MXE H33 MXE:3H3 MXE H351 MXG:1H35 MXG H352 MXG:2H35 MXG H353 MXG:3H35 MXG H311 MXG:1H31 MXG H312 MXG:2H31 MXG H313 MXG:3H31 MXG H221 MXG:1H22 MXG H222 MXG:2H22 MXG H211 MXG:1H21 MXG H212 MXG:2H21 MXG H131 MXG:1H13 MXG H132 MXG:2H13 MXG H141 MXG:1H14 MXG H142 MXG:2H14 MXG H151 MXG:1H15 MXG H152 MXG:2H15 MXG H161 MXG:1H16 MXG H162 MXG:2H16 MXG H171 MXG:1H17 MXG H172 MXG:2H17 MXG HC31 MXG:1HC3 MXG HC32 MXG:2HC3 MXG HC21 MXG:1HC2 MXG HC22 MXG:2HC2 MXG H31 MXL:1H3 MXL H61 MXL:1H6 MXL H62 MXL:2H6 MXL HO41 MXL:1HO4 MXL H81 MXL:1H8 MXL H82 MXL:2H8 MXL H91 MXL:1H9 MXL H92 MXL:2H9 MXL H93 MXL:3H9 MXL HN21 MXL:1HN2 MXL H111 MXL:1H11 MXL HO71 MXL:1HO7 MXL H141 MXL:1H14 MXL H151 MXL:1H15 MXL H171 MXL:1H17 MXL H181 MXL:1H18 MXL HO91 MXL:1HO9 MXL H201 MXL:1H20 MXL H202 MXL:2H20 MXL H203 MXL:3H20 MXL HCM1 MXY:1HCM MXY HCM2 MXY:2HCM MXY HCM3 MXY:3HCM MXY H61 MXY:1H6 MXY H62 MXY:2H6 MXY H63 MXY:3H6 MXY H1C1 MXZ:1H1C MXZ HMC1 MXZ:1HMC MXZ HMC2 MXZ:2HMC MXZ HMC3 MXZ:3HMC MXZ H6C1 MXZ:1H6C MXZ H6C2 MXZ:2H6C MXZ H6C3 MXZ:3H6C MXZ H4N1 MY1:1H4N MY1 H4N2 MY1:2H4N MY1 H5C1 MY1:1H5C MY1 H5C2 MY1:2H5C MY1 H9C1 MY1:1H9C MY1 H9C2 MY1:2H9C MY1 H151 MY1:1H15 MY1 H152 MY1:2H15 MY1 H161 MY1:1H16 MY1 H162 MY1:2H16 MY1 H2C1 MY2:1H2C MY2 H2C2 MY2:2H2C MY2 H101 MY2:1H10 MY2 H102 MY2:2H10 MY2 H9C1 MY2:1H9C MY2 H9C2 MY2:2H9C MY2 H161 MY2:1H16 MY2 H162 MY2:2H16 MY2 H201 MY3:1H20 MY3 H202 MY3:2H20 MY3 H7C1 MY3:1H7C MY3 H7C2 MY3:2H7C MY3 H101 MY3:1H10 MY3 H102 MY3:2H10 MY3 H121 MY3:1H12 MY3 H122 MY3:2H12 MY3 H201 MY4:1H20 MY4 H202 MY4:2H20 MY4 H101 MY4:1H10 MY4 H102 MY4:2H10 MY4 H121 MY4:1H12 MY4 H122 MY4:2H12 MY4 H141 MY4:1H14 MY4 H142 MY4:2H14 MY4 H161 MY4:1H16 MY4 H162 MY4:2H16 MY4 H2N1 MY5:1H2N MY5 H2N2 MY5:2H2N MY5 H3C1 MY5:1H3C MY5 H3C2 MY5:2H3C MY5 H9C1 MY5:1H9C MY5 H9C2 MY5:2H9C MY5 H151 MY5:1H15 MY5 H152 MY5:2H15 MY5 H153 MY5:3H15 MY5 H191 MY5:1H19 MY5 H192 MY5:2H19 MY5 H151 MY9:1H15 MY9 H152 MY9:2H15 MY9 H153 MY9:3H15 MY9 H161 MY9:1H16 MY9 H162 MY9:2H16 MY9 H163 MY9:3H16 MY9 H181 MY9:1H18 MY9 H182 MY9:2H18 MY9 H183 MY9:3H18 MY9 H201 MY9:1H20 MY9 H202 MY9:2H20 MY9 H311 MY9:1H31 MY9 H312 MY9:2H31 MY9 H313 MY9:3H31 MY9 H321 MY9:1H32 MY9 H322 MY9:2H32 MY9 H323 MY9:3H32 MY9 H331 MY9:1H33 MY9 H332 MY9:2H33 MY9 H333 MY9:3H33 MY9 H6A1 MYA:1H6A MYA H6A2 MYA:2H6A MYA H2AC MYA:CH2A MYA H8AC MYA:CH8A MYA HFM1 MYA:1HFM MYA HFM2 MYA:2HFM MYA HFM3 MYA:3HFM MYA HBM1 MYA:1HBM MYA HBM2 MYA:2HBM MYA HCM1 MYA:1HCM MYA HCM2 MYA:2HCM MYA HDM1 MYA:1HDM MYA HDM2 MYA:2HDM MYA HEM1 MYA:1HEM MYA HEM2 MYA:2HEM MYA HAM1 MYA:1HAM MYA HAM2 MYA:2HAM MYA H9M1 MYA:1H9M MYA H9M2 MYA:2H9M MYA H8M1 MYA:1H8M MYA H8M2 MYA:2H8M MYA H7M1 MYA:1H7M MYA H7M2 MYA:2H7M MYA H3M1 MYA:1H3M MYA H3M2 MYA:2H3M MYA H4M1 MYA:1H4M MYA H4M2 MYA:2H4M MYA H5M1 MYA:1H5M MYA H5M2 MYA:2H5M MYA H6M1 MYA:1H6M MYA H6M2 MYA:2H6M MYA H7AO MYA:OH7A MYA H8AO MYA:OH8A MYA HN41 MYA:1HN4 MYA HC61 MYA:1HC6 MYA HC62 MYA:2HC6 MYA HC71 MYA:1HC7 MYA HC72 MYA:2HC7 MYA HN81 MYA:1HN8 MYA H131 MYA:1H13 MYA H132 MYA:2H13 MYA H133 MYA:3H13 MYA H141 MYA:1H14 MYA H142 MYA:2H14 MYA H143 MYA:3H14 MYA H121 MYA:1H12 MYA H122 MYA:2H12 MYA H2AO MYA:OH2A MYA H4X1 MYA:1H4X MYA H1XC MYA:CH1X MYA H2XC MYA:CH2X MYA H2XO MYA:OH2X MYA H3X1 MYA:1H3X MYA H5X1 MYA:1H5X MYA H5X2 MYA:2H5X MYA H4AO MYA:OH4A MYA H10C MYA:CH10 MYA H10O MYA:OH10 MYA HC31 MYA:1HC3 MYA HC32 MYA:2HC3 MYA HC21 MYA:1HC2 MYA HC22 MYA:2HC2 MYA H531 MYD:1H53 MYD H532 MYD:2H53 MYD H533 MYD:3H53 MYD H521 MYD:1H52 MYD H522 MYD:2H52 MYD H523 MYD:3H52 MYD H491 MYD:1H49 MYD H492 MYD:2H49 MYD H381 MYD:1H38 MYD H382 MYD:2H38 MYD H371 MYD:1H37 MYD H372 MYD:2H37 MYD H341 MYD:1H34 MYD H342 MYD:2H34 MYD H281 MYD:1H28 MYD H282 MYD:2H28 MYD H111 MYD:1H11 MYD H112 MYD:2H11 MYD H21A MYE:1H2 MYE H22 MYE:2H2 MYE H31 MYE:1H3 MYE H32 MYE:2H3 MYE H41 MYE:1H4 MYE H42 MYE:2H4 MYE H101 MYE:1H10 MYE H102 MYE:2H10 MYE H121 MYE:1H12 MYE H122 MYE:2H12 MYE H123 MYE:3H12 MYE H131 MYE:1H13 MYE H132 MYE:2H13 MYE H133 MYE:3H13 MYE H181 MYE:1H18 MYE H182 MYE:2H18 MYE H11A MYE:1H1 MYE H12 MYE:2H1 MYE H13 MYE:3H1 MYE H121 MYG:1H12 MYG H122 MYG:2H12 MYG HN81 MYG:1HN8 MYG HN82 MYG:2HN8 MYG HO10 MYG:0HO1 MYG HO12 MYG:2HO1 MYG H231 MYP:1H23 MYP H211 MYP:1H21 MYP H212 MYP:2H21 MYP H221 MYP:1H22 MYP H222 MYP:2H22 MYP H251 MYP:1H25 MYP H252 MYP:2H25 MYP H241 MYP:1H24 MYP H242 MYP:2H24 MYP H291 MYP:1H29 MYP H292 MYP:2H29 MYP H281 MYP:1H28 MYP H282 MYP:2H28 MYP H261 MYP:1H26 MYP H262 MYP:2H26 MYP H271 MYP:1H27 MYP H272 MYP:2H27 MYP H112 MYP:12H1 MYP H131 MYP:1H13 MYP H132 MYP:2H13 MYP HC81 MYP:1HC8 MYP HC82 MYP:2HC8 MYP H101 MYP:1H10 MYP H102 MYP:2H10 MYP H103 MYP:3H10 MYP HC91 MYP:1HC9 MYP HC92 MYP:2HC9 MYP H31 MYQ:1H3 MYQ H32 MYQ:2H3 MYQ H21 MYR:1H2 MYR H22 MYR:2H2 MYR H31 MYR:1H3 MYR H32 MYR:2H3 MYR H41 MYR:1H4 MYR H42 MYR:2H4 MYR H51 MYR:1H5 MYR H52 MYR:2H5 MYR H61 MYR:1H6 MYR H62 MYR:2H6 MYR H71 MYR:1H7 MYR H72 MYR:2H7 MYR H81 MYR:1H8 MYR H82 MYR:2H8 MYR H91 MYR:1H9 MYR H92 MYR:2H9 MYR H101 MYR:1H10 MYR H102 MYR:2H10 MYR H111 MYR:1H11 MYR H112 MYR:2H11 MYR H121 MYR:1H12 MYR H122 MYR:2H12 MYR H131 MYR:1H13 MYR H132 MYR:2H13 MYR H141 MYR:1H14 MYR H142 MYR:2H14 MYR H143 MYR:3H14 MYR H11 MYS:1H1 MYS H12 MYS:2H1 MYS H13 MYS:3H1 MYS H21 MYS:1H2 MYS H22 MYS:2H2 MYS H31 MYS:1H3 MYS H32 MYS:2H3 MYS H41 MYS:1H4 MYS H42 MYS:2H4 MYS H51 MYS:1H5 MYS H52 MYS:2H5 MYS H61 MYS:1H6 MYS H62 MYS:2H6 MYS H71 MYS:1H7 MYS H72 MYS:2H7 MYS H81 MYS:1H8 MYS H82 MYS:2H8 MYS H91 MYS:1H9 MYS H92 MYS:2H9 MYS H101 MYS:1H10 MYS H102 MYS:2H10 MYS H111 MYS:1H11 MYS H112 MYS:2H11 MYS H121 MYS:1H12 MYS H122 MYS:2H12 MYS H131 MYS:1H13 MYS H132 MYS:2H13 MYS H141 MYS:1H14 MYS H142 MYS:2H14 MYS H151 MYS:1H15 MYS H152 MYS:2H15 MYS H153 MYS:3H15 MYS H91 MYT:1H9 MYT H92 MYT:2H9 MYT H93 MYT:3H9 MYT H111 MYT:1H11 MYT H112 MYT:2H11 MYT H113 MYT:3H11 MYT HN11 MYX:1HN1 MYX HN12 MYX:2HN1 MYX H41 MYX:1H4 MYX H42 MYX:2H4 MYX H43 MYX:3H4 MYX H61 MYX:1H6 MYX H62 MYX:2H6 MYX H63 MYX:3H6 MYX H81 MYX:1H8 MYX H82 MYX:2H8 MYX H83 MYX:3H8 MYX H181 MYX:1H18 MYX H182 MYX:2H18 MYX H183 MYX:3H18 MYX H241 MYX:1H24 MYX H242 MYX:2H24 MYX H243 MYX:3H24 MYX H251 MYX:1H25 MYX H252 MYX:2H25 MYX H253 MYX:3H25 MYX H381 MYY:1H38 MYY H382 MYY:2H38 MYY H383 MYY:3H38 MYY H371 MYY:1H37 MYY H372 MYY:2H37 MYY H361 MYY:1H36 MYY H362 MYY:2H36 MYY H351 MYY:1H35 MYY H352 MYY:2H35 MYY H341 MYY:1H34 MYY H342 MYY:2H34 MYY H331 MYY:1H33 MYY H332 MYY:2H33 MYY H321 MYY:1H32 MYY H322 MYY:2H32 MYY H311 MYY:1H31 MYY H312 MYY:2H31 MYY H301 MYY:1H30 MYY H302 MYY:2H30 MYY H291 MYY:1H29 MYY H292 MYY:2H29 MYY H281 MYY:1H28 MYY H282 MYY:2H28 MYY H271 MYY:1H27 MYY H272 MYY:2H27 MYY H261 MYY:1H26 MYY H262 MYY:2H26 MYY H251 MYY:1H25 MYY H252 MYY:2H25 MYY H241 MYY:1H24 MYY H242 MYY:2H24 MYY H6C1 MYY:1H6C MYY H6C2 MYY:2H6C MYY H4C1 MYY:1H4C MYY H4C2 MYY:2H4C MYY H8C1 MYY:1H8C MYY H8C2 MYY:2H8C MYY H9C1 MYY:1H9C MYY H9C2 MYY:2H9C MYY H101 MYY:1H10 MYY H102 MYY:2H10 MYY H111 MYY:1H11 MYY H112 MYY:2H11 MYY H121 MYY:1H12 MYY H122 MYY:2H12 MYY H131 MYY:1H13 MYY H132 MYY:2H13 MYY H141 MYY:1H14 MYY H142 MYY:2H14 MYY H151 MYY:1H15 MYY H152 MYY:2H15 MYY H161 MYY:1H16 MYY H162 MYY:2H16 MYY H171 MYY:1H17 MYY H172 MYY:2H17 MYY H181 MYY:1H18 MYY H182 MYY:2H18 MYY H191 MYY:1H19 MYY H192 MYY:2H19 MYY H201 MYY:1H20 MYY H202 MYY:2H20 MYY H203 MYY:3H20 MYY H271 MZ1:1H27 MZ1 H272 MZ1:2H27 MZ1 H273 MZ1:3H27 MZ1 H231 MZ1:1H23 MZ1 H232 MZ1:2H23 MZ1 H233 MZ1:3H23 MZ1 H321 MZ1:1H32 MZ1 H322 MZ1:2H32 MZ1 H161 MZ1:1H16 MZ1 H162 MZ1:2H16 MZ1 H121 MZ1:1H12 MZ1 H122 MZ1:2H12 MZ1 H241 MZ2:1H24 MZ2 H242 MZ2:2H24 MZ2 H243 MZ2:3H24 MZ2 H321 MZ2:1H32 MZ2 H322 MZ2:2H32 MZ2 H161 MZ2:1H16 MZ2 H162 MZ2:2H16 MZ2 H121 MZ2:1H12 MZ2 H122 MZ2:2H12 MZ2 H281 MZ3:1H28 MZ3 H282 MZ3:2H28 MZ3 H283 MZ3:3H28 MZ3 H321 MZ3:1H32 MZ3 H322 MZ3:2H32 MZ3 H161 MZ3:1H16 MZ3 H162 MZ3:2H16 MZ3 H121 MZ3:1H12 MZ3 H122 MZ3:2H12 MZ3 H201 MZ3:1H20 MZ3 H202 MZ3:2H20 MZ3 H203 MZ3:3H20 MZ3 H201 MZ4:1H20 MZ4 H202 MZ4:2H20 MZ4 H203 MZ4:3H20 MZ4 H121 MZ4:1H12 MZ4 H122 MZ4:2H12 MZ4 H161 MZ4:1H16 MZ4 H162 MZ4:2H16 MZ4 H321 MZ4:1H32 MZ4 H322 MZ4:2H32 MZ4 H261 MZ5:1H26 MZ5 H262 MZ5:2H26 MZ5 H263 MZ5:3H26 MZ5 H251 MZ5:1H25 MZ5 H252 MZ5:2H25 MZ5 H253 MZ5:3H25 MZ5 H321 MZ5:1H32 MZ5 H322 MZ5:2H32 MZ5 H161 MZ5:1H16 MZ5 H162 MZ5:2H16 MZ5 H121 MZ5:1H12 MZ5 H122 MZ5:2H12 MZ5 H141 MZ5:1H14 MZ5 H142 MZ5:2H14 MZ5 H143 MZ5:3H14 MZ5 H151 MZ5:1H15 MZ5 H152 MZ5:2H15 MZ5 H181 MZ5:1H18 MZ5 H182 MZ5:2H18 MZ5 H183 MZ5:3H18 MZ5 H321 MZ6:1H32 MZ6 H322 MZ6:2H32 MZ6 H161 MZ6:1H16 MZ6 H162 MZ6:2H16 MZ6 H121 MZ6:1H12 MZ6 H122 MZ6:2H12 MZ6 H151 MZ6:1H15 MZ6 H152 MZ6:2H15 MZ6 H181 MZ6:1H18 MZ6 H182 MZ6:2H18 MZ6 H183 MZ6:3H18 MZ6 H141 MZ6:1H14 MZ6 H142 MZ6:2H14 MZ6 H143 MZ6:3H14 MZ6 H121 MZ7:1H12 MZ7 H122 MZ7:2H12 MZ7 H131 MZ7:1H13 MZ7 H132 MZ7:2H13 MZ7 H141 MZ7:1H14 MZ7 H142 MZ7:2H14 MZ7 H151 MZ7:1H15 MZ7 H152 MZ7:2H15 MZ7 H181 MZ7:1H18 MZ7 H182 MZ7:2H18 MZ7 H183 MZ7:3H18 MZ7 H161 MZ7:1H16 MZ7 H162 MZ7:2H16 MZ7 H251 MZ7:1H25 MZ7 H252 MZ7:2H25 MZ7 H253 MZ7:3H25 MZ7 H241 MZ7:1H24 MZ7 H242 MZ7:2H24 MZ7 H243 MZ7:3H24 MZ7 H291 MZ7:1H29 MZ7 H292 MZ7:2H29 MZ7 H293 MZ7:3H29 MZ7 H321 MZ7:1H32 MZ7 H322 MZ7:2H32 MZ7 H121 MZ8:1H12 MZ8 H122 MZ8:2H12 MZ8 H141 MZ8:1H14 MZ8 H142 MZ8:2H14 MZ8 H143 MZ8:3H14 MZ8 H151 MZ8:1H15 MZ8 H152 MZ8:2H15 MZ8 H153 MZ8:3H15 MZ8 H161 MZ8:1H16 MZ8 H162 MZ8:2H16 MZ8 H321 MZ8:1H32 MZ8 H322 MZ8:2H32 MZ8 H221 MZ9:1H22 MZ9 H222 MZ9:2H22 MZ9 H231 MZ9:1H23 MZ9 H232 MZ9:2H23 MZ9 H261 MZ9:1H26 MZ9 H262 MZ9:2H26 MZ9 H271 MZ9:1H27 MZ9 H272 MZ9:2H27 MZ9 H273 MZ9:3H27 MZ9 H321 MZ9:1H32 MZ9 H322 MZ9:2H32 MZ9 H161 MZ9:1H16 MZ9 H162 MZ9:2H16 MZ9 H121 MZ9:1H12 MZ9 H122 MZ9:2H12 MZ9 H141 MZ9:1H14 MZ9 H142 MZ9:2H14 MZ9 H143 MZ9:3H14 MZ9 H151 MZ9:1H15 MZ9 H152 MZ9:2H15 MZ9 H181 MZ9:1H18 MZ9 H182 MZ9:2H18 MZ9 H183 MZ9:3H18 MZ9 H201 MZ9:1H20 MZ9 H202 MZ9:2H20 MZ9 H203 MZ9:3H20 MZ9 HN11 MZM:1HN1 MZM HN12 MZM:2HN1 MZM H51 MZM:1H5 MZM H52 MZM:2H5 MZM H53 MZM:3H5 MZM H41 MZM:1H4 MZM H42 MZM:2H4 MZM H43 MZM:3H4 MZM H5'1 MZP:1H5* MZP H5'2 MZP:2H5* MZP H4'C MZP:CH4* MZP H3'C MZP:CH3* MZP H3'O MZP:OH3* MZP H2'C MZP:CH2* MZP H2'O MZP:OH2* MZP H1'C MZP:CH1* MZP HN61 MZP:1HN6 MZP HN62 MZP:2HN6 MZP HOP3 N:3HOP N HOP2 N:2HOP N H5' N:1H5* N H5'' N:2H5* N H4' N: H4* N H3' N: H3* N HO3' N:H3T N H2' N: H2* N HO2' N:2HO* N H1' N: H1* N H1'2 N:2H1* N HN1A N10:1HN N10 HN2 N10:2HN N10 HB1 N10:1HB N10 HB2 N10:2HB N10 HA11 N10:1HA1 N10 HA12 N10:2HA1 N10 HB21 N10:1HB2 N10 HB22 N10:2HB2 N10 HG31 N10:1HG3 N10 HG32 N10:2HG3 N10 HD41 N10:1HD4 N10 HD42 N10:2HD4 N10 HG51 N10:1HG5 N10 HG52 N10:2HG5 N10 HD61 N10:1HD6 N10 HD62 N10:2HD6 N10 HD63 N10:3HD6 N10 H21A N12:1H2 N12 H22A N12:2H2 N12 H61 N12:1H6 N12 H62 N12:2H6 N12 H81 N12:1H8 N12 H82 N12:2H8 N12 H91 N12:1H9 N12 H92 N12:2H9 N12 H101 N12:1H10 N12 H102 N12:2H10 N12 H111 N12:1H11 N12 H112 N12:2H11 N12 H121 N12:1H12 N12 H122 N12:2H12 N12 H191 N12:1H19 N12 H192 N12:2H19 N12 H301 N12:1H30 N12 H302 N12:2H30 N12 H311 N12:1H31 N12 H312 N12:2H31 N12 H321 N12:1H32 N12 H322 N12:2H32 N12 H331 N12:1H33 N12 H332 N12:2H33 N12 H341 N12:1H34 N12 H342 N12:2H34 N12 H5D1 N1C:1H5D N1C H5D2 N1C:2H5D N1C H1' N1C: H1* N1C H2' N1C: H2* N1C HO2' N1C:HO2* N1C HO3' N1C:HO3* N1C H5'1 N1C:1H5* N1C H5'2 N1C:2H5* N1C HN71 N1H:1HN7 N1H HN72 N1H:2HN7 N1H H311 N1H:1H31 N1H H312 N1H:2H31 N1H H2B N1H:H2'' N1H H3B N1H:H3'' N1H H4B N1H:H4'' N1H H6B N1H:H6'' N1H HM21 N1T:1HM2 N1T HM22 N1T:2HM2 N1T HM23 N1T:3HM2 N1T HN41 N1T:1HN4 N1T HN42 N1T:2HN4 N1T H7'1 N1T:1H7' N1T H7'2 N1T:2H7' N1T HM41 N1T:1HM4 N1T HM42 N1T:2HM4 N1T HM43 N1T:3HM4 N1T H61 N1T:1H6 N1T H62 N1T:2H6 N1T H71 N1T:1H7 N1T H72 N1T:2H7 N1T HOA2 N1T:2HOA N1T HOB3 N1T:3HOB N1T H101 N20:1H10 N20 H102 N20:2H10 N20 H121 N20:1H12 N20 H122 N20:2H12 N20 H131 N20:1H13 N20 H132 N20:2H13 N20 H141 N20:1H14 N20 H142 N20:2H14 N20 H151 N20:1H15 N20 H152 N20:2H15 N20 H161 N20:1H16 N20 H162 N20:2H16 N20 H81 N25:1H8 N25 H82 N25:2H8 N25 H83 N25:3H8 N25 H151 N25:1H15 N25 H152 N25:2H15 N25 H171 N25:1H17 N25 H172 N25:2H17 N25 H181 N25:1H18 N25 H182 N25:2H18 N25 H183 N25:3H18 N25 H191 N25:1H19 N25 H192 N25:2H19 N25 H193 N25:3H19 N25 H341 N25:1H34 N25 H342 N25:2H34 N25 H343 N25:3H34 N25 H1'1 N2B:1H1' N2B H1'2 N2B:2H1' N2B H2'1 N2B:1H2' N2B H2'2 N2B:2H2' N2B H2'3 N2B:3H2' N2B H N2C: HN N2C HB2 N2C:1HB N2C HB3 N2C:2HB N2C HD1 N2C:1HD N2C HD2 N2C:2HD N2C HD3 N2C:3HD N2C HN1 N2C:1HN N2C HN2 N2C:2HN N2C HN3 N2C:3HN N2C HN1 N2M:1HN N2M HN2 N2M:2HN N2M H1C1 N2P:1H1C N2P H1C2 N2P:2H1C N2P H2C1 N2P:1H2C N2P H2C2 N2P:2H2C N2P H3C1 N2P:1H3C N2P H3C2 N2P:2H3C N2P H4C1 N2P:1H4C N2P H4C2 N2P:2H4C N2P HE21 N2P:1HE2 N2P HE22 N2P:2HE2 N2P H5C1 N2P:1H5C N2P H5C2 N2P:2H5C N2P H1N1 N2P:1H1N N2P H1N2 N2P:2H1N N2P H111 N2T:1H11 N2T H112 N2T:2H11 N2T H151 N2T:1H15 N2T H152 N2T:2H15 N2T H261 N2T:1H26 N2T H262 N2T:2H26 N2T H263 N2T:3H26 N2T H121 N2T:1H12 N2T H122 N2T:2H12 N2T H91 N2T:1H9 N2T H92 N2T:2H9 N2T H161 N2T:1H16 N2T H162 N2T:2H16 N2T H211 N30:1H21 N30 H212 N30:2H21 N30 H611 N30:1H61 N30 H612 N30:2H61 N30 H121 N30:1H12 N30 H122 N30:2H12 N30 H221 N30:1H22 N30 H222 N30:2H22 N30 H321 N30:1H32 N30 H322 N30:2H32 N30 H531 N30:1H53 N30 H532 N30:2H53 N30 H211 N33:1H21 N33 H212 N33:2H21 N33 H611 N33:1H61 N33 H612 N33:2H61 N33 H121 N33:1H12 N33 H122 N33:2H12 N33 H221 N33:1H22 N33 H222 N33:2H22 N33 H321 N33:1H32 N33 H322 N33:2H32 N33 H231 N33:1H23 N33 H232 N33:2H23 N33 H631 N33:1H63 N33 H632 N33:2H63 N33 H771 N33:1H77 N33 H772 N33:2H77 N33 H411 N3C:1H41 N3C H412 N3C:2H41 N3C H371 N3C:1H37 N3C H372 N3C:2H37 N3C H381 N3C:1H38 N3C H382 N3C:2H38 N3C H401 N3C:1H40 N3C H402 N3C:2H40 N3C H403 N3C:3H40 N3C H391 N3C:1H39 N3C H392 N3C:2H39 N3C H393 N3C:3H39 N3C H161 N3C:1H16 N3C H162 N3C:2H16 N3C H151 N3C:1H15 N3C H152 N3C:2H15 N3C H181 N3C:1H18 N3C H182 N3C:2H18 N3C H191 N3C:1H19 N3C H192 N3C:2H19 N3C H131 N3C:1H13 N3C H132 N3C:2H13 N3C H5'1 N3E:1H5' N3E H5'2 N3E:2H5' N3E H131 N3E:1H13 N3E H132 N3E:2H13 N3E H81 N3E:1H8 N3E H82 N3E:2H8 N3E H91 N3E:1H9 N3E H92 N3E:2H9 N3E H121 N3E:1H12 N3E H122 N3E:2H12 N3E HM21 N3T:1HM2 N3T HM22 N3T:2HM2 N3T HM23 N3T:3HM2 N3T HN41 N3T:1HN4 N3T HN42 N3T:2HN4 N3T H7'1 N3T:1H7' N3T H7'2 N3T:2H7' N3T HM41 N3T:1HM4 N3T HM42 N3T:2HM4 N3T HM43 N3T:3HM4 N3T H61 N3T:1H6 N3T H62 N3T:2H6 N3T H71 N3T:1H7 N3T H72 N3T:2H7 N3T HOA2 N3T:2HOA N3T HOB3 N3T:3HOB N3T H101 N41:1H10 N41 H102 N41:2H10 N41 H121 N41:1H12 N41 H122 N41:2H12 N41 H131 N41:1H13 N41 H132 N41:2H13 N41 H141 N41:1H14 N41 H142 N41:2H14 N41 H151 N41:1H15 N41 H152 N41:2H15 N41 H161 N41:1H16 N41 H162 N41:2H16 N41 H251 N41:1H25 N41 H252 N41:2H25 N41 H1'1 N4B:1H1' N4B H1'2 N4B:2H1' N4B H2'1 N4B:1H2' N4B H2'2 N4B:2H2' N4B H3'1 N4B:1H3' N4B H3'2 N4B:2H3' N4B H4'1 N4B:1H4' N4B H4'2 N4B:2H4' N4B H4'3 N4B:3H4' N4B H111 N4T:1H11 N4T H112 N4T:2H11 N4T H151 N4T:1H15 N4T H152 N4T:2H15 N4T HN11 N4T:1HN1 N4T HN12 N4T:2HN1 N4T H121 N4T:1H12 N4T H122 N4T:2H12 N4T H531 N5A:1H53 N5A H532 N5A:2H53 N5A H521 N5A:1H52 N5A H522 N5A:2H52 N5A H511 N5A:1H51 N5A H512 N5A:2H51 N5A HN5' N5A:HN5* N5A H4' N5A: H4* N5A H3' N5A: H3* N5A HO3' N5A:HO3* N5A H2' N5A: H2* N5A HO2' N5A:HO2* N5A H1' N5A: H1* N5A HN61 N5A:1HN6 N5A HN62 N5A:2HN6 N5A H5C1 N5B:1H5C N5B H5C2 N5B:2H5C N5B H6C1 N5B:1H6C N5B H6C2 N5B:2H6C N5B HOP3 N5I:3HOP N5I H1' N5I: H1* N5I H4' N5I: H4* N5I H3' N5I: H3* N5I H2'1 N5I:1H2* N5I H2'2 N5I:2H2* N5I H5'1 N5I:1H5* N5I H5'2 N5I:2H5* N5I HOP2 N5I:2HOP N5I H521 N5O:1H52 N5O H522 N5O:2H52 N5O H511 N5O:1H51 N5O H512 N5O:2H51 N5O HN5' N5O:HN5* N5O H4' N5O: H4* N5O H3' N5O: H3* N5O HO3' N5O:HO3* N5O H2' N5O: H2* N5O HO2' N5O:HO2* N5O H1' N5O: H1* N5O HN61 N5O:1HN6 N5O HN62 N5O:2HN6 N5O H1' N5P: H1* N5P H4' N5P: H4* N5P H3' N5P: H3* N5P HO3' N5P:HO3* N5P H2'1 N5P:1H2* N5P H2'2 N5P:2H2* N5P H5'1 N5P:1H5* N5P H5'2 N5P:2H5* N5P HOG3 N5P:3HOG N5P HOG2 N5P:2HOG N5P H111 N5T:1H11 N5T H112 N5T:2H11 N5T H311 N5T:1H31 N5T H312 N5T:2H31 N5T H313 N5T:3H31 N5T H351 N5T:1H35 N5T H352 N5T:2H35 N5T H353 N5T:3H35 N5T H2N1 N69:1H2N N69 H2N2 N69:2H2N N69 H191 N69:1H19 N69 H192 N69:2H19 N69 H193 N69:3H19 N69 H181 N69:1H18 N69 H182 N69:2H18 N69 H183 N69:3H18 N69 H101 N69:1H10 N69 H102 N69:2H10 N69 H121 N69:1H12 N69 H122 N69:2H12 N69 H131 N69:1H13 N69 H132 N69:2H13 N69 H141 N69:1H14 N69 H142 N69:2H14 N69 H151 N69:1H15 N69 H152 N69:2H15 N69 H161 N69:1H16 N69 H162 N69:2H16 N69 HOP2 N6G:2HOP N6G H5' N6G:1H5* N6G H5'' N6G:2H5* N6G H4' N6G: H4* N6G H1' N6G: H1* N6G HN21 N6G:1HN2 N6G HN22 N6G:2HN2 N6G HN61 N6G:1HN6 N6G HN62 N6G:2HN6 N6G H2' N6G: H2* N6G HO2' N6G:2HO* N6G H3' N6G: H3* N6G HO3' N6G:H3T N6G HOP3 N6G:3HOP N6G H101 N76:1H10 N76 H102 N76:2H10 N76 H121 N76:1H12 N76 H122 N76:2H12 N76 H131 N76:1H13 N76 H132 N76:2H13 N76 H141 N76:1H14 N76 H142 N76:2H14 N76 H151 N76:1H15 N76 H152 N76:2H15 N76 H161 N76:1H16 N76 H162 N76:2H16 N76 HN21 N76:1HN2 N76 H261 N76:1H26 N76 H262 N76:2H26 N76 H81 N7P:1H8 N7P H82 N7P:2H8 N7P H83 N7P:3H8 N7P H51 N7P:1H5 N7P H52 N7P:2H5 N7P H41 N7P:1H4 N7P H42 N7P:2H4 N7P H31 N7P:1H3 N7P H32 N7P:2H3 N7P H011 N8E:1H01 N8E H012 N8E:2H01 N8E H013 N8E:3H01 N8E H021 N8E:1H02 N8E H022 N8E:2H02 N8E H031 N8E:1H03 N8E H032 N8E:2H03 N8E H041 N8E:1H04 N8E H042 N8E:2H04 N8E H051 N8E:1H05 N8E H052 N8E:2H05 N8E H061 N8E:1H06 N8E H062 N8E:2H06 N8E H071 N8E:1H07 N8E H072 N8E:2H07 N8E H081 N8E:1H08 N8E H082 N8E:2H08 N8E H101 N8E:1H10 N8E H102 N8E:2H10 N8E H111 N8E:1H11 N8E H112 N8E:2H11 N8E H131 N8E:1H13 N8E H132 N8E:2H13 N8E H141 N8E:1H14 N8E H142 N8E:2H14 N8E H161 N8E:1H16 N8E H162 N8E:2H16 N8E H171 N8E:1H17 N8E H172 N8E:2H17 N8E H191 N8E:1H19 N8E H192 N8E:2H19 N8E H201 N8E:1H20 N8E H202 N8E:2H20 N8E H221 N8E:1H22 N8E H222 N8E:2H22 N8E H231 N8E:1H23 N8E H232 N8E:2H23 N8E HBD1 N8T:1HBD N8T HBD2 N8T:2HBD N8T HBE1 N8T:1HBE N8T HBE2 N8T:2HBE N8T HAQ1 N8T:1HAQ N8T HAQ2 N8T:2HAQ N8T HAP1 N8T:1HAP N8T HAP2 N8T:2HAP N8T HAB1 N8T:1HAB N8T HAB2 N8T:2HAB N8T HAC1 N8T:1HAC N8T HAC2 N8T:2HAC N8T HAD1 N8T:1HAD N8T HAD2 N8T:2HAD N8T HAE1 N8T:1HAE N8T HAE2 N8T:2HAE N8T HAF1 N8T:1HAF N8T HAF2 N8T:2HAF N8T HAG1 N8T:1HAG N8T HAG2 N8T:2HAG N8T HAH1 N8T:1HAH N8T HAH2 N8T:2HAH N8T HAI1 N8T:1HAI N8T HAI2 N8T:2HAI N8T HAW1 N8T:1HAW N8T HAW2 N8T:2HAW N8T HAX1 N8T:1HAX N8T HAX2 N8T:2HAX N8T HBL1 N8T:1HBL N8T HBL2 N8T:2HBL N8T HBK1 N8T:1HBK N8T HBK2 N8T:2HBK N8T H141 N9H:1H14 N9H H142 N9H:2H14 N9H H311 N9H:1H31 N9H H312 N9H:2H31 N9H H71 N9H:1H7 N9H H72 N9H:2H7 N9H H81 N9H:1H8 N9H H82 N9H:2H8 N9H H91 N9H:1H9 N9H H92 N9H:2H9 N9H H93 N9H:3H9 N9H H111 N9H:1H11 N9H H112 N9H:2H11 N9H HN21 N9H:1HN2 N9H HN22 N9H:2HN2 N9H H1C1 NA1:1H1C NA1 H6C1 NA1:1H6C NA1 H6C2 NA1:2H6C NA1 H8C1 NA1:1H8C NA1 H8C2 NA1:2H8C NA1 H8C3 NA1:3H8C NA1 HO1 NA1:1HO NA1 H9C1 NA1:1H9C NA1 H9C2 NA1:2H9C NA1 H9C3 NA1:3H9C NA1 HO11 NA2:1HO1 NA2 HO12 NA2:2HO1 NA2 HO21 NA2:1HO2 NA2 HO22 NA2:2HO2 NA2 H21 NA3:1H2 NA3 H22 NA3:2H2 NA3 H21 NA4:1H2 NA4 H22 NA4:2H2 NA4 HO11 NA5:1HO1 NA5 HO12 NA5:2HO1 NA5 HO21 NA5:1HO2 NA5 HO22 NA5:2HO2 NA5 HO31 NA5:1HO3 NA5 HO32 NA5:2HO3 NA5 HO41 NA5:1HO4 NA5 HO42 NA5:2HO4 NA5 HO51 NA5:1HO5 NA5 HO52 NA5:2HO5 NA5 HO11 NA6:1HO1 NA6 HO12 NA6:2HO1 NA6 HO21 NA6:1HO2 NA6 HO22 NA6:2HO2 NA6 HO31 NA6:1HO3 NA6 HO32 NA6:2HO3 NA6 HO41 NA6:1HO4 NA6 HO42 NA6:2HO4 NA6 HO51 NA6:1HO5 NA6 HO52 NA6:2HO5 NA6 HO61 NA6:1HO6 NA6 HO62 NA6:2HO6 NA6 H5'1 NA7:1H5* NA7 H5'2 NA7:2H5* NA7 HC4' NA7:HC4* NA7 HC3' NA7:HC3* NA7 HO3' NA7:HO3* NA7 HC2' NA7:HC2* NA7 HC1' NA7:HC1* NA7 HN61 NA7:1HN6 NA7 HN62 NA7:2HN6 NA7 H51' NA7:H51* NA7 H52' NA7:H52* NA7 HN4' NA7:HN4* NA7 HN3' NA7:HN3* NA7 HN5' NA7:HN5* NA7 HN6' NA7:HN6* NA7 HN7' NA7:HN7* NA7 H1'1 NA7:1H1* NA7 H1'2 NA7:2H1* NA7 H71 NA9:1H7 NA9 H72 NA9:2H7 NA9 HN91 NA9:1HN9 NA9 HN92 NA9:2HN9 NA9 H151 NA9:1H15 NA9 H152 NA9:2H15 NA9 H153 NA9:3H15 NA9 H161 NA9:1H16 NA9 H162 NA9:2H16 NA9 H163 NA9:3H16 NA9 H221 NA9:1H22 NA9 H222 NA9:2H22 NA9 H261 NA9:1H26 NA9 H262 NA9:2H26 NA9 H281 NA9:1H28 NA9 H282 NA9:2H28 NA9 H291 NA9:1H29 NA9 H292 NA9:2H29 NA9 H301 NA9:1H30 NA9 H302 NA9:2H30 NA9 H311 NA9:1H31 NA9 H312 NA9:2H31 NA9 H321 NA9:1H32 NA9 H322 NA9:2H32 NA9 H61 NAA:1H6 NAA H62 NAA:2H6 NAA H81 NAA:1H8 NAA H82 NAA:2H8 NAA H83 NAA:3H8 NAA HO4' NAB:'HO4 NAB HOA2 NAC:2HOA NAC H51A NAC:AH51 NAC H52A NAC:AH52 NAC H4B NAC:AH4* NAC H3B NAC:AH3* NAC HO3A NAC:AHO3 NAC H2B NAC:AH2* NAC HO2A NAC:AHO2 NAC H1B NAC:AH1* NAC H8A NAC: AH8 NAC H61A NAC:AH61 NAC H62A NAC:AH62 NAC H2A NAC: AH2 NAC H51N NAC:NH51 NAC H52N NAC:NH52 NAC H4D NAC:NH4* NAC H3D NAC:NH3* NAC HO3N NAC:NHO3 NAC H2D NAC:NH2* NAC HO2N NAC:NHO2 NAC H1D NAC:NH1* NAC H2N NAC: NH2 NAC H81N NAC:NH81 NAC H82N NAC:NH82 NAC H83N NAC:NH83 NAC H4N NAC: NH4 NAC H5N NAC: NH5 NAC H6N NAC: NH6 NAC HOA2 NAD:2HOA NAD H51A NAD:AH51 NAD H52A NAD:AH52 NAD H4B NAD:AH4* NAD H3B NAD:AH3* NAD HO3A NAD:AHO3 NAD H2B NAD:AH2* NAD HO2A NAD:AHO2 NAD H1B NAD:AH1* NAD H8A NAD: AH8 NAD H61A NAD:AH61 NAD H62A NAD:AH62 NAD H2A NAD: AH2 NAD H51N NAD:NH51 NAD H52N NAD:NH52 NAD H4D NAD:NH4* NAD H3D NAD:NH3* NAD HO3N NAD:NHO3 NAD H2D NAD:NH2* NAD HO2N NAD:NHO2 NAD H1D NAD:NH1* NAD H2N NAD: NH2 NAD H71N NAD:NH71 NAD H72N NAD:NH72 NAD H4N NAD: NH4 NAD H5N NAD: NH5 NAD H6N NAD: NH6 NAD HOA2 NAE:2HOA NAE H5'1 NAE:1H5' NAE H5'2 NAE:2H5' NAE HO'3 NAE:3HO' NAE HO'2 NAE:2HO' NAE H6A1 NAE:1H6A NAE H6A2 NAE:2H6A NAE H5A1 NAE:1H5* NAE H5A2 NAE:2H5* NAE H4B NAE: H4* NAE H3B NAE: H3* NAE HOA3 NAE:3HO* NAE H2B NAE: H2* NAE HOB2 NAE:2HO* NAE H1B NAE: H1* NAE H7N1 NAE:1H7N NAE H7N2 NAE:2H7N NAE H4P1 NAE:1H4P NAE H4P2 NAE:2H4P NAE H2P1 NAE:1H2P NAE H2P2 NAE:2H2P NAE H2P3 NAE:3H2P NAE HM11 NAF:1HM1 NAF HM12 NAF:2HM1 NAF HM13 NAF:3HM1 NAF HM21 NAF:1HM2 NAF HM22 NAF:2HM2 NAF HM23 NAF:3HM2 NAF HM31 NAF:1HM3 NAF HM32 NAF:2HM3 NAF HM33 NAF:3HM3 NAF H61 NAG:1H6 NAG H62 NAG:2H6 NAG H81 NAG:1H8 NAG H82 NAG:2H8 NAG H83 NAG:3H8 NAG HOA2 NAH:2HOA NAH H51A NAH:AH51 NAH H52A NAH:AH52 NAH H4B NAH:AH4* NAH H3B NAH:AH3* NAH HO3A NAH:AHO3 NAH H2B NAH:AH2* NAH HO2A NAH:AHO2 NAH H1B NAH:AH1* NAH H8A NAH: AH8 NAH H61A NAH:AH61 NAH H62A NAH:AH62 NAH H2A NAH: AH2 NAH H51N NAH:NH51 NAH H52N NAH:NH52 NAH H4D NAH:NH4* NAH H3D NAH:NH3* NAH HO3N NAH:NHO3 NAH H2D NAH:NH2* NAH HO2N NAH:NHO2 NAH H1D NAH:NH1* NAH H2N NAH: NH2 NAH H71N NAH:NH71 NAH H72N NAH:NH72 NAH H4N NAH: NH4 NAH H5N NAH: NH5 NAH H6N NAH: NH6 NAH HOA2 NAI:2HOA NAI H51A NAI:AH51 NAI H52A NAI:AH52 NAI H4B NAI:AH4* NAI H3B NAI:AH3* NAI HO3A NAI:AHO3 NAI H2B NAI:AH2* NAI HO2A NAI:AHO2 NAI H1B NAI:AH1* NAI H8A NAI: AH8 NAI H61A NAI:AH61 NAI H62A NAI:AH62 NAI H2A NAI: AH2 NAI HO1N NAI:1NHO NAI H51N NAI:NH51 NAI H52N NAI:NH52 NAI H4D NAI:NH4* NAI H3D NAI:NH3* NAI HO3N NAI:NHO3 NAI H2D NAI:NH2* NAI HO2N NAI:NHO2 NAI H1D NAI:NH1* NAI H2N NAI: NH2 NAI H71N NAI:NH71 NAI H72N NAI:NH72 NAI H4N NAI: NH4 NAI H42N NAI:2NH4 NAI H5N NAI: NH5 NAI H6N NAI: NH6 NAI H51A NAJ:AH51 NAJ H52A NAJ:AH52 NAJ H4B NAJ:AH4* NAJ H3B NAJ:AH3* NAJ HO3A NAJ:AHO3 NAJ H2B NAJ:AH2* NAJ HO2A NAJ:AHO2 NAJ H1B NAJ:AH1* NAJ H8A NAJ: AH8 NAJ H61A NAJ:AH61 NAJ H62A NAJ:AH62 NAJ H1A NAJ: AH1 NAJ H2A NAJ: AH2 NAJ H51N NAJ:NH51 NAJ H52N NAJ:NH52 NAJ H4D NAJ:NH4* NAJ H3D NAJ:NH3* NAJ HO3N NAJ:NHO3 NAJ H2D NAJ:NH2* NAJ HO2N NAJ:NHO2 NAJ H1D NAJ:NH1* NAJ H2N NAJ: NH2 NAJ H71N NAJ:NH71 NAJ H72N NAJ:NH72 NAJ H4N NAJ: NH4 NAJ H5N NAJ: NH5 NAJ H6N NAJ: NH6 NAJ HAE1 NAK:1HAE NAK HAE2 NAK:2HAE NAK HAE3 NAK:3HAE NAK HAB1 NAK:1HAB NAK HAB2 NAK:2HAB NAK H91 NAL:1H9 NAL H92 NAL:2H9 NAL HN1 NAL:1HN NAL HN2 NAL:2HN NAL H NAM:1HN NAM H2 NAM:2HN NAM HB2 NAM:1HB NAM HB3 NAM:2HB NAM HNX1 NAM:1HNX NAM HNX2 NAM:2HNX NAM H31 NAN:1H3 NAN H32 NAN:2H3 NAN H91 NAN:1H9 NAN H92 NAN:2H9 NAN H111 NAN:1H11 NAN H112 NAN:2H11 NAN H113 NAN:3H11 NAN HOB1 NAN:1HOB NAN HO11 NAO:1HO1 NAO HO12 NAO:2HO1 NAO HOA2 NAP:2HOA NAP H51A NAP:AH51 NAP H52A NAP:AH52 NAP H4B NAP:AH4* NAP H3B NAP:AH3* NAP HO3A NAP:AHO3 NAP H2B NAP:AH2* NAP H1B NAP:AH1* NAP H8A NAP: AH8 NAP H61A NAP:AH61 NAP H62A NAP:AH62 NAP H2A NAP: AH2 NAP H51N NAP:NH51 NAP H52N NAP:NH52 NAP H4D NAP:NH4* NAP H3D NAP:NH3* NAP HO3N NAP:NHO3 NAP H2D NAP:NH2* NAP HO2N NAP:NHO2 NAP H1D NAP:NH1* NAP H2N NAP: NH2 NAP H71N NAP:NH71 NAP H72N NAP:NH72 NAP H4N NAP: NH4 NAP H5N NAP: NH5 NAP H6N NAP: NH6 NAP HOP2 NAP:2HOP NAP HOP3 NAP:3HOP NAP HOA2 NAQ:2HOA NAQ H5'1 NAQ:1H5' NAQ H5'2 NAQ:2H5' NAQ HO'3 NAQ:3HO' NAQ HO'2 NAQ:2HO' NAQ H6A1 NAQ:1H6A NAQ H6A2 NAQ:2H6A NAQ H5A1 NAQ:1H5* NAQ H5A2 NAQ:2H5* NAQ H4B NAQ: H4* NAQ H3B NAQ: H3* NAQ HOA3 NAQ:3HO* NAQ H2B NAQ: H2* NAQ HOB2 NAQ:2HO* NAQ H1B NAQ: H1* NAQ H7N1 NAQ:1H7N NAQ H7N2 NAQ:2H7N NAQ H5P1 NAQ:1H5P NAQ H5P2 NAQ:2H5P NAQ H5P3 NAQ:3H5P NAQ H2P1 NAQ:1H2P NAQ H2P2 NAQ:2H2P NAQ H1P1 NAQ:1H1P NAQ H1P2 NAQ:2H1P NAQ H1P3 NAQ:3H1P NAQ H11 NAR:1H1 NAR H31 NAR:1H3 NAR H81 NAR:1H8 NAR H82 NAR:2H8 NAR H111 NAR:1H11 NAR H121 NAR:1H12 NAR H141 NAR:1H14 NAR H151 NAR:1H15 NAR H41 NAR:1H4 NAR H51 NAR:1H5 NAR HOS3 NAS:3HOS NAS H161 NAT:1H16 NAT H162 NAT:2H16 NAT H171 NAT:1H17 NAT H172 NAT:2H17 NAT H173 NAT:3H17 NAT H181 NAT:1H18 NAT H182 NAT:2H18 NAT H183 NAT:3H18 NAT HC21 NAU:1HC2 NAU HC22 NAU:2HC2 NAU HC31 NAU:1HC3 NAU HC32 NAU:2HC3 NAU H111 NAU:1H11 NAU H112 NAU:2H11 NAU H113 NAU:3H11 NAU HC91 NAU:1HC9 NAU HC92 NAU:2HC9 NAU HC21 NAV:1HC2 NAV HC22 NAV:2HC2 NAV HC31 NAV:1HC3 NAV HC32 NAV:2HC3 NAV H111 NAV:1H11 NAV H112 NAV:2H11 NAV H113 NAV:3H11 NAV HC91 NAV:1HC9 NAV HC92 NAV:2HC9 NAV HO11 NAW:1HO1 NAW HO12 NAW:2HO1 NAW HO21 NAW:1HO2 NAW HO22 NAW:2HO2 NAW HO31 NAW:1HO3 NAW HO32 NAW:2HO3 NAW HOA2 NAX:2HOA NAX H51A NAX:AH51 NAX H52A NAX:AH52 NAX H4B NAX:AH4* NAX H3B NAX:AH3* NAX HO3A NAX:AHO3 NAX H2B NAX:AH2* NAX HO2A NAX:AHO2 NAX H1B NAX:AH1* NAX H8A NAX: AH8 NAX H61A NAX:AH61 NAX H62A NAX:AH62 NAX H2A NAX: AH2 NAX HNO2 NAX:2HNO NAX H5'1 NAX:1H5* NAX H5'2 NAX:2H5* NAX H4D NAX:NH4* NAX H3D NAX:NH3* NAX HO3N NAX:NHO3 NAX H2D NAX:NH2* NAX HO2N NAX:NHO2 NAX H1D NAX:NH1* NAX H2N NAX: NH2 NAX H71N NAX:NH71 NAX H72N NAX:NH72 NAX H41N NAX:NH41 NAX H42N NAX:NH42 NAX H51N NAX:NH51 NAX H52N NAX:NH52 NAX H6N NAX: NH6 NAX HO6N NAX:NHO6 NAX HC31 NAY:1HC3 NAY HC32 NAY:2HC3 NAY HC41 NAY:1HC4 NAY HC42 NAY:2HC4 NAY H111 NAY:1H11 NAY H112 NAY:2H11 NAY H113 NAY:3H11 NAY HC91 NAY:1HC9 NAY HC92 NAY:2HC9 NAY H6C1 NB1:1H6C NB1 H6C2 NB1:2H6C NB1 H8C1 NB1:1H8C NB1 H8C2 NB1:2H8C NB1 H9C1 NB1:1H9C NB1 H9C2 NB1:2H9C NB1 HMC1 NB1:1HMC NB1 HMC2 NB1:2HMC NB1 HMC3 NB1:3HMC NB1 HO4 NBA:4HO NBA HC4 NBA:4HC NBA HC51 NBA:1HC5 NBA HC52 NBA:2HC5 NBA HC61 NBA:1HC6 NBA HC62 NBA:2HC6 NBA HN7 NBA:7HN NBA HC81 NBA:1HC8 NBA HC82 NBA:2HC8 NBA HC91 NBA:1HC9 NBA HC92 NBA:2HC9 NBA H101 NBA:1H10 NBA H102 NBA:2H10 NBA HN11 NBA:1HN1 NBA H121 NBA:1H12 NBA H122 NBA:2H12 NBA H131 NBA:1H13 NBA H132 NBA:2H13 NBA H141 NBA:1H14 NBA H142 NBA:2H14 NBA HN51 NBA:1HN5 NBA H161 NBA:1H16 NBA H162 NBA:2H16 NBA H163 NBA:3H16 NBA HOL4 NBA:4HOL NBA H111 NBB:1H11 NBB H112 NBB:2H11 NBB H121 NBB:1H12 NBB H122 NBB:2H12 NBB H131 NBB:1H13 NBB H132 NBB:2H13 NBB H141 NBB:1H14 NBB H142 NBB:2H14 NBB H143 NBB:3H14 NBB H91 NBC:1H9 NBC H71 NBC:1H7 NBC H81 NBC:1H8 NBC H51 NBC:1H5 NBC H61 NBC:1H6 NBC H31A NBC:1H3 NBC H41A NBC:1H4 NBC H11A NBC:1H1 NBC H21A NBC:1H2 NBC HOA2 NBD:2HOA NBD H51A NBD:AH51 NBD H52A NBD:AH52 NBD H4B NBD:AH4* NBD H3B NBD:AH3* NBD HO3A NBD:AHO3 NBD H2B NBD:AH2* NBD HO2A NBD:AHO2 NBD H1B NBD:AH1* NBD H8A NBD: AH8 NBD H6A NBD: AH6 NBD H2A NBD: AH2 NBD H51N NBD:NH51 NBD H52N NBD:NH52 NBD H4D NBD:NH4* NBD H3D NBD:NH3* NBD HO3N NBD:NHO3 NBD H2D NBD:NH2* NBD HO2N NBD:NHO2 NBD H1D NBD:NH1* NBD H2N NBD: NH2 NBD H71N NBD:NH71 NBD H72N NBD:NH72 NBD H4N NBD: NH4 NBD H5N NBD: NH5 NBD H6N NBD: NH6 NBD HB11 NBD:1HB1 NBD HB12 NBD:2HB1 NBD H251 NBF:1H25 NBF H252 NBF:2H25 NBF H253 NBF:3H25 NBF H241 NBF:1H24 NBF H242 NBF:2H24 NBF H71 NBF:1H7 NBF H72 NBF:2H7 NBF H61 NBG:1H6 NBG H62 NBG:2H6 NBG H81 NBG:1H8 NBG H82 NBG:2H8 NBG H83 NBG:3H8 NBG H11 NBL:1H1 NBL H12A NBL:2H1 NBL H13A NBL:3H1 NBL H31 NBL:1H3 NBL H32 NBL:2H3 NBL H33 NBL:3H3 NBL H41 NBL:1H4 NBL H42 NBL:2H4 NBL H101 NBL:1H10 NBL H102 NBL:2H10 NBL H211 NBL:1H21 NBL H212 NBL:2H21 NBL H221 NBL:1H22 NBL H222 NBL:2H22 NBL H241 NBL:1H24 NBL H242 NBL:2H24 NBL H11 NBN:1H1 NBN H12 NBN:2H1 NBN H21 NBN:1H2 NBN H22 NBN:2H2 NBN H31 NBN:1H3 NBN H32 NBN:2H3 NBN H41 NBN:1H4 NBN H42 NBN:2H4 NBN H43 NBN:3H4 NBN HOA2 NBP:2HOA NBP H51A NBP:AH51 NBP H52A NBP:AH52 NBP H4B NBP:AH4* NBP H3B NBP:AH3* NBP HO3A NBP:AHO3 NBP H2B NBP:AH2* NBP H1B NBP:AH1* NBP H61A NBP:AH61 NBP H62A NBP:AH62 NBP H2A NBP: AH2 NBP H51N NBP:NH51 NBP H52N NBP:NH52 NBP H4D NBP:NH4* NBP H3D NBP:NH3* NBP HO3N NBP:NHO3 NBP H2D NBP:NH2* NBP HO2N NBP:NHO2 NBP H1D NBP:NH1* NBP H2N NBP: NH2 NBP H71N NBP:NH71 NBP H72N NBP:NH72 NBP H4N NBP: NH4 NBP H5N NBP: NH5 NBP H6N NBP: NH6 NBP HOP2 NBP:2HOP NBP HOP3 NBP:3HOP NBP H2 NBQ: HN NBQ HB2 NBQ: HB1 NBQ HB3 NBQ: HB2 NBQ HAE1 NBQ:1HAE NBQ HAE2 NBQ:2HAE NBQ HOP4 NBS:4HOP NBS HOP5 NBS:5HOP NBS HOP1 NBS:1HOP NBS H5'1 NBS:1H5* NBS H5'2 NBS:2H5* NBS H4' NBS: H4* NBS H1' NBS: H1* NBS HB11 NBS:1HB1 NBS HB12 NBS:2HB1 NBS H2' NBS: H2* NBS HO'2 NBS:2HO* NBS H3' NBS: H3* NBS HO'3 NBS:3HO* NBS H1C1 NBT:1H1C NBT H1C2 NBT:2H1C NBT H1C3 NBT:3H1C NBT H3C1 NBT:1H3C NBT H3C2 NBT:2H3C NBT H4C1 NBT:1H4C NBT H4C2 NBT:2H4C NBT H4C3 NBT:3H4C NBT H121 NBV:1H12 NBV H122 NBV:2H12 NBV H7C1 NBV:1H7C NBV H7C2 NBV:2H7C NBV H131 NBV:1H13 NBV H132 NBV:2H13 NBV H141 NBV:1H14 NBV H142 NBV:2H14 NBV H151 NBV:1H15 NBV H152 NBV:2H15 NBV H161 NBV:1H16 NBV H162 NBV:2H16 NBV H163 NBV:3H16 NBV H11 NC:1H1 NC H12 NC:2H1 NC H13 NC:3H1 NC HC28 NC1:H2 NC1 H NC1: H20 NC1 H2 NC1: H21 NC1 HB2 NC1: H17 NC1 HB3 NC1: H18 NC1 H6C1 NC2:1H6C NC2 H6C2 NC2:2H6C NC2 H131 NC2:1H13 NC2 H132 NC2:2H13 NC2 H221 NC2:1H22 NC2 H231 NC2:1H23 NC2 HN1 NC2:1HN NC2 HN2 NC2:2HN NC2 HBC1 NC2:1HBC NC2 HBC2 NC2:2HBC NC2 H51 NC3:1H5 NC3 H52 NC3:2H5 NC3 H101 NC3:1H10 NC3 H102 NC3:2H10 NC3 H111 NC3:1H11 NC3 H112 NC3:2H11 NC3 H121 NC3:1H12 NC3 H122 NC3:2H12 NC3 H131 NC3:1H13 NC3 H132 NC3:2H13 NC3 H141 NC3:1H14 NC3 H142 NC3:2H14 NC3 H51 NC4:1H5 NC4 H52 NC4:2H5 NC4 H61 NC4:1H6 NC4 H62 NC4:2H6 NC4 H71 NC4:1H7 NC4 H72 NC4:2H7 NC4 H121 NC4:1H12 NC4 H122 NC4:2H12 NC4 H131 NC4:1H13 NC4 H132 NC4:2H13 NC4 H141 NC4:1H14 NC4 H142 NC4:2H14 NC4 H151 NC4:1H15 NC4 H152 NC4:2H15 NC4 H161 NC4:1H16 NC4 H162 NC4:2H16 NC4 H51 NC6:1H5 NC6 H52 NC6:2H5 NC6 H61 NC6:1H6 NC6 H62 NC6:2H6 NC6 H71 NC6:1H7 NC6 H72 NC6:2H7 NC6 H81 NC6:1H8 NC6 H82 NC6:2H8 NC6 H91 NC6:1H9 NC6 H92 NC6:2H9 NC6 H141 NC6:1H14 NC6 H142 NC6:2H14 NC6 H151 NC6:1H15 NC6 H152 NC6:2H15 NC6 H161 NC6:1H16 NC6 H162 NC6:2H16 NC6 H171 NC6:1H17 NC6 H172 NC6:2H17 NC6 H181 NC6:1H18 NC6 H182 NC6:2H18 NC6 H51 NC7:1H5 NC7 H52 NC7:2H5 NC7 H61 NC7:1H6 NC7 H62 NC7:2H6 NC7 H71 NC7:1H7 NC7 H72 NC7:2H7 NC7 H81 NC7:1H8 NC7 H82 NC7:2H8 NC7 H91 NC7:1H9 NC7 H92 NC7:2H9 NC7 H111 NC7:1H11 NC7 H112 NC7:2H11 NC7 H151 NC7:1H15 NC7 H152 NC7:2H15 NC7 H161 NC7:1H16 NC7 H162 NC7:2H16 NC7 H171 NC7:1H17 NC7 H172 NC7:2H17 NC7 H181 NC7:1H18 NC7 H182 NC7:2H18 NC7 H191 NC7:1H19 NC7 H192 NC7:2H19 NC7 HN71 NCA:1HN7 NCA HN72 NCA:2HN7 NCA HXT NCB: HO NCB HB3 NCB:3HB NCB HB2 NCB:2HB NCB HB1 NCB:1HB NCB H22 NCB:2H2 NCB H21 NCB:1H2 NCB H5'1 NCC:1H5' NCC H5'2 NCC:2H5' NCC HN41 NCC:1HN4 NCC HN42 NCC:2HN4 NCC H151 NCC:1H15 NCC H152 NCC:2H15 NCC H181 NCC:1H18 NCC H182 NCC:2H18 NCC H183 NCC:3H18 NCC H201 NCC:1H20 NCC H202 NCC:2H20 NCC H61 NCD:1H6 NCD H611 NCD:1H61 NCD H11 NCD:1H1 NCD H31 NCD:1H3 NCD H32 NCD:2H3 NCD H51 NCD:1H5 NCD H52 NCD:2H5 NCD HO51 NCD:1HO5 NCD H2C1 NCF:1H2C NCF H2C2 NCF:2H2C NCF H3C1 NCF:1H3C NCF H3C2 NCF:2H3C NCF H131 NCF:1H13 NCF H132 NCF:2H13 NCF H8B NCG:H8'' NCG H6B NCG:H6'' NCG H3B NCG:H3'' NCG H4B NCG:H4'' NCG H11 NCH:1H1 NCH H12 NCH:2H1 NCH H21 NCH:1H2 NCH H22 NCH:2H2 NCH H31 NCH:1H3 NCH H32 NCH:2H3 NCH H33 NCH:3H3 NCH H51 NCH:1H5 NCH H52 NCH:2H5 NCH H53 NCH:3H5 NCH H41 NCH:1H4 NCH H42 NCH:2H4 NCH H43 NCH:3H4 NCH H31 NCM:1H3 NCM H32 NCM:2H3 NCM H51 NCM:1H5 NCM H52 NCM:2H5 NCM H61 NCM:1H6 NCM H62 NCM:2H6 NCM H71 NCM:1H7 NCM H72 NCM:2H7 NCM HOP1 NCN:1HOP NCN H5'1 NCN:1H5* NCN H5'2 NCN:2H5* NCN H4' NCN: H4* NCN H3' NCN: H3* NCN HO'3 NCN:3HO* NCN H2' NCN: H2* NCN HO'2 NCN:2HO* NCN H1' NCN: H1* NCN HN11 NCO:1HN1 NCO HN12 NCO:2HN1 NCO HN13 NCO:3HN1 NCO HN21 NCO:1HN2 NCO HN22 NCO:2HN2 NCO HN23 NCO:3HN2 NCO HN31 NCO:1HN3 NCO HN32 NCO:2HN3 NCO HN33 NCO:3HN3 NCO HN41 NCO:1HN4 NCO HN42 NCO:2HN4 NCO HN43 NCO:3HN4 NCO HN51 NCO:1HN5 NCO HN52 NCO:2HN5 NCO HN53 NCO:3HN5 NCO HN61 NCO:1HN6 NCO HN62 NCO:2HN6 NCO HN63 NCO:3HN6 NCO HN11 NCP:1HN1 NCP HN12 NCP:2HN1 NCP HN21 NCP:1HN2 NCP HN22 NCP:2HN2 NCP H71 NCR:1H7 NCR H72 NCR:2H7 NCR H73 NCR:3H7 NCR H171 NCS:1H17 NCS H172 NCS:2H17 NCS H301 NCS:1H30 NCS H302 NCS:2H30 NCS H303 NCS:3H30 NCS H311 NCS:1H31 NCS H312 NCS:2H31 NCS H313 NCS:3H31 NCS H1' NCS: H1* NCS H2' NCS: H2* NCS HN21 NCS:1HN2 NCS HN22 NCS:2HN2 NCS HM21 NCS:1HM2 NCS HM22 NCS:2HM2 NCS HM23 NCS:3HM2 NCS H3' NCS: H3* NCS HO3' NCS:*HO3 NCS H4' NCS: H4* NCS HO4' NCS:*HO4 NCS H5' NCS: H5* NCS HM51 NCS:1HM5 NCS HM52 NCS:2HM5 NCS HM53 NCS:3HM5 NCS HC71 NCT:1HC7 NCT HC72 NCT:2HC7 NCT HC81 NCT:1HC8 NCT HC82 NCT:2HC8 NCT HC91 NCT:1HC9 NCT HC92 NCT:2HC9 NCT H101 NCT:1H10 NCT H102 NCT:2H10 NCT H103 NCT:3H10 NCT HOP3 NCX:3HOP NCX HOP2 NCX:2HOP NCX H5' NCX:1H5* NCX H5'' NCX:2H5* NCX H4' NCX: H4* NCX H1' NCX: H1* NCX HH71 NCX:1HH7 NCX HH72 NCX:2HH7 NCX H3' NCX: H3* NCX H2' NCX:1H2* NCX H2'' NCX:2H2* NCX HO3' NCX:H3T NCX H NCY: HN NCY HB2 NCY:1HB NCY HB3 NCY:2HB NCY HCN1 NCY:1HCN NCY HCN2 NCY:2HCN NCY HCN3 NCY:3HCN NCY H1 NCZ:1H NCZ H7 NCZ:7H NCZ H8 NCZ:8H NCZ H12 NCZ:2H1 NCZ H13 NCZ:3H1 NCZ H14 NCZ:4H1 NCZ H15 NCZ:5H1 NCZ H16 NCZ:6H1 NCZ H6 NCZ:6H NCZ H5 NCZ:5H NCZ H2 NCZ:2H NCZ H3 NCZ:3H NCZ H171 NCZ:1H17 NCZ H172 NCZ:2H17 NCZ H173 NCZ:3H17 NCZ H181 NCZ:1H18 NCZ H182 NCZ:2H18 NCZ H183 NCZ:3H18 NCZ HOA2 NDA:2HOA NDA H51A NDA:AH51 NDA H52A NDA:AH52 NDA H4B NDA:AH4* NDA H3B NDA:AH3* NDA HO3A NDA:AHO3 NDA H2B NDA:AH2* NDA HO2A NDA:AHO2 NDA H1B NDA:AH1* NDA H8A NDA: AH8 NDA H61A NDA:AH61 NDA H62A NDA:AH62 NDA H2A NDA: AH2 NDA H51N NDA:NH51 NDA H52N NDA:NH52 NDA H4D NDA:NH4* NDA H3D NDA:NH3* NDA HO3N NDA:NHO3 NDA H2D NDA:NH2* NDA HO2N NDA:NHO2 NDA H1D NDA:NH1* NDA H2N NDA: NH2 NDA HC71 NDA:1HC7 NDA HC72 NDA:2HC7 NDA H71N NDA:NH71 NDA H72N NDA:NH72 NDA H4N NDA: NH4 NDA H5N NDA: NH5 NDA H6N NDA: NH6 NDA HOA2 NDC:2HOA NDC H5'1 NDC:1H5' NDC H5'2 NDC:2H5' NDC HO'3 NDC:3HO' NDC HO'2 NDC:2HO' NDC H6A1 NDC:1H6A NDC H6A2 NDC:2H6A NDC H5A1 NDC:1H5* NDC H5A2 NDC:2H5* NDC H4B NDC: H4* NDC H3B NDC: H3* NDC HOA3 NDC:3HO* NDC H2B NDC: H2* NDC HOB2 NDC:2HO* NDC H1B NDC: H1* NDC H7N1 NDC:1H7N NDC H7N2 NDC:2H7N NDC HC21 NDC:1HC2 NDC HC22 NDC:2HC2 NDC HC31 NDC:1HC3 NDC HC32 NDC:2HC3 NDC HC41 NDC:1HC4 NDC HC42 NDC:2HC4 NDC HC51 NDC:1HC5 NDC HC52 NDC:2HC5 NDC H71N NDE:NH71 NDE H72N NDE:NH72 NDE H5N NDE: NH5 NDE H6N NDE: NH6 NDE H2N NDE: NH2 NDE H1D NDE:NH1* NDE H2D NDE:NH2* NDE HO2N NDE:NHO2 NDE H3D NDE:NH3* NDE HO3N NDE:NHO3 NDE H4D NDE:NH4* NDE H51N NDE:NH51 NDE H52N NDE:NH52 NDE HOA2 NDE:2HOA NDE H51A NDE:AH51 NDE H52A NDE:AH52 NDE H4B NDE:AH4* NDE H1B NDE:AH1* NDE H2B NDE:AH2* NDE HO2A NDE:AHO2 NDE H3B NDE:AH3* NDE HO3A NDE:AHO3 NDE H8A NDE: AH8 NDE H61A NDE:AH61 NDE H62A NDE:AH62 NDE H2A NDE: AH2 NDE HOP2 NDE:2HOP NDE HOP3 NDE:3HOP NDE H11 NDE:1H1 NDE H12 NDE:2H1 NDE H31 NDE:1H3 NDE H311 NDE:1H31 NDE HB3 NDF:1HB NDF HB2 NDF:2HB NDF H NDF: HN NDF H6C1 NDG:1H6C NDG H6C2 NDG:2H6C NDG H8C1 NDG:1H8C NDG H8C2 NDG:2H8C NDG H8C3 NDG:3H8C NDG H121 NDL:1H12 NDL H122 NDL:2H12 NDL H111 NDL:1H11 NDL H112 NDL:2H11 NDL H141 NDL:1H14 NDL H142 NDL:2H14 NDL H131 NDL:1H13 NDL H132 NDL:2H13 NDL H133 NDL:3H13 NDL H191 NDL:1H19 NDL H192 NDL:2H19 NDL H201 NDL:1H20 NDL H202 NDL:2H20 NDL H211 NDL:1H21 NDL H212 NDL:2H21 NDL H221 NDL:1H22 NDL H222 NDL:2H22 NDL H231 NDL:1H23 NDL H232 NDL:2H23 NDL H281 NDL:1H28 NDL H282 NDL:2H28 NDL H291 NDL:1H29 NDL H292 NDL:2H29 NDL H301 NDL:1H30 NDL H302 NDL:2H30 NDL H331 NDL:1H33 NDL H332 NDL:2H33 NDL H391 NDL:1H39 NDL H392 NDL:2H39 NDL H401 NDL:1H40 NDL H402 NDL:2H40 NDL H411 NDL:1H41 NDL H412 NDL:2H41 NDL H451 NDL:1H45 NDL H452 NDL:2H45 NDL HN91 NDM:1HN9 NDM HN92 NDM:2HN9 NDM HN93 NDM:3HN9 NDM H22 NDM:2H2 NDM HN21 NDM:1HN2 NDM HN22 NDM:2HN2 NDM HN11 NDM:1HN1 NDM H66 NDM:6H6 NDM HN71 NDM:1HN7 NDM HN72 NDM:2HN7 NDM HN73 NDM:3HN7 NDM HC81 NDM:1HC8 NDM HOA2 NDO:2HOA NDO H51A NDO:AH51 NDO H52A NDO:AH52 NDO H4B NDO:AH4* NDO H3B NDO:AH3* NDO HO3A NDO:AHO3 NDO H2B NDO:AH2* NDO H1B NDO:AH1* NDO H8A NDO: AH8 NDO HO6A NDO:AHO6 NDO H2A NDO: AH2 NDO H51N NDO:NH51 NDO H52N NDO:NH52 NDO H4D NDO:NH4* NDO H3D NDO:NH3* NDO HO3N NDO:NHO3 NDO H2D NDO:NH2* NDO HO2N NDO:NHO2 NDO H1D NDO:NH1* NDO H2N NDO: NH2 NDO H71N NDO:NH71 NDO H72N NDO:NH72 NDO H4N NDO: NH4 NDO H5N NDO: NH5 NDO H6N NDO: NH6 NDO HOP2 NDO:2HOP NDO HOP3 NDO:3HOP NDO HOA2 NDP:2HOA NDP H51A NDP:AH51 NDP H52A NDP:AH52 NDP H4B NDP:AH4* NDP H3B NDP:AH3* NDP HO3A NDP:AHO3 NDP H2B NDP:AH2* NDP H1B NDP:AH1* NDP H8A NDP: AH8 NDP H61A NDP:AH61 NDP H62A NDP:AH62 NDP H2A NDP: AH2 NDP H21N NDP:NH21 NDP H51N NDP:NH51 NDP H52N NDP:NH52 NDP H4D NDP:NH4* NDP H3D NDP:NH3* NDP HO3N NDP:NHO3 NDP H2D NDP:NH2* NDP HO2N NDP:NHO2 NDP H1D NDP:NH1* NDP H2N NDP: NH2 NDP H71N NDP:NH71 NDP H72N NDP:NH72 NDP H41N NDP:NH41 NDP H42N NDP:NH42 NDP H5N NDP: NH5 NDP H6N NDP: NH6 NDP HOP2 NDP:2HOP NDP HOP3 NDP:3HOP NDP H201 NDR:1H20 NDR H202 NDR:2H20 NDR H151 NDR:1H15 NDR H152 NDR:2H15 NDR H181 NDR:1H18 NDR H182 NDR:2H18 NDR H91 NDR:1H9 NDR H92 NDR:2H9 NDR H131 NDR:1H13 NDR H132 NDR:2H13 NDR H61 NDR:1H6 NDR H62 NDR:2H6 NDR H71 NDR:1H7 NDR H72 NDR:2H7 NDR H73 NDR:3H7 NDR H101 NDR:1H10 NDR H102 NDR:2H10 NDR H41 NDR:1H4 NDR H42 NDR:2H4 NDR H41 NDS:1H4 NDS H42 NDS:2H4 NDS H31 NDS:1H3 NDS H32 NDS:2H3 NDS H21 NDS:1H2 NDS H22 NDS:2H2 NDS H11 NDS:1H1 NDS H12 NDS:2H1 NDS H13 NDS:3H1 NDS H71 NDS:1H7 NDS H72 NDS:2H7 NDS H73 NDS:3H7 NDS H51 NDS:1H5 NDS H52 NDS:2H5 NDS H61 NDS:1H6 NDS H62 NDS:2H6 NDS H63 NDS:3H6 NDS H211 NDT:1H21 NDT H212 NDT:2H21 NDT H213 NDT:3H21 NDT H151 NE8:1H15 NE8 H152 NE8:2H15 NE8 H141 NE8:1H14 NE8 H142 NE8:2H14 NE8 H231 NE8:1H23 NE8 H232 NE8:2H23 NE8 HN1 NEA:1HN NEA HN2 NEA:2HN NEA HB1 NEA:1HB NEA HB2 NEA:2HB NEA HG1 NEA:1HG NEA HG2 NEA:2HG NEA H5'1 NEA:1H5* NEA H5'2 NEA:2H5* NEA H4' NEA: H4* NEA H3' NEA: H3* NEA H2' NEA: H2* NEA HO'2 NEA:2HO* NEA H1' NEA: H1* NEA H61 NEA:1H6 NEA H62 NEA:2H6 NEA H11 NEB:1H1 NEB H12 NEB:2H1 NEB H13 NEB:3H1 NEB H21 NEB:1H2 NEB H22 NEB:2H2 NEB H31 NEB:1H3 NEB H32 NEB:2H3 NEB H511 NEC:1H51 NEC H512 NEC:2H51 NEC H521 NEC:1H52 NEC H522 NEC:2H52 NEC H523 NEC:3H52 NEC H4' NEC: H4* NEC H3' NEC: H3* NEC HO3' NEC:*HO3 NEC H2' NEC: H2* NEC HO2' NEC:*HO2 NEC H1' NEC: H1* NEC HN61 NEC:1HN6 NEC HN62 NEC:2HN6 NEC H21 NED:1H2 NED H22 NED:2H2 NED H23 NED:3H2 NED H61 NED:1H6 NED H62 NED:2H6 NED HN61 NED:1HN6 NED HN62 NED:2HN6 NED H63 NED:3H6 NED H71 NEG:1H7 NEG H72 NEG:2H7 NEG H91 NEG:1H9 NEG H92 NEG:2H9 NEG H93 NEG:3H9 NEG H51 NEG:1H5 NEG H52 NEG:2H5 NEG HN41 NEG:1HN4 NEG HN42 NEG:2HN4 NEG H31 NEG:1H3 NEG H32 NEG:2H3 NEG H11 NEG:1H1 NEG H12 NEG:2H1 NEG HN11 NEG:1HN1 NEG HN12 NEG:2HN1 NEG HA2 NEH:2HA NEH HA3 NEH:3HA NEH HB1 NEH:1HB NEH HB2 NEH:2HB NEH HB3 NEH:3HB NEH H521 NEI:1H52 NEI H522 NEI:2H52 NEI H523 NEI:3H52 NEI H511 NEI:1H51 NEI H512 NEI:2H51 NEI HN5' NEI:HN5* NEI H4' NEI: H4* NEI H3' NEI: H3* NEI HO3' NEI:HO3* NEI H2' NEI: H2* NEI HO2' NEI:HO2* NEI H1' NEI: H1* NEI HN61 NEI:1HN6 NEI HN62 NEI:2HN6 NEI HB1 NEM:1HB NEM HB2 NEM:2HB NEM HM1 NEM:1HM NEM HM2 NEM:2HM NEM HM3 NEM:3HM NEM H11 NEN:1H1 NEN H12 NEN:2H1 NEN H41 NEN:1H4 NEN H42 NEN:2H4 NEN H51 NEN:1H5 NEN H52 NEN:2H5 NEN H61 NEN:1H6 NEN H62 NEN:2H6 NEN H63 NEN:3H6 NEN H131 NEO:1H13 NEO H132 NEO:2H13 NEO H281 NEO:1H28 NEO H282 NEO:2H28 NEO H2 NEP: HN2 NEP HB2 NEP:1HB NEP HB3 NEP:2HB NEP HOP1 NEP:1HOP NEP HOP2 NEP:2HOP NEP H21 NEQ:1H2 NEQ H31 NEQ:1H3 NEQ H51 NEQ:1H5 NEQ H52 NEQ:2H5 NEQ H61 NEQ:1H6 NEQ H62 NEQ:2H6 NEQ H63 NEQ:3H6 NEQ H21 NER:1H2 NER H22 NER:2H2 NER H31 NER:1H3 NER H32 NER:2H3 NER H41 NER:1H4 NER H42 NER:2H4 NER H51 NER:1H5 NER H52 NER:2H5 NER H61 NER:1H6 NER H62 NER:2H6 NER H71 NER:1H7 NER H72 NER:2H7 NER H81 NER:1H8 NER H82 NER:2H8 NER H91 NER:1H9 NER H92 NER:2H9 NER H101 NER:1H10 NER H102 NER:2H10 NER H111 NER:1H11 NER H112 NER:2H11 NER H121 NER:1H12 NER H122 NER:2H12 NER H131 NER:1H13 NER H132 NER:2H13 NER H141 NER:1H14 NER H142 NER:2H14 NER H171 NER:1H17 NER H172 NER:2H17 NER H181 NER:1H18 NER H182 NER:2H18 NER H191 NER:1H19 NER H192 NER:2H19 NER H201 NER:1H20 NER H202 NER:2H20 NER H211 NER:1H21 NER H212 NER:2H21 NER H221 NER:1H22 NER H222 NER:2H22 NER H231 NER:1H23 NER H232 NER:2H23 NER H241 NER:1H24 NER H242 NER:2H24 NER H243 NER:3H24 NER HC71 NES:1HC7 NES HC72 NES:2HC7 NES HC81 NES:1HC8 NES HC82 NES:2HC8 NES HC21 NES:1HC2 NES HC22 NES:2HC2 NES HC41 NES:1HC4 NES HC42 NES:2HC4 NES HC61 NES:1HC6 NES HC62 NES:2HC6 NES H11 NET:1H1 NET H12 NET:2H1 NET H21 NET:1H2 NET H22 NET:2H2 NET H23 NET:3H2 NET H31 NET:1H3 NET H32 NET:2H3 NET H41 NET:1H4 NET H42 NET:2H4 NET H43 NET:3H4 NET H51 NET:1H5 NET H52 NET:2H5 NET H61 NET:1H6 NET H62 NET:2H6 NET H63 NET:3H6 NET H71 NET:1H7 NET H72 NET:2H7 NET H81 NET:1H8 NET H82 NET:2H8 NET H83 NET:3H8 NET H131 NEU:1H13 NEU H132 NEU:2H13 NEU H281 NEU:1H28 NEU H282 NEU:2H28 NEU H121 NEV:1H12 NEV H122 NEV:2H12 NEV H123 NEV:3H12 NEV H151 NEV:1H15 NEV H152 NEV:2H15 NEV H161 NEV:1H16 NEV H162 NEV:2H16 NEV H21 NEX:1H2 NEX H22 NEX:2H2 NEX H41 NEX:1H4 NEX H42 NEX:2H4 NEX H161 NEX:1H16 NEX H162 NEX:2H16 NEX H163 NEX:3H16 NEX H171 NEX:1H17 NEX H172 NEX:2H17 NEX H173 NEX:3H17 NEX H181 NEX:1H18 NEX H182 NEX:2H18 NEX H183 NEX:3H18 NEX H191 NEX:1H19 NEX H192 NEX:2H19 NEX H193 NEX:3H19 NEX H201 NEX:1H20 NEX H202 NEX:2H20 NEX H203 NEX:3H20 NEX H221 NEX:1H22 NEX H222 NEX:2H22 NEX H241 NEX:1H24 NEX H242 NEX:2H24 NEX H361 NEX:1H36 NEX H362 NEX:2H36 NEX H363 NEX:3H36 NEX H371 NEX:1H37 NEX H372 NEX:2H37 NEX H373 NEX:3H37 NEX H381 NEX:1H38 NEX H382 NEX:2H38 NEX H383 NEX:3H38 NEX H391 NEX:1H39 NEX H392 NEX:2H39 NEX H393 NEX:3H39 NEX H401 NEX:1H40 NEX H402 NEX:2H40 NEX H403 NEX:3H40 NEX H141 NEZ:1H14 NEZ H142 NEZ:2H14 NEZ H231 NEZ:1H23 NEZ H232 NEZ:2H23 NEZ H151 NEZ:1H15 NEZ H152 NEZ:2H15 NEZ H241 NEZ:1H24 NEZ H242 NEZ:2H24 NEZ H243 NEZ:3H24 NEZ H112 NF:2H11 NF H122 NF:2H12 NF H91 NF:1H9 NF H81 NF:1H8 NF H71 NF:1H7 NF H61 NF:1H6 NF H51 NF:1H5 NF H41 NF:1H4 NF H212 NF:2H21 NF H222 NF:2H22 NF H312 NF:2H31 NF H322 NF:2H32 NF H412 NF:2H41 NF H422 NF:2H42 NF H512 NF:2H51 NF H522 NF:2H52 NF H612 NF:2H61 NF H622 NF:2H62 NF H712 NF:2H71 NF H722 NF:2H72 NF H812 NF:2H81 NF H822 NF:2H82 NF H912 NF:2H91 NF H922 NF:2H92 NF H93 NF:3H9 NF H83 NF:3H8 NF H73 NF:3H7 NF H63 NF:3H6 NF H53 NF:3H5 NF H43 NF:3H4 NF HM1 NF2:1HM NF2 HM2 NF2:2HM NF2 HM3 NF2:3HM NF2 H1' NF2: H1* NF2 H2' NF2: H2* NF2 HO2' NF2:2HO* NF2 H3' NF2: H3* NF2 HO3' NF2:H3T NF2 H4' NF2: H4* NF2 H5' NF2:1H5* NF2 H5'' NF2:2H5* NF2 HOP2 NF2:2HOP NF2 HOP3 NF2:3HOP NF2 H2 NFA: HN2 NFA HB2 NFA:1HB NFA HB3 NFA:2HB NFA HXT1 NFA:1HXT NFA HXT2 NFA:2HXT NFA H3O1 NFG:1H3O NFG H4O1 NFG:1H4O NFG H62 NFG:2H6 NFG H61 NFG:1H6 NFG H191 NFN:1H19 NFN H192 NFN:2H19 NFN H193 NFN:3H19 NFN H201 NFN:1H20 NFN H202 NFN:2H20 NFN H203 NFN:3H20 NFN H171 NFN:1H17 NFN H172 NFN:2H17 NFN H181 NFN:1H18 NFN H182 NFN:2H18 NFN H183 NFN:3H18 NFN H11 NFP:1H1 NFP H12 NFP:2H1 NFP H13 NFP:3H1 NFP H21 NFP:1H2 NFP H22 NFP:2H2 NFP HN1 NFP:1HN NFP HN2 NFP:2HN NFP H41 NFP:1H4 NFP H42 NFP:2H4 NFP H51 NFP:1H5 NFP H52 NFP:2H5 NFP H411 NFT:1H41 NFT H412 NFT:2H41 NFT H181 NFT:1H18 NFT H182 NFT:2H18 NFT H201 NFT:1H20 NFT H202 NFT:2H20 NFT H203 NFT:3H20 NFT H211 NFT:1H21 NFT H212 NFT:2H21 NFT H213 NFT:3H21 NFT H631 NFT:1H63 NFT H632 NFT:2H63 NFT H441 NFT:1H44 NFT H442 NFT:2H44 NFT H451 NFT:1H45 NFT H452 NFT:2H45 NFT HN41 NFZ:1HN4 NFZ HN42 NFZ:2HN4 NFZ H61 NG1:1H6 NG1 H62 NG1:2H6 NG1 H81 NG1:1H8 NG1 H82 NG1:2H8 NG1 H83 NG1:3H8 NG1 H61 NG6:1H6 NG6 H62 NG6:2H6 NG6 H81 NG6:1H8 NG6 H82 NG6:2H8 NG6 H83 NG6:3H8 NG6 HOS3 NG6:3HOS NG6 H61 NGA:1H6 NGA H62 NGA:2H6 NGA H81 NGA:1H8 NGA H82 NGA:2H8 NGA H83 NGA:3H8 NGA H2A1 NGD:1H2A NGD H2A2 NGD:2H2A NGD H1' NGD: H1* NGD H2' NGD: H2* NGD H3' NGD: H3* NGD H4' NGD: H4* NGD H51 NGD:1H5 NGD H52 NGD:2H5 NGD H5'1 NGD:1H5* NGD H5'2 NGD:2H5* NGD HC4' NGD:HC4* NGD HC3' NGD:HC3* NGD HO3' NGD:HO3* NGD HC2' NGD:HC2* NGD HO2' NGD:HO2* NGD HC1' NGD:HC1* NGD HN71 NGD:1HN7 NGD HN72 NGD:2HN7 NGD H71 NGH:1H7 NGH H72 NGH:2H7 NGH H73 NGH:3H7 NGH H91 NGH:1H9 NGH H92 NGH:2H9 NGH H101 NGH:1H10 NGH H102 NGH:2H10 NGH H131 NGH:1H13 NGH H132 NGH:2H13 NGH H133 NGH:3H13 NGH H141 NGH:1H14 NGH H142 NGH:2H14 NGH H143 NGH:3H14 NGH H6C1 NGK:1H6C NGK H6C2 NGK:2H6C NGK H8C1 NGK:1H8C NGK H8C2 NGK:2H8C NGK H8C3 NGK:3H8C NGK H61 NGL:1H6 NGL H62 NGL:2H6 NGL H81 NGL:1H8 NGL H82 NGL:2H8 NGL H83 NGL:3H8 NGL HOS3 NGL:3HOS NGL H81 NGM:1H8 NGM H82 NGM:2H8 NGM H131 NGM:1H13 NGM H132 NGM:2H13 NGM H133 NGM:3H13 NGM H151 NGM:1H15 NGM H152 NGM:2H15 NGM H153 NGM:3H15 NGM H221 NGM:1H22 NGM H222 NGM:2H22 NGM H223 NGM:3H22 NGM H231 NGM:1H23 NGM H232 NGM:2H23 NGM H233 NGM:3H23 NGM H241 NGM:1H24 NGM H242 NGM:2H24 NGM H243 NGM:3H24 NGM H251 NGM:1H25 NGM H252 NGM:2H25 NGM H253 NGM:3H25 NGM H261 NGM:1H26 NGM H262 NGM:2H26 NGM H263 NGM:3H26 NGM H271 NGM:1H27 NGM H272 NGM:2H27 NGM H273 NGM:3H27 NGM H281 NGM:1H28 NGM H282 NGM:2H28 NGM H283 NGM:3H28 NGM H291 NGM:1H29 NGM H292 NGM:2H29 NGM H293 NGM:3H29 NGM H1' NGM: H1* NGM H2' NGM: H2* NGM H4' NGM: H4* NGM H5' NGM: H5* NGM HC61 NGO:1HC6 NGO HC62 NGO:2HC6 NGO HC81 NGO:1HC8 NGO HC82 NGO:2HC8 NGO HC83 NGO:3HC8 NGO H81 NGP:1H8 NGP H82 NGP:2H8 NGP H131 NGP:1H13 NGP H132 NGP:2H13 NGP H133 NGP:3H13 NGP H151 NGP:1H15 NGP H152 NGP:2H15 NGP H153 NGP:3H15 NGP H119 NGP:19H1 NGP H221 NGP:21H2 NGP H22A NGP:1H22 NGP H222 NGP:2H22 NGP H223 NGP:3H22 NGP H231 NGP:1H23 NGP H232 NGP:2H23 NGP H233 NGP:3H23 NGP H241 NGP:1H24 NGP H242 NGP:2H24 NGP H243 NGP:3H24 NGP H251 NGP:1H25 NGP H252 NGP:2H25 NGP H253 NGP:3H25 NGP H261 NGP:1H26 NGP H262 NGP:2H26 NGP H263 NGP:3H26 NGP H271 NGP:1H27 NGP H272 NGP:2H27 NGP H273 NGP:3H27 NGP H281 NGP:1H28 NGP H282 NGP:2H28 NGP H283 NGP:3H28 NGP H291 NGP:1H29 NGP H292 NGP:2H29 NGP H293 NGP:3H29 NGP H1' NGP: H1* NGP H2' NGP: H2* NGP H4' NGP: H4* NGP H5' NGP: H5* NGP H61 NGS:1H6 NGS H62 NGS:2H6 NGS HH31 NGS:1HH3 NGS HH32 NGS:2HH3 NGS HH33 NGS:3HH3 NGS HC61 NGT:1HC6 NGT HC62 NGT:2HC6 NGT HC81 NGT:1HC8 NGT HC82 NGT:2HC8 NGT HC83 NGT:3HC8 NGT H81 NGU:1H8 NGU H82 NGU:2H8 NGU H131 NGU:1H13 NGU H132 NGU:2H13 NGU H133 NGU:3H13 NGU H151 NGU:1H15 NGU H152 NGU:2H15 NGU H153 NGU:3H15 NGU H1' NGU: H1* NGU H2' NGU: H2* NGU H4' NGU: H4* NGU H5' NGU: H5* NGU H251 NGU:1H25 NGU H252 NGU:2H25 NGU H253 NGU:3H25 NGU H261 NGU:1H26 NGU H262 NGU:2H26 NGU H263 NGU:3H26 NGU H271 NGU:1H27 NGU H272 NGU:2H27 NGU H273 NGU:3H27 NGU H281 NGU:1H28 NGU H282 NGU:2H28 NGU H283 NGU:3H28 NGU H291 NGU:1H29 NGU H292 NGU:2H29 NGU H293 NGU:3H29 NGU H221 NGU:1H22 NGU H222 NGU:2H22 NGU H223 NGU:3H22 NGU H231 NGU:1H23 NGU H232 NGU:2H23 NGU H241 NGU:1H24 NGU H242 NGU:2H24 NGU H243 NGU:3H24 NGU H151 NGV:1H15 NGV H152 NGV:2H15 NGV H153 NGV:3H15 NGV H131 NGV:1H13 NGV H132 NGV:2H13 NGV H133 NGV:3H13 NGV H81 NGV:1H8 NGV H82 NGV:2H8 NGV H61 NGZ:1H6 NGZ H62 NGZ:2H6 NGZ H81 NGZ:1H8 NGZ H82 NGZ:2H8 NGZ H83 NGZ:3H8 NGZ HN1 NH2:1HN NH2 HN2 NH2:2HN NH2 HN1 NH3:1HN NH3 HN2 NH3:2HN NH3 HN3 NH3:3HN NH3 HN1 NH4:1HN NH4 HN2 NH4:2HN NH4 HN3 NH4:3HN NH4 HN4 NH4:4HN NH4 HN1 NHA:1HN NHA HN2 NHA:2HN NHA HB1 NHA:1HB NHA HB2 NHA:2HB NHA HD21 NHA:1HD2 NHA HD22 NHA:2HD2 NHA HNT1 NHA:1HNT NHA HNT2 NHA:2HNT NHA H161 NHB:1H16 NHB H162 NHB:2H16 NHB H163 NHB:3H16 NHB HOA2 NHD:2HOA NHD H51A NHD:AH51 NHD H52A NHD:AH52 NHD H4B NHD:AH4* NHD H3B NHD:AH3* NHD HO3A NHD:AHO3 NHD H2B NHD:AH2* NHD HO2A NHD:AHO2 NHD H1B NHD:AH1* NHD H8A NHD: AH8 NHD H6A NHD: AH6 NHD H2A NHD: AH2 NHD H51N NHD:NH51 NHD H52N NHD:NH52 NHD H4D NHD:NH4* NHD H3D NHD:NH3* NHD HO3N NHD:NHO3 NHD H2D NHD:NH2* NHD HO2N NHD:NHO2 NHD H1D NHD:NH1* NHD H2N NHD: NH2 NHD H71N NHD:NH71 NHD H72N NHD:NH72 NHD H4N NHD: NH4 NHD H5N NHD: NH5 NHD H6N NHD: NH6 NHD H3'1 NHE:1H3' NHE H3'2 NHE:2H3' NHE H2'1 NHE:1H2' NHE H2'2 NHE:2H2' NHE HC'1 NHE:1HC' NHE H6'1 NHE:1H6' NHE H6'2 NHE:2H6' NHE HC11 NHE:1HC1 NHE HC12 NHE:2HC1 NHE HC21 NHE:1HC2 NHE HC22 NHE:2HC2 NHE HO3 NHE:3HO NHE H5'1 NHE:1H5' NHE H5'2 NHE:2H5' NHE H4'1 NHE:1H4' NHE H4'2 NHE:2H4' NHE HN71 NHH:1HN7 NHH HN72 NHH:2HN7 NHH HN81 NHH:1HN8 NHH HN82 NHH:2HN8 NHH H51 NHH:1H5 NHH H52 NHH:2H5 NHH H61 NHH:1H6 NHH H62 NHH:2H6 NHH H31 NHH:1H3 NHH H32 NHH:2H3 NHH H21 NHH:1H2 NHH H22 NHH:2H2 NHH HN31 NHH:1HN3 NHH HN32 NHH:2HN3 NHH HN41 NHH:1HN4 NHH HN42 NHH:2HN4 NHH HC2 NHL: H2 NHL H111 NHL:1H11 NHL H112 NHL:2H11 NHL HG NHL:1HG NHL HB3 NHL:1HB NHL HB2 NHL:2HB NHL H2 NHL: NH2 NHL HN61 NHM:1HN6 NHM HN62 NHM:2HN6 NHM HEM1 NHM:1HEM NHM HEM2 NHM:2HEM NHM HEM3 NHM:3HEM NHM HAM1 NHM:1HAM NHM HAM2 NHM:2HAM NHM HBM1 NHM:1HBM NHM HBM2 NHM:2HBM NHM HCM1 NHM:1HCM NHM HCM2 NHM:2HCM NHM HDM1 NHM:1HDM NHM HDM2 NHM:2HDM NHM H9M1 NHM:1H9M NHM H9M2 NHM:2H9M NHM H8M1 NHM:1H8M NHM H8M2 NHM:2H8M NHM H7M1 NHM:1H7M NHM H7M2 NHM:2H7M NHM H6M1 NHM:1H6M NHM H6M2 NHM:2H6M NHM H2M1 NHM:1H2M NHM H2M2 NHM:2H2M NHM H3M1 NHM:1H3M NHM H3M2 NHM:2H3M NHM H4M1 NHM:1H4M NHM H4M2 NHM:2H4M NHM H5M1 NHM:1H5M NHM H5M2 NHM:2H5M NHM HP1 NHM:1HP NHM HP2 NHM:2HP NHM HO7A NHM:AHO7 NHM HO8A NHM:AHO8 NHM H61 NHM:1H6 NHM H62 NHM:2H6 NHM H71 NHM:1H7 NHM H72 NHM:2H7 NHM H131 NHM:1H13 NHM H132 NHM:2H13 NHM H133 NHM:3H13 NHM H141 NHM:1H14 NHM H142 NHM:2H14 NHM H143 NHM:3H14 NHM H121 NHM:1H12 NHM H122 NHM:2H12 NHM HO1A NHM:AHO1 NHM HO2X NHM:XHO2 NHM H5X1 NHM:1H5X NHM H5X2 NHM:2H5X NHM HO5A NHM:AHO5 NHM H31 NHM:1H3 NHM H32 NHM:2H3 NHM H21 NHM:1H2 NHM H22 NHM:2H2 NHM H11 NHN:1H1 NHN H12 NHN:2H1 NHN H21 NHN:1H2 NHN H22 NHN:2H2 NHN H121 NHN:1H12 NHN H122 NHN:2H12 NHN H131 NHN:1H13 NHN H132 NHN:2H13 NHN H181 NHN:1H18 NHN H182 NHN:2H18 NHN H191 NHN:1H19 NHN H192 NHN:2H19 NHN H201 NHN:1H20 NHN H202 NHN:2H20 NHN H211 NHN:1H21 NHN H212 NHN:2H21 NHN H221 NHN:1H22 NHN H222 NHN:2H22 NHN H261 NHN:1H26 NHN H262 NHN:2H26 NHN H281 NHN:1H28 NHN H282 NHN:2H28 NHN H341 NHN:1H34 NHN H342 NHN:2H34 NHN H351 NHN:1H35 NHN H352 NHN:2H35 NHN H361 NHN:1H36 NHN H362 NHN:2H36 NHN H363 NHN:3H36 NHN H411 NHN:1H41 NHN H412 NHN:2H41 NHN H561 NHN:1H56 NHN H562 NHN:2H56 NHN H563 NHN:3H56 NHN H571 NHN:1H57 NHN H572 NHN:2H57 NHN H573 NHN:3H57 NHN H5'1 NHO:1H5' NHO H5'2 NHO:2H5' NHO H6A1 NHO:1H6A NHO H6A2 NHO:2H6A NHO H5A1 NHO:1H5* NHO H5A2 NHO:2H5* NHO H4B NHO: H4* NHO H3B NHO: H3* NHO H2B NHO: H2* NHO H1B NHO: H1* NHO H7N1 NHO:1H7N NHO H7N2 NHO:2H7N NHO H3R1 NHO:1H3R NHO H3R2 NHO:2H3R NHO H1R1 NHO:1H1R NHO H1R2 NHO:2H1R NHO HN11 NHP:1HN1 NHP HN12 NHP:2HN1 NHP H71 NHP:1H7 NHP H72 NHP:2H7 NHP H81 NHP:1H8 NHP H82 NHP:2H8 NHP H91 NHP:1H9 NHP H92 NHP:2H9 NHP H101 NHP:1H10 NHP H102 NHP:2H10 NHP H6A1 NHQ:1H6A NHQ H6A2 NHQ:2H6A NHQ HEM1 NHQ:1HEM NHQ HEM2 NHQ:2HEM NHQ HDM1 NHQ:1HDM NHQ HDM2 NHQ:2HDM NHQ HBM1 NHQ:1HBM NHQ HBM2 NHQ:2HBM NHQ HCM1 NHQ:1HCM NHQ HCM2 NHQ:2HCM NHQ H9M1 NHQ:1H9M NHQ H9M2 NHQ:2H9M NHQ H8M1 NHQ:1H8M NHQ H8M2 NHQ:2H8M NHQ H7M1 NHQ:1H7M NHQ H7M2 NHQ:2H7M NHQ H531 NHQ:1H53 NHQ H532 NHQ:2H53 NHQ H3M1 NHQ:1H3M NHQ H3M2 NHQ:2H3M NHQ H4M1 NHQ:1H4M NHQ H4M2 NHQ:2H4M NHQ H5M1 NHQ:1H5M NHQ H5M2 NHQ:2H5M NHQ HPC1 NHQ:1HPC NHQ HPC2 NHQ:2HPC NHQ H2C1 NHQ:1H2C NHQ H2C2 NHQ:2H2C NHQ H3C1 NHQ:1H3C NHQ H3C2 NHQ:2H3C NHQ H6C1 NHQ:1H6C NHQ H6C2 NHQ:2H6C NHQ H7C1 NHQ:1H7C NHQ H7C2 NHQ:2H7C NHQ H131 NHQ:1H13 NHQ H132 NHQ:2H13 NHQ H133 NHQ:3H13 NHQ H141 NHQ:1H14 NHQ H142 NHQ:2H14 NHQ H143 NHQ:3H14 NHQ H121 NHQ:1H12 NHQ H122 NHQ:2H12 NHQ H5X1 NHQ:1H5X NHQ H5X2 NHQ:2H5X NHQ HNA1 NHR:1HNA NHR HNA2 NHR:2HNA NHR H4O NHR: OH4 NHR H91 NHR:1H9 NHR H92 NHR:2H9 NHR H101 NHR:1H10 NHR H161 NHR:1H16 NHR H121 NHR:1H12 NHR H131 NHR:1H13 NHR H151 NHR:1H15 NHR HB1 NHR:1HB NHR HB2 NHR:2HB NHR HG1 NHR:1HG NHR HG2 NHR:2HG NHR HOE1 NHR:1HOE NHR HOA1 NHR:1HOA NHR HN21 NHS:1HN2 NHS HN22 NHS:2HN2 NHS H91 NHS:1H9 NHS H92 NHS:2H9 NHS HB1 NHS:1HB NHS HB2 NHS:2HB NHS HG1 NHS:1HG NHS HG2 NHS:2HG NHS HOE2 NHS:2HOE NHS HN21 NHY:1HN2 NHY HN22 NHY:2HN2 NHY HO11 NI1:1HO1 NI1 HO12 NI1:2HO1 NI1 HO11 NI2:1HO1 NI2 HO12 NI2:2HO1 NI2 HO13 NI2:3HO1 NI2 HO14 NI2:4HO1 NI2 HO11 NI3:1HO1 NI3 HO12 NI3:2HO1 NI3 HO21 NI3:1HO2 NI3 HO22 NI3:2HO2 NI3 HO31 NI3:1HO3 NI3 HO32 NI3:2HO3 NI3 H21 NI9:1H2 NI9 H22 NI9:2H2 NI9 H5'1 NIA:1H5' NIA H5'2 NIA:2H5' NIA HN61 NIA:1HN6 NIA HN62 NIA:2HN6 NIA H41 NIC:1H4 NIC H42 NIC:2H4 NIC HB1 NIG:1HB NIG HB2 NIG:2HB NIG HG1 NIG:1HG NIG HG2 NIG:2HG NIG H131 NIH:1H13 NIH H132 NIH:2H13 NIH H11 NIK:1H1 NIK H12 NIK:2H1 NIK H21 NIK:1H2 NIK H22 NIK:2H2 NIK H31 NIK:1H3 NIK H32 NIK:2H3 NIK H41 NIK:1H4 NIK H42 NIK:2H4 NIK H51 NIK:1H5 NIK H52 NIK:2H5 NIK H11A NIM:1H1 NIM H12A NIM:2H1 NIM H13A NIM:3H1 NIM H71 NIP:1H7 NIP H72 NIP:2H7 NIP H101 NIP:1H10 NIP H102 NIP:2H10 NIP H111 NIP:1H11 NIP H112 NIP:2H11 NIP H121 NIP:1H12 NIP H122 NIP:2H12 NIP H131 NIP:1H13 NIP H132 NIP:2H13 NIP H141 NIP:1H14 NIP H142 NIP:2H14 NIP H1N1 NIR:1H1N NIR H1N2 NIR:2H1N NIR H41 NIR:1H4 NIR H55 NIR:5H5 NIR H81 NIR:1H8 NIR H1' NIR: H1* NIR H2' NIR: H2* NIR H3' NIR: H3* NIR H4' NIR: H4* NIR H5'1 NIR:1H5* NIR H5'2 NIR:2H5* NIR H5'3 NIR:3H5* NIR H11 NIS:1H1 NIS H12 NIS:2H1 NIS H13 NIS:3H1 NIS H41 NIS:1H4 NIS H42 NIS:2H4 NIS H43 NIS:3H4 NIS HN11 NIT:1HN1 NIT HN12 NIT:2HN1 NIT HG21 NIU:1HG2 NIU HG22 NIU:2HG2 NIU HG31 NIU:1HG3 NIU HG32 NIU:2HG3 NIU HG33 NIU:3HG3 NIU HD11 NIU:1HD1 NIU HD12 NIU:2HD1 NIU HD21 NIU:1HD2 NIU HD22 NIU:2HD2 NIU HD31 NIU:1HD3 NIU HD32 NIU:2HD3 NIU HD41 NIU:1HD4 NIU HD42 NIU:2HD4 NIU HD51 NIU:1HD5 NIU HD52 NIU:2HD5 NIU H121 NIV:1H12 NIV H122 NIV:2H12 NIV H123 NIV:3H12 NIV H141 NIV:1H14 NIV H142 NIV:2H14 NIV H151 NIV:1H15 NIV H152 NIV:2H15 NIV HE11 NIX:1HE1 NIX HE21 NIX:1HE2 NIX HE12 NIX:2HE1 NIX HE22 NIX:2HE2 NIX HE32 NIX:2HE3 NIX H2L1 NIX:1H2L NIX H2 NIY: HN2 NIY HB2 NIY:1HB NIY HB3 NIY:2HB NIY H41 NK1:1H4 NK1 H42 NK1:2H4 NK1 H31 NK1:1H3 NK1 H32 NK1:2H3 NK1 H21 NK1:1H2 NK1 H22 NK1:2H2 NK1 H91 NK1:1H9 NK1 H92 NK1:2H9 NK1 H51 NK2:1H5 NK2 H52 NK2:2H5 NK2 H41 NK2:1H4 NK2 H42 NK2:2H4 NK2 H31 NK2:1H3 NK2 H32 NK2:2H3 NK2 H21 NK2:1H2 NK2 H22 NK2:2H2 NK2 H91 NK2:1H9 NK2 H92 NK2:2H9 NK2 H31 NLA:1H3 NLA H41 NLA:1H4 NLA H51 NLA:1H5 NLA H71 NLA:1H7 NLA H81 NLA:1H8 NLA H91 NLA:1H9 NLA H101 NLA:1H10 NLA H111 NLA:1H11 NLA H112 NLA:2H11 NLA H8C1 NLC:1H8C NLC H8C2 NLC:2H8C NLC H8C3 NLC:3H8C NLC H6C1 NLC:1H6C NLC H6C2 NLC:2H6C NLC H161 NLC:1H16 NLC H162 NLC:2H16 NLC H NLE:1HN NLE HN2 NLE:2HN NLE HB2 NLE:1HB NLE HB3 NLE:2HB NLE HG2 NLE:1HG NLE HG3 NLE:2HG NLE HD2 NLE:1HD NLE HD3 NLE:2HD NLE HE1 NLE:1HE NLE HE2 NLE:2HE NLE HE3 NLE:3HE NLE HBC1 NLG:1HBC NLG HBC2 NLG:2HBC NLG HGC1 NLG:1HGC NLG HGC2 NLG:2HGC NLG H8C1 NLG:1H8C NLG H8C2 NLG:2H8C NLG H8C3 NLG:3H8C NLG H NLN:1HN NLN H2 NLN:2HN NLN HB2 NLN:1HB NLN HB3 NLN:2HB NLN HG2 NLN:1HG NLN HG3 NLN:2HG NLN HD2 NLN:1HD NLN HD3 NLN:2HD NLN HE1 NLN:1HE NLN HE2 NLN:2HE NLN HE3 NLN:3HE NLN HH21 NLN:1HH2 NLN HH22 NLN:2HH2 NLN H NLO:1HN NLO H2 NLO:2HN NLO HB2 NLO:1HB NLO HB3 NLO:2HB NLO HG2 NLO:1HG NLO HG3 NLO:2HG NLO HD2 NLO:1HD NLO HD3 NLO:2HD NLO HE1 NLO:1HE NLO HE2 NLO:2HE NLO HE3 NLO:3HE NLO HN1 NLP:1HN NLP HN2 NLP:2HN NLP HB1 NLP:1HB NLP HB2 NLP:2HB NLP HG1 NLP:1HG NLP HG2 NLP:2HG NLP HD1 NLP:1HD NLP HD2 NLP:2HD NLP HE1 NLP:1HE NLP HE2 NLP:2HE NLP HE3 NLP:3HE NLP H NLQ: HN NLQ H71 NLQ:1H7 NLQ H72 NLQ:2H7 NLQ H73 NLQ:3H7 NLQ HB2 NLQ:1HB NLQ HB3 NLQ:2HB NLQ HG2 NLQ:1HG NLQ HG3 NLQ:2HG NLQ HE21 NLQ:1HE2 NLQ HE22 NLQ:2HE2 NLQ H21 NLT:1H2 NLT H22 NLT:2H2 NLT H31 NLT:1H3 NLT H32 NLT:2H3 NLT H41 NLT:1H4 NLT H42 NLT:2H4 NLT H51 NLT:1H5 NLT H52 NLT:2H5 NLT H61 NLT:1H6 NLT H62 NLT:2H6 NLT H71 NLT:1H7 NLT H72 NLT:2H7 NLT H81 NLT:1H8 NLT H82 NLT:2H8 NLT H91 NLT:1H9 NLT H92 NLT:2H9 NLT H101 NLT:1H10 NLT H102 NLT:2H10 NLT H111 NLT:1H11 NLT H112 NLT:2H11 NLT H121 NLT:1H12 NLT H122 NLT:2H12 NLT H123 NLT:3H12 NLT HB1 NLT:1HB NLT HB2 NLT:2HB NLT HO11 NLX:1HO1 NLX HO41 NLX:1HO4 NLX H11 NLX:1H1 NLX H21 NLX:1H2 NLX H51 NLX:1H5 NLX H71 NLX:1H7 NLX H72 NLX:2H7 NLX H81 NLX:1H8 NLX H82 NLX:2H8 NLX H91 NLX:1H9 NLX H101 NLX:1H10 NLX H102 NLX:2H10 NLX H151 NLX:1H15 NLX H152 NLX:2H15 NLX H161 NLX:1H16 NLX H162 NLX:2H16 NLX H171 NLX:1H17 NLX H172 NLX:2H17 NLX H181 NLX:1H18 NLX H191 NLX:1H19 NLX H192 NLX:2H19 NLX H201 NLX:1H20 NLX H202 NLX:2H20 NLX H203 NLX:3H20 NLX H081 NM1:1H08 NM1 H082 NM1:2H08 NM1 H231 NM1:1H23 NM1 H232 NM1:2H23 NM1 H321 NM1:1H32 NM1 H322 NM1:2H32 NM1 H411 NM1:1H41 NM1 H412 NM1:2H41 NM1 H541 NM1:1H54 NM1 H542 NM1:2H54 NM1 H543 NM1:3H54 NM1 H4A1 NMA:1H4A NMA H4A2 NMA:2H4A NMA HOP2 NMA:2HOP NMA HOP3 NMA:3HOP NMA H5A1 NMA:1H5A NMA H5A2 NMA:2H5A NMA H2A1 NMA:1H2A NMA H2A2 NMA:2H2A NMA H2A3 NMA:3H2A NMA H91 NMA:1H9 NMA H92 NMA:2H9 NMA H93 NMA:3H9 NMA H101 NMA:1H10 NMA H102 NMA:2H10 NMA H103 NMA:3H10 NMA H081 NMB:1H08 NMB H082 NMB:2H08 NMB H231 NMB:1H23 NMB H232 NMB:2H23 NMB H321 NMB:1H32 NMB H322 NMB:2H32 NMB H411 NMB:1H41 NMB H412 NMB:2H41 NMB HA1 NMC:1HA NMC HA2 NMC:2HA NMC HCN1 NMC:1HCN NMC HCN2 NMC:2HCN NMC HC21 NMC:1HC2 NMC HC22 NMC:2HC2 NMC HC31 NMC:1HC3 NMC HC32 NMC:2HC3 NMC H5'1 NMD:1H5* NMD H5'2 NMD:2H5* NMD H4' NMD: H4* NMD H3' NMD: H3* NMD HO3' NMD:*HO3 NMD H2' NMD: H2* NMD HN2' NMD:*HN2 NMD H1' NMD: H1* NMD H111 NMD:1H11 NMD H112 NMD:2H11 NMD H2M1 NMD:1H2M NMD H2M2 NMD:2H2M NMD H2M3 NMD:3H2M NMD H1M1 NMD:1H1M NMD H1M2 NMD:2H1M NMD H1M3 NMD:3H1M NMD HO5' NMD:*HO5 NMD HN1 NME:1HN NME HN2 NME:2HN NME H1 NME:1H NME H2 NME:2H NME H3 NME:3H NME HD1 NMG:1HD NMG HD2 NMG:2HD NMG HH11 NMG:1HH1 NMG HH12 NMG:2HH1 NMG HC71 NMH:1HC7 NMH HC72 NMH:2HC7 NMH HC73 NMH:3HC7 NMH HC61 NMH:1HC6 NMH HC62 NMH:2HC6 NMH HC51 NMH:1HC5 NMH HC52 NMH:2HC5 NMH HC41 NMH:1HC4 NMH HC42 NMH:2HC4 NMH HC31 NMH:1HC3 NMH HC32 NMH:2HC3 NMH HC11 NMH:1HC1 NMH HC12 NMH:2HC1 NMH HC13 NMH:3HC1 NMH HN' NMH: HN* NMH HC' NMH: HC* NMH H11 NML:1H1 NML H12 NML:2H1 NML H13 NML:3H1 NML H31 NML:1H3 NML H32 NML:2H3 NML H33 NML:3H3 NML HAA1 NMM:1HAA NMM HAA2 NMM:2HAA NMM HAA3 NMM:3HAA NMM HE NMM: HNE NMM HD3 NMM:1HD NMM HD2 NMM:2HD NMM HG3 NMM:1HG NMM HG2 NMM:2HG NMM HB3 NMM:1HB NMM HB2 NMM:2HB NMM H NMM:1HN NMM H2 NMM:2HN NMM H1PO NMN:OH1P NMN H2PO NMN:OH2P NMN H5R1 NMN:1H5R NMN H5R2 NMN:2H5R NMN H4RC NMN:CH4R NMN H3RC NMN:CH3R NMN H3RO NMN:OH3R NMN H2RC NMN:CH2R NMN H2RO NMN:OH2R NMN H1RC NMN:CH1R NMN HN71 NMN:1HN7 NMN HN72 NMN:2HN7 NMN H261 NMP:1H26 NMP H262 NMP:2H26 NMP H251 NMP:1H25 NMP H252 NMP:2H25 NMP H241 NMP:1H24 NMP H242 NMP:2H24 NMP H221 NMP:1H22 NMP H222 NMP:2H22 NMP H223 NMP:3H22 NMP H151 NMP:1H15 NMP H152 NMP:2H15 NMP H31 NMP:1H3 NMP H32 NMP:2H3 NMP H91 NMP:1H9 NMP H92 NMP:2H9 NMP H101 NMP:1H10 NMP H102 NMP:2H10 NMP H111 NMP:1H11 NMP H112 NMP:2H11 NMP H121 NMP:1H12 NMP H122 NMP:2H12 NMP H131 NMP:1H13 NMP H132 NMP:2H13 NMP HOB2 NMQ:2HOB NMQ HOA2 NMQ:2HOA NMQ HA21 NMQ:1HA2 NMQ HA22 NMQ:2HA2 NMQ HA11 NMQ:1HA1 NMQ HA12 NMQ:2HA1 NMQ HA31 NMQ:1HA3 NMQ HA32 NMQ:2HA3 NMQ HA33 NMQ:3HA3 NMQ HOP2 NMS:2HOP NMS H71 NMS:1H5M NMS H72 NMS:2H5M NMS H73 NMS:3H5M NMS H2' NMS: H2* NMS H5' NMS:1H5* NMS H5'' NMS:2H5* NMS H4' NMS: H4* NMS H1' NMS: H1* NMS H3' NMS: H3* NMS HO3' NMS:H3T NMS H7'1 NMS:1H7' NMS H7'2 NMS:2H7' NMS H101 NMS:1H10 NMS H102 NMS:2H10 NMS H103 NMS:3H10 NMS HOP3 NMS:3HOP NMS HOP3 NMT:3HOP NMT HOP2 NMT:2HOP NMT H71 NMT:1H5M NMT H72 NMT:2H5M NMT H73 NMT:3H5M NMT H2' NMT: H2* NMT H5' NMT:1H5* NMT H5'' NMT:2H5* NMT H4' NMT: H4* NMT H1' NMT: H1* NMT H3' NMT: H3* NMT HO3' NMT:H3T NMT H9'1 NMT:1H9' NMT H9'2 NMT:2H9' NMT H9'3 NMT:3H9' NMT HN31 NMU:1HN3 NMU HN32 NMU:2HN3 NMU H51 NMU:1H5 NMU H52 NMU:2H5 NMU H53 NMU:3H5 NMU H2A NMX: AH2 NMX H61A NMX:AH61 NMX H62A NMX:AH62 NMX H8A NMX: AH8 NMX H1B NMX:AH1* NMX H2B NMX:AH2* NMX HO2A NMX:AHO2 NMX H3B NMX:AH3* NMX HOA8 NMX:8HOA NMX HOA9 NMX:9HOA NMX H4B NMX:AH4* NMX H51A NMX:AH51 NMX H52A NMX:AH52 NMX HOA2 NMX:2HOA NMX HOA5 NMX:5HOA NMX H121 NMX:1H12 NMX H122 NMX:2H12 NMX H131 NMX:1H13 NMX H132 NMX:2H13 NMX H133 NMX:3H13 NMX H141 NMX:1H14 NMX H142 NMX:2H14 NMX H143 NMX:3H14 NMX H71 NMX:1H7 NMX H72 NMX:2H7 NMX H61 NMX:1H6 NMX H62 NMX:2H6 NMX H31 NMX:1H3 NMX H32 NMX:2H3 NMX H21 NMX:1H2 NMX H22 NMX:2H2 NMX HI11 NMX:1HI1 NMX HI12 NMX:2HI1 NMX HN21 NMY:1HN2 NMY HN22 NMY:2HN2 NMY H61 NMY:1H6 NMY H62 NMY:2H6 NMY HN71 NMY:1HN7 NMY HN72 NMY:2HN7 NMY HN91 NMY:1HN9 NMY HN92 NMY:2HN9 NMY H81 NMY:1H8 NMY H82 NMY:2H8 NMY H171 NMY:1H17 NMY H172 NMY:2H17 NMY H231 NMY:1H23 NMY H232 NMY:2H23 NMY HN61 NMY:1HN6 NMY HN62 NMY:2HN6 NMY H191 NMY:1H19 NMY H192 NMY:2H19 NMY HN31 NMY:1HN3 NMY HN32 NMY:2HN3 NMY H51 NN1:1H5 NN1 H52 NN1:2H5 NN1 H53 NN1:3H5 NN1 H171 NN1:1H17 NN1 H172 NN1:2H17 NN1 H211 NN1:1H21 NN1 H212 NN1:2H21 NN1 H241 NN1:1H24 NN1 H242 NN1:2H24 NN1 H11 NN1:1H1 NN1 H12 NN1:2H1 NN1 H13 NN1:3H1 NN1 H31 NN1:1H3 NN1 H32 NN1:2H3 NN1 H33 NN1:3H3 NN1 H191 NN1:1H19 NN1 H192 NN1:2H19 NN1 H231 NN1:1H23 NN1 H232 NN1:2H23 NN1 H241 NN2:1H24 NN2 H242 NN2:2H24 NN2 H251 NN2:1H25 NN2 H252 NN2:2H25 NN2 H301 NN2:1H30 NN2 H302 NN2:2H30 NN2 H291 NN2:1H29 NN2 H292 NN2:2H29 NN2 H51 NN3:1H5 NN3 H52 NN3:2H5 NN3 H61 NN3:1H6 NN3 H62 NN3:2H6 NN3 H71 NN3:1H7 NN3 H72 NN3:2H7 NN3 H73 NN3:3H7 NN3 H31 NN3:1H3 NN3 H32 NN3:2H3 NN3 H21A NN3:1H2 NN3 H22A NN3:2H2 NN3 H241 NN3:1H24 NN3 H242 NN3:2H24 NN3 H243 NN3:3H24 NN3 H231 NN3:1H23 NN3 H232 NN3:2H23 NN3 H233 NN3:3H23 NN3 H41 NN4:1H4 NN4 H42 NN4:2H4 NN4 H61 NN4:1H6 NN4 H62 NN4:2H6 NN4 H71 NN4:1H7 NN4 H72 NN4:2H7 NN4 H81 NN4:1H8 NN4 H82 NN4:2H8 NN4 H201 NN4:1H20 NN4 H202 NN4:2H20 NN4 H203 NN4:3H20 NN4 H281 NN4:1H28 NN4 H282 NN4:2H28 NN4 H283 NN4:3H28 NN4 H21 NN4:1H2 NN4 H22A NN4:2H2 NN4 H131 NN4:1H13 NN4 H132 NN4:2H13 NN4 H191 NN4:1H19 NN4 H192 NN4:2H19 NN4 H193 NN4:3H19 NN4 H6C1 NND:1H6C NND H6C2 NND:2H6C NND H1C1 NND:1H1C NND H1C2 NND:2H1C NND H8C1 NND:1H8C NND H8C2 NND:2H8C NND H7C1 NND:1H7C NND H7C2 NND:2H7C NND H9C1 NND:1H9C NND H9C2 NND:2H9C NND H101 NND:1H10 NND H102 NND:2H10 NND H141 NND:1H14 NND H142 NND:2H14 NND H131 NND:1H13 NND H132 NND:2H13 NND H121 NND:1H12 NND H122 NND:2H12 NND H111 NND:1H11 NND H112 NND:2H11 NND H161 NND:1H16 NND H162 NND:2H16 NND H163 NND:3H16 NND H61 NNG:1H6 NNG H62 NNG:2H6 NNG H81 NNG:1H8 NNG H82 NNG:2H8 NNG H83 NNG:3H8 NNG H2 NNH: HN2 NNH HB2 NNH:1HB NNH HB3 NNH:2HB NNH HG2 NNH:1HG NNH HG3 NNH:2HG NNH H11 NNP:1H1 NNP H12 NNP:2H1 NNP H21 NNP:1H2 NNP H22 NNP:2H2 NNP H111 NNP:1H11 NNP H112 NNP:2H11 NNP H91 NNP:1H9 NNP H92 NNP:2H9 NNP H71 NNP:1H7 NNP H72 NNP:2H7 NNP H01 NNP:1H0 NNP H02 NNP:2H0 NNP H81 NNP:1H8 NNP H82 NNP:2H8 NNP H101 NNP:1H10 NNP H102 NNP:2H10 NNP H121 NNP:1H12 NNP H122 NNP:2H12 NNP HO3' NNP:HO3* NNP H11 NNS:1H1 NNS H12 NNS:2H1 NNS H13 NNS:3H1 NNS HA1 NOA:1HA NOA HA2 NOA:2HA NOA H6'1 NOC:1H6* NOC H6'2 NOC:2H6* NOC HO6' NOC:HO6* NOC H5'1 NOC:1H5* NOC H5'2 NOC:2H5* NOC HC4' NOC:HC4* NOC HC3' NOC:HC3* NOC HO3' NOC:HO3* NOC HC2' NOC:HC2* NOC HO2' NOC:HO2* NOC HC1' NOC:HC1* NOC HN61 NOC:1HN6 NOC HN62 NOC:2HN6 NOC H111 NOD:1H11 NOD H112 NOD:2H11 NOD HO12 NOD:2HO1 NOD H141 NOD:1H14 NOD H142 NOD:2H14 NOD HO14 NOD:4HO1 NOD H151 NOD:1H15 NOD H152 NOD:2H15 NOD HO17 NOD:7HO1 NOD H211 NOD:1H21 NOD H212 NOD:2H21 NOD H213 NOD:3H21 NOD H1' NOD: H1* NOD H2'1 NOD:1H2* NOD H2'2 NOD:2H2* NOD H3' NOD: H3* NOD H4' NOD: H4* NOD HO4' NOD:*HO4 NOD H5' NOD: H5* NOD H6'1 NOD:1H6* NOD H6'2 NOD:2H6* NOD H6'3 NOD:3H6* NOD HN3' NOD:HN3* NOD H631 NOD:1H63 NOD H632 NOD:2H63 NOD H531 NOD:1H53 NOD H532 NOD:2H53 NOD HC11 NOE:1HC1 NOE HC12 NOE:2HC1 NOE HC21 NOE:1HC2 NOE HC22 NOE:2HC2 NOE HC23 NOE:3HC2 NOE HC11 NOG:1HC1 NOG HC12 NOG:2HC1 NOG HC21 NOG:1HC2 NOG HC22 NOG:2HC2 NOG HC61 NOG:1HC6 NOG HC62 NOG:2HC6 NOG HC71 NOG:1HC7 NOG HC72 NOG:2HC7 NOG H10C NOG:CH10 NOG H111 NOG:1H11 NOG H112 NOG:2H11 NOG H121 NOG:1H12 NOG H122 NOG:2H12 NOG H14C NOG:CH14 NOG H151 NOG:1H15 NOG H152 NOG:2H15 NOG H161 NOG:1H16 NOG H162 NOG:2H16 NOG H181 NOG:1H18 NOG H182 NOG:2H18 NOG H191 NOG:1H19 NOG H192 NOG:2H19 NOG H193 NOG:3H19 NOG H21C NOG:CH21 NOG H17O NOG:OH17 NOG H11 NOJ:1H1 NOJ H12 NOJ:2H1 NOJ H61 NOJ:1H6 NOJ H62 NOJ:2H6 NOJ H131 NOL:1H13 NOL H132 NOL:2H13 NOL H351 NOL:1H35 NOL H352 NOL:2H35 NOL H411 NOL:1H41 NOL H412 NOL:2H41 NOL H451 NOL:1H45 NOL H452 NOL:2H45 NOL H471 NOL:1H47 NOL H472 NOL:2H47 NOL H581 NOL:1H58 NOL H582 NOL:2H58 NOL H621 NOL:1H62 NOL H622 NOL:2H62 NOL H631 NOL:1H63 NOL H632 NOL:2H63 NOL H641 NOL:1H64 NOL H642 NOL:2H64 NOL H651 NOL:1H65 NOL H652 NOL:2H65 NOL H661 NOL:1H66 NOL H662 NOL:2H66 NOL H771 NOL:1H77 NOL H772 NOL:2H77 NOL H773 NOL:3H77 NOL H831 NOL:1H83 NOL H832 NOL:2H83 NOL H833 NOL:3H83 NOL H851 NOL:1H85 NOL H852 NOL:2H85 NOL H853 NOL:3H85 NOL H871 NOL:1H87 NOL H872 NOL:2H87 NOL H873 NOL:3H87 NOL H121 NOM:1H12 NOM H122 NOM:2H12 NOM H123 NOM:3H12 NOM H151 NOM:1H15 NOM H152 NOM:2H15 NOM H21 NON:1H2 NON H22 NON:2H2 NON H31 NON:1H3 NON H32 NON:2H3 NON H41 NON:1H4 NON H42 NON:2H4 NON H51 NON:1H5 NON H52 NON:2H5 NON H61 NON:1H6 NON H62 NON:2H6 NON H71 NON:1H7 NON H72 NON:2H7 NON H81 NON:1H8 NON H82 NON:2H8 NON H91 NON:1H9 NON H92 NON:2H9 NON H93 NON:3H9 NON HM1 NON:1HM NON HM2 NON:2HM NON HM3 NON:3HM NON H2A1 NOP:1H2A NOP H2A2 NOP:2H2A NOP H2A3 NOP:3H2A NOP H5A1 NOP:1H5A NOP H5A2 NOP:2H5A NOP HOP2 NOP:2HOP NOP HOP3 NOP:3HOP NOP H111 NOQ:1H11 NOQ H112 NOQ:2H11 NOQ H161 NOQ:1H16 NOQ H162 NOQ:2H16 NOQ H171 NOQ:1H17 NOQ H172 NOQ:2H17 NOQ H151 NOQ:1H15 NOQ H152 NOQ:2H15 NOQ H141 NOQ:1H14 NOQ H142 NOQ:2H14 NOQ H301 NOQ:1H30 NOQ H302 NOQ:2H30 NOQ H441 NOQ:1H44 NOQ H442 NOQ:2H44 NOQ H443 NOQ:3H44 NOQ H201 NOQ:1H20 NOQ H202 NOQ:2H20 NOQ H211 NOQ:1H21 NOQ H212 NOQ:2H21 NOQ HN1 NOR:1HN NOR HN2 NOR:2HN NOR HB1 NOR:1HB NOR HB2 NOR:2HB NOR HD11 NOR:1HD1 NOR HD12 NOR:2HD1 NOR HD21 NOR:1HD2 NOR HD22 NOR:2HD2 NOR HE11 NOR:1HE1 NOR HE12 NOR:2HE1 NOR HE21 NOR:1HE2 NOR HE22 NOR:2HE2 NOR HZ1 NOR:1HZ NOR HZ2 NOR:2HZ NOR HM11 NOR:1HM1 NOR HM12 NOR:2HM1 NOR HM13 NOR:3HM1 NOR HM21 NOR:1HM2 NOR HM22 NOR:2HM2 NOR HM23 NOR:3HM2 NOR H5'1 NOS:1H5* NOS H5'2 NOS:2H5* NOS HO5' NOS:*HO5 NOS H4' NOS: H4* NOS H1' NOS: H1* NOS H2' NOS: H2* NOS HO2' NOS:*HO2 NOS H3' NOS: H3* NOS HO3' NOS:*HO3 NOS H11A NOV:1H1 NOV H12 NOV:2H1 NOV H13 NOV:3H1 NOV HN11 NOV:1HN1 NOV HN12 NOV:2HN1 NOV H231 NOV:1H23 NOV H232 NOV:2H23 NOV H233 NOV:3H23 NOV H261 NOV:1H26 NOV H262 NOV:2H26 NOV H263 NOV:3H26 NOV H21A NOV:1H2 NOV H22 NOV:2H2 NOV H23 NOV:3H2 NOV H201 NOV:1H20 NOV H202 NOV:2H20 NOV H241 NOV:1H24 NOV H242 NOV:2H24 NOV H243 NOV:3H24 NOV H251 NOV:1H25 NOV H252 NOV:2H25 NOV H253 NOV:3H25 NOV H21 NOX:1H2 NOX H22 NOX:2H2 NOX H31 NOX:1H3 NOX H32 NOX:2H3 NOX H41 NOX:1H4 NOX H42 NOX:2H4 NOX H51 NOX:1H5 NOX H52 NOX:2H5 NOX H61 NOX:1H6 NOX H62 NOX:2H6 NOX H81 NOX:1H8 NOX H82 NOX:2H8 NOX H91 NOX:1H9 NOX H92 NOX:2H9 NOX H191 NOX:1H19 NOX H192 NOX:2H19 NOX H201 NOX:1H20 NOX H202 NOX:2H20 NOX H211 NOX:1H21 NOX H212 NOX:2H21 NOX H7C1 NOY:1H7C NOY H7C2 NOY:2H7C NOY H6C1 NOY:1H6C NOY H6C2 NOY:2H6C NOY H6C3 NOY:3H6C NOY H12 NOY:2H1 NOY H22 NOY:2H2 NOY HO4' NP:'HO4 NP H11 NP:1H1 NP H12 NP:2H1 NP H41 NP:1H4 NP H42 NP:2H4 NP H51 NP:1H5 NP H52 NP:2H5 NP H61 NP:1H6 NP H62 NP:2H6 NP H71 NP:1H7 NP H72 NP:2H7 NP H81 NP:1H8 NP H82 NP:2H8 NP HNZ1 NP1:1HNZ NP1 HNZ2 NP1:2HNZ NP1 HA1 NP1:1HA NP1 HA2 NP1:2HA NP1 HB1 NP1:1HB NP1 HB2 NP1:2HB NP1 HG1 NP1:1HG NP1 HG2 NP1:2HG NP1 HM1 NP1:1HM NP1 HM2 NP1:2HM NP1 HM3 NP1:3HM NP1 HNZ1 NP2:1HNZ NP2 HNZ2 NP2:2HNZ NP2 HA1 NP2:1HA NP2 HA2 NP2:2HA NP2 HB1 NP2:1HB NP2 HB2 NP2:2HB NP2 HG1 NP2:1HG NP2 HG2 NP2:2HG NP2 HOP2 NP3:2HOP NP3 HOP3 NP3:3HOP NP3 H5'1 NP3:1H5* NP3 H5'2 NP3:2H5* NP3 H4' NP3: H4* NP3 H1' NP3: H1* NP3 H2'1 NP3:1H2* NP3 H2'2 NP3:2H2* NP3 H3' NP3: H3* NP3 H8C1 NP4:1H8C NP4 H8C2 NP4:2H8C NP4 H101 NP4:1H10 NP4 H102 NP4:2H10 NP4 H111 NP4:1H11 NP4 H112 NP4:2H11 NP4 H121 NP4:1H12 NP4 H122 NP4:2H12 NP4 H151 NP4:1H15 NP4 H152 NP4:2H15 NP4 H161 NP4:1H16 NP4 H162 NP4:2H16 NP4 H8C1 NP5:1H8C NP5 H8C2 NP5:2H8C NP5 H101 NP5:1H10 NP5 H102 NP5:2H10 NP5 H111 NP5:1H11 NP5 H112 NP5:2H11 NP5 H121 NP5:1H12 NP5 H122 NP5:2H12 NP5 H151 NP5:1H15 NP5 H152 NP5:2H15 NP5 H161 NP5:1H16 NP5 H162 NP5:2H16 NP5 H71 NPA:1H7 NPA H72 NPA:2H7 NPA HO11 NPB:1HO1 NPB HO21 NPB:1HO2 NPB HC21 NPB:1HC2 NPB HC41 NPB:1HC4 NPB HC51 NPB:1HC5 NPB HC61 NPB:1HC6 NPB H71 NPC:1H7 NPC H72 NPC:2H7 NPC H101 NPC:1H10 NPC H102 NPC:2H10 NPC H111 NPC:1H11 NPC H112 NPC:2H11 NPC H121 NPC:1H12 NPC H122 NPC:2H12 NPC H131 NPC:1H13 NPC H132 NPC:2H13 NPC H141 NPC:1H14 NPC H142 NPC:2H14 NPC HCN1 NPD:1HCN NPD HCN2 NPD:2HCN NPD HCN3 NPD:3HCN NPD HB1 NPD:1HB NPD HB2 NPD:2HB NPD HD11 NPD:1HD1 NPD HE11 NPD:1HE1 NPD HZ11 NPD:1HZ1 NPD HZ21 NPD:1HZ2 NPD HH21 NPD:1HH2 NPD HZ31 NPD:1HZ3 NPD HE31 NPD:1HE3 NPD H71 NPE:1H7 NPE H72 NPE:2H7 NPE H81 NPE:1H8 NPE H82 NPE:2H8 NPE H91 NPE:1H9 NPE H92 NPE:2H9 NPE H101 NPE:1H10 NPE H102 NPE:2H10 NPE HO'2 NPF:2HO' NPF HO'3 NPF:3HO' NPF HO'4 NPF:4HO' NPF H6'1 NPF:1H6' NPF H6'2 NPF:2H6' NPF H6'3 NPF:3H6' NPF H51 NPG:1H5 NPG H52 NPG:2H5 NPG H41 NPG:1H4 NPG H42 NPG:2H4 NPG H NPH:1HN NPH H2 NPH:2HN NPH HB2 NPH:1HB NPH HB3 NPH:2HB NPH HD2 NPH:1HD NPH HD3 NPH:2HD NPH HZ NPH: HNZ NPH HC2 NPH: H2 NPH H31 NPI:1H3 NPI H32 NPI:2H3 NPI H41 NPI:1H4 NPI H42 NPI:2H4 NPI H51 NPI:1H5 NPI H52 NPI:2H5 NPI H61 NPI:1H6 NPI H62 NPI:2H6 NPI HN21 NPI:1HN2 NPI HN22 NPI:2HN2 NPI H6A1 NPJ:1H6A NPJ H6A2 NPJ:2H6A NPJ H6B1 NPJ:1H6B NPJ H6B2 NPJ:2H6B NPJ H11 NPL:1H1 NPL H12 NPL:2H1 NPL H13 NPL:3H1 NPL H21 NPL:1H2 NPL H22 NPL:2H2 NPL H23 NPL:3H2 NPL H41 NPL:1H4 NPL H42 NPL:2H4 NPL HN41 NPL:1HN4 NPL HN42 NPL:2HN4 NPL H51 NPL:1H5 NPL H52 NPL:2H5 NPL HOP2 NPL:2HOP NPL HOP3 NPL:3HOP NPL H1M1 NPM:1H1M NPM H1M2 NPM:2H1M NPM H11 NPN:1H1 NPN H12 NPN:2H1 NPN H21 NPN:1H2 NPN H22 NPN:2H2 NPN H31 NPN:1H3 NPN H32 NPN:2H3 NPN H33 NPN:3H3 NPN HM11 NPP:1HM1 NPP HM12 NPP:2HM1 NPP HM13 NPP:3HM1 NPP HM21 NPP:1HM2 NPP HM22 NPP:2HM2 NPP HM23 NPP:3HM2 NPP H31 NPP:1H3 NPP H32 NPP:2H3 NPP H51 NPP:1H5 NPP H52 NPP:2H5 NPP HM31 NPP:1HM3 NPP HM32 NPP:2HM3 NPP HM33 NPP:3HM3 NPP HM41 NPP:1HM4 NPP HM42 NPP:2HM4 NPP HM43 NPP:3HM4 NPP H131 NPP:1H13 NPP H132 NPP:2H13 NPP H141 NPP:1H14 NPP H142 NPP:2H14 NPP HN61 NPP:1HN6 NPP HN62 NPP:2HN6 NPP HN11 NPR:1HN1 NPR HN12 NPR:2HN1 NPR H91 NPR:1H9 NPR H92 NPR:2H9 NPR H171 NPR:1H17 NPR H172 NPR:2H17 NPR HN1 NPT:1HN NPT HN2 NPT:2HN NPT H11 NPT:1H1 NPT H12 NPT:2H1 NPT H31 NPT:1H3 NPT H32 NPT:2H3 NPT H33 NPT:3H3 NPT H41 NPT:1H4 NPT H42 NPT:2H4 NPT H43 NPT:3H4 NPT H51 NPT:1H5 NPT H52 NPT:2H5 NPT H53 NPT:3H5 NPT H11 NPY:1H1 NPY HAA1 NQG:1HAA NQG HAA2 NQG:2HAA NQG HAA3 NQG:3HAA NQG HAS1 NQG:1HAS NQG HAS2 NQG:2HAS NQG HBT1 NQG:1HBT NQG HBT2 NQG:2HBT NQG HB1 NQG:1HB NQG HB2 NQG:2HB NQG HAT1 NQG:1HAT NQG HAT2 NQG:2HAT NQG HAX1 NQG:1HAX NQG HAX2 NQG:2HAX NQG HAU1 NQG:1HAU NQG HAU2 NQG:2HAU NQG HAV1 NQG:1HAV NQG HAV2 NQG:2HAV NQG HAE1 NQG:1HAE NQG HAE2 NQG:2HAE NQG HAF1 NQG:1HAF NQG HAF2 NQG:2HAF NQG HAY1 NQG:1HAY NQG HAY2 NQG:2HAY NQG HAB1 NQI:1HAB NQI HAB2 NQI:2HAB NQI HAB3 NQI:3HAB NQI HAS1 NQI:1HAS NQI HAS2 NQI:2HAS NQI HBS1 NQI:1HBS NQI HBS2 NQI:2HBS NQI HB1 NQI:1HB NQI HB2 NQI:2HB NQI HAA1 NQI:1HAA NQI HAA2 NQI:2HAA NQI HAW1 NQI:1HAW NQI HAW2 NQI:2HAW NQI HAT1 NQI:1HAT NQI HAT2 NQI:2HAT NQI HAU1 NQI:1HAU NQI HAU2 NQI:2HAU NQI HAD1 NQI:1HAD NQI HAD2 NQI:2HAD NQI HAF1 NQI:1HAF NQI HAF2 NQI:2HAF NQI HAX1 NQI:1HAX NQI HAX2 NQI:2HAX NQI H241 NR2:1H24 NR2 H242 NR2:2H24 NR2 H211 NR2:1H21 NR2 H212 NR2:2H21 NR2 H213 NR2:3H21 NR2 H1C1 NRB:1H1C NRB H1C2 NRB:2H1C NRB H1C3 NRB:3H1C NRB H2C1 NRB:1H2C NRB H2C2 NRB:2H2C NRB H6C1 NRB:1H6C NRB H6C2 NRB:2H6C NRB H6C3 NRB:3H6C NRB H9C1 NRB:1H9C NRB H9C2 NRB:2H9C NRB H9C3 NRB:3H9C NRB H131 NRB:1H13 NRB H132 NRB:2H13 NRB H133 NRB:3H13 NRB H141 NRB:1H14 NRB H142 NRB:2H14 NRB H161 NRB:1H16 NRB H162 NRB:2H16 NRB H163 NRB:3H16 NRB H171 NRB:1H17 NRB H172 NRB:2H17 NRB H173 NRB:3H17 NRB H201 NRB:1H20 NRB H202 NRB:2H20 NRB H203 NRB:3H20 NRB H211 NRB:1H21 NRB H212 NRB:2H21 NRB H231 NRB:1H23 NRB H232 NRB:2H23 NRB H233 NRB:3H23 NRB H281 NRB:1H28 NRB H282 NRB:2H28 NRB H283 NRB:3H28 NRB HN1 NRG:1HN NRG HN2 NRG:2HN NRG HCB1 NRG:1HCB NRG HCB2 NRG:2HCB NRG HCG1 NRG:1HCG NRG HCG2 NRG:2HCG NRG HCD1 NRG:1HCD NRG HCD2 NRG:2HCD NRG HOP2 NRI:2HOP NRI HOP3 NRI:3HOP NRI H2'1 NRI:1H2* NRI H2'2 NRI:2H2* NRI H5'1 NRI:1H5* NRI H5'2 NRI:2H5* NRI H4' NRI: H4* NRI H3' NRI: H3* NRI H6'1 NRI:1H6* NRI H6'2 NRI:2H6* NRI HN'1 NRI:1HN* NRI HO'3 NRI:3HO* NRI HB11 NRQ:1HB1 NRQ HB12 NRQ:2HB1 NRQ HG11 NRQ:1HG1 NRQ HG12 NRQ:2HG1 NRQ HA31 NRQ:1HA3 NRQ HA32 NRQ:2HA3 NRQ HE31 NRQ:1HE3 NRQ HE32 NRQ:2HE3 NRQ HE33 NRQ:3HE3 NRQ H31 NRQ:1H3 NRQ H32 NRQ:2H3 NRQ H33 NRQ:3H3 NRQ H51 NRQ:1H5 NRQ H52 NRQ:2H5 NRQ H53 NRQ:3H5 NRQ H4' NRT: H4* NRT H3'1 NRT:1H3* NRT H3'2 NRT:2H3* NRT H2'1 NRT:1H2* NRT H2'2 NRT:2H2* NRT H2N1 NRT:1H2N NRT H2N2 NRT:2H2N NRT H601 NRT:1H60 NRT H602 NRT:2H60 NRT H141 NRT:1H14 NRT H142 NRT:2H14 NRT HN11 NRU:1HN1 NRU HN12 NRU:2HN1 NRU HN41 NRU:1HN4 NRU HN42 NRU:2HN4 NRU HN51 NRU:1HN5 NRU HN52 NRU:2HN5 NRU HN21 NRU:1HN2 NRU HN22 NRU:2HN2 NRU HN31 NRU:1HN3 NRU HN32 NRU:2HN3 NRU HN61 NRU:1HN6 NRU HN62 NRU:2HN6 NRU HM11 NS1:1HM1 NS1 HM12 NS1:2HM1 NS1 HM13 NS1:3HM1 NS1 HM21 NS1:1HM2 NS1 HM22 NS1:2HM2 NS1 HM23 NS1:3HM2 NS1 H21 NS1:1H2 NS1 H22 NS1:2H2 NS1 H31 NS1:1H3 NS1 H32 NS1:2H3 NS1 H41 NS1:1H4 NS1 H42 NS1:2H4 NS1 H61 NS1:1H6 NS1 H62 NS1:2H6 NS1 H63 NS1:3H6 NS1 H81 NS1:1H8 NS1 H82 NS1:2H8 NS1 H91 NS1:1H9 NS1 H92 NS1:2H9 NS1 H111 NS1:1H11 NS1 H112 NS1:2H11 NS1 H113 NS1:3H11 NS1 H161 NS1:1H16 NS1 H162 NS1:2H16 NS1 H163 NS1:3H16 NS1 H221 NS1:1H22 NS1 H222 NS1:2H22 NS1 H223 NS1:3H22 NS1 H271 NS1:1H27 NS1 H272 NS1:2H27 NS1 H273 NS1:3H27 NS1 H321 NS1:1H32 NS1 H322 NS1:2H32 NS1 H323 NS1:3H32 NS1 H331 NS1:1H33 NS1 H332 NS1:2H33 NS1 H341 NS1:1H34 NS1 H342 NS1:2H34 NS1 H351 NS1:1H35 NS1 H352 NS1:2H35 NS1 HM31 NS1:1HM3 NS1 HM32 NS1:2HM3 NS1 HM33 NS1:3HM3 NS1 HM41 NS1:1HM4 NS1 HM42 NS1:2HM4 NS1 HM43 NS1:3HM4 NS1 HM11 NS5:1HM1 NS5 HM12 NS5:2HM1 NS5 HM13 NS5:3HM1 NS5 HM21 NS5:1HM2 NS5 HM22 NS5:2HM2 NS5 HM23 NS5:3HM2 NS5 H21 NS5:1H2 NS5 H22 NS5:2H2 NS5 H31 NS5:1H3 NS5 H32 NS5:2H3 NS5 H41 NS5:1H4 NS5 H42 NS5:2H4 NS5 H61 NS5:1H6 NS5 H62 NS5:2H6 NS5 H63 NS5:3H6 NS5 H81 NS5:1H8 NS5 H82 NS5:2H8 NS5 H91 NS5:1H9 NS5 H92 NS5:2H9 NS5 H111 NS5:1H11 NS5 H112 NS5:2H11 NS5 H113 NS5:3H11 NS5 H161 NS5:1H16 NS5 H162 NS5:2H16 NS5 H163 NS5:3H16 NS5 H221 NS5:1H22 NS5 H222 NS5:2H22 NS5 H223 NS5:3H22 NS5 H271 NS5:1H27 NS5 H272 NS5:2H27 NS5 H273 NS5:3H27 NS5 H321 NS5:1H32 NS5 H322 NS5:2H32 NS5 H323 NS5:3H32 NS5 H331 NS5:1H33 NS5 H332 NS5:2H33 NS5 H341 NS5:1H34 NS5 H342 NS5:2H34 NS5 H351 NS5:1H35 NS5 H352 NS5:2H35 NS5 HM31 NS5:1HM3 NS5 HM32 NS5:2HM3 NS5 HM33 NS5:3HM3 NS5 HM41 NS5:1HM4 NS5 HM42 NS5:2HM4 NS5 HM43 NS5:3HM4 NS5 H61 NSB:1H6 NSB H62 NSB:2H6 NSB H41 NSB:1H4 NSB H42 NSB:2H4 NSB H21 NSB:1H2 NSB H22 NSB:2H2 NSB H201 NSB:1H20 NSB H202 NSB:2H20 NSB H203 NSB:3H20 NSB H181 NSB:1H18 NSB H182 NSB:2H18 NSB H183 NSB:3H18 NSB H161 NSB:1H16 NSB H162 NSB:2H16 NSB H163 NSB:3H16 NSB HN11 NSC:1HN1 NSC HN12 NSC:2HN1 NSC H81 NSC:1H8 NSC H82 NSC:2H8 NSC H83 NSC:3H8 NSC H251 NSC:1H25 NSC H252 NSC:2H25 NSC H201 NSC:1H20 NSC H202 NSC:2H20 NSC H203 NSC:3H20 NSC H121 NSI:1H12 NSI H122 NSI:2H12 NSI H281 NSI:1H28 NSI H282 NSI:2H28 NSI H283 NSI:3H28 NSI H21 NSK:1H2 NSK H22 NSK:2H2 NSK H31 NSK:1H3 NSK H32 NSK:2H3 NSK H71 NSK:1H7 NSK H72 NSK:2H7 NSK H81 NSK:1H8 NSK H82 NSK:2H8 NSK H91 NSK:1H9 NSK H92 NSK:2H9 NSK H101 NSK:1H10 NSK H102 NSK:2H10 NSK HN21 NSK:1HN2 NSK HN22 NSK:2HN2 NSK H11 NSM:1H1 NSM H12 NSM:2H1 NSM H13 NSM:3H1 NSM H11 NSN:1H1 NSN H12 NSN:2H1 NSN H13 NSN:3H1 NSN H51 NSN:1H5 NSN H52 NSN:2H5 NSN HN21 NSN:1HN2 NSN HN22 NSN:2HN2 NSN HN31 NSN:1HN3 NSN HN32 NSN:2HN3 NSN HN1 NSP:1HN NSP HN2 NSP:2HN NSP HCA1 NSP:1HCA NSP HCA2 NSP:2HCA NSP HQ21 NSP:1HQ2 NSP HQ22 NSP:2HQ2 NSP HS11 NSP:1HS1 NSP HS12 NSP:2HS1 NSP HS13 NSP:3HS1 NSP HN1 NSS:1HN NSS HN2 NSS:2HN NSS HN3 NSS:3HN NSS HB1 NSS:1HB NSS HB2 NSS:2HB NSS HD21 NSS:1HD2 NSS HD22 NSS:2HD2 NSS H5'1 NSS:1H5* NSS H5'2 NSS:2H5* NSS H4' NSS: H4* NSS H3' NSS: H3* NSS H2' NSS: H2* NSS H1' NSS: H1* NSS HN61 NSS:1HN6 NSS HN62 NSS:2HN6 NSS HN21 NT:1HN2 NT HN22 NT:2HN2 NT H21 NT:1H2 NT H22 NT:2H2 NT H81 NT:1H8 NT H82 NT:2H8 NT H83 NT:3H8 NT H141 NT:1H14 NT H142 NT:2H14 NT H143 NT:3H14 NT H161 NT:1H16 NT H162 NT:2H16 NT H171 NT:1H17 NT H172 NT:2H17 NT HN01 NT:1HN0 NT HN02 NT:2HN0 NT H101 NT1:1H10 NT1 H102 NT1:2H10 NT1 H131 NT1:1H13 NT1 H132 NT1:2H13 NT1 H151 NT1:1H15 NT1 H152 NT1:2H15 NT1 H153 NT1:3H15 NT1 H181 NT1:1H18 NT1 H182 NT1:2H18 NT1 H183 NT1:3H18 NT1 H1B1 NT1:1H1B NT1 H1B2 NT1:2H1B NT1 H1B3 NT1:3H1B NT1 H231 NT1:1H23 NT1 H232 NT1:2H23 NT1 H281 NT1:1H28 NT1 H282 NT1:2H28 NT1 H283 NT1:3H28 NT1 H2B1 NT1:1H2B NT1 H2B2 NT1:2H2B NT1 H2B3 NT1:3H2B NT1 H251 NT1:1H25 NT1 H252 NT1:2H25 NT1 H253 NT1:3H25 NT1 H351 NT1:1H35 NT1 H352 NT1:2H35 NT1 H3D1 NT1:1H3D NT1 H3D2 NT1:2H3D NT1 H3D3 NT1:3H3D NT1 H3G1 NT1:1H3G NT1 H3G2 NT1:2H3G NT1 H3G3 NT1:3H3G NT1 H481 NT1:1H48 NT1 H482 NT1:2H48 NT1 H483 NT1:3H48 NT1 H4B1 NT1:1H4B NT1 H4B2 NT1:2H4B NT1 H4B3 NT1:3H4B NT1 H531 NT1:1H53 NT1 H532 NT1:2H53 NT1 H681 NT1:1H68 NT1 H682 NT1:2H68 NT1 H683 NT1:3H68 NT1 H6B1 NT1:1H6B NT1 H6B2 NT1:2H6B NT1 H6B3 NT1:3H6B NT1 H731 NT1:1H73 NT1 H732 NT1:2H73 NT1 H7B1 NT1:1H7B NT1 H7B2 NT1:2H7B NT1 H7B3 NT1:3H7B NT1 H7I1 NT1:1H7I NT1 H7I2 NT1:2H7I NT1 H861 NT2:1H86 NT2 H862 NT2:2H86 NT2 H61 NTA:1H6 NTA H62 NTA:2H6 NTA H101 NTA:1H10 NTA H102 NTA:2H10 NTA H21 NTA:1H2 NTA H22 NTA:2H2 NTA HN1 NTB:1HN NTB HN2 NTB:2HN NTB H11 NTB:1H1 NTB H12 NTB:2H1 NTB H13 NTB:3H1 NTB H21 NTB:1H2 NTB H22 NTB:2H2 NTB H23 NTB:3H2 NTB H31 NTB:1H3 NTB H32 NTB:2H3 NTB H33 NTB:3H3 NTB H21 NTC:1H2 NTC H22 NTC:2H2 NTC H41 NTC:1H4 NTC H42 NTC:2H4 NTC H21 NTD:1H2 NTD H22 NTD:2H2 NTD H31 NTD:1H3 NTD H32 NTD:2H3 NTD H41 NTD:1H4 NTD H42 NTD:2H4 NTD H61 NTF:1H6 NTF H62 NTF:2H6 NTF H111 NTH:1H11 NTH H112 NTH:2H11 NTH H121 NTH:1H12 NTH H122 NTH:2H12 NTH H151 NTH:1H15 NTH H152 NTH:2H15 NTH H161 NTH:1H16 NTH H162 NTH:2H16 NTH H181 NTH:1H18 NTH H182 NTH:2H18 NTH H183 NTH:3H18 NTH H221 NTH:1H22 NTH H222 NTH:2H22 NTH H211 NTH:1H21 NTH H212 NTH:2H21 NTH H2C1 NTJ:1H2C NTJ H2C2 NTJ:2H2C NTJ H2C3 NTJ:3H2C NTJ H1C1 NTJ:1H1C NTJ H1C2 NTJ:2H1C NTJ H1C3 NTJ:3H1C NTJ H3C1 NTJ:1H3C NTJ H3C2 NTJ:2H3C NTJ H4C1 NTJ:1H4C NTJ H4C2 NTJ:2H4C NTJ H4C3 NTJ:3H4C NTJ HZ1 NTN:1HZ NTN HZ2 NTN:2HZ NTN H151 NTO:1H15 NTO H152 NTO:2H15 NTO H331 NTO:1H33 NTO H332 NTO:2H33 NTO H531 NTO:1H53 NTO H532 NTO:2H53 NTO H5N1 NTO:1H5N NTO H5N2 NTO:2H5N NTO H5N3 NTO:3H5N NTO H111 NTP:1H11 NTP H112 NTP:2H11 NTP H113 NTP:3H11 NTP H151 NTP:1H15 NTP H152 NTP:2H15 NTP H1D1 NTP:1H1D NTP H1D2 NTP:2H1D NTP H1D3 NTP:3H1D NTP H281 NTP:1H28 NTP H282 NTP:2H28 NTP H283 NTP:3H28 NTP H2B1 NTP:1H2B NTP H2B2 NTP:2H2B NTP H2B3 NTP:3H2B NTP H331 NTP:1H33 NTP H332 NTP:2H33 NTP HO3D NTP:DHO3 NTP HO3I NTP:IHO3 NTP H481 NTP:1H48 NTP H482 NTP:2H48 NTP H483 NTP:3H48 NTP H531 NTP:1H53 NTP H532 NTP:2H53 NTP HO5D NTP:DHO5 NTP HO5I NTP:IHO5 NTP H5N1 NTP:1H5N NTP H5N2 NTP:2H5N NTP H5N3 NTP:3H5N NTP H2 NTR: HN2 NTR H2'1 NTU:1H2* NTU H2'2 NTU:2H2* NTU H2'3 NTU:3H2* NTU HN21 NTU:1HN2 NTU HN22 NTU:2HN2 NTU H101 NTU:1H10 NTU H102 NTU:2H10 NTU H111 NTU:1H11 NTU H112 NTU:2H11 NTU H121 NTU:1H12 NTU H122 NTU:2H12 NTU H131 NTU:1H13 NTU H132 NTU:2H13 NTU H141 NTU:1H14 NTU H142 NTU:2H14 NTU H4'1 NTU:1H4* NTU H4'2 NTU:2H4* NTU H4'3 NTU:3H4* NTU HN41 NTU:1HN4 NTU HN42 NTU:2HN4 NTU H61 NTZ:1H6 NTZ H62 NTZ:2H6 NTZ H91 NU1:1H9 NU1 H92 NU1:2H9 NU1 H93 NU1:3H9 NU1 H221 NU5:1H22 NU5 H222 NU5:2H22 NU5 H231 NU5:1H23 NU5 H232 NU5:2H23 NU5 H241 NU5:1H24 NU5 H242 NU5:2H24 NU5 H251 NU5:1H25 NU5 H252 NU5:2H25 NU5 H261 NU5:1H26 NU5 H262 NU5:2H26 NU5 H91 NU5:1H9 NU5 H92 NU5:2H9 NU5 H151 NU5:1H15 NU5 H152 NU5:2H15 NU5 H141 NU5:1H14 NU5 H142 NU5:2H14 NU5 H131 NU5:1H13 NU5 H132 NU5:2H13 NU5 H121 NU5:1H12 NU5 H122 NU5:2H12 NU5 H111 NU5:1H11 NU5 H112 NU5:2H11 NU5 HN31 NUP:1HN3 NUP HN32 NUP:2HN3 NUP H1' NUP: H1* NUP H2' NUP: H2* NUP HO2' NUP:HO2* NUP H3' NUP: H3* NUP HO3' NUP:HO3* NUP H4' NUP: H4* NUP H5'1 NUP:1H5* NUP H5'2 NUP:2H5* NUP H NVA:1HN NVA H2 NVA:2HN NVA HB2 NVA:1HB NVA HB3 NVA:2HB NVA HG2 NVA:1HG NVA HG3 NVA:2HG NVA HD1 NVA:1HD NVA HD2 NVA:2HD NVA HD3 NVA:3HD NVA HAA1 NVG:1HAA NVG HAA2 NVG:2HAA NVG HAN1 NVG:1HAN NVG HAN2 NVG:2HAN NVG HAL1 NVG:1HAL NVG HAL2 NVG:2HAL NVG HAM1 NVG:1HAM NVG HAM2 NVG:2HAM NVG H71 NVI:1H7 NVI H72 NVI:2H7 NVI HCB1 NVP:1HCB NVP HCB2 NVP:2HCB NVP HCC1 NVP:1HCC NVP HCC2 NVP:2HCC NVP HCD1 NVP:1HCD NVP HCD2 NVP:2HCD NVP HCD3 NVP:3HCD NVP H12 NW1:2H1 NW1 H11 NW1:1H1 NW1 H112 NW1:2H11 NW1 H111 NW1:1H11 NW1 H102 NW1:2H10 NW1 H101 NW1:1H10 NW1 H92 NW1:2H9 NW1 H91 NW1:1H9 NW1 H82 NW1:2H8 NW1 H81 NW1:1H8 NW1 H72 NW1:2H7 NW1 H71 NW1:1H7 NW1 H9N3 NW1:3H9N NW1 H9N2 NW1:2H9N NW1 H22 NW1:2H2 NW1 H21 NW1:1H2 NW1 H2C1 NWA:1H2C NWA H2C2 NWA:2H2C NWA H3C1 NWA:1H3C NWA H3C2 NWA:2H3C NWA H6C1 NWA:1H6C NWA H6C2 NWA:2H6C NWA H6C3 NWA:3H6C NWA H8C1 NWA:1H8C NWA H8C2 NWA:2H8C NWA H8C3 NWA:3H8C NWA H9C1 NWA:1H9C NWA H9C2 NWA:2H9C NWA H9C3 NWA:3H9C NWA H101 NWA:1H10 NWA H102 NWA:2H10 NWA H103 NWA:3H10 NWA H4C1 NWA:1H4C NWA H4C2 NWA:2H4C NWA H2C1 NWB:1H2C NWB HA2 NWB:2HA NWB HA1 NWB:1HA NWB HB2 NWB:2HB NWB H6C1 NWB:1H6C NWB H6C2 NWB:2H6C NWB H63 NWB:3H6 NWB H101 NWB:1H10 NWB H102 NWB:2H10 NWB H103 NWB:3H10 NWB H8C1 NWB:1H8C NWB H8C2 NWB:2H8C NWB H8C3 NWB:3H8C NWB H141 NWB:1H14 NWB H142 NWB:2H14 NWB H9C1 NWB:1H9C NWB H9C2 NWB:2H9C NWB H9C3 NWB:3H9C NWB HBC1 NXA:1HBC NXA HBC2 NXA:2HBC NXA HBC3 NXA:3HBC NXA HD1 NXA:1HD NXA H111 NXD:1H11 NXD H112 NXD:2H11 NXD H113 NXD:3H11 NXD H31 NXD:1H3 NXD H32 NXD:2H3 NXD HB1 NXD:1HB NXD HB2 NXD:2HB NXD HB3 NXD:3HB NXD H91 NXD:1H9 NXD H92 NXD:2H9 NXD HAK1 NXD:1HAK NXD HAK2 NXD:2HAK NXD H141 NXN:1H14 NXN H142 NXN:2H14 NXN H151 NXN:1H15 NXN H152 NXN:2H15 NXN H91 NXN:1H9 NXN H92 NXN:2H9 NXN H251 NYC:1H25 NYC H252 NYC:2H25 NYC H253 NYC:3H25 NYC H261 NYC:1H26 NYC H262 NYC:2H26 NYC H181 NYC:1H18 NYC H182 NYC:2H18 NYC HPNO NYD:OHPN NYD H5N1 NYD:1H5N NYD H5N2 NYD:2H5N NYD H4N1 NYD:1H4N NYD H3NC NYD:CH3N NYD H3NO NYD:OH3N NYD H2B NYD:CH2' NYD H2'O NYD:OH2' NYD H1NC NYD:CH1N NYD H6NC NYD:CH6N NYD H5NC NYD:CH5N NYD H4NC NYD:CH4N NYD H2NC NYD:CH2N NYD HPAO NYD:OHPA NYD H5A1 NYD:1H5A NYD H5A2 NYD:2H5A NYD HB4 NYD:4H'A NYD H3AC NYD:CH3A NYD HB3 NYD:3H'A NYD HB2 NYD:2H'A NYD HBO NYD:OH'A NYD HB1 NYD:1H'A NYD H2AC NYD:CH2A NYD H8AC NYD:CH8A NYD HN61 NYD:1HN6 NYD HN62 NYD:2HN6 NYD HD11 NYG:1HD1 NYG HD12 NYG:2HD1 NYG HB11 NYG:1HB1 NYG HB12 NYG:2HB1 NYG HN1 NYG:1HN NYG HN2 NYG:2HN NYG HA31 NYG:1HA3 NYG HA32 NYG:2HA3 NYG H131 NYL:1H13 NYL H132 NYL:2H13 NYL H161 NYL:1H16 NYL H162 NYL:2H16 NYL HC61 NYM:1HC6 NYM HN31 NYM:1HN3 NYM HC71 NYM:1HC7 NYM HC72 NYM:2HC7 NYM HC73 NYM:3HC7 NYM H3'1 NYM:1H3* NYM H3'2 NYM:2H3* NYM H1'1 NYM:1H1* NYM H2'1 NYM:1H2* NYM H2'2 NYM:2H2* NYM HC31 NYM:1HC3 NYM H4'1 NYM:1H4* NYM H5'1 NYM:1H5* NYM H5'2 NYM:2H5* NYM HP31 NYM:1HP3 NYM HP21 NYM:1HP2 NYM H8N1 NYP:1H8N NYP H8N2 NYP:2H8N NYP H8N3 NYP:3H8N NYP H111 NYP:1H11 NYP HC71 NYP:1HC7 NYP HC72 NYP:2HC7 NYP H21 NYP:1H2 NYP H31 NYP:1H3 NYP H61 NYP:1H6 NYP HAQ1 NZA:1HAQ NZA HAQ2 NZA:2HAQ NZA H NZH:1HN NZH H2 NZH:2HN NZH HB2 NZH:1HB NZH HB3 NZH:2HB NZH HC NZH: H NZH HA'1 NZP:1HA' NZP HA'2 NZP:2HA' NZP HAA1 NZP:1HAA NZP HAA2 NZP:2HAA NZP HN'1 NZP:1HN' NZP HN'2 NZP:2HN' NZP HNA1 NZP:1HNA NZP HNA2 NZP:2HNA NZP HNC1 NZP:1HNC NZP HNC2 NZP:2HNC NZP HNB1 NZP:1HNB NZP HNB2 NZP:2HNB NZP HN66 NZP:6HN6 NZP HNO6 NZP:6HNO NZP HA'1 NZQ:1HA' NZQ HA'2 NZQ:2HA' NZQ HAA1 NZQ:1HAA NZQ HAA2 NZQ:2HAA NZQ HN'1 NZQ:1HN' NZQ HN'2 NZQ:2HN' NZQ HNB1 NZQ:1HNB NZQ HNB2 NZQ:2HNB NZQ HNA1 NZQ:1HNA NZQ HNA2 NZQ:2HNA NZQ H41 O1C:1H4 O1C H42 O1C:2H4 O1C H121 O1C:1H12 O1C H122 O1C:2H12 O1C H111 O1C:1H11 O1C H112 O1C:2H11 O1C H91 O1C:1H9 O1C H92 O1C:2H9 O1C H151 O1C:1H15 O1C H152 O1C:2H15 O1C H161 O1C:1H16 O1C H162 O1C:2H16 O1C H191 O1C:1H19 O1C H192 O1C:2H19 O1C H221 O1C:1H22 O1C H222 O1C:2H22 O1C H181 O1C:1H18 O1C H182 O1C:2H18 O1C H183 O1C:3H18 O1C H211 O1C:1H21 O1C H212 O1C:2H21 O1C H213 O1C:3H21 O1C H231 O1C:1H23 O1C H232 O1C:2H23 O1C H241 O1C:1H24 O1C H242 O1C:2H24 O1C H271 O1C:1H27 O1C H272 O1C:2H27 O1C H273 O1C:3H27 O1C H261 O1C:1H26 O1C H262 O1C:2H26 O1C H263 O1C:3H26 O1C H281 O1C:1H28 O1C H282 O1C:2H28 O1C H291 O1C:1H29 O1C H292 O1C:2H29 O1C H301 O1C:1H30 O1C H302 O1C:2H30 O1C HOP2 O2C:2HOP O2C H5'1 O2C:1H5* O2C H5'2 O2C:2H5* O2C H4' O2C: H4* O2C H1' O2C: H1* O2C HN41 O2C:1HN4 O2C HN42 O2C:2HN4 O2C H2' O2C: H2* O2C HO'2 O2C:2HO* O2C H3'1 O2C:1H3* O2C H3'2 O2C:2H3* O2C HOP3 O2C:3HOP O2C H71 O33:1H7 O33 H72 O33:2H7 O33 H141 O33:1H14 O33 H142 O33:2H14 O33 H181 O33:1H18 O33 H182 O33:2H18 O33 H183 O33:3H18 O33 H191 O33:1H19 O33 H192 O33:2H19 O33 H193 O33:3H19 O33 H201 O33:1H20 O33 H202 O33:2H20 O33 H211 O33:1H21 O33 H212 O33:2H21 O33 H221 O33:1H22 O33 H222 O33:2H22 O33 H223 O33:3H22 O33 H351 O33:1H35 O33 H352 O33:2H35 O33 HO41 O4M:1HO4 O4M HO42 O4M:2HO4 O4M HO31 O4M:1HO3 O4M HO32 O4M:2HO3 O4M HO21 O4M:1HO2 O4M HO22 O4M:2HO2 O4M HO11 O4M:1HO1 O4M HO12 O4M:2HO1 O4M H21 OAA:1H2 OAA H22 OAA:2H2 OAA HB11 OAC:1HB1 OAC HB12 OAC:2HB1 OAC HB21 OAC:1HB2 OAC HB22 OAC:2HB2 OAC HB23 OAC:3HB2 OAC HOA2 OAD:2HOA OAD H5'1 OAD:1H5* OAD H5'2 OAD:2H5* OAD H'4 OAD:4H* OAD H'3 OAD:3H* OAD HO'3 OAD:3HO* OAD H'2 OAD:2H* OAD HO'2 OAD:2HO* OAD H'1 OAD:1H* OAD H61 OAD:1H6 OAD H62 OAD:2H6 OAD HOB2 OAD:2HOB OAD H5R1 OAD:1H5R OAD H5R2 OAD:2H5R OAD HR'4 OAD:4HR* OAD HR'3 OAD:3HR* OAD HOR3 OAD:3HOR OAD HR'2 OAD:2HR* OAD HR'1 OAD:1HR* OAD HOR1 OAD:1HOR OAD H7R1 OAD:1H7R OAD H7R2 OAD:2H7R OAD H7R3 OAD:3H7R OAD H151 OAL:1H15 OAL H152 OAL:2H15 OAL HAH1 OAN:1HAH OAN HAH2 OAN:2HAH OAN HAH3 OAN:3HAH OAN HAF1 OAN:1HAF OAN HAF2 OAN:2HAF OAN H11 OAP:1H1 OAP H12A OAP:2H1 OAP H31 OAP:1H3 OAP H32 OAP:2H3 OAP H311 OAP:1H31 OAP H312 OAP:2H31 OAP H171 OAP:1H17 OAP H172 OAP:2H17 OAP H221 OAP:1H22 OAP H222 OAP:2H22 OAP H231 OAP:1H23 OAP H232 OAP:2H23 OAP H241 OAP:1H24 OAP H242 OAP:2H24 OAP H251 OAP:1H25 OAP H252 OAP:2H25 OAP H261 OAP:1H26 OAP H262 OAP:2H26 OAP H271 OAP:1H27 OAP H272 OAP:2H27 OAP HN11 OAR:1HN1 OAR HN12 OAR:2HN1 OAR HN41 OAR:1HN4 OAR HN42 OAR:2HN4 OAR H21 OAR:1H2 OAR H22 OAR:2H2 OAR H31 OAR:1H3 OAR H32 OAR:2H3 OAR H41 OAR:1H4 OAR H42 OAR:2H4 OAR H61 OAR:1H6 OAR H62 OAR:2H6 OAR H2 OAS: HN2 OAS HB2 OAS:1HB OAS HB3 OAS:2HB OAS HC21 OAS:1HC2 OAS HC22 OAS:2HC2 OAS HC23 OAS:3HC2 OAS H41 OBE:1H4 OBE H42 OBE:2H4 OBE H61 OBE:1H6 OBE H62 OBE:2H6 OBE H71 OBE:1H7 OBE H72 OBE:2H7 OBE H161 OBE:1H16 OBE H162 OBE:2H16 OBE H163 OBE:3H16 OBE H81 OBI:1H8 OBI H82 OBI:2H8 OBI H71 OBI:1H7 OBI H72 OBI:2H7 OBI H21 OBN:1H2 OBN H22A OBN:2H2 OBN H41 OBN:1H4 OBN H42 OBN:2H4 OBN H61 OBN:1H6 OBN H62 OBN:2H6 OBN H71 OBN:1H7 OBN H72 OBN:2H7 OBN H121 OBN:1H12 OBN H122 OBN:2H12 OBN H151 OBN:1H15 OBN H152 OBN:2H15 OBN H161 OBN:1H16 OBN H162 OBN:2H16 OBN H181 OBN:1H18 OBN H182 OBN:2H18 OBN H183 OBN:3H18 OBN H191 OBN:1H19 OBN H192 OBN:2H19 OBN H211 OBN:1H21 OBN H212 OBN:2H21 OBN H6'1 OBN:1H6' OBN H6'2 OBN:2H6' OBN H6'3 OBN:3H6' OBN HO2' OBN:'HO2 OBN HO3' OBN:'HO3 OBN HO4' OBN:'HO4 OBN H101 OBS:1H10 OBS H102 OBS:2H10 OBS H9C1 OBS:1H9C OBS H9C2 OBS:2H9C OBS H7C1 OBS:1H7C OBS H7C2 OBS:2H7C OBS H5C1 OBS:1H5C OBS H5C2 OBS:2H5C OBS H2C1 OBS:1H2C OBS H2C2 OBS:2H2C OBS HEC1 OBS:1HEC OBS HEC2 OBS:2HEC OBS HDC1 OBS:1HDC OBS HDC2 OBS:2HDC OBS HGC1 OBS:1HGC OBS HGC2 OBS:2HGC OBS HBC1 OBS:1HBC OBS HBC2 OBS:2HBC OBS HN1 OBS:1HN OBS HN2 OBS:2HN OBS HO11 OC1:1HO1 OC1 HO12 OC1:2HO1 OC1 HO11 OC2:1HO1 OC2 HO12 OC2:2HO1 OC2 HO13 OC2:3HO1 OC2 HO14 OC2:4HO1 OC2 HO11 OC3:1HO1 OC3 HO12 OC3:2HO1 OC3 HO21 OC3:1HO2 OC3 HO22 OC3:2HO2 OC3 HO31 OC3:1HO3 OC3 HO32 OC3:2HO3 OC3 HO11 OC4:1HO1 OC4 HO12 OC4:2HO1 OC4 HO21 OC4:1HO2 OC4 HO22 OC4:2HO2 OC4 HO31 OC4:1HO3 OC4 HO32 OC4:2HO3 OC4 HO41 OC4:1HO4 OC4 HO42 OC4:2HO4 OC4 HO11 OC5:1HO1 OC5 HO12 OC5:2HO1 OC5 HO21 OC5:1HO2 OC5 HO22 OC5:2HO2 OC5 HO31 OC5:1HO3 OC5 HO32 OC5:2HO3 OC5 HO41 OC5:1HO4 OC5 HO42 OC5:2HO4 OC5 HO51 OC5:1HO5 OC5 HO52 OC5:2HO5 OC5 HO11 OC6:1HO1 OC6 HO12 OC6:2HO1 OC6 HO21 OC6:1HO2 OC6 HO22 OC6:2HO2 OC6 HO31 OC6:1HO3 OC6 HO32 OC6:2HO3 OC6 HO41 OC6:1HO4 OC6 HO42 OC6:2HO4 OC6 HO51 OC6:1HO5 OC6 HO52 OC6:2HO5 OC6 HO61 OC6:1HO6 OC6 HO62 OC6:2HO6 OC6 HO11 OC7:1HO1 OC7 HO12 OC7:2HO1 OC7 HO21 OC7:1HO2 OC7 HO22 OC7:2HO2 OC7 HO31 OC7:1HO3 OC7 HO32 OC7:2HO3 OC7 HO41 OC7:1HO4 OC7 HO42 OC7:2HO4 OC7 HO51 OC7:1HO5 OC7 HO52 OC7:2HO5 OC7 HO61 OC7:1HO6 OC7 HO62 OC7:2HO6 OC7 HO71 OC7:1HO7 OC7 HO72 OC7:2HO7 OC7 HO11 OC8:1HO1 OC8 HO12 OC8:2HO1 OC8 HO21 OC8:1HO2 OC8 HO22 OC8:2HO2 OC8 HO31 OC8:1HO3 OC8 HO32 OC8:2HO3 OC8 HO41 OC8:1HO4 OC8 HO42 OC8:2HO4 OC8 HO51 OC8:1HO5 OC8 HO52 OC8:2HO5 OC8 HO61 OC8:1HO6 OC8 HO62 OC8:2HO6 OC8 HO71 OC8:1HO7 OC8 HO72 OC8:2HO7 OC8 HO81 OC8:1HO8 OC8 HO82 OC8:2HO8 OC8 HAA1 OC9:1HAA OC9 HAA2 OC9:2HAA OC9 HAA3 OC9:3HAA OC9 HAC1 OC9:1HAC OC9 HAC2 OC9:2HAC OC9 HAE1 OC9:1HAE OC9 HAE2 OC9:2HAE OC9 HAG1 OC9:1HAG OC9 HAG2 OC9:2HAG OC9 HAI1 OC9:1HAI OC9 HAI2 OC9:2HAI OC9 HAH1 OC9:1HAH OC9 HAH2 OC9:2HAH OC9 HAF1 OC9:1HAF OC9 HAF2 OC9:2HAF OC9 HAD1 OC9:1HAD OC9 HAD2 OC9:2HAD OC9 H21 OCA:1H2 OCA H22 OCA:2H2 OCA H31 OCA:1H3 OCA H32 OCA:2H3 OCA H41 OCA:1H4 OCA H42 OCA:2H4 OCA H51 OCA:1H5 OCA H52 OCA:2H5 OCA H61 OCA:1H6 OCA H62 OCA:2H6 OCA H71 OCA:1H7 OCA H72 OCA:2H7 OCA H81 OCA:1H8 OCA H82 OCA:2H8 OCA H83 OCA:3H8 OCA HAA1 OCB:1HAA OCB HAA2 OCB:2HAA OCB HAA3 OCB:3HAA OCB HAB1 OCB:1HAB OCB HAB2 OCB:2HAB OCB HAC1 OCB:1HAC OCB HAC2 OCB:2HAC OCB HAD1 OCB:1HAD OCB HAD2 OCB:2HAD OCB HAE1 OCB:1HAE OCB HAE2 OCB:2HAE OCB HAF1 OCB:1HAF OCB HAF2 OCB:2HAF OCB HAG1 OCB:1HAG OCB HAG2 OCB:2HAG OCB HAQ1 OCB:1HAQ OCB HAQ2 OCB:2HAQ OCB HAO1 OCB:1HAO OCB HAO2 OCB:2HAO OCB HAT1 OCB:1HAT OCB HAT2 OCB:2HAT OCB HAT3 OCB:3HAT OCB HAJ1 OCB:1HAJ OCB HAJ2 OCB:2HAJ OCB HAJ3 OCB:3HAJ OCB HAM1 OCB:1HAM OCB HAM2 OCB:2HAM OCB HAM3 OCB:3HAM OCB H41 OCC:1H4 OCC H42 OCC:2H4 OCC H121 OCC:1H12 OCC H122 OCC:2H12 OCC H111 OCC:1H11 OCC H112 OCC:2H11 OCC H91 OCC:1H9 OCC H92 OCC:2H9 OCC H151 OCC:1H15 OCC H152 OCC:2H15 OCC H161 OCC:1H16 OCC H162 OCC:2H16 OCC H191 OCC:1H19 OCC H192 OCC:2H19 OCC H221 OCC:1H22 OCC H222 OCC:2H22 OCC H181 OCC:1H18 OCC H182 OCC:2H18 OCC H183 OCC:3H18 OCC H211 OCC:1H21 OCC H212 OCC:2H21 OCC H213 OCC:3H21 OCC H231 OCC:1H23 OCC H232 OCC:2H23 OCC H241 OCC:1H24 OCC H242 OCC:2H24 OCC H271 OCC:1H27 OCC H272 OCC:2H27 OCC H273 OCC:3H27 OCC H261 OCC:1H26 OCC H262 OCC:2H26 OCC H263 OCC:3H26 OCC H291 OCC:1H29 OCC H292 OCC:2H29 OCC H301 OCC:1H30 OCC H302 OCC:2H30 OCC H311 OCC:1H31 OCC H312 OCC:2H31 OCC HO11 OCL:1HO1 OCL HO12 OCL:2HO1 OCL HO11 OCM:1HO1 OCM HO12 OCM:2HO1 OCM HO21 OCM:1HO2 OCM HO22 OCM:2HO2 OCM HO31 OCM:1HO3 OCM HO32 OCM:2HO3 OCM HO11 OCN:1HO1 OCN HO12 OCN:2HO1 OCN HO13 OCN:3HO1 OCN HO14 OCN:4HO1 OCN HO11 OCO:1HO1 OCO HO12 OCO:2HO1 OCO HO21 OCO:1HO2 OCO HO22 OCO:2HO2 OCO HO31 OCO:1HO3 OCO HO32 OCO:2HO3 OCO HO41 OCO:1HO4 OCO HO42 OCO:2HO4 OCO HO51 OCO:1HO5 OCO HO52 OCO:2HO5 OCO HO61 OCO:1HO6 OCO HO62 OCO:2HO6 OCO H11 OCP:1H1 OCP H12 OCP:2H1 OCP H31 OCP:1H3 OCP H32 OCP:2H3 OCP H41 OCP:1H4 OCP H42 OCP:2H4 OCP H51 OCP:1H5 OCP H52 OCP:2H5 OCP H61 OCP:1H6 OCP H62 OCP:2H6 OCP H71 OCP:1H7 OCP H72 OCP:2H7 OCP H81 OCP:1H8 OCP H82 OCP:2H8 OCP H91 OCP:1H9 OCP H92 OCP:2H9 OCP H101 OCP:1H10 OCP H102 OCP:2H10 OCP H111 OCP:1H11 OCP H112 OCP:2H11 OCP H113 OCP:3H11 OCP H131 OCP:1H13 OCP H132 OCP:2H13 OCP H141 OCP:1H14 OCP H142 OCP:2H14 OCP H151 OCP:1H15 OCP H152 OCP:2H15 OCP H161 OCP:1H16 OCP H162 OCP:2H16 OCP H171 OCP:1H17 OCP H172 OCP:2H17 OCP H181 OCP:1H18 OCP H182 OCP:2H18 OCP H191 OCP:1H19 OCP H192 OCP:2H19 OCP H201 OCP:1H20 OCP H202 OCP:2H20 OCP H203 OCP:3H20 OCP H231 OCP:1H23 OCP H232 OCP:2H23 OCP H241 OCP:1H24 OCP H242 OCP:2H24 OCP H251 OCP:1H25 OCP H252 OCP:2H25 OCP H261 OCP:1H26 OCP H262 OCP:2H26 OCP H271 OCP:1H27 OCP H272 OCP:2H27 OCP H281 OCP:1H28 OCP H282 OCP:2H28 OCP H291 OCP:1H29 OCP H292 OCP:2H29 OCP H301 OCP:1H30 OCP H302 OCP:2H30 OCP H303 OCP:3H30 OCP HMK1 OCQ:1HMK OCQ HMK2 OCQ:2HMK OCQ HN1 OCQ:1HN OCQ HN2 OCQ:2HN OCQ HB1 OCQ:1HB OCQ HB2 OCQ:2HB OCQ HAE1 OCQ:1HAE OCQ HAE2 OCQ:2HAE OCQ HD11 OCQ:1HD1 OCQ HD12 OCQ:2HD1 OCQ H OCS:1HN OCS HN2 OCS:2HN OCS HB2 OCS:1HB OCS HB3 OCS:2HB OCS H11 OCT:1H1 OCT H12 OCT:2H1 OCT H13 OCT:3H1 OCT H21 OCT:1H2 OCT H22 OCT:2H2 OCT H31 OCT:1H3 OCT H32 OCT:2H3 OCT H41 OCT:1H4 OCT H42 OCT:2H4 OCT H51 OCT:1H5 OCT H52 OCT:2H5 OCT H61 OCT:1H6 OCT H62 OCT:2H6 OCT H71 OCT:1H7 OCT H72 OCT:2H7 OCT H81 OCT:1H8 OCT H82 OCT:2H8 OCT H83 OCT:3H8 OCT HC2 OCV:2HC OCV HC31 OCV:1HC3 OCV HC32 OCV:2HC3 OCV HC41 OCV:1HC4 OCV HC42 OCV:2HC4 OCV HC71 OCV:1HC7 OCV HC72 OCV:2HC7 OCV HN11 OCV:1HN1 OCV HC21 OCV:1HC2 OCV H141 OCV:1H14 OCV H142 OCV:2H14 OCV H161 OCV:1H16 OCV H162 OCV:2H16 OCV HS17 OCV:17HS OCV HO91 OCV:1HO9 OCV HC03 OCV:3HC0 OCV HC23 OCV:3HC2 OCV H331 OCV:1H33 OCV H332 OCV:2H33 OCV H333 OCV:3H33 OCV H371 OCV:1H37 OCV H372 OCV:2H37 OCV H373 OCV:3H37 OCV HO34 OCV:4HO3 OCV H OCY:1HN OCY H2 OCY:2HN OCY HB2 OCY:1HB OCY HB3 OCY:2HB OCY HD2 OCY:1HD OCY HD3 OCY:2HD OCY HE2 OCY:1HE OCY HE3 OCY:2HE OCY HZ OCY: HOZ OCY H ODA:1HN ODA H2 ODA:2HN ODA HA1 ODA:1HA ODA HB2 ODA:1HB ODA HB3 ODA:2HB ODA HG2 ODA:1HG ODA HG3 ODA:2HG ODA HA2 ODA:1HA2 ODA HB23 ODA:1HB2 ODA HB22 ODA:2HB2 ODA HG23 ODA:1HG2 ODA HG22 ODA:2HG2 ODA HD22 ODA:1HD2 ODA HD23 ODA:2HD2 ODA H21 ODD:1H2 ODD H22 ODD:2H2 ODD H31 ODD:1H3 ODD H32 ODD:2H3 ODD H41 ODD:1H4 ODD H42 ODD:2H4 ODD H51 ODD:1H5 ODD H52 ODD:2H5 ODD H61 ODD:1H6 ODD H62 ODD:2H6 ODD H71 ODD:1H7 ODD H72 ODD:2H7 ODD H81 ODD:1H8 ODD H82 ODD:2H8 ODD H91 ODD:1H9 ODD H92 ODD:2H9 ODD H141 ODD:1H14 ODD H142 ODD:2H14 ODD H151 ODD:1H15 ODD H152 ODD:2H15 ODD H161 ODD:1H16 ODD H162 ODD:2H16 ODD H171 ODD:1H17 ODD H172 ODD:2H17 ODD H181 ODD:1H18 ODD H182 ODD:2H18 ODD H183 ODD:3H18 ODD HAJ1 ODE:1HAJ ODE HAJ2 ODE:2HAJ ODE HAU1 ODE:1HAU ODE HAU2 ODE:2HAU ODE HAU3 ODE:3HAU ODE HAS1 ODE:1HAS ODE HAS2 ODE:2HAS ODE HAG1 ODE:1HAG ODE HAG2 ODE:2HAG ODE HAG3 ODE:3HAG ODE HAC1 ODI:1HAC ODI HAC2 ODI:2HAC ODI HAE1 ODI:1HAE ODI HAE2 ODI:2HAE ODI HAG1 ODI:1HAG ODI HAG2 ODI:2HAG ODI HAI1 ODI:1HAI ODI HAI2 ODI:2HAI ODI HAJ1 ODI:1HAJ ODI HAJ2 ODI:2HAJ ODI HAH1 ODI:1HAH ODI HAH2 ODI:2HAH ODI HAF1 ODI:1HAF ODI HAF2 ODI:2HAF ODI HAD1 ODI:1HAD ODI HAD2 ODI:2HAD ODI HOP2 ODP:2HOP ODP HOP3 ODP:3HOP ODP H2B ODP:AH2* ODP H3B ODP:AH3* ODP HO3A ODP:AHO3 ODP H1B ODP:AH1* ODP H8A ODP: AH8 ODP H2A ODP: AH2 ODP H62A ODP:AH62 ODP H61A ODP:AH61 ODP H4B ODP:AH4* ODP H51A ODP:AH51 ODP H52A ODP:AH52 ODP HOA2 ODP:2HOA ODP H51N ODP:NH51 ODP H52N ODP:NH52 ODP H4D ODP:NH4* ODP H1D ODP:NH1* ODP H2D ODP:NH2* ODP HO2N ODP:NHO2 ODP H3D ODP:NH3* ODP HO3N ODP:NHO3 ODP H2N ODP: NH2 ODP H3N ODP: NH3 ODP H72N ODP:NH72 ODP H71N ODP:NH71 ODP H5N ODP: NH5 ODP H6N ODP: NH6 ODP H21 ODS:1H2 ODS H22 ODS:2H2 ODS H31 ODS:1H3 ODS H32 ODS:2H3 ODS HM1 ODS:1HM ODS HM2 ODS:2HM ODS HM3 ODS:3HM ODS H51 ODS:1H5 ODS H52 ODS:2H5 ODS H61 ODS:1H6 ODS H62 ODS:2H6 ODS H21 ODT:1H2 ODT H22 ODT:2H2 ODT H31 ODT:1H3 ODT H32 ODT:2H3 ODT H41 ODT:1H4 ODT H42 ODT:2H4 ODT H51 ODT:1H5 ODT H52 ODT:2H5 ODT H61 ODT:1H6 ODT H62 ODT:2H6 ODT H71 ODT:1H7 ODT H72 ODT:2H7 ODT H81 ODT:1H8 ODT H82 ODT:2H8 ODT H91 ODT:1H9 ODT H92 ODT:2H9 ODT H101 ODT:1H10 ODT H102 ODT:2H10 ODT H171 ODT:1H17 ODT H172 ODT:2H17 ODT H181 ODT:1H18 ODT H182 ODT:2H18 ODT H183 ODT:3H18 ODT H131 OEF:1H13 OEF H132 OEF:2H13 OEF H141 OEF:1H14 OEF H142 OEF:2H14 OEF H161 OEF:1H16 OEF H162 OEF:2H16 OEF H163 OEF:3H16 OEF H171 OEF:1H17 OEF H172 OEF:2H17 OEF H173 OEF:3H17 OEF HC11 OES:1HC1 OES HC12 OES:2HC1 OES HC13 OES:3HC1 OES HC21 OES:1HC2 OES HC22 OES:2HC2 OES HC31 OES:1HC3 OES HC32 OES:2HC3 OES HC41 OES:1HC4 OES HC42 OES:2HC4 OES HC51 OES:1HC5 OES HC52 OES:2HC5 OES HC61 OES:1HC6 OES HC62 OES:2HC6 OES HC71 OES:1HC7 OES HC72 OES:2HC7 OES HC81 OES:1HC8 OES HC82 OES:2HC8 OES H221 OES:1H22 OES H222 OES:2H22 OES H231 OES:1H23 OES H232 OES:2H23 OES HO31 OES:1HO3 OES H11 OET:1H1 OET H12 OET:2H1 OET H21 OET:1H2 OET H22 OET:2H2 OET H23 OET:3H2 OET HO11 OF1:1HO1 OF1 HO12 OF1:2HO1 OF1 HO11 OF3:1HO1 OF3 HO12 OF3:2HO1 OF3 H171 OFF:1H17 OFF H161 OFF:1H16 OFF H131 OFF:1H13 OFF H132 OFF:2H13 OFF H81 OFF:1H8 OFF H71 OFF:1H7 OFF HN1 OFY:1HN OFY HN2 OFY:2HN OFY HB1 OFY:1HB OFY HB2 OFY:2HB OFY H4C1 OGA:1H4C OGA H4C2 OGA:2H4C OGA HNB1 OGG:1HNB OGG HNB2 OGG:2HNB OGG HD1 OGG:1HD OGG HD2 OGG:2HD OGG HF1 OGG:1HF OGG HF2 OGG:2HF OGG HG1 OGG:1HG OGG HG2 OGG:2HG OGG HI1 OGG:1HI OGG HI2 OGG:2HI OGG HNK1 OGG:1HNK OGG HNK2 OGG:2HNK OGG HC61 OGT:1HC6 OGT HC62 OGT:2HC6 OGT HC11 OGT:1HC1 OGT HC12 OGT:2HC1 OGT HC21 OGT:1HC2 OGT HC22 OGT:2HC2 OGT HC23 OGT:3HC2 OGT H151 OHA:1H15 OHA H152 OHA:2H15 OHA H141 OHA:1H14 OHA H142 OHA:2H14 OHA H131 OHA:1H13 OHA H132 OHA:2H13 OHA H121 OHA:1H12 OHA H122 OHA:2H12 OHA H111 OHA:1H11 OHA H112 OHA:2H11 OHA H101 OHA:1H10 OHA H102 OHA:2H10 OHA H91 OHA:1H9 OHA H92 OHA:2H9 OHA H81 OHA:1H8 OHA H82 OHA:2H8 OHA H61 OHA:1H6 OHA H62 OHA:2H6 OHA H51 OHA:1H5 OHA H52 OHA:2H5 OHA H41 OHA:1H4 OHA H42 OHA:2H4 OHA H31 OHA:1H3 OHA H32 OHA:2H3 OHA H21 OHA:1H2 OHA H22 OHA:2H2 OHA H11 OHA:1H1 OHA H12 OHA:2H1 OHA H13 OHA:3H1 OHA H11 OHE:1H1 OHE H12 OHE:2H1 OHE H13 OHE:3H1 OHE H21 OHE:1H2 OHE H22 OHE:2H2 OHE H201 OHH:1H20 OHH H202 OHH:2H20 OHH H203 OHH:3H20 OHH H241 OHH:1H24 OHH H242 OHH:2H24 OHH H231 OHH:1H23 OHH H232 OHH:2H23 OHH H221 OHH:1H22 OHH H222 OHH:2H22 OHH H251 OHH:1H25 OHH H252 OHH:2H25 OHH HB1 OHI:1HB OHI HB2 OHI:2HB OHI HN1 OHI:1HN OHI HN2 OHI:2HN OHI H211 OHM:1H21 OHM H212 OHM:2H21 OHM H213 OHM:3H21 OHM H201 OHM:1H20 OHM H202 OHM:2H20 OHM H191 OHM:1H19 OHM H192 OHM:2H19 OHM H181 OHM:1H18 OHM H182 OHM:2H18 OHM H171 OHM:1H17 OHM H172 OHM:2H17 OHM H161 OHM:1H16 OHM H162 OHM:2H16 OHM H151 OHM:1H15 OHM H152 OHM:2H15 OHM H141 OHM:1H14 OHM H142 OHM:2H14 OHM H131 OHM:1H13 OHM H132 OHM:2H13 OHM H101 OHM:1H10 OHM H102 OHM:2H10 OHM H51 OHM:1H5 OHM H52 OHM:2H5 OHM H41 OHM:1H4 OHM H42 OHM:2H4 OHM H211 OHN:1H21 OHN H212 OHN:2H21 OHN H213 OHN:3H21 OHN H201 OHN:1H20 OHN H202 OHN:2H20 OHN H191 OHN:1H19 OHN H192 OHN:2H19 OHN H181 OHN:1H18 OHN H182 OHN:2H18 OHN H171 OHN:1H17 OHN H172 OHN:2H17 OHN H161 OHN:1H16 OHN H162 OHN:2H16 OHN H151 OHN:1H15 OHN H152 OHN:2H15 OHN H141 OHN:1H14 OHN H142 OHN:2H14 OHN H131 OHN:1H13 OHN H132 OHN:2H13 OHN H101 OHN:1H10 OHN H102 OHN:2H10 OHN H5C1 OHN:1H5C OHN H5C2 OHN:2H5C OHN H4C1 OHN:1H4C OHN H4C2 OHN:2H4C OHN H21 OHO:1H2 OHO H22 OHO:2H2 OHO H31 OHO:1H3 OHO H32 OHO:2H3 OHO H41 OHO:1H4 OHO H42 OHO:2H4 OHO H51 OHO:1H5 OHO H52 OHO:2H5 OHO H61 OHO:1H6 OHO H62 OHO:2H6 OHO H71 OHP:1H7 OHP H72 OHP:2H7 OHP HA1 OHS:1HA OHS H2 OHS: HAC OHS H OHS: HAA OHS HB2 OHS:1HB OHS HB3 OHS:2HB OHS HXT OHS: HO1 OHS HZ OHS: HO2 OHS H101 OHT:1H10 OHT H102 OHT:2H10 OHT H103 OHT:3H10 OHT H91 OHT:1H9 OHT H92 OHT:2H9 OHT H231 OHT:1H23 OHT H232 OHT:2H23 OHT H241 OHT:1H24 OHT H242 OHT:2H24 OHT H251 OHT:1H25 OHT H252 OHT:2H25 OHT H253 OHT:3H25 OHT H261 OHT:1H26 OHT H262 OHT:2H26 OHT H263 OHT:3H26 OHT H71 OI1:1H7 OI1 H72 OI1:2H7 OI1 H141 OI1:1H14 OI1 H142 OI1:2H14 OI1 H151 OI1:1H15 OI1 H152 OI1:2H15 OI1 H221 OI1:1H22 OI1 H222 OI1:2H22 OI1 H231 OI1:1H23 OI1 H232 OI1:2H23 OI1 H241 OI1:1H24 OI1 H242 OI1:2H24 OI1 H243 OI1:3H24 OI1 H251 OI1:1H25 OI1 H252 OI1:2H25 OI1 H321 OI1:1H32 OI1 H322 OI1:2H32 OI1 H OIC: HN OIC HB2 OIC:1HB OIC HB3 OIC:2HB OIC H41 OIC:1H4 OIC H42 OIC:2H4 OIC H51 OIC:1H5 OIC H52 OIC:2H5 OIC H61 OIC:1H6 OIC H62 OIC:2H6 OIC H71 OIC:1H7 OIC H72 OIC:2H7 OIC H101 OIN:1H10 OIN H102 OIN:2H10 OIN H103 OIN:3H10 OIN H171 OIN:1H17 OIN H172 OIN:2H17 OIN H161 OIN:1H16 OIN H162 OIN:2H16 OIN H141 OIN:1H14 OIN H142 OIN:2H14 OIN H121 OIN:1H12 OIN H122 OIN:2H12 OIN H81 OIN:1H8 OIN H82 OIN:2H8 OIN HOP2 OIP:2HOP OIP HOP3 OIP:3HOP OIP H5' OIP:1H5* OIP H5'' OIP:2H5* OIP H4' OIP: H4* OIP H3' OIP: H3* OIP HO3' OIP:*HO3 OIP H2' OIP:1H2* OIP H2'' OIP:2H2* OIP H1' OIP: H1* OIP H211 OIR:1H21 OIR H212 OIR:2H21 OIR H191 OIR:1H19 OIR H192 OIR:2H19 OIR H193 OIR:3H19 OIR H11 OIR:1H1 OIR H12 OIR:2H1 OIR H41 OIS:1H4 OIS H42 OIS:2H4 OIS H51 OIS:1H5 OIS H52 OIS:2H5 OIS H81 OIS:1H8 OIS H82 OIS:2H8 OIS H171 OIS:1H17 OIS H172 OIS:2H17 OIS H173 OIS:3H17 OIS H181 OIS:1H18 OIS H182 OIS:2H18 OIS H183 OIS:3H18 OIS H221 OIS:1H22 OIS H222 OIS:2H22 OIS H223 OIS:3H22 OIS H231 OIS:1H23 OIS H232 OIS:2H23 OIS H233 OIS:3H23 OIS H402 OIS:2H40 OIS H101 OIS:1H10 OIS H102 OIS:2H10 OIS H251 OIS:1H25 OIS H252 OIS:2H25 OIS H253 OIS:3H25 OIS H31 OKA:1H3 OKA H32 OKA:2H3 OKA H41 OKA:1H4 OKA H51 OKA:1H5 OKA H52 OKA:2H5 OKA H61 OKA:1H6 OKA H62 OKA:2H6 OKA H71 OKA:1H7 OKA H91 OKA:1H9 OKA H111 OKA:1H11 OKA H112 OKA:2H11 OKA H121 OKA:1H12 OKA H131 OKA:1H13 OKA H141 OKA:1H14 OKA H151 OKA:1H15 OKA H161 OKA:1H16 OKA H171 OKA:1H17 OKA H172 OKA:2H17 OKA H181 OKA:1H18 OKA H182 OKA:2H18 OKA H201 OKA:1H20 OKA H202 OKA:2H20 OKA H211 OKA:1H21 OKA H212 OKA:2H21 OKA H221 OKA:1H22 OKA H231 OKA:1H23 OKA H241 OKA:1H24 OKA H261 OKA:1H26 OKA H271 OKA:1H27 OKA H281 OKA:1H28 OKA H282 OKA:2H28 OKA H291 OKA:1H29 OKA H301 OKA:1H30 OKA H311 OKA:1H31 OKA H321 OKA:1H32 OKA H322 OKA:2H32 OKA H331 OKA:1H33 OKA H332 OKA:2H33 OKA H351 OKA:1H35 OKA H352 OKA:2H35 OKA H361 OKA:1H36 OKA H362 OKA:2H36 OKA H371 OKA:1H37 OKA H372 OKA:2H37 OKA H381 OKA:1H38 OKA H382 OKA:2H38 OKA H391 OKA:1H39 OKA H392 OKA:2H39 OKA H393 OKA:3H39 OKA H401 OKA:1H40 OKA H402 OKA:2H40 OKA H403 OKA:3H40 OKA H411 OKA:1H41 OKA H412 OKA:2H41 OKA H421 OKA:1H42 OKA H422 OKA:2H42 OKA H423 OKA:3H42 OKA H431 OKA:1H43 OKA H432 OKA:2H43 OKA H433 OKA:3H43 OKA H441 OKA:1H44 OKA H442 OKA:2H44 OKA H443 OKA:3H44 OKA H21 OLA:1H2 OLA H22 OLA:2H2 OLA H31 OLA:1H3 OLA H32 OLA:2H3 OLA H41 OLA:1H4 OLA H42 OLA:2H4 OLA H51 OLA:1H5 OLA H52 OLA:2H5 OLA H61 OLA:1H6 OLA H62 OLA:2H6 OLA H71 OLA:1H7 OLA H72 OLA:2H7 OLA H81 OLA:1H8 OLA H82 OLA:2H8 OLA H111 OLA:1H11 OLA H112 OLA:2H11 OLA H121 OLA:1H12 OLA H122 OLA:2H12 OLA H131 OLA:1H13 OLA H132 OLA:2H13 OLA H141 OLA:1H14 OLA H142 OLA:2H14 OLA H151 OLA:1H15 OLA H152 OLA:2H15 OLA H161 OLA:1H16 OLA H162 OLA:2H16 OLA H171 OLA:1H17 OLA H172 OLA:2H17 OLA H181 OLA:1H18 OLA H182 OLA:2H18 OLA H183 OLA:3H18 OLA HB1 OLE:1HB OLE HB2 OLE:2HB OLE HD11 OLE:1HD1 OLE HD12 OLE:2HD1 OLE HD13 OLE:3HD1 OLE HD21 OLE:1HD2 OLE HD22 OLE:2HD2 OLE HD23 OLE:3HD2 OLE H21 OLI:1H2 OLI H22 OLI:2H2 OLI H31 OLI:1H3 OLI H32 OLI:2H3 OLI H41 OLI:1H4 OLI H42 OLI:2H4 OLI H51 OLI:1H5 OLI H52 OLI:2H5 OLI H61 OLI:1H6 OLI H62 OLI:2H6 OLI H71 OLI:1H7 OLI H72 OLI:2H7 OLI H81 OLI:1H8 OLI H82 OLI:2H8 OLI H111 OLI:1H11 OLI H112 OLI:2H11 OLI H121 OLI:1H12 OLI H122 OLI:2H12 OLI H131 OLI:1H13 OLI H132 OLI:2H13 OLI H141 OLI:1H14 OLI H142 OLI:2H14 OLI H151 OLI:1H15 OLI H152 OLI:2H15 OLI H161 OLI:1H16 OLI H162 OLI:2H16 OLI H171 OLI:1H17 OLI H172 OLI:2H17 OLI H181 OLI:1H18 OLI H182 OLI:2H18 OLI H183 OLI:3H18 OLI HB1 OLN:1HB OLN HB2 OLN:2HB OLN HG1 OLN:1HG OLN HG2 OLN:2HG OLN HD1 OLN:1HD OLN HD2 OLN:2HD OLN HH21 OLN:1HH2 OLN HH22 OLN:2HH2 OLN H21 OLN:1H2 OLN H22 OLN:2H2 OLN H23 OLN:3H2 OLN H31 OLO:1H3 OLO H32 OLO:2H3 OLO H33 OLO:3H3 OLO H41 OLO:1H4 OLO H42 OLO:2H4 OLO H51 OLO:1H5 OLO H52 OLO:2H5 OLO H61 OLO:1H6 OLO H62 OLO:2H6 OLO HAB1 OLP:1HAB OLP HAB2 OLP:2HAB OLP HAB3 OLP:3HAB OLP HAA1 OLP:1HAA OLP HAA2 OLP:2HAA OLP HAA3 OLP:3HAA OLP HAK1 OLP:1HAK OLP HAK2 OLP:2HAK OLP HAJ1 OLP:1HAJ OLP HAJ2 OLP:2HAJ OLP H OLT:1HN OLT H2 OLT:2HN OLT HB OLT: HCB OLT HG21 OLT:1HG2 OLT HG22 OLT:2HG2 OLT HG23 OLT:3HG2 OLT HD11 OLT:1HD1 OLT HD12 OLT:2HD1 OLT HD13 OLT:3HD1 OLT H5'1 OLU:1H5* OLU H5'2 OLU:2H5* OLU HC1 OMB:1HC OMB HC2 OMB:2HC OMB HN41 OMC:1HN4 OMC HN42 OMC:2HN4 OMC H1' OMC: H1* OMC H2' OMC: H2* OMC HM21 OMC:1HM2 OMC HM22 OMC:2HM2 OMC HM23 OMC:3HM2 OMC H3' OMC: H3* OMC H4' OMC: H4* OMC HO3' OMC:*HO3 OMC H5' OMC:1H5* OMC H5'' OMC:2H5* OMC HOP2 OMC:2HOP OMC HOP3 OMC:3HOP OMC H21 OMD:1H2 OMD H22 OMD:2H2 OMD H11 OME:1H1 OME H12 OME:2H1 OME H13 OME:3H1 OME HOP2 OMG:2HOP OMG HOP3 OMG:3HOP OMG H5' OMG:1H5* OMG H5'' OMG:2H5* OMG H4' OMG: H4* OMG H3' OMG: H3* OMG HO3' OMG:*HO3 OMG H2' OMG: H2* OMG HM21 OMG:1HM2 OMG HM22 OMG:2HM2 OMG HM23 OMG:3HM2 OMG H1' OMG: H1* OMG HN21 OMG:1HN2 OMG HN22 OMG:2HN2 OMG H11A OMN:1H1 OMN H12 OMN:2H1 OMN H13 OMN:3H1 OMN HOP2 OMP:2HOP OMP HOP3 OMP:3HOP OMP H1' OMP: H1* OMP H2' OMP: H2* OMP H3' OMP: H3* OMP H4' OMP: H4* OMP HO2' OMP:*HO2 OMP HO3' OMP:*HO3 OMP H5'1 OMP:1H5* OMP H5'2 OMP:2H5* OMP H OMT:1HN OMT H2 OMT:2HN OMT HB2 OMT:1HB OMT HB3 OMT:2HB OMT HG2 OMT:1HG OMT HG3 OMT:2HG OMT HE1 OMT:1HE OMT HE2 OMT:2HE OMT HE3 OMT:3HE OMT H1' OMU: H1* OMU H2' OMU: H2* OMU HM21 OMU:1HM2 OMU HM22 OMU:2HM2 OMU HM23 OMU:3HM2 OMU H3' OMU: H3* OMU H4' OMU: H4* OMU HO3' OMU:*HO3 OMU H5' OMU:1H5* OMU H5'' OMU:2H5* OMU HOP2 OMU:2HOP OMU HOP3 OMU:3HOP OMU HA71 ONA:1HA7 ONA HA72 ONA:2HA7 ONA HA73 ONA:3HA7 ONA H3' ONA: H3* ONA H2' ONA: H2* ONA H4' ONA: H4* ONA H5'1 ONA:1H5* ONA H5'2 ONA:2H5* ONA H1' ONA: H1* ONA HN61 ONA:1HN6 ONA HN62 ONA:2HN6 ONA HOP3 ONE:3HOP ONE HOP2 ONE:2HOP ONE H5'' ONE:2H5* ONE H5' ONE:1H5* ONE H4' ONE: H4* ONE H3' ONE: H3* ONE H2' ONE: H2* ONE HO2 ONE:2HO ONE HO3 ONE:3HO ONE H1' ONE: H1* ONE HN1 ONL:1HN ONL HN2 ONL:2HN ONL HB1 ONL:1HB ONL HB2 ONL:2HB ONL HG1 ONL:1HG ONL HG2 ONL:2HG ONL HE1 ONL:1HE ONL HE2 ONL:2HE ONL HE3 ONL:3HE ONL HA71 ONM:1HA7 ONM HA72 ONM:2HA7 ONM HA73 ONM:3HA7 ONM H3' ONM: H3* ONM H2' ONM: H2* ONM H4' ONM: H4* ONM H5'1 ONM:1H5* ONM H5'2 ONM:2H5* ONM H1' ONM: H1* ONM HN21 ONM:1HN2 ONM HN22 ONM:2HN2 ONM H621 ONO:1H62 ONO H622 ONO:2H62 ONO H623 ONO:3H62 ONO H371 ONO:1H37 ONO H372 ONO:2H37 ONO H373 ONO:3H37 ONO H361 ONO:1H36 ONO H362 ONO:2H36 ONO H363 ONO:3H36 ONO H581 ONO:1H58 ONO H582 ONO:2H58 ONO H583 ONO:3H58 ONO H101 ONO:1H10 ONO H102 ONO:2H10 ONO HN91 ONO:1HN9 ONO HN92 ONO:2HN9 ONO HOB2 ONP:2HOB ONP HOA2 ONP:2HOA ONP HNA1 ONP:1HNA ONP HA21 ONP:1HA2 ONP HA22 ONP:2HA2 ONP HA11 ONP:1HA1 ONP HA12 ONP:2HA1 ONP H2C1 OOA:1H2C OOA H2C2 OOA:2H2C OOA H4C1 OOA:1H4C OOA H4C2 OOA:2H4C OOA H5C1 OOA:1H5C OOA H5C2 OOA:2H5C OOA H6C1 OOA:1H6C OOA H6C2 OOA:2H6C OOA H7C1 OOA:1H7C OOA H7C2 OOA:2H7C OOA H8C1 OOA:1H8C OOA H8C2 OOA:2H8C OOA H8C3 OOA:3H8C OOA H21 OPA:1H2 OPA H22A OPA:2H2 OPA H51 OPA:1H5 OPA H52 OPA:2H5 OPA H61 OPA:1H6 OPA H62 OPA:2H6 OPA H211 OPB:1H21 OPB H212 OPB:2H21 OPB H213 OPB:3H21 OPB H201 OPB:1H20 OPB H202 OPB:2H20 OPB H191 OPB:1H19 OPB H192 OPB:2H19 OPB H181 OPB:1H18 OPB H182 OPB:2H18 OPB HBF1 OPC:1HBF OPC HBF2 OPC:2HBF OPC HBF3 OPC:3HBF OPC HBE1 OPC:1HBE OPC HBE2 OPC:2HBE OPC HBD1 OPC:1HBD OPC HBD2 OPC:2HBD OPC HBC1 OPC:1HBC OPC HBC2 OPC:2HBC OPC HBB1 OPC:1HBB OPC HBB2 OPC:2HBB OPC HBA1 OPC:1HBA OPC HBA2 OPC:2HBA OPC HAZ1 OPC:1HAZ OPC HAZ2 OPC:2HAZ OPC HAY1 OPC:1HAY OPC HAY2 OPC:2HAY OPC HAX1 OPC:1HAX OPC HAX2 OPC:2HAX OPC HAU1 OPC:1HAU OPC HAU2 OPC:2HAU OPC HAT1 OPC:1HAT OPC HAT2 OPC:2HAT OPC HAS1 OPC:1HAS OPC HAS2 OPC:2HAS OPC HAR1 OPC:1HAR OPC HAR2 OPC:2HAR OPC HAQ1 OPC:1HAQ OPC HAQ2 OPC:2HAQ OPC HAP1 OPC:1HAP OPC HAP2 OPC:2HAP OPC HAL1 OPC:1HAL OPC HAL2 OPC:2HAL OPC HAH1 OPC:1HAH OPC HAH2 OPC:2HAH OPC HAG1 OPC:1HAG OPC HAG2 OPC:2HAG OPC HAE1 OPC:1HAE OPC HAE2 OPC:2HAE OPC HAE3 OPC:3HAE OPC HBG1 OPC:1HBG OPC HBG2 OPC:2HBG OPC HBG3 OPC:3HBG OPC HAA1 OPC:1HAA OPC HAA2 OPC:2HAA OPC HAA3 OPC:3HAA OPC HAC1 OPC:1HAC OPC HAC2 OPC:2HAC OPC HAC3 OPC:3HAC OPC HBI1 OPC:1HBI OPC HBI2 OPC:2HBI OPC HBL1 OPC:1HBL OPC HBL2 OPC:2HBL OPC HBM1 OPC:1HBM OPC HBM2 OPC:2HBM OPC HBN1 OPC:1HBN OPC HBN2 OPC:2HBN OPC HBO1 OPC:1HBO OPC HBO2 OPC:2HBO OPC HBP1 OPC:1HBP OPC HBP2 OPC:2HBP OPC HBQ1 OPC:1HBQ OPC HBQ2 OPC:2HBQ OPC HBT1 OPC:1HBT OPC HBT2 OPC:2HBT OPC HBU1 OPC:1HBU OPC HBU2 OPC:2HBU OPC HBV1 OPC:1HBV OPC HBV2 OPC:2HBV OPC HBW1 OPC:1HBW OPC HBW2 OPC:2HBW OPC HBX1 OPC:1HBX OPC HBX2 OPC:2HBX OPC HBY1 OPC:1HBY OPC HBY2 OPC:2HBY OPC HBZ1 OPC:1HBZ OPC HBZ2 OPC:2HBZ OPC HCA1 OPC:1HCA OPC HCA2 OPC:2HCA OPC HCB1 OPC:1HCB OPC HCB2 OPC:2HCB OPC HCB3 OPC:3HCB OPC H81 OPD:1H8 OPD H71 OPD:1H7 OPD H51 OPD:1H5 OPD H21 OPD:1H2 OPD H31 OPD:1H3 OPD H41 OPD:1H4 OPD H111 OPD:1H11 OPD H112 OPD:2H11 OPD H121 OPD:1H12 OPD H122 OPD:2H12 OPD H131 OPD:1H13 OPD H132 OPD:2H13 OPD H141 OPD:1H14 OPD H142 OPD:2H14 OPD H151 OPD:1H15 OPD H152 OPD:2H15 OPD H161 OPD:1H16 OPD H162 OPD:2H16 OPD H171 OPD:1H17 OPD H172 OPD:2H17 OPD H201 OPD:1H20 OPD H61 OPD:1H6 OPD H62 OPD:2H6 OPD H91 OPD:1H9 OPD H92 OPD:2H9 OPD H101 OPD:1H10 OPD H102 OPD:2H10 OPD H103 OPD:3H10 OPD HA1 OPE:1HA OPE HA2 OPE:2HA OPE HB1 OPE:1HB OPE HB2 OPE:2HB OPE HN1 OPE:1HN OPE HN2 OPE:2HN OPE H11 OPG:1H1 OPG H12 OPG:2H1 OPG H71 OPG:1H7 OPG H72 OPG:2H7 OPG HB1 OPH:1HB OPH HB2 OPH:2HB OPH HS1 OPH:1HS OPH HS2 OPH:2HS OPH HS3 OPH:3HS OPH HP21 OPI:1HP2 OPI HP22 OPI:2HP2 OPI HP31 OPI:1HP3 OPI HP32 OPI:2HP3 OPI HP61 OPI:1HP6 OPI HP62 OPI:2HP6 OPI HP71 OPI:1HP7 OPI HP72 OPI:2HP7 OPI HPA0 OPI:0HPA OPI HPD1 OPI:1HPD OPI HPD2 OPI:2HPD OPI HPD3 OPI:3HPD OPI HPE1 OPI:1HPE OPI HPE2 OPI:2HPE OPI HPE3 OPI:3HPE OPI HPC1 OPI:1HPC OPI HPC2 OPI:2HPC OPI HT31 OPI:1HT3 OPI HT32 OPI:2HT3 OPI HT33 OPI:3HT3 OPI HT41 OPI:1HT4 OPI HT42 OPI:2HT4 OPI HT43 OPI:3HT4 OPI HT51 OPI:1HT5 OPI HT52 OPI:2HT5 OPI HT53 OPI:3HT5 OPI H3'1 OPM:1H3' OPM H3'2 OPM:2H3' OPM H4'1 OPM:1H4' OPM H4'2 OPM:2H4' OPM H5'1 OPM:1H5' OPM H5'2 OPM:2H5' OPM H5'3 OPM:3H5' OPM H1'1 OPM:1H1' OPM H1'2 OPM:2H1' OPM H2'1 OPM:1H2' OPM H2'2 OPM:2H2' OPM H61 OPM:1H6 OPM H62 OPM:2H6 OPM H1'1 OPN:1H1' OPN H1'2 OPN:2H1' OPN H1'3 OPN:3H1' OPN H2'1 OPN:1H2' OPN H2'2 OPN:2H2' OPN H3'1 OPN:1H3' OPN H3'2 OPN:2H3' OPN H5'1 OPN:1H5' OPN H5'2 OPN:2H5' OPN H8'1 OPN:1H8' OPN H8'2 OPN:2H8' OPN H51 OPP:1H5 OPP H52 OPP:2H5 OPP H5'1 OPP:1H5' OPP H5'2 OPP:2H5' OPP H OPR:1HN OPR H2 OPR:2HN OPR HB2 OPR:1HB OPR HB3 OPR:2HB OPR HG2 OPR:1HG OPR HG3 OPR:2HG OPR HD2 OPR:1HD OPR HD3 OPR:2HD OPR HH21 OPR:1HH2 OPR HH22 OPR:2HH2 OPR H11 OPR:1H1 OPR H12 OPR:2H1 OPR H21 OPR:1H2 OPR H22 OPR:2H2 OPR HN1 OPS:1HN OPS HN2 OPS:2HN OPS HO1 OPS:1HO OPS HO2 OPS:2HO OPS HU1 OPS:1HU OPS HU2 OPS:2HU OPS HV1 OPS:1HV OPS HV2 OPS:2HV OPS H101 OQB:1H10 OQB H102 OQB:2H10 OQB H191 OQB:1H19 OQB H192 OQB:2H19 OQB H1'1 OR5:1H1* OR5 H1'2 OR5:2H1* OR5 HO'1 OR5:1HO* OR5 H2' OR5: H2* OR5 HO'2 OR5:2HO* OR5 H3' OR5: H3* OR5 HO'3 OR5:3HO* OR5 H4' OR5: H4* OR5 HO'4 OR5:4HO* OR5 H5'1 OR5:1H5* OR5 H5'2 OR5:2H5* OR5 HOP2 OR5:2HOP OR5 HOP3 OR5:3HOP OR5 H ORN:1HN ORN HN2 ORN:2HN ORN HN3 ORN:3HN ORN HB2 ORN:1HB ORN HB3 ORN:2HB ORN HG1 ORN:1HG ORN HG2 ORN:2HG ORN HD2 ORN:1HD ORN HD3 ORN:2HD ORN HE1 ORN:1HNE ORN HE2 ORN:2HNE ORN HE3 ORN:3HNE ORN H21 ORP:1H2 ORP H22 ORP:2H2 ORP H51 ORP:1H5 ORP H52 ORP:2H5 ORP HOP2 ORP:2HOP ORP HOP3 ORP:3HOP ORP H ORQ:1HN ORQ H2 ORQ:2HN ORQ HB2 ORQ:1HB ORQ HB3 ORQ:2HB ORQ HG2 ORQ:1HG ORQ HG3 ORQ:2HG ORQ HD2 ORQ:1HD ORQ HD3 ORQ:2HD ORQ HE ORQ:1HNE ORQ H21 ORQ:1H2 ORQ H22 ORQ:2H2 ORQ H23 ORQ:3H2 ORQ HXT ORQ:HOXT ORQ H4A1 ORX:1H4A ORX H4A2 ORX:2H4A ORX H2A1 ORX:1H2A ORX H2A2 ORX:2H2A ORX H2A3 ORX:3H2A ORX H5A1 ORX:1H5A ORX H5A2 ORX:2H5A ORX HBA1 ORX:1HBA ORX HBA2 ORX:2HBA ORX HGA1 ORX:1HGA ORX HGA2 ORX:2HGA ORX HDA1 ORX:1HDA ORX HDA2 ORX:2HDA ORX HNE1 ORX:1HNE ORX HNE2 ORX:2HNE ORX H61 OSB:1H6 OSB H51 OSB:1H5 OSB H41 OSB:1H4 OSB H31 OSB:1H3 OSB H91 OSB:1H9 OSB H92 OSB:2H9 OSB H101 OSB:1H10 OSB H102 OSB:2H10 OSB H61 OSC:1H6 OSC H62 OSC:2H6 OSC H71 OSC:1H7 OSC H72 OSC:2H7 OSC H111 OSC:1H11 OSC H112 OSC:2H11 OSC H151 OSC:1H15 OSC H152 OSC:2H15 OSC H171 OSC:1H17 OSC H172 OSC:2H17 OSC H191 OSC:1H19 OSC H192 OSC:2H19 OSC H221 OSC:1H22 OSC H222 OSC:2H22 OSC H301 OSC:1H30 OSC H302 OSC:2H30 OSC H321 OSC:1H32 OSC H322 OSC:2H32 OSC H371 OSC:1H37 OSC H372 OSC:2H37 OSC H441 OSC:1H44 OSC H442 OSC:2H44 OSC H2 OSE: HN2 OSE HB2 OSE:1HB OSE HB3 OSE:2HB OSE H1 OSM:1H OSM H2 OSM:2H OSM HN1 OSM:1HN OSM HN2 OSM:2HN OSM H71 OSP:1H7 OSP H72 OSP:2H7 OSP H81 OSP:1H8 OSP H82 OSP:2H8 OSP H91 OSP:1H9 OSP H92 OSP:2H9 OSP H101 OSP:1H10 OSP H102 OSP:2H10 OSP HN11 OSP:1HN1 OSP HN12 OSP:2HN1 OSP H21 OSS:1H2 OSS H22 OSS:2H2 OSS H31 OSS:1H3 OSS H32 OSS:2H3 OSS H41 OSS:1H4 OSS H42 OSS:2H4 OSS H51 OSS:1H5 OSS H52 OSS:2H5 OSS H71 OSS:1H7 OSS H72 OSS:2H7 OSS H81 OSS:1H8 OSS H82 OSS:2H8 OSS H101 OSS:1H10 OSS H102 OSS:2H10 OSS HN11 OSS:1HN1 OSS HN12 OSS:2HN1 OSS H141 OSS:1H14 OSS H142 OSS:2H14 OSS H151 OSS:1H15 OSS H152 OSS:2H15 OSS H51 OST:1H5 OST H52 OST:2H5 OST H53 OST:3H5 OST H41 OST:1H4 OST H42 OST:2H4 OST H43 OST:3H4 OST H61 OSU:1H6 OSU H62 OSU:2H6 OSU H1'1 OSU:1H1' OSU H1'2 OSU:2H1' OSU H6'1 OSU:1H6' OSU H6'2 OSU:2H6' OSU H2N1 OSU:1H2N OSU H2N2 OSU:2H2N OSU H3N1 OSU:1H3N OSU H3N2 OSU:2H3N OSU H4N1 OSU:1H4N OSU H4N2 OSU:2H4N OSU H5N1 OSU:1H5N OSU H5N2 OSU:2H5N OSU H6N1 OSU:1H6N OSU H6N2 OSU:2H6N OSU H7N1 OSU:1H7N OSU H7N2 OSU:2H7N OSU H8N1 OSU:1H8N OSU H8N2 OSU:2H8N OSU H8N3 OSU:3H8N OSU HC11 OT3:1HC1 OT3 HC12 OT3:2HC1 OT3 HC13 OT3:3HC1 OT3 HC21 OT3:1HC2 OT3 HC22 OT3:2HC2 OT3 HC41 OT3:1HC4 OT3 HC42 OT3:2HC4 OT3 HC51 OT3:1HC5 OT3 HC52 OT3:2HC5 OT3 HC61 OT3:1HC6 OT3 HC62 OT3:2HC6 OT3 HC71 OT3:1HC7 OT3 HC72 OT3:2HC7 OT3 HC81 OT3:1HC8 OT3 HC82 OT3:2HC8 OT3 HC83 OT3:3HC8 OT3 H21 OTA:1H2 OTA H22A OTA:2H2 OTA H51 OTA:1H5 OTA H52 OTA:2H5 OTA H61 OTA:1H6 OTA H62 OTA:2H6 OTA H11 OTB:1H1 OTB H12 OTB:2H1 OTB H13 OTB:3H1 OTB H21 OTB:1H2 OTB H22 OTB:2H2 OTB H23 OTB:3H2 OTB H31 OTB:1H3 OTB H32 OTB:2H3 OTB H33 OTB:3H3 OTB H11 OTE:1H1 OTE H12 OTE:2H1 OTE H13 OTE:3H1 OTE H21A OTE:1H2 OTE H22 OTE:2H2 OTE H31 OTE:1H3 OTE H32 OTE:2H3 OTE H41 OTE:1H4 OTE H42 OTE:2H4 OTE H51 OTE:1H5 OTE H52 OTE:2H5 OTE H61 OTE:1H6 OTE H62 OTE:2H6 OTE H71 OTE:1H7 OTE H72 OTE:2H7 OTE H81 OTE:1H8 OTE H82 OTE:2H8 OTE H101 OTE:1H10 OTE H102 OTE:2H10 OTE H111 OTE:1H11 OTE H112 OTE:2H11 OTE H131 OTE:1H13 OTE H132 OTE:2H13 OTE H141 OTE:1H14 OTE H142 OTE:2H14 OTE H161 OTE:1H16 OTE H162 OTE:2H16 OTE H171 OTE:1H17 OTE H172 OTE:2H17 OTE H191 OTE:1H19 OTE H192 OTE:2H19 OTE H201 OTE:1H20 OTE H202 OTE:2H20 OTE H61 OTG:1H6 OTG H62 OTG:2H6 OTG H3' OTG: H3* OTG H4' OTG: H4* OTG H5' OTG: H5* OTG H6' OTG: H6* OTG H7'1 OTG:1H7* OTG H7'2 OTG:2H7* OTG H7'3 OTG:3H7* OTG H401 OTP:1H40 OTP H402 OTP:2H40 OTP H381 OTP:1H38 OTP H382 OTP:2H38 OTP H383 OTP:3H38 OTP H361 OTP:1H36 OTP H362 OTP:2H36 OTP H351 OTP:1H35 OTP H352 OTP:2H35 OTP H331 OTP:1H33 OTP H332 OTP:2H33 OTP H333 OTP:3H33 OTP H311 OTP:1H31 OTP H312 OTP:2H31 OTP H301 OTP:1H30 OTP H302 OTP:2H30 OTP H281 OTP:1H28 OTP H282 OTP:2H28 OTP H283 OTP:3H28 OTP H261 OTP:1H26 OTP H262 OTP:2H26 OTP H251 OTP:1H25 OTP H252 OTP:2H25 OTP H231 OTP:1H23 OTP H232 OTP:2H23 OTP H233 OTP:3H23 OTP H211 OTP:1H21 OTP H212 OTP:2H21 OTP H201 OTP:1H20 OTP H202 OTP:2H20 OTP H181 OTP:1H18 OTP H182 OTP:2H18 OTP H183 OTP:3H18 OTP H161 OTP:1H16 OTP H162 OTP:2H16 OTP H151 OTP:1H15 OTP H152 OTP:2H15 OTP H131 OTP:1H13 OTP H132 OTP:2H13 OTP H133 OTP:3H13 OTP H111 OTP:1H11 OTP H112 OTP:2H11 OTP H101 OTP:1H10 OTP H102 OTP:2H10 OTP H81 OTP:1H8 OTP H82 OTP:2H8 OTP H83 OTP:3H8 OTP H61 OTP:1H6 OTP H62 OTP:2H6 OTP H51 OTP:1H5 OTP H52 OTP:2H5 OTP H31 OTP:1H3 OTP H32 OTP:2H3 OTP H33 OTP:3H3 OTP H11 OTP:1H1 OTP H12 OTP:2H1 OTP H13 OTP:3H1 OTP HN81 OTR:1HN8 OTR HN82 OTR:2HN8 OTR H81 OTR:1H8 OTR H82 OTR:2H8 OTR H81 OTS:1H8 OTS H82 OTS:2H8 OTS HN81 OTS:1HN8 OTS HN82 OTS:2HN8 OTS H2 OTY: HN2 OTY HB2 OTY:1HB OTY HB3 OTY:2HB OTY HE23 OTY:1HE2 OTY HE22 OTY:2HE2 OTY HN1 OUT:1HN OUT HN2 OUT:2HN OUT H51 OVA:1H5 OVA H52 OVA:2H5 OVA H61 OVA:1H6 OVA H62 OVA:2H6 OVA H111 OVA:1H11 OVA H112 OVA:2H11 OVA H113 OVA:3H11 OVA H231 OVA:1H23 OVA H232 OVA:2H23 OVA HA1 OVA:1HA OVA HA2 OVA:2HA OVA HA3 OVA:3HA OVA HB1 OVA:1HB OVA HB2 OVA:2HB OVA HB3 OVA:3HB OVA HC1 OVA:1HC OVA HC2 OVA:2HC OVA HC3 OVA:3HC OVA H11 OVA:1H1 OVA H12A OVA:2H1 OVA H13 OVA:3H1 OVA H61 OX2:1H6 OX2 H62 OX2:2H6 OX2 H91 OX2:1H9 OX2 H92 OX2:2H9 OX2 H93 OX2:3H9 OX2 H121 OX3:1H12 OX3 H122 OX3:2H12 OX3 H131 OX3:1H13 OX3 H132 OX3:2H13 OX3 H141 OX3:1H14 OX3 H142 OX3:2H14 OX3 H151 OX3:1H15 OX3 H152 OX3:2H15 OX3 H161 OX3:1H16 OX3 H162 OX3:2H16 OX3 H121 OX4:1H12 OX4 H122 OX4:2H12 OX4 H131 OX4:1H13 OX4 H132 OX4:2H13 OX4 H141 OX4:1H14 OX4 H142 OX4:2H14 OX4 H151 OX4:1H15 OX4 H152 OX4:2H15 OX4 H161 OX4:1H16 OX4 H162 OX4:2H16 OX4 H81 OX5:1H8 OX5 H82 OX5:2H8 OX5 H91 OX5:1H9 OX5 H92 OX5:2H9 OX5 H93 OX5:3H9 OX5 H111 OX5:1H11 OX5 H112 OX5:2H11 OX5 H113 OX5:3H11 OX5 H131 OX5:1H13 OX5 H132 OX5:2H13 OX5 H133 OX5:3H13 OX5 H141 OX6:1H14 OX6 H142 OX6:2H14 OX6 H143 OX6:3H14 OX6 H131 OX6:1H13 OX6 H132 OX6:2H13 OX6 H133 OX6:3H13 OX6 H111 OX6:1H11 OX6 H112 OX6:2H11 OX6 H113 OX6:3H11 OX6 H171 OX6:1H17 OX6 H172 OX6:2H17 OX6 H173 OX6:3H17 OX6 H161 OX6:1H16 OX6 H162 OX6:2H16 OX6 H163 OX6:3H16 OX6 H141 OX7:1H14 OX7 H142 OX7:2H14 OX7 H143 OX7:3H14 OX7 H131 OX7:1H13 OX7 H132 OX7:2H13 OX7 H133 OX7:3H13 OX7 H111 OX7:1H11 OX7 H112 OX7:2H11 OX7 H113 OX7:3H11 OX7 H171 OX7:1H17 OX7 H172 OX7:2H17 OX7 H173 OX7:3H17 OX7 H161 OX7:1H16 OX7 H162 OX7:2H16 OX7 H163 OX7:3H16 OX7 H11 OXA:1H1 OXA H12 OXA:2H1 OXA H21 OXA:1H2 OXA H22 OXA:2H2 OXA H23 OXA:3H2 OXA H1'1 OXE:1H1' OXE H1'2 OXE:2H1' OXE H1'3 OXE:3H1' OXE H2'1 OXE:1H2' OXE H2'2 OXE:2H2' OXE H2'3 OXE:3H2' OXE H21 OXG:1H2 OXG H22 OXG:2H2 OXG H111 OXI:1H11 OXI H112 OXI:2H11 OXI H121 OXI:1H12 OXI H122 OXI:2H12 OXI H131 OXI:1H13 OXI H132 OXI:2H13 OXI H133 OXI:3H13 OXI H6N1 OXK:1H6N OXK H6N2 OXK:2H6N OXK H5'1 OXK:1H5' OXK H5'2 OXK:2H5' OXK HPB1 OXK:1HPB OXK HPB2 OXK:2HPB OXK HP91 OXK:1HP9 OXK HP92 OXK:2HP9 OXK HP93 OXK:3HP9 OXK HP81 OXK:1HP8 OXK HP82 OXK:2HP8 OXK HP83 OXK:3HP8 OXK HP51 OXK:1HP5 OXK HP52 OXK:2HP5 OXK HP41 OXK:1HP4 OXK HP42 OXK:2HP4 OXK HP21 OXK:1HP2 OXK HP22 OXK:2HP2 OXK HP11 OXK:1HP1 OXK HP12 OXK:2HP1 OXK HN1 OXM:1HN OXM HN2 OXM:2HN OXM H51 OXN:1H5 OXN H52 OXN:2H5 OXN H31 OXN:1H3 OXN H32 OXN:2H3 OXN H33 OXN:3H3 OXN H41 OXN:1H4 OXN H42 OXN:2H4 OXN H43 OXN:3H4 OXN H21 OXN:1H2 OXN H22 OXN:2H2 OXN H23 OXN:3H2 OXN H81 OXN:1H8 OXN H82 OXN:2H8 OXN H83 OXN:3H8 OXN H71 OXN:1H7 OXN H72 OXN:2H7 OXN H73 OXN:3H7 OXN H161 OXN:1H16 OXN H162 OXN:2H16 OXN H171 OXN:1H17 OXN H172 OXN:2H17 OXN H191 OXN:1H19 OXN H192 OXN:2H19 OXN H201 OXN:1H20 OXN H202 OXN:2H20 OXN H221 OXN:1H22 OXN H222 OXN:2H22 OXN H231 OXN:1H23 OXN H232 OXN:2H23 OXN H251 OXN:1H25 OXN H252 OXN:2H25 OXN H261 OXN:1H26 OXN H262 OXN:2H26 OXN H281 OXN:1H28 OXN H282 OXN:2H28 OXN H291 OXN:1H29 OXN H292 OXN:2H29 OXN H311 OXN:1H31 OXN H312 OXN:2H31 OXN H321 OXN:1H32 OXN H322 OXN:2H32 OXN H341 OXN:1H34 OXN H342 OXN:2H34 OXN H351 OXN:1H35 OXN H352 OXN:2H35 OXN H371 OXN:1H37 OXN H372 OXN:2H37 OXN H381 OXN:1H38 OXN H382 OXN:2H38 OXN H401 OXN:1H40 OXN H402 OXN:2H40 OXN H411 OXN:1H41 OXN H412 OXN:2H41 OXN H431 OXN:1H43 OXN H432 OXN:2H43 OXN H441 OXN:1H44 OXN H442 OXN:2H44 OXN H51 OXP:1H5 OXP H52 OXP:2H5 OXP H53 OXP:3H5 OXP H31 OXR:1H3 OXR H32 OXR:2H3 OXR H21 OXR:1H2 OXR H22 OXR:2H2 OXR H171 OXR:1H17 OXR H172 OXR:2H17 OXR H173 OXR:3H17 OXR H161 OXR:1H16 OXR H162 OXR:2H16 OXR H163 OXR:3H16 OXR H181 OXR:1H18 OXR H182 OXR:2H18 OXR H183 OXR:3H18 OXR H191 OXR:1H19 OXR H192 OXR:2H19 OXR H193 OXR:3H19 OXR H201 OXR:1H20 OXR H202 OXR:2H20 OXR H203 OXR:3H20 OXR H151 OXR:1H15 OXR H152 OXR:2H15 OXR H31 OXS:1H3 OXS H32 OXS:2H3 OXS H3' OXT: H3* OXT H2' OXT: H2* OXT H4' OXT: H4* OXT H1' OXT: H1* OXT H621 OXT:1H62 OXT H622 OXT:2H62 OXT H5'1 OXT:1H5* OXT H5'2 OXT:2H5* OXT H321 OXT:1H32 OXT H322 OXT:2H32 OXT H331 OXT:1H33 OXT H332 OXT:2H33 OXT H333 OXT:3H33 OXT H341 OXT:1H34 OXT H342 OXT:2H34 OXT H343 OXT:3H34 OXT H741 OXT:1H74 OXT H742 OXT:2H74 OXT H641 OXT:1H64 OXT H642 OXT:2H64 OXT H351 OXT:1H35 OXT H352 OXT:2H35 OXT H251 OXT:1H25 OXT H252 OXT:2H25 OXT H711 OXT:1H71 OXT H712 OXT:2H71 OXT H411 OXT:1H41 OXT H412 OXT:2H41 OXT HM21 OXT:1HM2 OXT HM22 OXT:2HM2 OXT HM23 OXT:3HM2 OXT HM41 OXT:1HM4 OXT HM42 OXT:2HM4 OXT HM43 OXT:3HM4 OXT H661 OXT:1H66 OXT H662 OXT:2H66 OXT H761 OXT:1H76 OXT H762 OXT:2H76 OXT H OXX:1HN OXX H2 OXX:2HN OXX HB2 OXX:1HB OXX HB3 OXX:2HB OXX H1C1 OXZ:1H1C OXZ H1C2 OXZ:2H1C OXZ H5C1 OXZ:1H5C OXZ H5C2 OXZ:2H5C OXZ H141 OYA:1H14 OYA H142 OYA:2H14 OYA H143 OYA:3H14 OYA H51 OYA:1H5 OYA H52 OYA:2H5 OYA H61 OYA:1H6 OYA H62 OYA:2H6 OYA H111 OYA:1H11 OYA H112 OYA:2H11 OYA H71 OYA:1H7 OYA H72 OYA:2H7 OYA H81 OYA:1H8 OYA H82 OYA:2H8 OYA H91 OYA:1H9 OYA H92 OYA:2H9 OYA HOP2 P:2HOP P HOP3 P:3HOP P H5' P:1H5* P H5'' P:2H5* P H4' P: H4* P H3' P: H3* P HO3' P:*HO3 P H2' P:1H2* P H2'' P:2H2* P H1' P: H1* P H6A1 P:1H6A P H6A2 P:2H6A P H7A1 P:1H7A P H7A2 P:2H7A P H8A1 P:1H8A P H8A2 P:2H8A P H111 P01:1H11 P01 H112 P01:2H11 P01 H113 P01:3H11 P01 H121 P01:1H12 P01 H122 P01:2H12 P01 H123 P01:3H12 P01 H261 P01:1H26 P01 H262 P01:2H26 P01 H263 P01:3H26 P01 H271 P01:1H27 P01 H272 P01:2H27 P01 H273 P01:3H27 P01 H231 P01:1H23 P01 H232 P01:2H23 P01 H31A P0E:1H3 P0E H32A P0E:2H3 P0E H41 P0E:1H4 P0E H42 P0E:2H4 P0E H151 P0E:1H15 P0E H152 P0E:2H15 P0E H161 P0E:1H16 P0E H162 P0E:2H16 P0E H171 P0E:1H17 P0E H172 P0E:2H17 P0E H181 P0E:1H18 P0E H182 P0E:2H18 P0E H191 P0E:1H19 P0E H192 P0E:2H19 P0E H201 P0E:1H20 P0E H202 P0E:2H20 P0E H211 P0E:1H21 P0E H212 P0E:2H21 P0E H241 P0E:1H24 P0E H242 P0E:2H24 P0E H251 P0E:1H25 P0E H252 P0E:2H25 P0E H261 P0E:1H26 P0E H262 P0E:2H26 P0E H271 P0E:1H27 P0E H272 P0E:2H27 P0E H281 P0E:1H28 P0E H282 P0E:2H28 P0E H291 P0E:1H29 P0E H292 P0E:2H29 P0E H301 P0E:1H30 P0E H302 P0E:2H30 P0E H331 P0E:1H33 P0E H332 P0E:2H33 P0E H341 P0E:1H34 P0E H342 P0E:2H34 P0E H351 P0E:1H35 P0E H352 P0E:2H35 P0E H361 P0E:1H36 P0E H362 P0E:2H36 P0E H371 P0E:1H37 P0E H372 P0E:2H37 P0E H381 P0E:1H38 P0E H382 P0E:2H38 P0E H391 P0E:1H39 P0E H392 P0E:2H39 P0E H401 P0E:1H40 P0E H402 P0E:2H40 P0E H411 P0E:1H41 P0E H412 P0E:2H41 P0E H413 P0E:3H41 P0E H421 P0E:1H42 P0E H422 P0E:2H42 P0E H431 P0E:1H43 P0E H432 P0E:2H43 P0E H441 P0E:1H44 P0E H442 P0E:2H44 P0E H451 P0E:1H45 P0E H452 P0E:2H45 P0E H461 P0E:1H46 P0E H462 P0E:2H46 P0E H463 P0E:3H46 P0E H471 P0E:1H47 P0E H472 P0E:2H47 P0E H481 P0E:1H48 P0E H482 P0E:2H48 P0E H2A1 P0P:1H2A P0P H2A2 P0P:2H2A P0P H2A3 P0P:3H2A P0P H5A1 P0P:1H5A P0P H5A2 P0P:2H5A P0P H021 P10:1H02 P10 H022 P10:2H02 P10 H151 P10:1H15 P10 H152 P10:2H15 P10 H161 P10:1H16 P10 H162 P10:2H16 P10 H271 P10:1H27 P10 H272 P10:2H27 P10 H381 P10:1H38 P10 H382 P10:2H38 P10 H31 P11:1H3 P11 H32A P11:2H3 P11 H33 P11:3H3 P11 H111 P11:1H11 P11 H112 P11:2H11 P11 H113 P11:3H11 P11 H131 P11:1H13 P11 H132 P11:2H13 P11 H141 P11:1H14 P11 H142 P11:2H14 P11 H171 P11:1H17 P11 H172 P11:2H17 P11 H173 P11:3H17 P11 H211 P11:1H21 P11 H212 P11:2H21 P11 H221 P11:1H22 P11 H222 P11:2H22 P11 H10N P11:NH10 P11 H251 P11:1H25 P11 H252 P11:2H25 P11 H253 P11:3H25 P11 H11N P11:NH11 P11 H331 P11:1H33 P11 H332 P11:2H33 P11 H333 P11:3H33 P11 H14N P11:NH14 P11 H351 P11:1H35 P11 H352 P11:2H35 P11 H361 P11:1H36 P11 H362 P11:2H36 P11 H16N P11:NH16 P11 H371 P11:1H37 P11 H372 P11:2H37 P11 H381 P11:1H38 P11 H382 P11:2H38 P11 H391 P11:1H39 P11 H392 P11:2H39 P11 H17N P11:NH17 P11 H401 P11:1H40 P11 H402 P11:2H40 P11 H403 P11:3H40 P11 H411 P11:1H41 P11 H412 P11:2H41 P11 H413 P11:3H41 P11 HB1 P12:1HB P12 HB2 P12:2HB P12 HG1 P12:1HG P12 HG2 P12:2HG P12 HD1 P12:1HD P12 HD2 P12:2HD P12 HE1 P12:1HE P12 HE2 P12:2HE P12 HE3 P12:3HE P12 HG11 P12:1HG1 P12 HG12 P12:2HG1 P12 HD11 P12:1HD1 P12 HD12 P12:2HD1 P12 HD21 P12:1HD2 P12 HD22 P12:2HD2 P12 HG21 P12:1HG2 P12 HG22 P12:2HG2 P12 HA1 P12:1HA P12 HA2 P12:2HA P12 HH11 P12:1HH1 P12 HH21 P12:1HH2 P12 HH22 P12:2HH2 P12 HB11 P12:1HB1 P12 HB12 P12:2HB1 P12 HB3 P12:3HB P12 HN1A P13:1HN P13 HN2 P13:2HN P13 HB1 P13:1HB P13 HB2 P13:2HB P13 HA1 P13:1HA P13 HA2 P13:2HA P13 HC1 P13:1HC P13 HC2 P13:2HC P13 HA11 P13:1HA1 P13 HA12 P13:2HA1 P13 HB11 P13:1HB1 P13 HG1 P13:1HG P13 HG2 P13:2HG P13 HD1 P13:1HD P13 HD2 P13:2HD P13 HH11 P13:1HH1 P13 HH12 P13:2HH1 P13 HI11 P13:1HI1 P13 HI12 P13:2HI1 P13 HJ1 P13:1HJ P13 HI21 P13:1HI2 P13 HI22 P13:2HI2 P13 HH21 P13:1HH2 P13 HH22 P13:2HH2 P13 HB1 P14:1HB P14 HB2 P14:2HB P14 HG1 P14:1HG P14 HG2 P14:2HG P14 HZ11 P14:1HZ1 P14 HZ12 P14:2HZ1 P14 HZ21 P14:1HZ2 P14 HZ22 P14:2HZ2 P14 HA1 P14:1HA P14 HA2 P14:2HA P14 HB11 P14:1HB1 P14 HG11 P14:1HG1 P14 HG12 P14:2HG1 P14 HD1 P14:1HD P14 HD2 P14:2HD P14 HE1 P14:1HE P14 HE2 P14:2HE P14 HZ1 P14:1HZ P14 HZ2 P14:2HZ P14 HJ11 P14:1HJ1 P14 HJ12 P14:2HJ1 P14 HJ21 P14:1HJ2 P14 HJ22 P14:2HJ2 P14 H11 P14:1H1 P14 H12 P14:2H1 P14 H13 P14:3H1 P14 H131 P15:1H13 P15 H132 P15:2H13 P15 H133 P15:3H13 P15 H121 P15:1H12 P15 H122 P15:2H12 P15 H111 P15:1H11 P15 H112 P15:2H11 P15 H101 P15:1H10 P15 H102 P15:2H10 P15 H91 P15:1H9 P15 H92 P15:2H9 P15 H81 P15:1H8 P15 H82 P15:2H8 P15 H71 P15:1H7 P15 H72 P15:2H7 P15 H61 P15:1H6 P15 H62 P15:2H6 P15 H51 P15:1H5 P15 H52 P15:2H5 P15 H41 P15:1H4 P15 H42 P15:2H4 P15 H31 P15:1H3 P15 H32 P15:2H3 P15 H21 P15:1H2 P15 H22 P15:2H2 P15 H11 P15:1H1 P15 H12 P15:2H1 P15 H21 P16:1H2 P16 H22 P16:2H2 P16 H201 P16:1H20 P16 H202 P16:2H20 P16 H203 P16:3H20 P16 H11 P1A:1H1 P1A H12 P1A:2H1 P1A H41 P1A:1H4 P1A H42 P1A:2H4 P1A H191 P1A:1H19 P1A H192 P1A:2H19 P1A H193 P1A:3H19 P1A H111 P1A:1H11 P1A H112 P1A:2H11 P1A H121 P1A:1H12 P1A H122 P1A:2H12 P1A H181 P1A:1H18 P1A H182 P1A:2H18 P1A H183 P1A:3H18 P1A H151 P1A:1H15 P1A H152 P1A:2H15 P1A H161 P1A:1H16 P1A H162 P1A:2H16 P1A H211 P1A:1H21 P1A H212 P1A:2H21 P1A H213 P1A:3H21 P1A H231 P1A:1H23 P1A H232 P1A:2H23 P1A H241 P1A:1H24 P1A H242 P1A:2H24 P1A H261 P1A:1H26 P1A H262 P1A:2H26 P1A H263 P1A:3H26 P1A H271 P1A:1H27 P1A H272 P1A:2H27 P1A H273 P1A:3H27 P1A H61 P1B:1H6 P1B H62 P1B:2H6 P1B H141 P1B:1H14 P1B H142 P1B:2H14 P1B H151 P1B:1H15 P1B H152 P1B:2H15 P1B H231 P1B:1H23 P1B H232 P1B:2H23 P1B H241 P1B:1H24 P1B H242 P1B:2H24 P1B H243 P1B:3H24 P1B H3C1 P1C:1H3C P1C H3C2 P1C:2H3C P1C H4C1 P1C:1H4C P1C H4C2 P1C:2H4C P1C H7C1 P1C:1H7C P1C H7C2 P1C:2H7C P1C H141 P1C:1H14 P1C H142 P1C:2H14 P1C H331 P1C:1H33 P1C H332 P1C:2H33 P1C H333 P1C:3H33 P1C H371 P1C:1H37 P1C H372 P1C:2H37 P1C H421 P1C:1H42 P1C H1P1 P1D:1H1P P1D H1P2 P1D:2H1P P1D H5'1 P1D:1H5' P1D H5'2 P1D:2H5' P1D H1P1 P1G:1H1P P1G H1P2 P1G:2H1P P1G H5'1 P1G:1H5' P1G H5'2 P1G:2H5' P1G HN21 P1G:1HN2 P1G HN22 P1G:2HN2 P1G H11 P1H:1H1 P1H H12A P1H:2H1 P1H HN31 P1H:1HN3 P1H HN32 P1H:2HN3 P1H H61 P1H:1H6 P1H H111 P1H:1H11 P1H H112 P1H:2H11 P1H HN71 P1H:1HN7 P1H HN72 P1H:2HN7 P1H H161 P1H:1H16 P1H H231 P1H:1H23 P1H H261 P1H:1H26 P1H H291 P1H:1H29 P1H H292 P1H:2H29 P1H H281 P1H:1H28 P1H H282 P1H:2H28 P1H H301 P1H:1H30 P1H H302 P1H:2H30 P1H H303 P1H:3H30 P1H H P1L:1H3N P1L H2 P1L:2H3N P1L HB2 P1L:1H5C P1L HB3 P1L:2H5C P1L H8C1 P1L:1H8C P1L H8C2 P1L:2H8C P1L H9C1 P1L:1H9C P1L H9C2 P1L:2H9C P1L H101 P1L:1H10 P1L H102 P1L:2H10 P1L H111 P1L:1H11 P1L H112 P1L:2H11 P1L H121 P1L:1H12 P1L H122 P1L:2H12 P1L H131 P1L:1H13 P1L H132 P1L:2H13 P1L H141 P1L:1H14 P1L H142 P1L:2H14 P1L H151 P1L:1H15 P1L H152 P1L:2H15 P1L H161 P1L:1H16 P1L H162 P1L:2H16 P1L H171 P1L:1H17 P1L H172 P1L:2H17 P1L H181 P1L:1H18 P1L H182 P1L:2H18 P1L H191 P1L:1H19 P1L H192 P1L:2H19 P1L H201 P1L:1H20 P1L H202 P1L:2H20 P1L H211 P1L:1H21 P1L H212 P1L:2H21 P1L H221 P1L:1H22 P1L H222 P1L:2H22 P1L H223 P1L:3H22 P1L HXT P1L: HO' P1L H5' P1P:1H5* P1P H5'' P1P:2H5* P1P H4'1 P1P:1H4* P1P H4'2 P1P:2H4* P1P H3'1 P1P:1H3* P1P H3'2 P1P:2H3* P1P H11 P1S:1H1 P1S H12A P1S:2H1 P1S H161 P1S:1H16 P1S H162 P1S:2H16 P1S H171 P1S:1H17 P1S H172 P1S:2H17 P1S H5A1 P1T:1H5A P1T H5A2 P1T:2H5A P1T H2A1 P1T:1H2A P1T H2A2 P1T:2H2A P1T H2A3 P1T:3H2A P1T H4A1 P1T:1H4A P1T H4A2 P1T:2H4A P1T HB1 P1T:1HB P1T HB2 P1T:2HB P1T H211 P1Z:1H21 P1Z H212 P1Z:2H21 P1Z H213 P1Z:3H21 P1Z H201 P1Z:1H20 P1Z H202 P1Z:2H20 P1Z H191 P1Z:1H19 P1Z H192 P1Z:2H19 P1Z H181 P1Z:1H18 P1Z H182 P1Z:2H18 P1Z H11A P20:1H1 P20 H12 P20:2H1 P20 H121 P20:1H12 P20 H122 P20:2H12 P20 H61 P22:1H6 P22 H62 P22:2H6 P22 H63 P22:3H6 P22 H71 P22:1H7 P22 H72 P22:2H7 P22 H51 P23:1H5 P23 H52 P23:2H5 P23 H53 P23:3H5 P23 H61 P23:1H6 P23 H62 P23:2H6 P23 H71 P23:1H7 P23 H72 P23:2H7 P23 HN11 P24:1HN1 P24 HN12 P24:2HN1 P24 H21 P24:1H2 P24 H22 P24:2H2 P24 H31 P24:1H3 P24 H32 P24:2H3 P24 H51 P24:1H5 P24 H52 P24:2H5 P24 H61 P24:1H6 P24 H62 P24:2H6 P24 H71 P24:1H7 P24 H72 P24:2H7 P24 H81 P24:1H8 P24 H82 P24:2H8 P24 HN91 P24:1HN9 P24 HN92 P24:2HN9 P24 H41 P25:1H4 P25 H42 P25:2H4 P25 HM41 P25:1HM4 P25 HM42 P25:2HM4 P25 HM43 P25:3HM4 P25 H51 P25:1H5 P25 H52 P25:2H5 P25 H61 P25:1H6 P25 H62 P25:2H6 P25 H71 P25:1H7 P25 H72 P25:2H7 P25 H321 P27:1H32 P27 H322 P27:2H32 P27 H121 P27:1H12 P27 H122 P27:2H12 P27 H71 P28:1H7 P28 H72 P28:2H7 P28 H821 P28:1H82 P28 H822 P28:2H82 P28 H823 P28:3H82 P28 H111 P29:1H11 P29 H112 P29:2H11 P29 H121 P29:1H12 P29 H122 P29:2H12 P29 HN21 P2G:1HN2 P2G HN22 P2G:2HN2 P2G H5'1 P2G:1H5' P2G H5'2 P2G:2H5' P2G H81 P2K:1H8 P2K H82 P2K:2H8 P2K H91 P2K:1H9 P2K H92 P2K:2H9 P2K H111 P2K:1H11 P2K H112 P2K:2H11 P2K H121 P2K:1H12 P2K H122 P2K:2H12 P2K H141 P2K:1H14 P2K H142 P2K:2H14 P2K H151 P2K:1H15 P2K H152 P2K:2H15 P2K H171 P2K:1H17 P2K H172 P2K:2H17 P2K H181 P2K:1H18 P2K H182 P2K:2H18 P2K H201 P2K:1H20 P2K H202 P2K:2H20 P2K H211 P2K:1H21 P2K H212 P2K:2H21 P2K H231 P2K:1H23 P2K H232 P2K:2H23 P2K H241 P2K:1H24 P2K H242 P2K:2H24 P2K H8C1 P2N:1H8C P2N H8C2 P2N:2H8C P2N H101 P2N:1H10 P2N H102 P2N:2H10 P2N H111 P2N:1H11 P2N H112 P2N:2H11 P2N H121 P2N:1H12 P2N H122 P2N:2H12 P2N H131 P2N:1H13 P2N H132 P2N:2H13 P2N H161 P2N:1H16 P2N H162 P2N:2H16 P2N H171 P2N:1H17 P2N H172 P2N:2H17 P2N H131 P2O:1H13 P2O H132 P2O:2H13 P2O H91 P2O:1H9 P2O H92 P2O:2H9 P2O H141 P2O:1H14 P2O H142 P2O:2H14 P2O HOP2 P2P:2HOP P2P HOP3 P2P:3HOP P2P H5'1 P2P:1H5* P2P H5'2 P2P:2H5* P2P H4' P2P: H4* P2P H3' P2P: H3* P2P HO3' P2P:*HO3 P2P H2' P2P: H2* P2P HO2' P2P:*HO2 P2P H1' P2P: H1* P2P HD1 P2S:1HD P2S HD2 P2S:2HD P2S HF1 P2S:1HF P2S HF2 P2S:2HF P2S HH1 P2S:1HH P2S HH2 P2S:2HH P2S HH3 P2S:3HH P2S HG1 P2S:1HG P2S HG2 P2S:2HG P2S HB1 P2S:1HB P2S HB2 P2S:2HB P2S HN1 P2S:1HN P2S HN2 P2S:2HN P2S HOP2 P2T:2HOP P2T H5' P2T:1H5* P2T H5'' P2T:2H5* P2T H4' P2T: H4* P2T H1' P2T: H1* P2T H71 P2T:1H5M P2T H72 P2T:2H5M P2T H73 P2T:3H5M P2T H2' P2T: H2* P2T HB'1 P2T:1HB' P2T HB'2 P2T:2HB' P2T HC'1 P2T:1HC' P2T HC'2 P2T:2HC' P2T HD'1 P2T:1HD' P2T HD'2 P2T:2HD' P2T HD'3 P2T:3HD' P2T H3' P2T: H3* P2T HO3' P2T:H3T P2T HOP3 P2T:3HOP P2T H1' P2U: H1* P2U H2' P2U:1H2* P2U H2'' P2U:2H2* P2U H3' P2U: H3* P2U H4' P2U: H4* P2U HO3' P2U:H3T P2U H5' P2U:1H5* P2U H5'' P2U:2H5* P2U HOP2 P2U:2HOP P2U HOP3 P2U:3HOP P2U HNA1 P2Y:1HNA P2Y HNA2 P2Y:2HNA P2Y H1 P2Y:1H P2Y H2 P2Y:2H P2Y H P2Y: HN P2Y HD3 P2Y:1HD P2Y HD2 P2Y:2HD P2Y HG3 P2Y:1HG P2Y HG2 P2Y:2HG P2Y HB2 P2Y:1HB P2Y HB3 P2Y:2HB P2Y H211 P33:1H21 P33 H212 P33:2H21 P33 H201 P33:1H20 P33 H202 P33:2H20 P33 H181 P33:1H18 P33 H182 P33:2H18 P33 H171 P33:1H17 P33 H172 P33:2H17 P33 H151 P33:1H15 P33 H152 P33:2H15 P33 H141 P33:1H14 P33 H142 P33:2H14 P33 H121 P33:1H12 P33 H122 P33:2H12 P33 H111 P33:1H11 P33 H112 P33:2H11 P33 H91 P33:1H9 P33 H92 P33:2H9 P33 H81 P33:1H8 P33 H82 P33:2H8 P33 H61 P33:1H6 P33 H62 P33:2H6 P33 H51 P33:1H5 P33 H52 P33:2H5 P33 H31 P33:1H3 P33 H32 P33:2H3 P33 H21 P33:1H2 P33 H22A P33:2H2 P33 HAA1 P34:1HAA P34 HAA2 P34:2HAA P34 HAA3 P34:3HAA P34 HAB1 P34:1HAB P34 HAB2 P34:2HAB P34 HAB3 P34:3HAB P34 HA1 P34:1HA P34 HA2 P34:2HA P34 H441 P3A:1H44 P3A H442 P3A:2H44 P3A H451 P3A:1H45 P3A H452 P3A:2H45 P3A H461 P3A:1H46 P3A H462 P3A:2H46 P3A H471 P3A:1H47 P3A H472 P3A:2H47 P3A H481 P3A:1H48 P3A H482 P3A:2H48 P3A H491 P3A:1H49 P3A H492 P3A:2H49 P3A H501 P3A:1H50 P3A H502 P3A:2H50 P3A H511 P3A:1H51 P3A H512 P3A:2H51 P3A H521 P3A:1H52 P3A H522 P3A:2H52 P3A H531 P3A:1H53 P3A H532 P3A:2H53 P3A H541 P3A:1H54 P3A H542 P3A:2H54 P3A H551 P3A:1H55 P3A H552 P3A:2H55 P3A H561 P3A:1H56 P3A H562 P3A:2H56 P3A H571 P3A:1H57 P3A H572 P3A:2H57 P3A H581 P3A:1H58 P3A H582 P3A:2H58 P3A H583 P3A:3H58 P3A H401 P3A:1H40 P3A H402 P3A:2H40 P3A H391 P3A:1H39 P3A H392 P3A:2H39 P3A H141 P3A:1H14 P3A H142 P3A:2H14 P3A H81 P3A:1H8 P3A H82 P3A:2H8 P3A H11 P3A:1H1 P3A H12 P3A:2H1 P3A H41 P3A:1H4 P3A H42 P3A:2H4 P3A H221 P3A:1H22 P3A H222 P3A:2H22 P3A H231 P3A:1H23 P3A H232 P3A:2H23 P3A H241 P3A:1H24 P3A H242 P3A:2H24 P3A H251 P3A:1H25 P3A H252 P3A:2H25 P3A H261 P3A:1H26 P3A H262 P3A:2H26 P3A H271 P3A:1H27 P3A H272 P3A:2H27 P3A H281 P3A:1H28 P3A H282 P3A:2H28 P3A H311 P3A:1H31 P3A H312 P3A:2H31 P3A H321 P3A:1H32 P3A H322 P3A:2H32 P3A H331 P3A:1H33 P3A H332 P3A:2H33 P3A H341 P3A:1H34 P3A H342 P3A:2H34 P3A H351 P3A:1H35 P3A H352 P3A:2H35 P3A H361 P3A:1H36 P3A H362 P3A:2H36 P3A H363 P3A:3H36 P3A HAN1 P3D:1HAN P3D HAN2 P3D:2HAN P3D HAA1 P3D:1HAA P3D HAA2 P3D:2HAA P3D HAA3 P3D:3HAA P3D HAG1 P3D:1HAG P3D HAM1 P3D:1HAM P3D HAM2 P3D:2HAM P3D HAL1 P3D:1HAL P3D HAL2 P3D:2HAL P3D HAK1 P3D:1HAK P3D HAK2 P3D:2HAK P3D HAJ1 P3D:1HAJ P3D HAJ2 P3D:2HAJ P3D HAI1 P3D:1HAI P3D HAI2 P3D:2HAI P3D HAB1 P3D:1HAB P3D HAB2 P3D:2HAB P3D H51 P3F:1H5 P3F H52 P3F:2H5 P3F H11 P3F:1H1 P3F H12A P3F:2H1 P3F H13A P3F:3H1 P3F H91 P3F:1H9 P3F H92 P3F:2H9 P3F H101 P3G:1H10 P3G H102 P3G:2H10 P3G H111 P3G:1H11 P3G H112 P3G:2H11 P3G H121 P3G:1H12 P3G H122 P3G:2H12 P3G H131 P3G:1H13 P3G H132 P3G:2H13 P3G H141 P3G:1H14 P3G H142 P3G:2H14 P3G H151 P3G:1H15 P3G H152 P3G:2H15 P3G H162 P3G:2H16 P3G H161 P3G:1H16 P3G HOP1 P3M:1HOP P3M HOP2 P3M:2HOP P3M HOA2 P3M:2HOA P3M HOA3 P3M:3HOA P3M HOA4 P3M:4HOA P3M H6A1 P3M:1H6A P3M H6A2 P3M:2H6A P3M HOB2 P3M:2HOB P3M HOB4 P3M:4HOB P3M H6B1 P3M:1H6B P3M H6B2 P3M:2H6B P3M HOB6 P3M:6HOB P3M HOC1 P3M:1HOC P3M HOC2 P3M:2HOC P3M HOC4 P3M:4HOC P3M H6C1 P3M:1H6C P3M H6C2 P3M:2H6C P3M HOC6 P3M:6HOC P3M HNP1 P3P:1HNP P3P HNP2 P3P:2HNP P3P HBP1 P3P:1HBP P3P HBP2 P3P:2HBP P3P HGP1 P3P:1HGP P3P HGP2 P3P:2HGP P3P HEP1 P3P:1HEP P3P HEP2 P3P:2HEP P3P HEP3 P3P:3HEP P3P HO3 P3S:3HO P3S HO2 P3S:2HO P3S HEC1 P3S:1HEC P3S HEC2 P3S:2HEC P3S HEC3 P3S:3HEC P3S HGC1 P3S:1HGC P3S HGC2 P3S:2HGC P3S HBC1 P3S:1HBC P3S HBC2 P3S:2HBC P3S HN1 P3S:1HN P3S HN2 P3S:2HN P3S HAM1 P3T:1HAM P3T HAM2 P3T:2HAM P3T HAA1 P3T:1HAA P3T HAA2 P3T:2HAA P3T HAA3 P3T:3HAA P3T HAG1 P3T:1HAG P3T HAG2 P3T:2HAG P3T HAL1 P3T:1HAL P3T HAL2 P3T:2HAL P3T HAK1 P3T:1HAK P3T HAK2 P3T:2HAK P3T HAJ1 P3T:1HAJ P3T HAJ2 P3T:2HAJ P3T HAI1 P3T:1HAI P3T HAI2 P3T:2HAI P3T HAB1 P3T:1HAB P3T HAB2 P3T:2HAB P3T H181 P44:1H18 P44 H182 P44:2H18 P44 H201 P44:1H20 P44 H202 P44:2H20 P44 H211 P44:1H21 P44 H212 P44:2H21 P44 H221 P44:1H22 P44 H222 P44:2H22 P44 H231 P44:1H23 P44 H232 P44:2H23 P44 H241 P44:1H24 P44 H242 P44:2H24 P44 H181 P45:1H18 P45 H182 P45:2H18 P45 H21A P4C:1H2 P4C H22 P4C:2H2 P4C H31 P4C:1H3 P4C H32 P4C:2H3 P4C H51 P4C:1H5 P4C H52 P4C:2H5 P4C H61 P4C:1H6 P4C H62 P4C:2H6 P4C H81 P4C:1H8 P4C H82 P4C:2H8 P4C H91 P4C:1H9 P4C H92 P4C:2H9 P4C H111 P4C:1H11 P4C H112 P4C:2H11 P4C H121 P4C:1H12 P4C H122 P4C:2H12 P4C H141 P4C:1H14 P4C H142 P4C:2H14 P4C H151 P4C:1H15 P4C H152 P4C:2H15 P4C H171 P4C:1H17 P4C H172 P4C:2H17 P4C H181 P4C:1H18 P4C H182 P4C:2H18 P4C H201 P4C:1H20 P4C H202 P4C:2H20 P4C H81 P4G:1H8 P4G H82 P4G:2H8 P4G H83 P4G:3H8 P4G H71 P4G:1H7 P4G H72 P4G:2H7 P4G H61 P4G:1H6 P4G H62 P4G:2H6 P4G H51 P4G:1H5 P4G H52 P4G:2H5 P4G H41 P4G:1H4 P4G H42 P4G:2H4 P4G H31 P4G:1H3 P4G H32 P4G:2H3 P4G H21 P4G:1H2 P4G H22 P4G:2H2 P4G H11 P4G:1H1 P4G H12 P4G:2H1 P4G H13 P4G:3H1 P4G H8C1 P4O:1H8C P4O H8C2 P4O:2H8C P4O H9C1 P4O:1H9C P4O H9C2 P4O:2H9C P4O H181 P55:1H18 P55 H182 P55:2H18 P55 H191 P55:1H19 P55 H192 P55:2H19 P55 H211 P55:1H21 P55 H212 P55:2H21 P55 H221 P55:1H22 P55 H222 P55:2H22 P55 H231 P55:1H23 P55 H232 P55:2H23 P55 H241 P55:1H24 P55 H242 P55:2H24 P55 H243 P55:3H24 P55 HB1 P5A:1HB P5A HB2 P5A:2HB P5A HG1 P5A:1HG P5A HG2 P5A:2HG P5A HD1 P5A:1HD P5A HD2 P5A:2HD P5A H1'1 P5A:1H1* P5A H1'2 P5A:2H1* P5A H4' P5A: H4* P5A H1' P5A: H1* P5A H61 P5A:1H6 P5A H62 P5A:2H6 P5A H2' P5A: H2* P5A HO'2 P5A:2HO* P5A H3' P5A: H3* P5A H181 P5B:1H18 P5B H182 P5B:2H18 P5B H191 P5B:1H19 P5B H192 P5B:2H19 P5B H211 P5B:1H21 P5B H212 P5B:2H21 P5B HN31 P5B:1HN3 P5B HN32 P5B:2HN3 P5B H11A P5B:1H1 P5B H12 P5B:2H1 P5B H91 P5B:1H9 P5B H92 P5B:2H9 P5B H81 P5B:1H8 P5B H82 P5B:2H8 P5B H83 P5B:3H8 P5B HN21 P5B:1HN2 P5B HN22 P5B:2HN2 P5B HO2' P5P:'HO2 P5P HO3' P5P:'HO3 P5P H5'1 P5P:1H5' P5P H5'2 P5P:2H5' P5P HOP2 P5P:2HOP P5P HOP3 P5P:3HOP P5P H301 P63:1H30 P63 H302 P63:2H30 P63 H303 P63:3H30 P63 H171 P6C:1H17 P6C H172 P6C:2H17 P6C H61 P6C:1H6 P6C H62 P6C:2H6 P6C H63 P6C:3H6 P6C H41 P6C:1H4 P6C H42 P6C:2H4 P6C H43 P6C:3H4 P6C H21 P6G:1H2 P6G H22 P6G:2H2 P6G H31 P6G:1H3 P6G H32 P6G:2H3 P6G H51 P6G:1H5 P6G H52 P6G:2H5 P6G H61 P6G:1H6 P6G H62 P6G:2H6 P6G H81 P6G:1H8 P6G H82 P6G:2H8 P6G H91 P6G:1H9 P6G H92 P6G:2H9 P6G H111 P6G:1H11 P6G H112 P6G:2H11 P6G H121 P6G:1H12 P6G H122 P6G:2H12 P6G H141 P6G:1H14 P6G H142 P6G:2H14 P6G H151 P6G:1H15 P6G H152 P6G:2H15 P6G H171 P6G:1H17 P6G H172 P6G:2H17 P6G H181 P6G:1H18 P6G H182 P6G:2H18 P6G H11 P6L:1H1 P6L H12 P6L:2H1 P6L H61 P6L:1H6 P6L H62 P6L:2H6 P6L H71 P6L:1H7 P6L H72 P6L:2H7 P6L H181 P6L:1H18 P6L H182 P6L:2H18 P6L H191 P6L:1H19 P6L H192 P6L:2H19 P6L H201 P6L:1H20 P6L H202 P6L:2H20 P6L H211 P6L:1H21 P6L H212 P6L:2H21 P6L H241 P6L:1H24 P6L H242 P6L:2H24 P6L H251 P6L:1H25 P6L H252 P6L:2H25 P6L H261 P6L:1H26 P6L H262 P6L:2H26 P6L H271 P6L:1H27 P6L H272 P6L:2H27 P6L H281 P6L:1H28 P6L H282 P6L:2H28 P6L H291 P6L:1H29 P6L H292 P6L:2H29 P6L H301 P6L:1H30 P6L H302 P6L:2H30 P6L H311 P6L:1H31 P6L H312 P6L:2H31 P6L H321 P6L:1H32 P6L H322 P6L:2H32 P6L H351 P6L:1H35 P6L H352 P6L:2H35 P6L H361 P6L:1H36 P6L H362 P6L:2H36 P6L H371 P6L:1H37 P6L H372 P6L:2H37 P6L H381 P6L:1H38 P6L H382 P6L:2H38 P6L H391 P6L:1H39 P6L H392 P6L:2H39 P6L H401 P6L:1H40 P6L H402 P6L:2H40 P6L H411 P6L:1H41 P6L H412 P6L:2H41 P6L H421 P6L:1H42 P6L H422 P6L:2H42 P6L H431 P6L:1H43 P6L H432 P6L:2H43 P6L H441 P6L:1H44 P6L H442 P6L:2H44 P6L H443 P6L:3H44 P6L H451 P6L:1H45 P6L H452 P6L:2H45 P6L H461 P6L:1H46 P6L H462 P6L:2H46 P6L H471 P6L:1H47 P6L H472 P6L:2H47 P6L H481 P6L:1H48 P6L H482 P6L:2H48 P6L H491 P6L:1H49 P6L H492 P6L:2H49 P6L H493 P6L:3H49 P6L H501 P6L:1H50 P6L H502 P6L:2H50 P6L H321 P90:1H32 P90 H322 P90:2H32 P90 H121 P90:1H12 P90 H122 P90:2H12 P90 HN21 PA1:1HN2 PA1 HN22 PA1:2HN2 PA1 H61 PA1:1H6 PA1 H62 PA1:2H6 PA1 HN11 PA2:1HN1 PA2 HN12 PA2:2HN1 PA2 H41 PA2:1H4 PA2 H42 PA2:2H4 PA2 HN51 PA2:1HN5 PA2 HN52 PA2:2HN5 PA2 H61 PA2:1H6 PA2 H62 PA2:2H6 PA2 H11 PA3:1H1 PA3 H12 PA3:2H1 PA3 H31 PA3:1H3 PA3 H32 PA3:2H3 PA3 H51 PA3:1H5 PA3 H52 PA3:2H5 PA3 HN31 PA4:1HN3 PA4 HN32 PA4:2HN3 PA4 H61 PA4:1H6 PA4 H62 PA4:2H6 PA4 HN61 PA4:1HN6 PA4 HN62 PA4:2HN6 PA4 HOP2 PA5:2HOP PA5 HOP3 PA5:3HOP PA5 H321 PA6:1H32 PA6 H322 PA6:2H32 PA6 H331 PA6:1H33 PA6 H332 PA6:2H33 PA6 H341 PA6:1H34 PA6 H342 PA6:2H34 PA6 H351 PA6:1H35 PA6 H352 PA6:2H35 PA6 H353 PA6:3H35 PA6 H31 PA6:1H3 PA6 H32 PA6:2H3 PA6 H11 PA6:1H1 PA6 H12 PA6:2H1 PA6 H5' PA7: H5* PA7 H511 PA7:1H51 PA7 H512 PA7:2H51 PA7 H521 PA7:1H52 PA7 H522 PA7:2H52 PA7 H531 PA7:1H53 PA7 H532 PA7:2H53 PA7 H533 PA7:3H53 PA7 H4' PA7: H4* PA7 H3' PA7: H3* PA7 H2' PA7: H2* PA7 H1' PA7: H1* PA7 HN61 PA7:1HN6 PA7 HN62 PA7:2HN6 PA7 HM1 PAA:1HM PAA HM2 PAA:2HM PAA HM3 PAA:3HM PAA H2'1 PAA:1H2' PAA H2'2 PAA:2H2' PAA HO2' PAB:'HO2 PAB HN41 PAB:1HN4 PAB HN42 PAB:2HN4 PAB H21 PAC:1H2 PAC H22 PAC:2H2 PAC HOA2 PAD:2HOA PAD H51A PAD:AH51 PAD H52A PAD:AH52 PAD H4B PAD:AH4* PAD H3B PAD:AH3* PAD HO3A PAD:AHO3 PAD H2B PAD:AH2* PAD HO2A PAD:AHO2 PAD H1B PAD:AH1* PAD H8A PAD: AH8 PAD H61A PAD:AH61 PAD H62A PAD:AH62 PAD H2A PAD: AH2 PAD H51N PAD:NH51 PAD H52N PAD:NH52 PAD H4D PAD:NH4* PAD H3D PAD:NH3* PAD HO3N PAD:NHO3 PAD H2D PAD:NH2* PAD HO2N PAD:NHO2 PAD H1D PAD:NH1* PAD H2N PAD: NH2 PAD H71N PAD:NH71 PAD H72N PAD:NH72 PAD H4N PAD: NH4 PAD H5N PAD: NH5 PAD H6N PAD: NH6 PAD HOP1 PAE:1HOP PAE HOP2 PAE:2HOP PAE H11 PAE:1H1 PAE H12 PAE:2H1 PAE H21 PAF:1H2 PAF HO31 PAF:1HO3 PAF H41 PAF:1H4 PAF H42 PAF:2H4 PAF H43 PAF:3H4 PAF H51 PAF:1H5 PAF H52 PAF:2H5 PAF H53 PAF:3H5 PAF H61 PAF:1H6 PAF H62 PAF:2H6 PAF HO41 PAF:1HO4 PAF H31 PAG:1H3 PAG H32 PAG:2H3 PAG HOP2 PAG:2HOP PAG HOP3 PAG:3HOP PAG H11 PAH:1H1 PAH H12 PAH:2H1 PAH HOP2 PAH:2HOP PAH HOP3 PAH:3HOP PAH HC61 PAI:1HC6 PAI HC62 PAI:2HC6 PAI HC11 PAI:1HC1 PAI HC12 PAI:2HC1 PAI HC71 PAI:1HC7 PAI HC72 PAI:2HC7 PAI HC91 PAI:1HC9 PAI HC92 PAI:2HC9 PAI HOP2 PAJ:2HOP PAJ H5'1 PAJ:1H5* PAJ H5'2 PAJ:2H5* PAJ H4' PAJ: H4* PAJ H3' PAJ: H3* PAJ H2' PAJ: H2* PAJ HO'2 PAJ:2HO* PAJ H1' PAJ: H1* PAJ H61 PAJ:1H6 PAJ H62 PAJ:2H6 PAJ H141 PAJ:1H14 PAJ H142 PAJ:2H14 PAJ H143 PAJ:3H14 PAJ H151 PAJ:1H15 PAJ H152 PAJ:2H15 PAJ H153 PAJ:3H15 PAJ H161 PAJ:1H16 PAJ H162 PAJ:2H16 PAJ HOP2 PAL:2HOP PAL HOP3 PAL:3HOP PAL H1P1 PAL:1H1P PAL H1P2 PAL:2H1P PAL H31 PAL:1H3 PAL H32 PAL:2H3 PAL H21 PAM:1H2 PAM H22 PAM:2H2 PAM H31 PAM:1H3 PAM H32 PAM:2H3 PAM H41 PAM:1H4 PAM H42 PAM:2H4 PAM H51 PAM:1H5 PAM H52 PAM:2H5 PAM H61 PAM:1H6 PAM H62 PAM:2H6 PAM H71 PAM:1H7 PAM H72 PAM:2H7 PAM H81 PAM:1H8 PAM H82 PAM:2H8 PAM H111 PAM:1H11 PAM H112 PAM:2H11 PAM H121 PAM:1H12 PAM H122 PAM:2H12 PAM H131 PAM:1H13 PAM H132 PAM:2H13 PAM H141 PAM:1H14 PAM H142 PAM:2H14 PAM H151 PAM:1H15 PAM H152 PAM:2H15 PAM H161 PAM:1H16 PAM H162 PAM:2H16 PAM H163 PAM:3H16 PAM H51 PAN:1H5 PAN H52 PAN:2H5 PAN HOP2 PAN:2HOP PAN HOP3 PAN:3HOP PAN HN1 PAO:1HN PAO HN2 PAO:2HN PAO HB1 PAO:1HB PAO HB2 PAO:2HB PAO HG1 PAO:1HG PAO HG2 PAO:2HG PAO HD1 PAO:1HD PAO HD2 PAO:2HD PAO HP1 PAO:1HP PAO HP2 PAO:2HP PAO HOP2 PAO:2HOP PAO HOP3 PAO:3HOP PAO HOB2 PAP:2HOB PAP HOB3 PAP:3HOB PAP HOA2 PAP:2HOA PAP H5'1 PAP:1H5* PAP H5'2 PAP:2H5* PAP H4' PAP: H4* PAP H3' PAP: H3* PAP H2' PAP: H2* PAP HO2' PAP:*HO2 PAP H1' PAP: H1* PAP HN61 PAP:1HN6 PAP HN62 PAP:2HN6 PAP H PAQ:1HN PAQ H2 PAQ:2HN PAQ HB2 PAQ:1HB PAQ HB3 PAQ:2HB PAQ HH PAQ: HOH PAQ HC2 PAQ: H2 PAQ HN21 PAR:1HN2 PAR HN22 PAR:2HN2 PAR HO31 PAR:1HO3 PAR HO41 PAR:1HO4 PAR H611 PAR:1H61 PAR H612 PAR:2H61 PAR HO61 PAR:1HO6 PAR H121 PAR:1H12 PAR H122 PAR:2H12 PAR H221 PAR:1H22 PAR H222 PAR:2H22 PAR H321 PAR:1H32 PAR H322 PAR:2H32 PAR HO62 PAR:2HO6 PAR HO23 PAR:3HO2 PAR H531 PAR:1H53 PAR H532 PAR:2H53 PAR HO53 PAR:3HO5 PAR H241 PAR:1H24 PAR H242 PAR:2H24 PAR HO34 PAR:4HO3 PAR HO44 PAR:4HO4 PAR H641 PAR:1H64 PAR H642 PAR:2H64 PAR HN61 PAR:1HN6 PAR HN62 PAR:2HN6 PAR HB1 PAS:1HB PAS HB2 PAS:2HB PAS HO1 PAS:1HO PAS HO2 PAS:2HO PAS H2 PAT: HN2 PAT HB2 PAT:1HB PAT HB3 PAT:2HB PAT HOP2 PAT:2HOP PAT HOP3 PAT:3HOP PAT H21 PAU:1H2 PAU H22 PAU:2H2 PAU H31 PAU:1H3 PAU H32 PAU:2H3 PAU H33 PAU:3H3 PAU H41 PAU:1H4 PAU H42 PAU:2H4 PAU H43 PAU:3H4 PAU H5' PAU: H5* PAU H81 PAU:1H8 PAU H82 PAU:2H8 PAU H91 PAU:1H9 PAU H92 PAU:2H9 PAU H111 PAV:1H11 PAV H112 PAV:2H11 PAV H113 PAV:3H11 PAV H61 PAV:1H6 PAV H62 PAV:2H6 PAV HN11 PAW:1HN1 PAW HN12 PAW:2HN1 PAW H21 PAW:1H2 PAW H22 PAW:2H2 PAW H31 PAW:1H3 PAW H32 PAW:2H3 PAW H51 PAW:1H5 PAW H52 PAW:2H5 PAW H61 PAW:1H6 PAW H62 PAW:2H6 PAW H81 PAW:1H8 PAW H82 PAW:2H8 PAW H91 PAW:1H9 PAW H92 PAW:2H9 PAW H111 PAW:1H11 PAW H112 PAW:2H11 PAW H121 PAW:1H12 PAW H122 PAW:2H12 PAW H131 PAW:1H13 PAW H132 PAW:2H13 PAW H6A1 PAX:1H6A PAX H6A2 PAX:2H6A PAX H5'1 PAX:1H5* PAX H5'2 PAX:2H5* PAX H4' PAX: H4* PAX H1' PAX: H1* PAX H2' PAX: H2* PAX H3' PAX: H3* PAX H51 PAX:1H5 PAX H52 PAX:2H5 PAX H21 PAX:1H2 PAX H22 PAX:2H2 PAX HM51 PAX:1HM5 PAX HM52 PAX:2HM5 PAX HM53 PAX:3HM5 PAX H71 PB1:1H7 PB1 H72 PB1:2H7 PB1 H61 PB1:1H6 PB1 H62 PB1:2H6 PB1 H21 PB1:1H2 PB1 H22 PB1:2H2 PB1 HN11 PB1:1HN1 PB1 HN12 PB1:2HN1 PB1 H91 PB1:1H9 PB1 H92 PB1:2H9 PB1 H51 PB1:1H5 PB1 H52 PB1:2H5 PB1 H111 PB1:1H11 PB1 H112 PB1:2H11 PB1 H121 PB1:1H12 PB1 H122 PB1:2H12 PB1 H71 PB3:1H7 PB3 H72 PB3:2H7 PB3 H73 PB3:3H7 PB3 H81 PB3:1H8 PB3 H82 PB3:2H8 PB3 H83 PB3:3H8 PB3 H111 PB3:1H11 PB3 H112 PB3:2H11 PB3 H171 PB3:1H17 PB3 H172 PB3:2H17 PB3 H71 PB4:1H7 PB4 H72 PB4:2H7 PB4 H73 PB4:3H7 PB4 H81 PB4:1H8 PB4 H82 PB4:2H8 PB4 H83 PB4:3H8 PB4 H101 PB4:1H10 PB4 H102 PB4:2H10 PB4 H131 PB4:1H13 PB4 H132 PB4:2H13 PB4 H111 PB5:1H11 PB5 H112 PB5:2H11 PB5 H171 PB5:1H17 PB5 H172 PB5:2H17 PB5 HA1 PBA:1HA PBA HA2 PBA:2HA PBA HB1 PBA:1HB PBA HB2 PBA:2HB PBA H PBB:1HN PBB H2 PBB:2HN PBB HB2 PBB:1HB PBB HB3 PBB:2HB PBB HC2 PBB: H2 PBB H71 PBB:1H7 PBB H72 PBB:2H7 PBB HD1 PBE:1HD PBE HD2 PBE:2HD PBE HB1 PBE:1HB PBE HB2 PBE:2HB PBE HG1 PBE:1HG PBE HG2 PBE:2HG PBE HE1 PBE:1HE PBE HE2 PBE:2HE PBE HE3 PBE:3HE PBE HF1 PBE:1HF PBE HF2 PBE:2HF PBE HF3 PBE:3HF PBE H PBF:1HN PBF H2 PBF:2HN PBF HB2 PBF:1HB PBF HB3 PBF:2HB PBF HHA2 PBG:2HHA PBG HHA1 PBG:1HHA PBG H4A1 PBG:1H4A PBG H5A2 PBG:2H5A PBG H5A1 PBG:1H5A PBG H2AO PBG:OH2A PBG H7A2 PBG:2H7A PBG H7A1 PBG:1H7A PBG H8A2 PBG:2H8A PBG H8A1 PBG:1H8A PBG H4AO PBG:OH4A PBG H12 PBG:2H1 PBG H11 PBG:1H1 PBG HN11 PBI:1HN1 PBI HN12 PBI:2HN1 PBI HA11 PBI:1HA1 PBI HA12 PBI:2HA1 PBI HA31 PBI:1HA3 PBI HA32 PBI:2HA3 PBI HB21 PBI:1HB2 PBI HB22 PBI:2HB2 PBI H11 PBM:1H1 PBM H12 PBM:2H1 PBM H13 PBM:3H1 PBM H21 PBM:1H2 PBM H22 PBM:2H2 PBM H23 PBM:3H2 PBM H31 PBM:1H3 PBM H32 PBM:2H3 PBM H33 PBM:3H3 PBM H11 PBN:1H1 PBN H12 PBN:2H1 PBN H21 PBN:1H2 PBN H22 PBN:2H2 PBN H31 PBN:1H3 PBN H32 PBN:2H3 PBN H41 PBN:1H4 PBN H42 PBN:2H4 PBN HN1 PBN:1HN PBN HN2 PBN:2HN PBN H103 PBO:3H10 PBO H101 PBO:1H10 PBO H102 PBO:2H10 PBO H111 PBO:1H11 PBO H112 PBO:2H11 PBO H121 PBO:1H12 PBO H122 PBO:2H12 PBO HH1 PBP:1HH PBP HH2 PBP:2HH PBP HH3 PBP:3HH PBP H171 PBS:1H17 PBS H172 PBS:2H17 PBS H173 PBS:3H17 PBS H161 PBS:1H16 PBS H162 PBS:2H16 PBS H151 PBS:1H15 PBS H152 PBS:2H15 PBS H141 PBS:1H14 PBS H142 PBS:2H14 PBS H131 PBS:1H13 PBS H132 PBS:2H13 PBS H121 PBS:1H12 PBS H122 PBS:2H12 PBS H111 PBS:1H11 PBS H112 PBS:2H11 PBS H101 PBS:1H10 PBS H102 PBS:2H10 PBS H91 PBS:1H9 PBS H92 PBS:2H9 PBS H81 PBS:1H8 PBS H82 PBS:2H8 PBS H71 PBS:1H7 PBS H72 PBS:2H7 PBS H61 PBS:1H6 PBS H62 PBS:2H6 PBS H51 PBS:1H5 PBS H52 PBS:2H5 PBS H41 PBS:1H4 PBS H42 PBS:2H4 PBS H191 PBS:1H19 PBS H192 PBS:2H19 PBS H201 PBS:1H20 PBS H202 PBS:2H20 PBS H211 PBS:1H21 PBS H212 PBS:2H21 PBS H221 PBS:1H22 PBS H222 PBS:2H22 PBS H231 PBS:1H23 PBS H232 PBS:2H23 PBS H241 PBS:1H24 PBS H242 PBS:2H24 PBS H251 PBS:1H25 PBS H252 PBS:2H25 PBS H253 PBS:3H25 PBS H1A PBS:1H PBS H2A PBS:2H PBS HG51 PBS:1HG5 PBS HG52 PBS:2HG5 PBS H5'1 PBT:1H5* PBT H5'2 PBT:2H5* PBT H4' PBT: H4* PBT H3' PBT: H3* PBT H2'1 PBT:1H2* PBT H2'2 PBT:2H2* PBT H1' PBT: H1* PBT H5M1 PBT:1H5M PBT H5M2 PBT:2H5M PBT H5M3 PBT:3H5M PBT H6C1 PBT:1H6C PBT H6C2 PBT:2H6C PBT H3'1 PBU:1H3' PBU H3'2 PBU:2H3' PBU H1'1 PBU:1H1' PBU H1'2 PBU:2H1' PBU H02 PBU:2H0 PBU H03 PBU:3H0 PBU H06 PBU:6H0 PBU H81 PBU:1H8 PBU H82 PBU:2H8 PBU H91 PBU:1H9 PBU H92 PBU:2H9 PBU H121 PBU:1H12 PBU H122 PBU:2H12 PBU H131 PBU:1H13 PBU H132 PBU:2H13 PBU H141 PBU:1H14 PBU H142 PBU:2H14 PBU H143 PBU:3H14 PBU HN21 PBZ:1HN2 PBZ HN22 PBZ:2HN2 PBZ HN31 PBZ:1HN3 PBZ HN32 PBZ:2HN3 PBZ HN11 PBZ:1HN1 PBZ HN12 PBZ:2HN1 PBZ H11 PC:1H1 PC H12 PC:2H1 PC H21 PC:1H2 PC H22 PC:2H2 PC H31 PC:1H3 PC H32 PC:2H3 PC H33 PC:3H3 PC H41 PC:1H4 PC H42 PC:2H4 PC H43 PC:3H4 PC H51 PC:1H5 PC H52 PC:2H5 PC H53 PC:3H5 PC HL71 PC0:1HL7 PC0 HL72 PC0:2HL7 PC0 HL73 PC0:3HL7 PC0 H111 PC0:1H11 PC0 H112 PC0:2H11 PC0 H121 PC0:1H12 PC0 H122 PC0:2H12 PC0 HA1 PC0:1HA PC0 HA2 PC0:2HA PC0 HB1 PC0:1HB PC0 HB2 PC0:2HB PC0 HB3 PC0:3HB PC0 H111 PC1:1H11 PC1 H112 PC1:2H11 PC1 H121 PC1:1H12 PC1 H122 PC1:2H12 PC1 H131 PC1:1H13 PC1 H132 PC1:2H13 PC1 H133 PC1:3H13 PC1 H141 PC1:1H14 PC1 H142 PC1:2H14 PC1 H143 PC1:3H14 PC1 H151 PC1:1H15 PC1 H152 PC1:2H15 PC1 H153 PC1:3H15 PC1 H11 PC1:1H1 PC1 H12 PC1:2H1 PC1 H221 PC1:1H22 PC1 H222 PC1:2H22 PC1 H231 PC1:1H23 PC1 H232 PC1:2H23 PC1 H241 PC1:1H24 PC1 H242 PC1:2H24 PC1 H251 PC1:1H25 PC1 H252 PC1:2H25 PC1 H261 PC1:1H26 PC1 H262 PC1:2H26 PC1 H271 PC1:1H27 PC1 H272 PC1:2H27 PC1 H281 PC1:1H28 PC1 H282 PC1:2H28 PC1 H291 PC1:1H29 PC1 H292 PC1:2H29 PC1 H2A1 PC1:1H2A PC1 H2A2 PC1:2H2A PC1 H2B1 PC1:1H2B PC1 H2B2 PC1:2H2B PC1 H2C1 PC1:1H2C PC1 H2C2 PC1:2H2C PC1 H2D1 PC1:1H2D PC1 H2D2 PC1:2H2D PC1 H2E1 PC1:1H2E PC1 H2E2 PC1:2H2E PC1 H2F1 PC1:1H2F PC1 H2F2 PC1:2H2F PC1 H2G1 PC1:1H2G PC1 H2G2 PC1:2H2G PC1 H2H1 PC1:1H2H PC1 H2H2 PC1:2H2H PC1 H2I1 PC1:1H2I PC1 H2I2 PC1:2H2I PC1 H2I3 PC1:3H2I PC1 H31 PC1:1H3 PC1 H32 PC1:2H3 PC1 H321 PC1:1H32 PC1 H322 PC1:2H32 PC1 H331 PC1:1H33 PC1 H332 PC1:2H33 PC1 H341 PC1:1H34 PC1 H342 PC1:2H34 PC1 H351 PC1:1H35 PC1 H352 PC1:2H35 PC1 H361 PC1:1H36 PC1 H362 PC1:2H36 PC1 H371 PC1:1H37 PC1 H372 PC1:2H37 PC1 H381 PC1:1H38 PC1 H382 PC1:2H38 PC1 H391 PC1:1H39 PC1 H392 PC1:2H39 PC1 H3A1 PC1:1H3A PC1 H3A2 PC1:2H3A PC1 H3B1 PC1:1H3B PC1 H3B2 PC1:2H3B PC1 H3C1 PC1:1H3C PC1 H3C2 PC1:2H3C PC1 H3D1 PC1:1H3D PC1 H3D2 PC1:2H3D PC1 H3E1 PC1:1H3E PC1 H3E2 PC1:2H3E PC1 H3F1 PC1:1H3F PC1 H3F2 PC1:2H3F PC1 H3G1 PC1:1H3G PC1 H3G2 PC1:2H3G PC1 H3H1 PC1:1H3H PC1 H3H2 PC1:2H3H PC1 H3I1 PC1:1H3I PC1 H3I2 PC1:2H3I PC1 H3I3 PC1:3H3I PC1 H12 PC2:2H1 PC2 H11 PC2:1H1 PC2 H32 PC2:2H3 PC2 H31 PC2:1H3 PC2 H42 PC2:2H4 PC2 H41 PC2:1H4 PC2 H52 PC2:2H5 PC2 H51 PC2:1H5 PC2 H63 PC2:3H6 PC2 H62 PC2:2H6 PC2 H61 PC2:1H6 PC2 H73 PC2:3H7 PC2 H72 PC2:2H7 PC2 H71 PC2:1H7 PC2 H83 PC2:3H8 PC2 H82 PC2:2H8 PC2 H81 PC2:1H8 PC2 H122 PC2:2H12 PC2 H121 PC2:1H12 PC2 H132 PC2:2H13 PC2 H131 PC2:1H13 PC2 H142 PC2:2H14 PC2 H141 PC2:1H14 PC2 H152 PC2:2H15 PC2 H151 PC2:1H15 PC2 H162 PC2:2H16 PC2 H161 PC2:1H16 PC2 H172 PC2:2H17 PC2 H171 PC2:1H17 PC2 H182 PC2:2H18 PC2 H181 PC2:1H18 PC2 H192 PC2:2H19 PC2 H191 PC2:1H19 PC2 H202 PC2:2H20 PC2 H201 PC2:1H20 PC2 H212 PC2:2H21 PC2 H211 PC2:1H21 PC2 H222 PC2:2H22 PC2 H221 PC2:1H22 PC2 H232 PC2:2H23 PC2 H231 PC2:1H23 PC2 H242 PC2:2H24 PC2 H241 PC2:1H24 PC2 H252 PC2:2H25 PC2 H251 PC2:1H25 PC2 H262 PC2:2H26 PC2 H261 PC2:1H26 PC2 H272 PC2:2H27 PC2 H271 PC2:1H27 PC2 H283 PC2:3H28 PC2 H282 PC2:2H28 PC2 H281 PC2:1H28 PC2 H322 PC2:2H32 PC2 H321 PC2:1H32 PC2 H332 PC2:2H33 PC2 H331 PC2:1H33 PC2 H342 PC2:2H34 PC2 H341 PC2:1H34 PC2 H352 PC2:2H35 PC2 H351 PC2:1H35 PC2 H362 PC2:2H36 PC2 H361 PC2:1H36 PC2 H372 PC2:2H37 PC2 H371 PC2:1H37 PC2 H382 PC2:2H38 PC2 H381 PC2:1H38 PC2 H392 PC2:2H39 PC2 H391 PC2:1H39 PC2 H402 PC2:2H40 PC2 H401 PC2:1H40 PC2 H412 PC2:2H41 PC2 H411 PC2:1H41 PC2 H422 PC2:2H42 PC2 H421 PC2:1H42 PC2 H432 PC2:2H43 PC2 H431 PC2:1H43 PC2 H442 PC2:2H44 PC2 H441 PC2:1H44 PC2 H452 PC2:2H45 PC2 H451 PC2:1H45 PC2 H462 PC2:2H46 PC2 H461 PC2:1H46 PC2 H472 PC2:2H47 PC2 H471 PC2:1H47 PC2 H483 PC2:3H48 PC2 H482 PC2:2H48 PC2 H481 PC2:1H48 PC2 HOP2 PC2:2HOP PC2 H81 PC3:1H8 PC3 H82 PC3:2H8 PC3 H83 PC3:3H8 PC3 H91 PC3:1H9 PC3 H92 PC3:2H9 PC3 H93 PC3:3H9 PC3 H101 PC3:1H10 PC3 H102 PC3:2H10 PC3 H103 PC3:3H10 PC3 H111 PC3:1H11 PC3 H112 PC3:2H11 PC3 H113 PC3:3H11 PC3 H121 PC3:1H12 PC3 H122 PC3:2H12 PC3 H221 PC3:1H22 PC3 H222 PC3:2H22 PC3 H141 PC3:1H14 PC3 H142 PC3:2H14 PC3 H151 PC3:1H15 PC3 H152 PC3:2H15 PC3 H161 PC3:1H16 PC3 H162 PC3:2H16 PC3 H171 PC3:1H17 PC3 H172 PC3:2H17 PC3 H181 PC3:1H18 PC3 H182 PC3:2H18 PC3 H192 PC3:2H19 PC3 H191 PC3:1H19 PC3 HO22 PC3:2HO2 PC3 HO32 PC3:2HO3 PC3 H141 PC5:1H14 PC5 H142 PC5:2H14 PC5 H143 PC5:3H14 PC5 H131 PC5:1H13 PC5 H132 PC5:2H13 PC5 H121 PC5:1H12 PC5 H122 PC5:2H12 PC5 H111 PC5:1H11 PC5 H112 PC5:2H11 PC5 H91 PC5:1H9 PC5 H92 PC5:2H9 PC5 H161 PC5:1H16 PC5 H162 PC5:2H16 PC5 H171 PC5:1H17 PC5 H172 PC5:2H17 PC5 H181 PC5:1H18 PC5 H182 PC5:2H18 PC5 H191 PC5:1H19 PC5 H192 PC5:2H19 PC5 H193 PC5:3H19 PC5 H71 PC5:1H7 PC5 H72 PC5:2H7 PC5 H51 PC5:1H5 PC5 H52 PC5:2H5 PC5 H41 PC5:1H4 PC5 H42 PC5:2H4 PC5 H11 PC5:1H1 PC5 H12 PC5:2H1 PC5 H13 PC5:3H1 PC5 H21 PC5:1H2 PC5 H22 PC5:2H2 PC5 H23 PC5:3H2 PC5 H31 PC5:1H3 PC5 H32 PC5:2H3 PC5 H33 PC5:3H3 PC5 HE11 PC6:1HE1 PC6 HE12 PC6:2HE1 PC6 HE21 PC6:1HE2 PC6 HE22 PC6:2HE2 PC6 HM31 PC6:1HM3 PC6 HM32 PC6:2HM3 PC6 HM33 PC6:3HM3 PC6 HM21 PC6:1HM2 PC6 HM22 PC6:2HM2 PC6 HM23 PC6:3HM2 PC6 HM11 PC6:1HM1 PC6 HM12 PC6:2HM1 PC6 HM13 PC6:3HM1 PC6 H391 PC6:1H39 PC6 H392 PC6:2H39 PC6 H401 PC6:1H40 PC6 H402 PC6:2H40 PC6 H271 PC6:1H27 PC6 H272 PC6:2H27 PC6 H281 PC6:1H28 PC6 H282 PC6:2H28 PC6 H291 PC6:1H29 PC6 H292 PC6:2H29 PC6 H301 PC6:1H30 PC6 H302 PC6:2H30 PC6 H311 PC6:1H31 PC6 H312 PC6:2H31 PC6 H321 PC6:1H32 PC6 H322 PC6:2H32 PC6 H331 PC6:1H33 PC6 H332 PC6:2H33 PC6 H341 PC6:1H34 PC6 H342 PC6:2H34 PC6 H351 PC6:1H35 PC6 H352 PC6:2H35 PC6 H361 PC6:1H36 PC6 H362 PC6:2H36 PC6 H371 PC6:1H37 PC6 H372 PC6:2H37 PC6 H373 PC6:3H37 PC6 H21 PC6:1H2 PC6 H22 PC6:2H2 PC6 H31 PC6:1H3 PC6 H32 PC6:2H3 PC6 H41 PC6:1H4 PC6 H42 PC6:2H4 PC6 H51 PC6:1H5 PC6 H52 PC6:2H5 PC6 H61 PC6:1H6 PC6 H62 PC6:2H6 PC6 H71 PC6:1H7 PC6 H72 PC6:2H7 PC6 H81 PC6:1H8 PC6 H82 PC6:2H8 PC6 H91 PC6:1H9 PC6 H92 PC6:2H9 PC6 H101 PC6:1H10 PC6 H102 PC6:2H10 PC6 H111 PC6:1H11 PC6 H112 PC6:2H11 PC6 H121 PC6:1H12 PC6 H122 PC6:2H12 PC6 H131 PC6:1H13 PC6 H132 PC6:2H13 PC6 H141 PC6:1H14 PC6 H142 PC6:2H14 PC6 H151 PC6:1H15 PC6 H152 PC6:2H15 PC6 H161 PC6:1H16 PC6 H162 PC6:2H16 PC6 H171 PC6:1H17 PC6 H172 PC6:2H17 PC6 H181 PC6:1H18 PC6 H182 PC6:2H18 PC6 H191 PC6:1H19 PC6 H192 PC6:2H19 PC6 H201 PC6:1H20 PC6 H202 PC6:2H20 PC6 H211 PC6:1H21 PC6 H212 PC6:2H21 PC6 H221 PC6:1H22 PC6 H222 PC6:2H22 PC6 H231 PC6:1H23 PC6 H232 PC6:2H23 PC6 H241 PC6:1H24 PC6 H242 PC6:2H24 PC6 H251 PC6:1H25 PC6 H252 PC6:2H25 PC6 H253 PC6:3H25 PC6 H481 PC7:1H48 PC7 H482 PC7:2H48 PC7 H483 PC7:3H48 PC7 H471 PC7:1H47 PC7 H472 PC7:2H47 PC7 H461 PC7:1H46 PC7 H462 PC7:2H46 PC7 H451 PC7:1H45 PC7 H452 PC7:2H45 PC7 H441 PC7:1H44 PC7 H442 PC7:2H44 PC7 H431 PC7:1H43 PC7 H432 PC7:2H43 PC7 H421 PC7:1H42 PC7 H422 PC7:2H42 PC7 H411 PC7:1H41 PC7 H412 PC7:2H41 PC7 H401 PC7:1H40 PC7 H402 PC7:2H40 PC7 H391 PC7:1H39 PC7 H392 PC7:2H39 PC7 H381 PC7:1H38 PC7 H382 PC7:2H38 PC7 H371 PC7:1H37 PC7 H372 PC7:2H37 PC7 H361 PC7:1H36 PC7 H362 PC7:2H36 PC7 H351 PC7:1H35 PC7 H352 PC7:2H35 PC7 H341 PC7:1H34 PC7 H342 PC7:2H34 PC7 H331 PC7:1H33 PC7 H332 PC7:2H33 PC7 H321 PC7:1H32 PC7 H322 PC7:2H32 PC7 H11 PC7:1H1 PC7 H12 PC7:2H1 PC7 H41 PC7:1H4 PC7 H42 PC7:2H4 PC7 H51 PC7:1H5 PC7 H52 PC7:2H5 PC7 H71 PC7:1H7 PC7 H72 PC7:2H7 PC7 H73 PC7:3H7 PC7 H81 PC7:1H8 PC7 H82 PC7:2H8 PC7 H83 PC7:3H8 PC7 H61 PC7:1H6 PC7 H62 PC7:2H6 PC7 H63 PC7:3H6 PC7 H31 PC7:1H3 PC7 H32 PC7:2H3 PC7 H121 PC7:1H12 PC7 H122 PC7:2H12 PC7 H131 PC7:1H13 PC7 H132 PC7:2H13 PC7 H141 PC7:1H14 PC7 H142 PC7:2H14 PC7 H151 PC7:1H15 PC7 H152 PC7:2H15 PC7 H161 PC7:1H16 PC7 H162 PC7:2H16 PC7 H171 PC7:1H17 PC7 H172 PC7:2H17 PC7 H181 PC7:1H18 PC7 H182 PC7:2H18 PC7 H191 PC7:1H19 PC7 H192 PC7:2H19 PC7 H201 PC7:1H20 PC7 H202 PC7:2H20 PC7 H211 PC7:1H21 PC7 H212 PC7:2H21 PC7 H221 PC7:1H22 PC7 H222 PC7:2H22 PC7 H231 PC7:1H23 PC7 H232 PC7:2H23 PC7 H241 PC7:1H24 PC7 H242 PC7:2H24 PC7 H251 PC7:1H25 PC7 H252 PC7:2H25 PC7 H261 PC7:1H26 PC7 H262 PC7:2H26 PC7 H263 PC7:3H26 PC7 H481 PC9:1H48 PC9 H482 PC9:2H48 PC9 H483 PC9:3H48 PC9 H471 PC9:1H47 PC9 H472 PC9:2H47 PC9 H461 PC9:1H46 PC9 H462 PC9:2H46 PC9 H451 PC9:1H45 PC9 H452 PC9:2H45 PC9 H441 PC9:1H44 PC9 H442 PC9:2H44 PC9 H431 PC9:1H43 PC9 H432 PC9:2H43 PC9 H421 PC9:1H42 PC9 H422 PC9:2H42 PC9 H411 PC9:1H41 PC9 H412 PC9:2H41 PC9 H401 PC9:1H40 PC9 H402 PC9:2H40 PC9 H391 PC9:1H39 PC9 H392 PC9:2H39 PC9 H381 PC9:1H38 PC9 H382 PC9:2H38 PC9 H351 PC9:1H35 PC9 H352 PC9:2H35 PC9 H341 PC9:1H34 PC9 H342 PC9:2H34 PC9 H331 PC9:1H33 PC9 H332 PC9:2H33 PC9 H321 PC9:1H32 PC9 H322 PC9:2H32 PC9 H11 PC9:1H1 PC9 H12 PC9:2H1 PC9 H41 PC9:1H4 PC9 H42 PC9:2H4 PC9 H51 PC9:1H5 PC9 H52 PC9:2H5 PC9 H71 PC9:1H7 PC9 H72 PC9:2H7 PC9 H73 PC9:3H7 PC9 H81 PC9:1H8 PC9 H82 PC9:2H8 PC9 H83 PC9:3H8 PC9 H61 PC9:1H6 PC9 H62 PC9:2H6 PC9 H63 PC9:3H6 PC9 H31 PC9:1H3 PC9 H32 PC9:2H3 PC9 H121 PC9:1H12 PC9 H122 PC9:2H12 PC9 H131 PC9:1H13 PC9 H132 PC9:2H13 PC9 H141 PC9:1H14 PC9 H142 PC9:2H14 PC9 H151 PC9:1H15 PC9 H152 PC9:2H15 PC9 H161 PC9:1H16 PC9 H162 PC9:2H16 PC9 H171 PC9:1H17 PC9 H172 PC9:2H17 PC9 H181 PC9:1H18 PC9 H182 PC9:2H18 PC9 H191 PC9:1H19 PC9 H192 PC9:2H19 PC9 H201 PC9:1H20 PC9 H202 PC9:2H20 PC9 H211 PC9:1H21 PC9 H212 PC9:2H21 PC9 H221 PC9:1H22 PC9 H222 PC9:2H22 PC9 H231 PC9:1H23 PC9 H232 PC9:2H23 PC9 H241 PC9:1H24 PC9 H242 PC9:2H24 PC9 H251 PC9:1H25 PC9 H252 PC9:2H25 PC9 H261 PC9:1H26 PC9 H262 PC9:2H26 PC9 H263 PC9:3H26 PC9 H PCA: HN PCA HB2 PCA:1HB PCA HB3 PCA:2HB PCA HG2 PCA:1HG PCA HG3 PCA:2HG PCA HM1 PCB:1HM PCB HM2 PCB:2HM PCB HM3 PCB:3HM PCB HM'1 PCB:1HM' PCB HM'2 PCB:2HM' PCB HM'3 PCB:3HM' PCB HB2 PCC:1HB PCC HB3 PCC:2HB PCC HG2 PCC:1HG PCC HG3 PCC:2HG PCC H42 PCD:2H4 PCD H41 PCD:1H4 PCD H1' PCD: H1* PCD H2' PCD: H2* PCD H2O1 PCD:1H2O PCD H3' PCD: H3* PCD H4D PCD: H4* PCD H3O1 PCD:1H3O PCD H5'2 PCD:2H5* PCD H5'1 PCD:1H5* PCD HOA2 PCD:2HOA PCD HOB2 PCD:2HOB PCD H102 PCD:2H10 PCD H101 PCD:1H10 PCD H2'2 PCD:2H2' PCD H2'1 PCD:1H2' PCD HR11 PCD:1HR1 PCD HR12 PCD:2HR1 PCD H PCE:1HN PCE H2 PCE:2HN PCE HB2 PCE:1HB PCE HB3 PCE:2HB PCE HD12 PCE:1HD1 PCE HD13 PCE:2HD1 PCE HD23 PCE:1HD2 PCE HD22 PCE:2HD2 PCE HE12 PCE:1HE1 PCE HE13 PCE:2HE1 PCE HE23 PCE:1HE2 PCE HE22 PCE:2HE2 PCE HZ2 PCE:1HZ PCE HZ3 PCE:2HZ PCE HM1 PCE:1HM PCE HM2 PCE:2HM PCE HB21 PCE:1HB2 PCE HB22 PCE:2HB2 PCE HD31 PCE:1HD3 PCE H111 PCF:1H11 PCF H112 PCF:2H11 PCF H121 PCF:1H12 PCF H122 PCF:2H12 PCF H131 PCF:1H13 PCF H132 PCF:2H13 PCF H133 PCF:3H13 PCF H141 PCF:1H14 PCF H142 PCF:2H14 PCF H143 PCF:3H14 PCF H151 PCF:1H15 PCF H152 PCF:2H15 PCF H153 PCF:3H15 PCF H11 PCF:1H1 PCF H12 PCF:2H1 PCF H21 PCF:1H2 PCF H31 PCF:1H3 PCF H32 PCF:2H3 PCF H321 PCF:1H32 PCF H322 PCF:2H32 PCF H331 PCF:1H33 PCF H332 PCF:2H33 PCF H341 PCF:1H34 PCF H342 PCF:2H34 PCF H351 PCF:1H35 PCF H352 PCF:2H35 PCF H361 PCF:1H36 PCF H362 PCF:2H36 PCF H371 PCF:1H37 PCF H372 PCF:2H37 PCF H381 PCF:1H38 PCF H382 PCF:2H38 PCF H391 PCF:1H39 PCF H392 PCF:2H39 PCF H401 PCF:1H40 PCF H402 PCF:2H40 PCF H411 PCF:1H41 PCF H412 PCF:2H41 PCF H421 PCF:1H42 PCF H422 PCF:2H42 PCF H431 PCF:1H43 PCF H432 PCF:2H43 PCF H221 PCF:1H22 PCF H222 PCF:2H22 PCF H231 PCF:1H23 PCF H232 PCF:2H23 PCF H241 PCF:1H24 PCF H242 PCF:2H24 PCF H251 PCF:1H25 PCF H252 PCF:2H25 PCF H261 PCF:1H26 PCF H262 PCF:2H26 PCF H271 PCF:1H27 PCF H272 PCF:2H27 PCF H281 PCF:1H28 PCF H282 PCF:2H28 PCF H291 PCF:1H29 PCF H292 PCF:2H29 PCF H301 PCF:1H30 PCF H302 PCF:2H30 PCF H471 PCF:1H47 PCF H472 PCF:2H47 PCF H481 PCF:1H48 PCF H482 PCF:2H48 PCF H491 PCF:1H49 PCF H492 PCF:2H49 PCF H501 PCF:1H50 PCF H502 PCF:2H50 PCF H511 PCF:1H51 PCF H512 PCF:2H51 PCF H521 PCF:1H52 PCF H522 PCF:2H52 PCF H523 PCF:3H52 PCF H441 PCF:1H44 PCF H442 PCF:2H44 PCF H451 PCF:1H45 PCF H452 PCF:2H45 PCF H461 PCF:1H46 PCF H462 PCF:2H46 PCF H463 PCF:3H46 PCF HO1A PCG:AHO1 PCG H5'1 PCG:1H5* PCG H5'2 PCG:2H5* PCG H4' PCG: H4* PCG H3' PCG: H3* PCG H2' PCG: H2* PCG HO2' PCG:*HO2 PCG H1' PCG: H1* PCG HN21 PCG:1HN2 PCG HN22 PCG:2HN2 PCG HN1 PCH:1HN PCH HN2 PCH:2HN PCH HB1 PCH:1HB PCH HB2 PCH:2HB PCH HD11 PCH:1HD1 PCH HD12 PCH:2HD1 PCH HD21 PCH:1HD2 PCH HD22 PCH:2HD2 PCH HE11 PCH:1HE1 PCH HE12 PCH:2HE1 PCH HE21 PCH:1HE2 PCH HE22 PCH:2HE2 PCH HCZ1 PCH:1HCZ PCH HCZ2 PCH:2HCZ PCH HM1 PCH:1HM PCH HM2 PCH:2HM PCH H481 PCK:1H48 PCK H482 PCK:2H48 PCK H483 PCK:3H48 PCK H471 PCK:1H47 PCK H472 PCK:2H47 PCK H461 PCK:1H46 PCK H462 PCK:2H46 PCK H451 PCK:1H45 PCK H452 PCK:2H45 PCK H441 PCK:1H44 PCK H442 PCK:2H44 PCK H431 PCK:1H43 PCK H432 PCK:2H43 PCK H421 PCK:1H42 PCK H422 PCK:2H42 PCK H411 PCK:1H41 PCK H412 PCK:2H41 PCK H381 PCK:1H38 PCK H382 PCK:2H38 PCK H371 PCK:1H37 PCK H372 PCK:2H37 PCK H361 PCK:1H36 PCK H362 PCK:2H36 PCK H351 PCK:1H35 PCK H352 PCK:2H35 PCK H341 PCK:1H34 PCK H342 PCK:2H34 PCK H331 PCK:1H33 PCK H332 PCK:2H33 PCK H321 PCK:1H32 PCK H322 PCK:2H32 PCK H11 PCK:1H1 PCK H12 PCK:2H1 PCK H41 PCK:1H4 PCK H42 PCK:2H4 PCK H51 PCK:1H5 PCK H52 PCK:2H5 PCK H71 PCK:1H7 PCK H72 PCK:2H7 PCK H73 PCK:3H7 PCK H81 PCK:1H8 PCK H82 PCK:2H8 PCK H83 PCK:3H8 PCK H61 PCK:1H6 PCK H62 PCK:2H6 PCK H63 PCK:3H6 PCK H31 PCK:1H3 PCK H32 PCK:2H3 PCK H121 PCK:1H12 PCK H122 PCK:2H12 PCK H131 PCK:1H13 PCK H132 PCK:2H13 PCK H141 PCK:1H14 PCK H142 PCK:2H14 PCK H151 PCK:1H15 PCK H152 PCK:2H15 PCK H161 PCK:1H16 PCK H162 PCK:2H16 PCK H171 PCK:1H17 PCK H172 PCK:2H17 PCK H181 PCK:1H18 PCK H182 PCK:2H18 PCK H211 PCK:1H21 PCK H212 PCK:2H21 PCK H221 PCK:1H22 PCK H222 PCK:2H22 PCK H231 PCK:1H23 PCK H232 PCK:2H23 PCK H241 PCK:1H24 PCK H242 PCK:2H24 PCK H251 PCK:1H25 PCK H252 PCK:2H25 PCK H261 PCK:1H26 PCK H262 PCK:2H26 PCK H271 PCK:1H27 PCK H272 PCK:2H27 PCK H281 PCK:1H28 PCK H282 PCK:2H28 PCK H283 PCK:3H28 PCK H71 PCM:1H7 PCM H72 PCM:2H7 PCM H121 PCM:1H12 PCM H122 PCM:2H12 PCM H141 PCM:1H14 PCM H142 PCM:2H14 PCM H143 PCM:3H14 PCM H151 PCM:1H15 PCM H152 PCM:2H15 PCM H153 PCM:3H15 PCM H211 PCM:1H21 PCM H212 PCM:2H21 PCM H301 PCM:1H30 PCM H302 PCM:2H30 PCM H351 PCM:1H35 PCM H352 PCM:2H35 PCM H371 PCM:1H37 PCM H372 PCM:2H37 PCM H373 PCM:3H37 PCM H381 PCM:1H38 PCM H382 PCM:2H38 PCM H383 PCM:3H38 PCM H421 PCM:1H42 PCM H422 PCM:2H42 PCM H511 PCN:1H51 PCN H512 PCN:2H51 PCN H513 PCN:3H51 PCN H521 PCN:1H52 PCN H522 PCN:2H52 PCN H523 PCN:3H52 PCN H63O PCN:OH63 PCN H131 PCN:1H13 PCN H132 PCN:2H13 PCN H133 PCN:3H13 PCN H191 PCN:1H19 PCN H192 PCN:2H19 PCN H161 PCO:1H16 PCO H162 PCO:2H16 PCO H151 PCO:1H15 PCO H152 PCO:2H15 PCO HC61 PCO:1HC6 PCO HC62 PCO:2HC6 PCO HC81 PCO:1HC8 PCO HC82 PCO:2HC8 PCO HC83 PCO:3HC8 PCO HC91 PCO:1HC9 PCO HC92 PCO:2HC9 PCO HC93 PCO:3HC9 PCO H51 PCP:1H5 PCP H52 PCP:2H5 PCP HP1 PCP:1HP PCP HP2 PCP:2HP PCP HOP2 PCP:2HOP PCP HOP3 PCP:3HOP PCP HOA2 PCP:2HOA PCP HOB2 PCP:2HOB PCP HOB3 PCP:3HOB PCP H21 PCQ:1H2 PCQ H61 PCQ:1H6 PCQ H2'1 PCQ:1H2' PCQ H6'1 PCQ:1H6' PCQ HB1 PCR:1HB PCR HB2 PCR:2HB PCR HB3 PCR:3HB PCR HD11 PCR:1HD1 PCR HE11 PCR:1HE1 PCR HD21 PCR:1HD2 PCR HE21 PCR:1HE2 PCR HO1 PCR:1HO PCR H2 PCS: HN2 PCS HB2 PCS:1HB PCS HB3 PCS:2HB PCS HT1 PCS:1HT PCS HT2 PCS:2HT PCS HOP2 PCT:2HOP PCT HOP3 PCT:3HOP PCT H1P1 PCT:1H1P PCT H1P2 PCT:2H1P PCT HN11 PCT:1HN1 PCT HN12 PCT:2HN1 PCT HMA1 PCU:1HMA PCU HMA2 PCU:2HMA PCU HMA3 PCU:3HMA PCU HMB1 PCU:1HMB PCU HMB2 PCU:2HMB PCU HMB3 PCU:3HMB PCU HMC1 PCU:1HMC PCU HMC2 PCU:2HMC PCU HMC3 PCU:3HMC PCU HMD1 PCU:1HMD PCU HMD2 PCU:2HMD PCU HMD3 PCU:3HMD PCU HC91 PCV:1HC9 PCV HC92 PCV:2HC9 PCV HC71 PCV:1HC7 PCV HC72 PCV:2HC7 PCV H22 PCV:2H2 PCV HC41 PCV:1HC4 PCV HC42 PCV:2HC4 PCV HC51 PCV:1HC5 PCV HC52 PCV:2HC5 PCV HN21 PCV:1HN2 PCV HN22 PCV:2HN2 PCV H11 PCW:1H1 PCW H12 PCW:2H1 PCW H31 PCW:1H3 PCW H32 PCW:2H3 PCW H41 PCW:1H4 PCW H42 PCW:2H4 PCW H51 PCW:1H5 PCW H52 PCW:2H5 PCW H61 PCW:1H6 PCW H62 PCW:2H6 PCW H63 PCW:3H6 PCW H71 PCW:1H7 PCW H72 PCW:2H7 PCW H73 PCW:3H7 PCW H81 PCW:1H8 PCW H82 PCW:2H8 PCW H83 PCW:3H8 PCW H121 PCW:1H12 PCW H122 PCW:2H12 PCW H131 PCW:1H13 PCW H132 PCW:2H13 PCW H141 PCW:1H14 PCW H142 PCW:2H14 PCW H151 PCW:1H15 PCW H152 PCW:2H15 PCW H161 PCW:1H16 PCW H162 PCW:2H16 PCW H171 PCW:1H17 PCW H172 PCW:2H17 PCW H181 PCW:1H18 PCW H182 PCW:2H18 PCW H211 PCW:1H21 PCW H212 PCW:2H21 PCW H221 PCW:1H22 PCW H222 PCW:2H22 PCW H231 PCW:1H23 PCW H232 PCW:2H23 PCW H241 PCW:1H24 PCW H242 PCW:2H24 PCW H251 PCW:1H25 PCW H252 PCW:2H25 PCW H261 PCW:1H26 PCW H262 PCW:2H26 PCW H271 PCW:1H27 PCW H272 PCW:2H27 PCW H281 PCW:1H28 PCW H282 PCW:2H28 PCW H283 PCW:3H28 PCW H321 PCW:1H32 PCW H322 PCW:2H32 PCW H331 PCW:1H33 PCW H332 PCW:2H33 PCW H341 PCW:1H34 PCW H342 PCW:2H34 PCW H351 PCW:1H35 PCW H352 PCW:2H35 PCW H361 PCW:1H36 PCW H362 PCW:2H36 PCW H371 PCW:1H37 PCW H372 PCW:2H37 PCW H381 PCW:1H38 PCW H382 PCW:2H38 PCW H411 PCW:1H41 PCW H412 PCW:2H41 PCW H421 PCW:1H42 PCW H422 PCW:2H42 PCW H431 PCW:1H43 PCW H432 PCW:2H43 PCW H441 PCW:1H44 PCW H442 PCW:2H44 PCW H451 PCW:1H45 PCW H452 PCW:2H45 PCW H461 PCW:1H46 PCW H462 PCW:2H46 PCW H471 PCW:1H47 PCW H472 PCW:2H47 PCW H481 PCW:1H48 PCW H482 PCW:2H48 PCW H483 PCW:3H48 PCW H2C1 PCX:1H2C PCX H2C2 PCX:2H2C PCX H4C1 PCX:1H4C PCX H4C2 PCX:2H4C PCX H5C1 PCX:1H5C PCX H5C2 PCX:2H5C PCX H3N1 PCX:1H3N PCX H3N2 PCX:2H3N PCX H9C1 PCX:1H9C PCX H9C2 PCX:2H9C PCX H7C1 PCX:1H7C PCX H7C2 PCX:2H7C PCX H91 PCY:1H9 PCY H92 PCY:2H9 PCY H93 PCY:3H9 PCY H101 PCY:1H10 PCY H102 PCY:2H10 PCY H103 PCY:3H10 PCY H111 PCY:1H11 PCY H112 PCY:2H11 PCY H113 PCY:3H11 PCY H131 PCY:1H13 PCY H132 PCY:2H13 PCY H133 PCY:3H13 PCY H161 PCY:1H16 PCY H162 PCY:2H16 PCY H181 PCY:1H18 PCY H182 PCY:2H18 PCY H341 PCY:1H34 PCY H342 PCY:2H34 PCY H343 PCY:3H34 PCY H381 PCY:1H38 PCY H382 PCY:2H38 PCY H383 PCY:3H38 PCY H511 PCZ:1H51 PCZ H512 PCZ:2H51 PCZ H521 PCZ:1H52 PCZ H522 PCZ:2H52 PCZ H131 PCZ:1H13 PCZ H132 PCZ:2H13 PCZ H133 PCZ:3H13 PCZ H191 PCZ:1H19 PCZ H192 PCZ:2H19 PCZ H1C1 PD0:1H1C PD0 H1C2 PD0:2H1C PD0 H4C1 PD0:1H4C PD0 H4C2 PD0:2H4C PD0 H5C1 PD0:1H5C PD0 H5C2 PD0:2H5C PD0 H6C1 PD0:1H6C PD0 H6C2 PD0:2H6C PD0 H6C3 PD0:3H6C PD0 H7C1 PD0:1H7C PD0 H7C2 PD0:2H7C PD0 H7C3 PD0:3H7C PD0 H3N1 PD0:1H3N PD0 H3N2 PD0:2H3N PD0 H231 PD0:1H23 PD0 H232 PD0:2H23 PD0 H241 PD0:1H24 PD0 H242 PD0:2H24 PD0 H251 PD0:1H25 PD0 H252 PD0:2H25 PD0 H261 PD0:1H26 PD0 H262 PD0:2H26 PD0 H271 PD0:1H27 PD0 H272 PD0:2H27 PD0 H11 PD1:1H1 PD1 H12 PD1:2H1 PD1 H13A PD1:3H1 PD1 H21A PD1:1H2 PD1 H22 PD1:2H2 PD1 H31 PD1:1H3 PD1 H32 PD1:2H3 PD1 H33 PD1:3H3 PD1 H41 PD1:1H4 PD1 H42 PD1:2H4 PD1 H51 PD1:1H5 PD1 H52 PD1:2H5 PD1 H61 PD1:1H6 PD1 H62 PD1:2H6 PD1 H71 PD1:1H7 PD1 H72 PD1:2H7 PD1 H81 PD1:1H8 PD1 H82 PD1:2H8 PD1 H221 PD1:1H22 PD1 H222 PD1:2H22 PD1 H223 PD1:3H22 PD1 H231 PD1:1H23 PD1 H232 PD1:2H23 PD1 H233 PD1:3H23 PD1 H261 PD1:1H26 PD1 H262 PD1:2H26 PD1 H263 PD1:3H26 PD1 H271 PD1:1H27 PD1 H272 PD1:2H27 PD1 H273 PD1:3H27 PD1 H281 PD1:1H28 PD1 H282 PD1:2H28 PD1 H283 PD1:3H28 PD1 H5N1 PD8:1H5N PD8 H5N2 PD8:2H5N PD8 H111 PD8:1H11 PD8 H112 PD8:2H11 PD8 H2A1 PDA:1H2A PDA H2A2 PDA:2H2A PDA H2A3 PDA:3H2A PDA H4A1 PDA:1H4A PDA H4A2 PDA:2H4A PDA H5A1 PDA:1H5A PDA H5A2 PDA:2H5A PDA HB1 PDA:1HB PDA HB2 PDA:2HB PDA HB3 PDA:3HB PDA H PDD: HN PDD H2A1 PDD:1H2A PDD H2A2 PDD:2H2A PDD H2A3 PDD:3H2A PDD H4A1 PDD:1H4A PDD H4A2 PDD:2H4A PDD H5A1 PDD:1H5A PDD H5A2 PDD:2H5A PDD HOP2 PDD:2HOP PDD HOP3 PDD:3HOP PDD HB1 PDD:1HB PDD HB2 PDD:2HB PDD HB3 PDD:3HB PDD HC81 PDE:1HC8 PDE HC82 PDE:2HC8 PDE HC91 PDE:1HC9 PDE HC92 PDE:2HC9 PDE H101 PDE:1H10 PDE H102 PDE:2H10 PDE H1D1 PDE:1H1D PDE H1D2 PDE:2H1D PDE H1D3 PDE:3H1D PDE H2A1 PDG:1H2A PDG H2A2 PDG:2H2A PDG H2A3 PDG:3H2A PDG H4A1 PDG:1H4A PDG H4A2 PDG:2H4A PDG H5A1 PDG:1H5A PDG H5A2 PDG:2H5A PDG HBA1 PDG:1HBA PDG HBA2 PDG:2HBA PDG HGA1 PDG:1HGA PDG HGA2 PDG:2HGA PDG HB1 PDH:1HB PDH HB2 PDH:2HB PDH HOP3 PDI:3HOP PDI HOP2 PDI:2HOP PDI H PDL: HN PDL H2A1 PDL:1H2A PDL H2A2 PDL:2H2A PDL H2A3 PDL:3H2A PDL H4A1 PDL:1H4A PDL H4A2 PDL:2H4A PDL H5A1 PDL:1H5A PDL H5A2 PDL:2H5A PDL HOP2 PDL:2HOP PDL HOP3 PDL:3HOP PDL HB1 PDL:1HB PDL HB2 PDL:2HB PDL HB3 PDL:3HB PDL HP81 PDM:1HP8 PDM HP82 PDM:2HP8 PDM HP91 PDM:1HP9 PDM HP92 PDM:2HP9 PDM HP2N PDM:NHP2 PDM HP3O PDM:OHP3 PDM HP4O PDM:OHP4 PDM H121 PDM:1H12 PDM H122 PDM:2H12 PDM H131 PDM:1H13 PDM H132 PDM:2H13 PDM HC1 PDN:1HC PDN HC2 PDN:2HC PDN HC4 PDN:4HC PDN HC61 PDN:1HC6 PDN HC62 PDN:2HC6 PDN HC71 PDN:1HC7 PDN HC72 PDN:2HC7 PDN HC8 PDN:8HC PDN HC9 PDN:9HC PDN H121 PDN:1H12 PDN H122 PDN:2H12 PDN HC41 PDN:1HC4 PDN H151 PDN:1H15 PDN H152 PDN:2H15 PDN H161 PDN:1H16 PDN H162 PDN:2H16 PDN H181 PDN:1H18 PDN H182 PDN:2H18 PDN H183 PDN:3H18 PDN H191 PDN:1H19 PDN H192 PDN:2H19 PDN H193 PDN:3H19 PDN HC12 PDN:2HC1 PDN HO3 PDN:3HO PDN HO4 PDN:4HO PDN HO5 PDN:5HO PDN H11 PDO:1H1 PDO H12 PDO:2H1 PDO H21 PDO:1H2 PDO H22 PDO:2H2 PDO H31 PDO:1H3 PDO H32 PDO:2H3 PDO H2A1 PDP:1H2A PDP H2A2 PDP:2H2A PDP H2A3 PDP:3H2A PDP H5A1 PDP:1H5A PDP H5A2 PDP:2H5A PDP HOA2 PDP:2HOA PDP HOB2 PDP:2HOB PDP HOB3 PDP:3HOB PDP H261 PDS:1H26 PDS H262 PDS:2H26 PDS H263 PDS:3H26 PDS H101 PDS:1H10 PDS H102 PDS:2H10 PDS H103 PDS:3H10 PDS H171 PDS:1H17 PDS H172 PDS:2H17 PDS H221 PDS:1H22 PDS H222 PDS:2H22 PDS H271 PDS:1H27 PDS H272 PDS:2H27 PDS H321 PDS:1H32 PDS H322 PDS:2H32 PDS H323 PDS:3H32 PDS H331 PDS:1H33 PDS H332 PDS:2H33 PDS H333 PDS:3H33 PDS H21 PDT:1H2 PDT H22 PDT:2H2 PDT H11 PDT:1H1 PDT H12 PDT:2H1 PDT H31 PDT:1H3 PDT H32 PDT:2H3 PDT HOP3 PDU:3HOP PDU HOP2 PDU:2HOP PDU H5' PDU:1H5* PDU H5'' PDU:2H5* PDU H4' PDU: H4* PDU H3' PDU: H3* PDU HO3' PDU:H3T PDU H2'' PDU:2H2* PDU H2' PDU:1H2* PDU H1' PDU: H1* PDU H5A1 PDU:1H5A PDU H5A2 PDU:2H5A PDU H5B1 PDU:1H5B PDU H5B2 PDU:2H5B PDU H71 PDU:1H5M PDU H72 PDU:2H5M PDU H73 PDU:3H5M PDU H6C1 PDX:1H6C PDX H6C2 PDX:2H6C PDX HN61 PE0:1HN6 PE0 HN62 PE0:2HN6 PE0 H2A1 PE1:1H2A PE1 H2A2 PE1:2H2A PE1 H2A3 PE1:3H2A PE1 H4A1 PE1:1H4A PE1 H4A2 PE1:2H4A PE1 H5A1 PE1:1H5A PE1 H5A2 PE1:2H5A PE1 HBC1 PE1:1HBC PE1 HBC2 PE1:2HBC PE1 HGC1 PE1:1HGC PE1 HGC2 PE1:2HGC PE1 HDC1 PE1:1HDC PE1 HDC2 PE1:2HDC PE1 HEC1 PE1:1HEC PE1 HEC2 PE1:2HEC PE1 HZN1 PE1:1HZN PE1 HZN2 PE1:2HZN PE1 H4'1 PE2:1H4* PE2 H4'2 PE2:2H4* PE2 HO4' PE2:*HO4 PE2 H3'1 PE2:1H3* PE2 H3'2 PE2:2H3* PE2 HO3' PE2:*HO3 PE2 H2' PE2: H2* PE2 H121 PE2:1H12 PE2 H122 PE2:2H12 PE2 H1'1 PE2:1H1* PE2 H1'2 PE2:2H1* PE2 HN21 PE2:1HN2 PE2 HN22 PE2:2HN2 PE2 H421 PE3:1H42 PE3 H422 PE3:2H42 PE3 H411 PE3:1H41 PE3 H412 PE3:2H41 PE3 H391 PE3:1H39 PE3 H392 PE3:2H39 PE3 H381 PE3:1H38 PE3 H382 PE3:2H38 PE3 H361 PE3:1H36 PE3 H362 PE3:2H36 PE3 H351 PE3:1H35 PE3 H352 PE3:2H35 PE3 H331 PE3:1H33 PE3 H332 PE3:2H33 PE3 H321 PE3:1H32 PE3 H322 PE3:2H32 PE3 H301 PE3:1H30 PE3 H302 PE3:2H30 PE3 H291 PE3:1H29 PE3 H292 PE3:2H29 PE3 H271 PE3:1H27 PE3 H272 PE3:2H27 PE3 H261 PE3:1H26 PE3 H262 PE3:2H26 PE3 H241 PE3:1H24 PE3 H242 PE3:2H24 PE3 H231 PE3:1H23 PE3 H232 PE3:2H23 PE3 H211 PE3:1H21 PE3 H212 PE3:2H21 PE3 H201 PE3:1H20 PE3 H202 PE3:2H20 PE3 H181 PE3:1H18 PE3 H182 PE3:2H18 PE3 H171 PE3:1H17 PE3 H172 PE3:2H17 PE3 H151 PE3:1H15 PE3 H152 PE3:2H15 PE3 H141 PE3:1H14 PE3 H142 PE3:2H14 PE3 H121 PE3:1H12 PE3 H122 PE3:2H12 PE3 H111 PE3:1H11 PE3 H112 PE3:2H11 PE3 H91 PE3:1H9 PE3 H92 PE3:2H9 PE3 H81 PE3:1H8 PE3 H82 PE3:2H8 PE3 H61 PE3:1H6 PE3 H62 PE3:2H6 PE3 H51 PE3:1H5 PE3 H52 PE3:2H5 PE3 H31 PE3:1H3 PE3 H32 PE3:2H3 PE3 H21 PE3:1H2 PE3 H22 PE3:2H2 PE3 H11 PE4:1H1 PE4 H12 PE4:2H1 PE4 H21 PE4:1H2 PE4 H22 PE4:2H2 PE4 H31 PE4:1H3 PE4 H32 PE4:2H3 PE4 H41 PE4:1H4 PE4 H42 PE4:2H4 PE4 H51 PE4:1H5 PE4 H52 PE4:2H5 PE4 H61 PE4:1H6 PE4 H62 PE4:2H6 PE4 H71 PE4:1H7 PE4 H72 PE4:2H7 PE4 H81 PE4:1H8 PE4 H82 PE4:2H8 PE4 H91 PE4:1H9 PE4 H92 PE4:2H9 PE4 H101 PE4:1H10 PE4 H102 PE4:2H10 PE4 H111 PE4:1H11 PE4 H112 PE4:2H11 PE4 H121 PE4:1H12 PE4 H122 PE4:2H12 PE4 H131 PE4:1H13 PE4 H132 PE4:2H13 PE4 H141 PE4:1H14 PE4 H142 PE4:2H14 PE4 H151 PE4:1H15 PE4 H152 PE4:2H15 PE4 H161 PE4:1H16 PE4 H162 PE4:2H16 PE4 H163 PE4:3H16 PE4 H481 PE5:1H48 PE5 H482 PE5:2H48 PE5 H483 PE5:3H48 PE5 H501 PE5:1H50 PE5 H502 PE5:2H50 PE5 H11 PE5:1H1 PE5 H12 PE5:2H1 PE5 H21 PE5:1H2 PE5 H22 PE5:2H2 PE5 H31 PE5:1H3 PE5 H32 PE5:2H3 PE5 H41 PE5:1H4 PE5 H42 PE5:2H4 PE5 H51 PE5:1H5 PE5 H52A PE5:2H5 PE5 H61 PE5:1H6 PE5 H62 PE5:2H6 PE5 H71 PE5:1H7 PE5 H72 PE5:2H7 PE5 H81 PE5:1H8 PE5 H82 PE5:2H8 PE5 H91 PE5:1H9 PE5 H92 PE5:2H9 PE5 H101 PE5:1H10 PE5 H102 PE5:2H10 PE5 H111 PE5:1H11 PE5 H112 PE5:2H11 PE5 H121 PE5:1H12 PE5 H122 PE5:2H12 PE5 H131 PE5:1H13 PE5 H132 PE5:2H13 PE5 H141 PE5:1H14 PE5 H142 PE5:2H14 PE5 H151 PE5:1H15 PE5 H152 PE5:2H15 PE5 H161 PE5:1H16 PE5 H162 PE5:2H16 PE5 H31 PE6:1H3 PE6 H32 PE6:2H3 PE6 HOP2 PE6:2HOP PE6 H41 PE6:1H4 PE6 H42 PE6:2H4 PE6 H61 PE6:1H6 PE6 H62 PE6:2H6 PE6 H71 PE6:1H7 PE6 H72 PE6:2H7 PE6 H91 PE6:1H9 PE6 H92 PE6:2H9 PE6 H101 PE6:1H10 PE6 H102 PE6:2H10 PE6 H191 PE6:1H19 PE6 H192 PE6:2H19 PE6 H181 PE6:1H18 PE6 H182 PE6:2H18 PE6 H161 PE6:1H16 PE6 H162 PE6:2H16 PE6 H151 PE6:1H15 PE6 H152 PE6:2H15 PE6 H131 PE6:1H13 PE6 H132 PE6:2H13 PE6 H121 PE6:1H12 PE6 H122 PE6:2H12 PE6 HOP3 PE6:3HOP PE6 H21 PE7:1H2 PE7 H22 PE7:2H2 PE7 H31 PE7:1H3 PE7 H32 PE7:2H3 PE7 H51 PE7:1H5 PE7 H52 PE7:2H5 PE7 H61 PE7:1H6 PE7 H62 PE7:2H6 PE7 H81 PE7:1H8 PE7 H82 PE7:2H8 PE7 H91 PE7:1H9 PE7 H92 PE7:2H9 PE7 H111 PE7:1H11 PE7 H112 PE7:2H11 PE7 H121 PE7:1H12 PE7 H122 PE7:2H12 PE7 H141 PE7:1H14 PE7 H142 PE7:2H14 PE7 H151 PE7:1H15 PE7 H152 PE7:2H15 PE7 H171 PE7:1H17 PE7 H172 PE7:2H17 PE7 H181 PE7:1H18 PE7 H182 PE7:2H18 PE7 H201 PE7:1H20 PE7 H202 PE7:2H20 PE7 H211 PE7:1H21 PE7 H212 PE7:2H21 PE7 HO2 PE7:2HO PE7 H21 PE8:1H2 PE8 H22 PE8:2H2 PE8 H31 PE8:1H3 PE8 H32 PE8:2H3 PE8 H51 PE8:1H5 PE8 H52 PE8:2H5 PE8 H61 PE8:1H6 PE8 H62 PE8:2H6 PE8 H81 PE8:1H8 PE8 H82 PE8:2H8 PE8 H91 PE8:1H9 PE8 H92 PE8:2H9 PE8 H111 PE8:1H11 PE8 H112 PE8:2H11 PE8 H121 PE8:1H12 PE8 H122 PE8:2H12 PE8 H141 PE8:1H14 PE8 H142 PE8:2H14 PE8 H151 PE8:1H15 PE8 H152 PE8:2H15 PE8 H171 PE8:1H17 PE8 H172 PE8:2H17 PE8 H181 PE8:1H18 PE8 H182 PE8:2H18 PE8 H201 PE8:1H20 PE8 H202 PE8:2H20 PE8 H211 PE8:1H21 PE8 H212 PE8:2H21 PE8 H231 PE8:1H23 PE8 H232 PE8:2H23 PE8 H241 PE8:1H24 PE8 H242 PE8:2H24 PE8 HAA1 PE9:1HAA PE9 HAA2 PE9:2HAA PE9 HAA3 PE9:3HAA PE9 HAC1 PE9:1HAC PE9 HAC2 PE9:2HAC PE9 HAE1 PE9:1HAE PE9 HAE2 PE9:2HAE PE9 HAF1 PE9:1HAF PE9 HAF2 PE9:2HAF PE9 HAD1 PE9:1HAD PE9 HAD2 PE9:2HAD PE9 H21 PEA:1H2 PEA H22 PEA:2H2 PEA H11 PEA:1H1 PEA H12 PEA:2H1 PEA HN1 PEA:1HN PEA HN2 PEA:2HN PEA HN3 PEA:3HN PEA HHC1 PEB:1HHC PEB HHC2 PEB:2HHC PEB HMC1 PEB:1HMC PEB HMC2 PEB:2HMC PEB HMC3 PEB:3HMC PEB HAC1 PEB:1HAC PEB HAC2 PEB:2HAC PEB HBC1 PEB:1HBC PEB HBC2 PEB:2HBC PEB HOC2 PEB:2HOC PEB H1D1 PEB:1H1D PEB HMD1 PEB:1HMD PEB HMD2 PEB:2HMD PEB HMD3 PEB:3HMD PEB HAD1 PEB:1HAD PEB HBD1 PEB:1HBD PEB HBD2 PEB:2HBD PEB H2A1 PEB:1H2A PEB H3A1 PEB:1H3A PEB HMA1 PEB:1HMA PEB HMA2 PEB:2HMA PEB HMA3 PEB:3HMA PEB HBA1 PEB:1HBA PEB HBA2 PEB:2HBA PEB HBA3 PEB:3HBA PEB HHA1 PEB:1HHA PEB HAA1 PEB:1HAA PEB HAA2 PEB:2HAA PEB HHB1 PEB:1HHB PEB HMB1 PEB:1HMB PEB HMB2 PEB:2HMB PEB HMB3 PEB:3HMB PEB HAB1 PEB:1HAB PEB HAB2 PEB:2HAB PEB HBB1 PEB:1HBB PEB HBB2 PEB:2HBB PEB HOB2 PEB:2HOB PEB H PEC:1HN PEC H2 PEC:2HN PEC HB2 PEC:1HB PEC HB3 PEC:2HB PEC H11 PEC:1H1 PEC H12 PEC:2H1 PEC H21 PEC:1H2 PEC H22 PEC:2H2 PEC H31 PEC:1H3 PEC H32 PEC:2H3 PEC H41 PEC:1H4 PEC H42 PEC:2H4 PEC H51 PEC:1H5 PEC H52 PEC:2H5 PEC H53 PEC:3H5 PEC HOP2 PED:2HOP PED HOP3 PED:3HOP PED H2'1 PED:1H2* PED H2'2 PED:2H2* PED H5'1 PED:1H5* PED H5'2 PED:2H5* PED H4'1 PED:1H4* PED HO'4 PED:4HO* PED H3' PED: H3* PED H1'1 PED:1H1* PED H1'2 PED:2H1* PED H1'3 PED:3H1* PED H11 PEE:1H1 PEE H12 PEE:2H1 PEE HN1 PEE:1HN PEE HN2 PEE:2HN PEE HN3 PEE:3HN PEE H31 PEE:1H3 PEE H32 PEE:2H3 PEE H41 PEE:1H4 PEE H42 PEE:2H4 PEE H51 PEE:1H5 PEE H52 PEE:2H5 PEE H111 PEE:1H11 PEE H112 PEE:2H11 PEE H121 PEE:1H12 PEE H122 PEE:2H12 PEE H131 PEE:1H13 PEE H132 PEE:2H13 PEE H141 PEE:1H14 PEE H142 PEE:2H14 PEE H151 PEE:1H15 PEE H152 PEE:2H15 PEE H161 PEE:1H16 PEE H162 PEE:2H16 PEE H171 PEE:1H17 PEE H172 PEE:2H17 PEE H181 PEE:1H18 PEE H182 PEE:2H18 PEE H191 PEE:1H19 PEE H192 PEE:2H19 PEE H201 PEE:1H20 PEE H202 PEE:2H20 PEE H211 PEE:1H21 PEE H212 PEE:2H21 PEE H221 PEE:1H22 PEE H222 PEE:2H22 PEE H231 PEE:1H23 PEE H232 PEE:2H23 PEE H241 PEE:1H24 PEE H242 PEE:2H24 PEE H251 PEE:1H25 PEE H252 PEE:2H25 PEE H261 PEE:1H26 PEE H262 PEE:2H26 PEE H271 PEE:1H27 PEE H272 PEE:2H27 PEE H273 PEE:3H27 PEE H311 PEE:1H31 PEE H312 PEE:2H31 PEE H321 PEE:1H32 PEE H322 PEE:2H32 PEE H331 PEE:1H33 PEE H332 PEE:2H33 PEE H341 PEE:1H34 PEE H342 PEE:2H34 PEE H351 PEE:1H35 PEE H352 PEE:2H35 PEE H361 PEE:1H36 PEE H362 PEE:2H36 PEE H371 PEE:1H37 PEE H372 PEE:2H37 PEE H381 PEE:1H38 PEE H382 PEE:2H38 PEE H391 PEE:1H39 PEE H392 PEE:2H39 PEE H401 PEE:1H40 PEE H402 PEE:2H40 PEE H411 PEE:1H41 PEE H412 PEE:2H41 PEE H421 PEE:1H42 PEE H422 PEE:2H42 PEE H431 PEE:1H43 PEE H432 PEE:2H43 PEE H441 PEE:1H44 PEE H442 PEE:2H44 PEE H451 PEE:1H45 PEE H452 PEE:2H45 PEE H461 PEE:1H46 PEE H462 PEE:2H46 PEE H471 PEE:1H47 PEE H472 PEE:2H47 PEE H473 PEE:3H47 PEE H21 PEF:1H2 PEF H11 PEF:1H1 PEF H12 PEF:2H1 PEF HN1 PEF:1HN PEF HN2 PEF:2HN PEF H31 PEF:1H3 PEF H32 PEF:2H3 PEF H41 PEF:1H4 PEF H42 PEF:2H4 PEF H51 PEF:1H5 PEF H52 PEF:2H5 PEF H112 PEF:2H11 PEF H111 PEF:1H11 PEF H122 PEF:2H12 PEF H121 PEF:1H12 PEF H132 PEF:2H13 PEF H131 PEF:1H13 PEF H142 PEF:2H14 PEF H141 PEF:1H14 PEF H152 PEF:2H15 PEF H151 PEF:1H15 PEF H162 PEF:2H16 PEF H161 PEF:1H16 PEF H172 PEF:2H17 PEF H171 PEF:1H17 PEF H182 PEF:2H18 PEF H181 PEF:1H18 PEF H192 PEF:2H19 PEF H191 PEF:1H19 PEF H202 PEF:2H20 PEF H201 PEF:1H20 PEF H212 PEF:2H21 PEF H211 PEF:1H21 PEF H222 PEF:2H22 PEF H221 PEF:1H22 PEF H232 PEF:2H23 PEF H231 PEF:1H23 PEF H242 PEF:2H24 PEF H241 PEF:1H24 PEF H252 PEF:2H25 PEF H251 PEF:1H25 PEF H253 PEF:3H25 PEF H312 PEF:2H31 PEF H311 PEF:1H31 PEF H322 PEF:2H32 PEF H321 PEF:1H32 PEF H332 PEF:2H33 PEF H331 PEF:1H33 PEF H342 PEF:2H34 PEF H341 PEF:1H34 PEF H352 PEF:2H35 PEF H351 PEF:1H35 PEF H362 PEF:2H36 PEF H361 PEF:1H36 PEF H372 PEF:2H37 PEF H371 PEF:1H37 PEF H382 PEF:2H38 PEF H381 PEF:1H38 PEF H392 PEF:2H39 PEF H391 PEF:1H39 PEF H402 PEF:2H40 PEF H401 PEF:1H40 PEF H412 PEF:2H41 PEF H411 PEF:1H41 PEF H422 PEF:2H42 PEF H421 PEF:1H42 PEF H432 PEF:2H43 PEF H431 PEF:1H43 PEF H442 PEF:2H44 PEF H441 PEF:1H44 PEF H452 PEF:2H45 PEF H451 PEF:1H45 PEF H453 PEF:3H45 PEF HOP2 PEF:2HOP PEF H11 PEG:1H1 PEG H12 PEG:2H1 PEG H21 PEG:1H2 PEG H22 PEG:2H2 PEG H31 PEG:1H3 PEG H32 PEG:2H3 PEG H41 PEG:1H4 PEG H42 PEG:2H4 PEG HN1 PEH:1HN PEH HN2 PEH:2HN PEH H111 PEH:1H11 PEH H112 PEH:2H11 PEH H121 PEH:1H12 PEH H122 PEH:2H12 PEH H11 PEH:1H1 PEH H12 PEH:2H1 PEH H31 PEH:1H3 PEH H32 PEH:2H3 PEH H321 PEH:1H32 PEH H322 PEH:2H32 PEH H331 PEH:1H33 PEH H332 PEH:2H33 PEH H341 PEH:1H34 PEH H342 PEH:2H34 PEH H351 PEH:1H35 PEH H352 PEH:2H35 PEH H361 PEH:1H36 PEH H362 PEH:2H36 PEH H371 PEH:1H37 PEH H372 PEH:2H37 PEH H381 PEH:1H38 PEH H382 PEH:2H38 PEH H391 PEH:1H39 PEH H392 PEH:2H39 PEH H3A1 PEH:1H3A PEH H3A2 PEH:2H3A PEH H3B1 PEH:1H3B PEH H3B2 PEH:2H3B PEH H3C1 PEH:1H3C PEH H3C2 PEH:2H3C PEH H3D1 PEH:1H3D PEH H3D2 PEH:2H3D PEH H3E1 PEH:1H3E PEH H3E2 PEH:2H3E PEH H3F1 PEH:1H3F PEH H3F2 PEH:2H3F PEH H3G1 PEH:1H3G PEH H3G2 PEH:2H3G PEH H3H1 PEH:1H3H PEH H3H2 PEH:2H3H PEH H3I1 PEH:1H3I PEH H3I2 PEH:2H3I PEH H3I3 PEH:3H3I PEH H221 PEH:1H22 PEH H222 PEH:2H22 PEH H231 PEH:1H23 PEH H232 PEH:2H23 PEH H241 PEH:1H24 PEH H242 PEH:2H24 PEH H251 PEH:1H25 PEH H252 PEH:2H25 PEH H261 PEH:1H26 PEH H262 PEH:2H26 PEH H271 PEH:1H27 PEH H272 PEH:2H27 PEH H281 PEH:1H28 PEH H282 PEH:2H28 PEH H291 PEH:1H29 PEH H292 PEH:2H29 PEH H2A1 PEH:1H2A PEH H2A2 PEH:2H2A PEH H2B1 PEH:1H2B PEH H2B2 PEH:2H2B PEH H2C1 PEH:1H2C PEH H2C2 PEH:2H2C PEH H2D1 PEH:1H2D PEH H2D2 PEH:2H2D PEH H2E1 PEH:1H2E PEH H2E2 PEH:2H2E PEH H2F1 PEH:1H2F PEH H2F2 PEH:2H2F PEH H2G1 PEH:1H2G PEH H2G2 PEH:2H2G PEH H2H1 PEH:1H2H PEH H2H2 PEH:2H2H PEH H2I1 PEH:1H2I PEH H2I2 PEH:2H2I PEH H2I3 PEH:3H2I PEH H11 PEI:1H1 PEI H12 PEI:2H1 PEI H13 PEI:3H1 PEI H21 PEI:1H2 PEI H22 PEI:2H2 PEI H31 PEI:1H3 PEI H32 PEI:2H3 PEI H41 PEI:1H4 PEI H42 PEI:2H4 PEI HN1 PEK:1HN PEK HN2 PEK:2HN PEK H011 PEK:1H01 PEK H012 PEK:2H01 PEK H031 PEK:1H03 PEK H032 PEK:2H03 PEK H041 PEK:1H04 PEK H042 PEK:2H04 PEK H051 PEK:1H05 PEK H052 PEK:2H05 PEK H21 PEK:1H2 PEK H22 PEK:2H2 PEK H31 PEK:1H3 PEK H32 PEK:2H3 PEK H41 PEK:1H4 PEK H42 PEK:2H4 PEK H71 PEK:1H7 PEK H72 PEK:2H7 PEK H101 PEK:1H10 PEK H102 PEK:2H10 PEK H131 PEK:1H13 PEK H132 PEK:2H13 PEK H161 PEK:1H16 PEK H162 PEK:2H16 PEK H171 PEK:1H17 PEK H172 PEK:2H17 PEK H181 PEK:1H18 PEK H182 PEK:2H18 PEK H191 PEK:1H19 PEK H192 PEK:2H19 PEK H201 PEK:1H20 PEK H202 PEK:2H20 PEK H203 PEK:3H20 PEK H221 PEK:1H22 PEK H222 PEK:2H22 PEK H231 PEK:1H23 PEK H232 PEK:2H23 PEK H241 PEK:1H24 PEK H242 PEK:2H24 PEK H251 PEK:1H25 PEK H252 PEK:2H25 PEK H261 PEK:1H26 PEK H262 PEK:2H26 PEK H271 PEK:1H27 PEK H272 PEK:2H27 PEK H281 PEK:1H28 PEK H282 PEK:2H28 PEK H291 PEK:1H29 PEK H292 PEK:2H29 PEK H301 PEK:1H30 PEK H302 PEK:2H30 PEK H311 PEK:1H31 PEK H312 PEK:2H31 PEK H321 PEK:1H32 PEK H322 PEK:2H32 PEK H331 PEK:1H33 PEK H332 PEK:2H33 PEK H341 PEK:1H34 PEK H342 PEK:2H34 PEK H351 PEK:1H35 PEK H352 PEK:2H35 PEK H361 PEK:1H36 PEK H362 PEK:2H36 PEK H371 PEK:1H37 PEK H372 PEK:2H37 PEK H381 PEK:1H38 PEK H382 PEK:2H38 PEK H383 PEK:3H38 PEK H21 PEM:1H2 PEM H31 PEM:1H3 PEM H51 PEM:1H5 PEM HC81 PEM:1HC8 PEM HC82 PEM:2HC8 PEM HC91 PEM:1HC9 PEM HC92 PEM:2HC9 PEM H171 PEM:1H17 PEM H172 PEM:2H17 PEM H173 PEM:3H17 PEM H181 PEM:1H18 PEM H182 PEM:2H18 PEM H183 PEM:3H18 PEM H11 PEN:1H1 PEN H12 PEN:2H1 PEN H21 PEN:1H2 PEN H22 PEN:2H2 PEN H31 PEN:1H3 PEN H32 PEN:2H3 PEN H41 PEN:1H4 PEN H42 PEN:2H4 PEN H51 PEN:1H5 PEN H52 PEN:2H5 PEN H53 PEN:3H5 PEN H31 PEP:1H3 PEP H32 PEP:2H3 PEP HOP2 PEP:2HOP PEP HOP3 PEP:3HOP PEP H21 PEQ:1H2 PEQ H31 PEQ:1H3 PEQ H32 PEQ:2H3 PEQ H33 PEQ:3H3 PEQ HOP2 PEQ:2HOP PEQ HOP3 PEQ:3HOP PEQ H31' PES:H31* PES H32' PES:H32* PES H41' PES:H41* PES H42' PES:H42* PES H11' PES:H11* PES H12' PES:H12* PES H21' PES:H21* PES H22' PES:H22* PES HA1 PET:1HA PET HA2 PET:2HA PET HB1 PET:1HB PET HB2 PET:2HB PET HA'1 PET:1HA' PET HA'2 PET:2HA' PET HB'1 PET:1HB' PET HB'2 PET:2HB' PET HN21 PET:1HN2 PET HN22 PET:2HN2 PET HN1' PET:'HN1 PET HN'1 PET:1HN' PET HN'2 PET:2HN' PET HAA1 PEU:1HAA PEU HAA2 PEU:2HAA PEU HAA3 PEU:3HAA PEU HAC1 PEU:1HAC PEU HAC2 PEU:2HAC PEU HAD1 PEU:1HAD PEU HAD2 PEU:2HAD PEU HAF1 PEU:1HAF PEU HAF2 PEU:2HAF PEU HAG1 PEU:1HAG PEU HAG2 PEU:2HAG PEU HAI1 PEU:1HAI PEU HAI2 PEU:2HAI PEU HAJ1 PEU:1HAJ PEU HAJ2 PEU:2HAJ PEU HAL1 PEU:1HAL PEU HAL2 PEU:2HAL PEU HAM1 PEU:1HAM PEU HAM2 PEU:2HAM PEU HAO1 PEU:1HAO PEU HAO2 PEU:2HAO PEU HAP1 PEU:1HAP PEU HAP2 PEU:2HAP PEU HAR1 PEU:1HAR PEU HAR2 PEU:2HAR PEU HAS1 PEU:1HAS PEU HAS2 PEU:2HAS PEU HAU1 PEU:1HAU PEU HAU2 PEU:2HAU PEU HAV1 PEU:1HAV PEU HAV2 PEU:2HAV PEU HAX1 PEU:1HAX PEU HAX2 PEU:2HAX PEU HAY1 PEU:1HAY PEU HAY2 PEU:2HAY PEU HBA1 PEU:1HBA PEU HBA2 PEU:2HBA PEU HBB1 PEU:1HBB PEU HBB2 PEU:2HBB PEU HCG1 PEU:1HCG PEU HCG2 PEU:2HCG PEU HCF1 PEU:1HCF PEU HCF2 PEU:2HCF PEU HCD1 PEU:1HCD PEU HCD2 PEU:2HCD PEU HCC1 PEU:1HCC PEU HCC2 PEU:2HCC PEU HCA1 PEU:1HCA PEU HCA2 PEU:2HCA PEU HBZ1 PEU:1HBZ PEU HBZ2 PEU:2HBZ PEU HBX1 PEU:1HBX PEU HBX2 PEU:2HBX PEU HBW1 PEU:1HBW PEU HBW2 PEU:2HBW PEU HBU1 PEU:1HBU PEU HBU2 PEU:2HBU PEU HBT1 PEU:1HBT PEU HBT2 PEU:2HBT PEU HBR1 PEU:1HBR PEU HBR2 PEU:2HBR PEU HBQ1 PEU:1HBQ PEU HBQ2 PEU:2HBQ PEU HBO1 PEU:1HBO PEU HBO2 PEU:2HBO PEU HBN1 PEU:1HBN PEU HBN2 PEU:2HBN PEU HBL1 PEU:1HBL PEU HBL2 PEU:2HBL PEU HBK1 PEU:1HBK PEU HBK2 PEU:2HBK PEU HBI1 PEU:1HBI PEU HBI2 PEU:2HBI PEU HBH1 PEU:1HBH PEU HBH2 PEU:2HBH PEU HBF1 PEU:1HBF PEU HBF2 PEU:2HBF PEU HBE1 PEU:1HBE PEU HBE2 PEU:2HBE PEU HCH1 PEU:1HCH PEU HCH2 PEU:2HCH PEU HCI1 PEU:1HCI PEU HCI2 PEU:2HCI PEU HCK1 PEU:1HCK PEU HCK2 PEU:2HCK PEU HCL1 PEU:1HCL PEU HCL2 PEU:2HCL PEU HCN1 PEU:1HCN PEU HCN2 PEU:2HCN PEU HCO1 PEU:1HCO PEU HCO2 PEU:2HCO PEU HCQ1 PEU:1HCQ PEU HCQ2 PEU:2HCQ PEU HCR1 PEU:1HCR PEU HCR2 PEU:2HCR PEU HCT1 PEU:1HCT PEU HCT2 PEU:2HCT PEU HCU1 PEU:1HCU PEU HCU2 PEU:2HCU PEU HCW1 PEU:1HCW PEU HCW2 PEU:2HCW PEU HCX1 PEU:1HCX PEU HCX2 PEU:2HCX PEU HCZ1 PEU:1HCZ PEU HCZ2 PEU:2HCZ PEU HDA1 PEU:1HDA PEU HDA2 PEU:2HDA PEU HDC1 PEU:1HDC PEU HDC2 PEU:2HDC PEU HDD1 PEU:1HDD PEU HDD2 PEU:2HDD PEU H481 PEV:1H48 PEV H482 PEV:2H48 PEV H483 PEV:3H48 PEV H471 PEV:1H47 PEV H472 PEV:2H47 PEV H461 PEV:1H46 PEV H462 PEV:2H46 PEV H451 PEV:1H45 PEV H452 PEV:2H45 PEV H441 PEV:1H44 PEV H442 PEV:2H44 PEV H431 PEV:1H43 PEV H432 PEV:2H43 PEV H421 PEV:1H42 PEV H422 PEV:2H42 PEV H411 PEV:1H41 PEV H412 PEV:2H41 PEV H401 PEV:1H40 PEV H402 PEV:2H40 PEV H391 PEV:1H39 PEV H392 PEV:2H39 PEV H381 PEV:1H38 PEV H382 PEV:2H38 PEV H371 PEV:1H37 PEV H372 PEV:2H37 PEV H361 PEV:1H36 PEV H362 PEV:2H36 PEV H351 PEV:1H35 PEV H352 PEV:2H35 PEV H341 PEV:1H34 PEV H342 PEV:2H34 PEV H331 PEV:1H33 PEV H332 PEV:2H33 PEV H321 PEV:1H32 PEV H322 PEV:2H32 PEV H11 PEV:1H1 PEV H12 PEV:2H1 PEV H41 PEV:1H4 PEV H42 PEV:2H4 PEV H51 PEV:1H5 PEV H52 PEV:2H5 PEV HN61 PEV:1HN6 PEV HN62 PEV:2HN6 PEV H31 PEV:1H3 PEV H32 PEV:2H3 PEV H121 PEV:1H12 PEV H122 PEV:2H12 PEV H131 PEV:1H13 PEV H132 PEV:2H13 PEV H141 PEV:1H14 PEV H142 PEV:2H14 PEV H151 PEV:1H15 PEV H152 PEV:2H15 PEV H161 PEV:1H16 PEV H162 PEV:2H16 PEV H171 PEV:1H17 PEV H172 PEV:2H17 PEV H181 PEV:1H18 PEV H182 PEV:2H18 PEV H191 PEV:1H19 PEV H192 PEV:2H19 PEV H201 PEV:1H20 PEV H202 PEV:2H20 PEV H211 PEV:1H21 PEV H212 PEV:2H21 PEV H221 PEV:1H22 PEV H222 PEV:2H22 PEV H231 PEV:1H23 PEV H232 PEV:2H23 PEV H241 PEV:1H24 PEV H242 PEV:2H24 PEV H251 PEV:1H25 PEV H252 PEV:2H25 PEV H261 PEV:1H26 PEV H262 PEV:2H26 PEV H263 PEV:3H26 PEV H481 PEW:1H48 PEW H482 PEW:2H48 PEW H483 PEW:3H48 PEW H471 PEW:1H47 PEW H472 PEW:2H47 PEW H461 PEW:1H46 PEW H462 PEW:2H46 PEW H451 PEW:1H45 PEW H452 PEW:2H45 PEW H441 PEW:1H44 PEW H442 PEW:2H44 PEW H431 PEW:1H43 PEW H432 PEW:2H43 PEW H421 PEW:1H42 PEW H422 PEW:2H42 PEW H411 PEW:1H41 PEW H412 PEW:2H41 PEW H381 PEW:1H38 PEW H382 PEW:2H38 PEW H371 PEW:1H37 PEW H372 PEW:2H37 PEW H361 PEW:1H36 PEW H362 PEW:2H36 PEW H351 PEW:1H35 PEW H352 PEW:2H35 PEW H341 PEW:1H34 PEW H342 PEW:2H34 PEW H331 PEW:1H33 PEW H332 PEW:2H33 PEW H321 PEW:1H32 PEW H322 PEW:2H32 PEW H11 PEW:1H1 PEW H12 PEW:2H1 PEW H41 PEW:1H4 PEW H42 PEW:2H4 PEW H51 PEW:1H5 PEW H52 PEW:2H5 PEW HN61 PEW:1HN6 PEW HN62 PEW:2HN6 PEW H31 PEW:1H3 PEW H32 PEW:2H3 PEW H121 PEW:1H12 PEW H122 PEW:2H12 PEW H131 PEW:1H13 PEW H132 PEW:2H13 PEW H141 PEW:1H14 PEW H142 PEW:2H14 PEW H151 PEW:1H15 PEW H152 PEW:2H15 PEW H161 PEW:1H16 PEW H162 PEW:2H16 PEW H171 PEW:1H17 PEW H172 PEW:2H17 PEW H181 PEW:1H18 PEW H182 PEW:2H18 PEW H191 PEW:1H19 PEW H192 PEW:2H19 PEW H201 PEW:1H20 PEW H202 PEW:2H20 PEW H211 PEW:1H21 PEW H212 PEW:2H21 PEW H221 PEW:1H22 PEW H222 PEW:2H22 PEW H231 PEW:1H23 PEW H232 PEW:2H23 PEW H241 PEW:1H24 PEW H242 PEW:2H24 PEW H251 PEW:1H25 PEW H252 PEW:2H25 PEW H261 PEW:1H26 PEW H262 PEW:2H26 PEW H263 PEW:3H26 PEW H31 PEZ:1H3 PEZ H32 PEZ:2H3 PEZ H41 PEZ:1H4 PEZ H42 PEZ:2H4 PEZ H43 PEZ:3H4 PEZ H151 PF:1H15 PF H152 PF:2H15 PF H161 PF:1H16 PF H162 PF:2H16 PF HAG1 PF1:1HAG PF1 HAG2 PF1:2HAG PF1 HAH1 PF1:1HAH PF1 HAH2 PF1:2HAH PF1 HAI1 PF1:1HAI PF1 HAI2 PF1:2HAI PF1 HAA1 PF1:1HAA PF1 HAA2 PF1:2HAA PF1 HAA3 PF1:3HAA PF1 HAB1 PF1:1HAB PF1 HAB2 PF1:2HAB PF1 H181 PF3:1H18 PF3 H182 PF3:2H18 PF3 H PF5:1HN PF5 H2 PF5:2HN PF5 HB2 PF5:1HB PF5 HB3 PF5:2HB PF5 HXT PF5:HOXT PF5 H17C PFA:CH17 PFA HC71 PFA:1HC7 PFA HC72 PFA:2HC7 PFA HC73 PFA:3HC7 PFA H191 PFA:1H19 PFA H192 PFA:2H19 PFA H193 PFA:3H19 PFA H31C PFA:CH31 PFA H22C PFA:CH22 PFA H25C PFA:CH25 PFA HC81 PFA:1HC8 PFA HC82 PFA:2HC8 PFA HC83 PFA:3HC8 PFA HC91 PFA:1HC9 PFA HC92 PFA:2HC9 PFA HC93 PFA:3HC9 PFA H29C PFA:CH29 PFA H27O PFA:OH27 PFA H71 PFB:1H7 PFB H72 PFB:2H7 PFB H142 PFC:2H14 PFC H141 PFC:1H14 PFC H172 PFC:2H17 PFC H171 PFC:1H17 PFC H182 PFC:2H18 PFC H181 PFC:1H18 PFC H212 PFC:2H21 PFC H211 PFC:1H21 PFC H242 PFC:2H24 PFC H241 PFC:1H24 PFC H252 PFC:2H25 PFC H251 PFC:1H25 PFC H272 PFC:2H27 PFC H271 PFC:1H27 PFC H292 PFC:2H29 PFC H291 PFC:1H29 PFC H302 PFC:2H30 PFC H301 PFC:1H30 PFC H322 PFC:2H32 PFC H321 PFC:1H32 PFC H342 PFC:2H34 PFC H341 PFC:1H34 PFC H353 PFC:3H35 PFC H352 PFC:2H35 PFC H351 PFC:1H35 PFC H363 PFC:3H36 PFC H362 PFC:2H36 PFC H361 PFC:1H36 PFC H373 PFC:3H37 PFC H372 PFC:2H37 PFC H371 PFC:1H37 PFC H382 PFC:2H38 PFC H381 PFC:1H38 PFC H51 PFD:1H5 PFD H52 PFD:2H5 PFD H111 PFD:1H11 PFD H112 PFD:2H11 PFD H191 PFD:1H19 PFD H192 PFD:2H19 PFD H211 PFD:1H21 PFD H212 PFD:2H21 PFD H213 PFD:3H21 PFD H471 PFE:1H47 PFE H472 PFE:2H47 PFE H431 PFE:1H43 PFE H351 PFE:1H35 PFE H331 PFE:1H33 PFE H371 PFE:1H37 PFE H341 PFE:1H34 PFE H31 PFE:1H3 PFE H71 PFE:1H7 PFE H91 PFE:1H9 PFE H201 PFE:1H20 PFE H202 PFE:2H20 PFE H211 PFE:1H21 PFE H212 PFE:2H21 PFE H213 PFE:3H21 PFE H181 PFE:1H18 PFE H191 PFE:1H19 PFE H192 PFE:2H19 PFE H261 PFE:1H26 PFE H262 PFE:2H26 PFE H263 PFE:3H26 PFE H PFF:1HN PFF H2 PFF:2HN PFF HB2 PFF:1HBC PFF HB3 PFF:2HBC PFF HN21 PFG:1HN2 PFG HN22 PFG:2HN2 PFG H91 PFG:1H9 PFG H92 PFG:2H9 PFG HP11 PFG:1HP1 PFG HP12 PFG:2HP1 PFG HNP1 PFG:1HNP PFG HB11 PFG:1HB1 PFG HB12 PFG:2HB1 PFG HG11 PFG:1HG1 PFG HG12 PFG:2HG1 PFG HO21 PFG:1HO2 PFG HNP2 PFG:2HNP PFG HB21 PFG:1HB2 PFG HB22 PFG:2HB2 PFG HG21 PFG:1HG2 PFG HG22 PFG:2HG2 PFG HO22 PFG:2HO2 PFG HNP3 PFG:3HNP PFG HB31 PFG:1HB3 PFG HB32 PFG:2HB3 PFG HG31 PFG:1HG3 PFG HG32 PFG:2HG3 PFG HO23 PFG:3HO2 PFG HNP4 PFG:4HNP PFG HB41 PFG:1HB4 PFG HB42 PFG:2HB4 PFG HG41 PFG:1HG4 PFG HG42 PFG:2HG4 PFG HO24 PFG:4HO2 PFG H181 PFH:1H18 PFH H182 PFH:2H18 PFH H161 PFH:1H16 PFH H162 PFH:2H16 PFH H191 PFH:1H19 PFH H192 PFH:2H19 PFH H141 PFH:1H14 PFH H142 PFH:2H14 PFH H143 PFH:3H14 PFH H121 PFH:1H12 PFH H122 PFH:2H12 PFH H123 PFH:3H12 PFH H21A PFI:1H2 PFI H22 PFI:2H2 PFI H23 PFI:3H2 PFI H11 PFI:1H1 PFI H12 PFI:2H1 PFI H13 PFI:3H1 PFI H121 PFI:1H12 PFI H122 PFI:2H12 PFI H111 PFI:1H11 PFI H112 PFI:2H11 PFI H61 PFI:1H6 PFI H62 PFI:2H6 PFI H131 PFI:1H13 PFI H132 PFI:2H13 PFI H161 PFI:1H16 PFI H162 PFI:2H16 PFI H151 PFI:1H15 PFI H152 PFI:2H15 PFI H141 PFI:1H14 PFI H142 PFI:2H14 PFI H181 PFJ:1H18 PFJ H182 PFJ:2H18 PFJ H161 PFJ:1H16 PFJ H162 PFJ:2H16 PFJ H191 PFJ:1H19 PFJ H192 PFJ:2H19 PFJ H141 PFJ:1H14 PFJ H142 PFJ:2H14 PFJ H143 PFJ:3H14 PFJ H121 PFJ:1H12 PFJ H122 PFJ:2H12 PFJ H123 PFJ:3H12 PFJ H81 PFL:1H8 PFL H82 PFL:2H8 PFL H83 PFL:3H8 PFL H91 PFL:1H9 PFL H92 PFL:2H9 PFL H93 PFL:3H9 PFL H111 PFL:1H11 PFL H112 PFL:2H11 PFL H113 PFL:3H11 PFL H121 PFL:1H12 PFL H122 PFL:2H12 PFL H123 PFL:3H12 PFL HN1 PFM:1HN PFM HN2 PFM:2HN PFM HB1 PFM:1HB PFM HB2 PFM:2HB PFM H2A1 PFM:1H2A PFM H2A2 PFM:2H2A PFM H2A3 PFM:3H2A PFM H5A1 PFM:1H5A PFM H5A2 PFM:2H5A PFM HOP2 PFM:2HOP PFM HOP3 PFM:3HOP PFM HAB1 PFP:1HAB PFP HAB2 PFP:2HAB PFP HAB3 PFP:3HAB PFP HAN1 PFP:1HAN PFP HAN2 PFP:2HAN PFP HAM1 PFP:1HAM PFP HAM2 PFP:2HAM PFP HAA1 PFP:1HAA PFP HAA2 PFP:2HAA PFP HAA3 PFP:3HAA PFP H231 PFQ:1H23 PFQ H232 PFQ:2H23 PFQ H8C1 PFQ:1H8C PFQ H8C2 PFQ:2H8C PFQ H11 PFS:1H1 PFS H12 PFS:2H1 PFS HH31 PFS:1HH3 PFS HH32 PFS:2HH3 PFS HH33 PFS:3HH3 PFS H31 PFS:1H3 PFS H32 PFS:2H3 PFS H111 PFS:1H11 PFS H112 PFS:2H11 PFS H121 PFS:1H12 PFS H122 PFS:2H12 PFS H311 PFS:1H31 PFS H312 PFS:2H31 PFS H321 PFS:1H32 PFS H322 PFS:2H32 PFS H1N1 PFS:1H1N PFS H1N2 PFS:2H1N PFS H1N3 PFS:3H1N PFS H2N1 PFS:1H2N PFS H2N2 PFS:2H2N PFS H2N3 PFS:3H2N PFS H3N1 PFS:1H3N PFS H3N2 PFS:2H3N PFS H3N3 PFS:3H3N PFS H131 PFS:1H13 PFS H132 PFS:2H13 PFS H141 PFS:1H14 PFS H142 PFS:2H14 PFS H151 PFS:1H15 PFS H152 PFS:2H15 PFS H161 PFS:1H16 PFS H162 PFS:2H16 PFS H171 PFS:1H17 PFS H172 PFS:2H17 PFS H181 PFS:1H18 PFS H182 PFS:2H18 PFS H191 PFS:1H19 PFS H192 PFS:2H19 PFS H201 PFS:1H20 PFS H202 PFS:2H20 PFS H211 PFS:1H21 PFS H212 PFS:2H21 PFS H221 PFS:1H22 PFS H222 PFS:2H22 PFS H231 PFS:1H23 PFS H232 PFS:2H23 PFS H241 PFS:1H24 PFS H242 PFS:2H24 PFS H251 PFS:1H25 PFS H252 PFS:2H25 PFS H261 PFS:1H26 PFS H262 PFS:2H26 PFS H263 PFS:3H26 PFS H41 PFZ:1H4 PFZ H42 PFZ:2H4 PFZ H51 PFZ:1H5 PFZ H52 PFZ:2H5 PFZ H61 PFZ:1H6 PFZ H62 PFZ:2H6 PFZ H71 PFZ:1H7 PFZ H72 PFZ:2H7 PFZ H81 PFZ:1H8 PFZ H82 PFZ:2H8 PFZ H91 PFZ:1H9 PFZ H92 PFZ:2H9 PFZ H101 PFZ:1H10 PFZ H102 PFZ:2H10 PFZ H103 PFZ:3H10 PFZ H51 PG0:1H5 PG0 H52 PG0:2H5 PG0 H53 PG0:3H5 PG0 H41 PG0:1H4 PG0 H42 PG0:2H4 PG0 H31 PG0:1H3 PG0 H32 PG0:2H3 PG0 H21 PG0:1H2 PG0 H22 PG0:2H2 PG0 H11 PG0:1H1 PG0 H12 PG0:2H1 PG0 HC22 PG1:H2 PG1 H PG1: H23 PG1 H2 PG1: H24 PG1 HB2 PG1: H20 PG1 HB3 PG1: H21 PG1 H21 PG2:1H2 PG2 H22 PG2:2H2 PG2 H31 PG2:1H3 PG2 H32 PG2:2H3 PG2 H41 PG2:1H4 PG2 H42 PG2:2H4 PG2 H71 PG2:1H7 PG2 H72 PG2:2H7 PG2 H101 PG2:1H10 PG2 H102 PG2:2H10 PG2 H161 PG2:1H16 PG2 H162 PG2:2H16 PG2 H171 PG2:1H17 PG2 H172 PG2:2H17 PG2 H181 PG2:1H18 PG2 H182 PG2:2H18 PG2 H191 PG2:1H19 PG2 H192 PG2:2H19 PG2 H201 PG2:1H20 PG2 H202 PG2:2H20 PG2 H203 PG2:3H20 PG2 HB1 PG3:1HB PG3 HB2 PG3:2HB PG3 HG1 PG3:1HG PG3 HG2 PG3:2HG PG3 HD1 PG3:1HD PG3 HD2 PG3:2HD PG3 HH11 PG3:1HH1 PG3 HH12 PG3:2HH1 PG3 HH21 PG3:1HH2 PG3 HH22 PG3:2HH2 PG3 H11 PG5:1H1 PG5 H12 PG5:2H1 PG5 H13 PG5:3H1 PG5 H21 PG5:1H2 PG5 H22 PG5:2H2 PG5 H31 PG5:1H3 PG5 H32 PG5:2H3 PG5 H41 PG5:1H4 PG5 H42 PG5:2H4 PG5 H51 PG5:1H5 PG5 H52 PG5:2H5 PG5 H61 PG5:1H6 PG5 H62 PG5:2H6 PG5 H71 PG5:1H7 PG5 H72 PG5:2H7 PG5 H81 PG5:1H8 PG5 H82 PG5:2H8 PG5 H83 PG5:3H8 PG5 H11 PG6:1H1 PG6 H12 PG6:2H1 PG6 H13 PG6:3H1 PG6 H21 PG6:1H2 PG6 H22 PG6:2H2 PG6 H31 PG6:1H3 PG6 H32 PG6:2H3 PG6 H41 PG6:1H4 PG6 H42 PG6:2H4 PG6 H51 PG6:1H5 PG6 H52 PG6:2H5 PG6 H61 PG6:1H6 PG6 H62 PG6:2H6 PG6 H71 PG6:1H7 PG6 H72 PG6:2H7 PG6 H81 PG6:1H8 PG6 H82 PG6:2H8 PG6 H91 PG6:1H9 PG6 H92 PG6:2H9 PG6 H101 PG6:1H10 PG6 H102 PG6:2H10 PG6 H111 PG6:1H11 PG6 H112 PG6:2H11 PG6 H121 PG6:1H12 PG6 H122 PG6:2H12 PG6 H123 PG6:3H12 PG6 HOP2 PG7:2HOP PG7 HO3' PG7:H3T PG7 H1' PG7: H1* PG7 H2' PG7:1H2* PG7 H2'' PG7:2H2* PG7 H3' PG7: H3* PG7 H4' PG7: H4* PG7 H5' PG7:1H5* PG7 H5'' PG7:2H5* PG7 H21 PG7:1H2 PG7 HOP3 PG7:3HOP PG7 H PG9:1HN PG9 H2 PG9:2HN PG9 HOP3 PGA:3HOP PGA HOP4 PGA:4HOP PGA H21 PGA:1H2 PGA H22 PGA:2H2 PGA H191 PGB:1H19 PGB H192 PGB:2H19 PGB H21 PGC:1H2 PGC H22 PGC:2H2 PGC HOP3 PGC:3HOP PGC HOP4 PGC:4HOP PGC HOB2 PGD:2HOB PGD HOA2 PGD:2HOA PGD H5'1 PGD:1H5' PGD H5'2 PGD:2H5' PGD HO3' PGD:'HO3 PGD HO2' PGD:'HO2 PGD HN21 PGD:1HN2 PGD HN22 PGD:2HN2 PGD H101 PGD:1H10 PGD H102 PGD:2H10 PGD H191 PGD:1H19 PGD H192 PGD:2H19 PGD H12 PGE:2H1 PGE H22 PGE:2H2 PGE H32 PGE:2H3 PGE H42 PGE:2H4 PGE H62 PGE:2H6 PGE H52 PGE:2H5 PGE H71 PGF:1H7 PGF H72 PGF:2H7 PGF H73 PGF:3H7 PGF H81 PGF:1H8 PGF H82 PGF:2H8 PGF H91 PGF:1H9 PGF H92 PGF:2H9 PGF H101 PGF:1H10 PGF H102 PGF:2H10 PGF H111 PGF:1H11 PGF H112 PGF:2H11 PGF H121 PGF:1H12 PGF H122 PGF:2H12 PGF H131 PGF:1H13 PGF H132 PGF:2H13 PGF H141 PGF:1H14 PGF H142 PGF:2H14 PGF H151 PGF:1H15 PGF H152 PGF:2H15 PGF H153 PGF:3H15 PGF H21 PGG:1H2 PGG H31 PGG:1H3 PGG H51 PGG:1H5 PGG H61 PGG:1H6 PGG HO21 PGG:1HO2 PGG H81 PGG:1H8 PGG H82 PGG:2H8 PGG H91 PGG:1H9 PGG H92 PGG:2H9 PGG H101 PGG:1H10 PGG H102 PGG:2H10 PGG HN21 PGG:1HN2 PGG H121 PGG:1H12 PGG H122 PGG:2H12 PGG HO71 PGG:1HO7 PGG H21 PGH:1H2 PGH H22 PGH:2H2 PGH HOP3 PGH:3HOP PGH HOP4 PGH:4HOP PGH H6C1 PGI:1H6C PGI H6C2 PGI:2H6C PGI H9C1 PGI:1H9C PGI H9C2 PGI:2H9C PGI H101 PGI:1H10 PGI H102 PGI:2H10 PGI H61 PGJ:1H6 PGJ H62 PGJ:2H6 PGJ H101 PGJ:1H10 PGJ H102 PGJ:2H10 PGJ H111 PGJ:1H11 PGJ H112 PGJ:2H11 PGJ H113 PGJ:3H11 PGJ H481 PGK:1H48 PGK H482 PGK:2H48 PGK H483 PGK:3H48 PGK H471 PGK:1H47 PGK H472 PGK:2H47 PGK H461 PGK:1H46 PGK H462 PGK:2H46 PGK H451 PGK:1H45 PGK H452 PGK:2H45 PGK H441 PGK:1H44 PGK H442 PGK:2H44 PGK H431 PGK:1H43 PGK H432 PGK:2H43 PGK H421 PGK:1H42 PGK H422 PGK:2H42 PGK H411 PGK:1H41 PGK H412 PGK:2H41 PGK H381 PGK:1H38 PGK H382 PGK:2H38 PGK H371 PGK:1H37 PGK H372 PGK:2H37 PGK H361 PGK:1H36 PGK H362 PGK:2H36 PGK H351 PGK:1H35 PGK H352 PGK:2H35 PGK H341 PGK:1H34 PGK H342 PGK:2H34 PGK H331 PGK:1H33 PGK H332 PGK:2H33 PGK H321 PGK:1H32 PGK H322 PGK:2H32 PGK H11 PGK:1H1 PGK H12 PGK:2H1 PGK H41 PGK:1H4 PGK H42 PGK:2H4 PGK H61 PGK:1H6 PGK H62 PGK:2H6 PGK H31 PGK:1H3 PGK H32 PGK:2H3 PGK H121 PGK:1H12 PGK H122 PGK:2H12 PGK H131 PGK:1H13 PGK H132 PGK:2H13 PGK H141 PGK:1H14 PGK H142 PGK:2H14 PGK H151 PGK:1H15 PGK H152 PGK:2H15 PGK H161 PGK:1H16 PGK H162 PGK:2H16 PGK H171 PGK:1H17 PGK H172 PGK:2H17 PGK H181 PGK:1H18 PGK H182 PGK:2H18 PGK H191 PGK:1H19 PGK H192 PGK:2H19 PGK H201 PGK:1H20 PGK H202 PGK:2H20 PGK H211 PGK:1H21 PGK H212 PGK:2H21 PGK H221 PGK:1H22 PGK H222 PGK:2H22 PGK H231 PGK:1H23 PGK H232 PGK:2H23 PGK H241 PGK:1H24 PGK H242 PGK:2H24 PGK H251 PGK:1H25 PGK H252 PGK:2H25 PGK H261 PGK:1H26 PGK H262 PGK:2H26 PGK H263 PGK:3H26 PGK HN1 PGL:1HN PGL HN2 PGL:2HN PGL H1 PGL:1H PGL H2 PGL:2H PGL HC11 PGM:1HC1 PGM HC12 PGM:2HC1 PGM HC31 PGM:1HC3 PGM HC32 PGM:2HC3 PGM HC71 PGM:1HC7 PGM HC72 PGM:2HC7 PGM HC91 PGM:1HC9 PGM HC92 PGM:2HC9 PGM HCB1 PGM:1HCB PGM HCB2 PGM:2HCB PGM HCC1 PGM:1HCC PGM HCC2 PGM:2HCC PGM HCD1 PGM:1HCD PGM HCD2 PGM:2HCD PGM HCE1 PGM:1HCE PGM HCE2 PGM:2HCE PGM HCF1 PGM:1HCF PGM HCF2 PGM:2HCF PGM HCG1 PGM:1HCG PGM HCG2 PGM:2HCG PGM HCH1 PGM:1HCH PGM HCH2 PGM:2HCH PGM HCI1 PGM:1HCI PGM HCI2 PGM:2HCI PGM HCJ1 PGM:1HCJ PGM HCJ2 PGM:2HCJ PGM HCK1 PGM:1HCK PGM HCK2 PGM:2HCK PGM HCL1 PGM:1HCL PGM HCL2 PGM:2HCL PGM HCM1 PGM:1HCM PGM HCM2 PGM:2HCM PGM HCN1 PGM:1HCN PGM HCN2 PGM:2HCN PGM HCO1 PGM:1HCO PGM HCO2 PGM:2HCO PGM HCP1 PGM:1HCP PGM HCP2 PGM:2HCP PGM HCP3 PGM:3HCP PGM HOP5 PGN:5HOP PGN HOP6 PGN:6HOP PGN HOP2 PGN:2HOP PGN HOP3 PGN:3HOP PGN H5' PGN:1H5* PGN H5'' PGN:2H5* PGN H4' PGN: H4* PGN H3' PGN: H3* PGN H2' PGN:1H2* PGN H2'' PGN:2H2* PGN H1' PGN: H1* PGN HN21 PGN:1HN2 PGN HN22 PGN:2HN2 PGN H11 PGO:1H1 PGO H12 PGO:2H1 PGO H31 PGO:1H3 PGO H32 PGO:2H3 PGO H33 PGO:3H3 PGO HOP5 PGP:5HOP PGP HOP6 PGP:6HOP PGP HOP2 PGP:2HOP PGP HOP3 PGP:3HOP PGP H5' PGP:1H5* PGP H5'' PGP:2H5* PGP H4' PGP: H4* PGP H3' PGP: H3* PGP H2' PGP: H2* PGP HO2' PGP:*HO2 PGP H1' PGP: H1* PGP HN21 PGP:1HN2 PGP HN22 PGP:2HN2 PGP H11 PGQ:1H1 PGQ H12 PGQ:2H1 PGQ H31 PGQ:1H3 PGQ H32 PGQ:2H3 PGQ H33 PGQ:3H3 PGQ H11 PGR:1H1 PGR H12 PGR:2H1 PGR H31 PGR:1H3 PGR H32 PGR:2H3 PGR H33 PGR:3H3 PGR HOA2 PGS:2HOA PGS HOA3 PGS:3HOA PGS H5'1 PGS:1H5* PGS H5'2 PGS:2H5* PGS H4' PGS: H4* PGS H3' PGS: H3* PGS HO3' PGS:*HO3 PGS H2' PGS: H2* PGS HO2' PGS:*HO2 PGS H1' PGS: H1* PGS HOP2 PGS:2HOP PGS HOP3 PGS:3HOP PGS H481 PGT:1H48 PGT H482 PGT:2H48 PGT H483 PGT:3H48 PGT H471 PGT:1H47 PGT H472 PGT:2H47 PGT H461 PGT:1H46 PGT H462 PGT:2H46 PGT H451 PGT:1H45 PGT H452 PGT:2H45 PGT H441 PGT:1H44 PGT H442 PGT:2H44 PGT H431 PGT:1H43 PGT H432 PGT:2H43 PGT H421 PGT:1H42 PGT H422 PGT:2H42 PGT H411 PGT:1H41 PGT H412 PGT:2H41 PGT H401 PGT:1H40 PGT H402 PGT:2H40 PGT H391 PGT:1H39 PGT H392 PGT:2H39 PGT H381 PGT:1H38 PGT H382 PGT:2H38 PGT H371 PGT:1H37 PGT H372 PGT:2H37 PGT H361 PGT:1H36 PGT H362 PGT:2H36 PGT H351 PGT:1H35 PGT H352 PGT:2H35 PGT H341 PGT:1H34 PGT H342 PGT:2H34 PGT H331 PGT:1H33 PGT H332 PGT:2H33 PGT H321 PGT:1H32 PGT H322 PGT:2H32 PGT H11 PGT:1H1 PGT H12 PGT:2H1 PGT H41 PGT:1H4 PGT H42 PGT:2H4 PGT H61 PGT:1H6 PGT H62 PGT:2H6 PGT H31 PGT:1H3 PGT H32 PGT:2H3 PGT H121 PGT:1H12 PGT H122 PGT:2H12 PGT H131 PGT:1H13 PGT H132 PGT:2H13 PGT H141 PGT:1H14 PGT H142 PGT:2H14 PGT H151 PGT:1H15 PGT H152 PGT:2H15 PGT H161 PGT:1H16 PGT H162 PGT:2H16 PGT H171 PGT:1H17 PGT H172 PGT:2H17 PGT H181 PGT:1H18 PGT H182 PGT:2H18 PGT H191 PGT:1H19 PGT H192 PGT:2H19 PGT H201 PGT:1H20 PGT H202 PGT:2H20 PGT H211 PGT:1H21 PGT H212 PGT:2H21 PGT H221 PGT:1H22 PGT H222 PGT:2H22 PGT H231 PGT:1H23 PGT H232 PGT:2H23 PGT H241 PGT:1H24 PGT H242 PGT:2H24 PGT H251 PGT:1H25 PGT H252 PGT:2H25 PGT H261 PGT:1H26 PGT H262 PGT:2H26 PGT H263 PGT:3H26 PGT H2A1 PGU:1H2A PGU H2A2 PGU:2H2A PGU H2A3 PGU:3H2A PGU H4A1 PGU:1H4A PGU H4A2 PGU:2H4A PGU H5A1 PGU:1H5A PGU H5A2 PGU:2H5A PGU HB1 PGU:1HB PGU HB2 PGU:2HB PGU HG1 PGU:1HG PGU HG2 PGU:2HG PGU H011 PGV:1H01 PGV H012 PGV:2H01 PGV H031 PGV:1H03 PGV H032 PGV:2H03 PGV H041 PGV:1H04 PGV H042 PGV:2H04 PGV H061 PGV:1H06 PGV H062 PGV:2H06 PGV H21 PGV:1H2 PGV H22 PGV:2H2 PGV H31 PGV:1H3 PGV H32 PGV:2H3 PGV H41 PGV:1H4 PGV H42 PGV:2H4 PGV H51 PGV:1H5 PGV H52 PGV:2H5 PGV H61 PGV:1H6 PGV H62 PGV:2H6 PGV H71 PGV:1H7 PGV H72 PGV:2H7 PGV H81 PGV:1H8 PGV H82 PGV:2H8 PGV H91 PGV:1H9 PGV H92 PGV:2H9 PGV H101 PGV:1H10 PGV H102 PGV:2H10 PGV H131 PGV:1H13 PGV H132 PGV:2H13 PGV H141 PGV:1H14 PGV H142 PGV:2H14 PGV H151 PGV:1H15 PGV H152 PGV:2H15 PGV H161 PGV:1H16 PGV H162 PGV:2H16 PGV H171 PGV:1H17 PGV H172 PGV:2H17 PGV H181 PGV:1H18 PGV H182 PGV:2H18 PGV H183 PGV:3H18 PGV H201 PGV:1H20 PGV H202 PGV:2H20 PGV H211 PGV:1H21 PGV H212 PGV:2H21 PGV H221 PGV:1H22 PGV H222 PGV:2H22 PGV H231 PGV:1H23 PGV H232 PGV:2H23 PGV H241 PGV:1H24 PGV H242 PGV:2H24 PGV H251 PGV:1H25 PGV H252 PGV:2H25 PGV H261 PGV:1H26 PGV H262 PGV:2H26 PGV H271 PGV:1H27 PGV H272 PGV:2H27 PGV H281 PGV:1H28 PGV H282 PGV:2H28 PGV H291 PGV:1H29 PGV H292 PGV:2H29 PGV H301 PGV:1H30 PGV H302 PGV:2H30 PGV H311 PGV:1H31 PGV H312 PGV:2H31 PGV H321 PGV:1H32 PGV H322 PGV:2H32 PGV H331 PGV:1H33 PGV H332 PGV:2H33 PGV H341 PGV:1H34 PGV H342 PGV:2H34 PGV H343 PGV:3H34 PGV H21 PGX:1H2 PGX H22 PGX:2H2 PGX H31 PGX:1H3 PGX H32 PGX:2H3 PGX H41 PGX:1H4 PGX H42 PGX:2H4 PGX H51 PGX:1H5 PGX H61 PGX:1H6 PGX H71 PGX:1H7 PGX H72 PGX:2H7 PGX H81 PGX:1H8 PGX H91 PGX:1H9 PGX H101 PGX:1H10 PGX H102 PGX:2H10 PGX H111 PGX:1H11 PGX H121 PGX:1H12 PGX H131 PGX:1H13 PGX H141 PGX:1H14 PGX H151 PGX:1H15 PGX H161 PGX:1H16 PGX H162 PGX:2H16 PGX H171 PGX:1H17 PGX H172 PGX:2H17 PGX H181 PGX:1H18 PGX H182 PGX:2H18 PGX H191 PGX:1H19 PGX H192 PGX:2H19 PGX H201 PGX:1H20 PGX H202 PGX:2H20 PGX H203 PGX:3H20 PGX HO61 PGX:1HO6 PGX H PGY:1HN PGY H2 PGY:2HN PGY H11 PH1:1H1 PH1 H12 PH1:2H1 PH1 H21 PH1:1H2 PH1 H22 PH1:2H2 PH1 H41 PH1:1H4 PH1 H42 PH1:2H4 PH1 H43A PH1:3H4 PH1 H51 PH1:1H5 PH1 H52A PH1:2H5 PH1 H61 PH1:1H6 PH1 H62 PH1:2H6 PH1 H71 PH1:1H7 PH1 H72 PH1:2H7 PH1 H91 PH1:1H9 PH1 H92 PH1:2H9 PH1 H93 PH1:3H9 PH1 H101 PH1:1H10 PH1 H102 PH1:2H10 PH1 H111 PH1:1H11 PH1 H112 PH1:2H11 PH1 H121 PH1:1H12 PH1 H122 PH1:2H12 PH1 H141 PH1:1H14 PH1 H142 PH1:2H14 PH1 H143 PH1:3H14 PH1 H151 PH1:1H15 PH1 H152 PH1:2H15 PH1 H161 PH1:1H16 PH1 H162 PH1:2H16 PH1 H171 PH1:1H17 PH1 H172 PH1:2H17 PH1 H191 PH1:1H19 PH1 H192 PH1:2H19 PH1 H193 PH1:3H19 PH1 H201 PH1:1H20 PH1 H202 PH1:2H20 PH1 H203 PH1:3H20 PH1 H311 PH1:1H31 PH1 H312 PH1:2H31 PH1 H321 PH1:1H32 PH1 H322 PH1:2H32 PH1 H341 PH1:1H34 PH1 H342 PH1:2H34 PH1 H343 PH1:3H34 PH1 H351 PH1:1H35 PH1 H352 PH1:2H35 PH1 H361 PH1:1H36 PH1 H362 PH1:2H36 PH1 H371 PH1:1H37 PH1 H372 PH1:2H37 PH1 H391 PH1:1H39 PH1 H392 PH1:2H39 PH1 H393 PH1:3H39 PH1 H401 PH1:1H40 PH1 H402 PH1:2H40 PH1 H411 PH1:1H41 PH1 H412 PH1:2H41 PH1 H421 PH1:1H42 PH1 H422 PH1:2H42 PH1 H441 PH1:1H44 PH1 H442 PH1:2H44 PH1 H443 PH1:3H44 PH1 H451 PH1:1H45 PH1 H452 PH1:2H45 PH1 H461 PH1:1H46 PH1 H462 PH1:2H46 PH1 H471 PH1:1H47 PH1 H472 PH1:2H47 PH1 H491 PH1:1H49 PH1 H492 PH1:2H49 PH1 H493 PH1:3H49 PH1 H501 PH1:1H50 PH1 H502 PH1:2H50 PH1 H503 PH1:3H50 PH1 H511 PH1:1H51 PH1 H512 PH1:2H51 PH1 H531 PH1:1H53 PH1 H532 PH1:2H53 PH1 H533 PH1:3H53 PH1 H31 PH2:1H3 PH2 H32 PH2:2H3 PH2 HN61 PH2:1HN6 PH2 HN62 PH2:2HN6 PH2 H111 PH2:1H11 PH2 H112 PH2:2H11 PH2 H3C1 PH5:1H3C PH5 H3C2 PH5:2H3C PH5 H111 PH5:1H11 PH5 H112 PH5:2H11 PH5 H121 PH5:1H12 PH5 H122 PH5:2H12 PH5 H123 PH5:3H12 PH5 H9C1 PH5:1H9C PH5 H9C2 PH5:2H9C PH5 HBC1 PH5:1HBC PH5 HBC2 PH5:2HBC PH5 H11 PH9:1H1 PH9 H12 PH9:2H1 PH9 HC41 PH9:1HC4 PH9 HC42 PH9:2HC4 PH9 HC21 PH9:1HC2 PH9 HC22 PH9:2HC2 PH9 HC61 PH9:1HC6 PH9 HC62 PH9:2HC6 PH9 H101 PH9:1H10 PH9 H102 PH9:2H10 PH9 HC91 PH9:1HC9 PH9 HC92 PH9:2HC9 PH9 HC71 PH9:1HC7 PH9 HC72 PH9:2HC7 PH9 H PHA:1HN PHA H2 PHA:2HN PHA HC PHA: H PHA HB2 PHA:1HB PHA HB3 PHA:2HB PHA HO2' PHB:'HO2 PHB HA1 PHC:1HA PHC HA2 PHC:2HA PHC HA3 PHC:3HA PHC HG21 PHC:1HG2 PHC HG22 PHC:2HG2 PHC HG23 PHC:3HG2 PHC H2 PHD:2H PHD H PHD:1H PHD HB2 PHD:2HB PHD HB3 PHD:1HB PHD HXT PHD: HO PHD H2 PHE: HN2 PHE HB2 PHE:1HB PHE HB3 PHE:2HB PHE HA11 PHF:1HA1 PHF HB11 PHF:1HB1 PHF HB21 PHF:1HB2 PHF HB31 PHF:1HB3 PHF HC11 PHF:1HC1 PHF HC21 PHF:1HC2 PHF HC31 PHF:1HC3 PHF HD11 PHF:1HD1 PHF HE11 PHF:1HE1 PHF HE21 PHF:1HE2 PHF HE31 PHF:1HE3 PHF H31 PHH:1H3 PHH H32 PHH:2H3 PHH H PHI:1HN PHI H2 PHI:2HN PHI HB2 PHI:1HB PHI HB3 PHI:2HB PHI H21 PHJ:1H2 PHJ H22 PHJ:2H2 PHJ H PHL:1HN PHL H2 PHL:2HN PHL HC1 PHL: H1 PHL HC2 PHL: H2 PHL HB2 PHL:1HB PHL HB3 PHL:2HB PHL HM1 PHM:1HM PHM HM2 PHM:2HM PHM HM3 PHM:3HM PHM H PHM:1HN PHM H2 PHM:2HN PHM HB2 PHM:1HB PHM HB3 PHM:2HB PHM HMA1 PHO:1HMA PHO HMA2 PHO:2HMA PHO HMA3 PHO:3HMA PHO HAA1 PHO:1HAA PHO HAA2 PHO:2HAA PHO HBA1 PHO:1HBA PHO HBA2 PHO:2HBA PHO HMB1 PHO:1HMB PHO HMB2 PHO:2HMB PHO HMB3 PHO:3HMB PHO HBB1 PHO:1HBB PHO HBB2 PHO:2HBB PHO HMC1 PHO:1HMC PHO HMC2 PHO:2HMC PHO HMC3 PHO:3HMC PHO HAC1 PHO:1HAC PHO HAC2 PHO:2HAC PHO HBC1 PHO:1HBC PHO HBC2 PHO:2HBC PHO HBC3 PHO:3HBC PHO HMD1 PHO:1HMD PHO HMD2 PHO:2HMD PHO HMD3 PHO:3HMD PHO HED1 PHO:1HED PHO HED2 PHO:2HED PHO HED3 PHO:3HED PHO H11 PHO:1H1 PHO H12 PHO:2H1 PHO H41 PHO:1H4 PHO H42 PHO:2H4 PHO H43 PHO:3H4 PHO H51 PHO:1H5 PHO H52 PHO:2H5 PHO H61 PHO:1H6 PHO H62 PHO:2H6 PHO H71 PHO:1H7 PHO H72 PHO:2H7 PHO H91 PHO:1H9 PHO H92 PHO:2H9 PHO H93 PHO:3H9 PHO H101 PHO:1H10 PHO H102 PHO:2H10 PHO H111 PHO:1H11 PHO H112 PHO:2H11 PHO H121 PHO:1H12 PHO H122 PHO:2H12 PHO H141 PHO:1H14 PHO H142 PHO:2H14 PHO H143 PHO:3H14 PHO H151 PHO:1H15 PHO H152 PHO:2H15 PHO H161 PHO:1H16 PHO H162 PHO:2H16 PHO H171 PHO:1H17 PHO H172 PHO:2H17 PHO H191 PHO:1H19 PHO H192 PHO:2H19 PHO H193 PHO:3H19 PHO H201 PHO:1H20 PHO H202 PHO:2H20 PHO H203 PHO:3H20 PHO HB11 PHP:1HB1 PHP HB12 PHP:2HB1 PHP HD11 PHP:1HD1 PHP HD12 PHP:2HD1 PHP HE11 PHP:1HE1 PHP HE12 PHP:2HE1 PHP HG21 PHP:1HG2 PHP HG22 PHP:2HG2 PHP HG23 PHP:3HG2 PHP HG24 PHP:4HG2 PHP HG25 PHP:5HG2 PHP HG26 PHP:6HG2 PHP HB31 PHP:1HB3 PHP HB32 PHP:2HB3 PHP HD31 PHP:1HD3 PHP HD32 PHP:2HD3 PHP HE31 PHP:1HE3 PHP HE32 PHP:2HE3 PHP HO3' PHP:'HO3 PHP HB41 PHP:1HB4 PHP HB42 PHP:2HB4 PHP HD41 PHP:1HD4 PHP HD42 PHP:2HD4 PHP HE41 PHP:1HE4 PHP HE42 PHP:2HE4 PHP HG51 PHP:1HG5 PHP HG52 PHP:2HG5 PHP HG53 PHP:3HG5 PHP HG54 PHP:4HG5 PHP HG55 PHP:5HG5 PHP HG56 PHP:6HG5 PHP HB61 PHP:1HB6 PHP HB62 PHP:2HB6 PHP HD61 PHP:1HD6 PHP HE61 PHP:1HE6 PHP HE62 PHP:2HE6 PHP HD62 PHP:2HD6 PHP H11 PHQ:1H1 PHQ H21 PHQ:1H2 PHQ H22 PHQ:2H2 PHQ H41 PHQ:1H4 PHQ H51 PHQ:1H5 PHQ H61 PHQ:1H6 PHQ H71 PHQ:1H7 PHQ H81 PHQ:1H8 PHQ H201 PHR:1H20 PHR H202 PHR:2H20 PHR H191 PHR:1H19 PHR H192 PHR:2H19 PHR H181 PHR:1H18 PHR H182 PHR:2H18 PHR H171 PHR:1H17 PHR H172 PHR:2H17 PHR H161 PHR:1H16 PHR H162 PHR:2H16 PHR H151 PHR:1H15 PHR H152 PHR:2H15 PHR H101 PHR:1H10 PHR H102 PHR:2H10 PHR H141 PHR:1H14 PHR H142 PHR:2H14 PHR HO2P PHS:PHO2 PHS HO3P PHS:PHO3 PHS HOA1 PHW:1HOA PHW HC11 PHW:1HC1 PHW HC12 PHW:2HC1 PHW HC13 PHW:3HC1 PHW HC41 PHW:1HC4 PHW HC42 PHW:2HC4 PHW H161 PHW:1H16 PHW H162 PHW:2H16 PHW HOC1 PHW:1HOC PHW H611 PHW:1H61 PHW H612 PHW:2H61 PHW H613 PHW:3H61 PHW H8A1 PHW:1H8A PHW H8A2 PHW:2H8A PHW H8B1 PHW:1H8B PHW H8B2 PHW:2H8B PHW H8C1 PHW:1H8C PHW H8C2 PHW:2H8C PHW HN31 PHW:1HN3 PHW HAH1 PHX:1HAH PHX HAH2 PHX:2HAH PHX H21 PHY:1H2 PHY H22 PHY:2H2 PHY H23 PHY:3H2 PHY H1'1 PHY:1H1' PHY H1'2 PHY:2H1' PHY H3'1 PHY:1H3' PHY H3'2 PHY:2H3' PHY H3'3 PHY:3H3' PHY HN11 PHY:1HN1 PHY HN12 PHY:2HN1 PHY HO4P PHY:PHO4 PHY HO5P PHY:PHO5 PHY HN11 PHZ:1HN1 PHZ HN12 PHZ:2HN1 PHZ H11 PI1:1H1 PI1 H12 PI1:2H1 PI1 H41 PI1:1H4 PI1 H42A PI1:2H4 PI1 H91 PI1:1H9 PI1 H92 PI1:2H9 PI1 H121 PI1:1H12 PI1 H122 PI1:2H12 PI1 H151 PI1:1H15 PI1 H152 PI1:2H15 PI1 H231 PI1:1H23 PI1 H232 PI1:2H23 PI1 H261 PI1:1H26 PI1 H262 PI1:2H26 PI1 H311 PI1:1H31 PI1 H312 PI1:2H31 PI1 H321 PI1:1H32 PI1 H322 PI1:2H32 PI1 H331 PI1:1H33 PI1 H332 PI1:2H33 PI1 H391 PI1:1H39 PI1 H392 PI1:2H39 PI1 H401 PI1:1H40 PI1 H402 PI1:2H40 PI1 H403 PI1:3H40 PI1 H411 PI1:1H41 PI1 H412 PI1:2H41 PI1 H413 PI1:3H41 PI1 H471 PI1:1H47 PI1 H472 PI1:2H47 PI1 H473 PI1:3H47 PI1 H481 PI1:1H48 PI1 H482 PI1:2H48 PI1 H483 PI1:3H48 PI1 H491 PI1:1H49 PI1 H492 PI1:2H49 PI1 H11 PI2:1H1 PI2 H12 PI2:2H1 PI2 H41 PI2:1H4 PI2 H42 PI2:2H4 PI2 H91 PI2:1H9 PI2 H92 PI2:2H9 PI2 H121 PI2:1H12 PI2 H122 PI2:2H12 PI2 H151 PI2:1H15 PI2 H152 PI2:2H15 PI2 H231 PI2:1H23 PI2 H232 PI2:2H23 PI2 H261 PI2:1H26 PI2 H262 PI2:2H26 PI2 H281 PI2:1H28 PI2 H282 PI2:2H28 PI2 H291 PI2:1H29 PI2 H292 PI2:2H29 PI2 H311 PI2:1H31 PI2 H312 PI2:2H31 PI2 H313 PI2:3H31 PI2 H321 PI2:1H32 PI2 H322 PI2:2H32 PI2 H323 PI2:3H32 PI2 H11 PI3:1H1 PI3 H12A PI3:2H1 PI3 H41 PI3:1H4 PI3 H42 PI3:2H4 PI3 H101 PI3:1H10 PI3 H102 PI3:2H10 PI3 H103 PI3:3H10 PI3 H111 PI3:1H11 PI3 H112 PI3:2H11 PI3 H113 PI3:3H11 PI3 H141 PI3:1H14 PI3 H142 PI3:2H14 PI3 H221 PI3:1H22 PI3 H222 PI3:2H22 PI3 H251 PI3:1H25 PI3 H252 PI3:2H25 PI3 H271 PI3:1H27 PI3 H272 PI3:2H27 PI3 H281 PI3:1H28 PI3 H282 PI3:2H28 PI3 H301 PI3:1H30 PI3 H302 PI3:2H30 PI3 H303 PI3:3H30 PI3 H311 PI3:1H31 PI3 H312 PI3:2H31 PI3 H313 PI3:3H31 PI3 H11 PI4:1H1 PI4 H12 PI4:2H1 PI4 H41 PI4:1H4 PI4 H42 PI4:2H4 PI4 H91 PI4:1H9 PI4 H92 PI4:2H9 PI4 H121 PI4:1H12 PI4 H122 PI4:2H12 PI4 H151 PI4:1H15 PI4 H152 PI4:2H15 PI4 H231 PI4:1H23 PI4 H232 PI4:2H23 PI4 H261 PI4:1H26 PI4 H262 PI4:2H26 PI4 H291 PI4:1H29 PI4 H292 PI4:2H29 PI4 H301 PI4:1H30 PI4 H302 PI4:2H30 PI4 H311 PI4:1H31 PI4 H312 PI4:2H31 PI4 H321 PI4:1H32 PI4 H322 PI4:2H32 PI4 H361 PI4:1H36 PI4 H362 PI4:2H36 PI4 H363 PI4:3H36 PI4 H371 PI4:1H37 PI4 H372 PI4:2H37 PI4 H373 PI4:3H37 PI4 H381 PI4:1H38 PI4 H382 PI4:2H38 PI4 H383 PI4:3H38 PI4 H11 PI5:1H1 PI5 H12 PI5:2H1 PI5 H21 PI5:1H2 PI5 H22A PI5:2H2 PI5 H51 PI5:1H5 PI5 H52 PI5:2H5 PI5 H91 PI5:1H9 PI5 H92 PI5:2H9 PI5 H93 PI5:3H9 PI5 H101 PI5:1H10 PI5 H102 PI5:2H10 PI5 H103 PI5:3H10 PI5 H151 PI5:1H15 PI5 H152 PI5:2H15 PI5 H231 PI5:1H23 PI5 H232 PI5:2H23 PI5 H281 PI5:1H28 PI5 H282 PI5:2H28 PI5 H361 PI5:1H36 PI5 H362 PI5:2H36 PI5 H441 PI5:1H44 PI5 H442 PI5:2H44 PI5 H451 PI5:1H45 PI5 H452 PI5:2H45 PI5 H453 PI5:3H45 PI5 H461 PI5:1H46 PI5 H462 PI5:2H46 PI5 H463 PI5:3H46 PI5 H481 PI5:1H48 PI5 H482 PI5:2H48 PI5 H491 PI5:1H49 PI5 H492 PI5:2H49 PI5 H31 PI6:1H3 PI6 H32 PI6:2H3 PI6 H33A PI6:3H3 PI6 H41A PI6:1H4 PI6 H42 PI6:2H4 PI6 H43 PI6:3H4 PI6 H51 PI6:1H5 PI6 H52 PI6:2H5 PI6 H53 PI6:3H5 PI6 H101 PI6:1H10 PI6 H102 PI6:2H10 PI6 H191 PI6:1H19 PI6 H192 PI6:2H19 PI6 H221 PI6:1H22 PI6 H222 PI6:2H22 PI6 H301 PI6:1H30 PI6 H302 PI6:2H30 PI6 H381 PI6:1H38 PI6 H382 PI6:2H38 PI6 H391 PI6:1H39 PI6 H392 PI6:2H39 PI6 H393 PI6:3H39 PI6 H401 PI6:1H40 PI6 H402 PI6:2H40 PI6 H403 PI6:3H40 PI6 H421 PI6:1H42 PI6 H422 PI6:2H42 PI6 H431 PI6:1H43 PI6 H432 PI6:2H43 PI6 H11 PI7:1H1 PI7 H12A PI7:2H1 PI7 H13A PI7:3H1 PI7 H21A PI7:1H2 PI7 H22 PI7:2H2 PI7 H101 PI7:1H10 PI7 H102 PI7:2H10 PI7 H103 PI7:3H10 PI7 H111 PI7:1H11 PI7 H112 PI7:2H11 PI7 H113 PI7:3H11 PI7 H141 PI7:1H14 PI7 H142 PI7:2H14 PI7 H221 PI7:1H22 PI7 H222 PI7:2H22 PI7 H271 PI7:1H27 PI7 H272 PI7:2H27 PI7 H351 PI7:1H35 PI7 H352 PI7:2H35 PI7 H431 PI7:1H43 PI7 H432 PI7:2H43 PI7 H441 PI7:1H44 PI7 H442 PI7:2H44 PI7 H443 PI7:3H44 PI7 H451 PI7:1H45 PI7 H452 PI7:2H45 PI7 H453 PI7:3H45 PI7 H471 PI7:1H47 PI7 H472 PI7:2H47 PI7 H481 PI7:1H48 PI7 H482 PI7:2H48 PI7 HN11 PI8:1HN1 PI8 H21 PI8:1H2 PI8 H11 PI8:1H1 PI8 HO11 PI8:1HO1 PI8 H91 PI8:1H9 PI8 H92 PI8:2H9 PI8 H41 PI8:1H4 PI8 H71 PI8:1H7 PI8 H51 PI8:1H5 PI8 H61 PI8:1H6 PI8 H111 PI8:1H11 PI8 H121 PI8:1H12 PI8 H122 PI8:2H12 PI8 H181 PI8:1H18 PI8 H141 PI8:1H14 PI8 H171 PI8:1H17 PI8 H151 PI8:1H15 PI8 H161 PI8:1H16 PI8 H191 PI8:1H19 PI8 H192 PI8:2H19 PI8 HO31 PI8:1HO3 PI8 H201 PI8:1H20 PI8 H211 PI8:1H21 PI8 H212 PI8:2H21 PI8 HN21 PI8:1HN2 PI8 H221 PI8:1H22 PI8 H231 PI8:1H23 PI8 H232 PI8:2H23 PI8 H251 PI8:1H25 PI8 H261 PI8:1H26 PI8 H291 PI8:1H29 PI8 H281 PI8:1H28 PI8 HN31 PI8:1HN3 PI8 H311 PI8:1H31 PI8 H321 PI8:1H32 PI8 H331 PI8:1H33 PI8 H332 PI8:2H33 PI8 H333 PI8:3H33 PI8 H341 PI8:1H34 PI8 H342 PI8:2H34 PI8 H351 PI8:1H35 PI8 H352 PI8:2H35 PI8 H353 PI8:3H35 PI8 H41N PI8:1NH4 PI8 H371 PI8:1H37 PI8 H372 PI8:2H37 PI8 H381 PI8:1H38 PI8 H382 PI8:2H38 PI8 H391 PI8:1H39 PI8 H392 PI8:2H39 PI8 H401 PI8:1H40 PI8 H402 PI8:2H40 PI8 H411 PI8:1H41 PI8 H412 PI8:2H41 PI8 H41 PI9:1H4 PI9 H42 PI9:2H4 PI9 H51 PI9:1H5 PI9 H52 PI9:2H5 PI9 H31 PI9:1H3 PI9 H32 PI9:2H3 PI9 H21 PI9:1H2 PI9 H22 PI9:2H2 PI9 HN11 PI9:1HN1 PI9 H71 PI9:1H7 PI9 H81 PI9:1H8 PI9 H101 PI9:1H10 PI9 H102 PI9:2H10 PI9 H103 PI9:3H10 PI9 H91 PI9:1H9 PI9 H92 PI9:2H9 PI9 H93 PI9:3H9 PI9 HN21 PI9:1HN2 PI9 H121 PI9:1H12 PI9 H131 PI9:1H13 PI9 H132 PI9:2H13 PI9 H151 PI9:1H15 PI9 H161 PI9:1H16 PI9 H191 PI9:1H19 PI9 H181 PI9:1H18 PI9 H11 PI9:1H1 PI9 H12 PI9:2H1 PI9 H211 PI9:1H21 PI9 H212 PI9:2H21 PI9 H221 PI9:1H22 PI9 H222 PI9:2H22 PI9 H231 PI9:1H23 PI9 H232 PI9:2H23 PI9 H241 PI9:1H24 PI9 H261 PI9:1H26 PI9 H262 PI9:2H26 PI9 H263 PI9:3H26 PI9 H251 PI9:1H25 PI9 H252 PI9:2H25 PI9 H253 PI9:3H25 PI9 H321 PI9:1H32 PI9 H281 PI9:1H28 PI9 H311 PI9:1H31 PI9 H291 PI9:1H29 PI9 HN41 PI9:1HN4 PI9 HN42 PI9:2HN4 PI9 HN11 PIA:1HN1 PIA HN12 PIA:2HN1 PIA HB11 PIA:1HB1 PIA HB12 PIA:2HB1 PIA HB13 PIA:3HB1 PIA HA31 PIA:1HA3 PIA HA32 PIA:2HA3 PIA HC1 PIB:1HC PIB HC2 PIB:2HC PIB HC3 PIB:3HC PIB HC4 PIB:4HC PIB HC5 PIB:5HC PIB HC6 PIB:6HC PIB HO2 PIB:2HO PIB HO4 PIB:4HO PIB HO5 PIB:5HO PIB HO6 PIB:6HO PIB HO11 PIB:11HO PIB HO31 PIB:31HO PIB HO33 PIB:33HO PIB HC71 PIB:1HC7 PIB HC72 PIB:2HC7 PIB HC8 PIB:8HC PIB HC91 PIB:1HC9 PIB HC92 PIB:2HC9 PIB H111 PIB:1H11 PIB H112 PIB:2H11 PIB H121 PIB:1H12 PIB H122 PIB:2H12 PIB H131 PIB:1H13 PIB H132 PIB:2H13 PIB H133 PIB:3H13 PIB H151 PIB:1H15 PIB H152 PIB:2H15 PIB H161 PIB:1H16 PIB H162 PIB:2H16 PIB H171 PIB:1H17 PIB H172 PIB:2H17 PIB H173 PIB:3H17 PIB H21 PID:1H2 PID H22A PID:2H2 PID H41 PID:1H4 PID H42 PID:2H4 PID H261 PID:1H26 PID H262 PID:2H26 PID H281 PID:1H28 PID H282 PID:2H28 PID H311 PID:1H31 PID H312 PID:2H31 PID H313 PID:3H31 PID HM11 PID:1HM1 PID HM12 PID:2HM1 PID HM13 PID:3HM1 PID HM21 PID:1HM2 PID HM22 PID:2HM2 PID HM23 PID:3HM2 PID HM31 PID:1HM3 PID HM32 PID:2HM3 PID HM33 PID:3HM3 PID HM41 PID:1HM4 PID HM42 PID:2HM4 PID HM43 PID:3HM4 PID HM51 PID:1HM5 PID HM52 PID:2HM5 PID HM53 PID:3HM5 PID HM61 PID:1HM6 PID HM62 PID:2HM6 PID HM63 PID:3HM6 PID HM71 PID:1HM7 PID HM72 PID:2HM7 PID HM73 PID:3HM7 PID HM81 PID:1HM8 PID HM82 PID:2HM8 PID HM83 PID:3HM8 PID H11 PIE:1H1 PIE H12 PIE:2H1 PIE H21 PIE:1H2 PIE H31 PIE:1H3 PIE H32 PIE:2H3 PIE H321 PIE:1H32 PIE H322 PIE:2H32 PIE H331 PIE:1H33 PIE H332 PIE:2H33 PIE H341 PIE:1H34 PIE H342 PIE:2H34 PIE H351 PIE:1H35 PIE H352 PIE:2H35 PIE H361 PIE:1H36 PIE H362 PIE:2H36 PIE H371 PIE:1H37 PIE H372 PIE:2H37 PIE H381 PIE:1H38 PIE H382 PIE:2H38 PIE H391 PIE:1H39 PIE H392 PIE:2H39 PIE H401 PIE:1H40 PIE H402 PIE:2H40 PIE H411 PIE:1H41 PIE H412 PIE:2H41 PIE H421 PIE:1H42 PIE H422 PIE:2H42 PIE H221 PIE:1H22 PIE H222 PIE:2H22 PIE H231 PIE:1H23 PIE H232 PIE:2H23 PIE H241 PIE:1H24 PIE H242 PIE:2H24 PIE H251 PIE:1H25 PIE H252 PIE:2H25 PIE H261 PIE:1H26 PIE H262 PIE:2H26 PIE H271 PIE:1H27 PIE H272 PIE:2H27 PIE H281 PIE:1H28 PIE H282 PIE:2H28 PIE H291 PIE:1H29 PIE H471 PIE:1H47 PIE H481 PIE:1H48 PIE H482 PIE:2H48 PIE H491 PIE:1H49 PIE H492 PIE:2H49 PIE H501 PIE:1H50 PIE H502 PIE:2H50 PIE H511 PIE:1H51 PIE H512 PIE:2H51 PIE H1'1 PIE:1H1' PIE H2'1 PIE:1H2' PIE H3'1 PIE:1H3' PIE H4'1 PIE:1H4' PIE H5'1 PIE:1H5' PIE H6'1 PIE:1H6' PIE HO11 PIE:1HO1 PIE HO21 PIE:1HO2 PIE HO31 PIE:1HO3 PIE HO41 PIE:1HO4 PIE HO61 PIE:1HO6 PIE H521 PIE:1H52 PIE H522 PIE:2H52 PIE H531 PIE:1H53 PIE H532 PIE:2H53 PIE H541 PIE:1H54 PIE H542 PIE:2H54 PIE H551 PIE:1H55 PIE H552 PIE:2H55 PIE H553 PIE:3H55 PIE H431 PIE:1H43 PIE H432 PIE:2H43 PIE H441 PIE:1H44 PIE H442 PIE:2H44 PIE H451 PIE:1H45 PIE H452 PIE:2H45 PIE H461 PIE:1H46 PIE H462 PIE:2H46 PIE H453 PIE:3H45 PIE H11 PIG:1H1 PIG H12 PIG:2H1 PIG H21 PIG:1H2 PIG H22 PIG:2H2 PIG H31 PIG:1H3 PIG H32 PIG:2H3 PIG H41 PIG:1H4 PIG H42 PIG:2H4 PIG H51 PIG:1H5 PIG H52 PIG:2H5 PIG H61 PIG:1H6 PIG H62 PIG:2H6 PIG H211 PII:1H21 PII H212 PII:2H21 PII H251 PII:1H25 PII H252 PII:2H25 PII HR11 PII:1HR1 PII HR12 PII:2HR1 PII HR21 PII:1HR2 PII HR22 PII:2HR2 PII HL11 PII:1HL1 PII HL12 PII:2HL1 PII HL21 PII:1HL2 PII HL22 PII:2HL2 PII HR31 PII:1HR3 PII HR32 PII:2HR3 PII HR41 PII:1HR4 PII HR42 PII:2HR4 PII HR51 PII:1HR5 PII HR52 PII:2HR5 PII HR61 PII:1HR6 PII HR62 PII:2HR6 PII HR71 PII:1HR7 PII HR72 PII:2HR7 PII HR81 PII:1HR8 PII HR82 PII:2HR8 PII HR91 PII:1HR9 PII HR92 PII:2HR9 PII HG1 PII:1HG PII HH1 PII:1HH PII HL31 PII:1HL3 PII HL32 PII:2HL3 PII HL41 PII:1HL4 PII HL42 PII:2HL4 PII HL51 PII:1HL5 PII HL52 PII:2HL5 PII HL61 PII:1HL6 PII HL62 PII:2HL6 PII HL71 PII:1HL7 PII HL72 PII:2HL7 PII HL81 PII:1HL8 PII HL82 PII:2HL8 PII HL91 PII:1HL9 PII HL92 PII:2HL9 PII H111 PIL:1H11 PIL H112 PIL:2H11 PIL H113 PIL:3H11 PIL H51 PIL:1H5 PIL H52 PIL:2H5 PIL H61 PIL:1H6 PIL H62 PIL:2H6 PIL H71 PIL:1H7 PIL H72 PIL:2H7 PIL H81 PIL:1H8 PIL H82 PIL:2H8 PIL H11 PIN:1H1 PIN H12 PIN:2H1 PIN H21 PIN:1H2 PIN H22 PIN:2H2 PIN H31 PIN:1H3 PIN H32 PIN:2H3 PIN H41 PIN:1H4 PIN H42 PIN:2H4 PIN H1'1 PIN:1H1' PIN H1'2 PIN:2H1' PIN H2'1 PIN:1H2' PIN H2'2 PIN:2H2' PIN H3'1 PIN:1H3' PIN H3'2 PIN:2H3' PIN H4'1 PIN:1H4' PIN H4'2 PIN:2H4' PIN HO3' PIN:'HO3 PIN HP12 PIO:2HP1 PIO HP42 PIO:2HP4 PIO HP53 PIO:3HP5 PIO HP52 PIO:2HP5 PIO HC11 PIO:1HC1 PIO HC12 PIO:2HC1 PIO HC31 PIO:1HC3 PIO HC32 PIO:2HC3 PIO H2A1 PIO:1H2A PIO H2A2 PIO:2H2A PIO H3A1 PIO:1H3A PIO H3A2 PIO:2H3A PIO H4A1 PIO:1H4A PIO H4A2 PIO:2H4A PIO H5A1 PIO:1H5A PIO H5A2 PIO:2H5A PIO H6A1 PIO:1H6A PIO H6A2 PIO:2H6A PIO H7A1 PIO:1H7A PIO H7A2 PIO:2H7A PIO H8A1 PIO:1H8A PIO H8A2 PIO:2H8A PIO H8A3 PIO:3H8A PIO H2B1 PIO:1H2B PIO H2B2 PIO:2H2B PIO H3B1 PIO:1H3B PIO H3B2 PIO:2H3B PIO H4B1 PIO:1H4B PIO H4B2 PIO:2H4B PIO H5B1 PIO:1H5B PIO H5B2 PIO:2H5B PIO H6B1 PIO:1H6B PIO H6B2 PIO:2H6B PIO H7B1 PIO:1H7B PIO H7B2 PIO:2H7B PIO H8B1 PIO:1H8B PIO H8B2 PIO:2H8B PIO H8B3 PIO:3H8B PIO H21 PIP:1H2 PIP H22 PIP:2H2 PIP H31 PIP:1H3 PIP H32 PIP:2H3 PIP H41 PIP:1H4 PIP H42 PIP:2H4 PIP H51 PIP:1H5 PIP H52 PIP:2H5 PIP H61 PIP:1H6 PIP H62 PIP:2H6 PIP HM1 PIQ:1HM PIQ HM2 PIQ:2HM PIQ HM3 PIQ:3HM PIQ HN51 PIR:1HN5 PIR HN52 PIR:2HN5 PIR HO2' PIR:'HO2 PIR HO3' PIR:'HO3 PIR HN4' PIR:'HN4 PIR H5'1 PIR:1H5' PIR H5'2 PIR:2H5' PIR HO5' PIR:'HO5 PIR HN11 PIU:1HN1 PIU HN12 PIU:2HN1 PIU H151 PIU:1H15 PIU H152 PIU:2H15 PIU H161 PIU:1H16 PIU H162 PIU:2H16 PIU H121 PIU:1H12 PIU H122 PIU:2H12 PIU H123 PIU:3H12 PIU H131 PIU:1H13 PIU H132 PIU:2H13 PIU H133 PIU:3H13 PIU H141 PIU:1H14 PIU H142 PIU:2H14 PIU H143 PIU:3H14 PIU H11 PIV:1H1 PIV H12 PIV:2H1 PIV H13 PIV:3H1 PIV H21 PIV:1H2 PIV H22 PIV:2H2 PIV H23 PIV:3H2 PIV H31 PIV:1H3 PIV H32 PIV:2H3 PIV H33 PIV:3H3 PIV H22A PKF:2H2 PKF H21 PKF:1H2 PKF H92 PKF:2H9 PKF H91 PKF:1H9 PKF H112 PKF:2H11 PKF H111 PKF:1H11 PKF H122 PKF:2H12 PKF H121 PKF:1H12 PKF H142 PKF:2H14 PKF H141 PKF:1H14 PKF H162 PKF:2H16 PKF H161 PKF:1H16 PKF H172 PKF:2H17 PKF H171 PKF:1H17 PKF H192 PKF:2H19 PKF H191 PKF:1H19 PKF H33 PKF:3H3 PKF H32 PKF:2H3 PKF H31A PKF:1H3 PKF H4N1 PKF:1H4N PKF H262 PKF:2H26 PKF H261 PKF:1H26 PKF H293 PKF:3H29 PKF H292 PKF:2H29 PKF H291 PKF:1H29 PKF H323 PKF:3H32 PKF H322 PKF:2H32 PKF H321 PKF:1H32 PKF H332 PKF:2H33 PKF H331 PKF:1H33 PKF H352 PKF:2H35 PKF H351 PKF:1H35 PKF H362 PKF:2H36 PKF H361 PKF:1H36 PKF HN21 PL0:1HN2 PL0 HN22 PL0:2HN2 PL0 H2A1 PL2:1H2A PL2 H2A2 PL2:2H2A PL2 H2A3 PL2:3H2A PL2 H4A1 PL2:1H4A PL2 H4A2 PL2:2H4A PL2 HA1 PL2:1HA PL2 HA2 PL2:2HA PL2 HG1 PL2:1HG PL2 HG2 PL2:2HG PL2 H5M1 PL2:1H5M PL2 H5M2 PL2:2H5M PL2 HB1 PL2:1HB PL2 HB2 PL2:2HB PL2 HD1 PL2:1HD PL2 HD2 PL2:2HD PL2 HH11 PL2:1HH1 PL2 HH12 PL2:2HH1 PL2 H1C1 PL3:1H1C PL3 H1C2 PL3:2H1C PL3 H2C1 PL3:1H2C PL3 H2C2 PL3:2H2C PL3 H3C1 PL3:1H3C PL3 H3C2 PL3:2H3C PL3 H4C1 PL3:1H4C PL3 H4C2 PL3:2H4C PL3 H5C1 PL3:1H5C PL3 H5C2 PL3:2H5C PL3 H6C1 PL3:1H6C PL3 H6C2 PL3:2H6C PL3 H7C1 PL3:1H7C PL3 H7C2 PL3:2H7C PL3 H8C1 PL3:1H8C PL3 H8C2 PL3:2H8C PL3 H9C1 PL3:1H9C PL3 H9C2 PL3:2H9C PL3 HAC1 PL3:1HAC PL3 HAC2 PL3:2HAC PL3 HBC1 PL3:1HBC PL3 HBC2 PL3:2HBC PL3 HCC1 PL3:1HCC PL3 HCC2 PL3:2HCC PL3 HDC1 PL3:1HDC PL3 HDC2 PL3:2HDC PL3 HEC1 PL3:1HEC PL3 HEC2 PL3:2HEC PL3 HFC1 PL3:1HFC PL3 HFC2 PL3:2HFC PL3 HGC1 PL3:1HGC PL3 HGC2 PL3:2HGC PL3 HGC3 PL3:3HGC PL3 H101 PL7:1H10 PL7 H102 PL7:2H10 PL7 H111 PL7:1H11 PL7 H112 PL7:2H11 PL7 H5C1 PL7:1H5C PL7 H5C2 PL7:2H5C PL7 H7C1 PL7:1H7C PL7 H7C2 PL7:2H7C PL7 HC71 PL9:1HC7 PL9 HC72 PL9:2HC7 PL9 H101 PL9:1H10 PL9 H102 PL9:2H10 PL9 H103 PL9:3H10 PL9 H111 PL9:1H11 PL9 H112 PL9:2H11 PL9 H121 PL9:1H12 PL9 H122 PL9:2H12 PL9 H151 PL9:1H15 PL9 H152 PL9:2H15 PL9 H153 PL9:3H15 PL9 H161 PL9:1H16 PL9 H162 PL9:2H16 PL9 H171 PL9:1H17 PL9 H172 PL9:2H17 PL9 H201 PL9:1H20 PL9 H202 PL9:2H20 PL9 H203 PL9:3H20 PL9 H211 PL9:1H21 PL9 H212 PL9:2H21 PL9 H221 PL9:1H22 PL9 H222 PL9:2H22 PL9 H251 PL9:1H25 PL9 H252 PL9:2H25 PL9 H253 PL9:3H25 PL9 H261 PL9:1H26 PL9 H262 PL9:2H26 PL9 H271 PL9:1H27 PL9 H272 PL9:2H27 PL9 H301 PL9:1H30 PL9 H302 PL9:2H30 PL9 H303 PL9:3H30 PL9 H311 PL9:1H31 PL9 H312 PL9:2H31 PL9 H321 PL9:1H32 PL9 H322 PL9:2H32 PL9 H351 PL9:1H35 PL9 H352 PL9:2H35 PL9 H353 PL9:3H35 PL9 H361 PL9:1H36 PL9 H362 PL9:2H36 PL9 H371 PL9:1H37 PL9 H372 PL9:2H37 PL9 H401 PL9:1H40 PL9 H402 PL9:2H40 PL9 H403 PL9:3H40 PL9 H411 PL9:1H41 PL9 H412 PL9:2H41 PL9 H421 PL9:1H42 PL9 H422 PL9:2H42 PL9 H451 PL9:1H45 PL9 H452 PL9:2H45 PL9 H453 PL9:3H45 PL9 H461 PL9:1H46 PL9 H462 PL9:2H46 PL9 H471 PL9:1H47 PL9 H472 PL9:2H47 PL9 H501 PL9:1H50 PL9 H502 PL9:2H50 PL9 H503 PL9:3H50 PL9 H511 PL9:1H51 PL9 H512 PL9:2H51 PL9 H513 PL9:3H51 PL9 H521 PL9:1H52 PL9 H522 PL9:2H52 PL9 H523 PL9:3H52 PL9 H531 PL9:1H53 PL9 H532 PL9:2H53 PL9 H533 PL9:3H53 PL9 H2A1 PLA:1H2A PLA H2A2 PLA:2H2A PLA H2A3 PLA:3H2A PLA H4A1 PLA:1H4A PLA H4A2 PLA:2H4A PLA H5A1 PLA:1H5A PLA H5A2 PLA:2H5A PLA HOP2 PLA:2HOP PLA HOP3 PLA:3HOP PLA HB11 PLA:1HB1 PLA HB12 PLA:2HB1 PLA HB21 PLA:1HB2 PLA HB22 PLA:2HB2 PLA HB23 PLA:3HB2 PLA H11 PLC:1H1 PLC H12 PLC:2H1 PLC H31 PLC:1H3 PLC H32 PLC:2H3 PLC H41 PLC:1H4 PLC H42 PLC:2H4 PLC H51 PLC:1H5 PLC H52 PLC:2H5 PLC H61 PLC:1H6 PLC H62 PLC:2H6 PLC H63 PLC:3H6 PLC H71 PLC:1H7 PLC H72 PLC:2H7 PLC H73 PLC:3H7 PLC H81 PLC:1H8 PLC H82 PLC:2H8 PLC H83 PLC:3H8 PLC H1'1 PLC:1H1' PLC H1'2 PLC:2H1' PLC H2'1 PLC:1H2' PLC H2'2 PLC:2H2' PLC H3'1 PLC:1H3' PLC H3'2 PLC:2H3' PLC H4'1 PLC:1H4' PLC H4'2 PLC:2H4' PLC H5'1 PLC:1H5' PLC H5'2 PLC:2H5' PLC H6'1 PLC:1H6' PLC H6'2 PLC:2H6' PLC H7'1 PLC:1H7' PLC H7'2 PLC:2H7' PLC H8'1 PLC:1H8' PLC H8'2 PLC:2H8' PLC H9'1 PLC:1H9' PLC H9'2 PLC:2H9' PLC HT'1 PLC:1HT' PLC HT'2 PLC:2HT' PLC HE'1 PLC:1HE' PLC HE'2 PLC:2HE' PLC HE'3 PLC:3HE' PLC H1A1 PLC:1H1" PLC H1A2 PLC:2H1" PLC H2A1 PLC:1H2" PLC H2A2 PLC:2H2" PLC H3A1 PLC:1H3" PLC H3A2 PLC:2H3" PLC H4A1 PLC:1H4" PLC H4A2 PLC:2H4" PLC H5A1 PLC:1H5" PLC H5A2 PLC:2H5" PLC H6A1 PLC:1H6" PLC H6A2 PLC:2H6" PLC H7A1 PLC:1H7" PLC H7A2 PLC:2H7" PLC H8A1 PLC:1H8" PLC H8A2 PLC:2H8" PLC H9A1 PLC:1H9" PLC H9A2 PLC:2H9" PLC HTA1 PLC:1HT" PLC HTA2 PLC:2HT" PLC HEA1 PLC:1HE" PLC HEA2 PLC:2HE" PLC HEA3 PLC:3HE" PLC HOP2 PLC:2HOP PLC H11 PLD:1H1 PLD H12 PLD:2H1 PLD H31 PLD:1H3 PLD H32 PLD:2H3 PLD H41 PLD:1H4 PLD H42 PLD:2H4 PLD H51 PLD:1H5 PLD H52 PLD:2H5 PLD H61 PLD:1H6 PLD H62 PLD:2H6 PLD H63 PLD:3H6 PLD H71 PLD:1H7 PLD H72 PLD:2H7 PLD H73 PLD:3H7 PLD H81 PLD:1H8 PLD H82 PLD:2H8 PLD H83 PLD:3H8 PLD H1'1 PLD:1H1' PLD H1'2 PLD:2H1' PLD H2'1 PLD:1H2' PLD H2'2 PLD:2H2' PLD H3'1 PLD:1H3' PLD H3'2 PLD:2H3' PLD H4'1 PLD:1H4' PLD H4'2 PLD:2H4' PLD H5'1 PLD:1H5' PLD H5'2 PLD:2H5' PLD H6'1 PLD:1H6' PLD H6'2 PLD:2H6' PLD H7'1 PLD:1H7' PLD H7'2 PLD:2H7' PLD H8'1 PLD:1H8' PLD H8'2 PLD:2H8' PLD H9'1 PLD:1H9' PLD H9'2 PLD:2H9' PLD HT'1 PLD:1HT' PLD HT'2 PLD:2HT' PLD HE'1 PLD:1HE' PLD HE'2 PLD:2HE' PLD H1A1 PLD:1H1" PLD H1A2 PLD:2H1" PLD H2A1 PLD:1H2" PLD H2A2 PLD:2H2" PLD H3A1 PLD:1H3" PLD H3A2 PLD:2H3" PLD H4A1 PLD:1H4" PLD H4A2 PLD:2H4" PLD H5A1 PLD:1H5" PLD H5A2 PLD:2H5" PLD H6A1 PLD:1H6" PLD H6A2 PLD:2H6" PLD H7A1 PLD:1H7" PLD H7A2 PLD:2H7" PLD H8A1 PLD:1H8" PLD H8A2 PLD:2H8" PLD H9A1 PLD:1H9" PLD H9A2 PLD:2H9" PLD HTA1 PLD:1HT" PLD HTA2 PLD:2HT" PLD HEA1 PLD:1HE" PLD HEA2 PLD:2HE" PLD HOP2 PLD:2HOP PLD HA'1 PLD:1HA' PLD HA'2 PLD:2HA' PLD HB'1 PLD:1HB' PLD HB'2 PLD:2HB' PLD HC'1 PLD:1HC' PLD HC'2 PLD:2HC' PLD HD'1 PLD:1HD' PLD HD'2 PLD:2HD' PLD HF'1 PLD:1HF' PLD HF'2 PLD:2HF' PLD HG'1 PLD:1HG' PLD HG'2 PLD:2HG' PLD HH'1 PLD:1HH' PLD HH'2 PLD:2HH' PLD HI'1 PLD:1HI' PLD HI'2 PLD:2HI' PLD HJ'1 PLD:1HJ' PLD HJ'2 PLD:2HJ' PLD HJ'3 PLD:3HJ' PLD HAA1 PLD:1HA" PLD HAA2 PLD:2HA" PLD HBA1 PLD:1HB" PLD HBA2 PLD:2HB" PLD HCA1 PLD:1HC" PLD HCA2 PLD:2HC" PLD HDA1 PLD:1HD" PLD HDA2 PLD:2HD" PLD HFA1 PLD:1HF" PLD HFA2 PLD:2HF" PLD HGA1 PLD:1HG" PLD HGA2 PLD:2HG" PLD HHA1 PLD:1HH" PLD HHA2 PLD:2HH" PLD HIA1 PLD:1HI" PLD HIA2 PLD:2HI" PLD HJA1 PLD:1HJ" PLD HJA2 PLD:2HJ" PLD HJA3 PLD:3HJ" PLD HB1 PLE:1HB PLE HB2 PLE:2HB PLE HD11 PLE:1HD1 PLE HD12 PLE:2HD1 PLE HD13 PLE:3HD1 PLE HD21 PLE:1HD2 PLE HD22 PLE:2HD2 PLE HD23 PLE:3HD2 PLE HN1 PLE:1HN PLE HN2 PLE:2HN PLE H2A1 PLG:1H2A PLG H2A2 PLG:2H2A PLG H2A3 PLG:3H2A PLG H4A1 PLG:1H4A PLG H4A2 PLG:2H4A PLG H5A1 PLG:1H5A PLG H5A2 PLG:2H5A PLG HOP2 PLG:2HOP PLG HOP3 PLG:3HOP PLG H21 PLH:1H2 PLH H22 PLH:2H2 PLH H41 PLH:1H4 PLH H42 PLH:2H4 PLH H61 PLH:1H6 PLH H62 PLH:2H6 PLH H63 PLH:3H6 PLH H71 PLH:1H7 PLH H72 PLH:2H7 PLH H73 PLH:3H7 PLH H111 PLH:1H11 PLH H112 PLH:2H11 PLH H113 PLH:3H11 PLH H121 PLH:1H12 PLH H122 PLH:2H12 PLH H21 PLM:1H2 PLM H22 PLM:2H2 PLM H31 PLM:1H3 PLM H32 PLM:2H3 PLM H41 PLM:1H4 PLM H42 PLM:2H4 PLM H51 PLM:1H5 PLM H52 PLM:2H5 PLM H61 PLM:1H6 PLM H62 PLM:2H6 PLM H71 PLM:1H7 PLM H72 PLM:2H7 PLM H81 PLM:1H8 PLM H82 PLM:2H8 PLM H91 PLM:1H9 PLM H92 PLM:2H9 PLM HA1 PLM:1HA PLM HA2 PLM:2HA PLM HB1 PLM:1HB PLM HB2 PLM:2HB PLM HC1 PLM:1HC PLM HC2 PLM:2HC PLM HD1 PLM:1HD PLM HD2 PLM:2HD PLM HE1 PLM:1HE PLM HE2 PLM:2HE PLM HF1 PLM:1HF PLM HF2 PLM:2HF PLM HG1 PLM:1HG PLM HG2 PLM:2HG PLM HG3 PLM:3HG PLM HOP1 PLN:1HOP PLN HOP2 PLN:2HOP PLN H8 PLN:8H PLN H9 PLN:9H PLN H4 PLN:4H PLN H5 PLN:5H PLN H6 PLN:6H PLN H1 PLN:1H PLN H2 PLN:2H PLN H3 PLN:3H PLN H11 PLO:1H1 PLO H12 PLO:2H1 PLO H21 PLO:1H2 PLO H22 PLO:2H2 PLO H41 PLO:1H4 PLO H42 PLO:2H4 PLO H71 PLO:1H7 PLO H72 PLO:2H7 PLO H111 PLO:1H11 PLO H112 PLO:2H11 PLO H121 PLO:1H12 PLO H122 PLO:2H12 PLO H151 PLO:1H15 PLO H152 PLO:2H15 PLO H161 PLO:1H16 PLO H162 PLO:2H16 PLO H181 PLO:1H18 PLO H182 PLO:2H18 PLO H183 PLO:3H18 PLO H191 PLO:1H19 PLO H192 PLO:2H19 PLO H193 PLO:3H19 PLO H211 PLO:1H21 PLO H212 PLO:2H21 PLO H213 PLO:3H21 PLO H2A1 PLP:1H2A PLP H2A2 PLP:2H2A PLP H2A3 PLP:3H2A PLP H5A1 PLP:1H5A PLP H5A2 PLP:2H5A PLP HOP2 PLP:2HOP PLP HOP3 PLP:3HOP PLP H2A1 PLR:1H2A PLR H2A2 PLR:2H2A PLR H2A3 PLR:3H2A PLR H4A1 PLR:1H4A PLR H4A2 PLR:2H4A PLR H4A3 PLR:3H4A PLR H5A1 PLR:1H5A PLR H5A2 PLR:2H5A PLR HB1 PLS:1HB PLS HB2 PLS:2HB PLS H2A1 PLS:1H2A PLS H2A2 PLS:2H2A PLS H2A3 PLS:3H2A PLS H4A1 PLS:1H4A PLS H4A2 PLS:2H4A PLS H5A1 PLS:1H5A PLS H5A2 PLS:2H5A PLS HOP2 PLS:2HOP PLS HOP3 PLS:3HOP PLS H2A1 PLT:1H2A PLT H2A2 PLT:2H2A PLT H2A3 PLT:3H2A PLT H5A1 PLT:1H5A PLT H5A2 PLT:2H5A PLT HOP2 PLT:2HOP PLT HOP3 PLT:3HOP PLT HB1 PLT:1HB PLT HB2 PLT:2HB PLT HB1 PLU:1HB PLU HB2 PLU:2HB PLU HD11 PLU:1HD1 PLU HD12 PLU:2HD1 PLU HD13 PLU:3HD1 PLU HD21 PLU:1HD2 PLU HD22 PLU:2HD2 PLU HD23 PLU:3HD2 PLU HN1 PLU:1HN PLU HN2 PLU:2HN PLU HB1 PLV:1HB PLV HB2 PLV:2HB PLV H2A1 PLV:1H2A PLV H2A2 PLV:2H2A PLV H2A3 PLV:3H2A PLV H4A1 PLV:1H4A PLV H4A2 PLV:2H4A PLV H5A1 PLV:1H5A PLV H5A2 PLV:2H5A PLV H71 PLV:1H7 PLV H72 PLV:2H7 PLV H73 PLV:3H7 PLV H231 PLX:1H23 PLX H232 PLX:2H23 PLX H233 PLX:3H23 PLX H221 PLX:1H22 PLX H222 PLX:2H22 PLX H211 PLX:1H21 PLX H212 PLX:2H21 PLX H201 PLX:1H20 PLX H202 PLX:2H20 PLX H191 PLX:1H19 PLX H192 PLX:2H19 PLX H181 PLX:1H18 PLX H182 PLX:2H18 PLX H171 PLX:1H17 PLX H172 PLX:2H17 PLX H161 PLX:1H16 PLX H162 PLX:2H16 PLX H151 PLX:1H15 PLX H152 PLX:2H15 PLX H141 PLX:1H14 PLX H142 PLX:2H14 PLX H131 PLX:1H13 PLX H132 PLX:2H13 PLX H121 PLX:1H12 PLX H122 PLX:2H12 PLX H111 PLX:1H11 PLX H112 PLX:2H11 PLX H101 PLX:1H10 PLX H102 PLX:2H10 PLX H91 PLX:1H9 PLX H92 PLX:2H9 PLX H81 PLX:1H8 PLX H82 PLX:2H8 PLX H71 PLX:1H7 PLX H72 PLX:2H7 PLX H31 PLX:1H3 PLX H32 PLX:2H3 PLX H21 PLX:1H2 PLX H22 PLX:2H2 PLX H11 PLX:1H1 PLX H12 PLX:2H1 PLX H1C1 PLX:1H1C PLX H1C2 PLX:2H1C PLX H1C3 PLX:3H1C PLX H1B1 PLX:1H1B PLX H1B2 PLX:2H1B PLX H1B3 PLX:3H1B PLX H1A1 PLX:1H1A PLX H1A2 PLX:2H1A PLX H1A3 PLX:3H1A PLX H51 PLX:1H5 PLX H52 PLX:2H5 PLX H251 PLX:1H25 PLX H252 PLX:2H25 PLX H261 PLX:1H26 PLX H262 PLX:2H26 PLX H271 PLX:1H27 PLX H272 PLX:2H27 PLX H281 PLX:1H28 PLX H282 PLX:2H28 PLX H291 PLX:1H29 PLX H292 PLX:2H29 PLX H301 PLX:1H30 PLX H302 PLX:2H30 PLX H311 PLX:1H31 PLX H312 PLX:2H31 PLX H321 PLX:1H32 PLX H322 PLX:2H32 PLX H331 PLX:1H33 PLX H332 PLX:2H33 PLX H341 PLX:1H34 PLX H342 PLX:2H34 PLX H351 PLX:1H35 PLX H352 PLX:2H35 PLX H361 PLX:1H36 PLX H362 PLX:2H36 PLX H371 PLX:1H37 PLX H372 PLX:2H37 PLX H381 PLX:1H38 PLX H382 PLX:2H38 PLX H391 PLX:1H39 PLX H392 PLX:2H39 PLX H393 PLX:3H39 PLX H11 PLY:1H1 PLY H21 PLY:1H2 PLY H22 PLY:2H2 PLY H31 PLY:1H3 PLY H32 PLY:2H3 PLY H41 PLY:1H4 PLY H42 PLY:2H4 PLY H51 PLY:1H5 PLY H52 PLY:2H5 PLY H61 PLY:1H6 PLY H62 PLY:2H6 PLY H71 PLY:1H7 PLY H72 PLY:2H7 PLY H81 PLY:1H8 PLY H82 PLY:2H8 PLY H91 PLY:1H9 PLY H92 PLY:2H9 PLY HA1 PLY:1HA PLY HA2 PLY:2HA PLY HB1 PLY:1HB PLY HB2 PLY:2HB PLY HC1 PLY:1HC PLY HC2 PLY:2HC PLY HD1 PLY:1HD PLY HD2 PLY:2HD PLY HE1 PLY:1HE PLY HE2 PLY:2HE PLY HF1 PLY:1HF PLY HF2 PLY:2HF PLY HG1 PLY:1HG PLY HG2 PLY:2HG PLY HG3 PLY:3HG PLY H2A1 PLZ:1H2A PLZ H2A2 PLZ:2H2A PLZ H2A3 PLZ:3H2A PLZ H4A1 PLZ:1H4A PLZ H4A2 PLZ:2H4A PLZ H51 PLZ:1H5 PLZ H52 PLZ:2H5 PLZ H61 PLZ:1H6 PLZ H62 PLZ:2H6 PLZ H81 PLZ:1H8 PLZ H82 PLZ:2H8 PLZ H5M1 PLZ:1H5M PLZ H5M2 PLZ:2H5M PLZ H351 PM1:1H35 PM1 H352 PM1:2H35 PM1 H7C1 PM2:1H7C PM2 H7C2 PM2:2H7C PM2 H8N1 PM2:1H8N PM2 H8N2 PM2:2H8N PM2 H9C1 PM2:1H9C PM2 H9C2 PM2:2H9C PM2 H101 PM2:1H10 PM2 H102 PM2:2H10 PM2 H151 PM2:1H15 PM2 H152 PM2:2H15 PM2 H161 PM2:1H16 PM2 H162 PM2:2H16 PM2 H221 PM2:1H22 PM2 H222 PM2:2H22 PM2 H241 PM2:1H24 PM2 H242 PM2:2H24 PM2 H PM3:1HN PM3 H2 PM3:2HN PM3 HB2 PM3:1HB PM3 HB3 PM3:2HB PM3 HH42 PM3:1HH4 PM3 HH43 PM3:2HH4 PM3 H281 PM4:1H28 PM4 H282 PM4:2H28 PM4 H301 PM4:1H30 PM4 H302 PM4:2H30 PM4 H303 PM4:3H30 PM4 H311 PM4:1H31 PM4 H312 PM4:2H31 PM4 H313 PM4:3H31 PM4 H371 PM4:1H37 PM4 H372 PM4:2H37 PM4 H381 PM4:1H38 PM4 H382 PM4:2H38 PM4 H421 PM4:1H42 PM4 H422 PM4:2H42 PM4 H431 PM4:1H43 PM4 H432 PM4:2H43 PM4 H21 PM4:1H2 PM4 H22 PM4:2H2 PM4 H31 PM4:1H3 PM4 H32A PM4:2H3 PM4 H41A PM4:1H4 PM4 H42 PM4:2H4 PM4 H51 PM4:1H5 PM4 H52 PM4:2H5 PM4 H61 PM4:1H6 PM4 H62 PM4:2H6 PM4 H63 PM4:3H6 PM4 H281 PM5:1H28 PM5 H282 PM5:2H28 PM5 H301 PM5:1H30 PM5 H302 PM5:2H30 PM5 H303 PM5:3H30 PM5 H311 PM5:1H31 PM5 H312 PM5:2H31 PM5 H313 PM5:3H31 PM5 H371 PM5:1H37 PM5 H372 PM5:2H37 PM5 H381 PM5:1H38 PM5 H382 PM5:2H38 PM5 H421 PM5:1H42 PM5 H422 PM5:2H42 PM5 H431 PM5:1H43 PM5 H432 PM5:2H43 PM5 H21 PM5:1H2 PM5 H22 PM5:2H2 PM5 H31 PM5:1H3 PM5 H32A PM5:2H3 PM5 H41A PM5:1H4 PM5 H42 PM5:2H4 PM5 H51 PM5:1H5 PM5 H52 PM5:2H5 PM5 H61 PM5:1H6 PM5 H62 PM5:2H6 PM5 H71 PM5:1H7 PM5 H72 PM5:2H7 PM5 H73 PM5:3H7 PM5 H281 PM8:1H28 PM8 H282 PM8:2H28 PM8 H301 PM8:1H30 PM8 H302 PM8:2H30 PM8 H303 PM8:3H30 PM8 H311 PM8:1H31 PM8 H312 PM8:2H31 PM8 H313 PM8:3H31 PM8 H371 PM8:1H37 PM8 H372 PM8:2H37 PM8 H381 PM8:1H38 PM8 H382 PM8:2H38 PM8 H421 PM8:1H42 PM8 H422 PM8:2H42 PM8 H431 PM8:1H43 PM8 H432 PM8:2H43 PM8 H21 PM8:1H2 PM8 H22 PM8:2H2 PM8 H31 PM8:1H3 PM8 H32A PM8:2H3 PM8 H41A PM8:1H4 PM8 H42 PM8:2H4 PM8 H51 PM8:1H5 PM8 H52 PM8:2H5 PM8 H61 PM8:1H6 PM8 H62 PM8:2H6 PM8 H71 PM8:1H7 PM8 H72 PM8:2H7 PM8 H81 PM8:1H8 PM8 H82 PM8:2H8 PM8 H91 PM8:1H9 PM8 H92 PM8:2H9 PM8 H101 PM8:1H10 PM8 H102 PM8:2H10 PM8 H103 PM8:3H10 PM8 HCA1 PMC:1HCA PMC HCA2 PMC:2HCA PMC HC2O PMC:OHC2 PMC H7'1 PMD:1H7* PMD H9'1 PMD:1H9* PMD H9'2 PMD:2H9* PMD H1'1 PMD:1H1' PMD H2'1 PMD:1H2' PMD H3'1 PMD:1H3' PMD H4'1 PMD:1H4' PMD H6'1 PMD:1H6' PMD H61 PMD:1H6 PMD H8'1 PMD:1H8' PMD H9B PMD:1H9' PMD H10' PMD:'H10 PMD H11' PMD:'H11 PMD HN21 PMD:1HN2 PMD HN22 PMD:2HN2 PMD HN41 PMD:1HN4 PMD HN42 PMD:2HN4 PMD HN11 PME:1HN1 PME HN12 PME:2HN1 PME H31 PME:1H3 PME H32 PME:2H3 PME H111 PME:1H11 PME H112 PME:2H11 PME H211 PME:1H21 PME H212 PME:2H21 PME H213 PME:3H21 PME H10C PMF:CH10 PMF HC41 PMF:1HC4 PMF HC42 PMF:2HC4 PMF H2A1 PMG:1H2A PMG H2A2 PMG:2H2A PMG H2A3 PMG:3H2A PMG H4A1 PMG:1H4A PMG H4A2 PMG:2H4A PMG H5A1 PMG:1H5A PMG H5A2 PMG:2H5A PMG HB21 PMG:1HB2 PMG HB22 PMG:2HB2 PMG HB23 PMG:3HB2 PMG HB11 PMG:1HB1 PMG HB12 PMG:2HB1 PMG HG1 PMG:1HG PMG HG2 PMG:2HG PMG H2A1 PMH:1H2A PMH H2A2 PMH:2H2A PMH H2A3 PMH:3H2A PMH H4A1 PMH:1H4A PMH H4A2 PMH:2H4A PMH H5A1 PMH:1H5A PMH H5A2 PMH:2H5A PMH H9'1 PMI:1H9' PMI H9'2 PMI:2H9' PMI H111 PMI:1H11 PMI H112 PMI:2H11 PMI H7'1 PMI:1H7' PMI H7'2 PMI:2H7' PMI HC21 PML:1HC2 PML HC22 PML:2HC2 PML HC31 PML:1HC3 PML HC32 PML:2HC3 PML HC41 PML:1HC4 PML HC42 PML:2HC4 PML HC51 PML:1HC5 PML HC52 PML:2HC5 PML HC61 PML:1HC6 PML HC62 PML:2HC6 PML HN21 PMM:1HN2 PMM HN22 PMM:2HN2 PMM H91 PMM:1H9 PMM H92 PMM:2H9 PMM HOP2 PMM:2HOP PMM HOP3 PMM:3HOP PMM H21 PMN:1H2 PMN H22 PMN:2H2 PMN H31 PMN:1H3 PMN H32 PMN:2H3 PMN H111 PMN:1H11 PMN H112 PMN:2H11 PMN H131 PMN:1H13 PMN H132 PMN:2H13 PMN H141 PMN:1H14 PMN H142 PMN:2H14 PMN H171 PMN:1H17 PMN H172 PMN:2H17 PMN H173 PMN:3H17 PMN H181 PMN:1H18 PMN H182 PMN:2H18 PMN H183 PMN:3H18 PMN H21 PMO:1H2 PMO H41 PMO:1H4 PMO H61 PMO:1H6 PMO H71 PMO:1H7 PMO H111 PMO:1H11 PMO H112 PMO:2H11 PMO H113 PMO:3H11 PMO HOP2 PMO:2HOP PMO HOP3 PMO:3HOP PMO H5'1 PMO:1H5* PMO H5'2 PMO:2H5* PMO H4' PMO: H4* PMO H3' PMO: H3* PMO HO3' PMO:*HO3 PMO H2' PMO: H2* PMO HO2' PMO:*HO2 PMO H1' PMO: H1* PMO H2A1 PMP:1H2A PMP H2A2 PMP:2H2A PMP H2A3 PMP:3H2A PMP H4A1 PMP:1H4A PMP H4A2 PMP:2H4A PMP HNA1 PMP:1HNA PMP HNA2 PMP:2HNA PMP H5A1 PMP:1H5A PMP H5A2 PMP:2H5A PMP HOP2 PMP:2HOP PMP HOP3 PMP:3HOP PMP H1 PMS:1H PMS H2A PMS:2H PMS HOS2 PMS:2HOS PMS H7'1 PMT:1H7' PMT H7'2 PMT:2H7' PMT H9'1 PMT:1H9' PMT H9'2 PMT:2H9' PMT H9'3 PMT:3H9' PMT H8'1 PMT:1H8' PMT H8'2 PMT:2H8' PMT H8'3 PMT:3H8' PMT H3'1 PMT:1H3' PMT H3'2 PMT:2H3' PMT H2'1 PMT:1H2' PMT H2'2 PMT:2H2' PMT H5'1 PMT:1H5* PMT H5'' PMT:2H5* PMT H4' PMT: H4* PMT H3B PMT: H3* PMT H2' PMT: H2* PMT H1' PMT: H1* PMT HN41 PMT:1HN4 PMT HN42 PMT:2HN4 PMT H51 PMV:1H5 PMV H52 PMV:2H5 PMV H41 PMV:1H4 PMV H42 PMV:2H4 PMV H3A1 PMV:1H3A PMV H3A2 PMV:2H3A PMV H3A3 PMV:3H3A PMV H21 PMV:1H2 PMV H22 PMV:2H2 PMV HA11 PMZ:1HA1 PMZ HA12 PMZ:2HA1 PMZ HB11 PMZ:1HB1 PMZ HB12 PMZ:2HB1 PMZ HE11 PMZ:1HE1 PMZ HE12 PMZ:2HE1 PMZ HE13 PMZ:3HE1 PMZ HE21 PMZ:1HE2 PMZ HE22 PMZ:2HE2 PMZ HE23 PMZ:3HE2 PMZ HB21 PMZ:1HB2 PMZ HB22 PMZ:2HB2 PMZ HB23 PMZ:3HB2 PMZ H1C1 PN1:1H1C PN1 H1C2 PN1:2H1C PN1 H1C3 PN1:3H1C PN1 H161 PN1:1H16 PN1 H162 PN1:2H16 PN1 H163 PN1:3H16 PN1 H2N1 PN1:1H2N PN1 H2N2 PN1:2H2N PN1 HN1 PN2:1HN PN2 HN2 PN2:2HN PN2 HCB1 PN2:1HCB PN2 HCB2 PN2:2HCB PN2 HOP6 PN2:6HOP PN2 H121 PN2:1H12 PN2 H122 PN2:2H12 PN2 H131 PN2:1H13 PN2 H132 PN2:2H13 PN2 H133 PN2:3H13 PN2 H141 PN2:1H14 PN2 H142 PN2:2H14 PN2 H143 PN2:3H14 PN2 H10 PN2:10H PN2 H10O PN2:10OH PN2 HN8 PN2:8HN PN2 H71 PN2:1H7 PN2 H72 PN2:2H7 PN2 H421 PN2:1H42 PN2 H422 PN2:2H42 PN2 HN4 PN2:4HN PN2 H31 PN2:1H3 PN2 H2 PN2:2H PN2 H471 PN2:1H47 PN2 H472 PN2:2H47 PN2 H61 PNA:1H6 PNA H62 PNA:2H6 PNA H71 PNB:1H7 PNB H72 PNB:2H7 PNB H81 PNB:1H8 PNB H82 PNB:2H8 PNB H91 PNB:1H9 PNB H92 PNB:2H9 PNB H101 PNB:1H10 PNB H102 PNB:2H10 PNB H121 PNB:1H12 PNB H122 PNB:2H12 PNB H71 PNC:1H7 PNC H72 PNC:2H7 PNC H81 PNC:1H8 PNC H82 PNC:2H8 PNC H91 PNC:1H9 PNC H92 PNC:2H9 PNC H101 PNC:1H10 PNC H102 PNC:2H10 PNC H121 PNC:1H12 PNC H122 PNC:2H12 PNC HN11 PND:1HN1 PND HN12 PND:2HN1 PND HC81 PNE:1HC8 PNE HC82 PNE:2HC8 PNE HC91 PNE:1HC9 PNE HC92 PNE:2HC9 PNE H101 PNE:1H10 PNE H102 PNE:2H10 PNE H1L1 PNE:1H1L PNE H1L2 PNE:2H1L PNE H1L3 PNE:3H1L PNE H21 PNF:1H2 PNF H31 PNF:1H3 PNF H51 PNF:1H5 PNF H61 PNF:1H6 PNF HO21 PNF:1HO2 PNF H81 PNF:1H8 PNF H82 PNF:2H8 PNF H91 PNF:1H9 PNF H92 PNF:2H9 PNF H101 PNF:1H10 PNF H102 PNF:2H10 PNF HN21 PNF:1HN2 PNF H121 PNF:1H12 PNF H122 PNF:2H12 PNF H131 PNF:1H13 PNF H132 PNF:2H13 PNF H141 PNF:1H14 PNF H142 PNF:2H14 PNF H151 PNF:1H15 PNF H152 PNF:2H15 PNF H161 PNF:1H16 PNF H162 PNF:2H16 PNF HO81 PNF:1HO8 PNF H61 PNG:1H6 PNG H62 PNG:2H6 PNG HMA1 PNI:1HMA PNI HMA2 PNI:2HMA PNI HMA3 PNI:3HMA PNI HMB1 PNI:1HMB PNI HMB2 PNI:2HMB PNI HMB3 PNI:3HMB PNI HMC1 PNI:1HMC PNI HMC2 PNI:2HMC PNI HMC3 PNI:3HMC PNI HMD1 PNI:1HMD PNI HMD2 PNI:2HMD PNI HMD3 PNI:3HMD PNI H21 PNL:1H2 PNL H22 PNL:2H2 PNL H31 PNL:1H3 PNL H32 PNL:2H3 PNL H33 PNL:3H3 PNL H101 PNM:1H10 PNM H102 PNM:2H10 PNM H103 PNM:3H10 PNM HC91 PNM:1HC9 PNM HC92 PNM:2HC9 PNM HC93 PNM:3HC9 PNM H171 PNM:1H17 PNM H172 PNM:2H17 PNM H101 PNN:1H10 PNN H102 PNN:2H10 PNN H103 PNN:3H10 PNN HC91 PNN:1HC9 PNN HC92 PNN:2HC9 PNN HC93 PNN:3HC9 PNN H171 PNN:1H17 PNN H172 PNN:2H17 PNN HN1 PNO:1HN PNO HN2 PNO:2HN PNO H1 PNO:1H PNO H2 PNO:2H PNO H3 PNO:3H PNO HM1 PNP:1HM PNP HM2 PNP:2HM PNP HM3 PNP:3HM PNP HOP3 PNP:3HOP PNP HOB2 PNQ:2HOB PNQ HOA2 PNQ:2HOA PNQ HNA1 PNQ:1HNA PNQ HA21 PNQ:1HA2 PNQ HA22 PNQ:2HA2 PNQ HA11 PNQ:1HA1 PNQ HA12 PNQ:2HA1 PNQ HOP1 PNS:1HOP PNS HOP2 PNS:2HOP PNS H282 PNS:2H28 PNS H281 PNS:1H28 PNS H303 PNS:3H30 PNS H302 PNS:2H30 PNS H301 PNS:1H30 PNS H313 PNS:3H31 PNS H312 PNS:2H31 PNS H311 PNS:1H31 PNS H372 PNS:2H37 PNS H371 PNS:1H37 PNS H382 PNS:2H38 PNS H381 PNS:1H38 PNS H422 PNS:2H42 PNS H421 PNS:1H42 PNS H431 PNS:1H43 PNS H432 PNS:2H43 PNS H71 PNT:1H7 PNT H72 PNT:2H7 PNT H81 PNT:1H8 PNT H82 PNT:2H8 PNT H101 PNT:1H10 PNT H102 PNT:2H10 PNT H7'1 PNT:1H7' PNT H7'2 PNT:2H7' PNT H8'1 PNT:1H8' PNT H8'2 PNT:2H8' PNT HN1 PNT:1HN PNT HN2 PNT:2HN PNT HN3 PNT:3HN PNT HN'1 PNT:1HN' PNT HN'2 PNT:2HN' PNT HN'3 PNT:3HN' PNT H11C PNU:CH11 PNU H13C PNU:CH13 PNU H15C PNU:CH15 PNU H16C PNU:CH16 PNU H181 PNU:1H18 PNU H182 PNU:2H18 PNU H211 PNU:1H21 PNU H212 PNU:2H21 PNU H213 PNU:3H21 PNU H21A PNV:1H2 PNV H22A PNV:2H2 PNV H121 PNV:1H12 PNV H122 PNV:2H12 PNV H123 PNV:3H12 PNV H151 PNV:1H15 PNV H152 PNV:2H15 PNV H153 PNV:3H15 PNV HAA1 PNX:1HAA PNX HAA2 PNX:2HAA PNX HAA3 PNX:3HAA PNX HAJ1 PNX:1HAJ PNX HAJ2 PNX:2HAJ PNX HAH1 PNX:1HAH PNX HAH2 PNX:2HAH PNX HAI1 PNX:1HAI PNX HAI2 PNX:2HAI PNX HAK1 PNX:1HAK PNX HAK2 PNX:2HAK PNX HAB1 PNX:1HAB PNX HAB2 PNX:2HAB PNX HAB3 PNX:3HAB PNX HAC1 PNX:1HAC PNX HAC2 PNX:2HAC PNX HAC3 PNX:3HAC PNX H2N1 PNZ:1H2N PNZ H2N2 PNZ:2H2N PNZ H3C1 PNZ:1H3C PNZ H3C2 PNZ:2H3C PNZ HC1 PO0:1HC PO0 HC2 PO0:2HC PO0 HB1 PO0:1HB PO0 HB2 PO0:2HB PO0 HN11 PO1:1HN1 PO1 HN12 PO1:2HN1 PO1 H71 PO1:1H7 PO1 H72 PO1:2H7 PO1 H73 PO1:3H7 PO1 H101 PO1:1H10 PO1 H102 PO1:2H10 PO1 H111 PO1:1H11 PO1 H112 PO1:2H11 PO1 H121 PO1:1H12 PO1 H122 PO1:2H12 PO1 H131 PO1:1H13 PO1 H132 PO1:2H13 PO1 H161 PO1:1H16 PO1 H162 PO1:2H16 PO1 H163 PO1:3H16 PO1 H181 PO1:1H18 PO1 H182 PO1:2H18 PO1 H191 PO1:1H19 PO1 H192 PO1:2H19 PO1 HN21 PO1:1HN2 PO1 HN22 PO1:2HN2 PO1 H11 POA:1H1 POA H12 POA:2H1 POA H31 POB:1H3 POB H32 POB:2H3 POB H41 POB:1H4 POB H42 POB:2H4 POB H43 POB:3H4 POB HOP5 POB:5HOP POB HOP6 POB:6HOP POB HN11 POB:1HN1 POB HN12 POB:2HN1 POB H2'1 POB:1H2' POB H2'2 POB:2H2' POB H2'3 POB:3H2' POB H41 POC:1H4 POC H42 POC:2H4 POC H51 POC:1H5 POC H52 POC:2H5 POC H61 POC:1H6 POC H62 POC:2H6 POC H63 POC:3H6 POC H71 POC:1H7 POC H72 POC:2H7 POC H73 POC:3H7 POC H81 POC:1H8 POC H82 POC:2H8 POC H83 POC:3H8 POC H121 POD:1H12 POD H122 POD:2H12 POD H11A POD:1H1 POD H12 POD:2H1 POD H201 POD:1H20 POD H202 POD:2H20 POD H203 POD:3H20 POD H211 POD:1H21 POD H212 POD:2H21 POD H213 POD:3H21 POD H221 POD:1H22 POD H222 POD:2H22 POD H223 POD:3H22 POD H11 POE:1H1 POE H12 POE:2H1 POE H13 POE:3H1 POE H21 POE:1H2 POE H22 POE:2H2 POE H31 POE:1H3 POE H32 POE:2H3 POE H41 POE:1H4 POE H42 POE:2H4 POE H51 POE:1H5 POE H52 POE:2H5 POE H61 POE:1H6 POE H62 POE:2H6 POE H71 POE:1H7 POE H72 POE:2H7 POE H81 POE:1H8 POE H82 POE:2H8 POE H101 POE:1H10 POE H102 POE:2H10 POE H111 POE:1H11 POE H112 POE:2H11 POE H11 POG:1H1 POG H12A POG:2H1 POG H13 POG:3H1 POG H31 POG:1H3 POG H32 POG:2H3 POG H41 POG:1H4 POG H42 POG:2H4 POG H71 POG:1H7 POG H72 POG:2H7 POG H91 POG:1H9 POG H92 POG:2H9 POG H111 POG:1H11 POG H112 POG:2H11 POG H131 POG:1H13 POG H132 POG:2H13 POG H151 POG:1H15 POG H152 POG:2H15 POG H161 POG:1H16 POG H162 POG:2H16 POG H163 POG:3H16 POG H171 POG:1H17 POG H172 POG:2H17 POG H173 POG:3H17 POG H181 POG:1H18 POG H182 POG:2H18 POG H183 POG:3H18 POG H191 POG:1H19 POG H192 POG:2H19 POG H193 POG:3H19 POG H201 POG:1H20 POG H202 POG:2H20 POG H203 POG:3H20 POG H211 POG:1H21 POG H212 POG:2H21 POG H213 POG:3H21 POG H51 POH:1H5 POH H112 POH:2H11 POH H11 POH:1H1 POH H31 POH:1H3 POH H41 POH:1H4 POH H192 POH:2H19 POH H811 POH:1H81 POH H821 POH:1H82 POH H831 POH:1H83 POH H21 POH:1H2 POH H61 POH:1H6 POH H71 POH:1H7 POH H73 POH:3H7 POH H52 POH:2H5 POH H211 POH:1H21 POH H12 POH:2H1 POH H272 POH:2H27 POH H32 POH:2H3 POH H281 POH:1H28 POH H42 POH:2H4 POH H291 POH:1H29 POH H812 POH:2H81 POH H822 POH:2H82 POH H832 POH:2H83 POH H22 POH:2H2 POH H62 POH:2H6 POH H53 POH:3H5 POH H311 POH:1H31 POH H13 POH:3H1 POH H373 POH:3H37 POH H33 POH:3H3 POH H381 POH:1H38 POH H43 POH:3H4 POH H391 POH:1H39 POH H813 POH:3H81 POH H823 POH:3H82 POH H833 POH:3H83 POH H23 POH:3H2 POH H63 POH:3H6 POH H54 POH:4H5 POH H411 POH:1H41 POH H14 POH:4H1 POH H474 POH:4H47 POH H34 POH:4H3 POH H481 POH:1H48 POH H44 POH:4H4 POH H491 POH:1H49 POH H814 POH:4H81 POH H824 POH:4H82 POH H834 POH:4H83 POH H24 POH:4H2 POH H64 POH:4H6 POH HM1 POI:1HM POI HM2 POI:2HM POI HM3 POI:3HM POI HB1 POI:1HB POI HB2 POI:2HB POI HG1 POI:1HG POI HG2 POI:2HG POI HD1 POI:1HD POI HD2 POI:2HD POI H4A1 POI:1H4A POI H4A2 POI:2H4A POI H2A1 POI:1H2A POI H2A2 POI:2H2A POI H2A3 POI:3H2A POI H5A1 POI:1H5A POI H5A2 POI:2H5A POI H11 POL:1H1 POL H12 POL:2H1 POL H21 POL:1H2 POL H22 POL:2H2 POL H31 POL:1H3 POL H32 POL:2H3 POL H33 POL:3H3 POL H POM: HN POM HB2 POM:1HB POM HB3 POM:2HB POM HD11 POM:1HD1 POM HD12 POM:2HD1 POM HD13 POM:3HD1 POM H281 POO:1H28 POO H282 POO:2H28 POO H291 POO:1H29 POO H292 POO:2H29 POO H301 POO:1H30 POO H302 POO:2H30 POO H311 POO:1H31 POO H312 POO:2H31 POO H313 POO:3H31 POO H271 POO:1H27 POO H272 POO:2H27 POO H251 POO:1H25 POO H252 POO:2H25 POO H241 POO:1H24 POO H242 POO:2H24 POO H243 POO:3H24 POO H221 POO:1H22 POO H222 POO:2H22 POO H171 POO:1H17 POO H172 POO:2H17 POO H201 POO:1H20 POO H202 POO:2H20 POO H211 POO:1H21 POO H212 POO:2H21 POO H191 POO:1H19 POO H192 POO:2H19 POO H181 POO:1H18 POO H182 POO:2H18 POO H61 POQ:1H6 POQ H62 POQ:2H6 POQ H151 POQ:1H15 POQ H152 POQ:2H15 POQ H161 POQ:1H16 POQ H162 POQ:2H16 POQ H163 POQ:3H16 POQ H6B1 POQ:1H6B POQ H6B2 POQ:2H6B POQ H251 POQ:1H25 POQ H252 POQ:2H25 POQ H261 POQ:1H26 POQ H262 POQ:2H26 POQ H263 POQ:3H26 POQ H181 POS:1H18 POS H182 POS:2H18 POS H211 POS:1H21 POS H212 POS:2H21 POS H261 POS:1H26 POS H262 POS:2H26 POS H281 POS:1H28 POS H282 POS:2H28 POS H283 POS:3H28 POS H291 POS:1H29 POS H292 POS:2H29 POS H293 POS:3H29 POS H41 POT:1H4 POT H42 POT:2H4 POT H43 POT:3H4 POT H31 POT:1H3 POT H32 POT:2H3 POT H51 POT:1H5 POT H52 POT:2H5 POT H11A POT:1H1 POT H12 POT:2H1 POT H13 POT:3H1 POT H101 PP1:1H10 PP1 H102 PP1:2H10 PP1 H241 PP1:1H24 PP1 H242 PP1:2H24 PP1 H243 PP1:3H24 PP1 H291 PP1:1H29 PP1 H292 PP1:2H29 PP1 H293 PP1:3H29 PP1 H331 PP1:1H33 PP1 H332 PP1:2H33 PP1 H333 PP1:3H33 PP1 H371 PP1:1H37 PP1 H372 PP1:2H37 PP1 H373 PP1:3H37 PP1 H2A1 PP3:1H2A PP3 H2A2 PP3:2H2A PP3 H2A3 PP3:3H2A PP3 H4A1 PP3:1H4A PP3 H4A2 PP3:2H4A PP3 H5A1 PP3:1H5A PP3 H5A2 PP3:2H5A PP3 HOP2 PP3:2HOP PP3 HOP3 PP3:3HOP PP3 HB1 PP3:1HB PP3 HB2 PP3:2HB PP3 HB3 PP3:3HB PP3 H131 PP4:1H13 PP4 H132 PP4:2H13 PP4 HV11 PP4:1HV1 PP4 HV12 PP4:2HV1 PP4 HV13 PP4:3HV1 PP4 HV21 PP4:1HV2 PP4 HV22 PP4:2HV2 PP4 HV23 PP4:3HV2 PP4 HB1 PP4:1HB PP4 HB2 PP4:2HB PP4 HS1 PP4:1HS PP4 HS2 PP4:2HS PP4 HS3 PP4:3HS PP4 H111 PP5:1H11 PP5 H112 PP5:2H11 PP5 H141 PP5:1H14 PP5 H142 PP5:2H14 PP5 HV11 PP5:1HV1 PP5 HV12 PP5:2HV1 PP5 HV13 PP5:3HV1 PP5 HV21 PP5:1HV2 PP5 HV22 PP5:2HV2 PP5 HV23 PP5:3HV2 PP5 HB1 PP5:1HB PP5 HB2 PP5:2HB PP5 HS1 PP5:1HS PP5 HS2 PP5:2HS PP5 HS3 PP5:3HS PP5 H111 PP6:1H11 PP6 H112 PP6:2H11 PP6 H131 PP6:1H13 PP6 H132 PP6:2H13 PP6 HV11 PP6:1HV1 PP6 HV12 PP6:2HV1 PP6 HV13 PP6:3HV1 PP6 HV21 PP6:1HV2 PP6 HV22 PP6:2HV2 PP6 HV23 PP6:3HV2 PP6 HB1 PP6:1HB PP6 HB2 PP6:2HB PP6 HS1 PP6:1HS PP6 HS2 PP6:2HS PP6 HS3 PP6:3HS PP6 HV11 PP7:1HV1 PP7 HV12 PP7:2HV1 PP7 HV31 PP7:1HV3 PP7 HV32 PP7:2HV3 PP7 HV33 PP7:3HV3 PP7 HV81 PP7:1HV8 PP7 HV82 PP7:2HV8 PP7 HV83 PP7:3HV8 PP7 HV41 PP7:1HV4 PP7 HV43 PP7:3HV4 PP7 HV42 PP7:2HV4 PP7 HV91 PP7:1HV9 PP7 HV92 PP7:2HV9 PP7 HV93 PP7:3HV9 PP7 HC21 PP7:1HC2 PP7 HC22 PP7:2HC2 PP7 HCB1 PP7:1HCB PP7 HCB2 PP7:2HCB PP7 HBL1 PP7:1HBL PP7 HBL2 PP7:2HBL PP7 HL11 PP7:1HL1 PP7 HL13 PP7:3HL1 PP7 HL12 PP7:2HL1 PP7 HL21 PP7:1HL2 PP7 HL23 PP7:3HL2 PP7 HL22 PP7:2HL2 PP7 HC61 PP7:1HC6 PP7 HC62 PP7:2HC6 PP7 HNV2 PP8:2HNV PP8 HV11 PP8:1HV1 PP8 HV12 PP8:2HV1 PP8 HV31 PP8:1HV3 PP8 HV32 PP8:2HV3 PP8 HV33 PP8:3HV3 PP8 HV81 PP8:1HV8 PP8 HV82 PP8:2HV8 PP8 HV83 PP8:3HV8 PP8 HV41 PP8:1HV4 PP8 HV42 PP8:2HV4 PP8 HV43 PP8:3HV4 PP8 HV91 PP8:1HV9 PP8 HV92 PP8:2HV9 PP8 HV93 PP8:3HV9 PP8 H21 PP8:1H2 PP8 H22 PP8:2H2 PP8 HN21 PP8:1HN2 PP8 HN22 PP8:2HN2 PP8 HBL1 PP8:1HBL PP8 HBL2 PP8:2HBL PP8 HL11 PP8:1HL1 PP8 HL12 PP8:2HL1 PP8 HL13 PP8:3HL1 PP8 HL21 PP8:1HL2 PP8 HL22 PP8:2HL2 PP8 HL23 PP8:3HL2 PP8 H61 PP8:1H6 PP8 H62 PP8:2H6 PP8 H71 PP8:1H7 PP8 H72 PP8:2H7 PP8 H73 PP8:3H7 PP8 HMA1 PP9:1HMA PP9 HMA2 PP9:2HMA PP9 HMA3 PP9:3HMA PP9 HAA1 PP9:1HAA PP9 HAA2 PP9:2HAA PP9 HBA1 PP9:1HBA PP9 HBA2 PP9:2HBA PP9 HMB1 PP9:1HMB PP9 HMB2 PP9:2HMB PP9 HMB3 PP9:3HMB PP9 HBB1 PP9:1HBB PP9 HBB2 PP9:2HBB PP9 HMC1 PP9:1HMC PP9 HMC2 PP9:2HMC PP9 HMC3 PP9:3HMC PP9 HBC1 PP9:1HBC PP9 HBC2 PP9:2HBC PP9 HMD1 PP9:1HMD PP9 HMD2 PP9:2HMD PP9 HMD3 PP9:3HMD PP9 HAD1 PP9:1HAD PP9 HAD2 PP9:2HAD PP9 HBD1 PP9:1HBD PP9 HBD2 PP9:2HBD PP9 HN1 PPA:1HN PPA HN2 PPA:2HN PPA H1 PPA:1H PPA H2 PPA:2H PPA H3 PPA:3H PPA H31 PPB:1H3 PPB H32 PPB:2H3 PPB H91 PPB:1H9 PPB H92 PPB:2H9 PPB H101 PPB:1H10 PPB H102 PPB:2H10 PPB H111 PPB:1H11 PPB H112 PPB:2H11 PPB H131 PPB:1H13 PPB H132 PPB:2H13 PPB HN61 PPB:1HN6 PPB HN62 PPB:2HN6 PPB H51 PPC:1H5 PPC H52 PPC:2H5 PPC HO1P PPC:PHO1 PPC HO2P PPC:PHO2 PPC HO1A PPC:AHO1 PPC HO1B PPC:BHO1 PPC HO3B PPC:BHO3 PPC H3A1 PPC:1H3A PPC H3A2 PPC:2H3A PPC H2A1 PPD:1H2A PPD H2A2 PPD:2H2A PPD H2A3 PPD:3H2A PPD H4A1 PPD:1H4A PPD H4A2 PPD:2H4A PPD H5A1 PPD:1H5A PPD H5A2 PPD:2H5A PPD HOP2 PPD:2HOP PPD HOP3 PPD:3HOP PPD HB1 PPD:1HB PPD HB2 PPD:2HB PPD H2A1 PPE:1H2A PPE H2A2 PPE:2H2A PPE H2A3 PPE:3H2A PPE H4A1 PPE:1H4A PPE H4A2 PPE:2H4A PPE H5A1 PPE:1H5A PPE H5A2 PPE:2H5A PPE HOP2 PPE:2HOP PPE HOP3 PPE:3HOP PPE HBA1 PPE:1HBA PPE HBA2 PPE:2HBA PPE HGA1 PPE:1HGA PPE HGA2 PPE:2HGA PPE HOE2 PPE:2HOE PPE H2A1 PPG:1H2A PPG H2A2 PPG:2H2A PPG H2A3 PPG:3H2A PPG H4A1 PPG:1H4A PPG H4A2 PPG:2H4A PPG H5A1 PPG:1H5A PPG H5A2 PPG:2H5A PPG HOP2 PPG:2HOP PPG HOP3 PPG:3HOP PPG HOB3 PPG:3HOB PPG HEI1 PPG:1HEI PPG HEI2 PPG:2HEI PPG HFI1 PPG:1HFI PPG HFI2 PPG:2HFI PPG HNI1 PPG:1HNI PPG HNI2 PPG:2HNI PPG HN1 PPH:1HN PPH HN2 PPH:2HN PPH HOP2 PPH:2HOP PPH HB1 PPH:1HB PPH HB2 PPH:2HB PPH H21 PPI:1H2 PPI H22 PPI:2H2 PPI H31 PPI:1H3 PPI H32 PPI:2H3 PPI H33 PPI:3H3 PPI H2A1 PPJ:1H2A PPJ H2A2 PPJ:2H2A PPJ H2A3 PPJ:3H2A PPJ H5A1 PPJ:1H5A PPJ H5A2 PPJ:2H5A PPJ HB1 PPJ:1HB PPJ HC1 PPJ:1HC PPJ HC2 PPJ:2HC PPJ HC3 PPJ:3HC PPJ H31 PPL:1H3 PPL H32 PPL:2H3 PPL H41 PPL:1H4 PPL H42 PPL:2H4 PPL H51 PPL:1H5 PPL H52 PPL:2H5 PPL H61 PPL:1H6 PPL H62 PPL:2H6 PPL H2'1 PPL:1H2' PPL H2'2 PPL:2H2' PPL H2'3 PPL:3H2' PPL H3'1 PPL:1H3' PPL H3'2 PPL:2H3' PPL H3'3 PPL:3H3' PPL H4'1 PPL:1H4' PPL H4'2 PPL:2H4' PPL H4'3 PPL:3H4' PPL HM1 PPM:1HM PPM HM2 PPM:2HM PPM HM3 PPM:3HM PPM HOP2 PPM:2HOP PPM HOP3 PPM:3HOP PPM H PPN:1HN PPN H2 PPN:2HN PPN HB2 PPN:1HB PPN HB3 PPN:2HB PPN HC91 PPO:1HC9 PPO HC92 PPO:2HC9 PPO H11 PPP:1H1 PPP H12 PPP:2H1 PPP H31 PPP:1H3 PPP H32 PPP:2H3 PPP HNP1 PPQ:1HNP PPQ HNP2 PPQ:2HNP PPQ HBP1 PPQ:1HBP PPQ HBP2 PPQ:2HBP PPQ HGP1 PPQ:1HGP PPQ HGP2 PPQ:2HGP PPQ HEP1 PPQ:1HEP PPQ HEP2 PPQ:2HEP PPQ HEP3 PPQ:3HEP PPQ H2'O PPR:OH2' PPR H31 PPR:1H3 PPR H32 PPR:2H3 PPR HO5P PPS:PHO5 PPS H5'1 PPS:1H5* PPS H5'2 PPS:2H5* PPS H4' PPS: H4* PPS H1' PPS: H1* PPS HN61 PPS:1HN6 PPS HN62 PPS:2HN6 PPS H2' PPS: H2* PPS HO2' PPS:*HO2 PPS H3' PPS: H3* PPS HO1P PPS:PHO1 PPS HO2P PPS:PHO2 PPS HA1 PPT:1HA PPT HA2 PPT:2HA PPT HB1 PPT:1HB PPT HB2 PPT:2HB PPT HH1 PPT:1HH PPT HH2 PPT:2HH PPT HH3 PPT:3HH PPT HOP2 PPU:2HOP PPU HOP3 PPU:3HOP PPU HN1 PPU:1HN PPU HN2 PPU:2HN PPU HB1 PPU:1HB PPU HB2 PPU:2HB PPU HM1 PPU:1HM PPU HM2 PPU:2HM PPU HM3 PPU:3HM PPU H5' PPU:1H5* PPU H5'' PPU:2H5* PPU H4' PPU: H4* PPU H3' PPU: H3* PPU HN'3 PPU:3HN* PPU H2' PPU: H2* PPU HO2' PPU:*HO2 PPU H1' PPU: H1* PPU H91 PPU:1H9 PPU H92 PPU:2H9 PPU H93 PPU:3H9 PPU H101 PPU:1H10 PPU H102 PPU:2H10 PPU H103 PPU:3H10 PPU HOP2 PPW:2HOP PPW HN21 PPW:1HN2 PPW HN22 PPW:2HN2 PPW H2' PPW:1H2* PPW H2'' PPW:2H2* PPW H5' PPW:1H5* PPW H5'' PPW:2H5* PPW H4' PPW: H4* PPW H1' PPW: H1* PPW H3' PPW: H3* PPW HO3' PPW:H3T PPW HOP3 PPW:3HOP PPW HN11 PPX:1HN1 PPX HN12 PPX:2HN1 PPX H31 PPX:1H3 PPX H32 PPX:2H3 PPX H131 PPX:1H13 PPX H132 PPX:2H13 PPX H151 PPX:1H15 PPX H152 PPX:2H15 PPX H161 PPX:1H16 PPX H162 PPX:2H16 PPX H201 PPX:1H20 PPX H202 PPX:2H20 PPX H301 PPX:1H30 PPX H302 PPX:2H30 PPX H31 PPY:1H3 PPY H32 PPY:2H3 PPY H61 PPZ:1H6 PPZ H62 PPZ:2H6 PPZ H71 PPZ:1H7 PPZ H72 PPZ:2H7 PPZ HN21 PQ0:1HN2 PQ0 HN22 PQ0:2HN2 PQ0 HOP3 PQ1:3HOP PQ1 HOP2 PQ1:2HOP PQ1 H5' PQ1:1H5* PQ1 H5'' PQ1:2H5* PQ1 H4' PQ1: H4* PQ1 H1' PQ1: H1* PQ1 HN21 PQ1:1HN2 PQ1 HN22 PQ1:2HN2 PQ1 H101 PQ1:1H10 PQ1 H102 PQ1:2H10 PQ1 H111 PQ1:1H11 PQ1 H112 PQ1:2H11 PQ1 H2' PQ1: H2* PQ1 H3' PQ1: H3* PQ1 H61 PQ9:1H6 PQ9 H62 PQ9:2H6 PQ9 H63 PQ9:3H6 PQ9 H91 PQ9:1H9 PQ9 H92 PQ9:2H9 PQ9 H93 PQ9:3H9 PQ9 H111 PQ9:1H11 PQ9 H112 PQ9:2H11 PQ9 H141 PQ9:1H14 PQ9 H142 PQ9:2H14 PQ9 H143 PQ9:3H14 PQ9 H151 PQ9:1H15 PQ9 H152 PQ9:2H15 PQ9 H161 PQ9:1H16 PQ9 H162 PQ9:2H16 PQ9 H191 PQ9:1H19 PQ9 H192 PQ9:2H19 PQ9 H193 PQ9:3H19 PQ9 H201 PQ9:1H20 PQ9 H202 PQ9:2H20 PQ9 H211 PQ9:1H21 PQ9 H212 PQ9:2H21 PQ9 H241 PQ9:1H24 PQ9 H242 PQ9:2H24 PQ9 H243 PQ9:3H24 PQ9 H251 PQ9:1H25 PQ9 H252 PQ9:2H25 PQ9 H261 PQ9:1H26 PQ9 H262 PQ9:2H26 PQ9 H291 PQ9:1H29 PQ9 H292 PQ9:2H29 PQ9 H293 PQ9:3H29 PQ9 H301 PQ9:1H30 PQ9 H302 PQ9:2H30 PQ9 H311 PQ9:1H31 PQ9 H312 PQ9:2H31 PQ9 H341 PQ9:1H34 PQ9 H342 PQ9:2H34 PQ9 H343 PQ9:3H34 PQ9 H351 PQ9:1H35 PQ9 H352 PQ9:2H35 PQ9 H361 PQ9:1H36 PQ9 H362 PQ9:2H36 PQ9 H391 PQ9:1H39 PQ9 H392 PQ9:2H39 PQ9 H393 PQ9:3H39 PQ9 H401 PQ9:1H40 PQ9 H402 PQ9:2H40 PQ9 H411 PQ9:1H41 PQ9 H412 PQ9:2H41 PQ9 H441 PQ9:1H44 PQ9 H442 PQ9:2H44 PQ9 H443 PQ9:3H44 PQ9 H451 PQ9:1H45 PQ9 H452 PQ9:2H45 PQ9 H453 PQ9:3H45 PQ9 HN11 PQA:1HN1 PQA HN12 PQA:2HN1 PQA H231 PQA:1H23 PQA H232 PQA:2H23 PQA H241 PQA:1H24 PQA H242 PQA:2H24 PQA H261 PQA:1H26 PQA H262 PQA:2H26 PQA H271 PQA:1H27 PQA H272 PQA:2H27 PQA HN11 PQB:1HN1 PQB HN12 PQB:2HN1 PQB H221 PQB:1H22 PQB H222 PQB:2H22 PQB H261 PQB:1H26 PQB H262 PQB:2H26 PQB H681 PQE:1H68 PQE H682 PQE:2H68 PQE H521 PQE:1H52 PQE H522 PQE:2H52 PQE H551 PQE:1H55 PQE H552 PQE:2H55 PQE H581 PQE:1H58 PQE H582 PQE:2H58 PQE H611 PQE:1H61 PQE H612 PQE:2H61 PQE H621 PQE:1H62 PQE H622 PQE:2H62 PQE H631 PQE:1H63 PQE H632 PQE:2H63 PQE H661 PQE:1H66 PQE H662 PQE:2H66 PQE H671 PQE:1H67 PQE H672 PQE:2H67 PQE H651 PQE:1H65 PQE H652 PQE:2H65 PQE H641 PQE:1H64 PQE H642 PQE:2H64 PQE H601 PQE:1H60 PQE H602 PQE:2H60 PQE H591 PQE:1H59 PQE H592 PQE:2H59 PQE H571 PQE:1H57 PQE H572 PQE:2H57 PQE H561 PQE:1H56 PQE H562 PQE:2H56 PQE H541 PQE:1H54 PQE H542 PQE:2H54 PQE H531 PQE:1H53 PQE H532 PQE:2H53 PQE H511 PQE:1H51 PQE H512 PQE:2H51 PQE H501 PQE:1H50 PQE H502 PQE:2H50 PQE H491 PQE:1H49 PQE H492 PQE:2H49 PQE H481 PQE:1H48 PQE H482 PQE:2H48 PQE H471 PQE:1H47 PQE H472 PQE:2H47 PQE H461 PQE:1H46 PQE H462 PQE:2H46 PQE H451 PQE:1H45 PQE H452 PQE:2H45 PQE H441 PQE:1H44 PQE H442 PQE:2H44 PQE H431 PQE:1H43 PQE H432 PQE:2H43 PQE H421 PQE:1H42 PQE H422 PQE:2H42 PQE H411 PQE:1H41 PQE H412 PQE:2H41 PQE H401 PQE:1H40 PQE H402 PQE:2H40 PQE H403 PQE:3H40 PQE H2M1 PQN:1H2M PQN H2M2 PQN:2H2M PQN H2M3 PQN:3H2M PQN H111 PQN:1H11 PQN H112 PQN:2H11 PQN H141 PQN:1H14 PQN H142 PQN:2H14 PQN H143 PQN:3H14 PQN H151 PQN:1H15 PQN H152 PQN:2H15 PQN H161 PQN:1H16 PQN H162 PQN:2H16 PQN H171 PQN:1H17 PQN H172 PQN:2H17 PQN H191 PQN:1H19 PQN H192 PQN:2H19 PQN H193 PQN:3H19 PQN H201 PQN:1H20 PQN H202 PQN:2H20 PQN H211 PQN:1H21 PQN H212 PQN:2H21 PQN H221 PQN:1H22 PQN H222 PQN:2H22 PQN H241 PQN:1H24 PQN H242 PQN:2H24 PQN H243 PQN:3H24 PQN H251 PQN:1H25 PQN H252 PQN:2H25 PQN H261 PQN:1H26 PQN H262 PQN:2H26 PQN H271 PQN:1H27 PQN H272 PQN:2H27 PQN H291 PQN:1H29 PQN H292 PQN:2H29 PQN H293 PQN:3H29 PQN H301 PQN:1H30 PQN H302 PQN:2H30 PQN H303 PQN:3H30 PQN HOB2 PQQ:2HOB PQQ HOB7 PQQ:7HOB PQQ HOB9 PQQ:9HOB PQQ H2 PR0: HN2 PR0 HB2 PR0:1HB PR0 HB3 PR0:2HB PR0 H11 PR1:1H1 PR1 H21 PR1:1H2 PR1 H51 PR1:1H5 PR1 H111 PR1:1H11 PR1 H121 PR1:1H12 PR1 H122 PR1:2H12 PR1 H131 PR1:1H13 PR1 H132 PR1:2H13 PR1 H441 PR1:1H44 PR1 H171 PR1:1H17 PR1 H181 PR1:1H18 PR1 H191 PR1:1H19 PR1 H251 PR1:1H25 PR1 H301 PR1:1H30 PR1 H311 PR1:1H31 PR1 H312 PR1:2H31 PR1 H321 PR1:1H32 PR1 H322 PR1:2H32 PR1 H371 PR1:1H37 PR1 H171 PR2:1H17 PR2 H181 PR2:1H18 PR2 H191 PR2:1H19 PR2 H251 PR2:1H25 PR2 H301 PR2:1H30 PR2 H311 PR2:1H31 PR2 H312 PR2:2H31 PR2 H321 PR2:1H32 PR2 H322 PR2:2H32 PR2 H371 PR2:1H37 PR2 H11 PR2:1H1 PR2 H12 PR2:2H1 PR2 H31 PR2:1H3 PR2 H41 PR2:1H4 PR2 H61 PR2:1H6 PR2 H271 PR2:1H27 PR2 H PR3:1HN PR3 H2 PR3:2HN PR3 HC PR3: H PR3 HB2 PR3:1HB PR3 HB3 PR3:2HB PR3 HE2 PR3:1HE PR3 HE3 PR3:2HE PR3 HZ2 PR3:1HZ PR3 HZ3 PR3:2HZ PR3 HH1 PR3:1HH PR3 HH2 PR3:2HH PR3 HH3 PR3:3HH PR3 HOP2 PR5:2HOP PR5 H5' PR5:1H5* PR5 H5'' PR5:2H5* PR5 H4' PR5: H4* PR5 H1' PR5: H1* PR5 H3' PR5: H3* PR5 HO3' PR5:H3T PR5 H2' PR5: H2* PR5 HO2' PR5:2HO* PR5 HOP3 PR5:3HOP PR5 H11 PRA:1H1 PRA H12 PRA:2H1 PRA H21 PRA:1H2 PRA H22 PRA:2H2 PRA H31 PRA:1H3 PRA H32 PRA:2H3 PRA HN1 PRA:1HN PRA HN2 PRA:2HN PRA HN3 PRA:3HN PRA H51 PRB:1H5 PRB H52 PRB:2H5 PRB HO12 PRB:2HO1 PRB H161 PRB:1H16 PRB H162 PRB:2H16 PRB H163 PRB:3H16 PRB H171 PRB:1H17 PRB H172 PRB:2H17 PRB H173 PRB:3H17 PRB H181 PRB:1H18 PRB H182 PRB:2H18 PRB H183 PRB:3H18 PRB H191 PRB:1H19 PRB H192 PRB:2H19 PRB H193 PRB:3H19 PRB H201 PRB:1H20 PRB H202 PRB:2H20 PRB HO20 PRB:0HO2 PRB HA21 PRB:1HA2 PRB HA22 PRB:2HA2 PRB HA23 PRB:3HA2 PRB H11C PRC:CH11 PRC H12C PRC:CH12 PRC H13N PRC:NH13 PRC H15C PRC:CH15 PRC H17C PRC:CH17 PRC H18C PRC:CH18 PRC H201 PRC:1H20 PRC H202 PRC:2H20 PRC H203 PRC:3H20 PRC H21N PRC:NH21 PRC H25C PRC:CH25 PRC H26C PRC:CH26 PRC H27C PRC:CH27 PRC H29C PRC:CH29 PRC H7' PRD: H7* PRD HC61 PRD:1HC6 PRD HC62 PRD:2HC6 PRD HC63 PRD:3HC6 PRD H5' PRD: H5* PRD HN41 PRD:1HN4 PRD HN42 PRD:2HN4 PRD HN21 PRD:1HN2 PRD HN22 PRD:2HN2 PRD HC71 PRD:1HC7 PRD HC72 PRD:2HC7 PRD HC21 PRD:1HC2 PRD HC22 PRD:2HC2 PRD HC23 PRD:3HC2 PRD HC51 PRD:1HC5 PRD HC52 PRD:2HC5 PRD HC53 PRD:3HC5 PRD HO72 PRE:2HO7 PRE H81 PRE:1H8 PRE H82 PRE:2H8 PRE HO2' PRE:'HO2 PRE H91 PRF:1H9 PRF H101 PRF:1H10 PRF H102 PRF:2H10 PRF H111 PRF:1H11 PRF H112 PRF:2H11 PRF H81 PRF:1H8 PRF HN91 PRF:1HN9 PRF HN21 PRF:1HN2 PRF HN22 PRF:2HN2 PRF HA1 PRG:1HA PRG HA2 PRG:2HA PRG H11 PRG:1H1 PRG H12 PRG:2H1 PRG H1' PRH: H1* PRH H2' PRH: H2* PRH HO2' PRH:*HO2 PRH H3' PRH: H3* PRH HO3' PRH:*HO3 PRH H4' PRH: H4* PRH H5'1 PRH:1H5* PRH H5'2 PRH:2H5* PRH HO5' PRH:*HO5 PRH HCB1 PRI:1HCB PRI HCB2 PRI:2HCB PRI HCG1 PRI:1HCG PRI HCG2 PRI:2HCG PRI HO'T PRI:THO' PRI HCD1 PRI:1HCD PRI HCD2 PRI:2HCD PRI HCA PRI: AHC PRI HNF1 PRL:1HNF PRL HNF2 PRL:2HNF PRL HNG1 PRL:1HNG PRL HNG2 PRL:2HNG PRL H361 PRM:1H36 PRM H362 PRM:2H36 PRM H371 PRM:1H37 PRM H372 PRM:2H37 PRM H411 PRM:1H41 PRM H412 PRM:2H41 PRM H421 PRM:1H42 PRM H422 PRM:2H42 PRM H431 PRM:1H43 PRM H432 PRM:2H43 PRM H441 PRM:1H44 PRM H442 PRM:2H44 PRM H451 PRM:1H45 PRM H452 PRM:2H45 PRM H453 PRM:3H45 PRM H461 PRM:1H46 PRM H462 PRM:2H46 PRM H463 PRM:3H46 PRM H471 PRM:1H47 PRM H472 PRM:2H47 PRM H481 PRM:1H48 PRM H482 PRM:2H48 PRM H483 PRM:3H48 PRM H1' PRN: H1* PRN H2' PRN:1H2* PRN H2'' PRN:2H2* PRN H3' PRN: H3* PRN HO3' PRN:HO3* PRN H4' PRN: H4* PRN H5' PRN:1H5* PRN H5'' PRN:2H5* PRN HOP2 PRN:2HOP PRN HOP3 PRN:3HOP PRN H PRO: HT1 PRO HB2 PRO:1HB PRO HB3 PRO:2HB PRO HG2 PRO:1HG PRO HG3 PRO:2HG PRO HD2 PRO:1HD PRO HD3 PRO:2HD PRO H51 PRP:1H5 PRP H52 PRP:2H5 PRP HOP2 PRP:2HOP PRP HOP3 PRP:3HOP PRP HOA2 PRP:2HOA PRP HOB2 PRP:2HOB PRP HOB3 PRP:3HOB PRP H2 PRR: HN2 PRR HC2 PRR: H2 PRR H51 PRR:1H5 PRR H52 PRR:2H5 PRR H101 PRR:1H10 PRR H102 PRR:2H10 PRR H103 PRR:3H10 PRR H PRS: HN PRS HD3 PRS:1HD PRS HD2 PRS:2HD PRS HB2 PRS:1HB PRS HB3 PRS:2HB PRS H5'1 PRT:1H5* PRT H5'2 PRT:2H5* PRT H4' PRT: H4* PRT H3' PRT: H3* PRT H2' PRT: H2* PRT H1' PRT: H1* PRT H151 PRT:1H15 PRT H152 PRT:2H15 PRT H2' PRX: H2* PRX H1' PRX: H1* PRX H4' PRX: H4* PRX H5'1 PRX:1H5* PRX H5'2 PRX:2H5* PRX H1P1 PRX:1H1P PRX H1P2 PRX:2H1P PRX H2P1 PRX:1H2P PRX H2P2 PRX:2H2P PRX H3P1 PRX:1H3P PRX H3P2 PRX:2H3P PRX H3P3 PRX:3H3P PRX H3' PRX: H3* PRX HN61 PRX:1HN6 PRX HN62 PRX:2HN6 PRX HC41 PRY:1HC4 PRY HC42 PRY:2HC4 PRY HN61 PRY:1HN6 PRY HN62 PRY:2HN6 PRY HC91 PRY:1HC9 PRY HC92 PRY:2HC9 PRY H101 PRY:1H10 PRY H102 PRY:2H10 PRY H103 PRY:3H10 PRY H212 PRZ:2H21 PRZ H211 PRZ:1H21 PRZ H233 PRZ:3H23 PRZ H232 PRZ:2H23 PRZ H231 PRZ:1H23 PRZ H243 PRZ:3H24 PRZ H242 PRZ:2H24 PRZ H241 PRZ:1H24 PRZ H313 PRZ:3H31 PRZ H312 PRZ:2H31 PRZ H311 PRZ:1H31 PRZ HB1 PS0:1HB PS0 HB2 PS0:2HB PS0 H481 PS2:1H48 PS2 H482 PS2:2H48 PS2 H483 PS2:3H48 PS2 H471 PS2:1H47 PS2 H472 PS2:2H47 PS2 H461 PS2:1H46 PS2 H462 PS2:2H46 PS2 H451 PS2:1H45 PS2 H452 PS2:2H45 PS2 H441 PS2:1H44 PS2 H442 PS2:2H44 PS2 H431 PS2:1H43 PS2 H432 PS2:2H43 PS2 H421 PS2:1H42 PS2 H422 PS2:2H42 PS2 H411 PS2:1H41 PS2 H412 PS2:2H41 PS2 H381 PS2:1H38 PS2 H382 PS2:2H38 PS2 H371 PS2:1H37 PS2 H372 PS2:2H37 PS2 H361 PS2:1H36 PS2 H362 PS2:2H36 PS2 H351 PS2:1H35 PS2 H352 PS2:2H35 PS2 H341 PS2:1H34 PS2 H342 PS2:2H34 PS2 H331 PS2:1H33 PS2 H332 PS2:2H33 PS2 H321 PS2:1H32 PS2 H322 PS2:2H32 PS2 H11 PS2:1H1 PS2 H12 PS2:2H1 PS2 H41 PS2:1H4 PS2 H42 PS2:2H4 PS2 HN51 PS2:1HN5 PS2 HN52 PS2:2HN5 PS2 H31 PS2:1H3 PS2 H32 PS2:2H3 PS2 H121 PS2:1H12 PS2 H122 PS2:2H12 PS2 H131 PS2:1H13 PS2 H132 PS2:2H13 PS2 H141 PS2:1H14 PS2 H142 PS2:2H14 PS2 H151 PS2:1H15 PS2 H152 PS2:2H15 PS2 H161 PS2:1H16 PS2 H162 PS2:2H16 PS2 H171 PS2:1H17 PS2 H172 PS2:2H17 PS2 H181 PS2:1H18 PS2 H182 PS2:2H18 PS2 H191 PS2:1H19 PS2 H192 PS2:2H19 PS2 H201 PS2:1H20 PS2 H202 PS2:2H20 PS2 H211 PS2:1H21 PS2 H212 PS2:2H21 PS2 H221 PS2:1H22 PS2 H222 PS2:2H22 PS2 H231 PS2:1H23 PS2 H232 PS2:2H23 PS2 H241 PS2:1H24 PS2 H242 PS2:2H24 PS2 H251 PS2:1H25 PS2 H252 PS2:2H25 PS2 H261 PS2:1H26 PS2 H262 PS2:2H26 PS2 H263 PS2:3H26 PS2 HB11 PS3:1HB1 PS3 HB12 PS3:2HB1 PS3 HN1 PS3:1HN PS3 HN2 PS3:2HN PS3 HB1 PS3:1HB PS3 HB2 PS3:2HB PS3 H PSA:1HN PSA H2 PSA:2HN PSA HB2 PSA:1HB PSA HB3 PSA:2HB PSA HM1 PSA:1HM PSA HM2 PSA:2HM PSA HN11 PSB:1HN1 PSB HN12 PSB:2HN1 PSB H211 PSB:1H21 PSB H212 PSB:2H21 PSB H351 PSB:1H35 PSB H352 PSB:2H35 PSB H011 PSC:1H01 PSC H012 PSC:2H01 PSC H031 PSC:1H03 PSC H032 PSC:2H03 PSC H041 PSC:1H04 PSC H042 PSC:2H04 PSC H051 PSC:1H05 PSC H052 PSC:2H05 PSC H061 PSC:1H06 PSC H062 PSC:2H06 PSC H063 PSC:3H06 PSC H071 PSC:1H07 PSC H072 PSC:2H07 PSC H073 PSC:3H07 PSC H081 PSC:1H08 PSC H082 PSC:2H08 PSC H083 PSC:3H08 PSC H21 PSC:1H2 PSC H22 PSC:2H2 PSC H31 PSC:1H3 PSC H32 PSC:2H3 PSC H41 PSC:1H4 PSC H42 PSC:2H4 PSC H51 PSC:1H5 PSC H52 PSC:2H5 PSC H61 PSC:1H6 PSC H62 PSC:2H6 PSC H71 PSC:1H7 PSC H72 PSC:2H7 PSC H81 PSC:1H8 PSC H82 PSC:2H8 PSC H111 PSC:1H11 PSC H112 PSC:2H11 PSC H141 PSC:1H14 PSC H142 PSC:2H14 PSC H151 PSC:1H15 PSC H152 PSC:2H15 PSC H161 PSC:1H16 PSC H162 PSC:2H16 PSC H171 PSC:1H17 PSC H172 PSC:2H17 PSC H181 PSC:1H18 PSC H182 PSC:2H18 PSC H183 PSC:3H18 PSC H201 PSC:1H20 PSC H202 PSC:2H20 PSC H211 PSC:1H21 PSC H212 PSC:2H21 PSC H221 PSC:1H22 PSC H222 PSC:2H22 PSC H231 PSC:1H23 PSC H232 PSC:2H23 PSC H241 PSC:1H24 PSC H242 PSC:2H24 PSC H251 PSC:1H25 PSC H252 PSC:2H25 PSC H261 PSC:1H26 PSC H262 PSC:2H26 PSC H271 PSC:1H27 PSC H272 PSC:2H27 PSC H281 PSC:1H28 PSC H282 PSC:2H28 PSC H291 PSC:1H29 PSC H292 PSC:2H29 PSC H301 PSC:1H30 PSC H302 PSC:2H30 PSC H311 PSC:1H31 PSC H312 PSC:2H31 PSC H321 PSC:1H32 PSC H322 PSC:2H32 PSC H331 PSC:1H33 PSC H332 PSC:2H33 PSC H341 PSC:1H34 PSC H342 PSC:2H34 PSC H343 PSC:3H34 PSC HCB1 PSD:1HCB PSD HCB2 PSD:2HCB PSD HCG1 PSD:1HCG PSD HCG2 PSD:2HCG PSD HCD1 PSD:1HCD PSD HCD2 PSD:2HCD PSD HCA PSD: AHC PSD HN01 PSD:1HN0 PSD HOP2 PSD:2HOP PSD H5'1 PSD:1H5' PSD H5'2 PSD:2H5' PSD HC'4 PSD:4HC' PSD HC'1 PSD:1HC' PSD HC2 PSD:2HC PSD HN61 PSD:1HN6 PSD HN62 PSD:2HN6 PSD HC8 PSD:8HC PSD HC'2 PSD:2HC' PSD HO'2 PSD:2HO' PSD HC'3 PSD:3HC' PSD HO'3 PSD:3HO' PSD HN21 PSE:1HN2 PSE HN22 PSE:2HN2 PSE H11 PSE:1H1 PSE H12 PSE:2H1 PSE H31 PSE:1H3 PSE H32 PSE:2H3 PSE H21 PSF:1H2 PSF H22 PSF:2H2 PSF H31 PSF:1H3 PSF H41 PSF:1H4 PSF H42 PSF:2H4 PSF H61 PSF:1H6 PSF H62 PSF:2H6 PSF H71 PSF:1H7 PSF H72 PSF:2H7 PSF H131 PSF:1H13 PSF H132 PSF:2H13 PSF H141 PSF:1H14 PSF H142 PSF:2H14 PSF H151 PSF:1H15 PSF H152 PSF:2H15 PSF H1 PSF:1H PSF H2 PSF:2H PSF HB1 PSF:1HB PSF HB2 PSF:2HB PSF H81 PSF:1H8 PSF H82 PSF:2H8 PSF H91 PSF:1H9 PSF H92 PSF:2H9 PSF H101 PSF:1H10 PSF H102 PSF:2H10 PSF H103 PSF:3H10 PSF H161 PSF:1H16 PSF H162 PSF:2H16 PSF H171 PSF:1H17 PSF H172 PSF:2H17 PSF H173 PSF:3H17 PSF H62 PSG:2H6 PSG H61 PSG:1H6 PSG H2O1 PSG:1H2O PSG H3O1 PSG:1H3O PSG H4O1 PSG:1H4O PSG H6O1 PSG:1H6O PSG HB11 PSI:1HB1 PSI HB12 PSI:2HB1 PSI HB13 PSI:3HB1 PSI HN41 PSI:1HN4 PSI HN42 PSI:2HN4 PSI HB31 PSI:1HB3 PSI HB32 PSI:2HB3 PSI HB33 PSI:3HB3 PSI HB21 PSI:1HB2 PSI HB22 PSI:2HB2 PSI H441 PSI:1H44 PSI H442 PSI:2H44 PSI HA41 PSI:1HA4 PSI HA42 PSI:2HA4 PSI HG61 PSI:1HG6 PSI HG62 PSI:2HG6 PSI HG63 PSI:3HG6 PSI HG51 PSI:1HG5 PSI HG52 PSI:2HG5 PSI HG53 PSI:3HG5 PSI HG81 PSI:1HG8 PSI HG82 PSI:2HG8 PSI HG83 PSI:3HG8 PSI HG71 PSI:1HG7 PSI HG72 PSI:2HG7 PSI HG73 PSI:3HG7 PSI H761 PSI:1H76 PSI H762 PSI:2H76 PSI H763 PSI:3H76 PSI HAA1 PSK:1HAA PSK HAA2 PSK:2HAA PSK HAA3 PSK:3HAA PSK HAJ1 PSK:1HAJ PSK HAJ2 PSK:2HAJ PSK HAB1 PSK:1HAB PSK HAB2 PSK:2HAB PSK HAB3 PSK:3HAB PSK HAL1 PSK:1HAL PSK HAL2 PSK:2HAL PSK H191 PSM:1H19 PSM H192 PSM:2H19 PSM H201 PSM:1H20 PSM H202 PSM:2H20 PSM H321 PSM:1H32 PSM H322 PSM:2H32 PSM H31A PSM:1H3 PSM H32 PSM:2H3 PSM H33 PSM:3H3 PSM H91 PSM:1H9 PSM H92 PSM:2H9 PSM H81 PSM:1H8 PSM H82 PSM:2H8 PSM HN21 PSM:1HN2 PSM HN22 PSM:2HN2 PSM H61 PSM:1H6 PSM H62 PSM:2H6 PSM H63 PSM:3H6 PSM H71 PSM:1H7 PSM H72 PSM:2H7 PSM H73 PSM:3H7 PSM H121 PSN:1H12 PSN H122 PSN:2H12 PSN H121 PSO:1H12 PSO H122 PSO:2H12 PSO H123 PSO:3H12 PSO H131 PSO:1H13 PSO H132 PSO:2H13 PSO H151 PSO:1H15 PSO H152 PSO:2H15 PSO H153 PSO:3H15 PSO H161 PSO:1H16 PSO H162 PSO:2H16 PSO H163 PSO:3H16 PSO H10A PSP:AH10 PSP HO1 PSQ:1HO PSQ HN1 PSQ:1HN PSQ HN2 PSQ:2HN PSQ HN11 PSQ:1HN1 PSQ H11 PSQ:1H1 PSQ H21 PSQ:1H2 PSQ H22 PSQ:2H2 PSQ H31 PSQ:1H3 PSQ H32 PSQ:2H3 PSQ H41 PSQ:1H4 PSQ H42 PSQ:2H4 PSQ HN21 PSQ:1HN2 PSQ HN31 PSQ:1HN3 PSQ HN32 PSQ:2HN3 PSQ H231 PSR:1H23 PSR H261 PSR:1H26 PSR H281 PSR:1H28 PSR H282 PSR:2H28 PSR H301 PSR:1H30 PSR H302 PSR:2H30 PSR H303 PSR:3H30 PSR H311 PSR:1H31 PSR H312 PSR:2H31 PSR H313 PSR:3H31 PSR H321 PSR:1H32 PSR H331 PSR:1H33 PSR H361 PSR:1H36 PSR H371 PSR:1H37 PSR H372 PSR:2H37 PSR H381 PSR:1H38 PSR H382 PSR:2H38 PSR H411 PSR:1H41 PSR H421 PSR:1H42 PSR H422 PSR:2H42 PSR H431 PSR:1H43 PSR H432 PSR:2H43 PSR HC21 PSR:1HC2 PSR HC22 PSR:2HC2 PSR HC31 PSR:1HC3 PSR HC32 PSR:2HC3 PSR HC41 PSR:1HC4 PSR HC42 PSR:2HC4 PSR HC43 PSR:3HC4 PSR H11 PSS:1H1 PSS H12 PSS:2H1 PSS H21 PSS:1H2 PSS H22 PSS:2H2 PSS H23 PSS:3H2 PSS H'1 PSS:1H' PSS H'2 PSS:2H' PSS HOP1 PST:1HOP PST HOP2 PST:2HOP PST H5' PST:1H5* PST H5'' PST:2H5* PST H4' PST: H4* PST H3' PST: H3* PST H2' PST:1H2* PST H2'' PST:2H2* PST H1' PST: H1* PST H71 PST:1H5M PST H72 PST:2H5M PST H73 PST:3H5M PST H1' PSU: H1* PSU H2' PSU: H2* PSU HO2' PSU:*HO2 PSU H3' PSU: H3* PSU H4' PSU: H4* PSU HO3' PSU:*HO3 PSU H5' PSU:1H5* PSU H5'' PSU:2H5* PSU HOP2 PSU:2HOP PSU HOP3 PSU:3HOP PSU HAA1 PSX:1HAA PSX HAA2 PSX:2HAA PSX HAA3 PSX:3HAA PSX H61 PSX:1H6 PSX H62 PSX:2H6 PSX HAB1 PSX:1HAB PSX HAB2 PSX:2HAB PSX HAB3 PSX:3HAB PSX H21 PSX:1H2 PSX H22 PSX:2H2 PSX H4A1 PSZ:1H4A PSZ H4A2 PSZ:2H4A PSZ H2A1 PSZ:1H2A PSZ H2A2 PSZ:2H2A PSZ H2A3 PSZ:3H2A PSZ H5A1 PSZ:1H5A PSZ H5A2 PSZ:2H5A PSZ H111 PT1:1H11 PT1 H112 PT1:2H11 PT1 H131 PT1:1H13 PT1 H132 PT1:2H13 PT1 H161 PT2:1H16 PT2 H162 PT2:2H16 PT2 H171 PT2:1H17 PT2 H172 PT2:2H17 PT2 H21 PT3:1H2 PT3 H31 PT3:1H3 PT3 H41N PT3:1NH4 PT3 H411 PT3:1H41 PT3 H412 PT3:2H41 PT3 H421 PT3:1H42 PT3 H422 PT3:2H42 PT3 H431 PT3:1H43 PT3 H432 PT3:2H43 PT3 H433 PT3:3H43 PT3 H PTA:1HN PTA H2 PTA:2HN PTA HB2 PTA:1HB PTA HB3 PTA:2HB PTA HD11 PTA:1HD1 PTA HD12 PTA:2HD1 PTA HD13 PTA:3HD1 PTA HD21 PTA:1HD2 PTA HD22 PTA:2HD2 PTA HD23 PTA:3HD2 PTA HOP2 PTA:2HOP PTA HM1 PTA:1HM PTA HM2 PTA:2HM PTA HB1 PTB:1HB PTB HB2 PTB:2HB PTB HG1 PTB:1HG PTB HG2 PTB:2HG PTB HD1 PTB:1HD PTB HD2 PTB:2HD PTB H71 PTB:1H7 PTB H72 PTB:2H7 PTB H73 PTB:3H7 PTB H81 PTB:1H8 PTB H82 PTB:2H8 PTB H83 PTB:3H8 PTB H91 PTB:1H9 PTB H92 PTB:2H9 PTB H93 PTB:3H9 PTB H21 PTC:1H2 PTC H22 PTC:2H2 PTC H23 PTC:3H2 PTC HC21 PTD:1HC2 PTD HC22 PTD:2HC2 PTD HC31 PTD:1HC3 PTD HC32 PTD:2HC3 PTD HC41 PTD:1HC4 PTD HC42 PTD:2HC4 PTD H11 PTE:1H1 PTE H12 PTE:2H1 PTE H101 PTE:1H10 PTE H102 PTE:2H10 PTE H211 PTE:1H21 PTE H212 PTE:2H21 PTE H301 PTE:1H30 PTE H302 PTE:2H30 PTE HOP2 PTE:2HOP PTE HOP6 PTE:6HOP PTE HO11 PTE:1HO1 PTE HO12 PTE:2HO1 PTE HO21 PTE:1HO2 PTE HO22 PTE:2HO2 PTE H11 PTF:1H1 PTF H12 PTF:2H1 PTF H13 PTF:3H1 PTF H31 PTF:1H3 PTF H32 PTF:2H3 PTF H PTH:1HN PTH H2 PTH:2HN PTH HB2 PTH:1HB PTH HB3 PTH:2HB PTH HF1 PTH:1HF PTH HF2 PTH:2HF PTH HO2P PTH:PHO2 PTH HO3P PTH:PHO3 PTH H3C1 PTI:1H3C PTI H3C2 PTI:2H3C PTI H6C1 PTI:1H6C PTI H6C2 PTI:2H6C PTI H9C1 PTI:1H9C PTI H9C2 PTI:2H9C PTI H121 PTI:1H12 PTI H122 PTI:2H12 PTI H151 PTI:1H15 PTI H152 PTI:2H15 PTI H181 PTI:1H18 PTI H182 PTI:2H18 PTI H211 PTI:1H21 PTI H212 PTI:2H21 PTI H381 PTI:1H38 PTI H382 PTI:2H38 PTI H411 PTI:1H41 PTI H412 PTI:2H41 PTI H21 PTL:1H2 PTL H22 PTL:2H2 PTL H31 PTL:1H3 PTL H32 PTL:2H3 PTL H41 PTL:1H4 PTL H42 PTL:2H4 PTL H51 PTL:1H5 PTL H52 PTL:2H5 PTL H53 PTL:3H5 PTL H2 PTM: HN2 PTM HC31 PTM:1HC3 PTM HC32 PTM:2HC3 PTM HC33 PTM:3HC3 PTM HB2 PTM:1HB PTM HB3 PTM:2HB PTM H11 PTN:1H1 PTN H12 PTN:2H1 PTN H13 PTN:3H1 PTN H21 PTN:1H2 PTN H22 PTN:2H2 PTN H23 PTN:3H2 PTN H31 PTN:1H3 PTN H32 PTN:2H3 PTN H33 PTN:3H3 PTN H21 PTO:1H2 PTO H22 PTO:2H2 PTO H41 PTO:1H4 PTO H42 PTO:2H4 PTO H61 PTO:1H6 PTO H62 PTO:2H6 PTO H71 PTO:1H7 PTO H72 PTO:2H7 PTO H91 PTO:1H9 PTO H92 PTO:2H9 PTO H93 PTO:3H9 PTO H5M1 PTP:1H5M PTP H5M2 PTP:2H5M PTP H5M3 PTP:3H5M PTP H1' PTP: H1* PTP H2'1 PTP:1H2* PTP H2'2 PTP:2H2* PTP H3' PTP: H3* PTP H4' PTP: H4* PTP H5'1 PTP:1H5* PTP H5'2 PTP:2H5* PTP H PTR:1HN PTR HN2 PTR:2HN PTR HB2 PTR:1HB PTR HB3 PTR:2HB PTR HO2P PTR:PHO2 PTR HO3P PTR:PHO3 PTR HN31 PTS:1HN3 PTS HN32 PTS:2HN3 PTS HN41 PTS:1HN4 PTS HN42 PTS:2HN4 PTS H151 PTS:1H15 PTS H152 PTS:2H15 PTS H153 PTS:3H15 PTS H101 PTT:1H10 PTT H102 PTT:2H10 PTT H301 PTT:1H30 PTT H302 PTT:2H30 PTT HA11 PTT:1HA1 PTT HA12 PTT:2HA1 PTT HA13 PTT:3HA1 PTT HOP3 PTT:3HOP PTT HOP7 PTT:7HOP PTT HN11 PTU:1HN1 PTU HN12 PTU:2HN1 PTU H21 PTU:1H2 PTU H31 PTU:1H3 PTU H41 PTU:1H4 PTU H51 PTU:1H5 PTU H61 PTU:1H6 PTU H1'1 PTU:1H1' PTU H1'2 PTU:2H1' PTU H2'1 PTU:1H2' PTU H2'2 PTU:2H2' PTU H2'3 PTU:3H2' PTU H71 PTX:1H7 PTX H72 PTX:2H7 PTX H181 PTX:1H18 PTX H182 PTX:2H18 PTX H183 PTX:3H18 PTX H11 PTX:1H1 PTX H12 PTX:2H1 PTX HC11 PTY:1HC1 PTY HC12 PTY:2HC1 PTY HC21 PTY:1HC2 PTY HC22 PTY:2HC2 PTY HC31 PTY:1HC3 PTY HC32 PTY:2HC3 PTY HC51 PTY:1HC5 PTY HC52 PTY:2HC5 PTY H111 PTY:1H11 PTY H112 PTY:2H11 PTY H121 PTY:1H12 PTY H122 PTY:2H12 PTY H131 PTY:1H13 PTY H132 PTY:2H13 PTY H141 PTY:1H14 PTY H142 PTY:2H14 PTY H151 PTY:1H15 PTY H152 PTY:2H15 PTY H161 PTY:1H16 PTY H162 PTY:2H16 PTY H171 PTY:1H17 PTY H172 PTY:2H17 PTY H181 PTY:1H18 PTY H182 PTY:2H18 PTY H191 PTY:1H19 PTY H192 PTY:2H19 PTY H201 PTY:1H20 PTY H202 PTY:2H20 PTY H211 PTY:1H21 PTY H212 PTY:2H21 PTY H221 PTY:1H22 PTY H222 PTY:2H22 PTY H231 PTY:1H23 PTY H232 PTY:2H23 PTY H241 PTY:1H24 PTY H242 PTY:2H24 PTY H251 PTY:1H25 PTY H252 PTY:2H25 PTY H261 PTY:1H26 PTY H262 PTY:2H26 PTY H271 PTY:1H27 PTY H272 PTY:2H27 PTY H281 PTY:1H28 PTY H282 PTY:2H28 PTY H291 PTY:1H29 PTY H292 PTY:2H29 PTY H293 PTY:3H29 PTY H311 PTY:1H31 PTY H312 PTY:2H31 PTY H321 PTY:1H32 PTY H322 PTY:2H32 PTY H331 PTY:1H33 PTY H332 PTY:2H33 PTY H341 PTY:1H34 PTY H342 PTY:2H34 PTY H351 PTY:1H35 PTY H352 PTY:2H35 PTY H361 PTY:1H36 PTY H362 PTY:2H36 PTY H371 PTY:1H37 PTY H372 PTY:2H37 PTY H381 PTY:1H38 PTY H382 PTY:2H38 PTY H391 PTY:1H39 PTY H392 PTY:2H39 PTY H401 PTY:1H40 PTY H402 PTY:2H40 PTY H411 PTY:1H41 PTY H412 PTY:2H41 PTY H421 PTY:1H42 PTY H422 PTY:2H42 PTY H431 PTY:1H43 PTY H432 PTY:2H43 PTY H441 PTY:1H44 PTY H442 PTY:2H44 PTY H443 PTY:3H44 PTY H12O PTY:OH12 PTY HN11 PTY:1HN1 PTY HN12 PTY:2HN1 PTY HOP2 PU:2HOP PU HOP3 PU:3HOP PU HN1 PU:1HN PU HB1 PU:1HB PU HB2 PU:2HB PU HM1 PU:1HM PU HM2 PU:2HM PU HM3 PU:3HM PU HO5' PU:H5T PU H5' PU:1H5* PU H5'' PU:2H5* PU H4' PU: H4* PU H3' PU: H3* PU HN'3 PU:3HN* PU H2' PU: H2* PU HO2' PU:*HO2 PU H1' PU: H1* PU H91 PU:1H9 PU H92 PU:2H9 PU H93 PU:3H9 PU H101 PU:1H10 PU H102 PU:2H10 PU H103 PU:3H10 PU H191 PU0:1H19 PU0 H192 PU0:2H19 PU0 H193 PU0:3H19 PU0 H8C1 PU0:1H8C PU0 H8C2 PU0:2H8C PU0 H8C3 PU0:3H8C PU0 H9C1 PU0:1H9C PU0 H9C2 PU0:2H9C PU0 H5N1 PU0:1H5N PU0 H5N2 PU0:2H5N PU0 H151 PU0:1H15 PU0 H152 PU0:2H15 PU0 H161 PU0:1H16 PU0 H162 PU0:2H16 PU0 H171 PU0:1H17 PU0 H172 PU0:2H17 PU0 H181 PU0:1H18 PU0 H182 PU0:2H18 PU0 H183 PU0:3H18 PU0 H201 PU1:1H20 PU1 H202 PU1:2H20 PU1 H203 PU1:3H20 PU1 H191 PU1:1H19 PU1 H192 PU1:2H19 PU1 H193 PU1:3H19 PU1 H181 PU1:1H18 PU1 H182 PU1:2H18 PU1 H183 PU1:3H18 PU1 H6C1 PU1:1H6C PU1 H6C2 PU1:2H6C PU1 H5N1 PU1:1H5N PU1 H5N2 PU1:2H5N PU1 H7C1 PU1:1H7C PU1 H7C2 PU1:2H7C PU1 H8C1 PU1:1H8C PU1 H8C2 PU1:2H8C PU1 H9C1 PU1:1H9C PU1 H9C2 PU1:2H9C PU1 H181 PU2:1H18 PU2 H182 PU2:2H18 PU2 H183 PU2:3H18 PU2 H9C1 PU2:1H9C PU2 H9C2 PU2:2H9C PU2 H5N1 PU2:1H5N PU2 H5N2 PU2:2H5N PU2 H7C1 PU2:1H7C PU2 H7C2 PU2:2H7C PU2 H7C3 PU2:3H7C PU2 H191 PU3:1H19 PU3 H192 PU3:2H19 PU3 H193 PU3:3H19 PU3 H7C1 PU3:1H7C PU3 H7C2 PU3:2H7C PU3 H7C3 PU3:3H7C PU3 H8C1 PU3:1H8C PU3 H8C2 PU3:2H8C PU3 H8C3 PU3:3H8C PU3 H9C1 PU3:1H9C PU3 H9C2 PU3:2H9C PU3 H5N1 PU3:1H5N PU3 H5N2 PU3:2H5N PU3 H151 PU3:1H15 PU3 H152 PU3:2H15 PU3 H161 PU3:1H16 PU3 H162 PU3:2H16 PU3 H171 PU3:1H17 PU3 H172 PU3:2H17 PU3 H181 PU3:1H18 PU3 H182 PU3:2H18 PU3 H183 PU3:3H18 PU3 H181 PU4:1H18 PU4 H182 PU4:2H18 PU4 H183 PU4:3H18 PU4 H171 PU4:1H17 PU4 H172 PU4:2H17 PU4 H161 PU4:1H16 PU4 H162 PU4:2H16 PU4 H151 PU4:1H15 PU4 H152 PU4:2H15 PU4 H5N1 PU4:1H5N PU4 H5N2 PU4:2H5N PU4 H9C1 PU4:1H9C PU4 H9C2 PU4:2H9C PU4 H7C1 PU4:1H7C PU4 H7C2 PU4:2H7C PU4 H7C3 PU4:3H7C PU4 H181 PU5:1H18 PU5 H182 PU5:2H18 PU5 H183 PU5:3H18 PU5 H171 PU5:1H17 PU5 H172 PU5:2H17 PU5 H161 PU5:1H16 PU5 H162 PU5:2H16 PU5 H151 PU5:1H15 PU5 H152 PU5:2H15 PU5 H9C1 PU5:1H9C PU5 H9C2 PU5:2H9C PU5 H5N1 PU5:1H5N PU5 H5N2 PU5:2H5N PU5 H7C1 PU5:1H7C PU5 H7C2 PU5:2H7C PU5 H7C3 PU5:3H7C PU5 H181 PU6:1H18 PU6 H182 PU6:2H18 PU6 H183 PU6:3H18 PU6 H171 PU6:1H17 PU6 H172 PU6:2H17 PU6 H161 PU6:1H16 PU6 H162 PU6:2H16 PU6 H151 PU6:1H15 PU6 H152 PU6:2H15 PU6 H5N1 PU6:1H5N PU6 H5N2 PU6:2H5N PU6 H9C1 PU6:1H9C PU6 H9C2 PU6:2H9C PU6 H7C1 PU6:1H7C PU6 H7C2 PU6:2H7C PU6 H191 PU7:1H19 PU7 H192 PU7:2H19 PU7 H193 PU7:3H19 PU7 H8C1 PU7:1H8C PU7 H8C2 PU7:2H8C PU7 H8C3 PU7:3H8C PU7 H9C1 PU7:1H9C PU7 H9C2 PU7:2H9C PU7 H5N1 PU7:1H5N PU7 H5N2 PU7:2H5N PU7 H151 PU7:1H15 PU7 H152 PU7:2H15 PU7 H161 PU7:1H16 PU7 H162 PU7:2H16 PU7 H171 PU7:1H17 PU7 H172 PU7:2H17 PU7 H181 PU7:1H18 PU7 H182 PU7:2H18 PU7 H183 PU7:3H18 PU7 H191 PU8:1H19 PU8 H192 PU8:2H19 PU8 H193 PU8:3H19 PU8 H7C1 PU8:1H7C PU8 H7C2 PU8:2H7C PU8 H7C3 PU8:3H7C PU8 H8C1 PU8:1H8C PU8 H8C2 PU8:2H8C PU8 H8C3 PU8:3H8C PU8 H9C1 PU8:1H9C PU8 H9C2 PU8:2H9C PU8 H5N1 PU8:1H5N PU8 H5N2 PU8:2H5N PU8 H151 PU8:1H15 PU8 H152 PU8:2H15 PU8 H161 PU8:1H16 PU8 H162 PU8:2H16 PU8 H171 PU8:1H17 PU8 H172 PU8:2H17 PU8 H181 PU8:1H18 PU8 H182 PU8:2H18 PU8 H183 PU8:3H18 PU8 H201 PU9:1H20 PU9 H202 PU9:2H20 PU9 H203 PU9:3H20 PU9 H191 PU9:1H19 PU9 H192 PU9:2H19 PU9 H193 PU9:3H19 PU9 H181 PU9:1H18 PU9 H182 PU9:2H18 PU9 H183 PU9:3H18 PU9 H6C1 PU9:1H6C PU9 H6C2 PU9:2H6C PU9 H5N1 PU9:1H5N PU9 H5N2 PU9:2H5N PU9 H7C1 PU9:1H7C PU9 H7C2 PU9:2H7C PU9 H8C1 PU9:1H8C PU9 H8C2 PU9:2H8C PU9 H9C1 PU9:1H9C PU9 H9C2 PU9:2H9C PU9 H6A1 PUA:1H6A PUA H6A2 PUA:2H6A PUA H5'1 PUA:1H5* PUA H5'2 PUA:2H5* PUA H4' PUA: H4* PUA H1' PUA: H1* PUA H2' PUA: H2* PUA HO2' PUA:HO2* PUA H3' PUA: H3* PUA H51 PUA:1H5 PUA H52 PUA:2H5 PUA H21 PUA:1H2 PUA H22 PUA:2H2 PUA HHC1 PUB:1HHC PUB HHC2 PUB:2HHC PUB HMC1 PUB:1HMC PUB HMC2 PUB:2HMC PUB HMC3 PUB:3HMC PUB HAC1 PUB:1HAC PUB HAC2 PUB:2HAC PUB HBC1 PUB:1HBC PUB HBC2 PUB:2HBC PUB HOC2 PUB:2HOC PUB H1D1 PUB:1H1D PUB HMD1 PUB:1HMD PUB HMD2 PUB:2HMD PUB HMD3 PUB:3HMD PUB HBD1 PUB:1HBD PUB HBD2 PUB:2HBD PUB HBD3 PUB:3HBD PUB H4A1 PUB:1H4A PUB HMA1 PUB:1HMA PUB HMA2 PUB:2HMA PUB HMA3 PUB:3HMA PUB HBA1 PUB:1HBA PUB HBA2 PUB:2HBA PUB HBA3 PUB:3HBA PUB HHA1 PUB:1HHA PUB HHA2 PUB:2HHA PUB HAA1 PUB:1HAA PUB HAA2 PUB:2HAA PUB HAD1 PUB:1HAD PUB HAD2 PUB:2HAD PUB HHB1 PUB:1HHB PUB HMB1 PUB:1HMB PUB HMB2 PUB:2HMB PUB HMB3 PUB:3HMB PUB HAB1 PUB:1HAB PUB HAB2 PUB:2HAB PUB HBB1 PUB:1HBB PUB HBB2 PUB:2HBB PUB HOB2 PUB:2HOB PUB H101 PUG:1H10 PUG H102 PUG:2H10 PUG H141 PUG:1H14 PUG H142 PUG:2H14 PUG H201 PUL:1H20 PUL H202 PUL:2H20 PUL H431 PUL:1H43 PUL H432 PUL:2H43 PUL H433 PUL:3H43 PUL H421 PUL:1H42 PUL H422 PUL:2H42 PUL H423 PUL:3H42 PUL H411 PUL:1H41 PUL H412 PUL:2H41 PUL H413 PUL:3H41 PUL H2C1 PUL:1H2C PUL H2C2 PUL:2H2C PUL H441 PUL:1H44 PUL H442 PUL:2H44 PUL H443 PUL:3H44 PUL H451 PUL:1H45 PUL H452 PUL:2H45 PUL H453 PUL:3H45 PUL H461 PUL:1H46 PUL H462 PUL:2H46 PUL H463 PUL:3H46 PUL H471 PUL:1H47 PUL H472 PUL:2H47 PUL H473 PUL:3H47 PUL H401 PUL:1H40 PUL H402 PUL:2H40 PUL H403 PUL:3H40 PUL H341 PUL:1H34 PUL H342 PUL:2H34 PUL H343 PUL:3H34 PUL H1' PUR: H1* PUR H2' PUR: H2* PUR HO2' PUR:*HO2 PUR H3' PUR: H3* PUR HO3' PUR:*HO3 PUR H4' PUR: H4* PUR H5'1 PUR:1H5* PUR H5'2 PUR:2H5* PUR HO5' PUR:*HO5 PUR HN21 PUT:1HN2 PUT HN22 PUT:2HN2 PUT H41 PUT:1H4 PUT H42 PUT:2H4 PUT H31 PUT:1H3 PUT H32 PUT:2H3 PUT H21 PUT:1H2 PUT H22 PUT:2H2 PUT H11 PUT:1H1 PUT H12 PUT:2H1 PUT HN11 PUT:1HN1 PUT HN12 PUT:2HN1 PUT H181 PUX:1H18 PUX H182 PUX:2H18 PUX H183 PUX:3H18 PUX H171 PUX:1H17 PUX H172 PUX:2H17 PUX H161 PUX:1H16 PUX H162 PUX:2H16 PUX H151 PUX:1H15 PUX H152 PUX:2H15 PUX H5N1 PUX:1H5N PUX H5N2 PUX:2H5N PUX H9C1 PUX:1H9C PUX H9C2 PUX:2H9C PUX H7C1 PUX:1H7C PUX H7C2 PUX:2H7C PUX HN1 PUY:1HN PUY HN2 PUY:2HN PUY HB1 PUY:1HB PUY HB2 PUY:2HB PUY HMZ1 PUY:1HMZ PUY HMZ2 PUY:2HMZ PUY HMZ3 PUY:3HMZ PUY H5' PUY: H5* PUY H5'1 PUY:1H5* PUY H5'' PUY:2H5* PUY H4' PUY: H4* PUY H1' PUY: H1* PUY H91 PUY:1H9 PUY H92 PUY:2H9 PUY H93 PUY:3H9 PUY H101 PUY:1H10 PUY H102 PUY:2H10 PUY H103 PUY:3H10 PUY H2' PUY: H2* PUY H3' PUY: H3* PUY H171 PUZ:1H17 PUZ H172 PUZ:2H17 PUZ H161 PUZ:1H16 PUZ H162 PUZ:2H16 PUZ H151 PUZ:1H15 PUZ H152 PUZ:2H15 PUZ H5N1 PUZ:1H5N PUZ H5N2 PUZ:2H5N PUZ H9C1 PUZ:1H9C PUZ H9C2 PUZ:2H9C PUZ H7C1 PUZ:1H7C PUZ H7C2 PUZ:2H7C PUZ H7C3 PUZ:3H7C PUZ H8C1 PUZ:1H8C PUZ H8C2 PUZ:2H8C PUZ H8C3 PUZ:3H8C PUZ H31 PVA:1H3 PVA H32 PVA:2H3 PVA H33 PVA:3H3 PVA HM1 PVA:1HM PVA HM2 PVA:2HM PVA HM3 PVA:3HM PVA HN1 PVA:1HN PVA HN2 PVA:2HN PVA HOP2 PVA:2HOP PVA HOP3 PVA:3HOP PVA H161 PVB:1H16 PVB H162 PVB:2H16 PVB H163 PVB:3H16 PVB H141 PVB:1H14 PVB H142 PVB:2H14 PVB H143 PVB:3H14 PVB H151 PVB:1H15 PVB H152 PVB:2H15 PVB H111 PVB:1H11 PVB H112 PVB:2H11 PVB H113 PVB:3H11 PVB H101 PVB:1H10 PVB H102 PVB:2H10 PVB H103 PVB:3H10 PVB HP21 PVC:1HP2 PVC HP22 PVC:2HP2 PVC HP31 PVC:1HP3 PVC HP32 PVC:2HP3 PVC HP41 PVC:1HP4 PVC HP42 PVC:2HP4 PVC HP51 PVC:1HP5 PVC HP52 PVC:2HP5 PVC HP61 PVC:1HP6 PVC HP62 PVC:2HP6 PVC HP71 PVC:1HP7 PVC HP72 PVC:2HP7 PVC HP81 PVC:1HP8 PVC HP82 PVC:2HP8 PVC HP91 PVC:1HP9 PVC HP92 PVC:2HP9 PVC HPA1 PVC:1HPA PVC HPA2 PVC:2HPA PVC HPB1 PVC:1HPB PVC HPB2 PVC:2HPB PVC HPC1 PVC:1HPC PVC HPC2 PVC:2HPC PVC HPD1 PVC:1HPD PVC HPD2 PVC:2HPD PVC HC61 PVC:1HC6 PVC HC62 PVC:2HC6 PVC HPE1 PVC:1HPE PVC HPE2 PVC:2HPE PVC HPF1 PVC:1HPF PVC HPF2 PVC:2HPF PVC HPG1 PVC:1HPG PVC HPG2 PVC:2HPG PVC HPG3 PVC:3HPG PVC H121 PVD:1H12 PVD H122 PVD:2H12 PVD H131 PVD:1H13 PVD H132 PVD:2H13 PVD H201 PVD:1H20 PVD H202 PVD:2H20 PVD H211 PVD:1H21 PVD H212 PVD:2H21 PVD H291 PVD:1H29 PVD H292 PVD:2H29 PVD H351 PVD:1H35 PVD H352 PVD:2H35 PVD H361 PVD:1H36 PVD H362 PVD:2H36 PVD H371 PVD:1H37 PVD H372 PVD:2H37 PVD H401 PVD:1H40 PVD H402 PVD:2H40 PVD H461 PVD:1H46 PVD H462 PVD:2H46 PVD H531 PVD:1H53 PVD H532 PVD:2H53 PVD H541 PVD:1H54 PVD H542 PVD:2H54 PVD H551 PVD:1H55 PVD H552 PVD:2H55 PVD H651 PVD:1H65 PVD H652 PVD:2H65 PVD H661 PVD:1H66 PVD H662 PVD:2H66 PVD H671 PVD:1H67 PVD H672 PVD:2H67 PVD H681 PVD:1H68 PVD H682 PVD:2H68 PVD H741 PVD:1H74 PVD H742 PVD:2H74 PVD H751 PVD:1H75 PVD H752 PVD:2H75 PVD H761 PVD:1H76 PVD H762 PVD:2H76 PVD H871 PVD:1H87 PVD H872 PVD:2H87 PVD H873 PVD:3H87 PVD H941 PVD:1H94 PVD H942 PVD:2H94 PVD H943 PVD:3H94 PVD H2 PVH: HN2 PVH HB2 PVH:1HB PVH HB3 PVH:2HB PVH HM1 PVH:1HM PVH HM2 PVH:2HM PVH HM3 PVH:3HM PVH H33 PVL:3H3 PVL H11 PVL:1H1 PVL H12 PVL:2H1 PVL H13 PVL:3H1 PVL H321 PVN:1H32 PVN H322 PVN:2H32 PVN H211 PVN:1H21 PVN H212 PVN:2H21 PVN H213 PVN:3H21 PVN H5C1 PVN:1H5C PVN H5C2 PVN:2H5C PVN H411 PVN:1H41 PVN H412 PVN:2H41 PVN H413 PVN:3H41 PVN H101 PVN:1H10 PVN H511 PVN:1H51 PVN H512 PVN:2H51 PVN H521 PVN:1H52 PVN H522 PVN:2H52 PVN H611 PVN:1H61 PVN H612 PVN:2H61 PVN H621 PVN:1H62 PVN H622 PVN:2H62 PVN H151 PVN:1H15 PVN H711 PVN:1H71 PVN H712 PVN:2H71 PVN H713 PVN:3H71 PVN H811 PVN:1H81 PVN H812 PVN:2H81 PVN H813 PVN:3H81 PVN H911 PVN:1H91 PVN H912 PVN:2H91 PVN H921 PVN:1H92 PVN H922 PVN:2H92 PVN H923 PVN:3H92 PVN H323 PVN:3H32 PVN H151 PX1:1H15 PX1 H152 PX1:2H15 PX1 H153 PX1:3H15 PX1 H161 PX1:1H16 PX1 H162 PX1:2H16 PX1 H163 PX1:3H16 PX1 H7N1 PX1:1H7N PX1 H7N2 PX1:2H7N PX1 HN21 PXA:1HN2 PXA HN22 PXA:2HN2 PXA H' PXA: H* PXA H151 PXA:1H15 PXA H152 PXA:2H15 PXA H153 PXA:3H15 PXA H161 PXA:1H16 PXA H162 PXA:2H16 PXA H163 PXA:3H16 PXA HN21 PXF:1HN2 PXF HN22 PXF:2HN2 PXF H' PXF: H* PXF H151 PXF:1H15 PXF H152 PXF:2H15 PXF H153 PXF:3H15 PXF H161 PXF:1H16 PXF H162 PXF:2H16 PXF H163 PXF:3H16 PXF H2A1 PXG:1H2A PXG H2A2 PXG:2H2A PXG H2A3 PXG:3H2A PXG H5A1 PXG:1H5A PXG H5A2 PXG:2H5A PXG HOP1 PXG:1HOP PXG HOP2 PXG:2HOP PXG H4A1 PXG:1H4A PXG H4A2 PXG:2H4A PXG H1C1 PXI:1H1C PXI H1C2 PXI:2H1C PXI H1C3 PXI:3H1C PXI H2C1 PXI:1H2C PXI H2C2 PXI:2H2C PXI H6C1 PXI:1H6C PXI H6C2 PXI:2H6C PXI H6C3 PXI:3H6C PXI H101 PXI:1H10 PXI H102 PXI:2H10 PXI H103 PXI:3H10 PXI H111 PXI:1H11 PXI H112 PXI:2H11 PXI H131 PXI:1H13 PXI H132 PXI:2H13 PXI H133 PXI:3H13 PXI H141 PXI:1H14 PXI H142 PXI:2H14 PXI H143 PXI:3H14 PXI H171 PXI:1H17 PXI H172 PXI:2H17 PXI H173 PXI:3H17 PXI H181 PXI:1H18 PXI H182 PXI:2H18 PXI H201 PXI:1H20 PXI H202 PXI:2H20 PXI H203 PXI:3H20 PXI H251 PXI:1H25 PXI H252 PXI:2H25 PXI H253 PXI:3H25 PXI H5A1 PXL:1H5A PXL H5A2 PXL:2H5A PXL H2A1 PXL:1H2A PXL H2A2 PXL:2H2A PXL H2A3 PXL:3H2A PXL H2A1 PXM:1H2A PXM H2A2 PXM:2H2A PXM H2A3 PXM:3H2A PXM H5A1 PXM:1H5A PXM H5A2 PXM:2H5A PXM H4A1 PXM:1H4A PXM H4A2 PXM:2H4A PXM HN41 PXM:1HN4 PXM HN42 PXM:2HN4 PXM H2A1 PXP:1H2A PXP H2A2 PXP:2H2A PXP H2A3 PXP:3H2A PXP H4A1 PXP:1H4A PXP H4A2 PXP:2H4A PXP HOA4 PXP:4HOA PXP H5A1 PXP:1H5A PXP H5A2 PXP:2H5A PXP HOP2 PXP:2HOP PXP HOP3 PXP:3HOP PXP H131 PXT:1H13 PXT H132 PXT:2H13 PXT H171 PXT:1H17 PXT H172 PXT:2H17 PXT H421 PXT:1H42 PXT H422 PXT:2H42 PXT H423 PXT:3H42 PXT H91 PXT:1H9 PXT H92 PXT:2H9 PXT H81 PXT:1H8 PXT H82 PXT:2H8 PXT H61 PXT:1H6 PXT H62 PXT:2H6 PXT H51 PXT:1H5 PXT H52 PXT:2H5 PXT H41 PXT:1H4 PXT H42 PXT:2H4 PXT H411 PXT:1H41 PXT H412 PXT:2H41 PXT H413 PXT:3H41 PXT H431 PXT:1H43 PXT H432 PXT:2H43 PXT H433 PXT:3H43 PXT H191 PXT:1H19 PXT H192 PXT:2H19 PXT H201 PXT:1H20 PXT H202 PXT:2H20 PXT H441 PXT:1H44 PXT H442 PXT:2H44 PXT H443 PXT:3H44 PXT H241 PXT:1H24 PXT H242 PXT:2H24 PXT H231 PXT:1H23 PXT H232 PXT:2H23 PXT H261 PXT:1H26 PXT H262 PXT:2H26 PXT H451 PXT:1H45 PXT H452 PXT:2H45 PXT H453 PXT:3H45 PXT H461 PXT:1H46 PXT H462 PXT:2H46 PXT H463 PXT:3H46 PXT H341 PXT:1H34 PXT H342 PXT:2H34 PXT H401 PXT:1H40 PXT H402 PXT:2H40 PXT H391 PXT:1H39 PXT H392 PXT:2H39 PXT H471 PXT:1H47 PXT H472 PXT:2H47 PXT H473 PXT:3H47 PXT H1'1 PXY:1H1' PXY H1'2 PXY:2H1' PXY H1'3 PXY:3H1' PXY H4'1 PXY:1H4' PXY H4'2 PXY:2H4' PXY H4'3 PXY:3H4' PXY HN21 PXZ:1HN2 PXZ HN22 PXZ:2HN2 PXZ H' PXZ: H* PXZ H151 PXZ:1H15 PXZ H152 PXZ:2H15 PXZ H153 PXZ:3H15 PXZ H161 PXZ:1H16 PXZ H162 PXZ:2H16 PXZ H163 PXZ:3H16 PXZ H1 PY2:1H PY2 H2A PY2:2H PY2 H181 PY3:1H18 PY3 H182 PY3:2H18 PY3 H191 PY3:1H19 PY3 H192 PY3:2H19 PY3 H221 PY3:1H22 PY3 H222 PY3:2H22 PY3 H331 PY3:1H33 PY3 H332 PY3:2H33 PY3 H333 PY3:3H33 PY3 H341 PY3:1H34 PY3 H342 PY3:2H34 PY3 H343 PY3:3H34 PY3 H401 PY3:1H40 PY3 H402 PY3:2H40 PY3 H441 PY3:1H44 PY3 H442 PY3:2H44 PY3 H451 PY3:1H45 PY3 H452 PY3:2H45 PY3 H453 PY3:3H45 PY3 H471 PY3:1H47 PY3 H472 PY3:2H47 PY3 H473 PY3:3H47 PY3 H2A1 PY4:1H2A PY4 H2A2 PY4:2H2A PY4 H2A3 PY4:3H2A PY4 H4A1 PY4:1H4A PY4 H4A2 PY4:2H4A PY4 H5A1 PY4:1H5A PY4 H5A2 PY4:2H5A PY4 HOP2 PY4:2HOP PY4 HOP3 PY4:3HOP PY4 HB1 PY4:1HB PY4 HB2 PY4:2HB PY4 H2A1 PY5:1H2A PY5 H2A2 PY5:2H2A PY5 H2A3 PY5:3H2A PY5 H4A1 PY5:1H4A PY5 H4A2 PY5:2H4A PY5 H5A1 PY5:1H5A PY5 H5A2 PY5:2H5A PY5 HOP2 PY5:2HOP PY5 HOP3 PY5:3HOP PY5 HB1 PY5:1HB PY5 HB2 PY5:2HB PY5 H2A1 PY6:1H2A PY6 H2A2 PY6:2H2A PY6 H2A3 PY6:3H2A PY6 H4A1 PY6:1H4A PY6 H4A2 PY6:2H4A PY6 H5A1 PY6:1H5A PY6 H5A2 PY6:2H5A PY6 HOP2 PY6:2HOP PY6 HOP3 PY6:3HOP PY6 HB1 PY6:1HB PY6 HB2 PY6:2HB PY6 H71 PY7:1H7 PY7 H72 PY7:2H7 PY7 H8C1 PY8:1H8C PY8 H8C2 PY8:2H8C PY8 H9C1 PY8:1H9C PY8 H9C2 PY8:2H9C PY8 H101 PY8:1H10 PY8 H102 PY8:2H10 PY8 HC2 PYA: H2 PYA HB3 PYA:1HB PYA HB2 PYA:2HB PYA H PYA:1HN PYA H2 PYA:2HN PYA HD1 PYB:1HD PYB HD2 PYB:2HD PYB HD3 PYB:3HD PYB H31 PYC:1H3 PYC H41 PYC:1H4 PYC H61 PYC:1H6 PYC HM21 PYD:1HM2 PYD HM22 PYD:2HM2 PYD HM23 PYD:3HM2 PYD HN41 PYD:1HN4 PYD HN42 PYD:2HN4 PYD HC71 PYD:1HC7 PYD HC72 PYD:2HC7 PYD HC73 PYD:3HC7 PYD H11 PYE:1H1 PYE H12 PYE:2H1 PYE H21 PYE:1H2 PYE H22 PYE:2H2 PYE H31 PYE:1H3 PYE H32 PYE:2H3 PYE H41 PYE:1H4 PYE H42 PYE:2H4 PYE H51 PYE:1H5 PYE H52 PYE:2H5 PYE H71 PYF:1H7 PYF H72 PYF:2H7 PYF HB1 PYH:1HB PYH HB2 PYH:2HB PYH HG1 PYH:1HG PYH HG2 PYH:2HG PYH HD1 PYH:1HD PYH HD2 PYH:2HD PYH HE1 PYH:1HE PYH HE2 PYH:2HE PYH HAJ1 PYH:1HAJ PYH HAJ2 PYH:2HAJ PYH HAA1 PYH:1HAA PYH HAA2 PYH:2HAA PYH HAA3 PYH:3HAA PYH HM21 PYI:1HM2 PYI HM22 PYI:2HM2 PYI HM23 PYI:3HM2 PYI H7A1 PYI:1H7A PYI H7A2 PYI:2H7A PYI HM61 PYI:1HM6 PYI HM62 PYI:2HM6 PYI HM71 PYI:1HM7 PYI HM72 PYI:2HM7 PYI HM41 PYI:1HM4 PYI HM42 PYI:2HM4 PYI HM43 PYI:3HM4 PYI H4A1 PYI:1H4A PYI H4A2 PYI:2H4A PYI HCB1 PYL:1HCB PYL HCB2 PYL:2HCB PYL HCX1 PYL:1HCX PYL HCX2 PYL:2HCX PYL HCX3 PYL:3HCX PYL HCD1 PYL:1HCD PYL HCD2 PYL:2HCD PYL HCE1 PYL:1HCE PYL HCE2 PYL:2HCE PYL HCZ1 PYL:1HCZ PYL HN12 PYM:2HN1 PYM HN11 PYM:1HN1 PYM H33 PYM:3H3 PYM H32 PYM:2H3 PYM H31 PYM:1H3 PYM H21 PYN:1H2 PYN H51 PYN:1H5 PYN H71 PYN:1H7 PYN H81 PYN:1H8 PYN H91 PYN:1H9 PYN H101 PYN:1H10 PYN H121 PYN:1H12 PYN HN1 PYN:1HN PYN H151 PYN:1H15 PYN H152 PYN:2H15 PYN H161 PYN:1H16 PYN H162 PYN:2H16 PYN HN11 PYN:1HN1 PYN H181 PYN:1H18 PYN H182 PYN:2H18 PYN H191 PYN:1H19 PYN H192 PYN:2H19 PYN H211 PYN:1H21 PYN H212 PYN:2H21 PYN H231 PYN:1H23 PYN H232 PYN:2H23 PYN H241 PYN:1H24 PYN H242 PYN:2H24 PYN H251 PYN:1H25 PYN H252 PYN:2H25 PYN H261 PYN:1H26 PYN H262 PYN:2H26 PYN H281 PYN:1H28 PYN H282 PYN:2H28 PYN H291 PYN:1H29 PYN H292 PYN:2H29 PYN H301 PYN:1H30 PYN H302 PYN:2H30 PYN HOP3 PYO:3HOP PYO HOP1 PYO:1HOP PYO H5'' PYO:2H5* PYO H5' PYO:1H5* PYO H4' PYO: H4* PYO H3' PYO: H3* PYO H1' PYO: H1* PYO HO3 PYO:3HO PYO H2' PYO: H2* PYO HO2 PYO:2HO PYO HOP2 PYP:2HOP PYP H5'1 PYP:1H5* PYP H5'2 PYP:2H5* PYP H4' PYP: H4* PYP H1' PYP: H1* PYP H2'2 PYP:2H2* PYP H2'1 PYP:1H2* PYP H3' PYP: H3* PYP HOP3 PYP:3HOP PYP H11 PYQ:1H1 PYQ H61 PYQ:1H6 PYQ H62 PYQ:2H6 PYQ H71 PYQ:1H7 PYQ H72 PYQ:2H7 PYQ H111 PYQ:1H11 PYQ H112 PYQ:2H11 PYQ H121 PYQ:1H12 PYQ H122 PYQ:2H12 PYQ H131 PYQ:1H13 PYQ H141 PYQ:1H14 PYQ H31 PYR:1H3 PYR H32 PYR:2H3 PYR H33 PYR:3H3 PYR HN1 PYT:1HN PYT HN2 PYT:2HN PYT HC1 PYT:1HC PYT HC2 PYT:2HC PYT HT1 PYT:1HT PYT HT2 PYT:2HT PYT H PYX:1HN PYX H2 PYX:2HN PYX HB2 PYX:1HB PYX HB3 PYX:2HB PYX HE2 PYX:1HE PYX HE3 PYX:2HE PYX HC2 PYX: H2 PYX HM61 PYX:1HM6 PYX HM62 PYX:2HM6 PYX HN61 PYX:1HN6 PYX HN62 PYX:2HN6 PYX HM41 PYX:1HM4 PYX HM42 PYX:2HM4 PYX HM43 PYX:3HM4 PYX HOP2 PYY:2HOP PYY H5'1 PYY:1H5* PYY H5'2 PYY:2H5* PYY H4' PYY: H4* PYY H1' PYY: H1* PYY H2' PYY: H2* PYY HO'2 PYY:2HO* PYY H3' PYY: H3* PYY HOP3 PYY:3HOP PYY H1C1 PZ1:1H1C PZ1 H1C2 PZ1:2H1C PZ1 H1C3 PZ1:3H1C PZ1 H4C1 PZ1:1H4C PZ1 H4C2 PZ1:2H4C PZ1 H211 PZ1:1H21 PZ1 H212 PZ1:2H21 PZ1 H221 PZ1:1H22 PZ1 H222 PZ1:2H22 PZ1 H241 PZ1:1H24 PZ1 H242 PZ1:2H24 PZ1 H311 PZ1:1H31 PZ1 H312 PZ1:2H31 PZ1 H321 PZ1:1H32 PZ1 H322 PZ1:2H32 PZ1 H331 PZ1:1H33 PZ1 H332 PZ1:2H33 PZ1 H341 PZ1:1H34 PZ1 H342 PZ1:2H34 PZ1 H112 PZ1:12H1 PZ1 H181 PZ1:1H18 PZ1 H182 PZ1:2H18 PZ1 H191 PZ1:1H19 PZ1 H192 PZ1:2H19 PZ1 H161 PZF:1H16 PZF H162 PZF:2H16 PZF H191 PZF:1H19 PZF H192 PZF:2H19 PZF H193 PZF:3H19 PZF H201 PZF:1H20 PZF H202 PZF:2H20 PZF H141 PZF:1H14 PZF H142 PZF:2H14 PZF HN11 PZH:1HN1 PZH HN12 PZH:2HN1 PZH HB1 PZH:1HB PZH HB2 PZH:2HB PZH HN11 PZM:1HN1 PZM HN12 PZM:2HN1 PZM HB1 PZM:1HB PZM HB2 PZM:2HB PZM HF11 PZM:1HF1 PZM HF12 PZM:2HF1 PZM HF13 PZM:3HF1 PZM H11 PZN:1H1 PZN H12 PZN:2H1 PZN H13 PZN:3H1 PZN H21 PZN:1H2 PZN H22 PZN:2H2 PZN H31 PZN:1H3 PZN H32 PZN:2H3 PZN H41 PZN:1H4 PZN H42 PZN:2H4 PZN H51 PZN:1H5 PZN H52 PZN:2H5 PZN H61 PZN:1H6 PZN H62 PZN:2H6 PZN H71 PZN:1H7 PZN H72 PZN:2H7 PZN H73 PZN:3H7 PZN H81 PZN:1H8 PZN H82 PZN:2H8 PZN H111 PZN:1H11 PZN H112 PZN:2H11 PZN H151 PZN:1H15 PZN H152 PZN:2H15 PZN H161 PZN:1H16 PZN H162 PZN:2H16 PZN H163 PZN:3H16 PZN H231 PZN:1H23 PZN H232 PZN:2H23 PZN H233 PZN:3H23 PZN H211 PZN:1H21 PZN H212 PZN:2H21 PZN H213 PZN:3H21 PZN H221 PZN:1H22 PZN H222 PZN:2H22 PZN H223 PZN:3H22 PZN H251 PZN:1H25 PZN H252 PZN:2H25 PZN H281 PZN:1H28 PZN H282 PZN:2H28 PZN H283 PZN:3H28 PZN H21 PZQ:1H2 PZQ H22 PZQ:2H2 PZQ H31 PZQ:1H3 PZQ H32 PZQ:2H3 PZQ H51 PZQ:1H5 PZQ H52 PZQ:2H5 PZQ H61 PZQ:1H6 PZQ H62 PZQ:2H6 PZQ H91 PZQ:1H9 PZQ H92 PZQ:2H9 PZQ H101 PZQ:1H10 PZQ H102 PZQ:2H10 PZQ H131 PZQ:1H13 PZQ H132 PZQ:2H13 PZQ H151 PZQ:1H15 PZQ H152 PZQ:2H15 PZQ H161 PZQ:1H16 PZQ H162 PZQ:2H16 PZQ H101 PZZ:1H10 PZZ H102 PZZ:2H10 PZZ H121 PZZ:1H12 PZZ H122 PZZ:2H12 PZZ H123 PZZ:3H12 PZZ H131 PZZ:1H13 PZZ H132 PZZ:2H13 PZZ H133 PZZ:3H13 PZZ H141 PZZ:1H14 PZZ H142 PZZ:2H14 PZZ H151 PZZ:1H15 PZZ H152 PZZ:2H15 PZZ H161 PZZ:1H16 PZZ H162 PZZ:2H16 PZZ H71 Q2Y:1H7 Q2Y H72 Q2Y:2H7 Q2Y H91 Q2Y:1H9 Q2Y H92 Q2Y:2H9 Q2Y H171 Q2Y:1H17 Q2Y H172 Q2Y:2H17 Q2Y H11A Q2Y:1H1 Q2Y H12 Q2Y:2H1 Q2Y H13 Q2Y:3H1 Q2Y H501 Q50:1H50 Q50 H502 Q50:2H50 Q50 H411 Q50:1H41 Q50 H412 Q50:2H41 Q50 H321 Q50:1H32 Q50 H322 Q50:2H32 Q50 H331 Q50:1H33 Q50 H332 Q50:2H33 Q50 H361 Q50:1H36 Q50 H362 Q50:2H36 Q50 H211 Q50:1H21 Q50 H212 Q50:2H21 Q50 H191 Q50:1H19 Q50 H192 Q50:2H19 Q50 H41 Q50:1H4 Q50 H42 Q50:2H4 Q50 H43A Q50:3H4 Q50 H31A Q50:1H3 Q50 H32 Q50:2H3 Q50 H33 Q50:3H3 Q50 H21 Q50:1H2 Q50 H22 Q50:2H2 Q50 H23A Q50:3H2 Q50 H101 Q50:1H10 Q50 H102 Q50:2H10 Q50 H41A Q72:1H4 Q72 H42 Q72:2H4 Q72 H43 Q72:3H4 Q72 H151 Q72:1H15 Q72 H152 Q72:2H15 Q72 H153 Q72:3H15 Q72 H141 Q72:1H14 Q72 H142 Q72:2H14 Q72 H143 Q72:3H14 Q72 H231 Q72:1H23 Q72 H232 Q72:2H23 Q72 H321 Q72:1H32 Q72 H322 Q72:2H32 Q72 H381 Q72:1H38 Q72 H382 Q72:2H38 Q72 H371 Q72:1H37 Q72 H372 Q72:2H37 Q72 H461 Q72:1H46 Q72 H462 Q72:2H46 Q72 H451 Q72:1H45 Q72 H452 Q72:2H45 Q72 H491 Q72:1H49 Q72 H492 Q72:2H49 Q72 H431 Q72:1H43 Q72 H432 Q72:2H43 Q72 H421 Q72:1H42 Q72 H422 Q72:2H42 Q72 H351 Q72:1H35 Q72 H352 Q72:2H35 Q72 H341 Q72:1H34 Q72 H342 Q72:2H34 Q72 H121 Q72:1H12 Q72 H122 Q72:2H12 Q72 H123 Q72:3H12 Q72 H111 Q72:1H11 Q72 H112 Q72:2H11 Q72 H113 Q72:3H11 Q72 H11 Q72:1H1 Q72 H12 Q72:2H1 Q72 H13A Q72:3H1 Q72 H21A Q82:1H2 Q82 H22A Q82:2H2 Q82 H71A Q82:1H7 Q82 H72A Q82:2H7 Q82 H311 Q82:1H31 Q82 H312 Q82:2H31 Q82 H611 Q82:1H61 Q82 H612 Q82:2H61 Q82 H761 Q82:1H76 Q82 H762 Q82:2H76 Q82 H261 Q82:1H26 Q82 H262 Q82:2H26 Q82 H151 QFI:1H15 QFI H152 QFI:2H15 QFI H161 QFI:1H16 QFI H162 QFI:2H16 QFI H241 QFI:1H24 QFI H242 QFI:2H24 QFI H243 QFI:3H24 QFI H251 QFI:1H25 QFI H252 QFI:2H25 QFI H253 QFI:3H25 QFI H261 QFI:1H26 QFI H262 QFI:2H26 QFI H263 QFI:3H26 QFI H81 QFI:1H8 QFI H82 QFI:2H8 QFI H411 QFI:1H41 QFI H412 QFI:2H41 QFI H31 QFI:1H3 QFI H32 QFI:2H3 QFI H21 QFI:1H2 QFI H22A QFI:2H2 QFI H11A QFI:1H1 QFI H12A QFI:2H1 QFI H9C1 QGA:1H9C QGA H9C2 QGA:2H9C QGA H121 QGA:1H12 QGA H122 QGA:2H12 QGA H1C1 QGA:1H1C QGA H1C2 QGA:2H1C QGA H151 QGA:1H15 QGA H152 QGA:2H15 QGA H181 QGA:1H18 QGA H182 QGA:2H18 QGA H241 QGA:1H24 QGA H242 QGA:2H24 QGA H271 QGA:1H27 QGA H272 QGA:2H27 QGA H351 QGA:1H35 QGA H352 QGA:2H35 QGA H361 QGA:1H36 QGA H362 QGA:2H36 QGA H601 QGA:1H60 QGA H602 QGA:2H60 QGA H431 QGA:1H43 QGA H432 QGA:2H43 QGA H291 QIN:1H29 QIN H292 QIN:2H29 QIN H293 QIN:3H29 QIN H561 QIN:1H56 QIN H562 QIN:2H56 QIN H221 QIN:1H22 QIN H222 QIN:2H22 QIN H223 QIN:3H22 QIN H81 QIN:1H8 QIN H82 QIN:2H8 QIN HN11 QIN:1HN1 QIN HN12 QIN:2HN1 QIN H101 QIN:1H10 QIN H102 QIN:2H10 QIN H111 QIN:1H11 QIN H112 QIN:2H11 QIN H131 QIN:1H13 QIN H132 QIN:2H13 QIN H133 QIN:3H13 QIN H51 QIN:1H5 QIN H52 QIN:2H5 QIN H11 QIN:1H1 QIN H12 QIN:2H1 QIN H41 QIN:1H4 QIN H42 QIN:2H4 QIN H43 QIN:3H4 QIN H131 QIX:1H13 QIX H132 QIX:2H13 QIX H531 QIX:1H53 QIX H532 QIX:2H53 QIX H461 QIX:1H46 QIX H462 QIX:2H46 QIX H321 QIX:1H32 QIX H322 QIX:2H32 QIX H071 QIX:1H07 QIX H072 QIX:2H07 QIX H061 QIX:1H06 QIX H062 QIX:2H06 QIX H051 QIX:1H05 QIX H052 QIX:2H05 QIX H031 QIX:1H03 QIX H032 QIX:2H03 QIX H181 QIX:1H18 QIX H182 QIX:2H18 QIX HD11 QLG:1HD1 QLG HD12 QLG:2HD1 QLG HD13 QLG:3HD1 QLG HD21 QLG:1HD2 QLG HD22 QLG:2HD2 QLG HD23 QLG:3HD2 QLG HB11 QLG:1HB1 QLG HB12 QLG:2HB1 QLG HG11 QLG:1HG1 QLG HG12 QLG:2HG1 QLG HE11 QLG:1HE1 QLG HE12 QLG:2HE1 QLG HA31 QLG:1HA3 QLG HA32 QLG:2HA3 QLG HB1 QLP:1HB QLP HB2 QLP:2HB QLP HG1 QLP:1HG QLP HG2 QLP:2HG QLP HE21 QLP:1HE2 QLP HE22 QLP:2HE2 QLP H4A1 QLP:1H4A QLP H4A2 QLP:2H4A QLP H5A1 QLP:1H5A QLP H5A2 QLP:2H5A QLP H2A1 QLP:1H2A QLP H2A2 QLP:2H2A QLP H2A3 QLP:3H2A QLP H71 QMS:1H7 QMS H72 QMS:2H7 QMS H73 QMS:3H7 QMS H291 QNO:1H29 QNO H292 QNO:2H29 QNO H293 QNO:3H29 QNO H281 QNO:1H28 QNO H282 QNO:2H28 QNO H271 QNO:1H27 QNO H272 QNO:2H27 QNO H261 QNO:1H26 QNO H262 QNO:2H26 QNO H251 QNO:1H25 QNO H252 QNO:2H25 QNO H241 QNO:1H24 QNO H242 QNO:2H24 QNO H231 QNO:1H23 QNO H232 QNO:2H23 QNO H221 QNO:1H22 QNO H222 QNO:2H22 QNO H211 QNO:1H21 QNO H212 QNO:2H21 QNO HAW1 QPP:1HAW QPP HAW2 QPP:2HAW QPP HAW3 QPP:3HAW QPP H161 QQ2:1H16 QQ2 H162 QQ2:2H16 QQ2 H271 QQ2:1H27 QQ2 H272 QQ2:2H27 QQ2 H291 QQ2:1H29 QQ2 H292 QQ2:2H29 QQ2 H311 QQ2:1H31 QQ2 H312 QQ2:2H31 QQ2 H313 QQ2:3H31 QQ2 H321 QQ2:1H32 QQ2 H322 QQ2:2H32 QQ2 H323 QQ2:3H32 QQ2 H331 QQ2:1H33 QQ2 H332 QQ2:2H33 QQ2 H333 QQ2:3H33 QQ2 HN1 QSI:1HN QSI HN2 QSI:2HN QSI HB1 QSI:1HB QSI HB2 QSI:2HB QSI HG1 QSI:1HG QSI HG2 QSI:2HG QSI HN21 QSI:1HN2 QSI HN22 QSI:2HN2 QSI H5'1 QSI:1H5' QSI H5'2 QSI:2H5' QSI HN61 QSI:1HN6 QSI HN62 QSI:2HN6 QSI HC71 QUA:1HC7 QUA HC72 QUA:2HC7 QUA H141 QUA:1H14 QUA H142 QUA:2H14 QUA H143 QUA:3H14 QUA H201 QUM:1H20 QUM H202 QUM:2H20 QUM H203 QUM:3H20 QUM H211 QUM:1H21 QUM H212 QUM:2H21 QUM H221 QUM:1H22 QUM H222 QUM:2H22 QUM H231 QUM:1H23 QUM H232 QUM:2H23 QUM H271 QUM:1H27 QUM H272 QUM:2H27 QUM H251 QUM:1H25 QUM H252 QUM:2H25 QUM H281 QUM:1H28 QUM H282 QUM:2H28 QUM H261 QUM:1H26 QUM H262 QUM:2H26 QUM H171 QUM:1H17 QUM H172 QUM:2H17 QUM H173 QUM:3H17 QUM H21 QUN:1H2 QUN H31 QUN:1H3 QUN H61 QUN:1H6 QUN H101 QUN:1H10 QUN H121 QUN:1H12 QUN H131 QUN:1H13 QUN H141 QUN:1H14 QUN H142 QUN:2H14 QUN H143 QUN:3H14 QUN HN21 QUN:1HN2 QUN H151 QUN:1H15 QUN H161 QUN:1H16 QUN H162 QUN:2H16 QUN H163 QUN:3H16 QUN H171 QUN:1H17 QUN H172 QUN:2H17 QUN H181 QUN:1H18 QUN H182 QUN:2H18 QUN H191 QUN:1H19 QUN H192 QUN:2H19 QUN H201 QUN:1H20 QUN H202 QUN:2H20 QUN H211 QUN:1H21 QUN H212 QUN:2H21 QUN H221 QUN:1H22 QUN H222 QUN:2H22 QUN H223 QUN:3H22 QUN H231 QUN:1H23 QUN H232 QUN:2H23 QUN H233 QUN:3H23 QUN HOP2 QUO:2HOP QUO HOP3 QUO:3HOP QUO H5' QUO:1H5* QUO H5'' QUO:2H5* QUO H4' QUO: H4* QUO H1' QUO: H1* QUO HN21 QUO:1HN2 QUO HN22 QUO:2HN2 QUO H101 QUO:1H10 QUO H102 QUO:2H10 QUO H151 QUO:1H15 QUO H152 QUO:2H15 QUO H161 QUO:1H16 QUO H162 QUO:2H16 QUO H2' QUO: H2* QUO HO2' QUO:HO2* QUO H3' QUO: H3* QUO HO3' QUO:HO3* QUO H031 QUS:1H03 QUS H032 QUS:2H03 QUS HP31 QUS:1HP3 QUS HP32 QUS:2HP3 QUS HOP2 R:2HOP R HOP3 R:3HOP R H5' R:1H5* R H5'' R:2H5* R H4' R: H4* R H3' R: H3* R HO3' R:*HO3 R H2' R:1H2* R H2'' R:2H2* R H1' R: H1* R HB1 R:1HB R HB2 R:2HB R H201 R01:1H20 R01 H202 R01:2H20 R01 H271 R01:1H27 R01 H272 R01:2H27 R01 H273 R01:3H27 R01 H251 R01:1H25 R01 H252 R01:2H25 R01 H291 R01:1H29 R01 H292 R01:2H29 R01 H151 R02:1H15 R02 H152 R02:2H15 R02 H171 R02:1H17 R02 H172 R02:2H17 R02 H191 R02:1H19 R02 H192 R02:2H19 R02 H271 R02:1H27 R02 H272 R02:2H27 R02 H251 R02:1H25 R02 H252 R02:2H25 R02 H291 R02:1H29 R02 H292 R02:2H29 R02 H3F1 R02:1H3F R02 H3F2 R02:2H3F R02 H3A1 R03:1H3A R03 H3A2 R03:2H3A R03 H1A1 R03:1H1A R03 H1A2 R03:2H1A R03 H1B1 R03:1H1B R03 H1B2 R03:2H1B R03 H2B1 R03:1H2B R03 H2B2 R03:2H2B R03 H3B1 R03:1H3B R03 H3B2 R03:2H3B R03 H4B1 R03:1H4B R03 H4B2 R03:2H4B R03 H5B1 R03:1H5B R03 H5B2 R03:2H5B R03 H6B1 R03:1H6B R03 H6B2 R03:2H6B R03 H1E1 R03:1H1E R03 H1E2 R03:2H1E R03 H1E3 R03:3H1E R03 H1F1 R03:1H1F R03 H1F2 R03:2H1F R03 H1F3 R03:3H1F R03 H3A1 R04:1H3A R04 H3A2 R04:2H3A R04 H1A1 R04:1H1A R04 H1A2 R04:2H1A R04 H1B1 R04:1H1B R04 H1B2 R04:2H1B R04 H4B1 R04:1H4B R04 H4B2 R04:2H4B R04 H1E1 R04:1H1E R04 H1E2 R04:2H1E R04 H1E3 R04:3H1E R04 H1F1 R04:1H1F R04 H1F2 R04:2H1F R04 H1F3 R04:3H1F R04 HN21 R11:1HN2 R11 HN22 R11:2HN2 R11 H10C R11:CH10 R11 H11C R11:CH11 R11 H13C R11:CH13 R11 H141 R11:1H14 R11 H142 R11:2H14 R11 H143 R11:3H14 R11 HC91 R11:1HC9 R11 HC92 R11:2HC9 R11 H19C R11:CH19 R11 H20C R11:CH20 R11 H21C R11:CH21 R11 H22C R11:CH22 R11 H231 R11:1H23 R11 H232 R11:2H23 R11 H233 R11:3H23 R11 H141 R12:1H14 R12 H142 R12:2H14 R12 H181 R12:1H18 R12 H182 R12:2H18 R12 H183 R12:3H18 R12 H191 R12:1H19 R12 H192 R12:2H19 R12 H193 R12:3H19 R12 H201 R12:1H20 R12 H202 R12:2H20 R12 H203 R12:3H20 R12 H231 R12:1H23 R12 H232 R12:2H23 R12 H233 R12:3H23 R12 H21 R13:1H2 R13 H22 R13:2H2 R13 H31 R13:1H3 R13 H32 R13:2H3 R13 H181 R13:1H18 R13 H182 R13:2H18 R13 H183 R13:3H18 R13 H191 R13:1H19 R13 H192 R13:2H19 R13 H193 R13:3H19 R13 H201 R13:1H20 R13 H202 R13:2H20 R13 H203 R13:3H20 R13 H211 R13:1H21 R13 H212 R13:2H21 R13 H213 R13:3H21 R13 H221 R13:1H22 R13 H222 R13:2H22 R13 H223 R13:3H22 R13 H231 R13:1H23 R13 H232 R13:2H23 R13 H233 R13:3H23 R13 H271 R16:1H27 R16 H272 R16:2H27 R16 H273 R16:3H27 R16 H281 R16:1H28 R16 H282 R16:2H28 R16 H291 R16:1H29 R16 H292 R16:2H29 R16 H301 R16:1H30 R16 H302 R16:2H30 R16 H311 R16:1H31 R16 H312 R16:2H31 R16 H321 R16:1H32 R16 H322 R16:2H32 R16 H331 R16:1H33 R16 H332 R16:2H33 R16 H341 R16:1H34 R16 H342 R16:2H34 R16 H351 R16:1H35 R16 H352 R16:2H35 R16 H361 R16:1H36 R16 H362 R16:2H36 R16 H371 R16:1H37 R16 H372 R16:2H37 R16 H381 R16:1H38 R16 H382 R16:2H38 R16 H391 R16:1H39 R16 H392 R16:2H39 R16 H401 R16:1H40 R16 H402 R16:2H40 R16 H411 R16:1H41 R16 H412 R16:2H41 R16 H421 R16:1H42 R16 H422 R16:2H42 R16 H423 R16:3H42 R16 H3A1 R17:1H3A R17 H3A2 R17:2H3A R17 H1A1 R17:1H1A R17 H1A2 R17:2H1A R17 H1B1 R17:1H1B R17 H1B2 R17:2H1B R17 H4B1 R17:1H4B R17 H4B2 R17:2H4B R17 H1E1 R17:1H1E R17 H1E2 R17:2H1E R17 H1E3 R17:3H1E R17 H12A R18:2H1 R18 H11A R18:1H1 R18 H22 R18:2H2 R18 H21 R18:1H2 R18 H62 R18:2H6 R18 H61 R18:1H6 R18 H72 R18:2H7 R18 H71 R18:1H7 R18 H152 R18:2H15 R18 H151 R18:1H15 R18 H162 R18:2H16 R18 H161 R18:1H16 R18 H183 R18:3H18 R18 H182 R18:2H18 R18 H181 R18:1H18 R18 H273 R18:3H27 R18 H272 R18:2H27 R18 H271 R18:1H27 R18 H1A1 R19:1H1A R19 H1A2 R19:2H1A R19 H1E1 R19:1H1E R19 H1E2 R19:2H1E R19 H1E3 R19:3H1E R19 H1B1 R19:1H1B R19 H1B2 R19:2H1B R19 H2B1 R19:1H2B R19 H2B2 R19:2H2B R19 H3B1 R19:1H3B R19 H3B2 R19:2H3B R19 H4B1 R19:1H4B R19 H4B2 R19:2H4B R19 H5B1 R19:1H5B R19 H5B2 R19:2H5B R19 H6B1 R19:1H6B R19 H6B2 R19:2H6B R19 H3A1 R19:1H3A R19 H3A2 R19:2H3A R19 H R1A:1HN R1A H2 R1A:2HN R1A HB2 R1A:1HB R1A HB3 R1A:2HB R1A HE2 R1A:1HE R1A HE3 R1A:2HE R1A H91 R1A:1H9 R1A H92 R1A:2H9 R1A H93 R1A:3H9 R1A H81 R1A:1H8 R1A H82 R1A:2H8 R1A H83 R1A:3H8 R1A H71 R1A:1H7 R1A H72 R1A:2H7 R1A H73 R1A:3H7 R1A H61 R1A:1H6 R1A H62 R1A:2H6 R1A H63 R1A:3H6 R1A H81 R1B:1H8 R1B H82 R1B:2H8 R1B H83 R1B:3H8 R1B H91 R1B:1H9 R1B H92 R1B:2H9 R1B H93 R1B:3H9 R1B H71 R1B:1H7 R1B H72 R1B:2H7 R1B H73 R1B:3H7 R1B H61 R1B:1H6 R1B H62 R1B:2H6 R1B H63 R1B:3H6 R1B H101 R1B:1H10 R1B H102 R1B:2H10 R1B H103 R1B:3H10 R1B HE3 R1B:1HE R1B HE2 R1B:2HE R1B HB3 R1B:1HB R1B HB2 R1B:2HB R1B H R1B:1HN R1B H2 R1B:2HN R1B H R1F:1HN R1F H2 R1F:2HN R1F HB2 R1F:1HB R1F HB3 R1F:2HB R1F HE2 R1F:1HE R1F HE3 R1F:2HE R1F H91 R1F:1H9 R1F H92 R1F:2H9 R1F H93 R1F:3H9 R1F H81 R1F:1H8 R1F H82 R1F:2H8 R1F H83 R1F:3H8 R1F H61 R1F:1H6 R1F H62 R1F:2H6 R1F H63 R1F:3H6 R1F H71 R1F:1H7 R1F H72 R1F:2H7 R1F H73 R1F:3H7 R1F H5'1 R1P:1H5' R1P H5'2 R1P:2H5' R1P HO5' R1P:'HO5 R1P HO2' R1P:'HO2 R1P HO3' R1P:'HO3 R1P HOP2 R1P:2HOP R1P HOP3 R1P:3HOP R1P H61 R1T:1H6 R1T H62 R1T:2H6 R1T H71 R1T:1H7 R1T H72 R1T:2H7 R1T HM41 R1T:1HM4 R1T HM42 R1T:2HM4 R1T HM43 R1T:3HM4 R1T H7'1 R1T:1H7' R1T H7'2 R1T:2H7' R1T HM21 R1T:1HM2 R1T HM22 R1T:2HM2 R1T HM23 R1T:3HM2 R1T H4'1 R1T:1H4' R1T H4'2 R1T:2H4' R1T HP21 R1T:1HP2 R1T HP22 R1T:2HP2 R1T HP23 R1T:3HP2 R1T H121 R20:1H12 R20 H122 R20:2H12 R20 H123 R20:3H12 R20 H2' R22: H2* R22 H4' R22: H4* R22 H6' R22: H6* R22 H8'1 R22:1H8* R22 H8'2 R22:2H8* R22 H8'3 R22:3H8* R22 H9'1 R22:1H9* R22 H9'2 R22:2H9* R22 H9'3 R22:3H9* R22 H71 R22:1H7 R22 H72 R22:2H7 R22 H73 R22:3H7 R22 H101 R22:1H10 R22 H102 R22:2H10 R22 H121 R22:1H12 R22 H122 R22:2H12 R22 H4E1 R23:1H4E R23 H4E2 R23:2H4E R23 H5E1 R23:1H5E R23 H5E2 R23:2H5E R23 H6E1 R23:1H6E R23 H6E2 R23:2H6E R23 H2E1 R23:1H2E R23 H2E2 R23:2H2E R23 H3E1 R23:1H3E R23 H3E2 R23:2H3E R23 H1D1 R23:1H1D R23 H1D2 R23:2H1D R23 H3B1 R23:1H3B R23 H3B2 R23:2H3B R23 H2B1 R23:1H2B R23 H2B2 R23:2H2B R23 H6B1 R23:1H6B R23 H6B2 R23:2H6B R23 H5B1 R23:1H5B R23 H5B2 R23:2H5B R23 H1A1 R23:1H1A R23 H1A2 R23:2H1A R23 H1A3 R23:3H1A R23 H1'1 R2B:1H1' R2B H1'2 R2B:2H1' R2B H5'1 R2B:1H5' R2B H5'2 R2B:2H5' R2B HO'5 R2B:5HO' R2B H111 R2C:1H11 R2C H112 R2C:2H11 R2C H113 R2C:3H11 R2C H101 R36:1H10 R36 H131 R36:1H13 R36 H141 R36:1H14 R36 H31 R36:1H3 R36 H32 R36:2H3 R36 H33 R36:3H3 R36 H21 R36:1H2 R36 H22 R36:2H2 R36 H23 R36:3H2 R36 H261 R36:1H26 R36 H271 R36:1H27 R36 H281 R36:1H28 R36 H11 R36:1H1 R36 H12 R36:2H1 R36 H301 R36:1H30 R36 H341 R36:1H34 R36 H342 R36:2H34 R36 H161 R36:1H16 R36 H151 R36:1H15 R36 H14O R36:OH14 R36 H121 R36:1H12 R36 H122 R36:2H12 R36 H41 R36:1H4 R36 H51 R36:1H5 R36 H52 R36:2H5 R36 H61 R36:1H6 R36 H111 R36:1H11 R36 H112 R36:2H11 R36 H113 R36:3H11 R36 H71 R36:1H7 R36 H72 R36:2H7 R36 H73 R36:3H7 R36 HN31 R36:1HN3 R36 H171 R36:1H17 R36 H181 R36:1H18 R36 H182 R36:2H18 R36 H201 R36:1H20 R36 H211 R36:1H21 R36 H221 R36:1H22 R36 H231 R36:1H23 R36 H241 R36:1H24 R36 H101 R37:1H10 R37 H131 R37:1H13 R37 H141 R37:1H14 R37 H31 R37:1H3 R37 H32 R37:2H3 R37 H33 R37:3H3 R37 H21 R37:1H2 R37 H22 R37:2H2 R37 H23 R37:3H2 R37 H261 R37:1H26 R37 H271 R37:1H27 R37 H291 R37:1H29 R37 H11 R37:1H1 R37 H12 R37:2H1 R37 H301 R37:1H30 R37 H341 R37:1H34 R37 H342 R37:2H34 R37 H161 R37:1H16 R37 H151 R37:1H15 R37 H14O R37:OH14 R37 H121 R37:1H12 R37 H122 R37:2H12 R37 H41 R37:1H4 R37 H51 R37:1H5 R37 H52 R37:2H5 R37 H61 R37:1H6 R37 H111 R37:1H11 R37 H112 R37:2H11 R37 H113 R37:3H11 R37 H71 R37:1H7 R37 H72 R37:2H7 R37 H73 R37:3H7 R37 HN31 R37:1HN3 R37 H171 R37:1H17 R37 H181 R37:1H18 R37 H182 R37:2H18 R37 H201 R37:1H20 R37 H211 R37:1H21 R37 H221 R37:1H22 R37 H231 R37:1H23 R37 H241 R37:1H24 R37 H3A1 R46:1H3A R46 H3A2 R46:2H3A R46 H1A1 R46:1H1A R46 H1A2 R46:2H1A R46 H1B1 R46:1H1B R46 H1B2 R46:2H1B R46 H2B1 R46:1H2B R46 H2B2 R46:2H2B R46 H3B1 R46:1H3B R46 H3B2 R46:2H3B R46 H4B1 R46:1H4B R46 H4B2 R46:2H4B R46 H5B1 R46:1H5B R46 H5B2 R46:2H5B R46 H6B1 R46:1H6B R46 H6B2 R46:2H6B R46 H1F1 R46:1H1F R46 H1F2 R46:2H1F R46 H1F3 R46:3H1F R46 HM23 R4A:3HM2 R4A HM22 R4A:2HM2 R4A HM21 R4A:1HM2 R4A HM13 R4A:3HM1 R4A HM12 R4A:2HM1 R4A HM11 R4A:1HM1 R4A HL41 R4A:1HL4 R4A HL42 R4A:2HL4 R4A HL31 R4A:1HL3 R4A HL32 R4A:2HL3 R4A HL21 R4A:1HL2 R4A HL22 R4A:2HL2 R4A HL11 R4A:1HL1 R4A HL12 R4A:2HL1 R4A HAN1 R4A:1HAN R4A HCK1 R4A:1HCK R4A HCJ1 R4A:1HCJ R4A HCE1 R4A:1HCE R4A HCD1 R4A:1HCD R4A HCC1 R4A:1HCC R4A HCB1 R4A:1HCB R4A HBK1 R4A:1HBK R4A HBJ1 R4A:1HBJ R4A HBI1 R4A:1HBI R4A HBH1 R4A:1HBH R4A HBE1 R4A:1HBE R4A HBD1 R4A:1HBD R4A HBC1 R4A:1HBC R4A HBB1 R4A:1HBB R4A H321 R55:1H32 R55 H322 R55:2H32 R55 H341 R55:1H34 R55 H342 R55:2H34 R55 H351 R55:1H35 R55 H352 R55:2H35 R55 H361 R55:1H36 R55 H362 R55:2H36 R55 H921 R55:1H92 R55 H922 R55:2H92 R55 H931 R55:1H93 R55 H932 R55:2H93 R55 H971 R55:1H97 R55 H972 R55:2H97 R55 H973 R55:3H97 R55 H981 R55:1H98 R55 H982 R55:2H98 R55 H983 R55:3H98 R55 H951 R55:1H95 R55 H952 R55:2H95 R55 H961 R55:1H96 R55 H962 R55:2H96 R55 H121 R56:1H12 R56 H122 R56:2H12 R56 H271 R56:1H27 R56 H272 R56:2H27 R56 H301 R56:1H30 R56 H302 R56:2H30 R56 H341 R56:1H34 R56 H342 R56:2H34 R56 H431 R56:1H43 R56 H432 R56:2H43 R56 H461 R56:1H46 R56 H462 R56:2H46 R56 H491 R56:1H49 R56 H492 R56:2H49 R56 HN51 R56:1HN5 R56 HN52 R56:2HN5 R56 HM23 R5A:3HM2 R5A HM22 R5A:2HM2 R5A HM21 R5A:1HM2 R5A HM13 R5A:3HM1 R5A HM12 R5A:2HM1 R5A HM11 R5A:1HM1 R5A HL51 R5A:1HL5 R5A HL52 R5A:2HL5 R5A HL41 R5A:1HL4 R5A HL42 R5A:2HL4 R5A HL31 R5A:1HL3 R5A HL32 R5A:2HL3 R5A HL21 R5A:1HL2 R5A HL22 R5A:2HL2 R5A HL11 R5A:1HL1 R5A HL12 R5A:2HL1 R5A HCK1 R5A:1HCK R5A HCJ1 R5A:1HCJ R5A HCE1 R5A:1HCE R5A HCD1 R5A:1HCD R5A HCC1 R5A:1HCC R5A HCB1 R5A:1HCB R5A HBK1 R5A:1HBK R5A HBJ1 R5A:1HBJ R5A HBI1 R5A:1HBI R5A HBH1 R5A:1HBH R5A HBE1 R5A:1HBE R5A HBD1 R5A:1HBD R5A HBC1 R5A:1HBC R5A HBB1 R5A:1HBB R5A HM23 R5B:3HM2 R5B HM22 R5B:2HM2 R5B HM21 R5B:1HM2 R5B HM13 R5B:3HM1 R5B HM12 R5B:2HM1 R5B HM11 R5B:1HM1 R5B HL51 R5B:1HL5 R5B HL52 R5B:2HL5 R5B HL41 R5B:1HL4 R5B HL42 R5B:2HL4 R5B HL31 R5B:1HL3 R5B HL32 R5B:2HL3 R5B HL21 R5B:1HL2 R5B HL22 R5B:2HL2 R5B HL11 R5B:1HL1 R5B HL12 R5B:2HL1 R5B HCK1 R5B:1HCK R5B HCJ1 R5B:1HCJ R5B HCE1 R5B:1HCE R5B HCD1 R5B:1HCD R5B HCC1 R5B:1HCC R5B HCB1 R5B:1HCB R5B HBK1 R5B:1HBK R5B HBJ1 R5B:1HBJ R5B HBI1 R5B:1HBI R5B HBH1 R5B:1HBH R5B HBE1 R5B:1HBE R5B HBD1 R5B:1HBD R5B HBC1 R5B:1HBC R5B HBB1 R5B:1HBB R5B HOP2 R5P:2HOP R5P HOP3 R5P:3HOP R5P H301 R64:1H30 R64 H302 R64:2H30 R64 H303 R64:3H30 R64 H111 R64:1H11 R64 H112 R64:2H11 R64 H113 R64:3H11 R64 H131 R64:1H13 R64 H132 R64:2H13 R64 H141 R64:1H14 R64 H142 R64:2H14 R64 H151 R64:1H15 R64 H152 R64:2H15 R64 H171 R64:1H17 R64 H172 R64:2H17 R64 H321 R68:1H32 R68 H322 R68:2H32 R68 H341 R68:1H34 R68 H342 R68:2H34 R68 H351 R68:1H35 R68 H352 R68:2H35 R68 H361 R68:1H36 R68 H362 R68:2H36 R68 H971 R68:1H97 R68 H972 R68:2H97 R68 H973 R68:3H97 R68 H981 R68:1H98 R68 H982 R68:2H98 R68 H983 R68:3H98 R68 H931 R68:1H93 R68 H932 R68:2H93 R68 H941 R68:1H94 R68 H942 R68:2H94 R68 H951 R68:1H95 R68 H952 R68:2H95 R68 H321 R69:1H32 R69 H322 R69:2H32 R69 H341 R69:1H34 R69 H342 R69:2H34 R69 H351 R69:1H35 R69 H352 R69:2H35 R69 H361 R69:1H36 R69 H362 R69:2H36 R69 H981 R69:1H98 R69 H982 R69:2H98 R69 H983 R69:3H98 R69 H991 R69:1H99 R69 H992 R69:2H99 R69 H993 R69:3H99 R69 HM23 R6A:3HM2 R6A HM22 R6A:2HM2 R6A HM21 R6A:1HM2 R6A HM13 R6A:3HM1 R6A HM12 R6A:2HM1 R6A HM11 R6A:1HM1 R6A HL61 R6A:1HL6 R6A HL62 R6A:2HL6 R6A HL51 R6A:1HL5 R6A HL52 R6A:2HL5 R6A HL41 R6A:1HL4 R6A HL42 R6A:2HL4 R6A HL31 R6A:1HL3 R6A HL32 R6A:2HL3 R6A HCK1 R6A:1HCK R6A HCJ1 R6A:1HCJ R6A HCE1 R6A:1HCE R6A HCD1 R6A:1HCD R6A HCC1 R6A:1HCC R6A HCB1 R6A:1HCB R6A HBK1 R6A:1HBK R6A HL21 R6A:1HL2 R6A HL22 R6A:2HL2 R6A HBJ1 R6A:1HBJ R6A HBI1 R6A:1HBI R6A HL11 R6A:1HL1 R6A HL12 R6A:2HL1 R6A HBH1 R6A:1HBH R6A HBE1 R6A:1HBE R6A HBD1 R6A:1HBD R6A HBC1 R6A:1HBC R6A HBB1 R6A:1HBB R6A HAQ1 R6C:1HAQ R6C HAQ2 R6C:2HAQ R6C HAK1 R6C:1HAK R6C HAK2 R6C:2HAK R6C HAI1 R6C:1HAI R6C HAI2 R6C:2HAI R6C HAI3 R6C:3HAI R6C HAY1 R6C:1HAY R6C HAY2 R6C:2HAY R6C HAY3 R6C:3HAY R6C HBA1 R6C:1HBA R6C HBA2 R6C:2HBA R6C HBA3 R6C:3HBA R6C HAD1 R6C:1HAD R6C HAD2 R6C:2HAD R6C HC1 R6G:1HC R6G HC2 R6G:2HC R6G H281 R6G:1H28 R6G H282 R6G:2H28 R6G H311 R6G:1H31 R6G H312 R6G:2H31 R6G H291 R6G:1H29 R6G H292 R6G:2H29 R6G H211 R6G:1H21 R6G H212 R6G:2H21 R6G H213 R6G:3H21 R6G H201 R6G:1H20 R6G H202 R6G:2H20 R6G H203 R6G:3H20 R6G H241 R6G:1H24 R6G H242 R6G:2H24 R6G H251 R6G:1H25 R6G H252 R6G:2H25 R6G H261 R6G:1H26 R6G H262 R6G:2H26 R6G H271 R6G:1H27 R6G H272 R6G:2H27 R6G H301 R6G:1H30 R6G H302 R6G:2H30 R6G H303 R6G:3H30 R6G H321 R6G:1H32 R6G H322 R6G:2H32 R6G H323 R6G:3H32 R6G HO1 R6G:1HO R6G H151 R71:1H15 R71 H152 R71:2H15 R71 H161 R71:1H16 R71 H162 R71:2H16 R71 H171 R71:1H17 R71 H172 R71:2H17 R71 H181 R71:1H18 R71 H182 R71:2H18 R71 H191 R71:1H19 R71 H192 R71:2H19 R71 H201 R71:1H20 R71 H202 R71:2H20 R71 H271 R71:1H27 R71 H272 R71:2H27 R71 H273 R71:3H27 R71 H251 R71:1H25 R71 H252 R71:2H25 R71 H291 R71:1H29 R71 H292 R71:2H29 R71 H3A1 R79:1H3A R79 H3A2 R79:2H3A R79 H1A1 R79:1H1A R79 H1A2 R79:2H1A R79 H1B1 R79:1H1B R79 H1B2 R79:2H1B R79 H2B1 R79:1H2B R79 H2B2 R79:2H2B R79 H3B1 R79:1H3B R79 H3B2 R79:2H3B R79 H4B1 R79:1H4B R79 H4B2 R79:2H4B R79 H5B1 R79:1H5B R79 H5B2 R79:2H5B R79 H6B1 R79:1H6B R79 H6B2 R79:2H6B R79 H1F1 R79:1H1F R79 H1F2 R79:2H1F R79 H1F3 R79:3H1F R79 H R7A:1HN R7A H2 R7A:2HN R7A HB2 R7A:1HB R7A HB3 R7A:2HB R7A HE2 R7A:1HE R7A HE3 R7A:2HE R7A H91 R7A:1H9 R7A H92 R7A:2H9 R7A H93 R7A:3H9 R7A H81 R7A:1H8 R7A H82 R7A:2H8 R7A H83 R7A:3H8 R7A H61 R7A:1H6 R7A H62 R7A:2H6 R7A H63 R7A:3H6 R7A H71 R7A:1H7 R7A H72 R7A:2H7 R7A H73 R7A:3H7 R7A HM23 R7U:3HM2 R7U HM22 R7U:2HM2 R7U HM21 R7U:1HM2 R7U HM13 R7U:3HM1 R7U HM12 R7U:2HM1 R7U HM11 R7U:1HM1 R7U HL71 R7U:1HL7 R7U HL72 R7U:2HL7 R7U HL61 R7U:1HL6 R7U HL62 R7U:2HL6 R7U HL51 R7U:1HL5 R7U HL52 R7U:2HL5 R7U HL41 R7U:1HL4 R7U HL42 R7U:2HL4 R7U HCK1 R7U:1HCK R7U HCJ1 R7U:1HCJ R7U HCE1 R7U:1HCE R7U HCD1 R7U:1HCD R7U HCC1 R7U:1HCC R7U HCB1 R7U:1HCB R7U HBK1 R7U:1HBK R7U HL31 R7U:1HL3 R7U HL32 R7U:2HL3 R7U HBJ1 R7U:1HBJ R7U HBI1 R7U:1HBI R7U HL11 R7U:1HL1 R7U HL12 R7U:2HL1 R7U HL21 R7U:1HL2 R7U HL22 R7U:2HL2 R7U HBH1 R7U:1HBH R7U HBE1 R7U:1HBE R7U HBD1 R7U:1HBD R7U HBC1 R7U:1HBC R7U HBB1 R7U:1HBB R7U H481 R86:1H48 R86 H482 R86:2H48 R86 H483 R86:3H48 R86 H381 R86:1H38 R86 H382 R86:2H38 R86 H371 R86:1H37 R86 H372 R86:2H37 R86 H321 R86:1H32 R86 H322 R86:2H32 R86 H261 R86:1H26 R86 H262 R86:2H26 R86 H311 R86:1H31 R86 H312 R86:2H31 R86 H313 R86:3H31 R86 H301 R86:1H30 R86 H302 R86:2H30 R86 H303 R86:3H30 R86 H231 R86:1H23 R86 H232 R86:2H23 R86 H221 R86:1H22 R86 H222 R86:2H22 R86 H171 R86:1H17 R86 H172 R86:2H17 R86 H173 R86:3H17 R86 H151 R88:1H15 R88 H152 R88:2H15 R88 H201 R88:1H20 R88 H202 R88:2H20 R88 H271 R88:1H27 R88 H272 R88:2H27 R88 H273 R88:3H27 R88 H261 R88:1H26 R88 H262 R88:2H26 R88 H3E1 R88:1H3E R88 H3E2 R88:2H3E R88 H921 R94:1H92 R94 H922 R94:2H92 R94 H931 R94:1H93 R94 H932 R94:2H93 R94 H941 R94:1H94 R94 H942 R94:2H94 R94 H951 R94:1H95 R94 H952 R94:2H95 R94 H961 R94:1H96 R94 H962 R94:2H96 R94 H361 R94:1H36 R94 H362 R94:2H36 R94 H351 R94:1H35 R94 H352 R94:2H35 R94 H341 R94:1H34 R94 H342 R94:2H34 R94 H321 R94:1H32 R94 H322 R94:2H32 R94 H321 R96:1H32 R96 H322 R96:2H32 R96 H341 R96:1H34 R96 H342 R96:2H34 R96 H351 R96:1H35 R96 H352 R96:2H35 R96 H361 R96:1H36 R96 H362 R96:2H36 R96 H921 R96:1H92 R96 H922 R96:2H92 R96 H931 R96:1H93 R96 H932 R96:2H93 R96 H941 R96:1H94 R96 H942 R96:2H94 R96 H971 R96:1H97 R96 H972 R96:2H97 R96 H973 R96:3H97 R96 H981 R96:1H98 R96 H982 R96:2H98 R96 H983 R96:3H98 R96 H961 R96:1H96 R96 H962 R96:2H96 R96 H21 R99:1H2 R99 H22 R99:2H2 R99 H31 R99:1H3 R99 H101 R99:1H10 R99 H121 R99:1H12 R99 H122 R99:2H12 R99 H131 R99:1H13 R99 H132 R99:2H13 R99 H151 R99:1H15 R99 H161 R99:1H16 R99 H171 R99:1H17 R99 H181 R99:1H18 R99 H191 R99:1H19 R99 H211 R99:1H21 R99 H212 R99:2H21 R99 H221 R99:1H22 R99 H222 R99:2H22 R99 H231 R99:1H23 R99 H251 R99:1H25 R99 H252 R99:2H25 R99 H253 R99:3H25 R99 H241 R99:1H24 R99 H242 R99:2H24 R99 H243 R99:3H24 R99 HM23 R9A:3HM2 R9A HM22 R9A:2HM2 R9A HM21 R9A:1HM2 R9A HM13 R9A:3HM1 R9A HM12 R9A:2HM1 R9A HM11 R9A:1HM1 R9A HL91 R9A:1HL9 R9A HL92 R9A:2HL9 R9A HL81 R9A:1HL8 R9A HL82 R9A:2HL8 R9A HL71 R9A:1HL7 R9A HL72 R9A:2HL7 R9A HL61 R9A:1HL6 R9A HL62 R9A:2HL6 R9A HCK1 R9A:1HCK R9A HCJ1 R9A:1HCJ R9A HCE1 R9A:1HCE R9A HCD1 R9A:1HCD R9A HCC1 R9A:1HCC R9A HCB1 R9A:1HCB R9A HBK1 R9A:1HBK R9A HL51 R9A:1HL5 R9A HL52 R9A:2HL5 R9A HBJ1 R9A:1HBJ R9A HBI1 R9A:1HBI R9A HL31 R9A:1HL3 R9A HL32 R9A:2HL3 R9A HL21 R9A:1HL2 R9A HL22 R9A:2HL2 R9A HL41 R9A:1HL4 R9A HL42 R9A:2HL4 R9A HL11 R9A:1HL1 R9A HL12 R9A:2HL1 R9A HBH1 R9A:1HBH R9A HBE1 R9A:1HBE R9A HBD1 R9A:1HBD R9A HBC1 R9A:1HBC R9A HBB1 R9A:1HBB R9A H141 RA2:1H14 RA2 H142 RA2:2H14 RA2 H151 RA2:1H15 RA2 H152 RA2:2H15 RA2 H153 RA2:3H15 RA2 H211 RA2:1H21 RA2 H212 RA2:2H21 RA2 H231 RA2:1H23 RA2 H232 RA2:2H23 RA2 H233 RA2:3H23 RA2 H301 RA2:1H30 RA2 H302 RA2:2H30 RA2 H311 RA2:1H31 RA2 H312 RA2:2H31 RA2 H381 RA2:1H38 RA2 H282 RA2:2H28 RA2 H421 RA2:1H42 RA2 H422 RA2:2H42 RA2 H221 RA4:1H22 RA4 H222 RA4:2H22 RA4 H201 RA4:1H20 RA4 H202 RA4:2H20 RA4 H203 RA4:3H20 RA4 H191 RA4:1H19 RA4 H192 RA4:2H19 RA4 H193 RA4:3H19 RA4 H151 RA4:1H15 RA4 H152 RA4:2H15 RA4 H141 RA4:1H14 RA4 H142 RA4:2H14 RA4 H131 RA4:1H13 RA4 H132 RA4:2H13 RA4 H81 RA4:1H8 RA4 H82 RA4:2H8 RA4 H71 RA4:1H7 RA4 H72 RA4:2H7 RA4 H61 RA4:1H6 RA4 H62 RA4:2H6 RA4 H51 RA4:1H5 RA4 H52 RA4:2H5 RA4 HN31 RA4:1HN3 RA4 HN32 RA4:2HN3 RA4 HN31 RA8:1HN3 RA8 HN32 RA8:2HN3 RA8 H61 RA8:1H6 RA8 H62 RA8:2H6 RA8 H71 RA8:1H7 RA8 H72 RA8:2H7 RA8 H81 RA8:1H8 RA8 H82 RA8:2H8 RA8 H91 RA8:1H9 RA8 H92 RA8:2H9 RA8 H271 RA8:1H27 RA8 H272 RA8:2H27 RA8 H201 RA8:1H20 RA8 H202 RA8:2H20 RA8 H231 RA8:1H23 RA8 H232 RA8:2H23 RA8 H233 RA8:3H23 RA8 H221 RA8:1H22 RA8 H222 RA8:2H22 RA8 H223 RA8:3H22 RA8 H171 RA8:1H17 RA8 H172 RA8:2H17 RA8 H131 RA8:1H13 RA8 H132 RA8:2H13 RA8 H141 RA8:1H14 RA8 H142 RA8:2H14 RA8 HC61 RAA:1HC6 RAA HC62 RAA:2HC6 RAA HC63 RAA:3HC6 RAA H5'1 RAB:1H5' RAB H5'2 RAB:2H5' RAB HN61 RAB:1HN6 RAB HN62 RAB:2HN6 RAB HC81 RAC:1HC8 RAC HC82 RAC:2HC8 RAC HC83 RAC:3HC8 RAC HC91 RAC:1HC9 RAC HC92 RAC:2HC9 RAC HC93 RAC:3HC9 RAC H111 RAC:1H11 RAC H112 RAC:2H11 RAC H13C RAC:CH13 RAC H14C RAC:CH14 RAC H16C RAC:CH16 RAC H17C RAC:CH17 RAC H31 RAD:1H3 RAD H32 RAD:2H3 RAD H41 RAD:1H4 RAD H42 RAD:2H4 RAD H51 RAD:1H5 RAD H52 RAD:2H5 RAD H61 RAD:1H6 RAD H62 RAD:2H6 RAD H111 RAD:1H11 RAD H112 RAD:2H11 RAD H121 RAD:1H12 RAD H122 RAD:2H12 RAD H141 RAD:1H14 RAD H142 RAD:2H14 RAD H231 RAD:1H23 RAD H232 RAD:2H23 RAD H321 RAD:1H32 RAD H322 RAD:2H32 RAD H351 RAD:1H35 RAD H352 RAD:2H35 RAD H371 RAD:1H37 RAD H372 RAD:2H37 RAD H401 RAD:1H40 RAD H402 RAD:2H40 RAD H411 RAD:1H41 RAD H412 RAD:2H41 RAD H421 RAD:1H42 RAD H422 RAD:2H42 RAD H423 RAD:3H42 RAD H431 RAD:1H43 RAD H432 RAD:2H43 RAD H433 RAD:3H43 RAD H441 RAD:1H44 RAD H442 RAD:2H44 RAD H443 RAD:3H44 RAD H451 RAD:1H45 RAD H452 RAD:2H45 RAD H453 RAD:3H45 RAD H461 RAD:1H46 RAD H462 RAD:2H46 RAD H463 RAD:3H46 RAD H471 RAD:1H47 RAD H472 RAD:2H47 RAD H473 RAD:3H47 RAD H481 RAD:1H48 RAD H482 RAD:2H48 RAD H483 RAD:3H48 RAD H491 RAD:1H49 RAD H492 RAD:2H49 RAD H501 RAD:1H50 RAD H502 RAD:2H50 RAD H503 RAD:3H50 RAD H511 RAD:1H51 RAD H512 RAD:2H51 RAD H513 RAD:3H51 RAD H521 RAD:1H52 RAD H522 RAD:2H52 RAD H523 RAD:3H52 RAD HC21 RAE:1HC2 RAE HC22 RAE:2HC2 RAE HC61 RAE:1HC6 RAE HC62 RAE:2HC6 RAE HC63 RAE:3HC6 RAE H261 RAG:1H26 RAG H262 RAG:2H26 RAG H263 RAG:3H26 RAG H201 RAG:1H20 RAG H202 RAG:2H20 RAG H191 RAG:1H19 RAG H192 RAG:2H19 RAG H181 RAG:1H18 RAG H182 RAG:2H18 RAG H311 RAG:1H31 RAG H312 RAG:2H31 RAG H313 RAG:3H31 RAG H121 RAG:1H12 RAG H122 RAG:2H12 RAG H123 RAG:3H12 RAG H561 RAG:1H56 RAG H562 RAG:2H56 RAG H481 RAG:1H48 RAG H482 RAG:2H48 RAG H391 RAG:1H39 RAG H392 RAG:2H39 RAG H141 RAI:1H14 RAI H142 RAI:2H14 RAI H171 RAI:1H17 RAI H172 RAI:2H17 RAI H181 RAI:1H18 RAI H182 RAI:2H18 RAI H241 RAI:1H24 RAI H242 RAI:2H24 RAI H281 RAI:1H28 RAI H282 RAI:2H28 RAI H281 RAJ:1H28 RAJ H282 RAJ:2H28 RAJ H283 RAJ:3H28 RAJ H291 RAJ:1H29 RAJ H292 RAJ:2H29 RAJ H293 RAJ:3H29 RAJ H271 RAJ:1H27 RAJ H272 RAJ:2H27 RAJ H261 RAJ:1H26 RAJ H262 RAJ:2H26 RAJ H251 RAJ:1H25 RAJ H252 RAJ:2H25 RAJ H161 RAJ:1H16 RAJ H162 RAJ:2H16 RAJ H163 RAJ:3H16 RAJ H241 RAL:1H24 RAL H242 RAL:2H24 RAL H251 RAL:1H25 RAL H252 RAL:2H25 RAL H271 RAL:1H27 RAL H272 RAL:2H27 RAL H281 RAL:1H28 RAL H282 RAL:2H28 RAL H291 RAL:1H29 RAL H292 RAL:2H29 RAL H301 RAL:1H30 RAL H302 RAL:2H30 RAL H311 RAL:1H31 RAL H312 RAL:2H31 RAL H61 RAM:1H6 RAM H62 RAM:2H6 RAM H63 RAM:3H6 RAM H81 RAN:1H8 RAN H82 RAN:2H8 RAN H83 RAN:3H8 RAN H61 RAN:1H6 RAN H62 RAN:2H6 RAN HC71 RAO:1HC7 RAO HC72 RAO:2HC7 RAO HC73 RAO:3HC7 RAO HC61 RAO:1HC6 RAO HC62 RAO:2HC6 RAO HC63 RAO:3HC6 RAO H31A RAP:1H3 RAP H32 RAP:2H3 RAP H41 RAP:1H4 RAP H42 RAP:2H4 RAP H51 RAP:1H5 RAP H52 RAP:2H5 RAP H61 RAP:1H6 RAP H62 RAP:2H6 RAP H121 RAP:1H12 RAP H122 RAP:2H12 RAP H131 RAP:1H13 RAP H132 RAP:2H13 RAP H151 RAP:1H15 RAP H152 RAP:2H15 RAP H241 RAP:1H24 RAP H242 RAP:2H24 RAP H331 RAP:1H33 RAP H332 RAP:2H33 RAP H361 RAP:1H36 RAP H362 RAP:2H36 RAP H381 RAP:1H38 RAP H382 RAP:2H38 RAP H411 RAP:1H41 RAP H412 RAP:2H41 RAP H421 RAP:1H42 RAP H422 RAP:2H42 RAP H431 RAP:1H43 RAP H432 RAP:2H43 RAP H433 RAP:3H43 RAP H441 RAP:1H44 RAP H442 RAP:2H44 RAP H443 RAP:3H44 RAP H451 RAP:1H45 RAP H452 RAP:2H45 RAP H453 RAP:3H45 RAP H461 RAP:1H46 RAP H462 RAP:2H46 RAP H463 RAP:3H46 RAP H471 RAP:1H47 RAP H472 RAP:2H47 RAP H473 RAP:3H47 RAP H481 RAP:1H48 RAP H482 RAP:2H48 RAP H483 RAP:3H48 RAP H491 RAP:1H49 RAP H492 RAP:2H49 RAP H493 RAP:3H49 RAP H501 RAP:1H50 RAP H502 RAP:2H50 RAP H503 RAP:3H50 RAP H511 RAP:1H51 RAP H512 RAP:2H51 RAP H513 RAP:3H51 RAP H521 RAP:1H52 RAP H522 RAP:2H52 RAP H523 RAP:3H52 RAP H111 RAS:1H11 RAS H112 RAS:2H11 RAS H11 RAS:1H1 RAS H12 RAS:2H1 RAS H21 RAS:1H2 RAS H22 RAS:2H2 RAS H021 RAZ:1H02 RAZ H022 RAZ:2H02 RAZ H031 RAZ:1H03 RAZ H032 RAZ:2H03 RAZ H071 RAZ:1H07 RAZ H072 RAZ:2H07 RAZ H101 RAZ:1H10 RAZ H102 RAZ:2H10 RAZ H111 RAZ:1H11 RAZ H112 RAZ:2H11 RAZ H171 RAZ:1H17 RAZ H172 RAZ:2H17 RAZ H173 RAZ:3H17 RAZ H181 RAZ:1H18 RAZ H182 RAZ:2H18 RAZ H183 RAZ:3H18 RAZ H191 RAZ:1H19 RAZ H192 RAZ:2H19 RAZ H193 RAZ:3H19 RAZ H321 RAZ:1H32 RAZ H322 RAZ:2H32 RAZ H323 RAZ:3H32 RAZ H201 RB1:1H20 RB1 H202 RB1:2H20 RB1 H203 RB1:3H20 RB1 H211 RB1:1H21 RB1 H212 RB1:2H21 RB1 H213 RB1:3H21 RB1 H221 RB1:1H22 RB1 H222 RB1:2H22 RB1 H223 RB1:3H22 RB1 H101 RB1:1H10 RB1 H102 RB1:2H10 RB1 H111 RB1:1H11 RB1 H112 RB1:2H11 RB1 H111 RB2:1H11 RB2 H112 RB2:2H11 RB2 H113 RB2:3H11 RB2 H41 RB2:1H4 RB2 H42 RB2:2H4 RB2 H21 RB2:1H2 RB2 H22 RB2:2H2 RB2 H11 RB2:1H1 RB2 H12A RB2:2H1 RB2 H2A1 RB3:1H2A RB3 H2A2 RB3:2H2A RB3 H4A1 RB3:1H4A RB3 H4A2 RB3:2H4A RB3 H4A3 RB3:3H4A RB3 H2B1 RB3:1H2B RB3 H2B2 RB3:2H2B RB3 H4B1 RB3:1H4B RB3 H4B2 RB3:2H4B RB3 H4B3 RB3:3H4B RB3 H2C1 RB3:1H2C RB3 H2C2 RB3:2H2C RB3 H4C1 RB3:1H4C RB3 H4C2 RB3:2H4C RB3 H4C3 RB3:3H4C RB3 H11 RB3:1H1 RB3 H12 RB3:2H1 RB3 H13 RB3:3H1 RB3 H111 RBC:1H11 RBC H112 RBC:2H11 RBC H121 RBC:1H12 RBC H122 RBC:2H12 RBC H71 RBC:1H7 RBC H72 RBC:2H7 RBC H211 RBC:1H21 RBC H212 RBC:2H21 RBC H411 RBC:1H41 RBC H412 RBC:2H41 RBC H413 RBC:3H41 RBC H1D1 RBC:1H1D RBC H1D2 RBC:2H1D RBC H41 RBE:1H4 RBE H42 RBE:2H4 RBE H61 RBE:1H6 RBE H62 RBE:2H6 RBE H71 RBE:1H7 RBE H72 RBE:2H7 RBE HN11 RBE:1HN1 RBE HN12 RBE:2HN1 RBE HC71 RBF:1HC7 RBF HC72 RBF:2HC7 RBF HC73 RBF:3HC7 RBF HC81 RBF:1HC8 RBF HC82 RBF:2HC8 RBF HC83 RBF:3HC8 RBF HC11 RBF:1HC1 RBF HC12 RBF:2HC1 RBF HC2' RBF:HC2* RBF HO2' RBF:HO2* RBF HC3' RBF:HC3* RBF HO3' RBF:HO3* RBF HC4' RBF:HC4* RBF HO4' RBF:HO4* RBF HC51 RBF:1HC5 RBF HC52 RBF:2HC5 RBF HO5' RBF:HO5* RBF H121 RBI:1H12 RBI H122 RBI:2H12 RBI H111 RBI:1H11 RBI H112 RBI:2H11 RBI H81 RBI:1H8 RBI H82 RBI:2H8 RBI H83 RBI:3H8 RBI H151 RBI:1H15 RBI H152 RBI:2H15 RBI H141 RBI:1H14 RBI H142 RBI:2H14 RBI H121 RBP:1H12 RBP H122 RBP:2H12 RBP H111 RBP:1H11 RBP H112 RBP:2H11 RBP H151 RBP:1H15 RBP H152 RBP:2H15 RBP H141 RBP:1H14 RBP H142 RBP:2H14 RBP H111 RBS:1H11 RBS H511 RBS:1H51 RBS H512 RBS:2H51 RBS H131 RBT:1H13 RBT H132 RBT:2H13 RBT H133 RBT:3H13 RBT H141 RBT:1H14 RBT H142 RBT:2H14 RBT H143 RBT:3H14 RBT H301 RBT:1H30 RBT H302 RBT:2H30 RBT H303 RBT:3H30 RBT H311 RBT:1H31 RBT H312 RBT:2H31 RBT H313 RBT:3H31 RBT H321 RBT:1H32 RBT H322 RBT:2H32 RBT H323 RBT:3H32 RBT H331 RBT:1H33 RBT H332 RBT:2H33 RBT H333 RBT:3H33 RBT H341 RBT:1H34 RBT H342 RBT:2H34 RBT H343 RBT:3H34 RBT H361 RBT:1H36 RBT H362 RBT:2H36 RBT H363 RBT:3H36 RBT H371 RBT:1H37 RBT H372 RBT:2H37 RBT H373 RBT:3H37 RBT H391 RBT:1H39 RBT H392 RBT:2H39 RBT H401 RBT:1H40 RBT H402 RBT:2H40 RBT H411 RBT:1H41 RBT H412 RBT:2H41 RBT H421 RBT:1H42 RBT H422 RBT:2H42 RBT H431 RBT:1H43 RBT H432 RBT:2H43 RBT H451 RBT:1H45 RBT H452 RBT:2H45 RBT H453 RBT:3H45 RBT H461 RBT:1H46 RBT H462 RBT:2H46 RBT H463 RBT:3H46 RBT H81 RBZ:1H8 RBZ H82 RBZ:2H8 RBZ H83 RBZ:3H8 RBZ H91 RBZ:1H9 RBZ H92 RBZ:2H9 RBZ H93 RBZ:3H9 RBZ HOP2 RBZ:2HOP RBZ HOP3 RBZ:3HOP RBZ H5'1 RBZ:1H5* RBZ H5'2 RBZ:2H5* RBZ H4' RBZ: H4* RBZ H3' RBZ: H3* RBZ HO'3 RBZ:3HO* RBZ H2' RBZ: H2* RBZ HO'2 RBZ:2HO* RBZ H1' RBZ: H1* RBZ H61 RC1:1H6 RC1 H62 RC1:2H6 RC1 H91 RC1:1H9 RC1 H92 RC1:2H9 RC1 H93 RC1:3H9 RC1 HB21 RC7:1HB2 RC7 HB22 RC7:2HB2 RC7 HA31 RC7:1HA3 RC7 HA32 RC7:2HA3 RC7 HA11 RC7:1HA1 RC7 HA12 RC7:2HA1 RC7 HB11 RC7:1HB1 RC7 HB12 RC7:2HB1 RC7 H43 RCA:3H4 RCA H42 RCA:2H4 RCA H41 RCA:1H4 RCA H122 RCA:2H12 RCA H121 RCA:1H12 RCA H62 RCA:2H6 RCA H61 RCA:1H6 RCA H83 RCA:3H8 RCA H82 RCA:2H8 RCA H81 RCA:1H8 RCA H21 RCL:1H2 RCL H22 RCL:2H2 RCL H31 RCL:1H3 RCL H32 RCL:2H3 RCL H41 RCL:1H4 RCL H42 RCL:2H4 RCL H51 RCL:1H5 RCL H52 RCL:2H5 RCL H61 RCL:1H6 RCL H62 RCL:2H6 RCL H71 RCL:1H7 RCL H72 RCL:2H7 RCL H81 RCL:1H8 RCL H82 RCL:2H8 RCL H111 RCL:1H11 RCL H112 RCL:2H11 RCL H131 RCL:1H13 RCL H132 RCL:2H13 RCL H141 RCL:1H14 RCL H142 RCL:2H14 RCL H151 RCL:1H15 RCL H152 RCL:2H15 RCL H161 RCL:1H16 RCL H162 RCL:2H16 RCL H171 RCL:1H17 RCL H172 RCL:2H17 RCL H181 RCL:1H18 RCL H182 RCL:2H18 RCL H183 RCL:3H18 RCL H291 RCP:1H29 RCP H292 RCP:2H29 RCP H301 RCP:1H30 RCP H302 RCP:2H30 RCP H281 RCP:1H28 RCP H282 RCP:2H28 RCP H271 RCP:1H27 RCP H272 RCP:2H27 RCP H241 RCP:1H24 RCP H242 RCP:2H24 RCP H231 RCP:1H23 RCP H232 RCP:2H23 RCP H221 RCP:1H22 RCP H222 RCP:2H22 RCP H211 RCP:1H21 RCP H212 RCP:2H21 RCP H191 RCP:1H19 RCP H192 RCP:2H19 RCP H171 RCP:1H17 RCP H172 RCP:2H17 RCP H181 RCP:1H18 RCP H182 RCP:2H18 RCP H161 RCP:1H16 RCP H162 RCP:2H16 RCP H71 RDA:1H7 RDA H72 RDA:2H7 RDA H73 RDA:3H7 RDA H91 RDA:1H9 RDA H92 RDA:2H9 RDA H101 RDA:1H10 RDA H102 RDA:2H10 RDA H161 RDA:1H16 RDA H162 RDA:2H16 RDA H163 RDA:3H16 RDA H81 RDC:1H8 RDC H82 RDC:2H8 RDC H161 RDC:1H16 RDC H162 RDC:2H16 RDC H181 RDC:1H18 RDC H182 RDC:2H18 RDC H183 RDC:3H18 RDC HAC1 RDE:1HAC RDE HAC2 RDE:2HAC RDE HAC3 RDE:3HAC RDE HAA1 RDE:1HAA RDE HAA2 RDE:2HAA RDE HAA3 RDE:3HAA RDE HAJ1 RDE:1HAJ RDE HAB1 RDE:1HAB RDE HAB2 RDE:2HAB RDE HAB3 RDE:3HAB RDE HAM1 RDE:1HAM RDE HAM2 RDE:2HAM RDE HAL1 RDE:1HAL RDE HAL2 RDE:2HAL RDE HAK1 RDE:1HAK RDE HAI1 RDE:1HAI RDE HD11 RDF:1HD1 RDF HD12 RDF:2HD1 RDF HD13 RDF:3HD1 RDF HD21 RDF:1HD2 RDF HD22 RDF:2HD2 RDF HD23 RDF:3HD2 RDF HB01 RDF:1HB0 RDF HB02 RDF:2HB0 RDF H41 RDI:1H4 RDI H42 RDI:2H4 RDI H81 RDI:1H8 RDI H82 RDI:2H8 RDI H101 RDI:1H10 RDI H102 RDI:2H10 RDI H111 RDI:1H11 RDI H112 RDI:2H11 RDI H121 RDI:1H12 RDI H122 RDI:2H12 RDI H131 RDI:1H13 RDI H132 RDI:2H13 RDI H161 RDI:1H16 RDI H162 RDI:2H16 RDI H181 RDI:1H18 RDI H182 RDI:2H18 RDI H183 RDI:3H18 RDI H15O RDL:OH15 RDL H151 RDL:1H15 RDL H152 RDL:2H15 RDL H141 RDL:1H14 RDL H14O RDL:OH14 RDL H131 RDL:1H13 RDL H13O RDL:OH13 RDL H121 RDL:1H12 RDL H12O RDL:OH12 RDL H111 RDL:1H11 RDL H112 RDL:2H11 RDL HOP2 RDP:2HOP RDP HOP3 RDP:3HOP RDP H1' RDP: H1* RDP H2' RDP: H2* RDP HO2' RDP:*HO2 RDP H3' RDP: H3* RDP HO3' RDP:*HO3 RDP H4' RDP: H4* RDP H5'1 RDP:1H5* RDP H5'2 RDP:2H5* RDP HO5' RDP:*HO5 RDP H101 RDR:1H10 RDR H102 RDR:2H10 RDR H61 RDR:1H6 RDR H62 RDR:2H6 RDR H41 RDR:1H4 RDR H42 RDR:2H4 RDR H171 RDR:1H17 RDR H172 RDR:2H17 RDR H191 RDR:1H19 RDR H192 RDR:2H19 RDR H131 RDR:1H13 RDR H132 RDR:2H13 RDR H21 RE9:1H2 RE9 H22 RE9:2H2 RE9 H31 RE9:1H3 RE9 H32 RE9:2H3 RE9 H41 RE9:1H4 RE9 H42 RE9:2H4 RE9 H81 RE9:1H8 RE9 H82 RE9:2H8 RE9 H101 RE9:1H10 RE9 H102 RE9:2H10 RE9 H161 RE9:1H16 RE9 H162 RE9:2H16 RE9 H163 RE9:3H16 RE9 H171 RE9:1H17 RE9 H172 RE9:2H17 RE9 H173 RE9:3H17 RE9 H181 RE9:1H18 RE9 H182 RE9:2H18 RE9 H191 RE9:1H19 RE9 H192 RE9:2H19 RE9 H193 RE9:3H19 RE9 H201 RE9:1H20 RE9 H202 RE9:2H20 RE9 H203 RE9:3H20 RE9 H21 REA:1H2 REA H22 REA:2H2 REA H31 REA:1H3 REA H32 REA:2H3 REA H41 REA:1H4 REA H42 REA:2H4 REA H161 REA:1H16 REA H162 REA:2H16 REA H163 REA:3H16 REA H171 REA:1H17 REA H172 REA:2H17 REA H173 REA:3H17 REA H181 REA:1H18 REA H182 REA:2H18 REA H183 REA:3H18 REA H191 REA:1H19 REA H192 REA:2H19 REA H193 REA:3H19 REA H201 REA:1H20 REA H202 REA:2H20 REA H203 REA:3H20 REA H22 RED:2H2 RED H21 RED:1H2 RED H32 RED:2H3 RED H31 RED:1H3 RED H42 RED:2H4 RED H41 RED:1H4 RED H52 RED:2H5 RED H51 RED:1H5 RED H72 RED:2H7 RED H71 RED:1H7 RED H82 RED:2H8 RED H81 RED:1H8 RED H71 REP:1H7 REP H81 REP:1H8 REP H91 REP:1H9 REP H141 REP:1H14 REP H151 REP:1H15 REP H161 REP:1H16 REP H171 REP:1H17 REP H181 REP:1H18 REP H11 REQ:1H1 REQ H12 REQ:2H1 REQ H21 REQ:1H2 REQ H22 REQ:2H2 REQ H31 REQ:1H3 REQ H32 REQ:2H3 REQ H191 REQ:1H19 REQ H192 REQ:2H19 REQ H193 REQ:3H19 REQ H201 REQ:1H20 REQ H202 REQ:2H20 REQ H203 REQ:3H20 REQ H4C1 RES:1H4C RES H4C2 RES:2H4C RES H21 RET:1H2 RET H22 RET:2H2 RET H31 RET:1H3 RET H32 RET:2H3 RET H41 RET:1H4 RET H42 RET:2H4 RET H161 RET:1H16 RET H162 RET:2H16 RET H163 RET:3H16 RET H171 RET:1H17 RET H172 RET:2H17 RET H173 RET:3H17 RET H181 RET:1H18 RET H182 RET:2H18 RET H183 RET:3H18 RET H191 RET:1H19 RET H192 RET:2H19 RET H193 RET:3H19 RET H201 RET:1H20 RET H202 RET:2H20 RET H203 RET:3H20 RET HC11 REX:1HC1 REX HC12 REX:2HC1 REX HC21 REX:1HC2 REX HC22 REX:2HC2 REX HC31 REX:1HC3 REX HC32 REX:2HC3 REX HC41 REX:1HC4 REX HC42 REX:2HC4 REX HC81 REX:1HC8 REX HC82 REX:2HC8 REX HC83 REX:3HC8 REX H111 REX:1H11 REX H112 REX:2H11 REX H113 REX:3H11 REX H151 REX:1H15 REX H152 REX:2H15 REX HN41 REX:1HN4 REX HN42 REX:2HN4 REX HN43 REX:3HN4 REX HC11 REY:1HC1 REY HC12 REY:2HC1 REY HC21 REY:1HC2 REY HC22 REY:2HC2 REY HC31 REY:1HC3 REY HC32 REY:2HC3 REY HC41 REY:1HC4 REY HC42 REY:2HC4 REY HC81 REY:1HC8 REY HC82 REY:2HC8 REY HC83 REY:3HC8 REY H121 REY:1H12 REY H122 REY:2H12 REY HN41 REY:1HN4 REY HN42 REY:2HN4 REY HN43 REY:3HN4 REY HA11 REZ:1HA1 REZ HA12 REZ:2HA1 REZ HB11 REZ:1HB1 REZ HB12 REZ:2HB1 REZ HG11 REZ:1HG1 REZ HG12 REZ:2HG1 REZ HD11 REZ:1HD1 REZ HD12 REZ:2HD1 REZ HZ11 REZ:1HZ1 REZ HZ12 REZ:2HZ1 REZ HBC1 REZ:1HBC REZ HBC2 REZ:2HBC REZ HBC3 REZ:3HBC REZ H31 RFA:1H3 RFA H32 RFA:2H3 RFA H41 RFA:1H4 RFA H42 RFA:2H4 RFA H51 RFA:1H5 RFA H61 RFA:1H6 RFA H91 RFA:1H9 RFA H92 RFA:2H9 RFA H101 RFA:1H10 RFA H102 RFA:2H10 RFA H111 RFA:1H11 RFA H121 RFA:1H12 RFA H151 RFA:1H15 RFA H152 RFA:2H15 RFA H161 RFA:1H16 RFA H162 RFA:2H16 RFA H181 RFA:1H18 RFA H119 RFA:19H1 RFA H220 RFA:20H2 RFA H211 RFA:1H21 RFA H212 RFA:2H21 RFA H222 RFA:22H2 RFA H231 RFA:1H23 RFA H232 RFA:2H23 RFA H241 RFA:1H24 RFA H242 RFA:2H24 RFA H271 RFA:1H27 RFA H272 RFA:2H27 RFA H281 RFA:1H28 RFA H282 RFA:2H28 RFA H291 RFA:1H29 RFA H292 RFA:2H29 RFA H301 RFA:1H30 RFA H302 RFA:2H30 RFA H331 RFA:1H33 RFA H332 RFA:2H33 RFA H341 RFA:1H34 RFA H342 RFA:2H34 RFA H351 RFA:1H35 RFA H352 RFA:2H35 RFA H361 RFA:1H36 RFA H362 RFA:2H36 RFA H381 RFA:1H38 RFA H382 RFA:2H38 RFA H383 RFA:3H38 RFA H391 RFA:1H39 RFA H392 RFA:2H39 RFA H440 RFA:40H4 RFA H441 RFA:41H4 RFA H442 RFA:42H4 RFA H443 RFA:43H4 RFA H444 RFA:44H4 RFA H445 RFA:45H4 RFA H550 RFA:50H5 RFA H551 RFA:51H5 RFA H552 RFA:52H5 RFA H553 RFA:53H5 RFA H554 RFA:54H5 RFA H555 RFA:55H5 RFA H601 RFA:1H60 RFA H611 RFA:1H61 RFA H621 RFA:1H62 RFA H622 RFA:2H62 RFA H631 RFA:1H63 RFA H641 RFA:1H64 RFA H642 RFA:2H64 RFA H651 RFA:1H65 RFA H661 RFA:1H66 RFA H671 RFA:1H67 RFA H672 RFA:2H67 RFA H681 RFA:1H68 RFA H682 RFA:2H68 RFA H691 RFA:1H69 RFA H701 RFA:1H70 RFA H702 RFA:2H70 RFA H31 RFB:1H3 RFB H32 RFB:2H3 RFB H41 RFB:1H4 RFB H42 RFB:2H4 RFB H51 RFB:1H5 RFB H61 RFB:1H6 RFB H91 RFB:1H9 RFB H92 RFB:2H9 RFB H101 RFB:1H10 RFB H102 RFB:2H10 RFB H111 RFB:1H11 RFB H121 RFB:1H12 RFB H151 RFB:1H15 RFB H152 RFB:2H15 RFB H161 RFB:1H16 RFB H162 RFB:2H16 RFB H181 RFB:1H18 RFB H119 RFB:19H1 RFB H220 RFB:20H2 RFB H211 RFB:1H21 RFB H212 RFB:2H21 RFB H222 RFB:22H2 RFB H231 RFB:1H23 RFB H232 RFB:2H23 RFB H241 RFB:1H24 RFB H242 RFB:2H24 RFB H271 RFB:1H27 RFB H272 RFB:2H27 RFB H281 RFB:1H28 RFB H282 RFB:2H28 RFB H291 RFB:1H29 RFB H292 RFB:2H29 RFB H301 RFB:1H30 RFB H302 RFB:2H30 RFB H331 RFB:1H33 RFB H332 RFB:2H33 RFB H341 RFB:1H34 RFB H342 RFB:2H34 RFB H351 RFB:1H35 RFB H352 RFB:2H35 RFB H361 RFB:1H36 RFB H362 RFB:2H36 RFB H381 RFB:1H38 RFB H382 RFB:2H38 RFB H383 RFB:3H38 RFB H391 RFB:1H39 RFB H392 RFB:2H39 RFB H440 RFB:40H4 RFB H441 RFB:41H4 RFB H442 RFB:42H4 RFB H443 RFB:43H4 RFB H444 RFB:44H4 RFB H445 RFB:45H4 RFB H550 RFB:50H5 RFB H551 RFB:51H5 RFB H552 RFB:52H5 RFB H553 RFB:53H5 RFB H554 RFB:54H5 RFB H555 RFB:55H5 RFB H601 RFB:1H60 RFB H611 RFB:1H61 RFB H621 RFB:1H62 RFB H622 RFB:2H62 RFB H631 RFB:1H63 RFB H641 RFB:1H64 RFB H642 RFB:2H64 RFB H651 RFB:1H65 RFB H661 RFB:1H66 RFB H671 RFB:1H67 RFB H672 RFB:2H67 RFB H681 RFB:1H68 RFB H682 RFB:2H68 RFB H691 RFB:1H69 RFB H701 RFB:1H70 RFB H702 RFB:2H70 RFB H3' RFC: H3* RFC H2' RFC: H2* RFC H1' RFC: H1* RFC HN61 RFC:1HN6 RFC HN62 RFC:2HN6 RFC H4' RFC: H4* RFC H5'1 RFC:1H5* RFC H5'2 RFC:2H5* RFC H41 RFC:1H4 RFC H42 RFC:2H4 RFC H11X RFC:1H1 RFC H12 RFC:2H1 RFC H13 RFC:3H1 RFC H141 RFC:1H14 RFC H142 RFC:2H14 RFC H143 RFC:3H14 RFC H71 RFC:1H7 RFC H72 RFC:2H7 RFC H61 RFC:1H6 RFC H62 RFC:2H6 RFC H31 RFC:1H3 RFC H32 RFC:2H3 RFC H21 RFC:1H2 RFC H22 RFC:2H2 RFC H131 RFC:1H13 RFC H132 RFC:2H13 RFC H133 RFC:3H13 RFC H91 RFC:1H9 RFC H92 RFC:2H9 RFC H121 RFC:1H12 RFC H122 RFC:2H12 RFC H123 RFC:3H12 RFC H111 RFC:1H11 RFC H112 RFC:2H11 RFC H113 RFC:3H11 RFC H5'1 RFL:1H5' RFL H5'2 RFL:2H5' RFL HC21 RFL:1HC2 RFL HN61 RFL:1HN6 RFL HN62 RFL:2HN6 RFL HC81 RFL:1HC8 RFL H5R1 RFL:1H5R RFL H5R2 RFL:2H5R RFL H1R1 RFL:1H1R RFL H1R2 RFL:2H1R RFL HM11 RFL:1HM1 RFL HM12 RFL:2HM1 RFL HM13 RFL:3HM1 RFL HM21 RFL:1HM2 RFL HM22 RFL:2HM2 RFL HM23 RFL:3HM2 RFL H7M1 RFL:1H7M RFL H7M2 RFL:2H7M RFL H7M3 RFL:3H7M RFL H131 RFP:1H13 RFP H132 RFP:2H13 RFP H133 RFP:3H13 RFP H141 RFP:1H14 RFP H142 RFP:2H14 RFP H143 RFP:3H14 RFP H17C RFP:CH17 RFP H18C RFP:CH18 RFP H19C RFP:CH19 RFP H20C RFP:CH20 RFP H211 RFP:1H21 RFP H22C RFP:CH22 RFP H23C RFP:CH23 RFP H24C RFP:CH24 RFP H25C RFP:CH25 RFP H26C RFP:CH26 RFP H27C RFP:CH27 RFP H28C RFP:CH28 RFP H29C RFP:CH29 RFP H301 RFP:1H30 RFP H302 RFP:2H30 RFP H303 RFP:3H30 RFP H311 RFP:1H31 RFP H312 RFP:2H31 RFP H313 RFP:3H31 RFP H321 RFP:1H32 RFP H322 RFP:2H32 RFP H323 RFP:3H32 RFP H331 RFP:1H33 RFP H332 RFP:2H33 RFP H333 RFP:3H33 RFP H341 RFP:1H34 RFP H342 RFP:2H34 RFP H343 RFP:3H34 RFP H361 RFP:1H36 RFP H362 RFP:2H36 RFP H363 RFP:3H36 RFP H371 RFP:1H37 RFP H372 RFP:2H37 RFP H373 RFP:3H37 RFP H381 RFP:1H38 RFP H382 RFP:2H38 RFP H383 RFP:3H38 RFP H391 RFP:1H39 RFP H392 RFP:2H39 RFP H401 RFP:1H40 RFP H402 RFP:2H40 RFP H411 RFP:1H41 RFP H412 RFP:2H41 RFP H421 RFP:1H42 RFP H422 RFP:2H42 RFP H10O RFP:OH10 RFP H12O RFP:OH12 RFP H6'1 RG1:1H6' RG1 H6'2 RG1:2H6' RG1 HO2' RG1:'HO2 RG1 HO3' RG1:'HO3 RG1 HO4' RG1:'HO4 RG1 HO6' RG1:'HO6 RG1 HM11 RG1:1HM1 RG1 HM12 RG1:2HM1 RG1 HM13 RG1:3HM1 RG1 HM21 RG1:1HM2 RG1 HM22 RG1:2HM2 RG1 HM23 RG1:3HM2 RG1 H21A RG1:1H2 RG1 H22 RG1:2H2 RG1 H31 RG1:1H3 RG1 H32 RG1:2H3 RG1 H41 RG1:1H4 RG1 H42 RG1:2H4 RG1 HM31 RG1:1HM3 RG1 HM32 RG1:2HM3 RG1 HM33 RG1:3HM3 RG1 HM41 RG1:1HM4 RG1 HM42 RG1:2HM4 RG1 HM43 RG1:3HM4 RG1 HM51 RG1:1HM5 RG1 HM52 RG1:2HM5 RG1 HM53 RG1:3HM5 RG1 HM61 RG1:1HM6 RG1 HM62 RG1:2HM6 RG1 HM63 RG1:3HM6 RG1 HM71 RG1:1HM7 RG1 HM72 RG1:2HM7 RG1 HM73 RG1:3HM7 RG1 HM81 RG1:1HM8 RG1 HM82 RG1:2HM8 RG1 HM83 RG1:3HM8 RG1 HM91 RG1:1HM9 RG1 HM92 RG1:2HM9 RG1 HM93 RG1:3HM9 RG1 HM01 RG1:1HM0 RG1 HM02 RG1:2HM0 RG1 HM03 RG1:3HM0 RG1 H381 RGA:1H38 RGA H382 RGA:2H38 RGA H383 RGA:3H38 RGA H61 RGA:1H6 RGA H62 RGA:2H6 RGA H481 RGA:1H48 RGA H482 RGA:2H48 RGA H483 RGA:3H48 RGA H81 RGA:1H8 RGA H82 RGA:2H8 RGA H101 RGA:1H10 RGA H102 RGA:2H10 RGA H411 RGA:1H41 RGA H412 RGA:2H41 RGA H413 RGA:3H41 RGA H491 RGA:1H49 RGA H492 RGA:2H49 RGA H493 RGA:3H49 RGA H141 RGA:1H14 RGA H142 RGA:2H14 RGA H501 RGA:1H50 RGA H502 RGA:2H50 RGA H503 RGA:3H50 RGA H421 RGA:1H42 RGA H422 RGA:2H42 RGA H423 RGA:3H42 RGA H511 RGA:1H51 RGA H512 RGA:2H51 RGA H513 RGA:3H51 RGA H201 RGA:1H20 RGA H202 RGA:2H20 RGA H521 RGA:1H52 RGA H522 RGA:2H52 RGA H523 RGA:3H52 RGA H431 RGA:1H43 RGA H432 RGA:2H43 RGA H433 RGA:3H43 RGA H441 RGA:1H44 RGA H442 RGA:2H44 RGA H443 RGA:3H44 RGA H531 RGA:1H53 RGA H532 RGA:2H53 RGA H533 RGA:3H53 RGA H451 RGA:1H45 RGA H452 RGA:2H45 RGA H453 RGA:3H45 RGA H291 RGA:1H29 RGA H292 RGA:2H29 RGA H301 RGA:1H30 RGA H302 RGA:2H30 RGA H461 RGA:1H46 RGA H462 RGA:2H46 RGA H463 RGA:3H46 RGA H541 RGA:1H54 RGA H542 RGA:2H54 RGA H543 RGA:3H54 RGA H341 RGA:1H34 RGA H342 RGA:2H34 RGA H471 RGA:1H47 RGA H472 RGA:2H47 RGA H473 RGA:3H47 RGA H381 RGC:1H38 RGC H382 RGC:2H38 RGC H383 RGC:3H38 RGC H61 RGC:1H6 RGC H62 RGC:2H6 RGC H481 RGC:1H48 RGC H482 RGC:2H48 RGC H483 RGC:3H48 RGC H81 RGC:1H8 RGC H82 RGC:2H8 RGC H101 RGC:1H10 RGC H102 RGC:2H10 RGC H411 RGC:1H41 RGC H412 RGC:2H41 RGC H413 RGC:3H41 RGC H491 RGC:1H49 RGC H492 RGC:2H49 RGC H493 RGC:3H49 RGC H141 RGC:1H14 RGC H142 RGC:2H14 RGC H501 RGC:1H50 RGC H502 RGC:2H50 RGC H503 RGC:3H50 RGC H421 RGC:1H42 RGC H422 RGC:2H42 RGC H423 RGC:3H42 RGC H511 RGC:1H51 RGC H512 RGC:2H51 RGC H513 RGC:3H51 RGC H201 RGC:1H20 RGC H202 RGC:2H20 RGC H521 RGC:1H52 RGC H522 RGC:2H52 RGC H523 RGC:3H52 RGC H431 RGC:1H43 RGC H432 RGC:2H43 RGC H433 RGC:3H43 RGC H441 RGC:1H44 RGC H442 RGC:2H44 RGC H443 RGC:3H44 RGC H531 RGC:1H53 RGC H532 RGC:2H53 RGC H533 RGC:3H53 RGC H451 RGC:1H45 RGC H452 RGC:2H45 RGC H453 RGC:3H45 RGC H291 RGC:1H29 RGC H292 RGC:2H29 RGC H301 RGC:1H30 RGC H302 RGC:2H30 RGC H461 RGC:1H46 RGC H462 RGC:2H46 RGC H463 RGC:3H46 RGC H541 RGC:1H54 RGC H542 RGC:2H54 RGC H543 RGC:3H54 RGC H341 RGC:1H34 RGC H342 RGC:2H34 RGC H351 RGC:1H35 RGC H352 RGC:2H35 RGC H1C1 RGI:1H1C RGI HA2 RGI:2HA RGI HB3 RGI:3HB RGI HG1 RGP:1HG RGP HG2 RGP:2HG RGP HB1 RGP:1HB RGP HB2 RGP:2HB RGP HN1 RGP:1HN RGP HN2 RGP:2HN RGP HOB1 RGS:1HOB RGS HN21 RGS:1HN2 RGS HN22 RGS:2HN2 RGS H31 RGS:1H3 RGS H32 RGS:2H3 RGS H41 RGS:1H4 RGS H42 RGS:2H4 RGS H61 RGS:1H6 RGS H62 RGS:2H6 RGS HOB7 RGS:7HOB RGS HB1 RGS:1HB RGS HB2 RGS:2HB RGS HB'1 RGS:1HB* RGS HB'2 RGS:2HB* RGS HA' RGS: HA* RGS HN' RGS: HN* RGS H6'1 RGS:1H6* RGS H6'2 RGS:2H6* RGS HO7' RGS:*HO7 RGS HN4' RGS:*HN4 RGS H4'1 RGS:1H4* RGS H4'2 RGS:2H4* RGS H3'1 RGS:1H3* RGS H3'2 RGS:2H3* RGS H2' RGS: H2* RGS H2'1 RGS:1H2* RGS H2'2 RGS:2H2* RGS HO1' RGS:*HO1 RGS HC71 RH1:1HC7 RH1 HC72 RH1:2HC7 RH1 HC81 RH1:1HC8 RH1 HC82 RH1:2HC8 RH1 HC91 RH1:1HC9 RH1 HC92 RH1:2HC9 RH1 H101 RH1:1H10 RH1 H102 RH1:2H10 RH1 H111 RH1:1H11 RH1 H112 RH1:2H11 RH1 HO3 RH1:3HO RH1 H121 RH1:1H12 RH1 H122 RH1:2H12 RH1 H123 RH1:3H12 RH1 H61 RHA:1H6 RHA H62 RHA:2H6 RHA H63 RHA:3H6 RHA HOP2 RHA:2HOP RHA HOP3 RHA:3HOP RHA HC11 RHC:1HC1 RHC HO11 RHC:1HO1 RHC HC21 RHC:1HC2 RHC HO21 RHC:1HO2 RHC HC31 RHC:1HC3 RHC HO31 RHC:1HO3 RHC HC41 RHC:1HC4 RHC HCE1 RHC:1HCE RHC HCE2 RHC:2HCE RHC HN1 RHC:1HN RHC HN2 RHC:2HN RHC HCA1 RHC:1HCA RHC HCB1 RHC:1HCB RHC HCB2 RHC:2HCB RHC HCG1 RHC:1HCG RHC HCG2 RHC:2HCG RHC HOX1 RHC:1HOX RHC HN11 RHD:1HN1 RHD HN12 RHD:2HN1 RHD HN13 RHD:3HN1 RHD HN21 RHD:1HN2 RHD HN22 RHD:2HN2 RHD HN23 RHD:3HN2 RHD HN31 RHD:1HN3 RHD HN32 RHD:2HN3 RHD HN33 RHD:3HN3 RHD HN41 RHD:1HN4 RHD HN42 RHD:2HN4 RHD HN43 RHD:3HN4 RHD HN51 RHD:1HN5 RHD HN52 RHD:2HN5 RHD HN53 RHD:3HN5 RHD HN61 RHD:1HN6 RHD HN62 RHD:2HN6 RHD HN63 RHD:3HN6 RHD H21 RHM:1H2 RHM H22 RHM:2H2 RHM H23 RHM:3H2 RHM H111 RHM:1H11 RHM H112 RHM:2H11 RHM H113 RHM:3H11 RHM H91 RHM:1H9 RHM H92 RHM:2H9 RHM H41 RHM:1H4 RHM H42 RHM:2H4 RHM H61 RHM:1H6 RHM H62 RHM:2H6 RHM H71 RHM:1H7 RHM H72 RHM:2H7 RHM HC61 RHO:1HC6 RHO HC62 RHO:2HC6 RHO HC63 RHO:3HC6 RHO HC71 RHO:1HC7 RHO HC72 RHO:2HC7 RHO HC73 RHO:3HC7 RHO H10C RHO:CH10 RHO H12C RHO:CH12 RHO H131 RHO:1H13 RHO H132 RHO:2H13 RHO H151 RHO:1H15 RHO H152 RHO:2H15 RHO H153 RHO:3H15 RHO H161 RHO:1H16 RHO H162 RHO:2H16 RHO H163 RHO:3H16 RHO H19C RHO:CH19 RHO H21C RHO:CH21 RHO H22C RHO:CH22 RHO H25C RHO:CH25 RHO H26C RHO:CH26 RHO H111 RHP:1H11 RHP H112 RHP:2H11 RHP H11 RHP:1H1 RHP H12 RHP:2H1 RHP H21 RHP:1H2 RHP H22 RHP:2H2 RHP H31 RHQ:1H3 RHQ H61 RHQ:1H6 RHQ H101 RHQ:1H10 RHQ H131 RHQ:1H13 RHQ HN11 RHQ:1HN1 RHQ H151 RHQ:1H15 RHQ H161 RHQ:1H16 RHQ H171 RHQ:1H17 RHQ H181 RHQ:1H18 RHQ H201 RHQ:1H20 RHQ H202 RHQ:2H20 RHQ H203 RHQ:3H20 RHQ H211 RHQ:1H21 RHQ H212 RHQ:2H21 RHQ H213 RHQ:3H21 RHQ H221 RHQ:1H22 RHQ H222 RHQ:2H22 RHQ H231 RHQ:1H23 RHQ H232 RHQ:2H23 RHQ H233 RHQ:3H23 RHQ HN21 RHQ:1HN2 RHQ H241 RHQ:1H24 RHQ H242 RHQ:2H24 RHQ H251 RHQ:1H25 RHQ H252 RHQ:2H25 RHQ H253 RHQ:3H25 RHQ H281 RHQ:1H28 RHQ H282 RHQ:2H28 RHQ H291 RHQ:1H29 RHQ H292 RHQ:2H29 RHQ H293 RHQ:3H29 RHQ HN'1 RHS:1HN' RHS HN'2 RHS:2HN' RHS HT21 RHS:1HT2 RHS HT22 RHS:2HT2 RHS HT23 RHS:3HT2 RHS HT31 RHS:1HT3 RHS HT32 RHS:2HT3 RHS HT33 RHS:3HT3 RHS HT41 RHS:1HT4 RHS HT42 RHS:2HT4 RHS HT43 RHS:3HT4 RHS H1'1 RHS:1H1' RHS H1'2 RHS:2H1' RHS H41 RHS:1H4 RHS H42 RHS:2H4 RHS H51 RHS:1H5 RHS H52 RHS:2H5 RHS H53 RHS:3H5 RHS H21 RHS:1H2 RHS H22 RHS:2H2 RHS H11 RHS:1H1 RHS H12 RHS:2H1 RHS H13 RHS:3H1 RHS H121 RHX:1H12 RHX H122 RHX:2H12 RHX H81 RHX:1H8 RHX H82 RHX:2H8 RHX HOP2 RIA:2HOP RIA HOP3 RIA:3HOP RIA H5' RIA:1H5* RIA H5'' RIA:2H5* RIA H4A RIA: H4* RIA H3A RIA: H3* RIA HO3A RIA:*HO3 RIA H2A RIA: H2* RIA H1A RIA: H1* RIA HN61 RIA:1HN6 RIA HN62 RIA:2HN6 RIA HO2' RIA:'HO2 RIA HO3' RIA:'HO3 RIA H5'1 RIA:1H5' RIA H5'2 RIA:2H5' RIA HO'2 RIA:2HO' RIA HO'3 RIA:3HO' RIA HO5' RIB:*HO5 RIB H5'1 RIB:1H5* RIB H5'2 RIB:2H5* RIB H4' RIB: H4* RIB H3' RIB: H3* RIB HO3' RIB:*HO3 RIB H2' RIB: H2* RIB HO2' RIB:*HO2 RIB H1' RIB: H1* RIB HO1' RIB:*HO1 RIB H21 RIC:1H2 RIC H41 RIC:1H4 RIC H71 RIC:1H7 RIC H81 RIC:1H8 RIC H82 RIC:2H8 RIC H83 RIC:3H8 RIC H91 RIC:1H9 RIC H92 RIC:2H9 RIC H93 RIC:3H9 RIC HC51 RIC:1HC5 RIC HC52 RIC:2HC5 RIC H1Q1 RIC:1H1Q RIC HC51 RIF:1HC5 RIF HC52 RIF:2HC5 RIF HC53 RIF:3HC5 RIF HC61 RIF:1HC6 RIF HC62 RIF:2HC6 RIF HC63 RIF:3HC6 RIF H241 RIF:1H24 RIF H242 RIF:2H24 RIF H243 RIF:3H24 RIF H261 RIF:1H26 RIF H262 RIF:2H26 RIF H271 RIF:1H27 RIF H272 RIF:2H27 RIF H281 RIF:1H28 RIF H282 RIF:2H28 RIF H291 RIF:1H29 RIF H292 RIF:2H29 RIF H311 RIF:1H31 RIF H312 RIF:2H31 RIF H313 RIF:3H31 RIF H321 RIF:1H32 RIF H322 RIF:2H32 RIF H323 RIF:3H32 RIF H331 RIF:1H33 RIF H332 RIF:2H33 RIF H333 RIF:3H33 RIF H341 RIF:1H34 RIF H342 RIF:2H34 RIF H343 RIF:3H34 RIF H361 RIF:1H36 RIF H362 RIF:2H36 RIF H371 RIF:1H37 RIF H372 RIF:2H37 RIF H373 RIF:3H37 RIF H10O RIF:OH10 RIF H17O RIF:OH17 RIF H451 RIF:1H45 RIF H452 RIF:2H45 RIF H501 RIF:1H50 RIF H502 RIF:2H50 RIF H503 RIF:3H50 RIF H551 RIF:1H55 RIF H1B1 RIG:1H1B RIG H1B2 RIG:2H1B RIG H1B3 RIG:3H1B RIG HDC1 RIG:1HDC RIG HDC2 RIG:2HDC RIG HGC1 RIG:1HGC RIG HGC2 RIG:2HGC RIG HBC1 RIG:1HBC RIG HBC2 RIG:2HBC RIG HAR1 RIG:1HAR RIG HAR2 RIG:2HAR RIG HAQ1 RIG:1HAQ RIG HAQ2 RIG:2HAQ RIG HAP1 RIG:1HAP RIG HAP2 RIG:2HAP RIG HAW1 RIG:1HAW RIG HAW2 RIG:2HAW RIG HBD1 RIG:1HBD RIG HBD2 RIG:2HBD RIG HBQ1 RIG:1HBQ RIG HBQ2 RIG:2HBQ RIG HBR1 RIG:1HBR RIG HBR2 RIG:2HBR RIG HBN1 RIG:1HBN RIG HBN2 RIG:2HBN RIG H111 RII:1H11 RII H112 RII:2H11 RII H121 RII:1H12 RII H122 RII:2H12 RII H71 RII:1H7 RII H72 RII:2H7 RII H1D RII:1H RII H2A RII:2H RII H3 RII:3H RII H211 RII:1H21 RII H212 RII:2H21 RII H411 RII:1H41 RII H412 RII:2H41 RII H413 RII:3H41 RII H1D1 RII:1H1D RII H1D2 RII:2H1D RII H11 RIL:1H1 RIL H12 RIL:2H1 RIL H51 RIL:1H5 RIL H52 RIL:2H5 RIL H71 RIL:1H7 RIL H72 RIL:2H7 RIL H101 RIL:1H10 RIL H102 RIL:2H10 RIL H131 RIL:1H13 RIL H132 RIL:2H13 RIL H231 RIL:1H23 RIL H232 RIL:2H23 RIL H271 RIL:1H27 RIL H272 RIL:2H27 RIL H341 RIL:1H34 RIL H342 RIL:2H34 RIL H343 RIL:3H34 RIL H381 RIL:1H38 RIL H382 RIL:2H38 RIL H383 RIL:3H38 RIL HA1 RIM:1HA RIM HA2 RIM:2HA RIM HA3 RIM:3HA RIM HNC1 RIM:1HNC RIM HNC2 RIM:2HNC RIM HE11 RIM:1HE1 RIM HE12 RIM:2HE1 RIM HE21 RIM:1HE2 RIM HE22 RIM:2HE2 RIM HE31 RIM:1HE3 RIM HE32 RIM:2HE3 RIM HG11 RIM:1HG1 RIM HG12 RIM:2HG1 RIM HG21 RIM:1HG2 RIM HG22 RIM:2HG2 RIM HG31 RIM:1HG3 RIM HG32 RIM:2HG3 RIM HB1 RIN:1HB RIN HB2 RIN:2HB RIN HG1 RIN:1HG RIN HG2 RIN:2HG RIN HD1 RIN:1HD RIN HD2 RIN:2HD RIN HE1 RIN:1HE RIN HE2 RIN:2HE RIN HZ1 RIN:1HZ RIN HZ2 RIN:2HZ RIN H51 RIN:1H5 RIN H52 RIN:2H5 RIN H41 RIN:1H4 RIN H42 RIN:2H4 RIN H31 RIN:1H3 RIN H32 RIN:2H3 RIN H21 RIN:1H2 RIN H22 RIN:2H2 RIN H11 RIN:1H1 RIN H12 RIN:2H1 RIN H51 RIP:1H5 RIP H52 RIP:2H5 RIP HC71 RIS:1HC7 RIS HC72 RIS:2HC7 RIS H61 RIT:1H6 RIT H62A RIT:2H6 RIT H141 RIT:1H14 RIT H142 RIT:2H14 RIT H261 RIT:1H26 RIT H262 RIT:2H26 RIT H441 RIT:1H44 RIT H442 RIT:2H44 RIT H641 RIT:1H64 RIT H642 RIT:2H64 RIT H643 RIT:3H64 RIT H681 RIT:1H68 RIT H682 RIT:2H68 RIT H683 RIT:3H68 RIT H751 RIT:1H75 RIT H752 RIT:2H75 RIT H861 RIT:1H86 RIT H862 RIT:2H86 RIT H863 RIT:3H86 RIT H901 RIT:1H90 RIT H902 RIT:2H90 RIT H903 RIT:3H90 RIT H951 RIT:1H95 RIT H952 RIT:2H95 RIT H953 RIT:3H95 RIT H21 RL2:1H2 RL2 H22 RL2:2H2 RL2 H31 RL2:1H3 RL2 H101 RL2:1H10 RL2 H121 RL2:1H12 RL2 H122 RL2:2H12 RL2 H131 RL2:1H13 RL2 H132 RL2:2H13 RL2 H151 RL2:1H15 RL2 H161 RL2:1H16 RL2 H171 RL2:1H17 RL2 H181 RL2:1H18 RL2 H191 RL2:1H19 RL2 H211 RL2:1H21 RL2 H212 RL2:2H21 RL2 H221 RL2:1H22 RL2 H222 RL2:2H22 RL2 H231 RL2:1H23 RL2 H251 RL2:1H25 RL2 H252 RL2:2H25 RL2 H253 RL2:3H25 RL2 H241 RL2:1H24 RL2 H242 RL2:2H24 RL2 H243 RL2:3H24 RL2 H19O RLP:OH19 RLP H171 RLP:1H17 RLP H172 RLP:2H17 RLP H161 RLP:1H16 RLP H162 RLP:2H16 RLP H111 RLP:1H11 RLP H112 RLP:2H11 RLP H121 RLP:1H12 RLP H12O RLP:OH12 RLP H131 RLP:1H13 RLP H13O RLP:OH13 RLP H141 RLP:1H14 RLP H14O RLP:OH14 RLP H151 RLP:1H15 RLP H152 RLP:2H15 RLP H15O RLP:OH15 RLP H101 RM1:1H10 RM1 H102 RM1:2H10 RM1 H103 RM1:3H10 RM1 H2C1 RM1:1H2C RM1 H2C2 RM1:2H2C RM1 H1C1 RM1:1H1C RM1 H1C2 RM1:2H1C RM1 H131 RM2:1H13 RM2 H132 RM2:2H13 RM2 H1C1 RM2:1H1C RM2 H1C2 RM2:2H1C RM2 H2C1 RM2:1H2C RM2 H2C2 RM2:2H2C RM2 H111 RMA:1H11 RMA H112 RMA:2H11 RMA H101 RMA:1H10 RMA H102 RMA:2H10 RMA H103 RMA:3H10 RMA H11 RMA:1H1 RMA H12 RMA:2H1 RMA H21 RMA:1H2 RMA H22 RMA:2H2 RMA H21 RMB:1H2 RMB H41 RMB:1H4 RMB H61 RMB:1H6 RMB H71 RMB:1H7 RMB H81 RMB:1H8 RMB H82 RMB:2H8 RMB H83 RMB:3H8 RMB HOP2 RMB:2HOP RMB HOP3 RMB:3HOP RMB H5'1 RMB:1H5* RMB H5'2 RMB:2H5* RMB H4' RMB: H4* RMB H3' RMB: H3* RMB HO3' RMB:*HO3 RMB H2' RMB: H2* RMB HO2' RMB:*HO2 RMB H1' RMB: H1* RMB HAQ1 RMC:1HAQ RMC HAQ2 RMC:2HAQ RMC HAK1 RMC:1HAK RMC HAK2 RMC:2HAK RMC HAI1 RMC:1HAI RMC HAI2 RMC:2HAI RMC HAI3 RMC:3HAI RMC HAY1 RMC:1HAY RMC HAY2 RMC:2HAY RMC HAY3 RMC:3HAY RMC HBA1 RMC:1HBA RMC HBA2 RMC:2HBA RMC HBA3 RMC:3HBA RMC HAD1 RMC:1HAD RMC HAD2 RMC:2HAD RMC HBB1 RMC:1HBB RMC HBB2 RMC:2HBB RMC HBB3 RMC:3HBB RMC HMP1 RMP:1HMP RMP HMP2 RMP:2HMP RMP HMP3 RMP:3HMP RMP H5' RMP:1H5* RMP H5'' RMP:2H5* RMP H4' RMP: H4* RMP H1' RMP: H1* RMP H61 RMP:1H6 RMP H62 RMP:2H6 RMP H3' RMP: H3* RMP H2' RMP:1H2* RMP H2'' RMP:2H2* RMP HO3' RMP:H3T RMP HOP3 RMP:3HOP RMP H131 RNA:1H13 RNA H132 RNA:2H13 RNA H133 RNA:3H13 RNA H41 RNA:1H4 RNA H42 RNA:2H4 RNA H43 RNA:3H4 RNA HA1 RNG:1HA RNG HA2 RNG:2HA RNG HG1 RNG:1HG RNG HG2 RNG:2HG RNG HF1 RNG:1HF RNG HF2 RNG:2HF RNG HE1 RNG:1HE RNG HE2 RNG:2HE RNG HD1 RNG:1HD RNG HD2 RNG:2HD RNG HC1 RNG:1HC RNG HC2 RNG:2HC RNG HB1 RNG:1HB RNG HB2 RNG:2HB RNG H81 RNO:1H8 RNO H82 RNO:2H8 RNO H111 RNP:1H11 RNP H112 RNP:2H11 RNP H151 RNP:1H15 RNP H152 RNP:2H15 RNP H153 RNP:3H15 RNP H161 RNP:1H16 RNP H162 RNP:2H16 RNP H163 RNP:3H16 RNP H61 RNS:1H6 RNS H62 RNS:2H6 RNS H63 RNS:3H6 RNS H61 RNT:1H6 RNT H62 RNT:2H6 RNT H63 RNT:3H6 RNT H71 RO0:1H7 RO0 H72 RO0:2H7 RO0 H111 RO0:1H11 RO0 H112 RO0:2H11 RO0 H191 RO0:1H19 RO0 H192 RO0:2H19 RO0 H193 RO0:3H19 RO0 H201 RO0:1H20 RO0 H202 RO0:2H20 RO0 H211 RO0:1H21 RO0 H212 RO0:2H21 RO0 H221 RO0:1H22 RO0 H222 RO0:2H22 RO0 H223 RO0:3H22 RO0 H251 RO0:1H25 RO0 H252 RO0:2H25 RO0 H261 RO0:1H26 RO0 H262 RO0:2H26 RO0 H311 RO0:1H31 RO0 H312 RO0:2H31 RO0 H313 RO0:3H31 RO0 H331 RO0:1H33 RO0 H332 RO0:2H33 RO0 H333 RO0:3H33 RO0 H401 RO0:1H40 RO0 H402 RO0:2H40 RO0 H403 RO0:3H40 RO0 H371 RO1:1H37 RO1 H372 RO1:2H37 RO1 H373 RO1:3H37 RO1 H331 RO1:1H33 RO1 H332 RO1:2H33 RO1 H333 RO1:3H33 RO1 H341 RO1:1H34 RO1 H342 RO1:2H34 RO1 H343 RO1:3H34 RO1 H361 RO1:1H36 RO1 H362 RO1:2H36 RO1 H191 RO1:1H19 RO1 H192 RO1:2H19 RO1 H81 RO1:1H8 RO1 H82 RO1:2H8 RO1 H231 RO1:1H23 RO1 H232 RO1:2H23 RO1 H233 RO1:3H23 RO1 H221 RO1:1H22 RO1 H222 RO1:2H22 RO1 H223 RO1:3H22 RO1 H211 RO1:1H21 RO1 H212 RO1:2H21 RO1 H213 RO1:3H21 RO1 H91 RO1:1H9 RO1 H92 RO1:2H9 RO1 H141 RO1:1H14 RO1 H142 RO1:2H14 RO1 H71 RO1:1H7 RO1 H72 RO1:2H7 RO1 H161 RO1:1H16 RO1 H162 RO1:2H16 RO1 H201 RO1:1H20 RO1 H202 RO1:2H20 RO1 H181 RO1:1H18 RO1 H182 RO1:2H18 RO1 H211 RO2:1H21 RO2 H212 RO2:2H21 RO2 H221 RO2:1H22 RO2 H222 RO2:2H22 RO2 H231 RO2:1H23 RO2 H232 RO2:2H23 RO2 H241 RO2:1H24 RO2 H242 RO2:2H24 RO2 H253 RO2:3H25 RO2 H252 RO2:2H25 RO2 H251 RO2:1H25 RO2 H91 RO4:1H9 RO4 H92 RO4:2H9 RO4 H311 RO4:1H31 RO4 H312 RO4:2H31 RO4 H151 RO4:1H15 RO4 H152 RO4:2H15 RO4 H191 RO4:1H19 RO4 H192 RO4:2H19 RO4 H321 RO4:1H32 RO4 H322 RO4:2H32 RO4 H323 RO4:3H32 RO4 H171 RO4:1H17 RO4 H172 RO4:2H17 RO4 H173 RO4:3H17 RO4 H181 RO4:1H18 RO4 H182 RO4:2H18 RO4 H183 RO4:3H18 RO4 H211 RO4:1H21 RO4 H212 RO4:2H21 RO4 H213 RO4:3H21 RO4 H221 RO4:1H22 RO4 H222 RO4:2H22 RO4 H223 RO4:3H22 RO4 H271 RO4:1H27 RO4 H272 RO4:2H27 RO4 H273 RO4:3H27 RO4 H1'1 ROB:1H1' ROB H1'2 ROB:2H1' ROB HO2' ROB:'HO2 ROB HO3' ROB:'HO3 ROB H5'1 ROB:1H5' ROB H5'2 ROB:2H5' ROB HOP2 ROB:2HOP ROB HOP3 ROB:3HOP ROB H31 ROC:1H3 ROC H41 ROC:1H4 ROC H61 ROC:1H6 ROC H71 ROC:1H7 ROC H81 ROC:1H8 ROC H91 ROC:1H9 ROC HN21 ROC:1HN2 ROC H111 ROC:1H11 ROC H131 ROC:1H13 ROC H132 ROC:2H13 ROC HN31 ROC:1HN3 ROC HN32 ROC:2HN3 ROC H151 ROC:1H15 ROC HO41 ROC:1HO4 ROC H161 ROC:1H16 ROC HN41 ROC:1HN4 ROC H171 ROC:1H17 ROC H172 ROC:2H17 ROC H191 ROC:1H19 ROC H201 ROC:1H20 ROC H211 ROC:1H21 ROC H221 ROC:1H22 ROC H231 ROC:1H23 ROC H241 ROC:1H24 ROC H242 ROC:2H24 ROC H251 ROC:1H25 ROC H271 ROC:1H27 ROC H272 ROC:2H27 ROC H281 ROC:1H28 ROC H291 ROC:1H29 ROC H292 ROC:2H29 ROC H301 ROC:1H30 ROC H302 ROC:2H30 ROC H311 ROC:1H31 ROC H312 ROC:2H31 ROC H321 ROC:1H32 ROC H322 ROC:2H32 ROC H331 ROC:1H33 ROC H341 ROC:1H34 ROC H342 ROC:2H34 ROC HN61 ROC:1HN6 ROC H361 ROC:1H36 ROC H362 ROC:2H36 ROC H363 ROC:3H36 ROC H371 ROC:1H37 ROC H372 ROC:2H37 ROC H373 ROC:3H37 ROC H381 ROC:1H38 ROC H382 ROC:2H38 ROC H383 ROC:3H38 ROC H231 ROF:1H23 ROF H232 ROF:2H23 ROF H221 ROF:1H22 ROF H222 ROF:2H22 ROF H201 ROF:1H20 ROF H202 ROF:2H20 ROF HN21 ROI:1HN2 ROI HN22 ROI:2HN2 ROI H161 ROI:1H16 ROI H162 ROI:2H16 ROI H163 ROI:3H16 ROI H151 ROI:1H15 ROI H152 ROI:2H15 ROI H153 ROI:3H15 ROI H61 ROL:1H6 ROL H91 ROL:1H9 ROL H101 ROL:1H10 ROL H31 ROL:1H3 ROL H21 ROL:1H2 ROL H22 ROL:2H2 ROL H41 ROL:1H4 ROL H42 ROL:2H4 ROL H111 ROL:1H11 ROL H151 ROL:1H15 ROL H152 ROL:2H15 ROL H141 ROL:1H14 ROL H142 ROL:2H14 ROL H131 ROL:1H13 ROL H132 ROL:2H13 ROL H121 ROL:1H12 ROL H122 ROL:2H12 ROL H161 ROL:1H16 ROL H162 ROL:2H16 ROL H163 ROL:3H16 ROL H2'2 ROM:2H2' ROM H3'2 ROM:2H3' ROM H6B1 ROM:1H6B ROM H6B3 ROM:3H6B ROM H6B2 ROM:2H6B ROM H6A1 ROM:1H6A ROM H6A3 ROM:3H6A ROM H6A2 ROM:2H6A ROM H4B1 ROM:1H4B ROM H4B3 ROM:3H4B ROM H4B2 ROM:2H4B ROM H4A1 ROM:1H4A ROM H4A3 ROM:3H4A ROM H4A2 ROM:2H4A ROM H3A1 ROM:1H3A ROM H3A2 ROM:2H3A ROM H7A1 ROM:1H7A ROM H7A3 ROM:3H7A ROM H7A2 ROM:2H7A ROM H142 ROM:2H14 ROM H141 ROM:1H14 ROM H172 ROM:2H17 ROM H171 ROM:1H17 ROM H183 ROM:3H18 ROM H182 ROM:2H18 ROM H184 ROM:4H18 ROM H232 ROM:2H23 ROM HN1 RON:1HN RON HN2 RON:2HN RON HB1 RON:1HB RON HB2 RON:2HB RON HG1 RON:1HG RON HG2 RON:2HG RON HD1 RON:1HD RON HD2 RON:2HD RON HD3 RON:3HD RON HCA1 ROP:1HCA ROP HCA2 ROP:2HCA ROP HCA3 ROP:3HCA ROP HCB1 ROP:1HCB ROP HCB2 ROP:2HCB ROP HND1 ROP:1HND ROP HND2 ROP:2HND ROP H201 ROS:1H20 ROS H202 ROS:2H20 ROS H203 ROS:3H20 ROS H211 ROS:1H21 ROS H212 ROS:2H21 ROS H213 ROS:3H21 ROS H221 ROS:1H22 ROS H222 ROS:2H22 ROS H223 ROS:3H22 ROS H231 ROS:1H23 ROS H232 ROS:2H23 ROS H233 ROS:3H23 ROS H71 ROX:1H7 ROX H72 ROX:2H7 ROX H341 ROX:1H34 ROX H342 ROX:2H34 ROX H343 ROX:3H34 ROX H331 ROX:1H33 ROX H332 ROX:2H33 ROX H333 ROX:3H33 ROX H351 ROX:1H35 ROX H352 ROX:2H35 ROX H353 ROX:3H35 ROX H361 ROX:1H36 ROX H362 ROX:2H36 ROX H301 ROX:1H30 ROX H302 ROX:2H30 ROX H303 ROX:3H30 ROX H321 ROX:1H32 ROX H322 ROX:2H32 ROX H323 ROX:3H32 ROX H251 ROX:1H25 ROX H252 ROX:2H25 ROX H271 ROX:1H27 ROX H272 ROX:2H27 ROX H273 ROX:3H27 ROX H281 ROX:1H28 ROX H282 ROX:2H28 ROX H283 ROX:3H28 ROX H151 ROX:1H15 ROX H152 ROX:2H15 ROX H201 ROX:1H20 ROX H202 ROX:2H20 ROX H203 ROX:3H20 ROX H291 ROX:1H29 ROX H292 ROX:2H29 ROX H293 ROX:3H29 ROX H211 ROX:1H21 ROX H212 ROX:2H21 ROX H213 ROX:3H21 ROX H371 ROX:1H37 ROX H372 ROX:2H37 ROX H373 ROX:3H37 ROX H311 ROX:1H31 ROX H312 ROX:2H31 ROX H313 ROX:3H31 ROX H191 ROX:1H19 ROX H192 ROX:2H19 ROX H193 ROX:3H19 ROX H381 ROX:1H38 ROX H382 ROX:2H38 ROX H391 ROX:1H39 ROX H392 ROX:2H39 ROX H401 ROX:1H40 ROX H402 ROX:2H40 ROX H411 ROX:1H41 ROX H412 ROX:2H41 ROX H413 ROX:3H41 ROX HOP2 RP1:2HOP RP1 H5'1 RP1:1H5* RP1 H5'2 RP1:2H5* RP1 H4' RP1: H4* RP1 H3' RP1: H3* RP1 H2' RP1: H2* RP1 HO2' RP1:*HO2 RP1 H1' RP1: H1* RP1 HN61 RP1:1HN6 RP1 HN62 RP1:2HN6 RP1 H121 RP4:1H12 RP4 H122 RP4:2H12 RP4 H5'1 RP5:1H5' RP5 H5'2 RP5:2H5' RP5 H6'1 RPA:1H6' RPA H6'2 RPA:2H6' RPA HO2' RPA:'HO2 RPA HO3' RPA:'HO3 RPA HO4' RPA:'HO4 RPA HO6' RPA:'HO6 RPA HM11 RPA:1HM1 RPA HM12 RPA:2HM1 RPA HM13 RPA:3HM1 RPA HM21 RPA:1HM2 RPA HM22 RPA:2HM2 RPA HM23 RPA:3HM2 RPA H21A RPA:1H2 RPA H22 RPA:2H2 RPA H31 RPA:1H3 RPA H32 RPA:2H3 RPA H41 RPA:1H4 RPA H42 RPA:2H4 RPA HM31 RPA:1HM3 RPA HM32 RPA:2HM3 RPA HM33 RPA:3HM3 RPA HM41 RPA:1HM4 RPA HM42 RPA:2HM4 RPA HM43 RPA:3HM4 RPA HM51 RPA:1HM5 RPA HM52 RPA:2HM5 RPA HM53 RPA:3HM5 RPA HM62 RPA:2HM6 RPA HM63 RPA:3HM6 RPA HM71 RPA:1HM7 RPA HM72 RPA:2HM7 RPA HM73 RPA:3HM7 RPA HM81 RPA:1HM8 RPA HM82 RPA:2HM8 RPA HM83 RPA:3HM8 RPA HM91 RPA:1HM9 RPA HM92 RPA:2HM9 RPA HM93 RPA:3HM9 RPA HM01 RPA:1HM0 RPA HM02 RPA:2HM0 RPA HM03 RPA:3HM0 RPA HM61 RPA:1HM6 RPA H5'1 RPD:1H5* RPD H5'2 RPD:2H5* RPD HO3' RPD:HO3* RPD HO2' RPD:HO2* RPD H51 RPD:1H5 RPD H52 RPD:2H5 RPD H61 RPD:1H6 RPD H62 RPD:2H6 RPD H71 RPD:1H7 RPD H72 RPD:2H7 RPD H81 RPD:1H8 RPD H111 RPD:1H11 RPD H112 RPD:2H11 RPD H1C1 RPF:1H1C RPF H1C2 RPF:2H1C RPF H1C3 RPF:3H1C RPF H4C1 RPF:1H4C RPF H4C2 RPF:2H4C RPF H211 RPF:1H21 RPF H212 RPF:2H21 RPF H221 RPF:1H22 RPF H222 RPF:2H22 RPF H241 RPF:1H24 RPF H242 RPF:2H24 RPF H311 RPF:1H31 RPF H312 RPF:2H31 RPF H321 RPF:1H32 RPF H322 RPF:2H32 RPF H331 RPF:1H33 RPF H332 RPF:2H33 RPF H341 RPF:1H34 RPF H342 RPF:2H34 RPF H351 RPF:1H35 RPF H352 RPF:2H35 RPF H361 RPF:1H36 RPF H362 RPF:2H36 RPF H91 RPH:1H9 RPH H92 RPH:2H9 RPH H111 RPH:1H11 RPH H112 RPH:2H11 RPH H121 RPH:1H12 RPH H122 RPH:2H12 RPH H141 RPH:1H14 RPH H142 RPH:2H14 RPH H5'1 RPL:1H5* RPL H5'2 RPL:2H5* RPL HO3' RPL:HO3* RPL HO2' RPL:HO2* RPL H51 RPL:1H5 RPL H52 RPL:2H5 RPL H61 RPL:1H6 RPL H62 RPL:2H6 RPL H71 RPL:1H7 RPL H72 RPL:2H7 RPL H81 RPL:1H8 RPL H111 RPL:1H11 RPL H112 RPL:2H11 RPL HC11 RPN:1HC1 RPN HC12 RPN:2HC1 RPN HN61 RPP:1HN6 RPP HN62 RPP:2HN6 RPP H1' RPP: H1* RPP H2' RPP: H2* RPP H3' RPP: H3* RPP H4' RPP: H4* RPP HO'2 RPP:2HO* RPP HO'3 RPP:3HO* RPP H5'1 RPP:1H5* RPP H5'2 RPP:2H5* RPP HO'5 RPP:5HO* RPP H11 RPR:1H1 RPR H31 RPR:1H3 RPR H41 RPR:1H4 RPR H51 RPR:1H5 RPR H71 RPR:1H7 RPR H91 RPR:1H9 RPR H101 RPR:1H10 RPR H121 RPR:1H12 RPR H141 RPR:1H14 RPR H151 RPR:1H15 RPR H161 RPR:1H16 RPR H162 RPR:2H16 RPR H163 RPR:3H16 RPR H171 RPR:1H17 RPR H201 RPR:1H20 RPR H202 RPR:2H20 RPR H211 RPR:1H21 RPR H212 RPR:2H21 RPR H221 RPR:1H22 RPR H222 RPR:2H22 RPR H231 RPR:1H23 RPR H251 RPR:1H25 RPR H261 RPR:1H26 RPR H271 RPR:1H27 RPR H301 RPR:1H30 RPR H302 RPR:2H30 RPR H311 RPR:1H31 RPR H341 RPR:1H34 RPR H342 RPR:2H34 RPR H343 RPR:3H34 RPR H131 RPT:1H13 RPT H132 RPT:2H13 RPT H133 RPT:3H13 RPT H141 RPT:1H14 RPT H142 RPT:2H14 RPT H143 RPT:3H14 RPT H301 RPT:1H30 RPT H302 RPT:2H30 RPT H303 RPT:3H30 RPT H311 RPT:1H31 RPT H312 RPT:2H31 RPT H313 RPT:3H31 RPT H321 RPT:1H32 RPT H322 RPT:2H32 RPT H323 RPT:3H32 RPT H331 RPT:1H33 RPT H332 RPT:2H33 RPT H333 RPT:3H33 RPT H341 RPT:1H34 RPT H342 RPT:2H34 RPT H343 RPT:3H34 RPT H361 RPT:1H36 RPT H362 RPT:2H36 RPT H363 RPT:3H36 RPT H371 RPT:1H37 RPT H372 RPT:2H37 RPT H373 RPT:3H37 RPT H391 RPT:1H39 RPT H392 RPT:2H39 RPT H401 RPT:1H40 RPT H402 RPT:2H40 RPT H411 RPT:1H41 RPT H412 RPT:2H41 RPT H421 RPT:1H42 RPT H422 RPT:2H42 RPT H441 RPT:1H44 RPT H442 RPT:2H44 RPT H451 RPT:1H45 RPT H452 RPT:2H45 RPT H461 RPT:1H46 RPT H462 RPT:2H46 RPT H471 RPT:1H47 RPT H472 RPT:2H47 RPT H31A RPX:1H3 RPX H32 RPX:2H3 RPX H41A RPX:1H4 RPX H42A RPX:2H4 RPX H51 RPX:1H5 RPX H52 RPX:2H5 RPX H61 RPX:1H6 RPX H62 RPX:2H6 RPX H121 RPX:1H12 RPX H122 RPX:2H12 RPX H131 RPX:1H13 RPX H132 RPX:2H13 RPX H151 RPX:1H15 RPX H152 RPX:2H15 RPX H241 RPX:1H24 RPX H242 RPX:2H24 RPX H301 RPX:1H30 RPX H302 RPX:2H30 RPX H331 RPX:1H33 RPX H332 RPX:2H33 RPX H361 RPX:1H36 RPX H362 RPX:2H36 RPX H431 RPX:1H43 RPX H432 RPX:2H43 RPX H433 RPX:3H43 RPX H441 RPX:1H44 RPX H442 RPX:2H44 RPX H443 RPX:3H44 RPX H451 RPX:1H45 RPX H452 RPX:2H45 RPX H453 RPX:3H45 RPX H461 RPX:1H46 RPX H462 RPX:2H46 RPX H463 RPX:3H46 RPX H471 RPX:1H47 RPX H472 RPX:2H47 RPX H473 RPX:3H47 RPX H481 RPX:1H48 RPX H482 RPX:2H48 RPX H483 RPX:3H48 RPX H491 RPX:1H49 RPX H492 RPX:2H49 RPX H493 RPX:3H49 RPX H501 RPX:1H50 RPX H502 RPX:2H50 RPX H511 RPX:1H51 RPX H512 RPX:2H51 RPX H513 RPX:3H51 RPX H521 RPX:1H52 RPX H522 RPX:2H52 RPX H523 RPX:3H52 RPX H531 RPX:1H53 RPX H532 RPX:2H53 RPX H533 RPX:3H53 RPX HC1 RPY:1HC RPY HC2 RPY:2HC RPY HC3 RPY:3HC RPY HC4 RPY:4HC RPY HC7 RPY:7HC RPY HC8 RPY:8HC RPY HC9 RPY:9HC RPY HC21 RPY:1HC2 RPY HC31 RPY:1HC3 RPY HC41 RPY:1HC4 RPY HC51 RPY:1HC5 RPY H51 RQ3:1H5 RQ3 H52 RQ3:2H5 RQ3 H53 RQ3:3H5 RQ3 H61 RQ3:1H6 RQ3 H62 RQ3:2H6 RQ3 H63 RQ3:3H6 RQ3 H91 RQ3:1H9 RQ3 H101 RQ3:1H10 RQ3 H121 RQ3:1H12 RQ3 H131 RQ3:1H13 RQ3 H141 RQ3:1H14 RQ3 H142 RQ3:2H14 RQ3 H171 RQ3:1H17 RQ3 H191 RQ3:1H19 RQ3 H211 RQ3:1H21 RQ3 H221 RQ3:1H22 RQ3 H241 RQ3:1H24 RQ3 H242 RQ3:2H24 RQ3 H243 RQ3:3H24 RQ3 H251 RQ3:1H25 RQ3 H252 RQ3:2H25 RQ3 H253 RQ3:3H25 RQ3 HL11 RR1:1HL1 RR1 HL12 RR1:2HL1 RR1 HL21 RR1:1HL2 RR1 HL22 RR1:2HL2 RR1 HAQ1 RRC:1HAQ RRC HAQ2 RRC:2HAQ RRC HAK1 RRC:1HAK RRC HAK2 RRC:2HAK RRC HAI1 RRC:1HAI RRC HAI2 RRC:2HAI RRC HAI3 RRC:3HAI RRC HAY1 RRC:1HAY RRC HAY2 RRC:2HAY RRC HAY3 RRC:3HAY RRC HBA1 RRC:1HBA RRC HBA2 RRC:2HBA RRC HBA3 RRC:3HBA RRC HAD1 RRC:1HAD RRC HAD2 RRC:2HAD RRC H301 RRP:1H30 RRP H302 RRP:2H30 RRP H211 RRP:1H21 RRP H212 RRP:2H21 RRP H41 RRP:1H4 RRP H42 RRP:2H4 RRP H71 RRP:1H7 RRP H72 RRP:2H7 RRP H21 RRP:1H2 RRP H22A RRP:2H2 RRP H131 RRR:1H13 RRR H132 RRR:2H13 RRR H181 RRR:1H18 RRR H182 RRR:2H18 RRR H201 RRR:1H20 RRR H202 RRR:2H20 RRR H211 RRR:1H21 RRR H212 RRR:2H21 RRR H21 RRS:1H2 RRS H22A RRS:2H2 RRS H71 RRS:1H7 RRS H72 RRS:2H7 RRS H81 RRS:1H8 RRS H82 RRS:2H8 RRS H91 RRS:1H9 RRS H92 RRS:2H9 RRS H101 RRS:1H10 RRS H102 RRS:2H10 RRS H111 RRS:1H11 RRS H112 RRS:2H11 RRS H121 RRS:1H12 RRS H122 RRS:2H12 RRS H131 RRS:1H13 RRS H132 RRS:2H13 RRS H151 RRS:1H15 RRS H152 RRS:2H15 RRS H153 RRS:3H15 RRS H161 RRS:1H16 RRS H162 RRS:2H16 RRS H163 RRS:3H16 RRS H171 RRS:1H17 RRS H172 RRS:2H17 RRS HB21 RRT:1HB2 RRT HB22 RRT:2HB2 RRT HB11 RRT:1HB1 RRT HB12 RRT:2HB1 RRT HA21 RRT:1HA2 RRT HA22 RRT:2HA2 RRT H251 RS1:1H25 RS1 H252 RS1:2H25 RS1 H291 RS1:1H29 RS1 H292 RS1:2H29 RS1 H301 RS1:1H30 RS1 H302 RS1:2H30 RS1 H321 RS1:1H32 RS1 H322 RS1:2H32 RS1 H331 RS1:1H33 RS1 H332 RS1:2H33 RS1 H271 RS2:1H27 RS2 H272 RS2:2H27 RS2 H361 RS2:1H36 RS2 H362 RS2:2H36 RS2 H371 RS2:1H37 RS2 H372 RS2:2H37 RS2 H391 RS2:1H39 RS2 H392 RS2:2H39 RS2 H401 RS2:1H40 RS2 H402 RS2:2H40 RS2 H21 RS7:1H2 RS7 H31 RS7:1H3 RS7 H121 RS7:1H12 RS7 H122 RS7:2H12 RS7 H131 RS7:1H13 RS7 H132 RS7:2H13 RS7 H141 RS7:1H14 RS7 H142 RS7:2H14 RS7 H151 RS7:1H15 RS7 H152 RS7:2H15 RS7 H161 RS7:1H16 RS7 H162 RS7:2H16 RS7 H171 RS7:1H17 RS7 H172 RS7:2H17 RS7 H173 RS7:3H17 RS7 H111 RSA:1H11 RSA H112 RSA:2H11 RSA H11 RSA:1H1 RSA H12 RSA:2H1 RSA H21 RSA:1H2 RSA H22 RSA:2H2 RSA H42 RSD:2H4 RSD H332 RSD:2H33 RSD H472 RSD:2H47 RSD H392 RSD:2H39 RSD H31A RSD:1H3 RSD H32A RSD:2H3 RSD H33 RSD:3H3 RSD H41 RSD:1H4 RSD H61 RSD:1H6 RSD H62 RSD:2H6 RSD H63 RSD:3H6 RSD H81 RSD:1H8 RSD H82 RSD:2H8 RSD H83 RSD:3H8 RSD H112 RSD:2H11 RSD H111 RSD:1H11 RSD H131 RSD:1H13 RSD H132 RSD:2H13 RSD H133 RSD:3H13 RSD H151 RSD:1H15 RSD H152 RSD:2H15 RSD H153 RSD:3H15 RSD H119 RSD:19H1 RSD H221 RSD:21H2 RSD H228 RSD:28H2 RSD H301 RSD:1H30 RSD H331 RSD:1H33 RSD H341 RSD:1H34 RSD H342 RSD:2H34 RSD H343 RSD:3H34 RSD H371 RSD:1H37 RSD H372 RSD:2H37 RSD H381 RSD:1H38 RSD H382 RSD:2H38 RSD H383 RSD:3H38 RSD H391 RSD:1H39 RSD H411 RSD:1H41 RSD H412 RSD:2H41 RSD H413 RSD:3H41 RSD H421 RSD:1H42 RSD H422 RSD:2H42 RSD H423 RSD:3H42 RSD H431 RSD:1H43 RSD H432 RSD:2H43 RSD H433 RSD:3H43 RSD H461 RSD:1H46 RSD H462 RSD:2H46 RSD H463 RSD:3H46 RSD H471 RSD:1H47 RSD H491 RSD:1H49 RSD H492 RSD:2H49 RSD H493 RSD:3H49 RSD H511 RSD:1H51 RSD H512 RSD:2H51 RSD H513 RSD:3H51 RSD H2C1 RSH:1H2C RSH H3C1 RSH:1H3C RSH H3C2 RSH:2H3C RSH H6C1 RSH:1H6C RSH H6C2 RSH:2H6C RSH H131 RSO:1H13 RSO H132 RSO:2H13 RSO H21 RSS:1H2 RSS H22A RSS:2H2 RSS H71 RSS:1H7 RSS H72 RSS:2H7 RSS H81 RSS:1H8 RSS H82 RSS:2H8 RSS H91 RSS:1H9 RSS H92 RSS:2H9 RSS H101 RSS:1H10 RSS H102 RSS:2H10 RSS H111 RSS:1H11 RSS H112 RSS:2H11 RSS H121 RSS:1H12 RSS H122 RSS:2H12 RSS H131 RSS:1H13 RSS H132 RSS:2H13 RSS H151 RSS:1H15 RSS H152 RSS:2H15 RSS H153 RSS:3H15 RSS H161 RSS:1H16 RSS H162 RSS:2H16 RSS H163 RSS:3H16 RSS H171 RSS:1H17 RSS H172 RSS:2H17 RSS H21 RST:1H2 RST H22 RST:2H2 RST HN31 RST:1HN3 RST HN32 RST:2HN3 RST H61 RST:1H6 RST H62 RST:2H6 RST H63 RST:3H6 RST HOP3 RT:3HOP RT HOP2 RT:2HOP RT H5' RT:1H5* RT H5'' RT:2H5* RT H4' RT: H4* RT H3' RT: H3* RT HO3' RT:H3T RT H2' RT: H2* RT HO2' RT:2HO* RT H1' RT: H1* RT H71 RT:1H5M RT H72 RT:2H5M RT H73 RT:3H5M RT H71 RTA:1H7 RTA H72 RTA:2H7 RTA H81 RTA:1H8 RTA H82 RTA:2H8 RTA H91 RTA:1H9 RTA H101 RTA:1H10 RTA H111 RTA:11H1 RTA H112 RTA:12H1 RTA H131 RTA:1H13 RTA H132 RTA:2H13 RTA H141 RTA:1H14 RTA H142 RTA:2H14 RTA H151 RTA:1H15 RTA H152 RTA:2H15 RTA H116 RTA:16H1 RTA H171 RTA:1H17 RTA H172 RTA:2H17 RTA H181 RTA:1H18 RTA H182 RTA:2H18 RTA H191 RTA:1H19 RTA H192 RTA:2H19 RTA H201 RTA:1H20 RTA H202 RTA:2H20 RTA H221 RTA:21H2 RTA H222 RTA:22H2 RTA H231 RTA:1H23 RTA H232 RTA:2H23 RTA H241 RTA:1H24 RTA H242 RTA:2H24 RTA H251 RTA:1H25 RTA H252 RTA:2H25 RTA H261 RTA:1H26 RTA H262 RTA:2H26 RTA H227 RTA:27H2 RTA H281 RTA:1H28 RTA H282 RTA:2H28 RTA H291 RTA:1H29 RTA H292 RTA:2H29 RTA H301 RTA:1H30 RTA H302 RTA:2H30 RTA H311 RTA:1H31 RTA H312 RTA:2H31 RTA H71 RTB:1H7 RTB H81 RTB:1H8 RTB H91 RTB:1H9 RTB H131 RTB:1H13 RTB H141 RTB:1H14 RTB H151 RTB:1H15 RTB H171 RTB:1H17 RTB H181 RTB:1H18 RTB H191 RTB:1H19 RTB H231 RTB:1H23 RTB H241 RTB:1H24 RTB H251 RTB:1H25 RTB H261 RTB:1H26 RTB H281 RTB:1H28 RTB H291 RTB:1H29 RTB H301 RTB:1H30 RTB H311 RTB:1H31 RTB H321 RTB:1H32 RTB H331 RTB:1H33 RTB H21 RTL:1H2 RTL H22 RTL:2H2 RTL H31 RTL:1H3 RTL H32 RTL:2H3 RTL H41 RTL:1H4 RTL H42 RTL:2H4 RTL H151 RTL:1H15 RTL H152 RTL:2H15 RTL H161 RTL:1H16 RTL H162 RTL:2H16 RTL H163 RTL:3H16 RTL H171 RTL:1H17 RTL H172 RTL:2H17 RTL H173 RTL:3H17 RTL H181 RTL:1H18 RTL H182 RTL:2H18 RTL H183 RTL:3H18 RTL H191 RTL:1H19 RTL H192 RTL:2H19 RTL H193 RTL:3H19 RTL H201 RTL:1H20 RTL H202 RTL:2H20 RTL H203 RTL:3H20 RTL HOG2 RTP:2HOG RTP HOG3 RTP:3HOG RTP HOB2 RTP:2HOB RTP HOA2 RTP:2HOA RTP H5'1 RTP:1H5* RTP H5'2 RTP:2H5* RTP H4' RTP: H4* RTP H1' RTP: H1* RTP HN31 RTP:1HN3 RTP HN32 RTP:2HN3 RTP H2' RTP: H2* RTP HO2' RTP:*HO2 RTP H3' RTP: H3* RTP HO3' RTP:*HO3 RTP H301 RTR:1H30 RTR H302 RTR:2H30 RTR H211 RTR:1H21 RTR H212 RTR:2H21 RTR H121 RTR:1H12 RTR H122 RTR:2H12 RTR H131 RTR:1H13 RTR H132 RTR:2H13 RTR H171 RTR:1H17 RTR H172 RTR:2H17 RTR H301 RU6:1H30 RU6 H302 RU6:2H30 RU6 H303 RU6:3H30 RU6 H311 RU6:1H31 RU6 H312 RU6:2H31 RU6 H313 RU6:3H31 RU6 H251 RU6:1H25 RU6 H252 RU6:2H25 RU6 H271 RU6:1H27 RU6 H272 RU6:2H27 RU6 H273 RU6:3H27 RU6 H281 RU6:1H28 RU6 H282 RU6:2H28 RU6 H283 RU6:3H28 RU6 H291 RU6:1H29 RU6 H292 RU6:2H29 RU6 H293 RU6:3H29 RU6 H321 RU6:1H32 RU6 H322 RU6:2H32 RU6 H323 RU6:3H32 RU6 H71 RU6:1H7 RU6 H72 RU6:2H7 RU6 H331 RU6:1H33 RU6 H332 RU6:2H33 RU6 H333 RU6:3H33 RU6 H351 RU6:1H35 RU6 H352 RU6:2H35 RU6 H353 RU6:3H35 RU6 H381 RU6:1H38 RU6 H382 RU6:2H38 RU6 H383 RU6:3H38 RU6 H401 RU6:1H40 RU6 H402 RU6:2H40 RU6 H411 RU6:1H41 RU6 H412 RU6:2H41 RU6 H421 RU6:1H42 RU6 H422 RU6:2H42 RU6 H431 RU6:1H43 RU6 H432 RU6:2H43 RU6 H341 RU6:1H34 RU6 H342 RU6:2H34 RU6 H343 RU6:3H34 RU6 H361 RU6:1H36 RU6 H362 RU6:2H36 RU6 H371 RU6:1H37 RU6 H372 RU6:2H37 RU6 H373 RU6:3H37 RU6 H151 RU6:1H15 RU6 H152 RU6:2H15 RU6 H201 RU6:1H20 RU6 H202 RU6:2H20 RU6 H203 RU6:3H20 RU6 H191 RU6:1H19 RU6 H192 RU6:2H19 RU6 H193 RU6:3H19 RU6 H211 RU6:1H21 RU6 H212 RU6:2H21 RU6 H213 RU6:3H21 RU6 H101 RU7:1H10 RU7 H102 RU7:2H10 RU7 H103 RU7:3H10 RU7 H91 RU7:1H9 RU7 H92 RU7:2H9 RU7 H93 RU7:3H9 RU7 H71 RU7:1H7 RU7 H72 RU7:2H7 RU7 H73 RU7:3H7 RU7 H381 RUA:1H38 RUA H382 RUA:2H38 RUA H383 RUA:3H38 RUA H181 RUA:1H18 RUA H119 RUA:19H1 RUA H151 RUA:1H15 RUA H241 RUA:1H24 RUA H231 RUA:1H23 RUA H220 RUA:20H2 RUA H211 RUA:1H21 RUA H222 RUA:22H2 RUA H391 RUA:1H39 RUA H392 RUA:2H39 RUA H393 RUA:3H39 RUA H31 RUA:1H3 RUA H41 RUA:1H4 RUA H51 RUA:1H5 RUA H77 RUA:7H7 RUA H61 RUA:1H6 RUA H88 RUA:8H8 RUA H91 RUA:1H9 RUA H101 RUA:1H10 RUA H111 RUA:1H11 RUA H121 RUA:1H12 RUA H271 RUA:1H27 RUA H281 RUA:1H28 RUA H291 RUA:1H29 RUA H331 RUA:31H3 RUA H301 RUA:1H30 RUA H332 RUA:32H3 RUA H33A RUA:1H33 RUA H341 RUA:1H34 RUA H351 RUA:1H35 RUA H361 RUA:1H36 RUA H11 RUB:1H1 RUB H12 RUB:2H1 RUB H51 RUB:1H5 RUB H52 RUB:2H5 RUB HOP2 RUB:2HOP RUB HOP3 RUB:3HOP RUB HOP5 RUB:5HOP RUB HOP6 RUB:6HOP RUB H2' RUN: H2" RUN H3'1 RUN:1H3" RUN H3'2 RUN:2H3" RUN H3'3 RUN:3H3" RUN H4'1 RUN:1H4" RUN H4'2 RUN:2H4" RUN H4'3 RUN:3H4" RUN H21 RUN:1H2 RUN H22 RUN:2H2 RUN H111 RUN:1H11 RUN H112 RUN:2H11 RUN H113 RUN:3H11 RUN H121 RUN:1H12 RUN H122 RUN:2H12 RUN H123 RUN:3H12 RUN HA1 RUN:1HA RUN HA2 RUN:2HA RUN HB1 RUN:1HB RUN HB2 RUN:2HB RUN HC1 RUN:1HC RUN HC2 RUN:2HC RUN H61 RUP:1H6 RUP H62 RUP:2H6 RUP H281 RUP:1H28 RUP H282 RUP:2H28 RUP H291 RUP:1H29 RUP H292 RUP:2H29 RUP H151 RUP:1H15 RUP H152 RUP:2H15 RUP H251 RUP:1H25 RUP H252 RUP:2H25 RUP H81 RUP:1H8 RUP H82 RUP:2H8 RUP H111 RUP:1H11 RUP H112 RUP:2H11 RUP H51 RUP:1H5 RUP H52 RUP:2H5 RUP H31 RUP:1H3 RUP H32A RUP:2H3 RUP H21A RUP:1H2 RUP H22A RUP:2H2 RUP H211 RUT:1H21 RUT H212 RUT:2H21 RUT H271 RUT:1H27 RUT H272 RUT:2H27 RUT H273 RUT:3H27 RUT HOP1 RVP:1HOP RVP HOP2 RVP:2HOP RVP H5'1 RVP:1H5* RVP H5'2 RVP:2H5* RVP H4' RVP: H4* RVP H3' RVP: H3* RVP HO'3 RVP:3HO* RVP H2' RVP: H2* RVP HO'2 RVP:2HO* RVP H1' RVP: H1* RVP HN1 RVP:1HN RVP HN2 RVP:2HN RVP H3C1 RWF:1H3C RWF H3C2 RWF:2H3C RWF H5C1 RWF:1H5C RWF H5C2 RWF:2H5C RWF H5C3 RWF:3H5C RWF H511 RWJ:1H51 RWJ H521 RWJ:1H52 RWJ H522 RWJ:2H52 RWJ H531 RWJ:1H53 RWJ H532 RWJ:2H53 RWJ H541 RWJ:1H54 RWJ H542 RWJ:2H54 RWJ H551 RWJ:1H55 RWJ H552 RWJ:2H55 RWJ H1N RWJ:1NH RWJ HA1 RWJ:1HA RWJ HB1 RWJ:1HB RWJ HB2 RWJ:2HB RWJ HG1 RWJ:1HG RWJ HG2 RWJ:2HG RWJ HD1 RWJ:1HD RWJ HD2 RWJ:2HD RWJ HE1 RWJ:1HE RWJ HN11 RWJ:1HN1 RWJ HN21 RWJ:1HN2 RWJ HN22 RWJ:2HN2 RWJ H631 RWJ:1H63 RWJ H641 RWJ:1H64 RWJ H651 RWJ:1H65 RWJ H661 RWJ:1H66 RWJ H251 RX3:1H25 RX3 H252 RX3:2H25 RX3 H201 RX3:1H20 RX3 H202 RX3:2H20 RX3 H211 RX3:1H21 RX3 H212 RX3:2H21 RX3 H221 RX3:1H22 RX3 H222 RX3:2H22 RX3 H101 RX3:1H10 RX3 H102 RX3:2H10 RX3 H21 RX3:1H2 RX3 H22 RX3:2H2 RX3 HN11 RXP:1HN1 RXP HN22 RXP:2HN2 RXP H21 RXP:1H2 RXP H22A RXP:2H2 RXP H131 RXP:1H13 RXP H132 RXP:2H13 RXP H381 RXP:1H38 RXP H382 RXP:2H38 RXP H391 RXP:1H39 RXP H392 RXP:2H39 RXP H211 RXP:1H21 RXP H212 RXP:2H21 RXP H231 RXP:1H23 RXP H232 RXP:2H23 RXP H311 RXP:1H31 RXP H312 RXP:2H31 RXP H711 RYU:1H71 RYU H712 RYU:2H71 RYU H713 RYU:3H71 RYU H211 RYU:1H21 RYU H212 RYU:2H21 RYU H221 RYU:1H22 RYU H222 RYU:2H22 RYU H241 RYU:1H24 RYU H242 RYU:2H24 RYU H251 RYU:1H25 RYU H252 RYU:2H25 RYU H111 S01:1H11 S01 H112 S01:2H11 S01 H141 S01:1H14 S01 H142 S01:2H14 S01 H231 S01:1H23 S01 H232 S01:2H23 S01 H233 S01:3H23 S01 H311 S01:1H31 S01 H312 S01:2H31 S01 H341 S01:1H34 S01 H342 S01:2H34 S01 H381 S01:1H38 S01 H382 S01:2H38 S01 H411 S01:1H41 S01 H412 S01:2H41 S01 H461 S01:1H46 S01 H462 S01:2H46 S01 HOP2 S02:2HOP S02 HOP3 S02:3HOP S02 H5'1 S02:1H5* S02 H5'2 S02:2H5* S02 HA1 S02:1HA S02 HA2 S02:2HA S02 H6A1 S02:1H6A S02 H6A2 S02:2H6A S02 H2A1 S02:1H2A S02 H2A2 S02:2H2A S02 H3A1 S02:1H3A S02 H3A2 S02:2H3A S02 H5A1 S02:1H5A S02 H5A2 S02:2H5A S02 H6B1 S02:1H6B S02 H6B2 S02:2H6B S02 H2B1 S02:1H2B S02 H2B2 S02:2H2B S02 H3B1 S02:1H3B S02 H3B2 S02:2H3B S02 H5B1 S02:1H5B S02 H5B2 S02:2H5B S02 HD'1 S02:1HD* S02 HD'2 S02:2HD* S02 H3'1 S02:1H3* S02 H3'2 S02:2H3* S02 HO3' S02:HO3* S02 H331 S03:1H33 S03 H332 S03:2H33 S03 H171 S03:1H17 S03 H172 S03:2H17 S03 H173 S03:3H17 S03 H241 S03:1H24 S03 H242 S03:2H24 S03 H271 S03:1H27 S03 H272 S03:2H27 S03 H281 S03:1H28 S03 H282 S03:2H28 S03 H311 S03:1H31 S03 H312 S03:2H31 S03 H301 S03:1H30 S03 H302 S03:2H30 S03 H21 S0H:1H2 S0H H22 S0H:2H2 S0H H11 S0H:1H1 S0H H12 S0H:2H1 S0H H13A S0H:3H1 S0H H121 S10:1H12 S10 H122 S10:2H12 S10 H131 S10:1H13 S10 H132 S10:2H13 S10 H133 S10:3H13 S10 H8C1 S10:1H8C S10 H8C2 S10:2H8C S10 H7C1 S10:1H7C S10 H7C2 S10:2H7C S10 H6C1 S10:1H6C S10 H6C2 S10:2H6C S10 H2C1 S10:1H2C S10 H2C2 S10:2H2C S10 H1C1 S10:1H1C S10 H1C2 S10:2H1C S10 H1C3 S10:3H1C S10 H131 S11:1H13 S11 H132 S11:2H13 S11 H133 S11:3H13 S11 H141 S11:1H14 S11 H142 S11:2H14 S11 H143 S11:3H14 S11 H151 S11:1H15 S11 H152 S11:2H15 S11 HA1 S11:1HA S11 HA2 S11:2HA S11 H241 S11:1H24 S11 H242 S11:2H24 S11 H301 S14:1H30 S14 H302 S14:2H30 S14 H351 S14:1H35 S14 H352 S14:2H35 S14 H353 S14:3H35 S14 H391 S14:1H39 S14 H392 S14:2H39 S14 H393 S14:3H39 S14 H431 S14:1H43 S14 H432 S14:2H43 S14 H451 S14:1H45 S14 H452 S14:2H45 S14 H461 S14:1H46 S14 H462 S14:2H46 S14 H131 S1A:1H13 S1A H132 S1A:2H13 S1A H141 S1A:1H14 S1A H142 S1A:2H14 S1A H151 S1A:1H15 S1A H152 S1A:2H15 S1A H161 S1A:1H16 S1A H162 S1A:2H16 S1A H191 S1A:1H19 S1A H192 S1A:2H19 S1A H193 S1A:3H19 S1A H201 S1A:1H20 S1A H202 S1A:2H20 S1A H203 S1A:3H20 S1A H211 S1A:1H21 S1A H212 S1A:2H21 S1A H213 S1A:3H21 S1A H221 S1A:1H22 S1A H222 S1A:2H22 S1A H223 S1A:3H22 S1A H231 S1A:1H23 S1A H232 S1A:2H23 S1A H233 S1A:3H23 S1A H241 S1A:1H24 S1A H242 S1A:2H24 S1A H243 S1A:3H24 S1A H2 S1H: HN2 S1H HB2 S1H:1HB S1H HB3 S1H:2HB S1H H11 S1H:1H1 S1H H12 S1H:2H1 S1H H21 S1H:1H2 S1H H22 S1H:2H2 S1H H31 S1H:1H3 S1H H32 S1H:2H3 S1H H41 S1H:1H4 S1H H42 S1H:2H4 S1H H51 S1H:1H5 S1H H52 S1H:2H5 S1H H61 S1H:1H6 S1H H62 S1H:2H6 S1H H71 S1H:1H7 S1H H72 S1H:2H7 S1H H81 S1H:1H8 S1H H82 S1H:2H8 S1H H91 S1H:1H9 S1H H92 S1H:2H9 S1H H101 S1H:1H10 S1H H102 S1H:2H10 S1H H111 S1H:1H11 S1H H112 S1H:2H11 S1H H121 S1H:1H12 S1H H122 S1H:2H12 S1H H131 S1H:1H13 S1H H132 S1H:2H13 S1H H141 S1H:1H14 S1H H142 S1H:2H14 S1H H151 S1H:1H15 S1H H152 S1H:2H15 S1H H161 S1H:1H16 S1H H162 S1H:2H16 S1H H163 S1H:3H16 S1H H391 S1S:1H39 S1S H392 S1S:2H39 S1S H121 S1S:1H12 S1S H122 S1S:2H12 S1S H321 S1S:1H32 S1S H322 S1S:2H32 S1S H331 S1S:1H33 S1S H332 S1S:2H33 S1S H341 S1S:1H34 S1S H342 S1S:2H34 S1S H351 S1S:1H35 S1S H352 S1S:2H35 S1S H361 S1S:1H36 S1S H362 S1S:2H36 S1S H281 S1S:1H28 S1S H282 S1S:2H28 S1S HN11 S1S:1HN1 S1S HN12 S1S:2HN1 S1S H251 S1S:1H25 S1S H252 S1S:2H25 S1S H101 S1S:1H10 S1S H102 S1S:2H10 S1S H61 S1T:1H6 S1T H62 S1T:2H6 S1T H71 S1T:1H7 S1T H72 S1T:2H7 S1T HM41 S1T:1HM4 S1T HM42 S1T:2HM4 S1T HM43 S1T:3HM4 S1T H7'1 S1T:1H7' S1T H7'2 S1T:2H7' S1T HM21 S1T:1HM2 S1T HM22 S1T:2HM2 S1T HM23 S1T:3HM2 S1T H4'1 S1T:1H4' S1T H4'2 S1T:2H4' S1T HP21 S1T:1HP2 S1T HP22 S1T:2HP2 S1T HP23 S1T:3HP2 S1T H91 S27:1H9 S27 H92 S27:2H9 S27 H93 S27:3H9 S27 H111 S27:1H11 S27 H112 S27:2H11 S27 H71 S27:1H7 S27 H72 S27:2H7 S27 H101 S27:1H10 S27 H102 S27:2H10 S27 H103 S27:3H10 S27 H231 S27:1H23 S27 H232 S27:2H23 S27 H233 S27:3H23 S27 H311 S2A:1H31 S2A H312 S2A:2H31 S2A H313 S2A:3H31 S2A HN1 S2A:1HN S2A HN2 S2A:2HN S2A HN3 S2A:3HN S2A HM1 S2A:1HM S2A HM2 S2A:2HM S2A HM3 S2A:3HM S2A HB1 S2C:1HB S2C HB2 S2C:2HB S2C HD1 S2C:1HD S2C HD2 S2C:2HD S2C HE1 S2C:1HE S2C HE2 S2C:2HE S2C H3C1 S2D:1H3C S2D H3C2 S2D:2H3C S2D H3C3 S2D:3H3C S2D H71 S2M:1H5M S2M H72 S2M:2H5M S2M H73 S2M:3H5M S2M H5' S2M:1H5* S2M H5'' S2M:2H5* S2M HOP2 S2M:2HOP S2M H4' S2M: H4* S2M H1' S2M: H1* S2M H2' S2M: H2* S2M H3' S2M: H3* S2M HO3' S2M:H3T S2M HA'1 S2M:1HA* S2M HA'2 S2M:2HA* S2M HB'1 S2M:1HB* S2M HB'2 S2M:2HB* S2M HD'1 S2M:1HD* S2M HD'2 S2M:2HD* S2M HD'3 S2M:3HD* S2M HOP3 S2M:3HOP S2M H61 S3P:1H6 S3P H62 S3P:2H6 S3P HAB1 S48:1HAB S48 HAB2 S48:2HAB S48 HAB3 S48:3HAB S48 HA1 S48:1HA S48 HA2 S48:2HA S48 HAA1 S48:1HAA S48 HAA2 S48:2HAA S48 HAA3 S48:3HAA S48 HAV1 S48:1HAV S48 HAV2 S48:2HAV S48 HAS1 S48:1HAS S48 HAS2 S48:2HAS S48 HAU1 S48:1HAU S48 HAU2 S48:2HAU S48 HAC1 S48:1HAC S48 HAC2 S48:2HAC S48 HAC3 S48:3HAC S48 H1' S4C: H1* S4C H41 S4C:1H4 S4C H42 S4C:2H4 S4C H2' S4C: H2* S4C H3' S4C: H3* S4C H4' S4C: H4* S4C H5' S4C:1H5* S4C H5'' S4C:2H5* S4C HA1 S4M:1HA S4M HA2 S4M:2HA S4M HN1 S4M:1HN S4M HN2 S4M:2HN S4M HB1 S4M:1HB S4M HB2 S4M:2HB S4M HG1 S4M:1HG S4M HG2 S4M:2HG S4M HE1 S4M:1HE S4M HE2 S4M:2HE S4M HE3 S4M:3HE S4M H5'1 S4M:1H5* S4M H5'2 S4M:2H5* S4M H4' S4M: H4* S4M H1' S4M: H1* S4M H2' S4M: H2* S4M HO2' S4M:HO2* S4M H3' S4M: H3* S4M HO3' S4M:HO3* S4M HN61 S4M:1HN6 S4M HN62 S4M:2HN6 S4M HOP1 S4U:1HOP S4U HOP2 S4U:2HOP S4U H5'1 S4U:1H5' S4U H5'2 S4U:2H5' S4U HO2' S4U:'HO2 S4U HO3' S4U:'HO3 S4U H231 S55:1H23 S55 H232 S55:2H23 S55 H233 S55:3H23 S55 H331 S55:1H33 S55 H332 S55:2H33 S55 H251 S55:1H25 S55 H252 S55:2H25 S55 H261 S55:1H26 S55 H262 S55:2H26 S55 H263 S55:3H26 S55 H141 S55:1H14 S55 H142 S55:2H14 S55 H111 S55:1H11 S55 H112 S55:2H11 S55 H101 S55:1H10 S55 H102 S55:2H10 S55 H11 S57:1H1 S57 H12 S57:2H1 S57 H13 S57:3H1 S57 H6B1 S57:1H6B S57 H6B2 S57:2H6B S57 H5B1 S57:1H5B S57 H5B2 S57:2H5B S57 H4B1 S57:1H4B S57 H4B2 S57:2H4B S57 H3B1 S57:1H3B S57 H3B2 S57:2H3B S57 H2B1 S57:1H2B S57 H2B2 S57:2H2B S57 H1B1 S57:1H1B S57 H1B2 S57:2H1B S57 HN31 S58:1HN3 S58 HN32 S58:2HN3 S58 H11 S5H:1H1 S5H H12 S5H:2H1 S5H H21 S5H:1H2 S5H H22 S5H:2H2 S5H H41 S5H:1H4 S5H H42 S5H:2H4 S5H H61 S5H:1H6 S5H H62 S5H:2H6 S5H H71 S5H:1H7 S5H H72 S5H:2H7 S5H H111 S5H:1H11 S5H H112 S5H:2H11 S5H H121 S5H:1H12 S5H H122 S5H:2H12 S5H H151 S5H:1H15 S5H H152 S5H:2H15 S5H H161 S5H:1H16 S5H H162 S5H:2H16 S5H H181 S5H:1H18 S5H H182 S5H:2H18 S5H H183 S5H:3H18 S5H H191 S5H:1H19 S5H H192 S5H:2H19 S5H H193 S5H:3H19 S5H H211 S5H:1H21 S5H H212 S5H:2H21 S5H H213 S5H:3H21 S5H HH21 S5H:1HH2 S5H HH22 S5H:2HH2 S5H HH31 S5H:1HH3 S5H HH32 S5H:2HH3 S5H HOH5 S5H:5HOH S5H HOP2 S6G:2HOP S6G HOP3 S6G:3HOP S6G H5' S6G:1H5* S6G H5'' S6G:2H5* S6G H4' S6G: H4* S6G H3' S6G: H3* S6G HO3' S6G:*HO3 S6G H2' S6G:1H2* S6G H2'' S6G:2H2* S6G H1' S6G: H1* S6G HN21 S6G:1HN2 S6G HN22 S6G:2HN2 S6G H11 S6P:1H1 S6P H12 S6P:2H1 S6P H61 S6P:1H6 S6P H62 S6P:2H6 S6P H11 S70:1H1 S70 H12 S70:2H1 S70 H41 S70:1H4 S70 H42 S70:2H4 S70 H91 S80:1H9 S80 H92 S80:2H9 S80 H81 S80:1H8 S80 H82 S80:2H8 S80 H71 S80:1H7 S80 H72 S80:2H7 S80 H61 S80:1H6 S80 H62 S80:2H6 S80 H111 S80:1H11 S80 H112 S80:2H11 S80 H121 S80:1H12 S80 H122 S80:2H12 S80 H131 S80:1H13 S80 H132 S80:2H13 S80 H141 S80:1H14 S80 H142 S80:2H14 S80 H171 S80:1H17 S80 H172 S80:2H17 S80 H173 S80:3H17 S80 H161 S80:1H16 S80 H162 S80:2H16 S80 H163 S80:3H16 S80 H181 S80:1H18 S80 H182 S80:2H18 S80 H191 S80:1H19 S80 H192 S80:2H19 S80 H201 S80:1H20 S80 H202 S80:2H20 S80 H203 S80:3H20 S80 H71 S91:1H7 S91 H72 S91:2H7 S91 HN51 S91:1HN5 S91 HN52 S91:2HN5 S91 H201 S91:1H20 S91 H202 S91:2H20 S91 H203 S91:3H20 S91 H121 S9L:1H12 S9L H122 S9L:2H12 S9L H221 S9L:1H22 S9L H222 S9L:2H22 S9L H131 S9L:1H13 S9L H132 S9L:2H13 S9L H231 S9L:1H23 S9L H232 S9L:2H23 S9L H141 S9L:1H14 S9L H142 S9L:2H14 S9L H241 S9L:1H24 S9L H242 S9L:2H24 S9L HO3' S9L:HO3* S9L H11A SA1:1H1 SA1 H12A SA1:2H1 SA1 H41 SA1:1H4 SA1 H42 SA1:2H4 SA1 H43 SA1:3H4 SA1 H141 SA1:1H14 SA1 H142 SA1:2H14 SA1 H151 SA1:1H15 SA1 H152 SA1:2H15 SA1 H161 SA1:1H16 SA1 H162 SA1:2H16 SA1 H201 SA1:1H20 SA1 H202 SA1:2H20 SA1 H191 SA2:1H19 SA2 H192 SA2:2H19 SA2 H181 SA2:1H18 SA2 H182 SA2:2H18 SA2 H171 SA2:1H17 SA2 H172 SA2:2H17 SA2 H141 SA2:1H14 SA2 H142 SA2:2H14 SA2 H211 SA2:1H21 SA2 H212 SA2:2H21 SA2 H213 SA2:3H21 SA2 H52 SA2:2H5 SA2 H62 SA2:2H6 SA2 H361 SA3:1H36 SA3 H362 SA3:2H36 SA3 H191 SA4:1H19 SA4 H192 SA4:2H19 SA4 H193 SA4:3H19 SA4 H51 SA5:1H5 SA5 H52 SA5:2H5 SA5 H181 SA7:1H18 SA7 H182 SA7:2H18 SA7 H183 SA7:3H18 SA7 HN1 SA8:1HN SA8 HN2 SA8:2HN SA8 HB1 SA8:1HB SA8 HB2 SA8:2HB SA8 HG1 SA8:1HG SA8 HG2 SA8:2HG SA8 HE1 SA8:1HE SA8 HE2 SA8:2HE SA8 HE3 SA8:3HE SA8 H5'1 SA8:1H5* SA8 H5'2 SA8:2H5* SA8 H4' SA8: H4* SA8 H3' SA8: H3* SA8 H2' SA8: H2* SA8 H1' SA8: H1* SA8 HN61 SA8:1HN6 SA8 HN62 SA8:2HN6 SA8 H91 SAA:1H9 SAA H92 SAA:2H9 SAA H93 SAA:3H9 SAA H1'1 SAB:1H1' SAB H1'2 SAB:2H1' SAB H2'1 SAB:1H2' SAB H2'2 SAB:2H2' SAB H3'1 SAB:1H3' SAB H3'2 SAB:2H3' SAB H4'1 SAB:1H4' SAB H4'2 SAB:2H4' SAB HN41 SAB:1HN4 SAB HN42 SAB:2HN4 SAB HN31 SAB:1HN3 SAB HN32 SAB:2HN3 SAB H2A1 SAC:1H2A SAC H2A2 SAC:2H2A SAC H2A3 SAC:3H2A SAC H SAC: HN SAC HB2 SAC:1HB SAC HB3 SAC:2HB SAC HG SAC: HOG SAC HOA2 SAD:2HOA SAD H51A SAD:AH51 SAD H52A SAD:AH52 SAD H4B SAD:AH4* SAD H3B SAD:AH3* SAD HO3A SAD:AHO3 SAD H2B SAD:AH2* SAD HO2A SAD:AHO2 SAD H1B SAD:AH1* SAD H8A SAD: AH8 SAD H61A SAD:AH61 SAD H62A SAD:AH62 SAD H2A SAD: AH2 SAD H31 SAD:1H3 SAD H32 SAD:2H3 SAD HON2 SAD:2HON SAD H51N SAD:NH51 SAD H52N SAD:NH52 SAD H4D SAD:NH4* SAD H3D SAD:NH3* SAD HO3N SAD:NHO3 SAD H2D SAD:NH2* SAD HO2N SAD:NHO2 SAD H1D SAD:NH1* SAD H61N SAD:NH61 SAD H62N SAD:NH62 SAD HOA2 SAE:2HOA SAE H51A SAE:AH51 SAE H52A SAE:AH52 SAE H4B SAE:AH4* SAE H3B SAE:AH3* SAE HO3A SAE:AHO3 SAE H2B SAE:AH2* SAE HO2A SAE:AHO2 SAE H1B SAE:AH1* SAE H8A SAE: AH8 SAE H61A SAE:AH61 SAE H62A SAE:AH62 SAE H2A SAE: AH2 SAE HON2 SAE:2HON SAE H51N SAE:NH51 SAE H52N SAE:NH52 SAE H4D SAE:NH4* SAE H3D SAE:NH3* SAE HO3N SAE:NHO3 SAE H2D SAE:NH2* SAE HO2N SAE:NHO2 SAE H1D SAE:NH1* SAE H61N SAE:NH61 SAE H62N SAE:NH62 SAE H7C1 SAF:1H7C SAF H7C2 SAF:2H7C SAF H7C3 SAF:3H7C SAF H8C1 SAF:1H8C SAF H8C2 SAF:2H8C SAF H8C3 SAF:3H8C SAF H101 SAF:1H10 SAF H102 SAF:2H10 SAF H103 SAF:3H10 SAF H7C1 SAG:1H7C SAG H7C2 SAG:2H7C SAG H181 SAG:1H18 SAG H182 SAG:2H18 SAG H183 SAG:3H18 SAG H211 SAG:1H21 SAG H212 SAG:2H21 SAG HN1 SAH:1HN SAH HN2 SAH:2HN SAH HB1 SAH:1HB SAH HB2 SAH:2HB SAH HG1 SAH:1HG SAH HG2 SAH:2HG SAH H5'1 SAH:1H5* SAH H5'2 SAH:2H5* SAH H4' SAH: H4* SAH H3' SAH: H3* SAH HO3' SAH:*HO3 SAH H2' SAH: H2* SAH HO2' SAH:*HO2 SAH H1' SAH: H1* SAH HN61 SAH:1HN6 SAH HN62 SAH:2HN6 SAH HN1 SAI:1HN SAI HN2 SAI:2HN SAI HB1 SAI:1HB SAI HB2 SAI:2HB SAI HG1 SAI:1HG SAI HG2 SAI:2HG SAI H5'1 SAI:1H5* SAI H5'2 SAI:2H5* SAI H4' SAI: H4* SAI H3' SAI: H3* SAI HO3' SAI:*HO3 SAI H2' SAI: H2* SAI HO2' SAI:*HO2 SAI H1' SAI: H1* SAI HN61 SAI:1HN6 SAI HN62 SAI:2HN6 SAI HO2' SAL:'HO2 SAL HN1 SAM:1HN SAM HN2 SAM:2HN SAM HB1 SAM:1HB SAM HB2 SAM:2HB SAM HG1 SAM:1HG SAM HG2 SAM:2HG SAM HE1 SAM:1HE SAM HE2 SAM:2HE SAM HE3 SAM:3HE SAM H5'1 SAM:1H5* SAM H5'2 SAM:2H5* SAM H4' SAM: H4* SAM H3' SAM: H3* SAM HO3' SAM:*HO3 SAM H2' SAM: H2* SAM HO2' SAM:*HO2 SAM H1' SAM: H1* SAM HN61 SAM:1HN6 SAM HN62 SAM:2HN6 SAM HN11 SAN:1HN1 SAN HN12 SAN:2HN1 SAN HN21 SAN:1HN2 SAN HN22 SAN:2HN2 SAN HOG2 SAP:2HOG SAP HOG3 SAP:3HOG SAP HOB2 SAP:2HOB SAP HOA2 SAP:2HOA SAP H5'1 SAP:1H5* SAP H5'2 SAP:2H5* SAP H4' SAP: H4* SAP H3' SAP: H3* SAP HO3' SAP:*HO3 SAP H2' SAP: H2* SAP HO2' SAP:*HO2 SAP H1' SAP: H1* SAP HN61 SAP:1HN6 SAP HN62 SAP:2HN6 SAP H SAR: HN SAR HA2 SAR:1HA SAR HA3 SAR:2HA SAR HN1 SAR:1HN SAR HN2 SAR:2HN SAR HN3 SAR:3HN SAR H021 SAZ:1H02 SAZ H022 SAZ:2H02 SAZ H031 SAZ:1H03 SAZ H032 SAZ:2H03 SAZ H071 SAZ:1H07 SAZ H072 SAZ:2H07 SAZ H091 SAZ:1H09 SAZ H092 SAZ:2H09 SAZ H101 SAZ:1H10 SAZ H102 SAZ:2H10 SAZ H161 SAZ:1H16 SAZ H162 SAZ:2H16 SAZ H163 SAZ:3H16 SAZ H171 SAZ:1H17 SAZ H172 SAZ:2H17 SAZ H173 SAZ:3H17 SAZ H261 SAZ:1H26 SAZ H262 SAZ:2H26 SAZ H263 SAZ:3H26 SAZ H361 SAZ:1H36 SAZ H362 SAZ:2H36 SAZ H363 SAZ:3H36 SAZ H51 SB1:1H5 SB1 H52 SB1:2H5 SB1 H81 SB1:1H8 SB1 H82 SB1:2H8 SB1 H91 SB1:1H9 SB1 H92 SB1:2H9 SB1 H101 SB1:1H10 SB1 H102 SB1:2H10 SB1 H111 SB1:1H11 SB1 H112 SB1:2H11 SB1 H121 SB1:1H12 SB1 H122 SB1:2H12 SB1 H131 SB1:1H13 SB1 H132 SB1:2H13 SB1 H141 SB1:1H14 SB1 H142 SB1:2H14 SB1 H151 SB1:1H15 SB1 H152 SB1:2H15 SB1 H161 SB1:1H16 SB1 H162 SB1:2H16 SB1 H171 SB1:1H17 SB1 H172 SB1:2H17 SB1 H181 SB1:1H18 SB1 H182 SB1:2H18 SB1 H221 SB1:1H22 SB1 H222 SB1:2H22 SB1 H231 SB1:1H23 SB1 H232 SB1:2H23 SB1 H241 SB1:1H24 SB1 H242 SB1:2H24 SB1 H251 SB1:1H25 SB1 H252 SB1:2H25 SB1 H261 SB1:1H26 SB1 H262 SB1:2H26 SB1 H263 SB1:3H26 SB1 H271 SB1:1H27 SB1 H272 SB1:2H27 SB1 H273 SB1:3H27 SB1 H11 SB2:1H1 SB2 H12 SB2:2H1 SB2 H13 SB2:3H1 SB2 H31 SB3:1H3 SB3 H32 SB3:2H3 SB3 H41 SB3:1H4 SB3 H42 SB3:2H4 SB3 H51 SB3:1H5 SB3 H52 SB3:2H5 SB3 H61 SB3:1H6 SB3 H62 SB3:2H6 SB3 H111 SB3:1H11 SB3 H112 SB3:2H11 SB3 H121 SB3:1H12 SB3 H122 SB3:2H12 SB3 H123 SB3:3H12 SB3 H131 SB3:1H13 SB3 H132 SB3:2H13 SB3 H133 SB3:3H13 SB3 H141 SB3:1H14 SB3 H142 SB3:2H14 SB3 H143 SB3:3H14 SB3 H161 SB3:1H16 SB3 H162 SB3:2H16 SB3 H171 SB3:1H17 SB3 H172 SB3:2H17 SB3 H11 SB4:1H1 SB4 H12 SB4:2H1 SB4 H21 SB4:1H2 SB4 H22 SB4:2H2 SB4 H41 SB4:1H4 SB4 H42 SB4:2H4 SB4 H51 SB4:1H5 SB4 H52 SB4:2H5 SB4 HN71 SB4:1HN7 SB4 HN72 SB4:2HN7 SB4 HN71 SB5:1HN7 SB5 HN72 SB5:2HN7 SB5 HCD1 SB5:1HCD SB5 HCD2 SB5:2HCD SB5 HC21 SB5:1HC2 SB5 HC22 SB5:2HC2 SB5 HC31 SB5:1HC3 SB5 HC32 SB5:2HC3 SB5 HCD1 SB6:1HCD SB6 HCD2 SB6:2HCD SB6 HE21 SB6:1HE2 SB6 HE22 SB6:2HE2 SB6 HE31 SB6:1HE3 SB6 HE32 SB6:2HE3 SB6 H71 SB7:1H7 SB7 H72 SB7:2H7 SB7 H81 SB7:1H8 SB7 H82 SB7:2H8 SB7 H111 SB7:1H11 SB7 H112 SB7:2H11 SB7 H241 SB7:1H24 SB7 H242 SB7:2H24 SB7 H251 SB8:1H25 SB8 H252 SB8:2H25 SB8 H261 SB8:1H26 SB8 H262 SB8:2H26 SB8 H71 SB9:1H7 SB9 H72 SB9:2H7 SB9 H73 SB9:3H7 SB9 H111 SB9:1H11 SB9 H112 SB9:2H11 SB9 H121 SB9:1H12 SB9 H122 SB9:2H12 SB9 H151 SB9:1H15 SB9 H152 SB9:2H15 SB9 H71 SBA:1H7 SBA H72 SBA:2H7 SBA H231 SBA:1H23 SBA H232 SBA:2H23 SBA H251 SBA:1H25 SBA H252 SBA:2H25 SBA H253 SBA:3H25 SBA H261 SBA:1H26 SBA H262 SBA:2H26 SBA H263 SBA:3H26 SBA H191 SBA:1H19 SBA H192 SBA:2H19 SBA H211 SBA:1H21 SBA H212 SBA:2H21 SBA H213 SBA:3H21 SBA H221 SBA:1H22 SBA H222 SBA:2H22 SBA H223 SBA:3H22 SBA H161 SBA:1H16 SBA H162 SBA:2H16 SBA H181 SBA:1H18 SBA H182 SBA:2H18 SBA H183 SBA:3H18 SBA H101 SBB:1H10 SBB H102 SBB:2H10 SBB H121 SBB:1H12 SBB H122 SBB:2H12 SBB H131 SBB:1H13 SBB H132 SBB:2H13 SBB H133 SBB:3H13 SBB H151 SBB:1H15 SBB H152 SBB:2H15 SBB H201 SBC:1H20 SBC H202 SBC:2H20 SBC H251 SBC:1H25 SBC H252 SBC:2H25 SBC H SBD:1HN SBD H2 SBD:2HN SBD HB2 SBD:1HB SBD HB3 SBD:2HB SBD H111 SBD:1H11 SBD H112 SBD:2H11 SBD HC2 SBD: H2 SBD H161 SBD:1H16 SBD H162 SBD:2H16 SBD H163 SBD:3H16 SBD HZ12 SBE:2HZ1 SBE HZ13 SBE:3HZ1 SBE HZ22 SBE:2HZ2 SBE HZ23 SBE:3HZ2 SBE HN1 SBG:1HN SBG HN2 SBG:2HN SBG HBC1 SBG:1HBC SBG HBC2 SBG:2HBC SBG H1C1 SBG:1H1C SBG H1C2 SBG:2H1C SBG H1C3 SBG:3H1C SBG H11 SBH:1H1 SBH H12 SBH:2H1 SBH H21 SBH:1H2 SBH H22 SBH:2H2 SBH H41 SBH:1H4 SBH H42 SBH:2H4 SBH H43 SBH:3H4 SBH H51 SBH:1H5 SBH H52 SBH:2H5 SBH H51 SBI:1H5 SBI H52 SBI:2H5 SBI H61 SBI:1H6 SBI H62 SBI:2H6 SBI H SBL:1HN SBL H2 SBL:2HN SBL HB2 SBL:1HB SBL HB3 SBL:2HB SBL H111 SBL:1H11 SBL H112 SBL:2H11 SBL HC2 SBL: H2 SBL H161 SBL:1H16 SBL H162 SBL:2H16 SBL H163 SBL:3H16 SBL HN11 SBN:1HN1 SBN HN12 SBN:2HN1 SBN H141 SBN:1H14 SBN H142 SBN:2H14 SBN H143 SBN:3H14 SBN H151 SBN:1H15 SBN H152 SBN:2H15 SBN H153 SBN:3H15 SBN H11 SBO:1H1 SBO H21 SBO:1H2 SBO H31 SBO:1H3 SBO HZ22 SBP:2HZ2 SBP HZ23 SBP:3HZ2 SBP HZ32 SBP:2HZ3 SBP HZ33 SBP:3HZ3 SBP HZ12 SBP:2HZ1 SBP HZ13 SBP:3HZ1 SBP HH2 SBP:2HH SBP HH3 SBP:3HH SBP HQ2 SBP:2HQ SBP HQ3 SBP:3HQ SBP HL11 SBP:1HL1 SBP HL12 SBP:2HL1 SBP HL21 SBP:1HL2 SBP HL22 SBP:2HL2 SBP HC11 SBR:1HC1 SBR HC12 SBR:2HC1 SBR HC31 SBR:1HC3 SBR HC32 SBR:2HC3 SBR HN61 SBR:1HN6 SBR HN62 SBR:2HN6 SBR H261 SBR:1H26 SBR H262 SBR:2H26 SBR H263 SBR:3H26 SBR HC11 SBS:1HC1 SBS HC12 SBS:2HC1 SBS HC31 SBS:1HC3 SBS HC32 SBS:2HC3 SBS HN61 SBS:1HN6 SBS HN62 SBS:2HN6 SBS H261 SBS:1H26 SBS H262 SBS:2H26 SBS H263 SBS:3H26 SBS H11 SBT:1H1 SBT H12 SBT:2H1 SBT H13 SBT:3H1 SBT H31 SBT:1H3 SBT H32 SBT:2H3 SBT H41 SBT:1H4 SBT H42 SBT:2H4 SBT H43 SBT:3H4 SBT H11 SBU:1H1 SBU H12 SBU:2H1 SBU H13 SBU:3H1 SBU H21 SBU:1H2 SBU H31 SBU:1H3 SBU H32 SBU:2H3 SBU H41 SBU:1H4 SBU H42 SBU:2H4 SBU H43 SBU:3H4 SBU H31 SBX:1H3 SBX H32 SBX:2H3 SBX H41 SBX:1H4 SBX H42 SBX:2H4 SBX H51 SBX:1H5 SBX H52 SBX:2H5 SBX H61 SBX:1H6 SBX H62 SBX:2H6 SBX H111 SBX:1H11 SBX H112 SBX:2H11 SBX H121 SBX:1H12 SBX H122 SBX:2H12 SBX H123 SBX:3H12 SBX H131 SBX:1H13 SBX H132 SBX:2H13 SBX H133 SBX:3H13 SBX H141 SBX:1H14 SBX H142 SBX:2H14 SBX H143 SBX:3H14 SBX H161 SBX:1H16 SBX H162 SBX:2H16 SBX H171 SBX:1H17 SBX H172 SBX:2H17 SBX H251 SBX:1H25 SBX H252 SBX:2H25 SBX H261 SBX:1H26 SBX H262 SBX:2H26 SBX H271 SBX:1H27 SBX H272 SBX:2H27 SBX H281 SBX:1H28 SBX H282 SBX:2H28 SBX H291 SBX:1H29 SBX H292 SBX:2H29 SBX HZ22 SBZ:2HZ2 SBZ HZ23 SBZ:3HZ2 SBZ HZ32 SBZ:2HZ3 SBZ HZ33 SBZ:3HZ3 SBZ HZ12 SBZ:2HZ1 SBZ HZ13 SBZ:3HZ1 SBZ HM12 SBZ:2HM1 SBZ HM13 SBZ:3HM1 SBZ HM22 SBZ:2HM2 SBZ HM23 SBZ:3HM2 SBZ HN41 SC:1HN4 SC HN42 SC:2HN4 SC H1' SC: H1* SC H2' SC:1H2* SC H2'' SC:2H2* SC H3' SC: H3* SC H4' SC: H4* SC HO3' SC:*HO3 SC H5' SC:1H5* SC H5'' SC:2H5* SC HOP1 SC:1HOP SC HOP3 SC:3HOP SC HAA1 SC0:1HAA SC0 HAA2 SC0:2HAA SC0 HAA3 SC0:3HAA SC0 HAM1 SC0:1HAM SC0 HAM2 SC0:2HAM SC0 HAS1 SC0:1HAS SC0 HAS2 SC0:2HAS SC0 HAU1 SC0:1HAU SC0 HAU2 SC0:2HAU SC0 HAO1 SC0:1HAO SC0 HAO2 SC0:2HAO SC0 HAQ1 SC0:1HAQ SC0 HAQ2 SC0:2HAQ SC0 HAR1 SC0:1HAR SC0 HAR2 SC0:2HAR SC0 HAP1 SC0:1HAP SC0 HAP2 SC0:2HAP SC0 HAV1 SC0:1HAV SC0 HAV2 SC0:2HAV SC0 HAT1 SC0:1HAT SC0 HAT2 SC0:2HAT SC0 HAN1 SC0:1HAN SC0 HAN2 SC0:2HAN SC0 HAB1 SC0:1HAB SC0 HAB2 SC0:2HAB SC0 HAB3 SC0:3HAB SC0 H61 SC1:1H6 SC1 H62 SC1:2H6 SC1 H91 SC1:1H9 SC1 H92 SC1:2H9 SC1 H93 SC1:3H9 SC1 HBC1 SC2:1HBC SC2 HBC2 SC2:2HBC SC2 HMC1 SC2:1HMC SC2 HMC2 SC2:2HMC SC2 HMC3 SC2:3HMC SC2 H111 SC3:1H11 SC3 H112 SC3:2H11 SC3 H121 SC3:1H12 SC3 H122 SC3:2H12 SC3 H131 SC3:1H13 SC3 H132 SC3:2H13 SC3 H141 SC3:1H14 SC3 H142 SC3:2H14 SC3 H151 SC3:1H15 SC3 H152 SC3:2H15 SC3 H161 SC3:1H16 SC3 H162 SC3:2H16 SC3 H241 SC3:1H24 SC3 H242 SC3:2H24 SC3 H243 SC3:3H24 SC3 H261 SC3:1H26 SC3 H262 SC3:2H26 SC3 H263 SC3:3H26 SC3 H71 SC4:1H7 SC4 H72 SC4:2H7 SC4 H211 SC4:1H21 SC4 H212 SC4:2H21 SC4 H213 SC4:3H21 SC4 H141 SC4:1H14 SC4 H142 SC4:2H14 SC4 H71 SC5:1H7 SC5 H72 SC5:2H7 SC5 H73 SC5:3H7 SC5 H91 SC5:1H9 SC5 H92 SC5:2H9 SC5 H121 SC5:1H12 SC5 H122 SC5:2H12 SC5 HN41 SC5:1HN4 SC5 HN42 SC5:2HN4 SC5 HN61 SCA:1HN6 SCA HN62 SCA:2HN6 SCA HO2' SCA:'HO2 SCA H5'1 SCA:1H5' SCA H5'2 SCA:2H5' SCA HPB1 SCA:1HPB SCA HPB2 SCA:2HPB SCA H91 SCA:1H9 SCA H92 SCA:2H9 SCA H93 SCA:3H9 SCA H81 SCA:1H8 SCA H82 SCA:2H8 SCA H83 SCA:3H8 SCA H51 SCA:1H5 SCA H52 SCA:2H5 SCA H41 SCA:1H4 SCA H42 SCA:2H4 SCA H21 SCA:1H2 SCA H22 SCA:2H2 SCA H11 SCA:1H1 SCA H12 SCA:2H1 SCA HS21 SCA:1HS2 SCA HS22 SCA:2HS2 SCA HS31 SCA:1HS3 SCA HS32 SCA:2HS3 SCA H11 SCB:1H1 SCB H12A SCB:2H1 SCB H13A SCB:3H1 SCB H21A SCB:1H2 SCB H22A SCB:2H2 SCB H31 SCB:1H3 SCB H32 SCB:2H3 SCB H11 SCC:1H1 SCC H12 SCC:2H1 SCC H21 SCC:1H2 SCC H22 SCC:2H2 SCC H23 SCC:3H2 SCC HN61 SCD:1HN6 SCD HN62 SCD:2HN6 SCD HO2' SCD:'HO2 SCD H5'1 SCD:1H5' SCD H5'2 SCD:2H5' SCD HPB1 SCD:1HPB SCD HPB2 SCD:2HPB SCD HP91 SCD:1HP9 SCD HP92 SCD:2HP9 SCD HP93 SCD:3HP9 SCD HP81 SCD:1HP8 SCD HP82 SCD:2HP8 SCD HP83 SCD:3HP8 SCD HOP3 SCD:3HOP SCD HNP2 SCD:2HNP SCD HP51 SCD:1HP5 SCD HP52 SCD:2HP5 SCD HP41 SCD:1HP4 SCD HP42 SCD:2HP4 SCD HNP1 SCD:1HNP SCD HP21 SCD:1HP2 SCD HP22 SCD:2HP2 SCD HP11 SCD:1HP1 SCD HP12 SCD:2HP1 SCD HPS1 SCD:1HPS SCD HPS2 SCD:2HPS SCD HS21 SCD:1HS2 SCD HS22 SCD:2HS2 SCD HS31 SCD:1HS3 SCD HS32 SCD:2HS3 SCD HOS5 SCD:5HOS SCD H91 SCG:1H9 SCG H92 SCG:2H9 SCG H81 SCG:1H8 SCG H82 SCG:2H8 SCG H151 SCG:1H15 SCG H152 SCG:2H15 SCG H153 SCG:3H15 SCG H231 SCG:1H23 SCG H232 SCG:2H23 SCG H2 SCH: HN SCH HB2 SCH:1HB SCH HB3 SCH:2HB SCH HE1 SCH:1HE SCH HE2 SCH:2HE SCH HE3 SCH:3HE SCH HN1 SCI:1HN SCI HN2 SCI:2HN SCI HB1 SCI:1HB SCI HB2 SCI:2HB SCI HG1 SCI:1HG SCI HG2 SCI:2HG SCI HD1 SCI:1HD SCI HD2 SCI:2HD SCI HN11 SCI:1HN1 SCI HN12 SCI:2HN1 SCI H151 SCK:1H15 SCK H152 SCK:2H15 SCK H161 SCK:1H16 SCK H162 SCK:2H16 SCK H201 SCK:1H20 SCK H202 SCK:2H20 SCK H203 SCK:3H20 SCK H191 SCK:1H19 SCK H192 SCK:2H19 SCK H193 SCK:3H19 SCK H181 SCK:1H18 SCK H182 SCK:2H18 SCK H183 SCK:3H18 SCK H111 SCK:1H11 SCK H112 SCK:2H11 SCK H61 SCK:1H6 SCK H62 SCK:2H6 SCK H31 SCK:1H3 SCK H32 SCK:2H3 SCK H21 SCK:1H2 SCK H22 SCK:2H2 SCK H81 SCK:1H8 SCK H82 SCK:2H8 SCK H83 SCK:3H8 SCK H91 SCK:1H9 SCK H92 SCK:2H9 SCK H93 SCK:3H9 SCK H101 SCK:1H10 SCK H102 SCK:2H10 SCK H103 SCK:3H10 SCK H91 SCL:1H9 SCL H92 SCL:2H9 SCL H93 SCL:3H9 SCL H2M1 SCM:1H2M SCM H2M2 SCM:2H2M SCM H2M3 SCM:3H2M SCM H31 SCM:1H3 SCM H32 SCM:2H3 SCM H8M1 SCM:1H8M SCM H8M2 SCM:2H8M SCM H8M3 SCM:3H8M SCM H1M1 SCM:1H1M SCM H1M2 SCM:2H1M SCM H1M3 SCM:3H1M SCM HN61 SCO:1HN6 SCO HN62 SCO:2HN6 SCO HC2' SCO:*HC2 SCO HC51 SCO:1HC5 SCO HC52 SCO:2HC5 SCO H111 SCO:1H11 SCO H112 SCO:2H11 SCO H131 SCO:1H13 SCO H132 SCO:2H13 SCO H133 SCO:3H13 SCO H141 SCO:1H14 SCO H142 SCO:2H14 SCO H143 SCO:3H14 SCO H271 SCO:1H27 SCO H272 SCO:2H27 SCO H261 SCO:1H26 SCO H262 SCO:2H26 SCO H331 SCO:1H33 SCO H332 SCO:2H33 SCO H321 SCO:1H32 SCO H322 SCO:2H32 SCO H421 SCO:1H42 SCO H422 SCO:2H42 SCO H431 SCO:1H43 SCO H432 SCO:2H43 SCO H2A1 SCP:1H2A SCP H2A2 SCP:2H2A SCP H2A3 SCP:3H2A SCP H4A1 SCP:1H4A SCP H4A2 SCP:2H4A SCP H5A1 SCP:1H5A SCP H5A2 SCP:2H5A SCP HOP2 SCP:2HOP SCP HOP3 SCP:3HOP SCP HB1 SCP:1HB SCP HB2 SCP:2HB SCP H61 SCR:1H6 SCR H62 SCR:2H6 SCR H111 SCR:1H11 SCR H112 SCR:2H11 SCR H161 SCR:1H16 SCR H162 SCR:2H16 SCR H SCS:1HN SCS H2 SCS:2HN SCS HC SCS: H SCS HB2 SCS:1HB SCS HB3 SCS:2HB SCS HE1 SCS:1HE SCS HE2 SCS:2HE SCS HE3 SCS:3HE SCS HZ2 SCS:1HZ SCS HZ3 SCS:2HZ SCS H141 SCT:1H14 SCT H142 SCT:2H14 SCT H121 SCT:1H12 SCT H122 SCT:2H12 SCT H151 SCT:1H15 SCT H152 SCT:2H15 SCT H3C1 SCT:1H3C SCT H3C2 SCT:2H3C SCT H3C3 SCT:3H3C SCT H111 SCU:1H11 SCU H112 SCU:2H11 SCU H61 SCU:1H6 SCU H62 SCU:2H6 SCU H151 SCU:1H15 SCU H152 SCU:2H15 SCU H161 SCU:1H16 SCU H162 SCU:2H16 SCU H201 SCU:1H20 SCU H202 SCU:2H20 SCU H203 SCU:3H20 SCU H191 SCU:1H19 SCU H192 SCU:2H19 SCU H193 SCU:3H19 SCU H181 SCU:1H18 SCU H182 SCU:2H18 SCU H183 SCU:3H18 SCU HC2 SCV:2HC SCV HC31 SCV:1HC3 SCV HC32 SCV:2HC3 SCV HC41 SCV:1HC4 SCV HC42 SCV:2HC4 SCV HC7 SCV:7HC SCV HC01 SCV:1HC0 SCV HC21 SCV:1HC2 SCV H131 SCV:1H13 SCV H132 SCV:2H13 SCV H133 SCV:3H13 SCV HC51 SCV:1HC5 SCV HC52 SCV:2HC5 SCV HN11 SCV:1HN1 SCV HN12 SCV:2HN1 SCV HO2 SCV:2HO SCV H141 SCV:1H14 SCV H142 SCV:2H14 SCV H143 SCV:3H14 SCV HO6 SCV:6HO SCV HN2 SCV:2HN SCV H2 SCY: HN2 SCY HB2 SCY:1HB SCY HB3 SCY:2HB SCY HE1 SCY:1HE SCY HE2 SCY:2HE SCY HE3 SCY:3HE SCY HBE1 SD2:1HBE SD2 HBE2 SD2:2HBE SD2 HBE3 SD2:3HBE SD2 HBC1 SD2:1HBC SD2 HBC2 SD2:2HBC SD2 HBB1 SD2:1HBB SD2 HBB2 SD2:2HBB SD2 HBF1 SD2:1HBF SD2 HBF2 SD2:2HBF SD2 HAU1 SD2:1HAU SD2 HAU2 SD2:2HAU SD2 HAV1 SD2:1HAV SD2 HAV2 SD2:2HAV SD2 HAW1 SD2:1HAW SD2 HAW2 SD2:2HAW SD2 HAD1 SD2:1HAD SD2 HAD2 SD2:2HAD SD2 HAI1 SD2:1HAI SD2 HAI2 SD2:2HAI SD2 H21 SD8:1H2 SD8 H22 SD8:2H2 SD8 H91 SD8:1H9 SD8 H92 SD8:2H9 SD8 H101 SD8:1H10 SD8 H102 SD8:2H10 SD8 H111 SD8:1H11 SD8 H112 SD8:2H11 SD8 H121 SD8:1H12 SD8 H122 SD8:2H12 SD8 H171 SD8:1H17 SD8 H172 SD8:2H17 SD8 H181 SD8:1H18 SD8 H182 SD8:2H18 SD8 H183 SD8:3H18 SD8 H131 SDA:1H13 SDA H132 SDA:2H13 SDA H101 SDA:1H10 SDA H102 SDA:2H10 SDA HP21 SDC:1HP2 SDC HP22 SDC:2HP2 SDC H061 SDC:1H06 SDC H062 SDC:2H06 SDC H081 SDC:1H08 SDC H082 SDC:2H08 SDC H091 SDC:1H09 SDC H092 SDC:2H09 SDC H121 SDC:1H12 SDC H122 SDC:2H12 SDC H71 SDK:1H7 SDK H72 SDK:2H7 SDK H121 SDK:1H12 SDK H122 SDK:2H12 SDK H141 SDK:1H14 SDK H142 SDK:2H14 SDK H143 SDK:3H14 SDK H151 SDK:1H15 SDK H152 SDK:2H15 SDK H153 SDK:3H15 SDK H191 SDK:1H19 SDK H192 SDK:2H19 SDK H291 SDK:1H29 SDK H292 SDK:2H29 SDK H341 SDK:1H34 SDK H342 SDK:2H34 SDK H361 SDK:1H36 SDK H362 SDK:2H36 SDK H363 SDK:3H36 SDK H371 SDK:1H37 SDK H372 SDK:2H37 SDK H373 SDK:3H37 SDK H411 SDK:1H41 SDK H412 SDK:2H41 SDK H2 SDP: HN2 SDP HB2 SDP:1HB SDP HB3 SDP:2HB SDP H311 SDP:1H31 SDP H312 SDP:2H31 SDP H321 SDP:1H32 SDP H322 SDP:2H32 SDP H323 SDP:3H32 SDP H411 SDP:1H41 SDP H412 SDP:2H41 SDP H421 SDP:1H42 SDP H422 SDP:2H42 SDP H423 SDP:3H42 SDP H1C1 SDS:1H1C SDS H1C2 SDS:2H1C SDS H2C1 SDS:1H2C SDS H2C2 SDS:2H2C SDS H2C3 SDS:3H2C SDS H3C1 SDS:1H3C SDS H3C2 SDS:2H3C SDS H4C1 SDS:1H4C SDS H4C2 SDS:2H4C SDS H5C1 SDS:1H5C SDS H5C2 SDS:2H5C SDS H6C1 SDS:1H6C SDS H6C2 SDS:2H6C SDS H7C1 SDS:1H7C SDS H7C2 SDS:2H7C SDS H8C1 SDS:1H8C SDS H8C2 SDS:2H8C SDS H9C1 SDS:1H9C SDS H9C2 SDS:2H9C SDS H101 SDS:1H10 SDS H102 SDS:2H10 SDS H111 SDS:1H11 SDS H112 SDS:2H11 SDS H121 SDS:1H12 SDS H122 SDS:2H12 SDS H71 SDZ:1H7 SDZ H72 SDZ:2H7 SDZ H81 SDZ:1H8 SDZ H82 SDZ:2H8 SDZ H91 SDZ:1H9 SDZ H92 SDZ:2H9 SDZ H101 SDZ:1H10 SDZ H102 SDZ:2H10 SDZ H111 SDZ:1H11 SDZ H112 SDZ:2H11 SDZ H131 SDZ:1H13 SDZ H132 SDZ:2H13 SDZ H211 SDZ:1H21 SDZ H212 SDZ:2H21 SDZ H221 SDZ:1H22 SDZ H222 SDZ:2H22 SDZ H231 SDZ:1H23 SDZ H232 SDZ:2H23 SDZ H241 SDZ:1H24 SDZ H242 SDZ:2H24 SDZ H251 SDZ:1H25 SDZ H252 SDZ:2H25 SDZ HN1 SEA:1HN SEA HN2 SEA:2HN SEA HA1 SEA:1HA SEA HA2 SEA:2HA SEA HB1 SEA:1HB SEA HB2 SEA:2HB SEA H2 SEB: HN2 SEB HE3 SEB:1HE SEB HE2 SEB:2HE SEB HB3 SEB:1HB SEB HB2 SEB:2HB SEB H SEC:1HN SEC H2 SEC:2HN SEC HB2 SEC:1HB SEC HB3 SEC:2HB SEC HN1 SED:1HN SED HN2 SED:2HN SED H SEG:1HN SEG H2 SEG:2HN SEG HD SEG: HOD SEG HB3 SEG:1HB SEG HB2 SEG:2HB SEG H1C1 SEH:1H1C SEH H1C2 SEH:2H1C SEH H2C1 SEH:1H2C SEH H2C2 SEH:2H2C SEH H2C3 SEH:3H2C SEH HBC1 SEH:1HBC SEH HBC2 SEH:2HBC SEH H21 SEI:1H2 SEI H22 SEI:2H2 SEI H31 SEI:1H3 SEI H32 SEI:2H3 SEI H201 SEI:1H20 SEI H211 SEI:1H21 SEI H301 SEI:1H30 SEI H311 SEI:1H31 SEI H312 SEI:2H31 SEI H313 SEI:3H31 SEI H351 SEI:1H35 SEI H352 SEI:2H35 SEI H353 SEI:3H35 SEI H51 SEI:1H5 SEI H52 SEI:2H5 SEI H61 SEI:1H6 SEI H62 SEI:2H6 SEI H171 SEI:1H17 SEI H182 SEI:2H18 SEI H281 SEI:1H28 SEI H291 SEI:1H29 SEI H441 SEI:1H44 SEI H451 SEI:1H45 SEI H452 SEI:2H45 SEI H461 SEI:1H46 SEI H462 SEI:2H46 SEI H471 SEI:1H47 SEI H472 SEI:2H47 SEI H531 SEI:1H53 SEI H591 SEI:1H59 SEI H611 SEI:1H61 SEI H621 SEI:1H62 SEI H622 SEI:2H62 SEI H623 SEI:3H62 SEI H661 SEI:1H66 SEI H662 SEI:2H66 SEI H663 SEI:3H66 SEI HN11 SEL:1HN1 SEL HN12 SEL:2HN1 SEL HA1 SEL:1HA SEL HB1 SEL:1HB SEL HB2 SEL:2HB SEL HB21 SEL:1HB2 SEL HB22 SEL:2HB2 SEL HO21 SEL:1HO2 SEL H11 SEM:1H1 SEM H12 SEM:2H1 SEM H13 SEM:3H1 SEM HN31 SEM:1HN3 SEM HN32 SEM:2HN3 SEM H41 SEM:1H4 SEM H42 SEM:2H4 SEM H'1 SEM:1H' SEM H'2 SEM:2H' SEM HO1 SEO:1HO SEO HB11 SEO:1HB1 SEO HB12 SEO:2HB1 SEO HB1 SEO:1HB SEO HB2 SEO:2HB SEO H2 SEP:2HN SEP HB2 SEP:1HB SEP HB3 SEP:2HB SEP HOP2 SEP:2HOP SEP HOP3 SEP:3HOP SEP H2 SER: HN2 SER HB2 SER:1HB SER HB3 SER:2HB SER H11 SES:1H1 SES H12 SES:2H1 SES H13 SES:3H1 SES H21 SES:1H2 SES H22 SES:2H2 SES H31 SES:1H3 SES H32 SES:2H3 SES H41 SES:1H4 SES H42 SES:2H4 SES H111 SES:1H11 SES H112 SES:2H11 SES H113 SES:3H11 SES H121 SES:1H12 SES H122 SES:2H12 SES H131 SES:1H13 SES H132 SES:2H13 SES HN21 SES:1HN2 SES HN22 SES:2HN2 SES H SET:1HN SET H2 SET:2HN SET HB2 SET:1HB SET HB3 SET:2HB SET HG SET: HOG SET HNT1 SET:1HNT SET HNT2 SET:2HNT SET H11 SEU:1H1 SEU H12 SEU:2H1 SEU H13 SEU:3H1 SEU H21 SEU:1H2 SEU H22 SEU:2H2 SEU HN61 SEU:1HN6 SEU HN62 SEU:2HN6 SEU HAQ1 SF1:1HAQ SF1 HAQ2 SF1:2HAQ SF1 HAA1 SF2:1HAA SF2 HAA2 SF2:2HAA SF2 HAA3 SF2:3HAA SF2 HAQ1 SF2:1HAQ SF2 HAQ2 SF2:2HAQ SF2 H431 SFA:1H43 SFA H432 SFA:2H43 SFA H441 SFA:1H44 SFA H442 SFA:2H44 SFA H443 SFA:3H44 SFA H391 SFA:1H39 SFA H392 SFA:2H39 SFA H451 SFA:1H45 SFA H452 SFA:2H45 SFA H453 SFA:3H45 SFA H461 SFA:1H46 SFA H462 SFA:2H46 SFA H463 SFA:3H46 SFA H471 SFA:1H47 SFA H472 SFA:2H47 SFA H473 SFA:3H47 SFA H321 SFA:1H32 SFA H322 SFA:2H32 SFA H481 SFA:1H48 SFA H482 SFA:2H48 SFA H483 SFA:3H48 SFA H291 SFA:1H29 SFA H292 SFA:2H29 SFA H281 SFA:1H28 SFA H282 SFA:2H28 SFA H491 SFA:1H49 SFA H492 SFA:2H49 SFA H493 SFA:3H49 SFA H221 SFA:1H22 SFA H222 SFA:2H22 SFA H501 SFA:1H50 SFA H502 SFA:2H50 SFA H503 SFA:3H50 SFA H511 SFA:1H51 SFA H512 SFA:2H51 SFA H521 SFA:1H52 SFA H522 SFA:2H52 SFA H541 SFA:1H54 SFA H542 SFA:2H54 SFA H543 SFA:3H54 SFA H561 SFA:1H56 SFA H562 SFA:2H56 SFA H563 SFA:3H56 SFA H571 SFA:1H57 SFA H572 SFA:2H57 SFA H573 SFA:3H57 SFA H581 SFA:1H58 SFA H582 SFA:2H58 SFA H51 SFA:1H5 SFA H52 SFA:2H5 SFA H41 SFA:1H4 SFA H42A SFA:2H4 SFA H31A SFA:1H3 SFA H32 SFA:2H3 SFA H3' SFC: H3* SFC H2' SFC: H2* SFC H1' SFC: H1* SFC HN61 SFC:1HN6 SFC HN62 SFC:2HN6 SFC H4' SFC: H4* SFC H5'1 SFC:1H5* SFC H5'2 SFC:2H5* SFC H41 SFC:1H4 SFC H42 SFC:2H4 SFC H11X SFC:1H1 SFC H12 SFC:2H1 SFC H13 SFC:3H1 SFC H141 SFC:1H14 SFC H142 SFC:2H14 SFC H143 SFC:3H14 SFC H71 SFC:1H7 SFC H72 SFC:2H7 SFC H61 SFC:1H6 SFC H62 SFC:2H6 SFC H31 SFC:1H3 SFC H32 SFC:2H3 SFC H21 SFC:1H2 SFC H22 SFC:2H2 SFC H131 SFC:1H13 SFC H132 SFC:2H13 SFC H133 SFC:3H13 SFC H91 SFC:1H9 SFC H92 SFC:2H9 SFC H121 SFC:1H12 SFC H122 SFC:2H12 SFC H123 SFC:3H12 SFC H111 SFC:1H11 SFC H112 SFC:2H11 SFC H113 SFC:3H11 SFC H3F1 SFD:1H3F SFD H3F2 SFD:2H3F SFD H3F3 SFD:3H3F SFD HAF1 SFD:1HAF SFD HAF2 SFD:2HAF SFD HAF3 SFD:3HAF SFD H1R1 SFD:1H1R SFD H1R2 SFD:2H1R SFD H5R1 SFD:1H5R SFD H5R2 SFD:2H5R SFD H0R1 SFD:1H0R SFD H0R2 SFD:2H0R SFD HN91 SFD:1HN9 SFD HN92 SFD:2HN9 SFD HN1 SFG:1HN SFG HN2 SFG:2HN SFG HB1 SFG:1HB SFG HB2 SFG:2HB SFG HG1 SFG:1HG SFG HG2 SFG:2HG SFG HNE1 SFG:1HNE SFG HNE2 SFG:2HNE SFG H5'1 SFG:1H5* SFG H5'2 SFG:2H5* SFG H4' SFG: H4* SFG H3' SFG: H3* SFG HO3' SFG:*HO3 SFG H2' SFG: H2* SFG HO2' SFG:*HO2 SFG H1' SFG: H1* SFG HN61 SFG:1HN6 SFG HN62 SFG:2HN6 SFG H541 SFM:1H54 SFM H542 SFM:2H54 SFM H543 SFM:3H54 SFM H521 SFM:1H52 SFM H522 SFM:2H52 SFM H511 SFM:1H51 SFM H512 SFM:2H51 SFM H561 SFM:1H56 SFM H562 SFM:2H56 SFM H563 SFM:3H56 SFM H571 SFM:1H57 SFM H572 SFM:2H57 SFM H573 SFM:3H57 SFM H581 SFM:1H58 SFM H582 SFM:2H58 SFM H51 SFM:1H5 SFM H52 SFM:2H5 SFM H41 SFM:1H4 SFM H42 SFM:2H4 SFM H31 SFM:1H3 SFM H32 SFM:2H3 SFM H221 SFM:1H22 SFM H222 SFM:2H22 SFM H501 SFM:1H50 SFM H502 SFM:2H50 SFM H503 SFM:3H50 SFM H491 SFM:1H49 SFM H492 SFM:2H49 SFM H493 SFM:3H49 SFM H261 SFM:1H26 SFM H262 SFM:2H26 SFM H2'1 SFT:1H2' SFT H2'2 SFT:2H2' SFT H2'3 SFT:3H2' SFT H2A1 SFT:1H2A SFT H2A2 SFT:2H2A SFT H2B1 SFT:1H2B SFT H2B2 SFT:2H2B SFT H2C1 SFT:1H2C SFT H2C2 SFT:2H2C SFT H2D1 SFT:1H2D SFT H2D2 SFT:2H2D SFT H1'1 SFT:1H1' SFT H1'2 SFT:2H1' SFT H1A1 SFT:1H1A SFT H1A2 SFT:2H1A SFT H1B1 SFT:1H1B SFT H1B2 SFT:2H1B SFT H1C1 SFT:1H1C SFT H1C2 SFT:2H1C SFT H1D1 SFT:1H1D SFT H1D2 SFT:2H1D SFT H1E1 SFT:1H1E SFT H1E2 SFT:2H1E SFT H1F1 SFT:1H1F SFT H1F2 SFT:2H1F SFT H1G1 SFT:1H1G SFT H1G2 SFT:2H1G SFT H1H1 SFT:1H1H SFT H1H2 SFT:2H1H SFT H1I1 SFT:1H1I SFT H1I2 SFT:2H1I SFT H9'1 SFT:1H9' SFT H9'2 SFT:2H9' SFT H8'1 SFT:1H8' SFT H8'2 SFT:2H8' SFT H7'1 SFT:1H7' SFT H7'2 SFT:2H7' SFT H6'1 SFT:1H6' SFT H6'2 SFT:2H6' SFT H5'1 SFT:1H5' SFT H5'2 SFT:2H5' SFT H4'1 SFT:1H4' SFT H4'2 SFT:2H4' SFT H3'1 SFT:1H3' SFT H3'2 SFT:2H3' SFT HA1 SFT:1HA SFT HB2 SFT:2HB SFT H1' SFT: H1* SFT H2B SFT: H2* SFT H5' SFT: H5* SFT H6A1 SFT:1H6* SFT H6A2 SFT:2H6* SFT H6' SFT: H6* SFT H4' SFT: H4* SFT H3' SFT: H3* SFT H6C1 SFT:1H6C SFT H6C2 SFT:2H6C SFT H7C1 SFT:1H7C SFT H7C2 SFT:2H7C SFT H8C1 SFT:1H8C SFT H8C2 SFT:2H8C SFT H9C1 SFT:1H9C SFT H9C2 SFT:2H9C SFT H101 SFT:1H10 SFT H102 SFT:2H10 SFT H111 SFT:1H11 SFT H112 SFT:2H11 SFT H121 SFT:1H12 SFT H122 SFT:2H12 SFT H131 SFT:1H13 SFT H132 SFT:2H13 SFT H141 SFT:1H14 SFT H142 SFT:2H14 SFT H151 SFT:1H15 SFT H152 SFT:2H15 SFT H161 SFT:1H16 SFT H162 SFT:2H16 SFT H171 SFT:1H17 SFT H172 SFT:2H17 SFT H181 SFT:1H18 SFT H182 SFT:2H18 SFT H183 SFT:3H18 SFT H31 SG1:1H3 SG1 H41 SG1:1H4 SG1 H91 SG1:1H9 SG1 H92 SG1:2H9 SG1 H101 SG1:1H10 SG1 H102 SG1:2H10 SG1 H111 SG1:1H11 SG1 H112 SG1:2H11 SG1 H161 SG1:1H16 SG1 H171 SG1:1H17 SG1 H172 SG1:2H17 SG1 H31 SG2:1H3 SG2 H41 SG2:1H4 SG2 H61 SG2:1H6 SG2 H62 SG2:2H6 SG2 H63 SG2:3H6 SG2 H111 SG2:1H11 SG2 H121 SG2:1H12 SG2 H122 SG2:2H12 SG2 H5C2 SG3:2H5C SG3 H6C2 SG3:2H6C SG3 H121 SG3:1H12 SG3 H122 SG3:2H12 SG3 H123 SG3:3H12 SG3 H9C1 SG3:1H9C SG3 H9C2 SG3:2H9C SG3 H61 SGA:1H6 SGA H62 SGA:2H6 SGA HOS3 SGA:3HOS SGA HN1 SGB:1HN SGB HN2 SGB:2HN SGB HBC1 SGB:1HBC SGB HBC2 SGB:2HBC SGB H1C1 SGB:1H1C SGB H1C2 SGB:2H1C SGB H1C3 SGB:3H1C SGB H4C1 SGB:1H4C SGB H4C2 SGB:2H4C SGB H4C3 SGB:3H4C SGB H3C1 SGB:1H3C SGB H3C2 SGB:2H3C SGB H3C3 SGB:3H3C SGB H62 SGC:2H6 SGC H61 SGC:1H6 SGC H11 SGL:1H1 SGL H12 SGL:2H1 SGL H31 SGL:1H3 SGL H32 SGL:2H3 SGL H11 SGM:1H1 SGM H12 SGM:2H1 SGM H31 SGM:1H3 SGM H32 SGM:2H3 SGM H61 SGN:1H6 SGN H62 SGN:2H6 SGN HOS3 SGN:3HOS SGN HOS6 SGN:6HOS SGN HOP1 SGP:1HOP SGP HO5' SGP:*HO5 SGP H5'1 SGP:1H5* SGP H5'2 SGP:2H5* SGP H4' SGP: H4* SGP H3' SGP: H3* SGP H2' SGP: H2* SGP H1' SGP: H1* SGP HN21 SGP:1HN2 SGP HN22 SGP:2HN2 SGP HBC1 SGR:1HBC SGR HBC2 SGR:2HBC SGR H4N1 SGR:1H4N SGR H4N2 SGR:2H4N SGR H3C1 SGR:1H3C SGR H3C2 SGR:2H3C SGR H3C3 SGR:3H3C SGR HA1 SGX:1HA SGX HB2 SGX:2HB SGX H3N1 SGX:1H3N SGX H3N2 SGX:2H3N SGX H1C1 SGX:1H1C SGX H1C2 SGX:2H1C SGX H1C3 SGX:3H1C SGX H1C1 SH1:1H1C SH1 H1C2 SH1:2H1C SH1 H2C1 SH1:1H2C SH1 H2C2 SH1:2H2C SH1 H101 SH1:1H10 SH1 H102 SH1:2H10 SH1 H131 SH1:1H13 SH1 H132 SH1:2H13 SH1 H133 SH1:3H13 SH1 H161 SH1:1H16 SH1 H162 SH1:2H16 SH1 H171 SH1:1H17 SH1 H172 SH1:2H17 SH1 H181 SH1:1H18 SH1 H182 SH1:2H18 SH1 H5N1 SH1:1H5N SH1 H5N2 SH1:2H5N SH1 H6N1 SH1:1H6N SH1 H6N2 SH1:2H6N SH1 H201 SH1:1H20 SH1 H202 SH1:2H20 SH1 H81 SH4:1H8 SH4 H82 SH4:2H8 SH4 H83 SH4:3H8 SH4 H91 SH4:1H9 SH4 H92 SH4:2H9 SH4 H151 SH4:1H15 SH4 H152 SH4:2H15 SH4 H153 SH4:3H15 SH4 H SHC:1HN SHC H2 SHC:2HN SHC HB2 SHC:1HB SHC HB3 SHC:2HB SHC H11 SHC:1H1 SHC H12 SHC:2H1 SHC H21 SHC:1H2 SHC H22 SHC:2H2 SHC H31 SHC:1H3 SHC H32 SHC:2H3 SHC H41 SHC:1H4 SHC H42 SHC:2H4 SHC H51 SHC:1H5 SHC H52 SHC:2H5 SHC H61 SHC:1H6 SHC H62 SHC:2H6 SHC H63 SHC:3H6 SHC H51 SHF:1H5 SHF H52 SHF:2H5 SHF H53 SHF:3H5 SHF H31 SHF:1H3 SHF H32 SHF:2H3 SHF H21 SHF:1H2 SHF H22 SHF:2H2 SHF H21 SHH:1H2 SHH H22 SHH:2H2 SHH H31 SHH:1H3 SHH H32 SHH:2H3 SHH H41 SHH:1H4 SHH H42 SHH:2H4 SHH H51 SHH:1H5 SHH H52 SHH:2H5 SHH H61 SHH:1H6 SHH H62 SHH:2H6 SHH H71 SHH:1H7 SHH H72 SHH:2H7 SHH H101 SHH:1H10 SHH H111 SHH:1H11 SHH H121 SHH:1H12 SHH H131 SHH:1H13 SHH H141 SHH:1H14 SHH H411 SHI:1H41 SHI H412 SHI:2H41 SHI HN11 SHI:1HN1 SHI HN12 SHI:2HN1 SHI H11A SHM:1H1 SHM H21 SHM:1H2 SHM H12A SHM:2H1 SHM H22 SHM:2H2 SHM H13 SHM:3H1 SHM H23 SHM:3H2 SHM H14 SHM:4H1 SHM H24 SHM:4H2 SHM H15 SHM:5H1 SHM H25 SHM:5H2 SHM HAC1 SHO:1HAC SHO HAC2 SHO:2HAC SHO HBC1 SHO:1HBC SHO HBC2 SHO:2HBC SHO HGC1 SHO:1HGC SHO HGC2 SHO:2HGC SHO HDC1 SHO:1HDC SHO HDC2 SHO:2HDC SHO H SHP:1HN SHP H2 SHP:2HN SHP H2B SHP: H2* SHP H3B SHP: H3* SHP H5B SHP: H5* SHP H6' SHP: H6* SHP HC2 SHP: H2 SHP H61 SHP:1H6 SHP H62 SHP:2H6 SHP H6'1 SHP:1H6' SHP H6'2 SHP:2H6' SHP HO2' SHP:'HO2 SHP HO3' SHP:'HO3 SHP HO4' SHP:'HO4 SHP HO6' SHP:'HO6 SHP H12 SHR:2H1 SHR H11 SHR:1H1 SHR H92 SHR:2H9 SHR H91 SHR:1H9 SHR H82 SHR:2H8 SHR H81 SHR:1H8 SHR H72 SHR:2H7 SHR H71 SHR:1H7 SHR H62 SHR:2H6 SHR H61 SHR:1H6 SHR H32 SHR:2H3 SHR H31 SHR:1H3 SHR H22 SHR:2H2 SHR H21 SHR:1H2 SHR HO2S SHT:SHO2 SHT HCD1 SHT:1HCD SHT HCD2 SHT:2HCD SHT HCC1 SHT:1HCC SHT HCC2 SHT:2HCC SHT HK61 SHT:1HK6 SHT HK62 SHT:2HK6 SHT HK51 SHT:1HK5 SHT HK52 SHT:2HK5 SHT HK41 SHT:1HK4 SHT HK42 SHT:2HK4 SHT HK31 SHT:1HK3 SHT HK32 SHT:2HK3 SHT HC2K SHT:KHC2 SHT HC1K SHT:KHC1 SHT HCA SHT: AHC SHT HCB SHT: BHC SHT HG21 SHT:1HG2 SHT HG22 SHT:2HG2 SHT HG23 SHT:3HG2 SHT HOP2 SHT:2HOP SHT HOP8 SHT:8HOP SHT HC51 SHU:1HC5 SHU HC52 SHU:2HC5 SHU HC1 SHU:1HC SHU HC2 SHU:2HC SHU HC3 SHU:3HC SHU HC31 SHU:1HC3 SHU HC32 SHU:2HC3 SHU HC21 SHU:1HC2 SHU HC22 SHU:2HC2 SHU H21 SHV:1H2 SHV H22 SHV:2H2 SHV H31 SHV:1H3 SHV H32 SHV:2H3 SHV H41 SHV:1H4 SHV H42 SHV:2H4 SHV H51 SHV:1H5 SHV H52 SHV:2H5 SHV H61 SHV:1H6 SHV H62 SHV:2H6 SHV H71 SHV:1H7 SHV H72 SHV:2H7 SHV H73 SHV:3H7 SHV H2N1 SHY:1H2N SHY H2N2 SHY:2H2N SHY H121 SHY:1H12 SHY H122 SHY:2H12 SHY H141 SHY:1H14 SHY H142 SHY:2H14 SHY H231 SHY:1H23 SHY H232 SHY:2H23 SHY H281 SHY:1H28 SHY H282 SHY:2H28 SHY H31 SI2:1H3 SI2 H32 SI2:2H3 SI2 H91 SI2:1H9 SI2 H92 SI2:2H9 SI2 H111 SI2:1H11 SI2 H112 SI2:2H11 SI2 H113 SI2:3H11 SI2 HOB1 SI2:1HOB SI2 H31 SIA:1H3 SIA H32 SIA:2H3 SIA H91 SIA:1H9 SIA H92 SIA:2H9 SIA H111 SIA:1H11 SIA H112 SIA:2H11 SIA H113 SIA:3H11 SIA HOB1 SIA:1HOB SIA H SIB:1HN SIB H2 SIB:2HN SIB HB2 SIB:1HB SIB HB3 SIB:2HB SIB HG2 SIB:1HG SIB HG3 SIB:2HG SIB H5'1 SIB:1H5* SIB H5'2 SIB:2H5* SIB H4' SIB: H4* SIB H3' SIB: H3* SIB HO3' SIB:HO3* SIB H2' SIB: H2* SIB HO2' SIB:HO2* SIB H1' SIB: H1* SIB HC2 SIB: H2 SIB HS01 SIE:1HS0 SIE HS02 SIE:2HS0 SIE HP11 SIE:1HP1 SIE HP12 SIE:2HP1 SIE HP21 SIE:1HP2 SIE HP22 SIE:2HP2 SIE HP31 SIE:1HP3 SIE HP32 SIE:2HP3 SIE HP41 SIE:1HP4 SIE HP42 SIE:2HP4 SIE HP51 SIE:1HP5 SIE HP52 SIE:2HP5 SIE HP61 SIE:1HP6 SIE HP62 SIE:2HP6 SIE HP71 SIE:1HP7 SIE HP72 SIE:2HP7 SIE HP81 SIE:1HP8 SIE HP82 SIE:2HP8 SIE HP91 SIE:1HP9 SIE HP92 SIE:2HP9 SIE HP01 SIE:1HP0 SIE HP02 SIE:2HP0 SIE HP03 SIE:3HP0 SIE H201 SIE:1H20 SIE H202 SIE:2H20 SIE H21 SIF:1H2 SIF H22 SIF:2H2 SIF H51 SIF:1H5 SIF H52 SIF:2H5 SIF H53 SIF:3H5 SIF H61 SIF:1H6 SIF H62 SIF:2H6 SIF H63 SIF:3H6 SIF H71 SIF:1H7 SIF H72 SIF:2H7 SIF H73 SIF:3H7 SIF H161 SIG:1H16 SIG H162 SIG:2H16 SIG H163 SIG:3H16 SIG H201 SIG:1H20 SIG H202 SIG:2H20 SIG H211 SIG:1H21 SIG H212 SIG:2H21 SIG H261 SIG:1H26 SIG H262 SIG:2H26 SIG H263 SIG:3H26 SIG H271 SIG:1H27 SIG H272 SIG:2H27 SIG H273 SIG:3H27 SIG H281 SIG:1H28 SIG H282 SIG:2H28 SIG H283 SIG:3H28 SIG H331 SIG:1H33 SIG H332 SIG:2H33 SIG H333 SIG:3H33 SIG H341 SIG:1H34 SIG H342 SIG:2H34 SIG H343 SIG:3H34 SIG H351 SIG:1H35 SIG H352 SIG:2H35 SIG H353 SIG:3H35 SIG H381 SIG:1H38 SIG H382 SIG:2H38 SIG H383 SIG:3H38 SIG H391 SIG:1H39 SIG H392 SIG:2H39 SIG H393 SIG:3H39 SIG H11A SIH:1H1 SIH H12 SIH:2H1 SIH H21 SIH:1H2 SIH H22 SIH:2H2 SIH H41 SIH:1H4 SIH H61 SIH:1H6 SIH H62 SIH:2H6 SIH H71 SIH:1H7 SIH H72 SIH:2H7 SIH H121 SIH:1H12 SIH H122 SIH:2H12 SIH H151 SIH:1H15 SIH H152 SIH:2H15 SIH H161 SIH:1H16 SIH H162 SIH:2H16 SIH H181 SIH:1H18 SIH H182 SIH:2H18 SIH H183 SIH:3H18 SIH H191 SIH:1H19 SIH H192 SIH:2H19 SIH H193 SIH:3H19 SIH H211 SIH:1H21 SIH H212 SIH:2H21 SIH H213 SIH:3H21 SIH HH21 SIH:1HH2 SIH HH22 SIH:2HH2 SIH HH31 SIH:1HH3 SIH HH32 SIH:2HH3 SIH HOH5 SIH:5HOH SIH H11 SIL:1H1 SIL H12 SIL:2H1 SIL H51 SIL:1H5 SIL H52 SIL:2H5 SIL H71 SIL:1H7 SIL H72 SIL:2H7 SIL H101 SIL:1H10 SIL H102 SIL:2H10 SIL H131 SIL:1H13 SIL H132 SIL:2H13 SIL H231 SIL:1H23 SIL H232 SIL:2H23 SIL H271 SIL:1H27 SIL H272 SIL:2H27 SIL H341 SIL:1H34 SIL H342 SIL:2H34 SIL H343 SIL:3H34 SIL H381 SIL:1H38 SIL H382 SIL:2H38 SIL H383 SIL:3H38 SIL H21 SIM:1H2 SIM H22 SIM:2H2 SIM H41 SIM:1H4 SIM H42 SIM:2H4 SIM H61 SIM:1H6 SIM H62 SIM:2H6 SIM H71 SIM:1H7 SIM H72 SIM:2H7 SIM H151 SIM:1H15 SIM H152 SIM:2H15 SIM H9A1 SIM:1H9A SIM H9A2 SIM:2H9A SIM H9A3 SIM:3H9A SIM H201 SIM:1H20 SIM H202 SIM:2H20 SIM H211 SIM:1H21 SIM H212 SIM:2H21 SIM H213 SIM:3H21 SIM H221 SIM:1H22 SIM H222 SIM:2H22 SIM H223 SIM:3H22 SIM H231 SIM:1H23 SIM H232 SIM:2H23 SIM H233 SIM:3H23 SIM H241 SIM:1H24 SIM H242 SIM:2H24 SIM H243 SIM:3H24 SIM H21 SIN:1H2 SIN H22 SIN:2H2 SIN H31 SIN:1H3 SIN H32 SIN:2H3 SIN H2N1 SJ1:1H2N SJ1 H2N2 SJ1:2H2N SJ1 H3C1 SJ1:1H3C SJ1 H3C2 SJ1:2H3C SJ1 H4C1 SJ1:1H4C SJ1 H4C2 SJ1:2H4C SJ1 H5C1 SJ1:1H5C SJ1 H5C2 SJ1:2H5C SJ1 H101 SJ1:1H10 SJ1 H102 SJ1:2H10 SJ1 H103 SJ1:3H10 SJ1 H131 SJ1:1H13 SJ1 H132 SJ1:2H13 SJ1 H151 SJ1:1H15 SJ1 H152 SJ1:2H15 SJ1 H171 SJ1:1H17 SJ1 H172 SJ1:2H17 SJ1 H173 SJ1:3H17 SJ1 H181 SJ1:1H18 SJ1 H182 SJ1:2H18 SJ1 H183 SJ1:3H18 SJ1 H5N1 SK1:1H5N SK1 H5N2 SK1:2H5N SK1 H111 SK1:1H11 SK1 H112 SK1:2H11 SK1 H6C1 SK1:1H6C SK1 H6C2 SK1:2H6C SK1 H1C1 SK1:1H1C SK1 H1C2 SK1:2H1C SK1 H221 SK1:1H22 SK1 H222 SK1:2H22 SK1 H223 SK1:3H22 SK1 H121 SK2:1H12 SK2 H122 SK2:2H12 SK2 H61 SK2:1H6 SK2 H62 SK2:2H6 SK2 H63 SK2:3H6 SK2 H31 SK2:1H3 SK2 H32 SK2:2H3 SK2 H81 SK2:1H8 SK2 H82 SK2:2H8 SK2 H61 SK3:1H6 SK3 H62 SK3:2H6 SK3 H111 SKA:1H11 SKA H112 SKA:2H11 SKA H91 SKA:1H9 SKA H92 SKA:2H9 SKA H81 SKA:1H8 SKA H82 SKA:2H8 SKA H31 SKD:1H3 SKD H32 SKD:2H3 SKD H91 SKD:1H9 SKD H92 SKD:2H9 SKD H111 SKD:1H11 SKD H112 SKD:2H11 SKD H113 SKD:3H11 SKD HOB1 SKD:1HOB SKD HC11 SKF:1HC1 SKF HC12 SKF:2HC1 SKF HC21 SKF:1HC2 SKF HC22 SKF:2HC2 SKF HC31 SKF:1HC3 SKF HC32 SKF:2HC3 SKF H51 SKM:1H5 SKM H52 SKM:2H5 SKM H61 SKP:1H6 SKP H62 SKP:2H6 SKP H91 SKP:1H9 SKP H92 SKP:2H9 SKP H93 SKP:3H9 SKP H3C1 SL1:1H3C SL1 H3C2 SL1:2H3C SL1 H201 SL1:1H20 SL1 H202 SL1:2H20 SL1 H211 SL1:1H21 SL1 H212 SL1:2H21 SL1 H221 SL1:1H22 SL1 H222 SL1:2H22 SL1 H6N1 SL1:1H6N SL1 H6N2 SL1:2H6N SL1 H241 SL1:1H24 SL1 H242 SL1:2H24 SL1 H31 SLB:1H3 SLB H32 SLB:2H3 SLB H91 SLB:1H9 SLB H92 SLB:2H9 SLB H111 SLB:1H11 SLB H112 SLB:2H11 SLB H113 SLB:3H11 SLB HOB1 SLB:1HOB SLB HH1 SLE:1HH SLE HH2 SLE:2HH SLE H31 SLE:1H3 SLE H32 SLE:2H3 SLE HM1 SLE:1HM SLE HM2 SLE:2HM SLE HM3 SLE:3HM SLE H51 SLE:1H5 SLE H52 SLE:2H5 SLE H53 SLE:3H5 SLE H351 SLF:1H35 SLF H352 SLF:2H35 SLF H353 SLF:3H35 SLF H341 SLF:1H34 SLF H342 SLF:2H34 SLF H331 SLF:1H33 SLF H332 SLF:2H33 SLF H321 SLF:1H32 SLF H322 SLF:2H32 SLF H311 SLF:1H31 SLF H312 SLF:2H31 SLF H301 SLF:1H30 SLF H302 SLF:2H30 SLF H291 SLF:1H29 SLF H292 SLF:2H29 SLF H281 SLF:1H28 SLF H282 SLF:2H28 SLF H271 SLF:1H27 SLF H272 SLF:2H27 SLF H261 SLF:1H26 SLF H262 SLF:2H26 SLF H251 SLF:1H25 SLF H252 SLF:2H25 SLF H241 SLF:1H24 SLF H242 SLF:2H24 SLF H231 SLF:1H23 SLF H232 SLF:2H23 SLF H221 SLF:1H22 SLF H222 SLF:2H22 SLF H211 SLF:1H21 SLF H212 SLF:2H21 SLF H201 SLF:1H20 SLF H202 SLF:2H20 SLF H191 SLF:1H19 SLF H192 SLF:2H19 SLF H1A SLF:1H SLF H2A SLF:2H SLF H411 SLF:1H41 SLF H412 SLF:2H41 SLF H51 SLF:1H5 SLF H52 SLF:2H5 SLF H61 SLF:1H6 SLF H62 SLF:2H6 SLF H71 SLF:1H7 SLF H72 SLF:2H7 SLF H81 SLF:1H8 SLF H82 SLF:2H8 SLF H91 SLF:1H9 SLF H92 SLF:2H9 SLF H101 SLF:1H10 SLF H102 SLF:2H10 SLF H111 SLF:1H11 SLF H112 SLF:2H11 SLF H121 SLF:1H12 SLF H122 SLF:2H12 SLF H131 SLF:1H13 SLF H132 SLF:2H13 SLF H141 SLF:1H14 SLF H142 SLF:2H14 SLF H151 SLF:1H15 SLF H152 SLF:2H15 SLF H161 SLF:1H16 SLF H162 SLF:2H16 SLF H171 SLF:1H17 SLF H172 SLF:2H17 SLF H173 SLF:3H17 SLF H181 SLT:1H18 SLT H182 SLT:2H18 SLT H183 SLT:3H18 SLT H161 SLT:1H16 SLT H162 SLT:2H16 SLT H101 SLT:1H10 SLT H102 SLT:2H10 SLT H61 SLT:1H6 SLT H62 SLT:2H6 SLT H6A1 SLT:1H6A SLT H6A2 SLT:2H6A SLT H211 SLU:1H21 SLU H212 SLU:2H21 SLU H381 SLU:1H38 SLU H382 SLU:2H38 SLU H SLZ:1HN SLZ H2 SLZ:2HN SLZ HB2 SLZ:1HB SLZ HB3 SLZ:2HB SLZ HD2 SLZ:1HD SLZ HD3 SLZ:2HD SLZ HE2 SLZ:1HE SLZ HE3 SLZ:2HE SLZ HZ1 SLZ:1HZ SLZ HZ2 SLZ:2HZ SLZ H6N1 SM1:1H6N SM1 H6N2 SM1:2H6N SM1 H111 SM1:1H11 SM1 H112 SM1:2H11 SM1 H221 SM1:1H22 SM1 H222 SM1:2H22 SM1 H223 SM1:3H22 SM1 H6C1 SM1:1H6C SM1 H6C2 SM1:2H6C SM1 H1C1 SM1:1H1C SM1 H1C2 SM1:2H1C SM1 HAG1 SM2:1HAG SM2 HAG2 SM2:2HAG SM2 HAG1 SM3:1HAG SM3 HAG2 SM3:2HAG SM3 HAG1 SM4:1HAG SM4 HAG2 SM4:2HAG SM4 H3M1 SMA:1H3M SMA H3M2 SMA:2H3M SMA H3M3 SMA:3H3M SMA H5M1 SMA:1H5M SMA H5M2 SMA:2H5M SMA H5M3 SMA:3H5M SMA H7M1 SMA:1H7M SMA H7M2 SMA:2H7M SMA H7M3 SMA:3H7M SMA H91 SMA:1H9 SMA H92 SMA:2H9 SMA H101 SMA:1H10 SMA H102 SMA:2H10 SMA H211 SMA:1H21 SMA H212 SMA:2H21 SMA H213 SMA:3H21 SMA H221 SMA:1H22 SMA H222 SMA:2H22 SMA H223 SMA:3H22 SMA H231 SMA:1H23 SMA H232 SMA:2H23 SMA H233 SMA:3H23 SMA H241 SMA:1H24 SMA H242 SMA:2H24 SMA H243 SMA:3H24 SMA H251 SMA:1H25 SMA H252 SMA:2H25 SMA H253 SMA:3H25 SMA H261 SMA:1H26 SMA H262 SMA:2H26 SMA H263 SMA:3H26 SMA H11 SMB:1H1 SMB H12 SMB:2H1 SMB H13 SMB:3H1 SMB H21 SMB:1H2 SMB H22 SMB:2H2 SMB H41 SMB:1H4 SMB H42 SMB:2H4 SMB H43 SMB:3H4 SMB H SMC:1HN SMC H2 SMC:2HN SMC HB2 SMC:1HB SMC HB3 SMC:2HB SMC HCS1 SMC:1HCS SMC HCS2 SMC:2HCS SMC HCS3 SMC:3HCS SMC H161 SMD:1H16 SMD H162 SMD:2H16 SMD H271 SMD:1H27 SMD H272 SMD:2H27 SMD H273 SMD:3H27 SMD H261 SMD:1H26 SMD H262 SMD:2H26 SMD H SME:1HN SME H2 SME:2HN SME HB2 SME:1HB SME HB3 SME:2HB SME HG2 SME:1HG SME HG3 SME:2HG SME HE1 SME:1HE SME HE2 SME:2HE SME HE3 SME:3HE SME H2 SMF: HN2 SMF HB2 SMF:1HB SMF HB3 SMF:2HB SMF HH2 SMF:1HH SMF HH3 SMF:2HH SMF H51 SMG:1H5 SMG H52 SMG:2H5 SMG H41 SMG:1H4 SMG H42 SMG:2H4 SMG HB1 SMG:1HB SMG HB2 SMG:2HB SMG HG1 SMG:1HG SMG HG2 SMG:2HG SMG HE1 SMG:1HE SMG HE2 SMG:2HE SMG HE3 SMG:3HE SMG H321 SML:1H32 SML H322 SML:2H32 SML H323 SML:3H32 SML H371 SML:1H37 SML H381 SML:1H38 SML H391 SML:1H39 SML H401 SML:1H40 SML H411 SML:1H41 SML HN1 SMM:1HN SMM HN2 SMM:2HN SMM HA1 SMM:1HA SMM HB1 SMM:1HB SMM HB2 SMM:2HB SMM HG1 SMM:1HG SMM HG2 SMM:2HG SMM HD1 SMM:1HD SMM HE1 SMM:1HE SMM HE2 SMM:2HE SMM HE3 SMM:3HE SMM H5'1 SMM:1H5* SMM H5'2 SMM:2H5* SMM H4' SMM: H4* SMM H1' SMM: H1* SMM HN61 SMM:1HN6 SMM HN62 SMM:2HN6 SMM H2' SMM: H2* SMM HO2' SMM:*HO2 SMM H3' SMM: H3* SMM HO3' SMM:*HO3 SMM HXT1 SMM:1HXT SMM HXT2 SMM:2HXT SMM HXT3 SMM:3HXT SMM HMP1 SMP:1HMP SMP HMP2 SMP:2HMP SMP HMP3 SMP:3HMP SMP H5' SMP:1H5* SMP H5'' SMP:2H5* SMP H4' SMP: H4* SMP H1' SMP: H1* SMP H61 SMP:1H6 SMP H62 SMP:2H6 SMP H3' SMP: H3* SMP H2' SMP:1H2* SMP H2'' SMP:2H2* SMP HO3' SMP:H3T SMP HOP3 SMP:3HOP SMP HN11 SMS:1HN1 SMS HN12 SMS:2HN1 SMS HC11 SMS:1HC1 SMS HC12 SMS:2HC1 SMS HC61 SMS:1HC6 SMS HC62 SMS:2HC6 SMS HC91 SMS:1HC9 SMS HC92 SMS:2HC9 SMS HC93 SMS:3HC9 SMS HC81 SMS:1HC8 SMS HC82 SMS:2HC8 SMS HC83 SMS:3HC8 SMS H5'2 SMT:2H5' SMT H5A1 SMT:1H5A SMT H5A2 SMT:2H5A SMT HA1 SMT:1HA SMT HA2 SMT:2HA SMT HB1 SMT:1HB SMT HB2 SMT:2HB SMT HD1 SMT:1HD SMT HD2 SMT:2HD SMT HD3 SMT:3HD SMT HB1 SN0:1HB SN0 HB2 SN0:2HB SN0 HG1 SN0:1HG SN0 HG2 SN0:2HG SN0 HD1A SN0:1HD SN0 HD2 SN0:2HD SN0 HD3 SN0:3HD SN0 H21 SN0:1H2 SN0 H22 SN0:2H2 SN0 H31 SN0:1H3 SN0 H32 SN0:2H3 SN0 HC71 SN2:1HC7 SN2 HC72 SN2:2HC7 SN2 HC81 SN2:1HC8 SN2 HC82 SN2:2HC8 SN2 HC91 SN2:1HC9 SN2 HC92 SN2:2HC9 SN2 H101 SN2:1H10 SN2 H102 SN2:2H10 SN2 HN41 SN2:1HN4 SN2 HN42 SN2:2HN4 SN2 H21 SN3:1H2 SN3 H22 SN3:2H2 SN3 H51 SN3:1H5 SN3 H52 SN3:2H5 SN3 H101 SN3:1H10 SN3 H102 SN3:2H10 SN3 H131 SN3:1H13 SN3 H132 SN3:2H13 SN3 H141 SN3:1H14 SN3 H142 SN3:2H14 SN3 H161 SN3:1H16 SN3 H162 SN3:2H16 SN3 H181 SN3:1H18 SN3 H182 SN3:2H18 SN3 H192 SN3:2H19 SN3 H221 SN3:1H22 SN3 H222 SN3:2H22 SN3 H291 SN3:1H29 SN3 H292 SN3:2H29 SN3 H293 SN3:3H29 SN3 H301 SN3:1H30 SN3 H302 SN3:2H30 SN3 H303 SN3:3H30 SN3 H361 SN3:1H36 SN3 H362 SN3:2H36 SN3 H363 SN3:3H36 SN3 H371 SN3:1H37 SN3 H372 SN3:2H37 SN3 H341 SN6:1H34 SN6 H342 SN6:2H34 SN6 H343 SN6:3H34 SN6 H351 SN6:1H35 SN6 H352 SN6:2H35 SN6 H353 SN6:3H35 SN6 H341 SN7:1H34 SN7 H342 SN7:2H34 SN7 H343 SN7:3H34 SN7 H351 SN7:1H35 SN7 H352 SN7:2H35 SN7 H353 SN7:3H35 SN7 H361 SN7:1H36 SN7 H362 SN7:2H36 SN7 H371 SN7:1H37 SN7 H372 SN7:2H37 SN7 HAA1 SN8:1HAA SN8 HAA2 SN8:2HAA SN8 HAA3 SN8:3HAA SN8 HAC1 SN8:1HAC SN8 HAC2 SN8:2HAC SN8 HAC3 SN8:3HAC SN8 HAT1 SN8:1HAT SN8 HAJ1 SN8:1HAJ SN8 HAL1 SN8:1HAL SN8 HAI1 SN8:1HAI SN8 HAK1 SN8:1HAK SN8 HAF1 SN8:1HAF SN8 HAH1 SN8:1HAH SN8 HAE1 SN8:1HAE SN8 HAG1 SN8:1HAG SN8 HAN1 SN8:1HAN SN8 HAR1 SN8:1HAR SN8 HAB1 SN8:1HAB SN8 HAB2 SN8:2HAB SN8 HAB3 SN8:3HAB SN8 HAS1 SN8:1HAS SN8 HAO1 SN8:1HAO SN8 HAA1 SN9:1HAA SN9 HAA2 SN9:2HAA SN9 HAA3 SN9:3HAA SN9 HAC1 SN9:1HAC SN9 HAC2 SN9:2HAC SN9 HAC3 SN9:3HAC SN9 HAU1 SN9:1HAU SN9 HAL1 SN9:1HAL SN9 HAN1 SN9:1HAN SN9 HAK1 SN9:1HAK SN9 HAM1 SN9:1HAM SN9 HAH1 SN9:1HAH SN9 HAJ1 SN9:1HAJ SN9 HAG1 SN9:1HAG SN9 HAI1 SN9:1HAI SN9 HAO1 SN9:1HAO SN9 HAS1 SN9:1HAS SN9 HAB1 SN9:1HAB SN9 HAB2 SN9:2HAB SN9 HAB3 SN9:3HAB SN9 HAT1 SN9:1HAT SN9 HAP1 SN9:1HAP SN9 H141 SNA:1H14 SNA H142 SNA:2H14 SNA H201 SNA:1H20 SNA H202 SNA:2H20 SNA H211 SNA:1H21 SNA H212 SNA:2H21 SNA H221 SNA:1H22 SNA H222 SNA:2H22 SNA H231 SNA:1H23 SNA H232 SNA:2H23 SNA H241 SNA:1H24 SNA H242 SNA:2H24 SNA H271 SNA:1H27 SNA H272 SNA:2H27 SNA H461 SNA:1H46 SNA H462 SNA:2H46 SNA H531 SNA:1H53 SNA H532 SNA:2H53 SNA H571 SNA:1H57 SNA H572 SNA:2H57 SNA H SNC:1HN SNC H2 SNC:2HN SNC HB2 SNC:1HB SNC HB3 SNC:2HB SNC HOA2 SND:2HOA SND H51A SND:AH51 SND H52A SND:AH52 SND H4B SND:AH4* SND H3B SND:AH3* SND HO3A SND:AHO3 SND H2B SND:AH2* SND HO2A SND:AHO2 SND H1B SND:AH1* SND H8A SND: AH8 SND H61A SND:AH61 SND H62A SND:AH62 SND H2A SND: AH2 SND H51N SND:NH51 SND H52N SND:NH52 SND H4D SND:NH4* SND H3D SND:NH3* SND HO3N SND:NHO3 SND H2D SND:NH2* SND HO2N SND:NHO2 SND H1D SND:NH1* SND H2N SND: NH2 SND H71N SND:NH71 SND H72N SND:NH72 SND H4N SND: NH4 SND H5N SND: NH5 SND H6N SND: NH6 SND H6C1 SNG:1H6C SNG H6C2 SNG:2H6C SNG H8C1 SNG:1H8C SNG H8C2 SNG:2H8C SNG H8C3 SNG:3H8C SNG HMC1 SNG:1HMC SNG HMC2 SNG:2HMC SNG HMC3 SNG:3HMC SNG H201 SNH:1H20 SNH H202 SNH:2H20 SNH H203 SNH:3H20 SNH H211 SNH:1H21 SNH H212 SNH:2H21 SNH H213 SNH:3H21 SNH H281 SNH:1H28 SNH H282 SNH:2H28 SNH H283 SNH:3H28 SNH H5' SNI: H5* SNI H5'1 SNI:1H5* SNI H5'2 SNI:2H5* SNI H4' SNI: H4* SNI H1' SNI: H1* SNI H2' SNI: H2* SNI H3' SNI: H3* SNI H81 SNL:1H8 SNL H82 SNL:2H8 SNL H41 SNL:1H4 SNL H42 SNL:2H4 SNL H11 SNL:1H1 SNL H12 SNL:2H1 SNL H31 SNL:1H3 SNL H32 SNL:2H3 SNL H71 SNL:1H7 SNL H72 SNL:2H7 SNL H101 SNL:1H10 SNL H102 SNL:2H10 SNL H103 SNL:3H10 SNL H111 SNL:1H11 SNL H112 SNL:2H11 SNL H113 SNL:3H11 SNL H121 SNL:1H12 SNL H122 SNL:2H12 SNL H131 SNL:1H13 SNL H132 SNL:2H13 SNL H141 SNL:1H14 SNL H142 SNL:2H14 SNL H171 SNL:1H17 SNL H172 SNL:2H17 SNL H173 SNL:3H17 SNL H211 SNL:1H21 SNL H212 SNL:2H21 SNL HN31 SNN:1HN3 SNN HN32 SNN:2HN3 SNN H41 SNN:1H4 SNN H42 SNN:2H4 SNN H22 SNO:2H2 SNO H33 SNO:3H3 SNO H55 SNO:5H5 SNO H66 SNO:6H6 SNO H77 SNO:7H7 SNO H81 SNO:1H8 SNO H82 SNO:2H8 SNO H112 SNP:2H11 SNP H111 SNP:1H11 SNP H2O1 SNP:1H2O SNP H132 SNP:2H13 SNP H131 SNP:1H13 SNP H153 SNP:3H15 SNP H152 SNP:2H15 SNP H151 SNP:1H15 SNP H163 SNP:3H16 SNP H162 SNP:2H16 SNP H161 SNP:1H16 SNP H11 SNR:1H1 SNR H21 SNR:1H2 SNR H12 SNR:2H1 SNR H22 SNR:2H2 SNR H13 SNR:3H1 SNR H23 SNR:3H2 SNR H121 SO1:1H12 SO1 H122 SO1:2H12 SO1 H101 SO1:1H10 SO1 H102 SO1:2H10 SO1 H181 SO1:1H18 SO1 H182 SO1:2H18 SO1 H241 SO1:1H24 SO1 H242 SO1:2H24 SO1 H251 SO1:1H25 SO1 H252 SO1:2H25 SO1 H253 SO1:3H25 SO1 H71 SO1:1H7 SO1 H72 SO1:2H7 SO1 H81 SO1:1H8 SO1 H82 SO1:2H8 SO1 H611 SO1:1H61 SO1 H612 SO1:2H61 SO1 H613 SO1:3H61 SO1 H651 SO1:1H65 SO1 H652 SO1:2H65 SO1 H653 SO1:3H65 SO1 H201 SO1:1H20 SO1 H202 SO1:2H20 SO1 H203 SO1:3H20 SO1 H211 SO1:1H21 SO1 H212 SO1:2H21 SO1 H213 SO1:3H21 SO1 HNB1 SOA:1HNB SOA HNB2 SOA:2HNB SOA H121 SOA:1H12 SOA H122 SOA:2H12 SOA H SOC:1HN SOC H2 SOC:2HN SOC HB2 SOC:1HB SOC HB3 SOC:2HB SOC HE SOC:HSE1 SOC H101 SOD:1H10 SOD H102 SOD:2H10 SOD H181 SOD:1H18 SOD H182 SOD:2H18 SOD H251 SOD:1H25 SOD H252 SOD:2H25 SOD H253 SOD:3H25 SOD H71 SOD:1H7 SOD H72 SOD:2H7 SOD H81 SOD:1H8 SOD H82 SOD:2H8 SOD H611 SOD:1H61 SOD H612 SOD:2H61 SOD H613 SOD:3H61 SOD H651 SOD:1H65 SOD H652 SOD:2H65 SOD H701 SOD:1H70 SOD H702 SOD:2H70 SOD H531 SOD:1H53 SOD H532 SOD:2H53 SOD H201 SOD:1H20 SOD H202 SOD:2H20 SOD H203 SOD:3H20 SOD H211 SOD:1H21 SOD H212 SOD:2H21 SOD H213 SOD:3H21 SOD H61 SOG:1H6 SOG H62 SOG:2H6 SOG H1'1 SOG:1H1' SOG H1'2 SOG:2H1' SOG H2'1 SOG:1H2' SOG H2'2 SOG:2H2' SOG H3'1 SOG:1H3' SOG H3'2 SOG:2H3' SOG H4'1 SOG:1H4' SOG H4'2 SOG:2H4' SOG H5'1 SOG:1H5' SOG H5'2 SOG:2H5' SOG H6'1 SOG:1H6' SOG H6'2 SOG:2H6' SOG H7'1 SOG:1H7' SOG H7'2 SOG:2H7' SOG H8'1 SOG:1H8' SOG H8'2 SOG:2H8' SOG H8'3 SOG:3H8' SOG H11 SOM:1H1 SOM H12 SOM:2H1 SOM H13 SOM:3H1 SOM HB1 SON:1HB SON HB2 SON:2HB SON H5'1 SON:1H5' SON H5'2 SON:2H5' SON HN61 SON:1HN6 SON HN62 SON:2HN6 SON HN61 SOP:1HN6 SOP HN62 SOP:2HN6 SOP H1' SOP: H1* SOP H2' SOP: H2* SOP HO2' SOP:HO2* SOP H3' SOP: H3* SOP H4' SOP: H4* SOP H5'1 SOP:1H5* SOP H5'2 SOP:2H5* SOP HP91 SOP:1HP9 SOP HP92 SOP:2HP9 SOP HPB1 SOP:1HPB SOP HPB2 SOP:2HPB SOP HPB3 SOP:3HPB SOP HPA1 SOP:1HPA SOP HPA2 SOP:2HPA SOP HPA3 SOP:3HPA SOP HP51 SOP:1HP5 SOP HP52 SOP:2HP5 SOP HP41 SOP:1HP4 SOP HP42 SOP:2HP4 SOP HP21 SOP:1HP2 SOP HP22 SOP:2HP2 SOP HP11 SOP:1HP1 SOP HP12 SOP:2HP1 SOP HA11 SOP:1HA1 SOP HA12 SOP:2HA1 SOP HA31 SOP:1HA3 SOP HA32 SOP:2HA3 SOP HA33 SOP:3HA3 SOP H11 SOR:1H1 SOR H12 SOR:2H1 SOR H61 SOR:1H6 SOR H62 SOR:2H6 SOR H91 SOS:1H9 SOS H92 SOS:2H9 SOS HN21 SOS:1HN2 SOS HN22 SOS:2HN2 SOS H1' SOS: H1* SOS H6'1 SOS:1H6* SOS H6'2 SOS:2H6* SOS H2' SOS:1H2* SOS H2'' SOS:2H2* SOS H3' SOS: H3* SOS HO3' SOS:H3T SOS H4' SOS: H4* SOS H5' SOS:1H5* SOS H5'' SOS:2H5* SOS HOP2 SOS:2HOP SOS HOP3 SOS:3HOP SOS H21 SOT:1H2 SOT H22 SOT:2H2 SOT H31 SOT:1H3 SOT H32 SOT:2H3 SOT H51 SOT:1H5 SOT H52 SOT:2H5 SOT H61 SOT:1H6 SOT H62 SOT:2H6 SOT H101 SOX:1H10 SOX H102 SOX:2H10 SOX H103 SOX:3H10 SOX H9C1 SOX:1H9C SOX H9C2 SOX:2H9C SOX H9C3 SOX:3H9C SOX H171 SOX:1H17 SOX H172 SOX:2H17 SOX HN1 SOY:1HN SOY HN2 SOY:2HN SOY HBC1 SOY:1HBC SOY HBC2 SOY:2HBC SOY H7C1 SOY:1H7C SOY H7C2 SOY:2H7C SOY H7C3 SOY:3H7C SOY H8C1 SOY:1H8C SOY H8C2 SOY:2H8C SOY H8C3 SOY:3H8C SOY H191 SOY:1H19 SOY H192 SOY:2H19 SOY H193 SOY:3H19 SOY HOP2 SP1:2HOP SP1 H5'1 SP1:1H5* SP1 H5'2 SP1:2H5* SP1 H4' SP1: H4* SP1 H3' SP1: H3* SP1 H2' SP1: H2* SP1 HO2' SP1:*HO2 SP1 H1' SP1: H1* SP1 HN61 SP1:1HN6 SP1 HN62 SP1:2HN6 SP1 HMA1 SP2:1HMA SP2 HMA2 SP2:2HMA SP2 HMA3 SP2:3HMA SP2 HM11 SP2:1HM1 SP2 HM12 SP2:2HM1 SP2 HM13 SP2:3HM1 SP2 HM21 SP2:1HM2 SP2 HM22 SP2:2HM2 SP2 HM23 SP2:3HM2 SP2 H21A SP2:1H2 SP2 H22 SP2:2H2 SP2 H31 SP2:1H3 SP2 H32 SP2:2H3 SP2 H41 SP2:1H4 SP2 H42 SP2:2H4 SP2 HM31 SP2:1HM3 SP2 HM32 SP2:2HM3 SP2 HM33 SP2:3HM3 SP2 HM41 SP2:1HM4 SP2 HM42 SP2:2HM4 SP2 HM43 SP2:3HM4 SP2 HM51 SP2:1HM5 SP2 HM52 SP2:2HM5 SP2 HM53 SP2:3HM5 SP2 HM61 SP2:1HM6 SP2 HM62 SP2:2HM6 SP2 HM63 SP2:3HM6 SP2 HM71 SP2:1HM7 SP2 HM72 SP2:2HM7 SP2 HM73 SP2:3HM7 SP2 H231 SP2:1H23 SP2 H232 SP2:2H23 SP2 H241 SP2:1H24 SP2 H242 SP2:2H24 SP2 HM81 SP2:1HM8 SP2 HM82 SP2:2HM8 SP2 HM83 SP2:3HM8 SP2 H271 SP2:1H27 SP2 H272 SP2:2H27 SP2 H281 SP2:1H28 SP2 H282 SP2:2H28 SP2 HMB1 SP2:1HMB SP2 HMB2 SP2:2HMB SP2 HMB3 SP2:3HMB SP2 HM91 SP2:1HM9 SP2 HM92 SP2:2HM9 SP2 HM93 SP2:3HM9 SP2 H11 SP4:1H1 SP4 H12 SP4:2H1 SP4 H41 SP4:1H4 SP4 H42 SP4:2H4 SP4 HN1 SP4:1HN SP4 HN2 SP4:2HN SP4 H41 SP6:1H4 SP6 H42 SP6:2H4 SP6 H61 SP6:1H6 SP6 H111 SP6:1H11 SP6 H112 SP6:2H11 SP6 H61 SPA:1H6 SPA H62 SPA:2H6 SPA H10C SPB:CH10 SPB H11C SPB:CH11 SPB H13C SPB:CH13 SPB H14C SPB:CH14 SPB H15N SPB:NH15 SPB H171 SPB:1H17 SPB H172 SPB:2H17 SPB H181 SPB:1H18 SPB H182 SPB:2H18 SPB H191 SPB:1H19 SPB H192 SPB:2H19 SPB H23O SPB:OH23 SPB HC21 SPC:1HC2 SPC HC31 SPC:1HC3 SPC HC51 SPC:1HC5 SPC HC61 SPC:1HC6 SPC HC81 SPC:1HC8 SPC HC82 SPC:2HC8 SPC HC83 SPC:3HC8 SPC H151 SPC:1H15 SPC H161 SPC:1H16 SPC H162 SPC:2H16 SPC H171 SPC:1H17 SPC H181 SPC:1H18 SPC H182 SPC:2H18 SPC H231 SPC:1H23 SPC H251 SPC:1H25 SPC H252 SPC:2H25 SPC H253 SPC:3H25 SPC HN11 SPD:1HN1 SPD HN12 SPD:2HN1 SPD H21 SPD:1H2 SPD H22 SPD:2H2 SPD H31 SPD:1H3 SPD H32 SPD:2H3 SPD H41 SPD:1H4 SPD H42 SPD:2H4 SPD H51 SPD:1H5 SPD H52 SPD:2H5 SPD H71 SPD:1H7 SPD H72 SPD:2H7 SPD H81 SPD:1H8 SPD H82 SPD:2H8 SPD H91 SPD:1H9 SPD H92 SPD:2H9 SPD H101 SPD:1H10 SPD H102 SPD:2H10 SPD HN11 SPE:1HN1 SPE HN12 SPE:2HN1 SPE H21 SPE:1H2 SPE H22 SPE:2H2 SPE H31 SPE:1H3 SPE H32 SPE:2H3 SPE H41 SPE:1H4 SPE H42 SPE:2H4 SPE H61 SPE:1H6 SPE H62 SPE:2H6 SPE H71 SPE:1H7 SPE H72 SPE:2H7 SPE H81 SPE:1H8 SPE H82 SPE:2H8 SPE H101 SPE:1H10 SPE H102 SPE:2H10 SPE H111 SPE:1H11 SPE H112 SPE:2H11 SPE H121 SPE:1H12 SPE H122 SPE:2H12 SPE HN31 SPE:1HN3 SPE HN32 SPE:2HN3 SPE HN61 SPF:1HN6 SPF HN62 SPF:2HN6 SPF H1' SPF: H1* SPF H2' SPF: H2* SPF H3' SPF: H3* SPF H4' SPF: H4* SPF H5'1 SPF:1H5* SPF H5'2 SPF:2H5* SPF H11 SPF:1H1 SPF H12X SPF:2H1 SPF H13 SPF:3H1 SPF H141 SPF:1H14 SPF H142 SPF:2H14 SPF H143 SPF:3H14 SPF H71 SPF:1H7 SPF H72 SPF:2H7 SPF H61 SPF:1H6 SPF H62 SPF:2H6 SPF H31 SPF:1H3 SPF H32 SPF:2H3 SPF H21 SPF:1H2 SPF H22 SPF:2H2 SPF H111 SPF:1H11 SPF H112 SPF:2H11 SPF H113 SPF:3H11 SPF H131 SPF:1H13 SPF H132 SPF:2H13 SPF H133 SPF:3H13 SPF HOP2 SPG:2HOP SPG HOP3 SPG:3HOP SPG HOA2 SPG:2HOA SPG HOA3 SPG:3HOA SPG H5'1 SPG:1H5* SPG H5'2 SPG:2H5* SPG H4' SPG: H4* SPG H3' SPG: H3* SPG HO3' SPG:*HO3 SPG H2' SPG: H2* SPG HO2' SPG:*HO2 SPG H1' SPG: H1* SPG H11 SPH:1H1 SPH H12 SPH:2H1 SPH HN21 SPH:1HN2 SPH HN22 SPH:2HN2 SPH H61 SPH:1H6 SPH H62 SPH:2H6 SPH H71 SPH:1H7 SPH H72 SPH:2H7 SPH H81 SPH:1H8 SPH H82 SPH:2H8 SPH H91 SPH:1H9 SPH H92 SPH:2H9 SPH H101 SPH:1H10 SPH H102 SPH:2H10 SPH H111 SPH:1H11 SPH H112 SPH:2H11 SPH H121 SPH:1H12 SPH H122 SPH:2H12 SPH H131 SPH:1H13 SPH H132 SPH:2H13 SPH H141 SPH:1H14 SPH H142 SPH:2H14 SPH H151 SPH:1H15 SPH H152 SPH:2H15 SPH H161 SPH:1H16 SPH H162 SPH:2H16 SPH H171 SPH:1H17 SPH H172 SPH:2H17 SPH H181 SPH:1H18 SPH H182 SPH:2H18 SPH H183 SPH:3H18 SPH HC21 SPI:1HC2 SPI HC31 SPI:1HC3 SPI HC51 SPI:1HC5 SPI HC61 SPI:1HC6 SPI HC71 SPI:1HC7 SPI HC72 SPI:2HC7 SPI HC73 SPI:3HC7 SPI HC81 SPI:1HC8 SPI HC91 SPI:1HC9 SPI HC92 SPI:2HC9 SPI H101 SPI:1H10 SPI H102 SPI:2H10 SPI H111 SPI:1H11 SPI H112 SPI:2H11 SPI H131 SPI:1H13 SPI H132 SPI:2H13 SPI H151 SPI:1H15 SPI H161 SPI:1H16 SPI H171 SPI:1H17 SPI H181 SPI:1H18 SPI H191 SPI:1H19 SPI H101 SPK:1H10 SPK H102 SPK:2H10 SPK H111 SPK:1H11 SPK H112 SPK:2H11 SPK H121 SPK:1H12 SPK H122 SPK:2H12 SPK H131 SPK:1H13 SPK H132 SPK:2H13 SPK H141 SPK:1H14 SPK H142 SPK:2H14 SPK H143 SPK:3H14 SPK H11 SPL:1H1 SPL H12 SPL:2H1 SPL H61 SPL:1H6 SPL H62 SPL:2H6 SPL H71 SPL:1H7 SPL H72 SPL:2H7 SPL H81 SPL:1H8 SPL H82 SPL:2H8 SPL H91 SPL:1H9 SPL H92 SPL:2H9 SPL H101 SPL:1H10 SPL H102 SPL:2H10 SPL H111 SPL:1H11 SPL H112 SPL:2H11 SPL H121 SPL:1H12 SPL H122 SPL:2H12 SPL H131 SPL:1H13 SPL H132 SPL:2H13 SPL H141 SPL:1H14 SPL H142 SPL:2H14 SPL H151 SPL:1H15 SPL H152 SPL:2H15 SPL H161 SPL:1H16 SPL H162 SPL:2H16 SPL H171 SPL:1H17 SPL H172 SPL:2H17 SPL H181 SPL:1H18 SPL H182 SPL:2H18 SPL H183 SPL:3H18 SPL H201 SPL:1H20 SPL H202 SPL:2H20 SPL H211 SPL:1H21 SPL H212 SPL:2H21 SPL H221 SPL:1H22 SPL H222 SPL:2H22 SPL H231 SPL:1H23 SPL H232 SPL:2H23 SPL H241 SPL:1H24 SPL H242 SPL:2H24 SPL H251 SPL:1H25 SPL H252 SPL:2H25 SPL H261 SPL:1H26 SPL H262 SPL:2H26 SPL H263 SPL:3H26 SPL HN11 SPM:1HN1 SPM HN12 SPM:2HN1 SPM H21 SPM:1H2 SPM H22 SPM:2H2 SPM H31 SPM:1H3 SPM H32 SPM:2H3 SPM H41 SPM:1H4 SPM H42 SPM:2H4 SPM H61 SPM:1H6 SPM H62 SPM:2H6 SPM H71 SPM:1H7 SPM H72 SPM:2H7 SPM H81 SPM:1H8 SPM H82 SPM:2H8 SPM H91 SPM:1H9 SPM H92 SPM:2H9 SPM H111 SPM:1H11 SPM H112 SPM:2H11 SPM H121 SPM:1H12 SPM H122 SPM:2H12 SPM H131 SPM:1H13 SPM H132 SPM:2H13 SPM HN41 SPM:1HN4 SPM HN42 SPM:2HN4 SPM HMA1 SPN:1HMA SPN HMA2 SPN:2HMA SPN HMA3 SPN:3HMA SPN HM11 SPN:1HM1 SPN HM12 SPN:2HM1 SPN HM13 SPN:3HM1 SPN HM21 SPN:1HM2 SPN HM22 SPN:2HM2 SPN HM23 SPN:3HM2 SPN H31 SPN:1H3 SPN H32 SPN:2H3 SPN HM31 SPN:1HM3 SPN HM32 SPN:2HM3 SPN HM33 SPN:3HM3 SPN H61 SPN:1H6 SPN H62 SPN:2H6 SPN H71 SPN:1H7 SPN H72 SPN:2H7 SPN HM41 SPN:1HM4 SPN HM42 SPN:2HM4 SPN HM43 SPN:3HM4 SPN H101 SPN:1H10 SPN H102 SPN:2H10 SPN H111 SPN:1H11 SPN H112 SPN:2H11 SPN HM51 SPN:1HM5 SPN HM52 SPN:2HM5 SPN HM53 SPN:3HM5 SPN H141 SPN:1H14 SPN H142 SPN:2H14 SPN H151 SPN:1H15 SPN H152 SPN:2H15 SPN H161 SPN:1H16 SPN H162 SPN:2H16 SPN H171 SPN:1H17 SPN H172 SPN:2H17 SPN HM61 SPN:1HM6 SPN HM62 SPN:2HM6 SPN HM63 SPN:3HM6 SPN H201 SPN:1H20 SPN H202 SPN:2H20 SPN H211 SPN:1H21 SPN H212 SPN:2H21 SPN HM71 SPN:1HM7 SPN HM72 SPN:2HM7 SPN HM73 SPN:3HM7 SPN H231 SPN:1H23 SPN H232 SPN:2H23 SPN H241 SPN:1H24 SPN H242 SPN:2H24 SPN HM81 SPN:1HM8 SPN HM82 SPN:2HM8 SPN HM83 SPN:3HM8 SPN H271 SPN:1H27 SPN H272 SPN:2H27 SPN H281 SPN:1H28 SPN H282 SPN:2H28 SPN HM91 SPN:1HM9 SPN HM92 SPN:2HM9 SPN HM93 SPN:3HM9 SPN HMB1 SPN:1HMB SPN HMB2 SPN:2HMB SPN HMB3 SPN:3HMB SPN HM11 SPO:1HM1 SPO HM12 SPO:2HM1 SPO HM13 SPO:3HM1 SPO H21A SPO:1H2 SPO H22A SPO:2H2 SPO H23 SPO:3H2 SPO H31 SPO:1H3 SPO H32A SPO:2H3 SPO H33 SPO:3H3 SPO H41 SPO:1H4 SPO H42 SPO:2H4 SPO H81 SPO:1H8 SPO H82 SPO:2H8 SPO H83 SPO:3H8 SPO H131 SPO:1H13 SPO H132 SPO:2H13 SPO H133 SPO:3H13 SPO H181 SPO:1H18 SPO H182 SPO:2H18 SPO H183 SPO:3H18 SPO H241 SPO:1H24 SPO H242 SPO:2H24 SPO H243 SPO:3H24 SPO H291 SPO:1H29 SPO H292 SPO:2H29 SPO H293 SPO:3H29 SPO H301 SPO:1H30 SPO H302 SPO:2H30 SPO H311 SPO:1H31 SPO H312 SPO:2H31 SPO H341 SPO:1H34 SPO H342 SPO:2H34 SPO H343 SPO:3H34 SPO H351 SPO:1H35 SPO H352 SPO:2H35 SPO H361 SPO:1H36 SPO H362 SPO:2H36 SPO H391 SPO:1H39 SPO H392 SPO:2H39 SPO H393 SPO:3H39 SPO H401 SPO:1H40 SPO H402 SPO:2H40 SPO H403 SPO:3H40 SPO H81 SPP:1H8 SPP H82 SPP:2H8 SPP H91 SPP:1H9 SPP H92 SPP:2H9 SPP H111 SPP:1H11 SPP H112 SPP:2H11 SPP H121 SPP:1H12 SPP H122 SPP:2H12 SPP HB1 SPP:1HB SPP HB2 SPP:2HB SPP HB3 SPP:3HB SPP HC1 SPP:1HC SPP HC2 SPP:2HC SPP HC3 SPP:3HC SPP HE1 SPP:1HE SPP HE2 SPP:2HE SPP HE3 SPP:3HE SPP H101 SPQ:1H10 SPQ H102 SPQ:2H10 SPQ H61 SPQ:1H6 SPQ H62 SPQ:2H6 SPQ H181 SPR:1H18 SPR H182 SPR:2H18 SPR H21 SPR:1H2 SPR H22 SPR:2H2 SPR H71 SPR:1H7 SPR H72 SPR:2H7 SPR H141 SPR:1H14 SPR H142 SPR:2H14 SPR H161 SPR:1H16 SPR H162 SPR:2H16 SPR H163 SPR:3H16 SPR H171 SPR:1H17 SPR H172 SPR:2H17 SPR H173 SPR:3H17 SPR H201 SPR:1H20 SPR H202 SPR:2H20 SPR H203 SPR:3H20 SPR H6A1 SPR:1H6A SPR H6A2 SPR:2H6A SPR H6A3 SPR:3H6A SPR H7A1 SPR:1H7A SPR H7A2 SPR:2H7A SPR H7A3 SPR:3H7A SPR H8A1 SPR:1H8A SPR H8A2 SPR:2H8A SPR H8A3 SPR:3H8A SPR H2B1 SPR:1H2B SPR H2B2 SPR:2H2B SPR H6B1 SPR:1H6B SPR H6B2 SPR:2H6B SPR H6B3 SPR:3H6B SPR H7B1 SPR:1H7B SPR H7B2 SPR:2H7B SPR H7B3 SPR:3H7B SPR H1C1 SPR:1H1C SPR H2C1 SPR:1H2C SPR H2C2 SPR:2H2C SPR H3C1 SPR:1H3C SPR H3C2 SPR:2H3C SPR H6C1 SPR:1H6C SPR H6C2 SPR:2H6C SPR H6C3 SPR:3H6C SPR H7C1 SPR:1H7C SPR H7C2 SPR:2H7C SPR H7C3 SPR:3H7C SPR H8C1 SPR:1H8C SPR H8C2 SPR:2H8C SPR H8C3 SPR:3H8C SPR H71 SPS:1H7 SPS H72 SPS:2H7 SPS H73 SPS:3H7 SPS H81 SPS:1H8 SPS H91 SPS:1H9 SPS H121 SPS:1H12 SPS H131 SPS:1H13 SPS H132 SPS:2H13 SPS H141 SPS:1H14 SPS H142 SPS:2H14 SPS H161 SPS:1H16 SPS H162 SPS:2H16 SPS H181 SPS:1H18 SPS H182 SPS:2H18 SPS H183 SPS:3H18 SPS H71 SPT:1H5M SPT H72 SPT:2H5M SPT H73 SPT:3H5M SPT H2' SPT:1H2* SPT H2'' SPT:2H2* SPT H5' SPT:1H5* SPT H5'' SPT:2H5* SPT H4' SPT: H4* SPT H1' SPT: H1* SPT H3' SPT: H3* SPT HO3' SPT:H3T SPT HOP3 SPT:3HOP SPT HOP2 SPT:2HOP SPT H2'O SPV:OH2' SPV H31 SPV:1H3 SPV H32 SPV:2H3 SPV H2SO SPV:OH2S SPV DXT SPW:1D10 SPW DXU SPW:2D10 SPW DXX SPW:1D14 SPW DXY SPW:2D14 SPW DXZ SPW:3D14 SPW H81 SPX:1H8 SPX H82 SPX:2H8 SPX H481 SPX:1H48 SPX H482 SPX:2H48 SPX H483 SPX:3H48 SPX H61 SPX:1H6 SPX H62 SPX:2H6 SPX H381 SPX:1H38 SPX H382 SPX:2H38 SPX H383 SPX:3H38 SPX H411 SPX:1H41 SPX H412 SPX:2H41 SPX H413 SPX:3H41 SPX H491 SPX:1H49 SPX H492 SPX:2H49 SPX H493 SPX:3H49 SPX H141 SPX:1H14 SPX H142 SPX:2H14 SPX H501 SPX:1H50 SPX H502 SPX:2H50 SPX H503 SPX:3H50 SPX H421 SPX:1H42 SPX H422 SPX:2H42 SPX H423 SPX:3H42 SPX H201 SPX:1H20 SPX H202 SPX:2H20 SPX H511 SPX:1H51 SPX H512 SPX:2H51 SPX H513 SPX:3H51 SPX H431 SPX:1H43 SPX H432 SPX:2H43 SPX H433 SPX:3H43 SPX H441 SPX:1H44 SPX H442 SPX:2H44 SPX H443 SPX:3H44 SPX H521 SPX:1H52 SPX H522 SPX:2H52 SPX H523 SPX:3H52 SPX H451 SPX:1H45 SPX H452 SPX:2H45 SPX H453 SPX:3H45 SPX H291 SPX:1H29 SPX H292 SPX:2H29 SPX H301 SPX:1H30 SPX H302 SPX:2H30 SPX H461 SPX:1H46 SPX H462 SPX:2H46 SPX H463 SPX:3H46 SPX H531 SPX:1H53 SPX H532 SPX:2H53 SPX H533 SPX:3H53 SPX H341 SPX:1H34 SPX H342 SPX:2H34 SPX H471 SPX:1H47 SPX H472 SPX:2H47 SPX H473 SPX:3H47 SPX H1C1 SQA:1H1C SQA H1C2 SQA:2H1C SQA H1C3 SQA:3H1C SQA H3C1 SQA:1H3C SQA H3C2 SQA:2H3C SQA H4C1 SQA:1H4C SQA H4C2 SQA:2H4C SQA H5C1 SQA:1H5C SQA H5C2 SQA:2H5C SQA H8C1 SQA:1H8C SQA H8C2 SQA:2H8C SQA H9C1 SQA:1H9C SQA H9C2 SQA:2H9C SQA H121 SQA:1H12 SQA H122 SQA:2H12 SQA H131 SQA:1H13 SQA H132 SQA:2H13 SQA H161 SQA:1H16 SQA H162 SQA:2H16 SQA H171 SQA:1H17 SQA H172 SQA:2H17 SQA H201 SQA:1H20 SQA H202 SQA:2H20 SQA H211 SQA:1H21 SQA H212 SQA:2H21 SQA H241 SQA:1H24 SQA H242 SQA:2H24 SQA H243 SQA:3H24 SQA H251 SQA:1H25 SQA H252 SQA:2H25 SQA H253 SQA:3H25 SQA H261 SQA:1H26 SQA H262 SQA:2H26 SQA H263 SQA:3H26 SQA H271 SQA:1H27 SQA H272 SQA:2H27 SQA H273 SQA:3H27 SQA H281 SQA:1H28 SQA H282 SQA:2H28 SQA H283 SQA:3H28 SQA H291 SQA:1H29 SQA H292 SQA:2H29 SQA H293 SQA:3H29 SQA H301 SQA:1H30 SQA H302 SQA:2H30 SQA H303 SQA:3H30 SQA H441 SQD:1H44 SQD H442 SQD:2H44 SQD H461 SQD:1H46 SQD H462 SQD:2H46 SQD H81 SQD:1H8 SQD H82 SQD:2H8 SQD H91 SQD:1H9 SQD H92 SQD:2H9 SQD H101 SQD:1H10 SQD H102 SQD:2H10 SQD H111 SQD:1H11 SQD H112 SQD:2H11 SQD H121 SQD:1H12 SQD H122 SQD:2H12 SQD H131 SQD:1H13 SQD H132 SQD:2H13 SQD H141 SQD:1H14 SQD H142 SQD:2H14 SQD H151 SQD:1H15 SQD H152 SQD:2H15 SQD H161 SQD:1H16 SQD H162 SQD:2H16 SQD H171 SQD:1H17 SQD H172 SQD:2H17 SQD H181 SQD:1H18 SQD H182 SQD:2H18 SQD H191 SQD:1H19 SQD H192 SQD:2H19 SQD H201 SQD:1H20 SQD H202 SQD:2H20 SQD H211 SQD:1H21 SQD H212 SQD:2H21 SQD H221 SQD:1H22 SQD H222 SQD:2H22 SQD H223 SQD:3H22 SQD H241 SQD:1H24 SQD H242 SQD:2H24 SQD H251 SQD:1H25 SQD H252 SQD:2H25 SQD H261 SQD:1H26 SQD H262 SQD:2H26 SQD H271 SQD:1H27 SQD H272 SQD:2H27 SQD H281 SQD:1H28 SQD H282 SQD:2H28 SQD H291 SQD:1H29 SQD H292 SQD:2H29 SQD H301 SQD:1H30 SQD H302 SQD:2H30 SQD H311 SQD:1H31 SQD H312 SQD:2H31 SQD H321 SQD:1H32 SQD H322 SQD:2H32 SQD H331 SQD:1H33 SQD H332 SQD:2H33 SQD H341 SQD:1H34 SQD H342 SQD:2H34 SQD H351 SQD:1H35 SQD H352 SQD:2H35 SQD H361 SQD:1H36 SQD H362 SQD:2H36 SQD H371 SQD:1H37 SQD H372 SQD:2H37 SQD H381 SQD:1H38 SQD H382 SQD:2H38 SQD H383 SQD:3H38 SQD H61 SQD:1H6 SQD H62 SQD:2H6 SQD H11 SQU:1H1 SQU H12A SQU:2H1 SQU H13 SQU:3H1 SQU H31 SQU:1H3 SQU H32 SQU:2H3 SQU H33 SQU:3H3 SQU H41 SQU:1H4 SQU H42 SQU:2H4 SQU H51 SQU:1H5 SQU H52 SQU:2H5 SQU H61 SQU:1H6 SQU H62 SQU:2H6 SQU H71 SQU:1H7 SQU H72 SQU:2H7 SQU H91 SQU:1H9 SQU H92 SQU:2H9 SQU H101 SQU:1H10 SQU H102 SQU:2H10 SQU H111 SQU:1H11 SQU H112 SQU:2H11 SQU H131 SQU:1H13 SQU H132 SQU:2H13 SQU H133 SQU:3H13 SQU H141 SQU:1H14 SQU H142 SQU:2H14 SQU H151 SQU:1H15 SQU H152 SQU:2H15 SQU H161 SQU:1H16 SQU H162 SQU:2H16 SQU H171 SQU:1H17 SQU H172 SQU:2H17 SQU H181 SQU:1H18 SQU H182 SQU:2H18 SQU H201 SQU:1H20 SQU H202 SQU:2H20 SQU H211 SQU:1H21 SQU H212 SQU:2H21 SQU H221 SQU:1H22 SQU H222 SQU:2H22 SQU H231 SQU:1H23 SQU H232 SQU:2H23 SQU H251 SQU:1H25 SQU H252 SQU:2H25 SQU H261 SQU:1H26 SQU H262 SQU:2H26 SQU H271 SQU:1H27 SQU H272 SQU:2H27 SQU H291 SQU:1H29 SQU H292 SQU:2H29 SQU H293 SQU:3H29 SQU H301 SQU:1H30 SQU H302 SQU:2H30 SQU H303 SQU:3H30 SQU HS1 SR1:1HS SR1 HS2 SR1:2HS SR1 HS3 SR1:3HS SR1 H5'1 SR1:1H5' SR1 H5'2 SR1:2H5' SR1 HO'1 SR1:1HO' SR1 HO'2 SR1:2HO' SR1 HO'3 SR1:3HO' SR1 HOP1 SRA:1HOP SRA HOP3 SRA:3HOP SRA H5' SRA:1H5* SRA H5'' SRA:2H5* SRA H4' SRA: H4* SRA H3' SRA: H3* SRA HO3' SRA:*HO3 SRA H2' SRA:1H2* SRA H1' SRA: H1* SRA HN61 SRA:1HN6 SRA HN62 SRA:2HN6 SRA HO2' SRA:*HO2 SRA H7'1 SRB:1H7' SRB H7'2 SRB:2H7' SRB H9'1 SRB:1H9' SRB H9'2 SRB:2H9' SRB H9'3 SRB:3H9' SRB HOB1 SRB:1HOB SRB HOB2 SRB:2HOB SRB HOB3 SRB:3HOB SRB H7'1 SRD:1H7' SRD H7'2 SRD:2H7' SRD H9'1 SRD:1H9' SRD H9'2 SRD:2H9' SRD H9'3 SRD:3H9' SRD HOB1 SRD:1HOB SRD HOB2 SRD:2HOB SRD HOB3 SRD:3HOB SRD HB1 SRI:1HB SRI HB2 SRI:2HB SRI H141 SRL:1H14 SRL H142 SRL:2H14 SRL H143 SRL:3H14 SRL H151 SRL:1H15 SRL H152 SRL:2H15 SRL H153 SRL:3H15 SRL H161 SRL:1H16 SRL H162 SRL:2H16 SRL H163 SRL:3H16 SRL H171 SRL:1H17 SRL H172 SRL:2H17 SRL H173 SRL:3H17 SRL H181 SRL:1H18 SRL H182 SRL:2H18 SRL H183 SRL:3H18 SRL H191 SRL:1H19 SRL H192 SRL:2H19 SRL H193 SRL:3H19 SRL H221 SRL:1H22 SRL H222 SRL:2H22 SRL H231 SRL:1H23 SRL H232 SRL:2H23 SRL H233 SRL:3H23 SRL H251 SRL:1H25 SRL H252 SRL:2H25 SRL H261 SRL:1H26 SRL H262 SRL:2H26 SRL H263 SRL:3H26 SRL H291 SRL:1H29 SRL H292 SRL:2H29 SRL H301 SRL:1H30 SRL H302 SRL:2H30 SRL H303 SRL:3H30 SRL H321 SRL:1H32 SRL H322 SRL:2H32 SRL H331 SRL:1H33 SRL H332 SRL:2H33 SRL H333 SRL:3H33 SRL HMA1 SRM:1HMA SRM HMA2 SRM:2HMA SRM HMA3 SRM:3HMA SRM HDA1 SRM:1HDA SRM HDA2 SRM:2HDA SRM HAA1 SRM:1HAA SRM HAA2 SRM:2HAA SRM HBA1 SRM:1HBA SRM HBA2 SRM:2HBA SRM HMB1 SRM:1HMB SRM HMB2 SRM:2HMB SRM HMB3 SRM:3HMB SRM HDB1 SRM:1HDB SRM HDB2 SRM:2HDB SRM HAB1 SRM:1HAB SRM HAB2 SRM:2HAB SRM HBB1 SRM:1HBB SRM HBB2 SRM:2HBB SRM HCD1 SRM:1HCD SRM HCD2 SRM:2HCD SRM HAC1 SRM:1HAC SRM HAC2 SRM:2HAC SRM HBC1 SRM:1HBC SRM HBC2 SRM:2HBC SRM HAD1 SRM:1HAD SRM HAD2 SRM:2HAD SRM HBD1 SRM:1HBD SRM HBD2 SRM:2HBD SRM HDD1 SRM:1HDD SRM HDD2 SRM:2HDD SRM H441 SRN:1H44 SRN H442 SRN:2H44 SRN H431 SRN:1H43 SRN H432 SRN:2H43 SRN H421 SRN:1H42 SRN H422 SRN:2H42 SRN H411 SRN:1H41 SRN H412 SRN:2H41 SRN H401 SRN:1H40 SRN H402 SRN:2H40 SRN H403 SRN:3H40 SRN H371 SRN:1H37 SRN H372 SRN:2H37 SRN H373 SRN:3H37 SRN H301 SRN:1H30 SRN H302 SRN:2H30 SRN H271 SRN:1H27 SRN H272 SRN:2H27 SRN H261 SRN:1H26 SRN H262 SRN:2H26 SRN H201 SRN:1H20 SRN H202 SRN:2H20 SRN H181 SRN:1H18 SRN H182 SRN:2H18 SRN H183 SRN:3H18 SRN H151 SRN:1H15 SRN H152 SRN:2H15 SRN H341 SRN:1H34 SRN H342 SRN:2H34 SRN H111 SRN:1H11 SRN H112 SRN:2H11 SRN H113 SRN:3H11 SRN HB1 SRO:1HB SRO HB2 SRO:2HB SRO HA1 SRO:1HA SRO HA2 SRO:2HA SRO HNZ1 SRO:1HNZ SRO HNZ2 SRO:2HNZ SRO H5'1 SRP:1H5* SRP H5'2 SRP:2H5* SRP H4' SRP: H4* SRP H3' SRP: H3* SRP H2' SRP: H2* SRP H1' SRP: H1* SRP HN61 SRP:1HN6 SRP HN62 SRP:2HN6 SRP HN1 SRP:1HN SRP HN2 SRP:2HN SRP HB1 SRP:1HB SRP HB2 SRP:2HB SRP H21 SRS:1H2 SRS H22A SRS:2H2 SRS H71 SRS:1H7 SRS H72 SRS:2H7 SRS H81 SRS:1H8 SRS H82 SRS:2H8 SRS H91 SRS:1H9 SRS H92 SRS:2H9 SRS H101 SRS:1H10 SRS H102 SRS:2H10 SRS H111 SRS:1H11 SRS H112 SRS:2H11 SRS H121 SRS:1H12 SRS H122 SRS:2H12 SRS H131 SRS:1H13 SRS H132 SRS:2H13 SRS H151 SRS:1H15 SRS H152 SRS:2H15 SRS H153 SRS:3H15 SRS H161 SRS:1H16 SRS H162 SRS:2H16 SRS H163 SRS:3H16 SRS H171 SRS:1H17 SRS H172 SRS:2H17 SRS H261 SRS:1H26 SRS H262 SRS:2H26 SRS H263 SRS:3H26 SRS HN11 SRY:1HN1 SRY HB11 SRY:1HB1 SRY HB12 SRY:2HB1 SRY HC11 SRY:1HC1 SRY HO21 SRY:1HO2 SRY HN31 SRY:1HN3 SRY HE11 SRY:1HE1 SRY HE12 SRY:2HE1 SRY HF11 SRY:1HF1 SRY HO51 SRY:1HO5 SRY HO61 SRY:1HO6 SRY HO32 SRY:2HO3 SRY HG21 SRY:1HG2 SRY HH21 SRY:1HH2 SRY HH22 SRY:2HH2 SRY HH23 SRY:3HH2 SRY HN23 SRY:3HN2 SRY HI31 SRY:1HI3 SRY HI32 SRY:2HI3 SRY HI33 SRY:3HI3 SRY HO33 SRY:3HO3 SRY HO43 SRY:3HO4 SRY H631 SRY:1H63 SRY H632 SRY:2H63 SRY HO63 SRY:3HO6 SRY H81 SS1:1H8 SS1 H82 SS1:2H8 SS1 H83 SS1:3H8 SS1 H81 SS2:1H8 SS2 H82 SS2:2H8 SS2 H83 SS2:3H8 SS2 H9C1 SS3:1H9C SS3 H9C2 SS3:2H9C SS3 H9C3 SS3:3H9C SS3 H241 SS3:1H24 SS3 H242 SS3:2H24 SS3 H251 SS3:1H25 SS3 H252 SS3:2H25 SS3 H4N1 SS3:1H4N SS3 H4N2 SS3:2H4N SS3 H9C1 SS4:1H9C SS4 H9C2 SS4:2H9C SS4 H9C3 SS4:3H9C SS4 H251 SS4:1H25 SS4 H252 SS4:2H25 SS4 H241 SS4:1H24 SS4 H242 SS4:2H24 SS4 H4N1 SS4:1H4N SS4 H4N2 SS4:2H4N SS4 H7C1 SS5:1H7C SS5 H7C2 SS5:2H7C SS5 H291 SS5:1H29 SS5 H292 SS5:2H29 SS5 H101 SS5:1H10 SS5 H102 SS5:2H10 SS5 H121 SS5:1H12 SS5 H122 SS5:2H12 SS5 H281 SS5:1H28 SS5 H282 SS5:2H28 SS5 H283 SS5:3H28 SS5 H311 SS5:1H31 SS5 H312 SS5:2H31 SS5 H351 SS5:1H35 SS5 H352 SS5:2H35 SS5 H321 SS5:1H32 SS5 H322 SS5:2H32 SS5 H331 SS5:1H33 SS5 H332 SS5:2H33 SS5 H341 SS5:1H34 SS5 H342 SS5:2H34 SS5 HN11 SSA:1HN1 SSA HN12 SSA:2HN1 SSA HB1 SSA:1HB SSA HB2 SSA:2HB SSA H5'1 SSA:1H5* SSA H5'2 SSA:2H5* SSA H4' SSA: H4* SSA H3' SSA: H3* SSA HO3' SSA:*HO3 SSA H2' SSA: H2* SSA HO2' SSA:*HO2 SSA H1' SSA: H1* SSA HN61 SSA:1HN6 SSA HN62 SSA:2HN6 SSA H21 SSB:1H2 SSB H22 SSB:2H2 SSB H41 SSB:1H4 SSB H42 SSB:2H4 SSB H51 SSB:1H5 SSB H52 SSB:2H5 SSB H71 SSB:1H7 SSB H72 SSB:2H7 SSB H81 SSB:1H8 SSB H82 SSB:2H8 SSB H91 SSB:1H9 SSB H92 SSB:2H9 SSB H101 SSB:1H10 SSB H102 SSB:2H10 SSB H103 SSB:3H10 SSB HSS1 SSC:1HSS SSC HSS2 SSC:2HSS SSC H3S1 SSC:1H3S SSC H3S2 SSC:2H3S SSC H5S1 SSC:1H5S SSC H5S2 SSC:2H5S SSC H31 SSD:1H3 SSD H32 SSD:2H3 SSD H61 SSD:1H6 SSD H62 SSD:2H6 SSD H71 SSD:1H7 SSD H72 SSD:2H7 SSD H101 SSD:1H10 SSD H102 SSD:2H10 SSD H31 SSE:1H3 SSE H32 SSE:2H3 SSE H61 SSE:1H6 SSE H62 SSE:2H6 SSE H71 SSE:1H7 SSE H72 SSE:2H7 SSE H101 SSE:1H10 SSE H102 SSE:2H10 SSE H62 SSG:2H6 SSG H61 SSG:1H6 SSG H2C1 SSH:1H2C SSH H3C1 SSH:1H3C SSH H3C2 SSH:2H3C SSH H6C1 SSH:1H6C SSH H6C2 SSH:2H6C SSH H31 SSO:1H3 SSO H32 SSO:2H3 SSO H61 SSO:1H6 SSO H62 SSO:2H6 SSO H71 SSO:1H7 SSO H72 SSO:2H7 SSO H101 SSO:1H10 SSO H102 SSO:2H10 SSO HA11 SSP:1HA1 SSP HA12 SSP:2HA1 SSP HA13 SSP:3HA1 SSP HB11 SSP:1HB1 SSP HB12 SSP:2HB1 SSP HG11 SSP:1HG1 SSP HG12 SSP:2HG1 SSP HA21 SSP:1HA2 SSP HA22 SSP:2HA2 SSP HA23 SSP:3HA2 SSP HB21 SSP:1HB2 SSP HB22 SSP:2HB2 SSP HG21 SSP:1HG2 SSP HG22 SSP:2HG2 SSP H5'1 SSS:1H5' SSS H5'2 SSS:2H5' SSS H3N1 SSS:1H3N SSS H3N2 SSS:2H3N SSS H631 SSS:1H63 SSS H632 SSS:2H63 SSS HO2' SSU:2HO* SSU H2' SSU: H2* SSU H1' SSU: H1* SSU H4' SSU: H4* SSU H5' SSU:1H5* SSU H5'' SSU:2H5* SSU H3' SSU: H3* SSU HO3' SSU:H3T SSU H6 SSU:6H SSU H5 SSU:5H SSU H3 SSU:3H SSU HO2' ST1:'HO2 ST1 HM41 ST1:1HM4 ST1 HM42 ST1:2HM4 ST1 HM43 ST1:3HM4 ST1 HO2' ST2:'HO2 ST2 HN31 ST2:1HN3 ST2 HN32 ST2:2HN3 ST2 HM41 ST2:1HM4 ST2 HM42 ST2:2HM4 ST2 HM43 ST2:3HM4 ST2 HO2' ST3:'HO2 ST3 HN31 ST3:1HN3 ST3 HN32 ST3:2HN3 ST3 HM41 ST3:1HM4 ST3 HM42 ST3:2HM4 ST3 HM43 ST3:3HM4 ST3 HO2' ST4:'HO2 ST4 HN11 ST4:1HN1 ST4 HN12 ST4:2HN1 ST4 HN21 ST4:1HN2 ST4 HN22 ST4:2HN2 ST4 HM41 ST4:1HM4 ST4 HM42 ST4:2HM4 ST4 HM43 ST4:3HM4 ST4 HO2' ST5:'HO2 ST5 HM31 ST5:1HM3 ST5 HM32 ST5:2HM3 ST5 HM41 ST5:1HM4 ST5 HM42 ST5:2HM4 ST5 HM43 ST5:3HM4 ST5 HO2' ST6:'HO2 ST6 HM31 ST6:1HM3 ST6 HM32 ST6:2HM3 ST6 HN31 ST6:1HN3 ST6 HN32 ST6:2HN3 ST6 HN33 ST6:3HN3 ST6 HM41 ST6:1HM4 ST6 HM42 ST6:2HM4 ST6 HM43 ST6:3HM4 ST6 H101 ST8:1H10 ST8 H102 ST8:2H10 ST8 H121 ST8:1H12 ST8 H122 ST8:2H12 ST8 H131 ST8:1H13 ST8 H132 ST8:2H13 ST8 H141 ST8:1H14 ST8 H142 ST8:2H14 ST8 H151 ST8:1H15 ST8 H152 ST8:2H15 ST8 H161 ST8:1H16 ST8 H162 ST8:2H16 ST8 H251 ST8:1H25 ST8 H252 ST8:2H25 ST8 H9N1 ST8:1H9N ST8 H9N2 ST8:2H9N ST8 HN1 STA:1HN STA HN2 STA:2HN STA HB1 STA:1HB STA HB2 STA:2HB STA HD11 STA:1HD1 STA HD12 STA:2HD1 STA HD13 STA:3HD1 STA HD21 STA:1HD2 STA HD22 STA:2HD2 STA HD23 STA:3HD2 STA HM1 STA:1HM STA HM2 STA:2HM STA H1'1 STB:1H1' STB H1'2 STB:2H1' STB H2'1 STB:1H2' STB H2'2 STB:2H2' STB H3'1 STB:1H3' STB H3'2 STB:2H3' STB H4'1 STB:1H4' STB H4'2 STB:2H4' STB H6'1 STB:1H6' STB H6'2 STB:2H6' STB HN31 STB:1HN3 STB HN32 STB:2HN3 STB HN11 STC:1HN1 STC H31 STC:1H3 STC H41 STC:1H4 STC H51 STC:1H5 STC H61 STC:1H6 STC H191 STC:1H19 STC H221 STC:1H22 STC H231 STC:1H23 STC H111 STD:1H11 STD H112 STD:2H11 STD H113 STD:3H11 STD H121 STD:1H12 STD H122 STD:2H12 STD H141 STD:1H14 STD H142 STD:2H14 STD H143 STD:3H14 STD H151 STD:1H15 STD H152 STD:2H15 STD H181 STD:1H18 STD H182 STD:2H18 STD H183 STD:3H18 STD H231 STD:1H23 STD H232 STD:2H23 STD H233 STD:3H23 STD H241 STD:1H24 STD H242 STD:2H24 STD H243 STD:3H24 STD H271 STD:1H27 STD H272 STD:2H27 STD H273 STD:3H27 STD H291 STD:1H29 STD H292 STD:2H29 STD H293 STD:3H29 STD H311 STD:1H31 STD H312 STD:2H31 STD H21 STE:1H2 STE H22 STE:2H2 STE H31 STE:1H3 STE H32 STE:2H3 STE H41 STE:1H4 STE H42 STE:2H4 STE H51 STE:1H5 STE H52 STE:2H5 STE H61 STE:1H6 STE H62 STE:2H6 STE H71 STE:1H7 STE H72 STE:2H7 STE H81 STE:1H8 STE H82 STE:2H8 STE H91 STE:1H9 STE H92 STE:2H9 STE H101 STE:1H10 STE H102 STE:2H10 STE H111 STE:1H11 STE H112 STE:2H11 STE H121 STE:1H12 STE H122 STE:2H12 STE H131 STE:1H13 STE H132 STE:2H13 STE H141 STE:1H14 STE H142 STE:2H14 STE H151 STE:1H15 STE H152 STE:2H15 STE H161 STE:1H16 STE H162 STE:2H16 STE H171 STE:1H17 STE H172 STE:2H17 STE H181 STE:1H18 STE H182 STE:2H18 STE H183 STE:3H18 STE H7 STF:7H STF H19 STF:9H1 STF H6 STF:6H STF H5 STF:5H STF H4 STF:4H STF H3 STF:3H STF H2 STF:2H STF H1 STF:1H STF H61 STG:1H6 STG H62 STG:2H6 STG H71 STG:1H7 STG H72 STG:2H7 STG H111 STG:1H11 STG H112 STG:2H11 STG H121 STG:1H12 STG H122 STG:2H12 STG H151 STG:1H15 STG H152 STG:2H15 STG H181 STG:1H18 STG H182 STG:2H18 STG H183 STG:3H18 STG HN71 STH:1HN7 STH HN72 STH:2HN7 STH H11 STI:1H1 STI H61 STI:1H6 STI H41 STI:1H4 STI H21 STI:1H2 STI H121 STI:1H12 STI H111 STI:1H11 STI H131 STI:1H13 STI H181 STI:1H18 STI H171 STI:1H17 STI H151 STI:1H15 STI H211 STI:1H21 STI H251 STI:1H25 STI H261 STI:1H26 STI H281 STI:1H28 STI H291 STI:1H29 STI H461 STI:1H46 STI H462 STI:2H46 STI H531 STI:1H53 STI H532 STI:2H53 STI H521 STI:1H52 STI H522 STI:2H52 STI H541 STI:1H54 STI H542 STI:2H54 STI H543 STI:3H54 STI H501 STI:1H50 STI H502 STI:2H50 STI H491 STI:1H49 STI H492 STI:2H49 STI H201 STI:1H20 STI H202 STI:2H20 STI H203 STI:3H20 STI HD11 STN:1HD1 STN HD12 STN:2HD1 STN HD13 STN:3HD1 STN HCN1 STN:1HCN STN HCN2 STN:2HCN STN HCB1 STN:1HCB STN HCB2 STN:2HCB STN HD21 STN:1HD2 STN HD22 STN:2HD2 STN HD23 STN:3HD2 STN H201 STO:1H20 STO H202 STO:2H20 STO H271 STO:1H27 STO H272 STO:2H27 STO H321 STO:1H32 STO H322 STO:2H32 STO H323 STO:3H32 STO H341 STO:1H34 STO H342 STO:2H34 STO H343 STO:3H34 STO H351 STO:1H35 STO H352 STO:2H35 STO H353 STO:3H35 STO HOG2 STP:2HOG STP HOG3 STP:3HOG STP HOB2 STP:2HOB STP HOA2 STP:2HOA STP H5'1 STP:1H5* STP H5'2 STP:2H5* STP H4' STP: H4* STP H3' STP: H3* STP HO3' STP:*HO3 STP H2'1 STP:1H2* STP H2'2 STP:2H2* STP H1' STP: H1* STP HN61 STP:1HN6 STP HN62 STP:2HN6 STP H11 STR:1H1 STR H12 STR:2H1 STR H21 STR:1H2 STR H22 STR:2H2 STR H61 STR:1H6 STR H62 STR:2H6 STR H71 STR:1H7 STR H72 STR:2H7 STR H111 STR:1H11 STR H112 STR:2H11 STR H121 STR:1H12 STR H122 STR:2H12 STR H151 STR:1H15 STR H152 STR:2H15 STR H161 STR:1H16 STR H162 STR:2H16 STR H181 STR:1H18 STR H182 STR:2H18 STR H183 STR:3H18 STR H191 STR:1H19 STR H192 STR:2H19 STR H193 STR:3H19 STR H211 STR:1H21 STR H212 STR:2H21 STR H213 STR:3H21 STR H21 STS:1H2 STS H22 STS:2H2 STS H31 STS:1H3 STS H32 STS:2H3 STS H241 STU:1H24 STU H242 STU:2H24 STU H261 STU:1H26 STU H262 STU:2H26 STU H263 STU:3H26 STU H91 STU:1H9 STU H92 STU:2H9 STU H271 STU:1H27 STU H272 STU:2H27 STU H273 STU:3H27 STU H281 STU:1H28 STU H282 STU:2H28 STU H283 STU:3H28 STU HA1 STX:1HA STX HA2 STX:2HA STX HD1 STX:1HD STX HD2 STX:2HD STX HD3 STX:3HD STX H71 STX:1H7 STX H72 STX:2H7 STX H73 STX:3H7 STX H81 STX:1H8 STX H82 STX:2H8 STX H83 STX:3H8 STX H91 STX:1H9 STX H92 STX:2H9 STX H93 STX:3H9 STX HB1 STY:1HB STY HB2 STY:2HB STY H101 SU1:1H10 SU1 HN1' SU1:'HN1 SU1 H5'1 SU1:1H5' SU1 H111 SU1:1H11 SU1 H112 SU1:2H11 SU1 H113 SU1:3H11 SU1 H121 SU1:1H12 SU1 H122 SU1:2H12 SU1 H131 SU1:1H13 SU1 H132 SU1:2H13 SU1 H101 SU2:1H10 SU2 H102 SU2:2H10 SU2 H2'1 SU2:1H2* SU2 H2'2 SU2:2H2* SU2 H3'1 SU2:1H3* SU2 H3'2 SU2:2H3* SU2 H5'1 SU2:1H5* SU2 H5'2 SU2:2H5* SU2 H6'1 SU2:1H6* SU2 H6'2 SU2:2H6* SU2 H121 SU9:1H12 SU9 H122 SU9:2H12 SU9 H123 SU9:3H12 SU9 HN11 SUA:1HN1 SUA HN12 SUA:2HN1 SUA H11 SUA:1H1 SUA H21 SUA:1H2 SUA H41 SUA:1H4 SUA H51 SUA:1H5 SUA HN21 SUA:1HN2 SUA H81 SUA:1H8 SUA H82 SUA:2H8 SUA H91 SUA:1H9 SUA H92 SUA:2H9 SUA H111 SUA:1H11 SUA H121 SUA:1H12 SUA H131 SUA:1H13 SUA H31 SUB:1H3 SUB H32 SUB:2H3 SUB H41 SUB:1H4 SUB H42 SUB:2H4 SUB H121 SUB:1H12 SUB H122 SUB:2H12 SUB H123 SUB:3H12 SUB H131 SUB:1H13 SUB H132 SUB:2H13 SUB H141 SUB:1H14 SUB H142 SUB:2H14 SUB H151 SUB:1H15 SUB H152 SUB:2H15 SUB H231 SUB:1H23 SUB H232 SUB:2H23 SUB H233 SUB:3H23 SUB H61 SUC:1H6 SUC H62 SUC:2H6 SUC H1'1 SUC:1H1' SUC H1'2 SUC:2H1' SUC H6'1 SUC:1H6' SUC H6'2 SUC:2H6' SUC HO1' SUC:'HO1 SUC HO3' SUC:'HO3 SUC HO4' SUC:'HO4 SUC HO6' SUC:'HO6 SUC H11 SUD:1H1 SUD H12 SUD:2H1 SUD HN41 SUD:1HN4 SUD HN42 SUD:2HN4 SUD H1' SUD: H1* SUD H2' SUD: H2* SUD H3' SUD: H3* SUD H4' SUD: H4* SUD H5'1 SUD:1H5* SUD H5'2 SUD:2H5* SUD H291 SUD:1H29 SUD H292 SUD:2H29 SUD H321 SUD:1H32 SUD H322 SUD:2H32 SUD H323 SUD:3H32 SUD H21 SUF:1H2 SUF H22 SUF:2H2 SUF H31 SUF:1H3 SUF H32 SUF:2H3 SUF H33 SUF:3H3 SUF H41 SUF:1H4 SUF H42 SUF:2H4 SUF H43 SUF:3H4 SUF HB1 SUG:1HB SUG HB2 SUG:2HB SUG HG1 SUG:1HG SUG HG2 SUG:2HG SUG HD1 SUG:1HD SUG HD2A SUG:2HD SUG HH21 SUG:1HH2 SUG HH22 SUG:2HH2 SUG HW1 SUG:1HW SUG HW2 SUG:2HW SUG HX1 SUG:1HX SUG HX2 SUG:2HX SUG HN1 SUJ:1HN SUJ HN2 SUJ:2HN SUJ HBC1 SUJ:1HBC SUJ HBC2 SUJ:2HBC SUJ HGC1 SUJ:1HGC SUJ HGC2 SUJ:2HGC SUJ H4C1 SUJ:1H4C SUJ H4C2 SUJ:2H4C SUJ H4C3 SUJ:3H4C SUJ H61 SUM:1H6 SUM H62 SUM:2H6 SUM H111 SUM:1H11 SUM H112 SUM:2H11 SUM H221 SUM:1H22 SUM H222 SUM:2H22 SUM H231 SUM:1H23 SUM H232 SUM:2H23 SUM H241 SUM:1H24 SUM H242 SUM:2H24 SUM H251 SUM:1H25 SUM H252 SUM:2H25 SUM H261 SUM:1H26 SUM H262 SUM:2H26 SUM H271 SUM:1H27 SUM H272 SUM:2H27 SUM H281 SUM:1H28 SUM H282 SUM:2H28 SUM H283 SUM:3H28 SUM HCM1 SUM:1HCM SUM HCM2 SUM:2HCM SUM HN1 SUN:1HN SUN HN2 SUN:2HN SUN HBC1 SUN:1HBC SUN HBC2 SUN:2HBC SUN H2C1 SUN:1H2C SUN H2C2 SUN:2H2C SUN H2C3 SUN:3H2C SUN H1C1 SUN:1H1C SUN H1C2 SUN:2H1C SUN H1C3 SUN:3H1C SUN H3C1 SUN:1H3C SUN H3C2 SUN:2H3C SUN H4C1 SUN:1H4C SUN H4C2 SUN:2H4C SUN H4C3 SUN:3H4C SUN HB1 SUO:1HB SUO HB2 SUO:2HB SUO HG1 SUO:1HG SUO HG2 SUO:2HG SUO HD1A SUO:1HD SUO HD2 SUO:2HD SUO HNE1 SUO:1HNE SUO HNE2 SUO:2HNE SUO HW1 SUO:1HW SUO HW2 SUO:2HW SUO HX1 SUO:1HX SUO HX2 SUO:2HX SUO H61 SUP:1H6 SUP H62 SUP:2H6 SUP H1'1 SUP:1H1' SUP H1'2 SUP:2H1' SUP H6'1 SUP:1H6' SUP H6'2 SUP:2H6' SUP HOP1 SUR:1HOP SUR HOP3 SUR:3HOP SUR H5'1 SUR:1H5' SUR H5'2 SUR:2H5' SUR HO21 SUW:1HO2 SUW HO22 SUW:2HO2 SUW HO23 SUW:3HO2 SUW HX31 SUW:1HX3 SUW HX32 SUW:2HX3 SUW H111 SUW:1H11 SUW H112 SUW:2H11 SUW H113 SUW:3H11 SUW HX91 SUW:1HX9 SUW HX92 SUW:2HX9 SUW H2 SVA: HN2 SVA HB2 SVA:1HB SVA HB3 SVA:2HB SVA HD11 SVC:1HD1 SVC HD12 SVC:2HD1 SVC HD13 SVC:3HD1 SVC HD21 SVC:1HD2 SVC HD22 SVC:2HD2 SVC HD23 SVC:3HD2 SVC HB1 SVC:1HB SVC HB2 SVC:2HB SVC HAC1 SVC:1HAC SVC HAC2 SVC:2HAC SVC HAC3 SVC:3HAC SVC HAP1 SVC:1HAP SVC HAP2 SVC:2HAP SVC HAS1 SVC:1HAS SVC HAS2 SVC:2HAS SVC HAS3 SVC:3HAS SVC HAR1 SVC:1HAR SVC HAR2 SVC:2HAR SVC HAR3 SVC:3HAR SVC HAX1 SVC:1HAX SVC HAX2 SVC:2HAX SVC HAY1 SVC:1HAY SVC HAY2 SVC:2HAY SVC HAZ1 SVC:1HAZ SVC HAZ2 SVC:2HAZ SVC HBD1 SVC:1HBD SVC HBD2 SVC:2HBD SVC HAV1 SVC:1HAV SVC HAV2 SVC:2HAV SVC H271 SVR:1H27 SVR H272 SVR:2H27 SVR H273 SVR:3H27 SVR H591 SVR:1H59 SVR H592 SVR:2H59 SVR H593 SVR:3H59 SVR HBC1 SVV:1HBC SVV HA2 SVV:2HA SVV H4N1 SVV:1H4N SVV H4N2 SVV:2H4N SVV HBC1 SVW:1HBC SVW HBC2 SVW:2HBC SVW H2N1 SVW:1H2N SVW H2N2 SVW:2H2N SVW HN1 SVX:1HN SVX HN2 SVX:2HN SVX HBC1 SVX:1HBC SVX HBC2 SVX:2HBC SVX H4C1 SVX:1H4C SVX H4C2 SVX:2H4C SVX H4C3 SVX:3H4C SVX H2C1 SVX:1H2C SVX H2C2 SVX:2H2C SVX H1C1 SVX:1H1C SVX H1C2 SVX:2H1C SVX H1C3 SVX:3H1C SVX HN1 SVY:1HN SVY HN2 SVY:2HN SVY HBC1 SVY:1HBC SVY HBC2 SVY:2HBC SVY H2C1 SVY:1H2C SVY H2C2 SVY:2H2C SVY H2C3 SVY:3H2C SVY H3C1 SVY:1H3C SVY H3C2 SVY:2H3C SVY H3C3 SVY:3H3C SVY H2'1 SVY:1H2' SVY H2'2 SVY:2H2' SVY H2'3 SVY:3H2' SVY H3'1 SVY:1H3' SVY H3'2 SVY:2H3' SVY H3'3 SVY:3H3' SVY HN1 SVZ:1HN SVZ HN2 SVZ:2HN SVZ HBC1 SVZ:1HBC SVZ HBC2 SVZ:2HBC SVZ H7C1 SVZ:1H7C SVZ H7C2 SVZ:2H7C SVZ H7C3 SVZ:3H7C SVZ H6C1 SVZ:1H6C SVZ H6C2 SVZ:2H6C SVZ H6C3 SVZ:3H6C SVZ HC51 SWA:1HC5 SWA HC52 SWA:2HC5 SWA HC61 SWA:1HC6 SWA HC62 SWA:2HC6 SWA HC21 SWA:1HC2 SWA HC22 SWA:2HC2 SWA HC91 SWA:1HC9 SWA HC92 SWA:2HC9 SWA H13O SWA:OH13 SWA H11O SWA:OH11 SWA H1C1 SWF:1H1C SWF H1C2 SWF:2H1C SWF H1C3 SWF:3H1C SWF H4C1 SWF:1H4C SWF H4C2 SWF:2H4C SWF H251 SWI:1H25 SWI H252 SWI:2H25 SWI H261 SWI:1H26 SWI H262 SWI:2H26 SWI H321 SWI:1H32 SWI H322 SWI:2H32 SWI H323 SWI:3H32 SWI H301 SWI:1H30 SWI H302 SWI:2H30 SWI H391 SWI:1H39 SWI H392 SWI:2H39 SWI H393 SWI:3H39 SWI H281 SWI:1H28 SWI H282 SWI:2H28 SWI H371 SWI:1H37 SWI H372 SWI:2H37 SWI H373 SWI:3H37 SWI H361 SWI:1H36 SWI H362 SWI:2H36 SWI H363 SWI:3H36 SWI H351 SWI:1H35 SWI H352 SWI:2H35 SWI H353 SWI:3H35 SWI H181 SWI:1H18 SWI H182 SWI:2H18 SWI H341 SWI:1H34 SWI H342 SWI:2H34 SWI H343 SWI:3H34 SWI H381 SWI:1H38 SWI H382 SWI:2H38 SWI H383 SWI:3H38 SWI H141 SWI:1H14 SWI H142 SWI:2H14 SWI H121 SWI:1H12 SWI H122 SWI:2H12 SWI H81 SWI:1H8 SWI H82 SWI:2H8 SWI H61A SWI:1H6 SWI H62A SWI:2H6 SWI H331 SWI:1H33 SWI H332 SWI:2H33 SWI H333 SWI:3H33 SWI H721 SWI:1H72 SWI H722 SWI:2H72 SWI H723 SWI:3H72 SWI H451 SWI:1H45 SWI H452 SWI:2H45 SWI HO12 SWI:2HO1 SWI H471 SWI:1H47 SWI H472 SWI:2H47 SWI H511 SWI:1H51 SWI H512 SWI:2H51 SWI H531 SWI:1H53 SWI H532 SWI:2H53 SWI H771 SWI:1H77 SWI H772 SWI:2H77 SWI H773 SWI:3H77 SWI H731 SWI:1H73 SWI H732 SWI:2H73 SWI H733 SWI:3H73 SWI HO15 SWI:5HO1 SWI H571 SWI:1H57 SWI H572 SWI:2H57 SWI HO16 SWI:6HO1 SWI H741 SWI:1H74 SWI H742 SWI:2H74 SWI H743 SWI:3H74 SWI H751 SWI:1H75 SWI H752 SWI:2H75 SWI H753 SWI:3H75 SWI HO18 SWI:8HO1 SWI H761 SWI:1H76 SWI H762 SWI:2H76 SWI H763 SWI:3H76 SWI H641 SWI:1H64 SWI H642 SWI:2H64 SWI H651 SWI:1H65 SWI H652 SWI:2H65 SWI H711 SWI:1H71 SWI H712 SWI:2H71 SWI H713 SWI:3H71 SWI H691 SWI:1H69 SWI H692 SWI:2H69 SWI H671 SWI:1H67 SWI H672 SWI:2H67 SWI H781 SWI:1H78 SWI H782 SWI:2H78 SWI H783 SWI:3H78 SWI HN1 SXE:1HN SXE HN2 SXE:2HN SXE HBC1 SXE:1HBC SXE HBC2 SXE:2HBC SXE H3C1 SXE:1H3C SXE H3C2 SXE:2H3C SXE H3C3 SXE:3H3C SXE H2C1 SXE:1H2C SXE H2C2 SXE:2H2C SXE H2C3 SXE:3H2C SXE H4C1 SXE:1H4C SXE H4C2 SXE:2H4C SXE H5C1 SXE:1H5C SXE H5C2 SXE:2H5C SXE H5C3 SXE:3H5C SXE H151 SXX:1H15 SXX H152 SXX:2H15 SXX H153 SXX:3H15 SXX H141 SXX:1H14 SXX H142 SXX:2H14 SXX H143 SXX:3H14 SXX HN11 SY1:1HN1 SY1 HN12 SY1:2HN1 SY1 H41 SY1:1H4 SY1 H42 SY1:2H4 SY1 H51 SY1:1H5 SY1 H52 SY1:2H5 SY1 H71 SY1:1H7 SY1 H72 SY1:2H7 SY1 H191 SY1:1H19 SY1 H192 SY1:2H19 SY1 H31 SY1:1H3 SY1 H32 SY1:2H3 SY1 H31A SYB:1H3 SYB H32A SYB:2H3 SYB H41 SYB:1H4 SYB H42A SYB:2H4 SYB H43A SYB:3H4 SYB H71 SYB:1H7 SYB H72 SYB:2H7 SYB H81 SYB:1H8 SYB H82 SYB:2H8 SYB H91 SYB:1H9 SYB H92 SYB:2H9 SYB H121 SYB:1H12 SYB H122 SYB:2H12 SYB H123 SYB:3H12 SYB H131 SYB:1H13 SYB H132 SYB:2H13 SYB H201 SYB:1H20 SYB H202 SYB:2H20 SYB H203 SYB:3H20 SYB H211 SYB:1H21 SYB H212 SYB:2H21 SYB H213 SYB:3H21 SYB H241 SYB:1H24 SYB H242 SYB:2H24 SYB H271 SYB:1H27 SYB H272 SYB:2H27 SYB H391 SYB:1H39 SYB H392 SYB:2H39 SYB H393 SYB:3H39 SYB H811 SYB:1H81 SYB H812 SYB:2H81 SYB H911 SYB:1H91 SYB H912 SYB:2H91 SYB H921 SYB:1H92 SYB H922 SYB:2H92 SYB H941 SYB:1H94 SYB H942 SYB:2H94 SYB H951 SYB:1H95 SYB H952 SYB:2H95 SYB H961 SYB:1H96 SYB H962 SYB:2H96 SYB HB1 SYM:1HB SYM HB2 SYM:2HB SYM HG21 SYM:1HG2 SYM HG22 SYM:2HG2 SYM HG23 SYM:3HG2 SYM HN1 SYM:1HN SYM HN2 SYM:2HN SYM H101 SYR:1H10 SYR H102 SYR:2H10 SYR H103 SYR:3H10 SYR H7C1 SYR:1H7C SYR H7C2 SYR:2H7C SYR H7C3 SYR:3H7C SYR H9C1 SYR:1H9C SYR H9C2 SYR:2H9C SYR H9C3 SYR:3H9C SYR HOP3 T:3HOP T HOP2 T:2HOP T H5' T:1H5* T H5'' T:2H5* T H4' T: H4* T H3' T: H3* T HO3' T:H3T T H2' T:1H2* T H2'' T:2H2* T H1' T: H1* T H71 T:1H5M T H72 T:2H5M T H73 T:3H5M T HC61 T10:1HC6 T10 HC62 T10:2HC6 T10 H101 T10:1H10 T10 H102 T10:2H10 T10 H211 T10:1H21 T10 H212 T10:2H21 T10 H321 T10:1H32 T10 H322 T10:2H32 T10 H71 T11:1H7 T11 H72 T11:2H7 T11 H351 T12:1H35 T12 H352 T12:2H35 T12 H353 T12:3H35 T12 H311 T12:1H31 T12 H312 T12:2H31 T12 H313 T12:3H31 T12 H271 T12:1H27 T12 H272 T12:2H27 T12 H273 T12:3H27 T12 H391 T12:1H39 T12 H392 T12:2H39 T12 H401 T12:1H40 T12 H402 T12:2H40 T12 H431 T12:1H43 T12 H432 T12:2H43 T12 H21 T16:1H2 T16 H22A T16:2H2 T16 H31 T16:1H3 T16 H32 T16:2H3 T16 HO1A T16:AHO1 T16 HO1B T16:BHO1 T16 H7A1 T16:1H7A T16 H7A2 T16:2H7A T16 H7B1 T16:1H7B T16 H7B2 T16:2H7B T16 H7C1 T16:1H7C T16 H7C2 T16:2H7C T16 H111 T16:1H11 T16 H112 T16:2H11 T16 H141 T16:1H14 T16 H142 T16:2H14 T16 H151 T16:1H15 T16 H152 T16:2H15 T16 H161 T16:1H16 T16 H162 T16:2H16 T16 H11A T19:1H1 T19 H12 T19:2H1 T19 H13 T19:3H1 T19 H21 T19:1H2 T19 H22A T19:2H2 T19 H23A T19:3H2 T19 H151 T19:1H15 T19 H152 T19:2H15 T19 H11 T1A:1H1 T1A H12 T1A:2H1 T1A H21 T1A:1H2 T1A H22 T1A:2H2 T1A H23 T1A:3H2 T1A H31 T1A:1H3 T1A H32 T1A:2H3 T1A H41 T1A:1H4 T1A H42 T1A:2H4 T1A H43 T1A:3H4 T1A H51 T1A:1H5 T1A H52 T1A:2H5 T1A H61 T1A:1H6 T1A H62 T1A:2H6 T1A H63 T1A:3H6 T1A H71 T1A:1H7 T1A H72 T1A:2H7 T1A H81 T1A:1H8 T1A H82 T1A:2H8 T1A H83 T1A:3H8 T1A H11A T1D:1H1 T1D H8C1 T1D:1H8C T1D H8C2 T1D:2H8C T1D H8C3 T1D:3H8C T1D H171 T1P:1H17 T1P H172 T1P:2H17 T1P H161 T1P:1H16 T1P H162 T1P:2H16 T1P H151 T1P:1H15 T1P H152 T1P:2H15 T1P H101 T1P:1H10 T1P H102 T1P:2H10 T1P H141 T1P:1H14 T1P H142 T1P:2H14 T1P HOP2 T23:2HOP T23 HOP3 T23:3HOP T23 H5A1 T23:1H5A T23 H5A2 T23:2H5A T23 H5A3 T23:3H5A T23 H2' T23: H2* T23 H2M1 T23:1H2M T23 H2M2 T23:2H2M T23 H2M3 T23:3H2M T23 H5' T23:1H5* T23 H5'' T23:2H5* T23 H4' T23: H4* T23 H1' T23: H1* T23 H3' T23: H3* T23 H3M1 T23:1H3M T23 H3M2 T23:2H3M T23 H3M3 T23:3H3M T23 HN11 T29:1HN1 T29 HN12 T29:2HN1 T29 H31 T29:1H3 T29 H32 T29:2H3 T29 H41 T29:1H4 T29 H42 T29:2H4 T29 H51 T29:1H5 T29 H52 T29:2H5 T29 HO1A T29:AHO1 T29 HO1B T29:BHO1 T29 H9A1 T29:1H9A T29 H9A2 T29:2H9A T29 H9B1 T29:1H9B T29 H9B2 T29:2H9B T29 H9C1 T29:1H9C T29 H9C2 T29:2H9C T29 H131 T29:1H13 T29 H132 T29:2H13 T29 H161 T29:1H16 T29 H162 T29:2H16 T29 H171 T29:1H17 T29 H172 T29:2H17 T29 H173 T29:3H17 T29 H111 T2D:1H11 T2D H112 T2D:2H11 T2D H11 T2M:1H1 T2M H12 T2M:2H1 T2M H13 T2M:3H1 T2M H81 T2M:1H8 T2M H82 T2M:2H8 T2M H83 T2M:3H8 T2M H91 T2M:1H9 T2M H92 T2M:2H9 T2M H93 T2M:3H9 T2M H101 T2M:1H10 T2M H102 T2M:2H10 T2M H103 T2M:3H10 T2M H171 T2P:1H17 T2P H172 T2P:2H17 T2P H161 T2P:1H16 T2P H162 T2P:2H16 T2P H151 T2P:1H15 T2P H152 T2P:2H15 T2P H101 T2P:1H10 T2P H102 T2P:2H10 T2P H141 T2P:1H14 T2P H142 T2P:2H14 T2P HOP3 T2S:3HOP T2S HOP2 T2S:2HOP T2S H5' T2S:1H5* T2S H5'' T2S:2H5* T2S H4' T2S: H4* T2S H3' T2S: H3* T2S HO3' T2S:H3T T2S H2' T2S:1H2* T2S H2'' T2S:2H2* T2S H1' T2S: H1* T2S H71 T2S:1H5M T2S H72 T2S:2H5M T2S H73 T2S:3H5M T2S HOP2 T2T:2HOP T2T H5' T2T:1H5* T2T H5'' T2T:2H5* T2T HAB1 T2T:1HAB T2T HAB2 T2T:2HAB T2T HAB3 T2T:3HAB T2T H2X1 T2T:1H2X T2T H2X2 T2T:2H2X T2T HH21 T2T:1HH2 T2T HH22 T2T:2HH2 T2T H2P1 T2T:1H2P T2T H2P2 T2T:2H2P T2T H2P3 T2T:3H2P T2T H5X1 T2T:1H5X T2T H5X2 T2T:2H5X T2T H4' T2T: H4* T2T H1' T2T: H1* T2T H5A1 T2T:1H5A T2T H5A2 T2T:2H5A T2T H5A3 T2T:3H5A T2T H2' T2T: H2* T2T HH31 T2T:1HH3 T2T HH32 T2T:2HH3 T2T HH33 T2T:3HH3 T2T H3' T2T: H3* T2T HO3' T2T:H3T T2T HOP3 T2T:3HOP T2T H131 T3:1C13 T3 H132 T3:2C13 T3 HN11 T3:1HN1 T3 HN12 T3:2HN1 T3 H5'1 T31:1H5* T31 H5'2 T31:2H5* T31 H4' T31: H4* T31 H3' T31: H3* T31 H2' T31: H2* T31 H1' T31: H1* T31 H5'1 T32:1H5* T32 H5'2 T32:2H5* T32 H4' T32: H4* T32 H3' T32: H3* T32 H2'1 T32:1H2* T32 H2'2 T32:2H2* T32 H1' T32: H1* T32 H5M1 T32:1H5M T32 H5M2 T32:2H5M T32 H5M3 T32:3H5M T32 H' T32: H* T32 HM'1 T32:1HM* T32 HM'2 T32:2HM* T32 HM'3 T32:3HM* T32 H71 T33:1H7 T33 H72 T33:2H7 T33 HN81 T33:1HN8 T33 HN82 T33:2HN8 T33 HO'4 T33:4HO' T33 H5'1 T36:1H5* T36 H5'2 T36:2H5* T36 H4' T36: H4* T36 H3' T36: H3* T36 H2'1 T36:1H2* T36 H2'2 T36:2H2* T36 H1' T36: H1* T36 H5M1 T36:1H5M T36 H5M2 T36:2H5M T36 H5M3 T36:3H5M T36 H5'1 T37:1H5* T37 H5'2 T37:2H5* T37 H4' T37: H4* T37 H3' T37: H3* T37 HN31 T37:1HN3 T37 HN32 T37:2HN3 T37 H2'1 T37:1H2* T37 H2'2 T37:2H2* T37 H1' T37: H1* T37 H5A1 T37:1H5A T37 H5A2 T37:2H5A T37 H5A3 T37:3H5A T37 H5'1 T38:1H5* T38 H5'2 T38:2H5* T38 H4' T38: H4* T38 H3' T38: H3* T38 H2' T38: H2* T38 H1' T38: H1* T38 H5M1 T38:1H5M T38 H5M2 T38:2H5M T38 H5M3 T38:3H5M T38 HA'1 T38:1HA* T38 HA'2 T38:2HA* T38 HB'1 T38:1HB* T38 HB'2 T38:2HB* T38 HD'1 T38:1HD* T38 HD'2 T38:2HD* T38 HD'3 T38:3HD* T38 H5'1 T39:1H5* T39 H5'2 T39:2H5* T39 H4' T39: H4* T39 H3' T39: H3* T39 H2' T39: H2* T39 H1' T39: H1* T39 H5M1 T39:1H5M T39 H5M2 T39:2H5M T39 H5M3 T39:3H5M T39 HA'1 T39:1HA* T39 HA'2 T39:2HA* T39 HD'1 T39:1HD* T39 HD'2 T39:2HD* T39 HD'3 T39:3HD* T39 HB'1 T39:1HB* T39 HB'2 T39:2HB* T39 H11 T3A:1H1 T3A H12 T3A:2H1 T3A H21 T3A:1H2 T3A H22 T3A:2H2 T3A H31 T3A:1H3 T3A H32 T3A:2H3 T3A H51 T3A:1H5 T3A H52 T3A:2H5 T3A H61 T3A:1H6 T3A H62 T3A:2H6 T3A H71 T3A:1H7 T3A H72 T3A:2H7 T3A HAN1 T3O:1HAN T3O HAN2 T3O:2HAN T3O HAL1 T3O:1HAL T3O HAL2 T3O:2HAL T3O HAL3 T3O:3HAL T3O HAM1 T3O:1HAM T3O HAM2 T3O:2HAM T3O HAF1 T3O:1HAF T3O HAF2 T3O:2HAF T3O HAF3 T3O:3HAF T3O HAQ1 T3O:1HAQ T3O HAQ2 T3O:2HAQ T3O HAQ3 T3O:3HAQ T3O HOP2 T3P:2HOP T3P HOP3 T3P:3HOP T3P H5' T3P: H5* T3P H5'1 T3P:1H5* T3P H5'' T3P:2H5* T3P H4' T3P: H4* T3P H3' T3P: H3* T3P H2' T3P:1H2* T3P H2'' T3P:2H2* T3P H1' T3P: H1* T3P H51 T3P:1H5 T3P H52 T3P:2H5 T3P H53 T3P:3H5 T3P H5M1 T41:1H5M T41 H5M2 T41:2H5M T41 H5M3 T41:3H5M T41 H1' T41: H1* T41 H2'1 T41:1H2* T41 H3' T41: H3* T41 H4' T41: H4* T41 H5'1 T41:1H5* T41 H5'2 T41:2H5* T41 H11 T41:1H1 T41 H12 T41:2H1 T41 H13 T41:3H1 T41 H11A T42:1H1 T42 H12A T42:2H1 T42 H13 T42:3H1 T42 H21 T42:1H2 T42 H22A T42:2H2 T42 H31 T42:1H3 T42 H32A T42:2H3 T42 H41 T42:1H4 T42 H42 T42:2H4 T42 H421 T42:1H42 T42 H422 T42:2H42 T42 H431 T42:1H43 T42 H432 T42:2H43 T42 H451 T42:1H45 T42 H452 T42:2H45 T42 H461 T42:1H46 T42 H462 T42:2H46 T42 H71 T44:1H7 T44 H72 T44:2H7 T44 HN81 T44:1HN8 T44 HN82 T44:2HN8 T44 HO4' T44:'HO4 T44 H4C1 T45:1H4C T45 H4C2 T45:2H4C T45 H4C3 T45:3H4C T45 H5'1 T48:1H5* T48 H5'2 T48:2H5* T48 H4' T48: H4* T48 H3' T48: H3* T48 H2'1 T48:1H2* T48 H2'2 T48:2H2* T48 H1' T48: H1* T48 H5M1 T48:1H5M T48 H5M2 T48:2H5M T48 H5M3 T48:3H5M T48 H5'1 T49:1H5* T49 H5'2 T49:2H5* T49 H4' T49: H4* T49 H3' T49: H3* T49 H2'1 T49:1H2* T49 H2'2 T49:2H2* T49 H1' T49: H1* T49 H5M1 T49:1H5M T49 H5M2 T49:2H5M T49 H5M3 T49:3H5M T49 H21 T4A:1H2 T4A H61 T4A:1H6 T4A H71 T4A:1H7 T4A H72 T4A:2H7 T4A H6'1 T4A:1H6' T4A H2'1 T4A:1H2' T4A HO91 T4A:1HO9 T4A H4'O T4A:OH4' T4A H91 T4B:1H9 T4B H92 T4B:2H9 T4B H211 T4B:1H21 T4B H212 T4B:2H21 T4B H151 T4B:1H15 T4B H152 T4B:2H15 T4B H153 T4B:3H15 T4B H2A1 T4K:1H2A T4K H2A2 T4K:2H2A T4K H2A3 T4K:3H2A T4K H4A1 T4K:1H4A T4K H5B1 T4K:1H5B T4K H5B2 T4K:2H5B T4K H6G1 T4K:1H6G T4K H6G2 T4K:2H6G T4K H6G3 T4K:3H6G T4K H51 T4K:1H5 T4K H52 T4K:2H5 T4K H21 T4K:1H2 T4K H22 T4K:2H2 T4K H5A1 T4K:1H5A T4K H5A2 T4K:2H5A T4K H5A3 T4K:3H5A T4K H171 T4P:1H17 T4P H172 T4P:2H17 T4P H161 T4P:1H16 T4P H162 T4P:2H16 T4P H151 T4P:1H15 T4P H152 T4P:2H15 T4P H101 T4P:1H10 T4P H102 T4P:2H10 T4P H141 T4P:1H14 T4P H142 T4P:2H14 T4P HOP3 T4S:3HOP T4S HOP2 T4S:2HOP T4S H5A1 T4S:1H5A T4S H5A2 T4S:2H5A T4S H5A3 T4S:3H5A T4S H2' T4S:1H2* T4S H2'' T4S:2H2* T4S H5' T4S:1H5* T4S H5'' T4S:2H5* T4S H4' T4S: H4* T4S H1' T4S: H1* T4S H3' T4S: H3* T4S HO3' T4S:H3T T4S H4A1 T50:1H4A T50 H4A2 T50:2H4A T50 H4A3 T50:3H4A T50 H101 T50:1H10 T50 H102 T50:2H10 T50 HB71 T5A:1HB7 T5A HB72 T5A:2HB7 T5A HB73 T5A:3HB7 T5A HB51 T5A:1HB5 T5A HB52 T5A:2HB5 T5A HB21 T5A:1HB2 T5A HB22 T5A:2HB2 T5A HB'3 T5A:3HB* T5A HO1A T5A:AHO1 T5A HO2B T5A:BHO2 T5A HO2C T5A:CHO2 T5A HO1D T5A:DHO1 T5A HO1E T5A:EHO1 T5A HA51 T5A:1HA5 T5A HA52 T5A:2HA5 T5A HA61 T5A:1HA6 T5A HA62 T5A:2HA6 T5A H131 T5C:1H13 T5C H132 T5C:2H13 T5C H121 T5C:1H12 T5C H122 T5C:2H12 T5C H111 T5C:1H11 T5C H112 T5C:2H11 T5C H113 T5C:3H11 T5C H101 T5C:1H10 T5C H102 T5C:2H10 T5C H103 T5C:3H10 T5C H341 T5C:1H34 T5C H342 T5C:2H34 T5C H343 T5C:3H34 T5C H191 T5C:1H19 T5C H201 T5C:1H20 T5C H311 T5C:1H31 T5C H312 T5C:2H31 T5C H313 T5C:3H31 T5C H301 T5C:1H30 T5C H302 T5C:2H30 T5C H303 T5C:3H30 T5C H321 T5C:1H32 T5C H322 T5C:2H32 T5C H331 T5C:1H33 T5C H332 T5C:2H33 T5C H171 T5P:1H17 T5P H172 T5P:2H17 T5P H161 T5P:1H16 T5P H162 T5P:2H16 T5P H151 T5P:1H15 T5P H152 T5P:2H15 T5P H101 T5P:1H10 T5P H102 T5P:2H10 T5P H141 T5P:1H14 T5P H142 T5P:2H14 T5P H8'1 T66:1H8' T66 H8'2 T66:2H8' T66 H5'1 T66:1H5' T66 H3'1 T66:1H3' T66 H3'2 T66:2H3' T66 H2'1 T66:1H2' T66 H2'2 T66:2H2' T66 H1'1 T66:1H1' T66 H1'2 T66:2H1' T66 HM51 T66:1HM5 T66 HM52 T66:2HM5 T66 HM53 T66:3HM5 T66 HB1 T66:1HB T66 HB2 T66:2HB T66 HG1 T66:1HG T66 HG2 T66:2HG T66 HD1 T66:1HD T66 HD2 T66:2HD T66 HE1 T66:1HE T66 HE2 T66:2HE T66 HZ1 T66:1HZ T66 HZ2 T66:2HZ T66 HOP2 T6A:2HOP T6A HOP3 T6A:3HOP T6A H5' T6A:1H5* T6A H5'' T6A:2H5* T6A H4' T6A: H4* T6A H3' T6A: H3* T6A HO3' T6A:H3T T6A H2' T6A: H2* T6A HO2' T6A:2HO* T6A H1' T6A: H1* T6A H151 T6A:1H15 T6A H152 T6A:2H15 T6A H153 T6A:3H15 T6A HC61 T6P:1HC6 T6P HC62 T6P:2HC6 T6P H6P1 T6P:1H6P T6P H6P2 T6P:2H6P T6P HOP7 T6P:7HOP T6P HOP8 T6P:8HOP T6P H71 T76:1H7 T76 H72 T76:2H7 T76 H181 T76:1H18 T76 H182 T76:2H18 T76 H191 T76:1H19 T76 H192 T76:2H19 T76 H201 T76:1H20 T76 H202 T76:2H20 T76 H341 T76:1H34 T76 H342 T76:2H34 T76 H351 T76:1H35 T76 H352 T76:2H35 T76 H431 T76:1H43 T76 H432 T76:2H43 T76 H471 T76:1H47 T76 H472 T76:2H47 T76 H481 T76:1H48 T76 H482 T76:2H48 T76 H491 T76:1H49 T76 H492 T76:2H49 T76 H501 T76:1H50 T76 H502 T76:2H50 T76 H511 T76:1H51 T76 H512 T76:2H51 T76 H11 T80:1H1 T80 H12 T80:2H1 T80 H13 T80:3H1 T80 H31 T80:1H3 T80 H32 T80:2H3 T80 H41 T80:1H4 T80 H42 T80:2H4 T80 H61 T80:1H6 T80 H62 T80:2H6 T80 H71 T80:1H7 T80 H72 T80:2H7 T80 H91 T80:1H9 T80 H92 T80:2H9 T80 H101 T80:1H10 T80 H102 T80:2H10 T80 H121 T80:1H12 T80 H122 T80:2H12 T80 H131 T80:1H13 T80 H132 T80:2H13 T80 H151 T80:1H15 T80 H152 T80:2H15 T80 H161 T80:1H16 T80 H162 T80:2H16 T80 H201 T80:1H20 T80 H202 T80:2H20 T80 H211 T80:1H21 T80 H212 T80:2H21 T80 H221 T80:1H22 T80 H222 T80:2H22 T80 H231 T80:1H23 T80 H232 T80:2H23 T80 H241 T80:1H24 T80 H242 T80:2H24 T80 H251 T80:1H25 T80 H252 T80:2H25 T80 H261 T80:1H26 T80 H262 T80:2H26 T80 H271 T80:1H27 T80 H272 T80:2H27 T80 H281 T80:1H28 T80 H282 T80:2H28 T80 H291 T80:1H29 T80 H292 T80:2H29 T80 H301 T80:1H30 T80 H302 T80:2H30 T80 H311 T80:1H31 T80 H312 T80:2H31 T80 H321 T80:1H32 T80 H322 T80:2H32 T80 H331 T80:1H33 T80 H332 T80:2H33 T80 H341 T80:1H34 T80 H342 T80:2H34 T80 H351 T80:1H35 T80 H352 T80:2H35 T80 H361 T80:1H36 T80 H362 T80:2H36 T80 H363 T80:3H36 T80 HN21 T87:1HN2 T87 HN22 T87:2HN2 T87 H10C T87:CH10 T87 H11C T87:CH11 T87 H13C T87:CH13 T87 H141 T87:1H14 T87 H142 T87:2H14 T87 H143 T87:3H14 T87 HC91 T87:1HC9 T87 HC92 T87:2HC9 T87 H151 T87:1H15 T87 H152 T87:2H15 T87 H19C T87:CH19 T87 H20C T87:CH20 T87 H21C T87:CH21 T87 H231 T87:1H23 T87 H232 T87:2H23 T87 H251 T87:1H25 T87 H252 T87:2H25 T87 H253 T87:3H25 T87 H261 T87:1H26 T87 H262 T87:2H26 T87 H11A T98:1H1 T98 H12A T98:2H1 T98 H13 T98:3H1 T98 H141 T98:1H14 T98 H142 T98:2H14 T98 H143 T98:3H14 T98 H161 T98:1H16 T98 H162 T98:2H16 T98 H163 T98:3H16 T98 H011 TA1:1H01 TA1 H021 TA1:1H02 TA1 H051 TA1:1H05 TA1 H061 TA1:1H06 TA1 HC71 TA1:1HC7 TA1 H081 TA1:1H08 TA1 H091 TA1:1H09 TA1 H101 TA1:1H10 TA1 H131 TA1:1H13 TA1 H132 TA1:2H13 TA1 H133 TA1:3H13 TA1 H141 TA1:1H14 TA1 H142 TA1:2H14 TA1 H151 TA1:1H15 TA1 H161 TA1:1H16 TA1 H162 TA1:2H16 TA1 H171 TA1:1H17 TA1 H071 TA1:1H07 TA1 H191 TA1:1H19 TA1 H192 TA1:2H19 TA1 H193 TA1:3H19 TA1 H211 TA1:1H21 TA1 H231 TA1:1H23 TA1 H232 TA1:2H23 TA1 H233 TA1:3H23 TA1 H261 TA1:1H26 TA1 H281 TA1:1H28 TA1 HO11 TA1:1HO1 TA1 H291 TA1:1H29 TA1 HN01 TA1:1HN0 TA1 H321 TA1:1H32 TA1 H331 TA1:1H33 TA1 H341 TA1:1H34 TA1 H351 TA1:1H35 TA1 H361 TA1:1H36 TA1 H381 TA1:1H38 TA1 H391 TA1:1H39 TA1 H401 TA1:1H40 TA1 H411 TA1:1H41 TA1 H421 TA1:1H42 TA1 H431 TA1:1H43 TA1 H432 TA1:2H43 TA1 H441 TA1:1H44 TA1 H442 TA1:2H44 TA1 H443 TA1:3H44 TA1 H461 TA1:1H46 TA1 H462 TA1:2H46 TA1 H463 TA1:3H46 TA1 H471 TA1:1H47 TA1 H472 TA1:2H47 TA1 H473 TA1:3H47 TA1 H1 TA2:1H TA2 H2 TA2:2H TA2 HN1 TA2:1HN TA2 HN2 TA2:2HN TA2 H5' TA3:1H5* TA3 H5'' TA3:2H5* TA3 H4' TA3: H4* TA3 H3' TA3: H3* TA3 HO3' TA3:HO3* TA3 H2' TA3:1H2* TA3 H2'' TA3:2H2* TA3 H1' TA3: H1* TA3 H41 TA3:1H4 TA3 H42 TA3:2H4 TA3 H71 TA3:1H5M TA3 H72 TA3:2H5M TA3 H73 TA3:3H5M TA3 HB2 TA4:1HB TA4 HB3 TA4:2HB TA4 HD21 TA4:1HD2 TA4 HD22 TA4:2HD2 TA4 HD23 TA4:3HD2 TA4 HD11 TA4:1HD1 TA4 HD12 TA4:2HD1 TA4 HD13 TA4:3HD1 TA4 HT61 TA4:1HT6 TA4 HT62 TA4:2HT6 TA4 H2 TA4: HN2 TA4 HBC1 TA5:1HBC TA5 HBC2 TA5:2HBC TA5 H1C1 TA6:1H1C TA6 H1C2 TA6:2H1C TA6 H6C1 TA6:1H6C TA6 H6C2 TA6:2H6C TA6 HC11 TAA:1HC1 TAA HC12 TAA:2HC1 TAA H121 TAA:1H12 TAA H122 TAA:2H12 TAA H3'1 TAB:1H3' TAB H4'1 TAB:1H4' TAB H6'1 TAB:1H6' TAB H111 TAB:1H11 TAB H112 TAB:2H11 TAB HN21 TAB:1HN2 TAB HN22 TAB:2HN2 TAB HN11 TAB:1HN1 TAB HN12 TAB:2HN1 TAB H191 TAB:1H19 TAB H192 TAB:2H19 TAB H201 TAB:1H20 TAB H202 TAB:2H20 TAB H203 TAB:3H20 TAB H211 TAB:1H21 TAB H212 TAB:2H21 TAB H221 TAB:1H22 TAB H222 TAB:2H22 TAB H251 TAB:1H25 TAB H252 TAB:2H25 TAB H253 TAB:3H25 TAB H281 TAB:1H28 TAB H291 TAB:1H29 TAB H301 TAB:1H30 TAB H311 TAB:1H31 TAB H321 TAB:1H32 TAB HN21 TAC:1HN2 TAC HN22 TAC:2HN2 TAC H421 TAC:1H42 TAC H422 TAC:2H42 TAC H423 TAC:3H42 TAC H431 TAC:1H43 TAC H432 TAC:2H43 TAC H433 TAC:3H43 TAC H51A TAC:1H5 TAC H52 TAC:2H5 TAC H621 TAC:1H62 TAC H622 TAC:2H62 TAC H623 TAC:3H62 TAC HOA2 TAD:2HOA TAD H51A TAD:AH51 TAD H52A TAD:AH52 TAD H4B TAD:AH4* TAD H3B TAD:AH3* TAD HO3A TAD:AHO3 TAD H2B TAD:AH2* TAD HO2A TAD:AHO2 TAD H1B TAD:AH1* TAD H8A TAD: AH8 TAD H61A TAD:AH61 TAD H62A TAD:AH62 TAD H2A TAD: AH2 TAD H31 TAD:1H3 TAD H32 TAD:2H3 TAD HON2 TAD:2HON TAD H51N TAD:NH51 TAD H52N TAD:NH52 TAD H4D TAD:NH4* TAD H3D TAD:NH3* TAD HO3N TAD:NHO3 TAD H2D TAD:NH2* TAD HO2N TAD:NHO2 TAD H1D TAD:NH1* TAD H5N TAD: NH5 TAD H61N TAD:NH61 TAD H62N TAD:NH62 TAD HOP1 TAF:1HOP TAF HOP2 TAF:2HOP TAF H71 TAF:1H5M TAF H72 TAF:2H5M TAF H73 TAF:3H5M TAF H2' TAF: H2* TAF H5' TAF:1H5* TAF H5'' TAF:2H5* TAF H4' TAF: H4* TAF H1' TAF: H1* TAF H3' TAF: H3* TAF HO'3 TAF:3HO* TAF H6'1 TAL:1H6' TAL H6'2 TAL:2H6' TAL H6'3 TAL:3H6' TAL H71 TAL:1H7 TAL H72 TAL:2H7 TAL H73 TAL:3H7 TAL H11 TAM:1H1 TAM H12 TAM:2H1 TAM H21 TAM:1H2 TAM H22 TAM:2H2 TAM H31 TAM:1H3 TAM H32 TAM:2H3 TAM H41 TAM:1H4 TAM H42 TAM:2H4 TAM H51 TAM:1H5 TAM H52 TAM:2H5 TAM H61 TAM:1H6 TAM H62 TAM:2H6 TAM HN1 TAM:1HN TAM HN2 TAM:2HN TAM H531 TAO:1H53 TAO H532 TAO:2H53 TAO H533 TAO:3H53 TAO H421 TAO:1H42 TAO H422 TAO:2H42 TAO H521 TAO:1H52 TAO H522 TAO:2H52 TAO H523 TAO:3H52 TAO H561 TAO:1H56 TAO H562 TAO:2H56 TAO H563 TAO:3H56 TAO H221 TAO:1H22 TAO H222 TAO:2H22 TAO H223 TAO:3H22 TAO H161 TAO:1H16 TAO H162 TAO:2H16 TAO H163 TAO:3H16 TAO H201 TAO:1H20 TAO H202 TAO:2H20 TAO H203 TAO:3H20 TAO H51A TAO:1H5 TAO H52 TAO:2H5 TAO H71 TAO:1H7 TAO H72 TAO:2H7 TAO H131 TAO:1H13 TAO H132 TAO:2H13 TAO H133 TAO:3H13 TAO H411 TAO:1H41 TAO H412 TAO:2H41 TAO H413 TAO:3H41 TAO H401 TAO:1H40 TAO H402 TAO:2H40 TAO H461 TAO:1H46 TAO H462 TAO:2H46 TAO H463 TAO:3H46 TAO H471 TAO:1H47 TAO H472 TAO:2H47 TAO H473 TAO:3H47 TAO H441 TAO:1H44 TAO H442 TAO:2H44 TAO H443 TAO:3H44 TAO H251 TAO:1H25 TAO H252 TAO:2H25 TAO H253 TAO:3H25 TAO H81 TAO:1H8 TAO H82 TAO:2H8 TAO H83 TAO:3H8 TAO H371 TAO:1H37 TAO H372 TAO:2H37 TAO H373 TAO:3H37 TAO HOA2 TAP:2HOA TAP H51A TAP:AH51 TAP H52A TAP:AH52 TAP H4B TAP:AH4* TAP H3B TAP:AH3* TAP HO3A TAP:AHO3 TAP H2B TAP:AH2* TAP H1B TAP:AH1* TAP H8A TAP: AH8 TAP H61A TAP:AH61 TAP H62A TAP:AH62 TAP H2A TAP: AH2 TAP H51N TAP:NH51 TAP H52N TAP:NH52 TAP H4D TAP:NH4* TAP H3D TAP:NH3* TAP HO3N TAP:NHO3 TAP H2D TAP:NH2* TAP HO2N TAP:NHO2 TAP H1D TAP:NH1* TAP H2N TAP: NH2 TAP H71N TAP:NH71 TAP H72N TAP:NH72 TAP H4N TAP: NH4 TAP H5N TAP: NH5 TAP H6N TAP: NH6 TAP HOP2 TAP:2HOP TAP HOP3 TAP:3HOP TAP H4N1 TAQ:1H4N TAQ H4N2 TAQ:2H4N TAQ H2N1 TAQ:1H2N TAQ H2N2 TAQ:2H2N TAQ HAA1 TAQ:1HAA TAQ HAA2 TAQ:2HAA TAQ H11 TAS:1H1 TAS H21 TAS:1H2 TAS H31 TAS:1H3 TAS H5'1 TAT:1H5* TAT H5'2 TAT:2H5* TAT H4' TAT: H4* TAT H3' TAT: H3* TAT H2' TAT: H2* TAT H1' TAT: H1* TAT H6N1 TAT:1H6N TAT H6N2 TAT:2H6N TAT H1C1 TAU:1H1C TAU H1C2 TAU:2H1C TAU H2C1 TAU:1H2C TAU H2C2 TAU:2H2C TAU H1N1 TAU:1H1N TAU H1N2 TAU:2H1N TAU H561 TAV:1H56 TAV H562 TAV:2H56 TAV H563 TAV:3H56 TAV H671 TAV:1H67 TAV H672 TAV:2H67 TAV HA1 TAX:1HA TAX HA2 TAX:2HA TAX HB1 TAX:1HB TAX HB2 TAX:2HB TAX HB3 TAX:3HB TAX HA11 TAX:1HA1 TAX HA12 TAX:2HA1 TAX HB11 TAX:1HB1 TAX HB12 TAX:2HB1 TAX H211 TAX:1H21 TAX H212 TAX:2H21 TAX H213 TAX:3H21 TAX H221 TAX:1H22 TAX H222 TAX:2H22 TAX H223 TAX:3H22 TAX HC51 TAZ:1HC5 TAZ HC61 TAZ:1HC6 TAZ HC62 TAZ:2HC6 TAZ H201 TAZ:1H20 TAZ H202 TAZ:2H20 TAZ H203 TAZ:3H20 TAZ H141 TAZ:1H14 TAZ H142 TAZ:2H14 TAZ H191 TAZ:1H19 TAZ H181 TAZ:1H18 TAZ H41 TB1:1H4 TB1 H42 TB1:2H4 TB1 HN1 TB1:1HN TB1 HN2 TB1:2HN TB1 H41 TB9:1H4 TB9 H42 TB9:2H4 TB9 H71 TB9:1H7 TB9 H72 TB9:2H7 TB9 H111 TB9:1H11 TB9 H112 TB9:2H11 TB9 H113 TB9:3H11 TB9 H121 TB9:1H12 TB9 H122 TB9:2H12 TB9 H151 TB9:1H15 TB9 H152 TB9:2H15 TB9 H153 TB9:3H15 TB9 H161 TB9:1H16 TB9 H162 TB9:2H16 TB9 H163 TB9:3H16 TB9 H111 TBA:1H11 TBA H112 TBA:2H11 TBA H121 TBA:1H12 TBA H122 TBA:2H12 TBA H211 TBA:1H21 TBA H212 TBA:2H21 TBA H221 TBA:1H22 TBA H222 TBA:2H22 TBA H311 TBA:1H31 TBA H312 TBA:2H31 TBA H321 TBA:1H32 TBA H322 TBA:2H32 TBA H411 TBA:1H41 TBA H412 TBA:2H41 TBA H421 TBA:1H42 TBA H422 TBA:2H42 TBA H131 TBA:1H13 TBA H132 TBA:2H13 TBA H141 TBA:1H14 TBA H142 TBA:2H14 TBA H143 TBA:3H14 TBA H231 TBA:1H23 TBA H232 TBA:2H23 TBA H241 TBA:1H24 TBA H242 TBA:2H24 TBA H243 TBA:3H24 TBA H331 TBA:1H33 TBA H332 TBA:2H33 TBA H341 TBA:1H34 TBA H342 TBA:2H34 TBA H343 TBA:3H34 TBA H431 TBA:1H43 TBA H432 TBA:2H43 TBA H441 TBA:1H44 TBA H442 TBA:2H44 TBA H443 TBA:3H44 TBA H101 TBC:1H10 TBC H102 TBC:2H10 TBC H72 TBC:2H7 TBC H71 TBC:1H7 TBC H81 TBC:1H8 TBC H82 TBC:2H8 TBC H1BO TBD:OH1B TBD H2BO TBD:OH2B TBD H2AO TBD:OH2A TBD H5'1 TBD:1H5* TBD H5'2 TBD:2H5* TBD H4'C TBD:CH4* TBD H1'C TBD:CH1* TBD HCA1 TBD:1HCA TBD HCA2 TBD:2HCA TBD HCA3 TBD:3HCA TBD H2'1 TBD:1H2* TBD H2'2 TBD:2H2* TBD H3'C TBD:CH3* TBD H3'O TBD:OH3* TBD H201 TBE:1H20 TBE H202 TBE:2H20 TBE H203 TBE:3H20 TBE H141 TBE:1H14 TBE H142 TBE:2H14 TBE H11 TBF:1H1 TBF H12 TBF:2H1 TBF H13 TBF:3H1 TBF H21 TBF:1H2 TBF H22 TBF:2H2 TBF H23 TBF:3H2 TBF H31 TBF:1H3 TBF H32 TBF:2H3 TBF H33 TBF:3H3 TBF H TBG:1HN TBG H2 TBG:2HN TBG HG11 TBG:1H1 TBG HG12 TBG:2H1 TBG HG13 TBG:3H1 TBG HG21 TBG:1H2 TBG HG22 TBG:2H2 TBG HG23 TBG:3H2 TBG HG31 TBG:1H3 TBG HG32 TBG:2H3 TBG HG33 TBG:3H3 TBG H421 TBH:1H42 TBH H51 TBH:1H5 TBH H231 TBH:1H23 TBH H232 TBH:2H23 TBH H261 TBH:1H26 TBH H21 TBH:1H2 TBH H31 TBH:1H3 TBH H71 TBH:1H7 TBH H72 TBH:2H7 TBH H81 TBH:1H8 TBH H111 TBH:1H11 TBH H131 TBH:1H13 TBH H151 TBH:1H15 TBH H152 TBH:2H15 TBH H161 TBH:1H16 TBH H162 TBH:2H16 TBH H171 TBH:1H17 TBH H172 TBH:2H17 TBH H181 TBH:1H18 TBH H182 TBH:2H18 TBH H191 TBH:1H19 TBH H192 TBH:2H19 TBH H193 TBH:3H19 TBH H141 TBH:1H14 TBH H101 TBH:1H10 TBH H121 TBH:1H12 TBH H201 TBH:1H20 TBH H211 TBH:1H21 TBH H221 TBH:1H22 TBH H351 TBH:1H35 TBH H361 TBH:1H36 TBH H401 TBH:1H40 TBH H402 TBH:2H40 TBH H403 TBH:3H40 TBH H391 TBH:1H39 TBH H392 TBH:2H39 TBH H393 TBH:3H39 TBH H411 TBH:1H41 TBH H412 TBH:2H41 TBH H413 TBH:3H41 TBH H281 TBH:1H28 TBH H282 TBH:2H28 TBH H301 TBH:1H30 TBH H311 TBH:1H31 TBH H321 TBH:1H32 TBH H331 TBH:1H33 TBH H341 TBH:1H34 TBH H141 TBI:1H14 TBI H142 TBI:2H14 TBI H201 TBI:1H20 TBI H202 TBI:2H20 TBI H203 TBI:3H20 TBI H77 TBI:7H7 TBI HCT1 TBM:1HCT TBM HCT2 TBM:2HCT TBM HCT3 TBM:3HCT TBM HCN1 TBM:1HCN TBM HCN2 TBM:2HCN TBM HCN3 TBM:3HCN TBM HD11 TBM:1HD1 TBM HD12 TBM:2HD1 TBM HD13 TBM:3HD1 TBM HD22 TBM:1HD2 TBM HD23 TBM:2HD2 TBM HH1 TBM:1HH TBM HH2 TBM:2HH TBM HH3 TBM:3HH TBM H5'1 TBN:1H5' TBN H5'2 TBN:2H5' TBN HN61 TBN:1HN6 TBN HN62 TBN:2HN6 TBN H41 TBO:1H4 TBO H42 TBO:2H4 TBO H71 TBO:1H7 TBO H72 TBO:2H7 TBO H111 TBO:1H11 TBO H112 TBO:2H11 TBO H113 TBO:3H11 TBO H121 TBO:1H12 TBO H122 TBO:2H12 TBO H151 TBO:1H15 TBO H152 TBO:2H15 TBO H153 TBO:3H15 TBO H161 TBO:1H16 TBO H162 TBO:2H16 TBO H163 TBO:3H16 TBO H4C1 TBT:1H4C TBT H4C2 TBT:2H4C TBT H11 TBU:1H1 TBU H12 TBU:2H1 TBU H13 TBU:3H1 TBU H21 TBU:1H2 TBU H22 TBU:2H2 TBU H23 TBU:3H2 TBU H31 TBU:1H3 TBU H32 TBU:2H3 TBU H33 TBU:3H3 TBU HN11 TBZ:1HN1 TBZ HN12 TBZ:2HN1 TBZ HN13 TBZ:3HN1 TBZ H21 TBZ:1H2 TBZ H22 TBZ:2H2 TBZ H31A TBZ:1H3 TBZ H32 TBZ:2H3 TBZ H41 TBZ:1H4 TBZ H42 TBZ:2H4 TBZ H321 TBZ:1H32 TBZ H322 TBZ:2H32 TBZ H323 TBZ:3H32 TBZ H5' TC1:1H5* TC1 H5'' TC1:2H5* TC1 H4' TC1: H4* TC1 H3' TC1: H3* TC1 H2' TC1:1H2* TC1 H2'' TC1:2H2* TC1 H1' TC1: H1* TC1 H14 TC1:4H1 TC1 H5 TC1:5H TC1 H7 TC1:7H TC1 H8 TC1:8H TC1 H9 TC1:9H TC1 H10 TC1:0H1 TC1 HO3' TC1:H3T TC1 HOP3 TC1:3HOP TC1 H11 TC4:1H1 TC4 H12 TC4:2H1 TC4 H21 TC4:1H2 TC4 H22 TC4:2H2 TC4 H31 TC4:1H3 TC4 H32 TC4:2H3 TC4 H41 TC4:1H4 TC4 H42 TC4:2H4 TC4 H43 TC4:3H4 TC4 H51 TC4:1H5 TC4 H52 TC4:2H5 TC4 H81 TC4:1H8 TC4 H82 TC4:2H8 TC4 H91 TC4:1H9 TC4 H92 TC4:2H9 TC4 H101 TC4:1H10 TC4 H102 TC4:2H10 TC4 H111 TC4:1H11 TC4 H112 TC4:2H11 TC4 H113 TC4:3H11 TC4 H121 TC4:1H12 TC4 H122 TC4:2H12 TC4 H141 TC4:1H14 TC4 H142 TC4:2H14 TC4 H151 TC4:1H15 TC4 H152 TC4:2H15 TC4 H161 TC4:1H16 TC4 H162 TC4:2H16 TC4 H171 TC4:1H17 TC4 H172 TC4:2H17 TC4 H173 TC4:3H17 TC4 H61 TCB:1H6 TCB H62 TCB:2H6 TCB H6'1 TCB:1H6' TCB H6'2 TCB:2H6' TCB HO1' TCB:'HO1 TCB HO2' TCB:'HO2 TCB HO3' TCB:'HO3 TCB HO6' TCB:'HO6 TCB H12C TCC:CH12 TCC H10C TCC:CH10 TCC H11 TCH:1H1 TCH H12A TCH:2H1 TCH H21 TCH:1H2 TCH H22 TCH:2H2 TCH H41 TCH:1H4 TCH H42 TCH:2H4 TCH H61 TCH:1H6 TCH H62 TCH:2H6 TCH H111 TCH:1H11 TCH H112 TCH:2H11 TCH H151 TCH:1H15 TCH H152 TCH:2H15 TCH H161 TCH:1H16 TCH H162 TCH:2H16 TCH H181 TCH:1H18 TCH H182 TCH:2H18 TCH H183 TCH:3H18 TCH H191 TCH:1H19 TCH H192 TCH:2H19 TCH H193 TCH:3H19 TCH H211 TCH:1H21 TCH H212 TCH:2H21 TCH H213 TCH:3H21 TCH H221 TCH:1H22 TCH H222 TCH:2H22 TCH H231 TCH:1H23 TCH H232 TCH:2H23 TCH H251 TCH:1H25 TCH H252 TCH:2H25 TCH H261 TCH:1H26 TCH H262 TCH:2H26 TCH H11 TCK:1H1 TCK H12 TCK:2H1 TCK H13 TCK:3H1 TCK H81 TCK:1H8 TCK H82 TCK:2H8 TCK H83 TCK:3H8 TCK HB1 TCK:1HB TCK HB2 TCK:2HB TCK HG1 TCK:1HG TCK HG2 TCK:2HG TCK HD1 TCK:1HD TCK HD2 TCK:2HD TCK HE1 TCK:1HE TCK HE2 TCK:2HE TCK HNZ1 TCK:1HNZ TCK HNZ2 TCK:2HNZ TCK H11 TCL:1H1 TCL H41 TCL:1H4 TCL H31 TCL:1H3 TCL H101 TCL:1H10 TCL H121 TCL:1H12 TCL H131 TCL:1H13 TCL H171 TCL:1H17 TCL H31 TCM:1H3 TCM H32 TCM:2H3 TCM H51 TCM:1H5 TCM H52 TCM:2H5 TCM H61 TCM:1H6 TCM H62 TCM:2H6 TCM H81 TCM:1H8 TCM H82 TCM:2H8 TCM H83 TCM:3H8 TCM H91 TCM:1H9 TCM H92 TCM:2H9 TCM H93 TCM:3H9 TCM H101 TCM:1H10 TCM H102 TCM:2H10 TCM H103 TCM:3H10 TCM HG21 TCO:1HG2 TCO HG22 TCO:2HG2 TCO HD21 TCO:1HD2 TCO HD22 TCO:2HD2 TCO HE1 TCO:1HE TCO HE2 TCO:2HE TCO HD11 TCO:1HD1 TCO HD12 TCO:2HD1 TCO HG11 TCO:1HG1 TCO HG12 TCO:2HG1 TCO H41 TCO:1H4 TCO H42 TCO:2H4 TCO H43 TCO:3H4 TCO H61 TCO:1H6 TCO H62 TCO:2H6 TCO H63 TCO:3H6 TCO H51 TCO:1H5 TCO H52 TCO:2H5 TCO H53 TCO:3H5 TCO HP1 TCP:1HP TCP HP2 TCP:2HP TCP HP3 TCP:3HP TCP H5' TCP:1H5* TCP H5'' TCP:2H5* TCP H4' TCP: H4* TCP H3' TCP: H3* TCP HO3' TCP:*HO3 TCP H2' TCP:1H2* TCP H2'' TCP:2H2* TCP H1' TCP: H1* TCP H71 TCP:1H5M TCP H72 TCP:2H5M TCP H73 TCP:3H5M TCP HT21 TCQ:1HT2 TCQ HT22 TCQ:2HT2 TCQ HB1 TCR:1HB TCR HB2 TCR:2HB TCR H91 TCR:1H9 TCR H92 TCR:2H9 TCR H191 TCS:1H19 TCS H192 TCS:2H19 TCS H181 TCS:1H18 TCS H182 TCS:2H18 TCS H171 TCS:1H17 TCS H172 TCS:2H17 TCS H161 TCS:1H16 TCS H162 TCS:2H16 TCS H231 TCS:1H23 TCS H232 TCS:2H23 TCS H233 TCS:3H23 TCS H16C TCT:CH16 TCT H15C TCT:CH15 TCT H13C TCT:CH13 TCT H10C TCT:CH10 TCT H222 TDA:2H22 TDA H221 TDA:1H22 TDA H232 TDA:2H23 TDA H231 TDA:1H23 TDA H242 TDA:2H24 TDA H241 TDA:1H24 TDA H252 TDA:2H25 TDA H251 TDA:1H25 TDA H262 TDA:2H26 TDA H261 TDA:1H26 TDA H272 TDA:2H27 TDA H271 TDA:1H27 TDA H282 TDA:2H28 TDA H281 TDA:1H28 TDA H292 TDA:2H29 TDA H291 TDA:1H29 TDA H302 TDA:2H30 TDA H301 TDA:1H30 TDA H312 TDA:2H31 TDA H311 TDA:1H31 TDA H322 TDA:2H32 TDA H321 TDA:1H32 TDA H333 TDA:3H33 TDA H332 TDA:2H33 TDA H331 TDA:1H33 TDA H81 TDB:1H8 TDB H82 TDB:2H8 TDB H83 TDB:3H8 TDB H151 TDB:1H15 TDB H152 TDB:2H15 TDB H161 TDB:1H16 TDB H162 TDB:2H16 TDB H171 TDB:1H17 TDB H172 TDB:2H17 TDB H173 TDB:3H17 TDB H41 TDE:1H4 TDE H42 TDE:2H4 TDE H51 TDE:1H5 TDE H52 TDE:2H5 TDE H71 TDE:1H7 TDE H72 TDE:2H7 TDE H251 TDE:1H25 TDE H252 TDE:2H25 TDE H253 TDE:3H25 TDE H211 TDE:1H21 TDE H212 TDE:2H21 TDE H213 TDE:3H21 TDE H201 TDE:1H20 TDE H202 TDE:2H20 TDE H203 TDE:3H20 TDE H191 TDE:1H19 TDE H192 TDE:2H19 TDE H193 TDE:3H19 TDE H61 TDG:1H6 TDG H62 TDG:2H6 TDG HO2' TDG:'HO2 TDG HO3' TDG:'HO3 TDG HO4' TDG:'HO4 TDG H6'1 TDG:1H6' TDG H6'2 TDG:2H6' TDG HO6' TDG:'HO6 TDG HS51 TDI:1HS5 TDI HS52 TDI:2HS5 TDI HS53 TDI:3HS5 TDI H5'1 TDI:1H5* TDI H5'2 TDI:2H5* TDI H4' TDI: H4* TDI H1'1 TDI:1H1* TDI H1'2 TDI:2H1* TDI H101 TDI:1H10 TDI H102 TDI:2H10 TDI HN61 TDI:1HN6 TDI HN62 TDI:2HN6 TDI H2'1 TDI:1H2* TDI H2'2 TDI:2H2* TDI H3' TDI: H3* TDI H71 TDK:1H7 TDK H72 TDK:2H7 TDK H61 TDK:1H6 TDK H62 TDK:2H6 TDK HM41 TDK:1HM4 TDK HM42 TDK:2HM4 TDK HM43 TDK:3HM4 TDK HMB1 TDK:1HMB TDK HMB2 TDK:2HMB TDK HMB3 TDK:3HMB TDK HMC1 TDK:1HMC TDK HMC2 TDK:2HMC TDK HMC3 TDK:3HMC TDK H7'1 TDK:1H7* TDK H7'2 TDK:2H7* TDK H6' TDK: H6* TDK HM21 TDK:1HM2 TDK HM22 TDK:2HM2 TDK HM23 TDK:3HM2 TDK H4'1 TDK:1H4* TDK H4'2 TDK:2H4* TDK H71 TDL:1H7 TDL H72 TDL:2H7 TDL H61 TDL:1H6 TDL H62 TDL:2H6 TDL HM41 TDL:1HM4 TDL HM42 TDL:2HM4 TDL HM43 TDL:3HM4 TDL HLB1 TDL:1HLB TDL HLB2 TDL:2HLB TDL HLB3 TDL:3HLB TDL H7'1 TDL:1H7* TDL H7'2 TDL:2H7* TDL H6' TDL: H6* TDL HM21 TDL:1HM2 TDL HM22 TDL:2HM2 TDL HM23 TDL:3HM2 TDL H4'1 TDL:1H4* TDL H4'2 TDL:2H4* TDL H71 TDM:1H7 TDM H72 TDM:2H7 TDM H61 TDM:1H6 TDM H62 TDM:2H6 TDM H291 TDM:1H29 TDM H292 TDM:2H29 TDM H293 TDM:3H29 TDM HM41 TDM:1HM4 TDM HM42 TDM:2HM4 TDM HM43 TDM:3HM4 TDM H7'1 TDM:1H7* TDM H7'2 TDM:2H7* TDM H4'1 TDM:1H4* TDM H4'2 TDM:2H4* TDM HM21 TDM:1HM2 TDM HM22 TDM:2HM2 TDM HM23 TDM:3HM2 TDM H6' TDM: H6* TDM H3PO TDO:OH3P TDO H6C1 TDO:1H6C TDO H6C2 TDO:2H6C TDO H6C3 TDO:3H6C TDO H2PO TDO:OH2P TDO H5'1 TDO:1H5' TDO H5'2 TDO:2H5' TDO H2'1 TDO:1H2' TDO H2'2 TDO:2H2' TDO H5A1 TDO:1H5A TDO H5A2 TDO:2H5A TDO H5A3 TDO:3H5A TDO H2A1 TDP:1H2A TDP H2A2 TDP:2H2A TDP H2A3 TDP:3H2A TDP H4'1 TDP:1H4* TDP H4'2 TDP:2H4* TDP H6' TDP: H6* TDP H351 TDP:1H35 TDP H352 TDP:2H35 TDP H4A1 TDP:1H4A TDP H4A2 TDP:2H4A TDP H4A3 TDP:3H4A TDP H5A1 TDP:1H5A TDP H5A2 TDP:2H5A TDP H5B1 TDP:1H5B TDP H5B2 TDP:2H5B TDP H5M1 TDR:1H5M TDR H5M2 TDR:2H5M TDR H5M3 TDR:3H5M TDR HBC1 TDS:1HBC TDS HBC2 TDS:2HBC TDS HBC3 TDS:3HBC TDS HBB1 TDS:1HBB TDS HBB2 TDS:2HBB TDS HBA1 TDS:1HBA TDS HBA2 TDS:2HBA TDS HAZ1 TDS:1HAZ TDS HAZ2 TDS:2HAZ TDS HAY1 TDS:1HAY TDS HAY2 TDS:2HAY TDS HAX1 TDS:1HAX TDS HAX2 TDS:2HAX TDS HAW1 TDS:1HAW TDS HAW2 TDS:2HAW TDS HAV1 TDS:1HAV TDS HAV2 TDS:2HAV TDS HAU1 TDS:1HAU TDS HAU2 TDS:2HAU TDS HAT1 TDS:1HAT TDS HAT2 TDS:2HAT TDS HAS1 TDS:1HAS TDS HAS2 TDS:2HAS TDS HAR1 TDS:1HAR TDS HAR2 TDS:2HAR TDS HAQ1 TDS:1HAQ TDS HAQ2 TDS:2HAQ TDS HAI1 TDS:1HAI TDS HAI2 TDS:2HAI TDS HAI3 TDS:3HAI TDS HAJ1 TDS:1HAJ TDS HAJ2 TDS:2HAJ TDS HAJ3 TDS:3HAJ TDS HAA1 TDS:1HAA TDS HAA2 TDS:2HAA TDS HAA3 TDS:3HAA TDS H5M1 TDT:1H5M TDT H5M2 TDT:2H5M TDT H7N1 TDT:1H7N TDT H7N2 TDT:2H7N TDT H5B1 TDT:1H5B TDT H5B2 TDT:2H5B TDT H6A1 TDT:1H6A TDT H6A2 TDT:2H6A TDT H21 TDT:1H2 TDT H22 TDT:2H2 TDT H31 TDT:1H3 TDT H32 TDT:2H3 TDT H41 TDT:1H4 TDT H42 TDT:2H4 TDT H51 TDT:1H5 TDT H52 TDT:2H5 TDT H61 TDT:1H6 TDT H62 TDT:2H6 TDT H71 TDT:1H7 TDT H72 TDT:2H7 TDT H5M1 TDX:1H5M TDX H5M2 TDX:2H5M TDX H5M3 TDX:3H5M TDX H1B TDX: H1* TDX H2'1 TDX:1H2* TDX H2'2 TDX:2H2* TDX H3B TDX: H3* TDX HO3' TDX:*HO3 TDX H4B TDX: H4* TDX H5'1 TDX:1H5* TDX H5'2 TDX:2H5* TDX H5B TDX:1H5' TDX H5D TDX:2H5' TDX HO2' TDX:'HO2 TDX HO3A TDX:'HO3 TDX HO4' TDX:'HO4 TDX HAM1 TDZ:1HAM TDZ HAM2 TDZ:2HAM TDZ HAL1 TDZ:1HAL TDZ HAL2 TDZ:2HAL TDZ HAC1 TDZ:1HAC TDZ HAC2 TDZ:2HAC TDZ HAC3 TDZ:3HAC TDZ HAA1 TDZ:1HAA TDZ HAA2 TDZ:2HAA TDZ HAA3 TDZ:3HAA TDZ HAB1 TDZ:1HAB TDZ HAB2 TDZ:2HAB TDZ HAB3 TDZ:3HAB TDZ HAD1 TDZ:1HAD TDZ HAD2 TDZ:2HAD TDZ HAD3 TDZ:3HAD TDZ HAN1 TDZ:1HAN TDZ HAN2 TDZ:2HAN TDZ HAO1 TDZ:1HAO TDZ HAO2 TDZ:2HAO TDZ H111 TEA:1H11 TEA H112 TEA:2H11 TEA H121 TEA:1H12 TEA H122 TEA:2H12 TEA H123 TEA:3H12 TEA H211 TEA:1H21 TEA H212 TEA:2H21 TEA H221 TEA:1H22 TEA H222 TEA:2H22 TEA H223 TEA:3H22 TEA H311 TEA:1H31 TEA H312 TEA:2H31 TEA H321 TEA:1H32 TEA H322 TEA:2H32 TEA H323 TEA:3H32 TEA HN1 TEE:1HN TEE HN2 TEE:2HN TEE H151 TEI:1H15 TEI H152 TEI:2H15 TEI H171 TEI:1H17 TEI H172 TEI:2H17 TEI H173 TEI:3H17 TEI H181 TEI:1H18 TEI H182 TEI:2H18 TEI H183 TEI:3H18 TEI H191 TEI:1H19 TEI H192 TEI:2H19 TEI H193 TEI:3H19 TEI H11 TEL:1H1 TEL H12 TEL:2H1 TEL H13 TEL:3H1 TEL H81 TEL:1H8 TEL H82 TEL:2H8 TEL H111 TEL:1H11 TEL H112 TEL:2H11 TEL H121 TEL:1H12 TEL H122 TEL:2H12 TEL H123 TEL:3H12 TEL H141 TEL:1H14 TEL H142 TEL:2H14 TEL H143 TEL:3H14 TEL H171 TEL:1H17 TEL H172 TEL:2H17 TEL H221 TEL:1H22 TEL H222 TEL:2H22 TEL H231 TEL:1H23 TEL H232 TEL:2H23 TEL H233 TEL:3H23 TEL H241 TEL:1H24 TEL H242 TEL:2H24 TEL H251 TEL:1H25 TEL H252 TEL:2H25 TEL H253 TEL:3H25 TEL H271 TEL:1H27 TEL H272 TEL:2H27 TEL H331 TEL:1H33 TEL H332 TEL:2H33 TEL H333 TEL:3H33 TEL H351 TEL:1H35 TEL H352 TEL:2H35 TEL H353 TEL:3H35 TEL H381 TEL:1H38 TEL H382 TEL:2H38 TEL H383 TEL:3H38 TEL H541 TEL:1H54 TEL H542 TEL:2H54 TEL H551 TEL:1H55 TEL H552 TEL:2H55 TEL H553 TEL:3H55 TEL H571 TEL:1H57 TEL H572 TEL:2H57 TEL H573 TEL:3H57 TEL H581 TEL:1H58 TEL H582 TEL:2H58 TEL H583 TEL:3H58 TEL H31 TEM:1H3 TEM H32 TEM:2H3 TEM H91 TEM:1H9 TEM H92 TEM:2H9 TEM HOB4 TEO:4HOB TEO H11 TEP:1H1 TEP H12 TEP:2H1 TEP H13 TEP:3H1 TEP H31 TEP:1H3 TEP H32 TEP:2H3 TEP H33 TEP:3H3 TEP HN11 TER:1HN1 TER HN12 TER:2HN1 TER H21 TER:1H2 TER H22 TER:2H2 TER H31 TER:1H3 TER H32 TER:2H3 TER H41 TER:1H4 TER H42 TER:2H4 TER H61 TER:1H6 TER H62 TER:2H6 TER H71 TER:1H7 TER H72 TER:2H7 TER H81 TER:1H8 TER H82 TER:2H8 TER H101 TER:1H10 TER H102 TER:2H10 TER H111 TER:1H11 TER H112 TER:2H11 TER H121 TER:1H12 TER H122 TER:2H12 TER H131 TER:1H13 TER H132 TER:2H13 TER HN41 TER:1HN4 TER HN42 TER:2HN4 TER H11 TES:1H1 TES H12 TES:2H1 TES H21 TES:1H2 TES H22 TES:2H2 TES H61 TES:1H6 TES H62 TES:2H6 TES H71 TES:1H7 TES H72 TES:2H7 TES H111 TES:1H11 TES H112 TES:2H11 TES H121 TES:1H12 TES H122 TES:2H12 TES H151 TES:1H15 TES H152 TES:2H15 TES H161 TES:1H16 TES H162 TES:2H16 TES H181 TES:1H18 TES H182 TES:2H18 TES H183 TES:3H18 TES H191 TES:1H19 TES H192 TES:2H19 TES H193 TES:3H19 TES H121 TET:1H12 TET H122 TET:2H12 TET H171 TET:1H17 TET H172 TET:2H17 TET H81 TET:1H8 TET H82 TET:2H8 TET H83 TET:3H8 TET H191 TET:1H19 TET H192 TET:2H19 TET H3C1 TF1:1H3C TF1 H3C2 TF1:2H3C TF1 H5C1 TF1:1H5C TF1 H5C2 TF1:2H5C TF1 H6C1 TF1:1H6C TF1 H6C2 TF1:2H6C TF1 H6C3 TF1:3H6C TF1 H9C1 TF1:1H9C TF1 H9C2 TF1:2H9C TF1 H9C3 TF1:3H9C TF1 H101 TF1:1H10 TF1 H102 TF1:2H10 TF1 H103 TF1:3H10 TF1 H7C1 TF2:1H7C TF2 H7C2 TF2:2H7C TF2 H9C1 TF2:1H9C TF2 H9C2 TF2:2H9C TF2 H9C3 TF2:3H9C TF2 H121 TF2:1H12 TF2 H122 TF2:2H12 TF2 H123 TF2:3H12 TF2 H191 TF2:1H19 TF2 H192 TF2:2H19 TF2 H193 TF2:3H19 TF2 H6C1 TF3:1H6C TF3 H6C2 TF3:2H6C TF3 H9C1 TF3:1H9C TF3 H9C2 TF3:2H9C TF3 H161 TF3:1H16 TF3 H162 TF3:2H16 TF3 H181 TF3:1H18 TF3 H182 TF3:2H18 TF3 H191 TF3:1H19 TF3 H192 TF3:2H19 TF3 H193 TF3:3H19 TF3 H201 TF3:1H20 TF3 H202 TF3:2H20 TF3 H203 TF3:3H20 TF3 H2N1 TF3:1H2N TF3 H2N2 TF3:2H2N TF3 H171 TF5:1H17 TF5 H172 TF5:2H17 TF5 H161 TF5:1H16 TF5 H162 TF5:2H16 TF5 HB1 TFB:1HB TFB HB2 TFB:2HB TFB HG1 TFB:1HG TFB HG2 TFB:2HG TFB HD1 TFB:1HD TFB HD2 TFB:2HD TFB H11 TFC:1H1 TFC H12 TFC:2H1 TFC H13 TFC:3H1 TFC H21 TFC:1H2 TFC H22 TFC:2H2 TFC H31 TFC:1H3 TFC H32 TFC:2H3 TFC H41 TFC:1H4 TFC H42 TFC:2H4 TFC H51 TFC:1H5 TFC H52 TFC:2H5 TFC H61 TFC:1H6 TFC H62 TFC:2H6 TFC H71 TFC:1H7 TFC H72 TFC:2H7 TFC H81 TFC:1H8 TFC H82 TFC:2H8 TFC H91 TFC:1H9 TFC H92 TFC:2H9 TFC HOP2 TFE:2HOP TFE H5' TFE:1H5* TFE H5'' TFE:2H5* TFE H4' TFE: H4* TFE H1' TFE: H1* TFE H71 TFE:1H5M TFE H72 TFE:2H5M TFE H73 TFE:3H5M TFE H2' TFE: H2* TFE HB'1 TFE:1HB' TFE HB'2 TFE:2HB' TFE H3' TFE: H3* TFE HO3' TFE:H3T TFE HOP3 TFE:3HOP TFE H51 TFI:1H5 TFI H52 TFI:2H5 TFI H53 TFI:3H5 TFI H61 TFI:1H6 TFI H62 TFI:2H6 TFI H63 TFI:3H6 TFI H81 TFI:1H8 TFI H82 TFI:2H8 TFI H191 TFI:1H19 TFI H192 TFI:2H19 TFI H193 TFI:3H19 TFI HN51 TFI:1HN5 TFI HN52 TFI:2HN5 TFI H51 TFK:1H5 TFK H52 TFK:2H5 TFK H53 TFK:3H5 TFK H61 TFK:1H6 TFK H62 TFK:2H6 TFK H63 TFK:3H6 TFK H81 TFK:1H8 TFK H82 TFK:2H8 TFK H201 TFK:1H20 TFK H202 TFK:2H20 TFK H203 TFK:3H20 TFK H151 TFL:1H15 TFL H152 TFL:2H15 TFL H153 TFL:3H15 TFL H161 TFL:1H16 TFL H162 TFL:2H16 TFL H163 TFL:3H16 TFL H171 TFL:1H17 TFL H172 TFL:2H17 TFL H173 TFL:3H17 TFL HN11 TFM:1HN1 TFM HN12 TFM:2HN1 TFM H21 TFM:1H2 TFM H31 TFM:1H3 TFM H51 TFM:1H5 TFM H61 TFM:1H6 TFM H1'1 TFM:1H1' TFM H1'2 TFM:2H1' TFM H2'1 TFM:1H2' TFM H2'2 TFM:2H2' TFM H2'3 TFM:3H2' TFM HOP2 TFO:2HOP TFO H9'1 TFO:1H9' TFO H9'2 TFO:2H9' TFO H8'1 TFO:1H8' TFO H8'2 TFO:2H8' TFO H8'3 TFO:3H8' TFO H6'1 TFO:1H6' TFO H6'2 TFO:2H6' TFO HN61 TFO:1HN6 TFO HN62 TFO:2HN6 TFO HOP3 TFO:3HOP TFO H131 TFP:1H13 TFP H132 TFP:2H13 TFP H141 TFP:1H14 TFP H142 TFP:2H14 TFP H151 TFP:1H15 TFP H152 TFP:2H15 TFP H161 TFP:1H16 TFP H162 TFP:2H16 TFP H171 TFP:1H17 TFP H172 TFP:2H17 TFP H181 TFP:1H18 TFP H182 TFP:2H18 TFP H191 TFP:1H19 TFP H192 TFP:2H19 TFP H201 TFP:1H20 TFP H202 TFP:2H20 TFP H203 TFP:3H20 TFP H131 TFQ:1H13 TFQ H132 TFQ:2H13 TFQ H71 TFQ:1H7 TFQ H72 TFQ:2H7 TFQ HN91 TFQ:1HN9 TFQ HN92 TFQ:2HN9 TFQ HOP2 TFT:2HOP TFT H71 TFT:1H5M TFT H72 TFT:2H5M TFT H73 TFT:3H5M TFT H2TC TFT:CH2T TFT H4T1 TFT:1H4T TFT H4T2 TFT:2H4T TFT H1TC TFT:CH1T TFT H3TC TFT:CH3T TFT HOP3 TFT:3HOP TFT H341 TG1:1H34 TG1 H342 TG1:2H34 TG1 H343 TG1:3H34 TG1 HC91 TG1:1HC9 TG1 HC92 TG1:2HC9 TG1 H141 TG1:1H14 TG1 H142 TG1:2H14 TG1 H151 TG1:1H15 TG1 H152 TG1:2H15 TG1 H161 TG1:1H16 TG1 H162 TG1:2H16 TG1 H171 TG1:1H17 TG1 H172 TG1:2H17 TG1 H181 TG1:1H18 TG1 H182 TG1:2H18 TG1 H191 TG1:1H19 TG1 H192 TG1:2H19 TG1 H201 TG1:1H20 TG1 H202 TG1:2H20 TG1 H203 TG1:3H20 TG1 H231 TG1:1H23 TG1 H232 TG1:2H23 TG1 H233 TG1:3H23 TG1 H251 TG1:1H25 TG1 H252 TG1:2H25 TG1 H253 TG1:3H25 TG1 H261 TG1:1H26 TG1 H262 TG1:2H26 TG1 H263 TG1:3H26 TG1 H311 TG1:1H31 TG1 H312 TG1:2H31 TG1 H313 TG1:3H31 TG1 H331 TG1:1H33 TG1 H332 TG1:2H33 TG1 H333 TG1:3H33 TG1 H281 TG1:1H28 TG1 H282 TG1:2H28 TG1 H291 TG1:1H29 TG1 H292 TG1:2H29 TG1 H301 TG1:1H30 TG1 H302 TG1:2H30 TG1 H303 TG1:3H30 TG1 HA21 TGF:1HA2 TGF HA22 TGF:2HA2 TGF H71 TGF:1H7 TGF H72 TGF:2H7 TGF H91 TGF:1H9 TGF H92 TGF:2H9 TGF HB11 TGF:1HB1 TGF HB12 TGF:2HB1 TGF HG11 TGF:1HG1 TGF HG12 TGF:2HG1 TGF HB21 TGF:1HB2 TGF HB22 TGF:2HB2 TGF HG21 TGF:1HG2 TGF HG22 TGF:2HG2 TGF HB31 TGF:1HB3 TGF HB32 TGF:2HB3 TGF HG31 TGF:1HG3 TGF HG32 TGF:2HG3 TGF H23E TGF:EH23 TGF HN11 TGG:1HN1 TGG HN12 TGG:2HN1 TGG HB11 TGG:1HB1 TGG HB12 TGG:2HB1 TGG HG11 TGG:1HG1 TGG HG12 TGG:2HG1 TGG HA31 TGG:1HA3 TGG HA32 TGG:2HA3 TGG HB21 TGG:1HB2 TGG HB22 TGG:2HB2 TGG HF21 TGG:1HF2 TGG HF22 TGG:2HF2 TGG HA21 TGL:1HA2 TGL HA22 TGL:2HA2 TGL HA31 TGL:1HA3 TGL HA32 TGL:2HA3 TGL HA41 TGL:1HA4 TGL HA42 TGL:2HA4 TGL HA51 TGL:1HA5 TGL HA52 TGL:2HA5 TGL HA61 TGL:1HA6 TGL HA62 TGL:2HA6 TGL HA71 TGL:1HA7 TGL HA72 TGL:2HA7 TGL HA81 TGL:1HA8 TGL HA82 TGL:2HA8 TGL HA91 TGL:1HA9 TGL HA92 TGL:2HA9 TGL HB21 TGL:1HB2 TGL HB22 TGL:2HB2 TGL HB31 TGL:1HB3 TGL HB32 TGL:2HB3 TGL HB41 TGL:1HB4 TGL HB42 TGL:2HB4 TGL HB51 TGL:1HB5 TGL HB52 TGL:2HB5 TGL HB61 TGL:1HB6 TGL HB62 TGL:2HB6 TGL HB71 TGL:1HB7 TGL HB72 TGL:2HB7 TGL HB81 TGL:1HB8 TGL HB82 TGL:2HB8 TGL HB91 TGL:1HB9 TGL HB92 TGL:2HB9 TGL H101 TGL:1H10 TGL H102 TGL:2H10 TGL H111 TGL:1H11 TGL H112 TGL:2H11 TGL H121 TGL:1H12 TGL H122 TGL:2H12 TGL H131 TGL:1H13 TGL H132 TGL:2H13 TGL H141 TGL:1H14 TGL H142 TGL:2H14 TGL HG11 TGL:1HG1 TGL HG12 TGL:2HG1 TGL HG31 TGL:1HG3 TGL HG32 TGL:2HG3 TGL HC21 TGL:1HC2 TGL HC22 TGL:2HC2 TGL HC31 TGL:1HC3 TGL HC32 TGL:2HC3 TGL HC41 TGL:1HC4 TGL HC42 TGL:2HC4 TGL HC51 TGL:1HC5 TGL HC52 TGL:2HC5 TGL HC61 TGL:1HC6 TGL HC62 TGL:2HC6 TGL HC71 TGL:1HC7 TGL HC72 TGL:2HC7 TGL HC81 TGL:1HC8 TGL HC82 TGL:2HC8 TGL HC91 TGL:1HC9 TGL HC92 TGL:2HC9 TGL H151 TGL:1H15 TGL H152 TGL:2H15 TGL H161 TGL:1H16 TGL H162 TGL:2H16 TGL H171 TGL:1H17 TGL H172 TGL:2H17 TGL H181 TGL:1H18 TGL H182 TGL:2H18 TGL H191 TGL:1H19 TGL H192 TGL:2H19 TGL H201 TGL:1H20 TGL H202 TGL:2H20 TGL H211 TGL:1H21 TGL H212 TGL:2H21 TGL H221 TGL:1H22 TGL H222 TGL:2H22 TGL H231 TGL:1H23 TGL H232 TGL:2H23 TGL H241 TGL:1H24 TGL H242 TGL:2H24 TGL H251 TGL:1H25 TGL H252 TGL:2H25 TGL H261 TGL:1H26 TGL H262 TGL:2H26 TGL H271 TGL:1H27 TGL H272 TGL:2H27 TGL H281 TGL:1H28 TGL H282 TGL:2H28 TGL H283 TGL:3H28 TGL H291 TGL:1H29 TGL H292 TGL:2H29 TGL H301 TGL:1H30 TGL H302 TGL:2H30 TGL H311 TGL:1H31 TGL H312 TGL:2H31 TGL H321 TGL:1H32 TGL H322 TGL:2H32 TGL H323 TGL:3H32 TGL H331 TGL:1H33 TGL H332 TGL:2H33 TGL H341 TGL:1H34 TGL H342 TGL:2H34 TGL H351 TGL:1H35 TGL H352 TGL:2H35 TGL H361 TGL:1H36 TGL H362 TGL:2H36 TGL H363 TGL:3H36 TGL H141 TGN:1H14 TGN H142 TGN:2H14 TGN H143 TGN:3H14 TGN H181 TGN:1H18 TGN H182 TGN:2H18 TGN H211 TGN:1H21 TGN H212 TGN:2H21 TGN H261 TGN:1H26 TGN H262 TGN:2H26 TGN H11A TGN:1H1 TGN H12 TGN:2H1 TGN H13A TGN:3H1 TGN H21 TGP:1H2 TGP H22 TGP:2H2 TGP H2' TGP:1H2* TGP H2'' TGP:2H2* TGP H5' TGP:1H5* TGP H5'' TGP:2H5* TGP H4' TGP: H4* TGP H1' TGP: H1* TGP H3' TGP: H3* TGP HO3' TGP:H3T TGP HOP3 TGP:3HOP TGP HOP2 TGP:2HOP TGP H61 TGT:1H6 TGT H62 TGT:2H6 TGT H111 TGT:1H11 TGT H112 TGT:2H11 TGT H113 TGT:3H11 TGT HN11 TGT:1HN1 TGT HN12 TGT:2HN1 TGT HN21 TGT:1HN2 TGT HN22 TGT:2HN2 TGT H61 TH1:1H6 TH1 H62 TH1:2H6 TH1 H141 TH1:1H14 TH1 H142 TH1:2H14 TH1 H143 TH1:3H14 TH1 H1C1 TH2:1H1C TH2 H1C2 TH2:2H1C TH2 H2C1 TH2:1H2C TH2 H2C2 TH2:2H2C TH2 H6C1 TH2:1H6C TH2 H6C2 TH2:2H6C TH2 H7C1 TH2:1H7C TH2 H7C2 TH2:2H7C TH2 H111 TH2:1H11 TH2 H112 TH2:2H11 TH2 H121 TH2:1H12 TH2 H122 TH2:2H12 TH2 H151 TH2:1H15 TH2 H152 TH2:2H15 TH2 H161 TH2:1H16 TH2 H162 TH2:2H16 TH2 H181 TH2:1H18 TH2 H182 TH2:2H18 TH2 H183 TH2:3H18 TH2 H211 TH2:1H21 TH2 H212 TH2:2H21 TH2 H221 TH2:1H22 TH2 H222 TH2:2H22 TH2 H191 TH2:1H19 TH2 H192 TH2:2H19 TH2 H193 TH2:3H19 TH2 H1C1 TH3:1H1C TH3 H1C2 TH3:2H1C TH3 H4C1 TH3:1H4C TH3 H4C2 TH3:2H4C TH3 H5C1 TH3:1H5C TH3 H5C2 TH3:2H5C TH3 H101 TH3:1H10 TH3 H102 TH3:2H10 TH3 H111 TH3:1H11 TH3 H112 TH3:2H11 TH3 H12A TH3:1H12 TH3 H12B TH3:2H12 TH3 H13A TH3:1H13 TH3 H13B TH3:2H13 TH3 H14A TH3:1H14 TH3 H14B TH3:2H14 TH3 H151 TH3:1H15 TH3 H152 TH3:2H15 TH3 H161 TH3:1H16 TH3 H162 TH3:2H16 TH3 H171 TH3:1H17 TH3 H172 TH3:2H17 TH3 H181 TH3:1H18 TH3 H182 TH3:2H18 TH3 H191 TH3:1H19 TH3 H192 TH3:2H19 TH3 H201 TH3:1H20 TH3 H202 TH3:2H20 TH3 H211 TH3:1H21 TH3 H212 TH3:2H21 TH3 H111 THA:1H11 THA H112 THA:2H11 THA H121 THA:1H12 THA H122 THA:2H12 THA H131 THA:1H13 THA H132 THA:2H13 THA H141 THA:1H14 THA H142 THA:2H14 THA HN51 THA:1HN5 THA HN52 THA:2HN5 THA HN21 THB:1HN2 THB HN22 THB:2HN2 THB H71 THB:1H7 THB H72 THB:2H7 THB H111 THB:1H11 THB H112 THB:2H11 THB H113 THB:3H11 THB H THC: HN THC HM1 THC:1HM THC HM2 THC:2HM THC HM3 THC:3HM THC HG21 THC:1HG2 THC HG22 THC:2HG2 THC HG23 THC:3HG2 THC HM21 THD:1HM2 THD HM22 THD:2HM2 THD HM23 THD:3HM2 THD H4'1 THD:1H4' THD H4'2 THD:2H4' THD H7'1 THD:1H7' THD H7'2 THD:2H7' THD HM41 THD:1HM4 THD HM42 THD:2HM4 THD HM43 THD:3HM4 THD H6C1 THD:1H6C THD H6C2 THD:2H6C THD H7C1 THD:1H7C THD H7C2 THD:2H7C THD H9C1 THD:1H9C THD H9C2 THD:2H9C THD H11 THE:1H1 THE H12 THE:2H1 THE HN21 THF:1HN2 THF HN22 THF:2HN2 THF H91 THF:1H9 THF H92 THF:2H9 THF HB1 THF:1HB THF HB2 THF:2HB THF HG1 THF:1HG THF HG2 THF:2HG THF HOE2 THF:2HOE THF HCP1 THF:1HCP THF HCP2 THF:2HCP THF HC71 THG:1HC7 THG HC72 THG:2HC7 THG HC91 THG:1HC9 THG HC92 THG:2HC9 THG HC61 THG:1HC6 THG HCB1 THG:1HCB THG HCB2 THG:2HCB THG HCG1 THG:1HCG THG HCG2 THG:2HCG THG HN21 THG:1HN2 THG HN22 THG:2HN2 THG HG1 THH:1HG THH HG2 THH:2HG THH HB1 THH:1HB THH HB2 THH:2HB THH H91 THH:1H9 THH H92 THH:2H9 THH H71 THH:1H7 THH H72 THH:2H7 THH H111 THH:1H11 THH H112 THH:2H11 THH H113 THH:3H11 THH HA21 THH:1HA2 THH HA22 THH:2HA2 THH H21 THI:1H2 THI H22 THI:2H2 THI H31 THI:1H3 THI H32 THI:2H3 THI H21A THK:1H2 THK H22A THK:2H2 THK H31 THK:1H3 THK H32 THK:2H3 THK H51 THK:1H5 THK H52 THK:2H5 THK H61 THK:1H6 THK H62 THK:2H6 THK H71 THK:1H7 THK H72 THK:2H7 THK H81 THK:1H8 THK H82 THK:2H8 THK H91 THK:1H9 THK H92 THK:2H9 THK H521 THK:1H52 THK H522 THK:2H52 THK H551 THK:1H55 THK H552 THK:2H55 THK H71 THL:1H7 THL H72 THL:2H7 THL H91 THL:1H9 THL H92 THL:2H9 THL HA21 THL:1HA2 THL HA22 THL:2HA2 THL HB1 THL:1HB THL HB2 THL:2HB THL HG1 THL:1HG THL HG2 THL:2HG THL HO5' THM:*HO5 THM H5'1 THM:1H5* THM H5'2 THM:2H5* THM H4' THM: H4* THM H3' THM: H3* THM HO3' THM:*HO3 THM H2'1 THM:1H2* THM H2'2 THM:2H2* THM H1' THM: H1* THM HM51 THM:1HM5 THM HM52 THM:2HM5 THM HM53 THM:3HM5 THM H21 THN:1H2 THN H22 THN:2H2 THN H3'1 THN:1H3' THN H3'2 THN:2H3' THN H131 THN:1H13 THN H132 THN:2H13 THN H THO:1HN THO H2 THO:2HN THO HG21 THO:1HG2 THO HG22 THO:2HG2 THO HG23 THO:3HG2 THO HC1 THO:1H THO HC2 THO:2H THO HOP5 THP:5HOP THP HOP6 THP:6HOP THP HOP2 THP:2HOP THP HOP3 THP:3HOP THP H5'1 THP:1H5* THP H5'2 THP:2H5* THP H4' THP: H4* THP H3' THP: H3* THP H2'1 THP:1H2* THP H2'2 THP:2H2* THP H1' THP: H1* THP H51 THP:1H5 THP H52 THP:2H5 THP H53 THP:3H5 THP H11 THQ:1H1 THQ HM31 THQ:1HM3 THQ HM32 THQ:2HM3 THQ HM33 THQ:3HM3 THQ HC41 THQ:1HC4 THQ HC42 THQ:2HC4 THQ HC51 THQ:1HC5 THQ HC52 THQ:2HC5 THQ H91 THQ:1H9 THQ H101 THQ:1H10 THQ H2 THR: HN2 THR HG21 THR:1HG2 THR HG22 THR:2HG2 THR HG23 THR:3HG2 THR HSP2 THS:2HSP THS HSP3 THS:3HSP THS H5'1 THS:1H5* THS H5'2 THS:2H5* THS H4' THS: H4* THS H3' THS: H3* THS HO3' THS:*HO3 THS H2'1 THS:1H2* THS H2'2 THS:2H2* THS H1' THS: H1* THS HM51 THS:1HM5 THS HM52 THS:2HM5 THS HM53 THS:3HM5 THS HC11 THT:1HC1 THT HC12 THT:2HC1 THT HC13 THT:3HC1 THT HN31 THT:1HN3 THT HC41 THT:1HC4 THT HC42 THT:2HC4 THT HC51 THT:1HC5 THT HC52 THT:2HC5 THT HC81 THT:1HC8 THT HC82 THT:2HC8 THT HC91 THT:1HC9 THT HC92 THT:2HC9 THT H101 THT:1H10 THT H102 THT:2H10 THT H111 THT:1H11 THT H112 THT:2H11 THT H121 THT:1H12 THT H122 THT:2H12 THT H131 THT:1H13 THT H132 THT:2H13 THT H141 THT:1H14 THT H142 THT:2H14 THT H151 THT:1H15 THT H152 THT:2H15 THT H161 THT:1H16 THT H162 THT:2H16 THT H171 THT:1H17 THT H172 THT:2H17 THT H181 THT:1H18 THT H182 THT:2H18 THT H191 THT:1H19 THT H192 THT:2H19 THT H201 THT:1H20 THT H202 THT:2H20 THT H211 THT:1H21 THT H212 THT:2H21 THT H221 THT:1H22 THT H222 THT:2H22 THT H223 THT:3H22 THT H51 THU:1H5 THU H52 THU:2H5 THU H61 THU:1H6 THU H62 THU:2H6 THU H1' THU: H1* THU H2'1 THU:1H2* THU H2'2 THU:2H2* THU H3' THU: H3* THU HO3' THU:*HO3 THU H4' THU: H4* THU H5'1 THU:1H5* THU H5'2 THU:2H5* THU HO5' THU:*HO5 THU H5B1 THV:1H5B THV H5B2 THV:2H5B THV H5A1 THV:1H5A THV H5A2 THV:2H5A THV H4A1 THV:1H4A THV H4A2 THV:2H4A THV H4A3 THV:3H4A THV H101 THV:1H10 THV H102 THV:2H10 THV H103 THV:3H10 THV H111 THV:1H11 THV H112 THV:2H11 THV H113 THV:3H11 THV H351 THV:1H35 THV H352 THV:2H35 THV H6' THV: H6* THV H2A1 THV:1H2A THV H2A2 THV:2H2A THV H2A3 THV:3H2A THV H4'1 THV:1H4* THV H4'2 THV:2H4* THV H5A1 THW:1H5A THW H5A2 THW:2H5A THW H5B1 THW:1H5B THW H5B2 THW:2H5B THW H4A1 THW:1H4A THW H4A2 THW:2H4A THW H4A3 THW:3H4A THW H351 THW:1H35 THW H352 THW:2H35 THW H6' THW: H6* THW H2A1 THW:1H2A THW H2A2 THW:2H2A THW H2A3 THW:3H2A THW H4'1 THW:1H4* THW H4'2 THW:2H4* THW H1' THX: H1* THX H101 THX:1H10 THX H102 THX:2H10 THX H111 THX:1H11 THX H112 THX:2H11 THX H121 THX:1H12 THX H122 THX:2H12 THX H2'1 THX:1H2* THX H2'2 THX:2H2* THX H221 THX:1H22 THX H222 THX:2H22 THX H231 THX:1H23 THX H232 THX:2H23 THX H3' THX: H3* THX H331 THX:1H33 THX H332 THX:2H33 THX H341 THX:1H34 THX H342 THX:2H34 THX H4' THX: H4* THX H441 THX:1H44 THX H442 THX:2H44 THX H451 THX:1H45 THX H452 THX:2H45 THX H5'1 THX:1H5* THX H5'2 THX:2H5* THX H5M1 THX:1H5M THX H5M2 THX:2H5M THX H5M3 THX:3H5M THX H71 THX:1H7 THX H72 THX:2H7 THX H81 THX:1H8 THX H82 THX:2H8 THX H91 THX:1H9 THX H92 THX:2H9 THX H151 THX:1H15 THX H152 THX:2H15 THX HOP2 THX:2HOP THX HO'3 THX:3HO* THX H5B1 THY:1H5B THY H5B2 THY:2H5B THY H5A1 THY:1H5A THY H5A2 THY:2H5A THY H4A1 THY:1H4A THY H4A2 THY:2H4A THY H4A3 THY:3H4A THY H111 THY:1H11 THY H112 THY:2H11 THY H113 THY:3H11 THY H101 THY:1H10 THY H102 THY:2H10 THY H121 THY:1H12 THY H122 THY:2H12 THY H123 THY:3H12 THY H351 THY:1H35 THY H352 THY:2H35 THY H6' THY: H6* THY H2A1 THY:1H2A THY H2A2 THY:2H2A THY H2A3 THY:3H2A THY H4'1 THY:1H4* THY H4'2 THY:2H4* THY HB11 TI1:1HB1 TI1 HB12 TI1:2HB1 TI1 HG11 TI1:1HG1 TI1 HG12 TI1:2HG1 TI1 HD11 TI1:1HD1 TI1 HD12 TI1:2HD1 TI1 HE11 TI1:1HE1 TI1 HE12 TI1:2HE1 TI1 HF11 TI1:1HF1 TI1 HF12 TI1:2HF1 TI1 HF13 TI1:3HF1 TI1 HB21 TI1:1HB2 TI1 HB22 TI1:2HB2 TI1 HB31 TI1:1HB3 TI1 HB32 TI1:2HB3 TI1 HB33 TI1:3HB3 TI1 HB11 TI2:1HB1 TI2 HB12 TI2:2HB1 TI2 HB21 TI2:1HB2 TI2 HB22 TI2:2HB2 TI2 HB31 TI2:1HB3 TI2 HB32 TI2:2HB3 TI2 HB11 TI3:1HB1 TI3 HB12 TI3:2HB1 TI3 HA21 TI3:1HA2 TI3 HA22 TI3:2HA2 TI3 HB31 TI3:1HB3 TI3 HB32 TI3:2HB3 TI3 HG31 TI3:1HG3 TI3 HG32 TI3:2HG3 TI3 HN61 TIA:1HN6 TIA HN62 TIA:2HN6 TIA H1' TIA: H1* TIA H2' TIA: H2* TIA HO2' TIA:*HO2 TIA H3' TIA: H3* TIA HO3' TIA:*HO3 TIA H4' TIA: H4* TIA H5'1 TIA:1H5* TIA H5'2 TIA:2H5* TIA H5'3 TIA:3H5* TIA H21 TIB:1H2 TIB H22 TIB:2H2 TIB H51 TIB:1H5 TIB H52 TIB:2H5 TIB H141 TIB:1H14 TIB H142 TIB:2H14 TIB H143 TIB:3H14 TIB H151 TIB:1H15 TIB H152 TIB:2H15 TIB H181 TIB:1H18 TIB H182 TIB:2H18 TIB H183 TIB:3H18 TIB H191 TIB:1H19 TIB H192 TIB:2H19 TIB H193 TIB:3H19 TIB H TIH:1HN TIH H2 TIH:2HN TIH HB2 TIH:1HB TIH HB3 TIH:2HB TIH HC11 TIN:1HC1 TIN HC12 TIN:2HC1 TIN HC21 TIN:1HC2 TIN HC22 TIN:2HC2 TIN HC41 TIN:1HC4 TIN HC42 TIN:2HC4 TIN HC51 TIN:1HC5 TIN HC52 TIN:2HC5 TIN HC61 TIN:1HC6 TIN HC62 TIN:2HC6 TIN H171 TIN:1H17 TIN H172 TIN:2H17 TIN H191 TIN:1H19 TIN H192 TIN:2H19 TIN H251 TIN:1H25 TIN H252 TIN:2H25 TIN H261 TIN:1H26 TIN H262 TIN:2H26 TIN H291 TIN:1H29 TIN H292 TIN:2H29 TIN H321 TIN:1H32 TIN H322 TIN:2H32 TIN H323 TIN:3H32 TIN H381 TIN:1H38 TIN H382 TIN:2H38 TIN H741 TIN:1H74 TIN H742 TIN:2H74 TIN H761 TIN:1H76 TIN H762 TIN:2H76 TIN H821 TIN:1H82 TIN H822 TIN:2H82 TIN H823 TIN:3H82 TIN HC71 TIN:1HC7 TIN HC72 TIN:2HC7 TIN HC73 TIN:3HC7 TIN HB11 TIO:1HB1 TIO HB12 TIO:2HB1 TIO HA11 TIO:1HA1 TIO HB21 TIO:1HB2 TIO HB22 TIO:2HB2 TIO HA21 TIO:1HA2 TIO HA22 TIO:2HA2 TIO HOH1 TIO:1HOH TIO H211 TIT:1H21 TIT H212 TIT:2H21 TIT H201 TIT:1H20 TIT H202 TIT:2H20 TIT H061 TIT:1H06 TIT H062 TIT:2H06 TIT H011 TIT:1H01 TIT H012 TIT:2H01 TIT H291 TIT:1H29 TIT H292 TIT:2H29 TIT H311 TIT:1H31 TIT H312 TIT:2H31 TIT H313 TIT:3H31 TIT H321 TIT:1H32 TIT H322 TIT:2H32 TIT H323 TIT:3H32 TIT H281 TIT:1H28 TIT H282 TIT:2H28 TIT H283 TIT:3H28 TIT H181 TIT:1H18 TIT H182 TIT:2H18 TIT H183 TIT:3H18 TIT H191 TIT:1H19 TIT H192 TIT:2H19 TIT H193 TIT:3H19 TIT HO2' TIZ:HO2* TIZ H2' TIZ: H2* TIZ H3' TIZ: H3* TIZ HO3' TIZ:HO3* TIZ H4' TIZ: H4* TIZ H5'1 TIZ:1H5* TIZ H5'2 TIZ:2H5* TIZ HO5' TIZ:HO5* TIZ H1' TIZ: H1* TIZ H1A1 TIZ:1H1A TIZ H1A2 TIZ:2H1A TIZ HXT1 TK4:1HXT TK4 H221 TK4:1H22 TK4 H222 TK4:2H22 TK4 H223 TK4:3H22 TK4 HXT2 TK4:2HXT TK4 H1 TKL:1H TKL H2 TKL:2H TKL HB1 TKL:1HB TKL HB2 TKL:2HB TKL HD11 TKL:1HD1 TKL HD12 TKL:2HD1 TKL HD13 TKL:3HD1 TKL HD21 TKL:1HD2 TKL HD22 TKL:2HD2 TKL HD23 TKL:3HD2 TKL HN1 TKL:1HN TKL HN2 TKL:2HN TKL HI1 TKL:1HI TKL HI2 TKL:2HI TKL HJ1 TKL:1HJ TKL HJ2 TKL:2HJ TKL HK1 TKL:1HK TKL HK2 TKL:2HK TKL HNZ1 TKL:1HNZ TKL HNZ2 TKL:2HNZ TKL HN21 TL1:1HN2 TL1 HN22 TL1:2HN2 TL1 H81 TL1:1H8 TL1 H82 TL1:2H8 TL1 HN41 TL1:1HN4 TL1 HN42 TL1:2HN4 TL1 H181 TL1:1H18 TL1 H182 TL1:2H18 TL1 H101 TL2:1H10 TL2 H102 TL2:2H10 TL2 H171 TL2:1H17 TL2 H172 TL2:2H17 TL2 H231 TL2:1H23 TL2 H232 TL2:2H23 TL2 H271 TL2:1H27 TL2 H272 TL2:2H27 TL2 HN21 TL3:1HN2 TL3 HN22 TL3:2HN2 TL3 H71 TL3:1H7 TL3 H72 TL3:2H7 TL3 HN41 TL3:1HN4 TL3 HN42 TL3:2HN4 TL3 H171 TL3:1H17 TL3 H172 TL3:2H17 TL3 H101 TL4:1H10 TL4 H102 TL4:2H10 TL4 H221 TL4:1H22 TL4 H222 TL4:2H22 TL4 H241 TL4:1H24 TL4 H242 TL4:2H24 TL4 HN31 TL4:1HN3 TL4 HN32 TL4:2HN3 TL4 H91 TL5:1H9 TL5 H92 TL5:2H9 TL5 H93 TL5:3H9 TL5 H101 TL5:1H10 TL5 H102 TL5:2H10 TL5 H103 TL5:3H10 TL5 H111 TL5:1H11 TL5 H112 TL5:2H11 TL5 H113 TL5:3H11 TL5 H121 TL5:1H12 TL5 H122 TL5:2H12 TL5 H123 TL5:3H12 TL5 H101 TL6:1H10 TL6 H102 TL6:2H10 TL6 H103 TL6:3H10 TL6 H91 TL6:1H9 TL6 H92 TL6:2H9 TL6 H93 TL6:3H9 TL6 H81 TL6:1H8 TL6 H82 TL6:2H8 TL6 H5'1 TLB:1H5* TLB H5'2 TLB:2H5* TLB H3' TLB: H3* TLB H2' TLB: H2* TLB H1' TLB: H1* TLB H5M1 TLB:1H5M TLB H5M2 TLB:2H5M TLB H9'1 TLB:1H9* TLB H9'2 TLB:2H9* TLB HOP2 TLC:2HOP TLC HOP3 TLC:3HOP TLC H5' TLC:1H5* TLC H5'' TLC:2H5* TLC H4' TLC: H4* TLC H1' TLC: H1* TLC H71 TLC:1H5M TLC H72 TLC:2H5M TLC H73 TLC:3H5M TLC H2' TLC: H2* TLC H3L1 TLC:1H3L TLC H3L2 TLC:2H3L TLC H2L1 TLC:1H2L TLC H2L2 TLC:2H2L TLC HO3' TLC:H3T TLC H51 TLM:1H5 TLM H71 TLM:1H7 TLM H81 TLM:1H8 TLM H82 TLM:2H8 TLM H91 TLM:1H9 TLM H92 TLM:2H9 TLM H93 TLM:3H9 TLM H101 TLM:1H10 TLM H102 TLM:2H10 TLM H103 TLM:3H10 TLM H111 TLM:1H11 TLM H112 TLM:2H11 TLM H113 TLM:3H11 TLM HOP2 TLN:2HOP TLN HOP3 TLN:3HOP TLN H5' TLN:1H5* TLN H5'' TLN:2H5* TLN H1' TLN: H1* TLN H71 TLN:1H5M TLN H72 TLN:2H5M TLN H73 TLN:3H5M TLN H3' TLN: H3* TLN H2' TLN:1H2* TLN HO3' TLN:H3T TLN H6'1 TLN:1H6* TLN H6'2 TLN:2H6* TLN H21 TLX:1H2 TLX H22 TLX:2H2 TLX H31 TLX:1H3 TLX H32 TLX:2H3 TLX H41 TLX:1H4 TLX H42 TLX:2H4 TLX H61 TLX:1H6 TLX H62 TLX:2H6 TLX H71 TLX:1H7 TLX H72 TLX:2H7 TLX H81 TLX:1H8 TLX H82 TLX:2H8 TLX H1'1 TLX:1H1' TLX H1'2 TLX:2H1' TLX H3'1 TLX:1H3' TLX H3'2 TLX:2H3' TLX H5'1 TLX:1H5' TLX H5'2 TLX:2H5' TLX H5'3 TLX:3H5' TLX HM'1 TLX:1HM' TLX HM'2 TLX:2HM' TLX HM'3 TLX:3HM' TLX HN'1 TLX:1HN' TLX HN'2 TLX:2HN' TLX H611 TM5:1H61 TM5 H612 TM5:2H61 TM5 H621 TM5:1H62 TM5 H622 TM5:2H62 TM5 H631 TM5:1H63 TM5 H632 TM5:2H63 TM5 H641 TM5:1H64 TM5 H642 TM5:2H64 TM5 H651 TM5:1H65 TM5 H652 TM5:2H65 TM5 H621 TM6:1H62 TM6 H622 TM6:2H62 TM6 H631 TM6:1H63 TM6 H632 TM6:2H63 TM6 H641 TM6:1H64 TM6 H642 TM6:2H64 TM6 H651 TM6:1H65 TM6 H652 TM6:2H65 TM6 H661 TM6:1H66 TM6 H662 TM6:2H66 TM6 H671 TM6:1H67 TM6 H672 TM6:2H67 TM6 H11 TMA:1H1 TMA H12 TMA:2H1 TMA H13 TMA:3H1 TMA H21 TMA:1H2 TMA H22 TMA:2H2 TMA H23 TMA:3H2 TMA H31 TMA:1H3 TMA H32 TMA:2H3 TMA H33 TMA:3H3 TMA H41 TMA:1H4 TMA H42 TMA:2H4 TMA H43 TMA:3H4 TMA HCT1 TMB:1HCT TMB HCT2 TMB:2HCT TMB HCT3 TMB:3HCT TMB HCN1 TMB:1HCN TMB HCN2 TMB:2HCN TMB HCN3 TMB:3HCN TMB HD11 TMB:1HD1 TMB HD12 TMB:2HD1 TMB HD13 TMB:3HD1 TMB HD21 TMB:1HD2 TMB HD22 TMB:2HD2 TMB HH1 TMB:1HH TMB HH2 TMB:2HH TMB HH3 TMB:3HH TMB H142 TMC:2H14 TMC H141 TMC:1H14 TMC H152 TMC:2H15 TMC H151 TMC:1H15 TMC H122 TMC:2H12 TMC H121 TMC:1H12 TMC H33 TMC:3H3 TMC H32 TMC:2H3 TMC H31 TMC:1H3 TMC H TMD: HN TMD HN1 TMD:1HN TMD HN2 TMD:2HN TMD HN3 TMD:3HN TMD HD13 TMD:1HD1 TMD HD12 TMD:2HD1 TMD HD21 TMD:1HD2 TMD HD22 TMD:2HD2 TMD HD23 TMD:3HD2 TMD HE2 TMD:1HE TMD HE3 TMD:2HE TMD HZ2 TMD:1HZ TMD HZ3 TMD:2HZ TMD HH1 TMD:1HH TMD HH2 TMD:2HH TMD HH3 TMD:3HH TMD HG2 TMD: HO2 TMD H11 TME:1H1 TME H12 TME:2H1 TME H13 TME:3H1 TME H21 TME:1H2 TME H22 TME:2H2 TME H31 TME:1H3 TME H32 TME:2H3 TME H33 TME:3H3 TME HN21 TMF:1HN2 TMF HN22 TMF:2HN2 TMF H91 TMF:1H9 TMF H92 TMF:2H9 TMF HB1 TMF:1HB TMF HB2 TMF:2HB TMF HG1 TMF:1HG TMF HG2 TMF:2HG TMF HOE2 TMF:2HOE TMF HCP1 TMF:1HCP TMF HCP2 TMF:2HCP TMF H61 TMH:1H6 TMH H62 TMH:2H6 TMH H41 TMH:1H4 TMH H42 TMH:2H4 TMH H81 TMH:1H8 TMH H82 TMH:2H8 TMH H83 TMH:3H8 TMH H91 TMH:1H9 TMH H92 TMH:2H9 TMH H93 TMH:3H9 TMH H101 TMH:1H10 TMH H102 TMH:2H10 TMH H103 TMH:3H10 TMH H11A TMJ:1H1 TMJ H12A TMJ:2H1 TMJ H21 TMJ:1H2 TMJ H22 TMJ:2H2 TMJ H31 TMJ:1H3 TMJ H32 TMJ:2H3 TMJ HM11 TML:1HM1 TML HM12 TML:2HM1 TML HM13 TML:3HM1 TML HM21 TML:1HM2 TML HM22 TML:2HM2 TML HM23 TML:3HM2 TML HM31 TML:1HM3 TML HM32 TML:2HM3 TML HM33 TML:3HM3 TML H11 TMN:1H1 TMN H12 TMN:2H1 TMN H21 TMN:1H2 TMN H22 TMN:2H2 TMN H31 TMN:1H3 TMN H32 TMN:2H3 TMN HN1 TMN:1HN TMN HN2 TMN:2HN TMN HOP2 TMP:2HOP TMP HOP3 TMP:3HOP TMP H5'1 TMP:1H5* TMP H5'2 TMP:2H5* TMP H4' TMP: H4* TMP H3' TMP: H3* TMP HO3' TMP:*HO3 TMP H2'1 TMP:1H2* TMP H2'2 TMP:2H2* TMP H1' TMP: H1* TMP H51 TMP:1H5 TMP H52 TMP:2H5 TMP H53 TMP:3H5 TMP H91 TMQ:1H9 TMQ H92 TMQ:2H9 TMQ H171 TMQ:1H17 TMQ H172 TMQ:2H17 TMQ H173 TMQ:3H17 TMQ H211 TMQ:1H21 TMQ H212 TMQ:2H21 TMQ H213 TMQ:3H21 TMQ H221 TMQ:1H22 TMQ H222 TMQ:2H22 TMQ H223 TMQ:3H22 TMQ H231 TMQ:1H23 TMQ H232 TMQ:2H23 TMQ H233 TMQ:3H23 TMQ HN21 TMQ:1HN2 TMQ HN22 TMQ:2HN2 TMQ HN51 TMQ:1HN5 TMQ HN52 TMQ:2HN5 TMQ H21 TMR:1H2 TMR H22 TMR:2H2 TMR H61 TMR:1H6 TMR H62 TMR:2H6 TMR H63 TMR:3H6 TMR H71 TMR:1H7 TMR H72 TMR:2H7 TMR H73 TMR:3H7 TMR H61 TMT:1H6 TMT H62 TMT:2H6 TMT H63 TMT:3H6 TMT H71 TMT:1H7 TMT H72 TMT:2H7 TMT H73 TMT:3H7 TMT H81 TMT:1H8 TMT H82 TMT:2H8 TMT H83 TMT:3H8 TMT H131 TMU:1H13 TMU H132 TMU:2H13 TMU H211 TMU:1H21 TMU H212 TMU:2H21 TMU H213 TMU:3H21 TMU H61 TMZ:1H6 TMZ H62 TMZ:2H6 TMZ H63 TMZ:3H6 TMZ H71 TMZ:1H7 TMZ H72 TMZ:2H7 TMZ H73 TMZ:3H7 TMZ H81 TMZ:1H8 TMZ H82 TMZ:2H8 TMZ H83 TMZ:3H8 TMZ H121 TN3:1H12 TN3 H122 TN3:2H12 TN3 H123 TN3:3H12 TN3 H51 TN4:1H5 TN4 H52 TN4:2H5 TN4 H61 TN4:1H6 TN4 H62 TN4:2H6 TN4 H111 TN4:1H11 TN4 H112 TN4:2H11 TN4 H311 TN4:1H31 TN4 H312 TN4:2H31 TN4 H313 TN4:3H31 TN4 H231 TN4:1H23 TN4 H232 TN4:2H23 TN4 H2B1 TN4:1H2B TN4 H2B2 TN4:2H2B TN4 H2B3 TN4:3H2B TN4 H2C1 TN4:1H2C TN4 H2C2 TN4:2H2C TN4 H2C3 TN4:3H2C TN4 H2A1 TN4:1H2A TN4 H2A2 TN4:2H2A TN4 H2A3 TN4:3H2A TN4 H441 TN4:1H44 TN4 H442 TN4:2H44 TN4 HN11 TN5:1HN1 TN5 HN12 TN5:2HN1 TN5 H TNB:1HN TNB H2 TNB:2HN TNB HB2 TNB:1HB TNB HB3 TNB:2HB TNB H111 TNC:1H11 TNC H112 TNC:2H11 TNC HN21 TNC:1HN2 TNC HN22 TNC:2HN2 TNC H201 TNC:1H20 TNC H202 TNC:2H20 TNC H203 TNC:3H20 TNC H211 TNC:1H21 TNC H212 TNC:2H21 TNC H213 TNC:3H21 TNC H5'1 TND:1H5* TND H5'2 TND:2H5* TND H4' TND: H4* TND H3' TND: H3* TND HO3' TND:*HO3 TND H2' TND: H2* TND HN2' TND:*HN2 TND H1' TND: H1* TND H21 TND:1H2 TND H22 TND:2H2 TND H31 TND:1H3 TND H32 TND:2H3 TND H41 TND:1H4 TND H42 TND:2H4 TND H2M1 TND:1H2M TND H2M2 TND:2H2M TND H2M3 TND:3H2M TND H1M1 TND:1H1M TND H1M2 TND:2H1M TND H1M3 TND:3H1M TND HO5' TND:*HO5 TND H21 TNE:1H2 TNE H22 TNE:2H2 TNE H41 TNE:1H4 TNE H42 TNE:2H4 TNE H61 TNE:1H6 TNE H62 TNE:2H6 TNE H71 TNE:1H7 TNE H72 TNE:2H7 TNE H91 TNE:1H9 TNE H92 TNE:2H9 TNE H93 TNE:3H9 TNE H131 TNK:1H13 TNK H132 TNK:2H13 TNK H151 TNK:1H15 TNK H152 TNK:2H15 TNK H153 TNK:3H15 TNK H161 TNK:1H16 TNK H162 TNK:2H16 TNK H163 TNK:3H16 TNK H171 TNK:1H17 TNK H172 TNK:2H17 TNK H181 TNK:1H18 TNK H182 TNK:2H18 TNK H7C1 TNL:1H7C TNL H7C2 TNL:2H7C TNL H7C3 TNL:3H7C TNL H151 TNP:1H15 TNP H152 TNP:2H15 TNP H153 TNP:3H15 TNP H161 TNP:1H16 TNP H162 TNP:2H16 TNP H163 TNP:3H16 TNP H171 TNP:1H17 TNP H172 TNP:2H17 TNP H173 TNP:3H17 TNP H181 TNP:1H18 TNP H182 TNP:2H18 TNP H183 TNP:3H18 TNP H191 TNP:1H19 TNP H192 TNP:2H19 TNP H193 TNP:3H19 TNP H TNR:1HN TNR H2 TNR:2HN TNR HB2 TNR:1HCB TNR HB3 TNR:2HCB TNR HC81 TNR:1HC8 TNR HC82 TNR:2HC8 TNR HC83 TNR:3HC8 TNR HC61 TNR:1HC6 TNR HC62 TNR:2HC6 TNR H191 TNS:1H19 TNS H192 TNS:2H19 TNS H181 TNS:1H18 TNS H182 TNS:2H18 TNS H171 TNS:1H17 TNS H172 TNS:2H17 TNS H161 TNS:1H16 TNS H162 TNS:2H16 TNS H231 TNS:1H23 TNS H232 TNS:2H23 TNS H233 TNS:3H23 TNS HN1 TNT:1HN TNT HN2 TNT:2HN TNT HN3 TNT:3HN TNT HN'1 TNT:1HN' TNT HN'2 TNT:2HN' TNT HN'3 TNT:3HN' TNT HA1 TNT:1HA TNT HA2 TNT:2HA TNT HB1 TNT:1HB TNT HB2 TNT:2HB TNT HA'1 TNT:1HA' TNT HA'2 TNT:2HA' TNT H9'1 TNV:1H9' TNV H9'2 TNV:2H9' TNV H8'1 TNV:1H8' TNV H8'2 TNV:2H8' TNV H8'3 TNV:3H8' TNV H6'1 TNV:1H6' TNV H6'2 TNV:2H6' TNV HN61 TNV:1HN6 TNV HN62 TNV:2HN6 TNV H61 TOA:1H6 TOA H62 TOA:2H6 TOA HN31 TOA:1HN3 TOA HN32 TOA:2HN3 TOA HN33 TOA:3HN3 TOA H21 TOB:1H2 TOB H22 TOB:2H2 TOB H41 TOB:1H4 TOB H42 TOB:2H4 TOB HN11 TOB:1HN1 TOB HN12 TOB:2HN1 TOB HN13 TOB:3HN1 TOB HN31 TOB:1HN3 TOB HN32 TOB:2HN3 TOB HN33 TOB:3HN3 TOB H31 TOC:1H3 TOC H32 TOC:2H3 TOC H61 TOC:1H6 TOC H62 TOC:2H6 TOC HN21 TOC:1HN2 TOC HN22 TOC:2HN2 TOC HN23 TOC:3HN2 TOC HN61 TOC:1HN6 TOC HN62 TOC:2HN6 TOC HN63 TOC:3HN6 TOC HA'1 TOE:1HA* TOE HA'2 TOE:2HA* TOE HB'1 TOE:1HB* TOE HB'2 TOE:2HB* TOE HD'1 TOE:1HD* TOE HD'2 TOE:2HD* TOE HE'1 TOE:1HE* TOE HE'2 TOE:2HE* TOE HG'1 TOE:1HG* TOE HG'2 TOE:2HG* TOE HH'1 TOE:1HH* TOE HH'2 TOE:2HH* TOE HK'1 TOE:1HK* TOE HK'2 TOE:2HK* TOE HK'3 TOE:3HK* TOE H81 TOH:1H8 TOH H71 TOH:1H7 TOH H41 TOL:1H4 TOL H42 TOL:2H4 TOL H43 TOL:3H4 TOL H141 TOL:1H14 TOL H142 TOL:2H14 TOL H143 TOL:3H14 TOL H151 TOL:1H15 TOL H152 TOL:2H15 TOL H111 TOM:1H11 TOM H112 TOM:2H11 TOM H113 TOM:3H11 TOM H11 TON:1H1 TON H12 TON:2H1 TON H21 TON:1H2 TON H22 TON:2H2 TON H31 TON:1H3 TON H32 TON:2H3 TON H41 TON:1H4 TON H42 TON:2H4 TON H162 TON:2H16 TON H81 TON:1H8 TON H82 TON:2H8 TON H83 TON:3H8 TON H71 TON:1H7 TON H72 TON:2H7 TON H73 TON:3H7 TON H61 TON:1H6 TON H62 TON:2H6 TON H121 TON:1H12 TON H122 TON:2H12 TON H123 TON:3H12 TON H111 TON:1H11 TON H112 TON:2H11 TON H113 TON:3H11 TON H101 TON:1H10 TON H102 TON:2H10 TON H103 TON:3H10 TON HN41 TOP:1HN4 TOP HN42 TOP:2HN4 TOP HN71 TOP:1HN7 TOP HN72 TOP:2HN7 TOP H91 TOP:1H9 TOP H92 TOP:2H9 TOP H141 TOP:1H14 TOP H142 TOP:2H14 TOP H143 TOP:3H14 TOP H171 TOP:1H17 TOP H172 TOP:2H17 TOP H173 TOP:3H17 TOP H201 TOP:1H20 TOP H202 TOP:2H20 TOP H203 TOP:3H20 TOP HOS2 TOS:2HOS TOS H1 TOS:1H TOS H2A TOS:2H TOS H3A TOS:3H TOS H61 TOT:1H6 TOT H62 TOT:2H6 TOT H63 TOT:3H6 TOT H221 TOT:1H22 TOT H222 TOT:2H22 TOT H231 TOT:1H23 TOT H232 TOT:2H23 TOT H241 TOT:1H24 TOT H242 TOT:2H24 TOT H261 TOT:1H26 TOT H262 TOT:2H26 TOT H271 TOT:1H27 TOT H272 TOT:2H27 TOT H281 TOT:1H28 TOT H282 TOT:2H28 TOT H283 TOT:3H28 TOT H291 TOT:1H29 TOT H292 TOT:2H29 TOT H293 TOT:3H29 TOT H361 TOT:1H36 TOT H362 TOT:2H36 TOT H363 TOT:3H36 TOT H521 TOT:1H52 TOT H522 TOT:2H52 TOT H531 TOT:1H53 TOT H532 TOT:2H53 TOT H541 TOT:1H54 TOT H542 TOT:2H54 TOT H561 TOT:1H56 TOT H562 TOT:2H56 TOT H581 TOT:1H58 TOT H582 TOT:2H58 TOT H583 TOT:3H58 TOT H591 TOT:1H59 TOT H592 TOT:2H59 TOT H593 TOT:3H59 TOT HN11 TOU:1HN1 TOU HN12 TOU:2HN1 TOU HN21 TOU:1HN2 TOU HN22 TOU:2HN2 TOU H TOX:1HN TOX H2 TOX:2HN TOX HC1 TOX:1H TOX HC2 TOX:2H TOX HB2 TOX:1HB TOX HB3 TOX:2HB TOX HN21 TOY:1HN2 TOY HN22 TOY:2HN2 TOY H311 TOY:1H31 TOY H312 TOY:2H31 TOY H41O TOY:OH41 TOY H611 TOY:1H61 TOY H612 TOY:2H61 TOY HN61 TOY:1HN6 TOY HN62 TOY:2HN6 TOY HN11 TOY:1HN1 TOY HN12 TOY:2HN1 TOY H221 TOY:1H22 TOY H222 TOY:2H22 TOY HN1 TOY:1HN TOY HN2 TOY:2HN TOY H52O TOY:OH52 TOY H23O TOY:OH23 TOY HN31 TOY:1HN3 TOY HN32 TOY:2HN3 TOY H43O TOY:OH43 TOY H631 TOY:1H63 TOY H632 TOY:2H63 TOY H63O TOY:OH63 TOY H8'1 TP1:1H8' TP1 H8'2 TP1:2H8' TP1 H5'1 TP1:1H5' TP1 H5'2 TP1:2H5' TP1 H3'1 TP1:1H3' TP1 H3'2 TP1:2H3' TP1 H2'1 TP1:1H2' TP1 H2'2 TP1:2H2' TP1 H1'1 TP1:1H1' TP1 H1'2 TP1:2H1' TP1 H1'3 TP1:3H1' TP1 HM51 TP1:1HM5 TP1 HM52 TP1:2HM5 TP1 HM53 TP1:3HM5 TP1 HC21 TP2:1HC2 TP2 HC22 TP2:2HC2 TP2 HC31 TP2:1HC3 TP2 HC32 TP2:2HC3 TP2 HN41 TP2:1HN4 TP2 HC61 TP2:1HC6 TP2 H101 TP2:1H10 TP2 H111 TP2:1H11 TP2 H131 TP2:1H13 TP2 H141 TP2:1H14 TP2 H151 TP2:1H15 TP2 H152 TP2:2H15 TP2 H153 TP2:3H15 TP2 H181 TP2:1H18 TP2 H182 TP2:2H18 TP2 H191 TP2:1H19 TP2 H192 TP2:2H19 TP2 H201 TP2:1H20 TP2 H202 TP2:2H20 TP2 HC11 TP3:1HC1 TP3 HC12 TP3:2HC1 TP3 HC21 TP3:1HC2 TP3 HC22 TP3:2HC2 TP3 HC41 TP3:1HC4 TP3 HC51 TP3:1HC5 TP3 HC52 TP3:2HC5 TP3 HO81 TP3:1HO8 TP3 H131 TP3:1H13 TP3 H141 TP3:1H14 TP3 H161 TP3:1H16 TP3 H171 TP3:1H17 TP3 H191 TP3:1H19 TP3 H201 TP3:1H20 TP3 H211 TP3:1H21 TP3 H212 TP3:2H21 TP3 H221 TP3:1H22 TP3 H222 TP3:2H22 TP3 H271 TP3:1H27 TP3 H281 TP3:1H28 TP3 HC11 TP4:1HC1 TP4 HC12 TP4:2HC1 TP4 HC21 TP4:1HC2 TP4 HC22 TP4:2HC2 TP4 HC41 TP4:1HC4 TP4 HC51 TP4:1HC5 TP4 HC52 TP4:2HC5 TP4 HN81 TP4:1HN8 TP4 H131 TP4:1H13 TP4 H141 TP4:1H14 TP4 H161 TP4:1H16 TP4 H171 TP4:1H17 TP4 H191 TP4:1H19 TP4 H201 TP4:1H20 TP4 H211 TP4:1H21 TP4 H212 TP4:2H21 TP4 H221 TP4:1H22 TP4 H222 TP4:2H22 TP4 H271 TP4:1H27 TP4 H281 TP4:1H28 TP4 H301 TP4:1H30 TP4 H302 TP4:2H30 TP4 H311 TP4:1H31 TP4 H312 TP4:2H31 TP4 H331 TP4:1H33 TP4 HN21 TP5:1HN2 TP5 HN22 TP5:2HN2 TP5 H191 TP6:1H19 TP6 H192 TP6:2H19 TP6 H181 TP6:1H18 TP6 H182 TP6:2H18 TP6 H171 TP6:1H17 TP6 H172 TP6:2H17 TP6 H161 TP6:1H16 TP6 H162 TP6:2H16 TP6 H151 TP6:1H15 TP6 H152 TP6:2H15 TP6 H101 TP6:1H10 TP6 H102 TP6:2H10 TP6 H141 TP6:1H14 TP6 H142 TP6:2H14 TP6 HOP2 TP7:2HOP TP7 HOP3 TP7:3HOP TP7 HG1 TP7:1HG TP7 HG2 TP7:2HG TP7 HG3 TP7:3HG TP7 H21 TP7:1H2 TP7 H22 TP7:2H2 TP7 H31 TP7:1H3 TP7 H32 TP7:2H3 TP7 H41 TP7:1H4 TP7 H42 TP7:2H4 TP7 H51 TP7:1H5 TP7 H52 TP7:2H5 TP7 H61 TP7:1H6 TP7 H62 TP7:2H6 TP7 H71 TP7:1H7 TP7 H72 TP7:2H7 TP7 H101 TP8:1H10 TP8 H102 TP8:2H10 TP8 H61 TP8:1H6 TP8 H62 TP8:2H6 TP8 H71 TP8:1H7 TP8 H72 TP8:2H7 TP8 HM41 TP8:1HM4 TP8 HM42 TP8:2HM4 TP8 HM43 TP8:3HM4 TP8 H7,1 TP8:1H7, TP8 H7,2 TP8:2H7, TP8 HM21 TP8:1HM2 TP8 HM22 TP8:2HM2 TP8 HM23 TP8:3HM2 TP8 H71 TP9:1H7 TP9 H72 TP9:2H7 TP9 H61 TP9:1H6 TP9 H62 TP9:2H6 TP9 H7'1 TP9:1H7' TP9 H7'2 TP9:2H7' TP9 H4'1 TP9:1H4' TP9 H4'2 TP9:2H4' TP9 HM21 TP9:1HM2 TP9 HM22 TP9:2HM2 TP9 HM23 TP9:3HM2 TP9 HM41 TP9:1HM4 TP9 HM42 TP9:2HM4 TP9 HM43 TP9:3HM4 TP9 H31 TPA:1H3 TPA H32 TPA:2H3 TPA HN1 TPA:1HN TPA HN2 TPA:2HN TPA HN3 TPA:3HN TPA H211 TPB:1H21 TPB H212 TPB:2H21 TPB H213 TPB:3H21 TPB H611 TPB:1H61 TPB H612 TPB:2H61 TPB H613 TPB:3H61 TPB H411 TPB:1H41 TPB H412 TPB:2H41 TPB H413 TPB:3H41 TPB HN41 TPC:1HN4 TPC HN42 TPC:2HN4 TPC H2'1 TPC:1H2' TPC H2'2 TPC:2H2' TPC H5'1 TPC:1H5' TPC H5'2 TPC:2H5' TPC H91 TPD:1H9 TPD H92 TPD:2H9 TPD HNL1 TPD:1HNL TPD HNL2 TPD:2HNL TPD HPA2 TPE:2HPA TPE HPB2 TPE:2HPB TPE H5'2 TPE:2H5* TPE H5'1 TPE:1H5* TPE H4' TPE: H4* TPE H3' TPE: H3* TPE HHR3 TPE:3HHR TPE HHR2 TPE:2HHR TPE HHR1 TPE:1HHR TPE H2'2 TPE:2H2* TPE H2'1 TPE:1H2* TPE H1' TPE: H1* TPE H5M3 TPE:3H5M TPE H5M2 TPE:2H5M TPE H5M1 TPE:1H5M TPE HC21 TPF:1HC2 TPF HC22 TPF:2HC2 TPF HC51 TPF:1HC5 TPF HC52 TPF:2HC5 TPF HBZ1 TPG:1HBZ TPG HBZ2 TPG:2HBZ TPG HBZ3 TPG:3HBZ TPG HBW1 TPG:1HBW TPG HBW2 TPG:2HBW TPG HBW3 TPG:3HBW TPG HBC1 TPG:1HBC TPG HBC2 TPG:2HBC TPG HBC3 TPG:3HBC TPG HBI1 TPG:1HBI TPG HBI2 TPG:2HBI TPG HBT1 TPG:1HBT TPG HBT2 TPG:2HBT TPG H5' TPG:1H5* TPG H5'' TPG:2H5* TPG H4' TPG: H4* TPG H3' TPG: H3* TPG H2' TPG: H2* TPG H1' TPG: H1* TPG HN21 TPG:1HN2 TPG HN22 TPG:2HN2 TPG H TPH:1NH TPH H2 TPH:2NH TPH HB2 TPH:1HB TPH HB3 TPH:2HB TPH HO11 TPI:1HO1 TPI HO21 TPI:1HO2 TPI H21 TPI:1H2 TPI H41 TPI:1H4 TPI H51 TPI:1H5 TPI H61 TPI:1H6 TPI H81 TPI:1H8 TPI H91 TPI:1H9 TPI HN11 TPI:1HN1 TPI H131 TPI:1H13 TPI HN21 TPI:1HN2 TPI HN22 TPI:2HN2 TPI H151 TPI:1H15 TPI H152 TPI:2H15 TPI H161 TPI:1H16 TPI H162 TPI:2H16 TPI HO71 TPI:1HO7 TPI H2 TPL: HN2 TPL HB1 TPL:1HB TPL HB2 TPL:2HB TPL HC1 TPL:1HC TPL HC2 TPL:2HC TPL HC21 TPM:1HC2 TPM HC31 TPM:1HC3 TPM HC51 TPM:1HC5 TPM HC61 TPM:1HC6 TPM HC71 TPM:1HC7 TPM HC72 TPM:2HC7 TPM HN11 TPM:1HN1 TPM HN12 TPM:2HN1 TPM HN21 TPM:1HN2 TPM HN31 TPM:1HN3 TPM HC91 TPM:1HC9 TPM HC92 TPM:2HC9 TPM H101 TPM:1H10 TPM H102 TPM:2H10 TPM H111 TPM:1H11 TPM H112 TPM:2H11 TPM H121 TPM:1H12 TPM H122 TPM:2H12 TPM H8'1 TPN:1H8' TPN H8'2 TPN:2H8' TPN H5'1 TPN:1H5' TPN H5'2 TPN:2H5' TPN H3'1 TPN:1H3' TPN H3'2 TPN:2H3' TPN H2'1 TPN:1H2' TPN H2'2 TPN:2H2' TPN H1'1 TPN:1H1' TPN H1'2 TPN:2H1' TPN H1'3 TPN:3H1' TPN HM51 TPN:1HM5 TPN HM52 TPN:2HM5 TPN HM53 TPN:3HM5 TPN H2 TPO:2HN TPO HG21 TPO:1HG2 TPO HG22 TPO:2HG2 TPO HG23 TPO:3HG2 TPO HOP2 TPO:2HOP TPO HOP3 TPO:3HOP TPO HM21 TPP:1HM2 TPP HM22 TPP:2HM2 TPP HM23 TPP:3HM2 TPP HN41 TPP:1HN4 TPP HN42 TPP:2HN4 TPP H7'1 TPP:1H7' TPP H7'2 TPP:2H7' TPP HM41 TPP:1HM4 TPP HM42 TPP:2HM4 TPP HM43 TPP:3HM4 TPP H61 TPP:1H6 TPP H62 TPP:2H6 TPP H71 TPP:1H7 TPP H72 TPP:2H7 TPP HOA2 TPP:2HOA TPP HOB2 TPP:2HOB TPP H2 TPQ:2HN TPQ HB2 TPQ:1HB TPQ HB3 TPQ:2HB TPQ HC71 TPR:1HC7 TPR HC72 TPR:2HC7 TPR HC73 TPR:3HC7 TPR HCD1 TPR:1HCD TPR HCD2 TPR:2HCD TPR HCG1 TPR:1HCG TPR HCG2 TPR:2HCG TPR HCB1 TPR:1HCB TPR HCB2 TPR:2HCB TPR HM21 TPS:1HM2 TPS HM22 TPS:2HM2 TPS HM23 TPS:3HM2 TPS HM41 TPS:1HM4 TPS HM42 TPS:2HM4 TPS HM43 TPS:3HM4 TPS H61 TPS:1H6 TPS H62 TPS:2H6 TPS H71 TPS:1H7 TPS H72 TPS:2H7 TPS H41N TPS:1NH4 TPS H42N TPS:2NH4 TPS H7A1 TPS:1H7A TPS H7A2 TPS:2H7A TPS H51 TPV:1H5 TPV H52 TPV:2H5 TPV HO81 TPV:1HO8 TPV H91 TPV:1H9 TPV H92 TPV:2H9 TPV H101 TPV:1H10 TPV H102 TPV:2H10 TPV H111 TPV:1H11 TPV H112 TPV:2H11 TPV H113 TPV:3H11 TPV H121 TPV:1H12 TPV H122 TPV:2H12 TPV H131 TPV:1H13 TPV H132 TPV:2H13 TPV H151 TPV:1H15 TPV H161 TPV:1H16 TPV H171 TPV:1H17 TPV H181 TPV:1H18 TPV H191 TPV:1H19 TPV H201 TPV:1H20 TPV H211 TPV:1H21 TPV H212 TPV:2H21 TPV H221 TPV:1H22 TPV H222 TPV:2H22 TPV H223 TPV:3H22 TPV H241 TPV:1H24 TPV H251 TPV:1H25 TPV H261 TPV:1H26 TPV H281 TPV:1H28 TPV H291 TPV:1H29 TPV H351 TPV:1H35 TPV H371 TPV:1H37 TPV H381 TPV:1H38 TPV H2A1 TPW:1H2A TPW H2A2 TPW:2H2A TPW H2A3 TPW:3H2A TPW H351 TPW:1H35 TPW H352 TPW:2H35 TPW H5A1 TPW:1H5A TPW H5A2 TPW:2H5A TPW H4A1 TPW:1H4A TPW H4A2 TPW:2H4A TPW H4A3 TPW:3H4A TPW H5B1 TPW:1H5B TPW H5B2 TPW:2H5B TPW H6' TPW: H6* TPW H4'1 TPW:1H4* TPW H4'2 TPW:2H4* TPW HD2 TPX:2HD TPX HD1 TPX:1HD TPX HE3 TPX:3HE TPX HE2 TPX:2HE TPX HE1 TPX:1HE TPX HK2 TPX:2HK TPX HK1 TPX:1HK TPX HN1 TPX:1H_N TPX HJ3 TPX:3HJ TPX HJ2 TPX:2HJ TPX HJ1 TPX:1HJ TPX HD2 TPY:2HD TPY HD1 TPY:1HD TPY HE3 TPY:3HE TPY HE2 TPY:2HE TPY HE1 TPY:1HE TPY HN1 TPY:1H_N TPY HK2 TPY:2HK TPY HK1 TPY:1HK TPY HN71 TQ3:1HN7 TQ3 HN72 TQ3:2HN7 TQ3 H141 TQ3:1H14 TQ3 H142 TQ3:2H14 TQ3 HN71 TQ4:1HN7 TQ4 HN72 TQ4:2HN7 TQ4 H141 TQ4:1H14 TQ4 H142 TQ4:2H14 TQ4 H321 TQ4:1H32 TQ4 H322 TQ4:2H32 TQ4 H323 TQ4:3H32 TQ4 HN71 TQ5:1HN7 TQ5 HN72 TQ5:2HN7 TQ5 H141 TQ5:1H14 TQ5 H142 TQ5:2H14 TQ5 H331 TQ5:1H33 TQ5 H332 TQ5:2H33 TQ5 H333 TQ5:3H33 TQ5 H371 TQ5:1H37 TQ5 H372 TQ5:2H37 TQ5 H373 TQ5:3H37 TQ5 H411 TQ5:1H41 TQ5 H412 TQ5:2H41 TQ5 H413 TQ5:3H41 TQ5 H111 TQ6:1H11 TQ6 H112 TQ6:2H11 TQ6 H121 TQ6:1H12 TQ6 H122 TQ6:2H12 TQ6 H321 TQ6:1H32 TQ6 H322 TQ6:2H32 TQ6 H331 TQ6:1H33 TQ6 H332 TQ6:2H33 TQ6 H351 TQ6:1H35 TQ6 H352 TQ6:2H35 TQ6 H361 TQ6:1H36 TQ6 H362 TQ6:2H36 TQ6 H2' TQD: H2* TQD H4D TQD: H4* TQD H5'1 TQD:1H5* TQD H5'2 TQD:2H5* TQD H6' TQD: H6* TQD H7'1 TQD:1H7* TQD H7'2 TQD:2H7* TQD H81 TQD:1H8 TQD H82 TQD:2H8 TQD H8'1 TQD:1H8* TQD H8'2 TQD:2H8* TQD H2'1 TQD:1H2' TQD H2'2 TQD:2H2' TQD H3B1 TQD:1H3B TQD H3B2 TQD:2H3B TQD H3B3 TQD:3H3B TQD H4B1 TQD:1H4B TQD H4B2 TQD:2H4B TQD H4B3 TQD:3H4B TQD H5B1 TQD:1H5B TQD H5B2 TQD:2H5B TQD H5B3 TQD:3H5B TQD H6'1 TQD:1H6' TQD H6'2 TQD:2H6' TQD H1D TQD: H1* TQD H2A1 TQD:1H2* TQD H2A2 TQD:2H2* TQD H3D TQD: H3* TQD H4'1 TQD:1H4* TQD H4'2 TQD:2H4* TQD H9'1 TQD:1H9* TQD H9'2 TQD:2H9* TQD H9'3 TQD:3H9* TQD H TQQ:1HN TQQ H2 TQQ:2HN TQQ HB2 TQQ:1HB TQQ HB3 TQQ:2HB TQQ H4B TQT: H4* TQT H7'1 TQT:1H7' TQT H7'2 TQT:2H7' TQT H8' TQT: H8* TQT H9'1 TQT:1H9' TQT H9'2 TQT:2H9' TQT H'01 TQT:1H*0 TQT H'02 TQT:2H*0 TQT H'1 TQT: H*1 TQT H'21 TQT:1H*2 TQT H'22 TQT:2H*2 TQT H'31 TQT:1H*3 TQT H'32 TQT:2H*3 TQT H'41 TQT:1H*4 TQT H'42 TQT:2H*4 TQT H'51 TQT:1H*5 TQT H'52 TQT:2H*5 TQT H'6 TQT: H*6 TQT H'71 TQT:1H*7 TQT H'72 TQT:2H*7 TQT H2'1 TQT:1H2' TQT H2'2 TQT:2H2' TQT H4'1 TQT:1H4' TQT H4'2 TQT:2H4' TQT H5'1 TQT:1H5' TQT H5'2 TQT:2H5' TQT H8'1 TQT:1H8' TQT H8'2 TQT:2H8' TQT HG1 TRA:1HG TRA HG2 TRA:2HG TRA H41 TRB:1H4 TRB H42 TRB:2H4 TRB H71 TRB:1H7 TRB H72 TRB:2H7 TRB H111 TRB:1H11 TRB H112 TRB:2H11 TRB H113 TRB:3H11 TRB H121 TRB:1H12 TRB H122 TRB:2H12 TRB H151 TRB:1H15 TRB H152 TRB:2H15 TRB H153 TRB:3H15 TRB H161 TRB:1H16 TRB H162 TRB:2H16 TRB H163 TRB:3H16 TRB H21 TRC:1H2 TRC H22 TRC:2H2 TRC H41 TRC:1H4 TRC H42 TRC:2H4 TRC H11 TRD:1H1 TRD H12 TRD:2H1 TRD H13 TRD:3H1 TRD H21 TRD:1H2 TRD H22 TRD:2H2 TRD H31 TRD:1H3 TRD H32 TRD:2H3 TRD H41 TRD:1H4 TRD H42 TRD:2H4 TRD H51 TRD:1H5 TRD H52 TRD:2H5 TRD H61 TRD:1H6 TRD H62 TRD:2H6 TRD H71 TRD:1H7 TRD H72 TRD:2H7 TRD H81 TRD:1H8 TRD H82 TRD:2H8 TRD H91 TRD:1H9 TRD H92 TRD:2H9 TRD H101 TRD:1H10 TRD H102 TRD:2H10 TRD H111 TRD:1H11 TRD H112 TRD:2H11 TRD H121 TRD:1H12 TRD H122 TRD:2H12 TRD H131 TRD:1H13 TRD H132 TRD:2H13 TRD H133 TRD:3H13 TRD HC61 TRE:1HC6 TRE HC62 TRE:2HC6 TRE H6P1 TRE:1H6P TRE H6P2 TRE:2H6P TRE H TRF:1HN TRF H2 TRF:2HN TRF HB2 TRF:1HB TRF HB3 TRF:2HB TRF HB1 TRG:1HB TRG HB2 TRG:2HB TRG HG1 TRG:1HG TRG HG2 TRG:2HG TRG HD1 TRG:1HD TRG HD2 TRG:2HD TRG HE1 TRG:1HE TRG HE2 TRG:2HE TRG HH11 TRG:1HH1 TRG HH12 TRG:2HH1 TRG HH13 TRG:3HH1 TRG HH21 TRG:1HH2 TRG HH22 TRG:2HH2 TRG HH23 TRG:3HH2 TRG H4PO TRH:OH4P TRH HC61 TRH:1HC6 TRH HC62 TRH:2HC6 TRH HC63 TRH:3HC6 TRH H1PO TRH:OH1P TRH H5'1 TRH:1H5' TRH H5'2 TRH:2H5' TRH H4'C TRH:CH4' TRH H3'C TRH:CH3' TRH H3'O TRH:OH3' TRH H2'1 TRH:1H2' TRH H2'2 TRH:2H2' TRH H1'C TRH:CH1' TRH H31N TRH:NH31 TRH HCA1 TRH:1HCA TRH HCA2 TRH:2HCA TRH HCA3 TRH:3HCA TRH H61C TRH:CH61 TRH HN1 TRJ:1HN TRJ HN2 TRJ:2HN TRJ HA1 TRJ:1HA TRJ HA2 TRJ:2HA TRJ HD11 TRJ:1HD1 TRJ HD21 TRJ:1HD2 TRJ HE21 TRJ:1HE2 TRJ HZ1 TRJ:1HZ TRJ HB1 TRJ:1HB TRJ HB2 TRJ:2HB TRJ HN21 TRJ:1HN2 TRJ HN22 TRJ:2HN2 TRJ HC31 TRL:1HC3 TRL HC32 TRL:2HC3 TRL HC41 TRL:1HC4 TRL HC42 TRL:2HC4 TRL HC43 TRL:3HC4 TRL HC91 TRL:1HC9 TRL HC92 TRL:2HC9 TRL H121 TRL:1H12 TRL H122 TRL:2H12 TRL HC11 TRL:1HC1 TRL HC12 TRL:2HC1 TRL HC13 TRL:3HC1 TRL H131 TRL:1H13 TRL H132 TRL:2H13 TRL H133 TRL:3H13 TRL HC71 TRL:1HC7 TRL HC72 TRL:2HC7 TRL HC73 TRL:3HC7 TRL H211 TRL:1H21 TRL H212 TRL:2H21 TRL H213 TRL:3H21 TRL H261 TRL:1H26 TRL H262 TRL:2H26 TRL H263 TRL:3H26 TRL H251 TRL:1H25 TRL H252 TRL:2H25 TRL H253 TRL:3H25 TRL HE11 TRM:1HE1 TRM HZ21 TRM:1HZ2 TRM HH21 TRM:1HH2 TRM HZ31 TRM:1HZ3 TRM HE31 TRM:1HE3 TRM H TRN:1HN TRN H2 TRN:2HN TRN HB2 TRN:1HB TRN HB3 TRN:2HB TRN HE1 TRN: HNE TRN H2 TRO: HN2 TRO HB2 TRO:1HB TRO HB3 TRO:2HB TRO HD1 TRO: HOD TRO H2 TRP: HN2 TRP HB2 TRP:1HB TRP HB3 TRP:2HB TRP H TRQ:1HN TRQ H2 TRQ:2HN TRQ HB2 TRQ:1HB TRQ HB3 TRQ:2HB TRQ HE1 TRQ: HNE TRQ H21 TRR:1H2 TRR H22 TRR:2H2 TRR H41 TRR:1H4 TRR H42 TRR:2H4 TRR H71 TRR:1H7 TRR H72 TRR:2H7 TRR H171 TRR:1H17 TRR H172 TRR:2H17 TRR H173 TRR:3H17 TRR H181 TRR:1H18 TRR H182 TRR:2H18 TRR H183 TRR:3H18 TRR H191 TRR:1H19 TRR H192 TRR:2H19 TRR H193 TRR:3H19 TRR H11 TRS:1H1 TRS H12 TRS:2H1 TRS H21 TRS:1H2 TRS H22 TRS:2H2 TRS H31 TRS:1H3 TRS H32 TRS:2H3 TRS HN1 TRS:1HN TRS HN2 TRS:2HN TRS HN3 TRS:3HN TRS H251 TRT:1H25 TRT H252 TRT:2H25 TRT H253 TRT:3H25 TRT H231 TRT:1H23 TRT H232 TRT:2H23 TRT H221 TRT:1H22 TRT H222 TRT:2H22 TRT H201 TRT:1H20 TRT H202 TRT:2H20 TRT H191 TRT:1H19 TRT H192 TRT:2H19 TRT H171 TRT:1H17 TRT H172 TRT:2H17 TRT H161 TRT:1H16 TRT H162 TRT:2H16 TRT H8C1 TRT:1H8C TRT H8C2 TRT:2H8C TRT H8C3 TRT:3H8C TRT H7C1 TRT:1H7C TRT H7C2 TRT:2H7C TRT H7C3 TRT:3H7C TRT H5C1 TRT:1H5C TRT H5C2 TRT:2H5C TRT H2C1 TRT:1H2C TRT H2C2 TRT:2H2C TRT H2C3 TRT:3H2C TRT H4C1 TRT:1H4C TRT H4C2 TRT:2H4C TRT H4C3 TRT:3H4C TRT H3C1 TRT:1H3C TRT H3C2 TRT:2H3C TRT H3C3 TRT:3H3C TRT H151 TRU:1H15 TRU H152 TRU:2H15 TRU H2 TRW: HN2 TRW HB2 TRW:1HB TRW HB3 TRW:2HB TRW H2 TRX: HN2 TRX HB2 TRX:1HB TRX HB3 TRX:2HB TRX H121 TRZ:1H12 TRZ H122 TRZ:2H12 TRZ H123 TRZ:3H12 TRZ H141 TRZ:1H14 TRZ H142 TRZ:2H14 TRZ H143 TRZ:3H14 TRZ H151 TRZ:1H15 TRZ H152 TRZ:2H15 TRZ H153 TRZ:3H15 TRZ H161 TRZ:1H16 TRZ H162 TRZ:2H16 TRZ H163 TRZ:3H16 TRZ H171 TRZ:1H17 TRZ H172 TRZ:2H17 TRZ H173 TRZ:3H17 TRZ H71 TRZ:1H7 TRZ H72 TRZ:2H7 TRZ H73 TRZ:3H7 TRZ H81 TRZ:1H8 TRZ H82 TRZ:2H8 TRZ H181 TRZ:1H18 TRZ H182 TRZ:2H18 TRZ HOP1 TS:1HOP TS HOP3 TS:3HOP TS H5' TS:1H5* TS H5'' TS:2H5* TS H4' TS: H4* TS H3' TS: H3* TS HO3' TS:*HO3 TS H2' TS:1H2* TS H2'' TS:2H2* TS H1' TS: H1* TS HM51 TS:1HM5 TS HM52 TS:2HM5 TS HM53 TS:3HM5 TS H101 TS0:1H10 TS0 H102 TS0:2H10 TS0 H141 TS0:1H14 TS0 H142 TS0:2H14 TS0 H151 TS0:1H15 TS0 H152 TS0:2H15 TS0 H161 TS0:1H16 TS0 H162 TS0:2H16 TS0 H171 TS0:1H17 TS0 H172 TS0:2H17 TS0 H181 TS0:1H18 TS0 H182 TS0:2H18 TS0 H101 TS1:1H10 TS1 H102 TS1:2H10 TS1 H141 TS1:1H14 TS1 H142 TS1:2H14 TS1 H151 TS1:1H15 TS1 H152 TS1:2H15 TS1 H161 TS1:1H16 TS1 H162 TS1:2H16 TS1 H171 TS1:1H17 TS1 H172 TS1:2H17 TS1 H181 TS1:1H18 TS1 H182 TS1:2H18 TS1 HN11 TS2:1HN1 TS2 HN12 TS2:2HN1 TS2 HB11 TS2:1HB1 TS2 HB12 TS2:2HB1 TS2 HG11 TS2:1HG1 TS2 HG12 TS2:2HG1 TS2 HB21 TS2:1HB2 TS2 HB22 TS2:2HB2 TS2 HA31 TS2:1HA3 TS2 HA32 TS2:2HA3 TS2 HA41 TS2:1HA4 TS2 HA42 TS2:2HA4 TS2 HB51 TS2:1HB5 TS2 HB52 TS2:2HB5 TS2 HN61 TS2:1HN6 TS2 HN62 TS2:2HN6 TS2 HB61 TS2:1HB6 TS2 HB62 TS2:2HB6 TS2 HG61 TS2:1HG6 TS2 HG62 TS2:2HG6 TS2 HN1' TS2:'HN1 TS2 H1'1 TS2:1H1' TS2 H1'2 TS2:2H1' TS2 H2'1 TS2:1H2' TS2 H2'2 TS2:2H2' TS2 HN2' TS2:'HN2 TS2 H3'1 TS2:1H3' TS2 H3'2 TS2:2H3' TS2 H4'1 TS2:1H4' TS2 H4'2 TS2:2H4' TS2 H5'1 TS2:1H5' TS2 H5'2 TS2:2H5' TS2 H6'1 TS2:1H6' TS2 H6'2 TS2:2H6' TS2 H7'1 TS2:1H7' TS2 H7'2 TS2:2H7' TS2 HN3' TS2:'HN3 TS2 HN11 TS3:1HN1 TS3 HN12 TS3:2HN1 TS3 HB11 TS3:1HB1 TS3 HB12 TS3:2HB1 TS3 HG11 TS3:1HG1 TS3 HG12 TS3:2HG1 TS3 HB21 TS3:1HB2 TS3 HB22 TS3:2HB2 TS3 HA31 TS3:1HA3 TS3 HA32 TS3:2HA3 TS3 HA41 TS3:1HA4 TS3 HA42 TS3:2HA4 TS3 HB1 TS3:1HB TS3 HB2 TS3:2HB TS3 HN61 TS3:1HN6 TS3 HN62 TS3:2HN6 TS3 HB61 TS3:1HB6 TS3 HB62 TS3:2HB6 TS3 HG61 TS3:1HG6 TS3 HG62 TS3:2HG6 TS3 HN1' TS3:'HN1 TS3 H1'1 TS3:1H1' TS3 H1'2 TS3:2H1' TS3 H2'1 TS3:1H2' TS3 H2'2 TS3:2H2' TS3 HN2' TS3:'HN2 TS3 H3'1 TS3:1H3' TS3 H3'2 TS3:2H3' TS3 H4'1 TS3:1H4' TS3 H4'2 TS3:2H4' TS3 H5'1 TS3:1H5' TS3 H5'2 TS3:2H5' TS3 H6'1 TS3:1H6' TS3 H6'2 TS3:2H6' TS3 H7'1 TS3:1H7' TS3 H7'2 TS3:2H7' TS3 HN3' TS3:'HN3 TS3 HN11 TS4:1HN1 TS4 HN12 TS4:2HN1 TS4 HB11 TS4:1HB1 TS4 HB12 TS4:2HB1 TS4 HG11 TS4:1HG1 TS4 HG12 TS4:2HG1 TS4 HB21 TS4:1HB2 TS4 HB22 TS4:2HB2 TS4 HA31 TS4:1HA3 TS4 HA32 TS4:2HA3 TS4 HA41 TS4:1HA4 TS4 HA42 TS4:2HA4 TS4 HB51 TS4:1HB5 TS4 HB52 TS4:2HB5 TS4 HN61 TS4:1HN6 TS4 HN62 TS4:2HN6 TS4 HB61 TS4:1HB6 TS4 HB62 TS4:2HB6 TS4 HG61 TS4:1HG6 TS4 HG62 TS4:2HG6 TS4 HN1' TS4:'HN1 TS4 H1'1 TS4:1H1' TS4 H1'2 TS4:2H1' TS4 H2'1 TS4:1H2' TS4 H2'2 TS4:2H2' TS4 HN2' TS4:'HN2 TS4 H3'1 TS4:1H3' TS4 H3'2 TS4:2H3' TS4 H4'1 TS4:1H4' TS4 H4'2 TS4:2H4' TS4 H5'1 TS4:1H5' TS4 H5'2 TS4:2H5' TS4 H6'1 TS4:1H6' TS4 H6'2 TS4:2H6' TS4 H7'1 TS4:1H7' TS4 H7'2 TS4:2H7' TS4 HN31 TS4:1HN3 TS4 HN32 TS4:2HN3 TS4 H1T1 TS4:1H1T TS4 H1T2 TS4:2H1T TS4 H2T1 TS4:1H2T TS4 H2T2 TS4:2H2T TS4 H3T1 TS4:1H3T TS4 H3T2 TS4:2H3T TS4 H4T1 TS4:1H4T TS4 H4T2 TS4:2H4T TS4 H5T1 TS4:1H5T TS4 H5T2 TS4:2H5T TS4 H6T1 TS4:1H6T TS4 H6T2 TS4:2H6T TS4 H7T1 TS4:1H7T TS4 H7T2 TS4:2H7T TS4 HNT1 TS4:1HNT TS4 HNT2 TS4:2HNT TS4 HN11 TS5:1HN1 TS5 HN12 TS5:2HN1 TS5 HB11 TS5:1HB1 TS5 HB12 TS5:2HB1 TS5 HG11 TS5:1HG1 TS5 HG12 TS5:2HG1 TS5 HB21 TS5:1HB2 TS5 HB22 TS5:2HB2 TS5 HA31 TS5:1HA3 TS5 HA32 TS5:2HA3 TS5 HN1' TS5:'HN1 TS5 H1'1 TS5:1H1' TS5 H1'2 TS5:2H1' TS5 H2'1 TS5:1H2' TS5 H2'2 TS5:2H2' TS5 HN2' TS5:'HN2 TS5 H3'1 TS5:1H3' TS5 H3'2 TS5:2H3' TS5 H4'1 TS5:1H4' TS5 H4'2 TS5:2H4' TS5 H5'1 TS5:1H5' TS5 H5'2 TS5:2H5' TS5 H6'1 TS5:1H6' TS5 H6'2 TS5:2H6' TS5 H7'1 TS5:1H7' TS5 H7'2 TS5:2H7' TS5 HN31 TS5:1HN3 TS5 HN32 TS5:2HN3 TS5 H61 TSA:1H6 TSA H62 TSA:2H6 TSA H91 TSA:1H9 TSA H92 TSA:2H9 TSA HG21 TSB:1HG2 TSB HG22 TSB:2HG2 TSB HG23 TSB:3HG2 TSB HN11 TSB:1HN1 TSB HN12 TSB:2HN1 TSB H5'1 TSB:1H5* TSB H5'2 TSB:2H5* TSB H4' TSB: H4* TSB H3' TSB: H3* TSB HO3' TSB:*HO3 TSB H2' TSB: H2* TSB HO2' TSB:*HO2 TSB H1' TSB: H1* TSB HN61 TSB:1HN6 TSB HN62 TSB:2HN6 TSB HN1 TSC:1HN TSC HN2 TSC:2HN TSC HB1 TSC:1HB TSC HB2 TSC:2HB TSC D31 TSD:1D3 TSD D32 TSD:2D3 TSD D21 TSD:1D2 TSD D22 TSD:2D2 TSD H41 TSD:1H4 TSD H42 TSD:2H4 TSD H43 TSD:3H4 TSD H51 TSD:1H5 TSD H52 TSD:2H5 TSD H2P1 TSE:1H2P TSE H2P2 TSE:2H2P TSE HOP3 TSE:3HOP TSE HOP2 TSE:2HOP TSE H181 TSF:1H18 TSF H182 TSF:2H18 TSF H171 TSF:1H17 TSF H172 TSF:2H17 TSF H161 TSF:1H16 TSF H162 TSF:2H16 TSF H151 TSF:1H15 TSF H152 TSF:2H15 TSF H101 TSF:1H10 TSF H102 TSF:2H10 TSF H141 TSF:1H14 TSF H142 TSF:2H14 TSF HN1 TSG:1HN TSG HN2 TSG:2HN TSG HB1 TSG:1HB TSG HB2 TSG:2HB TSG HB1 TSH:1HB TSH HB2 TSH:2HB TSH HN11 TSI:1HN1 TSI HN12 TSI:2HN1 TSI HC1A TSI:1HC TSI HC2A TSI:2HC TSI HC3 TSI:3HC TSI H81 TSI:1H_A TSI H82 TSI:2H_B TSI H83 TSI:3H_C TSI H141 TSL:1H14 TSL H142 TSL:2H14 TSL H143 TSL:3H14 TSL H201 TSL:1H20 TSL H202 TSL:2H20 TSL H203 TSL:3H20 TSL H11 TSM:1H1 TSM H12 TSM:2H1 TSM H13 TSM:3H1 TSM H21 TSM:1H2 TSM H22 TSM:2H2 TSM H23 TSM:3H2 TSM H31 TSM:1H3 TSM H32 TSM:2H3 TSM H33 TSM:3H3 TSM H21 TSN:1H2 TSN H31 TSN:1H3 TSN H51 TSN:1H5 TSN H61 TSN:1H6 TSN H111 TSN:1H11 TSN H121 TSN:1H12 TSN H141 TSN:1H14 TSN H142 TSN:2H14 TSN H143 TSN:3H14 TSN H151 TSN:1H15 TSN H152 TSN:2H15 TSN H153 TSN:3H15 TSN H171 TSN:1H17 TSN H172 TSN:2H17 TSN H173 TSN:3H17 TSN H161 TSN:1H16 TSN H162 TSN:2H16 TSN H163 TSN:3H16 TSN HOP2 TSP:2HOP TSP HOP3 TSP:3HOP TSP H5' TSP:1H5* TSP H5'' TSP:2H5* TSP H4' TSP: H4* TSP H3' TSP: H3* TSP HS3' TSP:*HS3 TSP H2' TSP:1H2* TSP H2'' TSP:2H2* TSP H1' TSP: H1* TSP H71 TSP:1H5M TSP H72 TSP:2H5M TSP H73 TSP:3H5M TSP HN1 TSR:1HN TSR HN2 TSR:2HN TSR HB1 TSR:1HB TSR HB2 TSR:2HB TSR HN11 TSS:1HN1 TSS HN12 TSS:2HN1 TSS HA1 TSS:1HA TSS HA2 TSS:2HA TSS HB1 TSS:1HB TSS HB2 TSS:2HB TSS H11 TST:1H1 TST H12A TST:2H1 TST H21 TST:1H2 TST H22 TST:2H2 TST H41 TST:1H4 TST H42 TST:2H4 TST H71 TST:1H7 TST H72 TST:2H7 TST H101 TST:1H10 TST H102 TST:2H10 TST H103 TST:3H10 TST H171 TST:1H17 TST H172 TST:2H17 TST H173 TST:3H17 TST H181 TST:1H18 TST H182 TST:2H18 TST H183 TST:3H18 TST H71 TSU:1H7 TSU H72 TSU:2H7 TSU H73 TSU:3H7 TSU H311 TSX:1H31 TSX H312 TSX:2H31 TSX H331 TSX:1H33 TSX H332 TSX:2H33 TSX H411 TSX:1H41 TSX H412 TSX:2H41 TSX H421 TSX:1H42 TSX H422 TSX:2H42 TSX H431 TSX:1H43 TSX H432 TSX:2H43 TSX H441 TSX:1H44 TSX H442 TSX:2H44 TSX H443 TSX:3H44 TSX H91 TSX:1H9 TSX H141 TSX:1H14 TSX H142 TSX:2H14 TSX HN1 TSX:1HN TSX H41 TSX:1H4 TSX H42 TSX:2H4 TSX H43 TSX:3H4 TSX HN11 TSZ:1HN1 TSZ HN12 TSZ:2HN1 TSZ HN31 TSZ:1HN3 TSZ HN32 TSZ:2HN3 TSZ H5'1 TT:1H5* TT H5'2 TT:2H5* TT H4' TT: H4* TT H3' TT: H3* TT H1' TT: H1* TT H2'1 TT:1H2* TT H2'2 TT:2H2* TT H7C1 TT:1H7C TT H7C2 TT:2H7C TT H5A1 TT:1H5A TT H5A2 TT:2H5A TT H5A3 TT:3H5A TT H5R1 TT:1H5R TT H5R2 TT:2H5R TT H2R1 TT:1H2R TT H2R2 TT:2H2R TT H5M1 TT:1H5M TT H5M2 TT:2H5M TT H5M3 TT:3H5M TT H1 TTB:1H TTB H2 TTB:2H TTB H3A TTB:3H TTB H181 TTB:1H18 TTB H182 TTB:2H18 TTB H183 TTB:3H18 TTB H191 TTB:1H19 TTB H192 TTB:2H19 TTB H193 TTB:3H19 TTB H201 TTB:1H20 TTB H202 TTB:2H20 TTB H211 TTB:1H21 TTB H212 TTB:2H21 TTB H231 TTB:1H23 TTB H232 TTB:2H23 TTB H233 TTB:3H23 TTB H241 TTB:1H24 TTB H242 TTB:2H24 TTB H243 TTB:3H24 TTB H251 TTC:1H25 TTC H252 TTC:2H25 TTC H311 TTC:1H31 TTC H312 TTC:2H31 TTC H313 TTC:3H31 TTC H241 TTC:1H24 TTC H171 TTC:1H17 TTC H191 TTC:1H19 TTC H192 TTC:2H19 TTC H111 TTC:1H11 TTC H112 TTC:2H11 TTC H71 TTC:1H7 TTC H41 TTC:1H4 TTC H31 TTC:1H3 TTC H271 TTC:1H27 TTC H272 TTC:2H27 TTC H291 TTC:1H29 TTC H292 TTC:2H29 TTC H293 TTC:3H29 TTC H301 TTC:1H30 TTC H302 TTC:2H30 TTC H303 TTC:3H30 TTC H261 TTC:1H26 TTC HOP2 TTD:2HOP TTD HOP3 TTD:3HOP TTD H5' TTD:1H5* TTD H5'' TTD:2H5* TTD H2' TTD:1H2* TTD H2'' TTD:2H2* TTD H1' TTD: H1* TTD H5A1 TTD:1H5A TTD H5A2 TTD:2H5A TTD H5A3 TTD:3H5A TTD H5R1 TTD:1H5R TTD H5R2 TTD:2H5R TTD H2R1 TTD:1H2R TTD H2R2 TTD:2H2R TTD H71 TTD:1H5M TTD H72 TTD:2H5M TTD H73 TTD:3H5M TTD H4' TTD: H4* TTD HO3' TTD:H3T TTD H5M1 TTE:1H5M TTE H5M2 TTE:2H5M TTE H5M3 TTE:3H5M TTE H1' TTE: H1* TTE H2'1 TTE:1H2* TTE H2'2 TTE:2H2* TTE H3' TTE: H3* TTE HO'3 TTE:3HO* TTE H4' TTE: H4* TTE H5'1 TTE:1H5* TTE H5'2 TTE:2H5* TTE HOA2 TTE:2HOA TTE HOB2 TTE:2HOB TTE HCC1 TTE:1HCC TTE HCC2 TTE:2HCC TTE HOG2 TTE:2HOG TTE HOG3 TTE:3HOG TTE H61 TTF:1H6 TTF H62 TTF:2H6 TTF H251 TTG:1H25 TTG H252 TTG:2H25 TTG H311 TTG:1H31 TTG H312 TTG:2H31 TTG H313 TTG:3H31 TTG H241 TTG:1H24 TTG H171 TTG:1H17 TTG H22O TTG:OH22 TTG H191 TTG:1H19 TTG H192 TTG:2H19 TTG H111 TTG:1H11 TTG H112 TTG:2H11 TTG H71 TTG:1H7 TTG H41 TTG:1H4 TTG H31 TTG:1H3 TTG H271 TTG:1H27 TTG H272 TTG:2H27 TTG H291 TTG:1H29 TTG H292 TTG:2H29 TTG H293 TTG:3H29 TTG H301 TTG:1H30 TTG H302 TTG:2H30 TTG H303 TTG:3H30 TTG H261 TTG:1H26 TTG H19O TTG:OH19 TTG H201 TTH:1H20 TTH H202 TTH:2H20 TTH H203 TTH:3H20 TTH H191 TTH:1H19 TTH H192 TTH:2H19 TTH H193 TTH:3H19 TTH H161 TTH:1H16 TTH H162 TTH:2H16 TTH H141 TTH:1H14 TTH H142 TTH:2H14 TTH H143 TTH:3H14 TTH H151 TTH:1H15 TTH H152 TTH:2H15 TTH H111 TTH:1H11 TTH H112 TTH:2H11 TTH HC91 TTH:1HC9 TTH HC92 TTH:2HC9 TTH H101 TTH:1H10 TTH H102 TTH:2H10 TTH H103 TTH:3H10 TTH HC61 TTH:1HC6 TTH HC62 TTH:2HC6 TTH HC51 TTH:1HC5 TTH HC52 TTH:2HC5 TTH HC41 TTH:1HC4 TTH HC42 TTH:2HC4 TTH HC43 TTH:3HC4 TTH HC11 TTH:1HC1 TTH HC12 TTH:2HC1 TTH HC13 TTH:3HC1 TTH HAG1 TTL:1HAG TTL HAG2 TTL:2HAG TTL HAH1 TTL:1HAH TTL HAH2 TTL:2HAH TTL HAA1 TTL:1HAA TTL HAA2 TTL:2HAA TTL HOP2 TTM:2HOP TTM H5' TTM:1H5* TTM H5'' TTM:2H5* TTM H4' TTM: H4* TTM H1' TTM: H1* TTM H71 TTM:1H5M TTM H72 TTM:2H5M TTM H73 TTM:3H5M TTM H2' TTM:1H2* TTM H2'' TTM:2H2* TTM H3' TTM: H3* TTM HO3' TTM:H3T TTM HOP3 TTM:3HOP TTM HOA2 TTP:2HOA TTP HOB2 TTP:2HOB TTP HOG2 TTP:2HOG TTP HOG3 TTP:3HOG TTP H5'1 TTP:1H5* TTP H5'2 TTP:2H5* TTP H4' TTP: H4* TTP H3' TTP: H3* TTP HO3' TTP:*HO3 TTP H2'1 TTP:1H2* TTP H2'2 TTP:2H2* TTP H1' TTP: H1* TTP HM51 TTP:1HM5 TTP HM52 TTP:2HM5 TTP HM53 TTP:3HM5 TTP H TTQ:1HN TTQ H2 TTQ:2HN TTQ HB2 TTQ:1HB TTQ HB3 TTQ:2HB TTQ HE1 TTQ:HNE1 TTQ HN21 TTQ:1HN2 TTQ HN22 TTQ:2HN2 TTQ HXT TTQ:HOXT TTQ H2 TTS: HN2 TTS HB2 TTS:1HB TTS HB3 TTS:2HB TTS H3' TTS: H3* TTS H2' TTS: H2* TTS H6' TTS: H6* TTS H5' TTS: H5* TTS H21 TTS:1H2 TTS H22 TTS:2H2 TTS H11 TTS:1H1 TTS H12 TTS:2H1 TTS H71 TTX:1H7 TTX H72 TTX:2H7 TTX H73 TTX:3H7 TTX H161 TTX:1H16 TTX H221 TTX:1H22 TTX H211 TTX:1H21 TTX H201 TTX:1H20 TTX H191 TTX:1H19 TTX H181 TTX:1H18 TTX H51 TTX:1H5 TTX H41 TTX:1H4 TTX H42 TTX:2H4 TTX H21 TTX:1H2 TTX H11 TTX:1H1 TTX H12 TTX:2H1 TTX H13 TTX:3H1 TTX H31 TTX:1H3 TTX H32 TTX:2H3 TTX H33 TTX:3H3 TTX HN21 TTX:1HN2 TTX H91 TTX:1H9 TTX H101 TTX:1H10 TTX H102 TTX:2H10 TTX H103 TTX:3H10 TTX H111 TTX:1H11 TTX H112 TTX:2H11 TTX H113 TTX:3H11 TTX H131 TTX:1H13 TTX H132 TTX:2H13 TTX HN41 TTX:1HN4 TTX H7C1 TTZ:1H7C TTZ H7C2 TTZ:2H7C TTZ H6'1 TTZ:1H6' TTZ H6'2 TTZ:2H6' TTZ H11 TUD:1H1 TUD H12 TUD:2H1 TUD H21 TUD:1H2 TUD H22 TUD:2H2 TUD H41 TUD:1H4 TUD H42 TUD:2H4 TUD H61 TUD:1H6 TUD H62 TUD:2H6 TUD H111 TUD:1H11 TUD H112 TUD:2H11 TUD H121 TUD:1H12 TUD H122 TUD:2H12 TUD H151 TUD:1H15 TUD H152 TUD:2H15 TUD H161 TUD:1H16 TUD H162 TUD:2H16 TUD H181 TUD:1H18 TUD H182 TUD:2H18 TUD H183 TUD:3H18 TUD H191 TUD:1H19 TUD H192 TUD:2H19 TUD H193 TUD:3H19 TUD H211 TUD:1H21 TUD H212 TUD:2H21 TUD H213 TUD:3H21 TUD H221 TUD:1H22 TUD H222 TUD:2H22 TUD H231 TUD:1H23 TUD H232 TUD:2H23 TUD H251 TUD:1H25 TUD H252 TUD:2H25 TUD H261 TUD:1H26 TUD H262 TUD:2H26 TUD H1G1 TUX:1H1G TUX H1G2 TUX:2H1G TUX H2A2 TUX:2H2A TUX H2A3 TUX:3H2A TUX H3A3 TUX:3H3A TUX H3A2 TUX:2H3A TUX H4A2 TUX:2H4A TUX H4A3 TUX:3H4A TUX H5A3 TUX:3H5A TUX H5A2 TUX:2H5A TUX H6A2 TUX:2H6A TUX H6A3 TUX:3H6A TUX H7A3 TUX:3H7A TUX H7A2 TUX:2H7A TUX H8A2 TUX:2H8A TUX H8A3 TUX:3H8A TUX H9A3 TUX:3H9A TUX H9A2 TUX:2H9A TUX HAA2 TUX:2HAA TUX HAA3 TUX:3HAA TUX HBA3 TUX:3HBA TUX HBA2 TUX:2HBA TUX HCA2 TUX:2HCA TUX HCA3 TUX:3HCA TUX HDA3 TUX:3HDA TUX HDA2 TUX:2HDA TUX HEA1 TUX:1HEA TUX HEA2 TUX:2HEA TUX HEA3 TUX:3HEA TUX HZH2 TUX:2HZH TUX HZH3 TUX:3HZH TUX HNH1 TUX:1HNH TUX HOH1 TUX:1HOH TUX HOG4 TUX:4HOG TUX H6G2 TUX:2H6G TUX H6G3 TUX:3H6G TUX HOG6 TUX:6HOG TUX HAJ1 TWN:1HAJ TWN HAJ2 TWN:2HAJ TWN HAM1 TWN:1HAM TWN HAM2 TWN:2HAM TWN HAO1 TWN:1HAO TWN HAO2 TWN:2HAO TWN HAO3 TWN:3HAO TWN HAD1 TWN:1HAD TWN HAD2 TWN:2HAD TWN HAN1 TWN:1HAN TWN HAN2 TWN:2HAN TWN HAN3 TWN:3HAN TWN HAK1 TWN:1HAK TWN HAK2 TWN:2HAK TWN HAK3 TWN:3HAK TWN HAL1 TWN:1HAL TWN HAL2 TWN:2HAL TWN HAP1 TWN:1HAP TWN HAP2 TWN:2HAP TWN HAW1 TWN:1HAW TWN HAW2 TWN:2HAW TWN HAS1 TWN:1HAS TWN HAS2 TWN:2HAS TWN HAX1 TWN:1HAX TWN HAX2 TWN:2HAX TWN HAT1 TWN:1HAT TWN HAT2 TWN:2HAT TWN HAU1 TWN:1HAU TWN HAU2 TWN:2HAU TWN HAV1 TWN:1HAV TWN HAV2 TWN:2HAV TWN HAR1 TWN:1HAR TWN HAR2 TWN:2HAR TWN HAQ1 TWN:1HAQ TWN HAQ2 TWN:2HAQ TWN HAY1 TWN:1HAY TWN HAY2 TWN:2HAY TWN HAY3 TWN:3HAY TWN H1C1 TWT:1H1C TWT H1C2 TWT:2H1C TWT H1C3 TWT:3H1C TWT H2C1 TWT:1H2C TWT H2C2 TWT:2H2C TWT H3C1 TWT:1H3C TWT H3C2 TWT:2H3C TWT H4C1 TWT:1H4C TWT H4C2 TWT:2H4C TWT H5C1 TWT:1H5C TWT H5C2 TWT:2H5C TWT H6C1 TWT:1H6C TWT H6C2 TWT:2H6C TWT H7C1 TWT:1H7C TWT H7C2 TWT:2H7C TWT H8C1 TWT:1H8C TWT H8C2 TWT:2H8C TWT H9C1 TWT:1H9C TWT H9C2 TWT:2H9C TWT H101 TWT:1H10 TWT H102 TWT:2H10 TWT H111 TWT:1H11 TWT H112 TWT:2H11 TWT H121 TWT:1H12 TWT H122 TWT:2H12 TWT H131 TWT:1H13 TWT H132 TWT:2H13 TWT H141 TWT:1H14 TWT H142 TWT:2H14 TWT H151 TWT:1H15 TWT H152 TWT:2H15 TWT H161 TWT:1H16 TWT H162 TWT:2H16 TWT H171 TWT:1H17 TWT H172 TWT:2H17 TWT H181 TWT:1H18 TWT H182 TWT:2H18 TWT H191 TWT:1H19 TWT H192 TWT:2H19 TWT H201 TWT:1H20 TWT H202 TWT:2H20 TWT H211 TWT:1H21 TWT H212 TWT:2H21 TWT H221 TWT:1H22 TWT H222 TWT:2H22 TWT H223 TWT:3H22 TWT H41 TX4:1H4 TX4 H42 TX4:2H4 TX4 H21 TX5:1H2 TX5 H22 TX5:2H2 TX5 H41 TX5:1H4 TX5 H42 TX5:2H4 TX5 H91 TX5:1H9 TX5 H92 TX5:2H9 TX5 H111 TX5:1H11 TX5 H112 TX5:2H11 TX5 H121 TX5:1H12 TX5 H122 TX5:2H12 TX5 H151 TX5:1H15 TX5 H152 TX5:2H15 TX5 H161 TX5:1H16 TX5 H162 TX5:2H16 TX5 H181 TX5:1H18 TX5 H182 TX5:2H18 TX5 H183 TX5:3H18 TX5 H191 TX5:1H19 TX5 H192 TX5:2H19 TX5 H211 TX5:1H21 TX5 H212 TX5:2H21 TX5 H213 TX5:3H21 TX5 H221 TX5:1H22 TX5 H222 TX5:2H22 TX5 H271 TX5:1H27 TX5 H272 TX5:2H27 TX5 H273 TX5:3H27 TX5 H261 TX5:1H26 TX5 H262 TX5:2H26 TX5 H263 TX5:3H26 TX5 H7N1 TXD:1H7N TXD H7N2 TXD:2H7N TXD H2N1 TXD:1H2N TXD H2N2 TXD:2H2N TXD H6N1 TXD:1H6N TXD H6N2 TXD:2H6N TXD H1'A TXD:H1* TXD H2'A TXD:H2* TXD HO2A TXD:HO2* TXD H3'A TXD:H3* TXD HO3A TXD:HO3* TXD H4'A TXD:H4* TXD H5'1 TXD:1H5* TXD H5'2 TXD:2H5* TXD H5'A TXD:1H5' TXD H5'B TXD:2H5' TXD H6A1 TXD:1H6A TXD H6A2 TXD:2H6A TXD H131 TXF:1H13 TXF H132 TXF:2H13 TXF H141 TXF:1H14 TXF H142 TXF:2H14 TXF H151 TXF:1H15 TXF H152 TXF:2H15 TXF H31 TXF:1H3 TXF H32 TXF:2H3 TXF H21A TXF:1H2 TXF H22A TXF:2H2 TXF H311 TXF:1H31 TXF H312 TXF:2H31 TXF H313 TXF:3H31 TXF H301 TXF:1H30 TXF H302 TXF:2H30 TXF H303 TXF:3H30 TXF H61 TXL:1H6 TXL H62 TXL:2H6 TXL H141 TXL:1H14 TXL H142 TXL:2H14 TXL H161 TXL:1H16 TXL H162 TXL:2H16 TXL H163 TXL:3H16 TXL H171 TXL:1H17 TXL H172 TXL:2H17 TXL H173 TXL:3H17 TXL H181 TXL:1H18 TXL H182 TXL:2H18 TXL H183 TXL:3H18 TXL H191 TXL:1H19 TXL H192 TXL:2H19 TXL H193 TXL:3H19 TXL H201 TXL:1H20 TXL H202 TXL:2H20 TXL H321 TXL:1H32 TXL H322 TXL:2H32 TXL H323 TXL:3H32 TXL H331 TXL:1H33 TXL H332 TXL:2H33 TXL H333 TXL:3H33 TXL H341 TXL:1H34 TXL H342 TXL:2H34 TXL H343 TXL:3H34 TXL H431 TXL:1H43 TXL H432 TXL:2H43 TXL H433 TXL:3H43 TXL H5'1 TXP:1H5* TXP H5'2 TXP:2H5* TXP H4'A TXP:H4* TXP H3'A TXP:H3* TXP HO3A TXP:HO3* TXP H2'A TXP:H2* TXP HO2' TXP:HO2* TXP H1'A TXP:H1* TXP H6N1 TXP:1H6N TXP H6N2 TXP:2H6N TXP H7N1 TXP:1H7N TXP H7N2 TXP:2H7N TXP H2N1 TXP:1H2N TXP H2N2 TXP:2H2N TXP H5'A TXP:1H5' TXP H5'B TXP:2H5' TXP H6A1 TXP:1H6A TXP H6A2 TXP:2H6A TXP H5'1 TYA:1H5* TYA H5'2 TYA:2H5* TYA H4' TYA: H4* TYA H3' TYA: H3* TYA HO'3 TYA:3HO* TYA H2' TYA: H2* TYA HO'2 TYA:2HO* TYA H1' TYA: H1* TYA H61 TYA:1H6 TYA H62 TYA:2H6 TYA HN1 TYA:1HN TYA HN2 TYA:2HN TYA H1 TYA:1H TYA H2A TYA:2H TYA HB1 TYA:1HB TYA HB2 TYA:2HB TYA H2 TYB: HN2 TYB HB2 TYB:1HB TYB HB3 TYB:2HB TYB HT21 TYC:1HT2 TYC HT22 TYC:2HT2 TYC HOA2 TYD:2HOA TYD HOB2 TYD:2HOB TYD HOB3 TYD:3HOB TYD H5'1 TYD:1H5* TYD H5'2 TYD:2H5* TYD H4' TYD: H4* TYD H3' TYD: H3* TYD HO3' TYD:*HO3 TYD H2'1 TYD:1H2* TYD H2'2 TYD:2H2* TYD H1' TYD: H1* TYD H51 TYD:1H5 TYD H52 TYD:2H5 TYD H53 TYD:3H5 TYD H TYH:1HN TYH H2 TYH:2HN TYH HB1 TYH:1HB TYH HB2 TYH:2HB TYH HH1 TYH:1HH TYH HH2 TYH:2HH TYH HH3 TYH:3HH TYH HC1 TYH:1H TYH HC2 TYH:2H TYH HC3 TYH:3H TYH H TYI:1HN TYI H2 TYI:2HN TYI HB2 TYI:1HB TYI HB3 TYI:2HB TYI HH TYI: HOH TYI H191 TYK:1H19 TYK H192 TYK:2H19 TYK H21 TYK:1H2 TYK H22 TYK:2H2 TYK H71 TYK:1H7 TYK H72 TYK:2H7 TYK H161 TYK:1H16 TYK H162 TYK:2H16 TYK H171 TYK:1H17 TYK H172 TYK:2H17 TYK H173 TYK:3H17 TYK H181 TYK:1H18 TYK H182 TYK:2H18 TYK H183 TYK:3H18 TYK H211 TYK:1H21 TYK H212 TYK:2H21 TYK H213 TYK:3H21 TYK H221 TYK:1H22 TYK H222 TYK:2H22 TYK H223 TYK:3H22 TYK H231 TYK:1H23 TYK H232 TYK:2H23 TYK H6A1 TYK:1H6A TYK H6A2 TYK:2H6A TYK H6A3 TYK:3H6A TYK H7A1 TYK:1H7A TYK H7A2 TYK:2H7A TYK H7A3 TYK:3H7A TYK H8A1 TYK:1H8A TYK H8A2 TYK:2H8A TYK H8A3 TYK:3H8A TYK H2B1 TYK:1H2B TYK H2B2 TYK:2H2B TYK H6B1 TYK:1H6B TYK H6B2 TYK:2H6B TYK H6B3 TYK:3H6B TYK H7B1 TYK:1H7B TYK H7B2 TYK:2H7B TYK H7B3 TYK:3H7B TYK H6C1 TYK:1H6C TYK H6C2 TYK:2H6C TYK H6C3 TYK:3H6C TYK H7C1 TYK:1H7C TYK H7C2 TYK:2H7C TYK H7C3 TYK:3H7C TYK H8C1 TYK:1H8C TYK H8C2 TYK:2H8C TYK H8C3 TYK:3H8C TYK HM1 TYL:1HM TYL HM2 TYL:2HM TYL HM3 TYL:3HM TYL H1PO TYM:OH1P TYM H5'1 TYM:1H5' TYM H5'2 TYM:2H5' TYM H4'C TYM:CH4' TYM H1'C TYM:CH1' TYM HN61 TYM:1HN6 TYM HN62 TYM:2HN6 TYM H2'C TYM:CH2' TYM H2'O TYM:OH2' TYM H3'C TYM:CH3' TYM H3'O TYM:OH3' TYM HH31 TYM:1HH3 TYM HH32 TYM:2HH3 TYM HCB1 TYM:1HCB TYM HCB2 TYM:2HCB TYM HE3C TYM:CHE3 TYM HD1C TYM:CHD1 TYM HE1N TYM:NHE1 TYM HZ2C TYM:CHZ2 TYM HZ3C TYM:CHZ3 TYM HH2C TYM:CHH2 TYM H TYN:1HN TYN H2 TYN:2HN TYN HB2 TYN:1HB TYN HB3 TYN:2HB TYN HN31 TYN:1HN3 TYN HN32 TYN:2HN3 TYN HN1 TYO:1HN TYO HN2 TYO:2HN TYO HB1 TYO:1HB TYO HB2 TYO:2HB TYO HD21 TYO:1HD2 TYO HBC1 TYP:1HBC TYP HBC2 TYP:2HBC TYP HBP1 TYP:1HBP TYP HBP2 TYP:2HBP TYP HGP1 TYP:1HGP TYP HGP2 TYP:2HGP TYP HDP1 TYP:1HDP TYP HDP2 TYP:2HDP TYP H2 TYQ: HN2 TYQ HB2 TYQ:1HB TYQ HB3 TYQ:2HB TYQ HZ TYQ: HOZ TYQ H2 TYR: HN2 TYR HB2 TYR:1HB TYR HB3 TYR:2HB TYR H TYS:1HN TYS HN2 TYS:2HN TYS HB2 TYS:1HB TYS HB3 TYS:2HB TYS H5' TYU: H5* TYU H5'1 TYU:1H5* TYU H5'' TYU:2H5* TYU H4' TYU: H4* TYU H1' TYU: H1* TYU H61 TYU:1H6 TYU H62 TYU:2H6 TYU H51 TYU:1H5 TYU H52 TYU:2H5 TYU H2' TYU: H2* TYU H3' TYU: H3* TYU H31 TYV:1H3 TYV H32 TYV:2H3 TYV H61 TYV:1H6 TYV H62 TYV:2H6 TYV H63 TYV:3H6 TYV HN1A TYX:1HN TYX HN2 TYX:2HN TYX HB1 TYX:1HB TYX HB2 TYX:2HB TYX H81 TYX:1H8 TYX H82 TYX:2H8 TYX H2 TYY: HN2 TYY HB2 TYY:1HB TYY HB3 TYY:2HB TYY H9C1 TYZ:1H9C TYZ H9C2 TYZ:2H9C TYZ H9C3 TYZ:3H9C TYZ HN31 TZ4:1HN3 TZ4 HN32 TZ4:2HN3 TZ4 HN11 TZ4:1HN1 TZ4 HN12 TZ4:2HN1 TZ4 H201 TZ4:1H20 TZ4 H202 TZ4:2H20 TZ4 H211 TZ4:1H21 TZ4 H212 TZ4:2H21 TZ4 H221 TZ4:1H22 TZ4 H222 TZ4:2H22 TZ4 H231 TZ4:1H23 TZ4 H232 TZ4:2H23 TZ4 H241 TZ4:1H24 TZ4 H242 TZ4:2H24 TZ4 H251 TZ4:1H25 TZ4 H252 TZ4:2H25 TZ4 H281 TZ4:1H28 TZ4 H282 TZ4:2H28 TZ4 H291 TZ4:1H29 TZ4 H292 TZ4:2H29 TZ4 H381 TZ4:1H38 TZ4 H382 TZ4:2H38 TZ4 H401 TZ4:1H40 TZ4 H402 TZ4:2H40 TZ4 H411 TZ4:1H41 TZ4 H412 TZ4:2H41 TZ4 H421 TZ4:1H42 TZ4 H422 TZ4:2H42 TZ4 HN21 TZ5:1HN2 TZ5 HN22 TZ5:2HN2 TZ5 HN11 TZ5:1HN1 TZ5 HN12 TZ5:2HN1 TZ5 H201 TZ5:1H20 TZ5 H202 TZ5:2H20 TZ5 H211 TZ5:1H21 TZ5 H212 TZ5:2H21 TZ5 H221 TZ5:1H22 TZ5 H222 TZ5:2H22 TZ5 H231 TZ5:1H23 TZ5 H232 TZ5:2H23 TZ5 H241 TZ5:1H24 TZ5 H242 TZ5:2H24 TZ5 H251 TZ5:1H25 TZ5 H252 TZ5:2H25 TZ5 H281 TZ5:1H28 TZ5 H282 TZ5:2H28 TZ5 H291 TZ5:1H29 TZ5 H292 TZ5:2H29 TZ5 H381 TZ5:1H38 TZ5 H382 TZ5:2H38 TZ5 H401 TZ5:1H40 TZ5 H402 TZ5:2H40 TZ5 H411 TZ5:1H41 TZ5 H412 TZ5:2H41 TZ5 H421 TZ5:1H42 TZ5 H422 TZ5:2H42 TZ5 HNH1 TZA:1HNH TZA HNH2 TZA:2HNH TZA HE22 TZA:2HE2 TZA HD22 TZA:2HD2 TZA HE11 TZA:1HE1 TZA HD11 TZA:1HD1 TZA HCX1 TZA:1HCX TZA HCX2 TZA:2HCX TZA HCB1 TZA:1HCB TZA HCB2 TZA:2HCB TZA HN1 TZA:1HN TZA HN2 TZA:2HN TZA HC1 TZB:1HC TZB HC2 TZB:2HC TZB HC3A TZB:3HC TZB HN1 TZB:1HN TZB HN2 TZB:2HN TZB HC41 TZB:1HC4 TZB HC42 TZB:2HC4 TZB HN71 TZC:1HN7 TZC HN72 TZC:2HN7 TZC HN81 TZC:1HN8 TZC HN82 TZC:2HN8 TZC H2A1 TZD:1H2A TZD H2A2 TZD:2H2A TZD H2A3 TZD:3H2A TZD H4'1 TZD:1H4* TZD H4'2 TZD:2H4* TZD H6' TZD: H6* TZD H351 TZD:1H35 TZD H352 TZD:2H35 TZD H4A1 TZD:1H4A TZD H4A2 TZD:2H4A TZD H4A3 TZD:3H4A TZD H5A1 TZD:1H5A TZD H5A2 TZD:2H5A TZD H5B1 TZD:1H5B TZD H5B2 TZD:2H5B TZD H11' TZE:H11* TZE H12' TZE:H12* TZE H21' TZE:H21* TZE H22' TZE:H22* TZE H71 TZL:1H7 TZL H72 TZL:2H7 TZL H81 TZL:1H8 TZL H82 TZL:2H8 TZL H83 TZL:3H8 TZL H91 TZL:1H9 TZL H92 TZL:2H9 TZL H93 TZL:3H9 TZL HC21 TZO:1HC2 TZO HC41 TZO:1HC4 TZO H21 TZP:1H2 TZP HM41 TZP:1HM4 TZP HM42 TZP:2HM4 TZP HM43 TZP:3HM4 TZP H61 TZP:1H6 TZP H62 TZP:2H6 TZP H71 TZP:1H7 TZP H72 TZP:2H7 TZP HO11 TZP:1HO1 TZP HO31 TZP:1HO3 TZP H241 TZY:1H24 TZY H242 TZY:2H24 TZY H243 TZY:3H24 TZY H231 TZY:1H23 TZY H232 TZY:2H23 TZY H233 TZY:3H23 TZY H1 TZZ:1H TZZ H2 TZZ:2H TZZ H3 TZZ:3H TZZ H11 TZZ:1H1 TZZ H12 TZZ:2H1 TZZ H13 TZZ:3H1 TZZ H21 TZZ:1H2 TZZ H22 TZZ:2H2 TZZ H23 TZZ:3H2 TZZ HOP3 U:3HOP U HOP2 U:2HOP U H5' U:1H5* U H5'' U:2H5* U H4' U: H4* U H3' U: H3* U HO3' U:H3T U H2' U: H2* U HO2' U:2HO* U H1' U: H1* U HG31 U01:1HG3 U01 HG32 U01:2HG3 U01 HG33 U01:3HG3 U01 HG41 U01:1HG4 U01 HG42 U01:2HG4 U01 HG43 U01:3HG4 U01 HZ81 U02:1HZ8 U02 HZ82 U02:2HZ8 U02 HZ83 U02:3HZ8 U02 HZ71 U02:1HZ7 U02 HZ72 U02:2HZ7 U02 HZ73 U02:3HZ7 U02 HZ61 U02:1HZ6 U02 HZ62 U02:2HZ6 U02 HZ63 U02:3HZ6 U02 HNZ3 U02:3HNZ U02 HZ31 U02:1HZ3 U02 HZ32 U02:2HZ3 U02 HZ21 U02:1HZ2 U02 HZ22 U02:2HZ2 U02 HNZ1 U02:1HNZ U02 HD11 U02:1HD1 U02 HD12 U02:2HD1 U02 HD21 U02:1HD2 U02 HD22 U02:2HD2 U02 HD23 U02:3HD2 U02 HE1 U02:1HE U02 HE2A U02:2HE U02 HG21 U03:1HG2 U03 HG22 U03:2HG2 U03 HG31 U03:1HG3 U03 HG32 U03:2HG3 U03 HG33 U03:3HG3 U03 HE31 U03:1HE3 U03 HE32 U03:2HE3 U03 HE33 U03:3HE3 U03 HB71 U04:1HB7 U04 HB72 U04:2HB7 U04 HB81 U04:1HB8 U04 HB82 U04:2HB8 U04 HB83 U04:3HB8 U04 HG21 U04:1HG2 U04 HG22 U04:2HG2 U04 HG51 U04:1HG5 U04 HG52 U04:2HG5 U04 HG53 U04:3HG5 U04 HG61 U04:1HG6 U04 HG62 U04:2HG6 U04 HG63 U04:3HG6 U04 HG71 U04:1HG7 U04 HG72 U04:2HG7 U04 HG73 U04:3HG7 U04 H121 U05:1H12 U05 H122 U05:2H12 U05 H123 U05:3H12 U05 H141 U05:1H14 U05 H142 U05:2H14 U05 H151 U05:1H15 U05 H152 U05:2H15 U05 H153 U05:3H15 U05 HAR1 U09:1HAR U09 HAR2 U09:2HAR U09 HAQ1 U09:1HAQ U09 HAQ2 U09:2HAQ U09 HAP1 U09:1HAP U09 HAP2 U09:2HAP U09 HAO1 U09:1HAO U09 HAO2 U09:2HAO U09 HAN1 U09:1HAN U09 HAN2 U09:2HAN U09 HAF1 U09:1HAF U09 HAF2 U09:2HAF U09 HAB1 U09:1HAB U09 HAB2 U09:2HAB U09 HAT1 U09:1HAT U09 HAT2 U09:2HAT U09 HAJ1 U09:1HAJ U09 HAJ2 U09:2HAJ U09 HAK1 U09:1HAK U09 HAK2 U09:2HAK U09 HAL1 U09:1HAL U09 HAL2 U09:2HAL U09 HAM1 U09:1HAM U09 HAM2 U09:2HAM U09 HAV1 U09:1HAV U09 HAV2 U09:2HAV U09 HAV3 U09:3HAV U09 H11A U0E:1H1 U0E H12 U0E:2H1 U0E H13A U0E:3H1 U0E H41 U0E:1H4 U0E H42 U0E:2H4 U0E H61 U0E:1H6 U0E H62 U0E:2H6 U0E H71 U0E:1H7 U0E H72 U0E:2H7 U0E H81 U0E:1H8 U0E H82 U0E:2H8 U0E H91 U0E:1H9 U0E H92 U0E:2H9 U0E H101 U0E:1H10 U0E H102 U0E:2H10 U0E H121 U0E:1H12 U0E H122 U0E:2H12 U0E H151 U0E:1H15 U0E H152 U0E:2H15 U0E H153 U0E:3H15 U0E H161 U0E:1H16 U0E H162 U0E:2H16 U0E H163 U0E:3H16 U0E H191 U0E:1H19 U0E H192 U0E:2H19 U0E H201 U0E:1H20 U0E H202 U0E:2H20 U0E H251 U0E:1H25 U0E H252 U0E:2H25 U0E H261 U0E:1H26 U0E H262 U0E:2H26 U0E H271 U0E:1H27 U0E H272 U0E:2H27 U0E HN31 U0E:1HN3 U0E HN32 U0E:2HN3 U0E HN51 U0E:1HN5 U0E HN52 U0E:2HN5 U0E HN81 U0E:1HN8 U0E HN82 U0E:2HN8 U0E H1M1 U10:1H1M U10 H1M2 U10:2H1M U10 H1M3 U10:3H1M U10 H3M1 U10:1H3M U10 H3M2 U10:2H3M U10 H3M3 U10:3H3M U10 H4M1 U10:1H4M U10 H4M2 U10:2H4M U10 H4M3 U10:3H4M U10 H71 U10:1H7 U10 H72 U10:2H7 U10 H101 U10:1H10 U10 H102 U10:2H10 U10 H103 U10:3H10 U10 H111 U10:1H11 U10 H112 U10:2H11 U10 H121 U10:1H12 U10 H122 U10:2H12 U10 H151 U10:1H15 U10 H152 U10:2H15 U10 H153 U10:3H15 U10 H161 U10:1H16 U10 H162 U10:2H16 U10 H171 U10:1H17 U10 H172 U10:2H17 U10 H201 U10:1H20 U10 H202 U10:2H20 U10 H203 U10:3H20 U10 H211 U10:1H21 U10 H212 U10:2H21 U10 H221 U10:1H22 U10 H222 U10:2H22 U10 H251 U10:1H25 U10 H252 U10:2H25 U10 H253 U10:3H25 U10 H261 U10:1H26 U10 H262 U10:2H26 U10 H271 U10:1H27 U10 H272 U10:2H27 U10 H301 U10:1H30 U10 H302 U10:2H30 U10 H303 U10:3H30 U10 H311 U10:1H31 U10 H312 U10:2H31 U10 H321 U10:1H32 U10 H322 U10:2H32 U10 H351 U10:1H35 U10 H352 U10:2H35 U10 H353 U10:3H35 U10 H361 U10:1H36 U10 H362 U10:2H36 U10 H371 U10:1H37 U10 H372 U10:2H37 U10 H401 U10:1H40 U10 H402 U10:2H40 U10 H403 U10:3H40 U10 H411 U10:1H41 U10 H412 U10:2H41 U10 H421 U10:1H42 U10 H422 U10:2H42 U10 H451 U10:1H45 U10 H452 U10:2H45 U10 H453 U10:3H45 U10 H461 U10:1H46 U10 H462 U10:2H46 U10 H471 U10:1H47 U10 H472 U10:2H47 U10 H501 U10:1H50 U10 H502 U10:2H50 U10 H503 U10:3H50 U10 H511 U10:1H51 U10 H512 U10:2H51 U10 H521 U10:1H52 U10 H522 U10:2H52 U10 H551 U10:1H55 U10 H552 U10:2H55 U10 H553 U10:3H55 U10 H561 U10:1H56 U10 H562 U10:2H56 U10 H563 U10:3H56 U10 H241 U11:1H24 U11 H242 U11:2H24 U11 H371 U11:1H37 U11 H372 U11:2H37 U11 H373 U11:3H37 U11 H431 U11:1H43 U11 H432 U11:2H43 U11 H621 U11:1H62 U11 H622 U11:2H62 U11 H623 U11:3H62 U11 HN52 U12:2HN5 U12 HN21 U12:1HN2 U12 HN22 U12:2HN2 U12 H161 U13:1H16 U13 H162 U13:2H16 U13 H182 U13:2H18 U13 HN41 U14:1HN4 U14 HN42 U14:2HN4 U14 HN12 U14:2HN1 U14 H441 U15:1H44 U15 H442 U15:2H44 U15 H443 U15:3H44 U15 H391 U15:1H39 U15 H392 U15:2H39 U15 H531 U15:1H53 U15 H532 U15:2H53 U15 H533 U15:3H53 U15 H511 U15:1H51 U15 H512 U15:2H51 U15 H513 U15:3H51 U15 H281 U15:1H28 U15 H282 U15:2H28 U15 H283 U15:3H28 U15 H151 U15:1H15 U15 H152 U15:2H15 U15 H91 U15:1H9 U15 H92 U15:2H9 U15 H93 U15:3H9 U15 H141 U16:1H14 U16 H142 U16:2H14 U16 H143 U16:3H14 U16 H151 U16:1H15 U16 H152 U16:2H15 U16 H153 U16:3H15 U16 H241 U16:1H24 U16 H242 U16:2H24 U16 H371 U16:1H37 U16 H372 U16:2H37 U16 H373 U16:3H37 U16 H451 U16:1H45 U16 H452 U16:2H45 U16 H521 U16:1H52 U16 H522 U16:2H52 U16 H523 U16:3H52 U16 H531 U16:1H53 U16 H532 U16:2H53 U16 H533 U16:3H53 U16 H621 U16:1H62 U16 H622 U16:2H62 U16 H623 U16:3H62 U16 H31 U17:1H3 U17 H32 U17:2H3 U17 H61 U17:1H6 U17 H62 U17:2H6 U17 H21 U17:1H2 U17 H22 U17:2H2 U17 H51 U17:1H5 U17 H52 U17:2H5 U17 H53 U17:3H5 U17 HN11 U17:1HN1 U17 HN12 U17:2HN1 U17 H131 U17:1H13 U17 H132 U17:2H13 U17 H151 U17:1H15 U17 H152 U17:2H15 U17 H181 U17:1H18 U17 H182 U17:2H18 U17 H183 U17:3H18 U17 H191 U17:1H19 U17 H192 U17:2H19 U17 H193 U17:3H19 U17 H201 U17:1H20 U17 H202 U17:2H20 U17 H203 U17:3H20 U17 HA21 U18:1HA2 U18 HA22 U18:2HA2 U18 HA23 U18:3HA2 U18 H111 U18:1H11 U18 H112 U18:2H11 U18 H191 U18:1H19 U18 H192 U18:2H19 U18 HB1 U18:1HB U18 HB2 U18:2HB U18 HG1 U18:1HG U18 HG2 U18:2HG U18 HN51 U19:1HN5 U19 HN52 U19:2HN5 U19 HN42 U19:2HN4 U19 H51 U1K:1H5 U1K H52 U1K:2H5 U1K H131 U1K:1H13 U1K H132 U1K:2H13 U1K H133 U1K:3H13 U1K H141 U1K:1H14 U1K H142 U1K:2H14 U1K H143 U1K:3H14 U1K H151 U1K:1H15 U1K H152 U1K:2H15 U1K H153 U1K:3H15 U1K H161 U1K:1H16 U1K H162 U1K:2H16 U1K H163 U1K:3H16 U1K H71 U1N:1H7 U1N H72 U1N:2H7 U1N H81 U1N:1H8 U1N H82 U1N:2H8 U1N H111 U1N:1H11 U1N H112 U1N:2H11 U1N H113 U1N:3H11 U1N H131 U1N:1H13 U1N H132 U1N:2H13 U1N H241 U1N:1H24 U1N H242 U1N:2H24 U1N HOP3 U25:3HOP U25 HOP2 U25:2HOP U25 H5' U25:1H5* U25 H5'' U25:2H5* U25 H4' U25: H4* U25 H3' U25: H3* U25 HO'3 U25:3HO* U25 H2' U25: H2* U25 HO2' U25:2HO* U25 H1' U25: H1* U25 H5'1 U2F:1H5' U2F H5'2 U2F:2H5' U2F H6C1 U2F:1H6C U2F H6C2 U2F:2H6C U2F H2G1 U2G:1H2G U2G H2G2 U2G:2H2G U2G H1G' U2G:*H1G U2G H2G' U2G:*H2G U2G HOG2 U2G:2HOG U2G H3G' U2G:*H3G U2G HOG3 U2G:3HOG U2G H4G' U2G:*H4G U2G H5G1 U2G:1H5G U2G H5G2 U2G:2H5G U2G HOP2 U2G:2HOP U2G HOU5 U2G:5HOU U2G H5U1 U2G:1H5U U2G H5U2 U2G:2H5U U2G H4U' U2G:*H4U U2G H3U' U2G:*H3U U2G HOU3 U2G:3HOU U2G H2U' U2G:*H2U U2G H1U' U2G:*H1U U2G HOP3 U2L:3HOP U2L HOP2 U2L:2HOP U2L H5' U2L:1H5* U2L H5'' U2L:2H5* U2L H4' U2L: H4* U2L H3' U2L: H3* U2L H2' U2L: H2* U2L HO2' U2L:2HO* U2L H1' U2L: H1* U2L HA'1 U2L:1HA* U2L HA'2 U2L:2HA* U2L HB'1 U2L:1HB* U2L HB'2 U2L:2HB* U2L HD'1 U2L:1HD* U2L HD'2 U2L:2HD* U2L HD'3 U2L:3HD* U2L H71 U2L:1H7 U2L H72 U2L:2H7 U2L H73 U2L:3H7 U2L H5' U2N:1H5* U2N H5'' U2N:2H5* U2N H4' U2N: H4* U2N H1' U2N: H1* U2N H2' U2N: H2* U2N H2'1 U2N:1H2* U2N H2'' U2N:2H2* U2N H3' U2N: H3* U2N HO3' U2N:H3T U2N H5'1 U2P:1H5' U2P H5'2 U2P:2H5' U2P H5'1 U31:1H5* U31 H5'2 U31:2H5* U31 H4' U31: H4* U31 H3' U31: H3* U31 H2' U31: H2* U31 H1' U31: H1* U31 HA'1 U31:1HA* U31 HA'2 U31:2HA* U31 HB'1 U31:1HB* U31 HB'2 U31:2HB* U31 HCC1 U31:1HCC U31 HCC2 U31:2HCC U31 HD'1 U31:1HD* U31 HD'2 U31:2HD* U31 H5C1 U32:1H5C U32 H5C2 U32:2H5C U32 H5C3 U32:3H5C U32 H6C1 U32:1H6C U32 H6C2 U32:2H6C U32 H6C3 U32:3H6C U32 H111 U32:1H11 U32 H112 U32:2H11 U32 H1' U33: H1* U33 H2'1 U33:1H2* U33 H2'2 U33:2H2* U33 H3' U33: H3* U33 H4' U33: H4* U33 H5'1 U33:1H5* U33 H5'2 U33:2H5* U33 H5' U33: H5* U33 H5'1 U34:1H5* U34 H5'2 U34:2H5* U34 H4' U34: H4* U34 H3' U34: H3* U34 H2' U34: H2* U34 H1' U34: H1* U34 H5'1 U36:1H5* U36 H5'2 U36:2H5* U36 H4' U36: H4* U36 H3' U36: H3* U36 H2' U36: H2* U36 H1' U36: H1* U36 HA'1 U36:1HA* U36 HA'2 U36:2HA* U36 HB'1 U36:1HB* U36 HB'2 U36:2HB* U36 HD'1 U36:1HD* U36 HD'2 U36:2HD* U36 HD'3 U36:3HD* U36 H5'1 U37:1H5* U37 H5'2 U37:2H5* U37 H4' U37: H4* U37 H3' U37: H3* U37 H2' U37: H2* U37 H1' U37: H1* U37 H2' U3H: H2* U3H H1' U3H: H1* U3H H2'' U3H:*H2* U3H H3' U3H: H3* U3H H3'2 U3H:2H3* U3H H4' U3H: H4* U3H H5'1 U3H:1H5* U3H H5'2 U3H:2H5* U3H HOP1 U3P:1HOP U3P HOP3 U3P:3HOP U3P HO5' U3P:*HO5 U3P H5'1 U3P:1H5* U3P H5'2 U3P:2H5* U3P H4' U3P: H4* U3P H3' U3P: H3* U3P H2' U3P: H2* U3P HO2' U3P:*HO2 U3P H1' U3P: H1* U3P HAR1 U46:1HAR U46 HAR2 U46:2HAR U46 HAQ1 U46:1HAQ U46 HAQ2 U46:2HAQ U46 HAP1 U46:1HAP U46 HAP2 U46:2HAP U46 HAF1 U46:1HAF U46 HAF2 U46:2HAF U46 HAB1 U46:1HAB U46 HAB2 U46:2HAB U46 HAT1 U46:1HAT U46 HAT2 U46:2HAT U46 HAJ1 U46:1HAJ U46 HAJ2 U46:2HAJ U46 HAK1 U46:1HAK U46 HAK2 U46:2HAK U46 HAL1 U46:1HAL U46 HAL2 U46:2HAL U46 HAM1 U46:1HAM U46 HAM2 U46:2HAM U46 HAV1 U46:1HAV U46 HAV2 U46:2HAV U46 HAV3 U46:3HAV U46 H41 U49:1H4 U49 H61 U49:1H6 U49 H71 U49:1H7 U49 H81 U49:1H8 U49 H101 U49:1H10 U49 H102 U49:2H10 U49 H121 U49:1H12 U49 H131 U49:1H13 U49 H151 U49:1H15 U49 H152 U49:2H15 U49 H171 U49:1H17 U49 H211 U49:1H21 U49 H221 U49:1H22 U49 H222 U49:2H22 U49 H231 U49:1H23 U49 H271 U49:1H27 U49 H291 U49:1H29 U49 H292 U49:2H29 U49 H311 U49:1H31 U49 H321 U49:1H32 U49 H541 U49:1H54 U49 HAR1 U51:1HAR U51 HAR2 U51:2HAR U51 HAQ1 U51:1HAQ U51 HAQ2 U51:2HAQ U51 HAP1 U51:1HAP U51 HAP2 U51:2HAP U51 HAO1 U51:1HAO U51 HAO2 U51:2HAO U51 HAB1 U51:1HAB U51 HAB2 U51:2HAB U51 HAI1 U51:1HAI U51 HAI2 U51:2HAI U51 HAJ1 U51:1HAJ U51 HAJ2 U51:2HAJ U51 HAK1 U51:1HAK U51 HAK2 U51:2HAK U51 HAL1 U51:1HAL U51 HAL2 U51:2HAL U51 HAM1 U51:1HAM U51 HAM2 U51:2HAM U51 HAU1 U51:1HAU U51 HAU2 U51:2HAU U51 HAU3 U51:3HAU U51 H171 U55:1H17 U55 H172 U55:2H17 U55 H131 U55:1H13 U55 H161 U55:1H16 U55 H181 U55:1H18 U55 H061 U55:1H06 U55 H051 U55:1H05 U55 H021 U55:1H02 U55 H031 U55:1H03 U55 H101 U55:1H10 U55 H102 U55:2H10 U55 H1' U5P: H1* U5P H2' U5P: H2* U5P HO2' U5P:*HO2 U5P H3' U5P: H3* U5P H4' U5P: H4* U5P HO3' U5P:*HO3 U5P H5'1 U5P:1H5* U5P H5'2 U5P:2H5* U5P HOP2 U5P:2HOP U5P HOP3 U5P:3HOP U5P H31 U66:1H3 U66 H41 U66:1H4 U66 H51 U66:1H5 U66 H61 U66:1H6 U66 H91 U66:1H9 U66 H92 U66:2H9 U66 H101 U66:1H10 U66 H111 U66:1H11 U66 H121 U66:1H12 U66 H141 U66:1H14 U66 H142 U66:2H14 U66 H151 U66:1H15 U66 H161 U66:1H16 U66 H117 U66:17H1 U66 H181 U66:1H18 U66 H182 U66:2H18 U66 H191 U66:1H19 U66 H192 U66:2H19 U66 H201 U66:1H20 U66 H202 U66:2H20 U66 H231 U66:1H23 U66 H232 U66:2H23 U66 H241 U66:1H24 U66 H261 U66:1H26 U66 H262 U66:2H26 U66 H291 U66:1H29 U66 H301 U66:1H30 U66 H1' U6P: H1* U6P H2'1 U6P:1H2* U6P H2'2 U6P:2H2* U6P H3' U6P: H3* U6P H4' U6P: H4* U6P HO3' U6P:*HO3 U6P H5'1 U6P:1H5* U6P H5'2 U6P:2H5* U6P HOP2 U6P:2HOP U6P HOP3 U6P:3HOP U6P H8C1 U73:1H8C U73 H8C2 U73:2H8C U73 H8C3 U73:3H8C U73 H7C1 U73:1H7C U73 H7C2 U73:2H7C U73 H7C3 U73:3H7C U73 H121 U73:1H12 U73 H122 U73:2H12 U73 HB1 U89:1HB U89 HB2 U89:2HB U89 HG1 U89:1HG U89 HG2 U89:2HG U89 H11 U89:1H1 U89 H12 U89:2H1 U89 H21 U89:1H2 U89 H22 U89:2H2 U89 H31 U89:1H3 U89 H32 U89:2H3 U89 H41 U89:1H4 U89 H42 U89:2H4 U89 H71 U89:1H7 U89 H72 U89:2H7 U89 H81 U89:1H8 U89 H82 U89:2H8 U89 H111 U89:1H11 U89 H112 U89:2H11 U89 H121 U89:1H12 U89 H122 U89:2H12 U89 H131 U89:1H13 U89 H132 U89:2H13 U89 HN81 U89:1HN8 U89 HN82 U89:2HN8 U89 HN11 U89:1HN1 U89 HN12 U89:2HN1 U89 HOP2 U89:2HOP U89 HOP3 U89:3HOP U89 HC1 U8U:1HC U8U HC2 U8U:2HC U8U HN1 U8U:1HN U8U HA1 U8U:1HA U8U HA2 U8U:2HA U8U HA3 U8U:3HA U8U H1' U8U: H1* U8U HO2' U8U:2HO* U8U H2' U8U: H2* U8U HO3' U8U:H3T U8U H3' U8U: H3* U8U H4' U8U: H4* U8U H5' U8U:1H5* U8U H5'' U8U:2H5* U8U HOP2 U8U:2HOP U8U HOP3 U8U:3HOP U8U H551 UA1:1H55 UA1 H552 UA1:2H55 UA1 H553 UA1:3H55 UA1 H541 UA1:1H54 UA1 H542 UA1:2H54 UA1 H543 UA1:3H54 UA1 H531 UA1:1H53 UA1 H532 UA1:2H53 UA1 H533 UA1:3H53 UA1 H341 UA1:1H34 UA1 H342 UA1:2H34 UA1 H231 UA1:1H23 UA1 H232 UA1:2H23 UA1 H233 UA1:3H23 UA1 H661 UA1:1H66 UA1 H662 UA1:2H66 UA1 HO5' UA2:HO5* UA2 H5'1 UA2:1H5* UA2 H5'2 UA2:2H5* UA2 H4' UA2: H4* UA2 HN4' UA2:HN4* UA2 H3' UA2: H3* UA2 HO3' UA2:HO3* UA2 H2' UA2: H2* UA2 HO2' UA2:HO2* UA2 H1' UA2: H1* UA2 HN61 UA2:1HN6 UA2 HN62 UA2:2HN6 UA2 H5' UA3: H5* UA3 H51 UA3:1H5 UA3 H52 UA3:2H5 UA3 H3' UA3: H3* UA3 H2' UA3: H2* UA3 H1' UA3: H1* UA3 H101 UA4:1H10 UA4 H102 UA4:2H10 UA4 H103 UA4:3H10 UA4 H221 UA4:1H22 UA4 H222 UA4:2H22 UA4 H241 UA4:1H24 UA4 H242 UA4:2H24 UA4 H261 UA4:1H26 UA4 H262 UA4:2H26 UA4 H263 UA4:3H26 UA4 H351 UA4:1H35 UA4 H352 UA4:2H35 UA4 H353 UA4:3H35 UA4 H231 UA4:1H23 UA4 H232 UA4:2H23 UA4 H91 UA4:1H9 UA4 H92 UA4:2H9 UA4 HN71 UA4:1HN7 UA4 HN72 UA4:2HN7 UA4 HN81 UA4:1HN8 UA4 HN82 UA4:2HN8 UA4 H71 UA5:1H7 UA5 H72 UA5:2H7 UA5 H81 UA5:1H8 UA5 H82 UA5:2H8 UA5 H83 UA5:3H8 UA5 H7C1 UAA:1H7C UAA H7C2 UAA:2H7C UAA H1B UAG: H1* UAG H2B UAG: H2* UAG HO'2 UAG:2HO* UAG H3B UAG: H3* UAG HO'3 UAG:3HO* UAG H4B UAG: H4* UAG H5'1 UAG:1H5* UAG H5'2 UAG:2H5* UAG HOA2 UAG:2HOA UAG HOB2 UAG:2HOB UAG HN2' UAG:'HN2 UAG H8'1 UAG:1H8' UAG H8'2 UAG:2H8' UAG H8'3 UAG:3H8' UAG HO4' UAG:'HO4 UAG H6'1 UAG:1H6' UAG H6'2 UAG:2H6' UAG HO6' UAG:'HO6 UAG H201 UAG:1H20 UAG H202 UAG:2H20 UAG H203 UAG:3H20 UAG H231 UAG:1H23 UAG H232 UAG:2H23 UAG H233 UAG:3H23 UAG H251 UAG:1H25 UAG H252 UAG:2H25 UAG H261 UAG:1H26 UAG H262 UAG:2H26 UAG H11 UAP:1H1 UAP H12 UAP:2H1 UAP HOS3 UAP:3HOS UAP HOP3 UAR:3HOP UAR HOP2 UAR:2HOP UAR H5' UAR:1H5* UAR H5'' UAR:2H5* UAR H4' UAR: H4* UAR H3' UAR: H3* UAR HO3' UAR:H3T UAR H2' UAR: H2* UAR HO2' UAR:2HO* UAR H1' UAR: H1* UAR HN1 UBA:1HN UBA HN2 UBA:2HN UBA HB1 UBA:1HB UBA HB2 UBA:2HB UBA H61 UBA:1H6 UBA H62 UBA:2H6 UBA H63 UBA:3H6 UBA H171 UBA:1H17 UBA H172 UBA:2H17 UBA H5'1 UBB:1H5* UBB H5'2 UBB:2H5* UBB H4' UBB: H4* UBB H1' UBB: H1* UBB H2'1 UBB:1H2* UBB H2'2 UBB:2H2* UBB H3'1 UBB:1H3* UBB H3'2 UBB:2H3* UBB H171 UBC:1H17 UBC H172 UBC:2H17 UBC HB1 UBC:1HB UBC HB2 UBC:2HB UBC HN1 UBC:1HN UBC HN2 UBC:2HN UBC H5'1 UBD:1H5* UBD H5'2 UBD:2H5* UBD H4' UBD: H4* UBD H3' UBD: H3* UBD H2' UBD: H2* UBD HO2' UBD:HO2* UBD H1' UBD: H1* UBD HA1 UC1:1HA UC1 HA2 UC1:2HA UC1 HA3 UC1:3HA UC1 HC1 UC1:1HC UC1 HC2 UC1:2HC UC1 HF1 UC1:1HF UC1 HF2 UC1:2HF UC1 HF3 UC1:3HF UC1 HG1 UC1:1HG UC1 HG2 UC1:2HG UC1 HG3 UC1:3HG UC1 HA1 UC2:1HA UC2 HA2 UC2:2HA UC2 HA3 UC2:3HA UC2 HF1 UC2:1HF UC2 HF2 UC2:2HF UC2 HF3 UC2:3HF UC2 HG1 UC2:1HG UC2 HG2 UC2:2HG UC2 HG3 UC2:3HG UC2 HH1 UC2:1HH UC2 HH2 UC2:2HH UC2 HH3 UC2:3HH UC2 HD1 UC3:1HD UC3 HD2 UC3:2HD UC3 HD3 UC3:3HD UC3 HE1 UC3:1HE UC3 HE2 UC3:2HE UC3 HE3 UC3:3HE UC3 HH1 UC3:1HH UC3 HH2 UC3:2HH UC3 HH3 UC3:3HH UC3 HI1 UC3:1HI UC3 HI2 UC3:2HI UC3 HI3 UC3:3HI UC3 H91 UC4:1H9 UC4 H92 UC4:2H9 UC4 H93 UC4:3H9 UC4 H101 UC4:1H10 UC4 H102 UC4:2H10 UC4 H103 UC4:3H10 UC4 HD1 UC4:1HD UC4 HD2 UC4:2HD UC4 HE1 UC4:1HE UC4 HE2 UC4:2HE UC4 HF1 UC4:1HF UC4 HF2 UC4:2HF UC4 HF3 UC4:3HF UC4 H1' UC5: H1* UC5 H2'1 UC5:1H2* UC5 H2'2 UC5:2H2* UC5 H3' UC5: H3* UC5 HO3' UC5:HO3* UC5 H4' UC5: H4* UC5 H5'1 UC5:1H5* UC5 H5'2 UC5:2H5* UC5 H3A1 UC5:1H3A UC5 H3A2 UC5:2H3A UC5 H291 UCB:1H29 UCB H292 UCB:2H29 UCB H293 UCB:3H29 UCB HAA1 UCD:1HAA UCD HAA2 UCD:2HAA UCD HAA3 UCD:3HAA UCD H61 UCD:1H6 UCD H62 UCD:2H6 UCD H5'1 UCL:1H5* UCL H5'2 UCL:2H5* UCL H4' UCL: H4* UCL H3' UCL: H3* UCL HO3' UCL:HO3* UCL H2'1 UCL:1H2* UCL H2'2 UCL:2H2* UCL H1' UCL: H1* UCL H031 UCM:1H03 UCM H032 UCM:2H03 UCM H041 UCM:1H04 UCM H042 UCM:2H04 UCM H241 UCN:1H24 UCN H242 UCN:2H24 UCN H281 UCN:1H28 UCN H282 UCN:2H28 UCN H283 UCN:3H28 UCN H271 UCN:1H27 UCN H272 UCN:2H27 UCN H273 UCN:3H27 UCN H261 UCN:1H26 UCN H262 UCN:2H26 UCN H263 UCN:3H26 UCN H1' UCP: H1* UCP H2'1 UCP:1H2* UCP H2'2 UCP:2H2* UCP H3' UCP: H3* UCP HO'3 UCP:3HO* UCP H4' UCP: H4* UCP H5'1 UCP:1H5* UCP H5'2 UCP:2H5* UCP HOA2 UCP:2HOA UCP HOB2 UCP:2HOB UCP HCC1 UCP:1HCC UCP HCC2 UCP:2HCC UCP HOG2 UCP:2HOG UCP HOG3 UCP:3HOG UCP H6'1 UD1:1H6' UD1 H6'2 UD1:2H6' UD1 H8'1 UD1:1H8' UD1 H8'2 UD1:2H8' UD1 H8'3 UD1:3H8' UD1 HN2' UD1:'HN2 UD1 HO3' UD1:'HO3 UD1 HO4' UD1:'HO4 UD1 HO6' UD1:'HO6 UD1 H1B UD1: H1* UD1 H2B UD1: H2* UD1 HO2' UD1:*HO2 UD1 H3B UD1: H3* UD1 H4B UD1: H4* UD1 HO3A UD1:*HO3 UD1 H5'1 UD1:1H5* UD1 H5'2 UD1:2H5* UD1 HOA2 UD1:2HOA UD1 HOB2 UD1:2HOB UD1 H6'1 UD2:1H6' UD2 H6'2 UD2:2H6' UD2 H8'1 UD2:1H8' UD2 H8'2 UD2:2H8' UD2 H8'3 UD2:3H8' UD2 HN2' UD2:'HN2 UD2 HO3' UD2:'HO3 UD2 HO4' UD2:'HO4 UD2 HO6' UD2:'HO6 UD2 H1B UD2: H1* UD2 H2B UD2: H2* UD2 HO2' UD2:*HO2 UD2 H3B UD2: H3* UD2 H4B UD2: H4* UD2 HO3A UD2:*HO3 UD2 H5'1 UD2:1H5* UD2 H5'2 UD2:2H5* UD2 HOA2 UD2:2HOA UD2 HOB2 UD2:2HOB UD2 H5' UD5:1H5* UD5 H5'' UD5:2H5* UD5 H4' UD5: H4* UD5 H3' UD5: H3* UD5 H2' UD5: H2* UD5 H1' UD5: H1* UD5 H121 UDA:1H12 UDA H122 UDA:2H12 UDA H171 UDA:1H17 UDA H172 UDA:2H17 UDA H81 UDA:1H8 UDA H82 UDA:2H8 UDA H83 UDA:3H8 UDA H191 UDA:1H19 UDA H192 UDA:2H19 UDA H193 UDA:3H19 UDA H11 UDC:1H1 UDC H12 UDC:2H1 UDC H81 UDC:1H8 UDC H82 UDC:2H8 UDC H83 UDC:3H8 UDC H61 UDC:1H6 UDC H62 UDC:2H6 UDC HBR1 UDC:1HBR UDC HBR2 UDC:2HBR UDC HBR3 UDC:3HBR UDC HBU1 UDC:1HBU UDC HBU2 UDC:2HBU UDC H1' UDH: H1* UDH H2' UDH: H2* UDH HO2' UDH:*HO2 UDH H3' UDH: H3* UDH H4' UDH: H4* UDH HO3' UDH:*HO3 UDH H5'1 UDH:1H5* UDH H5'2 UDH:2H5* UDH HOA2 UDH:2HOA UDH HOB3 UDH:3HOB UDH H1'1 UDH:1H1' UDH H1'2 UDH:2H1' UDH H2'1 UDH:1H2' UDH H2'2 UDH:2H2' UDH H3'1 UDH:1H3' UDH H3'2 UDH:2H3' UDH H4'1 UDH:1H4' UDH H4'2 UDH:2H4' UDH H5B UDH:1H5' UDH H5D UDH:2H5' UDH H6'1 UDH:1H6' UDH H6'2 UDH:2H6' UDH HN'1 UDH:1HN' UDH HN'2 UDH:2HN' UDH H6'1 UDM:1H6' UDM H6'2 UDM:2H6' UDM H8'1 UDM:1H8' UDM H8'2 UDM:2H8' UDM H8'3 UDM:3H8' UDM HB1 UDM:1HB UDM HB2 UDM:2HB UDM H1D UDM: H1* UDM H2D UDM: H2* UDM H3D UDM: H3* UDM H4D UDM: H4* UDM H5'1 UDM:1H5* UDM H5'2 UDM:2H5* UDM H1' UDP: H1* UDP H2' UDP: H2* UDP HO2' UDP:*HO2 UDP H3' UDP: H3* UDP H4' UDP: H4* UDP HO3' UDP:*HO3 UDP H5'1 UDP:1H5* UDP H5'2 UDP:2H5* UDP HOA2 UDP:2HOA UDP HOB2 UDP:2HOB UDP HOB3 UDP:3HOB UDP H2'1 UDX:1H2' UDX HO'2 UDX:2HO' UDX H3'1 UDX:1H3' UDX HO'3 UDX:3HO' UDX H4'1 UDX:1H4' UDX HO'4 UDX:4HO' UDX H5'1 UDX:1H5' UDX H5'2 UDX:2H5' UDX HOB2 UDX:2HOB UDX HOA2 UDX:2HOA UDX H5A1 UDX:1H5* UDX H5A2 UDX:2H5* UDX H4A1 UDX:1H4* UDX H3A1 UDX:1H3* UDX HOA3 UDX:3HO* UDX H2A1 UDX:1H2* UDX HOC2 UDX:2HO* UDX H1'1 UDX:1H1* UDX H61 UDX:1H6 UDX H51 UDX:1H5 UDX H5'1 UF1:1H5* UF1 H5'2 UF1:2H5* UF1 H4' UF1: H4* UF1 H3' UF1: H3* UF1 HO3' UF1:HO3* UF1 H2'1 UF1:1H2* UF1 H2'2 UF1:2H2* UF1 H1' UF1: H1* UF1 H1D UFG: H1* UFG H2D UFG: H2* UFG HO2' UFG:*HO2 UFG H3D UFG: H3* UFG H4D UFG: H4* UFG HO3' UFG:*HO3 UFG H5'1 UFG:1H5* UFG H5'2 UFG:2H5* UFG HOA2 UFG:2HOA UFG HOB2 UFG:2HOB UFG H6'1 UFG:1H6' UFG H6'2 UFG:2H6' UFG HO2A UFG:'HO2 UFG HO3A UFG:'HO3 UFG HO6' UFG:'HO6 UFG H1D UFM: H1* UFM H2D UFM: H2* UFM HO2' UFM:*HO2 UFM H3D UFM: H3* UFM H4D UFM: H4* UFM HO3' UFM:*HO3 UFM H5'1 UFM:1H5* UFM H5'2 UFM:2H5* UFM HOA2 UFM:2HOA UFM HOB2 UFM:2HOB UFM H6'1 UFM:1H6' UFM H6'2 UFM:2H6' UFM HO2A UFM:'HO2 UFM HO3A UFM:'HO3 UFM HO4' UFM:'HO4 UFM HO6' UFM:'HO6 UFM H1' UFP: H1* UFP H2'1 UFP:1H2* UFP H2'2 UFP:2H2* UFP H3' UFP: H3* UFP H4' UFP: H4* UFP HO3' UFP:*HO3 UFP H5'1 UFP:1H5* UFP H5'2 UFP:2H5* UFP HOP2 UFP:2HOP UFP HOP3 UFP:3HOP UFP H5'1 UFR:1H5* UFR H5'2 UFR:2H5* UFR H4' UFR: H4* UFR H3' UFR: H3* UFR HO3' UFR:HO3* UFR H2'1 UFR:1H2* UFR H2'2 UFR:2H2* UFR H1' UFR: H1* UFR H1'1 UGA:1H1' UGA H2'1 UGA:1H2' UGA HO'2 UGA:2HO' UGA H3'1 UGA:1H3' UGA HO'3 UGA:3HO' UGA H4'1 UGA:1H4' UGA HO'4 UGA:4HO' UGA H5'1 UGA:1H5' UGA HO'6 UGA:6HO' UGA HOB2 UGA:2HOB UGA HOA2 UGA:2HOA UGA H5A1 UGA:1H5* UGA H5'2 UGA:2H5* UGA H4A1 UGA:1H4* UGA H3A1 UGA:1H3* UGA HOA3 UGA:3HO* UGA H2A1 UGA:1H2* UGA HOC2 UGA:2HO* UGA H1A1 UGA:1H1* UGA H61 UGA:1H6 UGA H51 UGA:1H5 UGA H81 UHD:1H8 UHD H82 UHD:2H8 UHD H91 UHD:1H9 UHD H92 UHD:2H9 UHD H101 UHD:1H10 UHD H102 UHD:2H10 UHD H111 UHD:1H11 UHD H112 UHD:2H11 UHD H121 UHD:1H12 UHD H122 UHD:2H12 UHD H131 UHD:1H13 UHD H132 UHD:2H13 UHD H141 UHD:1H14 UHD H142 UHD:2H14 UHD H151 UHD:1H15 UHD H152 UHD:2H15 UHD H161 UHD:1H16 UHD H162 UHD:2H16 UHD H171 UHD:1H17 UHD H172 UHD:2H17 UHD H181 UHD:1H18 UHD H182 UHD:2H18 UHD H183 UHD:3H18 UHD H31 UHH:1H3 UHH H32 UHH:2H3 UHH H71 UHH:1H7 UHH H72 UHH:2H7 UHH H81 UHH:1H8 UHH H82 UHH:2H8 UHH H101 UHH:1H10 UHH H102 UHH:2H10 UHH H103 UHH:3H10 UHH H111 UHH:1H11 UHH H112 UHH:2H11 UHH H113 UHH:3H11 UHH H141 UHH:1H14 UHH H142 UHH:2H14 UHH H161 UHH:1H16 UHH H162 UHH:2H16 UHH H211 UHH:1H21 UHH H212 UHH:2H21 UHH H213 UHH:3H21 UHH H221 UHH:1H22 UHH H222 UHH:2H22 UHH H231 UHH:1H23 UHH H232 UHH:2H23 UHH HN11 UHH:1HN1 UHH HN12 UHH:2HN1 UHH HN11 UI1:1HN1 UI1 HN12 UI1:2HN1 UI1 H21A UI1:1H2 UI1 H22 UI1:2H2 UI1 H291 UI1:1H29 UI1 H292 UI1:2H29 UI1 H301 UI2:1H30 UI2 H302 UI2:2H30 UI2 H181 UI3:1H18 UI3 H182 UI3:2H18 UI3 H201 UI3:1H20 UI3 H202 UI3:2H20 UI3 H203 UI3:3H20 UI3 H371 UI3:1H37 UI3 H372 UI3:2H37 UI3 H373 UI3:3H37 UI3 HN11 UIB:1HN1 UIB HN12 UIB:2HN1 UIB H131 UIB:1H13 UIB H132 UIB:2H13 UIB H133 UIB:3H13 UIB H141 UIB:1H14 UIB H142 UIB:2H14 UIB H143 UIB:3H14 UIB H121 UIB:1H12 UIB H122 UIB:2H12 UIB H123 UIB:3H12 UIB H231 UIB:1H23 UIB H232 UIB:2H23 UIB H281 UIB:1H28 UIB H282 UIB:2H28 UIB H181 UIB:1H18 UIB H182 UIB:2H18 UIB H411 UIB:1H41 UIB H412 UIB:2H41 UIB H413 UIB:3H41 UIB H121 UIC:1H12 UIC H122 UIC:2H12 UIC H141 UIC:1H14 UIC H142 UIC:2H14 UIC H161 UIC:1H16 UIC H162 UIC:2H16 UIC H21 UIC:1H2 UIC H22A UIC:2H2 UIC H231 UIC:1H23 UIC H232 UIC:2H23 UIC H321 UIC:1H32 UIC H322 UIC:2H32 UIC H331 UIC:1H33 UIC H332 UIC:2H33 UIC H351 UIC:1H35 UIC H352 UIC:2H35 UIC H353 UIC:3H35 UIC H361 UIC:1H36 UIC H362 UIC:2H36 UIC H363 UIC:3H36 UIC H31A UIC:1H3 UIC H32 UIC:2H3 UIC HG21 UIN:1HG2 UIN HG22 UIN:2HG2 UIN HG31 UIN:1HG3 UIN HG32 UIN:2HG3 UIN HG33 UIN:3HG3 UIN HD11 UIN:1HD1 UIN HD12 UIN:2HD1 UIN HD21 UIN:1HD2 UIN HD22 UIN:2HD2 UIN HD31 UIN:1HD3 UIN HD32 UIN:2HD3 UIN HD41 UIN:1HD4 UIN HD42 UIN:2HD4 UIN HD51 UIN:1HD5 UIN HD52 UIN:2HD5 UIN HD61 UIN:1HD6 UIN HD62 UIN:2HD6 UIN HN21 UIP:1HN2 UIP HN22 UIP:2HN2 UIP H121 UIP:1H12 UIP H122 UIP:2H12 UIP H131 UIP:1H13 UIP H132 UIP:2H13 UIP H141 UIP:1H14 UIP H142 UIP:2H14 UIP H231 UIP:1H23 UIP H232 UIP:2H23 UIP H281 UIP:1H28 UIP H282 UIP:2H28 UIP H181 UIP:1H18 UIP H182 UIP:2H18 UIP H421 UIP:1H42 UIP H422 UIP:2H42 UIP H423 UIP:3H42 UIP HN21 UIQ:1HN2 UIQ HN22 UIQ:2HN2 UIQ H121 UIQ:1H12 UIQ H122 UIQ:2H12 UIQ H131 UIQ:1H13 UIQ H132 UIQ:2H13 UIQ H141 UIQ:1H14 UIQ H142 UIQ:2H14 UIQ H231 UIQ:1H23 UIQ H232 UIQ:2H23 UIQ H281 UIQ:1H28 UIQ H282 UIQ:2H28 UIQ H411 UIQ:1H41 UIQ H412 UIQ:2H41 UIQ H413 UIQ:3H41 UIQ H421 UIQ:1H42 UIQ H422 UIQ:2H42 UIQ H423 UIQ:3H42 UIQ HN11 UIR:1HN1 UIR HN12 UIR:2HN1 UIR H121 UIR:1H12 UIR H122 UIR:2H12 UIR H131 UIR:1H13 UIR H132 UIR:2H13 UIR H141 UIR:1H14 UIR H142 UIR:2H14 UIR H421 UIR:1H42 UIR H422 UIR:2H42 UIR H411 UIR:1H41 UIR H412 UIR:2H41 UIR H231 UIR:1H23 UIR H232 UIR:2H23 UIR H281 UIR:1H28 UIR H282 UIR:2H28 UIR HN21 UIZ:1HN2 UIZ HN22 UIZ:2HN2 UIZ H231 UIZ:1H23 UIZ H232 UIZ:2H23 UIZ H281 UIZ:1H28 UIZ H282 UIZ:2H28 UIZ H141 UIZ:1H14 UIZ H142 UIZ:2H14 UIZ H131 UIZ:1H13 UIZ H132 UIZ:2H13 UIZ H121 UIZ:1H12 UIZ H122 UIZ:2H12 UIZ H11A UIZ:1H1 UIZ H12 UIZ:2H1 UIZ H1 UKC:1H UKC H2A UKC:2H UKC H3A UKC:3H UKC H61 UKC:1H6 UKC H62 UKC:2H6 UKC H63 UKC:3H6 UKC H151 UKC:1H15 UKC H152 UKC:2H15 UKC H161 UKC:1H16 UKC H162 UKC:2H16 UKC H163 UKC:3H16 UKC HN1 UKP:1HN UKP HA1 UKP:1HA UKP HCB1 UKP:1HCB UKP HCB2 UKP:2HCB UKP HD11 UKP:1HD1 UKP HZ1 UKP:1HZ UKP HE21 UKP:1HE2 UKP HD21 UKP:1HD2 UKP HX11 UKP:1HX1 UKP HX12 UKP:2HX1 UKP HX21 UKP:1HX2 UKP H81 UKP:1H8 UKP H101 UKP:1H10 UKP H121 UKP:1H12 UKP H131 UKP:1H13 UKP H132 UKP:2H13 UKP H133 UKP:3H13 UKP H141 UKP:1H14 UKP H142 UKP:2H14 UKP H143 UKP:3H14 UKP H151 UKP:1H15 UKP H161 UKP:1H16 UKP H162 UKP:2H16 UKP H163 UKP:3H16 UKP H171 UKP:1H17 UKP H172 UKP:2H17 UKP H173 UKP:3H17 UKP H181 UKP:1H18 UKP H191 UKP:1H19 UKP H192 UKP:2H19 UKP H193 UKP:3H19 UKP H201 UKP:1H20 UKP H202 UKP:2H20 UKP H203 UKP:3H20 UKP H11 UKP:1H1 UKP H12 UKP:2H1 UKP H21 UKP:1H2 UKP H22 UKP:2H2 UKP H41 UKP:1H4 UKP H42 UKP:2H4 UKP H51 UKP:1H5 UKP H52 UKP:2H5 UKP H221 UKP:1H22 UKP H222 UKP:2H22 UKP H231 UKP:1H23 UKP H232 UKP:2H23 UKP H241 UKP:1H24 UKP H242 UKP:2H24 UKP H61 ULA:1H6 ULA H62 ULA:2H6 ULA H51 ULA:1H5 ULA H52 ULA:2H5 ULA H41 ULA:1H4 ULA H42 ULA:2H4 ULA H21 ULA:1H2 ULA H22A ULA:2H2 ULA H81 ULA:1H8 ULA H82 ULA:2H8 ULA H361 ULA:1H36 ULA H362 ULA:2H36 ULA H363 ULA:3H36 ULA H211 ULA:1H21 ULA H212 ULA:2H21 ULA H461 ULA:1H46 ULA H462 ULA:2H46 ULA H463 ULA:3H46 ULA H371 ULA:1H37 ULA H372 ULA:2H37 ULA H373 ULA:3H37 ULA H251 ULA:1H25 ULA H252 ULA:2H25 ULA H451 ULA:1H45 ULA H452 ULA:2H45 ULA H453 ULA:3H45 ULA H381 ULA:1H38 ULA H382 ULA:2H38 ULA H383 ULA:3H38 ULA H281 ULA:1H28 ULA H282 ULA:2H28 ULA H291 ULA:1H29 ULA H292 ULA:2H29 ULA H391 ULA:1H39 ULA H392 ULA:2H39 ULA H393 ULA:3H39 ULA H401 ULA:1H40 ULA H402 ULA:2H40 ULA H403 ULA:3H40 ULA H421 ULA:1H42 ULA H422 ULA:2H42 ULA H423 ULA:3H42 ULA H411 ULA:1H41 ULA H412 ULA:2H41 ULA HO21 ULA:1HO2 ULA H441 ULA:1H44 ULA H442 ULA:2H44 ULA H443 ULA:3H44 ULA H1' UM3: H1* UM3 H2'1 UM3:1H2* UM3 H2'2 UM3:2H2* UM3 H3' UM3: H3* UM3 H4' UM3: H4* UM3 H5'1 UM3:1H5* UM3 H5'2 UM3:2H5* UM3 HO5' UM3:*HO5 UM3 HOP2 UM3:2HOP UM3 HOP3 UM3:3HOP UM3 H1B UMA: H1* UMA H2B UMA: H2* UMA HO2' UMA:*HO2 UMA H3B UMA: H3* UMA H4B UMA: H4* UMA HO3' UMA:*HO3 UMA H5'1 UMA:1H5* UMA H5'2 UMA:2H5* UMA HOA2 UMA:2HOA UMA HOB2 UMA:2HOB UMA H8'1 UMA:1H8' UMA H8'2 UMA:2H8' UMA H8'3 UMA:3H8' UMA H6'1 UMA:1H6' UMA H6'2 UMA:2H6' UMA H201 UMA:1H20 UMA H202 UMA:2H20 UMA H203 UMA:3H20 UMA H231 UMA:1H23 UMA H232 UMA:2H23 UMA H233 UMA:3H23 UMA H5' UMF: H5* UMF H5'1 UMF:1H5* UMF H5'2 UMF:2H5* UMF H4' UMF: H4* UMF H3' UMF: H3* UMF H2' UMF: H2* UMF H1' UMF: H1* UMF H101 UMG:1H10 UMG H102 UMG:2H10 UMG H103 UMG:3H10 UMG H161 UMG:1H16 UMG H162 UMG:2H16 UMG H181 UMG:1H18 UMG H182 UMG:2H18 UMG H183 UMG:3H18 UMG H241 UMG:1H24 UMG H242 UMG:2H24 UMG H261 UMG:1H26 UMG H262 UMG:2H26 UMG H263 UMG:3H26 UMG H321 UMG:1H32 UMG H322 UMG:2H32 UMG H341 UMG:1H34 UMG H342 UMG:2H34 UMG H343 UMG:3H34 UMG H1' UMP: H1* UMP H2' UMP:1H2* UMP H2'' UMP:2H2* UMP H3' UMP: H3* UMP H4' UMP: H4* UMP HO3' UMP:*HO3 UMP H5' UMP:1H5* UMP H5'' UMP:2H5* UMP HOP2 UMP:2HOP UMP HOP3 UMP:3HOP UMP H21 UMQ:1H2 UMQ H41 UMQ:1H4 UMQ H51 UMQ:1H5 UMQ H61 UMQ:1H6 UMQ H62 UMQ:2H6 UMQ HO21 UMQ:1HO2 UMQ HO41 UMQ:1HO4 UMQ H11 UMQ:1H1 UMQ H31 UMQ:1H3 UMQ HO31 UMQ:1HO3 UMQ HO61 UMQ:1HO6 UMQ H1'1 UMQ:1H1' UMQ H2'1 UMQ:1H2' UMQ H3'1 UMQ:1H3' UMQ H4'1 UMQ:1H4' UMQ H5'1 UMQ:1H5' UMQ H6'1 UMQ:1H6' UMQ H6'2 UMQ:2H6' UMQ HO3' UMQ:'HO3 UMQ HO6' UMQ:'HO6 UMQ HO2' UMQ:'HO2 UMQ HA1 UMQ:1HA UMQ HA2 UMQ:2HA UMQ HB1 UMQ:1HB UMQ HB2 UMQ:2HB UMQ HC1 UMQ:1HC UMQ HC2 UMQ:2HC UMQ HD1 UMQ:1HD UMQ HD2 UMQ:2HD UMQ HF1 UMQ:1HF UMQ HF2 UMQ:2HF UMQ HG1 UMQ:1HG UMQ HG2 UMQ:2HG UMQ HH1 UMQ:1HH UMQ HH2 UMQ:2HH UMQ HI1 UMQ:1HI UMQ HI2 UMQ:2HI UMQ HJ1 UMQ:1HJ UMQ HJ2 UMQ:2HJ UMQ HK1 UMQ:1HK UMQ HK2 UMQ:2HK UMQ HL1 UMQ:1HL UMQ HL2 UMQ:2HL UMQ HL3 UMQ:3HL UMQ HOP3 UMS:3HOP UMS HOP2 UMS:2HOP UMS H5'2 UMS:2H5' UMS HO3' UMS:H3T UMS HA'2 UMS:2HA' UMS HA'3 UMS:3HA' UMS HO3' UN0:HO3* UN0 H3' UN0: H3* UN0 H2'1 UN0:1H2* UN0 H2'2 UN0:2H2* UN0 H101 UN0:1H10 UN0 H102 UN0:2H10 UN0 HN61 UN0:1HN6 UN0 HN62 UN0:2HN6 UN0 H1'1 UN0:1H1* UN0 H1'2 UN0:2H1* UN0 H4' UN0: H4* UN0 H5'1 UN0:1H5* UN0 H5'2 UN0:2H5* UN0 H6'1 UN0:1H6* UN0 H6'2 UN0:2H6* UN0 H7'1 UN0:1H7* UN0 H7'2 UN0:2H7* UN0 H8'1 UN0:1H8* UN0 H8'2 UN0:2H8* UN0 H9'1 UN0:1H9* UN0 H9'2 UN0:2H9* UN0 H111 UN0:1H11 UN0 H112 UN0:2H11 UN0 H1C1 UN1:1H1C UN1 H1C2 UN1:2H1C UN1 H5C1 UN1:1H5C UN1 H5C2 UN1:2H5C UN1 H6C1 UN1:1H6C UN1 H6C2 UN1:2H6C UN1 H4N1 UN1:1H4N UN1 H4N2 UN1:2H4N UN1 HN1 UN2:1HN UN2 HN2 UN2:2HN UN2 HBC1 UN2:1HBC UN2 HBC2 UN2:2HBC UN2 HGC1 UN2:1HGC UN2 H41 UN3:1H4 UN3 H42 UN3:2H4 UN3 H43 UN3:3H4 UN3 H4' UN4: H4* UN4 H3'1 UN4:1H3* UN4 H3'2 UN4:2H3* UN4 H2'1 UN4:1H2* UN4 H2'2 UN4:2H2* UN4 H2N1 UN4:1H2N UN4 H2N2 UN4:2H2N UN4 H601 UN4:1H60 UN4 H602 UN4:2H60 UN4 H201 UN5:1H20 UN5 H202 UN5:2H20 UN5 H203 UN5:3H20 UN5 H111 UN5:1H11 UN5 H112 UN5:2H11 UN5 H71 UN5:1H7 UN5 H72 UN5:2H7 UN5 H121 UN5:1H12 UN5 H122 UN5:2H12 UN5 H131 UN5:1H13 UN5 H132 UN5:2H13 UN5 H71 UN6:1H7 UN6 H72 UN6:2H7 UN6 H91 UN6:1H9 UN6 H92 UN6:2H9 UN6 H101 UN6:1H10 UN6 H102 UN6:2H10 UN6 H71 UN7:1H7 UN7 H72 UN7:2H7 UN7 H191 UN7:1H19 UN7 H192 UN7:2H19 UN7 H281 UN7:1H28 UN7 H282 UN7:2H28 UN7 H283 UN7:3H28 UN7 H221 UN7:1H22 UN7 H222 UN7:2H22 UN7 H251 UN7:1H25 UN7 H252 UN7:2H25 UN7 H41 UN8:1H4 UN8 H42 UN8:2H4 UN8 H43 UN8:3H4 UN8 H161 UN8:1H16 UN8 H162 UN8:2H16 UN8 H591 UN8:1H59 UN8 H592 UN8:2H59 UN8 H101 UN8:1H10 UN8 H102 UN8:2H10 UN8 H111 UN8:1H11 UN8 H112 UN8:2H11 UN8 H121 UN8:1H12 UN8 H122 UN8:2H12 UN8 H123 UN8:3H12 UN8 H171 UN8:1H17 UN8 H172 UN8:2H17 UN8 H151 UN9:1H15 UN9 H152 UN9:2H15 UN9 H113 UNA:3H11 UNA H112 UNA:2H11 UNA H111 UNA:1H11 UNA H102 UNA:2H10 UNA H101 UNA:1H10 UNA H92 UNA:2H9 UNA H91 UNA:1H9 UNA H82 UNA:2H8 UNA H81 UNA:1H8 UNA H72 UNA:2H7 UNA H71 UNA:1H7 UNA H62 UNA:2H6 UNA H61 UNA:1H6 UNA H52 UNA:2H5 UNA H51 UNA:1H5 UNA H42 UNA:2H4 UNA H41 UNA:1H4 UNA H32 UNA:2H3 UNA H31 UNA:1H3 UNA H22 UNA:2H2 UNA H21 UNA:1H2 UNA H221 UNB:1H22 UNB H222 UNB:2H22 UNB H231 UNB:1H23 UNB H232 UNB:2H23 UNB H233 UNB:3H23 UNB H271 UNB:1H27 UNB H272 UNB:2H27 UNB H351 UNB:1H35 UNB H352 UNB:2H35 UNB HN51 UNC:1HN5 UNC HN52 UNC:2HN5 UNC H11 UND:1H1 UND H12 UND:2H1 UND H13 UND:3H1 UND H21 UND:1H2 UND H22 UND:2H2 UND H31 UND:1H3 UND H32 UND:2H3 UND H41 UND:1H4 UND H42 UND:2H4 UND H51 UND:1H5 UND H52 UND:2H5 UND H61 UND:1H6 UND H62 UND:2H6 UND H71 UND:1H7 UND H72 UND:2H7 UND H81 UND:1H8 UND H82 UND:2H8 UND H91 UND:1H9 UND H92 UND:2H9 UND H101 UND:1H10 UND H102 UND:2H10 UND H111 UND:1H11 UND H112 UND:2H11 UND H113 UND:3H11 UND H4C1 UNG:1H4C UNG H41 UNH:1H4 UNH H42A UNH:2H4 UNH H61 UNH:1H6 UNH H62 UNH:2H6 UNH H63 UNH:3H6 UNH H71 UNH:1H7 UNH H72 UNH:2H7 UNH H73 UNH:3H7 UNH H111 UNH:1H11 UNH H112 UNH:2H11 UNH H121 UNH:1H12 UNH H122 UNH:2H12 UNH H131 UNH:1H13 UNH H132 UNH:2H13 UNH H141 UNH:1H14 UNH H142 UNH:2H14 UNH H151 UNH:1H15 UNH H152 UNH:2H15 UNH H201 UNH:1H20 UNH H202 UNH:2H20 UNH H221 UNH:1H22 UNH H222 UNH:2H22 UNH H223 UNH:3H22 UNH H231 UNH:1H23 UNH H232 UNH:2H23 UNH H233 UNH:3H23 UNH H281 UNH:1H28 UNH H282 UNH:2H28 UNH H291 UNH:1H29 UNH H292 UNH:2H29 UNH H301 UNH:1H30 UNH H302 UNH:2H30 UNH H303 UNH:3H30 UNH H351 UNH:1H35 UNH H352 UNH:2H35 UNH H491 UNH:1H49 UNH H492 UNH:2H49 UNH HG31 UNI:1HG3 UNI HG32 UNI:2HG3 UNI HG41 UNI:1HG4 UNI HG42 UNI:2HG4 UNI HD11 UNI:1HD1 UNI HD12 UNI:2HD1 UNI HD21 UNI:1HD2 UNI HD22 UNI:2HD2 UNI HD31 UNI:1HD3 UNI HD32 UNI:2HD3 UNI HD41 UNI:1HD4 UNI HD42 UNI:2HD4 UNI HD51 UNI:1HD5 UNI HD52 UNI:2HD5 UNI HD61 UNI:1HD6 UNI HD62 UNI:2HD6 UNI H UNK: HN UNK H2 UNK:2HN UNK HB1 UNK:1HB UNK HB2 UNK:2HB UNK HG1 UNK:1HG UNK HG2 UNK:2HG UNK HG3 UNK:3HG UNK H311 UNN:1H31 UNN H312 UNN:2H31 UNN H313 UNN:3H31 UNN H131 UNO:1H13 UNO H132 UNO:2H13 UNO H31 UNO:1H3 UNO H32 UNO:2H3 UNO H51 UNO:1H5 UNO H52 UNO:2H5 UNO H61 UNO:1H6 UNO H62 UNO:2H6 UNO H331 UNO:1H33 UNO H332 UNO:2H33 UNO H091 UNU:1H09 UNU H092 UNU:2H09 UNU H1' UP1: H1* UP1 H2' UP1: H2* UP1 H3' UP1: H3* UP1 H4' UP1: H4* UP1 H5'1 UP1:1H5* UP1 H5'2 UP1:2H5* UP1 H61 UP1:1H6 UP1 H62 UP1:2H6 UP1 H8A UP5: AH8 UP5 H61A UP5:AH61 UP5 H62A UP5:AH62 UP5 H2A UP5: AH2 UP5 H51A UP5:AH51 UP5 H52A UP5:AH52 UP5 H4F UP5:AH4* UP5 H3F UP5:AH3* UP5 HO3A UP5:AHO3 UP5 H2F UP5:AH2* UP5 HO2A UP5:AHO2 UP5 H1F UP5:AH1* UP5 HOA2 UP5:2HOA UP5 HOB2 UP5:2HOB UP5 HOG2 UP5:2HOG UP5 HOD2 UP5:2HOD UP5 HOE2 UP5:2HOE UP5 H51U UP5:UH51 UP5 H52U UP5:UH52 UP5 H4J UP5:UH4* UP5 H3J UP5:UH3* UP5 HO3' UP5:*HO3 UP5 H2J UP5:UH2* UP5 HO2' UP5:*HO2 UP5 H1J UP5:UH1* UP5 H3U UP5: UH3 UP5 H5U UP5: UH5 UP5 H6U UP5: UH6 UP5 H1' UP6: H1* UP6 H2' UP6: H2* UP6 H3' UP6: H3* UP6 H4' UP6: H4* UP6 HO2' UP6:*HO2 UP6 HO3' UP6:*HO3 UP6 H5'1 UP6:1H5* UP6 H5'2 UP6:2H5* UP6 HOP2 UP6:2HOP UP6 HOP3 UP6:3HOP UP6 H5U1 UPA:1H5U UPA H5U2 UPA:2H5U UPA HOU5 UPA:5HOU UPA H4U' UPA:*H4U UPA H3U' UPA:*H3U UPA HOU3 UPA:3HOU UPA H2U' UPA:*H2U UPA H1U' UPA:*H1U UPA HOP2 UPA:2HOP UPA H5A1 UPA:1H5A UPA H5A2 UPA:2H5A UPA H4A' UPA:*H4A UPA H3A' UPA:*H3A UPA HOA3 UPA:3HOA UPA H2A' UPA:*H2A UPA HOA2 UPA:2HOA UPA H1A' UPA:*H1A UPA H6A1 UPA:1H6A UPA H6A2 UPA:2H6A UPA H1D UPF: H1* UPF H2D UPF: H2* UPF HO2' UPF:*HO2 UPF H3D UPF: H3* UPF H4D UPF: H4* UPF HO3' UPF:*HO3 UPF H5'1 UPF:1H5* UPF H5'2 UPF:2H5* UPF HOA2 UPF:2HOA UPF HOB2 UPF:2HOB UPF H6'1 UPF:1H6' UPF H6'2 UPF:2H6' UPF HO3A UPF:'HO3 UPF HO4' UPF:'HO4 UPF HO6' UPF:'HO6 UPF H1C UPG: H1* UPG H2C UPG: H2* UPG HO2C UPG:*HO2 UPG H3C UPG: H3* UPG H4C UPG: H4* UPG HO3C UPG:*HO3 UPG H5C1 UPG:1H5* UPG H5C2 UPG:2H5* UPG HOA2 UPG:2HOA UPG HOB2 UPG:2HOB UPG H6'1 UPG:1H6' UPG H6'2 UPG:2H6' UPG HO2' UPG:'HO2 UPG HO3' UPG:'HO3 UPG HO4' UPG:'HO4 UPG HO6' UPG:'HO6 UPG H11 UPL:1H1 UPL H12 UPL:2H1 UPL H13 UPL:3H1 UPL H21 UPL:1H2 UPL H22 UPL:2H2 UPL H31 UPL:1H3 UPL H32 UPL:2H3 UPL H41 UPL:1H4 UPL H42 UPL:2H4 UPL H51 UPL:1H5 UPL H52 UPL:2H5 UPL H61 UPL:1H6 UPL H62 UPL:2H6 UPL H71 UPL:1H7 UPL H72 UPL:2H7 UPL H81 UPL:1H8 UPL H82 UPL:2H8 UPL H91 UPL:1H9 UPL H92 UPL:2H9 UPL H101 UPL:1H10 UPL H102 UPL:2H10 UPL H111 UPL:1H11 UPL H112 UPL:2H11 UPL H121 UPL:1H12 UPL H131 UPL:1H13 UPL H132 UPL:2H13 UPL H141 UPL:1H14 UPL H142 UPL:2H14 UPL H151 UPL:1H15 UPL H152 UPL:2H15 UPL H161 UPL:1H16 UPL H162 UPL:2H16 UPL H171 UPL:1H17 UPL H172 UPL:2H17 UPL H181 UPL:1H18 UPL H182 UPL:2H18 UPL H191 UPL:1H19 UPL H192 UPL:2H19 UPL H201 UPL:1H20 UPL H202 UPL:2H20 UPL H211 UPL:1H21 UPL H212 UPL:2H21 UPL H221 UPL:1H22 UPL H222 UPL:2H22 UPL H231 UPL:1H23 UPL H232 UPL:2H23 UPL H241 UPL:1H24 UPL H242 UPL:2H24 UPL H251 UPL:1H25 UPL H252 UPL:2H25 UPL H253 UPL:3H25 UPL H261 UPL:1H26 UPL H262 UPL:2H26 UPL H271 UPL:1H27 UPL H272 UPL:2H27 UPL H281 UPL:1H28 UPL H282 UPL:2H28 UPL H291 UPL:1H29 UPL H292 UPL:2H29 UPL H301 UPL:1H30 UPL H302 UPL:2H30 UPL H311 UPL:1H31 UPL H312 UPL:2H31 UPL H321 UPL:1H32 UPL H322 UPL:2H32 UPL H331 UPL:1H33 UPL H332 UPL:2H33 UPL H341 UPL:1H34 UPL H342 UPL:2H34 UPL H343 UPL:3H34 UPL HOA2 UPM:2HOA UPM HOB2 UPM:2HOB UPM H1' UPM: H1* UPM H2' UPM: H2* UPM HO'2 UPM:2HO* UPM H3' UPM: H3* UPM HO'3 UPM:3HO* UPM H4' UPM: H4* UPM H5'1 UPM:1H5* UPM H5'2 UPM:2H5* UPM H201 UPM:1H20 UPM H202 UPM:2H20 UPM H203 UPM:3H20 UPM HND2 UPM:2HND UPM H8D1 UPM:1H8D UPM H8D2 UPM:2H8D UPM HOD4 UPM:4HOD UPM H6D1 UPM:1H6D UPM H6D2 UPM:2H6D UPM HOD6 UPM:6HOD UPM H1' UPP: H1* UPP H2B UPP: H2* UPP HO2' UPP:*HO2 UPP H3B UPP: H3* UPP H4B UPP: H4* UPP HO3' UPP:*HO3 UPP H5'1 UPP:1H5* UPP H5'2 UPP:2H5* UPP HOA2 UPP:2HOA UPP HOB2 UPP:2HOB UPP H5'1 UPR:1H5* UPR H5'2 UPR:2H5* UPR H4' UPR: H4* UPR H3' UPR: H3* UPR H2'1 UPR:1H2* UPR H2'2 UPR:2H2* UPR H1' UPR: H1* UPR H1'A UPU:H1*A UPU H2AC UPU:CH2A UPU H2AO UPU:OH2A UPU H3AC UPU:CH3A UPU H3AO UPU:OH3A UPU H4'A UPU:H4*A UPU H'A1 UPU:1H*A UPU H'A2 UPU:2H*A UPU H3BC UPU:CH3B UPU H4'B UPU:H4*B UPU H'B1 UPU:1H*B UPU H'B2 UPU:2H*B UPU H5'B UPU:H5*B UPU H2BC UPU:CH2B UPU H2BO UPU:OH2B UPU H1'B UPU:H1*B UPU HM51 UQ:1HM5 UQ HM52 UQ:2HM5 UQ HM53 UQ:3HM5 UQ HM31 UQ:1HM3 UQ HM32 UQ:2HM3 UQ HM33 UQ:3HM3 UQ HM21 UQ:1HM2 UQ HM22 UQ:2HM2 UQ HM23 UQ:3HM2 UQ H71 UQ:1H7 UQ H72 UQ:2H7 UQ H101 UQ:1H10 UQ H102 UQ:2H10 UQ H103 UQ:3H10 UQ H111 UQ:1H11 UQ H112 UQ:2H11 UQ H121 UQ:1H12 UQ H122 UQ:2H12 UQ H151 UQ:1H15 UQ H152 UQ:2H15 UQ H153 UQ:3H15 UQ H161 UQ:1H16 UQ H162 UQ:2H16 UQ H171 UQ:1H17 UQ H172 UQ:2H17 UQ H201 UQ:1H20 UQ H202 UQ:2H20 UQ H203 UQ:3H20 UQ H211 UQ:1H21 UQ H212 UQ:2H21 UQ H221 UQ:1H22 UQ H222 UQ:2H22 UQ H251 UQ:1H25 UQ H252 UQ:2H25 UQ H253 UQ:3H25 UQ H261 UQ:1H26 UQ H262 UQ:2H26 UQ H271 UQ:1H27 UQ H272 UQ:2H27 UQ H301 UQ:1H30 UQ H302 UQ:2H30 UQ H303 UQ:3H30 UQ H311 UQ:1H31 UQ H312 UQ:2H31 UQ H321 UQ:1H32 UQ H322 UQ:2H32 UQ H351 UQ:1H35 UQ H352 UQ:2H35 UQ H353 UQ:3H35 UQ H361 UQ:1H36 UQ H362 UQ:2H36 UQ H371 UQ:1H37 UQ H372 UQ:2H37 UQ H401 UQ:1H40 UQ H402 UQ:2H40 UQ H403 UQ:3H40 UQ H411 UQ:1H41 UQ H412 UQ:2H41 UQ H421 UQ:1H42 UQ H422 UQ:2H42 UQ H451 UQ:1H45 UQ H452 UQ:2H45 UQ H453 UQ:3H45 UQ H461 UQ:1H46 UQ H462 UQ:2H46 UQ H471 UQ:1H47 UQ H472 UQ:2H47 UQ H501 UQ:1H50 UQ H502 UQ:2H50 UQ H503 UQ:3H50 UQ H511 UQ:1H51 UQ H512 UQ:2H51 UQ H521 UQ:1H52 UQ H522 UQ:2H52 UQ H551 UQ:1H55 UQ H552 UQ:2H55 UQ H553 UQ:3H55 UQ H561 UQ:1H56 UQ H562 UQ:2H56 UQ H563 UQ:3H56 UQ HM21 UQ1:1HM2 UQ1 HM22 UQ1:2HM2 UQ1 HM23 UQ1:3HM2 UQ1 HM31 UQ1:1HM3 UQ1 HM32 UQ1:2HM3 UQ1 HM33 UQ1:3HM3 UQ1 HM51 UQ1:1HM5 UQ1 HM52 UQ1:2HM5 UQ1 HM53 UQ1:3HM5 UQ1 H71 UQ1:1H7 UQ1 H72 UQ1:2H7 UQ1 H101 UQ1:1H10 UQ1 H102 UQ1:2H10 UQ1 H103 UQ1:3H10 UQ1 H111 UQ1:1H11 UQ1 H112 UQ1:2H11 UQ1 H113 UQ1:3H11 UQ1 H2M1 UQ2:1H2M UQ2 H2M2 UQ2:2H2M UQ2 H2M3 UQ2:3H2M UQ2 H3M1 UQ2:1H3M UQ2 H3M2 UQ2:2H3M UQ2 H3M3 UQ2:3H3M UQ2 H5M1 UQ2:1H5M UQ2 H5M2 UQ2:2H5M UQ2 H5M3 UQ2:3H5M UQ2 H71 UQ2:1H7 UQ2 H72 UQ2:2H7 UQ2 H101 UQ2:1H10 UQ2 H102 UQ2:2H10 UQ2 H103 UQ2:3H10 UQ2 H111 UQ2:1H11 UQ2 H112 UQ2:2H11 UQ2 H121 UQ2:1H12 UQ2 H122 UQ2:2H12 UQ2 H151 UQ2:1H15 UQ2 H152 UQ2:2H15 UQ2 H153 UQ2:3H15 UQ2 H161 UQ2:1H16 UQ2 H162 UQ2:2H16 UQ2 H163 UQ2:3H16 UQ2 H1M1 UQ5:1H1M UQ5 H1M2 UQ5:2H1M UQ5 H1M3 UQ5:3H1M UQ5 H3M1 UQ5:1H3M UQ5 H3M2 UQ5:2H3M UQ5 H3M3 UQ5:3H3M UQ5 H4M1 UQ5:1H4M UQ5 H4M2 UQ5:2H4M UQ5 H4M3 UQ5:3H4M UQ5 H71 UQ5:1H7 UQ5 H72 UQ5:2H7 UQ5 H101 UQ5:1H10 UQ5 H102 UQ5:2H10 UQ5 H103 UQ5:3H10 UQ5 H111 UQ5:1H11 UQ5 H112 UQ5:2H11 UQ5 H121 UQ5:1H12 UQ5 H122 UQ5:2H12 UQ5 H151 UQ5:1H15 UQ5 H152 UQ5:2H15 UQ5 H153 UQ5:3H15 UQ5 H161 UQ5:1H16 UQ5 H162 UQ5:2H16 UQ5 H171 UQ5:1H17 UQ5 H172 UQ5:2H17 UQ5 H201 UQ5:1H20 UQ5 H202 UQ5:2H20 UQ5 H203 UQ5:3H20 UQ5 H211 UQ5:1H21 UQ5 H212 UQ5:2H21 UQ5 H221 UQ5:1H22 UQ5 H222 UQ5:2H22 UQ5 H251 UQ5:1H25 UQ5 H252 UQ5:2H25 UQ5 H253 UQ5:3H25 UQ5 H261 UQ5:1H26 UQ5 H262 UQ5:2H26 UQ5 H271 UQ5:1H27 UQ5 H272 UQ5:2H27 UQ5 H301 UQ5:1H30 UQ5 H302 UQ5:2H30 UQ5 H303 UQ5:3H30 UQ5 H311 UQ5:1H31 UQ5 H312 UQ5:2H31 UQ5 H313 UQ5:3H31 UQ5 H1M1 UQ6:1H1M UQ6 H1M2 UQ6:2H1M UQ6 H1M3 UQ6:3H1M UQ6 H3M1 UQ6:1H3M UQ6 H3M2 UQ6:2H3M UQ6 H3M3 UQ6:3H3M UQ6 H4M1 UQ6:1H4M UQ6 H4M2 UQ6:2H4M UQ6 H4M3 UQ6:3H4M UQ6 H71 UQ6:1H7 UQ6 H72 UQ6:2H7 UQ6 H101 UQ6:1H10 UQ6 H102 UQ6:2H10 UQ6 H103 UQ6:3H10 UQ6 H111 UQ6:1H11 UQ6 H112 UQ6:2H11 UQ6 H121 UQ6:1H12 UQ6 H122 UQ6:2H12 UQ6 H151 UQ6:1H15 UQ6 H152 UQ6:2H15 UQ6 H153 UQ6:3H15 UQ6 H161 UQ6:1H16 UQ6 H162 UQ6:2H16 UQ6 H171 UQ6:1H17 UQ6 H172 UQ6:2H17 UQ6 H201 UQ6:1H20 UQ6 H202 UQ6:2H20 UQ6 H203 UQ6:3H20 UQ6 H211 UQ6:1H21 UQ6 H212 UQ6:2H21 UQ6 H221 UQ6:1H22 UQ6 H222 UQ6:2H22 UQ6 H251 UQ6:1H25 UQ6 H252 UQ6:2H25 UQ6 H253 UQ6:3H25 UQ6 H261 UQ6:1H26 UQ6 H262 UQ6:2H26 UQ6 H271 UQ6:1H27 UQ6 H272 UQ6:2H27 UQ6 H301 UQ6:1H30 UQ6 H302 UQ6:2H30 UQ6 H303 UQ6:3H30 UQ6 H311 UQ6:1H31 UQ6 H312 UQ6:2H31 UQ6 H321 UQ6:1H32 UQ6 H322 UQ6:2H32 UQ6 H351 UQ6:1H35 UQ6 H352 UQ6:2H35 UQ6 H353 UQ6:3H35 UQ6 H361 UQ6:1H36 UQ6 H362 UQ6:2H36 UQ6 H363 UQ6:3H36 UQ6 HM21 UQ7:1HM2 UQ7 HM22 UQ7:2HM2 UQ7 HM23 UQ7:3HM2 UQ7 HM31 UQ7:1HM3 UQ7 HM32 UQ7:2HM3 UQ7 HM33 UQ7:3HM3 UQ7 HM51 UQ7:1HM5 UQ7 HM52 UQ7:2HM5 UQ7 HM53 UQ7:3HM5 UQ7 H71 UQ7:1H7 UQ7 H72 UQ7:2H7 UQ7 H101 UQ7:1H10 UQ7 H102 UQ7:2H10 UQ7 H103 UQ7:3H10 UQ7 H111 UQ7:1H11 UQ7 H112 UQ7:2H11 UQ7 H121 UQ7:1H12 UQ7 H122 UQ7:2H12 UQ7 H151 UQ7:1H15 UQ7 H152 UQ7:2H15 UQ7 H153 UQ7:3H15 UQ7 H161 UQ7:1H16 UQ7 H162 UQ7:2H16 UQ7 H171 UQ7:1H17 UQ7 H172 UQ7:2H17 UQ7 H201 UQ7:1H20 UQ7 H202 UQ7:2H20 UQ7 H203 UQ7:3H20 UQ7 H211 UQ7:1H21 UQ7 H212 UQ7:2H21 UQ7 H221 UQ7:1H22 UQ7 H222 UQ7:2H22 UQ7 H251 UQ7:1H25 UQ7 H252 UQ7:2H25 UQ7 H253 UQ7:3H25 UQ7 H261 UQ7:1H26 UQ7 H262 UQ7:2H26 UQ7 H271 UQ7:1H27 UQ7 H272 UQ7:2H27 UQ7 H301 UQ7:1H30 UQ7 H302 UQ7:2H30 UQ7 H303 UQ7:3H30 UQ7 H311 UQ7:1H31 UQ7 H312 UQ7:2H31 UQ7 H321 UQ7:1H32 UQ7 H322 UQ7:2H32 UQ7 H351 UQ7:1H35 UQ7 H352 UQ7:2H35 UQ7 H353 UQ7:3H35 UQ7 H361 UQ7:1H36 UQ7 H362 UQ7:2H36 UQ7 H371 UQ7:1H37 UQ7 H372 UQ7:2H37 UQ7 H401 UQ7:1H40 UQ7 H402 UQ7:2H40 UQ7 H403 UQ7:3H40 UQ7 H411 UQ7:1H41 UQ7 H412 UQ7:2H41 UQ7 H413 UQ7:3H41 UQ7 H171 UR2:1H17 UR2 H172 UR2:2H17 UR2 H181 UR2:1H18 UR2 H182 UR2:2H18 UR2 H251 UR2:1H25 UR2 H252 UR2:2H25 UR2 H253 UR2:3H25 UR2 H261 UR2:1H26 UR2 H262 UR2:2H26 UR2 H271 UR2:1H27 UR2 H272 UR2:2H27 UR2 H281 UR2:1H28 UR2 H282 UR2:2H28 UR2 H301 UR2:1H30 UR2 H302 UR2:2H30 UR2 H311 UR2:1H31 UR2 H312 UR2:2H31 UR2 H321 UR2:1H32 UR2 H322 UR2:2H32 UR2 H331 UR2:1H33 UR2 H332 UR2:2H33 UR2 H341 UR2:1H34 UR2 H342 UR2:2H34 UR2 H71 UR2:1H7 UR2 H72 UR2:2H7 UR2 H91 UR2:1H9 UR2 H92 UR2:2H9 UR2 HOP2 UR2:2HOP UR2 HOP3 UR2:3HOP UR2 HOP2 UR3:2HOP UR3 H5' UR3:1H5* UR3 H5'' UR3:2H5* UR3 H4' UR3: H4* UR3 H1' UR3: H1* UR3 H3U1 UR3:1H3U UR3 H3U2 UR3:2H3U UR3 H3U3 UR3:3H3U UR3 H2' UR3: H2* UR3 HO2' UR3:2HO* UR3 H3' UR3: H3* UR3 HO3' UR3:H3T UR3 HOP3 UR3:3HOP UR3 HO5' URD:*HO5 URD H5' URD:1H5* URD H5'' URD:2H5* URD H4' URD: H4* URD H1' URD: H1* URD H31 URD:1H3 URD H32 URD:2H3 URD H2' URD: H2* URD HO2' URD:*HO2 URD H3' URD: H3* URD HO3' URD:*HO3 URD HN11 URE:1HN1 URE HN12 URE:2HN1 URE HN21 URE:1HN2 URE HN22 URE:2HN2 URE H1' URI: H1* URI H2' URI: H2* URI H3' URI: H3* URI H4' URI: H4* URI HO2' URI:*HO2 URI HO3' URI:*HO3 URI H5'1 URI:1H5* URI H5'2 URI:2H5* URI HO5' URI:*HO5 URI HN51 URN:1HN5 URN HN52 URN:2HN5 URN HN61 URN:1HN6 URN HN62 URN:2HN6 URN HN31 URP:1HN3 URP HN32 URP:2HN3 URP H61 URP:1H6 URP H62 URP:2H6 URP H51 URP:1H5 URP H52 URP:2H5 URP H5'1 US1:1H5* US1 H5'2 US1:2H5* US1 H4' US1: H4* US1 H3' US1: H3* US1 H2'1 US1:1H2* US1 H2'2 US1:2H2* US1 H1' US1: H1* US1 H1D USQ: H1* USQ H2D USQ: H2* USQ HO2' USQ:*HO2 USQ H3D USQ: H3* USQ H4D USQ: H4* USQ HO3' USQ:*HO3 USQ H5'1 USQ:1H5* USQ H5'2 USQ:2H5* USQ HOA2 USQ:2HOA USQ HOB2 USQ:2HOB USQ H6'1 USQ:1H6' USQ H6'2 USQ:2H6' USQ HO2A USQ:'HO2 USQ HO3A USQ:'HO3 USQ HO4' USQ:'HO4 USQ H5'1 UTP:1H5* UTP H5'2 UTP:2H5* UTP H4' UTP: H4* UTP H1' UTP: H1* UTP H2' UTP: H2* UTP H3' UTP: H3* UTP H1' UVC: H1* UVC H2' UVC: H2* UVC H3' UVC: H3* UVC H4' UVC: H4* UVC H5'1 UVC:1H5* UVC H5'2 UVC:2H5* UVC HO5' UVC:*HO5 UVC HOV1 UVC:1HOV UVC HOV3 UVC:3HOV UVC H1M1 UVW:1H1M UVW H1M2 UVW:2H1M UVW H1M3 UVW:3H1M UVW HOP2 UVW:2HOP UVW HOP3 UVW:3HOP UVW H1C1 UZ9:1H1C UZ9 H1C2 UZ9:2H1C UZ9 H2C1 UZ9:1H2C UZ9 H2C2 UZ9:2H2C UZ9 H4C1 UZ9:1H4C UZ9 H4C2 UZ9:2H4C UZ9 H6C1 UZ9:1H6C UZ9 H6C2 UZ9:2H6C UZ9 HN1 UZ9:1HN UZ9 HN2 UZ9:2HN UZ9 HBC1 UZ9:1HBC UZ9 HBC2 UZ9:2HBC UZ9 HGC1 UZ9:1HGC UZ9 HGC2 UZ9:2HGC UZ9 HDC1 UZ9:1HDC UZ9 HDC2 UZ9:2HDC UZ9 HEC1 UZ9:1HEC UZ9 HEC2 UZ9:2HEC UZ9 H231 UZ9:1H23 UZ9 H232 UZ9:2H23 UZ9 H221 UZ9:1H22 UZ9 H222 UZ9:2H22 UZ9 H211 UZ9:1H21 UZ9 H212 UZ9:2H21 UZ9 H213 UZ9:3H21 UZ9 H161 UZ9:1H16 UZ9 H162 UZ9:2H16 UZ9 H121 UZ9:1H12 UZ9 H122 UZ9:2H12 UZ9 H181 UZ9:1H18 UZ9 H182 UZ9:2H18 UZ9 H183 UZ9:3H18 UZ9 H151 UZ9:1H15 UZ9 H152 UZ9:2H15 UZ9 H7C1 UZ9:1H7C UZ9 H7C2 UZ9:2H7C UZ9 H111 UZ9:1H11 UZ9 H112 UZ9:2H11 UZ9 H191 UZ9:1H19 UZ9 H192 UZ9:2H19 UZ9 H193 UZ9:3H19 UZ9 HAA1 V12:1HAA V12 HAA2 V12:2HAA V12 HAN1 V12:1HAN V12 HAN2 V12:2HAN V12 HAL1 V12:1HAL V12 HAL2 V12:2HAL V12 H141 V15:1H14 V15 H142 V15:2H14 V15 H151 V15:1H15 V15 H152 V15:2H15 V15 H161 V15:1H16 V15 H162 V15:2H16 V15 H71 V35:1H7 V35 H72 V35:2H7 V35 H91 V35:1H9 V35 H92 V35:2H9 V35 H93 V35:3H9 V35 HOB1 V35:1HOB V35 HOB2 V35:2HOB V35 HOB3 V35:3HOB V35 H71 V36:1H7 V36 H72 V36:2H7 V36 H91 V36:1H9 V36 H92 V36:2H9 V36 H93 V36:3H9 V36 HOB1 V36:1HOB V36 HOB2 V36:2HOB V36 HOB3 V36:3HOB V36 HBI1 V5X:1HBI V5X HBI2 V5X:2HBI V5X HBI3 V5X:3HBI V5X HBP1 V5X:1HBP V5X HBP2 V5X:2HBP V5X HBP3 V5X:3HBP V5X HBH1 V5X:1HBH V5X HBH2 V5X:2HBH V5X HBC1 V5X:1HBC V5X HBC2 V5X:2HBC V5X HAV1 V5X:1HAV V5X HAV2 V5X:2HAV V5X HAW1 V5X:1HAW V5X HAW2 V5X:2HAW V5X HAX1 V5X:1HAX V5X HAX2 V5X:2HAX V5X HAY1 V5X:1HAY V5X HAY2 V5X:2HAY V5X HAQ1 V5X:1HAQ V5X HAQ2 V5X:2HAQ V5X HAP1 V5X:1HAP V5X HAP2 V5X:2HAP V5X H221 VA:1H22 VA H222 VA:2H22 VA H223 VA:3H22 VA H11A VA:1H1 VA H12A VA:2H1 VA H21 VA:1H2 VA H22 VA:2H2 VA H31 VA:1H3 VA H32 VA:2H3 VA H41 VA:1H4 VA H42 VA:2H4 VA H51 VA:1H5 VA H52 VA:2H5 VA H61 VA:1H6 VA H62 VA:2H6 VA H71 VA:1H7 VA H72 VA:2H7 VA H81 VA:1H8 VA H82 VA:2H8 VA H91 VA:1H9 VA H92 VA:2H9 VA H101 VA:1H10 VA H102 VA:2H10 VA H131 VA:1H13 VA H132 VA:2H13 VA H141 VA:1H14 VA H142 VA:2H14 VA H151 VA:1H15 VA H152 VA:2H15 VA H161 VA:1H16 VA H162 VA:2H16 VA H171 VA:1H17 VA H172 VA:2H17 VA H181 VA:1H18 VA H182 VA:2H18 VA H183 VA:3H18 VA H121 VA1:1H12 VA1 H122 VA1:2H12 VA1 HG11 VAA:1HG1 VAA HG12 VAA:2HG1 VAA HG13 VAA:3HG1 VAA HG21 VAA:1HG2 VAA HG22 VAA:2HG2 VAA HG23 VAA:3HG2 VAA HNS3 VAA:3HNS VAA HN'5 VAA:5HN* VAA H5'1 VAA:1H5* VAA H5'2 VAA:2H5* VAA H4' VAA: H4* VAA H1' VAA: H1* VAA H61 VAA:1H6 VAA H62 VAA:2H6 VAA H2' VAA: H2* VAA HO'2 VAA:2HO* VAA H3' VAA: H3* VAA HT'3 VAA:3HT* VAA H31 VAC:1H3 VAC H32 VAC:2H3 VAC H41 VAC:1H4 VAC H42 VAC:2H4 VAC H121 VAC:1H12 VAC H122 VAC:2H12 VAC HN19 VAC:9HN1 VAC HO22 VAC:2HO2 VAC H261 VAC:1H26 VAC H262 VAC:2H26 VAC H311 VAC:1H31 VAC H312 VAC:2H31 VAC H681 VAC:1H68 VAC H682 VAC:2H68 VAC HO70 VAC:0HO7 VAC HN86 VAC:6HN8 VAC HG11 VAD:1HG1 VAD HG12 VAD:2HG1 VAD HG13 VAD:3HG1 VAD HG21 VAD:1HG2 VAD HG22 VAD:2HG2 VAD HG23 VAD:3HG2 VAD HN1 VAF:1HN VAF HN2 VAF:2HN VAF HG11 VAF:1HG1 VAF HG12 VAF:2HG1 VAF HG13 VAF:3HG1 VAF HG21 VAF:1HG2 VAF HG22 VAF:2HG2 VAF HG23 VAF:3HG2 VAF HJ1 VAF:1HJ VAF HJ2 VAF:2HJ VAF HJ3 VAF:3HJ VAF H11A VAG:1H1 VAG H12 VAG:2H1 VAG H13 VAG:3H1 VAG HN21 VAG:1HN2 VAG HN22 VAG:2HN2 VAG H61A VAG:1H6 VAG H62A VAG:2H6 VAG H81 VAG:1H8 VAG H82 VAG:2H8 VAG H83 VAG:3H8 VAG H91 VAG:1H9 VAG H92 VAG:2H9 VAG H93 VAG:3H9 VAG H281 VAG:1H28 VAG H282 VAG:2H28 VAG HN11 VAG:1HN1 VAG HN12 VAG:2HN1 VAG HN43 VAG:3HN4 VAG H2 VAL: HN2 VAL HG11 VAL:1HG1 VAL HG12 VAL:2HG1 VAL HG13 VAL:3HG1 VAL HG21 VAL:1HG2 VAL HG22 VAL:2HG2 VAL HG23 VAL:3HG2 VAL H11A VAN:1H1 VAN H12 VAN:2H1 VAN H13 VAN:3H1 VAN HN21 VAN:1HN2 VAN HN22 VAN:2HN2 VAN H61A VAN:1H6 VAN H62A VAN:2H6 VAN H81 VAN:1H8 VAN H82 VAN:2H8 VAN H83 VAN:3H8 VAN H91 VAN:1H9 VAN H92 VAN:2H9 VAN H93 VAN:3H9 VAN H281 VAN:1H28 VAN H282 VAN:2H28 VAN HN11 VAN:1HN1 VAN HN12 VAN:2HN1 VAN HN43 VAN:3HN4 VAN HO3' VAN:'HO3 VAN HO4' VAN:'HO4 VAN H6'1 VAN:1H6' VAN H6'2 VAN:2H6' VAN HO6' VAN:'HO6 VAN H1B VAN: H1" VAN H2'1 VAN:1H2" VAN H2'2 VAN:2H2" VAN HN31 VAN:1HN3 VAN HN32 VAN:2HN3 VAN HN33 VAN:3HN3 VAN H3M1 VAN:1H3M VAN H3M2 VAN:2H3M VAN H3M3 VAN:3H3M VAN H4B VAN: H4" VAN HO4A VAN:"HO4 VAN H5B VAN: H5" VAN H5M1 VAN:1H5M VAN H5M2 VAN:2H5M VAN H5M3 VAN:3H5M VAN H11 VAS:1H1 VAS H12 VAS:2H1 VAS H13 VAS:3H1 VAS H2'1 VAS:1H2' VAS H2'2 VAS:2H2' VAS H2'3 VAS:3H2' VAS H3'1 VAS:1H3' VAS H3'2 VAS:2H3' VAS H3'3 VAS:3H3' VAS H11A VAX:1H1 VAX H12 VAX:2H1 VAX H13 VAX:3H1 VAX HN21 VAX:1HN2 VAX HN22 VAX:2HN2 VAX H61A VAX:1H6 VAX H62A VAX:2H6 VAX H81A VAX:1H8 VAX H82 VAX:2H8 VAX H83A VAX:3H8 VAX H91 VAX:1H9 VAX H92 VAX:2H9 VAX H93 VAX:3H9 VAX H281 VAX:1H28 VAX H282 VAX:2H28 VAX HN11 VAX:1HN1 VAX HN12 VAX:2HN1 VAX H841 VAX:1H84 VAX H842 VAX:2H84 VAX H843 VAX:3H84 VAX HN81 VAX:1HN8 VAX HN82 VAX:2HN8 VAX HN83 VAX:3HN8 VAX H891 VAX:1H89 VAX H892 VAX:2H89 VAX H893 VAX:3H89 VAX H901 VAX:1H90 VAX H902 VAX:2H90 VAX HO3' VAX:'HO3 VAX HO4' VAX:'HO4 VAX H6'1 VAX:1H6' VAX H6'2 VAX:2H6' VAX HO6' VAX:'HO6 VAX H1B VAX: H1" VAX H2'1 VAX:1H2" VAX H2'2 VAX:2H2" VAX HN31 VAX:1HN3 VAX HN32 VAX:2HN3 VAX HN33 VAX:3HN3 VAX H3M1 VAX:1H3M VAX H3M2 VAX:2H3M VAX H3M3 VAX:3H3M VAX H4B VAX: H4" VAX HO4A VAX:"HO4 VAX H5B VAX: H5" VAX H5M1 VAX:1H5M VAX H5M2 VAX:2H5M VAX H5M3 VAX:3H5M VAX H21 VCA:1H2 VCA H22 VCA:2H2 VCA H31 VCA:1H3 VCA H32 VCA:2H3 VCA H41 VCA:1H4 VCA H42 VCA:2H4 VCA H51 VCA:1H5 VCA H52 VCA:2H5 VCA H61 VCA:1H6 VCA H62 VCA:2H6 VCA H71 VCA:1H7 VCA H72 VCA:2H7 VCA H81 VCA:1H8 VCA H82 VCA:2H8 VCA H91 VCA:1H9 VCA H92 VCA:2H9 VCA H101 VCA:1H10 VCA H102 VCA:2H10 VCA H131 VCA:1H13 VCA H132 VCA:2H13 VCA H141 VCA:1H14 VCA H142 VCA:2H14 VCA H151 VCA:1H15 VCA H152 VCA:2H15 VCA H161 VCA:1H16 VCA H162 VCA:2H16 VCA H171 VCA:1H17 VCA H172 VCA:2H17 VCA H181 VCA:1H18 VCA H182 VCA:2H18 VCA H183 VCA:3H18 VCA H281 VD1:1H28 VD1 H282 VD1:2H28 VD1 H41 VD1:1H4 VD1 H42 VD1:2H4 VD1 H101 VD1:1H10 VD1 H102 VD1:2H10 VD1 H91 VD1:1H9 VD1 H92 VD1:2H9 VD1 H111 VD1:1H11 VD1 H112 VD1:2H11 VD1 H121 VD1:1H12 VD1 H122 VD1:2H12 VD1 H181 VD1:1H18 VD1 H182 VD1:2H18 VD1 H183 VD1:3H18 VD1 H151 VD1:1H15 VD1 H152 VD1:2H15 VD1 H161 VD1:1H16 VD1 H162 VD1:2H16 VD1 H211 VD1:1H21 VD1 H212 VD1:2H21 VD1 H213 VD1:3H21 VD1 H221 VD1:1H22 VD1 H222 VD1:2H22 VD1 H231 VD1:1H23 VD1 H232 VD1:2H23 VD1 H233 VD1:3H23 VD1 H271 VD2:1H27 VD2 H272 VD2:2H27 VD2 H273 VD2:3H27 VD2 H261 VD2:1H26 VD2 H262 VD2:2H26 VD2 H263 VD2:3H26 VD2 H241 VD2:1H24 VD2 H242 VD2:2H24 VD2 H231 VD2:1H23 VD2 H232 VD2:2H23 VD2 H221 VD2:1H22 VD2 H222 VD2:2H22 VD2 H211 VD2:1H21 VD2 H212 VD2:2H21 VD2 H213 VD2:3H21 VD2 H161 VD2:1H16 VD2 H162 VD2:2H16 VD2 H181 VD2:1H18 VD2 H182 VD2:2H18 VD2 H183 VD2:3H18 VD2 H151 VD2:1H15 VD2 H152 VD2:2H15 VD2 H121 VD2:1H12 VD2 H122 VD2:2H12 VD2 H111 VD2:1H11 VD2 H112 VD2:2H11 VD2 H91 VD2:1H9 VD2 H92 VD2:2H9 VD2 H101 VD2:1H10 VD2 H102 VD2:2H10 VD2 H41 VD2:1H4 VD2 H42 VD2:2H4 VD2 H281 VD2:1H28 VD2 H282 VD2:2H28 VD2 H283 VD2:3H28 VD2 H11 VD3:1H1 VD3 H12 VD3:2H1 VD3 H21 VD3:1H2 VD3 H22 VD3:2H2 VD3 H41 VD3:1H4 VD3 H42 VD3:2H4 VD3 H101 VD3:1H10 VD3 H102 VD3:2H10 VD3 H111 VD3:1H11 VD3 H112 VD3:2H11 VD3 H121 VD3:1H12 VD3 H122 VD3:2H12 VD3 H151 VD3:1H15 VD3 H152 VD3:2H15 VD3 H161 VD3:1H16 VD3 H162 VD3:2H16 VD3 H181 VD3:1H18 VD3 H182 VD3:2H18 VD3 H183 VD3:3H18 VD3 H191 VD3:1H19 VD3 H192 VD3:2H19 VD3 H211 VD3:1H21 VD3 H212 VD3:2H21 VD3 H213 VD3:3H21 VD3 H221 VD3:1H22 VD3 H222 VD3:2H22 VD3 H231 VD3:1H23 VD3 H232 VD3:2H23 VD3 H241 VD3:1H24 VD3 H242 VD3:2H24 VD3 H261 VD3:1H26 VD3 H262 VD3:2H26 VD3 H263 VD3:3H26 VD3 H271 VD3:1H27 VD3 H272 VD3:2H27 VD3 H273 VD3:3H27 VD3 H261 VD4:1H26 VD4 H262 VD4:2H26 VD4 H263 VD4:3H26 VD4 H271 VD4:1H27 VD4 H272 VD4:2H27 VD4 H273 VD4:3H27 VD4 H241 VD4:1H24 VD4 H242 VD4:2H24 VD4 H231 VD4:1H23 VD4 H232 VD4:2H23 VD4 H221 VD4:1H22 VD4 H222 VD4:2H22 VD4 H211 VD4:1H21 VD4 H212 VD4:2H21 VD4 H213 VD4:3H21 VD4 H181 VD4:1H18 VD4 H182 VD4:2H18 VD4 H183 VD4:3H18 VD4 H121 VD4:1H12 VD4 H122 VD4:2H12 VD4 H111 VD4:1H11 VD4 H112 VD4:2H11 VD4 H91 VD4:1H9 VD4 H92 VD4:2H9 VD4 H161 VD4:1H16 VD4 H162 VD4:2H16 VD4 H151 VD4:1H15 VD4 H152 VD4:2H15 VD4 H101 VD4:1H10 VD4 H102 VD4:2H10 VD4 H41 VD4:1H4 VD4 H42 VD4:2H4 VD4 H281 VD4:1H28 VD4 H282 VD4:2H28 VD4 H281 VD5:1H28 VD5 H282 VD5:2H28 VD5 H101 VD5:1H10 VD5 H102 VD5:2H10 VD5 H41 VD5:1H4 VD5 H42 VD5:2H4 VD5 H91 VD5:1H9 VD5 H92 VD5:2H9 VD5 H111 VD5:1H11 VD5 H112 VD5:2H11 VD5 H121 VD5:1H12 VD5 H122 VD5:2H12 VD5 H181 VD5:1H18 VD5 H182 VD5:2H18 VD5 H183 VD5:3H18 VD5 H151 VD5:1H15 VD5 H152 VD5:2H15 VD5 H161 VD5:1H16 VD5 H162 VD5:2H16 VD5 H211 VD5:1H21 VD5 H212 VD5:2H21 VD5 H213 VD5:3H21 VD5 H221 VD5:1H22 VD5 H222 VD5:2H22 VD5 H231 VD5:1H23 VD5 H232 VD5:2H23 VD5 H241 VD5:1H24 VD5 H242 VD5:2H24 VD5 H271 VD5:1H27 VD5 H272 VD5:2H27 VD5 H273 VD5:3H27 VD5 H261 VD5:1H26 VD5 H262 VD5:2H26 VD5 H263 VD5:3H26 VD5 HN1 VDL:1HN VDL HN2 VDL:2HN VDL HG11 VDL:1HG1 VDL HG12 VDL:2HG1 VDL HG13 VDL:3HG1 VDL HG21 VDL:1HG2 VDL HG22 VDL:2HG2 VDL H7C1 VDM:1H7C VDM H7C2 VDM:2H7C VDM H1' VDM: H1* VDM H2' VDM: H2* VDM H6'1 VDM:1H6* VDM H6'2 VDM:2H6* VDM H3' VDM: H3* VDM H5' VDM: H5* VDM H7'1 VDM:1H7* VDM H7'2 VDM:2H7* VDM H4' VDM: H4* VDM H7' VDM: H7* VDM H11 VDN:1H1 VDN H12 VDN:2H1 VDN H13 VDN:3H1 VDN H21 VDN:1H2 VDN H22 VDN:2H2 VDN H131 VDN:1H13 VDN H132 VDN:2H13 VDN H133 VDN:3H13 VDN H151 VDN:1H15 VDN H152 VDN:2H15 VDN H161 VDN:1H16 VDN H162 VDN:2H16 VDN H181 VDN:1H18 VDN H182 VDN:2H18 VDN H191 VDN:1H19 VDN H192 VDN:2H19 VDN H201 VDN:1H20 VDN H202 VDN:2H20 VDN H311 VDN:1H31 VDN H312 VDN:2H31 VDN H313 VDN:3H31 VDN H321 VDN:1H32 VDN H322 VDN:2H32 VDN H331 VDN:1H33 VDN H332 VDN:2H33 VDN H341 VDN:1H34 VDN H342 VDN:2H34 VDN H343 VDN:3H34 VDN H11 VDX:1H1 VDX H21 VDX:1H2 VDX H22 VDX:2H2 VDX H31 VDX:1H3 VDX H41 VDX:1H4 VDX H42 VDX:2H4 VDX H61 VDX:1H6 VDX H71 VDX:1H7 VDX H91 VDX:1H9 VDX H92 VDX:2H9 VDX H111 VDX:1H11 VDX H112 VDX:2H11 VDX H121 VDX:1H12 VDX H122 VDX:2H12 VDX H141 VDX:1H14 VDX H151 VDX:1H15 VDX H152 VDX:2H15 VDX H161 VDX:1H16 VDX H162 VDX:2H16 VDX H171 VDX:1H17 VDX H181 VDX:1H18 VDX H182 VDX:2H18 VDX H183 VDX:3H18 VDX H191 VDX:1H19 VDX H192 VDX:2H19 VDX H201 VDX:1H20 VDX H211 VDX:1H21 VDX H212 VDX:2H21 VDX H213 VDX:3H21 VDX H221 VDX:1H22 VDX H222 VDX:2H22 VDX H231 VDX:1H23 VDX H232 VDX:2H23 VDX H241 VDX:1H24 VDX H242 VDX:2H24 VDX H261 VDX:1H26 VDX H262 VDX:2H26 VDX H263 VDX:3H26 VDX H271 VDX:1H27 VDX H272 VDX:2H27 VDX H273 VDX:3H27 VDX H11 VDY:1H1 VDY H12 VDY:2H1 VDY H21 VDY:1H2 VDY H22 VDY:2H2 VDY H31 VDY:1H3 VDY H41 VDY:1H4 VDY H42 VDY:2H4 VDY H61 VDY:1H6 VDY H71 VDY:1H7 VDY H91 VDY:1H9 VDY H92 VDY:2H9 VDY H111 VDY:1H11 VDY H112 VDY:2H11 VDY H121 VDY:1H12 VDY H122 VDY:2H12 VDY H141 VDY:1H14 VDY H151 VDY:1H15 VDY H152 VDY:2H15 VDY H161 VDY:1H16 VDY H162 VDY:2H16 VDY H171 VDY:1H17 VDY H181 VDY:1H18 VDY H182 VDY:2H18 VDY H183 VDY:3H18 VDY H191 VDY:1H19 VDY H192 VDY:2H19 VDY H201 VDY:1H20 VDY H211 VDY:1H21 VDY H212 VDY:2H21 VDY H213 VDY:3H21 VDY H221 VDY:1H22 VDY H222 VDY:2H22 VDY H231 VDY:1H23 VDY H232 VDY:2H23 VDY H241 VDY:1H24 VDY H242 VDY:2H24 VDY H261 VDY:1H26 VDY H262 VDY:2H26 VDY H263 VDY:3H26 VDY H271 VDY:1H27 VDY H272 VDY:2H27 VDY H273 VDY:3H27 VDY H281 VDZ:1H28 VDZ H282 VDZ:2H28 VDZ H41 VDZ:1H4 VDZ H42 VDZ:2H4 VDZ H101 VDZ:1H10 VDZ H102 VDZ:2H10 VDZ H91 VDZ:1H9 VDZ H92 VDZ:2H9 VDZ H111 VDZ:1H11 VDZ H112 VDZ:2H11 VDZ H121 VDZ:1H12 VDZ H122 VDZ:2H12 VDZ H181 VDZ:1H18 VDZ H182 VDZ:2H18 VDZ H183 VDZ:3H18 VDZ H151 VDZ:1H15 VDZ H152 VDZ:2H15 VDZ H161 VDZ:1H16 VDZ H162 VDZ:2H16 VDZ H211 VDZ:1H21 VDZ H212 VDZ:2H21 VDZ H213 VDZ:3H21 VDZ H221 VDZ:1H22 VDZ H222 VDZ:2H22 VDZ H231 VDZ:1H23 VDZ H232 VDZ:2H23 VDZ H241 VDZ:1H24 VDZ H242 VDZ:2H24 VDZ H261 VDZ:1H26 VDZ H262 VDZ:2H26 VDZ H263 VDZ:3H26 VDZ H271 VDZ:1H27 VDZ H272 VDZ:2H27 VDZ H273 VDZ:3H27 VDZ HMB1 VER:1HMB VER HMB2 VER:2HMB VER HMB3 VER:3HMB VER HBB1 VER:1HBB VER HBB2 VER:2HBB VER HMC1 VER:1HMC VER HMC2 VER:2HMC VER HMC3 VER:3HMC VER HBC1 VER:1HBC VER HBC2 VER:2HBC VER HMD1 VER:1HMD VER HMD2 VER:2HMD VER HMD3 VER:3HMD VER HAD1 VER:1HAD VER HAD2 VER:2HAD VER HBD1 VER:1HBD VER HBD2 VER:2HBD VER H11 VER:1H1 VER H12 VER:2H1 VER H13 VER:3H1 VER HOP1 VG1:1HOP VG1 HOP2 VG1:2HOP VG1 H341 VIA:1H34 VIA H342 VIA:2H34 VIA H343 VIA:3H34 VIA H331 VIA:1H33 VIA H332 VIA:2H33 VIA H321 VIA:1H32 VIA H322 VIA:2H32 VIA H311 VIA:1H31 VIA H312 VIA:2H31 VIA H313 VIA:3H31 VIA H21 VIA:1H2 VIA H22A VIA:2H2 VIA H11 VIA:1H1 VIA H12 VIA:2H1 VIA H13 VIA:3H1 VIA H191 VIA:1H19 VIA H192 VIA:2H19 VIA H181 VIA:1H18 VIA H182 VIA:2H18 VIA H201 VIA:1H20 VIA H202 VIA:2H20 VIA H203 VIA:3H20 VIA H161 VIA:1H16 VIA H162 VIA:2H16 VIA H151 VIA:1H15 VIA H152 VIA:2H15 VIA HM21 VIB:1HM2 VIB HM22 VIB:2HM2 VIB HM23 VIB:3HM2 VIB H4A1 VIB:1H4A VIB H4A2 VIB:2H4A VIB HM41 VIB:1HM4 VIB HM42 VIB:2HM4 VIB HM43 VIB:3HM4 VIB HC71 VIB:1HC7 VIB HC72 VIB:2HC7 VIB HC61 VIB:1HC6 VIB HC62 VIB:2HC6 VIB H7A1 VIB:1H7A VIB H7A2 VIB:2H7A VIB H6AC VIB:CH6A VIB H1C1 VIG:1H1C VIG H1C2 VIG:2H1C VIG H2C1 VIG:1H2C VIG H2C2 VIG:2H2C VIG H4C1 VIG:1H4C VIG H4C2 VIG:2H4C VIG H5C1 VIG:1H5C VIG H5C2 VIG:2H5C VIG H5C3 VIG:3H5C VIG H3N1 VIG:1H3N VIG H3N2 VIG:2H3N VIG HB1 VIO:1HB VIO HB2 VIO:2HB VIO HG1 VIO:1HG VIO HG2 VIO:2HG VIO HD1 VIO:1HD VIO HD2 VIO:2HD VIO HH11 VIO:1HH1 VIO HH12 VIO:2HH1 VIO HH21 VIO:1HH2 VIO HH22 VIO:2HH2 VIO H11 VIO:1H1 VIO H12 VIO:2H1 VIO H21 VIO:1H2 VIO H22 VIO:2H2 VIO H23 VIO:3H2 VIO H131 VIR:1H13 VIR H132 VIR:2H13 VIR H161 VIR:1H16 VIR H162 VIR:2H16 VIR H211 VIR:1H21 VIR H212 VIR:2H21 VIR H213 VIR:3H21 VIR H241 VIR:1H24 VIR H242 VIR:2H24 VIR HC31 VIR:1HC3 VIR HC32 VIR:2HC3 VIR H311 VIR:1H31 VIR H312 VIR:2H31 VIR H313 VIR:3H31 VIR H341 VIR:1H34 VIR H342 VIR:2H34 VIR H343 VIR:3H34 VIR H351 VIR:1H35 VIR H352 VIR:2H35 VIR H353 VIR:3H35 VIR HC41 VIR:1HC4 VIR HC42 VIR:2HC4 VIR H18' VIR:'H18 VIR HC11 VIT:1HC1 VIT HC12 VIT:2HC1 VIT HC13 VIT:3HC1 VIT HC81 VIT:1HC8 VIT HC82 VIT:2HC8 VIT HC83 VIT:3HC8 VIT H101 VIT:1H10 VIT H102 VIT:2H10 VIT H111 VIT:1H11 VIT H112 VIT:2H11 VIT H121 VIT:1H12 VIT H122 VIT:2H12 VIT H123 VIT:3H12 VIT H131 VIT:1H13 VIT H132 VIT:2H13 VIT H133 VIT:3H13 VIT HO21 VIT:1HO2 VIT H141 VIT:1H14 VIT H142 VIT:2H14 VIT H143 VIT:3H14 VIT H151 VIT:1H15 VIT H152 VIT:2H15 VIT H161 VIT:1H16 VIT H162 VIT:2H16 VIT H171 VIT:1H17 VIT H172 VIT:2H17 VIT H191 VIT:1H19 VIT H192 VIT:2H19 VIT H193 VIT:3H19 VIT H201 VIT:1H20 VIT H202 VIT:2H20 VIT H211 VIT:1H21 VIT H212 VIT:2H21 VIT H221 VIT:1H22 VIT H222 VIT:2H22 VIT H241 VIT:1H24 VIT H242 VIT:2H24 VIT H251 VIT:1H25 VIT H252 VIT:2H25 VIT H261 VIT:1H26 VIT H262 VIT:2H26 VIT H281 VIT:1H28 VIT H282 VIT:2H28 VIT H283 VIT:3H28 VIT H291 VIT:1H29 VIT H292 VIT:2H29 VIT H293 VIT:3H29 VIT HO21 VIV:1HO2 VIV HC11 VIV:1HC1 VIV HC12 VIV:2HC1 VIV HC13 VIV:3HC1 VIV HC81 VIV:1HC8 VIV HC82 VIV:2HC8 VIV HC83 VIV:3HC8 VIV H101 VIV:1H10 VIV H102 VIV:2H10 VIV H111 VIV:1H11 VIV H112 VIV:2H11 VIV H121 VIV:1H12 VIV H122 VIV:2H12 VIV H123 VIV:3H12 VIV H131 VIV:1H13 VIV H132 VIV:2H13 VIV H133 VIV:3H13 VIV H141 VIV:1H14 VIV H142 VIV:2H14 VIV H143 VIV:3H14 VIV H151 VIV:1H15 VIV H152 VIV:2H15 VIV H161 VIV:1H16 VIV H162 VIV:2H16 VIV H171 VIV:1H17 VIV H172 VIV:2H17 VIV H191 VIV:1H19 VIV H192 VIV:2H19 VIV H193 VIV:3H19 VIV H201 VIV:1H20 VIV H202 VIV:2H20 VIV H211 VIV:1H21 VIV H212 VIV:2H21 VIV H221 VIV:1H22 VIV H222 VIV:2H22 VIV H241 VIV:1H24 VIV H242 VIV:2H24 VIV H251 VIV:1H25 VIV H252 VIV:2H25 VIV H261 VIV:1H26 VIV H262 VIV:2H26 VIV H281 VIV:1H28 VIV H282 VIV:2H28 VIV H283 VIV:3H28 VIV H291 VIV:1H29 VIV H292 VIV:2H29 VIV H293 VIV:3H29 VIV H2K1 VK3:1H2K VK3 H6K1 VK3:1H6K VK3 H7K1 VK3:1H7K VK3 H8K1 VK3:1H8K VK3 H9K1 VK3:1H9K VK3 H111 VK3:1H11 VK3 H112 VK3:2H11 VK3 H113 VK3:3H11 VK3 H711 VLB:1H71 VLB H712 VLB:2H71 VLB H713 VLB:3H71 VLB H701 VLB:1H70 VLB H702 VLB:2H70 VLB H551 VLB:1H55 VLB H552 VLB:2H55 VLB H531 VLB:1H53 VLB H532 VLB:2H53 VLB H511 VLB:1H51 VLB H512 VLB:2H51 VLB H691 VLB:1H69 VLB H692 VLB:2H69 VLB H571 VLB:1H57 VLB H572 VLB:2H57 VLB H581 VLB:1H58 VLB H582 VLB:2H58 VLB H761 VLB:1H76 VLB H762 VLB:2H76 VLB H763 VLB:3H76 VLB H111 VLB:1H11 VLB H112 VLB:2H11 VLB H101 VLB:1H10 VLB H102 VLB:2H10 VLB H81 VLB:1H8 VLB H82 VLB:2H8 VLB H201 VLB:1H20 VLB H202 VLB:2H20 VLB H211 VLB:1H21 VLB H212 VLB:2H21 VLB H213 VLB:3H21 VLB H301 VLB:1H30 VLB H302 VLB:2H30 VLB H303 VLB:3H30 VLB H261 VLB:1H26 VLB H262 VLB:2H26 VLB H263 VLB:3H26 VLB H221 VLB:1H22 VLB H222 VLB:2H22 VLB H223 VLB:3H22 VLB H331 VLB:1H33 VLB H332 VLB:2H33 VLB H333 VLB:3H33 VLB HN1 VLL:1HN VLL HN2 VLL:2HN VLL HG11 VLL:1HG1 VLL HG12 VLL:2HG1 VLL HG13 VLL:3HG1 VLL HG21 VLL:1HG2 VLL HG22 VLL:2HG2 VLL H VLM:1HN VLM H2 VLM:2HN VLM HG11 VLM:1HG1 VLM HG12 VLM:2HG1 VLM HG13 VLM:3HG1 VLM HG21 VLM:1HG2 VLM HG22 VLM:2HG2 VLM HG23 VLM:3HG2 VLM HNT1 VLM:1HNT VLM HNT2 VLM:2HNT VLM HN1 VME:1HN VME HN2 VME:2HN VME HG11 VME:1HG1 VME HG12 VME:2HG1 VME HG13 VME:3HG1 VME HG21 VME:1HG2 VME HG22 VME:2HG2 VME HG23 VME:3HG2 VME HMC1 VME:1HMC VME HMC2 VME:2HMC VME HMC3 VME:3HMC VME HG21 VMS:1HG2 VMS HG22 VMS:2HG2 VMS HG23 VMS:3HG2 VMS HG11 VMS:1HG1 VMS HG12 VMS:2HG1 VMS HG13 VMS:3HG1 VMS H VMS:1HN VMS H2 VMS:2HN VMS H5'1 VMS:1H5* VMS H5'2 VMS:2H5* VMS H4' VMS: H4* VMS H3' VMS: H3* VMS HO3' VMS:H2 VMS H2' VMS: H2* VMS H1' VMS: H1* VMS HN61 VMS:1HN6 VMS HN62 VMS:2HN6 VMS HV1 VNL:1HV VNL HV2 VNL:2HV VNL HV3 VNL:3HV VNL H71 VNP:1H7 VNP H72 VNP:2H7 VNP H121 VNP:1H12 VNP H122 VNP:2H12 VNP HM41 VNP:1HM4 VNP HM42 VNP:2HM4 VNP HM43 VNP:3HM4 VNP H7A1 VNP:1H7A VNP H7A2 VNP:2H7A VNP HM21 VNP:1HM2 VNP HM22 VNP:2HM2 VNP HM23 VNP:3HM2 VNP H4A1 VNP:1H4A VNP H4A2 VNP:2H4A VNP HN1 VOL:1HN VOL HN2 VOL:2HN VOL H51 VPR:1H5 VPR H52 VPR:2H5 VPR H53 VPR:3H5 VPR H41 VPR:1H4 VPR H42 VPR:2H4 VPR H31 VPR:1H3 VPR H32 VPR:2H3 VPR H3A1 VPR:1H3A VPR H3A2 VPR:2H3A VPR H4A1 VPR:1H4A VPR H4A2 VPR:2H4A VPR H5A1 VPR:1H5A VPR H5A2 VPR:2H5A VPR H5A3 VPR:3H5A VPR HN1 VPR:1HN VPR HN2 VPR:2HN VPR H61 VR1:1H6 VR1 H62 VR1:2H6 VR1 H71 VR1:1H7 VR1 H72 VR1:2H7 VR1 H73 VR1:3H7 VR1 H81 VR1:1H8 VR1 H31A VRS:1H3 VRS H32A VRS:2H3 VRS H41 VRS:1H4 VRS H42A VRS:2H4 VRS H43A VRS:3H4 VRS H71 VRS:1H7 VRS H72 VRS:2H7 VRS H81 VRS:1H8 VRS H82 VRS:2H8 VRS H91 VRS:1H9 VRS H92 VRS:2H9 VRS H121 VRS:1H12 VRS H122 VRS:2H12 VRS H123 VRS:3H12 VRS H131 VRS:1H13 VRS H132 VRS:2H13 VRS H241 VRS:1H24 VRS H242 VRS:2H24 VRS H251 VRS:1H25 VRS H252 VRS:2H25 VRS H271 VRS:1H27 VRS H272 VRS:2H27 VRS H391 VRS:1H39 VRS H392 VRS:2H39 VRS H393 VRS:3H39 VRS H261 VRX:1H26 VRX H262 VRX:2H26 VRX H263 VRX:3H26 VRX H251 VRX:1H25 VRX H252 VRX:2H25 VRX H31 VS1:1H3 VS1 H121 VS1:1H12 VS1 H122 VS1:2H12 VS1 H151 VS1:1H15 VS1 H161 VS1:1H16 VS1 H171 VS1:1H17 VS1 H181 VS1:1H18 VS1 H191 VS1:1H19 VS1 H211 VS1:1H21 VS1 H231 VS1:1H23 VS1 H232 VS1:2H23 VS1 H241 VS1:1H24 VS1 H242 VS1:2H24 VS1 H301 VS1:1H30 VS1 H311 VS1:1H31 VS1 H321 VS1:1H32 VS1 H331 VS1:1H33 VS1 H341 VS1:1H34 VS1 H251 VS1:1H25 VS1 H252 VS1:2H25 VS1 H361 VS1:1H36 VS1 H372 VS1:2H37 VS1 H381 VS1:1H38 VS1 H391 VS1:1H39 VS1 H401 VS1:1H40 VS1 H51 VS1:1H5 VS1 H52 VS1:2H5 VS1 H61 VS1:1H6 VS1 H62 VS1:2H6 VS1 H81 VS1:1H8 VS1 H82 VS1:2H8 VS1 H91 VS1:1H9 VS1 H92 VS1:2H9 VS1 H221 VS1:1H22 VS1 H222 VS1:2H22 VS1 H21 VS2:1H2 VS2 H31 VS2:1H3 VS2 H41 VS2:1H4 VS2 H51 VS2:1H5 VS2 H61 VS2:1H6 VS2 H71 VS2:1H7 VS2 H72 VS2:2H7 VS2 HN11 VS2:1HN1 VS2 H91 VS2:1H9 VS2 H101 VS2:1H10 VS2 H102 VS2:2H10 VS2 H121 VS2:1H12 VS2 H131 VS2:1H13 VS2 H141 VS2:1H14 VS2 H151 VS2:1H15 VS2 H161 VS2:1H16 VS2 HN21 VS2:1HN2 VS2 H181 VS2:1H18 VS2 H191 VS2:1H19 VS2 H192 VS2:2H19 VS2 H201 VS2:1H20 VS2 H202 VS2:2H20 VS2 H221 VS2:1H22 VS2 H231 VS2:1H23 VS2 H241 VS2:1H24 VS2 H251 VS2:1H25 VS2 H261 VS2:1H26 VS2 H281 VS2:1H28 VS2 H282 VS2:2H28 VS2 H291 VS2:1H29 VS2 H292 VS2:2H29 VS2 H311 VS2:1H31 VS2 H321 VS2:1H32 VS2 H331 VS2:1H33 VS2 H341 VS2:1H34 VS2 H351 VS2:1H35 VS2 H271 VS2:1H27 VS2 H272 VS2:2H27 VS2 H21 VS3:1H2 VS3 H31 VS3:1H3 VS3 H41 VS3:1H4 VS3 H51 VS3:1H5 VS3 H61 VS3:1H6 VS3 H71 VS3:1H7 VS3 H72 VS3:2H7 VS3 HN11 VS3:1HN1 VS3 H91 VS3:1H9 VS3 H101 VS3:1H10 VS3 H102 VS3:2H10 VS3 H121 VS3:1H12 VS3 H131 VS3:1H13 VS3 H141 VS3:1H14 VS3 H151 VS3:1H15 VS3 H161 VS3:1H16 VS3 HN21 VS3:1HN2 VS3 H181 VS3:1H18 VS3 H191 VS3:1H19 VS3 H192 VS3:2H19 VS3 H201 VS3:1H20 VS3 H202 VS3:2H20 VS3 H221 VS3:1H22 VS3 H231 VS3:1H23 VS3 H241 VS3:1H24 VS3 H251 VS3:1H25 VS3 H261 VS3:1H26 VS3 H281 VS3:1H28 VS3 H282 VS3:2H28 VS3 H311 VS3:1H31 VS3 H321 VS3:1H32 VS3 H341 VS3:1H34 VS3 H351 VS3:1H35 VS3 H271 VS3:1H27 VS3 H272 VS3:2H27 VS3 H391 VS4:1H39 VS4 H392 VS4:2H39 VS4 H401 VS4:1H40 VS4 H402 VS4:2H40 VS4 H331 VS4:1H33 VS4 H332 VS4:2H33 VS4 H333 VS4:3H33 VS4 H491 VS4:1H49 VS4 H492 VS4:2H49 VS4 H481 VS4:1H48 VS4 H482 VS4:2H48 VS4 HN11 VS4:1HN1 VS4 H91 VS4:1H9 VS4 H101 VS4:1H10 VS4 H102 VS4:2H10 VS4 H121 VS4:1H12 VS4 H131 VS4:1H13 VS4 H141 VS4:1H14 VS4 H151 VS4:1H15 VS4 H161 VS4:1H16 VS4 HN21 VS4:1HN2 VS4 H181 VS4:1H18 VS4 H191 VS4:1H19 VS4 H192 VS4:2H19 VS4 H201 VS4:1H20 VS4 H202 VS4:2H20 VS4 H221 VS4:1H22 VS4 H231 VS4:1H23 VS4 H241 VS4:1H24 VS4 H251 VS4:1H25 VS4 H261 VS4:1H26 VS4 H281 VS4:1H28 VS4 H282 VS4:2H28 VS4 HN51 VS4:1HN5 VS4 H341 VS4:1H34 VS4 H342 VS4:2H34 VS4 H421 VS4:1H42 VS4 H431 VS4:1H43 VS4 H441 VS4:1H44 VS4 H451 VS4:1H45 VS4 H461 VS4:1H46 VS4 H271 VS4:1H27 VS4 H272 VS4:2H27 VS4 H11 VSC:1H1 VSC H12 VSC:2H1 VSC H91 VSC:1H9 VSC H321 VSC:1H32 VSC H322 VSC:2H32 VSC H331 VSC:1H33 VSC H332 VSC:2H33 VSC H131 VSC:1H13 VSC H251 VSC:1H25 VSC H252 VSC:2H25 VSC H271 VSC:1H27 VSC H281 VSC:1H28 VSC H291 VSC:1H29 VSC H301 VSC:1H30 VSC H311 VSC:1H31 VSC H141 VSC:1H14 VSC H142 VSC:2H14 VSC H161 VSC:1H16 VSC H171 VSC:1H17 VSC H181 VSC:1H18 VSC H191 VSC:1H19 VSC H201 VSC:1H20 VSC H21A VSC:1H2 VSC H22 VSC:2H2 VSC H41 VSC:1H4 VSC H51 VSC:1H5 VSC H61 VSC:1H6 VSC H71 VSC:1H7 VSC H81 VSC:1H8 VSC H371 VSC:1H37 VSC H381 VSC:1H38 VSC H391 VSC:1H39 VSC H401 VSC:1H40 VSC H411 VSC:1H41 VSC H41 VSO:1H4 VSO H42 VSO:2H4 VSO H141 VTQ:1H14 VTQ H142 VTQ:2H14 VTQ H143 VTQ:3H14 VTQ H111 VTQ:1H11 VTQ H112 VTQ:2H11 VTQ H101 VTQ:1H10 VTQ H102 VTQ:2H10 VTQ H8C1 VTQ:1H8C VTQ H8C2 VTQ:2H8C VTQ H8C3 VTQ:3H8C VTQ H121 VTQ:1H12 VTQ H122 VTQ:2H12 VTQ H123 VTQ:3H12 VTQ H131 VTQ:1H13 VTQ H132 VTQ:2H13 VTQ H133 VTQ:3H13 VTQ H151 VTQ:1H15 VTQ H152 VTQ:2H15 VTQ H161 VTQ:1H16 VTQ H162 VTQ:2H16 VTQ H171 VTQ:1H17 VTQ H172 VTQ:2H17 VTQ H191 VTQ:1H19 VTQ H192 VTQ:2H19 VTQ H193 VTQ:3H19 VTQ H201 VTQ:1H20 VTQ H202 VTQ:2H20 VTQ H211 VTQ:1H21 VTQ H212 VTQ:2H21 VTQ H221 VTQ:1H22 VTQ H222 VTQ:2H22 VTQ H1C1 VTQ:1H1C VTQ H1C2 VTQ:2H1C VTQ H1C3 VTQ:3H1C VTQ H241 VTQ:1H24 VTQ H242 VTQ:2H24 VTQ H251 VTQ:1H25 VTQ H252 VTQ:2H25 VTQ H261 VTQ:1H26 VTQ H262 VTQ:2H26 VTQ H281 VTQ:1H28 VTQ H282 VTQ:2H28 VTQ H283 VTQ:3H28 VTQ H291 VTQ:1H29 VTQ H292 VTQ:2H29 VTQ H293 VTQ:3H29 VTQ H2 VX:2H VX H3 VX:3H VX H21 VX:1H2 VX H22 VX:2H2 VX H31 VX:1H3 VX H32 VX:2H3 VX H33 VX:3H3 VX H21 VX6:1H2 VX6 H22 VX6:2H2 VX6 H31 VX6:1H3 VX6 H32 VX6:2H3 VX6 H51 VX6:1H5 VX6 H52 VX6:2H5 VX6 H61 VX6:1H6 VX6 H62 VX6:2H6 VX6 H71 VX6:1H7 VX6 H72 VX6:2H7 VX6 H73 VX6:3H7 VX6 H211 VX6:1H21 VX6 H212 VX6:2H21 VX6 H213 VX6:3H21 VX6 H341 VX6:1H34 VX6 H342 VX6:2H34 VX6 H351 VX6:1H35 VX6 H352 VX6:2H35 VX6 H11 VXA:1H1 VXA H12 VXA:2H1 VXA H13 VXA:3H1 VXA H61 VXR:1H6 VXR H62 VXR:2H6 VXR H71 VXR:1H7 VXR H72 VXR:2H7 VXR H73 VXR:3H7 VXR HVC1 VXX:1HVC VXX HVC2 VXX:2HVC VXX HVC3 VXX:3HVC VXX H9C1 VXX:1H9C VXX H9C2 VXX:2H9C VXX H9C3 VXX:3H9C VXX HM31 W01:1HM3 W01 HM32 W01:2HM3 W01 HM33 W01:3HM3 W01 H1C1 W01:1H1C W01 H1C2 W01:2H1C W01 H2C1 W01:1H2C W01 H2C2 W01:2H2C W01 H3C1 W01:1H3C W01 H3C2 W01:2H3C W01 HM21 W01:1HM2 W01 HM22 W01:2HM2 W01 HM23 W01:3HM2 W01 HM61 W01:1HM6 W01 HM62 W01:2HM6 W01 HM63 W01:3HM6 W01 HM41 W01:1HM4 W01 HM42 W01:2HM4 W01 HM43 W01:3HM4 W01 HM33 W02:3HM3 W02 HM32 W02:2HM3 W02 HM31 W02:1HM3 W02 H1C2 W02:2H1C W02 H1C1 W02:1H1C W02 H2C2 W02:2H2C W02 H2C1 W02:1H2C W02 H3C2 W02:2H3C W02 H3C1 W02:1H3C W02 HM23 W02:3HM2 W02 HM22 W02:2HM2 W02 HM21 W02:1HM2 W02 HM63 W02:3HM6 W02 HM62 W02:2HM6 W02 HM61 W02:1HM6 W02 HM43 W02:3HM4 W02 HM42 W02:2HM4 W02 HM41 W02:1HM4 W02 HM33 W03:3HM3 W03 HM32 W03:2HM3 W03 HM31 W03:1HM3 W03 H1C2 W03:2H1C W03 H1C1 W03:1H1C W03 H2C2 W03:2H2C W03 H2C1 W03:1H2C W03 H3C2 W03:2H3C W03 H3C1 W03:1H3C W03 HM23 W03:3HM2 W03 HM22 W03:2HM2 W03 HM21 W03:1HM2 W03 HM63 W03:3HM6 W03 HM62 W03:2HM6 W03 HM61 W03:1HM6 W03 HM43 W03:3HM4 W03 HM42 W03:2HM4 W03 HM41 W03:1HM4 W03 H3C1 W05:1H3C W05 H3C2 W05:2H3C W05 H4C1 W05:1H4C W05 H4C2 W05:2H4C W05 H7C1 W05:1H7C W05 H7C2 W05:2H7C W05 H141 W05:1H14 W05 H142 W05:2H14 W05 H161 W05:1H16 W05 H162 W05:2H16 W05 H321 W05:1H32 W05 H322 W05:2H32 W05 H323 W05:3H32 W05 HM31 W11:1HM3 W11 HM32 W11:2HM3 W11 HM33 W11:3HM3 W11 H41 W11:1H4 W11 H1C1 W11:1H1C W11 H1C2 W11:2H1C W11 H2C1 W11:1H2C W11 H2C2 W11:2H2C W11 H3C1 W11:1H3C W11 H3C2 W11:2H3C W11 HM21 W11:1HM2 W11 HM22 W11:2HM2 W11 HM23 W11:3HM2 W11 HM61 W11:1HM6 W11 HM62 W11:2HM6 W11 HM63 W11:3HM6 W11 H251 W2X:1H25 W2X H252 W2X:2H25 W2X H7C1 W2X:1H7C W2X H7C2 W2X:2H7C W2X H4C1 W2X:1H4C W2X H4C2 W2X:2H4C W2X H3C1 W2X:1H3C W2X H3C2 W2X:2H3C W2X H141 W2X:1H14 W2X H142 W2X:2H14 W2X H371 W2X:1H37 W2X H372 W2X:2H37 W2X H331 W2X:1H33 W2X H332 W2X:2H33 W2X H333 W2X:3H33 W2X H311 W33:1H31 W33 H312 W33:2H31 W33 H313 W33:3H31 W33 H1C1 W33:1H1C W33 H1C2 W33:2H1C W33 H2C1 W33:1H2C W33 H2C2 W33:2H2C W33 H3C1 W33:1H3C W33 H3C2 W33:2H3C W33 H4C1 W33:1H4C W33 H4C2 W33:2H4C W33 H5C1 W33:1H5C W33 H5C2 W33:2H5C W33 H4A1 W33:1H4A W33 H4A2 W33:2H4A W33 H5A1 W33:1H5A W33 H5A2 W33:2H5A W33 H311 W35:1H31 W35 H312 W35:2H31 W35 H313 W35:3H31 W35 H1C1 W35:1H1C W35 H1C2 W35:2H1C W35 H2C1 W35:1H2C W35 H2C2 W35:2H2C W35 H3C1 W35:1H3C W35 H3C2 W35:2H3C W35 H4C1 W35:1H4C W35 H4C2 W35:2H4C W35 H5C1 W35:1H5C W35 H5C2 W35:2H5C W35 H4A1 W35:1H4A W35 H4A2 W35:2H4A W35 H5A1 W35:1H5A W35 H5A2 W35:2H5A W35 H3A1 W37:1H3A W37 H3A2 W37:2H3A W37 H1A1 W37:1H1A W37 H1A2 W37:2H1A W37 H1B1 W37:1H1B W37 H1B2 W37:2H1B W37 H2B1 W37:1H2B W37 H2B2 W37:2H2B W37 H3B1 W37:1H3B W37 H3B2 W37:2H3B W37 H4B1 W37:1H4B W37 H4B2 W37:2H4B W37 H5B1 W37:1H5B W37 H5B2 W37:2H5B W37 H6B1 W37:1H6B W37 H6B2 W37:2H6B W37 H1F1 W37:1H1F W37 H1F2 W37:2H1F W37 H1F3 W37:3H1F W37 HOD1 W42:1HOD W42 H2D1 W42:1H2D W42 H2D2 W42:2H2D W42 H3D1 W42:1H3D W42 H3D2 W42:2H3D W42 H5D1 W42:1H5D W42 H5D2 W42:2H5D W42 H311 W42:1H31 W42 H312 W42:2H31 W42 H1C1 W42:1H1C W42 H1C2 W42:2H1C W42 H2C1 W42:1H2C W42 H2C2 W42:2H2C W42 H3C1 W42:1H3C W42 H3C2 W42:2H3C W42 H4C1 W42:1H4C W42 H4C2 W42:2H4C W42 H5C1 W42:1H5C W42 H5C2 W42:2H5C W42 H4A1 W42:1H4A W42 H4A2 W42:2H4A W42 H5A1 W42:1H5A W42 H5A2 W42:2H5A W42 H311 W43:1H31 W43 H312 W43:2H31 W43 H313 W43:3H31 W43 H1C1 W43:1H1C W43 H1C2 W43:2H1C W43 H2C1 W43:1H2C W43 H2C2 W43:2H2C W43 H3C1 W43:1H3C W43 H3C2 W43:2H3C W43 H4C1 W43:1H4C W43 H4C2 W43:2H4C W43 H5C1 W43:1H5C W43 H5C2 W43:2H5C W43 H6C1 W43:1H6C W43 H6C2 W43:2H6C W43 H7C1 W43:1H7C W43 H7C2 W43:2H7C W43 HM11 W43:1HM1 W43 HM12 W43:2HM1 W43 HM13 W43:3HM1 W43 H5A1 W43:1H5A W43 H5A2 W43:2H5A W43 H311 W54:1H31 W54 H312 W54:2H31 W54 H313 W54:3H31 W54 H1C1 W54:1H1C W54 H1C2 W54:2H1C W54 H2C1 W54:1H2C W54 H2C2 W54:2H2C W54 H3C1 W54:1H3C W54 H3C2 W54:2H3C W54 H4C1 W54:1H4C W54 H4C2 W54:2H4C W54 H5C1 W54:1H5C W54 H5C2 W54:2H5C W54 H4A1 W54:1H4A W54 H4A2 W54:2H4A W54 H5A1 W54:1H5A W54 H5A2 W54:2H5A W54 H311 W56:1H31 W56 H312 W56:2H31 W56 H313 W56:3H31 W56 H1C1 W56:1H1C W56 H1C2 W56:2H1C W56 H2C1 W56:1H2C W56 H2C2 W56:2H2C W56 H3C1 W56:1H3C W56 H3C2 W56:2H3C W56 H4C1 W56:1H4C W56 H4C2 W56:2H4C W56 H5C1 W56:1H5C W56 H5C2 W56:2H5C W56 HM11 W56:1HM1 W56 HM12 W56:2HM1 W56 HM13 W56:3HM1 W56 H5A1 W56:1H5A W56 H5A2 W56:2H5A W56 H311 W59:1H31 W59 H312 W59:2H31 W59 H313 W59:3H31 W59 H1C1 W59:1H1C W59 H1C2 W59:2H1C W59 H2C1 W59:1H2C W59 H2C2 W59:2H2C W59 H3C1 W59:1H3C W59 H3C2 W59:2H3C W59 H4C1 W59:1H4C W59 H4C2 W59:2H4C W59 H5C1 W59:1H5C W59 H5C2 W59:2H5C W59 H6C1 W59:1H6C W59 H6C2 W59:2H6C W59 H7C1 W59:1H7C W59 H7C2 W59:2H7C W59 HM11 W59:1HM1 W59 HM12 W59:2HM1 W59 HM21 W59:1HM2 W59 HM22 W59:2HM2 W59 HM23 W59:3HM2 W59 H5A1 W59:1H5A W59 H5A2 W59:2H5A W59 H311 W71:1H31 W71 H312 W71:2H31 W71 H313 W71:3H31 W71 H1C1 W71:1H1C W71 H1C2 W71:2H1C W71 H2C1 W71:1H2C W71 H2C2 W71:2H2C W71 H3C1 W71:1H3C W71 H3C2 W71:2H3C W71 H4C1 W71:1H4C W71 H4C2 W71:2H4C W71 H5C1 W71:1H5C W71 H5C2 W71:2H5C W71 H6C1 W71:1H6C W71 H6C2 W71:2H6C W71 H7C1 W71:1H7C W71 H7C2 W71:2H7C W71 H4A1 W71:1H4A W71 H4A2 W71:2H4A W71 H5A1 W71:1H5A W71 H5A2 W71:2H5A W71 H31 W72:1H3 W72 H32 W72:2H3 W72 H61 W72:1H6 W72 H62 W72:2H6 W72 H71 W72:1H7 W72 H72 W72:2H7 W72 H311 W84:1H31 W84 H312 W84:2H31 W84 H313 W84:3H31 W84 H1C1 W84:1H1C W84 H1C2 W84:2H1C W84 H2C1 W84:1H2C W84 H2C2 W84:2H2C W84 H3C1 W84:1H3C W84 H3C2 W84:2H3C W84 H4C1 W84:1H4C W84 H4C2 W84:2H4C W84 H5C1 W84:1H5C W84 H5C2 W84:2H5C W84 H6C1 W84:1H6C W84 H6C2 W84:2H6C W84 H7C1 W84:1H7C W84 H7C2 W84:2H7C W84 HM11 W84:1HM1 W84 HM12 W84:2HM1 W84 HM13 W84:3HM1 W84 H5A1 W84:1H5A W84 H5A2 W84:2H5A W84 H311 W8R:1H31 W8R H312 W8R:2H31 W8R H313 W8R:3H31 W8R H1C1 W8R:1H1C W8R H1C2 W8R:2H1C W8R H2C1 W8R:1H2C W8R H2C2 W8R:2H2C W8R H3C1 W8R:1H3C W8R H3C2 W8R:2H3C W8R H4C1 W8R:1H4C W8R H4C2 W8R:2H4C W8R H5C1 W8R:1H5C W8R H5C2 W8R:2H5C W8R H6C1 W8R:1H6C W8R H6C2 W8R:2H6C W8R H7C1 W8R:1H7C W8R H7C2 W8R:2H7C W8R HM11 W8R:1HM1 W8R HM12 W8R:2HM1 W8R HM13 W8R:3HM1 W8R H5A1 W8R:1H5A W8R H5A2 W8R:2H5A W8R H311 W91:1H31 W91 H312 W91:2H31 W91 H313 W91:3H31 W91 H1C1 W91:1H1C W91 H1C2 W91:2H1C W91 H2C1 W91:1H2C W91 H2C2 W91:2H2C W91 H3C1 W91:1H3C W91 H3C2 W91:2H3C W91 H4A1 W91:1H4A W91 H4A2 W91:2H4A W91 H5A1 W91:1H5A W91 H5A2 W91:2H5A W91 H121 WAC:1H12 WAC H122 WAC:2H12 WAC H161 WAC:1H16 WAC H162 WAC:2H16 WAC H171 WAC:1H17 WAC H172 WAC:2H17 WAC H181 WAC:1H18 WAC H182 WAC:2H18 WAC H191 WAC:1H19 WAC H192 WAC:2H19 WAC H291 WAC:1H29 WAC H292 WAC:2H29 WAC H301 WAC:1H30 WAC H302 WAC:2H30 WAC H331 WAC:1H33 WAC H332 WAC:2H33 WAC H411 WAC:1H41 WAC H412 WAC:2H41 WAC H413 WAC:3H41 WAC H421 WAC:1H42 WAC H422 WAC:2H42 WAC H423 WAC:3H42 WAC H201 WAI:1H20 WAI H202 WAI:2H20 WAI H203 WAI:3H20 WAI H351 WAI:1H35 WAI H352 WAI:2H35 WAI H361 WAI:1H36 WAI H362 WAI:2H36 WAI H381 WAI:1H38 WAI H382 WAI:2H38 WAI H391 WAI:1H39 WAI H392 WAI:2H39 WAI H481 WAI:1H48 WAI H482 WAI:2H48 WAI H491 WAI:1H49 WAI H492 WAI:2H49 WAI H521 WAI:1H52 WAI H522 WAI:2H52 WAI H181 WBT:1H18 WBT H182 WBT:2H18 WBT H191 WBT:1H19 WBT H192 WBT:2H19 WBT H291 WBT:1H29 WBT H292 WBT:2H29 WBT H301 WBT:1H30 WBT H302 WBT:2H30 WBT H321 WBT:1H32 WBT H322 WBT:2H32 WBT H331 WBT:1H33 WBT H332 WBT:2H33 WBT H011 WBU:1H01 WBU H012 WBU:2H01 WBU HMC1 WIA:1HMC WIA HMC2 WIA:2HMC WIA HMC3 WIA:3HMC WIA H161 WR1:1H16 WR1 H162 WR1:2H16 WR1 H81 WR1:1H8 WR1 H82 WR1:2H8 WR1 H51 WR1:1H5 WR1 H52 WR1:2H5 WR1 H53 WR1:3H5 WR1 H21A WR1:1H2 WR1 H22A WR1:2H2 WR1 H11A WR1:1H1 WR1 H12A WR1:2H1 WR1 H81 WRA:1H8 WRA H82 WRA:2H8 WRA H91 WRA:1H9 WRA H92 WRA:2H9 WRA H101 WRA:1H10 WRA H102 WRA:2H10 WRA H11 WRA:1H1 WRA H12 WRA:2H1 WRA H13 WRA:3H1 WRA H21 WRA:1H2 WRA H22 WRA:2H2 WRA H23 WRA:3H2 WRA HH11 WRA:1HH1 WRA HH12 WRA:2HH1 WRA HH21 WRA:1HH2 WRA HH22 WRA:2HH2 WRA H81 WRB:1H8 WRB H82 WRB:2H8 WRB H91 WRB:1H9 WRB H92 WRB:2H9 WRB H101 WRB:1H10 WRB H102 WRB:2H10 WRB H131 WRB:1H13 WRB H141 WRB:1H14 WRB H151 WRB:1H15 WRB H161 WRB:1H16 WRB HM11 WRB:1HM1 WRB HM12 WRB:2HM1 WRB HM13 WRB:3HM1 WRB HM21 WRB:1HM2 WRB HM22 WRB:2HM2 WRB HM23 WRB:3HM2 WRB HN11 WRB:1HN1 WRB HN12 WRB:2HN1 WRB HN21 WRB:1HN2 WRB HN22 WRB:2HN2 WRB HC2 WRR:2HC WRR HC31 WRR:1HC3 WRR HC32 WRR:2HC3 WRR HC4 WRR:4HC WRR HC1 WRR:1HC WRR HA2 WRR:2HA WRR HC3 WRR:3HC WRR HC7 WRR:7HC WRR HC8 WRR:8HC WRR HC9 WRR:9HC WRR HC01 WRR:1HC0 WRR HC21 WRR:1HC2 WRR HC51 WRR:1HC5 WRR HC61 WRR:1HC6 WRR HC71 WRR:1HC7 WRR HC81 WRR:1HC8 WRR HO3 WRR:3HO WRR HO4 WRR:4HO WRR HC2 WRS:2HC WRS HC31 WRS:1HC3 WRS HC32 WRS:2HC3 WRS HC4 WRS:4HC WRS HC1 WRS:1HC WRS HA2 WRS:2HA WRS HC3 WRS:3HC WRS HC7 WRS:7HC WRS HC8 WRS:8HC WRS HC9 WRS:9HC WRS HC01 WRS:1HC0 WRS HC21 WRS:1HC2 WRS HC51 WRS:1HC5 WRS HC61 WRS:1HC6 WRS HC71 WRS:1HC7 WRS HC81 WRS:1HC8 WRS HO3 WRS:3HO WRS HO4 WRS:4HO WRS HB1 WSA:1HB WSA HB2 WSA:2HB WSA HH31 WSA:1HH3 WSA HH32 WSA:2HH3 WSA H5'1 WSA:1H5' WSA H5'2 WSA:2H5' WSA HN61 WSA:1HN6 WSA HN62 WSA:2HN6 WSA H151 WST:1H15 WST H152 WST:2H15 WST H161 WST:1H16 WST H162 WST:2H16 WST H171 WST:1H17 WST H172 WST:2H17 WST H111 WW7:1H11 WW7 H112 WW7:2H11 WW7 H121 WW7:1H12 WW7 H122 WW7:2H12 WW7 H141 WW7:1H14 WW7 H142 WW7:2H14 WW7 H131 WW7:1H13 WW7 H132 WW7:2H13 WW7 H151 WW7:1H15 WW7 H152 WW7:2H15 WW7 H161 WW7:1H16 WW7 H162 WW7:2H16 WW7 HN21 WW7:1HN2 WW7 HN22 WW7:2HN2 WW7 H5B1 WWF:1H5B WWF H5B2 WWF:2H5B WWF H5A1 WWF:1H5A WWF H5A2 WWF:2H5A WWF H4A1 WWF:1H4A WWF H4A2 WWF:2H4A WWF H4A3 WWF:3H4A WWF H9C1 WWF:1H9C WWF H9C2 WWF:2H9C WWF H111 WWF:1H11 WWF H112 WWF:2H11 WWF H113 WWF:3H11 WWF H121 WWF:1H12 WWF H122 WWF:2H12 WWF H123 WWF:3H12 WWF H351 WWF:1H35 WWF H352 WWF:2H35 WWF H6' WWF: H6* WWF H2A1 WWF:1H2A WWF H2A2 WWF:2H2A WWF H2A3 WWF:3H2A WWF H4'1 WWF:1H4* WWF H4'2 WWF:2H4* WWF H21 WY2:1H2 WY2 H22 WY2:2H2 WY2 H691 WY2:1H69 WY2 H692 WY2:2H69 WY2 H701 WY2:1H70 WY2 H702 WY2:2H70 WY2 H711 WY2:1H71 WY2 H712 WY2:2H71 WY2 HC21 WY4:1HC2 WY4 HC22 WY4:2HC2 WY4 H671 WY4:1H67 WY4 H672 WY4:2H67 WY4 H691 WY4:1H69 WY4 H692 WY4:2H69 WY4 H701 WY4:1H70 WY4 H702 WY4:2H70 WY4 HOP2 X:2HOP X HOP3 X:3HOP X H5' X:1H5* X H5'' X:2H5* X H4' X: H4* X H3' X: H3* X HO3' X:*HO3 X H2' X:1H2* X H2'' X:2H2* X H1' X: H1* X H21 X:1H2 X H22 X:2H2 X H2A1 X:1H2A X H2A2 X:2H2A X H31 X:1H3 X H32 X:2H3 X HM1 X:1HM X HM2 X:2HM X HM3 X:3HM X H5A1 X04:1H5A X04 H5A2 X04:2H5A X04 HN21 X04:1HN2 X04 HN22 X04:2HN2 X04 H2A1 X04:1H2A X04 H2A2 X04:2H2A X04 H2A3 X04:3H2A X04 H51 X1P:1H5 X1P H52 X1P:2H5 X1P H51 X2F:1H5 X2F H52 X2F:2H5 X2F HOP3 X4A:3HOP X4A HOP2 X4A:2HOP X4A H5' X4A:1H5* X4A H5'' X4A:2H5* X4A H1' X4A: H1* X4A H3' X4A: H3* X4A H2' X4A:1H2* X4A H2'' X4A:2H2* X4A HO3' X4A:H3T X4A HC41 X7O:1HC4 X7O HC42 X7O:2HC4 X7O HC61 X7O:1HC6 X7O HC62 X7O:2HC6 X7O HC63 X7O:3HC6 X7O HN21 X7O:1HN2 X7O HN22 X7O:2HN2 X7O HB21 X9Q:1HB2 X9Q HB22 X9Q:2HB2 X9Q HB11 X9Q:1HB1 X9Q HB12 X9Q:2HB1 X9Q HB13 X9Q:3HB1 X9Q HN11 X9Q:1HN1 X9Q HN12 X9Q:2HN1 X9Q HA31 X9Q:1HA3 X9Q HA32 X9Q:2HA3 X9Q HN71 XAA:1HN7 XAA HN72 XAA:2HN7 XAA HC1 XAA:1HC XAA HC2 XAA:2HC XAA HC3 XAA:3HC XAA HOP3 XAD:3HOP XAD HOP2 XAD:2HOP XAD H6'1 XAD:1H6' XAD H6'2 XAD:2H6' XAD H3'1 XAD:1H3' XAD H3'2 XAD:2H3' XAD H2'1 XAD:1H2' XAD H2'2 XAD:2H2' XAD HN61 XAD:1HN6 XAD HN62 XAD:2HN6 XAD H5'1 XAE:1H5' XAE H5'2 XAE:2H5' XAE H2'1 XAE:1H2' XAE H2'2 XAE:2H2' XAE HN61 XAE:1HN6 XAE HN62 XAE:2HN6 XAE HO3' XAE:H3T XAE HOP2 XAL:2HOP XAL H5' XAL:1H5* XAL H5'' XAL:2H5* XAL H4' XAL: H4* XAL H6' XAL: H6* XAL H7' XAL: H7* XAL H3' XAL: H3* XAL HO3' XAL:H3T XAL H2' XAL:1H2* XAL H2'' XAL:2H2* XAL H1' XAL: H1* XAL HN61 XAL:1HN6 XAL HN62 XAL:2HN6 XAL HOP3 XAL:3HOP XAL HN1 XAO:1HN XAO HN2 XAO:2HN XAO H41 XAO:1H4 XAO H42 XAO:2H4 XAO H61 XAO:1H6 XAO H62 XAO:2H6 XAO H63 XAO:3H6 XAO H71 XAO:1H7 XAO H72 XAO:2H7 XAO H73 XAO:3H7 XAO H7'1 XAO:1H7' XAO H7'2 XAO:2H7' XAO H2'1 XAO:1H2' XAO H2'2 XAO:2H2' XAO H6'1 XAO:1H6' XAO H6'2 XAO:2H6' XAO H3'1 XAO:1H3' XAO H3'2 XAO:2H3' XAO H5'1 XAO:1H5' XAO H5'2 XAO:2H5' XAO H4'1 XAO:1H4' XAO H4'2 XAO:2H4' XAO HN11 XAP:1HN1 XAP HN12 XAP:2HN1 XAP H11 XAP:1H1 XAP H12 XAP:2H1 XAP H21 XAP:1H2 XAP H22 XAP:2H2 XAP H31 XAP:1H3 XAP H32 XAP:2H3 XAP HN21 XAP:1HN2 XAP HN22 XAP:2HN2 XAP HOP3 XAR:3HOP XAR HOP2 XAR:2HOP XAR H5'1 XAR:1H5* XAR H5'2 XAR:2H5* XAR H4' XAR: H4* XAR H3' XAR: H3* XAR H2'1 XAR:1H2* XAR H2'2 XAR:2H2* XAR H1' XAR: H1* XAR H7' XAR: H7* XAR H6' XAR: H6* XAR HN61 XAR:1HN6 XAR HN62 XAR:2HN6 XAR H21 XAT:1H2 XAT H22 XAT:2H2 XAT H41 XAT:1H4 XAT H42 XAT:2H4 XAT H161 XAT:1H16 XAT H162 XAT:2H16 XAT H163 XAT:3H16 XAT H171 XAT:1H17 XAT H172 XAT:2H17 XAT H173 XAT:3H17 XAT H181 XAT:1H18 XAT H182 XAT:2H18 XAT H183 XAT:3H18 XAT H191 XAT:1H19 XAT H192 XAT:2H19 XAT H193 XAT:3H19 XAT H201 XAT:1H20 XAT H202 XAT:2H20 XAT H203 XAT:3H20 XAT H221 XAT:1H22 XAT H222 XAT:2H22 XAT H241 XAT:1H24 XAT H242 XAT:2H24 XAT H361 XAT:1H36 XAT H362 XAT:2H36 XAT H363 XAT:3H36 XAT H371 XAT:1H37 XAT H372 XAT:2H37 XAT H373 XAT:3H37 XAT H381 XAT:1H38 XAT H382 XAT:2H38 XAT H383 XAT:3H38 XAT H391 XAT:1H39 XAT H392 XAT:2H39 XAT H393 XAT:3H39 XAT H401 XAT:1H40 XAT H402 XAT:2H40 XAT H403 XAT:3H40 XAT HC31 XBB:1HC3 XBB HC32 XBB:2HC3 XBB HC61 XBB:1HC6 XBB HC62 XBB:2HC6 XBB HC41 XBB:1HC4 XBB HC42 XBB:2HC4 XBB HN71 XBB:1HN7 XBB HN72 XBB:2HN7 XBB H11 XBP:1H1 XBP H12 XBP:2H1 XBP H51 XBP:1H5 XBP H52 XBP:2H5 XBP HOP2 XBP:2HOP XBP HOP3 XBP:3HOP XBP HOP5 XBP:5HOP XBP HOP6 XBP:6HOP XBP H5C1 XC2:1H5C XC2 H5C2 XC2:2H5C XC2 H241 XC2:1H24 XC2 H242 XC2:2H24 XC2 H261 XC2:1H26 XC2 H262 XC2:2H26 XC2 H1C1 XC2:1H1C XC2 H1C2 XC2:2H1C XC2 H4C1 XC2:1H4C XC2 H4C2 XC2:2H4C XC2 H2C1 XC2:1H2C XC2 H2C2 XC2:2H2C XC2 H341 XC2:1H34 XC2 H342 XC2:2H34 XC2 H311 XC2:1H31 XC2 H312 XC2:2H31 XC2 H301 XC2:1H30 XC2 H302 XC2:2H30 XC2 HOP2 XCL:2HOP XCL H5' XCL:1H5* XCL H5'' XCL:2H5* XCL H4' XCL: H4* XCL H6' XCL: H6* XCL H7' XCL: H7* XCL H3' XCL: H3* XCL HO3' XCL:H3T XCL H2' XCL:1H2* XCL H2'' XCL:2H2* XCL H1' XCL: H1* XCL HN41 XCL:1HN4 XCL HN42 XCL:2HN4 XCL HOP3 XCL:3HOP XCL HN41 XCS:1HN4 XCS HN42 XCS:2HN4 XCS H5'1 XCS:1H5' XCS H5'2 XCS:2H5' XCS H7A1 XCS:1H7A XCS H7A2 XCS:2H7A XCS H7A3 XCS:3H7A XCS H2'1 XCS:1H2' XCS H2'2 XCS:2H2' XCS HO3' XCS:H3T XCS HOP3 XCT:3HOP XCT HOP2 XCT:2HOP XCT H6'1 XCT:1H6' XCT H6'2 XCT:2H6' XCT H3'1 XCT:1H3' XCT H3'2 XCT:2H3' XCT H2'1 XCT:1H2' XCT H2'2 XCT:2H2' XCT HN41 XCT:1HN4 XCT HN42 XCT:2HN4 XCT HOP3 XCY:3HOP XCY HOP2 XCY:2HOP XCY HNZ1 XCY:1HNZ XCY HNZ2 XCY:2HNZ XCY HB1 XCY:1HB XCY HB2 XCY:2HB XCY HH1 XCY:1HH XCY HH2 XCY:2HH XCY H2' XCY:1H2* XCY H2'' XCY:2H2* XCY H5' XCY:1H5* XCY H5'' XCY:2H5* XCY H4' XCY: H4* XCY H1' XCY: H1* XCY H3' XCY: H3* XCY HO3' XCY:H3T XCY H4C1 XDL:1H4C XDL H4C2 XDL:2H4C XDL H5C1 XDL:1H5C XDL H5C2 XDL:2H5C XDL H6C1 XDL:1H6C XDL H6C2 XDL:2H6C XDL H11 XDN:1H1 XDN H12 XDN:2H1 XDN H51 XDN:1H5 XDN H52 XDN:2H5 XDN H11 XDP:1H1 XDP H12 XDP:2H1 XDP H51 XDP:1H5 XDP H52 XDP:2H5 XDP HO21 XDP:1HO2 XDP HO22 XDP:2HO2 XDP HOP2 XDP:2HOP XDP HOP3 XDP:3HOP XDP HOP5 XDP:5HOP XDP HOP6 XDP:6HOP XDP H11A XE4:1H1 XE4 H12 XE4:2H1 XE4 H31 XE4:1H3 XE4 H32 XE4:2H3 XE4 H101 XE4:1H10 XE4 H102 XE4:2H10 XE4 H131 XE4:1H13 XE4 H132 XE4:2H13 XE4 H141 XE4:1H14 XE4 H142 XE4:2H14 XE4 H151 XE4:1H15 XE4 H152 XE4:2H15 XE4 H161 XE4:1H16 XE4 H162 XE4:2H16 XE4 H171 XE4:1H17 XE4 H172 XE4:2H17 XE4 H241 XE4:1H24 XE4 H242 XE4:2H24 XE4 H243 XE4:3H24 XE4 H251 XE4:1H25 XE4 H252 XE4:2H25 XE4 H253 XE4:3H25 XE4 H261 XE4:1H26 XE4 H262 XE4:2H26 XE4 H263 XE4:3H26 XE4 H1C1 XED:1H1C XED H1C2 XED:2H1C XED H2C1 XED:1H2C XED H2C2 XED:2H2C XED H5C1 XED:1H5C XED H5C2 XED:2H5C XED H6C1 XED:1H6C XED H6C2 XED:2H6C XED H7C1 XED:1H7C XED H7C2 XED:2H7C XED H7C3 XED:3H7C XED H191 XED:1H19 XED H192 XED:2H19 XED H201 XED:1H20 XED H202 XED:2H20 XED H203 XED:3H20 XED H5'1 XGA:1H5' XGA H5'2 XGA:2H5' XGA H2'1 XGA:1H2' XGA H2'2 XGA:2H2' XGA HN21 XGA:1HN2 XGA HN22 XGA:2HN2 XGA HO3' XGA:H3T XGA HOP2 XGL:2HOP XGL H5' XGL:1H5* XGL H5'' XGL:2H5* XGL H4' XGL: H4* XGL H6' XGL: H6* XGL H7' XGL: H7* XGL H3' XGL: H3* XGL HO3' XGL:H3T XGL H2' XGL:1H2* XGL H2'' XGL:2H2* XGL H1' XGL: H1* XGL HN21 XGL:1HN2 XGL HN22 XGL:2HN2 XGL HOP3 XGL:3HOP XGL HOP3 XGU:3HOP XGU HOP2 XGU:2HOP XGU H6'1 XGU:1H6' XGU H6'2 XGU:2H6' XGU H3'1 XGU:1H3' XGU H3'2 XGU:2H3' XGU H2'1 XGU:1H2' XGU H2'2 XGU:2H2' XGU HN21 XGU:1HN2 XGU HN22 XGU:2HN2 XGU H21 XIF:1H2 XIF H22 XIF:2H2 XIF H51 XIF:1H5 XIF H52 XIF:2H5 XIF H61 XIF:1H6 XIF H62 XIF:2H6 XIF H101 XIH:1H10 XIH H102 XIH:2H10 XIH H151 XIH:1H15 XIH H152 XIH:2H15 XIH H171 XIH:1H17 XIH H172 XIH:2H17 XIH H1 XIH:1H XIH H2 XIH:2H XIH H3 XIH:3H XIH H111 XIH:1H11 XIH H112 XIH:2H11 XIH H121 XIH:1H12 XIH H122 XIH:2H12 XIH H141 XIH:1H14 XIH H142 XIH:2H14 XIH H271 XIH:1H27 XIH H272 XIH:2H27 XIH H273 XIH:3H27 XIH H51 XIL:1H5 XIL H52 XIL:2H5 XIL H5'1 XIL:1H5' XIL H5'2 XIL:2H5' XIL H6'1 XIL:1H6' XIL H6'2 XIL:2H6' XIL H51 XIM:1H5 XIM H52 XIM:2H5 XIM H21A XK2:1H2 XK2 H22A XK2:2H2 XK2 H71A XK2:1H7 XK2 H72 XK2:2H7 XK2 H311 XK2:1H31 XK2 H312 XK2:2H31 XK2 H611 XK2:1H61 XK2 H612 XK2:2H61 XK2 HA1 XL1:1HA XL1 HA2 XL1:2HA XL1 HA3 XL1:3HA XL1 HB1 XL1:1HB XL1 HB2 XL1:2HB XL1 H261 XLC:1H26 XLC H262 XLC:2H26 XLC H291 XLC:1H29 XLC H292 XLC:2H29 XLC H301 XLC:1H30 XLC H302 XLC:2H30 XLC H331 XLC:1H33 XLC H332 XLC:2H33 XLC H341 XLC:1H34 XLC H342 XLC:2H34 XLC H351 XLC:1H35 XLC H352 XLC:2H35 XLC H353 XLC:3H35 XLC H141 XLD:1H14 XLD H161 XLD:1H16 XLD H181 XLD:1H18 XLD H182 XLD:2H18 XLD H183 XLD:3H18 XLD H191 XLD:1H19 XLD H241 XLD:1H24 XLD H281 XLD:1H28 XLD H282 XLD:2H28 XLD H311 XLD:1H31 XLD H312 XLD:2H31 XLD H313 XLD:3H31 XLD H341 XLD:1H34 XLD H342 XLD:2H34 XLD H351 XLD:1H35 XLD H352 XLD:2H35 XLD H5C1 XLM:1H5C XLM H5C2 XLM:2H5C XLM H6'1 XLM:1H6' XLM H6'2 XLM:2H6' XLM H7'1 XLM:1H7' XLM H7'2 XLM:2H7' XLM H7'3 XLM:3H7' XLM H51 XLS:1H5 XLS H52 XLS:2H5 XLS H171 XMA:1H17 XMA H172 XMA:2H17 XMA H201 XMA:1H20 XMA H202 XMA:2H20 XMA H221 XMA:1H22 XMA H222 XMA:2H22 XMA H223 XMA:3H22 XMA H231 XMA:1H23 XMA H232 XMA:2H23 XMA H251 XMA:1H25 XMA H252 XMA:2H25 XMA H301 XMA:1H30 XMA H302 XMA:2H30 XMA H321 XMA:1H32 XMA H322 XMA:2H32 XMA H351 XMA:1H35 XMA H352 XMA:2H35 XMA H381 XMA:1H38 XMA H382 XMA:2H38 XMA H41 XMB:1H4 XMB H42 XMB:2H4 XMB H51 XMB:1H5 XMB H52 XMB:2H5 XMB H91 XMB:1H9 XMB H92 XMB:2H9 XMB H101 XMB:1H10 XMB H102 XMB:2H10 XMB H261 XMB:1H26 XMB H262 XMB:2H26 XMB H291 XMB:1H29 XMB H292 XMB:2H29 XMB H341 XMB:1H34 XMB H342 XMB:2H34 XMB H361 XMB:1H36 XMB H362 XMB:2H36 XMB H381 XMB:1H38 XMB H382 XMB:2H38 XMB H411 XMB:1H41 XMB H412 XMB:2H41 XMB H161 XMC:1H16 XMC H162 XMC:2H16 XMC H221 XMC:1H22 XMC H222 XMC:2H22 XMC H231 XMC:1H23 XMC H232 XMC:2H23 XMC H251 XMC:1H25 XMC H252 XMC:2H25 XMC H261 XMC:1H26 XMC H262 XMC:2H26 XMC H271 XMC:1H27 XMC H272 XMC:2H27 XMC H301 XMC:1H30 XMC H302 XMC:2H30 XMC H351 XMC:1H35 XMC H352 XMC:2H35 XMC H371 XMC:1H37 XMC H372 XMC:2H37 XMC H391 XMC:1H39 XMC H392 XMC:2H39 XMC H421 XMC:1H42 XMC H422 XMC:2H42 XMC H171 XMD:1H17 XMD H172 XMD:2H17 XMD H181 XMD:1H18 XMD H182 XMD:2H18 XMD H183 XMD:3H18 XMD H201 XMD:1H20 XMD H202 XMD:2H20 XMD H241 XMD:1H24 XMD H242 XMD:2H24 XMD H271 XMD:1H27 XMD H272 XMD:2H27 XMD H321 XMD:1H32 XMD H322 XMD:2H32 XMD H341 XMD:1H34 XMD H342 XMD:2H34 XMD H361 XMD:1H36 XMD H362 XMD:2H36 XMD H391 XMD:1H39 XMD H392 XMD:2H39 XMD H161 XME:1H16 XME H162 XME:2H16 XME H181 XME:1H18 XME H182 XME:2H18 XME H191 XME:1H19 XME H192 XME:2H19 XME H221 XME:1H22 XME H222 XME:2H22 XME H271 XME:1H27 XME H272 XME:2H27 XME H291 XME:1H29 XME H292 XME:2H29 XME H341 XME:1H34 XME H342 XME:2H34 XME H371 XME:1H37 XME H372 XME:2H37 XME H141 XMF:1H14 XMF H142 XMF:2H14 XMF H151 XMF:1H15 XMF H152 XMF:2H15 XMF H191 XMF:1H19 XMF H192 XMF:2H19 XMF H221 XMF:1H22 XMF H222 XMF:2H22 XMF H271 XMF:1H27 XMF H272 XMF:2H27 XMF H291 XMF:1H29 XMF H292 XMF:2H29 XMF H311 XMF:1H31 XMF H312 XMF:2H31 XMF H331 XMF:1H33 XMF H332 XMF:2H33 XMF H361 XMF:1H36 XMF H362 XMF:2H36 XMF H11A XMG:1H1 XMG H12 XMG:2H1 XMG H41 XMG:1H4 XMG H42 XMG:2H4 XMG H51 XMG:1H5 XMG H52 XMG:2H5 XMG H81 XMG:1H8 XMG H82 XMG:2H8 XMG H291 XMG:1H29 XMG H292 XMG:2H29 XMG H311 XMG:1H31 XMG H312 XMG:2H31 XMG H331 XMG:1H33 XMG H332 XMG:2H33 XMG H361 XMG:1H36 XMG H362 XMG:2H36 XMG H11 XMH:1H1 XMH H12A XMH:2H1 XMH H61 XMH:1H6 XMH H62 XMH:2H6 XMH H81 XMH:1H8 XMH H82 XMH:2H8 XMH H101 XMH:1H10 XMH H102 XMH:2H10 XMH H131 XMH:1H13 XMH H132 XMH:2H13 XMH H171 XMH:1H17 XMH H172 XMH:2H17 XMH H191 XMH:1H19 XMH H192 XMH:2H19 XMH H201 XMH:1H20 XMH H202 XMH:2H20 XMH H361 XMH:1H36 XMH H362 XMH:2H36 XMH H371 XMH:1H37 XMH H372 XMH:2H37 XMH H373 XMH:3H37 XMH H51 XMI:1H5 XMI H52 XMI:2H5 XMI H71 XMI:1H7 XMI H72 XMI:2H7 XMI H81 XMI:1H8 XMI H82 XMI:2H8 XMI H111 XMI:1H11 XMI H112 XMI:2H11 XMI H161 XMI:1H16 XMI H162 XMI:2H16 XMI H181 XMI:1H18 XMI H182 XMI:2H18 XMI H201 XMI:1H20 XMI H202 XMI:2H20 XMI H231 XMI:1H23 XMI H232 XMI:2H23 XMI H101 XMJ:1H10 XMJ H102 XMJ:2H10 XMJ H131 XMJ:1H13 XMJ H132 XMJ:2H13 XMJ H141 XMJ:1H14 XMJ H142 XMJ:2H14 XMJ H201 XMJ:1H20 XMJ H202 XMJ:2H20 XMJ H251 XMJ:1H25 XMJ H252 XMJ:2H25 XMJ H271 XMJ:1H27 XMJ H272 XMJ:2H27 XMJ H291 XMJ:1H29 XMJ H292 XMJ:2H29 XMJ H321 XMJ:1H32 XMJ H322 XMJ:2H32 XMJ H11 XMK:1H1 XMK H12A XMK:2H1 XMK H61 XMK:1H6 XMK H62 XMK:2H6 XMK H81 XMK:1H8 XMK H82 XMK:2H8 XMK H101 XMK:1H10 XMK H102 XMK:2H10 XMK H131 XMK:1H13 XMK H132 XMK:2H13 XMK H211 XMK:1H21 XMK H212 XMK:2H21 XMK H221 XMK:1H22 XMK H222 XMK:2H22 XMK H251 XMK:1H25 XMK H252 XMK:2H25 XMK H261 XMK:1H26 XMK H262 XMK:2H26 XMK H61 XMM:1H6 XMM H62 XMM:2H6 XMM HOP1 XMP:1HOP XMP HOP2 XMP:2HOP XMP H5'2 XMP:2H5' XMP H5'1 XMP:1H5' XMP H2O1 XMP:1H2O XMP H3O1 XMP:1H3O XMP H11A XN1:1H1 XN1 H12 XN1:2H1 XN1 H51 XN1:1H5 XN1 H52 XN1:2H5 XN1 H53 XN1:3H5 XN1 H61 XN1:1H6 XN1 H62 XN1:2H6 XN1 H63 XN1:3H6 XN1 H71 XN1:1H7 XN1 H72 XN1:2H7 XN1 H73 XN1:3H7 XN1 H81 XN1:1H8 XN1 H82 XN1:2H8 XN1 H91 XN1:1H9 XN1 H92 XN1:2H9 XN1 H101 XN1:1H10 XN1 H102 XN1:2H10 XN1 H121 XN1:1H12 XN1 H122 XN1:2H12 XN1 H141 XN1:1H14 XN1 H241 XN1:1H24 XN1 H242 XN1:2H24 XN1 H311 XN1:1H31 XN1 H312 XN1:2H31 XN1 H371 XN1:1H37 XN1 H372 XN1:2H37 XN1 H373 XN1:3H37 XN1 H11A XN2:1H1 XN2 H12 XN2:2H1 XN2 H51 XN2:1H5 XN2 H52 XN2:2H5 XN2 H53 XN2:3H5 XN2 H61 XN2:1H6 XN2 H62 XN2:2H6 XN2 H63 XN2:3H6 XN2 H71 XN2:1H7 XN2 H72 XN2:2H7 XN2 H73 XN2:3H7 XN2 H81 XN2:1H8 XN2 H82 XN2:2H8 XN2 H91 XN2:1H9 XN2 H92 XN2:2H9 XN2 H101 XN2:1H10 XN2 H102 XN2:2H10 XN2 H121 XN2:1H12 XN2 H122 XN2:2H12 XN2 H141 XN2:1H14 XN2 H241 XN2:1H24 XN2 H242 XN2:2H24 XN2 H311 XN2:1H31 XN2 H312 XN2:2H31 XN2 H381 XN2:1H38 XN2 H382 XN2:2H38 XN2 H391 XN2:1H39 XN2 H392 XN2:2H39 XN2 H393 XN2:3H39 XN2 H11A XN3:1H1 XN3 H12 XN3:2H1 XN3 H51 XN3:1H5 XN3 H52 XN3:2H5 XN3 H53 XN3:3H5 XN3 H61 XN3:1H6 XN3 H62 XN3:2H6 XN3 H63 XN3:3H6 XN3 H71 XN3:1H7 XN3 H72 XN3:2H7 XN3 H73 XN3:3H7 XN3 H81 XN3:1H8 XN3 H82 XN3:2H8 XN3 H91 XN3:1H9 XN3 H92 XN3:2H9 XN3 H101 XN3:1H10 XN3 H102 XN3:2H10 XN3 H121 XN3:1H12 XN3 H122 XN3:2H12 XN3 H141 XN3:1H14 XN3 H142 XN3:2H14 XN3 H241 XN3:1H24 XN3 H242 XN3:2H24 XN3 H311 XN3:1H31 XN3 H312 XN3:2H31 XN3 H381 XN3:1H38 XN3 H382 XN3:2H38 XN3 H21 XPE:1H2 XPE H22 XPE:2H2 XPE H31A XPE:1H3 XPE H32 XPE:2H3 XPE H51 XPE:1H5 XPE H52 XPE:2H5 XPE H61 XPE:1H6 XPE H62 XPE:2H6 XPE H81 XPE:1H8 XPE H82 XPE:2H8 XPE H91 XPE:1H9 XPE H92 XPE:2H9 XPE H111 XPE:1H11 XPE H112 XPE:2H11 XPE H121 XPE:1H12 XPE H122 XPE:2H12 XPE H141 XPE:1H14 XPE H142 XPE:2H14 XPE H151 XPE:1H15 XPE H152 XPE:2H15 XPE H171 XPE:1H17 XPE H172 XPE:2H17 XPE H181 XPE:1H18 XPE H182 XPE:2H18 XPE H201 XPE:1H20 XPE H202 XPE:2H20 XPE H211 XPE:1H21 XPE H212 XPE:2H21 XPE H231 XPE:1H23 XPE H232 XPE:2H23 XPE H241 XPE:1H24 XPE H242 XPE:2H24 XPE H261 XPE:1H26 XPE H262 XPE:2H26 XPE H271 XPE:1H27 XPE H272 XPE:2H27 XPE H291 XPE:1H29 XPE H292 XPE:2H29 XPE H301 XPE:1H30 XPE H302 XPE:2H30 XPE H91 XPP:1H9 XPP H92 XPP:2H9 XPP H93 XPP:3H9 XPP H151 XPP:1H15 XPP H152 XPP:2H15 XPP H153 XPP:3H15 XPP H211 XPP:1H21 XPP H212 XPP:2H21 XPP H213 XPP:3H21 XPP H221 XPP:1H22 XPP H222 XPP:2H22 XPP H223 XPP:3H22 XPP H201 XPP:1H20 XPP H202 XPP:2H20 XPP H181 XPP:1H18 XPP H182 XPP:2H18 XPP H191 XPP:1H19 XPP H192 XPP:2H19 XPP H31 XPP:1H3 XPP H32A XPP:2H3 XPP H33 XPP:3H3 XPP H281 XPP:1H28 XPP H282 XPP:2H28 XPP H283 XPP:3H28 XPP H301 XPP:1H30 XPP H302 XPP:2H30 XPP H291 XPP:1H29 XPP H292 XPP:2H29 XPP H91 XPQ:1H9 XPQ H92 XPQ:2H9 XPQ H93 XPQ:3H9 XPQ H151 XPQ:1H15 XPQ H152 XPQ:2H15 XPQ H153 XPQ:3H15 XPQ H211 XPQ:1H21 XPQ H212 XPQ:2H21 XPQ H213 XPQ:3H21 XPQ H221 XPQ:1H22 XPQ H222 XPQ:2H22 XPQ H223 XPQ:3H22 XPQ H201 XPQ:1H20 XPQ H202 XPQ:2H20 XPQ H181 XPQ:1H18 XPQ H182 XPQ:2H18 XPQ H191 XPQ:1H19 XPQ H192 XPQ:2H19 XPQ H31 XPQ:1H3 XPQ H32A XPQ:2H3 XPQ H33 XPQ:3H3 XPQ H281 XPQ:1H28 XPQ H282 XPQ:2H28 XPQ H283 XPQ:3H28 XPQ H301 XPQ:1H30 XPQ H302 XPQ:2H30 XPQ H291 XPQ:1H29 XPQ H292 XPQ:2H29 XPQ H461 XPX:1H46 XPX H462 XPX:2H46 XPX H463 XPX:3H46 XPX H451 XPX:1H45 XPX H452 XPX:2H45 XPX H441 XPX:1H44 XPX H442 XPX:2H44 XPX H431 XPX:1H43 XPX H432 XPX:2H43 XPX H421 XPX:1H42 XPX H422 XPX:2H42 XPX H411 XPX:1H41 XPX H412 XPX:2H41 XPX H401 XPX:1H40 XPX H402 XPX:2H40 XPX H391 XPX:1H39 XPX H392 XPX:2H39 XPX H381 XPX:1H38 XPX H382 XPX:2H38 XPX H371 XPX:1H37 XPX H372 XPX:2H37 XPX H361 XPX:1H36 XPX H362 XPX:2H36 XPX H351 XPX:1H35 XPX H352 XPX:2H35 XPX H341 XPX:1H34 XPX H342 XPX:2H34 XPX H331 XPX:1H33 XPX H332 XPX:2H33 XPX H321 XPX:1H32 XPX H322 XPX:2H32 XPX H301 XPX:1H30 XPX H302 XPX:2H30 XPX H151 XPX:1H15 XPX H152 XPX:2H15 XPX H161 XPX:1H16 XPX H162 XPX:2H16 XPX H171 XPX:1H17 XPX H172 XPX:2H17 XPX H181 XPX:1H18 XPX H182 XPX:2H18 XPX H191 XPX:1H19 XPX H192 XPX:2H19 XPX H201 XPX:1H20 XPX H202 XPX:2H20 XPX H211 XPX:1H21 XPX H212 XPX:2H21 XPX H221 XPX:1H22 XPX H222 XPX:2H22 XPX H231 XPX:1H23 XPX H232 XPX:2H23 XPX H241 XPX:1H24 XPX H242 XPX:2H24 XPX H251 XPX:1H25 XPX H252 XPX:2H25 XPX H261 XPX:1H26 XPX H262 XPX:2H26 XPX H271 XPX:1H27 XPX H272 XPX:2H27 XPX H281 XPX:1H28 XPX H282 XPX:2H28 XPX H291 XPX:1H29 XPX H292 XPX:2H29 XPX H293 XPX:3H29 XPX H121 XPX:1H12 XPX H122 XPX:2H12 XPX H111 XPX:1H11 XPX H112 XPX:2H11 XPX H51A XPX:1H5 XPX H52A XPX:2H5 XPX H61 XS2:1H6 XS2 H62 XS2:2H6 XS2 H63 XS2:3H6 XS2 H51 XS2:1H5 XS2 H52 XS2:2H5 XS2 H111 XS2:1H11 XS2 H112 XS2:2H11 XS2 H171 XS2:1H17 XS2 H172 XS2:2H17 XS2 H231 XS2:1H23 XS2 H232 XS2:2H23 XS2 H291 XS2:1H29 XS2 H292 XS2:2H29 XS2 H61 XTG:1H6 XTG H62 XTG:2H6 XTG H111 XTG:1H11 XTG H112 XTG:2H11 XTG HOP3 XTH:3HOP XTH HOP2 XTH:2HOP XTH H6'1 XTH:1H6' XTH H6'2 XTH:2H6' XTH H3'1 XTH:1H3' XTH H3'2 XTH:2H3' XTH H2'1 XTH:1H2' XTH H2'2 XTH:2H2' XTH H71 XTH:1H5M XTH H72 XTH:2H5M XTH H73 XTH:3H5M XTH HOP2 XTL:2HOP XTL H5' XTL:1H5* XTL H5'' XTL:2H5* XTL H4' XTL: H4* XTL H6' XTL: H6* XTL H7' XTL: H7* XTL H3' XTL: H3* XTL HO3' XTL:H3T XTL H2' XTL:1H2* XTL H2'' XTL:2H2* XTL H1' XTL: H1* XTL H71 XTL:1H5M XTL H72 XTL:2H5M XTL H73 XTL:3H5M XTL HOP3 XTL:3HOP XTL H1' XTS: H1* XTS H4' XTS: H4* XTS H5'1 XTS:1H5* XTS H5'2 XTS:2H5* XTS HO5' XTS:HO5* XTS H3' XTS: H3* XTS HO3' XTS:HO3* XTS H2' XTS: H2* XTS HO2' XTS:HO2* XTS H5'1 XTY:1H5' XTY H5'2 XTY:2H5' XTY H2'1 XTY:1H2' XTY H2'2 XTY:2H2' XTY H7A1 XTY:1H7A XTY H7A2 XTY:2H7A XTY H7A3 XTY:3H7A XTY HO3' XTY:H3T XTY HN21 XUG:1HN2 XUG HN22 XUG:2HN2 XUG H1' XUG: H1* XUG H2' XUG: H2* XUG HA'1 XUG:1HA* XUG HA'2 XUG:2HA* XUG HA'3 XUG:3HA* XUG H3' XUG: H3* XUG HO3' XUG:H3T XUG H4' XUG: H4* XUG H5' XUG:1H5* XUG H5'' XUG:2H5* XUG HOP2 XUG:2HOP XUG HOP3 XUG:3HOP XUG H11 XUL:1H1 XUL H12 XUL:2H1 XUL H51 XUL:1H5 XUL H52 XUL:2H5 XUL HO41 XV6:1HO4 XV6 HO51 XV6:1HO5 XV6 H21 XV6:1H2 XV6 H22 XV6:2H2 XV6 H31 XV6:1H3 XV6 H41 XV6:1H4 XV6 H51 XV6:1H5 XV6 H61 XV6:1H6 XV6 H71 XV6:1H7 XV6 H72 XV6:2H7 XV6 H311 XV6:1H31 XV6 H312 XV6:2H31 XV6 H331 XV6:1H33 XV6 H341 XV6:1H34 XV6 H351 XV6:1H35 XV6 H361 XV6:1H36 XV6 H371 XV6:1H37 XV6 H611 XV6:1H61 XV6 H612 XV6:2H61 XV6 H631 XV6:1H63 XV6 H641 XV6:1H64 XV6 H651 XV6:1H65 XV6 H661 XV6:1H66 XV6 H671 XV6:1H67 XV6 H211 XV6:1H21 XV6 H231 XV6:1H23 XV6 H241 XV6:1H24 XV6 H251 XV6:1H25 XV6 H281 XV6:1H28 XV6 H291 XV6:1H29 XV6 H711 XV6:1H71 XV6 H731 XV6:1H73 XV6 H741 XV6:1H74 XV6 H751 XV6:1H75 XV6 H781 XV6:1H78 XV6 H791 XV6:1H79 XV6 H XX1:1HN XX1 H2 XX1:2HN XX1 HB2 XX1:1HB XX1 HB3 XX1:2HB XX1 HG2 XX1:1HG XX1 HG3 XX1:2HG XX1 HD2 XX1:1HD XX1 HD3 XX1:2HD XX1 HE2 XX1:1HE XX1 HE3 XX1:2HE XX1 HZ XX1: HNZ XX1 HC2 XX1: H2 XX1 H31 XX3:1H3 XX3 H011 XX4:1H01 XX4 H012 XX4:2H01 XX4 H013 XX4:3H01 XX4 H051 XX4:1H05 XX4 H052 XX4:2H05 XX4 H061 XX4:1H06 XX4 H062 XX4:2H06 XX4 H081 XX4:1H08 XX4 H082 XX4:2H08 XX4 H251 XX4:1H25 XX4 H252 XX4:2H25 XX4 H271 XX4:1H27 XX4 H272 XX4:2H27 XX4 H281 XX4:1H28 XX4 H282 XX4:2H28 XX4 H291 XX4:1H29 XX4 H292 XX4:2H29 XX4 H301 XX4:1H30 XX4 H302 XX4:2H30 XX4 H311 XX4:1H31 XX4 H312 XX4:2H31 XX4 HC51 XX5:1HC5 XX5 HC52 XX5:2HC5 XX5 HC71 XX5:1HC7 XX5 HC72 XX5:2HC7 XX5 HC73 XX5:3HC7 XX5 HC81 XX5:1HC8 XX5 HC82 XX5:2HC8 XX5 HC83 XX5:3HC8 XX5 H141 XX5:1H14 XX5 H142 XX5:2H14 XX5 H201 XX5:1H20 XX5 H202 XX5:2H20 XX5 H191 XX6:1H19 XX6 H192 XX6:2H19 XX6 H201 XX6:1H20 XX6 H202 XX6:2H20 XX6 H171 XX6:1H17 XX6 H172 XX6:2H17 XX6 H151 XX6:1H15 XX6 H152 XX6:2H15 XX6 H191 XX7:1H19 XX7 H192 XX7:2H19 XX7 H201 XX7:1H20 XX7 H202 XX7:2H20 XX7 H171 XX7:1H17 XX7 H172 XX7:2H17 XX7 H151 XX7:1H15 XX7 H152 XX7:2H15 XX7 HN11 XXX:1HN1 XXX HN12 XXX:2HN1 XXX H71 XXX:1H7 XXX H72 XXX:2H7 XXX HN21 XXX:1HN2 XXX HN22 XXX:2HN2 XXX H121 XXX:1H12 XXX H122 XXX:2H12 XXX HN31 XXX:1HN3 XXX HN32 XXX:2HN3 XXX HN41 XXX:1HN4 XXX HN42 XXX:2HN4 XXX HN11 XXY:1HN1 XXY HN12 XXY:2HN1 XXY HG11 XXY:1HG1 XXY HG12 XXY:2HG1 XXY HG13 XXY:3HG1 XXY HA31 XXY:1HA3 XXY HA32 XXY:2HA3 XXY HB21 XXY:1HB2 XXY HB22 XXY:2HB2 XXY H211 XXZ:1H21 XXZ H212 XXZ:2H21 XXZ H101 XXZ:1H10 XXZ H102 XXZ:2H10 XXZ H111 XXZ:1H11 XXZ H112 XXZ:2H11 XXZ H131 XXZ:1H13 XXZ H132 XXZ:2H13 XXZ H141 XXZ:1H14 XXZ H142 XXZ:2H14 XXZ HNH1 XXZ:1HNH XXZ HNH2 XXZ:2HNH XXZ HB1 XXZ:1HB XXZ HB2 XXZ:2HB XXZ H191 XY2:1H19 XY2 H192 XY2:2H19 XY2 H193 XY2:3H19 XY2 H161 XY2:1H16 XY2 H162 XY2:2H16 XY2 H163 XY2:3H16 XY2 H141 XY2:1H14 XY2 H142 XY2:2H14 XY2 H131 XY2:1H13 XY2 H132 XY2:2H13 XY2 H121 XY2:1H12 XY2 H122 XY2:2H12 XY2 H123 XY2:3H12 XY2 H5'1 XYA:1H5' XYA H5'2 XYA:2H5' XYA HN61 XYA:1HN6 XYA HN62 XYA:2HN6 XYA H81 XYD:1H8 XYD H82 XYD:2H8 XYD H83 XYD:3H8 XYD H91 XYD:1H9 XYD H92 XYD:2H9 XYD H93 XYD:3H9 XYD HA31 XYG:1HA3 XYG HA32 XYG:2HA3 XYG HN2 XYG:2HN XYG HB11 XYG:1HB1 XYG HB12 XYG:2HB1 XYG HB13 XYG:3HB1 XYG H21 XYH:1H2 XYH H31 XYH:1H3 XYH H41 XYH:1H4 XYH H11 XYL:1H1 XYL H12 XYL:2H1 XYL H51 XYL:1H5 XYL H52 XYL:2H5 XYL H5B1 XYP:1H5B XYP H5B2 XYP:2H5B XYP HH31 XYQ:1HH3 XYQ HH32 XYQ:2HH3 XYQ HH33 XYQ:3HH3 XYQ H5N1 XYQ:1H5N XYQ H5N2 XYQ:2H5N XYQ H5A1 XYQ:1H5A XYQ H5A2 XYQ:2H5A XYQ HN61 XYQ:1HN6 XYQ HN62 XYQ:2HN6 XYQ H51 XYS:1H5 XYS H52 XYS:2H5 XYS H51 XYZ:1H5 XYZ H52 XYZ:2H5 XYZ HOP2 Y:2HOP Y HOP3 Y:3HOP Y H5' Y:1H5* Y H5'' Y:2H5* Y H4' Y: H4* Y H3' Y: H3* Y HO3' Y:*HO3 Y H2' Y:1H2* Y H2'' Y:2H2* Y H1' Y: H1* Y HB1 Y:1HB Y HB2 Y:2HB Y H71 Y12:1H7 Y12 H72 Y12:2H7 Y12 H81 Y12:1H8 Y12 H82 Y12:2H8 Y12 H251 Y12:1H25 Y12 H252 Y12:2H25 Y12 H253 Y12:3H25 Y12 H211 Y12:1H21 Y12 H212 Y12:2H21 Y12 H213 Y12:3H21 Y12 H71 Y13:1H7 Y13 H72 Y13:2H7 Y13 H81 Y13:1H8 Y13 H82 Y13:2H8 Y13 H361 Y27:1H36 Y27 H362 Y27:2H36 Y27 H351 Y27:1H35 Y27 H352 Y27:2H35 Y27 H331 Y27:1H33 Y27 H332 Y27:2H33 Y27 H321 Y27:1H32 Y27 H322 Y27:2H32 Y27 H421 Y27:1H42 Y27 H422 Y27:2H42 Y27 H423 Y27:3H42 Y27 H431 Y27:1H43 Y27 H432 Y27:2H43 Y27 H181 Y3:1H18 Y3 H182 Y3:2H18 Y3 H183 Y3:3H18 Y3 H121 YBH:1H12 YBH H122 YBH:2H12 YBH H111 YBH:1H11 YBH H112 YBH:2H11 YBH H251 YBH:1H25 YBH H252 YBH:2H25 YBH H131 YBH:1H13 YBH H132 YBH:2H13 YBH H141 YBH:1H14 YBH H142 YBH:2H14 YBH H21 YBT:1H2 YBT H22 YBT:2H2 YBT H31 YBT:1H3 YBT H32 YBT:2H3 YBT H41 YBT:1H4 YBT H42 YBT:2H4 YBT H51 YBT:1H5 YBT H52 YBT:2H5 YBT H61 YBT:1H6 YBT H62 YBT:2H6 YBT H71 YBT:1H7 YBT H72 YBT:2H7 YBT H81 YBT:1H8 YBT H82 YBT:2H8 YBT H2 YCM: HN2 YCM HB2 YCM:1HB YCM HB3 YCM:2HB YCM HD2 YCM:1HD YCM HD3 YCM:2HD YCM HZ21 YCM:1HZ YCM HZ22 YCM:2HZ YCM HN61 YE1:1HN6 YE1 HN62 YE1:2HN6 YE1 H1' YE1: H1* YE1 H2' YE1: H2* YE1 HO2' YE1:HO2* YE1 H3' YE1: H3* YE1 H4' YE1: H4* YE1 H5'1 YE1:1H5* YE1 H5'2 YE1:2H5* YE1 H121 YE1:1H12 YE1 H122 YE1:2H12 YE1 H141 YE1:1H14 YE1 H142 YE1:2H14 YE1 H143 YE1:3H14 YE1 H131 YE1:1H13 YE1 H132 YE1:2H13 YE1 H133 YE1:3H13 YE1 HC71 YE1:1HC7 YE1 HC72 YE1:2HC7 YE1 HC61 YE1:1HC6 YE1 HC62 YE1:2HC6 YE1 HC31 YE1:1HC3 YE1 HC32 YE1:2HC3 YE1 HC21 YE1:1HC2 YE1 HC22 YE1:2HC2 YE1 HAC1 YE1:1HAC YE1 HAC2 YE1:2HAC YE1 HAP1 YE7:1HAP YE7 HAP2 YE7:2HAP YE7 H11 YF1:1H1 YF1 H12 YF1:2H1 YF1 H13 YF1:3H1 YF1 H51 YF1:1H5 YF1 H52 YF1:2H5 YF1 H53 YF1:3H5 YF1 HN21 YF1:1HN2 YF1 HN22 YF1:2HN2 YF1 HM21 YF3:1HM2 YF3 HM22 YF3:2HM2 YF3 HM23 YF3:3HM2 YF3 H4'1 YF3:1H4' YF3 H4'2 YF3:2H4' YF3 H7'1 YF3:1H7' YF3 H7'2 YF3:2H7' YF3 HM41 YF3:1HM4 YF3 HM42 YF3:2HM4 YF3 HM43 YF3:3HM4 YF3 H21 YF3:1H2 YF3 H22 YF3:2H2 YF3 HM21 YF4:1HM2 YF4 HM22 YF4:2HM2 YF4 HM23 YF4:3HM2 YF4 H4'1 YF4:1H4' YF4 H4'2 YF4:2H4' YF4 H7'1 YF4:1H7' YF4 H7'2 YF4:2H7' YF4 HM41 YF4:1HM4 YF4 HM42 YF4:2HM4 YF4 HM43 YF4:3HM4 YF4 H41 YF4:1H4 YF4 H42 YF4:2H4 YF4 H21 YF4:1H2 YF4 H22 YF4:2H2 YF4 H23 YF4:3H2 YF4 H31 YG:1H3 YG H32 YG:2H3 YG H33 YG:3H3 YG H101 YG:1H10 YG H102 YG:2H10 YG H103 YG:3H10 YG H131 YG:1H13 YG H132 YG:2H13 YG H141 YG:1H14 YG H142 YG:2H14 YG H191 YG:1H19 YG H192 YG:2H19 YG H193 YG:3H19 YG H241 YG:1H24 YG H242 YG:2H24 YG H243 YG:3H24 YG H1' YG: H1* YG H2' YG: H2* YG HO2' YG:*HO2 YG H3' YG: H3* YG HO3' YG:*HO3 YG H4' YG: H4* YG H5' YG:1H5* YG H5'' YG:2H5* YG HOP2 YG:2HOP YG HOP3 YG:3HOP YG H6C1 YLL:1H6C YLL H6C2 YLL:2H6C YLL HAA1 YLY:1HAA YLY HAA2 YLY:2HAA YLY HAA3 YLY:3HAA YLY HAP1 YLY:1HAP YLY HAP2 YLY:2HAP YLY HAJ1 YLY:1HAJ YLY HAJ2 YLY:2HAJ YLY HAO1 YLY:1HAO YLY HAO2 YLY:2HAO YLY HAM1 YLY:1HAM YLY HAM2 YLY:2HAM YLY HAN1 YLY:1HAN YLY HAN2 YLY:2HAN YLY HB1 YLY:1HB YLY HB2 YLY:2HB YLY HN1 YLY:1HN YLY HN2 YLY:2HN YLY H5'1 YLY:1H5* YLY H5'2 YLY:2H5* YLY H4' YLY: H4* YLY H3' YLY: H3* YLY HO3' YLY:HO3* YLY H2' YLY: H2* YLY HO2' YLY:HO2* YLY H1' YLY: H1* YLY HN61 YLY:1HN6 YLY HN62 YLY:2HN6 YLY H11 YMA:1H1 YMA H12 YMA:2H1 YMA H101 YMA:1H10 YMA H102 YMA:2H10 YMA H111 YMA:1H11 YMA H112 YMA:2H11 YMA H141 YMA:1H14 YMA H142 YMA:2H14 YMA H161 YMA:1H16 YMA H162 YMA:2H16 YMA H181 YMA:1H18 YMA H182 YMA:2H18 YMA H121 YMA:1H12 YMA H122 YMA:2H12 YMA H31 YMA:1H3 YMA H32 YMA:2H3 YMA H41 YMA:1H4 YMA H42 YMA:2H4 YMA H51 YMA:1H5 YMA H52 YMA:2H5 YMA H71 YMA:1H7 YMA H72 YMA:2H7 YMA H91 YMA:1H9 YMA H92 YMA:2H9 YMA H171 YMA:1H17 YMA H172 YMA:2H17 YMA H71 YML:1H7 YML H72 YML:2H7 YML H21 YML:1H2 YML H22 YML:2H2 YML H91 YML:1H9 YML H92 YML:2H9 YML HAC1 YML:1HAC YML HAC2 YML:2HAC YML HAC3 YML:3HAC YML HAB1 YML:1HAB YML HAB2 YML:2HAB YML HAB3 YML:3HAB YML HAA1 YML:1HAA YML HAA2 YML:2HAA YML HAA3 YML:3HAA YML HN1 YMP:1HN YMP HN2 YMP:2HN YMP HB1 YMP:1HB YMP HB2 YMP:2HB YMP H5'1 YMP:1H5* YMP H5'2 YMP:2H5* YMP H4' YMP: H4* YMP H1' YMP: H1* YMP H2' YMP: H2* YMP H3' YMP: H3* YMP HN61 YMP:1HN6 YMP HN62 YMP:2HN6 YMP H YOF:1HN YOF H2 YOF:2HN YOF HB2 YOF:1HB YOF HB3 YOF:2HB YOF HH YOF: HO YOF HBA1 YOK:1HBA YOK HBA2 YOK:2HBA YOK HAA1 YOK:1HAA YOK HAA2 YOK:2HAA YOK H51 YOU:1H5 YOU H52 YOU:2H5 YOU H61 YOU:1H6 YOU H62 YOU:2H6 YOU H71 YOU:1H7 YOU H73 YOU:3H7 YOU H191 YOU:1H19 YOU H192 YOU:2H19 YOU H201 YOU:1H20 YOU H202 YOU:2H20 YOU H211 YOU:1H21 YOU H212 YOU:2H21 YOU H221 YOU:1H22 YOU H222 YOU:2H22 YOU H231 YOU:1H23 YOU H232 YOU:2H23 YOU H241 YOU:1H24 YOU H242 YOU:2H24 YOU H251 YOU:1H25 YOU H252 YOU:2H25 YOU H261 YOU:1H26 YOU H262 YOU:2H26 YOU H1A YOU:1H YOU H2A YOU:2H YOU H3A YOU:3H YOU H81 YOU:1H8 YOU H82 YOU:2H8 YOU H91 YOU:1H9 YOU H92 YOU:2H9 YOU H101 YOU:1H10 YOU H102 YOU:2H10 YOU H111 YOU:1H11 YOU H112 YOU:2H11 YOU H121 YOU:1H12 YOU H122 YOU:2H12 YOU H123 YOU:3H12 YOU H131 YOU:1H13 YOU H132 YOU:2H13 YOU H141 YOU:1H14 YOU H142 YOU:2H14 YOU H151 YOU:1H15 YOU H152 YOU:2H15 YOU H161 YOU:1H16 YOU H162 YOU:2H16 YOU H171 YOU:1H17 YOU H172 YOU:2H17 YOU H271 YOU:1H27 YOU H272 YOU:2H27 YOU H281 YOU:1H28 YOU H282 YOU:2H28 YOU H291 YOU:1H29 YOU H292 YOU:2H29 YOU H301 YOU:1H30 YOU H302 YOU:2H30 YOU H303 YOU:3H30 YOU H221 YPA:1H22 YPA H222 YPA:2H22 YPA H231 YPA:1H23 YPA H232 YPA:2H23 YPA H391 YPA:1H39 YPA H392 YPA:2H39 YPA H491 YPA:1H49 YPA H492 YPA:2H49 YPA H501 YPA:1H50 YPA H502 YPA:2H50 YPA H503 YPA:3H50 YPA HOP3 YRR:3HOP YRR HC51 YRR:1HC5 YRR HC52 YRR:2HC5 YRR HO3' YRR:H3T YRR HC21 YRR:1HC2 YRR HC22 YRR:2HC2 YRR HC11 YRR:1HC1 YRR HC12 YRR:2HC1 YRR HB1 YSA:1HB YSA HB2 YSA:2HB YSA HN1 YSA:1HN YSA HN2 YSA:2HN YSA H5'1 YSA:1H5* YSA H5'2 YSA:2H5* YSA H4' YSA: H4* YSA H3' YSA: H3* YSA H2' YSA: H2* YSA H1' YSA: H1* YSA HN61 YSA:1HN6 YSA HN62 YSA:2HN6 YSA H151 YSH:1H15 YSH H152 YSH:2H15 YSH H171 YSH:1H17 YSH H172 YSH:2H17 YSH H173 YSH:3H17 YSH H181 YSH:1H18 YSH H182 YSH:2H18 YSH H183 YSH:3H18 YSH H191 YSH:1H19 YSH H192 YSH:2H19 YSH H193 YSH:3H19 YSH HAA1 YVN:1HAA YVN HAA2 YVN:2HAA YVN HAA3 YVN:3HAA YVN HAX1 YVN:1HAX YVN HAX2 YVN:2HAX YVN HAX3 YVN:3HAX YVN HAY1 YVN:1HAY YVN HAY2 YVN:2HAY YVN HAY3 YVN:3HAY YVN HAU1 YVN:1HAU YVN HAU2 YVN:2HAU YVN HAP1 YVN:1HAP YVN HAP2 YVN:2HAP YVN HAR1 YVN:1HAR YVN HAR2 YVN:2HAR YVN HOP2 YYG:2HOP YYG HOP3 YYG:3HOP YYG H5' YYG:1H5* YYG H5'' YYG:2H5* YYG H4' YYG: H4* YYG H3' YYG: H3* YYG HO3' YYG:H3T YYG H2' YYG: H2* YYG HO2' YYG:2HO* YYG H1' YYG: H1* YYG H31 YYG:1H3 YYG H32 YYG:2H3 YYG H33 YYG:3H3 YYG H101 YYG:1H10 YYG H102 YYG:2H10 YYG H103 YYG:3H10 YYG H131 YYG:1H13 YYG H132 YYG:2H13 YYG H141 YYG:1H14 YYG H142 YYG:2H14 YYG H191 YYG:1H19 YYG H192 YYG:2H19 YYG H193 YYG:3H19 YYG H241 YYG:1H24 YYG H242 YYG:2H24 YYG H243 YYG:3H24 YYG H5'1 YYY:1H5* YYY H5'2 YYY:2H5* YYY H4' YYY: H4* YYY H3' YYY: H3* YYY H1' YYY: H1* YYY H2'1 YYY:1H2* YYY H2'2 YYY:2H2* YYY H4N1 YYY:1H4N YYY H4N2 YYY:2H4N YYY H31 YZ9:1H3 YZ9 H32 YZ9:2H3 YZ9 H33 YZ9:3H3 YZ9 H111 YZ9:1H11 YZ9 H112 YZ9:2H11 YZ9 HOP2 Z:2HOP Z H5' Z:1H5* Z H5'' Z:2H5* Z H4' Z: H4* Z H3' Z: H3* Z HO3' Z:H3T Z H2' Z:1H2* Z H2'' Z:2H2* Z H1' Z: H1* Z HOP3 Z:3HOP Z H111 Z34:1H11 Z34 H121 Z34:1H12 Z34 H122 Z34:2H12 Z34 H301 Z34:1H30 Z34 H302 Z34:2H30 Z34 H303 Z34:3H30 Z34 H281 Z34:1H28 Z34 H282 Z34:2H28 Z34 H291 Z34:1H29 Z34 H292 Z34:2H29 Z34 H321 Z34:1H32 Z34 H322 Z34:2H32 Z34 H361 Z34:1H36 Z34 H362 Z34:2H36 Z34 H363 Z34:3H36 Z34 H7T1 Z5A:1H7T Z5A H7T2 Z5A:2H7T Z5A H7T3 Z5A:3H7T Z5A H5'1 Z5A:1H5' Z5A H5'2 Z5A:2H5' Z5A H2'1 Z5A:1H2' Z5A H2'2 Z5A:2H2' Z5A H5A1 Z5A:1H5* Z5A H5A2 Z5A:2H5* Z5A H4B Z5A: H4* Z5A H3B Z5A: H3* Z5A HO'3 Z5A:3HO* Z5A H2' Z5A: H2* Z5A HO'2 Z5A:2HO* Z5A H1B Z5A: H1* Z5A H6A1 Z5A:1H6A Z5A H6A2 Z5A:2H6A Z5A HN1 ZAB:1HN ZAB HN2 ZAB:2HN ZAB HA2 ZAB:2HA ZAB HA3 ZAB:3HA ZAB HM2 ZAB:2HM ZAB HM3 ZAB:3HM ZAB HOB1 ZAF:1HOB ZAF H2A1 ZAF:1H2A ZAF H2A2 ZAF:2H2A ZAF HOB3 ZAF:3HOB ZAF H4A1 ZAF:1H4A ZAF H4A2 ZAF:2H4A ZAF H4A3 ZAF:3H4A ZAF H7A1 ZAF:1H7A ZAF H7A2 ZAF:2H7A ZAF H7A3 ZAF:3H7A ZAF H111 ZAF:1H11 ZAF H112 ZAF:2H11 ZAF HP2' ZAF:*HP2 ZAF HP3' ZAF:*HP3 ZAF HP4' ZAF:*HP4 ZAF HP5' ZAF:*HP5 ZAF HP6' ZAF:*HP6 ZAF H4C1 ZAH:1H4C ZAH H4C2 ZAH:2H4C ZAH H5C1 ZAH:1H5C ZAH H5C2 ZAH:2H5C ZAH H6C1 ZAH:1H6C ZAH H6C2 ZAH:2H6C ZAH H111 ZAH:1H11 ZAH H112 ZAH:2H11 ZAH H113 ZAH:3H11 ZAH H181 ZAH:1H18 ZAH H182 ZAH:2H18 ZAH H131 ZAM:1H13 ZAM H132 ZAM:2H13 ZAM H301 ZAM:1H30 ZAM H302 ZAM:2H30 ZAM H331 ZAM:1H33 ZAM H332 ZAM:2H33 ZAM H333 ZAM:3H33 ZAM H101 ZAM:1H10 ZAM H102 ZAM:2H10 ZAM H171 ZAM:1H17 ZAM H172 ZAM:2H17 ZAM H173 ZAM:3H17 ZAM H231 ZAM:1H23 ZAM H232 ZAM:2H23 ZAM H233 ZAM:3H23 ZAM H431 ZAM:1H43 ZAM H432 ZAM:2H43 ZAM H433 ZAM:3H43 ZAM H101 ZAP:1H10 ZAP H102 ZAP:2H10 ZAP HN21 ZAP:1HN2 ZAP HN22 ZAP:2HN2 ZAP HOP2 ZAP:2HOP ZAP HOP3 ZAP:3HOP ZAP H191 ZAR:1H19 ZAR H192 ZAR:2H19 ZAR H193 ZAR:3H19 ZAR HAK1 ZD6:1HAK ZD6 HAK2 ZD6:2HAK ZD6 HAM1 ZD6:1HAM ZD6 HAM2 ZD6:2HAM ZD6 HAB1 ZD6:1HAB ZD6 HAB2 ZD6:2HAB ZD6 HAB3 ZD6:3HAB ZD6 HAN1 ZD6:1HAN ZD6 HAN2 ZD6:2HAN ZD6 HAL1 ZD6:1HAL ZD6 HAL2 ZD6:2HAL ZD6 HAO1 ZD6:1HAO ZD6 HAO2 ZD6:2HAO ZD6 HAA1 ZD6:1HAA ZD6 HAA2 ZD6:2HAA ZD6 HAA3 ZD6:3HAA ZD6 HAB1 ZDP:1HAB ZDP HAB2 ZDP:2HAB ZDP HAK1 ZDP:1HAK ZDP HAK2 ZDP:2HAK ZDP HAJ1 ZDP:1HAJ ZDP HAJ2 ZDP:2HAJ ZDP HAM1 ZDP:1HAM ZDP HAM2 ZDP:2HAM ZDP HAC1 ZDP:1HAC ZDP HAC2 ZDP:2HAC ZDP HAN1 ZDP:1HAN ZDP HAN2 ZDP:2HAN ZDP HAN3 ZDP:3HAN ZDP HAN1 ZDR:1HAN ZDR HAN2 ZDR:2HAN ZDR HAN3 ZDR:3HAN ZDR HAC1 ZDR:1HAC ZDR HAC2 ZDR:2HAC ZDR HAM1 ZDR:1HAM ZDR HAM2 ZDR:2HAM ZDR HAJ1 ZDR:1HAJ ZDR HAJ2 ZDR:2HAJ ZDR HAK1 ZDR:1HAK ZDR HAK2 ZDR:2HAK ZDR HAB1 ZDR:1HAB ZDR HAB2 ZDR:2HAB ZDR HOP2 ZDU:2HOP ZDU H5A1 ZDU:1H5A ZDU H5A2 ZDU:2H5A ZDU H5B1 ZDU:1H5B ZDU H5B2 ZDU:2H5B ZDU H5G1 ZDU:1H5G ZDU H5G2 ZDU:2H5G ZDU H5D1 ZDU:1H5D ZDU H5D2 ZDU:2H5D ZDU H2' ZDU:1H2* ZDU H2'' ZDU:2H2* ZDU H5' ZDU:1H5* ZDU H5'' ZDU:2H5* ZDU H4' ZDU: H4* ZDU H1' ZDU: H1* ZDU H3' ZDU: H3* ZDU HO3' ZDU:H3T ZDU HOP3 ZDU:3HOP ZDU H141 ZEA:1H14 ZEA H142 ZEA:2H14 ZEA H151 ZEA:1H15 ZEA H152 ZEA:2H15 ZEA H153 ZEA:3H15 ZEA H111 ZEA:1H11 ZEA H112 ZEA:2H11 ZEA H5'1 ZEB:1H5' ZEB H5'2 ZEB:2H5' ZEB H141 ZEC:1H14 ZEC H142 ZEC:2H14 ZEC HZ91 ZED:1HZ9 ZED HZ92 ZED:2HZ9 ZED H111 ZED:1H11 ZED H112 ZED:2H11 ZED H121 ZED:1H12 ZED H122 ZED:2H12 ZED H123 ZED:3H12 ZED H151 ZED:1H15 ZED H152 ZED:2H15 ZED HAA1 ZEM:1HAA ZEM HAA2 ZEM:2HAA ZEM HMA1 ZEM:1HMA ZEM HMA2 ZEM:2HMA ZEM HMA3 ZEM:3HMA ZEM HBA1 ZEM:1HBA ZEM HBA2 ZEM:2HBA ZEM HMB1 ZEM:1HMB ZEM HMB2 ZEM:2HMB ZEM HMB3 ZEM:3HMB ZEM HBB1 ZEM:1HBB ZEM HBB2 ZEM:2HBB ZEM HMC1 ZEM:1HMC ZEM HMC2 ZEM:2HMC ZEM HMC3 ZEM:3HMC ZEM HBC1 ZEM:1HBC ZEM HBC2 ZEM:2HBC ZEM HMD1 ZEM:1HMD ZEM HMD2 ZEM:2HMD ZEM HMD3 ZEM:3HMD ZEM HAD1 ZEM:1HAD ZEM HAD2 ZEM:2HAD ZEM HBD1 ZEM:1HBD ZEM HBD2 ZEM:2HBD ZEM H82 ZEN:2H8 ZEN H81 ZEN:1H8 ZEN H92 ZEN:2H9 ZEN H91 ZEN:1H9 ZEN H112 ZEN:2H11 ZEN H111 ZEN:1H11 ZEN H122 ZEN:2H12 ZEN H121 ZEN:1H12 ZEN H152 ZEN:2H15 ZEN H151 ZEN:1H15 ZEN H162 ZEN:2H16 ZEN H161 ZEN:1H16 ZEN H182 ZEN:2H18 ZEN H181 ZEN:1H18 ZEN H192 ZEN:2H19 ZEN H191 ZEN:1H19 ZEN H141 ZES:1H14 ZES H142 ZES:2H14 ZES H271 ZES:1H27 ZES H272 ZES:2H27 ZES H171 ZEX:1H17 ZEX H172 ZEX:2H17 ZEX H173 ZEX:3H17 ZEX H41 ZEX:1H4 ZEX H42 ZEX:2H4 ZEX H21 ZEX:1H2 ZEX H22 ZEX:2H2 ZEX H181 ZEX:1H18 ZEX H182 ZEX:2H18 ZEX H183 ZEX:3H18 ZEX H161 ZEX:1H16 ZEX H162 ZEX:2H16 ZEX H163 ZEX:3H16 ZEX H191 ZEX:1H19 ZEX H192 ZEX:2H19 ZEX H193 ZEX:3H19 ZEX H201 ZEX:1H20 ZEX H202 ZEX:2H20 ZEX H203 ZEX:3H20 ZEX H401 ZEX:1H40 ZEX H402 ZEX:2H40 ZEX H403 ZEX:3H40 ZEX H391 ZEX:1H39 ZEX H392 ZEX:2H39 ZEX H393 ZEX:3H39 ZEX H361 ZEX:1H36 ZEX H362 ZEX:2H36 ZEX H363 ZEX:3H36 ZEX H371 ZEX:1H37 ZEX H372 ZEX:2H37 ZEX H373 ZEX:3H37 ZEX H221 ZEX:1H22 ZEX H222 ZEX:2H22 ZEX H381 ZEX:1H38 ZEX H382 ZEX:2H38 ZEX H383 ZEX:3H38 ZEX H21 ZFB:1H2 ZFB H22 ZFB:2H2 ZFB H111 ZFB:1H11 ZFB H112 ZFB:2H11 ZFB H121 ZFB:1H12 ZFB H122 ZFB:2H12 ZFB HN21 ZHH:1HN2 ZHH HN22 ZHH:2HN2 ZHH HA1 ZHH:1HA ZHH HA2 ZHH:2HA ZHH HB1 ZHH:1HB ZHH HB2 ZHH:2HB ZHH HF11 ZHH:1HF1 ZHH HF12 ZHH:2HF1 ZHH HF13 ZHH:3HF1 ZHH HN21 ZHZ:1HN2 ZHZ HN22 ZHZ:2HN2 ZHZ HB1 ZHZ:1HB ZHZ HB2 ZHZ:2HB ZHZ HF11 ZHZ:1HF1 ZHZ HF12 ZHZ:2HF1 ZHZ HF13 ZHZ:3HF1 ZHZ HOA2 ZID:2HOA ZID H51A ZID:AH51 ZID H52A ZID:AH52 ZID H4B ZID:AH4* ZID H3B ZID:AH3* ZID HO3A ZID:AHO3 ZID H2B ZID:AH2* ZID HO2A ZID:AHO2 ZID H1B ZID:AH1* ZID H8A ZID: AH8 ZID H61A ZID:AH61 ZID H62A ZID:AH62 ZID H2A ZID: AH2 ZID H51N ZID:NH51 ZID H52N ZID:NH52 ZID H4D ZID:NH4* ZID H3D ZID:NH3* ZID HO3N ZID:NHO3 ZID H2D ZID:NH2* ZID HO2N ZID:NHO2 ZID H1D ZID:NH1* ZID H2N ZID: NH2 ZID H71N ZID:NH71 ZID H72N ZID:NH72 ZID H5N ZID: NH5 ZID H6N ZID: NH6 ZID H2Z ZID: ZH2 ZID H3Z ZID: ZH3 ZID H5Z ZID: ZH5 ZID H6Z ZID: ZH6 ZID H7C1 ZIO:1H7C ZIO H7C2 ZIO:2H7C ZIO H341 ZIO:1H34 ZIO H342 ZIO:2H34 ZIO H343 ZIO:3H34 ZIO H331 ZIO:1H33 ZIO H332 ZIO:2H33 ZIO H351 ZIO:1H35 ZIO H352 ZIO:2H35 ZIO H353 ZIO:3H35 ZIO H361 ZIO:1H36 ZIO H362 ZIO:2H36 ZIO H363 ZIO:3H36 ZIO H301 ZIO:1H30 ZIO H302 ZIO:2H30 ZIO H303 ZIO:3H30 ZIO H321 ZIO:1H32 ZIO H322 ZIO:2H32 ZIO H323 ZIO:3H32 ZIO H251 ZIO:1H25 ZIO H252 ZIO:2H25 ZIO H271 ZIO:1H27 ZIO H272 ZIO:2H27 ZIO H273 ZIO:3H27 ZIO H281 ZIO:1H28 ZIO H282 ZIO:2H28 ZIO H283 ZIO:3H28 ZIO H151 ZIO:1H15 ZIO H152 ZIO:2H15 ZIO H201 ZIO:1H20 ZIO H202 ZIO:2H20 ZIO H203 ZIO:3H20 ZIO H291 ZIO:1H29 ZIO H292 ZIO:2H29 ZIO H293 ZIO:3H29 ZIO H211 ZIO:1H21 ZIO H212 ZIO:2H21 ZIO H213 ZIO:3H21 ZIO H311 ZIO:1H31 ZIO H312 ZIO:2H31 ZIO H313 ZIO:3H31 ZIO H141 ZIP:1H14 ZIP H142 ZIP:2H14 ZIP H143 ZIP:3H14 ZIP H151 ZIP:1H15 ZIP H152 ZIP:2H15 ZIP H153 ZIP:3H15 ZIP H111 ZIP:1H11 ZIP H112 ZIP:2H11 ZIP H71 ZIT:1H7 ZIT H72 ZIT:2H7 ZIT H91 ZIT:1H9 ZIT H92 ZIT:2H9 ZIT H151 ZIT:1H15 ZIT H152 ZIT:2H15 ZIT H161 ZIT:1H16 ZIT H162 ZIT:2H16 ZIT H163 ZIT:3H16 ZIT H171 ZIT:1H17 ZIT H172 ZIT:2H17 ZIT H173 ZIT:3H17 ZIT H181 ZIT:1H18 ZIT H182 ZIT:2H18 ZIT H183 ZIT:3H18 ZIT H191 ZIT:1H19 ZIT H192 ZIT:2H19 ZIT H193 ZIT:3H19 ZIT H201 ZIT:1H20 ZIT H202 ZIT:2H20 ZIT H203 ZIT:3H20 ZIT H211 ZIT:1H21 ZIT H212 ZIT:2H21 ZIT H213 ZIT:3H21 ZIT H221 ZIT:1H22 ZIT H222 ZIT:2H22 ZIT H223 ZIT:3H22 ZIT H231 ZIT:1H23 ZIT H232 ZIT:2H23 ZIT H233 ZIT:3H23 ZIT H1A1 ZIT:1H1A ZIT H2A1 ZIT:1H2A ZIT H3A1 ZIT:1H3A ZIT H4A1 ZIT:1H4A ZIT H4A2 ZIT:2H4A ZIT H5A1 ZIT:1H5A ZIT H6A1 ZIT:1C6A ZIT H6A2 ZIT:2C6A ZIT H6A3 ZIT:3C6A ZIT H7A1 ZIT:1H7A ZIT H7A2 ZIT:2H7A ZIT H7A3 ZIT:3H7A ZIT H8A1 ZIT:1H8A ZIT H8A2 ZIT:2H8A ZIT H8A3 ZIT:3H8A ZIT H1B1 ZIT:1H1B ZIT H2B1 ZIT:1H2B ZIT H2B2 ZIT:2H2B ZIT H4B1 ZIT:1H4B ZIT H5B1 ZIT:1H5B ZIT H6B1 ZIT:1C6B ZIT H6B2 ZIT:2C6B ZIT H6B3 ZIT:3C6B ZIT H7B1 ZIT:1H7B ZIT H7B2 ZIT:2H7B ZIT H7B3 ZIT:3H7B ZIT H8B1 ZIT:1H8B ZIT H8B2 ZIT:2H8B ZIT H8B3 ZIT:3H8B ZIT H2C1 ZK5:1H2C ZK5 H2C2 ZK5:2H2C ZK5 H6C1 ZK5:1H6C ZK5 H6C2 ZK5:2H6C ZK5 H7C1 ZK5:1H7C ZK5 H7C2 ZK5:2H7C ZK5 H1C1 ZK5:1H1C ZK5 H1C2 ZK5:2H1C ZK5 H121 ZK5:1H12 ZK5 H122 ZK5:2H12 ZK5 H151 ZK5:1H15 ZK5 H152 ZK5:2H15 ZK5 H161 ZK5:1H16 ZK5 H162 ZK5:2H16 ZK5 H181 ZK5:1H18 ZK5 H182 ZK5:2H18 ZK5 H183 ZK5:3H18 ZK5 H191 ZK5:1H19 ZK5 H192 ZK5:2H19 ZK5 H193 ZK5:3H19 ZK5 H211 ZK5:1H21 ZK5 H212 ZK5:2H21 ZK5 H111 ZMR:1H11 ZMR H112 ZMR:2H11 ZMR H113 ZMR:3H11 ZMR H91 ZMR:1H9 ZMR H92 ZMR:2H9 ZMR HN11 ZMR:1HN1 ZMR HN12 ZMR:2HN1 ZMR HN21 ZMR:1HN2 ZMR HN22 ZMR:2HN2 ZMR HO11 ZN3:1HO1 ZN3 HO12 ZN3:2HO1 ZN3 HMA1 ZNH:1HMA ZNH HMA2 ZNH:2HMA ZNH HMA3 ZNH:3HMA ZNH HAA1 ZNH:1HAA ZNH HAA2 ZNH:2HAA ZNH HBA1 ZNH:1HBA ZNH HBA2 ZNH:2HBA ZNH HMB1 ZNH:1HMB ZNH HMB2 ZNH:2HMB ZNH HMB3 ZNH:3HMB ZNH HBB1 ZNH:1HBB ZNH HBB2 ZNH:2HBB ZNH HMC1 ZNH:1HMC ZNH HMC2 ZNH:2HMC ZNH HMC3 ZNH:3HMC ZNH HBC1 ZNH:1HBC ZNH HBC2 ZNH:2HBC ZNH HMD1 ZNH:1HMD ZNH HMD2 ZNH:2HMD ZNH HMD3 ZNH:3HMD ZNH HAD1 ZNH:1HAD ZNH HAD2 ZNH:2HAD ZNH HBD1 ZNH:1HBD ZNH HBD2 ZNH:2HBD ZNH HO11 ZNO:1HO1 ZNO HO12 ZNO:2HO1 ZNO HO13 ZNO:3HO1 ZNO HO14 ZNO:4HO1 ZNO HO11 ZO3:1HO1 ZO3 HO12 ZO3:2HO1 ZO3 HO21 ZO3:1HO2 ZO3 HO22 ZO3:2HO2 ZO3 HO31 ZO3:1HO3 ZO3 HO32 ZO3:2HO3 ZO3 H71 ZOL:1H7 ZOL H72 ZOL:2H7 ZOL H281 ZPG:1H28 ZPG H282 ZPG:2H28 ZPG H283 ZPG:3H28 ZPG H241 ZPG:1H24 ZPG H242 ZPG:2H24 ZPG H261 ZPG:1H26 ZPG H262 ZPG:2H26 ZPG H263 ZPG:3H26 ZPG H211 ZPG:1H21 ZPG H212 ZPG:2H21 ZPG H251 ZPG:1H25 ZPG H252 ZPG:2H25 ZPG H253 ZPG:3H25 ZPG H181 ZPG:1H18 ZPG H182 ZPG:2H18 ZPG H161 ZPG:1H16 ZPG H162 ZPG:2H16 ZPG H163 ZPG:3H16 ZPG H141 ZPG:1H14 ZPG H142 ZPG:2H14 ZPG H121 ZPG:1H12 ZPG H122 ZPG:2H12 ZPG H123 ZPG:3H12 ZPG H101 ZPG:1H10 ZPG H102 ZPG:2H10 ZPG H81 ZPG:1H8 ZPG H82 ZPG:2H8 ZPG H83 ZPG:3H8 ZPG H61 ZPG:1H6 ZPG H62 ZPG:2H6 ZPG H41 ZPG:1H4 ZPG H42 ZPG:2H4 ZPG H31 ZPG:1H3 ZPG H32 ZPG:2H3 ZPG H33 ZPG:3H3 ZPG H8C1 ZPP:1H8C ZPP H8C2 ZPP:2H8C ZPP H8C3 ZPP:3H8C ZPP H7C1 ZPP:1H7C ZPP H7C2 ZPP:2H7C ZPP H5C1 ZPP:1H5C ZPP H5C2 ZPP:2H5C ZPP H3C1 ZPP:1H3C ZPP H3C2 ZPP:2H3C ZPP H2C1 ZPP:1H2C ZPP H2C2 ZPP:2H2C ZPP H141 ZPQ:1H14 ZPQ H142 ZPQ:2H14 ZPQ H143 ZPQ:3H14 ZPQ H151 ZPQ:1H15 ZPQ H152 ZPQ:2H15 ZPQ H171 ZPQ:1H17 ZPQ H172 ZPQ:2H17 ZPQ H173 ZPQ:3H17 ZPQ H221 ZPQ:1H22 ZPQ H222 ZPQ:2H22 ZPQ H231 ZPQ:1H23 ZPQ H232 ZPQ:2H23 ZPQ H233 ZPQ:3H23 ZPQ H331 ZPQ:1H33 ZPQ H332 ZPQ:2H33 ZPQ H351 ZPQ:1H35 ZPQ H352 ZPQ:2H35 ZPQ H353 ZPQ:3H35 ZPQ H361 ZPQ:1H36 ZPQ H362 ZPQ:2H36 ZPQ H363 ZPQ:3H36 ZPQ H371 ZPQ:1H37 ZPQ H372 ZPQ:2H37 ZPQ H391 ZPQ:1H39 ZPQ H392 ZPQ:2H39 ZPQ H393 ZPQ:3H39 ZPQ H431 ZPQ:1H43 ZPQ H432 ZPQ:2H43 ZPQ H433 ZPQ:3H43 ZPQ H441 ZPQ:1H44 ZPQ H442 ZPQ:2H44 ZPQ H443 ZPQ:3H44 ZPQ H511 ZPQ:1H51 ZPQ H512 ZPQ:2H51 ZPQ H531 ZPQ:1H53 ZPQ H532 ZPQ:2H53 ZPQ H533 ZPQ:3H53 ZPQ H541 ZPQ:1H54 ZPQ H542 ZPQ:2H54 ZPQ H543 ZPQ:3H54 ZPQ H11 ZPR:1H1 ZPR H31 ZPR:1H3 ZPR H41 ZPR:1H4 ZPR H42 ZPR:2H4 ZPR H51 ZPR:1H5 ZPR H52 ZPR:2H5 ZPR H61 ZPR:1H6 ZPR H62 ZPR:2H6 ZPR H101 ZPR:1H10 ZPR H111 ZPR:1H11 ZPR H112 ZPR:2H11 ZPR H121 ZPR:1H12 ZPR H122 ZPR:2H12 ZPR H131 ZPR:1H13 ZPR H132 ZPR:2H13 ZPR H181 ZPR:1H18 ZPR H182 ZPR:2H18 ZPR H201 ZPR:1H20 ZPR H211 ZPR:1H21 ZPR H221 ZPR:1H22 ZPR H231 ZPR:1H23 ZPR H241 ZPR:1H24 ZPR H21 ZRA:1H2 ZRA H22 ZRA:2H2 ZRA HB11 ZRA:1HB1 ZRA HB12 ZRA:2HB1 ZRA HG1 ZRA:1HG ZRA HG2 ZRA:2HG ZRA HD1 ZRA:1HD ZRA HD2 ZRA:2HD ZRA HB21 ZRA:1HB2 ZRA HB22 ZRA:2HB2 ZRA HB23 ZRA:3HB2 ZRA HM1 ZRA:1HM ZRA HM2 ZRA:2HM ZRA HM3 ZRA:3HM ZRA H91 ZST:1H9 ZST H92 ZST:2H9 ZST H171 ZST:1H17 ZST H172 ZST:2H17 ZST H21 ZYA:1H2 ZYA H22 ZYA:2H2 ZYA HB11 ZYA:1HB1 ZYA HB12 ZYA:2HB1 ZYA HB21 ZYA:1HB2 ZYA HB22 ZYA:2HB2 ZYA HB23 ZYA:3HB2 ZYA HM1 ZYA:1HM ZYA HM2 ZYA:2HM ZYA HM3 ZYA:3HM ZYA HN11 ZYX:1HN1 ZYX HN12 ZYX:2HN1 ZYX H71 ZYX:1H7 ZYX H72 ZYX:2H7 ZYX H81 ZYX:1H8 ZYX H82 ZYX:2H8 ZYX HN21 ZYX:1HN2 ZYX HN22 ZYX:2HN2 ZYX H6C1 ZZ1:1H6C ZZ1 H6C2 ZZ1:2H6C ZZ1 H6C3 ZZ1:3H6C ZZ1 H7C1 ZZZ:1H7C ZZZ H7C2 ZZZ:2H7C ZZZ H2N1 ZZZ:1H2N ZZZ H2N2 ZZZ:2H2N ZZZ king-2.21.120420/driftwood/resource/driftwood/version.props0000644000000000000000000000005311536414272022221 0ustar rootroot#Wed May 05 08:34:06 EDT 2004 version=0.91 king-2.21.120420/driftwood/src/0000755000000000000000000000000011744306100014377 5ustar rootrootking-2.21.120420/driftwood/src/Jama/0000755000000000000000000000000011744306100015247 5ustar rootrootking-2.21.120420/driftwood/src/Jama/util/0000755000000000000000000000000011744306100016224 5ustar rootrootking-2.21.120420/driftwood/src/Jama/util/Maths.java0000644000000000000000000000066211531212760020151 0ustar rootrootpackage Jama.util; public class Maths { /** sqrt(a^2 + b^2) without under/overflow. **/ public static double hypot(double a, double b) { double r; if (Math.abs(a) > Math.abs(b)) { r = b/a; r = Math.abs(a)*Math.sqrt(1+r*r); } else if (b != 0) { r = a/b; r = Math.abs(b)*Math.sqrt(1+r*r); } else { r = 0.0; } return r; } } king-2.21.120420/driftwood/src/Jama/QRDecomposition.java0000644000000000000000000001364611531212760021205 0ustar rootrootpackage Jama; import Jama.util.*; /** QR Decomposition.

For an m-by-n matrix A with m >= n, the QR decomposition is an m-by-n orthogonal matrix Q and an n-by-n upper triangular matrix R so that A = Q*R.

The QR decompostion always exists, even if the matrix does not have full rank, so the constructor will never fail. The primary use of the QR decomposition is in the least squares solution of nonsquare systems of simultaneous linear equations. This will fail if isFullRank() returns false. */ public class QRDecomposition implements java.io.Serializable { /* ------------------------ Class variables * ------------------------ */ /** Array for internal storage of decomposition. @serial internal array storage. */ private double[][] QR; /** Row and column dimensions. @serial column dimension. @serial row dimension. */ private int m, n; /** Array for internal storage of diagonal of R. @serial diagonal of R. */ private double[] Rdiag; /* ------------------------ Constructor * ------------------------ */ /** QR Decomposition, computed by Householder reflections. * Returns structure to access R and the Householder vectors and compute Q. @param A Rectangular matrix */ public QRDecomposition (Matrix A) { // Initialize. QR = A.getArrayCopy(); m = A.getRowDimension(); n = A.getColumnDimension(); Rdiag = new double[n]; // Main loop. for (int k = 0; k < n; k++) { // Compute 2-norm of k-th column without under/overflow. double nrm = 0; for (int i = k; i < m; i++) { nrm = Maths.hypot(nrm,QR[i][k]); } if (nrm != 0.0) { // Form k-th Householder vector. if (QR[k][k] < 0) { nrm = -nrm; } for (int i = k; i < m; i++) { QR[i][k] /= nrm; } QR[k][k] += 1.0; // Apply transformation to remaining columns. for (int j = k+1; j < n; j++) { double s = 0.0; for (int i = k; i < m; i++) { s += QR[i][k]*QR[i][j]; } s = -s/QR[k][k]; for (int i = k; i < m; i++) { QR[i][j] += s*QR[i][k]; } } } Rdiag[k] = -nrm; } } /* ------------------------ Public Methods * ------------------------ */ /** Is the matrix full rank? @return true if R, and hence A, has full rank. */ public boolean isFullRank () { for (int j = 0; j < n; j++) { if (Rdiag[j] == 0) return false; } return true; } /** Return the Householder vectors @return Lower trapezoidal matrix whose columns define the reflections */ public Matrix getH () { Matrix X = new Matrix(m,n); double[][] H = X.getArray(); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (i >= j) { H[i][j] = QR[i][j]; } else { H[i][j] = 0.0; } } } return X; } /** Return the upper triangular factor @return R */ public Matrix getR () { Matrix X = new Matrix(n,n); double[][] R = X.getArray(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i < j) { R[i][j] = QR[i][j]; } else if (i == j) { R[i][j] = Rdiag[i]; } else { R[i][j] = 0.0; } } } return X; } /** Generate and return the (economy-sized) orthogonal factor @return Q */ public Matrix getQ () { Matrix X = new Matrix(m,n); double[][] Q = X.getArray(); for (int k = n-1; k >= 0; k--) { for (int i = 0; i < m; i++) { Q[i][k] = 0.0; } Q[k][k] = 1.0; for (int j = k; j < n; j++) { if (QR[k][k] != 0) { double s = 0.0; for (int i = k; i < m; i++) { s += QR[i][k]*Q[i][j]; } s = -s/QR[k][k]; for (int i = k; i < m; i++) { Q[i][j] += s*QR[i][k]; } } } } return X; } /** Least squares solution of A*X = B @param B A Matrix with as many rows as A and any number of columns. @return X that minimizes the two norm of Q*R*X-B. @exception IllegalArgumentException Matrix row dimensions must agree. @exception RuntimeException Matrix is rank deficient. */ public Matrix solve (Matrix B) { if (B.getRowDimension() != m) { throw new IllegalArgumentException("Matrix row dimensions must agree."); } if (!this.isFullRank()) { throw new RuntimeException("Matrix is rank deficient."); } // Copy right hand side int nx = B.getColumnDimension(); double[][] X = B.getArrayCopy(); // Compute Y = transpose(Q)*B for (int k = 0; k < n; k++) { for (int j = 0; j < nx; j++) { double s = 0.0; for (int i = k; i < m; i++) { s += QR[i][k]*X[i][j]; } s = -s/QR[k][k]; for (int i = k; i < m; i++) { X[i][j] += s*QR[i][k]; } } } // Solve R*X = Y; for (int k = n-1; k >= 0; k--) { for (int j = 0; j < nx; j++) { X[k][j] /= Rdiag[k]; } for (int i = 0; i < k; i++) { for (int j = 0; j < nx; j++) { X[i][j] -= X[k][j]*QR[i][k]; } } } return (new Matrix(X,n,nx).getMatrix(0,n-1,0,nx-1)); } } king-2.21.120420/driftwood/src/Jama/LUDecomposition.java0000644000000000000000000002043411531212760021174 0ustar rootrootpackage Jama; /** LU Decomposition.

For an m-by-n matrix A with m >= n, the LU decomposition is an m-by-n unit lower triangular matrix L, an n-by-n upper triangular matrix U, and a permutation vector piv of length m so that A(piv,:) = L*U. If m < n, then L is m-by-m and U is m-by-n.

The LU decompostion with pivoting always exists, even if the matrix is singular, so the constructor will never fail. The primary use of the LU decomposition is in the solution of square systems of simultaneous linear equations. This will fail if isNonsingular() returns false. */ public class LUDecomposition implements java.io.Serializable { /* ------------------------ Class variables * ------------------------ */ /** Array for internal storage of decomposition. @serial internal array storage. */ private double[][] LU; /** Row and column dimensions, and pivot sign. @serial column dimension. @serial row dimension. @serial pivot sign. */ private int m, n, pivsign; /** Internal storage of pivot vector. @serial pivot vector. */ private int[] piv; /* ------------------------ Constructor * ------------------------ */ /** LU Decomposition; returns structure to access L, U and piv. @param A Rectangular matrix */ public LUDecomposition (Matrix A) { // Use a "left-looking", dot-product, Crout/Doolittle algorithm. LU = A.getArrayCopy(); m = A.getRowDimension(); n = A.getColumnDimension(); piv = new int[m]; for (int i = 0; i < m; i++) { piv[i] = i; } pivsign = 1; double[] LUrowi; double[] LUcolj = new double[m]; // Outer loop. for (int j = 0; j < n; j++) { // Make a copy of the j-th column to localize references. for (int i = 0; i < m; i++) { LUcolj[i] = LU[i][j]; } // Apply previous transformations. for (int i = 0; i < m; i++) { LUrowi = LU[i]; // Most of the time is spent in the following dot product. int kmax = Math.min(i,j); double s = 0.0; for (int k = 0; k < kmax; k++) { s += LUrowi[k]*LUcolj[k]; } LUrowi[j] = LUcolj[i] -= s; } // Find pivot and exchange if necessary. int p = j; for (int i = j+1; i < m; i++) { if (Math.abs(LUcolj[i]) > Math.abs(LUcolj[p])) { p = i; } } if (p != j) { for (int k = 0; k < n; k++) { double t = LU[p][k]; LU[p][k] = LU[j][k]; LU[j][k] = t; } int k = piv[p]; piv[p] = piv[j]; piv[j] = k; pivsign = -pivsign; } // Compute multipliers. if (j < m & LU[j][j] != 0.0) { for (int i = j+1; i < m; i++) { LU[i][j] /= LU[j][j]; } } } } /* ------------------------ Temporary, experimental code. ------------------------ *\ \** LU Decomposition, computed by Gaussian elimination.

This constructor computes L and U with the "daxpy"-based elimination algorithm used in LINPACK and MATLAB. In Java, we suspect the dot-product, Crout algorithm will be faster. We have temporarily included this constructor until timing experiments confirm this suspicion.

@param A Rectangular matrix @param linpackflag Use Gaussian elimination. Actual value ignored. @return Structure to access L, U and piv. *\ public LUDecomposition (Matrix A, int linpackflag) { // Initialize. LU = A.getArrayCopy(); m = A.getRowDimension(); n = A.getColumnDimension(); piv = new int[m]; for (int i = 0; i < m; i++) { piv[i] = i; } pivsign = 1; // Main loop. for (int k = 0; k < n; k++) { // Find pivot. int p = k; for (int i = k+1; i < m; i++) { if (Math.abs(LU[i][k]) > Math.abs(LU[p][k])) { p = i; } } // Exchange if necessary. if (p != k) { for (int j = 0; j < n; j++) { double t = LU[p][j]; LU[p][j] = LU[k][j]; LU[k][j] = t; } int t = piv[p]; piv[p] = piv[k]; piv[k] = t; pivsign = -pivsign; } // Compute multipliers and eliminate k-th column. if (LU[k][k] != 0.0) { for (int i = k+1; i < m; i++) { LU[i][k] /= LU[k][k]; for (int j = k+1; j < n; j++) { LU[i][j] -= LU[i][k]*LU[k][j]; } } } } } \* ------------------------ End of temporary code. * ------------------------ */ /* ------------------------ Public Methods * ------------------------ */ /** Is the matrix nonsingular? @return true if U, and hence A, is nonsingular. */ public boolean isNonsingular () { for (int j = 0; j < n; j++) { if (LU[j][j] == 0) return false; } return true; } /** Return lower triangular factor @return L */ public Matrix getL () { Matrix X = new Matrix(m,n); double[][] L = X.getArray(); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { if (i > j) { L[i][j] = LU[i][j]; } else if (i == j) { L[i][j] = 1.0; } else { L[i][j] = 0.0; } } } return X; } /** Return upper triangular factor @return U */ public Matrix getU () { Matrix X = new Matrix(n,n); double[][] U = X.getArray(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { if (i <= j) { U[i][j] = LU[i][j]; } else { U[i][j] = 0.0; } } } return X; } /** Return pivot permutation vector @return piv */ public int[] getPivot () { int[] p = new int[m]; for (int i = 0; i < m; i++) { p[i] = piv[i]; } return p; } /** Return pivot permutation vector as a one-dimensional double array @return (double) piv */ public double[] getDoublePivot () { double[] vals = new double[m]; for (int i = 0; i < m; i++) { vals[i] = (double) piv[i]; } return vals; } /** Determinant @return det(A) @exception IllegalArgumentException Matrix must be square */ public double det () { if (m != n) { throw new IllegalArgumentException("Matrix must be square."); } double d = (double) pivsign; for (int j = 0; j < n; j++) { d *= LU[j][j]; } return d; } /** Solve A*X = B @param B A Matrix with as many rows as A and any number of columns. @return X so that L*U*X = B(piv,:) @exception IllegalArgumentException Matrix row dimensions must agree. @exception RuntimeException Matrix is singular. */ public Matrix solve (Matrix B) { if (B.getRowDimension() != m) { throw new IllegalArgumentException("Matrix row dimensions must agree."); } if (!this.isNonsingular()) { throw new RuntimeException("Matrix is singular."); } // Copy right hand side with pivoting int nx = B.getColumnDimension(); Matrix Xmat = B.getMatrix(piv,0,nx-1); double[][] X = Xmat.getArray(); // Solve L*Y = B(piv,:) for (int k = 0; k < n; k++) { for (int i = k+1; i < n; i++) { for (int j = 0; j < nx; j++) { X[i][j] -= X[k][j]*LU[i][k]; } } } // Solve U*X = Y; for (int k = n-1; k >= 0; k--) { for (int j = 0; j < nx; j++) { X[k][j] /= LU[k][k]; } for (int i = 0; i < k; i++) { for (int j = 0; j < nx; j++) { X[i][j] -= X[k][j]*LU[i][k]; } } } return Xmat; } } king-2.21.120420/driftwood/src/Jama/CholeskyDecomposition.java0000644000000000000000000001330711531212760022436 0ustar rootrootpackage Jama; /** Cholesky Decomposition.

For a symmetric, positive definite matrix A, the Cholesky decomposition is an lower triangular matrix L so that A = L*L'.

If the matrix is not symmetric or positive definite, the constructor returns a partial decomposition and sets an internal flag that may be queried by the isSPD() method. */ public class CholeskyDecomposition implements java.io.Serializable { /* ------------------------ Class variables * ------------------------ */ /** Array for internal storage of decomposition. @serial internal array storage. */ private double[][] L; /** Row and column dimension (square matrix). @serial matrix dimension. */ private int n; /** Symmetric and positive definite flag. @serial is symmetric and positive definite flag. */ private boolean isspd; /* ------------------------ Constructor * ------------------------ */ /** Cholesky algorithm for symmetric and positive definite matrix. * Returns structure to access L and isspd flag. @param Arg Square, symmetric matrix. */ public CholeskyDecomposition (Matrix Arg) { // Initialize. double[][] A = Arg.getArray(); n = Arg.getRowDimension(); L = new double[n][n]; isspd = (Arg.getColumnDimension() == n); // Main loop. for (int j = 0; j < n; j++) { double[] Lrowj = L[j]; double d = 0.0; for (int k = 0; k < j; k++) { double[] Lrowk = L[k]; double s = 0.0; for (int i = 0; i < k; i++) { s += Lrowk[i]*Lrowj[i]; } Lrowj[k] = s = (A[j][k] - s)/L[k][k]; d = d + s*s; isspd = isspd & (A[k][j] == A[j][k]); } d = A[j][j] - d; isspd = isspd & (d > 0.0); L[j][j] = Math.sqrt(Math.max(d,0.0)); for (int k = j+1; k < n; k++) { L[j][k] = 0.0; } } } /* ------------------------ Temporary, experimental code. * ------------------------ *\ \** Right Triangular Cholesky Decomposition.

For a symmetric, positive definite matrix A, the Right Cholesky decomposition is an upper triangular matrix R so that A = R'*R. This constructor computes R with the Fortran inspired column oriented algorithm used in LINPACK and MATLAB. In Java, we suspect a row oriented, lower triangular decomposition is faster. We have temporarily included this constructor here until timing experiments confirm this suspicion. *\ \** Array for internal storage of right triangular decomposition. **\ private transient double[][] R; \** Cholesky algorithm for symmetric and positive definite matrix. @param A Square, symmetric matrix. @param rightflag Actual value ignored. @return Structure to access R and isspd flag. *\ public CholeskyDecomposition (Matrix Arg, int rightflag) { // Initialize. double[][] A = Arg.getArray(); n = Arg.getColumnDimension(); R = new double[n][n]; isspd = (Arg.getColumnDimension() == n); // Main loop. for (int j = 0; j < n; j++) { double d = 0.0; for (int k = 0; k < j; k++) { double s = A[k][j]; for (int i = 0; i < k; i++) { s = s - R[i][k]*R[i][j]; } R[k][j] = s = s/R[k][k]; d = d + s*s; isspd = isspd & (A[k][j] == A[j][k]); } d = A[j][j] - d; isspd = isspd & (d > 0.0); R[j][j] = Math.sqrt(Math.max(d,0.0)); for (int k = j+1; k < n; k++) { R[k][j] = 0.0; } } } \** Return upper triangular factor. @return R *\ public Matrix getR () { return new Matrix(R,n,n); } \* ------------------------ End of temporary code. * ------------------------ */ /* ------------------------ Public Methods * ------------------------ */ /** Is the matrix symmetric and positive definite? @return true if A is symmetric and positive definite. */ public boolean isSPD () { return isspd; } /** Return triangular factor. @return L */ public Matrix getL () { return new Matrix(L,n,n); } /** Solve A*X = B @param B A Matrix with as many rows as A and any number of columns. @return X so that L*L'*X = B @exception IllegalArgumentException Matrix row dimensions must agree. @exception RuntimeException Matrix is not symmetric positive definite. */ public Matrix solve (Matrix B) { if (B.getRowDimension() != n) { throw new IllegalArgumentException("Matrix row dimensions must agree."); } if (!isspd) { throw new RuntimeException("Matrix is not symmetric positive definite."); } // Copy right hand side. double[][] X = B.getArrayCopy(); int nx = B.getColumnDimension(); // Solve L*Y = B; for (int k = 0; k < n; k++) { for (int i = k+1; i < n; i++) { for (int j = 0; j < nx; j++) { X[i][j] -= X[k][j]*L[i][k]; } } for (int j = 0; j < nx; j++) { X[k][j] /= L[k][k]; } } // Solve L'*X = Y; for (int k = n-1; k >= 0; k--) { for (int j = 0; j < nx; j++) { X[k][j] /= L[k][k]; } for (int i = 0; i < k; i++) { for (int j = 0; j < nx; j++) { X[i][j] -= X[k][j]*L[k][i]; } } } return new Matrix(X,n,nx); } } king-2.21.120420/driftwood/src/Jama/EigenvalueDecomposition.java0000644000000000000000000006617111531212760022750 0ustar rootrootpackage Jama; import Jama.util.*; /** Eigenvalues and eigenvectors of a real matrix.

If A is symmetric, then A = V*D*V' where the eigenvalue matrix D is diagonal and the eigenvector matrix V is orthogonal. I.e. A = V.times(D.times(V.transpose())) and V.times(V.transpose()) equals the identity matrix.

If A is not symmetric, then the eigenvalue matrix D is block diagonal with the real eigenvalues in 1-by-1 blocks and any complex eigenvalues, lambda + i*mu, in 2-by-2 blocks, [lambda, mu; -mu, lambda]. The columns of V represent the eigenvectors in the sense that A*V = V*D, i.e. A.times(V) equals V.times(D). The matrix V may be badly conditioned, or even singular, so the validity of the equation A = V*D*inverse(V) depends upon V.cond(). **/ public class EigenvalueDecomposition implements java.io.Serializable { /* ------------------------ Class variables * ------------------------ */ /** Row and column dimension (square matrix). @serial matrix dimension. */ private int n; /** Symmetry flag. @serial internal symmetry flag. */ private boolean issymmetric; /** Arrays for internal storage of eigenvalues. @serial internal storage of eigenvalues. */ private double[] d, e; /** Array for internal storage of eigenvectors. @serial internal storage of eigenvectors. */ private double[][] V; /** Array for internal storage of nonsymmetric Hessenberg form. @serial internal storage of nonsymmetric Hessenberg form. */ private double[][] H; /** Working storage for nonsymmetric algorithm. @serial working storage for nonsymmetric algorithm. */ private double[] ort; /* ------------------------ Private Methods * ------------------------ */ // Symmetric Householder reduction to tridiagonal form. private void tred2 () { // This is derived from the Algol procedures tred2 by // Bowdler, Martin, Reinsch, and Wilkinson, Handbook for // Auto. Comp., Vol.ii-Linear Algebra, and the corresponding // Fortran subroutine in EISPACK. for (int j = 0; j < n; j++) { d[j] = V[n-1][j]; } // Householder reduction to tridiagonal form. for (int i = n-1; i > 0; i--) { // Scale to avoid under/overflow. double scale = 0.0; double h = 0.0; for (int k = 0; k < i; k++) { scale = scale + Math.abs(d[k]); } if (scale == 0.0) { e[i] = d[i-1]; for (int j = 0; j < i; j++) { d[j] = V[i-1][j]; V[i][j] = 0.0; V[j][i] = 0.0; } } else { // Generate Householder vector. for (int k = 0; k < i; k++) { d[k] /= scale; h += d[k] * d[k]; } double f = d[i-1]; double g = Math.sqrt(h); if (f > 0) { g = -g; } e[i] = scale * g; h = h - f * g; d[i-1] = f - g; for (int j = 0; j < i; j++) { e[j] = 0.0; } // Apply similarity transformation to remaining columns. for (int j = 0; j < i; j++) { f = d[j]; V[j][i] = f; g = e[j] + V[j][j] * f; for (int k = j+1; k <= i-1; k++) { g += V[k][j] * d[k]; e[k] += V[k][j] * f; } e[j] = g; } f = 0.0; for (int j = 0; j < i; j++) { e[j] /= h; f += e[j] * d[j]; } double hh = f / (h + h); for (int j = 0; j < i; j++) { e[j] -= hh * d[j]; } for (int j = 0; j < i; j++) { f = d[j]; g = e[j]; for (int k = j; k <= i-1; k++) { V[k][j] -= (f * e[k] + g * d[k]); } d[j] = V[i-1][j]; V[i][j] = 0.0; } } d[i] = h; } // Accumulate transformations. for (int i = 0; i < n-1; i++) { V[n-1][i] = V[i][i]; V[i][i] = 1.0; double h = d[i+1]; if (h != 0.0) { for (int k = 0; k <= i; k++) { d[k] = V[k][i+1] / h; } for (int j = 0; j <= i; j++) { double g = 0.0; for (int k = 0; k <= i; k++) { g += V[k][i+1] * V[k][j]; } for (int k = 0; k <= i; k++) { V[k][j] -= g * d[k]; } } } for (int k = 0; k <= i; k++) { V[k][i+1] = 0.0; } } for (int j = 0; j < n; j++) { d[j] = V[n-1][j]; V[n-1][j] = 0.0; } V[n-1][n-1] = 1.0; e[0] = 0.0; } // Symmetric tridiagonal QL algorithm. private void tql2 () { // This is derived from the Algol procedures tql2, by // Bowdler, Martin, Reinsch, and Wilkinson, Handbook for // Auto. Comp., Vol.ii-Linear Algebra, and the corresponding // Fortran subroutine in EISPACK. for (int i = 1; i < n; i++) { e[i-1] = e[i]; } e[n-1] = 0.0; double f = 0.0; double tst1 = 0.0; double eps = Math.pow(2.0,-52.0); for (int l = 0; l < n; l++) { // Find small subdiagonal element tst1 = Math.max(tst1,Math.abs(d[l]) + Math.abs(e[l])); int m = l; while (m < n) { if (Math.abs(e[m]) <= eps*tst1) { break; } m++; } // If m == l, d[l] is an eigenvalue, // otherwise, iterate. if (m > l) { int iter = 0; do { iter = iter + 1; // (Could check iteration count here.) // Compute implicit shift double g = d[l]; double p = (d[l+1] - g) / (2.0 * e[l]); double r = Maths.hypot(p,1.0); if (p < 0) { r = -r; } d[l] = e[l] / (p + r); d[l+1] = e[l] * (p + r); double dl1 = d[l+1]; double h = g - d[l]; for (int i = l+2; i < n; i++) { d[i] -= h; } f = f + h; // Implicit QL transformation. p = d[m]; double c = 1.0; double c2 = c; double c3 = c; double el1 = e[l+1]; double s = 0.0; double s2 = 0.0; for (int i = m-1; i >= l; i--) { c3 = c2; c2 = c; s2 = s; g = c * e[i]; h = c * p; r = Maths.hypot(p,e[i]); e[i+1] = s * r; s = e[i] / r; c = p / r; p = c * d[i] - s * g; d[i+1] = h + s * (c * g + s * d[i]); // Accumulate transformation. for (int k = 0; k < n; k++) { h = V[k][i+1]; V[k][i+1] = s * V[k][i] + c * h; V[k][i] = c * V[k][i] - s * h; } } p = -s * s2 * c3 * el1 * e[l] / dl1; e[l] = s * p; d[l] = c * p; // Check for convergence. } while (Math.abs(e[l]) > eps*tst1); } d[l] = d[l] + f; e[l] = 0.0; } // Sort eigenvalues and corresponding vectors. for (int i = 0; i < n-1; i++) { int k = i; double p = d[i]; for (int j = i+1; j < n; j++) { if (d[j] < p) { k = j; p = d[j]; } } if (k != i) { d[k] = d[i]; d[i] = p; for (int j = 0; j < n; j++) { p = V[j][i]; V[j][i] = V[j][k]; V[j][k] = p; } } } } // Nonsymmetric reduction to Hessenberg form. private void orthes () { // This is derived from the Algol procedures orthes and ortran, // by Martin and Wilkinson, Handbook for Auto. Comp., // Vol.ii-Linear Algebra, and the corresponding // Fortran subroutines in EISPACK. int low = 0; int high = n-1; for (int m = low+1; m <= high-1; m++) { // Scale column. double scale = 0.0; for (int i = m; i <= high; i++) { scale = scale + Math.abs(H[i][m-1]); } if (scale != 0.0) { // Compute Householder transformation. double h = 0.0; for (int i = high; i >= m; i--) { ort[i] = H[i][m-1]/scale; h += ort[i] * ort[i]; } double g = Math.sqrt(h); if (ort[m] > 0) { g = -g; } h = h - ort[m] * g; ort[m] = ort[m] - g; // Apply Householder similarity transformation // H = (I-u*u'/h)*H*(I-u*u')/h) for (int j = m; j < n; j++) { double f = 0.0; for (int i = high; i >= m; i--) { f += ort[i]*H[i][j]; } f = f/h; for (int i = m; i <= high; i++) { H[i][j] -= f*ort[i]; } } for (int i = 0; i <= high; i++) { double f = 0.0; for (int j = high; j >= m; j--) { f += ort[j]*H[i][j]; } f = f/h; for (int j = m; j <= high; j++) { H[i][j] -= f*ort[j]; } } ort[m] = scale*ort[m]; H[m][m-1] = scale*g; } } // Accumulate transformations (Algol's ortran). for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { V[i][j] = (i == j ? 1.0 : 0.0); } } for (int m = high-1; m >= low+1; m--) { if (H[m][m-1] != 0.0) { for (int i = m+1; i <= high; i++) { ort[i] = H[i][m-1]; } for (int j = m; j <= high; j++) { double g = 0.0; for (int i = m; i <= high; i++) { g += ort[i] * V[i][j]; } // Double division avoids possible underflow g = (g / ort[m]) / H[m][m-1]; for (int i = m; i <= high; i++) { V[i][j] += g * ort[i]; } } } } } // Complex scalar division. private transient double cdivr, cdivi; private void cdiv(double xr, double xi, double yr, double yi) { double r,d; if (Math.abs(yr) > Math.abs(yi)) { r = yi/yr; d = yr + r*yi; cdivr = (xr + r*xi)/d; cdivi = (xi - r*xr)/d; } else { r = yr/yi; d = yi + r*yr; cdivr = (r*xr + xi)/d; cdivi = (r*xi - xr)/d; } } // Nonsymmetric reduction from Hessenberg to real Schur form. private void hqr2 () { // This is derived from the Algol procedure hqr2, // by Martin and Wilkinson, Handbook for Auto. Comp., // Vol.ii-Linear Algebra, and the corresponding // Fortran subroutine in EISPACK. // Initialize int nn = this.n; int n = nn-1; int low = 0; int high = nn-1; double eps = Math.pow(2.0,-52.0); double exshift = 0.0; double p=0,q=0,r=0,s=0,z=0,t,w,x,y; // Store roots isolated by balanc and compute matrix norm double norm = 0.0; for (int i = 0; i < nn; i++) { if (i < low | i > high) { d[i] = H[i][i]; e[i] = 0.0; } for (int j = Math.max(i-1,0); j < nn; j++) { norm = norm + Math.abs(H[i][j]); } } // Outer loop over eigenvalue index int iter = 0; while (n >= low) { // Look for single small sub-diagonal element int l = n; while (l > low) { s = Math.abs(H[l-1][l-1]) + Math.abs(H[l][l]); if (s == 0.0) { s = norm; } if (Math.abs(H[l][l-1]) < eps * s) { break; } l--; } // Check for convergence // One root found if (l == n) { H[n][n] = H[n][n] + exshift; d[n] = H[n][n]; e[n] = 0.0; n--; iter = 0; // Two roots found } else if (l == n-1) { w = H[n][n-1] * H[n-1][n]; p = (H[n-1][n-1] - H[n][n]) / 2.0; q = p * p + w; z = Math.sqrt(Math.abs(q)); H[n][n] = H[n][n] + exshift; H[n-1][n-1] = H[n-1][n-1] + exshift; x = H[n][n]; // Real pair if (q >= 0) { if (p >= 0) { z = p + z; } else { z = p - z; } d[n-1] = x + z; d[n] = d[n-1]; if (z != 0.0) { d[n] = x - w / z; } e[n-1] = 0.0; e[n] = 0.0; x = H[n][n-1]; s = Math.abs(x) + Math.abs(z); p = x / s; q = z / s; r = Math.sqrt(p * p+q * q); p = p / r; q = q / r; // Row modification for (int j = n-1; j < nn; j++) { z = H[n-1][j]; H[n-1][j] = q * z + p * H[n][j]; H[n][j] = q * H[n][j] - p * z; } // Column modification for (int i = 0; i <= n; i++) { z = H[i][n-1]; H[i][n-1] = q * z + p * H[i][n]; H[i][n] = q * H[i][n] - p * z; } // Accumulate transformations for (int i = low; i <= high; i++) { z = V[i][n-1]; V[i][n-1] = q * z + p * V[i][n]; V[i][n] = q * V[i][n] - p * z; } // Complex pair } else { d[n-1] = x + p; d[n] = x + p; e[n-1] = z; e[n] = -z; } n = n - 2; iter = 0; // No convergence yet } else { // Form shift x = H[n][n]; y = 0.0; w = 0.0; if (l < n) { y = H[n-1][n-1]; w = H[n][n-1] * H[n-1][n]; } // Wilkinson's original ad hoc shift if (iter == 10) { exshift += x; for (int i = low; i <= n; i++) { H[i][i] -= x; } s = Math.abs(H[n][n-1]) + Math.abs(H[n-1][n-2]); x = y = 0.75 * s; w = -0.4375 * s * s; } // MATLAB's new ad hoc shift if (iter == 30) { s = (y - x) / 2.0; s = s * s + w; if (s > 0) { s = Math.sqrt(s); if (y < x) { s = -s; } s = x - w / ((y - x) / 2.0 + s); for (int i = low; i <= n; i++) { H[i][i] -= s; } exshift += s; x = y = w = 0.964; } } iter = iter + 1; // (Could check iteration count here.) // Look for two consecutive small sub-diagonal elements int m = n-2; while (m >= l) { z = H[m][m]; r = x - z; s = y - z; p = (r * s - w) / H[m+1][m] + H[m][m+1]; q = H[m+1][m+1] - z - r - s; r = H[m+2][m+1]; s = Math.abs(p) + Math.abs(q) + Math.abs(r); p = p / s; q = q / s; r = r / s; if (m == l) { break; } if (Math.abs(H[m][m-1]) * (Math.abs(q) + Math.abs(r)) < eps * (Math.abs(p) * (Math.abs(H[m-1][m-1]) + Math.abs(z) + Math.abs(H[m+1][m+1])))) { break; } m--; } for (int i = m+2; i <= n; i++) { H[i][i-2] = 0.0; if (i > m+2) { H[i][i-3] = 0.0; } } // Double QR step involving rows l:n and columns m:n for (int k = m; k <= n-1; k++) { boolean notlast = (k != n-1); if (k != m) { p = H[k][k-1]; q = H[k+1][k-1]; r = (notlast ? H[k+2][k-1] : 0.0); x = Math.abs(p) + Math.abs(q) + Math.abs(r); if (x != 0.0) { p = p / x; q = q / x; r = r / x; } } if (x == 0.0) { break; } s = Math.sqrt(p * p + q * q + r * r); if (p < 0) { s = -s; } if (s != 0) { if (k != m) { H[k][k-1] = -s * x; } else if (l != m) { H[k][k-1] = -H[k][k-1]; } p = p + s; x = p / s; y = q / s; z = r / s; q = q / p; r = r / p; // Row modification for (int j = k; j < nn; j++) { p = H[k][j] + q * H[k+1][j]; if (notlast) { p = p + r * H[k+2][j]; H[k+2][j] = H[k+2][j] - p * z; } H[k][j] = H[k][j] - p * x; H[k+1][j] = H[k+1][j] - p * y; } // Column modification for (int i = 0; i <= Math.min(n,k+3); i++) { p = x * H[i][k] + y * H[i][k+1]; if (notlast) { p = p + z * H[i][k+2]; H[i][k+2] = H[i][k+2] - p * r; } H[i][k] = H[i][k] - p; H[i][k+1] = H[i][k+1] - p * q; } // Accumulate transformations for (int i = low; i <= high; i++) { p = x * V[i][k] + y * V[i][k+1]; if (notlast) { p = p + z * V[i][k+2]; V[i][k+2] = V[i][k+2] - p * r; } V[i][k] = V[i][k] - p; V[i][k+1] = V[i][k+1] - p * q; } } // (s != 0) } // k loop } // check convergence } // while (n >= low) // Backsubstitute to find vectors of upper triangular form if (norm == 0.0) { return; } for (n = nn-1; n >= 0; n--) { p = d[n]; q = e[n]; // Real vector if (q == 0) { int l = n; H[n][n] = 1.0; for (int i = n-1; i >= 0; i--) { w = H[i][i] - p; r = 0.0; for (int j = l; j <= n; j++) { r = r + H[i][j] * H[j][n]; } if (e[i] < 0.0) { z = w; s = r; } else { l = i; if (e[i] == 0.0) { if (w != 0.0) { H[i][n] = -r / w; } else { H[i][n] = -r / (eps * norm); } // Solve real equations } else { x = H[i][i+1]; y = H[i+1][i]; q = (d[i] - p) * (d[i] - p) + e[i] * e[i]; t = (x * s - z * r) / q; H[i][n] = t; if (Math.abs(x) > Math.abs(z)) { H[i+1][n] = (-r - w * t) / x; } else { H[i+1][n] = (-s - y * t) / z; } } // Overflow control t = Math.abs(H[i][n]); if ((eps * t) * t > 1) { for (int j = i; j <= n; j++) { H[j][n] = H[j][n] / t; } } } } // Complex vector } else if (q < 0) { int l = n-1; // Last vector component imaginary so matrix is triangular if (Math.abs(H[n][n-1]) > Math.abs(H[n-1][n])) { H[n-1][n-1] = q / H[n][n-1]; H[n-1][n] = -(H[n][n] - p) / H[n][n-1]; } else { cdiv(0.0,-H[n-1][n],H[n-1][n-1]-p,q); H[n-1][n-1] = cdivr; H[n-1][n] = cdivi; } H[n][n-1] = 0.0; H[n][n] = 1.0; for (int i = n-2; i >= 0; i--) { double ra,sa,vr,vi; ra = 0.0; sa = 0.0; for (int j = l; j <= n; j++) { ra = ra + H[i][j] * H[j][n-1]; sa = sa + H[i][j] * H[j][n]; } w = H[i][i] - p; if (e[i] < 0.0) { z = w; r = ra; s = sa; } else { l = i; if (e[i] == 0) { cdiv(-ra,-sa,w,q); H[i][n-1] = cdivr; H[i][n] = cdivi; } else { // Solve complex equations x = H[i][i+1]; y = H[i+1][i]; vr = (d[i] - p) * (d[i] - p) + e[i] * e[i] - q * q; vi = (d[i] - p) * 2.0 * q; if (vr == 0.0 & vi == 0.0) { vr = eps * norm * (Math.abs(w) + Math.abs(q) + Math.abs(x) + Math.abs(y) + Math.abs(z)); } cdiv(x*r-z*ra+q*sa,x*s-z*sa-q*ra,vr,vi); H[i][n-1] = cdivr; H[i][n] = cdivi; if (Math.abs(x) > (Math.abs(z) + Math.abs(q))) { H[i+1][n-1] = (-ra - w * H[i][n-1] + q * H[i][n]) / x; H[i+1][n] = (-sa - w * H[i][n] - q * H[i][n-1]) / x; } else { cdiv(-r-y*H[i][n-1],-s-y*H[i][n],z,q); H[i+1][n-1] = cdivr; H[i+1][n] = cdivi; } } // Overflow control t = Math.max(Math.abs(H[i][n-1]),Math.abs(H[i][n])); if ((eps * t) * t > 1) { for (int j = i; j <= n; j++) { H[j][n-1] = H[j][n-1] / t; H[j][n] = H[j][n] / t; } } } } } } // Vectors of isolated roots for (int i = 0; i < nn; i++) { if (i < low | i > high) { for (int j = i; j < nn; j++) { V[i][j] = H[i][j]; } } } // Back transformation to get eigenvectors of original matrix for (int j = nn-1; j >= low; j--) { for (int i = low; i <= high; i++) { z = 0.0; for (int k = low; k <= Math.min(j,high); k++) { z = z + V[i][k] * H[k][j]; } V[i][j] = z; } } } /* ------------------------ Constructor * ------------------------ */ /** Check for symmetry, then construct the eigenvalue decomposition. * Returns structure to access D and V. @param Arg Square matrix */ public EigenvalueDecomposition (Matrix Arg) { double[][] A = Arg.getArray(); n = Arg.getColumnDimension(); V = new double[n][n]; d = new double[n]; e = new double[n]; issymmetric = true; for (int j = 0; (j < n) & issymmetric; j++) { for (int i = 0; (i < n) & issymmetric; i++) { issymmetric = (A[i][j] == A[j][i]); } } if (issymmetric) { for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { V[i][j] = A[i][j]; } } // Tridiagonalize. tred2(); // Diagonalize. tql2(); } else { H = new double[n][n]; ort = new double[n]; for (int j = 0; j < n; j++) { for (int i = 0; i < n; i++) { H[i][j] = A[i][j]; } } // Reduce to Hessenberg form. orthes(); // Reduce Hessenberg to real Schur form. hqr2(); } } /* ------------------------ Public Methods * ------------------------ */ /** Return the eigenvector matrix @return V */ public Matrix getV () { return new Matrix(V,n,n); } /** Return the real parts of the eigenvalues @return real(diag(D)) */ public double[] getRealEigenvalues () { return d; } /** Return the imaginary parts of the eigenvalues @return imag(diag(D)) */ public double[] getImagEigenvalues () { return e; } /** Return the block diagonal eigenvalue matrix @return D */ public Matrix getD () { Matrix X = new Matrix(n,n); double[][] D = X.getArray(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { D[i][j] = 0.0; } D[i][i] = d[i]; if (e[i] > 0) { D[i][i+1] = e[i]; } else if (e[i] < 0) { D[i][i-1] = e[i]; } } return X; } } king-2.21.120420/driftwood/src/Jama/Matrix.java0000644000000000000000000007222011531212760017363 0ustar rootrootpackage Jama; import java.text.NumberFormat; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.util.Locale; import java.text.FieldPosition; import java.io.PrintWriter; import java.io.BufferedReader; import java.io.StreamTokenizer; import Jama.util.*; /** Jama = Java Matrix class.

The Java Matrix Class provides the fundamental operations of numerical linear algebra. Various constructors create Matrices from two dimensional arrays of double precision floating point numbers. Various "gets" and "sets" provide access to submatrices and matrix elements. Several methods implement basic matrix arithmetic, including matrix addition and multiplication, matrix norms, and element-by-element array operations. Methods for reading and printing matrices are also included. All the operations in this version of the Matrix Class involve real matrices. Complex matrices may be handled in a future version.

Five fundamental matrix decompositions, which consist of pairs or triples of matrices, permutation vectors, and the like, produce results in five decomposition classes. These decompositions are accessed by the Matrix class to compute solutions of simultaneous linear equations, determinants, inverses and other matrix functions. The five decompositions are:

  • Cholesky Decomposition of symmetric, positive definite matrices.
  • LU Decomposition of rectangular matrices.
  • QR Decomposition of rectangular matrices.
  • Singular Value Decomposition of rectangular matrices.
  • Eigenvalue Decomposition of both symmetric and nonsymmetric square matrices.
Example of use:

Solve a linear system A x = b and compute the residual norm, ||b - A x||.

      double[][] vals = {{1.,2.,3},{4.,5.,6.},{7.,8.,10.}};
      Matrix A = new Matrix(vals);
      Matrix b = Matrix.random(3,1);
      Matrix x = A.solve(b);
      Matrix r = A.times(x).minus(b);
      double rnorm = r.normInf();
@author The MathWorks, Inc. and the National Institute of Standards and Technology. @version 5 August 1998 */ public class Matrix implements Cloneable, java.io.Serializable { /* ------------------------ Class variables * ------------------------ */ /** Array for internal storage of elements. @serial internal array storage. */ private double[][] A; /** Row and column dimensions. @serial row dimension. @serial column dimension. */ private int m, n; /* ------------------------ Constructors * ------------------------ */ /** Construct an m-by-n matrix of zeros. @param m Number of rows. @param n Number of colums. */ public Matrix (int m, int n) { this.m = m; this.n = n; A = new double[m][n]; } /** Construct an m-by-n constant matrix. @param m Number of rows. @param n Number of colums. @param s Fill the matrix with this scalar value. */ public Matrix (int m, int n, double s) { this.m = m; this.n = n; A = new double[m][n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { A[i][j] = s; } } } /** Construct a matrix from a 2-D array. @param A Two-dimensional array of doubles. @exception IllegalArgumentException All rows must have the same length @see #constructWithCopy */ public Matrix (double[][] A) { m = A.length; n = A[0].length; for (int i = 0; i < m; i++) { if (A[i].length != n) { throw new IllegalArgumentException("All rows must have the same length."); } } this.A = A; } /** Construct a matrix quickly without checking arguments. @param A Two-dimensional array of doubles. @param m Number of rows. @param n Number of colums. */ public Matrix (double[][] A, int m, int n) { this.A = A; this.m = m; this.n = n; } /** Construct a matrix from a one-dimensional packed array @param vals One-dimensional array of doubles, packed by columns (ala Fortran). @param m Number of rows. @exception IllegalArgumentException Array length must be a multiple of m. */ public Matrix (double vals[], int m) { this.m = m; n = (m != 0 ? vals.length/m : 0); if (m*n != vals.length) { throw new IllegalArgumentException("Array length must be a multiple of m."); } A = new double[m][n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { A[i][j] = vals[i+j*m]; } } } /* ------------------------ Public Methods * ------------------------ */ /** Construct a matrix from a copy of a 2-D array. @param A Two-dimensional array of doubles. @exception IllegalArgumentException All rows must have the same length */ public static Matrix constructWithCopy(double[][] A) { int m = A.length; int n = A[0].length; Matrix X = new Matrix(m,n); double[][] C = X.getArray(); for (int i = 0; i < m; i++) { if (A[i].length != n) { throw new IllegalArgumentException ("All rows must have the same length."); } for (int j = 0; j < n; j++) { C[i][j] = A[i][j]; } } return X; } /** Make a deep copy of a matrix */ public Matrix copy () { Matrix X = new Matrix(m,n); double[][] C = X.getArray(); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { C[i][j] = A[i][j]; } } return X; } /** Clone the Matrix object. */ public Object clone () { return this.copy(); } /** Access the internal two-dimensional array. @return Pointer to the two-dimensional array of matrix elements. */ public double[][] getArray () { return A; } /** Copy the internal two-dimensional array. @return Two-dimensional array copy of matrix elements. */ public double[][] getArrayCopy () { double[][] C = new double[m][n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { C[i][j] = A[i][j]; } } return C; } /** Make a one-dimensional column packed copy of the internal array. @return Matrix elements packed in a one-dimensional array by columns. */ public double[] getColumnPackedCopy () { double[] vals = new double[m*n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { vals[i+j*m] = A[i][j]; } } return vals; } /** Make a one-dimensional row packed copy of the internal array. @return Matrix elements packed in a one-dimensional array by rows. */ public double[] getRowPackedCopy () { double[] vals = new double[m*n]; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { vals[i*n+j] = A[i][j]; } } return vals; } /** Get row dimension. @return m, the number of rows. */ public int getRowDimension () { return m; } /** Get column dimension. @return n, the number of columns. */ public int getColumnDimension () { return n; } /** Get a single element. @param i Row index. @param j Column index. @return A(i,j) @exception ArrayIndexOutOfBoundsException */ public double get (int i, int j) { return A[i][j]; } /** Get a submatrix. @param i0 Initial row index @param i1 Final row index @param j0 Initial column index @param j1 Final column index @return A(i0:i1,j0:j1) @exception ArrayIndexOutOfBoundsException Submatrix indices */ public Matrix getMatrix (int i0, int i1, int j0, int j1) { Matrix X = new Matrix(i1-i0+1,j1-j0+1); double[][] B = X.getArray(); try { for (int i = i0; i <= i1; i++) { for (int j = j0; j <= j1; j++) { B[i-i0][j-j0] = A[i][j]; } } } catch(ArrayIndexOutOfBoundsException e) { throw new ArrayIndexOutOfBoundsException("Submatrix indices"); } return X; } /** Get a submatrix. @param r Array of row indices. @param c Array of column indices. @return A(r(:),c(:)) @exception ArrayIndexOutOfBoundsException Submatrix indices */ public Matrix getMatrix (int[] r, int[] c) { Matrix X = new Matrix(r.length,c.length); double[][] B = X.getArray(); try { for (int i = 0; i < r.length; i++) { for (int j = 0; j < c.length; j++) { B[i][j] = A[r[i]][c[j]]; } } } catch(ArrayIndexOutOfBoundsException e) { throw new ArrayIndexOutOfBoundsException("Submatrix indices"); } return X; } /** Get a submatrix. @param i0 Initial row index @param i1 Final row index @param c Array of column indices. @return A(i0:i1,c(:)) @exception ArrayIndexOutOfBoundsException Submatrix indices */ public Matrix getMatrix (int i0, int i1, int[] c) { Matrix X = new Matrix(i1-i0+1,c.length); double[][] B = X.getArray(); try { for (int i = i0; i <= i1; i++) { for (int j = 0; j < c.length; j++) { B[i-i0][j] = A[i][c[j]]; } } } catch(ArrayIndexOutOfBoundsException e) { throw new ArrayIndexOutOfBoundsException("Submatrix indices"); } return X; } /** Get a submatrix. @param r Array of row indices. @param j0 Initial column index @param j1 Final column index @return A(r(:),j0:j1) @exception ArrayIndexOutOfBoundsException Submatrix indices */ public Matrix getMatrix (int[] r, int j0, int j1) { Matrix X = new Matrix(r.length,j1-j0+1); double[][] B = X.getArray(); try { for (int i = 0; i < r.length; i++) { for (int j = j0; j <= j1; j++) { B[i][j-j0] = A[r[i]][j]; } } } catch(ArrayIndexOutOfBoundsException e) { throw new ArrayIndexOutOfBoundsException("Submatrix indices"); } return X; } /** Set a single element. @param i Row index. @param j Column index. @param s A(i,j). @exception ArrayIndexOutOfBoundsException */ public void set (int i, int j, double s) { A[i][j] = s; } /** Set a submatrix. @param i0 Initial row index @param i1 Final row index @param j0 Initial column index @param j1 Final column index @param X A(i0:i1,j0:j1) @exception ArrayIndexOutOfBoundsException Submatrix indices */ public void setMatrix (int i0, int i1, int j0, int j1, Matrix X) { try { for (int i = i0; i <= i1; i++) { for (int j = j0; j <= j1; j++) { A[i][j] = X.get(i-i0,j-j0); } } } catch(ArrayIndexOutOfBoundsException e) { throw new ArrayIndexOutOfBoundsException("Submatrix indices"); } } /** Set a submatrix. @param r Array of row indices. @param c Array of column indices. @param X A(r(:),c(:)) @exception ArrayIndexOutOfBoundsException Submatrix indices */ public void setMatrix (int[] r, int[] c, Matrix X) { try { for (int i = 0; i < r.length; i++) { for (int j = 0; j < c.length; j++) { A[r[i]][c[j]] = X.get(i,j); } } } catch(ArrayIndexOutOfBoundsException e) { throw new ArrayIndexOutOfBoundsException("Submatrix indices"); } } /** Set a submatrix. @param r Array of row indices. @param j0 Initial column index @param j1 Final column index @param X A(r(:),j0:j1) @exception ArrayIndexOutOfBoundsException Submatrix indices */ public void setMatrix (int[] r, int j0, int j1, Matrix X) { try { for (int i = 0; i < r.length; i++) { for (int j = j0; j <= j1; j++) { A[r[i]][j] = X.get(i,j-j0); } } } catch(ArrayIndexOutOfBoundsException e) { throw new ArrayIndexOutOfBoundsException("Submatrix indices"); } } /** Set a submatrix. @param i0 Initial row index @param i1 Final row index @param c Array of column indices. @param X A(i0:i1,c(:)) @exception ArrayIndexOutOfBoundsException Submatrix indices */ public void setMatrix (int i0, int i1, int[] c, Matrix X) { try { for (int i = i0; i <= i1; i++) { for (int j = 0; j < c.length; j++) { A[i][c[j]] = X.get(i-i0,j); } } } catch(ArrayIndexOutOfBoundsException e) { throw new ArrayIndexOutOfBoundsException("Submatrix indices"); } } /** Matrix transpose. @return A' */ public Matrix transpose () { Matrix X = new Matrix(n,m); double[][] C = X.getArray(); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { C[j][i] = A[i][j]; } } return X; } /** One norm @return maximum column sum. */ public double norm1 () { double f = 0; for (int j = 0; j < n; j++) { double s = 0; for (int i = 0; i < m; i++) { s += Math.abs(A[i][j]); } f = Math.max(f,s); } return f; } /** Two norm @return maximum singular value. */ public double norm2 () { return (new SingularValueDecomposition(this).norm2()); } /** Infinity norm @return maximum row sum. */ public double normInf () { double f = 0; for (int i = 0; i < m; i++) { double s = 0; for (int j = 0; j < n; j++) { s += Math.abs(A[i][j]); } f = Math.max(f,s); } return f; } /** Frobenius norm @return sqrt of sum of squares of all elements. */ public double normF () { double f = 0; for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { f = Maths.hypot(f,A[i][j]); } } return f; } /** Unary minus @return -A */ public Matrix uminus () { Matrix X = new Matrix(m,n); double[][] C = X.getArray(); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { C[i][j] = -A[i][j]; } } return X; } /** C = A + B @param B another matrix @return A + B */ public Matrix plus (Matrix B) { checkMatrixDimensions(B); Matrix X = new Matrix(m,n); double[][] C = X.getArray(); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { C[i][j] = A[i][j] + B.A[i][j]; } } return X; } /** A = A + B @param B another matrix @return A + B */ public Matrix plusEquals (Matrix B) { checkMatrixDimensions(B); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { A[i][j] = A[i][j] + B.A[i][j]; } } return this; } /** C = A - B @param B another matrix @return A - B */ public Matrix minus (Matrix B) { checkMatrixDimensions(B); Matrix X = new Matrix(m,n); double[][] C = X.getArray(); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { C[i][j] = A[i][j] - B.A[i][j]; } } return X; } /** A = A - B @param B another matrix @return A - B */ public Matrix minusEquals (Matrix B) { checkMatrixDimensions(B); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { A[i][j] = A[i][j] - B.A[i][j]; } } return this; } /** Element-by-element multiplication, C = A.*B @param B another matrix @return A.*B */ public Matrix arrayTimes (Matrix B) { checkMatrixDimensions(B); Matrix X = new Matrix(m,n); double[][] C = X.getArray(); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { C[i][j] = A[i][j] * B.A[i][j]; } } return X; } /** Element-by-element multiplication in place, A = A.*B @param B another matrix @return A.*B */ public Matrix arrayTimesEquals (Matrix B) { checkMatrixDimensions(B); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { A[i][j] = A[i][j] * B.A[i][j]; } } return this; } /** Element-by-element right division, C = A./B @param B another matrix @return A./B */ public Matrix arrayRightDivide (Matrix B) { checkMatrixDimensions(B); Matrix X = new Matrix(m,n); double[][] C = X.getArray(); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { C[i][j] = A[i][j] / B.A[i][j]; } } return X; } /** Element-by-element right division in place, A = A./B @param B another matrix @return A./B */ public Matrix arrayRightDivideEquals (Matrix B) { checkMatrixDimensions(B); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { A[i][j] = A[i][j] / B.A[i][j]; } } return this; } /** Element-by-element left division, C = A.\B @param B another matrix @return A.\B */ public Matrix arrayLeftDivide (Matrix B) { checkMatrixDimensions(B); Matrix X = new Matrix(m,n); double[][] C = X.getArray(); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { C[i][j] = B.A[i][j] / A[i][j]; } } return X; } /** Element-by-element left division in place, A = A.\B @param B another matrix @return A.\B */ public Matrix arrayLeftDivideEquals (Matrix B) { checkMatrixDimensions(B); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { A[i][j] = B.A[i][j] / A[i][j]; } } return this; } /** Multiply a matrix by a scalar, C = s*A @param s scalar @return s*A */ public Matrix times (double s) { Matrix X = new Matrix(m,n); double[][] C = X.getArray(); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { C[i][j] = s*A[i][j]; } } return X; } /** Multiply a matrix by a scalar in place, A = s*A @param s scalar @return replace A by s*A */ public Matrix timesEquals (double s) { for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { A[i][j] = s*A[i][j]; } } return this; } /** Linear algebraic matrix multiplication, A * B @param B another matrix @return Matrix product, A * B @exception IllegalArgumentException Matrix inner dimensions must agree. */ public Matrix times (Matrix B) { if (B.m != n) { throw new IllegalArgumentException("Matrix inner dimensions must agree."); } Matrix X = new Matrix(m,B.n); double[][] C = X.getArray(); double[] Bcolj = new double[n]; for (int j = 0; j < B.n; j++) { for (int k = 0; k < n; k++) { Bcolj[k] = B.A[k][j]; } for (int i = 0; i < m; i++) { double[] Arowi = A[i]; double s = 0; for (int k = 0; k < n; k++) { s += Arowi[k]*Bcolj[k]; } C[i][j] = s; } } return X; } /** LU Decomposition @return LUDecomposition @see LUDecomposition */ public LUDecomposition lu () { return new LUDecomposition(this); } /** QR Decomposition @return QRDecomposition @see QRDecomposition */ public QRDecomposition qr () { return new QRDecomposition(this); } /** Cholesky Decomposition @return CholeskyDecomposition @see CholeskyDecomposition */ public CholeskyDecomposition chol () { return new CholeskyDecomposition(this); } /** Singular Value Decomposition @return SingularValueDecomposition @see SingularValueDecomposition */ public SingularValueDecomposition svd () { return new SingularValueDecomposition(this); } /** Eigenvalue Decomposition @return EigenvalueDecomposition @see EigenvalueDecomposition */ public EigenvalueDecomposition eig () { return new EigenvalueDecomposition(this); } /** Solve A*X = B @param B right hand side @return solution if A is square, least squares solution otherwise */ public Matrix solve (Matrix B) { return (m == n ? (new LUDecomposition(this)).solve(B) : (new QRDecomposition(this)).solve(B)); } /** Solve X*A = B, which is also A'*X' = B' @param B right hand side @return solution if A is square, least squares solution otherwise. */ public Matrix solveTranspose (Matrix B) { return transpose().solve(B.transpose()); } /** Matrix inverse or pseudoinverse @return inverse(A) if A is square, pseudoinverse otherwise. */ public Matrix inverse () { return solve(identity(m,m)); } /** Matrix determinant @return determinant */ public double det () { return new LUDecomposition(this).det(); } /** Matrix rank @return effective numerical rank, obtained from SVD. */ public int rank () { return new SingularValueDecomposition(this).rank(); } /** Matrix condition (2 norm) @return ratio of largest to smallest singular value. */ public double cond () { return new SingularValueDecomposition(this).cond(); } /** Matrix trace. @return sum of the diagonal elements. */ public double trace () { double t = 0; for (int i = 0; i < Math.min(m,n); i++) { t += A[i][i]; } return t; } /** Generate matrix with random elements @param m Number of rows. @param n Number of colums. @return An m-by-n matrix with uniformly distributed random elements. */ public static Matrix random (int m, int n) { Matrix A = new Matrix(m,n); double[][] X = A.getArray(); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { X[i][j] = Math.random(); } } return A; } /** Generate identity matrix @param m Number of rows. @param n Number of colums. @return An m-by-n matrix with ones on the diagonal and zeros elsewhere. */ public static Matrix identity (int m, int n) { Matrix A = new Matrix(m,n); double[][] X = A.getArray(); for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { X[i][j] = (i == j ? 1.0 : 0.0); } } return A; } /** Print the matrix to stdout. Line the elements up in columns * with a Fortran-like 'Fw.d' style format. @param w Column width. @param d Number of digits after the decimal. */ public void print (int w, int d) { print(new PrintWriter(System.out,true),w,d); } /** Print the matrix to the output stream. Line the elements up in * columns with a Fortran-like 'Fw.d' style format. @param output Output stream. @param w Column width. @param d Number of digits after the decimal. */ public void print (PrintWriter output, int w, int d) { DecimalFormat format = new DecimalFormat(); format.setDecimalFormatSymbols(new DecimalFormatSymbols(Locale.US)); format.setMinimumIntegerDigits(1); format.setMaximumFractionDigits(d); format.setMinimumFractionDigits(d); format.setGroupingUsed(false); print(output,format,w+2); } /** Print the matrix to stdout. Line the elements up in columns. * Use the format object, and right justify within columns of width * characters. * Note that is the matrix is to be read back in, you probably will want * to use a NumberFormat that is set to US Locale. @param format A Formatting object for individual elements. @param width Field width for each column. @see java.text.DecimalFormat#setDecimalFormatSymbols */ public void print (NumberFormat format, int width) { print(new PrintWriter(System.out,true),format,width); } // DecimalFormat is a little disappointing coming from Fortran or C's printf. // Since it doesn't pad on the left, the elements will come out different // widths. Consequently, we'll pass the desired column width in as an // argument and do the extra padding ourselves. /** Print the matrix to the output stream. Line the elements up in columns. * Use the format object, and right justify within columns of width * characters. * Note that is the matrix is to be read back in, you probably will want * to use a NumberFormat that is set to US Locale. @param output the output stream. @param format A formatting object to format the matrix elements @param width Column width. @see java.text.DecimalFormat#setDecimalFormatSymbols */ public void print (PrintWriter output, NumberFormat format, int width) { output.println(); // start on new line. for (int i = 0; i < m; i++) { for (int j = 0; j < n; j++) { String s = format.format(A[i][j]); // format the number int padding = Math.max(1,width-s.length()); // At _least_ 1 space for (int k = 0; k < padding; k++) output.print(' '); output.print(s); } output.println(); } output.println(); // end with blank line. } /** Read a matrix from a stream. The format is the same the print method, * so printed matrices can be read back in (provided they were printed using * US Locale). Elements are separated by * whitespace, all the elements for each row appear on a single line, * the last row is followed by a blank line. @param input the input stream. */ public static Matrix read (BufferedReader input) throws java.io.IOException { StreamTokenizer tokenizer= new StreamTokenizer(input); // Although StreamTokenizer will parse numbers, it doesn't recognize // scientific notation (E or D); however, Double.valueOf does. // The strategy here is to disable StreamTokenizer's number parsing. // We'll only get whitespace delimited words, EOL's and EOF's. // These words should all be numbers, for Double.valueOf to parse. tokenizer.resetSyntax(); tokenizer.wordChars(0,255); tokenizer.whitespaceChars(0, ' '); tokenizer.eolIsSignificant(true); java.util.Vector v = new java.util.Vector(); // Ignore initial empty lines while (tokenizer.nextToken() == StreamTokenizer.TT_EOL); if (tokenizer.ttype == StreamTokenizer.TT_EOF) throw new java.io.IOException("Unexpected EOF on matrix read."); do { v.addElement(Double.valueOf(tokenizer.sval)); // Read & store 1st row. } while (tokenizer.nextToken() == StreamTokenizer.TT_WORD); int n = v.size(); // Now we've got the number of columns! double row[] = new double[n]; for (int j=0; j= n) throw new java.io.IOException ("Row " + v.size() + " is too long."); row[j++] = Double.valueOf(tokenizer.sval).doubleValue(); } while (tokenizer.nextToken() == StreamTokenizer.TT_WORD); if (j < n) throw new java.io.IOException ("Row " + v.size() + " is too short."); } int m = v.size(); // Now we've got the number of rows. double[][] A = new double[m][]; v.copyInto(A); // copy the rows out of the vector return new Matrix(A); } /* ------------------------ Private Methods * ------------------------ */ /** Check if size(A) == size(B) **/ private void checkMatrixDimensions (Matrix B) { if (B.m != m || B.n != n) { throw new IllegalArgumentException("Matrix dimensions must agree."); } } } king-2.21.120420/driftwood/src/Jama/SingularValueDecomposition.java0000644000000000000000000003675111531212760023446 0ustar rootrootpackage Jama; import Jama.util.*; /** Singular Value Decomposition.

For an m-by-n matrix A with m >= n, the singular value decomposition is an m-by-n orthogonal matrix U, an n-by-n diagonal matrix S, and an n-by-n orthogonal matrix V so that A = U*S*V'.

The singular values, sigma[k] = S[k][k], are ordered so that sigma[0] >= sigma[1] >= ... >= sigma[n-1].

The singular value decompostion always exists, so the constructor will never fail. The matrix condition number and the effective numerical rank can be computed from this decomposition. */ public class SingularValueDecomposition implements java.io.Serializable { /* ------------------------ Class variables * ------------------------ */ /** Arrays for internal storage of U and V. @serial internal storage of U. @serial internal storage of V. */ private double[][] U, V; /** Array for internal storage of singular values. @serial internal storage of singular values. */ private double[] s; /** Row and column dimensions. @serial row dimension. @serial column dimension. */ private int m, n; /* ------------------------ Constructor * ------------------------ */ /** Construct the singular value decomposition. * Returns structure to access U, S and V. @param Arg Rectangular matrix */ public SingularValueDecomposition (Matrix Arg) { // Derived from LINPACK code. // Initialize. double[][] A = Arg.getArrayCopy(); m = Arg.getRowDimension(); n = Arg.getColumnDimension(); int nu = Math.min(m,n); s = new double [Math.min(m+1,n)]; U = new double [m][nu]; V = new double [n][n]; double[] e = new double [n]; double[] work = new double [m]; boolean wantu = true; boolean wantv = true; // Reduce A to bidiagonal form, storing the diagonal elements // in s and the super-diagonal elements in e. int nct = Math.min(m-1,n); int nrt = Math.max(0,Math.min(n-2,m)); for (int k = 0; k < Math.max(nct,nrt); k++) { if (k < nct) { // Compute the transformation for the k-th column and // place the k-th diagonal in s[k]. // Compute 2-norm of k-th column without under/overflow. s[k] = 0; for (int i = k; i < m; i++) { s[k] = Maths.hypot(s[k],A[i][k]); } if (s[k] != 0.0) { if (A[k][k] < 0.0) { s[k] = -s[k]; } for (int i = k; i < m; i++) { A[i][k] /= s[k]; } A[k][k] += 1.0; } s[k] = -s[k]; } for (int j = k+1; j < n; j++) { if ((k < nct) & (s[k] != 0.0)) { // Apply the transformation. double t = 0; for (int i = k; i < m; i++) { t += A[i][k]*A[i][j]; } t = -t/A[k][k]; for (int i = k; i < m; i++) { A[i][j] += t*A[i][k]; } } // Place the k-th row of A into e for the // subsequent calculation of the row transformation. e[j] = A[k][j]; } if (wantu & (k < nct)) { // Place the transformation in U for subsequent back // multiplication. for (int i = k; i < m; i++) { U[i][k] = A[i][k]; } } if (k < nrt) { // Compute the k-th row transformation and place the // k-th super-diagonal in e[k]. // Compute 2-norm without under/overflow. e[k] = 0; for (int i = k+1; i < n; i++) { e[k] = Maths.hypot(e[k],e[i]); } if (e[k] != 0.0) { if (e[k+1] < 0.0) { e[k] = -e[k]; } for (int i = k+1; i < n; i++) { e[i] /= e[k]; } e[k+1] += 1.0; } e[k] = -e[k]; if ((k+1 < m) & (e[k] != 0.0)) { // Apply the transformation. for (int i = k+1; i < m; i++) { work[i] = 0.0; } for (int j = k+1; j < n; j++) { for (int i = k+1; i < m; i++) { work[i] += e[j]*A[i][j]; } } for (int j = k+1; j < n; j++) { double t = -e[j]/e[k+1]; for (int i = k+1; i < m; i++) { A[i][j] += t*work[i]; } } } if (wantv) { // Place the transformation in V for subsequent // back multiplication. for (int i = k+1; i < n; i++) { V[i][k] = e[i]; } } } } // Set up the final bidiagonal matrix or order p. int p = Math.min(n,m+1); if (nct < n) { s[nct] = A[nct][nct]; } if (m < p) { s[p-1] = 0.0; } if (nrt+1 < p) { e[nrt] = A[nrt][p-1]; } e[p-1] = 0.0; // If required, generate U. if (wantu) { for (int j = nct; j < nu; j++) { for (int i = 0; i < m; i++) { U[i][j] = 0.0; } U[j][j] = 1.0; } for (int k = nct-1; k >= 0; k--) { if (s[k] != 0.0) { for (int j = k+1; j < nu; j++) { double t = 0; for (int i = k; i < m; i++) { t += U[i][k]*U[i][j]; } t = -t/U[k][k]; for (int i = k; i < m; i++) { U[i][j] += t*U[i][k]; } } for (int i = k; i < m; i++ ) { U[i][k] = -U[i][k]; } U[k][k] = 1.0 + U[k][k]; for (int i = 0; i < k-1; i++) { U[i][k] = 0.0; } } else { for (int i = 0; i < m; i++) { U[i][k] = 0.0; } U[k][k] = 1.0; } } } // If required, generate V. if (wantv) { for (int k = n-1; k >= 0; k--) { if ((k < nrt) & (e[k] != 0.0)) { for (int j = k+1; j < nu; j++) { double t = 0; for (int i = k+1; i < n; i++) { t += V[i][k]*V[i][j]; } t = -t/V[k+1][k]; for (int i = k+1; i < n; i++) { V[i][j] += t*V[i][k]; } } } for (int i = 0; i < n; i++) { V[i][k] = 0.0; } V[k][k] = 1.0; } } // Main iteration loop for the singular values. int pp = p-1; int iter = 0; double eps = Math.pow(2.0,-52.0); while (p > 0) { int k,kase; // Here is where a test for too many iterations would go. // This section of the program inspects for // negligible elements in the s and e arrays. On // completion the variables kase and k are set as follows. // kase = 1 if s(p) and e[k-1] are negligible and k

= -1; k--) { if (k == -1) { break; } if (Math.abs(e[k]) <= eps*(Math.abs(s[k]) + Math.abs(s[k+1]))) { e[k] = 0.0; break; } } if (k == p-2) { kase = 4; } else { int ks; for (ks = p-1; ks >= k; ks--) { if (ks == k) { break; } double t = (ks != p ? Math.abs(e[ks]) : 0.) + (ks != k+1 ? Math.abs(e[ks-1]) : 0.); if (Math.abs(s[ks]) <= eps*t) { s[ks] = 0.0; break; } } if (ks == k) { kase = 3; } else if (ks == p-1) { kase = 1; } else { kase = 2; k = ks; } } k++; // Perform the task indicated by kase. switch (kase) { // Deflate negligible s(p). case 1: { double f = e[p-2]; e[p-2] = 0.0; for (int j = p-2; j >= k; j--) { double t = Maths.hypot(s[j],f); double cs = s[j]/t; double sn = f/t; s[j] = t; if (j != k) { f = -sn*e[j-1]; e[j-1] = cs*e[j-1]; } if (wantv) { for (int i = 0; i < n; i++) { t = cs*V[i][j] + sn*V[i][p-1]; V[i][p-1] = -sn*V[i][j] + cs*V[i][p-1]; V[i][j] = t; } } } } break; // Split at negligible s(k). case 2: { double f = e[k-1]; e[k-1] = 0.0; for (int j = k; j < p; j++) { double t = Maths.hypot(s[j],f); double cs = s[j]/t; double sn = f/t; s[j] = t; f = -sn*e[j]; e[j] = cs*e[j]; if (wantu) { for (int i = 0; i < m; i++) { t = cs*U[i][j] + sn*U[i][k-1]; U[i][k-1] = -sn*U[i][j] + cs*U[i][k-1]; U[i][j] = t; } } } } break; // Perform one qr step. case 3: { // Calculate the shift. double scale = Math.max(Math.max(Math.max(Math.max( Math.abs(s[p-1]),Math.abs(s[p-2])),Math.abs(e[p-2])), Math.abs(s[k])),Math.abs(e[k])); double sp = s[p-1]/scale; double spm1 = s[p-2]/scale; double epm1 = e[p-2]/scale; double sk = s[k]/scale; double ek = e[k]/scale; double b = ((spm1 + sp)*(spm1 - sp) + epm1*epm1)/2.0; double c = (sp*epm1)*(sp*epm1); double shift = 0.0; if ((b != 0.0) | (c != 0.0)) { shift = Math.sqrt(b*b + c); if (b < 0.0) { shift = -shift; } shift = c/(b + shift); } double f = (sk + sp)*(sk - sp) + shift; double g = sk*ek; // Chase zeros. for (int j = k; j < p-1; j++) { double t = Maths.hypot(f,g); double cs = f/t; double sn = g/t; if (j != k) { e[j-1] = t; } f = cs*s[j] + sn*e[j]; e[j] = cs*e[j] - sn*s[j]; g = sn*s[j+1]; s[j+1] = cs*s[j+1]; if (wantv) { for (int i = 0; i < n; i++) { t = cs*V[i][j] + sn*V[i][j+1]; V[i][j+1] = -sn*V[i][j] + cs*V[i][j+1]; V[i][j] = t; } } t = Maths.hypot(f,g); cs = f/t; sn = g/t; s[j] = t; f = cs*e[j] + sn*s[j+1]; s[j+1] = -sn*e[j] + cs*s[j+1]; g = sn*e[j+1]; e[j+1] = cs*e[j+1]; if (wantu && (j < m-1)) { for (int i = 0; i < m; i++) { t = cs*U[i][j] + sn*U[i][j+1]; U[i][j+1] = -sn*U[i][j] + cs*U[i][j+1]; U[i][j] = t; } } } e[p-2] = f; iter = iter + 1; } break; // Convergence. case 4: { // Make the singular values positive. if (s[k] <= 0.0) { s[k] = (s[k] < 0.0 ? -s[k] : 0.0); if (wantv) { for (int i = 0; i <= pp; i++) { V[i][k] = -V[i][k]; } } } // Order the singular values. while (k < pp) { if (s[k] >= s[k+1]) { break; } double t = s[k]; s[k] = s[k+1]; s[k+1] = t; if (wantv && (k < n-1)) { for (int i = 0; i < n; i++) { t = V[i][k+1]; V[i][k+1] = V[i][k]; V[i][k] = t; } } if (wantu && (k < m-1)) { for (int i = 0; i < m; i++) { t = U[i][k+1]; U[i][k+1] = U[i][k]; U[i][k] = t; } } k++; } iter = 0; p--; } break; } } } /* ------------------------ Public Methods * ------------------------ */ /** Return the left singular vectors @return U */ public Matrix getU () { return new Matrix(U,m,Math.min(m+1,n)); } /** Return the right singular vectors @return V */ public Matrix getV () { return new Matrix(V,n,n); } /** Return the one-dimensional array of singular values @return diagonal of S. */ public double[] getSingularValues () { return s; } /** Return the diagonal matrix of singular values @return S */ public Matrix getS () { Matrix X = new Matrix(n,n); double[][] S = X.getArray(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { S[i][j] = 0.0; } S[i][i] = this.s[i]; } return X; } /** Two norm @return max(S) */ public double norm2 () { return s[0]; } /** Two norm condition number @return max(S)/min(S) */ public double cond () { return s[0]/s[Math.min(m,n)-1]; } /** Effective numerical matrix rank @return Number of nonnegligible singular values. */ public int rank () { double eps = Math.pow(2.0,-52.0); double tol = Math.max(m,n)*s[0]*eps; int r = 0; for (int i = 0; i < s.length; i++) { if (s[i] > tol) { r++; } } return r; } } king-2.21.120420/driftwood/src/driftwood/0000755000000000000000000000000011744306102016402 5ustar rootrootking-2.21.120420/driftwood/src/driftwood/isosurface/0000755000000000000000000000000011744306100020543 5ustar rootrootking-2.21.120420/driftwood/src/driftwood/isosurface/CrystalVertexSource.java0000644000000000000000000004030711531212750025413 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.isosurface; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * CrystalVertexSource manages vertex information built * from a crystallographic electron density map file. * This is an abstract base class that supports * X-PLOR/CNS and O (DSN6) formats via concrete subclasses. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Feb 10 14:34:41 EST 2003 */ abstract public class CrystalVertexSource implements VertexLocator, VertexEvaluator { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## public int aSteps; // number of subdivisions along 'a' axis public int aMin; // minimum index on 'a' axis, inclusive public int aMax; // maximum index on 'a' axis, INCLUSIVE public int aCount; // aMax - aMin + 1 public int bSteps; public int bMin; public int bMax; public int bCount; public int cSteps; public int cMin; public int cMax; public int cCount; public double aLength; // length of unit cell along 'a' axis, in Angstroms public double bLength; public double cLength; public double alpha; // angle between 'b' & 'c', in degrees public double beta; // angle between 'a' & 'c', in degrees public double gamma; // angle between 'a' & 'b', in degrees public double mean = 0; // average density value public double sigma = 1; // standard deviation double tax, tbx, tby, // Transformation matrix for cryst. --> Cart. tcx, tcy, tcz; //}}} //{{{ Constructor (init) //################################################################################################## /** * Initializes a new VertexSource based on a crystallographic map file. * Subclass constructors should call this method. * @param readData if false, only header info will be read * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ void init(boolean readData) throws IOException { readHeader(); if(readData) { readData(); } initTransformMatrix(); } //}}} //{{{ readHeader //################################################################################################## /** * Decodes information from the map header. * In particular, this method should fill in all the unit cell parameters. * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ abstract void readHeader() throws IOException; //}}} //{{{ readData //################################################################################################## /** * Decodes the body of a map file (i.e. density values for all grid points) and stores it in * memory. Assumes readHeader has already been called. * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ abstract void readData() throws IOException; //}}} //{{{ hasData //################################################################################################## /** * Returns true iff density data was read in at the time of creation. */ abstract public boolean hasData(); //}}} //{{{ initTransformMatrix //################################################################################################## /** * Uses the unit cell parameters to construct a matrix for transitioning from * crystallographic coordinates (indices into data grid) into Cartesian coordinates. * *

Suppose I have a unit cell with sides of length A, B, and C; and angles between them * alpha, beta, and gamma; where the axes are analogous to X, Y, and Z in a right handed system; * and alpha is the angle between axis a and axis c, beta from a to c, * and gamma from a to b. * *

Define vectors a, b, and c as the unit cell axes such that they form a basis in R3, * and they define a frame that shares a common origin with the Cartesian system. * Given two column vectors u = [ux uy uz] and v = [vx vy vz], let u represent a point * in crystallographic coordinates and v, the same point in Cartesian coordinates. * * I want the 3x3 matrix T such that T*u = v. There are now two (or more) assumptions we * could make about the correspondances between the axes. * * I will assume that a points in the direction of x, that b lies in the x-y plane, * and that c falls where it may. This gives a matrix T like this:

    [ ax bx cx ]
T = [  0 by cy ]
    [  0  0 cz ]
* ax is the x component of a in the Cartesian system, etc., such that a = (ax,0,0), * bx = (bx,by,0) and c = (cx,cy,cz) when they are expressed as vectors in Cartesian * coodinate space. * *

The coefficients here can be derived from the dot products and the fact that * by > 0 (b points in roughly the direction of the y axis) and * cz > 0 (c points in roughly the direction of the z axis). * *

Thus: *
ax = A *
bx = [A*B*cos(gamma)] / ax = B*cos(gamma) *
by = pos_sqrt[B*B - bx*bx] = B*pos_sqrt[1-cos(gamma)*cos(gamma)] = B*sin(gamma) *
cx = [A*C*cos(beta)] / ax = C*cos(beta) *
cy = [B*C*cos(alpha) - bx*cx] / by = C*[cos(alpha) - cos(beta)*cos(gamma)] / sin(gamma)] *
cz = pos_sqrt[C*C - cx*cx - cy*cy] */ void initTransformMatrix() { double cosAlpha = Math.cos(Math.toRadians(alpha)), cosBeta = Math.cos(Math.toRadians(beta)), cosGamma = Math.cos(Math.toRadians(gamma)), sinGamma = Math.sin(Math.toRadians(gamma)); tax = aLength; tbx = bLength * cosGamma; //tby = bLength * Math.sqrt(1.0 - cosGamma*cosGamma); tby = bLength * sinGamma; tcx = cLength * cosBeta; //tcy = cLength * (cosAlpha - cosBeta*cosGamma) / Math.sqrt(1.0 - cosGamma*cosGamma); tcy = cLength * (cosAlpha - cosBeta*cosGamma) / sinGamma; tcz = Math.sqrt(cLength*cLength - tcx*tcx - tcy*tcy); // In the case of orthogonal axes, remove roundoff error if(Math.abs(tbx) < 1e-12) tbx = 0.0; if(Math.abs(tcx) < 1e-12) tcx = 0.0; if(Math.abs(tcy) < 1e-12) tcy = 0.0; } //}}} //{{{ evaluateVertex //################################################################################################## /** * Returns a scalar value v for legal vertex. If the indices are * meaningful but no value is available, this function should return * NaN rather than throwing an exception. An IndexOutOfBoundsException * should be thrown in cases where the indices are not meaningful, which * usually corresponds to conditions where VertexLocator.locateVertex() * would also throw an exception. * @param i the x index of the vertex to be evaluated * @param j the y index of the vertex to be evaluated * @param k the z index of the vertex to be evaluated * @return the value at the specified vertex, * or NaN if the value can't be calculated for a legal vertex * @throws IndexOutOfBoundsException if no such vertex exists. * This implementation never throws IndexOutOfBoundsException. */ public double evaluateVertex(int i, int j, int k) { // move to zero-based indices i -= aMin; j -= bMin; k -= cMin; // wrap to the range 0 ... Steps // BUG!! This produces [1,steps] for negative numbers and [0,steps-1] for positive numbers. // a mod b == (a<0 ? b+a%b : a%b) // Fixed 20 Jan 2006; results before this may be (very slightly) wrong. i = i % aSteps; if(i < 0) i += aSteps; j = j % bSteps; if(j < 0) j += bSteps; k = k % cSteps; if(k < 0) k += cSteps; try { // return a legal value if one can be had, NaN otherwise if(i >= aCount || j >= bCount || k >= cCount) return Double.NaN; //throw new IndexOutOfBoundsException("Can't find <"+i+","+j+","+k+"> without sym ops"); else return getValue(i, j, k); } catch(ArrayIndexOutOfBoundsException ex) { SoftLog.err.println(ex.getMessage()); SoftLog.err.println(" (i,j,k)="+i+" "+j+" "+k+"; count="+aCount+" "+bCount+" "+cCount+"; steps="+aSteps+" "+bSteps+" "+cSteps); return Double.NaN; } } //}}} //{{{ getValue, evaluateAtPoint //################################################################################################## /** * Returns the value at the specified grid point, * where the indexes i, j, and k have been adjusted * to start from 0 (i.e. i==0 means aMin, j==1 means bMin+1, etc.) * No wrapping, etc. is done by this function -- you probably want evaluateVertex() instead. */ abstract public double getValue(int i, int j, int k); /** * Linearly estimates the value at a specific set of Cartesian coordinates. * Return value may be NaN if no data is available in this region. */ public double evaluateAtPoint(double x, double y, double z) { double[] ijk = new double[3]; findVertexForPoint(x, y, z, ijk); int lowI = (int)Math.floor(ijk[0]); int lowJ = (int)Math.floor(ijk[1]); int lowK = (int)Math.floor(ijk[2]); double aI = ijk[0] - lowI; double aJ = ijk[1] - lowJ; double aK = ijk[2] - lowK; return (1-aI)*(1-aJ)*(1-aK)*evaluateVertex(lowI, lowJ, lowK) + (1-aI)*(1-aJ)*(aK)*evaluateVertex(lowI, lowJ, lowK+1) + (1-aI)*(aJ)*(1-aK)*evaluateVertex(lowI, lowJ+1, lowK) + (1-aI)*(aJ)*(aK)*evaluateVertex(lowI, lowJ+1, lowK+1) + (aI)*(1-aJ)*(1-aK)*evaluateVertex(lowI+1, lowJ, lowK) + (aI)*(1-aJ)*(aK)*evaluateVertex(lowI+1, lowJ, lowK+1) + (aI)*(aJ)*(1-aK)*evaluateVertex(lowI+1, lowJ+1, lowK) + (aI)*(aJ)*(aK)*evaluateVertex(lowI+1, lowJ+1, lowK+1); } //}}} //{{{ locateVertex //################################################################################################## /** * Translates the indices of a vertex, <i, j, k>, * to a location in 3-space, <x, y, z>. * @param i the x index of the vertex to be found * @param j the y index of the vertex to be found * @param k the z index of the vertex to be found * @param xyz a double[3] to be filled with the coordinates of the vertex * @throws IndexOutOfBoundsException if no such vertex exists */ public void locateVertex(int i, int j, int k, double[] xyz) { /* simple case for orthogonal axes * / xyz[0] = i * aStepLength; xyz[1] = j * bStepLength; xyz[2] = k * cStepLength; /* simple case for orthogonal axes */ /* non-orthogonal axes: a matches x */ double a, b, c; a = (double)i / (double)aSteps; b = (double)j / (double)bSteps; c = (double)k / (double)cSteps; xyz[0] = tax*a + tbx*b + tcx*c; xyz[1] = tby*b + tcy*c; xyz[2] = tcz*c; /* non-orthogonal axes: a matches x */ } //}}} //{{{ findVertexForPoint //################################################################################################## /** * Returns the indices of the vertex "nearest" some point <x,y,z> (optional operation). * The meaning of "nearest" is up to the implementation, but typically this operation is * the inverse of locateVertex() for all points; i.e., xyz == locateVertex(findVertexForPoint(xyz)). * @param x the x coordinate in the Cartesian system * @param y the x coordinate in the Cartesian system * @param z the x coordinate in the Cartesian system * @param ijk an int[3] to be filled with the indices of the vertex * @throws IndexOutOfBoundsException if no suitable vertex exists * @throws UnsupportedOperationException if this operation is not supported by the implementor */ public void findVertexForPoint(double x, double y, double z, int[] ijk) { // Do Gaussian elimination to solve for i, j, and k double a, b, c; c = (z) / tcz; b = (y - tcy*c) / tby; a = (x - tcx*c - tbx*b) / tax; ijk[0] = (int)Math.round(a * aSteps); ijk[1] = (int)Math.round(b * bSteps); ijk[2] = (int)Math.round(c * cSteps); } /** * Returns the fractional indices of the pseudo-vertex at some point <x,y,z>. * The numbers don't correspond to a real (integer indexed) vertex, but can be used * to choose such indices for e.g. linear interpolation. * @param x the x coordinate in the Cartesian system * @param y the x coordinate in the Cartesian system * @param z the x coordinate in the Cartesian system * @param ijk a double[3] to be filled with the indices of the pseudo-vertex */ public void findVertexForPoint(double x, double y, double z, double[] ijk) { // Do Gaussian elimination to solve for i, j, and k double a, b, c; c = (z) / tcz; b = (y - tcy*c) / tby; a = (x - tcx*c - tbx*b) / tax; ijk[0] = (a * aSteps); ijk[1] = (b * bSteps); ijk[2] = (c * cSteps); } //}}} //{{{ isComplete, isOrthogonal //################################################################################################## /** Returns true iff a value can be calculated for every <i,j,k> */ public boolean isComplete() { return (aCount >= aSteps && bCount >= bSteps && cCount >= cSteps); } /** Returns true iff the unit cell axes are orthogonal to the Cartesian ones */ public boolean isOrthogonal() { return (alpha == 90.0 && beta == 90.0 && gamma == 90.0); } //}}} //{{{ kinUnitCell //################################################################################################## /** Returns a kinemage format trace of a, b, and c */ public String kinUnitCell() { DecimalFormat df = driftwood.util.Strings.usDecimalFormat("0.###"); return "@vectorlist {unit cell axes} color= gray\n"+ "{a}P 0 0 0 {a} "+df.format(tax)+" 0 0\n"+ "{b}P 0 0 0 {b} "+df.format(tbx)+" "+df.format(tby)+" 0\n"+ "{c}P 0 0 0 {c} "+df.format(tcx)+" "+df.format(tcy)+" "+df.format(tcz); } //}}} //{{{ toString() //################################################################################################## public String toString() { return "A: "+aMin+" -> "+aMax+" ("+aCount+" samples); "+aLength+" A in "+aSteps+" samples\n"+ "B: "+bMin+" -> "+bMax+" ("+bCount+" samples); "+bLength+" A in "+bSteps+" samples\n"+ "C: "+cMin+" -> "+cMax+" ("+cCount+" samples); "+cLength+" A in "+cSteps+" samples\n"+ "Is complete? "+isComplete()+"; Is orthogonal? "+isOrthogonal()+"\n"+ "alpha = "+alpha+"; beta = "+beta+"; gamma = "+gamma+"\n"+ "|a| = |<"+tax+", 0, 0>| = "+Math.sqrt(tax*tax)+"\n"+ "|b| = |<"+tbx+", "+tby+", 0>| = "+Math.sqrt(tbx*tbx + tby*tby)+"\n"+ "|c| = |<"+tcx+", "+tcy+", "+tcz+">| = "+Math.sqrt(tcx*tcx + tcy*tcy + tcz*tcz)+"\n"+ "mean = "+mean+"; sigma = "+sigma; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/isosurface/MarchingCubes.java0000644000000000000000000007336011531212750024132 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.isosurface; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * MarchingCubes is an implementation of the Marching Cubes * algorithm that can be used for either solid isosurfaces (triangles) * or efficient wireframe-mesh isosurfaces in kinemage format and related formats. * *

Changes made from the original paper include renumbering the vertices and edges * (0-7 and 0-11 instead of 1-8 and 1-12) and using a right-handed coordinate system. *

The original paper was *
William E. Lorenson & Harvey E. Cline (1987) Marching cubes: a high resolution * 3D surface construction algorithm. ACM Computer Graphics, 21(4):163-169 * *

Wireframe mesh mode

* The output was optimized by dropping edges on the "high" faces of the cube [those bordering * (i+1,j+1,k+1) instead of (i,j,k)]. Dropping these edges prevents edge duplication when adjacent * cubes are processed, at the cost of leaving a slightly "ragged" edge at the high-index boundaries. * *

Surfaces connectivity patterns were specified by hand for 128 cases, using the * diagrams from the original pattern. The known issue of "holes" in some surfaces * was not addressed, because the holes are never noticeable in a wireframe mesh. * Also, some regions were left as 4-sided, possibly non-planar polygons, * rather than being arbitrarily divided into 2 triangles. * *

Triangle strip isosurface mode

* Connectivity patterns were specified by hand for the 15 exemplars from the original paper. * Rotational symmetry was resolved automatically by a Monte Carlo algorithm. * Again, the issue of potential holes in the surface was not addressed, * although occasional holes have been observed in the surfaces we generate. * Many people have tackled this problem, but most of the solutions seem so complicated * to implement that it's not worthwhile at the present time. For instance, see: *
Evgeni V. Chernyaev, "Marching Cubes 33: Construction of Topologically Correct Isosurfaces" * *

Copyright (C) 2003-2004 by Ian W. Davis. All rights reserved. *
Begun on Sun Feb 9 17:18:29 EST 2003 * * @see EdgePlotter for a description of how to use the output from this class. */ public class MarchingCubes //extends ... implements ... { //{{{ createSparseVectorTable //################################################################################################## static private int[][] createSparseVectorTable() { int[][] marchingCubes = new int[256][]; // -1 is the flag for a break in the polyline marchingCubes[0] = new int[] {}; marchingCubes[1] = new int[] {0,3,8,0}; marchingCubes[2] = new int[] {1,0,9}; marchingCubes[3] = new int[] {1,3,8,9}; marchingCubes[4] = new int[] {1,2}; marchingCubes[5] = new int[] {1,2,-1,0,3,8,0}; marchingCubes[6] = new int[] {2,0,9}; marchingCubes[7] = new int[] {9,8,10,-1,2,3,8}; marchingCubes[8] = new int[] {2,3,11}; marchingCubes[9] = new int[] {11,8,0,2}; marchingCubes[10] = new int[] {2,3,11,-1,1,0,9}; marchingCubes[11] = new int[] {9,8,11,9,-1,1,2}; marchingCubes[12] = new int[] {1,3,11}; marchingCubes[13] = new int[] {10,8,11,-1,1,0,8}; marchingCubes[14] = new int[] {0,3,11,9,0}; marchingCubes[15] = new int[] {9,8,11}; marchingCubes[16] = new int[] {4,8,7}; marchingCubes[17] = new int[] {7,3,0,4}; marchingCubes[18] = new int[] {1,0,9,-1,4,8,7}; marchingCubes[19] = new int[] {1,3,7,1,-1,4,9}; marchingCubes[20] = new int[] {1,2,-1,4,8,7}; marchingCubes[21] = new int[] {1,2,-1,7,3,0,4}; marchingCubes[22] = new int[] {2,0,9,-1,4,8,7}; marchingCubes[23] = new int[] {2,3,7,9,2,7,-1,4,9}; marchingCubes[24] = new int[] {2,3,11,-1,4,8,7}; marchingCubes[25] = new int[] {2,0,4,2,-1,7,11}; marchingCubes[26] = new int[] {1,0,9,-1,11,3,2,-1,7,8,4}; marchingCubes[27] = new int[] {1,2,4,9,-1,7,11}; marchingCubes[28] = new int[] {1,3,11,-1,4,8,7}; marchingCubes[29] = new int[] {11,7,0,10,7,-1,4,0,1}; marchingCubes[30] = new int[] {0,3,11,9,0,-1,4,8,7}; marchingCubes[32] = new int[] {4,9}; marchingCubes[33] = new int[] {0,3,8,0,-1,4,9}; marchingCubes[34] = new int[] {1,0,4}; marchingCubes[35] = new int[] {1,3,5,-1,4,8,3}; marchingCubes[36] = new int[] {1,2,-1,4,9}; marchingCubes[37] = new int[] {1,2,-1,4,9,-1,0,3,8,0}; marchingCubes[38] = new int[] {0,2,4,0}; marchingCubes[39] = new int[] {2,4,8,3,2}; marchingCubes[40] = new int[] {2,3,11,-1,4,9}; marchingCubes[41] = new int[] {2,0,8,11,-1,4,9}; marchingCubes[42] = new int[] {2,3,11,-1,1,0,4}; marchingCubes[43] = new int[] {4,8,11,-1,1,2,5,8,2}; marchingCubes[44] = new int[] {1,3,11,-1,4,9}; marchingCubes[45] = new int[] {11,8,10,-1,1,0,8,-1,4,9}; marchingCubes[46] = new int[] {11,3,0,4,10,3,4}; marchingCubes[48] = new int[] {7,8,9}; marchingCubes[49] = new int[] {7,3,5,-1,9,0,3}; marchingCubes[50] = new int[] {0,1,7,8,0}; marchingCubes[51] = new int[] {1,3,7}; marchingCubes[52] = new int[] {1,2,-1,7,8,9}; marchingCubes[53] = new int[] {7,3,5,-1,9,0,3,-1,1,2}; marchingCubes[54] = new int[] {2,0,8,7,10,0,7}; marchingCubes[56] = new int[] {7,8,9,-1,2,3,11}; marchingCubes[57] = new int[] {11,7,9,2,7,-1,9,0,2}; marchingCubes[58] = new int[] {0,1,7,8,0,-1,2,3,11}; marchingCubes[60] = new int[] {7,8,9,-1,1,3,11}; marchingCubes[64] = new int[] {}; marchingCubes[65] = new int[] {0,3,8,0}; marchingCubes[66] = new int[] {1,0,9}; marchingCubes[67] = new int[] {1,3,8,9}; marchingCubes[68] = new int[] {1,2}; marchingCubes[69] = new int[] {1,2,-1,0,3,8,0}; marchingCubes[70] = new int[] {2,0,6,-1,0,9}; marchingCubes[71] = new int[] {2,3,8,9,6,3,9}; marchingCubes[72] = new int[] {2,3,11}; marchingCubes[73] = new int[] {2,0,8,11}; marchingCubes[74] = new int[] {1,0,9,-1,2,3,11}; marchingCubes[75] = new int[] {8,9,11,8,-1,1,2}; marchingCubes[76] = new int[] {1,3,5,-1,3,11}; marchingCubes[77] = new int[] {11,8,0,1,6,8,1}; marchingCubes[78] = new int[] {9,0,3,11,9}; marchingCubes[80] = new int[] {4,8,7}; marchingCubes[81] = new int[] {4,0,3,7}; marchingCubes[82] = new int[] {1,0,9,-1,4,8,7}; marchingCubes[83] = new int[] {1,3,7,1,-1,4,9}; marchingCubes[84] = new int[] {1,2,-1,4,8,7}; marchingCubes[85] = new int[] {1,2,-1,4,0,3,7}; marchingCubes[86] = new int[] {2,0,6,-1,0,9,-1,4,8,7}; marchingCubes[88] = new int[] {2,3,11,-1,4,8,7}; marchingCubes[89] = new int[] {0,2,4,0,-1,7,11}; marchingCubes[90] = new int[] {4,8,7,-1,2,3,11,-1,1,0,9}; marchingCubes[92] = new int[] {1,3,5,-1,3,11,-1,4,8,7}; marchingCubes[96] = new int[] {4,9}; marchingCubes[97] = new int[] {4,9,-1,0,3,8,0}; marchingCubes[98] = new int[] {4,0,6,-1,0,1}; marchingCubes[99] = new int[] {1,3,8,4,10,3,4}; marchingCubes[100] = new int[] {1,2,4,9}; marchingCubes[101] = new int[] {1,2,4,9,-1,0,3,8,0}; marchingCubes[102] = new int[] {2,0,4}; marchingCubes[104] = new int[] {4,9,-1,2,3,11}; marchingCubes[105] = new int[] {4,9,-1,2,0,8,11}; marchingCubes[106] = new int[] {4,0,6,-1,0,1,-1,2,3,11}; marchingCubes[108] = new int[] {9,4,11,1,4,-1,11,3,1}; marchingCubes[112] = new int[] {9,8,10,-1,7,8}; marchingCubes[113] = new int[] {9,0,3,7,10,0,7,10}; marchingCubes[114] = new int[] {1,0,8,7,1}; marchingCubes[116] = new int[] {9,8,7,-1,2,1,8,6,1}; marchingCubes[120] = new int[] {2,3,11,-1,9,8,10,-1,7,8}; marchingCubes[128] = new int[] {7,11}; marchingCubes[129] = new int[] {7,11,-1,0,3,8,0}; marchingCubes[130] = new int[] {7,11,-1,1,0,9}; marchingCubes[131] = new int[] {1,3,8,9,-1,7,11}; marchingCubes[132] = new int[] {7,11,-1,1,2}; marchingCubes[133] = new int[] {7,11,-1,1,2,-1,0,3,8,0}; marchingCubes[134] = new int[] {2,0,9,-1,11,7}; marchingCubes[136] = new int[] {2,3,7}; marchingCubes[137] = new int[] {2,0,6,-1,7,8,0}; marchingCubes[138] = new int[] {2,3,7,-1,1,0,9}; marchingCubes[140] = new int[] {1,3,7,1}; marchingCubes[144] = new int[] {4,8,11}; marchingCubes[145] = new int[] {4,0,6,-1,0,3,11}; marchingCubes[146] = new int[] {4,8,11,-1,1,0,9}; marchingCubes[148] = new int[] {4,8,11,-1,1,2}; marchingCubes[152] = new int[] {2,3,8,4,2}; marchingCubes[160] = new int[] {7,11,-1,4,9}; marchingCubes[161] = new int[] {7,11,-1,4,9,-1,0,3,8,0}; marchingCubes[162] = new int[] {1,0,4,-1,7,11}; marchingCubes[164] = new int[] {1,2,-1,4,9,-1,7,11}; marchingCubes[168] = new int[] {2,3,7,-1,4,9}; marchingCubes[176] = new int[] {8,9,11,8}; marchingCubes[192] = new int[] {7,11}; marchingCubes[193] = new int[] {7,11,-1,0,3,8,0}; marchingCubes[194] = new int[] {7,11,-1,1,0,9}; marchingCubes[196] = new int[] {2,1,7,11}; marchingCubes[200] = new int[] {5,3,7,-1,2,3}; marchingCubes[208] = new int[] {10,8,11,-1,4,8}; marchingCubes[224] = new int[] {4,9,11,7}; for(int i = 0; i < 256; i++) { if(marchingCubes[i] == null) marchingCubes[i] = marchingCubes[i ^ 0xff]; if(marchingCubes[i] == null) throw new Error("Marching cubes data missing for lookup index #"+i); } return marchingCubes; } //}}} //{{{ createTriangleStripTable //################################################################################################## static private int[][] createTriangleStripTable() { int[][] marchingCubes = new int[256][]; // -1 is the flag for a break in the triangle strip marchingCubes[0] = new int[] {}; marchingCubes[1] = new int[] {0,8,3}; marchingCubes[2] = new int[] {9,0,1}; marchingCubes[3] = new int[] {9,8,1,3}; marchingCubes[4] = new int[] {10,1,2}; marchingCubes[5] = new int[] {0,8,3,-1,2,10,1}; marchingCubes[6] = new int[] {0,2,9,10}; marchingCubes[7] = new int[] {2,3,10,8,9}; marchingCubes[8] = new int[] {3,11,2}; marchingCubes[9] = new int[] {8,11,0,2}; marchingCubes[10] = new int[] {1,9,0,-1,3,11,2}; marchingCubes[11] = new int[] {1,2,9,11,8}; marchingCubes[12] = new int[] {11,10,3,1}; marchingCubes[13] = new int[] {0,1,8,10,11}; marchingCubes[14] = new int[] {3,0,11,9,10}; marchingCubes[15] = new int[] {9,10,8,11}; marchingCubes[16] = new int[] {8,4,7}; marchingCubes[17] = new int[] {7,3,4,0}; marchingCubes[18] = new int[] {4,7,8,-1,0,1,9}; marchingCubes[19] = new int[] {4,9,7,1,3}; marchingCubes[20] = new int[] {7,8,4,-1,10,1,2}; marchingCubes[21] = new int[] {0,4,3,7,-1,2,10,1}; marchingCubes[22] = new int[] {0,2,9,10,-1,4,7,8}; marchingCubes[23] = new int[] {3,2,7,9,4,-1,2,10,9}; marchingCubes[24] = new int[] {8,4,7,-1,11,2,3}; marchingCubes[25] = new int[] {11,7,2,4,0}; marchingCubes[26] = new int[] {11,3,2,-1,0,1,9,-1,7,8,4}; marchingCubes[27] = new int[] {4,7,9,11,1,2}; marchingCubes[28] = new int[] {11,10,3,1,-1,8,4,7}; marchingCubes[29] = new int[] {4,0,7,10,11,-1,0,10,1}; marchingCubes[30] = new int[] {8,7,4,-1,3,0,11,9,10}; marchingCubes[31] = new int[] {4,7,9,11,10}; marchingCubes[32] = new int[] {5,4,9}; marchingCubes[33] = new int[] {9,5,4,-1,8,3,0}; marchingCubes[34] = new int[] {4,0,5,1}; marchingCubes[35] = new int[] {8,4,3,5,1}; marchingCubes[36] = new int[] {5,4,9,-1,1,2,10}; marchingCubes[37] = new int[] {2,1,10,-1,9,5,4,-1,3,0,8}; marchingCubes[38] = new int[] {5,10,4,2,0}; marchingCubes[39] = new int[] {2,10,3,5,8,4}; marchingCubes[40] = new int[] {2,3,11,-1,5,4,9}; marchingCubes[41] = new int[] {8,11,0,2,-1,9,5,4}; marchingCubes[42] = new int[] {1,5,0,4,-1,3,11,2}; marchingCubes[43] = new int[] {11,8,2,5,1,-1,8,5,4}; marchingCubes[44] = new int[] {1,3,10,11,-1,5,4,9}; marchingCubes[45] = new int[] {9,4,5,-1,0,1,8,10,11}; marchingCubes[46] = new int[] {0,3,4,10,5,-1,3,11,10}; marchingCubes[47] = new int[] {5,4,10,8,11}; marchingCubes[48] = new int[] {8,9,7,5}; marchingCubes[49] = new int[] {9,0,5,3,7}; marchingCubes[50] = new int[] {0,8,1,7,5}; marchingCubes[51] = new int[] {1,3,5,7}; marchingCubes[52] = new int[] {5,7,9,8,-1,1,2,10}; marchingCubes[53] = new int[] {1,10,2,-1,9,0,5,3,7}; marchingCubes[54] = new int[] {2,0,10,7,5,-1,0,7,8}; marchingCubes[55] = new int[] {2,10,3,5,7}; marchingCubes[56] = new int[] {8,9,7,5,-1,11,2,3}; marchingCubes[57] = new int[] {0,9,2,7,11,-1,9,5,7}; marchingCubes[58] = new int[] {3,2,11,-1,0,8,1,7,5}; marchingCubes[59] = new int[] {11,2,7,1,5}; marchingCubes[60] = new int[] {10,1,11,3,-1,5,9,7,8}; marchingCubes[61] = new int[] {10,11,5,7,-1,9,0,1}; marchingCubes[62] = new int[] {7,5,11,10,-1,3,0,8}; marchingCubes[63] = new int[] {10,11,5,7}; marchingCubes[64] = new int[] {6,5,10}; marchingCubes[65] = new int[] {0,8,3,-1,10,6,5}; marchingCubes[66] = new int[] {10,6,5,-1,9,0,1}; marchingCubes[67] = new int[] {9,8,1,3,-1,10,6,5}; marchingCubes[68] = new int[] {2,6,1,5}; marchingCubes[69] = new int[] {2,6,1,5,-1,0,8,3}; marchingCubes[70] = new int[] {9,5,0,6,2}; marchingCubes[71] = new int[] {8,9,3,6,2,-1,9,6,5}; marchingCubes[72] = new int[] {2,3,11,-1,6,5,10}; marchingCubes[73] = new int[] {2,0,11,8,-1,6,5,10}; marchingCubes[74] = new int[] {3,2,11,-1,10,6,5,-1,0,1,9}; marchingCubes[75] = new int[] {10,5,6,-1,1,2,9,11,8}; marchingCubes[76] = new int[] {6,11,5,3,1}; marchingCubes[77] = new int[] {1,0,5,11,6,-1,0,8,11}; marchingCubes[78] = new int[] {6,5,11,9,3,0}; marchingCubes[79] = new int[] {6,5,11,9,8}; marchingCubes[80] = new int[] {5,10,6,-1,7,8,4}; marchingCubes[81] = new int[] {7,3,4,0,-1,5,10,6}; marchingCubes[82] = new int[] {7,4,8,-1,9,0,1,-1,6,5,10}; marchingCubes[83] = new int[] {5,6,10,-1,4,9,7,1,3}; marchingCubes[84] = new int[] {5,1,6,2,-1,7,8,4}; marchingCubes[85] = new int[] {4,7,0,3,-1,5,6,1,2}; marchingCubes[86] = new int[] {4,8,7,-1,9,5,0,6,2}; marchingCubes[87] = new int[] {6,2,7,3,-1,4,9,5}; marchingCubes[88] = new int[] {5,6,10,-1,11,2,3,-1,4,7,8}; marchingCubes[89] = new int[] {6,10,5,-1,11,7,2,4,0}; marchingCubes[90] = new int[] {9,0,1,-1,11,3,2,-1,5,10,6,-1,8,7,4}; marchingCubes[91] = new int[] {11,6,7,-1,5,4,9,-1,2,10,1}; marchingCubes[92] = new int[] {7,4,8,-1,6,11,5,3,1}; marchingCubes[93] = new int[] {4,0,5,1,-1,6,11,7}; marchingCubes[94] = new int[] {3,8,0,-1,4,9,5,-1,11,7,6}; marchingCubes[95] = new int[] {6,11,7,-1,4,9,5}; marchingCubes[96] = new int[] {9,10,4,6}; marchingCubes[97] = new int[] {9,10,4,6,-1,8,3,0}; marchingCubes[98] = new int[] {10,1,6,0,4}; marchingCubes[99] = new int[] {4,8,6,1,10,-1,8,3,1}; marchingCubes[100] = new int[] {1,9,2,4,6}; marchingCubes[101] = new int[] {0,3,8,-1,1,9,2,4,6}; marchingCubes[102] = new int[] {2,0,6,4}; marchingCubes[103] = new int[] {8,3,4,2,6}; marchingCubes[104] = new int[] {6,4,10,9,-1,2,3,11}; marchingCubes[105] = new int[] {0,8,2,11,-1,9,4,10,6}; marchingCubes[106] = new int[] {2,11,3,-1,10,1,6,0,4}; marchingCubes[107] = new int[] {11,8,6,4,-1,10,1,2}; marchingCubes[108] = new int[] {4,6,9,3,1,-1,6,3,11}; marchingCubes[109] = new int[] {4,6,8,11,-1,0,1,9}; marchingCubes[110] = new int[] {3,11,0,6,4}; marchingCubes[111] = new int[] {11,8,6,4}; marchingCubes[112] = new int[] {7,6,8,10,9}; marchingCubes[113] = new int[] {3,7,0,10,9,-1,7,10,6}; marchingCubes[114] = new int[] {0,1,8,10,7,6}; marchingCubes[115] = new int[] {10,6,1,7,3}; marchingCubes[116] = new int[] {6,7,2,9,1,-1,7,8,9}; marchingCubes[117] = new int[] {3,7,2,6,-1,1,9,0}; marchingCubes[118] = new int[] {7,8,6,0,2}; marchingCubes[119] = new int[] {6,2,7,3}; marchingCubes[120] = new int[] {11,3,2,-1,7,6,8,10,9}; marchingCubes[121] = new int[] {10,9,2,0,-1,11,7,6}; marchingCubes[122] = new int[] {7,11,6,-1,2,10,1,-1,8,3,0}; marchingCubes[123] = new int[] {11,7,6,-1,10,1,2}; marchingCubes[124] = new int[] {3,1,8,9,-1,7,6,11}; marchingCubes[125] = new int[] {11,7,6,-1,1,9,0}; marchingCubes[126] = new int[] {7,6,11,-1,3,0,8}; marchingCubes[127] = new int[] {7,6,11}; for(int i = 0; i < 256; i++) { if(marchingCubes[i] == null) marchingCubes[i] = marchingCubes[i ^ 0xff]; if(marchingCubes[i] == null) throw new Error("Marching cubes data missing for lookup index #"+i); } return marchingCubes; } //}}} //{{{ Constants static final int[][] SPARSE_VECTOR = createSparseVectorTable(); static final int[][] TRIANGLE_STRIP = createTriangleStripTable(); /** The triangle strip isosurface mode */ static final public Object MODE_TRIANGLE = "triangle strip isosurface"; /** The optimized wireframe mesh isosurface mode */ static final public Object MODE_MESH = "optimized wireframe mesh isosurface"; //}}} //{{{ Variable definitions //################################################################################################## VertexLocator locator; // provides coordinates VertexEvaluator evaluator; // provides values for vertices EdgePlotter plotter; // gets fed the edges we create final int[][] mcubes; // the lookup table final Object mode; // one of the defined MODE constants // Variables used internally during plotting operations // values of vertices double vv0 = 0, vv1 = 0, vv2 = 0, vv3 = 0, vv4 = 0, vv5 = 0, vv6 = 0, vv7 = 0; // coordinates of vertices double[] cv0 = {0,0,0}, cv1 = {0,0,0}, cv2 = {0,0,0}, cv3 = {0,0,0}, cv4 = {0,0,0}, cv5 = {0,0,0}, cv6 = {0,0,0}, cv7 = {0,0,0}; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public MarchingCubes(VertexLocator locator, VertexEvaluator evaluator, EdgePlotter plotter, Object mode) { this.locator = locator; this.evaluator = evaluator; this.plotter = plotter; this.mode = mode; if(mode == MODE_TRIANGLE) this.mcubes = TRIANGLE_STRIP; else if(mode == MODE_MESH) this.mcubes = SPARSE_VECTOR; else throw new IllegalArgumentException("Illegal mode: "+mode); } //}}} //{{{ march //################################################################################################## /** * Performs marching cubes surface generation on a rectangular subset of the data. * @param startI the starting index in x, inclusive * @param startJ the starting index in y, inclusive * @param startK the starting index in z, inclusive * @param endI the ending index in x, inclusive * @param endJ the ending index in y, inclusive * @param endK the ending index in z, inclusive * @param value the value at which to generate the isosurface */ public void march(int startI, int startJ, int startK, int endI, int endJ, int endK, double value) { int i, j, k; // loop indices // Use < instead of <= b/c at any point // we still use plotter.startIsosurface(value); for(i = startI; i < endI; i++) { for(j = startJ; j < endJ; j++) { for(k = startK; k < endK; k++) { evalCell(i, j, k, value); } } } plotter.endIsosurface(value); } /** * Performs marching cubes surface generation on a spherical subset of the data. * @param ctrI the starting index in x, inclusive * @param ctrJ the starting index in y, inclusive * @param ctrK the starting index in z, inclusive * @param radius the radius in which to render * @param value the value at which to generate the isosurface */ /*public void march(int ctrI, int ctrJ, int ctrK, double radius, double value) { int i, j, k; // loop indices plotter.startIsosurface(value); for(i = startI; i < endI; i++) { for(j = startJ; j < endJ; j++) { for(k = startK; k < endK; k++) { evalCell(i, j, k, value); } } } plotter.endIsosurface(value); }*/ //}}} //{{{ evalCell //################################################################################################## /** Performs marching cubes on one cell. */ void evalCell(int i, int j, int k, double value) { plotter.startCell(i, j, k); // Find value at each corner of the cell vv0 = evaluator.evaluateVertex(i , j , k ); vv1 = evaluator.evaluateVertex(i+1, j , k ); vv2 = evaluator.evaluateVertex(i+1, j+1, k ); vv3 = evaluator.evaluateVertex(i , j+1, k ); vv4 = evaluator.evaluateVertex(i , j , k+1); vv5 = evaluator.evaluateVertex(i+1, j , k+1); vv6 = evaluator.evaluateVertex(i+1, j+1, k+1); vv7 = evaluator.evaluateVertex(i , j+1, k+1); // If we were unable to evaluate any one vertex, skip this cell entirely. if(Double.isNaN(vv0) || Double.isNaN(vv1) || Double.isNaN(vv2) || Double.isNaN(vv3) || Double.isNaN(vv4) || Double.isNaN(vv5) || Double.isNaN(vv6) || Double.isNaN(vv7)) return; // Calculate the bitmask for the lookup table int mask = 0; if(vv0 > value) mask |= 0x01; if(vv1 > value) mask |= 0x02; if(vv2 > value) mask |= 0x04; if(vv3 > value) mask |= 0x08; if(vv4 > value) mask |= 0x10; if(vv5 > value) mask |= 0x20; if(vv6 > value) mask |= 0x40; if(vv7 > value) mask |= 0x80; // If we're 100% inside or 100% outside, there's nothing to do if(mask == 0 || mask == 0xff) { plotter.endCell(i, j, k); return; } // Otherwise, we're going to need coordinates for each corner locator.locateVertex(i , j , k , cv0); locator.locateVertex(i+1, j , k , cv1); locator.locateVertex(i+1, j+1, k , cv2); locator.locateVertex(i , j+1, k , cv3); locator.locateVertex(i , j , k+1, cv4); locator.locateVertex(i+1, j , k+1, cv5); locator.locateVertex(i+1, j+1, k+1, cv6); locator.locateVertex(i , j+1, k+1, cv7); // Now we walk the path of vertices from mcubes[][] int[] path = mcubes[mask]; int cnt = 0; int end = path.length; double[] xyz = {0,0,0}; boolean lineto = false; // debugging -- double dx = 0, dy = 0, dz = 0; for(cnt = 0; cnt < end; cnt++) { if(path[cnt] == -1) lineto = false; // -1 is the flag for a break in the polyline else { getEdge(path[cnt], value, xyz); plotter.plotEdge(xyz[0], xyz[1], xyz[2], lineto); /* debugging * / if(lineto) { dx = dx - xyz[0]; dy = dy - xyz[1]; dz = dz - xyz[2]; if(dx*dx + dy*dy + dz*dz > 8.0) SoftLog.err.println("Long edge on type "+mask+" at index "+cnt); } dx = xyz[0]; dy = xyz[1]; dz = xyz[2]; /* debugging */ lineto = true; } } // Finished! plotter.endCell(i, j, k); } //}}} //{{{ getEdge //################################################################################################## /** Calculates the coordinates of an edge intersection point, assuming vv# and cv# have been set. */ void getEdge(int edge, double value, double[] xyz) { double alpha, one_alpha; // i.e. 1 - alpha // We interpolate in x, y, and z in case the edges of the cell are // not parallel to the coordinate axes, as may be the case for elec. density. switch(edge) { case 0: // v0 to v1 alpha = (vv1 - value) / (vv1 - vv0); one_alpha = 1 - alpha; xyz[0] = alpha*cv0[0] + one_alpha*cv1[0]; xyz[1] = alpha*cv0[1] + one_alpha*cv1[1]; xyz[2] = alpha*cv0[2] + one_alpha*cv1[2]; break; case 1: // v2 to v1 alpha = (vv1 - value) / (vv1 - vv2); one_alpha = 1 - alpha; xyz[0] = alpha*cv2[0] + one_alpha*cv1[0]; xyz[1] = alpha*cv2[1] + one_alpha*cv1[1]; xyz[2] = alpha*cv2[2] + one_alpha*cv1[2]; break; case 2: // v2 to v3 alpha = (vv3 - value) / (vv3 - vv2); one_alpha = 1 - alpha; xyz[0] = alpha*cv2[0] + one_alpha*cv3[0]; xyz[1] = alpha*cv2[1] + one_alpha*cv3[1]; xyz[2] = alpha*cv2[2] + one_alpha*cv3[2]; break; case 3: // v0 to v3 alpha = (vv3 - value) / (vv3 - vv0); one_alpha = 1 - alpha; xyz[0] = alpha*cv0[0] + one_alpha*cv3[0]; xyz[1] = alpha*cv0[1] + one_alpha*cv3[1]; xyz[2] = alpha*cv0[2] + one_alpha*cv3[2]; break; case 4: // v4 to v5 alpha = (vv5 - value) / (vv5 - vv4); one_alpha = 1 - alpha; xyz[0] = alpha*cv4[0] + one_alpha*cv5[0]; xyz[1] = alpha*cv4[1] + one_alpha*cv5[1]; xyz[2] = alpha*cv4[2] + one_alpha*cv5[2]; break; case 5: // v5 to v6 alpha = (vv6 - value) / (vv6 - vv5); one_alpha = 1 - alpha; xyz[0] = alpha*cv5[0] + one_alpha*cv6[0]; xyz[1] = alpha*cv5[1] + one_alpha*cv6[1]; xyz[2] = alpha*cv5[2] + one_alpha*cv6[2]; break; case 6: // v7 to v6 alpha = (vv6 - value) / (vv6 - vv7); one_alpha = 1 - alpha; xyz[0] = alpha*cv7[0] + one_alpha*cv6[0]; xyz[1] = alpha*cv7[1] + one_alpha*cv6[1]; xyz[2] = alpha*cv7[2] + one_alpha*cv6[2]; break; case 7: // v7 to v4 alpha = (vv4 - value) / (vv4 - vv7); one_alpha = 1 - alpha; xyz[0] = alpha*cv7[0] + one_alpha*cv4[0]; xyz[1] = alpha*cv7[1] + one_alpha*cv4[1]; xyz[2] = alpha*cv7[2] + one_alpha*cv4[2]; break; case 8: // v0 to v4 alpha = (vv4 - value) / (vv4 - vv0); one_alpha = 1 - alpha; xyz[0] = alpha*cv0[0] + one_alpha*cv4[0]; xyz[1] = alpha*cv0[1] + one_alpha*cv4[1]; xyz[2] = alpha*cv0[2] + one_alpha*cv4[2]; break; case 9: // v5 to v1 alpha = (vv1 - value) / (vv1 - vv5); one_alpha = 1 - alpha; xyz[0] = alpha*cv5[0] + one_alpha*cv1[0]; xyz[1] = alpha*cv5[1] + one_alpha*cv1[1]; xyz[2] = alpha*cv5[2] + one_alpha*cv1[2]; break; case 10: // v2 to v6 alpha = (vv6 - value) / (vv6 - vv2); one_alpha = 1 - alpha; xyz[0] = alpha*cv2[0] + one_alpha*cv6[0]; xyz[1] = alpha*cv2[1] + one_alpha*cv6[1]; xyz[2] = alpha*cv2[2] + one_alpha*cv6[2]; break; case 11: // v3 to v7 alpha = (vv7 - value) / (vv7 - vv3); one_alpha = 1 - alpha; xyz[0] = alpha*cv3[0] + one_alpha*cv7[0]; xyz[1] = alpha*cv3[1] + one_alpha*cv7[1]; xyz[2] = alpha*cv3[2] + one_alpha*cv7[2]; break; default: throw new IllegalArgumentException(edge+" is not a legal edge index from 0 to 11"); } /* debugging * / if(alpha < 0.0 || alpha > 1.0 || alpha+one_alpha != 1.0) SoftLog.err.println("Bad edge!"); /* debugging */ } //}}} //{{{ getMode //################################################################################################## /** * Returns the MarchingCubes.MODE_xxx constant that this class was created with. */ public Object getMode() { return this.mode; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/isosurface/EdgePlotter.java0000644000000000000000000000745111531212750023634 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.isosurface; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * An EdgePlotter receives a series of points in 3-space from * an isosurface generating algorithm and outputs in an isosurface in some graphics format. * *

In the case of the wireframe mesh mode, the points constitute a polyline, * and the lineto flag indicates breaks in the polyline. * The first point in any polyline does not result in any drawing; * it's just an anchor referenced by the second point. * *

In the case of the triangle strip surface mode, the points constitute a strip of triangles, * and the lineto flag indicates the end of the old strip and the beginning of a new one. * In a triangle strip, a triangle is drawn among the first three points; * then points 2, 3, and 4; then points 3, 4, and 5; and so on. * The first two points in any strip therefore do not result in any drawing; * they're just anchors referenced by the third and fourth points. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Sun Feb 9 19:38:16 EST 2003 * * @see MarchingCubes */ public interface EdgePlotter //extends ... implements ... { //{{{ Constants //}}} //{{{ startIsosurface //################################################################################################## /** * Called before the isosurface generator starts plotting anything. * Gives this plotter a chance to initialize any needed data structures, streams, etc. * @param level the level for which an isosurface will be generated */ public void startIsosurface(double level); //}}} //{{{ startCell //################################################################################################## /** * Called before the isosurface generator starts each cell. * @param i the minimum x index of the current cell * @param j the minimum y index of the current cell * @param k the minimum z index of the current cell */ public void startCell(int i, int j, int k); //}}} //{{{ plotEdge //################################################################################################## /** * Called for each edge in the isosurface mesh. * @param x the x coordinate of the current point * @param y the y coordinate of the current point * @param z the z coordinate of the current point * @param lineto if true, a line should be drawn from the last point to this one. * If false, the pen should move to this point without drawing. * Guaranteed to be true for the first point in a new cell. */ public void plotEdge(double x, double y, double z, boolean lineto); //}}} //{{{ endCell //################################################################################################## /** * Called after the isosurface generator finishes each cell. * @param i the minimum x index of the current cell * @param j the minimum y index of the current cell * @param k the minimum z index of the current cell */ public void endCell(int i, int j, int k); //}}} //{{{ endIsosurface //################################################################################################## /** * Called after the isosurface generator finishes plotting everything. * Gives this plotter a chance to release memory, close streams, etc. * @param level the level for which an isosurface will be generated */ public void endIsosurface(double level); //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/isosurface/VertexEvaluator.java0000644000000000000000000000330711531212750024552 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.isosurface; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * A VertexEvaluator is responsible for delivering the scalar value v * for any legal vertex <i, j, k>. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Sun Feb 9 17:19:20 EST 2003 */ public interface VertexEvaluator //extends ... implements ... { //{{{ Constants //}}} //{{{ evaluateVertex //################################################################################################## /** * Returns a scalar value v for legal vertex. If the indices are * meaningful but no value is available, this function should return * NaN rather than throwing an exception. An IndexOutOfBoundsException * should be thrown in cases where the indices are not meaningful, which * usually corresponds to conditions where VertexLocator.locateVertex() * would also throw an exception. * @param i the x index of the vertex to be evaluated * @param j the y index of the vertex to be evaluated * @param k the z index of the vertex to be evaluated * @return the value at the specified vertex, * or NaN if the value can't be calculated for a legal vertex * @throws IndexOutOfBoundsException if no such vertex exists */ public double evaluateVertex(int i, int j, int k); //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/isosurface/Ccp4VertexSource.java0000644000000000000000000002205611531212750024564 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.isosurface; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * Ccp4VertexSource manages vertex information built * from electron density maps in CCP4's native format. * The class only supports type 2 [image, real (floating-point) numbers] maps. * It also ignores skew operations, symmetry operators, and all comments. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Jul 17 10:41:33 EDT 2003 */ public class Ccp4VertexSource extends CrystalVertexSource { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## DataInputStream in; // the source of data float[] data = null; // holds the data we read in from the file boolean littleEndian = false; /** * A mapping from CCP4's idea of columns (fast), rows, and sections (slow) * to the x, y, and z axes. (Actually, the a, b, and c axes.) * Array keys are 0, 1, or 2 for X, Y, or Z (A, B, or C). * Array values are 0, 1, or 2 for columns, rows, or sections. */ int[] idx = new int[3]; /** The inverse of idx */ int[] crs = new int[3]; //}}} //{{{ Constructor(s) //############################################################################## /** * Creates a new VertexSource based on a crystallographic map file. * All data will be read in. * @param in the source of map data * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ public Ccp4VertexSource(InputStream in) throws IOException { this(in, true); } /** * Creates a new VertexSource based on a crystallographic map file. * @param in the source of map data * @param readData if false, only header info will be read * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ public Ccp4VertexSource(InputStream in, boolean readData) throws IOException { // Auto-detect a gzipped input stream in = new BufferedInputStream(in); in.mark(10); if(in.read() == 31 && in.read() == 139) { // We've found the gzip magic numbers... in.reset(); in = new java.util.zip.GZIPInputStream(in); } else in.reset(); // Now cast it as a DataInputStream this.in = new DataInputStream(in); super.init(readData); } //}}} //{{{ readHeader //################################################################################################## /** * Decodes information from the map header. * In particular, this method should fill in all the unit cell parameters. * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ void readHeader() throws IOException { byte[] header = new byte[1024]; in.readFully(header); // This must be set before getInt() is called!! littleEndian = (header[0] != 0); if(getInt(header, 4) != 2) throw new IllegalArgumentException("Bad map data type: only mode 2 is supported"); if(header[208] != 'M' || header[209] != 'A' || header[210] != 'P' || header[211] != ' ') throw new IllegalArgumentException("Bad map format: 'MAP ' missing at word #53"); // See variable definitions for an explanation crs[0] = getInt(header, 17)-1; crs[1] = getInt(header, 18)-1; crs[2] = getInt(header, 19)-1; idx[ crs[0] ] = 0; idx[ crs[1] ] = 1; idx[ crs[2] ] = 2; // Dimensions in terms of indexes aCount = getInt(header, 1+idx[0]); aMin = getInt(header, 5+idx[0]); aMax = aMin + aCount - 1; aSteps = getInt(header, 8); bCount = getInt(header, 1+idx[1]); bMin = getInt(header, 5+idx[1]); bMax = bMin + bCount - 1; bSteps = getInt(header, 9); cCount = getInt(header, 1+idx[2]); cMin = getInt(header, 5+idx[2]); cMax = cMin + cCount - 1; cSteps = getInt(header, 10); // Unit cell dimensions aLength = Float.intBitsToFloat( getInt(header, 11) ); bLength = Float.intBitsToFloat( getInt(header, 12) ); cLength = Float.intBitsToFloat( getInt(header, 13) ); alpha = Float.intBitsToFloat( getInt(header, 14) ); beta = Float.intBitsToFloat( getInt(header, 15) ); gamma = Float.intBitsToFloat( getInt(header, 16) ); // Map statistics mean = Float.intBitsToFloat( getInt(header, 22) ); sigma = Float.intBitsToFloat( getInt(header, 55) ); // Skip all symmetry records int symBytes = getInt(header, 24); while(symBytes > 0) symBytes -= in.skip(symBytes); } //}}} //{{{ getInt //############################################################################## /** * Returns an int constructed from 4 bytes. * @param bytes the source of data * @param index which integer to use; numbering starts at 1 */ protected int getInt(byte[] bytes, int index) { index = 4*(index-1); if(littleEndian) { return (((bytes[index+3] & 0xFF) << 24) | ((bytes[index+2] & 0xFF) << 16) | ((bytes[index+1] & 0xFF) << 8) | ((bytes[ index ] & 0xFF))); } else { return (((bytes[ index ] & 0xFF) << 24) | ((bytes[index+1] & 0xFF) << 16) | ((bytes[index+2] & 0xFF) << 8) | ((bytes[index+3] & 0xFF))); } } /** Flips the byte order if needed */ protected int getInt(int i) { if(littleEndian) { return (((i & 0x000000FF) << 24) | ((i & 0x0000FF00) << 8) | ((i & 0x00FF0000) >>> 8) | ((i & 0xFF000000) >>> 24)); } else return i; } //}}} //{{{ readData //################################################################################################## /** * Decodes the body of a map file (i.e. density values for all grid points) and stores it in * memory. Assumes readHeader has already been called. * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ void readData() throws IOException { // Allocate memory for the table... data = new float[ aCount*bCount*cCount ]; int[] cnt = new int[3]; // col, row, seg int[] limit = new int[3]; limit[ idx[0] ] = aCount; limit[ idx[1] ] = bCount; limit[ idx[2] ] = cCount; for(cnt[2] = 0; cnt[2] < limit[2]; cnt[2]++) { for(cnt[1] = 0; cnt[1] < limit[1]; cnt[1]++) { for(cnt[0] = 0; cnt[0] < limit[0]; cnt[0]++) { float value = Float.intBitsToFloat(getInt(in.readInt())); setValue( cnt[idx[0]], cnt[idx[1]], cnt[idx[2]], value); } } } // For consistency with OMap and Xplor SoftLog.err.println("map header : mean = "+mean+"; sigma = "+sigma); } //}}} //{{{ hasData //################################################################################################## /** * Returns true iff density data was read in at the time of creation. */ public boolean hasData() { return (data != null); } //}}} //{{{ get/setValue //################################################################################################## /** * Returns the value at the specified grid point, * where the indexes i, j, and k have been adjusted * to start from 0 (i.e. i==0 means aMin, j==1 means bMin+1, etc.) */ public double getValue(int i, int j, int k) { return (double)data[ i + j*aCount + k*aCount*bCount ]; } /** * Sets the value at the specified grid point, * where the indexes i, j, and k have been adjusted * to start from 0 (i.e. i==0 means aMin, j==1 means bMin+1, etc.) */ protected void setValue(int i, int j, int k, double d) { data[ i + j*aCount + k*aCount*bCount ] = (float)d; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/isosurface/KinfileEdgePlotter.java0000644000000000000000000001143011531212750025126 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.isosurface; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * KinfileEdgePlotter writes mesh isosurface edges to * a text-format kinemage file. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Feb 10 09:56:18 EST 2003 */ public class KinfileEdgePlotter implements EdgePlotter { //{{{ Constants static DecimalFormat df4 = driftwood.util.Strings.usDecimalFormat("0.####"); static DecimalFormat dfe4 = driftwood.util.Strings.usDecimalFormat("0.####E0"); //}}} //{{{ Variable definitions //################################################################################################## PrintStream out; // Attributes that can be get/set: String color = "cyan"; int width = 1; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public KinfileEdgePlotter(OutputStream os) { out = new PrintStream(os); } //}}} //{{{ startIsosurface //################################################################################################## /** * Called before the isosurface generator starts plotting anything. * Gives this plotter a chance to initialize any needed data structures, streams, etc. * @param level the level for which an isosurface will be generated */ public void startIsosurface(double level) { out.println("@group {mesh @ "+format(level)+"} dominant"); out.println("@vectorlist {x} color= "+color+" width= "+width); } //}}} //{{{ startCell //################################################################################################## /** * Called before the isosurface generator starts each cell. * @param i the minimum x index of the current cell * @param j the minimum y index of the current cell * @param k the minimum z index of the current cell */ public void startCell(int i, int j, int k) { } //}}} //{{{ plotEdge //################################################################################################## /** * Called for each edge in the isosurface mesh. * @param x the x coordinate of the current point * @param y the y coordinate of the current point * @param z the z coordinate of the current point * @param lineto if true, a line should be drawn from the last point to this one. * if false, the pen should move to this point without drawing. */ public void plotEdge(double x, double y, double z, boolean lineto) { if(lineto) out.println("{x} " +format(x)+" "+format(y)+" "+format(z)); else out.println("{x}P "+format(x)+" "+format(y)+" "+format(z)); } //}}} //{{{ endCell //################################################################################################## /** * Called after the isosurface generator finishes each cell. * @param i the minimum x index of the current cell * @param j the minimum y index of the current cell * @param k the minimum z index of the current cell */ public void endCell(int i, int j, int k) { } //}}} //{{{ endIsosurface //################################################################################################## /** * Called after the isosurface generator finishes plotting everything. * Gives this plotter a chance to release memory, close streams, etc. * @param level the level for which an isosurface will be generated */ public void endIsosurface(double level) { out.flush(); } //}}} //{{{ format //################################################################################################## String format(double d) { return df4.format(d); //if(d < 1.0) return dfe4.format(d); //else return df4.format(d); } //}}} //{{{ get/setColor, get/setWidth //################################################################################################## public String getColor() { return color; } public void setColor(String color) { this.color = color; } public int getWidth() { return width; } public void setWidth(int w) { if(w < 1) w = 1; else if(w > 7) w = 7; width = w; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/isosurface/LowResolutionVertexSource.java0000644000000000000000000001102011531212750026605 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.isosurface; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * LowResolutionVertexSource decreases the number of (visible) sample * points in an electron density map by half, one third, etc. along each dimension. * This is a crude way to make a coarser mesh. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Mon Apr 11 13:51:35 EDT 2005 */ public class LowResolutionVertexSource implements VertexEvaluator, VertexLocator { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## final CrystalVertexSource map; final int divisor; final double[] cell = new double[3]; //}}} //{{{ Constructor(s) //############################################################################## /** * Create a new, lower-resolution vertex source from an existing one. * @param divisor the sampling interval to use along each dimension, * typically 2 or 3. */ public LowResolutionVertexSource(CrystalVertexSource map, int divisor) { super(); this.map = map; this.divisor = divisor; } //}}} //{{{ evaluateVertex //################################################################################################## /** * Returns a scalar value v for legal vertex. If the indices are * meaningful but no value is available, this function should return * NaN rather than throwing an exception. An IndexOutOfBoundsException * should be thrown in cases where the indices are not meaningful, which * usually corresponds to conditions where VertexLocator.locateVertex() * would also throw an exception. * @param i the x index of the vertex to be evaluated * @param j the y index of the vertex to be evaluated * @param k the z index of the vertex to be evaluated * @return the value at the specified vertex, * or NaN if the value can't be calculated for a legal vertex * @throws IndexOutOfBoundsException if no such vertex exists */ public double evaluateVertex(int i, int j, int k) { return map.evaluateVertex(i*divisor, j*divisor, k*divisor); } //}}} //{{{ locateVertex //################################################################################################## /** * Translates the indices of a vertex, <i, j, k>, * to a location in 3-space, <x, y, z>. * @param i the x index of the vertex to be found * @param j the y index of the vertex to be found * @param k the z index of the vertex to be found * @param xyz a double[3] to be filled with the coordinates of the vertex * @throws IndexOutOfBoundsException if no such vertex exists */ public void locateVertex(int i, int j, int k, double[] xyz) { map.locateVertex(i*divisor, j*divisor, k*divisor, xyz); } //}}} //{{{ findVertexForPoint //################################################################################################## /** * Returns the indices of the vertex "nearest" some point <x,y,z> (optional operation). * The meaning of "nearest" is up to the implementation, but typically this operation is * the inverse of locateVertex() for all points; i.e., xyz == locateVertex(findVertexForPoint(xyz)). * @param x the x coordinate in the Cartesian system * @param y the x coordinate in the Cartesian system * @param z the x coordinate in the Cartesian system * @param ijk an int[3] to be filled with the indices of the vertex * @throws IndexOutOfBoundsException if no suitable vertex exists * @throws UnsupportedOperationException if this operation is not supported by the implementor */ public void findVertexForPoint(double x, double y, double z, int[] ijk) { // Load cell with x,y,z expressed in unit cell coordinates map.findVertexForPoint(x, y, z, this.cell); // Convert to nearest whole number after dividing to coarser grid ijk[0] = (int) Math.round(cell[0] / divisor); ijk[1] = (int) Math.round(cell[1] / divisor); ijk[2] = (int) Math.round(cell[2] / divisor); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/isosurface/OMapVertexSource.java0000644000000000000000000004050011531212750024621 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.isosurface; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * OMapVertexSource manages vertex information built * from a binary format "O" map files. * Older O maps are in the DSN6 format, which has a binary header * and some byte swapping issues. Newer maps are in the Brix format, * which is very similar, but has an ASCII header and the map data * isn't byte-swapped. This class auto-detects which of the two * formats is in use and reads either one. It can also detect and * unzip map files that have been compressed with gzip. * * *

DSN6 files

* * DSN6 files have a 512 byte header of 256 signed, big-endian, * 2-byte integers (i.e. Java shorts), most of which are unassigned. * The data is structured such that there are two nested levels of * grid, with Z slow, Y medium, and X fast. The large grid blocks * are 512 byte bricks of 8x8x8 unsigned byte values. * *

Every brick is 8x8x8, even the ones "at the ends" that have less * than 8x8x8 of data. For example a brick that has 4x7x5 in data * is padded out to 8x8x8, with meaningless data in the other 4 samples * along x, the other 1 along y, and the other 3 along z. It would * make sense to set these to zero, but as far as I can tell, this is * not done by most programs. * *

The catch: every PAIR of bytes in the density bricks is transposed, * so the x indices are NOT 0, 1, 2, 3, 4, 5, 6, 7; but instead are * 1, 0, 3, 2, 5, 4, 7, 6. This is due to the same endian-ism issue that * affects the header. If I ever get a hold of the sick bastard * who decided this was a good format... ! * *

The translation from byte values to density values is by this equation: * byte_val = prod*density_val + plus * *

Equivalently, * density_val = (byte_val - plus) / prod * *

"Plus" and "prod" are scaling factors derived from the header block. * * *

BRIX files

* * Brix files have a 512-byte ASCII header that begins with a smiley: ":-)" * (without the quote marks). This is then followed by self-descriptive * data for the unit cell parameters, prod and plus, etc. The end of useful * data *should* be marked with a formfeed character, but this isn't reliable. * The remainder of the 512 bytes may be padded with spaces (but I don't think it's required). * * The data is stored in 512 byte bricks, just as for DSN6 files. However, * bytes are written out in the order that a normal human would have choosen, * i.e., not transposed. * * *

References

* No source on the web is completely correct, but PARTIAL details are available at *
    *
  • http://www.uoxray.uoregon.edu/tnt/manual/node104.html
  • *
  • http://zombie.imsb.au.dk/~mok/brix/brix-1.html
  • *
  • http://www.imsb.au.dk/~mok/o/o_man/node305.html#SECTION001020000000000000000
  • *
  • The getcube() method in sftools.f from the CCP4 project. This is how I figured out the * byte-swapping issue, finally.
  • *
* * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Feb 10 14:34:41 EST 2003 */ public class OMapVertexSource extends CrystalVertexSource { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## DataInputStream in; // the source of data byte[] data = null; // holds the data we read in from the file double prod, plus; // scale factors used by the format boolean bytesTransposed; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new VertexSource based on a crystallographic map file. * All data will be read in. * @param in the source of map data * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ public OMapVertexSource(InputStream in) throws IOException { this(in, true); } /** * Creates a new VertexSource based on a crystallographic map file. * @param in the source of map data * @param readData if false, only header info will be read * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ public OMapVertexSource(InputStream in, boolean readData) throws IOException { // Auto-detect a gzipped input stream in = new BufferedInputStream(in); in.mark(10); if(in.read() == 31 && in.read() == 139) { // We've found the gzip magic numbers... in.reset(); // We have to double buffer this because of a bug // in GZIPInputStream.mark() in = new BufferedInputStream(new java.util.zip.GZIPInputStream(in)); } else in.reset(); // Check for Brix format in.mark(10); bytesTransposed = !(in.read() == ':' && in.read() == '-' && in.read() == ')' && in.read() == ' '); in.reset(); // Now cast it as a DataInputStream this.in = new DataInputStream(in); super.init(readData); } //}}} //{{{ readHeader //################################################################################################## /** * Decodes information from the map header. * In particular, this method should fill in all the unit cell parameters. * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ void readHeader() throws IOException { int i; String s; if(bytesTransposed) // DSN6 { int[] header = new int[256]; for(i = 0; i < header.length; i++) header[i] = in.readShort(); aMin = header[0]; bMin = header[1]; cMin = header[2]; aCount = header[3]; bCount = header[4]; cCount = header[5]; aMax = aMin + aCount - 1; bMax = bMin + bCount - 1; cMax = cMin + cCount - 1; aSteps = header[6]; bSteps = header[7]; cSteps = header[8]; // scale factors used by DSN6 format double s16, s17, s18, s19; s16 = header[15]; s17 = header[16]; s18 = header[17]; s19 = header[18]; prod = s16 / s19; plus = s17; aLength = header[9] / s18; bLength = header[10] / s18; cLength = header[11] / s18; alpha = header[12] / s18; beta = header[13] / s18; gamma = header[14] / s18; } else // BRIX { try { char[] header = new char[512]; for(i = 0; i < header.length; i++) header[i] = (char)in.read(); for(i = 0; i < header.length && header[i] != '\f'; i++) {} StringTokenizer tok = new StringTokenizer(new String(header, 0, i)); if(! tok.nextToken().equals(":-)")) throw new IllegalArgumentException("Missing smiley"); if(! tok.nextToken().equalsIgnoreCase("origin")) throw new IllegalArgumentException("Parameters out of order"); aMin = Integer.parseInt(tok.nextToken()); bMin = Integer.parseInt(tok.nextToken()); cMin = Integer.parseInt(tok.nextToken()); if(! tok.nextToken().equalsIgnoreCase("extent")) throw new IllegalArgumentException("Parameters out of order"); aCount = Integer.parseInt(tok.nextToken()); bCount = Integer.parseInt(tok.nextToken()); cCount = Integer.parseInt(tok.nextToken()); aMax = aMin + aCount - 1; bMax = bMin + bCount - 1; cMax = cMin + cCount - 1; if(! tok.nextToken().equalsIgnoreCase("grid")) throw new IllegalArgumentException("Parameters out of order"); aSteps = Integer.parseInt(tok.nextToken()); bSteps = Integer.parseInt(tok.nextToken()); cSteps = Integer.parseInt(tok.nextToken()); if(! tok.nextToken().equalsIgnoreCase("cell")) throw new IllegalArgumentException("Parameters out of order"); aLength = Double.parseDouble(tok.nextToken()); bLength = Double.parseDouble(tok.nextToken()); cLength = Double.parseDouble(tok.nextToken()); alpha = Double.parseDouble(tok.nextToken()); beta = Double.parseDouble(tok.nextToken()); gamma = Double.parseDouble(tok.nextToken()); if(! tok.nextToken().equalsIgnoreCase("prod")) throw new IllegalArgumentException("Parameters out of order"); prod = Double.parseDouble(tok.nextToken()); if(! tok.nextToken().equalsIgnoreCase("plus")) throw new IllegalArgumentException("Parameters out of order"); plus = Double.parseDouble(tok.nextToken()); if(! tok.nextToken().equalsIgnoreCase("sigma")) throw new IllegalArgumentException("Parameters out of order"); sigma = Double.parseDouble(tok.nextToken()); mean = 0; // always has mean of 0? } catch(NumberFormatException ex) { throw new IllegalArgumentException("Bad number: "+ex.getMessage()); } } } //}}} //{{{ readData //################################################################################################## /** * Decodes the body of a map file (i.e. density values for all grid points) and stores it in * memory. Assumes readHeader has already been called. * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ void readData() throws IOException { int ii, jj, kk; try { // Allocate memory for the table... data = new byte[ aCount*bCount*cCount ]; if(bytesTransposed) // DSN6 { // X fast, Y medium, Z slow for(kk = 0; kk < cCount; kk += 8) { for(jj = 0; jj < bCount; jj += 8) { for(ii = 0; ii < aCount; ii += 8) { readBrickSwapped(ii, jj, kk); } } } } else // BRIX { // X fast, Y medium, Z slow for(kk = 0; kk < cCount; kk += 8) { for(jj = 0; jj < bCount; jj += 8) { for(ii = 0; ii < aCount; ii += 8) { readBrickNotSwapped(ii, jj, kk); } } } } } catch(OutOfMemoryError er) { throw new IllegalArgumentException("Not enough memory: probably not a DSN6 map"); } // Take our best guess at the mean and sigma double oldMean = mean; double oldSigma = sigma; calcMeanAndSigma(); SoftLog.err.println("calculated : mean = "+mean+"; sigma = "+sigma); // We don't divide by mean b/c oldMean == 0 if(Math.abs(mean-oldMean) < 0.05 && Math.abs((sigma-oldSigma)/sigma) < 0.05) { mean = 0; sigma = oldSigma; SoftLog.err.println("close enough: mean = "+mean+"; sigma = "+sigma); } } //}}} //{{{ readBrickSwapped //################################################################################################## /** * Decodes one brick from a DSN6 file. Bricks must be decoded in sequence; no random access is done. * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ void readBrickSwapped(int ii, int jj, int kk) throws IOException { int i, j, k; // X fast, Y medium, Z slow for(k = 0; k < 8; k++) { for(j = 0; j < 8; j++) { for(i = 0; i < 8; i += 2) { // Every pair of bytes is swapped! setValue(ii+i+1, jj+j, kk+k, in.read()); setValue(ii+i, jj+j, kk+k, in.read()); } } } } //}}} //{{{ readBrickNotSwapped //################################################################################################## /** * Decodes one brick from a DSN6 file. Bricks must be decoded in sequence; no random access is done. * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ void readBrickNotSwapped(int ii, int jj, int kk) throws IOException { int i, j, k; // X fast, Y medium, Z slow for(k = 0; k < 8; k++) { for(j = 0; j < 8; j++) { for(i = 0; i < 8; i++) setValue(ii+i, jj+j, kk+k, in.read()); } } } //}}} //{{{ hasData //################################################################################################## /** * Returns true iff density data was read in at the time of creation. */ public boolean hasData() { return (data != null); } //}}} //{{{ calcMeanAndSigma //################################################################################################## /** * Determines the mean and standard deviation for the data set. */ void calcMeanAndSigma() { int i; double d; long m = 0; for(i = 0; i < data.length; i++) m += (data[i] & 0xff); mean =((double)m / (double)data.length - plus) / prod; sigma = 0.0; for(i = 0; i < data.length; i++) { d = mean - (((data[i] & 0xff) - plus) / prod); sigma += d*d; } sigma = Math.sqrt(sigma/data.length); } //}}} //{{{ getValue //################################################################################################## /** * Returns the value at the specified grid point, * where the indexes i, j, and k have been adjusted * to start from 0 (i.e. i==0 means aMin, j==1 means bMin+1, etc.) */ public double getValue(int i, int j, int k) { // & 0xff is the magic spell to treat a byte as unsigned int r = (data[ i + j*aCount + k*aCount*bCount ] & 0xff); return (r - plus) / prod; } //}}} //{{{ setValue //################################################################################################## /** * Assigns the value at the specified grid point, * where the indexes i, j, and k have been adjusted * to start from 0 (i.e. i==0 means aMin, j==1 means bMin+1, etc.) * * If indices are out of range, this function has no effect. */ void setValue(int i, int j, int k, int val) throws EOFException { if(val == -1) throw new EOFException("Premature end of file"); //else if(val < 0 || val > 255) SoftLog.err.println("Byte value out of range ("+val+")"); else if(i * http://www.ocms.ox.ac.uk/mirrored/xplor/manual/htmlman/htmlman.html. * This class can auto-detect a gzipped X-PLOR file and unzip it * internally on the fly. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Feb 10 14:34:41 EST 2003 */ public class XplorVertexSource extends CrystalVertexSource { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## LineNumberReader in; // the source of data StringBuffer comments = new StringBuffer(); float[] data = null; // holds the data we read in from the file // Used by nextValue(): float[] nvQueue = new float[6]; int nvCount = 0; int nvFront = 0; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new VertexSource based on a crystallographic map file. * All data will be read in. * @param in the source of map data * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ public XplorVertexSource(InputStream in) throws IOException { this(in, true); } /** * Creates a new VertexSource based on a crystallographic map file. * @param in the source of map data * @param readData if false, only header info will be read * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ public XplorVertexSource(InputStream in, boolean readData) throws IOException { // Auto-detect a gzipped input stream in = new BufferedInputStream(in); in.mark(10); if(in.read() == 31 && in.read() == 139) { // We've found the gzip magic numbers... in.reset(); in = new java.util.zip.GZIPInputStream(in); } else in.reset(); // Now cast it as a Reader (double buffered now, but that's OK) this.in = new LineNumberReader(new InputStreamReader(in)); super.init(readData); } //}}} //{{{ readHeader //################################################################################################## /** * Decodes information from the map header. * In particular, this method should fill in all the unit cell parameters. * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ void readHeader() throws IOException { try { String s; StringTokenizer tok; // Deal with leading comments while((s = in.readLine().trim()).equals("")); // skip blank lines tok = new StringTokenizer(s); int nComments = Integer.parseInt(tok.nextToken()); for(int i = 0; i < nComments; i++) comments.append(in.readLine().trim()); // Dimensions in terms of indexes tok = new StringTokenizer(in.readLine()); aSteps = Integer.parseInt(tok.nextToken()); aMin = Integer.parseInt(tok.nextToken()); aMax = Integer.parseInt(tok.nextToken()); aCount = aMax - aMin + 1; bSteps = Integer.parseInt(tok.nextToken()); bMin = Integer.parseInt(tok.nextToken()); bMax = Integer.parseInt(tok.nextToken()); bCount = bMax - bMin + 1; cSteps = Integer.parseInt(tok.nextToken()); cMin = Integer.parseInt(tok.nextToken()); cMax = Integer.parseInt(tok.nextToken()); cCount = cMax - cMin + 1; // Unit cell dimensions aLength = nextValue(); bLength = nextValue(); cLength = nextValue(); alpha = nextValue(); beta = nextValue(); gamma = nextValue(); // This should read 'ZYX' if(!in.readLine().trim().equalsIgnoreCase("ZYX")) throw new IllegalArgumentException("Bad format -- not a ZYX file"); } catch(NumberFormatException ex) { throw new IllegalArgumentException("Bad number: "+ex.getMessage()); } } //}}} //{{{ readData //################################################################################################## /** * Decodes the body of a map file (i.e. density values for all grid points) and stores it in * memory. Assumes readHeader has already been called. * @throws IOException if there's an I/O error or premature end of file * @throws IllegalArgumentException if the file format is corrupt */ void readData() throws IOException { try { int i; // Allocate memory for the table... data = new float[ aCount*bCount*cCount ]; for(i = 0; i < data.length; i++) { data[i] = nextValue(); } } catch(NumberFormatException ex) { throw new IllegalArgumentException("Bad number: "+ex.getMessage()); } // Take our best guess at the mean and sigma double oldMean = mean; double oldSigma = sigma; calcMeanAndSigma(); SoftLog.err.println("calculated : mean = "+mean+"; sigma = "+sigma); // We don't divide by mean b/c oldMean == 0 if(Math.abs(mean-oldMean) < 0.05 && Math.abs((sigma-oldSigma)/sigma) < 0.05) { mean = 0; sigma = oldSigma; SoftLog.err.println("close enough: mean = "+mean+"; sigma = "+sigma); } } //}}} //{{{ nextValue //################################################################################################## /** Reads the next ASCII formatted value from the regularly spaced section of the X-PLOR file. */ float nextValue() throws IOException, NumberFormatException { // refill if(nvCount <= nvFront) { // Skip ksect lines String s; while(true) { s = in.readLine(); if(s == null) throw new EOFException("Unexpected EOF in X-PLOR file at line "+in.getLineNumber()); else if(s.charAt(2) != '.' || s.length() < 12) {}//SoftLog.err.println("Skipping ksect line: '"+s+"'"); else break; } // read up to 6 values from this line for(nvCount = nvFront = 0; nvCount < 6 && 12*(nvCount+1) <= s.length(); nvCount++) { nvQueue[nvCount] = Float.parseFloat(s.substring(12*nvCount, 12*(nvCount+1))); } // if we still don't have any numbers, throw an exception if(nvCount <= nvFront) throw new IOException("Can't read any more numbers from X-PLOR file (line "+in.getLineNumber()+")"); } return nvQueue[nvFront++]; } //}}} //{{{ hasData //################################################################################################## /** * Returns true iff density data was read in at the time of creation. */ public boolean hasData() { return (data != null); } //}}} //{{{ calcMeanAndSigma //################################################################################################## /** * Determines the mean and standard deviation for the data set. */ void calcMeanAndSigma() { int i; double d; mean = 0.0; for(i = 0; i < data.length; i++) { mean += data[i]; } mean /= data.length; sigma = 0.0; for(i = 0; i < data.length; i++) { d = mean - data[i]; sigma += d*d; } sigma = Math.sqrt(sigma/data.length); } //}}} //{{{ getValue //################################################################################################## /** * Returns the value at the specified grid point, * where the indexes i, j, and k have been adjusted * to start from 0 (i.e. i==0 means aMin, j==1 means bMin+1, etc.) */ public double getValue(int i, int j, int k) { return (double)data[ i + j*aCount + k*aCount*bCount ]; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/isosurface/VertexLocator.java0000644000000000000000000000452711531212750024220 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.isosurface; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * A VertexLocator is responsible for translating the indices of a vertex, * <i, j, k>, to a location in 3-space, <x, y, z>. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Sun Feb 9 17:19:20 EST 2003 */ public interface VertexLocator //extends ... implements ... { //{{{ Constants //}}} //{{{ locateVertex //################################################################################################## /** * Translates the indices of a vertex, <i, j, k>, * to a location in 3-space, <x, y, z>. * @param i the x index of the vertex to be found * @param j the y index of the vertex to be found * @param k the z index of the vertex to be found * @param xyz a double[3] to be filled with the coordinates of the vertex * @throws IndexOutOfBoundsException if no such vertex exists */ public void locateVertex(int i, int j, int k, double[] xyz); //}}} //{{{ findVertexForPoint //################################################################################################## /** * Returns the indices of the vertex "nearest" some point <x,y,z> (optional operation). * The meaning of "nearest" is up to the implementation, but typically this operation is * the inverse of locateVertex() for all points; i.e., xyz == locateVertex(findVertexForPoint(xyz)). * @param x the x coordinate in the Cartesian system * @param y the x coordinate in the Cartesian system * @param z the x coordinate in the Cartesian system * @param ijk an int[3] to be filled with the indices of the vertex * @throws IndexOutOfBoundsException if no suitable vertex exists * @throws UnsupportedOperationException if this operation is not supported by the implementor */ public void findVertexForPoint(double x, double y, double z, int[] ijk); //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/util/0000755000000000000000000000000011744306102017357 5ustar rootrootking-2.21.120420/driftwood/src/driftwood/util/ReflectiveRunnable.java0000644000000000000000000000364111531212760024005 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.util; //import java.awt.*; //import java.io.*; import java.lang.reflect.*; //import java.text.*; //import java.util.*; //import javax.swing.*; //}}} /** * ReflectiveRunnable uses the Reflection API to redirect calls to run() to any method in any class. * It operates much like ReflectiveAction. * This is also known (apparently) as a trampoline, because it bounces you from one method to another. * I got the idea and most of the implementation from http://java.sun.com/docs/books/performance/ * *

Begun on Wed Jun 12 09:33:00 EDT 2002 *
Copyright (C) 2002-2007 by Ian W. Davis. All rights reserved. */ public class ReflectiveRunnable implements Runnable { //{{{ Static fields //}}} //{{{ Variable definitions //################################################################################################## Object targetObject; String methodName; //}}} //{{{ Constructors //################################################################################################## /** * Creates a run()-redirector. * @param target the object to receive the function call * @param method the name of the method to call; method must be declared as public void some_method(). */ public ReflectiveRunnable(Object target, String method) { targetObject = target; methodName = method; } //}}} //{{{ run() //################################################################################################## public void run() { try { Class[] formalParams = { }; Method m = targetObject.getClass().getMethod(methodName, formalParams); Object[] params = { }; m.invoke(targetObject, params); } catch(Exception ex) { ex.printStackTrace(SoftLog.err); } } //}}} }//class king-2.21.120420/driftwood/src/driftwood/util/ProcessTank.java0000644000000000000000000002146411531212760022465 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.util; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * ProcessTank is intended to make reading data from * the standard output and standard error of external processes * easier and more robust. The idea is for ProcessTank to accumulate * all the output over the course of the process, storing it in * internal buffers. After the process has finished, the Java code * can read and process data at its leisure, without worrying about * deadlock caused by full buffers. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Fri May 16 18:51:18 EDT 2003 */ public class ProcessTank //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## Process process; StreamTank outTank; StreamTank errTank; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor. * @param comingle if true, stdout and stderr will be "interleaved" into * the same holding tank. The time granularity of this operation is not * well defined, and may not produce the expected results (reliably). * Defaults to false. */ public ProcessTank(boolean comingle) { outTank = new StreamTank(); if(comingle) errTank = outTank; else errTank = new StreamTank(); } public ProcessTank() { this(false); } //}}} //{{{ fillTank //################################################################################################## /** * Allows the process to run until it has no more data available * and the process has terminated (or a timeout has expired). * Output is collected and stored in byte buffers which can later * be retrieved. * * @param process the Process object from which to fill the tank * @param timeout the timeout for the process, in milliseconds. * The process will be given at least timeout millis to terminate normally. * The countdown timer is reset everytime the program produces output. * Defaults to 0 (no timeout criterion will be applied). * @param killRunaway if a timeout was specified, should a Process * that has timed out be forcibly terminated (destroy()ed)? Defaults to true. * @return true if the process exited on its own; false if it was killed forcibly. */ public boolean fillTank(Process process, long timeout, boolean killRunaway) throws IOException { long enterTime, exitTime, lastReadTime, lastExitCheckTime; long loopStartTime, loopTotalTime = 0; int outReadCount = 0, errReadCount = 0, exitCheckCount = 0; InputStream outStream = process.getInputStream(); InputStream errStream = process.getErrorStream(); int outAvail, errAvail; byte[] buffer = new byte[32*1024]; boolean finished = false; boolean returnCode = true; // assume normal termination enterTime = lastReadTime = lastExitCheckTime = System.currentTimeMillis(); while(!finished) { //loopStartTime = System.currentTimeMillis(); // From a Java Tech tip in July 2005 that deals w/ Runtime.exec(): // "A word of caution about the examples in this tip. It is possible // that the examples will deadlock if the subprocess generates enough // output to overflow the system. A more robust solution requires // draining the process stdout and stderr in separate threads. // Try reading from stdout (without blocking) outAvail = outStream.available(); if(outAvail > 0) { outAvail = outStream.read(buffer, 0, Math.min(buffer.length, outAvail)); outTank.write(buffer, 0, outAvail); //System.err.println(" Read+stored "+outAvail+" bytes"); outReadCount++; } // Try reading from stderr (without blocking) errAvail = errStream.available(); if(errAvail > 0) { errAvail = errStream.read(buffer, 0, Math.min(buffer.length, errAvail)); errTank.write(buffer, 0, errAvail); errReadCount++; } // If no data was read in this pass, try checking the exit code of the process. // This will throw an exception if the process is still running. // Thus we check the exit code a maximum of once every 50 ms, to avoid swamping the system. long currTime = System.currentTimeMillis(); long sinceLastExitCheck = currTime - lastExitCheckTime; if(outAvail <= 0 && errAvail <= 0) { if(sinceLastExitCheck >= 50) { try { lastExitCheckTime = currTime; exitCheckCount++; process.exitValue(); // may throw ITSEx finished = true; } catch(IllegalThreadStateException ex) { // Check for timeout condition -- timeout set, data read, and enough time elapsed long sinceLastRead = currTime - lastReadTime; if(timeout > 0 && sinceLastRead > timeout) { finished = true; if(killRunaway) process.destroy(); returnCode = false; // abnormal termination break; } }//try-catch(check exit code) } else // No data read this pass, but we checked the exit code recently. { // Sleep for a while and try again later. // Sleep for a short time in case reads are small: // Mac OS X will only give us 4096 bytes at a time. // // ACTUALLY, it's much more efficient to just Thread.yield(). // However, not doing either one is the least efficient. // //try { Thread.sleep(2); } //catch(InterruptedException ex) {} } } else // Data was read this pass; keep working { lastReadTime = currTime; } //loopTotalTime += (System.currentTimeMillis() - loopStartTime); // Play nice and let other threads run. // This may matter if the process isn't running // asynchronously alongside the Java code. Thread.yield(); }//while(not finished) exitTime = System.currentTimeMillis(); //System.err.println(loopTotalTime+" ms inside the loop; "+(exitTime-enterTime)+" ms ellapsed total"); //System.err.println("stdout reads: "+outReadCount+" stderr reads: "+errReadCount+" exit checks: "+exitCheckCount); return returnCode; } //}}} //{{{ fillTank (defaults) //################################################################################################## public boolean fillTank(Process process, long timeout) throws IOException { return fillTank(process, timeout, true); } public boolean fillTank(Process process) throws IOException { return fillTank(process, 0L); } //}}} //{{{ getStdout, getStderr //################################################################################################## /** Returns a stream for reading from this process's stdout */ public InputStream getStdout() { outTank.close(); return outTank.getInputStream(); } /** Returns a stream for reading from this process's stderr */ public InputStream getStderr() { errTank.close(); return errTank.getInputStream(); } //}}} //{{{ stdoutSize, stderrSize //################################################################################################## /** Returns the number of bytes generated by this process */ public int stdoutSize() { return outTank.size(); } /** Returns the number of bytes generated by this process */ public int stderrSize() { return errTank.size(); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/util/StreamTank.java0000644000000000000000000001003211531212760022267 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.util; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * StreamTank is a holding tank for stream data, * collecting bytes in an array an later feeding them back out. * This class exists for handling large quantities of data, * for which duplicating the byte buffer (as is required to use * ByteArrayOutputStream and ByteArrayInputStream out of the box) * is unacceptable in terms of size and/or speed. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Fri May 16 18:51:18 EDT 2003 */ public class StreamTank extends ByteArrayOutputStream { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## boolean isClosed = false; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public StreamTank() { super(); } /** * Constructor */ public StreamTank(int size) { super(size); } //}}} //{{{ close, reset //################################################################################################## /** * Unlike its superclass, this stream will throw an exception * if write operations are attempted after it has been closed. * Due to the rules of inheritance, however, it can't throw * a checked exception, so we opt for IllegalStateException instead. */ public void close() { // The superclass doesn't DO anything here, // so it can't throw an exception... try { super.close(); } catch(IOException ex) {} isClosed = true; } /** Throws IllegalStateException if the stream has already been closed. */ public void reset() { if(isClosed) throw new IllegalStateException("Can't reset a closed stream"); super.reset(); } //}}} //{{{ write //################################################################################################## /** Throws IllegalStateException if the stream has already been closed. */ public void write(byte[] b, int off, int len) { if(isClosed) throw new IllegalStateException("Can't write to a closed stream"); super.write(b, off, len); } /** Throws IllegalStateException if the stream has already been closed. */ public void write(int b) { if(isClosed) throw new IllegalStateException("Can't write to a closed stream"); super.write(b); } //}}} //{{{ getInputStream //################################################################################################## /** * Returns an input stream that can be used to retreive bytes * that were fed into this output stream. * This function may be called multiple times and will not * result in a duplication of the internal buffer. * However, this tank MUST be closed before calling this * function, or an IllegalStateException will result. */ public ByteArrayInputStream getInputStream() { if(!isClosed) throw new IllegalStateException("Must close output stream before attempting to read input"); return new ByteArrayInputStream(buf, 0, this.size()); } //}}} //{{{ toByteArray //################################################################################################## /** * Returns the actual underlying byte buffer used by this stream, * not a copy of it the way the superclass does. * Modifying this buffer is strongly discouraged. */ public byte[] toByteArray() { return buf; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/util/Strings.java0000644000000000000000000004530511531212760021662 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.util; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.*; import java.text.NumberFormat; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * Strings is a utility class for manipulating and formatting * String objects in a variety of ways. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Mar 20 10:35:10 EST 2003 */ public class Strings //extends ... implements ... { //{{{ Constants static final DecimalFormat df0 = new DecimalFormat("0"); static final DecimalFormat df1 = new DecimalFormat("0.0"); //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public Strings() { } //}}} //{{{ justify{Left, Right, Center} //################################################################################################## /** * Pads a string with spaces and left-justifies it. * * @param s the string to justify * @param len the desired length */ public static String justifyLeft(String s, int len) { StringBuffer sb = new StringBuffer(s); sb.ensureCapacity(len); for(int i = s.length(); i < len; i++) sb.append(' '); return sb.toString(); } /** * Pads a string with spaces and right-justifies it. * * @param s the string to justify * @param len the desired length */ public static String justifyRight(String s, int len) { StringBuffer sb = new StringBuffer(s); sb.ensureCapacity(len); for(int i = s.length(); i < len; i++) sb.insert(0, ' '); return sb.toString(); } /** * Pads a string with spaces and centers it. * * @param s the string to justify * @param len the desired length */ public static String justifyCenter(String s, int len) { StringBuffer sb = new StringBuffer(s); sb.ensureCapacity(len); for(int i = s.length(); i < len; i++) { sb.append(' '); if(++i < len) sb.insert(0, ' '); } return sb.toString(); } //}}} //{{{ force{Left, Right} //################################################################################################## /** * Pads a string with spaces and left-justifies it. * If the string exceeds the specified length to start with, the * left-most len characters are returned. * @param s the string to justify * @param len the desired length */ public static String forceLeft(String s, int len) { int l = s.length(); if(l > len) return s.substring(0, len); else if(l == len) return s; else return justifyLeft(s, len); } /** * Pads a string with spaces and right-justifies it. * If the string exceeds the specified length to start with, the * right-most len characters are returned. * @param s the string to justify * @param len the desired length */ public static String forceRight(String s, int len) { int l = s.length(); if(l > len) return s.substring(l-len, l); else if(l == len) return s; else return justifyRight(s, len); } //}}} //{{{ formatMemory //################################################################################################## /** Formats a long in terms of memory (kb, Mb, etc) */ public static String formatMemory(long mem) { if(mem < 1000L) return mem+" b"; else if(mem < 10000L) return df1.format( (double)mem / 1000L )+" kb"; else if(mem < 1000000L) return df0.format( (double)mem / 1000L )+" kb"; else if(mem < 10000000L) return df1.format( (double)mem / 1000000L )+" Mb"; else if(mem < 1000000000L) return df0.format( (double)mem / 1000000L )+" Mb"; else if(mem < 10000000000L) return df1.format( (double)mem / 1000000000L )+" Gb"; else if(mem < 1000000000000L) return df0.format( (double)mem / 1000000000L )+" Gb"; else if(mem < 10000000000000L) return df1.format( (double)mem / 1000000000000L )+" Tb"; else return df0.format( (double)mem / 1000000000000L )+" Tb"; } //}}} //{{{ tokenizeCommandLine //################################################################################################## /** * Breaks a command line into tokens suitable for passing to Runtime.exec(). * Tokens are delimitated by whitespace (as defined by Character.isWhitespace()), * and all whitespace is discarded. * Quoting with either double or single quotes is allowed, * and whitespace inside quotes will be preserved. * No escape sequences are recognized (inside or outside quotes). */ public static String[] tokenizeCommandLine(String cmdline) { int i = 0, len = cmdline.length(); ArrayList tokenList = new ArrayList(); StringBuffer token = null; char ch, quoteMode = '\0'; for(i = 0; i < len; i++) { ch = cmdline.charAt(i); if(quoteMode == '\'' || quoteMode == '"') { if(ch == quoteMode) { tokenList.add(token.toString()); token = null; quoteMode = '\0'; } else token.append(ch); } else if(ch == '\'' || ch == '"') { if(token != null) tokenList.add(token.toString()); token = new StringBuffer(); quoteMode = ch; } else if(Character.isWhitespace(ch)) { if(token != null) { tokenList.add(token.toString()); token = null; } } else { if(token == null) token = new StringBuffer(); token.append(ch); } }//for(each character in cmdline) // Make sure we get the last one! if(token != null) tokenList.add(token.toString()); return (String[])tokenList.toArray( new String[tokenList.size()] ); } //}}} //{{{ jarUrlToFile //################################################################################################## /** * Given a URL that references something in a local JAR file * (e.g. jar:file:/some/crazy/path/to/my.jar!/foo/bar.class) * this function will return a File object that points to * the JAR file in question. * @throws NullPointerException if the URL is null * @throws IllegalArgumentException if the URL is inappropriate, * for example a URL that references a remote location via HTTP. * @throws IOException if there's a filesystem error when locating the JAR file. */ static public File jarUrlToFile(URL url) throws IOException { if(!url.getProtocol().equals("jar")) throw new IllegalArgumentException("URL must be a jar: type URL"); JarURLConnection jarConn = (JarURLConnection)url.openConnection(); url = jarConn.getJarFileURL(); if(!url.getProtocol().equals("file")) throw new IllegalArgumentException("URL must be a jar:file: type URL"); // decode() translates e.g. %20 into a space; // the File constructor is OK with e.g. // Windows paths containing backslashes File f = new File(URLDecoder.decode(url.getFile())); if(!f.exists()) throw new IOException("Specified JAR file does not exist"); return f; } //}}} //{{{ count public static int count(String s, String sub) { int count = 0; int i = s.indexOf(sub); while (i != -1) { count++; i = s.indexOf(sub, i+1); //System.out.println(i); } return count; } //}}} //{{{ explode //################################################################################################## /** * Explodes a string, breaking it up into pieces defined by a delimiter character. * * @param src string to act on * @param separator the delimiter break the string on * @param keepEmpty don't discard pieces that are empty strings * (defaults to false when separator is whitespace, true otherwise) * @param trim call String.trim() on pieces * (defaults to true when separator is whitespace, false otherwise) * @return an array of Strings representing the pieces of src */ public static String[] explode(String src, char separator, boolean keepEmpty, boolean trim) { ArrayList list = new ArrayList(); int i, old_i, len = src.length(); String piece; try { old_i = -1; for(i = src.indexOf(separator); i < len && i != -1; i = src.indexOf(separator, i+1)) { piece = src.substring(old_i+1, i); if(trim) piece = piece.trim(); if(piece.length() == 0 && !keepEmpty) {} else { list.add(piece); } old_i = i; } // Make sure we get the last piece! piece = src.substring(old_i+1); if(trim) piece = piece.trim(); if(piece.length() == 0 && !keepEmpty) {} else { list.add(piece); } } catch(IndexOutOfBoundsException ex) {} return (String[])list.toArray(new String[list.size()]); } public static String[] explode(String src, char separator) { if(Character.isWhitespace(separator)) return explode(src, separator, false, true); else return explode(src, separator, true, false); } //}}} //{{{ explodeInts, explodeDoubles //################################################################################################## /** Explodes a string, then calls Integer.parseInt() on each fragment. Note that this function doesn't keep empty strings.*/ public static int[] explodeInts(String s, char separator) throws NumberFormatException { String[] strings = explode(s, separator, false, true); int[] ints = new int[strings.length]; for(int i = 0; i < strings.length; i++) ints[i] = Integer.parseInt(strings[i]); return ints; } /** Explodes a string, then calls Integer.parseInt() on each fragment. Note that this function doesn't keep empty strings.*/ public static double[] explodeDoubles(String s, char separator) throws NumberFormatException { String[] strings = explode(s, separator, false, true); double[] doubles = new double[strings.length]; for(int i = 0; i < strings.length; i++) doubles[i] = Double.parseDouble(strings[i]); return doubles; } //}}} //{{{ expandVariables //################################################################################################## /** * Expands placeholders into their values. * Very similar to java.text.MessageFormat.format(), * except without the weirdnesses. * Valid placeholders are {0}, {1}, etc. -- indexes into the array. * This isn't particularly efficient, so for big jobs, use regexes or something. * Expansion should be recursive. */ static public String expandVariables(String template, String[] fillins) { for(int i = 0; i < fillins.length; i++) { String v = "{"+i+"}"; int j = 0; while(true) { j = template.indexOf(v, j); if(j == -1) break; template = template.substring(0,j) +fillins[i] +template.substring(j+v.length()); } } return template; } /** * Expands placeholders into their values. * This is like {@link #expandVariables(String, String[])}, except that instead * of looking for "{1}", "{2}", etc., we look for "{"+keys[0]+"}", "{"+keys[1]+"}", etc. * This isn't particularly efficient, so for big jobs, use regexes or something. * Expansion should be recursive. * @throws IllegalArgumentException if keys.length != fillins.length */ static public String expandVariables(String template, String[] keys, String[] fillins) { if(keys.length != fillins.length) throw new IllegalArgumentException("Length of keys[] and fillins[] must match"); for(int i = 0; i < fillins.length; i++) { String v = "{"+keys[i]+"}"; int j = 0; while(true) { j = template.indexOf(v, j); if(j == -1) break; template = template.substring(0,j) +fillins[i] +template.substring(j+v.length()); } } return template; } //}}} //{{{ compareVersions //################################################################################################## /** * Compares two version strings with pieces separated by dots. * On a piece by piece basis, the comparison is numeric if both * pieces are integers, and by dictionary order otherwise. * @return less than, equal to, or greater than zero as * ver1 is less than, equal to, or greater than ver2. */ static public int compareVersions(String ver1, String ver2) { String[] v1 = explode(ver1, '.'); String[] v2 = explode(ver2, '.'); int len = Math.max(v1.length, v2.length); for(int i = 0; i < len; i++) { if(i > v1.length) return -1; else if(i > v2.length) return 1; try { int n1 = Integer.parseInt(v1[i]); int n2 = Integer.parseInt(v2[i]); if(n1 != n2) return n1 - n2; } catch(NumberFormatException ex) { int comp = v1[i].compareTo(v2[i]); if(comp != 0) return comp; } } return 0; } //}}} //{{{ usDecimalFormat //################################################################################################## /** * Produces a DecimalFormat object in the en_US Locale, so it uses dots * for decimal separators, etc. * Otherwise, new DecimalFormat(...) may use commas as decimal points, etc. * See the Java Tutorial's Internationalization trail for more details. * @param pattern a formatting string that follows the rules described * in the javadoc for DecimalFormat (i.e. not a "localized" pattern). */ static public DecimalFormat usDecimalFormat(String pattern) { NumberFormat nf = NumberFormat.getNumberInstance(Locale.US); if(nf instanceof DecimalFormat) { DecimalFormat df = (DecimalFormat) nf; df.applyPattern(pattern); return df; } else return new DecimalFormat(pattern); // oops! do the best we can... } //}}} //{{{ arrayInParens //################################################################################################## /** Writes array of integers like this: "(1, 2, 3)" */ static public String arrayInParens(int[] values) { String s = "("; for(int i = 0; i < values.length-1; i++) s += values[i] + ", "; s += values[values.length-1] + ")"; return s; } /** Writes array of doubles like this: "(931.238, 2.001, 13.000)" */ static public String arrayInParens(double[] values) { DecimalFormat df = new DecimalFormat("###.###"); String s = "("; for(int i = 0; i < values.length-1; i++) s += df.format(values[i]) + ", "; s += df.format(values[values.length-1]) + ")"; return s; } //}}} //{{{ arrayToFloat, Double /** Takes an array of Strings and converts them to an array of floats. Empty strings or nulls are converted to Float.NaN*/ static public float[] arrayToFloat(String[] strgs) { float[] out = new float[strgs.length]; for (int i = 0; i < strgs.length; i++) { String s = strgs[i]; if ((s == null)||(s.equals(""))) out[i] = Float.NaN; else out[i] = Float.parseFloat(s); } return out; } /** Takes an array of Strings and converts them to an array of doubles. Empty strings or nulls are converted to Double.NaN*/ static public double[] arrayToDouble(String[] strgs) { double[] out = new double[strgs.length]; for (int i = 0; i < strgs.length; i++) { String s = strgs[i]; if ((s == null)||(s.equals(""))) out[i] = Double.NaN; else out[i] = Double.parseDouble(s); } return out; } //}}} //{{{ kinPt //################################################################################################## /** Utility method */ static public String kinPt(int[] values) { return kinPt(values, false); } /** Utility method */ static public String kinPt(int[] values, boolean p) { String label = ""; for(int i = 0; i < values.length-1; i++) label += values[i] + " "; label += values[values.length-1]; return kinPt(values, p, label); } /** Writes array of integers like a kinemage point: "{label}[P] 1 2 3" */ static public String kinPt(int[] values, boolean p, String label) { String s = "{" + label + "}" + (p ? "P" : ""); for(int i = 0; i < values.length; i++) s += " " + values[i]; return s; } /** Utility method */ static public String kinPt(double[] values) { return kinPt(values, false); } /** Utility method */ static public String kinPt(double[] values, boolean p) { DecimalFormat df = new DecimalFormat("###.###"); String label = ""; for(int i = 0; i < values.length-1; i++) label += df.format(values[i]) + " "; label += df.format(values[values.length-1]); return kinPt(values, p, label); } /** Writes array of doubles like a kinemage point: "{label}[P] 1 2 3" */ static public String kinPt(double[] values, boolean p, String label) { DecimalFormat df = new DecimalFormat("###.###"); String s = "{" + label + "}" + (p ? "P" : ""); for(int i = 0; i < values.length; i++) s += " " + df.format(values[i]); return s; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/util/URLEncodedOutputStream.java0000644000000000000000000000477711531212760024562 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.util; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * URLEncodedOutputStream is an output stream where all bytes written * are URL-encoded according to the description for java.net.URLEncoder. * I would use that class directly, but Java's urlencode methods expect only Strings. * Everything gets translated into UTF-8, which breaks binary files. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Mon Sep 27 16:24:54 EDT 2004 */ public class URLEncodedOutputStream extends OutputStream { //{{{ Constants static final String HEX_CHARS = "0123456789ABCDEF"; //}}} //{{{ Variable definitions //############################################################################## OutputStream out; boolean doEncoding = true; //}}} //{{{ Constructor(s) //############################################################################## public URLEncodedOutputStream(OutputStream out) { super(); this.out = out; } //}}} //{{{ write, flush, close //############################################################################## public void write(int b) throws IOException { if(!doEncoding) out.write(b); else if(('a' <= b && b <= 'z') || ('A' <= b && b <= 'Z') || ('0' <= b && b <= '9') || b == '.' || b == '-' || b == '*' || b == '_') out.write(b); else if(b == ' ') out.write('+'); else { out.write('%'); out.write(HEX_CHARS.charAt( (b>>4) & 0x0F )); out.write(HEX_CHARS.charAt( (b ) & 0x0F )); } } public void flush() throws IOException { out.flush(); } public void close() throws IOException { out.close(); } //}}} //{{{ getEncoding, setEncoding //############################################################################## /** Whether or not URL encoding is being applied. */ public boolean getEncoding() { return doEncoding; } /** Sets whether data should be encoded or not. Encoding is enabled by default. */ public void setEncoding(boolean b) { doEncoding = b; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/util/SoftLog.java0000644000000000000000000000507411531212760021605 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.util; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * SoftLog provides a wrapper for any output stream * that caches what's written in a memory-sensitive fashion, * so that e.g. error messages can be reviewed later but won't * cause an OutOfMemoryException if there are a lot of them. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Wed Sep 17 11:32:02 EDT 2003 */ public class SoftLog extends PrintStream { //{{{ Constants /** A SoftLog that goes to System.out */ static public final SoftLog out = SoftLog.create(System.out); /** A SoftLog that goes to System.err */ static public final SoftLog err = SoftLog.create(System.err); //}}} //{{{ Variable definitions //############################################################################## OutputStreamTee splitter; SoftOutputStream backlog; //}}} //{{{ Constructor(s) //############################################################################## /** Use this instead of the constructor. */ static public SoftLog create(OutputStream out) { SoftOutputStream backlog = new SoftOutputStream(); OutputStreamTee splitter = new OutputStreamTee(out, backlog); return new SoftLog(splitter, backlog); } private SoftLog(OutputStreamTee s, SoftOutputStream b) { super(s); splitter = s; backlog = b; } //}}} //{{{ getString, clear, replaceSystemStreams //############################################################################## /** Retrieves cached content as a String. */ public String getString() { return backlog.getString(); } /** Clears cached content. */ public void clear() { backlog.clear(); } /** * Replaces System.out and System.err with * SoftLog.out and SoftLog.err, respectively. * @return true if successful, false if a SecurityException prevented it. */ static public boolean replaceSystemStreams() { try { System.setOut(out); System.setErr(err); return true; } catch(SecurityException ex) { return false; } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/util/Props.java0000644000000000000000000002160311531212760021327 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.util; //import java.awt.*; //import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import javax.swing.*; //import gnu.regexp.*; //}}} /** * Props extends java.util.Properties with a few convenience functions for reading integers, booleans, etc. * Notice that the single-argument versions of getXxx() throw NoSuchElementExceptions if the property can't be found. * It has also been extended to allow single/double quoting of property values (via getString()), * so as to preserve leading/trailing whitespace for properties where it's meaningful. * *
Copyright (C) 2002 by Ian W. Davis. All rights reserved. *

Begun on Mon Jul 1 15:31:04 EDT 2002 */ public class Props extends Properties // implements ... { //{{{ Constructors //################################################################################################## /** * Constructor */ public Props() { super(); } /** * Constructor */ public Props(Properties defaults) { super(defaults); } //}}} //{{{ get/setDefaults //################################################################################################## /** * Retrieves the Properties object that supplies values to this one * if this one can't find the requested property in its table. * Returns null if there is no such object. */ public Properties getDefaults() { return this.defaults; } /** * Sets the Properties object that will supply default values to this one. * Passing null will cause this object to not refer to anything for defaults. */ public void setDefaults(Properties def) { this.defaults = def; } //}}} //{{{ minimizeDifferences //################################################################################################## /** * Removes properties from this object that match with the values * in its "defaults" delegate. * Afterwards, this object contains only those properties that make * it different from the defaults. * If no defaults have been specified, no action is taken. */ public void minimizeDifferences() { Properties def = getDefaults(); if(def == null) return; for(Iterator iter = keySet().iterator(); iter.hasNext(); ) { String key = (String) iter.next(); String defVal = def.getProperty(key); String curVal = this.getProperty(key); if((curVal == null && defVal == null) || (curVal != null && curVal.equals(defVal))) iter.remove(); } } //}}} //{{{ hasProperty() //################################################################################################## /** * Returns true iff this Props object or one of its parents * contains a non-null value mapped to the specified key. */ public boolean hasProperty(String key) { return (getProperty(key) != null); } //}}} //{{{ getString() //################################################################################################## /** An alias for getProperty() that trims off leading and trailing quote marks*/ public String getString(String key, String defVal) { String ret = getProperty(key); if(ret == null) ret = defVal; else if(ret.startsWith("\"") && ret.endsWith("\"")) ret = ret.substring(1, ret.length()-1); else if(ret.startsWith("'") && ret.endsWith("'")) ret = ret.substring(1, ret.length()-1); return ret; } /** An alias for getProperty() that trims off leading and trailing quote marks*/ public String getString(String key) { String ret = getProperty(key); if(ret == null) throw new NoSuchElementException("Property '"+key+"' could not be found"); else if(ret.startsWith("\"") && ret.endsWith("\"")) ret = ret.substring(1, ret.length()-1); else if(ret.startsWith("'") && ret.endsWith("'")) ret = ret.substring(1, ret.length()-1); return ret; } //}}} //{{{ getInt() //################################################################################################## public int getInt(String key, int defVal) { int ret = defVal; String prop = getProperty(key); if(prop != null) { try { ret = Integer.parseInt(prop); } catch(NumberFormatException ex) {} } return ret; } public int getInt(String key) { int ret = 0; String prop = getProperty(key); if(prop == null) throw new NoSuchElementException("Property '"+key+"' could not be found"); try { ret = Integer.parseInt(prop); } catch(NumberFormatException ex) { NoSuchElementException nsee = new NoSuchElementException("Property '"+key+"' is not an integer"); nsee.initCause(ex); throw nsee; } return ret; } //}}} //{{{ getLong() //################################################################################################## public long getLong(String key, long defVal) { long ret = defVal; String prop = getProperty(key); if(prop != null) { try { ret = Long.parseLong(prop); } catch(NumberFormatException ex) {} } return ret; } public long getLong(String key) { long ret = 0; String prop = getProperty(key); if(prop == null) throw new NoSuchElementException("Property '"+key+"' could not be found"); try { ret = Long.parseLong(prop); } catch(NumberFormatException ex) { NoSuchElementException nsee = new NoSuchElementException("Property '"+key+"' is not an integer"); nsee.initCause(ex); throw nsee; } return ret; } //}}} //{{{ getDouble() //################################################################################################## public double getDouble(String key, double defVal) { double ret = defVal; String prop = getProperty(key); if(prop != null) { try { ret = Double.parseDouble(prop); } catch(NumberFormatException ex) {} } return ret; } public double getDouble(String key) { double ret = 0.0; String prop = getProperty(key); if(prop == null) throw new NoSuchElementException("Property '"+key+"' could not be found"); try { ret = Double.parseDouble(prop); } catch(NumberFormatException ex) { NoSuchElementException nsee = new NoSuchElementException("Property '"+key+"' is not a real number"); nsee.initCause(ex); throw nsee; } return ret; } //}}} //{{{ getFloat() //################################################################################################## public float getFloat(String key, float defVal) { float ret = defVal; String prop = getProperty(key); if(prop != null) { try { ret = Float.parseFloat(prop); } catch(NumberFormatException ex) {} } return ret; } public float getFloat(String key) { float ret = 0f; String prop = getProperty(key); if(prop == null) throw new NoSuchElementException("Property '"+key+"' could not be found"); try { ret = Float.parseFloat(prop); } catch(NumberFormatException ex) { NoSuchElementException nsee = new NoSuchElementException("Property '"+key+"' is not a real number"); nsee.initCause(ex); throw nsee; } return ret; } //}}} //{{{ getBoolean() //################################################################################################## public boolean getBoolean(String key, boolean defVal) { boolean ret = defVal; String prop = getProperty(key); if(prop != null) { prop = prop.toLowerCase(); if(prop.equals("true") || prop.equals("on") || prop.equals("yes") || prop.equals("1")) ret = true; else if(prop.equals("false") || prop.equals("off") || prop.equals("no") || prop.equals("0")) ret = false; } return ret; } public boolean getBoolean(String key) { boolean ret = false; String prop = getProperty(key); if(prop == null) throw new NoSuchElementException("Property '"+key+"' could not be found"); prop = prop.toLowerCase(); if(prop.equals("true") || prop.equals("on") || prop.equals("yes") || prop.equals("1")) ret = true; else if(prop.equals("false") || prop.equals("off") || prop.equals("no") || prop.equals("0")) ret = false; else throw new NoSuchElementException("Property '"+key+"' is not a boolean value"); return ret; } //}}} }//class king-2.21.120420/driftwood/src/driftwood/util/OutputStreamTee.java0000644000000000000000000000723111531212760023337 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.util; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * OutputStreamTee simply passes OutputStream commands * on to two underlying streams, like the *nix utility 'tee'. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Wed Sep 17 11:32:02 EDT 2003 */ public class OutputStreamTee extends OutputStream { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## OutputStream stream1, stream2; //}}} //{{{ Constructor(s) //############################################################################## public OutputStreamTee(OutputStream s1, OutputStream s2) { super(); if(s1 == null || s2 == null) throw new NullPointerException("Target streams may not be null"); stream1 = s1; stream2 = s2; } //}}} //{{{ close, flush //############################################################################## public void close() throws IOException { // Give both functions a chance, but throw ex from first // preferentially over ex from second. IOException ex = null; try { stream1.close(); } catch(IOException e) { ex = e; } try { stream2.close(); } catch(IOException e) { if(ex != null) throw ex; else throw e; } if(ex != null) throw ex; } public void flush() throws IOException { // Give both functions a chance, but throw ex from first // preferentially over ex from second. IOException ex = null; try { stream1.flush(); } catch(IOException e) { ex = e; } try { stream2.flush(); } catch(IOException e) { if(ex != null) throw ex; else throw e; } if(ex != null) throw ex; } //}}} //{{{ write, write, write //############################################################################## public void write(int b) throws IOException { // Give both functions a chance, but throw ex from first // preferentially over ex from second. IOException ex = null; try { stream1.write(b); } catch(IOException e) { ex = e; } try { stream2.write(b); } catch(IOException e) { if(ex != null) throw ex; else throw e; } if(ex != null) throw ex; } public void write(byte[] b) throws IOException { // Give both functions a chance, but throw ex from first // preferentially over ex from second. IOException ex = null; try { stream1.write(b); } catch(IOException e) { ex = e; } try { stream2.write(b); } catch(IOException e) { if(ex != null) throw ex; else throw e; } if(ex != null) throw ex; } public void write(byte[] b, int off, int len) throws IOException { // Give both functions a chance, but throw ex from first // preferentially over ex from second. IOException ex = null; try { stream1.write(b, off, len); } catch(IOException e) { ex = e; } try { stream2.write(b, off, len); } catch(IOException e) { if(ex != null) throw ex; else throw e; } if(ex != null) throw ex; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/util/SoftOutputStream.java0000644000000000000000000000710511531212760023535 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.util; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.lang.ref.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * SoftOutputStream provides a memory-sensitive * cache for data. The data is stored as weak references to * (large) strings, so that the garbage collector can remove * older data as necessary. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Wed Sep 17 11:32:02 EDT 2003 */ public class SoftOutputStream extends OutputStream { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Collection strings; // Collection< SoftReference(String) > byte[] buffer; int bufcount; final int bufsize; //}}} //{{{ Constructor(s) //############################################################################## /** Creates a stream that stores data in 64 kB chunks. */ public SoftOutputStream() { this(64); } /** Creates a stream that stores data in sizeKB*1024 byte chunks. */ public SoftOutputStream(int sizeKB) { super(); bufsize = sizeKB*1024; bufcount = 0; buffer = new byte[bufsize]; strings = new ArrayList(); } //}}} //{{{ close, flush //############################################################################## /** Does nothing. */ public void close() {} /** Flushes the current buffer contents to a String. */ public synchronized void flush() { if(bufcount > 0) { String s = new String(buffer, 0, bufcount); strings.add( new SoftReference(s) ); bufcount = 0; } } //}}} //{{{ write //############################################################################## public synchronized void write(int b) { if(bufcount == bufsize) flush(); buffer[bufcount++] = (byte)b; } public synchronized void write(byte[] b) { write(b, 0, b.length); } public synchronized void write(byte[] b, int off, int len) { while(len > 0) { int toWrite = Math.min(len, bufsize - bufcount); System.arraycopy(b, off, buffer, bufcount, toWrite); off += toWrite; len -= toWrite; bufcount += toWrite; if(bufcount == bufsize) flush(); } } //}}} //{{{ getString, clear //############################################################################## /** Returns the contents of this stream as a string. */ public synchronized String getString() { StringBuffer sb = new StringBuffer(); SoftReference ref; String s; for(Iterator iter = strings.iterator(); iter.hasNext(); ) { ref = (SoftReference)iter.next(); s = (String)ref.get(); if(s == null) s = "\n[*** Content lost due to low memory ***]\n"; sb.append(s); } s = new String(buffer, 0, bufcount); sb.append(s); return sb.toString(); } /** Remove all cached contents. */ public synchronized void clear() { strings.clear(); bufcount = 0; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/data/0000755000000000000000000000000011744306100017311 5ustar rootrootking-2.21.120420/driftwood/src/driftwood/data/FinalArrayList.java0000644000000000000000000000202711531212756023050 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.data; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * FinalArrayList is a very simple, lightweight wrapper * to make an array into an unmodifiable list. * The list is backed by the original array and is thus still potentially * mutable if the array is modified. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Wed May 19 09:19:51 EDT 2004 */ public class FinalArrayList extends AbstractList { protected Object[] data; public FinalArrayList(Object[] a) { super(); if(a == null) throw new NullPointerException("Must provide a non-null array"); this.data = a; } public Object get(int i) { return data[i]; } public int size() { return data.length; } }//class king-2.21.120420/driftwood/src/driftwood/data/ValueComparator.java0000644000000000000000000000204011531212756023263 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.data; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * ValueComparator wraps another Comparator and * applies it to the VALUEs of Map.Entry objects. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Wed May 25 09:49:29 EDT 2005 */ public class ValueComparator implements Comparator//extends ... implements ... { private final Comparator cmp; public ValueComparator(Comparator cmp) { super(); this.cmp = cmp; } /** Returns the result of compare() for the values of the Map.Entry objects. */ public int compare(Object o1, Object o2) { Map.Entry e1 = (Map.Entry) o1; Map.Entry e2 = (Map.Entry) o2; return cmp.compare(e1.getValue(), e2.getValue()); } }//class king-2.21.120420/driftwood/src/driftwood/data/KeyComparator.java0000644000000000000000000000202211531212756022737 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.data; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * KeyComparator wraps another Comparator and * applies it to the KEYs of Map.Entry objects. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Wed May 25 09:49:29 EDT 2005 */ public class KeyComparator implements Comparator//extends ... implements ... { private final Comparator cmp; public KeyComparator(Comparator cmp) { super(); this.cmp = cmp; } /** Returns the result of compare() for the keys of the Map.Entry objects. */ public int compare(Object o1, Object o2) { Map.Entry e1 = (Map.Entry) o1; Map.Entry e2 = (Map.Entry) o2; return cmp.compare(e1.getKey(), e2.getKey()); } }//class king-2.21.120420/driftwood/src/driftwood/data/UberMap.java0000644000000000000000000005131211531212756021520 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.data; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * UberMap is a replacement for java.util.LinkedHashMap * with additional features to make it a truly multi-purpose data structure. * Functions that are part of the Map specification adhere to the * contracts documented in the official Sun javadocs; see them for details. * *

Hash table length is always a power of two, and * hash collisions are resolved by chaining. * The secondary hash function is the multiplicative one proposed by Knuth, * as cited in "Introduction to Algorithms" by Cormen, Leiserson, Rivest, and Stein. * Thus w = 32 bits (the size of a Java int) * and s = 2654435769 ~= 2**w * (sqrt(5)-1)/2. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Tue Feb 3 08:41:42 EST 2004 */ public class UberMap extends AbstractMap { //{{{ Constants // Overflow, multiplying negative numbers seems to give same result // as doing the calculation with longs and then casting to int. //static final long HASH_MULT = 2654435769L; // 0x9e3779b9 -- negative as an int! static final int HASH_MULT = 0x9e3779b9; //}}} //{{{ CLASS: UberEntry //############################################################################## static class UberEntry implements Map.Entry { final Object key; final int hashCode; Object value; UberEntry before = null; UberEntry after = null; UberEntry chain = null; public UberEntry(Object k, Object v, int h) { this.key = k; this.value = v; this.hashCode = h; } public boolean equals(Object o) { if(o == null) return false; if(!(o instanceof Map.Entry)) return false; Map.Entry e = (Map.Entry) o; return (this.key==null ? e.getKey()==null : this.key.equals(e.getKey())) && (this.value==null ? e.getValue()==null : this.value.equals(e.getValue())); } /** * Falls back to the native hashCode() for key to ensure we obey the equals() contract. * FIXME: This is pathological (always 0) if key == value, as is the case for Sets. */ public int hashCode() { return (this.key==null ? 0 : this.key.hashCode()) ^ (this.value==null ? 0 : this.value.hashCode()); } public Object getKey() { return key; } public Object getValue() { return value; } public Object setValue(Object newVal) { Object old = value; value = newVal; return old; } public String toString() { return key+" -> "+value+" @ "+hashCode; } } //}}} //{{{ CLASS: UberEntrySet //############################################################################## class UberEntrySet extends AbstractSet { public UberEntrySet() { super(); } public void clear() { UberMap.this.clear(); } public boolean contains(Object o) { if(!(o instanceof Map.Entry)) return false; Map.Entry e = (Map.Entry) o; return e.equals(UberMap.this.fetchEntry(e.getKey())); } public Iterator iterator() { return new UberEntryIterator(); } public boolean remove(Object o) { if(!(o instanceof Map.Entry)) return false; Map.Entry e = (Map.Entry) o; UberEntry u = UberMap.this.fetchEntry(e.getKey()); if(e.equals(u)) { UberMap.this.remove(e.getKey()); return true; } else return false; } public int size() { return UberMap.this.size(); } } //}}} //{{{ CLASS: UberEntryIterator //############################################################################## class UberEntryIterator implements Iterator { UberEntry prevEntry = null; UberEntry nextEntry; int expectedNumChanges; public UberEntryIterator() { super(); this.expectedNumChanges = UberMap.this.numChanges; this.nextEntry = UberMap.this.mapHead; } public boolean hasNext() { checkForMods(); return (nextEntry != null); } public Object next() { checkForMods(); if(nextEntry == null) throw new NoSuchElementException("No more elements in iteration"); prevEntry = nextEntry; nextEntry = nextEntry.after; return prevEntry; } public void remove() { checkForMods(); if(prevEntry != null) { UberMap.this.remove(prevEntry.getKey()); this.expectedNumChanges = UberMap.this.numChanges; } else throw new NoSuchElementException("No elements have yet been returned by this iterator"); } private void checkForMods() { if(this.expectedNumChanges != UberMap.this.numChanges) throw new ConcurrentModificationException("Backing map was changed during iteration"); } } //}}} //{{{ Variable definitions //############################################################################## final HashFunction hashFunc; UberEntry[] mapEntries; // length is always a power of 2 UberEntry mapHead = null; UberEntry mapTail = null; int mapSize = 0; final double loadFactor; int log2Capacity; // aka 'p' int hashMask; // == (1 << p) - 1; UberEntrySet mapEntrySet = null; int numChanges = 0; // used for fail-fast iteration //}}} //{{{ Constructor(s) //############################################################################## /** Default capacity is 16. */ public UberMap() { this(16); } /** Default load factor is 0.75. */ public UberMap(int initCapacity) { this(initCapacity, 0.75); } /** Default hash function is NullNaturalComparator. */ public UberMap(int initCapacity, double loadFactor) { this(initCapacity, loadFactor, null); } public UberMap(HashFunction hashFunc) { this(16, 0.75, null); } public UberMap(int initCapacity, HashFunction hashFunc) { this(initCapacity, 0.75, null); } /** * See java.util.HashMap for a discussion of capacity and load factor. * Note that in keeping with the semantics of HashMap, the effective * maximum size() before rehashing is the capacity divided by the load factor. * A null hashFunc will result in NullNaturalComparator being used. */ public UberMap(int initCapacity, double loadFactor, HashFunction hashFunc) { super(); if(hashFunc == null) this.hashFunc = new NullNaturalComparator(); else this.hashFunc = hashFunc; if(loadFactor < 0.1) loadFactor = 0.1; if(loadFactor > 1.0) loadFactor = 1.0; this.loadFactor = loadFactor; for(log2Capacity = 4; (1<>> (32-log2Capacity)) & hashMask; return hcode; } //}}} //{{{ fetchEntry, containsKey, get //############################################################################## /** * Retrieves the Entry for the specified key, or null * if no such key is found in the table. key may be null. */ protected UberEntry fetchEntry(Object key) { int idx = index(hashFunc.hashCodeFor(key)); UberEntry e = mapEntries[idx]; while(e != null) { if(hashFunc.areEqual(e.getKey(), key)) return e; e = e.chain; } return null; } public boolean containsKey(Object key) { return (fetchEntry(key) != null); } public Object get(Object key) { UberEntry e = fetchEntry(key); if(e == null) return null; else return e.getValue(); } //}}} //{{{ remove, clear, size //############################################################################## public Object remove(Object key) { int idx = index(hashFunc.hashCodeFor(key)); UberEntry e = mapEntries[idx]; UberEntry prev = null; while(e != null) { if(hashFunc.areEqual(e.getKey(), key)) { // Preserve the chain of entries at this index if(prev == null) mapEntries[idx] = e.chain; else prev.chain = e.chain; // Excise this entry from the linked list if(e.before == null) mapHead = e.after; else e.before.after = e.after; if(e.after == null) mapTail = e.before; else e.after.before = e.before; // Up the counter and return the value numChanges++; mapSize--; return e.getValue(); } prev = e; e = e.chain; } return null; // no mapping was in place for this key } public void clear() { for(int i = 0; i < mapEntries.length; i++) mapEntries[i] = null; mapHead = mapTail = null; mapSize = 0; numChanges++; } public int size() { return mapSize; } //}}} //{{{ putBeforeImpl //############################################################################## /** * Does a put, and positions the new entry * immediately before refEntry in the linked list. * If the map is empty or refEntry is null, * the new entry goes at the end of the list. */ protected Object putBeforeImpl(UberEntry refEntry, Object key, Object value) { // Check for the case that refEntry.key == key // i.e. that we're trying to put key before itself if(refEntry != null && hashFunc.areEqual(refEntry.getKey(), key)) { Object oldValue = refEntry.getValue(); refEntry.setValue(value); numChanges++; return oldValue; } // Else procede normally: // Assume we're going to increase the size of the map; // i.e., that this key isn't already in the table. if(mapSize+1 > loadFactor*mapEntries.length) rehash(mapEntries.length * 2); // Remove the old entry for this key, if any Object oldValue = remove(key); int hcode = hashFunc.hashCodeFor(key); int idx = index(hcode); UberEntry e = new UberEntry(key, value, hcode); UberEntry prev = mapEntries[idx]; // Insert the new entry into the chain if(prev == null) mapEntries[idx] = e; else { while(prev.chain != null) prev = prev.chain; prev.chain = e; } // Insert the new entry into the linked list if(mapSize == 0) // also means mapHead == mapTail == null mapHead = mapTail = e; else if(refEntry == null) // put at end of list { e.before = mapTail; e.before.after = e; mapTail = e; } else if(refEntry == mapHead) // put at front of list { e.after = mapHead; e.after.before = e; mapHead = e; } else // put in the middle of the list { e.before = refEntry.before; e.after = refEntry; e.before.after = e; e.after.before = e; } numChanges++; mapSize++; return oldValue; } //}}} //{{{ put, putAtEnd, putBefore, putAfter //############################################################################## /** * Replaces the value currently associated with key with newValue, * without changing the position of the key in the linked list; * if the key is not in the map, the key-value pair is added at the end. */ public Object put(Object key, Object newValue) { return putBefore(key, key, newValue); } /** * Adds a new mapping at the end of the map, even if key was * previously positioned elsewhere in the map. */ public Object putAtEnd(Object key, Object value) { return putBeforeImpl(null, key, value); } /** * Puts a new entry in the map, positioning it immediately * before the specified reference key in the order of iteration. * If refKey is not in the map, this is equivalent to put(key, value). */ public Object putBefore(Object refKey, Object key, Object value) { UberEntry e = fetchEntry(refKey); return putBeforeImpl(e, key, value); } /** * Puts a new entry in the map, positioning it immediately * after the specified reference key in the order of iteration. * If refKey is not in the map, this is equivalent to put(key, value). */ public Object putAfter(Object refKey, Object key, Object value) { UberEntry e = fetchEntry(refKey); if(e == null) return putBeforeImpl(e, key, value); else return putBeforeImpl(e.after, key, value); } //}}} //{{{ rehash, ensureCapacity, getLoadFactor //############################################################################## private final void rehash(int newCapacity) { if(log2Capacity == 30) return; // table is as big as it can get // Get putAll() to do our dirty work for us UberMap newMap = new UberMap(newCapacity, loadFactor, hashFunc); newMap.putAll(this); // Canabalize the new map this.mapEntries = newMap.mapEntries; this.mapHead = newMap.mapHead; this.mapTail = newMap.mapTail; this.mapSize = newMap.mapSize; this.log2Capacity = newMap.log2Capacity; this.hashMask = newMap.hashMask; numChanges++; } /** * Ensures that the table has at least newCapacity buckets in it. * Note that in keeping with the semantics of HashMap, the effective * maximum size() before rehashing is the capacity divided by the load factor. */ public void ensureCapacity(int newCapacity) { if(newCapacity > mapEntries.length) rehash(newCapacity); } public double getLoadFactor() { return loadFactor; } //}}} //{{{ firstKey, lastKey, keyBefore, keyAfter //############################################################################## /** * Returns the key of the first entry in the linked list. * @throws NoSuchElementException if the list is empty */ public Object firstKey() { if(mapHead == null) throw new NoSuchElementException("No first key; map is empty."); return mapHead.getKey(); } /** * Returns the key of the last entry in the linked list. * @throws NoSuchElementException if the list is empty */ public Object lastKey() { if(mapTail == null) throw new NoSuchElementException("No last key; map is empty."); return mapTail.getKey(); } /** * Returns the key that precedes refKey in the iteration order. * @throws NoSuchElementException if refKey is not in the map, * or is the first key in the map. */ public Object keyBefore(Object refKey) { UberEntry e = fetchEntry(refKey); if(e == null) throw new NoSuchElementException(refKey+" is not a key in this map"); else if(e.before == null) throw new NoSuchElementException(refKey+" is the first key in this map"); else return e.before.getKey(); } /** * Returns the key that follows refKey in the iteration order. * @throws NoSuchElementException if refKey is not in the map, * or is the last key in the map. */ public Object keyAfter(Object refKey) { UberEntry e = fetchEntry(refKey); if(e == null) throw new NoSuchElementException(refKey+" is not a key in this map"); else if(e.after == null) throw new NoSuchElementException(refKey+" is the last key in this map"); else return e.after.getKey(); } //}}} /*{{{ FOR TESTING ONLY: main * / //############################################################################## public static void main(String[] args) { UberMap m = new UberMap(); // Insertion test m.put("apple", "red"); m.put("orange", "orange"); m.put("lime", "green"); m.put("eggplant", "purple"); m.putBefore("lime", "lemon", "yellow"); m.putBefore("apple", "proto-apple", "colorless"); m.putAfter("lemon", "lettuce", "yellow-green"); m.putAfter("eggplant", "black hole", "don't know"); // Removal / equality test UberMap copy = new UberMap(m); if(!m.equals(copy)) throw new Error("Duplicate maps are not equal"); int i = 0; for(Iterator iter = m.entrySet().iterator(); iter.hasNext(); ) { iter.next(); if(++i % 4 == 3) iter.remove(); } if(m.equals(copy)) throw new Error("Maps with different contents are still equal"); // Rehashing test m.ensureCapacity(32); // Nulls test m.putBefore("black hole", null, null); // Show map and its entries // Iteration test System.out.println(); System.out.println("Map (size="+m.size()+"):"); System.out.println(m.toString()); System.out.println(); System.out.println("Entries:"); for(Iterator iter = m.entrySet().iterator(); iter.hasNext(); ) { UberEntry e = (UberEntry) iter.next(); System.out.println(" "+e+" (in bucket "+m.index(e.hashCode)+")"); } // keySet / values test // firstKey / lastKey test // keyBefore / keyAfter System.out.println(); System.out.println("Keys: ["+m.firstKey()+", ... , "+m.lastKey()+"]"); System.out.println(m.keySet().toString()); for(Iterator iter = m.keySet().iterator(); iter.hasNext(); ) { Object key = iter.next(); Object after = null, before = null; try { after = m.keyAfter( key); } catch(NoSuchElementException ex) { after = "[nothing]"; } try { before = m.keyBefore(key); } catch(NoSuchElementException ex) { before = "[nothing]"; } System.out.println(" "+key+" comes after "+before+" and before "+after); } System.out.println(); System.out.println("Values:"); System.out.println(m.values().toString()); // Debugging: show table structure System.out.println(); System.out.println("Hash buckets:"); for(int j = 0; j < m.mapEntries.length; j++) { UberEntry e = m.mapEntries[j]; if(e == null) System.out.println(" "+j+": ---"); else { System.out.print(" "+j+": "+e.getKey()); while(e.chain != null) { e = e.chain; System.out.print(" => "+e.getKey()); } System.out.println(); } } } /*}}}*/ //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/data/CheapSet.java0000644000000000000000000003051211531212756021660 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.data; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * CheapSet is an open-addressing hashtable Set implementation * with quadratic probing. * It DOES NOT allow null, although it does allow a custom hash function. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Tue May 10 14:12:33 EDT 2005 */ public class CheapSet extends AbstractSet { //{{{ Constants // Overflow, multiplying negative numbers seems to give same result // as doing the calculation with longs and then casting to int. //static final long HASH_MULT = 2654435769L; // 0x9e3779b9 -- negative as an int! static final int HASH_MULT = 0x9e3779b9; static final Object DELETED_PROXY = new Object(); //}}} //{{{ CLASS: CheapIterator //############################################################################## class CheapIterator implements Iterator { int lastEntry = -1; int nextEntry = -1; int expectedNumChanges; public CheapIterator() { super(); this.expectedNumChanges = CheapSet.this.numChanges; } public boolean hasNext() { checkForMods(); if(nextEntry == -1) findNext(); return (nextEntry != -1); } private void findNext() { Object[] entries = CheapSet.this.setEntries; for(nextEntry = lastEntry+1; nextEntry < entries.length; nextEntry++) { Object entry = entries[nextEntry]; if(entry != null && entry != DELETED_PROXY) return; } nextEntry = -1; // failed to find a next entry } public Object next() { checkForMods(); if(nextEntry == -1) findNext(); if(nextEntry == -1) throw new NoSuchElementException("No more elements in iteration"); lastEntry = nextEntry; nextEntry = -1; return CheapSet.this.setEntries[lastEntry]; } public void remove() { checkForMods(); if(lastEntry != -1) { CheapSet.this.setEntries[lastEntry] = CheapSet.DELETED_PROXY; CheapSet.this.setSize--; this.expectedNumChanges = ++CheapSet.this.numChanges; } else throw new NoSuchElementException("No elements have yet been returned by this iterator"); } private void checkForMods() { if(this.expectedNumChanges != CheapSet.this.numChanges) throw new ConcurrentModificationException("Backing set was changed during iteration"); } } //}}} //{{{ Variable definitions //############################################################################## final HashFunction hashFunc; Object[] setEntries; // length is always a power of 2 int setSize = 0; final double loadFactor; int log2Capacity; // aka 'p' int hashMask; // == (1 << p) - 1; int numChanges = 0; // used for fail-fast iteration //}}} //{{{ Constructor(s) //############################################################################## /** Default capacity is 16. */ public CheapSet() { this(16); } /** Default load factor is 0.75. */ public CheapSet(int initCapacity) { this(initCapacity, 0.75); } /** Default hash function is NullNaturalComparator. */ public CheapSet(int initCapacity, double loadFactor) { this(initCapacity, loadFactor, null); } public CheapSet(HashFunction hashFunc) { this(16, 0.75, null); } public CheapSet(int initCapacity, HashFunction hashFunc) { this(initCapacity, 0.75, null); } /** * See java.util.HashMap for a discussion of capacity and load factor. * Note that in keeping with the semantics of HashMap, the effective * maximum size() before rehashing is the capacity divided by the load factor. * A null hashFunc will result in NullNaturalComparator being used. */ public CheapSet(int initCapacity, double loadFactor, HashFunction hashFunc) { super(); if(hashFunc == null) this.hashFunc = new NullNaturalComparator(); else this.hashFunc = hashFunc; if(loadFactor < 0.1) loadFactor = 0.1; if(loadFactor > 1.0) loadFactor = 1.0; this.loadFactor = loadFactor; for(log2Capacity = 4; (1<>> (32-log2Capacity)) & hashMask; return hcode; } //}}} //{{{ rehash, ensureCapacity, getLoadFactor //############################################################################## private final void rehash(int newCapacity) { if(log2Capacity == 30) throw new UnsupportedOperationException("Set has reached maximum size"); // Get putAll() to do our dirty work for us CheapSet newSet = new CheapSet(newCapacity, loadFactor, hashFunc); newSet.addAll(this); // Canabalize the new set this.setEntries = newSet.setEntries; this.setSize = newSet.setSize; this.log2Capacity = newSet.log2Capacity; this.hashMask = newSet.hashMask; numChanges++; } /** * Ensures that the table has at least newCapacity buckets in it. * Note that in keeping with the semantics of HashMap, the effective * maximum size() before rehashing is the capacity divided by the load factor. */ public void ensureCapacity(int newCapacity) { if(newCapacity > setEntries.length) rehash(newCapacity); } public double getLoadFactor() { return loadFactor; } //}}} //{{{ add //############################################################################## public boolean add(Object o) { if(o == null) throw new NullPointerException("CheapSet cannot contain nulls"); // Assume we're going to increase the size of the map; // i.e., that this key isn't already in the table. if(setSize+1 > loadFactor*setEntries.length) rehash(setEntries.length * 2); int hash = index(hashFunc.hashCodeFor(o)); // For quadratic probing with triangular numbers: 1, 3, 6, 10, 15, 21, 28, ... int triNum = 0, triStep = 0; while(true) { triNum = triNum + triStep++; int idx = (hash+triNum) & hashMask; // equiv. to % table length Object entry = setEntries[idx]; if(entry == null || entry == DELETED_PROXY) { setEntries[idx] = o; setSize++; numChanges++; return true; } else if(hashFunc.areEqual(entry, o)) return false; } } //}}} //{{{ clear //############################################################################## public void clear() { for(int i = 0; i < setEntries.length; i++) setEntries[i] = null; setSize = 0; numChanges++; } //}}} //{{{ contains, get //############################################################################## public boolean contains(Object o) { return (get(o) != null); } /** * Given an object o that compares as equal to some object present in * the set, this function returns the actual object from the set, else it * returns null (which isn't a valid set member anyway). * This is useful for doing uniquification operations like String.intern(). */ public Object get(Object o) { if(o == null) throw new NullPointerException("CheapSet cannot contain nulls"); int hash = index(hashFunc.hashCodeFor(o)); // For quadratic probing with triangular numbers: 1, 3, 6, 10, 15, 21, 28, ... int triNum = 0, triStep = 0; while(true) { triNum = triNum + triStep++; int idx = (hash+triNum) & hashMask; // equiv. to % table length Object entry = setEntries[idx]; if(entry == null) return null; // == false in contains() else if(entry == DELETED_PROXY) continue; else if(hashFunc.areEqual(entry, o)) return entry; // == true in contains() } } //}}} //{{{ iterator //############################################################################## public Iterator iterator() { return new CheapIterator(); } //}}} //{{{ remove //############################################################################## public boolean remove(Object o) { if(o == null) throw new NullPointerException("CheapSet cannot contain nulls"); int hash = index(hashFunc.hashCodeFor(o)); // For quadratic probing with triangular numbers: 1, 3, 6, 10, 15, 21, 28, ... int triNum = 0, triStep = 0; while(true) { triNum = triNum + triStep++; int idx = (hash+triNum) & hashMask; // equiv. to % table length Object entry = setEntries[idx]; if(entry == null) return false; else if(entry == DELETED_PROXY) continue; else if(hashFunc.areEqual(entry, o)) { setEntries[idx] = DELETED_PROXY; setSize--; return true; } } } //}}} //{{{ size //############################################################################## public int size() { return setSize; } //}}} /*{{{ FOR TESTING ONLY: main * / //############################################################################## public static void main(String[] args) { CheapSet s = new CheapSet(); // Insertion test s.add("apple"); s.add("applet"); s.add("orange"); s.add("lime"); s.add("eggplant"); s.add("lemon"); s.add("black-hole"); s.add("lettuce"); s.add("proto-apple"); // Removal / equality test CheapSet copy = new CheapSet(s); if(!s.equals(copy)) throw new Error("Duplicate sets are not equal"); int i = 0; for(Iterator iter = s.iterator(); iter.hasNext(); ) { iter.next(); if(++i % 4 == 3) iter.remove(); } System.out.println("Orig = "+copy); System.out.println("Mod. = "+s); if(s.equals(copy)) throw new Error("Sets with different contents are still equal"); // Rehashing test s.ensureCapacity(32); // Null test try { s.add(null); throw new Error("Set allowed null to be added"); } catch(NullPointerException ex) {} try { s.contains(null); throw new Error("Set allowed null to be added"); } catch(NullPointerException ex) {} try { s.remove(null); throw new Error("Set allowed null to be added"); } catch(NullPointerException ex) {} // Show set and its entries // Iteration test System.out.println(); System.out.println("Set (size="+s.size()+"):"); System.out.println(s.toString()); } /*}}}*/ //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/data/Maps.java0000644000000000000000000000377411531212756021076 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.data; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * Maps contains utility functions for working with java.util.Map objects. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Tue Oct 4 16:10:51 EDT 2005 */ public class Maps //extends ... implements ... { //{{{ Constants //}}} //{{{ sort, sortByKey, sortByValue //############################################################################## /** Returns the map entries, sorted (c is used directly on the Map.Entry objects). */ static public Map.Entry[] sort(Map m, Comparator c) { Map.Entry[] e = (Map.Entry[]) m.entrySet().toArray( new Map.Entry[m.size()] ); Arrays.sort(e, c); return e; } /** Returns the map entries, sorted by key (c is wrapped in a KeyComparator). */ static public Map.Entry[] sortByKey(Map m, Comparator c) { return sort(m, new KeyComparator(c)); } /** Returns the map entries, sorted by value (c is wrapped in a ValueComparator). */ static public Map.Entry[] sortByValue(Map m, Comparator c) { return sort(m, new ValueComparator(c)); } //}}} //{{{ increment //############################################################################## /** * Assumes that all keys map to Integers, and that keys not present map to 0. * Increments the value for the key and returns the new value (ie, pre-increment). */ static public int increment(Map m, Object key) { Integer value = (Integer) m.get(key); int v = 1; if(value != null) v = value.intValue() + 1; m.put(key, new Integer(v)); return v; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/data/UberSet.java0000644000000000000000000000717611531212756021547 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.data; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * UberSet is a wrapper for UberMap that implements Set. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Tue Feb 3 13:30:46 EST 2004 */ public class UberSet extends AbstractSet { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## UberMap map; //}}} //{{{ Constructor(s) //############################################################################## /** Default capacity is 16. */ public UberSet() { this(16); } /** Default load factor is 0.75. */ public UberSet(int initCapacity) { this(initCapacity, 0.75); } /** Default hash function is NullNaturalComparator. */ public UberSet(int initCapacity, double loadFactor) { this(initCapacity, loadFactor, null); } public UberSet(HashFunction hashFunc) { this(16, 0.75, null); } public UberSet(int initCapacity, HashFunction hashFunc) { this(initCapacity, 0.75, null); } /** * See java.util.HashMap for a discussion of capacity and load factor. * Note that in keeping with the semantics of HashMap, the effective * maximum size() before rehashing is the capacity divided by the load factor. */ public UberSet(int initCapacity, double loadFactor, HashFunction hashFunc) { super(); map = new UberMap(initCapacity, loadFactor, hashFunc); } public UberSet(Collection c) { this(c, null); } public UberSet(Collection c, HashFunction hashFunc) { this(c.size(), hashFunc); this.addAll(c); } //}}} //{{{ add, addBefore, addAfter //############################################################################## public boolean add(Object o) { if(this.contains(o)) return false; map.put(o, o); return true; } public boolean addBefore(Object ref, Object o) { if(this.contains(o)) return false; map.putBefore(ref, o, o); return true; } public boolean addAfter(Object ref, Object o) { if(this.contains(o)) return false; map.putAfter(ref, o, o); return true; } //}}} //{{{ clear, contains, ensureCapacity, iterator //############################################################################## public void clear() { map.clear(); } public boolean contains(Object o) { return map.containsKey(o); } public void ensureCapacity(int cap) { map.ensureCapacity(cap); } public Iterator iterator() { return map.keySet().iterator(); } //}}} //{{{ remove, size, first/lastItem, itemBefore/After //############################################################################## public boolean remove(Object o) { if(this.contains(o)) { map.remove(o); return true; } else return false; } public int size() { return map.size(); } public Object firstItem() { return map.firstKey(); } public Object lastItem() { return map.lastKey(); } public Object itemBefore(Object o) { return map.keyBefore(o); } public Object itemAfter(Object o) { return map.keyAfter(o); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/data/HashFunction.java0000644000000000000000000000357211531212756022563 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.data; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * HashFunction defines a pluggable hash function and equality test * for use in place of hashCode() and equals() by hashtable-like data structures. * This allows for multiple modes of using a particular object as a key in a map, * without having to subclass or wrap each object in its own proxy. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Thu May 5 12:51:03 EDT 2005 */ public interface HashFunction { /** * Returns true if o1.equals(o2) in some alternate universe, * where o1.equals() is defined differently. * All the usual notes about writing a good equals() apply here. * NB: behavior when o1 and/or o2 is null is implementation dependent, * although implementations should allow nulls whenever feasible. */ public boolean areEqual(Object o1, Object o2); /** * Returns an integer hash code for o1, just like calling o1.hashCode -- * except that it may not be the SAME code you would get that way. * All the usual notes about writing a sane hashCode() apply here. * You must ensure that if o1 and o2 are equal by the areEqual() function, * then this function returns the same hash code for both o1 and o2. * The reverse is not true: having the same hash code does not necessarily * imply two objects will compare as equal, * although the closer to true that is, the better. * NB: behavior when o1 is null is implementation dependent, * although implementations should allow nulls whenever feasible. */ public int hashCodeFor(Object o1); }//class king-2.21.120420/driftwood/src/driftwood/data/IdentityHashFunction.java0000644000000000000000000000162611531212756024273 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.data; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * IdentityHashFunction implements identity (==) as the equality test. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Tue May 10 15:17:02 EDT 2005 */ public class IdentityHashFunction implements HashFunction { public IdentityHashFunction() { super(); } /** Returns (o1 == o2) */ public boolean areEqual(Object o1, Object o2) { return (o1 == o2); } /** Returns System.identityHashCode(o1). */ public int hashCodeFor(Object o1) { return System.identityHashCode(o1); } }//class king-2.21.120420/driftwood/src/driftwood/data/TinyMap.java0000644000000000000000000002063511531212756021552 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.data; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * TinyMap implements a very space-efficient map with up to 32 integer keys (0 - 31). * Adding new keys and removing old ones are linear time operations and force object allocation. * Retrieving values for existing keys is a constant time operation, on the other hand. * *

I expect this code will frequently be subclassed and/or copy-and-pasted into other classes, * to avoid the storage overhead of allocating the TinyMap object itself. * *

I haven't bothered to implement equals(), hashCode(), or other Map methods. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Jun 8 16:02:27 EDT 2006 */ public class TinyMap //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## int keyMap = 0; // bits set for keys that have values Object[] values = null; // first value corresponds to lowest set key bit, etc //}}} //{{{ Constructor(s) //############################################################################## public TinyMap() { super(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ countSetBitsNaive, countSetBitsKWL //############################################################################## /** * Counts the number of set bits (1's) in v. * Naive implementation for verifying correctness of others (32 cycles). * From "Bit Twiddling Hacks", http://graphics.stanford.edu/~seander/bithacks.html */ //static public int countSetBitsNaive(int v) //{ // int c; // accumulates number of bits set in v // for(c = 0; v != 0; v >>>= 1) // { // c += v & 1; // } // return c; //} /** * Counts the number of set bits (1's) in v. * Semi-optimized implementation (one cycle per set bit). * Attributed to Brian Kernighan / Peter Wegner / Derrick Lehmer. * From "Bit Twiddling Hacks", http://graphics.stanford.edu/~seander/bithacks.html */ //static public int countSetBitsKWL(int v) //{ // int c; // accumulates number of bits set in v // for(c = 0; v != 0; c++) // { // v &= v - 1; // clear the least significant bit set // } // return c; //} //}}} //{{{ countSetBits //############################################################################## /** * Counts the number of set bits (1's) in v. * Optimal implementation with ~12 operations. * From "Bit Twiddling Hacks", http://graphics.stanford.edu/~seander/bithacks.html */ static public int countSetBits(int v) { int w = v - ((v >>> 1) & 0x55555555); // temp int x = (w & 0x33333333) + ((w >>> 2) & 0x33333333); // temp int c = ((x + (x >>> 4) & 0xF0F0F0F) * 0x1010101) >>> 24; // count return c; } //}}} //{{{ indexOf, contains, size //############################################################################## /** * Returns the array index (0 based) for the item with the given key (0 - 31). * If the item is not actually in the array, it returns where it *would* be, * if it were inserted. * @param key the unique integer index for the item (0 - 31) * @param occupancyMap has bits set for items that are actually present */ public static int indexOf(int key, int occupancyMap) { int mask = (1 << key) - 1; // 1's for bit indices below this one return countSetBits(occupancyMap & mask); } public int indexOf(int key) { return indexOf(key, this.keyMap); } /** Whether the occupancy map indicates that the given item is present. */ public static boolean contains(int key, int occupancyMap) { int bit = (1 << key); // 1 for the this index's bit return (bit & occupancyMap) != 0; } public boolean contains(int key) { return contains(key, this.keyMap); } /** Number of actual entries in this map. */ public static int size(int occupancyMap) { return countSetBits(occupancyMap); } public int size() { return size(this.keyMap); } // not values.length, b/c values may be null //}}} //{{{ get, put, remove //############################################################################## /** * Returns the value associated with the given key, * or null if this map does not contain that key. */ public Object get(int key) { if(!contains(key, keyMap)) return null; else return values[indexOf(key, keyMap)]; } /** * Associates a new value with key and returns the old value, * or null if none was set. */ public Object put(int key, Object value) { int i = indexOf(key, keyMap); if(contains(key, keyMap)) { Object old = values[i]; values[i] = value; return old; } else { int values_length = size(keyMap); //values may be null! keyMap |= (1 << key); Object[] newvals = new Object[values_length+1]; for(int j = 0; j < i; j++) newvals[j] = values[j]; newvals[i] = value; for(int j = i; j < values_length; j++) newvals[j+1] = values[j]; values = newvals; return null; } } /** Removes the value for the given key, if present. */ public Object remove(int key) { if(!contains(key, keyMap)) return null; int i = indexOf(key, keyMap); Object old = values[i]; keyMap &= ~(1 << key); Object[] newvals = new Object[values.length-1]; for(int j = 0; j < i; j++) newvals[j] = values[j]; for(int j = i+1; j < values.length; j++) newvals[j-1] = values[j]; values = newvals; if(values.length == 0) values = null; // just to save space return old; } //}}} //{{{ toString //############################################################################## public String toString() { StringBuffer buf = new StringBuffer(); buf.append("[").append(size()).append(" items"); for(int k = 0; k < 32; k++) { if(contains(k)) buf.append(", ").append(k).append(":").append(get(k)); } buf.append("]"); return buf.toString(); } //}}} //{{{ main (for testing) //############################################################################## /** / public static void main(String[] args) { //Random r = new Random(); //for(int i = 0; i < 10000; i++) //{ // int v = r.nextInt(); // int c = countSetBitsNaive(v); // int cKWL = countSetBitsKWL(v); // int cOpt = countSetBits(v); // //System.out.println(Integer.toBinaryString(v)+" "+c+" "+cKWL+" "+cOpt); // if(c < 0 || c > 32) System.out.println("*** Naive method failed! v = "+Integer.toBinaryString(v)); // if(c != cKWL) System.out.println("*** KWL method failed! v = "+Integer.toBinaryString(v)); // if(c != cOpt) System.out.println("*** Opt method failed! v = "+Integer.toBinaryString(v)); //} TinyMap map = new TinyMap(); System.out.println(map); map.put(0, "zero"); System.out.println(map); map.put(1, "one"); System.out.println(map); map.put(5, "five"); System.out.println(map); map.put(15, "fifteen"); System.out.println(map); map.put(10, "ten"); System.out.println(map); map.remove(5); System.out.println(map); map.remove(6); System.out.println(map); map.put(15, "one-five"); System.out.println(map); map.put(15, null); System.out.println(map); map.remove(0); map.remove(1); map.remove(15); map.remove(10); System.out.println(map); map.put(1, "one"); System.out.println(map); System.out.println("2:"+map.get(2)); } /**/ //}}} }//class king-2.21.120420/driftwood/src/driftwood/data/WrapMap.java0000644000000000000000000000453611531212756021542 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.data; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} public class WrapMap extends UberMap { //{{{ Constructor(s) //############################################################################## /** Default capacity is 16. */ public WrapMap() { super(); } /** Default load factor is 0.75. */ public WrapMap(int initCapacity) { super(initCapacity); } /** Default hash function is NullNaturalComparator. */ public WrapMap(int initCapacity, double loadFactor) { super(initCapacity, loadFactor); } public WrapMap(HashFunction hashFunc) { super(16, 0.75, null); } public WrapMap(int initCapacity, HashFunction hashFunc) { super(initCapacity, 0.75, null); } /** * See java.util.HashMap for a discussion of capacity and load factor. * Note that in keeping with the semantics of HashMap, the effective * maximum size() before rehashing is the capacity divided by the load factor. * A null hashFunc will result in NullNaturalComparator being used. */ public WrapMap(int initCapacity, double loadFactor, HashFunction hashFunc) { super(initCapacity, loadFactor, hashFunc); } public WrapMap(Map map) { super(map); } //}}} /** * Returns the key that precedes refKey in the iteration order. * If key is the first key in the map, returns last key. * @throws NoSuchElementException if refKey is not in the map, * */ public Object keyBefore(Object refKey) { UberEntry e = fetchEntry(refKey); if(e == null) throw new NoSuchElementException(refKey+" is not a key in this map"); else if(e.before == null) return lastKey(); else return e.before.getKey(); } /** * Returns the key that follows refKey in the iteration order. * If key is the last key in the map, returns first key. * @throws NoSuchElementException if refKey is not in the map, * */ public Object keyAfter(Object refKey) { UberEntry e = fetchEntry(refKey); if(e == null) throw new NoSuchElementException(refKey+" is not a key in this map"); else if(e.after == null) return firstKey(); else return e.after.getKey(); } } king-2.21.120420/driftwood/src/driftwood/data/NullNaturalComparator.java0000644000000000000000000000451711531212756024463 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.data; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * NullNaturalComparator allows the use of * objects' natural order when some of the objects may be null. * This was developed for use with java.util.TreeMap, though * it may be useful other places, too. * Nulls can either be sorted to the beginning or end. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Fri Jun 13 14:36:00 EDT 2003 */ public class NullNaturalComparator implements Comparator, HashFunction { /** Provides a non-zero hash code for null keys */ private static final int NULL_HASH_CODE = (new Object()).hashCode(); private boolean nullComesFirst; /** * Creates a comparator that sorts nulls to the front of the list. */ public NullNaturalComparator() { nullComesFirst = true; } /** * Creates a comparator that sorts nulls to either the front or the back of the list. */ public NullNaturalComparator(boolean nullComesFirst) { this.nullComesFirst = nullComesFirst; } /** * Returns less than, greater than, or equal to zero * as o1 is less than, greater than, or equal to o2. * Null may either be less than or greater than all other objects. * If both o1 and o2 are non-null, this is equal to o1.compareTo(o2). */ public int compare(Object o1, Object o2) { if(o1 == null) { if(o2 == null) return 0; else return (nullComesFirst ? -1 : 1); } else // o1 != null { if(o2 == null) return (nullComesFirst ? 1 : -1); else return ((Comparable)o1).compareTo(o2); } } /** Returns (o1 == null ? o2 == null : o1.equals(o2)) */ public boolean areEqual(Object o1, Object o2) { return (o1 == null ? o2 == null : o1.equals(o2)); } /** Returns o1.hashCode() unless o1 is null, in which case it returns something else. */ public int hashCodeFor(Object o1) { return (o1 == null ? NULL_HASH_CODE : o1.hashCode() ); } }//class king-2.21.120420/driftwood/src/driftwood/data/ReverseComparator.java0000644000000000000000000000162711531212756023634 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.data; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * ReverseComparator wraps another Comparator and reverses its ordering. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Wed May 25 09:49:29 EDT 2005 */ public class ReverseComparator implements Comparator//extends ... implements ... { private final Comparator cmp; public ReverseComparator(Comparator cmp) { super(); this.cmp = cmp; } /** Returns the result of compare(o1,o2) for the wrapped comparator, negated. */ public int compare(Object o1, Object o2) { return -cmp.compare(o1, o2); } }//class king-2.21.120420/driftwood/src/driftwood/parser/0000755000000000000000000000000011744306102017676 5ustar rootrootking-2.21.120420/driftwood/src/driftwood/parser/TokenWindow.java0000644000000000000000000002152111531212756023017 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.parser; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * TokenWindow is the basis for tokenizing parsers. * It supports token look-ahead and look-behind. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Fri May 4 09:32:28 EDT 2007 */ public class TokenWindow //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## /** The source of tokens */ CharWindow window; /** The recognizer of tokens */ TokenMatcher matcher; /** How many tokens have been read before the current tokenAt(0); can't be accessed any more. */ int prevTokens = 0; /** Highest index (exclusive) accessible by tokenAt(); this and higher indices cause more reading. */ int bufEnd = 0; /** Power-of-two-minus-one bitmask used to wrap absolute token index (prevChars + tokenAtIndex) to a buffer index. */ int bufMask; /** Actual buffer of tokens; reading and writing wrap around in a cycle. */ String[] buffer; /** Results of window.end() for each token in the buffer. */ int[] winEnd; //}}} //{{{ Constructor(s) //############################################################################## /** Default buffer size is 16 */ public TokenWindow(CharWindow window, TokenMatcher matcher) { this(window, matcher, 16); } public TokenWindow(CharWindow window, TokenMatcher matcher, int minBufferSize) { int bufLen; for(bufLen = 4; bufLen < minBufferSize; bufLen <<= 1); this.buffer = new String[bufLen]; // a power of two this.winEnd = new int[bufLen]; this.bufMask = bufLen - 1; // lowest N bits set this.window = window; this.matcher = matcher; } //}}} //{{{ token, tokenAt //############################################################################## /** Same as tokenAt(0). */ public String token() throws ParseException { return tokenAt(0); } /** * Returns the token at the specified index, or null if EOF. * @throws ParseException if more characters exist but they don't make a token. */ public String tokenAt(int index) throws ParseException { if(index < bufEnd - buffer.length) throw new IndexOutOfBoundsException("Current range is ["+(bufEnd - buffer.length)+", "+bufEnd+"); can't get "+index); // If we wanted to catch references before the begining of the file: //else if(prevTokens + index < 0) // throw new IndexOutOfBoundsException("Can't reference positions before the beginging of the stream"); else while(index >= bufEnd) { int bufIns = (prevTokens + bufEnd++) & bufMask; int bufPrev = (bufIns - 1) & bufMask; int start = winEnd[bufPrev]; if(start >= window.length()) // EOF { buffer[bufIns] = null; winEnd[bufIns] = start; } else if(matcher.match(window, start)) { buffer[bufIns] = matcher.token(); winEnd[bufIns] = matcher.end(); } else throw syntaxError(matcher.end(), "bad token"); } return buffer[ (prevTokens + index) & bufMask ]; } //}}} //{{{ advance //############################################################################## /** Same as advance(1). */ public void advance() throws ParseException, IOException { advance(1); } /** Advances the zero point by the specified amount. */ public void advance(int howMuch) throws ParseException, IOException { if(howMuch < 0) throw new IllegalArgumentException("Can't advance backwards!"); tokenAt(howMuch); // forces advancement // if prevTokens == 0 and howMuch == 0, then winEnd[*] == 0, so it's OK int idx = (prevTokens + howMuch - 1) & bufMask; int adv = winEnd[idx]; window.advance(adv); prevTokens += howMuch; bufEnd -= howMuch; // assert bufEnd >= 1; // Correct the end indices for buffered tokens // by the amount we advanced the window: for(int i = 0; i < buffer.length; i++) winEnd[ (prevTokens + i) & bufMask ] -= adv; } //}}} //{{{ accept //############################################################################## /** If s.equals(token()), return true and advance by one .*/ public boolean accept(String s) throws ParseException, IOException { String token = this.token(); if(token == null) return false; if(s.equals(token)) { advance(); return true; } else return false; } /** If m.reset(token()).matches(), return true and advance by one .*/ public boolean accept(Matcher m) throws ParseException, IOException { String token = this.token(); if(token == null) return false; if(m.reset(token).matches()) { advance(); return true; } else return false; } //}}} //{{{ require //############################################################################## /** Like accept(), but throws ParseException instead of returning false */ public void require(String s) throws ParseException, IOException { if(!accept(s)) throw syntaxError("Expected '"+s+"', found '"+this.token()+"'"); } /** Like accept(), but throws ParseException instead of returning false */ public void require(Matcher m) throws ParseException, IOException { if(!accept(m)) throw syntaxError("Expected '"+m.pattern()+"', found '"+this.token()+"'"); } //}}} //{{{ syntaxError //############################################################################## /** Makes a ParseException with the specified message (by default at current token position [0]) */ public ParseException syntaxError(int index, String detail) { int bufCurr = (prevTokens + index) & bufMask; boolean isEOF = (buffer[bufCurr] == null); // don't check if index is out of tokenAt() range -- who cares? int bufPrev = (bufCurr - 1) & bufMask; int pos = winEnd[bufPrev]; // character position of start of bad token //System.err.println("pos = "+pos); int line = window.lineAt(pos); int col = window.columnAt(pos); StringBuffer err = new StringBuffer(); err.append("Syntax error at line "+line+", column "+col+": "+detail+"\n"); String snipet = window.contextAt(pos); err.append("> "+snipet+"\n"); if(col <= snipet.length() || isEOF) { err.append('>'); for(int i = 0; i < col; i++) err.append(' '); err.append("^\n"); } return new ParseException(err.toString(), line); } public ParseException syntaxError(String detail) { return syntaxError(0, detail); } //}}} //{{{ main (simple unit test) //############################################################################## public static void main(String[] args) throws Exception { // Should be able to tokenize Java and maybe other languages // Some confusion between + and - as operators vs. signs on numbers Pattern[] accept = { RegexTokenMatcher.UNSIGNED_REAL, RegexTokenMatcher.JAVA_WORD, RegexTokenMatcher.JAVA_PUNC, RegexTokenMatcher.SINGLE_QUOTED_STRING, RegexTokenMatcher.DOUBLE_QUOTED_STRING }; Pattern[] ignore = { RegexTokenMatcher.WHITESPACE, RegexTokenMatcher.HASH_COMMENT, RegexTokenMatcher.DOUBLE_SLASH_COMMENT, RegexTokenMatcher.SLASH_STAR_COMMENT }; TokenMatcher m = new RegexTokenMatcher( //"\\S+", // accept maximal strings of non-whitespace characters //"\\s" // ignore whitespace RegexTokenMatcher.joinPatterns(accept), RegexTokenMatcher.joinPatterns(ignore) ); CharWindow w = new CharWindow(System.in); TokenWindow t = new TokenWindow(w, m); while(t.token() != null) { System.out.println(t.token()); System.out.println("-----"); t.advance(); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/parser/RegexTokenMatcher.java0000644000000000000000000002646511531212756024142 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.parser; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * RegexTokenMatcher matches input tokens based on regular expressions. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Fri May 4 08:18:49 EDT 2007 */ public class RegexTokenMatcher implements TokenMatcher { //{{{ Constants //{{{ Whitespace, or not /** * A string of whitespace characters, including newlines and carriage returns. */ public static final Pattern WHITESPACE = Pattern.compile("(?:\\s+)"); /** * A string of non-whitespace characters. */ public static final Pattern NON_WHITESPACE = Pattern.compile("(?:\\S+)"); //}}} Whitespace, or not //{{{ Numbers /** * Recognizes a subset of the integer number formats acceptable to Integer.parseInt(). * Allowed: explicit "+" signs * Disallowed: spaces, commas, computerized scientific notation, useless leading zeros. */ public static final Pattern SIGNED_INT; /** Like SIGNED_INT, but without a leading sign (+ or -). */ public static final Pattern UNSIGNED_INT; /** * Recognizes a subset of the real number formats acceptable to Double.parseDouble(). * Allowed: explicit "+" signs, computerized scientific notation ("1e6" == 1 000 000). * Disallowed: spaces, commas, useless leading zeros. */ public static final Pattern SIGNED_REAL; /** Like SIGNED_REAL, but without a leading sign (+ or -). */ public static final Pattern UNSIGNED_REAL; static { String sign = "(?:[+-]?)"; String digits = "(?:[0-9]+)"; String positive = "(?:[1-9][0-9]*)"; String natural = "(?:0|"+positive+")"; String integer = "(?:"+sign+natural+")"; String u_real = "(?:"+natural+"(?:\\.(?:"+digits+")?)?)"; String u_real_e = "(?:"+u_real+"(?:[eE]"+integer+")?)"; String s_real_e = "(?:"+sign+u_real_e+")"; SIGNED_INT = Pattern.compile(integer); UNSIGNED_INT = Pattern.compile(natural); SIGNED_REAL = Pattern.compile(s_real_e); UNSIGNED_REAL = Pattern.compile(u_real_e); } //}}} Numbers //{{{ Words /** * Something that would be a valid variable/function/class name in Java and many other C-like languages. * Starts with a letter or underscore, and continues with letters, underscores, or digits. */ public static final Pattern JAVA_WORD = Pattern.compile("(?:[a-zA-Z_][a-zA-Z_0-9]*)"); /** * All the symbols / operators / punctuation from Java, and maybe a few other languages. */ public static final Pattern JAVA_PUNC = Pattern.compile("(?:[~!%^&|*/<>.=+-]=?|[,;:?(){}\\[\\]]|&&|\\|\\||<<=?|>>=?|>>>=?|\\+\\+|--)"); //}}} Words //{{{ Strings /** * The same as DOUBLE_QUOTED_STRING, but with single quotes ('). */ public static final Pattern SINGLE_QUOTED_STRING = Pattern.compile("(?s:'(?:[^'\\\\]|\\\\.)*')"); // (?s: ... ) lets . match linefeeds /** * The standard string format in Java, C, etc: delimited by quotes ("), escaped by backslashes (\). * Escaped control sequences like \n are not interpretted or removed by this pattern. * Internal newlines *are* allowed, unlike in Java etc. */ public static final Pattern DOUBLE_QUOTED_STRING = Pattern.compile( SINGLE_QUOTED_STRING.pattern().replace('\'', '"') ); /** * The same as DOUBLE_QUOTED_STRING, but with slashes (/). * If used for regular expressions, slashes must be escaped no matter where they appear * (eg even inside character classes). */ public static final Pattern SLASH_QUOTED_STRING = Pattern.compile( SINGLE_QUOTED_STRING.pattern().replace('\'', '/') ); //}}} Strings //{{{ Comments /** * A shell-style comment, starting with # and extending to end of line. */ public static final Pattern HASH_COMMENT = Pattern.compile("(?:#.*)"); /** * A C++ style comment, starting with // and extending to end of line. */ public static final Pattern DOUBLE_SLASH_COMMENT = Pattern.compile("(?://.*)"); /** * A C style comment, starting with slash-star and extending to star-slash. */ public static final Pattern SLASH_STAR_COMMENT = Pattern.compile("(?s:/\\*.*?\\*/)"); // (?s: ... ) lets . match linefeeds //}}} Comments //}}} //{{{ Variable definitions //############################################################################## Matcher accept, ignore; String theToken = null; int tokenEnd = 0; //}}} //{{{ Constructor(s) //############################################################################## /** * At any point in a valid input sequence, one pattern or the other should match. * Together, they should consume the entire sequence and return a series * of tokens which should either be accepted (keywords, names, etc) or * silently ignored (whitespace, comments, etc). *

The entire text matched by accept will be returned * after normalization (implemented by a subclass). */ public RegexTokenMatcher(Pattern accept, Pattern ignore) { super(); this.accept = accept.matcher(""); this.ignore = ignore.matcher(""); } public RegexTokenMatcher(String accept, String ignore) { this(Pattern.compile(accept), Pattern.compile(ignore)); } public RegexTokenMatcher(Matcher accept, Matcher ignore) { this(accept.pattern(), ignore.pattern()); } //}}} //{{{ match, end, token, normalize //############################################################################## public boolean match(CharSequence s, int start) { this.ignore.reset(s); int end = start, len = s.length(); while(end < len) { ignore.region(end, len); if(!ignore.lookingAt()) break; end = ignore.end(); // absolute position, not relative to region() } this.accept.reset(s); accept.region(end, len); // match must start at begining, but doesn't have to extend to end if(accept.lookingAt()) { this.theToken = normalize(accept.group()); this.tokenEnd = accept.end(); return true; } // If we only matched whitespace, set the token to null and our // position to the end of the whitespace. // If whitespace consumed to end of s, return true. // This allows us to deal with trailing whitespace but not // consume it prematurely, in case we change tokenization rules // in mid-file and it suddenly becomes significant. // If whitespace just preceded a bad token, we still care about // where the bad token starts (i.e. ignore.end()), but we return false. else { this.theToken = null; this.tokenEnd = end; // == ignore.end() if we matched whitespace return (end > start && end == len); } } public int end() { return tokenEnd; } public String token() { return theToken; } /** * May be overriden by subclasses to normalize the raw tokens matched by the accept pattern. * In this implementation, it simply returns rawToken as-is. */ public String normalize(String rawToken) { return rawToken; } //}}} //{{{ joinPatterns //############################################################################## /** Strings together a bunch of Patterns with OR bars (|). */ public static Pattern joinPatterns(String[] p) { StringBuffer b = new StringBuffer(); for(int i = 0; i < p.length; i++) { if(i > 0) b.append('|'); b.append("(?:"); b.append(p[i]); b.append(')'); } return Pattern.compile(b.toString()); } public static Pattern joinPatterns(Pattern[] p) { String[] s = new String[p.length]; for(int i = 0; i < p.length; i++) s[i] = p[i].pattern(); return joinPatterns(s); } public static Pattern joinPatterns(Matcher[] p) { String[] s = new String[p.length]; for(int i = 0; i < p.length; i++) s[i] = p[i].pattern().pattern(); return joinPatterns(s); } //}}} //{{{ recursivePattern //############################################################################## /** * Some languages have quoting systems that escape quote chacters with * a "balancing" requirement: the number of "open" symbols must match * the number of "close" symbols, and the opens must precede the closes. * For example, PostScript quotes strings this way with parentheses, * kinemage quotes strings this way with curly braces, * and AppleScript does comments this way with (* ... *). * *

Formally, STRING = OPEN ( GUTS | STRING )+ CLOSE. * By allowing GUTS to match 0 characters, one can allow empty strings. * *

Such a pattern cannot actually be specified with regular expressions; * however, by nesting things 10 or 20 levels deep, one can match any * reasonable real-life examples. */ public static Pattern recursivePattern(String start, String guts, String close, int maxDepth) { StringBuffer b = new StringBuffer(); for(int i = 0; i < maxDepth; i++) b.append("(?:").append(start).append(")(?:(?:").append(guts).append(")|(?:"); b.append(guts); for(int i = 0; i < maxDepth; i++) b.append("))+(?:").append(close).append(")"); return Pattern.compile(b.toString()); } public static Pattern recursivePattern(Pattern start, Pattern guts, Pattern close, int maxDepth) { return recursivePattern(start.pattern(), guts.pattern(), close.pattern(), maxDepth); } public static Pattern recursivePattern(Matcher start, Matcher guts, Matcher close, int maxDepth) { return recursivePattern(start.pattern().pattern(), guts.pattern().pattern(), close.pattern().pattern(), maxDepth); } //}}} //{{{ main (simple unit test) //############################################################################## public static void main(String[] args) { // Matches foo's separated by whitespace //RegexTokenMatcher m = new RegexTokenMatcher("foo", "\\s"); //String test = "foo foo foofoo f"; //int[] pos = {0, 1, 3, 7, 8}; //for(int i = 0; i < pos.length; i++) // System.out.println("matches at "+pos[i]+"? "+(m.match(test, pos[i]) ? "true ["+pos[i]+", "+m.end()+") -> '"+m.token()+"'" : "false")); RegexTokenMatcher m = new RegexTokenMatcher(recursivePattern("<", "[a-zA-Z .]*", ">", 3), WHITESPACE); String test = " > said Bob.>"; System.out.println(test); for(int i = 0; i < test.length(); i = m.end()) { if(!m.match(test, i)) { System.out.println("*** Syntax error at "+i); break; } System.out.println("> "+m.token()); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/parser/TokenMatcher.java0000644000000000000000000000354211531212756023136 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.parser; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * TokenMatcher describes the minimal requirements for a lexer (tokenizer). * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Fri May 4 08:18:49 EDT 2007 */ public interface TokenMatcher //extends ... implements ... { /** * Returns true iff a valid token starts at position start * in the given character sequence. * After a successful result, end() and token() can be called for details. *

This function may return true but generate a null token iff afterwards * this.end() == s.length() and * match(s, end()) == false. * This basically allows for one null token representing the final ignorable * whitespace in a file. */ public boolean match(CharSequence s, int start); /** * If the last match() was successful, returns the index of the end of * the token (exclusive) -- that is, the position to be used as the next start. * If the last match() was unsuccessful, tries to return the index where the * problem occurred (e.g. could skip leading whitespace before a bad token). */ public int end(); /** * If the last match() was successful, returns the (possibly normalized) * token that was recognized. Because the token may be normalized and * whitespace/comments/etc may be skipped, the length of the token * is not guaranteed to equal end() - start. * This function *may* return null, see match(). */ public String token(); }//class king-2.21.120420/driftwood/src/driftwood/parser/CharWindow.java0000644000000000000000000002304111531212756022613 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.parser; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * CharWindow represents a Reader as a CharSequence, such that some * window of characters is currently accessible. * If the EOF is within the buffer, the length will be correct; * otherwise, length() will return the buffer length. * *

The purpose of this class is to allow matching regular expressions * against an input stream, for the purpose of parsing a file. * Obviously, the size of the buffer limits the length of pattern that can be matched. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Thu May 3 10:57:30 EDT 2007 */ public class CharWindow implements CharSequence { //{{{ Constants /** 2^10 (1024) characters, for specifying buffer sizes */ public static final int KILOCHAR = 1<<10; /** 2^20 (1024 * 1024) characters, for specifying buffer sizes */ public static final int MEGACHAR = 1<<20; //}}} //{{{ Variable definitions //############################################################################## /** The source of characters */ Reader reader; /** How many characters have been read before the current charAt(0) */ long prevChars = 0; /** Number of line breaks preceding preceding charAt(0) */ int lineAtZero = 0; /** Number of characters following the last line break but before charAt(0) */ int colAtZero = 0; /** Number of usable characters in the buffer */ int dataLen = 0; /** Minimum accessible index in the buffer */ int dataMin = 0; /** Power-of-two-minus-one bitmask used to wrap absolute character index (prevChars + charAtIndex) to a buffer index. */ long bufMask; /** Actual buffer of characters; reading and writing wrap around in a cycle. */ char[] buffer; //}}} //{{{ Constructor(s) //############################################################################## /** * Default buffer size is 16 kchars, * enough for ~200 (80 char) lines of comments and/or whitespace * preceding a single real token. */ public CharWindow(Reader reader) throws IOException { this(reader, 16*KILOCHAR); } /** * Creates a new window around the given reader, * with a buffer of at least the specified size (possibly larger). * Actually, the buffer is at least twice the minimum size, * so you get equal amounts of look-ahead and look-behind. * (Look-behind turns out to be very important for recovering the context * of syntax errors!) */ public CharWindow(Reader reader, int minBufferSize) throws IOException { super(); int bufLen; for(bufLen = 16; bufLen < minBufferSize; bufLen <<= 1); bufLen <<= 1; // double it: half for lookahead, half for lookbehind this.buffer = new char[bufLen]; // a power of two this.bufMask = bufLen - 1; // lowest N bits set this.reader = reader; // fill the buffer initially half full for(this.dataLen = 0; dataLen < bufLen/2; dataLen++) { int c = reader.read(); if(c == -1) break; buffer[ (int)(dataLen & bufMask) ] = (char) c; } } public CharWindow(InputStream in) throws IOException { this(new InputStreamReader(in)); } public CharWindow(InputStream in, int minBufferSize) throws IOException { this(new InputStreamReader(in), minBufferSize); } /** Buffer size == s.length() */ public CharWindow(String s) throws IOException { this(new StringReader(s), s.length()); } public CharWindow(File f) throws IOException { this(new FileReader(f)); } public CharWindow(File f, int minBufferSize) throws IOException { this(new FileReader(f), minBufferSize); } public CharWindow(URL url) throws IOException { this(url.openStream()); } public CharWindow(URL url, int minBufferSize) throws IOException { this(url.openStream(), minBufferSize); } //}}} //{{{ charAt, length, read, advance //############################################################################## public char charAt(int index) { if(index < dataMin || index >= dataLen) throw new IndexOutOfBoundsException("Current range is ["+dataMin+", "+dataLen+"); can't get "+index); else return buffer[ (int)((prevChars + index) & bufMask) ]; } /** Returns the actual remaining length, or the buffer size if not yet at EOF. */ public int length() { return dataLen; } /** Returns character at index 0 and advances zero point by one. To detect EOF, check length() == 0. */ public char read() throws IOException { // Get charAt(0); if newline, update counters. char atZero = buffer[ (int)(prevChars & bufMask) ]; if(atZero == '\n') { this.lineAtZero++; this.colAtZero = 0; } else this.colAtZero++; // Read new char; if EOF, decrease available forward chars. int c = reader.read(); if(c == -1) dataLen--; else buffer[ (int)((prevChars + dataLen) & bufMask) ] = (char) c; // Move current position forward by one. prevChars++; dataMin = (int) Math.max(-prevChars, dataLen - buffer.length); return atZero; } /** Call read() repeatedly to advance the zero point of this simulated CharSequence by the specified amount. */ public void advance(int howMuch) throws IOException { if(howMuch < 0) throw new IllegalArgumentException("Can't advance backwards!"); for(int i = 0; i < howMuch; i++) read(); } //}}} //{{{ toString, subSequence //############################################################################## /** Returns a static snapshot of the specified region */ public String toString(int start, int end) { StringBuffer sb = new StringBuffer(end - start); for(int i = start; i < end; i++) sb.append( this.charAt(i) ); return sb.toString(); } /** Returns a static snapshot of all characters in the buffer */ public String toString() { return toString(0, dataLen); } /** Same as toString(start, end) */ public CharSequence subSequence(int start, int end) { return toString(start, end); } //}}} //{{{ lineAt, columnAt //############################################################################## /** * Returns the line number (starting from 1) of the given character index. */ public int lineAt(int index) { int line = this.lineAtZero; for(int i = 0; i < index; i++) { if(charAt(i) == '\n') // line endings are normalized by Readers line++; } return line + 1; } /** * Returns the column number on the current line (starting from 1) of the given character index. */ public int columnAt(int index) { int col = this.colAtZero; for(int i = 0; i < index; i++) { if(charAt(i) == '\n') // line endings are normalized by Readers col = 0; else col++; } return col + 1; } //}}} //{{{ contextAt, startsWith //############################################################################## /** * Returns a string showing the context of the specified position, * spanning the entire line that position occurs on (up to the limits of the buffer). */ public String contextAt(int index) { int start = index; while(start > dataMin && charAt(start-1) != '\n') start--; int end = index; while(end < dataLen && charAt(end) != '\n') end++; return toString(start, end); } /** * Tests whether the string other appears in this buffer, * starting at position index in the window. * @param index defaults to 0 */ public boolean startsWith(CharSequence other, int index) { int thisLen = this.length() - index, otherLen = other.length(); if(otherLen > thisLen) return false; for(int i = 0; i < otherLen; ) if(this.charAt(index++) != other.charAt(i++)) return false; return true; } public boolean startsWith(CharSequence other) { return startsWith(other, 0); } //}}} //{{{ main (simple unit test) //############################################################################## /** Echos back complete lines typed at the console. */ public static void main(String[] args) throws Exception { // Must pipe in file on stdin -- can't fill buffer properly from console. CharWindow w = new CharWindow(new InputStreamReader(System.in)); int i = 0; while(w.length() > i) { char c = w.charAt(i++); System.out.println("% got 0x"+Integer.toHexString(c)); if(c == '\n') { System.out.println("> "+w.subSequence(0,i-1)); w.advance(i); System.out.println("> len = "+w.length()); i = 0; } } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/star/0000755000000000000000000000000011744306102017353 5ustar rootrootking-2.21.120420/driftwood/src/driftwood/star/StarFile.java0000644000000000000000000000526511531212756021744 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.star; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; //}}} /** * StarFile is the top of the Document Object Model (DOM) * representing the contents and structure of a STAR file. * This DOM can model all of the syntax of STAR (Self-defining Text Archive * and Retrieval) files as described in the 1994 paper by Hall and Spadaccini * (J Chem Inf Comput Sci, 34:505), except for nested loop_ objects. * Simple (one-level) loops are fully supported. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Wed May 19 11:54:37 EDT 2004 */ public class StarFile //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## DataCell globalBlock; // never null UberMap dataBlocks; // may be empty //}}} //{{{ Constructor(s) //############################################################################## public StarFile() { super(); this.globalBlock = new DataCell("GLOBAL"); this.dataBlocks = new UberMap(); } //}}} //{{{ getGlobalBlock, getDataBlockNames, getDataBlock //############################################################################## /** Returns the global_ block for this StarFile, which may be empty. */ public DataCell getGlobalBlock() { return globalBlock; } /** Returns the set of data block names in this file. */ public Set getDataBlockNames() { return Collections.unmodifiableSet(dataBlocks.keySet()); } /** Returns the named data block, or null if unknown. */ public DataBlock getDataBlock(String blockName) { return (DataBlock) dataBlocks.get(blockName); } //}}} //{{{ addDataBlock, removeDataBlock //############################################################################## /** * Adds the data block, displacing any former data blocks of the same name * (as returned by getName). * Returns the previous block of the same name, or null if none. */ public DataBlock addDataBlock(DataBlock block) { return (DataBlock) dataBlocks.put(block.getName(), block); } /** Removes the named data block if it's part of this file. */ public DataBlock removeDataBlock(String blockName) { return (DataBlock) dataBlocks.remove(blockName); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/star/StarReader.java0000644000000000000000000002625311531212756022267 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.star; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * StarReader can read a STAR file from a stream and construct * a Document Object Model of it in memory as a StarFile object. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Wed May 19 16:18:19 EDT 2004 */ public class StarReader //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## LineNumberReader input = null; StarTokenizer token = null; StarFile dom = null; double percentMemFree; //}}} //{{{ Constructor(s) //############################################################################## public StarReader() { super(); percentMemFree = 0.4; } //}}} //{{{ parse //############################################################################## /** * Parses the STAR file and creates a StarFile object from it. * Any syntax errors are fatal and will result in an ParseException. */ public StarFile parse(LineNumberReader in) throws IOException, ParseException { this.input = in; this.token = new StarTokenizer(in); this.dom = new StarFile(); while(!token.isEOF()) { if(token.isGlobal()) { DataCell global = dom.getGlobalBlock(); token.advance(); doGlobal(global); } else if(token.isData()) { DataBlock block = new DataBlock(token.getString()); if(dom.addDataBlock(block) != null) throw new ParseException("[line "+(input.getLineNumber()+1)+"] " +"Repeated data block name: data_"+block, input.getLineNumber()+1); token.advance(); doDataBlock(block); } else throw new ParseException("[line "+(input.getLineNumber()+1)+"] " +"Illegal token type '"+token.getType()+"' at top level", input.getLineNumber()+1); } return this.dom; } //}}} //{{{ doGlobal //############################################################################## protected void doGlobal(DataCell global) throws IOException, ParseException { while(!(token.isEOF() || token.isGlobal() || token.isData())) { if(token.isLoopStart()) { token.advance(); doLoop(global); } else if(token.isName()) doItem(global); else throw new ParseException("[line "+(input.getLineNumber()+1)+"] " +"Illegal token type '"+token.getType()+"' in global block", input.getLineNumber()+1); } } //}}} //{{{ doDataBlock //############################################################################## protected void doDataBlock(DataBlock block) throws IOException, ParseException { while(!(token.isEOF() || token.isGlobal() || token.isData())) { if(token.isLoopStart()) { token.advance(); doLoop(block); } else if(token.isName()) doItem(block); else if(token.isSaveStart()) { DataCell frame = new DataCell(token.getString()); DataCell oldframe = block.addSaveFrame(frame); // Technically, it is NOT legal to repeat a save frame name // in a STAR file, but PDB dictionaries do it anyway... if(oldframe != null) { frame = oldframe; //System.err.println("[line "+(input.getLineNumber()+1)+"] Repeated save frame name: save_"+frame); //throw new ParseException("[line "+(input.getLineNumber()+1)+"] " // +"Repeated save frame name: save_"+frame, input.getLineNumber()+1); } token.advance(); doSaveFrame(frame); } else throw new ParseException("[line "+(input.getLineNumber()+1)+"] " +"Illegal token type '"+token.getType()+"' in data block", input.getLineNumber()+1); } } //}}} //{{{ doSaveFrame //############################################################################## protected void doSaveFrame(DataCell frame) throws IOException, ParseException { while(!(token.isEOF() || token.isSaveEnd())) { if(token.isLoopStart()) { token.advance(); doLoop(frame); } else if(token.isName()) doItem(frame); else throw new ParseException("[line "+(input.getLineNumber()+1)+"] " +"Illegal token type '"+token.getType()+"' in save frame", input.getLineNumber()+1); } if(token.isSaveEnd()) token.advance(); // skip the stop token } //}}} //{{{ doLoop //############################################################################## protected void doLoop(DataCell cell) throws IOException, ParseException { List names = new ArrayList(); while(!token.isEOF() && token.isName()) { names.add(token.getString()); //System.out.println(token.getString()); token.advance(); } if(names.size() == 0) throw new ParseException("[line "+(input.getLineNumber()+1)+"] " +"No data names declared for loop_ (0 columns)", input.getLineNumber()+1); Runtime runtime = Runtime.getRuntime(); long maxMemory = runtime.maxMemory(); long allocatedMemory = runtime.totalMemory(); long freeMemory = runtime.freeMemory(); long totalFree = (freeMemory + (maxMemory - allocatedMemory)); //System.out.println((double)totalFree/(double)maxMemory + " " +percentMemFree); List[] values = new List[names.size()]; for(int i = 0; i < values.length; i++) values[i] = new ArrayList(); int row = 0, col = 0; while(!token.isEOF() && !token.isLoopEnd() && token.isValue()&&((double)totalFree/(double)maxMemory > percentMemFree)) { //System.out.println(totalFree); values[col].add(token.getString()); token.advance(); col++; if(col % values.length == 0) { col = 0; row++; } allocatedMemory = runtime.totalMemory(); freeMemory = runtime.freeMemory(); totalFree = (freeMemory + (maxMemory - allocatedMemory)); } if (!((double)totalFree/(double)maxMemory > percentMemFree)) { //throw new PartialFileException("Cif file too large, aborting at [line "+(input.getLineNumber()+1)+"] "); //SoftLog.err.println("Cif file too large, aborting read"); while (row == 0 || col != 0) { values[col].add(token.getString()); token.advance(); col++; if(col % values.length == 0) { col = 0; row++; } } while(!token.isEOF() && !token.isLoopEnd() && token.isValue()) { token.advance(); } allocatedMemory = runtime.totalMemory(); freeMemory = runtime.freeMemory(); totalFree = (freeMemory + (maxMemory - allocatedMemory)); percentMemFree = (double)totalFree/(double)maxMemory - 0.04; //coordFile.remove(model); //model = null; } // Skip the meaningless stop_ token if any (NMR-STAR) if(token.isLoopEnd()) token.advance(); if(col != 0) { /* debugging * / for(int j = 0; j < row; j++) { for(int i = 0; i < values.length; i++) System.err.print(values[i].get(j)+" "); System.err.println(); } System.err.println("-----"); for(int i = 0; i < col; i++) System.err.println(values[i].get(row)); /* debugging */ throw new ParseException("[line "+(input.getLineNumber()+1)+"] " +"Not enough values to complete row "+(row+1)+" in loop_", input.getLineNumber()+1); } if(row == 0) throw new ParseException("[line "+(input.getLineNumber()+1)+"] " +"No data values declared for loop_ (0 rows)", input.getLineNumber()+1); for(int i = 0; i < names.size(); i++) cell.putItem((String)names.get(i), values[i]); //System.out.println("done with loop"); } //}}} //{{{ doItem //############################################################################## protected void doItem(DataCell cell) throws IOException, ParseException { if(!token.isName()) throw new ParseException("[line "+(input.getLineNumber()+1)+"] " +"Illegal token type '"+token.getType()+"' when data name was expected", input.getLineNumber()+1); String name = token.getString(); token.advance(); if(!token.isValue()) throw new ParseException("[line "+(input.getLineNumber()+1)+"] " +"Illegal token type '"+token.getType()+"' when data value was expected", input.getLineNumber()+1); String value = token.getString(); cell.putItem(name, value); token.advance(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ main (for testing) //############################################################################## /* for testing */ public static void main(String[] args) throws IOException, ParseException { LineNumberReader in = new LineNumberReader(new InputStreamReader(System.in)); StarReader reader = new StarReader(); StarFile dom = reader.parse(in); System.out.println("Global items:"); System.out.println(dom.getGlobalBlock().getItemNames()); System.out.println(); System.out.println("Data blocks:"); System.out.println(dom.getDataBlockNames()); System.out.println(); for(Iterator iter = dom.getDataBlockNames().iterator(); iter.hasNext(); ) { String name = (String) iter.next(); DataBlock block = (DataBlock) dom.getDataBlock(name); System.out.println("DATA_"+block+" save frames:"); System.out.println(block.getSaveFrames()); System.out.println(); System.out.println("DATA_"+block+" items:"); System.out.println(block.getItemNames()); System.out.println(); } } /* for testing */ //}}} }//class king-2.21.120420/driftwood/src/driftwood/star/DataBlock.java0000644000000000000000000001057211531212756022054 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.star; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; //}}} /** * DataBlock represents a data_ block from a STAR file. * This type of data cell is unique in that it can contain other * data cells (save frames) and can fall back on a global_ block for * items that it doesn't define internally. * *

DataBlock objects are part of the Document Object Model (DOM) * defined by a StarFile object. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Wed May 19 10:11:42 EDT 2004 */ public class DataBlock extends DataCell { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## DataCell globalBlock = null; // may be null Map saveFrames = new UberMap(); // never null //}}} //{{{ Constructor(s) //############################################################################## public DataBlock(String name) { super(name); } //}}} //{{{ get/remove/clear/addSaveFrame //############################################################################## /** Retrieves a save frame by name, or null if unknown. */ public DataCell getSaveFrame(String cellName) { return (DataCell) saveFrames.get(cellName); } /** Retrieves all save frames as an unmodifiable collection. */ public Collection getSaveFrames() { return Collections.unmodifiableCollection(saveFrames.values()); } /** Removes the named save frame if it exists. */ public DataCell removeSaveFrame(String cellName) { return (DataCell) saveFrames.remove(cellName); } /** Removes all save frames. */ public void clearSaveFrames() { saveFrames.clear(); } /** Adds the specified save frame. All save frames must have unique names. */ public DataCell addSaveFrame(DataCell sf) { return (DataCell) saveFrames.put(sf.getName(), sf); } //}}} //{{{ getItemNames, getItem, getSingleItem //############################################################################## /** * Returns a Set<String> of all item names registered in this cell * and in its global block, if any. */ public Set getItemNames() { if(globalBlock == null) return super.getItemNames(); UberSet names = new UberSet(super.getItemNames()); names.addAll(globalBlock.getItemNames()); return Collections.unmodifiableSet(names); } /** * Returns a List<String> of the zero or more item values * associated with the given item name in this block or the global block. * If an item is defined in both places, priority is given to this block. * The list will be immutable. */ public List getItem(String itemName) { List l = super.getItem(itemName); if(l.isEmpty() && globalBlock != null) l = globalBlock.getItem(itemName); return l; } /** * Returns the single string value associated with the given key, * or null if missing from this data cell and from the global block. * @throws ClassCastException if the key maps to a list of values. */ public String getSingleItem(String itemName) { String s = super.getSingleItem(itemName); if(s == null && globalBlock != null) s = globalBlock.getSingleItem(itemName); return s; } //}}} //{{{ get/setGlobalBlock //############################################################################## /** Sets the data cell that this one will consult for additional item names. May be null. */ public void setGlobalBlock(DataCell gb) { this.globalBlock = gb; this.keys.clear(); // b/c it may contains keys from the global block } /** Gets the data cell that this one will consult for additional item names. May be null. */ public DataCell getGlobalBlock() { return globalBlock; } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/star/StarTokenizer.java0000644000000000000000000003371011531212756023033 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.star; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * StarTokenizer is a tokenizer that can handle all valid tokens * allowed by the STAR (Self-defining Text Archive and Retrival) file format * as of the 1994 paper by Hall and Spadaccini (J Chem Inf Comput Sci, 34:505). * *

This class takes in a stream of characters and outputs discrete tokens, * stripped of whitespace and quoting characters. Comments are discarded. * Data and save block names are returned stripped of their leading "data_" or "save_". * Data names are NOT stripped of their leading underscore. * *

Copyright (C) 2003-2004 by Ian W. Davis. All rights reserved. *
Begun on Mon Apr 7 13:34:38 EDT 2003 */ public class StarTokenizer //extends ... implements ... { //{{{ Constants static final String TYPE_NONE = "nil-type"; static final String TYPE_DATA_NAME = "data-name"; // token starting with _ static final String TYPE_DATA_VALUE = "data-value"; // any normal token static final String TYPE_GLOBAL_START = "global-start"; // start of a global_ block static final String TYPE_DATA_START = "data-start"; // start of a data_ block static final String TYPE_SAVE_START = "save-start"; // start of a save_ block static final String TYPE_SAVE_END = "save-end"; // end of a save_ block (save_) static final String TYPE_LOOP_START = "loop-start"; // start of a loop_ block (loop_) static final String TYPE_STOP = "stop"; // explicit end of a nested loop_ (stop_) static final int NIL_CHARACTER = -1; //}}} //{{{ Variable definitions //################################################################################################## LineNumberReader in; char[] buffer = new char[256]; int bufferIndex = 0; int firstChar; // first char of next token, or NIL if none long charsRead; // a count of how many characters we've read String stringValue; String type; boolean isBOL; boolean isEOF; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new StarTokenizer on the given input stream, * and advances it to the first token. * @throws IOException if there's a problem reading from the input stream */ public StarTokenizer(LineNumberReader input) throws IOException { in = input; charsRead = 0; isEOF = false; // A trick -- this makes the tokenizer think that // the first token is at the beginning of a line. firstChar = '\n'; advance(); } //}}} //{{{ buffer{Append, ToString, Clear} //################################################################################################## /** * We use our own custom buffer system because * StringBuffers allocate memory 16 chars (32 bytes) * at a time, which is then wasted when we convert * them to Strings. */ void bufferAppend(char ch) { if(bufferIndex >= buffer.length) { char[] newBuffer = new char[buffer.length * 2]; System.arraycopy(buffer, 0, newBuffer, 0, buffer.length); buffer = newBuffer; //error("Token too long; increased buffer size to "+buffer.length); } buffer[bufferIndex++] = ch; } /** Returns the current buffer contents as a string */ String bufferToString() { return new String(buffer, 0, bufferIndex); } /** Empties the buffer contents */ void bufferClear() { bufferIndex = 0; } //}}} //{{{ in_read, getCharsRead, error //################################################################################################## /** * A replacement for in.read() that allows us to track the * total number of character read so far. * Causes a performance penalty of less than 1%. */ int in_read() throws IOException { charsRead++; return in.read(); } /** Returns the number of characters read in thus far */ public long getCharsRead() { return charsRead; } void error(String msg) { SoftLog.err.println("[line "+(in.getLineNumber()+1)+"] "+msg); } //}}} //{{{ advance //################################################################################################## /** * Advances this tokenizer to the next token in the stream. * The type of token can be queried with the isXXX() functions, * and the value (in the appropriate form) can be retrieved with the getXXX() functions. * @throws IOException if there's a problem reading from the input stream */ public void advance() throws IOException { int c; // Init variables stringValue = null; type = TYPE_NONE; isBOL = false; bufferClear(); // Get first character (from stream or previously read) if(firstChar > 0) c = firstChar; else c = in_read(); firstChar = NIL_CHARACTER; // Skip leading whitespace and comments while(c == ' ' || c == '\n' || c == '\t' || c == '\f') { // LNR translates all linefeeds into '\n' isBOL = (c == '\n'); c = in_read(); if(c == '#') // skip comments { while(c != '\n' && c != -1) c = in_read(); } } // Guess token type based on first character if(c == -1) { isEOF = true; return; } else if(c == '\'' || c == '"') { readQuoted((char)c); type = TYPE_DATA_VALUE; } else if(isBOL && c == ';') { readLongQuoted((char)c); type = TYPE_DATA_VALUE; } else { bufferAppend((char)c); readUnquoted(); if(stringValue.startsWith("_")) type = TYPE_DATA_NAME; else if(stringValue.equals("loop_")) type = TYPE_LOOP_START; else if(stringValue.startsWith("save_")) { if(stringValue.length() == 5) type = TYPE_SAVE_END; else { stringValue = stringValue.substring(5); type = TYPE_SAVE_START; } } else if(stringValue.startsWith("data_")) { stringValue = stringValue.substring(5); type = TYPE_DATA_START; } else if(stringValue.equals("global_")) type = TYPE_GLOBAL_START; else if(stringValue.equals("stop_")) type = TYPE_STOP; else type = TYPE_DATA_VALUE; } bufferClear(); } //}}} //{{{ readQuoted //################################################################################################## /** Sets stringValue and appends characters to buffer */ void readQuoted(char close) throws IOException { int c, depth = 1; while(depth > 0) { //c = in_read(); if(firstChar > 0) c = firstChar; else c = in_read(); firstChar = NIL_CHARACTER; if(c == -1) { depth = 0; error("Quoted token terminated by EOF; type = "+close+""+close); } else if(c == '\n') { depth = 0; error("Quoted token terminated by newline; type = "+close+""+close); } //else if(c == close) depth--; else if(c == close) { int c2 = in_read(); firstChar = c2; // we're just peeking // close doesn't terminate string unless followed by whitespace if(c2 == -1 || c2 == ' ' || c2 == '\n' || c2 == '\t' || c2 == '\f') depth--; // real end of quoted string else bufferAppend((char)c); // literally part of the string } else bufferAppend((char)c); } stringValue = bufferToString(); } //}}} //{{{ readLongQuoted //################################################################################################## /** Sets stringValue and appends characters to buffer */ void readLongQuoted(char close) throws IOException { int c, depth = 1; boolean lastWasNewline = false; while(depth > 0) { c = in_read(); if(c == -1) { depth = 0; error("Quoted token terminated by EOF; type = "+close+""+close); } else if(c == '\n') lastWasNewline = true; else if(lastWasNewline) { if(c == close) depth--; else { bufferAppend('\n'); bufferAppend((char)c); } lastWasNewline = false; } else bufferAppend((char)c); } stringValue = bufferToString(); } //}}} //{{{ readUnquoted //################################################################################################## /** Sets stringValue and appends characters to buffer */ void readUnquoted() throws IOException { int c; while(true) { c = in_read(); if(c == -1 || c == ' ' || c == '\n' || c == '\t' || c == '\f') { firstChar = c; break; } else bufferAppend((char)c); } stringValue = bufferToString(); } //}}} //{{{ is{BOL, EOF, etc}, getType //################################################################################################## /** Returns true if the current token occured at the Beginning Of a Line */ public boolean isBOL() { return isBOL; } /** Returns true if we've reached the End Of File */ public boolean isEOF() { return isEOF; } /** Returns true if the current token is the name of a data item. */ public boolean isName() { return (type == TYPE_DATA_NAME); } /** Returns true if the current token is the value of a data item. */ public boolean isValue() { return (type == TYPE_DATA_VALUE); } /** Returns true if the current token is the start of a global_ block */ public boolean isGlobal() { return (type == TYPE_GLOBAL_START); } /** Returns true if the current token is the start of a data_ block */ public boolean isData() { return (type == TYPE_DATA_START); } /** Returns true if the current token is the start of a save_ block */ public boolean isSaveStart() { return (type == TYPE_SAVE_START); } /** Returns true if the current token is the end of a save_ block */ public boolean isSaveEnd() { return (type == TYPE_SAVE_END); } /** Returns true if the current token is the start of a loop_ */ public boolean isLoopStart() { return (type == TYPE_LOOP_START); } /** Returns true if the current token is the explicit end of a loop_ (ie, a stop_) */ public boolean isLoopEnd() { return (type == TYPE_STOP); } /** Returns the type of the current token as a string */ public String getType() { return type; } //}}} //{{{ getString //################################################################################################## /** * Returns the value of the current token as a string, * or null if there is no token available. */ public String getString() { //if(stringValue == null) // throw new IllegalStateException("No token is available"); return stringValue; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ Main() and main() //################################################################################################## /** * Main() function for running as an application. * Takes a STAR file on stdin and writes tokens to stdout */ public void Main() throws IOException { String s; long time = System.currentTimeMillis(); while(!isEOF()) { s = getString(); if(isBOL()) System.out.println("[BOL:"+justifyLeft(getType(), 12)+"] "+s); else System.out.println("[ "+justifyLeft(getType(), 12)+"] "+s); advance(); } time = System.currentTimeMillis() - time; System.out.println("END OF FILE ("+time+" ms)"); System.out.println(); System.out.println(); } public static void main(String[] args) { if(args.length > 0) System.err.println("*** Takes a STAR file on stdin and writes tokens to stdout."); try { new StarTokenizer(new LineNumberReader(new InputStreamReader(System.in))).Main(); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } //}}} //{{{ justifyLeft //################################################################################################## /** * Pads a string with spaces and left-justifies it. * * @param s the string to justify * @param len the desired length */ public static String justifyLeft(String s, int len) { StringBuffer sb = new StringBuffer(s); sb.ensureCapacity(len); for(int i = s.length(); i < len; i++) sb.append(' '); return sb.toString(); } //}}} }//class king-2.21.120420/driftwood/src/driftwood/star/DataCell.java0000644000000000000000000001371311531212756021701 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.star; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; //}}} /** * DataCell represents a grouping of data items in a STAR file: * a data block, a global block, or a save frame. * Care is taken to ensure all Lists stored in a data cell are immutable, * which is required to guarantee the correctness of the database table primary keys. * *

DataCell objects are part of the Document Object Model (DOM) * defined by a StarFile object. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Sun May 16 14:31:25 EDT 2004 */ public class DataCell //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## UberMap items; // contains Strings and List Map keys; // cached primary key lookup tables String name; // the name of this data cell //}}} //{{{ Constructor(s) //############################################################################## public DataCell(String name) { super(); this.name = name; this.items = new UberMap(); this.keys = new HashMap(); } //}}} //{{{ toString, getName, clear, removeItem //############################################################################## /** Returns the name of this data cell. */ public String toString() { return getName(); } /** Returns the name of this data cell. */ public String getName() { return name; } /** Removes all data items from this cell. */ public void clear() { items.clear(); keys.clear(); } /** Removes the named data item if it is present. */ public Object removeItem(String itemName) { keys.remove(itemName); return items.remove(itemName); } //}}} //{{{ getItemNames, getItem, getSingleItem //############################################################################## /** Returns a Set<String> of all item names registered in this cell. */ public Set getItemNames() { return Collections.unmodifiableSet(items.keySet()); } /** * Returns a List<String> of the zero or more item values * associated with the given item name. * The list will be immutable. */ public List getItem(String itemName) { Object o = items.get(itemName); if(o == null) return Collections.EMPTY_LIST; else if(o instanceof String) return Collections.singletonList(o); else return (List) o; } /** * Returns the single string value associated with the given key, * or null if missing from this data cell. * @throws ClassCastException if the key maps to a list of values. */ public String getSingleItem(String itemName) { return (String) items.get(itemName); } //}}} //{{{ getKey //############################################################################## /** * Data in STAR files is often structured into the logical equivalent * of tables in a relational database. * Thus, some columns (data name -> list of data values) act as * primary keys. * This function returns a Map<String value, Integer index> to use for * looking up table row indices based on the value of that row's key. * The generated keys are cached unless the key column changes. * Returns an empty map if the item name is unknown. * @throws IllegalArgumentException if the named column contains * duplicate values. */ public Map getKey(String itemName) { Map key = (Map) keys.get(itemName); if(key != null) return key; int i = 0; key = new HashMap(); List data = getItem(itemName); for(Iterator iter = data.iterator(); iter.hasNext(); ) { Object datum = iter.next(); if(key.put(datum, new Integer(i++)) != null) throw new IllegalArgumentException("Column "+itemName+" contains duplicate value: "+datum); } Map unmodKey = Collections.unmodifiableMap(key); keys.put(itemName, unmodKey); return unmodKey; } //}}} //{{{ putItem, putItemAfter //############################################################################## /** Replaces the previous item of the same name or adds to the end of the list. */ public void putItem(String itemName, String itemValue) { keys.remove(itemName); items.put(itemName, itemValue); } /** Replaces the previous item of the same name or adds to the end of the list. */ public void putItem(String itemName, List itemValues) { keys.remove(itemName); String[] data = (String[]) itemValues.toArray(new String[itemValues.size()]); items.put(itemName, new FinalArrayList(data)); } /** Inserts the new item after the reference item or at the end of the list. */ public void putItemAfter(String refItem, String itemName, String itemValue) { keys.remove(itemName); items.putAfter(refItem, itemName, itemValue); } /** Inserts the new item after the reference item or at the end of the list. */ public void putItemAfter(String refItem, String itemName, List itemValues) { keys.remove(itemName); String[] data = (String[]) itemValues.toArray(new String[itemValues.size()]); items.putAfter(refItem, itemName, new FinalArrayList(data)); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/0000755000000000000000000000000011744306100017164 5ustar rootrootking-2.21.120420/driftwood/src/driftwood/gui/ReclickListSelectionModel.java0000644000000000000000000001070411531212752025073 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; //import driftwood.*; //}}} /** * ReclickListSelectionModel has not yet been documented. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Tue Oct 19 11:01:31 EDT 2004 */ public class ReclickListSelectionModel implements ListSelectionModel { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## JList ourList; int selection = -1; // no selection boolean isAdjusting = false; List listeners = new ArrayList(); //}}} //{{{ Constructor(s) //############################################################################## public ReclickListSelectionModel(JList list) { super(); this.ourList = list; } //}}} //{{{ methods for ListSelectionModel //############################################################################## public void addListSelectionListener(ListSelectionListener x) { this.listeners.add(x); } public void addSelectionInterval(int index0, int index1) { this.selection = index1; fireValueChanged(); } public void clearSelection() { this.selection = -1; fireValueChanged(); } public int getAnchorSelectionIndex() { return this.selection; } public int getLeadSelectionIndex() { return this.selection; } public int getMaxSelectionIndex() { return this.selection; } public int getMinSelectionIndex() { return this.selection; } public int getSelectionMode() { return SINGLE_SELECTION; } public boolean getValueIsAdjusting() { return this.isAdjusting; } public void insertIndexInterval(int index, int length, boolean before) { // NO_OP System.err.println("index="+index+"; length="+length+"; before="+before); } public boolean isSelectedIndex(int index) { return (index == this.selection); } public boolean isSelectionEmpty() { return (-1 == this.selection); } public void removeIndexInterval(int index0, int index1) { if(index0 <= this.selection && this.selection <= index1) { this.selection = -1; fireValueChanged(); } } public void removeListSelectionListener(ListSelectionListener x) { this.listeners.remove(x); } public void removeSelectionInterval(int index0, int index1) { if(index0 <= this.selection && this.selection <= index1) { this.selection = -1; fireValueChanged(); } } public void setAnchorSelectionIndex(int index) { this.selection = index; fireValueChanged(); } public void setLeadSelectionIndex(int index) { this.selection = index; fireValueChanged(); } public void setSelectionInterval(int index0, int index1) { this.selection = index1; fireValueChanged(); } public void setSelectionMode(int selectionMode) { if(selectionMode != SINGLE_SELECTION) throw new IllegalArgumentException("Only SINGLE_SELECTION is allowed"); } public void setValueIsAdjusting(boolean valueIsAdjusting) { this.isAdjusting = valueIsAdjusting; fireValueChanged(); } //}}} //{{{ fireValueChanged //############################################################################## protected void fireValueChanged() { // Changes to selection may call multiple functions, but we want to // avoid sending multiple events to our listeners! if(this.getValueIsAdjusting()) return; ListSelectionEvent ev = new ListSelectionEvent(this.ourList, 0, this.ourList.getModel().getSize()-1, this.isAdjusting); for(Iterator iter = this.listeners.iterator(); iter.hasNext(); ) { ListSelectionListener l = (ListSelectionListener) iter.next(); l.valueChanged(ev); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/FullTextAsTipsJTable.java0000644000000000000000000000472711531212752024021 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.table.*; //import driftwood.*; //}}} /** * FullTextAsTipsJTable is necessary because JTable abbreviates long * items with an ellipsis (...) but doesn't have the sense to show the full text * when the mouse is hovered over it. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Apr 26 11:36:58 EDT 2007 */ public class FullTextAsTipsJTable extends JTable { //{{{ Constants //}}} //{{{ CLASS: FullTextAsTipsJTableHeader //############################################################################## public static class FullTextAsTipsJTableHeader extends JTableHeader { public FullTextAsTipsJTableHeader(TableColumnModel cm) { super(cm); } public String getToolTipText(MouseEvent e) { Point p = e.getPoint(); int index = columnModel.getColumnIndexAtX(p.x); //int realIndex = columnModel.getColumn(index).getModelIndex(); return columnModel.getColumn(index).getHeaderValue().toString(); } } //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public FullTextAsTipsJTable(TableModel dm) { super(dm); setTableHeader(new FullTextAsTipsJTableHeader(getColumnModel())); } //}}} //{{{ getToolTipText //############################################################################## public String getToolTipText(MouseEvent e) { Point p = e.getPoint(); int rowIndex = rowAtPoint(p); int colIndex = columnAtPoint(p); //int realColumnIndex = convertColumnIndexToModel(colIndex); Object val = getValueAt(rowIndex, colIndex); if(val == null) return super.getToolTipText(e); // need line breaks to be respected: else return "

"+val.toString();
    }
//}}}

//{{{ empty_code_segment
//##############################################################################
//}}}

//{{{ empty_code_segment
//##############################################################################
//}}}
}//class

king-2.21.120420/driftwood/src/driftwood/gui/SuffixFileFilter.java0000644000000000000000000000776511531212752023263 0ustar  rootroot// (jEdit options) :folding=explicit:collapseFolds=1:
//{{{ Package, imports
package driftwood.gui;

//import java.awt.*;
//import java.awt.event.*;
import java.io.*;
import java.net.URL;
import java.text.DecimalFormat;
import java.util.*;
//import java.util.regex.*;
//import javax.swing.*;
//}}}
/**
* SuffixFileFilter filters files based on their
* suffixes/extensions/endings. You should include a dot when
* specifying suffixes, eg. ".png", ".jpg", and ".gif".
*
* 

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Tue Mar 4 13:00:39 EST 2003 */ public class SuffixFileFilter extends javax.swing.filechooser.FileFilter implements java.io.FileFilter, java.io.FilenameFilter { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## String description; ArrayList suffixes; ArrayList patterns; boolean caseSensitive; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new SuffixFileFilter that ignores case * @param description the visible name of the filter, eg "Image files" */ public SuffixFileFilter(String description) { this(description, false); } /** * Creates a new SuffixFileFilter * @param description the visible name of the filter, eg "Image files" * @param caseSensitive if false, names are compared without regard to case */ public SuffixFileFilter(String description, boolean caseSensitive) { this.description = description; this.caseSensitive = caseSensitive; suffixes = new ArrayList(); patterns = new ArrayList(); } //}}} //{{{ addSuffix //################################################################################################## /** * Adds a new suffix. * Files that match any one or more of the added * suffixes will be accepted for display. */ public void addSuffix(String suffix) { if(!caseSensitive) suffix = suffix.toLowerCase(); suffixes.add(suffix); } //}}} //{{{ addPattern /** * Adds a new regular expression String to match. */ public void addPattern(String pattern) { patterns.add(pattern); } //}}} //{{{ getDescription //################################################################################################## /** Returns the description string from the constructor */ public String getDescription() { return description; } //}}} //{{{ accept //################################################################################################## public boolean accept(File f) { if(f == null) return false; // Don't hide existing directories, but don't allow // any old filename that happens to not have an extension. if((f.isDirectory() || !f.isFile()) && f.exists()) return true; return accept(f.getName()); } public boolean accept(String name) { if(name == null) return false; if(!caseSensitive) name = name.toLowerCase(); String suffix; boolean ok = false; for(Iterator iter = suffixes.iterator(); iter.hasNext() && !ok; ) { suffix = (String)iter.next(); if(name.endsWith(suffix)) ok = true; } return (ok||acceptPattern(name)); } public boolean accept(File path, String filename) { return accept(filename); } public boolean acceptPattern(String name) { if(name == null) return false; String pattern; boolean ok = false; for(Iterator iter = patterns.iterator(); iter.hasNext() && !ok; ) { pattern = (String)iter.next(); if(name.matches(pattern)) ok = true; } return ok; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/MenuList.java0000644000000000000000000000574611531212752021606 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; //import driftwood.*; //}}} /** * MenuList is a simple system for handling lists * of items in a menu where the user must choose a single item. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon May 26 13:21:04 EDT 2003 */ abstract public class MenuList implements ActionListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## private Map radioToItemMap; private JMenu theMenu; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @param items the items to choose from (should probably have the Set property) * @param defaultItem the item to be selected initially. Defaults to none (null). * @param menu the menu to build the list in. */ public MenuList(Collection items, Object defaultItem, JMenu menu) { super(); theMenu = menu; radioToItemMap = new HashMap(); ButtonGroup group = new ButtonGroup(); JRadioButtonMenuItem radio; Object item; for(Iterator iter = items.iterator(); iter.hasNext(); ) { item = iter.next(); radio = new JRadioButtonMenuItem(item.toString()); group.add(radio); if(item.equals(defaultItem)) radio.setSelected(true); theMenu.add(radio); radio.addActionListener(this); radioToItemMap.put(radio, item); } } public MenuList(Collection items, Object defaultItem) { this(items, defaultItem, new JMenu()); } public MenuList(Collection items) { this(items, null); } //}}} //{{{ getMenu, actionPerformed //################################################################################################## public JMenu getMenu() { return theMenu; } public void actionPerformed(ActionEvent ev) { Object item = radioToItemMap.get(ev.getSource()); itemSelected(item); } //}}} //{{{ itemSelected //################################################################################################## /** * This function will be called when an item is selected from * the menu of radio buttons. * Subclasses should implement this to create custom functionality. */ abstract protected void itemSelected(Object item); //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/AlignBox.java0000644000000000000000000000336111531212752021540 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; //import driftwood.*; //}}} /** * AlignBox implements get and set for alignment properties, * which Boxes don't have in Java 1.3 because they're not JComponents. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Tue May 6 15:24:44 EDT 2003 */ public class AlignBox extends Box { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## private float alignX = 0; private float alignY = 0; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a horizontal box. */ public AlignBox() { this(BoxLayout.X_AXIS); } public AlignBox(int axis) { super(axis); } //}}} //{{{ get/set{AlignmentX, AlignmentY} //################################################################################################## /** Default value is 0.0 */ public float getAlignmentX() { return alignX; } public void setAlignmentX(float a) { alignX = a; } /** Default value is 0.0 */ public float getAlignmentY() { return alignY; } public void setAlignmentY(float a) { alignY = a; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/SwapBox.java0000644000000000000000000000735511531212752021427 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; //import driftwood.*; //}}} /** * SwapBox is a wrapper component that acts * as a placeholder in a complex layout. It provides any * easy way to swap other components into and out of the * same space, and provides methods for updating its * containers. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Tue May 6 15:24:44 EDT 2003 */ public class SwapBox extends AlignBox { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## private Component targetComp = null; private boolean doAutoPack = false; private boolean doAutoValidate = true; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a box that will re-validate() its parents but not re-pack() them. * @param comp the target Component to be swapped in. May be null. */ public SwapBox(Component comp) { super(BoxLayout.X_AXIS); this.setTarget(comp); } //}}} //{{{ get/setTarget //################################################################################################## /** Gets the component. May be null. */ public Component getTarget() { return targetComp; } /** * Sets the swap in / swap out component. * @param comp the target Component to be swapped in. May be null. */ public void setTarget(Component comp) { if(targetComp != null) this.remove(targetComp); targetComp = comp; if(targetComp != null) this.add(targetComp); this.invalidate(); if(doAutoValidate) this.validateParent(); if(doAutoPack) this.packParent(); } //}}} //{{{ get/set{AutoPack, AutoValidate} //################################################################################################## public boolean getAutoPack() { return doAutoPack; } public void setAutoPack(boolean b) { doAutoPack = b; } public boolean getAutoValidate() { return doAutoValidate; } public void setAutoValidate(boolean b) { doAutoValidate = b; } //}}} //{{{ packParent, validateParent //################################################################################################## /** * Causes the top-level parent of this component to be laid out again, * assuming some of its children have been invalidated. */ public void validateParent() { // Find the top-level ancestor of this component, // and cause it to be laid out again. Container parent = this; while(parent.getParent() != null) parent = parent.getParent(); parent.validate(); } /** * Causes the window/dialog/etc that contains this component * to be resized and laid out again, * assuming some of its children have been invalidated. */ public void packParent() { // Find the top-level ancestor of this component, // and cause it to be laid out again. Container parent = this; while((parent = parent.getParent()) != null) { if(parent instanceof Window) { ((Window)parent).pack(); break; } } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/TextCutCopyPasteMenu.java0000644000000000000000000000674111531212752024117 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; //import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.text.JTextComponent; //import driftwood.*; //}}} /** * TextCutCopyPasteMenu provides a cut/copy/paste context * menu for JTextComponents. It can be used as a contextual * (popup) menu, or incorporated into another menu. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Tue Jul 8 12:30:59 EDT 2003 */ public class TextCutCopyPasteMenu implements MouseListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## JTextComponent target; JPopupMenu popupMenu; //}}} //{{{ Constructor(s) //############################################################################## public TextCutCopyPasteMenu(JTextComponent target) { super(); this.target = target; createPopupMenu(); target.addMouseListener(this); } //}}} //{{{ createPopupMenu //############################################################################## private void createPopupMenu() { ReflectiveAction cutAction, copyAction, pasteAction, selAction; cutAction = new ReflectiveAction("Cut", null, this, "onCut"); copyAction = new ReflectiveAction("Copy", null, this, "onCopy"); pasteAction = new ReflectiveAction("Paste", null, this, "onPaste"); selAction = new ReflectiveAction("Select all", null, this, "onSelectAll"); popupMenu = new JPopupMenu(); popupMenu.add(new JMenuItem(cutAction)); popupMenu.add(new JMenuItem(copyAction)); popupMenu.add(new JMenuItem(pasteAction)); popupMenu.addSeparator(); popupMenu.add(new JMenuItem(selAction)); } //}}} //{{{ mouseClicked, mousePressed, mouseReleased //################################################################################################## public void mouseClicked(MouseEvent ev) { checkForPopupEvent(ev); } public void mouseEntered(MouseEvent ev) {} public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) { checkForPopupEvent(ev); } public void mouseReleased(MouseEvent ev) { checkForPopupEvent(ev); } private void checkForPopupEvent(MouseEvent ev) { if(ev.isPopupTrigger()) { popupMenu.show(target, ev.getX(), ev.getY()); } } //}}} //{{{ on{Cut, Copy, Paste} //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onCut(ActionEvent ev) { target.cut(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onCopy(ActionEvent ev) { target.copy(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onPaste(ActionEvent ev) { target.paste(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSelectAll(ActionEvent ev) { target.selectAll(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/FoldingBox.java0000644000000000000000000000500711531212752022067 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; //import driftwood.*; //}}} /** * FoldingBox is an IndentBox which * removes or inserts a component based on the state of a button. * * This allows for GUI elements that expand, tree-like, * when e.g. a checkbox is hit. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Tue May 6 15:24:44 EDT 2003 */ public class FoldingBox extends IndentBox implements ChangeListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## ButtonModel btnModel; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public FoldingBox(ButtonModel model, Component comp) { super(comp); this.btnModel = model; btnModel.addChangeListener(this); Component target = this.getTarget(); if(target != null) target.setVisible(btnModel.isSelected()); } public FoldingBox(AbstractButton btn, Component comp) { this(btn.getModel(), comp); } //}}} //{{{ stateChanged //################################################################################################## public void stateChanged(ChangeEvent ev) { Component target = this.getTarget(); if(target != null) target.setVisible(btnModel.isSelected()); // Mark this component and its children as needing to be laid out again this.invalidate(); if(getAutoValidate()) validateParent(); if(getAutoPack()) packParent(); } //}}} //{{{ setTarget //################################################################################################## public void setTarget(Component comp) { // could be (is) called by superclass constructor! // thus btnModel hasn't been initialized yet... if(comp != null && btnModel != null) comp.setVisible(btnModel.isSelected()); super.setTarget(comp); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/TablePane.java0000644000000000000000000004163011531212752021671 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * TablePane is a second-generation tool for * simplifying the task of hand-coding a GUI. * It is closely modeled on HTML tables, which are a very * flexible tool, particularly when nested. * The underlying framework uses GridBagLayout. * *

Nesting is simplified by the startSubtable and * endSubtable functions. * When a subtable is started, a new TablePane object is created. * The current TablePane is then connected to the new TablePane, * and its methods "pass through" to the subtable until * endSubtable is called. * Subtables do not inherit the layout properties of their parents. * *

Changes to the layout (e.g. weights(), insets(), center()) * persist from component to component within the current table. * Use save() and restore() to make one-time changes. * *

This class is geared toward relatively static layouts, * and may not be as useful in designing layouts that change frequently. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Wed Dec 18 14:25:54 EST 2002 */ public class TablePane extends JPanel // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## TablePane subtable; GridBagLayout layout; GridBagConstraints gbc; LinkedList gbcStack; /** these are the real x,y coordinates, b/c we don't want them saved on the stack */ int gridx, gridy; /** Map<Point, Component> used to determine if a given table cell is occupied. */ Map occupants; /** Set this to true if you want debugging messages to stderr */ public boolean _debug = false; //}}} //{{{ Constructor(s) //################################################################################################## /** * General purpose constructor. * The new table has the following defaults: *

    *
  • Horizontal and vertical weights are 1.0
  • *
  • Components do not stretch to fill space
  • *
  • Components align to the left (horiz.) and middle (vert.)
  • *
  • Each cell has external padding (insets) of 2 pixels on all sides, and no internal padding
  • *
*/ public TablePane() { super(); subtable = null; layout = new GridBagLayout(); this.setLayout(layout); gbc = new GridBagConstraints(); gbc.weightx = 1.0; gbc.weighty = 1.0; gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.insets = new Insets(2,2,2,2); gbc.ipadx = 0; gbc.ipady = 0; gridx = 0; gridy = 0; gbcStack = new LinkedList(); occupants = new HashMap(); } //}}} //{{{ startSubtable, endSubtable, isSubtable, getCurrent //################################################################################################## /** * Starts a new subtable, and adds it to the current table. * Calls to this table will "pass through" to the subtable * until endSubtable is called. Subtables may * be nested arbitrarily deep. * @return this (for chaining) */ public TablePane startSubtable() { return startSubtable(1, 1); } public TablePane startSubtable(int gridwidth, int gridheight) { if(subtable != null) subtable.startSubtable(gridwidth, gridheight); else { TablePane tp = new TablePane(); this.add(tp, gridwidth, gridheight); subtable = tp; } return this; } /** * Ends the mostly recently started subtable. * @return this (for chaining) * @throws UnsupportedOperationException if there are no active subtables */ public TablePane endSubtable() { if(subtable == null) throw new UnsupportedOperationException("No subtable exists"); else if(subtable.subtable == null) subtable = null; else subtable.endSubtable(); return this; } /** * Returns true if startSubtable * has been called more times than endSubtable; * that is, if function calls on this object affect a subtable * rather than this object itself. */ public boolean isSubtable() { return (subtable != null); } /** * Returns the current TablePane that will be affected * by function calls on this object (i.e., the active * subtable). If there are no subtables, returns this. */ public TablePane getCurrent() { if(subtable != null) return subtable.getCurrent(); else return this; } //}}} //{{{ addCell, add (and support methods) //################################################################################################## /** * Adds the specified component at the end of the current row. * @return this (for chaining) */ public TablePane addCell(Component c) { add(c); return this; } /** * Adds the specified component at the end of the current row. * It will occupy gridwidth columns and gridheight rows. * @return this (for chaining) */ public TablePane addCell(Component c, int gridwidth, int gridheight) { add(c, gridwidth, gridheight); return this; } /** * Adds the specified component at the end of the current row. * This does the same thing as addCell(), but can't be chained. * @return the Component c that was just added */ public Component add(Component c) { return add(c, 1, 1); } /** * Adds the specified component at the end of the current row. * It will occupy gridwidth columns and gridheight rows. * This does the same thing as addCell(), but can't be chained. * @return the Component c that was just added */ public Component add(Component c, int gridwidth, int gridheight) { if(subtable != null) { return subtable.add(c, gridwidth, gridheight); } else { advanceToNextEmptyCell(); gbc.gridx = gridx; gbc.gridy = gridy; gbc.gridwidth = Math.max(1, gridwidth); gbc.gridheight = Math.max(1, gridheight); Component ret = addWithConstraints(c, gbc); markCellsAsOccupied(c, gbc); gridx++; return ret; } } /** Simple add with GridBagConstraints */ protected Component addWithConstraints(Component c, GridBagConstraints constr) { if(_debug) SoftLog.err.println("Added "+c.getClass()+" at "+constr.gridx+","+constr.gridy+" measuring "+constr.gridwidth+"x"+constr.gridheight); layout.setConstraints(c, constr); return super.add(c); } /** * Updates gridx so that (gridx,gridy) points to the first * empty cell on the current row. * If the current cell is empty, takes no action. */ protected void advanceToNextEmptyCell() { Point pt = new Point(gridx, gridy); while(occupants.get(pt) != null) { gridx++; pt.setLocation(gridx, gridy); } } /** * Adds entries to occupied so we can mark cells as being used. */ protected void markCellsAsOccupied(Component c, GridBagConstraints constr) { Point pt; int x, y; for(y = 0; y < constr.gridheight; y++) { for(x = 0; x < constr.gridwidth; x++) { pt = new Point(constr.gridx + x, constr.gridy + y); occupants.put(pt, c); } } } //}}} //{{{ skip, newRow, replace* //################################################################################################## /** * Skips the current cell (leaves it empty). * @return this (for chaining) */ public TablePane skip() { if(subtable != null) subtable.skip(); else gridx++; return this; } /** * Starts a new row in the table. * All subsequently added components will be on the new row. * @return this (for chaining) */ public TablePane newRow() { if(subtable != null) subtable.newRow(); else { gridy += 1; gridx = 0; } return this; } /** CAN'T WORK TILL WE WRITE ADD & REMOVE!! * Replaces oldComp with newComp, * assuming oldComp is found in a TablePane. * Use null for newComp to * remove oldComp. * * @return true on success, false on error * / public static boolean replace(Component oldComp, Component newComp) { if(oldComp == null) return false; Container cont = oldComp.getParent(); if(cont == null | !(cont instanceof TablePane)) return false; TablePane tp = (TablePane)cont; GridBagConstraints constr = tp.layout.getConstraints(oldComp); tp.remove(oldComp); if(newComp == null) return true; tp.addWithConstraints(newComp, constr); return true; }*/ //}}} //{{{ save, restore //################################################################################################## /** * Pushes the current alignment, insets, etc. onto a stack. * @return this (for chaining) */ public TablePane save() { if(subtable != null) subtable.save(); else gbcStack.addLast(gbc.clone()); return this; } /** * Restores alignment, insets, etc. saved with save(). * @return this (for chaining) * @throws NoSuchElementException if nothing has been saved on the stack. */ public TablePane restore() { if(subtable != null) subtable.restore(); else gbc = (GridBagConstraints)gbcStack.removeLast(); return this; } //}}} //{{{ weights, insets, pad //################################################################################################## /** * Sets the weighting assigned to components, * which determines where extra space is allocated * during layout. * @return this (for chaining) */ public TablePane weights(double wx, double wy) { if(subtable != null) subtable.weights(wx, wy); else { gbc.weightx = wx; gbc.weighty = wy; } return this; } /** * Sets the insets (external padding, empty space) * that surround components. * @return this (for chaining) */ public TablePane insets(int top, int left, int bottom, int right) { if(subtable != null) subtable.insets(top, left, bottom, right); else { gbc.insets = new Insets(top, left, bottom, right); } return this; } /** Sets the insets symmetrically. */ public TablePane insets(int tlbr) { return insets(tlbr, tlbr, tlbr, tlbr); } /** * Sets the padding, that is, the amount of space * that will be guaranteed for a component in * addition to its minimumSize. * @return this (for chaining) */ public TablePane pad(int px, int py) { if(subtable != null) subtable.pad(px, py); else { gbc.ipadx = px; gbc.ipady = py; } return this; } /** Sets the padding symmetrically. */ public TablePane pad(int pxy) { return pad(pxy, pxy); } //}}} //{{{ hfill, vfill, etc. //################################################################################################## /** * Determines whether components expand to fill * the horizontal space allocated to them. * @return this (for chaining) */ public TablePane hfill(boolean h) { if(subtable != null) subtable.hfill(h); else fill(h, isVfill()); return this; } /** * Determines whether components expand to fill * the vertical space allocated to them. * @return this (for chaining) */ public TablePane vfill(boolean v) { if(subtable != null) subtable.vfill(v); else fill(isHfill(), v); return this; } private void fill(boolean h, boolean v) { if(h) { if(v) gbc.fill = GridBagConstraints.BOTH; else gbc.fill = GridBagConstraints.HORIZONTAL; } else { if(v) gbc.fill = GridBagConstraints.VERTICAL; else gbc.fill = GridBagConstraints.NONE; } } private boolean isHfill() { return (gbc.fill == GridBagConstraints.HORIZONTAL || gbc.fill == GridBagConstraints.BOTH); } private boolean isVfill() { return (gbc.fill == GridBagConstraints.VERTICAL || gbc.fill == GridBagConstraints.BOTH); } //}}} //{{{ left, center, right, top, middle, bottom, etc. //################################################################################################## /** Sets horizontal alignment to left. */ public TablePane left() { if(subtable != null) subtable.left(); else align(0, getValignment()); return this; } /** Sets horizontal alignment to center. */ public TablePane center() { if(subtable != null) subtable.center(); else align(1, getValignment()); return this; } /** Sets horizontal alignment to right. */ public TablePane right() { if(subtable != null) subtable.right(); else align(2, getValignment()); return this; } /** Sets vertical alignment to top. */ public TablePane top() { if(subtable != null) subtable.top(); else align(getHalignment(), 0); return this; } /** Sets vertical alignment to middle. */ public TablePane middle() { if(subtable != null) subtable.middle(); else align(getHalignment(), 1); return this; } /** Sets vertical alignment to bottom. */ public TablePane bottom() { if(subtable != null) subtable.bottom(); else align(getHalignment(), 2); return this; } private void align(int h, int v) { if(h == 2)//right { if(v == 2) gbc.anchor = GridBagConstraints.SOUTHEAST; else if(v == 1) gbc.anchor = GridBagConstraints.EAST; else gbc.anchor = GridBagConstraints.NORTHEAST; } else if(h == 1)//center { if(v == 2) gbc.anchor = GridBagConstraints.SOUTH; else if(v == 1) gbc.anchor = GridBagConstraints.CENTER; else gbc.anchor = GridBagConstraints.NORTH; } else//left { if(v == 2) gbc.anchor = GridBagConstraints.SOUTHWEST; else if(v == 1) gbc.anchor = GridBagConstraints.WEST; else gbc.anchor = GridBagConstraints.NORTHWEST; } } private int getHalignment() { if(gbc.anchor == GridBagConstraints.SOUTHEAST || gbc.anchor == GridBagConstraints.EAST || gbc.anchor == GridBagConstraints.NORTHEAST) return 2; else if(gbc.anchor == GridBagConstraints.SOUTH || gbc.anchor == GridBagConstraints.CENTER || gbc.anchor == GridBagConstraints.NORTH) return 1; else return 0; } private int getValignment() { if(gbc.anchor == GridBagConstraints.SOUTHWEST || gbc.anchor == GridBagConstraints.SOUTH || gbc.anchor == GridBagConstraints.SOUTHEAST) return 2; else if(gbc.anchor == GridBagConstraints.WEST || gbc.anchor == GridBagConstraints.CENTER || gbc.anchor == GridBagConstraints.EAST) return 1; else return 0; } //}}} //{{{ strut //################################################################################################## /** * This is a convenience method for Box.createRigidArea(). */ public static Component strut(int w, int h) { return Box.createRigidArea(new Dimension(w, h)); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/ReflectiveAction.java0000644000000000000000000002145511531212752023267 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; //import java.awt.*; import java.awt.event.*; import java.io.*; import java.lang.reflect.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; //import driftwood.*; //}}} /** * ReflectiveAction compensates for the lack of first-class functions * in the Java language by allowing the actions generated by menus, buttons, etc. * to be directed to specific functions rather than anonymous inner classes. * This is both lighter weight and easier to read, though you do lose some type * safety. If the user specifies a function that does not exist, it will not * be detected until runtime, although it will be detected as soon as this action * is instantiated. * * By convention, a control named "Foo" should signal a method named "onFoo". * The following warning should appear in the code: *
// This method is the target of reflection -- DO NOT CHANGE ITS NAME *

Also, all methods must have exactly the following signature: *
public void onFoo(ActionEvent e) * *

This sort of thing is also known (apparently) as a trampoline, * because it bounces you from one method to another. * I got the idea from http://java.sun.com/docs/books/performance/ * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Apr 7 10:19:31 EDT 2003 */ final public class ReflectiveAction extends AbstractAction { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## private Object target; private Method method; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new Action with the given name and icon, * which will signal the named method in the given object * when it receives a call to actionPerformed(). * @param name the descriptive text that appears in a menu or on a button (may be null) * @param icon the small icon that appears alongside name (may be null) * @param targetObj the object to be signaled * @param methodName the name of the method in target that will be signaled * @throws IllegalArgumentException if targetObj or methodName is null, * or if the named method with the correct signature cannot be found. */ public ReflectiveAction(String name, Icon icon, Object targetObj, String methodName) { super(name, icon); if(targetObj == null | methodName == null) throw new IllegalArgumentException("Must supply both targetObj and methodName"); target = targetObj; Class[] formalParams = { ActionEvent.class }; try { method = targetObj.getClass().getMethod(methodName, formalParams); } catch(NoSuchMethodException ex) { throw new IllegalArgumentException("Object '"+targetObj.toString() +"' doesn't have a method 'public void "+methodName+"(ActionEvent e)'"); } if(name != null) setCommandKey(name); // this allows bind() to work without more work } //}}} //{{{ actionPerformed //################################################################################################## /** * This event is simply bounced to the previously specified * method of the target object. * @throws RuntimeException if access is not allowed * or an exception occurs in the calling method. */ public void actionPerformed(ActionEvent ev) { try { Object[] params = { ev }; method.invoke(target, params); } catch(InvocationTargetException ex) { Throwable t = ex.getTargetException(); if(t instanceof Error) throw (Error)t; else if(t instanceof RuntimeException) throw (RuntimeException)t; else throw new RuntimeException("Exception in "+target.getClass()+"."+method+": "+t.getMessage()); } catch(IllegalAccessException ex) { throw new RuntimeException("Exception in "+target.getClass()+"."+method+": "+ex.getMessage()); } } //}}} //{{{ get/set{Name, Icon, CommandKey} //################################################################################################## /** * Gets the name of this Action: the string that * appears in menus, on buttons, and so on. */ public String getName() { return (String)getValue(Action.NAME); } /** * Sets the name of this Action: the string that * appears in menus, on buttons, and so on. */ public void setName(String name) { putValue(Action.NAME, name); } /** * Gets the small icon that appears alongside * this Action's name in menus, buttons, etc. */ public Icon getIcon() { return (Icon)getValue(Action.SMALL_ICON); } /** * Sets the small icon that appears alongside * this Action's name in menus, buttons, etc. */ public void setIcon(Icon icon) { putValue(Action.SMALL_ICON, icon); } /** * Gets the string to be used as a key for this object * in ActionMaps and InputMaps. */ public String getCommandKey() { return (String)getValue(Action.ACTION_COMMAND_KEY); } /** * Sets the string to be used as a key for this object * in ActionMaps and InputMaps. */ public void setCommandKey(String key) { putValue(Action.ACTION_COMMAND_KEY, key); } //}}} //{{{ get/set{Tooltip, Mnemonic, Accelerator} //################################################################################################## /** Gets the tooltip text for this Action */ public String getTooltip() { return (String)getValue(Action.SHORT_DESCRIPTION); } /** Sets the tooltip text for this Action */ public void setTooltip(String tip) { putValue(Action.SHORT_DESCRIPTION, tip); } /** Gets the mnemonic key for this Action (one of the KeyEvent.VK_* constants) */ public Integer getMnemonic() { return (Integer)getValue(Action.MNEMONIC_KEY); } /** Sets the mnemonic key for this Action (one of the KeyEvent.VK_* constants) */ public void setMnemonic(int key) { putValue(Action.MNEMONIC_KEY, new Integer(key)); } /** Gets the accelerator key for this Action */ public KeyStroke getAccelerator() { return (KeyStroke)getValue(Action.ACCELERATOR_KEY); } /** Sets the accelerator key for this Action */ public void setAccelerator(KeyStroke key) { putValue(Action.ACCELERATOR_KEY, key); } /** * Sets the accelerator key for this Action. * @param keyCode one of the KeyEvent.VK_* constants * @param modifiers zero, or some combination (use + or |) of * the KeyEvent constants SHIFT_MASK, CTRL_MASK, ALT_MASK, and META_MASK. */ public void setAccelerator(int keyCode, int modifiers) { setAccelerator(KeyStroke.getKeyStroke(keyCode, modifiers)); } //}}} //{{{ bind, bindWindow //################################################################################################## /** * Binds this Action to the InputMap and ActionMap of the specified component. * The keystroke is given by this.getAccelerator() * and the command is given by this.getCommandKey(). * This operation will fail if no command key is defined. * The action is bound to the WHEN_FOCUSED input map. */ public void bind(JComponent comp) { InputMap im = comp.getInputMap(); ActionMap am = comp.getActionMap(); String ck = this.getCommandKey(); KeyStroke ks = this.getAccelerator(); if(im == null || am == null || ck == null || ks == null) return; im.put(ks, ck); am.put(ck, this); } /** * Binds this Action to the InputMap and ActionMap of the specified component. * The keystroke is given by this.getAccelerator() * and the command is given by this.getCommandKey(). * This operation will fail if no command key is defined. * The action is bound to the WHEN_IN_FOCUSED_WINDOW input map. */ public void bindWindow(JComponent comp) { InputMap im = comp.getInputMap(comp.WHEN_IN_FOCUSED_WINDOW); ActionMap am = comp.getActionMap(); String ck = this.getCommandKey(); KeyStroke ks = this.getAccelerator(); if(im == null || am == null || ck == null || ks == null) return; im.put(ks, ck); am.put(ck, this); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/AttentiveComboBox.java0000644000000000000000000000616411531212752023435 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; //import driftwood.*; //}}} /** * AttentiveComboBox sends an ActionEvent when it loses the input * focus iff its selection has changed since it gained focus, or since the * last ActionEvent, whichever is more recent. * Of course, this only matters if this particular combo box is editable, * so we setEditable(true) in all of the constructors. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Mon Jan 26 15:13:33 EST 2004 */ public class AttentiveComboBox extends JComboBox implements FocusListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## String lastContents; //}}} //{{{ Constructor(s) //############################################################################## public AttentiveComboBox() { super(); init(); } public AttentiveComboBox(ComboBoxModel aModel) { super(aModel); init(); } public AttentiveComboBox(Object[] items) { super(items); init(); } public AttentiveComboBox(Vector items) { super(items); init(); } public AttentiveComboBox(Collection items) { super(items.toArray()); init(); } private void init() { this.addActionListener(this); this.setEditable(true); ComboBoxEditor cbe = this.getEditor(); cbe.getEditorComponent().addFocusListener(this); this.lastContents = this.getText(); } //}}} //{{{ actionPerformed, focusGained, focusLost //############################################################################## public void actionPerformed(ActionEvent ev) { super.actionPerformed(ev); this.lastContents = this.getText(); } public void focusGained(FocusEvent ev) { this.lastContents = this.getText(); } public void focusLost(FocusEvent ev) { if((this.lastContents == null && this.getText() != null) || (this.lastContents != null && !this.lastContents.equals(this.getText()))) { fireActionEvent(); } } //}}} //{{{ getText //############################################################################## /** * Returns the current item as displayed in the editable combo box, * even if that item is not a part of the current list. * Returns null if the box is not editable or no data is present. */ public String getText() { ComboBoxEditor cbe = this.getEditor(); if(cbe == null) return null; Object item = cbe.getItem(); if(item == null) return null; return item.toString(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/MagnifiedTheme.java0000644000000000000000000000517511531212752022710 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import javax.swing.plaf.FontUIResource; import javax.swing.plaf.metal.DefaultMetalTheme; //}}} /** * MagnifiedTheme is a Swing Metal theme that * magnifies all font sizes by some given scale factor. * This can be a useful accomodation for the visually challenged. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Mon Oct 14 14:10:15 EDT 2002 */ public class MagnifiedTheme extends DefaultMetalTheme // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## float mag; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public MagnifiedTheme(float magnification) { mag = magnification; } //}}} //{{{ get___Font() //################################################################################################## public String getName() { return "Magnified"; } public FontUIResource getControlTextFont() { FontUIResource orig = super.getControlTextFont(); FontUIResource big = new FontUIResource(orig.deriveFont(mag*orig.getSize())); return big; } public FontUIResource getMenuTextFont() { FontUIResource orig = super.getMenuTextFont(); FontUIResource big = new FontUIResource(orig.deriveFont(mag*orig.getSize())); return big; } public FontUIResource getSubTextFont() { FontUIResource orig = super.getSubTextFont(); FontUIResource big = new FontUIResource(orig.deriveFont(mag*orig.getSize())); return big; } public FontUIResource getSystemTextFont() { FontUIResource orig = super.getSystemTextFont(); FontUIResource big = new FontUIResource(orig.deriveFont(mag*orig.getSize())); return big; } public FontUIResource getUserTextFont() { FontUIResource orig = super.getUserTextFont(); FontUIResource big = new FontUIResource(orig.deriveFont(mag*orig.getSize())); return big; } public FontUIResource getWindowTitleFont() { FontUIResource orig = super.getWindowTitleFont(); FontUIResource big = new FontUIResource(orig.deriveFont(mag*orig.getSize())); return big; } //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/ProgressDialog.java0000644000000000000000000001271711531212752022766 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; //import driftwood.*; import javax.swing.Timer; //}}} /** * ProgressDialog implements a simple modal dialog with a progress bar. * Its show, dispose, and update methods can be safely called from any thread. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Jan 18 09:16:57 EST 2007 */ public class ProgressDialog implements ActionListener, Runnable { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## JDialog progDialog; JProgressBar progBar; Timer timer; volatile int taskComplete = 0; volatile int taskTotal = 0; volatile boolean hide = false; volatile boolean canceled = false; //}}} //{{{ Constructor(s) //############################################################################## public ProgressDialog(Component top, String title, boolean allowCancel) { super(); // Find the Frame or Dialog that is the ultimate parent of the component while(true) { if(top == null) { // I think it's OK to pass null in as the dialog parent... break; } else if(top instanceof Frame || top instanceof Dialog) break; else top = top.getParent(); } // Build the progress display dialog... progBar = new JProgressBar(); progBar.setIndeterminate(true); progBar.setStringPainted(false); // shows % complete // If this isn't included, progDialog doesn't paint (bug in Java 1.4.0) (reported) JLabel labelNote = new JLabel(title); //labelNote.setHorizontalAlignment(JLabel.CENTER); JButton cancelBtn = new JButton(new ReflectiveAction("Cancel", null, this, "onRequestCancel")); TablePane2 cp = new TablePane2().insets(6).center().memorize(); cp.addCell(labelNote).newRow(); cp.hfill(true).addCell(progBar).newRow(); if(allowCancel) cp.addCell(cancelBtn); if(top instanceof Dialog) progDialog = new JDialog((Dialog) top, "", true); // true => modal else progDialog = new JDialog((Frame) top, "", true); // true => modal progDialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); progDialog.setContentPane(cp); progDialog.pack(); progDialog.setLocationRelativeTo(top); timer = new Timer(250, this); // updates every quarter second } //}}} //{{{ actionPerformed, run, onRequestCancel //############################################################################## public void actionPerformed(ActionEvent ev) { synchronized(this) { if(progBar.getMaximum() != taskTotal) progBar.setMaximum(taskTotal); if(progBar.getValue() != taskComplete) progBar.setValue(taskComplete); if(taskTotal > 0 && progBar.isIndeterminate()) { progBar.setIndeterminate(false); progBar.setStringPainted(true); // shows % complete } } // Can't show the dialog in response to a timer event or else // the timer gets suspended. I don't really understand why. // So we do show() separately, and hide() here. if(hide) { timer.stop(); hide = false; //progDialog.setVisible(false); progDialog.dispose(); } } public void run() { if(!progDialog.isVisible()) { timer.start(); progDialog.pack(); progDialog.setVisible(true); // blocks here until done } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRequestCancel(ActionEvent ev) { this.canceled = true; } //}}} //{{{ show, dispose, update, isCanceled //############################################################################## /** Makes the dialog visible. Call from any thread; does not block; does not take effect immediately. */ synchronized public void show() { SwingUtilities.invokeLater(this); } /** Closes the dialog. Call from any thread; does not block; does not take effect immediately. */ synchronized public void dispose() { this.hide = true; } /** * Updates the progress bar. Pass total = 0 to set "indeterminate" mode. * Call from any thread; does not block; does not take effect immediately. */ synchronized public void update(int complete, int total) { this.taskComplete = complete; this.taskTotal = total; } /** * Returns true if the user has asked to cancel this action. * The dialog must still be closed manually. * Call from any thread; does not block; does not take effect immediately. */ synchronized public boolean isCanceled() { return this.canceled; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/LogViewer.java0000644000000000000000000001014011531212752021731 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * LogViewer has not yet been documented. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Sep 18 08:42:19 EDT 2003 */ public class LogViewer extends JDialog { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## SoftLog log; JTextArea text; //}}} //{{{ Constructor(s) //############################################################################## public LogViewer(Frame owner, String title, SoftLog sl) { super(owner, title, true); init(sl); setLocationRelativeTo(owner); this.setVisible(true); } public LogViewer(Dialog owner, String title, SoftLog sl) { super(owner, title, true); init(sl); setLocationRelativeTo(owner); this.setVisible(true); } private void init(SoftLog sl) { log = sl; buildGUI(); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); this.pack(); } //}}} //{{{ buildGUI //############################################################################## protected void buildGUI() { TablePane cp = new TablePane(); this.setContentPane(cp); text = new JTextArea(log.getString(), 25, 60); text.setLineWrap(false); // we don't want exceptions to be hard to read new TextCutCopyPasteMenu(text); // provide std commands on right click JButton clear = new JButton(new ReflectiveAction("Clear", null, this, "onClear")); JButton save = new JButton(new ReflectiveAction("Save to disk...", null, this, "onSave")); JScrollPane scroll = new JScrollPane(text); cp.hfill(true).vfill(true); cp.add(scroll,2,1); cp.newRow(); cp.hfill(false).vfill(false).weights(0,0); cp.left().add(clear); cp.right().add(save); ActionMap am = this.getRootPane().getActionMap(); InputMap im = this.getRootPane().getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT); am.put("close-window", new ReflectiveAction("", null, this, "onClose")); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_W , Toolkit.getDefaultToolkit().getMenuShortcutKeyMask()), "close-window" ); } //}}} //{{{ onClose, onClear, onSave //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onClose(ActionEvent ev) { this.dispose(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onClear(ActionEvent ev) { text.setText(null); log.clear(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSave(ActionEvent ev) { JFileChooser saveChooser = new JFileChooser(); File f = new File("errorlog.txt"); saveChooser.setSelectedFile(f); if(JFileChooser.APPROVE_OPTION == saveChooser.showSaveDialog(this)) { f = saveChooser.getSelectedFile(); try { PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(f))); pw.println(text.getText()); pw.close(); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/AngleDial.java0000644000000000000000000004274311531212752021664 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; import java.awt.geom.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; //import driftwood.*; //}}} /** * AngleDial is a GUI component that looks like * a round dial, enabling the user to select an angle. * The function is similar to that provided by a slider but * allows the range to wrap around. * * Mouse wheel functionality has been removed to preserve * compatibility with Java 1.3. If you want this functionality, * remove comments marked 'XXX-JAVA13' * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Thu May 1 15:18:30 EDT 2003 */ public class AngleDial extends JComponent implements MouseListener, MouseMotionListener /*//XXX-JAVA13//*/, MouseWheelListener { //{{{ Constants static final Dimension DIAL_DIM = new Dimension(92,92); static final DecimalFormat df1 = new DecimalFormat("0.0"); static final double TWO_PI = 2.0 * Math.PI; static final Color backColor = new Color(0xFFFFFF); static final Color activeBack = new Color(0xFFFFCC); static final Color offBack = new Color(0xCCCCCC); static final Color ghostColor = new Color(0xBBBBBB); static final Color currColor = new Color(0x0000CC); static final Color activeCurr = new Color(0xFF6600); static final Color foreColor = new Color(0x000000); static final Color offFore = new Color(0x999999); static final Color boundsColor = new Color(0xafdaf6); //}}} //{{{ INTERFACE: Formatter //################################################################################################## /** Allows a user-specified component to decide how the angle is rendered. */ public static interface Formatter { /** Returns a String representation of a given angle (in radians) */ public String formatAngle(double angle); } //}}} //{{{ Variable definitions //################################################################################################## /** * Variables that describe the geometry of the dial * within our allotted display space. * These are updated every time we paint(). * They are used by the mouse handlers. */ int size, top, left, cx, cy; /** The font we use for painting */ Font font; FontMetrics metrics = null; /** Cached Shape objects we use for painting */ Line2D.Double line2d = new Line2D.Double(); Ellipse2D.Double ellipse2d = new Ellipse2D.Double(); BasicStroke pen1 = new BasicStroke(1, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); BasicStroke pen2 = new BasicStroke(2, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); BasicStroke pen5 = new BasicStroke(5, BasicStroke.CAP_ROUND, BasicStroke.JOIN_ROUND); Rectangle plusBtn = new Rectangle(); Rectangle minusBtn = new Rectangle(); /** The optional element that formats angle values */ Formatter formatter = null; /** If true, paint the original angle on the dial too */ boolean paintOrigAngle = true; /** * The actual values that are tracked by this component. * NO ONE should modify these except set(Orig)Radians()! */ double currAngleValue, origAngleValue; /** for tracking bound indicators on the dial */ HashMap boundsMap = null; /** Number of mouse movement pixels equal to one full rotation */ int mouseSensitivity = 3600; // one pixel == 0.1 degree /** The amount the angle changes in response to arrow keys, etc */ double stepSize = TWO_PI / 360.0; // one degree /** True if user is dragging the mouse */ boolean isUpdating = false; /** State of the system when the user started dragging the mouse */ double dragStartAngle = 0; // == getRadians() when drag started int dragStartX = 0, dragStartY = 0; // x,y where mouse touched down double dragAngleOffset = 0; // atan2 of where mouse touched down /** List of listeners for ChangeEvents */ Collection changeListeners = new ArrayList(); //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public AngleDial() { this(0, 0); } /** * Constructor * @param start the starting value for this dial, in radians * @param orig the original/bookmark value for this dial, in radians */ public AngleDial(double start, double orig) { super(); this.currAngleValue = start; this.origAngleValue = orig; this.setPreferredSize(DIAL_DIM); this.setMinimumSize(DIAL_DIM); this.setOpaque(false); // we're not (logically) rectangular this.addMouseListener(this); this.addMouseMotionListener(this); //XXX-JAVA13 this.addMouseWheelListener(this); this.font = new Font("SansSerif", Font.PLAIN, 18); } //}}} //{{{ paintComponent //################################################################################################## /** Paints our component to the screen */ protected void paintComponent(Graphics g) { super.paintComponent(g); // this does nothing b/c we have no UI delegate Graphics2D g2 = (Graphics2D)g; Dimension dim = this.getSize(); g.setFont(font); if(metrics == null) metrics = g.getFontMetrics(); size = Math.min(dim.width, dim.height) - 1; left = (dim.width - size) / 2; top = (dim.height - size) / 2; cx = dim.width / 2; cy = dim.height/ 2; //SoftLog.err.println("dim="+dim+"; size="+size+"; top="+top+"; left="+left+"; cx="+cx+"; cy="+cy); final boolean isOff = !this.isEnabled(); // Paint the background g2.setStroke(pen1); if(isOff) g.setColor(offBack); else if(isUpdating) g.setColor(activeBack); else g.setColor(backColor); ellipse2d.setFrame(left, top, size, size); g2.fill(ellipse2d); // Paint the bounds?? if (boundsMap != null) { g2.setStroke(pen5); for (Double low : boundsMap.keySet()) { Double high = boundsMap.get(low); g.setColor(boundsColor); //line2d.setLine(cx, cy, // cx+(int)(0.5*size*Math.cos(high.doubleValue())), // cy-(int)(0.5*size*Math.sin(high.doubleValue()))); //g2.draw(line2d); //line2d.setLine(cx, cy, // cx+(int)(0.5*size*Math.cos(low.doubleValue())), // cy-(int)(0.5*size*Math.sin(low.doubleValue()))); //g2.draw(line2d); g2.fill(new Arc2D.Double(left+3.5, top+3.5, size-5, size-5, Math.toDegrees(low.doubleValue()), Math.toDegrees(high.doubleValue()-low.doubleValue()), Arc2D.PIE)); } } // Paint the old-value marker g2.setStroke(pen2); double origAngle = this.getOrigRadians(); if(isOff) g.setColor(offFore); else g.setColor(ghostColor); line2d.setLine(cx, cy, cx+(int)(0.5*size*Math.cos(origAngle)), cy-(int)(0.5*size*Math.sin(origAngle))); g2.draw(line2d); // Print the current value, centered and either above or below center double currAngle = this.getRadians(); String msg = (formatter == null ? defaultFormatAngle(currAngle) : formatter.formatAngle(currAngle)); int textx = cx - metrics.stringWidth(msg)/2; int texty = (currAngle > Math.PI ? cy-4 : cy+2+metrics.getMaxAscent()); if(isOff) g.setColor(offFore); else g.setColor(foreColor); g.drawString(msg, textx, texty); // Paint the original value under the sweep line if(getPaintOrigAngle()) { msg = (formatter == null ? defaultFormatAngle(origAngle) : formatter.formatAngle(origAngle)); textx = cx - metrics.stringWidth(msg)/2; texty = (currAngle > Math.PI ? cy+2+metrics.getMaxAscent() : cy-4); if(isOff) g.setColor(offFore); else g.setColor(ghostColor); g.drawString(msg, textx, texty); } // Paint the new-value marker g2.setStroke(pen2); if(isOff) g.setColor(offFore); else if(isUpdating) g.setColor(activeCurr); else g.setColor(currColor); line2d.setLine(cx, cy, cx+(int)(0.5*size*Math.cos(currAngle)), cy-(int)(0.5*size*Math.sin(currAngle))); g2.draw(line2d); // Paint the outer ring g2.setStroke(pen1); if(isOff) g.setColor(offFore); else g.setColor(foreColor); g2.draw(ellipse2d); // Position the + and - buttons int btnSize = (int)(0.146 * size) - 2; plusBtn.setBounds(left, top+size-btnSize, btnSize, btnSize); minusBtn.setBounds(left+size-btnSize, top+size-btnSize, btnSize, btnSize); // Paint the + and - buttons g2.setStroke(pen1); if(isOff) g.setColor(offBack); else g.setColor(backColor); g2.fill(plusBtn); g2.fill(minusBtn); if(isOff) g.setColor(offFore); else g.setColor(foreColor); g2.draw(plusBtn); g2.draw(minusBtn); g2.setStroke(pen2); line2d.setLine(plusBtn.x+3, plusBtn.y+plusBtn.height/2.0, plusBtn.x+plusBtn.width-3, plusBtn.y+plusBtn.height/2.0); g2.draw(line2d); line2d.setLine(plusBtn.x+plusBtn.width/2.0, plusBtn.y+3, plusBtn.x+plusBtn.width/2.0, plusBtn.y+plusBtn.height-3); g2.draw(line2d); line2d.setLine(minusBtn.x+3, minusBtn.y+minusBtn.height/2.0, minusBtn.x+minusBtn.width-3, minusBtn.y+minusBtn.height/2.0); g2.draw(line2d); } //}}} //{{{ defaultFormatAngle //################################################################################################## /** Writes the angle in degrees on (-180,180] with one digit after the decimal */ protected String defaultFormatAngle(double angle) { angle = Math.toDegrees(angle); if(angle > 180.0) angle -= 360.0; return df1.format(angle); } //}}} //{{{ mouseClicked, mousePressed, mouseReleased //################################################################################################## public void mouseClicked(MouseEvent ev) { int mult = 1; if (ev.isShiftDown()) mult = 10; // Plus button if(plusBtn.contains(ev.getPoint())) { setDegrees(getDegrees() + 360.0 / mouseSensitivity * mult); } else if(minusBtn.contains(ev.getPoint())) { setDegrees(getDegrees() - 360.0 / mouseSensitivity * mult); } // Reset to original value on double click else if(this.isEnabled() && ev.getClickCount() == 2) { setRadians(getOrigRadians()); } } public void mouseEntered(MouseEvent ev) {} public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) { isUpdating = true; dragStartAngle = getRadians(); dragStartX = ev.getX(); dragStartY = ev.getY(); dragAngleOffset = Math.atan2(cy-dragStartY, dragStartX-cx); } public void mouseReleased(MouseEvent ev) { isUpdating = false; if(this.isEnabled() && getRadians() != dragStartAngle) fireStateChanged(); } //}}} //{{{ mouseDragged, mouseWheelMoved //################################################################################################## public void mouseDragged(MouseEvent ev) { if(this.isEnabled()) { // RMB/Shift does O-style pseudo dials if(SwingUtilities.isRightMouseButton(ev) || ev.isShiftDown()) { int pixelsMoved = (ev.getX() - dragStartX) - (ev.getY() - dragStartY); setRadians(dragStartAngle + (TWO_PI*pixelsMoved)/mouseSensitivity); } // Normal control just follows the mouse pointer else { int dx, dy; dx = ev.getX() - cx; dy = ev.getY() - cy; setRadians(dragStartAngle + Math.atan2(-dy, dx) - dragAngleOffset); } } } public void mouseMoved(MouseEvent ev) {} ///* XXX-JAVA13 * / public void mouseWheelMoved(MouseWheelEvent ev) { setRadians(getRadians() - stepSize*ev.getWheelRotation()); } ///* XXX-JAVA13 */ //}}} //{{{ add/removeChangeListener, fireStateChanged //################################################################################################## public void addChangeListener(ChangeListener l) { changeListeners.add(l); } public void removeChangeListener(ChangeListener l) { changeListeners.remove(l); } /** Notifies all listeners and repaints this component */ protected void fireStateChanged() { ChangeEvent ev = new ChangeEvent(this); for(Iterator iter = changeListeners.iterator(); iter.hasNext(); ) { ((ChangeListener)iter.next()).stateChanged(ev); } this.repaint(); } //}}} //{{{ get/set{Radians, Degrees, OrigRadians, OrigDegrees} //################################################################################################## /** Returns the currently selected angle in radians, between 0 and 2*pi */ public double getRadians() { return currAngleValue; } public void setRadians(double v) { v = v % TWO_PI; if(v < 0) v += TWO_PI; if(currAngleValue != v) { currAngleValue = v; fireStateChanged(); } } /** Returns the currently selected angle in degrees, between 0 and 360 */ public double getDegrees() { return Math.toDegrees(this.getRadians()); } /** Returns the currently selected angle in degrees, between -180 and 180, as a nicely formatted string */ public String getDegreesWrapped() { return defaultFormatAngle(this.getRadians()); } public void setDegrees(double v) { this.setRadians(Math.toRadians(v)); } /** Returns the original angle in radians, between 0 and 2*pi */ public double getOrigRadians() { return origAngleValue; } public void setOrigRadians(double v) { v = v % TWO_PI; if(v < 0) v += TWO_PI; if(origAngleValue != v) { origAngleValue = v; fireStateChanged(); } } /** Returns the original angle in degrees, between 0 and 360 */ public double getOrigDegrees() { return Math.toDegrees(this.getOrigRadians()); } public void setOrigDegrees(double v) { this.setOrigRadians(Math.toRadians(v)); } //}}} //{{{ setBounds public void setBoundsDegrees(double lowV, double highV) { setBoundsRadians(Math.toRadians(lowV), Math.toRadians(highV)); } public void setBoundsRadians(double lowV, double highV) { lowV = lowV % TWO_PI; if(lowV < 0) lowV += TWO_PI; highV = highV % TWO_PI; if(highV < 0) highV += TWO_PI; if (boundsMap == null) boundsMap = new HashMap(); boundsMap.put(new Double(lowV), new Double(highV)); fireStateChanged(); } //}}} //{{{ get/set{Sensitivity, StepSize, PaintOrigAngle} //################################################################################################## public int getSensitivity() { return mouseSensitivity; } /** * Sets the number of pixels worth of mouse movement * that registers as a full rotation of the dial. * The default is 3600, one-tenth degree per pixel. */ public void setSensitivity(int s) { mouseSensitivity = s; } public double getStepSize() { return stepSize; } /** * Sets the size of one step, in radians. * A step is the amount the value changes in * response to the mouse wheel or arrow keys. * Default is Math.PI/180.0, one degree. */ public void setStepSize(double s) { stepSize = s; } public boolean getPaintOrigAngle() { return paintOrigAngle; } /** * Sets whether the original angle * should be painted on the dial. */ public void setPaintOrigAngle(boolean b) { paintOrigAngle = b; this.repaint(); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ isFocusable, getValueIsAdjusting //################################################################################################## // Has been replaced with isFocusable() in 1.4+ public boolean isFocusTraversable() { return true; } public boolean isFocusable() { return true; } public boolean getValueIsAdjusting() { return isUpdating; } //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/ExpSlider.java0000644000000000000000000000743611531212752021743 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.NumberFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; //import driftwood.*; //}}} /** * ExpSlider provides interpretation of JSlider values * as floating-point numbers on an exponential scale, such that * a fixed amount of slider movement represents a doubleing * or halving of the floating-point value. * *

For a slider on the interval [A, B] where A and B are real, * with N steps separting them, then for a slider with integer * value s on [0, N] the "exponential" value v is: * *

v = A*exp[ s/Q ], for s < N *
v = A*exp[ s/Q ] = B, for s = N * *

This implies Q = N / ln(B/A). * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Fri Jun 27 09:38:30 EDT 2003 */ public class ExpSlider extends JSlider // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## private double minVal, maxVal; private int steps; private double q; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a horizontal JSlider from 0 to steps with an initial value of steps/2. * Values will be interpretted as being between minVal and maxVal, inclusive. * All other settings are standard for a new JSlider. */ public ExpSlider(double minVal, double maxVal, int steps) { super(0, steps, steps/2); this.minVal = minVal; this.maxVal = maxVal; this.steps = steps; this.q = steps / Math.log(maxVal / minVal); } //}}} //{{{ getDouble, setDouble //################################################################################################## /** Returns the interpretted value of this slider. */ public double getDouble() { return getDouble(this.getValue()); } protected double getDouble(int s) { if(s == 0) return minVal; if(s == steps) return maxVal; return (minVal * Math.exp( s / q )); } /** Sets this slider to the value nearest to the specified value. */ public void setDouble(double t) { // Make sure we're in range. if(t < minVal) t = minVal; else if(t > maxVal) t = maxVal; int s = (int)Math.round(q * Math.log( t / minVal )); if(s < 0) s = 0; else if(s > steps) s = steps; this.setValue(s); } //}}} //{{{ setLabels //################################################################################################## /** * Creates the specified number of labels using the provided formatter. * 1 label will be displayed at steps/2. * More than 1 label will hit both endpoints and the rest even spaced in between. * Label painting will be automatically enabled. */ public void setLabels(int numLabels, NumberFormat nf) { Hashtable labels = new Hashtable(); if(numLabels < 2) labels.put( new Integer(steps/2), new JLabel(nf.format(getDouble(steps/2))) ); else { for(double i = 0; i < numLabels; i++) { int pos = (int)Math.round( i/(numLabels-1) * steps ); labels.put( new Integer(pos), new JLabel(nf.format(getDouble(pos))) ); } } setLabelTable(labels); setPaintLabels(true); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/FatJList.java0000644000000000000000000000331511531212752021514 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; //import driftwood.*; //}}} /** * FatJList is a Swing JList that can augment its width a bit, * so it doesn't look so cramped. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Mon Feb 2 14:52:37 EST 2004 */ public class FatJList extends JList { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## int minWidth; int padding; //}}} //{{{ Constructor(s) //############################################################################## /** * The list will prefer to be in a scrollport that's as wide * as its preferred width plus padding, but will never be * less than minWidth wide. * minWidth may be set to zero if no minimum should be enforced. */ public FatJList(int minWidth, int padding) { super(); this.minWidth = minWidth; this.padding = padding; } //}}} //{{{ getPreferredScrollableViewportSize //############################################################################## public Dimension getPreferredScrollableViewportSize() { Dimension d = super.getPreferredScrollableViewportSize(); d.width += padding; if(d.width < minWidth) d.width = minWidth; return d; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/IndentBox.java0000644000000000000000000000320411531212752021723 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; //import driftwood.*; //}}} /** * IndentBox is an ordinary horizontal Box * which contains zero to two Components: * an optional rigid area to create an indent from the left edge * and a core component that this box is effectively a wrapper for. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Tue May 6 15:24:44 EDT 2003 */ public class IndentBox extends SwapBox { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## int indent = 0; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public IndentBox(Component comp) { super(comp); } //}}} //{{{ get/setIndent //################################################################################################## public int getIndent() { return indent; } public void setIndent(int i) { if(indent > 0) this.remove(0); this.indent = i; if(indent > 0) this.add(Box.createRigidArea(new Dimension(indent, 0)), 0); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/AttentiveTextField.java0000644000000000000000000000415011531212752023606 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; //import driftwood.*; //}}} /** * AttentiveTextField sends an ActionEvent when it loses the input * focus iff its contents have changed since it gained focus, or since the * last ActionEvent, whichever is more recent. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Mon Jan 26 15:13:33 EST 2004 */ public class AttentiveTextField extends JTextField implements ActionListener, FocusListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## String lastContents; //}}} //{{{ Constructor(s) //############################################################################## public AttentiveTextField() { this(null, 0); } public AttentiveTextField(int columns) { this(null, columns); } public AttentiveTextField(String contents) { this(contents, 0); } public AttentiveTextField(String contents, int columns) { super(contents, columns); this.lastContents = this.getText(); this.addActionListener(this); this.addFocusListener(this); } //}}} //{{{ actionPerformed, focusGained, focusLost //############################################################################## public void actionPerformed(ActionEvent ev) { this.lastContents = this.getText(); } public void focusGained(FocusEvent ev) { this.lastContents = this.getText(); } public void focusLost(FocusEvent ev) { if((this.lastContents == null && this.getText() != null) || (this.lastContents != null && !this.lastContents.equals(this.getText()))) { fireActionPerformed(); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/gui/TablePane2.java0000644000000000000000000004245211531212752021756 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.gui; import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.util.SoftLog; //}}} /** * TablePane2 is a second-generation tool for * simplifying the task of hand-coding a GUI. * It is closely modeled on HTML tables, which are a very * flexible tool, particularly when nested. * The underlying framework uses GridBagLayout. * *

Nesting is simplified by the startSubtable and * endSubtable functions. * When a subtable is started, a new TablePane2 object is created. * The current TablePane2 is then connected to the new TablePane2, * and its methods "pass through" to the subtable until * endSubtable is called. * Subtables do not inherit the layout properties of their parents. * *

Changes to the layout (e.g. weights(), insets(), center()) * apply only to the next component added to the current table! * Use memorize() to make persistent changes. * *

This class is geared toward relatively static layouts, * and may not be as useful in designing layouts that change frequently. * *

Copyright (C) 2002-2004 by Ian W. Davis. All rights reserved. *
Begun on Wed Dec 18 14:25:54 EST 2002 */ public class TablePane2 extends JPanel // implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## TablePane2 subtable; GridBagLayout layout; GridBagConstraints gbc; // current settings GridBagConstraints gbcDefault; /** these are the real x,y coordinates, b/c we don't want them saved on the stack */ int gridx, gridy; /** Map<Point, Component> used to determine if a given table cell is occupied. */ Map occupants; /** Set this to true if you want debugging messages to stderr */ public boolean _debug = false; //}}} //{{{ Constructor(s) //################################################################################################## /** * General purpose constructor. * The new table has the following defaults: *

    *
  • Horizontal and vertical weights are 1.0
  • *
  • Components do not stretch to fill space
  • *
  • Components align to the left (horiz.) and middle (vert.)
  • *
  • Each cell has external padding (insets) of 2 pixels on all sides, and no internal padding
  • *
*/ public TablePane2() { super(); subtable = null; layout = new GridBagLayout(); this.setLayout(layout); gbc = new GridBagConstraints(); gbc.weightx = 1.0; gbc.weighty = 1.0; gbc.anchor = GridBagConstraints.WEST; gbc.fill = GridBagConstraints.NONE; gbc.insets = new Insets(2,2,2,2); gbc.ipadx = 0; gbc.ipady = 0; this.memorize(); // makes these the defaults gridx = 0; gridy = 0; occupants = new HashMap(); } //}}} //{{{ startSubtable, endSubtable, isSubtable, getCurrent //################################################################################################## /** * Starts a new subtable, and adds it to the current table. * Calls to this table will "pass through" to the subtable * until endSubtable is called. Subtables may * be nested arbitrarily deep. * By default, the subtable is inserted with no insets and * horizontal and vertical fill. Other layout params are unchanged. * Use startSubtableRaw() to avoid these auto-layout features. * @return this (for chaining) */ public TablePane2 startSubtable() { return startSubtable(1, 1); } public TablePane2 startSubtable(int gridwidth, int gridheight) { if(subtable != null) subtable.startSubtable(gridwidth, gridheight); else { TablePane2 tp = new TablePane2(); this.insets(0).hfill(true).vfill(true).add(tp, gridwidth, gridheight); subtable = tp; } return this; } /** Starts a subtable without modifying any layout parameters. */ public TablePane2 startSubtableRaw(int gridwidth, int gridheight) { if(subtable != null) subtable.startSubtableRaw(gridwidth, gridheight); else { TablePane2 tp = new TablePane2(); this.add(tp, gridwidth, gridheight); subtable = tp; } return this; } /** * Ends the mostly recently started subtable. * @return this (for chaining) * @throws UnsupportedOperationException if there are no active subtables */ public TablePane2 endSubtable() { if(subtable == null) throw new UnsupportedOperationException("No subtable exists"); else if(subtable.subtable == null) subtable = null; else subtable.endSubtable(); return this; } /** * Returns true if startSubtable * has been called more times than endSubtable; * that is, if function calls on this object affect a subtable * rather than this object itself. */ public boolean isSubtable() { return (subtable != null); } /** * Returns the current TablePane2 that will be affected * by function calls on this object (i.e., the active * subtable). If there are no subtables, returns this. */ public TablePane2 getCurrent() { if(subtable != null) return subtable.getCurrent(); else return this; } //}}} //{{{ addCell, add (and support methods) //################################################################################################## /** * Adds the specified component at the end of the current row. * @return this (for chaining) */ public TablePane2 addCell(Component c) { add(c); return this; } /** * Adds the specified component at the end of the current row. * It will occupy gridwidth columns and gridheight rows. * @return this (for chaining) */ public TablePane2 addCell(Component c, int gridwidth, int gridheight) { add(c, gridwidth, gridheight); return this; } /** * Adds the specified component at the end of the current row. * This does the same thing as addCell(), but can't be chained. * @return the Component c that was just added */ public Component add(Component c) { return add(c, 1, 1); } /** * Adds the specified component at the end of the current row. * It will occupy gridwidth columns and gridheight rows. * This does the same thing as addCell(), but can't be chained. * @return the Component c that was just added */ public Component add(Component c, int gridwidth, int gridheight) { if(subtable != null) { return subtable.add(c, gridwidth, gridheight); } else { advanceToNextEmptyCell(); gbc.gridx = gridx; gbc.gridy = gridy; gbc.gridwidth = Math.max(1, gridwidth); gbc.gridheight = Math.max(1, gridheight); Component ret = addWithConstraints(c, gbc); markCellsAsOccupied(c, gbc); gridx++; gbc = (GridBagConstraints) gbcDefault.clone(); return ret; } } /** Simple add with GridBagConstraints */ protected Component addWithConstraints(Component c, GridBagConstraints constr) { if(_debug) SoftLog.err.println("Added "+c.getClass()+" at "+constr.gridx+","+constr.gridy+" measuring "+constr.gridwidth+"x"+constr.gridheight); layout.setConstraints(c, constr); return super.add(c); } /** * Updates gridx so that (gridx,gridy) points to the first * empty cell on the current row. * If the current cell is empty, takes no action. */ protected void advanceToNextEmptyCell() { Point pt = new Point(gridx, gridy); while(occupants.get(pt) != null) { gridx++; pt.setLocation(gridx, gridy); } } /** * Adds entries to occupied so we can mark cells as being used. */ protected void markCellsAsOccupied(Component c, GridBagConstraints constr) { Point pt; int x, y; for(y = 0; y < constr.gridheight; y++) { for(x = 0; x < constr.gridwidth; x++) { pt = new Point(constr.gridx + x, constr.gridy + y); occupants.put(pt, c); } } } //}}} //{{{ skip, newRow, replace* //################################################################################################## /** * Skips the current cell (leaves it empty). * @return this (for chaining) */ public TablePane2 skip() { if(subtable != null) subtable.skip(); else gridx++; return this; } /** * Starts a new row in the table. * All subsequently added components will be on the new row. * @return this (for chaining) */ public TablePane2 newRow() { if(subtable != null) subtable.newRow(); else { gridy += 1; gridx = 0; } return this; } /** CAN'T WORK TILL WE WRITE ADD & REMOVE!! * Replaces oldComp with newComp, * assuming oldComp is found in a TablePane2. * Use null for newComp to * remove oldComp. * * @return true on success, false on error * / public static boolean replace(Component oldComp, Component newComp) { if(oldComp == null) return false; Container cont = oldComp.getParent(); if(cont == null | !(cont instanceof TablePane2)) return false; TablePane2 tp = (TablePane2)cont; GridBagConstraints constr = tp.layout.getConstraints(oldComp); tp.remove(oldComp); if(newComp == null) return true; tp.addWithConstraints(newComp, constr); return true; }*/ //}}} //{{{ memorize //################################################################################################## /** * Makes the current alignment, insets, etc. the new default for this table. * @return this (for chaining) */ public TablePane2 memorize() { if(subtable != null) subtable.memorize(); else gbcDefault = (GridBagConstraints) gbc.clone(); return this; } //}}} //{{{ weights, insets, pad //################################################################################################## /** * Sets the weighting assigned to components, * which determines where extra space is allocated * during layout. * @return this (for chaining) */ public TablePane2 weights(double wx, double wy) { if(subtable != null) subtable.weights(wx, wy); else { gbc.weightx = wx; gbc.weighty = wy; } return this; } /** * Sets the insets (external padding, empty space) * that surround components. * @return this (for chaining) */ public TablePane2 insets(int top, int left, int bottom, int right) { if(subtable != null) subtable.insets(top, left, bottom, right); else { gbc.insets = new Insets(top, left, bottom, right); } return this; } /** Sets the insets symmetrically. */ public TablePane2 insets(int tlbr) { return insets(tlbr, tlbr, tlbr, tlbr); } /** * Sets the padding, that is, the amount of space * that will be guaranteed for a component in * addition to its minimumSize. * @return this (for chaining) */ public TablePane2 pad(int px, int py) { if(subtable != null) subtable.pad(px, py); else { gbc.ipadx = px; gbc.ipady = py; } return this; } /** Sets the padding symmetrically. */ public TablePane2 pad(int pxy) { return pad(pxy, pxy); } //}}} //{{{ hfill, vfill, etc. //################################################################################################## /** * Determines whether components expand to fill * the horizontal space allocated to them. * @return this (for chaining) */ public TablePane2 hfill(boolean h) { if(subtable != null) subtable.hfill(h); else fill(h, isVfill()); return this; } /** * Determines whether components expand to fill * the vertical space allocated to them. * @return this (for chaining) */ public TablePane2 vfill(boolean v) { if(subtable != null) subtable.vfill(v); else fill(isHfill(), v); return this; } private void fill(boolean h, boolean v) { if(h) { if(v) gbc.fill = GridBagConstraints.BOTH; else gbc.fill = GridBagConstraints.HORIZONTAL; } else { if(v) gbc.fill = GridBagConstraints.VERTICAL; else gbc.fill = GridBagConstraints.NONE; } } private boolean isHfill() { return (gbc.fill == GridBagConstraints.HORIZONTAL || gbc.fill == GridBagConstraints.BOTH); } private boolean isVfill() { return (gbc.fill == GridBagConstraints.VERTICAL || gbc.fill == GridBagConstraints.BOTH); } //}}} //{{{ left, center, right, top, middle, bottom, etc. //################################################################################################## /** Sets horizontal alignment to left. */ public TablePane2 left() { if(subtable != null) subtable.left(); else align(0, getValignment()); return this; } /** Sets horizontal alignment to center. */ public TablePane2 center() { if(subtable != null) subtable.center(); else align(1, getValignment()); return this; } /** Sets horizontal alignment to right. */ public TablePane2 right() { if(subtable != null) subtable.right(); else align(2, getValignment()); return this; } /** Sets vertical alignment to top. */ public TablePane2 top() { if(subtable != null) subtable.top(); else align(getHalignment(), 0); return this; } /** Sets vertical alignment to middle. */ public TablePane2 middle() { if(subtable != null) subtable.middle(); else align(getHalignment(), 1); return this; } /** Sets vertical alignment to bottom. */ public TablePane2 bottom() { if(subtable != null) subtable.bottom(); else align(getHalignment(), 2); return this; } private void align(int h, int v) { if(h == 2)//right { if(v == 2) gbc.anchor = GridBagConstraints.SOUTHEAST; else if(v == 1) gbc.anchor = GridBagConstraints.EAST; else gbc.anchor = GridBagConstraints.NORTHEAST; } else if(h == 1)//center { if(v == 2) gbc.anchor = GridBagConstraints.SOUTH; else if(v == 1) gbc.anchor = GridBagConstraints.CENTER; else gbc.anchor = GridBagConstraints.NORTH; } else//left { if(v == 2) gbc.anchor = GridBagConstraints.SOUTHWEST; else if(v == 1) gbc.anchor = GridBagConstraints.WEST; else gbc.anchor = GridBagConstraints.NORTHWEST; } } private int getHalignment() { if(gbc.anchor == GridBagConstraints.SOUTHEAST || gbc.anchor == GridBagConstraints.EAST || gbc.anchor == GridBagConstraints.NORTHEAST) return 2; else if(gbc.anchor == GridBagConstraints.SOUTH || gbc.anchor == GridBagConstraints.CENTER || gbc.anchor == GridBagConstraints.NORTH) return 1; else return 0; } private int getValignment() { if(gbc.anchor == GridBagConstraints.SOUTHWEST || gbc.anchor == GridBagConstraints.SOUTH || gbc.anchor == GridBagConstraints.SOUTHEAST) return 2; else if(gbc.anchor == GridBagConstraints.WEST || gbc.anchor == GridBagConstraints.CENTER || gbc.anchor == GridBagConstraints.EAST) return 1; else return 0; } //}}} //{{{ strut //################################################################################################## /** * This is a convenience method for Box.createRigidArea(). */ public static Component strut(int w, int h) { return Box.createRigidArea(new Dimension(w, h)); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/0000755000000000000000000000000011744306100017557 5ustar rootrootking-2.21.120420/driftwood/src/driftwood/moldb2/PdbReader.java0000644000000000000000000006031611531212746022266 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; import java.util.zip.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.util.*; //}}} /** * PdbReader is a utility class for loading Models * from PDB-format files. * *

PdbReader and PdbWriter fail to deal with the following kinds of records: *

  • SIGATM
  • *
  • SIGUIJ
  • *
  • CONECT
*

Actually, PdbReader puts all of them in with the headers, and * PdbWriter spits them all back out, but it may not put them in the * right part of the file. * *

TER cards are counted by incrementing Residue.sectionID: before the first * TER, all Residues have sectionID = 0; after the first TER, sectionID = 1; * after the second TER, sectionID = 2; etc. * SectionID is NOT incremented just because chainID or segmentID changes, * so further processing is necessary in most cases to create "real" sections. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Wed Jun 11 11:15:15 EDT 2003 */ public class PdbReader //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## // Shared data structures /** The set of all Models */ CoordinateFile coordFile; /** The current Model */ Model model; /** A Map<String, ModelState> for this Model */ Map states; /** A Map<String, Residue> based on PDB naming */ Map residues; /** A surrogate atom serial number if necessary */ int autoSerial; /** Number of TER cards encountered so far */ int countTER; /** A map for intern'ing Strings */ CheapSet stringCache = new CheapSet(); /** If true, drop leading and trailing whitespace from seg IDs */ boolean trimSegID = false; /** If true, segment IDs will define chains and thus must be consistent within one residue. */ boolean useSegID = false; HashMap v2tov3Map = null; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PdbReader() { clearData(); } //}}} //{{{ init/clearData, intern //################################################################################################## void initData() throws IOException { coordFile = new CoordinateFile(); model = null; states = new HashMap(); residues = new HashMap(); autoSerial = -9999; countTER = 0; v2tov3Map = new HashMap(); InputStream is = this.getClass().getResourceAsStream("PDBv2toPDBv3.hashmap.txt"); if(is == null) throw new IOException("File not found in JAR: singleres.pdb"); readV2toV3map(is); } private void readV2toV3map(InputStream is) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line; while ((line = reader.readLine())!=null) { if (!line.startsWith("#")) { String[] strings = Strings.explode(line, ':', false, false); //System.out.println(strings[1] + " and " + strings[0]); v2tov3Map.put(strings[1], strings[0]); } } reader.close(); } void clearData() { coordFile = null; model = null; states = null; residues = null; autoSerial = -9999; countTER = 0; stringCache.clear(); v2tov3Map = null; } /** Like String.intern(), but the cache is discarded after reading the file. */ String intern(String s) { String t = (String) stringCache.get(s); if(t == null) { stringCache.add(s); return s; } else return t; } //}}} //{{{ read (convenience) //################################################################################################## public CoordinateFile read(File f) throws IOException { InputStream r = new FileInputStream(f); CoordinateFile rv = read(r); rv.setFile(f); r.close(); return rv; } public CoordinateFile read(InputStream is) throws IOException { // Test for GZIPped files is = new BufferedInputStream(is); is.mark(10); if(is.read() == 31 && is.read() == 139) { // We've found the gzip magic numbers... is.reset(); is = new GZIPInputStream(is); } else is.reset(); return read(new InputStreamReader(is)); } public CoordinateFile read(Reader r) throws IOException { return read(new LineNumberReader(r)); } //}}} //{{{ read //################################################################################################## /** * Reads a PDB file from a stream and extracts atom names and coordinates, * residue order, etc. * @param r a LineNumberReader hooked up to a PDB file */ public CoordinateFile read(LineNumberReader r) throws IOException { initData(); Runtime runtime = Runtime.getRuntime(); long maxMemory = runtime.maxMemory(); long allocatedMemory = runtime.totalMemory(); long freeMemory = runtime.freeMemory(); long totalFree = (freeMemory + (maxMemory - allocatedMemory)); //SoftLog.err.println("max memory: " + maxMemory /1024); //SoftLog.err.println("total free memory: " + (freeMemory + (maxMemory - allocatedMemory)) / 1024); int pdbv2atoms = 0; String s; while(((s = r.readLine()) != null)&&((double)totalFree/(double)maxMemory > 0.05)) { allocatedMemory = runtime.totalMemory(); freeMemory = runtime.freeMemory(); totalFree = (freeMemory + (maxMemory - allocatedMemory)); try { if(s.startsWith("ATOM ") || s.startsWith("HETATM")) { if (isVersion23(s)) pdbv2atoms++; readAtom(s); } else if(s.startsWith("ANISOU")) { readAnisoU(s); } else if(s.startsWith("MODEL ") && s.length() >= 14) { if(model != null) model.setStates(states); model = new Model(s.substring(10,14).trim()); coordFile.add(model); states.clear(); residues.clear(); } else if(s.startsWith("ENDMDL")) { if(model != null) model.setStates(states); model = null; } else if(s.startsWith("TER")) { // If we clear out our list of residues-by-name, then it's // OK to do something like this: // chain B atoms... // TER // chain B atoms of same names... // Although it seems awful, this is often what you get when // doing a symmetry expansion in crystallography. // So even though it's not very nice, we *should* allow it: residues.clear(); // Label our residues with how many TERs precede them. // Thus, the identical "chain B Ile 47" 's above are distinct. countTER++; } else if(s.startsWith("MASTER") || s.startsWith("END")) { // These lines are useless. Ignore them. } else // headers { // Headers are just saved for later and then output again if(s.startsWith("HEADER") && s.length() >= 66) coordFile.setIdCode(s.substring(62,66)); String six; if(s.length() >= 6) six = s.substring(0,6); else six = s; coordFile.addHeader(intern(six), s); } } catch(IndexOutOfBoundsException ex) { SoftLog.err.println("Error reading from PDB file, line "+r.getLineNumber()+": "+s); } catch(NumberFormatException ex) { SoftLog.err.println("Error reading from PDB file, line "+r.getLineNumber()+": "+s); } }//while more lines if (!((double)totalFree/(double)maxMemory > 0.05)) { SoftLog.err.println("PDB file too large, aborting read, removing partial model "+model); coordFile.remove(model); model = null; } if(model != null) model.setStates(states); CoordinateFile rv = coordFile; clearData(); // This little dance makes sure that all alt confs define some state for every atom. for(Iterator iter = rv.getModels().iterator(); iter.hasNext(); ) { Model m = (Model) iter.next(); try { m.fillInStates(false); } catch(AtomException ex) { // This shouldn't ever be able to happen... SoftLog.err.println("Unable to find states for all atoms in model!"); ex.printStackTrace(SoftLog.err); } } // This sets up secondary structure assignments rv.setSecondaryStructure(new PdbSecondaryStructure(rv.getHeaders())); // This sets up disulfide bond residue-residue pairings rv.setDisulfides(new PdbDisulfides(rv.getHeaders())); rv.setPdbv2Count(pdbv2atoms); return rv; } //}}} //{{{ isVersion23 /** for testing an atom to see if it is pdb v2.3 **/ public boolean isVersion23(String atomLine) { String atomRes = atomLine.substring(12, 16) + " " + atomLine.substring(17, 20); return v2tov3Map.containsKey(atomRes); } //}}} //{{{ readAtom //################################################################################################## void readAtom(String s) throws NumberFormatException { checkModel(); Residue r = makeResidue(s); Atom a = makeAtom(r, s); String serial = s.substring(6, 11); AtomState state = new AtomState(a, serial); String altConf = intern(s.substring(16, 17)); state.setAltConf(altConf); // We're now ready to add this to a ModelState // It's possible this state will have no coords, etc ModelState mState = makeState(altConf); // This protects us against duplicate lines // that re-define the same atom and state! try { mState.add(state); } catch(AtomException ex) { // Sloppy PDB-like files (like the ligand ones from Rosetta) // sometimes duplicate atom names, like every carbon is " C ". // But moldb2 requires that every atom have a unique name. // So we append a number after the 4-char name (" C 1", " C 2"), // which will be used internally but will be cut off again when // the file is saved back to PDB. Should be pretty seamless. // We retain this warning message, because duplicate atom defs // still IS an error in many cases and shouldn't be silenced. SoftLog.err.println(ex.getMessage()); a = makeUniqueAtom(r, s); state = new AtomState(a, serial); state.setAltConf(altConf); try { mState.add(state); } catch(AtomException ex2) { // This is a true error condition -- shouldn't ever be able to get here. ex2.printStackTrace(); System.err.println("Logical error in PDB construction!"); } } double x, y, z; x = Double.parseDouble(s.substring(30, 38).trim()); y = Double.parseDouble(s.substring(38, 46).trim()); z = Double.parseDouble(s.substring(46, 54).trim()); state.setXYZ(x, y, z); if(s.length() >= 60) { String q = s.substring(54, 60).trim(); if(q.length() > 0) state.setOccupancy(Double.parseDouble(q)); } if(s.length() >= 66) { String b = s.substring(60, 66).trim(); if(b.length() > 0) state.setTempFactor(Double.parseDouble(b)); } if(s.length() >= 80 && s.charAt(78) != ' ') { // These are formatted as 2+, 1-, etc. if(s.charAt(79) == '-') state.setCharge('0' - s.charAt(78)); else if(s.charAt(79) == '+') state.setCharge(s.charAt(78) - '0'); // else do nothing -- sometimes this field is used for other purposes (?) } if(s.length() > 80) { state.setPast80(intern(s.substring(80))); } } //}}} //{{{ readAnisoU //################################################################################################## void readAnisoU(String s) throws NumberFormatException { checkModel(); Residue r = makeResidue(s); Atom a = makeAtom(r, s); //Atom a = r.getAtom(s.substring(12, 16)); //if(a == null) throw new AtomException("Logical error: ANISOU should always follow ATOM or HEATATM!"); String altConf = intern(s.substring(16, 17)); ModelState mState = makeState(altConf); try { AtomState state = mState.get(a); state.setAnisoU(s); } catch(AtomException ex) { SoftLog.err.println("Logical error: ANISOU should always follow ATOM or HEATATM!"); ex.printStackTrace(SoftLog.err); } } //}}} //{{{ checkModel, makeResidue //################################################################################################## /** Makes sure that a model exists for things to go into */ void checkModel() { if(model == null) { model = new Model("1"); coordFile.add(model); states.clear(); residues.clear(); } } /** Retrieves a residue, creating it if necessary */ Residue makeResidue(String s) throws NumberFormatException { checkModel(); // Always pretend there is a fully space-padded field // present, because lines may be different lengths. String segID = " "; if(s.length() > 72) { if(s.length() >= 76) segID = s.substring(72,76); else segID = Strings.justifyLeft(s.substring(72), 4); } String key = s.substring(17,27); if(useSegID) key += segID; Residue r = (Residue)residues.get(key); if(r == null) { if(trimSegID) segID = segID.trim(); segID = intern(segID); String chainID = intern(s.substring(21,22)); String seqNum = intern(s.substring(22,26)); String insCode = intern(s.substring(26,27)); String resName = intern(s.substring(17,20)); r = new Residue(chainID, segID, seqNum, insCode, resName); r.sectionID = countTER; residues.put(key, r); try { model.add(r); } catch(ResidueException ex) { SoftLog.err.println("Logical error: residue "+r+" already exists in model."); ex.printStackTrace(SoftLog.err); } } return r; } //}}} //{{{ makeState //################################################################################################## /** * Returns a conformation identified by its one letter code, * in the form of a ModelState; * or creates it if it didn't previously exist. *

If the ID is something other than space (' '), the * new conformation will have the default conformation set * as its parent. If a default conformation does not exist * yet, it will also be created. */ ModelState makeState(String stateID) { ModelState state = (ModelState) states.get(stateID); if(state == null) { state = new ModelState(); if (model != null) state.setName(coordFile.getIdCode()+" "+model.toString()); states.put(stateID, state); if(! " ".equals(stateID)) state.setParent(this.makeState(" ")); } return state; } //}}} //{{{ makeAtom, makeUniqueAtom //################################################################################################## /** * Returns the named atom from the given (non-null) * Residue, or creates it if it doesn't exist yet. */ Atom makeAtom(Residue r, String s) { // The usual case -- create a new atom only if needed return makeAtomImpl(r, s, s.substring(12, 16)); } /** Forces creation of a brand new atom with a unique name */ Atom makeUniqueAtom(Residue r, String s) { String id = s.substring(12, 16); for(int i = 1; true; i++) { String extID = id+i; // more than 4 chars, intentionally Atom a = r.getAtom(extID); if(a == null) return makeAtomImpl(r, s, extID); } } Atom makeAtomImpl(Residue r, String s, String id) { Atom a = r.getAtom(id); if(a == null) { String elem = null; String resName = r.getName(); if(s.length() >= 78) elem = getElement(s.substring(76,78).trim(), resName); if(elem == null) elem = getElement(id.substring(0,2), resName); if(elem == null) elem = getElement(id.substring(1,2), resName); if(elem == null) elem = getElement(id.substring(0,1), resName); // VMD produces some (but not all) H with names like _1HB (instead of 1HB_ or _HB1) if(elem == null) elem = getElement(id.substring(2,3), resName); if(elem == null) elem = "XX"; //System.out.print("atom:"+id+"="+elem+" "); a = new Atom(intern(id), elem, s.startsWith("HETATM")); try { r.add(a); } catch(AtomException ex) { System.err.println("Logical error!"); ex.printStackTrace(); } } return a; } //}}} //{{{ getElement //############################################################################## static final String[] allElementNames = { "H", "HE", "LI", "BE", "B", "C", "N", "O", "F", "NE", "NA", "MG", "AL", "SI", "P", "S", "CL", "AR", "K", "CA", "SC", "TI", "V", "CR", "MN", "FE", "CO", "NI", "CU", "ZN", "GA", "GE", "AS", "SE", "BR", "KR", "RB", "SR", "Y", "ZR", "NB", "MO", "TC", "RU", "RH", "PD", "AG", "CD", "IN", "SN", "CB", "TE", "I", "XE", "CS", "BA", "LA", "CE", "PR", "ND", "PM", "SM", "EU", "GD", "TB", "DY", "HO", "ER", "TM", "YB", "LU", "HF", "TA", "W", "RE", "OS", "IR", "PT", "AU", "HG", "TL", "PB", "BI", "PO", "AT", "RN", "FR", "RA", "AC", "TH", "PA", "U", "NP", "PU", "AM", "CM", "BK", "CF", "ES", "FM", "MD", "NO", "LR", "RF", "DB", "SG", "BH", "HS", "MT", "DS" }; // ambiguous_resnames are for identifying atoms that could be hydrogens or heavy atoms // e.g. Hg. static final String[] ambiguous_resnames = { // residues with He (currently none 070711) "PHF", "HF3", "HF5", // residues with Hf " HG", "HG2","HGB","HGC","HGI","MAC","MBO","MMC","PHG","PMB","AAS","AMS","BE7","CMH","EMC","EMT", // residues with Hg " HO","HO3" //residues with Ho // residues with Hs. (currently none 070711) }; static Map elementNames = null; static ArrayList ambigAtomResidues = null; /** * Pass in a valid element symbol, or D, T, or Q (1 or 2 chars, uppercase). * Get back a valid element symbol. * * It now takes in the residue name in order to check whether the atom is a hydrogen * or one of several heavy atoms (He, Hf, Hg, Ho, Hs). * These residues are hard-coded in, so they have to be updated when new residues * with these heavy atoms are created. * If the residue isn't found, it defaults to saying it is a hydrogen. * * Returns null for things we don't recognize at all. */ static String getElement(String name, String resName) { if(elementNames == null) { elementNames = new HashMap(); for(int i = 0; i < allElementNames.length; i++) elementNames.put(allElementNames[i], allElementNames[i]); elementNames.put("D", "H"); // deuterium elementNames.put("T", "H"); // tritium elementNames.put("Q", "Q"); // NMR pseudo atoms } // tests to see if atom is one of several atoms that can be ambiguous. if (name.equals("HE")||name.equals("HF")||name.equals("HG")||name.equals("HO")||name.equals("HS")) { if (ambigAtomResidues == null) { ambigAtomResidues = new ArrayList(); for (int i = 0; i < ambiguous_resnames.length; i++) ambigAtomResidues.add(ambiguous_resnames[i]); } if (ambigAtomResidues.contains(resName)) { return (String) elementNames.get(name); } else { return "H"; } } return (String) elementNames.get(name); } //}}} //{{{ setUseSegID //################################################################################################## /** * Determines whether or not segment IDs determine resiude identity; * i.e., whether otherwise identical residue specifications with * different segIDs will be treated as being the same or different. * In most cases, this should be left at its default value of false. * However, for structures without chain IDs but with multiple chains * (e.g. structures coming out of CNS refinement) it should be true. */ public void setUseSegID(boolean b) { useSegID = b; } //}}} //{{{ extractSheetDefinitions - out of commission //################################################################################################## /** * Given PDB headers and a Model, returns Sets of Residues that belong to various beta sheets. * The sets are organized into a Map with the sheet names as its keys. * * TODO: this should really return more detail, like individual strands. * * @param headers the PDB headers, each line as it's own String * @param model the model in which to find the residues * @return Map<String, Set<Residue>> */ /* static public Map extractSheetDefinitions(Collection headers, Model model) { Map sheets = new UberMap(); for(Iterator hi = headers.iterator(); hi.hasNext(); ) { String h = (String) hi.next(); if(h.startsWith("SHEET ")) { String first = h.substring(21, 27) + h.substring(17, 20); String last = h.substring(32, 38) + h.substring(28, 31); String sheetID = h.substring(11,14); Set sheet = (Set) sheets.get(sheetID); if(sheet == null) { sheet = new UberSet(); sheets.put(sheetID, sheet); } Residue res1 = model.getResidue(first); Residue res2 = model.getResidue(last); if(res1 == null || res2 == null) continue; do { sheet.add(res1); res1 = res1.getNext(model); } while(res1 != null && !res1.equals(res2)); sheet.add(res2); } } return sheets; } */ //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/Disulfides.java0000644000000000000000000000620511531212746022526 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * Disulfides represents a generic set of disulfide bonds. * It was basically copied from IWD's SecondaryStructure class. * *

Copyright (C) 2009 by Daniel A. Keedy. All rights reserved. *
Begun on Wed Sep 2 2009 */ abstract public class Disulfides //extends ... implements ... { //{{{ Constants //}}} //{{{ CLASS: NoDisulfides //############################################################################## /** A dummy implementation that always returns NOT_IN_DISULFIDE. */ public static class NoDisulfides extends Disulfides { /** A dummy implementation that always returns NOT_IN_DISULFIDE. */ public Object classify(Residue r) { return Disulfide.NOT_IN_DISULFIDE; } } //}}} //{{{ Variable definitions //############################################################################## /** Holds Disulfide objects */ private Collection disulfides = new ArrayList(); //}}} //{{{ Constructor(s) //############################################################################## public Disulfides() { super(); } //}}} //{{{ add, get(All), classify //############################################################################## protected void add(Disulfide d) { disulfides.add(d); d.disulfideIndex = disulfides.size(); } /** @return a Disulfide object denoting a type of disulfide bond (intra-chain or * inter-chain) or null if the residue doesn't participate in a disulfide bond. */ public Disulfide get(Residue res) { for(Iterator iter = disulfides.iterator(); iter.hasNext(); ) { Disulfide dslf = (Disulfide) iter.next(); if(dslf.contains(res)) return dslf; } return null; // no entry for that residue } /** @return an unmodifiable view of the Disulfides in this structure. */ public Collection getAll() { return Collections.unmodifiableCollection(disulfides); } /** @return one of the disulfide category constants defined by this class, * or null if the residue doesn't participate in a disulfide bond. */ public Object classify(Residue res) { Disulfide dslf = get(res); if(dslf != null) return dslf.getType(); else return null; } //}}} //{{{ isIntraChain, isInterChain //############################################################################## public boolean isInDisulfide(Residue r) { return !Disulfide.NOT_IN_DISULFIDE.equals(classify(r)); } public boolean isIntraChain(Residue r) { return Disulfide.INTRA_CHAIN.equals(classify(r)); } public boolean isInterChain(Residue r) { return Disulfide.INTER_CHAIN.equals(classify(r)); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/SecondaryStructure.java0000644000000000000000000001761511531212746024312 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * SecondaryStructure represents a generic secondary structure * assignment for a bunch of residues. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Feb 2 09:43:51 EST 2006 */ abstract public class SecondaryStructure //extends ... implements ... { //{{{ Constants // Secondary structure types public static final Object COIL = "Unnamed structure (coil)"; public static final Object HELIX = "Generic helix"; // Listed in PDB file format guide: //public static final Object HELIX_RH_AL = "Right-handed alpha helix"; // DSSP "H" //public static final Object HELIX_RH_OM = "Right-handed omega helix"; //public static final Object HELIX_RH_PI = "Right-handed pi helix"; // DSSP "I" //public static final Object HELIX_RH_GA = "Right-handed gamma helix"; //public static final Object HELIX_RH_310 = "Right-handed 3_10 helix"; // DSSP "G" //public static final Object HELIX_LH_AL = "Left-handed alpha helix"; //public static final Object HELIX_LH_OM = "Left-handed omega helix"; //public static final Object HELIX_LH_GA = "Left-handed gamma helix"; //public static final Object HELIX_27_RIBBON = "27 ribbon/helix"; // what's this? //public static final Object HELIX_POLYPRO = "Poly-proline helix"; public static final Object STRAND = "Generic extended strand"; // DSSP "E" public static final Object TURN = "Generic turn"; // Listed in mmCIF dictionary under struct_conf_type: //public static final Object TURN_TY1 = "Type 1 turn"; //public static final Object TURN_TY1P = "Type 1' turn"; //public static final Object TURN_TY2 = "Type 2 turn"; //public static final Object TURN_TY2P = "Type 2' turn"; //}}} //{{{ CLASS: AllCoil //############################################################################## /** A dummy implementation that always returns COIL. */ public static class AllCoil extends SecondaryStructure { /** A dummy implementation that always returns COIL. */ public Object classify(Residue r) { return COIL; } } //}}} //{{{ CLASS: Range //############################################################################## /** Describes a start-end range for a helix, sheet, or turn */ public static class Range { int rangeIndex = 0; Object type = COIL; String chainId; public int initSeqNum, endSeqNum; // added public (ARK Spring2010) String initICode = " ", endICode = " "; public int sense = 0; // 0 if first strand, 1 if parallel, -1 if anti-parallel (ARK Spring2010), is this used? public int strand = 1; // starts at 1 for each strand within a sheet and increases by one (ARK Spring2010) public String sheetID = " "; // (ARK Spring2010) public boolean flipped = false; // (ARK Spring2010) public Range previous = null; // (ARK Spring2010) public Range next = null; // (ARK Spring2010) public Range duplicateOf = null; // (ARK Spring2010) public boolean contains(Residue r) { if(!chainId.equals(r.getChain())) return false; int seqNum = r.getSequenceInteger(); if(seqNum < initSeqNum || seqNum > endSeqNum) return false; String iCode = r.getInsertionCode(); if(seqNum == initSeqNum && iCode.compareTo(initICode) < 0) return false; if(seqNum == endSeqNum && iCode.compareTo(endICode) > 0) return false; return true; } /// could change vars from public and add more accessor methods (ARK Spring2010) public Object getType() { return type; } public int getIndex() { return rangeIndex; } } //}}} //{{{ Variable definitions //############################################################################## public Collection ranges = new ArrayList(); // changed private to public, (ARK Spring2010) //}}} //{{{ Constructor(s) //############################################################################## public SecondaryStructure() { super(); } //}}} //{{{ add/getRange, classify //############################################################################## protected void addRange(Range r) { ranges.add(r); r.rangeIndex = ranges.size(); } /** Returns a Range object denoting a secondary structure element (helix, strand, etc) or null for none. */ public Range getRange(Residue res) { for(Iterator iter = ranges.iterator(); iter.hasNext(); ) { Range rng = (Range) iter.next(); if(rng.duplicateOf!=null) continue; // (ARK Spring2010) if(rng.contains(res)) return rng; } return null; // no entry for that residue } /** Returns one of the structure category constants defined by this class. */ public Object classify(Residue res) { Range rng = getRange(res); if(rng != null) return rng.getType(); else return COIL; } //}}} //{{{ isHelix/Strand/Turn/Coil //############################################################################## // This will have to become more complicated if we allow different types of helix public boolean isHelix(Residue r) { return HELIX.equals(classify(r)); } public boolean isStrand(Residue r) { return STRAND.equals(classify(r)); } public boolean isTurn(Residue r) { return TURN.equals(classify(r)); } public boolean isCoil(Residue r) { return COIL.equals(classify(r)); } //}}} //{{{ consolidateSheets public void consolidateSheets() // (ARK Spring2010) { Hashtable uniqueStrands = new Hashtable(); // For each ribbon, record it's predecessor in sheet, and check for duplicates ///this is repeated later in ribbon printer, with strands vector!! fix?!?!? for(Iterator iter = ranges.iterator(); iter.hasNext(); ) { Range rng = (Range) iter.next(); if(!rng.type.equals(STRAND)) continue; // not a sheet // get unique representation for strand, test if it's been found before Integer key = new Integer(rng.initSeqNum*1000 + (int)rng.chainId.charAt(0)); ////sufficient to make it unique?!?!? if(!uniqueStrands.containsKey(key)) uniqueStrands.put(key, rng); else rng.duplicateOf = (Range)uniqueStrands.get(key); // now find this strand's previous and next strand for(Iterator iter2 = ranges.iterator(); iter2.hasNext(); ){ Range rng2 = (Range) iter2.next(); if(!rng2.type.equals(STRAND)) continue; if(rng2.sheetID.equals(rng.sheetID) && rng2.strand == rng.strand-1){ rng.previous = rng2; rng2.next = rng; ///break; } } } // now go through and reassign previous/next fields for(Iterator iter = ranges.iterator(); iter.hasNext(); ) { Range rng = (Range) iter.next(); if(!rng.type.equals(STRAND)) continue; // not a sheet if(rng.duplicateOf==null && rng.next!=null && rng.next.duplicateOf!=null) rng.next.duplicateOf.previous = rng; if(rng.duplicateOf==null && rng.previous!= null && rng.previous.duplicateOf!=null) rng.previous = rng.previous.duplicateOf; } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/Residue.java0000644000000000000000000003671111744305702022041 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.util.Strings; //}}} /** * Residue represents a group of atoms, * usually one that forms some connected chemical unit. * Residues are usually small groups, 10-20 atoms. * Each atom in a residue must have a unique name. * *

Residues implement strict equality and cannot be duplicated; * each Residue is unique. * We cannot allow shallow copies of Residues because Atoms * need to know which Residue they belong to (e.g. for full name). * Thus, the copy constructor makes deep copies; * it is an Atom-cloning convenience ONLY. * *

A residue may belong to zero or more Models. * A residue does not know, therefore, which model(s) it belongs to, * but this allows us to cheaply clone and then tweak a given Model. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Mar 17 10:01:58 EST 2003 */ public class Residue implements Comparable { //{{{ Constants /** Flag value used for sequence number strings that aren't actually integer numbers. */ public static final int NAN_SEQ = Integer.MAX_VALUE; //}}} //{{{ Variable definitions //################################################################################################## /** The chain and segment that this Residue belongs to (may not be zero/null) */ String chain = " "; String segment = ""; /** The set of atoms belonging to this Residue: Map<:String, Atom> */ Map atoms; Collection unmodAtoms = null; /** The index of this residue in its chain; may be zero or negative */ String seqNum; /** The integer version of seqNum, or NAN_SEQ if seqNum is alphanumeric. Used for sorting. */ int seqInt; /** The insertion code for this residue */ String insCode; /** The name for this residue (recommended: 3 letters, uppercase) */ String resName; /** The cached, full name of this residue */ String qnameCache = null; /** Number of times this residue has been modified */ int modCount = 0; /** * A numeric counter for classifying Residues into arbitrary "sections". * Use it any way you like in your own code, * but unless you assign it a meaningful value, don't expect it to have one. * Default value is zero (0). */ public int sectionID = 0; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new residue without any atoms in it. * @param chain the chain ID. Not null. Space (" ") is a good default. * @param segment the seg ID. Not null. Empty string ("") is a good default. * @param seqNum the number in sequence. May have any value. * @param insCode the insertion code. Not null. Space (" ") is a good default. * @param resName the residue name. Not null. Empty string ("") is a good default. */ public Residue(String chain, String segment, String seqNum, String insCode, String resName) { if(chain == null) throw new IllegalArgumentException("Must provide a non-null chain ID"); if(segment == null) throw new IllegalArgumentException("Must provide a non-null segment ID"); if(seqNum == null) throw new IllegalArgumentException("Must provide a non-null sequence number/ID"); if(insCode == null) throw new IllegalArgumentException("Must provide a non-null insertion code"); if(resName == null) throw new IllegalArgumentException("Must provide a non-null residue name"); this.chain = chain; this.segment = segment; this.seqNum = seqNum; this.insCode = insCode; this.resName = resName; try { this.seqInt = Integer.parseInt(this.seqNum.trim()); //System.out.println(seqNum + " decodes to " + seqInt); } catch(NumberFormatException ex) { try { this.seqInt = Hy36.decode(4, seqNum); } catch (Error e) { this.seqInt = NAN_SEQ; } } atoms = new UberMap(); } /** * Creates a new residue just like template, with (copies of) all the same Atoms. * Thus, this is a deep copy. Providing a new residue name is optional. * Note that this is really just a convenience method for using the Atom * copy constructor directly to populate a new Residue. * This copy WILL NOT be equal to template, as each Residue object is considered unique. */ public Residue(Residue template, String chain, String segment, String seqNum, String insCode, String resName) { this(chain, segment, seqNum, insCode, resName); try { for(Iterator iter = template.getAtoms().iterator(); iter.hasNext(); ) add( new Atom((Atom)iter.next()) ); } catch(AtomException ex) { System.err.println("Unable to duplicate residue?"); ex.printStackTrace(); } } /** Creates a new residue just like template, with (copies of) all the same Atoms. */ public Residue(Residue template) { this(template.getChain(), template.getSegment(), template.getSequenceNumber(), template.getInsertionCode(), template.getName()); } //}}} //{{{ cloneStates //################################################################################################## /** * A utility function for use with the copy constructor. * Given a source residue and state, make copies of the states * for all the atoms in this residue that exist in the source. * @throws AtomException if from doesn't contain a state for one of the * relevant atoms in fromRes; or if to already contains a mapping for * one of the relevant atoms in this. * @return to */ public ModelState cloneStates(Residue fromRes, ModelState from, ModelState to) throws AtomException { for(Iterator iter = this.getAtoms().iterator(); iter.hasNext(); ) { Atom dst = (Atom)iter.next(); Atom src = fromRes.getAtom( dst.getName() ); if(src != null) to.add( from.get(src).cloneFor(dst) ); } return to; } //}}} //{{{ get{Chain, Segment, Atoms, Atom} //################################################################################################## /** Never null, defaults to space (" "). */ public String getChain() { return chain; } /** Never null, defaults to empty (""), any number of characters. */ public String getSegment() { return segment; } /** * Returns an unmodifiable view of the Atoms in this residue */ public Collection getAtoms() { if(unmodAtoms == null) unmodAtoms = Collections.unmodifiableCollection(atoms.values()); return unmodAtoms; } /** * Returns the atom of the specified name, * or null if no such atom is known. */ public Atom getAtom(String name) { return (Atom)atoms.get(name); } //}}} //{{{ get{SequenceNumber/Integer, InsertionCode, Name, CNIT} //################################################################################################## /** * Returns the sequence number of this residue as a non-null String. * Thanks to mmCIF, this doesn't have to be an integer, or even a real number; * it's allowed to be some arbitrary string. * Note that insertion codes function to give a sort order * within residues that share the same sequence number. */ public String getSequenceNumber() { return seqNum; } /** Returns the sequence number as an integer, or NAN_SEQ if it's some non-integer string. */ public int getSequenceInteger() { return seqInt; } /** The default insertion code if none was specified is space (" "). */ public String getInsertionCode() { return insCode; } /** * Returns the abreviated name that identifies what kind of residue this is. * These are usually three letters and all caps, but that is NOT * enforced by this class. */ public String getName() { return resName; } /** * Returns the 9-character "Chain, Number, Insertion code, Type" name of this * residue, formatted as "CNNNNITTT". Blank chain IDs and insertion codes * are left as spaces; short numbers and types ({@link #getName()}) are * padded with spaces and justified to the right and left, respectively. */ public String getCNIT() { StringBuffer sb = new StringBuffer(9); sb.append(getChain().length() > 0 ? getChain().substring(0, 1) : " "); sb.append(Strings.justifyRight(getSequenceNumber(), 4)); sb.append(getInsertionCode().length() > 0 ? getInsertionCode().substring(0, 1) : " "); sb.append(Strings.justifyLeft(getName(), 3)); return sb.toString(); } //}}} //{{{ get{Next, Prev} //################################################################################################## /** * Returns the residue after this one in the chain, or * null if there is no such residue. * This function relies on the ordering maintained by * Model and will not work properly if the residues are * out of order. * The chain ID is checked; but segment ID and distance * are NOT taken into consideration. */ public Residue getNext(Model parent) { if(parent == null) return null; try { Residue next = (Residue)parent.residues.itemAfter(this); if(!next.getChain().equals(this.getChain())) return null; return next; } catch(NoSuchElementException ex) { return null; } } /** * Returns the residue before this one in the chain, or * null if there is no such residue. * This function relies on the ordering maintained by * Model and will not work properly if the residues are * out of order. * The chain ID is checked; but segment ID and distance * are NOT taken into consideration. */ public Residue getPrev(Model parent) { if(parent == null) return null; try { Residue prev = (Residue)parent.residues.itemBefore(this); if(!prev.getChain().equals(this.getChain())) return null; return prev; } catch(NoSuchElementException ex) { return null; } } //}}} //{{{ add, remove //################################################################################################## /** * Adds the given Atom to this Residue. * If it previously belonged to another Residue, * it will be removed from that Residue first. * @throws AtomException if an atom with the same name * is already part of this residue. */ public void add(Atom a) throws AtomException { String name = a.getName(); if(atoms.containsKey(name)) throw new AtomException("An atom named "+name+" is already part of "+this); if(a.parent != null) a.parent.remove(a); atoms.put(name, a); a.parent = this; this.modified(); } /** * Removes the given Atom from this Residue. * @throws AtomException if the Atom * wasn't part of this Residue already. */ public void remove(Atom a) throws AtomException { String name = a.getName(); Atom old = (Atom)atoms.get(name); if(!a.equals(old)) throw new AtomException(a+" is not part of "+this); atoms.remove(name); a.parent = null; this.modified(); } //}}} //{{{ modified, getModCount //################################################################################################## /** Call this after changing anything about this Residue */ protected void modified() { modCount++; } /** * Gets a 'count' of the modifications to this residue. * The integer returned is guaranteed to change from * one call to the next if and only if the internal * state of this residue has been changed. */ public int getModCount() { return modCount; } //}}} //{{{ nickname //################################################################################################## /** * Returns a cute, short name for the Residue, including residue * three-letter code, chain, number, and insertion code (if any). */ public String nickname() { return this.getName().trim().substring(0,1).toUpperCase() +this.getName().trim().substring(1).toLowerCase() +this.getSequenceNumber().trim() +this.getInsertionCode().trim(); /*return this.getName().trim().toLowerCase() +this.getChain().replace(" ", "_")//.toLowerCase() +this.getSequenceNumber().trim() +this.getInsertionCode().trim();*/ } //}}} //{{{ compareTo, toString //################################################################################################## /** * This comparison is consistent with equals but * arbitrary in that for two residues with the same "name", * the ordering will depend on their natural hash codes * (i.e., their locations in memory). */ public int compareTo(Object o) { if(o == null) return 1; // null sorts to front Residue r1 = this; Residue r2 = (Residue)o; int comp = r1.chain.compareTo(r2.chain); if(comp != 0) return comp; comp = r1.segment.compareTo(r2.segment); if(comp != 0) return comp; comp = r1.seqInt - r2.seqInt; if(comp != 0) return comp; // seqNums could still differ by whitespace... comp = r1.seqNum.compareTo(r2.seqNum); if(comp != 0) return comp; comp = r1.insCode.compareTo(r2.insCode); if(comp != 0) return comp; comp = r1.resName.compareTo(r2.resName); if(comp != 0) return comp; return System.identityHashCode(r1) - System.identityHashCode(r2); } /** * Returns the full name of the Residue, including chain and segment (if any), * number, insertion code, and residue three-letter code */ public String toString() { if(qnameCache == null) { StringBuffer s = new StringBuffer(); String chtrim = chain.trim(); String segtrim = segment.trim(); if(chtrim.length() > 0) s.append(chtrim).append(' '); if(segtrim.length() > 0) s.append(segtrim).append(' '); s.append(seqNum); String instrim = insCode.trim(); if(instrim.length() > 0) s.append(instrim); s.append(' '); s.append(resName); qnameCache = s.toString(); } return qnameCache; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/Disulfide.java0000644000000000000000000001102311531212746022335 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * Disulfides represents a disulfide bond from a protein structure. * *

Copyright (C) 2009 by Daniel A. Keedy. All rights reserved. *
Begun on Thu Sep 3 2009 */ public class Disulfide //extends ... implements ... { //{{{ Constants // Disulfide types public static final Object NOT_IN_DISULFIDE = "No SS bond detected"; public static final Object INTRA_CHAIN = "SS bond within same chain"; public static final Object INTER_CHAIN = "SS bond between two different chains"; // more?... //}}} //{{{ Variable definitions //############################################################################## int disulfideIndex = 0; Object type = NOT_IN_DISULFIDE; String initChainId, endChainId; int initSeqNum, endSeqNum; String initICode = " ", endICode = " "; //}}} //{{{ Constructor(s) //############################################################################## public Disulfide() { super(); } //}}} //{{{ get(_) functions //############################################################################## public int getIndex() { return disulfideIndex; } public Object getType() { return type; } public String getInitChainId() { return initChainId; } public String getEndChainId() { return endChainId; } public int getInitSeqNum() { return initSeqNum; } public int getEndSeqNum() { return endSeqNum; } public String getInitICode() { return initICode; } public String getEndICode() { return endICode; } //}}} //{{{ contains, matches(Init,End) //############################################################################## /** * @return true if the provided Residue matches either CNIT * in this Disulfide, or false otherwise. */ public boolean contains(Residue res) { if(matchesInit(res) || matchesEnd(res)) return true; return false; } /** * Decides the provided Residue matches the first (from the PDB header, usually * first in sequence) residue in this Disulfide based purely on CNIT. */ public boolean matchesInit(Residue res) { if(!res.getName().equals("CYS")) return false; // T if(!initChainId.equals(res.getChain())) return false; // C if(res.getSequenceInteger() != initSeqNum) return false; // N if(res.getInsertionCode().compareTo(initICode) < 0) return false; // I return true; // must be a match! } /** * Decides the provided Residue matches the second (from the PDB header, usually * second in sequence) residue in this Disulfide based purely on CNIT. */ public boolean matchesEnd(Residue res) { if(!res.getName().equals("CYS")) return false; // T if(!endChainId.equals(res.getChain())) return false; // C if(res.getSequenceInteger() != endSeqNum) return false; // N if(res.getInsertionCode().compareTo(endICode) > 0) return false; // I return true; // must be a match! } //}}} //{{{ otherEnd //############################################################################## /** * @return the Residue at the other end of this Disulfide from the provided * Residue, or null if the other end doesn't exist (?) or the provided * Residue isn't actually in this Disulfide. */ public Residue otherEnd(Model model, Residue res) { if(!this.contains(res)) return null; // residue not even in this disulfide if(matchesInit(res)) // find end { for(Iterator rItr = model.getResidues().iterator(); rItr.hasNext(); ) { Residue curr = (Residue) rItr.next(); if(matchesEnd(curr)) return curr; } } else if(matchesEnd(res)) // find init { for(Iterator rItr = model.getResidues().iterator(); rItr.hasNext(); ) { Residue curr = (Residue) rItr.next(); if(matchesInit(curr)) return curr; } } return null; // should never happen (unless code changes elsewhere...) } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/0000755000000000000000000000000011744306102021546 5ustar rootrootking-2.21.120420/driftwood/src/driftwood/moldb2/selection/AtomTerm.java0000644000000000000000000000250611531212744024146 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * AtomTerm handles "atomXXXX" selections. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Aug 30 09:11:42 PDT 2007 */ public class AtomTerm extends Selection { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## String name; //}}} //{{{ Constructor(s) //############################################################################## public AtomTerm(String name) { super(); this.name = name.replace('_', ' '); } //}}} //{{{ selectImpl, toString //############################################################################## protected boolean selectImpl(AtomState as) { return name.equals(as.getName()); } public String toString() { return "atom"+name.replace(' ', '_'); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/ChainTerm.java0000644000000000000000000000252611531212744024272 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * ChainTerm handles "chainX" selections. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Aug 30 09:11:42 PDT 2007 */ public class ChainTerm extends Selection { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## String name; //}}} //{{{ Constructor(s) //############################################################################## public ChainTerm(String name) { super(); this.name = name.replace('_', ' '); } //}}} //{{{ selectImpl, toString //############################################################################## protected boolean selectImpl(AtomState as) { return name.equals(as.getResidue().getChain()); } public String toString() { return "chain"+name.replace(' ', '_'); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/NotTerm.java0000644000000000000000000000311611571452342024010 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * NotTerm is the logical NOT (inverse) of another selection. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Aug 29 13:33:28 PDT 2007 */ public class NotTerm extends Selection { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Selection childTerm; //}}} //{{{ Constructor(s) //############################################################################## public NotTerm(Selection target) { super(); this.childTerm = target; } //}}} //{{{ init, selectImpl, toString //############################################################################## public void init(Collection atomStates, CoordinateFile coordFile) { super.init(atomStates, coordFile); childTerm.init(atomStates, coordFile); } /** * Returns true iff the given AtomState should belong to this selection. */ protected boolean selectImpl(AtomState as) { return !childTerm.select(as); } public String toString() { return "not "+childTerm; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/AndTerm.java0000644000000000000000000000321111531212744023742 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * AndTerm is a logical AND (intersection) of other selections. * It will short-circuit on the first selection that returns false. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Aug 29 13:33:28 PDT 2007 */ public class AndTerm extends ComboTerm { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public AndTerm(Selection first) { super(first); } //}}} //{{{ selectImpl, toString //############################################################################## /** * Returns true iff the given AtomState should belong to this selection. */ protected boolean selectImpl(AtomState as) { for(Iterator iter = this.childTerms.iterator(); iter.hasNext(); ) { Selection s = (Selection) iter.next(); if( !s.select(as) ) return false; } return true; // nobody returned false, so it must be true! } public String toString() { return super.toString(" and "); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/OrTerm.java0000644000000000000000000000317311531212744023627 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * OrTerm is a logical OR (union) of other selections. * It will short-circuit on the first selection that returns true. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Aug 29 13:33:28 PDT 2007 */ public class OrTerm extends ComboTerm { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public OrTerm(Selection first) { super(first); } //}}} //{{{ selectImpl, toString //############################################################################## /** * Returns true iff the given AtomState should belong to this selection. */ protected boolean selectImpl(AtomState as) { for(Iterator iter = this.childTerms.iterator(); iter.hasNext(); ) { Selection s = (Selection) iter.next(); if( s.select(as) ) return true; } return false; // nobody returned true, so it must be false! } public String toString() { return super.toString(" or "); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/SecondaryStructureTerm.java0000644000000000000000000000421711571452342027123 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * SecondaryStructureTerm handles "alpha" or "beta" secondary * structure selections. * *

Copyright (C) 2011 by Daniel A. Keedy. All rights reserved. *
Begun on Tue Mar 15 2011 */ public class SecondaryStructureTerm extends Selection { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## String secStrucType; CoordinateFile coordFile; //}}} //{{{ Constructor(s) //############################################################################## public SecondaryStructureTerm(String secStrucType) { super(); this.secStrucType = secStrucType; } //}}} //{{{ init, selectImpl, toString //############################################################################## //public void init(Collection atomStates) //{ // //super.init(atomStates); <-- don't do this! // // For this type of Selection, wait for init(CoordinateFile) // // so SecondaryStructure is accessible //} public void init(Collection atomStates, CoordinateFile coordFile) { super.init(atomStates, coordFile); this.coordFile = coordFile; } /** * Returns true iff the given AtomState should belong to this selection. */ protected boolean selectImpl(AtomState as) { SecondaryStructure secStruc = coordFile.getSecondaryStructure(); if(secStrucType.equals("alpha") && secStruc.isHelix(as.getResidue())) return true; if(secStrucType.equals("beta") && secStruc.isStrand(as.getResidue())) return true; return false; } public String toString() { return secStrucType; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/ResNameTerm.java0000644000000000000000000000253311531212744024600 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * ResNameTerm handles "atomXXXX" selections. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Aug 30 09:11:42 PDT 2007 */ public class ResNameTerm extends Selection { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## String name; //}}} //{{{ Constructor(s) //############################################################################## public ResNameTerm(String name) { super(); this.name = name.replace('_', ' '); } //}}} //{{{ selectImpl, toString //############################################################################## protected boolean selectImpl(AtomState as) { return name.equals(as.getResidue().getName()); } public String toString() { return "res"+name.replace(' ', '_'); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/ResRangeTerm.java0000644000000000000000000000463411571452342024764 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * ResRangeTerm handles "INT-INT" statements. * This expands as set of atoms (SELECTION) to include all the atoms in those residues. * * This class evolved (directed evolution?) from FromResTerm under the supervision of * dak (started 10/22/07) * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Aug 29 13:33:28 PDT 2007 */ public class ResRangeTerm extends Selection { //{{{ Constants static final private DecimalFormat df = new DecimalFormat("0.####"); //}}} //{{{ Variable definitions //############################################################################## Set includedRes; int resnum1; int resnum2; //}}} //{{{ Constructor(s) //############################################################################## public ResRangeTerm(int rn1, int rn2) { super(); resnum1 = rn1; resnum2 = rn2; } //}}} //{{{ init, selectImpl, toString //############################################################################## public void init(Collection atomStates, CoordinateFile coordFile) { super.init(atomStates, coordFile); } /** * Returns true iff the given AtomState should belong to this selection. */ protected boolean selectImpl(AtomState as) { int resnum = ( (Residue)as.getResidue() ).getSequenceInteger(); if (resnum >= resnum1 && resnum <= resnum2) { //System.out.println("resnum "+resnum+" is btw "+resnum1+" and "+resnum2); return true; } //else // System.out.println("resnum "+resnum+" is NOT btw "+resnum1+" and "+resnum2+" inclusive"); // I added this fall-back/default return statement and commented out // the old one. -- dak return false; //return this.includedRes.contains( as.getResidue() ); } public String toString() { return resnum1+"-"+resnum2; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/KeywordTerm.java0000644000000000000000000000651111571452342024676 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * KeywordTerm contains the code for all the simple Probe keywords. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Aug 29 16:42:16 PDT 2007 */ public class KeywordTerm //extends ... implements ... { //{{{ Constants //}}} //{{{ CLASS: NamedTerm //############################################################################## static abstract class NamedTerm extends Selection { String name; public NamedTerm(String name) { this.name = name; } public String toString() { return name; } } //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## private KeywordTerm() { super(); } //}}} //{{{ get //############################################################################## static Map map = null; static public Selection get(String keyword) { if(map == null) { map = new HashMap(); map.put("all", new NamedTerm("all") { protected boolean selectImpl(AtomState as) { return true; }}); map.put("*", map.get("all")); map.put("none", new NamedTerm("none") { protected boolean selectImpl(AtomState as) { return false; }}); map.put("het", new NamedTerm("het") { protected boolean selectImpl(AtomState as) { return as.isHet(); }}); map.put("carbon", new NamedTerm("carbon") { protected boolean selectImpl(AtomState as) { return "C".equals(as.getElement()); }}); map.put("hydrogen", new NamedTerm("hydrogen") { protected boolean selectImpl(AtomState as) { return "H".equals(as.getElement()); }}); map.put("nitrogen", new NamedTerm("nitrogen") { protected boolean selectImpl(AtomState as) { return "N".equals(as.getElement()); }}); map.put("oxygen", new NamedTerm("oxygen") { protected boolean selectImpl(AtomState as) { return "O".equals(as.getElement()); }}); map.put("phosphorus", new NamedTerm("phosphorus") { protected boolean selectImpl(AtomState as) { return "P".equals(as.getElement()); }}); map.put("sulfur", new NamedTerm("sulfur") { protected boolean selectImpl(AtomState as) { return "S".equals(as.getElement()); }}); map.put("alpha", new SecondaryStructureTerm("alpha")); map.put("beta", new SecondaryStructureTerm("beta")); } return (Selection) map.get(keyword); // null if not found } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/ComboTerm.java0000644000000000000000000000402111571452342024303 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * ComboTerm is the parent of AndTerm and OrTerm. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Aug 29 13:58:57 PDT 2007 */ abstract public class ComboTerm extends Selection { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## protected Collection childTerms; //}}} //{{{ Constructor(s) //############################################################################## public ComboTerm(Selection first) { super(); this.childTerms = new ArrayList(); add(first); } //}}} //{{{ init, add, toString //############################################################################## public void init(Collection atomStates, CoordinateFile coordFile) { super.init(atomStates, coordFile); for(Iterator iter = childTerms.iterator(); iter.hasNext(); ) { Selection s = (Selection) iter.next(); s.init(atomStates, coordFile); } } /** * Adds another term to the list managed by this selection. */ public void add(Selection s) { childTerms.add(s); } public String toString(String sep) { StringBuffer buf = new StringBuffer("("); boolean first = true; for(Iterator iter = childTerms.iterator(); iter.hasNext(); ) { if(first) first = false; else buf.append(sep); buf.append(iter.next()); } buf.append(")"); return buf.toString(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/WithinPointTerm.java0000644000000000000000000000345311531212744025524 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * WithinPointTerm handles "within DIST of X, Y, Z" statements. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Aug 29 13:33:28 PDT 2007 */ public class WithinPointTerm extends Selection { //{{{ Constants static final private DecimalFormat df = new DecimalFormat("0.####"); //}}} //{{{ Variable definitions //############################################################################## double distance; double sqDistance; Triple center; //}}} //{{{ Constructor(s) //############################################################################## public WithinPointTerm(double distance, double x, double y, double z) { super(); this.distance = distance; this.sqDistance = distance * distance; this.center = new Triple(x,y,z); } //}}} //{{{ selectImpl, toString //############################################################################## /** * Returns true iff the given AtomState should belong to this selection. */ protected boolean selectImpl(AtomState as) { return center.sqDistance(as) <= sqDistance; } public String toString() { return "within "+df.format(distance)+" of "+df.format(center.getX())+", "+df.format(center.getY())+", "+df.format(center.getZ()); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/FromResTerm.java0000644000000000000000000000373111571452342024630 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * FromResTerm handles "fromres (SELECTION)" statements. * This expands as set of atoms (SELECTION) to include all the atoms in those residues. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Aug 29 13:33:28 PDT 2007 */ public class FromResTerm extends Selection { //{{{ Constants static final private DecimalFormat df = new DecimalFormat("0.####"); //}}} //{{{ Variable definitions //############################################################################## Set includedRes; Selection childTerm; //}}} //{{{ Constructor(s) //############################################################################## public FromResTerm(Selection target) { super(); this.childTerm = target; } //}}} //{{{ init, selectImpl, toString //############################################################################## public void init(Collection atomStates, CoordinateFile coordFile) { super.init(atomStates, coordFile); this.childTerm.init(atomStates, coordFile); // childTerm now fully initialized, doing selections should be safe this.includedRes = childTerm.selectResidues(atomStates); } /** * Returns true iff the given AtomState should belong to this selection. */ protected boolean selectImpl(AtomState as) { return this.includedRes.contains( as.getResidue() ); } public String toString() { return "fromres ("+childTerm+")"; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/WithinSelectionTerm.java0000644000000000000000000000436611571452342026370 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * WithinSelectionTerm handles "within DIST of (SELECTION)" statements. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Aug 29 13:33:28 PDT 2007 */ public class WithinSelectionTerm extends Selection { //{{{ Constants static final private DecimalFormat df = new DecimalFormat("0.####"); //}}} //{{{ Variable definitions //############################################################################## double distance; Selection childTerm; SpatialBin spatialBin; Collection foundPts; //}}} //{{{ Constructor(s) //############################################################################## public WithinSelectionTerm(double distance, Selection target) { super(); this.distance = distance; this.childTerm = target; this.foundPts = new ArrayList(); } //}}} //{{{ init, selectImpl, toString //############################################################################## public void init(Collection atomStates, CoordinateFile coordFile) { super.init(atomStates, coordFile); this.childTerm.init(atomStates, coordFile); // childTerm now fully initialized, doing selections should be safe this.spatialBin = new SpatialBin(3.0); // taken from Molikin; a good size for atoms spatialBin.addAll( childTerm.selectAtomStates(atomStates) ); } /** * Returns true iff the given AtomState should belong to this selection. */ protected boolean selectImpl(AtomState as) { this.foundPts.clear(); this.spatialBin.findSphere(as, this.distance, this.foundPts); return !foundPts.isEmpty(); } public String toString() { return "within "+df.format(distance)+" of ("+childTerm+")"; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/selection/SelectionParser.java0000644000000000000000000004116211531212744025521 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2.selection; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.parser.*; //}}} /** * SelectionParser parses Probe-like selection strings and * generates a Selection object from them. * See Selection for a specification of the grammar! * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Aug 29 13:33:28 PDT 2007 */ public class SelectionParser //extends ... implements ... { //{{{ Constants final Matcher LOOSE_OR = Pattern.compile("\\||or").matcher(""); final Matcher LOOSE_AND = Pattern.compile("&|and").matcher(""); final Matcher TIGHT_OR = Pattern.compile(",").matcher(""); final Matcher NOT_SYMBOL = Pattern.compile("!|not").matcher(""); final Matcher START_SUBSEL = Pattern.compile("\\(").matcher(""); final Matcher END_SUBSEL = Pattern.compile("\\)").matcher(""); final Matcher KEYWORD = Pattern.compile("\\*|all|none|protein|mc|sc|base|alpha|beta|nitrogen|carbon|oxygen|sulfur|phosphorus|hydrogen|metal|polar|nonpolar|charged|donor|acceptor|aromatic|methyl|het|water|dna|rna").matcher(""); final Matcher CHAIN = Pattern.compile("chain([A-Za-z0-9_])").matcher(""); final Matcher RESNAME = Pattern.compile("res([A-Za-z0-9_]{3})").matcher(""); final Matcher ATOM = Pattern.compile("atom([A-Za-z0-9_]{4})").matcher(""); final Matcher RESNUM = Pattern.compile("("+RegexTokenMatcher.SIGNED_INT+")([A-Z])?").matcher(""); final Matcher RESRANGE = Pattern.compile(RESNUM.pattern()+"-"+RESNUM.pattern()).matcher(""); final Matcher RANGE_OP = Pattern.compile("-|to").matcher(""); final Matcher WITHIN = Pattern.compile("within").matcher(""); final Matcher OF = Pattern.compile("of").matcher(""); final Matcher COMMA = Pattern.compile(",").matcher(""); final Matcher REAL = RegexTokenMatcher.SIGNED_REAL.matcher(""); final Matcher FROMRES = Pattern.compile("fromres").matcher(""); final Pattern[] toIgnore = { RegexTokenMatcher.HASH_COMMENT, RegexTokenMatcher.WHITESPACE }; // Categories for tokenizer rather than parser: final Matcher WORD = Pattern.compile("[A-Za-z_][A-Za-z0-9_]*").matcher(""); final Matcher OPERATOR = Pattern.compile("[!&*()|,-]").matcher(""); final Matcher REAL_NOT_INT; { // Modified from RegexTokenMatcher to ensure we don't match ints! String sign = "(?:[+-]?)"; String digits = "(?:[0-9]+)"; String positive = "(?:[1-9][0-9]*)"; String natural = "(?:0|"+positive+")"; String integer = "(?:"+sign+natural+")"; String u_real = "(?:"+natural+"(?:\\.(?:"+digits+")?)?)"; String u_real_dec = "(?:"+natural+"\\.(?:"+digits+")?)"; // requires decimal point String u_real_e = "(?:"+u_real+"[eE]"+integer+")"; // requires exponent String s_real_noint = "(?:"+sign+"(?:"+u_real_dec+"|"+u_real_e+"))"; REAL_NOT_INT = Pattern.compile(s_real_noint).matcher(""); } final Pattern[] toAccept = { // No possible input prefix should match more than one of these! // However, we can't manage that because of the residue number range grammar. // So, order matters here: first patterns will be matched preferentially. WORD.pattern(), RESRANGE.pattern(), // can start with "-" // Both REAL and RESNUM can match a string that starts with an int, e.g. -1.234: // but RESNUM stops at the decimal point, leaving behind ".234" as a bad token. // But consider "1A to 2B": opposite problem, left with "A" and "B" hanging. // So we first specifically match reals with a decimal point or exponent, // then ints with a possible trailing insertion code. REAL_NOT_INT.pattern(), // can start with "-", catches decimals/exponents only RESNUM.pattern(), // can start with "-", catches insertion codes and ints REAL.pattern(), // can start with "-", catches nothing? OPERATOR.pattern(), // can start with "-" (equal to "-", actually) }; //}}} //{{{ CLASS: DummySelection //############################################################################## /** To be used in places where we haven't implemented things yet. */ static class DummySelection extends Selection { String name; public DummySelection(String name) { super(); this.name = name; } protected boolean selectImpl(AtomState as) { System.err.println("*** Warning: using dummy object ["+name+"] in selection attempt!"); return false; } public String toString() { return "["+name+"]"; } } //}}} //{{{ Variable definitions //############################################################################## TokenWindow t; //}}} //{{{ Constructor(s) //############################################################################## public SelectionParser() { super(); } //}}} //{{{ parse //############################################################################## public Selection parse(String expr) throws ParseException, IOException { return parse(new CharWindow(expr)); } /** * Parses a text expression into a Selection object. */ public Selection parse(CharWindow expr) throws ParseException, IOException { TokenMatcher tokenMatcher = new RegexTokenMatcher( RegexTokenMatcher.joinPatterns(toAccept), RegexTokenMatcher.joinPatterns(toIgnore) ); t = new TokenWindow(expr, tokenMatcher); Selection s = loose_or(); if(s == null) throw t.syntaxError("Empty expression!"); if(t.token() != null) throw t.syntaxError("Unexpected token at end of expression ["+t.token()+"]"); return s; } //}}} //{{{ loose_or, loose_and //############################################################################## Selection loose_or() throws ParseException, IOException { Selection s = loose_and(); if(s == null) return null; if(t.accept(LOOSE_OR)) { OrTerm or = new OrTerm(s); do { s = loose_and(); if(s == null) throw t.syntaxError("Incomplete OR expression"); else or.add(s); } while(t.accept(LOOSE_OR)); return or; } else return s; } Selection loose_and() throws ParseException, IOException { Selection s = tight_and(); if(s == null) return null; if(t.accept(LOOSE_AND)) { AndTerm and = new AndTerm(s); do { s = tight_and(); if(s == null) throw t.syntaxError("Incomplete AND expression"); else and.add(s); } while(t.accept(LOOSE_AND)); return and; } else return s; } //}}} //{{{ tight_and, tight_or //############################################################################## Selection tight_and() throws ParseException, IOException { Selection s = tight_or(); if(s == null) return null; Selection r = tight_or(); if(r == null) return s; else { AndTerm and = new AndTerm(s); while(r != null) { and.add(r); r = tight_or(); } return and; } } Selection tight_or() throws ParseException, IOException { Selection s = not_expr(); if(s == null) return null; if(t.accept(TIGHT_OR)) { OrTerm or = new OrTerm(s); do { s = not_expr(); if(s == null) throw t.syntaxError("Incomplete OR expression"); else or.add(s); } while(t.accept(TIGHT_OR)); return or; } else return s; } //}}} //{{{ not_expr, subexpr //############################################################################## Selection not_expr() throws ParseException, IOException { boolean doNot = t.accept(NOT_SYMBOL); Selection s = subexpr(); if(s == null) s = simple_expr(); if(s == null && doNot) throw t.syntaxError("Incomplete NOT expression"); else if(s == null) return null; else if(doNot) return new NotTerm(s); else return s; } Selection subexpr() throws ParseException, IOException { if(t.accept(START_SUBSEL)) { Selection s = loose_or(); if(s == null) throw t.syntaxError("Empty subexpression!"); t.require(END_SUBSEL); return s; } else return null; } //}}} //{{{ simple_expr //############################################################################## Selection simple_expr() throws ParseException, IOException { if(t.accept(KEYWORD)) return KeywordTerm.get(KEYWORD.group()); else if(t.accept(CHAIN)) return new ChainTerm(CHAIN.group(1)); else if(t.accept(RESNAME)) return new ResNameTerm(RESNAME.group(1)); else if(t.accept(ATOM)) return new AtomTerm(ATOM.group(1)); else if(t.accept(RESRANGE)) return res_range(); else if(t.accept(RESNUM)) return res_num(); else if(t.accept(WITHIN)) return within(); else if(t.accept(FROMRES)) return from_res(); else return null; } //}}} //{{{ res_range, res_num //############################################################################## Selection res_range() throws ParseException, IOException { try { int num1 = Integer.parseInt(RESRANGE.group(1)); int num2 = Integer.parseInt(RESRANGE.group(3)); String ins1 = RESRANGE.group(2); String ins2 = RESRANGE.group(4); if(ins1 == null) ins1 = " "; if(ins2 == null) ins2 = " "; //return new DummySelection("range "+num1+ins1+" to "+num2+ins2); // Added by dak 10/22/07 ResRangeTerm rrt = new ResRangeTerm(num1, num2); //System.out.println("Trying SelectionParser.res_range() ..."); //System.out.println("New ResRangeTerm: "+rrt.toString()); return rrt; } catch(NumberFormatException ex) { throw new ParseException("Unexpected difficulty parsing integer ["+t.token()+"]", 0); } } Selection res_num() throws ParseException, IOException { try { int num1 = Integer.parseInt(RESNUM.group(1)); String ins1 = RESNUM.group(2); if(ins1 == null) ins1 = " "; if(t.accept(RANGE_OP)) { t.require(RESNUM); int num2 = Integer.parseInt(RESNUM.group(1)); String ins2 = RESNUM.group(2); if(ins2 == null) ins2 = " "; //return new DummySelection("range "+num1+ins1+" to "+num2+ins2); return new ResRangeTerm(num1, num2); } else return new DummySelection("single res "+num1+ins1); } catch(NumberFormatException ex) { throw new ParseException("Unexpected difficulty parsing integer ["+t.token()+"]", 0); } } //}}} //{{{ within, from_res //############################################################################## Selection within() throws ParseException, IOException { double dist = real(); t.require(OF); Selection s = subexpr(); if(s != null) { return new WithinSelectionTerm(dist, s); } else { double x = real(); t.accept(COMMA); // optional double y = real(); t.accept(COMMA); // optional double z = real(); return new WithinPointTerm(dist, x, y, z); } } Selection from_res() throws ParseException, IOException { Selection s = subexpr(); if(s == null) throw t.syntaxError("fromres must be followed by (SELECTION)"); return new FromResTerm(s); } //}}} //{{{ real //############################################################################## double real() throws ParseException, IOException { t.require(REAL); try { return Double.parseDouble(REAL.group()); } catch(NumberFormatException ex) { throw new ParseException("Unexpected difficulty parsing real number ["+t.token()+"]", 0); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ main -- for testing //############################################################################## static public void main(String[] args) { SelectionParser p = new SelectionParser(); PrintStream out = System.out; try { test_fail(""); test_fail("()"); test_fail("("); test_fail("(&)"); test_fail("!&"); test_fail("within 42 of (!)"); test_fail("all or "); test_fail("1 - - 2"); // != "1--2", minus must immediately preceed number. test_ok("all"); test_ok("all none"); test_ok(" all none "); test_ok("all & none & het"); test_ok("all,none"); test_ok("all or none and not het"); test_ok("all,none !het"); test_ok("(all,none) within 8 of 1, 2.3, 4.5 not within 10 of (het | none)"); test_ok("atom_CA_ chainB,het"); test_ok("resGLY,resPRO atom_N__,atom_CA_,atom_C__,atom_O__"); test_ok("1-2 -1 -2 -1--2 -1-2 -11A--12B -5 6"); // residue numbers and ranges test_ok("1 - 2 -1 - -2 3 --4C 5 to 6 7D to 8E"); out.println(); out.println("=== All tests passed! ==="); out.println(); //final Pattern[] toIgnore = { // RegexTokenMatcher.HASH_COMMENT, // RegexTokenMatcher.WHITESPACE //}; //final Matcher WORD = Pattern.compile("[A-Za-z_]+").matcher(""); //final Matcher OPERATOR = Pattern.compile("[!&*()|,-]").matcher(""); //final Pattern[] toAccept = { // // No possible input subsequence should match more than one of these! // WORD.pattern(), // Pattern.compile("("+RegexTokenMatcher.SIGNED_INT+")([A-Z])?-("+RegexTokenMatcher.SIGNED_INT+")([A-Z])?"), // RegexTokenMatcher.SIGNED_REAL, // RegexTokenMatcher.SIGNED_INT, // OPERATOR.pattern() //}; //TokenMatcher tokenMatcher = new RegexTokenMatcher( // RegexTokenMatcher.joinPatterns(toAccept), // RegexTokenMatcher.joinPatterns(toIgnore) // ); //String expr = "1-2 -1 -2 -1--2 -1-2 -11A--12B -5 5 5.6"; //TokenWindow t = new TokenWindow(new CharWindow(expr), tokenMatcher); //out.println(expr); //while(t.token() != null) //{ // out.println(t.token()); // t.advance(); //} } catch(Exception ex) { ex.printStackTrace(); } } static private void test_ok(String expr) throws IOException, ParseException { SelectionParser p = new SelectionParser(); PrintStream out = System.out; out.println("'"+expr+"' = "+p.parse(expr)); } static private void test_fail(String expr) throws IOException { try { test_ok(expr); throw new RuntimeException("Bad expression parsed OK: '"+expr+"'"); } catch(ParseException ex) { PrintStream out = System.out; out.println("unparsable (as expected): '"+expr+"'"); out.println(ex.getMessage()); } } }//class king-2.21.120420/driftwood/src/driftwood/moldb2/PdbSecondaryStructure.java0000644000000000000000000000776211531212746024742 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * PdbSecondaryStructure returns secondary structure assignments * based on the PDB file HELIX, SHEET, and TURN records. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Feb 2 09:45:24 EST 2006 */ class PdbSecondaryStructure extends SecondaryStructure { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public PdbSecondaryStructure(Collection headers) { super(); for(Iterator iter = headers.iterator(); iter.hasNext(); ) { String s = (String) iter.next(); try { if(s.startsWith("HELIX ")) addRange(forHelix(s)); else if(s.startsWith("SHEET ")) addRange(forSheet(s)); else if(s.startsWith("TURN ")) addRange(forTurn(s)); } catch(NumberFormatException ex) { System.err.println("Non-numeric sequence numbers: "+s); } catch(IndexOutOfBoundsException ex) { System.err.println("PDB record too short: "+s); } } } //}}} //{{{ forHelix, forSheet, forTurn //############################################################################## // All of these can throw NumberFormatException (for non-numeric data) // and IndexOutOfBoundsException, for lines that are too short. /** @param s a PDB "HELIX" record */ Range forHelix(String s) throws NumberFormatException { Range r = new Range(); r.type = HELIX; r.chainId = s.substring(19,20); if(!r.chainId.equals(s.substring(31,32))) System.err.println("Mismatched chain IDs: "+s); r.initSeqNum = Integer.parseInt(s.substring(21,25).trim()); r.endSeqNum = Integer.parseInt(s.substring(33,37).trim()); r.initICode = s.substring(25,26); if(s.length() >= 38) // if space, may be truncated in non-std file r.endICode = s.substring(37,38); return r; } /** @param s a PDB "SHEET" record */ Range forSheet(String s) throws NumberFormatException { Range r = new Range(); r.type = STRAND; r.chainId = s.substring(21,22); if(!r.chainId.equals(s.substring(32,33))) System.err.println("Mismatched chain IDs: "+s); r.initSeqNum = Integer.parseInt(s.substring(22,26).trim()); r.endSeqNum = Integer.parseInt(s.substring(33,37).trim()); r.initICode = s.substring(26,27); if(s.length() >= 38) // if space, may be truncated in non-std file r.endICode = s.substring(37,38); r.sense = Integer.parseInt(s.substring(38,40).trim()); // (ARK Spring2010) r.strand = Integer.parseInt(s.substring(7,10).trim()); // (ARK Spring2010) r.sheetID = s.substring(11,14); // (ARK Spring2010) return r; } /** @param s a PDB "TURN" record */ Range forTurn(String s) throws NumberFormatException { Range r = new Range(); r.type = TURN; r.chainId = s.substring(19,20); if(!r.chainId.equals(s.substring(30,31))) System.err.println("Mismatched chain IDs: "+s); r.initSeqNum = Integer.parseInt(s.substring(20,24).trim()); r.endSeqNum = Integer.parseInt(s.substring(31,35).trim()); r.initICode = s.substring(24,25); if(s.length() >= 36) // if space, may be truncated in non-std file r.endICode = s.substring(35,36); return r; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/Hy36.java0000644000000000000000000003237011531212746021166 0ustar rootroot// (jEdit options) :folding=explicit: //{{{ Package, imports package driftwood.moldb2; //}}} /** Java port of the hy36encode() and hy36decode() functions in the hybrid_36.py Python prototype/reference implementation. See the Python script for more information. This file is unrestricted Open Source (cctbx.sf.net). Please send corrections and enhancements to cctbx@cci.lbl.gov . See also: http://cci.lbl.gov/hybrid_36/ svn master at: https://cctbx.svn.sourceforge.net/svnroot/cctbx/trunk/iotbx/iotbx/pdb/Hy36.java Ralf W. Grosse-Kunstleve, Vincent B. Chen, Jeff J. Headd, Sep 2007. */ public class Hy36 { //{{{ Constants private static String digits_base10 = "0123456789"; private static String digits_upper = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; private static String digits_lower = "0123456789abcdefghijklmnopqrstuvwxyz"; private static boolean first_call = true; private static int[] digits_values_upper = new int[128]; private static int[] digits_values_lower = new int[128]; private static String value_out_of_range = "value out of range."; private static String invalid_number_literal = "invalid number literal."; private static String unsupported_width = "unsupported width."; //}}} //{{{ private encode/decode_pure functions private static String encode_pure( String digits, int width, int value) { boolean neg = false; if (value < 0) { neg = true; value = -value; } String buf = ""; while (true) { int rest = value / digits.length(); buf += digits.charAt(value - rest * digits.length()); if (rest == 0) break; value = rest; } if (neg) buf += '-'; String result = ""; for(int i=buf.length();i=0;i--) result += buf.charAt(i); return result; } private static int decode_pure( int[] digits_values, int digits_size, String s) { boolean have_minus = false; boolean have_non_blank = false; int value = 0; for(int i=0;i 127) { throw new Error(invalid_number_literal); } if (si == ' ') { if (!have_non_blank) continue; value *= digits_size; } else if (si == '-') { if (have_non_blank) { throw new Error(invalid_number_literal); } have_non_blank = true; have_minus = true; continue; } else { have_non_blank = true; int dv = digits_values[si]; if (dv < 0 || dv >= digits_size) { throw new Error(invalid_number_literal); } value *= digits_size; value += dv; } } if (have_minus) value = -value; return value; } //}}} //{{{ encode /** hybrid-36 encoder: converts integer value to string result width: must be 4 (e.g. for residue sequence numbers) or 5 (e.g. for atom serial numbers) value: integer value to be converted return value: String of size width */ public static String encode(int width, int value) { int i = value; if (width == 4) { if (i >= -999) { if (i < 10000) { return encode_pure(digits_base10, 4, i); } i -= 10000; if (i < 1213056 /* 26*36**3 */) { i += 466560 /* 10*36**3 */; return encode_pure(digits_upper, 0, i); } i -= 1213056; if (i < 1213056) { i += 466560; return encode_pure(digits_lower, 0, i); } } } else if (width == 5) { if (i >= -9999) { if (i < 100000) { return encode_pure(digits_base10, 5, i); } i -= 100000; if (i < 43670016 /* 26*36**4 */) { i += 16796160 /* 10*36**4 */; return encode_pure(digits_upper, 0, i); } i -= 43670016; if (i < 43670016) { i += 16796160; return encode_pure(digits_lower, 0, i); } } } else { throw new Error(unsupported_width); } throw new Error(value_out_of_range); } //}}} //{{{ decode /** hybrid-36 decoder: converts string s to integer result width: must be 4 (e.g. for residue sequence numbers) or 5 (e.g. for atom serial numbers) s: string to be converted return value: conversion result */ public static int decode(int width, String s) { String ie_range="internal error hy36.decode: integer value out of range."; if (first_call) { first_call = false; for(int i=0;i<128;i++) digits_values_upper[i] = -1; for(int i=0;i<128;i++) digits_values_lower[i] = -1; for(int i=0;i<36;i++) { int di = (int) digits_upper.charAt(i); if (di < 0 || di > 127) { throw new Error(ie_range); } digits_values_upper[di] = i; } for(int i=0;i<36;i++) { int di = (int) digits_lower.charAt(i); if (di < 0 || di > 127) { throw new Error(ie_range); } digits_values_lower[di] = i; } } if (s.length() == width) { int di = (int) s.charAt(0); if (di >= 0 && di <= 127) { if (digits_values_upper[di] >= 10) { int result = decode_pure(digits_values_upper, 36, s); /* result - 10*36**(width-1) + 10**width */ if (width == 4) result -= 456560; else if (width == 5) result -= 16696160; else { throw new Error(unsupported_width); } return result; } else if (digits_values_lower[di] >= 10) { int result = decode_pure(digits_values_lower, 36, s); /* result + 16*36**(width-1) + 10**width */ if (width == 4) result += 756496; else if (width == 5) result += 26973856; else { throw new Error(unsupported_width); } return result; } else { int result = decode_pure(digits_values_upper, 10, s); if (!(width == 4 || width == 5)) { throw new Error(unsupported_width); } return result; } } } throw new Error(invalid_number_literal); } //}}} //{{{ check functions private static void check_str(String result, String expected) { if (!result.equals(expected)) { System.out.println("ERROR: \"" + result + "\" != \"" + expected +"\""); } } private static void check_int(int result, int expected) { if (result != expected) { System.out.println("ERROR: " + result + " != " + expected); } } //}}} //{{{ recycle functions private static void recycle4(int value, String encoded) { String s = encode(4, value); check_str(s, encoded); int d = decode(4, s); check_int(d, value); } private static void recycle5(int value, String encoded) { String s = encode(5, value); check_str(s, encoded); int d = decode(5, s); check_int(d, value); } //}}} //{{{ check exception functions private static void check_encode_exception(int width, int value, String expected_msg) { String msg = ""; try { encode(width, value); } catch(Error e) { msg = e.toString(); } check_str(msg, "java.lang.Error: " + expected_msg); } private static void check_decode_exception(int width, String s, String expected_msg) { String msg = ""; try { decode(width, s); } catch(Error e) { msg = e.toString(); } check_str(msg, "java.lang.Error: " + expected_msg); } //}}} //{{{ kernighan_and_ritchie_rand private static int random_seed = 13; private static int kernighan_and_ritchie_rand() { random_seed = random_seed * 1103515245 + 12345; int result = (random_seed / 65536) % 32768; if (result < 0) result += 32768; return result; } //}}} //{{{ main /** for running test cases **/ public static void main(String[] args) { check_int(decode(4, " "), 0); check_int(decode(4, " -0"), 0); recycle4(-999, "-999"); recycle4(-78, " -78"); recycle4(-6, " -6"); recycle4(0, " 0"); recycle4(9999, "9999"); recycle4(10000, "A000"); recycle4(10001, "A001"); recycle4(10002, "A002"); recycle4(10003, "A003"); recycle4(10004, "A004"); recycle4(10005, "A005"); recycle4(10006, "A006"); recycle4(10007, "A007"); recycle4(10008, "A008"); recycle4(10009, "A009"); recycle4(10010, "A00A"); recycle4(10011, "A00B"); recycle4(10012, "A00C"); recycle4(10013, "A00D"); recycle4(10014, "A00E"); recycle4(10015, "A00F"); recycle4(10016, "A00G"); recycle4(10017, "A00H"); recycle4(10018, "A00I"); recycle4(10019, "A00J"); recycle4(10020, "A00K"); recycle4(10021, "A00L"); recycle4(10022, "A00M"); recycle4(10023, "A00N"); recycle4(10024, "A00O"); recycle4(10025, "A00P"); recycle4(10026, "A00Q"); recycle4(10027, "A00R"); recycle4(10028, "A00S"); recycle4(10029, "A00T"); recycle4(10030, "A00U"); recycle4(10031, "A00V"); recycle4(10032, "A00W"); recycle4(10033, "A00X"); recycle4(10034, "A00Y"); recycle4(10035, "A00Z"); recycle4(10036, "A010"); recycle4(10046, "A01A"); recycle4(10071, "A01Z"); recycle4(10072, "A020"); recycle4(10000+36*36-1, "A0ZZ"); recycle4(10000+36*36, "A100"); recycle4(10000+36*36*36-1, "AZZZ"); recycle4(10000+36*36*36, "B000"); recycle4(10000+26*36*36*36-1, "ZZZZ"); recycle4(10000+26*36*36*36, "a000"); recycle4(10000+26*36*36*36+35, "a00z"); recycle4(10000+26*36*36*36+36, "a010"); recycle4(10000+26*36*36*36+36*36-1, "a0zz"); recycle4(10000+26*36*36*36+36*36, "a100"); recycle4(10000+26*36*36*36+36*36*36-1, "azzz"); recycle4(10000+26*36*36*36+36*36*36, "b000"); recycle4(10000+2*26*36*36*36-1, "zzzz"); // check_int(decode(5, " "), 0); check_int(decode(5, " -0"), 0); recycle5(-9999, "-9999"); recycle5(-123, " -123"); recycle5(-45, " -45"); recycle5(-6, " -6"); recycle5(0, " 0"); recycle5(12, " 12"); recycle5(345, " 345"); recycle5(6789, " 6789"); recycle5(99999, "99999"); recycle5(100000, "A0000"); recycle5(100010, "A000A"); recycle5(100035, "A000Z"); recycle5(100036, "A0010"); recycle5(100046, "A001A"); recycle5(100071, "A001Z"); recycle5(100072, "A0020"); recycle5(100000+36*36-1, "A00ZZ"); recycle5(100000+36*36, "A0100"); recycle5(100000+36*36*36-1, "A0ZZZ"); recycle5(100000+36*36*36, "A1000"); recycle5(100000+36*36*36*36-1, "AZZZZ"); recycle5(100000+36*36*36*36, "B0000"); recycle5(100000+2*36*36*36*36, "C0000"); recycle5(100000+26*36*36*36*36-1, "ZZZZZ"); recycle5(100000+26*36*36*36*36, "a0000"); recycle5(100000+26*36*36*36*36+36-1, "a000z"); recycle5(100000+26*36*36*36*36+36, "a0010"); recycle5(100000+26*36*36*36*36+36*36-1, "a00zz"); recycle5(100000+26*36*36*36*36+36*36, "a0100"); recycle5(100000+26*36*36*36*36+36*36*36-1, "a0zzz"); recycle5(100000+26*36*36*36*36+36*36*36, "a1000"); recycle5(100000+26*36*36*36*36+36*36*36*36-1, "azzzz"); recycle5(100000+26*36*36*36*36+36*36*36*36, "b0000"); recycle5(100000+2*26*36*36*36*36-1, "zzzzz"); // check_encode_exception(4, -1000, "value out of range."); check_encode_exception(4, 2436112, "value out of range."); check_encode_exception(5, -10000, "value out of range."); check_encode_exception(5, 87440032, "value out of range."); // check_decode_exception(4, "", "invalid number literal."); check_decode_exception(4, " 0", "invalid number literal."); check_decode_exception(4, " abc", "invalid number literal."); check_decode_exception(4, "abc-", "invalid number literal."); check_decode_exception(4, "A=BC", "invalid number literal."); check_decode_exception(4, "40a0", "invalid number literal."); check_decode_exception(4, "40A0", "invalid number literal."); check_decode_exception(5, "", "invalid number literal."); check_decode_exception(5, " 0", "invalid number literal."); check_decode_exception(5, " abcd", "invalid number literal."); check_decode_exception(5, "ABCD-", "invalid number literal."); check_decode_exception(5, "a=bcd", "invalid number literal."); check_decode_exception(5, "410b0", "invalid number literal."); check_decode_exception(5, "410B0", "invalid number literal."); // check_encode_exception(3, 0, "unsupported width."); check_encode_exception(6, 0, "unsupported width."); check_decode_exception(3, "AAA", "unsupported width."); check_decode_exception(6, "zzzzzz", "unsupported width."); // int value = -9999; while (value < 100000+2*26*36*36*36*36) { check_int(decode(5, encode(5, value)), value); value += kernighan_and_ritchie_rand() % 10000; } // System.out.println("OK"); } //}}} } king-2.21.120420/driftwood/src/driftwood/moldb2/AtomState.java0000644000000000000000000001360311531212746022334 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.Triple; //}}} /** * AtomState holds the "stateful" properties * of an Atom: its position, charge, temperature factor, * and occupancy. * *

AtomStates inherit equals() and hashCode() from Triple, * which means only their coordinates are considered in these tests. * This is useful for certain spatial/geometrical applications, * but could cause problems if you're not aware of it! * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Jun 9 15:02:45 EDT 2003 */ public class AtomState extends Triple implements Cloneable { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## Atom atom; // x, y, and z are inherited from Triple String serial; String altconf = " "; float charge = 0; float bfactor = 0; float occupancy = 0; String past80 = ""; String anisoU = null; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new AtomState for the given Atom. * @param atom the Atom this state applies to (not null) * @param serial a unique serial number for this state. * This should be unique at least among states for this atom, * and ideally for all states for all atoms in this model. */ public AtomState(Atom atom, String serial) { super(); if(atom == null) throw new NullPointerException("Cannot create a state for a null Atom"); this.atom = atom; this.serial = serial; } //}}} //{{{ toString //################################################################################################## /** * Gives the qualified atom name, as given by {@link Atom#toString()}, * plus information on alternate conformation, B-factor, occupancy, etc. */ public String toString() { return atom+"["+altconf+"/"+serial+"]: "+super.toString()+" B="+bfactor+" Q="+occupancy+" e="+charge; } //}}} //{{{ get{Atom, Serial, AltConf, Charge, TempFactor, Occupancy, Past80, AnisoU} //################################################################################################## public Atom getAtom() { return atom; } public String getSerial() { return serial; } public String getAltConf() { return altconf; } public double getCharge() { return charge; } public double getTempFactor() { return bfactor; } public double getOccupancy() { return occupancy; } /** Extra, unstructure information stored past column 80 in the original PDB file. Not null. */ public String getPast80() { return past80; } /** * ANISOU line for this atom. Comes somewhere after ATOM or HETATM line for this atom * in the original PDB file, but will be output immediately after it. May be null. */ public String getAnisoU() { return anisoU; } //}}} //{{{ getName, getElement, getResidue, isHet //################################################################################################## /** Convenience function that passes through to the underlying Atom */ public String getName() { return atom.getName(); } /** Convenience function that passes through to the underlying Atom */ public String getElement() { return atom.getElement(); } /** Convenience function that passes through to the underlying Atom */ public Residue getResidue() { return atom.getResidue(); } /** Convenience function that passes through to the underlying Atom */ public boolean isHet() { return atom.isHet(); } //}}} //{{{ set{AltConf, Charge, TempFactor, Occupancy, Past80, AnisoU} //################################################################################################## public void setAltConf(String alt) { altconf = alt; } public void setCharge(double e) { charge = (float)e; } public void setTempFactor(double b) { bfactor = (float)b; } public void setOccupancy(double q) { occupancy = (float)q; } /** Extra, unstructure information stored past column 80 in the original PDB file. Not null. */ public void setPast80(String s) { past80 = s; } /** * ANISOU line for this atom. Comes somewhere after ATOM or HETATM line for this atom * in the original PDB file, but will be output immediately after it. May be null. */ public void setAnisoU(String s) { anisoU = s; } //}}} //{{{ clone, cloneFor //################################################################################################## /** * Makes a deep-enough copy of this AtomState that can * be changed without impacting the original. */ public Object clone() { try { return super.clone(); } catch(CloneNotSupportedException ex) { throw new Error("Clone failed unexpectedly"); } } /** * Makes a copy of this AtomState but attaches it to a new Atom. */ public AtomState cloneFor(Atom a, String newSerial) { AtomState as = (AtomState)this.clone(); as.atom = a; as.serial = newSerial; return as; } public AtomState cloneFor(Atom a) { return cloneFor(a, this.getSerial()); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/CifReader.java0000644000000000000000000005100711531212746022257 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; import java.util.zip.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; import driftwood.data.*; import driftwood.star.*; import driftwood.util.SoftLog; //}}} /** * CifReader loads mmCIF files into the MolDB2 data structures, * albeit with some loss of information. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Wed Jun 16 14:37:06 EDT 2004 */ public class CifReader //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## // In the order they appear in a PDB record. Non-required lists may be null. int numRecords = 0; List groupPdb = null; // NOT required, ATOM or HETATM List atomSiteId = null; // required, any string List pdbAtomName = null; // NOT required List labelAtomId = null; // required, must be converted to PDB style List typeSymbol = null; // required, usually the element name (not in PDB) List labelAltId = null; // required, . or ? should become ' ' List labelCompId = null; // required, case insensitive (uppercased) List labelAsymId = null; // required, any string List labelSeqId = null; // required, an integer <= 1 (any string for us) List labelEntityId = null; // required, any string (not used by us?) List pdbInsCode = null; // NOT required, any string List cartnX = null; // we require, a float List cartnY = null; // we require, a float List cartnZ = null; // we require, a float List occupancy = null; // NOT required, a float List bIsoOrEquiv = null; // NOT required, a float List uIsoOrEquiv = null; // NOT required, B = 8*pi*pi*U List authSeqId = null; // required List authAsymId = null; // required List pdbModelNum = null; // NOT required, any string String pdbId = null; CoordinateFile coordFile = null; Map modelMap = null; // maps model names as Strings to Model objects Map states; // a Map> Map resMap = null; // maps res pseudonames as Strings to Residue objects int fakeResNumber = 1; // used for waters, etc. that lack residue numbers CheapSet stringCache = new CheapSet(); // a map for intern'ing Strings //}}} //{{{ Constructor(s) //############################################################################## public CifReader() { super(); } //}}} //{{{ intern //################################################################################################## /** Like String.intern(), but the cache is discarded after reading the file. */ String intern(String s) { String t = (String) stringCache.get(s); if(t == null) { stringCache.add(s); return s; } else return t; } //}}} //{{{ read (convenience) //################################################################################################## public CoordinateFile read(File f) throws IOException { InputStream r = new FileInputStream(f); CoordinateFile rv = read(r); rv.setFile(f); r.close(); return rv; } public CoordinateFile read(InputStream is) throws IOException { // Test for GZIPped files is = new BufferedInputStream(is); is.mark(10); if(is.read() == 31 && is.read() == 139) { // We've found the gzip magic numbers... is.reset(); is = new GZIPInputStream(is); } else is.reset(); return read(new InputStreamReader(is)); } public CoordinateFile read(Reader r) throws IOException { try { StarFile starFile = new StarReader().parse(new LineNumberReader(r)); return read(starFile); } catch(java.text.ParseException ex) { throw new IOException("Unable to parse mmCIF file as STAR: "+ex.getMessage()); } } //}}} //{{{ read //############################################################################## /** * Creates a CoordinateFile from the specified CIF file object. * @throws IOException if the data is internally inconsistent */ public CoordinateFile read(StarFile dom) throws IOException { // Set up lists of data items Iterator dataBlocks = dom.getDataBlockNames().iterator(); if(!dataBlocks.hasNext()) throw new IOException("STAR file has no data blocks"); DataBlock db = dom.getDataBlock((String)dataBlocks.next()); loadItems(db); this.coordFile = new CoordinateFile(); this.modelMap = new HashMap(); this.states = new HashMap(); this.resMap = new HashMap(); this.fakeResNumber = 1; this.stringCache.clear(); //String prevAlt = ""; //String prevRes = ""; for(int i = 0; i < numRecords; i++) { Model model = getModel(i); Residue res = getResidue(model, i); Atom atom = getAtom(res, i); AtomState as = buildAtomState(atom, i); ModelState ms = makeState(model, as.getAltConf()); //System.out.println("i "+i); //System.out.println(res); //System.out.println(atom); //System.out.println(as); //System.out.println(as.getAltConf()); // Waters, etc. don't have sequence IDs // Assume same residue until we get an atom name collision. String seqId = (String) labelSeqId.get(i); if(ms.hasState(atom)/*&&(prevAlt.equals(as.getAltConf()))*/&&(".".equals(seqId) || "?".equals(seqId))) { fakeResNumber++; // bump up the residue number i--; // reprocess this line continue; } //prevAlt = as.getAltConf(); try { ms.add(as); } catch(AtomException ex) { System.err.println(pdbId+" "+model.toString()+" modelstate already contains a state for "+as.toString()); } // logically unreachable, except when a residue has the same atomstate (see 1MSD). } coordFile.setSecondaryStructure(new CifSecondaryStructure(db)); if (pdbId != null) coordFile.setIdCode(pdbId); // This little dance makes sure that all alt confs define some state for every atom. for(Iterator iter = coordFile.getModels().iterator(); iter.hasNext(); ) { Model m = (Model) iter.next(); m.setStates( (Map) states.get(m) ); try { m.fillInStates(false); } catch(AtomException ex) { // This shouldn't ever be able to happen... SoftLog.err.println("Unable to find states for all atoms in model!"); ex.printStackTrace(SoftLog.err); } } return this.coordFile; } //}}} //{{{ loadItems //############################################################################## /** Loads needed items as Lists of Strings from the given data cell. */ void loadItems(DataCell data) throws IOException { pdbId = data.getSingleItem("_entry.id"); groupPdb = data.getItem("_atom_site.group_PDB"); atomSiteId = data.getItem("_atom_site.id"); pdbAtomName = data.getItem("_atom_site.pdbx_PDB_atom_name"); labelAtomId = data.getItem("_atom_site.label_atom_id"); typeSymbol = data.getItem("_atom_site.type_symbol"); labelAltId = data.getItem("_atom_site.label_alt_id"); labelCompId = data.getItem("_atom_site.label_comp_id"); labelAsymId = data.getItem("_atom_site.label_asym_id"); labelSeqId = data.getItem("_atom_site.label_seq_id"); labelEntityId = data.getItem("_atom_site.label_entity_id"); pdbInsCode = data.getItem("_atom_site.pdbx_PDB_ins_code"); cartnX = data.getItem("_atom_site.Cartn_x"); cartnY = data.getItem("_atom_site.Cartn_y"); cartnZ = data.getItem("_atom_site.Cartn_z"); occupancy = data.getItem("_atom_site.occupancy"); bIsoOrEquiv = data.getItem("_atom_site.B_iso_or_equiv"); uIsoOrEquiv = data.getItem("_atom_site.U_iso_or_equiv"); authSeqId = data.getItem("_atom_site.auth_seq_id"); authAsymId = data.getItem("_atom_site.auth_asym_id"); pdbModelNum = data.getItem("_atom_site.pdbx_PDB_model_num"); numRecords = labelAtomId.size(); if(numRecords == 0 || atomSiteId.size() != numRecords || typeSymbol.size() != numRecords || labelAltId.size() != numRecords || labelCompId.size() != numRecords || labelAsymId.size() != numRecords || labelSeqId.size() != numRecords || labelEntityId.size() != numRecords || cartnX.size() != numRecords || cartnY.size() != numRecords || cartnZ.size() != numRecords || authSeqId.size() != numRecords || authAsymId.size() != numRecords) throw new IOException("Required atom_site data items are missing or disagree in length."); if(groupPdb.size() == 0) groupPdb = null; if(pdbAtomName.size() == 0) pdbAtomName = null; if(pdbInsCode.size() == 0) pdbInsCode = null; if(occupancy.size() == 0) occupancy = null; if(bIsoOrEquiv.size() == 0) bIsoOrEquiv = null; if(uIsoOrEquiv.size() == 0) uIsoOrEquiv = null; if(pdbModelNum.size() == 0) pdbModelNum = null; } //}}} //{{{ getModel, makeState //############################################################################# /** Returns the model for the given record number. */ Model getModel(int i) { String modelName = (pdbModelNum == null ? "1" : (String) pdbModelNum.get(i)); Model m = (Model) modelMap.get(modelName); if(m == null) { modelName = intern(modelName); m = new Model(modelName); modelMap.put(modelName, m); this.coordFile.add(m); } return m; } /** * Returns a conformation identified by its one letter code, * in the form of a ModelState; * or creates it if it didn't previously exist. *

If the ID is something other than space (' '), the * new conformation will have the default conformation set * as its parent. If a default conformation does not exist * yet, it will also be created. */ ModelState makeState(Model model, String stateID) { Map modelStateMap = (Map) states.get(model); if(modelStateMap == null) { modelStateMap = new HashMap(); states.put(model, modelStateMap); } ModelState state = (ModelState) modelStateMap.get(stateID); if(state == null) { state = new ModelState(); if (model != null) state.setName(coordFile.getIdCode()+" "+model.toString()); modelStateMap.put(stateID, state); if(! " ".equals(stateID)) state.setParent(this.makeState(model, " ")); } return state; } //}}} //{{{ getResidue //############################################################################## /** Returns the residue for the given record number. */ Residue getResidue(Model m, int i) { //String asymId = (String) labelAsymId.get(i); //removed cause this line uses internal PDB chains, which don't match author assigned chains String asymId = (String) authAsymId.get(i); // Waters, etc. don't have sequence IDs // Assume same residue until we get an atom name collision. // Collision is handled at the top level, before adding AtomState to ModelState //String seqId = (String) labelSeqId.get(i); //removed cause this line uses internal PDB seq, which don't match author assigned res numbers String seqId = (String) authSeqId.get(i); if(".".equals(seqId) || "?".equals(seqId)) seqId = Integer.toString(fakeResNumber); // Residue names are case-insensitive, so we convert to uppercase. String compId = ((String) labelCompId.get(i)).toUpperCase(); String resLookup = m.getName()+"$"+asymId+"$"+seqId+"$"+compId; Residue r = (Residue) resMap.get(resLookup); if(r == null) { //String insCode = (pdbInsCode == null ? " " : (String) pdbInsCode.get(i)); String insCode = " "; if(pdbInsCode != null) { insCode = (String) pdbInsCode.get(i); //if(insCode.length() > 1) insCode = insCode.substring(0,1); if(".".equals(insCode) || "?".equals(insCode) || insCode.length() == 0) insCode = " "; } r = new Residue(intern(asymId), "", intern(seqId), intern(insCode), intern(compId)); resMap.put(resLookup, r); try { m.add(r); } catch(ResidueException ex) { ex.printStackTrace(); } // logical error } return r; } //}}} //{{{ getAtom //############################################################################## /** Returns the appropriate Atom for the line number */ Atom getAtom(Residue r, int i) { String name = getAtomName(i); Atom a = r.getAtom(name); if(a == null) { String elem = null; if(typeSymbol != null) { String ts = (String) typeSymbol.get(i); ts = ts.toUpperCase(); elem = getElement(ts); if(elem == null && ts.length() > 2) { ts = ts.substring(0,2); elem = getElement(ts); } if(elem == null && ts.length() > 1) { ts = ts.substring(0,1); elem = getElement(ts); } } if(elem == null) elem = getElement(name.substring(0,2)); if(elem == null) elem = getElement(name.substring(1,2)); if(elem == null) elem = "XX"; a = new Atom(intern(name), elem, (groupPdb == null ? false : ((String)groupPdb.get(i)).equals("HETATM"))); try { r.add(a); } catch(AtomException ex) { ex.printStackTrace(); } } return a; } //}}} //{{{ getAtomName //############################################################################## String getAtomName(int i) { if(pdbAtomName != null) { String atomName = (String) pdbAtomName.get(i); if(atomName.length() == 4) return atomName; } // Our rules for guessing the PDB atom name for 2- and 3-char names: // 1. The second character (of four) must be a letter // 2. A one-char element name implies a leading space (or digit) // 3. Known het atoms often have two-char element names // 4. By default, assume a leading space String atomName = (String) labelAtomId.get(i); int len = atomName.length(); if(len < 1) return " "; else if(len == 1) return " "+atomName+" "; else if(len == 2) { if(!Character.isLetter(atomName.charAt(0))) return atomName+" "; else if(!Character.isLetter(atomName.charAt(1))) return " "+atomName+" "; else if(typeSymbol != null && ((String)typeSymbol.get(i)).length() == 1) return " "+atomName+" "; else if(groupPdb != null && ((String)groupPdb.get(i)).equals("HETATM")) return atomName+" "; else return " "+atomName+" "; } else if(len == 3) { if(!Character.isLetter(atomName.charAt(0))) return atomName+" "; else if(!Character.isLetter(atomName.charAt(1))) return " "+atomName; else if(typeSymbol != null && ((String)typeSymbol.get(i)).length() == 1) return " "+atomName; else if(groupPdb != null && ((String)groupPdb.get(i)).equals("HETATM")) return atomName+" "; else return " "+atomName; } else if(len == 4) return atomName; else return atomName.substring(0, 4); // length() > 4 } //}}} //{{{ getElement //############################################################################## static final String[] allElementNames = { "H", "HE", "LI", "BE", "B", "C", "N", "O", "F", "NE", "NA", "MG", "AL", "SI", "P", "S", "CL", "AR", "K", "CA", "SC", "TI", "V", "CR", "MN", "FE", "CO", "NI", "CU", "ZN", "GA", "GE", "AS", "SE", "BR", "KR", "RB", "SR", "Y", "ZR", "NB", "MO", "TC", "RU", "RH", "PD", "AG", "CD", "IN", "SN", "CB", "TE", "I", "XE", "CS", "BA", "LA", "CE", "PR", "ND", "PM", "SM", "EU", "GD", "TB", "DY", "HO", "ER", "TM", "YB", "LU", "HF", "TA", "W", "RE", "OS", "IR", "PT", "AU", "HG", "TL", "PB", "BI", "PO", "AT", "RN", "FR", "RA", "AC", "TH", "PA", "U", "NP", "PU", "AM", "CM", "BK", "CF", "ES", "FM", "MD", "NO", "LR", "RF", "DB", "SG", "BH", "HS", "MT", "DS" }; static Map elementNames = null; /** * Pass in a valid element symbol, or D, T, or Q (1 or 2 chars, uppercase). * Get back a valid element symbol. * Returns null for things we don't recognize at all. */ static String getElement(String name) { if(elementNames == null) { elementNames = new HashMap(); for(int i = 0; i < allElementNames.length; i++) elementNames.put(allElementNames[i], allElementNames[i]); elementNames.put("D", "H"); // deuterium elementNames.put("T", "H"); // tritium elementNames.put("Q", "Q"); // NMR pseudo atoms } return (String) elementNames.get(name); } //}}} //{{{ buildAtomState //############################################################################## /** Creates an AtomState object for the specified line */ AtomState buildAtomState(Atom a, int i) { AtomState as = new AtomState(a, intern((String) atomSiteId.get(i))); if(labelAltId != null) { String altId = (String) labelAltId.get(i); //if(altId.length() > 1) altId = altId.substring(0,1); if(".".equals(altId) || "?".equals(altId) || altId.length() == 0) altId = " "; as.setAltConf(intern(altId)); } if(cartnX != null) { try { as.setX(Double.parseDouble((String) cartnX.get(i))); } catch(NumberFormatException ex) {} } if(cartnY != null) { try { as.setY(Double.parseDouble((String) cartnY.get(i))); } catch(NumberFormatException ex) {} } if(cartnZ != null) { try { as.setZ(Double.parseDouble((String) cartnZ.get(i))); } catch(NumberFormatException ex) {} } if(occupancy != null) { try { as.setOccupancy(Double.parseDouble((String) occupancy.get(i))); } catch(NumberFormatException ex) {} } if(bIsoOrEquiv != null) { try { as.setTempFactor(Double.parseDouble((String) bIsoOrEquiv.get(i))); } catch(NumberFormatException ex) {} } else if(uIsoOrEquiv != null) { try { as.setTempFactor(8 * Math.PI * Math.PI * Double.parseDouble((String) uIsoOrEquiv.get(i))); } catch(NumberFormatException ex) {} } return as; } //}}} //{{{ main (for testing) //############################################################################## public static void main(String[] args) throws IOException { CoordinateFile cf = new CifReader().read(System.in); PdbWriter w = new PdbWriter(System.out); w.writeCoordinateFile(cf, Collections.EMPTY_MAP); w.close(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/AminoAcid.java0000644000000000000000000003024411531212746022257 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * AminoAcid is a class for working with Residues * that model some sort of amino acid. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Fri Jun 20 14:56:39 EDT 2003 */ public class AminoAcid //extends ... implements ... { //{{{ Constants static final String AA_NAMES = "GLY,ALA,VAL,LEU,ILE,PRO,PHE,TYR,TRP,SER,THR,CYS,MET,MSE,LYS,HIS,ARG,ASP,ASN,GLN,GLU"; static final Set BACKBONE_ATOM_NAMES = new HashSet(); static { BACKBONE_ATOM_NAMES.add(" N "); BACKBONE_ATOM_NAMES.add(" H "); BACKBONE_ATOM_NAMES.add("1H "); BACKBONE_ATOM_NAMES.add("2H "); BACKBONE_ATOM_NAMES.add("3H "); BACKBONE_ATOM_NAMES.add(" CA "); BACKBONE_ATOM_NAMES.add(" HA "); BACKBONE_ATOM_NAMES.add("1HA "); BACKBONE_ATOM_NAMES.add("2HA "); BACKBONE_ATOM_NAMES.add(" C "); BACKBONE_ATOM_NAMES.add(" O "); BACKBONE_ATOM_NAMES.add(" OXT"); } private static final Map threeToOneLetter; private static final Map oneToThreeLetter; static { Map map = new HashMap(); map.put("gly", "G"); map.put("ala", "A"); map.put("val", "V"); map.put("leu", "L"); map.put("ile", "I"); map.put("met", "M"); map.put("pro", "P"); map.put("phe", "F"); map.put("trp", "W"); map.put("ser", "S"); map.put("thr", "T"); map.put("asn", "N"); map.put("gln", "Q"); map.put("tyr", "Y"); map.put("cys", "C"); map.put("lys", "K"); map.put("arg", "R"); map.put("his", "H"); map.put("asp", "D"); map.put("glu", "E"); map.put("GLY", "G"); map.put("ALA", "A"); map.put("VAL", "V"); map.put("LEU", "L"); map.put("ILE", "I"); map.put("MET", "M"); map.put("PRO", "P"); map.put("PHE", "F"); map.put("TRP", "W"); map.put("SER", "S"); map.put("THR", "T"); map.put("ASN", "N"); map.put("GLN", "Q"); map.put("TYR", "Y"); map.put("CYS", "C"); map.put("LYS", "K"); map.put("ARG", "R"); map.put("HIS", "H"); map.put("ASP", "D"); map.put("GLU", "E"); threeToOneLetter = Collections.unmodifiableMap(map); map = new HashMap(); map.put("G", "gly"); map.put("A", "ala"); map.put("V", "val"); map.put("L", "leu"); map.put("I", "ile"); map.put("M", "met"); map.put("P", "pro"); map.put("F", "phe"); map.put("W", "trp"); map.put("S", "ser"); map.put("T", "thr"); map.put("N", "asn"); map.put("Q", "gln"); map.put("Y", "tyr"); map.put("C", "cys"); map.put("K", "lys"); map.put("R", "arg"); map.put("H", "his"); map.put("D", "asp"); map.put("E", "glu"); oneToThreeLetter = Collections.unmodifiableMap(map); } //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor (not to be instantiated right now) */ private AminoAcid() { super(); } //}}} //{{{ translate //################################################################################################## /** * Returns the translation of the amino acid name, either from one letter to * three letters, or vice versa. Returns "X" if three letter code is unknown, * or "unk" if one letter code is unknown. */ static public String translate(String code) { String trans = ""; if(code.length() >= 3) { if(threeToOneLetter.containsKey(code)) trans = (String) threeToOneLetter.get(code); else trans = "X"; } else { if(oneToThreeLetter.containsKey(code)) trans = (String) oneToThreeLetter.get(code); else trans = "unk"; } return trans; } //}}} //{{{ getTau, getTauDeviation //################################################################################################## /** * Return the tau angle (N-CA-C) of this residue, in degrees. * @throws AtomException if a required Atom or AtomState * cannot be found in the supplied data. */ static public double getTau(Residue res, ModelState state) throws AtomException { AtomState n, ca, c; // One of these will throw AtomException if // res.getAtom() returns null. n = state.get( res.getAtom(" N ") ); ca = state.get( res.getAtom(" CA ") ); c = state.get( res.getAtom(" C ") ); return Triple.angle(n, ca, c); } /** * Returns the tau angle deviation from ideality, in degrees. * Ideal values are taken from Engh & Huber (1991). * @throws AtomException if a required Atom or AtomState * cannot be found in the supplied data. */ static public double getTauDeviation(Residue res, ModelState state) throws AtomException { double taudev, tau = getTau(res, state); if(res.getName().equals("GLY")) taudev = tau - 112.5; else if(res.getName().equals("PRO")) taudev = tau - 111.8; else taudev = tau - 111.2; return taudev; } //}}} //{{{ getPhi, getPsi //################################################################################################## /** * Return the phi angle (C-N-CA-C) of this residue, in degrees. * @throws AtomException if a required Atom or AtomState * cannot be found in the supplied data. * @throws ResidueException if the preceding Residue * cannot be found. */ static public double getPhi(Model model, Residue res, ModelState state) throws ResidueException, AtomException { Residue prev = res.getPrev(model); if(prev == null) throw new ResidueException("Can't calculate PHI without a preceding residue"); AtomState prevC, n, ca, c; // One of these will throw AtomException if // getAtom() returns null. prevC = state.get(prev.getAtom(" C ") ); n = state.get( res.getAtom(" N ") ); ca = state.get( res.getAtom(" CA ") ); c = state.get( res.getAtom(" C ") ); if(prevC.sqDistance(n) > 4.0) throw new ResidueException("Preceding residue is too far away to be covalently bonded"); return Triple.dihedral(prevC, n, ca, c); } /** * Return the psi angle (N-CA-C-N) of this residue, in degrees. * @throws AtomException if a required Atom or AtomState * cannot be found in the supplied data. * @throws ResidueException if the following Residue * cannot be found. */ static public double getPsi(Model model, Residue res, ModelState state) throws ResidueException, AtomException { Residue next = res.getNext(model); if(next == null) throw new ResidueException("Can't calculate PSI without a following residue"); AtomState n, ca, c, nextN; // One of these will throw AtomException if // getAtom() returns null. n = state.get( res.getAtom(" N ") ); ca = state.get( res.getAtom(" CA ") ); c = state.get( res.getAtom(" C ") ); nextN = state.get(next.getAtom(" N ") ); if(c.sqDistance(nextN) > 4.0) throw new ResidueException("Following residue is too far away to be covalently bonded"); return Triple.dihedral(n, ca, c, nextN); } //}}} //{{{ isPrepro //################################################################################################## /** * Indicates whether this residue precedes a proline. * This is true iff there is a next residue with the name "PRO" * and this residue's C is less than 2.0 Angstroms from * the next residue's N. * @throws AtomException if a required Atom or AtomState * cannot be found in the supplied data. */ static public boolean isPrepro(Model model, Residue res, ModelState state) { Residue next = res.getNext(model); if(next == null) return false; if(next.getName().equals("PRO")) { try { AtomState thisC, nextN; nextN = state.get( next.getAtom(" N ") ); thisC = state.get( res.getAtom(" C ") ); if(thisC.sqDistance(nextN) < 4.0) return true; else return false; } catch(AtomException ex) { return false; } } else return false; } //}}} //{{{ isCisPeptide //################################################################################################## /** * Indicates whether this residue has a cis peptide bond * to the preceding residue. * This is true iff there is a previous residue and omega, * Ca(i-1)-C(i-1)-N(i)-Ca(i), is within 30 degrees of 0. * @throws AtomException if a required Atom or AtomState * cannot be found in the supplied data. */ static public boolean isCisPeptide(Model model, Residue res, ModelState state) { Residue prev = res.getPrev(model); if(prev == null) return false; try { AtomState prevCA, prevC, thisN, thisCA; prevCA = state.get( prev.getAtom(" CA ") ); prevC = state.get( prev.getAtom(" C ") ); thisN = state.get( res.getAtom(" N ") ); thisCA = state.get( res.getAtom(" CA ") ); double omega = Triple.dihedral(prevCA, prevC, thisN, thisCA); if(omega > -30 && omega < 30) return true; else return false; } catch(AtomException ex) { return false; } } //}}} //{{{ isBackbone, isAminoAcid //################################################################################################## /** Returns true if this atom, based on its name, is part of the polypeptide backbone. */ static public boolean isBackbone(Atom a) { return BACKBONE_ATOM_NAMES.contains(a.getName()); } /** Returns true if this residue, based on its name, is a standard amino acid (20 + selenomet). */ static public boolean isAminoAcid(Residue r) { return (AA_NAMES.indexOf(r.getName()) != -1); } static public boolean isAminoAcid(String s) { s = s.toUpperCase(); return (AA_NAMES.indexOf(s) != -1); } // more flexible search for whether something is an AA (e.g. for alt conf agly bgly, etc) static public boolean isExtendedAminoAcid(String s) { boolean isEAA = false; s = s.toUpperCase(); String[] coreAAs = AA_NAMES.split(","); for (int i = 0; i < coreAAs.length; i++) { String aa = coreAAs[i]; if (s.indexOf(aa) != -1) { isEAA = true; } } return isEAA; } public static String getAAName(String s) { s = s.toUpperCase(); String[] coreAAs = AA_NAMES.split(","); for (int i = 0; i < coreAAs.length; i++) { String aa = coreAAs[i]; int aaInd = s.indexOf(aa); if (aaInd != -1) { return s.substring(aaInd - 1, aaInd + 3); } } return "UNK"; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/Selection.java0000644000000000000000000001525311571452342022365 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.UberSet; import driftwood.moldb2.selection.SelectionParser; //}}} /** * Selection allows selecting specific residues and atoms using * the selection language built into Probe (and NOEdisplay, etc). * * This is a partial specification of the grammar that I intend to implement here. * Some options from Probe have not been included yet, * and some of what's below isn't implemented yet. * *

    *
  • Selection → LooseOrTerm ( ( "|" | "or" ) LooseOrTerm )*
  • *
  • LooseOrTerm → LooseAndTerm ( ( "&" | "and" ) LooseAndTerm )*
  • *
  • LooseAndTerm → ( TightAndTerm )+
  • *
  • TightAndTerm → TightOrTerm ( "," TightOrTerm )*
  • *
  • TightOrTerm → ( "!" | "not" )? NotTerm
  • *
  • NotTerm → SimpleTerm | ( "(" Selection ")" ) *
    (That makes the grammar recursive!)
  • *
  • SimpleTerm → Keyword | Chain | Seg | ResName | Atom | ResRange | Within | FromRes
  • *
  • Keyword → "*" | "all" | "none" | "protein" | "mc" | "sc" | "base" | "alpha" | "beta" * | "nitrogen" | "carbon" | "oxygen" | "sulfur" | "phosphorus" | "hydrogen" | "metal" * | "polar" | "nonpolar" | "charged" | "donor" | "acceptor" | "aromatic" | "methyl" * | "het" | "water" | "dna" | "rna"
  • *
  • Chain → "chain" CHAR
  • *
  • Seg → "seg" CHAR{4}
  • *
  • ResName → "res" CHAR{3}
  • *
  • Atom → "atom" CHAR{4}
  • *
  • ResRange → INT ( ( "-" | "to" ) INT )
  • *
  • Within → "within" REAL "of" ( ( "(" Selection ")" ) | ( REAL ","? REAL ","? REAL ) )
  • *
  • FromRes → "fromres" "(" Selection ")"
  • *
* * Note that there's an ambiguity around "-": it can denote negative numbers * or residue ranges. The implementation must take special care to get this right! * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Wed Aug 29 13:31:38 PDT 2007 */ abstract public class Selection //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## private boolean initialized = false; //}}} //{{{ Constructor(s) //############################################################################## protected Selection() { super(); } //}}} //{{{ fromString //############################################################################## /** * Use this method to obtain a Selection object from a specification string. */ static public Selection fromString(String expr) throws ParseException { try { SelectionParser p = new SelectionParser(); return p.parse(expr); } // this shouldn't ever happen b/c we're just working with strings catch(IOException ex) { ex.printStackTrace(); return null; } } //}}} //{{{ init //############################################################################## ///** //* This must be called before using select(). //* It establishes the "universe" of atoms that will be //* considered for "within ..." statements. //* If you *know* you don't have any "within" statements, //* you may pass an empty collection. //*/ //public void init(Collection atomStates) //{ // this.initialized = true; //} ///** //* "Legacy" and/or convenience method that passes through //* to the more complete init() method. //*/ //public void init(Collection atomStates) //{ this.init(atomStates, null); } // ///** //* Convenience (but not "legacy") method that passes through //* to the more complete init() method. //*/ //public void init(CoordinateFile coordFile) //{ this.init(null, coordFile); } /** * This must be called before using select(). * @param atomStates establishes the "universe" of atoms that will be * considered for "within ..." statements. If you *know* * you don't have any "within" statements, you may pass * an empty collection. * @param coordFile provides a mechanism for accessing secondary structure * designations. If you *know* you don't have any "alpha" * or "beta" statements, you may pass a null object. */ public void init(Collection atomStates, CoordinateFile coordFile) { this.initialized = true; } //}}} //{{{ select, selectImpl //############################################################################## /** * Returns true iff the given AtomState should belong to this selection. * Public interface, not intended for override. */ final public boolean select(AtomState as) { if(!this.initialized) throw new IllegalStateException("Selection must be initialized with init() before use!"); return selectImpl(as); } /** * Returns true iff the given AtomState should belong to this selection. * Subclasses should override this method. */ abstract protected boolean selectImpl(AtomState as); //}}} //{{{ selectAtomStates, selectResidues //############################################################################## /** * Returns the list of AtomStates for which select() is true. */ public Collection selectAtomStates(Collection atomStates) { ArrayList selected = new ArrayList(); for(Iterator iter = atomStates.iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); if( this.select(as) ) selected.add(as); } return selected; } /** * Returns the Set of Residues for which at least one AtomState was selected. */ public Set selectResidues(Collection atomStates) { // Must try them all unless already selected, // because only one has to match for the residue to be included. Set selected = new UberSet(); // nice to have them stay in order for(Iterator iter = atomStates.iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); Residue r = as.getResidue(); if(selected.contains(r)) continue; else if( this.select(as) ) selected.add(r); } return selected; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/Atom.java0000644000000000000000000000751711531212746021342 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * Atom holds the "stateless" aspects of an * atom as part of a macromolecular model. * *

Atoms implement strict equality. * Uniqueness is critical, as Atoms are used as hashtable keys * for looking up positions in space (AtomState) and connectivities (BondSet). * Atoms related by use of the copy constructor are NOT equal, * and thus relevant AtomStates need to be duplicated for the copied Atoms. * AtomState provides the cloneFor() method to simplify this process. * *

An atom may belong to only one residue; maintaining the * correct one-to-one reciprocal links is the resposibility of * the parent Residue. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Mar 17 10:01:58 EST 2003 */ public class Atom { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## /** May be null, maintained by parent Residue */ Residue parent = null; /** Typically PDB-style (exactly 4 characters), never null */ String name; /** One or two chars, uppercase, "XX" for unknown */ String element; /** True iff this atom is considered part of a het group */ boolean het; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new Atom with the given name. * @param name the name of this atom (not null) * @param element the element symbol for this atom (not null) * @param isHet true if this is a het atom */ public Atom(String name, String element, boolean isHet) { if(name == null) throw new NullPointerException("Must supply a non-null Atom name"); if(element == null) throw new NullPointerException("Must supply a non-null Atom element symbol"); this.name = name; this.element = element; this.het = isHet; } /** Creates an atom of element "XX" */ public Atom(String name, boolean isHet) { this(name, "XX", false); } /** Creates a new non-het atom */ public Atom(String name) { this(name, false); } /** * Creates an Atom with the same name and het status as template. * The duplicate Atom does not belong to any Residue initially, * and is not equal() to the original. * @param template the atom to copy / clone */ public Atom(Atom template) { this(template.getName(), template.getElement(), template.isHet()); } //}}} //{{{ getName, getElement, getResidue, isHet, toString //################################################################################################## /** Returns the name of this atom, usually a four letter code */ public String getName() { return name; } /** The element symbol for this atom -- one or two chars, uppercase, never null or empty */ public String getElement() { return element; } public Residue getResidue() { return parent; } public boolean isHet() { return het; } /** * Returns the qualified name of this atom, * i.e., the name appended to the name of its parent Residue. */ public String toString() { if(parent != null) return parent.toString()+":"+name; else return name; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/Model.java0000644000000000000000000004474711531212746021510 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; //import driftwood.util.NullNaturalComparator; //}}} /** * Model is the head of a logical (naming) description * of a macromolecular chemical system. For a physical (positional) * description, see ModelState. Models are Sets of Residues. * *

It is recommended that every residues in the model have a unique * CNIT code, or {@link #getResidue(String)} won't work properly. * *

An interesting note about Models is that they can contain multiple * ModelStates. Alt confs are typically stored in separate ModelStates! * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Tue Jun 10 10:36:48 EDT 2003 */ public class Model implements Cloneable { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## /** The name of this model (never null) */ String name; /** The set of Residues belonging to this Model */ UberSet residues; /** Residues by CNIT code for fast lookup: Map<String, Residue> */ Map resCNIT; // Chains and Segments shouldn't be implemented as real classes // because of the difficulting synchronizing residue membership // to Model, Chain, *and* Segment during add() and remove() ops. /** The chains: a lookup table based on names: Map<String, Set<Residue>>*/ Map chainMap; /** The segments: a lookup table based on names: Map<String, Set<Residue>>*/ Map segmentMap; /** The conformations: a lookup table based on names: Map<String, ModelState>*/ Map stateMap; /** Number of times this model has been modified */ int modCount = 0; /** Contains Disulfide objects defined at the file level. Optional! */ Disulfides disulfides; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @param name an identifier for this model. May not be null. */ public Model(String name) { if(name == null) throw new NullPointerException("Must provide a non-null model name"); this.name = name; // Use Uber because Residues need to // retrieve residue before and after themselves! residues = new UberSet(); resCNIT = new HashMap(); // Use TreeMap because it keeps the identifiers in alphabetical order // Use UberMap because is preserves the order from the input file // (This matters esp. for chains when _ is the LAST chain in the file) //chainMap = new TreeMap(); // all keys should be non-empty Strings chainMap = new UberMap(); // all keys should be non-empty Strings //segmentMap = new TreeMap(); // all keys are non-null segmentMap = new UberMap(); // all keys are non-null stateMap = new TreeMap(); // all keys should be non-empty Strings } //}}} //{{{ clone //################################################################################################## /** * Makes a deep-enough copy of this Model that can * be changed without impacting the original. * Residues themselves and all associated ModelStates * are NOT copied, so they shouldn't be changed. * However, they can easily be added/removed from the cloned Model. */ public Object clone() { try { Model m = (Model) super.clone(); m.residues = new UberSet(m.residues); m.resCNIT = new HashMap(m.resCNIT); m.chainMap = new UberMap(m.chainMap); m.segmentMap = new UberMap(m.segmentMap); m.stateMap = new TreeMap(m.stateMap); // Deep copy of chain and segment maps for(Iterator iter = m.chainMap.entrySet().iterator(); iter.hasNext(); ) { Map.Entry e = (Map.Entry) iter.next(); e.setValue(new UberSet((Set)e.getValue())); } for(Iterator iter = m.segmentMap.entrySet().iterator(); iter.hasNext(); ) { Map.Entry e = (Map.Entry) iter.next(); e.setValue(new UberSet((Set)e.getValue())); } return m; } catch(CloneNotSupportedException ex) { throw new Error("Clone failed unexpectedly"); } } //}}} //{{{ getName, toString //################################################################################################## /** Same as toString() */ public String getName() { return name; } /** Returns the identifier the model was created with (never null). */ public String toString() { return name; } //}}} //{{{ modified, getModCount //################################################################################################## /** Call this after changing anything about this Model */ protected void modified() { modCount++; } /** * Gets a 'count' of the modifications to this model. * The integer returned is guaranteed to change from * one call to the next if and only if the logical * structure of this model has been changed. * * This call must iterate through all member residues, * thus incurring a slight performance cost. */ public int getModCount() { int c = modCount; for(Iterator iter = this.getResidues().iterator(); iter.hasNext(); ) c += ((Residue)iter.next()).getModCount(); return c; } //}}} //{{{ add, remove, replace //################################################################################################## /** * Adds the given Residue to this Model. * If it previously belonged to another Model, * it will be removed from that Model first. * The Residue will be added to the end of the residue list; * call restoreOrder() if iteration order is important. * @throws ResidueException if a residue with the same fully- * qualified name is already part of this model. */ public void add(Residue r) throws ResidueException { if(residues.contains(r)) throw new ResidueException("A residue named "+r+" is already part of model "+this); residues.add(r); resCNIT.put(r.getCNIT(), r); addToChain(r, r.getChain()); addToSegment(r, r.getSegment()); this.modified(); } /** * Removes the given Residue from this Model. * @throws ResidueException if the Residue * wasn't part of this Model already. */ public void remove(Residue r) throws ResidueException { if(!residues.contains(r)) throw new ResidueException(r+" is not part of model "+this); residues.remove(r); resCNIT.remove(r.getCNIT()); removeFromChain(r, r.getChain()); removeFromSegment(r, r.getSegment()); this.modified(); } /** * Replaces one residue with another, maintaining the order of residues. * At the moment, however, the new residue goes at the end of the chain * and segment lists, so they will probably no longer be in order. * @throws ResidueException if the Residue * wasn't part of this Model already. */ public void replace(Residue oldRes, Residue newRes) throws ResidueException { if(residues.contains(newRes)) throw new ResidueException("A residue named "+newRes+" is already part of model "+this); if(!residues.contains(oldRes)) throw new ResidueException(oldRes+" is not part of model "+this); resCNIT.remove(oldRes.getCNIT()); removeFromChain(oldRes, oldRes.getChain()); removeFromSegment(oldRes, oldRes.getSegment()); resCNIT.put(newRes.getCNIT(), newRes); addToChain(newRes, newRes.getChain()); addToSegment(newRes, newRes.getSegment()); residues.addBefore(oldRes, newRes); residues.remove(oldRes); this.modified(); } //}}} //{{{ getResidues, getResidue, contains //################################################################################################## /** * Returns an unmodifiable view of the Residues in this model. */ public Collection getResidues() { return Collections.unmodifiableCollection(residues); } /** * Returns the residue with the specified CNIT code, * or null if no such residue is known. * This will only work dependably if every residue in the model * has a unique CNIT code. * @see Residue#getCNIT() */ public Residue getResidue(String cnit) { return (Residue)resCNIT.get(cnit); } /** * Returns true if the residue is part of this model. */ public boolean contains(Residue r) { return residues.contains(r); } //}}} //{{{ getChain(IDs), addTo/removeFromChain //################################################################################################## /** Returns an unmodifiable Set<String> of all the populated chains in this model */ public Set getChainIDs() { return Collections.unmodifiableSet(chainMap.keySet()); } /** * Returns a chain identified by its one letter code, * in the form of an unmodifiable Set<Residue>; * or null if there is no such chain in this model. */ public Set getChain(String chainID) { Set chain = (Set)chainMap.get(chainID); if (chain==null) return null; return Collections.unmodifiableSet(chain); } /** Registers the given Residue with the named chain; for use by this and Residue */ void addToChain(Residue r, String chainID) { Set chain = (Set)chainMap.get(chainID); if(chain == null) { chain = new UberSet(); chainMap.put(chainID, chain); } chain.add(r); this.modified(); } /** * Removes the given Residue from the chain if it was a part of it. * @throws ResidueException if the residue was not part of the chain. */ void removeFromChain(Residue r, String chainID) throws ResidueException { Set chain = (Set)chainMap.get(chainID); if(chain == null) throw new ResidueException(r+" is not a part of non-existant chain "+chainID); if(!chain.remove(r)) throw new ResidueException(r+" is not a part of chain "+chainID); // Eliminate empty chains if(chain.isEmpty()) chainMap.remove(chainID); this.modified(); } //}}} //{{{ getSegment(IDs), addTo/removeFromSegment //################################################################################################## /** Returns an unmodifiable Set<String> of all the populated segments in this model */ public Set getSegmentIDs() { return Collections.unmodifiableSet(segmentMap.keySet()); } /** * Returns a segment identified by its one letter code, * in the form of an unmodifiable Set<Residue>; * or null if there is no such segment in this model. */ public Set getSegment(String segmentID) { Set segment = (Set)segmentMap.get(segmentID); return Collections.unmodifiableSet(segment); } /** Registers the given Residue with the named segment; for use by this and Residue */ void addToSegment(Residue r, String segmentID) { Set segment = (Set)segmentMap.get(segmentID); if(segment == null) { segment = new UberSet(); segmentMap.put(segmentID, segment); } segment.add(r); this.modified(); } /** * Removes the given Residue from the segment if it was a part of it. * @throws ResidueException if the residue was not part of the segment. */ void removeFromSegment(Residue r, String segmentID) throws ResidueException { Set segment = (Set)segmentMap.get(segmentID); if(segment == null) throw new ResidueException(r+" is not a part of non-existant segment "+segmentID); if(!segment.remove(r)) throw new ResidueException(r+" is not a part of segment "+segmentID); // Eliminate empty segments if(segment.isEmpty()) segmentMap.remove(segmentID); this.modified(); } //}}} //{{{ getState(s), setStates //################################################################################################## /** Returns an unmodifiable Map<String, ModelState> for all the populated conformations in this model */ public Map getStates() { return Collections.unmodifiableMap(stateMap); } /** * Returns a conformation identified by its one letter code, * in the form of a ModelState; * or null if there is no such conformation in this model. */ public ModelState getState(String stateID) { ModelState state = (ModelState)stateMap.get(stateID); return state; } /** * Returns the default conformation. * The default conformation is 'A' if alternate conformations are present, * or space (' ') if only one conformation is present. */ public ModelState getState() { ModelState state = getState("A"); if(state == null) state = getState(" "); return state; } /** * Uses the given Map<String, ModelState> to associate * a new set of states with a new set of labels in this Model. */ public void setStates(Map newStates) { this.stateMap = new TreeMap(newStates); // This counts as a logical change because the // results of getStates() is altered. this.modified(); } //}}} //{{{ get/setDisulfides //################################################################################################## public Disulfides getDisulfides() { return this.disulfides; } public void setDisulfides(Disulfides disulfides) { this.disulfides = disulfides; } //}}} //{{{ fillInStates //################################################################################################## /** * Once this model's states are fully populated, you can call this function to make sure that * every state (except possibly " ") has an AtomState for every Atom in the model. * @param cloneAtomStates if true, AtomStates for fill-in will be cloned and * given the "correct" alt conf label. If false, existing AtomStates will be * used as-is. In most cases, the best choice is false -- this avoids e.g. * creating new ATOM cards when the model is written to PDB. * @throws AtomException if no state exists for some Atom in the model. */ public void fillInStates(boolean cloneAtomStates) throws AtomException { Collection allStates = this.stateMap.values(); for(Iterator iter = this.stateMap.entrySet().iterator(); iter.hasNext(); ) { Map.Entry e = (Map.Entry) iter.next(); String altConf = (String) e.getKey(); if(" ".equals(altConf)) continue; // base conf. doesn't need all atoms defined ModelState state = (ModelState) e.getValue(); if(cloneAtomStates) e.setValue( state.fillInForModel(this, altConf, allStates) ); else e.setValue( state.fillInForModel(this, allStates) ); } this.modified(); // changes the ModelState objects returned } //}}} //{{{ extractOrderedStatesByName //############################################################################## static public Collection extractOrderedStatesByName(Model model) { return extractOrderedStatesByName(model.getResidues(), model.getStates().values()); } /** * Extracts all the uniquely named AtomStates for the given model, in the * order of Residues and Atoms given. * This is often used to prepare input for AtomGraph. */ static public Collection extractOrderedStatesByName(Collection residues, Collection modelStates) { ModelState[] states = (ModelState[]) modelStates.toArray(new ModelState[modelStates.size()]); Set usedNames = new HashSet(); // to avoid duplicates ArrayList atomStates = new ArrayList(); for(Iterator ri = residues.iterator(); ri.hasNext(); ) { Residue res = (Residue)ri.next(); for(Iterator ai = res.getAtoms().iterator(); ai.hasNext(); ) { Atom atom = (Atom)ai.next(); for(int i = 0; i < states.length; i++) { try { AtomState as = states[i].get(atom); // We want to make sure every atom output has a unique PDB name. // We're not worried so much about duplicating coordinates (old code). // Name requirement is important for dealing with alt confs, // where a single atom (' ') may move in A but not B -- // this led to two ATOM entries with different coords but the same name. String aName = as.getAtom().toString()+as.getAltConf(); //if(!usedNames.contains(as)) -- for comparison by XYZ coords if(!usedNames.contains(aName)) { //usedNames.add(as); -- for comparison by XYZ coords usedNames.add(aName); atomStates.add(as); } } catch(AtomException ex) {} // no state } }//for each atom }// for each residue return atomStates; } //}}} //{{{ setName /** Sets the name of this model; must be non-null **/ public void setName(String name) { if(name == null) throw new NullPointerException("Must provide a non-null model name"); this.name = name; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/ModelState.java0000644000000000000000000003432511531212746022500 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * ModelState is the physical-positional counterpart * to Model: it holds all the coordinates and stateful information * for atoms that are stored in (usually) a single Model. * *

ModelStates can be 'chained' to parent states, so that a * modified state need only represent how it differs * from some reference state. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Wed Jun 11 10:24:27 EDT 2003 */ public class ModelState //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## /** The parent state. We defer to our parent if we're missing a particular mapping. */ ModelState parent = null; /** The Map<Atom, AtomState> that defines this state. */ Map stateMap; Map unmodMap = null; String pdbName = null; //}}} //{{{ Constructor(s) //################################################################################################## /** Provides a suggested capacity to possibly improve performance. */ public ModelState(ModelState parent, int sizeHint) { this.parent = parent; if (parent != null) this.pdbName = parent.getName(); stateMap = new HashMap(sizeHint); } /** Creates a state that defers to parent for missing mappings. */ public ModelState(ModelState parent) { this.parent = parent; if (parent != null) this.pdbName = parent.getName(); stateMap = new HashMap(); } /** Creates a state without a reference (parent) state to defer to. */ public ModelState() { this(null); } //}}} //{{{ getLocal, getImpl, get, getLocalStateMap //################################################################################################## /** * Retrieves a mapping for the specified Atom * iff *this* state knows about its state. * The parent state is NOT queried by this operation. * @return the AtomState, or null if no state is available. */ public AtomState getLocal(Atom key) { return (AtomState)stateMap.get(key); } /** Does a recursive query for state; returns null on failure. */ protected AtomState getImpl(Atom key) { AtomState s = getLocal(key); if(s == null && parent != null) return parent.getImpl(key); else return s; } /** * Retrieves a mapping for the specified atom. * This is the ordinary query, where every atom should * have a state defined. Therefore, an exception is thrown * if neither this state nor its ancestors can provide * a state for the query atom. * @throws AtomException if no state is known for the Atom, * including the case where key is null. */ public AtomState get(Atom key) throws AtomException { AtomState s = getImpl(key); if(s == null) throw new AtomException(key+" has no state specified"); return s; } /** * Returns the unmodifiable Map<Atom, AtomState> that represents * this state, but not its ancestors. * This is a low-level sort of function that most clients shouldn't be using. */ public Map getLocalStateMap() { if(unmodMap == null) unmodMap = Collections.unmodifiableMap(stateMap); return unmodMap; } //}}} //{{{ hasState //################################################################################################## /** Returns true iff get(atom) will return a valid state. */ public boolean hasState(Atom atom) { return (this.getImpl(atom) != null); } //}}} //{{{ add, addOverwrite //################################################################################################## /** * Inserts a mapping for the specified Atom. * @throws AtomException if a mapping already exists * for the target atom. Overwrites must be performed * explicitly using addOverwrite(). * @throws NullPointerException if state is null */ public void add(AtomState state) throws AtomException { Atom key = state.getAtom(); if(stateMap.containsKey(key)) throw new AtomException(this.toString()+" already contains a state for "+key); stateMap.put(key, state); } /** * Inserts a mapping for the specified Atom. * @return the previous mapping, or null if none * @throws NullPointerException if state is null */ public AtomState addOverwrite(AtomState state) { return (AtomState)stateMap.put(state.getAtom(), state); } //}}} //{{{ get/setParent //################################################################################################## /** * Returns the reference state that * this state is defined on top of, * or null if none. */ public ModelState getParent() { return parent; } /** * Sets the reference state for this state to fall back on. * @throws IllegalArgumentException if a model is made its * own parent. */ public void setParent(ModelState parent) { ModelState ancestor = parent; while(ancestor != null) { if(ancestor == this) throw new IllegalArgumentException("Circular inheritance detected"); ancestor = ancestor.getParent(); } this.parent = parent; } //}}} //{{{ get/setName public String getName() { return pdbName; } public void setName(String nm) { pdbName = nm; } //}}} //{{{ createCollapsed //################################################################################################## /** * Creates a new ModelState that has exclude as its parent * and contains all of the dominant mappings of this object and its ancestors. * Thus the new object will behave just like this one from * the standpoint of get, although * getLocal and getLocalStateMap will now * return more items. * @param exclude only ancestors of this state which are not * exclude or its ancestors will be collapsed. * If exclude is null, the new state will be * completely independent and have no parent. */ public ModelState createCollapsed(ModelState exclude) { // Find all ancestors which should be excluded. ModelState firstExclude = exclude; HashSet excluded = new HashSet(); while(exclude != null) { excluded.add(exclude); exclude = exclude.getParent(); } // Guess how big we need to make our hash table. // This should save us some rehashings. int maxsize = 16; ModelState src = this; while(src != null && !excluded.contains(src)) { maxsize = Math.max(maxsize, src.getLocalStateMap().size()); src = src.getParent(); } maxsize = (3*maxsize) / 2; // Walk up through the ancestors, adding all states // that aren't already represented. ModelState collapsed = new ModelState(firstExclude, maxsize); src = this; while(src != null && !excluded.contains(src)) { for(Iterator iter = src.getLocalStateMap().keySet().iterator(); iter.hasNext(); ) { Atom a = (Atom)iter.next(); try { if(collapsed.getLocal(a) == null) collapsed.add(src.getLocal(a)); } catch(AtomException ex) { System.err.println("Logical error!"); ex.printStackTrace(); } } src = src.getParent(); } return collapsed; } /** * Convenience for createCollapsed(null). * Note that the new state will have no parent. */ public ModelState createCollapsed() { return createCollapsed(null); } //}}} //{{{ createForModel //################################################################################################## /** * Collapses all mappings into a new ModelState, but only includes * those that map to atoms currently in the supplied model. */ public ModelState createForModel(Model model) { ModelState m = new ModelState(); for(Iterator ri = model.getResidues().iterator(); ri.hasNext(); ) { Residue res = (Residue) ri.next(); for(Iterator ai = res.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); AtomState s = this.getImpl(a); try { if(s != null) m.add(s); } catch(AtomException ex) { System.err.println("Logical error!"); ex.printStackTrace(); } } } return m; } //}}} //{{{ fillInForModel //################################################################################################## /** Fills in without duplicating any AtomStates; alt conf labels are left as-is. */ public ModelState fillInForModel(Model model, Collection otherModelStates) throws AtomException { return fillInForModel(model, null, otherModelStates); } /** * For any Atom for which this ModelState does not have an AtomState, * the otherModelStates are queried (in order) until a matching AtomState * is found. A new ModelState with this as its parent is created to contain * the "fill-in" states, which may or may not have "correct" alt IDs. * *

Two modes of fill-in are possible. If altConf is left as null, then existing * AtomState objects will be used for fill-in and they will not be altered. * If altConf is supplied, AtomStates will be cloned and the alt conf of the * clones will be set to the supplied value. * While this might *seem* like a good thing, in the case of many A and B states * and just a few C states, you end up creating a lot of new "C" ATOM cards that * are just duplicates of the information in A. * * @param model the model to search for Atoms that need AtomStates. * @param altConf the alternate conformation code for (cloned) fill-in AtomStates. * If this is left null (the usual choice), AtomStates will be used as-is (not cloned). * @param otherModelStates a Collection of ModelStates to be queried for fill-ins. * * @throws AtomException if no state could be found in all of the otherModelStates for an Atom in the model. */ public ModelState fillInForModel(Model model, String altConf, Collection otherModelStates) throws AtomException { ModelState m = new ModelState(this); ModelState[] others = (ModelState[]) otherModelStates.toArray(new ModelState[otherModelStates.size()]); for(Iterator ri = model.getResidues().iterator(); ri.hasNext(); ) { Residue res = (Residue) ri.next(); for(Iterator ai = res.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); AtomState s = this.getImpl(a); if(s == null) { for(int i = 0; i < others.length && s == null; i++) s = others[i].getImpl(a); if(s != null) { if(altConf != null) { s = (AtomState) s.clone(); s.setAltConf(altConf); } try { m.add(s); } catch(AtomException ex) { System.err.println("Logical error!"); ex.printStackTrace(); } }//if s != null else throw new AtomException("No state found for "+a); }//if s == null }//for all atoms }// for all residues return m; } //}}} //{{{ toString public String toString() { return (pdbName+" modelstate"); } //}}} //{{{ debugStates ///** a quick class to spit out all contents of this ModelState in a nicely formatted string // @param i number of mappings to return in string (enter 0 for all mappings). */ //public String debugStates(int i) { // String s = ""; // Iterator keys = stateMap.keySet().iterator(); // int j = 0; // ArrayList lines = new ArrayList(); // while (keys.hasNext()) { // Object key = keys.next(); // Object value = stateMap.get(key); // s = s + key.toString() + " -> " + value.toString() + "\n"; // j++; // if (j == i) { // s = s + "truncated....."; // return s; // to limit number of entries. // } // } // return s; //} /** Simple method to spit out all contents of this ModelState * in a nicely formatted string. * @param i number of mappings to return in string (enter 0 for all mappings) */ public String debugStates(int i) { Iterator keys = stateMap.keySet().iterator(); int j = 0; ArrayList lines = new ArrayList(); while(keys.hasNext()) { Object key = keys.next(); Object value = stateMap.get(key); lines.add(key.toString() + " -> " + value.toString()); j++; if(j == i) { lines.add("truncated..."); break; } } Collections.sort(lines); String s = ""; for(int k = 0; k < lines.size(); k++) { String line = (String) lines.get(k); s += line + "\n"; } return s; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/ModelTreeViewer.java0000644000000000000000000002325211531212746023476 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import javax.swing.tree.*; import driftwood.util.SoftLog; //}}} /** * ModelTreeViewer is a fun GUI viewer for exploring * the contents of a PDB file. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Fri Jun 13 15:31:13 EDT 2003 */ public class ModelTreeViewer //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public ModelTreeViewer() { super(); } //}}} //{{{ buildRootNode //################################################################################################## DefaultMutableTreeNode buildRootNode(CoordinateFile coordFile) { DefaultMutableTreeNode rootNode = new DefaultMutableTreeNode("All models", true); for(Iterator iter = coordFile.getModels().iterator(); iter.hasNext(); ) { Model model = (Model)iter.next(); DefaultMutableTreeNode modelNode = buildModelNode(model); rootNode.add(modelNode); } return rootNode; } //}}} //{{{ buildModelNode //################################################################################################## DefaultMutableTreeNode buildModelNode(Model model) { DefaultMutableTreeNode modelNode = new DefaultMutableTreeNode("Model "+model, true); // All chains DefaultMutableTreeNode chainsNode = new DefaultMutableTreeNode("Chains", true); modelNode.add(chainsNode); for(Iterator chainIter = model.getChainIDs().iterator(); chainIter.hasNext(); ) { String ch = (String)chainIter.next(); DefaultMutableTreeNode chainNode = new DefaultMutableTreeNode("Chain '"+ch+"'", true); chainsNode.add(chainNode); for(Iterator iter = model.getChain(ch).iterator(); iter.hasNext(); ) { Residue res = (Residue)iter.next(); DefaultMutableTreeNode resNode = buildResidueNode(res); chainNode.add(resNode); } } // All segments DefaultMutableTreeNode segmentsNode = new DefaultMutableTreeNode("Segments", true); modelNode.add(segmentsNode); for(Iterator segmentIter = model.getSegmentIDs().iterator(); segmentIter.hasNext(); ) { String seg = (String)segmentIter.next(); DefaultMutableTreeNode segmentNode = new DefaultMutableTreeNode("Segment '"+seg+"'", true); segmentsNode.add(segmentNode); for(Iterator iter = model.getSegment(seg).iterator(); iter.hasNext(); ) { Residue res = (Residue)iter.next(); DefaultMutableTreeNode resNode = buildResidueNode(res); segmentNode.add(resNode); } } // All residues DefaultMutableTreeNode allResNode = new DefaultMutableTreeNode("All residues", true); modelNode.add(allResNode); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue)iter.next(); DefaultMutableTreeNode resNode = buildResidueNode(res); allResNode.add(resNode); } return modelNode; } //}}} //{{{ buildResidueNode //################################################################################################## DefaultMutableTreeNode buildResidueNode(Residue res) { DefaultMutableTreeNode resNode = new DefaultMutableTreeNode(res, true); for(Iterator iter = res.getAtoms().iterator(); iter.hasNext(); ) { Atom atom = (Atom)iter.next(); DefaultMutableTreeNode atomNode = new DefaultMutableTreeNode(atom.getName(), false); resNode.add(atomNode); } return resNode; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ loadCoordinateFile, launchTreeWindow //################################################################################################## CoordinateFile loadCoordinateFile() throws IOException { PdbReader reader = new PdbReader(); CoordinateFile cf = reader.read(System.in); return cf; } void launchTreeWindow(TreeNode rootNode) { JTree tree = new JTree(rootNode, true); //tree.setRootVisible(false); JScrollPane scroll = new JScrollPane(tree); JPanel cp = new JPanel(new BorderLayout()); cp.add(scroll); JFrame frame = new JFrame("Model Tree Viewer"); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setContentPane(cp); frame.setSize(500, 800); frame.setVisible(true); } //}}} //{{{ Main, main //################################################################################################## /** * Main() function for running as an application */ public void Main() { try { CoordinateFile cf = loadCoordinateFile(); TreeNode rootNode = buildRootNode(cf); launchTreeWindow(rootNode); } catch(IOException ex) { ex.printStackTrace(); SoftLog.err.println("*** Reading PDB file failed on I/O ***"); } } public static void main(String[] args) { ModelTreeViewer mainprog = new ModelTreeViewer(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); SoftLog.err.println(); mainprog.showHelp(true); SoftLog.err.println(); SoftLog.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //################################################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg+"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("ModelTreeViewer.help"); if(is == null) SoftLog.err.println("\n*** Unable to locate help information in 'ModelTreeViewer.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } SoftLog.err.println("driftwood.moldb2.ModelTreeViewer"); SoftLog.err.println("Copyright (C) 2003 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //################################################################################################## void interpretArg(String arg) { // Handle files, etc. here } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/PdbWriter.java0000644000000000000000000003336711531212746022346 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.Strings; //}}} /** * PdbWriter allows output of models in PDB format. * *

PdbReader and PdbWriter fail to deal with the following kinds of records: *

  • SIGATM
  • *
  • SIGUIJ
  • *
  • CONECT
*

Actually, PdbReader puts all of them in with the headers, and * PdbWriter spits them all back out, but it may not put them in the * right part of the file. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Jun 23 09:30:27 EDT 2003 */ public class PdbWriter //extends ... implements ... { //{{{ Constants static final DecimalFormat df2 = driftwood.util.Strings.usDecimalFormat("0.00"); static final DecimalFormat df3 = driftwood.util.Strings.usDecimalFormat("0.000"); //}}} //{{{ Variable definitions //################################################################################################## /** The output sink for PDB-format data. Remember to flush() when you're done! */ PrintWriter out; /** Whether we should use existing AtomState serial numbers or calculate our own */ boolean renumberAtoms = false; /** The current number for renumbering atoms on output */ int atomSerial = 1; //}}} //{{{ Constructor(s) //################################################################################################## /** Constructor for writing to an output stream. */ public PdbWriter(OutputStream os) { out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(os))); } /** Constructor for writing to a writer. */ public PdbWriter(Writer w) { out = new PrintWriter(new BufferedWriter(w)); } /** Constructor for writing to a file. */ public PdbWriter(File f) throws IOException { out = new PrintWriter(new BufferedWriter(new FileWriter(f))); } //}}} //{{{ close, get/setRenumberAtoms //################################################################################################## /** Closes the underlying stream. Useful with e.g. {@link #PdbWriter(File)}. */ public void close() { out.close(); } /** If true, atoms will be renumbered from 1 when writen out. */ public boolean getRenumberAtoms() { return renumberAtoms; } /** Turns on or off atom renumbering, and resets the counter to 1. */ public void setRenumberAtoms(boolean b) { renumberAtoms = b; atomSerial = 1; } //}}} //{{{ writeAtom //################################################################################################## /** * Writes out a single ATOM or HETATM line. */ public void writeAtom(AtomState as) { try { Residue res = as.getResidue(); StringBuffer sb = new StringBuffer(80); if(as.isHet()) sb.append("HETATM"); else sb.append("ATOM "); String serial = as.getSerial(); if(renumberAtoms) serial = Integer.toString(atomSerial++); sb.append(Strings.forceRight(serial, 5)); sb.append(" "); // unused sb.append(Strings.forceLeft(as.getName(), 4)); sb.append(Strings.forceLeft(as.getAltConf(), 1)); sb.append(Strings.forceLeft(res.getName(), 3)); sb.append(" "); // unused // We could be smarter here and try to make them unique: sb.append(Strings.forceLeft(res.getChain(), 1)); sb.append(Strings.forceRight(res.getSequenceNumber(), 4)); sb.append(Strings.forceLeft(res.getInsertionCode(), 1)); sb.append(" "); // unused sb.append(Strings.forceRight(df3.format(as.getX()), 8)); sb.append(Strings.forceRight(df3.format(as.getY()), 8)); sb.append(Strings.forceRight(df3.format(as.getZ()), 8)); sb.append(Strings.forceRight(df2.format(as.getOccupancy()), 6)); sb.append(Strings.forceRight(df2.format(as.getTempFactor()), 6)); sb.append(" "); // unused String seg = res.getSegment(); if(seg == null) seg = " "; // should never happen sb.append(Strings.forceLeft(seg, 4)); if(as.getElement().length() == 1) sb.append(" "+as.getElement()); else if(as.getElement().length() == 2) sb.append(as.getElement()); else sb.append(" "); // should never happen (?) if(as.getCharge() == 0.0) sb.append(" "); else if(as.getCharge() > 0) sb.append(((int)as.getCharge())+"+"); else sb.append(((int)as.getCharge())+"-"); sb.append(as.getPast80()); // "stuff" past column 80 out.println(sb); out.flush(); } catch(NullPointerException ex) {} } //}}} //{{{ writeAnisoU //################################################################################################## /** * Writes out a single ANISOU line. */ public void writeAnisoU(AtomState as) { try { Residue res = as.getResidue(); StringBuffer sb = new StringBuffer(80); sb.append("ANISOU"); String serial = as.getSerial(); if(renumberAtoms) serial = Integer.toString(atomSerial); // don't increment like with atoms sb.append(Strings.forceRight(serial, 5)); sb.append(" "); // unused sb.append(Strings.forceLeft(as.getName(), 4)); sb.append(Strings.forceLeft(as.getAltConf(), 1)); sb.append(Strings.forceLeft(res.getName(), 3)); sb.append(" "); // unused // We could be smarter here and try to make them unique: sb.append(Strings.forceLeft(res.getChain(), 1)); sb.append(Strings.forceRight(res.getSequenceNumber(), 4)); sb.append(Strings.forceLeft(res.getInsertionCode(), 1)); sb.append(" "); // unused sb.append(as.getAnisoU().substring(30)); out.println(sb); out.flush(); } catch(NullPointerException ex) {} } //}}} //{{{ writeResidues //################################################################################################## /** * Write the given residues with no additional header information. * The residues will be sorted into their natural order before being written. */ public void writeResidues(Collection residues, ModelState state) { Residue[] res = (Residue[])residues.toArray(new Residue[residues.size()]); Arrays.sort(res); for(int i = 0; i < res.length; i++) { for(Iterator iter = res[i].getAtoms().iterator(); iter.hasNext(); ) { try { Atom a = (Atom)iter.next(); AtomState as = state.get(a); writeAtom(as); writeAnisoU(as); } catch(AtomException ex) {} // missing state }//for each atom }//for each residue } //}}} //{{{ writeCoordinateFile //################################################################################################## public void writeCoordinateFile(CoordinateFile coordFile) { writeCoordinateFile(coordFile, null); } /** * Writes out a whole group of models, complete with * all header information. This function should generate * a PDB file with (almost?) all of the information present * in the original that was read by PdbReader. * @param coordFile the group of models to be written out. * @param modelStates a Map<Model, Collection<ModelState>> of states to write. * That is, for each Model there should be an entry in this map that * contains a Collection of the states one would like to write out. * If this Collection is missing or null, it will be obtained from Model.getStates(). */ public void writeCoordinateFile(CoordinateFile coordFile, Map modelStates) { if(modelStates == null) modelStates = Collections.EMPTY_MAP; for(Iterator iter = coordFile.getHeaders().iterator(); iter.hasNext(); ) { String header = iter.next().toString(); // they should already be Strings if(!header.startsWith("CONECT")) out.println(header); } for(Iterator iter = coordFile.getModels().iterator(); iter.hasNext(); ) { Model model = (Model)iter.next(); if(coordFile.getModels().size() > 1) // only use MODEL when >1 out.println("MODEL "+Strings.forceRight(model.getName(), 4)); Collection stateSet = (Collection)modelStates.get(model); if(stateSet == null) stateSet = model.getStates().values(); ModelState[] states = (ModelState[])stateSet.toArray(new ModelState[stateSet.size()]); writeModel(model, states); if(coordFile.getModels().size() > 1) out.println("ENDMDL"); }//for each model // This only makes sense if we haven't renumbered the atoms! if(!renumberAtoms) { for(Iterator iter = coordFile.getHeaders().iterator(); iter.hasNext(); ) { String header = iter.next().toString(); // they should already be Strings if(header.startsWith("CONECT")) out.println(header); } } // we don't output a MASTER checksum record, // though it wouldn't be hard if someone wants to implement it. out.println("END "); out.flush(); } //}}} //{{{ writeModel //################################################################################################## private void writeModel(Model model, ModelState[] states) { Set usedCardNames = new HashSet(); // to avoid duplicate names (inc. alt conf code) Residue oldRes = null; for(Iterator ri = model.getResidues().iterator(); ri.hasNext(); ) { Residue res = (Residue)ri.next(); // insert TER record as needed if(oldRes != null && !oldRes.getChain().equals(res.getChain())) writeTerCard(oldRes); oldRes = res; // print this residue for(Iterator ai = res.getAtoms().iterator(); ai.hasNext(); ) { Atom atom = (Atom)ai.next(); boolean hasAlts = false; // We want to make sure that Atoms with alts (A, B, C, ...) // don't also get an entry with alt = _ // This may not be the "right" place to address this problem, but it works for now. for(int i = 0; i < states.length; i++) { try { AtomState as = states[i].get(atom); if(! " ".equals(as.getAltConf())) { hasAlts = true; break; } } catch(AtomException ex) {} // no state } // We also want to make sure every atom output has a unique PDB name; // we're not worried so much about duplicating coordinates. // Name requirement is important for dealing with alt confs, // where a single atom (' ') may move in A but not B -- // this led to two ATOM entries with different coords but the same name. for(int i = 0; i < states.length; i++) { try { AtomState as = states[i].get(atom); String aName = as.getAtom().toString()+as.getAltConf(); if(!hasAlts || !" ".equals(as.getAltConf())) { if(!usedCardNames.contains(aName)) { usedCardNames.add(aName); writeAtom(as); writeAnisoU(as); } } } catch(AtomException ex) {} // no state } }//for each atom }// for each residue // insert TER record for end of final chain writeTerCard(oldRes); out.flush(); } //}}} //{{{ writeTerCard //################################################################################################## private void writeTerCard(Residue res) { StringBuffer sb = new StringBuffer(27).append("TER "); // This gets the serial number wrong unless we're renumbering, // but nobody uses them anyway... sb.append(Strings.forceRight(Integer.toString(atomSerial++), 5)); sb.append(" "); // unused sb.append(Strings.forceLeft(res.getName(), 3)); sb.append(" "); // unused sb.append(Strings.forceLeft(res.getChain(), 1)); sb.append(Strings.forceRight(res.getSequenceNumber(), 4)); sb.append(Strings.forceLeft(res.getInsertionCode(), 1)); out.println(sb); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/Alignment.java0000644000000000000000000003560311531212746022355 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * Alignment represents an alignment of two sequences (which may * then form the basis for aligning two structures). * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Fri Mar 2 15:41:13 EST 2007 */ public class Alignment //extends ... implements ... { //{{{ Constants //}}} //{{{ INTERFACE: Scorer //############################################################################## /** * A scoring function to be used with the alignment algorithms in this class. * Since it might be convenient to align Residue, Atoms, or AtomStates, * this interface just deals with generic Objects. */ public interface Scorer { /** * Scores the alignment of things A and B with each other. * High scores are favorable; low scores are bad. * A or B should never be null. */ public double score(Object a, Object b); /** * Cost of starting a gap, across from thing A. * Either open_gap() or extend_gap() is applied at a position, but not both. * Gap penalities are usually constant, and I don't know * what a residue-specific gap penalty would do to the algorithm's * correctness guarantee! */ public double open_gap(Object a); /** * Cost of extending a gap, across from thing A. * Either open_gap() or extend_gap() is applied at a position, but not both. * Gap penalities are usually constant, and I don't know * what a residue-specific gap penalty would do to the algorithm's * correctness guarantee! */ public double extend_gap(Object a); } //}}} //{{{ INTERFACE: Aligner //############################################################################## /** * An alignment algorithm. * Provided so that the static alignment methods in this class * can easily be passed as "function objects" to other routines. */ public interface Aligner { /** * Performs some kind of alignment, with gaps represented by nulls. * In the case of non-global alignments, no all input objects are * guaranteed to be represented in the output alignment. * @param objsA the "source" set of objects, suitable for scoring by scorer * @param objsB the "target" set of objects, suitable for scoring by scorer * @param scorer a Scorer suited for whatever type of objects are in A and B */ public Alignment align(Object[] objsA, Object[] objsB, Scorer scorer); } //}}} //{{{ CLASS: NeedlemanWunsch //############################################################################## /** Uses the algorithm of Needleman and Wunsch to do a gapped global alignment. */ public static class NeedlemanWunsch implements Aligner { public Alignment align(Object[] objsA, Object[] objsB, Scorer scorer) { return needlemanWunsch(objsA, objsB, scorer); } } //}}} //{{{ Variable definitions //############################################################################## /** The aligned input objects, with gaps represented by nulls */ public Object[] a, b; //}}} //{{{ Constructor(s) //############################################################################## private Alignment() { super(); } //}}} //{{{ score //############################################################################## /** * Score the generated alignment using the provided Scorer. */ public double score(Scorer scorer) { double score = 0; // A and B should be the same length; this will generate an exception if not for(int i = 0; i < Math.max(a.length, b.length); i++) { // A or B may be null, but not both if(a[i] == null) { if(i == 0 || a[i-1] != null) score += scorer.open_gap(b[i]); else score += scorer.extend_gap(b[i]); } else if(b[i] == null) { if(i == 0 || b[i-1] != null) score += scorer.open_gap(a[i]); else score += scorer.extend_gap(a[i]); } else score += scorer.score(a[i], b[i]); } return score; } //}}} //{{{ needlemanWunsch //############################################################################## /** * Uses the algorithm of Needleman and Wunsch to do a gapped global alignment. * @param objsA the "source" set of objects, suitable for scoring by scorer * @param objsB the "target" set of objects, suitable for scoring by scorer * @param scorer a Scorer suited for whatever type of objects are in A and B */ static public Alignment needlemanWunsch(Object[] objsA, Object[] objsB, Scorer scorer) { Object[] a = objsA, b = objsB; // for ease of typing // As the array is filled in, each box i,j will contain the maximum // possible score for any alignment of the first i symbols in A with // the first j symbols in B. double[][] nw = new double[ a.length+1 ][ b.length+1 ]; // For backtracking and generating the alignment int[][] hist = new int[ a.length+1 ][ b.length+1 ]; final int GAP_IN_A = 1, GAP_IN_B = 2, NO_GAP = 4; // First cell -- two zero-length strings nw[0][0] = 0; // First row // Fill in with cumulative gap penalty for(int i = 0; i < a.length; i++) { nw[i+1][0] = nw[i][0] + (i == 0 ? scorer.open_gap(a[i]) : scorer.extend_gap(a[i])); hist[i+1][0] = GAP_IN_B; } // First column for(int j = 0; j < b.length; j++) { nw[0][j+1] = nw[0][j] + (j == 0 ? scorer.open_gap(b[j]) : scorer.extend_gap(b[j])); hist[0][j+1] = GAP_IN_A; } // Rest of table for(int i = 0; i < a.length; i++) { for(int j = 0; j < b.length; j++) { double s1 = nw[i ][j+1] + (hist[i ][j+1] == GAP_IN_B ? scorer.extend_gap(a[i]) : scorer.open_gap(a[i])); double s2 = nw[i+1][j ] + (hist[i+1][j ] == GAP_IN_A ? scorer.extend_gap(b[j]) : scorer.open_gap(b[j])); double s3 = nw[i ][j ] + scorer.score(a[i], b[j]); // If everything is equal, prefer no gap if(s3 >= s1 && s3 >= s2) { nw[i+1][j+1] = s3; hist[i+1][j+1] = NO_GAP; } else if(s1 >= s2) { nw[i+1][j+1] = s1; hist[i+1][j+1] = GAP_IN_B; } else // s2 is greatest { nw[i+1][j+1] = s2; hist[i+1][j+1] = GAP_IN_A; } } } // Backtrack to generate the optimal alignment LinkedList aa = new LinkedList(), bb = new LinkedList(); int i = a.length-1, j = b.length-1; while(i >= 0 && j >= 0) { if(hist[i+1][j+1] == NO_GAP) { aa.addFirst(a[i]); bb.addFirst(b[j]); i--; j--; } else if(hist[i+1][j+1] == GAP_IN_B) { aa.addFirst(a[i]); bb.addFirst(null); i--; } else // hist[i+1][j+1] == GAP_IN_A { aa.addFirst(null); bb.addFirst(b[j]); j--; } } // Either aa or bb now has nothing but gaps to be added; // i.e., only one of the two loops below will execute (at most). while(i >= 0) { aa.addFirst(a[i]); bb.addFirst(null); i--; } while(j >= 0) { aa.addFirst(null); bb.addFirst(b[j]); j--; } Alignment align = new Alignment(); align.a = aa.toArray(); align.b = bb.toArray(); return align; } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ alignChains, next_permutation, reverse //############################################################################## /** * Creates an alignment that does not cross chain boundaries. * Run time is factorial in the number of chains (!). * Alignments that have a net score less than zero are excluded. * @param chainsA a Collection of Collections of Residues, giving the chains of A * @param chainsB a Collection of Collections of Residues, giving the chains of B * @param aligner an algorithm for sequence alignment, such as Needleman-Wunsch. * @param scorer a Scorer suited for whatever type of objects are in A and B */ public static Alignment alignChains(Collection chainsA, Collection chainsB, Aligner aligner, Scorer scorer) { // Score each chain against each other chain Alignment[][] alignments = new Alignment[ chainsA.size() ][ chainsB.size() ]; double[][] scores = new double[ chainsA.size() ][ chainsB.size() ]; int idxA = 0; for(Iterator itrA = chainsA.iterator(); itrA.hasNext(); idxA++) { Object[] objsA = ((Collection) itrA.next()).toArray(); int idxB = 0; for(Iterator itrB = chainsB.iterator(); itrB.hasNext(); idxB++) { Object[] objsB = ((Collection) itrB.next()).toArray(); alignments[idxA][idxB] = aligner.align(objsA, objsB, scorer); scores[idxA][idxB] = alignments[idxA][idxB].score(scorer); //System.err.printf("%8.1f ", new Object[] { new Double(scores[idxA][idxB]) }); } //System.err.println(); } // Try all permutations of pairing up the chains, // pick the one with the maximum sum-of-scores. int a = chainsA.size(), b = chainsB.size(); int min = Math.min(a, b), max = Math.max(a, b); double best_score = Double.NEGATIVE_INFINITY; int[] x = new int[max], best_x = null; for(int i = 0; i < max; i++) x[i] = Math.min(i, min); // [0 1 2 ... min-1 min min min] while(true) { double total_score = 0; for(int i = 0; i < max; i++) { if(x[i] >= min) // this is an X-vs-null pairing, no score contribution continue; else if(a >= b) // A has more chains total_score += scores[ i ][ x[i] ]; else // B has more chains total_score += scores[ x[i] ][ i ]; } if(best_x == null || total_score > best_score) { best_score = total_score; best_x = (int[]) x.clone(); } if(!next_permutation(x)) break; } // Construct the final alignment ArrayList aa = new ArrayList(), bb = new ArrayList(); x = best_x; for(int i = 0; i < max; i++) { if(x[i] >= min) // this is an X-vs-null pairing, no score contribution continue; else if(a >= b) // A has more chains { if( scores[ i ][ x[i] ] <= 0 ) continue; // bad alignment, don't include aa.addAll(Arrays.asList( alignments[ i ][ x[i] ].a )); bb.addAll(Arrays.asList( alignments[ i ][ x[i] ].b )); } else // B has more chains { if( scores[ x[i] ][ i ] <= 0 ) continue; // bad alignment, don't include aa.addAll(Arrays.asList( alignments[ x[i] ][ i ].a )); bb.addAll(Arrays.asList( alignments[ x[i] ][ i ].b )); } } Alignment align = new Alignment(); align.a = aa.toArray(); align.b = bb.toArray(); return align; } /** * Borrowed from the C++ STL via a nice blog entry: * http://marknelson.us/2002/03/01/next-permutation * Called repeatedly with a sequence of integers initially in ascending order, * will generate all permutations in lexicographical order, returning false * when no more remain. */ private static boolean next_permutation(int[] x) { if(x.length <= 1) return false; int i = x.length - 1; while(true) { int ii = i--; if(x[i] < x[ii]) { int j = x.length; while(!(x[i] < x[--j])); int swap = x[i]; x[i] = x[j]; x[j] = swap; reverse(x, ii, x.length); return true; } if(i == 0) { reverse(x, 0, x.length); return false; } } } private static void reverse(int[] x, int start_inc, int end_exc) { int i = start_inc, j = end_exc-1; while(i < j) { int swap = x[i]; x[i] = x[j]; x[j] = swap; i++; j--; } } //}}} //{{{ main (for testing) //############################################################################## public static void main(String[] args) { //int[] x = {1, 2, 3, 3}; //do //{ // for(int i = 0; i < x.length; i++) // System.out.print(" "+x[i]); // System.out.println(); //} while( next_permutation(x) ); //if(true) return; Alignment align = needlemanWunsch( makeCharSet(args[0]), makeCharSet(args[1]), new Scorer() { public double score(Object a, Object b) { if(a.equals(b)) return 1; else return 0; } public double open_gap(Object a) { return extend_gap(a); } public double extend_gap(Object a) { return -1; } } ); printAlignedSet(align.a); printAlignedSet(align.b); } static Object[] makeCharSet(String chars) { ArrayList list = new ArrayList(); for(int i = 0; i < chars.length(); i++) list.add(chars.substring(i, i+1)); return list.toArray(); } static void printAlignedSet(Object[] aligned) { for(int i = 0; i < aligned.length; i++) { if(aligned[i] == null) System.out.print("-"); else System.out.print(aligned[i]); } System.out.println(); } //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/CifSecondaryStructure.java0000644000000000000000000001311411531212746024722 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.star.*; //}}} /** * CifSecondaryStructure returns secondary structure assignments * based on the mmCIF file struct_conf category. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Feb 2 09:45:24 EST 2006 */ class CifSecondaryStructure extends SecondaryStructure { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public CifSecondaryStructure(DataCell data) throws IOException { super(); doStructConf(data); // helix, turns defined here (maybe strands) doStructSheet(data); // strands/sheets mostly defined here } //}}} //{{{ doStructConf //############################################################################## void doStructConf(DataCell data) throws IOException { List ssConfTypeId = data.getItem("_struct_conf.conf_type_id"); //List ssBegLabelAsymId = data.getItem("_struct_conf.beg_label_asym_id"); //List ssBegLabelSeqId = data.getItem("_struct_conf.beg_label_seq_id"); //List ssEndLabelAsymId = data.getItem("_struct_conf.end_label_asym_id"); //List ssEndLabelSeqId = data.getItem("_struct_conf.end_label_seq_id"); List ssBegAuthAsymId = data.getItem("_struct_conf.beg_auth_asym_id"); List ssBegAuthSeqId = data.getItem("_struct_conf.beg_auth_seq_id"); List ssEndAuthAsymId = data.getItem("_struct_conf.end_auth_asym_id"); List ssEndAuthSeqId = data.getItem("_struct_conf.end_auth_seq_id"); int ssElements = ssConfTypeId.size(); if(ssElements == 0) return; if(ssBegAuthAsymId.size() != ssElements || ssBegAuthSeqId.size() != ssElements || ssEndAuthAsymId.size() != ssElements || ssEndAuthSeqId.size() != ssElements) throw new IOException("Elements in struct_conf disagree in length"); for(int i = 0; i < ssElements; i++) { Range r = new Range(); String type = (String) ssConfTypeId.get(i); if(type.startsWith("HELX")) r.type = HELIX; else if(type.startsWith("TURN")) r.type = TURN; else if(type.startsWith("STRN")) r.type = STRAND; else r.type = COIL; String begAsym = (String) ssBegAuthAsymId.get(i); String endAsym = (String) ssEndAuthAsymId.get(i); if(!begAsym.equals(endAsym)) System.err.println("Mismatched asym (chain) IDs (row "+(i+1)+")"); r.chainId = begAsym; try { r.initSeqNum = Integer.parseInt(((String) ssBegAuthSeqId.get(i)).trim()); r.endSeqNum = Integer.parseInt(((String) ssEndAuthSeqId.get(i)).trim()); addRange(r); } catch(NumberFormatException ex) { System.err.println("Non-numeric sequence numbers (row "+(i+1)+")"); } } } //}}} //{{{ doStructSheet //############################################################################## void doStructSheet(DataCell data) throws IOException { //List ssBegLabelAsymId = data.getItem("_struct_sheet_range.beg_label_asym_id"); //List ssBegLabelSeqId = data.getItem("_struct_sheet_range.beg_label_seq_id"); //List ssEndLabelAsymId = data.getItem("_struct_sheet_range.end_label_asym_id"); //List ssEndLabelSeqId = data.getItem("_struct_sheet_range.end_label_seq_id"); List ssBegAuthAsymId = data.getItem("_struct_sheet_range.beg_auth_asym_id"); List ssBegAuthSeqId = data.getItem("_struct_sheet_range.beg_auth_seq_id"); List ssEndAuthAsymId = data.getItem("_struct_sheet_range.end_auth_asym_id"); List ssEndAuthSeqId = data.getItem("_struct_sheet_range.end_auth_seq_id"); int ssElements = ssBegAuthSeqId.size(); if(ssElements == 0) return; if(ssBegAuthAsymId.size() != ssElements || ssBegAuthSeqId.size() != ssElements || ssEndAuthAsymId.size() != ssElements || ssEndAuthSeqId.size() != ssElements) throw new IOException("Elements in struct_sheet_range disagree in length"); for(int i = 0; i < ssElements; i++) { Range r = new Range(); r.type = STRAND; // this is a beta sheet, so it has to be String begAsym = (String) ssBegAuthAsymId.get(i); String endAsym = (String) ssEndAuthAsymId.get(i); if(!begAsym.equals(endAsym)) System.err.println("Mismatched asym (chain) IDs (row "+(i+1)+")"); r.chainId = begAsym; try { r.initSeqNum = Integer.parseInt(((String) ssBegAuthSeqId.get(i)).trim()); r.endSeqNum = Integer.parseInt(((String) ssEndAuthSeqId.get(i)).trim()); addRange(r); } catch(NumberFormatException ex) { System.err.println("Non-numeric sequence numbers (row "+(i+1)+")"); } } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/CoordinateFile.java0000644000000000000000000001747511531212746023335 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; import driftwood.gui.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * CoordinateFile is a lightweight container for a group * of Models that have some relationship to one another. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Wed Jun 11 11:15:15 EDT 2003 */ public class CoordinateFile //extends ... implements ... { //{{{ Constants /** The first thing in the file: user modifications */ public static final String SECTION_USER_MOD = "USER MOD"; //}}} //{{{ Variable definitions //################################################################################################## /** The collection of Models that belong to this group */ ArrayList models; Collection unmodModels = null; ArrayList headers; Collection unmodHeaders = null; int pdbv2atoms = 0; SecondaryStructure secondaryStructure = new SecondaryStructure.AllCoil(); Disulfides disulfides = new Disulfides.NoDisulfides(); File file = null; String idCode = null; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public CoordinateFile() { models = new ArrayList(); headers = new ArrayList(); } //}}} //{{{ getModels, getFirstModel //################################################################################################## /** Returns an unmodifiable view of the models in this group */ public Collection getModels() { if(unmodModels == null) unmodModels = Collections.unmodifiableCollection(models); return unmodModels; } /** * Returns the first model. * @throws NoSuchElementException if no models are present. */ public Model getFirstModel() { Iterator iter = models.iterator(); return (Model)iter.next(); } //}}} //{{{ add, replace, remove //################################################################################################## /** Adds a model to this group */ public void add(Model m) { if(m == null) throw new NullPointerException("Cannot add a null model"); models.add(m); } /** Replaces one model with another, or just adds the new model if the old one wasn't present. */ public void replace(Model oldModel, Model newModel) { if(newModel == null) throw new NullPointerException("Cannot add a null model"); int idx = models.indexOf(oldModel); if(idx == -1) models.add(newModel); else models.set(idx, newModel); } public void remove(Model oldModel) { models.remove(oldModel); } //}}} //{{{ addHeader, getHeaders //################################################################################################## /** * Adds a line of header information to the list of data * associated with this group of models. * @param section which block of info this line belongs in. * @param header the actual header data. */ public void addHeader(String section, String header) { if(SECTION_USER_MOD.equals(section)) headers.add(0, header); else headers.add(header); } /** Returns an unmodifiable view of all the headers in this group */ public Collection getHeaders() { if(unmodHeaders == null) unmodHeaders = Collections.unmodifiableCollection(headers); return unmodHeaders; } //}}} //{{{ get/set File, IdCode //################################################################################################## /** Returns the file from which these models were loaded. May be null. */ public File getFile() { return file; } /** Sets the file from which these models were loaded. May be null. */ public void setFile(File file) { this.file = file; } /** Returns the ID code associated with these models (e.g. PDB ID). May be null. */ public String getIdCode() { return idCode; } /** Sets the ID code associated with these models (e.g. PDB ID). May be null. */ public void setIdCode(String idCode) { this.idCode = idCode; } //}}} //{{{ get/setSecondaryStructure //################################################################################################## // These are associated with a CoordinateFile rather than with a Model // because they're defined at the file level for PDB and mmCIF. /** Default assignment marks everything as COIL. */ public SecondaryStructure getSecondaryStructure() { return this.secondaryStructure; } public void setSecondaryStructure(SecondaryStructure s) { this.secondaryStructure = s; } //}}} //{{{ get/setDisulfides //################################################################################################## // These are associated with a CoordinateFile rather than with a Model // because they're defined at the file level for PDB and mmCIF. /** Default assignment marks everything as COIL. */ public Disulfides getDisulfides() { return this.disulfides; } public void setDisulfides(Disulfides d) { this.disulfides = d; } // Despite the (true) statement above about SSBOND records being associated // with CoordinateFiles, not Models, I found it nice to at least have the // *option* to "deploy" this information to Models so other classes dealing // with the usual Model/ModelState/Residue moldb2 framework can make use of // it. I imagine this is terrible practice in some way, so if somebody reads // this comment and has a better suggestion, I'm all ears! -- DAK 090922 /** Lends the Disulfides object held here to all Models. */ public void deployDisulfidesToModels() { for(Iterator iter = models.iterator(); iter.hasNext(); ) { Model model = (Model) iter.next(); model.setDisulfides(disulfides); } } //}}} //{{{ get/setPdbv23Count public void setPdbv2Count(int count) { pdbv2atoms = count; //System.out.println("coord file pdbv2atoms set to: "+pdbv2atoms); } public int getPdbv2Count() { return pdbv2atoms; } //}}} //{{{ getFileFilters public static SuffixFileFilter getCoordFileFilter() { SuffixFileFilter allFilter = new SuffixFileFilter("Structural (PDB or mmCIF) files"); allFilter.addSuffix(".pdb"); allFilter.addSuffix(".xyz"); allFilter.addSuffix(".ent"); allFilter.addSuffix(".cif"); allFilter.addSuffix(".mmcif"); allFilter.addPattern(".*\\.pdb.*\\.gz"); allFilter.addSuffix(".xyz.gz"); allFilter.addSuffix(".ent.gz"); allFilter.addSuffix(".cif.gz"); allFilter.addSuffix(".mmcif.gz"); return allFilter; } public static SuffixFileFilter getPdbFileFilter() { SuffixFileFilter pdbFilter = new SuffixFileFilter("Protein Data Bank (PDB) files"); pdbFilter.addSuffix(".pdb"); pdbFilter.addSuffix(".xyz"); pdbFilter.addSuffix(".ent"); pdbFilter.addPattern(".*\\.pdb.*\\.gz"); pdbFilter.addSuffix(".xyz.gz"); pdbFilter.addSuffix(".ent.gz"); return pdbFilter; } static public SuffixFileFilter getCifFileFilter() { SuffixFileFilter cifFilter = new SuffixFileFilter("mmCIF files"); cifFilter.addSuffix(".cif"); cifFilter.addSuffix(".mmcif"); cifFilter.addSuffix(".cif.gz"); cifFilter.addSuffix(".mmcif.gz"); return cifFilter; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/PdbDisulfides.java0000644000000000000000000000530111531212746023150 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * PdbDisulfides returns disulfide bond assignments * based on the PDB file SSBOND records. * It was basically copied from IWD's PdbSecondaryStructure class. * *

Copyright (C) 2009 by Daniel A. Keedy. All rights reserved. *
Begun on Tue Sep 2 2009 */ class PdbDisulfides extends Disulfides { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public PdbDisulfides(Collection headers) { super(); for(Iterator iter = headers.iterator(); iter.hasNext(); ) { String s = (String) iter.next(); try { if(s.startsWith("SSBOND ")) add(forDisulfide(s)); } catch(NumberFormatException ex) { System.err.println("Non-numeric sequence numbers: "+s); } catch(IndexOutOfBoundsException ex) { System.err.println("PDB record too short: "+s); } } } //}}} //{{{ forDisulfide //############################################################################## // This can throw NumberFormatException (for non-numeric data) // and IndexOutOfBoundsException, for lines that are too short. /** @param s a PDB "SSBOND" record */ Disulfide forDisulfide(String s) throws NumberFormatException { // "SSBOND 1 CYS A 31 CYS A 73 " // "SSBOND *** CYS A 190 CYS C 190" Disulfide d = new Disulfide(); d.initChainId = s.substring(15,16); d.endChainId = s.substring(29,30); if(!d.initChainId.equals(d.endChainId)) d.type = Disulfide.INTER_CHAIN; else //if(d.initChainId.equals(d.endChainId)) d.type = Disulfide.INTRA_CHAIN; d.initSeqNum = Integer.parseInt(s.substring(17,21).trim()); d.endSeqNum = Integer.parseInt(s.substring(31,35).trim()); d.initICode = s.substring(21,22); if(s.length() >= 36) // if space, may be truncated in non-std file d.endICode = s.substring(35,36); else d.endICode = " "; // (default anyway) return d; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/Neighborhood.java0000644000000000000000000001113511531212746023040 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * Neighborhood is a local region of a macromolecular structure. * *

Copyright (C) 2010 by Daniel A. Keedy. All rights reserved. *
Begun on Tue Mar 16 2010 */ public class Neighborhood //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## Residue cen; Model model; double dist = Double.NaN; int nPrev = -1, nNext = -1; //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a structural neighborhood containing the specified central residue * plus all residues within a specified number of residues along the sequence. * @param cen the central residue of the structural neighborhood * @param model a model containing the central residue * @param nPrev number of residues to include backwards (N-ward) * @param nNext number of residues to include forwards (C-ward) */ public Neighborhood(Residue cen, Model model, int nPrev, int nNext) throws NullPointerException { if(cen == null) throw new NullPointerException("Must provide a non-null residue"); if(model == null) throw new NullPointerException("Must provide a non-null model"); this.cen = cen; this.model = model; this.nPrev = nPrev; this.nNext = nNext; } /** * Creates a structural neighborhood containing the specified central residue * plus all residues within a specified distance (including sidechain atoms). * @param cen the central residue of the structural neighborhood * @param model a model containing the central residue * @param dist maximum allowed distance from the central residue */ public Neighborhood(Residue cen, Model model, double dist) throws NullPointerException { if(cen == null) throw new NullPointerException("Must provide a non-null residue"); if(model == null) throw new NullPointerException("Must provide a non-null model"); this.cen = cen; this.model = model; this.dist = dist; } //}}} //{{{ getMembers //################################################################################################## /** * Returns all residues in this structural neighborhood. * How that is defined (distance-based vs. sequence-based) * is dictated by the constructor originally used. */ public ArrayList getMembers() { ArrayList neighbors = new ArrayList(); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(!Double.isNaN(dist)) // distance-based { try { if(areWithin(res, cen, model, dist)) neighbors.add(res); } catch(AtomException ex) { System.err.println("error determining if " +res+" is within "+dist+"A of "+cen); } } else if(nPrev != -1 && nNext != -1) // sequence-based { int d = Math.abs(res.getSequenceInteger() - cen.getSequenceInteger()); if(d <= nPrev && d <= nNext) neighbors.add(res); } } return neighbors; } //}}} ////{{{ areWithin //############################################################################## /** * Returns true if any atom in the first residue is sufficiently close * to any atom in the second residue, including sidechain atoms. * @param d threshold distance for any atom-atom pair between the two residues */ public static boolean areWithin(Residue r1, Residue r2, Model m, double d) throws AtomException { ModelState s = m.getState(); for(Iterator iter1 = r1.getAtoms().iterator(); iter1.hasNext(); ) { AtomState a1 = s.get( (Atom) iter1.next() ); for(Iterator iter2 = r2.getAtoms().iterator(); iter2.hasNext(); ) { AtomState a2 = s.get( (Atom) iter2.next() ); if(a1.distance(a2) < d) return true; } } return false; } //}}} }//class king-2.21.120420/driftwood/src/driftwood/moldb2/AtomException.java0000644000000000000000000000133411531212746023210 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * AtomException is thrown when an Atom cannot be found, * or when the appropriate resource for an Atom cannot be located. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Jun 9 16:42:31 EDT 2003 */ public class AtomException extends Exception { /** * Constructor */ public AtomException(String msg) { super(msg); } }//class king-2.21.120420/driftwood/src/driftwood/moldb2/ResidueException.java0000644000000000000000000000135111531212746023707 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.moldb2; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * ResidueException is thrown when a Residue cannot be found, * or when the appropriate resource for a Residue cannot be located. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Jun 9 16:42:31 EDT 2003 */ public class ResidueException extends Exception { /** * Constructor */ public ResidueException(String msg) { super(msg); } }//class king-2.21.120420/driftwood/src/driftwood/r3/0000755000000000000000000000000011744306102016726 5ustar rootrootking-2.21.120420/driftwood/src/driftwood/r3/MutableTuple3.java0000644000000000000000000000170511531212754022265 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.r3; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * MutableTuple3 is a Tuple3 whose coordinates can be updated. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Fri Mar 28 10:00:01 EST 2003 */ public interface MutableTuple3 extends Tuple3 { /** Assigns a value to the first element of this tuple */ public void setX(double x); /** Assigns a value to the second element of this tuple */ public void setY(double y); /** Assigns a value to the third element of this tuple */ public void setZ(double z); /** Assigns a value to all the elements of this tuple */ public void setXYZ(double x, double y, double z); }//class king-2.21.120420/driftwood/src/driftwood/r3/PrincipleAxes.java0000644000000000000000000003057311531212754022352 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.r3; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.*; import Jama.*; //}}} /** * PrincipleAxes uses Principle Components Analysis * and the JAMA matrix libraries to calculate the principle components of * a set of 3-D points. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Mon Apr 26 15:13:42 EDT 2004 */ public class PrincipleAxes //extends ... implements ... { //{{{ Constants //}}} //{{{ CLASS: Sortable //############################################################################## /** Used for sorting eigenvectors. */ static private class Sortable implements Comparable { final public double value; final public int index; public Sortable(double value, int index) { this.value = value; this.index = index; } // Sorts largest first, not smallest public int compareTo(Object o) { Sortable that = (Sortable) o; if(this.value < that.value) return 1; else if(this.value > that.value) return -1; else return 0; } } //}}} //{{{ Variable definitions //############################################################################## /** Principle component vectors in columns; greatest in col 0 */ Matrix principleComponents; /** Weights of the components, sorted in the same order */ double[] pcaEigenvalues; /** Transpose/inverse (same thing) of principleComponents */ Transform pcaTransform; /** The minimum and maximum (x,y,z) values for input data in transformed coordinates */ Triple boxMin, boxMax; //}}} //{{{ Constructor(s) //############################################################################## /** * Compute the principle axes of a collection of Tuple3s. */ public PrincipleAxes(Collection data) { super(); // Do principle components analysis Matrix features = packTuples(data); Matrix cov = covariance(features); EigenvalueDecomposition eig = cov.eig(); this.pcaEigenvalues = new double[3]; this.principleComponents = sortEigenvectors(eig, pcaEigenvalues); // Form rotation matrix for going from Cartesian coordinates // to coordinates with the PCA as a basis set this.pcaTransform = new Transform().likeMatrix( principleComponents.get(0,0), principleComponents.get(1,0), principleComponents.get(2,0), principleComponents.get(0,1), principleComponents.get(1,1), principleComponents.get(2,1), principleComponents.get(0,2), principleComponents.get(1,2), principleComponents.get(2,2) ); // Calculate bounding box for rotated points this.boxMin = new Triple( Double.MAX_VALUE, Double.MAX_VALUE, Double.MAX_VALUE); this.boxMax = new Triple(-Double.MAX_VALUE, -Double.MAX_VALUE, -Double.MAX_VALUE); Triple work = new Triple(); for(Iterator iter = data.iterator(); iter.hasNext(); ) { Tuple3 t = (Tuple3) iter.next(); pcaTransform.transform(t, work); boxMin.setX(Math.min(boxMin.getX(), work.getX())); boxMin.setY(Math.min(boxMin.getY(), work.getY())); boxMin.setZ(Math.min(boxMin.getZ(), work.getZ())); boxMax.setX(Math.max(boxMax.getX(), work.getX())); boxMax.setY(Math.max(boxMax.getY(), work.getY())); boxMax.setZ(Math.max(boxMax.getZ(), work.getZ())); } } //}}} //{{{ getTransform, getAxes, getLengths //############################################################################## /** * Will transform coordinates from the input space to PCA space. * This is a pure rotation, with no scaling, translation, or shearing. */ public Transform getTransform() { return new Transform().like(pcaTransform); } /** Returns the 3 principle components as normalized vectors, with the major one first. */ public Tuple3[] getAxes() { Triple[] out = new Triple[3]; out[0] = new Triple(principleComponents.get(0,0), principleComponents.get(1,0), principleComponents.get(2,0)); out[1] = new Triple(principleComponents.get(0,1), principleComponents.get(1,1), principleComponents.get(2,1)); out[2] = new Triple(principleComponents.get(0,2), principleComponents.get(1,2), principleComponents.get(2,2)); return out; } /** Returns the relative lengths of the components (that is, the eigenvalues), sorted in descending order. */ public double[] getLengths() { return (double[]) pcaEigenvalues.clone(); } //}}} //{{{ getKinCenter, getKinSpan //############################################################################## /** Returns the center of the PCA bounding box in Cartesian coords. */ public Tuple3 getKinCenter() { // Compute box center and backtranslate to Cartesian coords Matrix center = new Matrix(3,1); center.set(0, 0, (boxMax.getX()+boxMin.getX())/2); center.set(1, 0, (boxMax.getY()+boxMin.getY())/2); center.set(2, 0, (boxMax.getZ()+boxMin.getZ())/2); center = principleComponents.times(center); return new Triple(center.get(0,0), center.get(1,0), center.get(2,0)); } /** Returns the (Cartesian space) length of the longest side of the (PCA space) bounding box. */ public double getKinSpan() { return boxMax.getX() - boxMin.getX(); } //}}} //{{{ getKinView //############################################################################## /** * Returns a preformatted kinemage view that will ensure all the points * are visible and that their least significant principle component * is aligned with the viewing axis. */ public String getKinView(String viewID, String viewLabel) { DecimalFormat df = driftwood.util.Strings.usDecimalFormat("0.0###"); StringBuffer out = new StringBuffer(); out.append("@").append(viewID).append("viewid {").append(viewLabel).append("}\n"); // Compute span and z-slab double span = 1.05 * getKinSpan(); // largest side double zslab = 200; // as deep as it is wide out.append("@").append(viewID).append("span ").append(df.format(span)).append("\n"); out.append("@").append(viewID).append("zslab ").append(df.format(zslab)).append("\n"); // Compute box center and backtranslate to Cartesian coords Tuple3 center = getKinCenter(); out.append("@").append(viewID).append("center ").append(df.format(center.getX())); out.append(" ").append(df.format(center.getY())); out.append(" ").append(df.format(center.getZ())).append("\n"); // Write out transpose of transformation matrix (== original PCA matrix) out.append("@").append(viewID).append("matrix"); for(int r = 0; r < 3; r++) for(int c = 0; c < 3; c++) out.append(" ").append(df.format(principleComponents.get(r,c))); out.append("\n"); return out.toString(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ packTuples //############################################################################## /** * Takes a Collection of Tuple3s and packs them into the rows of * a Matrix, suitable for using with covariance(). */ static Matrix packTuples(Collection data) { int rows = data.size(); Matrix out = new Matrix(rows, 3); int r = 0; for(Iterator iter = data.iterator(); iter.hasNext(); r++) { Tuple3 t = (Tuple3) iter.next(); out.set(r, 0, t.getX()); out.set(r, 1, t.getY()); out.set(r, 2, t.getZ()); } return out; } //}}} //{{{ covariance //############################################################################## /** * Given a matrix where the features (data points) are stored as rows, * calculate the covariance matrix. * The covariance matrix is square, and equal in dimension to the number of * columns in the input data. */ static Matrix covariance(Matrix data) { int rows = data.getRowDimension(), cols = data.getColumnDimension(); // Calculate the mean and subtract it from each element double mean[] = new double[cols]; for(int r = 0; r < rows; r++) // sum over rows and cols for(int c = 0; c < cols; c++) mean[c] += data.get(r, c); for(int c = 0; c < cols; c++) // divide by number of rows mean[c] /= rows; Matrix adjusted = new Matrix(rows, cols); for(int r = 0; r < rows; r++) // subtract it out for(int c = 0; c < cols; c++) adjusted.set(r, c, data.get(r, c) - mean[c]); // The mean of adjusted in each column is now zero // Calculate the covariance matrix Matrix cov = adjusted.transpose().times(adjusted); cov.timesEquals(1.0 / rows); return cov; } //}}} //{{{ sortEigenvectors //############################################################################## /** * Given an eigenvalue decomposition with real eigenvalues, sort the * eigenvectors by the ascending order of their eigenvalues. *

I'm pretty sure the Jama always sorts the eigenvectors for symmetric * matrices anyway, but that's from a quick reading of the source code * and not from the javadocs. * (Jama sorts in ascending order, though.) * @param eigenvals will be overwritten with sorted eigenvalues * @return a sorted version of the EigenvalueDecomposition matrix V, * with the most significant principle component in the first column * and the least significant one in the last column. */ static Matrix sortEigenvectors(EigenvalueDecomposition eig, double[] eigenvals) { Matrix d = eig.getD(); Matrix v = eig.getV(); int rows = v.getRowDimension(), cols = v.getColumnDimension(); Sortable[] sort = new Sortable[cols]; for(int c = 0; c < cols; c++) sort[c] = new Sortable(d.get(c, c), c); Arrays.sort(sort); Matrix v2 = new Matrix(rows, cols); for(int c = 0; c < cols; c++) { eigenvals[c] = sort[c].value; for(int r = 0; r < rows; r++) v2.set(r, c, v.get(r, sort[c].index)); } return v2; } //}}} //{{{ main - for testing //############################################################################## /*public static void main(String[] args) { try { ArrayList data = new ArrayList(); LineNumberReader in = new LineNumberReader(new InputStreamReader(System.in)); String s; while((s = in.readLine()) != null) { try { String[] line = Strings.explode(s, ' '); Triple t = new Triple( Double.parseDouble(line[0]), Double.parseDouble(line[1]), Double.parseDouble(line[2]) ); data.add(t); } catch(NumberFormatException ex) { System.err.println(ex.getMessage()); } catch(IndexOutOfBoundsException ex) { System.err.println(ex.getMessage()); } } //Matrix features = packTuples(data); //Matrix cov = covariance(features); //EigenvalueDecomposition eig = cov.eig(); //eig.getD().print(20, 8); //eig.getV().print(20, 8); //Matrix pca = sortEigenvectors(eig); //pca.print(20, 8); //pca.transpose().times(pca).print(20, 8); PrincipleAxes axes = new PrincipleAxes(data); System.out.println( axes.getKinView("", "PCA view") ); } catch(Exception ex) { ex.printStackTrace(); } }*/ //}}} }//class king-2.21.120420/driftwood/src/driftwood/r3/SuperPoser.java0000644000000000000000000002460211531212754021707 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.r3; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * SuperPoser provides the algorithms to superimpose * (part of) one protein structure on another. * Actually, you can use it for any set of 3-D points you want * to superposition, but protein C-alphas is most common. * *

Copyright (C) 2003-2006 by Ian W. Davis. All rights reserved. *
Begun on Mon Sep 15 10:04:36 EDT 2003 */ public class SuperPoser //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## int len; Triple[] ref; Triple[] mob; /** * This is just the default uniform (1.0) weighting. * Using non-uniform weights, especially zero, raises questions about * how to calculate the centroid, the RMSD, and the superposition itself. * Either these weren't addressed in the paper, or I didn't pick up on it; * either way, the old behavior was probably not correct. */ double[] w; Triple refCentroid; Triple mobCentroid; //}}} //{{{ Constructor(s) //############################################################################## public SuperPoser(Tuple3[] m1, Tuple3[] m2) { this(m1, 0, m2, 0, Math.max(m1.length, m2.length)); } /** * Creates a new superpositioner. * @param m1 the static or reference structure * @param off1 the index of the first point to use from m1 * @param m2 the rotating or mobile structure * @param off2 the index of the first point to use from m1 * @param l the number of points to use from m1 and m2 * @throws IllegalArgumentException if there aren't enough points in m1 or m2 */ public SuperPoser(Tuple3[] m1, int off1, Tuple3[] m2, int off2, int l) { super(); reset(m1, off1, m2, off2, l); } //}}} //{{{ reset //############################################################################## public void reset(Tuple3[] m1, Tuple3[] m2) { reset(m1, 0, m2, 0, Math.max(m1.length, m2.length)); } /** * Resets this superpositioner with new point sets. * Can save on object allocation if they're the same size * or smaller than before. * @param m1 the static or reference structure * @param off1 the index of the first point to use from m1 * @param m2 the rotating or mobile structure * @param off2 the index of the first point to use from m1 * @param l the number of points to use from m1 and m2 * @throws IllegalArgumentException if there aren't enough points in m1 or m2 */ public void reset(Tuple3[] m1, int off1, Tuple3[] m2, int off2, int l) { if(off1+l > m1.length || off2+l > m2.length) throw new IllegalArgumentException("Not enough points in m1 and/or m2"); int i; len = l; if(ref == null || ref.length < len) { ref = new Triple[len]; mob = new Triple[len]; w = new double[len]; for(i = 0; i < len; i++) { ref[i] = new Triple( m1[i+off1] ); mob[i] = new Triple( m2[i+off2] ); w[i] = 1.0; } } else { for(i = 0; i < len; i++) { ref[i].like( m1[i+off1] ); mob[i].like( m2[i+off2] ); w[i] = 1.0; } } refCentroid = calcCentroid(ref); mobCentroid = calcCentroid(mob); for(i = 0; i < len; i++) { ref[i].sub(refCentroid); mob[i].sub(mobCentroid); } } //}}} //{{{ get, set for Tuple3 //############################################################################## /** Retrieve the ith component of t: 1 = x, 2 = y, 3 = z. */ static private double get(Tuple3 t, int i) { switch(i) { case 1: return t.getX(); case 2: return t.getY(); case 3: return t.getZ(); default: throw new IllegalArgumentException("Index must be 1, 2, or 3"); } } /** Assign the ith component of t: 1 = x, 2 = y, 3 = z. */ static private void set(MutableTuple3 t, int i, double val) { switch(i) { case 1: t.setX(val); break; case 2: t.setY(val); break; case 3: t.setZ(val); break; default: throw new IllegalArgumentException("Index must be 1, 2, or 3"); } } //}}} //{{{ calcCentroid, calcRMSD //############################################################################## /** * Finds the centroid (average) of a set of points. * Only the first len points are considered. */ Triple calcCentroid(Triple[] m) { Triple c = new Triple(); for(int i = 0; i < len; i++) c.add(m[i]); c.mult(1.0/len); return c; } /** * Calculates the weighted root-mean-square deviation between the point sets. * The supplied transformation is applied to the the mobile set before calculating. */ public double calcRMSD(Transform R) { double rmsd = 0.0; Triple t = new Triple(); for(int i = 0; i < len; i++) { // We use transformVector() because mob and ref have both // had their centroids shifted to the origen already. R.transformVector(mob[i], t); t.sub(ref[i]); rmsd += w[i] * t.mag2(); } return Math.sqrt(rmsd / len); } //}}} //{{{ superpos //############################################################################## /** * Creates a transformation that will superimpose the mobile point set * onto the reference point set by the iterative method of McLachlan. *

See A. D. McLachlan, Acta Cryst (1982) A38, 871-873. * Nomenclature remains the same except that r is called "mob" here, * and b is called "ref". */ public Transform superpos() { // Declare all variables Transform V = new Transform(); // the special 3x3 matrix V (aka U) double v; // V11+V22+V33 Transform R = new Transform(); // the rotation matrix Transform X = new Transform(); // a working register for computation Triple gp = new Triple(); // the previous couple Triple g = new Triple(); // the couple double g2; // == g.mag2() Triple sp = new Triple(); // the previous path vector Triple s = new Triple(); // the path vector Triple l = new Triple(); // the unit rotation axis double theta; // the angle of rotation double G; // a magic number double H; // another magic number int i, j; // indices on [1,3]: x/y/z or matrix cell int n; // index on [0,len): point number int p; // index on [0,inf): cycle number // Equations for updating the residual, E, appear to be // either wrong or numerically unstable. // Thus, I ignore it and monitor |g| and theta instead. // Calculate starting V: Vij = sum[wn rin bjn] for(i = 1; i <= 3; i++) for(j = 1; j <= 3; j++) { double Vij = 0.0; for(n = 0; n < len; n++) Vij += w[n]*get(mob[n], i)*get(ref[n], j); V.set(i, j, Vij); } // Begin iterative approximation of correct rotation matrix for(p = 0; p < 18; p++) // limit to 18 cycles max (6 full iterations) { // Find the couple g g.setX( V.get(2,3) - V.get(3,2) ); g.setY( V.get(3,1) - V.get(1,3) ); g.setZ( V.get(1,2) - V.get(2,1) ); g2 = g.mag2(); // Calculate the path vector s and rotation axis l if(p % 3 == 0) s.like(g); else s.like(sp).mult(g2/gp.mag2()).add(g); gp.like(g); sp.like(s); l.like(s).unit(); // Calculate v, G, H, and theta v = V.get(1,1) + V.get(2,2) + V.get(3,3); G = g.dot(l); H = 0.0; for(i = 1; i <= 3; i++) for(j = 1; j <= 3; j++) H += get(l,i)*( v*(i==j?1:0) - 0.5*(V.get(i,j)+V.get(j,i)) )*get(l,j); theta = Math.toDegrees(Math.atan2(G, H)); // Update R and V if l is non-zero (it should be 1.0). // (If l were zero, we would get NaN transforms.) if(l.mag2() > 1e-12) { X.likeRotation(l, theta); R.premult(X); V.premult(X); } /* Print statistics * / double rmsd = calcRMSD(R, w); SoftLog.err.println("=== CYCLE "+(p+1)+" ==="); SoftLog.err.println("RMSD = "+rmsd); SoftLog.err.println("g^2 = "+g.mag2()); SoftLog.err.println("theta = "+theta); SoftLog.err.println("=== CYCLE "+(p+1)+" ==="); SoftLog.err.println(); /* Print statistics */ // Conditions for early termination: // (1) It's the third, sixth, ninth, etc. cycle. // (2) The couple or the rotation angle is small. if(p%3 == 2 && (g2 < 1e-12 || theta < 1e-6)) break; } // Set up the proper translations to make this work for points l.like(mobCentroid).neg(); // recycle l since we're done with it X.likeTranslation(l); R.postmult(X); // move centroid to origen first X.likeTranslation(refCentroid); R.premult(X); // move mob. centroid to ref. last return R; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/r3/Quaternion.java0000644000000000000000000002130211531212754021717 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.r3; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * Quaternion implements quaternions for describing 3-D rotations. * This implementation is intentionally bare-bones; more functions will be * added as needed. * *

Implementation is based on the public domain code in quat.c * from the VRPN project at UNC. * Said code is based on Warren Robinett's adapted version of Ken * Shoemake's code, as seen in Shoemake's 1985 SIGGRAPH paper. * Some of the code assumes a right-handed coordinate system * (as does the rest of this package), but I don't know what all that affects. * *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Fri Jan 12 16:26:02 EST 2007 */ public class Quaternion implements MutableTuple3 { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## protected double x; // imaginary (I) protected double y; // imaginary (J) protected double z; // imaginary (K) protected double w; // real / scalar //}}} //{{{ Constructor(s) //############################################################################## /** Constructs the identity quaternion, (0 0 0 1). */ public Quaternion() { this(0, 0, 0, 1); } /** Constructs a new quaternion with imaginary components x, y, z and real component w. */ public Quaternion(double x, double y, double z, double w) { super(); this.x = x; this.y = y; this.z = z; this.w = w; } //}}} //{{{ MutableTuple3: getX/Y/Z, setX/Y/Z //################################################################################################## /** Returns the first element of this tuple */ public double getX() { return x; } /** Returns the second element of this tuple */ public double getY() { return y; } /** Returns the third element of this tuple */ public double getZ() { return z; } /** Returns the fourth element of this tuple */ public double getW() { return w; } /** Assigns a value to the first element of this tuple */ public void setX(double x0) { x = x0; } /** Assigns a value to the second element of this tuple */ public void setY(double y0) { y = y0; } /** Assigns a value to the third element of this tuple */ public void setZ(double z0) { z = z0; } /** Assigns a value to the fourth element of this tuple */ public void setW(double w0) { w = w0; } /** Assigns a value to three elements of this tuple (w is unaffected). */ public void setXYZ(double x0, double y0, double z0) { x = x0; y = y0; z = z0; } /** Assigns a value to all elements of this tuple. */ public void setXYZW(double x0, double y0, double z0, double w0) { x = x0; y = y0; z = z0; w = w0; } //}}} //{{{ likeRotation //############################################################################## /** * Makes a quaternion from the given transform, assuming it represents a rotation. * No warranty if you apply this to a transform that's not a rotation! */ public Quaternion likeRotation(Transform t) { // q_from_row_matrix() double trace = t.m11 + t.m22 + t.m33; if(trace > 0.0) { double s = Math.sqrt(trace + 1.0); this.w = s * 0.5; s = 0.5 / s; // now s = 1 / sqrt(trace+1) this.x = (t.m23 - t.m32) * s; this.y = (t.m31 - t.m13) * s; this.z = (t.m12 - t.m21) * s; } else { int i = 1, j = 2, k = 3; if(t.m22 > t.m11) { i = 2; j = 3; k = 1; } if(t.m33 > t.get(i,i)) { i = 3; j = 1; k = 2; } double s = Math.sqrt( (t.get(i,i) - (t.get(j,j)+t.get(k,k))) + 1.0 ); double[] destQuat = new double[4]; // {dummy, x, y, z} destQuat[i] = s * 0.5; s = 0.5 / s; destQuat[j] = (t.get(i,j) + t.get(j,i)) * s; destQuat[k] = (t.get(i,k) + t.get(k,i)) * s; this.x = destQuat[1]; this.y = destQuat[2]; this.z = destQuat[3]; this.w = (t.get(j,k) - t.get(k,j)) * s; } return this; } //}}} //{{{ likeSlerp //############################################################################## /** * Spherical linear interpolation of unit quaternions, to smoothly blend * from one orientation matrix to another. * @param t when t = 0 you get start, when t = 1 you get end. * If t is not between 0 and 1, I don't know what you get! */ public Quaternion likeSlerp(Quaternion start, Quaternion end, double t) { // q_slerp() double cosOmega = start.getX()*end.getX() + start.getY()*end.getY() + start.getZ()*end.getZ() + start.getW()*end.getW(); // If the above dot product is negative, it would be better to // go between the negative of the initial and the final, so that // we take the shorter path. if(cosOmega < 0) { cosOmega = -cosOmega; start = new Quaternion(-start.getX(), -start.getY(), -start.getZ(), -start.getW()); } final double Q_EPSILON = 1e-10; double startScale, endScale; if( (1.0 + cosOmega) > Q_EPSILON ) { // usual case if( (1.0 - cosOmega) > Q_EPSILON ) { // usual case double omega = Math.acos(cosOmega); double sinOmega = Math.sin(omega); startScale = Math.sin((1.0 - t)*omega) / sinOmega; endScale = Math.sin(t*omega) / sinOmega; } else { // ends very close startScale = 1.0 - t; endScale = t; } this.setXYZW( startScale*start.getX() + endScale*end.getX(), startScale*start.getY() + endScale*end.getY(), startScale*start.getZ() + endScale*end.getZ(), startScale*start.getW() + endScale*end.getW() ); } else { // ends nearly opposite startScale = Math.sin((0.5 - t) * Math.PI); endScale = Math.sin(t * Math.PI); this.setXYZW( startScale*start.getX() - endScale*start.getY(), startScale*start.getY() + endScale*start.getX(), startScale*start.getZ() - endScale*start.getW(), start.getZ() ); } return this; } //}}} //{{{ isNaN, equals, hashCode, toString //################################################################################################## /** Returns true iff one or more component is Not-A-Number */ public boolean isNaN() { return Double.isNaN(x) || Double.isNaN(y) || Double.isNaN(z) || Double.isNaN(w); } /** * Obeys the general contract of Object.equals(). * Two quaternions are equal if their x, y, z, and w coordinates are equal. * Two quaternions producing equivalent rotations may not be considered * equal, as they can have different coordinates. */ public boolean equals(Object o) { if(! (o instanceof Quaternion)) return false; else { Quaternion q = (Quaternion) o; return (x == q.x && y == q.y && z == q.z && w == q.w); } } /** * Obeys the general contract of Object.hashCode(). * Based on Colt's HashFunctions.java. */ public int hashCode() { // I stole this from Colt: // this avoids excessive hashCollisions // in the case values are of the form (1.0, 2.0, 3.0, ...) int b1 = Float.floatToIntBits((float)x*663608941.737f); int b2 = Float.floatToIntBits((float)y*663608941.737f); int b3 = Float.floatToIntBits((float)z*663608941.737f); int b4 = Float.floatToIntBits((float)w*663608941.737f); // The rotation of bits is my own idea return (b1 ^ (b2<<11 | b2>>>21) ^ (b3<<22 | b3>>>10) ^ b4); } /** * Prints (x, y, z, w) */ public String toString() { return "("+x+", "+y+", "+z+", "+w+")"; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/r3/Transform.java0000644000000000000000000006414111531212754021555 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.r3; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.Strings; //}}} /** * Transform describes an affine transformation * in three dimensions using homogenous coordinates, such that * any number of rotations, translations, scalings, shears, etc. * may be concatenated into a single matrix operation. * *

The resulting matrix M allows transformation of a column * vector x like this: Mx = x' * *

In full, we have:

[ r11  r12  r13  t14 ] [ x ]    [ x' ]
[ r21  r22  r23  t24 ] [ y ]    [ y' ]
[ r31  r32  r33  t34 ] [ z ] == [ z' ]
[  0    0    0    1  ] [ 1 ]    [ 1  ]
*
where the r## are elements that cause rotation and * the t## are elements that cause translation. The bottom * row can be modified to also allow calculation of perspective. * *

The above example shows transformation of a point; * points are represented as [ x y z 1 ]. Vectors, on the * other hand, are represented as [ x y z 0 ]. Thus, vectors * are rotated by such a transformation but are not translated, * because their meaning is not tied to a specific origin point. * *

Most functions return this, to facilitate chaining. * *

The appendix of the OpenGL Programming Guide is a good resource for * common matrices in 3-D graphics (including the frustum, not implemented here) * along with their inverses. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Mar 10 13:03:17 EST 2003 */ public class Transform //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## /** The elements of the transformation matrix */ protected double m11 = 1, m12 = 0, m13 = 0, m14 = 0, m21 = 0, m22 = 1, m23 = 0, m24 = 0, m31 = 0, m32 = 0, m33 = 1, m34 = 0, m41 = 0, m42 = 0, m43 = 0, m44 = 1; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructs a new identity transform. */ public Transform() { } //}}} //{{{ like //################################################################################################## /** Makes this Transform into a copy of t */ public Transform like(Transform t) { m11 = t.m11; m12 = t.m12; m13 = t.m13; m14 = t.m14; m21 = t.m21; m22 = t.m22; m23 = t.m23; m24 = t.m24; m31 = t.m31; m32 = t.m32; m33 = t.m33; m34 = t.m34; m41 = t.m41; m42 = t.m42; m43 = t.m43; m44 = t.m44; return this; } //}}} //{{{ likeIdentity //################################################################################################## /** Makes this Transform into the identity matrix (1 on diagonal, 0 off). */ public Transform likeIdentity() { return likeTranslation(0, 0, 0); } //}}} //{{{ likeTranslation //################################################################################################## /** Makes this Transform into a translation by (x,y,z) */ public Transform likeTranslation(double x, double y, double z) { m11 = 1; m12 = 0; m13 = 0; m14 = x; m21 = 0; m22 = 1; m23 = 0; m24 = y; m31 = 0; m32 = 0; m33 = 1; m34 = z; m41 = 0; m42 = 0; m43 = 0; m44 = 1; return this; } /** Makes this Transform into a translation by t */ public Transform likeTranslation(Tuple3 t) { return likeTranslation(t.getX(), t.getY(), t.getZ()); } //}}} //{{{ likeRotation //################################################################################################## /** * Makes this Transform into a rotation at the origin * by theta degrees around the axis defined by axisVector */ public Transform likeRotation(Tuple3 axisVector, double theta) { Triple axis = new Triple().like(axisVector).unit(); double a, b, c, radians, sin, cos, one_minus_cos; a = axis.x; b = axis.y; c = axis.z; radians = Math.toRadians(theta); sin = Math.sin(radians); cos = Math.cos(radians); one_minus_cos = 1.0 - cos; // This math was worked out VERY tediously by hand. // Keys to eliminating extra variables are: // 1. sum of squares of row/column = 1 // 2. cross prod of any two rows/cols is || to the third one // 3. B' x B = I (many entries are 0) // 3'. dot prod of any two rows/cols is 0 (equiv to note 3) m11 = a*a*one_minus_cos + cos; m12 = a*b*one_minus_cos - c*sin; m13 = a*c*one_minus_cos + b*sin; m14 = 0; m21 = a*b*one_minus_cos + c*sin; m22 = b*b*one_minus_cos + cos; m23 = b*c*one_minus_cos - a*sin; m24 = 0; m31 = a*c*one_minus_cos - b*sin; m32 = b*c*one_minus_cos + a*sin; m33 = c*c*one_minus_cos + cos; m34 = 0; m41 = 0; m42 = 0; m43 = 0; m44 = 1; return this; } /** * Makes this Transform into a rotation centered at axisFrom * by theta degrees around the axis defined between axisFrom and axisTo. */ public Transform likeRotation(Tuple3 axisFrom, Tuple3 axisTo, double theta) { Triple axis = new Triple().likeVector(axisFrom, axisTo).unit(); double a, b, c, x, y, z, radians, sin, cos, one_minus_cos; a = axis.x; b = axis.y; c = axis.z; x = axisFrom.getX(); y = axisFrom.getY(); z = axisFrom.getZ(); radians = Math.toRadians(theta); sin = Math.sin(radians); cos = Math.cos(radians); one_minus_cos = 1.0 - cos; // This math was worked out VERY tediously by hand. // Keys to eliminating extra variables are: // 1. sum of squares of row/column = 1 // 2. cross prod of any two rows/cols is || to the third one // 3. B' x B = I (many entries are 0) // 3'. dot prod of any two rows/cols is 0 (equiv to note 3) m11 = a*a*one_minus_cos + cos; m12 = a*b*one_minus_cos - c*sin; m13 = a*c*one_minus_cos + b*sin; m14 = x - (m11*x + m12*y + m13*z); m21 = a*b*one_minus_cos + c*sin; m22 = b*b*one_minus_cos + cos; m23 = b*c*one_minus_cos - a*sin; m24 = y - (m21*x + m22*y + m23*z); m31 = a*c*one_minus_cos - b*sin; m32 = b*c*one_minus_cos + a*sin; m33 = c*c*one_minus_cos + cos; m34 = z - (m31*x + m32*y + m33*z); m41 = 0; m42 = 0; m43 = 0; m44 = 1; return this; } //}}} //{{{ likeQuaternion //################################################################################################## /** Constructs a rotation matrix from a quaternion. */ public Transform likeQuaternion(Quaternion q) { // q_to_row_matrix() // For unit srcQuat, just set s = 2.0; or set xs = srcQuat[X] + // srcQuat[X], etc. double s = 2.0 / (q.getX()*q.getX() + q.getY()*q.getY() + q.getZ()*q.getZ() + q.getW()*q.getW()); double xs, ys, zs, wx, wy, wz, xx, xy, xz, yy, yz, zz; xs = q.getX() * s; ys = q.getY() * s; zs = q.getZ() * s; wx = q.getW() * xs; wy = q.getW() * ys; wz = q.getW() * zs; xx = q.getX() * xs; xy = q.getX() * ys; xz = q.getX() * zs; yy = q.getY() * ys; yz = q.getY() * zs; zz = q.getZ() * zs; this.m11 = 1.0 - (yy + zz); this.m12 = xy + wz; this.m13 = xz - wy; this.m14 = 0.0; this.m21 = xy - wz; this.m22 = 1.0 - (xx + zz); this.m23 = yz + wx; this.m24 = 0.0; this.m31 = xz + wy; this.m32 = yz - wx; this.m33 = 1.0 - (xx + yy); this.m34 = 0.0; this.m41 = 0.0; this.m42 = 0.0; this.m43 = 0.0; this.m44 = 1.0; return this; } //}}} //{{{ likeMatrix //################################################################################################## /** Makes this Transform into the specified matrix */ public Transform likeMatrix( double m11, double m12, double m13, double m21, double m22, double m23, double m31, double m32, double m33) { this.m11 = m11; this.m12 = m12; this.m13 = m13; this.m14 = 0; this.m21 = m21; this.m22 = m22; this.m23 = m23; this.m24 = 0; this.m31 = m31; this.m32 = m32; this.m33 = m33; this.m34 = 0; m41 = 0; m42 = 0; m43 = 0; m44 = 1; return this; } //}}} //{{{ likeScale //################################################################################################## /** Makes this Transform into a uniform scaling (enlarge/shrink) by a factor f */ public Transform likeScale(double f) { m11 = f; m12 = 0; m13 = 0; m14 = 0; m21 = 0; m22 = f; m23 = 0; m24 = 0; m31 = 0; m32 = 0; m33 = f; m34 = 0; m41 = 0; m42 = 0; m43 = 0; m44 = 1; return this; } /** Makes this Transform into a non-uniform scaling (enlarge/shrink) */ public Transform likeScale(double x, double y, double z) { m11 = x; m12 = 0; m13 = 0; m14 = 0; m21 = 0; m22 = y; m23 = 0; m24 = 0; m31 = 0; m32 = 0; m33 = z; m34 = 0; m41 = 0; m42 = 0; m43 = 0; m44 = 1; return this; } //}}} //{{{ likePerspective //################################################################################################## /** * Sets up a matrix to perform perspective projection. * Uses the fact that homogeneous coordinates [x, y, z, w] * are transformed to the Cartesian coordinates [x/w, y/w, z/w]. * *

Therefore, we get a transformation like

[  d    0    0    0  ] [ x ]    [ x' ]
[  0    d    0    0  ] [ y ]    [ y' ]
[  0    0    d    0  ] [ z ] == [ z' ]
[  0    0   -1    d  ] [ 1 ]    [ w  ]
*

and then convert to Cartesian coordinates. This transform is * thus the same as multiplying each of x, y, and z by * the factor d/(d-z), where d is the distance * from the observer to the center of focus. * * Honestly, I'd rather just affect x and y (not z), because it means * we have to compensate when we go to define clipping planes. For that * reason, you probably want the front clipping plane to be at least d/2 * from the observer, i.e., max(z) < d/2. Certainly you get in trouble * any time that max(z) approaches d, because your scale factor then * approaches infinity... */ public Transform likePerspective(double d) { m11 = d; m12 = 0; m13 = 0; m14 = 0; m21 = 0; m22 = d; m23 = 0; m24 = 0; m31 = 0; m32 = 0; m33 = d; m34 = 0; m41 = 0; m42 = 0; m43 = -1; m44 = d; return this; } //}}} //{{{ premult, append //################################################################################################## /** Assigns this matrix the value of t*this */ public Transform premult(Transform t) { return append(t); } /** * Concatenates t onto this transform so that it happens "after" * all the currently included transformations. * Equivalent to premult(t) */ public Transform append(Transform t) { double r11, r12, r13, r14, r21, r22, r23, r24, r31, r32, r33, r34, r41, r42, r43, r44; r11 = t.m11*m11 + t.m12*m21 + t.m13*m31 + t.m14*m41; r12 = t.m11*m12 + t.m12*m22 + t.m13*m32 + t.m14*m42; r13 = t.m11*m13 + t.m12*m23 + t.m13*m33 + t.m14*m43; r14 = t.m11*m14 + t.m12*m24 + t.m13*m34 + t.m14*m44; r21 = t.m21*m11 + t.m22*m21 + t.m23*m31 + t.m24*m41; r22 = t.m21*m12 + t.m22*m22 + t.m23*m32 + t.m24*m42; r23 = t.m21*m13 + t.m22*m23 + t.m23*m33 + t.m24*m43; r24 = t.m21*m14 + t.m22*m24 + t.m23*m34 + t.m24*m44; r31 = t.m31*m11 + t.m32*m21 + t.m33*m31 + t.m34*m41; r32 = t.m31*m12 + t.m32*m22 + t.m33*m32 + t.m34*m42; r33 = t.m31*m13 + t.m32*m23 + t.m33*m33 + t.m34*m43; r34 = t.m31*m14 + t.m32*m24 + t.m33*m34 + t.m34*m44; r41 = t.m41*m11 + t.m42*m21 + t.m43*m31 + t.m44*m41; r42 = t.m41*m12 + t.m42*m22 + t.m43*m32 + t.m44*m42; r43 = t.m41*m13 + t.m42*m23 + t.m43*m33 + t.m44*m43; r44 = t.m41*m14 + t.m42*m24 + t.m43*m34 + t.m44*m44; m11 = r11; m12 = r12; m13 = r13; m14 = r14; m21 = r21; m22 = r22; m23 = r23; m24 = r24; m31 = r31; m32 = r32; m33 = r33; m34 = r34; m41 = r41; m42 = r42; m43 = r43; m44 = r44; return this; } //}}} //{{{ postmult, prepend //################################################################################################## /** Assigns this matrix the value of this*t */ public Transform postmult(Transform t) { return prepend(t); } /** * Concatenates t onto this transform so that it happens "before" * all the currently included transformations. * Equivalent to postmult(t) */ public Transform prepend(Transform t) { double r11, r12, r13, r14, r21, r22, r23, r24, r31, r32, r33, r34, r41, r42, r43, r44; r11 = m11*t.m11 + m12*t.m21 + m13*t.m31 + m14*t.m41; r12 = m11*t.m12 + m12*t.m22 + m13*t.m32 + m14*t.m42; r13 = m11*t.m13 + m12*t.m23 + m13*t.m33 + m14*t.m43; r14 = m11*t.m14 + m12*t.m24 + m13*t.m34 + m14*t.m44; r21 = m21*t.m11 + m22*t.m21 + m23*t.m31 + m24*t.m41; r22 = m21*t.m12 + m22*t.m22 + m23*t.m32 + m24*t.m42; r23 = m21*t.m13 + m22*t.m23 + m23*t.m33 + m24*t.m43; r24 = m21*t.m14 + m22*t.m24 + m23*t.m34 + m24*t.m44; r31 = m31*t.m11 + m32*t.m21 + m33*t.m31 + m34*t.m41; r32 = m31*t.m12 + m32*t.m22 + m33*t.m32 + m34*t.m42; r33 = m31*t.m13 + m32*t.m23 + m33*t.m33 + m34*t.m43; r34 = m31*t.m14 + m32*t.m24 + m33*t.m34 + m34*t.m44; r41 = m41*t.m11 + m42*t.m21 + m43*t.m31 + m44*t.m41; r42 = m41*t.m12 + m42*t.m22 + m43*t.m32 + m44*t.m42; r43 = m41*t.m13 + m42*t.m23 + m43*t.m33 + m44*t.m43; r44 = m41*t.m14 + m42*t.m24 + m43*t.m34 + m44*t.m44; m11 = r11; m12 = r12; m13 = r13; m14 = r14; m21 = r21; m22 = r22; m23 = r23; m24 = r24; m31 = r31; m32 = r32; m33 = r33; m34 = r34; m41 = r41; m42 = r42; m43 = r43; m44 = r44; return this; } //}}} //{{{ transform, transformVector //################################################################################################## /** * Transforms the given MutableTuple3 in place, treating it like a point. * The difference between transforming points and vectors is that points * are affected by the translation components of a Transform, whereas * vectors can be rotated and scaled but are not translated. * In other words, every point must be defined in relation to an origin, * whether implicit or explicit, but vectors are independent of the * definition of the origin. * @return p, the transformed point (for convenience) */ public MutableTuple3 transform(MutableTuple3 p) { return transform(p, p); } /** * Transforms the given Tuple3 and places the result in pOut, treating it like a point. * @return pOut, the transformed point (for convenience) * @see #transform(MutableTuple3) */ public MutableTuple3 transform(Tuple3 pIn, MutableTuple3 pOut) { double x0, y0, z0, wH; x0 = pIn.getX(); y0 = pIn.getY(); z0 = pIn.getZ(); wH = m41*x0 + m42*y0 + m43*z0 + m44; pOut.setXYZ( (m11*x0 + m12*y0 + m13*z0 + m14) / wH, (m21*x0 + m22*y0 + m23*z0 + m24) / wH, (m31*x0 + m32*y0 + m33*z0 + m34) / wH); return pOut; } /** * Transforms the given MutableTuple3 in place, treating it like a vector. * @see #transform(MutableTuple3) */ public MutableTuple3 transformVector(MutableTuple3 v) { return transformVector(v, v); } /** * Transforms the given Tuple3 and places the result in vOut, treating it like a vector. * @see #transform(MutableTuple3) */ public MutableTuple3 transformVector(Tuple3 vIn, MutableTuple3 vOut) { double x0, y0, z0, wH; x0 = vIn.getX(); y0 = vIn.getY(); z0 = vIn.getZ(); wH = m44; vOut.setXYZ( (m11*x0 + m12*y0 + m13*z0) / wH, (m21*x0 + m22*y0 + m23*z0) / wH, (m31*x0 + m32*y0 + m33*z0) / wH); return vOut; } //}}} //{{{ orthonormalize //################################################################################################## /** * Adjusts rotation components of the matrix to ensure that * geometry is preserved -- ie, that there are no shear/warp * aspects to the transformation. *
See http://www.makegames.com/3drotation/. * *

R is special orthogonal (I'll trust their math): *

    *
  • R R' = I (R times its transpose is identity)
  • *
  • det R = 1 (determinant of R equals 1)
  • *
* *

"A more helpful set of properties is provided by Michael E. Pique in Graphics Gems (Glassner, Academic Press, 1990): *

    *
  1. R is normalized: the squares of the elements in any row or column sum to 1.
  2. *
  3. R is orthogonal: the dot product of any pair of rows or any pair of columns is 0.
  4. *
  5. The rows of R represent the coordinates in the original space of unit vectors along the coordinate axes of the rotated space.
  6. *
  7. The columns of R represent the coordinates in the rotated space of unit vectors along the axes of the original space."
  8. *
* *

Here I follow the procedure described above for building a "good" rotation matrix (sort of), * but without using what they call a World Up vector, since we're in a molecule & that doesn't mean anything. */ public Transform orthonormalize() { // As per (3), create a vector for each row of the matrix Triple xAxis = new Triple(m11, m12, m13); Triple yAxis = new Triple(m21, m22, m23); Triple zAxis = new Triple(m31, m32, m33); // Normalize Z zAxis.unit(); // Let X = Y x Z xAxis.likeCross(yAxis, zAxis); xAxis.unit(); // Let Y = Z x X yAxis.likeCross(zAxis, xAxis); yAxis.unit(); m11 = xAxis.x; m12 = xAxis.y; m13 = xAxis.z; m21 = yAxis.x; m22 = yAxis.y; m23 = yAxis.z; m31 = zAxis.x; m32 = zAxis.y; m33 = zAxis.z; return this; } //}}} //{{{ isNaN //################################################################################################## /** * If this method returns true, then * one or more of the matrix elements is Not-A-Number, * and applying this transform to data will just * screw it up. */ public boolean isNaN() { return Double.isNaN(m11) || Double.isNaN(m12) || Double.isNaN(m13) || Double.isNaN(m14) || Double.isNaN(m21) || Double.isNaN(m22) || Double.isNaN(m23) || Double.isNaN(m24) || Double.isNaN(m31) || Double.isNaN(m32) || Double.isNaN(m33) || Double.isNaN(m34) || Double.isNaN(m41) || Double.isNaN(m42) || Double.isNaN(m43) || Double.isNaN(m44); } //}}} //{{{ get //############################################################################## /** Retrieve the matrix component at i,j (numbers start from 1). */ public double get(int i, int j) { String err = "Index must be 1, 2, 3, or 4"; switch(i) { case 1: switch(j) { case 1: return m11; case 2: return m12; case 3: return m13; case 4: return m14; default: throw new IllegalArgumentException(err); } case 2: switch(j) { case 1: return m21; case 2: return m22; case 3: return m23; case 4: return m24; default: throw new IllegalArgumentException(err); } case 3: switch(j) { case 1: return m31; case 2: return m32; case 3: return m33; case 4: return m34; default: throw new IllegalArgumentException(err); } case 4: switch(j) { case 1: return m41; case 2: return m42; case 3: return m43; case 4: return m44; default: throw new IllegalArgumentException(err); } default: throw new IllegalArgumentException(err); } } //}}} //{{{ set //############################################################################## /** Assign the matrix component at i,j (numbers start from 1). */ public void set(int i, int j, double val) { String err = "Index must be 1, 2, 3, or 4"; switch(i) { case 1: switch(j) { case 1: m11 = val; break; case 2: m12 = val; break; case 3: m13 = val; break; case 4: m14 = val; break; default: throw new IllegalArgumentException(err); } break; case 2: switch(j) { case 1: m21 = val; break; case 2: m22 = val; break; case 3: m23 = val; break; case 4: m24 = val; break; default: throw new IllegalArgumentException(err); } break; case 3: switch(j) { case 1: m31 = val; break; case 2: m32 = val; break; case 3: m33 = val; break; case 4: m34 = val; break; default: throw new IllegalArgumentException(err); } break; case 4: switch(j) { case 1: m41 = val; break; case 2: m42 = val; break; case 3: m43 = val; break; case 4: m44 = val; break; default: throw new IllegalArgumentException(err); } break; default: throw new IllegalArgumentException(err); } } //}}} //{{{ hashCode, equals //################################################################################################## /** Two transforms are equal if all their corresponding matrix entries are equal */ public boolean equals(Object o) { if(! (o instanceof Transform)) return false; Transform t = (Transform)o; return (m11 == t.m11 && m12 == t.m12 && m13 == t.m13 && m14 == t.m14 && m21 == t.m21 && m22 == t.m22 && m23 == t.m23 && m24 == t.m24 && m31 == t.m31 && m32 == t.m32 && m33 == t.m33 && m34 == t.m34); } /** Based on Triple.hashCode() */ public int hashCode() { long hash = Double.doubleToLongBits(m11) ^ Double.doubleToLongBits(m12) ^ Double.doubleToLongBits(m13) ^ Double.doubleToLongBits(m14) ^ Double.doubleToLongBits(m21) ^ Double.doubleToLongBits(m22) ^ Double.doubleToLongBits(m23) ^ Double.doubleToLongBits(m24) ^ Double.doubleToLongBits(m31) ^ Double.doubleToLongBits(m32) ^ Double.doubleToLongBits(m33) ^ Double.doubleToLongBits(m34); return (int)(hash ^ (hash >>> 32)); } //}}} //{{{ toString //################################################################################################## public String toString() { return "[ "+Strings.justifyLeft(Double.toString(m11),20)+" " +Strings.justifyLeft(Double.toString(m12),20)+" " +Strings.justifyLeft(Double.toString(m13),20)+" " +Strings.justifyLeft(Double.toString(m14),20)+" ]\n" +"[ "+Strings.justifyLeft(Double.toString(m21),20)+" " +Strings.justifyLeft(Double.toString(m22),20)+" " +Strings.justifyLeft(Double.toString(m23),20)+" " +Strings.justifyLeft(Double.toString(m24),20)+" ]\n" +"[ "+Strings.justifyLeft(Double.toString(m31),20)+" " +Strings.justifyLeft(Double.toString(m32),20)+" " +Strings.justifyLeft(Double.toString(m33),20)+" " +Strings.justifyLeft(Double.toString(m34),20)+" ]\n" +"[ "+Strings.justifyLeft(Double.toString(m41),20)+" " +Strings.justifyLeft(Double.toString(m42),20)+" " +Strings.justifyLeft(Double.toString(m43),20)+" " +Strings.justifyLeft(Double.toString(m44),20)+" ]\n"; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/r3/Triple.java0000644000000000000000000006142311536414272021045 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.r3; //import java.awt.*; import java.io.*; //import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import gnu.regexp.*; //}}} /** * Triple represents either a point in 3-space or a vector in 3-space. * This will no doubt confuse some people, but it works for me. * Functions that take Triples as parameters should make it clear when they are * interpretted as vectors and when they are interpretted as points. * *

Triples are mutable, so their values may change over time. * In particular, all of the mathematical operations (add, sub, scale, cross, etc.) alter * the coordinates of the calling object (but not those of the parameters). * Most functions that return a Triple merely return this Triple, but thus * allow for convenient "chaining" of function calls. * *

Warning! Some functions that take parameters (Tuple3, etc) are NOT safe to call * with this as a parameter. Those that are safe are marked as such. * *

Copyright (C) 2002 by Ian W. Davis. All rights reserved. *
Begun on Mon Sep 9 09:33:59 EDT 2002 */ public class Triple implements MutableTuple3, Serializable { //{{{ Variable definitions //################################################################################################## public double x; public double y; public double z; //}}} //{{{ Constructor(s) //################################################################################################## /** Creates a triple with the specified x, y, and z coordinates. */ public Triple(double x0, double y0, double z0) { x = x0; y = y0; z = z0; } /** Creates a triple with the the same x, y, and z coordinates as t */ public Triple(Tuple3 t) { x = t.getX(); y = t.getY(); z = t.getZ(); } /** Creates a triple at the origin. */ public Triple() { x = y = z = 0.0; } //}}} //{{{ like //################################################################################################## /** Assigns the coordinates of t to this Triple. A null value leaves coordinates unchanged. */ public Triple like(Tuple3 t) { if(t != null) { x = t.getX(); y = t.getY(); z = t.getZ(); } return this; } //}}} //{{{ MutableTuple3: getX/Y/Z, setX/Y/Z //################################################################################################## /** Returns the first element of this tuple */ public double getX() { return x; } /** Returns the second element of this tuple */ public double getY() { return y; } /** Returns the third element of this tuple */ public double getZ() { return z; } /** Assigns a value to the first element of this tuple */ public void setX(double x0) { x = x0; } /** Assigns a value to the second element of this tuple */ public void setY(double y0) { y = y0; } /** Assigns a value to the third element of this tuple */ public void setZ(double z0) { z = z0; } /** Assigns a value to all the elements of this tuple */ public void setXYZ(double x0, double y0, double z0) { x = x0; y = y0; z = z0; } //}}} //{{{ dot, cross, likeCross //################################################################################################## /** * Returns the vector dot product of this triple and v. * The dot product of A and B, A.B, is equal to |A||B|cos(theta), * where theta is the angle between vectors from the origin to A and B. */ public double dot(Tuple3 v) { // Dot product: d . e = d e cos(a) = dxex + dyey + dzez return x*v.getX() + y*v.getY() + z*v.getZ(); } /** * Assigns the vector cross product of this triple and v to this. * The cross product of A and B, AxB, is orthogonal to the plane defined by vectors * from the origin to A and B. Its direction (sign) is given by the right-hand rule. */ public Triple cross(Tuple3 v) { // Cross product: a x b = (aybz-azby, -axbz+azbx, axby-aybx) double x0 = y*v.getZ() - z*v.getY(); double y0 = z*v.getX() - x*v.getZ(); double z0 = x*v.getY() - y*v.getX(); x = x0; y = y0; z = z0; return this; } /** * Assigns the vector cross product of v1 and v2 to this: this = v1 x v2 * The cross product of A and B, AxB, is orthogonal to the plane defined by vectors * from the origin to A and B. Its direction (sign) is given by the right-hand rule. * Safe to execute on this. */ public Triple likeCross(Tuple3 v1, Tuple3 v2) { // Cross product: a x b = (aybz-azby, -axbz+azbx, axby-aybx) double x0 = v1.getY()*v2.getZ() - v1.getZ()*v2.getY(); double y0 = v1.getZ()*v2.getX() - v1.getX()*v2.getZ(); double z0 = v1.getX()*v2.getY() - v1.getY()*v2.getX(); x = x0; y = y0; z = z0; return this; } //}}} //{{{ mag, mag2, unit //################################################################################################## /** Returns the maginitude of a vector from the origin to this point. */ public double mag() { return Math.sqrt(x*x + y*y + z*z); } /** * Returns the squared maginitude of a vector from the origin to this point. * This is equivalent to the dot product of the vector with itself. */ public double mag2() { return x*x + y*y + z*z; } /** * Returns the maginitude of a vector from the origin to this point. * Safe to execute on this. */ static public double mag(Tuple3 t) { double x0 = t.getX(); double y0 = t.getY(); double z0 = t.getZ(); return Math.sqrt(x0*x0 + y0*y0 + z0*z0); } /** * Makes this vector one unit in length (magnitude) with the same directionality. * Returns (0, 0, 0) if this Triple is already (0, 0, 0). */ public Triple unit() { double mag = this.mag(); if(mag != 0.0) { x /= mag; y /= mag; z /= mag; } return this; } //}}} //{{{ mult, div, likeProd, likeQuot //################################################################################################## /** Multiplies (scales) this Triple by k. If k < 1, this vector is shortened; if k > 1, this vector is lengthened. */ public Triple mult(double k) { x *= k; y *= k; z *= k; return this; } /** Divides this Triple by k. */ public Triple div(double k) { x /= k; y /= k; z /= k; return this; } /** * Makes this vector a scaled version of v: this = k*v = [k*vx, k*vy, k*vz]. * Safe to execute on this. */ public Triple likeProd(double k, Tuple3 v) { x = k*v.getX(); y = k*v.getY(); z = k*v.getZ(); return this; } /** * Makes this vector a scaled version of v: this = v/k = [vx/k, vy/k, vz/k]. * Safe to execute on this. */ public Triple likeQuot(double k, Tuple3 v) { x = v.getX()/k; y = v.getY()/k; z = v.getZ()/k; return this; } //}}} //{{{ add, likeSum, sub, likeDiff, neg //################################################################################################## /** * Adds t to this Triple. * Safe to execute on this. */ public Triple add(Tuple3 t) { x += t.getX(); y += t.getY(); z += t.getZ(); return this; } /** * Assigns the sum of t1 and t2 to this Triple. * Safe to execute on this. */ public Triple likeSum(Tuple3 t1, Tuple3 t2) { x = t1.getX() + t2.getX(); y = t1.getY() + t2.getY(); z = t1.getZ() + t2.getZ(); return this; } /** * Subtracts t from this Triple. * Safe to execute on this. */ public Triple sub(Tuple3 t) { x -= t.getX(); y -= t.getY(); z -= t.getZ(); return this; } /** * Assigns the difference of t1 and t2 to this Triple: this = t1 - t2 * Safe to execute on this. */ public Triple likeDiff(Tuple3 t1, Tuple3 t2) { x = t1.getX() - t2.getX(); y = t1.getY() - t2.getY(); z = t1.getZ() - t2.getZ(); return this; } /** Negates this triple */ public Triple neg() { x = -x; y = -y; z = -z; return this; } //}}} //{{{ addMult //################################################################################################## /** * Adds k*t to this Triple. * Safe to execute on this. */ public Triple addMult(double k, Tuple3 t) { x += k * t.getX(); y += k * t.getY(); z += k * t.getZ(); return this; } //}}} //{{{ distance, sqDistance //################################################################################################## /** * Returns the distance between this triple and t. * Safe to execute on this. */ public double distance(Tuple3 t) { double dx, dy, dz; dx = x - t.getX(); dy = y - t.getY(); dz = z - t.getZ(); return Math.sqrt(dx*dx + dy*dy + dz*dz); } /** * Returns the distance between s and t. * Safe to execute on this. */ public static double distance(Tuple3 s, Tuple3 t) { double dx, dy, dz; dx = s.getX() - t.getX(); dy = s.getY() - t.getY(); dz = s.getZ() - t.getZ(); return Math.sqrt(dx*dx + dy*dy + dz*dz); } /** * Returns the square of the distance between this triple and t. Faster than distance(). * Safe to execute on this. */ public double sqDistance(Tuple3 t) { double dx, dy, dz; dx = x - t.getX(); dy = y - t.getY(); dz = z - t.getZ(); return (dx*dx + dy*dy + dz*dz); } /** * Returns the square of the distance between s and t. Faster than distance(). * Safe to execute on this. */ public static double sqDistance(Tuple3 s, Tuple3 t) { double dx, dy, dz; dx = s.getX() - t.getX(); dy = s.getY() - t.getY(); dz = s.getZ() - t.getZ(); return (dx*dx + dy*dy + dz*dz); } //}}} //{{{ likeMidpoint, angle //################################################################################################## /** * Assigns this point as half way between these triples * Safe to execute on this. */ public Triple likeMidpoint(Tuple3 t1, Tuple3 t2) { x = (t1.getX() + t2.getX()) / 2.0; y = (t1.getY() + t2.getY()) / 2.0; z = (t1.getZ() + t2.getZ()) / 2.0; return this; } /** * Finds the angle in degrees between two vectors (with tails at the origin) * Safe to execute on this. */ public double angle(Tuple3 t) { // acos returns NaN sometimes when we're // too close to an angle of 0 or 180 (if |dot/mag| > 1) double dot = this.dot(t); double ret = Math.toDegrees(Math.acos( dot / (this.mag() * mag(t)) )); if(Double.isNaN(ret)) ret = (dot>=0.0 ? 0.0 : 180.0); return ret; } /** * Returns the angle ABC, in degrees, from 0 to 180. * Safe to execute on this. */ public static double angle(Tuple3 a, Tuple3 b, Tuple3 c) { // Too expensive! //Triple ba = new Triple().likeDiff(a, b), bc = new Triple().likeDiff(c, b); //return Math.toDegrees(Math.acos( ba.dot(bc) / (ba.mag() * bc.mag()) )); // Dot product: d . e = d e cos(a) = dxex + dyey + dzez double dot, mag; double dx, dy, dz; double ex, ey, ez; dx = a.getX() - b.getX(); dy = a.getY() - b.getY(); dz = a.getZ() - b.getZ(); ex = c.getX() - b.getX(); ey = c.getY() - b.getY(); ez = c.getZ() - b.getZ(); dot = dx*ex + dy*ey + dz*ez; mag = Math.sqrt((dx*dx + dy*dy + dz*dz) * (ex*ex + ey*ey + ez*ez)); // acos returns NaN sometimes when we're // too close to an angle of 0 or 180 (if |dot/mag| > 1) double ret = Math.toDegrees(Math.acos( dot / mag )); if(Double.isNaN(ret)) ret = (dot>=0.0 ? 0.0 : 180.0); return ret; } //}}} //{{{ dihedral //################################################################################################## /** * Returns the dihedral ABCD, in degrees, from -180 to 180. * Safe to execute on this. */ public static double dihedral(Tuple3 a, Tuple3 b, Tuple3 c, Tuple3 d) { /* Schematic for naming points (uppercase) and vectors (lowercase). Shown is a dihedral of 0 degress, with imaginary vectors u and v. ABCD are all in a plane; u, v, and f are in a plane orthogonal to it. ^ ^ v : : u : : C<-------B g / f /\ / \ e \/ \ D A */ /* This is too expensive in terms of creating objects, as it creates 3 new Triples, but it *is* easy to understand the code. Triple e, f, g, u, v; e = new Triple().likeDiff(b, a); f = new Triple().likeDiff(c, b); g = new Triple().likeDiff(d, c); u = e.cross(f); // overwrite 'e' b/c we don't need it anymore v = f.cross(g); // overwrite 'f' b/c we don't need it anymore double dihedral = u.angle(v); // Solve handedness problem: if(u.angle(g) > 90.0) dihedral = -dihedral; return dihedral; */ //e = new Triple().likeDiff(b, a); double ex, ey, ez; ex = b.getX() - a.getX(); ey = b.getY() - a.getY(); ez = b.getZ() - a.getZ(); //f = new Triple().likeDiff(c, b); double fx, fy, fz; fx = c.getX() - b.getX(); fy = c.getY() - b.getY(); fz = c.getZ() - b.getZ(); //g = new Triple().likeDiff(d, c); double gx, gy, gz; gx = d.getX() - c.getX(); gy = d.getY() - c.getY(); gz = d.getZ() - c.getZ(); // Cross product: a x b = (aybz-azby, -axbz+azbx, axby-aybx) //u = e.cross(f); double ux, uy, uz; ux = ey*fz - ez*fy; uy = ez*fx - ex*fz; uz = ex*fy - ey*fx; //v = f.cross(g); double vx, vy, vz; vx = fy*gz - fz*gy; vy = fz*gx - fx*gz; vz = fx*gy - fy*gx; // Dot product: d . e = d e cos(a) = dxex + dyey + dzez //double dihedral = u.angle(v); double dihedral, dot, mag; dot = ux*vx + uy*vy + uz*vz; mag = Math.sqrt((ux*ux + uy*uy + uz*uz) * (vx*vx + vy*vy + vz*vz)); dihedral = Math.toDegrees(Math.acos( dot / mag)); if(Double.isNaN(dihedral)) { // acos returns NaN sometimes when we're // too close to an angle of 0 or 180 (if |dot/mag| > 1) dihedral = (dot>=0.0 ? 0.0 : 180.0); } else { // Solve handedness problem: //if(u.angle(g) > 90.0) dihedral = -dihedral; dot = ux*gx + uy*gy + uz*gz; mag = Math.sqrt((ux*ux + uy*uy + uz*uz) * (gx*gx + gy*gy + gz*gz)); if(Math.toDegrees(Math.acos( dot / mag)) > 90.0) dihedral = -dihedral; } return dihedral; } //}}} //{{{ likeNormal, likeVector //################################################################################################## /** * Assigns this as the vector from one point to another. * Equivalent to likeDiff(ptTo, ptFrom) * Safe to execute on this. */ public Triple likeVector(Tuple3 ptFrom, Tuple3 ptTo) { x = ptTo.getX() - ptFrom.getX(); y = ptTo.getY() - ptFrom.getY(); z = ptTo.getZ() - ptFrom.getZ(); return this; } /** * Constructs a unit normal vector (relative to the origin) to plane ABC, * following the right-hand rule. * If a, b, and c are colinear, it produces a random vector orthogonal to the line. */ public Triple likeNormal(Tuple3 a, Tuple3 b, Tuple3 c) { double ax, ay, az, bx, by, bz, cx, cy, cz; ax = a.getX(); ay = a.getY(); az = a.getZ(); bx = b.getX(); by = b.getY(); bz = b.getZ(); cx = c.getX(); cy = c.getY(); cz = c.getZ(); // Convert points to vectors cx -= bx; cy -= by; cz -= bz; bx -= ax; by -= ay; bz -= az; // Do cross product this.x = by*cz - bz*cy; this.y = bz*cx - bx*cz; this.z = bx*cy - by*cx; this.unit(); // Look for a zero vector -- happens if a,b,c are colinear if(Math.abs(this.mag2() - 1.0) > 1e-10) { //System.err.println("driftwood.r3.Triple.likeNormal(): a/b/c nearly colinear"); this.setXYZ(bx, by, bz); this.likeOrthogonal(this); } return this; } //}}} //{{{ likeProjection //################################################################################################## /** * Assigns this as the projection of the first point * onto the vector from the second point to the third point. * Safe to execute on this. */ public Triple likeProjection(Tuple3 ptDrop, Tuple3 ptFrom, Tuple3 ptTo) { // Draw appropriate vectors Triple start_stop = new Triple().likeVector(ptFrom, ptTo); Triple start_drop = new Triple().likeVector(ptFrom, ptDrop); // Get distance from the start point to the intersection point // of the start->stop line and the perpendicular line double dist_start_corner = start_stop.dot(start_drop) / start_stop.mag(); // Move along the start->stop line by that amount to the "corner" Triple start_corner = new Triple(start_stop).unit().mult(dist_start_corner); Triple corner = new Triple().likeSum(ptFrom, start_corner); // Return modified version of this object this.setXYZ(corner.getX(), corner.getY(), corner.getZ()); return this; //{{{ Alternate, parametric method via Chris "'Topher" Williams: /* Wanna know b2, projection of b1 onto vector from a1 to a2. a1 = ptFrom a2 = ptTo A = [a2x-a1x , a2y-a1y , a2z-a1z] b1 = ptDrop b2 = [a1x+Ax*t , a1y+Ay*t , a1z+Az*t] B = [a1x+Ax*t-b1x, a1y+Ay*t-b1y, a1z+Az*t-b1z] Set A dot B = 0, then solve for t, the parametric variable. Then, b2 = a1+A*t Directly copied 'n' pasted code: def PerpToLine(a1, a2, b1): #Find the slope of line A in each direction, A is in vector notation A = [a1[0]-a2[0], a1[1]-a2[1], a1[2]-a2[2]] #Solve the parametric equations . . . t = (A[0]*(b1[0]-a1[0]) + A[1]*(b1[1]-a1[1]) + A[2]*(b1[2]-a1[2])) / ((A[0]**2)+(A[1]**2)+(A[2]**2)) # . . . and use the result to find the new point on the line b2 = [a1[0]+A[0]*t, a1[1]+A[1]*t, a1[2]+A[2]*t] #Find the distance to that point #distance = math.sqrt((b1[0]-b2[0])**2+(b1[1]-b2[1])**2+(b1[2]-b2[2])**2) return b2 FYI! */ //}}} } //}}} //{{{ likeOrthogonal + test //################################################################################################## /** * Makes this vector a unit vector orthogonal to the given vector, * although the orientation is pseudo-random. * *

FWIW, likeOrthogonal(v) == likeOrthogonal(v.neg()) * * Safe to execute on this. */ public Triple likeOrthogonal(Tuple3 v) { double a = v.getX(); double b = v.getY(); double c = v.getZ(); double aa = a*a; double bb = b*b; double cc = c*c; if(aa >= bb && aa >= cc) // a is biggest { if(bb >= cc) // b is second biggest but maybe 0 { this.z = 0; this.y = Math.sqrt( 1.0 / (1.0+bb/aa) ); this.x = -b / a * this.y; } else // c is second biggest but maybe 0 { this.y = 0; this.z = Math.sqrt( 1.0 / (1.0+cc/aa) ); this.x = -c / a * this.z; } } else if(bb >= aa && bb >= cc) // b is biggest { if(aa >= cc) // a is second biggest but maybe 0 { this.z = 0; this.x = Math.sqrt( 1.0 / (1.0+aa/bb) ); this.y = -a / b * this.x; } else // c is second biggest but maybe 0 { this.x = 0; this.z = Math.sqrt( 1.0 / (1.0+cc/bb) ); this.y = -c / b * this.z; } } else //(cc >= aa && cc >= bb) // c is biggest { if(aa >= bb) // a is second biggest but maybe 0 { this.y = 0; this.x = Math.sqrt( 1.0 / (1.0+aa/cc) ); this.z = -a / c * this.x; } else // b is second biggest but maybe 0 { this.x = 0; this.y = Math.sqrt( 1.0 / (1.0+bb/cc) ); this.z = -b / c * this.y; } } return this; } /* For testing likeOrthogonal() * / public static void main(String[] args) { Triple u = new Triple(), v = new Triple(); double maxdelta = 0; for(int i = 0; i < 100000; i++) { u.setXYZ(Math.random(), Math.random(), Math.random()); u.mult(1000*Math.random()); v.likeOrthogonal(u); double angle = u.angle(v); double delta = Math.abs(angle-90); maxdelta = Math.max(maxdelta, delta); if(delta > 1e-10) System.err.println(angle+": u="+u+"; v="+v); } System.err.println("Maximum deviation from orthogonality = "+maxdelta+" degrees."); } /* For testing likeOrthogonal() */ //}}} //{{{ isNaN, equals, hashCode, toString //################################################################################################## /** Returns true iff one or more component is Not-A-Number */ public boolean isNaN() { return Double.isNaN(x) || Double.isNaN(y) || Double.isNaN(z); } /** * Obeys the general contract of Object.equals(). * Two Tuple3's are equal if their x, y, and z coordinates are equal. */ public boolean equals(Object o) { if(! (o instanceof Tuple3)) return false; else { Tuple3 t = (Tuple3)o; if(x == t.getX() && y == t.getY() && z == t.getZ()) return true; else return false; } } /** * Obeys the general contract of Object.hashCode(). * Based on Colt's HashFunctions.java. */ public int hashCode() { // I stole this from Colt: // this avoids excessive hashCollisions // in the case values are of the form (1.0, 2.0, 3.0, ...) int b1 = Float.floatToIntBits((float)x*663608941.737f); int b2 = Float.floatToIntBits((float)y*663608941.737f); int b3 = Float.floatToIntBits((float)z*663608941.737f); // The rotation of bits is my own idea return (b1 ^ (b2<<11 | b2>>>21) ^ (b3<<22 | b3>>>10)); } /** * Prints (x, y, z) */ public String toString() { return "("+x+", "+y+", "+z+")"; } //}}} //{{{ format //################################################################################################## /** * Formats the triple using the supplied DecimalFormat object, * with the string sep between X and Y, and between Y and Z. */ public String format(DecimalFormat df, String sep) { return df.format(this.getX()) + sep + df.format(this.getY()) + sep + df.format(this.getZ()); } /** * Formats the triple using the supplied DecimalFormat * with a single space as the separator. */ public String format(DecimalFormat df) { return this.format(df, " "); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/r3/Tuple3HashFunction.java0000644000000000000000000000430611531212754023265 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.r3; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * Tuple3HashFunction allows for comparing any Tuple3s by the rules * used for Triple, even if the Tuple3s have a different natural equality test. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Thu May 5 13:22:15 EDT 2005 */ public class Tuple3HashFunction //extends ... implements ... { //{{{ Constructor(s) //############################################################################## public Tuple3HashFunction() { super(); } //}}} //{{{ areEqual, hashCodeFor //############################################################################## /** * Returns true iff o1 and o2 are Tuple3's * with EXACTLY the same X, Y, and Z coordinates. * @throws ClassCastException if o1 or o2 is not a Tuple3. */ public boolean areEqual(Object o1, Object o2) { Tuple3 t1 = (Tuple3) o1, t2 = (Tuple3) o2; return (t1.getX() == t2.getX() && t1.getY() == t2.getY() && t1.getZ() == t2.getZ()); } /** * Returns a hash code composed of a the int representations of the * X, Y, and Z coordinates as floats, permuted to avoid collisions of * e.g. (1,0,0) with (0,1,0) and (0,0,1), and XORed together. */ public int hashCodeFor(Object o1) { Tuple3 t1 = (Tuple3) o1; // I stole this from Colt: // this avoids excessive hashCollisions // in the case values are of the form (1.0, 2.0, 3.0, ...) int b1 = Float.floatToIntBits(((float)t1.getX()) * 663608941.737f); int b2 = Float.floatToIntBits(((float)t1.getY()) * 663608941.737f); int b3 = Float.floatToIntBits(((float)t1.getZ()) * 663608941.737f); // The rotation of bits is my own idea, to avoid getting // the same result when X, Y, and Z are simply permuted. return (b1 ^ (b2<<11 | b2>>>21) ^ (b3<<22 | b3>>>10)); } //}}} }//class king-2.21.120420/driftwood/src/driftwood/r3/SpatialBin.java0000644000000000000000000001557311531212754021635 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.r3; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * SpatialBin sorts points into a 3-D grid of rectangular bins * to facilitate rapid discovery of spatial neighbors. * Thus, when searching for a point within a distance D of a point, * one only needs to look in bins within D (plus a margin) of that point. * The grid is kept sparse by storing point lists in a hashtable, * indexed on the three integer bin indices. * This class does not guarantee the set property, so attempting to remove a * point that has been added multiple times may have unpredictable results. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Tue Mar 30 09:38:47 EST 2004 */ public class SpatialBin //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## /** * A Map>Tuple3, ArrayList>Tuple3<$lt; that maps integer bin indices * to Collections of points with Cartesian coordinates. */ Map grid = new HashMap(); /** An overwriteable index for lookups. Don't use for storage or it will be overwritten! */ Triple lookupIndex = new Triple(); /** To make sure we can treat our search point as a Triple, not just a Tuple3. */ Triple searchProxy = new Triple(); /** The sizes of the bins in x, y, and z. */ final double xWidth, yWidth, zWidth; //}}} //{{{ Constructor(s) //############################################################################## /** * Creates a new spatial binning system with a grid of the given granularity. * As a general rule, grid size should be about the same as the distance * you want to use for a typical search. * Alternately, choose a grid small enough that on average a small percentage of * your data falls into any one bin, but large enough that points don't have * bins all to themselves, which is wasteful and inefficient to search. * @param width the dimension along one axis of a cubic grid cell */ public SpatialBin(double width) { super(); this.xWidth = width; this.yWidth = width; this.zWidth = width; } //}}} //{{{ getIndex //############################################################################## /** Writes the integer indices of pt into index. */ protected void getIndex(Tuple3 pt, MutableTuple3 index) { index.setX(Math.round(pt.getX()/xWidth)); index.setY(Math.round(pt.getY()/yWidth)); index.setZ(Math.round(pt.getZ()/zWidth)); } //}}} //{{{ add, addAll, clear //############################################################################## /** Adds the given point to the appropriate bin. */ public void add(Tuple3 pt) { getIndex(pt, lookupIndex); ArrayList bin = (ArrayList) grid.get(lookupIndex); if(bin == null) { bin = new ArrayList(); grid.put(new Triple(lookupIndex), bin); } bin.add(pt); } /** Adds all the Tuple3s in this collection to their appropriate bins. */ public void addAll(Collection c) { for(Iterator iter = c.iterator(); iter.hasNext(); ) { Tuple3 pt = (Tuple3) iter.next(); add(pt); } } /** Removes all Tuple3s in the spatial bin */ public void clear() { this.grid.clear(); } //}}} //{{{ findSphere //############################################################################## /** * Finds all the points in this collection whose distance to the search point * is less than or equal to the specified radius. * @return a Collection of all the points on or within the sphere */ public Collection findSphere(Tuple3 search, double radius) { ArrayList found = new ArrayList(); findSphere(search, radius, found); return found; } /** * Finds all the points in this collection whose distance to the search point * is less than or equal to the specified radius, * and adds them to the specified Collection. */ public void findSphere(Tuple3 search, double radius, Collection found) { searchProxy.like(search); double r2 = radius * radius; // saves doing a sqrt() operation // We search over a rectangular selection of grid cells. // This is minimally inefficient for grid sizes that are // well-matched to the searched data set. int minx = (int)Math.round((search.getX()-radius)/xWidth); int miny = (int)Math.round((search.getY()-radius)/yWidth); int minz = (int)Math.round((search.getZ()-radius)/zWidth); int maxx = (int)Math.round((search.getX()+radius)/xWidth); int maxy = (int)Math.round((search.getY()+radius)/yWidth); int maxz = (int)Math.round((search.getZ()+radius)/zWidth); // An unusual syntax for nested loops, but it reduces indentation for(int i = minx; i <= maxx; i++) for(int j = miny; j <= maxy; j++) for(int k = minz; k <= maxz; k++) { lookupIndex.setXYZ(i, j, k); ArrayList bin = (ArrayList) grid.get(lookupIndex); if(bin != null) { // Using get() is substantially (>25%) faster than creating iterators //for(Iterator iter = bin.iterator(); iter.hasNext(); ) for(int l = 0, end_l = bin.size(); l < end_l; l++) { //Tuple3 hit = (Tuple3) iter.next(); Tuple3 hit = (Tuple3) bin.get(l); if(searchProxy.sqDistance(hit) <= r2) found.add(hit); } } } // end triple for loop } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ main (for testing) //############################################################################## /*static public void main(String[] args) { SpatialBin bin = new SpatialBin(5); for(int i = 0; i < 1000; i++) { Triple p = new Triple(Math.random(), Math.random(), Math.random()).mult(100); bin.add(p); } for(int i = 0; i < 10; i++) { Triple p = new Triple(Math.random(), Math.random(), Math.random()).mult(100); double r = Math.random() * 10; Collection c = bin.findSphere(p, r); System.out.println("Within "+r+" of "+p+":"); System.out.println(c); System.out.println(); System.out.println(); } }*/ //}}} }//class king-2.21.120420/driftwood/src/driftwood/r3/Builder.java0000644000000000000000000004147111531212754021171 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.r3; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * Builder is a utility class for doing geometrical * constructions, like Mage's construct4 operation. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Thu Mar 20 13:46:26 EST 2003 */ public class Builder //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## Triple x1, x2; // working triples Transform rot1; // working rotation //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public Builder() { x1 = new Triple(); x2 = new Triple(); rot1 = new Transform(); } //}}} //{{{ construct4 //################################################################################################## /** * Given three points A, B, and C, * construct a line segment from C to D * of a given length, * at a given angle to BC, * and with a given dihedral angle to ABC. * @param ang the angle BCD in degrees, between 0 and 180 * @param dihe the angle ABCD in degrees * @return the endpoint of the new line segment */ public Triple construct4(Tuple3 a, Tuple3 b, Tuple3 c, double len, double ang, double dihe) { Triple d = new Triple().likeVector(c, b); d.unit().mult(len); // Not robust to a/b/c colinear // Doesn't matter since that makes dihe undef. x1.likeVector(b, a); x2.likeVector(b, c); x1.cross(x2); rot1.likeRotation(x1, ang); rot1.transformVector(d); rot1.likeRotation(x2, dihe); rot1.transformVector(d); return d.add(c); } //}}} //{{{ dock3on3 //################################################################################################## /** * Creates a transform that, if applied to the mobile object, * would superimpose the three specified points onto * three points in the reference object. * The primary point is perfectly superimposed, * the secondary point determines orientation (an axis), * and the tertiary point determines rotation about the axis. */ public Transform dock3on3(Tuple3 ref1, Tuple3 ref2, Tuple3 ref3, Tuple3 mob1, Tuple3 mob2, Tuple3 mob3) { Transform dock = new Transform(); // Translate to ref1 x1.like(ref1).sub(mob1); rot1.likeTranslation(x1); dock.append(rot1); // Calc angle and do rotation dock.transform(mob2, x1); double angle = Triple.angle(ref2, ref1, x1); x2.likeNormal(ref2, ref1, x1).add(ref1); rot1.likeRotation(ref1, x2, angle); dock.append(rot1); // Calc dihedral and do rotation dock.transform(mob2, x1); dock.transform(mob3, x2); double dihedral = Triple.dihedral(ref3, ref1, x1, x2); rot1.likeRotation(ref1, x1, -dihedral); dock.append(rot1); return dock; } //}}} //{{{ Andrew's explantion of checkTriangle //################################################################################################## /*

What the code does:
  When Engine.pickPoint() is called, if KPoint p is an instance of
  TrianglePoint, first check to see if all 3 points of the triangle
  can be found from p.  I.e. p.from and p.from.from are non-null.
  If we can get all three points of the triangle, then run
  checkTriangle().  If checkTriangle() says the point is inside the
  triangle, print the TriangleList's name out to stdout.

  This is a basic implementation with none of the preprocessing I
  mentioned before.  It's possible to save two operations in
  signedArea2() by computing and storing (bX-aX) and (bY-aY) for each
  edge of the triangle upon loading a file.  (see the code)

The formulas:
  See the comments in the code for the formulas.  Briefly, the
  signed area of a triangle can be computed by a 3x3 determinant.
  For triangle ABC in the plane and a given point p, we can determine
  if p is inside ABC by computing the signed area of triangles
  ABp, BCp, and CAp.  If all three signed areas are the same sign, then
  the point lies inside the triangle.  If any of the signed areas are
  equal to zero, then the point also lies inside the triangle --
  actually it lies on an edge of ABC.  Otherwise the point lies outside
  the triangle.

The underlying concept:
  This is the part I mentioned was a bit more involved.  I'll try to
  give an intuitive picture of the background info instead of going into
  too many details.  I'm not sure how much of what I write below you already
  know, so please bear with me if I say anything old hat.  Signed area comes
  from a relationship between the area of a region R bounded by a (piecewise
  smooth simple) closed curve C and a line integral along C.

  Think of a line integral is a generalization of the definite integral
  you encounter in calculus to multiple variables.  So instead of taking
  the integral of a function $y = f(x)$ defined in the interval [a,b],
  you take the integral of a function $z = f(x,y)$ which is defined on a
  curve C.  Visualize as follows: Suppose I am in R^3 and I am moving in
  the x-y plane.  My movement is dictated by travelling along curve C,
  which lives in the x-y plane.  As I move along C, I calculate f(x,y)
  for each point.  By doing this I've created a 2-dimensional "upright
  region."  The line integral is just the area of this region.  To calculate
  this you can do something analogous to calculating the definite integral.
  In the definite integral you break up the "area under the curve" into
  rectangular strips.  I.e. you break up [a,b] into small intervals (the
  width of the rectangular strip) and then choose some number w in each
  interval to calculate the function value f(w) (the height of the
  rectangular strip).  Take the area of each rectangular strip, and then
  sum them to get the definite integral.  With the line integral, you
  break up the curve C into small intervals or rather, small arcs, since
  it's a curve and do the same thing.

  Ok -- back to signed area.  This relationship is derived from Green's
  Theorem, which is a connection between a line integral for two continous
  functions defined along curve C and a surface integral for these two
  functions.  When I say defined along curve C, what I actually mean is
  that these two functions exist in a space which contains region R, but
  I solve them along curve C.  In addition, I travel along curve C in
  a particular direction, e.g. so that the region R is always on my left.
  Surface integral is also a generalization of the definite integral.
  Line integrals are solved along curves, surface integrals are solved
  along surfaces, so it's actually a double integral.  Green's Theorem
  says that instead of solving a line integral for these two functions,
  I can solve a surface integral which will give me the same result, and
  vice versa.

  Point being the following -- I can use Green's Theorem twice.  Once
  so that one function is 0, and the second function is x.  And once so
  that one function is -y, and the second function is 0.  By combining
  the two formulas I get from Green's Theorem, I get a formula for the
  area bounded by that closed curve, which is a pretty cool result.
  This is the signed area.  The sign comes from whether the region R
  ends up being on my left or right as I walk along the curve.  So
  from here you can probably see where this leads...

  For us the region R is triangle ABC, and the curve C are the edges.
  I want to figure out if a point p is inside ABC.  Let's walk along
  each of the edges in a particular direction.  Say we go from A -> B -> C.
  Then I can define A -> B -> p, B -> C -> p, and C -> A -> p as new
  triangles, and each one now has a defined walk along their boundary.
  As I walk along the boundary of a new triangle, take note of where
  the interior of the new triangle actually is -- if it's to my right or
  to my left.  If for a particular new triangle the region is to my
  left, but for the other new triangle the region is to my right, then
  I know the point p is outside of triangle ABC.  So in conclusion, just
  compute the signed areas of each new triangle.  By computing the
  signed area you have, in effect, "walked along a triangle" and seen
  whether the interior of a triangle is to your right or left as you
  walk.  And to conclude the signed area of a triangle can be
  represented as a determinant. :)

  Anyways, enough of my babbling.  I left out all of the formulas, but
  these can be found in a Calculus text or online somewhere like Mathworld.
  Green's Theorem is a specific case Stokes Theorem, and a lot of these
  sorts of things are very useful in physics and advanced calculus type
  things... complex analysis and the like.  I think I could have been
  less wordy, and perhaps there are simpler ways to describe what I've
  written above, but hopefully you've gotten a sense of where it all
  comes from.

-----

Oh...  I just realized this formulation is a lot easier.

 - take tangent vector at point p
 - draw second vector _perpendicular_ to tangent vector from point p
   towards region R.
 - cross product (== sign)

I have a tendency to make things too complicated on the first pass. :)
*/ //}}} //{{{ signedArea2, checkTriangle //################################################################################################## /** * Signed area for a (planar) triangle, or rather signed area for * parallelogram defined by directed edges ab and bc. For signed * area of triangle, multiply the returned value by 0.5. * * The signed area allows us to determine whether or not c is * left, right, or on the directed edge ab if the determinant
|a.x b.x c.x|
|a.y b.y c.y|
| 1   1   1 |
* is positive, negative, or zero, respectively. *

Code courtesy of Andrew Ban, 20 May 2004. */ public static double signedArea2(double aX, double aY, double bX, double bY, double cX, double cY) { return ( (bX-aX)*(cY-aY) - (bY-aY)*(cX-aX) ); } /** * Tests whether the point (x,y) lies in/on the triangle ABC or not. * Checks signed area for triangle formed by two vertices of * Triangle ABC and a given point (x,y). * If all 3 signedArea2 tests are of one sign, or one of the tests * is zero (indicating that point p sits on one of the edges of * ABC), return true. Else return false. *

Code courtesy of Andrew Ban, 20 May 2004. */ public static boolean checkTriangle(double x, double y, double aX, double aY, double bX, double bY, double cX, double cY) { // walk AB -> BC -> CA double ABp, BCp, CAp; ABp = signedArea2(aX, aY, bX, bY, x, y); if (ABp == 0) return true; BCp = signedArea2(bX, bY, cX, cY, x, y); if (BCp == 0) return true; else if ( (ABp < 0) != (BCp < 0) ) return false; CAp = signedArea2(cX, cY, aX, aY, x, y); if (CAp == 0) return true; else if ( (BCp < 0) != (CAp < 0) ) return false; return true; } //}}} //{{{ makeDotSphere //############################################################################## // Ported to Java by Ian W. Davis, 2004-Dec-8 /* from probe.2.8.011009 and hacked for mage.6.28.030402 by dcr */ /* author: J. Michael Word (port from dcr and mez fortran code) */ /* date written: 2/20/96 */ /* purpose: generate points on a sphere */ /* NOTICE: This is free software and the source code is freely */ /* available. You are free to redistribute or modify under the */ /* conditions that (1) this notice is not removed or modified */ /* in any way and (2) any modified versions of the program are */ /* also available for free. */ /* ** Absolutely no Warranty ** */ /* Copyright (C) 1999 J. Michael Word */ /** * Creates a set of ~evenly distributed points on the surface of a sphere. * * @param radius the radius of the sphere * @param density dot density in dots per square unit of sphere surface * @return a Collection of Triples representing dots on the sphere surface, * with the sphere centered on the origin. */ static public Collection makeDotSphere(double radius, double density) { // overestimate of the number of dots final double sizefact = 1.0; int estNumDots = (int)Math.floor(4.0 * Math.PI * density * sizefact * (radius * radius)); Collection points = new ArrayList(estNumDots); // These are all just magic numbers to me... final double offset = 0.2; boolean odd = true; double ang = 5.0 * Math.PI / 360.0; // 2.5 degrees as radians? double cosang = Math.cos(ang); double sinang = Math.sin(ang); // More interpretable: number of dots along latitude, longitude (?) int nequator = (int)Math.floor(Math.sqrt(estNumDots * Math.PI)); int nvert = nequator / 2; for (int j = 0; j <= nvert; j++) { double phi = (Math.PI * j) / nvert; double z0 = Math.cos(phi) * radius; double xy0 = Math.sin(phi) * radius; int nhoriz = (int)Math.floor(nequator * Math.sin(phi)); if(nhoriz < 1) nhoriz = 1; for (int k = 0; k < nhoriz; k++) { double theta; if(odd) theta = (2.0 * Math.PI * k + offset)/nhoriz; else theta = (2.0 * Math.PI * k )/nhoriz; double x0 = Math.cos(theta) * xy0; double y0 = Math.sin(theta) * xy0; Triple t = new Triple(x0, y0*cosang - z0*sinang, y0*sinang + z0*cosang); points.add(t); } odd = !odd; } return points; } //}}} //{{{ makeBoundingBox //################################################################################################## /** * Calculates the bounding box along X, Y, and Z for a set of Tuple3's. * @return an array containing the minimum point in [0] and the maximum in [1] */ static public Triple[] makeBoundingBox(Collection tuples) { Triple min = new Triple(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY); Triple max = new Triple(Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY); for(Iterator iter = tuples.iterator(); iter.hasNext(); ) { Tuple3 t = (Tuple3) iter.next(); min.setX( Math.min(min.getX(), t.getX()) ); min.setY( Math.min(min.getY(), t.getY()) ); min.setZ( Math.min(min.getZ(), t.getZ()) ); max.setX( Math.max(max.getX(), t.getX()) ); max.setY( Math.max(max.getY(), t.getY()) ); max.setZ( Math.max(max.getZ(), t.getZ()) ); } return new Triple[] { min, max }; } /** * Calculates the bounding box along X, Y, and Z for a set of Tuple3's, * treating each one as a sphere of a particular radius. * @return an array containing the minimum point in [0] and the maximum in [1] */ static public Triple[] makeBoundingBox(Collection centers, double[] radii) { if(centers.size() != radii.length) throw new IllegalArgumentException("Must have a radius for every sphere"); Triple min = new Triple(Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY); Triple max = new Triple(Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.NEGATIVE_INFINITY); int i = 0; for(Iterator iter = centers.iterator(); iter.hasNext(); i++) { Tuple3 t = (Tuple3) iter.next(); double r = radii[i]; min.setX( Math.min(min.getX(), t.getX()-r) ); min.setY( Math.min(min.getY(), t.getY()-r) ); min.setZ( Math.min(min.getZ(), t.getZ()-r) ); max.setX( Math.max(max.getX(), t.getX()+r) ); max.setY( Math.max(max.getY(), t.getY()+r) ); max.setZ( Math.max(max.getZ(), t.getZ()+r) ); } return new Triple[] { min, max }; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/r3/NRUBS.java0000644000000000000000000001571711531212754020500 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.r3; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * NRUBS implements non-rational, uniform B-splines, a much simpler * thing than NURBS (non-uniform rational B-splines). * *

My reference was Computer Graphics: Principles and Practice, 2nd ed. * in the Systems Programming Series by Foley, van Dam, Feiner, and Hughes (1993). * With some work, I could probably use it to implement NURBS (which are a * generalization of NRUBS, on two counts), but since Prekin uses the plain * B-splines for ribbons, I don't see the point. * *

Here's my simplified layout of the math of splines. * B-splines require 4 control points per segment, and adjacent segments * share 3 of the 4 control points. * For simplicity, I deal with only one segment at a time here, * with control points P0, P1, P2, P3. * Segments are C2 continuous at join points, meaning their second derivatives * are equal. Doubling or tripling guide points may break this. * The points along the actual spline are given as Q(t), where t is on [0,1]. * Although the Q(t) don't actually pass through any of the control points, * they do lie within the convex hull of those points. * You can make the spline go closer by doubling up a control point, but if * three of them are the same, then that spline segment will be a straight line. *

t                               the parameter for spline coordinates

Q(t) = [x(t) y(t) z(t)]         the functions of t that give spline coordinates

    [P0]   [P0_x P0_y P0_z]
G = [P1] = [P1_x P1_y P1_z]     the control points (guide points)
    [P2]   [P2_x P2_y P2_z]
    [P3]   [P3_x P3_y P3_z]

            [-1  3 -3  1]
M = (1/6) * [ 3 -6  3  0]       the basis matrix, which determines blending functions
            [-3  0  3  0]
            [ 1  4  1  0]

T = [t^3  t^2  t  1]            powers of t -- makes this a CUBIC spline function

Q(t) = T * M * G                the spline function itself
     = T * C                        alternate representation: C = M * G
     = B * G                        alternate representation: B = T * M
* *

Notice that if you're going to do a bunch of segments with the same * subdivisions of t (e.g. t = [0.00 0.25 0.50 0.75 1.00]), it makes sense * to precalculate all the B(t) you need. This gives:

Q(t) = (1/6) * {  [(1-t)^3]*P0 + [3t^3 - 6t^2 + 4]*P1 + [-3t^3 + 3t^2 + 3t + 1]*P2 + [t^3]*P3  }
* * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Jan 19 16:56:14 EST 2006 */ public class NRUBS //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Map Bcache = new HashMap(); // Triple work = new Triple(); //}}} //{{{ Constructor(s) //############################################################################## public NRUBS() { super(); } //}}} //{{{ spline [public] //############################################################################## /** * Generates the points along a spline. If you feed in G guide points and * request N intervals in each segment, you'll get back N*(G-3) + 1 points. */ public Tuple3[] spline(Tuple3[] guidePts, int nIntervals) { double[][] B = getB(nIntervals); Triple[] out = new Triple[ nIntervals*(guidePts.length-3) + 1 ]; for(int i = 0; i < out.length; i++) out[i] = new Triple(); for(int i = 0; i < guidePts.length - 3; i++) spline(guidePts, i, out, i*nIntervals, B); return out; } /** * Generates interpolated points between two guide points (guideStart and guideStart+1), * and stores them in splineOut at splineStart through splineStart+nIntervals. * (Yes, that's right: it calculates nIntervals+1 points.) */ public void spline(Tuple3[] guidePts, int guideStart, MutableTuple3[] splineOut, int splineStart, int nIntervals) { double[][] B = getB(nIntervals); spline(guidePts, guideStart, splineOut, splineStart, B); } //}}} //{{{ spline [workhorse] //############################################################################## /** * Calculates the N+1 points along the spline for a particular segment. * Using this repeatedly along a series of guidepoints will result in small * amount of duplicate calculation (each join calc'd twice). */ private void spline(Tuple3[] guidePts, int guideStart, MutableTuple3[] splineOut, int splineStart, double[][] B) { Tuple3 P0 = guidePts[guideStart+0], P1 = guidePts[guideStart+1], P2 = guidePts[guideStart+2], P3 = guidePts[guideStart+3]; for(int i = 0; i < B.length; i++) { work.setXYZ(0,0,0); work.addMult(B[i][0], P0); work.addMult(B[i][1], P1); work.addMult(B[i][2], P2); work.addMult(B[i][3], P3); splineOut[splineStart+i].setXYZ(work.getX(), work.getY(), work.getZ()); } } //}}} //{{{ getB, calculateB //############################################################################## /** * Returns the "B" coefficients for a particular number N of intervals * along a spline segment. Because N+1 points are generated (fencepost problem) * this function returns a double[N+1][4]. * * If possible, the value will be retrieved from cache instead of recalculated. */ private double[][] getB(int nIntervals) { Integer N = new Integer(nIntervals); double[][] B = (double[][]) Bcache.get(N); if(B == null) { B = calculateB(nIntervals); Bcache.put(N, B); } return B; } /** * Returns the "B" coefficients for a particular number N of intervals * along a spline segment. Because N+1 points are generated (fencepost problem) * this function returns a double[N+1][4]. */ static private double[][] calculateB(int nIntervals) { double[][] B = new double[nIntervals+1][4]; for(int i = 0; i <= nIntervals; i++) { // This could be rearranged to be more efficient, but it doesn't // matter because we're going to cache the result. double t = ((double)i) / ((double)nIntervals); double t2 = t*t; double t3 = t2*t; double _1_t = 1-t; B[i][0] = (_1_t * _1_t * _1_t) / 6; B[i][1] = (3*t3 - 6*t2 + 4) / 6; B[i][2] = (-3*t3 + 3*t2 + 3*t + 1) / 6; B[i][3] = t3 / 6; } return B; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/driftwood/src/driftwood/r3/Tuple3.java0000644000000000000000000000164411531212754020755 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.r3; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * Tuple3 is a point in R3, * a tuple with an X, a Y, and a Z component. * This interface allows other things to act like Triples * without having to actually be Triples. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Mon Mar 10 12:12:11 EST 2003 */ public interface Tuple3 //extends ... implements ... { /** Returns the first element of this tuple */ public double getX(); /** Returns the second element of this tuple */ public double getY(); /** Returns the third element of this tuple */ public double getZ(); }//class king-2.21.120420/driftwood/src/driftwood/r3/LsqPlane.java0000644000000000000000000001461311531212754021320 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.r3; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.*; import Jama.*; //}}} /** * LsqPlane performs a least-squares fit of a plane * through some number of {@link driftwood.r3.Tuple3}s. * The resulting plane is defined in terms of an anchor point and a unit normal. * *

From Ask Dr. Math, I learned that the orthogonal least-squares regression * plane passes through the centroid of the data (x0,y0,z0) and its normal vector * is the singular vector (found the columns of in V) corresponding to the * smallest singular value (in S) for the singular value decomposition (SVD) of * matrix M, which factors M such that M = U S V' (where ' means transpose). *

M = [  x1-x0  y1-y0  z1-z0  ]
    [  x2-x0  y2-y0  z2-z0  ]
    [   ...    ...    ...   ]
    [  xN-x0  yN-y0  zN-z0  ]
* *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Wed Mar 17 15:31:07 EST 2004 */ public class LsqPlane //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Triple anchor = new Triple(); Triple normal = new Triple(); double rmsd; //}}} //{{{ Constructor(s) //############################################################################## /** * Finds a least-squares plane through all the data points. * You can retrieve the plane definition with {@link #getNormal()} * and {@link #getAnchor()}. * @param data a Collection of Tuple3 objects */ public LsqPlane(Collection data) { super(); fitPlane(data); } //}}} //{{{ fitPlane //############################################################################## private void fitPlane(Collection data) { anchor = calcCentroid(data); Matrix m = buildMatrix(data, anchor); SingularValueDecomposition svd = m.svd(); Matrix v = svd.getV(); // last column corresponds to min singular value normal = new Triple( v.get( 0, v.getColumnDimension()-1 ), v.get( 1, v.getColumnDimension()-1 ), v.get( 2, v.getColumnDimension()-1 ) ); normal.unit(); rmsd = calcRMSD(data, anchor, normal); } //}}} //{{{ calcCentroid, buildMatrix //############################################################################## /** Calculates the centroid of a collection of Tuple3s. */ static Triple calcCentroid(Collection data) { Triple centroid = new Triple(); for(Iterator iter = data.iterator(); iter.hasNext(); ) { Tuple3 t = (Tuple3) iter.next(); centroid.add(t); } centroid.mult(1.0 / data.size()); return centroid; } /** Builds the matrix M */ static Matrix buildMatrix(Collection data, Triple centroid) { Matrix matrix = new Matrix(data.size(), 3); int i = 0; for(Iterator iter = data.iterator(); iter.hasNext(); i++) { Tuple3 t = (Tuple3) iter.next(); matrix.set(i, 0, t.getX() - centroid.getX()); matrix.set(i, 1, t.getY() - centroid.getY()); matrix.set(i, 2, t.getZ() - centroid.getZ()); } return matrix; } //}}} //{{{ calcRMSD //############################################################################## /** * There's probably a way to get this directly from the eigenvalues, * but I can't figure out what it is. */ static double calcRMSD(Collection data, Triple anchorPt, Triple unitNormal) { // Distance from point to plane is vector from point to point-in-plane // projected onto the (unit) normal to the plane. Triple x = new Triple(); double rms = 0; for(Iterator iter = data.iterator(); iter.hasNext(); ) { Tuple3 t = (Tuple3) iter.next(); x.likeVector(anchorPt, t); double dist = x.dot(unitNormal); rms += dist*dist; } return Math.sqrt( rms / data.size() ); } //}}} //{{{ getNormal, getAnchor, getRMSD //############################################################################## /** * Returns the unit normal of the plane calculated during the last fitting. */ public Tuple3 getNormal() { return normal; } /** * Returns the anchor point for the plane calculated during the last fitting. * This is equal to the centroid of all the data points used. */ public Tuple3 getAnchor() { return anchor; } /** * Returns the root-mean-square distance to the plane for all points. */ public double getRMSD() { return rmsd; } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ main //############################################################################## public static void main(String[] args) { try { ArrayList data = new ArrayList(); LineNumberReader in = new LineNumberReader(new InputStreamReader(System.in)); String s; while((s = in.readLine()) != null) { try { String[] line = Strings.explode(s, ' '); Triple t = new Triple( Double.parseDouble(line[0]), Double.parseDouble(line[1]), Double.parseDouble(line[2]) ); data.add(t); } catch(NumberFormatException ex) { System.err.println(ex.getMessage()); } catch(IndexOutOfBoundsException ex) { System.err.println(ex.getMessage()); } } LsqPlane lsq = new LsqPlane(data); System.out.println("Anchor: "+lsq.getAnchor()); System.out.println("Normal: "+lsq.getNormal()); Triple plus = new Triple(lsq.getAnchor()).add(lsq.getNormal()); System.out.println("Ar+Nm : "+plus); System.out.println("RMSD : "+lsq.getRMSD()); } catch(Exception ex) { ex.printStackTrace(); } } //}}} }//class king-2.21.120420/driftwood/src/driftwood/mysql/0000755000000000000000000000000011744306102017547 5ustar rootrootking-2.21.120420/driftwood/src/driftwood/mysql/DatabaseManager.java0000644000000000000000000000764311531212754023426 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package driftwood.mysql; import java.sql.*; //import com.mysql.jdbc.*; //}}} /** * DatabaseManager is used for interfacing with the mysql database located on spiral (071007). * It uses the mysql connector j 5.0.6 downloaded from the mysql website. Any packages that use * this code will have to include a copy of the mysql jar in the classpath when compiling and running * this code. */ public class DatabaseManager { //{{{ Constants //}}} //{{{ Variables Connection conn; ResultSet rs; //}}} //{{{ Constructor public DatabaseManager() { try { Class.forName("com.mysql.jdbc.Driver").newInstance(); } catch (ClassNotFoundException ce) { System.err.println("MySql jdbc driver was not found!"); } catch (InstantiationException ie) { System.err.println("An instantiation exception occurred in DatabaseManager.java!"); } catch (IllegalAccessException iae) { System.err.println("An error occurred in DatabaseManager, check your permissions!"); } } //}}} //{{{ connectToDatabase public void connectToDatabase(String url) { try { conn = DriverManager.getConnection("jdbc:mysql:" + url, "javauser", "J1kwt3T0"); } catch (SQLException ex) { System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); } } //}}} //{{{ select public void select(String selectQuery) { Statement stmt = null; rs = null; try { stmt = conn.createStatement(); rs = stmt.executeQuery(selectQuery); //return rs; //while (rs.next()) { // System.out.print(rs.getString("pdb_id") + " "); // System.out.println(rs.getString(2)); //rs.getInt("frag_length"); //} } catch (SQLException ex) { System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); }/* finally { // it is a good idea to release resources in a finally{} block // in reverse-order of their creation if they are no-longer needed if (rs != null) { try { rs.close(); } catch (SQLException sqlEx) { } rs = null; } if (stmt != null) { try { stmt.close(); } catch (SQLException sqlEx) { } stmt = null; } } //return null; */ } //}}} //{{{ getString public String getString(int i) { try { return rs.getString(i); } catch (SQLException ex) { System.out.println("SQLException in getString: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); } return null; } //}}} //{{{ next public boolean next() { if (rs != null) { try { return rs.next(); } catch (SQLException ex) { System.out.println("SQLException: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); } } return false; } //}}} //{{{ reset public void reset() { if (rs != null) { try { rs.close(); } catch (SQLException sqlEx) { } rs = null; } } //}}} //{{{ close public void close() { try { reset(); conn.close(); } catch (SQLException ex) { System.out.println("SQLException in getString: " + ex.getMessage()); System.out.println("SQLState: " + ex.getSQLState()); System.out.println("VendorError: " + ex.getErrorCode()); } } //}}} } king-2.21.120420/driftwood/LICENSE.html0000644000000000000000000000635311531212764015575 0ustar rootroot The Driftwood License
This license applies to everything in this project that is the original work of the copyright holder(s) and contributor(s), including but not limited to the source code, binary executables, artwork, and documentation. This distribution includes certain third-party libraries and resources which are not covered by this license, and which are governed by their own license terms. See documentation for more details.


The Driftwood License

Copyright (C) 2002-2007 Ian W. Davis & Vincent B. Chen. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  2. 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.
  3. The end-user documentation included with the redistribution, if any, must include the following acknowledgment:

    "This product includes software developed in the Richardon lab at Duke University (http://kinemage.biochem.duke.edu)."

    Alternately, this acknowledgment may appear in the software itself, if and wherever such third-party acknowledgments normally appear.

  4. The name of the copyright holder, the names of the contributors, and the names "Driftwood", "Kinemage",  "KiNG", and "Mage" must not be used to endorse or promote products derived from this software without prior written permission.
  5. Products derived from this software may not be called "Driftwood", nor may "Driftwood" appear in their name, without prior written permission.
THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED 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 HOLDERS 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.



This license is based on the BSD and Apache licenses.
See http://www.opensource.org/ for more details on these and other licenses.

king-2.21.120420/driftwood/CHANGELOG.html0000644000000000000000000010123011744305702015771 0ustar rootrootCHANGELOG
==============================================================================
===  TO DO  ==================================================================
==============================================================================
    Create driftwood.signal for publish/subscribe message passing

DATA: {{{
    Implement CheapMap like CheapSet, but intersperse keys and values in one array.
        entrySet() may be hard w/out pre-existing Map.Entry objects
}}}
GUI: {{{
    Create an enabler that traverses a Container syncing the enable state
    WeakButtonModel would hold only weak references to GUI listeners
    Make a DialogButtonBar from Box:  Btn1--Btn2--Btn3------------BtnLast
    Make a list with checkboxes for selecting a set of things?
    TreeFoldSlider controls tree expansion like TOC in LyX
    Add addStrut() to TablePane2 as combo of addCell(strut(...))
}}}
ISOSURFACE: {{{
}}}
MOLDB2: {{
    Write PdbUpdater that reads new coords/state into an old model
    Add a class that can WRITE moldb2 data into a StarFile DOM (CifWriter)
    We need an Model.extractAtomStates() function based on AS [identity? name?]
  * CifReader should use _atom_site.pdbx_PDB_residue_no instead of CIF numbers?
  ? Why does AminoAcid.translate() return lower case three-letter codes?
    Alignment needs to accept gap start vs. gap extend penalties (16/2/2 for BLOSUM 62)
    Consider supporting "WPDB" (wide PDB) format standard
}}}
PARSER: {{
    TokenWindow.syntaxError doesn't skip whitespace -- add TokenMatcher.start()?
    Tokenizer is *too* insensitive to whitespace: "123abc" becomes "123", "abc".
        So there's no difference between "123abc" and "123 abc" !
        This is bad for most languages, but I don't know how to fix it...
}}}
R3: {{{
}}}
STAR: {{{
    Add StarWriter
    Make StarReader more robust to errors (unnamed data_ and save_, etc)
        See email on 7/24/06 from John Westbrook
}}}
UTIL: {{{
}}}

==============================================================================
===  CHANGE LOG  =============================================================
==============================================================================
### 0.91 ###
DAK:
- Added Triple.likeProjection(); reflects base-P perp bug fix in Dangle
- Added "alpha" & "beta" keywords to Selection for e.g. SubImpose
- Minor tweak to Residue.nickname()

### 0.90 ###
DAK:
- Added proper ANISOU card support for PdbReader & PdbWriter
- Added chemical element output to PdbWriter
- Fixed bug related to ANISOU output in PdbWriter

### 0.89 ###
VBC:
- Changed CifReader to use author defined sequence and chain identifiers; using
  label identifiers means kins don't match residue numbers given on webpage, articles, etc.
- Changed CoordinateFile to contain the common PDB file suffixes,
  including regex pattern for pdb#.gz, like PDB uses for biological units.
- Changed SuffixFileFilter to take in regex expression strings also.
- Fixed mysql access in databasemanager
- Changed build system to use java 1.5.
- Added ability for dials to show boundaries.
- All caps added to aminoacid
DAK:  
- Added Disulfides & PdbDisulfides in spirit of SecondaryStructure & 
  PdbSecondaryStructure for reading "SSBOND" cards with PdbReader and storing
  in CoordinateFile
- Minor update to PdbDisulfides to handle shortened SSBOND records
- Let CoordinateFile "deploy" its Disulfides object to all its Models.  Not 
  ideal b/c SSBONDs defined at file level, not model level, but lets lots of 
  outside stuff use the information, and remains optional!
- Renamed some methods in Disulfides & its subclass PdbDisulfides
- Added hopefully convenient Disulfide.otherEnd(Model,Residue) method
- Added AminoAcid.isCisPeptide method
- Added Residue.nickname method
- Added moldb2.Neighborhood to encode notion of local structural region
- Prettified ModelState.debugStates
ARK:
- To allow for calculating ribbon sidedness, added several fields to 
  SecondaryStructure.range and added method SecondaryStructure.consolidateSheets()

### 0.88 ###
- added WrapMap.  Like UberMap, but wraps from start to end and vise versa
- Added int[]->String and double[]->String methods to util.Strings (DAK)
- Added kinPoint() method to Strings

### 0.87 ###
- change in modelstate to give more useful error messages when identical atoms are added.
- added gzip reading support to cifreader and pdbreader
- CifReader now adds pdb entry id to resulting coordinatefile.
- Changed PdbReader and CifReader to read as much of input files as memory allows (mainly for applet).
- Fixed bug in CifReader that was looping forever when identical (except coords) atoms in cif file.

### 0.86 ###
- Uses new Hybrid-36 system for dealing with big files (specifically, the seqence
  numbers).  

### 0.85 ### (DAK)
- Added moldb2.selection.ResRangeTerm as Ian intended to implement at some pt
- Modified moldb2.selection.SelectionParser to accommodate the above

### 0.84 ###
- extended PdbReader to deal with new PDBv3 format hydrogens. Added code for dealing
  with hydrogen atom names getting identified as heavy atoms (e.g. Hg, Hf).
- PdbReader now counts how many PDBv2.3 atoms an input pdb contains.
- added code to CoordinateFile to store how many PDBv2.3 atoms it contains.

### 0.83 ###
- added setName to Model
- extended PdbReader to deal with degenerate atom names gracefully.
  This is important for making Molikin robust to weird PDBs (like Rosetta's).
- removed debugging message from parser.TokenWindow
- added initial working framework for Probe-like selection algebra
- moved extractOrderedStatesByName() from molikin.Util to moldb2.Model,
  because it's a generally useful utility function.
- added support for "within DIST of (SELECTION)" to Selection
- added support for "within DIST of X, Y, Z" to Selection
- added support for "all", "none", and "het"
- changed how Selection.toString() outputs parentheses (so we get fewer)
- added support for atom____, res__, and chain_ selectors
- added grammar-level support for residue ranges, but no implementation yet
  Getting the grammar right was very tricky; ambiguity with "-" symbol and ints.
- added Selection.selectResidues()
- added "fromres" keyword; not in Probe but important to me for research

### 0.82 ###
- added mysql/DatabaseManager.  Any code that uses this will need the mysql
  connector j jar in the classpath when compiling and running.
  
### 0.81 ###
- fixed bug in Model where getChain wouldn't return null if called with a chain
  that wasn't present.

### 0.80 ###
- added r3.LsqPlane.getRMSD()

### 0.79 ###
- changed star.DataBlock to return save frames in same order as file
- added gui.FullTextAsTipsJTable
- added util.CharWindow, the first step toward a better tokenizer for Dangle
- moved CharWindow to driftwood.parser
- added more classes to driftwood.parser; now have very flexible tokenizer!
- added lots of predefined token patterns to RegexTokenMatcher
- added a better main() to TokenWindow -- can now tokenize Java source
- changed parser.* to not consume whitespace prematurely
- added RegexTokenMatcher.recursivePattern()
- giving up on parser.* for now -- can't figure out how to make it work
- heavily reworked CharWindow to make it simpler, and offer both look-ahead
  and look-behind (for generating context of error msgs)
- improved TokenWindow.syntaxError(), though leading whitespace still a problem
- fixed error context by making TokenMatcher.end() meaningful for failed match
- in parser: minor name changes, larger default size for CharWindow
- typo bug fix in CharWindow.contextAt()
- null pointer (null token) fix in TokenWindow.accept()
- more work on TokenWindow.syntaxError() ... why is this so tricky?
- added TokenWindow.require() -- like accept(), but error on failure

### 0.78 ###
- added util.ReflectiveRunnable
- added util.StreamTank.toByteArray()
- added r3.Quaternion, based on Warren Robinett's adapted version of Ken
  Shoemake's code, as seen in Shoemake's 1985 SIGGRAPH paper.
  C code stolen from VRPN project at UNC (public domain code).
- added r3.Transform.likeQuaternion() based on same code.
- added Quaternion.likeSlerp() for interpolating views
- added gui.ProgressDialog to simplify long-running jobs
- added special case element recognition for VMD hydrogens (e.g. _1HB)
- added AminoAcid.isExtendedAminoAcid to look for residue names with alt confs.
- added AminoAcid.getAAName to search a string for a match to a normal amino acid.
- added static distance() methods to Triple [already had angle() and dihedral()]
- added r3.UltrafastShapeRecognition -- possible algor. for RNA fitting?
- added moldb2.Alignment for gapped alignments -- superpositions or RNA motifs?
- moved UltrafastShapeRecognition to old/; showed little promise for conformers

### 0.77 ###
- added Builder.makeBoundingBox() for spheres, not just points
- added Strings.usDecimalFormat() for writing text formats that require
  numbers to be formatted with US English conventions (123,456.789)
- added PDB read/store/write support for data stored beyond column 80

### 0.76 ###
- fixed AminoAcid.getPhi/Psi() to check distance to next/prev residue.
  This prevents spurious Rama outliers at chain breaks.
- added data.TinyMap, which will be used for rare kinemage point properties.
- fixed a bug in TablePane2 where we restored the default GridBag constraints
  before using the modified ones to mark occupied cells. This leads to overlap.
- fixed typo bug in star.StarTokenizer re: ending save frames
- fixed bug in StarReader (didn't skip end-of-save-frame tokens)
- made it possible to repeat a save frame (new data add or overwrite)
- added DataCell.getName() -- using toString() was unsafe for future
- reformatted code in moldb2.AminoAcid to match Ian's code style
- added lower-level spline interface to r3.NRUBS
- elaborated on moldb2.SecondaryStructure so you can tell apart e.g. two
  strands that run into each other (this happens in RNA, for instance).

### 0.75 ###
- we now allow redefinition of identically named residues in a PDB file,
  as long as they're separated by 1+ TER cards. This helps in dealing with
  symmetry-expaned PDBs from crystallography. Don't know yet if CIF needs this.
- fixed PdbWriter to not need a Map of states in order to write a Model
- PdbWriter will no longer write alt_ for an atom that has altA, altB, etc.
- added default weights to r3.SuperPoser, and made helper methods private
- removed public access to point weights period, b/c they may not work
- added Triple.addMult() and r3.NRUBS (splines)
- added Residue.getSequenceInteger()
- added moldb2.(Pdb)SecondaryStructure; create one in PdbReader
- added CifSecondaryStructure and moved some functions to SecondaryStructure
- read struct_sheet_range in addition to struct_conf
- fixed PdbSecondaryStructure to catch IndexOutOfBoundsException for short lines
- fixed PdbSecondaryStructure to allow short TURN records

### 0.74 ###
- fillInStates code now has the option of creating new ATOMs or not.
- PdbReader and CifReader now default to NOT creating new atoms during fill-in.
- added a field to Residue so compareTo will work with trimmed residue numbers.
  Because CIF residues "numbers" can be any length, any string, space padding
  them the way we did for PDB numbers isn't practical.
  (PDB numbers are currently still space padded, just to be obnoxious --
  if code is robust, it shouldn't care which convention is used!)
- added getElement() to moldb2.Atom and AtomState
- PdbReader now sets element when file is read in
- CifReader now sets element when file is read in
- removed Model.getChains() -- no one uses it, and it should be a Map
- removed Model.getStateIDs(); changed getStates() to return a Map
- added Model.setStates(); with clone() this should make modification easier
- moved Model.makeState() logic into PdbReader and CifReader, where it belongs.
  It makes the Reader code uglier, but it makes Model cleaner.

### 0.73 ###
- fixed code formatting in AminoAcid
- added sectionID field to Residue
- added TER-counting code to PdbReader; TER count goes in Residue.sectionID
- added KeyComparator and ValueComparator for working with Map.Entry objects
- added data.Maps with sort() and increment() functions
- BUG: data.CheapSet.rehash() failed to use the requested hash function!
- BUG: data.UberMap.rehash() also failed to use the requested hash function!
- changed semantics of UberMap.put() to be like LinkedHashMap and PHP
- changed moldb2.Model to keep chains/segs in insertion order, not alphabetical
- worked on util.ProcessTank to speed processing; made modest gains

### 0.72 ###
- added the get() function to CheapSet
- implemented string interning for PdbReader, for ~10% memory savings --
  this isn't as good as I had hoped, but better than nothing I guess.
- added string interning to CifReader also, for a ~10% speedup
- added support for cmd-W to close gui.LogViewer windows
- though about using ModelStates for NMR models, but then PdbWriter wouldn't
  know how to output them, and there would be problems with the root model " ".
- renamed ModelGroup to CoordinateFile in driftwood.moldb2

### 0.71 ###
- modified CheapSet to apply secondary hash function only once. This keeps the
  memory addresses of probe positions actually spaced at the triangular numbers,
  which should improve cache locality substantially in large sets.
- added data.ReverseComparator, which isn't provided in java.util.Collections
  until Java 1.5.
- modified ProcessTank to check for process termination less often, because
  the check can generate an expensive-to-process exception.
- fixed ReclickListSelectionModel bug that caused multiple events to the
  listeners for every mouse click.

### 0.70 ###
- added moldb2.ModelState.fillInForModel() to deal with alt conf weirdnesses.
  Still, this can be weird if other state is modified but old alt is saved.
- added moldb2.Model.fillInStates(), which solves the weirdnesses by making
  alt conf IDs consistent. It's not perfect, but may be the best I can do!
- fixed up PdbReader and CifReader to use Model.fillInStates()
- repaired a few bugs in alt fill-in and recompiled everybody

### 0.69 ###
- defined data.HashFunction
- extended data.NullNaturalComparator to implement HashFunction
- changed UberMap to accept a HashFunction
- changed UberSet to accept a HashFunction
- added r3.Tuple3HashFunction
- added data.IdentityHashFunction
- added data.CheapSet, a quadratic-probed, open-addressed hashtable Set impl.
  It's been tested only very lightly...
- fixed remove() methods in CheapSet to decrement set size

### 0.68 ###
- added isosurface.LowResolutionVertexSource to make coarser isosurfaces

### 0.67 ###
- edited Jama files to remove Javadoc errors
- added -source and -target flags to build.xml

### 0.66 ###
- wrote moldb2.CifReader; it works for most atoms but not e.g. waters
- inserted fakeResNumber hack to invent residue numbers for waters
- fixed TER cards in PdbWriter
- added Strings.forceLeft/Right() to make PdbWriter safer
- added makeDotSphere to r3.Builder
- changed SpatialBin to use get() rather than iterator() for searching bins
- added Builder.makeBoundingBox()
- added Triple.div() and .likeQuot()

### 0.65 ###
- made moldb2.ResidueException a checked exception
- made moldb2.AtomException a checked exception
- changed AtomState's serial and altconf to Strings (for mmCIF compatibility)
- changed Residue chain and insCode to Strings (CIF)
- converted Residue sequence number to a String (CIF)
- changed PdbWriter to not depend on order of residues in *chain*, just order
- fixed Javadoc bug for Residue.getNext/Prev()

### 0.64 ###
- added gui.ReclickListSelectionListener

### 0.63 ###
- added URLEncodedOutputStream to driftwood.util

### 0.62 ###
- fixed PdbWriter so it can't output two atoms with the same name.
- added [+] and [-] buttons to AngleDial for fine control w/out right drag
- modified PdbWriter so it hopefully won't create duplicated ATOMs when
  working with refit models containing alternate conformations.

### 0.61 ###
- started CifReader; realized changes to moldb2 are required
- modified gui.SuffixFileFilter to also implement java.io.FilenameFilter
- moved NullNaturalComparator to driftwood.data b/c it makes more sense there

### 0.60 ###
- added CrystalVertexSource.getValueForPoint()
- finished r3.PrincipleAxes so data is available from the API
- fixed prototype on getValueForPoint()
- getValueForPoint (evaluateAtPoint) should call evaluateVertex(), not getValue()
- fixed a typo in the interpolation of evaluateAtPoint()
- fixed a bug in SuffixFileFilter that was unconditionally accepting filenames without extensions

### 0.59 ###
- StarReader now allows stop_ tokens to end loop_ constructs
- modified Transform.transform to use setXYZ instead of individual set funcs

### 0.58 ###
- added checkTriangle() and signedArea2() to r3.Builder (for lack of a better place)
  Thanks to Andrew Ban for the code!
- fixed handling of literal quotes within quoted strings in StarTokenizer
  Thanks to John Westbrook for clarifying this issue!

### 0.57 ###
- fixed a potential bug in data.UberMap from calling putBefore(key, key, value)
- added UberMap.replace() as a complement to put()
- moved unused classes in data into old/
- added data.FinalArrayList to wrap arrays in an unmodifiable way
- finished writing StarFile class
- added StarReader

### 0.56 ###
- added Props.minimizeDifferences()
- added gui.TablePane2, which uses memorize() instead of save()/restore()
  It hasn't been tested much yet and so may still be quite buggy!
- made TablePane2.startSubtable() automatically do insets(0), hfill/vfill
- moved PDFs I shouldn't be distributing into doc/nodist
- added package driftwood.star
- added star.StarTokenizer

### 0.55 ###
- added r3.SpatialBin for doing rapid spatial lookups of point neighbors
- added moldb2.AminoAcid.isAminoAcid()
- added Triple.format(DecimalFormat df, String sep)
- made Builder.construct4() take Tuple3s instead of Triples
- commentted out PdbReader.extractSheetDefinitions()
+ added the Jama classes to the driftwood package (~20kb compiled)
  These will now be used by the r3 subpackage
- for ATOM numbers greater than 99,999 the PDB uses multiple files
- added LsqPlane to driftwood.r3
- added data.Order for permutations, sorting, etc.
  However, I don't think I should really do it this way -- the better answer
  is to use standard sort functions on aggregate objects...
- added r3.PrincipleAxes to compute viewpoints for point clouds
- migrated to using version.props AND buildnum.props to simplify version control

### 0.54 ###
- parsing mmCIF files is way too involved to be practical for moldb2
  Besides, they have a different data model than the PDB's chain/segment system.
- moldb2 correctly handles the case-sensitive chain IDs found in 1S5L
- added moldb2.Residue.getCNIT()
- changed Model.getResidue() to use the CNIT code
- removed the restriction that all residues in the Model have unique names
- added PdbReader.extractSheetDefinitions()
- added filename and ID code fields to moldb2.ModelGroup

### 0.53 ###
- Model.clone() was not deep enough b/c contents of chainMap and segmentMap
  were not deep copied. This broke the mutate/unmutate/mutate cycle in KiNG.

### 0.52 ###
- rewrite of MeshMarchingCubes as MarchingCubes
- it can now make *either* wireframe meshes *or* solid triangle strip surfaces.
- added getMode() to MarchingCubes
- triangle strip mode of MarchingCubes does sometimes leave holes in the surface;
  this is a known issue arising from the simplified approach to surface topology.
  All the alternatives are prohibitively difficult to implement, however.
- changed default build target to "dist"

### 0.51 ###
- started on data.UberMap, which will eventually replace the gnutil package
- UberMap is complete and passes its unit tests.
- added UberSet, a simple wrapper around UberMap
- removed package driftwood.gnutil; rewrote dependents to use UberMap/UberSet
- created a LICENSE file for the Driftwood distribution
- added ModelState.hasState()
- added AminoAcid.isBackbone()
- created AttentiveComboBox, which is like AttentiveTextField
- added a form of Strings.expandVariables that works with text labels instead of ints

### 0.50 ###
- created AttentiveTextField, which sends ActionEvents when it loses the keyboard focus.
- ModelState can now eliminate AtomStates that are not relevant to a particular model
- removed unmodRes from moldb2.Model because it gave a stale cache after mutations (actually not)
- extended Model.restoreOrder() to also sort chains and segments
- created a special header section USER_MOD for ModelGroup, to place headers at the top of the file
- added FatJList to gui; stolen/refactored from king.EDMapPlugin

### 0.49 ###
- moldb2.Model can now be cloned(). This makes non-destructive mutations much easier.
- added contains(Residue) to Model.

### 0.48 ###
- THIS RELEASE FEATURES MAJOR CHANGES TO THE INTRA-HIERARCHY CONTRACTS OF MOLDB2!!!
- Residues no longer track a parent model; they can belong to any number of models.
- Thus, getNext() and getPrev() now have to be fed a model, as do some methods in AminoAcid.
  This actually triggered some substantial changes in other packages.
  It's a really unfortunate cost to pay, but I think it's probably worth it in the end.
- Model now has to query all residues for a mod count.
- Atoms now have UIDs that are used to test equality. Thus, they can be cloned.
- Residues can also be "cloned", but the clone is not equal to the original.
- A serious issue: AtomStates know which atoms they belong to!
  This causes havoc when you clone Atoms but use the same States.
  Thus, Atoms return to strict equality only, and AtomStates have to be cloned.
- AtomState.cloneFor() and Residue.cloneStates() should make this fairly painless.


- Eliminated these goals because missing atoms would be filled in in a fairly arbitrary way:
    Stack alt confs: C on B on A on ' ' etc. ???
- Eliminated these goals because PDBCNS is too complex to emulate without a lot of effort:
    Auto repair CD1 ILE issue as files are read in
    Auto repair HD12 type atoms? (but what to do about HG = mercury?)
        set fixCnsNames flag on encountering _HA# (Gly), _HB#, HN, etc.
        Note: _HB# becomes #HB_, but HB12 becomes 2HB1
    Auto rename HN, OT1, OT2; HN# or HT# to #H

### 0.47 ###
- added compareVersions to util.Strings
- in moldb2.PdbReader.readAtom(), added protection against PDB files that
  duplicate an entry (i.e., same atom AND same state re-defined).

### 0.46 ###
- copied html pages on ED map formats from web to make sure they're safe

### 0.45 ###
- added bindWindow() to gui.ReflectiveAction
- also set up a default CommandKey based on the given name
- removed the original moldb package!

### 0.44 ###
- did some work to moldb2.PdbReader to make it handle segIDs a little better.
- added moldb2.ModelGroup.replace()

### 0.43 ###
- added EPSGraphics, based on org.jibble.epsgraphics but with support for
  Paints and FontMetrics.

### 0.42 ###
- added likeOrthogonal() to r3.Triple
- modified r3.Triple.angle() and dihedral() to distinguish between
  very near to 0 and very near to 180.
- fixed bug in likeOrthogonal and added test case to Triple
- added test for colinearity to Triple.likeNormal()
- replaced normal calc in Builder.construct4() with likeNormal() for robustness
- undid change: a/b/c colinear leaves dihedral undefined anyway.
- made gui.SuffixFileFilter more robust to null parameters

### 0.41 ###
- for xmaps and omaps in isosurface: if mean, sigma are ~= (0,1) then
  assume they are exactly 0 and 1 respectively. For Brix maps, use the
  sigma from the file in this case.

### 0.40 ###
- added util.Strings.expandVariables()
- added "Select All" to TextCCPMenu
- implemented LogViewer.onSave()
- added gui.ExpSlider.setLabels()

### 0.39 ###
- created new classes in util to support SoftLog (wanted by KiNG).
- added SoftLog.clear()
- added gui.LogViewer to visualize SoftLogs quickly
- added util.OdHash: a hashtable mapping Objects to doubles
- modified r3.Triple.hashCode() to reduce collisions

### 0.38 ###
- added get(i,j) and set(i,j,val) to r3.Transform
- added mag2() to r3.Triple
- created r3.SuperPoser to do general least-squares fitting of point clouds in 3-D.
- merged driftwood.string into driftwood.util

### 0.37 ###
- added string.Strings.jarUrlToFile()

### 0.36 ###
- modified moldb2 to handle seg IDs more robustly (and are now never null)
- PdbReader now does better if lines are of different lengths,
  even if seg ID field is cut short to less than 4 characters.
  This was necessary because of a bug in Reduce (v2.15?).

### 0.35 ###
- imported MagnifiedTheme from king

### 0.34 ###
- marked gui.SuffixFileFilter as implementing java.io.FileFilter
- removed r3.Triple.like(double, double, double) b/c it was a duplicate
- improved some JavaDocs

### 0.33 ###
- added support for CCP4 maps in isosurface

### 0.32 ###
- made most methods in Triple take a Tuple3 instead of a Triple
  This may slow things down; I don't know.
- added r3.Builder.dock3on3() to support Mage-like docking and
  sidechain mutations.
- fixed Model to use 'A' as the default conformation when present
- ModelStates can now be collapsed() to single (new) objects.
- added toString() and isNaN() to r3.Transform
- added isNaN() to r3.Triple
- fixed an irritation where (0,0,0).unit() --> (NaN,NaN,NaN)
- finally got r3.Builder.dock3on3() to work correctly!!

### 0.31 ###
- added '_debug' property to gui.TablePane
- fixed an oversight in r3.Triple where angle() and dihedral() could,
  under certain conditions, return NaN for an angle very close to 0.
- added gui.TextCutCopyPasteMenu
- made AngleDial pay attention to setEnabled()

### 0.30 ###
- create gui.ExpSlider to support future development of a tau minimizer in KiNG
- allowed PdbWriter to recreate a whole PDB file from a ModelGroup
- wrote PdbMunger to test how badly my reader and writer mess things up.
  It looks like they do pretty good, actually, except for things that have
  anisotropic B's, etc. which I'm not prepared to handle.
- fixed a logical bug in gui.TablePane.skip() which affected subtables only.

### 0.29 ###
- continued work on moldb2
- added modification counting to the model
- wrote first draft of PdbReader
- added util.NullNaturalComparator to overcome a deficiency in TreeMap:
  null is not an allowed key when using the natural order of objects.
- PdbReader seems to perform perfectly well for several of my usual test PDBs.
- created ModelTreeViewer as a toy for exploring PDB naming structure
- renamed Model.xxxConformation() to xxxState() in accord w/ original plan
- added PdbWriter with writeAtoms() and writeResidues()
- moldb (original) refit to use GnuLinkedHashMap/Set for 1.3.1 compat.
- removed mouse wheel functionality from gui.AngleDial for 1.3.1 compat.
- removed resolution info from moldb.PDBFile b/c it used java.util.regexp from 1.4.x
- made AlignBox the parent of SwapBox

### 0.28 ###
- started package gnutil to import java.util.LinkedHashMap/Set and ancestors
  from GNU Classpath and extend them to support some additional operations.
- finished adding getBefore/After and moveBefore/After to GnuLinkedHashMap/Set.
- started work on moldb2 which uses gnutil. This separates stateful and stateless
  model information (i.e. naming hierarchy vs. coordinates)

### 0.27 ###
- moved AngleDial from king to driftwood.gui
- enlarged AngleDial, added optional read-out of original value
- improved AngleDial graphics and coloring
- gave AngleDial *much* friendlier mouse interface
- modified MenuList to not require an ordered Set (use Collection instead)

### 0.26 ###
- fixed a major pair of bugs in TablePane:
- wasn't marking cells as occupied
- gridx and gridy were saved and restored

### 0.25 ###
- added gui.MenuList
- added accept(String) to gui.SuffixFileFilter. Useful for checking e.g. URLs.
- squashed an inheritance bug in gui.FoldingBox where an overridden function
  assumed that its constructor had initialized a variable when it was called
  by the *superclass* constructor. Manifest in recessiveon kinemage groups.

### 0.24 ###
- created OrderedSet (really just to prove it can be done)
- created StreamTank and ProcessTank, for decreasing latency in I/O thru
  stdout and stderr with external processes!
- added process killer timeout to ProcessTank

### 0.23 ###
- added IndentBox and FoldingBox to gui
- added moldb.Residue.getAtomMap()
- added moldb.AminoAcid.atomMap; modified constructor and clone()
- added gui.SwapBox as the parent to IndentBox

### 0.22 ###
- added explode() to string.Strings
- added bind() to gui.ReflectiveAction for binding accelerator to components

### 0.21 ###
- duplicated moldb.AABackbone as AminoAcid; added a field for the side chain
- added tokenizeCommandLine() to string.Strings

### 0.20 ###
- added gui.ReflectiveAction

### 0.19 ###
- updated gui.TablePane so more methods returned this
- added addCell() methods since we can't change add()'s return type

### 0.18 ###
- introduced r3.MutableTuple3 and updated Triple, Rotation to use it
- made Transform a full 4x4 matrix to allow calculation of perspective too
- moldb.AABackbone relaxed distance constraint for getPhi(), getPsi()

### 0.17 ###
- added likeMatrix and likeScale to r3.Transform

### 0.16 ###
- rewrote Triple.dihedral and Triple.angle is response to profiling data,
  but the desired speed-up was not really observed...
- changed Residue.getAtom() to take advantage of ArrayList.get()
- started work on PDBFile.writeAtoms()
- added a Map of Atoms to Residue
- fixed bug in PDBFile.read(): B and Q were mixed up

### 0.15 ###
- added string.Strings with some functions from the old util.Str class
- created r3.Builder to do Construct4-like operations
- added toString() to Triple
- *** MAJOR BUG FOUND AND FIXED IN Triple.cross() !!! ***
  This was causing all sorts of geometrical calculations to fail,
  and was the result of a simple typo.
- fixed a bug in PDBFile that was not supporting multiple models

### 0.14 ###
- started moldb, a molecular database library for dealing with PDB files
- REQUIRES JAVA 1.4 or later because of LinkedHashMap
- created library with Atom, Residue, Segment, Model, PDBFile
- added AABackbone for doing Chiropraxis-like things
- made use of Seg ID optional for PDBFile
- fixed logical bug in Transform.likeRotation(Triple, Triple, double)
- consolidated build-*.xml files to simplify dependencies, etc.

### 0.13 ###
- started R3, which supports vector math with Triple and Transform
- imported Triple and refined the interface
- defined Tuple3
- started building Transform
- Transform is now mostly complete
- found and squashed a fencepost bug in CrystalVertexSource.evaluateVertex()
  that caused ArrayIndexOutOfBoundsExceptions in CVS.getValue()
- added get/setDefaults() to Props

### 0.12 ###
- migrated to building with Apache Ant (ant.apache.org)
- merged subpackages of driftwood under common control
- imported Props and added hasProperty() method

### 0.11 ###
- moved from util.isosurface to driftwood.isosurface
- made most fields in CrystalVertexSource public
- watch for OutOfMemoryError in OMap b/c no way to recognize DSN6 format

### 0.10 ###
- renamed DSN6VertexSource to OMapVertexSource
- resolved how cell edges are handled in O maps (padded to 8x8x8)
- added support for Brix maps from O
- added another BufferedInputStream to constructor to fix the broken
  mark() method in GZIPInputStream. (submitted to Sun)

### 0.09 ###
- added findVertexForPoint() to VertexLocator
- modified MMC.march() to deal with NaN from VertexEvaluators
- implemented findVertexForPoint() for CrystalVertexSource
- added auto-detect/auto-gunzip to XplorVertexSource for gzipped map files
- fixed problem reading O maps -- every byte pair is transposed
- added auto-gzip to DSN6VertexSource

### 0.08 ###
- O maps work but are of low quality with many artifacts
- Try supports color, map format switches
- I've tried many variations on the O format, but it's still not right
  I don't know what to do at this point...
- Using MapMan to convert DSN6 to XPLOR and then rendering gives
  perfect results, which are different from the source O-map.
  I must still not understand the format completely.

### 0.07 ###
- it looks like non-orthogonal unit cell axes are now supported properly.
  YAY!!!
- reorganized code somewhat to combine (hopefully) common functions in
  CrystalVertexSource
- began work on DSN6VertexSource to support O maps
  
### 0.06 ###
- support for non-orthogonal axes (in progress)

### 0.05 ###
- fixed bugs in XplorVertexSource.nextValue()
- added bin wrapping to XplorVertexSource.{evaluate,locate}Vertex()
- realized locateVertex() shouldn't do wrapping after all. (D'oh!)

### 0.04 ###
- wrote KinfileEdgePlotter
- started XplorVertexSource
- fixed fencepost bug in MMC.march()
- fixed cube cases #23 and #108; regenerated kin files

### 0.03 ###
- wrote MeshMarchingCubes
- added SuffixFileFilter

### 0.02 ###
- TablePane: replaced awkward earlier method of tracking which cells were
  occupied with a sparse array based on HashMap and java.awt.Point.
- TablePane: removed the replace() method until we can code it properly.

### 0.01 ###
- added TablePane
king-2.21.120420/driftwood/doc/0000755000000000000000000000000011744306100014355 5ustar rootrootking-2.21.120420/driftwood/doc/moldb2.graffle0000644000000000000000000021632411531212740017074 0ustar rootroot ActiveLayerIndex 0 AutoAdjust CanvasColor w 1 CanvasOrigin {0, 0} CanvasScale 1 ColumnAlign 0 ColumnSpacing 36 DisplayScale 1 in = 1 in GraphDocumentVersion 5 GraphicsList AllowLabelDrop Class LineGraphic Head ID 240 Info 7 ID 248 Points {207, 684} {180, 684} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 Tail ID 247 Info 8 Bounds {{207, 657}, {90, 54}} Class ShapedGraphic ID 247 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 ModelState\ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f1\b \cf0 "B"\ (refit)} Bounds {{323.725, 654.843}, {143, 14}} Class ShapedGraphic FitText Vertical ID 249 Line ID 246 Position 0.50762426853179932 RotationType 0 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 responds with AtomState} Wrap YES AllowLabelDrop Class LineGraphic Head ID 244 Info 5 ID 246 Points {297, 639} {490.5, 684} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 Tail ID 239 Info 1 Bounds {{335.54, 608.703}, {105, 14}} Class ShapedGraphic FitText Vertical ID 250 Line ID 245 Position 0.52951109409332275 RotationType 0 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 queries with Atom} Wrap YES AllowLabelDrop Class LineGraphic Head ID 239 Info 2 ID 245 Points {490.5, 630} {297, 603} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 Tail ID 244 Info 6 Bounds {{441, 630}, {99, 54}} Class ShapedGraphic ID 244 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Diamond Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 Client Program} AllowLabelDrop Class LineGraphic Head ID 241 Info 7 ID 243 Points {108, 684} {81, 657} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 Tail ID 240 Info 8 Bounds {{93.9232, 632.451}, {97, 14}} Class ShapedGraphic FitText Vertical ID 251 Line ID 242 Position 0.51251411437988281 RotationType 0 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 masks entries in} Wrap YES AllowLabelDrop Class LineGraphic Head ID 241 Info 7 ID 242 Points {207, 621} {81, 657} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 Tail ID 239 Info 8 Bounds {{-0, 639}, {81, 36}} Class ShapedGraphic ID 241 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 ModelState\ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f1\b \cf0 "_"} Bounds {{108, 666}, {72, 36}} Class ShapedGraphic ID 240 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 ModelState\ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f1\b \cf0 "B"} Bounds {{207, 603}, {90, 36}} Class ShapedGraphic ID 239 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;\f1\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 ModelState\ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f1\b \cf0 "A"} Bounds {{445.5, 8}, {85, 14}} Class ShapedGraphic FitText YES Flow Resize ID 238 Shape Rectangle Style fill Color b 0.85 g 1 r 0.7 Draws NO FillType 2 GradientColor b 0.425 g 0.5 r 0.35 shadow Draws NO stroke Cap 0 Draws NO Join 0 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 8/15/06 - IWD} Wrap NO AllowLabelDrop Class LineGraphic ID 237 OrthogonalBarAutomatic OrthogonalBarPosition -1 Points {0, 594} {540, 594} Style stroke Cap 0 HeadArrow 0 Join 0 LineType 2 TailArrow 0 Width 4 Bounds {{239.5, 540}, {242, 14}} Class ShapedGraphic FitText YES Flow Resize ID 236 Shape Rectangle Style fill Color b 0.85 g 1 r 0.7 Draws NO FillType 2 GradientColor b 0.425 g 0.5 r 0.35 shadow Draws NO stroke Cap 0 Draws NO Join 0 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 = NMR structure with one state per MODEL} Wrap NO Bounds {{113.5, 540}, {18, 14}} Class ShapedGraphic FitText YES Flow Resize ID 235 Shape Rectangle Style fill Color b 0.85 g 1 r 0.7 Draws NO FillType 2 GradientColor b 0.425 g 0.5 r 0.35 shadow Draws NO stroke Cap 0 Draws NO Join 0 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 +} Wrap NO Bounds {{126, 531}, {90, 36}} Class ShapedGraphic ID 234 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 ModelState} Bounds {{27, 531}, {90, 36}} Class ShapedGraphic ID 233 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 Model} Bounds {{135, 450}, {90, 36}} Class ShapedGraphic ID 232 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 ModelState} Bounds {{126, 441}, {90, 36}} Class ShapedGraphic ID 231 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 ModelState} Bounds {{239.5, 441}, {259, 14}} Class ShapedGraphic FitText YES Flow Resize ID 230 Shape Rectangle Style fill Color b 0.85 g 1 r 0.7 Draws NO FillType 2 GradientColor b 0.425 g 0.5 r 0.35 shadow Draws NO stroke Cap 0 Draws NO Join 0 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 = crystal structure with alternate conformations} Wrap NO Bounds {{95.5, 441}, {18, 14}} Class ShapedGraphic FitText YES Flow Resize ID 229 Shape Rectangle Style fill Color b 0.85 g 1 r 0.7 Draws NO FillType 2 GradientColor b 0.425 g 0.5 r 0.35 shadow Draws NO stroke Cap 0 Draws NO Join 0 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 +} Wrap NO Bounds {{117, 432}, {90, 36}} Class ShapedGraphic ID 228 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 ModelState} Bounds {{0, 432}, {90, 36}} Class ShapedGraphic ID 227 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 Model} Bounds {{239.5, 387}, {238, 14}} Class ShapedGraphic FitText YES Flow Resize ID 226 Shape Rectangle Style fill Color b 0.85 g 1 r 0.7 Draws NO FillType 2 GradientColor b 0.425 g 0.5 r 0.35 shadow Draws NO stroke Cap 0 Draws NO Join 0 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 = simple model with only one conformation} Wrap NO Bounds {{95.5, 387}, {18, 14}} Class ShapedGraphic FitText YES Flow Resize ID 225 Shape Rectangle Style fill Color b 0.85 g 1 r 0.7 Draws NO FillType 2 GradientColor b 0.425 g 0.5 r 0.35 shadow Draws NO stroke Cap 0 Draws NO Join 0 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 +} Wrap NO Bounds {{117, 378}, {90, 36}} Class ShapedGraphic ID 224 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 ModelState} Bounds {{0, 378}, {90, 36}} Class ShapedGraphic ID 223 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 Model} AllowLabelDrop Class LineGraphic ID 222 OrthogonalBarAutomatic OrthogonalBarPosition -1 Points {0, 360} {540, 360} Style stroke Cap 0 HeadArrow 0 Join 0 LineType 2 TailArrow 0 Width 4 Bounds {{418.5, 171}, {104, 14}} Class ShapedGraphic FitText Vertical Flow Resize ID 252 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 may be part of 1+} AllowLabelDrop Class LineGraphic Head ID 220 Info 1 ID 221 OrthogonalBarAutomatic OrthogonalBarPosition -1 Points {432, 283.5} {477, 270.5} {432, 126} Style stroke Cap 0 HeadArrow FilledArrow Join 0 LineType 2 Pattern 2 TailArrow 0 Tail ID 201 Info 7 Bounds {{342, 81}, {90, 45}} Class ShapedGraphic ID 220 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 ModelState\ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f1\i\b0 \cf0 a Map <Atom, AtomState>} Bounds {{402, 61.4581}, {114, 14}} Class ShapedGraphic FitText Vertical ID 253 Line ID 219 Position 0.35351485013961792 RotationType 0 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 can "chain" to other} Wrap YES AllowLabelDrop Class LineGraphic Head ID 220 Info 6 ID 219 OrthogonalBarAutomatic OrthogonalBarPosition 7.5500030517578125 Points {432, 103.5} {459, 54} {387, 54} {387, 81} Style stroke Cap 0 HeadArrow FilledArrow Join 0 LineType 2 TailArrow 0 Tail ID 220 Info 7 Bounds {{219, 240}, {105, 42}} Class ShapedGraphic FitText Vertical Flow Resize ID 218 Shape Rectangle Style fill GradientColor b 0.425 g 0.5 r 0.35 shadow Draws NO stroke Cap 0 Draws NO Join 0 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 maps via a ModelState to exactly one} AllowLabelDrop Class LineGraphic Head ID 201 Info 8 ID 217 OrthogonalBarAutomatic OrthogonalBarPosition -1 Points {198, 283.5} {342, 283.5} Style stroke Cap 0 HeadArrow FilledArrow Join 0 LineType 2 TailArrow 0 Width 3 Tail ID 200 Info 7 Bounds {{355.5, 153.532}, {63, 14}} Class ShapedGraphic FitText YES ID 254 Line ID 216 Position 0.25579535961151123 RotationType 0 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Align 0 Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f0\fs24 \cf0 has many} AllowLabelDrop Class LineGraphic Head ID 201 Info 6 ID 216 Points {387, 126} {387, 261} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 AllowLabelDrop Class LineGraphic ID 215 Points {387, 126} {441, 261} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 AllowLabelDrop Class LineGraphic ID 214 Points {387, 126} {333, 261} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 Bounds {{228.827, 96.5}, {85, 14}} Class ShapedGraphic FitText YES ID 255 Line ID 213 Position 0.5380852222442627 RotationType 0 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Align 0 Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f0\fs24 \cf0 may link to 1+} AllowLabelDrop Class LineGraphic Head ID 220 Info 8 ID 213 OrthogonalBarAutomatic OrthogonalBarPosition -1 Points {189, 103.5} {342, 103.5} Style stroke Cap 0 HeadArrow FilledArrow Join 0 LineType 2 Pattern 2 TailArrow 0 Tail ID 198 Info 7 Bounds {{2, 130}, {104, 14}} Class ShapedGraphic FitText Vertical Flow Resize ID 256 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 may be part of 1+} AllowLabelDrop Class LineGraphic Head ID 198 Info 8 ID 212 OrthogonalBarAutomatic OrthogonalBarPosition 2.7838134765625 Points {117, 171} {81, 153.532} {117, 103.5} Style stroke Cap 0 HeadArrow FilledArrow Join 0 LineType 2 Pattern 2 TailArrow 0 Tail ID 199 Info 3 Bounds {{27, 230.795}, {76, 14}} Class ShapedGraphic FitText Vertical Flow Resize ID 257 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\fs24 \cf0 belongs to a} AllowLabelDrop Class LineGraphic Head ID 199 Info 4 ID 211 OrthogonalBarAutomatic OrthogonalBarPosition -1 Points {108, 283.5} {63, 244.795} {117, 216} Style stroke Cap 0 HeadArrow FilledArrow Join 0 LineType 2 TailArrow 0 Tail ID 200 Info 8 Bounds {{234.203, 310.9}, {76, 14}} Class ShapedGraphic FitText YES ID 258 Line ID 210 Position 0.49145302176475525 RotationType 0 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Align 0 Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f0\fs24 \cf0 belongs to a} AllowLabelDrop Class LineGraphic Head ID 200 Info 5 ID 210 OrthogonalBarAutomatic OrthogonalBarPosition -1 Points {387, 306} {153, 306} Style stroke Cap 0 HeadArrow FilledArrow Join 0 LineType 2 TailArrow 0 Tail ID 201 Info 5 Bounds {{121.5, 230.795}, {63, 14}} Class ShapedGraphic FitText YES ID 259 Line ID 209 Position 0.48433038592338562 RotationType 0 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Align 0 Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f0\fs24 \cf0 has many} AllowLabelDrop Class LineGraphic ID 209 Points {153, 216} {153, 261} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 AllowLabelDrop Class LineGraphic ID 208 Points {153, 216} {207, 261} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 Bounds {{121.5, 140.795}, {63, 14}} Class ShapedGraphic FitText YES ID 260 Line ID 207 Position 0.48433038592338562 RotationType 0 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Align 0 Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f0\fs24 \cf0 has many} AllowLabelDrop Class LineGraphic Head ID 199 Info 6 ID 207 Points {153, 126} {153, 171} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 Tail ID 198 Info 5 Bounds {{204.966, 56.4594}, {47, 14}} Class ShapedGraphic FitText YES ID 261 Line ID 206 Position 0.5127606987953186 RotationType 0 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Align 0 Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f0\fs24 \cf0 has 1+} AllowLabelDrop Class LineGraphic Head ID 198 ID 206 Points {270, 45} {189, 81} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 Tail ID 203 Info 5 Bounds {{131.945, 15.5}, {60, 14}} Class ShapedGraphic FitText YES ID 262 Line ID 205 Position 0.49949029088020325 RotationType 0 Shape Rectangle Style shadow Draws NO stroke Draws NO Text Align 0 Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural\pardirnatural \f0\fs24 \cf0 creates a} AllowLabelDrop Class LineGraphic Head ID 203 Info 8 ID 205 Points {108, 22.5} {216, 22.5} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 Tail ID 204 Info 7 Bounds {{0, 0}, {108, 45}} Class ShapedGraphic ID 204 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 PdbReader\ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f1\i\b0 \cf0 or \f0\i0\b \ CifReader} Bounds {{216, 0}, {108, 45}} Class ShapedGraphic ID 203 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 CoordinateFile} AllowLabelDrop Class LineGraphic ID 202 Points {270, 63} {270, 360} Style stroke Cap 0 HeadArrow 0 Join 0 Pattern 1 TailArrow 0 Bounds {{342, 261}, {90, 45}} Class ShapedGraphic ID 201 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Style fill Color b 0.72221 g 0.992477 r 1 GradientColor w 1 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 AtomState\ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f1\i\b0 \cf0 has x, y, z, B, occ, altconf, ...} Bounds {{108, 261}, {90, 45}} Class ShapedGraphic ID 200 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 Atom\ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f1\i\b0 \cf0 has name but no coords} Bounds {{117, 171}, {72, 45}} Class ShapedGraphic ID 199 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;\f1\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 Residue\ \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f1\i\b0 \cf0 belongs to chain, seg} Bounds {{117, 81}, {72, 45}} Class ShapedGraphic ID 198 Magnets {1, 1} {1, -1} {-1, -1} {-1, 1} {0, 1} {0, -1} {1, 0} {-1, 0} Shape Rectangle Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf410 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\b\fs24 \cf0 Model} AllowLabelDrop Class LineGraphic ID 197 Points {153, 126} {207, 171} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 Tail ID 198 Info 5 AllowLabelDrop Class LineGraphic ID 196 Points {153, 126} {99, 171} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 Tail ID 198 Info 5 AllowLabelDrop Class LineGraphic ID 195 Points {153, 216} {99, 261} Style stroke Cap 0 HeadArrow FilledArrow Join 0 TailArrow 0 Bounds {{18, 522}, {207, 54}} Class ShapedGraphic ID 194 Shape Rectangle Style stroke Cap 0 CornerRadius 5 Join 0 Pattern 2 Bounds {{9, 513}, {207, 54}} Class ShapedGraphic ID 193 Shape Rectangle Style stroke Cap 0 CornerRadius 5 Join 0 Pattern 2 Bounds {{0, 504}, {207, 54}} Class ShapedGraphic ID 192 Shape Rectangle Style stroke Cap 0 CornerRadius 5 Join 0 Pattern 2 GridInfo ShowsGrid YES SnapsToGrid YES GuidesLocked NO GuidesVisible YES HPages 1 ImageCounter 1 IsPalette NO KeepToScale Layers Lock NO Name Layer 1 Print YES View YES LayoutInfo LinksVisible NO MagnetsVisible NO MasterSheet Master 1 MasterSheets ActiveLayerIndex 0 AutoAdjust CanvasColor w 1 CanvasOrigin {0, 0} CanvasScale 1 ColumnAlign 0 ColumnSpacing 36 DisplayScale 1 in = 1 in GraphicsList GridInfo ShowsGrid YES SnapsToGrid YES HPages 1 IsPalette NO KeepToScale Layers Lock NO Name Layer 1 Print YES View YES LayoutInfo Orientation 2 RowAlign 0 RowSpacing 36 SheetTitle Master 1 UniqueID 1 VPages 1 ModificationDate 2006-08-15 15:31:55 -0400 Modifier Ian W. Davis NotesVisible NO Orientation 2 OriginVisible NO PageBreaks YES PrintInfo NSBottomMargin float 36 NSLeftMargin float 36 NSPaperSize size {612, 792} NSPrintAllPages int 0 NSRightMargin float 36 NSTopMargin float 36 ReadOnly NO RowAlign 0 RowSpacing 36 SheetTitle Canvas 1 SmartAlignmentGuidesActive YES SmartDistanceGuidesActive NO UniqueID 1 UseEntirePage VPages 1 WindowInfo CurrentSheet 0 DrawerOpen DrawerTab Outline DrawerWidth 209 FitInWindow Frame {{896, 330}, {555, 797}} ShowRuler ShowStatusBar VisibleRegion {{0, 0}, {540, 683}} Zoom 1 king-2.21.120420/driftwood/doc/cubes-marching/0000755000000000000000000000000011756425772017270 5ustar rootrootking-2.21.120420/driftwood/doc/cubes-marching/corners-and-edges2.kin0000644000000000000000000006365711531212740023352 0ustar rootroot@kinemage 1 @group {0} dominant animate @balllist {0} color= red radius= 3.0 @vectorlist {edges} color= cyan @group {1} dominant animate @balllist {1} color= red radius= 3.0 {v0} 0 0 0 @vectorlist {edges} color= cyan {x}P 50 0 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @group {2} dominant animate @balllist {2} color= red radius= 3.0 {v1} 100 0 0 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 0 0 {x} 100 0 50 @group {3} dominant animate @balllist {3} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 0 0 50 {x} 100 0 50 @group {4} dominant animate @balllist {4} color= red radius= 3.0 {v2} 100 100 0 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 @group {5} dominant animate @balllist {5} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 {x}P 50 0 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @group {6} dominant animate @balllist {6} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 50 0 0 {x} 100 0 50 @group {7} dominant animate @balllist {7} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 @vectorlist {edges} color= cyan {x}P 100 0 50 {x} 0 0 50 {x} 100 100 50 {x}P 50 100 0 {x} 0 50 0 {x} 0 0 50 @group {8} dominant animate @balllist {8} color= red radius= 3.0 {v3} 0 100 0 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 @group {9} dominant animate @balllist {9} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 @vectorlist {edges} color= cyan {x}P 0 100 50 {x} 0 0 50 {x} 50 0 0 {x} 50 100 0 @group {10} dominant animate @balllist {10} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 {x}P 100 50 0 {x} 50 0 0 {x} 100 0 50 @group {11} dominant animate @balllist {11} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 @vectorlist {edges} color= cyan {x}P 100 0 50 {x} 0 0 50 {x} 0 100 50 {x} 100 0 50 {x}P 100 50 0 {x} 50 100 0 @group {12} dominant animate @balllist {12} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 0 100 50 @group {13} dominant animate @balllist {13} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 @vectorlist {edges} color= cyan {x}P 100 100 50 {x} 0 0 50 {x} 0 100 50 {x}P 100 50 0 {x} 50 0 0 {x} 0 0 50 @group {14} dominant animate @balllist {14} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 @vectorlist {edges} color= cyan {x}P 50 0 0 {x} 0 50 0 {x} 0 100 50 {x} 100 0 50 {x} 50 0 0 @group {15} dominant animate @balllist {15} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 @vectorlist {edges} color= cyan {x}P 100 0 50 {x} 0 0 50 {x} 0 100 50 @group {16} dominant animate @balllist {16} color= red radius= 3.0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 @group {17} dominant animate @balllist {17} color= red radius= 3.0 {v0} 0 0 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 50 0 {x} 50 0 0 {x} 50 0 100 @group {18} dominant animate @balllist {18} color= red radius= 3.0 {v1} 100 0 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 0 0 {x} 100 0 50 {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 @group {19} dominant animate @balllist {19} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 0 50 100 {x} 100 50 0 {x}P 50 0 100 {x} 100 0 50 @group {20} dominant animate @balllist {20} color= red radius= 3.0 {v2} 100 100 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 @group {21} dominant animate @balllist {21} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 {x}P 0 50 100 {x} 0 50 0 {x} 50 0 0 {x} 50 0 100 @group {22} dominant animate @balllist {22} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 50 0 0 {x} 100 0 50 {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 @group {23} dominant animate @balllist {23} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 50 100 {x} 100 0 50 {x} 50 100 0 {x} 0 50 100 {x}P 50 0 100 {x} 100 0 50 @group {24} dominant animate @balllist {24} color= red radius= 3.0 {v3} 0 100 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 @group {25} dominant animate @balllist {25} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 50 0 0 {x} 50 0 100 {x} 50 100 0 {x}P 0 50 100 {x} 0 100 50 @group {26} dominant animate @balllist {26} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 0 0 {x} 100 0 50 {x}P 0 100 50 {x} 0 50 0 {x} 50 100 0 {x}P 0 50 100 {x} 0 0 50 {x} 50 0 100 @group {27} dominant animate @balllist {27} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 {x} 50 0 100 {x} 100 0 50 {x}P 0 50 100 {x} 0 100 50 @group {28} dominant animate @balllist {28} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 0 100 50 {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 @group {29} dominant animate @balllist {29} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 0 100 50 {x} 0 50 100 {x} 50 0 0 {x} 100 100 50 {x} 0 50 100 {x}P 50 0 100 {x} 50 0 0 {x} 100 50 0 @group {30} dominant animate @balllist {30} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 @vectorlist {edges} color= cyan {x}P 50 0 0 {x} 0 50 0 {x} 0 100 50 {x} 100 0 50 {x} 50 0 0 {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 @group {32} dominant animate @balllist {32} color= red radius= 3.0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 100 0 50 @group {33} dominant animate @balllist {33} color= red radius= 3.0 {v0} 0 0 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 50 0 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 {x}P 50 0 100 {x} 100 0 50 @group {34} dominant animate @balllist {34} color= red radius= 3.0 {v1} 100 0 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 0 0 {x} 50 0 100 @group {35} dominant animate @balllist {35} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 100 50 100 {x}P 50 0 100 {x} 0 0 50 {x} 0 50 0 @group {36} dominant animate @balllist {36} color= red radius= 3.0 {v2} 100 100 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 {x}P 50 0 100 {x} 100 0 50 @group {37} dominant animate @balllist {37} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 {x}P 50 0 100 {x} 100 0 50 {x}P 50 0 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @group {38} dominant animate @balllist {38} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 50 0 0 {x} 50 100 0 {x} 50 0 100 {x} 50 0 0 @group {39} dominant animate @balllist {39} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 50 0 100 {x} 0 0 50 {x} 0 50 0 {x} 50 100 0 @group {40} dominant animate @balllist {40} color= red radius= 3.0 {v3} 0 100 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 {x}P 50 0 100 {x} 100 0 50 @group {41} dominant animate @balllist {41} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 50 0 0 {x} 0 0 50 {x} 0 100 50 {x}P 50 0 100 {x} 100 0 50 @group {42} dominant animate @balllist {42} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 {x}P 100 50 0 {x} 50 0 0 {x} 50 0 100 @group {43} dominant animate @balllist {43} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 0 0 50 {x} 0 100 50 {x}P 100 50 0 {x} 50 100 0 {x} 100 50 100 {x} 0 0 50 {x} 50 100 0 @group {44} dominant animate @balllist {44} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 0 100 50 {x}P 50 0 100 {x} 100 0 50 @group {45} dominant animate @balllist {45} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 0 100 50 {x} 0 0 50 {x} 100 100 50 {x}P 100 50 0 {x} 50 0 0 {x} 0 0 50 {x}P 50 0 100 {x} 100 0 50 @group {46} dominant animate @balllist {46} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 0 100 50 {x} 0 50 0 {x} 50 0 0 {x} 50 0 100 {x} 100 100 50 {x} 0 50 0 {x} 50 0 100 @group {48} dominant animate @balllist {48} color= red radius= 3.0 {v4} 0 0 100 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 0 50 {x} 100 0 50 @group {49} dominant animate @balllist {49} color= red radius= 3.0 {v0} 0 0 0 {v4} 0 0 100 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 50 0 {x} 100 50 100 {x}P 100 0 50 {x} 50 0 0 {x} 0 50 0 @group {50} dominant animate @balllist {50} color= red radius= 3.0 {v1} 100 0 0 {v4} 0 0 100 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 50 0 0 {x} 100 50 0 {x} 0 50 100 {x} 0 0 50 {x} 50 0 0 @group {51} dominant animate @balllist {51} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v4} 0 0 100 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 0 50 100 @group {52} dominant animate @balllist {52} color= red radius= 3.0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 {x}P 0 50 100 {x} 0 0 50 {x} 100 0 50 @group {53} dominant animate @balllist {53} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 50 0 {x} 100 50 100 {x}P 100 0 50 {x} 50 0 0 {x} 0 50 0 {x}P 100 50 0 {x} 50 100 0 @group {54} dominant animate @balllist {54} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 50 0 0 {x} 0 0 50 {x} 0 50 100 {x} 100 100 50 {x} 50 0 0 {x} 0 50 100 @group {56} dominant animate @balllist {56} color= red radius= 3.0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 0 50 {x} 100 0 50 {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 @group {57} dominant animate @balllist {57} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 0 100 50 {x} 0 50 100 {x} 100 0 50 {x} 50 100 0 {x} 0 50 100 {x}P 100 0 50 {x} 50 0 0 {x} 50 100 0 @group {58} dominant animate @balllist {58} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 50 0 0 {x} 100 50 0 {x} 0 50 100 {x} 0 0 50 {x} 50 0 0 {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 @group {60} dominant animate @balllist {60} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 0 50 {x} 100 0 50 {x}P 100 50 0 {x} 0 50 0 {x} 0 100 50 @group {64} dominant animate @balllist {64} color= red radius= 3.0 {v6} 100 100 100 @vectorlist {edges} color= cyan @group {65} dominant animate @balllist {65} color= red radius= 3.0 {v0} 0 0 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 0 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @group {66} dominant animate @balllist {66} color= red radius= 3.0 {v1} 100 0 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 0 0 {x} 100 0 50 @group {67} dominant animate @balllist {67} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 0 0 50 {x} 100 0 50 @group {68} dominant animate @balllist {68} color= red radius= 3.0 {v2} 100 100 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 @group {69} dominant animate @balllist {69} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 {x}P 50 0 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @group {70} dominant animate @balllist {70} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 50 0 0 {x} 50 100 100 {x}P 50 0 0 {x} 100 0 50 @group {71} dominant animate @balllist {71} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 0 50 {x} 100 0 50 {x} 50 100 100 {x} 0 50 0 {x} 100 0 50 @group {72} dominant animate @balllist {72} color= red radius= 3.0 {v3} 0 100 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 @group {73} dominant animate @balllist {73} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 50 0 0 {x} 0 0 50 {x} 0 100 50 @group {74} dominant animate @balllist {74} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 0 0 {x} 100 0 50 {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 @group {75} dominant animate @balllist {75} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 0 0 50 {x} 100 0 50 {x} 0 100 50 {x} 0 0 50 {x}P 100 50 0 {x} 50 100 0 @group {76} dominant animate @balllist {76} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 100 50 100 {x}P 0 50 0 {x} 0 100 50 @group {77} dominant animate @balllist {77} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 0 100 50 {x} 0 0 50 {x} 50 0 0 {x} 100 50 0 {x} 50 100 100 {x} 0 0 50 {x} 100 50 0 @group {78} dominant animate @balllist {78} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 0 50 {x} 50 0 0 {x} 0 50 0 {x} 0 100 50 {x} 100 0 50 @group {80} dominant animate @balllist {80} color= red radius= 3.0 {v4} 0 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 @group {81} dominant animate @balllist {81} color= red radius= 3.0 {v0} 0 0 0 {v4} 0 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 50 0 0 {x} 0 50 0 {x} 0 50 100 @group {82} dominant animate @balllist {82} color= red radius= 3.0 {v1} 100 0 0 {v4} 0 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 0 0 {x} 100 0 50 {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 @group {83} dominant animate @balllist {83} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v4} 0 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 0 50 100 {x} 100 50 0 {x}P 50 0 100 {x} 100 0 50 @group {84} dominant animate @balllist {84} color= red radius= 3.0 {v2} 100 100 0 {v4} 0 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 @group {85} dominant animate @balllist {85} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v4} 0 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 {x}P 50 0 100 {x} 50 0 0 {x} 0 50 0 {x} 0 50 100 @group {86} dominant animate @balllist {86} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 50 0 0 {x} 50 100 100 {x}P 50 0 0 {x} 100 0 50 {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 @group {88} dominant animate @balllist {88} color= red radius= 3.0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 @group {89} dominant animate @balllist {89} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 0 0 {x} 50 100 0 {x} 50 0 100 {x} 50 0 0 {x}P 0 50 100 {x} 0 100 50 @group {90} dominant animate @balllist {90} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 {x}P 100 50 0 {x} 50 0 0 {x} 100 0 50 @group {92} dominant animate @balllist {92} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 100 50 100 {x}P 0 50 0 {x} 0 100 50 {x}P 50 0 100 {x} 0 0 50 {x} 0 50 100 @group {96} dominant animate @balllist {96} color= red radius= 3.0 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 100 0 50 @group {97} dominant animate @balllist {97} color= red radius= 3.0 {v0} 0 0 0 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 100 0 50 {x}P 50 0 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @group {98} dominant animate @balllist {98} color= red radius= 3.0 {v1} 100 0 0 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 50 0 0 {x} 50 100 100 {x}P 50 0 0 {x} 100 50 0 @group {99} dominant animate @balllist {99} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 100 {x} 100 100 50 {x} 0 50 0 {x} 50 0 100 @group {100} dominant animate @balllist {100} color= red radius= 3.0 {v2} 100 100 0 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 {x} 50 0 100 {x} 100 0 50 @group {101} dominant animate @balllist {101} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 {x} 50 0 100 {x} 100 0 50 {x}P 50 0 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @group {102} dominant animate @balllist {102} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 50 0 0 {x} 50 0 100 @group {104} dominant animate @balllist {104} color= red radius= 3.0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 100 0 50 {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 @group {105} dominant animate @balllist {105} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 100 0 50 {x}P 50 100 0 {x} 50 0 0 {x} 0 0 50 {x} 0 100 50 @group {106} dominant animate @balllist {106} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 50 0 0 {x} 50 100 100 {x}P 50 0 0 {x} 100 50 0 {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 @group {108} dominant animate @balllist {108} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 0 50 {x} 50 0 100 {x} 0 100 50 {x} 100 50 0 {x} 50 0 100 {x}P 0 100 50 {x} 0 50 0 {x} 100 50 0 @group {112} dominant animate @balllist {112} color= red radius= 3.0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 0 50 {x} 0 0 50 {x} 100 100 50 {x}P 0 50 100 {x} 0 0 50 @group {113} dominant animate @balllist {113} color= red radius= 3.0 {v0} 0 0 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 0 50 {x} 50 0 0 {x} 0 50 0 {x} 0 50 100 {x} 100 100 50 {x} 50 0 0 {x} 0 50 100 {x} 100 100 50 @group {114} dominant animate @balllist {114} color= red radius= 3.0 {v1} 100 0 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 0 0 {x} 0 0 50 {x} 0 50 100 {x} 100 50 0 @group {116} dominant animate @balllist {116} color= red radius= 3.0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 100 0 50 {x} 0 0 50 {x} 0 50 100 {x}P 50 100 0 {x} 100 50 0 {x} 0 0 50 {x} 50 100 100 {x} 100 50 0 @group {120} dominant animate @balllist {120} color= red radius= 3.0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 100 50 {x}P 100 0 50 {x} 0 0 50 {x} 100 100 50 {x}P 0 50 100 {x} 0 0 50 @group {128} dominant animate @balllist {128} color= red radius= 3.0 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 100 50 @group {129} dominant animate @balllist {129} color= red radius= 3.0 {v0} 0 0 0 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 100 50 {x}P 50 0 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @group {130} dominant animate @balllist {130} color= red radius= 3.0 {v1} 100 0 0 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 100 50 {x}P 100 50 0 {x} 50 0 0 {x} 100 0 50 @group {131} dominant animate @balllist {131} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 0 0 50 {x} 100 0 50 {x}P 0 50 100 {x} 0 100 50 @group {132} dominant animate @balllist {132} color= red radius= 3.0 {v2} 100 100 0 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 100 50 {x}P 100 50 0 {x} 50 100 0 @group {133} dominant animate @balllist {133} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 100 50 {x}P 100 50 0 {x} 50 100 0 {x}P 50 0 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @group {134} dominant animate @balllist {134} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 50 0 0 {x} 100 0 50 {x}P 0 100 50 {x} 0 50 100 @group {136} dominant animate @balllist {136} color= red radius= 3.0 {v3} 0 100 0 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 50 100 @group {137} dominant animate @balllist {137} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 50 0 0 {x} 50 100 100 {x}P 0 50 100 {x} 0 0 50 {x} 50 0 0 @group {138} dominant animate @balllist {138} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 50 100 {x}P 100 50 0 {x} 50 0 0 {x} 100 0 50 @group {140} dominant animate @balllist {140} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 0 50 0 {x} 0 50 100 {x} 100 50 0 @group {144} dominant animate @balllist {144} color= red radius= 3.0 {v4} 0 0 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 0 0 50 {x} 0 100 50 @group {145} dominant animate @balllist {145} color= red radius= 3.0 {v0} 0 0 0 {v4} 0 0 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 50 0 0 {x} 50 100 100 {x}P 50 0 0 {x} 0 50 0 {x} 0 100 50 @group {146} dominant animate @balllist {146} color= red radius= 3.0 {v1} 100 0 0 {v4} 0 0 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 0 0 50 {x} 0 100 50 {x}P 100 50 0 {x} 50 0 0 {x} 100 0 50 @group {148} dominant animate @balllist {148} color= red radius= 3.0 {v2} 100 100 0 {v4} 0 0 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 0 0 50 {x} 0 100 50 {x}P 100 50 0 {x} 50 100 0 @group {152} dominant animate @balllist {152} color= red radius= 3.0 {v3} 0 100 0 {v4} 0 0 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 100 {x} 50 100 0 @group {160} dominant animate @balllist {160} color= red radius= 3.0 {v5} 100 0 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 100 50 {x}P 50 0 100 {x} 100 0 50 @group {161} dominant animate @balllist {161} color= red radius= 3.0 {v0} 0 0 0 {v5} 100 0 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 100 50 {x}P 50 0 100 {x} 100 0 50 {x}P 50 0 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @group {162} dominant animate @balllist {162} color= red radius= 3.0 {v1} 100 0 0 {v5} 100 0 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 0 0 {x} 50 0 100 {x}P 0 50 100 {x} 0 100 50 @group {164} dominant animate @balllist {164} color= red radius= 3.0 {v2} 100 100 0 {v5} 100 0 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 100 50 0 {x} 50 100 0 {x}P 50 0 100 {x} 100 0 50 {x}P 0 50 100 {x} 0 100 50 @group {168} dominant animate @balllist {168} color= red radius= 3.0 {v3} 0 100 0 {v5} 100 0 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 0 50 0 {x} 0 50 100 {x}P 50 0 100 {x} 100 0 50 @group {176} dominant animate @balllist {176} color= red radius= 3.0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 0 0 50 {x} 100 0 50 {x} 0 100 50 {x} 0 0 50 @group {192} dominant animate @balllist {192} color= red radius= 3.0 {v6} 100 100 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 100 50 @group {193} dominant animate @balllist {193} color= red radius= 3.0 {v0} 0 0 0 {v6} 100 100 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 100 50 {x}P 50 0 0 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @group {194} dominant animate @balllist {194} color= red radius= 3.0 {v1} 100 0 0 {v6} 100 100 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 0 50 100 {x} 0 100 50 {x}P 100 50 0 {x} 50 0 0 {x} 100 0 50 @group {196} dominant animate @balllist {196} color= red radius= 3.0 {v2} 100 100 0 {v6} 100 100 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 50 100 0 {x} 100 50 0 {x} 0 50 100 {x} 0 100 50 @group {200} dominant animate @balllist {200} color= red radius= 3.0 {v3} 0 100 0 {v6} 100 100 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 100 50 100 {x} 0 50 0 {x} 0 50 100 {x}P 50 100 0 {x} 0 50 0 @group {208} dominant animate @balllist {208} color= red radius= 3.0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 100 100 50 {x} 0 0 50 {x} 0 100 50 {x}P 50 0 100 {x} 0 0 50 @group {224} dominant animate @balllist {224} color= red radius= 3.0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @vectorlist {edges} color= cyan {x}P 50 0 100 {x} 100 0 50 {x} 0 100 50 {x} 0 50 100 king-2.21.120420/driftwood/doc/cubes-marching/mc-static.kin0000644000000000000000000000375411531212740021644 0ustar rootroot@text Illustration for Marching Cubes, transformed into a right-handed coordinate system. Vertices have been renumbered 0-7, edges 0-11. @kinemage 1 @perspective @zoom 0.6 @group {static} @subgroup {edges} dominant @vectorlist {edges} color= white {e0}P 0 0 0 {e0} 100 0 0 {e1}P 100 0 0 {e1} 100 100 0 {e2}P 100 100 0 {e2} 0 100 0 {e3}P 0 100 0 {e3} 0 0 0 {e4}P 0 0 100 {e4} 100 0 100 {e5}P 100 0 100 {e5} 100 100 100 {e6}P 100 100 100 {e6} 0 100 100 {e7}P 0 100 100 {e7} 0 0 100 {e8}P 0 0 0 {e8} 0 0 100 {e9}P 100 0 0 {e9} 100 0 100 {e10}P 100 100 0 {e10} 100 100 100 {e11}P 0 100 0 {e11} 0 100 100 @subgroup {balls} dominant off @balllist {corners} color= gray radius= 5.0 {v0 (i,j,k)} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6 (i+1,j+1,k+1)} 100 100 100 {v7} 0 100 100 @balllist {edge-balls} color= gray radius= 3.0 {e0} 50 0 0 {e1} 100 50 0 {e2} 50 100 0 {e3} 0 50 0 {e4} 50 0 100 {e5} 100 50 100 {e6} 50 100 100 {e7} 0 50 100 {e8} 0 0 50 {e9} 100 0 50 {e10} 100 100 50 {e11} 0 100 50 @subgroup {labels} @labellist {corner-labels} color= sea {v0 (i,j,k)} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6 (i+1,j+1,k+1)} 100 100 100 {v7} 0 100 100 @labellist {edge-labels} color= sea {e0} 50 0 0 {e1} 100 50 0 {e2} 50 100 0 {e3} 0 50 0 {e4} 50 0 100 {e5} 100 50 100 {e6} 50 100 100 {e7} 0 50 100 {e8} 0 0 50 {e9} 100 0 50 {e10} 100 100 50 {e11} 0 100 50 @subgroup {faces} dominant @vectorlist {ignore1} color= gray {x} 10 10 100 {x} 90 10 100 {x} 10 90 100 {x} 90 90 100 @vectorlist {ignore2} color= gray {x} 10 100 10 {x} 10 100 90 {x} 90 100 10 {x} 90 100 90 @vectorlist {ignore3} color= gray {x} 100 10 10 {x} 100 10 90 {x} 100 90 10 {x} 100 90 90 @subgroup {solid-faces} dominant off @ribbonlist {ignore1} color= gray {x} 10 10 101 {x} 90 10 101 {x} 10 90 101 {x} 90 90 101 @ribbonlist {ignore2} color= gray {x} 10 101 10 {x} 10 101 90 {x} 90 101 10 {x} 90 101 90 @ribbonlist {ignore3} color= gray {x} 101 10 10 {x} 101 10 90 {x} 101 90 10 {x} 101 90 90 king-2.21.120420/driftwood/doc/cubes-marching/PlotCorners.java0000644000000000000000000004635311531212740022374 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports //package cubes-marching; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * PlotCorners has not yet been documented. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Sat Feb 8 08:51:09 EST 2003 */ public class PlotCorners //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## int[][] marchingCubes; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PlotCorners() { marchingCubes = createLookupTable(); } //}}} //{{{ createLookupTable //################################################################################################## int[][] createLookupTable() { int[][] marchingCubes = new int[256][]; marchingCubes[0] = new int[] {}; marchingCubes[1] = new int[] {0,3,8,0}; marchingCubes[2] = new int[] {1,0,9}; marchingCubes[3] = new int[] {1,3,8,9}; marchingCubes[4] = new int[] {1,2}; marchingCubes[5] = new int[] {1,2,-1,0,3,8,0}; marchingCubes[6] = new int[] {2,0,9}; marchingCubes[7] = new int[] {9,8,10,-1,2,3,8}; marchingCubes[8] = new int[] {2,3,11}; marchingCubes[9] = new int[] {11,8,0,2}; marchingCubes[10] = new int[] {2,3,11,-1,1,0,9}; marchingCubes[11] = new int[] {9,8,11,9,-1,1,2}; marchingCubes[12] = new int[] {1,3,11}; marchingCubes[13] = new int[] {10,8,11,-1,1,0,8}; marchingCubes[14] = new int[] {0,3,11,9,0}; marchingCubes[15] = new int[] {9,8,11}; marchingCubes[16] = new int[] {4,8,7}; marchingCubes[17] = new int[] {7,3,0,4}; marchingCubes[18] = new int[] {1,0,9,-1,4,8,7}; marchingCubes[19] = new int[] {1,3,7,1,-1,4,9}; marchingCubes[20] = new int[] {1,2,-1,4,8,7}; marchingCubes[21] = new int[] {1,2,-1,7,3,0,4}; marchingCubes[22] = new int[] {2,0,9,-1,4,8,7}; marchingCubes[23] = new int[] {2,3,7,9,2,7,-1,4,9}; marchingCubes[24] = new int[] {2,3,11,-1,4,8,7}; marchingCubes[25] = new int[] {2,0,4,2,-1,7,11}; marchingCubes[26] = new int[] {1,0,9,-1,11,3,2,-1,7,8,4}; marchingCubes[27] = new int[] {1,2,4,9,-1,7,11}; marchingCubes[28] = new int[] {1,3,11,-1,4,8,7}; marchingCubes[29] = new int[] {11,7,0,10,7,-1,4,0,1}; marchingCubes[30] = new int[] {0,3,11,9,0,-1,4,8,7}; marchingCubes[32] = new int[] {4,9}; marchingCubes[33] = new int[] {0,3,8,0,-1,4,9}; marchingCubes[34] = new int[] {1,0,4}; marchingCubes[35] = new int[] {1,3,5,-1,4,8,3}; marchingCubes[36] = new int[] {1,2,-1,4,9}; marchingCubes[37] = new int[] {1,2,-1,4,9,-1,0,3,8,0}; marchingCubes[38] = new int[] {0,2,4,0}; marchingCubes[39] = new int[] {2,4,8,3,2}; marchingCubes[40] = new int[] {2,3,11,-1,4,9}; marchingCubes[41] = new int[] {2,0,8,11,-1,4,9}; marchingCubes[42] = new int[] {2,3,11,-1,1,0,4}; marchingCubes[43] = new int[] {4,8,11,-1,1,2,5,8,2}; marchingCubes[44] = new int[] {1,3,11,-1,4,9}; marchingCubes[45] = new int[] {11,8,10,-1,1,0,8,-1,4,9}; marchingCubes[46] = new int[] {11,3,0,4,10,3,4}; marchingCubes[48] = new int[] {7,8,9}; marchingCubes[49] = new int[] {7,3,5,-1,9,0,3}; marchingCubes[50] = new int[] {0,1,7,8,0}; marchingCubes[51] = new int[] {1,3,7}; marchingCubes[52] = new int[] {1,2,-1,7,8,9}; marchingCubes[53] = new int[] {7,3,5,-1,9,0,3,-1,1,2}; marchingCubes[54] = new int[] {2,0,8,7,10,0,7}; marchingCubes[56] = new int[] {7,8,9,-1,2,3,11}; marchingCubes[57] = new int[] {11,7,9,2,7,-1,9,0,2}; marchingCubes[58] = new int[] {0,1,7,8,0,-1,2,3,11}; marchingCubes[60] = new int[] {7,8,9,-1,1,3,11}; marchingCubes[64] = new int[] {}; marchingCubes[65] = new int[] {0,3,8,0}; marchingCubes[66] = new int[] {1,0,9}; marchingCubes[67] = new int[] {1,3,8,9}; marchingCubes[68] = new int[] {1,2}; marchingCubes[69] = new int[] {1,2,-1,0,3,8,0}; marchingCubes[70] = new int[] {2,0,6,-1,0,9}; marchingCubes[71] = new int[] {2,3,8,9,6,3,9}; marchingCubes[72] = new int[] {2,3,11}; marchingCubes[73] = new int[] {2,0,8,11}; marchingCubes[74] = new int[] {1,0,9,-1,2,3,11}; marchingCubes[75] = new int[] {8,9,11,8,-1,1,2}; marchingCubes[76] = new int[] {1,3,5,-1,3,11}; marchingCubes[77] = new int[] {11,8,0,1,6,8,1}; marchingCubes[78] = new int[] {9,0,3,11,9}; marchingCubes[80] = new int[] {4,8,7}; marchingCubes[81] = new int[] {4,0,3,7}; marchingCubes[82] = new int[] {1,0,9,-1,4,8,7}; marchingCubes[83] = new int[] {1,3,7,1,-1,4,9}; marchingCubes[84] = new int[] {1,2,-1,4,8,7}; marchingCubes[85] = new int[] {1,2,-1,4,0,3,7}; marchingCubes[86] = new int[] {2,0,6,-1,0,9,-1,4,8,7}; marchingCubes[88] = new int[] {2,3,11,-1,4,8,7}; marchingCubes[89] = new int[] {0,2,4,0,-1,7,11}; marchingCubes[90] = new int[] {4,8,7,-1,2,3,11,-1,1,0,9}; marchingCubes[92] = new int[] {1,3,5,-1,3,11,-1,4,8,7}; marchingCubes[96] = new int[] {4,9}; marchingCubes[97] = new int[] {4,9,-1,0,3,8,0}; marchingCubes[98] = new int[] {4,0,6,-1,0,1}; marchingCubes[99] = new int[] {1,3,8,4,10,3,4}; marchingCubes[100] = new int[] {1,2,4,9}; marchingCubes[101] = new int[] {1,2,4,9,-1,0,3,8,0}; marchingCubes[102] = new int[] {2,0,4}; marchingCubes[104] = new int[] {4,9,-1,2,3,11}; marchingCubes[105] = new int[] {4,9,-1,2,0,8,11}; marchingCubes[106] = new int[] {4,0,6,-1,0,1,-1,2,3,11}; marchingCubes[108] = new int[] {9,4,11,1,4,-1,11,3,1}; marchingCubes[112] = new int[] {9,8,10,-1,7,8}; marchingCubes[113] = new int[] {9,0,3,7,10,0,7,10}; marchingCubes[114] = new int[] {1,0,8,7,1}; marchingCubes[116] = new int[] {9,8,7,-1,2,1,8,6,1}; marchingCubes[120] = new int[] {2,3,11,-1,9,8,10,-1,7,8}; marchingCubes[128] = new int[] {7,11}; marchingCubes[129] = new int[] {7,11,-1,0,3,8,0}; marchingCubes[130] = new int[] {7,11,-1,1,0,9}; marchingCubes[131] = new int[] {1,3,8,9,-1,7,11}; marchingCubes[132] = new int[] {7,11,-1,1,2}; marchingCubes[133] = new int[] {7,11,-1,1,2,-1,0,3,8,0}; marchingCubes[134] = new int[] {2,0,9,-1,11,7}; marchingCubes[136] = new int[] {2,3,7}; marchingCubes[137] = new int[] {2,0,6,-1,7,8,0}; marchingCubes[138] = new int[] {2,3,7,-1,1,0,9}; marchingCubes[140] = new int[] {1,3,7,1}; marchingCubes[144] = new int[] {4,8,11}; marchingCubes[145] = new int[] {4,0,6,-1,0,3,11}; marchingCubes[146] = new int[] {4,8,11,-1,1,0,9}; marchingCubes[148] = new int[] {4,8,11,-1,1,2}; marchingCubes[152] = new int[] {2,3,8,4,2}; marchingCubes[160] = new int[] {7,11,-1,4,9}; marchingCubes[161] = new int[] {7,11,-1,4,9,-1,0,3,8,0}; marchingCubes[162] = new int[] {1,0,4,-1,7,11}; marchingCubes[164] = new int[] {1,2,-1,4,9,-1,7,11}; marchingCubes[168] = new int[] {2,3,7,-1,4,9}; marchingCubes[176] = new int[] {8,9,11,8}; marchingCubes[192] = new int[] {7,11}; marchingCubes[193] = new int[] {7,11,-1,0,3,8,0}; marchingCubes[194] = new int[] {7,11,-1,1,0,9}; marchingCubes[196] = new int[] {2,1,7,11}; marchingCubes[200] = new int[] {5,3,7,-1,2,3}; marchingCubes[208] = new int[] {10,8,11,-1,4,8}; marchingCubes[224] = new int[] {4,9,11,7}; for(int i = 0; i < 256; i++) { if(marchingCubes[i] == null) marchingCubes[i] = marchingCubes[i ^ 0xff]; } return marchingCubes; } //}}} //{{{ countBits //################################################################################################## /** Counts the number of bits set in the low byte */ int countBits(int mask) { int i, result = 0; for(i = 0; i < 8; i++) { if((mask & (1 << i)) != 0) result++; } return result; } //}}} //{{{ plotMask //################################################################################################## /** Plots one ball for each bit set in mask */ void plotMask(int mask) { System.out.println("@group {"+mask+"} dominant animate"); System.out.println("@balllist {"+mask+"} color= red radius= 3.0"); if((mask & 0x01) != 0) System.out.println("{v0} 0 0 0"); if((mask & 0x02) != 0) System.out.println("{v1} 100 0 0"); if((mask & 0x04) != 0) System.out.println("{v2} 100 100 0"); if((mask & 0x08) != 0) System.out.println("{v3} 0 100 0"); if((mask & 0x10) != 0) System.out.println("{v4} 0 0 100"); if((mask & 0x20) != 0) System.out.println("{v5} 100 0 100"); if((mask & 0x40) != 0) System.out.println("{v6} 100 100 100"); if((mask & 0x80) != 0) System.out.println("{v7} 0 100 100"); } //}}} //{{{ plotEdges //################################################################################################## void plotEdges(int[] e) { System.out.println("@vectorlist {edges} color= cyan"); boolean drawline = false; for(int i = 0; i < e.length; i++) { if(e[i] == -1) drawline = false; else { if(drawline) System.out.print("{x} "); else { System.out.print("{x}P "); drawline = true; } switch(e[i]) { case 0: System.out.println("50 0 0"); break; case 1: System.out.println("100 50 0"); break; case 2: System.out.println("50 100 0"); break; case 3: System.out.println("0 50 0"); break; case 4: System.out.println("50 0 100"); break; case 5: System.out.println("100 50 100"); break; case 6: System.out.println("50 100 100"); break; case 7: System.out.println("0 50 100"); break; case 8: System.out.println("0 0 50"); break; case 9: System.out.println("100 0 50"); break; case 10: System.out.println("100 100 50"); break; case 11: System.out.println("0 100 50"); break; } } } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ Main() and main() //################################################################################################## /** * Main() function for running as an application */ public void Main() { int bitcount; System.out.println("@kinemage 1"); for(int mask = 0; mask < 256; mask++) { bitcount = countBits(mask); if(bitcount < 4 || (bitcount == 4 && mask < (mask ^ 0xff))) { plotMask(mask); plotEdges(marchingCubes[mask]); //System.err.println("marchingCubes["+mask+"] = new int[] {};"); } } } public static void main(String[] args) { PlotCorners mainprog = new PlotCorners(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ Argument parsing, etc. //################################################################################################## /** * Parse the command-line options for this program, separating out parameters from flags. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { /* Load properties from file * / // System properties from JAR file -- must be present Props props = new Props(); InputStream is = getClass().getResourceAsStream("/rc/PlotCorners.props"); try { props.load(is); } catch(IOException ex) {ex.printStackTrace();} // User properties from home dir -- may be present File userfile = new File(System.getProperty("user.home")+System.getProperty("file.separator")+".PlotCorners.props"); // Load user properties from file, if found if(userfile.exists()) { try { is = new FileInputStream(userfile); props.load(is); System.err.println("Found user properties in '"+userfile+"'"); } catch(IOException ex) {ex.printStackTrace();} } // User properties from current dir -- may be present File localfile = new File(System.getProperty("user.dir")+System.getProperty("file.separator")+"PlotCorners.props"); // Load user properties from file, if found if(localfile.exists()) { try { is = new FileInputStream(localfile); props.load(is); System.err.println("Found user properties in '"+localfile+"'"); } catch(IOException ex) {ex.printStackTrace();} } /* Load properties from file */ // Parse argument array into a linked list, // converting "-flag=param" to "-flag" "param" LinkedList arglist = new LinkedList(); int iEquals; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { if(args[i].equals("--")) { interpFlags = false; arglist.add(args[i]); } else if(args[i].startsWith("-") && interpFlags) { iEquals = args[i].indexOf('='); if(iEquals != -1) { arglist.add( args[i].substring(0,iEquals) ); arglist.add( args[i].substring(iEquals+1) ); } else arglist.add(args[i]); } else arglist.add(args[i]); } ListIterator iter = arglist.listIterator(); try { //interpretArguments(iter, props); interpretArguments(iter); } catch(NoSuchElementException ex) { throw new IllegalArgumentException("'"+iter.previous()+"' expected an argument"); } } // Get an integer from the command line argument list int getInt(Iterator iter) { String param = iter.next().toString(); try { return Integer.parseInt(param); } catch(NumberFormatException ex) { throw new IllegalArgumentException("'"+param+"' is not an integer"); } } // Get a double from the command line argument list double getDouble(Iterator iter) { String param = iter.next().toString(); try { return Double.parseDouble(param); } catch(NumberFormatException ex) { throw new IllegalArgumentException("'"+param+"' is not a real number"); } } // Get a reader for a file name, dash (-) for stdin static private LineNumberReader SYSTEM_IN_READER = null; LineNumberReader getReader(String filename) { LineNumberReader r = null; if(filename.equals("-")) { if(SYSTEM_IN_READER == null) SYSTEM_IN_READER = new LineNumberReader(new InputStreamReader(System.in)); r = SYSTEM_IN_READER; } else { try { r = new LineNumberReader(new FileReader(filename)); } catch(IOException ex) { throw new IllegalArgumentException("'"+filename+"' is not a readable file or stream."); } } return r; } // Get a writer for a file name, dash (-) for stdout static private PrintWriter SYSTEM_OUT_WRITER = null; PrintWriter getWriter(String filename) { PrintWriter w = null; if(filename.equals("-")) { if(SYSTEM_OUT_WRITER == null) SYSTEM_OUT_WRITER = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out))); w = SYSTEM_OUT_WRITER; } else { try { w = new PrintWriter(new BufferedWriter(new FileWriter(filename))); } catch(IOException ex) { throw new IllegalArgumentException("'"+filename+"' is not a writable file or stream."); } } return w; } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("/rc/PlotCorners.help"); if(is == null) System.err.println("\n*** Unable to locate help information in '/rc/PlotCorners.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } //System.err.println("cubes-marching.PlotCorners, version "+Version.VERSION+" (build "+Version.BUILD+")"); System.err.println("Copyright (C) 2003 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ Argument interpretation //################################################################################################## //void interpretArguments(Iterator iter, Props props) void interpretArguments(Iterator iter) { String arg; boolean interpFlags = true; ArrayList files = new ArrayList(); while(iter.hasNext()) { arg = iter.next().toString(); if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { files.add(arg); } else if (arg.equals("--")) interpFlags = false; else if(arg.equals("-help") || arg.equals("-h")) { showHelp(true); System.exit(0); } else if(arg.equals("-dummy_option")) { // handle option here } else { throw new IllegalArgumentException("'"+arg+"' is not recognized as a valid argument."); } } // Post-processing, adding things to props, etc. } //}}} }//class king-2.21.120420/driftwood/doc/cubes-marching/corners-and-faces.kin0000644000000000000000000021461011531212740023245 0ustar rootroot@kinemage 1 @group {0} dominant animate @balllist {0} color= red radius= 3.0 @trianglelist {faces} color= cyan alpha= 0.35 @group {1} dominant animate @balllist {1} color= red radius= 3.0 {v0} 0 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 0 50 0 @group {2} dominant animate @balllist {2} color= red radius= 3.0 {v1} 100 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 0 {x} 100 50 0 @group {3} dominant animate @balllist {3} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 0 0 50 {x} 100 50 0 {x} 0 50 0 @group {4} dominant animate @balllist {4} color= red radius= 3.0 {v2} 100 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 50 0 {x} 50 100 0 @group {5} dominant animate @balllist {5} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 100 50 {x} 100 50 0 @group {6} dominant animate @balllist {6} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 50 100 0 {x} 100 0 50 {x} 100 100 50 @group {7} dominant animate @balllist {7} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 0 50 0 {x} 100 100 50 {x} 0 0 50 {x} 100 0 50 @group {8} dominant animate @balllist {8} color= red radius= 3.0 {v3} 0 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 100 50 {x} 50 100 0 @group {9} dominant animate @balllist {9} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 100 50 {x} 50 0 0 {x} 50 100 0 @group {10} dominant animate @balllist {10} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 100 0 50 {x} 50 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 100 50 {x} 50 100 0 @group {11} dominant animate @balllist {11} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 50 100 0 {x} 100 0 50 {x} 0 100 50 {x} 0 0 50 @group {12} dominant animate @balllist {12} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 100 100 50 {x} 0 50 0 {x} 100 50 0 @group {13} dominant animate @balllist {13} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 50 0 {x} 0 0 50 {x} 100 100 50 {x} 0 100 50 @group {14} dominant animate @balllist {14} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 0 0 {x} 0 100 50 {x} 100 0 50 {x} 100 100 50 @group {15} dominant animate @balllist {15} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 100 50 {x} 0 0 50 {x} 0 100 50 @group {16} dominant animate @balllist {16} color= red radius= 3.0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 0 100 {x} 0 50 100 @group {17} dominant animate @balllist {17} color= red radius= 3.0 {v0} 0 0 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 50 0 {x} 50 0 100 {x} 50 0 0 @group {18} dominant animate @balllist {18} color= red radius= 3.0 {v1} 100 0 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 50 100 {x} 0 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 50 0 {x} 100 0 50 @group {19} dominant animate @balllist {19} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 100 0 50 {x} 0 50 100 {x} 100 50 0 {x} 0 50 0 @group {20} dominant animate @balllist {20} color= red radius= 3.0 {v2} 100 100 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 0 50 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 50 0 {x} 50 100 0 @group {21} dominant animate @balllist {21} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 50 0 100 {x} 0 50 0 {x} 0 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 100 50 {x} 100 50 0 @group {22} dominant animate @balllist {22} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 50 100 0 {x} 100 0 50 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 50 100 {x} 0 0 50 @group {23} dominant animate @balllist {23} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 100 0 {x} 0 50 100 {x} 100 0 50 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 100 50 {x} 100 0 50 @group {24} dominant animate @balllist {24} color= red radius= 3.0 {v3} 0 100 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 0 100 {x} 0 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 50 100 0 {x} 0 50 0 @group {25} dominant animate @balllist {25} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 100 {x} 50 100 0 {x} 50 0 100 {x} 50 0 0 @group {26} dominant animate @balllist {26} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 0 {x} 50 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 50 0 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 0 50 {x} 50 0 100 @group {27} dominant animate @balllist {27} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 50 100 {x} 100 0 50 {x} 0 100 50 {x} 100 50 0 {x} 50 100 0 @group {28} dominant animate @balllist {28} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 100 100 50 {x} 0 50 0 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 0 100 {x} 0 50 100 @group {29} dominant animate @balllist {29} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 50 0 0 {x} 0 50 100 {x} 100 100 50 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 100 50 {x} 100 50 0 @group {30} dominant animate @balllist {30} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 50 100 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 0 0 {x} 0 100 50 {x} 100 0 50 {x} 100 100 50 @group {31} dominant animate @balllist {31} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 50 100 {x} 100 0 50 {x} 0 100 50 {x} 100 100 50 @group {32} dominant animate @balllist {32} color= red radius= 3.0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 0 50 @group {33} dominant animate @balllist {33} color= red radius= 3.0 {v0} 0 0 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 50 100 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 50 0 {x} 50 0 0 @group {34} dominant animate @balllist {34} color= red radius= 3.0 {v1} 100 0 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 50 0 0 {x} 100 50 100 {x} 100 50 0 @group {35} dominant animate @balllist {35} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 0 100 {x} 0 50 0 {x} 100 50 100 {x} 100 50 0 @group {36} dominant animate @balllist {36} color= red radius= 3.0 {v2} 100 100 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 50 100 0 {x} 100 100 50 @group {37} dominant animate @balllist {37} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 50 0 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 50 100 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 0 0 {x} 0 0 50 @group {38} dominant animate @balllist {38} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 100 50 {x} 50 0 100 {x} 50 100 0 {x} 50 0 0 @group {39} dominant animate @balllist {39} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 100 50 {x} 0 50 0 {x} 100 50 100 {x} 0 0 50 {x} 50 0 100 @group {40} dominant animate @balllist {40} color= red radius= 3.0 {v3} 0 100 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 0 50 0 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 0 50 @group {41} dominant animate @balllist {41} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 100 50 {x} 50 0 0 {x} 50 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 50 100 {x} 50 0 100 @group {42} dominant animate @balllist {42} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 100 50 100 {x} 50 0 0 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 100 50 {x} 50 100 0 @group {43} dominant animate @balllist {43} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 0 50 {x} 50 100 0 {x} 100 50 100 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 100 50 100 {x} 50 0 100 @group {44} dominant animate @balllist {44} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 0 50 0 {x} 100 100 50 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 0 50 @group {45} dominant animate @balllist {45} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 100 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 50 0 {x} 0 0 50 {x} 100 100 50 {x} 0 100 50 @group {46} dominant animate @balllist {46} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 50 0 {x} 50 0 100 {x} 100 100 50 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 100 50 {x} 100 100 50 @group {47} dominant animate @balllist {47} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 100 50 {x} 0 0 50 {x} 0 100 50 @group {48} dominant animate @balllist {48} color= red radius= 3.0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 100 0 50 {x} 0 50 100 {x} 100 50 100 @group {49} dominant animate @balllist {49} color= red radius= 3.0 {v0} 0 0 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 0 {x} 100 50 100 {x} 0 50 0 {x} 0 50 100 @group {50} dominant animate @balllist {50} color= red radius= 3.0 {v1} 100 0 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 100 50 0 {x} 0 50 100 {x} 100 50 100 @group {51} dominant animate @balllist {51} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 0 50 0 {x} 100 50 100 {x} 0 50 100 @group {52} dominant animate @balllist {52} color= red radius= 3.0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 0 50 100 {x} 100 0 50 {x} 0 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 50 100 0 {x} 100 100 50 @group {53} dominant animate @balllist {53} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 100 100 50 {x} 50 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 0 {x} 100 50 100 {x} 0 50 0 {x} 0 50 100 @group {54} dominant animate @balllist {54} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 50 0 0 {x} 100 100 50 {x} 0 50 100 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 50 100 {x} 0 0 50 @group {55} dominant animate @balllist {55} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 100 50 {x} 0 50 0 {x} 100 50 100 {x} 0 50 100 @group {56} dominant animate @balllist {56} color= red radius= 3.0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 100 0 50 {x} 0 50 100 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 50 100 0 {x} 0 50 0 @group {57} dominant animate @balllist {57} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 0 50 {x} 50 100 0 {x} 0 50 100 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 50 100 {x} 0 50 100 @group {58} dominant animate @balllist {58} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 100 0 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 100 50 0 {x} 0 50 100 {x} 100 50 100 @group {59} dominant animate @balllist {59} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 50 100 0 {x} 0 50 100 {x} 100 50 0 {x} 100 50 100 @group {60} dominant animate @balllist {60} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 50 0 {x} 0 100 50 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 0 50 {x} 0 50 100 {x} 0 0 50 @group {61} dominant animate @balllist {61} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 0 100 50 {x} 100 50 100 {x} 0 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 0 {x} 100 50 0 @group {62} dominant animate @balllist {62} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 100 50 100 {x} 0 100 50 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 0 0 {x} 0 0 50 @group {63} dominant animate @balllist {63} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 0 100 50 {x} 100 50 100 {x} 0 50 100 @group {64} dominant animate @balllist {64} color= red radius= 3.0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 100 50 100 {x} 100 100 50 @group {65} dominant animate @balllist {65} color= red radius= 3.0 {v0} 0 0 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 100 {x} 100 50 100 @group {66} dominant animate @balllist {66} color= red radius= 3.0 {v1} 100 0 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 100 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 0 {x} 100 50 0 @group {67} dominant animate @balllist {67} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 0 0 50 {x} 100 50 0 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 100 {x} 100 50 100 @group {68} dominant animate @balllist {68} color= red radius= 3.0 {v2} 100 100 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 50 100 100 {x} 100 50 0 {x} 100 50 100 @group {69} dominant animate @balllist {69} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 50 100 100 {x} 100 50 0 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 0 50 0 @group {70} dominant animate @balllist {70} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 50 100 {x} 50 0 0 {x} 50 100 100 {x} 50 100 0 @group {71} dominant animate @balllist {71} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 100 0 50 {x} 0 50 0 {x} 50 100 100 {x} 50 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 100 100 {x} 100 50 100 @group {72} dominant animate @balllist {72} color= red radius= 3.0 {v3} 0 100 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 0 50 0 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 100 50 100 {x} 100 100 50 @group {73} dominant animate @balllist {73} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 50 0 0 {x} 0 100 50 {x} 0 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 100 50 100 {x} 100 100 50 @group {74} dominant animate @balllist {74} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 100 0 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 100 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 50 0 {x} 100 0 50 @group {75} dominant animate @balllist {75} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 50 100 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 50 100 0 {x} 100 0 50 {x} 0 100 50 {x} 0 0 50 @group {76} dominant animate @balllist {76} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 0 100 50 {x} 100 50 100 {x} 0 50 0 {x} 100 50 0 @group {77} dominant animate @balllist {77} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 50 0 0 {x} 100 50 100 {x} 0 100 50 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 0 100 50 @group {78} dominant animate @balllist {78} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 100 50 100 {x} 0 100 50 {x} 100 0 50 {x} 0 50 0 {x} 50 0 0 @group {79} dominant animate @balllist {79} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 100 50 100 {x} 0 100 50 {x} 100 0 50 {x} 0 0 50 @group {80} dominant animate @balllist {80} color= red radius= 3.0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 100 50 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 0 50 {x} 50 0 100 @group {81} dominant animate @balllist {81} color= red radius= 3.0 {v0} 0 0 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 50 0 {x} 50 0 100 {x} 50 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 100 50 {x} 50 100 100 @group {82} dominant animate @balllist {82} color= red radius= 3.0 {v1} 100 0 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 0 100 {x} 0 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 0 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 100 50 100 {x} 100 100 50 @group {83} dominant animate @balllist {83} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 100 100 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 100 0 50 {x} 0 50 100 {x} 100 50 0 {x} 0 50 0 @group {84} dominant animate @balllist {84} color= red radius= 3.0 {v2} 100 100 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 50 0 {x} 50 100 100 {x} 50 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 0 50 {x} 50 0 100 @group {85} dominant animate @balllist {85} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 50 100 {x} 50 0 0 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 100 100 {x} 100 50 0 {x} 50 100 0 @group {86} dominant animate @balllist {86} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 0 50 {x} 0 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 50 100 {x} 50 0 0 {x} 50 100 100 {x} 50 100 0 @group {87} dominant animate @balllist {87} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 50 100 0 {x} 0 50 100 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 100 0 50 {x} 100 50 100 @group {88} dominant animate @balllist {88} color= red radius= 3.0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 100 100 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 50 100 0 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 50 100 {x} 0 0 50 @group {89} dominant animate @balllist {89} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 100 100 50 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 100 {x} 50 100 0 {x} 50 0 100 {x} 50 0 0 @group {90} dominant animate @balllist {90} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 0 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 0 {x} 50 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 100 50 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 50 100 {x} 50 0 100 @group {91} dominant animate @balllist {91} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 50 100 100 {x} 0 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 100 50 {x} 100 50 0 @group {92} dominant animate @balllist {92} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 0 100 {x} 0 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 0 100 50 {x} 100 50 100 {x} 0 50 0 {x} 100 50 0 @group {93} dominant animate @balllist {93} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 50 0 0 {x} 100 50 100 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 0 100 50 {x} 0 50 100 @group {94} dominant animate @balllist {94} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 100 0 50 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 100 {x} 50 100 100 @group {95} dominant animate @balllist {95} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 0 100 50 {x} 0 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 100 0 50 {x} 100 50 100 @group {96} dominant animate @balllist {96} color= red radius= 3.0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 100 50 {x} 50 0 100 {x} 50 100 100 @group {97} dominant animate @balllist {97} color= red radius= 3.0 {v0} 0 0 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 100 50 {x} 50 0 100 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 50 0 {x} 50 0 0 @group {98} dominant animate @balllist {98} color= red radius= 3.0 {v1} 100 0 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 50 0 {x} 50 100 100 {x} 50 0 0 {x} 50 0 100 @group {99} dominant animate @balllist {99} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 0 50 {x} 50 100 100 {x} 100 50 0 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 50 0 {x} 100 50 0 @group {100} dominant animate @balllist {100} color= red radius= 3.0 {v2} 100 100 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 100 0 50 {x} 50 100 0 {x} 50 0 100 {x} 50 100 100 @group {101} dominant animate @balllist {101} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 50 0 {x} 0 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 100 0 50 {x} 50 100 0 {x} 50 0 100 {x} 50 100 100 @group {102} dominant animate @balllist {102} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 50 0 0 {x} 50 100 100 {x} 50 0 100 @group {103} dominant animate @balllist {103} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 50 0 {x} 50 0 100 {x} 50 100 0 {x} 50 100 100 @group {104} dominant animate @balllist {104} color= red radius= 3.0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 50 0 100 {x} 100 100 50 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 0 50 0 {x} 0 100 50 @group {105} dominant animate @balllist {105} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 50 100 0 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 100 {x} 100 100 50 {x} 50 100 100 @group {106} dominant animate @balllist {106} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 0 100 50 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 50 0 {x} 50 100 100 {x} 50 0 0 {x} 50 0 100 @group {107} dominant animate @balllist {107} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 0 50 {x} 50 100 100 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 50 0 {x} 50 100 0 @group {108} dominant animate @balllist {108} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 50 100 100 {x} 100 0 50 {x} 0 50 0 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 0 50 0 {x} 0 100 50 @group {109} dominant animate @balllist {109} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 50 100 100 {x} 0 0 50 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 50 0 {x} 100 0 50 @group {110} dominant animate @balllist {110} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 100 50 {x} 50 0 0 {x} 50 100 100 {x} 50 0 100 @group {111} dominant animate @balllist {111} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 0 50 {x} 50 100 100 {x} 50 0 100 @group {112} dominant animate @balllist {112} color= red radius= 3.0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 100 100 {x} 0 0 50 {x} 100 100 50 {x} 100 0 50 @group {113} dominant animate @balllist {113} color= red radius= 3.0 {v0} 0 0 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 50 100 {x} 50 0 0 {x} 100 100 50 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 100 100 50 {x} 50 100 100 @group {114} dominant animate @balllist {114} color= red radius= 3.0 {v1} 100 0 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 50 0 {x} 0 0 50 {x} 100 100 50 {x} 0 50 100 {x} 50 100 100 @group {115} dominant animate @balllist {115} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 100 {x} 100 50 0 {x} 0 50 100 {x} 0 50 0 @group {116} dominant animate @balllist {116} color= red radius= 3.0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 0 50 100 {x} 50 100 0 {x} 100 0 50 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 0 50 {x} 100 0 50 @group {117} dominant animate @balllist {117} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 50 100 {x} 50 100 0 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 100 0 50 {x} 50 0 0 @group {118} dominant animate @balllist {118} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 0 50 {x} 50 100 100 {x} 50 0 0 {x} 50 100 0 @group {119} dominant animate @balllist {119} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 50 100 0 {x} 0 50 100 {x} 0 50 0 @group {120} dominant animate @balllist {120} color= red radius= 3.0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 0 {x} 50 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 100 100 {x} 0 0 50 {x} 100 100 50 {x} 100 0 50 @group {121} dominant animate @balllist {121} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 0 50 {x} 50 100 0 {x} 50 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 100 {x} 50 100 100 @group {122} dominant animate @balllist {122} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 100 50 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 100 50 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 50 0 {x} 50 0 0 @group {123} dominant animate @balllist {123} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 100 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 50 0 {x} 50 100 0 @group {124} dominant animate @balllist {124} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 100 50 0 {x} 0 0 50 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 100 100 {x} 0 100 50 @group {125} dominant animate @balllist {125} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 100 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 100 0 50 {x} 50 0 0 @group {126} dominant animate @balllist {126} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 100 100 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 0 0 {x} 0 0 50 @group {127} dominant animate @balllist {127} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 100 100 {x} 0 100 50 @group {128} dominant animate @balllist {128} color= red radius= 3.0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 100 100 {x} 0 100 50 @group {129} dominant animate @balllist {129} color= red radius= 3.0 {v0} 0 0 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 100 100 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 0 0 {x} 0 0 50 @group {130} dominant animate @balllist {130} color= red radius= 3.0 {v1} 100 0 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 100 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 100 0 50 {x} 50 0 0 @group {131} dominant animate @balllist {131} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 100 50 0 {x} 0 0 50 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 100 100 {x} 0 100 50 @group {132} dominant animate @balllist {132} color= red radius= 3.0 {v2} 100 100 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 100 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 50 0 {x} 50 100 0 @group {133} dominant animate @balllist {133} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 100 50 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 100 50 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 50 0 {x} 50 0 0 @group {134} dominant animate @balllist {134} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 0 50 {x} 50 100 0 {x} 50 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 100 {x} 50 100 100 @group {135} dominant animate @balllist {135} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 50 100 100 {x} 0 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 0 50 0 {x} 100 100 50 {x} 0 0 50 {x} 100 0 50 @group {136} dominant animate @balllist {136} color= red radius= 3.0 {v3} 0 100 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 50 100 0 {x} 0 50 100 {x} 0 50 0 @group {137} dominant animate @balllist {137} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 0 50 {x} 50 100 100 {x} 50 0 0 {x} 50 100 0 @group {138} dominant animate @balllist {138} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 50 100 {x} 50 100 0 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 100 0 50 {x} 50 0 0 @group {139} dominant animate @balllist {139} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 50 100 {x} 100 0 50 {x} 50 100 0 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 100 100 {x} 50 100 0 @group {140} dominant animate @balllist {140} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 100 {x} 100 50 0 {x} 0 50 100 {x} 0 50 0 @group {141} dominant animate @balllist {141} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 100 100 {x} 0 0 50 {x} 100 100 50 {x} 50 0 0 {x} 100 50 0 @group {142} dominant animate @balllist {142} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 50 0 {x} 50 100 100 {x} 100 0 50 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 100 0 50 {x} 50 0 0 @group {143} dominant animate @balllist {143} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 100 100 {x} 0 0 50 {x} 100 100 50 {x} 100 0 50 @group {144} dominant animate @balllist {144} color= red radius= 3.0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 0 50 {x} 50 100 100 {x} 50 0 100 @group {145} dominant animate @balllist {145} color= red radius= 3.0 {v0} 0 0 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 100 50 {x} 50 0 0 {x} 50 100 100 {x} 50 0 100 @group {146} dominant animate @balllist {146} color= red radius= 3.0 {v1} 100 0 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 50 100 100 {x} 0 0 50 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 50 0 {x} 100 0 50 @group {147} dominant animate @balllist {147} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 0 50 0 {x} 100 0 50 {x} 50 100 100 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 100 100 {x} 0 100 50 @group {148} dominant animate @balllist {148} color= red radius= 3.0 {v2} 100 100 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 0 50 {x} 50 100 100 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 50 0 {x} 50 100 0 @group {149} dominant animate @balllist {149} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 50 0 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 100 50 {x} 50 0 0 {x} 50 100 100 {x} 50 0 100 @group {150} dominant animate @balllist {150} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 0 100 50 {x} 50 0 100 {x} 0 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 0 {x} 100 0 50 {x} 50 0 0 @group {151} dominant animate @balllist {151} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 50 0 100 {x} 100 100 50 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 0 50 0 {x} 0 100 50 @group {152} dominant animate @balllist {152} color= red radius= 3.0 {v3} 0 100 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 50 0 {x} 50 0 100 {x} 50 100 0 {x} 50 100 100 @group {153} dominant animate @balllist {153} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 50 0 100 {x} 50 100 0 {x} 50 0 0 @group {154} dominant animate @balllist {154} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 0 50 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 50 0 {x} 50 0 100 {x} 50 100 0 {x} 50 100 100 @group {155} dominant animate @balllist {155} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 100 0 50 {x} 50 100 0 {x} 50 0 100 {x} 50 100 100 @group {156} dominant animate @balllist {156} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 0 50 {x} 100 50 0 {x} 50 100 100 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 0 100 {x} 50 100 100 @group {157} dominant animate @balllist {157} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 50 0 {x} 50 100 100 {x} 50 0 0 {x} 50 0 100 @group {158} dominant animate @balllist {158} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 100 50 {x} 50 0 100 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 50 0 {x} 50 0 0 @group {159} dominant animate @balllist {159} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 100 50 {x} 50 0 100 {x} 50 100 100 @group {160} dominant animate @balllist {160} color= red radius= 3.0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 0 100 50 {x} 0 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 100 0 50 {x} 100 50 100 @group {161} dominant animate @balllist {161} color= red radius= 3.0 {v0} 0 0 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 100 0 50 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 100 {x} 50 100 100 @group {162} dominant animate @balllist {162} color= red radius= 3.0 {v1} 100 0 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 50 0 0 {x} 100 50 100 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 0 100 50 {x} 0 50 100 @group {163} dominant animate @balllist {163} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 100 50 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 0 100 {x} 0 50 0 {x} 100 50 100 {x} 100 50 0 @group {164} dominant animate @balllist {164} color= red radius= 3.0 {v2} 100 100 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 50 100 100 {x} 0 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 100 50 {x} 100 50 0 @group {165} dominant animate @balllist {165} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 0 50 100 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 50 100 0 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 100 50 100 {x} 100 0 50 @group {166} dominant animate @balllist {166} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 0 50 100 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 100 50 {x} 50 0 100 {x} 50 100 0 {x} 50 0 0 @group {167} dominant animate @balllist {167} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 100 100 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 50 100 0 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 50 100 {x} 0 0 50 @group {168} dominant animate @balllist {168} color= red radius= 3.0 {v3} 0 100 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 50 100 0 {x} 0 50 100 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 100 0 50 {x} 100 50 100 @group {169} dominant animate @balllist {169} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 100 50 100 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 0 50 {x} 50 100 100 {x} 50 0 0 {x} 50 100 0 @group {170} dominant animate @balllist {170} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 50 0 {x} 50 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 0 50 100 {x} 50 100 0 {x} 0 50 0 @group {171} dominant animate @balllist {171} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 50 0 {x} 50 100 100 {x} 50 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 0 50 {x} 50 0 100 @group {172} dominant animate @balllist {172} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 0 50 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 100 {x} 100 50 0 {x} 0 50 100 {x} 0 50 0 @group {173} dominant animate @balllist {173} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 50 0 100 {x} 0 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 0 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 100 50 100 {x} 100 100 50 @group {174} dominant animate @balllist {174} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 50 0 {x} 50 0 100 {x} 50 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 100 50 {x} 50 100 100 @group {175} dominant animate @balllist {175} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 100 50 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 0 50 {x} 50 0 100 @group {176} dominant animate @balllist {176} color= red radius= 3.0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 100 50 100 {x} 0 100 50 {x} 100 0 50 {x} 0 0 50 @group {177} dominant animate @balllist {177} color= red radius= 3.0 {v0} 0 0 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 50 100 {x} 50 0 0 {x} 50 100 100 {x} 0 50 0 {x} 0 100 50 @group {178} dominant animate @balllist {178} color= red radius= 3.0 {v1} 100 0 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 0 0 {x} 0 100 50 {x} 100 50 100 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 50 0 {x} 100 50 100 @group {179} dominant animate @balllist {179} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 0 100 50 {x} 100 50 100 {x} 0 50 0 {x} 100 50 0 @group {180} dominant animate @balllist {180} color= red radius= 3.0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 0 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 100 50 100 {x} 0 100 50 {x} 100 0 50 {x} 0 0 50 @group {181} dominant animate @balllist {181} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 100 0 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 100 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 50 0 {x} 100 0 50 @group {182} dominant animate @balllist {182} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 50 0 0 {x} 0 100 50 {x} 0 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 100 50 100 {x} 100 100 50 @group {183} dominant animate @balllist {183} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 0 50 0 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 100 50 100 {x} 100 100 50 @group {184} dominant animate @balllist {184} color= red radius= 3.0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 0 0 50 {x} 100 50 100 {x} 50 100 0 {x} 50 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 100 0 {x} 0 50 0 @group {185} dominant animate @balllist {185} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 50 100 {x} 50 0 0 {x} 50 100 100 {x} 50 100 0 @group {186} dominant animate @balllist {186} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 50 100 100 {x} 100 50 0 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 0 50 0 @group {187} dominant animate @balllist {187} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 50 100 100 {x} 100 50 0 {x} 100 50 100 @group {188} dominant animate @balllist {188} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 0 0 50 {x} 100 50 0 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 100 {x} 100 50 100 @group {189} dominant animate @balllist {189} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 100 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 0 {x} 100 50 0 @group {190} dominant animate @balllist {190} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 100 {x} 100 50 100 @group {191} dominant animate @balllist {191} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 100 {x} 100 50 100 {x} 100 100 50 @group {192} dominant animate @balllist {192} color= red radius= 3.0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 0 100 50 {x} 100 50 100 {x} 0 50 100 @group {193} dominant animate @balllist {193} color= red radius= 3.0 {v0} 0 0 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 100 50 100 {x} 0 100 50 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 0 0 {x} 0 0 50 @group {194} dominant animate @balllist {194} color= red radius= 3.0 {v1} 100 0 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 0 100 50 {x} 100 50 100 {x} 0 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 0 {x} 100 50 0 @group {195} dominant animate @balllist {195} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 100 50 {x} 0 50 100 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 50 0 {x} 0 0 50 {x} 0 50 0 @group {196} dominant animate @balllist {196} color= red radius= 3.0 {v2} 100 100 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 50 100 0 {x} 0 50 100 {x} 100 50 0 {x} 100 50 100 @group {197} dominant animate @balllist {197} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 0 50 {x} 50 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 50 100 0 {x} 0 50 100 {x} 100 50 0 {x} 100 50 100 @group {198} dominant animate @balllist {198} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 0 100 50 {x} 50 0 0 {x} 100 50 100 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 100 {x} 100 50 100 @group {199} dominant animate @balllist {199} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 100 0 50 {x} 0 50 100 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 50 100 0 {x} 0 50 0 @group {200} dominant animate @balllist {200} color= red radius= 3.0 {v3} 0 100 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 100 50 {x} 0 50 0 {x} 100 50 100 {x} 0 50 100 @group {201} dominant animate @balllist {201} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 50 100 0 {x} 0 0 50 {x} 100 50 100 {x} 0 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 50 100 {x} 100 100 50 @group {202} dominant animate @balllist {202} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 50 0 0 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 100 50 {x} 0 50 0 {x} 100 50 100 {x} 0 50 100 @group {203} dominant animate @balllist {203} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 0 50 100 {x} 100 0 50 {x} 0 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 50 100 0 {x} 100 100 50 @group {204} dominant animate @balllist {204} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 50 0 {x} 100 50 100 {x} 100 50 0 @group {205} dominant animate @balllist {205} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 100 50 0 {x} 0 50 100 {x} 100 50 100 @group {206} dominant animate @balllist {206} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 0 {x} 100 50 100 {x} 0 50 0 {x} 0 50 100 @group {207} dominant animate @balllist {207} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 100 0 50 {x} 0 50 100 {x} 100 50 100 @group {208} dominant animate @balllist {208} color= red radius= 3.0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 100 50 {x} 0 0 50 {x} 0 100 50 @group {209} dominant animate @balllist {209} color= red radius= 3.0 {v0} 0 0 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 100 50 100 {x} 50 0 0 {x} 0 100 50 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 100 50 {x} 0 100 50 @group {210} dominant animate @balllist {210} color= red radius= 3.0 {v1} 100 0 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 50 0 {x} 50 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 100 50 {x} 0 0 50 {x} 0 100 50 @group {211} dominant animate @balllist {211} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 0 50 0 {x} 100 100 50 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 0 50 @group {212} dominant animate @balllist {212} color= red radius= 3.0 {v2} 100 100 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 100 50 {x} 50 0 100 {x} 100 50 0 {x} 100 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 100 50 0 {x} 50 100 0 @group {213} dominant animate @balllist {213} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 100 50 100 {x} 50 0 0 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 100 50 {x} 50 100 0 @group {214} dominant animate @balllist {214} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 100 50 {x} 50 0 0 {x} 50 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 50 100 {x} 50 0 100 @group {215} dominant animate @balllist {215} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 0 50 0 {x} 0 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 0 50 @group {216} dominant animate @balllist {216} color= red radius= 3.0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 0 100 {x} 0 50 0 {x} 100 50 100 {x} 50 100 0 {x} 100 100 50 @group {217} dominant animate @balllist {217} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 100 100 50 {x} 50 0 100 {x} 50 100 0 {x} 50 0 0 @group {218} dominant animate @balllist {218} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 50 0 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 50 100 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 0 0 {x} 0 0 50 @group {219} dominant animate @balllist {219} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 50 100 0 {x} 100 100 50 @group {220} dominant animate @balllist {220} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 0 100 {x} 0 50 0 {x} 100 50 100 {x} 100 50 0 @group {221} dominant animate @balllist {221} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 50 0 0 {x} 100 50 100 {x} 100 50 0 @group {222} dominant animate @balllist {222} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 100 50 100 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 50 0 {x} 50 0 0 @group {223} dominant animate @balllist {223} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 100 {x} 50 0 100 {x} 100 0 50 @group {224} dominant animate @balllist {224} color= red radius= 3.0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 50 100 {x} 100 0 50 {x} 0 100 50 {x} 100 100 50 @group {225} dominant animate @balllist {225} color= red radius= 3.0 {v0} 0 0 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 0 0 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 50 100 {x} 100 0 50 {x} 0 100 50 {x} 100 100 50 @group {226} dominant animate @balllist {226} color= red radius= 3.0 {v1} 100 0 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 50 0 100 {x} 100 50 0 {x} 0 100 50 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 100 50 {x} 0 50 100 @group {227} dominant animate @balllist {227} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 100 100 50 {x} 0 50 0 {x} 100 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 0 100 {x} 0 50 100 @group {228} dominant animate @balllist {228} color= red radius= 3.0 {v2} 100 100 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 100 {x} 50 100 0 {x} 50 0 100 {x} 100 50 0 {x} 100 0 50 @group {229} dominant animate @balllist {229} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 0 {x} 50 100 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 50 0 {x} 100 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 0 50 {x} 50 0 100 @group {230} dominant animate @balllist {230} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 0 50 100 {x} 50 100 0 {x} 50 0 100 {x} 50 0 0 @group {231} dominant animate @balllist {231} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 0 100 {x} 0 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 50 100 0 {x} 0 50 0 @group {232} dominant animate @balllist {232} color= red radius= 3.0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 50 100 0 {x} 100 0 50 {x} 0 50 100 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 0 50 0 {x} 0 50 100 @group {233} dominant animate @balllist {233} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 50 100 0 {x} 100 0 50 {x} 100 100 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 50 100 {x} 0 0 50 @group {234} dominant animate @balllist {234} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 50 0 100 {x} 0 50 0 {x} 0 50 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 100 50 {x} 100 50 0 @group {235} dominant animate @balllist {235} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 0 50 {x} 50 0 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 50 0 {x} 50 100 0 @group {236} dominant animate @balllist {236} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 100 0 50 {x} 0 50 100 {x} 100 50 0 {x} 0 50 0 @group {237} dominant animate @balllist {237} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 100 {x} 0 50 100 {x} 0 0 50 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 50 0 {x} 100 0 50 @group {238} dominant animate @balllist {238} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 100 {x} 0 50 0 {x} 50 0 100 {x} 50 0 0 @group {239} dominant animate @balllist {239} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 50 0 100 {x} 0 50 100 @group {240} dominant animate @balllist {240} color= red radius= 3.0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 0 0 50 {x} 100 100 50 {x} 0 100 50 @group {241} dominant animate @balllist {241} color= red radius= 3.0 {v0} 0 0 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 50 0 0 {x} 0 100 50 {x} 100 0 50 {x} 100 100 50 @group {242} dominant animate @balllist {242} color= red radius= 3.0 {v1} 100 0 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 100 50 0 {x} 0 0 50 {x} 100 100 50 {x} 0 100 50 @group {243} dominant animate @balllist {243} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 100 50 {x} 100 100 50 {x} 0 50 0 {x} 100 50 0 @group {244} dominant animate @balllist {244} color= red radius= 3.0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 50 100 0 {x} 100 0 50 {x} 0 100 50 {x} 0 0 50 @group {245} dominant animate @balllist {245} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 50 0 {x} 100 0 50 {x} 50 0 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 100 50 {x} 50 100 0 @group {246} dominant animate @balllist {246} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 0 50 {x} 0 100 50 {x} 50 0 0 {x} 50 100 0 @group {247} dominant animate @balllist {247} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 0 50 0 {x} 0 100 50 {x} 50 100 0 @group {248} dominant animate @balllist {248} color= red radius= 3.0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 0 50 0 {x} 100 100 50 {x} 0 0 50 {x} 100 0 50 @group {249} dominant animate @balllist {249} color= red radius= 3.0 {v0} 0 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 50 100 0 {x} 100 0 50 {x} 100 100 50 @group {250} dominant animate @balllist {250} color= red radius= 3.0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 0 50 0 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 100 0 {x} 100 100 50 {x} 100 50 0 @group {251} dominant animate @balllist {251} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 100 50 {x} 100 50 0 {x} 50 100 0 @group {252} dominant animate @balllist {252} color= red radius= 3.0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 0 0 50 {x} 100 50 0 {x} 0 50 0 @group {253} dominant animate @balllist {253} color= red radius= 3.0 {v0} 0 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 100 0 50 {x} 50 0 0 {x} 100 50 0 @group {254} dominant animate @balllist {254} color= red radius= 3.0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 {x} 50 0 0 {x} 0 0 50 {x} 0 50 0 @group {255} dominant animate @balllist {255} color= red radius= 3.0 {v0} 0 0 0 {v1} 100 0 0 {v2} 100 100 0 {v3} 0 100 0 {v4} 0 0 100 {v5} 100 0 100 {v6} 100 100 100 {v7} 0 100 100 @trianglelist {faces} color= cyan alpha= 0.35 king-2.21.120420/driftwood/doc/cubes-marching/PlotFaces.java0000644000000000000000000003777311531212740022010 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports //package cubes-marching; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; //import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //}}} /** * PlotFaces has not yet been documented. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Sat Feb 8 08:51:09 EST 2003 */ public class PlotFaces //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## int[][] marchingCubes; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PlotFaces() { marchingCubes = createLookupTable(); } //}}} //{{{ createLookupTable //################################################################################################## int[][] createLookupTable() { int[][] marchingCubes = new int[256][]; // The 15 exemplars // Contents are edge indexes, and -1 means a break marchingCubes[0] = new int[] {}; marchingCubes[1] = new int[] {0,8,3}; marchingCubes[3] = new int[] {9,8,1,3}; marchingCubes[5] = new int[] {0,8,3,-1,2,10,1}; marchingCubes[65] = new int[] {0,8,3,-1,10,6,5}; marchingCubes[50] = new int[] {0,8,1,7,5}; marchingCubes[67] = new int[] {9,8,1,3,-1,10,6,5}; marchingCubes[74] = new int[] {3,2,11,-1,10,6,5,-1,0,1,9}; marchingCubes[51] = new int[] {1,3,5,7}; marchingCubes[177] = new int[] {9,5,0,6,3,11}; marchingCubes[105] = new int[] {0,8,2,11,-1,9,4,10,6}; marchingCubes[113] = new int[] {3,7,0,10,9,-1,7,10,6}; marchingCubes[58] = new int[] {3,2,11,-1,0,8,1,7,5}; marchingCubes[165] = new int[] {0,8,3,-1,6,7,11,-1,1,2,10,-1,4,5,9}; marchingCubes[178] = new int[] {8,0,11,5,6,-1,0,1,5}; for(int i = 0; i < 256; i++) { if(countBits(i) <= 4 && marchingCubes[i] == null) marchingCubes[i] = findRotated(i, marchingCubes); //else catch it below. } for(int i = 0; i < 256; i++) { if(marchingCubes[i] == null) marchingCubes[i] = marchingCubes[i ^ 0xff]; if(marchingCubes[i] == null) throw new Error("Couldn't generate edges for "+i); if(i < 128) { System.err.print("marchingCubes["+i+"] = new int[] {"); for(int j = 0; j < marchingCubes[i].length; j++) { if(j > 0) System.err.print(","); System.err.print(marchingCubes[i][j]); } System.err.println("};"); } } return marchingCubes; } //}}} //{{{ findRotated //################################################################################################## int[] findRotated(int origIndex, int[][] exemplars) { // Unpack origIndex into an array of 0 / 1 values // These will be "rotated" to give new indices int[] rotatedVertices = new int[8]; for(int i = 0; i < 8; i++) rotatedVertices[i] = ((origIndex & (1< Electron Density Map File



next up previous contents index
Next: Example: Computation of Up: Electron Density Maps Previous: Requirements

Electron Density Map File

  The output file of the xrefin map statement contains information about the unit cell, indexing of the map, and the actual electron density map. It can be read by a modified version of MAPPAGE to provide a ``DSN6'' file for FRODO. Modified versions of this program are included in the directory ``[.VAX.FRODOMAP]" for the VAX/VMS system and ``sgi/fft" for the SGI systems. The grid size of the map is determined by the GRID parameter in the FFT statement. The following is a FORTRAN example of how to read the formatted (QFORM=.TRUE.) or unformatted (QFORM=.FALSE.) version of the electron density maps:

C
C read title
      IF (QFORM) THEN
      READ(UNIT,'(/I8)',END=6,ERR=7) NTITLE
      IF (NTITLE .LE. 0) THEN
      READ( UNIT, '(A)',END=6,ERR=7) 
      ELSE
      DO J = 1, NTITLE
      TITLE(J) = ' '
      READ (UNIT, '(A)',END=6,ERR=7) TITLE(J)
      ENDDO
      ENDIF
      ELSE 
      DO J=1,MXTITL
      TITLE(J)=' '
      END DO
      READ(UNIT,END=6,ERR=7) NTITLE,(TITLE(J)(1:80),J=1,NTITLE)
      END IF
C
C read sectioning information
      IF (QFORM) THEN
      READ(U,'(9I8)',END=6,ERR=7)
     &  NA,AMIN,AMAX,NB,BMIN,BMAX,NC,CMIN,CMAX
      ELSE
      READ(U,END=6,ERR=7)
     &  NA,AMIN,AMAX,NB,BMIN,BMAX,NC,CMIN,CMAX
      END IF
C
C read unit cell constants in angstroms and degrees
      IF (QFORM) THEN
      READ(U,'(6E12.5)',END=6,ERR=7) (CELL(I),I=1,6)
      ELSE 
      READ(U,END=6,ERR=7) (CELL(I),I=1,6)
      END IF
      END IF
C
C read matrix mode
      IF (QFORM) THEN
      READ(U,'(3A)',END=6,ERR=7) MODE 
      ELSE
      READ(U,END=6,ERR=7) MODE 
      END IF
      IF (MODE.NE.'ZYX') THEN 
      CALL WRNDIE(-5,'RMAP','error in matrix mode')
      GOTO 7
      END IF 
C           
C read density matrix, c is slowest ("z-sections"). 
      DO C=CMIN,CMAX
C
C read next section
      IF (QFORM) THEN
      READ(U,'(I8)',END=6,ERR=7) KSECT
      READ(U,'(6E12.5)',END=6,ERR=7)
     &  ((MAP(A,B,C),A=AMIN,AMAX),B=BMIN,BMAX)
      ELSE
      READ(U,END=6,ERR=7) KSECT
      READ(U,END=6,ERR=7)
     &  ((MAP(A,B,C),A=AMIN,AMAX),B=BMIN,BMAX)
      END IF
      END DO
The following lines show the beginning of a typical electron density map file:
       2 !NTITLE
 REMARKS FILENAME=""                                                                                                                          
 REMARKS DATE:18-Jun-90  12:24:08       created by user:                                                                            
 XMAP: extend NA=(  30   4  12) NB=(  15   5  10) NC=(  16   2  12) 
      30       4      12      15       5      10      16       2      12
 XMAP: a= 40.96, b= 18.65, c= 22.52, alpha= 90.00, beta= 90.77, gamma= 90.00
 0.40960E+02 0.18650E+02 0.22520E+02 0.90000E+02 0.90770E+02 0.90000E+02
 XMAP: written in ZYX mode (z-sections)
ZYX
 XMAP: section #   0 average density=-0.336     sigma= 0.907    
       0
-0.97086E+00-0.49927E+00-0.82774E+00-0.13491E+01-0.57034E+00-0.71253E-01
-0.19491E+00 0.61017E+00 0.10064E+01-0.22888E+01-0.94020E+00 0.77451E+00
 0.57539E+00-0.31211E-01-0.27430E+00-0.36526E+00 0.34772E+00 0.81884E+00
-0.19954E+01-0.10117E+01 0.18038E+01 0.19008E+01 0.11886E+00-0.41646E+00
 0.47560E-01 0.48855E+00 0.57606E+00-0.22320E+00-0.12787E+01 0.47590E+00


Web Manager
Sat Mar 11 09:37:37 PST 1995
king-2.21.120420/driftwood/doc/map-formats/ccp4-maplib.html0000644000000000000000000010757411531212736021607 0ustar rootrootCCP4 Program Suite: maplib

MAPLIB (CCP4: Library)

NAME

maplib - Subroutine Library for CCP4 map file handling

Original documentation by Phil Evans and John Campbell.

CONTENTS

  1. INTRODUCTION
  2. DETAILED DESCRIPTION OF THE MAP FORMAT
  3. MAP HANDLING SUBROUTINES
  4. THE SUBROUTINES 'MRDHDR' and 'MRDHDS'
    ('ccp4_map_read_open_header' and 'ccp4_map_read_open_header_check')
  5. THE SUBROUTINE 'MPOSN'
    ('ccp4_map_read_position_section')
  6. THE SUBROUTINE 'MRDLIN'
    ('ccp4_map_read_line_as_mode')
  7. THE SUBROUTINE 'MGULP'
    ('ccp4_map_read_whole_section_as_mode')
  8. THE SUBROUTINE 'MGULPR'
    ('ccp4_map_read_whole_section_as_real')
  9. THE SUBROUTINE 'MRCLOS'
    ('ccp4_map_read_close')
  10. THE SUBROUTINES 'MWRHDR' and 'MWRHDL'
    ('ccp4_map_write_open_header_by_id' and 'ccp4_map_write_open_header_by_name')
  11. THE SUBROUTINE 'MSPEW'
    ('ccp4_map_write_all_section')
  12. THE SUBROUTINE 'MWRSEC'
    ('ccp4_map_write_part_section')
  13. THE SUBROUTINE 'MPOSNW'
    ('ccp4_map_write_position_section')
  14. THE SUBROUTINES 'MWCLOSE', 'MCLOSE' and `MCLOSC'
    ('ccp4_map_write_close_auto', 'ccp4_map_write_close_user_sum' and 'ccp4_map_write_close_user_mean')
  15. THE SUBROUTINES 'MSYPUT' and 'MSYWRT'
    ('ccp4_map_write_spgname' and 'ccp4_map_write_symm_matrix')
  16. THE SUBROUTINE 'MSYMOP'
    ('ccp4_map_read_symm_matrix')
  17. THE SUBROUTINE 'MSYCPY'
    ('ccp4_map_copy_symmetry')
  18. THE SUBROUTINE 'MSKPUT'
    ('ccp4_map_write_skew_info')
  19. THE FUNCTION 'MSKGET'
    (No alternative name)
  20. THE SUBROUTINES `MTTCPY' and `MTTREP'
    ('ccp4_map_copy_title' and 'ccp4_map_write_replace_title')
  21. THE SUBROUTINES 'MRFNAM' and 'MWFNAM'
    ('ccp4_map_get_last_read_filename' and 'ccp4_map_get_last_write_filename')
  22. THE SUBROUTINES 'CCP4MAPHEAD', 'CCP4MAPIN' and 'CCP4MAPOUT' ('ccp4_map_read_header_only', 'ccp4_map_read_whole_map' and 'ccp4_map_write_whole_map')
  23. TYPICAL CALLING SEQUENCES
  24. IMPLEMENTATION NOTES

1) INTRODUCTION

The standard map file format used by the CCP4 programs is the map/image file format devised at the MRC LMB Cambridge, originally by David Agard. The advantages of the format include the following:
a)
The information in the header describes the relationship of the map to the crystal cell, and other information useful in crystallographic calculations (eg crystal symmetry)
b)
The file may be written and read in different ways e.g. written section by section and read line by line.
c)
The format is suitable for both crystallographic work and for image processing so that Fourier and plotting programs can be used for both purposes.

2) DETAILED DESCRIPTION OF THE MAP FORMAT

The overall layout of the file is as follows:
a)
File header (256 longwords)
b)
Symmetry information
c)
Map, stored as a 3-dimensional array
The files are read & written using the diskio package, which allows the file to be treated as a direct-access byte stream, essentially as in C fread & fwrite calls.

The header is organised as 56 words followed by space for ten 80 character text labels as follows:

 
 1      NC              # of Columns    (fastest changing in map)
 2      NR              # of Rows
 3      NS              # of Sections   (slowest changing in map)
 4      MODE            Data type
                          0 = envelope stored as signed bytes (from
                              -128 lowest to 127 highest)
                          1 = Image     stored as Integer*2
                          2 = Image     stored as Reals
                          3 = Transform stored as Complex Integer*2
                          4 = Transform stored as Complex Reals
                          5 == 0	
 
                          Note: Mode 2 is the normal mode used in
                                the CCP4 programs. Other modes than 2 and 0
                                may NOT WORK
 
 5      NCSTART         Number of first COLUMN  in map
 6      NRSTART         Number of first ROW     in map
 7      NSSTART         Number of first SECTION in map
 8      NX              Number of intervals along X
 9      NY              Number of intervals along Y
10      NZ              Number of intervals along Z
11      X length        Cell Dimensions (Angstroms)
12      Y length                     "
13      Z length                     "
14      Alpha           Cell Angles     (Degrees)
15      Beta                         "
16      Gamma                        "
17      MAPC            Which axis corresponds to Cols.  (1,2,3 for X,Y,Z)
18      MAPR            Which axis corresponds to Rows   (1,2,3 for X,Y,Z)
19      MAPS            Which axis corresponds to Sects. (1,2,3 for X,Y,Z)
20      AMIN            Minimum density value
21      AMAX            Maximum density value
22      AMEAN           Mean    density value    (Average)
23      ISPG            Space group number
24      NSYMBT          Number of bytes used for storing symmetry operators
25      LSKFLG          Flag for skew transformation, =0 none, =1 if foll
26-34   SKWMAT          Skew matrix S (in order S11, S12, S13, S21 etc) if
                        LSKFLG .ne. 0.
35-37   SKWTRN          Skew translation t if LSKFLG .ne. 0.
                        Skew transformation is from standard orthogonal
                        coordinate frame (as used for atoms) to orthogonal
                        map frame, as
 
                                Xo(map) = S * (Xo(atoms) - t)
 
38      future use       (some of these are used by the MSUBSX routines
 .          "              in MAPBRICK, MAPCONT and FRODO)
 .          "   (all set to zero by default)
 .          "
52          "

53	MAP	        Character string 'MAP ' to identify file type
54	MACHST		Machine stamp indicating the machine type
			which wrote file
55      ARMS            Rms deviation of map from mean density
56      NLABL           Number of labels being used
57-256  LABEL(20,10)    10  80 character text labels (ie. A4 format)

Symmetry records follow - if any - stored as text as in International Tables, operators separated by * and grouped into 'lines' of 80 characters (ie. symmetry operators do not cross the ends of the 80-character 'lines' and the 'lines' do not terminate in a *).

Map data array follows.

3) MAP HANDLING SUBROUTINES

High level subroutines are provided to handle 3-D maps. There are routines to handle the header, to read and write sections (ie a part of the 3D array corresponding to 1 value of the slow-moving index), and to handle the symmetry data.

Summary of routines:

Nb: longer descriptive names are now also available; calls to subroutines using the new names have the same arguments as those usng the original names.

Input:

Original name Function Alternative name
MRDHDR open file for reading, read header and print ccp4_map_read_open_header
MPOSN position file to a given map section ccp4_map_read_position_section
MGULP read a section of map ccp4_map_read_whole_section_as_mode
MGULPR read a section of map and convert to real*4 if necessary ccp4_map_read_whole_section_as_real
MRCLOS close input file ccp4_map_read_close
CCP4MAPHEAD read spacegroup, cell and map limits from header ccp4_map_read_header_only
CCP4MAPIN read in the whole map and store in x,y,z order ccp4_map_read_whole_map
[MRDLIN] [read a line of map] [ccp4_map_read_line_as_mode]

Output:

Original name Function Alternative name
MWRHDR / MWRHDL open output file and set up header ccp4_map_write_open_header_by_id / ccp4_map_write_open_header_by _name
MSPEW write section ccp4_map_write_all_section
MWCLOSE / [MCLOSE] / [MCLOSC] write out header and close file ccp4_map_write_close_auto / [ccp4_map_write_close_user_sum] / [ccp4_map_write_close_user_mean]
CCP4MAPOUT write out the whole map in x,y,z order ccp4_map_write_whole_map
[MWRSEC] [write part of array as section] [ccp4_map_write_part_section]

Symmetry:

Original name Function Alternative name
MSYPUT copy symmetry data from library file to map file ccp4_map_write_spgname
MSYWRT write symmetry data to mapfile ccp4_map_write_symm_matrix
MSYMOP read symmetry data from map file and convert to matrices and vectors. ccp4_map_read_symm_matrix
MSYCPY copy symmetry data from input map file to output map file ccp4_map_copy_symmetry
MSYGET get symmetry operations from library file (nothing to do with map files, exists in symlib.f) No alternative name

Skew transformation:

Original name Function Alternative name
MSKPUT put skew transformation into header common block ccp4_map_write_skew_info
MSKGET get skew transformation from header common block (Function call) No alternative name

Titles:

Original name Function Alternative name
MTTCPY Copy all titles from previously opened input and output files ccp4_map_copy_title
MTTREP Replace title in output file ccp4_map_write_replace_title

In all these routines IUNIT is a logical stream number in the range 1 to 12. These stream numbers are not directly related to the Fortran stream numbers.

4) THE SUBROUTINES 'MRDHDR' and 'MRDHDS'

Alternative names: ccp4_map_read_open_header and ccp4_map_read_open_header_check

The subroutines 'MRDHDR' (_read_open_header) or 'MRDHDS' (_read_open_header_check) are used to open an input map file and read the header information. MRDHDS differs from MRDHDR only in the provision of 2 extra arguments IFAIL & IPRINT which allow for soft failure of file opening, and control of printing

Call:  CALL MRDHDR(IUNIT,MAPNAM,TITLE,NSEC,IUVW,MXYZ,NW1,NU1,NU2,
      *NV1,NV2,CELL,LSPGRP,LMODE,RHMIN,RHMAX,RHMEAN,RHRMS)

       CALL MRDHDS(IUNIT,MAPNAM,TITLE,NSEC,IUVW,MXYZ,NW1,NU1,NU2,
      *NV1,NV2,CELL,LSPGRP,LMODE,RHMIN,RHMAX,RHMEAN,RHRMS,IFAIL,IPRINT)

Arguments:
 
 IUNIT (I)   Map stream number
 
MAPNAM (I)   Logical file name (type CHARACTER) e.g. 'MAPIN'
 
 TITLE (O)   Map title (CHARACTER*80)
 
  NSEC (O)   Number of sections in the map
 
  IUVW (O)   3 word array with fast, medium, slow axes (1=X, 2=Y, 3=Z)
 
  MXYZ (O)   3 word array with sampling intervals along whole cell on X, Y,
             Z
 
   NW1 (O)   No. of first section
 
   NU1 (O)   Start of section on fast axis (grid units)
 
   NU2 (O)   End of section on fast axis
 
   NV1 (O)   Start of section on medium axis
 
   NV2 (O)   End of section on medium axis
 
  CELL (O)   6 word array for cell dimensions in Angstroms and degrees
 
LSPGRP (O)   Space group number
 
 LMODE (O)   Map data mode =0, byte
                           =1, INTEGER*2
                           =2, REAL
                           =3, COMPLEX INTEGER*2
                           =4, COMPLEX REAL
                           =5, Treated as mode 0
             Only mode 2 and 0 should occur with CCP4 programs
 
 RHMIN (O)   Minimum density
 
 RHMAX (O)   Maximum density
 
RHMEAN (O)   Mean density

RHRMS  (O)   Rms deviation from the mean

The following arguments are for MRDHDS (ccp4_map_read_open_header_check) only
 IFAIL (I/O)  On input:     =0, stop on error
                             =1, return on error
              On output:    unchanged if no error
                             =-1, error 
  IPRINT (I)                 = 0; silent
                          .ne. 0; print file name, header info etc

5) THE SUBROUTINE 'MPOSN'

Alternative name: ccp4_map_read_position_section

This subroutine is used to set the position in the map file so that the next section to be read is section JSEC.

 
Call:  CALL MPOSN(IUNIT,JSEC)
 
Arguments:
 
 IUNIT (I)   Map stream number
 
  JSEC (I)   Position the input map before section JSEC
 

6) THE SUBROUTINE 'MRDLIN'

Alternative name: ccp4_map_read_line_as_mode

Read the next line from an input map file. The data are returned in the same form as that stored in the map.

 
Call:  CALL MRDLIN(IUNIT,X,IER)
 
Arguments:
 
 IUNIT (I)   Map stream number
 
     X (O)   Array to contain the line of data read from the map
 
   IER (O)   Error flag =0, OK   non-zero, error or end of file
 

7) THE SUBROUTINE 'MGULP'

Alternative name: ccp4_map_read_whole_section_as_mode

This subroutine reads the next whole map section. The data are returned in the same form as that stored in the map (ie no conversion for different modes is done).

 
Call:  CALL MGULP(IUNIT,X,IER)
 
Arguments:
 
 IUNIT (I)   Map stream number
 
     X (O)   Array to contain the section of data read from the map
 
   IER (O)   Error flag =0, OK   non-zero, error or end of file
 

8) THE SUBROUTINE 'MGULPR'

Alternative name: ccp4_map_read_whole_section_as_real

This subroutine reads the next whole map section. For map modes other than 2 the output data are converted to type=REAL. For complex maps (mode = 3 or 4) the complex amplitude is returned.

 
Call:  CALL MGULPR(IUNIT,X,IER)
 
Arguments:
 
 IUNIT (I)   Map stream number
 
     X (O)   Array to contain  the  section  of  data  read  from  the  map
             (Returned as REAL values)
 
   IER (O)   Error flag =0, OK   non-zero, error or end of file
 

9) THE SUBROUTINE 'MRCLOS'

Alternative name: ccp4_map_read_close

MRCLOS closes a map file open for reading to re-use the stream.

Call: CALL MRCLOS(IUNIT)

Arguments:
 IUNIT (I)   The map stream number

10) THE SUBROUTINES 'MWRHDR' AND'MWRHDL'

Alternative names: ccp4_map_write_open_header_by_id and ccp4_map_write_open_header_by_name

These subroutines are used to open an output map file and set up the header information. The actual header is only written to the file when the file is closed via the routine MCLOSE (ccp4_map_write_close_user_sum). The only difference between the two subroutines is that MWRHDR (ccp4_map_write_open_header_by_id) does not have a parameter for the logical file name for which a name of 'MAPOUT' is assumed.

Call:  CALL MWRHDR(IUNIT,TITLE,NSEC,IUVW,MXYZ,NW1,NU1,NU2,
      *NV1,NV2,CELL,LSPGRP,LMODE)
 
Call:  CALL MWRHDL(IUNIT,MAPNAM,TITLE,NSEC,IUVW,MXYZ,NW1,NU1,NU2,
      *NV1,NV2,CELL,LSPGRP,LMODE)

Arguments:
 
 IUNIT (I)   Map stream number
 
MAPNAM (I)   Logical  file  name  (type  CHARACTER)  e.g.  'MAPOUT'   (This
             parameter only present for MWRHDL)
 
 TITLE (I)   Map title (CHARACTER*80)
 
  NSEC (I)   Number of sections in the map
 
  IUVW (I)   3 word array with fast, medium, slow axes (1=X, 2=Y, 3=Z)
 
  MXYZ (I)   3 word array with sampling intervals along whole cell on X, Y,
             Z
 
   NW1 (I)   No. of first section
 
   NU1 (I)   Start of section on fast axis (grid units)
 
   NU2 (I)   End of section on fast axis
 
   NV1 (I)   Start of section on medium axis
 
   NV2 (I)   End of section on medium axis
 
  CELL (I)   6 word array for cell dimensions in Angstroms and degrees
 
LSPGRP (I)   Space group number
 
 LMODE (I)   Map data mode =0, byte for envelopes
                           =1, INTEGER*2
                           =2, REAL  (usual mode)
                           =3, COMPLEX INTEGER*2
                           =4, COMPLEX REAL
                           =5, Treated as mode 0
              Only mode 2 and 0 should occur with CCP4 programs
 

11) THE SUBROUTINE 'MSPEW'

Alternative name: ccp4_map_write_all_section

This subroutine writes the next whole map section. The routine is used when the section occupies the complete array. The data are written without translation for different modes.

Call:  CALL MSPEW(IUNIT,X)
 
Arguments:
 
 IUNIT (I)   Map stream number
 
     X (I)   Array holding the map section
 

12) THE SUBROUTINE 'MWRSEC'

Alternative name: ccp4_map_write_part_section

This subroutine is used to write a map section as part of an array to the map file.

 
Call:  CALL MWRSEC(IUNIT,X,MU,MV,IU1,IU2,IV1,IV2)
 
Arguments:
 
 IUNIT (I)   The map stream number
 
     X (I)   The array holding the map section
 
    MU (I)   The number of points along the whole fast axis
 
    MV (I)   The number of points along the whole medium axis
 
   IU1 (I)   The start array index along the fast axis
 
   IU2 (I)   The finish array index along the fast axis
 
   IV1 (I)   The start array index along the medium axis
 
   IV2 (I)   the finish array index along the medium axis
 
The elements written for a section may be described in FORTRAN notation as ((X(I,J),I=IU1,IU2),J=IV1,IV2).

13) THE SUBROUTINE 'MPOSNW'

Alternative name: ccp4_map_write_position_section

This subroutine is used to set the position in the map file so that the next section to be written is section JSEC.

 
Call:  CALL MPOSNW(IUNIT,JSEC)
 
Arguments:
 
 IUNIT (I)   Map stream number
 
  JSEC (I)   Position the output map before section JSEC
 

14) THE SUBROUTINE 'MWCLOSE', 'MCLOSC' and `MCLOSE'

Alternative names: ccp4_map_write_close_auto, ccp4_map_write_close_user_sum and ccp4_map_write_close_user_mean

MWCLOSE, MCLOSC & MCLOSE write the header records to the output map file and close the file. They differ in their handling of the density limits, mean and rms deviation. You are strongly recommended to use MWCLOSE (ccp4_map_write_close_user_sum).

Use:-

MWCLOSE (ccp4_map_write_close_auto)
if the sums for mean & rms are accumulated inside the maplib package (in MSPEW/ccp4_map_write_all_section). This works for mode=2 only. USE THIS FOR NORMAL PURPOSES.
MCLOSC (ccp4_map_write_close_user_sum)
when a map file is just being copied, since the RHMEAN & RHRMS arguments can be taken directly from the call to MRDHDR/ccp4_map_read_open_header. This call is also useful when the mean & rms need to be weighted (as in rotation functions), so they need to be calculated in the main program.
MCLOSE (ccp4_map_write_close_user_mean)
if the sums for mean & rms RHSUM & RHSUM2 are accumulated outside the maplib package.
Calls:  CALL MWCLOSE(IUNIT)
 	CALL MCLOSC(IUNIT,RHMIN,RHMAX,RHMEAN,RHRMS)
	CALL MCLOSE(IUNIT,RHMIN,RHMAX,RHSUM,RHSUM2)

Arguments:
 
 IUNIT (I)   The map stream number
 
 RHMIN (I)   The minimum density in the map
 
 RHMAX (I)   The maximum density in the map
 
RHSUM  (I)   The sum of all the densities in the map (This will be  divided
             internally by the number of points in the map to give the mean
             density which is then stored)
 
RHSUM2 (I)   The sum of squares of the density values in the map (This will
             used internally to calculate the rms deviation from the mean
             value which is then stored.)
                                   
RHMEAN (I)   The mean density in the map. This is the same as is returned
             from reading the header
 
RHRMS  (I)   The rms deviation from the mean density, as stored in the header

15) THE SUBROUTINES 'MSYPUT' and 'MSYWRT'

Alternative names: ccp4_map_write_spgname and ccp4_map_write_symm_matrix

The subroutine MSYPUT reads the symmetry operators file (logical name SYMOP) and finds the entry for the requested space group. The symmetry operators are copied from the symmetry operators file to the map file on stream IUNIT leaving space for the header records.

 
Call:  CALL MSYPUT(IST,LSPGRP,IUNIT)
 
Arguments:
 
   IST (I)   The FORTRAN unit number for  reading  the  symmetry  operators
             file (choose a unit number which does not conflict with
	     the rest of your program).
 
LSPGRP (I)   The space group number
 
 IUNIT (I)   The map stream number of the output map file


The subroutine MSYWRT writes symmetry operators to map stream IUNIT Note that the symmetry operators are written to the file one per line and may have a different format to those in the SYMOP file
Call: CALL  MSYWRT(IUNIT,NSYM,ROT)

Arguments:
       IUNIT    (I)     Map stream number 
       NSYM     (I)     Number of symmetry operators
 ROT(4,4,NSYM)  (I)     rotation/translation matrices

16) THE SUBROUTINE 'MSYMOP'

Alternative name: ccp4_map_read_symm_matrix

This subroutine reads the symmetry operators from an input map file (after calling MRDHDR /ccp4_map_read_open_header). The operators are converted and returned as matrices.

 
Call:  CALL MSYMOP(IUNIT,NSYM,ROT)
 
Arguments:
 
 IUNIT (I)   The map stream number
 
  NSYM (O)   The number of symmetry operators
 
   ROT (O)   The array in which the symmetry operators are returned as  4*4
             matrices. It should be dimensioned as ROT(4,4,NS) where NS  >=
             NSYM (usually NS = 96)
 

17) THE SUBROUTINE 'MSYCPY'

Alternative name: ccp4_map_copy_symmetry

This subroutine copies the symmetry operators from an input map file to an output map file after calls to MRDHDR (_read_open_header) and MWRHDR (_write_open_header_by_id) (or MWRHDL / _write_open_header_by_name). Note that if you have more than one input file, this routine should be called after MRDHDR for the file from which you want to copy the symmetry operations, and before calling MRDHDR for any other file.

 
Call:  CALL MSYCPY(IN,IOUT)
 
Arguments:
 
    IN (I)   The input map stream number
 
  IOUT (I)   The output map stream number
 

18) THE SUBROUTINE 'MSKPUT'

Alternative name: ccp4_map_write_skew_info

This subroutine writes a skew transformation to an output map header block (after a call to MWRHDR (_write_open_header_by_id) or MWRHDL (_write_open_header_by_name) ).

NB *** Use of MSKPUT & MSKGET has not been generally implemented in the CCP4 suite ***

 
Call:  CALL MSKPUT(SKWMAT,SKWTRN)
 
Arguments:
 
SKWMAT (I)   3*3 Skew rotation matrix
 
SKWTRN (I)   3 word Skew translation matrix
 

19) THE FUNCTION 'MSKGET'

Alternative name: None.

This function reads a skew transformation from an input map header block (after a call to MRDHDR (_read_open_header) ).

NB *** Use of MSKPUT & MSKGET has not been generally implemented in the CCP4 suite ***

 
Call:  I = MSKGET(SKWMAT,SKWTRN)
 
Arguments:
 
SKWMAT (O)   3*3 Skew rotation matrix
 
SKWTRN (O)   3 word Skew translation matrix
 
Returns MSKGET =1, skew transformation present, =0, absent

20) THE SUBROUTINES `MTTCPY' and `MTTREP'

Alternative names: ccp4_map_copy_title and ccp4_map_write_replace_title

MTTCPY (ccp4_map_copy_tile) copies all titles from a previously opened input to the previously opened output file, adding the new TITLE to the end or overwriting the last one if there are already 10 (the maximum which can be stored).

Call:  CALL MTTCPY(TITLE)

Arguments:
TITLE (I)  CHARACTER variable holding the new title (<=80 characters)

MTTREP (ccp4_map_write_replace_title) replaces the NT-th title in the output file (after calls to MWRHDR / ccp4_map_read_open_header and MTTCPY / ccp4_map_copy_title), adding a new TITLE to the end or overwriting the last one if there are already 10.
 
Call:  CALL MTTREP(TITLE,NT)

Arguments:
TITLE (I)  CHARACTER varaible holding the new title

   NT (I)  INTEGER number of title to be replaced

21) THE SUBROUTINES 'MRFNAM' and 'MWFNAM'

Alternative names: ccp4_map_get_last_read_filename and ccp4_map_get_last_write_filename

These routines may be called to return the full filename for a file open for reading (MRFNAM / ccp4_map_get_last_read_filename) or writing (MWFNAM / ccp4_map_get_last_write_filename).

Call: CALL MRFNAM(FNAME)
      CALL MWFNAM(FNAME)

Arguments:
  FNAME (O) file name of last file opened by MRDHDR/MRDHDS or by
		MWRHDR/MWRHDL

22) THE SUBROUTINES 'CCP4MAPHEAD', 'CCP4MAPIN' AND 'CCP4MAPOUT'

Alternative names: ccp4_map_read_header_only, ccp4_map_read_whole_map, and ccp4_map_write_whole_map.

These are Kevin Cowtan's "wrapper" routines which provide an interface to other maplib subroutines in order to easily read and write entire maps. CCP4MAPHEAD obtains the map limits from the map file, and CCP4MAPIN and CCP4MAPOUT then use this information to resepctively read in and write out an entire map in one go.

CCP4MAPHEAD reads header information from a map file. It is used to get the map limits before calling CCP4MAPIN.

  Call: CALL ccpmap4head(iunit,name,nspgrp,cell,nu,nv,nw,nu1,nv1,nw1,nu2,
       +                 nv2,nw2)
Arguments:
  iunit   (I)  Map stream number (integer)
  name    (I)  Logical file name (type character*8) e.g.'MAPIN'   
  nspgrp  (O)  Space group number (integer)
  cell    (O)  6 word array for cell dimensions in Angstroms and
               degrees (real)
  nu      (O)  Sampling interval along whole cell on X (integer)
  nv      (O)  Sampling interval along whole cell on Y (integer)
  nw      (O)  Sampling interval along whole cell on Z (integer)
  nu1     (O)  Start of map on X axis, in grid units (integer)
  nv1     (O)  Start of map on Y axis, in grid units (integer)
  nw1     (O)  Start of map on Z axis, in grid units (integer)
  nu2     (O)  End of map on X axis (integer)
  nv2     (O)  End of map on Y axis (integer)
  nw2     (O)  End of map on Z axis (integer)
Note that this differs from ccp4_map_read_open_header_check [MRDHDS] (which it calls) in that the file is not left open but is closed (by a call to ccp4_map_read_close [MRCLOS]) before the subroutine terminates. Note also that the map limits are returned in x,y,z order rather than in fast, medium, slow order.

CCP4MAPIN reads a whole map into an array and stores it in x,y,z order. The map limits are required as input to dimension the array holding the map, and can be obtained with a call to the subroutine CCP4MAPHEAD.

  Call: CALL ccp4mapin (iunit,name,title,map,nu1,nv1,nw1,nu2,nv2,nw2)
Arguments:
  iunit   (I)  Map stream number (integer)
  name    (O)  logical file name (type character) e.g. 'MAPIN'
  title   (O)  Map title (type character)
  map     (O)  Real array of dimension (nu1:nu2,nv1:nv2,nw1:nw2)
               which stores the map which is read in
  nu1     (I)  Start of map on X axis, in grid units (integer)
  nv1     (I)  Start of map on Y axis, in grid units (integer)
  nw1     (I)  Start of map on Z axis, in grid units (integer)
  nu2     (I)  End of map on X axis (integer)
  nv2     (I)  End of map on Y axis (integer)
  nw2     (I)  End of map on Z axis (integer)
CCP4MAPIN utilises calls to the following maplib routines:

CCP4MAPOUT writes out a whole map in x,y,z order.

  Call: CALL ccp4mapout(iunit,name,title,map,nspgrp,cell,nu,nv,nw,nu1,
       +                nv1,nw1,nu2,nv2,nw2)
Arguments:
  iunit   (I)  Map stream number (integer)
  name    (I)  Logical file name (type character) e.g.'MAPIN'   
  title   (I)  Map title (type character)
  map     (I)  Real array of dimension (nu1:nu2,nv1:nv2,nw1:nw2)
               which stores the map being written out
  nspgrp  (I)  Space group number (integer)
  cell    (I)  6 word array for cell dimensions in Angstroms and degrees (real)
  nu      (I)  Sampling interval along whole cell on X (integer)
  nv      (I)  Sampling interval along whole cell on Y (integer)
  nw      (I)  Sampling interval along whole cell on Z (integer)
  nu1     (I)  Start of map on X axis, in grid units (integer)
  nv1     (I)  Start of map on Y axis, in grid units (integer)
  nw1     (I)  Start of map on Z axis, in grid units (integer)
  nu2     (I)  End of map on X axis (integer)
  nv2     (I)  End of map on Y axis (integer)
  nw2     (I)  End of map on Z axis (integer)
CCP4MAPOUT utilises calls to the following maplib subroutines: There is also a call to the symlib routine MSYMLB.

23) TYPICAL CALLING SEQUENCES

Typical calling sequences are as follows:

Write new file

MWRHDR/MWRHDL ccp4_map_write_open_header_by_id / ccp4_map_write_open_header_by_name
MSYPUT ccp4_map_write_spgname
MSPEW repeated for each section ccp4_map_write_all_section
MWCLOSE[/MCLOSE/MCLOSC] ccp4_map_write_close_auto [/ccp4_map_write_close_user_sum / ccp4_map_write_close_user_mean]

Read file

MRDHDR ccp4_map_read_open_header
MSYMOP ccp4_map_read_symm_matrix
MPOSN to 1st section ccp4_map_read_position_section
MGULP (or MGULPR) repeated for each section ccp4_map_read_whole_section_as_mode (or ccp4_map_read_whole_section_as_real)

Read file, write modified file

MRDHDR ccp4_map_read_open_header
MWRHDR/MWRHDL ccp4_map_write_open_header_by_id / ccp4_map_write_open_header_by_name
MSYMOP ccp4_map_read_symm_matrix
MSYCPY ccp4_map_copy_symmetry
MGULP ) repeated for each section
MSPEW )
ccp4_map_read_whole_section_as_mode )
ccp4_map_write_all_section )
MWCLOSE[/MCLOSE/MCLOSC] ccp4_map_write_close_auto [/ccp4_map_write_close_user_sum / ccp4_map_write_close_user_mean

Read and write whole map

CCP4MAPHEAD to get map limits ccp4_map_read_header_only
CCP4MAPIN ccp4_map_read_whole_map
CCP4MAPOUT once map has been manipulated ccp4_map_write_whole_map

24) IMPLEMENTATION NOTES

The map functions (modes other than 2 or 4) requiring non standard code are handled via the routines CCPBYT, CCPTOI, CCPBYI, CCPGTB etc. in CCPLIB and through the DISKIO routines. In particular, use packed integer arrays for handling masks/envelopes. The convention for masks is that non-zero represents `true', i.e. protein region, and 0 false, i.e. solvent region; normally only 0 and 1 should be used for masks. king-2.21.120420/driftwood/doc/map-formats/mappage.html0000644000000000000000000000526211531212736021115 0ustar rootroot mappage



next up previous contents index
Next: Brix --- yet Up: Associated programs Previous: bones

mappage

 

Creates a standard electron density file from external file formats. Example of reading in a CCP4 map. It has been edited to remove excess CCP4 listings.

 
% ../bin/mappage
          *** Mappage program ****
Input map name from your crystallographic system: ano1.E
O style map name: q.map 

 Fourier parameters as read from the data-set
          Origin ................................    0    0    0
          Extent ................................   76   84   48
          Grid ..................................   76   84   48
          uvw (fast, medium, slow) ..............    Z    X    Y

Do you wish to explicitly define Prod/Plus (y,[n])? n 
Cell constants ....................  91.800  99.500  56.500  90.000  90
.000  90.000
Fourier type ......................N
Number of pages along x , y \& z    10   11    6

 Byte =    327.670 * density +         18
vega [32]#  di q.map
-rw-r-----   1 alwyn    oteam     394752 Dec 15 15:48 q.map
vega [33]#

Notice the program decided on the prod and plus values. These numbers are to force the floating point number into a byte (i.e. an integer with values 1-255) via

 
byte_value = density_value * prod + plus

Any values outside the range are truncated. The plus value is therefore important when negative values are to be contoured, and the prod values is important for scaling.



king-2.21.120420/driftwood/doc/map-formats/brix-howto.html0000644000000000000000000002212411531212736021601 0ustar rootroot BRIX HOWTO: Introduction Next Previous Contents

1. Introduction

BRIX is a program (Still Another!) to convert different formats of electron density maps to O format. BRIX was written to circumvent the problems of fixed array boundaries, and allocates the memory it needs on the fly. Thus, you are only limited by the virtual memory of the computer.

BRIX writes a new un-swapped version of the DSN6 file, independent of endianism issues. Thus, you can use a bricked density file which has been calculated on an ALPHA machine on a SGI. Also, the new format contains more information in the header, most notably the SIGMA value of the map. Thus, in your map macros, you will be able to put a ';' where you normally specify the contouring level, to get a 1 sigma contouring.

The new bricked electron density format is understood by O versions later than 5.10.

However, BRIX will still calculate the old, unportable, DSN6 format, if the program is invoked under the name 'mappage' (uh, actually, it only needs to contain the word mappage, so 4d_mappage is OK). In other words, you can install a symbolic link (or normal link):

      % ln -s brix mappage

and then run the mappage version.

BRIX understands the following map formats: X-PLOR (formatted), CCP4, TNT and EZD, and will automagically determine which format the map is. It will also automatically slice the map correctly.

1.1 An example session

Here is a sample session of BRIX. The only input needed is the names of the input map and the output brick file; these can be given on the command line:

kaktus 395% brix /xtal/morten/xplor/type3/m10.xmap   m10.omap
 brix> Convert ED maps to O format
 brix> Version 1.1, Nov 1993
 brix>
 brix> Mapfile: /xtal/morten/xplor/type3/m10.xmap
 brix> O brick file: m10.omap
 brix> ...file is formatted
 brix>
 brix> Map type is X-PLOR
 brix>
 brix> Parameters as read from the map file:
 brix> Grid .................        80        80       192
 brix> Origin ...............         6       -21        24
 brix> Extent ...............        75       105        76
 brix> Fast, medium, slow....         1         2         3
 brix> Cell axes ............     69.90     69.90    161.80
 brix> Cell angles ..........     90.00     90.00     90.00
 brix>
 brix> Reslicing XYZ --> YXZ
 brix> Fast, medium, slow....         2         1         3
 brix> Min, max, sigma ......  -4.53080   7.12510   0.98377
 brix> Scale ................     1.000
 brix>
 brix> Prod .................  21.87733
 brix> Plus .................        99
 brix> Bricks along x,y,z ...        10        14        10
kaktus 396%

BRIX binaries are available from ftp://kaktus.imsb.au.dk/pub/o/brix. There are versions for HP, ESV and 4D.

1.2 The BRIX map format

The format of the bricked files made by BRIX is almost the same as the old MAPPAGE (DNS6) format, except that no byte swapping is required.

The header record

The first 512 bytes of the file is the header information, containing the following information

Origin:

the origin of the map in grid units, along X, Y, Z.

Extent:

the extent (size) of the map, along X, Y, Z, in grid units

Grid:

number of grid points along the whole unit cell, along X, Y, Z.

Cell:

Unit cell parameters

Prod, plus:

Constants that bring the electron density from byte to normal scale. They are calculated like this: prod = 255.0/(rhomax-rhomin), plus = -rhomin*prod.

Sigma:

Rms deviation of electron density map.

In the original DSN6 format, this information was stored in the first elements of an INTEGER*2 array with 256 elements. The problem with that is that such an array is stored differently in big endian (for example SGI) and small endian (for example ALPHA) machines. BRIX overcomes this problem by storing the header as a character string. The first few bytes of the character string is a signature (a "smiley") that enables O and other programs to recognize the format of the file. Then comes a keyworded sequence giving the origin, extent, unit cell parameters etc.

On a UNIX system, you can use 'more' to look at the header of the file, because it ends with a formfeed character:

kaktus 810% more test.omap
:-) origin 49 -25 -12 extent 77 51 88 grid 180 108 144 cell 208.280 122.300 151.
800 90.000 126.700 90.000 prod 22.55819 plus 118 sigma 1.07519 ^L               
--More--(0%)

The map data

The input map is divided into cubes of 8 x 8 x 8 = 512 gridpoints. The density value at each of these gridpoints is then scaled to fit into a single byte, that is, to values between 0 and 255. Each of these 512 cubes (bricks) is written to a single record of the file. In the DSN6 format, the 512 bytes where equivalenced to an INTEGER*2 array with 256 elements, which was then written out. This presents a problem as described in the section above. BRIX overcomes this by storing the 512 bytes in a character array.

1.3 Writing a BRIX file

The following describes the use of a piece of FORTRAN code that you can use in your own programs when writing a BRIX file. It can be found at http://imsb.au.dk/~mok/brix/paged_export.F.

This file contains two subroutines, paged, and pagedhdr. They are intended for outputting a paged electron density file for input into "O". The format of the paged electron density file does not depend on the byte-endedness of the computer.

To use the subroutines, you must first set up the values of these variables:

  • Origin: the origin of the map in grid units, along X, Y, Z.
  • Extent: the extent (size) of the map, along X, Y, Z, in grid units
  • Grid: number of grid points along the whole unit cell, along X, Y, Z.
  • Cell: Unit cell parameters
  • Prod, plus: Constants that bring the electron density from byte to normal scale. They are calculated like this: prod = 255.0/(rhomax-rhomin), plus = -rhomin*prod.
  • Sigma: Rms deviation of electron density map.

Your program must open a file, direct access 512 byte records:


      open (unit=olun, file=filenm, status='new',access='direct',
     $        recl=128, form='unformatted')

The recl number is sometimes given in longwords, sometimes in bytes, depending on the computer. Now you can write the header. Str is a character*512 variable:


     write (str, 10) origin, extent, grid, cell, prod, plus, sigma
10   format (":-) Origin", 3i5," Extent", 3i5, " Grid", 3i5,
    $        " Cell ", 6f10.3, " Prod", f12.5, " Plus",i8, 
    $        " Sigma ", f12.5)


     write (olun, rec=1, iostat=errcod) str

Next, the program must calculate the number of 8 grid pages along X, Y, Z:


     do i=1,3
        xyzbrix(i) = extent(i)/8
        if (mod(extent(i),8) .ge. 1) xyzbrix(i) = xyzbrix(i) + 1
     enddo

The paged routine can now be called. The map must be sectioned so that fast, medium, slow is Y, X, Z. Call the paged routine with one section at a time. Rho is the array that holds the (prod/plus scaled) density, rhosec is an array large enough to hold one section, slices is an array large enough to hold 8 sections of density. In the following example a user-supplied routine map_getsection gets the next slice. Of course you can do this any way you like.


     do isec = 1, extent(3)
        call map_getsection (rho, rhosec, isec, extent, errcod)
        call paged (olun, rhosec, slices, 
    $        extent(1), extent(2), xyzbrix(1), xyzbrix(2), isec, errcod)
        if (errcod .ne. 0) then
           call prompt ("Error writing brick")
           stop
        endif
     enddo

Finally, call the paged routine with a value of 0 in 'isec':


        call paged (olun, rhosec, slices, 
    $        extent(1), extent(2), xyzbrix(1), xyzbrix(2), 0, errcod)

This flushes the slices array.


Next Previous Contents king-2.21.120420/driftwood/doc/map-formats/ccp4plugin.C0000644000000000000000000001726011531212736020772 0ustar rootroot/*************************************************************************** *cr *cr (C) Copyright 1995-2003 The Board of Trustees of the *cr University of Illinois *cr All Rights Reserved *cr ***************************************************************************/ /*************************************************************************** * RCS INFORMATION: * * $RCSfile: ccp4plugin.C,v $ * $Author: eamon $ $Locker: $ $State: Exp $ * $Revision: 1.8 $ $Date: 2003/05/23 18:15:38 $ * ***************************************************************************/ /* * CCP4 electron density map file format: http://www.ccp4.ac.uk/html/maplib.html * */ #include #include #include #include #include "molfile_plugin.h" // swap ndata 4-byte words static void swap4(void *data, int ndata) { int i; char *dataptr; char tmp; dataptr = (char *) data; for (i=0; ifd = fd; ccp4->vol = NULL; *natoms = MOLFILE_NUMATOMS_NONE; ccp4->nsets = 1; // this EDM file contains only one data set ccp4->swap = swap; ccp4->dataOffset = 1024 + symBytes; ccp4->vol = new molfile_volumetric_t[1]; strcpy(ccp4->vol[0].dataname, "CCP4 Electron Density Map"); // Mapping between CCP4 column, row, section and VMD x, y, z. ccp4->xyz2crs[crs2xyz[0]-1] = 0; ccp4->xyz2crs[crs2xyz[1]-1] = 1; ccp4->xyz2crs[crs2xyz[2]-1] = 2; xIndex = ccp4->xyz2crs[0]; yIndex = ccp4->xyz2crs[1]; zIndex = ccp4->xyz2crs[2]; ccp4->vol[0].origin[0] = xScale * origin[xIndex]; ccp4->vol[0].origin[1] = yScale * origin[yIndex]; ccp4->vol[0].origin[2] = zScale * origin[zIndex]; // calculate non-orthogonal unit cell coordinates alpha = (3.14159265358979323846 / 180.0) * cellAngles[0]; beta = (3.14159265358979323846 / 180.0) * cellAngles[1]; gamma = (3.14159265358979323846 / 180.0) * cellAngles[2]; ccp4->vol[0].xaxis[0] = xScale * extent[xIndex]; ccp4->vol[0].xaxis[1] = 0; ccp4->vol[0].xaxis[2] = 0; ccp4->vol[0].yaxis[0] = cos(gamma) * xScale * extent[xIndex]; ccp4->vol[0].yaxis[1] = sin(gamma) * yScale * extent[yIndex]; ccp4->vol[0].yaxis[2] = 0; float z1, z2, z3; z1 = cos(beta); z2 = (cos(alpha) - cos(beta)*cos(gamma)) / sin(gamma); z3 = sqrt(1.0 - z1*z1 - z2*z2); ccp4->vol[0].zaxis[0] = z1 * xScale * extent[xIndex]; ccp4->vol[0].zaxis[1] = z2 * yScale * extent[yIndex]; ccp4->vol[0].zaxis[2] = z3 * zScale * extent[zIndex]; ccp4->vol[0].xsize = extent[xIndex]; ccp4->vol[0].ysize = extent[yIndex]; ccp4->vol[0].zsize = extent[zIndex]; ccp4->vol[0].has_color = 0; return ccp4; } static int read_ccp4_metadata(void *v, int *nsets, molfile_volumetric_t **metadata) { ccp4_t *ccp4 = (ccp4_t *)v; *nsets = ccp4->nsets; *metadata = ccp4->vol; return MOLFILE_SUCCESS; } static int read_ccp4_data(void *v, int set, float *datablock, float *colorblock) { ccp4_t *ccp4 = (ccp4_t *)v; float currDensity, *cell = datablock; int x, y, z, xSize, ySize, zSize, xySize, extent[3], coord[3]; FILE *fd = ccp4->fd; xSize = ccp4->vol[0].xsize; ySize = ccp4->vol[0].ysize; zSize = ccp4->vol[0].zsize; xySize = xSize * ySize; // coord = // extent = extent[ccp4->xyz2crs[0]] = xSize; extent[ccp4->xyz2crs[1]] = ySize; extent[ccp4->xyz2crs[2]] = zSize; fseek(fd, ccp4->dataOffset, SEEK_SET); for (coord[2] = 0; coord[2] < extent[2]; coord[2]++) { for (coord[1] = 0; coord[1] < extent[1]; coord[1]++) { for (coord[0] = 0; coord[0] < extent[0]; coord[0]++) { if (feof(fd) || ferror(fd)) { fprintf(stderr, "Problem reading the file.\n"); return MOLFILE_ERROR; } x = coord[ccp4->xyz2crs[0]]; y = coord[ccp4->xyz2crs[1]]; z = coord[ccp4->xyz2crs[2]]; fread(&currDensity, sizeof(float), 1, fd); if (ccp4->swap == 1) swap4(&currDensity, 1); cell[x + y*xSize + z*xySize] = currDensity; } } } return MOLFILE_SUCCESS; } static void close_ccp4_read(void *v) { ccp4_t *ccp4 = (ccp4_t *)v; fclose(ccp4->fd); delete [] ccp4->vol; delete ccp4; } /* * Initialization stuff here */ static molfile_plugin_t plugin = { vmdplugin_ABIVERSION, // ABI version MOLFILE_PLUGIN_TYPE, // plugin type "ccp4", // file format description "Eamon Caddigan", // author(s) 0, // major version 1, // minor version VMDPLUGIN_THREADSAFE, // is reentrant "ccp4" // filename extension }; int VMDPLUGIN_init(void) { return VMDPLUGIN_SUCCESS; } int VMDPLUGIN_fini(void) { return VMDPLUGIN_SUCCESS; } int VMDPLUGIN_register(void *v, vmdplugin_register_cb cb) { plugin.open_file_read = open_ccp4_read; plugin.read_volumetric_metadata = read_ccp4_metadata; plugin.read_volumetric_data = read_ccp4_data; plugin.close_file_read = close_ccp4_read; (*cb)(v, (vmdplugin_t *)&plugin); return VMDPLUGIN_SUCCESS; } king-2.21.120420/driftwood/doc/map-formats/img97.gif0000644000000000000000000001432611531212736020241 0ustar rootrootGIF89ad!,dڋ޼*LቦʶۙH\ l>r,*̦HL2iCTń9yp>P6;^#Fg`EXx%2p(dE3ٹ5yfZ BZzhzۚ +fhY{*;8yyI\mMQ"L,%z]~lj[LX-lێJnnϪW߿ϟZ#0:|eS@+Z1;zi"ȑ%$aS)[~O].k $$ xy:= W.‘ WNQ \'t*%J58UP'H:]źtF$b-Yk[Bͅ ei^Mmc6,l8ZfɫLoܮ|3adA1&hx=dݳfp{;8Lƙ'ԫ[=v{&H%+fi7'Q㋯6'YNMbG"jl#/w&_`?-hcltUPW1~uh" 2ve=AEiJ}8]8Џԇ3Q]@3]Z٘8D.ig=A"ƍ4LVf&9rW™Dtމgzggd&#-:^6WYߣY(brf~~O &vJob%a`d急ۦ˪9!eފ[n8  9Ja<*]&7[axvHJZOJ5JuTb"g5 V܂S;' `4T`SX%UQXS(]ҢxKYy$.#K(^^p)ӈwB1ՃFN=訩QOc nse= i-Xzrt_7asC[ғZ$5&$K7-lJQL=|?拠'bG͋jlK_ S E2D#M3ᔘ 8!5 IL)*L8pK L$?_rS؅9Idв:wZ&p6]yWw0Xm'^m ;bS|_}Y.wk 8$sˌg{*},.G"h4iQ9q:֫m.?Ǭ3<[oiٺREMeŰְI\/ZjftY'ɩ2czh(/;`=ƌ.Te!^DiDF7*}AmXzw5S9m!P&8N;ETSRwJa; V,cUR.nԘTfm Y:Z.dm7NwCf7}1ZJ˟VǮm s3pa5mߢ*0+\ vd+p2J!w҄ݧ,SO+r2mL5kޭu(>mt3ieF+1={YQ~H_hi=9k/ NxT U5^&)Q޶+ހ ` c/quIKg0bb8Kbh T669ŭ Nj_$>]qP]{涮Uk;IWV$04RtKi|I*}6QAxQi޷KGq0#;>rȏRUpfVڊ7nb O GM`p'?1™|eoKʓiQ{ĕmۺ "ګDAT G/mC#T+M?hs {!=뙶Y:r}ܴpd{u΄Y6sPd$xT>z 5L˽IMV7!1 ?KO_1SV:w3'.eng3æ(sSJc߸mh8z|h*tOf?"ݷ[Qlyʩ"nw?DGgax4yX[fGAs'$9'dvٛ Dה}l'}%c|V]Phy>Йv飗b5~:i7|&eyw+)4[ʥS`䓓5)D(9&ё3Vv:[9DrX} @:pQ3~:dUUOgolz0sq3Yt$]sXfuѓTHUl<֞ij-8I`46d鉏kwuH˨h_{ƺz\vfe's6Lmx"x|W&ןIz. (zږq醪TIZ Dʎ t y:_%imY#|fPOV C>' #my+դiӦ;KH:FlYڥ=?KN6sX6f#Hjʳq٬Xhp1*Wkx|HSĉB AbX{%\ۙĒB+yU0JI JJKU{2w꤯yQ[y*V U26cM٪n5-¸#uGhyeUSѺYk?s֭ǎ;آUXWJ9 (IW*ʯ/ OEO ku Hc![Vy[Ļ6}++{"hJz~XXdM1#y 5;2x@)\7ylE{ lffkZPmzmfq*1Y{sz_[tDʠ>(D۵}k۴ĻUY|\蘵ۗ{!KJ[Jbveʛ1?yE!u \{ A |>\]afOWۂDڙ>iysD8h ʒ[@ _\Qwqb…ʼe ԽUqpA1cy{_xtA?u:O ɢZk)p ~-k%,R'= l0k--BFȹQ2ms{J5|lR=QOD8z Ğ * hŔOX"z\z濉j졿;+ Z<=G]-[y/WLO[[Eanj6asy&XLk*wǡҷɜuܭ]2˛ [h(Ү왂]z@l ȩȘHi:VLeF-ɴ;Qn7KTɴگTpZ˶g8բ| ɉ UYBVxx)wѵѦFʌμ<>}JMƦ ʁ CWK: }7cݨ,\A)7PcS& Ě|c-Zۭν0a+o5xNB7j/ ̖Zm nhNYuHiO5#^+BW\圎MU]X%ܪN z^&&jޠ78BޫnI87*~pJP{J4q)sNo=N: ?2|M^g^5A%~2t4n @J;@I:Ɓs3_mdo?}lool qABݞƈ{&YSAf^S}[oOqt]VZYwp.*N4,PtY<54g#'Ց)]Xc^I_ iý ڢTxke)nGĔڰ0`$'͢&71 =+AO7! HSK/g.:Y-JGj܄2s5Q=-\"9i؊u {}k|W?Cβp)s,MYeD?0ׇYx I@rxqǑ'WϡGw͵tׅWr#%߮ғ{1kŌxC6XKZgT :б4G#&hA*W:&lA S@Lq7! 1P+5Dy$Agy?z,r`G$4,D-!<|RKړ,/ 6e5KSA68;king-2.21.120420/driftwood/doc/map-formats/img98.gif0000644000000000000000000000126311531212736020236 0ustar rootrootGIF89a!,b{}HZa:.0Kq{k|fpt܈f2n?JpڴU@Ej_LNj"w1 +xve%GUXRؐ70V" "CuaY I‰9DZzjۋ9++܊w{Me+ZXlԑ:RFMd;_ym8rgQmx&[J X[ZK_· Kelٯ؈Fveў/q٥)sO}c᳡gBMx[(QrɋS"@[Y&f@fY- 9VOƽּ񌓾Lw5H'%v N%\LÞNBd[[%~uw fPiǗ('` .vIieh9#B[U- adؠ;5V5jR9BekU>'d2P;king-2.21.120420/driftwood/doc/map-formats/dsn6-jones.html0000644000000000000000000001052711531212736021471 0ustar rootroot Alwyn Jones' DSN6 Map Format Files next up previous contents index
Next: Generating REFI Geometry Files Up: File Formats Previous: Ten Eyck MAP Format

Alwyn Jones' DSN6 Map Format Files

The DSN6 map format is designed to allow the rapid location of blocks (called bricks in this context) of density for display on a graphics system. The file in binary with a fairly simple structure.

It is composed of a series of records which are all 512 bytes long. The first is a header which contains all the information required to interpret the rest of the file. The subsequent bricks contain blocks of electron density. Each density sample is one byte in size. The parameters for mapping real numbers to bytes is stored in the header. The order of the samples within a brick is ``x fast, y medium, and z slow". This means that for the first value of y and z all values of x are written. Then y is incremented and all the x values for the new (y,z) pair are written.

The order of bricks within the file is the same. For the first values of y and z all the x bricks are written out in order.

The data in the header is composed of 256 integer*2 values, most of which are never used. Those which are are

tabular1259

Any density value is really equal to the value of the byte times

displaymath2005

The biggest problem with DSN6 files is confusion about byte swapping differences between big and little endian computers. The bytes of the bricks present no problem but the header record does.

In the old style of DSN6 file (Frodo days) one would write the bytes in the bricks as though they were integer*2. This would cause them to be swapped in the same way as the header record and allowed the general Unix command dd, to convert the file from one byte swap to another.

In the new style (O days) the header record is written as though the computer is big endian, reguardless of its true endianisity.


next up previous contents index
Next: Generating REFI Geometry Files Up: File Formats Previous: Ten Eyck MAP Format

Dale Edwin Tronrud
Thu Jul 6 23:24:57 PDT 2000
king-2.21.120420/driftwood/doc/map-formats/X-PLOR_map_format_email.txt0000644000000000000000000000637611531212736023722 0ustar rootrootFrom: Ian W. Davis Date: February 6, 2004 5:09:18 PM EST To: Dave & Jane Richardson Subject: X-PLOR map format OK, here's the format. It's all plain Unix text. There may be zero or more blank lines at the start of the file, followed by a line that starts with a number. That number is the number of comment lines (not counting this one). The next line has 9 numbers, column-aligned and right justified. Call them aSteps, aMin, aMax, bSteps, bMin, bMax, cSteps, cMin, cMax. More on these in a moment. Then we have a line with the unit cell dimensions (a, b, c) and angles (alpha, beta, gamma). Then we have a line that says "ZYX". At this point I should explain the 9 mystery numbers. The density values are samples taken on a regular grid inside the unit cell. aSteps tells you how many grid points lie along the 'a' axis of the unit cell. In the case below, there are 72 grid points along a 40.7 Angstrom 'a' axis. Thus a=0 lies at one edge of the cell, and a=72 lies on the far edge. Each grid point is 40.7 / 72 = 0.56 Angstroms apart (along the 'a' axis, anyway). Doing the same calculation, grid points are spaced every 49.4 / 90 = 0.55 A along the 'b' axis and every 141.0 / 250 = 0.56 A along the 'c' axis. The trick is, we don't necessarily NEED to sample all the grid points in a unit cell, because some of them are related to others by crystal symmetry. So aMin and aMax define a subset of the grid points along 'a' that we've actually recorded, in this case grid points -22 through 74 (*inclusive*, and yes, this is more than a whole unit cell width in this case!). So now we know that the 3-D array of samples in this file has (aMax-aMin)+1 = (74--22)+1 = 97 samples along the 'a' axis. For the files you write, I expect that (aMax-aMin)+1 should equal aSteps -- one full "unit cell", no more, no less. Now we start on the data. These occasionally have "ksect" lines (no, I don't know what they meant by that) that consist of an integer alone on a line. I don't know what they're for, and I just ignore them, so feel free to leave them out. ;) The data are written out with the A (aka X) index varying most quickly, the B (Y) varying next most quickly, and the C (Z) index varying most slowly -- hence the ZYX line in the file. In other words: for(z = cMin to cMax) for(y = bMin to bMax) for(x = aMin to aMax) write_density_at (x, y, z) Density values are written out 6 to a line, column aligned in the scientific notation format you see below. Hope this helps, Ian 4 !NTITLE REMARKS FILENAME="ref.BS.rd0.1sbp_2fofc.map" REMARKS sigmaa 2fofc map REMARKS DATE:11-May-2002 08:57:47 created by user: arendall REMARKS VERSION:1.0 72 -22 74 90 -62 64 250 45 144 0.40770E+02 0.49370E+02 0.14103E+03 0.90000E+02 0.90000E+02 0.90000E+02 ZYX 0 -0.72761E+00-0.10453E+01-0.66123E+00-0.38609E+00-0.57277E+00-0.63342E+00 -0.42916E+00-0.39512E+00-0.44940E+00-0.21210E+00 0.17193E+00 0.27653E+00 0.69048E-01-0.81871E-04 0.26171E+00 0.26755E+00-0.26789E+00-0.53939E+00 -0.18435E+00-0.43868E-01-0.36829E+00-0.31965E+00 0.32192E+00 0.80753E+00 0.61394E+00-0.16243E-01-0.46674E+00-0.55313E+00-0.57885E+00-0.40399E+00 0.13093E+00 0.19359E+00-0.40480E+00-0.88013E-01 0.16997E+01 0.33157E+01 king-2.21.120420/molikin/0000755000000000000000000000000011744306102013253 5ustar rootrootking-2.21.120420/molikin/Manifest.mf0000644000000000000000000000003411531212776015351 0ustar rootrootMain-Class: molikin.Cmdlinerking-2.21.120420/molikin/build.xml0000644000000000000000000001317311677361344015117 0ustar rootroot Renders macromolecules as kinemage files king-2.21.120420/molikin/resource/0000755000000000000000000000000011744306102015102 5ustar rootrootking-2.21.120420/molikin/resource/king/0000755000000000000000000000000011744306102016032 5ustar rootrootking-2.21.120420/molikin/resource/king/king_prefs0000644000000000000000000000015311531212770020104 0ustar rootrootmolikin.kingplugin.QuickinPlugin.menuName = molikin.kingplugin.MolikinPlugin.menuName = king-2.21.120420/molikin/resource/molikin/0000755000000000000000000000000011744306102016544 5ustar rootrootking-2.21.120420/molikin/resource/molikin/buildnum.props0000644000000000000000000000007111744310052021445 0ustar rootroot#Fri, 20 Apr 2012 18:34:50 -0400 buildnum=20120420.1834 king-2.21.120420/molikin/resource/molikin/gui/0000755000000000000000000000000011744306102017330 5ustar rootrootking-2.21.120420/molikin/resource/molikin/gui/redminus.png0000644000000000000000000000623311531212770021671 0ustar rootrootPNG  IHDRH- pHYs   OiCCPPhotoshop ICC profilexڝSgTS=BKKoR RB&*! J!QEEȠQ, !{kּ> H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FIDATxڜRMKQ=w4!$$j-4gcYj?н? {J)ه.MqH *1Q̘7fH=sS!_ݩ>Y`^.t떹b5Œڥqxmo|l-#1(F|#ݰj܋ /yY[o [o 4?uឭguHIЏ<ݩ v*";Q( p>8$DF8wAޜ㞥($ H3Q5 B.@ $pd!s#~<<+"x M0B\t8K@zB@F&S`cbP-`'{[! eDh;VEX0fK9-0IWfH  0Q){`##xFW<+*x<$9E[-qWW.(I+6aa@.y24x6_-"bbϫp@t~,/;m%h^ uf@Wp~<5j>{-]cK'Xto(hw?G%fIq^D$.Tʳ?D*A, `6B$BB dr`)B(Ͱ*`/@4Qhp.U=pa( Aa!ڈbX#!H$ ɈQ"K5H1RT UH=r9\F;2G1Q= C7F dt1r=6Ыhڏ>C03l0.B8, c˱" VcϱwE 6wB aAHXLXNH $4 7 Q'"K&b21XH,#/{C7$C2'ITFnR#,4H#dk9, +ȅ3![ b@qS(RjJ4e2AURݨT5ZBRQ4u9̓IKhhitݕNWGw Ljg(gwLӋT071oUX**| J&*/Tު UUT^S}FU3S ԖUPSSg;goT?~YYLOCQ_ cx,!k u5&|v*=9C3J3WRf?qtN (~))4L1e\kXHQG6EYAJ'\'GgSSݧ M=:.kDwn^Loy}/TmG X $ <5qo</QC]@Caaᄑ.ȽJtq]zۯ6iܟ4)Y3sCQ? 0k߬~OCOg#/c/Wװwa>>r><72Y_7ȷOo_C#dz%gA[z|!?:eAAA!h쐭!ΑiP~aa~ 'W?pX15wCsDDDޛg1O9-J5*>.j<74?.fYXXIlK9.*6nl {/]py.,:@LN8A*%w% yg"/6шC\*NH*Mz쑼5y$3,幄'L Lݛ:v m2=:1qB!Mggfvˬen/kY- BTZ(*geWf͉9+̳ې7ᒶKW-X潬j9(xoʿܔĹdff-[n ڴ VE/(ۻCɾUUMfeI?m]Nmq#׹=TR+Gw- 6 U#pDy  :v{vg/jBFS[b[O>zG499?rCd&ˮ/~јѡ򗓿m|x31^VwwO| (hSЧc3-gAMA|Q cHRMz%u0`:o_FIDATxڜ1Lakp{`"q@[NdqJhpФ#ij.#]%\6p&}c\mwP)7YGdL. ɰk!qԛVI8I`^_ ?<}y]뻛mG{%q]zm] :S|rcuEJ -Re#rI|{yexFrb]mRfQUj> ǡ-.PW w bbB7GsV-7xBɘ\4*U!Dɘ\􉩻-=:/+OQuickin is intended to be a central static function storage object * for QuickinPlugin and Cmdliner. * *

Copyright (C) 2009 by Vincent B. Chen. All rights reserved. *
Begun on Tue Feb 9 13:37:31 EST 2009 **/ public class Quickin { //{{{ Constants //}}} //{{{ Variables //}}} //{{{ Constructors public Quickin() { } //}}} //{{{ getLogics static public BallAndStickLogic getLotsLogic() { return getLotsLogic(false); } static public BallAndStickLogic getLotsLogic(boolean doVirtualBB) { BallAndStickLogic logic = new BallAndStickLogic(); logic.doProtein = true; logic.doNucleic = true; logic.doHets = true; logic.doMetals = true; logic.doWater = false; logic.doVirtualBB = doVirtualBB; logic.doMainchain = true; logic.doSidechains = true; logic.doHydrogens = true; logic.doDisulfides = true; logic.doBallsOnCarbon = false; logic.doBallsOnAtoms = false; logic.colorBy = BallAndStickLogic.COLOR_BY_MC_SC; return logic; } static public RibbonLogic getRibbonLogic() { RibbonLogic logic = new RibbonLogic(); logic.doProtein = true; logic.doNucleic = true; logic.doUntwistRibbons = true; logic.doDnaStyle = false; logic.colorBy = RibbonLogic.COLOR_BY_RAINBOW; return logic; } //}}} //{{{ readPDB/CIF //############################################################################## static public CoordinateFile readPDB(File f) throws IOException { PdbReader pdbReader = new PdbReader(); CoordinateFile coordFile = pdbReader.read(f); return coordFile; } static public CoordinateFile readCIF(File f) throws IOException { CifReader cifReader = new CifReader(); CoordinateFile coordFile = cifReader.read(f); return coordFile; } //}}} //{{{ printKinemage //############################################################################## /** Emits the kinemage (text) representation as selected by the user */ static public void printKinemage(PrintWriter out, CoordinateFile coordFile, Logic[] logiclist) { printKinemage(out, coordFile, logiclist, coordFile.getModels().size()); } static public void printKinemage(PrintWriter out, CoordinateFile coordFile, Logic[] logiclist, int numModels) { String idCode = "macromol"; if(coordFile.getIdCode() != null) idCode = coordFile.getIdCode(); else if(coordFile.getFile() != null) idCode = coordFile.getFile().getName(); Collection models = coordFile.getModels(); boolean groupByModel = (models.size() > 1)&&(numModels > 1); //Collection chains = this.getSelectedChains(); int modelCount = 0; for(Iterator mi = models.iterator(); (mi.hasNext()&&modelCountUtil defines static utility functions for making atom and bond * selections and other common tasks when using Molikin classes. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Tue May 10 09:33:51 EDT 2005 */ public class Util //extends ... implements ... { //{{{ Constructor(s) //############################################################################## private Util() { super(); } //}}} //{{{ extractOrderedStatesByName //############################################################################## static public Collection extractOrderedStatesByName(Model model) { return Model.extractOrderedStatesByName(model); } // In case state is separate from model, e.g. molten model in modeling tools static public Collection extractOrderedStatesByName(Model model, Collection states) { return Model.extractOrderedStatesByName(model.getResidues(), states); } /** * Extracts all the uniquely named AtomStates for the given model, in the * order of Residues and Atoms given. * This is often used to prepare input for AtomGraph. */ static public Collection extractOrderedStatesByName(Collection residues, Collection modelStates) { return Model.extractOrderedStatesByName(residues, modelStates); } //}}} //{{{ altsAreCompatible //############################################################################## /** * True iff both states have the same alternate conformation label * or if one of them has " " (a single space) as its ID. */ static public boolean altsAreCompatible(AtomState as1, AtomState as2) { String alt1 = as1.getAltConf(), alt2 = as2.getAltConf(); return (alt1.equals(alt2) || alt1.equals(" ") || alt2.equals(" ")); } //}}} //{{{ isMainchain, isWater //############################################################################## /** Based on Prekin PKINCSBS.c decidemainside() */ static String mcPattern = ".N[ T].|.C[A ].|.O .|.OXT|[^2][HDQ][A ] |.[HDQ].['*]|.P |.O[123]P|.[CO][1-5]['*]|.OP[123]|H.''"; // ^^^^ // makes one Gly H sidechain, the other mainchain // added _CM2 and _O3P for tr0001 on 051114 // _CM2 causes a bug: _CM2 is also a sidechain atom! See pdb 3CJZ, residue m2g VBC 120320 // list of all residues I could find in the reduce het dict which have CM2 connected to main chain atoms VBC 120321 static String mcRnaResPattern = "4OC|AYD|DBA|HE3|IQP|M6T|N1T|N3T|OMC|OMG|OMU|PYD|TDK|TDL|TDM|THD|TPP|YF3|YF4"; static String mcscPattern = " CM2|HM2[123]"; //atom names which are both sidechain and mainchain in mod bases in RNA static Matcher mcMatcher = null; static Matcher mcRnaResMatcher = null; static Matcher mcscMatcher = null; static public boolean isMainchain(AtomState as) { if(mcMatcher == null) mcMatcher = Pattern.compile(mcPattern).matcher(""); if(mcscMatcher == null) mcscMatcher = Pattern.compile(mcscPattern).matcher(""); mcscMatcher.reset(as.getName()); if (!mcscMatcher.matches()) { mcMatcher.reset(as.getName()); return mcMatcher.matches(); } else { if (mcRnaResMatcher == null) mcRnaResMatcher = Pattern.compile(mcRnaResPattern).matcher(""); mcRnaResMatcher.reset(as.getResidue().getName()); return mcRnaResMatcher.matches(); } } static String waterPattern = "HOH|DOD|H20|D20|WAT|SOL|TIP|TP3|MTO|HOD|DOH"; static Matcher waterMatcher = null; static public boolean isWater(AtomState as) { return isWater(as.getResidue()); } static public boolean isWater(Residue res) { if(waterMatcher == null) waterMatcher = Pattern.compile(waterPattern).matcher(""); waterMatcher.reset(res.getName()); return waterMatcher.matches(); } //}}} //{{{ isProtein, isNucleicAcid, isMetal //############################################################################## /** Based on Prekin's AAList */ static String protPattern = "GLY|ALA|VAL|PHE|PRO|MET|ILE|LEU|ASP|GLU|LYS|ARG|SER|THR|TYR|HIS|CYS|ASN|GLN|TRP|ASX|GLX|ACE|FOR|NH2|NME|MSE|AIB|ABU|PCA|MLY|CYO|M31"; //mly added 001114 for myosin 2MYS methylated lysine //cyo added 010708 for S-LECTIN 1SLT oxidized cys //m3l added 041011 for methylated lysine== Methyl 3 Lysine static Matcher protMatcher = null; static public boolean isProtein(Residue res) { if(protMatcher == null) protMatcher = Pattern.compile(protPattern).matcher(""); protMatcher.reset(res.getName()); //System.out.println(res+" "+res.getAtom(" CA ")); return (protMatcher.matches()||(res.getAtom(" CA ")!=null)); } /** Based on Prekin's NAList */ static String nucacidPattern = " C| G| A| T| U|CYT|GUA|ADE|THY|URA|URI|CTP|CDP|CMP|GTP|GDP|GMP|ATP|ADP|AMP|TTP|TDP|TMP|UTP|UDP|UMP|GSP|H2U|PSU|1MG|2MG|M2G|5MC|5MU|T6A|1MA|RIA|OMC|OMG| YG| I|7MG|C |G |A |T |U |YG |I | DG| DC| DA| DT|DG|DC|DA|DT|C|G|A|T|U|YG|I"; //7mg added 001114 for tRNA 1EHZ // added space removed version of NA structures due to cif files not having spaces. static Matcher nucacidMatcher = null; static public boolean isNucleicAcid(Residue res) { if(nucacidMatcher == null) nucacidMatcher = Pattern.compile(nucacidPattern).matcher(""); nucacidMatcher.reset(res.getName()); return nucacidMatcher.matches(); } /** Based on name only -- if you want only 1 atom, you must check that yourself */ static String metalPattern = " *(?:HE|LI|BE|F|NE|NA|MG|P|S|CL|AR|K|CA|CR|MN|FE|CO|NI|CU|ZN|GA|AS|SE|BR|KR|RB|SR|MO|RU|RH|PD|AG|CD|SN|I|XE|CS|BA|W|RE|OS|IR|PT|AU|HG|TL|PB|BI|RN|FR|RA|U|PU) *"; static Matcher metalMatcher = null; static public boolean isMetal(Residue res) { if(metalMatcher == null) metalMatcher = Pattern.compile(metalPattern).matcher(""); metalMatcher.reset(res.getName()); return metalMatcher.matches(); } //}}} //{{{ isNumeric public static boolean isNumeric(String s) { try { Double.parseDouble(s); return true; } catch (NumberFormatException e) { return false; } catch (NullPointerException e) { return false; } } //}}} //{{{ getElementColor //############################################################################## static Map elementColors = null; /** * Given the element symbol (1 or 2 chars, uppercase) this returns * the standard kinemage color for it. */ static public String getElementColor(String element) { if(elementColors == null) //{{{ { elementColors = new HashMap(); elementColors.put("H", "gray"); elementColors.put("C", "white"); elementColors.put("N", "sky"); elementColors.put("O", "red"); elementColors.put("S", "yellow"); elementColors.put("P", "gold"); // These ~ borrowed from RasMol // We could equally well turn to Probe's atomprops.h elementColors.put("HE", "pinktint"); elementColors.put("LI", "brown"); elementColors.put("B", "green"); elementColors.put("F", "orange"); elementColors.put("NA", "blue"); elementColors.put("MG", "greentint"); elementColors.put("AL", "gray"); elementColors.put("SI", "gold"); elementColors.put("CL", "green"); elementColors.put("CA", "gray"); elementColors.put("TI", "gray"); elementColors.put("CR", "gray"); elementColors.put("MN", "gray"); elementColors.put("FE", "orange"); elementColors.put("NI", "brown"); elementColors.put("CU", "brown"); elementColors.put("ZN", "brown"); elementColors.put("BR", "brown"); elementColors.put("AG", "gray"); elementColors.put("I", "bluetint"); elementColors.put("BA", "orange"); elementColors.put("AU", "gold"); }//}}} String color = (String) elementColors.get(element); if(color == null) return "hotpink"; else return color; } //}}} //{{{ getVdwRadius //############################################################################## static Map exVdwRadii = null; /** * Given the element symbol (1 or 2 chars, uppercase) this returns * the explicit-H van der Waals radius (taken from Probe's atomprops.h). */ static public double getVdwRadius(String element) { if(exVdwRadii == null) //{{{ { exVdwRadii = new HashMap(); // For non-metals, explicit VDW radii from // Gavezzotti, J. Am. Chem. Soc. (1983) 105, 5220-5225. // or, if unavailable, // Bondi, J. Phys. Chem. (1964), V68, N3, 441-451. // Covalent and ionic radii from // Advanced Inorganic Chemistry, Cotton & Wilkinson, 1962, p93. exVdwRadii.put("H".toUpperCase(), new Double(1.17)); //exVdwRadii.put("Harom".toUpperCase(), new Double(1.00)); //exVdwRadii.put("Hpolar".toUpperCase(), new Double(1.00)); //exVdwRadii.put("HOd".toUpperCase(), new Double(1.00)); exVdwRadii.put("C".toUpperCase(), new Double(1.75)); exVdwRadii.put("N".toUpperCase(), new Double(1.55)); exVdwRadii.put("O".toUpperCase(), new Double(1.40)); exVdwRadii.put("P".toUpperCase(), new Double(1.80)); exVdwRadii.put("S".toUpperCase(), new Double(1.80)); exVdwRadii.put("As".toUpperCase(), new Double(2.00)); exVdwRadii.put("Se".toUpperCase(), new Double(1.90)); exVdwRadii.put("F".toUpperCase(), new Double(1.30)); exVdwRadii.put("Cl".toUpperCase(), new Double(1.77)); exVdwRadii.put("Br".toUpperCase(), new Double(1.95)); exVdwRadii.put("I".toUpperCase(), new Double(2.10)); // for most common metals we use Pauling's ionic radii // "covalent radii" = ionic + 0.74 (i.e., oxygenVDW(1.4) - oxygenCov(0.66)) // because the ionic radii are usually calculated from Oxygen-Metal distance exVdwRadii.put("Li".toUpperCase(), new Double(0.60)); exVdwRadii.put("Na".toUpperCase(), new Double(0.95)); exVdwRadii.put("Al".toUpperCase(), new Double(0.50)); exVdwRadii.put("K".toUpperCase(), new Double(1.33)); exVdwRadii.put("Mg".toUpperCase(), new Double(0.65)); exVdwRadii.put("Ca".toUpperCase(), new Double(0.99)); exVdwRadii.put("Mn".toUpperCase(), new Double(0.80)); exVdwRadii.put("Fe".toUpperCase(), new Double(0.74)); exVdwRadii.put("Co".toUpperCase(), new Double(0.70)); exVdwRadii.put("Ni".toUpperCase(), new Double(0.66)); exVdwRadii.put("Cu".toUpperCase(), new Double(0.72)); exVdwRadii.put("Zn".toUpperCase(), new Double(0.71)); exVdwRadii.put("Rb".toUpperCase(), new Double(1.48)); exVdwRadii.put("Sr".toUpperCase(), new Double(1.10)); exVdwRadii.put("Mo".toUpperCase(), new Double(0.93)); exVdwRadii.put("Ag".toUpperCase(), new Double(1.26)); exVdwRadii.put("Cd".toUpperCase(), new Double(0.91)); exVdwRadii.put("In".toUpperCase(), new Double(0.81)); exVdwRadii.put("Cs".toUpperCase(), new Double(1.69)); exVdwRadii.put("Ba".toUpperCase(), new Double(1.29)); exVdwRadii.put("Au".toUpperCase(), new Double(1.10)); exVdwRadii.put("Hg".toUpperCase(), new Double(1.00)); exVdwRadii.put("Tl".toUpperCase(), new Double(1.44)); exVdwRadii.put("Pb".toUpperCase(), new Double(0.84)); // for other metals we use Shannon's ionic radii // Acta Crystallogr. (1975) A32, pg751. exVdwRadii.put("V".toUpperCase(), new Double(0.79)); exVdwRadii.put("Cr".toUpperCase(), new Double(0.73)); exVdwRadii.put("Te".toUpperCase(), new Double(0.97)); exVdwRadii.put("Sm".toUpperCase(), new Double(1.08)); exVdwRadii.put("Gd".toUpperCase(), new Double(1.05)); exVdwRadii.put("Yb".toUpperCase(), new Double(1.14)); exVdwRadii.put("W".toUpperCase(), new Double(0.66)); exVdwRadii.put("Pt".toUpperCase(), new Double(0.63)); exVdwRadii.put("U".toUpperCase(), new Double(1.03)); // Cotton & Wilkinson and also- // L.E. Sutton (ed.) in Table of interatomic distances and configuration in molecules // and ions, Supplement 1956-1959, Special publication No. 18, Chemical Society, // London, UK, 1965 (as listed in web-elements by Mark Winter) // http://www.shef.ac.uk/chemistry/web-elements exVdwRadii.put("He".toUpperCase(), new Double(1.60)); exVdwRadii.put("Be".toUpperCase(), new Double(0.31)); exVdwRadii.put("B".toUpperCase(), new Double(0.20)); exVdwRadii.put("Ne".toUpperCase(), new Double(1.60)); exVdwRadii.put("Si".toUpperCase(), new Double(2.10)); exVdwRadii.put("Ar".toUpperCase(), new Double(1.89)); exVdwRadii.put("Sc".toUpperCase(), new Double(0.68)); exVdwRadii.put("Ti".toUpperCase(), new Double(0.75)); exVdwRadii.put("Ga".toUpperCase(), new Double(0.53)); exVdwRadii.put("Ge".toUpperCase(), new Double(0.60)); exVdwRadii.put("Kr".toUpperCase(), new Double(2.01)); exVdwRadii.put("Y".toUpperCase(), new Double(0.90)); exVdwRadii.put("Zr".toUpperCase(), new Double(0.77)); exVdwRadii.put("Sn".toUpperCase(), new Double(0.71)); exVdwRadii.put("Sb".toUpperCase(), new Double(2.20)); exVdwRadii.put("Xe".toUpperCase(), new Double(2.18)); exVdwRadii.put("La".toUpperCase(), new Double(1.03)); exVdwRadii.put("Ce".toUpperCase(), new Double(0.87)); exVdwRadii.put("Fr".toUpperCase(), new Double(1.94)); exVdwRadii.put("Ra".toUpperCase(), new Double(1.62)); exVdwRadii.put("Th".toUpperCase(), new Double(1.08)); // finally, we have a set of elements where the radii are unknown // so we use estimates and extrapolations based on web-elements data exVdwRadii.put("Nb".toUpperCase(), new Double(0.86)); exVdwRadii.put("Tc".toUpperCase(), new Double(0.71)); exVdwRadii.put("Ru".toUpperCase(), new Double(0.82)); exVdwRadii.put("Rh".toUpperCase(), new Double(0.76)); exVdwRadii.put("Pd".toUpperCase(), new Double(1.05)); exVdwRadii.put("Pr".toUpperCase(), new Double(1.11)); exVdwRadii.put("Nd".toUpperCase(), new Double(1.10)); exVdwRadii.put("Pm".toUpperCase(), new Double(1.15)); exVdwRadii.put("Eu".toUpperCase(), new Double(1.31)); exVdwRadii.put("Tb".toUpperCase(), new Double(1.05)); exVdwRadii.put("Dy".toUpperCase(), new Double(1.05)); exVdwRadii.put("Ho".toUpperCase(), new Double(1.04)); exVdwRadii.put("Er".toUpperCase(), new Double(1.03)); exVdwRadii.put("Tm".toUpperCase(), new Double(1.02)); exVdwRadii.put("Lu".toUpperCase(), new Double(1.02)); exVdwRadii.put("Hf".toUpperCase(), new Double(0.85)); exVdwRadii.put("Ta".toUpperCase(), new Double(0.86)); exVdwRadii.put("Re".toUpperCase(), new Double(0.77)); exVdwRadii.put("Os".toUpperCase(), new Double(0.78)); exVdwRadii.put("Ir".toUpperCase(), new Double(0.80)); exVdwRadii.put("Bi".toUpperCase(), new Double(1.17)); exVdwRadii.put("Po".toUpperCase(), new Double(0.99)); exVdwRadii.put("At".toUpperCase(), new Double(0.91)); exVdwRadii.put("Rn".toUpperCase(), new Double(2.50)); exVdwRadii.put("Ac".toUpperCase(), new Double(1.30)); exVdwRadii.put("Pa".toUpperCase(), new Double(1.10)); exVdwRadii.put("Np".toUpperCase(), new Double(1.00)); exVdwRadii.put("Pu".toUpperCase(), new Double(1.00)); exVdwRadii.put("Am".toUpperCase(), new Double(1.00)); exVdwRadii.put("Cm".toUpperCase(), new Double(1.00)); exVdwRadii.put("Bk".toUpperCase(), new Double(1.00)); exVdwRadii.put("Cf".toUpperCase(), new Double(1.00)); exVdwRadii.put("Es".toUpperCase(), new Double(1.00)); exVdwRadii.put("Fm".toUpperCase(), new Double(1.00)); exVdwRadii.put("Md".toUpperCase(), new Double(1.00)); exVdwRadii.put("No".toUpperCase(), new Double(1.00)); }//}}} Double radius = (Double) exVdwRadii.get(element); if(radius == null) return 2.0; else return radius.doubleValue(); } //}}} //{{{ selectBondsBetween //############################################################################## /** * Selects matching bonds, retaining their input order. * Only bonds that go from AtomStates in srcA which belong to Residues in srcR, * to AtomStates in dstR that belong to Residues in dstR (or vice versa), are drawn. * @param bonds the Bonds to select from * @param srcA a Set of AtomStates (may be null for "any") * @param dstA a Set of AtomStates (may be null for "any") * @param srcR a Set of Residues (may be null for "any") * @param dstR a Set of Residues (may be null for "any") * @param out a Collection to append selected bonds to. Will be created if null. * @return the Collection holding the selected bonds */ static public Collection selectBondsBetween(Collection bonds, Set srcA, Set dstA, Set srcR, Set dstR, Collection out) { if(out == null) out = new ArrayList(); for(Iterator iter = bonds.iterator(); iter.hasNext(); ) { Bond curr = (Bond) iter.next(); // Testing for null vs. maintaining separate implementations that don't test at all // produces no measurable performance impact, even for the ribosome. boolean residuesAllowed = ((srcR == null || srcR.contains(curr.lower.getResidue())) && (dstR == null || dstR.contains(curr.higher.getResidue()))) ||((dstR == null || dstR.contains(curr.lower.getResidue())) && (srcR == null || srcR.contains(curr.higher.getResidue()))); if(!residuesAllowed) continue; boolean atomsAllowed = ((srcA == null || srcA.contains(curr.lower)) && (dstA == null || dstA.contains(curr.higher))) ||((dstA == null || dstA.contains(curr.lower)) && (srcA == null || srcA.contains(curr.higher))); //System.out.println(curr.higher.getName()+" "+srcA.contains(curr.higher)+" "+curr.lower.getName()+" "+dstA.contains(curr.lower)); if(!atomsAllowed) continue; out.add(curr); } return out; } //}}} //{{{ selectDisulfideResidues //############################################################################## /** * Returns the subset of residues which are involved in a S--S bond. * You can use the retainAll() method of Set to exclude certain residues later. * @param allBonds a Collection of Bonds * @return a Set of Residues (may be empty, never null) */ static public Set selectDisulfideResidues(Collection allBonds) { Set ssRes = new CheapSet(); for(Iterator iter = allBonds.iterator(); iter.hasNext(); ) { Bond bond = (Bond) iter.next(); if(bond.lower.getElement().equals("S") && bond.higher.getElement().equals("S")) { ssRes.add(bond.lower.getResidue()); ssRes.add(bond.higher.getResidue()); } } return ssRes; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/BondCrayon.java0000644000000000000000000000157411531212776020423 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: package molikin; import driftwood.moldb2.*; /** * BondCrayon allows for customizing the rendering of kinemage * line-like objects on a per-AtomState basis. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Fri Sep 30 11:27:47 EDT 2005 */ public interface BondCrayon extends Crayon { /** * Customizes the rendering of a kinemage point. * Notice that "from" and "toward" are interchangable for drawing normal bonds, * but for half-bonds the decision is usually made based on "from" only. * @param from the AtomState being represented at one end of the bond * @param toward the AtomState at the other end, or in the case of half-bonds, * the AtomState on the other side of the midpoint */ public void forBond(AtomState from, AtomState toward); }//class king-2.21.120420/molikin/src/molikin/BallPrinter.java0000644000000000000000000000561711531212776020605 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * BallPrinter generates kinemage output for things like * atom markers, CPKs, and water/ion balls. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Fri Sep 30 11:03:30 EDT 2005 */ public class BallPrinter //extends ... implements ... { //{{{ Constants static final DecimalFormat df = driftwood.util.Strings.usDecimalFormat("0.###"); //}}} //{{{ Variable definitions //############################################################################## PrintWriter out; AtomCrayon crayon = molikin.crayons.ConstCrayon.NONE; AtomIDer ider = new PrekinIDer(); //}}} //{{{ Constructor(s) //############################################################################## public BallPrinter(PrintWriter out) { super(); this.out = out; } //}}} //{{{ printBalls //############################################################################## /** * Draws the supplied AtomState objects in order, * but only if they belong to the given set of Residues (may be null). * Only points are generated; the client is responsible for writing "@balllist ...". */ public void printBalls(Collection atoms, Set res, String modelId) { for(Iterator iter = atoms.iterator(); iter.hasNext(); ) { AtomState curr = (AtomState) iter.next(); crayon.forAtom(curr); if(crayon.shouldPrint() && (res == null || res.contains(curr.getResidue()))) { out.println("{"+ider.identifyAtom(curr)+modelId+"}"+crayon.getKinString()+" "+curr.format(df)); } } out.flush(); } /** * Draws the supplied AtomState objects in order. * Only points are generated; the client is responsible for writing "@balllist ...". */ public void printBalls(Collection atoms) { printBalls(atoms, null, null); } //}}} //{{{ get/setCrayon, get/setAtomIDer //############################################################################## /** The AtomCrayon used for coloring these balls. */ public AtomCrayon getCrayon() { return this.crayon; } /** The AtomCrayon used for coloring these balls. */ public void setCrayon(AtomCrayon c) { this.crayon = c; } /** The AtomIDer used to make point IDs. */ public AtomIDer getAtomIDer() { return this.ider; } /** The AtomIDer used to make point IDs. */ public void setAtomIDer(AtomIDer ai) { this.ider = ai; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/DataCache.java0000644000000000000000000001031711531212776020155 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.lang.ref.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * DataCache lazily calculates all the geometry, connectivity, etc. * for a Model object, and caches it in a memory-sensitive way. * Use the getDataFor() method to create a DataCache for a particular model. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 6 08:40:05 EDT 2005 */ public class DataCache //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## // maps Models to SoftReference(DataCache) // entries are removed when no more references to the model exist // values may go to null in response to memory demand static WeakHashMap dataEntries = new WeakHashMap(); Model model; ResClassifier resC = null; Collection atomStates = null; AtomClassifier atomC = null; AtomGraph atomGraph = null; VirtualBackbone virtualBB = null; Collection modStates = null; // collection of modelstates //}}} //{{{ Constructor(s), getDataFor //############################################################################## protected DataCache(Model m) { super(); this.model = m; } protected DataCache(Model m, Collection states) { super(); this.model = m; this.modStates = states; } /** Call this to obtain a DataCache for a given model, using cached data if available. */ // my assumption (vbc) is if someone calls this with a separate set of // modelstates, then they DON'T want to use cached data static public DataCache getDataFor(Model m, Collection states) { DataCache data = null; if (states == null) { SoftReference ref = (SoftReference) dataEntries.get(m); if(ref != null) data = (DataCache) ref.get(); if(data == null) { data = new DataCache(m); dataEntries.put(m, new SoftReference(data)); } } else { data = new DataCache(m, states); } return data; } static public DataCache getDataFor(Model m) { return getDataFor(m, null); } //}}} //{{{ getResClassifier, getUniqueAtomStates, getAtomClassifier, getCovalentGraph //############################################################################## public ResClassifier getResClassifier() { if(resC == null) resC = new ResClassifier(model.getResidues()); return resC; } public Collection getUniqueAtomStates() { if(atomStates == null) { if (modStates == null) { atomStates = Util.extractOrderedStatesByName(model); } else { atomStates = Util.extractOrderedStatesByName(model, modStates); } } return atomStates; } public AtomClassifier getAtomClassifier() { if(atomC == null) atomC = new AtomClassifier(getUniqueAtomStates(), getResClassifier()); return atomC; } public AtomGraph getCovalentGraph() { if(atomGraph == null) atomGraph = new AtomGraph(getUniqueAtomStates()); return atomGraph; } //}}} //{{{ getVirtualBackbone //############################################################################## public VirtualBackbone getVirtualBackbone() { if(virtualBB == null) virtualBB = new VirtualBackbone(model, model.getStates().values(), getResClassifier()); return virtualBB; } //}}} //{{{ getModelId //############################################################################## public String getModelId() { return model.toString(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/Test.java0000644000000000000000000003114411531212776017300 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; import molikin.gui.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.data.*; import driftwood.gui.*; import driftwood.moldb2.*; //}}} /** * Test has not yet been documented. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Mon May 9 08:54:43 EDT 2005 */ public class Test //extends ... implements ... { //{{{ Constants static final DecimalFormat memdf = new DecimalFormat("##0.0E0"); //}}} //{{{ Variable definitions //############################################################################## boolean inputIsCIF = false; //}}} //{{{ Constructor(s) //############################################################################## public Test() { super(); } //}}} //{{{ showGUI //############################################################################## PrintWriter outWriter = null; JDialog frame = null; MainGuiPane guiPane = null; int kinemageNumber = 1; void showGUI(CoordinateFile cfile, PrintWriter out) { outWriter = out; guiPane = new MainGuiPane(cfile); guiPane.right().addCell(new JButton(new ReflectiveAction("Make kinemage", null, this, "onMakeKinemage"))); guiPane.weights(0,0).addCell(new JButton(new ReflectiveAction("Done", null, this, "onDone"))); JFrame parent = new JFrame(); frame = new JDialog(parent, "Choose residues to display", true); // modal //frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setContentPane(guiPane); frame.pack(); frame.setVisible(true); parent.dispose(); } public void onMakeKinemage(ActionEvent ev) { outWriter.println("@kinemage "+(kinemageNumber++)); outWriter.println("@onewidth"); guiPane.printKinemage(outWriter); } public void onDone(ActionEvent ev) { frame.dispose(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { if(inputIsCIF) doCIF(new InputStreamReader(System.in), new OutputStreamWriter(System.out)); else doPDB(new InputStreamReader(System.in), new OutputStreamWriter(System.out)); } public static void main(String[] args) { Test mainprog = new Test(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ doPDB, doCIF //############################################################################## public void doPDB(Reader pdbIn, Writer kinOut) throws IOException { long time = System.currentTimeMillis(); PdbReader pdbReader = new PdbReader(); CoordinateFile coordFile = pdbReader.read(pdbIn); time = System.currentTimeMillis() - time; System.err.println("Loading PDB: "+time+" ms"); System.err.println("Mem. usage: "+memdf.format(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())+" bytes"); PrintWriter out = new PrintWriter(kinOut); //doModel(coordFile, out); showGUI(coordFile, out); out.flush(); System.err.println("Mem. usage: "+memdf.format(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())+" bytes"); } public void doCIF(Reader cifIn, Writer kinOut) throws IOException { long time = System.currentTimeMillis(); CifReader cifReader = new CifReader(); CoordinateFile coordFile = cifReader.read(cifIn); time = System.currentTimeMillis() - time; System.err.println("Loading mmCIF: "+time+" ms"); System.err.println("Mem. usage: "+memdf.format(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())+" bytes"); PrintWriter out = new PrintWriter(kinOut); //doModel(coordFile, out); showGUI(coordFile, out); out.flush(); System.err.println("Mem. usage: "+memdf.format(Runtime.getRuntime().totalMemory() - Runtime.getRuntime().freeMemory())+" bytes"); } //}}} //{{{ doModel //############################################################################## public void doModel(CoordinateFile coordFile, PrintWriter out) { Model model = coordFile.getFirstModel(); // Test of GUI for residue selections Set allResidues = new CheapSet(model.getResidues()); Set selectedResidues = allResidues; //Set selectedResidues = showGUI(coordFile); //System.err.println("# residues selected: "+selectedResidues.size()+" res"); /* For testing ResClassifier * / ResClassifier rc = new ResClassifier(model.getResidues()); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); System.err.println(r+" "+rc.classify(r)); } /* For testing ResClassifier */ long time; time = System.currentTimeMillis(); ResClassifier resC = new ResClassifier(model.getResidues()); time = System.currentTimeMillis() - time; System.err.println("Classifying residues: "+time+" ms"); time = System.currentTimeMillis(); Collection atomStates = Util.extractOrderedStatesByName(model); AtomClassifier atomC = new AtomClassifier(atomStates, resC); time = System.currentTimeMillis() - time; System.err.println("Classifying atoms: "+time+" ms"); time = System.currentTimeMillis(); AtomGraph graph = new AtomGraph(atomStates); time = System.currentTimeMillis() - time; System.err.println("Spatial binning: "+time+" ms"); time = System.currentTimeMillis(); Collection bonds = graph.getBonds(); time = System.currentTimeMillis() - time; System.err.println("Building bond network: "+time+" ms"); time = System.currentTimeMillis(); StickPrinter sp = new StickPrinter(out); BallPrinter bp = new BallPrinter(out); out.println("@kinemage"); out.println("@onewidth"); out.println("@group {macromol}"); out.println("@subgroup {mainchain}"); out.println("@vectorlist {heavy} color= white"); sp.printSticks(bonds, atomC.mcHeavy, atomC.mcHeavy); out.println("@vectorlist {H} color= gray master= {H}"); sp.printSticks(bonds, atomC.mcHydro, atomC.mcHeavy); out.println("@subgroup {sidechains}"); out.println("@vectorlist {heavy} color= cyan"); // includes disulfides, for now sp.printSticks(bonds, atomC.scHeavy, atomC.bioHeavy, selectedResidues, allResidues, model.toString()); // to scHeavy if we want stubs to ribbon instead out.println("@vectorlist {H} color= gray master= {H}"); sp.printSticks(bonds, atomC.scHydro, atomC.bioHeavy, selectedResidues, allResidues, model.toString()); // makes sure Gly 2HA connects to mc if(atomC.hetHeavy.size() > 0) { out.println("@subgroup {hets}"); out.println("@vectorlist {heavy} color= pink"); sp.printSticks(bonds, atomC.hetHeavy, atomC.hetHeavy); out.println("@vectorlist {H} color= gray master= {H}"); sp.printSticks(bonds, atomC.hetHydro, atomC.hetHeavy); out.println("@vectorlist {connect} color= pinktint"); sp.printSticks(bonds, atomC.hetHeavy, atomC.bioHeavy); } if(atomC.metal.size() > 0) { out.println("@subgroup {metals}"); out.println("@spherelist {heavy} color= magenta radius= 0.5"); bp.printBalls(atomC.metal); } if(atomC.watHeavy.size() > 0) { out.println("@subgroup {water}"); out.println("@balllist {heavy} color= bluetint radius= 0.15"); bp.printBalls(atomC.watHeavy); out.println("@vectorlist {H} color= gray master= {H}"); sp.printSticks(bonds, atomC.watHydro, atomC.watHeavy); } /* Disulfides are different: someBonds = Util.selectBondsBetween(bonds, scNonH, nonHetNonH); Collection ssBonds = new TreeSet(); for(Iterator iter = someBonds.iterator(); iter.hasNext(); ) { Bond b = (Bond) iter.next(); if(Util.isDisulfide(b)) { iter.remove(); ssBonds.add(b); } } printBonds(out, someBonds, "sc", "cyan"); printBonds(out, ssBonds, "SS", "yellow");*/ time = System.currentTimeMillis() - time; System.err.println("Drawing bonds: "+time+" ms"); } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("Test.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'Test.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("molikin.Test"); System.err.println("Copyright (C) 2005 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-cif") || flag.equals("mmcif")) inputIsCIF = true; else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/molikin/src/molikin/RotaramaIDer.java0000644000000000000000000000757211531212776020703 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.util.*; //}}} /** * RotaramaIDer creates point IDs for atoms that match the * output of DCR's Prekin but add rota or Rama scores if applicable. * *

Copyright (C) 2010 by Daniel A. Keedy. All rights reserved. *
Begun on Fri Feb 5 2010 */ public class RotaramaIDer implements AtomIDer { //{{{ Constants private static final String[] mcAtomNames = {" N ", " H ", " CA ", " C ", " O ", "_N__", "_H__", "_CA_", "_C__", "_O__"}; static final DecimalFormat df2 = driftwood.util.Strings.usDecimalFormat("0.00"); static final DecimalFormat df3 = driftwood.util.Strings.usDecimalFormat("0.0"); //}}} //{{{ Variable definitions //############################################################################## HashMap rota, rama; //}}} //{{{ Constructor(s) //############################################################################## public RotaramaIDer(Map rota, Map rama) { super(); this.rota = (HashMap) rota; this.rama = (HashMap) rama; } //}}} //{{{ identifyAtom //############################################################################## public String identifyAtom(AtomState as) { Residue res = as.getResidue(); StringBuffer buf = new StringBuffer(16); // should be long enough for almost all buf.append(as.getName()); // 4 chars buf.append(as.getAltConf()); // 1 buf.append(res.getName()); // 3 buf.append(" "); // 1 buf.append(res.getChain()); // 1 buf.append(" "); // 1 buf.append(res.getSequenceNumber().trim()); // 1 - 4 (or more) buf.append(res.getInsertionCode()); // 1 if((as.getTempFactor() > 0.0)||(as.getOccupancy() < 1.0)) { StringBuffer buf2 = new StringBuffer(buf.length() + 8); // lowercasing is somewhat expensive, computationally. buf2.append(buf.toString().toLowerCase()); if (as.getOccupancy() < 1.0) buf2.append(" "+df2.format(as.getOccupancy())+"B"); else buf2.append(" B"); // 2 buf2.append(df2.format(as.getTempFactor())); // 4 - 5 (or more) return buf2.toString()+recallRotarama(as, res); } else return buf.toString().toLowerCase()+recallRotarama(as, res); } //}}} //{{{ recallRotarama //############################################################################## private String recallRotarama(AtomState as, Residue res) { Atom a = as.getAtom(); if(AminoAcid.isBackbone(a)) { for(Iterator iter = rama.keySet().iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); if(r.getCNIT().equals(res.getCNIT())) { return " rama"+df3.format(100*rama.get(res))+"%"; } } } else // assume sidechain { for(Iterator iter = rota.keySet().iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); if(r.getCNIT().equals(res.getCNIT())) { return " rota"+df3.format(100*rota.get(res))+"%"; } } } return ""; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/RibbonPrinter.java0000644000000000000000000007431411531212776021146 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; import molikin.crayons.*; import driftwood.moldb2.SecondaryStructure; // (ARK Spring2010) //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.lang.Math; // (ARK Spring2010) import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; import driftwood.moldb2.*; //}}} /** * RibbonPrinter prints various ribbon representations. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Tue Jan 24 13:18:01 EST 2006 */ public class RibbonPrinter //extends ... implements ... { //{{{ Constants static final DecimalFormat df = driftwood.util.Strings.usDecimalFormat("0.###"); //}}} //{{{ Variable definitions //############################################################################## PrintWriter out; PrintWriter outGuides; ///(ARK Spring2010) RibbonCrayon crayon = molikin.crayons.ConstCrayon.NONE; Triple tmp = new Triple(); // From PKININIT.c (ribwidalpha, ribwidbeta, ribwidcoil) double widthAlpha = 2.0; double widthBeta = 2.2; double widthCoil = 1.0; double widthDefault = 2.0; boolean rnaPointIDs = false; final int nIntervals = 4; // (ARK Spring2010) moved this from top of printFancyRibbon() //}}} //{{{ Constructor(s) //############################################################################## public RibbonPrinter(PrintWriter out) { super(); this.out = out; //try { // print kinemage header, (ARK Spring2010), get PDB id ??? // outGuides = new PrintWriter("0ssinterrupt_wht_helixonly/0guides.kin"); // outGuides.println("@kinemage 1\n@title {Guides}\n@group{axes} dominant off"); // outGuides.println("@vectorlist {axes}\n{x}P -10 0 0 {\"}10 0 0\n{y}P 0 -10 0 {\"}0 10 0\n{z}P 0 0 -10 {\"}0 0 10"); // outGuides.println("@labellist {labels}\n{-x} -10 0.5 0\n{-y} 0.5 -10 0\n{-z} 0 0.5 -10"); //} //catch (Exception e) { System.err.println("Error creating outGuides.kin"); } } //}}} //{{{ printGuidepoints //############################################################################## /** * For debugging purposes, displays several of the geometric constructions * used in building ribbons. Several kinemage lists are generated. */ public void printGuidepoints(GuidePoint[] guides) { Triple end = new Triple(); out.println("@balllist {guide points} color= red radius= 0.20 master= {guidepts}"); for(int i = 0; i < guides.length; i++) out.println("{guide point off="+df.format(guides[i].offsetFactor)+" wid="+df.format(guides[i].widthFactor)+"} "+guides[i].xyz.format(df)); out.println("@vectorlist {c vectors} color= green master= {guidepts}"); for(int i = 0; i < guides.length; i++) { end.likeSum(guides[i].xyz, guides[i].cvec); out.println("{c}P "+guides[i].xyz.format(df)+" {\"}L "+end.format(df)); } out.println("@vectorlist {d vectors} color= blue master= {guidepts}"); for(int i = 0; i < guides.length; i++) { end.likeSum(guides[i].xyz, guides[i].dvec); out.println("{d}P "+guides[i].xyz.format(df)+" {\"}L "+end.format(df)); } out.flush(); } //}}} //{{{ printGuideptGp //############################################################################## //############################################################################## /** * Creates a separate kinemage with the guidepoints for the current ribbon element * grouped together, (ARK Spring2010) */ public void printGuideptGp(GuidePoint[] guides, String groupID, String type, int stGuide, int endGuide, Tuple3[][] splinepts) { Triple origin = new Triple(); outGuides.println("@group {"+groupID+"} off animate dominant"); outGuides.println("@balllist {guide points} color= red radius= 0.20 master= {guidepts} master= {"+type+"}"); outGuides.println("{guide point} "+origin.format(df)); outGuides.println("@vectorlist {c vectors} color= green master= {guidepts} master= {"+type+"} master= {c vecs} master= {lines}"); for(int i = stGuide; i<=endGuide; i++) outGuides.println("{c}P "+origin.format(df)+" {\"}L "+guides[i].cvec.mult(5).format(df)); outGuides.println("@balllist {c ends} color= green master= {guidepts} master= {"+type+"} master= {c vecs} master = {ends}"); for(int i = stGuide; i<=endGuide; i++) outGuides.println("{"+getPointID(splinepts[1][i],guides[i],guides[i+1],i,nIntervals)+"} "+guides[i].cvec.format(df)); outGuides.println("@vectorlist {d vectors} color= blue master= {guidepts} master= {"+type+"} master= {d vecs} master= {lines}"); for(int i = stGuide; i<=endGuide; i++) outGuides.println("{d}P "+origin.format(df)+" {\"}L "+guides[i].dvec.mult(5).format(df)); outGuides.println("@balllist {d ends} color= blue master= {guidepts} master= {"+type+"} master= {d vecs} master = {ends}"); for(int i = stGuide; i<=endGuide; i++) outGuides.println("{"+getPointID(splinepts[1][i],guides[i],guides[i+1],i,nIntervals)+"} "+guides[i].dvec.format(df)); outGuides.println("@vectorlist {conSeq} color= white alpha= 0.5 master= {guidepts} master= {"+type+"} master= {conSeq}"); outGuides.println("{Seq connect} P "+guides[stGuide].dvec.format(df)); for(int i = stGuide+1; i<=endGuide; i++) outGuides.println("{Seq connect} "+guides[i].dvec.format(df)); outGuides.println("@vectorlist {arrowheads} color= white alpha= 0.5 master= {guidepts} master= {"+type+"} master= {conSeq} master= {arrowheads}"); for(int i = stGuide+1; i<=endGuide; i++){ if(i==guides.length-2) break; Triple arrow = new Triple().likeDiff(guides[i-1].dvec,guides[i].dvec).unit().mult(0.3); Triple orth = new Triple().likeOrthogonal(arrow).mult(0.4); Triple tailSt = new Triple().likeDiff(guides[i-1].dvec,guides[i].dvec).unit().mult(0.6).add(guides[i].dvec); arrow.add(guides[i].dvec); outGuides.println("{arrow} P "+arrow.format(df)+" {\"}L "+new Triple().likeSum(tailSt, orth).format(df)); outGuides.println("{arrow} P "+arrow.format(df)+" {\"}L "+new Triple().likeDiff(tailSt, orth).format(df)); } outGuides.println("@vectorlist {conPt} color= yellowtint alpha= 0.5 master= {guidepts} master= {"+type+"} master= {conPt}"); for(int i = stGuide; i<=endGuide; i++) outGuides.println("{Pt connect}P "+guides[i].dvec.format(df)+" {\"}L "+guides[i].cvec.format(df)); } //}}} //{{{ printOne/Two/Three/FiveLine //############################################################################## public void printOneLine(GuidePoint[] guides, int nIntervals, boolean variableWidth) { printNLineImpl(guides, nIntervals, variableWidth, 0, 99); } public void printTwoLine(GuidePoint[] guides, int nIntervals, boolean variableWidth) { printNLineImpl(guides, nIntervals, variableWidth, -1, 2); } public void printThreeLine(GuidePoint[] guides, int nIntervals, boolean variableWidth) { printNLineImpl(guides, nIntervals, variableWidth, -1, 1); } public void printFiveLine(GuidePoint[] guides, int nIntervals, boolean variableWidth) { printNLineImpl(guides, nIntervals, variableWidth, -1, 0.5); } //}}} //{{{ printNLineImpl //############################################################################## /** * Displays an N-skein ribbon of uniform or variable width. * Only points are generated; the client is responsible for writing "@vectorlist ...". */ public void printNLineImpl(GuidePoint[] guides, int nIntervals, boolean variableWidth, double strandStart, double strandStride) { int len = guides.length; NRUBS nrubs = new NRUBS(); Triple[] pts = new Triple[len]; for(int i = 0; i < len; i++) pts[i] = new Triple(); for(double strand = strandStart; strand <= 1; strand+=strandStride) { for(int i = 0; i < len; i++) { double ribwid = (guides[i].offsetFactor > 0 ? widthAlpha : widthBeta); double halfWidth = 0.5 * (widthCoil + guides[i].widthFactor*(ribwid - widthCoil)); if(!variableWidth) halfWidth = widthDefault / 2.0; pts[i].like(guides[i].xyz).addMult(strand*halfWidth, guides[i].dvec); } Tuple3[] spline = nrubs.spline(pts, nIntervals); boolean isBreak = true; for(int i = 0; i < spline.length; i++) { int startGuide = (i/nIntervals) + 1; crayon.forRibbon(spline[i], guides[startGuide], guides[startGuide+1], i%nIntervals, nIntervals); // For this to make sense, we have to be able to restart line if there's a break if(!crayon.shouldPrint()) { isBreak = true; continue; } String ptID = getPointID(spline[i], guides[startGuide], guides[startGuide+1], i%nIntervals, nIntervals); tmp.like(spline[i]); // because Tuple3 doesn't have a format() method out.println("{"+ptID+"}"+(isBreak ? "P " : "")+crayon.getKinString()+" "+tmp.format(df)); isBreak = false; } } out.flush(); } //}}} //{{{ printFlatRibbon //############################################################################## /** * Displays a triangulated ribbon of uniform or variable width. * Only points are generated; the client is responsible for writing "@ribbonlist ...". */ public void printFlatRibbon(GuidePoint[] guides, int nIntervals, boolean variableWidth) { int len = guides.length; NRUBS nrubs = new NRUBS(); Triple[] pts1 = new Triple[len]; Triple[] pts2 = new Triple[len]; for(int i = 0; i < len; i++) { pts1[i] = new Triple(); pts2[i] = new Triple(); } for(int i = 0; i < len; i++) { double ribwid = (guides[i].offsetFactor > 0 ? widthAlpha : widthBeta); double halfWidth = 0.5 * (widthCoil + guides[i].widthFactor*(ribwid - widthCoil)); if(!variableWidth) halfWidth = widthDefault / 2.0; pts1[i].like(guides[i].xyz).addMult( halfWidth, guides[i].dvec); pts2[i].like(guides[i].xyz).addMult(-halfWidth, guides[i].dvec); } Tuple3[] spline1 = nrubs.spline(pts1, nIntervals); Tuple3[] spline2 = nrubs.spline(pts2, nIntervals); boolean isBreak = true; for(int i = 0; i < spline1.length; i++) { int startGuide = (i/nIntervals) + 1; tmp.likeMidpoint(spline1[i], spline2[i]); crayon.forRibbon(tmp, guides[startGuide], guides[startGuide+1], i%nIntervals, nIntervals); // For this to make sense, we have to be able to restart line if there's a break if(!crayon.shouldPrint()) { isBreak = true; continue; } String ptID = getPointID(tmp, guides[startGuide], guides[startGuide+1], i%nIntervals, nIntervals); tmp.like(spline1[i]); // because Tuple3 doesn't have a format() method out.println("{"+ptID+"}"+(isBreak ? "X " : "")+crayon.getKinString()+" "+tmp.format(df)); tmp.like(spline2[i]); out.println("{\"}"+crayon.getKinString()+" "+tmp.format(df)); isBreak = false; } out.flush(); } //}}} //{{{ CLASS: RibbonElement //############################################################################## static class RibbonElement implements java.lang.Comparable { int start = 0, end = 0; Object type = SecondaryStructure.COIL; SecondaryStructure.Range range = null; public RibbonElement() {} public RibbonElement(RibbonElement that) { this.like(that); } public RibbonElement(SecondaryStructure.Range range) { this.range = range; if(range == null) type = SecondaryStructure.COIL; else type = range.getType(); if(type == SecondaryStructure.TURN) type = SecondaryStructure.COIL; } public boolean sameSSE(RibbonElement that) { return (this.type == that.type && this.range == that.range); } public void like(RibbonElement that) { this.start = that.start; this.end = that.end; this.type = that.type; this.range = that.range; } public int compareTo(RibbonElement that) { // (ARK Spring2010) int a, b; if(this.range==null) a=0; else a=this.range.strand; if(that.range==null) b=0; else b=that.range.strand; return a-b; } } //}}} //{{{ printFancyRibbon, printFancy //############################################################################## /** * Displays a triangulated ribbon of with arrowheads, etc. * Several lists are generated, but with additional parameters specified below. */ public void printFancyRibbon(GuidePoint[] guides, SecondaryStructure secStruct, double widthAlpha, double widthBeta, String listAlpha, String listBeta, String listCoil, ModelState state) // (ARK Spring2010) added ModelState { printFancyRibbon(guides, secStruct, widthAlpha, widthBeta, listAlpha, listBeta, listCoil, null, state); // (ARK Spring2010) added state } public void printFancyRibbon(GuidePoint[] guides, SecondaryStructure secStruct, double widthAlpha, double widthBeta, String listAlpha, String listBeta, String listCoil, String listCoilOutline, ModelState state) { // Data allocation, splining {{{ int len = guides.length; NRUBS nrubs = new NRUBS(); // Seven stands of guidepoints: coil, alpha, beta, (beta arrowheads, see below) double[] halfWidths = {0, -widthAlpha/2, widthAlpha/2, -widthBeta/2, widthBeta/2, -widthBeta, widthBeta}; Triple[][] guidepts = new Triple[halfWidths.length][guides.length]; for(int i = 0; i < guidepts.length; i++) for(int j = 0; j < guidepts[i].length; j++) guidepts[i][j] = new Triple(guides[j].xyz).addMult(halfWidths[i], guides[j].dvec); // original //guidepts[i][j] = new Triple(guides[j].xyz).addMult(halfWidths[i]*guides[j].widthFactor, guides[j].dvec); // added guides[j].widthFactor, (ARK Spring2010) // Seven strands of interpolated points Tuple3[][] splinepts = new Tuple3[halfWidths.length][]; for(int i = 0; i < halfWidths.length; i++) splinepts[i] = nrubs.spline(guidepts[i], nIntervals); // I'm pretty sure this isn't needed now: // Arrow heads -- can't just spline some offset guidepoints // or there's a small break between the arrow body and arrow head. //splinepts[halfWidths.length ] = new Triple[ splinepts[0].length ]; //splinepts[halfWidths.length+1] = new Triple[ splinepts[0].length ]; //for(int i = 0; i < splinepts[0].length; i++) //{ // splinepts[halfWidths.length ][i] = new Triple().likeVector(splinepts[4][i], splinepts[3][i]).div(2).add(splinepts[3][i]); // splinepts[halfWidths.length+1][i] = new Triple().likeVector(splinepts[3][i], splinepts[4][i]).div(2).add(splinepts[4][i]); //} // Data allocation, splining }}} // Discovery of ribbon elements: ribbons, ropes, and arrows {{{ ArrayList ribbonElements = new ArrayList(); RibbonElement ribElement = new RibbonElement(); RibbonElement prevRibElt = new RibbonElement(); // (ARK Spring2010) ribbonElements.add(ribElement); ribElement.type = null; for(int i = 0; i < guides.length-3; i++) { GuidePoint g1 = guides[i+1], g2 = guides[i+2]; // These two won't really be ribbon elements; we're just reusing the class for convenience. RibbonElement currSS = new RibbonElement(secStruct.getRange(g1.nextRes)); RibbonElement nextSS = new RibbonElement(secStruct.getRange(g2.nextRes)); // Otherwise, we get one unit of coil before alpha or beta at start if(ribElement.type == null) ribElement.like(currSS); if(!ribElement.sameSSE(currSS)) // helix / sheet starting { if(currSS.type == SecondaryStructure.HELIX || currSS.type == SecondaryStructure.STRAND) { ribElement.end = nIntervals*i + 1; ribbonElements.add(ribElement = new RibbonElement(currSS)); // Every helix / sheet starts from coil; see below ribElement.start = nIntervals*i + 1; } } if(!ribElement.sameSSE(nextSS)) // helix / sheet ending { if(currSS.type == SecondaryStructure.HELIX || currSS.type == SecondaryStructure.STRAND) { int end = nIntervals*i + 0; if(currSS.type == SecondaryStructure.STRAND) end += nIntervals - 1; ribElement.end = end; ribbonElements.add(ribElement = new RibbonElement()); // Every helix / sheet flows into coil ribElement.type = SecondaryStructure.COIL; ribElement.start = end; } } } ribElement.end = splinepts[0].length-1; // Discovery of ribbon elements: ribbons, ropes, and arrows }}} // We juggle crayons around to make sure that black edges stay black. RibbonCrayon normalCrayon = this.getCrayon(); // The ConstCrayon will return "" as the point color, thereby overriding normalCrayon. RibbonCrayon edgeCrayon = new CompositeCrayon().add(new ConstCrayon("")).add(normalCrayon); Collections.sort(ribbonElements); // sort by strand number --(ARK Spring2010) // Create list of just strands for searching through Vector strands = new Vector(); for(Iterator iter0 = ribbonElements.iterator(); iter0.hasNext(); ){ RibbonElement ribElement0 = (RibbonElement) iter0.next(); if(ribElement0.type == SecondaryStructure.STRAND) strands.add(ribElement0); } // end (ARK Spring2010) for(Iterator iter = ribbonElements.iterator(); iter.hasNext(); ) { ribElement = (RibbonElement) iter.next(); int stGuide = (ribElement.start / nIntervals) + 2; // (ARK Spring2010) int endGuide = (ribElement.end / nIntervals) - 1; // (ARK Spring2010) //System.err.println(ribElement.type+" ["+ribElement.start+", "+ribElement.end+"]"); if(ribElement.type == SecondaryStructure.HELIX) //{{{ { // Determine sidedness using middle of helix, (ARK Spring2010) int k = (int) Math.floor( (ribElement.start + ribElement.end) / 2 ); Triple pt = new Triple(splinepts[2][k]); Triple v1 = new Triple().likeVector(pt,splinepts[1][k]); Triple v2 = new Triple().likeVector(pt,splinepts[1][k+1]); Triple cross = v1.cross(v2); double dot = cross.unit().dot(guides[(int)Math.floor(k/nIntervals)+1].cvec.unit()); // end (ARK Spring2010) this.setCrayon(normalCrayon); out.println("@ribbonlist {fancy helix} "+listAlpha); for(int i = ribElement.start; i < ribElement.end; i++) { if(dot>0){ // current normal direction points into helix // flip the normals (for sidedness) by switching the order of these two lines, (ARK Spring2010) printFancy(guides, splinepts[2], i); printFancy(guides, splinepts[1], i); } else{ printFancy(guides, splinepts[1], i); printFancy(guides, splinepts[2], i); } } printFancy(guides, splinepts[0], ribElement.end); // angled tip at end of helix this.setCrayon(edgeCrayon); out.println("@vectorlist {fancy helix edges} width= 1 "+listAlpha+" color= deadblack"); // black edge, left side printFancy(guides, splinepts[0], ribElement.start, true); for(int i = ribElement.start; i < ribElement.end; i++) printFancy(guides, splinepts[1], i); printFancy(guides, splinepts[0], ribElement.end); // black edge, right side printFancy(guides, splinepts[0], ribElement.start, true); for(int i = ribElement.start; i < ribElement.end; i++) printFancy(guides, splinepts[2], i); printFancy(guides, splinepts[0], ribElement.end); // Print clustered guideposts, (ARK Spring2010) //String groupID = "helix "+ribElement.range.initSeqNum+" to "+ribElement.range.endSeqNum; //printGuideptGp(guides, groupID, "helix", stGuide, endGuide+2, splinepts); } //}}} ////end if(helix) else if(ribElement.type == SecondaryStructure.STRAND) //{{{ { // Determine sidedness, (ARK Spring2010) {{{ double dot = 0; if(ribElement.range.strand != 1){ // o.w. it's first in the sheet // look for previous strand (strand-1) int i; for(i=0; i0 && prevRibElt.range.flipped) ){ printFancy(guides, splinepts[4], i); printFancy(guides, splinepts[3], i); ribElement.range.flipped = true; } else { printFancy(guides, splinepts[3], i); printFancy(guides, splinepts[4], i); } } // Ending *exactly* like this is critical to avoiding a break // between the arrow body and arrow head! if( (dot<0 && !prevRibElt.range.flipped) || (dot>0 && prevRibElt.range.flipped) ){ // flip the normals for arrow head, (ARK Spring2010) printFancy(guides, splinepts[6], ribElement.end-2); printFancy(guides, splinepts[5], ribElement.end-2); printFancy(guides, splinepts[0], ribElement.end); } else { printFancy(guides, splinepts[5], ribElement.end-2); printFancy(guides, splinepts[6], ribElement.end-2); printFancy(guides, splinepts[0], ribElement.end); } this.setCrayon(edgeCrayon); out.println("@vectorlist {fancy sheet edges} width= 1 "+listBeta+" color= deadblack"); // black edge, left side printFancy(guides, splinepts[0], ribElement.start, true); for(int i = ribElement.start; i < ribElement.end-1; i++) printFancy(guides, splinepts[3], i); printFancy(guides, splinepts[5], ribElement.end-2); printFancy(guides, splinepts[0], ribElement.end); // black edge, right side printFancy(guides, splinepts[0], ribElement.start, true); for(int i = ribElement.start; i < ribElement.end-1; i++) printFancy(guides, splinepts[4], i); printFancy(guides, splinepts[6], ribElement.end-2); printFancy(guides, splinepts[0], ribElement.end); ///Print clustered strand guideposts, (ARK Spring2010) //String groupID = "strand "+ribElement.range.initSeqNum+" to "+ribElement.range.endSeqNum; //printGuideptGp(guides, groupID, "strand", stGuide, endGuide+2, splinepts); } // end if strand }}} else // COIL {{{ { // for black outlines on coils if (listCoilOutline != null) { this.setCrayon(normalCrayon); out.println("@vectorlist {fancy coil edges} "+listCoilOutline); for(int i = ribElement.start; i <= ribElement.end; i++) printFancy(guides, splinepts[0], i); } this.setCrayon(normalCrayon); out.println("@vectorlist {fancy coil} "+listCoil); for(int i = ribElement.start; i <= ribElement.end; i++) printFancy(guides, splinepts[0], i); ///Print clustered guideposts, (ARK Spring2010) //String groupID = "coil "+stGuide; //printGuideptGp(guides, groupID, "coil", stGuide, endGuide+2, splinepts); } //}}} } this.setCrayon(normalCrayon); out.flush(); //outGuides.flush(); //(ARK Spring2010) } private void printFancy(GuidePoint[] guides, Tuple3[] splines, int i) { printFancy(guides, splines, i, false); } private void printFancy(GuidePoint[] guides, Tuple3[] splines, int i, boolean lineBreak) { int nIntervals = (splines.length - 1) / (guides.length - 3); int interval = i % nIntervals; int startGuide = (i / nIntervals) + 1; tmp.like(splines[i]); // because Tuple3 doesn't have a format() command out.print("{"); out.print(getPointID(splines[i], guides[startGuide], guides[startGuide+1], interval, nIntervals)); out.print("}"); if(lineBreak) out.print("P "); crayon.forRibbon(splines[i], guides[startGuide], guides[startGuide+1], interval, nIntervals); out.print(crayon.getKinString()); out.print(" "); out.println(tmp.format(df)); } //}}} //{{{ get/setCrayon, setWidth //############################################################################## /** The RibbonCrayon used for coloring these sections. */ public RibbonCrayon getCrayon() { return this.crayon; } /** The RibbonCrayon used for coloring these sections. */ public void setCrayon(RibbonCrayon c) { this.crayon = c; } /** Sets the width for constant-width ribbons. Default is 2.0. */ public void setWidth(double w) { this.widthDefault = w; } /** * Sets the width for variable-width ribbons. * Default is (2.0, 2.2, 1.0) for protein and (3.0, 3.0, 3.0) for nucleic acids. */ public void setWidth(double alpha, double beta, double coil) { this.widthAlpha = alpha; this.widthBeta = beta; this.widthCoil = coil; } //}}} //{{{ getPointID, setRnaPointIDs //############################################################################## // // One day, all this should be replaced with a pluggable system // like AtomIDer and PrekinIDer. // // Don't need all these params (right now) but kept them b/c they match RibbonCrayon private String getPointID(Tuple3 point, GuidePoint start, GuidePoint end, int interval, int nIntervals) { Residue res = start.nextRes; // == end.prevRes, in all cases if(rnaPointIDs && interval <= nIntervals/2) res = start.prevRes; // == first res, for RNA/DNA only StringBuffer buf = new StringBuffer(11); // should be long enough for almost all buf.append(res.getName()); // 3 buf.append(" "); // 1 buf.append(res.getChain()); // 1 buf.append(" "); // 1 buf.append(res.getSequenceNumber().trim()); // 1 - 4 (or more) buf.append(res.getInsertionCode()); // 1 return buf.toString().toLowerCase(); } /** * If true, residue names in point IDs will be decided based on the RNA/DNA * alignment of guidepoints to residues. * If false (the default), the protein style will be used instead. */ public void setRnaPointIDs(boolean r) { this.rnaPointIDs = r; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/AtomIDer.java0000644000000000000000000000114211531212776020020 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: package molikin; import driftwood.moldb2.AtomState; /** * AtomIDer generates kinemage point IDs for atoms. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Tue Nov 8 15:18:42 EST 2005 */ public interface AtomIDer //extends ... implements ... { /** * Returns a string to be used as the kinemage point ID * for the supplied AtomState. * @param as the state to be described * @return a string suitable for a point ID */ public String identifyAtom(AtomState as); }//class king-2.21.120420/molikin/src/molikin/GuidePoint.java0000644000000000000000000000416311531212776020431 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * GuidePoint is a spline guide point for constructing ribbons. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Mon Jan 23 13:10:50 EST 2006 */ public class GuidePoint //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## /** Final coordinates for this guide point, after any correction for local curvature */ public Triple xyz = new Triple(); /** Unit vector normal to the local plane of the ribbon */ public Triple cvec = new Triple(); /** Unit vector in the local plane of the ribbon, perpendicular to its overall direction */ public Triple dvec = new Triple(); /** * Offset factor needed to pull spline through guidepoints. * Already applied; does not depend on neighbors (unlike width). */ public double offsetFactor = 0; /** * Suggested ribbon width modifier, from 0 (skinniest) to 1 (fattest). * This is based on low/high curvature of 3+ residues in a row. */ public double widthFactor = 0; /** * Residues immediately before and after this guidepoint (never null). * Usually different residues for proteins and for nucleic acids, except at chain ends. * For nucleic acids, prevRes is the residue centered on the guide point and nextRes is the one after. * (Protein guides fall between residues; nucleic guides fall in middle of a residue.) */ public Residue prevRes, nextRes; //}}} //{{{ Constructor(s) //############################################################################## public GuidePoint() { super(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/RibbonCrayon.java0000644000000000000000000000164411531212776020752 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: package molikin; import driftwood.moldb2.*; import driftwood.r3.*; /** * RibbonCrayon allows for customizing the rendering of kinemage * ribbon-like objects. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Fri Sep 30 11:27:47 EDT 2005 */ public interface RibbonCrayon extends Crayon { /** * Customizes the rendering of a kinemage point. * @param point the location of the current point on the spline * @param start the GuidePoint at the start of this span * @param end the GuidePoint at the end of this span * @param interval a number from 0 (start) to nIntervals (end), inclusive * @param nIntervals the number of pieces this section of ribbon is broken into */ public void forRibbon(Tuple3 point, GuidePoint start, GuidePoint end, int interval, int nIntervals); }//class king-2.21.120420/molikin/src/molikin/Ribbons.java0000644000000000000000000005001511531212776017755 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * Ribbons contains functions used to make ribbon drawings. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Mon Jan 23 12:43:49 EST 2006 */ public class Ribbons //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public Ribbons() { super(); } //}}} //{{{ getProteinContigs //############################################################################## /** * Given an ordered collection of Residues and a ModelState, return one or * more ordered collections of Residues that are contiguous (bonded). * @return Collection<Collection<Residue>> */ public Collection getProteinContigs(Collection residues, ModelState state, ResClassifier resC) { final double maxCaCa = 5.0; // from Prekin; ideal is 3.80 ArrayList allContigs = new ArrayList(), currContig = new ArrayList(); Residue prevRes = null; for(Iterator iter = residues.iterator(); iter.hasNext(); ) { Residue currRes = (Residue) iter.next(); if(resC.classify(currRes) != ResClassifier.PROTEIN) continue; else if(prevRes == null) { if (currRes.getAtom(" CA ")!=null) { currContig.add(currRes); prevRes = currRes; } } else { try { AtomState prevCa = state.get(prevRes.getAtom(" CA ")); AtomState currCa = state.get(currRes.getAtom(" CA ")); if(currCa.sqDistance(prevCa) < maxCaCa*maxCaCa && currRes.getChain().equals(prevRes.getChain())) { currContig.add(currRes); } else { if(currContig.size() > 0) allContigs.add(currContig); currContig = new ArrayList(); currContig.add(currRes); } prevRes = currRes; } catch(AtomException ex) {} } } if(currContig.size() > 0) allContigs.add(currContig); return allContigs; } //}}} //{{{ getNucleicAcidContigs //############################################################################## /** * Given an ordered collection of Residues and a ModelState, return one or * more ordered collections of Residues that are contiguous (bonded). * @return Collection<Collection<Residue>> */ public Collection getNucleicAcidContigs(Collection residues, ModelState state, ResClassifier resC) { final double maxPP = 10.0; // from Prekin; ideal is ~7 ArrayList allContigs = new ArrayList(), currContig = new ArrayList(); Residue prevRes = null; for(Iterator iter = residues.iterator(); iter.hasNext(); ) { Residue currRes = (Residue) iter.next(); if(resC.classify(currRes) != ResClassifier.NUCACID) continue; else if(prevRes == null) { if ((currRes.getAtom(" P ")!=null)||(currRes.getAtom(" O5*")!=null)||(currRes.getAtom(" O5'")!=null)) { currContig.add(currRes); prevRes = currRes; } } else { try { Atom phos1 = prevRes.getAtom(" P "); if(phos1 == null) phos1 = prevRes.getAtom(" O5*"); if(phos1 == null) phos1 = prevRes.getAtom(" O5'"); AtomState prevP = state.get(phos1); // Critical when two nucleic contigs appear back-to-back -- can't assume there's a P Atom phos2 = currRes.getAtom(" P "); if(phos2 == null) phos2 = currRes.getAtom(" O5*"); if(phos2 == null) phos2 = currRes.getAtom(" O5'"); AtomState currP = state.get(phos2); if(currP.sqDistance(prevP) < maxPP*maxPP && currRes.getChain().equals(prevRes.getChain())) { currContig.add(currRes); } else { if(currContig.size() > 0) { allContigs.add(currContig); currContig = new ArrayList(); } currContig.add(currRes); } prevRes = currRes; } catch(AtomException ex) { } } } if(currContig.size() > 0) allContigs.add(currContig); return allContigs; } //}}} //{{{ makeProteinGuidepoints //############################################################################## /** * Converts a collection of contiguous protein residues into a series of spline guidepoints. * Curvature-based offsets have already been computed, but "d" vectors have not yet been * flipped as neccessary to remove excess twist from the ribbon. */ public GuidePoint[] makeProteinGuidepoints(Collection contigRes, ModelState state) { Residue[] res = (Residue[]) contigRes.toArray(new Residue[contigRes.size()]); // 2 identical dummies on each end (Ca of first/last residue); guidepoints fall between residues GuidePoint[] guides = new GuidePoint[res.length+4-1]; GuidePoint g; // for easy reference Triple avec = new Triple(), bvec = new Triple(), midpt = new Triple(), offsetVec = new Triple(); final double maxOffset = 1.5; // maximum displacement of guidepoint based on curvature //{{{ Make normal guidepoints at middle of peptides for(int i = 0; i < res.length-1; i++) { g = guides[i+2] = new GuidePoint(); // Ensure prevRes and nextRes are not null if there's an AtomException. g.prevRes = res[i ]; g.nextRes = res[i+1]; try { AtomState ca1 = state.get(res[i ].getAtom(" CA ")); AtomState ca2 = state.get(res[i+1].getAtom(" CA ")); g.xyz.likeMidpoint(ca1, ca2); // Based on Ca(i-1) to Ca(i+2) distance, we may adjust ribbon width // and/or guidepoint position. Ribbon widens in areas of high OR low // curvature (alpha/beta, respectively). This is only a preliminary // estimate -- it's applied only for 3+ residues in a row. (checked below) // // For high curvature ONLY (alpha), we offset the guidepoint // outwards to make the spline track the chain (esp. helix); // this is done for each and does not require 3+ in a row. // Offset vector goes from the midpoint of Ca(i-1) to Ca(i+2) // thru the current guide point // (which is the midpoint of Ca(i) and Ca(i+1)). // // CA-CA DIST WIDTH FACTOR OFFSET FACTOR NOTE // ========== ============ ============= ==== // 5.0 1 1 ~limit for curled-up protein // 5.5 1 1 } linear interpolation // 7.0 0 0 } from 1.0 to 0.0 // 9.0 0 0 } linear interpolation // 10.5 1 0 } from 1.0 to 0.0 // 11.0 1 0 ~limit for extended protein if(1 <= i && i <= res.length-3) { AtomState ca0 = state.get(res[i-1].getAtom(" CA ")); AtomState ca3 = state.get(res[i+2].getAtom(" CA ")); double cacaDist = ca0.distance(ca3); if(cacaDist < 7) { g.widthFactor = g.offsetFactor = Math.min(1.5, 7-cacaDist) / 1.5; midpt.likeMidpoint(ca0, ca3); offsetVec.likeVector(midpt, g.xyz).unit(); g.xyz.addMult(maxOffset*g.offsetFactor, offsetVec); } else if(cacaDist > 9) { g.widthFactor = Math.min(1.5, cacaDist-9) / 1.5; g.offsetFactor = 0; } else g.widthFactor = g.offsetFactor = 0; } // We do this last so that for CA-only structures, everything // possible is calculated before this throws an exception: AtomState ox1 = state.get(res[i ].getAtom(" O ")); avec.likeVector(ca1, ca2); bvec.likeVector(ca1, ox1); g.cvec.likeCross(avec, bvec).unit(); g.dvec.likeCross(g.cvec, avec).unit(); } catch(AtomException ex) {} } //}}} Make normal guidepoints at middle of peptides //{{{ Check on widthFactors -- only apply for 3+ in a row > 0 for(int i = 2; i < guides.length-2; ) { // Scan to find first widened guidepoint: if(guides[i].widthFactor == 0) { i++; continue; } // Scan to find last widened guidepoint: int firstWide = i, nextThin = i+1; while(nextThin < guides.length-2 && guides[nextThin].widthFactor != 0) nextThin++; // If the span is less than 3, set them all back to zero: if(nextThin - firstWide < 3) for(int j = firstWide; j < nextThin; j++) guides[j].widthFactor = 0; //{System.err.println(guides[j].widthFactor+" -> 0 ["+j+"]"); guides[j].widthFactor = 0;} i = nextThin; } //}}} //{{{ Make dummy guidepoints at beginning and end try { g = new GuidePoint(); AtomState ca = state.get(res[0].getAtom(" CA ")); g.xyz.like(ca); g.cvec.like(guides[2].cvec); g.dvec.like(guides[2].dvec); g.offsetFactor = guides[2].offsetFactor; g.widthFactor = guides[2].widthFactor; g.prevRes = g.nextRes = res[0]; guides[0] = guides[1] = g; } catch(AtomException ex) {} try { g = new GuidePoint(); AtomState ca = state.get(res[res.length-1].getAtom(" CA ")); g.xyz.like(ca); g.cvec.like(guides[guides.length-3].cvec); g.dvec.like(guides[guides.length-3].dvec); g.offsetFactor = guides[guides.length-3].offsetFactor; g.widthFactor = guides[guides.length-3].widthFactor; g.prevRes = g.nextRes = res[res.length-1]; guides[guides.length-1] = guides[guides.length-2] = g; } catch(AtomException ex) {} //}}} Make dummy guidepoints at beginning and end return guides; } //}}} //{{{ makeNucleicAcidGuidepoints //############################################################################## /** * Converts a collection of contiguous nucleic acid residues into a series of spline guidepoints. * Curvature-based offsets have already been computed, but "d" vectors have not yet been * flipped as neccessary to remove excess twist from the ribbon. */ public GuidePoint[] makeNucleicAcidGuidepoints(Collection contigRes, ModelState state) { Residue[] res = (Residue[]) contigRes.toArray(new Residue[contigRes.size()]); // 2 identical dummies on each end (see below); other guidepoints fall between phosphates GuidePoint[] guides = new GuidePoint[res.length+4-1]; GuidePoint g; // for easy reference Triple avec = new Triple(), bvec = new Triple(), midpt = new Triple(), offsetVec = new Triple(); //{{{ Make normal guidepoints at middle of residues for(int i = 0; i < res.length-1; i++) { //for (GuidePoint gbug : guides) System.out.print(gbug+" "); //System.out.println(); g = guides[i+2] = new GuidePoint(); // Ensure prevRes and nextRes are not null if there's an AtomException. //g.prevRes = g.nextRes = res[i]; // both really "this" res // This makes the fancy (arrowheaded) ribbon code work right g.prevRes = res[i ]; g.nextRes = res[i+1]; try { Atom phos1 = res[i].getAtom(" P "); if(phos1 == null) phos1 = res[i].getAtom(" O5*"); if(phos1 == null) phos1 = res[i].getAtom(" O5'"); //System.out.println("phos1 "+phos1); AtomState p1 = state.get(phos1); Atom phos2 = res[i+1].getAtom(" P "); if(phos2 == null) phos2 = res[i+1].getAtom(" O5*"); if(phos2 == null) phos2 = res[i+1].getAtom(" O5'"); //System.out.println("phos2 "+phos2); AtomState p2 = state.get(phos2); g.xyz.likeMidpoint(p1, p2); // Based on P(i-1) to P(i+1) or P(i) to P(i+2) distance, we may offset guide points. // For areas of high curvature, the guide point is offset towards the C4' if(1 <= i && i <= res.length-3) { Atom phos0 = res[i-1].getAtom(" P "); if(phos0 == null) phos0 = res[i-1].getAtom(" O5*"); if(phos0 == null) phos0 = res[i-1].getAtom(" O5'"); AtomState p0 = state.get(phos0); Atom phos3 = res[i+2].getAtom(" P "); if(phos3 == null) phos3 = res[i+2].getAtom(" O5*"); if(phos3 == null) phos3 = res[i+2].getAtom(" O5'"); AtomState p3 = state.get(phos3); double ppDist1 = g.xyz.distance(p0); double ppDist2 = g.xyz.distance(p3); // Default values for regions of low curvature: boolean isTightlyCurved = false; double ppDistance = ppDist1; double maxOffset = 0; g.offsetFactor = 0; g.widthFactor = 0; // no width hinting for nucleic acids, period if(ppDist1 <= 9.0 || ppDist2 <= 9.0) { isTightlyCurved = true; ppDistance = Math.min(ppDist1, ppDist2); Atom carbon4 = res[i].getAtom(" C4*"); if(carbon4 == null) carbon4 = res[i].getAtom(" C4'"); AtomState c4 = state.get(carbon4); maxOffset = g.xyz.distance(c4) + 1.0; // allows guide point to go past the C4' g.offsetFactor = (9.0 - ppDistance) / (9.0 - 7.0); if(g.offsetFactor > 1) g.offsetFactor = 1; // reaches full offset at 7A curvature // Has no effect in low curvature b/c offsetFactor = maxOffset = 0 offsetVec.likeVector(g.xyz, c4).unit(); g.xyz.addMult(maxOffset*g.offsetFactor, offsetVec); } } // We do this last so that for P-only structures (do those exist?), // everything possible is calculated before this throws an exception: Atom carbon3 = res[i].getAtom(" C3*"); if(carbon3 == null) carbon3 = res[i].getAtom(" C3'"); AtomState c3 = state.get(carbon3); Atom carbon1 = res[i].getAtom(" C1*"); if(carbon1 == null) carbon1 = res[i].getAtom(" C1'"); AtomState c1 = state.get(carbon1); avec.likeVector(p1, p2); bvec.likeVector(c3, c1); g.cvec.likeCross(avec, bvec).unit(); g.dvec.likeCross(g.cvec, avec).unit(); } catch(AtomException ex) {} } //}}} Make normal guidepoints at middle of peptides // widthFactors are not used with nucleic acid ribbons //{{{ Make dummy guidepoints at beginning and end try { // 5' guide point is the phosphate or O5' g = new GuidePoint(); Atom phos = res[0].getAtom(" P "); if(phos == null) phos = res[0].getAtom(" O5*"); if(phos == null) phos = res[0].getAtom(" O5'"); AtomState p = state.get(phos); g.xyz.like(p); g.cvec.like(guides[2].cvec); g.dvec.like(guides[2].dvec); g.offsetFactor = guides[2].offsetFactor; g.widthFactor = guides[2].widthFactor; g.prevRes = g.nextRes = res[0]; guides[0] = guides[1] = g; } catch(AtomException ex) {} try { // Prekin: 3' guide point is 2/3 of the way to the O3' from the last guide point //g = new GuidePoint(); //Atom oxygen3 = res[res.length-1].getAtom(" O3*"); //if(oxygen3 == null) oxygen3 = res[res.length-1].getAtom(" O3'"); //AtomState o3 = state.get(oxygen3); //g.xyz.like(guides[guides.length-3].xyz).addMult(2, o3).div(3); // IWD: 3' guide point is C3' g = new GuidePoint(); Atom carbon3 = res[res.length-1].getAtom(" C3*"); if(carbon3 == null) carbon3 = res[res.length-1].getAtom(" C3'"); if(carbon3 == null) carbon3 = res[res.length-1].getAtom(" P "); if(carbon3 == null) carbon3 = res[res.length-1].getAtom(" O5'"); if(carbon3 == null) carbon3 = res[res.length-1].getAtom(" O5*"); AtomState c3 = state.get(carbon3); g.xyz.like(c3); g.cvec.like(guides[guides.length-3].cvec); g.dvec.like(guides[guides.length-3].dvec); g.offsetFactor = guides[guides.length-3].offsetFactor; g.widthFactor = guides[guides.length-3].widthFactor; g.prevRes = g.nextRes = res[res.length-1]; guides[guides.length-1] = guides[guides.length-2] = g; } catch(AtomException ex) {} //}}} Make dummy guidepoints at beginning and end //for (GuidePoint gbug : guides) System.out.print(gbug+" "); //System.out.println(); return guides; } //}}} //{{{ swapEdgeAndFace, untwistRibbon //############################################################################## /** * Converts a RNA-style ribbon (the default) to a DNA-style one, * and vice versa, by swapping the "c" and "d" vectors. * This results in a 90 degree rotation of the ribbon around the ribbon axis. */ public void swapEdgeAndFace(GuidePoint[] guides) { for(int i = 0; i < guides.length; i++) { Triple tmp = guides[i].cvec; guides[i].cvec = guides[i].dvec; guides[i].dvec = tmp; } } /** * Removes excess twist from a ribbon by reversing the sign of the GuidePoint * "d" vectors as necessary. A vector is flipped if it has a negative dot product * with the previous one (i.e. the angle between them is greater than 90 degrees). */ public void untwistRibbon(GuidePoint[] guides) { for(int i = 1; i < guides.length; i++) { if(guides[i].dvec.dot(guides[i-1].dvec) < 0) guides[i].dvec.neg(); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/ResClassifier.java0000644000000000000000000001473611531212776021127 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.moldb2.*; //}}} /** * ResClassifier is responsible for categorizing Residues as one of * PROTEIN, NUCACID, WATER, METAL (single atom residues named as a known element), * OHET (organic/other het - not water or metal, but mostly HETATMs), * or UNKNOWN(like ohet, but mostly ATOMs). * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Thu Sep 29 11:04:27 EDT 2005 */ public class ResClassifier //extends ... implements ... { //{{{ Constants /** Residue name matches a known amino acid designation */ static public final Object PROTEIN = "protein"; /** Residue name matches a known nucleic acid designation */ static public final Object NUCACID = "nucleic_acid"; /** Residue name matches a known water designation */ static public final Object WATER = "water"; /** Residue name matches a known element and has exactly one atom */ static public final Object METAL = "metal"; /** Residue is not protein, nuc acid, water, or metal and is mostly HETATMs */ static public final Object OHET = "other_het"; /** Residue is not protein, nuc acid, water, or metal and is mostly ATOMs */ static public final Object UNKNOWN = "unknown"; //}}} //{{{ Variable definitions //############################################################################## Map map = new HashMap(); // Residue to one of the defined classes // Sets of the above classifications public Set proteinRes = new CheapSet(); public Set nucAcidRes = new CheapSet(); public Set waterRes = new CheapSet(); public Set metalRes = new CheapSet(); public Set ohetRes = new CheapSet(); public Set unknownRes = new CheapSet(); //}}} //{{{ Constructor(s) //############################################################################## public ResClassifier(Collection residues) { super(); // For each residue, first try to guess what it is on its own. // Then compare backward and forward to catch things like seleno-Met // and the GFP fluorophore, which should be treated as "normal" biopolymers. Residue prevRes = null; Object prevClas = UNKNOWN; ArrayList unknowns = new ArrayList(); for(Iterator iter = residues.iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); Object clas; if(Util.isProtein(res)) clas = PROTEIN; else if(Util.isNucleicAcid(res)) clas = NUCACID; else if(Util.isWater(res)) clas = WATER; else if(Util.isMetal(res) && res.getAtoms().size() == 1) clas = METAL; // if mostly HETATMs, call it OHET; else call it UNKNOWN else { int hetCount = 0; for(Iterator i = res.getAtoms().iterator(); i.hasNext(); ) { Atom a = (Atom) i.next(); if(a.isHet()) hetCount++; } if(hetCount > res.getAtoms().size() - hetCount) clas = OHET; else clas = UNKNOWN; } // If current is unknown and was preceded by protein/nucleic acid, // treat it as a continuation of that. // Else it might be followed by protein/nucleic acid later on. // // On including OHETs vs. not in the relabeling scheme: // MODRES in protein backbond are usually done with HETATMs, // as are selenomethionine (but we allow for those in isProtein). // However, an SO4 following protein but still in chain _ would be // reclassified as protein if we allow OHETs to be relabeled like this. if(clas == UNKNOWN)// || clas == OHET) { if((prevClas == PROTEIN || prevClas == NUCACID) && isSameChain(prevRes, res)) clas = prevClas; else unknowns.add(res); } // If current is protein/nucleic acid, it might have been preceded // by some unknowns, which should be treated as part of this. else if(clas == PROTEIN || clas == NUCACID) { if(unknowns.size() > 0) { for(Iterator i = unknowns.iterator(); i.hasNext(); ) { prevRes = (Residue) i.next(); if(isSameChain(prevRes, res)) map.put(prevRes, clas); if(clas == PROTEIN) proteinRes.add(prevRes); else if(clas == NUCACID) nucAcidRes.add(prevRes); } unknowns.clear(); } } // If current is metal or water, any preceding unknowns // have to remain just that -- unknown. else unknowns.clear(); //System.out.println(res +" "+ clas); map.put(res, clas); if(clas == PROTEIN) proteinRes.add(res); else if(clas == NUCACID) nucAcidRes.add(res); else if(clas == WATER) waterRes.add(res); else if(clas == METAL) metalRes.add(res); else if(clas == OHET) ohetRes.add(res); else if(clas == UNKNOWN) unknownRes.add(res); prevRes = res; prevClas = clas; } //System.out.println("prot=" + proteinRes); } //}}} //{{{ isSameChain, classify //############################################################################## private boolean isSameChain(Residue a, Residue b) { return (a.getChain().equals(b.getChain()) // same chain ID && a.sectionID == b.sectionID); // no TER cards between them } /** Analyzes the Residue and determines which class it belongs to. */ public Object classify(Residue res) { return map.get(res); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/Crayon.java0000644000000000000000000000447511531212776017623 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * Crayon interfaces are used (1) to customize rendering of * kinemage elements (color, size, masters, etc) and (2) to filter out * things that should not be rendered at all (via shouldPrint()). * *

Given a Crayon object, one calls a forXXX() function, then reads out the * result or results from the getter functions. After another forXXX() call, * those results will be overwritten with new ones. This is to avoid many * unnecessary object allocations. * *

Most users will only need to check shouldPrint() and getKinString(); * the individual attribute getters exist for the use of compositing Crayons. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Tue Oct 10 07:27:10 EDT 2006 */ public interface Crayon //extends ... implements ... { /** * Returns true if the object should be part of the kinemage, * false if it should be skipped. */ public boolean shouldPrint(); /** * Customizes the rendering of a kinemage point by returning a string * that includes color, width/radius, pointmasters, aspects, etc -- * all the attributes a Crayon can carry, in kinemage format. * @return a valid kinemage string, or "" for nothing. * Null is NOT a valid return value and will cause problems. * Leading/trailing spaces are not necessary. */ public String getKinString(); /** Returns a valid kinemage color, or null for none */ public String getColor(); /** Returns one or more pointmaster flags, without quote marks, or null for none */ public String getPointmasters(); /** Returns one or more aspect flags, without parentheses, or null for none */ public String getAspects(); /** Returns a line width between 1 and 7, or 0 for default */ public int getWidth(); /** Returns a ball or sphere radius, or 0 for default */ public double getRadius(); /** Returns true if the point should be marked unpickable (U) */ public boolean getUnpickable(); }//class king-2.21.120420/molikin/src/molikin/VirtualBackbone.java0000644000000000000000000001536411531212776021442 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.moldb2.*; //}}} /** * VirtualBackbone is responsible for calculating Bond objects for * a protein C-alpha trace or a nucleic acid virtual backbone. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Sat Oct 15 17:19:42 EDT 2005 */ public class VirtualBackbone //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Model model; ModelState[] states; ResClassifier resC; Map atomIndices; // AtomState to Integer int nextAtomIndex = 0; Collection protBonds = null; Collection nucBonds = null; //}}} //{{{ Constructor(s) //############################################################################## public VirtualBackbone(Model model, Collection modelStates, ResClassifier classifier) { super(); this.model = model; this.states = (ModelState[]) modelStates.toArray( new ModelState[modelStates.size()] ); this.resC = classifier; this.atomIndices = new IdentityHashMap(); } //}}} //{{{ getProteinBonds //############################################################################## /** * Returns a Collection of Bond objects that can be used to draw * protein C-alpha traces. */ public Collection getProteinBonds() { if(this.protBonds == null) { // See AtomGraph for speed/mem comparison of TreeSet vs. CheapSet + sort() this.protBonds = new CheapSet(); // Walk down the list of protein residues. For each pair that belong to // the same chain, check the distance between their C-alphas in every state. // Rely on the Set property of protBonds to eliminate duplicates. final double maxCaCa = 5.0; // from Prekin; ideal is 3.80 Atom currCa, prevCa = null; for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); if(resC.classify(r) != ResClassifier.PROTEIN) { prevCa = null; continue; } currCa = r.getAtom(" CA "); if(currCa != null && prevCa != null && currCa.getResidue().getChain().equals(prevCa.getResidue().getChain())) bondAllStates(prevCa, currCa, maxCaCa, protBonds); prevCa = currCa; } Object[] bonds = this.protBonds.toArray(); this.protBonds = null; Arrays.sort(bonds); this.protBonds = new FinalArrayList(bonds); } return this.protBonds; } //}}} //{{{ getNucAcidBonds //############################################################################## /** * Returns a Collection of Bond objects that can be used to draw * nucleic acid virtual backbone traces. */ public Collection getNucAcidBonds() { // C4'(prev) --- P --- C4' --- P(next) // | // C1' if(this.nucBonds == null) { // See AtomGraph for speed/mem comparison of TreeSet vs. CheapSet + sort() this.nucBonds = new CheapSet(); // Walk down the list of nucleic acid residues. For each pair that belong to // the same chain, check the distance between their P and C4' in every state. // Rely on the Set property of nucBonds to eliminate duplicates. final double maxC4P = 5.0; // avg. P -- C4' dist is ~ 3.5-4.0, ~ like protein Atom P, C1, C4, prevC4 = null; for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); if(resC.classify(r) != ResClassifier.NUCACID) { prevC4 = null; continue; } P = r.getAtom(" P "); C1 = r.getAtom(" C1*"); if(C1 == null) C1 = r.getAtom(" C1'"); C4 = r.getAtom(" C4*"); if(C4 == null) C4 = r.getAtom(" C4'"); // Bond from prev C4 to this P if(P != null && prevC4 != null && P.getResidue().getChain().equals(prevC4.getResidue().getChain())) bondAllStates(prevC4, P, maxC4P, nucBonds); // Bond from this P to this C4 if(P != null && C4 != null) bondAllStates(P, C4, maxC4P, nucBonds); // Bond from this C4 to this C1 if(C4 != null && C1 != null) bondAllStates(C4, C1, maxC4P, nucBonds); // this dist is too lenient prevC4 = C4; } Object[] bonds = this.nucBonds.toArray(); this.nucBonds = null; Arrays.sort(bonds); this.nucBonds = new FinalArrayList(bonds); } return this.nucBonds; } //}}} //{{{ bondAllStates, getIndex //############################################################################## private void bondAllStates(Atom atom1, Atom atom2, double maxDist, Collection outputBonds) { final double maxDist2 = maxDist * maxDist; for(int i = 0; i < states.length; i++) { try { AtomState as1 = states[i].get(atom1); AtomState as2 = states[i].get(atom2); if(as1.sqDistance(as2) <= maxDist2) outputBonds.add( new Bond(as1, getIndex(as1), as2, getIndex(as2)) ); } catch(AtomException ex) {} } } /** * Since residues are scanned in input order, C-alphas, phosphates, etc. * will be encountered in order and thus their indices will be assigned * so that the Bonds sort into the desired "normal" order, without us * explicitly having to assign an index to every AtomState in the model * (which DOES have to be done by AtomGraph; compare and contrast the code). */ private int getIndex(AtomState as) { Integer i = (Integer) atomIndices.get(as); if(i == null) { i = new Integer(nextAtomIndex++); atomIndices.put(as, i); } return i.intValue(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/AtomGraph.java0000644000000000000000000003265211536414272020250 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * AtomGraph takes a universe of AtomStates and determines their * bonded connectivity based purely on inter-atom distances. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Fri May 6 14:03:36 EDT 2005 */ public class AtomGraph //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## /** * All the AtomStates in this graph, in ascending order by index number. */ AtomState[] atomStates; /** * Map<AtomState, Integer> for finding specific states in atomStates[]. * AtomStates are compared by identity, not equality, to avoid XYZ overlaps. */ Map stateIndices; /** * Built at create time, for looking up bondedness relationships. */ SpatialBin stateBin; /** * A bunch of Collection<AtomState> for recording which atoms are * one bond away from a particular atom. Starts empty and is filled lazily. * Indices match with those of atomStates and stateIndices. */ Collection[] covNeighbors; /** * All of the Bonds for all of the states. * Fully populating this is expensive, so it's created lazily when requested. * Data will be plundered from covNeighbors when it's available. * Unmodifiable once created. */ Collection allBonds = null; /** * Contains all AtomStates known not to have any bonds to them. * Stays null until allBonds is populated. * Unmodifiable once created. */ Collection unbondedAtoms = null; /** * Controls whether chain ID should be considered when figuring out bonds. * If set to false, then cross-chain bonds are allowed iff either * (1) at least one atom is not C, N, O, P, or * (2) at least one is marked as a HETATM. * Hydrogens can only bond to something in their own chain in this case. * Cross-chain bonds are a big problem for EM structures (e.g. 1DYL). * This is implemented here rather than as an external filter because I want * this class to return all (true) bonds, but not spurious connections. * This is somewhat inconsistent, as I don't try at this level to filter out * spurious bonds caused by terrible (intra-chain) geometry in old files. */ boolean ignoreChains = false; // Used by bond search functions: private ArrayList _hits1 = new ArrayList(), _hits2 = new ArrayList(); //}}} //{{{ Constructor(s) //############################################################################## /** * Creates a connectivity graph for all the AtomStates in states. * The order of iteration over states IS important, as that order is used * by many of the later drawing algorithms. */ public AtomGraph(Collection states) { super(); //long time = System.currentTimeMillis(); // AtomStates are compared by identity, not equality, to avoid XYZ overlaps. this.atomStates = (AtomState[]) states.toArray( new AtomState[states.size()] ); this.stateIndices = new IdentityHashMap( atomStates.length ); for(int i = 0; i < atomStates.length; i++) stateIndices.put(atomStates[i], new Integer(i)); // Do a spatial hashing so neighbors can be found quickly. // TODO: try different values here to tune performance. this.stateBin = new SpatialBin(3.0); this.stateBin.addAll(Arrays.asList(this.atomStates)); // Start an empty map for AtomState -> Collection mapping. this.covNeighbors = new Collection[this.atomStates.length]; for(int i = 0; i < covNeighbors.length; i++) covNeighbors[i] = null; //time = System.currentTimeMillis() - time; //System.err.println("Spatial binning: "+time+" ms"); } //}}} //{{{ getBonds //############################################################################## /** * Returns all the bonds between all the atoms in this graph. * For N atoms, this is an O(N) or O(N ln N) computation, * but it may still be reasonably expensive. * Results are cached for future calls to this function and to getNeighbors(), * and any cached results from previous getNeighbors() calls are used here. */ public Collection getBonds() { if(this.allBonds == null) { //long time = System.currentTimeMillis(); // A Set is used so that duplicate bonds will be eliminated. // CheapSet + sort() ~ TreeSet in speed but uses less memory this.allBonds = new CheapSet(); this.unbondedAtoms = new ArrayList(); for(int i = 0; i < atomStates.length; i++) { AtomState query = atomStates[i]; Collection neighbors = this.getNeighbors(query); // forces neighbors to be found if(neighbors.size() == 0) { this.unbondedAtoms.add(query); } else { //this.bondedAtoms.add(query); -- no need for this yet int iQuery = ((Integer) stateIndices.get(query)).intValue(); for(Iterator iter = neighbors.iterator(); iter.hasNext(); ) { AtomState hit = (AtomState) iter.next(); int iHit = ((Integer) stateIndices.get(hit)).intValue(); this.allBonds.add(new Bond(query, iQuery, hit, iHit)); } } } // Iteration over the FinalArrayList is twice as fast as over the wrapped TreeSet! //this.allBonds = Collections.unmodifiableCollection(this.allBonds); Object[] bonds = this.allBonds.toArray(); this.allBonds = null; Arrays.sort(bonds); // There's no point in optimizing their order now, because when // broken down into mc, sc, etc the bonds will be disconnected again. this.allBonds = new FinalArrayList(bonds); this.unbondedAtoms = Collections.unmodifiableCollection(this.unbondedAtoms); //time = System.currentTimeMillis() - time; //System.err.println("Building bond network: "+time+" ms"); } return this.allBonds; } //}}} //{{{ getUnbonded //############################################################################## /** * Returns a Collection of AtomStates that have no bonds. * These will usually be metals, ions, waters (oxygen only), etc. */ public Collection getUnbonded() { if(this.unbondedAtoms == null) getBonds(); return this.unbondedAtoms; } //}}} //{{{ getNeighbors //############################################################################## /** * Gets all the AtomStates that the given AtomState is bonded to. * AtomStates are compared by identity here, not equality, so use * one of the states passed to the constructor. */ public Collection getNeighbors(AtomState query) { ////////////////////////////////////////////////////////////////// // Impl. note: this function is generally NOT REENTRANT, but is // // designed so connectHeavyAtoms() can call connectHydrogens(). // ////////////////////////////////////////////////////////////////// // This will throw NPEx if query isn't a state we manage: int iQuery = ((Integer) stateIndices.get(query)).intValue(); Collection neighbors = this.covNeighbors[iQuery]; if(neighbors == null) { String elem = query.getElement(); if(elem.equals("H")) neighbors = connectHydrogens(query); else neighbors = connectHeavyAtoms(query); this.covNeighbors[iQuery] = neighbors; } return neighbors; } //}}} //{{{ connectHydrogens //############################################################################## /** Finds the closest neighbor (JUST ONE) of a given H */ private Collection connectHydrogens(AtomState query) { // See http://chemviz.ncsa.uiuc.edu/content/doc-resources-bond.html // and the Prekin source in PKINCSUB.c :: connecthydrogen() final double d2max = 2.0 * 2.0; _hits2.clear(); this.stateBin.findSphere(query, 2.0, _hits2); AtomState bestHit = null; double d2best = Double.POSITIVE_INFINITY; Collection neighbors = new ArrayList(1); for(Iterator iter = _hits2.iterator(); iter.hasNext(); ) { AtomState hit = (AtomState) iter.next(); if(hit == query) continue; String elem = hit.getElement(); if(elem.equals("H") || elem.equals("Q")) continue; boolean chainsCompat = ignoreChains || query.getResidue().getChain().equals(hit.getResidue().getChain()); double d2 = query.sqDistance(hit); if(d2 <= d2max && d2 < d2best && chainsCompat && Util.altsAreCompatible(query, hit)) { bestHit = hit; d2best = d2; } } if(bestHit != null) neighbors.add(bestHit); return neighbors; } //}}} //{{{ connectHeavyAtoms //############################################################################## /** Finds the closest neighbor(s) of a given heavy atom */ private Collection connectHeavyAtoms(AtomState query) { // See http://chemviz.ncsa.uiuc.edu/content/doc-resources-bond.html // and the Prekin source in PKINCSUB.c :: connectheavyatom() _hits1.clear(); final double toCNO, toOther; String qElem = query.getElement(); boolean queryIsCNO = qElem.equals("C") || qElem.equals("N") || qElem.equals("O"); boolean queryIsCNOP = queryIsCNO || qElem.equals("P"); if(queryIsCNO) { toCNO = 2.0 * 2.0; toOther = 2.2 * 2.2; this.stateBin.findSphere(query, 2.2, _hits1); } else // an "other" atom -- P, S, metal, etc { toCNO = 2.2 * 2.2; toOther = 2.5 * 2.5; this.stateBin.findSphere(query, 2.5, _hits1); } Collection neighbors = new ArrayList( Math.min(4, _hits1.size()) ); for(Iterator iter = _hits1.iterator(); iter.hasNext(); ) { AtomState hit = (AtomState) iter.next(); if(hit == query) continue; String hElem = hit.getElement(); // We're bonded to an H iff the H is bonded to us -- // this avoids H's with too many bonds to them. if(hElem.equals("H")) { Collection neighborsH = getNeighbors(hit); //if(neighborsH.contains(query)) ... -- nice, but uses equals() instead of == if(neighborsH.size() >= 1 && neighborsH.iterator().next() == query) neighbors.add(hit); } else { boolean hitIsCNO = hElem.equals("C") || hElem.equals("N") || hElem.equals("O"); boolean chainsCompat = ignoreChains || query.getResidue().getChain().equals(hit.getResidue().getChain()) || query.isHet() || hit.isHet() || !queryIsCNOP || !(hitIsCNO || hElem.equals("P")); boolean sidechainsSameRes = true; if (!Util.isMainchain(query) & !Util.isMainchain(hit)) sidechainsSameRes = query.getResidue().equals(hit.getResidue()); boolean possibleDisulfide = (query.getElement().equals("S") && hit.getElement().equals("S") && !sidechainsSameRes); //System.out.print(possibleDisulfide); double d2max; if(hitIsCNO) d2max = toCNO; else d2max = toOther; if(query.sqDistance(hit) <= d2max && chainsCompat && Util.altsAreCompatible(query, hit) && (sidechainsSameRes || possibleDisulfide)) neighbors.add(hit); } } return neighbors; } //}}} //{{{ setIgnoreChains //############################################################################## /** * If true, AtomGraph will ignore chain IDs when figuring connectedness. * If false, chain IDs will be used in a pretty conservative way. * The default is false. * Changing the value of this property will cause any bonds that have * already been calculated to be flushed. */ public void setIgnoreChains(boolean ignore) { if(ignore != ignoreChains) { this.ignoreChains = ignore; // flush out cached bonds: bonding decisions may change now! for(int i = 0; i < covNeighbors.length; i++) covNeighbors[i] = null; allBonds = null; unbondedAtoms = null; } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/ResRanger.java0000644000000000000000000001702711531212776020255 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.moldb2.*; import driftwood.util.Strings; //}}} /** * ResRanger is responsible for dealing with user-specified ranges of * Residues, where ranges are based on insertion code and sequence "number" * (which can be an arbitrary string in mmCIF files, but usually isn't). * For this class, a residue "number" is a string consisting of the trimmed * Residue number concatenated with its trimmed insertion code. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Sat Oct 1 07:35:35 EDT 2005 */ public class ResRanger //extends ... implements ... { //{{{ Constants //}}} //{{{ CLASS: ResNum //############################################################################## /** * For sorting residue numbers into a meaningful order. * Residues are sorted first by number (if it's really a number) * and then by insertion code. * If the number is not a number, it's trimmed and contatenated with the * insertion code, and those sort as strings at the end of the group. */ static class ResNum implements Comparable { int num = Integer.MAX_VALUE; String ins; String callme; public ResNum(Residue r) { try { num = Integer.parseInt(r.getSequenceNumber().trim()); ins = r.getInsertionCode().trim(); callme = num+ins; } catch(NumberFormatException ex) { if (r.getSequenceInteger() != Residue.NAN_SEQ) { num = r.getSequenceInteger(); ins = r.getInsertionCode().trim(); callme = r.getSequenceNumber().trim() + ins; } else { ins = r.getSequenceNumber().trim() + r.getInsertionCode().trim(); callme = num+ins; } } } public boolean equals(Object o) { return this.callme.equals(((ResNum)o).callme); } public int hashCode() { return this.callme.hashCode(); } public int compareTo(Object o) { ResNum that = (ResNum) o; if(this.num == that.num) return this.ins.compareTo(that.ins); else return this.num - that.num; } } //}}} //{{{ Variable definitions //############################################################################## // List of "callme" strings from the ResNums ArrayList callmes = new ArrayList(); // Bit flags for whether given numbers are selected or not. BitSet resSel = new BitSet(); //}}} //{{{ Constructor(s) //############################################################################## /** * Initializes this object with the universe of Residue numbers * in which selections will be made. * @param residues the Residues that selections will apply to */ public ResRanger(Collection residues) { super(); // Collect all unique ResNums Set resNums = new CheapSet(); for(Iterator iter = residues.iterator(); iter.hasNext(); ) resNums.add(new ResNum((Residue) iter.next())); // Sort them into their natural order ResNum[] rNums = (ResNum[]) resNums.toArray( new ResNum[resNums.size()] ); Arrays.sort(rNums); // Create a list of callme strings for later lookups for(int i = 0; i < rNums.length; i++) callmes.add(rNums[i].callme); } //}}} //{{{ select(String) //############################################################################## /** * Sets the selection to match the given string, which consists of * comma-separated ranges, which are either * single numbers or pairs separated by a dash (-). * You may want to convert the selection to upper case first, * as insertion codes are usually upper case if anything. * This is an order M*N algorithm, where M is the count of numbers in the * selection statement and N is the count of unique residue numbers. */ public void select(String selection) { resSel.clear(); // no residues selected String[] ranges = Strings.explode(selection, ',', false, true); for(int j = 0; j < ranges.length; j++) { int k = ranges[j].indexOf('-', 1); // first dash, not counting leading minus if(k == -1) // single number { int i = callmes.indexOf( ranges[j] ); // already trimmed by explode() if(i != -1) resSel.set(i); } else // range of numbers { int i1 = callmes.indexOf( ranges[j].substring(0, k).trim() ); int i2 = callmes.indexOf( ranges[j].substring(k+1 ).trim() ); if(i1 == -1 || i2 == -1) {} // uninterpretable range -- can't find endpoint(s) else if(i1 > i2) resSel.set(i2, i1+1); // our endpoint in inclusive, else resSel.set(i1, i2+1); // BitSet is exclusive -- hence, +1 } } } //}}} //{{{ select(int[]) //############################################################################## /** * Selects residue numbers by their index in the list. * This is mostly intended for use with a JList. */ public void select(int[] indices) { resSel.clear(); if(indices == null) return; for(int i = 0; i < indices.length; i++) resSel.set(indices[i]); } //}}} //{{{ getSelectionString //############################################################################## /** Translates the current selection back into a (well-formed) String. */ public String getSelectionString() { StringBuffer buf = new StringBuffer(); boolean first = true; for(int i = 0; i < callmes.size(); i++) { if(resSel.get(i)) { if(first) first = false; else buf.append(", "); buf.append(callmes.get(i)); if(resSel.get(i+1)) // next number also selected { buf.append("-"); while(resSel.get(i) && i < callmes.size()) i++; buf.append(callmes.get(i-1)); } } } return buf.toString(); } //}}} //{{{ getAllNumbers, getSelectionMask, getSelectedNumbers //############################################################################## /** * Returns a set of all unique residue numbers + insertion codes as Strings, * in sorted order. */ public Collection getAllNumbers() { return Collections.unmodifiableCollection(callmes); } /** Returns a mask of which numbers (of getAllNumbers()) are selected. */ public BitSet getSelectionMask() { return (BitSet) resSel.clone(); } /** Returns a Set of the selected numbers as Strings, in no particular order. */ public Set getSelectedNumbers() { Set sel = new CheapSet(); for(int i = 0; i < callmes.size(); i++) { if(resSel.get(i)) sel.add(callmes.get(i)); } return sel; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/crayons/0000755000000000000000000000000011744306102017162 5ustar rootrootking-2.21.120420/molikin/src/molikin/crayons/CompositeCrayon.java0000644000000000000000000001333711531212776023161 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.crayons; import molikin.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * CompositeCrayon aggregates the results of many different Crayons. * While you could theoretically mix Atom, Bond, and Ribbon crayons within * one composite, don't -- it will lead to unexpected results (and exceptions!) * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 19 13:11:00 EDT 2006 */ public class CompositeCrayon extends AbstractCrayon implements AtomCrayon, BondCrayon, RibbonCrayon { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Collection crayons = new ArrayList(); //}}} //{{{ Constructor(s) //############################################################################## public CompositeCrayon() { super(); } //}}} //{{{ add //############################################################################## /** * Adds a crayon at the end of the list. * @return this (for chaining) */ public CompositeCrayon add(Crayon c) { this.crayons.add(c); return this; } //}}} //{{{ shouldPrint, getColor/Pointmasters/Aspects //############################################################################## /** Returns false unless all crayons report true. */ public boolean shouldPrint() { for(Iterator iter = crayons.iterator(); iter.hasNext(); ) if(!((Crayon) iter.next()).shouldPrint()) return false; return true; } /** Returns string from first non-null crayon, or null for none */ public String getColor() { for(Iterator iter = crayons.iterator(); iter.hasNext(); ) { Crayon c = (Crayon) iter.next(); String color = c.getColor(); if(color != null) return color; } return null; } /** Returns string from first non-null crayon, or null for none */ public String getPointmasters() { StringBuffer buf = null; for(Iterator iter = crayons.iterator(); iter.hasNext(); ) { Crayon c = (Crayon) iter.next(); String pm = c.getPointmasters(); if(pm != null) { if(buf == null) buf = new StringBuffer(); buf.append(pm); } } if(buf == null) return null; else return buf.toString(); } /** Returns string from first non-null crayon, or null for none */ public String getAspects() { StringBuffer buf = null; for(Iterator iter = crayons.iterator(); iter.hasNext(); ) { Crayon c = (Crayon) iter.next(); String aspects = c.getAspects(); if(aspects != null) { if(buf == null) buf = new StringBuffer(); buf.append(aspects); } } if(buf == null) return null; else return buf.toString(); } //}}} //{{{ getWidth/Radius/Unpickable //############################################################################## /** Returns value from first non-zero crayon, or 0 for default */ public int getWidth() { for(Iterator iter = crayons.iterator(); iter.hasNext(); ) { Crayon c = (Crayon) iter.next(); int width = c.getWidth(); if(width != 0) return width; } return 0; } /** Returns value from first non-zero crayon, or 0 for default */ public double getRadius() { for(Iterator iter = crayons.iterator(); iter.hasNext(); ) { Crayon c = (Crayon) iter.next(); double radius = c.getRadius(); if(radius != 0) return radius; } return 0; } /** Returns false unless one or more crayons report true. */ public boolean getUnpickable() { for(Iterator iter = crayons.iterator(); iter.hasNext(); ) if(((Crayon) iter.next()).getUnpickable()) return true; return false; } //}}} //{{{ forAtom/Bond/Ribbon //############################################################################## public void forAtom(AtomState as) { for(Iterator iter = crayons.iterator(); iter.hasNext(); ) { // If this cast fails, you added the wrong type of crayon. // Better to fail fast than produce weird results later. AtomCrayon c = (AtomCrayon) iter.next(); c.forAtom(as); } } public void forBond(AtomState from, AtomState toward) { for(Iterator iter = crayons.iterator(); iter.hasNext(); ) { // If this cast fails, you added the wrong type of crayon. // Better to fail fast than produce weird results later. BondCrayon c = (BondCrayon) iter.next(); c.forBond(from, toward); } } public void forRibbon(Tuple3 point, GuidePoint start, GuidePoint end, int interval, int nIntervals) { for(Iterator iter = crayons.iterator(); iter.hasNext(); ) { // If this cast fails, you added the wrong type of crayon. // Better to fail fast than produce weird results later. RibbonCrayon c = (RibbonCrayon) iter.next(); c.forRibbon(point, start, end, interval, nIntervals); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/crayons/AbstractCrayon.java0000644000000000000000000000703511531212776022760 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.crayons; import molikin.Crayon; import molikin.AtomCrayon; import molikin.BondCrayon; import molikin.RibbonCrayon; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * AbstractCrayon provides default implementations of all Crayon methods, * so children need only implement shouldPrint() and the appropriate attributes. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Tue Oct 10 07:46:31 EDT 2006 */ public abstract class AbstractCrayon implements Crayon { //{{{ Constants static final DecimalFormat df = driftwood.util.Strings.usDecimalFormat("0.####"); //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public AbstractCrayon() { super(); } //}}} //{{{ shouldPrint, getColor/Pointmasters/Aspects/Width/Radius/Unpickable //############################################################################## /** Returns true */ public boolean shouldPrint() { return true; } /** Returns null for none */ public String getColor() { return null; } /** Returns null for none */ public String getPointmasters() { return null; } /** Returns null for none */ public String getAspects() { return null; } /** Returns 0 for default */ public int getWidth() { return 0; } /** Returns 0 for default */ public double getRadius() { return 0; } /** Returns false */ public boolean getUnpickable() { return false; } //}}} //{{{ getKinString //############################################################################## /** Composites together non-default attributes into a kinemage-format string. */ public String getKinString() { StringBuffer buf = null; boolean b = getUnpickable(); if(b) { if(buf == null) buf = new StringBuffer(); else buf.append(" "); buf.append("U"); } String s = getColor(); if(s != null) { if(buf == null) buf = new StringBuffer(); else buf.append(" "); buf.append(s); } s = getPointmasters(); if(s != null) { if(buf == null) buf = new StringBuffer(); else buf.append(" "); buf.append("'").append(s).append("'"); } s = getAspects(); if(s != null) { if(buf == null) buf = new StringBuffer(); else buf.append(" "); buf.append("(").append(s).append(")"); } int i = getWidth(); if(i > 0) { if(buf == null) buf = new StringBuffer(); else buf.append(" "); buf.append("width").append(i); } double d = getRadius(); if(d > 0) { if(buf == null) buf = new StringBuffer(); else buf.append(" "); buf.append("r=").append(df.format(d)); } if(buf == null) return ""; else return buf.toString(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/crayons/BfactorCrayon.java0000644000000000000000000000546411531212776022601 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.crayons; import molikin.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * BfactorCrayon colors things by B-factor. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 19 13:12:08 EDT 2006 */ public class BfactorCrayon extends AbstractCrayon implements AtomCrayon, BondCrayon, RibbonCrayon { //{{{ Constants // Always need COLORS to be one longer than MAXVALS private static final String[] B_COLORS = {"blue", "purple", "magenta", "hotpink", "red", "orange", "gold", "yellow", "yellowtint", "white"}; private static final double[] B_MAXVALS = { 5, 10, 15, 20, 30, 40, 50, 60, 80 }; //}}} //{{{ Variable definitions //############################################################################## int colorIndex; double[] maxvals; String[] colors; //}}} //{{{ Constructor(s) //############################################################################## public BfactorCrayon() { this(B_MAXVALS, B_COLORS); } protected BfactorCrayon(double[] maxvals, String[] colors) { super(); if(maxvals.length+1 > colors.length) throw new IllegalArgumentException("Must have at least one more color than value-stop"); this.maxvals = (double[]) maxvals.clone(); this.colors = (String[]) colors.clone(); } //}}} //{{{ forAtom/Bond/Ribbon //############################################################################## public void forAtom(AtomState as) { setValue(as.getTempFactor()); } public void forBond(AtomState from, AtomState toward) { // Could do average of from + toward, could do max -- // but this way it works with half-bond coloring. setValue(from.getTempFactor()); } public void forRibbon(Tuple3 point, GuidePoint start, GuidePoint end, int interval, int nIntervals) { setValue(0); } // XXX-TODO: fix me! //}}} //{{{ setValue, getColor, getKinString //############################################################################## protected void setValue(double val) { for(colorIndex = 0; colorIndex < maxvals.length; colorIndex++) { if(maxvals[colorIndex] > val) break; } } public String getColor() { return colors[colorIndex]; } public String getKinString() { return getColor(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/crayons/ResColorMapCrayon.java0000644000000000000000000000641211531212776023401 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.crayons; import molikin.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * ResColorMapCrayon colors residues based on a lookup map. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 19 13:11:10 EDT 2006 */ public class ResColorMapCrayon extends AbstractCrayon implements AtomCrayon, BondCrayon, RibbonCrayon { //{{{ Constants static final String[] RAINBOW = { "blue", "sky", "cyan", "sea", "green", "lime", "yellow" ,"gold" ,"orange" ,"red" }; //}}} //{{{ Variable definitions //############################################################################## Map map; String color = null; //}}} //{{{ Constructor(s) //############################################################################## protected ResColorMapCrayon(Map map) { super(); this.map = map; } //}}} //{{{ forAtom/Bond/Ribbon, setColor //############################################################################## public void forAtom(AtomState as) { setColor(as.getResidue()); } public void forBond(AtomState from, AtomState toward) { setColor(from.getResidue()); } public void forRibbon(Tuple3 point, GuidePoint start, GuidePoint end, int interval, int nIntervals) { setColor(start.nextRes); } // good for proteins, off a bit for RNA/DNA private void setColor(Residue r) { this.color = (String) map.get(r); // it's OK for color to be null } //}}} //{{{ getColor, getKinString //############################################################################## public String getColor() { return color; } public String getKinString() { return color == null ? "" : color; } //}}} //{{{ newRainbow //############################################################################## /** * Creates a crayon that will rainbow color from N to C or from 5' to 3'. * Treats all the residues as one continuous chain for the purpose of * calculating coloring. * @param contigs a Collection<Collection<Residue>> */ public static ResColorMapCrayon newRainbow(Collection contigs) { int totalRes = 0; for(Iterator iter = contigs.iterator(); iter.hasNext(); ) totalRes += ((Collection) iter.next()).size(); int currRes = 0; // always < totalRes inside the inner loop Map map = new HashMap(); for(Iterator i = contigs.iterator(); i.hasNext(); ) { Collection contig = (Collection) i.next(); for(Iterator j = contig.iterator(); j.hasNext(); ) { Residue res = (Residue) j.next(); int colorIdx = (RAINBOW.length * currRes) / totalRes; map.put(res, RAINBOW[colorIdx]); currRes++; } } return new ResColorMapCrayon(map); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/crayons/OccupancyCrayon.java0000644000000000000000000000353711531212776023144 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.crayons; import molikin.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * OccupancyCrayon colors things by occupancy. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 19 13:12:13 EDT 2006 */ public class OccupancyCrayon extends BfactorCrayon { //{{{ Constants // Always need COLORS to be one longer than MAXVALS private static final String[] Q_COLORS = {"white", "lilactint", "lilac", "purple", "gray", "green"}; private static final double[] Q_MAXVALS = { 0.02, 0.33, 0.66, 0.99, 1.01 }; //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public OccupancyCrayon() { super(Q_MAXVALS, Q_COLORS); } //}}} //{{{ forAtom/Bond/Ribbon //############################################################################## public void forAtom(AtomState as) { setValue(as.getOccupancy()); } public void forBond(AtomState from, AtomState toward) { // Could do average of from + toward, could do max -- // but this way it works with half-bond coloring. setValue(from.getOccupancy()); } public void forRibbon(Tuple3 point, GuidePoint start, GuidePoint end, int interval, int nIntervals) { setValue(0); } // XXX-TODO: fix me! //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/crayons/HalfBondElementCrayon.java0000644000000000000000000000346511531212776024207 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.crayons; import molikin.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * HalfBondElementCrayon colors bonds by the atom elements, * to produce half-bond coloring. * Carbons are NOT assigned a color, to allow recoloring them by list color. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 19 13:12:08 EDT 2006 */ public class HalfBondElementCrayon extends AbstractCrayon implements BondCrayon { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## String color = null; boolean colorCarbons = false; //}}} //{{{ Constructor(s) //############################################################################## public HalfBondElementCrayon() { super(); } //}}} //{{{ forBond //############################################################################## public void forBond(AtomState from, AtomState toward) { String elem = from.getElement(); if(colorCarbons || !elem.equals("C")) this.color = Util.getElementColor(elem); else this.color = null; } //}}} //{{{ getColor, getKinString //############################################################################## public String getColor() { return color; } public String getKinString() { return (color == null ? "" : color); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/crayons/ConstCrayon.java0000644000000000000000000000375511531212776022310 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.crayons; import molikin.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * ConstCrayon is an Atom/BondCrayon that always returns the same * string, regardless of input. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Fri Sep 30 11:41:50 EDT 2005 */ public class ConstCrayon extends AbstractCrayon implements AtomCrayon, BondCrayon, RibbonCrayon { //{{{ Constants /** A crayon that always returns the empty string ("") */ public static final ConstCrayon NONE = new ConstCrayon(null); //}}} //{{{ Variable definitions //############################################################################## String kinString = null; String color = null; //}}} //{{{ Constructor(s) //############################################################################## public ConstCrayon(String color) { super(); this.color = color; } //}}} //{{{ getKinString, forAtom/Bond/Ribbon //############################################################################## public String getKinString() { if(kinString == null) kinString = super.getKinString(); return kinString; } public void forAtom(AtomState as) {} public void forBond(AtomState from, AtomState toward) {} public void forRibbon(Tuple3 point, GuidePoint start, GuidePoint end, int interval, int nIntervals) {} //}}} //{{{ get/setColor //############################################################################## public String getColor() { return color; } public void setColor(String s) { this.color = s; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/crayons/DisulfideCrayon.java0000644000000000000000000000322011531212776023115 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.crayons; import molikin.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * DisulfideCrayon colors Cys-S---S-Cys bonds yellow. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 19 13:11:10 EDT 2006 */ public class DisulfideCrayon extends AbstractCrayon implements BondCrayon { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## boolean isYellow; //}}} //{{{ Constructor(s) //############################################################################## public DisulfideCrayon() { super(); } //}}} //{{{ forBond //############################################################################## public void forBond(AtomState from, AtomState toward) { isYellow = from.getElement().equals("S") && toward.getElement().equals("S") && from.getResidue().getName().equals("CYS") && toward.getResidue().getName().equals("CYS"); } //}}} //{{{ getColor, getKinString //############################################################################## public String getColor() { return isYellow ? "yellow" : null; } public String getKinString() { return isYellow ? "yellow" : ""; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/crayons/ResTypeCrayon.java0000644000000000000000000001242611531212776022610 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.crayons; import molikin.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * ResTypeCrayon colors things by residue type (amino acid / base). * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 19 13:11:10 EDT 2006 */ public class ResTypeCrayon extends AbstractCrayon implements AtomCrayon, BondCrayon { //{{{ Constants private static Map resColors; //}}} //{{{ Variable definitions //############################################################################## boolean excludeMainchain = true; String color = null; //}}} //{{{ Constructor(s) //############################################################################## public ResTypeCrayon() { super(); } //}}} //{{{ forAtom/Bond, setColor //############################################################################## public void forAtom(AtomState as) { setColor(as); } public void forBond(AtomState from, AtomState toward) { setColor(from); } private void setColor(AtomState as) { if(excludeMainchain && Util.isMainchain(as)) { color = null; return; } if(resColors == null) //{{{ { resColors = new HashMap(); // From PKINCRTL.h // A type bases resColors.put(" A", "pink"); resColors.put("A ", "pink"); resColors.put(" DA", "pink"); resColors.put("ADE", "pink"); resColors.put("ATP", "pink"); resColors.put("ADP", "pink"); resColors.put("AMP", "pink"); resColors.put("1MA", "pink"); resColors.put("RIA", "pink"); resColors.put("T6A", "pink"); // T,U type bases resColors.put(" T", "sky"); resColors.put(" DT", "sky"); resColors.put("T ", "sky"); resColors.put("THY", "sky"); resColors.put("TTP", "sky"); resColors.put("TDP", "sky"); resColors.put("TMP", "sky"); resColors.put(" U", "sky"); resColors.put("U ", "sky"); resColors.put("URA", "sky"); resColors.put("URI", "sky"); resColors.put("UTP", "sky"); resColors.put("UDP", "sky"); resColors.put("UMP", "sky"); resColors.put("PSU", "sky"); resColors.put("4SU", "sky"); resColors.put("5MU", "sky"); resColors.put("H2U", "sky"); // G type bases resColors.put(" G", "sea"); resColors.put(" DG", "sea"); resColors.put("G ", "sea"); resColors.put("GUA", "sea"); resColors.put("GTP", "sea"); resColors.put("GDP", "sea"); resColors.put("GMP", "sea"); resColors.put("GSP", "sea"); resColors.put("1MG", "sea"); resColors.put("2MG", "sea"); resColors.put("M2G", "sea"); resColors.put("7MG", "sea"); resColors.put("OMG", "sea"); // C type bases resColors.put(" C", "yellow"); resColors.put(" DC", "yellow"); resColors.put("C ", "yellow"); resColors.put("CYT", "yellow"); resColors.put("CTP", "yellow"); resColors.put("CDP", "yellow"); resColors.put("CMP", "yellow"); resColors.put("5MC", "yellow"); resColors.put("OMC", "yellow"); // other bases resColors.put(" I", "white"); resColors.put("I ", "white"); resColors.put(" YG", "white"); resColors.put("YG ", "white"); // From PKINCSUB.c // Standard amino acids resColors.put("CYS", "yellow"); resColors.put("PRO", "hotpink"); resColors.put("GLY", "hotpink"); resColors.put("TYR", "sea"); resColors.put("PHE", "sea"); resColors.put("TRP", "sea"); resColors.put("LEU", "gold"); resColors.put("ILE", "gold"); resColors.put("VAL", "gold"); resColors.put("MET", "gold"); resColors.put("ALA", "gold"); resColors.put("SER", "cyan"); resColors.put("THR", "cyan"); resColors.put("GLN", "cyan"); resColors.put("ASN", "cyan"); resColors.put("LYS", "sky"); resColors.put("ARG", "sky"); resColors.put("HIS", "sky"); resColors.put("ASP", "pink"); resColors.put("GLU", "pink"); } //}}} this.color = (String) resColors.get(as.getResidue().getName()); // it's OK for color to be null } //}}} //{{{ getColor, getKinString //############################################################################## public String getColor() { return color; } public String getKinString() { return color == null ? "" : color; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/crayons/AltConfCrayon.java0000644000000000000000000000421211531212776022535 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.crayons; import molikin.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * AltConfCrayon puts in pointmasters for atoms with alt confs. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Thu Nov 10 10:50:17 EST 2005 */ public class AltConfCrayon extends AbstractCrayon implements AtomCrayon, BondCrayon { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## String altconf = null; //}}} //{{{ Constructor(s) //############################################################################## public AltConfCrayon() { super(); } //}}} //{{{ forAtom, forBond, getPointmasters //############################################################################## public void forAtom(AtomState as) { String alt = as.getAltConf(); if(alt.equals(" ")) altconf = null; else altconf = String.valueOf(Character.toLowerCase(alt.charAt(0))); } public void forBond(AtomState from, AtomState toward) { String altf = from.getAltConf(); String altt = toward.getAltConf(); if(altf.equals(" ")) { if(altt.equals(" ")) altconf = null; else altconf = String.valueOf(Character.toLowerCase(altt.charAt(0))); } else // altf != " " { if(altt.equals(" ")) altconf = String.valueOf(Character.toLowerCase(altf.charAt(0))); // From and Toward should never belong to two different, non-blank alts. // But just in case: else altconf = ""+Character.toLowerCase(altf.charAt(0))+Character.toLowerCase(altt.charAt(0)); } } public String getPointmasters() { return altconf; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/crayons/RotaramaCrayon.java0000644000000000000000000001207011531212776022756 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.crayons; import molikin.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * RotaramaCrayon colors things by rotamer/Ramachandran score. * *

Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
Begun on Thu Oct 19 13:12:08 EDT 2006 */ public class RotaramaCrayon extends AbstractCrayon implements AtomCrayon, BondCrayon, RibbonCrayon { //{{{ Constants // Always need COLORS to be one longer than MAXVALS private static final String[] R_COLORS = {"white", "yellowtint", "gold", "orange", "red", "hotpink", "magenta", "purple", "blue"}; private static final double[] R_MAXVALS = { 0.01, 0.02, 0.03, 0.04, 0.05, 0.06, 0.1, 0.25 }; //private static final String[] R_COLORS = {"white", "yellowtint", "yellow", "gold", "orange", "red", "hotpink", "magenta", "purple", "blue"}; //private static final double[] R_MAXVALS = { 0.01, 0.02, 0.05, 0.1, 0.2, 0.3, 0.4, 0.55, 0.7 }; //private static final String[] R_COLORS = {"hotpink", "red", "orange", "yellow", "green", "blue"}; //private static final double[] R_MAXVALS = { 0.1, 0.2, 0.3, 0.4, 0.5 }; //private static final String[] R_COLORS = {"white", "yellowtint", "yellow", "gold", "orange", "red", "hotpink", "magenta", "purple", "blue"}; //private static final double[] R_MAXVALS = { 0.1, 0.2, 0.3, 0.4, 0.55, 0.7, 0.8, 0.9, 0.99 }; //}}} //{{{ Variable definitions //############################################################################## int colorIndex; double[] maxvals; String[] colors; HashMap rota, rama; //}}} //{{{ Constructor(s) //############################################################################## // Useless! Has to be here to extend AbstractCrayon public RotaramaCrayon() { this(R_MAXVALS, R_COLORS, null, null); } // Useless! protected RotaramaCrayon(double[] maxvals, String[] colors) { this(maxvals, colors, null, null); } // Should actually get used public RotaramaCrayon(Map rota, Map rama) { this(R_MAXVALS, R_COLORS, rota, rama); } protected RotaramaCrayon(double[] maxvals, String[] colors, Map rota, Map rama) { super(); if(maxvals.length+1 > colors.length) throw new IllegalArgumentException("Must have at least one more color than value-stop"); this.maxvals = (double[]) maxvals.clone(); this.colors = (String[]) colors.clone(); this.rota = (HashMap) rota; this.rama = (HashMap) rama; } //}}} //{{{ forAtom/Bond/Ribbon //############################################################################## public void forAtom(AtomState as) { setValue(scoreForAtom(as)); } public void forBond(AtomState from, AtomState toward) { // Could do average of from + toward, could do max -- // but this way it works with half-bond coloring. setValue(scoreForAtom(from)); } public void forRibbon(Tuple3 point, GuidePoint start, GuidePoint end, int interval, int nIntervals) { setValue(0); } // XXX-TODO: fix me! //}}} //{{{ scoreForAtom //############################################################################## private double scoreForAtom(AtomState as) { if(rama == null || rota == null) throw new UnsupportedOperationException(); Atom a = as.getAtom(); if(a != null) { Residue r = a.getResidue(); if(r != null) { if(AminoAcid.isBackbone(a)) { if(rama.get(r) != null) return rama.get(r); else return Double.POSITIVE_INFINITY; // will use max color } else // assume sidechain { if(rota.get(r) != null) return rota.get(r); else return Double.POSITIVE_INFINITY; // will use max color } } else throw new UnsupportedOperationException(); } else throw new UnsupportedOperationException(); } //}}} //{{{ setValue, getColor, getKinString //############################################################################## protected void setValue(double val) { for(colorIndex = 0; colorIndex < maxvals.length; colorIndex++) { if(maxvals[colorIndex] > val) break; } } public String getColor() { return colors[colorIndex]; } public String getKinString() { return getColor(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/kingplugin/0000755000000000000000000000000011744306102017653 5ustar rootrootking-2.21.120420/molikin/src/molikin/kingplugin/MolikinWindow.java0000644000000000000000000001057411531212774023324 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.kingplugin; import molikin.gui.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.util.*; import king.*; import king.core.*; //}}} /** * MolikinWindow is the GUI for generating kinemages of * a particular CoordinateFile. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Wed Nov 9 13:54:38 EST 2005 */ public class MolikinWindow //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## ToolBox parent; KingMain kMain; KinCanvas kCanvas; ToolServices services; CoordinateFile coordFile; JFrame frame; MainGuiPane guiPane; int kinNumber = 1; //}}} //{{{ Constructor(s) //############################################################################## public MolikinWindow(ToolBox tb, CoordinateFile cfile) { super(); parent = tb; kMain = tb.kMain; kCanvas = tb.kCanvas; services = tb.services; coordFile = cfile; buildGUI(); } //}}} //{{{ buildGUI //############################################################################## void buildGUI() { guiPane = new MainGuiPane(coordFile); guiPane.weights(1,0).addCell(new JButton(new ReflectiveAction("Done", null, this, "onDone"))); guiPane.weights(0,0).addCell(new JButton(new ReflectiveAction("As new kinemage", null, this, "onCreateKinemage"))); guiPane.weights(0,0).addCell(new JButton(new ReflectiveAction("Append to current", null, this, "onAppendKinemage"))); String title = "Molikin"; if(coordFile.getFile() != null) title = coordFile.getFile().getName()+" - "+title; else if(coordFile.getIdCode() != null) title = coordFile.getIdCode()+" - "+title; frame = new JFrame(title); frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); frame.setContentPane(guiPane); frame.pack(); // Position this window just right of the main window, // so we can find it again after creating a kinemage. Container w = kMain.getContentContainer(); if(w != null) { Point p = w.getLocation(); Dimension dimDlg = frame.getSize(); Dimension dimWin = w.getSize(); //p.x += dimWin.width - (dimDlg.width / 2) ; p.x += dimWin.width - dimDlg.width + 64; p.y += (dimWin.height - dimDlg.height) / 2; frame.setLocation(p); } // Key bindings: just type the key to execute -- DAK 100515 InputMap im = frame.getRootPane().getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW); im.put(KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0), "done"); ActionMap am = frame.getRootPane().getActionMap(); am.put("done", new ReflectiveAction(null, null, this, "onDone")); frame.setVisible(true); } public void onCreateKinemage(ActionEvent ev) { buildKinemage(null); } public void onAppendKinemage(ActionEvent ev) { Kinemage kin = kMain.getKinemage(); // could be null buildKinemage(kin); if(kin != null) kin.setModified(true); } public void onDone(ActionEvent ev) { frame.dispose(); } //}}} //{{{ buildKinemage //############################################################################## void buildKinemage(Kinemage appendTo) { StreamTank kinData = new StreamTank(); PrintWriter out = new PrintWriter(new OutputStreamWriter(kinData)); out.println("@kinemage "+(kinNumber++)); out.println("@onewidth"); guiPane.printKinemage(out); out.flush(); kinData.close(); kMain.getKinIO().loadStream(kinData.getInputStream(), kinData.size(), appendTo); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/kingplugin/MolikinPlugin.java0000644000000000000000000001533311531212774023311 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.kingplugin; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.util.*; import king.*; //}}} /** * MolikinPlugin allows users to "open" PDB and mmCIF files * from KiNG directly, rather than going thru Prekin. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Wed Nov 9 13:54:31 EST 2005 */ public class MolikinPlugin extends king.Plugin { //{{{ Constants //}}} //{{{ CLASS: CoordFileOpen //############################################################################## private class CoordFileOpen implements FileDropHandler.Listener { public String toString() { return "Open the file in Molikin"; } public boolean canHandleDroppedFile(File file) { return pdbFilter.accept(file) || cifFilter.accept(file); } public void handleDroppedFile(File f) { try { if(pdbFilter.accept(f)) doPDB(f); else if(cifFilter.accept(f)) doCIF(f); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ Variable definitions //############################################################################## SuffixFileFilter pdbFilter, cifFilter, allFilter; JFileChooser openChooser; JFrame frame; //}}} //{{{ Constructor(s) //############################################################################## public MolikinPlugin(ToolBox tb) { super(tb); buildFilter(); if (kMain.getApplet() == null) { buildFileChooser(); } kMain.getFileDropHandler().addFileDropListener(new CoordFileOpen()); } //}}} //{{{ buildFilter //############################################################################## public void buildFilter() { allFilter = CoordinateFile.getCoordFileFilter(); pdbFilter = CoordinateFile.getPdbFileFilter(); cifFilter = CoordinateFile.getCifFileFilter(); } //}}} //{{{ buildFileChooser //################################################################################################## /** Constructs the Open file chooser */ private void buildFileChooser() { String currdir = System.getProperty("user.dir"); openChooser = new JFileChooser(); openChooser.addChoosableFileFilter(allFilter); openChooser.addChoosableFileFilter(pdbFilter); openChooser.addChoosableFileFilter(cifFilter); openChooser.setFileFilter(allFilter); if(currdir != null) openChooser.setCurrentDirectory(new File(currdir)); } //}}} //{{{ onOpenFile, doPDB/CIF //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onOpenFile(ActionEvent ev) { // Open the new file String currdir = System.getProperty("user.dir"); if(currdir != null) openChooser.setCurrentDirectory(new File(currdir)); if(JFileChooser.APPROVE_OPTION == openChooser.showOpenDialog(kMain.getTopWindow())) { try { File f = openChooser.getSelectedFile(); if(f != null && f.exists()) { //if(pdbFilter.accept(f)) doPDB(f); if(cifFilter.accept(f)) doCIF(f); else doPDB(f); System.setProperty("user.dir", f.getAbsolutePath()); //else throw new IOException("Can't identify file type"); } } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } } void doPDB(File f) throws IOException { PdbReader pdbReader = new PdbReader(); CoordinateFile coordFile = pdbReader.read(f); new MolikinWindow(this.parent, coordFile); } void doCIF(File f) throws IOException { CifReader cifReader = new CifReader(); CoordinateFile coordFile = cifReader.read(f); new MolikinWindow(this.parent, coordFile); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ toString, getToolsMenuItem //################################################################################################## public String toString() { return "Molecules (PDB, mmCIF)"; } /** * Creates a new JMenuItem to be displayed in the Tools menu, * which will allow the user to access function(s) associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several functionalities under it. * * The Plugin may return null to indicate that it has no * associated menu item. */ public JMenuItem getToolsMenuItem() { JMenuItem item = new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onOpenFile")); item.setMnemonic(KeyEvent.VK_I); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, kMain.MENU_ACCEL_MASK)); return item; } //}}} //{{{ getHelpURL, getHelpAnchor //################################################################################################## /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { return null; // until we document this... /*URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null;*/ } /** * Returns an anchor marking a place within king-manual.html * that is the help for this plugin. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#edmap-plugin" (or null) */ public String getHelpAnchor() { return null; } //}}} }//class king-2.21.120420/molikin/src/molikin/kingplugin/QuickinPlugin.java0000644000000000000000000004115611531212774023314 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.kingplugin; import molikin.logic.*; import molikin.*; import king.*; import king.core.*; import molikin.gui.*; import driftwood.moldb2.*; import driftwood.util.*; import driftwood.gui.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.net.*; //}}} /** * QuickinPlugin is a tool for quickly generating kinemages of * a particular CoordinateFile in KiNG. * *

Copyright (C) 2009 by Vincent B. Chen. All rights reserved. *
Begun on Tue Feb 9 13:37:31 EST 2009 **/ public class QuickinPlugin extends king.Plugin { //{{{ Constants //}}} //{{{ CLASS: CoordFileOpen //############################################################################## private class CoordFileOpen implements FileDropHandler.Listener { String menuText; Logic logic; boolean append; public CoordFileOpen(String text, Logic log, boolean app) { menuText = text; logic = log; append = app; } public String toString() { return menuText; } public boolean canHandleDroppedFile(File file) { return pdbFilter.accept(file) || cifFilter.accept(file); } public void handleDroppedFile(File f) { try { CoordinateFile coordFile = null; if(pdbFilter.accept(f)) coordFile = Quickin.readPDB(f); else if(cifFilter.accept(f)) coordFile = Quickin.readCIF(f); if (logic instanceof RibbonLogic) { ((RibbonLogic)logic).secondaryStructure = coordFile.getSecondaryStructure(); } Kinemage kin = null; if(append) kin = kMain.getKinemage(); buildKinemage(kin, coordFile, logic); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ Variables int kinNumber = 1; SuffixFileFilter pdbFilter, cifFilter, allFilter; JFileChooser openChooser; //}}} //{{{ Constructors public QuickinPlugin(ToolBox tb) { super(tb); buildFilter(); if (kMain.getApplet() == null) { buildFileChooser(); } //kMain.getFileDropHandler().addFileDropListener(new CoordFileOpen("Make lots kinemage", Quickin.getLotsLogic(true))); //BallAndStickLogic logic = Quickin.getLotsLogic(true); //logic.doMainchain = false; //logic.doSidechains = false; //logic.doHydrogens = false; //kMain.getFileDropHandler().addFileDropListener(new CoordFileOpen("Make virtual backbone kinemage", logic)); //kMain.getFileDropHandler().addFileDropListener(new CoordFileOpen("Make ribbons kinemage", Quickin.getRibbonLogic())); kMain.getFileDropHandler().addFileDropListener(new CoordFileOpen("Lots - new kinemage", Quickin.getLotsLogic(true), false)); kMain.getFileDropHandler().addFileDropListener(new CoordFileOpen("Lots - append to current", Quickin.getLotsLogic(true), true)); BallAndStickLogic logic = Quickin.getLotsLogic(true); logic.doMainchain = false; logic.doSidechains = false; logic.doHydrogens = false; kMain.getFileDropHandler().addFileDropListener(new CoordFileOpen("Virtual backbone - new kinemage", logic, false)); kMain.getFileDropHandler().addFileDropListener(new CoordFileOpen("Virtual backbone - append to current", logic, true)); kMain.getFileDropHandler().addFileDropListener(new CoordFileOpen("Ribbons - new kinemage" , Quickin.getRibbonLogic(), false)); kMain.getFileDropHandler().addFileDropListener(new CoordFileOpen("Ribbons - append to current", Quickin.getRibbonLogic(), true)); } //}}} //{{{ buildFilter public void buildFilter() { allFilter = CoordinateFile.getCoordFileFilter(); pdbFilter = CoordinateFile.getPdbFileFilter(); cifFilter = CoordinateFile.getCifFileFilter(); } //}}} //{{{ buildFileChooser //################################################################################################## /** Constructs the Open file chooser */ private void buildFileChooser() { String currdir = System.getProperty("user.dir"); openChooser = new JFileChooser(); openChooser.addChoosableFileFilter(allFilter); openChooser.addChoosableFileFilter(pdbFilter); openChooser.addChoosableFileFilter(cifFilter); openChooser.setFileFilter(allFilter); if(currdir != null) openChooser.setCurrentDirectory(new File(currdir)); } //}}} //{{{ on___ public void onLotsNew(ActionEvent ev) { CoordinateFile coordFile = onOpenFile(); if (coordFile != null) { buildKinemage(null, coordFile, Quickin.getLotsLogic()); //logic.printKinemage(out, m, residues, pdbId, bbColor); } } public void onLotsAppend(ActionEvent ev) { CoordinateFile coordFile = onOpenFile(); if (coordFile != null) { buildKinemage(kMain.getKinemage(), coordFile, Quickin.getLotsLogic()); //logic.printKinemage(out, m, residues, pdbId, bbColor); } } public void onRibbonsNew(ActionEvent ev) { CoordinateFile coordFile = onOpenFile(); if (coordFile != null) { RibbonLogic logic = Quickin.getRibbonLogic(); logic.secondaryStructure = coordFile.getSecondaryStructure(); buildKinemage(null, coordFile, logic); } } public void onRibbonsAppend(ActionEvent ev) { CoordinateFile coordFile = onOpenFile(); if (coordFile != null) { RibbonLogic logic = Quickin.getRibbonLogic(); logic.secondaryStructure = coordFile.getSecondaryStructure(); buildKinemage(kMain.getKinemage(), coordFile, logic); } } public void onVirtualNew(ActionEvent ev) { CoordinateFile coordFile = onOpenFile(); if (coordFile != null) { BallAndStickLogic logic = Quickin.getLotsLogic(); logic.doVirtualBB = true; logic.doMainchain = false; logic.doSidechains = false; logic.doHydrogens = false; buildKinemage(null, coordFile, logic); } } public void onVirtualAppend(ActionEvent ev) { CoordinateFile coordFile = onOpenFile(); if (coordFile != null) { BallAndStickLogic logic = Quickin.getLotsLogic(); logic.doVirtualBB = true; logic.doMainchain = false; logic.doSidechains = false; logic.doHydrogens = false; buildKinemage(kMain.getKinemage(), coordFile, logic); } } public void onResidueNew(ActionEvent ev) { CoordinateFile coordFile = onOpenFile(); if (coordFile != null) { BallAndStickLogic logic = Quickin.getLotsLogic(); logic.doHydrogens = false; logic.colorBy = BallAndStickLogic.COLOR_BY_RES_TYPE; buildKinemage(null, coordFile, logic); } } public void onResidueAppend(ActionEvent ev) { CoordinateFile coordFile = onOpenFile(); if (coordFile != null) { BallAndStickLogic logic = Quickin.getLotsLogic(); logic.doHydrogens = false; logic.colorBy = BallAndStickLogic.COLOR_BY_RES_TYPE; buildKinemage(kMain.getKinemage(), coordFile, logic); } } public void onRibbonLotsNew(ActionEvent ev) { CoordinateFile coordFile = onOpenFile(); if (coordFile != null) { Logic[] logicList = new Logic[2]; logicList[0] = Quickin.getLotsLogic(); logicList[1] = Quickin.getRibbonLogic(); ((RibbonLogic)logicList[1]).secondaryStructure = coordFile.getSecondaryStructure(); buildKinemage(null, coordFile, logicList); } } public void onRibbonLotsAppend(ActionEvent ev) { CoordinateFile coordFile = onOpenFile(); if (coordFile != null) { Logic[] logicList = new Logic[2]; logicList[0] = Quickin.getLotsLogic(); logicList[1] = Quickin.getRibbonLogic(); ((RibbonLogic)logicList[1]).secondaryStructure = coordFile.getSecondaryStructure(); buildKinemage(kMain.getKinemage(), coordFile, logicList); } } //}}} //{{{ onOpenFile, readPDB/CIF //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public CoordinateFile onOpenFile() { // Open the new file if(JFileChooser.APPROVE_OPTION == openChooser.showOpenDialog(kMain.getTopWindow())) { try { File f = openChooser.getSelectedFile(); if(f != null && f.exists()) { //if(pdbFilter.accept(f)) doPDB(f); if(cifFilter.accept(f)) return Quickin.readCIF(f); else return Quickin.readPDB(f); //else throw new IOException("Can't identify file type"); } } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } return null; } public CoordinateFile readPDB(InputStream f) throws IOException { PdbReader pdbReader = new PdbReader(); CoordinateFile coordFile = pdbReader.read(f); return coordFile; } public CoordinateFile readCIF(InputStream f) throws IOException { CifReader cifReader = new CifReader(); CoordinateFile coordFile = cifReader.read(f); return coordFile; } //}}} //{{{ loadFileFromCmdline /** Plugins that can work on files from the king cmdline should overwrite this function */ public void loadFileFromCmdline(ArrayList files, ArrayList args) { for (File f : files) { try { CoordinateFile coordFile = null; if(pdbFilter.accept(f)) coordFile = Quickin.readPDB(f); else if(cifFilter.accept(f)) coordFile = Quickin.readCIF(f); if (coordFile != null) { Logic[] logicList = new Logic[2]; logicList[0] = Quickin.getLotsLogic(); logicList[1] = Quickin.getRibbonLogic(); ((RibbonLogic)logicList[1]).secondaryStructure = coordFile.getSecondaryStructure(); Kinemage kin = null; if (args.contains("-merge")||args.contains("-m")) { kin = kMain.getKinemage(); } buildKinemage(kin, coordFile, logicList); } } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ loadFromURL public void loadFromURL(URL url) { String fName = null; try { fName = url.getFile(); URLConnection uconn = url.openConnection(); uconn.setAllowUserInteraction(false); uconn.connect(); int urlSize = uconn.getContentLength(); //System.out.println(urlSize); SuffixFileFilter gzipFilter = new SuffixFileFilter("GZipped files"); gzipFilter.addSuffix(".gz"); CoordinateFile coordFile = null; if(pdbFilter.accept(fName)) coordFile = readPDB(uconn.getInputStream()); else if(cifFilter.accept(fName)) coordFile = readCIF(uconn.getInputStream()); int maxSize = 5000000; if (gzipFilter.accept(fName)) maxSize = 1000000; if (coordFile != null) { if (urlSize < maxSize) { Logic[] logicList = new Logic[2]; logicList[0] = Quickin.getLotsLogic(); logicList[1] = Quickin.getRibbonLogic(); ((RibbonLogic)logicList[1]).secondaryStructure = coordFile.getSecondaryStructure(); buildKinemage(null, coordFile, logicList); } else { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Your input file may have been truncated for display in this applet due to limited memory. If you see less of the structure\nthan you expect, try increasing the amount of memory available for Java applets or download the standalone version of KiNG.", "Warning", JOptionPane.WARNING_MESSAGE); RibbonLogic ribbon = Quickin.getRibbonLogic(); ribbon.secondaryStructure = coordFile.getSecondaryStructure(); buildKinemage(null, coordFile, new Logic[] {ribbon}, 5); } } //loadStream(uconn.getInputStream(), uconn.getContentLength()); // Execution halts here until ioException() // or loadingComplete() closes the dialog. } catch(IOException ex) { ex.printStackTrace(SoftLog.err); JOptionPane.showMessageDialog(kMain.getTopWindow(), "The file '"+fName+"'\ncould not be opened due to an exception:\n"+ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); } } /** Like loadFile, but it takes an InputStream. */ public void loadStream(InputStream in, int dataLen) { //mergeTarget = kin; //new KinfileLoader(in, this); //progBar.setMaximum(dataLen); //progBar.setValue(0); // //progDialog.pack(); //progDialog.setLocationRelativeTo(kMain.getTopWindow()); //progDialog.setVisible(true); // Execution halts here until ioException() // or loadingComplete() closes the dialog. } //}}} //{{{ buildKinemage //############################################################################## void buildKinemage(Kinemage appendTo, CoordinateFile coordFile, Logic logic) { buildKinemage(appendTo, coordFile, new Logic[] {logic}); } void buildKinemage(Kinemage appendTo, CoordinateFile coordFile, Logic[] logiclist) { buildKinemage(appendTo, coordFile, logiclist, coordFile.getModels().size()); } void buildKinemage(Kinemage appendTo, CoordinateFile coordFile, Logic[] logiclist, int numModels) { StreamTank kinData = new StreamTank(); PrintWriter out = new PrintWriter(new OutputStreamWriter(kinData)); out.println("@kinemage "+(kinNumber++)); out.println("@onewidth"); Quickin.printKinemage(out, coordFile, logiclist, numModels); coordFile = null; // hopefully to save memory? out.flush(); kinData.close(); kMain.getKinIO().loadStream(kinData.getInputStream(), kinData.size(), appendTo); } //}}} //{{{ toString, getToolsMenuItem //################################################################################################## public String toString() { return "To quick kin..."; } /** * Creates a new JMenuItem to be displayed in the Tools menu, * which will allow the user to access function(s) associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several functionalities under it. * * The Plugin may return null to indicate that it has no * associated menu item. */ public JMenuItem getToolsMenuItem() { JMenu menu = new JMenu(this.toString()); JMenuItem item = new JMenuItem(new ReflectiveAction("Lots (mc,sc,H) - new", null, this, "onLotsNew")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Lots (mc,sc,H) - append", null, this, "onLotsAppend")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Ribbons - new", null, this, "onRibbonsNew")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Ribbons - append", null, this, "onRibbonsAppend")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Virtual Backbone - new", null, this, "onVirtualNew")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Virtual Backbone - append", null, this, "onVirtualAppend")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Separate Res - new", null, this, "onResidueNew")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Separate Res - append", null, this, "onResidueAppend")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Lots+Ribbons - new", null, this, "onRibbonLotsNew")); menu.add(item); item = new JMenuItem(new ReflectiveAction("Lots+Ribbons - append", null, this, "onRibbonLotsAppend")); menu.add(item); return menu; } //}}} //{{{ getHelpURL, getHelpAnchor //################################################################################################## /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { return null; // until we document this... /*URL url = getClass().getResource("/extratools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null;*/ } /** * Returns an anchor marking a place within king-manual.html * that is the help for this plugin. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#edmap-plugin" (or null) */ public String getHelpAnchor() { return null; } //}}} } king-2.21.120420/molikin/src/molikin/Cmdliner.java0000644000000000000000000001077611531212776020126 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; import molikin.logic.*; import molikin.kingplugin.*; import molikin.gui.*; import driftwood.moldb2.*; import driftwood.util.*; import driftwood.gui.*; import java.util.*; import java.awt.event.*; import javax.swing.*; import java.io.*; import java.net.*; //}}} /** * Cmdliner is for generating kins quickly on the cmdline. * *

Copyright (C) 2009 by Vincent B. Chen. All rights reserved. *
Begun on Fri Feb 20 18:15:54 EST 2009 **/ public class Cmdliner { //{{{ Constants //}}} //{{{ Variables int kinNumber = 1; SuffixFileFilter pdbFilter, cifFilter, allFilter; ArrayList filesToOpen; ArrayList logics; int numModels = -1; //}}} //{{{ Constructors public Cmdliner() { buildFileChooser(); } //}}} //{{{ buildFileChooser //################################################################################################## /** Constructs the Open file chooser */ private void buildFileChooser() { allFilter = CoordinateFile.getCoordFileFilter(); pdbFilter = CoordinateFile.getPdbFileFilter(); cifFilter = CoordinateFile.getCifFileFilter(); } //}}} //{{{ onOpenFile, readPDB/CIF //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onOpenFiles() { for (File f : filesToOpen) { try { CoordinateFile coords = null; if(cifFilter.accept(f)) coords = Quickin.readCIF(f); else coords = Quickin.readPDB(f); if (coords != null) { Logic[] logicList; if ((logics != null) && logics.size() > 0) { logicList = new Logic[logics.size()]; int i = 0; for (Logic l : logics) { if (l instanceof RibbonLogic) ((RibbonLogic)l).secondaryStructure = coords.getSecondaryStructure(); logicList[i] = l; i++; } } else { logicList = new Logic[2]; logicList[0] = Quickin.getLotsLogic(); logicList[1] = Quickin.getRibbonLogic(); ((RibbonLogic)logicList[1]).secondaryStructure = coords.getSecondaryStructure(); } buildKinemage(coords, logicList); } } catch(IOException ex) { System.err.println("An I/O error occurred while loading the file:\n"+ex.getMessage()); ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ buildKinemage //############################################################################## void buildKinemage(CoordinateFile coordFile, Logic logic) { buildKinemage(coordFile, new Logic[] {logic}); } void buildKinemage(CoordinateFile coordFile, Logic[] logiclist) { System.out.println("@kinemage "+(kinNumber++)); System.out.println("@onewidth"); PrintWriter out = new PrintWriter(System.out); if (numModels == -1) Quickin.printKinemage(out, coordFile, logiclist); else Quickin.printKinemage(out, coordFile, logiclist, numModels); out.flush(); out.close(); coordFile = null; } //}}} public static void main(String[] args) { new Cmdliner().Main(args); } public void Main(String[] args) { parseArguments(args); onOpenFiles(); } //{{{ parseArguments //################################################################################################## // Interpret command-line arguments void parseArguments(String[] args) { filesToOpen = new ArrayList(); logics = new ArrayList(); String arg; for(int i = 0; i < args.length; i++) { arg = args[i]; // this is an option if(arg.startsWith("-")) { if(arg.equals("-h") || arg.equals("-help")) { SoftLog.err.println("Help not available. Sorry!"); System.exit(0); } else if(arg.equals("-l") || arg.equals("-lots")) { logics.add(Quickin.getLotsLogic()); } else if(arg.equals("-r") || arg.equals("-ribbons")) { logics.add(Quickin.getRibbonLogic()); } else if(arg.equals("-single")) { numModels = 1; } else { System.err.println("*** Unrecognized option: "+arg); } } // this is a file, etc. else { filesToOpen.add(new File(arg)); } } } //}}} } king-2.21.120420/molikin/src/molikin/AtomCrayon.java0000644000000000000000000000106711531212776020436 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: package molikin; import driftwood.moldb2.*; /** * AtomCrayon allows for customizing the rendering of kinemage * point-like objects on a per-AtomState basis. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Fri Sep 30 11:27:47 EDT 2005 */ public interface AtomCrayon extends Crayon { /** * Customizes the rendering of a kinemage point. * @param as the AtomState being represented at this point */ public void forAtom(AtomState as); }//class king-2.21.120420/molikin/src/molikin/gui/0000755000000000000000000000000011744306102016270 5ustar rootrootking-2.21.120420/molikin/src/molikin/gui/VanDerWaalsPane.java0000644000000000000000000001224111531212772022111 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.gui; import molikin.*; import molikin.crayons.*; import molikin.logic.VanDerWaalsLogic; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.data.*; import driftwood.gui.*; import driftwood.moldb2.*; //}}} /** * VanDerWaalsPane is the UI "page" for VDW drawings * of macromolecular structures. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 5 10:58:41 EDT 2005 */ public class VanDerWaalsPane extends TablePane2 implements DrawingPane { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## CoordinateFile coordFile; String title; SelectorPane selector; JCheckBox cbProtein, cbNucleic, cbHets, cbMetals, cbWater; JCheckBox cbMainchain, cbSidechains, cbHydrogens, cbUseSpheres; JComboBox cmColorBy; //}}} //{{{ Constructor(s) //############################################################################## public VanDerWaalsPane(CoordinateFile cfile, String title) { super(); this.coordFile = cfile; this.title = title; buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { selector = new SelectorPane(coordFile); cbProtein = new JCheckBox("protein", true); cbNucleic = new JCheckBox("nucleic acids", true); cbHets = new JCheckBox("hets (non-water)", true); cbMetals = new JCheckBox("metals/ions", true); cbWater = new JCheckBox("water", false); cbMainchain = new JCheckBox("mainchain", true); cbSidechains = new JCheckBox("sidechains", true); cbHydrogens = new JCheckBox("hydrogens", true); cbUseSpheres = new JCheckBox("use spheres?", false); cmColorBy = new JComboBox(new Object[] { VanDerWaalsLogic.COLOR_BY_ELEMENT, VanDerWaalsLogic.COLOR_BY_RES_TYPE, VanDerWaalsLogic.COLOR_BY_B_FACTOR, VanDerWaalsLogic.COLOR_BY_OCCUPANCY }); this.hfill(true).vfill(true).addCell(selector, 2, 1).newRow(); this.weights(1,0).memorize(); this.addCell(this.strut(0,6)).newRow(); this.startSubtable(2,1); this.weights(0,0).memorize(); this.addCell(new JLabel("Color by")).addCell(cmColorBy); this.endSubtable(); this.addCell(this.strut(0,6)).newRow(); this.addCell(cbProtein).addCell(cbMainchain).newRow(); this.addCell(cbNucleic).addCell(cbSidechains).newRow(); this.addCell(cbHets).addCell(cbHydrogens).newRow(); this.addCell(cbMetals).skip().newRow(); this.addCell(cbWater).addCell(cbUseSpheres).newRow(); this.setBorder( BorderFactory.createTitledBorder(null, "van der Waals") ); } //}}} //{{{ toString, getSelectedModels, getSelectedChains //############################################################################## public String toString() { return this.title; } /** As a Collection of Model objects. */ public Collection getSelectedModels() { return selector.getSelectedModels(); } /** As a Collection of Strings representing chain IDs. */ public Collection getSelectedChains() { return selector.getSelectedChains(); } //}}} //{{{ printKinemage //############################################################################## /** Emits the kinemage (text) representation as selected by the user */ public void printKinemage(PrintWriter out, Model m, String chainID, String pdbId, String bbColor) { Collection models = selector.getSelectedModels(); if(!models.contains(m)) return; Collection chains = selector.getSelectedChains(); if(!chains.contains(chainID)) return; Collection chainRes = m.getChain(chainID); if(chainRes == null) return; Set residues = selector.getSelectedResidues(chainRes); if(residues.size() == 0) return; VanDerWaalsLogic logic = new VanDerWaalsLogic(); logic.doProtein = this.cbProtein.isSelected(); logic.doNucleic = this.cbNucleic.isSelected(); logic.doHets = this.cbHets.isSelected(); logic.doMetals = this.cbMetals.isSelected(); logic.doWater = this.cbWater.isSelected(); logic.doMainchain = this.cbMainchain.isSelected(); logic.doSidechains = this.cbSidechains.isSelected(); logic.doHydrogens = this.cbHydrogens.isSelected(); logic.doUseSpheres = this.cbUseSpheres.isSelected(); logic.colorBy = this.cmColorBy.getSelectedItem(); logic.printKinemage(out, m, residues, pdbId, bbColor); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/gui/MainGuiPane.java0000644000000000000000000002573311531212772021305 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.gui; import molikin.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.data.*; import driftwood.gui.*; import driftwood.moldb2.*; //}}} /** * MainGuiPane sets up the main GUI window. All a client needs to do * is add() some buttons and listen for them to be pressed! * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Mon Oct 17 11:57:01 EDT 2005 */ public class MainGuiPane extends TablePane2 implements ListSelectionListener { //{{{ Constants public static final String[] BACKBONE_COLORS = { "white", "yellowtint", "peachtint", "greentint", "bluetint", "lilactint", "pinktint" }; //}}} //{{{ Variable definitions //############################################################################## /** * The list of current drawing panels (ball and stick, CPK, ribbon, etc.) * Add yourself as a listener if you need to know when the user switches. */ public JList drawingPaneList; CardLayout drawingCards; JPanel drawingPanel; CoordinateFile coordFile; String idCode; int paneNumber = 1; Collection paneListData; // holds DrawingPane objects Icon greenPlus, redMinus; //}}} //{{{ Constructor(s) //############################################################################## public MainGuiPane(CoordinateFile cFile) { super(); this.coordFile = cFile; this.paneListData = new ArrayList(); if(coordFile.getIdCode() != null) this.idCode = coordFile.getIdCode(); else if(coordFile.getFile() != null) this.idCode = coordFile.getFile().getName(); else this.idCode = "macromol"; buildGUI(); onNewBallAndStick(null); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { greenPlus = new ImageIcon(getClass().getResource("greenplus.png")); redMinus = new ImageIcon(getClass().getResource("redminus.png")); drawingPaneList = new FatJList(0, 10); drawingPaneList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); drawingPaneList.setVisibleRowCount(8); drawingPaneList.addListSelectionListener(this); drawingCards = new CardLayout(); drawingPanel = new JPanel(drawingCards); JButton ballAndStick = new JButton(new ReflectiveAction("Ball & stick", greenPlus, this, "onNewBallAndStick")); ballAndStick.setHorizontalAlignment(JButton.LEFT); JButton vanDerWaals = new JButton(new ReflectiveAction("van der Waals", greenPlus, this, "onNewVanDerWaals")); vanDerWaals.setHorizontalAlignment(JButton.LEFT); JButton ribbons = new JButton(new ReflectiveAction("Ribbons", greenPlus, this, "onNewRibbons")); ribbons.setHorizontalAlignment(JButton.LEFT); JButton removePane = new JButton(new ReflectiveAction("Selected", redMinus, this, "onRemovePane")); removePane.setHorizontalAlignment(JButton.LEFT); JButton removeAll = new JButton(new ReflectiveAction("All", redMinus, this, "onRemoveAll")); removeAll.setHorizontalAlignment(JButton.LEFT); String bugReporting = "Doesn't work? Send the PDB/CIF file, the kinemage, and a description of your problem to vbc3@duke.edu"; final int insetSize = 10; this.insets(insetSize).memorize(); // The HTML helps with word wrapping... (maybe) this.addCell(new JLabel(""+bugReporting+""), 3, 1).newRow(); this.weights(0,1).startSubtable(); this.insets(insetSize).hfill(true).weights(1,0).memorize(); this.addCell(ballAndStick).newRow(); this.addCell(vanDerWaals).newRow(); this.addCell(ribbons).newRow(); this.addCell(removePane).newRow(); this.addCell(removeAll).newRow(); // This acts as "glue" at the bottom to absorb all the extra space. // The result? All the buttons float to the top of the space! this.weights(1,1).addCell( this.strut(0,0) ); this.endSubtable(); this.weights(0,1).vfill(true).addCell(new JScrollPane(drawingPaneList)); this.hfill(true).vfill(true).addCell(drawingPanel); // Space underneath for client buttons: this.newRow(); //this.skip(); //this.skip(); this.startSubtable(3,1); this.insets(insetSize).memorize(); //this.right().addCell(new JButton("Fake OK btn")); } //}}} //{{{ packParent, valueChanged (for ListSelectionListener) //############################################################################## /** * Causes the window/dialog/etc that contains this component * to be resized and laid out again, * assuming some of its children have been invalidated. */ void packParent() { // Find the top-level ancestor of this component, // and cause it to be laid out again. Container parent = this; while((parent = parent.getParent()) != null) { if(parent instanceof Window) { ((Window)parent).pack(); break; } } } public void valueChanged(ListSelectionEvent ev) { if(!drawingPaneList.getValueIsAdjusting()) { Object selected = drawingPaneList.getSelectedValue(); if(selected != null) drawingCards.show(drawingPanel, selected.toString()); } } //}}} //{{{ add/removeDrawingPane, onRemovePane, onRemoveAll //############################################################################## void addDrawingPane(DrawingPane pane) { drawingPanel.add( (Component)pane, pane.toString() ); paneListData.add(pane); drawingPaneList.setListData( paneListData.toArray() ); drawingPaneList.setSelectedValue(pane, true); packParent(); } void removeDrawingPane(DrawingPane pane) { drawingPanel.remove( (Component)pane ); paneListData.remove(pane); Object sel = drawingPaneList.getSelectedValue(); drawingPaneList.setListData( paneListData.toArray() ); drawingPaneList.setSelectedValue(sel, true); //packParent(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRemovePane(ActionEvent ev) { removeDrawingPane( (DrawingPane)drawingPaneList.getSelectedValue() ); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRemoveAll(ActionEvent ev) { // Make a copy or we get ConcurrentModEx Collection panes = new ArrayList(paneListData); for(Iterator iter = panes.iterator(); iter.hasNext(); ) { DrawingPane pane = (DrawingPane) iter.next(); removeDrawingPane( pane ); } } //}}} //{{{ onNewBallAndStick, onNewVanDerWaals //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onNewBallAndStick(ActionEvent ev) { addDrawingPane(new BallAndStickPane(coordFile, (paneNumber++)+" - Ball & stick")); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onNewVanDerWaals(ActionEvent ev) { addDrawingPane(new VanDerWaalsPane(coordFile, (paneNumber++)+" - van der Waals")); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onNewRibbons(ActionEvent ev) { addDrawingPane(new RibbonPane(coordFile, (paneNumber++)+" - Ribbons")); } //}}} //{{{ printKinemage //############################################################################## /** Emits the kinemage (text) representation as selected by the user */ public void printKinemage(PrintWriter out) { Collection models = this.getSelectedModels(); boolean groupByModel = (models.size() > 1); Collection chains = this.getSelectedChains(); int modelCount = 0; for(Iterator mi = models.iterator(); mi.hasNext(); modelCount++) { Model m = (Model) mi.next(); if(groupByModel) out.println("@group {"+idCode+" "+m+"} dominant animate master= {all models}"); int chainCount = 0; for(Iterator ci = chains.iterator(); ci.hasNext(); chainCount++) { String chainID = (String) ci.next(); if (m.getChain(chainID)!=null) { if(groupByModel) out.println("@subgroup {chain"+chainID+"} dominant master= {chain"+chainID+"}"); else out.println("@group {"+idCode+" "+chainID+"} dominant"); for(Iterator iter = paneListData.iterator(); iter.hasNext(); ) { DrawingPane p = (DrawingPane) iter.next(); String bbColor = BACKBONE_COLORS[ (groupByModel ? modelCount : chainCount) % BACKBONE_COLORS.length]; p.printKinemage(out, m, chainID, idCode, bbColor); } } } } out.flush(); } //}}} //{{{ getSelectedModels, getSelectedChains //############################################################################## /** As a Collection of Model objects. */ public Collection getSelectedModels() { Set selectedModels = new HashSet(); for(Iterator iter = paneListData.iterator(); iter.hasNext(); ) { DrawingPane p = (DrawingPane) iter.next(); selectedModels.addAll(p.getSelectedModels()); } Collection models = new ArrayList(coordFile.getModels()); models.retainAll(selectedModels); return models; } /** As a Collection of Strings representing chain IDs. */ public Collection getSelectedChains() { Set selectedChains = new HashSet(); for(Iterator iter = paneListData.iterator(); iter.hasNext(); ) { DrawingPane p = (DrawingPane) iter.next(); selectedChains.addAll(p.getSelectedChains()); } Set chains = new UberSet(); for(Iterator iter = coordFile.getModels().iterator(); iter.hasNext(); ) { Model m = (Model) iter.next(); chains.addAll(m.getChainIDs()); } chains.retainAll(selectedChains); return chains; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/gui/BallAndStickPane.java0000644000000000000000000001357211531212772022245 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.gui; import molikin.*; import molikin.crayons.*; import molikin.logic.BallAndStickLogic; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.data.*; import driftwood.gui.*; import driftwood.moldb2.*; //}}} /** * BallAndStickPane is the UI "page" for (ball and) stick drawings * of macromolecular structures. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 5 10:58:41 EDT 2005 */ public class BallAndStickPane extends TablePane2 implements DrawingPane { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## CoordinateFile coordFile; String title; SelectorPane selector; JCheckBox cbProtein, cbNucleic, cbHets, cbMetals, cbWater; JCheckBox cbVirtualBB, cbMainchain, cbSidechains, cbHydrogens, cbDisulfides; JCheckBox cbBallsOnCarbon, cbBallsOnAtoms; JComboBox cmColorBy; //}}} //{{{ Constructor(s) //############################################################################## public BallAndStickPane(CoordinateFile cfile, String title) { super(); this.coordFile = cfile; this.title = title; buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { selector = new SelectorPane(coordFile); cbProtein = new JCheckBox("protein", true); cbNucleic = new JCheckBox("nucleic acids", true); cbHets = new JCheckBox("hets (non-water)", true); cbMetals = new JCheckBox("metals/ions", true); cbWater = new JCheckBox("water", false); cbVirtualBB = new JCheckBox("C-alpha trace", true); cbMainchain = new JCheckBox("mainchain", false); cbSidechains = new JCheckBox("sidechains", false); cbHydrogens = new JCheckBox("hydrogens", false); cbDisulfides = new JCheckBox("disulfides", false); cbBallsOnCarbon = new JCheckBox("balls on C atoms too", false); cbBallsOnAtoms = new JCheckBox("balls on N, O, P, etc.", false); cmColorBy = new JComboBox(new Object[] { BallAndStickLogic.COLOR_BY_MC_SC, BallAndStickLogic.COLOR_BY_RES_TYPE, BallAndStickLogic.COLOR_BY_ELEMENT, BallAndStickLogic.COLOR_BY_B_FACTOR, BallAndStickLogic.COLOR_BY_OCCUPANCY }); this.hfill(true).vfill(true).addCell(selector, 2, 1).newRow(); this.weights(1,0).memorize(); this.addCell(this.strut(0,6)).newRow(); this.startSubtable(2,1); this.weights(0,0).memorize(); this.addCell(new JLabel("Color by")).addCell(cmColorBy); this.endSubtable(); this.addCell(this.strut(0,6)).newRow(); this.addCell(cbProtein).addCell(cbVirtualBB).newRow(); this.addCell(cbNucleic).addCell(cbMainchain).newRow(); this.addCell(cbHets).addCell(cbSidechains).newRow(); this.addCell(cbMetals).addCell(cbDisulfides).newRow(); this.addCell(cbWater).addCell(cbHydrogens).newRow(); this.addCell(this.strut(0,6)).newRow(); this.addCell(cbBallsOnAtoms).addCell(cbBallsOnCarbon).newRow(); this.setBorder( BorderFactory.createTitledBorder(null, "Ball & stick") ); } //}}} //{{{ toString, getSelectedModels, getSelectedChains //############################################################################## public String toString() { return this.title; } /** As a Collection of Model objects. */ public Collection getSelectedModels() { return selector.getSelectedModels(); } /** As a Collection of Strings representing chain IDs. */ public Collection getSelectedChains() { return selector.getSelectedChains(); } //}}} //{{{ printKinemage //############################################################################## /** Emits the kinemage (text) representation as selected by the user */ public void printKinemage(PrintWriter out, Model m, String chainID, String pdbId, String bbColor) { Collection models = selector.getSelectedModels(); if(!models.contains(m)) return; Collection chains = selector.getSelectedChains(); if(!chains.contains(chainID)) return; Collection chainRes = m.getChain(chainID); if(chainRes == null) return; Set residues = selector.getSelectedResidues(chainRes); if(residues.size() == 0) return; BallAndStickLogic logic = new BallAndStickLogic(); logic.doProtein = this.cbProtein.isSelected(); logic.doNucleic = this.cbNucleic.isSelected(); logic.doHets = this.cbHets.isSelected(); logic.doMetals = this.cbMetals.isSelected(); logic.doWater = this.cbWater.isSelected(); logic.doVirtualBB = this.cbVirtualBB.isSelected(); logic.doMainchain = this.cbMainchain.isSelected(); logic.doSidechains = this.cbSidechains.isSelected(); logic.doHydrogens = this.cbHydrogens.isSelected(); logic.doDisulfides = this.cbDisulfides.isSelected(); logic.doBallsOnCarbon = this.cbBallsOnCarbon.isSelected(); logic.doBallsOnAtoms = this.cbBallsOnAtoms.isSelected(); logic.colorBy = this.cmColorBy.getSelectedItem(); logic.printKinemage(out, m, residues, pdbId, bbColor); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/gui/DrawingPane.java0000644000000000000000000000203711531212772021337 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.gui; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * DrawingPane is the common interface for * UI elements for kinemage construction. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Mon Oct 17 14:07:49 EDT 2005 */ public interface DrawingPane //extends ... implements ... { /** To identify this pane */ public String toString(); /** Emits the kinemage (text) representation as selected by the user */ public void printKinemage(PrintWriter out, Model m, String chainID, String idCode, String bbColor); /** As a Collection of Model objects. */ public Collection getSelectedModels(); /** As a Collection of Strings representing chain IDs. */ public Collection getSelectedChains(); }//class king-2.21.120420/molikin/src/molikin/gui/SelectorPane.java0000644000000000000000000001736611531212772021537 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.gui; import molikin.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.data.*; import driftwood.gui.*; import driftwood.moldb2.*; //}}} /** * SelectorPane is a GUI element for selecting sets of residues * from a collection of models, based on various criteria. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Fri Sep 30 14:37:36 EDT 2005 */ public class SelectorPane extends TablePane2 implements ListSelectionListener, ActionListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## JList modelList; // holds Models JList chainList; // holds Strings JList resNumList; // holds Strings JList resTypeList; // holds Strings JTextField resRangeField; ResRanger resRanger; //}}} //{{{ Constructor(s) //############################################################################## public SelectorPane(CoordinateFile cfile) { super(); buildGUI1(); populateLists(cfile); buildGUI2(); } //}}} //{{{ buildGUI[12] //############################################################################## private void buildGUI1() { modelList = new FatJList(0, 4); modelList.setVisibleRowCount(6); chainList = new FatJList(0, 4); chainList.setVisibleRowCount(6); resNumList = new FatJList(0, 4); resNumList.addListSelectionListener(this); resNumList.setVisibleRowCount(6); resTypeList = new FatJList(0, 4); resTypeList.setVisibleRowCount(6); resRangeField = new AttentiveTextField(); resRangeField.addActionListener(this); } private void buildGUI2() { boolean showModels = (modelList.getModel().getSize() > 1); boolean showChains = (chainList.getModel().getSize() > 1); int cols = 2; if(showModels) cols++; if(showChains) cols++; this.insets(2,8,2,8).memorize(); this.weights(1,0).memorize(); if(showModels) this.addCell(new JLabel("Models")); if(showChains) this.addCell(new JLabel("Chains")); this.addCell(new JLabel("Numbers")); this.addCell(new JLabel("Types")); this.newRow(); this.weights(1,1).memorize(); // all vertical space to lists if(showModels) this.hfill(true).vfill(true).addCell(new JScrollPane(modelList)); if(showChains) this.hfill(true).vfill(true).addCell(new JScrollPane(chainList)); this.hfill(true).vfill(true).addCell(new JScrollPane(resNumList)); this.hfill(true).vfill(true).addCell(new JScrollPane(resTypeList)); this.newRow(); this.weights(1,0).memorize(); this.startSubtable(cols,1); this.insets(2,8,2,8).memorize(); this.weights(0,1).addCell(new JLabel("Numbers")); this.hfill(true).addCell(resRangeField); // all horiz space to field this.newRow(); this.addCell(new JLabel("e.g. 5, 34, 77-100, 120a-120f, 200"), 2, 1); this.endSubtable(); } //}}} //{{{ populateLists //############################################################################## private void populateLists(CoordinateFile cfile) { Collection models = cfile.getModels(); modelList.setListData(models.toArray()); modelList.setSelectionInterval(0, models.size()-1); // select all ArrayList allRes = new ArrayList(); UberSet chainIDs = new UberSet(); HashSet resNames = new HashSet(); for(Iterator iter = models.iterator(); iter.hasNext(); ) { Model m = (Model) iter.next(); allRes.addAll(m.getResidues()); chainIDs.addAll(m.getChainIDs()); for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); resNames.add(r.getName()); } } chainList.setListData(chainIDs.toArray()); chainList.setSelectionInterval(0, chainIDs.size()-1); // select all resRanger = new ResRanger(allRes); Collection allResNum = resRanger.getAllNumbers(); resNumList.setListData(allResNum.toArray()); resNumList.setSelectionInterval(0, allResNum.size()-1); // select all // TODO: transfer selection to Ranger and to text field Object[] rNames = resNames.toArray(); Arrays.sort(rNames); resTypeList.setListData(rNames); resTypeList.setSelectionInterval(0, resNames.size()-1); // select all } //}}} //{{{ getSelectedModels/Chains/Residues //############################################################################## /** As a Collection of Model objects. */ public Collection getSelectedModels() { return Arrays.asList(modelList.getSelectedValues()); } /** As a Collection of Strings representing chain IDs. */ public Collection getSelectedChains() { return Arrays.asList(chainList.getSelectedValues()); } /** As a Set of Residue objects. */ public Set getSelectedResidues(Model m) { return getSelectedResidues(m.getResidues()); } /** As a Set of Residue objects, which are a subset of the collection passed in. */ public Set getSelectedResidues(Collection residues) { Set chains = new HashSet(Arrays.asList(chainList.getSelectedValues())); Set resTypes = new HashSet(Arrays.asList(resTypeList.getSelectedValues())); // Not needed -- list or text has already set the selection //resRanger.select(resRangeField.getText().toUpperCase()); Set resNumbers = resRanger.getSelectedNumbers(); UberSet selected = new UberSet(); for(Iterator ri = residues.iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); if(resTypes.contains(r.getName()) && chains.contains(r.getChain())) { String resNum = r.getSequenceNumber().trim() + r.getInsertionCode().trim(); if(resNumbers.contains(resNum)) selected.add(r); } } return selected; } //}}} //{{{ ListSelectionListener for res numbers list: valueChanged //############################################################################## public void valueChanged(ListSelectionEvent ev) { if(resNumList.getValueIsAdjusting()) return; if(resRanger != null) { resRanger.select(resNumList.getSelectedIndices()); resRangeField.setText( resRanger.getSelectionString() ); } } //}}} //{{{ ActionListener for res numbers text: actionPerformed //############################################################################## public void actionPerformed(ActionEvent ev) { resRanger.select(resRangeField.getText().toUpperCase()); //resRangeField.setText( resRanger.getSelectionString() ); -- see below BitSet sel = resRanger.getSelectionMask(); int[] indices = new int[ sel.cardinality() ]; int i = 0, j = 0; for(i = 0; i < sel.length(); i++) { if(sel.get(i)) indices[j++] = i; } resNumList.setSelectedIndices(indices); // change in list selection will trigger regularization of text field contents } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/gui/RibbonPane.java0000644000000000000000000001075411531212772021164 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.gui; import molikin.*; import molikin.logic.RibbonLogic; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.data.*; import driftwood.gui.*; import driftwood.moldb2.*; //}}} /** * RibbonPane is the UI "page" for ribbon drawings * of macromolecular structures. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 5 10:58:41 EDT 2005 */ public class RibbonPane extends TablePane2 implements DrawingPane { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## CoordinateFile coordFile; String title; SelectorPane selector; JCheckBox cbProtein, cbNucleic; JCheckBox cbUntwistRibbons, cbDnaStyle; JComboBox cmColorBy; //}}} //{{{ Constructor(s) //############################################################################## public RibbonPane(CoordinateFile cfile, String title) { super(); this.coordFile = cfile; this.title = title; buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { selector = new SelectorPane(coordFile); cbProtein = new JCheckBox("protein", true); cbNucleic = new JCheckBox("nucleic acids", true); cbUntwistRibbons = new JCheckBox("untwist ribbons", true); cbDnaStyle = new JCheckBox("DNA-style, not RNA", false); cmColorBy = new JComboBox(new Object[] { RibbonLogic.COLOR_BY_SEC_STRUCT, RibbonLogic.COLOR_BY_RAINBOW }); this.hfill(true).vfill(true).addCell(selector, 2, 1).newRow(); this.weights(1,0).memorize(); this.addCell(this.strut(0,6)).newRow(); this.startSubtable(2,1); this.weights(0,0).memorize(); this.addCell(new JLabel("Color by")).addCell(cmColorBy); this.endSubtable(); this.addCell(this.strut(0,6)).newRow(); this.addCell(cbProtein).skip().newRow(); this.addCell(cbNucleic).skip().newRow(); this.addCell(this.strut(0,6)).newRow(); //this.addCell(cbDnaStyle).addCell(cbUntwistRibbons).newRow(); this.addCell(cbDnaStyle).newRow(); this.addCell(this.strut(0,6)).newRow(); this.setBorder( BorderFactory.createTitledBorder(null, "Ribbons") ); } //}}} //{{{ toString, getSelectedModels, getSelectedChains //############################################################################## public String toString() { return this.title; } /** As a Collection of Model objects. */ public Collection getSelectedModels() { return selector.getSelectedModels(); } /** As a Collection of Strings representing chain IDs. */ public Collection getSelectedChains() { return selector.getSelectedChains(); } //}}} //{{{ printKinemage //############################################################################## /** Emits the kinemage (text) representation as selected by the user */ public void printKinemage(PrintWriter out, Model m, String chainID, String pdbId, String bbColor) { Collection models = selector.getSelectedModels(); if(!models.contains(m)) return; Collection chains = selector.getSelectedChains(); if(!chains.contains(chainID)) return; Collection chainRes = m.getChain(chainID); if(chainRes == null) return; Set residues = selector.getSelectedResidues(chainRes); if(residues.size() == 0) return; RibbonLogic logic = new RibbonLogic(); logic.secondaryStructure = coordFile.getSecondaryStructure(); logic.doProtein = cbProtein.isSelected(); logic.doNucleic = cbNucleic.isSelected(); logic.doUntwistRibbons = cbUntwistRibbons.isSelected(); logic.doDnaStyle = cbDnaStyle.isSelected(); logic.colorBy = this.cmColorBy.getSelectedItem(); logic.printKinemage(out, m, residues, bbColor); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/StickPrinter.java0000644000000000000000000001677411744305702021014 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.Triple; //}}} /** * StickPrinter generates kinemage output for stick renderings * of molecules. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Fri Sep 30 09:47:09 EDT 2005 */ public class StickPrinter //extends ... implements ... { //{{{ Constants static final DecimalFormat df = driftwood.util.Strings.usDecimalFormat("0.###"); //}}} //{{{ Variable definitions //############################################################################## PrintWriter out; BondCrayon crayon = molikin.crayons.ConstCrayon.NONE; AtomIDer ider = new PrekinIDer(); boolean halfbonds = false; // draw half bonds instead of whole ones Triple midpoint = new Triple(); // for half bond calculation Collection selectedBonds = new ArrayList(); //}}} //{{{ Constructor(s) //############################################################################## public StickPrinter(PrintWriter out) { super(); this.out = out; } //}}} //{{{ printSticks //############################################################################## /** * Draws the supplied Bond objects in order. * Only bonds that go from AtomStates in srcA which belong to Residues in srcR, * to AtomStates in dstR that belong to Residues in dstR (or vice versa), are drawn. * Only points are generated; the client is responsible for writing "@vectorlist ...". * @param srcA a Set of AtomStates (may be null for "any") * @param dstA a Set of AtomStates (may be null for "any") * @param srcR a Set of Residues (may be null for "any") * @param dstR a Set of Residues (may be null for "any") */ public void printSticks(Collection bonds, Set srcA, Set dstA, Set srcR, Set dstR, String modelId) { //long time = System.currentTimeMillis(); // Doing the selection inline saves a bit of time on allocating selectedBonds, // but much greater savings are achieved through bond order optimization. selectedBonds.clear(); //System.out.println("Pre-selection bonds"); //testBonds(bonds); //System.out.println("\n\n\nPost-selection bonds"); Util.selectBondsBetween(bonds, srcA, dstA, srcR, dstR, selectedBonds); //testBonds(selectedBonds); //System.out.println(srcA); // The optimization reduces total bond drawing time by ~20% // because it reduces kinemage size by ~15%. Less output, faster code! Bond[] b = (Bond[]) selectedBonds.toArray(new Bond[selectedBonds.size()]); Bond.optimizeBondSequence(b); if(halfbonds) halfBondsImpl(b, modelId); else wholeBondsImpl(b, modelId); out.flush(); //time = System.currentTimeMillis() - time; //System.err.println("Drawing bonds: "+time+" ms"); } //public void printSticks(Collection bonds, Set srcA, Set dstA, Set srcR, Set dstR) //{ printSticks(bonds, srcA, dstA, srcR, dstR, null); } public void printSticks(Collection bonds, Set srcA, Set dstA) { printSticks(bonds, srcA, dstA, null, null, null); } public void printSticks(Collection bonds) { printSticks(bonds, null, null, null, null, null); } //}}} //{{{ wholeBondsImpl //############################################################################## void wholeBondsImpl(Bond[] b, String modelId) { Bond last = new Bond(null, -1, null, -1); for(int i = 0; i < b.length; i++) { Bond curr = b[i]; crayon.forBond(curr.higher, curr.lower); //System.out.println(curr); //System.out.println(curr.higher.getName()+"->"+curr.lower.getName()); // This may cause inefficiencies by introducing breaks into the // carefully ordered series of bonds, but we'll live with it. if(!crayon.shouldPrint()) continue; if(curr.lower != last.higher) out.print("{"+ider.identifyAtom(curr.lower)+modelId+"}P "+curr.lower.format(df)+" "); out.println("{"+ider.identifyAtom(curr.higher)+modelId+"}L "+crayon.getKinString()+" "+curr.higher.format(df)); last = curr; } } //}}} //{{{ halfBondsImpl //############################################################################## void halfBondsImpl(Bond[] b, String modelId) { Bond last = new Bond(null, -1, null, -1); for(int i = 0; i < b.length; i++) { Bond curr = b[i]; midpoint.likeMidpoint(curr.lower, curr.higher); // Filtering bonds at the Crayon level will be somewhat inefficient, // because introduces breaks into the carefully-ordered Bonds. // However, it gives enough extra flexibility it's probably worth it! crayon.forBond(curr.lower, curr.higher); boolean doLowerHalf = crayon.shouldPrint(); String lowerColor = crayon.getKinString(); crayon.forBond(curr.higher, curr.lower); boolean doHigherHalf = crayon.shouldPrint(); String higherColor = crayon.getKinString(); if(doLowerHalf) { if(curr.lower != last.higher) out.print("{"+ider.identifyAtom(curr.lower)+modelId+"}P "+curr.lower.format(df)+" "); // Only draw midpoint if color/attributes change. // May decide later that we should always draw midpoint, regardless. if(!lowerColor.equals(higherColor)) out.print("{mid}U "+lowerColor+" "+midpoint.format(df)+" "); } if(doHigherHalf) { if(!doLowerHalf) out.print("{mid}P U "+midpoint.format(df)+" "); out.println("{"+ider.identifyAtom(curr.higher)+modelId+"}L "+higherColor+" "+curr.higher.format(df)); last = curr; } } } //}}} //{{{ get/setHalfBonds, get/setCrayon, get/setAtomIDer //############################################################################## /** Whether this will print midpoints for bonds or directly from atom to atom. */ public boolean getHalfBonds() { return this.halfbonds; } /** Whether this will print midpoints for bonds or directly from atom to atom. */ public void setHalfBonds(boolean b) { this.halfbonds = b; } /** The BondCrayon used for coloring these sticks. */ public BondCrayon getCrayon() { return this.crayon; } /** The BondCrayon used for coloring these sticks. */ public void setCrayon(BondCrayon c) { this.crayon = c; } /** The AtomIDer used to make point IDs. */ public AtomIDer getAtomIDer() { return this.ider; } /** The AtomIDer used to make point IDs. */ public void setAtomIDer(AtomIDer ai) { this.ider = ai; } //}}} //{{{ testBonds public void testBonds(Collection bonds) { Iterator iter = bonds.iterator(); while (iter.hasNext()) { Bond b = (Bond) iter.next(); System.out.println(b.higher.getName()+"->"+b.lower.getName()+"; "); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/logic/0000755000000000000000000000000011744306102016601 5ustar rootrootking-2.21.120420/molikin/src/molikin/logic/Logic.java0000644000000000000000000000075611531212772020514 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.logic; import java.util.*; import java.io.*; import driftwood.moldb2.*; //}}} /** * Logic is a simple interface for the other logic objects. * *

Copyright (C) 2009 by Vincent B. Chen. All rights reserved. *
Begun on Mon Feb 09 15:45:44 EST 2009 */ public interface Logic { public void printKinemage(PrintWriter out, Model m, Set residues, String pdbId, String bbColor); } king-2.21.120420/molikin/src/molikin/logic/VanDerWaalsLogic.java0000644000000000000000000002233611531212772022602 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.logic; import molikin.*; import molikin.crayons.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.gui.*; import driftwood.moldb2.*; //}}} /** * VanDerWaalsLogic handles a usual set of options and logic * for VDW drawings of macromolecular structures. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 5 10:58:41 EDT 2005 */ public class VanDerWaalsLogic implements Logic { //{{{ Constants static final DecimalFormat df2 = driftwood.util.Strings.usDecimalFormat("0.0#"); public static final Object COLOR_BY_ELEMENT = "element"; public static final Object COLOR_BY_RES_TYPE = "residue type"; public static final Object COLOR_BY_B_FACTOR = "B factor"; public static final Object COLOR_BY_OCCUPANCY = "occupancy"; //}}} //{{{ Variable definitions //############################################################################## PrintWriter out = null; BallPrinter bp = null; public boolean doProtein, doNucleic, doHets, doMetals, doWater; public boolean doMainchain, doSidechains, doHydrogens, doUseSpheres; public Object colorBy = COLOR_BY_ELEMENT; //}}} //{{{ Constructor(s) //############################################################################## public VanDerWaalsLogic() { super(); } //}}} //{{{ printKinemage //############################################################################## /** Emits the kinemage (text) representation as selected by the user */ public void printKinemage(PrintWriter out, Model m, Set residues, String pdbId, String bbColor) { this.out = out; this.bp = new BallPrinter(out); bp.setCrayon(new AltConfCrayon()); if(colorBy == COLOR_BY_ELEMENT) bp.setCrayon(new AltConfCrayon()); else if(colorBy == COLOR_BY_RES_TYPE) bp.setCrayon(new CompositeCrayon().add(new AltConfCrayon()).add(new ResTypeCrayon())); else if(colorBy == COLOR_BY_B_FACTOR) bp.setCrayon(new CompositeCrayon().add(new AltConfCrayon()).add(new BfactorCrayon())); else if(colorBy == COLOR_BY_OCCUPANCY) bp.setCrayon(new CompositeCrayon().add(new AltConfCrayon()).add(new OccupancyCrayon())); else throw new UnsupportedOperationException(); if(doProtein) printProtein(m, residues, bbColor); if(doNucleic) printNucAcid(m, residues, bbColor); if(doHets) printHets(m, residues); if(doMetals) printMetals(m, residues); if(doWater) printWaters(m, residues); this.out.flush(); this.out = null; this.bp = null; } //}}} //{{{ printProtein //############################################################################## void printProtein(Model model, Set selectedRes, String bbColor) { DataCache data = DataCache.getDataFor(model); ResClassifier resC = data.getResClassifier(); CheapSet proteinRes = new CheapSet(selectedRes); proteinRes.retainAll(resC.proteinRes); if(proteinRes.size() == 0) return; AtomClassifier atomC = data.getAtomClassifier(); Collection bonds = data.getCovalentGraph().getBonds(); if(doMainchain && atomC.mcHeavy.size() > 0) { printAtomBalls(atomC.mcHeavy, proteinRes, "master= {protein} master= {mainchain}"); if(doHydrogens && atomC.mcHydro.size() > 0) printAtomBalls(atomC.mcHydro, proteinRes, "master= {protein} master= {mainchain}"); } if(doSidechains && atomC.scHeavy.size() > 0) { printAtomBalls(atomC.scHeavy, proteinRes, "master= {protein} master= {sidechains}"); if(doHydrogens && atomC.scHydro.size() > 0) printAtomBalls(atomC.scHydro, proteinRes, "master= {protein} master= {sidechains}"); } } //}}} //{{{ printNucAcid //############################################################################## void printNucAcid(Model model, Set selectedRes, String bbColor) { DataCache data = DataCache.getDataFor(model); ResClassifier resC = data.getResClassifier(); CheapSet nucAcidRes = new CheapSet(selectedRes); nucAcidRes.retainAll(resC.nucAcidRes); if(nucAcidRes.size() == 0) return; AtomClassifier atomC = data.getAtomClassifier(); Collection bonds = data.getCovalentGraph().getBonds(); if(doMainchain && atomC.mcHeavy.size() > 0) { printAtomBalls(atomC.mcHeavy, nucAcidRes, "master= {nucleic acid} master= {mainchain}"); if(doHydrogens && atomC.mcHydro.size() > 0) printAtomBalls(atomC.mcHydro, nucAcidRes, "master= {nucleic acid} master= {mainchain}"); } if(doSidechains && atomC.scHeavy.size() > 0) { printAtomBalls(atomC.scHeavy, nucAcidRes, "master= {nucleic acid} master= {sidechains}"); if(doHydrogens && atomC.scHydro.size() > 0) printAtomBalls(atomC.scHydro, nucAcidRes, "master= {nucleic acid} master= {sidechains}"); } } //}}} //{{{ printHets //############################################################################## void printHets(Model model, Set selectedRes) { DataCache data = DataCache.getDataFor(model); ResClassifier resC = data.getResClassifier(); CheapSet hetRes = new CheapSet(resC.ohetRes); hetRes.addAll(resC.unknownRes); hetRes.retainAll(selectedRes); if(hetRes.size() == 0) return; AtomClassifier atomC = data.getAtomClassifier(); Collection bonds = data.getCovalentGraph().getBonds(); if(atomC.hetHeavy.size() > 0) { printAtomBalls(atomC.hetHeavy, hetRes, "master= {hets}"); } if(doHydrogens && atomC.hetHydro.size() > 0) { printAtomBalls(atomC.hetHydro, hetRes, "master= {hets}"); } } //}}} //{{{ printMetals //############################################################################## void printMetals(Model model, Set selectedRes) { DataCache data = DataCache.getDataFor(model); ResClassifier resC = data.getResClassifier(); CheapSet metalRes = new CheapSet(selectedRes); metalRes.retainAll(resC.metalRes); if(metalRes.size() == 0) return; AtomClassifier atomC = data.getAtomClassifier(); if(atomC.metal.size() == 0) return; printAtomBalls(atomC.metal, metalRes, "master= {metals}"); } //}}} //{{{ printWaters //############################################################################## void printWaters(Model model, Set selectedRes) { DataCache data = DataCache.getDataFor(model); ResClassifier resC = data.getResClassifier(); CheapSet waterRes = new CheapSet(selectedRes); waterRes.retainAll(resC.waterRes); if(waterRes.size() == 0) return; AtomClassifier atomC = data.getAtomClassifier(); if(atomC.watHeavy.size() > 0) { printAtomBalls(atomC.watHeavy, waterRes, "master= {waters}"); } if(doHydrogens && atomC.watHydro.size() > 0) { printAtomBalls(atomC.watHydro, waterRes, "master= {waters}"); } } //}}} //{{{ printAtomBalls //############################################################################## void printAtomBalls(Collection atomStates, Set residues, String masters) { // First, sort the AtomStates by element Map elementsToAtoms = new HashMap(); for(Iterator iter = atomStates.iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); if(!residues.contains(as.getResidue())) continue; String element = as.getElement(); Collection atoms = (Collection) elementsToAtoms.get(element); if(atoms == null) { atoms = new ArrayList(); elementsToAtoms.put(element, atoms); } atoms.add(as); } // Now print one balllist or spherelist per element for(Iterator iter = elementsToAtoms.keySet().iterator(); iter.hasNext(); ) { String element = (String) iter.next(); Collection atoms = (Collection) elementsToAtoms.get(element); String color = Util.getElementColor(element); double radius = Util.getVdwRadius(element); if(doUseSpheres) out.print("@spherelist"); else out.print("@balllist"); out.println(" {"+element+" vdW} color= "+color+" radius= "+df2.format(radius)+" master= {"+element+"} master= {vdW} "+masters); bp.printBalls(atoms); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/logic/BallAndStickLogic.java0000644000000000000000000005163211571452342022732 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.logic; import molikin.*; import molikin.crayons.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.gui.*; import driftwood.moldb2.*; //}}} /** * BallAndStickLogic handles a usual set of options and logic * for doing for (ball and) stick drawings of macromolecular structures. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 5 10:58:41 EDT 2005 */ public class BallAndStickLogic implements Logic { //{{{ Constants public static final Object COLOR_BY_MC_SC = "mainchain / sidechain"; public static final Object COLOR_BY_RES_TYPE = "residue type"; public static final Object COLOR_BY_ELEMENT = "element"; public static final Object COLOR_BY_B_FACTOR = "B factor"; public static final Object COLOR_BY_OCCUPANCY = "occupancy"; public static final Object COLOR_BY_ROTARAMA = "rota/rama score"; static final DecimalFormat df = new DecimalFormat("00"); //}}} //{{{ Variable definitions //############################################################################## PrintWriter out = null; StickPrinter sp = null; BallPrinter bp = null; public boolean doProtein, doNucleic, doHets, doMetals, doWater; public boolean doVirtualBB, doMainchain, doSidechains, doHydrogens, doDisulfides; public boolean doBallsOnCarbon, doBallsOnAtoms; public Object colorBy = COLOR_BY_MC_SC; public int width = -1; // for vectorlists; -1 means don't print width specifier public String scColor = "cyan"; /** Not actually displayed in GUI! Set by outside class, e.g. chiropraxis.rotarama.LocalRotarama. */ public Map rota = null, rama = null; //}}} //{{{ Constructor(s) //############################################################################## public BallAndStickLogic() { super(); } //}}} //{{{ printKinemage //############################################################################## /** Emits the kinemage (text) representation as selected by the user */ public void printKinemage(PrintWriter out, Model m, Set residues, String mcColor) { printKinemage(out, m, residues, "", mcColor); } public void printKinemage(PrintWriter out, Model m, Set residues, String pdbId, String mcColor) { printKinemage(out, m, null, residues, pdbId, mcColor); } public void printKinemage(PrintWriter out, Model m, Collection states, Set residues, String pdbId, String mcColor) { this.out = out; this.sp = new StickPrinter(out); this.bp = new BallPrinter(out); if(colorBy == COLOR_BY_MC_SC) { sp.setCrayon(new CompositeCrayon().add(new AltConfCrayon()).add(new DisulfideCrayon())); bp.setCrayon(new AltConfCrayon()); } else if(colorBy == COLOR_BY_RES_TYPE) { sp.setCrayon(new CompositeCrayon().add(new AltConfCrayon()).add(new ResTypeCrayon())); bp.setCrayon(new AltConfCrayon()); } else if(colorBy == COLOR_BY_ELEMENT) { sp.setHalfBonds(true); sp.setCrayon(new CompositeCrayon().add(new AltConfCrayon()).add(new HalfBondElementCrayon())); bp.setCrayon(new AltConfCrayon()); } else if(colorBy == COLOR_BY_B_FACTOR) { sp.setHalfBonds(true); sp.setCrayon(new CompositeCrayon().add(new AltConfCrayon()).add(new BfactorCrayon())); bp.setCrayon(new CompositeCrayon().add(new AltConfCrayon()).add(new BfactorCrayon())); } else if(colorBy == COLOR_BY_OCCUPANCY) { sp.setHalfBonds(true); sp.setCrayon(new CompositeCrayon().add(new AltConfCrayon()).add(new OccupancyCrayon())); bp.setCrayon(new CompositeCrayon().add(new AltConfCrayon()).add(new OccupancyCrayon())); } else if(colorBy == COLOR_BY_ROTARAMA && this.rota != null && this.rama != null) { sp.setCrayon(new CompositeCrayon().add(new AltConfCrayon()).add(new RotaramaCrayon(rota, rama))); bp.setCrayon(new CompositeCrayon().add(new AltConfCrayon()).add(new RotaramaCrayon(rota, rama))); sp.setAtomIDer(new RotaramaIDer(rota, rama)); } else throw new UnsupportedOperationException(); if(doProtein) printProtein(m, states, residues, pdbId, mcColor); if(doNucleic) printNucAcid(m, states, residues, pdbId, mcColor); if(doHets) printHets(m, residues, pdbId); if(doMetals) printMetals(m, residues, pdbId); if(doWater) printWaters(m, residues, pdbId); this.out.flush(); this.out = null; this.sp = null; this.bp = null; } //}}} //{{{ printProtein //############################################################################## void printProtein(Model model, Collection states, Set selectedRes, String pdbId, String mcColor) { DataCache data = DataCache.getDataFor(model, states); ResClassifier resC = data.getResClassifier(); CheapSet proteinRes = new CheapSet(selectedRes); proteinRes.retainAll(resC.proteinRes); if(proteinRes.size() == 0) return; AtomClassifier atomC = data.getAtomClassifier(); Collection bonds = data.getCovalentGraph().getBonds(); String wid = (width != -1 ? " width= "+width : ""); // DAK 100303 String identifier = ""; if(pdbId != null && !((pdbId.trim()).equals(""))) { if (Util.isNumeric(data.getModelId())) { identifier = " m"+df.format(Integer.parseInt(data.getModelId()))+"_"+pdbId.toLowerCase(); } else { identifier = " m"+data.getModelId()+"_"+pdbId.toLowerCase(); } } if(doVirtualBB||atomC.mcNotCa==0) { String off = ((doMainchain&&atomC.mcNotCa!=0) ? " off" : ""); out.println("@vectorlist {protein ca} color= "+mcColor+" master= {protein} master= {Calphas}"+off+wid); VirtualBackbone virtualBB = data.getVirtualBackbone(); sp.printSticks(virtualBB.getProteinBonds(), null, null, proteinRes, proteinRes, identifier); } if(doMainchain) { if(atomC.mcHeavy.size() > 0) { out.println("@vectorlist {protein mc} color= "+mcColor+" master= {protein} master= {mainchain}"+wid); sp.printSticks(bonds, atomC.mcHeavy, atomC.mcHeavy, proteinRes, proteinRes, identifier); if(doHydrogens && atomC.mcHydro.size() > 0) { out.println("@vectorlist {protein mcH} color= gray master= {protein} master= {mainchain} master= {H}"+wid); sp.printSticks(bonds, atomC.mcHydro, atomC.mcHeavy, proteinRes, proteinRes, identifier); } if(doBallsOnAtoms) { printAtomBalls(atomC.mcHeavy, proteinRes, (doBallsOnCarbon ? mcColor : null), "master= {protein} master= {mainchain}"); } } } if(doSidechains) { if(atomC.scHeavy.size() > 0) { out.println("@vectorlist {protein sc} color= "+scColor+" master= {protein} master= {sidechains}"+wid); // to scHeavy instead of bioHeavy if we want to end at CB and add stubs to ribbon instead // to resC.proteinRes allows disulfides to cross over chains sp.printSticks(bonds, atomC.scHeavy, atomC.bioHeavy, proteinRes, resC.proteinRes, identifier); if(doHydrogens && atomC.scHydro.size() > 0) { out.println("@vectorlist {protein scH} color= gray master= {protein} master= {sidechains} master= {H}"+wid); // makes sure Gly 2HA connects to mc sp.printSticks(bonds, atomC.scHydro, atomC.bioHeavy, proteinRes, proteinRes, identifier); } if(doBallsOnAtoms) { printAtomBalls(atomC.scHeavy, proteinRes, (doBallsOnCarbon ? scColor : null), "master= {protein} master= {sidechains}"); } } } if(doDisulfides) { Set ssRes = Util.selectDisulfideResidues(bonds); ssRes.retainAll(proteinRes); if(atomC.scHeavy.size() > 0 && ssRes.size() > 0) { out.println("@vectorlist {protein ss} color= yellow master= {protein} master= {-SS-}"+wid); sp.printSticks(bonds, atomC.scHeavy, atomC.bioHeavy, ssRes, null, identifier); if(doHydrogens && atomC.scHydro.size() > 0) { out.println("@vectorlist {protein ssH} color= gray master= {protein} master= {-SS-} master= {H}"+wid); sp.printSticks(bonds, atomC.scHydro, atomC.bioHeavy, ssRes, ssRes, identifier); } if(doBallsOnAtoms) { printAtomBalls(atomC.scHeavy, ssRes, (doBallsOnCarbon ? scColor : null), "master= {protein} master= {-SS-}"); } } } } //}}} //{{{ printNucAcid //############################################################################## void printNucAcid(Model model, Collection states, Set selectedRes, String pdbId, String mcColor) { DataCache data = DataCache.getDataFor(model, states); ResClassifier resC = data.getResClassifier(); CheapSet nucAcidRes = new CheapSet(selectedRes); nucAcidRes.retainAll(resC.nucAcidRes); if(nucAcidRes.size() == 0) return; AtomClassifier atomC = data.getAtomClassifier(); Collection bonds = data.getCovalentGraph().getBonds(); String wid = (width != -1 ? " width= "+width : ""); // DAK 100303 // Needs an extra space for some reason. String identifier = ""; if(pdbId != null && !((pdbId.trim()).equals(""))) { if (Util.isNumeric(data.getModelId())) { identifier = " m"+df.format(Integer.parseInt(data.getModelId()))+"_"+pdbId.toLowerCase(); } else { identifier = " m"+data.getModelId()+"_"+pdbId.toLowerCase(); } } if(doVirtualBB) { String off = (doMainchain ? " off" : ""); out.println("@vectorlist {nuc. acid virtual bb} color= "+mcColor+" master= {nucleic acid} master= {virtual bb}"+off+wid); VirtualBackbone virtualBB = data.getVirtualBackbone(); sp.printSticks(virtualBB.getNucAcidBonds(), null, null, nucAcidRes, nucAcidRes, identifier); } if(doMainchain) { if(atomC.mcHeavy.size() > 0) { out.println("@vectorlist {nuc. acid mc} color= "+mcColor+" master= {nucleic acid} master= {mainchain}"+wid); sp.printSticks(bonds, atomC.mcHeavy, atomC.mcHeavy, nucAcidRes, nucAcidRes, identifier); if(doHydrogens && atomC.mcHydro.size() > 0) { out.println("@vectorlist {nuc. acid mcH} color= gray master= {nucleic acid} master= {mainchain} master= {H}"+wid); sp.printSticks(bonds, atomC.mcHydro, atomC.mcHeavy, nucAcidRes, nucAcidRes, identifier); } if(doBallsOnAtoms) { printAtomBalls(atomC.mcHeavy, nucAcidRes, (doBallsOnCarbon ? mcColor : null), "master= {nucleic acid} master= {mainchain}"); } } } if(doSidechains) { if(atomC.scHeavy.size() > 0) { out.println("@vectorlist {nuc. acid sc} color= "+scColor+" master= {nucleic acid} master= {sidechains}"+wid); // to scHeavy if we want stubs to ribbon instead sp.printSticks(bonds, atomC.scHeavy, atomC.bioHeavy, nucAcidRes, nucAcidRes, identifier); if(doHydrogens && atomC.scHydro.size() > 0) { out.println("@vectorlist {nuc. acid scH} color= gray master= {nucleic acid} master= {sidechains} master= {H}"+wid); sp.printSticks(bonds, atomC.scHydro, atomC.scHeavy, nucAcidRes, nucAcidRes, identifier); } if(doBallsOnAtoms) { printAtomBalls(atomC.scHeavy, nucAcidRes, (doBallsOnCarbon ? scColor : null), "master= {nucleic acid} master= {sidechains}"); } } } } //}}} //{{{ printHets //############################################################################## void printHets(Model model, Set selectedRes, String pdbId) { DataCache data = DataCache.getDataFor(model); ResClassifier resC = data.getResClassifier(); CheapSet hetRes = new CheapSet(resC.ohetRes); hetRes.addAll(resC.unknownRes); hetRes.retainAll(selectedRes); if(hetRes.size() == 0) return; AtomClassifier atomC = data.getAtomClassifier(); Collection bonds = data.getCovalentGraph().getBonds(); String wid = (width != -1 ? " width= "+width : ""); // DAK 100303 String identifier; if (Util.isNumeric(data.getModelId())) { identifier = " m"+df.format(Integer.parseInt(data.getModelId()))+"_"+pdbId.toLowerCase(); } else { identifier = " m"+data.getModelId()+"_"+pdbId.toLowerCase(); } //String identifier = " m"+df.format(Integer.parseInt(data.getModelId()))+"_"+pdbId.toLowerCase(); // First, the hets themselves. if(atomC.hetHeavy.size() == 0) return; out.println("@vectorlist {het} color= pink master= {hets}"); sp.printSticks(bonds, atomC.hetHeavy, atomC.hetHeavy, hetRes, hetRes, identifier); if(doBallsOnAtoms) { printAtomBalls(atomC.hetHeavy, hetRes, (doBallsOnCarbon ? "pink" : null), "master= {hets}"); } if(doHydrogens && atomC.hetHydro.size() > 0) { out.println("@vectorlist {hetH} color= gray master= {hets} master= {H}"+wid); sp.printSticks(bonds, atomC.hetHydro, atomC.hetHeavy, hetRes, hetRes, identifier); } // Now, the connections to protein. if(doProtein) { CheapSet proteinRes = new CheapSet(selectedRes); proteinRes.retainAll(resC.proteinRes); if(proteinRes.size() > 0 && doMainchain && atomC.mcHeavy.size() > 0) { out.println("@vectorlist {het - protein mc} color= pinktint master= {hets} master= {protein} master= {mainchain}"+wid); sp.printSticks(bonds, atomC.hetHeavy, atomC.mcHeavy, hetRes, proteinRes, identifier); } if(proteinRes.size() > 0 && doSidechains && atomC.scHeavy.size() > 0) { out.println("@vectorlist {het - protein sc} color= pinktint master= {hets} master= {protein} master= {sidechains}"+wid); sp.printSticks(bonds, atomC.hetHeavy, atomC.scHeavy, hetRes, proteinRes, identifier); } } // Finally, the connections to nucleic acid. if(doNucleic) { CheapSet nucAcidRes = new CheapSet(selectedRes); nucAcidRes.retainAll(resC.nucAcidRes); if(nucAcidRes.size() > 0 && doMainchain && atomC.mcHeavy.size() > 0) { out.println("@vectorlist {het - nuc. acid mc} color= pinktint master= {hets} master= {nucleic acid} master= {mainchain}"+wid); sp.printSticks(bonds, atomC.hetHeavy, atomC.mcHeavy, hetRes, nucAcidRes, identifier); } if(nucAcidRes.size() > 0 && doSidechains && atomC.scHeavy.size() > 0) { out.println("@vectorlist {het - nuc. acid sc} color= pinktint master= {hets} master= {nucleic acid} master= {sidechains}"+wid); sp.printSticks(bonds, atomC.hetHeavy, atomC.scHeavy, hetRes, nucAcidRes, identifier); } } } //}}} //{{{ printMetals //############################################################################## void printMetals(Model model, Set selectedRes, String pdbId) { DataCache data = DataCache.getDataFor(model); ResClassifier resC = data.getResClassifier(); CheapSet metalRes = new CheapSet(selectedRes); metalRes.retainAll(resC.metalRes); if(metalRes.size() == 0) return; AtomClassifier atomC = data.getAtomClassifier(); if(atomC.metal.size() == 0) return; String identifier; if (Util.isNumeric(data.getModelId())) { identifier = " m"+df.format(Integer.parseInt(data.getModelId()))+"_"+pdbId.toLowerCase(); } else { identifier = " m"+data.getModelId()+"_"+pdbId.toLowerCase(); } //String identifier = " m"+df.format(Integer.parseInt(data.getModelId()))+"_"+pdbId.toLowerCase(); // 0.5 is the Prekin default metal radius out.println("@spherelist {metals} color= gray radius= 0.5 master= {metals}"); bp.printBalls(atomC.metal, metalRes, identifier); } //}}} //{{{ printWaters //############################################################################## void printWaters(Model model, Set selectedRes, String pdbId) { DataCache data = DataCache.getDataFor(model); ResClassifier resC = data.getResClassifier(); CheapSet waterRes = new CheapSet(selectedRes); waterRes.retainAll(resC.waterRes); if(waterRes.size() == 0) return; AtomClassifier atomC = data.getAtomClassifier(); if(atomC.watHeavy.size() == 0) return; String wid = (width != -1 ? " width= "+width : ""); // DAK 100303 String identifier; if (Util.isNumeric(data.getModelId())) { identifier = " m"+df.format(Integer.parseInt(data.getModelId()))+"_"+pdbId.toLowerCase(); } else { identifier = " m"+data.getModelId()+"_"+pdbId.toLowerCase(); } //String identifier = " m"+df.format(Integer.parseInt(data.getModelId()))+"_"+pdbId.toLowerCase(); out.println("@balllist {waters} color= peachtint radius= 0.15 master= {waters}"); bp.printBalls(atomC.watHeavy, waterRes, identifier); if(doHydrogens && atomC.watHydro.size() > 0) { Collection bonds = data.getCovalentGraph().getBonds(); out.println("@vectorlist {waterH} color= gray master= {waters} master= {H}"+wid); sp.printSticks(bonds, atomC.watHydro, atomC.watHeavy, waterRes, waterRes, identifier); } } //}}} //{{{ printAtomBalls //############################################################################## /** null for carbonColor means leave off carbon balls */ void printAtomBalls(Collection atomStates, Set residues, String carbonColor, String masters) { // First, sort the AtomStates by element Map elementsToAtoms = new HashMap(); for(Iterator iter = atomStates.iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); String elem = as.getElement(); // Remove carbon if no color has been specified; always remove H and Q if(elem.equals("H") || elem.equals("Q") || (carbonColor == null && elem.equals("C"))) continue; if(!residues.contains(as.getResidue())) continue; Collection atoms = (Collection) elementsToAtoms.get(elem); if(atoms == null) { atoms = new ArrayList(); elementsToAtoms.put(elem, atoms); } atoms.add(as); } // Now print one balllist per element for(Iterator iter = elementsToAtoms.keySet().iterator(); iter.hasNext(); ) { String element = (String) iter.next(); Collection atoms = (Collection) elementsToAtoms.get(element); String color = Util.getElementColor(element); // Matching carbon color to backbone, sidechain, etc. doesn't really work, visually. //if(carbonColor != null && element.equals("C")) color = carbonColor; out.println("@balllist {"+element+" balls} color= "+color+" radius= 0.2 master= {"+element+"} "+masters); bp.printBalls(atoms); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/logic/RibbonLogic.java0000644000000000000000000002330711531212772021645 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin.logic; import molikin.*; import molikin.crayons.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.gui.*; import driftwood.moldb2.*; //}}} /** * RibbonLogic handles a usual set of options and logic for doing * ribbon drawings of macromolecular structures. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Wed Oct 5 10:58:41 EDT 2005 */ public class RibbonLogic implements Logic { //{{{ Constants public static final Object COLOR_BY_SEC_STRUCT = "secondary structure"; public static final Object COLOR_BY_RAINBOW = "N -> C / 5' -> 3'"; //public static final Object COLOR_BY_RES_TYPE = "residue type"; //public static final Object COLOR_BY_B_FACTOR = "B factor"; //public static final Object COLOR_BY_OCCUPANCY = "occupancy"; //}}} //{{{ Variable definitions //############################################################################## PrintWriter out = null; RibbonPrinter rp = null; public boolean doProtein, doNucleic; public boolean doUntwistRibbons, doDnaStyle; public boolean doPlainCoils = false; public Object colorBy = COLOR_BY_SEC_STRUCT; public SecondaryStructure secondaryStructure = null; //}}} //{{{ Constructor(s) //############################################################################## public RibbonLogic() { super(); } //}}} //{{{ printKinemage //############################################################################## /** Emits the kinemage (text) representation as selected by the user */ public void printKinemage(PrintWriter out, Model m, Set residues, String bbColor) { this.out = out; this.rp = new RibbonPrinter(out); // coloring set-up has to wait until contigs are calculated String chainID = "_"; if(residues.size() > 0) chainID = ((Residue) residues.iterator().next()).getChain().trim(); if(chainID.equals("")) chainID = "_"; if(doProtein) printProtein(m, residues, chainID, bbColor); if(doNucleic) printNucAcid(m, residues, chainID, bbColor); this.out.flush(); this.out = null; this.rp = null; } // to satisfy the interface public void printKinemage(PrintWriter out, Model m, Set residues, String pdbId, String bbColor) { printKinemage(out, m, residues, bbColor); } //}}} //{{{ setUpColoring //############################################################################## private void setUpColoring(Collection contigs) { if(colorBy == COLOR_BY_SEC_STRUCT) rp.setCrayon(ConstCrayon.NONE); else if(colorBy == COLOR_BY_RAINBOW) rp.setCrayon(ResColorMapCrayon.newRainbow(contigs)); else throw new UnsupportedOperationException(); } //}}} //{{{ printProtein //############################################################################## void printProtein(Model model, Set selectedRes, String chainID, String bbColor) { DataCache data = DataCache.getDataFor(model); AtomClassifier atomC = data.getAtomClassifier(); ResClassifier resC = data.getResClassifier(); ModelState state = model.getState(); if (atomC.mcNotCa==0) secondaryStructure = new SecondaryStructure.AllCoil(); //to fix bug where CA only //structure has helix classifications. See PDB 1hr3 Ribbons ribbons = new Ribbons(); Collection contigs = ribbons.getProteinContigs(selectedRes, state, resC); setUpColoring(contigs); rp.setRnaPointIDs(false); if(contigs.size() > 0 && secondaryStructure != null) { if(bbColor.equals("white")) { out.println("@colorset {alph"+chainID+"} red"); out.println("@colorset {beta"+chainID+"} lime"); out.println("@colorset {coil"+chainID+"} white"); } else { out.println("@colorset {alph"+chainID+"} "+bbColor); out.println("@colorset {beta"+chainID+"} "+bbColor); out.println("@colorset {coil"+chainID+"} "+bbColor); } } secondaryStructure.consolidateSheets(); // (ARK Spring2010) int i = 0; for(Iterator iter = contigs.iterator(); iter.hasNext(); i++) { Collection contig = (Collection) iter.next(); if(contig.size() < 2) continue; // too small to use! GuidePoint[] guides = ribbons.makeProteinGuidepoints(contig, state); //System.out.println("prot: "+contig.size()+" "+guides.length); if(doUntwistRibbons) ribbons.untwistRibbon(guides); //rp.printGuidepoints(guides); if(secondaryStructure != null) { if (doPlainCoils) { rp.printFancyRibbon(guides, secondaryStructure, 2, 2.2, "color= {alph"+chainID+"} master= {protein} master= {ribbon} master= {alpha}", "color= {beta"+chainID+"} master= {protein} master= {ribbon} master= {beta}", "width= 4 color= {coil"+chainID+"} master= {protein} master= {ribbon} master= {coil}", state); } else { rp.printFancyRibbon(guides, secondaryStructure, 2, 2.2, "color= {alph"+chainID+"} master= {protein} master= {ribbon} master= {alpha}", "color= {beta"+chainID+"} master= {protein} master= {ribbon} master= {beta}", "width= 4 fore color= {coil"+chainID+"} master= {protein} master= {ribbon} master= {coil}", "width= 6 rear color= deadblack master= {protein} master= {ribbon} master= {coil}", state); } } else { out.println("@ribbonlist {protein ribbon} color= "+bbColor+" master= {protein} master= {ribbon}"); rp.printFlatRibbon(guides, 4, true); //out.println("@vectorlist {protein ribbon} color= "+bbColor+" master= {protein} master= {ribbon}"); //rp.printFiveLine(guides, 4, true); } } } //}}} //{{{ printNucAcid //############################################################################## void printNucAcid(Model model, Set selectedRes, String chainID, String bbColor) { DataCache data = DataCache.getDataFor(model); ResClassifier resC = data.getResClassifier(); ModelState state = model.getState(); Ribbons ribbons = new Ribbons(); Collection contigs = ribbons.getNucleicAcidContigs(selectedRes, state, resC); setUpColoring(contigs); rp.setRnaPointIDs(true); if(contigs.size() > 0 && secondaryStructure != null) { if(bbColor.equals("white")) { out.println("@colorset {nucl"+chainID+"} lime"); out.println("@colorset {ncoi"+chainID+"} white"); } else { out.println("@colorset {nucl"+chainID+"} "+bbColor); out.println("@colorset {ncoi"+chainID+"} "+bbColor); } } for(Iterator iter = contigs.iterator(); iter.hasNext(); ) { Collection contig = (Collection) iter.next(); //Residue[] res = (Residue[]) contig.toArray(new Residue[contig.size()]); //System.err.println(res[0]+" --> "+res[res.length-1]); if(contig.size() < 2) continue; // too small to use! GuidePoint[] guides = ribbons.makeNucleicAcidGuidepoints(contig, state); //System.out.println("nuc: "+contig.size()+" "+guides.length); // Makes very little difference for nucleic acid, but occasionally does. if(doUntwistRibbons) ribbons.untwistRibbon(guides); if(doDnaStyle) ribbons.swapEdgeAndFace(guides); //rp.printGuidepoints(guides); if(secondaryStructure != null) { rp.printFancyRibbon(guides, secondaryStructure, 3.0, 3.0, "color= {nucl"+chainID+"} master= {nucleic acid} master= {ribbon} master= {RNA helix?}", "color= {nucl"+chainID+"} master= {nucleic acid} master= {ribbon} master= {A-form}", "width= 4 color= {ncoi"+chainID+"} master= {nucleic acid} master= {ribbon} master= {coil}", state); } else { out.println("@ribbonlist {nucleic acid ribbon} color= "+bbColor+" master= {nucleic acid} master= {ribbon}"); rp.printFlatRibbon(guides, 4, true); //out.println("@vectorlist {nucleic acid ribbon} color= "+bbColor+" master= {nucleic acid} master= {ribbon}"); //rp.printFiveLine(guides, 4, true); } //out.println("@ribbonlist {nucleic acid ribbon} color= "+bbColor+" master= {nucleic acid} master= {ribbon}"); //rp.printFlatRibbon(guides, 4, true); // //out.println("@vectorlist {nucleic acid ribbon edges} color= deadblack master= {nucleic acid} master= {ribbon}"); //RibbonCrayon c = rp.getCrayon(); //rp.setCrayon(ConstCrayon.NONE); //rp.printTwoLine(guides, 4, true); //rp.setCrayon(c); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/PrekinIDer.java0000644000000000000000000000474111531212776020360 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.util.*; //}}} /** * PrekinIDer creates point IDs for atoms that match the * output of DCR's Prekin. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Tue Nov 8 15:18:46 EST 2005 */ public class PrekinIDer implements AtomIDer { //{{{ Constants static final DecimalFormat df2 = driftwood.util.Strings.usDecimalFormat("0.00"); //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public PrekinIDer() { super(); } //}}} //{{{ identifyAtom //############################################################################## public String identifyAtom(AtomState as) { Residue res = as.getResidue(); StringBuffer buf = new StringBuffer(16); // should be long enough for almost all buf.append(as.getName()); // 4 chars buf.append(as.getAltConf()); // 1 buf.append(res.getName()); // 3 buf.append(" "); // 1 buf.append(res.getChain()); // 1 buf.append(" "); // 1 buf.append(res.getSequenceNumber().trim()); // 1 - 4 (or more) buf.append(res.getInsertionCode()); // 1 if((as.getTempFactor() > 0.0)||(as.getOccupancy() < 1.0)) { StringBuffer buf2 = new StringBuffer(buf.length() + 8); // lowercasing is somewhat expensive, computationally. buf2.append(buf.toString().toLowerCase()); if (as.getOccupancy() < 1.0) buf2.append(" "+df2.format(as.getOccupancy())+"B"); else buf2.append(" B"); // 2 buf2.append(df2.format(as.getTempFactor())); // 4 - 5 (or more) return buf2.toString(); } else return buf.toString().toLowerCase(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/Bond.java0000644000000000000000000002024211531212776017240 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * Bond describes a connection of some type between two AtomStates, * which must be indentified by unique integers. * Given atoms 1, 2, and 3 with bonds between them, * bonds 1-2 and 2-1 compare as equal, * and they sort as (1-2, 1-3, 2-3). * Every bond has a mirror image in which "lower" and "higher" are reversed, * but the two bonds compare as equal and sort to the same place. * *

Bond also contains static methods for re-ordering Bond objects to * minimize the number of polylines needed to draw them. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Fri May 6 14:03:37 EDT 2005 */ public class Bond implements Comparable { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## public final AtomState lower, higher; final int iLow, iHigh; public final Bond mirror; //}}} //{{{ Constructor(s) //############################################################################## /** * @param one an atom state associated with index number iOne. This field * doesn't matter at all to Bond and can be null; it's only for the * convenience of other users. * @param iOne a UNIQUE serial number for this AtomState that will be used * to identify it and for sorting purposes. * @param two (see one) * @param iTwo (see iOne) */ public Bond(AtomState one, int iOne, AtomState two, int iTwo) { super(); if(iOne > iTwo) { lower = two; iLow = iTwo; higher = one; iHigh = iOne; } else { lower = one; iLow = iOne; higher = two; iHigh = iTwo; } mirror = new Bond(this); } private Bond(Bond that) { this.lower = that.higher; this.higher = that.lower; this.iLow = that.iLow; // no mistake, these are still sorted by value this.iHigh = that.iHigh; this.mirror = that; } //}}} //{{{ equals, hashCode, compareTo //############################################################################## /** * Two bonds compare as equal if compareTo() == 0, that is, if their * end points have the same serial numbers. */ public boolean equals(Object o) { return this.compareTo(o) == 0; } public int hashCode() { return this.iLow << 16 | this.iHigh; } /** * First compares on the lower of the two serial numbers, * then on the higher of them. */ public int compareTo(Object o) { Bond that = (Bond) o; int diff = this.iLow - that.iLow; // This way, intra-residue bonds come before inter-residue ones if(diff == 0) diff = this.iHigh - that.iHigh; return diff; } //}}} //{{{ optimizeBondSequence //############################################################################## /** * Rearranges bonds in order to fully minimize the number of * kinemage 'P' points needed to draw them, * although optimizations do not extend past residue boundaries. * Some bonds in the original list may be replaced by their mirror images. * This assumes the bonds are already sorted in their natural order. * This is pretty fast -- it takes maybe 1% of the time required to draw the bonds. */ static public void optimizeBondSequence(Bond[] b) { //long time = System.currentTimeMillis(); int first = 0, last; // for the current residue while(first < b.length) { // Define the range to optimize (one residue) Residue thisRes = b[first].lower.getResidue(); for(last = first; last < b.length && (thisRes.equals(b[last].lower.getResidue()) || thisRes.equals(b[last].higher.getResidue())); last++) {} // We can now play with bonds first (inclusive) through last (exclusive) while(first < last) { // Find optimal starting point extendLeft(b, first, last); // Make this chain as long as we can first = extendRight(b, first, last); } // Now first == last // On to the next residue, or first == b.length if we're done } //time = System.currentTimeMillis() - time; //System.err.println(time+" ms optimizing bond order for "+b.length+" bonds"); //for(int i = 0; i < b.length; i++) System.err.println(b[i].lower.getAtom()+" --- "+b[i].higher.getAtom()); } //}}} //{{{ extendLeft //############################################################################## /** * Optimizes the starting point of the polyline by insuring that it cannot * be further extended to the left. * @param curr the site to optimize * @param last the first bond that CANNOT be moved */ static private void extendLeft(Bond[] b, int curr, int last) { // Incrementing curr on every pass is necessary to avoid deadlock // if the bonds can be shuffled around and around in a circle. OUTER_LOOP: for( ; curr < last; curr++) { // Scan for bonds where curr.lower == x.higher for(int i = curr+1; i < last; i++) { if(b[curr].lower == b[i].higher) { rotateRight(b, curr, i); continue OUTER_LOOP; } } // If not, scan for bonds where curr.lower == x.lower and invert for(int i = curr+1; i < last; i++) { if(b[curr].lower == b[i].lower) { b[i] = b[i].mirror; rotateRight(b, curr, i); continue OUTER_LOOP; } } // If we make it here, there's no way to further extend left. break; } } //}}} //{{{ extendRight //############################################################################## /** * Optimizes the polyline by fully extending it to the right. * @param curr the site to optimize * @param last the first bond that CANNOT be moved * @return the first bond that could not be incorporated into the polyline; * it will fall between curr+1 and last, inclusive. */ static private int extendRight(Bond[] b, int curr, int last) { OUTER_LOOP: for( ; curr < last; curr++) { // If not, scan for bonds where curr.higher == x.lower for(int i = curr+1; i < last; i++) { if(b[curr].higher == b[i].lower) { rotateRight(b, curr+1, i); continue OUTER_LOOP; } } // If not, scan for bonds where curr.higher == x.higher and invert for(int i = curr+1; i < last; i++) { if(b[curr].higher == b[i].higher) { b[i] = b[i].mirror; rotateRight(b, curr+1, i); continue OUTER_LOOP; } } // If we made it here, the polyline cannot be further extended. curr++; break; } return curr; } //}}} //{{{ rotateRight //############################################################################## /** * Move items o[start]...o[end-1] to o[start+1]...o[end], * and take the old o[end] and put it in o[start]. */ static private void rotateRight(Object[] o, int start, int end) { if(start >= end) return; Object tmp = o[end]; for(int i = end; i > start; i--) o[i] = o[i-1]; o[start] = tmp; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/src/molikin/AtomClassifier.java0000644000000000000000000000734611531212776021275 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package molikin; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.moldb2.*; //}}} /** * AtomClassifier divides AtomStates into the groups needed in * kinemage drawing: heavy atoms vs. hydrogens and * (for proteins and nucleic acids) mainchain vs. sidechain. * Waters and metals are grouped separately from ohets and unknowns, * because the former shouldn't ever be forming bonds to anything... * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Thu Sep 29 16:26:38 EDT 2005 */ public class AtomClassifier //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Collection atomStates; ResClassifier resClassifier; // First, the disjoint sets: public Set mcHeavy = new CheapSet(new IdentityHashFunction()); public int mcNotCa = 0; public Set mcHydro = new CheapSet(new IdentityHashFunction()); public Set scHeavy = new CheapSet(new IdentityHashFunction()); public Set scHydro = new CheapSet(new IdentityHashFunction()); public Set watHeavy = new CheapSet(new IdentityHashFunction()); public Set watHydro = new CheapSet(new IdentityHashFunction()); public Set metal = new CheapSet(new IdentityHashFunction()); public Set hetHeavy = new CheapSet(new IdentityHashFunction()); public Set hetHydro = new CheapSet(new IdentityHashFunction()); // Now, the unions of the above: public Set bioHeavy = new CheapSet(new IdentityHashFunction()); // mcHeavy + scHeavy //}}} //{{{ Constructor(s) //############################################################################## public AtomClassifier(Collection atomStates, ResClassifier resClassifier) { super(); this.atomStates = atomStates; this.resClassifier = resClassifier; // First, divide all AtomStates into one of eight disjoint sets for(Iterator iter = atomStates.iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); Object clas = resClassifier.classify(as.getResidue()); boolean isH = as.getElement().equals("H"); if(clas == ResClassifier.PROTEIN || clas == ResClassifier.NUCACID) { if(Util.isMainchain(as)) { if(isH) { mcHydro.add(as); } else { mcHeavy.add(as); if (!as.getName().equals(" CA ")) mcNotCa++; } } else // sidechain { if(isH) scHydro.add(as); else scHeavy.add(as); } } else if(clas == ResClassifier.WATER) { if(isH) watHydro.add(as); else watHeavy.add(as); } else if(clas == ResClassifier.METAL) { metal.add(as); } else // OHET and UNKNOWN { if(isH) hetHydro.add(as); else hetHeavy.add(as); } }// for each atom state // Now, create the unions of those sets for convenience: bioHeavy.addAll(mcHeavy); bioHeavy.addAll(scHeavy); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/molikin/CHANGELOG.html0000644000000000000000000003362111744305702015442 0ustar rootrootCHANGELOG

==============================================================================
===  TO DO  ==================================================================
==============================================================================
    Weird PDBs:
        1ACX - weird geom leads to weird bonding patterns
        We could modify AtomGroup.connectHeavyAtoms()
        to keep only the N shortest bonds...
    N-to-C or 5'-to-3' coloring crayon: offer for C-alphas / pseudobackbone?
        ribbons could be nicer if we had xyz for center of nextRes, prevRes
    GUI for: only A alts? only atoms with B -lt 30? Q -gt 0.66?
    Element color map should be pluggable, not from Util (VdWLogic.printAtomBalls)
    The case for ribbon to ball-and-stick communication:
        BnS sidechains should draw to a ribbon guidepoint -- which residues,
        and how to get out the guidepoint coordinates?
        Sidechains should just generate the guidepoints for themselves!
    H checkbox should be disabled when no H are present!
    pointIDs should include file names and occupancies (if not zero?)
    doesn't make any ribbons for PDB 1wej:F (horse cytochrome c) -- why not?
    Ribbon code still slightly off on 2vy1 chain W res 2-4.  Something to do with 
         contiguous residues list not getting made correctly.

==============================================================================
===  CHANGE LOG  =============================================================
==============================================================================
### 1.04 ###
- Fix for bug in modified RNA bases where CM2 methyl wasn't getting hydrogens 
drawn.  Turns out CM2 is both a mainchain and a sidechain atom!

### 1.03 ###
- Quick fix to AtomGraph to re-enable drawing of disulfides.  Sidechains still 
  bond to mainchain if too close.
- Change to BallAndStickLogic to not require model names to only be numbers.
### 1.02 ###
- Modified ballandsticklogic and datacache to take alternate states, for use 
  with RNA rotamer tool.
- Added pinktint back into list of backbone colors, per Jane's request.
- Changed masters all throughout Molikin to match new consensus with Prekin
- Change in AtomGraph to hopefully prevent extraneous bonds being drawn between
  sidechains.
- Added new kin vs. append to current options to Quickin (dak)
- Added public width variable for vectorlists to BallAndStickLogic (dak)
- Added calculation of ribbon sidedness (inside of helix and uniform strand 
  sidedness across a sheet) in RibbonPrinter.printFancyRibbon()
- Made Quickin lots include waters, as in Prekin ... then undid that (DAK)

### 1.01 ###
- Modified drop pdb to do CA by default for lots.
- Modified ribbon code to do fancy coil edges, using new rear and fore keywords
- Moved PDB file suffixes to CoordinateFile.

### 1.00 ###
- Raising molikin to version 1.00 to prepare for deployment at PDB.
- Added capability for doing only one model.
- Added warning to Quickin if input file is large and running as applet.
- Fixed bug where PNA cif files were not getting drawn.  
- Fixed bug where NA cif files weren't getting recognized as NA.

### 0.22 ###
- removed untwist ribbon checkbox from gui
- Added quick kin tool, with lots, ribbons, ca trace, separate residues, ribb+lots.
- Added a few quickin options to mac's drag and drop of pdb files.
- Added Ctrl+I to molikin plugin.
- Added loading of files from king cmdline to quickin.
- Fixed bug with ribbon code where if an nucl acid started with certain partial
  resides, then whole chains would not be drawn.
- Added initial cmdliner, with lots and ribbons.
- Fixed bug where if a nuc acid chain ended without C4', then NullPointerExcept thrown.
- Fixed various bugs if file was CA only with UNK atoms (see 1hr3).
- Fixed odd bug with ribbon code hiccupping on NA residues missing P (see 2vy1 and 1e3o).
- Added gz file reading.

### 0.21 ###
- added capability for appending pdb id to end of point id.
- fixed bug where occupancy wasn't being put in point id.

### 0.20 ###
- Improved compatibility with nucleic acids pdbv3.x.  

### 0.19 ###
- Changed error reporting email to vbc.

### 0.18 ###
- Fixed rainbow colors, they were reversed.
- Fixed PDB file filter so it assumes a file is PDB format if not CIF.

### 0.17 ###
- Fix in ResRanger, I think for the new Hybrid-36 stuff.

### 0.16 ###
- Fixed a bug where molikin wasn't able to handle models with different chainIDs.
- added support for half-bond coloring to ball-and-stick mode.
  Only Bad People would actually want such a thing, of course  ;)

### 0.15 ###
- added pointIDs for ribbons.  Currently NOT pluggable, and method of switching
  from protein rules to RNA/DNA rules is very kludgy.

### 0.14 ###
- Molikin uses chain IDs (conservatively) to avoid cross-chains bonds in EM
  structures.  Still errs on the side of too many bonds instead of too few.
- added ResTypeCrayon; requested by members of BCH 222
- added option to color sidechains/bases by residue type using ResTypeCrayon
- fixed color-by-residue type bug: "if" instead of "else if" caused stick
  drawing to fail!
- fixed ribbon code to not die on C-alpha only protein chains (e.g. 2MYS)
- fixed "CA-only" bug in guide points for nucleic acids too (if it ever occurs)
- tried to color N to C by breaking ribbons into pieces, but you end up with
  arrowheads in random places and the pieces never quite fit together right.
- wrote hack crayon for N to C coloring, added it to ribbon GUI

### 0.13 ###
- added option to draw disulfides all in yellow
- disulfides as part of general sc drawing now can cross chains
- MolikinWindow is now better positioned relative to the main KiNG window
- moved ball-and-stick and VDW rendering into ___Logic classes.
- added crayons: composite, B-factor, occupancy, disulfides
- enabled "color by" logic for VdW and sticks
- changed DecimalFormat instances to always follow US locale
- now Molikin handles Drag-n-Drop of PDB, CIF files

### 0.12 ###
- changed how Crayons work, to allow them to also filter atoms/bonds
- changed StickPrinter to honor Crayon.shouldPrint()
- matched AltConfCrayon and ProteinSecStructCrayon to the new Crayon interface
- changed ConstCrayon to the new Crayon interface
- changed extra digits in ___Printer classes to be optional
- added variable width output to skeined ribbons
- added methods for 1, 2, 3, and 5-skeined ribbons
- moved drawing logic from gui.RibbonPane into logic.RibbonLogic.
  This will facilitate building a command-line UI later on.
- set black-edged ribbons as the default output of RibbonLogic
- fixed higher/lower in wholebond printer
- got nucleic acid ribbons working
- nucleic acid ribbons now match Prekin for B. Golden's "twort" structure
- protein ribbons still match Prekin for 1UBQ
- removed ProteinSecStructCrayon
- changed arguements for RibbonCrayons
- fancy ribbon now uses crayons, though not for breaks
- fancy ribbons now use colorsets

### 0.11 ###
- plugin now marks kin as modified on Append, but not on New (may be throwaway)
- started Ribbons.get(Protein|NucAcid)Contigs()
- added classes GuidePoint, RibbonPrinter, and RibbonPane
- updated MainGuiPane to include ribbons option
- added GuidePoint.prevRes and .nextRes
- added RibbonCrayon and ProteinSecStructCrayon; ribbons are now colored by SS
- added [+] and [-] icons to the MainGuiPane interface
- merged BondOptimizer code into Bond to reduce total number of classes

### 0.10 ###
- removed all the justifyLeft()'s from PrekinIDer after profiling showed that
  to be a hotspot. Formatting numbers and lowercasing are still expensive.
- made waters peachtint, 0.15 to match Prekin
- added AltConfCrayon to handle alt conf pointmasters; set it in GUI
- added CompositeCrayon to allow multiple crayons to play well together
- made changes in driftwood.moldb2 to fix alt conf problem with 1US0, etc.
  C conf had few atoms; fill-in with duplication created many extra A copies.
  Drawing still seems to work fine now that fill-in is done without cloning.
- complexified Util.getElement() b/c 1US0 has junk letters in 1st atom name pos
- removed Util.is(H|Q|CNO|S|Disulfide) b/c they suffer from the same problems.
- 1US0 still doesn't quite work b/c "AC.." is a valid element name!
- removed Util.getElement() b/c we now have moldb2.Atom.getElement()
- this has finally fixed the problems with rendering 1US0
- Calphas / pseudo-backbone is "off" if we're also doing mainchain
- added a few more NA names based on Prekin's NAList
- added _CM2 and _O3P for tr0001 to Util.isMainchain()
- modified gui.SelectorPane to show chains/models only if there are multiple
- fixed insets on SelectorPane's text field for residue numbers
- B factor is only printed in point ID if != 0

### 0.09 ###
- modified the GUI to iterate models, chains at top level; not per panel
  This keeps colors consistent and pieces grouped together.
  Changes to moldb2.Model make the chains come out in order, too.
- changed defaults for BallAndStickPane
- tr0001 OMC 32 caught a possible endless loop in BondOptimizer.extendLeft()
- added pluggable point IDs and matched default to Prekin output
- added check for whether half-bond midpoint is actually needed
- added ability to remove a DrawingPane from the GUI, or to remove all
- added Util.getVdwRadius(), based on Probe's atomprops.h
- added gui.VanDerWaalsPane to do ball/sphere vdW renderings
- created much nicer interface for KiNG plugin; removed old one
- tweaked layout on MainGuiPane

### 0.08 ###
- changed sort order of Bonds to work better with:
- added Util.optimizeBondSequence() for cleaner kinemages
- experimenting with up-front optimization of the set of all bonds shows this
  doesn't improve kinemage connectivity once bonds are broken into mc, sc, etc.
- added Bond.reverse() to facilitate optimizing the connectivity. Is this a good idea???
- NO! added "mirror" field to Bond instead, so they remain immutable.
- elaborated on Util.selectBondsBetween() based on StickPrinter experience
- added BondOptimizer, which can now truly maximize the connectedness
  Adding calls to this from StickPrinter actually speeds things up, as well as
  reduces the size of the kinemage file.
- streamlined the operation of BallAndStickPane a bit
- added PseudoBackbone for doing C-alpha traces and DNA/RNA pseudo bb.
- finished implementation of pseudo-backbone and C-alpha traces
- mocked up a (non-functional) full GUI screen
- finished work on main GUI screen (for the time being); it seems to work well

### 0.07 ###
- simplified StickPrinter and made it significantly faster (!)
- added halfbond capability to StickPrinter
- Oops! Putative speed-up was just a bug (not drawing any sidechains).
  Still, StickPrinter is simplified with no measurable performance penalty.
- improved SelectorPane layout constraints
- added BallAndStickPane; controls are not functional yet
- changed selection API slightly in SelectorPane
- added DataCache for caching calculated geometry data for each model
- added Sets of Residues to ResClassifier
- started moving printing logic out of Test and into BallAndStickPane;
  protein drawing is now working in BallAndStickPane
- simplified BallPrinter
- completed all drawing in BallAndStickPane except pseudobb and atom balls
- added getElement() and getElementColor() to Util
- added BallAndStickPane.printAtomBalls() and hooked it up to the GUI
- moved the "covalent" naming out of AtomGraph and into DataCache.
  This allows us to easily make AtomGraph an abstract class in the future,
  instances of which might concern covalent bonds, H-bonds, etc etc.

### 0.06 ###
- fixed isX() typo bugs in Util
- added BallPrinter
- further subdivided atoms in AtomClassifier
- added BondCrayon, AtomCrayon, and ConstCrayon
- modified BallPrinter and StickPrinter to take a Crayon object
- added primitive SelectorPane and tested it for selecting sc to draw
- added ResRanger for managing range selection statements
- added range support to SelectorPane and coupled List to TextField
- fixed inclusive/exclusive index issue with BitSet in ResRanger
- text field selections are now coupled to the list
- testing against 1RTU, 1EMA: the protein MODRES is pink (het) but still
  connected as it should be ... this seems like a reasonable result.
  Plus, I can't fix it without screwing up other hets!

### 0.05 ###
- added isProtein, isNucleicAcid, and isIon to Util
- added ResClassifier to decide protein/nucleic/ion/water/het
- added AtomClassifier to decide bb/sc and heavy/H
- added BondClassifier to get standard kinemage groupings (bb/sc, prot/het)
- added some extra sets to AtomClassifier for convenience
- rewrote Test in terms of the new classes -- shorter and cleaner
- removed BondClassifier; on further thought, it's not necessary

### 0.04 ###
- string interning in moldb seems to have sped things up across the board,
  though I'm not sure why -- maybe faster comparisons somewhere?
- updated Test b/c driftwood.moldb2.ModelGroup became CoordinateFile

### 0.03 ###
- refactored Test to accept either PDB or mmCIF input
- stopped Test from printing xxxlists when there is no content
- created KingMoleculeImporter as a plugin to load PDBs/mmCIFs directly in KiNG
  It uses Test to do its drawing and (at the moment) is not configurable.
- changed AtomGraph and Util.selectBondsBetween() to return a Collection of
  Bond objects, rather than a SortedSet. AtomGraph still uses TreeSet, but
  Util uses ArrayList b/c it's faster/cheaper and the Bonds are already sorted.
- tested importing 1JJ2 (lg. ribosomal subunit) into KiNG -- works pretty well,
  except that some hets are "bonded" to protein (same for 1BOV and others...)

### 0.02 ###
- added isSS(), isDisulfide() to Util
- added selectBondsBetween() to Util
- added getCovalentUnbonded() to AtomGraph
- added segregation by atom type and lots-like drawing to Test

### 0.01 ###
- created AtomGraph, Bond, Util
- created Test to do quick-and-dirty tests of the basic functions
- using Unix TIME, tested vs. Prekin on 1JJ2 -- comparable speed.
  Slower on 1UBQ, probably due to JITing (and other overhead?)

king-2.21.120420/molikin/doc/0000755000000000000000000000000011744306102014020 5ustar rootrootking-2.21.120420/molikin/doc/molikin_arch.graffle0000644000000000000000000012570711531212770020024 0ustar rootroot ActiveLayerIndex 0 AutoAdjust CanvasColor w 1 CanvasOrigin {0, 0} CanvasScale 1 ColumnAlign 1 ColumnSpacing 36 CreationDate 2007-05-09 08:51:00 -0400 Creator Ian W. Davis DisplayScale 1 in = 1 in GraphDocumentVersion 5 GraphicsList Bounds {{528.031, 355.5}, {223.469, 98}} Class ShapedGraphic FitText Vertical Flow Resize FontInfo Color w 0 Font PalatinoLinotype-Bold Size 12 ID 126 Shape Rectangle Style fill Draws NO shadow Draws NO stroke Draws NO Text Align 3 Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Bold;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qj\pardirnatural \f0\b\fs24 \cf0 Molikin "thinks" in terms of sets (of atoms, bonds, or residues) and set operations (intersection, union, difference). For example: atoms that are protein and sulfur and sidechain; bonds from (protein or nucleic acid) and not H to heterogen and not H.} Bounds {{168.75, 441}, {76.5, 18}} Class ShapedGraphic ID 125 Shape Rectangle Style stroke CornerRadius 20 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 Bond[]} Class LineGraphic Head ID 92 Info 9 ID 124 Points {189, 463.5} {157, 247.5} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 101 Info 2 Bounds {{405, 441}, {76.5, 18}} Class ShapedGraphic ID 123 Shape Rectangle Style stroke CornerRadius 20 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 AtomState[]} Bounds {{571.5, 463.5}, {180, 58.5}} Class ShapedGraphic ID 122 Shape Rectangle Style fill Color b 0.981949 g 0.822675 r 0.778683 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 Util\ (atom properties, set operations, ...)} Bounds {{5.5, 265.5}, {148.5, 42}} Class ShapedGraphic FitText Vertical Flow Resize FontInfo Color w 0 Font Helvetica-Bold Size 12 ID 121 Shape Rectangle Style fill Draws NO shadow Draws NO stroke Draws NO Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 Crayons determine point colors, masters, width, and radius; aspects; ...} Class Group Graphics Bounds {{13.5, 425.25}, {139.5, 18}} Class ShapedGraphic ID 115 Shape Rectangle Style fill Color b 0.826566 g 0.970489 r 0.827604 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 ...} Bounds {{13.5, 407.25}, {139.5, 18}} Class ShapedGraphic ID 116 Shape Rectangle Style fill Color b 0.826566 g 0.970489 r 0.827604 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 AltConfCrayon} Bounds {{13.5, 389.25}, {139.5, 18}} Class ShapedGraphic ID 117 Shape Rectangle Style fill Color b 0.826566 g 0.970489 r 0.827604 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 ResTypeCrayon} Bounds {{13.5, 371.25}, {139.5, 18}} Class ShapedGraphic ID 118 Shape Rectangle Style fill Color b 0.826566 g 0.970489 r 0.827604 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 OccupancyCrayon} Bounds {{13.5, 353.25}, {139.5, 18}} Class ShapedGraphic ID 119 Shape Rectangle Style fill Color b 0.826566 g 0.970489 r 0.827604 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 BfactorCrayon} Bounds {{9, 312.75}, {148.5, 135}} Class ShapedGraphic ID 120 Shape Rectangle Style fill Color b 0.826566 g 0.970489 r 0.827604 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 CompositeCrayon\ (combines other crayons)} TextPlacement 0 ID 114 Bounds {{234, 275.625}, {261, 101.25}} Class ShapedGraphic ID 113 Shape Cloud Style fill Color a 0.85 b 1 g 1 r 1 shadow Draws NO Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 Printers get sets of AtomStates, Bonds, and/or Residues describing what to render. In the GUI, set selections are made by SelectorPane.} Class LineGraphic Head ID 92 ID 112 Points {315, 391.5} {170, 247} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 102 Class LineGraphic Head ID 93 ID 111 Points {315, 391.5} {343.702, 247.99} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 102 Class LineGraphic Head ID 95 ID 110 Points {315, 391.5} {563.202, 324.131} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 102 Class LineGraphic Head ID 92 ID 109 Points {441, 391.5} {185, 247} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 103 Class LineGraphic Head ID 93 ID 108 Points {441, 391.5} {369.224, 247.947} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 103 Class LineGraphic Head ID 95 ID 107 Points {441, 391.5} {589.755, 324.206} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 103 Bounds {{274.5, 441}, {76.5, 18}} Class ShapedGraphic ID 106 Shape Rectangle Style stroke CornerRadius 20 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 Residue[]} Class LineGraphic Head ID 103 ID 105 Points {378, 463.5} {441, 427.5} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 101 Class LineGraphic Head ID 102 ID 104 Points {378, 463.5} {315, 427.5} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 101 Info 4 Bounds {{378, 391.5}, {126, 36}} Class ShapedGraphic ID 103 Magnets {0, 1} {0, -1} Shape Rectangle Style fill Color b 0.981949 g 0.822675 r 0.778683 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 AtomClassifier} Bounds {{252, 391.5}, {126, 36}} Class ShapedGraphic ID 102 Magnets {0, 1} {0, -1} Shape Rectangle Style fill Color b 0.981949 g 0.822675 r 0.778683 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 ResClassifier} Bounds {{0, 463.5}, {567, 36}} Class ShapedGraphic ID 101 Magnets {-0.7396, -1.1094} {-0.421637, -1.26491} {-7.94729e-08, -1.33333} {0.421637, -1.26491} {0.7396, -1.1094} {1.1094, -0.7396} {1.26491, -0.421638} {1.33333, 0} {1.26491, 0.421638} {1.1094, 0.7396} {0.7396, 1.1094} {0.421637, 1.26491} {-7.94729e-08, 1.33333} {-0.421637, 1.26491} {-0.7396, 1.1094} {-1.1094, 0.7396} {-1.26491, 0.421638} {-1.33333, 0} {-1.26491, -0.421638} {-1.1094, -0.7396} Shape Rectangle Style fill Color b 0.981949 g 0.822675 r 0.778683 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 AtomGraph\ (finds neighboring AtomStates based on distance cutoffs)} Bounds {{0, 504}, {567, 18}} Class ShapedGraphic ID 100 Shape Rectangle Style fill Color b 0.981949 g 0.822675 r 0.778683 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 DataCache} Bounds {{383.5, 49.5}, {232.5, 18}} Class ShapedGraphic Flow Overflow ID 99 Line ID 85 Position 0.66500324010848999 RotationType 0 Shape Rectangle Style stroke CornerRadius 20 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 plain text (kinemage format)} Wrap YES Class LineGraphic Head ID 82 ID 98 Points {375.75, 76} {375.75, 41} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 84 Bounds {{636.75, 260.5}, {110.25, 18}} Class ShapedGraphic ID 97 Shape Rectangle Style stroke CornerRadius 20 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 GuidePoint[]} Class LineGraphic Head ID 94 ID 96 Points {630, 287.5} {630, 248} Style stroke HeadArrow FilledArrow TailArrow 0 Tail ID 95 Bounds {{504, 288}, {252, 36}} Class ShapedGraphic ID 95 Shape Rectangle Style fill Color b 0.826566 g 0.970489 r 0.827604 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 Ribbons\ (makes guides from Ca/P locations)} Bounds {{504, 175.5}, {252, 72}} Class ShapedGraphic ID 94 Shape Rectangle Style fill Color b 0.826566 g 0.970489 r 0.827604 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 RibbonPrinter\ (takes RibbonCrayon; no IDs yet)\ (uses driftwood.r3.NRUBS for splining)} Bounds {{202.5, 175.5}, {297, 72}} Class ShapedGraphic ID 93 Shape Rectangle Style fill Color b 0.826566 g 0.970489 r 0.827604 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 BallPrinter\ (takes AtomCrayon, AtomIDer)} Bounds {{0, 175.5}, {198, 72}} Class ShapedGraphic ID 92 Magnets {0.292929, 0.5} {0.358586, 0.493056} {0.434343, 0.493056} Shape Rectangle Style fill Color b 0.826566 g 0.970489 r 0.827604 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 StickPrinter\ (takes BondCrayon, AtomIDer)} Bounds {{504, 135}, {247.5, 36}} Class ShapedGraphic ID 91 Shape Rectangle Style fill Color b 0.826566 g 0.970489 r 0.827604 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 RibbonLogic} Bounds {{252, 135}, {247.5, 36}} Class ShapedGraphic ID 90 Shape Rectangle Style fill Color b 0.826566 g 0.970489 r 0.827604 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 VanDerWaalsLogic} Bounds {{0, 135}, {247.5, 36}} Class ShapedGraphic ID 89 Shape Rectangle Style fill Color b 0.826566 g 0.970489 r 0.827604 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 BallAndStickLogic} Bounds {{504, 99}, {247.5, 18}} Class ShapedGraphic ID 88 Shape Rectangle Style fill Color b 0.648066 g 0.853056 r 0.970092 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 RibbonPane (uses SelectorPane)} Bounds {{252, 99}, {247.5, 18}} Class ShapedGraphic ID 87 Shape Rectangle Style fill Color b 0.648066 g 0.853056 r 0.970092 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 VanDerWaalsPane (uses SelectorPane)} Bounds {{0, 99}, {247.5, 18}} Class ShapedGraphic ID 86 Shape Rectangle Style fill Color b 0.648066 g 0.853056 r 0.970092 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 BallAndStickPane (uses SelectorPane)} Class LineGraphic ID 85 Points {0, 58.5} {751.5, 58.5} Style stroke HeadArrow 0 Pattern 2 TailArrow 0 Width 2 Bounds {{0, 76.5}, {751.5, 18}} Class ShapedGraphic ID 84 Shape Rectangle Style fill Color b 0.648066 g 0.853056 r 0.970092 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 MainGuiPane} Bounds {{0, 535.5}, {751.5, 36}} Class ShapedGraphic ID 83 Shape Rectangle Style fill Color b 0.978637 g 0.704295 r 0.749065 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 driftwood.moldb2.* (CoordinateFile, Model, Residue, Atom; ModelState, AtomState)} Bounds {{0, 22.5}, {751.5, 18}} Class ShapedGraphic ID 82 Shape Rectangle Style fill Color b 0.622553 g 0.978683 r 1 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 MolikinWindow} Bounds {{0, 0}, {751.5, 18}} Class ShapedGraphic ID 81 Shape Rectangle Style fill Color b 0.622553 g 0.978683 r 1 Text Text {\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420 {\fonttbl\f0\fswiss\fcharset77 Helvetica-Oblique;} {\colortbl;\red255\green255\blue255;} \pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural \f0\i\fs24 \cf0 MolikinPlugin} GridInfo GridSpacing 4.5 MajorGridSpacing 16 SnapsToGrid YES GuidesLocked NO GuidesVisible YES HPages 1 ImageCounter 1 IsPalette NO KeepToScale Layers Lock NO Name Layer 1 Print YES View YES LayoutInfo LinksVisible NO MagnetsVisible NO MasterSheet Master 1 MasterSheets ActiveLayerIndex 0 AutoAdjust CanvasColor w 1 CanvasOrigin {0, 0} CanvasScale 1 ColumnAlign 1 ColumnSpacing 36 DisplayScale 1 in = 1 in GraphicsList GridInfo HPages 1 IsPalette NO KeepToScale Layers Lock NO Name Layer 1 Print YES View YES LayoutInfo Orientation 2 OutlineStyle Basic RowAlign 1 RowSpacing 36 SheetTitle Master 1 UniqueID 1 VPages 1 ModificationDate 2007-05-09 10:22:21 -0400 Modifier Ian W. Davis NotesVisible NO Orientation 2 OriginVisible NO OutlineStyle Basic PageBreaks YES PrintInfo NSBottomMargin float 0 NSLeftMargin float 0 NSOrientation int 1 NSPaperSize size {792, 612} NSRightMargin float 0 NSTopMargin float 0 ReadOnly NO RowAlign 1 RowSpacing 36 SheetTitle Canvas 1 SmartAlignmentGuidesActive YES SmartDistanceGuidesActive YES UniqueID 1 UseEntirePage VPages 1 WindowInfo CurrentSheet 0 DrawerOpen DrawerTab Outline DrawerWidth 209 FitInWindow Frame {{552, 387}, {833, 738}} ShowRuler ShowStatusBar VisibleRegion {{-25, -18}, {818, 624}} Zoom 1 king-2.21.120420/molikin/doc/molikin_arch.pdf0000644000000000000000000014447611531212770017173 0ustar rootroot%PDF-1.3 % 2 0 obj << /Length 4 0 R /Filter /FlateDecode >> stream xڵ\K7vWԙ#~+[83x,;l5"Cw/MɦHQgoWhB&UvZnlTՎ_0[1z>'0g1Vct1޴#\u:B{5yqLƄ9vVvDv~L*Pig(RT~بȔ0H+= m-U,jEPm=Dܟ9ino%wd}< J9 ~% @@lYjI"Cc`_z8RAA7!rҵFo\VZ!:An?՛]sQV}xn߭fnռ[wOqm>O1*?>`MA tЀh#Nz̕a%`w:Xy J AmG_f2@88kS6[_?]lWG@nX?4q74* Dm*3)/iDi 5K &aNJZ{闋b{^BMC~լݞtuy6C{%pHPKgD?W? LWarڞx&'mz+i Ic/1Yv)N-ww+:e$E4p8,dw(bѩsiWF^p,mC?r(Ӊ%KkaFb"n}Z//Zl=HAN[26c#ZT׉(4~V` ˊBf` ,X9 K1 9op^B&nkNV`b4\0Qc}fFQJQ(MJqNëh/wۻwomvG^aXNA\]KܖD2{vp7/*6|pc ֝B5;1{^=s 1 A%AAdQB [٠0~Jpr H}trΘ3'@oFzzQt'GyU|u~[LJp~#'$O)l!Rڛn_vp'o䙾l؞<m[#[ P:b .[>Ð^A_3,`I6|Οw~Torq\cvVV|nPǔ6X:L^k,Fx4cOC{ |au6+B_1Z!~n+Ʃߠ=(kJ&,3GAm7|E4(U'K>4j7}[B9&Ĉ>ΤVUCOA}?uk6ew݊(SwYwضUy(`)7yɹyQ`73s.vjexcϹԁV O*&fi=^~7we+q0eSC_Pkow0?tFG=Γ|շ!W^jFF|&# N$a&wX Fkf-OlT7zfX2'fW,ZT1ω VI #зiB,1zFkq_uÜOb92W;9_ym+G^~,XGZI697ԣf:L%׸l&~ֹ[옦=j2{ İ.pצV3LQ T58ս,*h1vS_Nrxlmu\X}xz,>ȱ,WT!W* ?J{,\Z%W$$TM&rn̼%yQ#H ~8.-EiWFOIQ7[.dr;CC:شa1J=M')30(zx|(ECѻ_ovq0P8T]Vwq]qw"ĻT8A8L``H6јݦº7.z+xTVY5a}wcLK01)fL&`vcCtZL0‡m6Jإ^B9w']tRhc(+YDŽZPp ^=Rm8.Z% >O:PGi"xTáZ|$w$R}AL#CE.F0ᒖ 8ʴF''aY@&Xӕ4CFI<T~qG x1"NuE^Hc7r-yNQKsg{VzMףYhqx7'M DnFI;_nw++'Z2.4Jtʒ- -%O='ismi[}gK*Ŷ8I&GyLO kwk#*X71e@qdwhF@9{Muwu`+4Lʼn.#i&*I9 u>P0%0"\xQp Fo.R8B3cXI3 an9%PR̕"&.eIh'2c81@/smY#ȅ"C@I'$Si&(9Fä.JepV&mg $QlDBﵲR{ZpUskM=tsxteH+V%/H*t53&aEʿ'`yA? B@%| >?}GJ3X(=/ |~,,( t~pkb=N:@V ~8 /#h#gS2ڼ9O:85Mdž!_Z H>pͱ :?tC3'/<܂ϯx '*N]V[O4Bb@cRIOcuX~y] n2hY-Ӝtetۻ}wPSZ9ʕB(\]Gd8V]_mVَg JtLJU߼&QQZW!H;ظ,V&[ٕ gF}|6.`i6ߢj0o>oiDH)[F/Qz(>nyUQKSx xc| ʞ.wpx>WKܜ$E OL R~vq2xKt(4T: Eޥ02f'E/ĶoMAT ⭋ 4=L ;H,R[JY!q]ւ/RH@ʛpAJЂ{##|x 3.:GHfJv#>za޵3V2gg_4w5&ȧˢ&fofPǚ1D]a"/ˢ?Fu]~)eDTp/}V60 #].S`pU,S>8RŁկxn$vu_ ~Z_ܭW#<4_((5"8 .wW@]Y&HkѴWbC[+Է|rCasch7}+Tt"lM +:/Yd?5+ަuն29}9bQŨE>nUʠ *{\R{V8]2o)q(k2B5YrZHI U xrZ}0d6=jy,UAQ1Iiꁉ?hpJlR~uqCMs+t,S}bnk'*>GK~WIn#z.N89BXA/fʵ -k;9hr*uG4ur5s4C{*N²͌Z[[L3Q/nD k&i}o'g\ȹn{7.NsQTgWT35ta*;(z{umAXhW3:>t/fqDѓTh&*3_;\5Մ*%-ܫYzo`uԁ09k׷2 %sCjHIwx8;t վ~#pD i% Iҫ[_MUQC]d0BFfs7x 7:z_""}󐢳%?"| ř.Jℨh62ѹYJT*9ŭ U^pdp|YnWrؼ*=hX;RW76<ȦbQ Jt mliCٔ/Jl_ϊ*s^DSt Ut[({`DsyC|= JQnb{*ѲEVO1=]&Sj;u.G7. >9 o2ݰs$&@vGwNǻj.W>>Kc#s<쮭I.ٜ(-6_JZJ&ՍUX~ #MBD|6p-ݏ1>w%nc1+)5Ԅa8j/NW|xjn`5.p҇3x'0PLM M*a~DwgqSxſV%a]Eqmw*f Ϗd.>-zyknzR^,wKd9n Gȗdc;VIVQ mI endstream endobj 4 0 obj 6037 endobj 1 0 obj << /Type /Page /Parent 61 0 R /Resources 3 0 R /Contents 2 0 R /MediaBox [0 0 796 611] >> endobj 3 0 obj << /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ] /ColorSpace << /Cs2 58 0 R /Cs1 57 0 R >> /ExtGState << /Gs2 62 0 R /Gs1 63 0 R >> /Font << /F1.0 59 0 R /F2.0 60 0 R >> /XObject << /Im21 45 0 R /Im10 23 0 R /Im13 29 0 R /Im3 9 0 R /Im15 33 0 R /Im2 7 0 R /Im26 55 0 R /Im5 13 0 R /Im16 35 0 R /Im12 27 0 R /Im18 39 0 R /Im20 43 0 R /Im6 15 0 R /Im23 49 0 R /Im7 17 0 R /Im19 41 0 R /Im14 31 0 R /Im11 25 0 R /Im24 51 0 R /Im22 47 0 R /Im1 5 0 R /Im25 53 0 R /Im17 37 0 R /Im4 11 0 R /Im9 21 0 R /Im8 19 0 R >> >> endobj 45 0 obj << /Length 46 0 R /Type /XObject /Subtype /Image /Width 98 /Height 39 /ColorSpace 57 0 R /SMask 64 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Om /, endstream endobj 46 0 obj 34 endobj 23 0 obj << /Length 24 0 R /Type /XObject /Subtype /Image /Width 269 /Height 57 /ColorSpace 57 0 R /SMask 66 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Om Of endstream endobj 24 0 obj 67 endobj 29 0 obj << /Length 30 0 R /Type /XObject /Subtype /Image /Width 273 /Height 93 /ColorSpace 57 0 R /SMask 68 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Omo) endstream endobj 30 0 obj 97 endobj 9 0 obj << /Length 10 0 R /Type /XObject /Subtype /Image /Width 773 /Height 57 /ColorSpace 57 0 R /SMask 70 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Om ?.u endstream endobj 10 0 obj 151 endobj 33 0 obj << /Length 34 0 R /Type /XObject /Subtype /Image /Width 132 /Height 39 /ColorSpace 57 0 R /SMask 72 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x  Oml> stream x1 Om aX endstream endobj 8 0 obj 111 endobj 55 0 obj << /Length 56 0 R /Type /XObject /Subtype /Image /Width 98 /Height 39 /ColorSpace 57 0 R /SMask 76 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Om /, endstream endobj 56 0 obj 34 endobj 13 0 obj << /Length 14 0 R /Type /XObject /Subtype /Image /Width 269 /Height 39 /ColorSpace 57 0 R /SMask 78 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x nH@pmz endstream endobj 14 0 obj 52 endobj 35 0 obj << /Length 36 0 R /Type /XObject /Subtype /Image /Width 254 /Height 39 /ColorSpace 57 0 R /SMask 80 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Omt endstream endobj 36 0 obj 52 endobj 27 0 obj << /Length 28 0 R /Type /XObject /Subtype /Image /Width 318 /Height 93 /ColorSpace 57 0 R /SMask 82 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x  OmoZ endstream endobj 28 0 obj 108 endobj 39 0 obj << /Length 40 0 R /Type /XObject /Subtype /Image /Width 588 /Height 57 /ColorSpace 57 0 R /SMask 84 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x  Om7x5 endstream endobj 40 0 obj 120 endobj 43 0 obj << /Length 44 0 R /Type /XObject /Subtype /Image /Width 147 /Height 57 /ColorSpace 57 0 R /SMask 86 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Om /b1 endstream endobj 44 0 obj 47 endobj 15 0 obj << /Length 16 0 R /Type /XObject /Subtype /Image /Width 269 /Height 39 /ColorSpace 57 0 R /SMask 88 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x nH@pmz endstream endobj 16 0 obj 52 endobj 49 0 obj << /Length 50 0 R /Type /XObject /Subtype /Image /Width 161 /Height 39 /ColorSpace 57 0 R /SMask 90 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x I endstream endobj 50 0 obj 39 endobj 17 0 obj << /Length 18 0 R /Type /XObject /Subtype /Image /Width 269 /Height 39 /ColorSpace 57 0 R /SMask 92 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x nH@pmz endstream endobj 18 0 obj 52 endobj 41 0 obj << /Length 42 0 R /Type /XObject /Subtype /Image /Width 147 /Height 57 /ColorSpace 57 0 R /SMask 94 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Om /b1 endstream endobj 42 0 obj 47 endobj 31 0 obj << /Length 32 0 R /Type /XObject /Subtype /Image /Width 273 /Height 57 /ColorSpace 57 0 R /SMask 96 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x nH@[ endstream endobj 32 0 obj 67 endobj 25 0 obj << /Length 26 0 R /Type /XObject /Subtype /Image /Width 219 /Height 93 /ColorSpace 57 0 R /SMask 98 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x  Om endstream endobj 26 0 obj 82 endobj 51 0 obj << /Length 52 0 R /Type /XObject /Subtype /Image /Width 201 /Height 80 /ColorSpace 57 0 R /SMask 100 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x nH@p endstream endobj 52 0 obj 69 endobj 47 0 obj << /Length 48 0 R /Type /XObject /Subtype /Image /Width 170 /Height 156 /ColorSpace 57 0 R /SMask 102 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Om ?6 endstream endobj 48 0 obj 100 endobj 5 0 obj << /Length 6 0 R /Type /XObject /Subtype /Image /Width 773 /Height 39 /ColorSpace 57 0 R /SMask 104 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Om aX endstream endobj 6 0 obj 111 endobj 53 0 obj << /Length 54 0 R /Type /XObject /Subtype /Image /Width 98 /Height 39 /ColorSpace 57 0 R /SMask 106 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Om /, endstream endobj 54 0 obj 34 endobj 37 0 obj << /Length 38 0 R /Type /XObject /Subtype /Image /Width 588 /Height 39 /ColorSpace 57 0 R /SMask 108 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x  Om7  endstream endobj 38 0 obj 90 endobj 11 0 obj << /Length 12 0 R /Type /XObject /Subtype /Image /Width 773 /Height 39 /ColorSpace 57 0 R /SMask 110 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Om aX endstream endobj 12 0 obj 111 endobj 21 0 obj << /Length 22 0 R /Type /XObject /Subtype /Image /Width 269 /Height 57 /ColorSpace 57 0 R /SMask 112 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Om Of endstream endobj 22 0 obj 67 endobj 19 0 obj << /Length 20 0 R /Type /XObject /Subtype /Image /Width 269 /Height 57 /ColorSpace 57 0 R /SMask 114 0 R /BitsPerComponent 8 /Filter /FlateDecode >> stream x1 Om Of endstream endobj 20 0 obj 67 endobj 112 0 obj << /Length 113 0 R /Type /XObject /Subtype /Image /Width 269 /Height 57 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xjPk5IUQTn\DtM \eR W u#v!)H8){q{9:# $$iJG(aYΎ24H aE'N \E<9Bփ ]Ba!).6ќCIrDI\HģJD|џAOeB l&W`)rw5B4ΝJ ՊZ>ϥcgN\>9vVRU ͫKbQ֝ %%]h~BFo7J)H"Oa!WNTw{F }՛K^C~tGRzC3 .ƝިRd)k80N[+g=ȐYBݏK\X 1(Tlzj1oB",d6GNk`2_7xY/AU+&eF|'@ d 2@ d 2@G;n5/Bֺ)!~ơSs:]NLm?聚z65;nê*X"FDG> endstream endobj 113 0 obj 654 endobj 114 0 obj << /Length 115 0 R /Type /XObject /Subtype /Image /Width 269 /Height 57 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xjPk5IUQTn\DtM \eR W u#v!)H8){q{9:# $$iJG(aYΎ24H aE'N \E<9Bփ ]Ba!).6ќCIrDI\HģJD|џAOeB l&W`)rw5B4ΝJ ՊZ>ϥcgN\>9vVRU ͫKbQ֝ %%]h~BFo7J)H"Oa!WNTw{F }՛K^C~tGRzC3 .ƝިRd)k80N[+g=ȐYBݏK\X 1(Tlzj1oB",d6GNk`2_7xY/AU+&eF|'@ d 2@ d 2@G;n5/Bֺ)!~ơSs:]NLm?聚z65;nê*X"FDG> endstream endobj 115 0 obj 654 endobj 100 0 obj << /Length 101 0 R /Type /XObject /Subtype /Image /Width 201 /Height 80 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xKp-a[ @$O"xڡHi Qԋ"u!|z|c nK_ 4ĥҴw A#x^%9AE ';(8(r# k_ j,P> stream xiWW #*ō]QЄժјcZk݊JW뀒{}{̝֭7(>TM :_ȟv_9f!A0̠ӾO0 0XF,aBEX̯SFP(X*W(Uj(jZ Ip!K_'lT *4.2Z7b@b0Q0<!|*dTIDR,=)fSlV#/)4'i"b͖B^ VtϚ'gB1y>NQ^YKm8 ڧŧ@0W7gV7 Z%N!>/>v^f5TКKȄf`)4& %d+۟ތMLNMfjr=KV<X`!^yCGť,//-O[3 $t$HMzPfzaucog(gks}in쏮2kRReLi7 O.o{ZuV, Ÿb> x κqaL;g`;\|< >{Vf682S0T;}{1']ΏO$?G9pH4I9%m=#on(8Ț#z;?Zb! ^d!9^lj~(/tJ~ᆊЋ tC$' 挂چMOZ򤹩Y(N18t|%O/,q>*+KYlKA Qj"o2%/Ŕ`3Dj5 )ƿ2aå* Ձ&V$"ʾrqvdqP&%L,DcA|.7ylR8|9|A]RTNg0abB0d ;pO E09 "< endstream endobj 81 0 obj 1185 endobj 90 0 obj << /Length 91 0 R /Type /XObject /Subtype /Image /Width 161 /Height 39 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xOk@dLҤ(*P&^<)R)*=x < HAJZ?nݥeY)/C&3 QpCI |gHf2aho. $r^?/{9&S'Q1 h8(8/ XT4D=,~-!FGH勥2Db>Qd)"x.!htzRȦ"ķ'rf˾lw j_-+YY8g=AI-hewNQvl ď]p"Sis;!nklT2wlTUV۹M3ѝn՜3;b2ݛ|~tӵO|R dR g0y|Z Z>=N΅Ͼ qTz|y9{WVƅm >Hrgj1;z9-؇U r+7 v1AObo3ѿQ#&AU[?˿z` endstream endobj 91 0 obj 586 endobj 84 0 obj << /Length 85 0 R /Type /XObject /Subtype /Image /Width 588 /Height 57 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xK"agfL Eeta"yK!9)< H"D@ bu[%:|^B:|++ߖ{0_t0^8n".$QuB$ϱa/ʆ?j&MS Ey"%ARZ( @""!-H"'>5I3nfRfêO?&%5LP,WvTB.cQ'pF^ͪ74VmOoEUE-yy96;UiUI{- jnun@z5o"nÊ-Yv9m*eOdpkH2Wmsj8 0^NY%#5nْt2vV0cA%=U~@`v;;V1$L:q3d螴L\?ZJ}6MgW/t48k7*لlY]4w{7wOϯo?wml2_?@K-Z@K-ZBK-Z@K-ZBK-Z o _P;znhŞ P9P_.څ^%P۫Ď.ž7uwP=ijwp?hݏ]Kvv޽]o'? endstream endobj 85 0 obj 718 endobj 66 0 obj << /Length 67 0 R /Type /XObject /Subtype /Image /Width 269 /Height 57 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xjPk5IUQTn\DtM \eR W u#v!)H8){q{9:# $$iJG(aYΎ24H aE'N \E<9Bփ ]Ba!).6ќCIrDI\HģJD|џAOeB l&W`)rw5B4ΝJ ՊZ>ϥcgN\>9vVRU ͫKbQ֝ %%]h~BFo7J)H"Oa!WNTw{F }՛K^C~tGRzC3 .ƝިRd)k80N[+g=ȐYBݏK\X 1(Tlzj1oB",d6GNk`2_7xY/AU+&eF|'@ d 2@ d 2@G;n5/Bֺ)!~ơSs:]NLm?聚z65;nê*X"FDG> endstream endobj 67 0 obj 654 endobj 86 0 obj << /Length 87 0 R /Type /XObject /Subtype /Image /Width 147 /Height 57 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xٱkP䙤!UQTM,*J8Dt҂E -U:8DZ "v _;(<ސ?><2~GGNg>a8A۝J$E3 04EO I܉/bn('K?v"|b0bqn EP;%児$'ᦩI%!K!g)0dx1"+j&/p+󹌪gHbM9!r+FV[jT iDh'$ ɩ3hW6ZWfRrǒDqdX7ܺ7ViV""h>(klY=m`{V4 ivco8M~p;3I?*fk?Nfɣ형3V~\m4[F>)HS=7p[FuZTcEZֺno|CrH!9$P|!Ep&S8gNt{#@p }[K$wN"a endstream endobj 87 0 obj 602 endobj 64 0 obj << /Length 65 0 R /Type /XObject /Subtype /Image /Width 98 /Height 39 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xc`H`}cfa62H 3*3sprsx89XY[2_PXDTLLd &&*""$@y$eIJJ r2R"|z_DBFAECKGO4``$'%* @ xe4t̬lI@vV&Z|\@+PWHBA]/ ((8Dboa,- &!IE-c[WԴLRAFzZrBlx'+"ٸ%}BrJ+U%IQV¼ptZ~E]s{gWw頻(3>JOYRa_LfI]{朗3f̜E:9cڔ܄`Ws-9Q>fh01p+ZyEf6L5o%K .]xmUq*R\0O0r J;'5Nt嚵֯_4Աn gOlȌ0הF-"eS5mu7oFغeUKf5%)l`UеO,j8w-wMصs綍NmH q2TFv>q%}Բ Woޱk^؏ ,{ܺn̞5)~d *:/^y=+vm[lvo]N@x?@xH EpZ<-m~̴ŔEilL(yښ yz\`΍p0TET/C̵ #`ZnZ"! T? Ԭ"u,jGz5d)kk; KKTi}r8|thҡM=@C E endstream endobj 65 0 obj 880 endobj 72 0 obj << /Length 73 0 R /Type /XObject /Subtype /Image /Width 132 /Height 39 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xSZg\ j0[`5X Jnj)H3ո.MbElL&3g=9W'EOw8@‚(#i4:h0#:pT@ &ˋÏ8l&HsUDX\H"!rB2 BȤba< SH"fR$1F4u:FR"C" -*Sӳ>aiH?uu422>ƱkɆ=)50V粛U.kJ]nqCo_`tzv>\\BԈNQN\C 0W6Zt=[Z^ 5t'x>#Z'0b9f}c6 w5ݵekd<@C&Yn{s6mbR^ HK2X+ L-nlxzoz(8{\_qMĄ@aK ]M=~{s! {ۛ@WCgu'4D"Z54 oaUZ_Y8-@M-NP#3/ConbFXԤTMoS ך5٥e,~,g~lk t̋{O-`%;٩_Ok-QI {)Ůz0.~dZ&p`SYtC0)D̂R,IS,fltJY \hxfwR\QSuގFOf7#'i"Ő[(qcTmi2Ԉइżs 9DN,J&SZ3:}lcVxAcDRJI4$ԔkrDŽO{*W#) MZr pYt x6h`sx n 0'b@~Q vӱT(y^?`}8X@D7&.#T endstream endobj 73 0 obj 1195 endobj 104 0 obj << /Length 105 0 R /Type /XObject /Subtype /Image /Width 773 /Height 39 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xMK*Q434:€/"M!Y)-\ H m#D-@ ~zriqg0̟*b!19vU "Jt'/zfY;(;QE*^N ^lZ''VӬp@⼫jju^f3۲ռ2;Vlɴv /h6t}m C6dlh| @ڹ[j.oU`(ԬnϹLg4M'7Nk F,(~@K#{p5{?lp7Gf1}@RruꌦO-#U/g54lx}b>ۍJ6Bonz<^;:]jTp]%\&`wsOqw~wHHO'@g =cLO!p!LO,R,RLO R pG endstream endobj 105 0 obj 675 endobj 106 0 obj << /Length 107 0 R /Type /XObject /Subtype /Image /Width 98 /Height 39 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xc`H`} gbbfaa62H 3.Ƴqprqsxx99YY4OPHDDTLLd &&*",ɎF&fVn>Aq)Y9E%%%e0?t+SV700$ hi(HssD,\|"Z&V{;+3#] %YqAȾ`bfV2w !y;٘+Hr #+'g`DlBrZzF& ##-59>:XKQR )8xEU2K+UE9i>fڊlpbbTֳr,nl!twu7UE;jʋ H,|Zn!M]S͘9t0sƌzJ2cԤ٘^R1tϭn>w%K.#,]dYSzK3"u8X-"iY:q֮[~PǺkV.?89XMJ LL|bz Eްy6׭X0&'RKVf3ShZEԅ6n۹sn۷_>wbsQ(/)5׈욞Kmݹg^؏Xdڱy©eAJ|(6E^aۮ=&vܼvΊ`et@dCUCF~ABӌr)6l Y4)[QdJ8lӇq)T M=ְ!րh^}VzKhE endstream endobj 107 0 obj 817 endobj 92 0 obj << /Length 93 0 R /Type /XObject /Subtype /Image /Width 269 /Height 39 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xAk@k̘(*PAR/AK )ACK<DZ ԋPDڃT _mݮB>13 `0y/D`.؞ǝ[)AR4͸ai$nx> <',CyuAҬB,.B<&DAƾ0x &dZNJ QqK GD)J ,K|6-C40@\4+ހ΋ic)$_HLUvye`ԚJ,%| Y^rUUM kj5' kES~q-ķiI endstream endobj 93 0 obj 623 endobj 82 0 obj << /Length 83 0 R /Type /XObject /Subtype /Image /Width 318 /Height 93 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xK"agfL Eela"yKPt4 Qu!r],|‹维?O9,qB,+nr JJ$Q9?xQVAU)MS5Ey7$%"1=a Rq= iE|Od֍LgL:i& =d|Z0|TAʥB>6xvNTf*WܭZ"UYb.U[yy96Ra|k"Rovêlp@ =At3WͶs"RcݴkkaE_-t{n 껽ӲbDp+H"[i4Sb0B i6*DĿ-`Wvǽ'7d> Ryٷ ICOVRywGDjv7GZ)Ww=m#SNtH=ͦaU/g6nlvϮn_{y~|:l'zP"=AzЃ=!AzCЃ=AzЃ=AAzЃ=AzЃ==AzzЃ=AzCЃ=R` f ;Tt;T@@);J;[[-S-cf;4;q@s5hk m+VT7pOB\k endstream endobj 83 0 obj 736 endobj 98 0 obj << /Length 99 0 R /Type /XObject /Subtype /Image /Width 219 /Height 93 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xKpat0P'`(y0] =>?=_?绳aW}~,r4BȃoiF 79A8F '{$x&Rп' ߶ŀĔxBųD\EBr@ٍ+&TF♞IiIU K>E'GU-+˕*UB.Q3(ĉR / qg Ө部$rhKs3B kF:=kYjô{KcEY5junϺve"9_HKն{}gpg߳ۖQՐ?G\hIj͖} G< kլ.`L+ԭN׹Ogs2( endstream endobj 99 0 obj 656 endobj 78 0 obj << /Length 79 0 R /Type /XObject /Subtype /Image /Width 269 /Height 39 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xAk@k̘(*PAR/AK )ACK<DZ ԋPDڃT _mݮB>13 `0y/D`.؞ǝ[)AR4͸ai$nx> <',CyuAҬB,.B<&DAƾ0x &dZNJ QqK GD)J ,K|6-C40@\4+ހ΋ic)$_HLUvye`ԚJ,%| Y^rUUM kj5' kES~q-ķiI endstream endobj 79 0 obj 623 endobj 76 0 obj << /Length 77 0 R /Type /XObject /Subtype /Image /Width 98 /Height 39 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xݗK"as񒃗1ݴ`Ґ\"i% !H*j) Z+VJk쿶c-jn;fpyLY+ Ws@iOg<>" A @p`T7ڜ72 d`|rڌzTsEbդ L/.~at`j: EL'X ,RhC[;_^ ^Jh"de Axg6vON1`gcy&\"c LMX;ܣͽU,3m.GVB-BN,#'Da/N¡ /e'1)r3\>^'L%G+gxLon]w#?r煏]"vYk51 /GAYtdYQ"Ά2^>T!{B^x]*{xxӦ'o:o.06^KUWZd`?dv(;|ǽ~03az 0μ_*+o-.C)U~ endstream endobj 77 0 obj 806 endobj 70 0 obj << /Length 71 0 R /Type /XObject /Subtype /Image /Width 773 /Height 57 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xK"a񚙷iyC1@( "(*A :y(C'!b%X"CD쿶w?A/y=40#z0^ %`ӲT:mx vxҗrP~2>) z XL6C@e\ͤds^@XnOTaXTV*N \K0 Ź5@e+K sB8)ci F&lϟ43yRTQ^4{Dn",+[.vmR^ X j?l*;ok|!/aÎrh'ʎGfVY.m<3\y*v~5[幩L|T "pzmP^m}M:oK/ͣ刺~_*QKei:xsŕjks~uswZs̗V7݋뻇G@ewj)/h#cn˳l816}?F "@D" D@ "@D" D@ "1o6o`;:].RR#[O'R "ef+1Fsh?rLeA.*l&%c }0@z/2)d|sm W´lqչc[0w @7 !;7 !i_/ endstream endobj 71 0 obj 816 endobj 88 0 obj << /Length 89 0 R /Type /XObject /Subtype /Image /Width 269 /Height 39 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xAk@k̘(*PAR/AK )ACK<DZ ԋPDڃT _mݮB>13 `0y/D`.؞ǝ[)AR4͸ai$nx> <',CyuAҬB,.B<&DAƾ0x &dZNJ QqK GD)J ,K|6-C40@\4+ހ΋ic)$_HLUvye`ԚJ,%| Y^rUUM kj5' kES~q-ķiI endstream endobj 89 0 obj 623 endobj 68 0 obj << /Length 69 0 R /Type /XObject /Subtype /Image /Width 273 /Height 93 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xKp[nLG"*J^< DK!EA!Q)"_o_mϕ \F40*i[|3M0a9^u& ϱ 7r3,/J^($MQdwCyq,<8A)PD4P@Ix 'z䠪D*MҩԠ9hV(aMOerbLJ|.ҵXzD(V2[حI׌n! ,Aܬ jɝ0[G$ux`6NR Dֽ$Eճl['.IXYduU .t0[VgIZuiZU 3F:/k6\gVQC5f "#zj;h<%ijNO57nHҦw7o'(GSZfO$mp?Z1%.[d:{t2쟶tLYPvy{~}4y%g/^y[\_y%i@ @ @ @ @ @ @ _ qٍnQp!qCPZAk*G 3g ;G-DG LG-=UGO]gqMfGng]w SO endstream endobj 69 0 obj 711 endobj 108 0 obj << /Length 109 0 R /Type /XObject /Subtype /Image /Width 588 /Height 39 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xK"agfL Eeta"yKPt4 Qu!mZ`_/<++_'[`>xYUBwr J@H$Q94y/Nj @@ԠCE~i%ARZ( @""!-H"Led֍dd3)3ia' İӢ.JXeL#$]&5ΗjV@Qj{|z+*"̒a#SCiUwF8 eE|n:I@{tZv7uM~eÊ-Yv99m*eOdnI͖s^GFKi5dĿ-$cffwx2 0nǮXPȒ*ZNb|s7{ 0_?$L:vdL\߳%Ft0/hpnT m%fu}?_>>~ח|%|& A%%ߺ:/?~ h/h{=(ǡO(  h/Uh{ch͡`>hanhbP'='@k /K |?" endstream endobj 109 0 obj 675 endobj 96 0 obj << /Length 97 0 R /Type /XObject /Subtype /Image /Width 273 /Height 57 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xOK*Qs4`L(*C D0Tfb`\ͦ,DBR D W=<ﻱ? 4>N r4Bh4giR F ! 9AJ\1 n,,K߶(p r,}藃$)pP<4yA+x&d:GtRKJH ,sE(rD|TDTgӚUqǓIL'kӶy-Bd8{IoǗ=($AKfN$1| ӆYJ$Sϔkh:,He>Z9WBMώW9lu7wOϋ7rx]> stream xMK*Q434:€/"M!Y)-\ H m#D-@ v]˥]>0ǟC˲U-s.OX(JDQ9% 4SU%ߐ%#,2r@ EbZ<,bE~B@xɧ5=i2me3)#ka'0,'Ԩndrb @JXe =D]JK{5YnJVT a=S5QfCiVwz8 qexYՌ|n:i@iYjT+BzdZmw48ݶRVce!kH2Wmsj8hxۭf52b0fjV\';M'k۱j#CݿϞh6_ҾC )L:q3sҪ3qE Vh:e>gF%P!`V7;^n.z*SjTp]%\&`wsOqw~wHHO'@g =cLO!p!LO,R,RLO R 2G endstream endobj 111 0 obj 675 endobj 102 0 obj << /Length 103 0 R /Type /XObject /Subtype /Image /Width 170 /Height 156 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xK"auifi0u&!"*F^< i.Pt4 Qu!u[x~߾G 1sP2e9[!e NQ5b%Ixa/ʺ?ji+sO*HJ@ Ebz*ÉLK5#FݪͨR@HoW}p>"ݴi#yR*(nuqN="8]M]SR+BFdmwD4p=m[pH2Wm3r8&=sZj.rKWص JR=UnHDEٷ)S*L:v'CU/g!J}:Mg"zϦiQ&YY0vz׷O/ox{};26VoD)B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B )B H]gYFz0Yf[z)Zig5qzY=(xAW~N endstream endobj 103 0 obj 697 endobj 74 0 obj << /Length 75 0 R /Type /XObject /Subtype /Image /Width 773 /Height 39 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xMK*Q434:€/"M!Y)-\ H m#D-@ v]˥]>0ǟC˲U-s.OX(JDQ9% 4SU%ߐ%#,2r@ EbZ<,bE~B@xɧ5=i2me3)#ka'0,'Ԩndrb @JXe =D]JK{5YnJVT a=S5QfCiVwz8 qexYՌ|n:i@iYjT+BzdZmw48ݶRVce!kH2Wmsj8hxۭf52b0fjV\';M'k۱j#CݿϞh6_ҾC )L:q3sҪ3qE Vh:e>gF%P!`V7;^n.z*SjTp]%\&`wsOqw~wHHO'@g =cLO!p!LO,R,RLO R 2G endstream endobj 75 0 obj 675 endobj 94 0 obj << /Length 95 0 R /Type /XObject /Subtype /Image /Width 147 /Height 57 /ColorSpace /DeviceGray /BitsPerComponent 8 /Filter /FlateDecode >> stream xٱkP䙤!UQTM,*J8Dt҂E -U:8DZ "v _;(<ސ?><2~GGNg>a8A۝J$E3 04EO I܉/bn('K?v"|b0bqn EP;%児$'ᦩI%!K!g)0dx1"+j&/p+󹌪gHbM9!r+FV[jT iDh'$ ɩ3hW6ZWfRrǒDqdX7ܺ7ViV""h>(klY=m`{V4 ivco8M~p;3I?*fk?Nfɣ형3V~\m4[F>)HS=7p[FuZTcEZֺno|CrH!9$P|!Ep&S8gNt{#@p }[K$wN"a endstream endobj 95 0 obj 602 endobj 62 0 obj << /Type /ExtGState /ca 1 >> endobj 63 0 obj << /Type /ExtGState /ca 0.85000002 >> endobj 116 0 obj << /Length 117 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >> stream xڕSMkQ3V܄*tE0~,icAǙd$U7nDn@.pQFQ(_~(t)*ޙνuuMY/ Lj;dTs3Bmtޒ۩ ֹ|]HROk,px\sEf?!:t|04VjU0̸ֿзaK#kIzE~uܞ0-9R쌢eLc VtBr=MQqN`<9't_aX 1/ofy!%)_N/V}*8')3 oծf-G~;$Nmb4G* "ء *,A/fET္06uLIe]z*n_/<`UQf ǝOcˤ&p BJQpxG {mj {Xu>9}+uC=C2nGjZ٘W{~};o6z8lÕ33rlۉjQ endstream endobj 117 0 obj 631 endobj 58 0 obj [ /ICCBased 116 0 R ] endobj 118 0 obj << /Length 119 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >> stream x}OHQǿ%Be&RNW`oʶkξn%B.A1XI:b]"(73ڃ73{@](mzy(;>7PA+Xf$vlqd}䜛] UƬxiO:bM1Wg>q[ 2M'"()Y'ld4䗉2'&Sg^}8&w֚, \V:kݤ;iR;;\u?V\\C9u(JI]BSs_ QP5Fz׋G%t{3qWD0vz \}\$um+٬C;X9:Y^gB,\ACioci]g(L;z9AnI ꭰ4Iݠx#{zwAj}΅Q=8m (o{1cd5Ugҷtlaȱi"\.5汔^8tph0k!~D Thd6챖:>f&mxA4L&%kiĔ?Cqոm&/By#Ց%i'W:XlErr'=_ܗ)i7Ҭ,F|Nٮͯ6rm^ UHW5;?Ͱh endstream endobj 119 0 obj 706 endobj 57 0 obj [ /ICCBased 118 0 R ] endobj 61 0 obj << /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 1 0 R ] >> endobj 120 0 obj << /Type /Catalog /Pages 61 0 R /Version /1.4 >> endobj 121 0 obj [ 278 722 722 722 722 722 722 722 333 333 389 722 278 722 278 278 722 722 556 556 722 722 722 722 722 722 722 278 722 722 722 722 722 667 667 722 722 722 611 778 722 278 722 722 556 833 722 778 667 722 722 667 611 722 667 944 722 722 722 278 722 278 722 722 722 556 556 500 556 556 278 556 556 222 722 500 222 833 556 556 556 722 333 500 278 556 722 722 500 500 ] endobj 59 0 obj << /Type /Font /Subtype /Type1 /BaseFont /Helvetica-Oblique /Widths 121 0 R /FirstChar 32 /LastChar 121 /Encoding /MacRomanEncoding >> endobj 122 0 obj << /Length 123 0 R /Length1 10512 /Filter /FlateDecode >> stream xڽ:ixSew$M%I6z(ݠ VZ\XA@ 7688jZ xuuTR3?晜~Qh-&UG,pbICݷ,=tp;koYz#Zo®_<ޑ^bG&[lYtŪ oa{[u6~PۀC3]sUFۻ\ֹ?R? ݷ޾ΣG؞}[WweSq @2_>9Ћ^G~Vm@ @r{{sE$>V =78+`-R8H {Px}>-f<]SʬL&OgT1I鷙nQm&lGo% %yH_ZGmޥA᙭0~;| yNt(j-ЅXw/`a ‡DM$j2D{r#ϑAmPOQ1j6+uI"cbڙx}f+x.=$} E@dD &>8O0:1|?r|24Fqrΐ32^(EDuR 7D.:΢k~;&,g2}nf?N`fه٣oa.pro_%8I2< /dZuwG8 ! Ѳ5SB0y~GJ~Ajj>HH~ĕR.1=-՛q'Ą8j1bc}NQc"YpR:L&Kn;sLGG]U 8;ig8s)Ff3Y YJ3p [~oRJ}RbօpVzUvT c۲2q&w[hE Ϩ B+;TVĹ\Y2y{n茑8ige.QE!:Ztgki2wEZjrۘ\WZivȭmتmv"Z֖5„{D.wӱP wΡe.+hj6yzg r,kR$wFg#o(?BX4"SrOA6yNy'ߺA߼q8 \LPJtrMXgs!@kA5Z`F+ ƍVZ[#lkE G0,V0 NɬER[WĊVT:zƖISk+EtG4#Di]}}q}J8*0H7*Cݮ8E. juZ|ՁP5\4V>HpH~?Ioy'\\ec5,"e'4\S4<'iD+d W4\}kTv~nis0(xgsω0?a,@Ӕ] lkI5#a>TڠXZBYiT.ye/XiKL#t,t'b"=O3X&QngC 2pphXo ]"zE=lgCNrkQ]xfӼt~%RK9kE3l2եv?KvSmW1[@ _ ~!vcX83ZNoi>5ٙwC9. O>(6xBg.d~LOOh5T1&٨bT2%m,aѯH\ 4MܾbЛC Ȗiwlm~sSa JI_KoJ/?nBHϺ~8x,Z`TFll.QG9Fr-IM:5{z YH$U<_֣ =RJY$Dư4C#6G1.k=ɑ^G,Y+$HLMղðݱuwJX?K=FmF4*kqJ+̩tlMTkĐ9?xH?$ ɮƨJa++*/r%%ajv}Ro0xWAhFEbBʦIWӓ#:`!?'tMjkc %PҟؓRHz* HZ@Ni4 ɼ]Ki=jZ=J Q$II\/M-Sd"#wk0 6Ux ǐn,拄R8b2; [^i8O^YA2 V]m1&ېcˌkTG/u|RGmTNَC{)cV獶Ȳɱ%Tjӟ=k FhяǕ,kOf,9aǔ%%}LN(93IHƕ8˫7G%qЁvqZ U[M/$iY {t$ř3;t&3_3>OL㲄"[I.!OCjCC_ϟ\߀R|!+&L|_0ŝs |iIgw'!UrsdV^Ѫ#3歷*Jo6Md7h{m; ENMwO=<y+ֆ?a0dS3Fc5j՘6QڡjlݮƆ7>'+dHQPŗk4R$o4h (W]}ߞmKxߤk{_0Wq {24\e+v[r[0ou].[&V14SdŸиJ4s$X)Ix$yN.IK$؝bs8{]5#(5CCu佪4e.G\âXՅfs9"=3BWn׎{Pz=ҏҏ ƿ&UO+^w)ڰ8#qE2.&f^"H,`yNQkL=9h/cw}Z[crh5""I |,U5{sKr¾%]&swvMlZwL)ᒸ}G,Dr۳O*ڤĎQTC9t'ܞݣ َ<7Qi&q7[]f٨ z(!䵥:r_{w 2s%-ʼnv5E8Kw|`Y{vOH6#ّɄʾkRhD;`00 &L ڿ ף u5ذv9)Z^s`ζo- F_,OIʆڇdo0[L o*0[@=T~fuyҹJ&.r:K_r?}UϔEʥrfr fD '77rZOZxg5:r{~,/Ӗ?eG9\weC~dvȠ,:ը,9#\uIUM BcA1uo㲝D Eb^#=Ee/[3s/v=ȯ]6gj}-_^n{ 6Wc~Hըf7m")'?^+]l檚 w=ZOj`O~S>W"&Ai6~&.%4&+SEP6c>(f/Ȳo@ٗV*-aU*e9(<Ǫ)'Mj Yz(F+y ,hX`55 CZK]8pzU'8kFJH*ObYAƚD1ِC܈*GbLhPd8t-0Y;6[MܨG. `2d!}?[) z,DZEk-萦M':5,af7/MNL[8%ҙ9mZVkYY(n;1VXb"ɤhj8bs*>y$6mHTvxPT(M{֭]GeK_ITFbCo:t&'紮 YȱۙRDQ(ネ!6+$d{x9gf|7#|ŔnmiQ/͏)|8uΎ1AChqaƮI>Ưdg2ꇙ=_1Ϩe㏫Wo03?02,5RaX+C^#VjUQy 5VJ5_w0)NMD>M8-K8(z-rA$y(@ߛ!Sez7c05:Zr*vlb'+}ibϟR)4HJCC7ItL*KCD~'/޲Qhʹ}8O5] &Dˏ/\9ٗ`/W u݃e=/ȅðJa5293X/ҋm  ^[G'+,x-|KRT T:gпe V`|nwXapJeTVUS9"'W-l B?Y"3眺I5]KzV,יU~_/ns*!;a2償1*0㨂j)0jӑf g7&#bIߓ>,/_#>U-FiA5occƍ5iTR V xt*8BsW<EO{OuZq$p 2Dv]qǀu(& x${Q~Ŀs2p нI!t,;V0 zA'D jA8 Gb짱^#;qt` A6Yˌ :F~ֱuY8ȗ+֌ͯoM4r큻 KG`kBk`\#Vt̝P] gӬ ϒ0rFK,bIl-h=XYp-j*oRFV#jlp<(ji5ȴFVFFr?f7 endstream endobj 123 0 obj 7112 endobj 124 0 obj << /Type /FontDescriptor /Ascent 770 /CapHeight 731 /Descent -230 /Flags 32 /FontBBox [ -205 -443 1437 1254 ] /FontName /LMRLSA+Helvetica-Bold /ItalicAngle 0 /StemV 0 /MaxWidth 1500 /XHeight 540 /FontFile2 122 0 R >> endobj 125 0 obj [ 278 722 474 722 722 722 722 722 333 333 722 722 278 722 278 722 722 722 722 722 722 722 722 722 722 722 333 333 722 722 722 722 722 722 722 722 722 722 611 722 722 722 722 722 722 833 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 722 556 611 556 611 556 333 611 611 278 722 556 278 889 611 611 611 722 389 556 333 611 722 722 556 ] endobj 60 0 obj << /Type /Font /Subtype /TrueType /BaseFont /LMRLSA+Helvetica-Bold /FontDescriptor 124 0 R /Widths 125 0 R /FirstChar 32 /LastChar 120 /Encoding /MacRomanEncoding >> endobj 126 0 obj << /CreationDate (D:20070509103030-04'00') /ModDate (D:20070509103030-04'00') /Producer (Mac OS X 10.4.9 Quartz PDFContext) >> endobj xref 0 127 0000000000 00000 n 0000006153 00000 n 0000000022 00000 n 0000006258 00000 n 0000006133 00000 n 0000012229 00000 n 0000012521 00000 n 0000008179 00000 n 0000008470 00000 n 0000007589 00000 n 0000007921 00000 n 0000013067 00000 n 0000013361 00000 n 0000008723 00000 n 0000008957 00000 n 0000010109 00000 n 0000010343 00000 n 0000010602 00000 n 0000010836 00000 n 0000013650 00000 n 0000013900 00000 n 0000013381 00000 n 0000013631 00000 n 0000007023 00000 n 0000007272 00000 n 0000011371 00000 n 0000011635 00000 n 0000009229 00000 n 0000009519 00000 n 0000007291 00000 n 0000007570 00000 n 0000011103 00000 n 0000011352 00000 n 0000007941 00000 n 0000008160 00000 n 0000008976 00000 n 0000009210 00000 n 0000012775 00000 n 0000013048 00000 n 0000009539 00000 n 0000009841 00000 n 0000010855 00000 n 0000011084 00000 n 0000009861 00000 n 0000010090 00000 n 0000006789 00000 n 0000007004 00000 n 0000011925 00000 n 0000012209 00000 n 0000010362 00000 n 0000010583 00000 n 0000011654 00000 n 0000011906 00000 n 0000012540 00000 n 0000012756 00000 n 0000008489 00000 n 0000008704 00000 n 0000039520 00000 n 0000038650 00000 n 0000040089 00000 n 0000048078 00000 n 0000039558 00000 n 0000037793 00000 n 0000037838 00000 n 0000021163 00000 n 0000022215 00000 n 0000019521 00000 n 0000020348 00000 n 0000031740 00000 n 0000032624 00000 n 0000029915 00000 n 0000030904 00000 n 0000022235 00000 n 0000023603 00000 n 0000036130 00000 n 0000036978 00000 n 0000028917 00000 n 0000029895 00000 n 0000028101 00000 n 0000028897 00000 n 0000016452 00000 n 0000017810 00000 n 0000026323 00000 n 0000027232 00000 n 0000018610 00000 n 0000019501 00000 n 0000020368 00000 n 0000021143 00000 n 0000030924 00000 n 0000031720 00000 n 0000017831 00000 n 0000018590 00000 n 0000025507 00000 n 0000026303 00000 n 0000036998 00000 n 0000037773 00000 n 0000033515 00000 n 0000034345 00000 n 0000027252 00000 n 0000028081 00000 n 0000015619 00000 n 0000016431 00000 n 0000035236 00000 n 0000036109 00000 n 0000023624 00000 n 0000024474 00000 n 0000024495 00000 n 0000025486 00000 n 0000032644 00000 n 0000033494 00000 n 0000034365 00000 n 0000035215 00000 n 0000013919 00000 n 0000014748 00000 n 0000014769 00000 n 0000015598 00000 n 0000037892 00000 n 0000038629 00000 n 0000038688 00000 n 0000039499 00000 n 0000039642 00000 n 0000039708 00000 n 0000040240 00000 n 0000047445 00000 n 0000047467 00000 n 0000047701 00000 n 0000048260 00000 n trailer << /Size 127 /Root 120 0 R /Info 126 0 R /ID [ ] >> startxref 48404 %%EOF 126 0 obj <> endobj xref 126 1 0000051107 00000 n trailer < ] /Info 126 0 R /Prev 48404 /Root 120 0 R /Size 127>> startxref 51327 %%EOF king-2.21.120420/molikin/doc/element_list.txt0000644000000000000000000000123611531212770017250 0ustar rootroot"H", "HE", "LI", "BE", "B", "C", "N", "O", "F", "NE", "NA", "MG", "AL", "SI", "P", "S", "CL", "AR", "K", "CA", "SC", "TI", "V", "CR", "MN", "FE", "CO", "NI", "CU", "ZN", "GA", "GE", "AS", "SE", "BR", "KR", "RB", "SR", "Y", "ZR", "NB", "MO", "TC", "RU", "RH", "PD", "AG", "CD", "IN", "SN", "CB", "TE", "I", "XE", "CS", "BA", "LA", "CE", "PR", "ND", "PM", "SM", "EU", "GD", "TB", "DY", "HO", "ER", "TM", "YB", "LU", "HF", "TA", "W", "RE", "OS", "IR", "PT", "AU", "HG", "TL", "PB", "BI", "PO", "AT", "RN", "FR", "RA", "AC", "TH", "PA", "U", "NP", "PU", "AM", "CM", "BK", "CF", "ES", "FM", "MD", "NO", "LR", "RF", "DB", "SG", "BH", "HS", "MT", "DS" king-2.21.120420/chiropraxis/0000755000000000000000000000000011756425772014166 5ustar rootrootking-2.21.120420/chiropraxis/Manifest.mf0000644000000000000000000000002711531212734016236 0ustar rootrootClass-Path: itext.jar king-2.21.120420/chiropraxis/data/0000755000000000000000000000000011677361404015070 5ustar rootrootking-2.21.120420/chiropraxis/data/singlesc.pdb0000644000000000000000000005110411531212732017353 0ustar rootrootATOM 1 CA ALA A 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB ALA A 1 0.530 0.001 1.426 1.00 0.00 ATOM 1 HA ALA A 1 0.341 0.916 -0.504 1.00 0.00 ATOM 1 1HB ALA A 1 1.630 0.001 1.409 1.00 0.00 ATOM 1 2HB ALA A 1 0.172 0.899 1.950 1.00 0.00 ATOM 1 3HB ALA A 1 0.172 -0.897 1.951 1.00 0.00 ATOM 1 CA ARG R 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB ARG R 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG ARG R 1 0.246 1.277 2.204 1.00 0.00 ATOM 1 CD ARG R 1 0.805 1.209 3.616 1.00 0.00 ATOM 1 NE ARG R 1 0.536 2.429 4.372 1.00 0.00 ATOM 1 CZ ARG R 1 0.916 2.627 5.629 1.00 0.00 ATOM 1 NH1 ARG R 1 1.586 1.684 6.277 1.00 0.00 ATOM 1 NH2 ARG R 1 0.625 3.770 6.236 1.00 0.00 ATOM 1 HA ARG R 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB ARG R 1 0.100 -0.851 1.976 1.00 0.00 ATOM 1 2HB ARG R 1 1.624 -0.160 1.406 1.00 0.00 ATOM 1 1HG ARG R 1 0.684 2.136 1.675 1.00 0.00 ATOM 1 2HG ARG R 1 -0.840 1.445 2.245 1.00 0.00 ATOM 1 1HD ARG R 1 0.367 0.347 4.140 1.00 0.00 ATOM 1 2HD ARG R 1 1.891 1.038 3.570 1.00 0.00 ATOM 1 HE ARG R 1 0.032 3.161 3.914 1.00 0.00 ATOM 1 1HH1 ARG R 1 1.805 0.823 5.818 1.00 0.00 ATOM 1 2HH1 ARG R 1 1.872 1.833 7.223 1.00 0.00 ATOM 1 1HH2 ARG R 1 0.120 4.480 5.747 1.00 0.00 ATOM 1 2HH2 ARG R 1 0.911 3.920 7.182 1.00 0.00 ATOM 1 CA ASN N 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB ASN N 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG ASN N 1 0.186 1.268 2.186 1.00 0.00 ATOM 1 OD1 ASN N 1 -0.124 2.295 1.582 1.00 0.00 ATOM 1 ND2 ASN N 1 0.233 1.199 3.511 1.00 0.00 ATOM 1 HA ASN N 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB ASN N 1 0.128 -0.867 1.973 1.00 0.00 ATOM 1 2HB ASN N 1 1.629 -0.119 1.411 1.00 0.00 ATOM 1 1HD2 ASN N 1 0.011 2.004 4.062 1.00 0.00 ATOM 1 2HD2 ASN N 1 0.491 0.343 3.959 1.00 0.00 ATOM 1 CA ASP D 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB ASP D 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG ASP D 1 0.292 1.315 2.147 1.00 0.00 ATOM 1 OD1 ASP D 1 -0.028 2.311 1.464 1.00 0.00 ATOM 1 OD2 ASP D 1 0.418 1.349 3.389 1.00 0.00 ATOM 1 HA ASP D 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB ASP D 1 0.060 -0.813 1.999 1.00 0.00 ATOM 1 2HB ASP D 1 1.616 -0.209 1.416 1.00 0.00 ATOM 1 CA CYS C 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB CYS C 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 SG CYS C 1 0.146 1.492 2.376 1.00 0.00 ATOM 1 HA CYS C 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB CYS C 1 0.127 -0.872 1.964 1.00 0.00 ATOM 1 2HB CYS C 1 1.629 -0.125 1.402 1.00 0.00 ATOM 1 HG CYS C 1 0.641 1.390 3.573 1.00 0.00 ATOM 1 CA GLN Q 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB GLN Q 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG GLN Q 1 0.246 1.278 2.204 1.00 0.00 ATOM 1 CD GLN Q 1 0.790 1.240 3.618 1.00 0.00 ATOM 1 OE1 GLN Q 1 0.972 0.168 4.196 1.00 0.00 ATOM 1 NE2 GLN Q 1 1.054 2.414 4.180 1.00 0.00 ATOM 1 HA GLN Q 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB GLN Q 1 0.099 -0.850 1.977 1.00 0.00 ATOM 1 2HB GLN Q 1 1.624 -0.161 1.406 1.00 0.00 ATOM 1 1HG GLN Q 1 0.685 2.132 1.668 1.00 0.00 ATOM 1 2HG GLN Q 1 -0.841 1.442 2.238 1.00 0.00 ATOM 1 1HE2 GLN Q 1 1.416 2.453 5.111 1.00 0.00 ATOM 1 2HE2 GLN Q 1 0.890 3.259 3.672 1.00 0.00 ATOM 1 CA GLU E 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB GLU E 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG GLU E 1 0.246 1.278 2.204 1.00 0.00 ATOM 1 CD GLU E 1 0.790 1.240 3.618 1.00 0.00 ATOM 1 OE1 GLU E 1 1.224 0.155 4.060 1.00 0.00 ATOM 1 OE2 GLU E 1 0.784 2.296 4.285 1.00 0.00 ATOM 1 HA GLU E 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB GLU E 1 0.099 -0.850 1.977 1.00 0.00 ATOM 1 2HB GLU E 1 1.624 -0.161 1.406 1.00 0.00 ATOM 1 1HG GLU E 1 0.685 2.132 1.668 1.00 0.00 ATOM 1 2HG GLU E 1 -0.841 1.442 2.238 1.00 0.00 ATOM 1 CA GLY G 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 1HA GLY G 1 0.363 0.938 -0.446 1.00 0.00 ATOM 1 2HA GLY G 1 0.364 -0.025 1.038 1.00 0.00 ATOM 1 CA HIS H 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB HIS H 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG HIS H 1 0.205 1.241 2.202 1.00 0.00 ATOM 1 ND1 HIS H 1 0.775 2.464 1.923 1.00 0.00 ATOM 1 CD2 HIS H 1 -0.637 1.449 3.241 1.00 0.00 ATOM 1 CE1 HIS H 1 0.298 3.370 2.757 1.00 0.00 ATOM 1 NE2 HIS H 1 -0.560 2.780 3.566 1.00 0.00 ATOM 1 HA HIS H 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB HIS H 1 0.128 -0.871 1.967 1.00 0.00 ATOM 1 2HB HIS H 1 1.629 -0.123 1.405 1.00 0.00 ATOM 1 HD1 HIS H 1 1.445 2.638 1.200 1.00 0.00 ATOM 1 HD2 HIS H 1 -1.265 0.692 3.733 1.00 0.00 ATOM 1 HE1 HIS H 1 0.571 4.436 2.775 1.00 0.00 ATOM 1 HE2 HIS H 1 -1.072 3.231 4.297 1.00 0.00 ATOM 1 CA ILE I 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB ILE I 1 0.565 -0.015 1.433 1.00 0.00 ATOM 1 CG1 ILE I 1 0.196 1.277 2.165 1.00 0.00 ATOM 1 CD1 ILE I 1 0.502 1.248 3.646 1.00 0.00 ATOM 1 CG2 ILE I 1 2.081 -0.139 1.407 1.00 0.00 ATOM 1 HA ILE I 1 0.318 0.927 -0.499 1.00 0.00 ATOM 1 HB ILE I 1 0.129 -0.878 1.957 1.00 0.00 ATOM 1 1HG1 ILE I 1 0.739 2.116 1.705 1.00 0.00 ATOM 1 2HG1 ILE I 1 -0.877 1.473 2.025 1.00 0.00 ATOM 1 1HD1 ILE I 1 0.211 2.208 4.100 1.00 0.00 ATOM 1 2HD1 ILE I 1 -0.061 0.433 4.122 1.00 0.00 ATOM 1 3HD1 ILE I 1 1.580 1.086 3.795 1.00 0.00 ATOM 1 1HG2 ILE I 1 2.466 -0.148 2.437 1.00 0.00 ATOM 1 2HG2 ILE I 1 2.363 -1.075 0.902 1.00 0.00 ATOM 1 3HG2 ILE I 1 2.509 0.715 0.863 1.00 0.00 ATOM 1 CA LEU L 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB LEU L 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG LEU L 1 0.230 1.243 2.271 1.00 0.00 ATOM 1 CD1 LEU L 1 0.711 1.057 3.702 1.00 0.00 ATOM 1 CD2 LEU L 1 0.923 2.466 1.692 1.00 0.00 ATOM 1 HA LEU L 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB LEU L 1 0.126 -0.877 1.955 1.00 0.00 ATOM 1 2HB LEU L 1 1.627 -0.130 1.394 1.00 0.00 ATOM 1 HG LEU L 1 -0.860 1.390 2.258 1.00 0.00 ATOM 1 1HD1 LEU L 1 0.481 1.961 4.286 1.00 0.00 ATOM 1 2HD1 LEU L 1 0.201 0.192 4.151 1.00 0.00 ATOM 1 3HD1 LEU L 1 1.797 0.885 3.705 1.00 0.00 ATOM 1 1HD2 LEU L 1 0.691 3.346 2.308 1.00 0.00 ATOM 1 2HD2 LEU L 1 2.010 2.303 1.683 1.00 0.00 ATOM 1 3HD2 LEU L 1 0.570 2.635 0.663 1.00 0.00 ATOM 1 CA LYS K 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB LYS K 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG LYS K 1 0.246 1.277 2.204 1.00 0.00 ATOM 1 CD LYS K 1 0.805 1.209 3.616 1.00 0.00 ATOM 1 CE LYS K 1 0.516 2.486 4.387 1.00 0.00 ATOM 1 NZ LYS K 1 1.058 2.433 5.773 1.00 0.00 ATOM 1 HA LYS K 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB LYS K 1 0.100 -0.851 1.976 1.00 0.00 ATOM 1 2HB LYS K 1 1.624 -0.160 1.406 1.00 0.00 ATOM 1 1HG LYS K 1 0.684 2.136 1.675 1.00 0.00 ATOM 1 2HG LYS K 1 -0.840 1.445 2.245 1.00 0.00 ATOM 1 1HD LYS K 1 0.368 0.350 4.144 1.00 0.00 ATOM 1 2HD LYS K 1 1.892 1.041 3.574 1.00 0.00 ATOM 1 1HE LYS K 1 0.952 3.343 3.855 1.00 0.00 ATOM 1 2HE LYS K 1 -0.572 2.652 4.426 1.00 0.00 ATOM 1 1HZ LYS K 1 0.848 3.288 6.247 1.00 0.00 ATOM 1 2HZ LYS K 1 0.642 1.668 6.265 1.00 0.00 ATOM 1 3HZ LYS K 1 2.049 2.306 5.738 1.00 0.00 ATOM 1 CA MET M 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB MET M 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG MET M 1 0.205 1.258 2.219 1.00 0.00 ATOM 1 SD MET M 1 0.993 2.730 1.544 1.00 0.00 ATOM 1 CE MET M 1 2.708 2.414 1.953 1.00 0.00 ATOM 1 HA MET M 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB MET M 1 0.127 -0.871 1.966 1.00 0.00 ATOM 1 2HB MET M 1 1.629 -0.125 1.404 1.00 0.00 ATOM 1 1HG MET M 1 -0.886 1.402 2.228 1.00 0.00 ATOM 1 2HG MET M 1 0.521 1.125 3.265 1.00 0.00 ATOM 1 1HE MET M 1 3.331 3.247 1.596 1.00 0.00 ATOM 1 2HE MET M 1 2.814 2.320 3.044 1.00 0.00 ATOM 1 3HE MET M 1 3.035 1.481 1.471 1.00 0.00 ATOM 1 CA MSE M 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB MSE M 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG MSE M 1 0.205 1.258 2.219 1.00 0.00 ATOM 1 SED MSE M 1 1.047 2.831 1.498 1.00 0.00 ATOM 1 CE MSE M 1 2.865 2.414 1.975 1.00 0.00 ATOM 1 HA MSE M 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB MSE M 1 0.127 -0.871 1.966 1.00 0.00 ATOM 1 2HB MSE M 1 1.629 -0.125 1.404 1.00 0.00 ATOM 1 1HG MSE M 1 -0.886 1.402 2.228 1.00 0.00 ATOM 1 2HG MSE M 1 0.521 1.125 3.265 1.00 0.00 ATOM 1 1HE MSE M 1 3.529 3.222 1.637 1.00 0.00 ATOM 1 2HE MSE M 1 2.943 2.309 3.067 1.00 0.00 ATOM 1 3HE MSE M 1 3.163 1.470 1.495 1.00 0.00 ATOM 1 CA PHE F 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB PHE F 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG PHE F 1 0.205 1.245 2.204 1.00 0.00 ATOM 1 CD1 PHE F 1 1.005 2.370 2.106 1.00 0.00 ATOM 1 CD2 PHE F 1 -0.908 1.294 3.025 1.00 0.00 ATOM 1 CE1 PHE F 1 0.702 3.517 2.816 1.00 0.00 ATOM 1 CE2 PHE F 1 -1.215 2.439 3.736 1.00 0.00 ATOM 1 CZ PHE F 1 -0.409 3.551 3.631 1.00 0.00 ATOM 1 HA PHE F 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB PHE F 1 0.127 -0.871 1.967 1.00 0.00 ATOM 1 2HB PHE F 1 1.629 -0.124 1.405 1.00 0.00 ATOM 1 HD1 PHE F 1 1.894 2.352 1.458 1.00 0.00 ATOM 1 HD2 PHE F 1 -1.556 0.410 3.113 1.00 0.00 ATOM 1 HE1 PHE F 1 1.347 4.405 2.729 1.00 0.00 ATOM 1 HE2 PHE F 1 -2.102 2.462 4.386 1.00 0.00 ATOM 1 HZ PHE F 1 -0.653 4.464 4.195 1.00 0.00 ATOM 1 CA PRO P 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB PRO P 1 0.344 -0.001 1.491 1.00 0.00 ATOM 1 CG PRO P 1 -0.847 -0.666 2.144 1.00 0.00 ATOM 1 CD PRO P 1 -2.010 -0.194 1.291 1.00 0.00 ATOM 1 NE PRO P 1 -1.384 0.013 -0.026 1.00 0.00 ATOM 1 HA PRO P 1 0.434 0.857 -0.537 1.00 0.00 ATOM 1 1HB PRO P 1 1.273 -0.555 1.690 1.00 0.00 ATOM 1 2HB PRO P 1 0.492 1.021 1.870 1.00 0.00 ATOM 1 1HG PRO P 1 -0.755 -1.762 2.138 1.00 0.00 ATOM 1 2HG PRO P 1 -0.960 -0.359 3.194 1.00 0.00 ATOM 1 1HD PRO P 1 -2.815 -0.942 1.247 1.00 0.00 ATOM 1 2HD PRO P 1 -2.454 0.734 1.682 1.00 0.00 ATOM 1 CA SER S 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB SER S 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 OG SER S 1 0.133 -1.167 2.128 1.00 0.00 ATOM 1 HA SER S 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB SER S 1 0.172 0.892 1.964 1.00 0.00 ATOM 1 2HB SER S 1 1.634 0.061 1.418 1.00 0.00 ATOM 1 HG SER S 1 0.498 -1.142 3.059 1.00 0.00 ATOM 1 CA THR T 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB THR T 1 0.565 -0.015 1.433 1.00 0.00 ATOM 1 OG1 THR T 1 0.152 -1.214 2.100 1.00 0.00 ATOM 1 CG2 THR T 1 0.058 1.185 2.218 1.00 0.00 ATOM 1 HA THR T 1 0.318 0.927 -0.499 1.00 0.00 ATOM 1 HB THR T 1 1.663 0.026 1.376 1.00 0.00 ATOM 1 HG1 THR T 1 0.521 -1.224 3.030 1.00 0.00 ATOM 1 1HG2 THR T 1 0.471 1.158 3.237 1.00 0.00 ATOM 1 2HG2 THR T 1 0.377 2.112 1.718 1.00 0.00 ATOM 1 3HG2 THR T 1 -1.039 1.154 2.267 1.00 0.00 ATOM 1 CA TRP W 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB TRP W 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG TRP W 1 0.203 1.244 2.198 1.00 0.00 ATOM 1 CD1 TRP W 1 -0.857 1.429 3.038 1.00 0.00 ATOM 1 CD2 TRP W 1 0.936 2.476 2.193 1.00 0.00 ATOM 1 NE1 TRP W 1 -0.834 2.701 3.557 1.00 0.00 ATOM 1 CE2 TRP W 1 0.261 3.363 3.053 1.00 0.00 ATOM 1 CE3 TRP W 1 2.095 2.910 1.545 1.00 0.00 ATOM 1 CZ2 TRP W 1 0.705 4.664 3.283 1.00 0.00 ATOM 1 CZ3 TRP W 1 2.536 4.200 1.772 1.00 0.00 ATOM 1 CH2 TRP W 1 1.845 5.067 2.636 1.00 0.00 ATOM 1 HA TRP W 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB TRP W 1 0.128 -0.870 1.968 1.00 0.00 ATOM 1 2HB TRP W 1 1.629 -0.122 1.406 1.00 0.00 ATOM 1 HD1 TRP W 1 -1.620 0.671 3.265 1.00 0.00 ATOM 1 HE1 TRP W 1 -1.501 3.082 4.197 1.00 0.00 ATOM 1 HE3 TRP W 1 2.645 2.239 0.867 1.00 0.00 ATOM 1 HZ2 TRP W 1 0.164 5.342 3.958 1.00 0.00 ATOM 1 HZ3 TRP W 1 3.446 4.555 1.268 1.00 0.00 ATOM 1 HH2 TRP W 1 2.225 6.086 2.794 1.00 0.00 ATOM 1 CA TYR Y 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB TYR Y 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG TYR Y 1 0.203 1.253 2.212 1.00 0.00 ATOM 1 CD1 TYR Y 1 1.005 2.383 2.118 1.00 0.00 ATOM 1 CD2 TYR Y 1 -0.913 1.302 3.038 1.00 0.00 ATOM 1 CE1 TYR Y 1 0.709 3.531 2.825 1.00 0.00 ATOM 1 CE2 TYR Y 1 -1.225 2.441 3.752 1.00 0.00 ATOM 1 CZ TYR Y 1 -0.413 3.555 3.645 1.00 0.00 ATOM 1 OH TYR Y 1 -0.716 4.696 4.353 1.00 0.00 ATOM 1 HA TYR Y 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB TYR Y 1 0.127 -0.871 1.967 1.00 0.00 ATOM 1 2HB TYR Y 1 1.629 -0.124 1.405 1.00 0.00 ATOM 1 HD1 TYR Y 1 1.892 2.363 1.469 1.00 0.00 ATOM 1 HD2 TYR Y 1 -1.559 0.416 3.124 1.00 0.00 ATOM 1 HE1 TYR Y 1 1.355 4.418 2.741 1.00 0.00 ATOM 1 HE2 TYR Y 1 -2.112 2.462 4.403 1.00 0.00 ATOM 1 HH TYR Y 1 -1.547 4.545 4.887 1.00 0.00 ATOM 1 CA VAL V 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 CB VAL V 1 0.565 -0.015 1.433 1.00 0.00 ATOM 1 CG1 VAL V 1 2.081 -0.139 1.407 1.00 0.00 ATOM 1 CG2 VAL V 1 0.200 1.269 2.162 1.00 0.00 ATOM 1 HA VAL V 1 0.318 0.927 -0.499 1.00 0.00 ATOM 1 HB VAL V 1 0.128 -0.879 1.956 1.00 0.00 ATOM 1 1HG1 VAL V 1 2.466 -0.148 2.437 1.00 0.00 ATOM 1 2HG1 VAL V 1 2.363 -1.075 0.902 1.00 0.00 ATOM 1 3HG1 VAL V 1 2.509 0.715 0.863 1.00 0.00 ATOM 1 1HG2 VAL V 1 0.611 1.241 3.183 1.00 0.00 ATOM 1 2HG2 VAL V 1 0.619 2.130 1.621 1.00 0.00 ATOM 1 3HG2 VAL V 1 -0.895 1.366 2.210 1.00 0.00 king-2.21.120420/chiropraxis/data/singleres.pdb0000644000000000000000000006620711531212732017551 0ustar rootrootATOM 1 N ALA A 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA ALA A 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C ALA A 1 0.550 -1.193 -0.774 1.00 0.00 ATOM 1 O ALA A 1 0.022 -2.301 -0.683 1.00 0.00 ATOM 1 CB ALA A 1 0.530 0.001 1.426 1.00 0.00 ATOM 1 H ALA A 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA ALA A 1 0.341 0.916 -0.504 1.00 0.00 ATOM 1 1HB ALA A 1 1.630 0.001 1.409 1.00 0.00 ATOM 1 2HB ALA A 1 0.172 0.899 1.950 1.00 0.00 ATOM 1 3HB ALA A 1 0.172 -0.897 1.951 1.00 0.00 ATOM 1 N ARG R 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA ARG R 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C ARG R 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O ARG R 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB ARG R 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG ARG R 1 0.246 1.277 2.204 1.00 0.00 ATOM 1 CD ARG R 1 0.805 1.209 3.616 1.00 0.00 ATOM 1 NE ARG R 1 0.536 2.429 4.372 1.00 0.00 ATOM 1 CZ ARG R 1 0.916 2.627 5.629 1.00 0.00 ATOM 1 NH1 ARG R 1 1.586 1.684 6.277 1.00 0.00 ATOM 1 NH2 ARG R 1 0.625 3.770 6.236 1.00 0.00 ATOM 1 H ARG R 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA ARG R 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB ARG R 1 0.100 -0.851 1.976 1.00 0.00 ATOM 1 2HB ARG R 1 1.624 -0.160 1.406 1.00 0.00 ATOM 1 1HG ARG R 1 0.684 2.136 1.675 1.00 0.00 ATOM 1 2HG ARG R 1 -0.840 1.445 2.245 1.00 0.00 ATOM 1 1HD ARG R 1 0.367 0.347 4.140 1.00 0.00 ATOM 1 2HD ARG R 1 1.891 1.038 3.570 1.00 0.00 ATOM 1 HE ARG R 1 0.032 3.161 3.914 1.00 0.00 ATOM 1 1HH1 ARG R 1 1.805 0.823 5.818 1.00 0.00 ATOM 1 2HH1 ARG R 1 1.872 1.833 7.223 1.00 0.00 ATOM 1 1HH2 ARG R 1 0.120 4.480 5.747 1.00 0.00 ATOM 1 2HH2 ARG R 1 0.911 3.920 7.182 1.00 0.00 ATOM 1 N ASN N 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA ASN N 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C ASN N 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O ASN N 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB ASN N 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG ASN N 1 0.186 1.268 2.186 1.00 0.00 ATOM 1 OD1 ASN N 1 -0.124 2.295 1.582 1.00 0.00 ATOM 1 ND2 ASN N 1 0.233 1.199 3.511 1.00 0.00 ATOM 1 H ASN N 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA ASN N 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB ASN N 1 0.128 -0.867 1.973 1.00 0.00 ATOM 1 2HB ASN N 1 1.629 -0.119 1.411 1.00 0.00 ATOM 1 1HD2 ASN N 1 0.011 2.004 4.062 1.00 0.00 ATOM 1 2HD2 ASN N 1 0.491 0.343 3.959 1.00 0.00 ATOM 1 N ASP D 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA ASP D 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C ASP D 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O ASP D 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB ASP D 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG ASP D 1 0.292 1.315 2.147 1.00 0.00 ATOM 1 OD1 ASP D 1 -0.028 2.311 1.464 1.00 0.00 ATOM 1 OD2 ASP D 1 0.418 1.349 3.389 1.00 0.00 ATOM 1 H ASP D 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA ASP D 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB ASP D 1 0.060 -0.813 1.999 1.00 0.00 ATOM 1 2HB ASP D 1 1.616 -0.209 1.416 1.00 0.00 ATOM 1 N CYS C 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA CYS C 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C CYS C 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O CYS C 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB CYS C 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 SG CYS C 1 0.146 1.492 2.376 1.00 0.00 ATOM 1 H CYS C 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA CYS C 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB CYS C 1 0.127 -0.872 1.964 1.00 0.00 ATOM 1 2HB CYS C 1 1.629 -0.125 1.402 1.00 0.00 ATOM 1 HG CYS C 1 0.641 1.390 3.573 1.00 0.00 ATOM 1 N GLN Q 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA GLN Q 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C GLN Q 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O GLN Q 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB GLN Q 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG GLN Q 1 0.246 1.278 2.204 1.00 0.00 ATOM 1 CD GLN Q 1 0.790 1.240 3.618 1.00 0.00 ATOM 1 OE1 GLN Q 1 0.972 0.168 4.196 1.00 0.00 ATOM 1 NE2 GLN Q 1 1.054 2.414 4.180 1.00 0.00 ATOM 1 H GLN Q 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA GLN Q 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB GLN Q 1 0.099 -0.850 1.977 1.00 0.00 ATOM 1 2HB GLN Q 1 1.624 -0.161 1.406 1.00 0.00 ATOM 1 1HG GLN Q 1 0.685 2.132 1.668 1.00 0.00 ATOM 1 2HG GLN Q 1 -0.841 1.442 2.238 1.00 0.00 ATOM 1 1HE2 GLN Q 1 1.416 2.453 5.111 1.00 0.00 ATOM 1 2HE2 GLN Q 1 0.890 3.259 3.672 1.00 0.00 ATOM 1 N GLU E 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA GLU E 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C GLU E 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O GLU E 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB GLU E 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG GLU E 1 0.246 1.278 2.204 1.00 0.00 ATOM 1 CD GLU E 1 0.790 1.240 3.618 1.00 0.00 ATOM 1 OE1 GLU E 1 1.224 0.155 4.060 1.00 0.00 ATOM 1 OE2 GLU E 1 0.784 2.296 4.285 1.00 0.00 ATOM 1 H GLU E 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA GLU E 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB GLU E 1 0.099 -0.850 1.977 1.00 0.00 ATOM 1 2HB GLU E 1 1.624 -0.161 1.406 1.00 0.00 ATOM 1 1HG GLU E 1 0.685 2.132 1.668 1.00 0.00 ATOM 1 2HG GLU E 1 -0.841 1.442 2.238 1.00 0.00 ATOM 1 N GLY G 1 -1.451 0.000 0.000 1.00 0.00 ATOM 1 CA GLY G 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C GLY G 1 0.580 -1.175 -0.762 1.00 0.00 ATOM 1 O GLY G 1 0.073 -2.293 -0.678 1.00 0.00 ATOM 1 H GLY G 1 -1.872 -0.808 0.412 1.00 0.00 ATOM 1 1HA GLY G 1 0.363 0.938 -0.446 1.00 0.00 ATOM 1 2HA GLY G 1 0.364 -0.025 1.038 1.00 0.00 ATOM 1 N HIS H 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA HIS H 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C HIS H 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O HIS H 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB HIS H 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG HIS H 1 0.205 1.241 2.202 1.00 0.00 ATOM 1 ND1 HIS H 1 0.775 2.464 1.923 1.00 0.00 ATOM 1 CD2 HIS H 1 -0.637 1.449 3.241 1.00 0.00 ATOM 1 CE1 HIS H 1 0.298 3.370 2.757 1.00 0.00 ATOM 1 NE2 HIS H 1 -0.560 2.780 3.566 1.00 0.00 ATOM 1 H HIS H 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA HIS H 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB HIS H 1 0.128 -0.871 1.967 1.00 0.00 ATOM 1 2HB HIS H 1 1.629 -0.123 1.405 1.00 0.00 ATOM 1 HD1 HIS H 1 1.445 2.638 1.200 1.00 0.00 ATOM 1 HD2 HIS H 1 -1.265 0.692 3.733 1.00 0.00 ATOM 1 HE1 HIS H 1 0.571 4.436 2.775 1.00 0.00 ATOM 1 HE2 HIS H 1 -1.072 3.231 4.297 1.00 0.00 ATOM 1 N ILE I 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA ILE I 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C ILE I 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O ILE I 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB ILE I 1 0.565 -0.015 1.433 1.00 0.00 ATOM 1 CG1 ILE I 1 0.196 1.277 2.165 1.00 0.00 ATOM 1 CD1 ILE I 1 0.502 1.248 3.646 1.00 0.00 ATOM 1 CG2 ILE I 1 2.081 -0.139 1.407 1.00 0.00 ATOM 1 H ILE I 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA ILE I 1 0.318 0.927 -0.499 1.00 0.00 ATOM 1 HB ILE I 1 0.129 -0.878 1.957 1.00 0.00 ATOM 1 1HG1 ILE I 1 0.739 2.116 1.705 1.00 0.00 ATOM 1 2HG1 ILE I 1 -0.877 1.473 2.025 1.00 0.00 ATOM 1 1HD1 ILE I 1 0.211 2.208 4.100 1.00 0.00 ATOM 1 2HD1 ILE I 1 -0.061 0.433 4.122 1.00 0.00 ATOM 1 3HD1 ILE I 1 1.580 1.086 3.795 1.00 0.00 ATOM 1 1HG2 ILE I 1 2.466 -0.148 2.437 1.00 0.00 ATOM 1 2HG2 ILE I 1 2.363 -1.075 0.902 1.00 0.00 ATOM 1 3HG2 ILE I 1 2.509 0.715 0.863 1.00 0.00 ATOM 1 N LEU L 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA LEU L 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C LEU L 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O LEU L 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB LEU L 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG LEU L 1 0.230 1.243 2.271 1.00 0.00 ATOM 1 CD1 LEU L 1 0.711 1.057 3.702 1.00 0.00 ATOM 1 CD2 LEU L 1 0.923 2.466 1.692 1.00 0.00 ATOM 1 H LEU L 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA LEU L 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB LEU L 1 0.126 -0.877 1.955 1.00 0.00 ATOM 1 2HB LEU L 1 1.627 -0.130 1.394 1.00 0.00 ATOM 1 HG LEU L 1 -0.860 1.390 2.258 1.00 0.00 ATOM 1 1HD1 LEU L 1 0.481 1.961 4.286 1.00 0.00 ATOM 1 2HD1 LEU L 1 0.201 0.192 4.151 1.00 0.00 ATOM 1 3HD1 LEU L 1 1.797 0.885 3.705 1.00 0.00 ATOM 1 1HD2 LEU L 1 0.691 3.346 2.308 1.00 0.00 ATOM 1 2HD2 LEU L 1 2.010 2.303 1.683 1.00 0.00 ATOM 1 3HD2 LEU L 1 0.570 2.635 0.663 1.00 0.00 ATOM 1 N LYS K 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA LYS K 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C LYS K 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O LYS K 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB LYS K 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG LYS K 1 0.246 1.277 2.204 1.00 0.00 ATOM 1 CD LYS K 1 0.805 1.209 3.616 1.00 0.00 ATOM 1 CE LYS K 1 0.516 2.486 4.387 1.00 0.00 ATOM 1 NZ LYS K 1 1.058 2.433 5.773 1.00 0.00 ATOM 1 H LYS K 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA LYS K 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB LYS K 1 0.100 -0.851 1.976 1.00 0.00 ATOM 1 2HB LYS K 1 1.624 -0.160 1.406 1.00 0.00 ATOM 1 1HG LYS K 1 0.684 2.136 1.675 1.00 0.00 ATOM 1 2HG LYS K 1 -0.840 1.445 2.245 1.00 0.00 ATOM 1 1HD LYS K 1 0.368 0.350 4.144 1.00 0.00 ATOM 1 2HD LYS K 1 1.892 1.041 3.574 1.00 0.00 ATOM 1 1HE LYS K 1 0.952 3.343 3.855 1.00 0.00 ATOM 1 2HE LYS K 1 -0.572 2.652 4.426 1.00 0.00 ATOM 1 1HZ LYS K 1 0.848 3.288 6.247 1.00 0.00 ATOM 1 2HZ LYS K 1 0.642 1.668 6.265 1.00 0.00 ATOM 1 3HZ LYS K 1 2.049 2.306 5.738 1.00 0.00 ATOM 1 N MET M 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA MET M 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C MET M 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O MET M 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB MET M 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG MET M 1 0.205 1.258 2.219 1.00 0.00 ATOM 1 SD MET M 1 0.993 2.730 1.544 1.00 0.00 ATOM 1 CE MET M 1 2.708 2.414 1.953 1.00 0.00 ATOM 1 H MET M 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA MET M 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB MET M 1 0.127 -0.871 1.966 1.00 0.00 ATOM 1 2HB MET M 1 1.629 -0.125 1.404 1.00 0.00 ATOM 1 1HG MET M 1 -0.886 1.402 2.228 1.00 0.00 ATOM 1 2HG MET M 1 0.521 1.125 3.265 1.00 0.00 ATOM 1 1HE MET M 1 3.331 3.247 1.596 1.00 0.00 ATOM 1 2HE MET M 1 2.814 2.320 3.044 1.00 0.00 ATOM 1 3HE MET M 1 3.035 1.481 1.471 1.00 0.00 ATOM 1 N MSE M 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA MSE M 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C MSE M 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O MSE M 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB MSE M 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG MSE M 1 0.205 1.258 2.219 1.00 0.00 ATOM 1 SED MSE M 1 1.047 2.831 1.498 1.00 0.00 ATOM 1 CE MSE M 1 2.865 2.414 1.975 1.00 0.00 ATOM 1 H MSE M 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA MSE M 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB MSE M 1 0.127 -0.871 1.966 1.00 0.00 ATOM 1 2HB MSE M 1 1.629 -0.125 1.404 1.00 0.00 ATOM 1 1HG MSE M 1 -0.886 1.402 2.228 1.00 0.00 ATOM 1 2HG MSE M 1 0.521 1.125 3.265 1.00 0.00 ATOM 1 1HE MSE M 1 3.529 3.222 1.637 1.00 0.00 ATOM 1 2HE MSE M 1 2.943 2.309 3.067 1.00 0.00 ATOM 1 3HE MSE M 1 3.163 1.470 1.495 1.00 0.00 ATOM 1 N PHE F 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA PHE F 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C PHE F 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O PHE F 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB PHE F 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG PHE F 1 0.205 1.245 2.204 1.00 0.00 ATOM 1 CD1 PHE F 1 1.005 2.370 2.106 1.00 0.00 ATOM 1 CD2 PHE F 1 -0.908 1.294 3.025 1.00 0.00 ATOM 1 CE1 PHE F 1 0.702 3.517 2.816 1.00 0.00 ATOM 1 CE2 PHE F 1 -1.215 2.439 3.736 1.00 0.00 ATOM 1 CZ PHE F 1 -0.409 3.551 3.631 1.00 0.00 ATOM 1 H PHE F 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA PHE F 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB PHE F 1 0.127 -0.871 1.967 1.00 0.00 ATOM 1 2HB PHE F 1 1.629 -0.124 1.405 1.00 0.00 ATOM 1 HD1 PHE F 1 1.894 2.352 1.458 1.00 0.00 ATOM 1 HD2 PHE F 1 -1.556 0.410 3.113 1.00 0.00 ATOM 1 HE1 PHE F 1 1.347 4.405 2.729 1.00 0.00 ATOM 1 HE2 PHE F 1 -2.102 2.462 4.386 1.00 0.00 ATOM 1 HZ PHE F 1 -0.653 4.464 4.195 1.00 0.00 ATOM 1 N PRO P 1 -1.466 0.000 0.000 1.00 0.00 ATOM 1 CA PRO P 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C PRO P 1 0.566 -1.218 -0.723 1.00 0.00 ATOM 1 O PRO P 1 -0.181 -2.059 -1.222 1.00 0.00 ATOM 1 CB PRO P 1 0.344 -0.001 1.491 1.00 0.00 ATOM 1 CG PRO P 1 -0.847 -0.666 2.144 1.00 0.00 ATOM 1 CD PRO P 1 -2.010 -0.194 1.291 1.00 0.00 ATOM 1 NE PRO P 1 -1.384 0.013 -0.026 1.00 0.00 ATOM 1 HA PRO P 1 0.434 0.857 -0.537 1.00 0.00 ATOM 1 1HB PRO P 1 1.273 -0.555 1.690 1.00 0.00 ATOM 1 2HB PRO P 1 0.492 1.021 1.870 1.00 0.00 ATOM 1 1HG PRO P 1 -0.755 -1.762 2.138 1.00 0.00 ATOM 1 2HG PRO P 1 -0.960 -0.359 3.194 1.00 0.00 ATOM 1 1HD PRO P 1 -2.815 -0.942 1.247 1.00 0.00 ATOM 1 2HD PRO P 1 -2.454 0.734 1.682 1.00 0.00 ATOM 1 N SER S 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA SER S 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C SER S 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O SER S 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB SER S 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 OG SER S 1 0.133 -1.167 2.128 1.00 0.00 ATOM 1 H SER S 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA SER S 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB SER S 1 0.172 0.892 1.964 1.00 0.00 ATOM 1 2HB SER S 1 1.634 0.061 1.418 1.00 0.00 ATOM 1 HG SER S 1 0.498 -1.142 3.059 1.00 0.00 ATOM 1 N THR T 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA THR T 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C THR T 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O THR T 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB THR T 1 0.565 -0.015 1.433 1.00 0.00 ATOM 1 OG1 THR T 1 0.152 -1.214 2.100 1.00 0.00 ATOM 1 CG2 THR T 1 0.058 1.185 2.218 1.00 0.00 ATOM 1 H THR T 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA THR T 1 0.318 0.927 -0.499 1.00 0.00 ATOM 1 HB THR T 1 1.663 0.026 1.376 1.00 0.00 ATOM 1 HG1 THR T 1 0.521 -1.224 3.030 1.00 0.00 ATOM 1 1HG2 THR T 1 0.471 1.158 3.237 1.00 0.00 ATOM 1 2HG2 THR T 1 0.377 2.112 1.718 1.00 0.00 ATOM 1 3HG2 THR T 1 -1.039 1.154 2.267 1.00 0.00 ATOM 1 N TRP W 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA TRP W 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C TRP W 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O TRP W 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB TRP W 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG TRP W 1 0.203 1.244 2.198 1.00 0.00 ATOM 1 CD1 TRP W 1 -0.857 1.429 3.038 1.00 0.00 ATOM 1 CD2 TRP W 1 0.936 2.476 2.193 1.00 0.00 ATOM 1 NE1 TRP W 1 -0.834 2.701 3.557 1.00 0.00 ATOM 1 CE2 TRP W 1 0.261 3.363 3.053 1.00 0.00 ATOM 1 CE3 TRP W 1 2.095 2.910 1.545 1.00 0.00 ATOM 1 CZ2 TRP W 1 0.705 4.664 3.283 1.00 0.00 ATOM 1 CZ3 TRP W 1 2.536 4.200 1.772 1.00 0.00 ATOM 1 CH2 TRP W 1 1.845 5.067 2.636 1.00 0.00 ATOM 1 H TRP W 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA TRP W 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB TRP W 1 0.128 -0.870 1.968 1.00 0.00 ATOM 1 2HB TRP W 1 1.629 -0.122 1.406 1.00 0.00 ATOM 1 HD1 TRP W 1 -1.620 0.671 3.265 1.00 0.00 ATOM 1 HE1 TRP W 1 -1.501 3.082 4.197 1.00 0.00 ATOM 1 HE3 TRP W 1 2.645 2.239 0.867 1.00 0.00 ATOM 1 HZ2 TRP W 1 0.164 5.342 3.958 1.00 0.00 ATOM 1 HZ3 TRP W 1 3.446 4.555 1.268 1.00 0.00 ATOM 1 HH2 TRP W 1 2.225 6.086 2.794 1.00 0.00 ATOM 1 N TYR Y 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA TYR Y 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C TYR Y 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O TYR Y 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB TYR Y 1 0.536 -0.000 1.433 1.00 0.00 ATOM 1 CG TYR Y 1 0.203 1.253 2.212 1.00 0.00 ATOM 1 CD1 TYR Y 1 1.005 2.383 2.118 1.00 0.00 ATOM 1 CD2 TYR Y 1 -0.913 1.302 3.038 1.00 0.00 ATOM 1 CE1 TYR Y 1 0.709 3.531 2.825 1.00 0.00 ATOM 1 CE2 TYR Y 1 -1.225 2.441 3.752 1.00 0.00 ATOM 1 CZ TYR Y 1 -0.413 3.555 3.645 1.00 0.00 ATOM 1 OH TYR Y 1 -0.716 4.696 4.353 1.00 0.00 ATOM 1 H TYR Y 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA TYR Y 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB TYR Y 1 0.127 -0.871 1.967 1.00 0.00 ATOM 1 2HB TYR Y 1 1.629 -0.124 1.405 1.00 0.00 ATOM 1 HD1 TYR Y 1 1.892 2.363 1.469 1.00 0.00 ATOM 1 HD2 TYR Y 1 -1.559 0.416 3.124 1.00 0.00 ATOM 1 HE1 TYR Y 1 1.355 4.418 2.741 1.00 0.00 ATOM 1 HE2 TYR Y 1 -2.112 2.462 4.403 1.00 0.00 ATOM 1 HH TYR Y 1 -1.547 4.545 4.887 1.00 0.00 ATOM 1 N VAL V 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA VAL V 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C VAL V 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O VAL V 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB VAL V 1 0.565 -0.015 1.433 1.00 0.00 ATOM 1 CG1 VAL V 1 2.081 -0.139 1.407 1.00 0.00 ATOM 1 CG2 VAL V 1 0.200 1.269 2.162 1.00 0.00 ATOM 1 H VAL V 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA VAL V 1 0.318 0.927 -0.499 1.00 0.00 ATOM 1 HB VAL V 1 0.128 -0.879 1.956 1.00 0.00 ATOM 1 1HG1 VAL V 1 2.466 -0.148 2.437 1.00 0.00 ATOM 1 2HG1 VAL V 1 2.363 -1.075 0.902 1.00 0.00 ATOM 1 3HG1 VAL V 1 2.509 0.715 0.863 1.00 0.00 ATOM 1 1HG2 VAL V 1 0.611 1.241 3.183 1.00 0.00 ATOM 1 2HG2 VAL V 1 0.619 2.130 1.621 1.00 0.00 ATOM 1 3HG2 VAL V 1 -0.895 1.366 2.210 1.00 0.00 king-2.21.120420/chiropraxis/data/prekin-atoms.pdb0000644000000000000000000011204611531212732020160 0ustar rootrootATOM 1 CA ALA A 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA A 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA A 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N ALA A 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA ALA A 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C ALA A 1 0.550 -1.193 -0.774 1.00 0.00 ATOM 1 O ALA A 1 0.022 -2.301 -0.683 1.00 0.00 ATOM 1 CB ALA A 1 0.530 0.001 1.426 1.00 0.00 ATOM 1 H ALA A 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA ALA A 1 0.341 0.916 -0.504 1.00 0.00 ATOM 1 1HB ALA A 1 1.630 0.001 1.409 1.00 0.00 ATOM 1 2HB ALA A 1 0.172 0.899 1.950 1.00 0.00 ATOM 1 3HB ALA A 1 0.172 -0.897 1.951 1.00 0.00 ATOM 1 N ALA A 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA A 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA R 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA R 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA R 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA R 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N ARG R 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA ARG R 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C ARG R 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O ARG R 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB ARG R 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 CG ARG R 1 0.246 1.277 2.204 1.0 0.00 ATOM 1 CD ARG R 1 0.805 1.209 3.616 1.0 0.00 ATOM 1 NE ARG R 1 0.536 2.429 4.372 1.0 0.00 ATOM 1 CZ ARG R 1 0.916 2.627 5.629 1.0 0.00 ATOM 1 NH1 ARG R 1 1.586 1.684 6.277 1.0 0.00 ATOM 1 NH2 ARG R 1 0.625 3.770 6.236 1.0 0.00 ATOM 1 H ARG R 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA ARG R 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB ARG R 1 0.100 -0.851 1.976 1.0 0.00 ATOM 1 2HB ARG R 1 1.624 -0.160 1.406 1.0 0.00 ATOM 1 1HG ARG R 1 0.684 2.136 1.675 1.0 0.00 ATOM 1 2HG ARG R 1 -0.840 1.445 2.245 1.0 0.00 ATOM 1 1HD ARG R 1 0.367 0.347 4.140 1.0 0.00 ATOM 1 2HD ARG R 1 1.891 1.038 3.570 1.0 0.00 ATOM 1 HE ARG R 1 0.032 3.161 3.914 1.0 0.00 ATOM 1 1HH1 ARG R 1 1.805 0.823 5.818 1.0 0.00 ATOM 1 2HH1 ARG R 1 1.872 1.833 7.223 1.0 0.00 ATOM 1 1HH2 ARG R 1 0.120 4.480 5.747 1.0 0.00 ATOM 1 2HH2 ARG R 1 0.911 3.920 7.182 1.0 0.00 ATOM 1 N ALA R 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA R 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA R 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA N 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA N 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA N 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N ASN N 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA ASN N 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C ASN N 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O ASN N 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB ASN N 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 CG ASN N 1 0.186 1.268 2.186 1.0 0.00 ATOM 1 OD1 ASN N 1 -0.124 2.295 1.582 1.0 0.00 ATOM 1 ND2 ASN N 1 0.233 1.199 3.511 1.0 0.00 ATOM 1 H ASN N 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA ASN N 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB ASN N 1 0.128 -0.867 1.973 1.0 0.00 ATOM 1 2HB ASN N 1 1.629 -0.119 1.411 1.0 0.00 ATOM 1 1HD2 ASN N 1 0.011 2.004 4.062 1.0 0.00 ATOM 1 2HD2 ASN N 1 0.491 0.343 3.959 1.0 0.00 ATOM 1 N ALA N 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA N 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA N 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA D 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA D 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA D 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N ASP D 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA ASP D 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C ASP D 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O ASP D 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB ASP D 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 CG ASP D 1 0.292 1.315 2.147 1.0 0.00 ATOM 1 OD1 ASP D 1 -0.028 2.311 1.464 1.0 0.00 ATOM 1 OD2 ASP D 1 0.418 1.349 3.389 1.0 0.00 ATOM 1 H ASP D 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA ASP D 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB ASP D 1 0.060 -0.813 1.999 1.0 0.00 ATOM 1 2HB ASP D 1 1.616 -0.209 1.416 1.0 0.00 ATOM 1 N ALA D 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA D 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA D 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA C 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA C 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA C 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N CYS C 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA CYS C 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C CYS C 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O CYS C 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB CYS C 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 SG CYS C 1 0.146 1.492 2.376 1.0 0.00 ATOM 1 H CYS C 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA CYS C 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB CYS C 1 0.127 -0.872 1.964 1.0 0.00 ATOM 1 2HB CYS C 1 1.629 -0.125 1.402 1.0 0.00 ATOM 1 HG CYS C 1 0.641 1.390 3.573 1.0 0.00 ATOM 1 N ALA C 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA C 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA C 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA Q 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA Q 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA Q 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N GLN Q 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA GLN Q 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C GLN Q 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O GLN Q 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB GLN Q 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 CG GLN Q 1 0.246 1.278 2.204 1.0 0.00 ATOM 1 CD GLN Q 1 0.790 1.240 3.618 1.0 0.00 ATOM 1 OE1 GLN Q 1 0.972 0.168 4.196 1.0 0.00 ATOM 1 NE2 GLN Q 1 1.054 2.414 4.180 1.0 0.00 ATOM 1 H GLN Q 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA GLN Q 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB GLN Q 1 0.099 -0.850 1.977 1.0 0.00 ATOM 1 2HB GLN Q 1 1.624 -0.161 1.406 1.0 0.00 ATOM 1 1HG GLN Q 1 0.685 2.132 1.668 1.0 0.00 ATOM 1 2HG GLN Q 1 -0.841 1.442 2.238 1.0 0.00 ATOM 1 1HE2 GLN Q 1 1.416 2.453 5.111 1.0 0.00 ATOM 1 2HE2 GLN Q 1 0.890 3.259 3.672 1.0 0.00 ATOM 1 N ALA Q 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA Q 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA Q 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA E 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA E 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA E 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N GLU E 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA GLU E 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C GLU E 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O GLU E 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB GLU E 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 CG GLU E 1 0.246 1.278 2.204 1.0 0.00 ATOM 1 CD GLU E 1 0.790 1.240 3.618 1.0 0.00 ATOM 1 OE1 GLU E 1 1.224 0.155 4.060 1.0 0.00 ATOM 1 OE2 GLU E 1 0.784 2.296 4.285 1.0 0.00 ATOM 1 H GLU E 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA GLU E 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB GLU E 1 0.099 -0.850 1.977 1.0 0.00 ATOM 1 2HB GLU E 1 1.624 -0.161 1.406 1.0 0.00 ATOM 1 1HG GLU E 1 0.685 2.132 1.668 1.0 0.00 ATOM 1 2HG GLU E 1 -0.841 1.442 2.238 1.0 0.00 ATOM 1 N ALA E 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA E 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA E 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA G 0 -3.648 0.915 -0.467 1.00 0.00 ATOM 1 C ALA G 0 -2.128 1.019 -0.520 1.00 0.00 ATOM 1 O ALA G 0 -1.580 2.001 -1.021 1.00 0.00 ATOM 1 N GLY G 1 -1.451 0.000 0.000 1.00 0.00 ATOM 1 CA GLY G 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C GLY G 1 0.580 -1.175 -0.762 1.00 0.00 ATOM 1 O GLY G 1 0.073 -2.293 -0.678 1.00 0.00 ATOM 1 H GLY G 1 -1.872 -0.808 0.412 1.00 0.00 ATOM 1 1HA GLY G 1 0.363 0.938 -0.446 1.00 0.00 ATOM 1 2HA GLY G 1 0.364 -0.025 1.038 1.00 0.00 ATOM 1 N ALA G 2 1.614 -0.958 -1.536 1.00 0.00 ATOM 1 CA ALA G 2 2.237 -2.013 -2.327 1.00 0.00 ATOM 1 H ALA G 2 2.047 -0.063 -1.640 1.00 0.00 ATOM 1 CA ALA H 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA H 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA H 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N HIS H 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA HIS H 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C HIS H 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O HIS H 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB HIS H 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 CG HIS H 1 0.205 1.241 2.202 1.0 0.00 ATOM 1 ND1 HIS H 1 0.775 2.464 1.923 1.0 0.00 ATOM 1 CD2 HIS H 1 -0.637 1.449 3.241 1.0 0.00 ATOM 1 CE1 HIS H 1 0.298 3.370 2.757 1.0 0.00 ATOM 1 NE2 HIS H 1 -0.560 2.780 3.566 1.0 0.00 ATOM 1 H HIS H 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA HIS H 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB HIS H 1 0.128 -0.871 1.967 1.0 0.00 ATOM 1 2HB HIS H 1 1.629 -0.123 1.405 1.0 0.00 ATOM 1 HD1 HIS H 1 1.445 2.638 1.200 1.0 0.00 ATOM 1 HD2 HIS H 1 -1.265 0.692 3.733 1.0 0.00 ATOM 1 HE1 HIS H 1 0.571 4.436 2.775 1.0 0.00 ATOM 1 HE2 HIS H 1 -1.072 3.231 4.297 1.0 0.00 ATOM 1 N ALA H 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA H 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA H 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA I 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA I 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA I 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N ILE I 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA ILE I 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C ILE I 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O ILE I 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB ILE I 1 0.565 -0.015 1.433 1.0 0.00 ATOM 1 CG1 ILE I 1 0.196 1.277 2.165 1.0 0.00 ATOM 1 CD1 ILE I 1 0.502 1.248 3.646 1.0 0.00 ATOM 1 CG2 ILE I 1 2.081 -0.139 1.407 1.0 0.00 ATOM 1 H ILE I 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA ILE I 1 0.318 0.927 -0.499 1.00 0.00 ATOM 1 HB ILE I 1 0.129 -0.878 1.957 1.0 0.00 ATOM 1 1HG1 ILE I 1 0.739 2.116 1.705 1.0 0.00 ATOM 1 2HG1 ILE I 1 -0.877 1.473 2.025 1.0 0.00 ATOM 1 1HD1 ILE I 1 0.211 2.208 4.100 1.0 0.00 ATOM 1 2HD1 ILE I 1 -0.061 0.433 4.122 1.0 0.00 ATOM 1 3HD1 ILE I 1 1.580 1.086 3.795 1.0 0.00 ATOM 1 1HG2 ILE I 1 2.466 -0.148 2.437 1.0 0.00 ATOM 1 2HG2 ILE I 1 2.363 -1.075 0.902 1.0 0.00 ATOM 1 3HG2 ILE I 1 2.509 0.715 0.863 1.0 0.00 ATOM 1 N ALA I 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA I 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA I 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA L 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA L 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA L 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N LEU L 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA LEU L 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C LEU L 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O LEU L 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB LEU L 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 CG LEU L 1 0.230 1.243 2.271 1.0 0.00 ATOM 1 CD1 LEU L 1 0.711 1.057 3.702 1.0 0.00 ATOM 1 CD2 LEU L 1 0.923 2.466 1.692 1.0 0.00 ATOM 1 H LEU L 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA LEU L 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB LEU L 1 0.126 -0.877 1.955 1.0 0.00 ATOM 1 2HB LEU L 1 1.627 -0.130 1.394 1.0 0.00 ATOM 1 HG LEU L 1 -0.860 1.390 2.258 1.0 0.00 ATOM 1 1HD1 LEU L 1 0.481 1.961 4.286 1.0 0.00 ATOM 1 2HD1 LEU L 1 0.201 0.192 4.151 1.0 0.00 ATOM 1 3HD1 LEU L 1 1.797 0.885 3.705 1.0 0.00 ATOM 1 1HD2 LEU L 1 0.691 3.346 2.308 1.0 0.00 ATOM 1 2HD2 LEU L 1 2.010 2.303 1.683 1.0 0.00 ATOM 1 3HD2 LEU L 1 0.570 2.635 0.663 1.0 0.00 ATOM 1 N ALA L 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA L 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA L 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA K 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA K 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA K 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N LYS K 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA LYS K 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C LYS K 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O LYS K 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB LYS K 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 CG LYS K 1 0.246 1.277 2.204 1.0 0.00 ATOM 1 CD LYS K 1 0.805 1.209 3.616 1.0 0.00 ATOM 1 CE LYS K 1 0.516 2.486 4.387 1.0 0.00 ATOM 1 NZ LYS K 1 1.058 2.433 5.773 1.0 0.00 ATOM 1 H LYS K 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA LYS K 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB LYS K 1 0.100 -0.851 1.976 1.0 0.00 ATOM 1 2HB LYS K 1 1.624 -0.160 1.406 1.0 0.00 ATOM 1 1HG LYS K 1 0.684 2.136 1.675 1.0 0.00 ATOM 1 2HG LYS K 1 -0.840 1.445 2.245 1.0 0.00 ATOM 1 1HD LYS K 1 0.368 0.350 4.144 1.0 0.00 ATOM 1 2HD LYS K 1 1.892 1.041 3.574 1.0 0.00 ATOM 1 1HE LYS K 1 0.952 3.343 3.855 1.0 0.00 ATOM 1 2HE LYS K 1 -0.572 2.652 4.426 1.0 0.00 ATOM 1 1HZ LYS K 1 0.848 3.288 6.247 1.0 0.00 ATOM 1 2HZ LYS K 1 0.642 1.668 6.265 1.0 0.00 ATOM 1 3HZ LYS K 1 2.049 2.306 5.738 1.0 0.00 ATOM 1 N ALA K 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA K 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA K 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA M 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA M 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA M 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N MET M 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA MET M 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C MET M 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O MET M 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB MET M 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 CG MET M 1 0.205 1.258 2.219 1.0 0.00 ATOM 1 SD MET M 1 0.993 2.730 1.544 1.0 0.00 ATOM 1 CE MET M 1 2.708 2.414 1.953 1.0 0.00 ATOM 1 H MET M 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA MET M 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB MET M 1 0.127 -0.871 1.966 1.0 0.00 ATOM 1 2HB MET M 1 1.629 -0.125 1.404 1.0 0.00 ATOM 1 1HG MET M 1 -0.886 1.402 2.228 1.0 0.00 ATOM 1 2HG MET M 1 0.521 1.125 3.265 1.0 0.00 ATOM 1 1HE MET M 1 3.331 3.247 1.596 1.0 0.00 ATOM 1 2HE MET M 1 2.814 2.320 3.044 1.0 0.00 ATOM 1 3HE MET M 1 3.035 1.481 1.471 1.0 0.00 ATOM 1 N ALA M 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA M 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA M 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA M 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA M 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA M 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N MSE M 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA MSE M 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C MSE M 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O MSE M 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB MSE M 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 CG MSE M 1 0.205 1.258 2.219 1.0 0.00 ATOM 1 SED MSE M 1 1.047 2.831 1.498 1.0 0.00 ATOM 1 CE MSE M 1 2.865 2.414 1.975 1.0 0.00 ATOM 1 H MSE M 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA MSE M 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB MSE M 1 0.127 -0.871 1.966 1.0 0.00 ATOM 1 2HB MSE M 1 1.629 -0.125 1.404 1.0 0.00 ATOM 1 1HG MSE M 1 -0.886 1.402 2.228 1.0 0.00 ATOM 1 2HG MSE M 1 0.521 1.125 3.265 1.0 0.00 ATOM 1 1HE MSE M 1 3.529 3.222 1.637 1.0 0.00 ATOM 1 2HE MSE M 1 2.943 2.309 3.067 1.0 0.00 ATOM 1 3HE MSE M 1 3.163 1.470 1.495 1.0 0.00 ATOM 1 N ALA M 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA M 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA M 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA F 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA F 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA F 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N PHE F 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA PHE F 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C PHE F 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O PHE F 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB PHE F 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 CG PHE F 1 0.205 1.245 2.204 1.0 0.00 ATOM 1 CD1 PHE F 1 1.005 2.370 2.106 1.0 0.00 ATOM 1 CD2 PHE F 1 -0.908 1.294 3.025 1.0 0.00 ATOM 1 CE1 PHE F 1 0.702 3.517 2.816 1.0 0.00 ATOM 1 CE2 PHE F 1 -1.215 2.439 3.736 1.0 0.00 ATOM 1 CZ PHE F 1 -0.409 3.551 3.631 1.0 0.00 ATOM 1 H PHE F 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA PHE F 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB PHE F 1 0.127 -0.871 1.967 1.0 0.00 ATOM 1 2HB PHE F 1 1.629 -0.124 1.405 1.0 0.00 ATOM 1 HD1 PHE F 1 1.894 2.352 1.458 1.0 0.00 ATOM 1 HD2 PHE F 1 -1.556 0.410 3.113 1.0 0.00 ATOM 1 HE1 PHE F 1 1.347 4.405 2.729 1.0 0.00 ATOM 1 HE2 PHE F 1 -2.102 2.462 4.386 1.0 0.00 ATOM 1 HZ PHE F 1 -0.653 4.464 4.195 1.0 0.00 ATOM 1 N ALA F 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA F 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA F 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA P 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA P 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA P 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N PRO P 1 -1.466 0.000 0.000 1.00 0.00 ATOM 1 CA PRO P 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C PRO P 1 0.566 -1.218 -0.723 1.00 0.00 ATOM 1 O PRO P 1 -0.181 -2.059 -1.222 1.00 0.00 ATOM 1 CB PRO P 1 0.344 -0.001 1.491 1.0 0.00 ATOM 1 CG PRO P 1 -0.847 -0.666 2.144 1.0 0.00 ATOM 1 CD PRO P 1 -2.010 -0.194 1.291 1.0 0.00 ATOM 1 NE PRO P 1 -1.384 0.013 -0.026 1.0 0.00 ATOM 1 HA PRO P 1 0.434 0.857 -0.537 1.00 0.00 ATOM 1 1HB PRO P 1 1.273 -0.555 1.690 1.0 0.00 ATOM 1 2HB PRO P 1 0.492 1.021 1.870 1.0 0.00 ATOM 1 1HG PRO P 1 -0.755 -1.762 2.138 1.0 0.00 ATOM 1 2HG PRO P 1 -0.960 -0.359 3.194 1.0 0.00 ATOM 1 1HD PRO P 1 -2.815 -0.942 1.247 1.0 0.00 ATOM 1 2HD PRO P 1 -2.454 0.734 1.682 1.0 0.00 ATOM 1 N ALA P 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA P 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA P 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA S 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA S 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA S 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N SER S 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA SER S 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C SER S 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O SER S 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB SER S 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 OG SER S 1 0.133 -1.167 2.128 1.0 0.00 ATOM 1 H SER S 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA SER S 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB SER S 1 0.172 0.892 1.964 1.0 0.00 ATOM 1 2HB SER S 1 1.634 0.061 1.418 1.0 0.00 ATOM 1 HG SER S 1 0.498 -1.142 3.059 1.0 0.00 ATOM 1 N ALA S 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA S 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA S 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA T 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA T 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA T 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N THR T 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA THR T 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C THR T 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O THR T 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB THR T 1 0.565 -0.015 1.433 1.0 0.00 ATOM 1 OG1 THR T 1 0.152 -1.214 2.100 1.0 0.00 ATOM 1 CG2 THR T 1 0.058 1.185 2.218 1.0 0.00 ATOM 1 H THR T 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA THR T 1 0.318 0.927 -0.499 1.00 0.00 ATOM 1 HB THR T 1 1.663 0.026 1.376 1.0 0.00 ATOM 1 HG1 THR T 1 0.521 -1.224 3.030 1.0 0.00 ATOM 1 1HG2 THR T 1 0.471 1.158 3.237 1.0 0.00 ATOM 1 2HG2 THR T 1 0.377 2.112 1.718 1.0 0.00 ATOM 1 3HG2 THR T 1 -1.039 1.154 2.267 1.0 0.00 ATOM 1 N ALA T 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA T 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA T 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 C ALA W 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA W 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N TRP W 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA TRP W 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C TRP W 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O TRP W 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB TRP W 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 CG TRP W 1 0.203 1.244 2.198 1.0 0.00 ATOM 1 CD1 TRP W 1 -0.857 1.429 3.038 1.0 0.00 ATOM 1 CD2 TRP W 1 0.936 2.476 2.193 1.0 0.00 ATOM 1 NE1 TRP W 1 -0.834 2.701 3.557 1.0 0.00 ATOM 1 CE2 TRP W 1 0.261 3.363 3.053 1.0 0.00 ATOM 1 CE3 TRP W 1 2.095 2.910 1.545 1.0 0.00 ATOM 1 CZ2 TRP W 1 0.705 4.664 3.283 1.0 0.00 ATOM 1 CZ3 TRP W 1 2.536 4.200 1.772 1.0 0.00 ATOM 1 CH2 TRP W 1 1.845 5.067 2.636 1.0 0.00 ATOM 1 H TRP W 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA TRP W 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB TRP W 1 0.128 -0.870 1.968 1.0 0.00 ATOM 1 2HB TRP W 1 1.629 -0.122 1.406 1.0 0.00 ATOM 1 HD1 TRP W 1 -1.620 0.671 3.265 1.0 0.00 ATOM 1 HE1 TRP W 1 -1.501 3.082 4.197 1.0 0.00 ATOM 1 HE3 TRP W 1 2.645 2.239 0.867 1.0 0.00 ATOM 1 HZ2 TRP W 1 0.164 5.342 3.958 1.0 0.00 ATOM 1 HZ3 TRP W 1 3.446 4.555 1.268 1.0 0.00 ATOM 1 HH2 TRP W 1 2.225 6.086 2.794 1.0 0.00 ATOM 1 N ALA W 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA W 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA W 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA Y 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA Y 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA Y 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N TYR Y 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA TYR Y 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C TYR Y 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O TYR Y 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB TYR Y 1 0.536 -0.000 1.433 1.0 0.00 ATOM 1 CG TYR Y 1 0.203 1.253 2.212 1.0 0.00 ATOM 1 CD1 TYR Y 1 1.005 2.383 2.118 1.0 0.00 ATOM 1 CD2 TYR Y 1 -0.913 1.302 3.038 1.0 0.00 ATOM 1 CE1 TYR Y 1 0.709 3.531 2.825 1.0 0.00 ATOM 1 CE2 TYR Y 1 -1.225 2.441 3.752 1.0 0.00 ATOM 1 CZ TYR Y 1 -0.413 3.555 3.645 1.0 0.00 ATOM 1 OH TYR Y 1 -0.716 4.696 4.353 1.0 0.00 ATOM 1 H TYR Y 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA TYR Y 1 0.336 0.917 -0.507 1.00 0.00 ATOM 1 1HB TYR Y 1 0.127 -0.871 1.967 1.0 0.00 ATOM 1 2HB TYR Y 1 1.629 -0.124 1.405 1.0 0.00 ATOM 1 HD1 TYR Y 1 1.892 2.363 1.469 1.0 0.00 ATOM 1 HD2 TYR Y 1 -1.559 0.416 3.124 1.0 0.00 ATOM 1 HE1 TYR Y 1 1.355 4.418 2.741 1.0 0.00 ATOM 1 HE2 TYR Y 1 -2.112 2.462 4.403 1.0 0.00 ATOM 1 HH TYR Y 1 -1.547 4.545 4.887 1.0 0.00 ATOM 1 N ALA Y 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA Y 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA Y 2 2.055 -0.074 -1.617 1.00 0.00 ATOM 1 CA ALA V 0 -3.674 0.874 -0.453 1.00 0.00 ATOM 1 C ALA V 0 -2.156 1.004 -0.521 1.00 0.00 ATOM 1 O ALA V 0 -1.630 1.992 -1.033 1.00 0.00 ATOM 1 N VAL V 1 -1.458 0.000 0.000 1.00 0.00 ATOM 1 CA VAL V 1 0.000 0.000 0.000 1.00 0.00 ATOM 1 C VAL V 1 0.551 -1.198 -0.766 1.00 0.00 ATOM 1 O VAL V 1 0.024 -2.306 -0.667 1.00 0.00 ATOM 1 CB VAL V 1 0.565 -0.015 1.433 1.0 0.00 ATOM 1 CG1 VAL V 1 2.081 -0.139 1.407 1.0 0.00 ATOM 1 CG2 VAL V 1 0.200 1.269 2.162 1.0 0.00 ATOM 1 H VAL V 1 -1.871 -0.808 0.419 1.00 0.00 ATOM 1 HA VAL V 1 0.318 0.927 -0.499 1.00 0.00 ATOM 1 HB VAL V 1 0.128 -0.879 1.956 1.0 0.00 ATOM 1 1HG1 VAL V 1 2.466 -0.148 2.437 1.0 0.00 ATOM 1 2HG1 VAL V 1 2.363 -1.075 0.902 1.0 0.00 ATOM 1 3HG1 VAL V 1 2.509 0.715 0.863 1.0 0.00 ATOM 1 1HG2 VAL V 1 0.611 1.241 3.183 1.0 0.00 ATOM 1 2HG2 VAL V 1 0.619 2.130 1.621 1.0 0.00 ATOM 1 3HG2 VAL V 1 -0.895 1.366 2.210 1.0 0.00 ATOM 1 N ALA V 2 1.615 -0.968 -1.528 1.00 0.00 ATOM 1 CA ALA V 2 2.239 -2.027 -2.312 1.00 0.00 ATOM 1 H ALA V 2 2.055 -0.074 -1.617 1.00 0.00 END king-2.21.120420/chiropraxis/data/rotamer_bounds.txt0000644000000000000000000003324111531212732020643 0ustar rootroot// These bins are often WAY too big -- the point is to partition space first, // and use the empirical distributions to decide if it's valid or not. // Box boundaries are inclusive, so a point on the border could go either way. // In those cases, though, it really doesn't matter, so it can be arbitrary. // All boundaries are on a non-cyclic 0-360 or 0-180 grid. // Some rotamers need more than one box to account for this. // Boundaries were determined by hand by IWD while looking at kins labeled // by an automatic hill-climbing algorithm. // name min1 max1 min2 max2 ... // thr, val, ser, cys // val has weird "extra" peaks above 1%: 125-135 and 345-360 p 0 120 t 120 240 m 240 360 // pro Cg_endo 0 180 Cg_exo 180 360 // phe, tyr p90 0 120 0 180 t80 120 240 0 180 m-85 240 360 35 150 m-30 240 360 0 35 m-30 240 360 150 180 // trp p-90 0 120 180 360 p90 0 120 0 180 t-105 120 240 180 305 t90 120 240 0 180 t90 120 240 305 360 m-90 240 360 180 305 m0 240 360 305 360 m0 240 360 0 45 m95 240 360 45 180 // his p-80 0 120 180 360 p80 0 120 0 180 t-160 120 240 130 225 t-80 120 240 225 360 t60 120 240 0 130 m-70 240 360 225 360 m-70 240 360 0 20 m170 240 360 130 225 m80 240 360 20 130 // leu pp 0 120 0 120 pt? 0 120 120 240 tp 120 240 0 120 tt 120 240 120 240 tm? 120 240 240 360 mp 240 360 0 120 mt 240 360 120 240 mm? 240 360 240 360 // ile pp 0 120 0 120 pt 0 120 120 240 tp 120 240 0 120 tt 120 240 120 240 tm? 120 240 240 360 mp 240 360 0 120 mt 240 360 120 240 mm 240 360 240 360 // asn p-10 0 120 180 360 p30 0 120 0 180 t-20 120 240 180 360 t-20 120 240 0 10 t30 120 240 10 180 m-20 240 360 300 360 m-20 240 360 0 40 m-80 240 360 200 300 m120 240 360 40 200 // asp p-10 0 120 90 180 p30 0 120 0 90 t0 120 240 0 45 t0 120 240 120 180 t70 120 240 45 120 m-20 240 360 0 180 // gln pt20 0 120 120 240 0 360 pm0 0 120 240 360 0 360 pp0? 0 120 0 120 0 360 tp-100 120 240 0 120 150 300 tp60 120 240 0 120 0 150 tp60 120 240 0 120 300 360 tt0 120 240 120 240 0 360 tm0? 120 240 240 360 0 360 mp0 240 360 0 120 0 360 mt-30 240 360 120 240 0 360 mm-40 240 360 240 360 0 60 mm-40 240 360 240 360 210 360 mm100 240 360 240 360 60 210 // glu pp20? 0 120 0 120 0 180 pt-20 0 120 120 240 0 180 pm0 0 120 240 360 0 180 tp10 120 240 0 120 0 180 tt0 120 240 120 240 0 180 tm-20 120 240 240 360 0 180 mp0 240 360 0 120 0 180 mt-10 240 360 120 240 0 180 mm-40 240 360 240 360 0 180 // met (mmt and tpt maybe two peaks each) ppp? 0 120 0 120 0 120 ptp 0 120 120 240 0 120 ptt? 0 120 120 240 120 240 ptm 0 120 120 240 240 360 pmm? 0 120 240 360 240 360 tpp 120 240 0 120 0 120 tpp 120 240 0 120 330 360 tpt 120 240 0 120 120 330 ttp 120 240 120 240 0 120 ttt 120 240 120 240 120 240 ttm 120 240 120 240 240 360 tmt? 120 240 240 360 120 240 tmm? 120 240 240 360 240 360 mpp? 240 360 0 120 0 120 mpt? 240 360 0 120 120 240 mtp 240 360 120 240 0 120 mtt 240 360 120 240 120 240 mtm 240 360 120 240 240 360 mmt 240 360 240 360 30 240 mmm 240 360 240 360 0 30 mmm 240 360 240 360 240 360 // lys (kept all b/c can't see 4D peaks; some never really occur) pppp? 0 120 0 120 0 120 0 120 pppt? 0 120 0 120 0 120 120 240 pppm? 0 120 0 120 0 120 240 360 pptp? 0 120 0 120 120 240 0 120 pptt? 0 120 0 120 120 240 120 240 pptm? 0 120 0 120 120 240 240 360 ppmp? 0 120 0 120 240 360 0 120 ppmt? 0 120 0 120 240 360 120 240 ppmm? 0 120 0 120 240 360 240 360 ptpp? 0 120 120 240 0 120 0 120 ptpt 0 120 120 240 0 120 120 240 ptpm? 0 120 120 240 0 120 240 360 pttp 0 120 120 240 120 240 0 120 pttt 0 120 120 240 120 240 120 240 pttm 0 120 120 240 120 240 240 360 ptmp? 0 120 120 240 240 360 0 120 ptmt 0 120 120 240 240 360 120 240 ptmm? 0 120 120 240 240 360 240 360 pmpp? 0 120 240 360 0 120 0 120 pmpt? 0 120 240 360 0 120 120 240 pmpm? 0 120 240 360 0 120 240 360 pmtp? 0 120 240 360 120 240 0 120 pmtt? 0 120 240 360 120 240 120 240 pmtm? 0 120 240 360 120 240 240 360 pmmp? 0 120 240 360 240 360 0 120 pmmt? 0 120 240 360 240 360 120 240 pmmm? 0 120 240 360 240 360 240 360 tppp? 120 240 0 120 0 120 0 120 tppt? 120 240 0 120 0 120 120 240 tppm? 120 240 0 120 0 120 240 360 tptp 120 240 0 120 120 240 0 120 tptt 120 240 0 120 120 240 120 240 tptm 120 240 0 120 120 240 240 360 tpmp? 120 240 0 120 240 360 0 120 tpmt? 120 240 0 120 240 360 120 240 tpmm? 120 240 0 120 240 360 240 360 ttpp 120 240 120 240 0 120 0 120 ttpt 120 240 120 240 0 120 120 240 ttpm? 120 240 120 240 0 120 240 360 tttp 120 240 120 240 120 240 0 120 tttt 120 240 120 240 120 240 120 240 tttm 120 240 120 240 120 240 240 360 ttmp? 120 240 120 240 240 360 0 120 ttmt 120 240 120 240 240 360 120 240 ttmm 120 240 120 240 240 360 240 360 tmpp? 120 240 240 360 0 120 0 120 tmpt? 120 240 240 360 0 120 120 240 tmpm? 120 240 240 360 0 120 240 360 tmtp? 120 240 240 360 120 240 0 120 tmtt? 120 240 240 360 120 240 120 240 tmtm? 120 240 240 360 120 240 240 360 tmmp? 120 240 240 360 240 360 0 120 tmmt? 120 240 240 360 240 360 120 240 tmmm? 120 240 240 360 240 360 240 360 mppp? 240 360 0 120 0 120 0 120 mppt? 240 360 0 120 0 120 120 240 mppm? 240 360 0 120 0 120 240 360 mptp? 240 360 0 120 120 240 0 120 mptt 240 360 0 120 120 240 120 240 mptm? 240 360 0 120 120 240 240 360 mpmp? 240 360 0 120 240 360 0 120 mpmt? 240 360 0 120 240 360 120 240 mpmm? 240 360 0 120 240 360 240 360 mtpp 240 360 120 240 0 120 0 120 mtpt 240 360 120 240 0 120 120 240 mtpm? 240 360 120 240 0 120 240 360 mttp 240 360 120 240 120 240 0 120 mttt 240 360 120 240 120 240 120 240 mttm 240 360 120 240 120 240 240 360 mtmp? 240 360 120 240 240 360 0 120 mtmt 240 360 120 240 240 360 120 240 mtmm 240 360 120 240 240 360 240 360 mmpp? 240 360 240 360 0 120 0 120 mmpt? 240 360 240 360 0 120 120 240 mmpm? 240 360 240 360 0 120 240 360 mmtp 240 360 240 360 120 240 0 120 mmtt 240 360 240 360 120 240 120 240 mmtm 240 360 240 360 120 240 240 360 mmmp? 240 360 240 360 240 360 0 120 mmmt 240 360 240 360 240 360 120 240 mmmm 240 360 240 360 240 360 240 360 // arg (again, some entries are dummies for peaks that never occur) ppp_? 0 120 0 120 0 120 0 360 ppt_? 0 120 0 120 120 240 0 360 ppm_? 0 120 0 120 240 360 0 360 ptp85 0 120 120 240 0 120 0 120 ptp180 0 120 120 240 0 120 120 360 ptt85 0 120 120 240 120 240 0 120 ptt180 0 120 120 240 120 240 120 240 ptt-85 0 120 120 240 120 240 240 360 ptm85 0 120 120 240 240 360 0 120 ptm180 0 120 120 240 240 360 120 360 pmp_? 0 120 240 360 0 120 0 360 pmt_? 0 120 240 360 120 240 0 360 pmm_? 0 120 240 360 240 360 0 360 tpp85 120 240 0 120 0 120 0 120 tpp180 120 240 0 120 0 120 120 360 tpt85 120 240 0 120 120 240 0 120 tpt180 120 240 0 120 120 240 120 360 tpm_? 120 240 0 120 240 360 0 360 ttp85 120 240 120 240 0 120 0 120 ttp180 120 240 120 240 0 120 120 240 ttp-105 120 240 120 240 0 120 240 360 ttt85 120 240 120 240 120 240 0 120 ttt180 120 240 120 240 120 240 120 240 ttt-85 120 240 120 240 120 240 240 360 ttm105 120 240 120 240 240 360 0 120 ttm180 120 240 120 240 240 360 120 240 ttm-85 120 240 120 240 240 360 240 360 tmp_? 120 240 240 360 0 120 0 360 tmt_? 120 240 240 360 120 240 0 360 tmm_? 120 240 240 360 240 360 0 360 mpp_? 240 360 0 120 0 120 0 360 mpt_? 240 360 0 120 120 240 0 360 mpm_? 240 360 0 120 240 360 0 360 mtp85 240 360 120 240 0 120 0 120 mtp180 240 360 120 240 0 120 120 240 mtp-105 240 360 120 240 0 120 240 360 mtt85 240 360 120 240 120 240 0 120 mtt180 240 360 120 240 120 240 120 240 mtt-85 240 360 120 240 120 240 240 360 mtm105 240 360 120 240 240 360 0 120 mtm180 240 360 120 240 240 360 120 240 mtm-85 240 360 120 240 240 360 240 360 mmp_? 240 360 240 360 0 120 0 360 mmt85 240 360 240 360 120 240 0 120 mmt180 240 360 240 360 120 240 120 240 mmt-85 240 360 240 360 120 240 240 360 mmm180 240 360 240 360 240 360 0 240 mmm-85 240 360 240 360 240 360 240 360 king-2.21.120420/chiropraxis/build.xml0000644000000000000000000001513711677361350016007 0ustar rootroot Chiropraxis - manipulations for models of protein backbone king-2.21.120420/chiropraxis/resource/0000755000000000000000000000000011677361404016006 5ustar rootrootking-2.21.120420/chiropraxis/resource/king/0000755000000000000000000000000011677361404016736 5ustar rootrootking-2.21.120420/chiropraxis/resource/king/king_prefs0000644000000000000000000000146611571452340021010 0ustar rootroot###################################################################### ### TOOL MENU PLACEMENT ############################################## ###################################################################### chiropraxis.kingtools.BackrubTool.menuName = Structural biology chiropraxis.kingtools.HingeTool.menuName = chiropraxis.kingtools.ModelManager2.menuName = Structural biology chiropraxis.kingtools.ScRotTool.menuName = Structural biology chiropraxis.kingtools.ScMutTool.menuName = Structural biology chiropraxis.kingtools.SswingTool.menuName = chiropraxis.forcefield.RubberBandTool.menuName = chiropraxis.kingtools.PhiPsiTool.menuName = Structural biology chiropraxis.kingtools.SupKitchenTool.menuName = Specialty chiropraxis.kingtools.ShearTool.menuName = Structural biology king-2.21.120420/chiropraxis/resource/META-INF/0000755000000000000000000000000011677361404017146 5ustar rootrootking-2.21.120420/chiropraxis/resource/META-INF/services/0000755000000000000000000000000011677361404020771 5ustar rootrootking-2.21.120420/chiropraxis/resource/META-INF/services/king.Plugin0000644000000000000000000000052311571452340023072 0ustar rootrootchiropraxis.kingtools.ModelManager2 chiropraxis.kingtools.BackrubTool chiropraxis.kingtools.HingeTool chiropraxis.kingtools.ScRotTool chiropraxis.kingtools.ScMutTool chiropraxis.kingtools.SswingTool chiropraxis.forcefield.RubberBandTool chiropraxis.kingtools.PhiPsiTool chiropraxis.kingtools.SupKitchenTool chiropraxis.kingtools.ShearTool king-2.21.120420/chiropraxis/resource/chiropraxis/0000755000000000000000000000000011677361404020341 5ustar rootrootking-2.21.120420/chiropraxis/resource/chiropraxis/mc/0000755000000000000000000000000011677361404020740 5ustar rootrootking-2.21.120420/chiropraxis/resource/chiropraxis/mc/Suppose.help0000644000000000000000000000203611531212712023233 0ustar rootroot Usage: suppose [-n=# |-f=#] model1.pdb model2.pdb [output.kin] SUPPOSE is an aid for least-squares superpositioning of two protein structures. Given two PDB files, it will produce a kinemage with several plots based on C-alpha positions, difference-distances between them, and RMSDs for fitting on various subsets of those C-alphas. It can also generate a script for the Uppsala program LSQMAN that will effect a superposition on a specific subset. Thus, the program is usually run twice: once to examine the criteria and choose a subset to work with, and again to generate the script for fitting in LSQMAN. Options: -n=# Selects the best subset that contains the specified number of residues. Two algorithms are each allowed to choose a subset: Lesk's RMSD "sieve" and IWD's iterative, weighted, unsigned-sum difference distance. The resulting LSQMAN script appears in the kinemage text. -f=# Like -n, except the subset size is specified as a fraction on (0,1] or a percentage on (1,100]. king-2.21.120420/chiropraxis/resource/chiropraxis/mc/SheetBuilder.help0000644000000000000000000000170111531212712024152 0ustar rootroot Usage: java chiropraxis.mc.SheetBuilder [-flags] file.pdb [> output.kin] SHEETBUILDER is an aid for finding beta sheets in PDB files. It can also report certain information about parts of them. For example, it can find aromatics hanging over Gly vs. other residue types in antiparallel sheet, which may undergo backrubs. Options: -kin Outputs a kinemage format visualization of sheets and (opt'l) specific aromatic residues. On by default. -csv Outputs sheet stats by default, or beta arom stats if -betaarom is used, in csv format. -betaarom Looks for Phe/His/Tyr/Thr in antiparallel sheet that meets certain reqs. -oppres=AAA[,BBB,...] Considers only aromatics hanging over the indicated residue type(s). To be used alongside -betaarom. -v[erbose] Prints extra information you probably don't even wanna know... -h[elp] Shows what you're reading now. king-2.21.120420/chiropraxis/resource/chiropraxis/mc/VariableRegions.help0000644000000000000000000000332211531212712024650 0ustar rootroot Usage: VariableRegions file1.pdb [file2.pdb] [options] VARIABLEREGIONS compares the alternate conformations in one PDB, or two PDBs if provided, and reports on / highlights the phi,psi and Calpha differences between them. Output can go to kinemage format to append to the structure(s) of interest, or to csv format for e.g. chart-making in Excel. Signs of d(phi,psi) reflect "change" from altA->altB or file1->file2 (e.g. 10deg->20deg = +10deg change). By default, movement information (d(phi,psi,Ca)) is reported only for residues that move, but this can be changed with flags. Options: -kin Kinemage of d(phi,psi,Ca) to stdout. On by default. -csv | -nokin Comma-separated text of d(phi,psi,Ca) to stdout. * KIN OUTPUT * -hinges Draw phi,psi fans only for ~unmoving residues flanking "hinged regions", and Ca arrows only for residues within said regions. On by default if two PDBs provided. -nohinges Turns off hinges & defaults back to kin of all residues that ~moved.. -dcamin=# Modifies def'n of hinged region for -hinges (min Ca mvmnt on ends). Default: 0.1 A for hinges, 0 A otherwise. -dphipsiscale=#, -dcascale=# Spread out/collapse d(phi,psi) fans and lengthen/shorten d(Ca) arrows. Defaults for file1-file2 kin output: x10 d(Ca), x500 d(phi,psi) Defaults for altA-altB kin output: x5 d(Ca), x1 d(phi,psi) * CSV OUTPUT * -delim="text" Use "text" as delimiter, if using -csv option. -allres Output info for all residues instead of just the ones that moved, if using -csv option. -absval Report on absolute instead of signed (d(phi,psi)). king-2.21.120420/chiropraxis/resource/chiropraxis/mc/idealpolyala12-beta.pdb0000644000000000000000000001766711531212712025146 0ustar rootrootATOM 1 N ALA 1 -1.204 -0.514 0.643 1.0 0.0 ATOM 1 CA ALA 1 0.000 0.000 0.000 1.0 0.0 ATOM 1 CB ALA 1 -0.000 1.530 0.000 1.0 0.0 ATOM 1 C ALA 1 1.258 -0.522 0.685 1.0 0.0 ATOM 1 O ALA 1 1.316 -0.616 1.911 1.0 0.0 ATOM 1 H ALA 1 -1.293 -0.267 1.608 1.0 0.0 ATOM 1 HA ALA 1 0.002 -0.356 -1.041 1.0 0.0 ATOM 1 HB1 ALA 1 -0.884 1.888 -0.549 1.0 0.0 ATOM 1 HB2 ALA 1 -0.033 1.888 1.040 1.0 0.0 ATOM 1 HB3 ALA 1 0.917 1.888 -0.491 1.0 0.0 ATOM 1 N ALA 2 2.265 -0.860 -0.115 1.0 0.0 ATOM 1 CA ALA 2 3.524 -1.373 0.412 1.0 0.0 ATOM 1 CB ALA 2 3.770 -2.802 -0.076 1.0 0.0 ATOM 1 C ALA 2 4.694 -0.478 0.018 1.0 0.0 ATOM 1 O ALA 2 4.758 0.018 -1.107 1.0 0.0 ATOM 1 H ALA 2 2.233 -0.789 -1.112 1.0 0.0 ATOM 1 HA ALA 2 3.450 -1.379 1.510 1.0 0.0 ATOM 1 HB1 ALA 2 2.946 -3.445 0.268 1.0 0.0 ATOM 1 HB2 ALA 2 3.814 -2.803 -1.175 1.0 0.0 ATOM 1 HB3 ALA 2 4.724 -3.162 0.338 1.0 0.0 ATOM 1 N ALA 3 5.619 -0.275 0.951 1.0 0.0 ATOM 1 CA ALA 3 6.788 0.560 0.704 1.0 0.0 ATOM 1 CB ALA 3 6.792 1.772 1.638 1.0 0.0 ATOM 1 C ALA 3 8.079 -0.233 0.872 1.0 0.0 ATOM 1 O ALA 3 8.202 -1.053 1.782 1.0 0.0 ATOM 1 H ALA 3 5.581 -0.671 1.869 1.0 0.0 ATOM 1 HA ALA 3 6.734 0.913 -0.337 1.0 0.0 ATOM 1 HB1 ALA 3 5.881 2.363 1.461 1.0 0.0 ATOM 1 HB2 ALA 3 6.815 1.420 2.680 1.0 0.0 ATOM 1 HB3 ALA 3 7.683 2.382 1.428 1.0 0.0 ATOM 1 N ALA 4 9.041 0.017 -0.010 1.0 0.0 ATOM 1 CA ALA 4 10.325 -0.672 0.038 1.0 0.0 ATOM 1 CB ALA 4 10.541 -1.499 -1.231 1.0 0.0 ATOM 1 C ALA 4 11.475 0.312 0.222 1.0 0.0 ATOM 1 O ALA 4 11.481 1.393 -0.368 1.0 0.0 ATOM 1 H ALA 4 8.957 0.680 -0.754 1.0 0.0 ATOM 1 HA ALA 4 10.309 -1.349 0.906 1.0 0.0 ATOM 1 HB1 ALA 4 9.735 -2.243 -1.315 1.0 0.0 ATOM 1 HB2 ALA 4 10.527 -0.829 -2.102 1.0 0.0 ATOM 1 HB3 ALA 4 11.515 -2.008 -1.164 1.0 0.0 ATOM 1 N ALA 5 12.449 -0.068 1.044 1.0 0.0 ATOM 1 CA ALA 5 13.605 0.779 1.307 1.0 0.0 ATOM 1 CB ALA 5 13.662 1.170 2.785 1.0 0.0 ATOM 1 C ALA 5 14.901 0.087 0.900 1.0 0.0 ATOM 1 O ALA 5 15.069 -1.113 1.113 1.0 0.0 ATOM 1 H ALA 5 12.458 -0.943 1.530 1.0 0.0 ATOM 1 HA ALA 5 13.497 1.691 0.701 1.0 0.0 ATOM 1 HB1 ALA 5 12.745 1.719 3.046 1.0 0.0 ATOM 1 HB2 ALA 5 13.739 0.257 3.394 1.0 0.0 ATOM 1 HB3 ALA 5 14.542 1.808 2.953 1.0 0.0 ATOM 1 N ALA 6 15.816 0.853 0.312 1.0 0.0 ATOM 1 CA ALA 6 17.098 0.315 -0.126 1.0 0.0 ATOM 1 CB ALA 6 17.245 0.440 -1.644 1.0 0.0 ATOM 1 C ALA 6 18.259 1.018 0.570 1.0 0.0 ATOM 1 O ALA 6 18.237 2.234 0.763 1.0 0.0 ATOM 1 H ALA 6 15.694 1.829 0.132 1.0 0.0 ATOM 1 HA ALA 6 17.127 -0.750 0.148 1.0 0.0 ATOM 1 HB1 ALA 6 16.433 -0.122 -2.130 1.0 0.0 ATOM 1 HB2 ALA 6 17.186 1.503 -1.924 1.0 0.0 ATOM 1 HB3 ALA 6 18.219 0.026 -1.945 1.0 0.0 ATOM 1 N ALA 7 19.274 0.246 0.945 1.0 0.0 ATOM 1 CA ALA 7 20.445 0.791 1.620 1.0 0.0 ATOM 1 CB ALA 7 20.581 0.201 3.025 1.0 0.0 ATOM 1 C ALA 7 21.716 0.531 0.819 1.0 0.0 ATOM 1 O ALA 7 21.892 -0.546 0.248 1.0 0.0 ATOM 1 H ALA 7 19.307 -0.743 0.795 1.0 0.0 ATOM 1 HA ALA 7 20.308 1.880 1.703 1.0 0.0 ATOM 1 HB1 ALA 7 19.680 0.449 3.606 1.0 0.0 ATOM 1 HB2 ALA 7 20.688 -0.891 2.945 1.0 0.0 ATOM 1 HB3 ALA 7 21.471 0.631 3.509 1.0 0.0 ATOM 1 N ALA 8 22.600 1.522 0.782 1.0 0.0 ATOM 1 CA ALA 8 23.856 1.403 0.051 1.0 0.0 ATOM 1 CB ALA 8 23.922 2.432 -1.079 1.0 0.0 ATOM 1 C ALA 8 25.054 1.570 0.980 1.0 0.0 ATOM 1 O ALA 8 25.046 2.415 1.876 1.0 0.0 ATOM 1 H ALA 8 22.472 2.401 1.240 1.0 0.0 ATOM 1 HA ALA 8 23.896 0.393 -0.384 1.0 0.0 ATOM 1 HB1 ALA 8 23.085 2.258 -1.771 1.0 0.0 ATOM 1 HB2 ALA 8 23.852 3.441 -0.650 1.0 0.0 ATOM 1 HB3 ALA 8 24.879 2.316 -1.612 1.0 0.0 ATOM 1 N ALA 9 26.086 0.759 0.761 1.0 0.0 ATOM 1 CA ALA 9 27.292 0.816 1.576 1.0 0.0 ATOM 1 CB ALA 9 27.501 -0.504 2.322 1.0 0.0 ATOM 1 C ALA 9 28.518 1.136 0.728 1.0 0.0 ATOM 1 O ALA 9 28.661 0.637 -0.388 1.0 0.0 ATOM 1 H ALA 9 26.108 0.068 0.037 1.0 0.0 ATOM 1 HA ALA 9 27.162 1.623 2.312 1.0 0.0 ATOM 1 HB1 ALA 9 26.633 -0.689 2.972 1.0 0.0 ATOM 1 HB2 ALA 9 27.601 -1.318 1.588 1.0 0.0 ATOM 1 HB3 ALA 9 28.416 -0.432 2.928 1.0 0.0 ATOM 1 N ALA 10 29.402 1.971 1.266 1.0 0.0 ATOM 1 CA ALA 10 30.617 2.360 0.560 1.0 0.0 ATOM 1 CB ALA 10 30.626 3.866 0.291 1.0 0.0 ATOM 1 C ALA 10 31.863 1.962 1.344 1.0 0.0 ATOM 1 O ALA 10 31.904 2.085 2.569 1.0 0.0 ATOM 1 H ALA 10 29.300 2.384 2.171 1.0 0.0 ATOM 1 HA ALA 10 30.631 1.825 -0.402 1.0 0.0 ATOM 1 HB1 ALA 10 29.752 4.125 -0.326 1.0 0.0 ATOM 1 HB2 ALA 10 30.581 4.402 1.250 1.0 0.0 ATOM 1 HB3 ALA 10 31.552 4.128 -0.243 1.0 0.0 ATOM 1 N ALA 11 32.879 1.485 0.632 1.0 0.0 ATOM 1 CA ALA 11 34.127 1.069 1.259 1.0 0.0 ATOM 1 CB ALA 11 34.372 -0.425 1.033 1.0 0.0 ATOM 1 C ALA 11 35.307 1.876 0.730 1.0 0.0 ATOM 1 O ALA 11 35.390 2.166 -0.464 1.0 0.0 ATOM 1 H ALA 11 32.861 1.380 -0.363 1.0 0.0 ATOM 1 HA ALA 11 34.039 1.256 2.339 1.0 0.0 ATOM 1 HB1 ALA 11 33.539 -0.994 1.473 1.0 0.0 ATOM 1 HB2 ALA 11 34.430 -0.619 -0.048 1.0 0.0 ATOM 1 HB3 ALA 11 35.318 -0.709 1.517 1.0 0.0 ATOM 1 N ALA 12 36.221 2.237 1.626 1.0 0.0 ATOM 1 CA ALA 12 37.398 3.011 1.252 1.0 0.0 ATOM 1 CB ALA 12 37.397 4.369 1.959 1.0 0.0 ATOM 1 C ALA 12 38.683 2.256 1.575 1.0 0.0 ATOM 1 O ALA 12 38.789 1.608 2.617 1.0 0.0 ATOM 1 H ALA 12 36.169 2.009 2.598 1.0 0.0 ATOM 1 HA ALA 12 37.360 3.175 0.165 1.0 0.0 ATOM 1 HB1 ALA 12 36.493 4.923 1.667 1.0 0.0 ATOM 1 HB2 ALA 12 37.405 4.207 3.046 1.0 0.0 ATOM 1 HB3 ALA 12 38.294 4.930 1.655 1.0 0.0 ATOM 1 N ALA 13 39.659 2.343 0.676 1.0 0.0 ATOM 1 CA ALA 13 40.937 1.669 0.863 1.0 0.0 ATOM 1 H ALA 13 39.587 2.866 -0.175 1.0 0.0 king-2.21.120420/chiropraxis/resource/chiropraxis/mc/DsspHelixBuilder.help0000644000000000000000000000235611531212712025014 0ustar rootroot Usage: java chiropraxis.mc.DsspHelixBuilder [-flags] file.pdb [> output.kin] DSSPHELIXBUILDER is an aid for finding helices in PDB files as well as N caps and reporting certain information about them that may comprise evidence for backrubs at certain positions, e.g. the N cap. It does *approximately* the same thing as Kabsch & Sander's DSSP algorithm. Options: -kin Outputs a kinemage format visualization of helices and (opt'l) N caps. Alternative to -print. -print Outputs csv format information about helices and (opt'l) N caps. On by default. -ncaps Turns on N cap analysis. On by default. -onlyhbncaps Reports as N caps only those residues that are a Ser/Thr/Asn/Asp and make a sc Hbond to i+2 or i+3 mc. Works on both -print and -kin output. Also turns on opt'l N cap analysis equivalently to -ncaps. -smoothaxes[=#] Smooths DAK's local helix axes, one per residue in a helix, by averaging each with its immediate neighbors the given number of times (default: once). Multiple rounds of smoothing leads to straighter local helical axes that are less affected by subtle local changes in helix direction. -verbose || -v Prints extra information you probably don't even wanna know... king-2.21.120420/chiropraxis/resource/chiropraxis/mc/idealpolyala12-alpha.pdb0000644000000000000000000001766711531212712025320 0ustar rootrootATOM 1 N ALA 1 -1.204 -0.514 0.643 1.0 0.0 ATOM 1 CA ALA 1 0.000 0.000 0.000 1.0 0.0 ATOM 1 CB ALA 1 0.808 0.860 0.974 1.0 0.0 ATOM 1 C ALA 1 0.866 -1.134 -0.537 1.0 0.0 ATOM 1 O ALA 1 1.432 -1.035 -1.625 1.0 0.0 ATOM 1 H ALA 1 -1.293 -0.267 1.608 1.0 0.0 ATOM 1 HA ALA 1 -0.315 0.624 -0.850 1.0 0.0 ATOM 1 HB1 ALA 1 0.186 1.706 1.305 1.0 0.0 ATOM 1 HB2 ALA 1 1.098 0.246 1.839 1.0 0.0 ATOM 1 HB3 ALA 1 1.707 1.234 0.461 1.0 0.0 ATOM 1 N ALA 2 0.965 -2.213 0.234 1.0 0.0 ATOM 1 CA ALA 2 1.761 -3.368 -0.162 1.0 0.0 ATOM 1 CB ALA 2 1.751 -4.434 0.936 1.0 0.0 ATOM 1 C ALA 2 1.258 -3.963 -1.472 1.0 0.0 ATOM 1 O ALA 2 2.047 -4.366 -2.327 1.0 0.0 ATOM 1 H ALA 2 0.511 -2.309 1.120 1.0 0.0 ATOM 1 HA ALA 2 2.795 -3.024 -0.315 1.0 0.0 ATOM 1 HB1 ALA 2 2.173 -4.004 1.857 1.0 0.0 ATOM 1 HB2 ALA 2 0.715 -4.757 1.112 1.0 0.0 ATOM 1 HB3 ALA 2 2.361 -5.290 0.609 1.0 0.0 ATOM 1 N ALA 3 -0.062 -4.016 -1.625 1.0 0.0 ATOM 1 CA ALA 3 -0.673 -4.562 -2.830 1.0 0.0 ATOM 1 CB ALA 3 -2.199 -4.560 -2.711 1.0 0.0 ATOM 1 C ALA 3 -0.245 -3.782 -4.068 1.0 0.0 ATOM 1 O ALA 3 0.011 -4.364 -5.123 1.0 0.0 ATOM 1 H ALA 3 -0.716 -3.693 -0.940 1.0 0.0 ATOM 1 HA ALA 3 -0.327 -5.600 -2.941 1.0 0.0 ATOM 1 HB1 ALA 3 -2.491 -5.175 -1.847 1.0 0.0 ATOM 1 HB2 ALA 3 -2.545 -3.525 -2.570 1.0 0.0 ATOM 1 HB3 ALA 3 -2.630 -4.977 -3.633 1.0 0.0 ATOM 1 N ALA 4 -0.168 -2.462 -3.934 1.0 0.0 ATOM 1 CA ALA 4 0.229 -1.600 -5.040 1.0 0.0 ATOM 1 CB ALA 4 0.169 -0.128 -4.627 1.0 0.0 ATOM 1 C ALA 4 1.628 -1.946 -5.537 1.0 0.0 ATOM 1 O ALA 4 1.888 -1.949 -6.740 1.0 0.0 ATOM 1 H ALA 4 -0.372 -1.975 -3.085 1.0 0.0 ATOM 1 HA ALA 4 -0.480 -1.767 -5.865 1.0 0.0 ATOM 1 HB1 ALA 4 -0.861 0.119 -4.329 1.0 0.0 ATOM 1 HB2 ALA 4 0.854 0.035 -3.783 1.0 0.0 ATOM 1 HB3 ALA 4 0.472 0.496 -5.482 1.0 0.0 ATOM 1 N ALA 5 2.529 -2.239 -4.602 1.0 0.0 ATOM 1 CA ALA 5 3.902 -2.587 -4.943 1.0 0.0 ATOM 1 CB ALA 5 4.732 -2.811 -3.677 1.0 0.0 ATOM 1 C ALA 5 3.954 -3.827 -5.827 1.0 0.0 ATOM 1 O ALA 5 4.744 -3.899 -6.767 1.0 0.0 ATOM 1 H ALA 5 2.332 -2.241 -3.621 1.0 0.0 ATOM 1 HA ALA 5 4.331 -1.745 -5.506 1.0 0.0 ATOM 1 HB1 ALA 5 4.732 -1.888 -3.080 1.0 0.0 ATOM 1 HB2 ALA 5 4.287 -3.633 -3.098 1.0 0.0 ATOM 1 HB3 ALA 5 5.762 -3.071 -3.966 1.0 0.0 ATOM 1 N ALA 6 3.104 -4.804 -5.520 1.0 0.0 ATOM 1 CA ALA 6 3.052 -6.043 -6.286 1.0 0.0 ATOM 1 CB ALA 6 2.036 -7.012 -5.678 1.0 0.0 ATOM 1 C ALA 6 2.707 -5.774 -7.747 1.0 0.0 ATOM 1 O ALA 6 3.266 -6.394 -8.653 1.0 0.0 ATOM 1 H ALA 6 2.456 -4.760 -4.760 1.0 0.0 ATOM 1 HA ALA 6 4.050 -6.503 -6.247 1.0 0.0 ATOM 1 HB1 ALA 6 2.333 -7.241 -4.644 1.0 0.0 ATOM 1 HB2 ALA 6 1.040 -6.542 -5.688 1.0 0.0 ATOM 1 HB3 ALA 6 2.020 -7.936 -6.276 1.0 0.0 ATOM 1 N ALA 7 1.783 -4.845 -7.972 1.0 0.0 ATOM 1 CA ALA 7 1.361 -4.493 -9.322 1.0 0.0 ATOM 1 CB ALA 7 0.245 -3.447 -9.284 1.0 0.0 ATOM 1 C ALA 7 2.533 -3.976 -10.149 1.0 0.0 ATOM 1 O ALA 7 2.658 -4.294 -11.332 1.0 0.0 ATOM 1 H ALA 7 1.320 -4.333 -7.248 1.0 0.0 ATOM 1 HA ALA 7 0.978 -5.406 -9.802 1.0 0.0 ATOM 1 HB1 ALA 7 -0.614 -3.861 -8.733 1.0 0.0 ATOM 1 HB2 ALA 7 0.617 -2.545 -8.777 1.0 0.0 ATOM 1 HB3 ALA 7 -0.052 -3.204 -10.316 1.0 0.0 ATOM 1 N ALA 8 3.390 -3.178 -9.521 1.0 0.0 ATOM 1 CA ALA 8 4.552 -2.615 -10.197 1.0 0.0 ATOM 1 CB ALA 8 5.326 -1.686 -9.260 1.0 0.0 ATOM 1 C ALA 8 5.472 -3.714 -10.720 1.0 0.0 ATOM 1 O ALA 8 6.014 -3.613 -11.821 1.0 0.0 ATOM 1 H ALA 8 3.302 -2.911 -8.562 1.0 0.0 ATOM 1 HA ALA 8 4.189 -2.032 -11.057 1.0 0.0 ATOM 1 HB1 ALA 8 4.664 -0.868 -8.941 1.0 0.0 ATOM 1 HB2 ALA 8 5.664 -2.259 -8.386 1.0 0.0 ATOM 1 HB3 ALA 8 6.194 -1.277 -9.800 1.0 0.0 ATOM 1 N ALA 9 5.645 -4.766 -9.923 1.0 0.0 ATOM 1 CA ALA 9 6.497 -5.884 -10.304 1.0 0.0 ATOM 1 CB ALA 9 6.565 -6.919 -9.179 1.0 0.0 ATOM 1 C ALA 9 6.006 -6.541 -11.590 1.0 0.0 ATOM 1 O ALA 9 6.801 -6.921 -12.448 1.0 0.0 ATOM 1 H ALA 9 5.211 -4.863 -9.027 1.0 0.0 ATOM 1 HA ALA 9 7.507 -5.488 -10.484 1.0 0.0 ATOM 1 HB1 ALA 9 6.976 -6.442 -8.278 1.0 0.0 ATOM 1 HB2 ALA 9 5.550 -7.295 -8.977 1.0 0.0 ATOM 1 HB3 ALA 9 7.215 -7.749 -9.495 1.0 0.0 ATOM 1 N ALA 10 4.688 -6.669 -11.716 1.0 0.0 ATOM 1 CA ALA 10 4.088 -7.281 -12.896 1.0 0.0 ATOM 1 CB ALA 10 2.567 -7.360 -12.750 1.0 0.0 ATOM 1 C ALA 10 4.452 -6.512 -14.162 1.0 0.0 ATOM 1 O ALA 10 4.723 -7.107 -15.206 1.0 0.0 ATOM 1 H ALA 10 4.029 -6.365 -11.028 1.0 0.0 ATOM 1 HA ALA 10 4.492 -8.301 -12.985 1.0 0.0 ATOM 1 HB1 ALA 10 2.323 -7.968 -11.866 1.0 0.0 ATOM 1 HB2 ALA 10 2.165 -6.343 -12.630 1.0 0.0 ATOM 1 HB3 ALA 10 2.145 -7.826 -13.653 1.0 0.0 ATOM 1 N ALA 11 4.458 -5.187 -14.064 1.0 0.0 ATOM 1 CA ALA 11 4.789 -4.335 -15.199 1.0 0.0 ATOM 1 CB ALA 11 4.655 -2.857 -14.824 1.0 0.0 ATOM 1 C ALA 11 6.198 -4.617 -15.709 1.0 0.0 ATOM 1 O ALA 11 6.441 -4.639 -16.916 1.0 0.0 ATOM 1 H ALA 11 4.241 -4.689 -13.223 1.0 0.0 ATOM 1 HA ALA 11 4.079 -4.563 -16.007 1.0 0.0 ATOM 1 HB1 ALA 11 3.618 -2.660 -14.515 1.0 0.0 ATOM 1 HB2 ALA 11 5.343 -2.634 -13.995 1.0 0.0 ATOM 1 HB3 ALA 11 4.910 -2.242 -15.699 1.0 0.0 ATOM 1 N ALA 12 7.126 -4.834 -14.781 1.0 0.0 ATOM 1 CA ALA 12 8.512 -5.115 -15.134 1.0 0.0 ATOM 1 CB ALA 12 9.371 -5.259 -13.875 1.0 0.0 ATOM 1 C ALA 12 8.622 -6.375 -15.987 1.0 0.0 ATOM 1 O ALA 12 9.403 -6.427 -16.937 1.0 0.0 ATOM 1 H ALA 12 6.945 -4.821 -13.798 1.0 0.0 ATOM 1 HA ALA 12 8.885 -4.266 -15.725 1.0 0.0 ATOM 1 HB1 ALA 12 9.328 -4.321 -13.304 1.0 0.0 ATOM 1 HB2 ALA 12 8.982 -6.088 -13.268 1.0 0.0 ATOM 1 HB3 ALA 12 10.410 -5.467 -14.174 1.0 0.0 ATOM 1 N ALA 13 7.834 -7.389 -15.643 1.0 0.0 ATOM 1 CA ALA 13 7.841 -8.649 -16.375 1.0 0.0 ATOM 1 H ALA 13 7.194 -7.361 -14.873 1.0 0.0 king-2.21.120420/chiropraxis/resource/chiropraxis/mc/HelixBuilder.help0000644000000000000000000000232211531212712024153 0ustar rootroot Usage: java chiropraxis.mc.HelixBuilder [-flags] file.pdb [> output.kin] HELIXBUILDER is an aid for finding helices in PDB files as well as N caps and reporting certain information about them that may comprise evidence for back- rubs at certain positions, e.g. the N cap. Options: -kin Outputs a kinemage format visualization of helices and (opt'l) N caps. Alternative to -print. -print Outputs csv format information about helices and (opt'l) N caps. On by default. -ncaps Turns on opt'l N cap analysis. -onlyhbncaps Reports as N caps only those residues that are a Ser/Thr/Asn/Asp and make a sc Hbond to i+2 or i+3 mc. Works on both -print and -kin output. Also turns on opt'l N cap analysis equivalently to -ncaps. -smoothaxes[=#] Smooths DAK's local helix axes, one per residue in a helix, by averaging each with its immediate neighbors the given number of times (default: once). Multiple rounds of smoothing leads to straighter local helical axes that are less affected by subtle local changes in helix direction. -verbose || -v Prints extra information you probably don't even wanna know... -append If doing kinemage output, don't print the @kinemage at the top. king-2.21.120420/chiropraxis/resource/chiropraxis/kingtools/0000755000000000000000000000000011677361404022352 5ustar rootrootking-2.21.120420/chiropraxis/resource/chiropraxis/kingtools/sc-connect.props0000644000000000000000000000714611531212716025471 0ustar rootroot# # This file describes the connectivity of amino acid sidechains. # The format uses commas to separate 4-character, PDB-style atom names # and semi-colons to separate different polylines (like P in kinemage format) # aminoacid.mc = " N , CA , C , O " aminoacid.hy = " N , H ; CA , HA " gly.sc = "" gly.hy = " CA ,1HA ; CA ,2HA ; CA , HA2; CA , HA3" ala.sc = " CA , CB " ala.hy = " CB ,1HB ; CB ,2HB ; CB ,3HB ; CB , HB1; CB , HB2; CB , HB3" val.sc = " CA , CB , CG1; CB , CG2" val.hy = " CB , HB ; CG1,1HG1; CG1,2HG1; CG1,3HG1; CG2,1HG2; CG2,2HG2; CG2,3HG2; CG1,HG11; CG1,HG12; CG1,HG13; CG2,HG21; CG2,HG22; CG2,HG23" leu.sc = " CA , CB , CG , CD1; CG , CD2" leu.hy = " CB ,1HB ; CB ,2HB ; CG , HG ; CD1,1HD1; CD1,2HD1; CD1,3HD1; CD2,1HD2; CD2,2HD2; CD2,3HD2; CB , HB2; CB , HB3; CD1,HD11; CD1,HD12; CD1,HD13; CD2,HD21; CD2,HD22; CD2,HD23" ile.sc = " CA , CB , CG1, CD1; CB , CG2" ile.hy = " CB , HB ; CG1,1HG1; CG1,2HG1; CG2,1HG2; CG2,2HG2; CG2,3HG2; CD1,1HD1; CD1,2HD1; CD1,3HD1; CG1,HG12; CG1,HG13; CG2,HG21; CG2,HG22; CG2,HG23; CD1,HD11; CD1,HD12; CD1,HD13" pro.sc = " CA , CB , CG , CD , N " pro.hy = " CB ,1HB ; CB ,2HB ; CG ,1HG ; CG ,2HG ; CD ,1HD ; CD ,2HD ; CB , HB2; CB , HB3; CG , HG2; CG , HG3; CD , HD2; CD , HD3" phe.sc = " CA , CB , CG , CD1, CE1, CZ , CE2, CD2, CG " phe.hy = " CB ,1HB ; CB ,2HB ; CD1, HD1; CD2, HD2; CE1, HE1; CE2, HE2; CZ , HZ ; CB , HB2; CB , HB3" tyr.sc = " CA , CB , CG , CD1, CE1, CZ , CE2, CD2, CG ; CZ , OH " tyr.hy = " CB ,1HB ; CB ,2HB ; CD1, HD1; CD2, HD2; CE1, HE1; CE2, HE2; OH , HH ; CB , HB2; CB , HB3" trp.sc = " CA , CB , CG , CD1, NE1, CE2, CD2, CG ; CD2, CE3, CZ3, CH2, CZ2, CE2" trp.hy = " CB ,1HB ; CB ,2HB ; CD1, HD1; NE1, HE1; CZ2, HZ2; CH2, HH2; CE3, HE3; CZ3, HZ3; CB , HB2; CB , HB3" ser.sc = " CA , CB , OG " ser.hy = " CB ,1HB ; CB ,2HB ; OG , HG ; CB , HB2; CB , HB3" thr.sc = " CA , CB , OG1; CB , CG2" thr.hy = " CB , HB ; OG1, HG1; CG2,1HG2; CG2,2HG2; CG2,3HG2; CG2,HG21; CG2,HG22; CG2,HG23" cys.sc = " CA , CB , SG " cys.hy = " CB ,1HB ; CB ,2HB ; SG , HG ; CB , HB2; CB , HB3; SG , HG " met.sc = " CA , CB , CG , SD , CE " met.hy = " CB ,1HB ; CB ,2HB ; CG ,1HG ; CG ,2HG ; CE ,1HE ; CE ,2HE ; CE ,3HE ; CB , HB2; CB , HB3; CG , HG2; CG , HG3; CE , HE1; CE , HE2; CE , HE3" mse.sc = " CA , CB , CG ,SED , CE ; CG ,SE , CE " mse.hy = " CB ,1HB ; CB ,2HB ; CG ,1HG ; CG ,2HG ; CE ,1HE ; CE ,2HE ; CE ,3HE ; CB , HB2; CB , HB3; CG , HG2; CG , HG3; CE , HE1; CE , HE2; CE , HE3" lys.sc = " CA , CB , CG , CD , CE , NZ " lys.hy = " CB ,1HB ; CB ,2HB ; CG ,1HG ; CG ,2HG ; CD ,1HD ; CD ,2HD ; CE ,1HE ; CE ,2HE ; NZ ,1HZ ; NZ ,2HZ ; NZ ,3HZ ; CB , HB2; CB , HB3; CG , HG2; CG , HG3; CD , HD2; CD , HD3; CE , HE2; CE , HE3; NZ , HZ1; NZ , HZ2; NZ , HZ3" his.sc = " CA , CB , CG , ND1, CE1, NE2, CD2, CG " his.hy = " CB ,1HB ; CB ,2HB ; ND1, HD1; CE1, HE1; NE2, HE2; CD2, HD2; CB , HB2; CB , HB3" arg.sc = " CA , CB , CG , CD , NE , CZ , NH1; CZ , NH2" arg.hy = " CB ,1HB ; CB ,2HB ; CG ,1HG ; CG ,2HG ; CD ,1HD ; CD ,2HD ; NE , HE ; NH1,1HH1; NH1,2HH1; NH2,1HH2; NH2,2HH2; CB , HB2; CB , HB3; CG , HG2; CG , HG3; CD , HD2; CD , HD3; NH1,HH11; NH1,HH12; NH2,HH21; NH2,HH22" asp.sc = " CA , CB , CG , OD1; CG , OD2" asp.hy = " CB ,1HB ; CB ,2HB ; CB , HB2; CB , HB3" asn.sc = " CA , CB , CG , OD1; CG , ND2" asn.hy = " CB ,1HB ; CB ,2HB ; ND2,1HD2; ND2,2HD2; CB , HB2; CB , HB3; ND2,HD21; ND2,HD22" gln.sc = " CA , CB , CG , CD , OE1; CD , NE2" gln.hy = " CB ,1HB ; CB ,2HB ; CG ,1HG ; CG ,2HG ; NE2,1HE2; NE2,2HE2; CB , HB2; CB , HB3; CG , HG2; CG , HG3; NE2,HE21; NE2,HE22" glu.sc = " CA , CB , CG , CD , OE1; CD , OE2" glu.hy = " CB ,1HB ; CB ,2HB ; CG ,1HG ; CG ,2HG ; CB , HB2; CB , HB3; CG , HG2; CG , HG3" king-2.21.120420/chiropraxis/resource/chiropraxis/kingtools/tools-manual.html0000644000000000000000000002726511531212716025655 0ustar rootroot The Chiropraxis tools manual

The Chiropraxis tools manual

Ian W. Davis

Chapter 1
The Tools

1.1  BACKRUB Tool: Protein chiropraxis

The BACKRUB tool is used to adjust short segments of protein backbone without disturbing the surrounding structure. It allows you select one residue, and rotate it around the axis between its neighboring C-alphas. Using BACKRUB requires that chiropraxis.jar be present in the plugins/ folder.
Create a backrub by control-clicking the alpha carbon of the central residue. To use the dial control, click and drag the pointer to the desired value. For finer control you can shift-drag along an imaginary slider (this behavior is somewhat like the virtual dials in O). To reset the dial to its starting value, double click the dial face. The dial can also be adjusted from the graphics window using the mouse wheel or arrow keys; see below.
The BACKRUB panel provides feedback on the geometric quality of the current model, displaying residues names, deviation of the tau angle (N-CA-C) from ideality, and the position of the residue on the Ramachandran plot (phi, psi, and favored/allowed/outlier). Deviant geometry is highlighted in red.
BACKRUB is described in the following publication: I.W. Davis, W.B. Arendall III, D.C. Richardson, and J.S. Richardson (2006) The backrub motion: How protein backbone shrugs when a sidechain dances Structure 14, 265-274.

1.1.1  Command reference

Mouse clicks
Normal Mark and identify point; make measurement (pick)
With Shift Center on selected point (pickcenter)
With Ctrl Select residue for BACKRUB (on a C-alpha); clear current selection (elsewhere)
With Shift+Ctrl -
Mouse drags
Normal Rotate around X and Y axes; Z-rotate (pinwheel) near top of screen
With Shift Adjust zoom (up/down); Adjust clipping (left/right)
With Ctrl Translate in X-Y plane (flatland); Z-translate near top of screen
With Shift+Ctrl Rotate around Y axis only
Mouse wheel / Up & Down arrow keys
Normal Adjust dial (angle of rotation)
With Shift Adjust clipping
With Ctrl Adjust zoom
With Shift+Ctrl -

1.2  C-alpha Hinges

Hinges is the generalized version of BACKRUB. It allows you to select any continuous region of backbone that joins two alpha carbons, and then rotate that segment of backbone around an axis drawn between those C-alphas. Individual peptides can also be rotated. Create a hinge by control-clicking the two alpha carbons that act as its endpoints or anchors.
Regions longer than two peptides (i.e., what BACKRUB handles) are seldom useful in fitting structures. Thus, this tool has been largely superceded by BACKRUB.

1.3  Shear Tool: Helical winding plus unwinding

The shear tool can be used to modify backbone, most commonly helix, in a manner almost completely orthogonal to the backrub. A shear shifts three peptides instead of two like a backrub, and moves the central peptide nearly parallel to the chain direction rather than perpendicular to it. Use Ctrl+Click (a.k.a. middle-click) to select a residue; it, its preceding residue, and its two following residues will become the active "molten" state. Next, drag the primary shear dial for the main motion, then optionally drag the three peptide rotation dials to alleviate some strain. Functionality is generally similar to the backrub tool.
Authored by Daniel Keedy (daniel.keedy AT duke.edu)

1.4  Tweak Phi/Psi: Visualizing possible backbone changes

The tweak phi/psi tool is useful for slightly altering the backbone dihedrals phi and psi. Use Ctrl+Click (a.k.a. middle-click) to select a residue and its adjacent region as the active "molten" state. The length of the active region can be customized by entering a number of residues in the box and pressing enter. Next, drag the phi/psi dials to rotate the molten region around either the phi or psi axis. Note that this tool makes no attempt to close the resulting chain break or to alleviate the steric clashes it usually introduces, and thus should not be employed as a fitting tool. However, it can be useful for visualizing the local effects of small changes in phi/psi and simply building intuition.
Authored by Daniel Keedy (daniel.keedy AT duke.edu)

1.5  Sidechain Rotator: Refitting protein models

The Sidechain Rotation tool is useful for doing interactive refitting of protein models in conjunction with the Hinges tool and the model manager. Use Ctrl+Click (a.k.a. middle-click) to select a sidechain to rotate, then pick from a list of predefined rotamers or set the angles by hand using the dials. The rotamericity of the current sidechain is monitored in the bottom right corner; it indicates how frequently (if ever!) the current conformation is found in well-determined structures.
To use the dial control, click and drag the pointer to the desired value. For finer control you can shift-drag along an imaginary slider (this behavior is somewhat like the virtual dials in O). To reset the dial to its starting value, double click the dial face.
Sidechain Rotator and the Hinges tool play well together: you can use both on the same residue(s) at the same time. It's often easiest to establish which sidechains will be rotatable before beginning to move the backbone, but it's possible to establish the moving parts in any order.

1.6  Sidechain Mutator: Redesigning protein models

The Sidechain Mutation tool is useful for doing interactive refitting of protein models in conjunction with the Hinges and Rotator tools and the model manager. Use Ctrl+Click (a.k.a. middle-click) to select a sidechain to mutate, then pick from a list of known amino acid types. If you select histidine, you will also be prompted to choose a protonation state.
Sidechain Mutator plays well with the other tools, but you cannot mutate the model while any part of it is mobile ("molten"). Thus, it's often easiest to make mutations first, and then refit the new sequence.

1.7  Model Manager: Editing a macromolecular model

This facility is for doing molecular modeling based on some starting model, usually a PDB file. The Model Manager handles opening and saving these files, and is required for the operation of the following tools:
  • Backrub
  • C-alpha hinges
  • Shear
  • Tweak phi/psi
  • Sidechain rotator
  • Sidechain mutator
The model manager also tracks the changes made to the model and allows near-unlimited undo. In addition, it provides access to dynamic visualizations, like Probe dots and NOE constraints. Using this feature requires that your OS can find Probe - i.e., that either Probe resides in the same directory as king.jar and is named either probe or probe.exe; or that Probe is somewhere on your PATH and is named probe or probe.exe. The same is true of noe-display.
There are several special symbols that can be inserted into the Probe and NOE command lines. Their meanings are as follows:
{pdbfile}
The fully-qualified name of the "base" PDB file; i.e. the one with all changes except the currently molten ones. (Those are piped in via standard input.)
{molten}
The list of molten residues, separated by commas: 1, 2, 3, ...
{center}
The coordinates of the current center of view, in real space: x, y, z. This can be used for the within distance of x, y, z selection statement. Note that visualizations aren't automatically updated when the center of view changes.

Chapter 2
Copyright & acknowledgments

2.1  Copyright

The Chiropraxis code and all its associated original resources and documentation are copyright (C) 2002-2010 by Ian W. Davis, Daniel A. Keedy, and Vincent B. Chen.

2.2  Revision status

This manual was last updated 1 September 2010 by DAK for Chiropraxis version 1.07.


File translated from TEX by TTHgold, version 4.00.
On 15 Dec 2010, 17:22.
king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/0000755000000000000000000000000011744306102022134 5ustar rootrootking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama5200/0000755000000000000000000000000011744306102023363 5ustar rootrootking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama5200/proline.ndft0000644000000000000000000037516711744305674025750 0ustar rootrootTop5200 Proline B<3044C4C48IX%7X%7X%7X%8X%8X%8X%8X%7X%8X%8X%8.8.8.8.8.8.8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.8.8.8.8.8.8X%8X%8X%8.8.8.8.8.8.90- 90- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8X%8X%88X%8X%8X%8X%8X%8IX%8X%8X%8X%8X%8X%8X%8.8.8.8.990- 90- 90- 9IX%9b)9b)9b)9b)9b)9b)9b)9IX%90- 90- 90- 8.8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8X%8X%8X%8X%8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9IX%90- 90- 8.8.8.8X%8X%8IX%8X%8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.90- 8.8.8.8.8.8X%8X%8X%8.8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 90- 8.8.8.8.8X%8X%8X%8.8.8.8.8.8.9990- 90- 90- 998.8.9990- 90- 90- 90- 90- 90- 9b)90- 90- 90- 98.8.8X%88X%8X%8.8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9b)9{.9{.9l9l9l9l9l9l9l9{.9{.9b)9b)9b)9b)9b)9b)90- 90- 90- 8.8.8.8.8.8X%8X%8X%8X%8X%8X%8IX%8X%8X%8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 90- 8.8.8.8X%8X%8.8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9{.9{.9l9l99- 9- 9- 9- 9- 9- 9- 99l9l9{.9b)9b)9b)9b)9b)9b)9b)9b)90- 90- 90- 90- 98.8.8.8X%8X%8X%8X%8X%8X%8X%8X%8X%8X%8X%8X%8X%8X%8.8.8.8.90- 90- 90- 90- 9IX%9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9{.9{.9b)9b)9b)9b)90- 90- 8.8.8IX%8X%8.8.8.8.990- 90- 9IX%9b)9b)9b)9b)9b)9{.9l99- 9- 9¢9X%9X%9X%9X%9X%9X%9X%9¢9- 9- 99l9l9{.9{.9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 98.8.8.8X%8X%7X%8X%8X%8X%8X%8X%8X%8X%8X%8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8X%8X%8X%8.8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9{.9{.9{.9{.9l9l9{.9- 99l9l9b)9b)9b)9b)90- 8.8.8X%8X%8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9{.9l9l9- 9¢9X%9X%9X%9X%99)9)99X%9X%9X%9X%9X%9¢9¢9- 9- 9999l9l9l9l9l9{.9b)9b)9b)9b)90- 90- 8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9{.9{.9l9l9l9l9999- 9- 9- 9- 9- 9- 9X%9X%9¢9- 99l9b)9b)9b)90- 8.8X%88X%8.8.8.990- 90- 9b)9b)9b)9b)9b)9b)9l9l9- 9¢9X%9X%9:!: l::L:L:L:::!9.9)9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9¢9- 99l9{.9b)9b)9b)90- 90- 90- 8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.990- 90- 90- 9b)9b)9b)9b)9b)9b)9{.9l9l99- 9- 9¢9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%:!9.99X%9X%9- 9l9b)9b)9b)90- 8.8X%8X%8.8.8.990- 90- 9b)9b)9b)9b)9b)9{.9l99¢9X%9X%9: l:L:)_:0- :6w:6w:6w:6w:0- :)_:)_:#:L:L:L:L:L:L:L:L::: l:!999X%9X%9X%9- 9l9{.9b)9b)9b)9b)90- 90- 90- 90- 90- 9990- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 9b)9b)9b)9b)9b)9b)9{.9l99- 9¢9X%9X%9X%9X%9)9:!:!: l:Z::::::0- :)_:L:99X%9¢9l9b)9b)90- 8.8.8X%8X%8.8.8.990- 90- 9b)9b)9b)9b)9{.9l99- 9X%9X%:!:L:)_:6w:6w:6w:6w:<¢:<¢:<¢:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:0- :)_:#::!99X%9¢99l9b)9b)9b)9b)9b)9b)90- 90- 90- 90- 90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)90- 90- 90- 90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9{.9l99- 9X%9X%9X%9:!::L:)_:)_:)_:0- :0- :6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:)_:!9X%9¢9l9b)9b)90- 8.8.8X%8.8.8.990- 90- 9b)9b)9b)9b)9{.9l9- 9X%9X%:!:)_:6w:6w:6w:<¢:IX%:U:o:x:x:x:ucm:\8h:IX%:C d:<¢:<¢:<¢:<¢:C d:C d:C d:C d:C d:C d:<¢:<¢:6w:6w:6w:6w:)_:L:!9X%9X%9- 9l9{.9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9{.9l9l99- 9X%9X%9X%:!:L:)_:0- :6w:6w:6w:6w:6w:6w:6w:<¢:<¢:<¢:<¢:<¢:6w:O:IX%:<¢:6w:6w:)_: l9X%9¢9l9b)9b)90- 8.8X%8IX%8X%8.8.8.8.90- 90- 90- 9b)9b)9b)9{.9l9- 9X%9:L:6w:6w:<¢:\8h:!:l::r=::_::_::L::l:!:!:!:!:G9:l:l:l:G9:!:x:o:O:C d:<¢:6w:6w:0- :#: l99X%9- 99{.9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9{.9l99- 9¢9X%9X%9X%9):!:L:)_:6w:6w:6w:6w:<¢:C d:IX%:O:h:o:ucm:x:x:x:ucm:h::!:ucm:O:<¢:6w:)_: l9X%9- 9l9b)9b)98.8X%8X%8X%8.8.8.90- 90- 90- 9b)9b)9b)9b)9l9- 9X%:!:)_:6w:<¢:h:l:r=:- :2::):娊:K::娊:]::X%::w:- :- :- :w:w:- :- :::r=::!:{.:O:C d:6w:6w:6w:)_:Z99X%9¢99l9{.9b)9b)9b)9b)9b)9b)9b)9b)9{.9{.9l9l9l9l9l9l9l9l9l9l9l9l9l9l99- 9X%9X%9X%9:!::L:)_:0- :6w:6w:6w:C d:O:h:ucm:!:l:::r=::_::_:::::ܻ:G9:h:<¢:6w:)_:!9X%9- 9{.9b)90- 8.8.8.8X%8X%8X%8.8.990- 90- 9IX%9b)9b)9b)9b)9l9- 9X%:!:0- :6w:O:l:::);!; J;;ߍ; r=; r=;ߍ;ߍ;;$; J;G9;(:ӎ::::> ::]::X%:w:- :::!:h:C d:6w:6w:6w:)_: l9X%9X%9- 99l9{.9{.9b)9b)9b)9b)9{.9l9l99- 9- 9- 9¢9¢9¢9¢9¢9- 9- 9- 9- 9- 9¢9X%9X%9.::#:)_:6w:6w:6w:6w:6w:<¢:C d:U:ucm:!::ܻ:::w:X%:8h:娊:> ::> :娊:;G9:娊:2:::ucm:C d:6w:)_9.9X%99b)9b)90- 8.8.8.8.8X%8X%8.8.990- 90- 9b)9b)9b)9b)9b)9l9- 9X%:!:6w:<¢:x::X%:;Z; r=;(O;1;>US;D;O;L};D;>US;6w;.p;)_;%*N;#;"; r=;ߍ;ߍ;ߍ;ok; J;G9:> :]:Ϣ:w:::!:h:C d:6w:6w:0- :L:!9X%9X%9- 99l9l9{.9{.9{.9l9l99- 9¢9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%:!:L:)_:6w:6w:6w:6w:<¢:C d:IX%:U:ucm:!::::- :¢::娊;x; J;ok;ߍ; r=;"; r=;ߍ;Z;#;ܻ;!:8h:w:ܻ:x:<¢:6w:#99X%9l9b)9b)90- 8.8.8.8.8X%8X%8.8.90- 90- 9b)9b)9b)9b)9b)9{.9l9- 9X%: l:6w:C d::w:K;ܻ;%*N;9B;U;m;!;Ȣ;;J ;Z;Ȣ;A;(;ucm;g;:;];U;Q5;O;D;>US;6w;.p;#;ߍ;$;G9:娊::w:::!:O:<¢:6w:6w:)_:L9.9X%9X%9- 99l9l9l9l99- 9¢9X%9X%9X%9)9.:!: l: l:!:!:!9.9.:!::#:0- :6w:6w:<¢:IX%:\8h:ucm:x:!::Z::_:- :B::娊;x; J;'|;";-;8 ;C d;L};O;D;9B;.p;D;.p;ߍ; J:::L:ucm:<¢:6w:L9X%9¢9l9b)9b)90- 98.8.8.8.8X%8.8.90- 90- 9b)9b)9b)9b)9{.9l99X%9X%:L:6w:O::; J;#;<¢;d;;t;; ;ּ;;˴-;!}; d;J;;;;;t;c;;A;x;kK;U;>US;.p;";ok;G9:娊::- :r=:l:ucm:IX%:<¢:6w:6w:)_:99X%9X%9¢9- 9999- 9X%9X%9X%9.: l:L:#:)_:)_:)_:)_:)_:)_:)_:)_:)_:6w:6w:<¢:C d:h:!:::r=::w:X%::娊:> ;x;;$;,;#;.p;>US;TZ;g;:;3;A;Ȣ;Ȣ;;x;_];!;\8h;6w;";Z:> ::ܻ:h:6w:6w:L9X%9- 9l9b)9b)90- 90- 8.8.8.8.8X%8X%8.990- 9b)9b)9b)9b)9l99¢9X%: l:0- :6w:h::];ܻ;.p;TZ;!;; ;ڥ;,<u=<J <x<^$<ok<Z< c<;ӎ;d;q;ڥ;;z;);;t;l;p\;Q5;.p;";J ;!:]::_::!:U:<¢:6w:6w:0- :L:!9)9X%9X%9X%9¢9¢9¢9X%9X%9):!:L:)_:0- :6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:<¢:O:x::r=:- :B:Ϣ:8h:> ; J;ܻ;ߍ;";%*N;+u;.p;8 ;Gt;Y;p\;;8;ߍ;;A9;US;;R;W;;O;[R;g;:;<¢;#;Z::w::U:6w:6w:9X%9- 9{.9b)9b)90- 90- 98.8.8.8X%8.8.90- 9b)9b)9b)9{.9l9- 9X%9.:)_:6w:<¢:x:_:娊;;.p;`y;$;;<<z<:F;,;;US;W;J ;ucm;J;.p;ߍ; J:K::- :r=:l:ucm:O:<¢:6w:6w:)_:L: l9.9)9X%9X%9X%9X%9):!:L:)_:6w:6w:6w:6w:6w:<¢:<¢:<¢:<¢:C d:IX%:O:ucm:!:::¢::K;G9;$;ߍ;%*N;1;C d;U;_];h;ucm;X;Ȣ;8;;;B;;2;,<<<};@;`;il;C; ;;p\;>US;#; :):- :l:O:6w:0- : l9X%9- 9{.9b)9b)9b)90- 90- 8.8.8.8X%8X%8.90- 9b)9b)9b)9{.9l9¢9X%::0- :6w:C d:!::娊;;.p;d;8; ;<^$ ;@< E<x<)<6w<<<ʆ) :娊:]:::::R:::!:x:ucm:ucm:x:!::ܻ::- :w::Ϣ:::]:;!; J;; r=;+u;9B;Q5;h;0;8;W;[;<a$<<([<8 g;r=;c;x;];>US;+u;#;";";#;%*N;(O;-;.p;.p;1;1;1;6w;>US;Q5;g;:;!;t;_; d;);,< ><<0- =KO=G=?=2=#eH=4<<,<[< ;!};_;t;A;3;v;ucm;v;x;z~;}@;~ӎ;~ӎ;}@;}@;!;Ȣ;t;O; d;C<<D9<6wg<[R;u;;м<!<<5=`r=;{s=;I=c< d< ;\;<a$<Z<*G > >>=.=͋= =f:=T==kK=GG=(= %<`<g=:Mo=J:=]=tN==,=˦=|e=뎟>9j>> e> ]> >>">[k>!X>#3>"e>b>> A=g=8==#==Qg==tg=Z2=E+=ٶ=#>}>)>(<>6>> e>"8=\I===ܻ=xN=N =-SA=>>">,^>1>3ea>6>>a>K>SF>V>Uc:>Pʟ>GU>9X>(>?===z=e==m&=-ll<V>> ->'A >(h>#։>> >9j=)==5=?=R=- =<<¨<<\g<<"<<\=ڮ==`>x>R>$m>9Ϙ>N>[}>c>g`>l%>z>X>X>>U>>vq>aBE>F2>)> {==`=={I=4<g<=2V=xN===N> >>&Er>2C>:>=E>9>.N>> D=N=q=22=2=S =)= <<<< A< <+u<(=5=q<<;h<- <Ҙ<=<:C>>">7>P@3>jGp>h>y>> >>cO>3>,>(>a>~f>>8>>`b>< >c>ַ=*=m,=x =/G<< ;";_];W<X >>r>->;U>H\w>Qk>U0>R>Fܧ>3M>>=a=w==W=& =eu<<2< ;;;w< < t>!>5>N#>h >>>!>j><>W> >>ԹX>x>Ν> >>J>L>qu>H͸># 1>=Z7=*5>.<>D>W>e>m'>o>lX>c3V>OjE>3>== =b=^=%{<<|3<T>'>A>`y>~>a>|>>>{>>f>v>>h>X>!>յ>(>"w>>x\>K K>"*>=\=һ==8VR5> ><>X>q/~>>>e>>3>py>S ]>0_v> 3=5=m=n=*<< =%*N=<<<<<<8==-=O>:=xo=L==*=> m>$c>@>eV>>>Rt>p>ו>>?? u???4k? ?Ӓ>>e>4>>qu>@>=$=Mo=L2= L<<US;;;D>;|>Z!>v O>>>t>#>/>>sQ>}>Sr)>(>c===3X<>D>8>\D>o>Z>>ف>>?4??"v?+L)?/P?-L?$5??L>>%>0>e>]$>/g>=֑?==F>K>u$>J>"^>>2>u>ʒ>l>>[$>(>8>>M>=?,=b=K=!<US;>US;C d;Q5;];kK;!;J ;ߍ;);!};`<!<5<:F >+/>N#>u|>}>>k>_?NC??$?9B?Ev?H?E?=?.??>Ϊ>M>>n>=r>3="=w=[;<US;#; J:)::!:C d:6w:)_:!9X%9X%9- 9l9b)9b)9b)9b)90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 8.8.8.8.8.8X%8X%8X%8X%8.90- 9b)9b)9b)9l9- 9X%:)_:<¢:;;9B;8;2<2)<>K">> x>>ɿ>Z*>&>>2?>&>R>@>>{0W>;Oh>S=T=uo=<|3US;(O;";ߍ;ߍ;ߍ;#;&;.p;9B;L};_];x;Ȣ;^$;;US;ڥ;< E<<%<.5<0x<.<)!>9Kv>b>$>Z>9>%5?-?|?,;B?D(?Y?a״?_}??T3?D?.? %>{>RG>>{L>B1+>===d2=#;c;x;D;&;:ӎ:2:'|:o:<¢:6w:L99X%9X%9- 9l9{.9b)9b)9b)90- 90- 8.8.8.8.8.90- 90- 90- 90- 90- 90- 90- 90- 90- 8.8.8.8.8.8X%8X%8X%8X%8.90- 9b)9b)9{.99X%:L:6w:!:);(O;};׀W<;J2)>>>?$? =i? 4_? q? ۂ???XF?>a>}>>>bv> ===1z<< ;x; l; J;;ߍ;#;.p;9B;Q5;e;x;Ȣ;^$;W;;D ;!};;X%;z;1;;W;ߍ;t;c;A;~ӎ;h;];U;U;U;\8h;_];d;p\;{.;;8;O;F<[R=>G.r>u>>W>t.?1?.?3c?Jkk?_?o?uP?k؍?X3??ȍ?"/f?9> >>>I>S=.E==dz=i<"<G9;;ucm;.p;,;!:::!:C d:6w:)_: l9X%9X%9- 99l9{.9b)9b)9b)90- 98.8.8.8.8.8.8.8.990- 90- 90- 90- 98.8.8.8.8.8X%8X%8X%8.90- 9b)9b)9l9¢:!:6w:h:¢;ߍ;b);f<+ٻ<`=[R=k\I=LO>1@>R$>v>վv??/.M?<@?;?6l?3#P?1iM?25?4j?.:|?>1>>V'>8=|==G`<<0<O;^$;J;ߍ;!::w:- ::- :B:}::娊:ӎ; J;$;,;#;-;8 ;J;Y;h;x;;;;~ӎ;p\;_];Q5;C d;8 ;.p;+u;#;ߍ;,;ok;;,;ߍ; r=;#;%*N;.p;3R;C d;\8h;x;;I<1.>'>VL>ʎ> x>>/?5?6?QS?g??s?zn?xݿ?hL?N8?,ů? >Y>j>>Wc>>N= ==Z=R<<<`'!;;p\;+u; J:::l:IX%:6w:)_: l9X%9X%9- 99l9{.9b)9b)9b)90- 90- 8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8X%8X%8X%8.90- 9b)9b)99X%:0- :IX%:;G9;>US;5< -N)>hu>v<>? Az?IA?e?k ?b ?Y?T?LN?Aڧ?5?#.?$>hL>6>Op> ^==Y<@<c<;;;>US;Z:8h:::!:!:!:!::ܻ:::w:::]:; J;ܻ;ߍ;#;&;+u;.p;.p;.p;%*N;";,;$;::):::w:- :- :w::}::]:K;G9;$;ߍ;+u;>US;v;O;R%=z=!}>^k>0M>gH>mr>">a?'p?1iM?Q?m7?}?3?z+8?m?Vd?4?>x>>ާ>YX>>"V===K= ><: >a>>?'A ?R^?q;???t ?h5V?\?K?4)?~?@>ʃ>=>Ri>R=j=gm=2_<=<;_;C d; J:w::ucm:IX%:<¢:<¢:<¢:C d:O:h:ucm:!:!:::r=:_:w::]::ӎ;x;x:ӎ::]::B::'|::!:h:IX%:C d:<¢:<¢:IX%:\8h:ucm:!:l:ܻ::X%:娊; J;";C d;Ȣ;׀W<3R< >;{s>zU>R>)m?9?%a\?E?bc?z@??z?ik?T ?6w?>6>q>4>I> X=_==;<9<3<:;;ߍ;ߍ:娊::ucm:<¢:6w:9X%9- 99l9{.9b)9b)9b)9b)9b)9b)90- 8.8.8X%8X%8X%8.8.8.8.8.8.8.8.8X%8X%8X%8.90- 9b)99X%:6w:x:;J ;J;W<L<=4==N>>>*>]?f?L?ns?}?~?y!b?kx?Y ?CN?*? >4>>>;)>{=)=anP=(>GG>>>>?*?3?N?b?k?h ?ZV?E-?*? :>3> >q<>2C>i= D="=)4<9<~n<;!};[R;D:X%::C d:6w:)_99X%9l9{.9b)9b)9b)9b)9b)9b)9b)90- 90- 8.8.8X%8X%8X%8X%8X%8X%8X%8X%8X%8.9b)9{.9X%:L:C d::ӎ;(O;}@;ڥ~>dT>Ǩ>V?,a?W>F?n?qE?gL?[}8?I?0\Q?>L;>F>S>Z>W=ݾ=_D=:<.,>M`>j@>e> ?C?4?F11?M%?G?9t\?%ݡ?w>>>>WC>l=+='=[=R<̭>sG>I>Om?%K?E3?Sd?O"?@O?,6?2>r>9>J>ws>3k=8=G=G=S<*N<:;I;!;&:]:l:<¢:6w:)_:!99X%9X%9X%999.:!: l::L:L:#:)_:)_:)_:)_:)_:0- :0- :)_:)_:)_:L:!9)9X%9X%9¢99{.9b)9b)9b)9b)9b)9b)9l99X%9X%:!:)_:6w:<¢:ucm:;!;>US;<xo>J>>-->\I?? T?(o$?$ x??a>.>9>>s>7(>#=/=t="< d!>p1>0>x-?f? ?%p?O? >#>ū}>c>rP>;|>>=J=v= J<`<@L;q;^$;Q5;:w:U:6w:)_:!9X%9X%9¢9¢9¢9¢9X%9X%9X%9X%9X%9X%9X%99)9999999)9X%9X%9X%9X%9X%9- 99l9{.9b)9b)90- 8.8.8.90- 9b)9b)9b)9l9- 9X%9:)_:6w:C d::娊;.p;t< ><<=+e==&/>/>:S>|^[> >L>u>>8>>v>D>!>dNz>5u> {===98<<@>]F>1L>b>m>>J>>>B>m2>3ea>-=N=Fy=5c<5<^/;cm;^$;Q5; r=:娊:l:6w:9X%9X%9¢99l9l9l9l9l999- 9- 9¢9¢9X%9X%9X%9X%9X%9X%9X%9X%9¢9¢9- 9- 99l9l9{.9b)9b)9b)9b)90- 8.8.8X%8.8.990- 9b)9b)9l9- 9X%:!:0- :6w:!:;%*N;Ȣ; x>Pl>>gn>>~>o>%>V>~>P`>$l>=ˎm=k=E=a$<US;ok:::C d:6w:0- 9X%9- 9l9b)9b)90- 90- 8.8.8.8.8.8X%8X%8.9b)9{.9X%:L:6w:x:w;Z;C d;^$;@> א>:>s>>T>g>6>>[>.U:>w='==;> <x<}<O;@;;Ȏ;W;Ȣ;_];1;ok::Z:U:<¢:6w:6w:)_:!9X%9- 9l9b)9b)90- 98.8X%8.90- 9b)99:)_:<¢:!:- :> ;ߍ;>US;(;;\<ߍ ;;+u;D;b);}@;A;Ȣ;Ȣ;5;!;p\;Q5;1;"; J:8h:_:!:<¢:6w:6w:0- :L9.9X%9- 9l9b)9b)90- 8.8.8X%8X%8.9b)9l9X%:L:6w:U:L:; J;%*N;IX%;(;ߍ; d;;,;,;;¢;t;g;:;.p;'|::R:o:6w9.9X%9- 99l9l9{.9b)9b)9b)90- 8.8.8X%8X%8X%8.8.8.8.8X%8X%8X%8X%88X%8.90- 9b)9{.9- 9X%:L:6w:<¢:{.:ܻ:w:娊; J;ߍ;#;(O;+u;+u;%*N;#;ߍ;Z;!:8h:w:ܻ:!:IX%:6w:6w:6w:)_:99X%9¢9l9{.9b)9b)90- 8.8X%8X%8.9b)9{.9¢:!:6w:<¢:!:- :娊;Z;#;;/;_];X;[R;c;Ȣ;}@;U;.p;:娊:- :!:6w:9- 9{.9b)9b)9b)9b)9b)9b)9b)90- 90- 8.8.7X%8X%8.90- 9b)9b)99X%:!:0- :6w:C d:x::::8h::::K:]::R:::x:O:C d:6w:6w:6w:)_:L: l9)9X%9¢99{.9b)9b)90- 8.8X%8.90- 9b)99X%:L:6w:C d:l:R:娊; J;ߍ;%*N;.p;41;1;+u; r=; J:)::!:C d:6w99l9b)90- 8.990- 90- 90- 90- 8.8.8.8X%8X%8.99b)9b)9l9¢9X%:L:6w:6w:C d:h:!::r=::::ܻ::x:O:<¢:6w:6w:6w:6w:6w:)_:)_:L:!9X%9X%9¢99l9b)9b)9b)98.8IX%8X%8.9b)9b)9- 9X%:#:6w:IX%:G9:_:X%:娊;x;; J;!:娊::r=:ucm:<¢:6w:L9X%9l9b)8.8X%8X%8.8.8.8.8X%8X%8IX%8.8.90- 9b)9{.9- 9X%9.:L:6w:6w:<¢:C d:O:o:ucm:ucm:h:O:C d:6w:6w:6w:6w:)_:)_:)_:L:: l99X%9X%9¢9- 9l9{.9b)9b)90- 8.8.8.90- 9b)9{.9- 9X%:L:6w:<¢:o::::- ::r=::h:6w:6w:9X%9- 9b)9b)8.8IX%8X%8.90- 9b)9b)9l9¢9X%:!:L:)_:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:0- :)_:L:: l:!9.99X%9X%9X%9¢9- 9l9{.9b)9b)9b)90- 8.8X%8.90- 9b)9{.99X%:!:)_:6w:<¢:IX%:U:b):O:<¢:6w:6w:L9X%9¢9l9b)9b)8.8X%8X%8.99b)9b)9{.99¢9X%9::#:)_:0- :6w:6w:6w:0- :)_:)_:#:L: l:!99X%9X%9X%9X%9X%9X%9- 9- 9l9{.9b)9b)9b)90- 8.8.8.90- 9b)9b)9l9- 9X%:!:L:)_:6w:6w:)_:#:!9X%9¢9l9b)9b)90- 8.8X%8X%8.8.90- 9b)9b)9{.99¢9X%9X%9.: l::L:L:L::Z:!9.9)9X%9X%9X%9X%9X%9X%9¢9- 9- 99l9{.9b)9b)9b)9IX%90- 8.8X%8.8.90- 9b)9b)9{.99¢9X%9X%9X%9X%9¢99{.9b)9b)90- 8.8X%8X%8X%8.8.90- 9b)9b)9b)9l99¢9X%9X%9X%99)99)99X%9X%9X%9X%9X%9X%9¢9- 9- 9- 999l9l9{.9b)9b)9b)9b)90- 8.8.8.8.90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 8.8.8X%8X%8X%8.8.8.8.90- 9b)9b)9b)9l99- 9¢9X%9X%9X%9X%9X%9X%9X%9X%9¢9- 9- 9- 999l9l9l9l9{.9{.9b)9b)9b)9b)90- 8.8.8X%8X%8.8.8.8.8.8.8.8.8X%8X%8X%8X%8.8.8.8.8.90- 90- 9b)9b)9b)9{.9l99- 9- 9- 9¢9¢9- 9- 9- 999l9l9l9l9l9{.9{.9{.9b)9b)9b)9b)9b)90- 98.8X%8X%8X%8X%8X%8.8.8.8.8.8.90- 9IX%9b)9b)9b)9{.9{.9l9l9l9999l9l9l9l9{.9{.9{.9{.9b)9b)9b)9b)9b)9b)9b)9b)90- 98.8X%7X%8X%8X%8X%8.8.8.8.8.8.8.90- 90- 9IX%9b)9b)9b)9b)9b)9{.9{.9{.9{.9{.9{.9{.9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 90- 8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.990- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 90- 8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.90- 90- 90- 90- 9IX%9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 90- 90- 98.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 9IX%9b)9b)9b)9IX%9IX%9IX%9IX%9IX%90- 90- 90- 90- 90- 90- 98.8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 998.8.8.8.8.8.8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8.8.8X%8X%88X%8X%8.8.8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8X%8.8.8.8.8.8.8.8.9990- 90- 90- 90- 90- 90- 90- 90- 998.8.8.8.8.8.8.8X%8X%8IX%8X%8X%8X%8.8.8.8.8.8.8.9990- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.9990- 90- 90- 90- 90- 90- 90- 998.8.8.8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8.8X%8X%8X%8X%8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8X%8X%8IX%8X%8X%8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8X%7X%8X%8X%8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8X%8X%8X%8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.8.990- 90- 90- 90- 90- 998.8.8.8.8.8.8X%8X%7X%8X%8X%8.8.8.8.8.8.8.8.9990- 90- 998.8.8.8.8.8.8.8X%7X%8X%8X%8.8.8.8.8.8.8.8.8.998.8.8.8.8.8.8.8.8.8X%88X%8X%8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8X%8X%7X%8X%8X%8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.8.8.8X%8X%8X%7X%8X%8X%8X%8X%8.8.8.8X%8X%8X%8IX%8IX%88IX%8X%8X%8X%8X%8X%8X%7X%8IX%88IX%7X%7X%7X%88IX%8IX%7X%king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama5200/prepro.ndft0000644000000000000000000037521411744305674025600 0ustar rootrootTop5200 pre-Proline (not Gly or Pro) B<3044C4C4;[w?;/:Dp::|:6v9ү9D08`8`8`9 uG9uG9ү:oj::D0:g:X::::d:Ĥ0:':˪ :ү:ٵ:Dp:JN:P+::::<:_:໥:ٵ:ү:,:,:,:ү:ٵ:Dp:<;6;g;*N3;-!;1T;8Y;H';Tqb;`;rJN;0;;g;C;_;/;;+ ;<?<6<<,<><><=====jJ===K =>U>#%8>&> J>==K=q=/>R<<<t>$L/>N)#>Ri>B]I>% >!}=j==H'= <<<-<,<ܐ)<<`A>*>*ڨ>C>mQ>>1>u>?">T=׮= =Xh=z> >m>0>D%>l][>%>q>.>S>N>{S=s=s=_=*<93 l>>&J>6uX>E7>_K>>o>~Z> >]>P~>="=֠=[['=<ͣ<<><;;t ;1T:໥::n_:{$99 uG88`8`8`8`8໥8໥8໥8໥8໥9 uG9 uG9 uG9 uG9 uG8໥8໥8໥8໥8໥8`8`8`8`8`8`8`88໥8໥8໥8໥9D09uG9ү9:!:Y:u<::˪ ;By;R;;;</=x=<~=Ӟ=T> ><>)mw>7>Fe>\&>s>ll>>>>SR>Cр>===N= <(<{<0sT;<;!;kDp;,:ү: :n_:{$99 uG88`8`8`88໥8໥8໥8໥8໥9 uG9 uG9 uG8໥8໥8໥8໥8໥8໥8`8`8`8`8`8`8`8໥8໥8໥8໥8໥9D09D09uG9ү:oj:6v:g:X::Dp;/;kDp;g;/<0<0sT>>$hF>4>CZ>X>~>Z2>0>Wc>k>>m7>53> T=ȉq==@=C==C=_=&==V=8==yܠ=gQ$=Y=L'=A=2="=җ=<*< <'<{== Cr=b=b:=[===!%=+L==f$=Xh=y=t==Aa=> 7>H>,>=>Rp>|>?>vR>i">9>,n>=>c:>+<>9=n=c3=14=5>K> qn>V==ږ==g=(=Č=jh=q=x7@=e=M=:=+g=#=!=#='W=-|=4Z=9=?=F-x=M=[˅=iJ=zL=-=A = =bz= >)>>0&>Ev>p&>>>>{!?v>+9>>P>O>?{>$==x=$)<>> _>$>fB> >+=Z={e=5===(==#=s=^m=K=?{=;7=<1"=B=I=N=V=]=dZ=ns=zi====f==,=->>&g>@>`=;>>/>>Cw? ?X?b?y3>>/>Y>=Ǩ=b=(=6>> >8\>FB>HQB>@G>.d>a>P%=4=@h=u=n=j=hu=8=n=m=n_=b(=[V=]T=d"|=lyr=s=x=~xy=C=|===1===Ǩ=7^=> &>}>:>[>>m>>?"? ?)M?'Y{? ?'>j>!>!<=K=e=2l<< >2->Z>>&>w>O>h&>Ds>->D>BI> &>G=L"=D=Q=====~=~=Z=5f=5=1===}=-=7|=Ǩ=2=~t=^> &>v">2&>RT>?>o>o>Ɋ? Z?y?.?4?2?(J?x>:d>>2-=5 ==@W D>?Q> >5>ɛU>Ӟ>ҡ>>">f>>l~>I>77>$>i>= =̘=======D==ް=f$=œ~=ȗ|=ϫe=1=a=i>Ώ>;> J>,T>E>И>8>m>?f?R?-?7?<=l?:,?0?>}%>c>?t==c=M=SR<R>>?>>̘>us?/?}O?? ?>>٤9>>D>0>]=>;>!>>G= =+'=a=}===Ǩ=i=T=s=9==P+>c>R>>>" >0ܬ>A>b=>>>&>?B?@?8AY?%q?>B[>L>ʶ==^5= ^<Х*>(>Xw?)?,?-j?5?6x?1и?)ы??a?Q>>Bc>>if>Ok>5>"u>~>==k====>> > >u>ll>2i>>$L/>->8>EO>]T>j>k>/> ?=??-?;6?D)I?Ge?E?=K?-O5? ܇>?>aI>H==k=b:<r>O܎>?X?F?4?B6?K?M?J?C~?;6?3h ?)0?4? h>=>m>> >R%>=C>)>(6> >vp>ܛ> j>_><> >">$>&b>,$>2I>9O>Au>M 2>d>T>S>>J>n???2?@ ?H?KB?H!??\G?/?[>e>}>KS=Œ=w= >m>0? ]r?(?<+?Kua?Sy?V?U|@?Q*%?Jh?A?8[?-*V?? >>>Ϯ>{>z>6>No>7U>&V>m> >&>->3~>77>9>:a>;>?>DH>I>>Q@>dp>a>> {>=>>? ??4O?AE?I?K+?HD?>?-? ˥>#>>=u =~=#4 M>Vq>???4?Cv4?O/?TJ?T?R=?M8?E?<ҩ?3O?&?Id:>IC>>@>>[ҋ>G~>AD_>A|>D>Fe>HXH>I>HfS>H>IG>M>S>Y>d>`=;>wk>>>>Ą>J>(??c(?0#??J?H?J?F?:?(&?>@>q#W>RY=ɾs=J=<_.k>:>`?t?h?+K?9L7?C[?Hh?HM?D{?>l?7?0?&?_??Z>>H>1x>>>~GP>q>q>t>m>bz>[i3>T>S>V}>[K>`|p>d>jq>y}>h>n>>ĝ>ε>R>N??):?80?BM?E?@ ?4?>J>>QP>=={=#4<0>j9>$>нJ>? ?S?+)?0.?0b?.7?)}D?" N?ù??? d?7N>>ˬ>l~>e>*>p>U>&>&> >oo>^>\v>c>k|>qF>p>m>o">}B>;>/>T>1x>Ϲq>z?Hs??-6?7E?;?6?) 7? >1>,e><>=w=oo=[<zE>/hu>P>\>|>я>?1? G? 1? $?? X?5??")?->>)>ү> >>>T>>>P>>t` >mo>vk>} Z>}>x>jc>_>`!$>p>3>|> y>Z>нJ>g? ?I?(q?-+?(?>^>_t>{R>%3=똷==Z=-< >$>H.%>">+<>w>K>ˍ>[>ل>㧕>&>>1> >V>D>@>g>Π>U>>>>>(>7>e7>>y>{>hj>W9>Q >S.T>`|p>>O>9w>:>ؼw>>>I>ٝ=R==C< <hd>P>4.r>Hw>jG>I>>>'>`>??=?΢>>>/_>Ƅ>ת>ˊs>|>>%8>%>>;>Kz>>n >UЇ>K>K9>T>r *>>!>h>ϒ>>?f?n?n>}>>>6v>l==&==.] >!q>>i>ps>S[>n>B=>Gw?rA?R?Y?l?T?"=>x>~>ۨh>Ќ!>ļ>Nb>>FQ>n>t>r>Ya>No>M>UX>ps>C>:>j$>>ސ> >>^>>e+>m!>m>>)===sg= m<9y> Q>HȦ>Y> f>,)>n?T? A??G?X? Y?/>>>p>Ӕ)> >u>>wr>sm>\d>S>SJk>\/>v>.`>>E>ŋ>ڄ>K>>(>g>Ť>y>\W>#y=={=iW=>:o>o>9>Ѻ> ?Q?X]?C?>J?2?? ??=>>ѽ>v>Z>w>u>_>X>X/>aԏ>x>V>|>~Z>>%>r>>>>>"2>W'>!<=L= %=hM=9n<<_<6;!B;;I;By:ү:::g:6v:oj9Ĥ09`8໥88`8`8`8`8`8`8`8`8໥8໥9D09uG9Ĥ09:{$:=S:R:g:n_:|:::: :::::: : :::::::::::5:X:{:u<:u<:n_:g:`:K :D0:6v:!:{$:{$:{$:{$::6v:D0:Y:n_:X:::,:JN;g;1T;Mk;g;{;;;;;sT; ; ;+ <{$<7y1>.%h>k>E>Н>R???!?y???^? G?L`>|>>_>/>}>h>^>^r>fTQ>wP>v>>>9>>ߢ>螻>>+'>>>UY#>"K===jG=;';z;Mk;By:ү:::n_:=S:oj9ү9|8໥8໥8`8`8`8`8`8`8`8`8໥8໥9D09|99_:{$:=S:Y:n_:u<::::::::d:d::::::: ::::::::5:X:|:u<:n_:g:g:Y:D0:=S:(:{$:{$: uG:oj:oj: uG:{$:{$:(:D0:`:n_:5: ::':8;oj;(;1T;B;Mk;Y;[w?;g;kDp;t ;;; <oj<0%<>_>;>ϴ?j?? ?"?0*????'>(Y>`P>k> >>w >fҺ>ak7>e>tL>=>$>E>J>&>>ځr>n>fS>>7>Q/>"== =jc=q&7>vw>>wH? y ??}k? W!??k0?E? ~>>ݐ>h> >>yG>ps>d>dZ>qQ>+>Q>>.B>H>^>]>&>9>#>>OB>"=F=X=j=*<-x52K>%>?7??Nm?!?#?"?? l> D>L>u2>u><>>w]>gC>c:>j0>=>>>K>/>>>>>>u>'Z>NaR>#ry=>=E=ns=2<3V<|<+.;i;);b};-!:Dp:::u<:R:{$9ү9uG9 uG8໥8`8`8`8`8`8`8`8໥8໥8໥9 uG9D09uG9Ĥ09::R:n_:: ::S:ү:໥:P+;6;;!;(;(;% ;By;5;oj:JN:8:ү:':v::: ::::X:|:u<:n_:g:`:D0:=S:!:{$: uG99_9ү9ү9Ĥ099uG9uG9uG9uG9uG9uG9uG9Ĥ09ү:oj:{$:!:D0:Y:g:u<:X::::::::ү;*N3;p;<? x>K6>٦>??||?#?( ?'*??$>>~>Ŗz>>>>z[ >i >f >j>y&>&>>5>yX>>Û>>b>>>Q>&=1==w>=#<֣7<*<5;;C;rJN;1T:_:v::u<:Y:{$9ү9uG9 uG8໥8`8`8`8`8`8`8໥8໥8໥9 uG9D09|99_:{$:D0:n_:5: ::':ٵ:JN;5;#HV;*N3;-!;1T;3;1T;1T;-!;*N3;!;5:P+:໥:ү:Ĥ0::::::{$:X:u<:n_:g:`:K :=S:(:{$: uG99_9ү9Ĥ099uG9uG9|9`9D09D09D09 uG9 uG9D09D09|9uG9Ĥ09ү9: uG::=S:R:g:n_:u<:u<:{:::˪ ;,;w;S< =A=ۡb>">>,>1-[>(w> >.>>}>oa>i5>j0>sU,>>]>B>>7>W>:S>>>a>[>,l>=[E= =. <`<Ņ>A>>]? ?=?)#?*?"i?.?>>5>A>М>=>q?>s>m>j>p->P>HM>Q0>J>y>#>8>>>E>qb>66$> .`=@==:<o>`;>??;0?#?'?#?g???3>@>`P>X>M>3>y>sc8>qi>v>R>>>/t> >.%>>c>>$> >B >==_ =I~=x<;>V>M> >>Q>>N>29>u>>Ũ >b>Ӑ>Po>{e>X>>&>UK>#y=>=c=^=<  >w >ħ>w>>X>6>e>>f>>>٦>(>#>C>U>>ӆ>ɷm> ,>n>~2>>6D/>=]=t` = i<^<\;>dm>A? "??"?(?+"?&Wc?M?>m>5>R>>@>>X6>>ˑy>n>>` >B>暌>p9>̣]>>F">G>W=#==0Ǜ,>J>K>?ը??"i?+δ?/?-?"?>4i>>O> >b>>>>>G>&?sV?$A??7>H>|><>L>a>}=/===ւF>9>p?~?$.V?/d?4?4oh?-ƙ?? >i>>6>>>V>>c>01?t? ?`??E?>e>7>(>)>,j=ώ==G=ӑ<<^-<;e;0;1T:,::`:{$9ү9uG9 uG8໥8`8`8`8`8`8໥8໥9 uG9D09uG99ү:oj:6v:g:uG::,;6;4;[w?;;g;;;8;;+ ;+ ;i;Dp;W;ń;;);;~;`;I;1T;:Dp:˪ :: ::u<:g:D0::oj9_9Ĥ09uG9|9D09 uG8໥8໥88`8`8`8`8`8໥9D09uG9ү:oj:=S:u<::_;K ;<0$>C>g??&T?4?;(?< ?6p?+y??Ҿ>> >ϫe>>؆>̱i>J>V? aK??%I?(?"?Y_? >`>Hg>+>;7="=w{=L=V<7<^r<;e;P%;1T:,::`: uG9ү9|8໥88`8`8`8`8`8໥8໥9 uG9D09uG99ү: uG:=S:n_:::Dp;,;Y;;;_;-;<?<<<<W< < ;;s;;g;z;n_;Ps;1T;g:_:˪ :: :5:n_:Y:=S:{$99ү9uG9|9D09 uG8໥8໥8`8`8`8`8`8໥9D09uG9Ĥ09:=S:u<:;X;kDp;Ĥ0<&Z<W==#>->h>? :?'@?7u?@h?C6?>?5 ?'^?WG? >Y5>K >ߘ1>'>\>I? ?%_?+h?4_?7$?3!?*?]? >o>\>K>ð=0=P-=<`<*>X??!}?%S?9?F~[?3C?'iH?9?l??4w?΢? ??!?-?9k?A?DEa???7??-J?D?>L>o[>Q=!=VN=PfB>R>Ͻ?!?ّ>>==Y ;=J<#4<3;;g;Y;5::u<:/9ү9uG9D08໥8`8`8`8`8`8`8໥8໥9D09`9uG9ү:{$:Y::';(;n_;sT;<<̺<;>}> ???O?S u?Z?[p?VB?NJ?D6?;?5x?0?/>R?2&?9y?@*?H?O'?U~?Y ?Yŕ?W]R?Rkq?JX?:z?U>)>*a>0=-=Q/<<̺<;e;V;B:Dp::g:{$9Ĥ09`9 uG8໥8`8`8`8`8`8໥8໥9 uG9D09uG9ү:{$:g:;oj;[w?;C< <1n<<Md>Г'?$J?BW?W?a?dI?`G?Yh?Q?J?D.?A?Au?F?MZ?SCf?X!?\?aTd?cY?dX?a?\R?Ta?D\4?'U>﫞>>[==@$n<3C>?'?Ac?Yw?fe?k6?i@A?b?[|?U9?Q?O?P ?Tz)?YӠ?_sS?d)?h?ma4?p#?pj?k4?c?X?D?!>݂t>oZ>=1= #<{> N> ===t=\p=**>? } ?:?VT?e?nŞ?p ?jI_?c??]ϴ?Z?Z?[Yf?]?b9?i\Y?r?w?ym?x?wT?o4:?cY?S?9? p>>8"=׮=o7>j0>=>V>Uo>!6= =S=S= `<K>y> o?.?OQ?`&h?k$?s'?p2?j&A?e?c?c77?dZ?f?kQ?w>?{4?|,N?{b?y?rk?f?Y?CZ?V>;7>rȷ> &=q=+<-y>2>t>>M>_> >>A>*jJ=;=I=?==<<\Ji>B ??C#?YcC?f?rQ?u;?p?l?k0?kҧ?m?p#?vB?{H?}1?}?{n?s?d?X??D ?"4>;>>==[<1p'>f>^??,l?8 ?5@V? 4>K >=>M=S==. <+;>=P?V?5d?Q?bz?px?w?ve?sU?qF?t>\>O="=q= ~<<';;;P%:::X:=S99uG9D09 uG8໥8໥8`8`8`8`8`8໥8໥9D09ү:=S:;i;i<[ f>x >ӥ?|?9x?QG?Z?XE?Ht_?">+>^>4==kDp=<4<\ >>?&?HJ?]53?l4?wF?wk?t?rD?t)?u`a?tN}?s?u)?sU,?kN?`ж?S1?޳>")>=C=oJ=<<8K;W;;D0::uG:D099uG9`9D08໥8໥8`8`8`8`8`8`8໥8໥9D09ү:=S:;[w?; >B>J'?.V?Q?e?v{?t^J?_E?Bx?`>}>4='===j`>T>ɞ??;6?V?eBl?oZ?q[?m?jg?jL?j *?g_?cq(?_5?Z?R?E?0?{7>z>yǎ>==d"|= +,>>?,\?7n?Y?w!?~?~^?u?V}?, >>lԿ> ɍ=w=Z<=<6>m>T?,u?J?Z?b%S?cX?ab?^T?^?\?X}C?Q9?Eu?7?)(?G>%>۪>J>K=5H=R<\b nA>>?5Nb?[KZ?z???|?^Ł?85>%>!>uv==`<\b> >+'?n.?4%?H_N?P?Q]?N>?L%?K|g?Gg?>O?0?(?`>H>>af> =ޥ=h=9V<<<3;Dp;a;O,; ::X:oj9ү9uG9D09 uG8໥8໥88`8`8`8`8`8໥9D09ү:=S:;g;<<=Qz>ڡ ?,wA?W-?xӃ?q?k?|v ?^]?7>h>>k=L=J <-<|b<";W;;K :JN::|:D0:oj99D08໥8`8`8`8໥9D09uG:oj:g: :ٵ;1T;0;ү<,<=b=]T=>z>Fg>o>??&?/?/}?,%?* {?'P??>>>ξ>Cc>ɽ=s==iJ=<ւ0B+>?j.?NhX?k;?}?}N?ne?R=?$>>>F=ݙ=V=<>X%y>R2>˃m>?>۞>Y[>E>m;>>Ԧ>T?>QW>E!>wK=$==l%,=(T<>?IJ?=[?[?h?f?U?2͋>>r> p==?C<&%,>; ,>]i>C>2>>> >p>S>:a>O,=~t=N=j=$E)<(<l>}X>?%?B:?L?D?+>H>>ٝ=8u=Cð> >>p>S>(> +3>ð=x=ї=b=z=3+<'<B>>jm??1?>>kR|>\==0< <+<-!;];;O,;:S::`:{$9ү9|8໥8`8`8`8໥9D09v:{$:u<:; ;I;X;d<P%S>e>>>/>%>5+E= =r=<b=?=A=F=Hϫ=FI=8K= i=uuv>5+E>=A>+d>=d=c%<=<5<;;;m;X::D099uG9D08໥8`8`8`8`8໥9`9ү:!:u<::8;(;I;kDp;;F;D;;;;;;;F;;;oj;kDp;Ps;/::d::Y: uG9ү9uG9uG9|9D09D09D08໥8໥8໥88`8`8`8`8໥9uG9:D0:{::8;(;O,;7;g;S;/;W; ;;<;R:JN::{$9uG8໥8`8໥9D09uG:oj:R::v:JN;*N3;H';[w?;t ;0;uG;6;;oj;t ;i;[w?;Ps;D0;3;(;:ү::X:K : uG9ү9uG9|9D09D08໥8໥8໥8໥8໥8`8`8`8`8`8໥9D09Ĥ0:{$:`:::ٵ;;3;V2;m;{;|;n_;Ps;*N3:ү::!9uG8`8`88໥9|9ү:{$:g::S:_;&D;3;I;V2;Y;Y;V2;K ;A!B;1T;(;::8:˪ :::n_:D0: uG9ү9uG9D09 uG8໥8໥8໥8`8`8`8`8`8`8`8`9 uG9uG9_:!:g:{$::Ĥ0:8;;g;(;(;6:ٵ::{:=S9ү8໥8`8`8໥9D09uG9ү:(:n_:::ٵ;{;g;*N3;-!;-!;*N3;!;6:JN:ٵ:'::::u<:`:(:oj9ү9uG9D08໥8໥8`8`8`8`8`8`8`8໥9D099:(:`:u<:::::::::g:!9ү9D08`8`8`8໥9D09uG9_:!:g:{$::d:,:8:Dp:Dp:8:ү:'::::5:u<:g:=S:{$99Ĥ09|9 uG8໥8`8`8`8`8`8໥9|9Ĥ09:{$:D0:g:n_:u<:u<:u<:n_:`:=S:oj9Ĥ09D08`8`8`8໥8໥9D09uG9ү:{$:D0:n_:5::::::::5:u<:g:Y:=S::oj9ү9uG9`8໥8໥8`8`8`8໥9D09uG9Ĥ09_:oj:{$:6v:=S:=S:6v:: uG9໥9uG9D08໥8`8`8`8໥8໥9D09|9v9:{$:=S:Y:g:n_:n_:n_:g:`:K :=S:!:{$:oj9ү9Ĥ09uG9D08໥8`8`8`8໥9D09|99ү9_9:oj:oj99ү9Ĥ09uG9D08໥8`8`8`8`8`8`8`8໥8໥9 uG9D09uG99ү9: uG:{$:{$:{$: uG:oj99_9ү9ү9uG9uG9D08໥8໥8`8`8`8໥9 uG9D09uG9uG99v99uG9uG9D08໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥9D09D09|9uG9uG9uG9uG9uG9uG9uG9uG9|9D09D08໥8໥8`8`8`88໥8໥9D09D09D09D09D08໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥8໥8໥9 uG9 uG8໥8໥8໥8໥8໥8`8`8`8`8`8໥8໥8໥8໥8໥8`8`8`8`8`8`8`8`8໥8໥8໥8໥88`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`88໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`8`8`8໥8໥8໥8໥9 uG9D09D09D09D09D09D09 uG8໥8໥8໥8໥8`8`8`8`8`8໥8໥8໥8໥9D09D09D09D09D09D09D09D09D09D09D09 uG8໥8໥8໥8`8`8`8`8`8໥8໥8໥9D09D09D09|9uG9uG9uG9uG9uG9uG9|9D09D09D09 uG8໥8໥8`8`8`8`8`8໥8໥9 uG9D09D09uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9`9D09D08໥8໥8໥8`8`8`8`8໥8໥9 uG9D09|9uG9uG9v9Ĥ09ү9ү9ү9Ĥ09v99uG9uG9uG9`9D09 uG8໥8໥8`8`8`8`8໥9 uG9D09uG9uG9Ĥ09ү9ү9ү9_9ү9ү9ү9ү9ү99uG9uG9|9D09D08໥8໥8`8`8`8`8`8໥9 uG9D09uG99ү9_99:oj:oj:oj999໥9ү9ү99uG9uG9`9D09 uG8໥8໥8`8`8`8໥8໥9D09uG9Ĥ09ү9:oj: uG:{$:{$:{$:{$: uG:oj99_9ү9Ĥ09uG9uG9|9D09 uG8໥8໥8`8`8`8`8໥9D09uG9ү9_:oj:{$:(:6v:=S:=S:=S:/::{$: uG99໥9ү99uG9|9D09D08໥8໥8`8`8`8໥9D09uG9ү:oj:{$:=S:D0:Y:`:g:`:Y:K :D0:6v:{$:oj99ү9Ĥ09uG9uG9D09D08໥8໥8`8`8`8໥9D09uG9_:{$:=S:Y:g:u<:u<:|:|:u<:n_:g:g:K :6v:{$:oj9_9ү9uG9uG9D09D08໥8໥8`8`8`8໥9D09uG9:!:Y:n_:X::: : : :::X:u<:g:R:6v:{$99ү9uG9uG9D09 uG8໥8໥8`8`8`8`9D09uG:oj:D0:n_::::d:':':':S:::::X:n_:R:(:oj9ү99uG9D09 uG8໥8໥8`8`8`8`9D09: uG:Y:X::d:ٵ:_;X;5;5; :<:Dp:ү:!B:: :{$:n_:D0:{$99Ĥ09uG9D08໥8໥8`8`8`8`9 uG9:{$:g:::2;;(;1T;A!B;D0;D0;8Y;1T;(;6:Dp:,:::5:g:=S:oj9ү9uG9D08໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8໥9uG: uG:g:::Dp;(;8Y;Y;kDp;t ;{;t ;m;[w?;I;1T;!:P+:ү:: :|:R:{$9_9uG9D08໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥9uG:oj:Y::d:;1T;Y;+;;#;D;;g;F;V;t ;Y;6v;(:P+:ү:::n_:6v999D08໥8໥8`8`8`8`8`8`88໥8໥8໥8໥88`8`8`8`8`8`8໥9D09_:D0:{$:d; ;B;t ;a;;e;w?;-;W; ;_;f;;{;Y;4;g:Dp:Ĥ0::|:K :oj9Ĥ09`8໥8໥8`8`8`8`8`8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`9 uG9v:!:u<:;{;H';P%;f;qb;<< <W<<* <0;+ ;R;;;t ;Mk;-!; :2:::g:{$9ү9|8໥8໥8`8`8`8`88໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`8໥9|:oj:g::Dp;8Y;P%;;i<<4f;8Y;g:Dp:d::n_:!9ү9|8໥88`8`8`8`8໥8໥8໥8໥8໥8໥9 uG9 uG9 uG8໥8໥8໥8໥8໥8໥8`8`8`8`9D09ү:=S::';,;t ;<+<<`;໥;;X;Y;-!::˪ ::|:D099uG9 uG8`8`8`8`88໥8໥8໥9 uG9D09D09D09D09D09D09D09D09D08໥8໥8໥8໥8`8`8`8`8໥9D09_:`::_;Mk;g;l<* <樗=)=e==I==eW~=.A<u>l==== C=:7| >> 4>S=(==P)=d<<[w?<#4;;);p;6v;oj:Ĥ0::|:Y:9_9uG9 uG8໥8`8`8`8`8`8໥8໥8໥8໥9D09D09D09`9|9uG9uG9uG9uG9uG9uG9|9D09D09D09 uG8໥8໥88`8`8`9D09:g:;5;kDp;_<>>3?>3M>=!=2=]Z=n<<]<;c;;t ;8Y;X:Ĥ0: :u<:Y:9_9uG9D08໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥9 uG9D09D09D09`9|9uG9uG9uG9uG9uG9uG9|9`9D09D09 uG8໥8໥8໥8`8`8໥9uG:{$:u<:S;-!;;W<*N3<|\-> t>6!>4{>By===]='<=x7@=~3=>>%>#->"==E=M=y< > M=J==&=7y1<][<<<_<< ;uL;O;;;h;kDp;Mk;1T;g:JN:,:: :X:g:K :(:{$:oj9_9ү9ү9Ĥ099uG9uG9uG9uG9uG9uG9uG9uG9uG9Ĥ09ү:oj::D0:g:|:::d:,:8:_:;X;X;:<:Dp:ү:S:::u<:R:(999`9D09 uG8໥8໥8໥8໥9 uG9 uG9 uG9 uG9 uG9 uG9 uG8໥8໥8໥8໥8໥8໥88`8`8`8`8`8໥9uG:oj:D0:u<: :Ĥ0:P+;-!;R;{;F;;_;/;W;-;W;s;_;;a;;kDp;O,;4;(; uG:Dp:':::X:g:K :/:{$:oj99ү9ү9ү9Ĥ099uG9uG9uG9uG9uG9uG99Ĥ09ү9:{$:=S:Y:n_::::':ٵ:_;;5;;;; :<:8:˪ :: :X:g:=S:oj9Ĥ09|9D09 uG8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`8໥9D09ү:{$:R:u<: :d:Dp;By;4;Y;t ;;;By;g;#;a;;X;rJN;[w?;I;3;*N3;{$:JN:ٵ:S:::|:g:D0:(:{$:oj99ү9ү9ү9Ĥ09v999uG9uG999Ĥ09ү9_:oj:{$:D0:g:u<::::,:໥:;5;By;!;!;;5;{:Dp:ү:v:::g:=S:oj9Ĥ09|9D08໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`8`8໥9uG9_::R:u<:::':Dp;;-!;B;R;[w?;g;g;g;[w?;V2;I;8Y;/;(;{$::8:˪ ::::u<:g:D0:!:{$:oj99ү9ү9ү9Ĥ09v999999Ĥ09ү9ү9: uG:!:D0:g:|:::d:ү:Dp;+;5;g;% ;&D;!;{$;oj:Dp:ү:d:::g:6v999D09 uG8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥88`8`8`8`8`8`8`9 uG9uG9_:{$:D0:n_:X: ::!B:ٵ:P+;;(;-!;1T;1T;1T;-!;*N3;(;; :JN:8:,:d:::uG:n_:`:=S:: uG99_9ү9ү9ү9Ĥ09v9v9999v9Ĥ09ү9ү9: uG:(:K :g:|:::d:,:Dp:;5;By;!;!;By;5;+:Dp:,:::5:g:!9_9uG9D08໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥88`8`8`8`8`8`8`8`8`9 uG9uG9ү: uG:6v:Y:n_:X::::Ĥ0:ү:໥:JN:;{;;+:P+:_:Dp:ٵ:˪ :d:: ::u<:g:K :6v:{$:oj99໥9ү9ү9ү9Ĥ09v9999v9Ĥ09ү9ү9ү9: uG:(:D0:g:u<::::˪ :8:JN;X;5;;;;X:JN:8:':: :oj:`:{$9ү9uG9D08໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥88`8`8`8`8`8`8`8`8`8`8`8`8໥9|9Ĥ09:{$:6v:K :g:u<:uG::::d:':,:ү:ү:ү:,:˪ :!B:::::X:n_:`:=S:: uG99_9ү9ү9ү9Ĥ09999999v9Ĥ09ү9ү9: uG::D0:g:u<:: ::Ĥ0:ү:໥:JN;{;X;X;{:JN:໥:ү:d:::u<:D0999D08໥8໥8໥8໥88`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥9D09uG9ү9:{$:!:D0:`:n_:|::::::::::::::oj:n_:g:D0:!:{$99_9ү9ү9Ĥ09v99uG9uG9uG9uG9uG999Ĥ09ү9ү9:oj:{$:=S:Y:n_:{::::':ү:8:Dp:_:_:Dp:8:ү:!B:: :X:g:6v9ү9uG9 uG8໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥9D09uG99ү9: uG:!:D0:`:n_:|:{$::: :: : :::uG:u<:n_:`:D0:(:{$99_9ү9ү9v99uG9uG9uG9uG9uG9uG9uG9uG9uG99Ĥ09ү9_9:{$:(:D0:g:n_:X::::S:˪ :ү:2:ү:,:':d:: :{$:n_:D0: uG9uG9D08໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥9 uG9D09uG9Ĥ09ү9:{$:(:D0:`:n_:u<:|:X:X:uG:X:|:u<:n_:g:R:=S:!: uG99ү9ү9v9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG99ү9ү9_:oj:{$:6v:K :g:u<:X:::::v:d:d:::::5:n_:K :{$9_9D08໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥9D09|9uG9Ĥ09ү9:{$:(:=S:R:`:g:g:g:g:g:`:R:D0:(:{$:oj9_9ү9Ĥ09uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG99ү9ү9:oj:{$:6v:K :g:n_:|::: :::::::|:g:D0:{$9_9uG8໥8໥8`8`8`8`8`8`88໥9 uG9D09|9uG9v9ү9:oj:{$:!:6v:=S:=S:=S:=S:6v::{$:oj99ү9Ĥ09uG9uG9uG9|9`9D09D09D09D09`9D09D09D09`9`9|9|9uG9uG99ү9ү9:oj:{$:(:D0:Y:g:n_:u<:X:5::5:X:u<:n_:Y:=S:{$9_9uG9D08໥8`8`8`8`8໥8໥9 uG9D09`9uG9uG9Ĥ09ү9_9:oj:oj:oj:oj:oj99_9ү9Ĥ09uG9uG9|9D09D09D09D09D09D09D09D09D09D09D09D09D09D09D09D09`9uG9uG9uG9Ĥ09ү9_:oj: uG::6v:=S:K :Y:g:g:g:g:`:K :=S:{$:oj9ү9uG9D08໥8`8`8`8`8໥8໥8໥9D09D09`9uG9uG99Ĥ09ү9ү9ү9Ĥ099uG9uG9|9D09D09D09 uG9 uG8໥8໥9 uG9 uG9 uG9 uG9 uG9 uG9 uG9 uG9 uG9 uG9D09D09D09D09|9uG9uG99ү9ү9:oj: uG:{$:{$:!:(:6v:/:!:{$: uG99ү99|9D08໥88`8`8`8໥8໥8໥8໥9D09D09D09|9|9uG9|9|9`9D09D09D09 uG8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥9 uG9D09D09D09|9uG9uG9v9ү9ү9_999:oj999_9ү9ү9uG9uG9D08໥8໥8`8`8`8`8`8໥8໥8໥8໥8໥8໥9 uG9 uG9 uG9 uG8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥9 uG9D09D09|9uG9uG99Ĥ09ү9ү9ү9ү9ү9v99uG9uG9D09D08໥8໥8`8`8`8`8`8`88໥8໥8໥8໥8໥8໥8໥8໥88`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥9 uG9D09D09|9uG9uG9uG9uG9uG9uG9uG9uG9`9D09D08໥8໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥9 uG9D09D09D09D09D09D09D09D09D09 uG8໥8໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥8໥9 uG9 uG9 uG8໥8໥8໥8໥8໥8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`8`8`8`8`8`8`8`88`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥8໥8໥8໥88`8`8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥9 uG9D09D09D09D09`9`9`9D09D09D08໥9D09 uG8໥8`8`8`8`8`8`8`8`8`88໥8໥8໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥9 uG9D09D09uG9uG9uG9Ĥ09ү9ү9ү9ү9ү9ү9ү99uG9ү9uG9D08໥8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8888໥8໥8໥8໥8໥9 uG9D09D09`9uG9uG99ү9ү9:oj:{$::(:6v:6v:!:{$:{$:oj9_:oj9_9v9|8໥8`8`8`8`8`8`8`8`8໥8໥8໥8໥9 uG9D09D09D09D09D09D09D09D09D09D09D09D09D09D09D09D09D09D09`9uG9uG9uG9v9ү9ү9_9: uG:{$:(:D0:R:g:n_:n_:n_:n_:g:g:R:=S::=S:{$99Ĥ09`8໥8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥9 uG9D09D09|9uG9uG9uG9uG9uG9uG9uG9999v9v9Ĥ09ү9ү9ү9ү9_9:oj: uG:{$::6v:=S:D0:`:g:u<:X:::: : ::::|:n_:Y:g:D0:{$999D08໥8`8`8`88໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥9 uG9D09D09uG9uG99Ĥ09ү9ү9ү9_9_9:oj:oj:oj: uG:{$:{$::!:6v:=S:D0:K :Y:`:g:n_:u<:|:5:: :::d:Ĥ0:':˪ :':Ĥ0::: ::u<:X:g:=S:{$9ү9uG8໥8`8`8`8໥8໥8໥9D09D09D09|9|9uG9uG9|9`9D09D09D09D09D09|9uG9uG9v9ү9_9:oj: uG:{$:{$:!:6v:=S:D0:K :Y:`:g:n_:n_:u<:{:uG:::: :::::':ү:8:JN;;5;By;g;By;6:JN:ٵ:'::::X:g:6v:oj99D088`8໥8໥9D09D09uG9uG9Ĥ09ү9ү9_9_9໥9ү9ү9ү9Ĥ09Ĥ09ү9ү9ү9ү9_9:oj:{$:!:6v:=S:D0:Y:g:n_:n_:u<:oj:uG::::::::d:':˪ :ү:ٵ:>:JN;X;By;(;/;6v;I;Ps;Y;Y;Ps;I;4;*N3; :8:d:'::X:`:{$9ү9`8໥8`8`8໥9D09|9uG9Ĥ09ү9:{$::6v:=S:=S:6v:!::{$:{$:{$:{$:::!:(:=S:D0:R:Y:g:g:n_:|:5:::::::v:Ĥ0:,:ٵ:Dp:<;X;;!;(;-!;1T;?_;I;Y;`;p;oj;;;F;;<;;t ;Y;A!B;(:JN;oj:'::u<:=S99uG8໥8`8`8໥9D09uG9ү9_: uG:!:D0:`:g:n_:n_:n_:n_:n_:n_:n_:n_:u<:u<:u<:n_:n_:u<:u<:u<:|:X:X::: :::v:Ĥ0:˪ :ү:8:Dp:;5;&D;,;1T;:d;I;Y;`;n_;{;X;{$;;g;;;̊;W;r;W;L@;;;;t ;Tqb;1T;1T;{:S::g:{$99 uG8`8`8໥9|99_: uG:(:K :g:|::: : ::::::::::::::::::::d:':2:໥:JN;{;5;By;(;-!;6v;I;WP;`;t ;X;;#4;;;;Ĥ0;ү;;+ <<><<"<<<;%,;;;;[w?king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama5200/glycine.ndft0000644000000000000000000037517511744305674025731 0ustar rootrootTop5200 Glycine (sym) B<3044C4C4%> >>\>z>Ҡ>.9>T>K>N>v>f>8>˼=ߞO==ѻ==N=fp=?W&=< >N˵>w- >> +>Y>M>ɛ<>q>⧨>>L>]o>>>鷒>q>>>>>+>w?>Wd>%=#=]=V="==p=Pcw=-= ;Yk;:x::=::1::LO:C:wV:wV:s :s :s :wV:wV:wV:wV:wV:s :s :lvq:h%:h%:h%:h%:aJ:aJ:Re[:N:4:C.:H: :c:x9 d9'29'29۴9۴9۴9h9h9\9\9w9w9w9w9w9\9B9۴9'29:x:c: : ::!z:4:J:Re[:V:aJ:aJ:aJ:h%:h%:h%:h%:s :wV:]::::K:=::؊:0::=:=:::T:::LO:o:::LO:B::1::n|:;;6;35{;N4;w+-;; ;;<O<J<R<*z>/Q\>aB>>>[>A>ŗv>>>/>a>u>~> >и>%Y>(>ͨR>[>>>d>k>G~Z>= t=Ņ=0=E=~.=^š=;9=)= <&<h>>O`>w>A>x>X>>,>ڔ> e>5>>7>Y>>y">>'> >e>0>n>T|>`>5t>`=6 ==K=X=p$=N=,=< H>GF>mW>/>>r>y>l>|>ⶍ>>%>>>z.>F>W> '>܁>$>\>¿>>x1>TtF>$k==M-=C=,=[ =fi=@Ey="Ő=^>=|\>es> >>>>p>ш>U>玕>뎢>8>!>>?~>>ݬ?>ͩ>˺>?> u>>-|>l)>EO>J=$=h=I=k==\_=8===M<<<\3<:n;+;,5;+;%>;;Yk; ;A:d:w:K":=::::::B:::T::K":Aj;k;6t;^i;v7;< ;<<[&b>Uk>yI>p>0>L>>>7>R>vZ><>>)>l'>h>И>>>}^>W>п>> Z>Z>0a>=7=h=n!=+=y`=Tς=1o-= F<Ք<ӻ;,5;1X;6;;g;=s ;>a`;=s ;8n;2G(;(; ;;:d::':=:K::1:::::T::K":d;k;6;c\;S;;<<<*<q_>1<>_N>^>$N>+>>zo>z>>׬,>U>ܵ>>>;>ć>ٮ>Ip>i>O>>^>>kD>E> ?==}==G=q=s[=O=,=t;6;;A:::=:T:o:s :h%:]@:N:-(_:: : :c:29 d9'29'29'29'29'299 d9 d9 d99'29۴9h9w9l99:9 9 9 9Uq9uŰ9uŰ9uŰ9uŰ9uŰ9Uq9 9:99۴:2: :!z:J:V:aJ:h%:wV:o::: :::;G; ;;6;;%>;-;0j;2G(;6t;7;7;<;>a`;C ;J{;Ki;N4;O#8;N4;J{;D;;g;/|/;;;b::::0:=::'::::1::K":d;k;8n;i4N;;;< <OK<2)^J>>.2>_7>o>>V>_F>A>> >ϝ,>P>>ثA>>>>15>V>>S/>>>tf>RH>)->==@=B=NY=U=mF=Kq^=* y=tT<﩯<a`;2G(;$PJ;6; ::w:=:T:]:lvq:aJ:Re[:4:: :c99'29h9w9l9l9l9l9w9\9h9۴9۴9۴9۴9h9w9l9l99;9 9 9 9 9Uq9uŰ9uŰ9uŰ9uŰ9 9 99۴:c:Е:4:Re[:aJ:h%:g:::=:::I; ;k;^;%>;0j;6;=s ;C ;J{;Ki;LX?;N4;N4;N4;N4;O#8;U};];b ;gW;gW;gW;_;U};J{;=s ;0j;;k; -::::K":=:::T:T:s:B:K":d;Yk;>a`;sq;&b;;a<[<%\g<9׋#(>>W,>{G(>>>>>y>> >ʻ>Q>ϛP>:>4 >ԏF>>>>>>C>`>9>==ߏj=Ź=<=G==i=H[=)I=tT<<ʊ~<<=j<~Df<_;G; ::K":':]:h%:aJ:Re[:%: :x9۴9w999:9 9 9 9:999l9l9w9w9w9w9w9l9l999:9 9 9 9 9 9 9 9 9:9l9'2: :C.:N:aJ:h%:::B:':;A;y;$e;%>;2G(;<;CS;J{;N4;V;b ;gW;p;sq;uN;sq;p;k;i4N;gW;j";q:;w+-;}r;}r;}r;sq;gW;];Ki;>a`;0j;;k; :::ͽ:K":=:::::=::mP; ;C ;}r;;l<<5<*<>+ ?>L;>q[>v>l > >=>>>X>m>>x>ٟ>8>8>a>>>C>S>qC>Qb>)> =P=O=}===L=e=E=)X=}<;m<:<>Dl>j/>z>>>->E>P>Y>>k>”>r6>{>V;>>kI>5*>q>>fޢ>F>>T=I=͔=)k===|A=` =D =*G=H<_i<; ::=:B:h%:aJ:< : :x9\99 9uŰ9f9WM9WM9WM9f9f9uŰ9 9 9:999l9w9\9h9h9h9\9w99l9l9l9l9l9\9: :C.:N:aJ:h%:::':;k;-;C ;];w+-;i;};;!;p;;@;j; ;q;M;M;M; ;$;[;;};;;;v7;Z;Z;v7;;Y;|;gW;V;IE;8n;,5; ;;b::ܢ::K":::K"::d; ,;( ;Ki;/;3~;}<<<- h=e=====>>D>i*>>MD>>R>(b>c>c>&>>X>#>w>k}>>2[>>\>t->[>:>===ײ=ŷ=o==t=\}=B=,#=[N=-l<)<4<<<;6; ;A:d:::':':ͽ:;A;Yk;0j;O#8;;$;<7<ܲ<0v>J>l>>)>$n>>>S>>p>-!>>Ȗ>?>>r> >>z3>g?t>O3>/c>==sh=8j= ==G}=n-=YYW=B=.?=q=Y<< +<- <!< b<k;;2;9;&b;;/;gW;J{;-; ::]f:g:e:N:H:x9w99 9f9WM9WM9I9I9WM9WM9WM9f9Uq9 99l9w9۴9 d:2:c: : : : : : : : ::4:Re[:e:p/:::ͽ;;;=s ;^;K;;g;J;f<< u8<<;< <<J< \<͙<v<;;;);;;k;3;c;E+;;&b;&b;Ғ;;_;R;";~;j";ZO;J{;=s ;0j;!P;k; :mP:::S:::&;;;;g;^i;"g;9;޻(<O< (<6ر>#BP>P>pt>>6>H>>->>>U>Z>c>>F > >>>}A>m|>Z>AQ>"y9> ==& =x==O=@=j>=Wa=Cx=/== I<<<<<<<+<`-<T>,ű>U>sR9>->F>>>R>>>>>> ><>L> >|Ƶ>p>a>LE>1i>e>=L|=ˡ=ƶ==d=~Z=j/=X/o=EQ=3Z="=y=<_;2G(;$PJ;Yk; ;A:mP:mP;; ;Yk;+;@>;^i;K;$;k;P<^<- _>7! >\F>w>> >>"><>6>>B>>>A>l>.n>wz>o!>c>S>:->l> P= =I=>=`==s=9}=m{=\_=L7=9=(yM==Y;D;p;NL;;< <#V<>+<\"<}=r>>F>f/>~!>> >>(>>>v:>۷>j#>>>~q>e>>i2r>`>T,>Az>(1>z>=M=ڎk= I=#=Ͻ= =Y*=r"=b=R@=@=0T=!Q.=ͳ=<<ڷa< < >26f>U>pl>f>>y>>>>>>>>>8>zI>q>[q>Q9>A*>-~>r>V==Q'=Ԧ=}T==I=ۧ==w#=i,=Z)=Kq^=: =), ==y< ;2G(;%>; ;6;6;;0j;B;^i;;;Q;xn< ڵ<)0->G>E0>aU>xZ>l>>݀>^>>E>*>>$>p>ˬ>y8>n\g>d$k>P>B[>/|>> tM>=+ =⎅==>=D=H=l==|=o<=bF=SJ=B=1o-=!= =<;#a;$PJ;/|/;<;N4;sq;S;3;<^<r<9$ >/\>QW>iq>{Cn>Z>>->>^>a>k>S>/>:~>>sp>g>[hC>Gh>4 > ~>^>v===ރL=<=x=?=0=W=h=rJ=v =je=\_=L=93=(== A=04<3<<<+<+<R<@2<^;;U;;&b;/;N4;(;:K"::p/:aJ:Re[:N:4:-(_:-(_:)o:-(_:-(_:4:J:Re[:Y:aJ:h%:p/:C:B::=::d;b;k;"s;0j;8n;D;O#8;gW;;;E+;;< z<*?

>:>V>jBI>x>f/>*>>U>>C>m>x>:>>{ԩ>p">c8>U%>

'k>a> n>[===D=ξ=t= ==Z]==_=}?=p$=d=T=A~F=0=!s=W= XS=ʷ;C ;J{;W$;w+-;;;޻(<M<ѓ<88<^&4[> >A>WQ>e|>pV>xDS>~v>>>o>>b>z>>~g>tf>lOX>`iB>Q>3>r> w>>9==d=k==c=ٕ=M=E8=5:====1=x>=l}=]b=Kq^=8L=(==q=e<|<< 1<˴e<.#<< ;;g;N4;gW;+;;;u;*\;c];y;Y<<ѓ<88 m>(>BcJ>Rr>\>eLv>l>sp>{ >>>>V>>{>sG >l>eݰ>[ *>KB>+>@> O>6>>Q=Ž=:=㋽=y=,f=s=0=q=6===t=fp=S=@cC=0T=#4=%= X=@<><<>*>?>M>T]>Z3/>aA=>j\Z>sY>}r>a>>n>xc>o4b>gߔ>bMZ>]>Tea>CY>"h>>,>Z>>>N=:====)=V==`=e=dc=~<=ou=^ZV=Kq^=9,?=*8)=J==<`<<Ԍ{<¾< $>)>;g>G>L;>Q>Ww>`?>ku>uq>{>{>t>kD>a>[q>X;>T8>L>9>>>JX>;>[> q>l>ر=N=l=k=E=g=n;=T===:{=y+=h=Tg>=@=0T="@= F=\<<"<P<<v<b>(L>8>B>F>HZ>L>U>_>j3c>oh>m>e_>Y>PeT>Lq>K>Ii>A>2 >z>7> |>> 4> > 4>_=r=D?=㩈=ڮ=Ƒ=d=G==I=j =1=qR3=^J=K5=7r='t=U= X=<\|>>,N>9">@0>@d>?>B>I>R>[0>_>\>Rrc>ED>9>8J>;!><>8]>-p> L>>b>> )>^>/p>&> >=J==\=,==s=K====|=h=SL;=?W&=-\=)==!<Ք>x>2+:>Ax>?>;U><0>@J>Hy>N_>O>Jy>

.>$>%|>,>2#>1>)>6>z>Y><>>>>+>=x{=ѧ===#=)=(==T=F=%=o!=\B=F=3M=$f=%= |=<<<;,5;1X;7;CS;P;j";{;NL; ;c];=< < u8<%c<0L,>(>8>B[>ES>B[>>_>

<>>>A# >>>5ա>(]>>|>j>>1>&>)>%>V>@_>{>> C>!O>3]>:> h>c='Y=Q=ղ=̭=E==+4===N =w2=cj:=O*=:8]=*s=m= F= (="M=<< <<ެB< 4<ŧI+<`z<f< <٫D=<="Ő=?=^ZV=x{====Ɗq=9>>">/zR>>k>FL>H-_>Ec>A>>X><A>:>7;>0>%+>H>_> F> )>k>> N`> >#X>%>' >*J>->/r>._O>%S>a>5=t=^)=ZI==!==]=r===@=lBO=X=E7=5 =), = U=B== =0=2<}<-< 0<5> > ^>>? > >>%=f==k==@==j[=p=o=a^=:Q=ޕ<+>q>1>?;8>E>Gh>Ef>AQ>;>8>4>/g>$>> {>M >,>F> ,>>N> l*>-S2>/3>0'>3>7g>:>< >5>%>>pm=6?=ᶊ=t==X2=ȳ=ǚ=4U==-y=y=h =VC=F=8j=-zL=%T=wP= *=eo=\=<#<޶>ZI>!>/|>6 >7 >4=>1Ư>.n5>,>+ >%D3>> =#=o=C=V==1=s}=K=% {=<׿<>i<[d<*{0<;=;y;T;;Y;l;Y`;J{;=s ;35{;0j;2G(;7;G;U};k;;;;;*\;͂&;;a< n<<*i>=>.ǔ>9e>>_>?>>_>;/>7n>2u>.o>&)>>> q>m>>> >,>њ>'QB>7FJ>97>:c0>;>@R>Fu>Jg>F>8>!>> !o=U==l=\=p===ҹ===&=|Qh=l=]]=M=?*v=3=*)D="=ޕ=c=\=%<<J<_ !o>*yS>E\>U['>]$>b>es>eݰ>e>d*>c>c*>^>Tea>Aq>"0>=V=w====[3=/e= <ؼ4;H; ;;;gW;N4;@>;2G(;$PJ;$e;6; ;%>;7;J{;b ;~;;[h;q;Ī;tt;Ch<<G<)QH<>7>'?>/?>3\>4Y>4V>37X>0a>+>&q>T>Lc> P>x>>> [!>"n>>)s>2d>E.C>F8>EHT>CC>F>Mu>S>S̴>J >5ա>+>6=0===NE=֨o={=M=N=1=:===s=bm=R"S=D:Z=8==,="u==eo==P;><>\r>pj>}>7>(>{>XI>>Ij>C>>H>>p>UG>,N>a==s=3q=w=hMn=9Z=wa`;/|/;^;; ; ; ;6;-;C ;];}r;A0;E+;7x;׿;<͙<e<)<<>k>">(]>*yS>)N>*6L>*L>'3w>"v>jG>>l>q>  > }>w">>"\>0>:j>A>Qh>P>Mx>JrI>L8>S>\Kj>_>Z_>KB>1>> >=h==s=(==mq=}===={=t=c.=S.q=D=8L=+=!X={=;=Q=2<#<﩯<"<<+ )>A>jBI>@>2>~>>T>y>>>>>4R>&>>\>|K>W>"u=N=n==(=pc=?W&=;>a`;^i;+;_; ;;<O<$<)QH<>+ }>hW>"PC>&>&T >#r>"J>!S >3]>>uf>->Ye> >B>[H>!<>/$>;>H>N9>QO>]b>[>Ws>S>T>\>f>ku>i6+>^>M[>7>&>>> 0>J>=Y=ڎk=w==J=ҟ===E=o<=^e=O΄=A3=4=)I=)== =e=< <8>6x>ib>>vG>vh>BY>c>j>>>.>.>oQ>+>K>>K>i2>|H>N>=#=F=b=u=A3= F<߸`<;G; ;;;b;r;%>;C ;c\;";&b;;;ǭ<@2<%\g<>+<[d<~>>>#BP>'>%>">> u>>;>>|>)>>[>>#F >4 >C >Q >Y>]uR>^k>k;>j3c>f/>c`>c@>jh>st>xX>x>r{>h>[V>O>D>6j>%a>>Z=킏===R=L==D==o=v%=dgr=Tς=He=;n=/Q=%T=== =u<<<<$>_>y>)>r>E\>.,>>nl>>i>t6>ٓ>U>>ږ>!X>>BY>>q[>3f==A=b=v@=@ =><<;$e;; ;y;$e;1X;J{;sq;Z;;;< <OK<:N>C>4B>$~>'\n>$>!/>>9>9>>>I>>z>a>.7>@>QH{>^+>gJ>j>k'>{>|">{g>yu>zF6>~~>_>> >>>zd>pt>f$q>X8>Dl>*>B>?=4=r=e4==޽=n==xM=e=U̺=Jͅ=>=3Z=(==Q=Jl=e=&<<<ܔ<ԪE^>O>]>R>>M>Ӣ>ܽ>)>މ>Ï>'I>??[??E>1>Xo>.3>>"P>TKP>k=8==s[=:Q= X<;^i;;&b;%;<M<q<1vh#>#>>#^>&f>%5M>">!>!5@>"7>%ip>%V>">8>">!>3*>IHa>Yx>h>q>w]r>z; >>?0>F>Y>>4>>>n>>U>U>$'>aF>o;>Z`>A1>#r> F===@===N==vDL=b=S=G-==;=2=)&=!=u==!<)d>8v>rĸ>>v>>މ>???V???`?{V???? ?>I>> >iW>$D==/=ln=2=<5< O>"{>b>%>)@>)>)>* V>)N>,%>/`A>0>.>)>$ŗ>*:>9q#>O0@>aLi>q>~>1)>O>z>Y>^>C>&D>>_>>V>#>\J>`>L>>o>m B>S>5%>`>Hh====77=}=x=oW=[=M=@cC=7=-u=&o=J=uR= d=i( >iK>m>H>@>p?p? -??ǩ????5??$?J??]?>>>C>>st>=7==b{=*R=?<Ï<7 H>*>"n>,O>0w>2I>3r>4԰>5n>7>; >=H:><)~>7ȟ>3*>7>>Ec>Xb>m>3>$4>ex>>J>>c>I>c>߱>3t>,> >(H> >>`>H>4>{N>bQ>FTr>!>P==ڮ==`===e=P˼=@r)=5=-"=&4b=== (= <{6<Mۓ>#l>&q>3,,>9><)~>>ˁ>@>B>EW9>H>K>L>Jg>H'>Mqe>YP>j>ca>v'>}>BF>>,>r>>x>I>>1>\>>EB>F-><>b>>B>C>l1>Oq>(1>h#==v=<=+==q=VC=@r)=2?='Y= b=+== G=<v<0 ;+<;1<<>ZB>>k>>츊?A?׀?v?s?S?? 9n?"F}?$f?'8?)O?+?*y?%Z?3?~+?>Э>Zt>cNL=<===N="!={< 1<9AQ>"{>(X>6;>@3>Dh>F>IO>L>P>SJ_>W>Z\%>\ >_>f>r{>s8>Wq>p>o>>]>’>B>>ê>Ū>ٌ>˄>>Y>M>x>h>+>>\)>t0>oO>PeT>#>D==%='=K=i=`&=B=.=!s== (=Q=$>V>.>>;>??N?{m?h?"0%?&*?(?+R?.&?16?2?3x?39?/`?'Va?)?B>`W>ny>e>A=ߥ= =|=D:Z= b=123>>'\n>7! >Aq>G>K>P >T=>YLO>]~>c`>j>>p>w >>>Y[>->v>2>x>ª>i>3>K9>ϼ>Һ>џ>>Á>>9R>>>p>y#>>F>f>BL>==w=Y=}=0=j=I=-=AJ= M4= k>V>>m>C>?, ?a?5???%4_?*?02/?4|??9?>@T?@D??M_?<;?8?R?0?%!??q>S>>|H>u=Ĉ==kb=;== y=m>=p>#ӊ>4>@>I>PVo>Vj>\!>c>j>r4>|>4>?>>>>x>>$>٬>˿>ߌ>ۤ>P>>V> C>O >>>r>"> >ō>%F>D>oh>N^>8=,=ۓ=`U=='=oW=M=.h==T<2<<<<<}<7<<0N< }|>S>z> > >߽?v?V?? ?'05?-{?4Wy?;~?B!?I ?Nr?O[?M??C>?8v??-3?!-W?w?>>{>F)=1z===ZG=4P=!=A= =-===!=h== G= d= = Im=<=5r>>>1>?>L>Uu8>^:>f/>p>{>>u/>l>`>H>@}>>~>pp>ׁY>ඇ>> |>B_> >>Z>> P>|>ش>4>>A>t>`>l)>I>\G=~ =3=7Q=A==&=hG=G=*d=”=5D`>>ht>Z>z??_o??"W?+$?2+?8?AS?K)8?Pu?Tu?W?X@?R ?E?33?%h?e? yl>ړ>">eW== /=)=p =JGv=/V=!=@L=N2==<==\="=%=(=*R=+&|=)=&4b===Y<<ټJ>>'>>1R>AO>Q>] >h>s>Gs>|>0>>>v>DW>e>>p}>ݷk>]><>"?4d?-?^B>>>#>Nc>ڥ>>pB>S+>ݧ>l>eS>5> E=|=IL===wǓ=Wm=8= U= g8<<̢<z<<~<\I0%>zU>];>>)?!?q?:O?%m?/=X?9?C)?K?Q@?W@?\t?_\?`l?\t?R?=hX?)??>+>>w>=R=~=|`N=V4=: =(yM=J====wP=%=-"=4=;q*=@r)=E =GO=D=>=5r=)v== < =R=i ===X== =Q=>m>36>%:>7o@>IO>Y2>>gЮ>u0> `>tD>;>4>(B>`>M>l>>'>>|>>&?x?4?S?>?o?$>[>`=>n>֑)>%>X>#>>_;>"0=o=u1=b8=M==eU=@r)=&o= < /Bw>qJ>k>%>o?f?*a?U?'?2??K?LyK?SY?X?_?dZ?f?fF?c?Z?Jÿ?0&?? >)3>R>>===2X=}z=X=>>2c>FC>UG>d>sU>->q|>6>>5>,)>U?>l>ҜH>ݹH>d>??*0?/V?? ? ?"?2>>>ٳ>?>zb>>F>ZE>i<=k=Y==X`=s}=N=,=z<-<Spm>7;>sN>>! >ݐQ?lJ?(?h?%?3 C?A?Nxc?U?\:1?b[Q?f?j:?j?g?^?M?3K?! N?>>>}+> =Q==q%=P=5r=%n=o='= == U==='t=32=?HA=J8=Q=W+=YK=W=QB=FC=8j='>==-l<<v< K>(%>A>Um>e>sm>>>>>n>Dj>\>ˑ>>>?I??I? ? =? U? ? ?>>X>Ӑ1>>EB>J>i>O̧> =5=M=1Z=yo=V&=4\=:a`;<;>a`;J{;gW;;8;;ށ;f<W<w<"D<- <8r<@f%>?">xe>w9>>ޑC??TC?`?#?/ ?@ 8?N?U?[< ?`?eX?hx?j?h(?`?Lc?/2??>v>^n>yL>==o=`c=;S=&=@= A=<<<='Ə=2=<}G=D=Kq^=Mc=K(=D=:Q=.?= 6,=Jl<}<х<7D<7<,h=V(=m!== =n=(=ū=6 =>>3\>PJ>e>w>>>&1>.>#>!>$>T>ܣ>@>G$?? ]? ,??N? h? L?1?_>><>߇ >>98>>'>qx>5 =c=ǀ6=ҟ=5=_ =6=q=}u<<a`;-; ;; ;;̚:I;A; ;;7;T*;;?;;;7< <e<#<.p<:IR>]8>F>>ht>>ޅ>>}>_S>>ȩ0>d>>?;?? ?? ??? ?&?9>a>ʧZ>N>>sE>Xp>@=Ċ=$=s= =W27=)I=<<->>Rc~>">Z>Q>]'??x?a\?!"+?+?5?>)?Dm?Je?P.?U?Xz?Z?Xt?P}?>z?-?!$?Y?/>> > k=d=W=He=d<<8x>%@y>O;l>un.>>>7N>@>> >>-?U??g? ? ?'?y?t? ?>w>`>$><>p>n>/=+ =^=,==^J=1Qb= X<Q<\3,!>>>>?X???g?#?-^?8b?C?H`?H?I_?K?N?O9?N?F?5=?&f1?GQ?;>;>>s=ҿ=!=g=%T<<==U> P>"v>=H:>^MM>>>>M>t6>۰>+>d??b? #? *? ? ? 1? ;?? >6>Iw>&>>oNs>;>=&=(R='=aC=3h=<<;r;;;Y<<5I>vN>Һ? mH???%?)5?*?-?1?9?B?Ik?I.?D"?Aq[>'>V]==2X=N0= <5\>7g>L;>X>d >yn;>B>>x>>r>:?U?? mH? ? ? ? a+? ??>->ޅ>ƹ>X>>4">=ҝ6=]s=6=eF=4u=S=">>?2?(Q?E+?W?[?WT?P?IPK?A?BD?E?G~?CP?=)?:_?7?3(?,g?#H?g?>c>Ҽ>~`T>==&=1o-<<7;;NL;v;;;;;K;Y;~;q:;_;Ki;>a`;/|/; ;; ; ; ;6;-;G;i4N;Z;< ; g<@2<:N<<|c==8==s===>;>F6>i>~'>~>{>>>>M>}>b>{@?? ? v? ?? c? !?'i?(J>H>)>_>͙m>=>>Y>i=4=V=l=j#=4= +<$7>>ӗ?g?0a?cf ?n?q%?p?m?i<8?\?O?F?BD?@?=f|?80m?3p?.?'Z????>Ӭ>>S8=x=[[=W=;;$PJ;$PJ;$PJ;$PJ;"s;!P;; ;$e;Yk;;b::d:x:::ܢ: ::n|:B:::::':=:;;2G(;Xrw;;;<%>Y>C>\0>+>>0>4> >>>+>5j???e?#??*->D>9>3Z>=f>`>{a>>q>oE$>5n>==js=;S`=<װ<\3fϽ>? |*?%M?^?pK?xV?{?xȅ?r9?m ?c?S?E?>?9?5{?0z?*y?$3?Sr?.?T>t>>3,,=Ơ=A=3><)<{=< c;;j";<;$e;A:S::=:=:K":K":'::::Ϛa:w:Ϛa:'::B:s::C:h%:e:aJ:Y:]@:aJ:aJ:aJ:aJ:aJ:V:Re[:Re[:N:Re[:aJ:h%::n|;;%>;U};NL;׿<I >8>>X>>>b\>q>v>+>۶>zA>???>>l>>>ڴ>j>>=>>E>x?>ASs>D=N=g=2=eo< 1< b>\>G?"?9?lc?v?~C??|?sI?l?a?N0??D?7?1,?+c?&?!??2>>>+>Ù=)=q4h=*<Ȧ<>+;׿;U};A:K"::o:s :h%:h%:h%:h%:h%:p/:wV:C:]:LO:LO:(:LO:C:s :h%:aJ:Re[:!z:c9\99 9 9:999l9l9l9999w9~:!z:aJ:wV::d;%>;gW; <<<<~=5====8j> i>tk>>>D>z>:>>ۃB>1i>wm>j?~?>J>v{>É>и/>©>V>V>u\>O>p%>C\>=@=3=d=d<Ν)<\3

H)>f>ǐ??Kt?na?wc?}W?}V?w~?o-?gX?R1???3O?,?& ??ɣ??2>ߨ>1>yH>=Ӟ=[3=!<<H;3~;$PJ::h%:]@:N:)o:H: : : : :C.:4:N:Re[:]@:aJ:aJ:aJ:aJ:V:N:!z: 9\9 9WM9:09:09:09:09:09:09:09:09:09:09:09:09:09I9WM9:c:N:h%:1:d;2G(;";H<#<$0<=0'z=x=@>>x*B>>>>~>Q>K>>Q>>H>%>H>W>|>G>O>؀>7>>!>y=>Ud>%|=<=3=?=܋=dX=1q=a`;;Ch<6Y<<;=&a=n=/=f>Y;>>*Y??I?l?s}?v?u?o}?g?N?7?,B?%1??)?? >>W>6>J=@E=I=C<= .q>wk>>)>>?/?%? ?<>&>&>}> ]>i>Q>m>U>>e>>:Ee> E==¤u=69==^=.=y<&<~;H;NL;H:Aj:g:< 9w9WM9:09:09f9f9 V88I88I8m88 8 8 8888 8 8 8 8 888m88I88I88I88I88I88I88I88I9 V9 V9 V9f9:09:09I9f9۴:C):s :K";+;;:<- <<঳=&<=q=X=k+>V >>{@?l?329?^\?k?m]?k6?[?=¦?+I?#'? ?Q?v?<>N>®>{>m>r="=x{=#e>?j> > .>\??`,?c?>>>׻>L>=>o>q>X>N=M= '==E= ]=T='^J=MEbe>>ݡ?{V?_?0?A?C>?7?)"E?Ga?}?b? >>>>>v>=%==;Dz<&>:>>a~>MJ>>>>.>> >EU>>p>bMZ>7 =f=J=AW==i;=D="Nf'/>>Q>?7?M????#? q?R(>>x>>>gߔ>==m=J5=u<=r=>>bT>>">?>=2>}>˵T> >d >b>>l>._O=E$=Y=6=x/=LF='|= X<`<w<,<3SE<a;9;[=p;k:K"9'29uŰ9I9:09 V88I88I88I8m88 8 8 888P8P887R7R7R7R7R888P8P8P888 8 8 8 8 88m88I88I88I88I9 V9 V9f9+K9:09I9::C.:lvq:;N4;<ܲ>c%V>>>%2>>>>vg>4>j>>>pZ>/==t==S=<8 y>[>>H>K>S>>>%>j}>1==,=t{=t:=<֧=TB>fgx>>&D>>8><>>>e6>.=m=n==|=CZ= @<%ip>NXE>a>ghj>^>H>{===%=j=w#===P< 1<Q>,h>Fu>K>?Q>#vr>l=2^=k=69=|=_W=-=K=@ =8X='t=< ;Wn;<u<`z:::e:99I9+K9 V88I88 887R7R7R7R88 8 8m88I88I9 V9f9:09 : :e:;A;<;;9;<<^<<#V< \<e<͙;;u;gW;$e:=:h%:99WM9:09:09f9 V9 V9 V88I88I88I88I888 8 8 8 8 8 8 8888P8P8P887R7R7R7R7R7R88P88 8 88m88I88I88I9 V9 V9f9:09I9uŰ9'2:C):lvq:K;;35{;gW;R;N;;Q;P;2;;!;;uN;H;::B:wV:Re[:29Uq9:09f88I8m8 8 887R7R7R7R8P8 8 888I88I9 V9f9:09f9:Re[:wV:=; ;;g;k;;< ; ;ڊ;޻(;};;?;o;2G(:d:LO:Re[9 d9f9:09:09f9 V9 V88I88I88I88I88I8m888 8 8 8 8 8 8 88888P8P8P87R7R7R7R7R7R88P88 8 88m88I88I88I88I9 V9f9:09:09WM9: :]@:g:=:&;;>a`;P;b ;gW;_;O#8;>a`;( ;y::=::lvq:Y:9l9WM9:09f88I8m8 88P87R6S7R8P8 8 888I88I88I9 V9:09I9:Е:aJ:]:;A;$PJ;D;b ;}r;Y;;nA;MF;-;̚:: :h%:99I9:09f9 V9 V88I88I88I88I88I88I8m888 8 8 8 8 8 8 88888P8P8P887R7R7R7R7R7R7R8P8P88 8 8888I88I88I88I9 V9 V9f9:09I9uŰ9۴:C.:aJ:{[:]f:ͽ;; ;k;;b:d:'::C:h%:Re[:-(_: 9w9uŰ9I9:09 V88I8m8 88P7R7R7R8P88 88m88I88I9 V9f9:09f9۴:)o:aJ:C:: :ͽ;;|; ;;6; :ܢ:: :lvq:J9۴9WM9:09f9 V9 V88I88I88I88I88I88I8m888 8 8 8 8 8 8 888888P8P8P8P87R7R7R7R7R7R7R8P888 8 8 88m88I88I88I88I9 V9f9:09:09I9 9'2:C.:Re[:h%:::]f::::wV:h%:Re[:9 d9l9 9WM9I9:09f9 V88I88 887R7R888 8 888I88I88I9f9:09I9 9'2:!z:Y:h%:::: :=:K:':o:h%:N:x9Uq9:09f9 V88I88I88I88I88I8m8m8m8888 8 8 8 8 8 8 888888P8P8P8P87R7R7R7R7R7R7R88P888 8 8 88m88I88I88I88I9 V9 V9f9:09:09WM9 9w: :-(_:Re[:aJ:aJ:aJ:aJ:N:C.9~99f9I9:09:09+K9 V9 V88I88I8 8 8P7R7R7R8P8 8 88m88I88I9 V9f9:09I9 9۴: :0:Re[:aJ:aJ:aJ:aJ:Re[:C.9'29 9I9:09 V88I88I88I8m8888888 8 8 8 8 8 8 8 8 88888P8P8P8P887R7R7R7R7R7R7R7R88P888 8 8 888m88I88I88I88I9 V9 V9f9:09:09I9f9 9l9'2:c:c:c9'299uŰ9I9:09:09f9 V9 V88I88I8m88 887R8P88 8 888I88I88I9 V9f9:09I9f9;9h9 d:c:c:x9۴99f9I9:09 V88I88I8m888 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P8P8P8P887R7R7R7R7R7R7R7R88P8P888 8 8 8 88m8m88I88I88I88I9 V9 V9f9:09:09:09I9WM9WM9f9f9WM9WM9I9:09f9 V88I88I88I8m88 8 887R7R888 8 88m88I88I88I9 V9f9:09:09I9WM9f9uŰ9f9WM9I9:09:09f9 V88I88I88 8 8 8 8 8 8 8 8 8 8 8 8 88888888P8P8P887R7R7R7R7R7R7R7R6S7R7R88P8P888 8 8 8 888m88I88I88I88I88I9 V9 V9f9f9:09:09:09:09:09:09:09:09f9 V88I88I88I88 8 8 88P7R7R7R8P88 8 88m88I88I88I9 V9f9f9:09:09:09:09:09:09:09f9 V88I88I8m88 8 8 8888888888888888P8P8P887R7R7R7R7R7R7R7R7R7R7R7R7R8P8P888 8 8 8 8 8 888m88I88I88I88I88I88I9 V9 V9 V9f9f9f9f9f9 V9 V9 V88I88I8m88 8 88P7R7R7R8P88 8 8 88m88I88I88I9 V9 V9 V9f9f9f9f9 V9 V88I88I88I8m88 8 8 88P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P7R7R7R7R7R7R7R7R7R7R7R7R7R88P8P888 8 8 8 8 8 8888m8m88I88I88I88I88I88I9 V9 V9 V9 V9 V9 V88I88I88I88I8m88 8 88P87R7R8888 8 888m88I88I88I88I88I88I9 V9 V88I88I88I88I88I888 8 8 88P8P8888888P8P8P8P8P8P8P8P887R7R7R7R7R7R7R7R7R7R7R7R7R7R8P8P8888 8 8 8 8 8 8 88888m88I88I88I88I88I88I88I88I88I88I88I88I88I8m88 8 8 888P7R7R7R88P88 8 8 888m8m88I88I88I88I88I88I88I88I88I8m888 8 8 888P87R7R7R7R7R7R88888887R7R7R7R7R7R7R7R88P8P8888 8 8 8 8 8 8 8 8 88888m8m88I88I88I88I88I88I88I88I8m888 8 8 8 88P7R7R7R7R88P88 8 8 8 8 8888m8m8m8m8m8m8m888 8 8 8 888P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R8P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 88888m8m8m8m8m8888 8 8 8 888P87R7R7R7R8P8P88 8 8 8 8 8 8 88888888 8 8 8 8 8 888P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P8P888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8888 8 8 8 8 8 8 888P87R7R7R7R88P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 88P8P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 888P8P7R7R7R7R7R7R88P8P888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 888P8P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 88888P8P8P7R7R7R7R7R7R7R7R7R7R888P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P8P87R7R7R7R7R6S7R7R7R7R888P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 888888888P8P8P8P8P887R7R7R7R7R7R7R7R7R7R88888P8P8P88888 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P8P87R7R7R7R7R7R7R7R88P8P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 88888P8P8P88887R7R7R7R7R7R7R7R7R7R888P8P8P8P8P888888888 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P887R7R7R7R6S7R7R7R7R7R88P8P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P887R7R7R7R7R7R7R7R7R7R8P8P8P88888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P8P888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 888P8P87R7R7R7R7R7R8P8P888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P8P88 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P87R7R7R7R88P888 8 8 8 8 8 8 8888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 888P8P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P888 8 8 8 8 8 88888888 8 8 8 8 8 8 88P8P7R7R7R7R88P888 8 8 8 8888m8m8m8m8m88888 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P888 8 8 8 888m8m8m8m8m8m8m8888 8 8 8 8 88P87R7R7R7R8P88 8 8 8 888m88I88I88I88I88I88I88I88I8m8m88888 8 8 8 8 8 8 8 8 8888P8P87R7R7R7R7R7R7R7R88888887R7R7R7R7R7R88P888 8 8 888m88I88I88I88I88I88I88I88I88I8m8m888 8 8 88P87R7R7R8P888 8 8 88m88I88I88I88I88I88I88I88I88I88I88I88I88I8m88888 8 8 8 8 8 8 8888P8P7R7R7R7R7R7R7R7R7R7R7R7R7R7R888P8P8P8P8P8P8P8P8888888P8P88 8 8 8888I88I88I88I88I9 V9 V88I88I88I88I88I88I8m888 8 8887R7R88P88 8 88m88I88I88I88I9 V9 V9 V9 V9 V9 V88I88I88I88I88I88I8m8m8888 8 8 8 8 8 888P8P87R7R7R7R7R7R7R7R7R7R7R7R7R8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P88 8 8 88m88I88I88I9 V9 V9f9f9f9f9 V9 V9 V88I88I88I8m88 8 8 88P7R7R7R8P88 8 88m88I88I9 V9 V9 V9f9f9f9f9f9 V9 V9 V88I88I88I88I88I88I8m888 8 8 8 8 8 888P8P7R7R7R7R7R7R7R7R7R7R7R7R7R888P8P8P8888888888888888 8 8 88m88I88I9 V9f9:09:09:09:09:09:09:09f9f9 V88I88I88I8m88 8 88P7R7R7R8P88 8 8 888I88I88I9 V9f9:09:09:09:09:09:09:09:09f9f9 V9 V88I88I88I88I88I8m888 8 8 8 888P8P87R7R6S7R7R7R7R7R7R7R7R888P8P8P88888888 8 8 8 8 8 8 8 8 8 8 8 8 888I88I9 V9f9:09:09I9WM9f9uŰ9f9WM9I9:09:09f9 V88I88I88I8m88 8 887R7R888 8 88m88I88I88I9 V9f9:09I9WM9WM9f9f9WM9WM9I9:09:09:09f9 V9 V88I88I88I88I8m8m88 8 8 8 888P8P87R7R7R7R7R7R7R7R888P8P8P8P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 888m88I88I9 V9:09I9f99۴:x:c:c9 d9h9;9f9I9:09f9 V88I88I88I88 8 88P7R888 88m88I88I9 V9 V9f9:09:09I9uŰ99'2:c:c:c9'29l9 9f9I9:09:09f9 V9 V88I88I88I88I8m888 8 8 888P87R7R7R7R7R7R7R7R888P8P8P8P88888 8 8 8 8 8 8 8 8 8888888m88I88I88I9 V9:09I9 9'2:C.:Re[:aJ:aJ:aJ:aJ:Re[:0: 9۴9 9I9:09f9 V88I88I8m88 8 8P7R7R7R8P8 8 88I88I9 V9 V9+K9:09:09I9f99~:C.:N:aJ:aJ:aJ:aJ:Re[:-(_: 9w9 9WM9:09:09f9 V9 V88I88I88I88I8m88 8 8 888P87R7R7R7R7R7R7R88P8P8P8P888888 8 8 8 8 8 8 8888m8m8m88I88I88I88I88I9 V9f9:09Uq:x:N:h%:o:':K:=:: :::h%:Y:!z9'29 9I9:09f88I88I88I88 8 887R7R888 888I9 V9f9:09I9WM9 9l9 d::Re[:h%:wV::::]f:::h%:Re[:C.9'29 9I9:09:09f9 V88I88I88I88I8m88 8 8 888P7R7R7R7R7R7R7R88P8P8P8P888888 8 8 8 8 8 8 888m88I88I88I88I88I88I9 V9 V9f9:09WM9۴:J:lvq:: :ܢ; ;6;; ;|;:ͽ:: :C:aJ:)o9۴9f9:09f9 V88I88I8m88 88P7R7R7R8P88 8m88I9 V9:09I9uŰ9w: :-(_:Re[:h%:C::':d;b;;k; ;:ͽ:]f:{[:aJ:C.9۴9uŰ9I9:09f9 V9 V88I88I88I88I888 8 88P8P7R7R7R7R7R7R7R888P8P8P88888 8 8 8 8 8 8 888m88I88I88I88I88I88I9 V9 V9f9:09I9::h%:: ;̚;-;MF;nA;;Y;}r;b ;D;$PJ;A::]:aJ:Е99I9:09 V88I88I88I88 8 8P7R6S7R88P88 8m88I9f9:09WM9l::Y:lvq::=:;y;( ;>a`;O#8;_;gW;b ;P;>a`;:&:=:g:]@: 99WM9:09:09f9 V88I88I88I88I8m88 8 88P87R7R7R7R7R7R88P8P8P88888 8 8 8 8 8 8 888m88I88I88I88I88I9 V9 V9f9:09:09f9 d:Re[:LO:d;2G(;o;?;;};޻(;ڊ; ;< ;;k;;g; :=:wV:Re[99f9:09f9 V88I88I88 8 8P7R7R7R7R888 8 8m88I9f9:09Uq:2:Re[:wV:B:;;H;uN;;!;;2;P;Q;;N;R;gW;35{;:K:lvq:C)9'29uŰ9I9:09f9 V9 V88I88I88I8m88 8 88P87R7R7R7R7R7R888P8P8P8888 8 8 8 8 8 8 8888I88I88I88I9 V9 V9 V9f9:09:09WM9::h%:=;$e;gW;u;<͙<e< \<#V<<^<;;9;;<;A::e: 9 9:09f9 V88I88I8m8 8 87R7R7R7R888 888I9 V9+K9I9::e::;%>;^i;;^;< <w<<"U<"<<Xm<ظ; ;u;w+-;2G(:d::aJ: 9 9I9:09f9 V9 V88I88I88I88I88 8 8 887R7R7R7R7R7R888P8P88888 8 8 8 8 8 8888I88I88I9 V9 V9f9f9:09:09I9 :x:Re[:]:8;:;;tt< +<5/:=:h%: 9uŰ9:09 V88I88I8m8 8 887R6S7R7R7R7R7R7R7R888P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P88 888I9:09uŰ: :h%:=; ;gW;9;<l>#vr>?Q>K>Fu>,h>Q=V==m=gz=*d<<{>H>^v>ghj>a>NXE>%ip=:===d=\<.>e6>>><>8>>&D>>fgx>B=E=ju=&=Aoa= 1>j}>>>>S>K>H>>[> y=S=ۧ=Cf<5/>pZ>>>j>4>vg>>>>%2>>>c%V>==W=V4=r<ʊ~._O>l>>b>d > >˵T>}>=2>?>">>bT>==r=><>gߔ>>>x>?R(? q?#?/???M?7>>Q>>'/= =~=d}=wP?A?0?_?{V>ݡ>>Ebe=ܫ=OX=m{=#< 1N>X>q>o>=>L>׻>>??c?`,?>\> .> >?j>e=T#==\_= v<<7 ;;uN;Yk:=:h%:)o9h9f9:09+K9 V88I88I88I88I88I88I8m888888m88I88I9 V9:09:09I9uŰ9 99l9w9l9:9 9f9WM9I9:09:09:09:09:09:09:09I9I9f9h:]@:K";P;r>m>{>®>N?=P?v?Q? ?#'?+I?=¦?[f?k6?m]?k^?^\?329?l>{@>>V =k+=X=q=&<<঳<<- ;:;;+:K":s :C)9۴9f9I9:09:09f9 V9 V9 V88I88I88I88I88I88I88I88I8m888 8 8 8 8 8888 8 8 88m88I88I9 V9f9f9:09:09WM9w:< :g:Aj;H;NL;H<~<&=y=.=^==69=¤u=> E>:Ee>e>>>U>m>b>i> ]>}>&>&?>>)>>wk> .q==v5g=m<J>6>F>? ??)??%1?,B?7}?N?g?o}?u?v?s}?l?I?>*Y>>Y;=f=/=n=&a<;<<6Y;Ch;;>a`:d::aJ:]99WM9I9:09:09f9f9 V9 V9 V9 V9 V88I88I88I88I88I88I88I8m888 8 8 8 8 8 888I88I88I9 V9f9:09I9WM9 9~:J:s :K";/|/;Z;<%|>Ud>y=>!>>7>؀>O>G>|>W>H>%>H>>Q>>K>Q>~>>>>x,>=@=x=0'z<<$0<#;H;";2G(:d:1:h%:N:c99WM9I9:09:09:09:09:09:09:09:09:09:09:09:09:09WM9 9\: :!z:N:V:aJ:aJ:aJ:aJ:]@:Re[:N:4:C.: : : : :H:)o:N:]@:h%:;$PJ;3~<H<=!=[3=Ӟ>>yH>1>ߨ?2??ɣ??& ?,?3O???R?gX?o-?w~?}h?}E?wc?na?Kt?>ǐ>f>H)=P=G=cj:=!`<>C\>p%>O>u\>V>V>©>и/>É>v{>J??~>j>wm>1i>ۃB>>:>z>D>>>tk>i> :d::wV:aJ:!z9~9w9999l9l9l999:9 9 99\:c:!z:Re[:aJ:h%:s :C:LO:(:LO:LO:]:C:wV:p/:h%:h%:h%:h%:h%:s :o::K";A;U};׿<>+<Ȧ=*=q4h=)>Ù>+>>?2??!?&?+c?1,?7??Ev?N?a?l?sI?|??~?v?lc?9?">G>\>=L==Rl= <D>ASs>x?>E>>=>>j>ڴ>>>l>???>>zA>۶>+>v>q>b\>>>X>>8>I =w}=s==CL="M;:n|::h%:aJ:Re[:N:Re[:Re[:V:aJ:aJ:aJ:aJ:aJ:]@:Y:aJ:e:h%:C::s:B::':Ϛa:w:Ϛa::::':K":K":=:=::S;A;$e;<;j";< c<{=<)=3>=A=Ơ>3,,>>t?T?.?Sr?$3?*y?0z?5{?9?>?E?S?c*?m ?r9?xs?{?xg?pK?^>?%M? |*>>fϽ=:=====;<еd<>5n>oCG>q>>{a>`>=f>3Z>9>D?*-??#?e??>5j>+>>> >4>0>>+>\0>C>Y>=r=Ӟ=1=@= <;(;+;+;*ԏ;-;7;O#8;~;&b;%5< S8>>Ӭ?????'Z?.?3p?80m?=f|?@?BD?F?O?\M?i<8?mX?pD?q%?n?cgo?0a?g>ӗ>>7=ËU=:=cÙ=)=z+< KQ;;Z;O#8;"s::K:{[:aJ:-(_:c9l9 9f9WM9I9I9I9I9WM9WM9WM9WM9WM9WM9WM9WM9WM9WM9uŰ9 99۴:c:C.:Re[:h%:g:: :; ;V;T;xn<#V<`-<i>Y>>=>͙m>_>)>H?(J?'i? !? c? ?? v? ?>{@>b>}>M>>>>{>~>~J>i>F6>;====s=8==<|c<<:N<@2; g;< ;Z;i4N;G;-;6; ; ; ;; ;/|/;>a`;Ki;_;q:;~;Y;K;;;;;v;NL;;>;;;}r;~;~;+;Y;D;;Z;S;m; ;;<}>~`T>Ҽ>c?N?g?#H?,g?3(?7?:_?=)?CP?G~?E?BD?A?IPK?P?WT?[J?W?E+?(Q?2>>>="=T==y-=Aoa=<-<ǧ<:n<:N< ;;3~;}r;C ;$e::::aJ:C): 9'299 9 9uŰ9uŰ9Uq9 9 9 9:9:9:99l9۴:2: :0:Re[:aJ:s ::n|:;$e;=s ;q:;3~;Y< y3<`-<>4">>X>ƹ>ޅ>-??? ? a+? ? ? ? mH??U>:>r>>x>>B>yn;>d >X>L;>7g>\="=ۋ=E==<=^ZV=,=!< V\>'>q[??? y?,?6Xn?=`?@z?A?AҺ>vN>I=D==b=O=#]=C<ӻ<6;6::K:]:h%:Re[:-(_: :x9'29۴9h9۴9'29:x:c: : :H:)o:Re[:aJ:p/::]f:';;"s;J{;w+-;;g;<>;>oNs>>&>Iw>6? ?? ;? 1? ? ? *? #?b?>d>+>۰>t6>M>>>>^MM>=H:>"v> P=U==>==ݾ='=qR3=Kq^=%=-s>>;?;?GQ?&f1?5=?F?N?O9?N?K?I_0?H?H`?C?8b?-^?#?g???X>>>>>,!=_==|Ȓ=L='|= v<M<<^<`-<3o<ܲ<M;;;;sq;C ; :Aj:=::s :e:Re[:J:-(_:!z:!z:%:-(_:4:N:Re[:V:aJ:h%:wV::=:; ;"s;B;k;NL;g;)< <*/>n>p><>$>`>w?9? ?t?y?'? ? ?g??U>->> >>@>7N>>>un.>O;l>%@y>x=v~=r=-K=@==n=~_=`&=?="=$<<x<1L k> >?/?Y?!$?-?>z?P}?Xt?Z?X?U?P.?Je?Dm?>)?5?+?!"+?a\?x?>]'>Q>Z>">Rc~>=A=Yx=s=A="Ő= |<<ì<<@>Xp>sE>>N>ʧZ>a?9?&? ??? ?? ??;>>>d>ȩ0>>_S>}>>ޅ>>ht>F>>]8>R=f=7=c='=m=:{=qo=XM:=;="Ő= IA4>MD>^??a\?(6?:2?N?WSD?]?_u?^?[?WT?Pa$?EE?9?0ͧ?'?m?TL? {I>:>>>>c`>!5@==|V==p(K=>K=z=! A>Hx6>/}>>=>إ>1>A? 3? q????? Ԟ?z>>`>@>T>>q>>*>(>:>>u>[T>< >C=L=ge= ====s=m=VR=<2=%=t<_i<<<<<f<}=l >wg>d? x?W?+$?Gx?Zt?b?dSn?c?a?^m?ZX?U ?L?:vE?-=?$\d? >?]?lS>X>`>>K->K>T=f=c=.=Hb=N="Ő= a`;P;sq;Z; ;ӏC;<Vo<e<- 5 >qx>'>>98>>߇ >?1? L? h?N?? ,? ]?>H>@>ܣ>T>$>">#>.>&1>>>w>e>PJ>3\>==6 =ū=(=n= ==m!=V(=>h=)I==o<+<<¾<2=tT=>yL>^n>v???/2?Lc?` ?h(?j=?hx?eX?`/?[ޑC>>w9>xe>?">%=/=ţ=@=ZC=j*=7^~=<-<Ï<6F<\3<a`;<;>a`;D;Ki;Xrw;k;m;;N;k; g<v<<+ >O̧>i>J>EB>>Ӑ1>X>?? ,? ? U? =? ?I??I>>>>ˑ>\>Dj>n>>>>>sm>e>Um>A>(%> K==k==/==='=m?=W=?=+=z=,=2=8j=FC=QB=W=YK=W+=Q=J8=?HA=32='t=== U== ='=o=%n=5r=P=q%==Q> >}+>>??! ?3K?M?^?g?j?j:_?f?bZ?\:1?U?Nxc?A?3 C?%?h?(?lJ>ݐQ>! >>sN>7;>pm==,==e==Y=*=wi<>ZE>F>>zb>?>ٳ>>?2?? ? ??.?*0?>>d>ݹH>ҜH>l>U?>,)>5>>6>q|>->sU>d>UG>FC>2c>>= r=(=m==NY==p=l3j=U@=?W&=-= |= ="M<<8=>>R>)3? ??0&?Jÿ?Z?c?fF?f?d[X?_?X?SY?LyK??K?2?'?U?*a?f>o>%>k>qJ>/Bw==̭==a=X=3=s=K ="Ő=}u"0>_;>>#>X>>֑)>n>`=>Z?$?o?>?S?4?x>&>>|>>=9>l>M>`>(B>4>;>tD> `>u0>gЮ>Y2>>IO>7o@>%:>36>m==Q= ==X===i =R=>=,=!== 21=<<=D=GO=E =@r)=;q*=4=-"=%=wP====J=(yM=: =V4=|`N=~=R>>w>>+???)R?=h?R?\t?`l?_?\t?W@?Q@?K?C)?9?/=X?%m?:O?q?!>)>>];>zU>0%=I=D= =@s=H==~_=_uY=9J =Ó< <¾<<f E>5>eS>l>ݧ>R=>pB>>ڥ>Nc>#>>?^B?-?4d>"><>]>ݷk>p}>>e>DW>v>>>0>|>Gs>s>h>] >Q>AO>1R>>'>J>=邂=m==N=[[=LB=}=f=P =;q*=*7= =^=V=.k=eW>">ړ? yl?e?%h?3?E@?R ?X@?W?Tu?Pu?K)8?AS?8?2+?+$(?"W??_o?>z>Z>ht>>D`='s==0=9=d}==yJ=c=EQ='Ə= ̴\G>I>l)>`> b>A>>4>ش>|> P>>Z>> >B_> |>>ඇ>ׁY>pp>~>>@}>H>`>l>u/>>{>p>f/>^:>Uu8>L>?>1>>>r=4===`:=3W==}{P=e=N=9,?=)v=)== H= G=T=<F)>{>???!-W?-?8v??C>?M??O?Nr?I?B!?;~?4Wy?-{?'05? ??V?v>߽> > >z>S>}|=pl= =k=w=|=m!=\_=EQ=-ӫ=<Ք<<|8>N^>oh>D>%F>ō> >">r>>>O > C>V>>P>ۤ>ߌ>˿>٬>$>>x>>>>?>4>|>r4>j>c>\!>Vj>PVo>I>@>4>#ӊ>=p>m==.~==W=+==u=gz=Ou$=8=(===tT= v== u>|H>>S?q??%!?0?8?R?<;??M_?@D?>@T?9?4}-?02/?*?%3???5?a?, >>C>m>>V> k=B===U~=vDL=cc=RO=?j=+=:=<N>BL>f>F>>y#>p>>>9R>>Á>>џ>Һ>ϼ>K9>3>i>ª>x>2>v>->Y[>>>w >p>j>>c`>]~>YLO>T=>P >K>G>Aq>7! >'\n>>3=8"=۸S=D=ș=o==R=m=Rb=:Q=)X== F= ==< <`<< <?<<~%A>e>ny>`W?B?)?'Va?/`?39?3x?2?15?.&?+R?(?&*?"0%?h?{m?N?>>;>>.>V>==b8=X=:=vp=`&=M=9='t=c=M<;< >#>PeT>oO>t0>\)>>+>h>x>M>Y>>˄>ٌ>Ū>ê>>B>“>]>>o>p>Wq>s8>r{>f>_>\ >Z\%>W>SJ_>P>L>IO>F>Dh>@3>6;>(X>"{>Q==(===i=.==v=Y=?=+&|=ߔ= = ̴={<Ք<-<ݠ%<Ȑ <cNL>Zt>Э??~?3?%Z?*y?+?)?'8?$f?"F}? 9n??S?s?v?׀?A>츊>>k>>ZB>=.=N=69=ۧ=|w=b=Kby=5=$9=$<_i< 1<<+;ca>j>YP>Mqe>H'>Jg>L>K>H>EW9>B>@>>ˁ><)~>9>3,,>&q>#l>ۓ=&=.=Ԧ=\=(===@=aC=E =.=*=!=Y >r>p>x?%? !?Sk? n~?#?#u?!-W?h? ;? ?h?)}?????>AM>>9 >>a>= =L=r==N=j#=O=5="Nf= <<֤P>!>FTr>bQ>{N>4>H>`>> >(H> >,>3t>߱>c>I>c>>J>>ex>$4>3>m>Xb>Ec>7>>3*>7ȟ><)~>=H:>; >7>5n>4԰>3r>2I>0w>,O>"n>*> H=h= ;=ٮ=0-= =F=5 =J=iwV=Kq^=0=J==<>st>>C>>??]??J?$?ɠ?5???? ?? -?p>p>@>H>m>iK>( ==^=<==|=syS=Wm=:8]="@=h6Hh>`>5%>S>m B>o>>L>`>\J>#>V>>_>>&D>C>^>Y>z>O>1)>~>q>aLi>O0@>9q#>*:>$ŗ>)>.>0>/`A>,%>)N>* V>)>)>)@>%>b>"{> O== ==ʬ=b=H==r=l(=L=/e==w<]l$D>iW> >>I?? ????{V?`???V??>>މ>>v>>rĸ>8v>=ڮ=D=_"=9=}d=`&=@cC=&=eo<}<Ԍ{ F>#r>A1>Z`>o;>aF>$'>U>U>>n>>>4>>Y>G>?0>>z; >w]r>q>h>Yx>IHa>3*>!>">8>">%V>%ip>"7>!5@>!>">%5M>&f>#^>>#>h#==+=b=ǀ6==M==5=l$=I=*d=<<)<˴e<<<<|;.;"s;;&,;6t;C ;S;j";;;8;*\; <O<!k>TKP>"P>>.3>Xo>1?E??[?>>'I>Ï>މ>)>ܽ>Ӣ>M>>R>]>O>^=ь=0=4o=l =A=k=Kq^=*R=<<<<\3<x<]=Jͅ=U̺=e=xM==n=޽==e4=r=4>?>B>*>Dl>X8>f$q>pt>zd>>> >>_>~~>zF6>yu>{g>|">{>k'>j>gJ>^+>QH{>@>.7>a>z>>I>>>9>9>>!/>$>'\n>$~>4B>C>==vJ==_=M=='={=f\=@="Ő==P< <r;7;H;V;j";;Ғ;k;f<@=@ =v@=b=A=>3f>q[>>BY>>!X>ږ>>U>ٓ>t6>i>>nl>>.,>E\>r>:>y>_>$==,=t=P=P=x{=Wm=3i=<Z>>%a>6j>D>O>[V>h>r{>x>xX>st>jh>c@>c`>f/>j3c>k;>^k>]uR>Y>Q >C>4 >#F >>[>>)>>|>;>> u>>">%>'>#BP>>>=쐂=x==?=77==s=|o3=[D=5=l+<%\g<@2;ǭ;;;&b;";c\;C ;%>;r;b;;; ;G;%>;7;H;V;sq;;;<ѓ>N>|H>i2>J>>K>+>oQ>.>.>>>j>c>BY>vh>vG>>ib>6x>=\=6==Xz=t-=fR=@ ==J>> 0>>>&>7>M[>^>i6+>ku>f>\>T>S>Ws>[>]b>QO>N9>H>;>/$>!<>[H>B> >Ye>->uf>>3]>!S >"J>#r>&T >&>"PC>hW> }=:===i=i==m=v=n-=L=(.= g8<<<7<+<)QH<$<O;;; ;_;+;^i;>a`;%>;;b;;; ;Yk;#a;6t;D;V;w+-;S;O;< y3<[<"u>W>|K>\>>&>4R>>>>>y>T>>~>2>@>jBI>A> )=f=ā==*=M'=q%=N=)5= (+<,B<<Q<^;;;k;2;;; ; ;< ;k;C;< u8<"D<9> >>1>KB>Z_>_>\Kj>S>L8>JrI>Mx>P>Qh>A>:j>0>"\>>w"> }>  >q>l>>jG>"v>'3w>*L>*6L>)N>*yS>(]>">k>=s==ĭ==}= =Q={'=^x =:V'=a<<<#<$a`;N4;gW;Y;&b;4<*<%a>,N>UG>p>>H>>C>Ij>>XI>{>(>7>}>pj>\r><>;=|=˿==p=s=y=X.=4= F<<6>+>5ա>J >S̴>S>Mu>F>CC>EHT>F6>E.C>2d>)s>>"n> [!>>>x> P>Lc>T>&q>+>0a>37X>4V>4Y>3\>/?>'?>7>='Y=M-=v=K=I==9=kS=L_=)= ; ;6;$e;$PJ;2G(;@>;N4;gW;;; ;H<>4<*>"0>Aq>Tea>^>c*>c>d*>e>eݰ>es>b>]$>U['>E\>*yS> !o==D=8P=4U==~8=_=<-==A<ϩG !o>!>>8>F>Jg>Fu>@R>;>:c0>97>7FJ>'QB>њ>,> >>>m> q>>>&)>.o>2u>7n>;/>>_>?>>_>9e>.ǔ>=>i===F=Q=d=|=w=[=:8]=Y<<7<i<׿==% {=K=s}=1==V=C=o=#> >>%D3>+ >,>.n5>1Ư>4=>7 >6 >/|>!>ZI>==͔=G5=J=A#=9}=b{=@=#x=12< pm>>%>5>< >:>7g>3>0'>/3>-S2> l*>N>> ,>D>,>M > {>>$>/g>4>8>;>AQ>Ef>Gh>E>?;8>1>q>=g=O=C=ݾ=A#=JE=jX=M!U=,= H<`%>> >? >> ^> >5=i==(=/.=x==d=|\=` =@=&%}= U< 0<-<}=2=0= ==B= U=), =5 =E7=X=lBO=@===r=]==!==ZI=^)=t>5>a>%S>._O>/r>->*J>' >%>#X> > N`>>k> )> F>_>H>%+>0>7;>:><A>>X>A>Ec>H-_>FL>>k>/zR>F>=9=Ɗq====x{=^ZV=?="Ő=<<٫D< <f<`z<>+<&y< +<M;;l;; ;E+;?;NL;Z;E;/;y;i4N;b ;^;b ;j";|;;Z;?;u;;ʷ-;;< b<%c> h>:>3]>!O> C>>{>@_>V>%>)>&>1>>j>>|>(]>5ա>>>A# >>><>

>_>B[>ES>B[>8>(>,==^===b=h=n=P˼=2=+<<ȭ<{<;"s;;;"s;-;<;N4;uN;S;M;׿;<[<&J<<>+>>>><>Y>z>6>)>1>2#>,>%|>$>.>

Jy>O>N_>Hy>@J><0>;U>?>Ax>2+:>x>==A==.==@=cc=D =(.=G<{> >&>/p>^> )>>>b> L>-p>8]><>;!>8J>9>ED>Rrc>\>_>[0>R>I>B>?>@d>@0>9">,N>>|= u=9=t=m==wx=YYW=8=)=e<#D,< ;;ڊ;;;;;Z;a;v7;v7;a;v7;;; ;;NL;&b;N;3;g;^;ڊ;=;;ǭ<͙<<<%\g<=UC_> 4> > 4>> |>7>z>2 >A>Ii>K>Lq>PeT>Y>e_>m>oh>j3c>_>U>L>HZ>F>B>8>(L>b=K=_=Ųu=z==F=nK=O*=.=N>>>Z>,>>"h>CY>Tea>]>bMZ>gߔ>o4b>x>n>>a>}r>sY>j\Z>aA=>Z3/>T]>M>?>*>==Je=='==v=V4=5=/=6=@= X=%=#4=0T=@cC=S=fp=t===6=q=0=s=,f=y=㋽=:=Ž>Q>>6> O>@>+>KB>[ *>eݰ>l>sG >{>>V>>>>{ >sp>l>eLv>\>Rr>BcJ>(> m=-=y==\@=b=fp=BI='"=};k;A::K":=:1:B:C:wV:h%:h%:h%:e:aJ:aJ:e:h%:h%:p/:LO::;Yk;=s ;kH;NL;*\;ڊ;<<<{<)QH<6?=1====5:=E8=M=ٕ==c=k=d=>9>> w>r>3>Q>`iB>lOX>tf>~g>>z>b>>o>>>~v>xDS>pV>e|>WQ>A> >[====d}=u#=P =.==;C ;J{;S;e{;uN;/;;;;;;3;y;c];Ѳ;H;2Q; g;<O< +<)QH[> n>a>'k>

U%>c8>p">{ԩ>>:>x>m>C>>U>>*>f/>x>jBI>V>:>=ȅ=B=s=e=N=`E=8= =<+v>^> ~>4 >Gh>[hC>g>sp>>:~>/>S>k>a>^>>->>Z>{Cn>iq>QW>/\> =ꎟ=ȹ==uE=rD=J =&= d<8;1X;<;J{;[=p;k;;";a;NL;;$;M;*\;%;k;Q;};tt;"<<q<0v==⎅=+ >> tM>>/|>B[>P>d">n\g>y8>ˬ>p>$>>>E>>^>݀>>l>xZ>aU>E0>G>0-=k=0=J=4=b=6:=u;2G(;@>;MF;_;q:;+;i;Z;;;N;9;3;;;c];;=;Z< b<"<=<_<#2<'<V>r>-~>A*>Q9>[q>q>zI>8>>>>>>>>>y>>f>pl>U>26f> ==D=c===U=*7= <">z>(1>Az>T,>`8>i2r>e>>~q>>>j#>۷>v:>>>(>> >>~!>f/>F>>r==L=a==x{=M=$=6< 1+<#V< ;;;NL;p;D;%>; ::K":::]:wV:p/:h%:h%:h%:e:aJ:V:Re[:8TD:!z:H: 9~9۴9l99 9 9uŰ9uŰ9uŰ9Uq9 99w9: :%:Re[:h%:LO:=:d;G;<;a;";8;3;;;a< <  <6Y=I= > P>l>:->S>c>o!>wz>.n>l>A>>>B>>6><>">> >>w>\F>7! >_==M-=e=U=V=r=EQ= p=<͟<<<;+;Yk; ;:mP:mP;A; ;Yk;$PJ;2G(;@>;Ki;^i;k;;";R;NL;8;E+;!;c; ;M;;Q;!;<h<<7<)QH<2d<=>e>1i>LE>a>p>|Ƶ> >L><> >>>>>>R>>>F>->sR9>U>,ű>T===rP=v=+==j=?*v=a+<"< ;;;NL;q:;J{;0j;$e; ;:d::d:;t:;; ;+;7;G;P;d;uN;/;;;;&b;;T;3~;N;;;c];޻(;|<7<͙< <<@<u<&J<,W<2)^<8<<<=UC<<<6?<+<!<s<s;;;7x;;}r;MF;0j;:d:n|:1:C:h%:aJ:Re[:J:4:-(_:)o:!z:!z:C.::Е: : :x9'29w99:9 9uŰ9WM9WM9WM9I9WM9WM9WM9uŰ9 99۴:c:!z:Re[:h%::=:;$e;<;^i;;;;3;Q;<s;<@2<"U<3o=@=O==x=& => >"y9>AQ>Z>m|>}A>>> >F >>c>Z>U>>>->>H>6>>pt>P>#BP>ر==`=_==N=_θ=4P=<+<(+>/c>O3>g?t>z3>> >r>>?>Ȗ>>-!>p>>S>>>$n>)>>l>J>=M==v=Nt==w=P˼=)X= g8;6t;C ;O#8;b ;sq;/;;Z;};NL;v;NL;NL;<;[h;T;;;D;;k;H;;ށ;J;?m; g;;;:;Q;H;2;M;8;i;gW;D;(;::=::wV:h%:Y:< :: 9~9'29۴9۴9'29'29'2999'29'29۴9\9l999 9 9uŰ9f9WM9WM9WM9WM9WM9WM9f9 9:9w9 d: :< :aJ:s ::K";G; ;7;N4;gW;+;;;N;y;2Q; < \<@<*<9׋>:>[>t->\>>2[>>k}>w>#>X>>&>c>c>(b>R>>MD>>i*>D>======e=>h=J="<͟<<*;<;LX?;b ;uN;;;E+;;y;f< n<B/<)QH<<+[T>>F>fޢ>>q>5*>kI>>UL>{>qG>”>k>>Y>P>E>->>>z>j/>Dl>====C=x=Q*=-=P >)>Qb>qC>T>C>>>a>8>8>ٟ>x>>m>X>>>=> >l >v>q[>L;> ?==+=j=n=j/=@6=!s=+<*<5<;l;;}r;C ; :mP::=:::::=:K":ͽ::; ;k;;0j;>a`;Ki;];gW;sq;}r;}r;}r;w+-;q:;j";gW;i4N;k;p;sq;uN;sq;p;gW;b ;V;N4;J{;CS;<;2G(;%>;$e;y;A::':B:::h%:aJ:N:C.: 9'29l9:9 9 9 9 9 9 9 9 9:999l9l9w9w9w9w9w9l9l999:9 9 9 9:999w9۴:x: :%:Re[:aJ:h%:]:':K":; ;G;%>;6t;B;LX?;_;|;R;!;2;ó<<<- >9>`>C>>>>>>ԏF>4 >:>ϛP>Q>ʻ> >>y>>>>>{G(>W,>#(>=I=ˋo===c6=71=<|a`;Yk:d:K":B:s:T:T:::=:K":::; -;k;;0j;=s ;J{;U};_;gW;gW;gW;b ;];U};O#8;N4;N4;N4;N4;LX?;Ki;J{;C ;=s ;6;0j;%>;^;k; :I:::=:::g:h%:aJ:Re[:4:Е:c9۴99 9 9uŰ9uŰ9uŰ9uŰ9Uq9 9 9 9 9;99l9l9w9h9۴9۴9۴9۴9h9\9w9l9l9l9l9w9h9'29:c: ::4:Re[:aJ:lvq:]:T:=:w:; ;6;$PJ;2G(;>a`;Ki;b ;/;;*\;<#<e<- >)->RH>tf>>>S/>>V>15>>>>ثA>>P>ϝ,> >>A>_F>V>>o>_7>.2>J>=ۓ=E8=V|=d=4P=a`;<;7;7;6t;2G(;0j;-;%>;;6;; ;G::::: ::o:wV:h%:aJ:V:J:!z: :29۴99:9 9Uq9uŰ9uŰ9uŰ9uŰ9uŰ9Uq9 9 9 9:99l9w9h9۴9'299 d9 d9 d99'29'29'29'29'29 d:2:c: : ::-(_:N:]@:h%:s :o:T:=::;A;;6;%>;2G(;C ;S;sq;Z;q;<%<ܲ ?>E>kD>>^>>O>W>Ip>ٮ>ć>;>>>ܵ>U>׬,>>z>zo>>+>$N>^>_N>1<>q_=@+=A=a=h\S=4=ͳa`;=s ;;g;6;1X;,5;%>; ;ݱ;;6;Yk;; ; ;:d::':=:::C:p/:h%:aJ:V:N:-(_:: :x9۴9l99 9 9 9 9Uq9Uq9Uq9Uq9 9 9 9 9:99l9w9۴9:x:c:c: : : : :c:c: : : : ::C.:)o:4:N:Re[:aJ:h%:wV:LO:T:=:K"::; ;|;^;-;<;Ki;j";;@;%5<a<<0L>0a>Z> Z>>п>W>}^>>>И>h>l'>)>><>vZ>R>7>>>L>0>p>yI>Uk>&b=1=Q=`=(=jt=4= y<ܱ;+;,5;+;%>;!P;;Yk;; ; ;;:mP:::::K":=::::s :h%:aJ:V:N:0:C.: : 9~9۴9w999:9 9 9 9 9 9 9 9 9 9 9 999w9۴9:2: : : :H:Е:Е:Е:Е::C.:!z:)o:4:8TD:J:N:Re[:V:aJ:h%:h%:wV:(:T:K:K":S:d;;y;$e;(;8n;Ki;j";; ;ڊ<M<J>EO>l)>-|>> u>?>˺>ͩ>ݬ?>>?~>>!>8>뎢>玕>U>щ>p>>>> >es>=|\>^=p=Ί=1==hMn=2?= :$k>TtF>x1>>¿>\>$>܁> '>W>F>z.>>>%>>ⶍ>|>l>y>r>>/>mW>GF>H=6s=;=^= ==_=*=-l<<`>5t>`>T|>n>0>e> >'>>y">>Y>7>>5> e>ڔ>,>>X>x>A>w>O`>>h=P)=ʳt=ER=G=N=O΄=!<-<<#2>G~Z>k>d>>>[>ͨR>(>%Y>и> >~>u>a>/>>>ŗv>A>[>>>aB>/Q\>z= Y= =d=G=d=l=;S=9<;<;P;w+-;;;;)<͙<S<)<<%>Wd>w?>+>>>>>q>鷒>>>]o>L>>⧨>q>ɛ<>M>Y> +>>w- >N˵>==ΨU=='S=5=}=U=*G=B<̠˼>8>f>v>N>K>T>.9>Ҡ>z>\>> king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama5200/general.ndft0000644000000000000000000037522711744305674025712 0ustar rootrootTop5200 General case (not Gly, Pro, or pre-Pro) B<3044C4C4 *;;>;;];;E:)+::o :(19: 9ߑ99Y99&99\!9D90i9ׅ8}8<88r$P8F88 7\77777r$P777u77i7\88H88;8Q\8\!8l}8}%8Se8H888,88Y88888"8c8#9Se989 U 9 @9 U 94m9Se888^8888,888ׅ88XY88,88i8<8]L8˞888$P888$P8c88`888i8,8XY8u8r$P8Q\8*8H8 8 8u8*8Q\8w#8ׅ8Y88}94m979"XY9-Y91z95<96q96q96q96q96q98[9?<9D9N^9V09c 999e[9}99wP999999`9: :"f:A:Xd:r$P:::":h::C;:@; ;c;7={;\y;:!;h;;۸<q]<<*Ν;c";E#;;\;};<h<*9%99S96q9 $8$P8y888g"8K8*8H7%7!777\8880i8V08r$P8Se8V888i88888b@8c8%9 9wP9 $9%9-Y9296q999@9A9C]L9A9@9996q9290i9%9 $9}988%88$P8$P88e8%8%9Se94m969ׅ9 $9"XY9%9)9a9-Y90i91z91z91z9291z91z9-Y9)9a9"XY9 $969Se8}8^888i888^8$P9V9&x96q9N^9\!9t99D9U 9&9&999e[9}979)9999u::h: H :3:;t:?<:>:=l:D g:V0:S:6:Ŝ:ơ::; ;;#J};1d;Cc;S;j-;$;/;5;;< D<# <=yjT;<+x<(hAT9F9D9G}9S9c 99}9x9,^9\9ߑ99u9%9999X:k:}:':A:WPJ:s::%::'w:t):`;; ֬; R;?; &;;#Α;@.;\y;w0;;?;Y; ;l;;;;<k<u<4Q <^1R<<====mN=Sd=:+K= =Q= t;:$:4":::::6KV:3:3:>:S:rj::Ҟ:D::Ľ::;L;+;G;Z<;dP;dF;_;a;n;;I;;R>;;&;Ɩ;;<<u<#<;<`&T9x9&9db@9G}91z9"XY9}9Se8$P8b@8˞88y8y888b@89 U 9 $9%90i95<9@9G}9S9`A9t99D99979$9x9F9{99I9I99{9F9x9>9799Fc9%9&9U 99U 9@9.99'k99999XY99979799>99)99a9{949"9k99}9>T9^9w9w9w9Ͽ(9ͮ9ͮ9N9o99 99ߑ9#::6:7S~:PO:j;:6F:P$::p::<:p::7:2::g';J; ;ri;%;@;b};;;,;;;;;U~;g; ;܅;;c<S< @<\h>PQ>> =J=ե=]=={|=Qs=LBB=(= <<,T9S9\!9kCH99D9.9wP9h9jN9k9999Ͽ(9\9Ͽ(9ͮ9>T99m99,^9999F9x9x9x9)9{99k99}99w9w9w9\9ͮ9>T999>T9ͮ9\999`99݁899:J:k:z: : ]3:m:u:e[:m:u:>;:::&:4":G%:_9z:z:D:p:H :::*::y:1F:Ȇ:t):; );;1 ;D9m;Q\;_e;y[;;$;eg;/9;p;;^&;^&;=;ݢ=;/<,<b</<%)E<. <; lM>4>!>.9>8G>9m>.>0>[=۝=ym==wB=gMP===<< T9D9@96q95<9291z91z9296q9@9G}9R9Xd9`A9p9989&9}99{9k9.99ߑ9"9j96F:J:J96F9#9CH9Z9ߑ999\9>T99}999>T9\99݁89Q9}9u:r::t:t:k:c:::::[:t:S: <: : U :}:g:&x:5C/:A:MV:T7:\:c :dM:dM:gz:l:rj:}::h:u:}:H :::Ί:9z:@: ?;; R; );n;$;;3;PE;l;M;p;;;;N;9>L>,AU>=>L>[0>d>`>M>2>_K=A=r=]=x=~;=N='=<T99:J:S:m:::#s:#`: H ::ͷ: :96F9j9-9u9Q99Z99j:J:k: :m::?:':/A:3:4":4":4":3:3:3:4":::BU%:G%:H:KF|:P5:V=:i:z:$:1,:6:::E:U:9a:Ŝ::U:KV::Ȳ::L::bL;,E;ۓ;;!f4;+;2;:;AL;G;Qaf;dM;G;;;-;&;{;;;ə;;܅;B<m<5<B<$<*+<.<3X<:$jB>p>;>*e>=.o>Srf>koN>+m>E>>$>j>H=>'^a> f=q=[==Nw=] =3%=<+<<};:ׅ:){:8:F:P5:V0:cZ:h*:mS:o:p:q(:r$P:t4:z:::]3:A|::%:6::H :::Ȳ:Xr:::;X;;;;; ֬; );ۓ;\;/;!';(P;0i;9M;Dӄ;O;;YJ;g;s,x;z;ih;?;;;;r;k;;ؚ|;b;l;n<< W<<+e4<:$jc>Ѱ>"=>/ ><>L2>`,>vZB>B>>>P>{>~}>X>2>=p====h)q=<=ϑ;Dӄ;G;Jj[;L;M;O ;PO;S;Z~;cD;kA;sn;z;/;:!;m;I;E;;U; ;J}; ;;2;e;ѐ;AG<< @< 9<K<#<3dg >!>1>>j>K>Y\>k>~bf>ʼ>lw>)>.>j>q>G!>a7>9=>>8==.==l:=C"#= =n<)< T9N9ͮ9\9w9w9w9999PJ99m9Z9j:[: U ::7S~:Q\:m::e[:::m::b'::4z::I:P$:xK:g:])+:U:U:])+:h*:yX:2:%:wP::-:o5:c:c:w]:C/:C/:[::Ɏ::`:;7;?; U ;};;;"_;,;;9y;M*;^GU;sB{;u;:!;;;?;L;f;p;e[;E;.R;;-;5;";;d;t;;g;;w];;;;^;I;<E< V<<%<<^@<)_<7>>%}1>;Q>M >[K>h >st>Cf>g><>b>Y>z>6>O>>\F>5>T> =׬x=7==h=C=#=.J<\;M; ;J ;^_;/_;A|:禽:::6F:M:$: :9t699u9u99CH999u96F:K=96F96F9u999%:J: : <:>;:':A:_9z:}:::2:o5:u:':ڔ:$::}:::::::|+:2::m:::(:ɺ@:)+:@:r:A:h::4:A:t6:;?;Y;c;+;8;GQ;T7;b;n;x)7;~;f;A|;8;;;Od;;_M;;;-+;;2;;; ;;(;_;߹;[;=;>T;};إ};`3;3;Y; f;e<ɝ< &^<x<S<[f<"_<&~<.+<: >'><}>S>fs>udU>?>y>>)>F>>D7>O>>H>>QtQ>+b>=OZ=$=9==\==6=!9=<盼<;:N:V::Fc::ŏ: @: :m:>;:/:2*:G:eZ::-:t::Ȇ:$:I;J;|+; .; ;1:::[::::::<::X:w:/;1;.;;%;%; ;'k;$; ;c;& ;1;C];S[;h;7;; ;o);^ ;9;;;B;b;a;;O;߆;(;;4;};n;;6;~^;h;+;3;;;E;@;;;{*<< t<,E< <<T><n<#<)q<,<.ո<3~<;0>+lm>?L>U>g>u>>I">t>9>?> >,>i>t>{>I>xj>G>"n>=+=;==r=MJi=2.=8=s<翁:Q\:n[:Y:p:]@:Q::;;;;!:.;& ;&;#J};x;Y;:ܒ:ܥ:V:Z :ǩ:N:`:@;$;;+;C];S[;\7;\;WT;RS;O$;PY?;U ;cD;sX~;;]; ;;N;w;̅;@;߆;};_;N;~<ɝ<h< J=< < m< < < W< m< {< <e<j< < .< .< s<ن< < < $<%<z<G<<<"p<(A<.W%<4<7X<9<:==z===q=ZX>?>-d>BD>X>N>m2>}>u>R>d > >Y>ݾ>Z> F>>Ҝ>|>#c>p>D>%>@=փK=Y=/=bK=@'='H=7t=<<⺀:AL:F:MV:S:[:c%:h*:kb:kb:g:c%:Xd:S:O(:P5:T7:c%:y]e:D:g::]L:$:; ]3;aM;(W;5?;C1F;IJ;L;J(Q;B?!;4;;&;;{^;;7:6F;u;`;O;&;B+;^_;~p(;V;;1,;J ;;;;c;x;C";;Db;H;u];u;<k< r<µ<<< M<f<#<(W<+C<+{7<(<%<%O<%vP<%X<$<#<#<#<%4F<&<&i<$G >>/>DP>XBn>qLP>9>\+>>>W>>̥>9> >>H>&Y>&>6>n>CK>1K=N=D=T==Z=9=G=l= A<<,<4>{f>2>N#>e1>yt>B>l>l>>b8>w>`:>$>@B>>>.>w>E(>>n('>C>V=e=&==P=XC=5ww=(=BI<$<<2 > >5>TD5>wV>n.>'>">%>>i0>[>d>^>I>9>>̩>>>>7>u>G^>!]C>I=f=+=\=W^ =2=?5=F<ث<<H:-:::A:z:(:::u::|];P$;Y;$~;7={;N;cD;|_;^;F;6; M;&7;;Zf;v;a; ;;0;;R;u;,;W;K;N;ڔ;;5<[<k<< e<<< 2<*6<25<8>==Ȃ>w|>&4->?\R>Z>||>R>>`>>ʹw>"^>ȓ>Ƭ>>>թ;>>x>>2>>ۊ>>>O]>(IM>=)===V=0=<<.<2,H:M:>:k:k:$*:]@:-:(:K:):u:Ȇ:Ȇ:Ȳ:N::Ӈ:<:ߑ::@:Q;:!;;;!;,;>4;QKc;f0;~+;;&;S ;;,^;O; Y;*^;ʡc;;;hA;_;!P;&7;;¢0;u;ޒ;<q< $<< <%p<+<25<:?]+>>,5K>Io>mNn>>|(>6>Ė>҆>L>->⏂>>ك*>}>1 >C>c>5>> M>Ӥq>>1*>>Z>/> N=ޖq==QQ=U=.L=<<<`<e4;NH;\y;n;o;;);$; ;9;9;=;vC;ޟ; ;6;GU;,;2;Ί;֕.;);<aA<ܓ< <z<<< I*>A>8>Tp>|p[>b>w>>ذS>>팰>>.>ʎ>*v>>t>m>U>o>>^>E>n>x>>n>^s>4w>*==C2==Z=U\=+a=P <B<;e;߹;;;v;Sq;8[;%D;; ;U:m::::t)::::ߑ::(::::;K=;; k;\;M;%;,;4;?R;K;V^&;e>a;sƏ;G;:!;);jB;;R;;з;6< <R<>;<<ZY<|<c<F<r<q)< <.<>;< <<$<0i;<< <<<<|> u>A=>gR!>?>>>4>v?q??:r?s??~U>>>>!>w?v??4p>>8>!>>%w>\>5>7==uM=6=Q׸=(= <<ǖ<>A><92>j>>m>s>ߪ?h? x?a?d9?Y?em? -? b?Ug>2>??ʢ???D>b>׉>i>/>>V >2>L=J=L:=i=L=%= <;1 ;*;&x;"_;y;;.;A|; x; ֬; ; L;a;%; ;O;p;;;(6;6m;IJ;Zh;l;} ;;;p\;8;;;; ;;II;;;<O$<$X%<85 aP>-G>Yo>_R>?>5>?p? ?? B??P?/?}M? ?o?J?0????%> >>;>0>S>ux>KZo>)\> =V=v=&=Eu=!=ǣ<<*p>"y>E>u\>/>RY>?? ?*2?t??P???C?v?T?K>Ć>3?>?K >No>5l>0>Bf>wk>n>e>>56>7==˕==x=;==hT;F;>`;5<;-;(]@;$;"i;"_;#v;$ָ;&x;(P;,;3;?R;PY?;dP;~5;;r;:;?;p;;,; ;=;P;;;,;i< XP "<(<2<ƙ< >8sa>bVi>">_>}>? C?B;?C??????:?-?"?6>;>)0>>>>>>.B>>sb>S->,> 5=i===hM=0 =<<2<`<<;z;E#;w*;f0;\7;Wa;WfM;WW;V3;S[;M;Eũ;<|D;5C;0;.7;-;--;- ;/X;2;8;A ;N;]H;w ;f(;3;E;%;<;;uP;;;i;yj;;;N=;0<J<z<3X<<I<LJ<<p<+I<==]C=_z=H=Q=M>G>7>e8>}>1>U>? ?g?l? ?"?!U? 1?>??8?x?j?>>7>G!>ȷn>u>i>e>_>qy^>Ic>&Ѵ>z=%=%=6=v=J=c=<<<a;fr;i;k>;j%;dW;\;T;N;H;C];?~;=r;<::;=,^;?R;Dӄ;Jh;RS;]k4;p;;L;0;;W;II;`;~;¢0;.l;ȃ;ơ;-;,k;< <'D(=Z)=ű=g='=.=N'=m=j!=v=o=|==o;=z=Ē==cq=vp==i7=N%*=5^=\=u<ք<(+;<ن<;Z<<;< s6<&<( H>!q>E >q[r>>?>ڠ?*p?%???"n?#n?"E? ??3S?o?U?>T>Ŝ>Ҧ>Ɖ>W>v>#>Q>z>S%>1 >==Ȳ= ==iֱ=A =w<_<<<<s>>R==:=X==/==U =m =K =.=H<<e<*<< -;;;;;<,< .< M<.+ S>,&>LV5>u{> >}>B]?1????!O?#r7?$ ?!???C? F>><>>>‹%>>>q>>c>?> &T>/l=2=6===]y=8=[l<<^;?R;C?;F;K;Q\;V:;_O};l;~D!;f(;ZY;;ɪ;p;;2;/; ;~;h;;Ӈ;<e<- E>> > F>>3>>T> D&==~W='=»=J==ji=B=!ф=n<4y<<>}>2>RE>yb>'>h>`? ?H?G?m? 6?"?#r?!!(?)?,?Z?@>'>>~>>K6>J>>v>rNF>Qs>1M>/=f=l=C=*K=rg=Ns=./?= &>">n>fA> $>u>/y> >>>#>&\>!>

==&=]= w==_=44&==(<η<=o=1?=X}=A=ȩ=H=>>8>Zk>w>n> >%? w??0??y?!?"C?M??8z>->>>">o >W>>wm>Xo>=n>!ߞ>O=s=n=[==H=`6=@'=$=QQ"> %> >4>?>^>>$T>1E>6S>3i>2>8&V>;M?>4ٗ>%>>p==]=X==QS=$4`=<'j<<uT >/>>>dW> >>+>v? OL??q?15?}?L?L?q??)?>">֭>²/> >R>!l>>wn>[">C>->=====v=SI=6=(= S<<Ƶ <C<;c<6<3l<]{<&<T> >K>V>d>H>Lw>%UK>4>G>P>O>NkU>T>V >I>4j>K> ==̏M==۳=C"=39gn>$y*>GG>mL>T>">˶>? O????3?r3?{?gz?Ţ? $d>bm>⋹>h>>6> >>uc>_5>G>5>">=w=c==^=oeG=L=1== xnE>6>c>tg>x>>{>#X?>)>2a>>>N>dt>rV>s.>qH>s>mL>Z`(>? >%O> =E===r=5=<$<< >*>Pq>v >-Q> >X>????WW?T"?z?zp?ʪ?F|?l>NM>>[>Z>'>>{>d6>M >9>*> > ==m=b=~=k=J=2N}= ?=;Dz;IG;Q\;Y;h;yGb;;?;x;KJ;A;q;;Ŏ;ڔ;O<<0Foň> #> \>|>v>v>(f>3>AkA>Ry>do>t> >.>>;>g>{ >`;p>B=>&>&> =r=5=}=]=% >/1>W>|>x>k>Ը>?1?l?׼???k ?5C?_{? 3H>1W>/>4>>>>"A>o>V>?`>.6>#k*>I>d<==/|=r=k=kl=K=4ȼ=#S=<;c.;gz;r$P;z;6F;};;s;c.;PY?;:;'U;g;; ); k;;Y;/; ;&;,;1;6j;<$7;D;N;XXr;j%;~p(;cN;; ;; ;;ކ;;.<<+N=Px=_=k=u=~e&==Nw=ع=+=lx=ǰ"=1== >b>]> >>S> >*2>6<>GAb>^Z>vY9>d>>>s>>>>Z>`K>>_>tC>"O=Z=b=~Ͷ=D8 ="=mo===> >1K>Z|\>>l>L>  >៚?֊? ?9??T?&?Q? T?`>5>>J>>O>>y>c>K9>6°>(<>|F>>=="S=z==l%=L8=7h!=&5=T%<7<ѳ;Kʐ;Zh;pV ;ߠ;;;VK;l;A;1F;O;9<<'#"> Y>dS>>->&0>/>:>G >[A>wc>>_>>>%>ǚ>>S>>_>J>5>i=P==d=Y='<_a;P;>;<X< .<,<qi<,q<=o_>1O>V>>>>!>ܳ>?C? 3=?_w?? ?? >>>>V/>)>Y>>m>>W>C>3c_>%C>> I=[=,=ƽN===o=PH=;3s=(̰==r<;<-<;+I;:;:p:::)+:::;); ;;;z;Y&;;$;-p;:);M*;^p;wM;;.R;z;;r;;ۧ;<<##<dd> >:>I>"E>+f>3>?>N]>^>t> >>W>i>>>f>5>,>>X%2>(i>=ʦ=+=m#=8= {<٢<<, M<<< \<p<!<N<< <<<%<2gA5>2W>S >{)>>~>C>v^>>>u?? ?x? {? f?>>]>>>U>'>z'>cN>N>>8>1 >$`g>>=I==ʃ=Vu==we=Xh=B=.0==,_!>>L>%!>/>7g>@>>PH >gCV>ګ>4>%>J>@o> c>>z>Y_>&> >zF@>Dcc>|=W =d=@=H߀=<雈<<+P>|>2b>P>x>>>Q>ϩ>&4>?f??]u??>O>ݚ>G>>߿>>>p\>[>H1>94V>->!>>f==Ë==}=o==e`=MK=7$=)2=< > >>$e>1}>F~>R>g)>>>>>:;>؏>>]>Ў >W>}>(>Z>(F=JR= p==W{="a<;q)>>3>Nl>t>2>>>*>~>z>Z>*?e?I<>j&>ҟ>F>]>>:~>>v>em>Tw>C>4\>)@B>>>9>2==N=ҙ=q===w=\s=C=76=i='E<<@<[;';2;h;f;i^;F_;(2;;{^; ;Y;^;r:ܒ:m:h:(:::H::6:Fc::::u:z:::h::;;O;(2;@;WfM;st; ;C;n\;4;>;< Q<M<7 >$> k>> n7>/o>>t>J>W>k>>>\> m>ӈ=>1>K>g> >Ҩ>>>h>6̪> ==H=`[=&(< >!>7&>P>q>ͯ>>w7>f>ҼF>!>t@>yS>>>뼆>b>P>>>R=>0>mV>]?.>P7>B>3>&k>>r>i=J=h=S=%a==9==j=P=BL=(q=T<<IJ;>> 5>Y>?>$[>>0J>@>P7>^7>n>ę>t>P>5y>[>>@>>>J>1j>W>u_,>B >ps=e=H#=iT=)<=K4=^p=w=o==^3=Ӭ=&i>%q>:!>S>o.>R>><>&>>J>\}>l>M_>k>ߞ>+>3>>L>Y,>j>i>W7>Ki>@>4>&Q>l>p> M>=A=YN==}=E=p,=sq=Z=M,%=7=.=:;<ח!> >i>>"H>-Qf>7]>C,>TF>gq>zծ>>.H> >>0>>v??Z>p>3>>>>O/> %=ꀛ=>=qB=1)q=<%<}k>%Z>;K>R1>k\>>O>>>" >ɺ>>’>+>>5>A>z>m>>Q0>(>f>U>J>A>7>+5>>>>> ==F=K=Y=~R=zȜ=b=[d=F=-=%<%<ݓ<:Det:MV:WW:p:P$:ri:u::$P;{^;"_;: ;\ ;);;;эm;/R< <*> $>H>Co><>"y>)>6g>B>JJ>Ru>cG>}>KP>j>pf>>@>?fL?zU>,>DB>В>>3>d>) =o==y)=4= <)<<_D{<,;< R1;;8;'<2`<u<<4ie>>5>Iٍ>ay>{>a>h>5>s>=>X>Ӓb>>і>_>>V>>>E>xo>d>Z!>Th>M8>A@>4>*+->$>#>|>>8D=d==DI==\=n S=l=W=<=F<̐<<<9X<k;;Ҟ;n;3;r:::,R:-: :r$P:Zh:G:4"::u:S:96F9u9%:K=::k:8: <: :m:>;::& :::S/:xU>:A|::I:}; ;;:;b;1;`;$7;k4<J=Y9=й=n5> >ڡ>&/>%M>.>4>8ti>@~>OV>[>]mE>`N>o>>;9> >9I>m>?|?J?r>>>>>y>4O>MY===3p==H>>*>=>S~>kd>>v><>*> y>>ʎ>50>ʜ> >:>E\>VO>>>zH>k>f4>cK>Y>K N>?a>8>5sV>3V>,Ĺ> %>=y==Km===k=|=c¨=B2=j<Ϸ< >Ħ>,3;>6>>@;>Jp>P>S>\M>oDB>|I}>{A>y7>!>m>>>>f??\?G>2>>t;>@[>>?E>=^==5N0[>>.<>BL3>[>p6>m>>f>>*>*>Nj>}>">l>>>5>>?c>}ف>wL>px>b>Q>HH>EJ>E)>Cj^>;Ð>-->gd> ]==!=3==$=p=d=>d=T99ߑ9:c:>;:6d:c ::::;U;U;KF|;ih;;$;d<m>3,>E)>UvS>bȚ>m>tM>u>Q>e>>?>BE> >'>>>? ?~?$> v>>ά>>=+>N>>=+==5<֑<{<\<9d< ;; ;r;C;; ;F;_;$7;ػ;c< I<%S=====J> ^>v>//}>F5>^>r+1>R>l>>.>!>Ê[>ʙz>P>>.0>Fz>>>>>~>|>mC>^>WUz>T+>Qmp>J>:>*!3>@> =ꂫ=6===|m=V=,l= >.L>MA>fb>{>'>>>>>G>C>Z{>>[ >ȸ>B>F?Z0? ? ?>.j>>>ݟ>Z> =$=B|=1FV<8 >+>1_>H>^K>tx>>9X>>)>U>Z>>Tx>>xp>>R>F>>>ie>=>z>r>j>b>^v>W2>I>9j>)[n>§=4=(===e-=;Q=8<0<;G<<.=S=9=_==>)>Pa>F>b>ή>T>>H>X>>8>V>v>NV>ԥ`>g>?? ާ? X? &>Z>}>c>>^>)==*b=8<4<~E>i>.>DR>^g>y>ҝ>M>3>R>B>>Y_>>>t>>>>>~G>>G>hC>V>w>n`>f>ZU>H!>2ә>'!==Ǻt='==@=w<<>F">|>,>ۥ>z?-? ?{H?Z?\S>0>\\>{>l>n??S? Ѝ? ? ?kE>v>j|>!>f_L>0>=q=R;=<(=%<_<===qV=!=5=L6=ePC=·=_=='=M>\>*V>GZ>g>5q>Z*>>G>E>Co>>>>?>E1>Z>>\>n>}>l>{_>f>\|>c>>W>w>g)>Oq>3>r====oЗ=Z<_L<.yT9:}:@:y]e::%;?;2l;~p(;~;C<*<<)>4>j??J??#?$?$h:?!d???c? RV?W? ? k?u?? N? Ɨ>>X>>>=>7=x=p=h>3>UYo>t.n>6> >(>M>>>ϓ>̭:>~>H>>ɑ>>>L>d>>>}>:y>:>iթ>Ln>*>=B==v=B)=>|~>B? !?#?(?,?/O?0[?/?,q?)hj?%?!FM??u?? p?-?tr?x? >3>ۥ>>d; >~=>=='<M<< ў;̅;);ׅ:N:u:V0:1ҫ:g:}:?:6KV:T7:z:%:::; &;y;: ;db@;MJ;ǝ;;;$<2`<>;<'*<5<;<<M>9m>WV>~>>Y>ϫa>ۛ7>>>>Ш>C>Qp>1>P>\i>>B>>>B>NS>)>{`>]>= b>=ꔎ=Pw=|=A49=AB>E? s?%?/>?7h?<>e> 2>/,=?=e=+$<܆<#7<+9-;U;f;:H::2: <99A91R99r:z:::k:_::2:-::Xr:;,E;z;& ;B);f;;;;F;Ҋ;;9;W;H;EU;;;vC<[<J>8G>dց>S> 6>ˍV>0>f>5>>>ۣ>>>Ӷ>>`>@4>K>Rq>ʉ>%d>lI>HJ9>&>=%a= =A=p<٢ >/'>a?&r?3#?>G[?GL?N[?O?LP?E?>c?6?0?*?( ?'}?'RB?&F?&f?%r?!Q9?{>u>>9&=(=H]=+[<<<.;;{;y:/:yr:!P199w999Y9*999`9:: :G%:h:::):a:>;:x:Q:":1_;z;0ʃ;L;_ӑ;sX~;;Ur;(; M;9T;+;$*;X;;x<L!`>S>>>>hk>i>m>>B<>5>'>>Z> >>։P>BB>>>K4>>}W&>Q>**> =%=?=Jm=b<[4#><&?#?3?BO?P?]#?dx?aN?X V?M1?B?:[?3!?/M?,?,J?+?*N?(?&??q?B$>>Fq=bV=W=#R<‘;9ߑ9,^9x999U 9U 9999Y99PJ9:S:Fc:: H ::: H :5I:T7:ze:e[::>H:et:Xr:\:S;BI; ; M;z;+I;Q};'^;&;b';s< p<5'>B>ò>O>S >>{>XH?? ??>>_(>1*>Ӡ>>>>>X>.3`>&=G==R[=<<-<>;˷;X܅: :wP:I6-99989V096q9"XY9Se8!8<8,8H8r$P8F8H7\777F776!6i6i6i6i7777F7r$P7777\8 80i8r$P888$P9 $9=y9g"99>T:t:D::p;g;lσ;<epHI? ?-'??I?Q&?e@?t?w`?o ?^ջ?O=?C?;X@?62}?2~?04?/6?-?+??'j? ?">.I>Ol==|=$T9o9}999>T99:z::.4:F:Z:o:|:[:P$::w:::;l;H;)k;`;)<&>3ž>w>R>>ڥv>6?(I? k? w? B?}>>>1>֒>>\>xz>OP>)>.=η=u=EЪ= < 2h>2?"?6F?H?_?u{??~a?n?Z?K?@?:?5?3PH?0y?.?+x?'C?y?H>^><, =٘R=f4$Q>h>>*>N>S?QU? |? C? ?>>`>>>$>q'*>A٪>==D_=rH=*>;:j; :;q;X|;W< <{><=)k>#CD>۰?'?;G?Nֻ?d?w?}M?r?`?O?D7?N!>>Y=f{=DT9:k:"K:\y:u:[;`;Y;;;̩<.W%<^<ƜI=#=N=Tr=D>J>Z>>dU>>X>܏>4>u>>b>6L>%=?==W=`<">ώP?(9?<`?M?^ܲ?h?f?[`?M1?C#W?;?6a?1[?-?*;?&X?ؙ? >J<>Xa =ap=|b= P>Ni>*^>>Q>H??4?>,>>>r>t~>C?>Yo=Ԛ=;=i==1=w::;E;k<F>X?% ?7?Et?PB?RԲ?N]?Eݼ?=?7y?2B?-N?(?%W?? >E>>@=E =I?< @T99G}9"XY8$P888i8Y8,8,8888ׅ8H8u88u8V8XY8,88i88888888^8$P9 9 $9%90i94;999D9G}9S9`A9999]L9:& :y:;%;;i'<(4<<̖.=d=b=c>>@>,E>>>۲>jp>>e >ƥ>>>_>\[>*z>׷=z=S=`6="G l >??/C?9uB?>?>I?;R;?6j?1oZ?,%!?'\?"#?K?M>e>>4==}V=.<;ڵ;;%D::Y:Fc9<995<988]L8,8V8u8}%8l}8a8a8a8a8\!8\!8K8F8;80i8F8K8V08a8w#8}%8}%888u8V8XY8,8i88`8c9Se9H9 $9"XY9%9-Y9298[9G}9Xd9~+9}9,^9%:@::;Zh;I< )<[p<,\>tP{>> >մ<>>Ъ?>h>[>id>9c>{+=E/=.=h=*<;9\9 @8877\!777777776!6i660i666i7777\!7788}%89Se95<9p9H 9: :P$:Kc;7={;$*<O$~R>|?$? ?+?/So?-:?*c?'?$o]?? >>o>kD>F>*ͅ=6p==.Y;:|u:Ȇ;.b';;1<1ױ>Ln>>$>>^>H->}o>H8>Z.=8=*r=pLi=/=_<;š>h>/???-@?? >喚>x^>>[d>$S==֨=+V<ݽ<&<"~;TX;l:V:PoB:J999S9%8e8<88w#8Q\8*8H7"77777777777777777!7%8 888;8V08l}8}%8V8,8Y8<8]L88b@8c8%9 U 9ׅ9"XY91z9D9^m9&996F:P5: Z;;G;1F<">M:>hJv>o.>c@>H!>%4>=}q==6L= -e>I >p>\>J>>>ֈ>_>0Gw> =v&=4=@w< "ל>Y=0=_=L=W}=m>+Z2>GZ>Jș>A >1>U"=G==z=-v< ~=lR=|=,=L=G==E=Y?<A<T9ׅ88%7i7u77\!7F7F70i776!6i66666i6i6i6i6i6i6!6!6!77777770i7F7r$P7777%88;8V08w#88V888i8889t9 $929R999`:*:6:;Q\;;<.\T:J9Y99V096q988U 80i7"7u7F776!6i6i6660i60i66666666666i6i6!7777\!777i7"8u8*8K8a8}%88XY8888$P9wP90i9G}9yX99:k:U: ;1;S[;9;h<.R<.T9799G}9"XY88,8Q\7"776i660i66i77770i7\!7u7!8F8891z9yX9KV:8:c%:Ŝ;4m;Xh;;8< < <7'wT:w:1R;'%;z#;};&;GU;Ə;#;;1;x*;5;u;3;wD::rj:9w9F9&9a9G}91z9ׅ88i8}%80i7"77\!776i6i6660i5i666i6!7770i7r$P7u77888;8V08w#8H8,8[89wP91z9Q\9~+99,^9b: H :o:_:U;%;l5l;0;m;Ը;!;;*E;n;D; :N:o):u:7S~:[9}9799J>T9+9Se88}%8u770i6!660i60i66i6!777\!77i8H8g"88#91z9g"9x9:0rv:k:;ih;1;l;;C";v;ׅ;;L;L";KJ:U:jN:h:899x9t9]89G}929"XY9u8b@8i8H8K8 77776i6i666666i6i7770i7\!7777$P880i8V08}%8XY889ׅ929R999*9:}:MV::-:;s;=l;_e;q<;g";G;Sq::]@:r:D g:N:J9w9)99`A9?<9"XY8c8Y8l}7%776i660i66i6!777\!77"8*8}%8i9Se929a99`:>;:\:!:;7;;<::;P1;Qs;D~;'U; : :k:}:?<:|+99}9\!9=y9+9 $9888888K8u7i770i76!6i66660i60i666i6!777F777i7"8H80i8\!8H8i89 $96q9Y`99g9k9:|+:2*:dM:G: Z: &:;7;::h:d:i:9r9\9k99D9`A9F9-Y968!88l}8 776i660i66i6!770i778 8F8u8<9929`A99::4":r|]:ri::d:h;J::u:X::p:-:9ͮ999D9%968$P8˞88,8H8l}80i8777F76!6i666660i60i666i7770i777i7"88K88i8c9"XY9?<9]89896999:Fc:=y:eu:|+:6:'k::::fr:%99,^999`A9G}91z9"XY988m88XY8\!8 7u76i65i666i77F7u788\!889t91z9Z9e[99Z:ŏ:=y:mS:D::$*:h:x:e[:n:3:99799R91z9}88888}%8\!8;8u7\777F76!6i6666660i60i66i7770i777i885<8}%8i8#9%9D9a9D9wP99>T9b@:k:^:4":M:_:dM:_9z:I6-:&:k9w9>99R929 $8$P888,8V8r$P80i7"776!660i666i77\!77"80i8r$P889Se90i9R9t9h9ͮ9u::3:O :c%:mS:h*:T7:4: 9p9{99U?95<9 $8#8]L88V8}%8V08*8 7\77u7r$P70i776i66666660i60i66i777F777"8*8Se8<9Se9-Y9G}9g"999Y9L9?92:: :::wP:>;:999g9yX9D9"XY8#888}%8a8F87$P77776i6666i77\!78 8F8}%8,89Se9&x9G}9s9}99w9c:S:>;:wP:߭::9b9999G}9&x94m8`8i8ׅ8}%8\!80i8u7"7777\!7776i6666666660i60i66i770i7r$P77\8*8U 89 91z9R9s9U 99{9*999ߑ999j99p99{9.9g"9C]L9"XY888u8F87$P7777\!776i660i60i66i777i88\!8H888`9"XY999Z99g9999u99"91R9o9*9}9kCH9@9"XY8c888}%8\!8;87$P7i777\!70i776!6i6666666666660i60i60i6777\!7u7\80i8H8]L9929R9yX9U 9wP9)99y9]L99>T99Ľ9*99a999Xd96q9 $88i8}%8*7"7i7u77\!70i776i660i60i66!70i7u7\8*8l}8ׅ8i8˞8%9 $91z9G}9`A9899999,^99F9989Z96q978!888a8;88777u7r$P7F7776i6i66660i66666666660i60i66!77F7u7\85<8V89}929R9w#99999q9999F99}99c 9G}9)9a9Se888a8H7i777F70i776!6i65i66i77F77$P8@8}%888^8#9ׅ9)9a96q9R9`A99D99}9}9@99c 9G}90i9 @888g"80i8H7"777u77F7776!6i66660i60i60i666666666660i60i66i77F7u7\8F8V89H929R9l}99}999F99a9x9999~+9S96q9 $88i8Se80i7\7u7\!70i7776!6i6666i77\!78 8K8}%8,8<88969"XY90i98[9G}9S9]89db@9g"9`A9Y`9G}95<9"XY888U 8F8u7\7777r$P70i7776i6i6660i60i60i666666666660i66i77F7u7!8F8V89u91z9G}9`A99@9979999Fc9D9vD9S96q9 $8!8,8a8u77\!7776!6i6i6660i667777i8H8V08U 8,8<8^8c94m979"XY9-Y9296q9?<9A9@96q91z9"XY9 U 8`88w#87\777r$P7F7776i6i6660i60i60i666666666660i66i77F7u7"8@8H899)9a9D9Z9~+99e[9}9}9Fc9@9S9vD9V09=y9"XY8c8Y8g"8 7u70i76i6i666660i60i66i77F7u7\88\!88,8<8˞88`9u979"XY9"XY9%9&x9%9"XY979888y8XY8\!8u777\!70i776i6i660i60i666666666660i66!77\!7u7"80i8u8<89"XY96q9R9`A9989D9999p9Y`9D9+94m88u8770i76i66660i60i66i777r$P77"8%8a8H8,8<88b@8$P9Se9 U 969}9}994m8#8b@8]L888K8 77r$P70i76!6i660i60i666666666660i66!77\!7u7\8*8}%8Y8"9ׅ91z9C]L9S9`A9vD999}%9db@9Xd9F91z9ׅ88,8V07\776i660i60i60i66i777F7u78 80i8g"8H8,888`88$P8#8e8#8$P88`8]L8i88w#8;7$P77\!776i660i60i60i66666666660i60i6i777\!7u7\88r$P8,89Se9"XY929D9R9Y`9]89]89Z9R9D929"XY8#8<8Se8770i76660i60i6666i6!770i777\8H8F8r$P8H8,8i88˞8!8b@88"8m8^8]L88,8H8a8*7"77\!776i660i6666666660i60i66i777\!7u788\!8V8899%929=y9D9G}9G}9D9991z9"XY9Se888Q\7!776i660i666666i6!770i7r$P77i888K8w#8H8,8Y8<8]L88^8^88]L8<8Y88U 8\!8%7"77\!776i60i60i60i66666660i60i60i66i777\!7u78u8F8}%8,8]L8c99"XY9*91z929291z9%978%88,8l}8u77F76660i66666i6i6i7770i7\!7u77"8H80i8\!8}%8H8888y88]L88y88888a8*7%7770i76i660i60i666660i60i66i6!770i7r$P7u78 80i8g"8V8Y889Se9}9 $9 $9 $9wP988}8]L8,8}%8%7776i660i6666i6i6!6!7770i7\!777\8 88F8a8}%8H88,8Y8i8888i8,8XY8U 8g"8;8u7i7u7F76i660i60i60i60i60i60i60i66666i7770i777i888V08}%88Y8888$P8$P8c8b@8888}%80i7"7u70i76i6666i6i6!777770i7\!7777$P880i8V08l}8}%8H8XY8,888Y8Y88,88U 8l}8F87\77\!76!660i66666i6i6i6i6i6i6!777F777i7$P88F8a8}%8ׅ8,8i8<888[8i8,8V8l}80i7$P77\!76!660i60i66i6i777770i7F77u77i7"8u88F8\!8w#8Se8H8XY88,8,8,8,88V88r$P8K87$P7770i76i6666i6i6!777777777770i7\!7777$P8H80i8Q\8g"8}%8H88888XY8H8}%8\!8*7%7770i76i666i6i77770i7\!7r$P77777"8 880i8Q\8a8}%88H8ׅ8XY88888H8Se8r$P8V08*8 77u7\!76!660i66i6!77770i7F7\!7\!7\!7\!7\!7\!7\!7\!7r$P77u777%8H8%8F8V08g"8w#8}%8}%8}%8}%8r$P8\!8F87$P77u7F776i666i6!7770i7\!77u7777"8 8H880i8F8\!8l}8}%88H8V8ׅ8ׅ88V88}%8r$P8V080i8H7!7770i76i660i66!7770i7\!77u7777777i7777777"8 8H880i8F8V08\!8a8a8\!8V08F8*87"7i77r$P70i76!6666i6!770i7\!777i7\7"8 8H88*80i8F8Q\8\!8g"8w#8}%888H8H8H8H8U 8}%8r$P8\!8F87$P77u7F76i660i6i777F77u77\8 880i8F8K8K8F80i88u7%7"7!7"8 8u88%80i8F8F8K8Q\8K8F8;88H7$P7777\!776i66666!77F777\8 880i8F8V08\!8\!8a8a8g"8l}8r$P8w#8}%8}%8Se8U 8u8u88}%8}%8l}8\!8F88 777\!77660i60i6i770i777i7"88F8a8Se888,8,88ׅ8Se8l}8Q\80i88888*80i8;8F8F8F8F8;80i88H87\77u77F776i6660i66!77F7u78u80i8\!8}%8u8V8XY88XY88V8H888}%8}%8}%8}%8}%8}%8}%8}%8w#8a8V08F88 7\7770i76i66i77\!7u77"8H8F8r$P8888`8}888c8!8]L8i88Se8g"8Q\8F8F8F8F8F8F8F8F8;80i888 7"777u7\!70i776i6660i66i77\!77"8*8a88,8i88]L888]L888Y8,88V8888}%8}%8}%8w#8l}8\!8Q\8;88 7\777F76i660i60i60i6i77\!77\8u8;8g"8V8i88%9ׅ9%91z9295<929+9 $98!888H8}%8r$P8l}8a8\!8\!8Q\8F8F80i888 7"7i777\!70i776i6660i66i77\!78 8Q\8U 888m899u9u9 @988e88^88i8,8XY8H8Se8}%8w#8g"8\!8K8;88 7\777F76!660i66666666660i677r$P78 80i8a888^989"XY95<9G}9Y`9g"9~+99vD9`A9R999%988֠088,88H8U 8}%8w#8a8V08K8;8%88 7"7i777\!70i776i6i660i66i77\!78u8a8XY8y89u9"XY9*91z929291z9-Y9%9 $94m8}88888u8}%8l}8\!8Q\8;88 7!77u7\!76!660i60i66666i6i6i6i6i666660i677788V08}%8889"XY96q9R9yX9&99)94949)979e[99S95<9 $8$P8888,888}%8l}8\!8F80i88 7"7777\!70i776i6i6666i77F78u8g"8,89u9%96q9G}9R9Z9]89\!9Y`9R9D96q9)9a9ׅ88˞88,8V8}%8g"8\!8F8*8H7"7i7u7r$P776i60i6666i6i6i6i6i6!6i6i6i6i66660i6777"80i8w#8XY8i89 U 9-Y9G}9l}999ͮ9Q9u:J9u9r99,^9>99`A9@9"XY9Se888<888V8}%8l}8V08F88u7"777u7\!70i776i6i6660i66!77\!788w#8i8$P9"XY9?<9Xd9yX99u9}99Fc9@989yX9Z9G}91z9 $888i8888l}8V08F88 7\777F76i660i666i6i6!7777776!6i6i6i6660i6777"8K8u888$P9 $95<9Xd989XY9>T96F:^:9:KF|:O :C]L:*A:ŏ99w99u9db@9C]L9%9u8$P8`88i8,8V8}%8a8K8*8H7%777u7r$P70i776i6i6666i777r$P77!80i8H89u929Y`9t999<9>T9ͮ9>T999x99D9g"9N^91z9ׅ888,8H8w#8V08;8877770i76i660i666i6i6!7777777776!6i6i6660i677r$P7"8K8H8i8m969-Y9G}99'k99::Og:Se:}::::/:T:&:c99{9&9`A9@9&x9V8e88]L8i88H8w#8V080i887\77u77F776!6i6660i60i666i77F7u7880i8w#88b@9 $9D9}%99k9`9r:|+: : U :z:Se9r9w99$9&9kCH9G}9+94m8˞8i88}%8\!8F87%777r$P776i60i666i6i7777777777776!6i6i6660i66!7F7i80i8u8i89"XY9C]L9db@9}99::VH":]3:Ŝ:h:u::69:V:6 ::fʜ:)9a:X9o9>989Y`999&x9wP8%8m888XY8Se8a8F88 7\77u77F776!6i6660i6666i6i6i6i6i6i777\!7u78H8K8}%8,8]L9Se9-Y9R99F9:[:wP:<|D:P5:U:S:G%:2:Fc:9ߑ99XY99^m999 $88<888g"8F88 777r$P776i660i666i6!777777777777776i6i6665i66i77u8u8}%8i891z9^m9u9q9r:g:_9z:":h;1; ;6P;B5;>;-;:]e::-:V=:9u9k9}9~+9R96q9%9}8#888,8H8w#8Q\8*8u7"7i777\!70i776i6660i60i6!777777770i7\!77\88V088,88c9 $96q9^m9%9k9CH::P5:`:e[:ri:*:6::xU>:P5:& :|+9ߑ9,^9wP99Q\9*9Se888V8w#8V08*8u7\7770i76i6660i666i6i7777770i70i70i70i70i70i777776!6i6i66660i60i60i60i60i6666666i77\!78V088e96q99I9ߑ::j;:k:u;iu;R=;`;1;;̄;H;-;^O;*;7::t:8:9N99D9`A9G}91z9"XY9 @88]L8Y8XY8}%8\!8;87$P777u7r$P70i776!6i660i666i7770i70i70i70i7\!777"88V08u888$P9ׅ91z9R999 :S:BU%:::t:w:$::::$::dM:/A:|+9ذ9Y9@9\!95<9H8`8i8XY8Se8a8F87"77u7\!776i6660i60i666i6i6!777770i70i7F7F7F7F7F7F70i70i77776!6i6i6666666i6i6!77777F78*8,9 @9G}969Ͽ(:u:^1R::;){;u;8;;;;;];ܰ;;w;l5l;$<:ŵ::T7: @999}99V09?<9+98%888,88l}8F88 7\77u77F776!6i6660i666i777\!77777u77"88V08u88˞8`9"XY929R999L94:$:n::.:;L;!E;'";"l;d;:m:C/:.:lKp:*:Se9979Se9C]L9 $88[8,8H8w#8Q\8%8 77770i76i6i66666i6i6!777770i70i7F7\!7\!7\!7\!7\!7\!7\!7F7F70i77776!6i6i6i6i6i6!77770i7F7r$P77"8Q\8i9%9l}9::O(::枖;32;c;>H;T< <$/<;2T:X:&:cZ::K;7;)eg;^s\;`t;;.;;";;b;z;K;:r:߹:]3:M: 9w979g"96q9H8!88,8V8w#8Q\887i7u7\!70i776!6!6!7777770i70i7F7\!7r$P77777u7u7u7u7u7u777r$P7\!7F70i777770i7\!7u78u8K8ׅ89u96q9}%9:J:c%:;e;XXr;;X<;;]Y;i;;x;Ҡ; ';U;?;PY?;:@:Q::39999R9%8e88Y88U 8a8;8u7\777F777777777F7\!777u7u77777777777777u7u777r$P7\!7\!7r$P7u78*8r$P88`9 $9?<99jN9u:U:M;};Q\;o;тk<NW<~9H; ;j;;;;D<$<!>K>=A=#==i=+}D>3Y >> ;>9i>)g>=iQ===7r=6<.<~<' ;;;T;1:::_:3:u9#9w9"999R95<9"XY9 @88]L8Y88u8r$P8Q\80i88u7"777u77F777777777F7r$P77788V08u88]L899ׅ9"XY9g"99D99Y99Z:4m:(S:T:k:^::)7;E;Je;F;;;e< < t<=v>9>Yb>i}>g{>V>;i>N=<==;=95=4;n;e[;4;˩;)<<(NB= =uf=>%x>NH>q>>>r?$>Ww(>7>#=b==yS=2=9[<<\<<<<;=;;9;:]L:::eu:>:^:99k9'k989`A9N^96q9&x9ׅ8`8b@8]L8i8,8V8}%8r$P8a8Q\8;88u87"7"7"7$P8 880i8Q\8l}8u888%9"XY94;9N^9`A999Fc9'k9:J: : H :?<:_9z:X:u:H :w]::;;,;S[;O;A;О;*;i4< ` <#J}<>|T9Ͽ(9w9 99,^9{9wP99s9S9C]L96q9291z91z91z95<9C]L9Y`99F9u:dM:;;|;< tL>&p>M>qt>%>B>u>^U>@t> =|'=H=6=]=#<<<`<<< 1;̛;";Vt);@: :Q:?::m:Eũ::91R9y9$9e[99]89J>T96q9)9a9 $9 8c8˞88Y8,88XY8V8u8}%8w#8l}8a8a8r$P8}%8H888899&x9@9Y`9969H 999 9:*:=l:Q\:mS::-:::Z :1R: ; ;y;8;Xx;V?;u;i;;`3;LI<<&;:::g:::z9u9݁89m9{99999vD9s9~+999{9݁8:#`:]3:wv;G;5;#<lm> Sc>?qN>\>o>s>f>OZ>7i)>==D==j9=6= T9A96F:S:ͷ:C:ze::):Fc:t:jN:]L::g':S; ֬;E;"_;6m;Q\;m;;!;;[?;^&;=-<Y<<)<:Pq:e[9-9N999Fc9U 9D99D99799˞9r:|+:ׅ:=l:VH":p:::):)::P$:::K=:xK:m:WPJ:A: : <9999[9I9{9{99}9u:g:v :KV;\f;}Q;<< O>Z>.&N>A>N>P->Ff>2>?>ܓ={=۶=_=T#0=,S8= oI;";;;ӝ<|<Б<<h<;J;J;r; M;L;^c;(2:::-:l:8:e[9t699<9Y99999F9,^9PJ:::Q\: :^:b':.:::C:h:PW::`:":p:KV::K::):v :P5:/jN:>;:|+9`99496F:z:"K:c ::D;EW;s;٫<V=;=Ld==M== =Һ> }0>~>%@>,O>+* >">D ==Wb=Ng=s=`=0=*<<ĸ<<:V0:G:?:?:G:WW:K=::5;;5;<X<5'>k>~>PX==D2=n=&=r&=I8=(5Z=<<B<^=cc=(=Ҏ=֌=o?=-=}n=y==`]=SZR=)= -?<|<ːa:::N::t:(:jN::-::l:N:PJ::;K=;;W;;;e;:C:[:g::t:`A::::899m9w9>T999ͮ9PJ9:z:4":r:>H:bL;.1;m';I;;;A;Ǵ;ř;~;; ;Y;r;/;c";H;,;g; &:@: ::b':4:t:Ӈ:%;Y&;Gg;; ;5<,<^<<Ƭ=ea=%v=RX=&=w======K==x=yw=VX=3=<<8<h<<_<0a< ;>;;;;d;R;;8;q^2;Q\;4Q ;!f4;1; :Z%::Ί::F:::Se:l:XXr:MV:?<:2*: H ::,E9%999m9k9jN99a9F9I9q999m9>T9ͮ9w9PJ9ߑ9:r: : H :<|D:V=:~.::t:o5:z:ߑ:(:I;7;7;:r::::PJ:?:ҫ::Ȇ::z:2:'k:6:x:k:{m:r$P:kb:h*:lKp:p:yX:k::::::}:::A::6:|+:lKp:H:)n:ͷ:[9CH99w9>T9}9.9>T9w9ߑ96F:Fc:PO:.:;'k;]?.;b;pi;_;;;̩;;;Ҡ;¢0;jN;;T;;a;Dz;)Od;; ::::;J;o);D;~;};c;t<#=d/X====`=7a==p:=_+=J`=3p=9=<:`<<<\,<3<a;,;F;$*;<.;;z#;kCH;^c;T;I );5F;%;V; U ;:u::޵f:2:::H :ri:::y]e:mS:bQ:T7:I6-:T9>T9ͮ9999299%::: :N:(S:A :WW:xU>::V:9a:::U:Z%;;4m; ;P$:bL::)+:;::K:I:i:Ŝ:$::m:k:o:U:B2:0rv: H :V:}: U : : : :u::){:@:R:c%:l:n:gz:\!:M:9:!P1: @:9-99\9}99y99L99w9ߑ::C:`::c;. ;{;c;i;ف;;<<;p(;fZ;_;.;;;8;B;lσ;L";/U;'k; ;7::; U ;(2;Xx;L;&7;u<ɝ<$:o:fʜ:\y:P5:Det:4":"K:>;: <:9999Q99:X:t: : ]3:>;::#s:4:D:V0:s:`:-::-::֠0:/:`;:!; ; ; ; :g':t)::^:19:c:::::o:T7::: H : U :9S9ߑ9PJ9\9>T99]L99o99A9t6::z: U :m:u: :,E:J999 999"9jN9I9Y99k9<9>T996F:g:`A::@;0rv;*8;ɪ;;;d< 3<;Z%;9;߲;*;aZ;U~;+;;dT;D;)eg;; ;[;J; );%;V;x;;c<PX<"MWΝ;;:; :Z ::C:*:4::]@:>:?:x:d:x::::^:: :a::P$::Q:|:y]e:u<:p:h*:_9z:Qw:Eũ:5I:$:: U :8::Se::k::m:::':2:;t:G:U:l:/:]3::h:}:8:::1_;;nO; ;f;:%:F|:KV::w::/:r$P:`:M:9 : : ]3:Se9Q9w99jN9s9'k9}99@9&9&9699XY9Y99]L9>T9oB9w9ͮ9}9y9q99a9s99'k96969'k99XY9F999Ͽ(9: @:M:>;:;"XY;kR;T;Յ;2;(;i;;j;&;a;;L;;h;n;Lҷ;-;$; ;r:A;ɝ;0_;=l;G;;ͣ;p(<$<:sܒ:qC:p:r$P:rj:s:rj:p:l:dM:WPJ:O :AL:3:"f::ŏ: : <: D: M:}::){:5C/:?<:G:Rמ:c%:t::u:: :::V::;:0;7;[;'^:u:@:1R: Z:::p:R':<$7:':N: <:K=9%9w99979%99p9]89S9R9H9G}9G}9R9Z9g"999.99wP9wP99}9%999t99t99D99e[9}999{9,^9:J:- :r:;,E;C1F;!;,;,;;_Y;};x;|;;;;;a;CS;%;;ih::u::u;;N2;;x*;< I<';:::(F:2:8[:=y:BU%:F:H.:KF|:O :Q\:U:\y:cZ:eu:i:j;:gz:c%:WW:P5:D:7S~:){:߭:N:}:m::: H :+I:7:C?:L:T:c%:rj:7::w:$::*:ǩ:5::::[:wv:jg::N:t::p:Ja:(S:u:99d999{99Fc99yX9Y`9G}96q91z9%9 $99ׅ9 $9"XY9-Y96q9D9R9Z9a9g"9i9g"9`A9Z9Y`9Xd9Y`9Z9]89`A9g"9s999D9ŏ999k9d:z:G:A|:Ȇ;;CGI;wc;);;Sq;Sq;;ع;f;yGb;Zh;@Z;& ;;::$:Ȳ:Xe:t:%:;0_;PO;G;;>a< <(L;:g:#`:2:<|D:G%:PoB:Z:h*:xK:t:a::,R:6 ::9m:G:V:oB:ѣp: :ʖa:::2:^:M:)n: 999,^9F979H999yX9`A9R9A91z9"XY9wP8`88`888֠08b@8#969 $9)9a91z96q9?<9@9?<9996q96q98[9=y9@9D9G}9J>T9R9S9Z9c 9yX99&9'k99PJ: :MV:9T:K;7;k;>;R;Zh;X;Qm;EW;2;"XY; ;!:M:Ȇ:\::V:jB::2:; ;Eũ;;;ڵ<< <5S<(4<‚;+;Ҡ;;jB;;_;Dz;(G<;.:6F:ѣp:9a::Qw:9t69Ͽ(99$9}9%99}999XY9x9F99q9,^9]L9N99ߑ99::z:u::"K:0rv:9:A :G%:G:G:F:?:7S~:-Y: ::: &: U ::: H :-:8:C]L:M:U:c%:r$P:/:L:jB: :M:jN:w]:::[::: :Sq::f:o: 999k99e[99g"9Y`9R9G}9@96q9-Y9 $9 U 8$P8֠088i88,8,8,8Y888"8%969 $9"XY9"XY9"XY9"XY9"XY9"XY9"XY9%9&x9)9a9-Y91z9296q9?<9D9R9Xd9c 99u9h9N::4;:t::*:U1:X;;[:]e:σ::h:߹:2:::~.:h*:_9z:`:rj:]3: :;,;;ysi;; g;wv< M<V<',<0<4<2F<)<S<;i;1;";;Z;I6-;"XY; b:`:܅: ::V:K=:Ja:9r9ͮ9i9wP9U 99g"9`A9`A9c 9l}9~+999999999)9"9<9N9ذ99j:::ͷ::"K:*A:2*:4;:2:- :%:wP:Fc: &: <:|+:|+:: @:N: H :+I:6d:@D:H.:Rמ:`:qC:[:x:6:KJ:H :::,R:::::z:`:E:& 99k9H 9e[99Y`9G}96q91z9*9"XY9 $968%8"8888XY8H8}%8}%8}%8}%8u88,8i88֠0888%8`8`8`8%8`9Se989 U 99wP99 $9"XY9&x91z95<9@9N^9\!99.9*9`:|+:){:U:S:::.::u:::s:_9z:G%:2::>;::g:4:a:.:h;;M;;)x;b;ޒ; <H0<< ;)7;;;&7; ;;Y;,;Y::4::::m:Og:*: 9u9]L9x9.99g"9S9G}9C]L9@9?<9@9C]L9D9G}9G}9J>T9R9S9]89g"99D9.979)99L9 99r9%:: :m:V:::N:: :S:[9`99:K=:c: <::: H :)9a:4;:;t:G%:S/:dM:xU>:k:p:A|::%:]3:`t:}:fʜ:O :4":g:S999&99Y`9D91z9%979u8`8$P888<888H8}%8g"8\!8K8F8F8K8V08g"8}%8H8888888888888^8`8b@88$P8#9Se9 @9wP9 $9%91z9?<9R9s9e[9x9]L9ߑ:X: ::7:"K: :'k:N: @:|+96F9r91R9`99u:k:)n:s,x:,R:u;M;Ul;-;C"; ;;O;<;;R; ;~2;M;(]@;:@::'k:[:R:2*:^: U :99?9979D9kCH9S9D94;9+9%9%9"XY9"XY9"XY9"XY9"XY9"XY9"XY9%9&x90i94;9=y9G}9Y`9g"99&99XY949|D999ߑ9-9%::k::k:96F99u9ߑ9p9!9ߑ99r::,E: :ŏ:Fc::"K:/A:<|D:Jo:V0:fʜ:p:rj:o:dM:S:@:&:ŏ:99o99yX9Xd9D91z9"XY9 @88b@888888H8}%8a8Q\85<8%888H8H888*8F8\!8w#8U 8V88,8,888,8,8,888Y8i88y88]L88`8"8c8%9u9 $91z9D9Y`9Se9U 969F999.9>T99}99y99I9)99)99::9:$:4:@;5G;D9m;h*;/;j;;;v;S;--;e:V::K::j;:;t:999o9999}99^m9G}95<9%9ׅ94m8%8#88$P8$P8c8c8c8c8}8c8$P8`9 @99%929D9S9c 999}99F999ͮ99m99Q99ߑ999ͮ9}9­299}9ͮ99ߑ9r99u:K=::k::m::#`:1":6KV:8:4":':: <9u99m9I999C]L91z9 $9t888888ׅ8u8w#8\!8F8*88 7"7"7\7\7\7\7!7"7%8u880i8K8\!8g"8w#8}%8}%8}%8}%8}%8}%8Se8u8H88XY888,8,888i88y88"989 $90i999N^9Z9g"99999&9&9U 9D99t999}9{9: <:G%:::ܥ;5;-;'";- ;+; ;ͷ:#:": Z:%:u:G%:6:9p9<9x99999g"9S9@90i9 $9Se8888<8888i8i8Y8Y888Y8i888`8$P99"XY929D9S9db@99D9Fc999i9k99m9}99L9,^99jN9F9x9x9F9jN9999>T9\9w99`9p99CH9%:::k:99Q9w99F9V99p9V09 $988b@888XY8u8w#8a8Q\80i88 7"77777777777777!7$P8 888*80i8;8@8F8F8F8Q\8V08a8g"8r$P8w#8}%8}%8}%8}%8Se88H8V88888`89 @9 $9%91z96q9C]L9G}9R9S9U?9V09S9S9S9Z9p9@99: :D:/:d:KV:ͮ::E:t):%:b:wP:4m:`:4": 9r9}9F999^m9S9N^9F9991z9"XY9 @8}888,8XY8H8U 8}%8}%8}%8}%8}%8}%8}%8w#8w#8}%8}%888V8,8i889wP9&x96q9G}9Y`9g"99D9999s9x9)9x9XY999}99%9%969}99799h9x9F9{99i9q9k9<9 g999]L9|D9Y99699c 9R9?<90i8m8888}%8\!8F8*887\777u77r$P7\!7\!7\!7\!7\!7\!7r$P7777u7777i77\7"7"7$P88 8u8H88%80i8;8F8F8F8F8K8Q\8V08\!8a8l}8w#8}%8u8ׅ8,8i88`8$P9 9ׅ9"XY9&x90i91z94;95<96q96q9@9Q\9g"9e[9jN9`:S:2:_:k:%:*:^:5::Q:_9z:7S~:m99]L9XY99`A9F91z9"XY9 $9wP9 @8%888i8,8ׅ88w#8\!8F80i8*888%8*8*8*8*8*8*80i8;8F8a8}%88<8b@9 U 9"XY929D9R9^m9p9989D9&9e[9e[9&9D98999yX9s9t9ze9999998999D99U 9@99Fc9}9}969U 99oc9Y`9G}95<9&x9ׅ8%8,8H8w#8V080i88 7!7i777r$P7F70i77777777770i70i7F7\!7\!77777u7u77777i77!7"88 8u8u8H88888*8;8F8F8Q\8\!8g"8}%8H88888!8c8`9u9wP9 $9"XY9%9)9a90i95<9G}9g"9%99w96F::2:I6-:VH":])+:VH":Jo:4"::9`9q9}9yX9G}9-Y9u8b@888i88,8V8Se8w#8a8V08F8*8H7%7!777777\7\7\7!7"7"7"8 88;8l}8889 9"XY91z9?<9G}9S9Z9a9g"9p9p9l}9g"9`A9Z9S9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9S9S9V09Xd9Y`9Xd9S9Q\9D96q9-Y9 $9 U 8c888l}8K8%8u7"777u77\!70i7776!6i6i6i6i6i6i6!777777770i70i70i7F7F7\!7\!7777u777777\7!7"7"7$P8 8u8H888*80i8F8K8\!8w#8u88,8i888!8}8#989}99"XY9&x95<9J>T9kCH9e[9)9}9A:J: :>;::>;: :99.9x99^m999 $88i8V8w#8a8\!8Q\8F8*888H8 7$P7\7i77u7u7777u7u7u7u777777\8 80i8w#88[89 9 $9-Y95<9@9G}9J>T9R9R9R9J>T9G}9A9996q9292929292929291z9-Y9&x9%9"XY9"XY9%9%9&x9)9a9*9*9)9a9&x9#9"XY9ׅ9 U 8#8!88i88u88 7\7777r$P7F7776i6i66660i60i60i66666i6i6!7777777777770i7F7\!7r$P777u777777i77\7"7%8 8u8888*8F8V08r$P8Se8V8,8Y8<8]L8֠088#94m9}9 $9)9a96q9R9l}9U 99 99ذ9A9Q9A9PJ9}9ʃ999R91z9 U 888g"80i88 7$P7"7\777i7777u77r$P7\!7F70i70i70i70i70i7F7F7\!7\!7\!77u778u8F8}%8,889979#9-Y91z94;95<95<9291z9+9%9"XY9 $9 $9799 $9 $9 $9ׅ9H94m8e8c8b@8m8m8b@888c8c8c8}88!8888,8ׅ8}%8a8F7\7777\!70i776!6i6660i60i6666i6i6i6i6i6i6i6i6!7777770i70i7F7\!7r$P777u7u7777i77\7"7$P88 8u888;8V08r$P888,8i888b@8989}9 $9+96q9R9a99Fc999a99q9i9x99D9a9D9%8#8<8V8V087"7i777u777777\!7F70i70i777777777777770i7\!777"88V08u8,88!89 U 9ׅ9 $9"XY9"XY9 $9 $9ׅ9u98e8$P8c8c8c8c8c8c88`88y8i8,88888,888888,88V8Se8r$P8\!8@88 777\!70i776!6i6660i60i666666666i6i6i6!7777770i7F7\!7\!7777u7777i77\7\7"7"8 8H8*8F8a8}%8ׅ8,8i88˞88#94m9wP9 $9)9a95<9F9V09g"99D9&9&9D99eu9R95<9 $88i8H8Q\8H7\77u77\!70i70i7777777776!6i6i6i6i6i6i6i6!6!77770i7\!7u77%8*8a88,888m8c8#8%8%8e8$P88m8˞88888888<88Y8,8XY8u8w#8a8V08V08V08\!8a8l}8r$P8r$P8l}8a8\!8F80i88H7%7\77r$P7F7776i6660i6666i6i6i6!7777770i7F7\!7\!777u7u7777i777!7%8u8*8Q\8r$P8888<88`8}8e989}9 $9%91z96q9D9Q\9S9Xd9V09R9D95<9"XY94m8֠088u8Q\87\777\!7776!6i6i6i6i6i6i6i666666666666i6i6!777F7778 80i8a8888888888]L8y88Y88,8,8,8,8,8888H8}%8l}8V08;88H8 8 8 8u8u8H8H8u8u8 7%7"7\7i77u770i776!6i660i60i6666i6i6!7777770i70i7F7\!777u7u7777i77"8 88F8l}8U 88888^8b@8c8#9Se9u9wP9 $9"XY9&x9-Y91z91z9-Y9%9 $988b@8y8,8}%8F8H7\777F776i6i6660i60i60i60i60i60i666i6!777F777\8u80i8\!8}%8H8XY8,888Y888,88ׅ8V8H8u8U 8Se8}%8}%8w#8l}8\!8K80i88u7"7\7i777777777777u7u77r$P7\!776!6i660i60i6666i6i6i6!777770i7F7\!7r$P77u7u77777"8u8*8Q\8w#8H88888˞8!88c8$P8#8`989 U 9u969u9 U 8`8c8`888H8g"80i8 7777F776i66666i6!777\!777\8 88F8\!8r$P8}%8U 8H8H8H88U 8}%8}%8w#8r$P8g"8a8\!8\!8V08K8F8*88u7%7!7777u7u777777777r$P7\!7\!7F70i776!6i6660i6666i6i6!777770i7F7\!7r$P77u7777\888F8a8}%8ׅ8,8i8y88^8!8b@888888888m8^8]L8888}%8Q\87%7i777F776!66666i6!777\!777i7"8u880i8F8V08\!8\!8a8a8\!8\!8V08V08K8F8F8F8;80i8%88H8 7"7\7i777u777\!7\!7F7F7F7F7F70i70i70i70i7776i6i6660i6666i6i777770i7F7\!777u77i7"8u80i8\!8}%8V8,8Y8<8]L8˞8`88b@8b@88!8֠08˞88]L888Y8,88}%8a8F87"77u77F776!6i660i666i6!777F77u777"8 8u888%8*8*80i80i8*8*8*8*8%8888H8u8 7"7\77777u77r$P7\!7F70i70i70i777777776!6i6660i6666i6i777770i7F7\!77u77888K8r$P8H88Y8<8]L8^8m88888m8֠0888<8i88,8ׅ8u8w#8V080i8u7"77u77F70i776i6660i66i6i7770i7\!77u7777\7"7$P88 8 8u8u8u8u8H8H8u8u8u8 8 7$P7"7\77777u77r$P7\!7F70i70i77777776!6i6i660i60i6666i6!777770i7\!77u77\8u8;8a8888<88֠08b@8}8c8$P8c88b@888y8i888V8Se8l}8Q\8*8u7"77u77\!70i776i66666i6!7770i7F7r$P77u7777i777\7"7"7$P7%88 8 8 87$P7"7"7\77777u777\!7F70i70i777776!6!6i6i6660i6666i6!77770i7F77u77$P88Q\8}%8ׅ8888`88$P8#8e8e88c88֠088<8Y8,8ׅ88r$P8V080i87"7i777\!70i776!6i660i60i666i6!77770i7\!7r$P777u7777i777\7"7"7"7$P7$P7"7"7"7\77i7777u777\!7F70i777776!6i6i6660i60i666i6i6!7777F7778 80i8g"88,8i8]L8`888`9Se99Se8%888`88<888H8}%8a8F88 7\77u7r$P7F776!6i6660i666i6!77777F7\!7r$P77u7777777\7"7"7"7"7"7"7!7\77i7777u77r$P7\!70i70i77776!6i6i6660i60i666i6i6!7770i777\88K8}%8888^889Se94m9 @9u9 U 98e8c8!88<8888w#8V080i87"7i777\!70i776i6660i666i6i777770i7\!777u777777\7"7"7"7"7"7"7\777777u7u77r$P7\!70i70i77776i6i66660i60i666i6i7770i777"8%8\!8U 88i888$P9Se9 U 969}9}994m8`8c8m88<88XY888l}8K8%8 7\77u7r$P7F776!6i660i60i66i6i77770i7F7r$P77u777i77\7"7"7"7"7"7"7"7\7777777u777\!7F70i77776!6i66660i666i6!770i778 80i8l}8V88<8˞88e94m9699wP9wP9H9 U 8`8$P8m888,88}%8a8F887777\!70i776!6i6666i6!7770i7\!7777777\7"7"7"7$P7$P7"7"7"7\7777777u777r$P7\!7F70i7776!6i6i6660i66i6i770i778 8F8w#8ׅ888`8c8`9 U 9}9ׅ9ׅ9wP9}9 U 8`8c8!8]L8i8,8H8w#8V080i8H7"7i777\!70i776i66666i7777F7r$P77u777i7\7"7"7$P7%7%7%7$P7"7"7\7\77i77777u7u777\!7F70i77776i66666i770i77i8u8F8}%8XY8Y88!8$P9Se9u9}9ׅ9ׅ9wP9694m8%8}8֠088i88u8l}8K8%8 7\77u77\!70i776i6666i6!7770i7\!77u777i7\7"7"7$P7%887%7$P7"7"7!7\777i777777u777\!7F77776i6660i66i770i77i8u8F8}%8XY8Y88!8c8`9 U 9H99wP9}9u9Se8888<888}%8\!8;87%777u77F70i776i660i66i6!7770i7\!77u777i7\7"7"7%88 8 8 87%7$P7"7"7"7!7\7\777i7777777\!70i70i776i6660i66i770i778u8F8w#88Y88֠08}8e989u999u988%8c8`8]L8i8,8H8w#8Q\8*8u7"7777r$P7F7776i660i66i6!7770i7\!77u777i7\7"7"7%8 8 8 8 8 8 87%7%7%7%7%7$P7$P7"7"7!7\7777u77\!7\!70i776i660i66i77778 8;8r$P8V88<88"8$P8%994m989Se8%8c888<888}%8\!8;87%777u77\!7F7776i660i66i6!7770i7\!77u777i7\7"7$P88 8 8u8u8u8 8 8 8 8 8u8u8u8u8u8u8 87"7!777777\!70i776i660i66i77777$P8*8a88,8i8]L8`88$P8e8%8e88c8b@8˞88i888r$P8K88 7!777u77\!70i7776i660i60i66i7777F7r$P77u7777\7"7%8 8 8u8u8u8u8u8u8H8H8888888888u8 7"777777F776!6i660i66!77\!77"88V08}%8XY88<88`88}8c8c88m888i8,8V8}%8V080i8H7"777u777\!70i7776i66666i7770i7\!77777i77"7"88 8u8u8u8H8H888888%8*80i80i8;8;80i8*8%88u7%7\777u77F776i6660i66!77F7u78u8F8r$P8H8,8i888˞8`8!8`8^888i888Se8a8F88 7\777u77r$P7F70i7776i6660i66i7777F7\!77u7777\7"7%8 8 8u8H8H888888*80i8;8F8F8F8K8K8K8F8F80i88u7%7\777u7\!70i776i6660i66i770i777%8*8\!8}%88,8i8<88]L88]L88<8i88XY8u8l}8K8%8u7"7i77u777\!7F70i7776i6666i6!7770i7\!77u777i77"7$P8 8u8u8H8888888*80i8F8F8K8V08\!8\!8\!8\!8\!8V08F85<88u7"7"7i777\!7776i66660i66i770i777!88F8g"88ׅ8,88i8888i8Y8,8XY88w#8V080i87%7777u77r$P7\!70i70i7776i66666i7770i7\!77u777i77"7$P8 8u8H8888888*80i8;8F8K8V08\!8\!8a8l}8l}8l}8l}8a8\!8K80i88u8u7"7i777F7776i6i66660i60i66i777\!7u78 8%8Q\8r$P88V88,8888,88ׅ8u8w#8\!8F88 7"7i77u777\!7F70i77776i6660i60i66i7770i7\!77u777i7\7"7%8 8H88888%8*8*80i8;8F8K8V08\!8\!8g"8r$P8w#8}%8}%8}%8}%8w#8l}8\!8K80i88%8u7"7i777\!7776!6i6i6i66660i60i60i5i666!777\!7u77"8H80i8V08l}8}%8H8V8XY8XY8XY88H88w#8\!8F8*8u7$P7777u77r$P7\!7F70i7776!6i6660i66i7770i7\!7777i7\7"7%8 8u888%8*80i80i8;8F8F8K8V08\!8a8g"8r$P8w#8}%8Se8U 88H8H8H8H888}%8l}8\!8F8\!8F88 7777\!70i77776!6i6i6i6666660i60i60i66i6!770i7\!7778 88;8V08a8w#8}%888U 8U 8Se8}%8r$P8\!8K80i88 7"7i77777\!7\!7F70i7776!6i6i6666i7770i7r$P77777"7%8u8H88%80i8;8F8F8F8Q\8\!8a8l}8w#8}%8}%8U 88H8V8ׅ8XY888,8,8,8,8,88ׅ88w#8ׅ8}%8a8F87$P7i777\!7F70i77776!6i6i6i6666660i666i7770i7\!777i7"8u88;8K8\!8a8l}8r$P8r$P8l}8a8V08F80i88u7$P7\777u777\!7\!7F70i77776i6i6660i60i66!770i7r$P7u77i7!7%8u8880i8F8F8Q\8V08\!8\!8g"8}%8Se8H888,8888Y8i8i88<8<8<8y88]L8]L88y8i8,88Y888a8F87%777u77\!7F70i77776!6i6i666660i666i7777F77u77i7!8 8H880i8F8K8V08V08V08V08K8F80i888 7"7777u777\!7\!7F70i77776!6i66660i666666i6i6i666666i770i7\!7u777"8 88*8;8K8\!8a8l}8w#8}%8}%8U 8V888i8<8]L88֠08`8m8b@888c8c8$P8$P88e8`9Se8`8#889Se88]L8i8,8H8r$P8K8%8u7!777u77\!7F70i7776!6i6i6i66660i60i666i6i6!7770i7\!77u777"88u88%80i8;8F8F8F8F8;80i8%88u7%7!7777u777r$P7\!7F70i70i7776!6i6i6660i60i60i60i6666i6i6!6!7777776!6i6i665i60i66i777\!7777"8u88;8K8\!8r$P8}%8Se88V8ׅ888i88˞88#94m969wP979 $9"XY9"XY9%9&x9&x9&x9&x9&x9&x9&x9)9a9&x9%9"XY9wP90i9"XY9u8$P8^8<8,8V8}%8\!80i87$P777u77\!7F77776!6i6i66660i60i6666i6i6!77770i7\!77u77i7\7$P8 8H888*8*80i80i80i80i8*888H8 7"7\7i777u7777\!7\!7F70i77776!6i6i6660i60i60i66666i6i777770i70i7F7F7F70i70i7776i6i666i7770i777i7"8u88F8\!8l}8}%8888,88i8[888e9u9 $9%91z94;96q9=y9D9G}9R9S9Xd9Z9Z9Z9Y`9Xd9V09S9R9J>T9D96q9Z9G}96q9&x9ׅ8%8`8<88ׅ8}%8\!8;87$P777u77\!70i7776!6i6i66660i60i6666i6i6!77777770i7\!77u77i7\7%8u888*8*8*80i80i8*8*8*8888u87"77i777u7u7777r$P7\!7\!70i70i7776!6i6i6660i60i60i60i66666i6i77770i7\!7r$P77u7u7u7u7u777\!70i77777770i7r$P7u77\8 88F8\!8w#88XY8,88i8<8]L8֠08c99ׅ9"XY91z999G}9S9Z9`A9s994m9U 9.9V9799H 999g99.999s969U 9yX9S9@91z9 $8%8`888ׅ8}%8\!80i8u7!7777\!70i77776!6i66660i5i60i666666i6i6!7777770i70i7F7\!7r$P77u777"8 8880i8;8F8F8F8@85<80i8*8888u8 7%7"77i777777u7u7u777r$P7\!70i77776i6i6660i60i60i60i66666i6!7770i7\!77u7777\7"7"7!77i77u77\!70i70i70i7F7r$P7u778 88F8a8}%8V8,8Y8<8]L8^8"89 U 9 $9&x929C]L9R9`A9989&9}979x99999Z999-9Q91R99 9m9k9F9m999a9}99Z9D91z9 $8`8m888V8r$P8F87$P7i777\!70i77776!6i6666666666i6i6i6!77770i70i7F7\!7r$P77777u777\7$P8u880i8F8Q\8V08\!8\!8V08Q\8F8;80i8%888u8 7$P7!77i7i77777777777u77\!7F7776!6i666666666i6!777F77u777$P8u888*8*8*88H8 7"7i77u7u77u777\8 88F8a88XY88<88m8c9Se9}9"XY9+96q9F9S9g"99e[969x99<9ͮ9!9:|+::2*:C]L:M:M:G%:<|D:1z:"f:::z9u:4":99ͮ9{9}99Y`9@9-Y9 $8%8`8<8,8Se8\!8*8 7\77u7r$P7F70i7776!6i666666i6i6i6!77777F7\!7777u77777777"8 88*8F8V08a8r$P8w#8w#8w#8r$P8a8\!8K8F8*888u8 7%7"7\7\77\7\7!7"7"7$P7%7$P7"7"7777u77\!70i776i6i666666i6!777\!7778 88;8Q\8\!8g"8r$P8r$P8l}8a8V08F8*8H8 7"7\7\7\7"8 880i8V08w#8H8,88889 U 979%91z999J>T9Z9s989.99*9L9w99u:::::_9z:[:%:d::]@:XY:'k:ri:I::2:xK:U:w:~.:G:999$99l}9R999*9ׅ8e8^8i88w#8F87"7777\!7F70i776!6i6i6i6i6i6!777770i7\!7r$P77u7777i777\7\7"7%8u88*8F8V08g"8}%8Se88H8H8H8u8}%8w#8a8V08F80i888u8 87$P7$P7$P88 8u888*80i85<80i8*88H8 7\7777\!70i776i6i66i6i6!777\!7u77"88F8\!8}%888XY88888H8Se8w#8\!8K8F8;8;8F8K8\!8r$P8Se88,8888%9}9"XY9+96q9F9S9a9999h99>T9ߑ9r:z::1":N:sܒ:m:)::;!;#Q;+;1;ͷ; ;:%:::i::y::s:1ҫ:9\9{9Fc99`A9R98[9*9ׅ8888H8g"85<8u7\77u77\!70i7776!6!6!77777F7\!77u777i7\7"7$P8 8 8u8u888*8;8K8\!8l}8}%8u8V888,8,8,888H8Se8w#8a8Q\8F8*8888H8H888*8F8Q\8\!8l}8w#8}%8}%8w#8l}8\!8K8*87%777u77F776!6!7777\!7u7i8 8*8\!8}%88,8Y888888<8i88,88ׅ888XY88,8Y88]L8\88%969 $9&x929D9S9db@9999H 9z9­299b:t::2:IG:c%: :jB::Xr;nO;#J};Dz;^_;xN;;=;j;:!;|;rfZ;W@;7;;Kr;6::N::Fu: 9999@99`A9R999)9a9}888,8Se8Q\87$P7i77u77\!70i7777770i7F7\!77u7777"8 8u888*80i8F8F8Q\8\!8a8w#8}%8u8V88,88i88<8<88i8Y8,88V888w#8a8Q\8F8;80i85<8F8F8V08a8w#8}%8H8XY88,8,8,888H8}%8g"8K8*8H7$P7777\!70i770i7F7778u8F8r$P8V8,888`88$P8#8#88c88`8˞8888m88#989}9 $9"XY9%9-Y92999G}9S9db@99%99Y9<9Ͽ(9ߑ9#:|+:N:2:P5:p:2:-:$:*:;n;4%;e{;Ur;E;~E;;L;;yw;a;d;;;;;2l;F;?R; =:u:jB:Z:9CH99*979@99`A9R96q9"XY9t8`8i8V8a80i8u7"7i777r$P7F70i70i70i7F7\!77u777\7$P8 88*8F8K8V08a8l}8w#8}%88H8V88,88i8<8888!888!8^888i888V8Se8}%8r$P8g"8g"8l}8w#8}%88V8XY8,8Y888]L8]L8]L88<8i888V8}%8g"8Q\8*8u7"777u7u77i7$P88V08}%88i888%9u9ׅ9 $9"XY9"XY9 $9 $979ׅ9ׅ9 $9 $9"XY9+92999D9R9S9Z9]89a9l}99D9}9h9k9 9:J: ::+I:A:Xd:xK::W:::)+;J;wP;E;yl;1;;6-;A;<q< <<$9<(<$<</<9!<B;0; king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama5200/rama4-template.pdf0000644000000000000000000171550011744305674026721 0ustar rootroot%PDF-1.3 % 1 0 obj << /Type /Catalog /Pages 2 0 R /Metadata 108 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 5 0 R ] /Count 1 >> endobj 3 0 obj << /ModDate (D:20050721161417-04'00') /CreationDate (D:20040305112123-05'00') /Producer (Adobe PDF library 5.00) /Creator (Adobe Illustrator 10.0.3) >> endobj 5 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /PieceInfo << /Illustrator 53 1 R >> /LastModified (D:20050721161413-04'00') /ArtBox [ -3.69824 28.69824 606.60254 754.98975 ] /TrimBox [ 0 0 612 792 ] /Thumb 102 0 R /Contents 104 0 R /Resources << /ColorSpace << /CS0 97 0 R /CS1 98 0 R >> /Font << /TT0 99 0 R >> /ProcSet [ /PDF /Text ] >> >> endobj 6 1 obj << /Length 1135 >> stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 10.0 %%AI8_CreatorVersion: 10.0 %%For: (Ian Davis) (Duke University) %%Title: (rama4-template.pdf) %%CreationDate: 7/21/05 4:14 PM %%BoundingBox: -4 28 607 755 %%HiResBoundingBox: -3.6982 28.6982 606.6025 754.9897 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 6.0 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 -1 -1 () %AI3_TemplateBox: 306.5 395.5 306.5 395.5 %AI3_TileBox: 30 31 582 761 %AI3_DocumentPreview: None %AI5_ArtSize: 612 792 %AI5_RulerUnits: 2 %AI9_ColorModel: 1 %AI5_ArtFlags: 1 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -275 785 1 1229 805 26 0 1 7 42 0 0 1 1 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:30 31 %%AI3_PaperRect:-30 761 582 -31 %%AI3_Margin:30 -31 -30 31 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 0 %%EndComments endstream endobj 53 1 obj << /Private 54 1 R /LastModified (D:20050721161413-04'00') >> endobj 54 1 obj << /CreatorVersion 10 /ContainerVersion 9 /RoundtripVersion 10 /AIMetaData 6 1 R /AIPDFPrivateData1 60 0 R /AIPDFPrivateData2 61 0 R /AIPDFPrivateData3 63 0 R /AIPDFPrivateData4 65 0 R /AIPDFPrivateData5 67 0 R /AIPDFPrivateData6 69 0 R /AIPDFPrivateData7 71 0 R /AIPDFPrivateData8 73 0 R /AIPDFPrivateData9 75 0 R /AIPDFPrivateData10 77 0 R /AIPDFPrivateData11 79 0 R /AIPDFPrivateData12 81 0 R /AIPDFPrivateData13 83 0 R /AIPDFPrivateData14 85 0 R /AIPDFPrivateData15 87 0 R /AIPDFPrivateData16 89 0 R /AIPDFPrivateData17 91 0 R /AIPDFPrivateData18 93 0 R /AIPDFPrivateData19 95 0 R /NumBlock 19 >> endobj 60 0 obj << /Length 12072 >> stream %%BoundingBox: -4 28 607 755 %%HiResBoundingBox: -3.6982 28.6982 606.6025 754.9897 %AI7_Thumbnail: 108 128 8 %%BeginData: 11538 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD1DFFA8FF7DFFA87D7DFFFFFFA8FFA8FFFFFF7DA8FD0EFFA8FD4B %FF277DF8527D5252527D5252527D7D7DFF52527DF87D52A8527D5252FF7D %527D5252527DF87DFFA852277D7DF87D7D527D7D7DFD3AFF52527D52527D %FF7D527D52F8527D7DFF527D52F8527DA852527D7DFF27F87D7D527D52F8 %52FFA852F87D52F8FF52527D527DFD47FF7DA8FD1DFFA87DFDFCFFFDF3FF %A87DFFA8A8A8FD2CFFFD04A8FD8CFFA87DFF84A9A8FFA8FFA8FFA8FFA8FF %85A87FFFA8FFA8FFA8FFA8FFA87FA8FF7FFFA8FFA8FFA8FFA87FA8FD08FF %A8A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A97FFFA8FFA8A8A8FFA8FF7F85A8 %FFA8FFA8FFA8FFA8FFA8FFA8FD13FF85FD0CFF5A7FFD04FFA8FD05FF7EA9 %FF7FFD08FF7FFD0CFFA8FD0CFFA885A9FFFFFFA8FD04FF7F5AFD20FF84FD %05FFA8FD06FF8585A9FD0AFF7FFF7FFFFFFFA8FD04FFA9A8FD0BFFA8FD05 %FFA8FD07FF857FFD08FFA98585FD05FFA8FD05FFA8FD13FFA884FD0BFFA8 %857FFFFFFFA8FD05FFA87F7F7FFD08FF7FFD0CFFA8FD0CFFA8AF5BA9FFFF %A8FD05FF5485FD1FFFA885FD04FFA8FD07FFA9A97FFD0AFFA97FFFFFFFA8 %FD04FF7FA8FD0BFFA8FD05FFA8FD08FF857FFD08FFA97F85FD04FFA8FD05 %FFA8FD13FFA884AFFD0AFFA8FF84A97FFFA8FD05FFA8FD0BFF7FA9FD0AFF %A88584FD0BFFA8FF7E7FFFFFA8FD05FFA87F5AFD05FFA9855A857EA9FD13 %FFA8FF85FFA8FFA8FFA8FFA8FFA8FFA985A87FA8A8A8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FF7FFD0BFFA8AF848585FFA8FFA8FFA8FFA8A8A8857F %FFA8FFA8FFA8FFA8A87FAF85FFA8FFA885A8FFA8FFA8FD13FFA9FF85FD0A %FF5A85FFA97FFFA8FD05FFA8FD0CFF7FFD0AFFA8FD05FF848584FD05FFA8 %85857FFFFFA8FD05FFA87FFF85FFFFFF85FD19FF7FFFFF85FFFFA8FD05FF %85FF7F7F7FFD0FFFA8FD05FFA8FD0BFF7EFD047FFFA8A9FD06857F7FFD0A %FF7FFF85FFFF8584FD04FFA9A9FD10FF7DA8A87FFFFF8485FD06FF84AF55 %FD05FFA8FD05FF7F7FFD14FF7DA8A8A8FFFFFFA9557FFD06FF54FD05FFA8 %FD05FFA87FFFFF5A8584FFFFFF7F7F7FFD14FF7FFFFFFFA985848585FFFF %A9FF7FFD09FF7F7FFFFF7FFD04FFA8FD05FFA8FD0BFFA8FD05FFA97FFD04 %FFA9A9FD0AFF7F7F7FFD05FFA8FF7FFFFFFFA8FD13FFA97FFD06FFA9A9FF %7EFF7FFD05FFA8FFFF7FA9FFA8FF7FFD16FFA8FFA97FA9FFA97FFD04FFA9 %7EFD05FFA8FFFFA97FA95AA9FD06FF7FFD18FFA87FFD04FFA8FFFF85FF85 %FF7FFD08FF7FFF8585FF7FFD04FFA8FD05FFA8FD0BFFA8A97FFF7F7F7FFF %FFAF85FFFF7FFD08FF7F8585FFA98585FFFFFFA87FFD04FFA8FD13FFA854 %FFA8FFA8A8A8FF5AA95AFF54FFA8FFA8FFA8FFA87F5AFFA8857EA9A8FFA8 %A8A8FFA8FFA8A8FD0AFFA8A87FFFA8FFA8A8A8A97EA97EFF7EFFA8FFA8FF %A8FFA87F5AFFA8FFA8A95AFFA8A87E7FA8FFA8A8FD13FFA8A9FFFFAF8585 %85A9FF85FF7FA9FD08FF7F85FFFF85FF7FFFFFFFA8FD05FFA8FD0BFFA87F %FFFFFFAF848585FFFF85FF7FFD08FF7FAFFD05FFAF85FFA8FF7FFFFFFFA8 %FD13FFA87FFFFF85FFFFFF857EFFFF7FA8FD05FFA8FFFFA97F85A8FF847F %FD14FFA8FF7FFFFF8585FD05FF7EFF7FFD05FFA8FFFF7F5AFFA8FD04FFAF %5AA9FF7FA9FD16FFA87FFFFF85FFA8FFFFAF85FF7FFD0AFF7F85FFFF85A9 %A9FFFFA8FD05FFA8FD0BFFA87FFFFF85FFA8FD04FF85FF7FFD09FF85FD08 %FF5AFFFF7FFFFFA8FD13FFA87FFFFF85FD05FF85847FA8FD05FFA8FFFFFF %A97F5AFF5AFF7FFD14FFA87FFF84FD07FFA98554FD05FFA8FFFFFF5B85A8 %FD06FFA95AFF7FFD16FFA8A97FFF85FFA8FD04FFAF857FFD0AFF7F8585AF %A97FFFFFA8FD05FFA8FD0BFFA8FF7FFF85FFA8FD05FF8585A9FD09FF5BFD %07FFA8AFA9FF7FFFA8FD11FFFD04A87FA8FF7EA8A8FFA8FFA8857E7FA8FF %A8FFA8FFA8FFA8FF7F855AFF7E7FA8A8A8FFA8FFA8A8FD09FFFD04A87FA8 %85A8A8A8FFA8FFA8FF5A7FA8FFA8FFA8FFA8FFA87F5AFFA8FFA8FFA8A8A8 %85A87FA8FD14FFA8FF7FFFFF85A8FD06FF857FFD0AFF7FA9FFFFA9A9FFA8 %FD05FFA8FD0BFFA8FF7FFFA985A8FD07FF5BA9FD09FF7F85FD05FFA8FF85 %FF7FFFA8FD13FFA8FF7FFFFF5AFD07FFA8857FFFFFFFA8FD05FF7EA9FFFF %55FD13FFA8A8FFFF7FFF7EA9FD06FFA8855AFFFFFFA8FD05FF7F85A9FD06 %FF85FF7FFD15FFA8FF7FFFFF85A8FD07FF85A97FFD08FF7FFFFF7FFFFFFF %A8FD05FFA8FD0BFFA8FFFF7FFFFF7EFD08FF85A9FD08FF7FFF85FD04FFA8 %FF85FF7FFFA8FD13FFA8FF7FFFFFA885FD06FFA8FF847FFFFFA8FD05FF7E %FFFFA97FFD13FFA8FFFFFFA97FFFFF5AA9FD04FFA8FF5A7FFFFFA8FD05FF %7FFF7EFD04FF857EAFFFFF7FFD14FFA8FF7FFFFFFF7EFD08FF85FF7FFD07 %FF7FFFFFFF7FFFFFA8FD05FFA8FD0BFFA8FFFFFF7FFFA8FF85AFFD05FF85 %7FFD08FF7FFF85FFFF8585A8FD04FFA9A8FD13FFA8A87FA8FFA8845A855A %A95A85A8855AFF7FFFA8FFA8FFA8FF7EFFA8FF7FFFA8A8A8FFA8FFA8A8FD %0BFFA8A8FFA87F7EA8A8FF7E85A8FFA8FF5A7FA8FFA8FFA8FFA8FF54FF7E %855AFFA8A8A8FFA8A97EA8FD13FFA8FF7FFFFFFFA8FFFFFF85FFA98585FF %FF7FFD07FF7FFFFF7FA9FFFFA8FD05FFA8FD0BFFA8FD04FFA9A8FFFFFFA9 %FD0485A97FFD08FF7FFFFFA9FFFFFF7FA97F7F7FFFA8FD13FFA8FF7FFD09 %FFA97FFF7F7FA9FFA8FD05FF7E7F7FA9FD15FFA8FFFFFF7FA9FD07FF7E7F %7FFFFFFFA8FD05FF7EFD05FF7FFD1AFFA8FFA97FFFFFA8FD04FF7F7FFF7F %A9FD10FFA8FD05FFA8FD0BFFA8FFFFA97FFFA8FF85AFFFFF7FA9FD0BFF7F %FD05FFA97FFD05FFA8FD13FFA8FFFF7FFD06FF7FA9FFA8FD05FFA8FD04FF %7F7E7F7FFD15FFA8FD047FFFFFFF5AFF5AFFFF7FA8FD05FFA8FD04FF7F7E %FFFFAF84FFFFA97F7FFFFFA9A9FD13FFA8FFFF7FFFFFA8FFFFFF7FFD0CFF %7FA9FFFF7FFD04FFA8FD05FFA8FD0BFFA8FD05FF7EFFFFFF85FF7FFD09FF %A97F858585A985AF8585A8FFFF7F7F7FA8FD13FFA8A8FF7FFFA8A8A8FFA8 %7FA8FFA8FFA8FFA8FFA8FFA8A97EFFA8FF7FFFA8FFA8A8A8FFA8FFA8A8FD %0AFFA8A8A8FFA8FF8485A8FFA885A87FA8FFA8FFA8FFA8FFA87F7EA9A8FF %A8FFA8FFA8857E85A8FFA8A8FD13FFA8FFFF7FFFFFA8FFFF7FFD0CFF7FFD %04FF7FFD04FFA8FD05FFA8FD0BFFA8FFFFFF8585A8FFFFFF85FF7FFD09FF %7F85FD08FFA8FFA9858585A8FD13FFA8FFA955FD05FF7FFFFFFFA8FD05FF %A8FFFFA97FFFA8FF7FFD16FF857E857EA9FD06FF5A7FA8FD05FFA8FFFF7F %7EFFA8FD20FFA8A97FFFFFFFA8FFFFFF7FFD0CFF7FFFFFFFA9FD04FFA8FD %05FFA8FD0BFFA8FD05FFA8FD04FFA97FA9FD08FF7F85FD08FFA8FD05FFA8 %FD13FFA97FFD09FF7FA9A8FD05FFA8FFFFFF7FA9A8FF7FFD16FFA8FD0BFF %8555FD05FFA8FFFFFF5B85A8FD20FFA8FFFF85A9FFA8FFFFFF85FF7FFD0B %FF7FFFFF7FFD04FFA8FD05FF7FFD0BFFA8FD05FFA8FD05FF8585A9FD08FF %7F85FD07FFA8FD05FFA8FD13FFA88485A9855A8584855AAF5AA954FD05FF %A8FD04FFA97EFF7FA9FD08FF7FA9FD0AFFA8A8FD0CFF5A7FFD04FFA8FFFF %FFA985A8FD1DFFA87DFFA8A9A8FFA8FFA8FFA8FFA8FF84A9A8FFA8FFA8A8 %A8FFA8FFA8A9A8FF7EFFA8FFA8FFA8FFA8A9A8FD08FFA87DFFA8FFA8FFA8 %FFA8FFA8FFA8FFA8A97EFFA8FFA8FFA8FFA8FF84A9A8FFA8FFA8FFA8FFA8 %FFA8FFA8FD26FFA8FD09FFA8FD1DFFA8FD09FFA8FD26FF7DA8FD11FFA8FD %08FF7DA8FD08FF7DA8FD0AFF7DA8FD11FFA8FD08FF7DA8FD08FF7DA8FDFC %FFFD6DFFA87DA8A8FD2EFFFD06A8FD1EFF7DFD04A8FFA8FFA8FFA8A9A8FF %A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8A8FFA8FFA8FD09FF %7DFD04A8FFA8FFA8A8A8FFA8A9A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FD14FFA8FD05FFA8A9A985FFFFFF857FFD11FFA8 %FD05FFA8FD0BFFA88585A9858584A98585FFFF85857FFD11FFA8FD04FF7F %A8FD13FFA8FD06FF7F85A9FFFFFFA885A9FFFFFFA8FD05FFA8FD17FFA885 %A9FD0BFF5A7FA9FFFFFFA8FD05FFA8FD0BFF7FFD14FFA8FD05FFA8A985AF %FD04FF857FFD10FFA8FD05FFA8FD0BFF7EFD05FFA8FD07FF857FFD10FFA8 %FD04FFA9A8FD13FFA8FD07FF7F7EFFFFFFA8FF5AA9FFFFA8FD05FFA8FD18 %FFA87EFD0BFFA8857FA9FFFFA8FD05FFA8FD0BFF7FFD14FFA8FD05FFA8FF %7F85FD05FF857FFD0FFFA8FD05FFA8FD0BFFA885FD04FFA8FD07FFAF857F %FD0FFFA8FD04FFA9A8FD13FFA8FD07FF7F84FFFFFFA8FF7E7FFFFFA8FD05 %FFA8FD18FFA8A885FD0AFFA8FF847FFFFFA8FD05FFA8FD0BFF7FA9FD13FF %A8FFA8FFA8FFA8FF7FA985FFA8A8A8857FFFA8A8A8FFA8FFA8A8A8FFA8FF %A8FFA8FFA8FFA8FFA8FD0BFF7EFF7EAFA8FFA8FFA8FFA8FFA8A884A97FFF %A8A8A8FFA8FFA8A8A8FFA8FFA8FFA8FFA8FFA8FF7EFD13FFA8FD08FF7F85 %84855A857FFFFFFFA8FD05FFA8FD17FFA87FFFFF7EFD07FFA9855A8555FF %FFFFA8FD05FFA8FD20FFA8FD05FFA8FFFF7FFFFFFF7FA9FD11FFA8FD05FF %A8FD0BFF7FFFA9A9FFFFA8FFFFAF85857F7F7FFD11FFA8FD05FF7FFD10FF %7DA8A8A8FD08FF7FFFFFFF7EFD05FFA8FD05FFA8FD15FF7DA8A8FFFF85FD %05FFA9847F7FFFA8FD05FFA8FFFFFF7F7F7FFD0CFF7FFD13FFA8FD05FFA8 %FFFF7F5A85857FFD12FFA8FD05FFA8FD0BFFA8FF85FFFFFFA8FF857FA9FD %0BFF7FFFFFA97FFD05FFA8FD05FF7FFD13FFA8FD07FF7F7EFFFF857EFD05 %FFA8FD05FFA8FD18FF7FFF85FD04FF7E7FA9FFFFFFA8FD05FFA8FF7FFF5A %855AFF7FFD0AFFA9FD13FFA8FFA8FFA8FFA8FF7F85A8FF857FA8FFA8FFA8 %FFA8FFA8FFA8A8A8FFA8FFA8FFA8FFA8FFA8FFA8FD0BFF7EA985AFA8FFA8 %857FFFA8FFA8FFA8FFA8FFA8A8A87F85AFA8A9857FA8FFA8FFA8FFA8FFA8 %FFA8FD13FFA8FD07FF7FA9857E857FFD05FFA8FD05FFA8FD18FFA87FA984 %85A985857FFD04FFA8FD05FFA8FF7FFF84FF5AFF7FFD1EFFA8FD05FFA8FF %7FFFFFFF7FA9FD12FFA8FD05FFA8FD0BFFA8FF7F7FAFA9A87FFD0EFF7FAF %85A97FA9FD04FFA8FD05FFA8FD13FFA8FD06FFA97FFFFFFF7FA8FD05FFA8 %FD05FFA8FD17FFA8A8FFFFA97F7F7FFD06FFA8FD05FFA8FFFFA9557F7F7F %FD1FFFA8FD05FFA87FFF8585FF7FFD13FFA8FD05FFA8FD0BFFA8FD05FFA8 %FD19FFA8FD05FFA8FD13FFA8FD06FF7F8584FF84857EFD05FFA8FD05FFA8 %FD17FFA8FD0DFFA8FD05FFA8FD05FFA8FD1EFF7DFFA8FFA8FFA8FFA87F85 %FFA8FF85857EFFA8FFA8A8A8FFA8FFA8A8A8FFA8FFA8FFA8FFA8FFA8FFA8 %FD09FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8A8FFA8FFA8A8A8FFA8FFA8 %A8A8FFA8FFA8FFA8FFA8FFA8FFA8FD1AFF7F85A9FFFFFF847FFD04FFA8FD %05FFA8FD25FFA8FD05FFA8FD05FFA8FD20FFA8FD05FFA8FF7F85FD04FF5B %A9FD10FFA8FD05FFA8FD0BFFA8FD05FFA8FFFFFF7FA97F7F7FFD11FFA8FD %05FFA8FD13FFA8FD07FFA97FA9FFFFA8FF5AFFFFFFA8FD05FFA8FD18FFA8 %FD08FF55FFFF855AA97FFFFFFFA8FD05FFA8FD20FFA8FD05FFA8FFFF7F7F %AFFFFFFF857FFD0FFFA8FD05FFA8FD0BFFA8FD05FFA8FFA9A9FF85AFFF85 %857FFD0FFFA8FD05FFA8FD13FFA8FD09FF7F5AFFA8FFA97FFFFFA8FD05FF %A8FD17FFA8A8FD07FF7FFFFF7EFFA8FF5A7FA9FFA8FD05FFA8FD20FFA8FD %05FFA8FD04FF7F5BFFFFA97FFD0FFFA8FD05FFA8FD0BFFA8FD05FFA8FFA9 %A9FF85FFFFFF85FF7FFD0EFFA8FD05FFA8FD13FFA8A8FFA8FFA8A8A8FFA8 %FFA87F5A857E7FA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8A8FFA8FFA8A8FD %0AFFA8A8A8FFA8FFA8A8A8FF7FA95AA9A8A95A7F7EFFA8FFA8FFA8FFA8FF %A8FFA8FFA8A8A8FFA8FFA8A8FD13FFA8FD05FFA8FD06FFA97F7FFD10FFA8 %FD05FFA8FD0BFFA8FD05FFA8FFFFFF7F7F8585857F7FFD0FFFA8FD05FFA8 %FD13FFA8FD0CFFA8FD05FFA8FD05FFA8FD18FFA8FD0AFFA97F7E7FA9FFFF %FFA8FD05FFA8FD20FFA8FD05FFA8FD19FFA8FD05FFA8FD0BFFA8FD05FFA8 %FD19FFA8FD05FFA8FD13FFA8FD0CFFA8FD05FFA8FD05FFA8FD18FFA8FD0C %FFA8FD05FFA8FD05FFA8FD20FFA8FD05FFA8FD19FFA8FD05FFA8FD0BFFA8 %FD05FFA8FD19FFA8FD05FFA8FD13FFA8A8FFA8FFA8A8A8FFA8FFA8FFA8FF %A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8A8FFA8FFA8A8FD0AFFA8A8A8 %FFA8FFA8A8A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8 %A8A8FFA8FFA8A8FD13FFA8FD05FFA8FD19FFA8FD05FFA8FD0BFFA8FD05FF %A8FD19FFA8FD05FFA8FD13FFA8FD0CFFA8FD05FFA8FD05FFA8FD17FFA8FD %0DFFA8FD05FFA8FD05FFA8FD20FFA8FD05FFA8FD19FFA8FD05FFA8FD0BFF %A8FD05FFA8FD19FFA8FD05FFA8FD13FFA8FD08FFA97F7FFFA8FD05FFA8FD %05FFA8FD18FFA8FD0CFFA8FD05FFA8FD05FFA8FD20FFA8FD05FFA8FFA97F %A9A97FA9FD12FFA8FD05FFA8FD0BFFA87F7FA97FA97FA97FA97F7FA9FD13 %FFA8FD05FFA8FD10FF7D7DFD05A8FFA8A8A87F7E8584855BA9A8FFA8A8A8 %FFA8A8A8FFA8A8A8FFFD07A8FFA8A8FD08FF7DA8A87FA8FFFD07A8857E7F %7EFFA8A8A8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A8A87FFD13FFA8 %FD09FFA8FD1BFFA8FD0BFFA8FD1BFFA8FD09FFA8FD13FF7D7DFD11FF7DFD %08FF7D7DFD08FFA87DFD0AFFA87DFD11FF7DFD08FF7D7DFD08FF7D7DFDFC %FFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFC %FFFDFCFFFD7CFFA9A9FFFFA9A9FFA9A9FFFFA9A9A9FFA9A9FFFFA9FF7FFF %FFFFA9FFFFA9FD1BFFA8FD04FF52FFA8FFA8FFFFA8FD04FF52FFA8FFA8FF %FFA87DA8FD057DA852FD047DFD0CFF557F557F7F7FA9F97F7F7F2B2B552B %7F557F7F7F557F7F55FD047F557F7F7FFD18FFA87D7D2752FFA8FD0452FD %047DFF27FFFFFD057DA87D7D5252A8277D7DFFA852277D7D7DFD0BFFA9A9 %55A9A3A97FA9A3A97FA97F7F7FA9A3A97FA9A3A97FA9A3A97FA9A3A97FA9 %A3FD1EFFA8FD05FFA8FD15FFA8FD04FF7DFD04FFFF %%EndData endstream endobj 61 0 obj << /Filter [ /FlateDecode ] /Length 62 0 R >> stream HWn8!])1X@/6,fEi!j!8>{|RȪ:%U"]M>h5Õou4ݹx(黫RelϮUbǮy69PVEZ5]t?|]А܏ȿ}6Yʿ|"5wz|.ES_KP2 _[MCm?W~8ު VnjĤ YOZ,Ӻ 5_UM|a^q~\\]o!ӄdZӛ Ϲ-p~N99\\B?܆Q ӹa_H`p8AEhվ]wR3?f 4EGt?34{XhdPd/Z> }RH#s\Ntڈ uһmjlE۾-9VNA =};O`Yz7o^!d6ݞJP9&0C\ѓ-14nftW6'8luvzbv&CS)+/e|I4Ms4/:﷦{p~v;y'=bV A=kd'&i+#I,|m)z4y75m^# TFԺV%u;#ڙS}0m4':A=;'AwGT磪Gn6=Ԛo2NzhM#>sꉘ|>XlUWh>v&~&}Cުqg8lwSHZUG um}ߊP?ij:mj\ϭ+(ȗ?z4AVm%؅v Z?fFNji:޹LLN5I]1҅lOIzÑƑKd:8(wºyn AI;Ӡ\EyImm;<5xv&x4}mbk}jԇNyEA)8oƣxf?V#$[T٭{3\Hp2'G19*7ÿ#COj ny@y}( Ng0D`u9EBh-DEi]ݿl?트WsRzznϺ_P3LvZͤ;U{PjG $ :x+rAlxJd9PX@e`(($ fa@V)("ʩiBSќBq&d1KX2OшEQ#((ʨB3q%y3W &"D.JDzI.e*sY*cXIE\!LzL$OJdaTnXl@> ! 3AUe qH <^8/MBum4Rn@lV1O*O*|K3:,JhA}nnvYp-Z9nvYF 3P0cY.GI&!^ -ncԦaXl*7p1S"Y[bSDdg3A#lMMU ;ښ:vT Roa-!#C!pvx" }jv9t~/Օ$7N(Qcx¾ؗ}oFSVόء]{aM-SPGTeZr[d>V/[b|\Z+NAN&S%'7BʔnfJ^;t.&+u=i4ꥺ-bڈ(aaQtU'l=xz|rDynI)f͵T5W5UGu|G91}ʳaw<1z=LY! Dg7(04Z +Uuo6=rK8ςo;GFAjod g@Z, DF *1`ιX#sfxE>u\p)Tw{8>f$Al^/ɧ] oE;)zޠGc۔N<1 3v{é`$,(a5,nC3t`; g!T]9 @1]n n+ ALg X hG@B`."&C{c[,q93g ԝhw{v4o}FMV;_u8ljV?U꿨GrQŤ6$wc}P'!j]$GKtB`YT"5SUbj f!KR6ߺ6>FCrﻬkVbY4\FaE1}ݑ]%^grEb|$1;* ߔ`B'5;{VdkNlcTk.' "kkQkSIEM5>$ f-b:M7JxBRb2Z(}_jyԚk<{%!iyBZh~z bդeήB-Cˆ%}W6ЭqouOUuQDLc"yLM^]W\vBT#$9Wg NKNCU.H|%ՠT˩ʔZ: C} gMOΔcM=ӴC^9\ZuZti& E:r!i-qL٫^^˯Ug:'Zk¬5:N&V]rj̮GslD%M'Dk*v:޲,D5~M3]jrdyeԞ[,# cJ4k}8-`Zgœa R#@obEVYNgrc1TnbZz7RHl9ѫKW^ټ,oOK+Vs0}ZvQ9L]o/d*v,$lZBd&f8FnÕwp\&0J@APn;€.~ jXyx#{5LO0PDU5Z6SPն6WJUfKShyx=$2cE7(V% @YP! CBCslw#v7|-R3cЊk8u6%ֈD1uL +tt4 )QRl\t=C`Paql< #y.۠{ex>3ػ01)Ѩlgk>m|8&K;?ȈDN>Yݕgϝ]Α3fr52f8ZaBj~-orٛ<{{~r#.R׼gk՘Ԫ?ͥޤ,#xk[\ouk2.&X6XX|0ijbEPCBWοgMGM=O /NnS˝oqtt5\̪{t|tJH_"]A0T/ﯞ9Ru5V5Kuڪnhd#^&rH&Dc"~D^޹ Thg[fOE44Mrxnɶ5 :$[ ^ y/)oڥEdz;?)YС擢f(tMhNy D2!ECc0:%s▬HSŀ~|z-r]\etd-ad:+#*TQb-۩姗n6RVz})b=O}8XflURS9s3^<< 0TQ=U-5Og5Ke>s槪Wq`Q`cPj揚,~cPS%Ȕ@ᜣVTQfR(Ϩ%S=e/ɪ{Itzq LY2HVK]:M 4q(Z_%$ʳk1IؚzJYYv'tߣ-4${; $b0]m,H68HlD F6HYny{I* XvY;A E$M8%G 'aLHVwn`biX %IcGСA1`xE脂%Ar7 +#ųNhBV*pqw w##z, lqR `z z̨ޒ;k~rZ%r"U"HTv h==g,YP :À9_LV:#%'8*qX9KJu:WQS!ijsW.R\ZsWs=jh іE0 ~6{^#4u~ ;Fo.7w2~;&YG->pbyuqc ˻>r::>6Xpz{xboiX Sk]Ͻ1=r ޲vG'0y=嚩82Q?n 4%oeIj^?oo~{㇧?ᗏOn BrcRpEtA/|mfݨ5>ۙvOoX@>/:!)gbx.Mm[Q:><|W|i"Ng5/ \3)WZj6ͱJO3 lZ~JyP4D-S4}B>}Pv!*3QJʨ dݪ)_JkhUЪn^VL hcŪE Q)3m]l *j6Z N2]2A eǠ_^Pf5\ ގ@wdp`h}V!L}s/q8Dm8_7KLHd ȥGN- =Ȇ|/ /P o#C+ P ey٣qdh,l0>D;#+Ꜥ&^DҎ ߍ;+]м3xB3G45A@;; pG5W[ Y1(46v`h)'tF (ЅmN@ &$d!7%`+p@T8og?DI@GnN $ avKᤛY b\ hhRm% 5,$ }o}zI@q] %H%5z/6{SP a +6}AbMdėeWPs24r(%BJJ B +B" ! DH Dz.Ot'ςs'0NWV2ۊV%4 ( f .^eN(XխTEт|5oE)y%K4~C>e9as gTOb~%KD#RB~PB^wk8bo2 ,@'Mrl1I\&Gr@;%a\aqB=a@kPplS mD/.@2QU01Ӂ@EB` Y '脶`މg1""*P5 4F9Y.{ w{vLucVSUTEUbIfz׌bjYl|I6SY}F sck5^5R"d<21EH`H9ɗxi[2,Zdȕ"VT*E5*'yDIeEٛϝ|߻Z«/!Sb#s%#L3i{h_"(I*&f3?boj;Y1['RLݒUKQ,EjnzB[шjp]6&*DQNw0fw]]$=+ǟᆛz[wn~|4:d^}wmȇnlپC_@vDCq\y<s8ˁǻl9ޜVj=ۻ?zx9HH6DCbvr2T d*!DrDr:;Ls_/9(pA_t/6dlYWIlEnj)c| "I4]ukZbP3qɖq̦1mqk!G'r0yQd/iv=dC9)/ɍ#?A\,}0_g xڐwddYng#y JӜj63# K`+-Yv[ .-_01B3g `۞Ie֬'O -&̒ywuܖV UU8+9 CBuSZyOIII sҝ2Б njj6` ${NJٽ3K]"URjjⶠAF  Fgu>'ǞZhVfWvc,u,i%2R*q#3lE00"S`&un^ge:8K֩tZv2JHFDB@`PPPP߈0 BBŒlL"Y .Q|1׏6l_sh1O+,1^Ƭ>0t=o`Vc 'OJD\cGB/A+~ #6/%Vp )w$?; ?GB/)!KY`ge" D2p`WA<(= 4z 0P iRhaDI >dq+G{1v'/ >! 4xM-ܴk!v;vo  ;[y _`Op}J-AVx錅12 Ddۤf(+wf*"AF40 XY#CBdLhʰ01. &̰25L }ex4>5@̌CD1 z0z(HEiT]%Wo^ԣC~᠛#%!g_! -}9=>(;G;mAۮ2S4RMp'Im(F1l"7ddoɛù5pk9h ,"nSÇm񇾬0߲淬gmi R]|4)P| / (^w]zak^h󚘝w}O>q_f']_f:+Z/ńūB_kg%h["]R8?O?b???ߟ?_?{ l^7]\ţ-~p9]|X/vA<_Prz/wpE1=Eq$%vOŎ 2E,-]_a11@P`pCÐCðC#2({(}(eDEFGHIJKLZ‰JEHQL*+([H-3e$ $+HmTn-5~[ x^/K*?r/z;|~ϟe)h;cCēRH E  <X4`8,#XJ`N`R5W/ Z, B3@%oD*4W #-dDqdUܝ*f?2Gt C%r{ NmVUGS E>Srz d]. Y0뉸9{S; ,M`d6dp_ſ??ITO&bo7Iy0SѵMUMͭP=E^ݒ׎:OUJ9JT^q*.үxd%@sֱh .map9Z'2x%6(;ֹ Pq`=xy7/Tcllw$ \dteujLp ] 늿iPo-ɿ"NF9ݓqS{ؾ~'OdB7771Uu|Q I]9 DPkBxIVH=%EWIJ-utN1- ~J0=[  @cH% tB?5\ :ݵP_ ȱ@sL5B-[CZ86s) B0G/ ڴ6:<M@g?vxW'I,A]?qӾxqE. JKeMjJ0Qj&3OՑ *S_)3䯎,LVJ䨂=[S4DM*SJU(Rו:&W]U_SJUMɽ~USm/uIUݦoUjM5BMRE7M*L'P/2I)7Im%SRPz D4h2IIJ∢HOQ11PI;9HEk10B(hf4 J/.-,+HPbq6ibg % B 4FV6X%B¸d!a굸)pevW-^[jh=TÔ$3>r㸙D>|Ź-&h m,JxuF{c2>)gN~9?_#h~}.GROT giojX{kjQQq"8ܘh~ˮ3^17$Cn5>iX)gruxo5_x&f@w)@ن[9K6>tld\W̄n"lNAGA£Ip 3p) HLⓐfuWdžʼd9gQ'I$`-STh!Id4AxĘ/#qD/{3GK^mxmx pƽ7{)ުQOwVfčsd~=e>9E{LqPs98:,=w9@,m$gMr:Bŕfpf/&_O];y lhXT :X|Nvp3ށmvx_#K@0 P?x^@3hsm'!ؔc=t@gF'[ϊd dE?I5IpbP8N ,A6`\ f0#%P`9/¡b6pI | c_:1p~Lw'N̜I|0A qaQ\4&`D,gaH|jX`_X:@#oa7؈O  #CoEmH^Cu0L$#Vͼ0Rh 8Ӛ=,?_yކ-"?ѶqlGO-xc?d߆=gI'ǘ]7ڲaxg^mg7oc{7O?[ލϝsl-G{2_Oa__?/}/G?_ϟ~я?۳OH0?CDpx'[+o+i^C)V AK6-_X3'A" ,tDDmPQ NDDڄI9ԗ+;Ps zDP (jIm<":[uYYPkn@ŵaq΄?Lz_Hxqa +@C۪>a' k,X0A HbGӠ{׿DhHq0 ^ 8Yw~X͠?翞7`պخ;_Ax\㲏?/ҋE ] !B,>zeݽ{NZ&/ -x]g_;0p{+if5VkҚ۰*~'а]`L CYq@JD:bcE^8*g@,* {%!,B$ϗ0b8o핛kZk@Ki 4VV(63T&\SL~ #7i)ʲuL# DhJOQI&Y tI%[PLDWf@{9^r4{jiEbxO!^^ ;<'G|'B ^5&1$`{MnCw8MCD){Fü@OĊf:3|G<7snu[6Tzȡ=^ro9Ώ\m ͢1VXbmQW,rYJXC^A,OAЃ'aI#FEj!E+c>FhI"4Ixs۝ 1Js%(G%Q$_7i+{6 وov;*1P hHP/%! 't0h?TUF|[KREiU]֕YjTU)pJLEjIhߨBJP ]P+q(<<<&YZXV 1Uj״=itT?E157-pk]g_;0 C #dZ j(AShW; "{PqULD4:Xc( 5!Pkbm~7 BOiw/9a!K+6g a͏̠mkƊ76#2G2,:ݐ#0?(w<*5'ˤyQIL' `JghD*L A#'0+!. WofjO|5UzV:JS%Q/C-~J;tJK)Ew$&#-p܆bSf ( %>[!,D%ANZ( 3LcM"48X$\|=srQX'0 MEF/Z`/,y$E WۢB|O┨=q3"UpoRCMZM7!%  d=\.SgDA* %$=B۾٪^E,6\y!~T{΢r޻_݁rMM8D[%jhFb J)TVR@"I~VywXE)aA)eQ=:uu՝g#O#@!ؕ%Q4<"h$B@BUa:+PGjtV_hS ϖϊg:{"@!@*(0<*V܅w= S@R"E'(k(U^T̨ 7jLzDA*T$TDe j/јIuÁQN'z Ls S.T뾙^n?fGrOw@EQM?fa##?n`LOהDf06a岢1K\d4$ L86;5w:g{'BJI'a| ~bLވي=Z::j ҃!4y/3cf%A{=chxmk؄*q<:#{o~B=Sj+:ۋTacQjk/RQEP*]䊒Ƣ"Ր(Hp(/ ˭؏acXfk7Ot~YNu K%ow?m_?LXg#ksÇn~X~J/__/}a˯/?tWo߶d ?Bϝ\U~bWg EW=qƪm:y:,?FHJKy !A҂bAg֢b%id݈hm4ăyfr@s4|'Wjk-R:j@?'gqo&EaŃ^nj?Gg81D6vQ ݭRYe`7:r_N$;(-1[nWҦRsSKk8k+u]vj@pG[ӹڻܽm[Hm Tc9K9t-lmv6w5 msnum/n~_“r/Lu9 y},5Ul469c^aQij;٩v)#%_~ǔ?zfoqrW!ȋ.kv xWdw%Y0~dc.gh‡-Wό9mvA(7M)q,?WbNvw‰chEFtD s= =0rEkfw]3eL`{sjMHVZ9e)|{MfFCmKi9%Ed}mղVˀiQKX]yHĊ{ Bd+AtVE,҈k\q,zH'x go{21AB9\-O.ϮO/G<;/.e肒L U (Y?ZZo_2 qv@#agc1M)=@S7d o gqF1aUH21`F#"pπff+[wmvu!h]2VMUmZ]qԤKj%uܓTsQA% |qa3KX.l̡CxfXtޜP9(Ale龜ChI#H†J}s&DŃQb JQQ{ycrɏ ![<( \aIɎ44LJ [ G*E!3.. Injo/+{ڋ}8oѹy*D sanYmnmot_zI^8nnpOIp[3yEBW `#t/às0mh0 3np\;;a 1&Gh UP̊34;ٛϑՂAhe5Uu+kϫ;P BVv&`AS)ljDE8Yy8  E@T.]F@ྉny$ub0{qO̅ E~J; @ԓ`||OMWD8!R6˓WO^׌9yU†Λ|UG'_ka]rVag B+w_\_W/KNU椨5f›$ʛxSs"(_2s:P9w*u*B+D ҆҃!'ӑ;cNZ?[WPWÓ EL2Kɒ[TIND"V|-Z3wM4fƒ.0],K|-EsP(:uWWXewI89㤒q8D$]8}RCd,Vö꺪)\v;ݴzIVU*wBqŤŝT"gpO6̅̇Q ֋EGEj &;Mixr/Xӓ\rW륶!ε9!Y.,W\q8 ?\՝fV(åh*,TjF#j2pT0JD!RKTB a[ -:e%R$Uh@la!1bLx|jTa1=<Ȗ}zخqa=TjTae|k2{Zފ-wM.lg?JǂWkl89/{$){$ $2h"K\R2L22L2@{{HoaffYf 4 I3>F>7{ܲN^<&,ѯ}n kĎS8AbD 1XOPIgGjQ*LH"zG͟wW/T#y z+= z|*RΊZΐw7Sd 2ȽZ豎]AտeƋ) a(z*.z+5:͸a7%o@"'I8aRe[< p8eNWUMQ?@5+ ):xFKdlZG4 gL*`d: Ѩ/ 3 q ('n^iH)(]wRCN~f?,α* 0 endstream endobj 62 0 obj 18206 endobj 63 0 obj << /Filter [ /FlateDecode ] /Length 64 0 R >> stream HWn#G^/B`z>/|a0ìUlRfd $&^ᚫpyg㴓v4[m 6X8KPVZi@)@IDǘi@H=h(H7vy Bw!oC %> 4n9zjGm# Q 4ChGâM+bE/N:ht:<2P@ Rt`x (@S?D ( 4$[L` z B>h q{_T_çM!䃊Q𡓥IH">/}->|zq?N >T''Opsj_8>l;بUWw<_@$X>\.\;߶[G㺥7??קO??e:ENTABJc%0Vf̲U6O !pXAETVEUXYqqe +1tĐ (.-a9c=!-)A  "^L\os,;0L 9M:J)ehFF!3 ѰK@ev/2 T!YW5 _~U脷~~yxx|oeO\@%Q1h22!~aAWC{osOuaf ЯlZmZ0Y &+]{mR38a!gpsJ-Jᐿb1hQh[ :E'ӊ$X D[޸T $nC\[BM1j ARwS^Q w,sרo{GA>%ua1r M2 A +ߔ䰬8,S\3ZYgln/.B0 ӊ/]IPL{ѸwA ̰z \Z鸥[˸͈b5k̡KQ UMR5`mÓ ;~]a#!#)#1r I@ulSӿM MH)Vy1%}E%Dв7kZNv^ŕEd1_.$ (%\l GJg/ToYuO~(_1iiU. ƞz k>_MG@#ЬcS$:SEy<\-G:QoS~ǯOm/~~ugqs/R=R_=ڥK^%Z8gWb5#֖"I7**~G7I +UhU_(V S 5-@$JWY(gJP ˩ 4C6jlQdP+'.kb[>!$OXȱ"!2L6|c yh @;,P,P-!WLC{<)AgҷOk&̣[hԵQ.u9 z@>z5wU[h`}'V V.C9Ro Tx;TX q E' D=NH;h]B,=Х8F+ IJ -HCN5Ϩ7Up;WjLR쟥 ;*^K*U]u+;k[8aUí:N&s„g 3_D6ЖtO+S1t)+9bn&_7#  dݓdcs!r^b Eh9{{{ ,ޝzꧪD>d>„~ jLl jцh6'‘DžCA wPB Bm@=_3xJݧ{bGw-s^GmlPؼևG{߯guV^Ep_>//`Ӌ PX|8u4biS jdN[ 7*p#VL{bi)tvn|R{o~Kw skKc綦vf>FޠZעm#ZbѦ =Еy^|.t }A}6(V@*NB)GeJ޽^ݽ^};(A -I}7(z|2|ݱ,_ovxJ1_>/d:}׸ʛ ~VOgs);'F=2sUqi\N1K&\$˻=ʹ*L.S ^R!!X_b4/2`I6f\^+mD3U39. Xm4gΕ}ç}/Ib4'9$Nr<||F;ZI'I_]ɕ ]~QAY: Aa BQmJ%Lv}|s 8Pi @.y(˱%4T1paɚ$ag9ΏՔ[iI(ZPbkmErcH}`Ɣ d\ƳY /;h"E(3R +QM+s#UZJ(@N֓ MgUGo_aT'bQMcTx,62! >P"=HT[,xX ΔX@!X=ʦY5/l!d2 NZ bD՘, o [UWrt9>UՕ7ZnJ':.|$ZGTHU=f-7(F;9[U]#~Vbf 阪+-x+HQ-,f(̭?ώ@*1 ,̮|OG3<jܜNb3$]b-U .{q!@,UDr٪*vJn;J8t$gҴ"2 ʰ(b,~P|=Dbg4f~#򘰱"0yΌFz `h{m[?l_\(r \ ,d~k?0UPN=7]4Dz iyg/^@Kc.%(Vou]k8m7>-7P)?F˓F$<%ڦ H:n]tDU(PRlj8iߕ7fD'SJQoD`ʈfQQYdsѵ4k{dttѵ&<с]l։UZSlS5.=#t +4uKeEz[Fttaf#-IOt}08&;J.c]4]Wf5In-nww9}Tѵx\ݭ]o6UZEԪ~}|ѵen cxqY>ܽ:͗_] ̓R1` oy;g {׸ʛ ~VO\'|g6WL(W a2`Fl%ID:zkI6Ծ@&WzgB=^o<$ߴAo?,ӟ–|;;v/x_ާFTP @W :uۥv-<^ΪURUڗ+R9ݶg3a^VðtDS>*٬*l$S 8આ؞=O 6CZ]tpՔU)H߬W͎^ }yY\gfH85qAзHJ8w1D>(sQ(<e=FQu2Z^`@C}y=u_͊ayUg^7 '+'l)M\L#Cnt#~o|O7~ x!#$ ǎ/ZJRB-ыג%:X81CMf^t i}WBaqA}Z@FBǞe*:[QEZk]OKd[t^J(T/46n6DG(/SB3 hIH=`͂~@1&ċ+C s3fM(v"nݞ|T{U.AGSb*4pZi'tLa7{Zǘ\(9Y1%<6{IIadb"J=iF P 2"dojq--;4]n G2%tޭKsw.IeЋ97 f" +Nj(QŭZF9!M``M{Mx$E-./Y,Y.Y=5Q?ǥgc聜*6Sb-ȑ@lH]ܙLԹĔ Yz 7"l5D~*M܎]עFQV TFg 7ôV#iKCg&rG>Lzr.҃量([B ӗ 8 lfZ ikLY8&0ܺk-ZtiPUGDy?m*s*JC+Yv@g+2K!BC­b2X(֬U VxhƗr֛G!{o QXע́NЮ&PGNsuk(Ҝs{]ѻFL5/ PϜҝs!kvaݘx )م(~\i\c;HP%U]Cތu C싱A"Jk݂K&ث/0/KgekzWlEUG 3P %+@pur=|t*H hZjun Lj)Ca6J$V g~,3z)utpk8a6c7%v0zb(~ ^pKƧ$G8ܠj<哸]曁g *'kn҅yʥѥJ <$N|Fp73@1<[["Cr&!5sm`Ĉ^^qDQ|h[0x''أY>eNtYk z %@/U(`\c|B-Bk& m5;+bff7+'+l&F(1C({ x $IkV>*Q5̭yѧʩ$k|3%N+7i5ORԼm]U|DDM!@ŹAsΎ[% 9&N)KILmԚ>\ gz[D$ъ,Xl`±FŲm0-us&c*Q#998aG'0DI8 mX (j$EF r+ jkjM[1rWY=@h/ ,DF9y%Oߝ_P0dS%e]%8³q$]Ձ`ͮZm ͉bԥMgvMN5Oѓ m%z ިZZ$ Pp5d !{Ⱦoo.'~jUBiW| F-Ed;c8":&ʄTNr\®,\sh'n:[n b.֜Zy^`ГvY2en#U^K֤Oa;J*i6e>sDU&}ks37`kV)tI2~q׊W{Uuydʐq0В̄:Q64JmjsӘ 8F%Elm< z֣0rDO,BUI&fUїQT:Q% R:y Fnu4O?nv;֖j='Ӱ,<7~dʄ4b`*d6`$ΦaNV-r :W(j\.fC摚2j䴋֠Vȸ2^e@1n6 I* F̬o9 D1,4zV1h,p.10se6r>WT߅p^5:u`u|U1Қ 2Y`m̹=ݽSNZCY DXn5͵93Wۤ)޾o%ZU9gl}>Lyy0tB):oLJ۠e*J{Pq%Z X8a:,-o2(MEa4;)xڑqUt $Hw 2JXk(#O}> c2ÍS\0"W^L/s67zݡEIxdYHt8bAH2vWrl@)#ݪK&UyfƧzkHu|(~-L ij{` yNx]ahbkU@1 Tꪢ.Si Z V~p,C9NIƷyv-%W?la|mtE;w_멍?O^ "?f;U'pI&d6wz _َ.?.El+E*§> =bǷ2D=XzE. 㭫Ɯ:9}-.u#?ɘ~`Z'Qr Bvgs -dEob= 6l+2&߁D"X@#2)7@b[~NO H:OMTʮ]\ƲJg;8s*Ky1'=mbjcV#A\dIҌ8nŴrBOv )R"A/=ro @t'S?I-Y/4γ%i/?cŠ˦[] ׂ7~Oי৤o+#% %> 6ί~p(k-u *с9mS0ݜڜоr-yt$@3޿uq,y{5$!hVx^zy=mTR:&UDZd+ Aү'&&(@WʸG8ŁoifʱQW[2k d⊣5G . xo.?u9:V}18jj'6Н&Nzi<yڢuuFEPW PO]Kd;@rK}eتmzOmWre _*r lMDvꅇA t'I#ɪa_ۡ>1BpX~ump5˝Vd =-ݬt*3#'w.{pUKD*Ρ92f.'t1c^ʠZayHZ8oٿy ]E9t Z) zQG8_nt漳׿j: cg#촷( z{Ӓꝿ}sJM|^8Ch]8:6|%id },^1yƅu@AFIXP.ѢO-`Z)N4Xs6~*.S<7x3lW@ `q7!ъ_߱$7~uHjm:Qhөi.rp2NI5&dnoRHb;{ 2 Gn~(]8Xl(4bcu7:ؖ!ݧO/c&%`ڦX:s Y5y:7 L. Rs靈hYKP4g:Q1Ϲf~7Q~(h4N`>.N5{{GJ|ԫp,j;AcHv6{-87Xm+uYa 3;YeLCY*&3G(bҢ77p@R{ZnrpZc1H@1d^@Tɳ&$),`Q 0#n^iJrw.(Q`#QFcs BPkkf,c:@aEѻTkR?D M`kkOsV R7[a̼&;`>iA2:9sMʯaw4})6>V[A+Cʑ }p08of3kpJjt*_`¢$EJ#m>cq/}QReЎW cFA\02K K(Y+[yX`aVUx?x څTwS 5A$l{q⬥LPHs3X;6:ok ދ_OGOg^hy7{t'o#|c{2Hr$wg;.&δC^j'=fn8PXJCY{؜2D6tud5uR*ywL+A5k]p)Ḱ.b|ucTmb0_~m >!0wmgs|3)zz1 | ڱ\*o aw* B-c[M,yzhz'; jZ4>~#:b|;2"hF944WWKf,&OWuyV=ۚ9w^Rk,P:eZCx9GΟ?WL7."&7(3׳Gh~,j8 YjQ& Ӻ &((c+D'X (=(28?s|@R:Vh3U(a?8M ӛ8DbJ;2?seS/xiDW9Rjx"|w *HȞmάcA@x>UOnu~|F}?rMսWo61FZ{hv~2H[4k)Lq>I Z'AtӨU9W[@`f kNvL,[ a>1Bm5/u*Y@?iJfZ^,@ZJZ8J[I}h?M 47=Ip9#;,[Ř'D9jKZEpW23`Cd]Oi Z>UUgmx_5{֡vFN_W溤WU~s;JTBC"pYOvQ7H;+|3Nat[2vԐcz?PYi^*q財]1]}֛r);[uoD×;DGk-C|Ņh[P{WXk塻`'4f(;!)?v9vR2dX%kU6Mߚ]Q3|2JG'x뗿`%}O؊͆0obfxm0:@4R2`m/ڗ=GˣHdȻXcGmZ;c+isnf2=]vBd+ȑc%C(ڕQRТOn >on%^7~OteWVpӋ|_.TC{7]_ OZ-0FV"DcO%ֶ8]dۖb^֨TG ︁:JsC+9et(܊J'eu|O5}^9+Ɨn@de{\+a*E8qF!ҁNj;GG\+Ic<9plU]j.[ZqeqgVA xź]kU)VҪ>Bȵ .Xu{7@oXSC\z݅>M}xnźj=Ћ[-]> stream HWَ~@V~Z`c}@C FL2%14bvbȌ̌̚K,a\rZj~_]"0/Ǡuy>MGK=e!3%[`XKdЧj\)&/kC!+KIt)z1AY](ŽgМR֚z@Y.4-&ˮ`W%^j4`%Zd_U)RZYKXܺ+fp-}Vz{BJ碬 5!ZG`)Ĺ@|& *o3ȻXwN}߿;?zE\?ի?Lv?˟ǿg?ߵ _6I”r?ҥa'dؤNƮAL0-~K,'n(Ѵ:6_?Q4SA=>Zㅈ}VjZwph#*06Q-Y^3؁z8ihR[bZxg"9RT`HwC pS 8JMƲ iU)gǟ ro> 1ӾD%:raGFcyћzcL4UQb'P`CL;[G2.AWu&C*R1\D=];XtJ/@,)I"aD/nm6%_[@G2s7GWI$znyG♩GQUtYFGJ~&ROe^$"Rr U$ҰtAr6cRу)Y9%wd2A63Fʨ/c R8>9hy5BYߕΨFy\ze8cf5N(as+0/~/Q3.[5<о[ڌu[l9&g];UV^{:vXRZOqmElH"d;~^RiF~a>^9].9vBlw0_ LC N he&da=*V[6T ʑGKr}bqyO䲿ԅ ](:,NNӐQՆ8 |ǘ#GE2e$D#ѺAǙҎ ;6N8{/rWy84^ʹ+YbfDvnîl߽5C~SJtovBhM$2 8rx4Rv<5I<~-FjK&<=h@z=ɫÉ1MyB&-2un֨*DŽ*sk6[_*T*΅d+y4t>4#ڹEtnU8KΧJ DBJLIrit%[-ncQ T0`>ֲp7ŕRo yaQ &A=Y̜\ck隊M f SԝF}| mN[EԞhd-Zsۨme,f&$g̔d_{[a?A.b`~>Wዠ7gu]yU.!VQn%t=NWއlp4ưEͺ(X5lNnw Id7!nǸUϾNUAI=9c_ a3 X *"{b!^Y@ GnB`NAF^juPf)mD9pM-zѸ.vhX¾<]H̠PJ}ЋAk݅\LM,u1Y0='HiDTPBiπ .` &nAo\ОEy1?u,ҔI  T't&dq蓅skZ01䗦Wݣg'cYhU)Sb'jԲ+wT`#-C%4G5[>'bxIplaF8f+`u-5ԇ:%[8r}[lG:8pXI_B5Md/"q.l:x⮔Uģ[kaapE_m,ĭU9ClU %r>03]g9X=,,:EZ#^:da)FL2~U}xiحMcf>@Zy{\<\;*!#,2 ]f6jujSMfj]Rؙ΃¯ _It/8~uk{)- c/%()N~8]=.w4z!+~ C*(ٯƸr;FB wvДGT/燯q)UqD^˥q,,BLgjsj>u궺k9uJ泙Ө^h_1kjl,ޛKk;tsZN(3E$H"u)1ڒq+X>+UGgdӌY߯FIK6n| ,$(~}giL$JR-&J))M9Jd]O^&%E| ֹTf0R ת0st8Ht o6]plXb!YJ6nIS< 6bfWtcdp܌ lɖX1Y7:rll낋 H$p'ݤE=1r{t|z/4F>K~-`lE3=S6U/B-qX7J&.B4z LmIU. p=h0<36L(3#u`b D4r8^!QZT<[{~*Y,ʜ 9 b+qaͮw==q>ugDpHKM>4]zՋ*5WyUd O0'̆|B%*\0hXU[5N+WI[Z₏|PJGpי7y7o{a1Ss֞F֤.u1TpKQۇc6p`IN*Aj{psO8ou{M^WlL־jm^}kؔav~VyL tks6Lbj:\>{ t5뢔J1xi5˖xZPxQ0ׅFtKއ!EY^q<0V%%FyHgQ) 'I-:Ҁz;B9ml5nدx̻yjm.wĉjpWMDV8®zÍz?.È^v9'z -g5.C hRWc4ROO̻3i9V::PcE*75Ϩ4CdVhJDŽ{>EsU'T`aĊ7d_S~DIB9(&nȥ̘F Q/೥ح]&^]d|;ĭm")yzG$7 Xn;.K{MbeW-]'.ʜ"Joy = +d,buFj,BĈo&'^χ7xIw~<6t&J%T{jgE[6MƪnS3 ;K ձ]B<_rT0=ᖭ 7a-f*99JLT,喝@wADa -G>[r,븨o2RZ-o.9%+,c Y–{RWf̯'.c2z| Bl$#fp7Z_բ#_ G@MTV}(jt ;!}5V(m=YUS%.Բ,[ E7 6Qb';)bHf&٧eMCpWcy>;&5+Kv\uz\ADk 52r.6fN5(!" yY{6i;\Lg:;wzL \Ոtae\RHݒGTqa) Hjx4l%PQb5FFfЊ2ѷ%@dsBe{ 6:=)w~ѾSχO_?a|o9`%Hs r,X%_͖_}W~wPW6(TP1$)i:AB43@_\X'7?+\}7&{ԧZD22}S=ťM J[b{5'h!9Ph *d/7#Sw<G^4K @2ˋA TEg-HhUM'As;bGy5<{f)'TA|a~c/z;!n#da HSu*! Mi|Jʑ2L.Zfh <:=93Nrt˔G |Ȥ+5fԙ7XvR1] 3@y:p&V.A`#[A?1'lDyplA%N*ٵJkY Fٚ^6f;؈(0WT>"oB[$^:X8"$#+2aIe"NRuxCP+Jj+"N +m*_P4,\d eyZIkPsJD9O~Ŷx fVEm&hN[ZTᩡNMc dȺwMl{\gQMJI"q3=*^Hj?BXVlToyI "od;B6SdNJ !Ejn<6!jdX6rߔ)`\.(©ȚO Wi^51mM8gS}Gbɦ=Ǩq7ւLk.D/&rs:71D*0buSACzTUmP~Qf0}-@wtU~Hlpļ|l,Q.mHalNl^.0q2(i)цӎ6ƆYIc=P mW5PI0v! `)AfWt G8P(JaU6M>*+T\uy-tGgWg5Ⱦbʎ5ʯp1`GXaXPW,s}wx`bq ͅ:Ha}%}nȠԷkUT <_2. F6S֨`Ȼ~Z츂 gux3]X行 2B9MEķPgwi^a'\Q>v}mي>*jkFctŀxVS(զ b-kʕ~5^Xy/PA*Gks10Jŧ]abeJ"XN>$rh3;Jf>jq,۪ +Ȍb}ǚH :z! 'Fg" %9mpM9j ֿQ;l<6KH\;TAxw T0?6ؒ(/jѷ)yx1}}yxc wu]tZùp? 2S ፁX!*4qod# pcM‡0bh{! y7vfdߘ&^cwn/,~~wϟ~o?|cb!w?CUYc?Ϗ[y y5=)`p@+xB 2F?=~ REg:(RȡSh b.?a;̕-.sq4IyhࣛIo5. VGFe}h^ګi!'얬2"쩼RRyk(U8"}j&U/E1,S^-븮5vkI0-e_4Щ&uQM6s,VU}fjtV~ D,Fu\/XR+74˳%^gyt9OgY_F1 d= ?J]ϮEb0*u gƻ,[-B'Oz 6'0t++}iPaXG(7:PHTPиY#D3:&ych *K҅ʅՒJ2ŗ5.Fe`- =ެf[wx@y4Mu\쐼悇>j)ҧQG:gIV :j1]6<6 } < N{|~+ˤ D,}cHtpDie`WhUqj)EiJ$36Z v1 Z،zux34@%\3~!lt,|+?F=3&BFT<9? 6ga=GA ۛBЫ8 dY>]vm׳ή\zGyԇ t{[K*g2huBfH ['cɲk @98:;]gXU+?/2JEaRլ]Lg__ #CJh`YˤO8Jl;Aou٘ =eJՔ ˳cU#s#qKC y(lǥ}T1XuZ姫IӲ9F;n09.8݂6ݱy=KEXsB'B-nb!DIYwq-A2M%V"ڨt9<+.Xqѷ 7nA<.>aq֎壶6Xed輒1J_E5;a#,8S0-S>f&"ukWr% MUhĵ.*>Sm҆hݱEō.KE{4vzk3 G:rSXtũ^ӽkܻlg%9H ,Mf+!!H)sexL[\;Z29m1R4_| }Q3K|5f6i|g`0x9e,=Tmr~θ6Sٸh`+=MHJ=JX`'Kt4/*Zovx 03j:qc@כ)3W^u<³9o.I}iHF!zqZ ׅ1آ\D) /KNؘ󺘴GgcPߓgZYK/l8_xjl1/o#*8AJ<a\4#dߔ{i\pOP;\}.4Ǩ q,i^ŭӞ xUT ']ᡟuWx ЎxVǴ;"{s֌ 8?^  Fr#`f^JC$ GX>cнd1V#Nk;m@ׄ۵]ϞU?أ9)ZF)JIgYhtu!G/|_݇ ;d~;Ma`4+Q@H'p:m0i1$wZPKLsclʟĠ7 k!9@]f|]̺,RG փ7ܑojL _7s)C1m u9}& -;o~V.2(l͢YZ7h#uEurA  Z9P3ͻNU¶%gfsېK7eWh`׶bC̏CK'ΪWU7_PGr{Z_y _C-Y 2 @!INK}B #X ZH_}N^j]޺F([$@b6yLASٿ:BSS{NEh ²9ss2Kp:1G\ǫ`._}^Tʓ==E5Ï;vQX:XJ[;uc~_ pZ9WS ؙmhGfGoN(J*l tNBҸi,t8Ƭ,Ob p2vd4ӘsBd.BBkL0fDQL˿'4-B6w}Hl[͞fT%=15z|51I.h^jt^ƬiQƮ|-hTLwy<([!쳷iU]TE^=S58p-S6r< :e3P»U.6=72[v#_ǫJk!H]DC6x76T0*iw }bVMhTfaT RjŬ0tpzv 'ASpXUHTaRZrV)|i]>.UּCA!to r0!ΨTe!gB T065M# LMebM6m[HQ$ۀo^߄m(W6qmI`s1z)E>QhKhdS{M( cWD+w1߂ xzԆWX1]( 6Sږ=_< c"EduiǴ~%$45A;I2KM{>D,w4}]_{ʹ$B& B =k5z4QcաKn˵+1ks=R`/=.{]* !ģ3% t` + ti_z>IxJB$IaiI7i Iݹ0xҡrݵ{O&:DW! IAj-g= Pi,+ Q" ;ʌ$,' (&7a[ŷ7V<Ȩsl(?KvzOE|*wֵEۮ %Yxtp.,9r<_{% +9}_kğ pɬ.PARkwS=!6H>D"p|Jn[?~:)O>B$BJaS5rrvK$N&O mʑ)JO"056םMpn,'0 kt}Rʸ^?3X6E}xl^VL? ں#cMp+7!;m"zqzu> \U+<$L-UuN@^ .LNAؑzOm )Fw9;} CfN3!tҞ0o҈Em:{C߮&ZW+/ CӜ hN)w-!)c!}t]73r]vjYzu2h0RTb=h)ɞn y/(C;wLqKFz$rZ_X*jbqXN{FKXK(.C3~=9}j>͆\!s$)UHFHLPj \ce Z&K ,eɍbfp4ë do$$)7:4hAm0Via.Eovz}d[p/|ZwR; :,.#p[=AX߃Zq$JZߎkö[By;Gꚃc՝%[C͡]rؖeZ`JP{m(5rn'ʙ[;hb'ц{uxp';ʒD*fr=v܈%䒌6cCldblicŶ,Tr) [+w,w^ZZO*ұu<6%irkn( V7 {TcNbK~V&_uZ>T`U'(ɮd;&so)][=!S6(OΪbDE;]JP|, +v6Ww=ܭ v֝=i  LM}N0wK# yM0ps5dv:GuMr(5ZLNy˵AKIc4`#6ʂ=^6kø* @0 ;k@Ïu>Wh8 _+fM0z ﲳ:I`Cv3ơ`w`*"șws m,J ~~)&ms\?AO[5o+)Ucsw_,[X܍.vVE:'L{RL n~ݼ;I=9'ɊK+]D!vߟb`3{; 8+騐^ me0_sp8NJZ)0C B- i $Mt21~0^Ov9d4h(dT>}΅l |?iB6$ZeZ:~;=nGM!O&5>,HF*?%1 ` i llxx P.).α: v뵼Wqɂs XEt'Ȱ-/,]z+\ LmZaiYM(N%Wzv-K AC[ 91P&sz7KE؟ARWm3Ġ`'Fc} >(r-29Eb3q)}+PNcmX?2'3 'ݝ&8.TVš.z(F7M kxCA;p:mY#Sj9K Fë el/K_kh2Y6Iߣɲc쫵xyթk':4NxXZ̧^WdIv|42pcBzҸ؟N ~/,1Nv  \וnԢ{4ĺH m-!#gszs>Pfny9q#U0QA_\啷B%fr 㗉 4&+MK_#S%e[:Ql牾&Av08m<%mۇJѡ_]7B`1V.Ul- 8Ip~y2a4jSh ž؏Oi/xҦh}GOWf;ۼ~~ q=[)٠2\nQh\xbf vK~\ m 4VkIpxGޮc|[4V#<3Mڶ{q yM1WɊeocnrRM@#z Ĕ̼h.N卌8q3~{ HՃNE>C(վ>_~8x/|dʡO42G1F6J6\ 6yyЫON<@*9dbS(ȵ]tMR8Yv{Iy.kΪcpM=Krк*=߷Vg#G% 1uE 2r,nm+ri8=fRk4}?OFzCU$?iJ@'hb)5QGNj1]*s9P&ʱ49JKbOUW3Îժ0tVѳMg_ ;&>F+fsO &/[!c3v)b^zvs&: N6 *n}VߏxO_?&?ۏ>| _o?|ןzO?E,S=D}33ix_?{A߄|b 40bvV,^fi6.^PֳC!V /9w ʡ!?):{?9EP8^9h-h|fц\ݟ5 {\lO 9Sϙ8N;"Bqr.]ǽ$`δ~>;n{#,kL[mYA4lԨ<.SE%-.3A( sFhLʋC#$тl`/9;xX~PR36Y(ff Z%6_e_9w̖T;2v)Gdoɑ[.)2WPz>pA7]EAk~8ٜ)%L3V1k3O'4l#"GHg7H%)O%1)-[J ڳ7VS)&t뮆m vZihm q)Ppq 8'KicX7C yFԢ6o_VM<0ƙKC:vxiEd8w;"W"/OGI6a'>Ln[IcK9E1eO/D'7eRhtD~G ZǬn~g{̒ѱ!tE ݦ~ak qƧo zDvƄdIDG5ZxViUPy˘G)Ķe5\_ŮHч*h^ =2ꘪQް̳YpŊ䄮'IֺVSYR.lzI8 '8vE)K4/궪|-xqy̑}B;>ن(W%^el4֋|*JjLA Zcue:qSLUϞlI( El_ҝ$%hCǖp;"`e_gWXRvc-B>&..7Uu@T?%O6Èt}+ur[>AFOUC/=nWDbYЌ\mCL]gqTrIǘ,yuX.5ƇYbm1ÀQN 4hf 9X/4oG{o0[wgu/ rSpbK~sSRWOBUcY^/7#zKЖʉv hllβ](X؉YK!^V< ZIkk 8wlH~TujFuΖ u|MaIR ״.T͢x q$hKB'yLZ+o~J G*U4)K(h))! g.D隸Υ®Ϛ9<%ukIodSRgQ]ci!E A0kO:ECJJɎX`V,nB ǰl%GTDfOIʇ1%y+,Hit͞z(I7^WKHjhpܶ7R:WԦΊxqhx 5}M9B (12t@,*+HĘO  )yCBaZs(jLF}qF}8)=g`"$Ȧvuws|%mc.͞?g)͔e1YHw2DH J0~K*հ$/aAx)>ᨏ2"Uu&]̥gCq×򻭅m,5v–=('űif9'Z`W9,x6x_E-(wb,6޻+O2Sn.bE%$ µxtTb8Wu)qqb Pѭ뱭X\X;M.cH:FލՆH\HܲMmtcryVXծ?X5jUұb!.SudAV~(Aj1_J8q$ixnO+Wz$Gi*Lt< 5 7.4Ffe~˨iԹc > pa˽ޓXY!ӡ[Դex3wjÂ&MnJ&"}24_Tcc`}I2imH:l+wSǢ7t >1=?,AKr܍7b] z (J&꺘`V 14gXǹ{͌rHZ<%LwըlA DGMZxr#nɀ;v"S1@CvUݖF͏̑P@sOzȢzbޤ +ߌotK,;M0xq}mZy~|ɮx:o5qPύ/_ߍY+g++4\2/O4F14= {x?Vfk}`t *d7H!GcךLx[M8(hBݕ/t<Gv/0>`oDT  W6XCg̾:lgS&6?-ZN98R'~\&681]ȋ=}d&VET%$/4\!Ag ж]En߫65[s Xtu7J]EW:[$ I$1=hKh"@\reQ]H T)v "FSq`n߫:$.+8%6TկEa~vBhկ9>G>X5~@OTąZ1EE>ni ԑ;M=MP67,Ec̋_Y]S'ȯ~$LMНףErKzǑ-g~ߤ?R~ˎ'%*a _8 6(r(ub[p=K8$; 0kaX`(.o#1BCsHC϶Zу< PanFؑPNls6f%:Ibkc.^Iǖm1B>!i^# !'l˥8M7IqU:v@GGBB>d7Gu)AkF%de"UI;7ye'FٳHuT&-&h#m iBOd/h `FV0i1gϖgU趀RUqFj w׼j iBeY7ޙf-0JUMMS,ZS$.k r >K+/C65ݗnt͜zޑcse2G?v4>=rT^7Nt1 | ~%@s + qA˙,dU#T `1*T%%g*d +j#SQé"7 ي8qXkHTE(!ڊo#w'$|8ڑyKFMoyEJ |^l8@uflY&>I)nˏ_l\תt"dSۀM'ŵp,F"1uwy5HÖu H n@Yc~+Puy)kER@j+ǿzzki˘'9P8f>yj^P{<_L[QԷguU{ _+סZycs ÃjZؽQsBWl_z4 '?> prP]q4 "{q9X:(M8{ sܒ/!ہݩC]ڥbj]5VR܆ċI /LU" S2i6EC5v8 YI4~[^Dd/!Vց:)> stream HW[V ^FT$N8>jPj g$ Ϳﲗ:ΉXNGPUw||s)mg,24HpX ut)V+vfT,.>I첮_?}o_>~__%7޾xU _.Wk_? kK?!<>k??҂;:Gwjdm~2ǵH_brTYeE8` U.W0%d 6aWB!<|Ha`A0DnVdcCCRYJuոc0AN><5 tTTZAǜ7骧6QXc&`=RԺ_~ J*]-2*r_E$k WˣsioڬyXmX~T 5>Ъj8J˗|<@sǺ́FT!a!aUv0犑]3`HWm ;AY_+Av}v[+,AOpWWK EY)FURa) b`dX<|e@u o蠘3AE70h<n,+&q h? ۈ(g%RQ2${gV`'y#)ScCI/1<Yb=:Q:n@6'v-A^Տ<`+>Ju'Q_u.2ҪJ]kKώ>{qddO'f+UY$AZq6.i/4pe6 RwJ;HR=(  nHV|)XP}e& \eCQKRuMs#Y YaJ&QK43dt@YX.lG[c0RCsnb**(5% Թ8s}-5sY[bEΨ#D@ M%NʙAPycݷ;FPU5OfNŐũlesdAIα}; Ytvݟ/K͇^ Xs8j•$G펔g2 %lˠ 281dfJKE:;KV1@Y}o;x.ڋI2&#?tZ{ )@*詿-OJ̓ij>QvSMW 3ѦNM@OR1waNjHFU"( Ԛ28Zw^wČb,KZj 2HGD0`NQYF;IraOT1it2޳hmPQk|$sU #s/uB2!V\8]Jh/'!יj`g0>M^%'A'3їKwy~н ޿~ܾ{͇? Nf= q^פar4 rj\ $c7ٹUO1n{gZ]櫒;`7:53[_aKV|< G\b~;=U|}G,Zt_À DwmEjGza|𫖬 -֝D}3͚ FTۏkK#`$7W-8S";79lȯH_YzbsC~^d{i/t/ )6>IWC41)?wM?Zo^7J>9zW^wτy# cߣQS_"a,NrTKx2pDxs\" m'X}P Bfa6*s\]GJ+HJid;.>:بKH!TEyPgwiG-%}7tphdvYa|@ͩ֝V^W/':p߼ Na;fms^V%<څM9W/*+rlY%ݕѹz_44 8i}$}}6ȳOX'Ih]RTtX Jn&U~PvWPZ.%xU"^m+z&7 n G %Y`|YSJ= jt(Rg#HLm0Gћf`*f+0'GoGm]l^!5^g/ė ?+%Eaxwn9zGuiB1NlD Hmm.> 1BW`2텁(^0 oјiH18o Ԇgg1ʋJl5M Mԁ'm1Gi֬Tg\x*vQp6M  AX} ʋ64t|J0 %AFXhYߩm;ʶIo,G8"l WQzHR&xs9h4q(J#Lu+!Bn|O; k]5a=&^sSqSi[m bMWb$@s`0U#h!r.nUxf^!YCLָ.Qs穒B˭ź(yV&-nk;m,T rdUJ ( ER#&gLfDD;1e>KI _=W_4ޭ7y=/7}o>|xݭ} Oc/ӭ~_흝ïC}zXْdhu_qs{Oܙ?<3ǩ~QTJC<^:'e8,m!JmL~m~CѕJ|#MVOXa 0ڛŨVwH಍)^!,TT wlMH~fz"p{UxOZT4ɟ|txvό;t-9#{iE:!h4oiuٶSH[xhʮ1r6Zs +]1sת;`2fk R&Aq 2uu6uOLDVPج"kj@<66M3xJ3 Oo烆 L))#?={gYJ@Y͋YB^it]X]cG 08wP!1ܙ4Pa/OhȳQ!*b*&'kKےK[pq]9y #ث]^潌d?Q(m:=I#?`6j&gg Ts'*jy(&ykZCJ\ `C;k.{ |Ȥ83`u$ŶY vggޙ.Q_z-! W 9»C}x̎T,Bnw_63nKa_A?kV^"~kaYacp9Tlk%ȉԃ΁tO'B%͑2ow7~ѭ`=R%u-@̰v!&EOUKgU9zV]<[ g'x5l&S#<*l;!XbCV:f"Yۉ^)&VZкa;2Սv*l%ס9M4@u>fQ`z_On,Uº 4^LUm-ڌLJs*XPrmlvz]+>({a\`Lke 06.HΚbE+ͩ+Y4^_: W6Zp6dUG[P@+RO[ 3&2Gn 6+t-RY+Y3`SpwbT!#das7悕STG6 к&B%p Ņj; "Ogk+RZ,oFhi%tʥʅng|J~ZC/ɝsfҎ nu1=OQ;y.&! YULBb`z3lI-eλZT[4O*H,/B=8N5w؊oN0y*M=1%R U2rMeFera#``JUk0S/# YzsevWӤYiB'M^rٝ-zgLSLx/UzێRy ̔Cgqa8n͟U>xӧd]c j`s4gY0× pcZ؇WnA_Z!O}C5uFf9/"@2c jPR*á3F>fe,bKpYe()y g`%X 1IR5`@Kc1#-,A:U75WYFD1,л}ZsrFm/LVeY-J7̡ [}53+ :R$a;bn۝ɖs&2o}; +"pSlpGPRIs`'~ivgYMa*iԊXwjl#JτVd5Jy9'Blk/jc.9]WIto+ʗ,ߢݾ[\JX}@p)}_؝/p9K*w<`F p!HZQPy6!Qfu̮> ױf9Omޱ] 7Ջ,gW]a/#dB=m _C&8W'/3\bMyV;kp ~SV`gͮG3M A4V:#eXD1hi,m Nf 6Mo&üj1f #+wH2' @w . >_= bI6spىITqQOHqJ 4hsX!հTJ۴WnJٷOyьgHjF ϙcXɤnVqۤ)ð N5nVwżA]Z)0]׼{sL}0.):RZ߬΢F)-ef2 z~#@̗UTou)z+OUEIHS2ul3 EfCsGiJriU?N6XH}vq׼!Y2*VԨN :WVmcvg i<5jj)ay-מn;;[q=|Q4?T5-b׺݋}5Jh9Z: T{QٟM"#F VOۓ%6vqH)P k9*a&%'XG]_X*ڲ=㨣&CosnǕRQaQ:,E/:G)V{i.JoU8d(hZ=-LM*|JZx5$።<@û2R[A@_KCPѝg衆Ʒ:DQa՝"8Ep zyRz g5z^nSa'G˾:+]km2mu)^0ɦH!a4U1*.mxp۷JxTHxa'oQ_cC)(jtFD\ءUڔl5\ۃ 7kHP*YSny\dv?+xV4.nj<#GEIhc<8_7Ϗ1uЪM4\јFV@D>sP݌TX%P! O(}G9ߟ[Z6llB/ Vn]iOE [񉶽/Cpy-M JpG&l|aE8V<}ɢ.ƑQ(N.n1y ’>XdW^}gljG~U"ב1v3D%qw,*bݮ%r Ewȕ}=Xs# <,8/9?E'1X*d1;oRG^=ج@[fa $r-X^+v)!~faG+LU@u*QϚǺ RUH/_6%D,-G( %GY!u^S$Y?r,]Cn?ZwrC2,_>uCL>C,A {W /9hh{* |:S^7kTYsЂbv,]-i(*}ecvvT'՛,0Ѧ4KgybvEzpD(7zvW;BPY9`vvƥl5$w!Y>`!ë f{݈5c .gi1@ϖgKh`R"~ zCjTfRWqW`Y|+ 4* gɍ@W56H"w?% ݑ,|܆4@=+w\V)wժF:r3,rdvBsA}J73N#_O^Ju[{|4C}o73Ӳj.guɶyw%qr6ƯD] "!xGK^&WUΫߌcZbm S:  .rj6Y}@~b8>w&Ɵ"kNgǼ?Bk{Lt&R?كR`aPQwpejY)Fʍ8,-$X DyOwx!1.(>Ei:{Z#hZ.=L7dy fDI+Ek]$܀}Z 1Ja.ZͫN,  fZm'wc9XFp07x\績3: -UIpVH,pq[|x[e(Qɯ[wjw_F蚢g0>imfq+ ,<ݵPaBqC̾>Lbi6#6|t,? ˮʿ# opV%b8bdkךY%mUiUUBg仪;=t̃p*G-EqQ@ 4fAxNY?7ah-K~yk N)챜lZ$P9OvEo//V>|~[ 3ek/Z g9+dSTQٳe ;h[0K`ѷtt[UzŝX[Cá.甈~&j#IrOXeҥ2Vo3fɉ`4ڣ>MUbTԶAs׃h:,dڒu(c~֋O,{4h&A[2;[jV tukAխ!gDRq~_j[7cz Fk(+>;=(ߟe^MM[R&tRYqS_ }'ՅkX"/˛^2>3.Kj  }{#I$1Mͱ҄=(U&R~ Qz8nEH0Js9&()Ps=|~֓EzJQ ͫšHcoar6 ͕ au[F&*UaNҨN9l]=ĥ5,#/ j*Gdd f|ФRM$l8%Dž*F|d}6㔩q83Z]vYA 68 kiӯ1-2+a hakKFħyh &B|\nxÇ)~kV<):, Ɩ Ty2"c^2 Uy{ݵoެ@4Tl qD=3;+x"yvwx$/ͳt8^v](ڽd ϢO%X@;$hcPIʮOpū{T W K1I(LՖ`1"Nl<(d)$VN 簸jR '1ϓtM܊BNtl )60 [Wʭ'g` LeZ$&Ĕ HՃgBL螚ۂCN\ ݒ: &Xrd9|)4؎LU<' >̦)OIk~l{9ڞЍ TDp9lU 8ی&/TxO8 pL91kދ=h s(c͞-Yf¤P3NFc/MfG6\eRg#[BmrD;= H\VpL".sd}YR2z'Æu\ ziH$3uFkuF [69zθ\^jM^d7oԘ]Ϝ L(,BwUShhW@-@F&`Ě4ak2V˒.÷@Oձ v ݡV+d?6_$_OQ̲U@X2sH3w-LUu߾Ǐwzx=_㧏?^zw?=G'lO~ye;Pb`G7Mpu>n2 UkO٣F$WM-k9fivn,F{iy4iCÁm1@ K ,Y79Tr5^lRhB.`a +=eEG<N:b!ڿ8lс7> cv;u CXrkm9*.J */_Hy!PlVCjFKa( [V{`(b b, ƼduT{wS`@y*3:Xe{]|2 F7}ҧb4 PNs{0EM&U:}2x !]R<ѧ/(ejh^Ak8XrG/SԜkeENT#8zhnƙų[[uOxxH(_Hu}Jk+FMF-U`p♺EK)zDRwǻ*|۹LOhFuSL U/h[2"%ijMK/"BeWE_C·i[?[{y-r,"mF]]B~Ŭ+vfE:UUsp,c#;jΰ cԓ5(aI.է?>(A#XiW"V@Se"*h mzQc)f~wewQ~aͷ2MOjxlF=u޸Ykn'`d9n='}cOlk pOQ5ey$Q[K8,sOZ b.Hp}!wHVz]f= '`RF'y5^liQjsMƧ.NnP"_s'aŝ0d!*J1%:4ls%6&>T߅qI? ;mUZJ`:K`m{@]@yt'qj8hq ={Q?VX׶`6NzCk;#Rk4@z- ʷuu;=;@FGQ Er/cKP 갴,6⢛^ljQ:RuŊbѣ`XZO[ֳZIԮ}0`(jڒ}eO!Pj8}pxB>ഴũq(W굃4X܍` LL$UeT:jx*Jś%y ^b2[xW]XP'ƪuZyV򱛡L58% FۈJ!/RCz]Xv?n'u6 M_a@!RQiH6{uHo~c?m8DeOm#Lȍi!܍ti{R=@(Q]ճW&u$ux,^HLb/~q)m @*k*Y0UW[#Ts a!h8sކ;X@ġ"^]_[SۿG5@\v*`N jE"uu0U?4\ )J["-~{!mNv c_TJ}*5R#6ܗ|$}SĚkZ`ͅeMa]oT^R!0ׇdұ21uf}NM]'s,vMÆ´ 5$u LQ9+n/z 15W-4~("zh%QlLߛ>?13E#"$;^Ѱ:0)dc?wU1] ܏|V瞎xz;uUi&8=Ʒf3]v !wʼn[(jR6PKhoc P|A$qReCӖbE&gin+=l,X[kgt@+? cW\Ӹ~y)\g>tJSS(!BjahZْ4]RE螁}}BLO|għCpMefÔӧIw1LM"#wa9[ō7pQdpXgFA*ۥ`ڸk$S.Ո[(dDDdyfT3 C9c5c M$؊볛zMemU>-y\.B# C(>ΕN{MTf -'/ i*y.*['ХP(rf"VXmsX=I# ëa^d 6}c| c@{0_Eēu)K&ڸG3ޥc[,|PwY{3B=O}ϰZpr$\:&J5 t;]H *ґLv?b,|[[ޚ+$瘘\[jLm/`x[I@1Ea[8ּIlTD01q_8Jonwxz_S!նDP*͇o|]mϡsk^OWv"9꒰HRчaٲ+W6^?.IS0V)o즕β(hq[%MVl)-i&J^{>%N˵=]7m_Ptt?;;6]Pj[측_p^CHңm!!&`f\gUI}9< 4Uki CfU')~D5H *;JN<ߺk=N2|Y75Qj"ת~ue y `oFztQgKC%[`3͈Yb{bf7*!h[>uw},@zp6 &9%3,lj:X?x ;Kڀlb ,~5f#l(Z@DK-cSDՖR6-ٍ}=.oK^;(|p ռD ;F]<)6P)=#^^9Z9j,!]=:zlS`|B1\'@IʹK^kpiʮ6{ a@ira|&BQ}ZB4hdmmxȒrԈ-Ԙ\5_ۙ:9Ft<:>w p>r ATSPp}G1.GkﵪﺴYYt9.k4Zz#~u8'qěvZEVkj Rp*]*p^?ҍWX_븐 _; ޡnUQH2+!Uގm`C ._kگcH=4ҋl}pxvCS %^K_H־9%)6FX)>sr,/w3y vAO?chM3V*j*wtm' H,U?L9l=[2q9v| A)oȝ]4Yo,*.ڟXh8t7Q^=J>㩐q\ >l/ϕH{Qc8*l7e͸Yw/.S `gD~NUf-;W^Zw$+F,)u"å d#F7ᾚ a`xB2<@sN4Z9;X32a20y3Q6&a+D&WAbͯ †2WEavu>TqV(Kr25pϮ@e2 *2#gM$"Љ(d@x'`Epuyn_KIF-{qҖlԖhddpZ.,d|/}4^Cu-MW_7?~4ŷ?Mʯ_~ƟOFt{?dkAς";!-uC_n+ x8mm^k8>d3ix@BpQvYϛ!uܔjMX׭Rw6N RxhGvikp IdYp0 Iv)9{`e7/H$ wmByp2`*#SvSQmLuG;Z(ԱqɥZ\+`G.M{K=oH9c,n-ޯw:v-Bأ hG..UT:dSSbGќ3@(Z[tߊ<{dL&ZW`cN aO2w~2aޠI3,>X[6` YҐ2ȿ|tXXݰ:dXFQ1[dj[g1Jsa f?G79īlnk뱅!N`xLA}AY@&LA-(̺ls%YX^P͈hZ3M gk`F " xKlN@ Ce)(>Ž"bfY5%qA-(T˶3 ' T"85@fPu7/ ڃ5א54>6צp  Q6$DnTPP!ZK= ҵ `#|gsߊR/S-|R++l-J76Sb+vXwS yisѰ#AAe 1{>6f7 װxq dG 5}J̇#%,RڪjvrX6_-dg !΢1:pn}yJ3-RzTKβ[wU^R 7DKjj|>HH)S ]ΛQB-F] '{bq?שl$7d)M9+/xBژ<οהãVA偀T yK`JuXZ ˢCYTKBh9XJuȴEeG#@KM90]6zTrU T{9n|h;L-6 $[XiN Pt=4Zs,1P`JweiKV&fj0MlI$v|6 u[zf",Dm4i{)&~`5%*r4 A ((Qy)(Si?_Zz~~}׎n4tA|Sty';Tq-WE A"hGHԙH2NG9 0l[0GV ?{@ؼCS-u5o"R`b! @ BysJ67n|0d'AH(:yؖ2/6_Q5bx˽n2heMs&77$_iTCpj\6Z3U7Pc]AfgZEGbǟ",ΎouGd. QjXįZP8UasR=:> stream HWmkϗ 㝝ٝ4֥^KtFg^"BBW켜9|2vnk=829"'FJk^=pVA0'XE򀾋68mɵ\j^6\a$#*Mk**eۮumU/gU*ڻn;W߿~-wCۻۏݕ-} _`Ggsu4.)i 2h<2Ϟ` hgК:S_<3ΟmoW?{{ Gww[v߷>ly{yklls$?,PH]/׏`x.K䋭G\OBӰwT `2J_ڷESޝgPoܽ5\٬R\,OfdL1vF8Ȼ^{aoHJ"9'ۡM"nlqC+!26%MT"yX1?iHSj5xnt_**|7⩹tOSphS9<,jEbfH` ZbOuU'^UL|f IR3nR'{ɶd؃:r&[`ug6,J(i vmI`=`fz R$_huY9ŸϬţBo=m?p/j3fF[ԉ:S5^:X}. -[#g"68zkFVk:Qn&XB<=VÂ]41$ˡW! F$zż/`:)Tg1>;`U=%J h82,CoGJ!v)LjQ0p _=mR?,uȽn!˿D~QxDvT3*c&YfQ {zHFxA(y ߌj0wZ *(t*׬U0L A<=*C7ZtmShhmJ"а0Re2y2#$gJd9$6M9-1Z5@#}և LFvS)9F>] zzr1<`H`fm+*qzGRL8jxPt6bīH$-zPUe>X$AZK1B@^ں^%(Cra՚֟e :7dp-X8u`Q?<֯;nh?F~bW_$ts-#f׏am_\&LY1xa0NڬF J5m ?_j,hz2k!58N/8ȼ٠%hvfFK G/"Z޸+AШ5kN}CKC nTWy 6"Z̾fJٷmC$Z $Q4 q)_F$K͞^s6^⃳k9#tU g\!tPKJ"Gsr#Q@Q62YBlX#^d]z1# +St΁pP#~ bS-M uwXwr6F %dVӄJ=%- $D,NhepXU(u LSoT.Q ޤ7"Øԗ'ۋ8ѢJ>8~Kؼ,5=t&sNgAet滎r>KW8*xe$v0)!56(ͣ!8T"؆Lw3H#މI!-YL7bdJvvTX6H1h(cL-g^TjlQ0ΣN*9T&䱕\A䥺D$S\ G[ GAJnstVt2적OS ڳ#4`مp&De۷٭c1+&ԗ̀x9}x{P{NJt㊵MCiTT>لN< A] FSv?xK)α-i_r ~*?g>g|7nMHXVL^mDTzo/ 68l'p?kEvM̆=>G0YH38[-aK3:n//)ԏBJlaa9 yLAnxg()=#UM `SZM>RnVh iP{uPځ8PuJVRͩUJ7K!56'""%^PZGUVҡKHg[* !ZKI 6Ԕw8v>+"cCzx3J)z" @8:LXBbjS6/鼟iQmmu9F 3.O?ŧǔnOgwA¾el^1wy%D'D1vrk3-䥳y5qcLPGxtYD)v0>]]+4˂:vᖼҲibŅ<1v-E7uma]jN(֒bu-+9Yg7Q@‡ŗ>*Pf#y¬Iv G-C&ن0ңPF-AJpn]&Pe죴^4X P[1O5TB8K"haKsUݗLlt#|}Z B@Ɖ2-m -U~02YWWQEkkEӵ\z<.: n 65 qՔqGnQ[j5;QTP@|=_5 q.?j<썗O?yUoIWwS 7rԵi}3_+J;֮[mכU&IjY2ƄZG#+o@F+ g2LMXc)sLJnў6̦@e/`-XG4eJo7< 4 AZQ5Na<;΃ާ}FoƁ8>K7R]I]?W&[%̆Iqԩl-Ol(4"uDR3͏`tr2cJ'?wtڔWPO˃k`(̀ W"w~od2δ?Է#Vy~ZYatEXZdVR4 i+˕4K JUetkj+b>Ùãyt3T nOnh˔DS:)-Fz -ԑD03YPSIZ _v_$jQ]smS!ifTK uʺpCb(Yc!wC%16&w0@X舴ԵrUskdK vxȃ% c s'J745i.3Ժ 8Bj r'r@¯nR+cS;x<` C<:xA;)w|d;$+mJl#B_[aoJHgn޽QSP;<SS~{S߄8lЬE7kp,i?1o,F \{C̵Ki <Ύ$#6h!ײSzZ()"XLwwQ}":WO~H {h`T/Nw?~o/k >O^\_8?h'8%BArt8PZ6OM#@t\[Tyяqc;r#zA'( K '0Ce#j+fËպ=l$|O'p&hG ]k4z=r{u,6iT]օ(W1HU=9Oee/.̌4-X`|lљR|s[MS D#^ݥ܋c.uQjZsFե^MbJK)Z(>-c#UA^* P0QX l@!%ՅjM8JZ(v☉ڡӃP5J*錥o"&xqF2$-Ӑi*Uy+}iMs YTHB Y<,cCdi%Akuf.1!Ub9=Τlá@:=i`+%խe< m,ɷCm&piu*'ˎ>RP~,W)W#,3EwB w:Bl'.da _XR10Lרx-Ylc,fDŽm-DaZA1f*P U1 떦ލ'TˣFwxUWR1< .?cMXtuV˿ӥgެ`χ9I<aZc!pYhyGY2_R7YS)Y'0-U2}TOY9 HrݸnJEķK o9ԠQ+X3bL^NmXT0e+py ȋO>dR(z_W -E5~xFe9$p$KsmQTӜz/NjOFIPYbx:gOYO6dɝV)r'_Z-wIK} 7~cKj'ڇ yS@t'{Jm?"h{˚z)ۨ[Ć EsK>]<Pu-O"ָ֟m_4~[{ZphmKi}niL ?[\Ƭ4aIcvo+b+Ak9Wh=ŵq#K88+ID;BI}V?筲@IkYC;rh!LCRowW[őruQ972yqư2t0sWݵ *% fҚ@=xk0{зM˞Cw &xꬾ <@Se4a֝k1jc11fi3%ѰDb4ZM-`}JӚ[W 7 +VtbcXd cЧ5Y0z}hʖUY#㹓as.IO†]w=tz}+\ₒ:2dhE 8ѓ?1ŏ-3l&_1G_^1F9B3D*#nGa]r.9^M޵01CW+aCyARe{LbeXl[;_@1RSU X)HeccBy| PYXM5I6'yǓ#!m^.t~̨LW>9èW "#`P{Lt 56v ZWX5GN16YiS=z&80sW/TpYBŠM7 Jm>nsM/K Mz#mC+zv)7jYب}2`\ڋ|&E,O:3 \i~&9H҄Ct">!jF(z:z jҵB5#9NƧ2:L&mV_:rbE#<*S@@ wXˊ8@VpI%@P ׉ѤW 3JqH͂-n6`ͰtzLݵ5B%T!` Y@}9hʛ~(`˾*akB:Y(\)BQ#e58fU`x|&~ؠl-vPMBV_$7BJfρ7X:T 2>>Tr.%q_@-մIwfe?';gmlI1Y $%(J =\5{,;ƪRA z6,fxE/E}\ٮz]Ch= ]1a`]<U5n 7ۛe8A=:˻k58_$ů6mv,z:B_9NOף/>0] /V4i &&;h'd~b)NLiӳnYL'׸/S҇Qƥ7ǟ`f{tn13&E/7So6ЖN%^XW'%@jO^ԠCqg6|[NTMWWE|&qdAV0's7?N:?N=q`rwl Xkcy>[-W~Yl.ߋi旳@ 9wz^:5p\UN?!aոYd[m7AA1./j}*n=_,nÈ$ n0EMl8*$qQ4ҢCQݯd!JT iݸ Kܹ#9b-%ly?RS4ڂ럌[ɱ6)zG_3u8M])!2-C_I@Kh SAre=P&؎f= * }'#2>]oxϟ?P<vgW4pQo!:-TW8D7kR1?^`b2_^?xG.4|].4B1ie($Fkܖ%W]0VLCFCH>8_Ú~>LBVJ̮6I*P_OCjߐOM!2WlC +V,^*g^{D{@kc3K=#uaFȳ9f=aygc"yP)C%Qk:*9DmJI?")%\{ \K$ˇiH2*sy< "cS5 ~K܋lM3T%rհYo{WrKCH۔5w*viyLHXFŽRXМ8d?ՂHu]Q "a@3wdICZS=$9D aUŏ&Q+p!_}WwyyI_Lq}~n`,:9%C>5}&Nol0դOKcل6,c\oK&4*2>|jQ0̣"g]w)41Del*"VHqlTnMȸin*jDvZ&AVmzmaHma*7S5JD> stream HW]sl[\>lɘ IM꾹AF6ׯkDvDR?$sz# 3FQb v~Mt^>>#<AYk V"0~{&r(}̢ZJk6K_}\dv=Õdz~S$*cbr7͐' /h_=wF QR9R:`R(1AdMk'4höiqyO#m7Z oXzӔX|З|OoQ1CG% D @o֖~sj/$9=`ÅFKyeNcឳ "Ȇo@O'jT>ݺdw Ͱ꽹lA3wa9Cԅ}EpmIz-2ĻwZ)?,{ߘ xjz*DV]6{*\(`4bSWʼn@>*>=3Sa)"ڲVabw"iBt|N!j`EhpPDTA k6=Y[4kݳCkEK?&yhk /B_~35sݬ]BoSZv sɌ61?ACEIHՆ1kL]p i40;=yIܘRI"cv>7Цrf Qm ƅ6#"d&zME`ݳ>[\0ErJ1g'PDP%ڃ+Ql8GGP3{=: C^l>s6 ^8&QEUi^M;*սJjJ39!xl7=; uKU@RR')MIQ\h@oe}ۤq9gabt 'Bd_y î(4HwIy=N0]yEC YվV2sd'h0ZCI-;BbN 4HZx?=~H k57%rd̅#H Jmkoh%ϯ| S\ 0] ~Wi&'D.Y9+یv;& <:D—*yz7H`D hgUJL&H :+ka]x`3"bYA`G&`ݳ>[1PO ^Tg[rIQ\hL(@?z"b?xۤA!رܟ'Dm=N0]zUաy,_(]$zLd8Zlڠx:nN,ͲiZUx9z39g-6dFI٦"/l)<}M^t@(8Tނ/SѶ$.j5!*mw?"D֠_J/֠f1FD1rv5Y f-2˨@w݀16uiOP"[2X>}S_)Z\$71FH~gz*~zSOMipl"PjfCd0oFƵYc}!{ĵ쏥{߀%q̙쉤D{p%C3ĨHć}l"iCk<ǀQICMIOHۛ0>Edsi%~sP:R3, w2G@5 櫇BAUrP- "U:Q-PAi?$Q^*U9!F׼^:ا.ߺl*ҺBbf}ǻa|pצAd1l. oQJSE**`O60uCD+{ib̐Q5}M(\in#ɑAFkɜohb`k0 9T'<&M;E~^v|C{Lx7 Mu%"%x0֥D*aBSYo$X* MFClFL&،XV]&0EϥcBD&%k&nd!1^z.7h,<"gEoqP۔d~N;PjҠGls 7^784(Y"9Rĺ4{H許rR5 P%ڃ+ KCEQ;24(~, A 4i:T`th{ȖU,-ҧP0FfCteOJ>}*q΅b,pZYz?RG4P1 ol̂WgGk\o:B6IFћܜa'Iwp\Q#'ݗqţϋv~qzpg:]?_5BCkvM w03δ$$ːkMX=ˎJ+M4TGJ+M4tJ`iDCxGysOǘji֙љƃCPuT1IgRLɭm6q+ 4E7Yj(Pr4|3j-(- FHiO &ui6Ə|N +OI-z,pZmH>2v 4xk:z\ &YBT-jg޶>h]hK )C֟*fiK[߃_Ldʒ?&  m K}e!tiiK]S:Ćl{\)S8푌D՛+20b2N%,O=3 o1 XOXKXG҅-jڜ ){K endstream endobj 72 0 obj 3581 endobj 73 0 obj << /Filter [ /FlateDecode ] /Length 74 0 R >> stream HWnH_Hev&Ad0fXDYI-E%OuWQˌFTK]9U̞mqmsn&xV'mY?jUM];kUW.2x\b\yw{װ=Z.j^|Z4uYwg>/˸g{V|(櫸DdO_j7>Nz_WZa]ּuѸ7PPgUWخOn[*%CZ'ҹb}.m[iyL"?!!~~,"K$Mr@ҋHیeDUX:K!ҏw0e=?t!Nrw;YY]yN;}2jE[;-weϺʚ?qwҬ ,:icڊV{f?~:~_/" #4U`zAgGgW|ˎъ>,{hzw?_Leepo#ϵf2sڳ2]1|7rfse5ܘljP-pɕC#92 hpZX{{M< lSઁ7^y<\˜ȕhևCltFEkҸP̅u2Mx9sVaV$_B-s+%cJ|ic-,`:5B  m**9^+dKRʯ`^ 4kAŵ"7BSNeq!:d~+ 者:XZ Z(PٿZ(5(f + Ap@%f pΥo+8VC)R ;B%q?nRX#hVD@=ڝc~0Z4TH\d4Nk2j.,j{nI25Q@hyQ E t@)$ŵF1J1,{t(w-f 4 Ga2(ohllc]_/Hw FFadAru:X8,d`:d@q0UxʠeB@;%],b%U\e^@z"|H[WpJ!a@u{  FɜukAFU&<rt K ' j $lFe7fo )l<@,RZ= fk ql& Xn;z mJs{ Kb Az.A$l@"NP$XyM@>BshJrlV~9jv tkFD2ŨT,o2kr nBR$(I}V(8\ DT:!] B L4PJܨ$CA#)[:L:No(} bZFJ "~"|!!;RًJꕢ8He_i,5f0r))G6ǐLǹB}FrN})e(d&J̟SJz A5E?L{'*PY H4 -L}E!P3>R@ҎrT?>PR?C{LUYK é" 8N#r=@,2>0Recr$:F<)hPwbABYS4Ǫ'J)IDaL4k1LE~TP;wXC;'JS׭3# 8 O_4Z*a{ zJouc0~Z6J(zH@uNSf2`ICn:l8ԅ"ch2@ZV& :-q0(b^)\@Ո?պ$b ~I${20X5X2Uϑ0%vw_VUZK~D9jUe*K ='e%UkZ SZ}^oPH2YZHcX213}^CJ2u/HH,1+]'!Q{. "&ey-Sk%|nN{MVL1,zmT#|mi fjbc3fQJUIV}CtEiDJhMN2}ȱ Be6d51ѥ9}%ɕU艴<GON]no.>-!t-{jɋn=Yczk'T=4Yϑr#֪.׳=&tb.:ǜ[B{6p)H%`Ǘ`TRBN>esvCSSa\c*࿛bd! AJjMZ<pk^lԥ.U'^ >2LTU &H6 aú*;! ɍjױA5bbp6vM|Nٜdu}Gp8F!6@J }Nc -oՈBR7ڨ\>[GԃăQڧK*ɇL<)3ACϦ9IӒ磄F ܰ(ϑ=\鶩t/ǠĜD5S΀B!Üfq2bOIR9YFڇ!jQw)!p^ـup*ϩ"!%:Y+ Ns[60_D OQ_O}<-wF5 IDЅ!?d2QZRt!0 BfBS o5Ze:a$N Ɖ'YdR8uw@%R =7RP:EDkP\ul%9ɀ J3/lU& &*;Kz.U4Sݠ2QyArf[ێ(sTꤕ dl2ԥg_k,̌*jeVS0䬌HēzR8G5 Q#17R+dvᘠu;b` R&!nƛY-DW]c#7L gYb'~sk0..A=@ߍ݂jU e^C1Il+dFO%\Cł֐ PusТKӡj*q+оƂk4cəa c]N<Մpw3/tdР?22hp ʪF9\WAû׾^[ΘnazWI>29ނtthwWKkSRH%_k'%U͠Z.ICѱ#j 8JȔRzt?j򪼽^7X,Nѕb]zyQZvK '΅2nY`!!wx[q&P;oo5߇9i?j]:F@6eWR&N a4_ <+^PGV<:i.?4 J *OޚvYme5j9r1}4Us`S~g&U-YzUeC>'%[*CR?9v#{qicbdyr|vv}~~{AKOo{<,0:X`+R o0y-[`lZB5._2PK]-N Pnr] I`v!soAf]*ml <T z]ublG@Ƭ]h^A~ P IhBUv1(m4 dB-NaBkZg +Uh^Us*/]|<{y_~x&?gå.:tq{ۻU9qZr6TaGр}f#EkPć'}"Π¶0./}C;Tvڝ׫WϞbܞ5=}syI-8@s?Ag]=}____o},UIeM̩<¼--> u.l SL݂RݬŨi*hpޔCٜoXj|l `q$ L dlzQz|XE[YP\,H0 vrNǦpAJ/:׍8:T%#HVhmaRidtp*> !Hnv]ԫ_ֻDQ]bf|jCPeiǼ̀f܇H>%.Ոކu׆e PFεAM#ϛ]WA:x}"ǮqmkVb}p_LLJ1>xٯ&ь8cl iG;U}M1G+ d gȎ0-W Kِ)#hX5k{V]d7XSsb =14L11of +?yQj1'Llxy';| @̅sKIrM NPA(k5vaY4pH̷! v>'f "se4L1࠳Δ (갧3o}, qY(-.F)SR.)P"dE:!3*]3m gt-as oeq=j:Z2tfٲѩdQ=f?ʾ Fb0ן*H m &M%ZƨH^&0h.G3)(>hUs~0y1/$l2:`$4e4y^%VM. Je%mv6'?N"Fy>]4N%vx=@9U9vMUhJX 5T?x5MDjL214Zvw-HogcT%;}$b΄ TZUwtOBCV =5#FʽDE{&!%[rE^P#oTᕹ9]hWۙUPRx]=5wKEYik`S*S BmM2Flt1E.Vij,ȋ4;j;Z22ZeX῱-*Bi-X:QD6r9NE y<6m (!VaМ2U `lgZU:XXՁuɳTlc|ftdY(UgI hbzǽ-vI9.F`۬H3HL]4R%vx=@YMcUn &1w}*v+%IS MH(Ad`z\f;x..3+zG3i%WSKT-uLvboz?Un0k_0 "CۊA!-;Y;]@=v?mLa']4N,t$g +lAU˨8i TO(N'hg<$+]G0i{%e%szԤrLkihTcqLDI䔂ƪC {[lBtcSPqRp]m<>sx|çK@Om_xݯo]{_?MY>So9kWy ŏ|"oOm/u/wu/uK,C/x H|<)o`r]y,>n|.~NMaW7lO:y#ϻax#07fdm? !߆iЊ&x^i /Xɲnhti$gK]3ArVٞx}ҋ@~U(^${ n@d("EB88gtv}}}u8v-.ZNtؼ^䕜RHfjQp}II'"ڃmߎE@Ũ?egd:S%UKꓴ)Ӈ$Iw8ehi=ڻՋO<տ~}N7>~-~^~[7+[^,pS;~/7ھ~^{?_oU@L}'Iq4[YDŽ-Pj(_^*9kDgꝂBնWumzեyB o| Ul0IT@ v&~ 5yBYw8v4a!zԸ\+ ɾYhn ` m4U) ;wL T/PpϠ}R-m;K<3F.-Qf{'tK#E!x2Yx+6SKR$ SsgWwt00sQXO[fAN-5d03'jo7 idү4yU#fH]&%wx}-!%>rl,XrK_A(B~~#ǃ;\C$j$mǖ87[3u- CQ_$f.V5ت+;KFYK fvyj34֚N2.N$\ xcߗ+:8EvCe덞.-#FGn9 ߿O-ӒrK2J:|S5ݒtA[d%\&7#XZ&8ω5sl5:lq6gB9lsø΁-QwD?ipf[d BV[ΗmGudB!9FC+X~VR73;)w!nmLJ % n lWݪW|ys#$7aZ "$H< dh[]1|kuwU`Ose]Xsf,WϝكHYK7ȶIh( х@k~-SޞÚ}{õ7D]*ѭރy3 . ^l JiDfv'v4挖29dnfV4Yω6uӛ9a`rRuu5#Ϛ/?ʯ&hn3<\o Ljn+%vFWUȭ +pnV%) zuysgeS5r<'=G&j8~Ћ-*GM91 [Q,{ O6WƨCcҋųfj`1cSTWioaI[>A谺lFjZb8iᰒNz[*xj ¸k<u$Qӂف4F;N^ys4rrAa [=R&)~@lײп>rUL, `m=)h-<?(6rK?_O,35Bv ˀTV62YGPfoM_zV+Sߞcpj>rv.Gt>_oǿ{?(ٯwCyOyȖ [4i -~_2^~˷n I_C@p9(ve70X3ԙfK(NW @b\%칃)(8,t=cxRSfA55ly@OR)C'@Ϟet/ hMκvme(ea~:[m} q !:s)oGz:g~(e*"1PTHXd͇(@g2AmFu;bڰ橲nꪝ^9ƘGK5< p;lP})a}3~ Xж{lȻXjӇ7荣\-9kwgG>5^TT;͉'4J<X=~4V:syӑZ5gUKqU@K{.dnmGC|Z>҈T`]iؗ K85}Z$`;?^B<ʨEOa, ֖蕇ͅj[5w蠴K< ?7 lag ,bww\MA\<^=[{*m"C%7E /sś/*5A>wڵhsj7Z=Iɪ3N `*JDŽjBSL*aPۉ5ɤx;} X\YK>uS]?zZXjETv?UzN!N `=[ 'r3'2F%L\2~/(Zu\'vCjGPUtMVuStLEޫc }j!T,NzH*yU m~ZTuC>|NQJ>ҧMʉ XOM$q΋O]=*JVc eqj*=W YB2!yœ̲֐N(HʟBڶzoU*-AXP ;jRkJO7{*VO%֍{?κľ|Ԓ> cb P}ȿP_<126B~ej~bYjaKQiğ=Ha6[nW-S-X^m#M2rJ5[&+EjҞZz;֜P8mƦ(TjYSY&Є'kIQ {|@Ψ^#qz$[܅j9VƔ]9`̈7çF2躇OI3%z 99*4FGOm1&}w vcEz|XOd\wpXؒ @G91kW&x>cx]{Gwe%S)]ﲨpXOJ zn(̠FL#!G4mڠvwN` ν&?B Q~=phSj5j&XKiPzA gq{ `SP >kUu3DUqCm f4QJM馐.+uC>G<bgf4Dmp /Z% :E=r[H%#v 7ELCs %{x%.ZVgq "u1蒾;}/'Jpbf0%^f8g%qj IF2*A"9m-ߎ1sKU ȧx>FL"&wI[i]cҩI8gA\s,}mi7u@Mǧ(f@*f۩T_r_iLUnU=+FI( \@V,= Ǥ51յV3&jθ7 (5jhIzt/Ica gTZTJ\)?z4^Y٫P/ >Si^)+OC#~G规l"<|Q"?늤3Se/׾؊ArXYշuj/Qyڭ_9WYF䛴1zPc'LZorRZLW0[^@y寖3Aa슟"ӫ0Sn36gfN"wK7n3oBGLf嵺Mo,K`^؅%?rrx_[6[E{seR}V{5+m|6]67[ls_=rmͶv yrygSY"o.ClvEґ>2aRH4!Fdwês9YWiyOBgdXUvgx|/?~|?}/Oz_􏿾˟OџMs/@# z-Jwoڋu~Jo"`pmImM sΨY#Ma1p294K+ /g]B ;WӤW!/gr!Eb斣Zqa5]_$&) (uܩ6论+cș7zȫٰԌ )k%hqr/#K,uqEگȣ9zq]I9 )`n*H̃WueF\Y2\eNF׋ h<À K8p,v)uJR1\/Wc\~h^@v0H.w=`a%PҍsR F"{Ah F+H#E(RģmU8:'G4ĠI7){;PƷC%p?&}J4#[jaٔ.Mu>zGv3$H;Jȕ@xf:%>[avTOM%M!= /||?N4m -[4(ezL<zTë3=|o4y=OW7oc d00;,ۋAl %!(BA$w ;quGo[$眜$M&ǻ[Ϻgk4=>Vt[aKt uJ`?;]'M|0Nv|@/]>y2!ü:4ӯvjџ }O  y/e _ܠTl`^RNC!U!2o6Bt*tOy't)jJIhPƱr&n䭨~-`vv~)<5۱_T5Z e&0oߝ2#Ğ>л}w!dq̓dԗHItc@ K{zA]%D%&Rܠ}*I=(wT!mDiurRS f-,/|ؖ>8nUmXQE5?Ās{0h9'U#xgS/cRPA] J6FpE)3ἶk=eiD{(=F]=|#6>A$ZBtE){Ʉ>M)} Qs{Mvn4X7MwhE՘IKwɠ|Q*k?H2k@o-Ӷq@ļ>'A8=KLzȅR h$HyWvۇe5V6%`<6#_6xw$8ޟ 鰎17 ɲ w\"TrȶNͦGؖgI-~7^nHR-RC,>Z5m7'kn@{ `Y" `+1G%ԍI—NOU=8{/t;A0on՞~@A]?ꠐ,On99ߥa/6 +'ض\GL:Vq;Rǻ@/G d@XV&ʱ};W=!8ۀ%&h*[𜧦%ڪ֔zTN Q]܋џ9a+=ƪ)ga,S}#/SlV`hl65e|)@hwFT} N.7Gkx1o{b?aW t ~7h#yVAn< 7^+1yX|Kx l )MWUsVvSp1OpchT\% t^'f9` _e}xwJ\Ulҋ`5)DVZ**دNWDɶ5[oAfY6 \E2r"Z?R1g^-TN崫B>f/}we (.9`1(70Z5S@A5fz<`K3,DZ+m?9s@ 2e/?l(0˳. UtRr QuUOߴ>}7YW 5aRS ѹM[3u*8 (`z oZӻ;KсY%_ FG#7 A?p;RT)̽U"Ĩ0zO7TQS蠯_} `ǟ!a.5?[of5~t%Stm/wI dWw Ɣo=h0؃sD@խOԜL,!&OZo"!@yJ*c Sk&bV[AI“'5gMLi)g"z/^tWRx㋦<'WU&:/tcksKe^czOgj8pBrBF_^)+(vKev⧗UT!\$4[m~;sxT j'5UR8闘n%du/#h*U@&[,pz, C+ӝFOV0c8c|$]#)r}At\ Nޛs؈#WX"iHNZ>owɁ< u_vu'>аl :wXNp~j]X3a ZPIWj!mb>ᬲPbIHwGb*;J+~. )+}c[*3ʤ:OllY8VFAs\9#6p3KEy,rȺ Wg] ,DacPMN4IkLrBt)EKE>]s;&@^IҦ8Y#8x۰eO~i~'ޢ3-p'6XS ܶޚ >̙ꦂ5r=~~Lzqz08%5=#* :^.&jG/<{:Ӥ t E^4]e?62tJE ۠θp}o$5U+'t,!k8uZ%4R$8M(ۘ6]v %Jl1SV#|s#re4wݬbܠF)8֪;bЅ⮻hޮMÐ$68/ 78teׇ:|]{cSb E.?U0Aڊ0C^fml&W]%I0E$84%SWUxyD}9)@}<z-ӟw=5'?04xt8}6}{.Wq~(Β2 ?gqR}(-fg"Po=ie /mǐ&2:vmj_|L]B%^>dq$ -FJE+3k*Mƽ%+8E*W]e H$ܡp' 8O㦠ɗ*W:WuKK'DpR(já[I-A역7zVؤE-[/@n]`y"ɈoLMv On-~E˷T%T%8N!]΀ '@ Sr endstream endobj 74 0 obj 17900 endobj 75 0 obj << /Filter [ /FlateDecode ] /Length 76 0 R >> stream HdWˑ `s%DIU9go vafs}¦HX_=쑘yx9>>8ɓR/IG ɳȊ fw oM:u`:x3 Uv?s\LZg>1"/8-<kWy3Vc"ha1G @nE%:~F_1p-bd9wΊOMRǗye&. 8}| Z8VՆnJP[4/V6~X׿k@WT4/sP4ǮNddC8Y-Pr%xfY+Gu,0Cwߟ“["RʛT'ϐkӀ? NS N˪(짔M]9yv3sb> L}ůͳݔQ DP(ٞMvߞ'+o+(?cNn^>g3 bLc5S0l-] 8x]eur2icٮ @8_4uF%vO~I4yf`,Ѩkfu_u@kNG]gE[C%? ~~-#chgU?#'"m #qFd%090@s3ۂQ `]Wqs zM/JŢJإ;=#!n/1VL̊bc̼Ir@ '1 9ގP}[90AMVil .9f-X.ˁۥY#s?fգmYk -8l4jRz4}s*} 16 *0Duss Е1""::C VAox5^!wypQ< ො<#s }W T T d3qrZC}<|4~v }u?kx vj֓`:[?gk ir<-kP|1GR{;wOK`^ɲ:Ay[ \Ug+!tDNJv(Ӹ^B){qƴOeg ;[\8T>x=E"JWgN?Y`_z ,%atS?Uk>棣dF, ^ePcG,B?⡗+އ:ƦD&ɣvi1[B1~[]_`w'eA8pF{ ߔ%Cʜ-_m_M1gqmbg.e'sg6% Er>qcfFlb4b,l44zj=pt"#0Վ`iRq"*r Ǽ=;ZNy{i ||ީ;xN7@л`9*nS4'+zrՠx >cl?W&y@֯0LzYߏnՇN,bkz ,io=p.bKsc=ӷ_-fdP=1IVݥs:312Q.wS 6 [&gU|#IexE8G`J*f%W| dg8C.xw nRz0jרS+yQ"ۃbV@2G&1jx(HSou620tFuYk{` 5@jrsOֱ2  m'aŚ3s'%pok#>ӰB;h%}<[iի"Te!`6("hR1o%Gqg[Cw|.@sJZ Bapɭk g}LGԂx>J8jT8\og#k8(S.饹^NM{[{] @)<:l 8诊RttQγӽ;OQUheߢ9fW>HDUsEMt]ancq}P_{=W"G#xw# f<ji$땜akX!ڪX v[+T@9D‹~MˬkukpվҪ.8HP!W.T\F*M"ũ{[}.p +|\ ][m\'5 p}VMLcpzm+:=l&xag.Ǵ? sk*cw@v{ |uAJkp# # zέ5o;=Nv$y: ւ)pi(bY~۵U]'#IȎ jx/XKdp- @؍"!b(/ tN$)v6Ҵ&--AݓCMeIw")k0[] }Z:f ڼCh\2XB'l[o)u灦wNvmQn{ZU[ oI8T#U ݊mbm\۽uS&ޢ%b *b`MI VVpQA3`jBWIi*ZH4<]c^G]ϧ󕭌oLYgzbߔhLYX$/i=?aQD6aD*Ωu`gY M6ytbׯ;SlD}G-߱F =eJZieiqhΨRa>F1H>X% >F1 J+~RI^sꗭż G[J7JGwnXRµ!YV лpm"&g^|Ƴ%ǬwfjMOU\dpçEn4<- SЖzhI2 \S7a :yS̲)`N> M`/i_=x }^gCKL!#%'zȊ/߀||>=?޽|o?{ǿ|+_o~y;X*tY-p`,?Mso?> G 'n8!w/4E{y-©'U7x\2h{Eƽe~/cMFD^L} gvw)+Z5k>pmUU^my^vNܓ:wI^@tJ&%!qm>Pay]jJ4.Ey֠+VIVVA=EK? uS6w :VSOG#k E& K?6IlW3&@ClS=WQU*a,հ~ލK#X􃣼 NWb.J[s1rS$)WۘkZA`Zʕ؟A}C\xC k &f1nPyh .me*sWt]͸0l&,aeE!;쒣YRKԙ<3L_)+piz캅h2f-Ȋ[//(NiNCk8E=Ӥ7}ﮈy^zx鑇@ Zzr\ Oiм?u:8$e<;rgb9L&:\IlabMWe#Y.y~B]~Fl1Wzޝ5J=浖%sjx592A`$Q(ZyPVUDXt]=`ϣQ} UwQUݫ4]i`V?YbpAFjJ}2zDS :::DZ 6h?uԊgM?bXq `%r%&noB.ziDֹb'ةa8qʡ*ȩlxnw)Lc!y5S_觲;㔪K!,PKcg3&8;=0OfA|ɐ$gCˆQ ر98s_r_0 3.R'Tqр;bϟs k1jSzamsxa.Ru)wO6i}݀U\yQb@9CuSJ[5DF f=y8FI:VzzU';|7HIU c{":<>Wn_uf &!ҎLSc5rS `2iN+UPH~mgXC]'fژdA`-W.N7&ėYCtiFEGCsi!sRy?\̉sAHIe[V_caM|c7A0 kW~9lTmZliiGpr?'=h0stYɅJ$LVN><7>xE-vɛ'w/^޳go~ş߿GJ~o(v\\#^x&pn>!Ɂ@m3 ʵLۮո9.n}R([u|ɲ Z0G;޲8d[vAH4ʰ{ ~Ai("DM4o -Sj09㝵U$_9yؘ! TDe^ĂadȒjiզұj5h912&Gk׈0W7A.AqAS}fn-yR)&XiD兡<*I3}ys[G+'*Lb̈RɇF͉@X\YuqFT)jl"B⨾Th7߃e4}Flí[' qpᙻ: O7N;ū}.f/7\>@;HVAPϋm% X )Yj{et_0kXFT* 2aS=Ǟ\ m!*8\վ PK H6|o]뽳IA ,8ZN:|J uG3mMWT6\ @ТKՉ6uVf RL'5IV3UpNKZ<3bC+hTeUmG,/El&0=iǤH+Tz -:M/z_ДrAV˗$Ȭd *N/:H5@)ښ`* [}"# lGe7ud5]Lk*H\ҝA"Bpiz8Pf\Qɔh#X\hj DZGBGJ|itA0bXPcyv(IuΪ!Z? >nsHJbjQ1cGb0͜v0eKE`i&-AA%YgtxQDfRHJTK;kkM_) y*8cbof5Or Hqbi@Uh.A"8%4/DzJZrNEv)B FhY`0KyU`.u͵a&F`_<. Thiu1[]CuՑ DC՟ KVbMzzM40L!+6<<v7P5՟C's8.Ds[mC4e/x]{`ƳDǩ{uk& W禦 گXrmJ 9-ove AiyQeX(ޏKN6݀vȍΪX)8?fst nc4"@QL.ݏ'j3.xTO/{YYlXxXw|p[+mY,].l=_AP7FQFR±`຃zoH]_ F/,3ӊ:?ͳ]½ n/JyEK&mѼ V_W8e?YXB,s_UArO;腑l+m,oap,69˃7^:|:^ao^m=\~Ugz ^lѩS˥ e©, r7"Fd6ᙲpYL6 R5hpQ{YEt,_*AU^<%\̺DeO7G/N.,'o.ήnp9@d@h>JKQJ`<:TS TF" 'f_1d+(4ؽp xE0=m el#Gw}-L)[yݶ Nn/~˃LJOE]_WWix޲W36V%}v⾮DgP()K2(5P[4Dn{9U)O}2K!:aEѻE0Hb5]/ycf b{ 8GU!Ae9U`z@dHc˞۰Jm1*Am9V|7_§V/%MJ6j4`XXq= ?(X&Gw}oCI kC}rp@%#2ggԖs5PMѤԋS[mL1A.2 $V66jr$lm\~Kco'Mrhߠ4R- 3籶$)zT!E2]jfct跘SVi^>K %VJe2ӕ$5'3 /׻/R K:eD^=!")A`En3` .dT! uX320{қGw|'֢[l8n?A)S䠶%슺Plͦu.pcY  M1okZިAP)c>ƒA(8ˤj ◫B(FJ8fTSmI}q*LUj2QO +==]̡BadizʦIBmi$fM#BkKnU)Q9j :Si٨/ܙ$Mtu3Vo%Hn{ȝxZS{No X$Wlb3_>՟+×Յc O7[n ;G;| m?cw ug҆RΛvmL[tv)w^K-9/U#WqDydKtUW,/$% !Z,p =;;d[am io n{_% ? F2o{@"%AV)p͆"=a/Y>Gώb0Xa^NJ0mP`~,`WUv\jUϸ֣zT g[K}Q zE(;4ݥ(Sǭ`/P( w:TY8z;,V*x5W8k/hV訑 1Ϣ"Ÿ1\񠙙ZuiZ<9˖j3g&LW,4%iV).j`3aCMAظ0hi4$kv>;\hށU-> %aKB (Rr\%}8q%eVT-Gx{aM.+Gev\يǔs i~6#IL\-DEGJPs/LTIh)A0d9bJD-+ѮOP61{!ԝ rՆQ~IbfixÌ& #lP^Gq>=q&vﯟ<_Z_4zPnힽ* JA'ڬk٫{rBu0|DY7-¡Ѥ;H\!6⵰gZE(95חj.9%^:dF&2y5(zbnBKL|mqtIcvX$|^j&")Rs, O> Eb]k,&ZoΏ>&3ak;7z,f|dϤI Ż'CRkZ%d؈M@$.J2d`sr| >[EKڞ~Wo>Ozӧ|x7_ͻÏ_>'_CUk% a֣Rh˾TORK9T`A…e{*TiMe9Zxxx_겔{sO{)Vz)D\AXl7@л0ˋ+{qZYX ]y4dASh&ebms>R/N)ouӟ#_~;O~N{ƒnus=O8ϭ9Vm[FenmP=4?~tOψɃzgHpIl'6I7Zf~q"պhasm\(8^ ^`@} kccBZy+i[ !H.,idw?fڤ) ^p!BF Zr+AAcqweU $& d^xV;2d:$6IQ_iP@[JL *TbQjh_%Olz i[U9[ltb_r ģ t I ˆ@ FΈ ݾ^YSKȹhBdcuBoc20x#/oԢmGebX-"]fV DǺa:w)?}ȖjS)X+<؟8ks_88].u R(]IgW qpE=cn=QAgT885oF (f9UӲI Mbdߠ]P0OfE%B;5 )&4Bq=u{}DȕC{āV&`KO*EzTD<4*sShZ}D1B+Z6AQc<@*4U ]ӱijU/,B$ Pv 4kIP '4JVP{b*60/o4}% L7lm}}单s|65\6wz8VRD1m͝BF R 4Nx ̙OW5B@-:XmGdǑ:ÑCrBSNc 5>BҪ pP{'TOΊE`/3%G6DN 5)<+z#L X EgSo1{F˞}Dn>zJqIB&(e,bu98ʛ2M79VtOpbj_ 4_l FP &SOe Y@RNkI%Ǣ:-V΋U8?4gIvPD~xp !l,PA3;u*Xz!1쏦ڕCr_Dؕx+= arKC.R-*7=֐ zwS J@ɺXa\k&+Y,7-H9iOOltH3Z)6zq*vvBŰ泊{hqfUه EVFDW>J! {$W²30 8 fT{/PR 2Ye!BzC*Eݫ0 cS."R!Bs{Ũ5~g tM qwNnlh-A 2)=Z!VAYȅHEp~䙎s?䴋w_s}a~.U[ e+T6n:|Ʃ|!ᲀW@h eͪ)B+78=Y 8؝ΦD 4WBٗ1<~nmV湩 G0?pMC,ٰ>+ 0aP(-Zm%-D5+c [q`GdF2l4*1\Ȅ|BHgoAhvP4*sBSO|\ښYP ¡ni'^%{j?|PxfЌڗ$KA2y&ʰF:;aq&L +ۧ B-Wڙ-F6dE\/H,k T|nMF, ы"p,wgB%vꥢ'j"ͤ4kia?%ky\S@x"e~VEFz,C|}P3௑4p-}f*XC y<꯽{6Avmΐ] Tl# R8C^Bu}65pr\fZ(]4˼nyUnKHpج:?dQzOs=1TUDyk7gzyqO)4;U]_SqF ASЮȲ(Ks%~p@Y!k4OTcd?T+ՄhA՝i%s9_@x2; ZuPp*!%ܴ$g09g&=FJ>=Bb^旛)nKCC\^L=4w~8JKR7gq˖O wQptfD aM,q”7}Л-> ٖ,R>g%S@q?s>daTiNFCg_RM8*g`xp0R$ ,] >ְ^GGrAW{*cxelcg($5Cclh)lCMdH>{/XvF9.д)X0ώCy(k3=dfȕWȕ`B@s~ ݌ZSP{ ];= !o,`$/ ʘ<A)Oo4V)ì}~6fFOŧQV^ԣOe`ᛋ(`Ϳ"h>: OYP,u"“C3ϼ۪U=DRMݼ^i ΩBE/@Gy+tvT;r[)ZF);X 6IlX 4)c%8.k˷]JA)Җt{Ȫ"pF5ύ6;95&>_v~&?d>[lDȗzPsڽNi@CQ釩 |;z*CiFr/5g]EqjWU@ |۾huWZ<3+0|뾟: ag$L c??rx׎ j}s{kjI51aEe%Fx|G7B@Z @7 f8mm6[2Hȧ@ߋ^?SzF).4fdYiLM2 PlD"ӃnPJgX>J*>i_pӗd Px׳::I Zzcq79K,FA-7yhCzA^(1h.2(7G̦SZDq^r~ r{!s^c8k? c=7L"YɄD9?ٽmOpOMF>B5ښ(/0[j+|퇠p>)4dW\N[GC=D:\]3i-C.J?zfR] ?;Y]:<}xR8%5T&\X@дi{;Pa:L?IV%2yP ;Fл<'dͪ'Me-+;Zl[ݸ DC@ iP=[@!GJlvJj[ƨ[u v̂9@NВAN6<ecݧKƸo\!HbƇ5: ww۴YdO4ECJfCAKȓ_S\3O6uFQ}+CsldF#mA"c^<./a{<:\gvq"(D3/Tȸ:hcC*oJCZVC"C⼧ԎU ic8/)c1xJUk}fB<+0Rk|lCgloR lGiߟ53].4dsh;G䘜3 <#\!2D  8{C.?m;#em;%VwE((Pq_}}zP}20HE|{3fwj߁=^wDUܧ)埸VE9(ڳ܁XDa|-{>H,lٕsgwEя:S}{dIoqPbcaZ@IKP/z9ƪ׋F :+ts.zѽg1eu=:`*BHpNllެ6'7ƩeŠ^| tSNCDkpn 6|-e<|t NXNn5w~ኼϝ9n=qtq d<SQВT#򈓠.e J1=vSڣ>i_*΄59y26s|K ӊX'Mz;&8J˧$쳞YVikpE#m~*$E,ŔLwVx,;LfeZt?7AՆc4b@R 9ji^' _Ek3jNC 2?PYރ Ea/cV"! zǣ-v+^ H>۩bqd ^{ZjX?1;䠨~7u(swZ1T͉ߋoP5 ءQU AXx̚lgQE_ w bMZ(?8O!ߨYH60;I0G<BSH5ѝsrYPEˋbo4* 1T20CrGy9mN{@ugȍ 5ﺇ2]k*mQIΨqbH:] >X_tsdޕRH? 56(lc /Xekϔ8!v[3H4h}/:yCdK j W;%}}`'E,ɦFB ֖tڋLZU鮾-iX!+ ;X6OGRKdL;[{\8xͨ磋8c< %5g3z aGxjdFW7[с|?=S k:|&=(ADO`$ ?IK_qY0}ִ"je6}gG]|'`~sk3i1X2yʍEGd~YRSkcΤr\A]Qu.3PD@o90-Aݛũ -ϠQ/NaC]_Ow~{+am c7 ]Vl|cds`;^ŒZye#7񬧆 3839{/Ht$'HW͞|=bwiL]W^sL!2p|ψD4^'Y4mz7<r)рW@hǟE@rA!-ël(Mgc=(-CF_J.y>Yg.krsϹr죭H;yWs?hA,qlpU#\jeΖ- k b/vzŕ`.S+We-?--$QE$j;em~$b򥰭̌s*뙶2+Ywǰt 1AZ<” g@bJk~YLa7:bM%LD.!0v޴JxP^@URd~p(7p:!bWތ⳧Hf\v<<lhzquS[ d ^2o]! x~4i4_9__}>'ʷd:t.wv%@Ifg~NE'gbx[83gj"`'*"twsnSI5d@n7_K%{:v.FA?9kWn] y1 =΅l׀ uQ# K29CrcY̞!"2:rIHg.S]@;:=ոg$G'&;~i'qOLcTS[+i5{!-M=3L)Rhe}1Mڌ^Sd⣦ DʎnajKt8wU9@+?VIv¦yO.vr,N?Q]~riW'fOOl0N?5X ֓^Z@6fuoJhU `)^, O ee>h^S~Ԫ=$e2L[Ad!uZxMTb gp2irQn^ cWk;Q6Pp Pdd 9H촔{K>ꗂ镪iX]u^L dL rW^$ װP@78;]f Љe UjZ\Bkظ8 3,uN+1WԭEZ-ۢ_(ek (^uAp̓b0*;Tm%W8t@#I8ZXg_߬Vtx+q!' h!' T@ S bO kφd5P_|[6AHYΙu,k4vS z7Wbr:@ݥ2ȣŹ\,2BI2QŸD:QH#R56 `k(c&0*^:ҍTPG&Mb PdTӐskvgL~$T^Wg[߅ؘF8B{U V""e- )@M\D8\fza`"#y.v݆4X6Ċ΋U^iGwp;|ӋO/_޿}/}~w?z; !Z7gR Y=?>Yw;xD~{cB}(9{$}4Ng/kH ax.# Dp],-/X`LW1lCv<&Fɹ8 U95:7'OGkv,C0`Fu @ѥ] 5>K˜ex_ȌX9E>eSnڎp-R'Jٳ7ݿU=湑Au:f54][Ȝz/CӌkRK:&n6TxɩH%bdc0ApͶdc"`VH1R:9ck_.^o^}v[Cοy7X ?o=_}Ƥz}'@hȰ$y/ &$hte\z2?9p%OR IQv趁Э`Vple-p]X݂Dz(n}fe5=Vv=~},pxp.wxx̐:8 I4RE҆P4MVI#\i(2=\]W3201K a 6P^/5Omwrma=A1ڥ\ .Q~}Vw댬3MN>잏O1N46ciLlgLa1Fvq~iPm,0HKc%ގ*ܖhe-eYW9ʨdQZ+p7Q[ioC!K Mk~lk`$2bd98A_NŦORۆZ:,h v~uhZwyEҜD[<&@+/g6/ 5z1V-hFMZK~ zn%\\1knTZj6Z_X4ɲZZ"$c82DYmEf9T~p7oŅl2VKP*!f )8r۟ TIp< Z:1xi$uNKl:~Fz&-Quk0*$ :"I7x>*[l'#(eUd[owc0H/`كz młAS; +o, /ʉHlj K*ZdqԚt:/Z `- endstream endobj 76 0 obj 22229 endobj 77 0 obj << /Filter [ /FlateDecode ] /Length 78 0 R >> stream HWko?_@J7{4釤DBZ*\,gv2!U0;;\/7϶O^^ǃVxi 0ٻMwc2>b>H`6}8)On9LѨCڮ?ɷFWo~nߟ_ruې?_>l/~#Os+oD:4#m%/!#|_ KooU Up΃ Tq>:/J %U0ro6{XpŁg8DlP1DQ{V93r,MA Zq-o^m,Q%NAYrYE2!>Ah_j ʻUR*Qo ߕq~tJ{׍UI.HbW5F9ʶ q+x!*]/0Chǽ2_:+(B,)y:2nD_Mf':l~Oh]DFTeX<`a#ysL@ڸ;IԱTI n'*j .'zUWF B̋Y3 VQGA"ϣcQn259c(~qܧ,'A[qE>"oMAS+%s9?A<=ѪM)+pʔN̸˨S)*~5L U}e0H5b2~wf Ѭ A~l*Hrjge e2pT +@reh$\nn[Y*Q 2*8SpaPP]p⦪`/*mU#}r~X3U{zNÌzj@/(4tOBAޟ?V (5J3QRao9Z)2' 1MeLFl_TNڞ,G+p 6 Iu҅&h*$ԟߠ;m2+7N&0*ZxEB(輄yX`r pY R $0r;Y7% #6QP/bv]:=טּO^ZXyg(]z2yxHsEvyk˸;l~Q:iYqb`4i64j [t·Rp35N O^\]<\ݞ gׯnٞz{~}yw߾x}E"O_6/Ow/7of;y.YCwŃEvgLbqGU6Rg~ou-Q[`#+yƬއWlD0pPۢ-7l*Bz:'1[{yޓWڽOKRe3#yY3S 1+а֜uSzGr]% eļa #K= }0Y+=4LS, %J( 4vjn3@O:z sE#f0MS$HRAٶLПuHE׆L,̘hEJvJ:IF.C *,J'&th.8G|%Pg0xÃAgTqCou 'HfcZ@,Z1XmLaFU茱ɤEN¯c:HNSY4FJcXP&gy4Fs Hsu\si04ٔPJCd=slщ֊EN§cщ:ǚL 1y!$PHsF\(R6WIl)q Իˀ#Xl=dc٢fHxZ;NXL>jVK[$S+܉;4['`1t؁x,z㾏6b ۢMA, sPLYdΣ_ PZ i*:`e}[ & o4(1T]H)}-0ƈ9@lwID$cljÊ7 u0Z_m*56[Czf%3!õ!#P]\UkWȰ? rp*+.$jWPGj`9slK[1N{Pׄs,;z Pe_S al :#E)kUeӢp}(Y¹|Gʢڏ73E 33ȠMPJ&3\Ŧܺɀ*LUhea?il JR84pdŠG`ېVsj/%嫺pܻmb]J] Y2@(}3I0=/ #JB UBTl wiGGsP@+@SĠZP\YVu"8#cSΖtRѻWz6)؇>$-Xzv1%gI=o~j^߆G?q@wbXQyPJaPyܛ,g:*P!F??xrp|r (dҭVJh;kS7.*,؈uֶLcx0AitvuA^.eTc] $ َ+%\dA\S"I nN|Z1Zx+0gV)Q `2p[k~'3g g!Ȥz-ϱ=d\ptG۫Sۀyd qϟ;JFQYp*qլlDP]kcn,-x)"xT߷l6&5iQE3%d$eݺۡp) C1{`2ϵ76<%Gx A1ҐϢf"VNݹU¥ۅXyyxr8dX&fn ?2oNwDf ^` zI, 0^u{;;# яgsʟƒ>+UMvLq$J\Y kqG@:OP @M8DKO2F'9Wd M=*uF"EIXicVmYW{EA@qr"f< ?%rOb|_w`ZL?_0s~>|gLqi쮴G9_Ōm@rC_TٸO HSE(#-|i줂;w\/d,ӭ]и3\ 7t vlm!GCx\8~/O>7~|˷!O}=}tkCXL障tD#>?Яvg{CzQX *m!,fQ`)$syU٘HRULK2Iz $8M2)z̤PQ$ \öZ*۩L\{i5dX uS2\J\Apʑ2$}ZjRX(x ]sZ"GuRPE̯$;>$=Eb*e=87u2%Ѩ鮱Mq+n7VX ݻ)³D`Kdh\/]{5z%Sm%VmUV]"pnMIym['+b2hЕ1 Ygq]o+Qa~p l ۟>,wl]u1XVU*>8vBQuT|"6,|\,_Y D؃%sA2 `讖Mo#!JdB6g0t&@<1d9u&d]$%%C?57sZd"pT+yZ@2Zmh,*T1"yZWvʔ.y`Tg(# !@]އhڬ( "$gv/l×.z"8C =i#mt"cWφoDT]*.$(Y Yϔ$DTe"m_3ޗWaFЛ5)aܬ16·4(RlzPj@luhMn@*3\35r^"Nd7 ]Y޹ӶJ<9= )8a/DDOj[TWeGaY-ŽG~/ȁŸB stߓsb5me)L8t;VZM3{&([T~4X[uΔ^b hDfKw\bk=(M!s@XI3N . Bl4W TC?喫OGǀs2x9ʿ>6֤YvC&C,fGݧ/JJcwIYj9|6ny{:4{18 PK";Ak4E;M" 3Bv2d2$n^yy)Lq~pj*nH0uPĵA7If4DVtvj-;~'r;! vɫ$g/57vƈ`mCh;( c pH}kzA#A-u*;uSV`³cm@nQJ'|fO@wž6ֆPZ`V8GCaNFwGhNAlR Bf'l +pSLJ_S|0u,ÆFeTs<تUt+t +hdew|+'fp4v14m?ހwX@~ P>Mjt"lk]]TX52%MNRERpRv+P5AkN߶$~5uI_*t+bNL՘CQM 1Kx_Јt1Ex $IqeӂV7\1G |Emu21 USxѾy1YzzJO:&5Xkxld*0e]οw@zOו>Tp>8 ̙]j)tyV9}\ #5Z9L7_8S^%$TD(f U&M9#LC#LW '0 iv;`W |B0 0xJmGw\aڹ-X5oD;>2b8>?ysnzQS&mߏk᷵Q5MXL4o޾~zBY?H`r |/łQ*0w1.T 'phm;5G=*I=x= Ǹ Ԛ>! . OG5TmȺ1@\ = hm+V`4Ԓ^ h̗ܴ*α\qVZsoO D+)v@ϹaE{z vW»-VRrXFS}”j(a;#6ͬ N'ns-k2,h_++fpKJt4rG{8%;9-wo_|yB_}7?|?_?_>/~ ./?ТGRqDGwn!1M3[B<)E?Wy;u)LʯHMEU ގ^ B*wib;Imv LPF"`[nS$r{!edTZS Ӟ TS6G&{6ٮv?e!K)d&(58N1y/ezYR'wKgWYUˡw bҕ0FȌ:wڅg:Uߎ!B +Eǜ9n9ׯv[&Fy|@2f~B]A筡0W;5WK2w,0Ks%.jU$Mpo}P(=`ÏS6^~O_^$~'~-7~yw?o}%އNC}>w݇C_x:?j{J#m e~9{ 0aMk2dxߧ^1Im;X; jC .܃rSԺTlLTMsIqԉT:VF֥!f-? ݔ8EE}`c `b2ĢSXnvoA_hjW"9Ӯ(˶ZE{"6TX8CR gۺSԩqFEm;z1=}X}ŠX#EZT :S? :*C4Ԝ 竹h,ߎ<ҏ HOKnnSkqu,@ |mSb +Y qNaT4!Hx3^K0ԣ+p(SPjG7Hմ5ߋ')zOR`4Gox,pF?iEu}B`tXOZE̓)VExmַBbMu?TCwk4lT:Ne6Y?4ɸ2YEIIʁ`!bܳ(Ezê^/f m͏'x{WPgZ-dL) B%\stа+2HHOtk \ 5RH \$3ihuv&{^&5R'G:IcПlrDn|J Ě<=*ozS\:z5[z[}m#_>g:OM]M?LN/2Ɜ4QC)N~kZH :ST{bt_g&B2Md]KsVI"a5[6>(i?v|M" }z4%Ɏ? V 1D}WbX6 v5YLXחEEs?S*hHq8.Yl_DPbu3jpq{%M$_ff&/E"C)o^[ԅWzǜɚɯ:ڲp evYҞ;E ʬ<\lA2Nz`XW{5Zrq[7 C %fյ4 uʕ袮`!SWΛjk1,X}x^w'Z*|W2)b:*C6(z*p)q5{Ϣ$ IHG$zEsypmwHZLIp;>'R~Ư5F&)ȓ8.0[܅%w w\ 1&CRQE7"c0`HH3T.GkN񇭱e3dJw&0:?ٻ{-'XvKC6m{qN˝WSٻG>>1>϶u5}%lKwL2ĨH]d=@3ZbB!!\ky'+@SҠ%j51#~ٮ=nyU*H:A4y}[L5/yO"<>JDM(X]:bW >!eDޝL[P5} `Ij2cdYuUdY̽?gn<-B4t$J,[n?+[`YA?V}mDm֖ڹ%jm{ȝk#(QIko"lM e;qX9 `UP@Q"עXLF1OvڷQ0ExMZpZBIIV%7\hwI3VP 'Tcoz⨻n$x9|)f,O\NY؆>3?HG+kŏ9I*,_ #zB *c PduL7%DPO'74Z-63@%L'uoև")tH`g:Rt,d)L)ؔ7Ia~nYЖN$U_۷W~ Ru&SXOlj> %R=kGg~8.55Ow|,2k:Kf=k7(8?N|K/pR ?L@ξT:*ȴvת*꫚V(e:ٮRK9QN%&N9Cc*邛YzYѪةHe0ӄwt29=ܞV? {ഊ^$#cXٮ/CyBwI#XW-^؈"z>t9+(nAP##U'pîAe+[ `؜_X0mX}7hҶq#b,g̨qPԷ5iT 푡{ lS2Nqxؚ[\Ww=0 H'8VvC5 R1ca'Љy9Zv:8$"+aRAVEH` E}Vz=ȕ[g~c=5!f]RŔ! @VrȔf&>b&^DHkҪ_[ R:\7Ӳsj/%~qIDǭeIEE 7ihT&FP=&9S 5V*'$ΐbFڒ5Qul'U(# ϑd4{18l*N(+kRELkR~t44.elc@@㙾gÐ,+2hzP$AAQ97Փt:S¼"S t Fg reV+Ll粼$M.JQ![V :Xy}`#%J3\-/ ]UA"Bz 8b80S&XiW/z0 r/BA`"x&% X(isJ2GNGh -o9tuŞ»RdD{I;wd Bug\bj͡: zQP>up9(0x p~k2&%ll"] r)>ǂއb<0A 4OzŚ&kl L-6+`P p e;a A΢:}r/m>fs/@ ʼn*prqԭ]I bٵ5t }Uءa($MrSqqa8X:LֱU lAt٦\L6xfJt^g! b}N -DO*)-IpPV40זGDdRIŨGw w6Tr @9rWoV#{H猩^}Ա4#}08G Eh DS͘n 8޸K!PW[B q˸ dVckHT0 ؋G量߽>|Oܾwq{O~y?߾??#m<{݀'_o_?}ooW-ۇG!Omy27fG`m~>'y?{y{eϠ=ԨF}v_@M/k E;57b4^>dLWruWm)fg&׉%Z]t4ϊfi3('ad˼&~Dp2/Ez0څ`4w8XX (ӏh>,Huz૰ß]"Yym!#1dzW0)>ԅDdlz8Dt15~# )[e(HTfZY+ ha5NR?ioqH-<@lQ|R !%߷_&E,_?"j}8"S}Q[=X^%Q{{ VtkST=}TϞŸ, @ b>m CY(2l]ciF`=ónV݃='&n@IKV2R>hz˕Tl6c3YbIw%4"- dB1Q5C_ ¯5t6t1X Z{JÞbF/`63o DiduTbФޯ $vU,!c{V16 8jn x3 \ZqN7N<+B=N40j%r/屝py}CbmK]98h+Up%ٓ- $F*r8HS~-$bB*!qMTGnIsp0R\jh=TONVULEVW*P,:wm%NXR5`ɏ#LQ17l;kHOxB :A`{;=GPޝ.t/}/S3q'8ξ+)NPZ+-lfR`y$b&twpIC!sԻimQ2=v'|gbIq̚[hz$CA5ߏGvA`dÏw|QU~\uAԔTaaCYS*̦%*xKx1,_a'oStRv͕AS!c%!#85Kt)TKtBGJzO]=u=.r#ljOWR+3WhC|* ĄfOb5F*H|͘>Is#՜X@ rsАe[\3"ڡLJ_ !7-a'r-aA+csv!$0{_ 1R]? *+:)g6F*9Lht@ VXKk峬H5n_OwGxʹL|?:VW: AG|%(r%{L*C9_(p~ L \r ک|{jnS vfKlF[زBrVC]&U9e:ɗ*ezHϸIN@+Tjs/̱f]O= *A8Jf 1 _b ʟrVlڹ3懻Lm? & gZ'@%3[J@8 "e$:mXt(+¸~c,=쮓WN`h' 45 rGc/O#9lz8l'q.-; j觑S:il42j9d=J Bvil.@c7Я ʳB`s4N\[p2{4 =42ޮG~u?=r(xT" "l4(\XI&[wi.]`g|1,|cfk|G M䗷7~۟^*̠Pt/s6Y?_|~cE-/1|ك3ӓ8嗺8o?_/7Y_tl bȑ9vv/R9H8gU;%M* ` EǞ(3J[wuV(%kQ^'Ov9:wZV7!waqvz ֝|al?սX}o~Ng&oTVw޻]y oڋsvégȜ5eG'c'Zkbyvy2GWIQr&ouWvƷZnd1JOMMOOڎ2Txtyjnbg?xZ]I1tQ CA1f b[!`9ZƼQyH vt\wC?o- XLMF1Tܳūj`+\w(66-&I_ Q|kpʆS6߾w`CUŇR*4ھkwb c fϗL3K{*+o3_Q1*,!J6fG̓}N (c{DAe.n{c9RF; &ɧqnb,ݓh䙌.[~K `4VwZpB˷NU.(.t L.Ot|飛+_|9$dȬd4F˜+6ÒjB++,$֦pVS+Zr);Yp/pFH8X0!-YFac_(&KVh@()(s,ؕQ=T6q(GQq1AU<ܡH ! y,M@Grw`bh أuA.mFKQP:R{FXȅ=G䩺\HwT=82p4Q)]F` HlcB7{zIH0=җX;ޤոU4;6ERgSt)%`P!Iv*!yB1lӶmt7?|{C?T\ L"+-#LUm_׃#>tN ^O9}%5D/֫V|~wn(AVȚ4P fގ 5 XԀJT[c̺"`*J>"cA ARacVϯB=E԰GTTIi>jB:<:>18چhH84|SHU-h3 Yk}@UDǷ!kA,'H0PZ`$&w E8rX"YNbZBl"b2KRt"Q9dO9ztbGc-Ϛ;ˉJ,v*8lID"G 6Mv+̓pm'(*lBC]5:+`W{o6=IJޖl@Gv] 'MEXtF INϾ#eUNd'Xg6#~wdžJ)"FS" ڂ.qٗF.U>*GG~t/0P_3#40p nKP ,QW`1:F C%t!`^숉شR43Ӥ\e~ Jldc6f : %nZ %+6Sahܔ\E:TPu#T-u~T?Z4fZ)AeC.)6idQѬXњ)8Qz(r3??hn%p]B͂"fkԂY%x )M+/QNLH`1qǪBrT%% \R$4<5rNfʂ>:=YY,]MUhZR CV$j0D=!iwXdF 1 TOCMhRI:F>T4S}U8ine0($wpw;=Kya&@Aۭ8$8^3ڲ,YV'. lSadl4U7xKwȩްOZP^8cϷAHGaq+.8[=1DŭHA!i倎8Xc\Ё~'..=lqgxMR97 g 0o`YP ѢdIP =I`_L#P/dBxQsƕ endstream endobj 78 0 obj 18657 endobj 79 0 obj << /Filter [ /FlateDecode ] /Length 80 0 R >> stream HW{sHUPNU5z vH6@|6Y(.5&"qrٯgFoɉu@V~=llۏubz);j#ʼnPwן2j u$f@IOhBp"zD>Kv:~`9C`-1=Y,'? I|^4= GWTUPwD )[>&arg Lv395$$M,:YD=˳A )qȯrWS\k1.TjjZ|Dqzٺ+|n7IKF )A/Lv(x!V5^ n \,|+Wz}?:]rāFaah~)IB U4 G\ DqHi \k琏a|.Ww1#;9 AbCt2P W- a!f|pwvi  ^>h{c;x6<pSRVm+qp?^wm qf,P0:ad_ W}? <yϓ/'W׎?{yye<.,7mKqzq{2a i=w;X;hB~ $-{ފպz]:^򚪙[L*ֲEG%@[c$H;$ļB$۲H*$Qd4;CWYwxIpŦ[C!Ǭ#-Б%r @_Prpūyt;Q,pi̶˻ /$3BlUL4d)*v-*-Ց8Sl0 mƽo8VA^>!Ͼf<Lࡪ+KLQm/4s04 C9a`#55jk[M592d>6l:fջuً)E~"TVarScXk0-bs5L;{hK>MiV[tji\0i 6t| :>ƥJa2&sZd5L5=<$5OIeܚ:z)ϊt  !#t{L78.(gOW_W=gp⓿煞5 - C:-n-͵ +g-zn{We9SDcWan;UI|*¡hA~ [} IA\y !t@{d/5A޻Ps+_`o44 C耬dڳށ{:z1O8wQ8g/^HrB5I@–fRx/jANvJk/Dc 3W:@#@~i.>'PGȃ;dƠt*sNfKF\4>V呼RqEM^ (ڡEMJgel.$zk*1$׍5jk;ꬆN̔tN 1)0K)UEމ:ۛ MDU8]+&iMG\fd!ZI@L+XpPZ?&52#x8IU:}BSۇX.oK(i9VC!l9urD0ZIQem\_ zӸoH2̸s"RsŁen{ip{kmbYQU/fi^inatd0EɯL="$6JT8P{(d! `qpy f|O[שE\}O;"{v@br 쪟Lj<h[}E!eэC}`b Ї)p%T@=WVlC&l}9O63 !6 x"*x}rH4qH.~ÈJQH,3YJJyme^Vi+wo<Nek2 rUvKץȫB%,H~8P+b!E 7+ $k騩&'2IRɬYϡ>![f܌3l*uY7YZ݀.;CԲK{V:\Q'9lyWI\fLE&xӋhl,R'_1u[qً"K@]nZcFQ&UR^%D^%ey&xFYUK2N2i2UP6빰rRLsx"YVC,glS!Qh˵$[*^/g0|vХQ 3@j?b%Dqf/BSk:"|zvx&}s`H+xn9dgVX[qa`,o;Gx)+Ax0#J' ;p\J`Gg6SȎAkx{ ;oQhSsMC50 cQ;15i0g6w]$j9lL=\m0 MQDZ:}n8)ʚg ?G4;G ](80=H&nmj흿KNcA`qQe!B-\Y*ϪzBiϗm,ʹ_Zl^~i1f Zg,-u_}42yk"= >.<.[$SP~]:#2BCkrf';#r o \;pc5a[ㅶT  4=pģG<}@VvbڮoVԫ:XO{]t44\s=dXg10Yx@L⠎>]8/lP:ȤEL/n4h"Z4߁ &jȤQ

BmZS 2iAh4D J# 1IۮObBGMA @АIJFRMCȷP=⣇Lq.O4 RL4BsNi@ېA&m-!DsVԤuЇ,2 !Y򩙝cer|X+OC&0F&LgmXz9ZݏTNCCwD7xGO=5PoQCzSꚮ^c e<,0/jНL}&Sc 5a.^0Su^C;QzafdGǑ{lK2=  kpW(b‰ ;{#5DxL=#bdbH95߬I%KER޻ XBF25YDNP duNo~$%Q 3o,Kv˿~c,x{t~b$9X&q`'̍e~L2=[yCxWBp@ 73 .K20ofGmb?c9)UU;cRjvƨO}^AT":U4ƛdI #AfַQk6SłTYv5ؔd/9C|IsҵM#dmH պL 0$բG2ۗ5Qf 2$n*5MRV(>m'ԘSGo+l_ /6֥ ߿$;3W&9u]o?2uA9}db/ֶtvx!+oGW 2;S}%mmB2${Ibc`*]2A{ Y&94?g9%K#F+=iU!Af mqt&E&FԎh-z$^c Mk8*emf$mLjTx⟶hA)m a۱}ehV#Lrd| 2$19ir6Ο_6I4b^%vRV3E]9mk7[S[j.sg- .$* .XJvI&XNݺ =e'U/#MrkQIΆ>ٍdI9P]mHǢd/qvCHfɊ^9N>mkw^mOdaz>mjipF0d3Y;e%8 ޻/YCf&QlO;H zh*YWKŇHh ~$'E& M ޳Kь%͎ʰI~l62˗|}b;Flܢ+W7߿$NQ[پdϊmK&8jv bW=xz,Se m֚$}15g}ɮ싫Kj׳Milpz^Now'?nhȔ}Oc-H~Os [&ܥLc#Ѫ-O=D#ocaGx>{|Wu~vrA.J|oni,\qQD >}/ASm皭|[CIAQ+ ZQ/h#90ˬ8T%VeIV %+NsCTd6UtZmR6rd!Czrs7p|ʷ)zRԍν(a$};ii.l0pK6IfC.)~#_%;9&lVgcm/a˾S)NJkMr)8>E}ӧ}arشd)*w&r8>&7M]rsjِ^3u\ب:>m ^R~{)d ʰL5ee'F\Ww&NΣ2}ɮ+nӾ${ZI&I,_G.]F.ueI]#5Z>mK4k&) ̲ Dwi$L\uoIљѣ/6Iݮ 8I6Ȇ$l; T}w>2 Ql{ `5d mSvîE2sڗK'g`rĬ[稷Lu^O/uFvY%MrovOvi[jSdIγ=ؿi&5vRwZ}&9}TC39W"ĺhA7TI#WAf$RK/d|ؓdIzȗMILfA "L϶[& ܂̶XQE$MrJ,Qo . =eucW-iˢy}$W756SN3^̶߶ٱO`S}Rٖ.l^.%5:9|$C2gYvpFijvdI@*s~?o'%Hk5 R/`ε In r 6m̚?o`Z;9LpR7'.;eewaU׹mym%ۮf4B0m7.4FɬeLvIޑ8 E!)QvP4Le8C,MOG J TWΉ?\&~ph?&E>4 d9oܸmnF[`;tqh,h?[XO<8gSFeuIi#?[v0i›}kO^(cu?uPH-2}1& JAy4O5.eZEAz\r$∢oBu0kF2Ѵ陞ųmIYh;YG_vebNvr1궝%k2* ,YGG=%usE^zvaq%]%Y{RQ& Dad^n7$~)[2h?)B/P9:N%O,_\YTz.Mů(} m{{`;KdK{4yK_t=C4^P~4}~N9*3DG>d鞳F{fs,#kMe&zPOddd0U暜 '_#Ͽg`?iKɶ3OAQDm; F;߶Y?HL1v-oާVY>?l'^Mړq~i`3O޸ܛJz=4/ NZbEj +Q"ygN69f!H߶zY+)C}9MS3mIm'3rht  Į(\5g\ux=g{-(>Q'0:40`4 dcLv &9(rw &䌦WDI7Hkfz7=QsFdiۨs 6RӦ2!so9dIG%\3cer5?5FV˷IJ`޾Hl_3Gvn`l LYm2M'THF$?1$J*i2$KHԇuxU\o .j`Bq;].15*E8ctI3pVCF{XX~F5Q釼d`{Bm^{\kdN zB&(;KfiCF!5'_'oԠMrov~ٛ,;(j76Ii6Ngfe;Kdolh7)|&Yk_*zCFdkzπ̧l]#PE0]q%7EB%'GᢻA8*@A&Xm0e5>t1Q&ص'e2>}驂Ɇ -BSFd.X`%zy$`SoHE p ZClFy+4$MRdєvI5~hlmt#s=y$m2$Wbd2ڛذ:Nd}$s)LM2s_*hiNK%gg[،¿Un`ˋOdj$qDF/dWVO"e 7Xˮ@Jq 4o'V2 ~jwsy^vI佚ks2$k> N;IGV2-ӏMrOk}!ќx}0s*.dnȪeWdAV{m'{UTofI2>go7iK*:DmۢJ,;`B[%?Q"riunJkpDWQt2N7=B*Ƈ'mOTI~ʋ|~[7aOVc;|>-`O >7.,nN]?>s.}K^osUN.)SK7V/l7XAi}/f/@A djƏP({9 um PpVAVD{]- )=%xl 76}*O gйeƕ >*&%j^i%1~؞0B}ȽP1ubF N$#ֳ6S`9 p\yӢ췼iҩMR*<$GJ͸h;ي\t}DZI~Iښd'ܶV{OVX[MqT(adI͡J"CFdmzұdI<7m5Sݢ} _#p[%x),o\ա_\C#V0Jd}:t|tA2 K??(`;){p˜N~o_.`޼M&vvr go۷}Ih;58wd,7>~8F5Rxos.ou53ܶ;oD^޶=gm;[ܽf7/Vvr XM}9+a[ؑߌ6IYR7ϡekU4' {Oxm:z!~M%|a 6(<=bz{~IV-JJ4m#q-1´m /dum I֮P~mx~$ަ]-;k2n 3?&34I3S6ԵsӲc9VKO&ٳ^M^IFiI=֊!MKjn~$Sʋrv鱍 I?6ɞ=S&0`J?ݪ!M hmlua]j˕dIWImfO_lydxj|Y$f둍hjAIzG6`?Ţ-`luX~dIfzdi-̳ Ʉx<=Q5mm1?6Idngil#RcluܖlI쮦9!m$5T&)mZMincLsb󱍔 )}5IVoiXc2$OrclгdjR>:$뷹F S` ]2VWI,iDh;~$Rcs*F|hD){us:odT,&6ɔYd6 yIN~N͡/ۛ.n/X\.$jҿ젞=wY{e6呝,UᶝzW:jP9ᶯWvNj~NE|;:qDEG=N q&vRK 2|N]u2 oA $$ /[tLcxUa KH]A]0O_>{ԪV (u&Nhkuc;81z: ZI]*I 9Ȗ&;Np oA8ҐDݠ$ndtEID* @͊KKܟ(\i#Xvi A-:vk:w(lZ 爝d|-;9oFDL;߮sS N+]]2DIM֕IFIG;7:lώZFv،)ʌ\rcΞ:%4 1GCk 5lh)LQ` pVa I?V<UH9rvh:ndP ƩWMnW47P!VmvIAVvrnFC]SvK&X.XBȁHp(Jb,r&C>՟?2n2I=H2$y#ڗՂ6IdMW`$aKdc؍?<%]:I&P<$S H*d7adr,_7Σ& )G4Km]r E6b$SlloZ1Y&GSK>҈Ju,_R0zmL6ɶ%MR|A@traFECploRO&jkDQl2ۗR3 endstream endobj 80 0 obj 14122 endobj 81 0 obj << /Filter [ /FlateDecode ] /Length 82 0 R >> stream Hl,)@-h,>m(_U("I@=jEE%QCFd.6%d5ߟ>xyI!KQ7PN1jaŸUidDnHn|$gg ݃vm`^AV;N߫}H Ng1 Y^KNp *oI9,H_pGycE>ˢqN0|C;Ɂ$vm-'vYm'C{sUNkO#=.ӛ#rXtxZIʸ%Ugi>> !j'9E;I5IgQtCrJ!;)kſV38Ӄ$#r4 ]%ȱj&?0 GG#>fp0loq=,Im*ݹ7_2VCe\_\U:hP~;WU~ 9܉U3ǔj:f`LNeEŨ}ƲH/^PdxAYRlK4MBc6_15i0ģc ?q>ŭGܧq-n8-sUMY>jpra>TR6qs QCO> nlU5 M-m}ऱvdv/fXU8U58k]Š`jp[\AR&hHj9ÊZM/|_38i}zi9 )&e If`r0c4nK öv}`~l:GzPnf`]'\ eF}afޜdhlU\;wmQ*%s,Ɂ-Ff+fb%s~dqEgmQ|__Hv\A¨: @:ؙbq»4axO`O"]&m6%xn[Uy|6\*1m2b/8lèsK|.88 ګee"`CglV<.)nbPeM ?#NO>imeiZǠ<থL LvؕdS`~_38 >G$aGӷw-r;E)\j[_U2e$䥳O̔:}-)gRGdجʐ> .0U^Cﺓjpx&epcYg5U]={3nJ{W4NL'`L~G Ia Ɛ[7}DqN3bP<۠z@htV3yV+V8˪sgq =\V~n Z/)!e5^PJ?* 4F ,vP NNygPjo3լC4d&yME2l`eVPY j-D ī"V+YscZ񵬒:I[/7MΌIYInZz 7'ߴs YbYiXSbIlZK=V,6<"O,dc;ن`5lg[ ˶J%薎@I=oOz!{Ye3 yXS VYUeҴɟ죒8i\[}D]:BY%ܰ Ce:{4'kI$׭+p1b֬C8z>ik\s-~4n\S{+b$6S^sS, j&ov7w GxY vmy6l| j 6Ěq߳"X!1mVYOfAu;DQedjUxelUq\m5{6-'.v2{YO&s޴е\ʜTrV aLKtMx+窶\2 "d*zf[bSznYQu*bf;>rTP%g1nyNOU:M&K"I boMin'8,n6w>z6|[L>U/SEAZdMãs&9<]VuK ϓ)Dc o1]ߵ"YcEbӢF/U*R$5Յ37c>_Ks ө*OuqbRy7T9J:mqqevܻd>L'{lm[~kMfZj ۓuv21|L%O'M7 5-0&30rN .y^O` FrW Ãeӱ!cbI36C vK{pȈe5-C1y]N;GEQRp [fp`#⽷˪s%pY n) Il)>" \f`b2(ϷbI\HJj1g|\v:D%58THjy,nA_$fUcij7-jM78a#|dlέ_K"2lP]{ɰgl)%\>;1UƬ }pL=E]E _DR@Ro\1kVoq#՛G%WQIm/՛՟G9)^:Z0ƅycĺۼo> )H^#/U3 }UrIX C_}yhJ7b`C}p#5Lr֊:{՛裒CAavliyc>%Bܦf Flr]Zrں[$fy\bگUrHAajpmLQ1m6c$1"59K l-SI`$^xn Ql/>jpU91m6Cfs:^;&aI^ buY c Ʈd|mԱon+[mp-'?jpeU[@ܱެơ*9K H^esެ:7B"|Mߗ[ nFk\RM6-㮝ky w䐤}PU{Y%׺M[J7lS?惵z8dA9 }7Ԝrre+u.5`;e֗Qx̥ǜY 78o~X<]&ɮ0? ohrΔd .h:^:g "&.ơw\#WJEpyKVMD=U)e\P%M RkS\nn9ӸwvUTeU_:WPVky[umxr?]-EӰMZT R4%ڤzrΆ+͎9l}:LLzpni.4ìN|ަs]O{ݹ:gc(\ÍkU6M0{c/qh?.a:IUrHem:e->3\">˦j J1_$PhPU-9.c$0zڐ'Xzd۾MrU 9U0̡/ m:&ceFߋr!U;nE9뾕k%E\fAl6εnE [BE&fHvgG-q)|_H=&yb<=>:KzjNho Q|Mxc>&9/Ap6Uʡ%ȅ\PUHܭCAj{nӱym84 t `gE&`>PiQt̮h $&&)D梡/?.-%|^P-߈lᵌ\PMU ]ZS9L~_PgLRƯ b|On=|7g.w.LE.ԛCA᭮P6F8Su\|JP:k@|>mNaf-]ɉepK[T jVFc̶$-,O "1T4X{tG}̞TL N>/%gAGNvmGG7'V`6&ZAikYˎJ?IִĐ0PIK %6I8?wo%OId7!mg/mLp0o$SEc5'}jGs*F`ϚrA&Xu Hh5;C&mAbz'MY*`L%1T.f7G% #{_\hKI+:NNF6jWѧ8m;iSC$2JhL]k}o{::ν[Ib(zTmC696I8`6!ladό6ɢgv GFz$sv0f`DaѱM;B34[ _2MdC!z!\{+ů%vDyeZ4vI4.wv-OQ=XF;&n 2r'~`t ";}&rӹUG]=d iyj/#(,C;e2p c;Q&)zj"36ɉӄhCdIqE^}1od˂=*s͘B_PzXKi9U~0B2ڛLX 0(Jemcf;}fQ/sm2jdIB0{ }]O`Fe>7.AtJY b!hݛQ&lD(IaaГ('wYv46 m3EgieEgFy#GI$MM&W>C)2ڇLtJ+`lK<"7/z;jg7XN#kIXtfRnZ/]!T06tCT\x"gzeXSyBdqe ˉa֕~*ֱ=N-(S|ȡ7Y I6YIюO|~1.|/F'\v,m??C.7KfzK; d6Jh|d FbKCv| Wцh9]=//:>m Edڛ-{`QQE=DWu$W`{_~t YA>^]9[d){?dIZF8/h AdIq^6Ʌmd]k9m# X4Q>M2jc#ǼCb^dڗe"; o._6IE咓Ě˯|v7RId`Y_1Yq|v |$IJ^& #qh}& &odщԃ`΂$zV;XXy=hrx|mfGHkk&37Bw9\hodY>%p'h]xn i< dL3gds2cNϾ/ G_v!D VlrahR?ZɚgNW2&x1&Y=sZ1_+eA$fb$8dDhGdV+r f[d90KX&_$jMѳG͂Gx%Yv@tG&1,DRWP8MRjFGӰOk⚧ߟ=`Ʃ{Q=i.*%Ǎ ki SVtOK9h|M5N6QO{l=Km;ّuY7m]E6ZR{~IMnLu-@L05qb~`l~o^{?\T|_1HasNi=!sI6 IR& Z|Nuu$1f[-Iؙ'h,Чdj5q(00i?኷֛czT$4[&(upkKH[!Lw'2V|+D{m6$6+|5d&MNM2[r}Ht'6 M;?VA2$G{*_JYv2J!]D&AHB}zN.dk$?.9TW%߭1 ? RViֱ(]'߆$kssX[B.PnI qzcc'6//07 =21_v b<e܎fs`p TIJ@\sM~Tb؋mx]^K$7>6.œm6IWZ0g66գM2c.M[X6>cWwɛ6I aMr3L{߶h*Բh8続ĻcΠgNV%;>P@?ehHL~}ȩr,mIZidIQm&UKJV1E\ͰJe-ƺ<#6ceIܛ=ry${M8o˹m)MFMtuE8A7mWQyKZކ= 0 Xx|lVn2$gVa;ܡ!եğ2޴ Qn,vH Hf`Id M/\cs%tWIQ75gI-X-%鉽/(;4A&زَZ[>dӱSuնIa}[&lZd9y@Lvݦ $M*chh}&9Rjy&9V$Mr-m'1m6D6I'%-6I4E0>9~5 Q<<WK҉"/_ǵ|2/C. >uDj[ *1D| *zժqEdPqd>dY*P>}Hj^ڂB"CH~41< z@B[-=5N|l ~2qxi~?KdKhю[s49&iFW-Batbҽ=6o7eU73ٟ?d1?CJd JOb|e'qE\ 6.9d.$MFI 1r|-Ͳ:ibTFE ܮ8M:V׾d{}dI4M`Umd]u5Ըa ~hEHIn^G>d~^MéjL*N5hUme)lӽX=}W&);0HL^|oAytL$eܒ$ A( *?&94c8cI邜豝h,vHhXLz,oI1R 8d,Cs&'m$H섒F\]/T nT̲Q4l`J@:`dҊ1j=d!5tK̶E|ԌU?=FVFخd!簞豝Ln# !}oz@c$؎mI_RyO#I8__-? 22!&T! ;Q}*&Jѩf/(-LCͷd_$UO#3//'趝 C(vJnv]0?lCfH:i̲}NI,.9% 8vf9H.l$m;9k/߾綝KWl@OmhJz[v+YWv(?6CfȉL rdl7m;Ho[{\z5!.NMm$}#|ݵ Cfl$Zj{vrT5(q2NN#dogVSD8\SDOnܮq3; (umjUI`:9ʥByN.*]ID̶mv,8hC^ Uzʾ\1wvBCyl' Uᱝ:D6ofH[CzvJnsc!5dm[`MSIvpɘ+ Y6^ddzb}c;iy,N`lbw#;Zhv<lDݕꇤu㶝ԶOtl= hX6Ϟ߶Q? y#Ks2N6fmx(y_CzlԢ8 AAN}|c.rdN3뜊[vwJNvx/ADf$!; %gvצ fY6%/׹J2<egvlK!@YvrOC*Yu2ND}Zs2NnIS!q }6Nqzl'[7V;% VImЇ c8dאt%XG̲XD{l';L6zL $+ӵm#sb:d~ 2u[􆷭_7@tumnH ljc;rd }FiZ9e/Qo̲tCze9ygN:7W$K $ۜ_RnXݺdym$.c@)@;~3NRNnI$W;ȵF 'd'^Kt2AeRyl'g'm[Ab5ҳ6kjN&UthJ~fImNpv[rm#q_2N"҂ٸ ar $Qr˖[TxנoIWeom(y|CN9ƻGVnC?5g3RZ$ 끴Y@ijC"g uM8wmi$"B>dMժx|:{V;{uۇlv'R3!uT'76ɾ4Dao>$҅U4h2뀂:}zMA$ >QIJ֌!`5MэıC2ڇZrEt0)uY 6OeY d=-1܇V b+3oSsIZVzF ACULoAfRXUKdI^]vVv) ۬$Mһ;V) Ukh/*mێydYdauZMsxl}C ػ!>渑IF;wT'k#mjq0$V7k#A|`oIꬩ7nM8}SPU1'9W4$oMFɉIɜ&MR*,4jЏM6?@(;Xdd "2:ؖwG&)8Z`D }YUo[&C)X_Y,hO AlgEt'QYIvl0")uO voxoUn2Nl⿝gcN{2K^hi%XdRCa-v0r.'sFnm/&r Z5\DiU&Mr9Y<ne!M؇,k=dIV FQ=c>6IMjA2Z\L$eT‚hļ\f,+h,CAc;l O6mkEmĀ;&X7mi0:v$]r8(~%ݧ#~ h;ٜ V_ʶ}oS`7}?*+r?\7C~$HUk»c5Ah&Y $ScDVOv&Y}$M,Qo~bJ:TMWen2妁2=2I?d:22 ;Բhe F m'Mme&9!MX@^,I6296d{9)6ɶc6!:X $}vQjdI RuWt$}-,6@+m]2A >yĦ:OOmS+}1:YvþڴOw${ՓN 66R5u\׌!Lf|8>d9'lݵn&E9/)ڟߩ#-l5yv,%xv~>;S>?Iaө$m(Ȓ6NfoZn6m,c\ Z)dDD]><6'Z1{y$-9=H趲4E\]Kc98̛8ERVcMFcXگy$:hbl:tI} b`ӫֲ ;݌&KF$ڽՓ#U4 mgY8SҎѿ6IiUb~$G_,*`ķUv^qv VzT1β6eC2AZgu1Y 9an$:XU$dYuIgcA&8R;6e#+L٪y&Ys؇DB3NBv$@tw+.@ 0?MK- \{ ikM79qN=&#rv7cM':MJwg;moR'dYī&ٓ;oNLܻd&%n\LI)*&؛T VQin{S7T qau;U&Fd"EfbUCfbuާCHbbYe {;Čc?fp8Ur; 9|n5 ɁՄܩ&gڎX(S ]Ex޶FT]hy或8qq|0Z;SMn 4aQk&;znE͍Nl8=frgyFD&%1|^58o534BTR,G)Qɷv<#JG 0#>L>jr*/2ko3lcfb<[:ɭnfL+">jrH\a}GMA.1 endstream endobj 82 0 obj 16427 endobj 83 0 obj << /Filter [ /FlateDecode ] /Length 84 0 R >> stream Hl˕$9E-ڂ<B0AB]7uoF>|fky럟v4!;Aѩ nչJۃkޭ:GN 2S'pU n"8so58Q|Uӱik@Ãcq@>$D&W9,篁3 W臻L֧l5U}3^f`5uSpM_'ԱH(*ڿqET ~&u}+*;-=ȚwUNpMo79k)` ;'|$G@2NR6ao҇7Mzî IJ5h ;I8 P"aQm').NRAvk|8b?d\8v E')@ +l`.k^;ɡJ#'W##67q4mhM|m'VAZ _rYc<Q=|z\;z5ď Eqۭm rY)d=M#NZ=/vjdtd% b}mvmҰd9d÷Ancx5AVK[/ #'F[Po w@+5ק=Œɲ,= }_nY#f>+sӲ- Qe96Q]}T#=mM ýQ~dY>ֳ!ؙ8f`M_fpzp-?؏cs# ^dչ\wVkƒ\Uc`[r2o-oH>7,n8J<>>򑿠zm#|mo˾?MI cKUuvOY$h,2@k%'Jv}M nYeTUi"=rNm&gZC6r.@,^&I0QC-]/Sɠ`dM2QrGSǨ 595+}XT(lc/f4@^2A-8e!*!Lkd/ d#X LR߃h 5?u,Df' &O#ښo2wYLpeM2HmĒgylMfty$ef[9͡&dMJG1{le~4&Ye}6fSEG{$u~Ijs0?}A&XfG&٤g˒dIS6)IF Ӫ96Iu&hء&FQͺ>NX +JcI-`0d[HOiI1Su2$-^~A.Krm+M-a7'LP^R=?~dg}>6U+dMrZ4gFdD5\(L7Yq-oܬv nEV`|$sk4>%M<6bCS` fmЂ22_d::qwMxd2ȵoclMꎲk~lRl$7'MRdmrLiv>nm yڇP\L2ت8],oK&17.Lruh]/6Ӣ~L40؇v^z6y${ZIJ)k)j_mGY}xlhFO*VENreŶ@ydڗQ&ޣ-DBʼe#mfKpY(gF0ssz  P/fjA,MT Z=ɲVg#ESG\m |)_,ٹü(#[%7eN5{HKDM?G䴙׾j'Wߵ  !wdo^pnТb#[׬J%CMFjϼYێ4uozic> H5>C$]Dh-CRι9Fnq׃9*w;s'vyd7}6S-dAj#v\t EFpuՇ .HmJomi_ AyCh7CV? EЂ>6HTIdINY9܋&9ۂAf%gmNFV]mT}"q=6H9m,Hhl=6R&o{e}V=c2IQM 6Hmn$}H;mLr %zPG;K:qvj4;VxV2ɺM.6ɼmzgn7mm%U#<6wsayl.9я?6ɲ.(˚ ]-!K0jd:IVl:z>yWIi/diYBQdlNFdmލHB uX-=*JLKt%#=*^Qh,Z0UKloYCi8 2̶%B2$k%v$ ZNF?k:` jn.%XkG9q6)MՂ+c{d%, [_. $/&CFX{h{ k<6ȮusEJwYֈmuϣL2 mi~lQdntUAVMAV&ٲ|2Yt2s$uՄ"NF] pQ&lF(S Z?)I * cmMscl/"(=iU;\9ulyGuPq>Q8}4\oAcH:ϋs=j?uLJusIfOM7lׇGunH?,I[\,*GSV Wc @jrluo qn\U&-]#]Gd5QNyXp65IVb  d;Qky5]\U><)[jp{sgL[[MУ'bYx! MYTϷB*b _nq] 1k˝vrjrkqWŤlK*~Š<#Պ8pnQ[Dbj;ZFp7o[8jHF\o=Sm4-fA uq8|+b`]u}ժcAUC CoVCHƭnã7Nc yV׫jpCﲂ+qh4whLkN58l/$C3xj'ljrMC`{15ؐ[/auVh6jpxiN<_UȕKtqߪ&Ga:G a֣~9-bBݪzsU;_5Mp*35W pbT5u؂+֥ƵGEjrI0ZMx UĠY˂ӛ FxbaYIo38ퟗ4O%7&[ ЃjM0M%*iSU38-qoX4l7g9v&58KU57z%rkOmцsU NzG ![z&'YY'/V`r-Rc ی9U58?-njEaVd5-^zT6-u)am౳+fpYo8jp똼窚 bVY-Wwӏd-!b&tŏ1wn1<,6.WVAOWt*y,V79Va<|nNtPiŲ&W!; ?\_vds$҄-jq;#.WжQC. lYx[k};_5g~jp'ё:GMn1.Nm&64S+G<^1vtho=q8MZt3ޢ~UjpIQPFpE Nc/Go58s'f`0xI o15>G GcsL=]=jr]!8֎(iUVx۪&wt@troQ8BMnsC׳HƱR*~\nrrEMiG_5V JU>qV3|ߎsIiN<\i!Ãf=ĞjYbsfb>Ƒso3pF-ș|F9h5$@F ٿykf~OϭfhS(:}r&r\Jik&vƶ'k[ơ3jr$݂x۪&7toP>yakگELlƔ__IKLl~+ey` 믙=JoQwኙuZRUHGR'-&%ˉُ>*9{+ԯ>ㄳ-jr$j2ܯxŕMsPn4.gfth\yPn38d ,׾_+0Xp65#rsU554zU5kpui9 gPϫwjLnBD23|"J9yzp(6"reMk'ɬCdYz$ѾnI)9$KV9AlΔ`m8h $a\$!(df%TIҽrR|vRr[ݶ;_Қ3B$aIG;I,ō(j'XskVId/r Xꠁ\ Na+nbI+ r4pJ[61d|jɭ=%HY^l^;I;NV4QNex#IV;IڅÆ:TNrwVarvudDYk'ud= J Jׁ3{/ӣGWNr uRvna"dDDZ~Nue#?v(yVNR_ h}bo^s; ! i葿S 浓Sw&^;uB-^$es^;CgT޶(}"Ѹ5% qQg>fa_c!$@bEvǿ0F?jIѹ!ᵝD(ڹ f:WI![EN,oK-MgHrFIѾ$Y$hmHm4vN#GLC[2d3M4P&[؇{j{:mk|0T.eQ~r  `m]8+?}o{ 6p5\t(GFA&8d~Ixe yq pyͅl$ڕ"dm[m6Cj&)WZ@ĪQ>jKyd 6HO*.-u>%7ZdE3o%h?&e Gzya'g)SIyyFW!,畯^Cޕ?wz*YY3;d9lCz۸01uy9W/:&٥&(YSAObÐѼ2׌vK{yۧN ld=ɹFSO~]ruX+F7t&{F4;Y0Žo9׽dCe6[ %n}&:vܡ&RUn;L é6Ɏ%*Ǥi NIjN+ hA%X#$gL-&9zDK>66л6roUI֮9$G>`Zobo`I@;$MNY|-{P7 \B]h)0n@䛾,wQ&YR*U .w`/8pkY%r?KPG*yeuHˏM25S%m#1t%@o6=!2r~d}۹.4Gv{Ҭ?J#Yqcĕ~mnT=GH4Zd^N9MΔ$6)"9v'-dF3e ۇUMraѝ6I位(}k]}\1'M2gdNFHQuhxm3 ;$MJ"K.'MRDh}5^fIIdH<$mwUkSIU(|2:r}`p[؝+@ь?+@KB0N1T ]m&+9w{]LR;.0'm$>& m&h$nmsg.'MN ",Ll}A&W5WFH @?I.4K52Ï(*dm j(,ҞJg&0D2FN' rr py ed%\Ti?^62c9J>dMdIZMD_!rh5eL"I qɭrmC.ENF\z#>_%XFYrֶ#Kgr\$ K>Dw5i]OS|>dC%I붿_ݤ( dwt7㜎`YCOG JOhk^Ј#U~9e" oDу3kEd' 'F5 u9E:!W5;% ʱI(h% A\0f-!?/3V|`9X~B=56\un fTTLshǾ dx5fZvD\gh^;{hξKW%5odRi;?B $ڜΎp6ə YTюDjNFLkYms.76HkіQ&8J^gL/lt0$F#KmU?K6Itn~A0p |IDr+J%΢2HViL\%kMA LjBVYx-3 #QddDK^D+nNFd(9m8ul'Mr/鏥nQ6Xy8d=Lr .6nhzAbmNFHtC&QD۪$MILnIڭ9muw+All\wi0gK7 崊$WOCɴku2FvZCF [eHE4{qk" k f$@$de_ydu$jr2$[Bk_[>B(:&><1)ώhݱijM*Q$XTz7һ>dhٞnKj}FWi9.J㐿6:&B-)%m ^IܨdI9rd9Kv2Fah$[-&9JKZ6%E5XK p.IOe:&~ڌ&DeN FTfFH-&J|)M>=:G,$+~fѮkdaNF$f9pڟm9YR#mTSu2$G1%9dIN`$(}i4Cknp_Dm_1jz}TrJ71tr=$O%UarץѶ"lI29LК)-W .$IBh uBAcӦvq\zrbl> L^$MjՔWdINͬ})|dul`7dŎ }i@3v b k .9(Jj *3w#c=69pX`t}^LPh-rU?lYVKdIFcMFdͺAv3_rF icQ>`Xk"yG>L>yޱY[G:94C|hsYgǶld@6+}bUԳ8}6V/OaM2Ѫ{,^3$,YdcA5U=m7w`p zRXeEnEDCFk{zU1ȊOm*}>`tێI!1s8Gh+jim8eG9EYR7ebCIH%}sc[&^~1Px:6m&VXʨs>Ч32yxxAk?5uz$<퍬u}s.zQҧ#Jem4񑮃KF%O4LEɞdsyF bru e{eMFIUZ*؇ ~l 6|V>Rju6r%7VS5]rHZ/k&]'CG?>6IZ+ fU{]Osx$=lxF6I JZ;u<6ɔ:>A!1o`P}[&)M,"dFBks%(-!X/\qLuHKEOހ`o$o`M:P} FdWIgZCl}MXBP-߾emU؇̚W@xhZu"IIF`9m'hN K,_ 8}ȩ}LݷcF:IvJΔxhډE'6I;t  2thL{%]kVG>$]_;fIی6lKVaʯ F]pU%L}zza\.5'[>KN4h5Y=dbah?d^ 5\&>-Ȓ!T1!󎲮UMa}ȦdBV[ E" vXòn,K_yԴX1/FNUUo%ͥ )m^\,_.vJ(7bwQ|`@UijݥI+`Z"qlmf)u>dQC$7G!d`,;_`nza\(L̽&}:GI :b,&95ͽ:ndܽIe_dنIR*k&8L2N@Cn 6ɞ~3k6Ik# 3Z\[?$  Y0:eiUtί}f+d>dξm;$9ZttdSuw[&WVpEWs+kA6P-k!KFd.H5m<4}Wcl;ƴ'l תuxwlTkG&]Z-޸n`<`IQm'MR᜜>c;qo2Wau\+ayIO:MRΛjdqkA&8DxB7I*N=R$Q$bQY|S>6ɖ5\ٓcCwHA?C6).,Yr7Fԣ9$k:)uIviK` 4_ QbzyCVmɨQIFdAdyM2ws]hx}Ȓ=x qt`; knl1&9tSѼP4(}vq(n%ε?dED/EmdIJ[p($MҚ{/E&},N">D#ê%|lmzAIVK-LP#(( tE}`:[ouy}[&h/CZWrɎ-'Nbw&#}O<-mPo 2Oe ;8e?mX˪IJͪ={ zl'ШNfIfJNoZMRN0.?)<6ԥdDNj֣vROlOSMroş趝 YC[>`޷4k$enI*F{I/mإ^Mo2J.ݑ)d7Wn.ujZيu}nnp=n8ݜտfėˎ&I _,˒-5lXh ϱ}"+Qը$Ԛjw2##T˭QJ`yP>44 Jr5s)z%q)XU8d*K>Nsב!4PQ^H.DSӼT91RBC R/%\pH %5ܕ )"Jbڵ+:Bbejv!TE)taNG*b,QOXhҺeW*W wz%1FP6%Ċi )敋 S*JbŸV8\X~5$.+YZCw8/%;-(/$J4qw!a!X0Iyrp Qplr3:Jb a Φ$)VzBbU;29\XV ƅddŲFf eA7ͪ$'Æ`cyº2Y=%(谂sQNjwbCMOꛍ^]~(i6`Gx??W/c'Zk/`-l`_Gӌ %5ؼ?O/}O=?'<~^sͨC$\7{򋗈Oۈ>K^W\Qb")*+VvGd;򗪗"#g'e)3#kB\!]_m|#ss\1G6ycW̓MSbBʉ/O|<ʴGY'M.̿^>(?~A$H }?^>'/ 閆+޶~>}Jx^7#')HC p=~:p`fQFњۥ'`U鸗ǷkHX},O_DV򏯯䭽|lky+g6b+K|GMxq'_g kP_'Hp:O2HTW8mKW̓W[c&F&>x m+"n,HV ]č*/s<~#n'm+.s˶H=]Z1O 6ܬc~f.7z lz1O"}dmdz͹2șUj>ARuQ޾L_Y9l?טlU4ڍ`D;I{ ɊohK|5'>#WڍD,5&?cORFbC[c2a8k77Fnwӏfwoen ~2cpwyUИl/kP 1 0sFFBdhJ>ڶ2[]ЈD8{hLbR=4Y3O%Zh(Ft:|-D$wI׈DYmhvrЈOqF,tBF$*224&Q TI׈%e;5&!I׈%.R=h%&]#;cw4<,wsh~9GKScLC##KCc!9G+l{ǸքoPhW7;y)0O6Su ˏ?_ϮMgUAî'W&0u`ۦk:O$ rTЬWV=H9&`6 /}k ; [IP6PD6BȡMr"tge'G).2{H~Dblh}j`'[NKMcߣԔH}&9ڋ>|ZS:` fLxMD" VldΥ0[ыcWϋۋ endstream endobj 84 0 obj 16238 endobj 85 0 obj << /Filter [ /FlateDecode ] /Length 86 0 R >> stream H|ɕD)E-hʂ8 fzv~xd .SqOk#R?\QنGL#J.ͣn2NOK6eҋl%;>穛.hys[}(Yק~ 9E[mK[vp~VoAyd lZ0I_籝٥(7-Lc']$9}Y޷L0T xK8S\P)O 6K ?-;Yh3o2$['s)ɂWz6ɱ]|}n\oq&2REZ|z9m}?$+NE+>&d,` bY5'BLfAY6]Һ빯 ;#euQ&YE/y$:!gY3&l`AjZvNޕL9ɔ<6lV&ġӷHMs&9Iʜg,&Y섟\e&{hn$* )mMFWb9Y{l'Q-6:rRMhVel2$Eϕ*im0"AO/>Lp,7G]U"^{n`A`9I~֐h; WvGL?Rl}d.j94MHWR>>2A!L0 [m?-Rf1,!6iJƛGrEGɂ4JȏmoԪ*,&b%vȧHM- LpiWeV5edO]wκ:MN v S$G.5Obo@t&$Rd"SWnK%k*ۉ6Ru"CԶte-FO"e4mWYgG$6ChBdOG:;vC׌6\6/t&Y0"c;vUc'M{YMGȋxY4=?.%]o;N mIdڗCs-&k v2&YYsp !|*-D}e`rr&v y3{fq2I1ڇD,3={Ĥ 88vɡ(%9uMr%M/eZ7lF2v=#Ѵ'&YlvK'&YŢH;&I,*H=6I4L'}&7HFIKIQIdO֩zC!imrSh&Y6W 'G&8F{d QPd,edYo2$x;w{MZMF J>&M7);p o΄rEdh"}IֆRɑ?zlHF$fQh%dZoeqh;a_2A+!m! 2ɉ!4KdIޔ&;!1%ͣ`w޺\r5cjܥChu.Yr6䲹:8pUx PqLRRV`f'q&MIU)TMrэ,Ż&U3m;#knfIʨբ{$t>E=q\2A)q"?nd) &ٵF}GYWN&}HcђxhkH䒡$dYdlh&sFb͛6I?[65KMRt (,6Kh>6jo"kF$ƧbdkF#C'b&9RFN|hHhj%LpaAM| Iy}CN۳h!VSFI=S[Ռ6IJ ay$hk4?n΁6}l2$xJSO&|ab؇lvVQIb^VRe(3}|ȦA-}[>eI#~[l%G`iq>y4"t  =A>Jq2$hm>tRO?2(ڇTMfiF%c\DI`}8s%#R!V/yrd]mZdj#Cb&4r} o;WI!PYdi} HP{eXm$l>Eug4$}Hd@}C2Ir$WeܗG @ܺYJH`25: #6]Q>oCy#m.%eكoC !5ʢr%7ޖ?=>Kv.RS|Q> zRINi I4*!eΒբOi3c`k%mut?ogV89=dKXM9}._b2Ƴ?Cnt]r@6FNڋx>[>d}i㽍!-) )<ڇe~`R2%IJF@cO|Ȯ{6o H tB2gW. Sk-}ɡi|mΨ66sM 0Y6үަ@[r} ]=A։qLVsB{dR}JclVuIQ:r=6Iوl!>6ȉaHW[%eZ-UXGs0$[/xPo~$SW`ӵ@ 2Ar AJ(9W'MeodmdAV9 kdI];2@:@/+ lZ #7澝6Ȍb6I&`[co^6Iطv2ڇL O)6J S$ rIbi"V$2 fi(S-e' p3d4%r P]XԜ 26YJ#,#~d@9Vh,M5qdcu!6ɚ;t)Vy9m:k/46I9 KGzlYvRp2$sJ.3?3 \1y61˶ճEM{|99NFHk($=#}H3 RK I ?3$lJ«$w'-=XUJ!Ejf;olVFlz֫%lzѾsTKoKkU+jk5$ې]R69Mretf5H۾T|۱nTMӋ&$W _[>S|b;5 *Z^u"#K>L6FQ}I~˱KYuO㳛,ɓcs 5t}ȥKc'7mܩև 6slxPs;bd5xы%`C+mYۍOFs~$[1KIxGff-2>ji~wn;`Y=m3e5Gcf`!]>%֣YoڭL)ʜ>*jI9INNΓcJ$H 2.izV偹0#Q&)9+zcPV%SM'}fNZ$MRg`s9JK,(ML fk>F=!NJM2 ǏidIl&)G$gmT) NuauLp zk7-9kjBZv0$ƹ&@Hn&j#ZNFsw[),j)dЕD)`ħ&ٺ"29^+ 3_v2$KXm 5i@WsNF$ҹ֊YAJ;e&z'ILJs9|F}lZWZU$G=1s`yCJFv2$eX{ 6H! 1{ >6H~AJ``~ۇ۔\~ %9h"r+ l2g\[(Z7(,rl셇6ɖ7V R.'9&y~ v~%( 咳.j\׹2O1v0W\7zVm{`T.`+CLP!^P v2% Mz]MR]QZnFALa@6ylX&)~ e0M-%%bu7|F}\z풛7[s/( i"?6I_vI:^vQ?jCzy\z,U؇uICP9Sֲ|`liT#sƘJ֦͢ vaE^gK ؇brY mCFU4dI]nڳ* R\ȲwLJ3(AK2IܗG.,ÜLI-@DEjW6RFߺz?`lpk+x΍iOF(^H}ݽ:dIs rxW?#Rb=dD3Ble +k1xe3Dm}^BF;ǽ![klch׼m[MkY1̳:Lpbc9 l8fZ2I;(B(yFv4RtRmyl#Zduy+!؉E}35D%Q?lemm\}/nCFHʝj]WK xa֢uӷ:mHWgz$WF!m$n0eMҺVI4u0@liXE 2))6G&2;InD%]c -e CF χecH*&|h MRy LT}qH"<%l膺zW&9퉐9im@*ep%g\VZ/غ]kKҦS?(J6&٦vDu^m\KNKp?OH~hIVǰ$BKkuXu%k5n]'&rc+9%!xq$luKkR<2>8!LT9eK+8VWF j|ǨSz%m'WWn~˒I_`ET%ϏdKn%yjϓ76Im`Zk{I܆4N"ڛd\;=&9>bSknwr_m'Tq`;9+aI9oOUs#x:B\iV׿ՊE2qkbUcM2/yo]laovrȷj㎋3& sVZep .uoAL'S- } 89N~Rvv0>L.IvͣdF=8#Fd {̇(s]s(7g .YFu7$/Ň-leN$k5So`QI8v\+F=D eٗ%&d? 6<6$I*NFM &(w 2$1%6`Gۣ8Tn~NH"d^`[VNdO8OmEșR9dIfm]6m2QPmPv[&8%)BKɞs`+XԺ]UF2px!p%40) 2"K'9Ol}\Srb\reqvi S΁\yW2ɤ{J"!Ye-SFd4Med#ymX-Cc$I G2;auIlW 5oda@HvhD#;^8cS*H|h;٥B,-$dnFm$q_#DW_Jn Vi )z'(J!L0-ɒXGvRB 7Â9@$*Lp 8[-1 exMə.m'ucC&x%r 3ܮֲ|:X%ٺKRke[2xd'au$MiY["lVd^Rv׌Jas]-<6Id)?\lf-;`kk2z.r-[:Ƅ8dXRͣdj[:9?MRkz:WƇ:&B0^0&XlLMlpvra s寎Q\Vu,[V? m{dWp_eNk%5}j}[3N6݇H ?%IC QPq|lĴqۇDщdIαW_j%C.3}ȬdPmy6 `b>dYs&CsrCwo6q3F ncS :)ߵ[>dehn eg1&/o!}ȱwmMohDEڂ(هp9}ȼ3!>%`Qx:}HjDCAR(PkhFG0WK<js![&YEA> b8AYhCj <(9Efȳ&/sn/e}\!3KҌ/w9.'N+EۼW16}j`.w5hNAӃt)5r:h{G$`Ǟ SRS'¤({j9v)D6=jtwMrng3!4gIJmx{$GѼȾmdh^n$&u6ɥ`>8uLQe\P**FOoJ^[6RLENFT [lbI4̟m]INL'FVżmk-ШxMv h-:m#5^&H6ɑHQ6ރAN .]781]+5۵Yp0FjKnb>q:81Ź蒴є<;qmu%YbN-;dd<3$eU'2MrTlV}l#r츚{M+LvnH=whvL8m&#Lpei%enqp(~*s؛Ɋ&>ˢ3$Z(dDedҴa,Sή>mmRح|l# WغQ&(;2Uvo?Y(%>?lݺ+D6tE2Aa{3Li1lڝ{tZ$ً6wNxl#ueIItFV7M{nuf}~$kZxnH m>2-\-IZFȥr4:h]o((NmcW[$P{"3Y^jOb D+vg>2I,юyaMr6i;:6)[G$uW5UgK%Wtx[Q2ǎH`C`umU%Mr2FD6'MS? X.zCALu0NNGi8uXWF+[T~)=2g;~$n>(N +粻ndsUtD$&:GnӎQ([jQN[ը$,$K d;f DQ# LZ1rd$94YS+ȒJf s&cj|= h49L05o0ȱN!:!MW c»:v,m [(z &m>󪱅tx\vZl+N0$> Os۱CTdOmvˣK/dwr4,E7vˆNFdSHxl#[8GFX ]r2N<ӥ]ݻۍ#4\}r,msUf8"0gD" !eΰmwu ,M풳`i>];ݙ"t2I:'G߻FX+dIu<.9syYŻTPE&DEg{dyh'V챍:ej$q9&kg!S6)c8mu^ qKq%WU9|\#pEm9nme{mDUwi,;C]A;t2F"֝s05d.BsyFj @dodkzv8n@$95:&|^=g샦X}d]WC5NgZR%2"ɶ01.ş6ɹ4#*vI֜lq8{Lm+(M,: -YϠ}F?Yd籍DJ7ѕm{CjRX'?iH~ T=ڦQ>d=I" m z\2A4 |/ld 辽i6Z-m#SMFY?6\݁\t2FbAn>?lXc> n??l#NV:%e&q-MˮMShoRwk,C6IAӻ3\sw1m$*º${^dclMԾi2ܲhArJmda\gHM*z!y8my_dj!dG>> G|k1&:B[5N8!7x yh MP2QF( 2(^/?$KrWӀt? p"箋p$IY>d -D1ŌCf&3.u0J! u\7rR2 pl6pT,Y(Z?_lf M޶s5# +/Um;9v9R[&9d;Y RY[v{רvZ^h؇̶caF=dnd̦ѶΧ߶$JL\:i {{2NZe׹&AW>4Q>Ke" p,0JK:|kIvn~~NZ&uCfI9d[vr!l ǔ[ GfIޅ4Wm';m̎T 札$p?d͂k.:\v DݑO<\R㡫;d쫳Nd[扎z_m#Kvn2dY,;RM̲#MD-iݪc}N`Kp̪s1rȓ|:9{e6rٛP#=Q5&9d Y^lȰ]5$n?'OXpU`vïj )HԐ6zrp4e;>?ܜ?C~A$NQ $ [~d91.ӛY!4CFW2)SHLdhۘcm? qd;H+ z,G,& =Nyr_-o75w#Aޤj7p5# SȎLS \=(۹ayJK?gl2l [:dzk$)R^Aÿ#.drݤ/+t~ 7vEn)v7iF&ϹrrhDS}sg#ʐ9uwCJ%dL3 e;j9hd9i2Fs}`\4Jrr;hY1M(0}f~*aDUjf;H?z jJryd0JTۆJt;.ߞ yO%=Ӊv:p;lGCVEtG~Z"kOŻl) I=$хW}2<)$9k.1dYY7*T".,[RΨTT0Y?nS{ɇb-@|U&Cr"8lH®#eU.s+BPMmz9w- N;GGy7ExwC^\nմhJ^}I :owI%} }`Ɔ]z5nsr>(P{ YQ'u~,ru&%M`KȲ?~gU&$;M&9?F:k~rvk{Rl!MY'/'l|&I&8w"xGLRmEodIf+Hl82AڱfKFnCf$ I$ _dljU]'>v8*kdKO$׶"6ɾ?z?`/g yKȈ(gWKd$F1uRp!'_}eeCIxвIfdhbnd e)6hWd^Y2YMdI&tzZ?IUv+ wogC^=2|UcgO%?$ qo ?6Id$@ 10xm8Bg;$]7-6ɦ|~׾8|j6O&{dqt,q$J;®9>6I̊Y}l6{ǂ.]cxe+^ W&l|誇6I$zl\-"G&;K>q.$ST%Xnjie#9%HsP{ FKP|NDƟ?K檶Cfd3ȓ/?2"P]'rxٽcT29Fwr IJ!4 UI'T^3$D<ꨑ?6IlեdQyk\S|m8.QD˩` ƝZ V,bv4=,G&#\{l:rxW=dI ֍wLpSm5+GpZKp>#A0$;U~ q˽W!M\_?uCf$@E"|lc*D*+rNVz6I^Nr_6#fCfɍ" NJ&᯳>6ɭ~րxlY!W~d8,>6I<\vtwo;z\rR[<\m<`D?&@!L6'>.A,%&W&8DO$*If$^xuDI!vx/5:!i.qrW^2+lN},_Rj;&ӏ|Aj"1|eY>%GXq3Ǿ?#E>w/{zՎKNJAv Dpn؀Gw̺k'b/2 AE{6VuM; USJj?6suT&h^Wɐ ]o& s?$lbd ]{}FF[4=É.~!,r$&k fvW;Z1jVKRlM83&i1b[Im+YnGIGwZ~}בSmS[TAZ7>SMڱ{Mfi^~f{^m~~}NIqž;2ܟ3iScn>T$Ҫ^:z6S"^ 3,2IU*n WYn6p#[[~=}3m.Ä8 '+{:t}63GÓT9*rTYIvT[X(`N{v s.趃U"5/ endstream endobj 86 0 obj 16249 endobj 87 0 obj << /Filter [ /FlateDecode ] /Length 88 0 R >> stream Hlɵ0E# s]Qo@ ߫8`?mՇdczY>24ԟ1w@`el0AXaYL6ɋ4*O);y don2 "6HZjt>}l2ۇو77 Cʔ @$L__&W۷ -QRMfܧcQdAF顺wA*ڨn2AgM2Rms$7CMfA<'dVYS&WK^7efDW  74 fi; omsY-_2@1`H &\ќӋ7\xp1YI=q{_!]xn2AN4O<6I;@m}5ll̟}n2ۇ, YiMf$2 KJr +^K8z /-/d]gfjF!6Hd/d նl9 N= S3J,g6H'A^أ _t QR& 2*gf;Ȯ˲FedAj1@t 밼dӍdl!dIAy/t2 Aj^W+"o 5 {)kʍЈm}7PP3/dZmn2 D=Rf9@mfNtu\-oX<~>~FôAj{GNDAR)liWo88ʾ p4M>dg dYצ3ۇ$4ʵ2Nj]^me6蓕d~e; n5Ԇ `_C ..U}G=`iH&~ZoNIDq3o$K+=&ڗ}ȸߋ v<3 kh > {-/طeRAj){>;?lk3^_6ȵ=J򲃔(ȩ& RęZvy }ܳze\^D%Qa2c;ytm-e[0U)\*}oTplwxcY;N9mI|²6Q~ɇԞ#5/;ȥ4 }i x .l:5 VۙAb"NVFQ.o2 ;MlQݭ2Aj|%:{8GeDT0&/6d  ryWŸSvRg'k)xlU{Wqj@ p+WdH mYRNvv? R>}^%eR+pDYieS ԿlUDoht %eG/p%Rel.i#eR#^*B[ /`e`K)^#cCƉvE/A.Lw6 L%;m8Ⱥ[ r6k99AfdiMf&E#u֪gf;H=4Ie$S]-uDC6ǰ5eԌ2&dź }1H˘#6Ho+I]@fK pZ#6M2_Cz&CzdvZ1=Z^fl|hTwRC?ԂRA&zf{p3d_b0gnbf))MɾoIjLv4Mnm9I$v(Y圹_w-e"m=$) =^qP]~!/7X(ZsҰ\Q_dĥK;6/,=eO&.V?_RNB#!ćO%*;S5[9,?Y}>nG`9Yy]JQ[ rhkञܧ>=Ұ:.7ӡ%h))ٹ:%В idzN؇\wF=ѫN isdm{7o$! }YИg#I_lA3W㐂{˘iW_`l˂:̽ Yc`T)eY(Ru4ڿSzLb N ][.+7wz}ר8BfM-c"/uFI,wK*ٽ3!ْEma1-r\rӤ`բ'RQ+tx/ΥM6 G }8.e/\a}Wc&Ypg<$a }x,s놹geR@D y$ksҤUu2FJ/ˆP<6ޗE붮IZ%D4Qm#3Z*N26.㝐c[lcF:~FZ2QdTݲy95yIV$Dq̒&Y4r,Q&% e) qXĒK_ܹrƬ.RkSA0F")[g?dI!ȑ6Q[NL6[js[YT>2IEh8̽ebcSO3$cXH5폔iH/YnNZְݲIrj#_lJbFdZDؑ2٦h;9+qj7Gdetvrj?dA#+:QnR }:ȱL}q׃`(VSA4~ncc8vQUACv izh^ ^ɧhNJh[=d1jFoTIILOd5s&d'{9d:Ib϶Fs^NH}O &zY\D nA$yDe.8I u+ZAvP|hU7KI'S;2myt q[&{ nxds`/'sܲhq%̓EXS+WkU=F+!MrGFbT(1-<6Ɋ>W $=;Av!dۇ m:jwIn[|F鱍Ĉ6$&jM`8Q}HԳLLWpT<$ޭZ ~l#1,X_lCFdI[AZoTM0F<ښnv UY$W]qh]lI6ID'O2$[/Ym[&9[F@ AoC9%ӭR<2ɜV32g'dF.i&j$Wm#Ĭ|hDeYu&ٶ.x: $U$m ch42$jځmuw#$л*X6I]']r{IaZ yC-n\Q 긊g +зLpi`25$v6Ik81E2FBȶ&h-DQlwn$3Vx; 7%gJUJ ]"a:hְ2"H5LivIvILBb.뇌6Yk;c2m:^(7A&N@RAvp!=r(ȾvRf[֑=&/`;$f L2N".+7 r\& ;n.ORdjؑς8!(xыfS$蘴lȔOzq멭e.90-oA$o ?Ge[\o;Y{F|~ꌺӆ_o۫ #:B~^a4իAI.Y0J(s!9(Mog]Z4z/-ҋ[mv ?lF96r2_geUNf}F; v=4X- rLcubr'.g (NFNؤşs̶S&ޜێɺ!m-%Q?g ^zI-FCuqF9zSFֵF$._%MR/\o燭dPr6ַ.i%IV!lU&&I)FdLմ6r+-ؖaue3o%gIeMPKb5}&gl.]xSWKD E՜VlmjAAOV_6L^fp]rI_oBR CVGiVzZl}N&햽l)7[Dݱ=Kx+2$kfm {o6Mu6IgsoHú&Yl&JՕz9d̸SgeyhѷJLG ]̣[5n!9#":\tIm$*GW{/:Nk)/`6"TdNyiiڹ|$1 4M2erm/Ȏ$6ɒۼm#фLl^6ɪ/`Z^EB"2Kަ[|! {?%g_ʍl:%cՏmCzBm}mIٝ6c6<mĨm'VC&8hIL]r3[qK&!߱2cIoa-%;9͏.9`[:jQC&ldc6eq ; ̖/H4)BjYvLm/!͎/׹o}uNsɟ܇~ rknIrl'dR6M"&0w sVՎD2$l5gF]MݶQCNmzTPV=I"YǹiSW=i6>%y%ԋvm\ef%[I$M)jݶ/! 6IDidnv8odF;Il%g&9g՜h\mLEx!Mr7LEBqmܗu}h9w]t&V>ITm9_ɚNOm{̅UT!m$BFb!M2w챬fn`(imM28IԪuFnB8 M2BͶ 7,%k9 Re/PW#Lr;0 LЧNK&ؚFiCoKvr\dIji^2A9F޲ȕx_XEp[;/$TY| LN-\u{êK&ewe<. !MM9Z ,&9V<񲝔$i[=x$5ycW!l#+^DoJl e,IQ-vG2A;\ 1C`GGEm^&) V3:6U8ӶΜDUHԜb&sjJt.m;`Ymu8%銏2Ad`KxoS~D^Q&xDχ6Uώ2-Ab D5FUPL2ՌLܶY}\U!$ dIl5ͲHI4m%!-$Bf_R\QevQuY}(p^|TӦ^2Ɍ1ΗM2fہt2Fbm  >3NZОyN:r/ml/n`K`M0$ܵM8YhYn$M̼]fI0 ˡ|P(A:љ,`9M4Y< z{6ɵ iǧ4T6ISyhV ؇kڹ$<C (:m, fWFl=.v-GldoB%ئۭ=g L2o[S6tdA me-9kv2$GIHnd϶׿9Vv2$1'عLPm|dJ=pJ>29䏞$v$Gdy;m"ҩ&Y4枴dAe( *o ^>|S2>d*)(l̵3o-ž?߹{T׹etސYBBBqWG>K(#i#~qU VUuk-Jq}#j=gkY~E:{7ڧsL IJJFS€V}~$Z.qh9Z6O'M\:`#vlYD^$!?#4wz,IuF2<'-,{sVE#%-j|~${M w~ۇtcFzݣ}L8|J{dMT_@RXkb8rH{Z[=I[3o8E팙A%8F~BnC`x` `'b h wR}9`@0hu%4[&8^ʿRk~QƒmX5;0jU 1G!mZu(]y_ULp$]E3X+e+q,!h-_(fI&Kcc6ɹ5 Y&m{T;G&8r8 -2:ZqF!lȎswY:-UyhmXu:xWk%6 2c=p?2Ѫ;NIf5CFdZp=!ٜ6lOK0eZd ΥX3 QE+azl+W^Yu#=2@]#KC2A6闼eEF1[2CY6IN zj~dupmF]rC,}.@isk}$MDJf[&8G PWxZpɂIIF%U' R_wm2x)ߪ-ܛ?J5{q4L<½o#ixU+C'2IJ7m%{m::&)&_hW&dAnxzYj$Mrfl]}޷8mgfkL#=תcs6g[~~ %$f'Mr|gUɡxQ%Җ&9&_!1O6Hκ-(\;;p'pjު%1bn POU ,}.Ts;en澜6HGڹ9mty%&36H%Lse'}H/I>}E2$=&_ wl2xTLfF#K%/`;IPRk&Izs2ڇl{#E o,u|gW)˲sDNJ$k+??d$D[v<n()L]d. _JmMydI4hh}bښn'Mrց!ʎ ʋh/K>`WQ&) I r36FG[\㊴Kp؀+ZKpjꖜ`F30`Iz^.y$F?%GE|l2$(hWIIF1W /ßI64gB|l3m P>Wn 1ʿ2 PV-6_өm C>_h\mNk! SNF۞^F|l;/TdAjJ.6cmvؾn4g%r6ɩM A;^8dվȚ4$+6ɆN,|e]]n$m">2;Pz宝61Ԯ R#Ց6d˪[IM+Qe>6_Ɇ$kҬ*՜<LKKw2 O JHFdclվQ([$rGPKoACv"f }r MmC&$foB, |!wݶ*-'$}0Z):R-)I ]r~APc<:#T-g8 ]݈FvI\rq2FbM?l'$C?nc2f @|rؓjfG&bh+lQmuis!oNf;u W2A$}|5|ڛ tƙGr`~1n[EN&/f ޸rRUG&,4>Frt=u8<2I\x\lpz :e6IuHsoLG$"(Iq2$Z;8Eo ڏZإȉw^? 7;X6j%汃 )k & o B7oN2쓏LnUdz UG,VG5^W&j,lf ;MRI;$ 2AVImyNۣ'M,"Y/'$S-Vb&~l(7{Qx ,</zu07pfeUZse^L:gw Md7$8vAZi6d\x[!J̶h5d-GI5D2il8 X1 +N,"H 'd/ð:ʇL6ImYr2Aa;tى ITl'!w ǞNf$fm%fb~2P^.ԫHF%?cy?R$5U|XE m@WMt TAjkbϫCi{s\I6? Lct2AYnp/tn7FBRt0$P+x8Qoeej76- =[pY$tewF{:S~\ȰlEI'6$7wjy 'vhu@¸` `뜤9^'qYyn9H8RilG} #ؤ584Bf]Pi}赃5 _7~S;C e\Ne38]lU#ܶ5iK5dkU,'uڏ!"9Z 2$O2LvS>i"/vo'!9`;2A&-^:_}o9@k+ Z.Cr|svcJyAN>Xu~AcUv2$1@9g 2A *|m9N3{4l'Tm3 ^AfΆ|J<=A d[!]_󶃜6bEo ~gR$2[E=l ѬG1]=u9'wlC­CiZaV[9+0_=lz΢JsM?U#E[+uRabuy jJF} V>6It-cYWFIrjUAZGhޏZGARڰչ?3$O}ڬA%zppj Ѧkcyٶz|{l]0,bt-,89JKlU#?؏Չc9XrY0AqD&/J!d\IRlT eI5']]ﱃ㯫scUM;mɷfFx XV'~&)aRmuuod/qۻ8wP=V r 1xl^@1Q~A!QJ|&x!~؇\R56ID&i3#Hd^3^+F:\lo%[nRL}LhGFd=e9m=eTDG[| ry%[F$1Čdg>2$Wi$bu2ڇ{kMI!}qM2&D$}2;6*O(qH*^.n "  `In ոdDk kmrɺ!ڛ[&XLeer*1 Roqչc`oeJd bT x$uQ%,ڝ6ɅӄO|&m~mNeUoeŖs>?lUaIFLŢɿ )-^Hm5LQ&䕻$޽oeIkmmdFkj$e{뺡(#d%q5l!7\6I챼;Rβ|lc2/l}ȩ rdHK\$}HHi:D!Mn }?6ɾB9&&&s|fInzQQ> #$bA4:ճG6+׾mK$MR}&=IMr45 m#,HFM%5;C"+kq0NiViYhmJNԶ0&OVJpԔ6'Lp)+!l#&rq B6\H՞y$OFs\y$u/sm\*9eZ+%u8 9H%XTA %"tY%Xr,W`|~vDXv tSxgQ&&Y{$kN'MrӴCgIV?dB+FADyF:Iul~Lr26Ll:G&Aa[&87fQj}5'LpI%`Y>!h};C&ьduMnN2$z[$@ 4>$Z>??lq$M5U'}Ht͹6ɑ \1f'C.(Y3_3D(eE d\{FFA> ;DQEr#|ٚe~wE1q-MruH y2؇(!I@{DMr(KF!̢W{SYd+l|l%5!U ym2ڇEG& *z[v@Y2Ɂ>˂>?]rK (vѫes,N׹OA&XJKvnpnmsaܰqIj3ƾz6QH'@'Mr5'k?Cn%DvF?DyET/6NE1$,Gx$̀BhMs\iNR Y؇l[meK$i]r}JӨ\In[a3o'm$R[=Pz$}cY݊Aڝ|lg4Xso/^sn u'LpOtH}s9e#huodz&>!#̳{l#+ZmWG&^V>SJ[>T9C3)dIN$Z<=[}K8IFd^NjuIVLTC&8֐%:[&$ ؋Old+-<h3\h- L@L% pA@T3(E#IJ f%f=\T=LkYoS\ 6aURȕMr5f&n2m$|E9dIk^MrayS"i]u$6.Z$,䜲kK>66ɕPrޝEklp$K*Q[%,\*1 klJp͔5&e#3W~E[KL')H ݶ~ovXm !r-32$cHٯ6^dUqhȲE׻6=PlzdYA|Dv2[ob&/eCz_F|y.,GB^OG2)9Tۡ!ˢ46H!d٦OMj25׋T>2vP2IĚ(LP?]k{Vuh=_us ۸r7_ld$8AMr*zbM/`b߆hI2[כ/3=^>`r7/Hm(Kc60|0m\.tRH:ݲx(Wk%D:Z~O7j fyZtMM-;d\gFh$"W4;%M2@pnws2C&`ۢ*lL2Id,j[oe4s{wͺ{|rx"&Z⮓L)Eo>UruhW^-wsһs#eK1dIf[De6kDxD-eoi_ jU7 ,Dm]F`)  endstream endobj 88 0 obj 16309 endobj 89 0 obj << /Filter [ /FlateDecode ] /Length 90 0 R >> stream Hlɵ6 E#pANsZ ka^IW>ch}*Ͽѭ1Vsʰ%:?>|HKF.(D{e|z$^J6_忠~kk4 U k-Q4,`k)Xsl`J C..]|k78@C(`ry9 kA 7,; %kTPO@Zj\vY7Vx&@Yb䇴#Gvu7.#dYldqg٩;ծH8d`e=!Y֛g$xNo)i]ʩl#1 ݛvw.;2[ZVJ63x~Ab?*vd;J5Emfݺd ?\Z%Nl6#bj1tR[c'C/Q'j,maӖ>ĝuA"Ykgv!i̶|ƒo=lɕ< {ԍJNf;Ȳ8qF$ ,&MȉF\Rܫ5^떃yyiڐoص; K1U'm8HzD짟vEkw'm$f;> $V9퇔* WE: ~ȷlt^K9n7n}8;ڮ&$F4EA&Ȋ]N WdC%Kq(%D$ -XA.,Y#'<z/%Y[`\$\(ou^v&+ٚeHşLre@G'hsA0$$2Z-)yAɤMnm$>$&d$ $,_NONf!IzZxfn$xfD1ܥ^r,5җrC-[!Yfx2F. 0" bS) ?F{; [Y 2[F[4J)6M'4}`HorR,je9T%3H-l`Ibl_K&̼GSH̏#YÍSc=~G2#!}.,O ~9[>dU bg}}~=BKi`w:niV=  'y?7#%sCjG6gW">%5(&__N×(ȧez8bՕ?=zUkF=-: ׇe)!lU޷|ڜYs7;TGֳC}K^bU/t! A,m'm;+9CGtg#VH "{nJ=YsrN[U{`%ȈoKvp6[]tձvm'hUvR.p!}2M8k;STôվ#c;zausaЖsQ&vb珌01_ݲ62-DԬնvulYuJv5ScHxrCunMP9e'\r2.UJsV93|չm'5vrdIj'(;^V:]1z&1ї~ϣ:7[)VDw]Aro2NѲUWm;97W\t"չ1-4f@ɜ#o :лExNb͜`^dDV'+/GvrFw&&Y̊~ V}qW"(;e'[O폼m';vI񱝔e}I*&w@Y?<yܮs4b07\X'Fڴg&9wFuoY6;JDmv2׉!-;X7d}Pos[v&ZJ޸m'WV}"{CVY7m#iͪo9dG`a'092BbvIVgNv4Mr}l'Xul'gt-Wcr٭-9㱝k 3i<6IуUnGIkt\HJ tf_4:ػHIIa6svhW}NH>N*.2mݴ2$5d1'vah~jc2AQdM9j޶6ILuiԐiTV`c*9]ihS6]'gemom$n1,oE)jW\mZ~C~ϋ 6Im7rd :~i,{޶uW$1NNr}vN~M3>?dt#2A,N9ÛvZudI"ˢrswpn&˘6I$*FӧV~AecQ&j!ZJϼmdj=ӷa;9VM&&)r"uMFɪ]LəyNJ$q&d׮k):sdܳ>b= `l2N"*fIfL[,vuQvp.rh$/`A+LW5az5~NJosچmh?ͺs% n׹/s$}uv?s~m[:dل kyۇ;)ikI{MG״ ,~^9>φ6\y+W&Cs4-evrV:6Idl)1@VMTj,6IzKo(P(f%;ؚvT}d'r3\&MRsXF߲h;٭TfFU%z($< V߸4Wr'll 'Q"$rd]1mNVH">l'$U!~#hXst'MWQՙU)&$j?l>y6"VgFɱآy$Nu 0NZjez|m'ên.b{vHl֏$6.hMvrȨղ!mnK97m'%.,A^eNCHUE.Di Q>0jUO+!8Tv@ʛ'c 1MFde2MriI:<&dleM$MJ_-QE[-bK_ZLIGaIbҲb1(;Ұ*mn2Г [/y$})m0¬2<<ݲxSX2ɞtYwy$Gm٪8AIF$V^oi$h5{&Hb_ɹDmҏMհjI$$ O&r3I+t@5%?o` .P_v z 7 yWՁ`di+17^2$B{b$jLhr$gOMrM၆q?d4{l6%8G#;Ws ְc(2W>`>ȿl8ĪSI"׌6IYIڦW!o2N"O#`X5O1Mb_[H9odMFԌUy^3N6o雌6I;H鞍nd#$ZL ̓c;iު0Re&YZӵPwmz(MVy$H!>=Ó5/=$%5"9$1Nt*hl K^vmWe2ՐL~&& P\]9"^xa ELMUsuA&81W>dIblF"vBINxhr5㹐 <>6ɢYYI&YRblE5MFxhDAh>nJ)$MS,:ED؇Clm9}H$Ub}FȊ3CIZo`zRxlv .|@jUYLP$i{@;fR{30Uo`,)!Cڗ }!myRcR?Vj !WÏ3|i6goVD5%ېCCt cg caVI4tjn|`~5"{ 2eCNJ̥#QMR]>P-Hڱ Yc}z!ւ_-ZsDtw¹sXYn;l#_}Hmd^=la'[I ` o{&;2Oh0#:ɡK?vGIg"hJj^]I=)`2 r̺ kI'm;gTK>dޗŎz6ɞN=v\P(sZUsMLCާ_z|d%2D2qD?o2ڜ-[YՂ@$;d] MMMs]rŸ1%)&Ӟn3&ehQ;ʡ F .4(w0\Hκ\G2I ާ6 VϠ&)UMO;%Ǡ&icUSMFI4x~\rieN':A.bK҇(%m;mcy}N6,Rq6m}uqW#ЎYy.`^bNbxg.X76IqѮ:x 2l2b9KspD0$Pwc;u8ٚ>MId-{v2{cҪE2$Xc3X'|l'mQ&8F+fo[L3ScQ62#~tkfy2zlI&Qdԑj8yk:grɥnmZ\'l]#LPp2y]rYOͶXcn.u,j&[%'E=2])T`_t??__G ޶4>G}$\ g$EĊ={~d/lNKn輦U̗,. M*Z|'>2ALCŪ2J`v`Dl.Q&(}@Qhyy~Cd :yӸy%X}0,L2GﱍLڕWK$e%c&gF&$f҆l2${YO~d'l82]dIڽ*MF&m8#I_LZ?_l-getdp$o+ݷ-;ka\m0$yj߯ԖW{-h8 efիivRvBDu~&'Nm;EժKxlw`mDquܶw%tNLph&M^2AKkY*l_Fc_#NR {"|o{}{Z}H(LT͛sc`n#L/}.؇,*3Jօ,{lSWkHdIW>`'ǰC 1<Q>^Ń͜KFɎYDK>LiH\ 6x 0)[0_9@=`{ʕ h Q&V 3kr'/mUҞU!g2||\3nM|H@"OqM2 9"53ڇlګ)9K+f=Q0l@͌2AF-6 *uQ&$/}oAܕKF %g:j#O2ɩ@|n,6mcf1wzm=Ñ&YENc my$mLZwG׹oiBpĦbaA7R Qs$/hD 5KnM9>d.բζh;c΁^~v$}6'o${-klɂW` bf(.WC.NIb(O-D6,p6dUށL\t F %;cjY%n0$%kEh>÷ML>!y_[>` %czq ;ۢI֪us? mCU2&d,6m2{n\@Mrʩl.FΥWjsn2$ź*mMYt6mi%]SCMDe e&)M\=!%gm6o'&N==Vm&MFdڀ&YN0#6I[FYIEwno6^F5Rfy$mn2$Ydo2ڇ٣kvljh,\y1 Ip[tNX-\ӮQ&hz$OŏLXtU!dhxq-(;Yְ"4dhFcmޜlM<6ɡg$FlQgFItn "|/Q4o Js[=~-{̉O 2^f5pT dӒ ?yyl%e$:2>3ڇLE5:I&Ŵ3$.sjHR3$EI >$:e'8}H E3IyxT<<2A1= O "Ɲm]E 21J7I z?Nm0?$4P%o2$[˂$!m-jtv$ޔuv+)ç&FcKy[|2˾\rMKzY&KF1&M2$Q>3NV4Xtd61p$#Th6hLNyL1l0$m(>$> o$1ږmӣ}ыEs\gFѩWvE=_!笽N\}H;^=MA&8EtIڑ}^=M(-*zCjG-yi<kIa Ey/OR-:.PA2&h)99>hQőd')oaO1/!E;+- hrdB2$J8 6IS%O@5 ڧZo(1ktc.&RY}z mҔI$m1I Fg[|{Ok4䝑E;v[ [YOXAtD2Iko#_j16Ibd>7ڱqGXpra $΅]I8֕-kL0#lRwƾm ͕E{˝3e䜫Qř2$ǴN}lDh;qMM=Ծh6vy'E <6I bњ/m#kPx?NV}I>ҨxugMy M?]zdI569xl't0Lh;YCFq e>L(X%s?`Ԧj_h:>Ivd"m',Tl2$J;7Ibr$}c;K:Ctde&7F6iE׸[K"uUWD5ƚpM}y*2bOi%Ifi&k^`j;ZGvUfj_dO5:JU޶8!}H8% ʻ0&$eoA46,ڛ[=r5?dzoWv [H$WcQD dvYI1͟V*^dY eIeFq0"ٷf䶴KeW޲(I-- ! zmLU #mIڠ$KYżee`s;\r]w?HKUIgQDC15ړ&W&r6g6raՊdIQ_`Ѯ*5H(lo6Dr TGKw0F"ojo`j@Kkp0w-5ۯ?6ɦ +64|xH|kKy$Fb_e D+eydY|d rζFmdƁMRg0%my'+#dIcyl#э'hLanϼd+n>[Z-jA&Uv&.M24CFb(qNF@Ѵ&f/ڣMI!OYFv2F$<5$E~$5+]Z6I&+HHr>?l#7ۣa,SoVv6Zkw2$_n-cV^hUFPs QA6! iyˇ,eMri$֙` VlEN#l`!A7mRxCAjIFțdI?=m#n.%S|$GHJ$MiZ$Ӓ Gu0 L3uX|y !+1fyU}dea'8m`+CTFJ|ՙό6I4/[IzM2mW2mQ>`3\axE欍ܗIl%iEmD`/Aa&ey"Oɵ > (U ̞^}C&eE )m4H L0g]zG6sUjWLZ6{tDv @i4`I6p26L.S"O$gsO}lv)L&0hmߚ%pwr D N~q0$znƽ&ٴpf&Y'Ź.I]߮q(DKfE d+$Vw+Y[&Xe $] lzuxd#32'Mr24&Y˖aǫ,WINt&9j5)( ]p2 fT ԅIZ)?!$cJ?2{d=21 ]c-`mqd ͠Q&}I! Cv2FϪ 'gUN) Cot3CMxZ[uz0iseiP${hEN[6j舆|3?8$'Od&m&zCf+EI֜>?lZ\՚G6էK][>sr}-\[6>%I#Z|do+K&h@GAh!Q,ٳm]&liȔ-.f rcq2X[>$x[eH[wri*DJB>*ru cQ&٦r6*}82$3$!Myq;% Լ6^2A,P ~w0$[1$Gl&Y ٨>6RSh[ό6ԓEWh 6*e ;mc#q[嚿6ɪyO&YZJZm'}ȡk6dId\ KIF$hUrZ|mM!]NfM=WV66Im$:Wۣm$h-Cچ}~$aa?&eGt_nK&X.ʘ#LY)uOHF+2emIKw2\Ak ٜĮX?.9ԭv=`NY FNw$MJ!F㉬HF,hF-PR%m}$0}H\Js0HTj~~$,2sDQ2NƒhsmlKʉ|Ss2ڇ,E2ڇEdU#:5Mac"OV/K+SBL54kNFdj_Ƽme9smNFrLIZ h=d[%:9۫J-A|@ӱLXSkRg9C1l) hLo?$IQG*}ص{J Gd_S~$;lM2Ҕx('Bi;eĻGRi[#|kw풛K 6_T5Urh'|}mbt(MIlಜ/e#?l dZ?ru2$[I[X(yl !- h^+3$S՝R'm#zyb]a&9ܔm -) {+ܜ 2pTmùP&U"A6.AqW_ELr'O$:]Wݬ8mHHFyh̻ãLfm$޲5xh\5u&KlZhlIb'HhDNhE=ȒqbT{$]rJ_FMiZ]9e Z#3 FmV髴Q$Ԁ` 2jK0$c8YNFyXuB0wZS|y2`lG6H&CV9PR62 =IֶG! 'M섮7})Y ?6Io(_꽐 6_R"C=K%1LpA$125;>[%}H~6Ra3rƻGd^r8&Y!<6I5-Y$|l#8(ݷ$g#$&D=g'MhF6S{+{Ib$Ґ;v͙rnIldH4*͒io 'M2ݔyJ6IW"l'Mrg&謅dDthç7k |lȿ% M7c\s6JDV}8e5c K&kLcQ%7+!{KTs5iMzymi,f''}Hic"NQMi*)9l w# UjL0w %od R'6I-HFu6Pg!wJ5&yf=JքE(}|Gu?/n$nzcs~JihDsv2dI"nں&!TSμfI62Y 2w!$)~lYO{di+KKhr$"C>NF2 9==6ɖ;c(e-}.)dˋoC.jCsFdOYAC|.% 7Zy߷_d퉿Я{,c.ɶ[u |^W>^Q>d]E0qY|VzS \ k!Q݈|n~7xZEd+2AD^m|:֒c$&Y%KU}:ַv>d=\Pc_G5 K&O&9sI%WDb$me7IfT>G/!h4_E:ys2ܗ"`!c@@5OLP7np]( d-Te6uGyu>힄G*tytOf_9/'/I {51Zke l?Z#d }#$kM h|g'jVvgAo~q6EU8qM|oKΗꜜwM$3-(l{| XwIfKyYzyl#3 H5MR/ȕ|m՞|>m# ֙yh] nBMHV2*m%3:nr1mĖYJb-Iѵ82e"u.'|aj.e ܭl$:$Sp2$^T>Re Zc#SCM2 XVcٰmQ&X3N[/8T6i`p LO#SZòy汍idIR[ Z\rv+}Ft'Y չFv2$0&wZ7m%+U>$#$_G6;} %h#,o9-=fx&2֊7dbdDTݟ[{l޲69 2ǎ-t6Rv}MrTnyZw2-'M#LZO6|Q6gc|ZRu2F"abb#,~n[Gk6'O|?/`Z]QnGD,p2$k}jFb˺^l6Z$ ik2F#Gu$snԻmOt}m-.y~4Ku0KSS%X5iur5P~߿ iRo`*Z^Mȼdۉ^une !^8?`ԐU-ؿ2Q3M_24篶Q>d=qF"n49; SbV%+o^eEiaqre9;lFIRYcdI,ž#!>leܮqm-Z.tWl.B((o|*ev ^09Nr͍~Uuã Aj:Qϣr$yINk7fݺA q$*5vimڂT;Ibmvr+':_9ƾ:4B~+6VFj$u_9AE=X\pz>ҽFא&8i%&eGO%;5i-֑$Mb>QXb'9Z }K.D^/GWCMVl/NRtNEA?jԖG%''+vmYlՀud+'=jZ[ nFAHl"'c}^;I- ײ AjGPr4\NP5:s%_$=<ɣ??$cnUfIy@@(vmѳ;y ߔcc҂~,v1 AjRs燝(IVǣ:m;ΟD<*3k+şY/v8v|#;I[/9IԒ>9, endstream endobj 90 0 obj 16340 endobj 91 0 obj << /Filter [ /FlateDecode ] /Length 92 0 R >> stream Hė\9şߡWv첗lQ$Fb=9vܮ{ A ENw}#T-v,^J:BvzRh(N2Řn# dI2ȳ9 $[I9J&Res-<ȓYr(C+y%U.kɥy!~'Msd)ї^}iDl-їv4}i'! 9BRq9/V2+|o}WM9ao4Lr'g{VgwC#Q̥yqψpʹZW l60ő'hn.qHkf#Km֜m$nqWḺD*(l`NGY,BfƓy}"L9 z% Uw)i0\J"6ګQ v2<̬"67()^ViHn%2 zUeޢ@} 6a^nxT2AoV4TR&F2VN63 > Iz+ fRjm [ެd<n#ZɋH6ԖM^J~l${}:QL=Sw0I6r7X$!椗bV2!:(X@-N4]l`Kf%Q"1ϐy1(#B--i~2b/ IJfSbn#KsGl~.n$LYI0#ԋJwB-CR^]j2I6r<1}k:Y$H*i~q+ZEwD\ٽF<`ir7b^$WUcc.EJP҅_FJ/GUJFk'PNһ, +<YatRyؕg/F?g/^ke XEl` Lxa^䨛Ŭ`T "џX}1/rN{.EVrl`AvߜIl1R'<*m')gDQ,$n*\t D3Q. C:8K1=#`%xK{HdIVYydMGAoZ-H v^-<9LU)캷Lpt1yTCLr(sW޶X zH#F`a#ݑ-J _A4}('y~h){KV&$%6ɎZd]V6Ʌ8UY&Ĺx--a(IKWyh4Z~l:@4MMR3e[{~l#]rEokڰt=}[um]{or%8kܯJl˜#XYj]ȿo0$[UIM yZxl'Ƕմ:h*Z\vp䞫+JoFH|P&G&X8QJ^2!qYJ$FƵlHҚzhD]rd1]7I,,CFD1<3hD" !md :}Fd%9{&{&9~ ljcD6{\W!MRvF3H:33$1FXV6t۠$}Mɯjid6IT"6r{dOdRgEIdt$B),nZ{(rc.h`Vd 2UM W&8z7-IbWMu2FNx?dMn2lU2ɊuY}l "z\|l#QJiI9k;m't!K=` цj^x= 82$\ƿ}clR')?64v2K]=;hYa͋GAl][&\]'=2X2Nldnd_]>0:jdlvc;91'>݅zI%mօ;ּe'GJ\/$Q)MEAvжvwduk9KF7\3 r hs1/m'!K ǂ 1Y"-,#˽\:|hb(OepK04`Y>W`;gUvhSҔl95[Sfvr X l?WvpKr'lA6emv$s34vh;$\lٷd)od*ϙv)c%SNڱ~6m;W~ f(A$ V柈%[&L%žnzbdk%oB}ǶFYUIZOh8:l1Gu0e꿚 {KA>^$sׁB1_"Uwʢ]/r6M}^ŖR:{MB:V3 `{*FFvede.&vJ#6oCWujL]XP=/f Q.dvIVM:U&VS|(5]`2d9_I!sŚq$;vzmUl2,GVOUdڱrr$I(; (FnU*Hl0ʇ`~(o`[:Q=%ѪC&GULx"pm*e6ItXz<>$MRMvOmjF$6RvMk {~Lж;%{hE1Y/2Ab« ;9($hh@{MP6A2$"bj6Is!eMF$0LE~:eM#2}ȪUI\R}yԔR*Z wꝳ$_[#gYtU 'q{zIN[#Σ}Ng+zIxd`7GC{^*Ӹ}oZ}z?b#εN벽e{!7֊2ɖ킐k>d'2M~fIԾd9h7+Km&M 3(S+|~qJ3|oXfՁ22nA V9YHFQf.~EHLh!&YqPi`4mɥchF5c~r--daGV9;xv֟`35#EEdū ݶyhW~~$-+YNM `JM$M~(;8bv;g>|o`YL xmhYCH>dkoD6I?%/6^LTz$mfoI'>sj2A< |2tj(HmInn>!In?6IN2$ǜH&&R 8CVL4,l0$ғ  *1;Z&a(iL4:7Erhc`~yQ%V~^`oYfC;`I]l{Mzl'ё/TSm&iH&rrA2ڇvtm IZUO`;Yb xr6eeiW un`OvXp\Z2i!d2ܶXj6<жKFP0I ߼ȚPM3MrNbIh\7BI wx5KsҖdMVgWylmld[6)%o2N"#g&ie(`pٴy@KCH2ɡm`eKl02jd[~~dRiN$GW9ad$q5%v&Ѫ߻~$3U4SHٯc %S9dsV|gf\J]&"B0$-`w>9&9Sj^/zPeU7/֬d*'gj?3}}&Xd LG|@\GV%O~yϳ菲(F9G(=$^Mxx}Țڷvx+z>?lMZuۇ Jiȵ).ۑ-ZMy=PDcQtO{8 } ]w}]ΊL0r||3U4kc·}HJ|CLC|jMҶOt\I]̠吾dBe9a(iu=NC)d45+a}~q:smsoD^VaVeUvyӪ>$e붝D"i\ lenճd6KsRIuMFw㱝DˇI֊Y|="! J؂ I_Y&M B0vDDuN-];6*oɆi7{&ٖ?R˼mmչcD/v06m'+~  ⠤xSժODBW榿L#n}A"In! ý&u%$Lم* h#{uT[&CN"\OuCt] LҝIOdI>R%/K69=J);jHeW%'bhP5ʜr͑dh,(Jb{],HˋK&6ؗ_Q*7-}$SzK&_s7gFdC^^&+m֠\2Ak :d-¡א!ąДlH6m# :5:{"m5O _~$1ah6]6ɖs[ Dm a b`&:C%X*5L)ʳvF@//dIڽge ]0OYAx[xN>m)+;""YG`Kz\OS7n 2ph"(5e>2$|mdї{dI6[EIfgDv\'p26dS |;ڇ.f~` ElLS{NdAK97mvڙ{FєDkKe葕eiԶhjmeąUm&V-mMFS"ڻ5m:ôhغl&Y hLU >ƣo&Ө}DG#S-:g$eq^ѩ .& ^ j+J)e%}-OdTey$Q2-?eD=A&R*i!;dY΋&9L6bA%Ӑ#ۉ=Ě^Iy2?Tu֪ѵ*h;Yex)޻MFd!dt %vi}2ɌwBd.ʂw{*w1Nʡ.R :KC߽h^cf |Ń\M+7:K jCvRJ ;Burэȉq>Hdƴee=e?:eK@^F׌dVLOoS3ϐ@GS&$HOskF٫'_d,W>2~CLw+x4$j񍌶_d~%2: v*n8~ʨ&WFe7Xś9:lJb|7XZR.G5>L:kwv vzRnaDګhnQ?KhlM˥}0Ne٧RQ!d{o?I㌠n@OMT9$tÄé}>cG}8>J~)M6,$G d?mJBĹ4Fg$3$!4I)ȵo2$G ?!y&&)iG}h9Qpq=EB9 ̝_"Hz$[uf6IkAHF,25lGl2`?m+-dm$>K;nQvPj w<\r;Mk",)KtA=);ij|dIG7Di;Y@瓷dwd2Y[?\ K~3g+g~Nf%g}?`*T3hM^ mD)ɦ ,:C-^\%P/Ns]T?ZKHNd\jeTF Vyi;HtN_h(KhiZȑ3Od2W,O"%iceDԗc:"vwz^3 _)d v\KZԂCY w""o$Swt$|_|o2lx2{T'y6}}5qXm.zf&Щիtl$jHdG:J(qlGZRÊxL6:Hs85>v$MJ12m R4QqYhl+QZ5fu#ǴXo0>12k`혔ʳaJv 6!~r1=ٿ^tn=IQRZ`~eFvpxY9%ZMrM~_AYIhK9RT[:5#8'YU5?.^(-;|)4Y nU>r-ViK.Ƀrl$zSk=6ȮMYɭGv}șOI.odVDgm\C~L.8٤6&[uNB{n7bOȑ rKEL6Vc{\p:_7&nq,4 1d[Tm{ k1-(Turٸx,铬kAOU .|l;)ca䖱lMWl3 I8dŵ}xd4bolJFgrȭIkkIvo&d.H,;}PIKuA/ P ]@&Ͷ .lN:w.g>Af9j! N{Aq/c)9[;vcYq=uFmHr{7I/݄[Qk\ d%Yi .U(rjgb/- er>_z&_.ExEh"x(*{7u~=BU_Ip\=Jv Rc'4`Hf5k&٧q{ 9$<Fw$·]e9zU7~2ӥi@{5l5ʓQνd/$T#Jʷ@D%9@h$YH9-1LNo&AN$+(*ENŊ&.*!X-ii1ښ^i|r&?*+ܲb O줬(Q"er%yúeF⤹e洪=v˻$cTm2U#ɕCﱝ׆^ih/Cf\c)=cu0qtڛ2iNOGɅ=]\r6NA:x̶WT:~p2U{/\_я$ LAlKJVv~ld^ F9#Q|^ ڭ:̲UV[gTSBOIym޲LfRCfd[ؽEHU.y$;(yk<2.G'e=y wߢ~l;)b,'iz?6H;;hUm;95_Z kԪm.mU_أq02Af䠒;cn}L. y;G|V*N; nMFRߪsF+# PR /2Hs)ec)q ! /:YԻcd5ߖ!d7&S93T7rUvR$#7 J:Bd1 d'F6HnçdciYlF[x!zb[ۯ} 밵  *ga#H`:~SnJ$zBN]^.ҬJ3α5d j(6ȭ'FّNYjD;TބU>AAϛTHێ4nkU94 $>AnmD,S]1>2[| .]xZv#MtVq#WZCՈ%i|Fݸ5̿nJp-r? [Mp#%}:V7 nnn䦬7r2Lvdj:F#lVmؿN4=2W5r1~B<&I*,VGNyOyz$[FMBR Zqj}Sko9ZH"N?fIj#9mQSk] &"H{vJ{3}ʏ/2HUAQ<)ZY#{7C؋FKV! Т_4W;`'',]zl #2 lc;)6A))ɮ׿m~lIYU~2NjcְI;;A1H r9<\Zrf\ meS5wcL$Ia(xz֗'BnYz8.4c)0{d'g(4@A.vwl[&TVao8LR%0A0+o|de rl|d։EGosטG&b+yϧ:~^&Y,_P_y>D2<t?Z7db=!uXo`MzI됿kwpKp.Y'1AE^Uɉ Zand=,>g(ֲ+\Yk$Mh6IXz:n$k {yl,-ĽT%,MAvUUX6eebѼ&ٺ>&9x ru&9xIaw6ɕhĢѺ|e!$k\\оl2$u/Wژ7ߢKnu] 2*dǰg/h_SHdKzvJID}h፼mKK$d|h;m$uU&V&FPN>r0m"CpQ'_p88>{f'Sf&d mR$hXwι/ٺEs'm$jdmZ*Ibq)<7ho3&j螻?b a軓D4[],Ö}wnR mψ1j!aG asii{5q}åCi VT J(,y,z S)$yn;leoMt;6WVeYvز+QTz7lc_Z=;Vwi\jMT=-Ls(&`9L-y4:lhh#[&fbi696\r-EܮXs%[ʛ},BV2:w0/Ɏ%YdRO_IqU7e.>a?L9_yNbyMF {SI`i NbkXIέr^9_s8n㒬X oILbnԷ9=6d~MX+׫5o0f+)M6(ݢDx TůhPAɖ<.$w~f&)scRms%WcDwafK3K`,V66d^kʿ]&:&u,;.AцaCG?d &$>r*l6}I29}KNLXnb*4vl6K"]]F TL2޾I_#[Om&YmOIZU̩Y.Av \e-l& wIʲ(v8l6IS }#n9$2GDPnmnu6+c;^d:`/(]]s]2At '96e'qRlYt$1߉EGod,ђ>mdR{Mr$Fލ|C&6?G&:HiPͲ([&Č 2Ib~Wvrk_2$kiӢsMyQ9챝e=Y3?2A[ 5Sdyid̙{zCTveKh/B0SQqx Z6Cb IzOBm14;~&9e,#ouZoO+ҹm)[* ͺ/oqd+ZJrQ6ev.cAvo=LrVlF6ɦ]h$mq4dIZ()^`9duNg>-h;r Dj׹emlѕ|zl2QEFF6[`1#-_n8yZU_nXð 2ɮhdI,|ttU:K咓b$='6ɬⱝ5uUgeO02Wg%w>dd$qEQ8~f{jN[&G gG&ن6eO4w&Y+. D^dY2H"mZ@ !VE;"S`F>iJx>Fq~gcU@t)sKJd]BUZ)r=ݦOuOPK^(fe .A^ڤCym vgaYh \O֚R1Xk#hY9z0?0YCI(^d.Jʞ-{t:117f~ HaiJ endstream endobj 92 0 obj 15960 endobj 93 0 obj << /Filter [ /FlateDecode ] /Length 94 0 R >> stream HɵE#p/-'aՃx|G.y,{].UkrK y>^RwكA屗([&muX3,l\$?yAJW3=u'sNFڊ2@{i4c~k$7.4q Nvc9EP-^^I$극 v![[`AJKF9]kh4:z [dQ$YhNgF;vdUN!z):l\Z`(2m4=lѲReǶUvU??lIXr>z╤UrO;,9~2rd֬eirw`Y+2b7UuIEw eZkyYZ_jN.9SZm:7 :~~ɼ=jN(eljSɕ1/<6\Rs- //킣dLkקۺU[dA)$vr*m9'Ouxl'eݳM1&ӊZ\6HYa Zms^d&)`F^&{M+g^2dSez9yio~ nUYI[tae}$<1Nļ{i͑FQ.%Eʘ }_bYA-:|n NCI߽eo$P^M&U{OdiKHd w˃iE5~k:;qَ|~56-f*X(ojQxMB&8Hv){_HP8ܠ] OyhpKWrʄ_dk5pedg?DTK hghrHn(gF{C32C D;fTZ 7'=dTػ I]Z䲳tAZkIcqxZPN]CYz\yS9;>v} {$dFUw4>؃uAkFliϔ )UW%kU rlS%Z2:(Fmkk`EbFնtx7HQ~'?=D*']Xxhi\p\TpTh{E=BSF]KFT1CF߮J 5_Npy c>ld5 z`57F!kLGvw{F5єjnCo@ 9gOlF_ HdQCk/kwQ~T%45K.&)&H6EH]^)}eHs!L2=?.6J):6l( 'UGkzS6R4MF[HY$*)mdq^iNUTm2FNMZ/1&$:9fMFHBfs.Ȃ(LYFF[Id=ZR.ʟd#,E}sF.gdeVOһFۮmd-_Wc{ D :7e#1*iIqd#-bڨ_}Ѿ贕8]τс6m#;BNH2J&} CkeY>^8tE䠾O:,?իeY0!Jלr62u97 `DK9R ڳ+C;$wrU9qdPrwmdGLED#IeA6u8MmeN׸fUN@JR^)+6r`RdzFGU;K5Ll?̩Jl%Ye76SkFniz6B&m9LZ4+\&j EQ!dQrChB$j cwmd)kFfmdxLeLG~lDY02'O!NRmdi Юm#5,4il'1) I+dG]NHn*UKV&d+6)L )!7m#KdrR6m' Z%d $}\t:eO FYI5\y6rfyj3 fdlS]M)c5!khI\\Q6 93 ؞2U92H)!)?h(P-WoKXB&`9a!'MT8kK@x jC;?|,vL3j_H{?=\bwX $Pla&R |‹ܡQo:Yf.1&}^^?A4t{Zߙۗ/oq@0BB|@*ǁJ?_ӏy_x_/,y8Gkssվ}'|s[~9ڥ1qeGnDѫx[%\цYɂ6-ޫd26'/L }~J~7@9?^ɻNgEɚ_7i"v^%x닽Hd$3'7'wfR[cN-AS1%q5m lX}IHm$&|%-=9Ч{l#1˕ДpX{2rw㡍Wm(h1%\6q]a?9ɥŔDeLSS2+ǠOFfd_{b^R?cJ~4=o40%m7{GQЬ6Ut)&M։-M!=X}UI)Yrxl##˷S#'ud1F'&LġObJ@OLPPgѾ~;%QO*!4%ObJږOUĄ,wrh''&Y}Ǿh~ւdee``r1%UjJzLȌ!9X'&dCk'dBҙYI oC?^wL,WYr`C_Sg&h{DŽ8ӟ'rҧ?1![Ac7?1=j-ӟ'KQ@/(V7LhS15 M_?럞jF3v/zk JBZbJLi;$RZ/V?ege9fJəEv1VtUkrJ#i{ vU0Fe6Kj1AoNֵs=`>bFL]*uE7û$PF$1?ACc$Qre=N'?eka✺q\Ӫ#Ev?shEN7Rd Ʃ`q蘍 R*;oxwۛ`+JT[eDKu$_vr伂mLL6밢1)iN$ͺ(*9{E;:Sj`H`K@I"0#TTɚ*:vrLOM)d#[MFdǹZl3wGX3״I;[]>u-d:\rc7qtzrKr\1zXuOZ(UޞvrIv4̛F/-7w\, TxE=aŐ甝NWTQ#&9oY}7wI4ӳ^dĝa:Vư!bѪ:uޝCurn%06IGs8Ékd'heC&m()DsV6|^sNdMkM:k7Rm'>ȘIS/=2I܆U|át1=@{p4~fI pHz*iҮm/t}Wsǂ:Q뉢 s{LAαD>ʋd9% gJd65GzcI4܍t:8A [dJ[>{ZK~w:LEܶ%!N G_Gic{ Pt{Jt JVm9:~`Vt lYǫ59 ʛL.AV>hKAAD-6H8Z`+i9lAҚ/dY`W"eh(Ki(Ϭχ CE# 2|e8*yAR3Wa3UIf`\c*" wZF֍!k4l!+u!d.%$#&+χ rP(p} FdKm%*Q`Yo1Y@/oC e&M8MZnZr(3>ܲ~>l9iC ZJږ_t͕ 2HC52i7Cɝy>\pr4Ydd-ɗ P~A]9|8J /r/8R:3Yý~3́BR_F7>R9}HR: 4?t o_Cr>Mhy#rYlu-p縷CC-m{K=^%Fy0'pff: ehU޲KeS'9`!ZVeyhԆ_2 ~K> L9χ|ٔHg 6Hh.B+L~jQI i#K' Wu۴~5b ny= ]FK谼 2- ,χU4N E]Ph{d#Ho3 E -:ooLl ;K.[A[Ym3_5Z]ph7mMvg]7W2P]GΘ Q(&[l[hv/XS ԨtA>`4u% ۣ_#5VF)j {>lژ#6%xχ 2%MM[IHt4͸m%3}_IAvGYyot eۚVVZlfΣI-֨[0S]MeϾ n!_VW׼_U9je$f  ޱKd ^kx : 3_%0n\Q#۱J`\b_-+HfmA5[IZrf: k,|>l%M!L.IÍuYY咖[gkdIFLԮ1&6Ⱦ>i| ۰ۥ/# 27ٹ[ɅǢl# RT&6Ȕl%oBUMo[Z}VQ$`,s] 2-}AVF \zoS;ކ~[YT n[?' Sd; L߹'JKx1 GJmyJJS[NHo+YA)2 ;?Ql6ȖF>;Jfr랃 Y\UwAw3#}įOdӟ1RNN L\tÌ!QҌ6uSFpt-`;ep/=J6-'ahl"Gdk\8h/myYvYB86,Ip:YJ%3]WA&oStm;I0CvG,u6H:[=!)/R4k| 3 \D{#$O;Ih0{tۑ:CUn7J$DjB֝Hg;ZNB}󼑳#9(W>I]+Sh2wg3V]u]&Y8Q>átm:g e&)'Ƿ|v(T'S+JIw??s79WYA88#Oލ`]=V} 6I<b3^|"ž82Kֵz%yAߣLrJ$rJI*"@ 490NF&>jb6%/fjv>? no{HvzmVOdcCkɞGN9eֈ#\ӢǒXG.4uLXlg ڑF\j+k)e31h=Q =/Se%P[_$ܰ|v ŜUpeB'K5|MbNs5Xԛ G>(YɾuuxiվR&den`I#T3ҏ6j"ޘ+LP?_ȑW2AXO9xv5&94.{LpnՋ+py`zHI)d+>Y?L9Cǐە` j֚h_K,Kːs,Lrʱ=;mM#1&CzNFSBRh)$![X!%+ ;o:pv$}H9TBvhR*g)K@6?P畯_~·~m}=!e Y?2lf~bp+GRz>=6\T̮m>dsP9M^;`gQ;{mk.ysrnZprcƹA}oE{@C#rU1m>(Uo>>M}L<1ϜHxB%&2od}*ՄdUShi}~~$,K'FIyexLvn 6~-Tԑ>dYI.MR_ŤZKo2P'@E`)˾(]2\ҟ:\([ڽv̷&uH,m3O"%UOhòџdaY? r b*ZM Mt *Q8M\y#̝o$) 0Z/qlhzmr9!5 Y6I&Y4[Ns2J.UG*NFdrPe/zl#@7~4N$C{d]TH~dq ̒ .*gTك(!. Kq0$uPt}M2o4dcMPdIf^=3oȆ2Ӷ>9D{lKzc??l#6 Bό6IǤZ>!7m#>z&{Ci myj4'}H. \Mb$}HxݶIg+ ,9Oؑdn*CVrn)I\sg>}uM:]rX҄>k>zlr6r=%mQX!'%5YuCHuշ&g#D߱QLޮq ]ߐ]57G&YJ(rNFHt>~*n\<K.ew5&90}G&Xr[|;e,SI(F5!V?M鬇F7&i9m> $Rt\$ҍoxl%TZFImުc,kڞJ2$y%=Mn &z5r Mj'Z%dzfIh\:m#j$El MRl!QٌY%e|nXveI@F/6r2ꯇ1PHȩȉR'iYɛc+U%>~NI롺R$MRj6ɂ ${c[hK U@Ik;.5dw}lST dI|*(v>\v ܲ A@IA^9Ij|)'N"'G&X.ٷu::ds} O{6 tN"\+]'/%_vܕRmipͣLoַ$jl.zBRgxl"gգ 9G=0,ȱ 9kco)I{u@P|z"՝[MlRo2ԣ엤* Z..9Wdpc8s[&(q7;$%ԡ~:ʿ혲d,{n%f<lO16ɵԪvSbe*|zIv2 GL#kusK6*]Lю3`x}݊B\~Lpe`F2co׏M&A+ϼm{Nc)qaOˎ# %:D P.G&YqO61]A!Ң QkW͙ E2YJ}k;՗A\$P$g=jLpjn7뽲M9 .?\r:~Lʜ6?oKad*`;Y4z{/Vgi\h,Z陧^KbWck}E!A?; rɟo\kx8/٦:|+^vr K,QX_TO~m'QiEIzr ><ߣ9lo_ٛAyYs_7iE{@owƗ125p9ӛ1ZZo:J [,ZgBzeOlٷR}*}e5i޵\k36HJRǙڢ,v/o`$U*_`iH[=LNsNN[N~.&A.zeȇV&n-LOI40 h;AngDȾDQvP̖> stream Hlɹ* F#:DoW h`rԇϿOkIUc+/8Iɝ:ȷ 0f\y [#ƴ ,DjnIvsQHE9|w֒D!NuQ$3ɥã2Qlṡ*QXbě.Hb` { N}clO,H)\:Q{F"Id]py:z^݂ԶyfNAA,;F$1ݢ$[Bh;%$AeY@GsqSj^dA޾m;%SAza RruYF^` }nJuo `9 yv {OwnheZ&eIږ6aI}vr3k-eL/ei r%Ih;)0hkNd]ob?!:\p)ɂ7YJv'io$ i 6QK߬`;)tzYFNO?mT4itdEF }\"&mO f (ˣ wh%EAHwddEA>Nun)ۯ5BR@Fda ??lmd'hDH}.2FX$SdkZ 2:md^A (~2 g.Nvxh;eh2 )Y]/{ȑ|\6ȞGh) &]J.2 giNii`;YUL燂G TD?HA }7Rhzٛ`-dAvZ$ʻ^6142ߌ6uZ|{FI2ւ₤ceFIk 9K %ه 0Xu{yEyI;B<{v>?ME2EF{6)meoҲNHJ6H) ďd7Im](oH4ɷ0/e<;ʛeK AJk{r [$}M{u1IHo6ߖMBQv!$0؟"pRgfRcfZK{jL2 աr7ebpwW3 I/]Ä &%s˻R$%WDyiu4ϧΐQWɔ&J %*+(IIe:ڡiU{͢)|PHХQҔ d,"yd(oPZկ'2IAZ#Pcĉv5x?@Sfi0pO;L4sr䯤Udݣ6MI[tڸX+"f R?qU[;CB:Mf%b&5D$]6H*IMI5*;n٫-HyCX5:V;ei1Z\t6X4g/ P*%r(;)$;~? \sb\`p&r$]oLT^2\ }qJ>.0  U/A M(#3/0+rWh 7Kk0 0e}sp2k 79 >8XwNpѶ*e,R4(%;(4IZ" o N),m_omdK@NJoFQJ5/h9C)L. t/\Ŏ2@yԴ`^Y.N:enі G:xILrTl4t(VdmL!Q텟.@o c~V$_\# (Sޠe,JtJm謻wdRA<:wvH)NeAJ7e;)tXq~]A+= .g.pKus GtA\m k%S60iq"kE`>%kF+wZd'AJ2aL՞TY d)v^Ӧ_.{+r5dqu)|Lzqn.5ҍc? S+.H9/dњl\XEgl&߼䘶B&6ȒkAAua2/2Nʭ"Q -2 m$Ԩ]>?l%[+ȵdD,x}){GFvvSLE̒LZ0%o2;#ǁ늂^&Dc"f&ZU$ i{Jg 6ɒi o@tޫV&}f#dLRW:n$Y \_JɊ+eP]㖍,UK㗡a7%YHiUȩ&9rZݯM2(i)]Ⱦ җu~uP%꫕a5Fb,ObC^6R%3$sBnje7_ v:;uIe:yF"}5}iOmk:X2AW6O"yNFEdN&>mLL%}KEGe6QD?u܇."FI=䐼0*r ğkSG^2b2!aN4=MkDY[g66-csIVuZn6Rd=]M2%yF. *WBgN6)CKj6$.Fm6GI.O+ WxՕx!4y]ޟ%&Z Lrf&هFvI[&%ahrqH3ҏ^E ~YbW&ٖW7Ifzm#!>יH!5T 5$Fa"$,R%w'odZ~%U-m$J@;̫ӬU&MnHW`6I,NBVIL\trWeOEUfNld塣~&z1bkmjCHwIviRER$"]oJ>[iIxJr#U]w61%%MO]Rb'y$uSjZ[6 iyT'/ R*F9glʔ2[k 6ImaRe[6Z jZ*_@=H[6e[$,j3?؇%!o,TײXl#Jݜmcu`C6yu`rI|CٟI )v`TW&5I{WđN&MR#ݯk+Ul4kP&N.VM:΃lcXvGdIq .el =do~)l GLj IkX#ގMri>LI6*ׯ`b2t&6RҞפ625znIRD)ժ\&ٶr2iDdIEINi|tLK[b+1Dح-ŝ[%Vl3Y~dտ9ȇ,mIyE 6<>rצ>.6sJ]?1u &3ӱ[5 (|gy\rIA%U,}dїJZӎXIOnl#02g5}HH-|A&8nXcv}ح1^t+XC1MT`ܕtg[B6^tSg 62%mLN66$k8&$d Y6 kVklIfѐi]-$~'i=N'ol>MѨ.&Yx<dY3Ok["+|m=Qmˈ4VpV97I&_'z&7`.V\X6\rqvJI %hޛ 1|aI`(6OF\8Qݻyeyf0/o$Ƶ_)mDK&I4G@8Ȟ&?IZf͟`lIo`n> ,NN ld=MRKs "ne+UR1Xo 2I43gO'odٲx$FTu|VGHx F:H^M:kaWI V! Nd?uuMR}5=R[ɯoK\ #NɱM.b_a"dne8yFb2eyh@2AQkJoHJ&صg.FbHWmrO*oa,J#;y$+vMrj6e{;#ܲ/>-6{^Dk-\N6IVmr(!w/yFbY?zj/~f/V}_%ؗ5_L^ Yɜx|?l% b*gNG BmiM%iV|fA`~IUsN[0)| q2ϦAv 9H6M-ޞ@(Ҙm9T`9iw"W rȔ~7$IIEI'"ɀXUe+ș8eSvQc`plk AYj>Af*VE2lU _2QȫKS[u2qoy*ؽ\<_d J$ W fA>QJ&٤$SҳeHM$ZNIB~>lM˳eo*7ݜ͔Xϙl+|" f%o) yŕʍg oPz5O|-U4SofQ`(oRyG{|pXH5-Ǹmz>}#J&՗ۨƯ"GwIdA+M4}TqTr2ڡI5MF x"/~=w^7肓q-,;sa@'˒nPZn),ѱ%9/d]N{g@Qޣ~ i̥ՂrC+ 9/~dOC۲j|Ɉ5J[Rn-7Y;i6W* 2Hʭ[%'bH[*l$Q[;UvP=2Qjjꩽ{7&\t`v}uKٴItjdo.;lJf mEw!TAHmwf%+T=1\1dAUJl 0+Nmk OΌc`Z%k }/yn {-g}ldC٧ e#c翯\mN\6ANK| ɏCXd[* Hx h6cg#x-/?m;?e9* ޖ:+ 2@]p0Od5Δ$I6'm$3?eT|I-+G`AS9QhZ|Fʵk1j]&KuRaOe9t˝Ia4ߡg< 2,YzȞ΁h̔\6HҼF mXR)o0vKޤ߾eɚmʠ>lvW~>dՂoms?,->&%9SD9M.~=%S*|th &AGFy~rR\k?1 8'M!^pXM/w'!_=.{IȚ,/_lH_礁򾎓;m \ %Yrd)#|d_8Z %yѠw36ȒǪKV"G|iw Ԉ*`mFywYVלdAI!L'zHrwClUdK9<T}*F/E1f. )y%zO-SH|H$-5F9L$A8%H-eD6k6QX<7E\`p?KjYA^Q1YTHZVh#kTY߽M6zZE=mctOجuIu6Nre)rX4ϐ*LG]pM^~0wo`x{#UOjm=sa6jj= w w wzS#TIh\i՞7yg,R|V'wFJ3a$. <;?x:N_ɫ^ '}HQ1f~,Y_)?7sdM"TGvfχm$|ymD(S72ZS*vK/$Hl -d7JעCݪl]6*A\E]&2R!d[,d%tp/wJ5Cئ䮾Y<2ȥI},χmUnh$]>~W%`DN]pz^[5r 2ñsZzdWJ^6ȥ^ks2ڛ$럓Vr%¦|'YJ>3ڛu [K#%p7[ج?mHJ{øٝ8̏Nw(dK G[|k)'e4SɽsܨCgu4%_3 SOFf χ[>khe=cxs/d!.O{LZMr2 ,RݖˎӢϘm8 9(6%hcYj~@N$YDm3e8ﺕ1E|fAΓZӎ=mS=6Ȫ᪍>m%Z\e=qE$?VfA"7IuFrJ2mNd$.HN6MTKNFdMȝ6OHN y y){6ȒeBIUba+9dOC h$,mv ףaoQ6)U? \pܡIn,;N pU߶T)|wB,+$cv ąNLl$-M 9^[&4^d$$Fb4r璝6I?&KI HÒ$-D-Zwl`U/\/ժbK4.eK2VOy_ vA"{W$m՝6Iw<6ܥ"mWVi%W?+6Im&9n,#5'MRf Q&ض$v'ݱpLBr%XnkH,O-;r< PG̯y>vmPG|rB6|idz5=!:ꥹh_mhlpac5su+~>7~ u)2H:$ljY{l{:NcCt|'g&U3h,<1 ';ze?رVS~] eR-)[NϮ^΢*[/񢯃KitI4:nH:gm:iu;+m.˾Nc?M!&?!k9ز  5iɅV#D=r{(YHmNmZ(EH˪{9mǶ%u &dFBZi'#Z5V̿ +9p2wCߥѴ(& *MMrJbUJ dĵ{k4؇}E  pu{-M2O`G݅`l? VQ&[)e;'LS9RNFdjf&H4h+nVpn67[&9GiY2ɷ@ᘖTB؂n삖eN'Mr!zkh))z;eSF*LP+aܘ2VGFH) 5d9y콴~lH9Fʭ!{bm-~-+Y"Wa #20J4-n`hG&9J62c[(xh,v+83oBbԚNFH ڝ|\rHy/׸bB+g;Fd暀=6^ʎ6I4E.vH$\|hӣ9e>M'd>&5+>nr`T6ɝ&\cף}ȞFBFby{6ɑ`@m\IOC.ceV'9@hldZs#f>`JV*dG'=$lC{5[~lk!K^m6-`9e^'PD.\zdFuk6dm-ħ&d \—LP^}@Zxdh}P$W-,iQ6O;>\ .Zd]e/G&YgW2Aі2 u–2)mmdt;*&&Z59I-E_|('*ȕ`iz^!JI0,Rf 6}sTުs%e8HHvKNgVg2yIt%g61l-m} tIv%m@|L}K&#;|x+YW%K|(_?[?w=z?ȇi4nREmH#\£m-x~;@4Xpt%'w(Pϕ=^.9K;Z5P'oR`{Th%'^rюI|<%)#RڧV3EFT&K 3Vae6'|3%q8?6LT]!mNDXde/-Aͅ@O6Ğ~p-{ D>]jON Q366}m%QT!Ds=zăl(:Δ8DLfSw]kN7>lϴ"z$(a#odeMYIbl-s5NzϫD+Qld;̡(hYD0]@J`͔5GFd}iO] NИ6\*1M։m57iLORA+n{x$KZ dL4s$.UN惤#ߵ8[ki~C v2w'}Hl#zM}luQNm$z6<2-3 `X,>ڨJzmIԻG>`@lA6`[`YG==6ɼsl#Q ~_̑NFdյ1-pFT@+m#U#cM r%&[%X#l Fs l2nI455G/B2ӕd g2ɂMM2A<~k-P~2ɲ^-l/yuBpN8, I6FKsFbȺo'm-)Mr&9,M2ɵ].Y J?gݼu6'kC·,$kEim#oH, H%0]A3W&$($܇ 2A ${&8!sYka;$ GH5l`E [M﵍o h5&ڜFb+y$upw}m#*kmjBf^mUFCFd.QHFH5ykZMc_tNIYw!l'$!nHϐ{=1FL v!ȱ;`+IciA&9Թ2A,CAN>?dȨV}#mBREk!_䒖'$&٫bsXCJIp%)6[vP~d(b $"gxmwG%֦e~nXЀ,ݿ*<l6c^;Olsa + A$I}><%lY)al2I\!䏌6RewPm9ok]y3MRP)j N9unLpH$Vs~y,2;쐧i6ɊXն 2$TZeۿd{n~  ?|%;r p%ڌl+;jm?2$<:$՝xFVdedi(/B33o`"QE`ɎbW.9M|RM݂(K D5>`IڸIJG &d-2YlMeH1._xI>Pl)KpiE5d>lp~~$"Dg޶HFcHI&.MIܒ*c8B5Vmhwxvʰ$Baq豍DjtPmRc,cmyj=dVu-IݶV9|d wOcm$&MEI&Y~3O9|^%,:rd%6j_6TdJ4oȂMFdcX62CO~$yt#[`~dɳܲV?.6rT{L0n߲leQ&h]5 U^2L>?d8\/y?qI瞺^&YӰF]:fIZ`$soU;)N>dD=&YFoS>?lC!a&ՙm= p36?3$\~F"QClI{H M2dU6Drt:cD:6 Eg؟$WZC[t#֔ٺ-P5C#:L˪yqh+)G@3Iտ " Ne9d ֬zd#hrc=6fg&L!m eZ~l:'d/ 㱝rh,]$sM HlCAnLp%;XnOLR5N2$V]=M ULrM8g)zc;)E..L0/Bieg`rγ,>xI cvl#;uJQvrH@uC޶oBM HJb򱿟)psN*߄^Qdy}-J2;=\Ļ.iwlwBf~g诗;VUHFoQ1-6ϼ 2AGl Qy U?s:V>e}&NQ?2ދu\hwm'ܗ&v}mdݻv3C/oUWW3 RɶGAd]H}qbEٗ޽ny"#pG6V=ܶg%c!#dߛd=Ӥ:d6ɝ "I0 T Qs/.g*TpcB[`'>>B}m;)K{'O}ĉB<V$5i&?05ϋKn>(3[d|%$,T4-kY ."Kn'q R]5Lʿ#Py{d'M&d=];?3N,~Ozl'eѨD2V汝2v;^6njv2!-fxȞ R{vkL=[=ߊ1]I*S{S궝-da~moK&sA2]PfskQS-;(S.%IU;}@tv?w`6N _$&zͨdENnm#mձv[|?KC N\CUod-3kuݶlm/E2$L!Y o`?r}#%-Jn]`ú1 6χ%mP#P]][$;'gҐJl"9٣k#$o6vb_(Pj*SD|}6 QHg\=ahng[6>XKī'-U0ާ ",dH-aD^l ك{FRed@r}9\?ԲDB,0LT. )i)R^l!Cz LUޭe]#cR섯e`+:L*@\UmZY^aVt}YvWb *Wj["*(LA]_- Z6cTHȯrm ilVPɘm"ۤ#הIm Fˋ-dHNϤhT.E~[k#RzO' mrm IsTkRBY edrmJyjH~@f']Vk,t!<Ȗ1X<{bJ`r9*Ȗ*'K J,}n%vb6g'_Hc(y:ϑX7> ֠O%lcd˰mtFj|,[1"J, եSG6# FQF[kz0A[% &o䇄1x+KRʥBNֵ+ i+#C>vuaޡcP֢50 @d˵<ҸGV|Hۺ8/Ԭ0#1hɣ[]|䜐=HQ+[HlV1zGSW#O-0ZjGɣ5-b$-̽P eHQ*N2:Zd w~qcUDA0z1m!Qq>M$ρEU%K\s`P"BzC,`vG3Y&VYMeCuF9 ̲|H@Ld+$mԳm!P8.v'}*tKIm  \Yl"-j>]9Ȥ쳧JŏL A-p+}e=JBVd6VFm!S0thDPkζ_s,%n L`iJRI% 9Jp^[TÉ  f7m"JK )q߹DaD&PBz&g[H\l;Me ϶bw2үxB>*b Yeˤl\M&0m! & f,-$:: DZl e3gHH'~DF m}D8VKb Ni]B{b c/#5#M$v6^ݎ2DmDJT-2yC.H,=K uH+1*"YH\,5:[l!h<&>T.Ro.2g{h=rCd/;Y:FCeuIT."D(5DRtLAHϜm"DG}BBeRBFQ,T.p9Dj"I%u#c ꍂ2A3+-d (vM$ZDy9 &n֭]pDj3]!=Gl YB\Hmy-$wm_Ȳ7Gz -dʼcRDVtp"Y&-dN|c=j-եN,w|H% XDZ|cw4,[dJu,K<5M$n*]9Lj[H%ڷZ)f- ѱuO\JXl!Ku4 uMdDG}t.,`tq D3!i3 U WI.EK`A]\Kʢx L`+xԲr(b YB2Be&`*&v[[Bql2G} 4Nv#lwu:!pX(~>_<y7,&c0 j?*Ԙ/W-0O?xxuğ=ogϾC7C>vǛW7o.n?o?gw'omwF9KzQm oVW\e? o_xq}:?\ܼpڿ?'lBAD[( Lc_ۚx*"Y'7_l=|F-a;o?^\m|>.ϟZ/s]g#g^3..w/G on݇=᧿~`,^_G endstream endobj 96 0 obj 15758 endobj 97 0 obj /DeviceGray endobj 98 0 obj /DeviceRGB endobj 99 0 obj << /Type /Font /BaseFont /ZZHCCS+Helvetica /Subtype /TrueType /Encoding 100 0 R /FontDescriptor 101 0 R /Widths [ 278 278 355 556 556 889 667 191 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 333 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 334 260 334 584 0 667 667 722 667 722 778 722 556 556 556 556 556 556 500 556 556 556 556 278 278 278 278 556 556 556 556 556 556 556 556 556 556 556 400 556 556 556 350 537 611 737 737 1000 333 333 0 1000 778 0 549 0 0 556 576 0 0 0 0 0 370 365 0 889 611 611 333 584 0 556 0 0 556 556 1000 0 667 667 778 1000 944 556 1000 333 333 222 222 549 0 500 667 167 744 333 333 500 500 556 278 222 333 1000 667 667 667 667 667 278 278 278 278 778 778 0 778 722 722 722 278 333 333 333 333 333 333 333 333 333 333 ] /FirstChar 32 /LastChar 255 >> endobj 100 0 obj << /Type /Encoding /BaseEncoding /MacRomanEncoding /Differences [ 219 /Euro ] >> endobj 101 0 obj << /Type /FontDescriptor /Ascent 1206 /CapHeight 718 /Descent -444 /Flags 32 /FontBBox [ -195 -444 1446 1206 ] /FontName /ZZHCCS+Helvetica /ItalicAngle 0 /StemV 88 /XHeight 523 /FontFile2 106 0 R >> endobj 102 0 obj << /Height 128 /Width 108 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter /FlateDecode /Length 103 0 R >> stream HWR|_W+X:( BB$r 9n";F,epx!؛=Y{zիzH,cŐ)}a 2jV8rvܹ˗/R/.]ϟ?|8%{u(о5[̠},F"DƤO&b/үj1{y4TJNKbs!LLL~DMI կLD|wr1^Xdvv6sXc9([Zfoٙᧅ*H.ᜋAZ6f#YqmyydbYN`ۛF%g$YITwDEz6WVlְ̀&]ƿKZ-4ktA=osYK sX=6ڜ~m-Go^8DTNݠ=8֓I]Q s8}MJ@#+-FG&NC<pE/rv6~OL|QCٖW[Q!Eu.޵>,4<+ ZUR4VF5VYӫ#974fv 9g'N!PnU4_ͨV_c4L9Ҭfb仗ᏺ~ģđaF` HO\/*+!qw%q2c9˹?uS8_}oZ ޥgt/F[56 +-8lo"$)-\\@@2_ev\,#z_Ymx(h͢&!ȊiGǝQE J YG V\=8Dmm#*,t3Nn7?>̾}C6N K;* # )qx66Ⱥ)6b[QjHҺ<4; pIK UZUtJ!+F^25qC iN" ^80@̌$8s0ӌ͕jZ$@u!֢ P4CAѩcBtţG=+*ɺD(cvg(S13.8p.5\{pcHCL !+2FS~zvtl"?fLБ!Qo JPOXnJsr]\ 笚WkHS ۛg 6"v"k'w [xDl4(Hݨ࢙B ek Ybn:U;wu;Tv\T FCVVB!ϟM4:5663 135¥/UCYhe-*CzFy5H>&cHv؎H}C%iHn,~NCVo3E\|䤪i [f%ᖮ ܢ 5=Āt; 82:{1Cܝ*TU kH8Hxxlu3]PUW 2߾կ^g-`XN<iNA:.-gjGrb%\Ph[ZTUmLSCiF2PaN!TxފiR?kO}]*xOn=eAt~QQab́יK7!h 0-3zP߿δ~jŔs+i<2PQnm.3x* լاxF߮rQ0F4f,J`dZuCBEI GsVQM 'rhX^qh=`fqc Q|X!Q7; '\4a]"-jD^Yחoh>~xԸBazCа[QpoTH͎!_-]Ҳ’Թ8=6qHmmroPķj+T hc3]]ͭ@INAHBXvyC\oTpd8 <1|/[U9M!4A:wd$^ȡT 54]J!C+%VԠ@Fr\(1BnD5'|%I9Z>joP' ^gu: N %YDjW2a&a~.C:ւO[Fy K T55ܣka0S5&֙K]f]4lN$uzB^oS&:=]ƯWK#%*o"|Z@.PT>`P "aEfFB;1hZнڎ-l 4 n㝬C>s|>#8nJ944xA+͇ܪ:Jp#RHOϪ@tdaӁ=<8tuZEP8Lhz=]*Y4! v/7}s{g8S4]xqc2^&򘪐yvRdEL xATݻyCHeLslzZS0F")T-q"WX5=>-R a X;8lpuڑœTs!(̺CgŅ"r4SZuNp8c,TjmmUf_ՙəT(@r *miccB|ϥehD3Ff T6v `yHiƏ%#65<(5qqqKnP=+'U%^'َSbqN^1abU^KvfV^n`.#ڝ̎Uzs#Z;3Ú?9GGގS"fNC<]&oODCyWRW|_Wx_?i;ZHD@$DÇV>LQQ> Iposud37;;7{߽se&ў`bՈ}w,aAz ó._^#@ s. bf2đ -B6 Ƭt $ԕie`u`Ln4z \Xr;)[BD"S{ !c.yCL^\:bb xAb+_xi\Z񕼮7CCS. ;39JwQ4R==@è8)P[_]hаRO_|_"b`kmmOΣU~B)Ypdj)^y0i[fgg71/'[W#fOOYC4Z2m7yceG$n|>|s rgYӪs)y7;YFɇ,=g0̎.EuJO]|vG*ˎX1D1(9mjs#+/xe$cׄo(,# `5M ΊeݩCO5gB[#vvZɚUn1(¯.ai+^r/<+ ch" hi'qXSz gE@U neKh>}w7)kԴ eEDvL'Q_ 77?ѹ+-Xzry?2Uķ?>2#Ӧv R۰+]/e2{(p )3̏*Hm9nܰ΋ts(fo^ƖC:ơ"4hV$5h4XG\Lt67~X FFFPc/--u<'vu?Mf?~^7nkkk4+؆C|.:ʁpzUƕɤyR `+ KwXٿ+JXX}^+7ozu% AfljʰRPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPxhNwr@}B~l7B؍U?Ϟ=k 0mC%аvw> stream H]o7\K@v7X#1/TGqUXv M/9$g5Koï~{w=>~~} Zr˗g6oGvx1~?v?A9uR;n;n?og_>mnaTR)3h]bHn7u8l>oۻߋ嫳+)lTd+9ՑQ×npy%j~~aw=v+Rl_9%q2Շ(7P$vM"A5zNVqjEE#|@xz~V 1 #a< `Ye4 <}VxHϹs j0I9[B_}bO__}B_S~N."&-E !~*r60-}X+vV;%)!u U'T 9Ď E;mh\ `m Ԛ2376٧ڥ9,' mt m"g=5gرN\t[E%,O񦹊l+d($yD#4n ,'>M!p" ߇IsB#P&QxaOG'q+ DZ99jE>j" AB"eLe0*);xR9)i`2JFg*M2K:;xR%<vhR2EK*.@T;t1 TGq7eR;9'͛$<Le:ͷ{2ǶlO*qY'SIyM(&m*2T CPӺvibrXt ߎIe0MM7I0TK$[TbjTZn*QFa#wpS쭈6eR__S`ĀPI5$o.k|!?7yC~^􇉟]WxoW$ & mPEQ# #\oBa{ ;sGBw*d^vɡ‘|Y:w#OM(qSFįawj%:Js +:٤ΡH\' 9TjOe 94Lzh½EZeaVҝGCY#3ͤVzc;Ԫ=*4kփ$ΣҺ4U֖rQi+uLk1C{JhtutZ٣qq#m1±t,Ih4bɌt3}0tKzT #GqC|U%.tнGCD z4\Ⱥ!Tޣ\Hwԣ-Y2=*II#{T:Bd-tQ{:SHޠo-*ͰOC:Zzy՝l/Zu!!8dJ{u |(ٍ˱`1VD?+͂Gsi?Ԣ*b&YGpНE1uBPޢRʚ Ku,F=_*+YƬ.poQi,v,xTZRijF6h0(tjQaTNEf~ѢHVʒ<*׼,XT11r Yt}7`-*,rrֽFu]zō*´QiAԄ=F:(IL/tQi V<m|R.jZW{J%/%(ZC,*,I"uibq΍Cc [Tcq{G1~,)&UB,-y4cWJՅ= dԣ֤3KK6i5sQQuEN*S[Rչsp_i[OeUVԣȔbjbgԣ%e]T{J|t0 {T:MYg;L{Ji5EͩHʠc+b,QsjQ{ܧ,*2c-*Li`.GA(:CqPw}!jk׾Q8.ǡix䦬 qu[Q訴'Hc+&fEcL:;ME\M7S C=W0*'w38#&'] OixO P86+ӟ"^dU45pIj}:;S#4n 3:;rCI7o-B-:/K7Ä 0[/k:)A@[suV8]wY!:;^K?tv8Myt=WpFwREU*+2Uw*믎uڹjF/=4(Kn PNhMatnʖ>\Njz7>jaUYks/r(6^ :.MnER4涺,wu8ϊ)Dѡ^A[]טJ9}K"A,P:9߆5&cK3i;-G*(ΊFl:R_x[4rћڌwLd]9{;&GH^"A`"QwYa\%E[Ɏ.{VeERmpayņ$SEY@pѽ.$Eг6WQEގTNK%WVipz0ϧ:-wwu˛QˮK6lΏ![3ѬpZ✼K\N#1гgǓnJ'D-{qz8 =:>uȋ#=.YsJj2PgKa\lI;Qń߂`3vWRƗ,\1X*\'cdERPKk>k$kL' y#YZ4gKLH4ڌ̋4dhg0T{c]_|4oE_ߵTz:7HqMΝ:Rf..y%Ց ImaQI=(F][y E}hԎ?tvk'̢jA/Rxq6pz 1`:;/֥_ӸqR@w JNrW>,NgЭmX_diKJ0ϵd]ߚWx*!RN6[J7F79z_]MD OBnMapҥN G<f`+ 'V^צAV౧WXǩ8_0OL7]ˊp;ga4  4d0݄kwSびicM47>_0e1aY:aö1<={ q V]_I>tv8-Neסt-2+w O58۰:{$|[ZhyyF˪~i4b4h:rT4[=%X:;e[ tߍlړ|NϦO9g?q0zܶN[A",kS Ύ>5w q~k]A/ߠGtv8=YCtvpD]CgGЍtPowgL;H Ύ{}CgGCK[voEUU]߂ |ٲq,b\CBeCW[f5>*;`'<)9Y(>x2Xi0ʭ8/ET O^RۑfcɎ1c}!I8d"Y';+a8~H!Dk˛ P|c쁌"˜2nRN'zG Ift1vM*+̎E*Eo̎;IrgE89&mX/h#R|ʈ<AW{})#X,22nXC[{i] o4X?/&z0nA56ƭ]IgókuщB<|5C-"n8K2-AlGʆw^"W)-dpY I4Z_:GAR~W.z#FyT1q )^+K{W?5W(NI(L1eC6c*l[( 2+EN H-͉ecRo3!`餤AMt{;Xyw+:IMVQ&레w eeMOO%!1{>N׊et2?ct8ֻfq#8|v@ŧ J>ǯaH0e`tN45Q@vYh#8^lQz(4!/4^ mm'ϩ `o YBۢQTN"6t齖Er;HW|(] G2ߧ}AKܾpxnա|ɠ Ύb TNOyR!Jvw>V-wp>W/NM|46-Xܩ4 Ύz3 d1N9baѥU9:Hҋ7trpওߧ㡻M&~vv|,~|1d0?7T?䒝FyWR|qpz mttVֳ? ]J*>j]CGivfCֱD G9ZlB:8H#a&ZF~˺h™5j}* ]>?S$=ttnضu?c_O-YРu^E\s: ++::Hd :ءXhT bH3ε@G1o8YfYe ,Z1i4=pT7Y=q;H[a.Xoh0}::HjYRIcN?"9i-:0H8յ8As+H2W'N8*bM*KAkѽ.aTCIT!=::6m'8dYj9jR:Wv8mju}ߧt똶tv;PtGҥE';E5ɴk=ˢHMhkɸto~tqFc(Z·S:aHo$N芒A::6=O.uB:8hX)z. Ysj }PAfe"؛ 8v8ڥWNeT[ɋ ;:ⓠ´\VؼUK-c8gw[}o\9} 9}뢗Oި֭@cw`doK_2OG9#ag}:um=W8Jkm ɍ ֬Nx 4ĐtASXp0; F3Nn#7޳ŬY6D[rV 6;a[m.ӧ;Vp)سadH\M{%ug$E }:cMl R؜lvwbQmhk0Ӆn{ʵ6P9i [u^3c gUm tH:۰ijݦ/Ivި}9TwYI xhV t3|;Hԡ4ιUiD-[Gs:pf븣 nWpS 4nQqSS%pXz;Q-6M]Ng]hQEt -镒NQJ79G#|IAz.)e/&h9ONo5:4iXV+J5pGyp;'pT[A}ztԞh /#-'ElW12YkYH?ep.ifDӣr{ |a.Cy^~k@u=rfAZBxDlN:8HMB#} ]u{l%~8aJ@GÚd=AmtLӗ̱4Gj )_:*HϞIn0?OsԩQ;:(2@N)U4ҙtnӈEӟǎ/-w/ Ύ%pBN5w;ܣ.MR85˅9839~禿tt.V4đNf]^ ٚ_B?nHCR'©K_^Vmn,#d5\n qlZ{(H#uH<W{8]*Xoٮ\azoTw7Gnզ~jXM4KR<sQatB=rMAAٗWhR\,+<DL~†( AGny22D)^Y.V/4q4Fj/Vƃ)ϥvܷ4Yp.Hj=0Zʐz8H:B3V)ZkW`(f {-L@4tS iIƕuogAӁM鹵GႌQz+ ZpY\TGifd¼m z>ҝVhSri::HKJAA:$#7% ދϷڶQpZGaUF]a}Kq~̸R?Oh;>_z鮢<N/LXG+izM's=?wW9Eet~~&}6GJ[xG[e gKVd08Wu^|&?HQeҥςy8EÒ^eyN\l¿XlNsk=*oZW_^?h(Hb}_ ut8j*Wtpx'IH7f>+>Oi%C$Z&>ڮҘ 1ZOE koZhQ_ 8/rz }&܉RslNox,[GV95Ru480/`}a ȍOkldm|+Pԡ58{j G87\Ɨ 0nBv)TCHcN$hgbNg)7n~p[BEa)&Ya} YIG&NB7y`[֩ifM,jB}uWݠoQuwdǬ뻗owd[]`u;C3܎oOGǺTTw42fJu$Ddi)X_sn>wt|#9ְ>y0F^LZ ~tNVoA4ra4&!aH;:H@y3loimɦW?ttI1=9vưlcLdIa(x>7ġ~˔yxiTGh4ۿͬ O] QLn~]u)%\J#a~9S:8mn/[[^aHV^뤁3kyed!>7u簣pXWg'\Is쉺_r$;Hi¨փIKV_|Ho4p]67x#-S MP}9ƙii^lOŐ,=|`ڬT$hݎ0eoHzZ7\ѽaqTښHE0wmDQ:6!Yo skA~lm1,3bHx}-pU|tG~{CPG}TH@20(M&tu|Tc>:~'#5uRv~FIG㏧x4]u{y:9 N|4ҕ e#iTFˎ-:h}2ՑI8nuIőtkXi54zv$]OY M,Hzu'e]ISo}[7:nm Yw'tGH'>ѷ#ux\ jz,KpÉoJOt. ?`x#鵇~`D!oEspwG3Ϡ"|q`F^d] /A7x!ۣkF=}] Ñ5Kpk1r)̹Szш4{#~(~a}kLgde,x[4m țmO]I-6I7D }SK'i̶=sˑ4KGWd?,RF.O7ڤ"AjX]=Oőto;xi<Ί üeΦώP?H'F('"iZNJHzͭ[?tr$M}cFGғGcoN[cH#?GGy'4SZrx8kьnB#iFGOžﺬ..W 4t|8OGI/EZJR)ƻ[PQ>o>®-t(kF#ӥ|AD6~R^s*>XWՅ`*5ݰ5QGGo\iK:rw5_/:H>Zs<̉%6^bHpއ:Z]_>2ۿ.Ͽs|hGR|g$8)FC9H2i3(G/ô(2]:GCyUIG8AjI7Ftu8ܻu~:zO&#W,[0#a71ڏ[j9Ht'E,diIEi #in[3:;I`SPiiM>]Io!"#}x~8?tۡhxCPv͎'U~9S k&]I5[E6 };gdЃ#q >IIO؇z^Dztu86h݆]I:fEK/GҌfr8MQt$OY};ݻ{]IOkF #i;' :FSn4:>?pKngtq$qpnIl{\ zဋ!Y|VſaqjHtCԁۑnGS]Icu^eChG{/;Q ŎF2n#òC`,>7.g X"0,3Wd6U`Yה]ގ Egt +36m?8;ƖUB &Og YMty]o(V h@Wf@,`;yU˞ G߫ܞR$=~^IOheAbܺu X94vn!v ^de߶\nAx[ă6, S}BֲEu_1niD-v-ƅb豣!n]hP}P4>Da3@_W?%VK.!B"G؞zGK(uC,mAsnMڌDďyUcʎ~{ɝ};k=PRf\ʐmep֐2Ľ-_ ~_7i<􎶩×d@5o!bYm2ՁMQ[dj5C~Y\7"m6vY? X+Pb[34vXqh>>mސ= *2˞8z[='EfcMc .E+DɲA1A<4Vtque|I|7z3Vpft~z00vN.ZXyEg ?Yㆹ&5 *Pd픩" qN- I(ұ}wlѬvM񻿗~t#U E7Wl] o4Ď#P"dCmS 4,ug2@Y.]o> Xߝ?y'XPN b(,ƊuO(MEXY|(8nx[N;䪼ѬwtdEYZǴzGl:Y3.A]9iw%vegXFLmt̒EK[hlଈt]Ϩ:IT[λk vn6KP rg" ꬝YS V7 }z -EޖIh:B?n;*k`C4V*{ ]wϝYT 'XFbllid&!)"-ս,8&&`'.^^ --ZdY-8k R6U%\lj-@C,AFe;;ldlC7|lY.llE2.#, 4G5ФPAq־,f䁮P@qJL e,HJ|Y V'؁3SD2M-!KXu ص7eg|!`{xl$T)f$V؆875.=-4gY$PhQ9X;wSOwYc&Y, fF ά(l2&bCKç<$yPZWp9 2HJ]T@Ŏ dt4I(Uև|Ge˳f|% t34.-,L YѮ2= 6~GUC}yדJY;,N*RGζ+MRfH;\Sw1{ t^7jjhd]l`Xnw8 !{g=դ3d-U< g5yZQ[1zMh2#axmhL<}h)(AmGs0`I%Cǯ< d}t}m2Pllܰ4۽3e(6B;^6l;pgr6oC6ȣ|ipoh >_. άEKP 8u| 0ɃT00Q<}3 M>X^}beg0b.c;*+8Nڞ/K48@=Y~{N;KYy />gtor9B@'K)q>Xv8hԮYKbI}c /]Y'pԍE`Amil;^@+.eL鉛ra5^HH;5hP|7EN$@'{N趼PngǪEb*fl,"m9wڟ6pOT.zGI߄KKơxϹЊ -HH@;:[2I%4 ߶3@+ 興0qkwa]?EwtѠMnGk~hOw2 sŃ*{PmYrӖޞZ-H[-,/-k`)HQ3un6ɷHԶDoa5#3"}4yܑ@ԹOYDPy= a-<|-٩}e嬧|$;)Cl>mi|@7LGDh87#?n"VE_?Iwb@O5?Y`aԗ$HvE[E:qUbv*v5ͻ.pV.v7΅M~eJH"TgwCÕ>..K3K Y'9  l(@ڿamajކOT؎3: M+,jDx?C ·%؄2 ]}ܤ:'xߣZ~[5?Ykչ H% $:ʙV`ېa]$:GEXcwNUӃd6{W;=YnavomMn-%UٍI3*Xܻ<[FzK Y+۴! 81򉃨!Y>I5ʬ&l>pPo-,-GDs5\ܒo(6͹ ew~w5e{p*hd(Ot-C+?o-,{-:sVw $;֣ĵ6-c5A193-z Bto>;?5Iߴ @m *;v Ks5,n` 6wWMEYcwz1-YɚlGu=Ǝ1v܄*[ em[B  '}gc8GmO vJ}k0mIqf S"}~Mr<[<*N`iwcU tl4_Uj Z[%?P}âOooX>Ʈ9{#xDk5ip $ۻmKSE XGluB/5?qDt#$В,| g  &&Lg@T!|`@~Mg|C pڊ#(Z֨pKw~Qh5ndkUQvztL0i}'JC_~wzQDԗ: 0 ؝lWi3vֶUX e1Xٚl}J5ŪBMRk[;=XOѽ2ɒqU XRaZm dlct %,t Ś@8=Lh[|y{dbjn,j w-EHI+;PhJ$›q+! Ӈ$NtC p'۴kP ,@ֳihaHv4y[ إ}a[]K҃6boKz2h*q|WOmx4b»%`p[k- #+6 <,%jKf+wzV.oه"Hz۽_i}Z̿œ{ )PpEb]byq{:wruny'nCo^Ty %?YB؃*hkɢYғ$gQaq~ӓSK0.mZkz6i}!T`1"ẖrE@hR aJ$h6[\ lpZq!0yזCOkG'[)]5,=WYZ.I8a~I~<txhEi+NoXzgOV5dZ}k$C;$zhÃC3"_&OJWWqtHzIA9񪳞)pzth&?2:HO\ G:8!otC9nһ-mQ۹a,!$,>WӸr[O.!)#!({[ k¬_+='p-qQaT ;+pt[EL @Bo'Ug};HܤoT6pP(V@Njo_u\\ˁ]r"Ѹֺ: վ 8ҹ9Hi =lCiW3Ǎ:H{/m*]kGŪmbrpxlO_e ZvQ8iVks0[_1ťi@Z#%S`(gq܋uV,][#nSAvy.˨7U\ b]>1JveՄ_ mzhNҷAㆺ;:H>4j1;xowmyyIP%}Ny#ݶ;y'j%g?WKoV8޵=:*_mHV4~/ss͜؅CGTyqj6pf߉px*S:NzNg)SZ^E& 쭩p"T}r) gdpZ5ӊeMpo֤J7%6+MëY6Qn|nx5+Yp8oſbh2uPw_o/E+IToy":.ir٧g<(~!b=:aPx;˙dl$Ma4z0beu鑻LN0z :Q =*~+Wl/8m[aLұϕꁣtèb$Q ~'XNVc)(vz>l}-sNO{L+X(/YIv1 _QQd|p:\u zBSnpP>=>tP;TilA~;HibUFiV $6AI.zqNlH҉oFcVB@ڹ+>tt8]Pٔn-[SC.ҽ1ZK X]7,ƽϹeI‘tR;_$:H\Nwӥ4KLwtns7Ig&ESǡ4Oֿ8|Nf(e8HsvAiF W ܶNp m5qr.}] dWv2y0/O*%ɬL{f^yvdqvAm}]A:,yͿhu=2B>tt8=ʍ.k`_wZI? dXT ;N|] #:HjwYimt(/%r zC鲳A0M#0X~#JN:8HzUfԔn귂p]y}ApM Ebo(H'Q at&zQƏMرl_e  ;'.ȁa/Ԗ} /oHKi8y?Wѕg#1:HU銋gAFƉuCGA]8tt/ElpP]m}zI^DVկ}?oo _;!t摎kQߺnvG ekgqkh(MX܂pY^ ڀ*GXa| =˟{~s8.vkQap+!a ,i{76zM{ ko vYsQF֨|h02Y8AWÕۇ y<= ]z]{A5fv9H4%!kG& А,i&>OyJMGֻ)H7SQې˽1UI3Ai>dys^ mSy#s^7lsϓ, ,鯝Ս{n?F4k {;H/|qfU0Z kYlvsY8j p <6 v zo -W(a4z: b{::HiXFn$}k::HwMaa4&@c$Ga /mX/t?%K B򁢃y^]ycٗXYt6F rkŒv$oӝIte>gv7U[=v8O&AEvi4vp֗UEr c?K9pV8ݑGAԷt3w3n]dN<Ak:mPz -%up[7GKe/Ov?tv8͖@SjV<FW<[,K wv8=itdgpzmp_<#*њI0;茘rM}+"gN2hCgvB'cVps)LaYڽZaepƛqedRH2:h|ZkaDC5 B4Yr hlYE[pJ/-`4'[Ip8I ŭ=NOYEEDC'ë+u\ O4',1+zNpSם5Ye9OS}( WvpS'jWgE k^ơi_Ry2VO"Hvm hqcRLN'Ә-?}7I O{8nƍrN&=[Ve:tv=w c 4#~w(٩ ׉wK,K`{UnF~d,T|ViWF Wu6ۤy:✣p~#:fwp&g7;n]>o,`v]VhR6.=?pR=3~`C7ڡMjiR.P+w>HC'g il"ٵ^!u& 0ndHIhc=V:%pHj[6*ύ_ZU4~SF GЈV8tov:z yXΎ6HR#~s7=мKq:)|ZCn`{m"vUv8}4c=AhF'8tv{[[p-_AGy7;fWU>tv8.fInGнQ=ӵ_$9&]뭬_^v0Pot]NhKфutv8=fC>< E~O9Z& %Z|w:N LRo:~&v t8]^6=F׿i$u M:;ny4>9hBZ4*и]z|8.Һ|~PoXLƁ%<`;6kmQ3݆K+R(O=y9N`3>cq4 ON ۞}6co@$S:ox$Faɐ _}ŲCa40ޖ5a8eJ9 }) 3m n  I]^ ,[[NRX.C Ζi[Yl۰Wmij9Oq+Ե^ֹgѱLzԇi9B]VeK|;nI麛|YpZ/HN'ÅD+Z%`pC#Nz@|Keh$iīK 䃋6ǃFΎ]tktx WqCO8veE7-Zx}_Zsڟ?OGM4uc 4sC=7}#Y.ݗ$;9!6$tO5Isl^}tr=W4 KɎ-fCY-;;ƿWIv8W(̎L#t֡#hBӠ`W2_C%6g Jp!gL K/U|WZhXҿLWm`ҸSfGh uΎD׍LGzKsr|蜅:6wg'G$u t|vЀ[&zzJ栓#kUg4}4MpdD-c_EHHSaZ)1+з^xg ;Wg^v}:pV]~1LGvW0M2IkpWǴf .,pb}t8]'‰}%y ;;Fm9&N='^rܷ#QGΎ{iltv8-k}T5oӭ,;D*pRдo٘eҗevܴ$sBZo{[B{89 u4ͱ #?$I?jӂGB5tż+3%莎C=(Խ=~ذu|+V'FK~2 S~f}Fnyy Ա6|pK/.ny*7) Kpz%;kxy8g5% x,˪ccE}V$G[uܱ4" zkn{ݎ/[mjk⣥Gގit^rzqt鶏q芝y.u;Nư=oh&N?|KpƍFc^/ȓju)pZRdoqQxeJ:8Hggu mPwpi=l:(1K{߻ xzY"ң$}_/_%Qmw #L]fsʴ:^ǟzFݎC+#Z= ’ux3ҿ M3SІtoNȼo fu VDo\iۻ d1D~p/v'}V?G P&cC{7G]*!AZb2e*#sbpS_5W1FҽJ"{ W35+5C8t_Z=MGтc`ɺMH|?AArcM@#d` j=;P8wRޅT}{8H65pzM߰p[k\ h(0A[o =sSYPl::F\z^jM\>; h"yMŁk<F_^OoAzyȇKE=N?mgQA76p+ޙїpi`dl"yJҞ֐paݸ<$=c`srG7zxu!6k8lEjZ2Ӎ',]& =O:ǭ*C*pm6#sQAdtDA7vxh57N)E1릣tEЈڧ_AyĻ? gR< 'fD;=pRMP}Ew)pӎhp_VZT?yuɡI뵴B8(^lk &=1(W,ZN} ;Y =1vS1S:b^ &.1l4T=u+a s/y0U;zsm8*H/;J#?{8<#{*{8HKOۑK P&Ia, g#c& ={N7r;.+ː\6kےspnV޾[ADW"иcm::<;efil~T/Ł#V'~[(C`}4> VkPl;ry ; =wu*tcF =!~oឋÈ]V.kG2|aZXÁQN} ">ëN@87KMDP:㍮e}8=q魞j-vnYoQF`8l_U S_a ;tM@yʅ9f]_ 0(n6~4 퉼;^F1t8Kw AA8E6VdMEyp`\J}MV3}+=ksv~Gt Nisڰ@K =~\)P|ߟE/W)}_ɯ|nf_8tKc q*eT!5h¥:84fNsZJ/!㝧!>ӹ5ARnŁՓ4a #iԧ4h8,*W5a'Xp$.*-# \؞̘^OvYegײ| ﴕe ۆh1|DsoiY1,t6+ڄ~P0جZ. ;Ŧ@ G7.Kٹ&*Bɷnoc7`Q*^j {4tfje* eWi\ ݮ ƎQq_{ȅ@t %#(iV'_- +ߘQ4ETaeWAx)~+H5ӽcm::fQA{~ͧ K(h 'v)A::HKMJW$V<'<YF_ RF:^j:(k$.Vn@874Dwv-K>M -Cprtk4^J+ pX4iA V<.'4R_?䔇tS^$ۘN4qPшc4? Wk 5e Eli45oҺ6w};Hoz%?17:\ӾaVۆ3↣(_Y l}Mʦ҃;CqhyAp[f" S9Xb4p߷itt8&dնF79[?0"SQΊyV?iԷ#h$9F#9d!$? ߖZ9~nMbrU"6Y3Rߗ`ma}$7"[{QM>ASYu ?$GeіwvzYD<ΎVٚ߇#hd6ătv͟0*n]]0z/}Y{Xz8浺ֶ߷㏖xgl2c^#otRQٮCtK˛a4[Au046q ~8jyB$"`ՕKrMAݧc8F#:eP==Y "}u]F y^.ؾOšMbtvY=c\A'Eht0Ί*.dVt,0"豙eA'Gui@{)sV`S+h+ ԭ-+|vzwuΎf_M*+4/Ɏ}z}* ؟NtR&=eT{"hR.v:; o6<A٤I( ]gv:; uJ FϞSޯ:eǡN1(6<<Aԭ48)u:)}YapVM{K;tl,V>[YXf`eH0<zM!S~;QE}nǡmP]#h$I!ߧ#h]NgGȂrt!uOŁ͑vnE8uR]#YtR'>c}:k'#hm-RzKȬ8~УtKSXq ɊCi UmّݨFLGeђ;;2$qv%cc=[84VˮgNϖ$9~R.mDx(έ2 ݻqZّzN|HuH-+vvFMN1z8ղ LG"0*ۚZ*ƳL=vVuQr A(Gvzl@Bdb7`6"cdʼnNK;s'XE_j͊Nv)6i|o">VRA#oȸqž7vL cGqpQ-o;SѼF1*֓+׺MFBa2&7]lnEc.?mBzvPqIAO1m>xݳNEF,㙬? A3K%uTG sYa0Iܲ.ttRL%Y5E"h4˓WghmEñIpץ8Vo``g0ESCHddW6kr!jf($G A iڷ2+XwyAQv8+^:Uj0X{OGн"]X?z8=}:;+Վ)GЭ2uv`>:AO9gJwNgG6:Ng(븮kX~8=%;ˋӭ՘l|3mofoEKcPPW)KFq:;vuT|>qR栳#u?NCOb[tvm/CCD :9SBBcZ9%'[n~8YnΎ'6KPǡi5YQq8F#,<; ;Aun/Rmy(\gS7;q캎iCa44u`vgEh&RK!ppVW]cOG֔(\۽[K~s:) >2z&‡"ƃFp=v9 a4:bH7 ɭ~:XKpg;Y#zat)KԥxВ@뵆}y }crk0z}pIVP<uߗA"1}ῸK?ƻ)2ډ D" u+ʟ/dE1l64Y֙俛8r8{fU,yG{iU7\Ӫ˥w!N]4b?>,k^=&@YI~*@XH=^eTrZ ; T)n6i!p 26 :>C^Y첦)WbO,65FScG+>FRVccYnhqZ&bhƦ+:O 'yge\A ^CEPvI&J|^-,,R^Zs7l}j;;e{F/YhSt5QgGm+$?Pt~O(|q]?N.7V7Jq7Apvdj_kG-,:gO٫Yx6[X}:݊wTtOf1gp@%vXNl'pm8"BWCaieTW:Zoo,5Eg tgs[grdEOEg}E&{ 8;m۷\bsB/08D}xOZ #{ ^],VoK=4<%`tcgF5[͟w{L^[( 8{&9mME8XkֺD ba>O&`-̦t/e_g:2&e"`wX'ήM[4։{ Y"T)D|EG; Oz!{;*`Ś[`N,:;}VO7P4m&*ftGډe'{=sGogϰ,p&fG"^}ޗO 8;1דDYYU*Y;Pu'c c+Ooݢ'wtYf|C ,{y:v\ZXL@Zw!% 3lgA՞z&%ahJiiFe=9}k=z|0}R1il9t_|2 aE <5÷DZ9NWF׸?"[#1Wqr4Hk 1AUozܿگimuwA>\2e ;}IuQ-;?ЍQAZ=]DSS;?)\(+l˾1Ĝ^Y-t&vӷ]->NA=8']vq6m%";CVkdD{.?3 t%S;\6[#huH;F좟T#Ic^ɫhqTsFXg״8 / .27^,*{&A V!}:i ',]tz} AZ^co'\OjLw1KQV|KuR0*amAs]7V4,[g=[pYCJ a$v]g'zͲ=~+~os}%xK *ܤ9}2%3 kenoɉHW# ?A{J4t[}NDvH]}i|Q$Ao R6̽ =qp(% nяDD ㅓU b^GtW!`ݭ1^%_w]” }xOK_A2Jzy5H`}2]Ctx0 CCق>:(p/h^ f.x3ε0 E"TãYO%7' -^}mco90V7+B-b5FQr館*˜ c L<'wvwݦ4Yu)}|)ˑE8m"%Nklii,af'x+he@j:Dї+"5Hwo߶P}RƬq$jsZMoV<ȫC! ĺ%s'|%?v`&w+-_ k/-|%aʫ4goNf4 _ݫ4Dx5tc2>N9}k|i*ڷiX(nqػ}4v_TL -&W3z:ӷFpG,Ԗj- X:|Kp+Tf%W!XVO@sY+|KlV#iO$}XK]I$,S,$H+/<|/gS 4x{ƗF#8wI$'TH3>p%AoK^h՛h|ia7TWzϮcA!/ZJ[ Ӄk\-'S 9d]|_g]lo6Umk"WӗD"2![i9>uYoU^ޫ4|jQAҘڷFкTxy5jN^y/$Ir(u 1*@JG,M w: HOmހ1pT, zY@oK,l2 <%o+|c|{RpV^;i[x( dچz p2 v 3\Ws+Z,eK9Q"$\` lXCAz샂[\?Fg?+BR=^qen9 =й31zʄ`J G" %Vr^{=(H#(WNG饕 1ttZPqAJUѷ4"Y$FFt_r>O&XJ+DzBZNGѨM^ߘ* ݦ,z<c:"p8* Fq.U }ks+K. ROۿ[Azfhî@VrkEapeYl}H)MhpAz:j0x al{lłm <6\?ƭ 1Yox;d1GJVҖ"drNM6 Qѡt*+[h|M⥮pF8nO_z8Ɛ,[<Rs.SO>IEEITpnwĞvMWtt^8K׋fq h>0z!𱣃t-tK8IJMֳTl DJIniMke8FO%=xՕ.5 iLhm:hw8*\$U"8p~j9hdT1 vψ6tiO})۔+\L4zrutXrQQ ¸q ){c!,DCt6ĦpG)G]}[<J7|"IOx;Hْ&0ҽHr,$=)yhcW+KAg繊ѷwjA (bA9ohLr%8GaLS9җpCۺ~扇:*ȭ:g z.pT;5ygɁū =|yVx(%PS.tP^NXmj*P6һiRtp&"нM::|CzGj;FǡˬF#tk~z(pm_RD޵"_+^{odhA+\3T+?c4h p%u5+ʲy suk}\^:j&j hdtnzp|k\ {e"U懃t󍭰CGGuQy9Ջ/ħFZ iI8LMGٯe pu2 E7M='ƛ8izt!vvHy f5펹!dߊCN2|0t:886"Ǡqy:„'tʕttQ,ו~%tioPlҼ_zvV'>06H׋\.蘶>hԮL۴Bp|ir~q~uN]HȰ;%;%8*%22.W`,"ȗpڅ4ֻ8tɁ#MatAS~ P gy9Fӭ@J8*Eu+ׂi0allM lVmӊPF C?phJ'پX;h*VG~3P7t#Z27l?gQ`_{_ن :X=բ{zݫfc-@vmd{WgVNmW>&nٙڝZW:%]Q6 Ca4u,CќO- YvyD6"$S6"˜:i6rpTr0g-g!z`v|k;0]d@5ƄI,(ٍGf`mU}M_v)[;q(m}ٟ@i [9GAVtt.uV)d?h6 ӂ햟W:Ql}ޥ1HDK?ڡD;Toќo 2XYa՟.nv6 (X v -[ße3ǝOT}p7#Zɮ|ZGq:|(Bud+:Xєo(L'N's,+(LVq4 ,>d;CPW0v)hg~+R(*8lw~e,Gd 44$,fb}2g:*+3>l6_Wۣ 9BϞ}h)ZU|e YLGH~~i;r6 ;|qn0D,|NG6 VWEAJ70l?9;)*S/F3d'+ߕ!lj>#(lQڔMD-fHj{d@Q ?-d: zΚ|ObFm[oAr@i}^d7.eU`(n`ːc9"_g6d[oޏ9ēucqT! +]mv7Kf`=!@vH9hhE6 ;k]BJY !XxR%پ:u?XڙW[fDͲ@&a7kd[ڴ {y@hp)o G=r˛qup Gml=˜5`e-ju z{J1Fe}1ۣf}uvӍu-,l١>V@0tUЋ'֎][,~v m#>,9q}GWۅ9,>_ë㇛Y aKн§aM6[4^\ag@X k^9?6#=cG7zzBcyMs.nkb-cEdY H, +m%qh7+{pSvr~ܝ;f`m )'7 a+G;4o,Tnޤa,d^TZpNٛ@M,cSdGOH9IvNg?_ҰAMn5 x=kc}OW(^s[ej?sUrfLlRє[M ӣ9?Xou4aξKIˊvqnu`KkÊ@X`W*yzt8œl鼑9?Xtag]K azjry 얲8w\;r~XҶ+}4:ہyeS kc%#6$,nQ;;^QX#~c)U3ĔLۓ(_|Xr#:XՇ ~^d1^W|#tJ-@vAVc1ɞeåڧl0V6 SK<Ț'3tymb7$#䩝םh\Ct?t.l.QZ2nn4pC'Fc5IgrU1Zޱtzoi/I:k8[Y=JAg,6z|Keѩ!%wccB#`gA,^ "@}QA8][Fr.]Km::H[f" KlWM$ۙ~IԦćH=w‚}2v>+_َ%/! = JEOG PXt-^ ¸voQl E}gŗЫ6=~Oi +^CTFI+:.8`\؅A6&*]{ҴΥ8tk^ 3bybܩ ћ$e1ư t6큮!kAuMv`'t:4xe`P7jşVsRZ%NeҘttb{:HZ{nj^ £X6Fjܐh {MGޟe9$L2Ppn)ۍFa 6}̗s|(oϐiy/KY_l!ط|a-b￧4n;[tt(=s-׵qhFON/1\7m$&֔^NnVA:gqWSX-{tb_wm]{jӭ̴6=ԃp_#%֑/i4oV{^me2 0>VQ&/% *5`&ťiϳo6FsE6=@Z IKvZVqx dq-aٺ.0T亇%x_?݊=eA>mڮm:6 :O8܅;r)\Zi◺}u+B{)lleߺ{)Y9TU^_)]s.c"}U{Qjyt{ގCϒRv}Nh&}/}8H"#uV@c<|8I/--X6|OYnϺ:`:@Y4 CLBr*<0FI̳ꔃ3<sq04Z!sjt8IBDJV/v3gӣҳ&Nx^f-lAzd.q^3Yv$I@GmuPn3w.JFis閯_cL]Եph_N =M$]/N1ܯQztt#I?uҪR=X򦣃4Rw/sR_Ikl*LţnxZm}ѫsɖ[]RkpP]T=nU2;nҠ d:zh$Db~JsTƄ.wtY==\E- krp8]L]@G=%w/_x~(OjV^~~Խ?N#mֶ ƩAvuHeV(^5~ xK&jR6NkHFϛCQ9{2z8HKL$ʡD[F'޾pZe C w#Э"};Hcgi^Rޗ9зFXR׍,j5-}"em ]GNh_Ҙ]Φ&!;:Hϩs]a] 6`M+{\?'kI18^.RSt8Rm[g/ ]umR ]h^>/R Y놣b' y.C&Ji9<M7?9vUCԘȻ EF{|8Hn9 6N5z1ևOvqluLf!*!eoֲpqxA;~GשA5%5Y"hVOhcA'lCbOv=` Ă)i\<N[2fYkn8*dmtHjF^Pz <^u\ҚRkMtp!ohpI'$MG:QC=3AZ~vMGiTXwMGQ6SYuQAxZͱMoݷaȺ+(\z.TG;W_;q=EjnvD?O齑SۇvX[>qyl8*8t x눆xЍ&xR=V7H8N[p5F0xȘ|_h@sݯ|`AԬ;kx_KHG4'+]} ʢ;:No&̠ S<]88άVO6a ªiߎ3P C/*f`W:(Nz2pEӻ0DCQg/\>%T3Xŗ0y ٓDA[;@8!rOdANɵ۔6u}nt`ğDtP8OimSkaX6N!UvԇS .hA#=j0;=SJwE}xXuKz F-O݇t|VkatDKJm::HrFpp.=o::Ƭw߰I u*,rva mn:(#)=}y*.ttƌ^ eZ kJ!p`=p9B:8Hgs(eGʈdέIϥ5}t</v9phyb@[_Qx^4{$h [[{ma$nQϻ܆d.E}@2YeD3Ttt% dk,ansZ ? ɞ cL-_[4|v٘>$ 6Shl"]n(r<NE7~gAc#vLJFѝخӷFXig^IEciнIxF$cߪyh6JW܇Fѓ.JiXDq{ Fx@-t G:^m&oÝ:-QLlrљ)ւrkLv&E#sDŽX&!z'Fv4\;szr]Lm&̺G8|KuDy< 6?yX['sNT(+4U(5,GCoh4P]SyX[fxsceo̟S-Q4:{ᅲ-O(:!Q0ӌIuoN(Ȧmc<E->4>:+ıQѧFjLFѭ7}v[+o([Mj%!(8MT\~^w^=CnH{()PX*:q22aò=$"?$ 0+*dBPN%1Uо5C`]c$FZQя>40 qG sYxh Oa nZ4r8S`ÎPy{KL~#=<%Z#_NQ4cBs(u@||K`KS"hؾ3}asȓ5c^`q%&'e$}H|6hfՌ}h-Rs5ƼVPҧD( s3؋Mn4[H!l4O<mQ>T=ELqPXO=bknwwJ]VPbw~]b$V(S}oKw~+eX,jG /IO5//@ -5NgaKre@qޛ`nd#y8 Gf*!pDžBx'ue->rDYfG0|gˏ뺭d~^b( 2wOLT Otvtl_ڦ}E'C Y!8CصbÔ2),v6ۣ(Pe號r~;lsPQOp';ԻC Y҃=xaa1dQƫh.hhZ@2VWƔnH-(X9df]`OgGU+Lv@VK!!yʿ6ڰGHVd<<ٝE`Ow{ؕXj$],KJ>QG~cǓ1~W^b2#΁Ij)OTb"pB,Gax|z;a~X6S?`q7UH033X8+Ҽ>U:māvɢw0݇@hv?@D[s;w0|號v}p܇@սܭ<HT31wdJn;@l|1F@9 ̃XJa͇@8-'p zHVa3pDsC !XK)P,3v@ +C Y0f{ 86I{͸@ZLC ٱȪe`W%`Ob YZ6~^ɢXxy{ K9RH{!x[CXV=S :0ϾN=m%=Xy@<p8C َ/Iw@-X43?Q-&G~M#|g{ٓa-ꋝɮ2DȮ@։YhH)fg- ,){'ka6L~^ɶ[{ ]V^$-jϘt'M<*M<ғ W 1!Ԥ`ZgTTƴvF L-]"1{od.%LC YYgf[ ٬ -S YۧQQ)SYx&E|S 鋄*\godua8m (}eC3s@nMޒH_R0V7^_ىJ`OdPCfQu=SX6f/pvжyD)/ve' %Y@f'[*בD/zR`/Ͼ.<6t*2>j;ziO7Յ'M'G\x$bH06"I/LQS zR^9>\O_w(%vE8?94_`\Jys?~Q'OB~t'ryJX.Xӻ:ӻ}qӈ6ӏ;b?zN6ё8:VuQ3j`9㼩vCҜ7u=FB1iWU:GpR\m7 UVu>\M w yg!kA?jXg pa7u+`xS \`ƦpC $ֱHU՜'+ڝMcΜ߮pK2CoƮpm"[8"j`Ug[Ʈg,: KǽTR%LD:ƣ0*Q6Vs$*g;Z^VlيMauhS1Vu~S(rEEjr&ӭ#3 ]Q46瑱˭һ7uKqzwOЛ:ӴGۉ~p$7uq[~7ѰXfW':Q:AiJ0g}P MuЛ:ӔtMeEVqfskyQuὗUC#vxzSgnşl#~)xsu_Slлjh7u)V_ z74ޜwugOTCj@ ԙFE8u8]5: \LjWg }P |6{WgeW՛Fc4XjmՉxI/u{ ׊6+Sj>_r?ǟ4w_ן_^-+uO]%^׸%3]qdp%9/l-Qn+Cit2Ab}g>A{%cИWXGҍUh1hqUH}h_X}%=9{(];msj*H}顴! Z6LltoVMSz(B=;x45]cNB[c z u.w9PI}>{ mzĥz(/u9˳>w?Ρ`Qh1ʌD/!:JF7+ w5`8䨴#Sjܾ,va7=(w% "WDQw-vBc .vst_Z( gge] qNwkaf a!v="=R5)PI8`#M`AڝK̖֝ .9#;>gH}Zh _\##.,X|,=ijŠƑ"cij%vG@4M?6t =&uP6« ք|LgaF26xP8$\]#-(ca1]&ْ*;ETEݼ.VSJkGaiEIKA8$f8*FCO@g4>Ӕfٲc gͣcr8(+u4+y[МyoUC#&T8\ Ţ¿s)[VON!px5 ܠe*ar8(~_GkRCA!D|oHUN 뽔l3MA{Qtm| N6cR8l[*s U sg oYOW+UنS@SL=|4P$;K:>] rC{(BWm v@{N;ܗ\֨!v" 98+zKߝ2ݚ[ŊZ/1ᅪxη\`~K ؟,?!נkA UncOA?#68ITc\U{&v>/Mwm2$.<_B ԛ:a>ttxǒ%)-ofI`s𹣃t'D1GtϫsψaJ02pUswr;sV;<az7e1-tp4mո^ֳB::vO?vmQy:HzxCGҲv[t)ʇtem}N >pn\pPFBw餃EN[LVtt]rrOy8*cQszǾ-"I%t39A[j9ODFG`(zI=+"Fiug:ҭWg s̾ryGêç%Qt)Btez͇4Zj "Mm0}#3fnq>B7J/ 7CK:W#NɥJ oR,u+׺nm:(}a &tQpZiҿ d*).S Nsg;tVn. .}#"F`2xRm ۬.m>WFY/ <ӐKK)W)kG3F-k"k}XS}8f1pzE #;"[0XN{ݞV!tCp$yAA5"ơpP-x$TG]2l;C14&X&T #tY<Nw)l:7, >r+5p29aYئuLEG(zT[ G< g-𯁰ez)0Њ3n)\qiR:p2D@S:0p >p8]%aZp(r*NGz" enܮA:C§nށsAwt8] 9 Rz a\H* ~ ^:NE8(s L`ȤأCᴮAROGvnKT>&tDE0bNۙv+tK:nSz`D:cQR72鞥L_Z!QV>vt8$c,#(6uiIV<ᴴ!ߖupZ-q*uMENvz>@:8)5#;/-mtH~\*~QlK$ $e  ¶~^ 7 oI/% w*2 A7g^p۾d8/~p h,i(QpormޯѽkulZm7fؔmU~hiݢ>O=MUtK5.eI8(nujc-Nkw~x%IP*s2@b;Tw6*S`6Wy{F =K[A.E~LZ/4P\l[jZTp{bPZƄɑ^eGR]':iq^e5Ӎt#L0܀8=~cPL1$'AiK\}:*ݸx8p/(+|dGʵX-9.;dǨ+epgǙ_҅Q'2>0)4@Bg L Fފq^mx١4 Uyoߧ#A8NX y8r-k Qf<~`""`xkz(!AF(E0ɁB0x)˰Y_|Du֩00 ۗ"hzWv]a֓jwY=ABY* ,Ѩ6[:N>9AS#i޲ĔA gYֹPp+[a$>VY;(ݥ>A֊n0zҽLT0gH2R\v&> Q],E]dg߁h_v>ޛΎC5uf)-PPvwm0xYTF"hlqp]_\*;FӯP=0.#f5l,x8FmC=Mv"kMbDyCG{8B~rM/ Gm6i8tMjQostr]%/d0TF{йǗZ>F7ym!AZ&6Է"tR6C4jۏh>_R̫j2fE[tm\eJԅۡtۘ,Mmv:;n׬w<A}3>F/cGеj\j~(.rpXVV)%0)z];]nCg \ނ`e`l*TEaw~8fH=0?:O[cNgGмQut 9g]Qp!ܫtt؛4:Й%-r:;4Ȱ۩A]QwΎki]flp]qنvMv)3eTP C!,|W:)|jCsJYUo ICEj!KX1\`NƖ{\:ȫVKG(?,bV4mB#&Yt!4~q8֔4}F#Un0B"`ҩE։,߆`eҭ[>^;N=AiZ7v-ŧz~C֗eyFL|k7N>|2sߎ7 M\A0}j2 ܃Ύ `צ0Sd8+FAlR>Ίwڦ4-ߛqyDt7Fuj4)Pg `܎-%㡹,t{}ˇZΎ[RfpncϪ0X'Q *c>qd˥X+};^@iLG;FKb#X4t=zV#G!`,@e?H/CM.cTPufOK f?L"࿯Vhq竑meRRgED_=w|PR$"*igu=ΎG\/a5%%MtvݏMWGkv8+ F4F3IV/Ca4R>ikźEܬ)yu:K٣?>F43qFnGУڬG0cߎ?e;F㗖p=>H>bBx8G, ;;FB(֓F#o>,&܎qҚ1bpNnavM?QNZ1?AsZ6&f!443$7gЃco"U]g`3Ղ,kJqv>%}ʰAx٤kH}:חBYNgǡ3;8A//vaP:b}cЈ'Ɏ˿za#ئPl,N7I`i~(2;r%+k('Iu7I1hZ+ o?It]^y5ҭus:Эtt]&%9g-޾l!bCCAo='"YȨ\bڜyb-/iQ0zxՒu1tȺFbMx8Ho%YuN`wlY\}Ks Ƭl-S 7΍]@xT; sn8AkΒ^t;HcBFtt(-ݰoYuutO{=Wʇjy<_u8*   pC7 ="c0hk:*9QAx%Yfi`u w|=F_SB#A%8豲ݘ^ڬڟv-ĚUJuTqwGB ><Fe4#I>^-PW`,Aa05aĺXy.t*\kqȶ-L֙ni0އ`FW}){by =vȀ]yNoiOsN0)KmZOx{;HcID?g<F#Wdy& 4QA8*Gcnx)71bپ5t g m]_xm^[jm:Pz,]:jc^O[>Vц0TiM6]Nfl-6m)c[3GšW ? ] "1<$kͺZ?Oǡ[Zh NGǡ{C{}:hk%pM@Z:e6? ^2s=C*d=⨷~T챳pؙeOI#GA:8^K­D\=oOhVж  pt|g%mHk ]dy*N60pY>`X]>V= (HcRQȨ]&ºcjCrㄎC:H#&y@ls.8i*zKF5wẼAUSP+Beɢy7͉vlƹm{ ɦ95MF5{nbteж벛~;H߀w;H7 =o/9;,hD#ۜpIҋatcϪthFNGǡm{p;HsNBݫ AtX mj=Tᚪ"(,tQlN|8.8%o]Gr]8蒸&VX#yv_aa}*mAAa'NAذzT 9%)XG[apYSv 럧 ҫۺDviJ}18;NGi= $:H'7G֢pcA>tAd'?^iO95qemtޥ.GG`p::H'X߈-P20 __Ҵ \yD:(,/Gh8ph lx(HϦʢ 55 ښA}UA:O|ru::ݵ-18ta4Nn׹to/}8Hc61jy(W g:ec&pZt}bV(;F&u=(4X)C oTP64eu9 aF` upX' 4 )wi=GGFcn;y_>OǡSu ,(,_a_byʁ uepP\X\A:_ekɧC!a4%>=ג/ˇY Çҷl=wni8:jQq-ty:H}0 Evn,yŠ MEZsoN"wܻyh hl%q蚗ѽl`TN-%YG!iI/Qa4E뺥Az-/3·lk( *\ՍDq8XVNGǡ^L`v:&Fz! ~& tǡq躒oxNY5EŁГB8p9o$Ԋ2:*=nJw9oNGǡ;^A5U~f8翑wh=5e'`4:Qx l3&fQc*,U؝֠9n.$Gr(:%H[5ە$8[&H!0^=8 M4Zw::48py:W^Y崱e.{W8RneAA8E@5Aql }ǚ;:*H#\pZGNdlW#g9X.= 9B`i8tZ"״uBWifч]8ޘnǡ/1In\PJ2;:=%HgvU*gW0: ٿ`0._C&1M! %` )pyqY"rg&8p̈́zT _:8Sԗ+NGǡ50 CKxf71vpX==6@°.1*,1 ?Qqlf|Yzh(d<+.4K$jCަ_ƌ3GGAX. /SμMBA4FtpPHGG|5o~8tmr4 OBGXmХF,oZnFѡ=zTA@}Bp7ݎoE3{!+=O sS9܎sd ppn`8i&Lk8Hh0h'lCeb]y:~g;W8k+r$6\tWiJctG^/a2HG=ecNGVW=r;HcHGkav=3y{ԝ蝘FM֔qe19F㶪TPFCdN,>k2M!<;m -$7NzQ_a4q;j CӵZ{d`]ѡHt{:= )/y+ L^t]  mCiG;I*:00Z:q:Rq8*>$uE3J u{ǕzVV= rt78eoŁwpmcZWZV h鶥#+-EAǎF*.KBN6DNaV8eYy(FoM:3ҭ ܫ#?&[KAx-@n0zh ]̿áLLuMhl^g~8H#-{yvщ^ZNڿ>OZ Dz])psP]Ja;AчѹY^}8HcWw-NGDYKi}AzX~Dy,k ъJNKov:(0t44qdDL-p-%2V=s@(SWs:()ەI·ht ?g ]4*vZ^<WtGhGgb] kbP#-mAa0R]no~-YGni_$pc,އAddJik + )$,avӀ NGiZZ3};HͨUeht^W{n8[oU>V0ʕRl4.=4>A~+Y^z3~im3_oA%14μ'GTquK"RIGfWFd8+]w8%kmn>/yc^f32Kq` Yaq y,62&IA*rB޸x AAX:r K zG9vJrO$K_s+I4#&qktt.]P3q~- [86ɨtI%֩OBo?C% r+>GHU[Tb8<')Xrʤ#vo>ZLOiF1$*B0C}lC`C.V2@ q"Zԛo=ckJG}iM ӲBGXGE PC e*߫}Cqh_Vx8~&wK8p{cXRN޷?Vp7{r0g;83lγ(]fnXzm+68HPG dg/ֳ&J(y;HdmMAh4Ӻe\FܷpS[?h=`RZy۠Pv-= 0y#mzkL4^{~8HI p=TB g Sg!qh}.qAMIB0k< ]vZH 7hR.MᾳG)p06Y\ѕkJsTXTX:0Z.._t64"f-:+w!xk}"wlsP_Fz("%kq KX4ЎYJ Ik[ZQ(7&Pi([< Uz> \sƻJc`0woV[ sneapT=Q_i}8F/v$ QWF7%oWqt^/ٌco|8Hy•iIIexI8t1vF$醊ߐi9צ4׹XsCtE&X7BSAbq㘥mpV£2!a lN y*H&Ky=2 G ¨uAAx EWY!a w̋!`0V>WÄA8#7-HSC4,mtۇ:UKA5KYu<臂t1:`1Cen::H׆)& Yi8};֪K!ㆣp})7_8*4:oŁ\~#PypWlr]x_m̈́ڄKFźgj{m6D@\ZE66M(JpT2 j:ȢlUf6) @x)!XQ=ۥ~)Øq1Gl3*XpH*O)4j[q<+6 m•R__ {SAu(e@r#nȍnA7vVy:H{C/:UM|28tuWq43E:8H{8~Az$m<נ;:HP$tt.֬4G6A-T Fmtp8Ǎ}Az{:A+, ~5>+x)vڪzpT8e [Y| pPFO>S~)bU=CɛM6 vI$v!s6.MPwm::FlfU<NyZ𔑫GB8(HgsytYZ?%pU;GAZlVX沸$kAZ -ktGbP7F=*D GaiX$o ޼?>i|`::H:Zt$:H#W73MGdۜƑ+tt8-Աץ)C%g>ӷ K8(V?R.6* 3P:v:c5:MGi5$4+ 4n::H{I'^,ң,מ/RqetPKPL ҭ#fHMGǡ`3Ҩ+KFǡmn,/Wz qIt~gճ ¥[a]֪W.16g*q%ʾz XiѨX4:8dZ.#[%Azr&/G!*LR|;d+=N[q4vN?KgB f4V2uPl3 [!< dsR㒗pvڴ#Ҙdvz0|C6*=7@9?[1>T8ui[y&Z>OipqMGsAzd= t;m۞ ֮ -uǫmi8֧6}jոx|EO:E/! 煬Uoa ْcp"::h|eN_LwdMGi09z ½$؍p47ߍ{ю bqIhI_PO Ө˷Yp ]T:iCYg؈J>O{go~ϥj48?'(~k*6/YY.{ ך}8)P8ڧq7R8-FQ5-6jY}9n3nE{>W`G(R'"=ɺJCŇBap{}(rҳ"),u3MGӲ`wQqࡣߥKAT`-dpq|. }%)?g210n::e ,>Vc_"ۢO7Ig(L ? kׇE6=̐ҥ墧vn~C7Wz_>n(~H&)=2乳v|rhw]KIОF}!s޲th<_':/( w#ɳtpIǡa90o::mݹ7 UTYb+h3C[ǯЩhݰ2ã(r3RDA`]'1 "z6#}xc.,gGвz3Zz-JT&Jˋ^v8?v݇ΤR]۰u+OE*[X6b ܫ"4ɎzbeidE&&V< XG-gY4 fޑFN^gEU֦.䭈D[qGh#N_V<&[%*驥1#هT'$,A4 .$;1í"9b4RnwTuR~;fPq0p|uHQHJBZzaj:Js#$Ϟ$Mw6ّjI6wqReKI(>`XiSmM&¾PsgܜC=+nq]dG΃RГ.)$G2;J tLuB>#ʭHM0 L'i\8p2Do F%N`>`mϘ OΉeŲ = C _H:i-+VdC4G~'soԐÝNefّҟȟl~;^[C%|yxRkz+-\V+Ѓ[ACo?N'GЀ2x:Y4j})/Kz(IR?ht0'ERPM"#̤ųU@Jt:{{>iVp+Z(PގRo7-y C$U y -M1.-xY$C " PX]:>OGv8-ܺZeз;I˷iM+DE!:v8]9;ZٱiAstv8ƛF>pBG4:vI+5@'ɎMk-C߇>8NcE!RRDQNlNe'(InM+_yvݬ_H eƨߧb(<{Cwu:)ngp.x9 +y)6F?8p1خ.8Ϻ7R\qN@['p*JԚ?GV8\{m\8ydpxȒ( QkPAt8(s\v8]edǦ1kWONK- OPo89@?p&toztrwv]&+:F SC'ӽn4!H-?Ne1bCGte[8;5koç~QwWf8+6=Pc-ib;NOK> ѷ#誓/S:tv8h[}::{Fñi0vBp ]ٴ `}*tarp6dg Zv3e, _g08- -a4 WTNJ=p5Q/#i`4FF?tv8{ppK?wv8]'Dqt =}(6H(w#e EE LoӄдZtvlIF0f`}=J7A0v8ʗ8tv8ݖ^֪vp K=Rlؓ/Y9pV8=V]5NjEڡi|ыNN"S4UOS:;o6q橯#hKJS]?N2C>NfjsNm r=kٕ47{㌳ }Ȳ?Iv8]1QΌEKI`v8=+-2vߎI';q롳iYԂg)iI,cߜ}Tss R%kfӚVIȎ l|t1pu}z@kWzIS۽&-4*;n{;2gڦZvG`m8B0̳ MO?XYw0; )KpNtAsoRqk좒/Z#LoIS-oETދJ42$GTitGNSugGB #dQc>pVz_ߗ"XzzV\'>%鎐AUe?ɑv,E'w;H밬VGO=v8կY] --pS"k+GyJMuQA5=2Z_=RFծU9ӭ0zvV3:#0MGiַ:Ύ_a4t4[Oη,5=-<7<='Zn6:i:m{e Snu0,i8XJ򆣂 o(vyUG u[s*B@V?8~pԼ_k4\Ӹii^SzfHiW3?113o:(WgGpPz ]MGvz7էl::H㑪at8=J_`MGiY~p8ڽC빗MGiF cVwTɾcRWsaz/ۂ }p:#xB}$ɛ&NAzdS\p8yMҧ=xg#CAx,DzKA˦at:uW inT8iEi ,pxvMqs@iQˋ `rpT8ׇNEKAxgZtI:48p%[}nŁ=6tQAOڸM~8hR+dsu:fa -bošsQ00Qqb'sb}k//XTM[O=+nv>xtZnKΣ\;vڶ־㗶L,aeu,rߊXl]|}Q@DM[]l)4$e+󜑨8p&'VʡGՐ$h%7~h8p/:tcPXhꁃЖ^KJQ $2Rp3Fš i^\+.X[YZd4/{}__ێ8(~E0 A mJ{8șM/*@UtIMV84xv{QHHRAqӨ7'8tNaIǃHbR룟0ztr=е"riݮ8^ xN6wLm8vGHDš4$CZGG>#:H(\d'bQ/*fߠ޺鐷 Oыr"u! G]/dC?et$!dYAyCwϮ}(w` ܰY٣\ԧHc+"qh3iҟA V,EB{&#OMi⬭b4j#0/*|'as`s(kAzԫg-~AGhum>a?yup0mea8h}p-[8Ј@pT8h>p~`'2 m'6b3\Q6;ftMգ4"cݭ~ңI.VovK+k>|+wyX/ᢓ D#4'rnzQAxLOpkeoiouMGlWDb ]<[F 82ͩ{x(g̈auLuP8tNiWDp/ Ҿ(AmM8`[=ttF"AkA5Kv.> H}nŁ5\GMR/Z=cLAqhfRIHˆ΅B8(tC0p[$H Qe) p^ij8Kep,M3p9W8sso2K4_^dKUapmO{C{@}(t:CA7?}h4SKAl[ E#%Tru|R.Cs5<'~]v6 O{`0ʇݝ s&~w(.ҡ Jr~t\"tBttjF‹Q4su=[Iila4"ٱ\FatK4b0h@Ƭ6/Z9*sxng7]SpzʱDj]`վҩ0S oVhQatYp$y@$K٩0,M?0xnyQ(T;RPjpz% WwqMI?|h>pzϠr2::F"F%ql::FtIi.kL{V0zh:6VCiG򊟫5ޜ [pKsn8*FS'h}6atp(]R!}8țGjyatvxشyQW in0ict9FTyX'y atyIsu=J—bNtK)tƤ0zl;'=N\F`95Y:Þ$:ֈ4 CiԹ#b=\XiQpK(Ώ"54pZ+)zN)qK:u _ω k}pPl4h-Wf_h}JŠ;I"#UeQ=a=ttx-izW@Q4NF[W`ݧ#uZx; lT%ԕ"4In o 4!Ixkp˪|Tϗ Gh-?o c},Bm垫.SYzutLu X"%z3\$ QRW< =+ƎE3x^F/!f7_h0]Ni}:,>Ws- ,gGGj@f0:c@겞McܖL476tu\4q: P:)F5]a{t;D Ewl6͜j=ckrt%ϥ`(\4c"0:USaDXmѠ0T<$bJyn [M[>Ʃ0䩊7Jg1Ʀ*iZ/3(]l\F%O\ TfPr+>3>s(%ؑw h/cS@?x4(˹de>F=%r~\u-T(̹,R2̑n8*nmr:==hmXŁ*&$ED#cK`lCi0. Uvx hPBK }Oд-с* .8iSap"pc GѤ xgdPzZz\F[U9|ȋ\Ox" t!Rѳ7a=W9h2 =7I,ꆣfKbSmQajd`PImCƎe1456F#rozBAn+ V%}* . qRh. s\ ~J|tx ~RjNe b>']h"irjFғglGIVKN#)~_iՃVIgdv`@:huDO2>fObo|#ׅyՋZP8LHkpPtILٹ#=Wө,4.TzO7 $нjtP0:X}OᐕJ8u\Fu\hy-PI8Qp`$:NZ;sutEIûHiAp jP9\Yp7pWx_qtg}1?vet8=8G NSC>&,4F:QC+Fp8]k[3:8}tYgtp8P(T\7ۨB 5fnONKbjTr"zd̕+hBu-Mt%ɋ.,9B ިp_lM{.^浉Ԛw'Ɏ-.#+_yaA:_ ׽(RVd-`mF/~8gS@ ?z=9ͺ]jO߭fe|'!eUrKӝ- ~cu+T22uB#_Wm*Jcޑqj{IT{Ϝo!{|8G>_^o;E;nZOl"捉)^VЭtC >tr ]XRt:;.KfAK,ӷ&4\0zybHqh4lULFߎq}EA'ǡ'5} YjnSMi.]mlh#hf;ާA)@h{Y0ҋJԕYN9aLKuYy(RUZtvRG%;oM:ؾm0aPvڶ0V sUڦ@:==QB#噊)ѮNgG?^ - =|tGΎ1`o⤣>Aj?IF6l(Oo OpVCR;1s+L~#h*k/ݑ[-/|_GoS01ۖP=i/ GraHjfdÿTKa,=w*mvv(\r8 .YRsENuߧ#Oop>[*"KK0vU'oCmpݶIa8W7h6"ǐ# ttU%#4ϊ*q?aL@caXHd6܊_h M">hmӪ;Au6+-qMTD1>F/TdBJ#ol?};m6IھYC>eWNoE)Lk,g۪3fA7e?A&-0y KZZgEz!Z֪oEapݑ8kcsdx4jG#};^TPM}9AoCQa4F{fgEiuݦ[~ū4x֡ؼN`'8JGH9@+qnE68n9s;Ɖb֐8FkG>N\<At{~p=mAnjz!oǡזw~}:$[̎CsGx܎I t1 <AG6ՏSr:;l܎C7.C#hq>ϝA[6 ߫qh 4Ɍѭo̎}+='ŁGQ6dFRx~9vAcwlAgMFj:9IEJ|[fG& ۷G7)`ޣq%csE?/BcYA*lƴ$Ź$[JqZ84ɀ6YJˬ'ǶRS= Ms@8+n\8mh{dE N#N1)Ne2ڹ{Y:Bt~Jറ1x(.jX1!ɪhJOeiGͦa."` ·[68A"12zb45JA{8&41?F"ImmxGЭaN$h"KⵔpVܧ.tV\5Ki05zj|I8Av9=0(kF>FN~;5H㴭>.:KA'GИd*R?IpErN BAmxTv63tZ?Fz4Ύ~MtfoGeVcX{8ƨ>˖ h|+dCp F[a0v/Jk8ASGxI@Ta$(#{_=R:: \ڦ9_F >5N4oHCbMGw t^Cg}e[Gϛ]=phY1t>Gtړ!O~8FBkf#CcDFpړ 9Hǡ+AC{EȞ ytp|iGwp;-YD;oNK}Ǘ.4# uP0fSGElC~A:cF#zg ]=`=ܢMGǙiT1l8*HמMep;DgVC[4F17P!2`G[Ax j'#6,bڸ#QAvelx{;Hl=t?OǡҚoېw ,C5CG镵`Yzi|p&as]s?w+Hׂ韺׶շ4ebGۭ݃ <6e]鄃\M,c\}G@ gGpUBIX |]dv/—p:;n/ty:HuԭV80:WaKAXZ͖ zz[c[qک 5VSmpxg[Ol?/aAXGӐe .tuGAzdB>OVFwYR7FFU3h{kaӞ8Үc6 YJ[?A+ mtt8D DLE)eFE |ؖi^?uM˜N3 auD'A7V: .u]֞zC["udAD܇)|p`4)]$s0ݷuL* ʲY =tcQq!usN0>-_XO6~ Qro|  ^i~Ӛ2K6ԙNMu 4]StowXǛfAz>Wagv1f$ttSgޝT8& ~E?/aI`ϼ\ކ~u }G.aS؉i`k \%eL?C[XP,T.TQ7PK)?zhMޚsM gnteiY)dcҹNut8rY%):a)<5 G$b80B;0XD;ҫ5. xP ҥ{>snmBw+Fǡ=4$YO%*]ǡ%0Y7Ng&yе~ =gѠ?PG4r#%Çc6Xcq脄nGAn=t:Ət3 6V%QAXz<mpo1Ywz(H&6"gnه4= ]r؊ -]ҭ}2^kd))g>wtn{,&ߓAHpZE٨# %- Fu|"ҩe]/`/DKtP9X;!Ai2Vn0lOiXaMG4V8N::FAeQt?-% LtATźX6qD%Zlʾ$rI)m>Oa'wvyai =~Ao^n%t1Eחoi-2P8)ZkA0j eOcר[q4ZAn L#a yuR>6啙$d|L vn=7aoPZ.%{ ty*z{Vdtt8~2Y8zٿ+_'Tfv8('K*JKڒd}hJ<M-CwBV;:t}\ύt_(D8_DyoŁ<[qhNǡWݤP8/!a]Rm~#mִ݆:e̵ V8׼ڹ5ߊ{ne}-U=R>&(Nm2b\ԽYЅet8h=K%w&:N QM^fuwt8]ZLF5ʞEnGw]t^ڇPOKoJM@(0vPrJ37};ƅ`.ӟvQ뤁;'l+t8$a}I\ДV"R{+%$Ίb7Od ;Ș$R8<0}5 _C,K g\b /xw5MB¨uv㤜=AY6:kH*iT UApcWc7Wkhle%6ԇP(2<N+njAlGSL岸ṥq-H)h ܼa#TrsP83-?y#KCow)kCބoi \K[Gî?ޥpxe.\_ H.Yy[^g+;(DR[TPy>]-\a ,}l{fpT8]\|8\ۓD8FwW4zt v8SGaT:0Mv·B1Dکp:8P{ 1BX_AASaE-ZVj Q':gPR.Hmw+$pҩ8tM1ett/6^q Hy_hJz/iLvkdf-#tme2b <N_Ňpǒp 2XntFAa/=N7+kNpr[itt,2m6.-:C r,%q2y9V N3m'sݣW>qZZQ4όУ u+};.([{iݵ;NRKIaIA:[T:N{8c |8^5=jc!y8HcKtѻ/dY+Wobl4̗6BDؕ.z̯w^OHv::HcWsk]/&iD3z8޵vfrvwt8=6F- \qvU{jȹ6j~;=箤qhE̙N008%#eIip7H~z2_Ggth{;P8fZ5BQV(]Op:UtcSƟBg~(Iw+7QIDSA:Fatt8={W>OinUѭ0::3z+Jbͪp> #ٌ$c=ƻp8}@Es8*^]NmpWҜf ϖK$  L=n#y:H# .I4xͤS}8=Qou}җ4 <>pPF+<:A68;FMd fne7Hy?O zN\ _܆4::HoT]t˲|[ ]r [Bq5-)8=U^i0T4zNׄ'Lvp8{!-N5iT.&jqy8N˗u\SQA1u=p8Io6tNq?Oi2# pz2v,An[IWɦFŁQ CAjeۮ W+A =I̘p8acaSv8t)eQWc?pr,iĶu1ݝ񋍿򴭼^&I8J@y8T*vU0+$ӈߒkP+s ƪf7˻oӣ,N\d'SpG#Dg]U}^&Am7OӘTK7:ҘB`d+n> d'լu6\G_K8me'T{ti}:z[J-3e -l֑(j6t8J^=yhb ]ڰz^pڲ=mtfA59iU@k{B+J 9}:HOi:A<4ENz:t5Kߎѿ՗$EYg+;Hc mxBü>F KHC>BWoU 5cADl ݃,]RWV8![6)^x;il/M4Ӈ4vZ!r8dvc`[twȞvWma ɯIi;}8딤 za$};Ho5<+R;:ط2h3- ޵sJY/'4&zN]BpxmN#PFo+{񍲫?iK }Mvtoi2sQ ϥidKA#Cjyd_Oӽ`$7W;1kmFҘLt8LUDpΝ^ fC0f_5.T D+ɝt9+7.Yi 'f/}:.]ԗ-ͭ k-c_ kζbw+)m58\ӡ4v݀H4*cGpxa:D7PFxW}*^]\u FmV8TMQݎ靺\ҹRAyN`|*G.w[AGHEiO};Fhn %~otkS n;~H dkf@- JAGqN ?68Hnb;%1HAet\m6NS:zSpp)b*}:H˝ ;Œ3Dhjy`ٌ>Jτϴ9n]3 ϪtpzϢP?٪}:HcPhCg*)t8"pzst0yBit*zB [=e[ISA~RM:EaZM5쇎$4y GYfgY/ͱc͖VFS\C.״q.sk#ψA{ٛfJ${,ѧi (};n;Y-lvO+p6- }uNn5)\̭xS5c5t8~/fӇ^ϴOr:H/{^2.q)p8]SCiLpSHvns.I}fcO{*%Z~[`L*u=xi,WV$%׷C%1&ɜUpQo~C?+ӫˠ 7H'M';P8GMHp&(P8=s_ʤ}:U[9egsdW鈝Upum9n}-NvE,S7ײ7}۲ m*ᕳZе2@Akɒe@9F9J}Uv8#m0PYK%;pxr%w!D̛V^Ș+&NuF@蜩gPl(:<wkz #gҥwӷCn1hF[mx_]pU`MO ,MV2nC%Z|[l;C};Hcmipx|h _؅9Un|ɳK{ŵcx+}S[~(HOU۾y6p8]tJs܎~w0Fk;@0`F5PF co2T8mUfW}kM/YiWi##iipz! h*4gz|VOҘ~@Amv^~q.qW*|ܑ@4J5OK'%sb -`t}Bӹ7t+EZekEepv,i`pzH) B> [irOY[8V4FK#7g773|*IObdpltt8=zQpz]9_,s:HgpyK'9^i1r8] PLt=kݸ!.raLHk/vni.״q_y=w;Hi\W'>Ng[&4g]8~ёF )+Яft[~C=b 4%q fA҂qǿAzMp^ez}8Yo}q305(W5:H뿍m-p%k[z dfP]|l m[BhY@,,%htG#ptז b6-L_ǥmZ4z`'FiVS||8H/h`G:H,cGl$i&ѭ'+ַxz(. ýA'a6۽5gÅBջ]IAxAܰk}~v"~pt EsҳLZExZqczAgiQ:cbOrSHgǥ]Nu8"*-2;H{8zuQu[,V1|'F7giН\zRn!=pYz֌^Av=DZ_itr^GșU:J:;HK5ҚAgi9t89qQGI4-X-ҾZoh5 0?:HW<>7HtRLdgD $8gbJ}8H>;lāuçT2:Zu KϢL _Ǿ~Yϟ]i'R֋2FA@*Z »T'ŅaKj?C0sm) 'N"ֆ ΐpV\xhTn@vHE-==FLrpVUtιƥ*.`,^` C^k (;&-ῆ Ӫe/i46IqᣋjY9#_ P];)).P }Yq v"99xkYeSs2%ҏѷ?:Q ܊-)?կᲽeĦ'Å]}ѲûI'ǥcpm =Em*xḴ%04tgmәޞlҧjgӋHEt3 H4ҵerJAgǥsg)tgiOw|m~z> bi>v<XsSpӵ+^C01_6ׅX#z@2"| lڅ ~{7րu== qtjՃB:9H _2;F涓?5Fpy8Hcat|q85h t\Cb iAӍ>1>X$.1=IgOE(HT7 }G:f9 =z@ABp뤓4決lR :;H^z0]?O| p8nX4jB%:/9Xz-=DsjzrAZF:;H:b` :;Ʒa=$NA4#׺}?}B o/ 8+J8u{k [uDY88_Å^VxM8TgFˍ-pr48djJa } =WS jQX J4 -5#˪M/r¤ ҫu43VYqatjg#p>6aޔ 31P\f4&tv\zi׺SUDsgu3ூ.[n}s΀a4f{L&Ƙ U%رݻ.)ࡷw0sU~Oi:=<{ӆOٵptdT8Qu=[ө$0aijr`U[9>@|b7:l]  >*upV8\vQnjUs" =V%츴o1\"sz_8Qokk xAl*HK.$YNn+'O}^ &:Itp=:NgGЛe:MSiBwv=HV,=&ZU1ފq)u<A/MeW#ԩEIa06BfC4R'h] ]\MV`uetfa8p_< լ~\2XҒt}Lߺ41͂A{SΘ`,&c":+fa#Kp$ \Yp5 ہ +EMehIzAwtv]L^ҥҷ#Qj'nZXpٝΎC#te?#hvqM(z ҍ;;GU[{Fck ǝzbSv ) M#h=S)GӃMŻe8fiRz$\% K<"_=ᅡ(ٚe!%>Pk7SKe'F[*]iIl$uEgš_a;Aok"/a-PH [c̎mbE`TMpXt_*QJo-zv)Za4r%F@yGЭS'm*<, c:Aw+҃Nda 'A^uwЇ#hoܾh<F#QUכA#ZysvHS?lx(<^U’6z0&ӲxcU<3-:+q^[Xx8#qhD/bB%]ewr\y_bp8ywx(MrFɑ>$̓A9\6;}0|پ%#tJ4RhuvVL(Xl؞JGo V9ΐі=_ {,jPj-ǃ^uu;d;sϭ#hfBȁ$gE4 dpX'vp8܋ N fn C2_Z|ʆ`[՜!|oUMrΎ}>cܜef6 dy +X\Js^l6=mL{( ƁUg3nEs漢0&E{8&=vGЈm;͖N/:r:;FY)~t_}i[{8=GifۛN;5t4x1oѨY6j Ύ}$z8\?F@8iX-4/<};F]"p[0 T1ul5[pX@x+.ڈ=};ޗqR5I#^5bBnڴqF/mںvNܪ[t$T :;F+]nLY1<A5R:C0V}Ly)T. iu:;nej3at"_Ltl ipXjέ; ;cyd70?I'^|e]kq}߻8#h@)lXZ:)};uL4ƒI-:;>2WoGhG>j5x9.k.Rtfh t'|Y#hԫm(unGud]߫tvMq :; :}[?*خ:nr8+/==mnߎ=`]brWv]k@\atxA)ݪ8tՑ8Gٷ"`e 5+sRCZ'CB?}~A]Ί c!XL22ZT]## pl6FP2W955}Z).U$i 7%bntR*'AB[qhDlC%)gNA#:417[[_#UuyxTy)L$SO%Qql0X<9Ws8mvs!`0; O/^vVӗA ū7hpڛF>tvc' ޯAhVuUz;pRXXǣjcRj".$Yn ^O3C0 72 2CHt*EN'8- v8+$4݇#6*=|O蝒Ӵm#VRo'݆W"=AWf!0a~ =dhAJ[VH$EIc+ <AˀJ{y_1.r!X@h=kZfɒPehbY~aoGЃ$L:t[Acߴ::Ƈu]cu?Ȃ4vB<ˊw!Yg57d_CۤrCU!CVzu#.d4" a! F7t.ZGpM}t'-x8HB3Stu˺0Ebl9A-@[0ZVV^hi`4ǻI4^l=zl_{80* @ix`D`,sog XꚺQf {{`CXN&4|OEЕu]OG[zf=0aY:d 7_H_nl>F 3ZS^E m_c0jh]2ww:)A#˨EFzu:;F.WV||8^ʬpѹk-kIa0%mg?$)fv*pCsS)4/gXdOunevN@1Fn  "Y ^a x!]u|RCf~WCr;^ ekrMe=+>=}{) >C\Zoe2u+镣[UC\N*=s0Xnr4[_jm}8i4N]x[ ل zsǝA=EoT<=Awz##[v v+f`=g 8)|ۅG] ڌނ#h;?q& ! qcHmvtbO}Oǡ7o*-m1.8)Iܴu5^ ɏe"UZAvnGTFpIIXP9Y\BUxxy޺HMg;`B ?׷"h*O ɞ8Ev8wxH+}Y/σd~ 4P/1ܩF6fMG:A[얺\tv=a+t{gGTƜZGFpY艴ގǐ(4R$uZ=!X SW?ɾ9W`(&RC>,5ҷh#zh,J#hD[ޜ}zp4/t,h (Ъ}l܊Mq)n/L YItĆ's{:}tZ#Em|(18ྩ; aшIq- UgKխPcpE_n'EкLV!Ti"&HЇ!`®*Vsz+lpėΊC󒙶g7Ztrݩadǡ-\)tvڮڿqh9.Rlya8,*Y;ZaыDrjuC-XgǡkU|8Ц芿9)^`̑~^_9I'Ź-_ 8irh̠xPQwHBȎh WS,$78R[A q8im&G4eA{gg"YcOi31fǡ")]yFȎC{3NPBat/rFܒAVtv\F}X2Ύ&;ʈfIqgS޻Kq2m-WHYq,:J#%}н#m7,Po?fزDYqAjs̱cɊޡNK1jѷd?zM`R,.`{JK phu t8:zQ0AǗXP8<ø>A1*owF[Қ6JTye?N7t)\egp_z#|VKu08]6ivf?e4^41'ч4n֘}շi(Ztȇt/ZsCA8ҪWA sTB] TNc'Ae\Y9:JL u=W( C(A3U m}:Hk3:Oieˣ$YLQXQ>Wп2RtޫP{iDRSuk>>%{KNJsPH1}:x 4r'@u:=_xv8$S0kغߧNZc#7^{og12mc˂=  r꺌h>G΍咊?ti\VۦIz ~8HcŲشh5ZrAQ17Z趤i~;63.KЧcq O@(KcD%°Q  R[F2c/PW.a>QF EtTWЇ̢gMPγhfp87$v ߏ0ԍBQVV2~ 6֥t߾鱫M >ѵ34pcm}E};H2D+Pn5eNͷpwGT8vQm"ճ-߿:F xL^z|KAqT<N 32?>OFup򒈫CQZ?ӭp:wu:cAzجSi̝EƗT>s|ijs2jTF;2"݆͖n%^/fKٔH  5މf4FPM'&pNZMM>>fP(\b= =/o#ف~96qIң.cx9_#YݧcvJ|)6\ڊ8E6< L} ȶ-a *_TlzM[8 ]D(=ϼ:t:}:6+qӘtl 7^+g+*A6V=4uqOԥ:=~3fo{]pd+AIפOZo9A:wц zEpcL.}*6-Y>P7m1ÕߠC #k gs;H㞛S>kvqAw^w_9Oiʔ&iKK@_#v6* ގMi m3}:HQ5w`}h"}8Htf:b󷃴h5zL 1Zg~\>S@{g>NʶNUg,wvT}:Hcxl> Y>CKu+65`y 08%Y{F4chdSVƯ(8/gת -t݉h 0ӷRS'"]fdL5!`}ᡒ5Nj zv4btoӸ^簾[};Hls $z;H LϿOǦ9DtR p;^ n%_Ø&}MTT0 nz) ϱGk{ñl]M)5SAG6D% dQ02VaԒ#DDm-kg,FJ,3K}%]ޭp$W V-jpVfDj[3SA8lhpYI *D >ÍѨzZ]'p6kY&_a>υgx+\#F&}:H7j׿ Ll}I /V>S|4\zq>Fgn Az腱𯂰|֡v)K&P8]/)VrЧtO6' (!վ19,[ K;V1+KZe&`P T{N+yq {jtCeH2NvnΫeߧt)erZAW(R/nDFJz `Gr;p|҈.8( FHk$ iC6X>Eٍ?ݬޥU8Rk}؂-hor烈@qM,bUKfs6?oi4itmh$4:l |8HKJ;p;H[<:E4^|fNsU~0}$vIGgM5"ƵVGᦻ6nRflַtF*J׹|iʅFQ|5$() oׇܶ!,KAexE<#>u%Yh4KA8o),şmFvHtzJ & e. b<)t~2"+8lS$vyus k }[7Oǡ{[6$}?ZRqh-F޲-xhK1f[$ Rv_K,H`s^y.Fࡎ'Cߧ  Z͖"_. o"%( KY븞\8],-[>/AZ~XP^scv[7*LK{Ojw =֒Yбpq?).toa [i'gp=06npG{ uoHQqV٪_KAx$c e W ԖĽ?ՋgKAJz{vN;/ G+am'M|s)iCA҈0:GV$]ttε[o8FAr #>^Ӷ{+\4xz(#SAxbs+w/Ł5IGm; WM*&o ]}t; gg~p~XZ}%ԷhiZZGni߳zA.Zhɋ~FQPpҗp}/Qa4_i,\ wZva g[^o 9R~_&~e7:p[@>,cϞ3 -f՝#]7ܗp,|зp$\S+F4Rr1_@XU:lR^ …wmi9'*4ҷhdӯҽ 鄠KO۾0eul:o_?6xEG>^TԗtBZCa4NCr.i};ư-E8pF M9طa6ڗܗtA)ZavoѲdY ݓE\=ۡtVYUglM[F6Zo0z'6pgI}dKAXh pTq)ۄG;;@9Ѻ}:F oitpNM/2[ҜҶPCpڴа859S/4?so %b v:{@|9 ]gCa0?5F H*g;h_`pAX}*o=S3@+Gi+Lhl*{켷Aa۔ͻW{ C銆1b:piD,z $Q 5sJ:8HXALty%x']cR\s8 Ǩ$wJA:M3%}{"]и &CKM ]=u\L};H'h2z[Oѝ[h~e%mOo[JiZkw8*ו2})3Wda /~pp6QaptZMZ/,,s*Ц[q$ctN 4H!:8HW}RwL=R<ǔ{/u< j0:7Q(]w|CK~Jnr3Kii*رJ6+-g;|( 8ttNUBC~qϜAyLpiGbʹ%^eK+{( +L|;H#"RpTz.2M}Lp0,!a l1w򺶵[AJKQlVSIcgJc ܤжikv: 2Ҿaktp.I&hDp?ӷ33$g_s+|í # '<%aw~PoYזE7_8UFh =cq \G!GR Pl81m{F˜m/pVnsj{CAZsuIp q׭p8ˌRss (SZ,Dި ]1R`G qXrҔ_".g$pU4\9=KA8`i08lbþp(ERMPƶE=NO5K)}:H,-ö fk6N}}:FBQU<=%H{c4 pN1l08jMŌ۝56| [Roye3ҥhFp83Pk#SAC@~.Zi{|*H5O鞺&pZg6Z=}:H#Oh{:H,N诠Ob]оDz0fΔCr)N%SAaYiҹzG@A)Z ֽ<.Eqo ȣ#*FU$鉦=F:P"hnU~+CA:UQKmS>k\A %;R0nYZhU 0l/Hi(-[AI^N4=YǵTχ뙵?uYtl`ҳx4H};HT J:%;ESZwl|(6lIpnzmR2C4zlOU_qJ =66u ­&Zs)6lɫ7|\o隳"V0^]Sg͞oXx6=ox)eA*B0l SRc }!Aǧ%"5S=U; ٪.''.4CAvfWt8y|GN$U>֦pb~!V!:OJGlCu#+ب"c aS,骱'^|*=;iZ\HAAy.ywFtIzȘ{A˜ T8Qf㡅·EML|[AZZĄ ]H>׆iD׏'Sg=Υ9+ cq Om@+`O8GY>#,P Jt[b_vlzV+JIM-slG{*kRζ='p7p} á0sЧқ-AZj4PrشW#5ؿ۱rךOr:H/_"^:,QB|;Hȣ.phZZkAջL ]. tlκEts҇iNAgSo,&eT&ě%MA6cf˱iASu;65b),) C08^J[AqڥRZЧt^NP>FO0E%5rAzf,R /fEZ]o$_1q\t⇀!|"B|Z.F{PƼ5(_Tl8tCHg n/騡 +:1yC}8HKf?׀Oa콊[Ae[|@8i|9dpG̲RC ޑ^ ح>L9hMc|)pRa}M" rkÇJIJPl[0p6'buio:wŇ4S|HU>o\'j,Na#<Yҿ2I}R TlX'ފ ᒅq*H?1q%}:6mSOy8$Jsy\\czx8HȣQpWЧtO:j~[AxokWϹ #SAa zI|ݻ-MXni|~灇tާ=HviDWXl[$+wx )2/w:gayASrfvu%NgG1NG[ }8bV.inCS >9t8^}y h9%W0":ntvݨɩ5x#ewMvNgGЌ=ľnG>=FcY[rtoߎGQ'àzCLF4&ſSa0Zch=, \/e=XG0ԩtRegšcM"`LN(_­`k`t~݊밯ՐB?A{Jaq}A#Ί嘢ZtRV/YauvҾO4yV$;݆4mXagX6ySN(OˮpEWȫEK%ZCq`qX;Ur:)-';rkiK*q}݂@+R>o;؛cj܆CS#]2ĈC'G&Z4S.;E58Z>GDmB箸#RȪʸ<'l\qm!IoP.zi}>~oA]n9/96RglHqvt'eܙ'M$L\Ƒ ko_Iɑ[kb*H3#C݇t\X#Ưu\+)Ԉr=ĭ |J=ok7Qvz hEvnǡ}3qv3tr]W|7pAFK߬)=%oE2tp}K0IVF: T~WΎ}9v]fa;FOHRoL>gގ\Zo\Ng҄ODًΊq W[0͡>I:F@IK8p2} jѧwJR:UL<'EвU*j2ΎyKx,[q`#utR&()0z|j :9;^@>A*0cLIBwiߧ#i=F;fgEH@W,f!G> cqq{!`P[Um 7f>HK' V?ן}y!9 b0ߊ%֋ˎv/unOGи$G3`,XUd1uketvh~vM7 "}9؉Yɪl0k utq=GЫu_v\7qΎJ8]A"b]Y&@+r:;FOڀjt#']};vIFo#h0 npRXCip:)^ᎯaO}+& Ztv?Z_[r]ֆAl9"`Or8+FNB1;v][OCalF :2nm_0nAӒ]t:;f uNږ[#@-03"v` aG2vRƅEfá14BcFQ'Exa/7/3]T$Rz~(.oV<>}G}*&hܬ=FȢ#:vv:;^,MY=ږ7!:Ag M#Mh̓r ܊/E9WWd5ZS}*=x;tNZ_إu o9u:;O_[fIN8#a4:Wm wEfY~8.kJ:Fv(=9InKYMCeX/$ ,/1^if3B XJY`9"nJƸ:Խ8:WЭY$Xt n#JR{<]U8c1yefp̖uU1/  SceA;Ed' V2|?IϹxųaL :ak05+y+n; :BhEނ) φ` P4G15 [Aӵϵ:afpC}t9`4*QpChƬ9:o<>Q\f`kB)MZ<pY}`1{2ak!t)٥WqX0y"ex.AJk aBhz3n<Ƅ¸Y}9{,9Y !tBKG5g4WbzCtskB{WS`>[06euAXuBmɁaԡ\K7e&֔d0H . [ #8?m<sh\6NHaX,^Ԃ/BQhb^lVNw@\0bs!ks:=+&}D,56TMnH* (+VDî\yJ,͠]6qv!?P/QQIH~}?>\/?_🿠h?o{u>}}yw/?>/?~&?o<o=<㳍OG?>|WӏDZQ7_|O3k0 TJ!`._`g˧4IϞ_h90?C=!/_rY|GOy[6?e|-P6OOՇm(w[MX&ћom-FEԭ#gizլ.cD"_fE,HMk%jFdE4gA9{ K4lGY%b ]mZ0q*T4CV!Zf?3Xfi؈ܔ{-:-Q_N!^3f Y5"&W7OTA^OǘaElȘRRO{EUErjѰk%jȥly,~J%4D-jzY̲a +VD"ǘB0]⾣ p2G4 /Q5]M؆ɽ=D᷂͢T@fq;*t?DeS5ՏBC54Ļvܩ:=Uw4[U1]0M쪡-bj:}bE)N TMk*^Ρ~$2 vթV9S5TczTM ԌHC542DC^a6=wÊYTF)^K,|Pjxmt/i6ڡ>TCo58K/USF/Q={2'P 3wP5`# MިjQfΡ*s#ݴ0\\)̤_=8Lu|=g+3Q:4/R~-c8F}z8a޷}adc>V3A4a8\qXn9쳳"X0'/ҀK*/r<h=L[J ki2E,vN 9{e;;1U#x2ic!p~=fY0Zbj&m=# :?ChHO߉ xDyC~ 6Nz0ݯ8ޑ銞Y&m=N{zz9bʯ&./o!t :ECj) .भjig!p )N1BSkCyc~!=i豚D'_Lm<θy6J9;0Q}F/L+N8\1{VGDxY۸MqR`:^XoWK:i5z[03Kk8FyuYzAx \Gל,.0_wN+=W鱳Oϫ]JKqǦ upGCT: irj0:rB(MEA(52ƙPlxE鉽h#6TcAzN#lN|_:6KyLYOw( Fi]ߦ3Ei0B.M , ܤ&}*l9s FtlNA8Eh=tx"e} (4 hR$t kR8HA=yq.z5]KYa4NM#Xo ]pQnXa8 s=>٧/$H Q Ok(:UfZ%f^w52tu`+I޲\,UNKJTh =r V=[s:H;~.;.$YG.]tY4';}iLP=[R8H[:PO<ۢt #DKGaTtl:IUgwlZҬ9'a 3B"U2& 0  1fҩ \T.߽>YFuQl\t=jT )}هS%,\Fg^wNr7e9 5v}@D> -2F=I gFE`cAF{n0Jsgαh -ßHӞt.PEZ-Hez*^gkˌTb؎O&5LMYTu%)G? Βәb"\b;!9".+x>%Ps,ҨrA㚬z:6]i%kxI;Ǧaq Q$llQXgu5@8(m0tSAu)<itN#Fȋ֚JrǦ07C>qҰ^$PH9H'Qʴ]0Ne3lһԸblk)Fe򂝁pYRf_XWĄ^EAx)t:jT,шcCMʕ/ \@6WZ"~XB0mJK'$FLnƩ @T\2;6=D X8H\bصƠh@:H($@אabé |IxaM'7N៣Em+Mbzp'-`MGA?xO>4αiTy֥"W&@*77b0C󦿎]J FGձkӌrxFSS\k6k UfYY58HR,;޿'"τ`HO/[ ^_40`mXC(>QaҝW|㮬X<S J+=?Wiv\_ձ0k4;[(]اPRM 'sk;3j~qp}dt=W;ʝړA::kk`8FKDzUADٞ0ׅ3!pU`)@IWw*[%^皵NӜI@]w.%[ߥ FQ#@^w~0u"^AY[fSA8{> &htbO~*X^WPЇ.!sU(Q?{E;?WņC.ЧASSn2I-6~Q"7ah:Z =@Id<. 1H]0K~C].E{ҋcөfA:Kku$A:$47!_FvhmeA:wX>Q)A:5Lzni:FE#8+^kl] YV`]6+GGٱi0:WɀXsM.ǦQ2}AI3A$wt E{Ǧ#뱬,yqNYGźű"A貺Ea<-qF [SۙDBm#@<קc,% |q/DtM;Ǧ#U W[{_ {Ŧ{Z.8B{Ҿe}߃AZzXGű\BI49kz<ڧc3큹s{Ǧ:SJw:ٰ1ztT_^hߴRb}OTLaX.r nԣaIjA:SA8, p`g,jOu999xaqȬΎ ңXVnӒu_tCzt.RV"㡽Ge1_AUz ^g3CрupIaέj>VƳ.' V*QA:/0׫ r;H -`.t%08F}xz*H޲Ѳα$ZR@xKA.tF :gt)^z8H 08FҀQBK^ j\?'0(]X?TZ$:Ҿpl_8ԕ l{9L{%Az:t =w:(H2)xo pCTzw .oO?F4auG;r:a5-i-oaq36}Pwvy8X]㹫hv:_+w: OU:oè^Ax` )Jȃu%xἃ`WtICyS.{D4p/5Cr3B -H#PWej`(r x+H I^a!{pCs_nJ]PF=nD"jsw0[҈W;H+FގM[__O= 'Av5XNĭ 9ڬv  yNiAXGu-Ԕ^p]SJcUKRzm ʷB3vƗ*E/2upc]MwFH[} =ːztlW>˞z)=KϱCAҵZ_ # 'Tl5k xnamh@Ȱ^Cu:U8H_e@zM[A!%tlcjD9a`⎒))[tݷeP=0C{C빏I;VC ˇ&s3r'﷛vR5v0Κr9RȤ4tdp;H$υE+$AWGJ&hm% N&j6nj[Bk a/@%_ -c%zVokQZURZu_T}~l扖FcInaQ-(ldw+H=sҡ OP:O95״AZöpdU; qe_^6p>Up cr)o{\wgUVz[Ak qF7bS 8@atEoË\8HיͿm[r;H'LUS Y-L>FSiN ˎth8躞F#k%8H' >b+ܷh!آ9#ptxM%*sM'a9Κfuqn=2ѷÒKQ7:ҵMȮl1tx WrCk} nP81.O V z˖wt2nu^ww6qF"JCE+:HJS8F) 3ݤ>p/5ݭ r &D _yhQ{Q\O6a}隓h6Eah]X:uWAO7 ¥tT%R}+F6]]q`1863O:.-8H4tC`:rFgiqSd{A:mhuqNt}>hToi+_B m99Zr;HmzV~K~VGZ \$a= 'y0:o&떛A6]}X*vQd9[A8F{[&oQA8J-౔o㧬٨ A{OHa4:E5cVDZƢQ><9.u}QeC8Hg)J4D{҈FhiqNra4&@ĕ3'<MoiKBJ+81q$"}:H"=@[uq-g,ʀ'Qq{IIX)q"A(W$c3EIq?a \Ґ?g^q+HLJ[y\Ѩo̬%rc[{};H1qbrD =F7EED]pEսO8kpoOA8llه6,\ؗTkdsa[e J[Ñi9t}:AL3#A:uՇFA:T4ǦCMqKN:j@&}8HWDD;i(o2R{Y --6)-ş09/._#Ǯ8H7}g+tRƦ>ګvAH":b+S:9qEC{NLQVwt]?SAH]Gn,%Ng㗼Lݩ>ɔ 8DR 09([272A!kfc,:*ʛIeg 'p]U2*H뭅H0ZDT8>+]˰\8H`-tE&8H ؖǦzvl:a1?h0#'teqڙSķtR}+pJs-v̨9>9j=3/ϡb=.9S(/w:HtEpl:ւ/;:2WjʤTLuMĂg SaY Q |CA8.7WiMBoǦWmNǦZsYqNAw|ܒӱiXGM{N `#pM*nCq(,܎)>PMuSVʱ{Tldq()w<PH~+Ɏid6 CJ9}(6݊e]oq׋$0҇:Bˀw};6OKxߔ^ʾؕ(-e1ulZ\sJ|8v?O^SQC ȯװa πsU쮫QaƧp肠Rvp(vTFߺp*v Ms6SN)r;@3&?'X0]n~~NY*K"ftq{ON?}U@_`{¯e5@`7D#) \b]#(oj( x=:G3QC᱓8F)oUާ޴BT oDSP#F _Şq5) \vJ+.}ȶ*5N_юȠdҬx';HclZ2Bi¹9}T{@W TV} {2=Oio-zqEj\_KC5q]qMJ[z[)qzFAz&⋵zt%)Azm=05$ /i>B:5AwM};Hg{ :24 t \BM]nAb[ nņ>`I*N8Zd}\ KOeţ溟kp  0k܆ -_&EjW/qf0.W锥b}T7cr%Wχ>HHO$4sWR}VAS ;fGER}b uk,4f揝COl5n˯YSlzS|zRJ|I#k4FT}~$zGA/'EINp}z}vVd"ގ7]#Pެެg<Ǐ!QyjTΫX3D>lE+ZO}9)RMmOIaz>WC\6 s;xJBI QHf(KK֛"bW5MR8ڃLG)Bop|찉z,趟k9yy_v=qS_۲xk N'G[G\>/%'g{\NBSONr>RGU0ʸg= V\"qm8+k/4N,{2:;fUOw8KU0N[w.+hLI$&i0;;nV;Jg6a_N:i.i:nS֡#.tdhX4>NʈLxY*]zTdvO8NN jz0vgu8%ZVߊҿ8p.oGГ|̔Ǜ>]\onx3]H6JT+m8'W.eD|uqėV!FT5t\ Ovd쇗}=~ϥٖVݷҷpğ~;=G|~qD}eׯJv8m#`^yuJgk|8Կ6Âgkݔ8 y%ˎZ~p+tBZSqގs ]Yn԰ 'EjѦp6&O10X[鹥"K|Hv- qmWךz},e{ _̛A6twSE8S'0MZgGLu\י>WGk8KYƷ$>'G)m O\VsgR)U_wJK#;S@>gNO$yCuGM:6"vi.TF;BѸ;N^јUtAE?0ϥ ,2KI|{uʿw{% rOv4 ƝU]G hQ*'ämAh6ӿ۞6?IfUt(?IV80߆`fY>7VH?&:pW_sq=3Ea4jbSzsqsV@Ru/Dr8)f>pڪ,o5oG HiitH-!ɸ$pz4dpVD8,V<mR.1p7|~;.eH.MտIv[6 14qq8z-*4~+: ='cϹ4Ϋ>rsVpV8,u8 *ėV`0Ҵ!bipKiFN:ʚb]0Xv5Ò&;}]B͍FiX롳iTIFsoXYƶ90xc{'G ÈG.xõ&"s[LJtfT?S}Iͨ ٵ\NRaQ+rf6A.w/sj\`l+'MZ58$6jֶ%lCgSN4xt0Kw?epX6{6mܭw8 ҲصsMEa4'7^aSAa)6; ]Slq|hv+IDꩤ8ȫB|\Æ+&mLkZnFةY^[^ǎ-Ů%q|Hm}t*]iGVkױKji&Azֱ,8kѦgAǡ A's*>sBzoxz5) oΘs }\NIdrڟM/R9 v s< /[ c s^٥ǛG$J}y$O  i-H=0u[i8׊ ]ںһs;MVֵ`|+ 2UKw'[}[A5k8Ҙiqe,T,3BwRnVᝣ$'+>86p\,0ZlEY¦Gѧ G{:ݧcөŮ~+z?0bV/r˂OŦLgǦuNn8mTt 9Q,:CӾ巃l0S!)uU|<aR{ 2:\qlZϢй mn cӥ.X׳UlX;ԱYt)$1^F9K vgU~PlX ӡϾᯂ].8^:JH}voR7ucӶwWqG;ߎ}D%vH:6rafޚ?Rym56.OǾCf% Ī4Q9MYT [t+EZv4e8qoV7܎EkŶ4]wC2q.Vx~z,Hi<;@bT8;7Ң3F&8|s:v3B X¢-ڒ%w§ۥCA'-^۰oe._iFv^׆>owZZ;܎ުZ-ϓc6Qp>odCV+>ptZXsA:L,c.{чU63Οx)2jk_m $_Կ#\Oas[qz-} 5IyoHh<V:Kk8%_9UoH;Gnmૹ[c0fSڛKYV)"t=ɝ%t΂4ɄDχKoSU9ukX79 y럜86Tih-[f ҿCSIkE =Kx~2 Z9q d9~5ˢcdd@6φ8Hgg'i|\逶mh>F}wGt-$K}+{n~s7uWq"PO~8C'IʢO&Vu(1BIJCA8V78 d(]["Kc DgTgP%qWE,c-Ar;HKJ=Җ;wu8Ro#_ј8FRW%}9HwݮAnIBwNx!^>OmHaGѼp_PA_ᚤԄKh UiR~1/80{ UFwWOZ(>f(KmZJWpҮ5(hZṒOm }"GȞVKOd0r"\l͢>x{|RU*o7o—l+}Zyqz qh5Љn\AȲ=Wױ8H5#c33y p8޴>LO -B^f۾0}{+*oȯFWn 3 d>ܫ *¢x[ 37=':H{зtK1l F0ut t/e}j ]+ғʡoRzie0y$'s| u+q웼k7q; l;VExGR& lK ;v'*aF =- <XΤGAϙw uaT :>ato9Hp6ҷBiɽ QQ@p }Bd2$}9HUr,F-ݷtom;yer̃AO:o;a2p>7 uIзtʋ sXhWj2w Ύ-lng/Q`鲤k? 8p]AY?g% Ngqg ckWWAXFoiͭ4WvnmN%N,?4wkPH_LJKWe6ɱc'x;n,rnC&a8n +m79pt⯼i8Wv%Zf)~N.ض½ ~spWMH.ak@|BȤ kDDG5+;_Wpwv]u'}]gЛ3/p]sg^O1У)v;|\#LNr\9SY}9Ho - tOd2ZGp&,{>:>wxs2L#/~pEVz5k.cl'T\2oouj?iIS[h/6SР a4VOJ]MAzHJ>,pHSz,GܭtʖoeXG \ }V~o^ђ%kX= = b6Wp{[(H}S'u(/Oj:co]L* ?h밣I`p[+e]\?uM#Xc`2\:{VǚR^E,P^f@K|'X0z$nz [1c 0Zv!gmAj]$p8/uUv };H#M[JUB \O~%L ,/~[AzT[;0hC$6۟7:Hܢ:Hw=RGз7럫:Ho}BmNdp*bvǡ|SpX'0Vu ]ܢ:TZ|8F8Vq 67Q_óH s ˁo\JZ'}9nm:8KviHrZN:#tj9܎-wl*z&CӥM=`ݿ>*s[ 1\Gse4uiZ=nϛN\AQ~k! PNmpkUVeb\@Aznʠ} ZSX=vn[2SR\uimOfPMz>lje: ;93.EhDYvP p0^{i:y.:x/ zR #ef4j'q'ңw :˺S};~g1*Vz/Po2|+'zao W|G'tNkǁgu 9>[ ZfPWat֭0͸0.+KA8mtqK=UپygG"c^F$uϵlmzKQ ˘~\Ga+a8 k |򔜃A0Oݺ3(HwR(IhvWA_f'y}P䅊0uJ( gvY;-Svalq*< I)`lkh z vΑkc(=J8H'fSZp˨0PҔ>ǯS="<wvi wڢЅ3u8ݓds(%|pngW;¥ ]-kOoMc\dIa x9A o'$+ R EǩwThcI5Wqi`GEXy:5Jƌq>!|}w =4fJH޺4ߧϦG%1 |5ͅ^ ܊!izEV0yx7&1$^{eQAz-A7tUIy[,tᶎ;]F=uT&>g<%QttF-3Ck].Ncfp.{gPE};amQaMGZRW_ 2 ݧ~ O(t#Nj g[-->@8k1X-MI>J*v֒ Z4=q#m^7 ?ȥ 1k_><Gz@(4n;d]ǐ3A'|pKtT{ ,}TmCA^_괶cAzX\PmyKͤQww+u4bQl=kl'X)EnǹO[J ܻVdΥ <VGcA*:N-8/}ߌ.y;N.:y:H{Vua34J7Fr&8]OuNn3E6X"E8*~T|L 29n(p4j%Ւa HktV8M$HmVw)OupT-"ֽ}X1p_D,%IpTCzVC ]7C4,ffzeAsygN;hk4mOl( Z@ G1f! =f)b}q;H:~T{AѥoԇE6N# d'Ҙ!6¾݇'Dpz ݇wp:iuzen9hߓAچGig \Woci8.-Vβ :U~A *-K(ҩg.HpYzP6cT8}OZU!'t?͵;=q+:wEi+ֵ\7ԡHLA`r0!DP](!T8sir0Zn荃h|yW #2r9='^|WNk+qꍇЁ4ƙxǠCr *4pz&c&֣WB [c_ne#Ǡ[w .%i1\*K]"ɒh #RB&C*%(X,jIx̝9iSHjc:A'q<1elquk9P_H!&ӫw\Eڬ~ DL%?NQ mF~Ls"g*0RA[衮4= c+NǚZK2DlD 'k+SD׈5Vz+ O>*~/|g?xڛyO<:1Q_׿xs{/o~߯nóGWE"KL_}<|e'Oß?>|[6FbOIvg"&'}̝)?hQdx8_WϧlZ}ϸOq27_sC!jʏyKc0ZfcS}_n  {}:zLn驪0\[#7yzTE?ɌOV\ɊUHJUd=TE\Q^7`Q5n}bXz$D1>T79r"'CUdimC,&`r?H$C]io8礒PAYyGL)l4TE#h2*/p')w}>Ic]UhTmQ=UM{LI*W)G.EdziwJ<|jhPʫT^GtFMUy|1HjT iDǂ!Ց>zOUS+=TMWZTE#JEez_uMTw(&KQbQl2NC]bpxB8b JpPvFS]9*:E\d+NU̠/3ą & $BN'u-R,EVzNG斩衮sX+=UERAJ{TW:pVdF"-ޫ5JG\esNP^!CͲj/OJ:j_!*!!+ꕺ2ST,PWM S]i0zuOq9|S\YwN] INk-;(ٻNԕ& h2c:S]lUwf6G(FJppcW=UugHxDS]JEGݐp|_>LP~_9~v!W"HBq%hIx1ZW5ZfYXo=]1Nk1Tڣps\ݷBDyC6e:gŝeo/n&.PU:v,I-Wa.p!cwιJAh!t5o=&Rӣ:=]Qo-NRӉgJ_,Sxux-_X C.W50@+h0Ϥ#tZMOWFs}kfChW.N(wuc6F}7U8޷B<}9L蛾ڻlcQ~|СKSǫCcQZ[A1E*q^ O}L֕ vFtdi!tLU 2k5d!t?|baU[іﴲh0<[WYͯ}h4֢6G1lV!4N{J˭h0^ ﴲݶuׯF>q\.@nq_.,EI$>&~v+iuM_08pI@G!H~B^o/5ooOAzJ{  ss_P<|{~pD`~ЫзhHl:l/sKg`0+ [qhi:Hk,2Ka<#L/၏'a mU]/ty:׉~ג{Y^r?| ¶lj.ˣP eLt5y]F* Y0":ɟs5~Ga02 ք QJ J?"p.#O / S{;};n|9ę>ut>_;30z -E6qh|ѯ/)s4oʨ@؟:HW:Wt |JL5oѲϵaIҚ tvbbCךnGcEcXHו RT,,=Weۯȭx_ -#sv?hyU;5o}᰾\Y7bb:ed w}[B~nث8ζ) f KZzn#fu_閭]l`_0ˎACޮ"suLKo};HT{EA}ub`ltŎؑq}}3ܺbUޞ$/b[ʔekBǡuPr(:J/}9Hg)X0zb(As_ڼZRuV~-3:(#3Kd 2ug0zz~ b!:hM҉mumɥ%k{D=1e%(;};F/rAzD w ˿Zе5p6k] 뿬]c8}) N,/T.\g ΁pr8|+H[vP`hlh'gL7q8Yscç")ThNPպ/t=1˶Eҳ.•~b|40c,-_h9e1kʎ^?o8k?.to$4O]/ MzmCNEHDq*sNQMxۡ>o@RAk3!?Or +^?o$qm{h]^sy{"9-= Rr0@&,c×RD0[S9;|+cx`,;R\@ض^Ñ XzIӢR0Z,{/*- mU6IAZՋn_0'`TW4ٽ gy+}WAxeeIip`Vg} W(H@Ζ@Ak</HM/T-{Cyqh|JW[Q)P;u _07H?_up(p rS.-#Y×`%ahm \%+kWAx.g B5@Az*S8};HԪH( F Jr"aTn'{WAZl>9kNSn2i0ΚtԳ^/t:yͯuC^_cti| c% lZ\ 9qh*ky(n [aLJWNԥBǡ5 ]#:Ri+Aiזz>@rEAM7m La>OmB7T>QU.EhJxH^šI0cT_CkP:8~荼-u_ lq_錣Gq`ۯ)^iEB73_8]W NߎCw4f JL5_8.?BMKmy!D$ǦGq%D*'lt3c^Ѻo9!CgIB/nHt]ZKI,ǭ,7.bTI%lw*l"t3Bc3+|ш dls S:]_ N0Nɫ8N(mEB>]e o\X2ƫ-gRߗ8oC LRqS^&ّ8J@pS U{BZX R'w> cl&oItYW@8cPۥzӗpC_A _=J79aԋ|V_Mn$\(:};F/~r zc}V),GO08ckQn~^йObefW˄ocOд8ayB\eK };HNm8F?r~l8t|AOЈVfKQUI+ 68O( kU`$oY<[(YD F <޷@Ab565+Ǯ[.No  F7<.׾:};Hڶ}3jTo:Hc>tJoNoC toGFwޯat/+ֹ۠7]* Ij-rmJk^/8H׎t^I^iY8 NrYgQ8or6tL_m?lE(n _؁/19_R-3&(p_ǡ-|xLa;e җt=ygiY%Áh˽]a|Bi]}mΕ- F)BTZnX =2VA%{`"):HWapVN5-C%pjEן- EG:5>zLt.Z_ cǐFq8R# gpmS`c8};Hs&rI*ֻ3pk:y>sohZ8\"$ˤͷpX?c`p2G=,r]12rF}x*mzC ]44nT[CKCF={"YгȻBiK53"ǡSޅauj>:H-i@蒪?О-"ǡVIM%Z qJ-nI?"=\DO- {O/hӿ=ˣ/?1"O[?Yڹһr( /l\s^eE}-(rZR{qN* [ywW'`ޜAYO=ss;HwJOy{oǡn@ݷtX5ECU|ђȣ8өa03nšj/tΧAVɛR=St1 cn{{&,PAx<1BG)C.[q̲MPVѯ8QJӽ y>֚:e݃'t!e97%y?8MgԹE{ڵ4}Byi Y8f7BSumeix_7if'_Y:7"t+β'^i%R|R* 2^пk u`,дNz dKZɪdphowi=E=1)JN l2._WiZvK`(&a:z HTDXWՙG"nSZfo8WͲy r!qq蹶[l4oXtƶ9HˑlJsGFf ԫkoYחz#7 =s$}BXF{ F/7ԙ"i ˉPU~rQkl6ydJѳ9};Fi+51ܲ==uowgE]_c T/a lM'P2%IR8};FJ+uJmsY}yД?Wa0J@Κe~FwU9ͥ+}B>s:HUK4r _Mn7vj}W}>WQzN-'f8W0P|Ti Azi~FcNmX+Hg Wnx\Rn>c8F2Z[ҽ3mXZm+a4uٿ:p(&Ւ\s/T2¹JmB鼬S~;P?'p[HvO -׹i7$'yF#uˠҺ@@tQ<@.4^zd .HZΩ|8CnOXyA49i00΅{_0PzŁFn. ptݤ"靚ToUW:EG ڻ<$*| .Z?g900Ώ_-K[8 nJuq,3#$p^nA`0AsG_@wv_֗$R, MX<K)[*H@v3E_mCv!Seyג 9b h á/8k$} N'za4Naqz 3yKZɖSJR.UЗ~"u@x o3_d ڔv2~i9FhNOKa|VҐ6 e~ d-ԁQ s(hpn?uҫ069qot-WOO_jCo_:t 兡ilkXnz*u}ԓ/t_ohw/e殴^wڐGANgJ7~~C8d~N&8HWRoûȭZ_K=6}(vQnٰ/Gǖԣ9 ϙ1exb,ɃXKUl̺ y/TN;/|Kg', /iKHB5;g:H']2_DTDHauxnM^Ǖ:bdyN2=*Wsi}R3//_ZձzխKY`ƞkI\s.:H=UZ ٷJ& mUa2~Ӿ;L̬4j!};|s YI,)ght.4)@nY,j=-@,1{Cߎk%2/0:-u8:Ha #asg^щKCmCmҶgI}-+_ ]ʔзCl jCBaU8- әRGd8H,h_٤= J KJ\aU r\/T"H[@jŒ \״@`,cvv:c ۴HJU5=փϓn,YNڎ%$SdyX 箄/yioS]}C_ OLaUs|d[wSPfF|{Rԑ5.X'Y#]ARԨKuU>0yvh}@u$fp|-FgU,uI_Mh_зt,@AXC('}hjb.!GuL&ŷAz6,Z2Az,Y .Mv/t ^g&1 } { gϡr - -,ݷi˭r*Ұ/pv8mE.h};֙#v};䨣ەKcTx!5_Cû igyL4/R8\~>Zt YZji·0zv;3z^8Ga Bc:MQx=>q MC+fޜ;d%ٝ.w\$Hy<1.[p.{N0"5PGIF-ګxq;'Eٵ(#TUK0W@6p3^aFu 1F]vз4ޭ> ЌȇF >0Ȣ1;#fІ+f?doQcnj#~LE@a0.|.VEȞ + pR mB|e [ZO )dm5[Ng:R0X"5Hh4);[ k8Hbhl8Fж%#PnE+(o P3OXvgܞ/0;Nz JkZFCo Bd4&vRmeHZIȡt|RO Ng`E +rI&@ngcJyW(4L5r {?\Ʃt<ה-n µ/SrW2Sɨ7g?,H4_q NiySŹssi݌npS8eo ΞzBO ~y5啟O]9SkqMhay+eSa̕+.Qxx ةDX3Q6Vx):9-k+AZrq8=Ͳ<K]Wʋsy9At=7n9x9,n$|sΖ>=AZ:a 7S_@YQK%-)H^[ǁ%z VC½݋ Q?~ttEG6Hv 7;:HO=UIpu4F::dPaf~pWz7$snfxvDAig5mf(:;}l]ևׅt*E6 y쟜6 PAwSu: ]EގgGe|J[]9j;nSSV- >oA\՜1lOu.O]8HNѣ 0:JsGi̇r ]~WiA:*r| hݤZvWMO: ُ(:qk'mzVʡ rkV;hFiܛtJ/| ]>9ꁣ킠mdAl\ͧi&$:Hemt n='p$zw u0bJᗉ D+ɧ Rfߔspz'7>WpÌu-/ܱA*CphB̤qE/%v'_gyXmΰ{47O]Z pcq b 1JE bh]^;x&k, ϝ]\p-`ڑ4KL_Ex2qREŦ>%N/T|NWj㰾ӏ{ư\a+2:!8t{]j|N#z׽wy٧hYAwtxR z2g+Y!8<Ү<sw9.:B2::E%(m(ruPxVLu eB%1iEȥp"sx_D[@w?kxlćجV_3Dt)U 6x׿gi}:Hsa~Wڬ\1KX9H*7.vQ:ս9HUay3Mל; {Kdnҽam8 dѧvi!n~m~C{38-!PncteD\tp;}da4;= -etn˾AfˈtOR,`, zEċ0ߝΑm? Mν^|?NdCGe7\[){]f? < hk'F/Z%~ -LnmdY{`Y%zu^4K#}֓kQPowpzpg9HscQtpK"MA87};ݬUO;^\i[F\X_i]N\Ze÷p(&/ƭC{"!3b' Ga4n&G&A:3 : 1ڪE.Oq4۴rv^aǞүpQe467|+Nue"A:͠{C'81KuEHIsqN{JMa4b*,!aӷ1J ©J[zB GM oa?KFW X*_`nUh2V:¥HzM# tΤa Q; 8)bmG`h@l8}^Y[=> YtYtmF^8Hnm",I[hWC~-AuTYt(m)8EKXǔsoСk=E'AZ~rܴEukoшkUZyo;} w_(˓֋uPӺ:Hi4:A:i>Y9ݷhc!k΁Ab3 V9_iqH7};E[9ܰ# &a@2ߚ$p ݳ &" d?:&GAiYiBs^i98'#8FBmAZՋƊ:Hw8HeOxh6};H2ѩU֎tċi=a4m,WAYF֫GAYT*HGt]5/Wapovᰖ e kvڌ F$`aѵut^g7{?OҿC:NyCV׽AVԦA:8roǡsb^ǡE:N{hxoPSJם^qR/2c7|WRFLWAztD_J\y_a\z;Pcn(u ݚ5.WA+f;KA8_%0(F:~WJI/":.S8H,A mR xVOu_WA8ܓrdqwD=-趏0kP/8gң'n3үк /*Cw:n]8A~ŁӚ&?E |+ Jwt9t ~v f4۸a4F8Hߎl8HmKKwA S5}a KybH^ ,5kgnL ]qC;arEhe@@ .pv^Z]=Ac*:Ht ٚӷtUFP8=6ZIWk|F{8uƺXrȫ J`_08&'>_ι~KatB9گS&[M{\Nҹ)'[01d-GS_(HVz~^lku= d-J]G E/mQ|% `,\~ū [~dd mOia FO{+-:};H{Fg&o ]6??AqhWR_-/oakh* 8w{(H{d6N~[~{|tF(Z?"pNY.)VƜ ^t SH_ S]3Pu7quvneM_o Dv9w@A@FD8}F Bš 0WiD}ZR,.5#WpJ@+%ӪcF? cWl% ? 4 [a4SZ)NңKxqK&XXv m`F 1dQy.Qҏ1_JqVY~#wAm,ҷh]nv~ӯ¿0-}^O:Hτ0+'{B|4Z_}b[kO/U: _h0ݢT:Hwv=lF?gV/t(ӹK[_PL#wNA (U2^ʁ-),+¯.eY}]ӷh tЬsZKzތFWAz' g7mUX~> h/IcK =H~Fw<\6tI$>G)/\4ƅݱWa0P 1q&k ڔ 8| F[>ͷt&t*uf+u _0zat ω[:HZ䞂K:H2m\_ = &f Fu%}ЭpvШcYyESN^ӷ1/o:(ޚ1@L c !eŸ]m0:{|:C8,KF>KҹJ~}*^4)$:};H9VS=>Rx6}UR/e4q No¯pQ '=PAxVA.I;C8-|t frƛoJ4Fsv}J? p9Y}9L0ǡːzͫ܎wF^hyj_k'o7"ӵ[GLݎCR:r9C'gJxsw/tk6W6:q!f{v9~|*7ﷃtGPB:}uW䙅U:~Vg=_Lأ,q:hJg]x{3U%0^]_}i tK8NƐ(]vi w|Z2-Kq>Ա+(H˲^NF{;"ܷwZzA:{ȒHi&:~m7@qϞQP{T?c2ыl8Řʭ:{~/5*/a)r $R=^=OY:HҐ֤F:{`8nʎ^pXzo ZW茽RG8Hl:WU΀ֻhFSºvV}#U(ڔ/u '[s(Um_0ϻw)|+H[Ӵ 8Fc]WA؆ٯG| dȣlH 4y,/4SI[0f }gl$Kf4ڲG[|_0u醃hwc+ҥ${86/ϚS g-S/TeΜ6{`D)kԱYS}Wk7k G=iܟq^m[S fA嵑@ҧc1:Mоqޡu( mwOA !rZ5$zg%Ӑdp Wĝ8q[A8L{ј8'9Q:MY_:4`c$0+?c\лݎMOyV9`Ht?@!}dvk :n~!J}r`8M҄`[ S"tу}^p֚8r3.ac_0jYO{uu{> E1>gxwd͍`7YZi呺^:Y&[ \ruttKӱ'(7cj-t1?:3Oo{g (wm"܊gq+>4ڥM E9@0a,yBg}L`Š [;e^xsc@c o_)E#CALDj̽ow h1Au;{Yqpst]#qlN3 ½,M+'܊v&p.9 7i29Ҳ~nMPWޫuvFKOپʎt-ugDZ\J,t T5]#ZX kg0NSyuuAzb߳F4X'IN ҳJXt_ 3: =Sqn_h?.~  D.W#4x%N6a4~2azw9璭;s^#qFcYBL/k}:HˈMJ4;e˓'$M^A:N=l[Tz\ޒ7; Xn)h Siчb3աuҭ,:8HTΝqlzԴnOqgàG]VݧhIs-Ώr+B9 U6?MKg ;mJGx'O<ʘ-TYbOnӻ %-tnB >z6al9i5Jxc*u&m <\hȧװa=R/mчB_5n5۰-I>XV|,K${9M#W9:;J~;DSY q2K=u~2HPϟZ9]fǗN[q em8@/u7, 5t\*-J֧thkD~2bxflOte]]?leH HNl|tBʞ~;vsEO6dI=bp3◍J8ҡ鯯]N׺ʩL hh^)PҊYق e[Ni1k λqd(%>%Hu}\b p;+f\GAt)Th0V<ѽun/.!,tl'BuA:h.ZuVu9zy.t.A" ߨ}+ Fi5C})y|[AZ"}fu(qe'%q/y -uCLˇ5o^Np+cJ99َh:aY :В1k\7U:HGN8Ì=ڽ1ŸAz pLYo3u "`Ntې`w4{ ¸ R:6#ۍ B6v+ 쵿Q4I0;k; - 6S k]}:H3Tlgtg(#uAօWfu]V`MqMK#Jt.r9qlZ7v8t[; ,8N6J iѧc{}ާc_˞dma>]?;UlxL]p2y#ϭ7'6}#/8]:^C4܎Mt:"\Çcw*r+:ҳkG3xW;W2G[w=z) }\{ޠl q(ëKgd [L:P]ױ%9s3;82HxDZ~6)*aA:YI#8rL=o4Ϣrax|+E85߱%% b`2.K{Os3A(,8 -jV WKLzgΕKϩ86;c86{VTw8:AO83X COMuvG [uѧ,9/: 'h< ɫdq :AzBctO%F˔_/uX}:mosZ=iش4̃g#}86=$oh0Z+}8.Pαs;H[:t_y;H#XǢOt ݰ@,TSptm췂9%BO1NJKv {zq7d1 p@לl J1 6vvA7\m~a`z弓q R_ 2m8i? l(f`{>*ݗ_WA6\X$ Rg?¹|i ]ҿؐ|;Ҷ(ZZoN+^xɕ[@z"v:};`ʍ0pMg 1И߾aתp.ƫ \CCi_Sun}A>v_D&]ly0l%|+O,Q~vU~Ֆ/ >84~Ԣteo/a4_Az-!4_X8UNK w-- ^Z w]ZN8o>5r/tDtq&ԓl^/-s 6$iiURk]|Ye&$^wu4]|EOL avuWa0Lh-v@A:>ýC (ݘӦ- {kֈg`Ai?[I{KWt!E ?s ICiٜS Vᰲ8 e80—hޖ+oZcj2!<}c*p/ ǖ^*kuXy.|mO?oiO [=0z[6b])0 H"ˤ$2ntkc]c031H#U;P_a*|lH8| FjrQmy .RO͇۫0 Z/] n vVFm_ ]pȲ֛&/tN Pg FF۩BiLG}D<Ҷ =B`]ѪnKIKA8 "p0+"d <W&P:Vt{,twoqˣ֫8t-4}a45,&BK9H/t[N0Z5vvڏm{߯ЖZιŬq褩Ȥ/dA:Qł?dBѲX@[.oզ+ВS~m%Gޓ FݮJVҷ]m&N=,z%d/t &NAs,Di=UCe__ f) ӏBrN[>0c̙uڶNӣy84"^1zHBҘl :%~q  uiIto kI1U%Azi)_ ݫ:Ǚtt t[7AZ'$oѴ~GsreVGo2M|MIlxֺӷ[8};Hњ2 I_C7jcL~A:5c7WapED׵tima2:(HeW8kOz l9Wʩ(Fj (mA:Hi$P8Y6 Lp_IGHХW(ѧSa07Ǯ0::X|5(- =,գ^먓 3l#*G. {*SAvRENsu.ZuQ<87QXt?KZڴpQMЭwqΉ^$,zwNˉG}4ڏ<d=ypQ,1TSFN4B z"꩑Fc m :Ɯ蒊# tz>WUFg^ 9HGi0:av4zw./L$X݆sud[ mMCZ. _)$#T1-_[nNҒsEAx5zܕTN1d[PX'sU vb[_ ]6u8Əza8H7o5a u jc48F3Yu+>{Gr*Zl a,Z> "8f 4Ϋc ;\wJ+Ћ3̡p8QXSsUtV?lw8;u!]06V̆|9 HA:uNv3㫴 ]*4ϯ§.ZrTm:|n {{< d2n4(7; 7eyH`M!óMcu;rw ̛h/KApYZT:ՙ.=dv?W7Iuk/&ru*(Xw0 Qs{F6ϵgt޹ a]w]+~bJPpO[MQ,骑Yq:H"L;Ӄ6ދpM5OCAY(jo(=-M?/zw-Dmr*օI =>OR8j%牖,IR9htK\)Oј_u\ u ]JX~ItԿTz߬Aں{p:JdatÚ"m%rۧ5M!%?ۧ&pzIɕ0ztAzI)1T\N :Hw -cq퓧͙A:hi9P`"D\ꌿAshW(Hp vOz*6'›t D鄓cWNSrhNᠻ 'XeiD(Kʙ0WX_gNaK{%b{tuaGm3/k [ڔ[s .El\ l3I8`bWw*F#{ !1ȓt( PKWxU }b{$:^9И~^k\HW:cC_npM,{Վ,lB%ub+.+vU@ϐ S\ 5 q!Li>Mpr9Jе: w!4)3=:FT hD p:a#Gcvo@eb'V0[ӽRZF?xQA0^~hf{(^uWh 2#3)F15 :[(FAy!Chd)%H[t %F?',2 1YB_ޱChCB(M5Atܚ}j l@]p˹@, *sg7Oơ:ќ&sSe!tr.1{ttJ'#&uRImWu4MzZ]6)5qKBot:p^)ӝ86[M!=bo Sy0 F絴gFi;vk@uxv&N*9;;nROBEljh!p,ӽChɄ^{tӕc;[zt^A0Z)s$h L :my>DXK=:1v&{ykȸFF&a3sLolF5cM<1aIHA^p/ZQ!0┥EJ6S4QLtDL5XѱY5OD#eV8Np5Е8.OT(.LB)hWB}N% ]ךhg0֪*C)F}!trR'%K i >:JBfS0r|:9W/D 0;Nx-U3w L]%<\)>֣bC +h̨ 8"*TYNQhd&qܾ!;ou9Y#MP%ъgφ{ؼmޝN_=ݝ"ʔ%-=WˣW7jׇw{8ݑ˓`}M>\/ޝnn]yfw/pa߾=^ī!Ǜͣk囮_mߗxf'׿mPgu<6/x[SRuM:nfkoaf׼=m&'כ'؊'u;k-ٜQݜjq =LVu4QxՌ7Ikt?Ak6;ybkLjER(]?z?<o%(lh4k(G oտv5kC3~ڜͺov=чfeg|Usn\mcCc?P 'ݞ*"[ endstream endobj 105 0 obj 152635 endobj 106 0 obj << /Filter /FlateDecode /Length 107 0 R /Length1 56089 >> stream HlV xW|!A{Gu,Q5Ze&DbؗTQyU.%B\.Ē;ޘgf@kV,mlwDJH"QXQ묫uU]վ>mDڇ5#k;2);L",jv5cnőz}Ґ`W+ÕJu]IDW+9S*9?GzϪG(ݠۚ{[:8D y.eG=iG xjՎ.FA&4&g*k':.2(:Rdڿc<%+ 1GԬbй96k'[lm%-Tۦp[t4ZOt&sWCsb7崀>ٴ.ZIf'6!:@[(i!%Jtk&=Ft4~J EwhIF2iehCc58*4&$&Im}w 0`F/ >E dڨ@E=>!*8+4h% o΢9Z%Zc[8 o-F;J{Yq::]>:3> bf0tCw@OszA%T^A_C$#  G,O@dru7b8nͿ O̡rH6f;;p{?g |Dct3\g| K|oM.[|=!#~O)Wp%?_r5ARJLeS>WP~Hb$r+'/'yPN,1F9q"3F֘P)9k4Rdn)[1HB󸜗 r_C)GZ9S^yv5aUg\^K:GWDJ%ܔ2%A-UTH<]6 f`C5SM ~þF @&0JhA6>X`^% xJÛ`|qVY Q c&a6a_~\k?I<Ψo4:(e$9F]|n`i ogk=I+fd}̾f?eFK',ȇEO&ݤ.DH+$RKDhv3=4# A2XPzJK$J$K -*#%M%C252 7{]̒8{(D1nWq%ZYp[ʱLkrк*ձk_&@]y}yJ'$" 7 i۰@&Ni؃Ea?Q8C8#8BqIBN㌪s༸ΗpwpWTGy)o꨺ VU}@mU^FW)Uj*]}jjZ6jg-kY* ^&3rZ+a׋$lSIvءp:eP&ev][HKGnqٔQq|XG" ،-HA*Ұ۰ sķBg> 8OKqw \%\\ŗ$k\u7eHwq[Yd Y؁l`'va7`/r}؏|p'pPBCg `X44&M=Mi DѨg,,ԄGi&zL@ W&uLhhh`tD{t@C$tB%+Bf:+zz8p}W+sגDY!V΋K:wd>@s)2m`$sGK-$.Bگ]Hk:jfnt^oʻeCѐ(w{}I$ssg' oM gR|s$.DfR8v"͞djx-qrd. %$eɴ $k?X܅c9M=J~u iRt\˪bE[yv[{9ΓLyU'ODY0BWٻxqx(x&_­kuBA8T,cgSr|K?u)/X~A Vp[(DITXs%9q#dkuB5x}}VY2b`Yp9Ac]FqFYlqQndժS/#0%w3ere#We!Qç8򲂬>H+YFUdݳ)U S8XT:utq.2sBbnoMw)fw?e d%+9 G[sBhȑ~MXҹ&H_G/݉ *]|5lP^:>^kyԬQݽZ*+U|SnF+߼lS}?l營HH˫qNB< !® K`< C\X S%6D''P :9",9PX ! '5pcWOTmu}B߁^V⥨D&bs+%?ܔg$LE0.aAZb$ȬY@('7)eW|4BП\a!I;z.ڕjܶՏ{y}3oۓ?~-`"OyXIX:%n2b&وR! en=%jtJsEBʉ.hy SYK=@Bz}dSZsF&; e4f$utGy#*:H=h,?IТq nWɥ)S ᮧ"AjGga;s 纥"OYB1^iiKCb՚m v`';D-_[r?E?is'"A_3RQckաOw  E4Lbf'+=4S7"Oՙqrde=R[ FgP].?0;HE%o}ezwnf}HwrGVcLJ& +1#PtFYBQMOܢ;Aŭ:-wl-fQm'#\5n?``7CS۲ gat"hABOeASCjncVNugEX \&s&\~ֳcn[osDq Kbƭwa!o'5f~-jcoA##K4ŤqO}/KisW޸.b@J`+>(6$"H-#^5 rë l\B*ǐNpD~Gf.3Fr1m;8iɠL hYSGE.t4Ne) n\Ue7Ʈ-v#=M%\rڇ#E2ϕ B7Y->R_'Q6gS Ncwg/2n:#~{psz͑MoS W4SQi4&4AM]-/ >|ktNcn!\No2tZ Pjyі]%zEfnKvaU\hb;]ӕ~#͕nLekYan_ic mBT}{3zC`mР bʞԻ n11*`n6C|YϢ Zp2F`uQ P+G~9xzlݎݗdg;F.]mUug.P?8Eb^Obg{v w+JSZBhٽEh_[`;ZҧJQmJVprV J{ll$o݅4k̥BQp npܘ BS3W+WlP!YrT`1Zd LH?wG={i,vY˾>|+/[ȶZh6 'Ik<;ZwǷlVyQ=ԛ>VzI,ZuCilj8zֵ*LguoR_!W:x5X&3]X:[+Y-2o@%$6PR31` :B;61r &g:)P(N9fƙG2jFX@`,䰜—2Ɏ]}'̋2egy5Ǡ(Υ j^?0<%֋E3,2LF&A) ,:G 6LWFPiT`[rZTHY??`wƻqg?=-f?|݋ȁt"\]bjJLa\wmhG# D{㽉]NKra# ')IG'sn?m-/^S2xŤM➀`x{5 yX'pO-C| a*LaWq#x$6Dr LXP0Cݝ[^ؿWOǾ6KΉ,l(Y&]N_ݽdek;_[w/Xع7늋SM+g wdX*Zx7Jk6wdM }|)D+𢥛7p |i_ IN3sp\Btt]ڶ>N.gfejGE4,,\c;,ZAĬBm jS)3 IJ c[Y_8e7 [GΜhT:n <IL({$$f,d$ۆ`(CAd1 R2WR%qZRn%Frt %O']V>}y^x% /W/3φU܊߼LT@Mχ`P"-B#>(I¨uSf h4F0Uؤd3~o!OmhS`6ZʎüCYnC=^L]ŷ['I7!r]9_CIaMPDSA4: (yO)&c$=oim[r]烊 Uve,Ͼ 0LtzyYo/a4غ6%- ,KSAl# v r㈼y7xZQtʼn|zQ} y7E9TYx.еV|Y&oG4Z e7i!?%=f2-X8Y]7gRvQ`\ .Iw>Tx{Qf2;鳕~jݡutb3UGiZ/f&fӰ'=;$" [=6J٭tD Vf}z@۩"ΙM[5uj]f 7ժ+neqZ+ +aʏA6O1?[g]ر[/gXJ/ mhF)Ϻhu 4c%ΑJbw$ܙmBfWjt;]ufeOܬ]cf+8I6W5U$_uT%ca2'txtQo\O)}5[]c|\R86{Wos9E}5V=2 Eu4C5{ҧm>{Ȃ|h]:~=G^rnJZzJk#Kڵ0ac+NyļaC(iKiRLipL@Sl !6 LJI m$)5>jx?h2%ٕ SJxϹsUեs%&pIrޘॺ!e'Jf|N{<n֫KlF V8%Px 7V޵~‰MĪ={^{KB_If^z ~"Tr˧?ڿF~HF fNștE.FUX )^QwbXw$EuP;1{.~dv%j!@""67!!G*%Fdc"N8,>F YeybM^U 9%"D?o,ޱwv5?~7wn~ro_{XShGܫ2Z?\ClO^+ˉQɩYuEk ]>\V,0kg^S8, d/SK?Oof~6]ui8B qrB kƱ4EҌ!y`GYg*m]؃}&;%* *irƘ0 lJq XB?Kg/ RˉOv1]4 U@Ӡg)cmXY;a=xjHLFz5Yr8W:tN./>o"dU  B?6% '!c0tbh`w=  )ʝUwl@XY]RX[rҒuf '~W`]`NxjexڢZ;UF)f7o#2a/MN`b\l`ipD * E-J|Q쑉L@]#FIJ3&`N?s}su[љ_5<*Y xYGPA='\qτ.Q}MuZeV݄P-+Nl*5#D?4k&Dhm'e<!hD ;KwiAf㯯?sľ}zp`A';-}ctٛ0,~& ؔ~@GZf/Q HY#k@>%Q9DiTъFi8,h2Ype8ژq 1tJ14~sdڅOGLZK}|cá+7mϝЖ&}e%3Rw>&%4'f/#)JDBH2xN[!ٙӉm%?5WSW!a7҃5A8;O}wt&$Ѻ>uEգ[yjcZkVXvydus=sEIE۴}gQd)UPCdKʖ-Gn m ok% {K F%+sJX Iuirr3Znϊc$wX0 D "hADw~4mEK&L|yNB xZn<xϘ_aR6S^ +_8;t)) uqzZQcNuF]A 'x-HF!EVf2 mrz95/ExwDϐ|Uܮ3Mmnz߿=G#]7vu߿E/Ƽ*1E5w]8sRUm}EYql{ʿK~󆒤#;:u-a-3W +=ZF!ܾQj3oWiYlZi:Iz`+=ykF&/:%”lQ¾HCo:nxz" KPXXjX:9=,eOh967׭-ksW Zq:̢%Z?es|&#~HEI8#jFQm0vh;ԥ8Z}M߮뺳ᔩt~ݖ>hE˫ޣEG"@tCSP ɇի\%m{EYY7 >p KI= @yV{e"o+Uըc(fzu7κ#(Q4X1#I@gsbZvx,oF|;⻻|;*\<՞< fڧwewQWfZ5UkC?@A˯ ϟЗ<*,s4dg@oJ[&-+CW_r 6)+@56#NQfzЅ~|Z'X,JQjC;ESSa U GZU)̋M܃~/kl>\ 8 i0V+3&53JwIz;vSr{|&a`!Qx >qN_:>jԚP6Q#*eB5J7檹TR^^6B`ݮ p3IәOWrϣݫ]^#NXV;E'1N/⹒Sc]n?0h1iVo@cI*e}K9h(: ƜЙ60x3ڭ&>:?N(Sz)=[<7 2 K>M&H4"h=_X`~{Wdn@@ 9+>Ch2/iY&cc/hOJ4]F0-ՀQXj\5MO1u>Va[h  `; 3|b`~VcNЍ x /O0kײ-ۙeuJ+O6 kRY?_]~ a~ ]KYú,y;~p ,} c; :OEG̕1Y-/$ ?-jYu#^Pa8MM.bYu7q#_ɇr,ޡC6oHʹthwvw'(%ߎʼܐ8Ĺ']q\"O1|R9ym3Ұ3`mL {[E2.qO<;Zd\,Nb!nEz 3tpQ ǜɫ? )E~9K-*_%iSQ F;vZ,QvDͅ܁~ =uBv^ll(4L cfjg c3he+sMbA捾\|hhx|W9|T v顪a},[!x2$r`ljaK}ϳl!g|_jރ?2 ?h=ق6mV;Wڡlj\tP/(?e30BV8頸S ?6E]={!2WdC^7dM#Nk$pJ:ּ9Oω\߰+1'9im=4}YՎ=%~A+nQ-QN@)ySBRa܃8ݽ{w]@Lx\"$%/Z^!(He!du6 :m(3QfѶVMPW[ S`칛My`g:n{~{,\70EekDx%f^'/U1] A"8 ;*KxŤWT^Fҥe2Nn(q omԹV܎phһ8cnH"To# Z{ |XBՠo;+{Tə$q{"'Cfݻ-+n?vo<ͶjԚ:;%o%s $]BbXv }K!7h["_6f:n)ٳzʜ؛Wb~?'ɕ gLY*ut򞁤7Wco] kgn[>μ0AˁVs{v9Ά;1` smrsKvVdN0szK̋mE9ˋ<+G: MeNg^6KHTn ޿4/7LMߝ\$I}'OlOվ݃^!q0~Ƈ_뛏IPڗ\| t/4IƧ1>Øv2'2OzMR{9Ż.u7ݴD5ج|@f{v}h-kG=\M<}u~ZYwSÑ8>ysb.Zn4Ks@h[ϽRK{c+L[NO 6|3墫z\8gb!6ucإi Y&wί_PcXL>r2+{)DyHϙEV؎9 .1ܬ罅S2xNV|7 |ǣ=c6W;Q uޏO__sh?F\t|?DҮH/F)4َ)'&}|!%4 K*2id'?!쿒, y1i#h]vjC}̷0/>CBI)&f~f5;s1gh AcH~E$oT{s}a00w:iOw!gilwۃcI`-Jѽ(7FQxi+Ԝɾ}^G1#Qj̧ohԳ$#ه|뻂rSnM謟1s2e;R}cW#h)OxuLwB@L`q" 8:Z0O->SɝsTWCQYpܙFDZd%##*;7 0m t:9KG.4 `] -ù>?-O`90MF cE~ \~ 6)`l?1aa;'uQ nA1y0?>xO\I-u-kқn`@=INmvIdG=[lkFIϙ11X_rO?y=g'6$-)_nZ=6Zn|MWux荃?}ÿ=> ~~_) ð Ȍ¨،øLLL¤LLLLôL¬ü,,,¢,,,,ò,ʬªڬúlll¦llllöl®þe 89#99c9999S9mC>c>S>s|W|7|w|O/o_?2A Ȋ芡؊JJJJJJJJʠʤʢʦʡʥʣʧ********򪠊ʪꪡڪjjjjjjjjꠎꢮꡞꣾ  U4L5B#5J5Fc5N5A5I5ES5M5C35K5Gs5O@ HDKL˵B+JFkNAIE[M۵C;KG{Ou@uHuDGuLuB'uJuFguNuAuIuEWuMuC7uKuGwuO@HDOL^^>>鳾諾~~9.w!=0yx=G(գyt1=8y|O ='$ԓyrO)=4yz=g,ճyv9=y}`C=Ѓ| l-s {f!$MڌRҩ؊Dd2:Z:-іM{-|s{\ɒr+dL+JJ2IkeLzAnr,d"mr!w]r#}r<  )!yXG1y\f+ yRyJ"Y,KiyFL Y)dyyA^eyE^uyCޔmyGޕ}@>cD>sBkF{A~gE~wCoGzX(C@E?l 1aclM6[aklm;ag]v{ao}8`Cq8GhA!E% QZxz4M8#pF'p:΀$V6D,(8pE]1FY8\q.ER\10pU1 ZL\qnT܄1 q nmwN܅q}ALCxQ<1s0|,SXEX%xY,2, *<^KxU[x]>GS|W[|~OW__ً)KX2Y a_cܐ7&ܔqsn-6ܖq{w.ܕqw=>ܗqy!ćc|9s9OI>Ņ\\§ R.rJjs嶙:=if_tjN̔Zq7ѡyViG3q,\uv:?$rԡ%ۊiGҩ&6Nۖ4dē IY-ԭlY2Լ)Lz!S"Ȥ,"!% 2D}TTSbCXRSij%`ZKz|X$LFa֢9*k)obUF*iW^F[|x$j%2ڋeeMIMq ׃MߔըL%um bcXA +:m7؝=VW..훊LJkNr ;XtŜN1g} LC 4oFi,F4g}#LL䂙4h Ma~+(e$s}D<2fscoʚդzBXސOjQ%)?]z*5ȃҠ{7a< ]㘧F*] mTPV#&iri[iKwL;?e+ݤ&J((+JĉmgӎWw4̵[o1um+o,S'%JuO@SplSٜcXƶ= ~߆)ϗܰ򞬞 nB7Vn:N^S#Y6X V*8Tƛ3aa*gˆKZ ZEXZ:Wn Mj5,:7!xSѐI*o\#VV>Rw5](M E/URL+RPDP߮rJ~]ɯ+٩bJ~]ɟUԺ="6"2"]K̺wGwו_ UR !W V(L]6\-'Bvv0^I`Fpm[ ECՐ]]y6BՑ+#8+ܧiۥOn-Z>4rÕ"eFuzSI?KkX#^}WqōTY|!mvޟK ,n8$竣V*=?;mC\}$iMCOM^( my~d<73>.# M6E,ΗZk9.auL+%>&hZ۱8ZkK5Vk*Zu -=kATZ랲+gfe ='|.w, L2q`۞`xect *d &`D_8L,[#R! H\U/-Tˮ+.+%ނ42 z"j{C\)lCAeƓ݂mz A%Y)@#q{J HTv7nˠ>5o,\f[LAŽa^bTHR%OxHҿH\E(*e' m-OP j_NE`L6"TT4-<U\j&\0@{Jk/_N#ӕ$搄S6EɅwzbna76^Jbu$)/Fu;t)2 +#Xy<"qK}ek]!*&OH'> &a8g#%\g#v/&t \&IQs6S{hcObO+n39OZTZܴjTZ1} 0T(1-Jzp#zjHx6sF]iսuyQrglV[jǖenY,2˱e[˼9(^'ƣ2m+jpmk tӶSUunxQ=AOP?*~ZF%%u{gc!UK.p]ov6M SZVַ7 h«Aq+7;ވW-AIG!3c?^|ɦm>0IXuNNJ?8$ iFIwHÌSJ ?Y2ןH|$! 3?1]ۺ xk䍱 +`[d(sSG4W*5")> sA>٭;1`Bɮ岓ZY+[iݥ7c1 RʀjT9u.vXe^f"1hH^%|.zјI Y}=9I)8u释FlyP/_׈!K'#6"nps1F|% _f)O ZO PE](j+<:c9h>Q/v|AM} ӗM/˦owUq|&ub'M$MtBf ό>O2mEݬZPc'։xXUHJؕ}aIUVZ~< og,wq4>{sdܹ9`>;}nt̵ttY,TOg,h\:댾׿G7苂9|}s燥Q֪[oGyЃVy?G6wC>-L)کn %FfԵrѨVz?y-ɒ++Ű,2e]͍XVa  kڰz+k:||||||<<<<<< %KЗ/A_$OOOOOOxX/_~"E+W} +W`} ֧@_t }*UWB_X સ*:x:x:x:x:x:x:x:x:x:x:x:x:xzzu׆ =z6lгgCφ =:ׁ}t:u@ׅ =z.\wB߅ }7Gt=zAσ=z<{T)Sxu- hw:}m6iznwm]MTD= ǜmVwK'7K*hX+ WmvJVL|rJJm䣁--AT^PI:hlқ%t&HRoS:iO SlOcN'@ʚMNߍ᳽n|kwa,DD K4OvnDu{,{1:ޥ:3q_e&+LTUmқetb{f&*ތWxsPś*LT9'*ޏWx@U?xWx@x?]銏hN_tt^-exs;_#v#˝ 1:Ozk?? 6x<ׄw_;<93yB]y(TD:~agɑ`wN -|cIU t]ZPx ϻo%{h9i+RM]pe}yi媰-/;8ً ׳_frSxn,e;o. #/'%r[Fręy?ΧerC9.79f;Sa4^Hz\OׄLЁ_n q6Kf9mxΫ~n~W_7\~ٖƗZj^;[nuѽVupg}~8>qvys'j{,:  oÇ3n}Ƴstv.eq+jXĬPʷ !VȺke ׭f< npe}znJ7q:GG endstream endobj 107 0 obj 24635 endobj 108 0 obj << /Type /Metadata /Subtype /XML /Length 2935 >> stream Adobe PDF library 5.00 2004-03-05T11:21:23-05:00 2005-07-21T16:14:17-04:00 2004-03-05T11:21:23-05:00 2005-07-21T16:14:17-04:00 Adobe Illustrator 10.0.3 2005-07-21T16:14:17-04:00 endstream endobj xref 0 109 0000000004 65535 f 0000000016 00000 n 0000000088 00000 n 0000000152 00000 n 0000000007 00002 f 0000000321 00000 n 0000000698 00001 n 0000000008 00001 f 0000000009 00001 f 0000000010 00001 f 0000000011 00001 f 0000000012 00001 f 0000000013 00001 f 0000000014 00001 f 0000000015 00001 f 0000000016 00001 f 0000000017 00001 f 0000000018 00001 f 0000000019 00001 f 0000000020 00001 f 0000000021 00001 f 0000000022 00001 f 0000000023 00001 f 0000000024 00001 f 0000000025 00001 f 0000000026 00001 f 0000000027 00001 f 0000000028 00001 f 0000000029 00001 f 0000000030 00001 f 0000000031 00001 f 0000000032 00001 f 0000000033 00001 f 0000000034 00001 f 0000000035 00001 f 0000000036 00001 f 0000000037 00001 f 0000000038 00001 f 0000000039 00001 f 0000000040 00001 f 0000000041 00001 f 0000000042 00001 f 0000000043 00001 f 0000000044 00001 f 0000000045 00001 f 0000000046 00001 f 0000000047 00001 f 0000000048 00001 f 0000000049 00001 f 0000000050 00001 f 0000000051 00001 f 0000000052 00001 f 0000000055 00001 f 0000001886 00001 n 0000001967 00001 n 0000000056 00001 f 0000000057 00001 f 0000000058 00001 f 0000000059 00001 f 0000000000 00001 f 0000002610 00000 n 0000014737 00000 n 0000033025 00000 n 0000033048 00000 n 0000049985 00000 n 0000050008 00000 n 0000069580 00000 n 0000069603 00000 n 0000089738 00000 n 0000089761 00000 n 0000102377 00000 n 0000102400 00000 n 0000106063 00000 n 0000106085 00000 n 0000124067 00000 n 0000124090 00000 n 0000146401 00000 n 0000146424 00000 n 0000165163 00000 n 0000165186 00000 n 0000179390 00000 n 0000179413 00000 n 0000195922 00000 n 0000195945 00000 n 0000212265 00000 n 0000212288 00000 n 0000228619 00000 n 0000228642 00000 n 0000245033 00000 n 0000245056 00000 n 0000261478 00000 n 0000261501 00000 n 0000277543 00000 n 0000277566 00000 n 0000293364 00000 n 0000293387 00000 n 0000309227 00000 n 0000309250 00000 n 0000309279 00000 n 0000309307 00000 n 0000310362 00000 n 0000310465 00000 n 0000310694 00000 n 0000315619 00000 n 0000315642 00000 n 0000468357 00000 n 0000468382 00000 n 0000493112 00000 n 0000493136 00000 n trailer << /Size 109 /Info 3 0 R /Root 1 0 R /ID[<1d818e218aaaf4b6af9913b0c57532e6>] >> startxref 496157 %%EOF king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama/0000755000000000000000000000000011677361404023067 5ustar rootrootking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama/proline.ndft0000644000000000000000000037516711531212712025421 0ustar rootrootTop5200 Proline B<3044C4C48IX%7X%7X%7X%8X%8X%8X%8X%7X%8X%8X%8.8.8.8.8.8.8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.8.8.8.8.8.8X%8X%8X%8.8.8.8.8.8.90- 90- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8X%8X%88X%8X%8X%8X%8X%8IX%8X%8X%8X%8X%8X%8X%8.8.8.8.990- 90- 90- 9IX%9b)9b)9b)9b)9b)9b)9b)9IX%90- 90- 90- 8.8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8X%8X%8X%8X%8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9IX%90- 90- 8.8.8.8X%8X%8IX%8X%8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.90- 8.8.8.8.8.8X%8X%8X%8.8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 90- 8.8.8.8.8X%8X%8X%8.8.8.8.8.8.9990- 90- 90- 998.8.9990- 90- 90- 90- 90- 90- 9b)90- 90- 90- 98.8.8X%88X%8X%8.8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9b)9{.9{.9l9l9l9l9l9l9l9{.9{.9b)9b)9b)9b)9b)9b)90- 90- 90- 8.8.8.8.8.8X%8X%8X%8X%8X%8X%8IX%8X%8X%8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 90- 8.8.8.8X%8X%8.8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9{.9{.9l9l99- 9- 9- 9- 9- 9- 9- 99l9l9{.9b)9b)9b)9b)9b)9b)9b)9b)90- 90- 90- 90- 98.8.8.8X%8X%8X%8X%8X%8X%8X%8X%8X%8X%8X%8X%8X%8X%8.8.8.8.90- 90- 90- 90- 9IX%9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9{.9{.9b)9b)9b)9b)90- 90- 8.8.8IX%8X%8.8.8.8.990- 90- 9IX%9b)9b)9b)9b)9b)9{.9l99- 9- 9¢9X%9X%9X%9X%9X%9X%9X%9¢9- 9- 99l9l9{.9{.9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 98.8.8.8X%8X%7X%8X%8X%8X%8X%8X%8X%8X%8X%8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8X%8X%8X%8.8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9{.9{.9{.9{.9l9l9{.9- 99l9l9b)9b)9b)9b)90- 8.8.8X%8X%8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9{.9l9l9- 9¢9X%9X%9X%9X%99)9)99X%9X%9X%9X%9X%9¢9¢9- 9- 9999l9l9l9l9l9{.9b)9b)9b)9b)90- 90- 8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9{.9{.9l9l9l9l9999- 9- 9- 9- 9- 9- 9X%9X%9¢9- 99l9b)9b)9b)90- 8.8X%88X%8.8.8.990- 90- 9b)9b)9b)9b)9b)9b)9l9l9- 9¢9X%9X%9:!: l::L:L:L:::!9.9)9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9¢9- 99l9{.9b)9b)9b)90- 90- 90- 8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.990- 90- 90- 9b)9b)9b)9b)9b)9b)9{.9l9l99- 9- 9¢9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%:!9.99X%9X%9- 9l9b)9b)9b)90- 8.8X%8X%8.8.8.990- 90- 9b)9b)9b)9b)9b)9{.9l99¢9X%9X%9: l:L:)_:0- :6w:6w:6w:6w:0- :)_:)_:#:L:L:L:L:L:L:L:L::: l:!999X%9X%9X%9- 9l9{.9b)9b)9b)9b)90- 90- 90- 90- 90- 9990- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 9b)9b)9b)9b)9b)9b)9{.9l99- 9¢9X%9X%9X%9X%9)9:!:!: l:Z::::::0- :)_:L:99X%9¢9l9b)9b)90- 8.8.8X%8X%8.8.8.990- 90- 9b)9b)9b)9b)9{.9l99- 9X%9X%:!:L:)_:6w:6w:6w:6w:<¢:<¢:<¢:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:0- :)_:#::!99X%9¢99l9b)9b)9b)9b)9b)9b)90- 90- 90- 90- 90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)90- 90- 90- 90- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9{.9l99- 9X%9X%9X%9:!::L:)_:)_:)_:0- :0- :6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:)_:!9X%9¢9l9b)9b)90- 8.8.8X%8.8.8.990- 90- 9b)9b)9b)9b)9{.9l9- 9X%9X%:!:)_:6w:6w:6w:<¢:IX%:U:o:x:x:x:ucm:\8h:IX%:C d:<¢:<¢:<¢:<¢:C d:C d:C d:C d:C d:C d:<¢:<¢:6w:6w:6w:6w:)_:L:!9X%9X%9- 9l9{.9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9{.9l9l99- 9X%9X%9X%:!:L:)_:0- :6w:6w:6w:6w:6w:6w:6w:<¢:<¢:<¢:<¢:<¢:6w:O:IX%:<¢:6w:6w:)_: l9X%9¢9l9b)9b)90- 8.8X%8IX%8X%8.8.8.8.90- 90- 90- 9b)9b)9b)9{.9l9- 9X%9:L:6w:6w:<¢:\8h:!:l::r=::_::_::L::l:!:!:!:!:G9:l:l:l:G9:!:x:o:O:C d:<¢:6w:6w:0- :#: l99X%9- 99{.9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9{.9l99- 9¢9X%9X%9X%9):!:L:)_:6w:6w:6w:6w:<¢:C d:IX%:O:h:o:ucm:x:x:x:ucm:h::!:ucm:O:<¢:6w:)_: l9X%9- 9l9b)9b)98.8X%8X%8X%8.8.8.90- 90- 90- 9b)9b)9b)9b)9l9- 9X%:!:)_:6w:<¢:h:l:r=:- :2::):娊:K::娊:]::X%::w:- :- :- :w:w:- :- :::r=::!:{.:O:C d:6w:6w:6w:)_:Z99X%9¢99l9{.9b)9b)9b)9b)9b)9b)9b)9b)9{.9{.9l9l9l9l9l9l9l9l9l9l9l9l9l9l99- 9X%9X%9X%9:!::L:)_:0- :6w:6w:6w:C d:O:h:ucm:!:l:::r=::_::_:::::ܻ:G9:h:<¢:6w:)_:!9X%9- 9{.9b)90- 8.8.8.8X%8X%8X%8.8.990- 90- 9IX%9b)9b)9b)9b)9l9- 9X%:!:0- :6w:O:l:::);!; J;;ߍ; r=; r=;ߍ;ߍ;;$; J;G9;(:ӎ::::> ::]::X%:w:- :::!:h:C d:6w:6w:6w:)_: l9X%9X%9- 99l9{.9{.9b)9b)9b)9b)9{.9l9l99- 9- 9- 9¢9¢9¢9¢9¢9- 9- 9- 9- 9- 9¢9X%9X%9.::#:)_:6w:6w:6w:6w:6w:<¢:C d:U:ucm:!::ܻ:::w:X%:8h:娊:> ::> :娊:;G9:娊:2:::ucm:C d:6w:)_9.9X%99b)9b)90- 8.8.8.8.8X%8X%8.8.990- 90- 9b)9b)9b)9b)9b)9l9- 9X%:!:6w:<¢:x::X%:;Z; r=;(O;1;>US;D;O;L};D;>US;6w;.p;)_;%*N;#;"; r=;ߍ;ߍ;ߍ;ok; J;G9:> :]:Ϣ:w:::!:h:C d:6w:6w:0- :L:!9X%9X%9- 99l9l9{.9{.9{.9l9l99- 9¢9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%9X%:!:L:)_:6w:6w:6w:6w:<¢:C d:IX%:U:ucm:!::::- :¢::娊;x; J;ok;ߍ; r=;"; r=;ߍ;Z;#;ܻ;!:8h:w:ܻ:x:<¢:6w:#99X%9l9b)9b)90- 8.8.8.8.8X%8X%8.8.90- 90- 9b)9b)9b)9b)9b)9{.9l9- 9X%: l:6w:C d::w:K;ܻ;%*N;9B;U;m;!;Ȣ;;J ;Z;Ȣ;A;(;ucm;g;:;];U;Q5;O;D;>US;6w;.p;#;ߍ;$;G9:娊::w:::!:O:<¢:6w:6w:)_:L9.9X%9X%9- 99l9l9l9l99- 9¢9X%9X%9X%9)9.:!: l: l:!:!:!9.9.:!::#:0- :6w:6w:<¢:IX%:\8h:ucm:x:!::Z::_:- :B::娊;x; J;'|;";-;8 ;C d;L};O;D;9B;.p;D;.p;ߍ; J:::L:ucm:<¢:6w:L9X%9¢9l9b)9b)90- 98.8.8.8.8X%8.8.90- 90- 9b)9b)9b)9b)9{.9l99X%9X%:L:6w:O::; J;#;<¢;d;;t;; ;ּ;;˴-;!}; d;J;;;;;t;c;;A;x;kK;U;>US;.p;";ok;G9:娊::- :r=:l:ucm:IX%:<¢:6w:6w:)_:99X%9X%9¢9- 9999- 9X%9X%9X%9.: l:L:#:)_:)_:)_:)_:)_:)_:)_:)_:)_:6w:6w:<¢:C d:h:!:::r=::w:X%::娊:> ;x;;$;,;#;.p;>US;TZ;g;:;3;A;Ȣ;Ȣ;;x;_];!;\8h;6w;";Z:> ::ܻ:h:6w:6w:L9X%9- 9l9b)9b)90- 90- 8.8.8.8.8X%8X%8.990- 9b)9b)9b)9b)9l99¢9X%: l:0- :6w:h::];ܻ;.p;TZ;!;; ;ڥ;,<u=<J <x<^$<ok<Z< c<;ӎ;d;q;ڥ;;z;);;t;l;p\;Q5;.p;";J ;!:]::_::!:U:<¢:6w:6w:0- :L:!9)9X%9X%9X%9¢9¢9¢9X%9X%9):!:L:)_:0- :6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:<¢:O:x::r=:- :B:Ϣ:8h:> ; J;ܻ;ߍ;";%*N;+u;.p;8 ;Gt;Y;p\;;8;ߍ;;A9;US;;R;W;;O;[R;g;:;<¢;#;Z::w::U:6w:6w:9X%9- 9{.9b)9b)90- 90- 98.8.8.8X%8.8.90- 9b)9b)9b)9{.9l9- 9X%9.:)_:6w:<¢:x:_:娊;;.p;`y;$;;<<z<:F;,;;US;W;J ;ucm;J;.p;ߍ; J:K::- :r=:l:ucm:O:<¢:6w:6w:)_:L: l9.9)9X%9X%9X%9X%9):!:L:)_:6w:6w:6w:6w:6w:<¢:<¢:<¢:<¢:C d:IX%:O:ucm:!:::¢::K;G9;$;ߍ;%*N;1;C d;U;_];h;ucm;X;Ȣ;8;;;B;;2;,<<<};@;`;il;C; ;;p\;>US;#; :):- :l:O:6w:0- : l9X%9- 9{.9b)9b)9b)90- 90- 8.8.8.8X%8X%8.90- 9b)9b)9b)9{.9l9¢9X%::0- :6w:C d:!::娊;;.p;d;8; ;<^$ ;@< E<x<)<6w<<<ʆ) :娊:]:::::R:::!:x:ucm:ucm:x:!::ܻ::- :w::Ϣ:::]:;!; J;; r=;+u;9B;Q5;h;0;8;W;[;<a$<<([<8 g;r=;c;x;];>US;+u;#;";";#;%*N;(O;-;.p;.p;1;1;1;6w;>US;Q5;g;:;!;t;_; d;);,< ><<0- =KO=G=?=2=#eH=4<<,<[< ;!};_;t;A;3;v;ucm;v;x;z~;}@;~ӎ;~ӎ;}@;}@;!;Ȣ;t;O; d;C<<D9<6wg<[R;u;;м<!<<5=`r=;{s=;I=c< d< ;\;<a$<Z<*G > >>=.=͋= =f:=T==kK=GG=(= %<`<g=:Mo=J:=]=tN==,=˦=|e=뎟>9j>> e> ]> >>">[k>!X>#3>"e>b>> A=g=8==#==Qg==tg=Z2=E+=ٶ=#>}>)>(<>6>> e>"8=\I===ܻ=xN=N =-SA=>>">,^>1>3ea>6>>a>K>SF>V>Uc:>Pʟ>GU>9X>(>?===z=e==m&=-ll<V>> ->'A >(h>#։>> >9j=)==5=?=R=- =<<¨<<\g<<"<<\=ڮ==`>x>R>$m>9Ϙ>N>[}>c>g`>l%>z>X>X>>U>>vq>aBE>F2>)> {==`=={I=4<g<=2V=xN===N> >>&Er>2C>:>=E>9>.N>> D=N=q=22=2=S =)= <<<< A< <+u<(=5=q<<;h<- <Ҙ<=<:C>>">7>P@3>jGp>h>y>> >>cO>3>,>(>a>~f>>8>>`b>< >c>ַ=*=m,=x =/G<< ;";_];W<X >>r>->;U>H\w>Qk>U0>R>Fܧ>3M>>=a=w==W=& =eu<<2< ;;;w< < t>!>5>N#>h >>>!>j><>W> >>ԹX>x>Ν> >>J>L>qu>H͸># 1>=Z7=*5>.<>D>W>e>m'>o>lX>c3V>OjE>3>== =b=^=%{<<|3<T>'>A>`y>~>a>|>>>{>>f>v>>h>X>!>յ>(>"w>>x\>K K>"*>=\=һ==8VR5> ><>X>q/~>>>e>>3>py>S ]>0_v> 3=5=m=n=*<< =%*N=<<<<<<8==-=O>:=xo=L==*=> m>$c>@>eV>>>Rt>p>ו>>?? u???4k? ?Ӓ>>e>4>>qu>@>=$=Mo=L2= L<<US;;;D>;|>Z!>v O>>>t>#>/>>sQ>}>Sr)>(>c===3X<>D>8>\D>o>Z>>ف>>?4??"v?+L)?/P?-L?$5??L>>%>0>e>]$>/g>=֑?==F>K>u$>J>"^>>2>u>ʒ>l>>[$>(>8>>M>=?,=b=K=!<US;>US;C d;Q5;];kK;!;J ;ߍ;);!};`<!<5<:F >+/>N#>u|>}>>k>_?NC??$?9B?Ev?H?E?=?.??>Ϊ>M>>n>=r>3="=w=[;<US;#; J:)::!:C d:6w:)_:!9X%9X%9- 9l9b)9b)9b)9b)90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 8.8.8.8.8.8X%8X%8X%8X%8.90- 9b)9b)9b)9l9- 9X%:)_:<¢:;;9B;8;2<2)<>K">> x>>ɿ>Z*>&>>2?>&>R>@>>{0W>;Oh>S=T=uo=<|3US;(O;";ߍ;ߍ;ߍ;#;&;.p;9B;L};_];x;Ȣ;^$;;US;ڥ;< E<<%<.5<0x<.<)!>9Kv>b>$>Z>9>%5?-?|?,;B?D(?Y?a״?_}??T3?D?.? %>{>RG>>{L>B1+>===d2=#;c;x;D;&;:ӎ:2:'|:o:<¢:6w:L99X%9X%9- 9l9{.9b)9b)9b)90- 90- 8.8.8.8.8.90- 90- 90- 90- 90- 90- 90- 90- 90- 8.8.8.8.8.8X%8X%8X%8X%8.90- 9b)9b)9{.99X%:L:6w:!:);(O;};׀W<;J2)>>>?$? =i? 4_? q? ۂ???XF?>a>}>>>bv> ===1z<< ;x; l; J;;ߍ;#;.p;9B;Q5;e;x;Ȣ;^$;W;;D ;!};;X%;z;1;;W;ߍ;t;c;A;~ӎ;h;];U;U;U;\8h;_];d;p\;{.;;8;O;F<[R=>G.r>u>>W>t.?1?.?3c?Jkk?_?o?uP?k؍?X3??ȍ?"/f?9> >>>I>S=.E==dz=i<"<G9;;ucm;.p;,;!:::!:C d:6w:)_: l9X%9X%9- 99l9{.9b)9b)9b)90- 98.8.8.8.8.8.8.8.990- 90- 90- 90- 98.8.8.8.8.8X%8X%8X%8.90- 9b)9b)9l9¢:!:6w:h:¢;ߍ;b);f<+ٻ<`=[R=k\I=LO>1@>R$>v>վv??/.M?<@?;?6l?3#P?1iM?25?4j?.:|?>1>>V'>8=|==G`<<0<O;^$;J;ߍ;!::w:- ::- :B:}::娊:ӎ; J;$;,;#;-;8 ;J;Y;h;x;;;;~ӎ;p\;_];Q5;C d;8 ;.p;+u;#;ߍ;,;ok;;,;ߍ; r=;#;%*N;.p;3R;C d;\8h;x;;I<1.>'>VL>ʎ> x>>/?5?6?QS?g??s?zn?xݿ?hL?N8?,ů? >Y>j>>Wc>>N= ==Z=R<<<`'!;;p\;+u; J:::l:IX%:6w:)_: l9X%9X%9- 99l9{.9b)9b)9b)90- 90- 8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8X%8X%8X%8.90- 9b)9b)99X%:0- :IX%:;G9;>US;5< -N)>hu>v<>? Az?IA?e?k ?b ?Y?T?LN?Aڧ?5?#.?$>hL>6>Op> ^==Y<@<c<;;;>US;Z:8h:::!:!:!:!::ܻ:::w:::]:; J;ܻ;ߍ;#;&;+u;.p;.p;.p;%*N;";,;$;::):::w:- :- :w::}::]:K;G9;$;ߍ;+u;>US;v;O;R%=z=!}>^k>0M>gH>mr>">a?'p?1iM?Q?m7?}?3?z+8?m?Vd?4?>x>>ާ>YX>>"V===K= ><: >a>>?'A ?R^?q;???t ?h5V?\?K?4)?~?@>ʃ>=>Ri>R=j=gm=2_<=<;_;C d; J:w::ucm:IX%:<¢:<¢:<¢:C d:O:h:ucm:!:!:::r=:_:w::]::ӎ;x;x:ӎ::]::B::'|::!:h:IX%:C d:<¢:<¢:IX%:\8h:ucm:!:l:ܻ::X%:娊; J;";C d;Ȣ;׀W<3R< >;{s>zU>R>)m?9?%a\?E?bc?z@??z?ik?T ?6w?>6>q>4>I> X=_==;<9<3<:;;ߍ;ߍ:娊::ucm:<¢:6w:9X%9- 99l9{.9b)9b)9b)9b)9b)9b)90- 8.8.8X%8X%8X%8.8.8.8.8.8.8.8.8X%8X%8X%8.90- 9b)99X%:6w:x:;J ;J;W<L<=4==N>>>*>]?f?L?ns?}?~?y!b?kx?Y ?CN?*? >4>>>;)>{=)=anP=(>GG>>>>?*?3?N?b?k?h ?ZV?E-?*? :>3> >q<>2C>i= D="=)4<9<~n<;!};[R;D:X%::C d:6w:)_99X%9l9{.9b)9b)9b)9b)9b)9b)9b)90- 90- 8.8.8X%8X%8X%8X%8X%8X%8X%8X%8X%8.9b)9{.9X%:L:C d::ӎ;(O;}@;ڥ~>dT>Ǩ>V?,a?W>F?n?qE?gL?[}8?I?0\Q?>L;>F>S>Z>W=ݾ=_D=:<.,>M`>j@>e> ?C?4?F11?M%?G?9t\?%ݡ?w>>>>WC>l=+='=[=R<̭>sG>I>Om?%K?E3?Sd?O"?@O?,6?2>r>9>J>ws>3k=8=G=G=S<*N<:;I;!;&:]:l:<¢:6w:)_:!99X%9X%9X%999.:!: l::L:L:#:)_:)_:)_:)_:)_:0- :0- :)_:)_:)_:L:!9)9X%9X%9¢99{.9b)9b)9b)9b)9b)9b)9l99X%9X%:!:)_:6w:<¢:ucm:;!;>US;<xo>J>>-->\I?? T?(o$?$ x??a>.>9>>s>7(>#=/=t="< d!>p1>0>x-?f? ?%p?O? >#>ū}>c>rP>;|>>=J=v= J<`<@L;q;^$;Q5;:w:U:6w:)_:!9X%9X%9¢9¢9¢9¢9X%9X%9X%9X%9X%9X%9X%99)9999999)9X%9X%9X%9X%9X%9- 99l9{.9b)9b)90- 8.8.8.90- 9b)9b)9b)9l9- 9X%9:)_:6w:C d::娊;.p;t< ><<=+e==&/>/>:S>|^[> >L>u>>8>>v>D>!>dNz>5u> {===98<<@>]F>1L>b>m>>J>>>B>m2>3ea>-=N=Fy=5c<5<^/;cm;^$;Q5; r=:娊:l:6w:9X%9X%9¢99l9l9l9l9l999- 9- 9¢9¢9X%9X%9X%9X%9X%9X%9X%9X%9¢9¢9- 9- 99l9l9{.9b)9b)9b)9b)90- 8.8.8X%8.8.990- 9b)9b)9l9- 9X%:!:0- :6w:!:;%*N;Ȣ; x>Pl>>gn>>~>o>%>V>~>P`>$l>=ˎm=k=E=a$<US;ok:::C d:6w:0- 9X%9- 9l9b)9b)90- 90- 8.8.8.8.8.8X%8X%8.9b)9{.9X%:L:6w:x:w;Z;C d;^$;@> א>:>s>>T>g>6>>[>.U:>w='==;> <x<}<O;@;;Ȏ;W;Ȣ;_];1;ok::Z:U:<¢:6w:6w:)_:!9X%9- 9l9b)9b)90- 98.8X%8.90- 9b)99:)_:<¢:!:- :> ;ߍ;>US;(;;\<ߍ ;;+u;D;b);}@;A;Ȣ;Ȣ;5;!;p\;Q5;1;"; J:8h:_:!:<¢:6w:6w:0- :L9.9X%9- 9l9b)9b)90- 8.8.8X%8X%8.9b)9l9X%:L:6w:U:L:; J;%*N;IX%;(;ߍ; d;;,;,;;¢;t;g;:;.p;'|::R:o:6w9.9X%9- 99l9l9{.9b)9b)9b)90- 8.8.8X%8X%8X%8.8.8.8.8X%8X%8X%8X%88X%8.90- 9b)9{.9- 9X%:L:6w:<¢:{.:ܻ:w:娊; J;ߍ;#;(O;+u;+u;%*N;#;ߍ;Z;!:8h:w:ܻ:!:IX%:6w:6w:6w:)_:99X%9¢9l9{.9b)9b)90- 8.8X%8X%8.9b)9{.9¢:!:6w:<¢:!:- :娊;Z;#;;/;_];X;[R;c;Ȣ;}@;U;.p;:娊:- :!:6w:9- 9{.9b)9b)9b)9b)9b)9b)9b)90- 90- 8.8.7X%8X%8.90- 9b)9b)99X%:!:0- :6w:C d:x::::8h::::K:]::R:::x:O:C d:6w:6w:6w:)_:L: l9)9X%9¢99{.9b)9b)90- 8.8X%8.90- 9b)99X%:L:6w:C d:l:R:娊; J;ߍ;%*N;.p;41;1;+u; r=; J:)::!:C d:6w99l9b)90- 8.990- 90- 90- 90- 8.8.8.8X%8X%8.99b)9b)9l9¢9X%:L:6w:6w:C d:h:!::r=::::ܻ::x:O:<¢:6w:6w:6w:6w:6w:)_:)_:L:!9X%9X%9¢99l9b)9b)9b)98.8IX%8X%8.9b)9b)9- 9X%:#:6w:IX%:G9:_:X%:娊;x;; J;!:娊::r=:ucm:<¢:6w:L9X%9l9b)8.8X%8X%8.8.8.8.8X%8X%8IX%8.8.90- 9b)9{.9- 9X%9.:L:6w:6w:<¢:C d:O:o:ucm:ucm:h:O:C d:6w:6w:6w:6w:)_:)_:)_:L:: l99X%9X%9¢9- 9l9{.9b)9b)90- 8.8.8.90- 9b)9{.9- 9X%:L:6w:<¢:o::::- ::r=::h:6w:6w:9X%9- 9b)9b)8.8IX%8X%8.90- 9b)9b)9l9¢9X%:!:L:)_:6w:6w:6w:6w:6w:6w:6w:6w:6w:6w:0- :)_:L:: l:!9.99X%9X%9X%9¢9- 9l9{.9b)9b)9b)90- 8.8X%8.90- 9b)9{.99X%:!:)_:6w:<¢:IX%:U:b):O:<¢:6w:6w:L9X%9¢9l9b)9b)8.8X%8X%8.99b)9b)9{.99¢9X%9::#:)_:0- :6w:6w:6w:0- :)_:)_:#:L: l:!99X%9X%9X%9X%9X%9X%9- 9- 9l9{.9b)9b)9b)90- 8.8.8.90- 9b)9b)9l9- 9X%:!:L:)_:6w:6w:)_:#:!9X%9¢9l9b)9b)90- 8.8X%8X%8.8.90- 9b)9b)9{.99¢9X%9X%9.: l::L:L:L::Z:!9.9)9X%9X%9X%9X%9X%9X%9¢9- 9- 99l9{.9b)9b)9b)9IX%90- 8.8X%8.8.90- 9b)9b)9{.99¢9X%9X%9X%9X%9¢99{.9b)9b)90- 8.8X%8X%8X%8.8.90- 9b)9b)9b)9l99¢9X%9X%9X%99)99)99X%9X%9X%9X%9X%9X%9¢9- 9- 9- 999l9l9{.9b)9b)9b)9b)90- 8.8.8.8.90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 8.8.8X%8X%8X%8.8.8.8.90- 9b)9b)9b)9l99- 9¢9X%9X%9X%9X%9X%9X%9X%9X%9¢9- 9- 9- 999l9l9l9l9{.9{.9b)9b)9b)9b)90- 8.8.8X%8X%8.8.8.8.8.8.8.8.8X%8X%8X%8X%8.8.8.8.8.90- 90- 9b)9b)9b)9{.9l99- 9- 9- 9¢9¢9- 9- 9- 999l9l9l9l9l9{.9{.9{.9b)9b)9b)9b)9b)90- 98.8X%8X%8X%8X%8X%8.8.8.8.8.8.90- 9IX%9b)9b)9b)9{.9{.9l9l9l9999l9l9l9l9{.9{.9{.9{.9b)9b)9b)9b)9b)9b)9b)9b)90- 98.8X%7X%8X%8X%8X%8.8.8.8.8.8.8.90- 90- 9IX%9b)9b)9b)9b)9b)9{.9{.9{.9{.9{.9{.9{.9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 90- 8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.990- 90- 90- 9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 90- 8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.90- 90- 90- 90- 9IX%9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)9b)90- 90- 90- 98.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 9IX%9b)9b)9b)9IX%9IX%9IX%9IX%9IX%90- 90- 90- 90- 90- 90- 98.8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 998.8.8.8.8.8.8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8.8.8X%8X%88X%8X%8.8.8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8X%8.8.8.8.8.8.8.8.9990- 90- 90- 90- 90- 90- 90- 90- 998.8.8.8.8.8.8.8X%8X%8IX%8X%8X%8X%8.8.8.8.8.8.8.9990- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.9990- 90- 90- 90- 90- 90- 90- 998.8.8.8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8.8X%8X%8X%8X%8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8X%8X%8IX%8X%8X%8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8X%7X%8X%8X%8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8.8X%8X%8X%8.8.8.8.8.8.8.990- 90- 90- 90- 90- 90- 90- 98.8.8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.8.990- 90- 90- 90- 90- 998.8.8.8.8.8.8X%8X%7X%8X%8X%8.8.8.8.8.8.8.8.9990- 90- 998.8.8.8.8.8.8.8X%7X%8X%8X%8.8.8.8.8.8.8.8.8.998.8.8.8.8.8.8.8.8.8X%88X%8X%8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8X%8X%7X%8X%8X%8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8.8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.8.8.8.8.8.8.8X%8X%8X%8X%8X%8.8.8.8.8.8.8.8.8X%8X%8X%7X%8X%8X%8X%8X%8.8.8.8X%8X%8X%8IX%8IX%88IX%8X%8X%8X%8X%8X%8X%7X%8IX%88IX%7X%7X%7X%88IX%8IX%7X%king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama/prepro.ndft0000644000000000000000000037521411531212712025251 0ustar rootrootTop5200 pre-Proline (not Gly or Pro) B<3044C4C4;[w?;/:Dp::|:6v9ү9D08`8`8`9 uG9uG9ү:oj::D0:g:X::::d:Ĥ0:':˪ :ү:ٵ:Dp:JN:P+::::<:_:໥:ٵ:ү:,:,:,:ү:ٵ:Dp:<;6;g;*N3;-!;1T;8Y;H';Tqb;`;rJN;0;;g;C;_;/;;+ ;<?<6<<,<><><=====jJ===K =>U>#%8>&> J>==K=q=/>R<<<t>$L/>N)#>Ri>B]I>% >!}=j==H'= <<<-<,<ܐ)<<`A>*>*ڨ>C>mQ>>1>u>?">T=׮= =Xh=z> >m>0>D%>l][>%>q>.>S>N>{S=s=s=_=*<93 l>>&J>6uX>E7>_K>>o>~Z> >]>P~>="=֠=[['=<ͣ<<><;;t ;1T:໥::n_:{$99 uG88`8`8`8`8໥8໥8໥8໥8໥9 uG9 uG9 uG9 uG9 uG8໥8໥8໥8໥8໥8`8`8`8`8`8`8`88໥8໥8໥8໥9D09uG9ү9:!:Y:u<::˪ ;By;R;;;</=x=<~=Ӟ=T> ><>)mw>7>Fe>\&>s>ll>>>>SR>Cр>===N= <(<{<0sT;<;!;kDp;,:ү: :n_:{$99 uG88`8`8`88໥8໥8໥8໥8໥9 uG9 uG9 uG8໥8໥8໥8໥8໥8໥8`8`8`8`8`8`8`8໥8໥8໥8໥8໥9D09D09uG9ү:oj:6v:g:X::Dp;/;kDp;g;/<0<0sT>>$hF>4>CZ>X>~>Z2>0>Wc>k>>m7>53> T=ȉq==@=C==C=_=&==V=8==yܠ=gQ$=Y=L'=A=2="=җ=<*< <'<{== Cr=b=b:=[===!%=+L==f$=Xh=y=t==Aa=> 7>H>,>=>Rp>|>?>vR>i">9>,n>=>c:>+<>9=n=c3=14=5>K> qn>V==ږ==g=(=Č=jh=q=x7@=e=M=:=+g=#=!=#='W=-|=4Z=9=?=F-x=M=[˅=iJ=zL=-=A = =bz= >)>>0&>Ev>p&>>>>{!?v>+9>>P>O>?{>$==x=$)<>> _>$>fB> >+=Z={e=5===(==#=s=^m=K=?{=;7=<1"=B=I=N=V=]=dZ=ns=zi====f==,=->>&g>@>`=;>>/>>Cw? ?X?b?y3>>/>Y>=Ǩ=b=(=6>> >8\>FB>HQB>@G>.d>a>P%=4=@h=u=n=j=hu=8=n=m=n_=b(=[V=]T=d"|=lyr=s=x=~xy=C=|===1===Ǩ=7^=> &>}>:>[>>m>>?"? ?)M?'Y{? ?'>j>!>!<=K=e=2l<< >2->Z>>&>w>O>h&>Ds>->D>BI> &>G=L"=D=Q=====~=~=Z=5f=5=1===}=-=7|=Ǩ=2=~t=^> &>v">2&>RT>?>o>o>Ɋ? Z?y?.?4?2?(J?x>:d>>2-=5 ==@W D>?Q> >5>ɛU>Ӟ>ҡ>>">f>>l~>I>77>$>i>= =̘=======D==ް=f$=œ~=ȗ|=ϫe=1=a=i>Ώ>;> J>,T>E>И>8>m>?f?R?-?7?<=l?:,?0?>}%>c>?t==c=M=SR<R>>?>>̘>us?/?}O?? ?>>٤9>>D>0>]=>;>!>>G= =+'=a=}===Ǩ=i=T=s=9==P+>c>R>>>" >0ܬ>A>b=>>>&>?B?@?8AY?%q?>B[>L>ʶ==^5= ^<Х*>(>Xw?)?,?-j?5?6x?1и?)ы??a?Q>>Bc>>if>Ok>5>"u>~>==k====>> > >u>ll>2i>>$L/>->8>EO>]T>j>k>/> ?=??-?;6?D)I?Ge?E?=K?-O5? ܇>?>aI>H==k=b:<r>O܎>?X?F?4?B6?K?M?J?C~?;6?3h ?)0?4? h>=>m>> >R%>=C>)>(6> >vp>ܛ> j>_><> >">$>&b>,$>2I>9O>Au>M 2>d>T>S>>J>n???2?@ ?H?KB?H!??\G?/?[>e>}>KS=Œ=w= >m>0? ]r?(?<+?Kua?Sy?V?U|@?Q*%?Jh?A?8[?-*V?? >>>Ϯ>{>z>6>No>7U>&V>m> >&>->3~>77>9>:a>;>?>DH>I>>Q@>dp>a>> {>=>>? ??4O?AE?I?K+?HD?>?-? ˥>#>>=u =~=#4 M>Vq>???4?Cv4?O/?TJ?T?R=?M8?E?<ҩ?3O?&?Id:>IC>>@>>[ҋ>G~>AD_>A|>D>Fe>HXH>I>HfS>H>IG>M>S>Y>d>`=;>wk>>>>Ą>J>(??c(?0#??J?H?J?F?:?(&?>@>q#W>RY=ɾs=J=<_.k>:>`?t?h?+K?9L7?C[?Hh?HM?D{?>l?7?0?&?_??Z>>H>1x>>>~GP>q>q>t>m>bz>[i3>T>S>V}>[K>`|p>d>jq>y}>h>n>>ĝ>ε>R>N??):?80?BM?E?@ ?4?>J>>QP>=={=#4<0>j9>$>нJ>? ?S?+)?0.?0b?.7?)}D?" N?ù??? d?7N>>ˬ>l~>e>*>p>U>&>&> >oo>^>\v>c>k|>qF>p>m>o">}B>;>/>T>1x>Ϲq>z?Hs??-6?7E?;?6?) 7? >1>,e><>=w=oo=[<zE>/hu>P>\>|>я>?1? G? 1? $?? X?5??")?->>)>ү> >>>T>>>P>>t` >mo>vk>} Z>}>x>jc>_>`!$>p>3>|> y>Z>нJ>g? ?I?(q?-+?(?>^>_t>{R>%3=똷==Z=-< >$>H.%>">+<>w>K>ˍ>[>ل>㧕>&>>1> >V>D>@>g>Π>U>>>>>(>7>e7>>y>{>hj>W9>Q >S.T>`|p>>O>9w>:>ؼw>>>I>ٝ=R==C< <hd>P>4.r>Hw>jG>I>>>'>`>??=?΢>>>/_>Ƅ>ת>ˊs>|>>%8>%>>;>Kz>>n >UЇ>K>K9>T>r *>>!>h>ϒ>>?f?n?n>}>>>6v>l==&==.] >!q>>i>ps>S[>n>B=>Gw?rA?R?Y?l?T?"=>x>~>ۨh>Ќ!>ļ>Nb>>FQ>n>t>r>Ya>No>M>UX>ps>C>:>j$>>ސ> >>^>>e+>m!>m>>)===sg= m<9y> Q>HȦ>Y> f>,)>n?T? A??G?X? Y?/>>>p>Ӕ)> >u>>wr>sm>\d>S>SJk>\/>v>.`>>E>ŋ>ڄ>K>>(>g>Ť>y>\W>#y=={=iW=>:o>o>9>Ѻ> ?Q?X]?C?>J?2?? ??=>>ѽ>v>Z>w>u>_>X>X/>aԏ>x>V>|>~Z>>%>r>>>>>"2>W'>!<=L= %=hM=9n<<_<6;!B;;I;By:ү:::g:6v:oj9Ĥ09`8໥88`8`8`8`8`8`8`8`8໥8໥9D09uG9Ĥ09:{$:=S:R:g:n_:|:::: :::::: : :::::::::::5:X:{:u<:u<:n_:g:`:K :D0:6v:!:{$:{$:{$:{$::6v:D0:Y:n_:X:::,:JN;g;1T;Mk;g;{;;;;;sT; ; ;+ <{$<7y1>.%h>k>E>Н>R???!?y???^? G?L`>|>>_>/>}>h>^>^r>fTQ>wP>v>>>9>>ߢ>螻>>+'>>>UY#>"K===jG=;';z;Mk;By:ү:::n_:=S:oj9ү9|8໥8໥8`8`8`8`8`8`8`8`8໥8໥9D09|99_:{$:=S:Y:n_:u<::::::::d:d::::::: ::::::::5:X:|:u<:n_:g:g:Y:D0:=S:(:{$:{$: uG:oj:oj: uG:{$:{$:(:D0:`:n_:5: ::':8;oj;(;1T;B;Mk;Y;[w?;g;kDp;t ;;; <oj<0%<>_>;>ϴ?j?? ?"?0*????'>(Y>`P>k> >>w >fҺ>ak7>e>tL>=>$>E>J>&>>ځr>n>fS>>7>Q/>"== =jc=q&7>vw>>wH? y ??}k? W!??k0?E? ~>>ݐ>h> >>yG>ps>d>dZ>qQ>+>Q>>.B>H>^>]>&>9>#>>OB>"=F=X=j=*<-x52K>%>?7??Nm?!?#?"?? l> D>L>u2>u><>>w]>gC>c:>j0>=>>>K>/>>>>>>u>'Z>NaR>#ry=>=E=ns=2<3V<|<+.;i;);b};-!:Dp:::u<:R:{$9ү9uG9 uG8໥8`8`8`8`8`8`8`8໥8໥8໥9 uG9D09uG9Ĥ09::R:n_:: ::S:ү:໥:P+;6;;!;(;(;% ;By;5;oj:JN:8:ү:':v::: ::::X:|:u<:n_:g:`:D0:=S:!:{$: uG99_9ү9ү9Ĥ099uG9uG9uG9uG9uG9uG9uG9Ĥ09ү:oj:{$:!:D0:Y:g:u<:X::::::::ү;*N3;p;<? x>K6>٦>??||?#?( ?'*??$>>~>Ŗz>>>>z[ >i >f >j>y&>&>>5>yX>>Û>>b>>>Q>&=1==w>=#<֣7<*<5;;C;rJN;1T:_:v::u<:Y:{$9ү9uG9 uG8໥8`8`8`8`8`8`8໥8໥8໥9 uG9D09|99_:{$:D0:n_:5: ::':ٵ:JN;5;#HV;*N3;-!;1T;3;1T;1T;-!;*N3;!;5:P+:໥:ү:Ĥ0::::::{$:X:u<:n_:g:`:K :=S:(:{$: uG99_9ү9Ĥ099uG9uG9|9`9D09D09D09 uG9 uG9D09D09|9uG9Ĥ09ү9: uG::=S:R:g:n_:u<:u<:{:::˪ ;,;w;S< =A=ۡb>">>,>1-[>(w> >.>>}>oa>i5>j0>sU,>>]>B>>7>W>:S>>>a>[>,l>=[E= =. <`<Ņ>A>>]? ?=?)#?*?"i?.?>>5>A>М>=>q?>s>m>j>p->P>HM>Q0>J>y>#>8>>>E>qb>66$> .`=@==:<o>`;>??;0?#?'?#?g???3>@>`P>X>M>3>y>sc8>qi>v>R>>>/t> >.%>>c>>$> >B >==_ =I~=x<;>V>M> >>Q>>N>29>u>>Ũ >b>Ӑ>Po>{e>X>>&>UK>#y=>=c=^=<  >w >ħ>w>>X>6>e>>f>>>٦>(>#>C>U>>ӆ>ɷm> ,>n>~2>>6D/>=]=t` = i<^<\;>dm>A? "??"?(?+"?&Wc?M?>m>5>R>>@>>X6>>ˑy>n>>` >B>暌>p9>̣]>>F">G>W=#==0Ǜ,>J>K>?ը??"i?+δ?/?-?"?>4i>>O> >b>>>>>G>&?sV?$A??7>H>|><>L>a>}=/===ւF>9>p?~?$.V?/d?4?4oh?-ƙ?? >i>>6>>>V>>c>01?t? ?`??E?>e>7>(>)>,j=ώ==G=ӑ<<^-<;e;0;1T:,::`:{$9ү9uG9 uG8໥8`8`8`8`8`8໥8໥9 uG9D09uG99ү:oj:6v:g:uG::,;6;4;[w?;;g;;;8;;+ ;+ ;i;Dp;W;ń;;);;~;`;I;1T;:Dp:˪ :: ::u<:g:D0::oj9_9Ĥ09uG9|9D09 uG8໥8໥88`8`8`8`8`8໥9D09uG9ү:oj:=S:u<::_;K ;<0$>C>g??&T?4?;(?< ?6p?+y??Ҿ>> >ϫe>>؆>̱i>J>V? aK??%I?(?"?Y_? >`>Hg>+>;7="=w{=L=V<7<^r<;e;P%;1T:,::`: uG9ү9|8໥88`8`8`8`8`8໥8໥9 uG9D09uG99ү: uG:=S:n_:::Dp;,;Y;;;_;-;<?<<<<W< < ;;s;;g;z;n_;Ps;1T;g:_:˪ :: :5:n_:Y:=S:{$99ү9uG9|9D09 uG8໥8໥8`8`8`8`8`8໥9D09uG9Ĥ09:=S:u<:;X;kDp;Ĥ0<&Z<W==#>->h>? :?'@?7u?@h?C6?>?5 ?'^?WG? >Y5>K >ߘ1>'>\>I? ?%_?+h?4_?7$?3!?*?]? >o>\>K>ð=0=P-=<`<*>X??!}?%S?9?F~[?3C?'iH?9?l??4w?΢? ??!?-?9k?A?DEa???7??-J?D?>L>o[>Q=!=VN=PfB>R>Ͻ?!?ّ>>==Y ;=J<#4<3;;g;Y;5::u<:/9ү9uG9D08໥8`8`8`8`8`8`8໥8໥9D09`9uG9ү:{$:Y::';(;n_;sT;<<̺<;>}> ???O?S u?Z?[p?VB?NJ?D6?;?5x?0?/>R?2&?9y?@*?H?O'?U~?Y ?Yŕ?W]R?Rkq?JX?:z?U>)>*a>0=-=Q/<<̺<;e;V;B:Dp::g:{$9Ĥ09`9 uG8໥8`8`8`8`8`8໥8໥9 uG9D09uG9ү:{$:g:;oj;[w?;C< <1n<<Md>Г'?$J?BW?W?a?dI?`G?Yh?Q?J?D.?A?Au?F?MZ?SCf?X!?\?aTd?cY?dX?a?\R?Ta?D\4?'U>﫞>>[==@$n<3C>?'?Ac?Yw?fe?k6?i@A?b?[|?U9?Q?O?P ?Tz)?YӠ?_sS?d)?h?ma4?p#?pj?k4?c?X?D?!>݂t>oZ>=1= #<{> N> ===t=\p=**>? } ?:?VT?e?nŞ?p ?jI_?c??]ϴ?Z?Z?[Yf?]?b9?i\Y?r?w?ym?x?wT?o4:?cY?S?9? p>>8"=׮=o7>j0>=>V>Uo>!6= =S=S= `<K>y> o?.?OQ?`&h?k$?s'?p2?j&A?e?c?c77?dZ?f?kQ?w>?{4?|,N?{b?y?rk?f?Y?CZ?V>;7>rȷ> &=q=+<-y>2>t>>M>_> >>A>*jJ=;=I=?==<<\Ji>B ??C#?YcC?f?rQ?u;?p?l?k0?kҧ?m?p#?vB?{H?}1?}?{n?s?d?X??D ?"4>;>>==[<1p'>f>^??,l?8 ?5@V? 4>K >=>M=S==. <+;>=P?V?5d?Q?bz?px?w?ve?sU?qF?t>\>O="=q= ~<<';;;P%:::X:=S99uG9D09 uG8໥8໥8`8`8`8`8`8໥8໥9D09ү:=S:;i;i<[ f>x >ӥ?|?9x?QG?Z?XE?Ht_?">+>^>4==kDp=<4<\ >>?&?HJ?]53?l4?wF?wk?t?rD?t)?u`a?tN}?s?u)?sU,?kN?`ж?S1?޳>")>=C=oJ=<<8K;W;;D0::uG:D099uG9`9D08໥8໥8`8`8`8`8`8`8໥8໥9D09ү:=S:;[w?; >B>J'?.V?Q?e?v{?t^J?_E?Bx?`>}>4='===j`>T>ɞ??;6?V?eBl?oZ?q[?m?jg?jL?j *?g_?cq(?_5?Z?R?E?0?{7>z>yǎ>==d"|= +,>>?,\?7n?Y?w!?~?~^?u?V}?, >>lԿ> ɍ=w=Z<=<6>m>T?,u?J?Z?b%S?cX?ab?^T?^?\?X}C?Q9?Eu?7?)(?G>%>۪>J>K=5H=R<\b nA>>?5Nb?[KZ?z???|?^Ł?85>%>!>uv==`<\b> >+'?n.?4%?H_N?P?Q]?N>?L%?K|g?Gg?>O?0?(?`>H>>af> =ޥ=h=9V<<<3;Dp;a;O,; ::X:oj9ү9uG9D09 uG8໥8໥88`8`8`8`8`8໥9D09ү:=S:;g;<<=Qz>ڡ ?,wA?W-?xӃ?q?k?|v ?^]?7>h>>k=L=J <-<|b<";W;;K :JN::|:D0:oj99D08໥8`8`8`8໥9D09uG:oj:g: :ٵ;1T;0;ү<,<=b=]T=>z>Fg>o>??&?/?/}?,%?* {?'P??>>>ξ>Cc>ɽ=s==iJ=<ւ0B+>?j.?NhX?k;?}?}N?ne?R=?$>>>F=ݙ=V=<>X%y>R2>˃m>?>۞>Y[>E>m;>>Ԧ>T?>QW>E!>wK=$==l%,=(T<>?IJ?=[?[?h?f?U?2͋>>r> p==?C<&%,>; ,>]i>C>2>>> >p>S>:a>O,=~t=N=j=$E)<(<l>}X>?%?B:?L?D?+>H>>ٝ=8u=Cð> >>p>S>(> +3>ð=x=ї=b=z=3+<'<B>>jm??1?>>kR|>\==0< <+<-!;];;O,;:S::`:{$9ү9|8໥8`8`8`8໥9D09v:{$:u<:; ;I;X;d<P%S>e>>>/>%>5+E= =r=<b=?=A=F=Hϫ=FI=8K= i=uuv>5+E>=A>+d>=d=c%<=<5<;;;m;X::D099uG9D08໥8`8`8`8`8໥9`9ү:!:u<::8;(;I;kDp;;F;D;;;;;;;F;;;oj;kDp;Ps;/::d::Y: uG9ү9uG9uG9|9D09D09D08໥8໥8໥88`8`8`8`8໥9uG9:D0:{::8;(;O,;7;g;S;/;W; ;;<;R:JN::{$9uG8໥8`8໥9D09uG:oj:R::v:JN;*N3;H';[w?;t ;0;uG;6;;oj;t ;i;[w?;Ps;D0;3;(;:ү::X:K : uG9ү9uG9|9D09D08໥8໥8໥8໥8໥8`8`8`8`8`8໥9D09Ĥ0:{$:`:::ٵ;;3;V2;m;{;|;n_;Ps;*N3:ү::!9uG8`8`88໥9|9ү:{$:g::S:_;&D;3;I;V2;Y;Y;V2;K ;A!B;1T;(;::8:˪ :::n_:D0: uG9ү9uG9D09 uG8໥8໥8໥8`8`8`8`8`8`8`8`9 uG9uG9_:!:g:{$::Ĥ0:8;;g;(;(;6:ٵ::{:=S9ү8໥8`8`8໥9D09uG9ү:(:n_:::ٵ;{;g;*N3;-!;-!;*N3;!;6:JN:ٵ:'::::u<:`:(:oj9ү9uG9D08໥8໥8`8`8`8`8`8`8`8໥9D099:(:`:u<:::::::::g:!9ү9D08`8`8`8໥9D09uG9_:!:g:{$::d:,:8:Dp:Dp:8:ү:'::::5:u<:g:=S:{$99Ĥ09|9 uG8໥8`8`8`8`8`8໥9|9Ĥ09:{$:D0:g:n_:u<:u<:u<:n_:`:=S:oj9Ĥ09D08`8`8`8໥8໥9D09uG9ү:{$:D0:n_:5::::::::5:u<:g:Y:=S::oj9ү9uG9`8໥8໥8`8`8`8໥9D09uG9Ĥ09_:oj:{$:6v:=S:=S:6v:: uG9໥9uG9D08໥8`8`8`8໥8໥9D09|9v9:{$:=S:Y:g:n_:n_:n_:g:`:K :=S:!:{$:oj9ү9Ĥ09uG9D08໥8`8`8`8໥9D09|99ү9_9:oj:oj99ү9Ĥ09uG9D08໥8`8`8`8`8`8`8`8໥8໥9 uG9D09uG99ү9: uG:{$:{$:{$: uG:oj99_9ү9ү9uG9uG9D08໥8໥8`8`8`8໥9 uG9D09uG9uG99v99uG9uG9D08໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥9D09D09|9uG9uG9uG9uG9uG9uG9uG9uG9|9D09D08໥8໥8`8`8`88໥8໥9D09D09D09D09D08໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥8໥8໥9 uG9 uG8໥8໥8໥8໥8໥8`8`8`8`8`8໥8໥8໥8໥8໥8`8`8`8`8`8`8`8`8໥8໥8໥8໥88`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`88໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`8`8`8໥8໥8໥8໥9 uG9D09D09D09D09D09D09 uG8໥8໥8໥8໥8`8`8`8`8`8໥8໥8໥8໥9D09D09D09D09D09D09D09D09D09D09D09 uG8໥8໥8໥8`8`8`8`8`8໥8໥8໥9D09D09D09|9uG9uG9uG9uG9uG9uG9|9D09D09D09 uG8໥8໥8`8`8`8`8`8໥8໥9 uG9D09D09uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9`9D09D08໥8໥8໥8`8`8`8`8໥8໥9 uG9D09|9uG9uG9v9Ĥ09ү9ү9ү9Ĥ09v99uG9uG9uG9`9D09 uG8໥8໥8`8`8`8`8໥9 uG9D09uG9uG9Ĥ09ү9ү9ү9_9ү9ү9ү9ү9ү99uG9uG9|9D09D08໥8໥8`8`8`8`8`8໥9 uG9D09uG99ү9_99:oj:oj:oj999໥9ү9ү99uG9uG9`9D09 uG8໥8໥8`8`8`8໥8໥9D09uG9Ĥ09ү9:oj: uG:{$:{$:{$:{$: uG:oj99_9ү9Ĥ09uG9uG9|9D09 uG8໥8໥8`8`8`8`8໥9D09uG9ү9_:oj:{$:(:6v:=S:=S:=S:/::{$: uG99໥9ү99uG9|9D09D08໥8໥8`8`8`8໥9D09uG9ү:oj:{$:=S:D0:Y:`:g:`:Y:K :D0:6v:{$:oj99ү9Ĥ09uG9uG9D09D08໥8໥8`8`8`8໥9D09uG9_:{$:=S:Y:g:u<:u<:|:|:u<:n_:g:g:K :6v:{$:oj9_9ү9uG9uG9D09D08໥8໥8`8`8`8໥9D09uG9:!:Y:n_:X::: : : :::X:u<:g:R:6v:{$99ү9uG9uG9D09 uG8໥8໥8`8`8`8`9D09uG:oj:D0:n_::::d:':':':S:::::X:n_:R:(:oj9ү99uG9D09 uG8໥8໥8`8`8`8`9D09: uG:Y:X::d:ٵ:_;X;5;5; :<:Dp:ү:!B:: :{$:n_:D0:{$99Ĥ09uG9D08໥8໥8`8`8`8`9 uG9:{$:g:::2;;(;1T;A!B;D0;D0;8Y;1T;(;6:Dp:,:::5:g:=S:oj9ү9uG9D08໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8໥9uG: uG:g:::Dp;(;8Y;Y;kDp;t ;{;t ;m;[w?;I;1T;!:P+:ү:: :|:R:{$9_9uG9D08໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥9uG:oj:Y::d:;1T;Y;+;;#;D;;g;F;V;t ;Y;6v;(:P+:ү:::n_:6v999D08໥8໥8`8`8`8`8`8`88໥8໥8໥8໥88`8`8`8`8`8`8໥9D09_:D0:{$:d; ;B;t ;a;;e;w?;-;W; ;_;f;;{;Y;4;g:Dp:Ĥ0::|:K :oj9Ĥ09`8໥8໥8`8`8`8`8`8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`9 uG9v:!:u<:;{;H';P%;f;qb;<< <W<<* <0;+ ;R;;;t ;Mk;-!; :2:::g:{$9ү9|8໥8໥8`8`8`8`88໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`8໥9|:oj:g::Dp;8Y;P%;;i<<4f;8Y;g:Dp:d::n_:!9ү9|8໥88`8`8`8`8໥8໥8໥8໥8໥8໥9 uG9 uG9 uG8໥8໥8໥8໥8໥8໥8`8`8`8`9D09ү:=S::';,;t ;<+<<`;໥;;X;Y;-!::˪ ::|:D099uG9 uG8`8`8`8`88໥8໥8໥9 uG9D09D09D09D09D09D09D09D09D08໥8໥8໥8໥8`8`8`8`8໥9D09_:`::_;Mk;g;l<* <樗=)=e==I==eW~=.A<u>l==== C=:7| >> 4>S=(==P)=d<<[w?<#4;;);p;6v;oj:Ĥ0::|:Y:9_9uG9 uG8໥8`8`8`8`8`8໥8໥8໥8໥9D09D09D09`9|9uG9uG9uG9uG9uG9uG9|9D09D09D09 uG8໥8໥88`8`8`9D09:g:;5;kDp;_<>>3?>3M>=!=2=]Z=n<<]<;c;;t ;8Y;X:Ĥ0: :u<:Y:9_9uG9D08໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥9 uG9D09D09D09`9|9uG9uG9uG9uG9uG9uG9|9`9D09D09 uG8໥8໥8໥8`8`8໥9uG:{$:u<:S;-!;;W<*N3<|\-> t>6!>4{>By===]='<=x7@=~3=>>%>#->"==E=M=y< > M=J==&=7y1<][<<<_<< ;uL;O;;;h;kDp;Mk;1T;g:JN:,:: :X:g:K :(:{$:oj9_9ү9ү9Ĥ099uG9uG9uG9uG9uG9uG9uG9uG9uG9Ĥ09ү:oj::D0:g:|:::d:,:8:_:;X;X;:<:Dp:ү:S:::u<:R:(999`9D09 uG8໥8໥8໥8໥9 uG9 uG9 uG9 uG9 uG9 uG9 uG8໥8໥8໥8໥8໥8໥88`8`8`8`8`8໥9uG:oj:D0:u<: :Ĥ0:P+;-!;R;{;F;;_;/;W;-;W;s;_;;a;;kDp;O,;4;(; uG:Dp:':::X:g:K :/:{$:oj99ү9ү9ү9Ĥ099uG9uG9uG9uG9uG9uG99Ĥ09ү9:{$:=S:Y:n_::::':ٵ:_;;5;;;; :<:8:˪ :: :X:g:=S:oj9Ĥ09|9D09 uG8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`8໥9D09ү:{$:R:u<: :d:Dp;By;4;Y;t ;;;By;g;#;a;;X;rJN;[w?;I;3;*N3;{$:JN:ٵ:S:::|:g:D0:(:{$:oj99ү9ү9ү9Ĥ09v999uG9uG999Ĥ09ү9_:oj:{$:D0:g:u<::::,:໥:;5;By;!;!;;5;{:Dp:ү:v:::g:=S:oj9Ĥ09|9D08໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`8`8໥9uG9_::R:u<:::':Dp;;-!;B;R;[w?;g;g;g;[w?;V2;I;8Y;/;(;{$::8:˪ ::::u<:g:D0:!:{$:oj99ү9ү9ү9Ĥ09v999999Ĥ09ү9ү9: uG:!:D0:g:|:::d:ү:Dp;+;5;g;% ;&D;!;{$;oj:Dp:ү:d:::g:6v999D09 uG8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥88`8`8`8`8`8`8`9 uG9uG9_:{$:D0:n_:X: ::!B:ٵ:P+;;(;-!;1T;1T;1T;-!;*N3;(;; :JN:8:,:d:::uG:n_:`:=S:: uG99_9ү9ү9ү9Ĥ09v9v9999v9Ĥ09ү9ү9: uG:(:K :g:|:::d:,:Dp:;5;By;!;!;By;5;+:Dp:,:::5:g:!9_9uG9D08໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥88`8`8`8`8`8`8`8`8`9 uG9uG9ү: uG:6v:Y:n_:X::::Ĥ0:ү:໥:JN:;{;;+:P+:_:Dp:ٵ:˪ :d:: ::u<:g:K :6v:{$:oj99໥9ү9ү9ү9Ĥ09v9999v9Ĥ09ү9ү9ү9: uG:(:D0:g:u<::::˪ :8:JN;X;5;;;;X:JN:8:':: :oj:`:{$9ү9uG9D08໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥88`8`8`8`8`8`8`8`8`8`8`8`8໥9|9Ĥ09:{$:6v:K :g:u<:uG::::d:':,:ү:ү:ү:,:˪ :!B:::::X:n_:`:=S:: uG99_9ү9ү9ү9Ĥ09999999v9Ĥ09ү9ү9: uG::D0:g:u<:: ::Ĥ0:ү:໥:JN;{;X;X;{:JN:໥:ү:d:::u<:D0999D08໥8໥8໥8໥88`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥9D09uG9ү9:{$:!:D0:`:n_:|::::::::::::::oj:n_:g:D0:!:{$99_9ү9ү9Ĥ09v99uG9uG9uG9uG9uG999Ĥ09ү9ү9:oj:{$:=S:Y:n_:{::::':ү:8:Dp:_:_:Dp:8:ү:!B:: :X:g:6v9ү9uG9 uG8໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥9D09uG99ү9: uG:!:D0:`:n_:|:{$::: :: : :::uG:u<:n_:`:D0:(:{$99_9ү9ү9v99uG9uG9uG9uG9uG9uG9uG9uG9uG99Ĥ09ү9_9:{$:(:D0:g:n_:X::::S:˪ :ү:2:ү:,:':d:: :{$:n_:D0: uG9uG9D08໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥9 uG9D09uG9Ĥ09ү9:{$:(:D0:`:n_:u<:|:X:X:uG:X:|:u<:n_:g:R:=S:!: uG99ү9ү9v9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG99ү9ү9_:oj:{$:6v:K :g:u<:X:::::v:d:d:::::5:n_:K :{$9_9D08໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥9D09|9uG9Ĥ09ү9:{$:(:=S:R:`:g:g:g:g:g:`:R:D0:(:{$:oj9_9ү9Ĥ09uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG9uG99ү9ү9:oj:{$:6v:K :g:n_:|::: :::::::|:g:D0:{$9_9uG8໥8໥8`8`8`8`8`8`88໥9 uG9D09|9uG9v9ү9:oj:{$:!:6v:=S:=S:=S:=S:6v::{$:oj99ү9Ĥ09uG9uG9uG9|9`9D09D09D09D09`9D09D09D09`9`9|9|9uG9uG99ү9ү9:oj:{$:(:D0:Y:g:n_:u<:X:5::5:X:u<:n_:Y:=S:{$9_9uG9D08໥8`8`8`8`8໥8໥9 uG9D09`9uG9uG9Ĥ09ү9_9:oj:oj:oj:oj:oj99_9ү9Ĥ09uG9uG9|9D09D09D09D09D09D09D09D09D09D09D09D09D09D09D09D09`9uG9uG9uG9Ĥ09ү9_:oj: uG::6v:=S:K :Y:g:g:g:g:`:K :=S:{$:oj9ү9uG9D08໥8`8`8`8`8໥8໥8໥9D09D09`9uG9uG99Ĥ09ү9ү9ү9Ĥ099uG9uG9|9D09D09D09 uG9 uG8໥8໥9 uG9 uG9 uG9 uG9 uG9 uG9 uG9 uG9 uG9 uG9D09D09D09D09|9uG9uG99ү9ү9:oj: uG:{$:{$:!:(:6v:/:!:{$: uG99ү99|9D08໥88`8`8`8໥8໥8໥8໥9D09D09D09|9|9uG9|9|9`9D09D09D09 uG8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥9 uG9D09D09D09|9uG9uG9v9ү9ү9_999:oj999_9ү9ү9uG9uG9D08໥8໥8`8`8`8`8`8໥8໥8໥8໥8໥8໥9 uG9 uG9 uG9 uG8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥9 uG9D09D09|9uG9uG99Ĥ09ү9ү9ү9ү9ү9v99uG9uG9D09D08໥8໥8`8`8`8`8`8`88໥8໥8໥8໥8໥8໥8໥8໥88`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥9 uG9D09D09|9uG9uG9uG9uG9uG9uG9uG9uG9`9D09D08໥8໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥9 uG9D09D09D09D09D09D09D09D09D09 uG8໥8໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥8໥9 uG9 uG9 uG8໥8໥8໥8໥8໥8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥8໥8໥8໥8໥8`8`8`8`8`8`8`8`8`8`8`8`88`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥8໥8໥8໥88`8`8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥9 uG9D09D09D09D09`9`9`9D09D09D08໥9D09 uG8໥8`8`8`8`8`8`8`8`8`88໥8໥8໥8໥8`8`8`8`8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥9 uG9D09D09uG9uG9uG9Ĥ09ү9ү9ү9ү9ү9ү9ү99uG9ү9uG9D08໥8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8888໥8໥8໥8໥8໥9 uG9D09D09`9uG9uG99ү9ү9:oj:{$::(:6v:6v:!:{$:{$:oj9_:oj9_9v9|8໥8`8`8`8`8`8`8`8`8໥8໥8໥8໥9 uG9D09D09D09D09D09D09D09D09D09D09D09D09D09D09D09D09D09D09`9uG9uG9uG9v9ү9ү9_9: uG:{$:(:D0:R:g:n_:n_:n_:n_:g:g:R:=S::=S:{$99Ĥ09`8໥8`8`8`8`8`8`8`8`8`8`8`8໥8໥8໥8໥8໥9 uG9D09D09|9uG9uG9uG9uG9uG9uG9uG9999v9v9Ĥ09ү9ү9ү9ү9_9:oj: uG:{$::6v:=S:D0:`:g:u<:X:::: : ::::|:n_:Y:g:D0:{$999D08໥8`8`8`88໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥8໥9 uG9D09D09uG9uG99Ĥ09ү9ү9ү9_9_9:oj:oj:oj: uG:{$:{$::!:6v:=S:D0:K :Y:`:g:n_:u<:|:5:: :::d:Ĥ0:':˪ :':Ĥ0::: ::u<:X:g:=S:{$9ү9uG8໥8`8`8`8໥8໥8໥9D09D09D09|9|9uG9uG9|9`9D09D09D09D09D09|9uG9uG9v9ү9_9:oj: uG:{$:{$:!:6v:=S:D0:K :Y:`:g:n_:n_:u<:{:uG:::: :::::':ү:8:JN;;5;By;g;By;6:JN:ٵ:'::::X:g:6v:oj99D088`8໥8໥9D09D09uG9uG9Ĥ09ү9ү9_9_9໥9ү9ү9ү9Ĥ09Ĥ09ү9ү9ү9ү9_9:oj:{$:!:6v:=S:D0:Y:g:n_:n_:u<:oj:uG::::::::d:':˪ :ү:ٵ:>:JN;X;By;(;/;6v;I;Ps;Y;Y;Ps;I;4;*N3; :8:d:'::X:`:{$9ү9`8໥8`8`8໥9D09|9uG9Ĥ09ү9:{$::6v:=S:=S:6v:!::{$:{$:{$:{$:::!:(:=S:D0:R:Y:g:g:n_:|:5:::::::v:Ĥ0:,:ٵ:Dp:<;X;;!;(;-!;1T;?_;I;Y;`;p;oj;;;F;;<;;t ;Y;A!B;(:JN;oj:'::u<:=S99uG8໥8`8`8໥9D09uG9ү9_: uG:!:D0:`:g:n_:n_:n_:n_:n_:n_:n_:n_:u<:u<:u<:n_:n_:u<:u<:u<:|:X:X::: :::v:Ĥ0:˪ :ү:8:Dp:;5;&D;,;1T;:d;I;Y;`;n_;{;X;{$;;g;;;̊;W;r;W;L@;;;;t ;Tqb;1T;1T;{:S::g:{$99 uG8`8`8໥9|99_: uG:(:K :g:|::: : ::::::::::::::::::::d:':2:໥:JN;{;5;By;(;-!;6v;I;WP;`;t ;X;;#4;;;;Ĥ0;ү;;+ <<><<"<<<;%,;;;;[w?king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama/glycine.ndft0000644000000000000000000037517511531212712025402 0ustar rootrootTop5200 Glycine (sym) B<3044C4C4%> >>\>z>Ҡ>.9>T>K>N>v>f>8>˼=ߞO==ѻ==N=fp=?W&=< >N˵>w- >> +>Y>M>ɛ<>q>⧨>>L>]o>>>鷒>q>>>>>+>w?>Wd>%=#=]=V="==p=Pcw=-= ;Yk;:x::=::1::LO:C:wV:wV:s :s :s :wV:wV:wV:wV:wV:s :s :lvq:h%:h%:h%:h%:aJ:aJ:Re[:N:4:C.:H: :c:x9 d9'29'29۴9۴9۴9h9h9\9\9w9w9w9w9w9\9B9۴9'29:x:c: : ::!z:4:J:Re[:V:aJ:aJ:aJ:h%:h%:h%:h%:s :wV:]::::K:=::؊:0::=:=:::T:::LO:o:::LO:B::1::n|:;;6;35{;N4;w+-;; ;;<O<J<R<*z>/Q\>aB>>>[>A>ŗv>>>/>a>u>~> >и>%Y>(>ͨR>[>>>d>k>G~Z>= t=Ņ=0=E=~.=^š=;9=)= <&<h>>O`>w>A>x>X>>,>ڔ> e>5>>7>Y>>y">>'> >e>0>n>T|>`>5t>`=6 ==K=X=p$=N=,=< H>GF>mW>/>>r>y>l>|>ⶍ>>%>>>z.>F>W> '>܁>$>\>¿>>x1>TtF>$k==M-=C=,=[ =fi=@Ey="Ő=^>=|\>es> >>>>p>ш>U>玕>뎢>8>!>>?~>>ݬ?>ͩ>˺>?> u>>-|>l)>EO>J=$=h=I=k==\_=8===M<<<\3<:n;+;,5;+;%>;;Yk; ;A:d:w:K":=::::::B:::T::K":Aj;k;6t;^i;v7;< ;<<[&b>Uk>yI>p>0>L>>>7>R>vZ><>>)>l'>h>И>>>}^>W>п>> Z>Z>0a>=7=h=n!=+=y`=Tς=1o-= F<Ք<ӻ;,5;1X;6;;g;=s ;>a`;=s ;8n;2G(;(; ;;:d::':=:K::1:::::T::K":d;k;6;c\;S;;<<<*<q_>1<>_N>^>$N>+>>zo>z>>׬,>U>ܵ>>>;>ć>ٮ>Ip>i>O>>^>>kD>E> ?==}==G=q=s[=O=,=t;6;;A:::=:T:o:s :h%:]@:N:-(_:: : :c:29 d9'29'29'29'29'299 d9 d9 d99'29۴9h9w9l99:9 9 9 9Uq9uŰ9uŰ9uŰ9uŰ9uŰ9Uq9 9:99۴:2: :!z:J:V:aJ:h%:wV:o::: :::;G; ;;6;;%>;-;0j;2G(;6t;7;7;<;>a`;C ;J{;Ki;N4;O#8;N4;J{;D;;g;/|/;;;b::::0:=::'::::1::K":d;k;8n;i4N;;;< <OK<2)^J>>.2>_7>o>>V>_F>A>> >ϝ,>P>>ثA>>>>15>V>>S/>>>tf>RH>)->==@=B=NY=U=mF=Kq^=* y=tT<﩯<a`;2G(;$PJ;6; ::w:=:T:]:lvq:aJ:Re[:4:: :c99'29h9w9l9l9l9l9w9\9h9۴9۴9۴9۴9h9w9l9l99;9 9 9 9 9Uq9uŰ9uŰ9uŰ9uŰ9 9 99۴:c:Е:4:Re[:aJ:h%:g:::=:::I; ;k;^;%>;0j;6;=s ;C ;J{;Ki;LX?;N4;N4;N4;N4;O#8;U};];b ;gW;gW;gW;_;U};J{;=s ;0j;;k; -::::K":=:::T:T:s:B:K":d;Yk;>a`;sq;&b;;a<[<%\g<9׋#(>>W,>{G(>>>>>y>> >ʻ>Q>ϛP>:>4 >ԏF>>>>>>C>`>9>==ߏj=Ź=<=G==i=H[=)I=tT<<ʊ~<<=j<~Df<_;G; ::K":':]:h%:aJ:Re[:%: :x9۴9w999:9 9 9 9:999l9l9w9w9w9w9w9l9l999:9 9 9 9 9 9 9 9 9:9l9'2: :C.:N:aJ:h%:::B:':;A;y;$e;%>;2G(;<;CS;J{;N4;V;b ;gW;p;sq;uN;sq;p;k;i4N;gW;j";q:;w+-;}r;}r;}r;sq;gW;];Ki;>a`;0j;;k; :::ͽ:K":=:::::=::mP; ;C ;}r;;l<<5<*<>+ ?>L;>q[>v>l > >=>>>X>m>>x>ٟ>8>8>a>>>C>S>qC>Qb>)> =P=O=}===L=e=E=)X=}<;m<:<>Dl>j/>z>>>->E>P>Y>>k>”>r6>{>V;>>kI>5*>q>>fޢ>F>>T=I=͔=)k===|A=` =D =*G=H<_i<; ::=:B:h%:aJ:< : :x9\99 9uŰ9f9WM9WM9WM9f9f9uŰ9 9 9:999l9w9\9h9h9h9\9w99l9l9l9l9l9\9: :C.:N:aJ:h%:::':;k;-;C ;];w+-;i;};;!;p;;@;j; ;q;M;M;M; ;$;[;;};;;;v7;Z;Z;v7;;Y;|;gW;V;IE;8n;,5; ;;b::ܢ::K":::K"::d; ,;( ;Ki;/;3~;}<<<- h=e=====>>D>i*>>MD>>R>(b>c>c>&>>X>#>w>k}>>2[>>\>t->[>:>===ײ=ŷ=o==t=\}=B=,#=[N=-l<)<4<<<;6; ;A:d:::':':ͽ:;A;Yk;0j;O#8;;$;<7<ܲ<0v>J>l>>)>$n>>>S>>p>-!>>Ȗ>?>>r> >>z3>g?t>O3>/c>==sh=8j= ==G}=n-=YYW=B=.?=q=Y<< +<- <!< b<k;;2;9;&b;;/;gW;J{;-; ::]f:g:e:N:H:x9w99 9f9WM9WM9I9I9WM9WM9WM9f9Uq9 99l9w9۴9 d:2:c: : : : : : : : ::4:Re[:e:p/:::ͽ;;;=s ;^;K;;g;J;f<< u8<<;< <<J< \<͙<v<;;;);;;k;3;c;E+;;&b;&b;Ғ;;_;R;";~;j";ZO;J{;=s ;0j;!P;k; :mP:::S:::&;;;;g;^i;"g;9;޻(<O< (<6ر>#BP>P>pt>>6>H>>->>>U>Z>c>>F > >>>}A>m|>Z>AQ>"y9> ==& =x==O=@=j>=Wa=Cx=/== I<<<<<<<+<`-<T>,ű>U>sR9>->F>>>R>>>>>> ><>L> >|Ƶ>p>a>LE>1i>e>=L|=ˡ=ƶ==d=~Z=j/=X/o=EQ=3Z="=y=<_;2G(;$PJ;Yk; ;A:mP:mP;; ;Yk;+;@>;^i;K;$;k;P<^<- _>7! >\F>w>> >>"><>6>>B>>>A>l>.n>wz>o!>c>S>:->l> P= =I=>=`==s=9}=m{=\_=L7=9=(yM==Y;D;p;NL;;< <#V<>+<\"<}=r>>F>f/>~!>> >>(>>>v:>۷>j#>>>~q>e>>i2r>`>T,>Az>(1>z>=M=ڎk= I=#=Ͻ= =Y*=r"=b=R@=@=0T=!Q.=ͳ=<<ڷa< < >26f>U>pl>f>>y>>>>>>>>>8>zI>q>[q>Q9>A*>-~>r>V==Q'=Ԧ=}T==I=ۧ==w#=i,=Z)=Kq^=: =), ==y< ;2G(;%>; ;6;6;;0j;B;^i;;;Q;xn< ڵ<)0->G>E0>aU>xZ>l>>݀>^>>E>*>>$>p>ˬ>y8>n\g>d$k>P>B[>/|>> tM>=+ =⎅==>=D=H=l==|=o<=bF=SJ=B=1o-=!= =<;#a;$PJ;/|/;<;N4;sq;S;3;<^<r<9$ >/\>QW>iq>{Cn>Z>>->>^>a>k>S>/>:~>>sp>g>[hC>Gh>4 > ~>^>v===ރL=<=x=?=0=W=h=rJ=v =je=\_=L=93=(== A=04<3<<<+<+<R<@2<^;;U;;&b;/;N4;(;:K"::p/:aJ:Re[:N:4:-(_:-(_:)o:-(_:-(_:4:J:Re[:Y:aJ:h%:p/:C:B::=::d;b;k;"s;0j;8n;D;O#8;gW;;;E+;;< z<*?

>:>V>jBI>x>f/>*>>U>>C>m>x>:>>{ԩ>p">c8>U%>

'k>a> n>[===D=ξ=t= ==Z]==_=}?=p$=d=T=A~F=0=!s=W= XS=ʷ;C ;J{;W$;w+-;;;޻(<M<ѓ<88<^&4[> >A>WQ>e|>pV>xDS>~v>>>o>>b>z>>~g>tf>lOX>`iB>Q>3>r> w>>9==d=k==c=ٕ=M=E8=5:====1=x>=l}=]b=Kq^=8L=(==q=e<|<< 1<˴e<.#<< ;;g;N4;gW;+;;;u;*\;c];y;Y<<ѓ<88 m>(>BcJ>Rr>\>eLv>l>sp>{ >>>>V>>{>sG >l>eݰ>[ *>KB>+>@> O>6>>Q=Ž=:=㋽=y=,f=s=0=q=6===t=fp=S=@cC=0T=#4=%= X=@<><<>*>?>M>T]>Z3/>aA=>j\Z>sY>}r>a>>n>xc>o4b>gߔ>bMZ>]>Tea>CY>"h>>,>Z>>>N=:====)=V==`=e=dc=~<=ou=^ZV=Kq^=9,?=*8)=J==<`<<Ԍ{<¾< $>)>;g>G>L;>Q>Ww>`?>ku>uq>{>{>t>kD>a>[q>X;>T8>L>9>>>JX>;>[> q>l>ر=N=l=k=E=g=n;=T===:{=y+=h=Tg>=@=0T="@= F=\<<"<P<<v<b>(L>8>B>F>HZ>L>U>_>j3c>oh>m>e_>Y>PeT>Lq>K>Ii>A>2 >z>7> |>> 4> > 4>_=r=D?=㩈=ڮ=Ƒ=d=G==I=j =1=qR3=^J=K5=7r='t=U= X=<\|>>,N>9">@0>@d>?>B>I>R>[0>_>\>Rrc>ED>9>8J>;!><>8]>-p> L>>b>> )>^>/p>&> >=J==\=,==s=K====|=h=SL;=?W&=-\=)==!<Ք>x>2+:>Ax>?>;U><0>@J>Hy>N_>O>Jy>

.>$>%|>,>2#>1>)>6>z>Y><>>>>+>=x{=ѧ===#=)=(==T=F=%=o!=\B=F=3M=$f=%= |=<<<;,5;1X;7;CS;P;j";{;NL; ;c];=< < u8<%c<0L,>(>8>B[>ES>B[>>_>

<>>>A# >>>5ա>(]>>|>j>>1>&>)>%>V>@_>{>> C>!O>3]>:> h>c='Y=Q=ղ=̭=E==+4===N =w2=cj:=O*=:8]=*s=m= F= (="M=<< <<ެB< 4<ŧI+<`z<f< <٫D=<="Ő=?=^ZV=x{====Ɗq=9>>">/zR>>k>FL>H-_>Ec>A>>X><A>:>7;>0>%+>H>_> F> )>k>> N`> >#X>%>' >*J>->/r>._O>%S>a>5=t=^)=ZI==!==]=r===@=lBO=X=E7=5 =), = U=B== =0=2<}<-< 0<5> > ^>>? > >>%=f==k==@==j[=p=o=a^=:Q=ޕ<+>q>1>?;8>E>Gh>Ef>AQ>;>8>4>/g>$>> {>M >,>F> ,>>N> l*>-S2>/3>0'>3>7g>:>< >5>%>>pm=6?=ᶊ=t==X2=ȳ=ǚ=4U==-y=y=h =VC=F=8j=-zL=%T=wP= *=eo=\=<#<޶>ZI>!>/|>6 >7 >4=>1Ư>.n5>,>+ >%D3>> =#=o=C=V==1=s}=K=% {=<׿<>i<[d<*{0<;=;y;T;;Y;l;Y`;J{;=s ;35{;0j;2G(;7;G;U};k;;;;;*\;͂&;;a< n<<*i>=>.ǔ>9e>>_>?>>_>;/>7n>2u>.o>&)>>> q>m>>> >,>њ>'QB>7FJ>97>:c0>;>@R>Fu>Jg>F>8>!>> !o=U==l=\=p===ҹ===&=|Qh=l=]]=M=?*v=3=*)D="=ޕ=c=\=%<<J<_ !o>*yS>E\>U['>]$>b>es>eݰ>e>d*>c>c*>^>Tea>Aq>"0>=V=w====[3=/e= <ؼ4;H; ;;;gW;N4;@>;2G(;$PJ;$e;6; ;%>;7;J{;b ;~;;[h;q;Ī;tt;Ch<<G<)QH<>7>'?>/?>3\>4Y>4V>37X>0a>+>&q>T>Lc> P>x>>> [!>"n>>)s>2d>E.C>F8>EHT>CC>F>Mu>S>S̴>J >5ա>+>6=0===NE=֨o={=M=N=1=:===s=bm=R"S=D:Z=8==,="u==eo==P;><>\r>pj>}>7>(>{>XI>>Ij>C>>H>>p>UG>,N>a==s=3q=w=hMn=9Z=wa`;/|/;^;; ; ; ;6;-;C ;];}r;A0;E+;7x;׿;<͙<e<)<<>k>">(]>*yS>)N>*6L>*L>'3w>"v>jG>>l>q>  > }>w">>"\>0>:j>A>Qh>P>Mx>JrI>L8>S>\Kj>_>Z_>KB>1>> >=h==s=(==mq=}===={=t=c.=S.q=D=8L=+=!X={=;=Q=2<#<﩯<"<<+ )>A>jBI>@>2>~>>T>y>>>>>4R>&>>\>|K>W>"u=N=n==(=pc=?W&=;>a`;^i;+;_; ;;<O<$<)QH<>+ }>hW>"PC>&>&T >#r>"J>!S >3]>>uf>->Ye> >B>[H>!<>/$>;>H>N9>QO>]b>[>Ws>S>T>\>f>ku>i6+>^>M[>7>&>>> 0>J>=Y=ڎk=w==J=ҟ===E=o<=^e=O΄=A3=4=)I=)== =e=< <8>6x>ib>>vG>vh>BY>c>j>>>.>.>oQ>+>K>>K>i2>|H>N>=#=F=b=u=A3= F<߸`<;G; ;;;b;r;%>;C ;c\;";&b;;;ǭ<@2<%\g<>+<[d<~>>>#BP>'>%>">> u>>;>>|>)>>[>>#F >4 >C >Q >Y>]uR>^k>k;>j3c>f/>c`>c@>jh>st>xX>x>r{>h>[V>O>D>6j>%a>>Z=킏===R=L==D==o=v%=dgr=Tς=He=;n=/Q=%T=== =u<<<<$>_>y>)>r>E\>.,>>nl>>i>t6>ٓ>U>>ږ>!X>>BY>>q[>3f==A=b=v@=@ =><<;$e;; ;y;$e;1X;J{;sq;Z;;;< <OK<:N>C>4B>$~>'\n>$>!/>>9>9>>>I>>z>a>.7>@>QH{>^+>gJ>j>k'>{>|">{g>yu>zF6>~~>_>> >>>zd>pt>f$q>X8>Dl>*>B>?=4=r=e4==޽=n==xM=e=U̺=Jͅ=>=3Z=(==Q=Jl=e=&<<<ܔ<ԪE^>O>]>R>>M>Ӣ>ܽ>)>މ>Ï>'I>??[??E>1>Xo>.3>>"P>TKP>k=8==s[=:Q= X<;^i;;&b;%;<M<q<1vh#>#>>#^>&f>%5M>">!>!5@>"7>%ip>%V>">8>">!>3*>IHa>Yx>h>q>w]r>z; >>?0>F>Y>>4>>>n>>U>U>$'>aF>o;>Z`>A1>#r> F===@===N==vDL=b=S=G-==;=2=)&=!=u==!<)d>8v>rĸ>>v>>މ>???V???`?{V???? ?>I>> >iW>$D==/=ln=2=<5< O>"{>b>%>)@>)>)>* V>)N>,%>/`A>0>.>)>$ŗ>*:>9q#>O0@>aLi>q>~>1)>O>z>Y>^>C>&D>>_>>V>#>\J>`>L>>o>m B>S>5%>`>Hh====77=}=x=oW=[=M=@cC=7=-u=&o=J=uR= d=i( >iK>m>H>@>p?p? -??ǩ????5??$?J??]?>>>C>>st>=7==b{=*R=?<Ï<7 H>*>"n>,O>0w>2I>3r>4԰>5n>7>; >=H:><)~>7ȟ>3*>7>>Ec>Xb>m>3>$4>ex>>J>>c>I>c>߱>3t>,> >(H> >>`>H>4>{N>bQ>FTr>!>P==ڮ==`===e=P˼=@r)=5=-"=&4b=== (= <{6<Mۓ>#l>&q>3,,>9><)~>>ˁ>@>B>EW9>H>K>L>Jg>H'>Mqe>YP>j>ca>v'>}>BF>>,>r>>x>I>>1>\>>EB>F-><>b>>B>C>l1>Oq>(1>h#==v=<=+==q=VC=@r)=2?='Y= b=+== G=<v<0 ;+<;1<<>ZB>>k>>츊?A?׀?v?s?S?? 9n?"F}?$f?'8?)O?+?*y?%Z?3?~+?>Э>Zt>cNL=<===N="!={< 1<9AQ>"{>(X>6;>@3>Dh>F>IO>L>P>SJ_>W>Z\%>\ >_>f>r{>s8>Wq>p>o>>]>’>B>>ê>Ū>ٌ>˄>>Y>M>x>h>+>>\)>t0>oO>PeT>#>D==%='=K=i=`&=B=.=!s== (=Q=$>V>.>>;>??N?{m?h?"0%?&*?(?+R?.&?16?2?3x?39?/`?'Va?)?B>`W>ny>e>A=ߥ= =|=D:Z= b=123>>'\n>7! >Aq>G>K>P >T=>YLO>]~>c`>j>>p>w >>>Y[>->v>2>x>ª>i>3>K9>ϼ>Һ>џ>>Á>>9R>>>p>y#>>F>f>BL>==w=Y=}=0=j=I=-=AJ= M4= k>V>>m>C>?, ?a?5???%4_?*?02/?4|??9?>@T?@D??M_?<;?8?R?0?%!??q>S>>|H>u=Ĉ==kb=;== y=m>=p>#ӊ>4>@>I>PVo>Vj>\!>c>j>r4>|>4>?>>>>x>>$>٬>˿>ߌ>ۤ>P>>V> C>O >>>r>"> >ō>%F>D>oh>N^>8=,=ۓ=`U=='=oW=M=.h==T<2<<<<<}<7<<0N< }|>S>z> > >߽?v?V?? ?'05?-{?4Wy?;~?B!?I ?Nr?O[?M??C>?8v??-3?!-W?w?>>{>F)=1z===ZG=4P=!=A= =-===!=h== G= d= = Im=<=5r>>>1>?>L>Uu8>^:>f/>p>{>>u/>l>`>H>@}>>~>pp>ׁY>ඇ>> |>B_> >>Z>> P>|>ش>4>>A>t>`>l)>I>\G=~ =3=7Q=A==&=hG=G=*d=”=5D`>>ht>Z>z??_o??"W?+$?2+?8?AS?K)8?Pu?Tu?W?X@?R ?E?33?%h?e? yl>ړ>">eW== /=)=p =JGv=/V=!=@L=N2==<==\="=%=(=*R=+&|=)=&4b===Y<<ټJ>>'>>1R>AO>Q>] >h>s>Gs>|>0>>>v>DW>e>>p}>ݷk>]><>"?4d?-?^B>>>#>Nc>ڥ>>pB>S+>ݧ>l>eS>5> E=|=IL===wǓ=Wm=8= U= g8<<̢<z<<~<\I0%>zU>];>>)?!?q?:O?%m?/=X?9?C)?K?Q@?W@?\t?_\?`l?\t?R?=hX?)??>+>>w>=R=~=|`N=V4=: =(yM=J====wP=%=-"=4=;q*=@r)=E =GO=D=>=5r=)v== < =R=i ===X== =Q=>m>36>%:>7o@>IO>Y2>>gЮ>u0> `>tD>;>4>(B>`>M>l>>'>>|>>&?x?4?S?>?o?$>[>`=>n>֑)>%>X>#>>_;>"0=o=u1=b8=M==eU=@r)=&o= < /Bw>qJ>k>%>o?f?*a?U?'?2??K?LyK?SY?X?_?dZ?f?fF?c?Z?Jÿ?0&?? >)3>R>>===2X=}z=X=>>2c>FC>UG>d>sU>->q|>6>>5>,)>U?>l>ҜH>ݹH>d>??*0?/V?? ? ?"?2>>>ٳ>?>zb>>F>ZE>i<=k=Y==X`=s}=N=,=z<-<Spm>7;>sN>>! >ݐQ?lJ?(?h?%?3 C?A?Nxc?U?\:1?b[Q?f?j:?j?g?^?M?3K?! N?>>>}+> =Q==q%=P=5r=%n=o='= == U==='t=32=?HA=J8=Q=W+=YK=W=QB=FC=8j='>==-l<<v< K>(%>A>Um>e>sm>>>>>n>Dj>\>ˑ>>>?I??I? ? =? U? ? ?>>X>Ӑ1>>EB>J>i>O̧> =5=M=1Z=yo=V&=4\=:a`;<;>a`;J{;gW;;8;;ށ;f<W<w<"D<- <8r<@f%>?">xe>w9>>ޑC??TC?`?#?/ ?@ 8?N?U?[< ?`?eX?hx?j?h(?`?Lc?/2??>v>^n>yL>==o=`c=;S=&=@= A=<<<='Ə=2=<}G=D=Kq^=Mc=K(=D=:Q=.?= 6,=Jl<}<х<7D<7<,h=V(=m!== =n=(=ū=6 =>>3\>PJ>e>w>>>&1>.>#>!>$>T>ܣ>@>G$?? ]? ,??N? h? L?1?_>><>߇ >>98>>'>qx>5 =c=ǀ6=ҟ=5=_ =6=q=}u<<a`;-; ;; ;;̚:I;A; ;;7;T*;;?;;;7< <e<#<.p<:IR>]8>F>>ht>>ޅ>>}>_S>>ȩ0>d>>?;?? ?? ??? ?&?9>a>ʧZ>N>>sE>Xp>@=Ċ=$=s= =W27=)I=<<->>Rc~>">Z>Q>]'??x?a\?!"+?+?5?>)?Dm?Je?P.?U?Xz?Z?Xt?P}?>z?-?!$?Y?/>> > k=d=W=He=d<<8x>%@y>O;l>un.>>>7N>@>> >>-?U??g? ? ?'?y?t? ?>w>`>$><>p>n>/=+ =^=,==^J=1Qb= X<Q<\3,!>>>>?X???g?#?-^?8b?C?H`?H?I_?K?N?O9?N?F?5=?&f1?GQ?;>;>>s=ҿ=!=g=%T<<==U> P>"v>=H:>^MM>>>>M>t6>۰>+>d??b? #? *? ? ? 1? ;?? >6>Iw>&>>oNs>;>=&=(R='=aC=3h=<<;r;;;Y<<5I>vN>Һ? mH???%?)5?*?-?1?9?B?Ik?I.?D"?Aq[>'>V]==2X=N0= <5\>7g>L;>X>d >yn;>B>>x>>r>:?U?? mH? ? ? ? a+? ??>->ޅ>ƹ>X>>4">=ҝ6=]s=6=eF=4u=S=">>?2?(Q?E+?W?[?WT?P?IPK?A?BD?E?G~?CP?=)?:_?7?3(?,g?#H?g?>c>Ҽ>~`T>==&=1o-<<7;;NL;v;;;;;K;Y;~;q:;_;Ki;>a`;/|/; ;; ; ; ;6;-;G;i4N;Z;< ; g<@2<:N<<|c==8==s===>;>F6>i>~'>~>{>>>>M>}>b>{@?? ? v? ?? c? !?'i?(J>H>)>_>͙m>=>>Y>i=4=V=l=j#=4= +<$7>>ӗ?g?0a?cf ?n?q%?p?m?i<8?\?O?F?BD?@?=f|?80m?3p?.?'Z????>Ӭ>>S8=x=[[=W=;;$PJ;$PJ;$PJ;$PJ;"s;!P;; ;$e;Yk;;b::d:x:::ܢ: ::n|:B:::::':=:;;2G(;Xrw;;;<%>Y>C>\0>+>>0>4> >>>+>5j???e?#??*->D>9>3Z>=f>`>{a>>q>oE$>5n>==js=;S`=<װ<\3fϽ>? |*?%M?^?pK?xV?{?xȅ?r9?m ?c?S?E?>?9?5{?0z?*y?$3?Sr?.?T>t>>3,,=Ơ=A=3><)<{=< c;;j";<;$e;A:S::=:=:K":K":'::::Ϛa:w:Ϛa:'::B:s::C:h%:e:aJ:Y:]@:aJ:aJ:aJ:aJ:aJ:V:Re[:Re[:N:Re[:aJ:h%::n|;;%>;U};NL;׿<I >8>>X>>>b\>q>v>+>۶>zA>???>>l>>>ڴ>j>>=>>E>x?>ASs>D=N=g=2=eo< 1< b>\>G?"?9?lc?v?~C??|?sI?l?a?N0??D?7?1,?+c?&?!??2>>>+>Ù=)=q4h=*<Ȧ<>+;׿;U};A:K"::o:s :h%:h%:h%:h%:h%:p/:wV:C:]:LO:LO:(:LO:C:s :h%:aJ:Re[:!z:c9\99 9 9:999l9l9l9999w9~:!z:aJ:wV::d;%>;gW; <<<<~=5====8j> i>tk>>>D>z>:>>ۃB>1i>wm>j?~?>J>v{>É>и/>©>V>V>u\>O>p%>C\>=@=3=d=d<Ν)<\3

H)>f>ǐ??Kt?na?wc?}W?}V?w~?o-?gX?R1???3O?,?& ??ɣ??2>ߨ>1>yH>=Ӟ=[3=!<<H;3~;$PJ::h%:]@:N:)o:H: : : : :C.:4:N:Re[:]@:aJ:aJ:aJ:aJ:V:N:!z: 9\9 9WM9:09:09:09:09:09:09:09:09:09:09:09:09:09I9WM9:c:N:h%:1:d;2G(;";H<#<$0<=0'z=x=@>>x*B>>>>~>Q>K>>Q>>H>%>H>W>|>G>O>؀>7>>!>y=>Ud>%|=<=3=?=܋=dX=1q=a`;;Ch<6Y<<;=&a=n=/=f>Y;>>*Y??I?l?s}?v?u?o}?g?N?7?,B?%1??)?? >>W>6>J=@E=I=C<= .q>wk>>)>>?/?%? ?<>&>&>}> ]>i>Q>m>U>>e>>:Ee> E==¤u=69==^=.=y<&<~;H;NL;H:Aj:g:< 9w9WM9:09:09f9f9 V88I88I8m88 8 8 8888 8 8 8 8 888m88I88I88I88I88I88I88I88I9 V9 V9 V9f9:09:09I9f9۴:C):s :K";+;;:<- <<঳=&<=q=X=k+>V >>{@?l?329?^\?k?m]?k6?[?=¦?+I?#'? ?Q?v?<>N>®>{>m>r="=x{=#e>?j> > .>\??`,?c?>>>׻>L>=>o>q>X>N=M= '==E= ]=T='^J=MEbe>>ݡ?{V?_?0?A?C>?7?)"E?Ga?}?b? >>>>>v>=%==;Dz<&>:>>a~>MJ>>>>.>> >EU>>p>bMZ>7 =f=J=AW==i;=D="Nf'/>>Q>?7?M????#? q?R(>>x>>>gߔ>==m=J5=u<=r=>>bT>>">?>=2>}>˵T> >d >b>>l>._O=E$=Y=6=x/=LF='|= X<`<w<,<3SE<a;9;[=p;k:K"9'29uŰ9I9:09 V88I88I88I8m88 8 8 888P8P887R7R7R7R7R888P8P8P888 8 8 8 8 88m88I88I88I88I9 V9 V9f9+K9:09I9::C.:lvq:;N4;<ܲ>c%V>>>%2>>>>vg>4>j>>>pZ>/==t==S=<8 y>[>>H>K>S>>>%>j}>1==,=t{=t:=<֧=TB>fgx>>&D>>8><>>>e6>.=m=n==|=CZ= @<%ip>NXE>a>ghj>^>H>{===%=j=w#===P< 1<Q>,h>Fu>K>?Q>#vr>l=2^=k=69=|=_W=-=K=@ =8X='t=< ;Wn;<u<`z:::e:99I9+K9 V88I88 887R7R7R7R88 8 8m88I88I9 V9f9:09 : :e:;A;<;;9;<<^<<#V< \<e<͙;;u;gW;$e:=:h%:99WM9:09:09f9 V9 V9 V88I88I88I88I888 8 8 8 8 8 8 8888P8P8P887R7R7R7R7R7R88P88 8 88m88I88I88I9 V9 V9f9:09I9uŰ9'2:C):lvq:K;;35{;gW;R;N;;Q;P;2;;!;;uN;H;::B:wV:Re[:29Uq9:09f88I8m8 8 887R7R7R7R8P8 8 888I88I9 V9f9:09f9:Re[:wV:=; ;;g;k;;< ; ;ڊ;޻(;};;?;o;2G(:d:LO:Re[9 d9f9:09:09f9 V9 V88I88I88I88I88I8m888 8 8 8 8 8 8 88888P8P8P87R7R7R7R7R7R88P88 8 88m88I88I88I88I9 V9f9:09:09WM9: :]@:g:=:&;;>a`;P;b ;gW;_;O#8;>a`;( ;y::=::lvq:Y:9l9WM9:09f88I8m8 88P87R6S7R8P8 8 888I88I88I9 V9:09I9:Е:aJ:]:;A;$PJ;D;b ;}r;Y;;nA;MF;-;̚:: :h%:99I9:09f9 V9 V88I88I88I88I88I88I8m888 8 8 8 8 8 8 88888P8P8P887R7R7R7R7R7R7R8P8P88 8 8888I88I88I88I9 V9 V9f9:09I9uŰ9۴:C.:aJ:{[:]f:ͽ;; ;k;;b:d:'::C:h%:Re[:-(_: 9w9uŰ9I9:09 V88I8m8 88P7R7R7R8P88 88m88I88I9 V9f9:09f9۴:)o:aJ:C:: :ͽ;;|; ;;6; :ܢ:: :lvq:J9۴9WM9:09f9 V9 V88I88I88I88I88I88I8m888 8 8 8 8 8 8 888888P8P8P8P87R7R7R7R7R7R7R8P888 8 8 88m88I88I88I88I9 V9f9:09:09I9 9'2:C.:Re[:h%:::]f::::wV:h%:Re[:9 d9l9 9WM9I9:09f9 V88I88 887R7R888 8 888I88I88I9f9:09I9 9'2:!z:Y:h%:::: :=:K:':o:h%:N:x9Uq9:09f9 V88I88I88I88I88I8m8m8m8888 8 8 8 8 8 8 888888P8P8P8P87R7R7R7R7R7R7R88P888 8 8 88m88I88I88I88I9 V9 V9f9:09:09WM9 9w: :-(_:Re[:aJ:aJ:aJ:aJ:N:C.9~99f9I9:09:09+K9 V9 V88I88I8 8 8P7R7R7R8P8 8 88m88I88I9 V9f9:09I9 9۴: :0:Re[:aJ:aJ:aJ:aJ:Re[:C.9'29 9I9:09 V88I88I88I8m8888888 8 8 8 8 8 8 8 8 88888P8P8P8P887R7R7R7R7R7R7R7R88P888 8 8 888m88I88I88I88I9 V9 V9f9:09:09I9f9 9l9'2:c:c:c9'299uŰ9I9:09:09f9 V9 V88I88I8m88 887R8P88 8 888I88I88I9 V9f9:09I9f9;9h9 d:c:c:x9۴99f9I9:09 V88I88I8m888 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P8P8P8P887R7R7R7R7R7R7R7R88P8P888 8 8 8 88m8m88I88I88I88I9 V9 V9f9:09:09:09I9WM9WM9f9f9WM9WM9I9:09f9 V88I88I88I8m88 8 887R7R888 8 88m88I88I88I9 V9f9:09:09I9WM9f9uŰ9f9WM9I9:09:09f9 V88I88I88 8 8 8 8 8 8 8 8 8 8 8 8 88888888P8P8P887R7R7R7R7R7R7R7R6S7R7R88P8P888 8 8 8 888m88I88I88I88I88I9 V9 V9f9f9:09:09:09:09:09:09:09:09f9 V88I88I88I88 8 8 88P7R7R7R8P88 8 88m88I88I88I9 V9f9f9:09:09:09:09:09:09:09f9 V88I88I8m88 8 8 8888888888888888P8P8P887R7R7R7R7R7R7R7R7R7R7R7R7R8P8P888 8 8 8 8 8 888m88I88I88I88I88I88I9 V9 V9 V9f9f9f9f9f9 V9 V9 V88I88I8m88 8 88P7R7R7R8P88 8 8 88m88I88I88I9 V9 V9 V9f9f9f9f9 V9 V88I88I88I8m88 8 8 88P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P7R7R7R7R7R7R7R7R7R7R7R7R7R88P8P888 8 8 8 8 8 8888m8m88I88I88I88I88I88I9 V9 V9 V9 V9 V9 V88I88I88I88I8m88 8 88P87R7R8888 8 888m88I88I88I88I88I88I9 V9 V88I88I88I88I88I888 8 8 88P8P8888888P8P8P8P8P8P8P8P887R7R7R7R7R7R7R7R7R7R7R7R7R7R8P8P8888 8 8 8 8 8 8 88888m88I88I88I88I88I88I88I88I88I88I88I88I88I8m88 8 8 888P7R7R7R88P88 8 8 888m8m88I88I88I88I88I88I88I88I88I8m888 8 8 888P87R7R7R7R7R7R88888887R7R7R7R7R7R7R7R88P8P8888 8 8 8 8 8 8 8 8 88888m8m88I88I88I88I88I88I88I88I8m888 8 8 8 88P7R7R7R7R88P88 8 8 8 8 8888m8m8m8m8m8m8m888 8 8 8 888P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R8P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 88888m8m8m8m8m8888 8 8 8 888P87R7R7R7R8P8P88 8 8 8 8 8 8 88888888 8 8 8 8 8 888P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P8P888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8888 8 8 8 8 8 8 888P87R7R7R7R88P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 88P8P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 888P8P7R7R7R7R7R7R88P8P888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 888P8P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 88888P8P8P7R7R7R7R7R7R7R7R7R7R888P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P8P87R7R7R7R7R6S7R7R7R7R888P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 888888888P8P8P8P8P887R7R7R7R7R7R7R7R7R7R88888P8P8P88888 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P8P87R7R7R7R7R7R7R7R88P8P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 88888P8P8P88887R7R7R7R7R7R7R7R7R7R888P8P8P8P8P888888888 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P887R7R7R7R6S7R7R7R7R7R88P8P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P887R7R7R7R7R7R7R7R7R7R8P8P8P88888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P8P888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 888P8P87R7R7R7R7R7R8P8P888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P8P88 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8888P87R7R7R7R88P888 8 8 8 8 8 8 8888 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 888P8P87R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P888 8 8 8 8 8 88888888 8 8 8 8 8 8 88P8P7R7R7R7R88P888 8 8 8 8888m8m8m8m8m88888 8 8 8 8 8 8 8 8 8 8 8 8 8888P8P7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R7R88P888 8 8 8 888m8m8m8m8m8m8m8888 8 8 8 8 88P87R7R7R7R8P88 8 8 8 888m88I88I88I88I88I88I88I88I8m8m88888 8 8 8 8 8 8 8 8 8888P8P87R7R7R7R7R7R7R7R88888887R7R7R7R7R7R88P888 8 8 888m88I88I88I88I88I88I88I88I88I8m8m888 8 8 88P87R7R7R8P888 8 8 88m88I88I88I88I88I88I88I88I88I88I88I88I88I8m88888 8 8 8 8 8 8 8888P8P7R7R7R7R7R7R7R7R7R7R7R7R7R7R888P8P8P8P8P8P8P8P8888888P8P88 8 8 8888I88I88I88I88I9 V9 V88I88I88I88I88I88I8m888 8 8887R7R88P88 8 88m88I88I88I88I9 V9 V9 V9 V9 V9 V88I88I88I88I88I88I8m8m8888 8 8 8 8 8 888P8P87R7R7R7R7R7R7R7R7R7R7R7R7R8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P88 8 8 88m88I88I88I9 V9 V9f9f9f9f9 V9 V9 V88I88I88I8m88 8 8 88P7R7R7R8P88 8 88m88I88I9 V9 V9 V9f9f9f9f9f9 V9 V9 V88I88I88I88I88I88I8m888 8 8 8 8 8 888P8P7R7R7R7R7R7R7R7R7R7R7R7R7R888P8P8P8888888888888888 8 8 88m88I88I9 V9f9:09:09:09:09:09:09:09f9f9 V88I88I88I8m88 8 88P7R7R7R8P88 8 8 888I88I88I9 V9f9:09:09:09:09:09:09:09:09f9f9 V9 V88I88I88I88I88I8m888 8 8 8 888P8P87R7R6S7R7R7R7R7R7R7R7R888P8P8P88888888 8 8 8 8 8 8 8 8 8 8 8 8 888I88I9 V9f9:09:09I9WM9f9uŰ9f9WM9I9:09:09f9 V88I88I88I8m88 8 887R7R888 8 88m88I88I88I9 V9f9:09I9WM9WM9f9f9WM9WM9I9:09:09:09f9 V9 V88I88I88I88I8m8m88 8 8 8 888P8P87R7R7R7R7R7R7R7R888P8P8P8P8P8888 8 8 8 8 8 8 8 8 8 8 8 8 8 888m88I88I9 V9:09I9f99۴:x:c:c9 d9h9;9f9I9:09f9 V88I88I88I88 8 88P7R888 88m88I88I9 V9 V9f9:09:09I9uŰ99'2:c:c:c9'29l9 9f9I9:09:09f9 V9 V88I88I88I88I8m888 8 8 888P87R7R7R7R7R7R7R7R888P8P8P8P88888 8 8 8 8 8 8 8 8 8888888m88I88I88I9 V9:09I9 9'2:C.:Re[:aJ:aJ:aJ:aJ:Re[:0: 9۴9 9I9:09f9 V88I88I8m88 8 8P7R7R7R8P8 8 88I88I9 V9 V9+K9:09:09I9f99~:C.:N:aJ:aJ:aJ:aJ:Re[:-(_: 9w9 9WM9:09:09f9 V9 V88I88I88I88I8m88 8 8 888P87R7R7R7R7R7R7R88P8P8P8P888888 8 8 8 8 8 8 8888m8m8m88I88I88I88I88I9 V9f9:09Uq:x:N:h%:o:':K:=:: :::h%:Y:!z9'29 9I9:09f88I88I88I88 8 887R7R888 888I9 V9f9:09I9WM9 9l9 d::Re[:h%:wV::::]f:::h%:Re[:C.9'29 9I9:09:09f9 V88I88I88I88I8m88 8 8 888P7R7R7R7R7R7R7R88P8P8P8P888888 8 8 8 8 8 8 888m88I88I88I88I88I88I9 V9 V9f9:09WM9۴:J:lvq:: :ܢ; ;6;; ;|;:ͽ:: :C:aJ:)o9۴9f9:09f9 V88I88I8m88 88P7R7R7R8P88 8m88I9 V9:09I9uŰ9w: :-(_:Re[:h%:C::':d;b;;k; ;:ͽ:]f:{[:aJ:C.9۴9uŰ9I9:09f9 V9 V88I88I88I88I888 8 88P8P7R7R7R7R7R7R7R888P8P8P88888 8 8 8 8 8 8 888m88I88I88I88I88I88I9 V9 V9f9:09I9::h%:: ;̚;-;MF;nA;;Y;}r;b ;D;$PJ;A::]:aJ:Е99I9:09 V88I88I88I88 8 8P7R6S7R88P88 8m88I9f9:09WM9l::Y:lvq::=:;y;( ;>a`;O#8;_;gW;b ;P;>a`;:&:=:g:]@: 99WM9:09:09f9 V88I88I88I88I8m88 8 88P87R7R7R7R7R7R88P8P8P88888 8 8 8 8 8 8 888m88I88I88I88I88I9 V9 V9f9:09:09f9 d:Re[:LO:d;2G(;o;?;;};޻(;ڊ; ;< ;;k;;g; :=:wV:Re[99f9:09f9 V88I88I88 8 8P7R7R7R7R888 8 8m88I9f9:09Uq:2:Re[:wV:B:;;H;uN;;!;;2;P;Q;;N;R;gW;35{;:K:lvq:C)9'29uŰ9I9:09f9 V9 V88I88I88I8m88 8 88P87R7R7R7R7R7R888P8P8P8888 8 8 8 8 8 8 8888I88I88I88I9 V9 V9 V9f9:09:09WM9::h%:=;$e;gW;u;<͙<e< \<#V<<^<;;9;;<;A::e: 9 9:09f9 V88I88I8m8 8 87R7R7R7R888 888I9 V9+K9I9::e::;%>;^i;;^;< <w<<"U<"<<Xm<ظ; ;u;w+-;2G(:d::aJ: 9 9I9:09f9 V9 V88I88I88I88I88 8 8 887R7R7R7R7R7R888P8P88888 8 8 8 8 8 8888I88I88I9 V9 V9f9f9:09:09I9 :x:Re[:]:8;:;;tt< +<5/:=:h%: 9uŰ9:09 V88I88I8m8 8 887R6S7R7R7R7R7R7R7R888P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P8P88 888I9:09uŰ: :h%:=; ;gW;9;<l>#vr>?Q>K>Fu>,h>Q=V==m=gz=*d<<{>H>^v>ghj>a>NXE>%ip=:===d=\<.>e6>>><>8>>&D>>fgx>B=E=ju=&=Aoa= 1>j}>>>>S>K>H>>[> y=S=ۧ=Cf<5/>pZ>>>j>4>vg>>>>%2>>>c%V>==W=V4=r<ʊ~._O>l>>b>d > >˵T>}>=2>?>">>bT>==r=><>gߔ>>>x>?R(? q?#?/???M?7>>Q>>'/= =~=d}=wP?A?0?_?{V>ݡ>>Ebe=ܫ=OX=m{=#< 1N>X>q>o>=>L>׻>>??c?`,?>\> .> >?j>e=T#==\_= v<<7 ;;uN;Yk:=:h%:)o9h9f9:09+K9 V88I88I88I88I88I88I8m888888m88I88I9 V9:09:09I9uŰ9 99l9w9l9:9 9f9WM9I9:09:09:09:09:09:09:09I9I9f9h:]@:K";P;r>m>{>®>N?=P?v?Q? ?#'?+I?=¦?[f?k6?m]?k^?^\?329?l>{@>>V =k+=X=q=&<<঳<<- ;:;;+:K":s :C)9۴9f9I9:09:09f9 V9 V9 V88I88I88I88I88I88I88I88I8m888 8 8 8 8 8888 8 8 88m88I88I9 V9f9f9:09:09WM9w:< :g:Aj;H;NL;H<~<&=y=.=^==69=¤u=> E>:Ee>e>>>U>m>b>i> ]>}>&>&?>>)>>wk> .q==v5g=m<J>6>F>? ??)??%1?,B?7}?N?g?o}?u?v?s}?l?I?>*Y>>Y;=f=/=n=&a<;<<6Y;Ch;;>a`:d::aJ:]99WM9I9:09:09f9f9 V9 V9 V9 V9 V88I88I88I88I88I88I88I8m888 8 8 8 8 8 888I88I88I9 V9f9:09I9WM9 9~:J:s :K";/|/;Z;<%|>Ud>y=>!>>7>؀>O>G>|>W>H>%>H>>Q>>K>Q>~>>>>x,>=@=x=0'z<<$0<#;H;";2G(:d:1:h%:N:c99WM9I9:09:09:09:09:09:09:09:09:09:09:09:09:09WM9 9\: :!z:N:V:aJ:aJ:aJ:aJ:]@:Re[:N:4:C.: : : : :H:)o:N:]@:h%:;$PJ;3~<H<=!=[3=Ӟ>>yH>1>ߨ?2??ɣ??& ?,?3O???R?gX?o-?w~?}h?}E?wc?na?Kt?>ǐ>f>H)=P=G=cj:=!`<>C\>p%>O>u\>V>V>©>и/>É>v{>J??~>j>wm>1i>ۃB>>:>z>D>>>tk>i> :d::wV:aJ:!z9~9w9999l9l9l999:9 9 99\:c:!z:Re[:aJ:h%:s :C:LO:(:LO:LO:]:C:wV:p/:h%:h%:h%:h%:h%:s :o::K";A;U};׿<>+<Ȧ=*=q4h=)>Ù>+>>?2??!?&?+c?1,?7??Ev?N?a?l?sI?|??~?v?lc?9?">G>\>=L==Rl= <D>ASs>x?>E>>=>>j>ڴ>>>l>???>>zA>۶>+>v>q>b\>>>X>>8>I =w}=s==CL="M;:n|::h%:aJ:Re[:N:Re[:Re[:V:aJ:aJ:aJ:aJ:aJ:]@:Y:aJ:e:h%:C::s:B::':Ϛa:w:Ϛa::::':K":K":=:=::S;A;$e;<;j";< c<{=<)=3>=A=Ơ>3,,>>t?T?.?Sr?$3?*y?0z?5{?9?>?E?S?c*?m ?r9?xs?{?xg?pK?^>?%M? |*>>fϽ=:=====;<еd<>5n>oCG>q>>{a>`>=f>3Z>9>D?*-??#?e??>5j>+>>> >4>0>>+>\0>C>Y>=r=Ӟ=1=@= <;(;+;+;*ԏ;-;7;O#8;~;&b;%5< S8>>Ӭ?????'Z?.?3p?80m?=f|?@?BD?F?O?\M?i<8?mX?pD?q%?n?cgo?0a?g>ӗ>>7=ËU=:=cÙ=)=z+< KQ;;Z;O#8;"s::K:{[:aJ:-(_:c9l9 9f9WM9I9I9I9I9WM9WM9WM9WM9WM9WM9WM9WM9WM9WM9uŰ9 99۴:c:C.:Re[:h%:g:: :; ;V;T;xn<#V<`-<i>Y>>=>͙m>_>)>H?(J?'i? !? c? ?? v? ?>{@>b>}>M>>>>{>~>~J>i>F6>;====s=8==<|c<<:N<@2; g;< ;Z;i4N;G;-;6; ; ; ;; ;/|/;>a`;Ki;_;q:;~;Y;K;;;;;v;NL;;>;;;}r;~;~;+;Y;D;;Z;S;m; ;;<}>~`T>Ҽ>c?N?g?#H?,g?3(?7?:_?=)?CP?G~?E?BD?A?IPK?P?WT?[J?W?E+?(Q?2>>>="=T==y-=Aoa=<-<ǧ<:n<:N< ;;3~;}r;C ;$e::::aJ:C): 9'299 9 9uŰ9uŰ9Uq9 9 9 9:9:9:99l9۴:2: :0:Re[:aJ:s ::n|:;$e;=s ;q:;3~;Y< y3<`-<>4">>X>ƹ>ޅ>-??? ? a+? ? ? ? mH??U>:>r>>x>>B>yn;>d >X>L;>7g>\="=ۋ=E==<=^ZV=,=!< V\>'>q[??? y?,?6Xn?=`?@z?A?AҺ>vN>I=D==b=O=#]=C<ӻ<6;6::K:]:h%:Re[:-(_: :x9'29۴9h9۴9'29:x:c: : :H:)o:Re[:aJ:p/::]f:';;"s;J{;w+-;;g;<>;>oNs>>&>Iw>6? ?? ;? 1? ? ? *? #?b?>d>+>۰>t6>M>>>>^MM>=H:>"v> P=U==>==ݾ='=qR3=Kq^=%=-s>>;?;?GQ?&f1?5=?F?N?O9?N?K?I_0?H?H`?C?8b?-^?#?g???X>>>>>,!=_==|Ȓ=L='|= v<M<<^<`-<3o<ܲ<M;;;;sq;C ; :Aj:=::s :e:Re[:J:-(_:!z:!z:%:-(_:4:N:Re[:V:aJ:h%:wV::=:; ;"s;B;k;NL;g;)< <*/>n>p><>$>`>w?9? ?t?y?'? ? ?g??U>->> >>@>7N>>>un.>O;l>%@y>x=v~=r=-K=@==n=~_=`&=?="=$<<x<1L k> >?/?Y?!$?-?>z?P}?Xt?Z?X?U?P.?Je?Dm?>)?5?+?!"+?a\?x?>]'>Q>Z>">Rc~>=A=Yx=s=A="Ő= |<<ì<<@>Xp>sE>>N>ʧZ>a?9?&? ??? ?? ??;>>>d>ȩ0>>_S>}>>ޅ>>ht>F>>]8>R=f=7=c='=m=:{=qo=XM:=;="Ő= IA4>MD>^??a\?(6?:2?N?WSD?]?_u?^?[?WT?Pa$?EE?9?0ͧ?'?m?TL? {I>:>>>>c`>!5@==|V==p(K=>K=z=! A>Hx6>/}>>=>إ>1>A? 3? q????? Ԟ?z>>`>@>T>>q>>*>(>:>>u>[T>< >C=L=ge= ====s=m=VR=<2=%=t<_i<<<<<f<}=l >wg>d? x?W?+$?Gx?Zt?b?dSn?c?a?^m?ZX?U ?L?:vE?-=?$\d? >?]?lS>X>`>>K->K>T=f=c=.=Hb=N="Ő= a`;P;sq;Z; ;ӏC;<Vo<e<- 5 >qx>'>>98>>߇ >?1? L? h?N?? ,? ]?>H>@>ܣ>T>$>">#>.>&1>>>w>e>PJ>3\>==6 =ū=(=n= ==m!=V(=>h=)I==o<+<<¾<2=tT=>yL>^n>v???/2?Lc?` ?h(?j=?hx?eX?`/?[ޑC>>w9>xe>?">%=/=ţ=@=ZC=j*=7^~=<-<Ï<6F<\3<a`;<;>a`;D;Ki;Xrw;k;m;;N;k; g<v<<+ >O̧>i>J>EB>>Ӑ1>X>?? ,? ? U? =? ?I??I>>>>ˑ>\>Dj>n>>>>>sm>e>Um>A>(%> K==k==/==='=m?=W=?=+=z=,=2=8j=FC=QB=W=YK=W+=Q=J8=?HA=32='t=== U== ='=o=%n=5r=P=q%==Q> >}+>>??! ?3K?M?^?g?j?j:_?f?bZ?\:1?U?Nxc?A?3 C?%?h?(?lJ>ݐQ>! >>sN>7;>pm==,==e==Y=*=wi<>ZE>F>>zb>?>ٳ>>?2?? ? ??.?*0?>>d>ݹH>ҜH>l>U?>,)>5>>6>q|>->sU>d>UG>FC>2c>>= r=(=m==NY==p=l3j=U@=?W&=-= |= ="M<<8=>>R>)3? ??0&?Jÿ?Z?c?fF?f?d[X?_?X?SY?LyK??K?2?'?U?*a?f>o>%>k>qJ>/Bw==̭==a=X=3=s=K ="Ő=}u"0>_;>>#>X>>֑)>n>`=>Z?$?o?>?S?4?x>&>>|>>=9>l>M>`>(B>4>;>tD> `>u0>gЮ>Y2>>IO>7o@>%:>36>m==Q= ==X===i =R=>=,=!== 21=<<=D=GO=E =@r)=;q*=4=-"=%=wP====J=(yM=: =V4=|`N=~=R>>w>>+???)R?=h?R?\t?`l?_?\t?W@?Q@?K?C)?9?/=X?%m?:O?q?!>)>>];>zU>0%=I=D= =@s=H==~_=_uY=9J =Ó< <¾<<f E>5>eS>l>ݧ>R=>pB>>ڥ>Nc>#>>?^B?-?4d>"><>]>ݷk>p}>>e>DW>v>>>0>|>Gs>s>h>] >Q>AO>1R>>'>J>=邂=m==N=[[=LB=}=f=P =;q*=*7= =^=V=.k=eW>">ړ? yl?e?%h?3?E@?R ?X@?W?Tu?Pu?K)8?AS?8?2+?+$(?"W??_o?>z>Z>ht>>D`='s==0=9=d}==yJ=c=EQ='Ə= ̴\G>I>l)>`> b>A>>4>ش>|> P>>Z>> >B_> |>>ඇ>ׁY>pp>~>>@}>H>`>l>u/>>{>p>f/>^:>Uu8>L>?>1>>>r=4===`:=3W==}{P=e=N=9,?=)v=)== H= G=T=<F)>{>???!-W?-?8v??C>?M??O?Nr?I?B!?;~?4Wy?-{?'05? ??V?v>߽> > >z>S>}|=pl= =k=w=|=m!=\_=EQ=-ӫ=<Ք<<|8>N^>oh>D>%F>ō> >">r>>>O > C>V>>P>ۤ>ߌ>˿>٬>$>>x>>>>?>4>|>r4>j>c>\!>Vj>PVo>I>@>4>#ӊ>=p>m==.~==W=+==u=gz=Ou$=8=(===tT= v== u>|H>>S?q??%!?0?8?R?<;??M_?@D?>@T?9?4}-?02/?*?%3???5?a?, >>C>m>>V> k=B===U~=vDL=cc=RO=?j=+=:=<N>BL>f>F>>y#>p>>>9R>>Á>>џ>Һ>ϼ>K9>3>i>ª>x>2>v>->Y[>>>w >p>j>>c`>]~>YLO>T=>P >K>G>Aq>7! >'\n>>3=8"=۸S=D=ș=o==R=m=Rb=:Q=)X== F= ==< <`<< <?<<~%A>e>ny>`W?B?)?'Va?/`?39?3x?2?15?.&?+R?(?&*?"0%?h?{m?N?>>;>>.>V>==b8=X=:=vp=`&=M=9='t=c=M<;< >#>PeT>oO>t0>\)>>+>h>x>M>Y>>˄>ٌ>Ū>ê>>B>“>]>>o>p>Wq>s8>r{>f>_>\ >Z\%>W>SJ_>P>L>IO>F>Dh>@3>6;>(X>"{>Q==(===i=.==v=Y=?=+&|=ߔ= = ̴={<Ք<-<ݠ%<Ȑ <cNL>Zt>Э??~?3?%Z?*y?+?)?'8?$f?"F}? 9n??S?s?v?׀?A>츊>>k>>ZB>=.=N=69=ۧ=|w=b=Kby=5=$9=$<_i< 1<<+;ca>j>YP>Mqe>H'>Jg>L>K>H>EW9>B>@>>ˁ><)~>9>3,,>&q>#l>ۓ=&=.=Ԧ=\=(===@=aC=E =.=*=!=Y >r>p>x?%? !?Sk? n~?#?#u?!-W?h? ;? ?h?)}?????>AM>>9 >>a>= =L=r==N=j#=O=5="Nf= <<֤P>!>FTr>bQ>{N>4>H>`>> >(H> >,>3t>߱>c>I>c>>J>>ex>$4>3>m>Xb>Ec>7>>3*>7ȟ><)~>=H:>; >7>5n>4԰>3r>2I>0w>,O>"n>*> H=h= ;=ٮ=0-= =F=5 =J=iwV=Kq^=0=J==<>st>>C>>??]??J?$?ɠ?5???? ?? -?p>p>@>H>m>iK>( ==^=<==|=syS=Wm=:8]="@=h6Hh>`>5%>S>m B>o>>L>`>\J>#>V>>_>>&D>C>^>Y>z>O>1)>~>q>aLi>O0@>9q#>*:>$ŗ>)>.>0>/`A>,%>)N>* V>)>)>)@>%>b>"{> O== ==ʬ=b=H==r=l(=L=/e==w<]l$D>iW> >>I?? ????{V?`???V??>>މ>>v>>rĸ>8v>=ڮ=D=_"=9=}d=`&=@cC=&=eo<}<Ԍ{ F>#r>A1>Z`>o;>aF>$'>U>U>>n>>>4>>Y>G>?0>>z; >w]r>q>h>Yx>IHa>3*>!>">8>">%V>%ip>"7>!5@>!>">%5M>&f>#^>>#>h#==+=b=ǀ6==M==5=l$=I=*d=<<)<˴e<<<<|;.;"s;;&,;6t;C ;S;j";;;8;*\; <O<!k>TKP>"P>>.3>Xo>1?E??[?>>'I>Ï>މ>)>ܽ>Ӣ>M>>R>]>O>^=ь=0=4o=l =A=k=Kq^=*R=<<<<\3<x<]=Jͅ=U̺=e=xM==n=޽==e4=r=4>?>B>*>Dl>X8>f$q>pt>zd>>> >>_>~~>zF6>yu>{g>|">{>k'>j>gJ>^+>QH{>@>.7>a>z>>I>>>9>9>>!/>$>'\n>$~>4B>C>==vJ==_=M=='={=f\=@="Ő==P< <r;7;H;V;j";;Ғ;k;f<@=@ =v@=b=A=>3f>q[>>BY>>!X>ږ>>U>ٓ>t6>i>>nl>>.,>E\>r>:>y>_>$==,=t=P=P=x{=Wm=3i=<Z>>%a>6j>D>O>[V>h>r{>x>xX>st>jh>c@>c`>f/>j3c>k;>^k>]uR>Y>Q >C>4 >#F >>[>>)>>|>;>> u>>">%>'>#BP>>>=쐂=x==?=77==s=|o3=[D=5=l+<%\g<@2;ǭ;;;&b;";c\;C ;%>;r;b;;; ;G;%>;7;H;V;sq;;;<ѓ>N>|H>i2>J>>K>+>oQ>.>.>>>j>c>BY>vh>vG>>ib>6x>=\=6==Xz=t-=fR=@ ==J>> 0>>>&>7>M[>^>i6+>ku>f>\>T>S>Ws>[>]b>QO>N9>H>;>/$>!<>[H>B> >Ye>->uf>>3]>!S >"J>#r>&T >&>"PC>hW> }=:===i=i==m=v=n-=L=(.= g8<<<7<+<)QH<$<O;;; ;_;+;^i;>a`;%>;;b;;; ;Yk;#a;6t;D;V;w+-;S;O;< y3<[<"u>W>|K>\>>&>4R>>>>>y>T>>~>2>@>jBI>A> )=f=ā==*=M'=q%=N=)5= (+<,B<<Q<^;;;k;2;;; ; ;< ;k;C;< u8<"D<9> >>1>KB>Z_>_>\Kj>S>L8>JrI>Mx>P>Qh>A>:j>0>"\>>w"> }>  >q>l>>jG>"v>'3w>*L>*6L>)N>*yS>(]>">k>=s==ĭ==}= =Q={'=^x =:V'=a<<<#<$a`;N4;gW;Y;&b;4<*<%a>,N>UG>p>>H>>C>Ij>>XI>{>(>7>}>pj>\r><>;=|=˿==p=s=y=X.=4= F<<6>+>5ա>J >S̴>S>Mu>F>CC>EHT>F6>E.C>2d>)s>>"n> [!>>>x> P>Lc>T>&q>+>0a>37X>4V>4Y>3\>/?>'?>7>='Y=M-=v=K=I==9=kS=L_=)= ; ;6;$e;$PJ;2G(;@>;N4;gW;;; ;H<>4<*>"0>Aq>Tea>^>c*>c>d*>e>eݰ>es>b>]$>U['>E\>*yS> !o==D=8P=4U==~8=_=<-==A<ϩG !o>!>>8>F>Jg>Fu>@R>;>:c0>97>7FJ>'QB>њ>,> >>>m> q>>>&)>.o>2u>7n>;/>>_>?>>_>9e>.ǔ>=>i===F=Q=d=|=w=[=:8]=Y<<7<i<׿==% {=K=s}=1==V=C=o=#> >>%D3>+ >,>.n5>1Ư>4=>7 >6 >/|>!>ZI>==͔=G5=J=A#=9}=b{=@=#x=12< pm>>%>5>< >:>7g>3>0'>/3>-S2> l*>N>> ,>D>,>M > {>>$>/g>4>8>;>AQ>Ef>Gh>E>?;8>1>q>=g=O=C=ݾ=A#=JE=jX=M!U=,= H<`%>> >? >> ^> >5=i==(=/.=x==d=|\=` =@=&%}= U< 0<-<}=2=0= ==B= U=), =5 =E7=X=lBO=@===r=]==!==ZI=^)=t>5>a>%S>._O>/r>->*J>' >%>#X> > N`>>k> )> F>_>H>%+>0>7;>:><A>>X>A>Ec>H-_>FL>>k>/zR>F>=9=Ɗq====x{=^ZV=?="Ő=<<٫D< <f<`z<>+<&y< +<M;;l;; ;E+;?;NL;Z;E;/;y;i4N;b ;^;b ;j";|;;Z;?;u;;ʷ-;;< b<%c> h>:>3]>!O> C>>{>@_>V>%>)>&>1>>j>>|>(]>5ա>>>A# >>><>

>_>B[>ES>B[>8>(>,==^===b=h=n=P˼=2=+<<ȭ<{<;"s;;;"s;-;<;N4;uN;S;M;׿;<[<&J<<>+>>>><>Y>z>6>)>1>2#>,>%|>$>.>

Jy>O>N_>Hy>@J><0>;U>?>Ax>2+:>x>==A==.==@=cc=D =(.=G<{> >&>/p>^> )>>>b> L>-p>8]><>;!>8J>9>ED>Rrc>\>_>[0>R>I>B>?>@d>@0>9">,N>>|= u=9=t=m==wx=YYW=8=)=e<#D,< ;;ڊ;;;;;Z;a;v7;v7;a;v7;;; ;;NL;&b;N;3;g;^;ڊ;=;;ǭ<͙<<<%\g<=UC_> 4> > 4>> |>7>z>2 >A>Ii>K>Lq>PeT>Y>e_>m>oh>j3c>_>U>L>HZ>F>B>8>(L>b=K=_=Ųu=z==F=nK=O*=.=N>>>Z>,>>"h>CY>Tea>]>bMZ>gߔ>o4b>x>n>>a>}r>sY>j\Z>aA=>Z3/>T]>M>?>*>==Je=='==v=V4=5=/=6=@= X=%=#4=0T=@cC=S=fp=t===6=q=0=s=,f=y=㋽=:=Ž>Q>>6> O>@>+>KB>[ *>eݰ>l>sG >{>>V>>>>{ >sp>l>eLv>\>Rr>BcJ>(> m=-=y==\@=b=fp=BI='"=};k;A::K":=:1:B:C:wV:h%:h%:h%:e:aJ:aJ:e:h%:h%:p/:LO::;Yk;=s ;kH;NL;*\;ڊ;<<<{<)QH<6?=1====5:=E8=M=ٕ==c=k=d=>9>> w>r>3>Q>`iB>lOX>tf>~g>>z>b>>o>>>~v>xDS>pV>e|>WQ>A> >[====d}=u#=P =.==;C ;J{;S;e{;uN;/;;;;;;3;y;c];Ѳ;H;2Q; g;<O< +<)QH[> n>a>'k>

U%>c8>p">{ԩ>>:>x>m>C>>U>>*>f/>x>jBI>V>:>=ȅ=B=s=e=N=`E=8= =<+v>^> ~>4 >Gh>[hC>g>sp>>:~>/>S>k>a>^>>->>Z>{Cn>iq>QW>/\> =ꎟ=ȹ==uE=rD=J =&= d<8;1X;<;J{;[=p;k;;";a;NL;;$;M;*\;%;k;Q;};tt;"<<q<0v==⎅=+ >> tM>>/|>B[>P>d">n\g>y8>ˬ>p>$>>>E>>^>݀>>l>xZ>aU>E0>G>0-=k=0=J=4=b=6:=u;2G(;@>;MF;_;q:;+;i;Z;;;N;9;3;;;c];;=;Z< b<"<=<_<#2<'<V>r>-~>A*>Q9>[q>q>zI>8>>>>>>>>>y>>f>pl>U>26f> ==D=c===U=*7= <">z>(1>Az>T,>`8>i2r>e>>~q>>>j#>۷>v:>>>(>> >>~!>f/>F>>r==L=a==x{=M=$=6< 1+<#V< ;;;NL;p;D;%>; ::K":::]:wV:p/:h%:h%:h%:e:aJ:V:Re[:8TD:!z:H: 9~9۴9l99 9 9uŰ9uŰ9uŰ9Uq9 99w9: :%:Re[:h%:LO:=:d;G;<;a;";8;3;;;a< <  <6Y=I= > P>l>:->S>c>o!>wz>.n>l>A>>>B>>6><>">> >>w>\F>7! >_==M-=e=U=V=r=EQ= p=<͟<<<;+;Yk; ;:mP:mP;A; ;Yk;$PJ;2G(;@>;Ki;^i;k;;";R;NL;8;E+;!;c; ;M;;Q;!;<h<<7<)QH<2d<=>e>1i>LE>a>p>|Ƶ> >L><> >>>>>>R>>>F>->sR9>U>,ű>T===rP=v=+==j=?*v=a+<"< ;;;NL;q:;J{;0j;$e; ;:d::d:;t:;; ;+;7;G;P;d;uN;/;;;;&b;;T;3~;N;;;c];޻(;|<7<͙< <<@<u<&J<,W<2)^<8<<<=UC<<<6?<+<!<s<s;;;7x;;}r;MF;0j;:d:n|:1:C:h%:aJ:Re[:J:4:-(_:)o:!z:!z:C.::Е: : :x9'29w99:9 9uŰ9WM9WM9WM9I9WM9WM9WM9uŰ9 99۴:c:!z:Re[:h%::=:;$e;<;^i;;;;3;Q;<s;<@2<"U<3o=@=O==x=& => >"y9>AQ>Z>m|>}A>>> >F >>c>Z>U>>>->>H>6>>pt>P>#BP>ر==`=_==N=_θ=4P=<+<(+>/c>O3>g?t>z3>> >r>>?>Ȗ>>-!>p>>S>>>$n>)>>l>J>=M==v=Nt==w=P˼=)X= g8;6t;C ;O#8;b ;sq;/;;Z;};NL;v;NL;NL;<;[h;T;;;D;;k;H;;ށ;J;?m; g;;;:;Q;H;2;M;8;i;gW;D;(;::=::wV:h%:Y:< :: 9~9'29۴9۴9'29'29'2999'29'29۴9\9l999 9 9uŰ9f9WM9WM9WM9WM9WM9WM9f9 9:9w9 d: :< :aJ:s ::K";G; ;7;N4;gW;+;;;N;y;2Q; < \<@<*<9׋>:>[>t->\>>2[>>k}>w>#>X>>&>c>c>(b>R>>MD>>i*>D>======e=>h=J="<͟<<*;<;LX?;b ;uN;;;E+;;y;f< n<B/<)QH<<+[T>>F>fޢ>>q>5*>kI>>UL>{>qG>”>k>>Y>P>E>->>>z>j/>Dl>====C=x=Q*=-=P >)>Qb>qC>T>C>>>a>8>8>ٟ>x>>m>X>>>=> >l >v>q[>L;> ?==+=j=n=j/=@6=!s=+<*<5<;l;;}r;C ; :mP::=:::::=:K":ͽ::; ;k;;0j;>a`;Ki;];gW;sq;}r;}r;}r;w+-;q:;j";gW;i4N;k;p;sq;uN;sq;p;gW;b ;V;N4;J{;CS;<;2G(;%>;$e;y;A::':B:::h%:aJ:N:C.: 9'29l9:9 9 9 9 9 9 9 9 9:999l9l9w9w9w9w9w9l9l999:9 9 9 9:999w9۴:x: :%:Re[:aJ:h%:]:':K":; ;G;%>;6t;B;LX?;_;|;R;!;2;ó<<<- >9>`>C>>>>>>ԏF>4 >:>ϛP>Q>ʻ> >>y>>>>>{G(>W,>#(>=I=ˋo===c6=71=<|a`;Yk:d:K":B:s:T:T:::=:K":::; -;k;;0j;=s ;J{;U};_;gW;gW;gW;b ;];U};O#8;N4;N4;N4;N4;LX?;Ki;J{;C ;=s ;6;0j;%>;^;k; :I:::=:::g:h%:aJ:Re[:4:Е:c9۴99 9 9uŰ9uŰ9uŰ9uŰ9Uq9 9 9 9 9;99l9l9w9h9۴9۴9۴9۴9h9\9w9l9l9l9l9w9h9'29:c: ::4:Re[:aJ:lvq:]:T:=:w:; ;6;$PJ;2G(;>a`;Ki;b ;/;;*\;<#<e<- >)->RH>tf>>>S/>>V>15>>>>ثA>>P>ϝ,> >>A>_F>V>>o>_7>.2>J>=ۓ=E8=V|=d=4P=a`;<;7;7;6t;2G(;0j;-;%>;;6;; ;G::::: ::o:wV:h%:aJ:V:J:!z: :29۴99:9 9Uq9uŰ9uŰ9uŰ9uŰ9uŰ9Uq9 9 9 9:99l9w9h9۴9'299 d9 d9 d99'29'29'29'29'29 d:2:c: : ::-(_:N:]@:h%:s :o:T:=::;A;;6;%>;2G(;C ;S;sq;Z;q;<%<ܲ ?>E>kD>>^>>O>W>Ip>ٮ>ć>;>>>ܵ>U>׬,>>z>zo>>+>$N>^>_N>1<>q_=@+=A=a=h\S=4=ͳa`;=s ;;g;6;1X;,5;%>; ;ݱ;;6;Yk;; ; ;:d::':=:::C:p/:h%:aJ:V:N:-(_:: :x9۴9l99 9 9 9 9Uq9Uq9Uq9Uq9 9 9 9 9:99l9w9۴9:x:c:c: : : : :c:c: : : : ::C.:)o:4:N:Re[:aJ:h%:wV:LO:T:=:K"::; ;|;^;-;<;Ki;j";;@;%5<a<<0L>0a>Z> Z>>п>W>}^>>>И>h>l'>)>><>vZ>R>7>>>L>0>p>yI>Uk>&b=1=Q=`=(=jt=4= y<ܱ;+;,5;+;%>;!P;;Yk;; ; ;;:mP:::::K":=::::s :h%:aJ:V:N:0:C.: : 9~9۴9w999:9 9 9 9 9 9 9 9 9 9 9 999w9۴9:2: : : :H:Е:Е:Е:Е::C.:!z:)o:4:8TD:J:N:Re[:V:aJ:h%:h%:wV:(:T:K:K":S:d;;y;$e;(;8n;Ki;j";; ;ڊ<M<J>EO>l)>-|>> u>?>˺>ͩ>ݬ?>>?~>>!>8>뎢>玕>U>щ>p>>>> >es>=|\>^=p=Ί=1==hMn=2?= :$k>TtF>x1>>¿>\>$>܁> '>W>F>z.>>>%>>ⶍ>|>l>y>r>>/>mW>GF>H=6s=;=^= ==_=*=-l<<`>5t>`>T|>n>0>e> >'>>y">>Y>7>>5> e>ڔ>,>>X>x>A>w>O`>>h=P)=ʳt=ER=G=N=O΄=!<-<<#2>G~Z>k>d>>>[>ͨR>(>%Y>и> >~>u>a>/>>>ŗv>A>[>>>aB>/Q\>z= Y= =d=G=d=l=;S=9<;<;P;w+-;;;;)<͙<S<)<<%>Wd>w?>+>>>>>q>鷒>>>]o>L>>⧨>q>ɛ<>M>Y> +>>w- >N˵>==ΨU=='S=5=}=U=*G=B<̠˼>8>f>v>N>K>T>.9>Ҡ>z>\>> king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama/general.ndft0000644000000000000000000037522711531212714025365 0ustar rootrootTop5200 General case (not Gly, Pro, or pre-Pro) B<3044C4C4 *;;>;;];;E:)+::o :(19: 9ߑ99Y99&99\!9D90i9ׅ8}8<88r$P8F88 7\77777r$P777u77i7\88H88;8Q\8\!8l}8}%8Se8H888,88Y88888"8c8#9Se989 U 9 @9 U 94m9Se888^8888,888ׅ88XY88,88i8<8]L8˞888$P888$P8c88`888i8,8XY8u8r$P8Q\8*8H8 8 8u8*8Q\8w#8ׅ8Y88}94m979"XY9-Y91z95<96q96q96q96q96q98[9?<9D9N^9V09c 999e[9}99wP999999`9: :"f:A:Xd:r$P:::":h::C;:@; ;c;7={;\y;:!;h;;۸<q]<<*Ν;c";E#;;\;};<h<*9%99S96q9 $8$P8y888g"8K8*8H7%7!777\8880i8V08r$P8Se8V888i88888b@8c8%9 9wP9 $9%9-Y9296q999@9A9C]L9A9@9996q9290i9%9 $9}988%88$P8$P88e8%8%9Se94m969ׅ9 $9"XY9%9)9a9-Y90i91z91z91z9291z91z9-Y9)9a9"XY9 $969Se8}8^888i888^8$P9V9&x96q9N^9\!9t99D9U 9&9&999e[9}979)9999u::h: H :3:;t:?<:>:=l:D g:V0:S:6:Ŝ:ơ::; ;;#J};1d;Cc;S;j-;$;/;5;;< D<# <=yjT;<+x<(hAT9F9D9G}9S9c 99}9x9,^9\9ߑ99u9%9999X:k:}:':A:WPJ:s::%::'w:t):`;; ֬; R;?; &;;#Α;@.;\y;w0;;?;Y; ;l;;;;<k<u<4Q <^1R<<====mN=Sd=:+K= =Q= t;:$:4":::::6KV:3:3:>:S:rj::Ҟ:D::Ľ::;L;+;G;Z<;dP;dF;_;a;n;;I;;R>;;&;Ɩ;;<<u<#<;<`&T9x9&9db@9G}91z9"XY9}9Se8$P8b@8˞88y8y888b@89 U 9 $9%90i95<9@9G}9S9`A9t99D99979$9x9F9{99I9I99{9F9x9>9799Fc9%9&9U 99U 9@9.99'k99999XY99979799>99)99a9{949"9k99}9>T9^9w9w9w9Ͽ(9ͮ9ͮ9N9o99 99ߑ9#::6:7S~:PO:j;:6F:P$::p::<:p::7:2::g';J; ;ri;%;@;b};;;,;;;;;U~;g; ;܅;;c<S< @<\h>PQ>> =J=ե=]=={|=Qs=LBB=(= <<,T9S9\!9kCH99D9.9wP9h9jN9k9999Ͽ(9\9Ͽ(9ͮ9>T99m99,^9999F9x9x9x9)9{99k99}99w9w9w9\9ͮ9>T999>T9ͮ9\999`99݁899:J:k:z: : ]3:m:u:e[:m:u:>;:::&:4":G%:_9z:z:D:p:H :::*::y:1F:Ȇ:t):; );;1 ;D9m;Q\;_e;y[;;$;eg;/9;p;;^&;^&;=;ݢ=;/<,<b</<%)E<. <; lM>4>!>.9>8G>9m>.>0>[=۝=ym==wB=gMP===<< T9D9@96q95<9291z91z9296q9@9G}9R9Xd9`A9p9989&9}99{9k9.99ߑ9"9j96F:J:J96F9#9CH9Z9ߑ999\9>T99}999>T9\99݁89Q9}9u:r::t:t:k:c:::::[:t:S: <: : U :}:g:&x:5C/:A:MV:T7:\:c :dM:dM:gz:l:rj:}::h:u:}:H :::Ί:9z:@: ?;; R; );n;$;;3;PE;l;M;p;;;;N;9>L>,AU>=>L>[0>d>`>M>2>_K=A=r=]=x=~;=N='=<T99:J:S:m:::#s:#`: H ::ͷ: :96F9j9-9u9Q99Z99j:J:k: :m::?:':/A:3:4":4":4":3:3:3:4":::BU%:G%:H:KF|:P5:V=:i:z:$:1,:6:::E:U:9a:Ŝ::U:KV::Ȳ::L::bL;,E;ۓ;;!f4;+;2;:;AL;G;Qaf;dM;G;;;-;&;{;;;ə;;܅;B<m<5<B<$<*+<.<3X<:$jB>p>;>*e>=.o>Srf>koN>+m>E>>$>j>H=>'^a> f=q=[==Nw=] =3%=<+<<};:ׅ:){:8:F:P5:V0:cZ:h*:mS:o:p:q(:r$P:t4:z:::]3:A|::%:6::H :::Ȳ:Xr:::;X;;;;; ֬; );ۓ;\;/;!';(P;0i;9M;Dӄ;O;;YJ;g;s,x;z;ih;?;;;;r;k;;ؚ|;b;l;n<< W<<+e4<:$jc>Ѱ>"=>/ ><>L2>`,>vZB>B>>>P>{>~}>X>2>=p====h)q=<=ϑ;Dӄ;G;Jj[;L;M;O ;PO;S;Z~;cD;kA;sn;z;/;:!;m;I;E;;U; ;J}; ;;2;e;ѐ;AG<< @< 9<K<#<3dg >!>1>>j>K>Y\>k>~bf>ʼ>lw>)>.>j>q>G!>a7>9=>>8==.==l:=C"#= =n<)< T9N9ͮ9\9w9w9w9999PJ99m9Z9j:[: U ::7S~:Q\:m::e[:::m::b'::4z::I:P$:xK:g:])+:U:U:])+:h*:yX:2:%:wP::-:o5:c:c:w]:C/:C/:[::Ɏ::`:;7;?; U ;};;;"_;,;;9y;M*;^GU;sB{;u;:!;;;?;L;f;p;e[;E;.R;;-;5;";;d;t;;g;;w];;;;^;I;<E< V<<%<<^@<)_<7>>%}1>;Q>M >[K>h >st>Cf>g><>b>Y>z>6>O>>\F>5>T> =׬x=7==h=C=#=.J<\;M; ;J ;^_;/_;A|:禽:::6F:M:$: :9t699u9u99CH999u96F:K=96F96F9u999%:J: : <:>;:':A:_9z:}:::2:o5:u:':ڔ:$::}:::::::|+:2::m:::(:ɺ@:)+:@:r:A:h::4:A:t6:;?;Y;c;+;8;GQ;T7;b;n;x)7;~;f;A|;8;;;Od;;_M;;;-+;;2;;; ;;(;_;߹;[;=;>T;};إ};`3;3;Y; f;e<ɝ< &^<x<S<[f<"_<&~<.+<: >'><}>S>fs>udU>?>y>>)>F>>D7>O>>H>>QtQ>+b>=OZ=$=9==\==6=!9=<盼<;:N:V::Fc::ŏ: @: :m:>;:/:2*:G:eZ::-:t::Ȇ:$:I;J;|+; .; ;1:::[::::::<::X:w:/;1;.;;%;%; ;'k;$; ;c;& ;1;C];S[;h;7;; ;o);^ ;9;;;B;b;a;;O;߆;(;;4;};n;;6;~^;h;+;3;;;E;@;;;{*<< t<,E< <<T><n<#<)q<,<.ո<3~<;0>+lm>?L>U>g>u>>I">t>9>?> >,>i>t>{>I>xj>G>"n>=+=;==r=MJi=2.=8=s<翁:Q\:n[:Y:p:]@:Q::;;;;!:.;& ;&;#J};x;Y;:ܒ:ܥ:V:Z :ǩ:N:`:@;$;;+;C];S[;\7;\;WT;RS;O$;PY?;U ;cD;sX~;;]; ;;N;w;̅;@;߆;};_;N;~<ɝ<h< J=< < m< < < W< m< {< <e<j< < .< .< s<ن< < < $<%<z<G<<<"p<(A<.W%<4<7X<9<:==z===q=ZX>?>-d>BD>X>N>m2>}>u>R>d > >Y>ݾ>Z> F>>Ҝ>|>#c>p>D>%>@=փK=Y=/=bK=@'='H=7t=<<⺀:AL:F:MV:S:[:c%:h*:kb:kb:g:c%:Xd:S:O(:P5:T7:c%:y]e:D:g::]L:$:; ]3;aM;(W;5?;C1F;IJ;L;J(Q;B?!;4;;&;;{^;;7:6F;u;`;O;&;B+;^_;~p(;V;;1,;J ;;;;c;x;C";;Db;H;u];u;<k< r<µ<<< M<f<#<(W<+C<+{7<(<%<%O<%vP<%X<$<#<#<#<%4F<&<&i<$G >>/>DP>XBn>qLP>9>\+>>>W>>̥>9> >>H>&Y>&>6>n>CK>1K=N=D=T==Z=9=G=l= A<<,<4>{f>2>N#>e1>yt>B>l>l>>b8>w>`:>$>@B>>>.>w>E(>>n('>C>V=e=&==P=XC=5ww=(=BI<$<<2 > >5>TD5>wV>n.>'>">%>>i0>[>d>^>I>9>>̩>>>>7>u>G^>!]C>I=f=+=\=W^ =2=?5=F<ث<<H:-:::A:z:(:::u::|];P$;Y;$~;7={;N;cD;|_;^;F;6; M;&7;;Zf;v;a; ;;0;;R;u;,;W;K;N;ڔ;;5<[<k<< e<<< 2<*6<25<8>==Ȃ>w|>&4->?\R>Z>||>R>>`>>ʹw>"^>ȓ>Ƭ>>>թ;>>x>>2>>ۊ>>>O]>(IM>=)===V=0=<<.<2,H:M:>:k:k:$*:]@:-:(:K:):u:Ȇ:Ȇ:Ȳ:N::Ӈ:<:ߑ::@:Q;:!;;;!;,;>4;QKc;f0;~+;;&;S ;;,^;O; Y;*^;ʡc;;;hA;_;!P;&7;;¢0;u;ޒ;<q< $<< <%p<+<25<:?]+>>,5K>Io>mNn>>|(>6>Ė>҆>L>->⏂>>ك*>}>1 >C>c>5>> M>Ӥq>>1*>>Z>/> N=ޖq==QQ=U=.L=<<<`<e4;NH;\y;n;o;;);$; ;9;9;=;vC;ޟ; ;6;GU;,;2;Ί;֕.;);<aA<ܓ< <z<<< I*>A>8>Tp>|p[>b>w>>ذS>>팰>>.>ʎ>*v>>t>m>U>o>>^>E>n>x>>n>^s>4w>*==C2==Z=U\=+a=P <B<;e;߹;;;v;Sq;8[;%D;; ;U:m::::t)::::ߑ::(::::;K=;; k;\;M;%;,;4;?R;K;V^&;e>a;sƏ;G;:!;);jB;;R;;з;6< <R<>;<<ZY<|<c<F<r<q)< <.<>;< <<$<0i;<< <<<<|> u>A=>gR!>?>>>4>v?q??:r?s??~U>>>>!>w?v??4p>>8>!>>%w>\>5>7==uM=6=Q׸=(= <<ǖ<>A><92>j>>m>s>ߪ?h? x?a?d9?Y?em? -? b?Ug>2>??ʢ???D>b>׉>i>/>>V >2>L=J=L:=i=L=%= <;1 ;*;&x;"_;y;;.;A|; x; ֬; ; L;a;%; ;O;p;;;(6;6m;IJ;Zh;l;} ;;;p\;8;;;; ;;II;;;<O$<$X%<85 aP>-G>Yo>_R>?>5>?p? ?? B??P?/?}M? ?o?J?0????%> >>;>0>S>ux>KZo>)\> =V=v=&=Eu=!=ǣ<<*p>"y>E>u\>/>RY>?? ?*2?t??P???C?v?T?K>Ć>3?>?K >No>5l>0>Bf>wk>n>e>>56>7==˕==x=;==hT;F;>`;5<;-;(]@;$;"i;"_;#v;$ָ;&x;(P;,;3;?R;PY?;dP;~5;;r;:;?;p;;,; ;=;P;;;,;i< XP "<(<2<ƙ< >8sa>bVi>">_>}>? C?B;?C??????:?-?"?6>;>)0>>>>>>.B>>sb>S->,> 5=i===hM=0 =<<2<`<<;z;E#;w*;f0;\7;Wa;WfM;WW;V3;S[;M;Eũ;<|D;5C;0;.7;-;--;- ;/X;2;8;A ;N;]H;w ;f(;3;E;%;<;;uP;;;i;yj;;;N=;0<J<z<3X<<I<LJ<<p<+I<==]C=_z=H=Q=M>G>7>e8>}>1>U>? ?g?l? ?"?!U? 1?>??8?x?j?>>7>G!>ȷn>u>i>e>_>qy^>Ic>&Ѵ>z=%=%=6=v=J=c=<<<a;fr;i;k>;j%;dW;\;T;N;H;C];?~;=r;<::;=,^;?R;Dӄ;Jh;RS;]k4;p;;L;0;;W;II;`;~;¢0;.l;ȃ;ơ;-;,k;< <'D(=Z)=ű=g='=.=N'=m=j!=v=o=|==o;=z=Ē==cq=vp==i7=N%*=5^=\=u<ք<(+;<ن<;Z<<;< s6<&<( H>!q>E >q[r>>?>ڠ?*p?%???"n?#n?"E? ??3S?o?U?>T>Ŝ>Ҧ>Ɖ>W>v>#>Q>z>S%>1 >==Ȳ= ==iֱ=A =w<_<<<<s>>R==:=X==/==U =m =K =.=H<<e<*<< -;;;;;<,< .< M<.+ S>,&>LV5>u{> >}>B]?1????!O?#r7?$ ?!???C? F>><>>>‹%>>>q>>c>?> &T>/l=2=6===]y=8=[l<<^;?R;C?;F;K;Q\;V:;_O};l;~D!;f(;ZY;;ɪ;p;;2;/; ;~;h;;Ӈ;<e<- E>> > F>>3>>T> D&==~W='=»=J==ji=B=!ф=n<4y<<>}>2>RE>yb>'>h>`? ?H?G?m? 6?"?#r?!!(?)?,?Z?@>'>>~>>K6>J>>v>rNF>Qs>1M>/=f=l=C=*K=rg=Ns=./?= &>">n>fA> $>u>/y> >>>#>&\>!>

==&=]= w==_=44&==(<η<=o=1?=X}=A=ȩ=H=>>8>Zk>w>n> >%? w??0??y?!?"C?M??8z>->>>">o >W>>wm>Xo>=n>!ߞ>O=s=n=[==H=`6=@'=$=QQ"> %> >4>?>^>>$T>1E>6S>3i>2>8&V>;M?>4ٗ>%>>p==]=X==QS=$4`=<'j<<uT >/>>>dW> >>+>v? OL??q?15?}?L?L?q??)?>">֭>²/> >R>!l>>wn>[">C>->=====v=SI=6=(= S<<Ƶ <C<;c<6<3l<]{<&<T> >K>V>d>H>Lw>%UK>4>G>P>O>NkU>T>V >I>4j>K> ==̏M==۳=C"=39gn>$y*>GG>mL>T>">˶>? O????3?r3?{?gz?Ţ? $d>bm>⋹>h>>6> >>uc>_5>G>5>">=w=c==^=oeG=L=1== xnE>6>c>tg>x>>{>#X?>)>2a>>>N>dt>rV>s.>qH>s>mL>Z`(>? >%O> =E===r=5=<$<< >*>Pq>v >-Q> >X>????WW?T"?z?zp?ʪ?F|?l>NM>>[>Z>'>>{>d6>M >9>*> > ==m=b=~=k=J=2N}= ?=;Dz;IG;Q\;Y;h;yGb;;?;x;KJ;A;q;;Ŏ;ڔ;O<<0Foň> #> \>|>v>v>(f>3>AkA>Ry>do>t> >.>>;>g>{ >`;p>B=>&>&> =r=5=}=]=% >/1>W>|>x>k>Ը>?1?l?׼???k ?5C?_{? 3H>1W>/>4>>>>"A>o>V>?`>.6>#k*>I>d<==/|=r=k=kl=K=4ȼ=#S=<;c.;gz;r$P;z;6F;};;s;c.;PY?;:;'U;g;; ); k;;Y;/; ;&;,;1;6j;<$7;D;N;XXr;j%;~p(;cN;; ;; ;;ކ;;.<<+N=Px=_=k=u=~e&==Nw=ع=+=lx=ǰ"=1== >b>]> >>S> >*2>6<>GAb>^Z>vY9>d>>>s>>>>Z>`K>>_>tC>"O=Z=b=~Ͷ=D8 ="=mo===> >1K>Z|\>>l>L>  >៚?֊? ?9??T?&?Q? T?`>5>>J>>O>>y>c>K9>6°>(<>|F>>=="S=z==l%=L8=7h!=&5=T%<7<ѳ;Kʐ;Zh;pV ;ߠ;;;VK;l;A;1F;O;9<<'#"> Y>dS>>->&0>/>:>G >[A>wc>>_>>>%>ǚ>>S>>_>J>5>i=P==d=Y='<_a;P;>;<X< .<,<qi<,q<=o_>1O>V>>>>!>ܳ>?C? 3=?_w?? ?? >>>>V/>)>Y>>m>>W>C>3c_>%C>> I=[=,=ƽN===o=PH=;3s=(̰==r<;<-<;+I;:;:p:::)+:::;); ;;;z;Y&;;$;-p;:);M*;^p;wM;;.R;z;;r;;ۧ;<<##<dd> >:>I>"E>+f>3>?>N]>^>t> >>W>i>>>f>5>,>>X%2>(i>=ʦ=+=m#=8= {<٢<<, M<<< \<p<!<N<< <<<%<2gA5>2W>S >{)>>~>C>v^>>>u?? ?x? {? f?>>]>>>U>'>z'>cN>N>>8>1 >$`g>>=I==ʃ=Vu==we=Xh=B=.0==,_!>>L>%!>/>7g>@>>PH >gCV>ګ>4>%>J>@o> c>>z>Y_>&> >zF@>Dcc>|=W =d=@=H߀=<雈<<+P>|>2b>P>x>>>Q>ϩ>&4>?f??]u??>O>ݚ>G>>߿>>>p\>[>H1>94V>->!>>f==Ë==}=o==e`=MK=7$=)2=< > >>$e>1}>F~>R>g)>>>>>:;>؏>>]>Ў >W>}>(>Z>(F=JR= p==W{="a<;q)>>3>Nl>t>2>>>*>~>z>Z>*?e?I<>j&>ҟ>F>]>>:~>>v>em>Tw>C>4\>)@B>>>9>2==N=ҙ=q===w=\s=C=76=i='E<<@<[;';2;h;f;i^;F_;(2;;{^; ;Y;^;r:ܒ:m:h:(:::H::6:Fc::::u:z:::h::;;O;(2;@;WfM;st; ;C;n\;4;>;< Q<M<7 >$> k>> n7>/o>>t>J>W>k>>>\> m>ӈ=>1>K>g> >Ҩ>>>h>6̪> ==H=`[=&(< >!>7&>P>q>ͯ>>w7>f>ҼF>!>t@>yS>>>뼆>b>P>>>R=>0>mV>]?.>P7>B>3>&k>>r>i=J=h=S=%a==9==j=P=BL=(q=T<<IJ;>> 5>Y>?>$[>>0J>@>P7>^7>n>ę>t>P>5y>[>>@>>>J>1j>W>u_,>B >ps=e=H#=iT=)<=K4=^p=w=o==^3=Ӭ=&i>%q>:!>S>o.>R>><>&>>J>\}>l>M_>k>ߞ>+>3>>L>Y,>j>i>W7>Ki>@>4>&Q>l>p> M>=A=YN==}=E=p,=sq=Z=M,%=7=.=:;<ח!> >i>>"H>-Qf>7]>C,>TF>gq>zծ>>.H> >>0>>v??Z>p>3>>>>O/> %=ꀛ=>=qB=1)q=<%<}k>%Z>;K>R1>k\>>O>>>" >ɺ>>’>+>>5>A>z>m>>Q0>(>f>U>J>A>7>+5>>>>> ==F=K=Y=~R=zȜ=b=[d=F=-=%<%<ݓ<:Det:MV:WW:p:P$:ri:u::$P;{^;"_;: ;\ ;);;;эm;/R< <*> $>H>Co><>"y>)>6g>B>JJ>Ru>cG>}>KP>j>pf>>@>?fL?zU>,>DB>В>>3>d>) =o==y)=4= <)<<_D{<,;< R1;;8;'<2`<u<<4ie>>5>Iٍ>ay>{>a>h>5>s>=>X>Ӓb>>і>_>>V>>>E>xo>d>Z!>Th>M8>A@>4>*+->$>#>|>>8D=d==DI==\=n S=l=W=<=F<̐<<<9X<k;;Ҟ;n;3;r:::,R:-: :r$P:Zh:G:4"::u:S:96F9u9%:K=::k:8: <: :m:>;::& :::S/:xU>:A|::I:}; ;;:;b;1;`;$7;k4<J=Y9=й=n5> >ڡ>&/>%M>.>4>8ti>@~>OV>[>]mE>`N>o>>;9> >9I>m>?|?J?r>>>>>y>4O>MY===3p==H>>*>=>S~>kd>>v><>*> y>>ʎ>50>ʜ> >:>E\>VO>>>zH>k>f4>cK>Y>K N>?a>8>5sV>3V>,Ĺ> %>=y==Km===k=|=c¨=B2=j<Ϸ< >Ħ>,3;>6>>@;>Jp>P>S>\M>oDB>|I}>{A>y7>!>m>>>>f??\?G>2>>t;>@[>>?E>=^==5N0[>>.<>BL3>[>p6>m>>f>>*>*>Nj>}>">l>>>5>>?c>}ف>wL>px>b>Q>HH>EJ>E)>Cj^>;Ð>-->gd> ]==!=3==$=p=d=>d=T99ߑ9:c:>;:6d:c ::::;U;U;KF|;ih;;$;d<m>3,>E)>UvS>bȚ>m>tM>u>Q>e>>?>BE> >'>>>? ?~?$> v>>ά>>=+>N>>=+==5<֑<{<\<9d< ;; ;r;C;; ;F;_;$7;ػ;c< I<%S=====J> ^>v>//}>F5>^>r+1>R>l>>.>!>Ê[>ʙz>P>>.0>Fz>>>>>~>|>mC>^>WUz>T+>Qmp>J>:>*!3>@> =ꂫ=6===|m=V=,l= >.L>MA>fb>{>'>>>>>G>C>Z{>>[ >ȸ>B>F?Z0? ? ?>.j>>>ݟ>Z> =$=B|=1FV<8 >+>1_>H>^K>tx>>9X>>)>U>Z>>Tx>>xp>>R>F>>>ie>=>z>r>j>b>^v>W2>I>9j>)[n>§=4=(===e-=;Q=8<0<;G<<.=S=9=_==>)>Pa>F>b>ή>T>>H>X>>8>V>v>NV>ԥ`>g>?? ާ? X? &>Z>}>c>>^>)==*b=8<4<~E>i>.>DR>^g>y>ҝ>M>3>R>B>>Y_>>>t>>>>>~G>>G>hC>V>w>n`>f>ZU>H!>2ә>'!==Ǻt='==@=w<<>F">|>,>ۥ>z?-? ?{H?Z?\S>0>\\>{>l>n??S? Ѝ? ? ?kE>v>j|>!>f_L>0>=q=R;=<(=%<_<===qV=!=5=L6=ePC=·=_=='=M>\>*V>GZ>g>5q>Z*>>G>E>Co>>>>?>E1>Z>>\>n>}>l>{_>f>\|>c>>W>w>g)>Oq>3>r====oЗ=Z<_L<.yT9:}:@:y]e::%;?;2l;~p(;~;C<*<<)>4>j??J??#?$?$h:?!d???c? RV?W? ? k?u?? N? Ɨ>>X>>>=>7=x=p=h>3>UYo>t.n>6> >(>M>>>ϓ>̭:>~>H>>ɑ>>>L>d>>>}>:y>:>iթ>Ln>*>=B==v=B)=>|~>B? !?#?(?,?/O?0[?/?,q?)hj?%?!FM??u?? p?-?tr?x? >3>ۥ>>d; >~=>=='<M<< ў;̅;);ׅ:N:u:V0:1ҫ:g:}:?:6KV:T7:z:%:::; &;y;: ;db@;MJ;ǝ;;;$<2`<>;<'*<5<;<<M>9m>WV>~>>Y>ϫa>ۛ7>>>>Ш>C>Qp>1>P>\i>>B>>>B>NS>)>{`>]>= b>=ꔎ=Pw=|=A49=AB>E? s?%?/>?7h?<>e> 2>/,=?=e=+$<܆<#7<+9-;U;f;:H::2: <99A91R99r:z:::k:_::2:-::Xr:;,E;z;& ;B);f;;;;F;Ҋ;;9;W;H;EU;;;vC<[<J>8G>dց>S> 6>ˍV>0>f>5>>>ۣ>>>Ӷ>>`>@4>K>Rq>ʉ>%d>lI>HJ9>&>=%a= =A=p<٢ >/'>a?&r?3#?>G[?GL?N[?O?LP?E?>c?6?0?*?( ?'}?'RB?&F?&f?%r?!Q9?{>u>>9&=(=H]=+[<<<.;;{;y:/:yr:!P199w999Y9*999`9:: :G%:h:::):a:>;:x:Q:":1_;z;0ʃ;L;_ӑ;sX~;;Ur;(; M;9T;+;$*;X;;x<L!`>S>>>>hk>i>m>>B<>5>'>>Z> >>։P>BB>>>K4>>}W&>Q>**> =%=?=Jm=b<[4#><&?#?3?BO?P?]#?dx?aN?X V?M1?B?:[?3!?/M?,?,J?+?*N?(?&??q?B$>>Fq=bV=W=#R<‘;9ߑ9,^9x999U 9U 9999Y99PJ9:S:Fc:: H ::: H :5I:T7:ze:e[::>H:et:Xr:\:S;BI; ; M;z;+I;Q};'^;&;b';s< p<5'>B>ò>O>S >>{>XH?? ??>>_(>1*>Ӡ>>>>>X>.3`>&=G==R[=<<-<>;˷;X܅: :wP:I6-99989V096q9"XY9Se8!8<8,8H8r$P8F8H7\777F776!6i6i6i6i7777F7r$P7777\8 80i8r$P888$P9 $9=y9g"99>T:t:D::p;g;lσ;<epHI? ?-'??I?Q&?e@?t?w`?o ?^ջ?O=?C?;X@?62}?2~?04?/6?-?+??'j? ?">.I>Ol==|=$T9o9}999>T99:z::.4:F:Z:o:|:[:P$::w:::;l;H;)k;`;)<&>3ž>w>R>>ڥv>6?(I? k? w? B?}>>>1>֒>>\>xz>OP>)>.=η=u=EЪ= < 2h>2?"?6F?H?_?u{??~a?n?Z?K?@?:?5?3PH?0y?.?+x?'C?y?H>^><, =٘R=f4$Q>h>>*>N>S?QU? |? C? ?>>`>>>$>q'*>A٪>==D_=rH=*>;:j; :;q;X|;W< <{><=)k>#CD>۰?'?;G?Nֻ?d?w?}M?r?`?O?D7?N!>>Y=f{=DT9:k:"K:\y:u:[;`;Y;;;̩<.W%<^<ƜI=#=N=Tr=D>J>Z>>dU>>X>܏>4>u>>b>6L>%=?==W=`<">ώP?(9?<`?M?^ܲ?h?f?[`?M1?C#W?;?6a?1[?-?*;?&X?ؙ? >J<>Xa =ap=|b= P>Ni>*^>>Q>H??4?>,>>>r>t~>C?>Yo=Ԛ=;=i==1=w::;E;k<F>X?% ?7?Et?PB?RԲ?N]?Eݼ?=?7y?2B?-N?(?%W?? >E>>@=E =I?< @T99G}9"XY8$P888i8Y8,8,8888ׅ8H8u88u8V8XY8,88i88888888^8$P9 9 $9%90i94;999D9G}9S9`A9999]L9:& :y:;%;;i'<(4<<̖.=d=b=c>>@>,E>>>۲>jp>>e >ƥ>>>_>\[>*z>׷=z=S=`6="G l >??/C?9uB?>?>I?;R;?6j?1oZ?,%!?'\?"#?K?M>e>>4==}V=.<;ڵ;;%D::Y:Fc9<995<988]L8,8V8u8}%8l}8a8a8a8a8\!8\!8K8F8;80i8F8K8V08a8w#8}%8}%888u8V8XY8,8i88`8c9Se9H9 $9"XY9%9-Y9298[9G}9Xd9~+9}9,^9%:@::;Zh;I< )<[p<,\>tP{>> >մ<>>Ъ?>h>[>id>9c>{+=E/=.=h=*<;9\9 @8877\!777777776!6i660i666i7777\!7788}%89Se95<9p9H 9: :P$:Kc;7={;$*<O$~R>|?$? ?+?/So?-:?*c?'?$o]?? >>o>kD>F>*ͅ=6p==.Y;:|u:Ȇ;.b';;1<1ױ>Ln>>$>>^>H->}o>H8>Z.=8=*r=pLi=/=_<;š>h>/???-@?? >喚>x^>>[d>$S==֨=+V<ݽ<&<"~;TX;l:V:PoB:J999S9%8e8<88w#8Q\8*8H7"77777777777777777!7%8 888;8V08l}8}%8V8,8Y8<8]L88b@8c8%9 U 9ׅ9"XY91z9D9^m9&996F:P5: Z;;G;1F<">M:>hJv>o.>c@>H!>%4>=}q==6L= -e>I >p>\>J>>>ֈ>_>0Gw> =v&=4=@w< "ל>Y=0=_=L=W}=m>+Z2>GZ>Jș>A >1>U"=G==z=-v< ~=lR=|=,=L=G==E=Y?<A<T9ׅ88%7i7u77\!7F7F70i776!6i66666i6i6i6i6i6i6!6!6!77777770i7F7r$P7777%88;8V08w#88V888i8889t9 $929R999`:*:6:;Q\;;<.\T:J9Y99V096q988U 80i7"7u7F776!6i6i6660i60i66666666666i6i6!7777\!777i7"8u8*8K8a8}%88XY8888$P9wP90i9G}9yX99:k:U: ;1;S[;9;h<.R<.T9799G}9"XY88,8Q\7"776i660i66i77770i7\!7u7!8F8891z9yX9KV:8:c%:Ŝ;4m;Xh;;8< < <7'wT:w:1R;'%;z#;};&;GU;Ə;#;;1;x*;5;u;3;wD::rj:9w9F9&9a9G}91z9ׅ88i8}%80i7"77\!776i6i6660i5i666i6!7770i7r$P7u77888;8V08w#8H8,8[89wP91z9Q\9~+99,^9b: H :o:_:U;%;l5l;0;m;Ը;!;;*E;n;D; :N:o):u:7S~:[9}9799J>T9+9Se88}%8u770i6!660i60i66i6!777\!77i8H8g"88#91z9g"9x9:0rv:k:;ih;1;l;;C";v;ׅ;;L;L";KJ:U:jN:h:899x9t9]89G}929"XY9u8b@8i8H8K8 77776i6i666666i6i7770i7\!7777$P880i8V08}%8XY889ׅ929R999*9:}:MV::-:;s;=l;_e;q<;g";G;Sq::]@:r:D g:N:J9w9)99`A9?<9"XY8c8Y8l}7%776i660i66i6!777\!77"8*8}%8i9Se929a99`:>;:\:!:;7;;<::;P1;Qs;D~;'U; : :k:}:?<:|+99}9\!9=y9+9 $9888888K8u7i770i76!6i66660i60i666i6!777F777i7"8H80i8\!8H8i89 $96q9Y`99g9k9:|+:2*:dM:G: Z: &:;7;::h:d:i:9r9\9k99D9`A9F9-Y968!88l}8 776i660i66i6!770i778 8F8u8<9929`A99::4":r|]:ri::d:h;J::u:X::p:-:9ͮ999D9%968$P8˞88,8H8l}80i8777F76!6i666660i60i666i7770i777i7"88K88i8c9"XY9?<9]89896999:Fc:=y:eu:|+:6:'k::::fr:%99,^999`A9G}91z9"XY988m88XY8\!8 7u76i65i666i77F7u788\!889t91z9Z9e[99Z:ŏ:=y:mS:D::$*:h:x:e[:n:3:99799R91z9}88888}%8\!8;8u7\777F76!6i6666660i60i66i7770i777i885<8}%8i8#9%9D9a9D9wP99>T9b@:k:^:4":M:_:dM:_9z:I6-:&:k9w9>99R929 $8$P888,8V8r$P80i7"776!660i666i77\!77"80i8r$P889Se90i9R9t9h9ͮ9u::3:O :c%:mS:h*:T7:4: 9p9{99U?95<9 $8#8]L88V8}%8V08*8 7\77u7r$P70i776i66666660i60i66i777F777"8*8Se8<9Se9-Y9G}9g"999Y9L9?92:: :::wP:>;:999g9yX9D9"XY8#888}%8a8F87$P77776i6666i77\!78 8F8}%8,89Se9&x9G}9s9}99w9c:S:>;:wP:߭::9b9999G}9&x94m8`8i8ׅ8}%8\!80i8u7"7777\!7776i6666666660i60i66i770i7r$P77\8*8U 89 91z9R9s9U 99{9*999ߑ999j99p99{9.9g"9C]L9"XY888u8F87$P7777\!776i660i60i66i777i88\!8H888`9"XY999Z99g9999u99"91R9o9*9}9kCH9@9"XY8c888}%8\!8;87$P7i777\!70i776!6i6666666666660i60i60i6777\!7u7\80i8H8]L9929R9yX9U 9wP9)99y9]L99>T99Ľ9*99a999Xd96q9 $88i8}%8*7"7i7u77\!70i776i660i60i66!70i7u7\8*8l}8ׅ8i8˞8%9 $91z9G}9`A9899999,^99F9989Z96q978!888a8;88777u7r$P7F7776i6i66660i66666666660i60i66!77F7u7\85<8V89}929R9w#99999q9999F99}99c 9G}9)9a9Se888a8H7i777F70i776!6i65i66i77F77$P8@8}%888^8#9ׅ9)9a96q9R9`A99D99}9}9@99c 9G}90i9 @888g"80i8H7"777u77F7776!6i66660i60i60i666666666660i60i66i77F7u7\8F8V89H929R9l}99}999F99a9x9999~+9S96q9 $88i8Se80i7\7u7\!70i7776!6i6666i77\!78 8K8}%8,8<88969"XY90i98[9G}9S9]89db@9g"9`A9Y`9G}95<9"XY888U 8F8u7\7777r$P70i7776i6i6660i60i60i666666666660i66i77F7u7!8F8V89u91z9G}9`A99@9979999Fc9D9vD9S96q9 $8!8,8a8u77\!7776!6i6i6660i667777i8H8V08U 8,8<8^8c94m979"XY9-Y9296q9?<9A9@96q91z9"XY9 U 8`88w#87\777r$P7F7776i6i6660i60i60i666666666660i66i77F7u7"8@8H899)9a9D9Z9~+99e[9}9}9Fc9@9S9vD9V09=y9"XY8c8Y8g"8 7u70i76i6i666660i60i66i77F7u7\88\!88,8<8˞88`9u979"XY9"XY9%9&x9%9"XY979888y8XY8\!8u777\!70i776i6i660i60i666666666660i66!77\!7u7"80i8u8<89"XY96q9R9`A9989D9999p9Y`9D9+94m88u8770i76i66660i60i66i777r$P77"8%8a8H8,8<88b@8$P9Se9 U 969}9}994m8#8b@8]L888K8 77r$P70i76!6i660i60i666666666660i66!77\!7u7\8*8}%8Y8"9ׅ91z9C]L9S9`A9vD999}%9db@9Xd9F91z9ׅ88,8V07\776i660i60i60i66i777F7u78 80i8g"8H8,888`88$P8#8e8#8$P88`8]L8i88w#8;7$P77\!776i660i60i60i66666666660i60i6i777\!7u7\88r$P8,89Se9"XY929D9R9Y`9]89]89Z9R9D929"XY8#8<8Se8770i76660i60i6666i6!770i777\8H8F8r$P8H8,8i88˞8!8b@88"8m8^8]L88,8H8a8*7"77\!776i660i6666666660i60i66i777\!7u788\!8V8899%929=y9D9G}9G}9D9991z9"XY9Se888Q\7!776i660i666666i6!770i7r$P77i888K8w#8H8,8Y8<8]L88^8^88]L8<8Y88U 8\!8%7"77\!776i60i60i60i66666660i60i60i66i777\!7u78u8F8}%8,8]L8c99"XY9*91z929291z9%978%88,8l}8u77F76660i66666i6i6i7770i7\!7u77"8H80i8\!8}%8H8888y88]L88y88888a8*7%7770i76i660i60i666660i60i66i6!770i7r$P7u78 80i8g"8V8Y889Se9}9 $9 $9 $9wP988}8]L8,8}%8%7776i660i6666i6i6!6!7770i7\!777\8 88F8a8}%8H88,8Y8i8888i8,8XY8U 8g"8;8u7i7u7F76i660i60i60i60i60i60i60i66666i7770i777i888V08}%88Y8888$P8$P8c8b@8888}%80i7"7u70i76i6666i6i6!777770i7\!7777$P880i8V08l}8}%8H8XY8,888Y8Y88,88U 8l}8F87\77\!76!660i66666i6i6i6i6i6i6!777F777i7$P88F8a8}%8ׅ8,8i8<888[8i8,8V8l}80i7$P77\!76!660i60i66i6i777770i7F77u77i7"8u88F8\!8w#8Se8H8XY88,8,8,8,88V88r$P8K87$P7770i76i6666i6i6!777777777770i7\!7777$P8H80i8Q\8g"8}%8H88888XY8H8}%8\!8*7%7770i76i666i6i77770i7\!7r$P77777"8 880i8Q\8a8}%88H8ׅ8XY88888H8Se8r$P8V08*8 77u7\!76!660i66i6!77770i7F7\!7\!7\!7\!7\!7\!7\!7\!7r$P77u777%8H8%8F8V08g"8w#8}%8}%8}%8}%8r$P8\!8F87$P77u7F776i666i6!7770i7\!77u7777"8 8H880i8F8\!8l}8}%88H8V8ׅ8ׅ88V88}%8r$P8V080i8H7!7770i76i660i66!7770i7\!77u7777777i7777777"8 8H880i8F8V08\!8a8a8\!8V08F8*87"7i77r$P70i76!6666i6!770i7\!777i7\7"8 8H88*80i8F8Q\8\!8g"8w#8}%888H8H8H8H8U 8}%8r$P8\!8F87$P77u7F76i660i6i777F77u77\8 880i8F8K8K8F80i88u7%7"7!7"8 8u88%80i8F8F8K8Q\8K8F8;88H7$P7777\!776i66666!77F777\8 880i8F8V08\!8\!8a8a8g"8l}8r$P8w#8}%8}%8Se8U 8u8u88}%8}%8l}8\!8F88 777\!77660i60i6i770i777i7"88F8a8Se888,8,88ׅ8Se8l}8Q\80i88888*80i8;8F8F8F8F8;80i88H87\77u77F776i6660i66!77F7u78u80i8\!8}%8u8V8XY88XY88V8H888}%8}%8}%8}%8}%8}%8}%8}%8w#8a8V08F88 7\7770i76i66i77\!7u77"8H8F8r$P8888`8}888c8!8]L8i88Se8g"8Q\8F8F8F8F8F8F8F8F8;80i888 7"777u7\!70i776i6660i66i77\!77"8*8a88,8i88]L888]L888Y8,88V8888}%8}%8}%8w#8l}8\!8Q\8;88 7\777F76i660i60i60i6i77\!77\8u8;8g"8V8i88%9ׅ9%91z9295<929+9 $98!888H8}%8r$P8l}8a8\!8\!8Q\8F8F80i888 7"7i777\!70i776i6660i66i77\!78 8Q\8U 888m899u9u9 @988e88^88i8,8XY8H8Se8}%8w#8g"8\!8K8;88 7\777F76!660i66666666660i677r$P78 80i8a888^989"XY95<9G}9Y`9g"9~+99vD9`A9R999%988֠088,88H8U 8}%8w#8a8V08K8;8%88 7"7i777\!70i776i6i660i66i77\!78u8a8XY8y89u9"XY9*91z929291z9-Y9%9 $94m8}88888u8}%8l}8\!8Q\8;88 7!77u7\!76!660i60i66666i6i6i6i6i666660i677788V08}%8889"XY96q9R9yX9&99)94949)979e[99S95<9 $8$P8888,888}%8l}8\!8F80i88 7"7777\!70i776i6i6666i77F78u8g"8,89u9%96q9G}9R9Z9]89\!9Y`9R9D96q9)9a9ׅ88˞88,8V8}%8g"8\!8F8*8H7"7i7u7r$P776i60i6666i6i6i6i6i6!6i6i6i6i66660i6777"80i8w#8XY8i89 U 9-Y9G}9l}999ͮ9Q9u:J9u9r99,^9>99`A9@9"XY9Se888<888V8}%8l}8V08F88u7"777u7\!70i776i6i6660i66!77\!788w#8i8$P9"XY9?<9Xd9yX99u9}99Fc9@989yX9Z9G}91z9 $888i8888l}8V08F88 7\777F76i660i666i6i6!7777776!6i6i6i6660i6777"8K8u888$P9 $95<9Xd989XY9>T96F:^:9:KF|:O :C]L:*A:ŏ99w99u9db@9C]L9%9u8$P8`88i8,8V8}%8a8K8*8H7%777u7r$P70i776i6i6666i777r$P77!80i8H89u929Y`9t999<9>T9ͮ9>T999x99D9g"9N^91z9ׅ888,8H8w#8V08;8877770i76i660i666i6i6!7777777776!6i6i6660i677r$P7"8K8H8i8m969-Y9G}99'k99::Og:Se:}::::/:T:&:c99{9&9`A9@9&x9V8e88]L8i88H8w#8V080i887\77u77F776!6i6660i60i666i77F7u7880i8w#88b@9 $9D9}%99k9`9r:|+: : U :z:Se9r9w99$9&9kCH9G}9+94m8˞8i88}%8\!8F87%777r$P776i60i666i6i7777777777776!6i6i6660i66!7F7i80i8u8i89"XY9C]L9db@9}99::VH":]3:Ŝ:h:u::69:V:6 ::fʜ:)9a:X9o9>989Y`999&x9wP8%8m888XY8Se8a8F88 7\77u77F776!6i6660i6666i6i6i6i6i6i777\!7u78H8K8}%8,8]L9Se9-Y9R99F9:[:wP:<|D:P5:U:S:G%:2:Fc:9ߑ99XY99^m999 $88<888g"8F88 777r$P776i660i666i6!777777777777776i6i6665i66i77u8u8}%8i891z9^m9u9q9r:g:_9z:":h;1; ;6P;B5;>;-;:]e::-:V=:9u9k9}9~+9R96q9%9}8#888,8H8w#8Q\8*8u7"7i777\!70i776i6660i60i6!777777770i7\!77\88V088,88c9 $96q9^m9%9k9CH::P5:`:e[:ri:*:6::xU>:P5:& :|+9ߑ9,^9wP99Q\9*9Se888V8w#8V08*8u7\7770i76i6660i666i6i7777770i70i70i70i70i70i777776!6i6i66660i60i60i60i60i6666666i77\!78V088e96q99I9ߑ::j;:k:u;iu;R=;`;1;;̄;H;-;^O;*;7::t:8:9N99D9`A9G}91z9"XY9 @88]L8Y8XY8}%8\!8;87$P777u7r$P70i776!6i660i666i7770i70i70i70i7\!777"88V08u888$P9ׅ91z9R999 :S:BU%:::t:w:$::::$::dM:/A:|+9ذ9Y9@9\!95<9H8`8i8XY8Se8a8F87"77u7\!776i6660i60i666i6i6!777770i70i7F7F7F7F7F7F70i70i77776!6i6i6666666i6i6!77777F78*8,9 @9G}969Ͽ(:u:^1R::;){;u;8;;;;;];ܰ;;w;l5l;$<:ŵ::T7: @999}99V09?<9+98%888,88l}8F88 7\77u77F776!6i6660i666i777\!77777u77"88V08u88˞8`9"XY929R999L94:$:n::.:;L;!E;'";"l;d;:m:C/:.:lKp:*:Se9979Se9C]L9 $88[8,8H8w#8Q\8%8 77770i76i6i66666i6i6!777770i70i7F7\!7\!7\!7\!7\!7\!7\!7F7F70i77776!6i6i6i6i6i6!77770i7F7r$P77"8Q\8i9%9l}9::O(::枖;32;c;>H;T< <$/<;2T:X:&:cZ::K;7;)eg;^s\;`t;;.;;";;b;z;K;:r:߹:]3:M: 9w979g"96q9H8!88,8V8w#8Q\887i7u7\!70i776!6!6!7777770i70i7F7\!7r$P77777u7u7u7u7u7u777r$P7\!7F70i777770i7\!7u78u8K8ׅ89u96q9}%9:J:c%:;e;XXr;;X<;;]Y;i;;x;Ҡ; ';U;?;PY?;:@:Q::39999R9%8e88Y88U 8a8;8u7\777F777777777F7\!777u7u77777777777777u7u777r$P7\!7\!7r$P7u78*8r$P88`9 $9?<99jN9u:U:M;};Q\;o;тk<NW<~9H; ;j;;;;D<$<!>K>=A=#==i=+}D>3Y >> ;>9i>)g>=iQ===7r=6<.<~<' ;;;T;1:::_:3:u9#9w9"999R95<9"XY9 @88]L8Y88u8r$P8Q\80i88u7"777u77F777777777F7r$P77788V08u88]L899ׅ9"XY9g"99D99Y99Z:4m:(S:T:k:^::)7;E;Je;F;;;e< < t<=v>9>Yb>i}>g{>V>;i>N=<==;=95=4;n;e[;4;˩;)<<(NB= =uf=>%x>NH>q>>>r?$>Ww(>7>#=b==yS=2=9[<<\<<<<;=;;9;:]L:::eu:>:^:99k9'k989`A9N^96q9&x9ׅ8`8b@8]L8i8,8V8}%8r$P8a8Q\8;88u87"7"7"7$P8 880i8Q\8l}8u888%9"XY94;9N^9`A999Fc9'k9:J: : H :?<:_9z:X:u:H :w]::;;,;S[;O;A;О;*;i4< ` <#J}<>|T9Ͽ(9w9 99,^9{9wP99s9S9C]L96q9291z91z91z95<9C]L9Y`99F9u:dM:;;|;< tL>&p>M>qt>%>B>u>^U>@t> =|'=H=6=]=#<<<`<<< 1;̛;";Vt);@: :Q:?::m:Eũ::91R9y9$9e[99]89J>T96q9)9a9 $9 8c8˞88Y8,88XY8V8u8}%8w#8l}8a8a8r$P8}%8H888899&x9@9Y`9969H 999 9:*:=l:Q\:mS::-:::Z :1R: ; ;y;8;Xx;V?;u;i;;`3;LI<<&;:::g:::z9u9݁89m9{99999vD9s9~+999{9݁8:#`:]3:wv;G;5;#<lm> Sc>?qN>\>o>s>f>OZ>7i)>==D==j9=6= T9A96F:S:ͷ:C:ze::):Fc:t:jN:]L::g':S; ֬;E;"_;6m;Q\;m;;!;;[?;^&;=-<Y<<)<:Pq:e[9-9N999Fc9U 9D99D99799˞9r:|+:ׅ:=l:VH":p:::):)::P$:::K=:xK:m:WPJ:A: : <9999[9I9{9{99}9u:g:v :KV;\f;}Q;<< O>Z>.&N>A>N>P->Ff>2>?>ܓ={=۶=_=T#0=,S8= oI;";;;ӝ<|<Б<<h<;J;J;r; M;L;^c;(2:::-:l:8:e[9t699<9Y99999F9,^9PJ:::Q\: :^:b':.:::C:h:PW::`:":p:KV::K::):v :P5:/jN:>;:|+9`99496F:z:"K:c ::D;EW;s;٫<V=;=Ld==M== =Һ> }0>~>%@>,O>+* >">D ==Wb=Ng=s=`=0=*<<ĸ<<:V0:G:?:?:G:WW:K=::5;;5;<X<5'>k>~>PX==D2=n=&=r&=I8=(5Z=<<B<^=cc=(=Ҏ=֌=o?=-=}n=y==`]=SZR=)= -?<|<ːa:::N::t:(:jN::-::l:N:PJ::;K=;;W;;;e;:C:[:g::t:`A::::899m9w9>T999ͮ9PJ9:z:4":r:>H:bL;.1;m';I;;;A;Ǵ;ř;~;; ;Y;r;/;c";H;,;g; &:@: ::b':4:t:Ӈ:%;Y&;Gg;; ;5<,<^<<Ƭ=ea=%v=RX=&=w======K==x=yw=VX=3=<<8<h<<_<0a< ;>;;;;d;R;;8;q^2;Q\;4Q ;!f4;1; :Z%::Ί::F:::Se:l:XXr:MV:?<:2*: H ::,E9%999m9k9jN99a9F9I9q999m9>T9ͮ9w9PJ9ߑ9:r: : H :<|D:V=:~.::t:o5:z:ߑ:(:I;7;7;:r::::PJ:?:ҫ::Ȇ::z:2:'k:6:x:k:{m:r$P:kb:h*:lKp:p:yX:k::::::}:::A::6:|+:lKp:H:)n:ͷ:[9CH99w9>T9}9.9>T9w9ߑ96F:Fc:PO:.:;'k;]?.;b;pi;_;;;̩;;;Ҡ;¢0;jN;;T;;a;Dz;)Od;; ::::;J;o);D;~;};c;t<#=d/X====`=7a==p:=_+=J`=3p=9=<:`<<<\,<3<a;,;F;$*;<.;;z#;kCH;^c;T;I );5F;%;V; U ;:u::޵f:2:::H :ri:::y]e:mS:bQ:T7:I6-:T9>T9ͮ9999299%::: :N:(S:A :WW:xU>::V:9a:::U:Z%;;4m; ;P$:bL::)+:;::K:I:i:Ŝ:$::m:k:o:U:B2:0rv: H :V:}: U : : : :u::){:@:R:c%:l:n:gz:\!:M:9:!P1: @:9-99\9}99y99L99w9ߑ::C:`::c;. ;{;c;i;ف;;<<;p(;fZ;_;.;;;8;B;lσ;L";/U;'k; ;7::; U ;(2;Xx;L;&7;u<ɝ<$:o:fʜ:\y:P5:Det:4":"K:>;: <:9999Q99:X:t: : ]3:>;::#s:4:D:V0:s:`:-::-::֠0:/:`;:!; ; ; ; :g':t)::^:19:c:::::o:T7::: H : U :9S9ߑ9PJ9\9>T99]L99o99A9t6::z: U :m:u: :,E:J999 999"9jN9I9Y99k9<9>T996F:g:`A::@;0rv;*8;ɪ;;;d< 3<;Z%;9;߲;*;aZ;U~;+;;dT;D;)eg;; ;[;J; );%;V;x;;c<PX<"MWΝ;;:; :Z ::C:*:4::]@:>:?:x:d:x::::^:: :a::P$::Q:|:y]e:u<:p:h*:_9z:Qw:Eũ:5I:$:: U :8::Se::k::m:::':2:;t:G:U:l:/:]3::h:}:8:::1_;;nO; ;f;:%:F|:KV::w::/:r$P:`:M:9 : : ]3:Se9Q9w99jN9s9'k9}99@9&9&9699XY9Y99]L9>T9oB9w9ͮ9}9y9q99a9s99'k96969'k99XY9F999Ͽ(9: @:M:>;:;"XY;kR;T;Յ;2;(;i;;j;&;a;;L;;h;n;Lҷ;-;$; ;r:A;ɝ;0_;=l;G;;ͣ;p(<$<:sܒ:qC:p:r$P:rj:s:rj:p:l:dM:WPJ:O :AL:3:"f::ŏ: : <: D: M:}::){:5C/:?<:G:Rמ:c%:t::u:: :::V::;:0;7;[;'^:u:@:1R: Z:::p:R':<$7:':N: <:K=9%9w99979%99p9]89S9R9H9G}9G}9R9Z9g"999.99wP9wP99}9%999t99t99D99e[9}999{9,^9:J:- :r:;,E;C1F;!;,;,;;_Y;};x;|;;;;;a;CS;%;;ih::u::u;;N2;;x*;< I<';:::(F:2:8[:=y:BU%:F:H.:KF|:O :Q\:U:\y:cZ:eu:i:j;:gz:c%:WW:P5:D:7S~:){:߭:N:}:m::: H :+I:7:C?:L:T:c%:rj:7::w:$::*:ǩ:5::::[:wv:jg::N:t::p:Ja:(S:u:99d999{99Fc99yX9Y`9G}96q91z9%9 $99ׅ9 $9"XY9-Y96q9D9R9Z9a9g"9i9g"9`A9Z9Y`9Xd9Y`9Z9]89`A9g"9s999D9ŏ999k9d:z:G:A|:Ȇ;;CGI;wc;);;Sq;Sq;;ع;f;yGb;Zh;@Z;& ;;::$:Ȳ:Xe:t:%:;0_;PO;G;;>a< <(L;:g:#`:2:<|D:G%:PoB:Z:h*:xK:t:a::,R:6 ::9m:G:V:oB:ѣp: :ʖa:::2:^:M:)n: 999,^9F979H999yX9`A9R9A91z9"XY9wP8`88`888֠08b@8#969 $9)9a91z96q9?<9@9?<9996q96q98[9=y9@9D9G}9J>T9R9S9Z9c 9yX99&9'k99PJ: :MV:9T:K;7;k;>;R;Zh;X;Qm;EW;2;"XY; ;!:M:Ȇ:\::V:jB::2:; ;Eũ;;;ڵ<< <5S<(4<‚;+;Ҡ;;jB;;_;Dz;(G<;.:6F:ѣp:9a::Qw:9t69Ͽ(99$9}9%99}999XY9x9F99q9,^9]L9N99ߑ99::z:u::"K:0rv:9:A :G%:G:G:F:?:7S~:-Y: ::: &: U ::: H :-:8:C]L:M:U:c%:r$P:/:L:jB: :M:jN:w]:::[::: :Sq::f:o: 999k99e[99g"9Y`9R9G}9@96q9-Y9 $9 U 8$P8֠088i88,8,8,8Y888"8%969 $9"XY9"XY9"XY9"XY9"XY9"XY9"XY9%9&x9)9a9-Y91z9296q9?<9D9R9Xd9c 99u9h9N::4;:t::*:U1:X;;[:]e:σ::h:߹:2:::~.:h*:_9z:`:rj:]3: :;,;;ysi;; g;wv< M<V<',<0<4<2F<)<S<;i;1;";;Z;I6-;"XY; b:`:܅: ::V:K=:Ja:9r9ͮ9i9wP9U 99g"9`A9`A9c 9l}9~+999999999)9"9<9N9ذ99j:::ͷ::"K:*A:2*:4;:2:- :%:wP:Fc: &: <:|+:|+:: @:N: H :+I:6d:@D:H.:Rמ:`:qC:[:x:6:KJ:H :::,R:::::z:`:E:& 99k9H 9e[99Y`9G}96q91z9*9"XY9 $968%8"8888XY8H8}%8}%8}%8}%8u88,8i88֠0888%8`8`8`8%8`9Se989 U 99wP99 $9"XY9&x91z95<9@9N^9\!99.9*9`:|+:){:U:S:::.::u:::s:_9z:G%:2::>;::g:4:a:.:h;;M;;)x;b;ޒ; <H0<< ;)7;;;&7; ;;Y;,;Y::4::::m:Og:*: 9u9]L9x9.99g"9S9G}9C]L9@9?<9@9C]L9D9G}9G}9J>T9R9S9]89g"99D9.979)99L9 99r9%:: :m:V:::N:: :S:[9`99:K=:c: <::: H :)9a:4;:;t:G%:S/:dM:xU>:k:p:A|::%:]3:`t:}:fʜ:O :4":g:S999&99Y`9D91z9%979u8`8$P888<888H8}%8g"8\!8K8F8F8K8V08g"8}%8H8888888888888^8`8b@88$P8#9Se9 @9wP9 $9%91z9?<9R9s9e[9x9]L9ߑ:X: ::7:"K: :'k:N: @:|+96F9r91R9`99u:k:)n:s,x:,R:u;M;Ul;-;C"; ;;O;<;;R; ;~2;M;(]@;:@::'k:[:R:2*:^: U :99?9979D9kCH9S9D94;9+9%9%9"XY9"XY9"XY9"XY9"XY9"XY9"XY9%9&x90i94;9=y9G}9Y`9g"99&99XY949|D999ߑ9-9%::k::k:96F99u9ߑ9p9!9ߑ99r::,E: :ŏ:Fc::"K:/A:<|D:Jo:V0:fʜ:p:rj:o:dM:S:@:&:ŏ:99o99yX9Xd9D91z9"XY9 @88b@888888H8}%8a8Q\85<8%888H8H888*8F8\!8w#8U 8V88,8,888,8,8,888Y8i88y88]L88`8"8c8%9u9 $91z9D9Y`9Se9U 969F999.9>T99}99y99I9)99)99::9:$:4:@;5G;D9m;h*;/;j;;;v;S;--;e:V::K::j;:;t:999o9999}99^m9G}95<9%9ׅ94m8%8#88$P8$P8c8c8c8c8}8c8$P8`9 @99%929D9S9c 999}99F999ͮ99m99Q99ߑ999ͮ9}9­299}9ͮ99ߑ9r99u:K=::k::m::#`:1":6KV:8:4":':: <9u99m9I999C]L91z9 $9t888888ׅ8u8w#8\!8F8*88 7"7"7\7\7\7\7!7"7%8u880i8K8\!8g"8w#8}%8}%8}%8}%8}%8}%8Se8u8H88XY888,8,888i88y88"989 $90i999N^9Z9g"99999&9&9U 9D99t999}9{9: <:G%:::ܥ;5;-;'";- ;+; ;ͷ:#:": Z:%:u:G%:6:9p9<9x99999g"9S9@90i9 $9Se8888<8888i8i8Y8Y888Y8i888`8$P99"XY929D9S9db@99D9Fc999i9k99m9}99L9,^99jN9F9x9x9F9jN9999>T9\9w99`9p99CH9%:::k:99Q9w99F9V99p9V09 $988b@888XY8u8w#8a8Q\80i88 7"77777777777777!7$P8 888*80i8;8@8F8F8F8Q\8V08a8g"8r$P8w#8}%8}%8}%8}%8Se88H8V88888`89 @9 $9%91z96q9C]L9G}9R9S9U?9V09S9S9S9Z9p9@99: :D:/:d:KV:ͮ::E:t):%:b:wP:4m:`:4": 9r9}9F999^m9S9N^9F9991z9"XY9 @8}888,8XY8H8U 8}%8}%8}%8}%8}%8}%8}%8w#8w#8}%8}%888V8,8i889wP9&x96q9G}9Y`9g"99D9999s9x9)9x9XY999}99%9%969}99799h9x9F9{99i9q9k9<9 g999]L9|D9Y99699c 9R9?<90i8m8888}%8\!8F8*887\777u77r$P7\!7\!7\!7\!7\!7\!7r$P7777u7777i77\7"7"7$P88 8u8H88%80i8;8F8F8F8F8K8Q\8V08\!8a8l}8w#8}%8u8ׅ8,8i88`8$P9 9ׅ9"XY9&x90i91z94;95<96q96q9@9Q\9g"9e[9jN9`:S:2:_:k:%:*:^:5::Q:_9z:7S~:m99]L9XY99`A9F91z9"XY9 $9wP9 @8%888i8,8ׅ88w#8\!8F80i8*888%8*8*8*8*8*8*80i8;8F8a8}%88<8b@9 U 9"XY929D9R9^m9p9989D9&9e[9e[9&9D98999yX9s9t9ze9999998999D99U 9@99Fc9}9}969U 99oc9Y`9G}95<9&x9ׅ8%8,8H8w#8V080i88 7!7i777r$P7F70i77777777770i70i7F7\!7\!77777u7u77777i77!7"88 8u8u8H88888*8;8F8F8Q\8\!8g"8}%8H88888!8c8`9u9wP9 $9"XY9%9)9a90i95<9G}9g"9%99w96F::2:I6-:VH":])+:VH":Jo:4"::9`9q9}9yX9G}9-Y9u8b@888i88,8V8Se8w#8a8V08F8*8H7%7!777777\7\7\7!7"7"7"8 88;8l}8889 9"XY91z9?<9G}9S9Z9a9g"9p9p9l}9g"9`A9Z9S9R9R9R9R9R9R9R9R9R9R9R9R9R9R9R9S9S9V09Xd9Y`9Xd9S9Q\9D96q9-Y9 $9 U 8c888l}8K8%8u7"777u77\!70i7776!6i6i6i6i6i6i6!777777770i70i70i7F7F7\!7\!7777u777777\7!7"7"7$P8 8u8H888*80i8F8K8\!8w#8u88,8i888!8}8#989}99"XY9&x95<9J>T9kCH9e[9)9}9A:J: :>;::>;: :99.9x99^m999 $88i8V8w#8a8\!8Q\8F8*888H8 7$P7\7i77u7u7777u7u7u7u777777\8 80i8w#88[89 9 $9-Y95<9@9G}9J>T9R9R9R9J>T9G}9A9996q9292929292929291z9-Y9&x9%9"XY9"XY9%9%9&x9)9a9*9*9)9a9&x9#9"XY9ׅ9 U 8#8!88i88u88 7\7777r$P7F7776i6i66660i60i60i66666i6i6!7777777777770i7F7\!7r$P777u777777i77\7"7%8 8u8888*8F8V08r$P8Se8V8,8Y8<8]L8֠088#94m9}9 $9)9a96q9R9l}9U 99 99ذ9A9Q9A9PJ9}9ʃ999R91z9 U 888g"80i88 7$P7"7\777i7777u77r$P7\!7F70i70i70i70i70i7F7F7\!7\!7\!77u778u8F8}%8,889979#9-Y91z94;95<95<9291z9+9%9"XY9 $9 $9799 $9 $9 $9ׅ9H94m8e8c8b@8m8m8b@888c8c8c8}88!8888,8ׅ8}%8a8F7\7777\!70i776!6i6660i60i6666i6i6i6i6i6i6i6i6!7777770i70i7F7\!7r$P777u7u7777i77\7"7$P88 8u888;8V08r$P888,8i888b@8989}9 $9+96q9R9a99Fc999a99q9i9x99D9a9D9%8#8<8V8V087"7i777u777777\!7F70i70i777777777777770i7\!777"88V08u8,88!89 U 9ׅ9 $9"XY9"XY9 $9 $9ׅ9u98e8$P8c8c8c8c8c8c88`88y8i8,88888,888888,88V8Se8r$P8\!8@88 777\!70i776!6i6660i60i666666666i6i6i6!7777770i7F7\!7\!7777u7777i77\7\7"7"8 8H8*8F8a8}%8ׅ8,8i88˞88#94m9wP9 $9)9a95<9F9V09g"99D9&9&9D99eu9R95<9 $88i8H8Q\8H7\77u77\!70i70i7777777776!6i6i6i6i6i6i6i6!6!77770i7\!7u77%8*8a88,888m8c8#8%8%8e8$P88m8˞88888888<88Y8,8XY8u8w#8a8V08V08V08\!8a8l}8r$P8r$P8l}8a8\!8F80i88H7%7\77r$P7F7776i6660i6666i6i6i6!7777770i7F7\!7\!777u7u7777i777!7%8u8*8Q\8r$P8888<88`8}8e989}9 $9%91z96q9D9Q\9S9Xd9V09R9D95<9"XY94m8֠088u8Q\87\777\!7776!6i6i6i6i6i6i6i666666666666i6i6!777F7778 80i8a8888888888]L8y88Y88,8,8,8,8,8888H8}%8l}8V08;88H8 8 8 8u8u8H8H8u8u8 7%7"7\7i77u770i776!6i660i60i6666i6i6!7777770i70i7F7\!777u7u7777i77"8 88F8l}8U 88888^8b@8c8#9Se9u9wP9 $9"XY9&x9-Y91z91z9-Y9%9 $988b@8y8,8}%8F8H7\777F776i6i6660i60i60i60i60i60i666i6!777F777\8u80i8\!8}%8H8XY8,888Y888,88ׅ8V8H8u8U 8Se8}%8}%8w#8l}8\!8K80i88u7"7\7i777777777777u7u77r$P7\!776!6i660i60i6666i6i6i6!777770i7F7\!7r$P77u7u77777"8u8*8Q\8w#8H88888˞8!88c8$P8#8`989 U 9u969u9 U 8`8c8`888H8g"80i8 7777F776i66666i6!777\!777\8 88F8\!8r$P8}%8U 8H8H8H88U 8}%8}%8w#8r$P8g"8a8\!8\!8V08K8F8*88u7%7!7777u7u777777777r$P7\!7\!7F70i776!6i6660i6666i6i6!777770i7F7\!7r$P77u7777\888F8a8}%8ׅ8,8i8y88^8!8b@888888888m8^8]L8888}%8Q\87%7i777F776!66666i6!777\!777i7"8u880i8F8V08\!8\!8a8a8\!8\!8V08V08K8F8F8F8;80i8%88H8 7"7\7i777u777\!7\!7F7F7F7F7F70i70i70i70i7776i6i6660i6666i6i777770i7F7\!777u77i7"8u80i8\!8}%8V8,8Y8<8]L8˞8`88b@8b@88!8֠08˞88]L888Y8,88}%8a8F87"77u77F776!6i660i666i6!777F77u777"8 8u888%8*8*80i80i8*8*8*8*8%8888H8u8 7"7\77777u77r$P7\!7F70i70i70i777777776!6i6660i6666i6i777770i7F7\!77u77888K8r$P8H88Y8<8]L8^8m88888m8֠0888<8i88,8ׅ8u8w#8V080i8u7"77u77F70i776i6660i66i6i7770i7\!77u7777\7"7$P88 8 8u8u8u8u8H8H8u8u8u8 8 7$P7"7\77777u77r$P7\!7F70i70i77777776!6i6i660i60i6666i6!777770i7\!77u77\8u8;8a8888<88֠08b@8}8c8$P8c88b@888y8i888V8Se8l}8Q\8*8u7"77u77\!70i776i66666i6!7770i7F7r$P77u7777i777\7"7"7$P7%88 8 8 87$P7"7"7\77777u777\!7F70i70i777776!6!6i6i6660i6666i6!77770i7F77u77$P88Q\8}%8ׅ8888`88$P8#8e8e88c88֠088<8Y8,8ׅ88r$P8V080i87"7i777\!70i776!6i660i60i666i6!77770i7\!7r$P777u7777i777\7"7"7"7$P7$P7"7"7"7\77i7777u777\!7F70i777776!6i6i6660i60i666i6i6!7777F7778 80i8g"88,8i8]L8`888`9Se99Se8%888`88<888H8}%8a8F88 7\77u7r$P7F776!6i6660i666i6!77777F7\!7r$P77u7777777\7"7"7"7"7"7"7!7\77i7777u77r$P7\!70i70i77776!6i6i6660i60i666i6i6!7770i777\88K8}%8888^889Se94m9 @9u9 U 98e8c8!88<8888w#8V080i87"7i777\!70i776i6660i666i6i777770i7\!777u777777\7"7"7"7"7"7"7\777777u7u77r$P7\!70i70i77776i6i66660i60i666i6i7770i777"8%8\!8U 88i888$P9Se9 U 969}9}994m8`8c8m88<88XY888l}8K8%8 7\77u7r$P7F776!6i660i60i66i6i77770i7F7r$P77u777i77\7"7"7"7"7"7"7"7\7777777u777\!7F70i77776!6i66660i666i6!770i778 80i8l}8V88<8˞88e94m9699wP9wP9H9 U 8`8$P8m888,88}%8a8F887777\!70i776!6i6666i6!7770i7\!7777777\7"7"7"7$P7$P7"7"7"7\7777777u777r$P7\!7F70i7776!6i6i6660i66i6i770i778 8F8w#8ׅ888`8c8`9 U 9}9ׅ9ׅ9wP9}9 U 8`8c8!8]L8i8,8H8w#8V080i8H7"7i777\!70i776i66666i7777F7r$P77u777i7\7"7"7$P7%7%7%7$P7"7"7\7\77i77777u7u777\!7F70i77776i66666i770i77i8u8F8}%8XY8Y88!8$P9Se9u9}9ׅ9ׅ9wP9694m8%8}8֠088i88u8l}8K8%8 7\77u77\!70i776i6666i6!7770i7\!77u777i7\7"7"7$P7%887%7$P7"7"7!7\777i777777u777\!7F77776i6660i66i770i77i8u8F8}%8XY8Y88!8c8`9 U 9H99wP9}9u9Se8888<888}%8\!8;87%777u77F70i776i660i66i6!7770i7\!77u777i7\7"7"7%88 8 8 87%7$P7"7"7"7!7\7\777i7777777\!70i70i776i6660i66i770i778u8F8w#88Y88֠08}8e989u999u988%8c8`8]L8i8,8H8w#8Q\8*8u7"7777r$P7F7776i660i66i6!7770i7\!77u777i7\7"7"7%8 8 8 8 8 8 87%7%7%7%7%7$P7$P7"7"7!7\7777u77\!7\!70i776i660i66i77778 8;8r$P8V88<88"8$P8%994m989Se8%8c888<888}%8\!8;87%777u77\!7F7776i660i66i6!7770i7\!77u777i7\7"7$P88 8 8u8u8u8 8 8 8 8 8u8u8u8u8u8u8 87"7!777777\!70i776i660i66i77777$P8*8a88,8i8]L8`88$P8e8%8e88c8b@8˞88i888r$P8K88 7!777u77\!70i7776i660i60i66i7777F7r$P77u7777\7"7%8 8 8u8u8u8u8u8u8H8H8888888888u8 7"777777F776!6i660i66!77\!77"88V08}%8XY88<88`88}8c8c88m888i8,8V8}%8V080i8H7"777u777\!70i7776i66666i7770i7\!77777i77"7"88 8u8u8u8H8H888888%8*80i80i8;8;80i8*8%88u7%7\777u77F776i6660i66!77F7u78u8F8r$P8H8,8i888˞8`8!8`8^888i888Se8a8F88 7\777u77r$P7F70i7776i6660i66i7777F7\!77u7777\7"7%8 8 8u8H8H888888*80i8;8F8F8F8K8K8K8F8F80i88u7%7\777u7\!70i776i6660i66i770i777%8*8\!8}%88,8i8<88]L88]L88<8i88XY8u8l}8K8%8u7"7i77u777\!7F70i7776i6666i6!7770i7\!77u777i77"7$P8 8u8u8H8888888*80i8F8F8K8V08\!8\!8\!8\!8\!8V08F85<88u7"7"7i777\!7776i66660i66i770i777!88F8g"88ׅ8,88i8888i8Y8,8XY88w#8V080i87%7777u77r$P7\!70i70i7776i66666i7770i7\!77u777i77"7$P8 8u8H8888888*80i8;8F8K8V08\!8\!8a8l}8l}8l}8l}8a8\!8K80i88u8u7"7i777F7776i6i66660i60i66i777\!7u78 8%8Q\8r$P88V88,8888,88ׅ8u8w#8\!8F88 7"7i77u777\!7F70i77776i6660i60i66i7770i7\!77u777i7\7"7%8 8H88888%8*8*80i8;8F8K8V08\!8\!8g"8r$P8w#8}%8}%8}%8}%8w#8l}8\!8K80i88%8u7"7i777\!7776!6i6i6i66660i60i60i5i666!777\!7u77"8H80i8V08l}8}%8H8V8XY8XY8XY88H88w#8\!8F8*8u7$P7777u77r$P7\!7F70i7776!6i6660i66i7770i7\!7777i7\7"7%8 8u888%8*80i80i8;8F8F8K8V08\!8a8g"8r$P8w#8}%8Se8U 88H8H8H8H888}%8l}8\!8F8\!8F88 7777\!70i77776!6i6i6i6666660i60i60i66i6!770i7\!7778 88;8V08a8w#8}%888U 8U 8Se8}%8r$P8\!8K80i88 7"7i77777\!7\!7F70i7776!6i6i6666i7770i7r$P77777"7%8u8H88%80i8;8F8F8F8Q\8\!8a8l}8w#8}%8}%8U 88H8V8ׅ8XY888,8,8,8,8,88ׅ88w#8ׅ8}%8a8F87$P7i777\!7F70i77776!6i6i6i6666660i666i7770i7\!777i7"8u88;8K8\!8a8l}8r$P8r$P8l}8a8V08F80i88u7$P7\777u777\!7\!7F70i77776i6i6660i60i66!770i7r$P7u77i7!7%8u8880i8F8F8Q\8V08\!8\!8g"8}%8Se8H888,8888Y8i8i88<8<8<8y88]L8]L88y8i8,88Y888a8F87%777u77\!7F70i77776!6i6i666660i666i7777F77u77i7!8 8H880i8F8K8V08V08V08V08K8F80i888 7"7777u777\!7\!7F70i77776!6i66660i666666i6i6i666666i770i7\!7u777"8 88*8;8K8\!8a8l}8w#8}%8}%8U 8V888i8<8]L88֠08`8m8b@888c8c8$P8$P88e8`9Se8`8#889Se88]L8i8,8H8r$P8K8%8u7!777u77\!7F70i7776!6i6i6i66660i60i666i6i6!7770i7\!77u777"88u88%80i8;8F8F8F8F8;80i8%88u7%7!7777u777r$P7\!7F70i70i7776!6i6i6660i60i60i60i6666i6i6!6!7777776!6i6i665i60i66i777\!7777"8u88;8K8\!8r$P8}%8Se88V8ׅ888i88˞88#94m969wP979 $9"XY9"XY9%9&x9&x9&x9&x9&x9&x9&x9)9a9&x9%9"XY9wP90i9"XY9u8$P8^8<8,8V8}%8\!80i87$P777u77\!7F77776!6i6i66660i60i6666i6i6!77770i7\!77u77i7\7$P8 8H888*8*80i80i80i80i8*888H8 7"7\7i777u7777\!7\!7F70i77776!6i6i6660i60i60i66666i6i777770i70i7F7F7F70i70i7776i6i666i7770i777i7"8u88F8\!8l}8}%8888,88i8[888e9u9 $9%91z94;96q9=y9D9G}9R9S9Xd9Z9Z9Z9Y`9Xd9V09S9R9J>T9D96q9Z9G}96q9&x9ׅ8%8`8<88ׅ8}%8\!8;87$P777u77\!70i7776!6i6i66660i60i6666i6i6!77777770i7\!77u77i7\7%8u888*8*8*80i80i8*8*8*8888u87"77i777u7u7777r$P7\!7\!70i70i7776!6i6i6660i60i60i60i66666i6i77770i7\!7r$P77u7u7u7u7u777\!70i77777770i7r$P7u77\8 88F8\!8w#88XY8,88i8<8]L8֠08c99ׅ9"XY91z999G}9S9Z9`A9s994m9U 9.9V9799H 999g99.999s969U 9yX9S9@91z9 $8%8`888ׅ8}%8\!80i8u7!7777\!70i77776!6i66660i5i60i666666i6i6!7777770i70i7F7\!7r$P77u777"8 8880i8;8F8F8F8@85<80i8*8888u8 7%7"77i777777u7u7u777r$P7\!70i77776i6i6660i60i60i60i66666i6!7770i7\!77u7777\7"7"7!77i77u77\!70i70i70i7F7r$P7u778 88F8a8}%8V8,8Y8<8]L8^8"89 U 9 $9&x929C]L9R9`A9989&9}979x99999Z999-9Q91R99 9m9k9F9m999a9}99Z9D91z9 $8`8m888V8r$P8F87$P7i777\!70i77776!6i6666666666i6i6i6!77770i70i7F7\!7r$P77777u777\7$P8u880i8F8Q\8V08\!8\!8V08Q\8F8;80i8%888u8 7$P7!77i7i77777777777u77\!7F7776!6i666666666i6!777F77u777$P8u888*8*8*88H8 7"7i77u7u77u777\8 88F8a88XY88<88m8c9Se9}9"XY9+96q9F9S9g"99e[969x99<9ͮ9!9:|+::2*:C]L:M:M:G%:<|D:1z:"f:::z9u:4":99ͮ9{9}99Y`9@9-Y9 $8%8`8<8,8Se8\!8*8 7\77u7r$P7F70i7776!6i666666i6i6i6!77777F7\!7777u77777777"8 88*8F8V08a8r$P8w#8w#8w#8r$P8a8\!8K8F8*888u8 7%7"7\7\77\7\7!7"7"7$P7%7$P7"7"7777u77\!70i776i6i666666i6!777\!7778 88;8Q\8\!8g"8r$P8r$P8l}8a8V08F8*8H8 7"7\7\7\7"8 880i8V08w#8H8,88889 U 979%91z999J>T9Z9s989.99*9L9w99u:::::_9z:[:%:d::]@:XY:'k:ri:I::2:xK:U:w:~.:G:999$99l}9R999*9ׅ8e8^8i88w#8F87"7777\!7F70i776!6i6i6i6i6i6!777770i7\!7r$P77u7777i777\7\7"7%8u88*8F8V08g"8}%8Se88H8H8H8u8}%8w#8a8V08F80i888u8 87$P7$P7$P88 8u888*80i85<80i8*88H8 7\7777\!70i776i6i66i6i6!777\!7u77"88F8\!8}%888XY88888H8Se8w#8\!8K8F8;8;8F8K8\!8r$P8Se88,8888%9}9"XY9+96q9F9S9a9999h99>T9ߑ9r:z::1":N:sܒ:m:)::;!;#Q;+;1;ͷ; ;:%:::i::y::s:1ҫ:9\9{9Fc99`A9R98[9*9ׅ8888H8g"85<8u7\77u77\!70i7776!6!6!77777F7\!77u777i7\7"7$P8 8 8u8u888*8;8K8\!8l}8}%8u8V888,8,8,888H8Se8w#8a8Q\8F8*8888H8H888*8F8Q\8\!8l}8w#8}%8}%8w#8l}8\!8K8*87%777u77F776!6!7777\!7u7i8 8*8\!8}%88,8Y888888<8i88,88ׅ888XY88,8Y88]L8\88%969 $9&x929D9S9db@9999H 9z9­299b:t::2:IG:c%: :jB::Xr;nO;#J};Dz;^_;xN;;=;j;:!;|;rfZ;W@;7;;Kr;6::N::Fu: 9999@99`A9R999)9a9}888,8Se8Q\87$P7i77u77\!70i7777770i7F7\!77u7777"8 8u888*80i8F8F8Q\8\!8a8w#8}%8u8V88,88i88<8<88i8Y8,88V888w#8a8Q\8F8;80i85<8F8F8V08a8w#8}%8H8XY88,8,8,888H8}%8g"8K8*8H7$P7777\!70i770i7F7778u8F8r$P8V8,888`88$P8#8#88c88`8˞8888m88#989}9 $9"XY9%9-Y92999G}9S9db@99%99Y9<9Ͽ(9ߑ9#:|+:N:2:P5:p:2:-:$:*:;n;4%;e{;Ur;E;~E;;L;;yw;a;d;;;;;2l;F;?R; =:u:jB:Z:9CH99*979@99`A9R96q9"XY9t8`8i8V8a80i8u7"7i777r$P7F70i70i70i7F7\!77u777\7$P8 88*8F8K8V08a8l}8w#8}%88H8V88,88i8<8888!888!8^888i888V8Se8}%8r$P8g"8g"8l}8w#8}%88V8XY8,8Y888]L8]L8]L88<8i888V8}%8g"8Q\8*8u7"777u7u77i7$P88V08}%88i888%9u9ׅ9 $9"XY9"XY9 $9 $979ׅ9ׅ9 $9 $9"XY9+92999D9R9S9Z9]89a9l}99D9}9h9k9 9:J: ::+I:A:Xd:xK::W:::)+;J;wP;E;yl;1;;6-;A;<q< <<$9<(<$<</<9!<B;0; king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama/rama4-template.pdf0000644000000000000000000171550011531212712026372 0ustar rootroot%PDF-1.3 % 1 0 obj << /Type /Catalog /Pages 2 0 R /Metadata 108 0 R >> endobj 2 0 obj << /Type /Pages /Kids [ 5 0 R ] /Count 1 >> endobj 3 0 obj << /ModDate (D:20050721161417-04'00') /CreationDate (D:20040305112123-05'00') /Producer (Adobe PDF library 5.00) /Creator (Adobe Illustrator 10.0.3) >> endobj 5 0 obj << /Type /Page /MediaBox [ 0 0 612 792 ] /Parent 2 0 R /PieceInfo << /Illustrator 53 1 R >> /LastModified (D:20050721161413-04'00') /ArtBox [ -3.69824 28.69824 606.60254 754.98975 ] /TrimBox [ 0 0 612 792 ] /Thumb 102 0 R /Contents 104 0 R /Resources << /ColorSpace << /CS0 97 0 R /CS1 98 0 R >> /Font << /TT0 99 0 R >> /ProcSet [ /PDF /Text ] >> >> endobj 6 1 obj << /Length 1135 >> stream %!PS-Adobe-3.0 %%Creator: Adobe Illustrator(R) 10.0 %%AI8_CreatorVersion: 10.0 %%For: (Ian Davis) (Duke University) %%Title: (rama4-template.pdf) %%CreationDate: 7/21/05 4:14 PM %%BoundingBox: -4 28 607 755 %%HiResBoundingBox: -3.6982 28.6982 606.6025 754.9897 %%DocumentProcessColors: Cyan Magenta Yellow Black %AI5_FileFormat 6.0 %AI3_ColorUsage: Color %AI7_ImageSettings: 0 %%RGBProcessColor: 0 0 0 ([Registration]) %%AI6_ColorSeparationSet: 1 1 (AI6 Default Color Separation Set) %%+ Options: 1 16 0 1 0 1 0 0 0 0 1 1 1 18 0 0 0 0 0 0 0 0 -1 -1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 2 3 4 %%+ PPD: 1 21 0 0 60 45 2 2 1 0 0 1 0 0 0 0 0 0 0 0 -1 -1 () %AI3_TemplateBox: 306.5 395.5 306.5 395.5 %AI3_TileBox: 30 31 582 761 %AI3_DocumentPreview: None %AI5_ArtSize: 612 792 %AI5_RulerUnits: 2 %AI9_ColorModel: 1 %AI5_ArtFlags: 1 0 0 1 0 0 1 0 0 %AI5_TargetResolution: 800 %AI5_NumLayers: 1 %AI9_OpenToView: -275 785 1 1229 805 26 0 1 7 42 0 0 1 1 1 0 %AI5_OpenViewLayers: 7 %%PageOrigin:30 31 %%AI3_PaperRect:-30 761 582 -31 %%AI3_Margin:30 -31 -30 31 %AI7_GridSettings: 72 8 72 8 1 0 0.8 0.8 0.8 0.9 0.9 0.9 %AI9_Flatten: 0 %%EndComments endstream endobj 53 1 obj << /Private 54 1 R /LastModified (D:20050721161413-04'00') >> endobj 54 1 obj << /CreatorVersion 10 /ContainerVersion 9 /RoundtripVersion 10 /AIMetaData 6 1 R /AIPDFPrivateData1 60 0 R /AIPDFPrivateData2 61 0 R /AIPDFPrivateData3 63 0 R /AIPDFPrivateData4 65 0 R /AIPDFPrivateData5 67 0 R /AIPDFPrivateData6 69 0 R /AIPDFPrivateData7 71 0 R /AIPDFPrivateData8 73 0 R /AIPDFPrivateData9 75 0 R /AIPDFPrivateData10 77 0 R /AIPDFPrivateData11 79 0 R /AIPDFPrivateData12 81 0 R /AIPDFPrivateData13 83 0 R /AIPDFPrivateData14 85 0 R /AIPDFPrivateData15 87 0 R /AIPDFPrivateData16 89 0 R /AIPDFPrivateData17 91 0 R /AIPDFPrivateData18 93 0 R /AIPDFPrivateData19 95 0 R /NumBlock 19 >> endobj 60 0 obj << /Length 12072 >> stream %%BoundingBox: -4 28 607 755 %%HiResBoundingBox: -3.6982 28.6982 606.6025 754.9897 %AI7_Thumbnail: 108 128 8 %%BeginData: 11538 Hex Bytes %0000330000660000990000CC0033000033330033660033990033CC0033FF %0066000066330066660066990066CC0066FF009900009933009966009999 %0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66 %00FF9900FFCC3300003300333300663300993300CC3300FF333300333333 %3333663333993333CC3333FF3366003366333366663366993366CC3366FF %3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99 %33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033 %6600666600996600CC6600FF6633006633336633666633996633CC6633FF %6666006666336666666666996666CC6666FF669900669933669966669999 %6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33 %66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF %9933009933339933669933999933CC9933FF996600996633996666996699 %9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33 %99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF %CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399 %CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933 %CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF %CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC %FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699 %FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33 %FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100 %000011111111220000002200000022222222440000004400000044444444 %550000005500000055555555770000007700000077777777880000008800 %000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB %DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF %00FF0000FFFFFF0000FF00FFFFFF00FFFFFF %524C45FD1DFFA8FF7DFFA87D7DFFFFFFA8FFA8FFFFFF7DA8FD0EFFA8FD4B %FF277DF8527D5252527D5252527D7D7DFF52527DF87D52A8527D5252FF7D %527D5252527DF87DFFA852277D7DF87D7D527D7D7DFD3AFF52527D52527D %FF7D527D52F8527D7DFF527D52F8527DA852527D7DFF27F87D7D527D52F8 %52FFA852F87D52F8FF52527D527DFD47FF7DA8FD1DFFA87DFDFCFFFDF3FF %A87DFFA8A8A8FD2CFFFD04A8FD8CFFA87DFF84A9A8FFA8FFA8FFA8FFA8FF %85A87FFFA8FFA8FFA8FFA8FFA87FA8FF7FFFA8FFA8FFA8FFA87FA8FD08FF %A8A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A97FFFA8FFA8A8A8FFA8FF7F85A8 %FFA8FFA8FFA8FFA8FFA8FFA8FD13FF85FD0CFF5A7FFD04FFA8FD05FF7EA9 %FF7FFD08FF7FFD0CFFA8FD0CFFA885A9FFFFFFA8FD04FF7F5AFD20FF84FD %05FFA8FD06FF8585A9FD0AFF7FFF7FFFFFFFA8FD04FFA9A8FD0BFFA8FD05 %FFA8FD07FF857FFD08FFA98585FD05FFA8FD05FFA8FD13FFA884FD0BFFA8 %857FFFFFFFA8FD05FFA87F7F7FFD08FF7FFD0CFFA8FD0CFFA8AF5BA9FFFF %A8FD05FF5485FD1FFFA885FD04FFA8FD07FFA9A97FFD0AFFA97FFFFFFFA8 %FD04FF7FA8FD0BFFA8FD05FFA8FD08FF857FFD08FFA97F85FD04FFA8FD05 %FFA8FD13FFA884AFFD0AFFA8FF84A97FFFA8FD05FFA8FD0BFF7FA9FD0AFF %A88584FD0BFFA8FF7E7FFFFFA8FD05FFA87F5AFD05FFA9855A857EA9FD13 %FFA8FF85FFA8FFA8FFA8FFA8FFA8FFA985A87FA8A8A8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FF7FFD0BFFA8AF848585FFA8FFA8FFA8FFA8A8A8857F %FFA8FFA8FFA8FFA8A87FAF85FFA8FFA885A8FFA8FFA8FD13FFA9FF85FD0A %FF5A85FFA97FFFA8FD05FFA8FD0CFF7FFD0AFFA8FD05FF848584FD05FFA8 %85857FFFFFA8FD05FFA87FFF85FFFFFF85FD19FF7FFFFF85FFFFA8FD05FF %85FF7F7F7FFD0FFFA8FD05FFA8FD0BFF7EFD047FFFA8A9FD06857F7FFD0A %FF7FFF85FFFF8584FD04FFA9A9FD10FF7DA8A87FFFFF8485FD06FF84AF55 %FD05FFA8FD05FF7F7FFD14FF7DA8A8A8FFFFFFA9557FFD06FF54FD05FFA8 %FD05FFA87FFFFF5A8584FFFFFF7F7F7FFD14FF7FFFFFFFA985848585FFFF %A9FF7FFD09FF7F7FFFFF7FFD04FFA8FD05FFA8FD0BFFA8FD05FFA97FFD04 %FFA9A9FD0AFF7F7F7FFD05FFA8FF7FFFFFFFA8FD13FFA97FFD06FFA9A9FF %7EFF7FFD05FFA8FFFF7FA9FFA8FF7FFD16FFA8FFA97FA9FFA97FFD04FFA9 %7EFD05FFA8FFFFA97FA95AA9FD06FF7FFD18FFA87FFD04FFA8FFFF85FF85 %FF7FFD08FF7FFF8585FF7FFD04FFA8FD05FFA8FD0BFFA8A97FFF7F7F7FFF %FFAF85FFFF7FFD08FF7F8585FFA98585FFFFFFA87FFD04FFA8FD13FFA854 %FFA8FFA8A8A8FF5AA95AFF54FFA8FFA8FFA8FFA87F5AFFA8857EA9A8FFA8 %A8A8FFA8FFA8A8FD0AFFA8A87FFFA8FFA8A8A8A97EA97EFF7EFFA8FFA8FF %A8FFA87F5AFFA8FFA8A95AFFA8A87E7FA8FFA8A8FD13FFA8A9FFFFAF8585 %85A9FF85FF7FA9FD08FF7F85FFFF85FF7FFFFFFFA8FD05FFA8FD0BFFA87F %FFFFFFAF848585FFFF85FF7FFD08FF7FAFFD05FFAF85FFA8FF7FFFFFFFA8 %FD13FFA87FFFFF85FFFFFF857EFFFF7FA8FD05FFA8FFFFA97F85A8FF847F %FD14FFA8FF7FFFFF8585FD05FF7EFF7FFD05FFA8FFFF7F5AFFA8FD04FFAF %5AA9FF7FA9FD16FFA87FFFFF85FFA8FFFFAF85FF7FFD0AFF7F85FFFF85A9 %A9FFFFA8FD05FFA8FD0BFFA87FFFFF85FFA8FD04FF85FF7FFD09FF85FD08 %FF5AFFFF7FFFFFA8FD13FFA87FFFFF85FD05FF85847FA8FD05FFA8FFFFFF %A97F5AFF5AFF7FFD14FFA87FFF84FD07FFA98554FD05FFA8FFFFFF5B85A8 %FD06FFA95AFF7FFD16FFA8A97FFF85FFA8FD04FFAF857FFD0AFF7F8585AF %A97FFFFFA8FD05FFA8FD0BFFA8FF7FFF85FFA8FD05FF8585A9FD09FF5BFD %07FFA8AFA9FF7FFFA8FD11FFFD04A87FA8FF7EA8A8FFA8FFA8857E7FA8FF %A8FFA8FFA8FFA8FF7F855AFF7E7FA8A8A8FFA8FFA8A8FD09FFFD04A87FA8 %85A8A8A8FFA8FFA8FF5A7FA8FFA8FFA8FFA8FFA87F5AFFA8FFA8FFA8A8A8 %85A87FA8FD14FFA8FF7FFFFF85A8FD06FF857FFD0AFF7FA9FFFFA9A9FFA8 %FD05FFA8FD0BFFA8FF7FFFA985A8FD07FF5BA9FD09FF7F85FD05FFA8FF85 %FF7FFFA8FD13FFA8FF7FFFFF5AFD07FFA8857FFFFFFFA8FD05FF7EA9FFFF %55FD13FFA8A8FFFF7FFF7EA9FD06FFA8855AFFFFFFA8FD05FF7F85A9FD06 %FF85FF7FFD15FFA8FF7FFFFF85A8FD07FF85A97FFD08FF7FFFFF7FFFFFFF %A8FD05FFA8FD0BFFA8FFFF7FFFFF7EFD08FF85A9FD08FF7FFF85FD04FFA8 %FF85FF7FFFA8FD13FFA8FF7FFFFFA885FD06FFA8FF847FFFFFA8FD05FF7E %FFFFA97FFD13FFA8FFFFFFA97FFFFF5AA9FD04FFA8FF5A7FFFFFA8FD05FF %7FFF7EFD04FF857EAFFFFF7FFD14FFA8FF7FFFFFFF7EFD08FF85FF7FFD07 %FF7FFFFFFF7FFFFFA8FD05FFA8FD0BFFA8FFFFFF7FFFA8FF85AFFD05FF85 %7FFD08FF7FFF85FFFF8585A8FD04FFA9A8FD13FFA8A87FA8FFA8845A855A %A95A85A8855AFF7FFFA8FFA8FFA8FF7EFFA8FF7FFFA8A8A8FFA8FFA8A8FD %0BFFA8A8FFA87F7EA8A8FF7E85A8FFA8FF5A7FA8FFA8FFA8FFA8FF54FF7E %855AFFA8A8A8FFA8A97EA8FD13FFA8FF7FFFFFFFA8FFFFFF85FFA98585FF %FF7FFD07FF7FFFFF7FA9FFFFA8FD05FFA8FD0BFFA8FD04FFA9A8FFFFFFA9 %FD0485A97FFD08FF7FFFFFA9FFFFFF7FA97F7F7FFFA8FD13FFA8FF7FFD09 %FFA97FFF7F7FA9FFA8FD05FF7E7F7FA9FD15FFA8FFFFFF7FA9FD07FF7E7F %7FFFFFFFA8FD05FF7EFD05FF7FFD1AFFA8FFA97FFFFFA8FD04FF7F7FFF7F %A9FD10FFA8FD05FFA8FD0BFFA8FFFFA97FFFA8FF85AFFFFF7FA9FD0BFF7F %FD05FFA97FFD05FFA8FD13FFA8FFFF7FFD06FF7FA9FFA8FD05FFA8FD04FF %7F7E7F7FFD15FFA8FD047FFFFFFF5AFF5AFFFF7FA8FD05FFA8FD04FF7F7E %FFFFAF84FFFFA97F7FFFFFA9A9FD13FFA8FFFF7FFFFFA8FFFFFF7FFD0CFF %7FA9FFFF7FFD04FFA8FD05FFA8FD0BFFA8FD05FF7EFFFFFF85FF7FFD09FF %A97F858585A985AF8585A8FFFF7F7F7FA8FD13FFA8A8FF7FFFA8A8A8FFA8 %7FA8FFA8FFA8FFA8FFA8FFA8A97EFFA8FF7FFFA8FFA8A8A8FFA8FFA8A8FD %0AFFA8A8A8FFA8FF8485A8FFA885A87FA8FFA8FFA8FFA8FFA87F7EA9A8FF %A8FFA8FFA8857E85A8FFA8A8FD13FFA8FFFF7FFFFFA8FFFF7FFD0CFF7FFD %04FF7FFD04FFA8FD05FFA8FD0BFFA8FFFFFF8585A8FFFFFF85FF7FFD09FF %7F85FD08FFA8FFA9858585A8FD13FFA8FFA955FD05FF7FFFFFFFA8FD05FF %A8FFFFA97FFFA8FF7FFD16FF857E857EA9FD06FF5A7FA8FD05FFA8FFFF7F %7EFFA8FD20FFA8A97FFFFFFFA8FFFFFF7FFD0CFF7FFFFFFFA9FD04FFA8FD %05FFA8FD0BFFA8FD05FFA8FD04FFA97FA9FD08FF7F85FD08FFA8FD05FFA8 %FD13FFA97FFD09FF7FA9A8FD05FFA8FFFFFF7FA9A8FF7FFD16FFA8FD0BFF %8555FD05FFA8FFFFFF5B85A8FD20FFA8FFFF85A9FFA8FFFFFF85FF7FFD0B %FF7FFFFF7FFD04FFA8FD05FF7FFD0BFFA8FD05FFA8FD05FF8585A9FD08FF %7F85FD07FFA8FD05FFA8FD13FFA88485A9855A8584855AAF5AA954FD05FF %A8FD04FFA97EFF7FA9FD08FF7FA9FD0AFFA8A8FD0CFF5A7FFD04FFA8FFFF %FFA985A8FD1DFFA87DFFA8A9A8FFA8FFA8FFA8FFA8FF84A9A8FFA8FFA8A8 %A8FFA8FFA8A9A8FF7EFFA8FFA8FFA8FFA8A9A8FD08FFA87DFFA8FFA8FFA8 %FFA8FFA8FFA8FFA8A97EFFA8FFA8FFA8FFA8FF84A9A8FFA8FFA8FFA8FFA8 %FFA8FFA8FD26FFA8FD09FFA8FD1DFFA8FD09FFA8FD26FF7DA8FD11FFA8FD %08FF7DA8FD08FF7DA8FD0AFF7DA8FD11FFA8FD08FF7DA8FD08FF7DA8FDFC %FFFD6DFFA87DA8A8FD2EFFFD06A8FD1EFF7DFD04A8FFA8FFA8FFA8A9A8FF %A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8A8FFA8FFA8FD09FF %7DFD04A8FFA8FFA8A8A8FFA8A9A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8 %FFA8FFA8FFA8FFA8FFA8FD14FFA8FD05FFA8A9A985FFFFFF857FFD11FFA8 %FD05FFA8FD0BFFA88585A9858584A98585FFFF85857FFD11FFA8FD04FF7F %A8FD13FFA8FD06FF7F85A9FFFFFFA885A9FFFFFFA8FD05FFA8FD17FFA885 %A9FD0BFF5A7FA9FFFFFFA8FD05FFA8FD0BFF7FFD14FFA8FD05FFA8A985AF %FD04FF857FFD10FFA8FD05FFA8FD0BFF7EFD05FFA8FD07FF857FFD10FFA8 %FD04FFA9A8FD13FFA8FD07FF7F7EFFFFFFA8FF5AA9FFFFA8FD05FFA8FD18 %FFA87EFD0BFFA8857FA9FFFFA8FD05FFA8FD0BFF7FFD14FFA8FD05FFA8FF %7F85FD05FF857FFD0FFFA8FD05FFA8FD0BFFA885FD04FFA8FD07FFAF857F %FD0FFFA8FD04FFA9A8FD13FFA8FD07FF7F84FFFFFFA8FF7E7FFFFFA8FD05 %FFA8FD18FFA8A885FD0AFFA8FF847FFFFFA8FD05FFA8FD0BFF7FA9FD13FF %A8FFA8FFA8FFA8FF7FA985FFA8A8A8857FFFA8A8A8FFA8FFA8A8A8FFA8FF %A8FFA8FFA8FFA8FFA8FD0BFF7EFF7EAFA8FFA8FFA8FFA8FFA8A884A97FFF %A8A8A8FFA8FFA8A8A8FFA8FFA8FFA8FFA8FFA8FF7EFD13FFA8FD08FF7F85 %84855A857FFFFFFFA8FD05FFA8FD17FFA87FFFFF7EFD07FFA9855A8555FF %FFFFA8FD05FFA8FD20FFA8FD05FFA8FFFF7FFFFFFF7FA9FD11FFA8FD05FF %A8FD0BFF7FFFA9A9FFFFA8FFFFAF85857F7F7FFD11FFA8FD05FF7FFD10FF %7DA8A8A8FD08FF7FFFFFFF7EFD05FFA8FD05FFA8FD15FF7DA8A8FFFF85FD %05FFA9847F7FFFA8FD05FFA8FFFFFF7F7F7FFD0CFF7FFD13FFA8FD05FFA8 %FFFF7F5A85857FFD12FFA8FD05FFA8FD0BFFA8FF85FFFFFFA8FF857FA9FD %0BFF7FFFFFA97FFD05FFA8FD05FF7FFD13FFA8FD07FF7F7EFFFF857EFD05 %FFA8FD05FFA8FD18FF7FFF85FD04FF7E7FA9FFFFFFA8FD05FFA8FF7FFF5A %855AFF7FFD0AFFA9FD13FFA8FFA8FFA8FFA8FF7F85A8FF857FA8FFA8FFA8 %FFA8FFA8FFA8A8A8FFA8FFA8FFA8FFA8FFA8FFA8FD0BFF7EA985AFA8FFA8 %857FFFA8FFA8FFA8FFA8FFA8A8A87F85AFA8A9857FA8FFA8FFA8FFA8FFA8 %FFA8FD13FFA8FD07FF7FA9857E857FFD05FFA8FD05FFA8FD18FFA87FA984 %85A985857FFD04FFA8FD05FFA8FF7FFF84FF5AFF7FFD1EFFA8FD05FFA8FF %7FFFFFFF7FA9FD12FFA8FD05FFA8FD0BFFA8FF7F7FAFA9A87FFD0EFF7FAF %85A97FA9FD04FFA8FD05FFA8FD13FFA8FD06FFA97FFFFFFF7FA8FD05FFA8 %FD05FFA8FD17FFA8A8FFFFA97F7F7FFD06FFA8FD05FFA8FFFFA9557F7F7F %FD1FFFA8FD05FFA87FFF8585FF7FFD13FFA8FD05FFA8FD0BFFA8FD05FFA8 %FD19FFA8FD05FFA8FD13FFA8FD06FF7F8584FF84857EFD05FFA8FD05FFA8 %FD17FFA8FD0DFFA8FD05FFA8FD05FFA8FD1EFF7DFFA8FFA8FFA8FFA87F85 %FFA8FF85857EFFA8FFA8A8A8FFA8FFA8A8A8FFA8FFA8FFA8FFA8FFA8FFA8 %FD09FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8A8FFA8FFA8A8A8FFA8FFA8 %A8A8FFA8FFA8FFA8FFA8FFA8FFA8FD1AFF7F85A9FFFFFF847FFD04FFA8FD %05FFA8FD25FFA8FD05FFA8FD05FFA8FD20FFA8FD05FFA8FF7F85FD04FF5B %A9FD10FFA8FD05FFA8FD0BFFA8FD05FFA8FFFFFF7FA97F7F7FFD11FFA8FD %05FFA8FD13FFA8FD07FFA97FA9FFFFA8FF5AFFFFFFA8FD05FFA8FD18FFA8 %FD08FF55FFFF855AA97FFFFFFFA8FD05FFA8FD20FFA8FD05FFA8FFFF7F7F %AFFFFFFF857FFD0FFFA8FD05FFA8FD0BFFA8FD05FFA8FFA9A9FF85AFFF85 %857FFD0FFFA8FD05FFA8FD13FFA8FD09FF7F5AFFA8FFA97FFFFFA8FD05FF %A8FD17FFA8A8FD07FF7FFFFF7EFFA8FF5A7FA9FFA8FD05FFA8FD20FFA8FD %05FFA8FD04FF7F5BFFFFA97FFD0FFFA8FD05FFA8FD0BFFA8FD05FFA8FFA9 %A9FF85FFFFFF85FF7FFD0EFFA8FD05FFA8FD13FFA8A8FFA8FFA8A8A8FFA8 %FFA87F5A857E7FA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8A8FFA8FFA8A8FD %0AFFA8A8A8FFA8FFA8A8A8FF7FA95AA9A8A95A7F7EFFA8FFA8FFA8FFA8FF %A8FFA8FFA8A8A8FFA8FFA8A8FD13FFA8FD05FFA8FD06FFA97F7FFD10FFA8 %FD05FFA8FD0BFFA8FD05FFA8FFFFFF7F7F8585857F7FFD0FFFA8FD05FFA8 %FD13FFA8FD0CFFA8FD05FFA8FD05FFA8FD18FFA8FD0AFFA97F7E7FA9FFFF %FFA8FD05FFA8FD20FFA8FD05FFA8FD19FFA8FD05FFA8FD0BFFA8FD05FFA8 %FD19FFA8FD05FFA8FD13FFA8FD0CFFA8FD05FFA8FD05FFA8FD18FFA8FD0C %FFA8FD05FFA8FD05FFA8FD20FFA8FD05FFA8FD19FFA8FD05FFA8FD0BFFA8 %FD05FFA8FD19FFA8FD05FFA8FD13FFA8A8FFA8FFA8A8A8FFA8FFA8FFA8FF %A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8A8A8FFA8FFA8A8FD0AFFA8A8A8 %FFA8FFA8A8A8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8FFA8 %A8A8FFA8FFA8A8FD13FFA8FD05FFA8FD19FFA8FD05FFA8FD0BFFA8FD05FF %A8FD19FFA8FD05FFA8FD13FFA8FD0CFFA8FD05FFA8FD05FFA8FD17FFA8FD %0DFFA8FD05FFA8FD05FFA8FD20FFA8FD05FFA8FD19FFA8FD05FFA8FD0BFF %A8FD05FFA8FD19FFA8FD05FFA8FD13FFA8FD08FFA97F7FFFA8FD05FFA8FD %05FFA8FD18FFA8FD0CFFA8FD05FFA8FD05FFA8FD20FFA8FD05FFA8FFA97F %A9A97FA9FD12FFA8FD05FFA8FD0BFFA87F7FA97FA97FA97FA97F7FA9FD13 %FFA8FD05FFA8FD10FF7D7DFD05A8FFA8A8A87F7E8584855BA9A8FFA8A8A8 %FFA8A8A8FFA8A8A8FFFD07A8FFA8A8FD08FF7DA8A87FA8FFFD07A8857E7F %7EFFA8A8A8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A8A8FFA8A8A87FFD13FFA8 %FD09FFA8FD1BFFA8FD0BFFA8FD1BFFA8FD09FFA8FD13FF7D7DFD11FF7DFD %08FF7D7DFD08FFA87DFD0AFFA87DFD11FF7DFD08FF7D7DFD08FF7D7DFDFC %FFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFCFFFDFC %FFFDFCFFFD7CFFA9A9FFFFA9A9FFA9A9FFFFA9A9A9FFA9A9FFFFA9FF7FFF %FFFFA9FFFFA9FD1BFFA8FD04FF52FFA8FFA8FFFFA8FD04FF52FFA8FFA8FF %FFA87DA8FD057DA852FD047DFD0CFF557F557F7F7FA9F97F7F7F2B2B552B %7F557F7F7F557F7F55FD047F557F7F7FFD18FFA87D7D2752FFA8FD0452FD %047DFF27FFFFFD057DA87D7D5252A8277D7DFFA852277D7D7DFD0BFFA9A9 %55A9A3A97FA9A3A97FA97F7F7FA9A3A97FA9A3A97FA9A3A97FA9A3A97FA9 %A3FD1EFFA8FD05FFA8FD15FFA8FD04FF7DFD04FFFF %%EndData endstream endobj 61 0 obj << /Filter [ /FlateDecode ] /Length 62 0 R >> stream HWn8!])1X@/6,fEi!j!8>{|RȪ:%U"]M>h5Õou4ݹx(黫RelϮUbǮy69PVEZ5]t?|]А܏ȿ}6Yʿ|"5wz|.ES_KP2 _[MCm?W~8ު VnjĤ YOZ,Ӻ 5_UM|a^q~\\]o!ӄdZӛ Ϲ-p~N99\\B?܆Q ӹa_H`p8AEhվ]wR3?f 4EGt?34{XhdPd/Z> }RH#s\Ntڈ uһmjlE۾-9VNA =};O`Yz7o^!d6ݞJP9&0C\ѓ-14nftW6'8luvzbv&CS)+/e|I4Ms4/:﷦{p~v;y'=bV A=kd'&i+#I,|m)z4y75m^# TFԺV%u;#ڙS}0m4':A=;'AwGT磪Gn6=Ԛo2NzhM#>sꉘ|>XlUWh>v&~&}Cުqg8lwSHZUG um}ߊP?ij:mj\ϭ+(ȗ?z4AVm%؅v Z?fFNji:޹LLN5I]1҅lOIzÑƑKd:8(wºyn AI;Ӡ\EyImm;<5xv&x4}mbk}jԇNyEA)8oƣxf?V#$[T٭{3\Hp2'G19*7ÿ#COj ny@y}( Ng0D`u9EBh-DEi]ݿl?트WsRzznϺ_P3LvZͤ;U{PjG $ :x+rAlxJd9PX@e`(($ fa@V)("ʩiBSќBq&d1KX2OшEQ#((ʨB3q%y3W &"D.JDzI.e*sY*cXIE\!LzL$OJdaTnXl@> ! 3AUe qH <^8/MBum4Rn@lV1O*O*|K3:,JhA}nnvYp-Z9nvYF 3P0cY.GI&!^ -ncԦaXl*7p1S"Y[bSDdg3A#lMMU ;ښ:vT Roa-!#C!pvx" }jv9t~/Օ$7N(Qcx¾ؗ}oFSVόء]{aM-SPGTeZr[d>V/[b|\Z+NAN&S%'7BʔnfJ^;t.&+u=i4ꥺ-bڈ(aaQtU'l=xz|rDynI)f͵T5W5UGu|G91}ʳaw<1z=LY! Dg7(04Z +Uuo6=rK8ςo;GFAjod g@Z, DF *1`ιX#sfxE>u\p)Tw{8>f$Al^/ɧ] oE;)zޠGc۔N<1 3v{é`$,(a5,nC3t`; g!T]9 @1]n n+ ALg X hG@B`."&C{c[,q93g ԝhw{v4o}FMV;_u8ljV?U꿨GrQŤ6$wc}P'!j]$GKtB`YT"5SUbj f!KR6ߺ6>FCrﻬkVbY4\FaE1}ݑ]%^grEb|$1;* ߔ`B'5;{VdkNlcTk.' "kkQkSIEM5>$ f-b:M7JxBRb2Z(}_jyԚk<{%!iyBZh~z bդeήB-Cˆ%}W6ЭqouOUuQDLc"yLM^]W\vBT#$9Wg NKNCU.H|%ՠT˩ʔZ: C} gMOΔcM=ӴC^9\ZuZti& E:r!i-qL٫^^˯Ug:'Zk¬5:N&V]rj̮GslD%M'Dk*v:޲,D5~M3]jrdyeԞ[,# cJ4k}8-`Zgœa R#@obEVYNgrc1TnbZz7RHl9ѫKW^ټ,oOK+Vs0}ZvQ9L]o/d*v,$lZBd&f8FnÕwp\&0J@APn;€.~ jXyx#{5LO0PDU5Z6SPն6WJUfKShyx=$2cE7(V% @YP! CBCslw#v7|-R3cЊk8u6%ֈD1uL +tt4 )QRl\t=C`Paql< #y.۠{ex>3ػ01)Ѩlgk>m|8&K;?ȈDN>Yݕgϝ]Α3fr52f8ZaBj~-orٛ<{{~r#.R׼gk՘Ԫ?ͥޤ,#xk[\ouk2.&X6XX|0ijbEPCBWοgMGM=O /NnS˝oqtt5\̪{t|tJH_"]A0T/ﯞ9Ru5V5Kuڪnhd#^&rH&Dc"~D^޹ Thg[fOE44Mrxnɶ5 :$[ ^ y/)oڥEdz;?)YС擢f(tMhNy D2!ECc0:%s▬HSŀ~|z-r]\etd-ad:+#*TQb-۩姗n6RVz})b=O}8XflURS9s3^<< 0TQ=U-5Og5Ke>s槪Wq`Q`cPj揚,~cPS%Ȕ@ᜣVTQfR(Ϩ%S=e/ɪ{Itzq LY2HVK]:M 4q(Z_%$ʳk1IؚzJYYv'tߣ-4${; $b0]m,H68HlD F6HYny{I* XvY;A E$M8%G 'aLHVwn`biX %IcGСA1`xE脂%Ar7 +#ųNhBV*pqw w##z, lqR `z z̨ޒ;k~rZ%r"U"HTv h==g,YP :À9_LV:#%'8*qX9KJu:WQS!ijsW.R\ZsWs=jh іE0 ~6{^#4u~ ;Fo.7w2~;&YG->pbyuqc ˻>r::>6Xpz{xboiX Sk]Ͻ1=r ޲vG'0y=嚩82Q?n 4%oeIj^?oo~{㇧?ᗏOn BrcRpEtA/|mfݨ5>ۙvOoX@>/:!)gbx.Mm[Q:><|W|i"Ng5/ \3)WZj6ͱJO3 lZ~JyP4D-S4}B>}Pv!*3QJʨ dݪ)_JkhUЪn^VL hcŪE Q)3m]l *j6Z N2]2A eǠ_^Pf5\ ގ@wdp`h}V!L}s/q8Dm8_7KLHd ȥGN- =Ȇ|/ /P o#C+ P ey٣qdh,l0>D;#+Ꜥ&^DҎ ߍ;+]м3xB3G45A@;; pG5W[ Y1(46v`h)'tF (ЅmN@ &$d!7%`+p@T8og?DI@GnN $ avKᤛY b\ hhRm% 5,$ }o}zI@q] %H%5z/6{SP a +6}AbMdėeWPs24r(%BJJ B +B" ! DH Dz.Ot'ςs'0NWV2ۊV%4 ( f .^eN(XխTEт|5oE)y%K4~C>e9as gTOb~%KD#RB~PB^wk8bo2 ,@'Mrl1I\&Gr@;%a\aqB=a@kPplS mD/.@2QU01Ӂ@EB` Y '脶`މg1""*P5 4F9Y.{ w{vLucVSUTEUbIfz׌bjYl|I6SY}F sck5^5R"d<21EH`H9ɗxi[2,Zdȕ"VT*E5*'yDIeEٛϝ|߻Z«/!Sb#s%#L3i{h_"(I*&f3?boj;Y1['RLݒUKQ,EjnzB[шjp]6&*DQNw0fw]]$=+ǟᆛz[wn~|4:d^}wmȇnlپC_@vDCq\y<s8ˁǻl9ޜVj=ۻ?zx9HH6DCbvr2T d*!DrDr:;Ls_/9(pA_t/6dlYWIlEnj)c| "I4]ukZbP3qɖq̦1mqk!G'r0yQd/iv=dC9)/ɍ#?A\,}0_g xڐwddYng#y JӜj63# K`+-Yv[ .-_01B3g `۞Ie֬'O -&̒ywuܖV UU8+9 CBuSZyOIII sҝ2Б njj6` ${NJٽ3K]"URjjⶠAF  Fgu>'ǞZhVfWvc,u,i%2R*q#3lE00"S`&un^ge:8K֩tZv2JHFDB@`PPPP߈0 BBŒlL"Y .Q|1׏6l_sh1O+,1^Ƭ>0t=o`Vc 'OJD\cGB/A+~ #6/%Vp )w$?; ?GB/)!KY`ge" D2p`WA<(= 4z 0P iRhaDI >dq+G{1v'/ >! 4xM-ܴk!v;vo  ;[y _`Op}J-AVx錅12 Ddۤf(+wf*"AF40 XY#CBdLhʰ01. &̰25L }ex4>5@̌CD1 z0z(HEiT]%Wo^ԣC~᠛#%!g_! -}9=>(;G;mAۮ2S4RMp'Im(F1l"7ddoɛù5pk9h ,"nSÇm񇾬0߲淬gmi R]|4)P| / (^w]zak^h󚘝w}O>q_f']_f:+Z/ńūB_kg%h["]R8?O?b???ߟ?_?{ l^7]\ţ-~p9]|X/vA<_Prz/wpE1=Eq$%vOŎ 2E,-]_a11@P`pCÐCðC#2({(}(eDEFGHIJKLZ‰JEHQL*+([H-3e$ $+HmTn-5~[ x^/K*?r/z;|~ϟe)h;cCēRH E  <X4`8,#XJ`N`R5W/ Z, B3@%oD*4W #-dDqdUܝ*f?2Gt C%r{ NmVUGS E>Srz d]. Y0뉸9{S; ,M`d6dp_ſ??ITO&bo7Iy0SѵMUMͭP=E^ݒ׎:OUJ9JT^q*.үxd%@sֱh .map9Z'2x%6(;ֹ Pq`=xy7/Tcllw$ \dteujLp ] 늿iPo-ɿ"NF9ݓqS{ؾ~'OdB7771Uu|Q I]9 DPkBxIVH=%EWIJ-utN1- ~J0=[  @cH% tB?5\ :ݵP_ ȱ@sL5B-[CZ86s) B0G/ ڴ6:<M@g?vxW'I,A]?qӾxqE. JKeMjJ0Qj&3OՑ *S_)3䯎,LVJ䨂=[S4DM*SJU(Rו:&W]U_SJUMɽ~USm/uIUݦoUjM5BMRE7M*L'P/2I)7Im%SRPz D4h2IIJ∢HOQ11PI;9HEk10B(hf4 J/.-,+HPbq6ibg % B 4FV6X%B¸d!a굸)pevW-^[jh=TÔ$3>r㸙D>|Ź-&h m,JxuF{c2>)gN~9?_#h~}.GROT giojX{kjQQq"8ܘh~ˮ3^17$Cn5>iX)gruxo5_x&f@w)@ن[9K6>tld\W̄n"lNAGA£Ip 3p) HLⓐfuWdžʼd9gQ'I$`-STh!Id4AxĘ/#qD/{3GK^mxmx pƽ7{)ުQOwVfčsd~=e>9E{LqPs98:,=w9@,m$gMr:Bŕfpf/&_O];y lhXT :X|Nvp3ށmvx_#K@0 P?x^@3hsm'!ؔc=t@gF'[ϊd dE?I5IpbP8N ,A6`\ f0#%P`9/¡b6pI | c_:1p~Lw'N̜I|0A qaQ\4&`D,gaH|jX`_X:@#oa7؈O  #CoEmH^Cu0L$#Vͼ0Rh 8Ӛ=,?_yކ-"?ѶqlGO-xc?d߆=gI'ǘ]7ڲaxg^mg7oc{7O?[ލϝsl-G{2_Oa__?/}/G?_ϟ~я?۳OH0?CDpx'[+o+i^C)V AK6-_X3'A" ,tDDmPQ NDDڄI9ԗ+;Ps zDP (jIm<":[uYYPkn@ŵaq΄?Lz_Hxqa +@C۪>a' k,X0A HbGӠ{׿DhHq0 ^ 8Yw~X͠?翞7`պخ;_Ax\㲏?/ҋE ] !B,>zeݽ{NZ&/ -x]g_;0p{+if5VkҚ۰*~'а]`L CYq@JD:bcE^8*g@,* {%!,B$ϗ0b8o핛kZk@Ki 4VV(63T&\SL~ #7i)ʲuL# DhJOQI&Y tI%[PLDWf@{9^r4{jiEbxO!^^ ;<'G|'B ^5&1$`{MnCw8MCD){Fü@OĊf:3|G<7snu[6Tzȡ=^ro9Ώ\m ͢1VXbmQW,rYJXC^A,OAЃ'aI#FEj!E+c>FhI"4Ixs۝ 1Js%(G%Q$_7i+{6 وov;*1P hHP/%! 't0h?TUF|[KREiU]֕YjTU)pJLEjIhߨBJP ]P+q(<<<&YZXV 1Uj״=itT?E157-pk]g_;0 C #dZ j(AShW; "{PqULD4:Xc( 5!Pkbm~7 BOiw/9a!K+6g a͏̠mkƊ76#2G2,:ݐ#0?(w<*5'ˤyQIL' `JghD*L A#'0+!. WofjO|5UzV:JS%Q/C-~J;tJK)Ew$&#-p܆bSf ( %>[!,D%ANZ( 3LcM"48X$\|=srQX'0 MEF/Z`/,y$E WۢB|O┨=q3"UpoRCMZM7!%  d=\.SgDA* %$=B۾٪^E,6\y!~T{΢r޻_݁rMM8D[%jhFb J)TVR@"I~VywXE)aA)eQ=:uu՝g#O#@!ؕ%Q4<"h$B@BUa:+PGjtV_hS ϖϊg:{"@!@*(0<*V܅w= S@R"E'(k(U^T̨ 7jLzDA*T$TDe j/јIuÁQN'z Ls S.T뾙^n?fGrOw@EQM?fa##?n`LOהDf06a岢1K\d4$ L86;5w:g{'BJI'a| ~bLވي=Z::j ҃!4y/3cf%A{=chxmk؄*q<:#{o~B=Sj+:ۋTacQjk/RQEP*]䊒Ƣ"Ր(Hp(/ ˭؏acXfk7Ot~YNu K%ow?m_?LXg#ksÇn~X~J/__/}a˯/?tWo߶d ?Bϝ\U~bWg EW=qƪm:y:,?FHJKy !A҂bAg֢b%id݈hm4ăyfr@s4|'Wjk-R:j@?'gqo&EaŃ^nj?Gg81D6vQ ݭRYe`7:r_N$;(-1[nWҦRsSKk8k+u]vj@pG[ӹڻܽm[Hm Tc9K9t-lmv6w5 msnum/n~_“r/Lu9 y},5Ul469c^aQij;٩v)#%_~ǔ?zfoqrW!ȋ.kv xWdw%Y0~dc.gh‡-Wό9mvA(7M)q,?WbNvw‰chEFtD s= =0rEkfw]3eL`{sjMHVZ9e)|{MfFCmKi9%Ed}mղVˀiQKX]yHĊ{ Bd+AtVE,҈k\q,zH'x go{21AB9\-O.ϮO/G<;/.e肒L U (Y?ZZo_2 qv@#agc1M)=@S7d o gqF1aUH21`F#"pπff+[wmvu!h]2VMUmZ]qԤKj%uܓTsQA% |qa3KX.l̡CxfXtޜP9(Ale龜ChI#H†J}s&DŃQb JQQ{ycrɏ ![<( \aIɎ44LJ [ G*E!3.. Injo/+{ڋ}8oѹy*D sanYmnmot_zI^8nnpOIp[3yEBW `#t/às0mh0 3np\;;a 1&Gh UP̊34;ٛϑՂAhe5Uu+kϫ;P BVv&`AS)ljDE8Yy8  E@T.]F@ྉny$ub0{qO̅ E~J; @ԓ`||OMWD8!R6˓WO^׌9yU†Λ|UG'_ka]rVag B+w_\_W/KNU椨5f›$ʛxSs"(_2s:P9w*u*B+D ҆҃!'ӑ;cNZ?[WPWÓ EL2Kɒ[TIND"V|-Z3wM4fƒ.0],K|-EsP(:uWWXewI89㤒q8D$]8}RCd,Vö꺪)\v;ݴzIVU*wBqŤŝT"gpO6̅̇Q ֋EGEj &;Mixr/Xӓ\rW륶!ε9!Y.,W\q8 ?\՝fV(åh*,TjF#j2pT0JD!RKTB a[ -:e%R$Uh@la!1bLx|jTa1=<Ȗ}zخqa=TjTae|k2{Zފ-wM.lg?JǂWkl89/{$){$ $2h"K\R2L22L2@{{HoaffYf 4 I3>F>7{ܲN^<&,ѯ}n kĎS8AbD 1XOPIgGjQ*LH"zG͟wW/T#y z+= z|*RΊZΐw7Sd 2ȽZ豎]AտeƋ) a(z*.z+5:͸a7%o@"'I8aRe[< p8eNWUMQ?@5+ ):xFKdlZG4 gL*`d: Ѩ/ 3 q ('n^iH)(]wRCN~f?,α* 0 endstream endobj 62 0 obj 18206 endobj 63 0 obj << /Filter [ /FlateDecode ] /Length 64 0 R >> stream HWn#G^/B`z>/|a0ìUlRfd $&^ᚫpyg㴓v4[m 6X8KPVZi@)@IDǘi@H=h(H7vy Bw!oC %> 4n9zjGm# Q 4ChGâM+bE/N:ht:<2P@ Rt`x (@S?D ( 4$[L` z B>h q{_T_çM!䃊Q𡓥IH">/}->|zq?N >T''Opsj_8>l;بUWw<_@$X>\.\;߶[G㺥7??קO??e:ENTABJc%0Vf̲U6O !pXAETVEUXYqqe +1tĐ (.-a9c=!-)A  "^L\os,;0L 9M:J)ehFF!3 ѰK@ev/2 T!YW5 _~U脷~~yxx|oeO\@%Q1h22!~aAWC{osOuaf ЯlZmZ0Y &+]{mR38a!gpsJ-Jᐿb1hQh[ :E'ӊ$X D[޸T $nC\[BM1j ARwS^Q w,sרo{GA>%ua1r M2 A +ߔ䰬8,S\3ZYgln/.B0 ӊ/]IPL{ѸwA ̰z \Z鸥[˸͈b5k̡KQ UMR5`mÓ ;~]a#!#)#1r I@ulSӿM MH)Vy1%}E%Dв7kZNv^ŕEd1_.$ (%\l GJg/ToYuO~(_1iiU. ƞz k>_MG@#ЬcS$:SEy<\-G:QoS~ǯOm/~~ugqs/R=R_=ڥK^%Z8gWb5#֖"I7**~G7I +UhU_(V S 5-@$JWY(gJP ˩ 4C6jlQdP+'.kb[>!$OXȱ"!2L6|c yh @;,P,P-!WLC{<)AgҷOk&̣[hԵQ.u9 z@>z5wU[h`}'V V.C9Ro Tx;TX q E' D=NH;h]B,=Х8F+ IJ -HCN5Ϩ7Up;WjLR쟥 ;*^K*U]u+;k[8aUí:N&s„g 3_D6ЖtO+S1t)+9bn&_7#  dݓdcs!r^b Eh9{{{ ,ޝzꧪD>d>„~ jLl jцh6'‘DžCA wPB Bm@=_3xJݧ{bGw-s^GmlPؼևG{߯guV^Ep_>//`Ӌ PX|8u4biS jdN[ 7*p#VL{bi)tvn|R{o~Kw skKc綦vf>FޠZעm#ZbѦ =Еy^|.t }A}6(V@*NB)GeJ޽^ݽ^};(A -I}7(z|2|ݱ,_ovxJ1_>/d:}׸ʛ ~VOgs);'F=2sUqi\N1K&\$˻=ʹ*L.S ^R!!X_b4/2`I6f\^+mD3U39. Xm4gΕ}ç}/Ib4'9$Nr<||F;ZI'I_]ɕ ]~QAY: Aa BQmJ%Lv}|s 8Pi @.y(˱%4T1paɚ$ag9ΏՔ[iI(ZPbkmErcH}`Ɣ d\ƳY /;h"E(3R +QM+s#UZJ(@N֓ MgUGo_aT'bQMcTx,62! >P"=HT[,xX ΔX@!X=ʦY5/l!d2 NZ bD՘, o [UWrt9>UՕ7ZnJ':.|$ZGTHU=f-7(F;9[U]#~Vbf 阪+-x+HQ-,f(̭?ώ@*1 ,̮|OG3<jܜNb3$]b-U .{q!@,UDr٪*vJn;J8t$gҴ"2 ʰ(b,~P|=Dbg4f~#򘰱"0yΌFz `h{m[?l_\(r \ ,d~k?0UPN=7]4Dz iyg/^@Kc.%(Vou]k8m7>-7P)?F˓F$<%ڦ H:n]tDU(PRlj8iߕ7fD'SJQoD`ʈfQQYdsѵ4k{dttѵ&<с]l։UZSlS5.=#t +4uKeEz[Fttaf#-IOt}08&;J.c]4]Wf5In-nww9}Tѵx\ݭ]o6UZEԪ~}|ѵen cxqY>ܽ:͗_] ̓R1` oy;g {׸ʛ ~VO\'|g6WL(W a2`Fl%ID:zkI6Ծ@&WzgB=^o<$ߴAo?,ӟ–|;;v/x_ާFTP @W :uۥv-<^ΪURUڗ+R9ݶg3a^VðtDS>*٬*l$S 8આ؞=O 6CZ]tpՔU)H߬W͎^ }yY\gfH85qAзHJ8w1D>(sQ(<e=FQu2Z^`@C}y=u_͊ayUg^7 '+'l)M\L#Cnt#~o|O7~ x!#$ ǎ/ZJRB-ыג%:X81CMf^t i}WBaqA}Z@FBǞe*:[QEZk]OKd[t^J(T/46n6DG(/SB3 hIH=`͂~@1&ċ+C s3fM(v"nݞ|T{U.AGSb*4pZi'tLa7{Zǘ\(9Y1%<6{IIadb"J=iF P 2"dojq--;4]n G2%tޭKsw.IeЋ97 f" +Nj(QŭZF9!M``M{Mx$E-./Y,Y.Y=5Q?ǥgc聜*6Sb-ȑ@lH]ܙLԹĔ Yz 7"l5D~*M܎]עFQV TFg 7ôV#iKCg&rG>Lzr.҃量([B ӗ 8 lfZ ikLY8&0ܺk-ZtiPUGDy?m*s*JC+Yv@g+2K!BC­b2X(֬U VxhƗr֛G!{o QXע́NЮ&PGNsuk(Ҝs{]ѻFL5/ PϜҝs!kvaݘx )م(~\i\c;HP%U]Cތu C싱A"Jk݂K&ث/0/KgekzWlEUG 3P %+@pur=|t*H hZjun Lj)Ca6J$V g~,3z)utpk8a6c7%v0zb(~ ^pKƧ$G8ܠj<哸]曁g *'kn҅yʥѥJ <$N|Fp73@1<[["Cr&!5sm`Ĉ^^qDQ|h[0x''أY>eNtYk z %@/U(`\c|B-Bk& m5;+bff7+'+l&F(1C({ x $IkV>*Q5̭yѧʩ$k|3%N+7i5ORԼm]U|DDM!@ŹAsΎ[% 9&N)KILmԚ>\ gz[D$ъ,Xl`±FŲm0-us&c*Q#998aG'0DI8 mX (j$EF r+ jkjM[1rWY=@h/ ,DF9y%Oߝ_P0dS%e]%8³q$]Ձ`ͮZm ͉bԥMgvMN5Oѓ m%z ިZZ$ Pp5d !{Ⱦoo.'~jUBiW| F-Ed;c8":&ʄTNr\®,\sh'n:[n b.֜Zy^`ГvY2en#U^K֤Oa;J*i6e>sDU&}ks37`kV)tI2~q׊W{Uuydʐq0В̄:Q64JmjsӘ 8F%Elm< z֣0rDO,BUI&fUїQT:Q% R:y Fnu4O?nv;֖j='Ӱ,<7~dʄ4b`*d6`$ΦaNV-r :W(j\.fC摚2j䴋֠Vȸ2^e@1n6 I* F̬o9 D1,4zV1h,p.10se6r>WT߅p^5:u`u|U1Қ 2Y`m̹=ݽSNZCY DXn5͵93Wۤ)޾o%ZU9gl}>Lyy0tB):oLJ۠e*J{Pq%Z X8a:,-o2(MEa4;)xڑqUt $Hw 2JXk(#O}> c2ÍS\0"W^L/s67zݡEIxdYHt8bAH2vWrl@)#ݪK&UyfƧzkHu|(~-L ij{` yNx]ahbkU@1 Tꪢ.Si Z V~p,C9NIƷyv-%W?la|mtE;w_멍?O^ "?f;U'pI&d6wz _َ.?.El+E*§> =bǷ2D=XzE. 㭫Ɯ:9}-.u#?ɘ~`Z'Qr Bvgs -dEob= 6l+2&߁D"X@#2)7@b[~NO H:OMTʮ]\ƲJg;8s*Ky1'=mbjcV#A\dIҌ8nŴrBOv )R"A/=ro @t'S?I-Y/4γ%i/?cŠ˦[] ׂ7~Oי৤o+#% %> 6ί~p(k-u *с9mS0ݜڜоr-yt$@3޿uq,y{5$!hVx^zy=mTR:&UDZd+ Aү'&&(@WʸG8ŁoifʱQW[2k d⊣5G . xo.?u9:V}18jj'6Н&Nzi<yڢuuFEPW PO]Kd;@rK}eتmzOmWre _*r lMDvꅇA t'I#ɪa_ۡ>1BpX~ump5˝Vd =-ݬt*3#'w.{pUKD*Ρ92f.'t1c^ʠZayHZ8oٿy ]E9t Z) zQG8_nt漳׿j: cg#촷( z{Ӓꝿ}sJM|^8Ch]8:6|%id },^1yƅu@AFIXP.ѢO-`Z)N4Xs6~*.S<7x3lW@ `q7!ъ_߱$7~uHjm:Qhөi.rp2NI5&dnoRHb;{ 2 Gn~(]8Xl(4bcu7:ؖ!ݧO/c&%`ڦX:s Y5y:7 L. Rs靈hYKP4g:Q1Ϲf~7Q~(h4N`>.N5{{GJ|ԫp,j;AcHv6{-87Xm+uYa 3;YeLCY*&3G(bҢ77p@R{ZnrpZc1H@1d^@Tɳ&$),`Q 0#n^iJrw.(Q`#QFcs BPkkf,c:@aEѻTkR?D M`kkOsV R7[a̼&;`>iA2:9sMʯaw4})6>V[A+Cʑ }p08of3kpJjt*_`¢$EJ#m>cq/}QReЎW cFA\02K K(Y+[yX`aVUx?x څTwS 5A$l{q⬥LPHs3X;6:ok ދ_OGOg^hy7{t'o#|c{2Hr$wg;.&δC^j'=fn8PXJCY{؜2D6tud5uR*ywL+A5k]p)Ḱ.b|ucTmb0_~m >!0wmgs|3)zz1 | ڱ\*o aw* B-c[M,yzhz'; jZ4>~#:b|;2"hF944WWKf,&OWuyV=ۚ9w^Rk,P:eZCx9GΟ?WL7."&7(3׳Gh~,j8 YjQ& Ӻ &((c+D'X (=(28?s|@R:Vh3U(a?8M ӛ8DbJ;2?seS/xiDW9Rjx"|w *HȞmάcA@x>UOnu~|F}?rMսWo61FZ{hv~2H[4k)Lq>I Z'AtӨU9W[@`f kNvL,[ a>1Bm5/u*Y@?iJfZ^,@ZJZ8J[I}h?M 47=Ip9#;,[Ř'D9jKZEpW23`Cd]Oi Z>UUgmx_5{֡vFN_W溤WU~s;JTBC"pYOvQ7H;+|3Nat[2vԐcz?PYi^*q財]1]}֛r);[uoD×;DGk-C|Ņh[P{WXk塻`'4f(;!)?v9vR2dX%kU6Mߚ]Q3|2JG'x뗿`%}O؊͆0obfxm0:@4R2`m/ڗ=GˣHdȻXcGmZ;c+isnf2=]vBd+ȑc%C(ڕQRТOn >on%^7~OteWVpӋ|_.TC{7]_ OZ-0FV"DcO%ֶ8]dۖb^֨TG ︁:JsC+9et(܊J'eu|O5}^9+Ɨn@de{\+a*E8qF!ҁNj;GG\+Ic<9plU]j.[ZqeqgVA xź]kU)VҪ>Bȵ .Xu{7@oXSC\z݅>M}xnźj=Ћ[-]> stream HWَ~@V~Z`c}@C FL2%14bvbȌ̌̚K,a\rZj~_]"0/Ǡuy>MGK=e!3%[`XKdЧj\)&/kC!+KIt)z1AY](ŽgМR֚z@Y.4-&ˮ`W%^j4`%Zd_U)RZYKXܺ+fp-}Vz{BJ碬 5!ZG`)Ĺ@|& *o3ȻXwN}߿;?zE\?ի?Lv?˟ǿg?ߵ _6I”r?ҥa'dؤNƮAL0-~K,'n(Ѵ:6_?Q4SA=>Zㅈ}VjZwph#*06Q-Y^3؁z8ihR[bZxg"9RT`HwC pS 8JMƲ iU)gǟ ro> 1ӾD%:raGFcyћzcL4UQb'P`CL;[G2.AWu&C*R1\D=];XtJ/@,)I"aD/nm6%_[@G2s7GWI$znyG♩GQUtYFGJ~&ROe^$"Rr U$ҰtAr6cRу)Y9%wd2A63Fʨ/c R8>9hy5BYߕΨFy\ze8cf5N(as+0/~/Q3.[5<о[ڌu[l9&g];UV^{:vXRZOqmElH"d;~^RiF~a>^9].9vBlw0_ LC N he&da=*V[6T ʑGKr}bqyO䲿ԅ ](:,NNӐQՆ8 |ǘ#GE2e$D#ѺAǙҎ ;6N8{/rWy84^ʹ+YbfDvnîl߽5C~SJtovBhM$2 8rx4Rv<5I<~-FjK&<=h@z=ɫÉ1MyB&-2un֨*DŽ*sk6[_*T*΅d+y4t>4#ڹEtnU8KΧJ DBJLIrit%[-ncQ T0`>ֲp7ŕRo yaQ &A=Y̜\ck隊M f SԝF}| mN[EԞhd-Zsۨme,f&$g̔d_{[a?A.b`~>Wዠ7gu]yU.!VQn%t=NWއlp4ưEͺ(X5lNnw Id7!nǸUϾNUAI=9c_ a3 X *"{b!^Y@ GnB`NAF^juPf)mD9pM-zѸ.vhX¾<]H̠PJ}ЋAk݅\LM,u1Y0='HiDTPBiπ .` &nAo\ОEy1?u,ҔI  T't&dq蓅skZ01䗦Wݣg'cYhU)Sb'jԲ+wT`#-C%4G5[>'bxIplaF8f+`u-5ԇ:%[8r}[lG:8pXI_B5Md/"q.l:x⮔Uģ[kaapE_m,ĭU9ClU %r>03]g9X=,,:EZ#^:da)FL2~U}xiحMcf>@Zy{\<\;*!#,2 ]f6jujSMfj]Rؙ΃¯ _It/8~uk{)- c/%()N~8]=.w4z!+~ C*(ٯƸr;FB wvДGT/燯q)UqD^˥q,,BLgjsj>u궺k9uJ泙Ө^h_1kjl,ޛKk;tsZN(3E$H"u)1ڒq+X>+UGgdӌY߯FIK6n| ,$(~}giL$JR-&J))M9Jd]O^&%E| ֹTf0R ת0st8Ht o6]plXb!YJ6nIS< 6bfWtcdp܌ lɖX1Y7:rll낋 H$p'ݤE=1r{t|z/4F>K~-`lE3=S6U/B-qX7J&.B4z LmIU. p=h0<36L(3#u`b D4r8^!QZT<[{~*Y,ʜ 9 b+qaͮw==q>ugDpHKM>4]zՋ*5WyUd O0'̆|B%*\0hXU[5N+WI[Z₏|PJGpי7y7o{a1Ss֞F֤.u1TpKQۇc6p`IN*Aj{psO8ou{M^WlL־jm^}kؔav~VyL tks6Lbj:\>{ t5뢔J1xi5˖xZPxQ0ׅFtKއ!EY^q<0V%%FyHgQ) 'I-:Ҁz;B9ml5nدx̻yjm.wĉjpWMDV8®zÍz?.È^v9'z -g5.C hRWc4ROO̻3i9V::PcE*75Ϩ4CdVhJDŽ{>EsU'T`aĊ7d_S~DIB9(&nȥ̘F Q/೥ح]&^]d|;ĭm")yzG$7 Xn;.K{MbeW-]'.ʜ"Joy = +d,buFj,BĈo&'^χ7xIw~<6t&J%T{jgE[6MƪnS3 ;K ձ]B<_rT0=ᖭ 7a-f*99JLT,喝@wADa -G>[r,븨o2RZ-o.9%+,c Y–{RWf̯'.c2z| Bl$#fp7Z_բ#_ G@MTV}(jt ;!}5V(m=YUS%.Բ,[ E7 6Qb';)bHf&٧eMCpWcy>;&5+Kv\uz\ADk 52r.6fN5(!" yY{6i;\Lg:;wzL \Ոtae\RHݒGTqa) Hjx4l%PQb5FFfЊ2ѷ%@dsBe{ 6:=)w~ѾSχO_?a|o9`%Hs r,X%_͖_}W~wPW6(TP1$)i:AB43@_\X'7?+\}7&{ԧZD22}S=ťM J[b{5'h!9Ph *d/7#Sw<G^4K @2ˋA TEg-HhUM'As;bGy5<{f)'TA|a~c/z;!n#da HSu*! Mi|Jʑ2L.Zfh <:=93Nrt˔G |Ȥ+5fԙ7XvR1] 3@y:p&V.A`#[A?1'lDyplA%N*ٵJkY Fٚ^6f;؈(0WT>"oB[$^:X8"$#+2aIe"NRuxCP+Jj+"N +m*_P4,\d eyZIkPsJD9O~Ŷx fVEm&hN[ZTᩡNMc dȺwMl{\gQMJI"q3=*^Hj?BXVlToyI "od;B6SdNJ !Ejn<6!jdX6rߔ)`\.(©ȚO Wi^51mM8gS}Gbɦ=Ǩq7ւLk.D/&rs:71D*0buSACzTUmP~Qf0}-@wtU~Hlpļ|l,Q.mHalNl^.0q2(i)цӎ6ƆYIc=P mW5PI0v! `)AfWt G8P(JaU6M>*+T\uy-tGgWg5Ⱦbʎ5ʯp1`GXaXPW,s}wx`bq ͅ:Ha}%}nȠԷkUT <_2. F6S֨`Ȼ~Z츂 gux3]X行 2B9MEķPgwi^a'\Q>v}mي>*jkFctŀxVS(զ b-kʕ~5^Xy/PA*Gks10Jŧ]abeJ"XN>$rh3;Jf>jq,۪ +Ȍb}ǚH :z! 'Fg" %9mpM9j ֿQ;l<6KH\;TAxw T0?6ؒ(/jѷ)yx1}}yxc wu]tZùp? 2S ፁX!*4qod# pcM‡0bh{! y7vfdߘ&^cwn/,~~wϟ~o?|cb!w?CUYc?Ϗ[y y5=)`p@+xB 2F?=~ REg:(RȡSh b.?a;̕-.sq4IyhࣛIo5. VGFe}h^ګi!'얬2"쩼RRyk(U8"}j&U/E1,S^-븮5vkI0-e_4Щ&uQM6s,VU}fjtV~ D,Fu\/XR+74˳%^gyt9OgY_F1 d= ?J]ϮEb0*u gƻ,[-B'Oz 6'0t++}iPaXG(7:PHTPиY#D3:&ych *K҅ʅՒJ2ŗ5.Fe`- =ެf[wx@y4Mu\쐼悇>j)ҧQG:gIV :j1]6<6 } < N{|~+ˤ D,}cHtpDie`WhUqj)EiJ$36Z v1 Z،zux34@%\3~!lt,|+?F=3&BFT<9? 6ga=GA ۛBЫ8 dY>]vm׳ή\zGyԇ t{[K*g2huBfH ['cɲk @98:;]gXU+?/2JEaRլ]Lg__ #CJh`YˤO8Jl;Aou٘ =eJՔ ˳cU#s#qKC y(lǥ}T1XuZ姫IӲ9F;n09.8݂6ݱy=KEXsB'B-nb!DIYwq-A2M%V"ڨt9<+.Xqѷ 7nA<.>aq֎壶6Xed輒1J_E5;a#,8S0-S>f&"ukWr% MUhĵ.*>Sm҆hݱEō.KE{4vzk3 G:rSXtũ^ӽkܻlg%9H ,Mf+!!H)sexL[\;Z29m1R4_| }Q3K|5f6i|g`0x9e,=Tmr~θ6Sٸh`+=MHJ=JX`'Kt4/*Zovx 03j:qc@כ)3W^u<³9o.I}iHF!zqZ ׅ1آ\D) /KNؘ󺘴GgcPߓgZYK/l8_xjl1/o#*8AJ<a\4#dߔ{i\pOP;\}.4Ǩ q,i^ŭӞ xUT ']ᡟuWx ЎxVǴ;"{s֌ 8?^  Fr#`f^JC$ GX>cнd1V#Nk;m@ׄ۵]ϞU?أ9)ZF)JIgYhtu!G/|_݇ ;d~;Ma`4+Q@H'p:m0i1$wZPKLsclʟĠ7 k!9@]f|]̺,RG փ7ܑojL _7s)C1m u9}& -;o~V.2(l͢YZ7h#uEurA  Z9P3ͻNU¶%gfsېK7eWh`׶bC̏CK'ΪWU7_PGr{Z_y _C-Y 2 @!INK}B #X ZH_}N^j]޺F([$@b6yLASٿ:BSS{NEh ²9ss2Kp:1G\ǫ`._}^Tʓ==E5Ï;vQX:XJ[;uc~_ pZ9WS ؙmhGfGoN(J*l tNBҸi,t8Ƭ,Ob p2vd4ӘsBd.BBkL0fDQL˿'4-B6w}Hl[͞fT%=15z|51I.h^jt^ƬiQƮ|-hTLwy<([!쳷iU]TE^=S58p-S6r< :e3P»U.6=72[v#_ǫJk!H]DC6x76T0*iw }bVMhTfaT RjŬ0tpzv 'ASpXUHTaRZrV)|i]>.UּCA!to r0!ΨTe!gB T065M# LMebM6m[HQ$ۀo^߄m(W6qmI`s1z)E>QhKhdS{M( cWD+w1߂ xzԆWX1]( 6Sږ=_< c"EduiǴ~%$45A;I2KM{>D,w4}]_{ʹ$B& B =k5z4QcաKn˵+1ks=R`/=.{]* !ģ3% t` + ti_z>IxJB$IaiI7i Iݹ0xҡrݵ{O&:DW! IAj-g= Pi,+ Q" ;ʌ$,' (&7a[ŷ7V<Ȩsl(?KvzOE|*wֵEۮ %Yxtp.,9r<_{% +9}_kğ pɬ.PARkwS=!6H>D"p|Jn[?~:)O>B$BJaS5rrvK$N&O mʑ)JO"056םMpn,'0 kt}Rʸ^?3X6E}xl^VL? ں#cMp+7!;m"zqzu> \U+<$L-UuN@^ .LNAؑzOm )Fw9;} CfN3!tҞ0o҈Em:{C߮&ZW+/ CӜ hN)w-!)c!}t]73r]vjYzu2h0RTb=h)ɞn y/(C;wLqKFz$rZ_X*jbqXN{FKXK(.C3~=9}j>͆\!s$)UHFHLPj \ce Z&K ,eɍbfp4ë do$$)7:4hAm0Via.Eovz}d[p/|ZwR; :,.#p[=AX߃Zq$JZߎkö[By;Gꚃc՝%[C͡]rؖeZ`JP{m(5rn'ʙ[;hb'ц{uxp';ʒD*fr=v܈%䒌6cCldblicŶ,Tr) [+w,w^ZZO*ұu<6%irkn( V7 {TcNbK~V&_uZ>T`U'(ɮd;&so)][=!S6(OΪbDE;]JP|, +v6Ww=ܭ v֝=i  LM}N0wK# yM0ps5dv:GuMr(5ZLNy˵AKIc4`#6ʂ=^6kø* @0 ;k@Ïu>Wh8 _+fM0z ﲳ:I`Cv3ơ`w`*"șws m,J ~~)&ms\?AO[5o+)Ucsw_,[X܍.vVE:'L{RL n~ݼ;I=9'ɊK+]D!vߟb`3{; 8+騐^ me0_sp8NJZ)0C B- i $Mt21~0^Ov9d4h(dT>}΅l |?iB6$ZeZ:~;=nGM!O&5>,HF*?%1 ` i llxx P.).α: v뵼Wqɂs XEt'Ȱ-/,]z+\ LmZaiYM(N%Wzv-K AC[ 91P&sz7KE؟ARWm3Ġ`'Fc} >(r-29Eb3q)}+PNcmX?2'3 'ݝ&8.TVš.z(F7M kxCA;p:mY#Sj9K Fë el/K_kh2Y6Iߣɲc쫵xyթk':4NxXZ̧^WdIv|42pcBzҸ؟N ~/,1Nv  \וnԢ{4ĺH m-!#gszs>Pfny9q#U0QA_\啷B%fr 㗉 4&+MK_#S%e[:Ql牾&Av08m<%mۇJѡ_]7B`1V.Ul- 8Ip~y2a4jSh ž؏Oi/xҦh}GOWf;ۼ~~ q=[)٠2\nQh\xbf vK~\ m 4VkIpxGޮc|[4V#<3Mڶ{q yM1WɊeocnrRM@#z Ĕ̼h.N卌8q3~{ HՃNE>C(վ>_~8x/|dʡO42G1F6J6\ 6yyЫON<@*9dbS(ȵ]tMR8Yv{Iy.kΪcpM=Krк*=߷Vg#G% 1uE 2r,nm+ri8=fRk4}?OFzCU$?iJ@'hb)5QGNj1]*s9P&ʱ49JKbOUW3Îժ0tVѳMg_ ;&>F+fsO &/[!c3v)b^zvs&: N6 *n}VߏxO_?&?ۏ>| _o?|ןzO?E,S=D}33ix_?{A߄|b 40bvV,^fi6.^PֳC!V /9w ʡ!?):{?9EP8^9h-h|fц\ݟ5 {\lO 9Sϙ8N;"Bqr.]ǽ$`δ~>;n{#,kL[mYA4lԨ<.SE%-.3A( sFhLʋC#$тl`/9;xX~PR36Y(ff Z%6_e_9w̖T;2v)Gdoɑ[.)2WPz>pA7]EAk~8ٜ)%L3V1k3O'4l#"GHg7H%)O%1)-[J ڳ7VS)&t뮆m vZihm q)Ppq 8'KicX7C yFԢ6o_VM<0ƙKC:vxiEd8w;"W"/OGI6a'>Ln[IcK9E1eO/D'7eRhtD~G ZǬn~g{̒ѱ!tE ݦ~ak qƧo zDvƄdIDG5ZxViUPy˘G)Ķe5\_ŮHч*h^ =2ꘪQް̳YpŊ䄮'IֺVSYR.lzI8 '8vE)K4/궪|-xqy̑}B;>ن(W%^el4֋|*JjLA Zcue:qSLUϞlI( El_ҝ$%hCǖp;"`e_gWXRvc-B>&..7Uu@T?%O6Èt}+ur[>AFOUC/=nWDbYЌ\mCL]gqTrIǘ,yuX.5ƇYbm1ÀQN 4hf 9X/4oG{o0[wgu/ rSpbK~sSRWOBUcY^/7#zKЖʉv hllβ](X؉YK!^V< ZIkk 8wlH~TujFuΖ u|MaIR ״.T͢x q$hKB'yLZ+o~J G*U4)K(h))! g.D隸Υ®Ϛ9<%ukIodSRgQ]ci!E A0kO:ECJJɎX`V,nB ǰl%GTDfOIʇ1%y+,Hit͞z(I7^WKHjhpܶ7R:WԦΊxqhx 5}M9B (12t@,*+HĘO  )yCBaZs(jLF}qF}8)=g`"$Ȧvuws|%mc.͞?g)͔e1YHw2DH J0~K*հ$/aAx)>ᨏ2"Uu&]̥gCq×򻭅m,5v–=('űif9'Z`W9,x6x_E-(wb,6޻+O2Sn.bE%$ µxtTb8Wu)qqb Pѭ뱭X\X;M.cH:FލՆH\HܲMmtcryVXծ?X5jUұb!.SudAV~(Aj1_J8q$ixnO+Wz$Gi*Lt< 5 7.4Ffe~˨iԹc > pa˽ޓXY!ӡ[Դex3wjÂ&MnJ&"}24_Tcc`}I2imH:l+wSǢ7t >1=?,AKr܍7b] z (J&꺘`V 14gXǹ{͌rHZ<%LwըlA DGMZxr#nɀ;v"S1@CvUݖF͏̑P@sOzȢzbޤ +ߌotK,;M0xq}mZy~|ɮx:o5qPύ/_ߍY+g++4\2/O4F14= {x?Vfk}`t *d7H!GcךLx[M8(hBݕ/t<Gv/0>`oDT  W6XCg̾:lgS&6?-ZN98R'~\&681]ȋ=}d&VET%$/4\!Ag ж]En߫65[s Xtu7J]EW:[$ I$1=hKh"@\reQ]H T)v "FSq`n߫:$.+8%6TկEa~vBhկ9>G>X5~@OTąZ1EE>ni ԑ;M=MP67,Ec̋_Y]S'ȯ~$LMНףErKzǑ-g~ߤ?R~ˎ'%*a _8 6(r(ub[p=K8$; 0kaX`(.o#1BCsHC϶Zу< PanFؑPNls6f%:Ibkc.^Iǖm1B>!i^# !'l˥8M7IqU:v@GGBB>d7Gu)AkF%de"UI;7ye'FٳHuT&-&h#m iBOd/h `FV0i1gϖgU趀RUqFj w׼j iBeY7ޙf-0JUMMS,ZS$.k r >K+/C65ݗnt͜zޑcse2G?v4>=rT^7Nt1 | ~%@s + qA˙,dU#T `1*T%%g*d +j#SQé"7 ي8qXkHTE(!ڊo#w'$|8ڑyKFMoyEJ |^l8@uflY&>I)nˏ_l\תt"dSۀM'ŵp,F"1uwy5HÖu H n@Yc~+Puy)kER@j+ǿzzki˘'9P8f>yj^P{<_L[QԷguU{ _+סZycs ÃjZؽQsBWl_z4 '?> prP]q4 "{q9X:(M8{ sܒ/!ہݩC]ڥbj]5VR܆ċI /LU" S2i6EC5v8 YI4~[^Dd/!Vց:)> stream HW[V ^FT$N8>jPj g$ Ϳﲗ:ΉXNGPUw||s)mg,24HpX ut)V+vfT,.>I첮_?}o_>~__%7޾xU _.Wk_? kK?!<>k??҂;:Gwjdm~2ǵH_brTYeE8` U.W0%d 6aWB!<|Ha`A0DnVdcCCRYJuոc0AN><5 tTTZAǜ7骧6QXc&`=RԺ_~ J*]-2*r_E$k WˣsioڬyXmX~T 5>Ъj8J˗|<@sǺ́FT!a!aUv0犑]3`HWm ;AY_+Av}v[+,AOpWWK EY)FURa) b`dX<|e@u o蠘3AE70h<n,+&q h? ۈ(g%RQ2${gV`'y#)ScCI/1<Yb=:Q:n@6'v-A^Տ<`+>Ju'Q_u.2ҪJ]kKώ>{qddO'f+UY$AZq6.i/4pe6 RwJ;HR=(  nHV|)XP}e& \eCQKRuMs#Y YaJ&QK43dt@YX.lG[c0RCsnb**(5% Թ8s}-5sY[bEΨ#D@ M%NʙAPycݷ;FPU5OfNŐũlesdAIα}; Ytvݟ/K͇^ Xs8j•$G펔g2 %lˠ 281dfJKE:;KV1@Y}o;x.ڋI2&#?tZ{ )@*詿-OJ̓ij>QvSMW 3ѦNM@OR1waNjHFU"( Ԛ28Zw^wČb,KZj 2HGD0`NQYF;IraOT1it2޳hmPQk|$sU #s/uB2!V\8]Jh/'!יj`g0>M^%'A'3їKwy~н ޿~ܾ{͇? Nf= q^פar4 rj\ $c7ٹUO1n{gZ]櫒;`7:53[_aKV|< G\b~;=U|}G,Zt_À DwmEjGza|𫖬 -֝D}3͚ FTۏkK#`$7W-8S";79lȯH_YzbsC~^d{i/t/ )6>IWC41)?wM?Zo^7J>9zW^wτy# cߣQS_"a,NrTKx2pDxs\" m'X}P Bfa6*s\]GJ+HJid;.>:بKH!TEyPgwiG-%}7tphdvYa|@ͩ֝V^W/':p߼ Na;fms^V%<څM9W/*+rlY%ݕѹz_44 8i}$}}6ȳOX'Ih]RTtX Jn&U~PvWPZ.%xU"^m+z&7 n G %Y`|YSJ= jt(Rg#HLm0Gћf`*f+0'GoGm]l^!5^g/ė ?+%Eaxwn9zGuiB1NlD Hmm.> 1BW`2텁(^0 oјiH18o Ԇgg1ʋJl5M Mԁ'm1Gi֬Tg\x*vQp6M  AX} ʋ64t|J0 %AFXhYߩm;ʶIo,G8"l WQzHR&xs9h4q(J#Lu+!Bn|O; k]5a=&^sSqSi[m bMWb$@s`0U#h!r.nUxf^!YCLָ.Qs穒B˭ź(yV&-nk;m,T rdUJ ( ER#&gLfDD;1e>KI _=W_4ޭ7y=/7}o>|xݭ} Oc/ӭ~_흝ïC}zXْdhu_qs{Oܙ?<3ǩ~QTJC<^:'e8,m!JmL~m~CѕJ|#MVOXa 0ڛŨVwH಍)^!,TT wlMH~fz"p{UxOZT4ɟ|txvό;t-9#{iE:!h4oiuٶSH[xhʮ1r6Zs +]1sת;`2fk R&Aq 2uu6uOLDVPج"kj@<66M3xJ3 Oo烆 L))#?={gYJ@Y͋YB^it]X]cG 08wP!1ܙ4Pa/OhȳQ!*b*&'kKےK[pq]9y #ث]^潌d?Q(m:=I#?`6j&gg Ts'*jy(&ykZCJ\ `C;k.{ |Ȥ83`u$ŶY vggޙ.Q_z-! W 9»C}x̎T,Bnw_63nKa_A?kV^"~kaYacp9Tlk%ȉԃ΁tO'B%͑2ow7~ѭ`=R%u-@̰v!&EOUKgU9zV]<[ g'x5l&S#<*l;!XbCV:f"Yۉ^)&VZкa;2Սv*l%ס9M4@u>fQ`z_On,Uº 4^LUm-ڌLJs*XPrmlvz]+>({a\`Lke 06.HΚbE+ͩ+Y4^_: W6Zp6dUG[P@+RO[ 3&2Gn 6+t-RY+Y3`SpwbT!#das7悕STG6 к&B%p Ņj; "Ogk+RZ,oFhi%tʥʅng|J~ZC/ɝsfҎ nu1=OQ;y.&! YULBb`z3lI-eλZT[4O*H,/B=8N5w؊oN0y*M=1%R U2rMeFera#``JUk0S/# YzsevWӤYiB'M^rٝ-zgLSLx/UzێRy ̔Cgqa8n͟U>xӧd]c j`s4gY0× pcZ؇WnA_Z!O}C5uFf9/"@2c jPR*á3F>fe,bKpYe()y g`%X 1IR5`@Kc1#-,A:U75WYFD1,л}ZsrFm/LVeY-J7̡ [}53+ :R$a;bn۝ɖs&2o}; +"pSlpGPRIs`'~ivgYMa*iԊXwjl#JτVd5Jy9'Blk/jc.9]WIto+ʗ,ߢݾ[\JX}@p)}_؝/p9K*w<`F p!HZQPy6!Qfu̮> ױf9Omޱ] 7Ջ,gW]a/#dB=m _C&8W'/3\bMyV;kp ~SV`gͮG3M A4V:#eXD1hi,m Nf 6Mo&üj1f #+wH2' @w . >_= bI6spىITqQOHqJ 4hsX!հTJ۴WnJٷOyьgHjF ϙcXɤnVqۤ)ð N5nVwżA]Z)0]׼{sL}0.):RZ߬΢F)-ef2 z~#@̗UTou)z+OUEIHS2ul3 EfCsGiJriU?N6XH}vq׼!Y2*VԨN :WVmcvg i<5jj)ay-מn;;[q=|Q4?T5-b׺݋}5Jh9Z: T{QٟM"#F VOۓ%6vqH)P k9*a&%'XG]_X*ڲ=㨣&CosnǕRQaQ:,E/:G)V{i.JoU8d(hZ=-LM*|JZx5$።<@û2R[A@_KCPѝg衆Ʒ:DQa՝"8Ep zyRz g5z^nSa'G˾:+]km2mu)^0ɦH!a4U1*.mxp۷JxTHxa'oQ_cC)(jtFD\ءUڔl5\ۃ 7kHP*YSny\dv?+xV4.nj<#GEIhc<8_7Ϗ1uЪM4\јFV@D>sP݌TX%P! O(}G9ߟ[Z6llB/ Vn]iOE [񉶽/Cpy-M JpG&l|aE8V<}ɢ.ƑQ(N.n1y ’>XdW^}gljG~U"ב1v3D%qw,*bݮ%r Ewȕ}=Xs# <,8/9?E'1X*d1;oRG^=ج@[fa $r-X^+v)!~faG+LU@u*QϚǺ RUH/_6%D,-G( %GY!u^S$Y?r,]Cn?ZwrC2,_>uCL>C,A {W /9hh{* |:S^7kTYsЂbv,]-i(*}ecvvT'՛,0Ѧ4KgybvEzpD(7zvW;BPY9`vvƥl5$w!Y>`!ë f{݈5c .gi1@ϖgKh`R"~ zCjTfRWqW`Y|+ 4* gɍ@W56H"w?% ݑ,|܆4@=+w\V)wժF:r3,rdvBsA}J73N#_O^Ju[{|4C}o73Ӳj.guɶyw%qr6ƯD] "!xGK^&WUΫߌcZbm S:  .rj6Y}@~b8>w&Ɵ"kNgǼ?Bk{Lt&R?كR`aPQwpejY)Fʍ8,-$X DyOwx!1.(>Ei:{Z#hZ.=L7dy fDI+Ek]$܀}Z 1Ja.ZͫN,  fZm'wc9XFp07x\績3: -UIpVH,pq[|x[e(Qɯ[wjw_F蚢g0>imfq+ ,<ݵPaBqC̾>Lbi6#6|t,? ˮʿ# opV%b8bdkךY%mUiUUBg仪;=t̃p*G-EqQ@ 4fAxNY?7ah-K~yk N)챜lZ$P9OvEo//V>|~[ 3ek/Z g9+dSTQٳe ;h[0K`ѷtt[UzŝX[Cá.甈~&j#IrOXeҥ2Vo3fɉ`4ڣ>MUbTԶAs׃h:,dڒu(c~֋O,{4h&A[2;[jV tukAխ!gDRq~_j[7cz Fk(+>;=(ߟe^MM[R&tRYqS_ }'ՅkX"/˛^2>3.Kj  }{#I$1Mͱ҄=(U&R~ Qz8nEH0Js9&()Ps=|~֓EzJQ ͫšHcoar6 ͕ au[F&*UaNҨN9l]=ĥ5,#/ j*Gdd f|ФRM$l8%Dž*F|d}6㔩q83Z]vYA 68 kiӯ1-2+a hakKFħyh &B|\nxÇ)~kV<):, Ɩ Ty2"c^2 Uy{ݵoެ@4Tl qD=3;+x"yvwx$/ͳt8^v](ڽd ϢO%X@;$hcPIʮOpū{T W K1I(LՖ`1"Nl<(d)$VN 簸jR '1ϓtM܊BNtl )60 [Wʭ'g` LeZ$&Ĕ HՃgBL螚ۂCN\ ݒ: &Xrd9|)4؎LU<' >̦)OIk~l{9ڞЍ TDp9lU 8ی&/TxO8 pL91kދ=h s(c͞-Yf¤P3NFc/MfG6\eRg#[BmrD;= H\VpL".sd}YR2z'Æu\ ziH$3uFkuF [69zθ\^jM^d7oԘ]Ϝ L(,BwUShhW@-@F&`Ě4ak2V˒.÷@Oձ v ݡV+d?6_$_OQ̲U@X2sH3w-LUu߾Ǐwzx=_㧏?^zw?=G'lO~ye;Pb`G7Mpu>n2 UkO٣F$WM-k9fivn,F{iy4iCÁm1@ K ,Y79Tr5^lRhB.`a +=eEG<N:b!ڿ8lс7> cv;u CXrkm9*.J */_Hy!PlVCjFKa( [V{`(b b, ƼduT{wS`@y*3:Xe{]|2 F7}ҧb4 PNs{0EM&U:}2x !]R<ѧ/(ejh^Ak8XrG/SԜkeENT#8zhnƙų[[uOxxH(_Hu}Jk+FMF-U`p♺EK)zDRwǻ*|۹LOhFuSL U/h[2"%ijMK/"BeWE_C·i[?[{y-r,"mF]]B~Ŭ+vfE:UUsp,c#;jΰ cԓ5(aI.է?>(A#XiW"V@Se"*h mzQc)f~wewQ~aͷ2MOjxlF=u޸Ykn'`d9n='}cOlk pOQ5ey$Q[K8,sOZ b.Hp}!wHVz]f= '`RF'y5^liQjsMƧ.NnP"_s'aŝ0d!*J1%:4ls%6&>T߅qI? ;mUZJ`:K`m{@]@yt'qj8hq ={Q?VX׶`6NzCk;#Rk4@z- ʷuu;=;@FGQ Er/cKP 갴,6⢛^ljQ:RuŊbѣ`XZO[ֳZIԮ}0`(jڒ}eO!Pj8}pxB>ഴũq(W굃4X܍` LL$UeT:jx*Jś%y ^b2[xW]XP'ƪuZyV򱛡L58% FۈJ!/RCz]Xv?n'u6 M_a@!RQiH6{uHo~c?m8DeOm#Lȍi!܍ti{R=@(Q]ճW&u$ux,^HLb/~q)m @*k*Y0UW[#Ts a!h8sކ;X@ġ"^]_[SۿG5@\v*`N jE"uu0U?4\ )J["-~{!mNv c_TJ}*5R#6ܗ|$}SĚkZ`ͅeMa]oT^R!0ׇdұ21uf}NM]'s,vMÆ´ 5$u LQ9+n/z 15W-4~("zh%QlLߛ>?13E#"$;^Ѱ:0)dc?wU1] ܏|V瞎xz;uUi&8=Ʒf3]v !wʼn[(jR6PKhoc P|A$qReCӖbE&gin+=l,X[kgt@+? cW\Ӹ~y)\g>tJSS(!BjahZْ4]RE螁}}BLO|għCpMefÔӧIw1LM"#wa9[ō7pQdpXgFA*ۥ`ڸk$S.Ո[(dDDdyfT3 C9c5c M$؊볛zMemU>-y\.B# C(>ΕN{MTf -'/ i*y.*['ХP(rf"VXmsX=I# ëa^d 6}c| c@{0_Eēu)K&ڸG3ޥc[,|PwY{3B=O}ϰZpr$\:&J5 t;]H *ґLv?b,|[[ޚ+$瘘\[jLm/`x[I@1Ea[8ּIlTD01q_8Jonwxz_S!նDP*͇o|]mϡsk^OWv"9꒰HRчaٲ+W6^?.IS0V)o즕β(hq[%MVl)-i&J^{>%N˵=]7m_Ptt?;;6]Pj[측_p^CHңm!!&`f\gUI}9< 4Uki CfU')~D5H *;JN<ߺk=N2|Y75Qj"ת~ue y `oFztQgKC%[`3͈Yb{bf7*!h[>uw},@zp6 &9%3,lj:X?x ;Kڀlb ,~5f#l(Z@DK-cSDՖR6-ٍ}=.oK^;(|p ռD ;F]<)6P)=#^^9Z9j,!]=:zlS`|B1\'@IʹK^kpiʮ6{ a@ira|&BQ}ZB4hdmmxȒrԈ-Ԙ\5_ۙ:9Ft<:>w p>r ATSPp}G1.GkﵪﺴYYt9.k4Zz#~u8'qěvZEVkj Rp*]*p^?ҍWX_븐 _; ޡnUQH2+!Uގm`C ._kگcH=4ҋl}pxvCS %^K_H־9%)6FX)>sr,/w3y vAO?chM3V*j*wtm' H,U?L9l=[2q9v| A)oȝ]4Yo,*.ڟXh8t7Q^=J>㩐q\ >l/ϕH{Qc8*l7e͸Yw/.S `gD~NUf-;W^Zw$+F,)u"å d#F7ᾚ a`xB2<@sN4Z9;X32a20y3Q6&a+D&WAbͯ †2WEavu>TqV(Kr25pϮ@e2 *2#gM$"Љ(d@x'`Epuyn_KIF-{qҖlԖhddpZ.,d|/}4^Cu-MW_7?~4ŷ?Mʯ_~ƟOFt{?dkAς";!-uC_n+ x8mm^k8>d3ix@BpQvYϛ!uܔjMX׭Rw6N RxhGvikp IdYp0 Iv)9{`e7/H$ wmByp2`*#SvSQmLuG;Z(ԱqɥZ\+`G.M{K=oH9c,n-ޯw:v-Bأ hG..UT:dSSbGќ3@(Z[tߊ<{dL&ZW`cN aO2w~2aޠI3,>X[6` YҐ2ȿ|tXXݰ:dXFQ1[dj[g1Jsa f?G79īlnk뱅!N`xLA}AY@&LA-(̺ls%YX^P͈hZ3M gk`F " xKlN@ Ce)(>Ž"bfY5%qA-(T˶3 ' T"85@fPu7/ ڃ5א54>6צp  Q6$DnTPP!ZK= ҵ `#|gsߊR/S-|R++l-J76Sb+vXwS yisѰ#AAe 1{>6f7 װxq dG 5}J̇#%,RڪjvrX6_-dg !΢1:pn}yJ3-RzTKβ[wU^R 7DKjj|>HH)S ]ΛQB-F] '{bq?שl$7d)M9+/xBژ<οהãVA偀T yK`JuXZ ˢCYTKBh9XJuȴEeG#@KM90]6zTrU T{9n|h;L-6 $[XiN Pt=4Zs,1P`JweiKV&fj0MlI$v|6 u[zf",Dm4i{)&~`5%*r4 A ((Qy)(Si?_Zz~~}׎n4tA|Sty';Tq-WE A"hGHԙH2NG9 0l[0GV ?{@ؼCS-u5o"R`b! @ BysJ67n|0d'AH(:yؖ2/6_Q5bx˽n2heMs&77$_iTCpj\6Z3U7Pc]AfgZEGbǟ",ΎouGd. QjXįZP8UasR=:> stream HWmkϗ 㝝ٝ4֥^KtFg^"BBW켜9|2vnk=829"'FJk^=pVA0'XE򀾋68mɵ\j^6\a$#*Mk**eۮumU/gU*ڻn;W߿~-wCۻۏݕ-} _`Ggsu4.)i 2h<2Ϟ` hgК:S_<3ΟmoW?{{ Gww[v߷>ly{yklls$?,PH]/׏`x.K䋭G\OBӰwT `2J_ڷESޝgPoܽ5\٬R\,OfdL1vF8Ȼ^{aoHJ"9'ۡM"nlqC+!26%MT"yX1?iHSj5xnt_**|7⩹tOSphS9<,jEbfH` ZbOuU'^UL|f IR3nR'{ɶd؃:r&[`ug6,J(i vmI`=`fz R$_huY9ŸϬţBo=m?p/j3fF[ԉ:S5^:X}. -[#g"68zkFVk:Qn&XB<=VÂ]41$ˡW! F$zż/`:)Tg1>;`U=%J h82,CoGJ!v)LjQ0p _=mR?,uȽn!˿D~QxDvT3*c&YfQ {zHFxA(y ߌj0wZ *(t*׬U0L A<=*C7ZtmShhmJ"а0Re2y2#$gJd9$6M9-1Z5@#}և LFvS)9F>] zzr1<`H`fm+*qzGRL8jxPt6bīH$-zPUe>X$AZK1B@^ں^%(Cra՚֟e :7dp-X8u`Q?<֯;nh?F~bW_$ts-#f׏am_\&LY1xa0NڬF J5m ?_j,hz2k!58N/8ȼ٠%hvfFK G/"Z޸+AШ5kN}CKC nTWy 6"Z̾fJٷmC$Z $Q4 q)_F$K͞^s6^⃳k9#tU g\!tPKJ"Gsr#Q@Q62YBlX#^d]z1# +St΁pP#~ bS-M uwXwr6F %dVӄJ=%- $D,NhepXU(u LSoT.Q ޤ7"Øԗ'ۋ8ѢJ>8~Kؼ,5=t&sNgAet滎r>KW8*xe$v0)!56(ͣ!8T"؆Lw3H#މI!-YL7bdJvvTX6H1h(cL-g^TjlQ0ΣN*9T&䱕\A䥺D$S\ G[ GAJnstVt2적OS ڳ#4`مp&De۷٭c1+&ԗ̀x9}x{P{NJt㊵MCiTT>لN< A] FSv?xK)α-i_r ~*?g>g|7nMHXVL^mDTzo/ 68l'p?kEvM̆=>G0YH38[-aK3:n//)ԏBJlaa9 yLAnxg()=#UM `SZM>RnVh iP{uPځ8PuJVRͩUJ7K!56'""%^PZGUVҡKHg[* !ZKI 6Ԕw8v>+"cCzx3J)z" @8:LXBbjS6/鼟iQmmu9F 3.O?ŧǔnOgwA¾el^1wy%D'D1vrk3-䥳y5qcLPGxtYD)v0>]]+4˂:vᖼҲibŅ<1v-E7uma]jN(֒bu-+9Yg7Q@‡ŗ>*Pf#y¬Iv G-C&ن0ңPF-AJpn]&Pe죴^4X P[1O5TB8K"haKsUݗLlt#|}Z B@Ɖ2-m -U~02YWWQEkkEӵ\z<.: n 65 qՔqGnQ[j5;QTP@|=_5 q.?j<썗O?yUoIWwS 7rԵi}3_+J;֮[mכU&IjY2ƄZG#+o@F+ g2LMXc)sLJnў6̦@e/`-XG4eJo7< 4 AZQ5Na<;΃ާ}FoƁ8>K7R]I]?W&[%̆Iqԩl-Ol(4"uDR3͏`tr2cJ'?wtڔWPO˃k`(̀ W"w~od2δ?Է#Vy~ZYatEXZdVR4 i+˕4K JUetkj+b>Ùãyt3T nOnh˔DS:)-Fz -ԑD03YPSIZ _v_$jQ]smS!ifTK uʺpCb(Yc!wC%16&w0@X舴ԵrUskdK vxȃ% c s'J745i.3Ժ 8Bj r'r@¯nR+cS;x<` C<:xA;)w|d;$+mJl#B_[aoJHgn޽QSP;<SS~{S߄8lЬE7kp,i?1o,F \{C̵Ki <Ύ$#6h!ײSzZ()"XLwwQ}":WO~H {h`T/Nw?~o/k >O^\_8?h'8%BArt8PZ6OM#@t\[Tyяqc;r#zA'( K '0Ce#j+fËպ=l$|O'p&hG ]k4z=r{u,6iT]օ(W1HU=9Oee/.̌4-X`|lљR|s[MS D#^ݥ܋c.uQjZsFե^MbJK)Z(>-c#UA^* P0QX l@!%ՅjM8JZ(v☉ڡӃP5J*錥o"&xqF2$-Ӑi*Uy+}iMs YTHB Y<,cCdi%Akuf.1!Ub9=Τlá@:=i`+%խe< m,ɷCm&piu*'ˎ>RP~,W)W#,3EwB w:Bl'.da _XR10Lרx-Ylc,fDŽm-DaZA1f*P U1 떦ލ'TˣFwxUWR1< .?cMXtuV˿ӥgެ`χ9I<aZc!pYhyGY2_R7YS)Y'0-U2}TOY9 HrݸnJEķK o9ԠQ+X3bL^NmXT0e+py ȋO>dR(z_W -E5~xFe9$p$KsmQTӜz/NjOFIPYbx:gOYO6dɝV)r'_Z-wIK} 7~cKj'ڇ yS@t'{Jm?"h{˚z)ۨ[Ć EsK>]<Pu-O"ָ֟m_4~[{ZphmKi}niL ?[\Ƭ4aIcvo+b+Ak9Wh=ŵq#K88+ID;BI}V?筲@IkYC;rh!LCRowW[őruQ972yqư2t0sWݵ *% fҚ@=xk0{зM˞Cw &xꬾ <@Se4a֝k1jc11fi3%ѰDb4ZM-`}JӚ[W 7 +VtbcXd cЧ5Y0z}hʖUY#㹓as.IO†]w=tz}+\ₒ:2dhE 8ѓ?1ŏ-3l&_1G_^1F9B3D*#nGa]r.9^M޵01CW+aCyARe{LbeXl[;_@1RSU X)HeccBy| PYXM5I6'yǓ#!m^.t~̨LW>9èW "#`P{Lt 56v ZWX5GN16YiS=z&80sW/TpYBŠM7 Jm>nsM/K Mz#mC+zv)7jYب}2`\ڋ|&E,O:3 \i~&9H҄Ct">!jF(z:z jҵB5#9NƧ2:L&mV_:rbE#<*S@@ wXˊ8@VpI%@P ׉ѤW 3JqH͂-n6`ͰtzLݵ5B%T!` Y@}9hʛ~(`˾*akB:Y(\)BQ#e58fU`x|&~ؠl-vPMBV_$7BJfρ7X:T 2>>Tr.%q_@-մIwfe?';gmlI1Y $%(J =\5{,;ƪRA z6,fxE/E}\ٮz]Ch= ]1a`]<U5n 7ۛe8A=:˻k58_$ů6mv,z:B_9NOף/>0] /V4i &&;h'd~b)NLiӳnYL'׸/S҇Qƥ7ǟ`f{tn13&E/7So6ЖN%^XW'%@jO^ԠCqg6|[NTMWWE|&qdAV0's7?N:?N=q`rwl Xkcy>[-W~Yl.ߋi旳@ 9wz^:5p\UN?!aոYd[m7AA1./j}*n=_,nÈ$ n0EMl8*$qQ4ҢCQݯd!JT iݸ Kܹ#9b-%ly?RS4ڂ럌[ɱ6)zG_3u8M])!2-C_I@Kh SAre=P&؎f= * }'#2>]oxϟ?P<vgW4pQo!:-TW8D7kR1?^`b2_^?xG.4|].4B1ie($Fkܖ%W]0VLCFCH>8_Ú~>LBVJ̮6I*P_OCjߐOM!2WlC +V,^*g^{D{@kc3K=#uaFȳ9f=aygc"yP)C%Qk:*9DmJI?")%\{ \K$ˇiH2*sy< "cS5 ~K܋lM3T%rհYo{WrKCH۔5w*viyLHXFŽRXМ8d?ՂHu]Q "a@3wdICZS=$9D aUŏ&Q+p!_}WwyyI_Lq}~n`,:9%C>5}&Nol0դOKcل6,c\oK&4*2>|jQ0̣"g]w)41Del*"VHqlTnMȸin*jDvZ&AVmzmaHma*7S5JD> stream HW]sl[\>lɘ IM꾹AF6ׯkDvDR?$sz# 3FQb v~Mt^>>#<AYk V"0~{&r(}̢ZJk6K_}\dv=Õdz~S$*cbr7͐' /h_=wF QR9R:`R(1AdMk'4höiqyO#m7Z oXzӔX|З|OoQ1CG% D @o֖~sj/$9=`ÅFKyeNcឳ "Ȇo@O'jT>ݺdw Ͱ꽹lA3wa9Cԅ}EpmIz-2ĻwZ)?,{ߘ xjz*DV]6{*\(`4bSWʼn@>*>=3Sa)"ڲVabw"iBt|N!j`EhpPDTA k6=Y[4kݳCkEK?&yhk /B_~35sݬ]BoSZv sɌ61?ACEIHՆ1kL]p i40;=yIܘRI"cv>7Цrf Qm ƅ6#"d&zME`ݳ>[\0ErJ1g'PDP%ڃ+Ql8GGP3{=: C^l>s6 ^8&QEUi^M;*սJjJ39!xl7=; uKU@RR')MIQ\h@oe}ۤq9gabt 'Bd_y î(4HwIy=N0]yEC YվV2sd'h0ZCI-;BbN 4HZx?=~H k57%rd̅#H Jmkoh%ϯ| S\ 0] ~Wi&'D.Y9+یv;& <:D—*yz7H`D hgUJL&H :+ka]x`3"bYA`G&`ݳ>[1PO ^Tg[rIQ\hL(@?z"b?xۤA!رܟ'Dm=N0]zUաy,_(]$zLd8Zlڠx:nN,ͲiZUx9z39g-6dFI٦"/l)<}M^t@(8Tނ/SѶ$.j5!*mw?"D֠_J/֠f1FD1rv5Y f-2˨@w݀16uiOP"[2X>}S_)Z\$71FH~gz*~zSOMipl"PjfCd0oFƵYc}!{ĵ쏥{߀%q̙쉤D{p%C3ĨHć}l"iCk<ǀQICMIOHۛ0>Edsi%~sP:R3, w2G@5 櫇BAUrP- "U:Q-PAi?$Q^*U9!F׼^:ا.ߺl*ҺBbf}ǻa|pצAd1l. oQJSE**`O60uCD+{ib̐Q5}M(\in#ɑAFkɜohb`k0 9T'<&M;E~^v|C{Lx7 Mu%"%x0֥D*aBSYo$X* MFClFL&،XV]&0EϥcBD&%k&nd!1^z.7h,<"gEoqP۔d~N;PjҠGls 7^784(Y"9Rĺ4{H許rR5 P%ڃ+ KCEQ;24(~, A 4i:T`th{ȖU,-ҧP0FfCteOJ>}*q΅b,pZYz?RG4P1 ol̂WgGk\o:B6IFћܜa'Iwp\Q#'ݗqţϋv~qzpg:]?_5BCkvM w03δ$$ːkMX=ˎJ+M4TGJ+M4tJ`iDCxGysOǘji֙љƃCPuT1IgRLɭm6q+ 4E7Yj(Pr4|3j-(- FHiO &ui6Ə|N +OI-z,pZmH>2v 4xk:z\ &YBT-jg޶>h]hK )C֟*fiK[߃_Ldʒ?&  m K}e!tiiK]S:Ćl{\)S8푌D՛+20b2N%,O=3 o1 XOXKXG҅-jڜ ){K endstream endobj 72 0 obj 3581 endobj 73 0 obj << /Filter [ /FlateDecode ] /Length 74 0 R >> stream HWnH_Hev&Ad0fXDYI-E%OuWQˌFTK]9U̞mqmsn&xV'mY?jUM];kUW.2x\b\yw{װ=Z.j^|Z4uYwg>/˸g{V|(櫸DdO_j7>Nz_WZa]ּuѸ7PPgUWخOn[*%CZ'ҹb}.m[iyL"?!!~~,"K$Mr@ҋHیeDUX:K!ҏw0e=?t!Nrw;YY]yN;}2jE[;-weϺʚ?qwҬ ,:icڊV{f?~:~_/" #4U`zAgGgW|ˎъ>,{hzw?_Leepo#ϵf2sڳ2]1|7rfse5ܘljP-pɕC#92 hpZX{{M< lSઁ7^y<\˜ȕhևCltFEkҸP̅u2Mx9sVaV$_B-s+%cJ|ic-,`:5B  m**9^+dKRʯ`^ 4kAŵ"7BSNeq!:d~+ 者:XZ Z(PٿZ(5(f + Ap@%f pΥo+8VC)R ;B%q?nRX#hVD@=ڝc~0Z4TH\d4Nk2j.,j{nI25Q@hyQ E t@)$ŵF1J1,{t(w-f 4 Ga2(ohllc]_/Hw FFadAru:X8,d`:d@q0UxʠeB@;%],b%U\e^@z"|H[WpJ!a@u{  FɜukAFU&<rt K ' j $lFe7fo )l<@,RZ= fk ql& Xn;z mJs{ Kb Az.A$l@"NP$XyM@>BshJrlV~9jv tkFD2ŨT,o2kr nBR$(I}V(8\ DT:!] B L4PJܨ$CA#)[:L:No(} bZFJ "~"|!!;RًJꕢ8He_i,5f0r))G6ǐLǹB}FrN})e(d&J̟SJz A5E?L{'*PY H4 -L}E!P3>R@ҎrT?>PR?C{LUYK é" 8N#r=@,2>0Recr$:F<)hPwbABYS4Ǫ'J)IDaL4k1LE~TP;wXC;'JS׭3# 8 O_4Z*a{ zJouc0~Z6J(zH@uNSf2`ICn:l8ԅ"ch2@ZV& :-q0(b^)\@Ո?պ$b ~I${20X5X2Uϑ0%vw_VUZK~D9jUe*K ='e%UkZ SZ}^oPH2YZHcX213}^CJ2u/HH,1+]'!Q{. "&ey-Sk%|nN{MVL1,zmT#|mi fjbc3fQJUIV}CtEiDJhMN2}ȱ Be6d51ѥ9}%ɕU艴<GON]no.>-!t-{jɋn=Yczk'T=4Yϑr#֪.׳=&tb.:ǜ[B{6p)H%`Ǘ`TRBN>esvCSSa\c*࿛bd! AJjMZ<pk^lԥ.U'^ >2LTU &H6 aú*;! ɍjױA5bbp6vM|Nٜdu}Gp8F!6@J }Nc -oՈBR7ڨ\>[GԃăQڧK*ɇL<)3ACϦ9IӒ磄F ܰ(ϑ=\鶩t/ǠĜD5S΀B!Üfq2bOIR9YFڇ!jQw)!p^ـup*ϩ"!%:Y+ Ns[60_D OQ_O}<-wF5 IDЅ!?d2QZRt!0 BfBS o5Ze:a$N Ɖ'YdR8uw@%R =7RP:EDkP\ul%9ɀ J3/lU& &*;Kz.U4Sݠ2QyArf[ێ(sTꤕ dl2ԥg_k,̌*jeVS0䬌HēzR8G5 Q#17R+dvᘠu;b` R&!nƛY-DW]c#7L gYb'~sk0..A=@ߍ݂jU e^C1Il+dFO%\Cł֐ PusТKӡj*q+оƂk4cəa c]N<Մpw3/tdР?22hp ʪF9\WAû׾^[ΘnazWI>29ނtthwWKkSRH%_k'%U͠Z.ICѱ#j 8JȔRzt?j򪼽^7X,Nѕb]zyQZvK '΅2nY`!!wx[q&P;oo5߇9i?j]:F@6eWR&N a4_ <+^PGV<:i.?4 J *OޚvYme5j9r1}4Us`S~g&U-YzUeC>'%[*CR?9v#{qicbdyr|vv}~~{AKOo{<,0:X`+R o0y-[`lZB5._2PK]-N Pnr] I`v!soAf]*ml <T z]ublG@Ƭ]h^A~ P IhBUv1(m4 dB-NaBkZg +Uh^Us*/]|<{y_~x&?gå.:tq{ۻU9qZr6TaGр}f#EkPć'}"Π¶0./}C;Tvڝ׫WϞbܞ5=}syI-8@s?Ag]=}____o},UIeM̩<¼--> u.l SL݂RݬŨi*hpޔCٜoXj|l `q$ L dlzQz|XE[YP\,H0 vrNǦpAJ/:׍8:T%#HVhmaRidtp*> !Hnv]ԫ_ֻDQ]bf|jCPeiǼ̀f܇H>%.Ոކu׆e PFεAM#ϛ]WA:x}"ǮqmkVb}p_LLJ1>xٯ&ь8cl iG;U}M1G+ d gȎ0-W Kِ)#hX5k{V]d7XSsb =14L11of +?yQj1'Llxy';| @̅sKIrM NPA(k5vaY4pH̷! v>'f "se4L1࠳Δ (갧3o}, qY(-.F)SR.)P"dE:!3*]3m gt-as oeq=j:Z2tfٲѩdQ=f?ʾ Fb0ן*H m &M%ZƨH^&0h.G3)(>hUs~0y1/$l2:`$4e4y^%VM. Je%mv6'?N"Fy>]4N%vx=@9U9vMUhJX 5T?x5MDjL214Zvw-HogcT%;}$b΄ TZUwtOBCV =5#FʽDE{&!%[rE^P#oTᕹ9]hWۙUPRx]=5wKEYik`S*S BmM2Flt1E.Vij,ȋ4;j;Z22ZeX῱-*Bi-X:QD6r9NE y<6m (!VaМ2U `lgZU:XXՁuɳTlc|ftdY(UgI hbzǽ-vI9.F`۬H3HL]4R%vx=@YMcUn &1w}*v+%IS MH(Ad`z\f;x..3+zG3i%WSKT-uLvboz?Un0k_0 "CۊA!-;Y;]@=v?mLa']4N,t$g +lAU˨8i TO(N'hg<$+]G0i{%e%szԤrLkihTcqLDI䔂ƪC {[lBtcSPqRp]m<>sx|çK@Om_xݯo]{_?MY>So9kWy ŏ|"oOm/u/wu/uK,C/x H|<)o`r]y,>n|.~NMaW7lO:y#ϻax#07fdm? !߆iЊ&x^i /Xɲnhti$gK]3ArVٞx}ҋ@~U(^${ n@d("EB88gtv}}}u8v-.ZNtؼ^䕜RHfjQp}II'"ڃmߎE@Ũ?egd:S%UKꓴ)Ӈ$Iw8ehi=ڻՋO<տ~}N7>~-~^~[7+[^,pS;~/7ھ~^{?_oU@L}'Iq4[YDŽ-Pj(_^*9kDgꝂBնWumzեyB o| Ul0IT@ v&~ 5yBYw8v4a!zԸ\+ ɾYhn ` m4U) ;wL T/PpϠ}R-m;K<3F.-Qf{'tK#E!x2Yx+6SKR$ SsgWwt00sQXO[fAN-5d03'jo7 idү4yU#fH]&%wx}-!%>rl,XrK_A(B~~#ǃ;\C$j$mǖ87[3u- CQ_$f.V5ت+;KFYK fvyj34֚N2.N$\ xcߗ+:8EvCe덞.-#FGn9 ߿O-ӒrK2J:|S5ݒtA[d%\&7#XZ&8ω5sl5:lq6gB9lsø΁-QwD?ipf[d BV[ΗmGudB!9FC+X~VR73;)w!nmLJ % n lWݪW|ys#$7aZ "$H< dh[]1|kuwU`Ose]Xsf,WϝكHYK7ȶIh( х@k~-SޞÚ}{õ7D]*ѭރy3 . ^l JiDfv'v4挖29dnfV4Yω6uӛ9a`rRuu5#Ϛ/?ʯ&hn3<\o Ljn+%vFWUȭ +pnV%) zuysgeS5r<'=G&j8~Ћ-*GM91 [Q,{ O6WƨCcҋųfj`1cSTWioaI[>A谺lFjZb8iᰒNz[*xj ¸k<u$Qӂف4F;N^ys4rrAa [=R&)~@lײп>rUL, `m=)h-<?(6rK?_O,35Bv ˀTV62YGPfoM_zV+Sߞcpj>rv.Gt>_oǿ{?(ٯwCyOyȖ [4i -~_2^~˷n I_C@p9(ve70X3ԙfK(NW @b\%칃)(8,t=cxRSfA55ly@OR)C'@Ϟet/ hMκvme(ea~:[m} q !:s)oGz:g~(e*"1PTHXd͇(@g2AmFu;bڰ橲nꪝ^9ƘGK5< p;lP})a}3~ Xж{lȻXjӇ7荣\-9kwgG>5^TT;͉'4J<X=~4V:syӑZ5gUKqU@K{.dnmGC|Z>҈T`]iؗ K85}Z$`;?^B<ʨEOa, ֖蕇ͅj[5w蠴K< ?7 lag ,bww\MA\<^=[{*m"C%7E /sś/*5A>wڵhsj7Z=Iɪ3N `*JDŽjBSL*aPۉ5ɤx;} X\YK>uS]?zZXjETv?UzN!N `=[ 'r3'2F%L\2~/(Zu\'vCjGPUtMVuStLEޫc }j!T,NzH*yU m~ZTuC>|NQJ>ҧMʉ XOM$q΋O]=*JVc eqj*=W YB2!yœ̲֐N(HʟBڶzoU*-AXP ;jRkJO7{*VO%֍{?κľ|Ԓ> cb P}ȿP_<126B~ej~bYjaKQiğ=Ha6[nW-S-X^m#M2rJ5[&+EjҞZz;֜P8mƦ(TjYSY&Є'kIQ {|@Ψ^#qz$[܅j9VƔ]9`̈7çF2躇OI3%z 99*4FGOm1&}w vcEz|XOd\wpXؒ @G91kW&x>cx]{Gwe%S)]ﲨpXOJ zn(̠FL#!G4mڠvwN` ν&?B Q~=phSj5j&XKiPzA gq{ `SP >kUu3DUqCm f4QJM馐.+uC>G<bgf4Dmp /Z% :E=r[H%#v 7ELCs %{x%.ZVgq "u1蒾;}/'Jpbf0%^f8g%qj IF2*A"9m-ߎ1sKU ȧx>FL"&wI[i]cҩI8gA\s,}mi7u@Mǧ(f@*f۩T_r_iLUnU=+FI( \@V,= Ǥ51յV3&jθ7 (5jhIzt/Ica gTZTJ\)?z4^Y٫P/ >Si^)+OC#~G规l"<|Q"?늤3Se/׾؊ArXYշuj/Qyڭ_9WYF䛴1zPc'LZorRZLW0[^@y寖3Aa슟"ӫ0Sn36gfN"wK7n3oBGLf嵺Mo,K`^؅%?rrx_[6[E{seR}V{5+m|6]67[ls_=rmͶv yrygSY"o.ClvEґ>2aRH4!Fdwês9YWiyOBgdXUvgx|/?~|?}/Oz_􏿾˟OџMs/@# z-Jwoڋu~Jo"`pmImM sΨY#Ma1p294K+ /g]B ;WӤW!/gr!Eb斣Zqa5]_$&) (uܩ6论+cș7zȫٰԌ )k%hqr/#K,uqEگȣ9zq]I9 )`n*H̃WueF\Y2\eNF׋ h<À K8p,v)uJR1\/Wc\~h^@v0H.w=`a%PҍsR F"{Ah F+H#E(RģmU8:'G4ĠI7){;PƷC%p?&}J4#[jaٔ.Mu>zGv3$H;Jȕ@xf:%>[avTOM%M!= /||?N4m -[4(ezL<zTë3=|o4y=OW7oc d00;,ۋAl %!(BA$w ;quGo[$眜$M&ǻ[Ϻgk4=>Vt[aKt uJ`?;]'M|0Nv|@/]>y2!ü:4ӯvjџ }O  y/e _ܠTl`^RNC!U!2o6Bt*tOy't)jJIhPƱr&n䭨~-`vv~)<5۱_T5Z e&0oߝ2#Ğ>л}w!dq̓dԗHItc@ K{zA]%D%&Rܠ}*I=(wT!mDiurRS f-,/|ؖ>8nUmXQE5?Ās{0h9'U#xgS/cRPA] J6FpE)3ἶk=eiD{(=F]=|#6>A$ZBtE){Ʉ>M)} Qs{Mvn4X7MwhE՘IKwɠ|Q*k?H2k@o-Ӷq@ļ>'A8=KLzȅR h$HyWvۇe5V6%`<6#_6xw$8ޟ 鰎17 ɲ w\"TrȶNͦGؖgI-~7^nHR-RC,>Z5m7'kn@{ `Y" `+1G%ԍI—NOU=8{/t;A0on՞~@A]?ꠐ,On99ߥa/6 +'ض\GL:Vq;Rǻ@/G d@XV&ʱ};W=!8ۀ%&h*[𜧦%ڪ֔zTN Q]܋џ9a+=ƪ)ga,S}#/SlV`hl65e|)@hwFT} N.7Gkx1o{b?aW t ~7h#yVAn< 7^+1yX|Kx l )MWUsVvSp1OpchT\% t^'f9` _e}xwJ\Ulҋ`5)DVZ**دNWDɶ5[oAfY6 \E2r"Z?R1g^-TN崫B>f/}we (.9`1(70Z5S@A5fz<`K3,DZ+m?9s@ 2e/?l(0˳. UtRr QuUOߴ>}7YW 5aRS ѹM[3u*8 (`z oZӻ;KсY%_ FG#7 A?p;RT)̽U"Ĩ0zO7TQS蠯_} `ǟ!a.5?[of5~t%Stm/wI dWw Ɣo=h0؃sD@խOԜL,!&OZo"!@yJ*c Sk&bV[AI“'5gMLi)g"z/^tWRx㋦<'WU&:/tcksKe^czOgj8pBrBF_^)+(vKev⧗UT!\$4[m~;sxT j'5UR8闘n%du/#h*U@&[,pz, C+ӝFOV0c8c|$]#)r}At\ Nޛs؈#WX"iHNZ>owɁ< u_vu'>аl :wXNp~j]X3a ZPIWj!mb>ᬲPbIHwGb*;J+~. )+}c[*3ʤ:OllY8VFAs\9#6p3KEy,rȺ Wg] ,DacPMN4IkLrBt)EKE>]s;&@^IҦ8Y#8x۰eO~i~'ޢ3-p'6XS ܶޚ >̙ꦂ5r=~~Lzqz08%5=#* :^.&jG/<{:Ӥ t E^4]e?62tJE ۠θp}o$5U+'t,!k8uZ%4R$8M(ۘ6]v %Jl1SV#|s#re4wݬbܠF)8֪;bЅ⮻hޮMÐ$68/ 78teׇ:|]{cSb E.?U0Aڊ0C^fml&W]%I0E$84%SWUxyD}9)@}<z-ӟw=5'?04xt8}6}{.Wq~(Β2 ?gqR}(-fg"Po=ie /mǐ&2:vmj_|L]B%^>dq$ -FJE+3k*Mƽ%+8E*W]e H$ܡp' 8O㦠ɗ*W:WuKK'DpR(já[I-A역7zVؤE-[/@n]`y"ɈoLMv On-~E˷T%T%8N!]΀ '@ Sr endstream endobj 74 0 obj 17900 endobj 75 0 obj << /Filter [ /FlateDecode ] /Length 76 0 R >> stream HdWˑ `s%DIU9go vafs}¦HX_=쑘yx9>>8ɓR/IG ɳȊ fw oM:u`:x3 Uv?s\LZg>1"/8-<kWy3Vc"ha1G @nE%:~F_1p-bd9wΊOMRǗye&. 8}| Z8VՆnJP[4/V6~X׿k@WT4/sP4ǮNddC8Y-Pr%xfY+Gu,0Cwߟ“["RʛT'ϐkӀ? NS N˪(짔M]9yv3sb> L}ůͳݔQ DP(ٞMvߞ'+o+(?cNn^>g3 bLc5S0l-] 8x]eur2icٮ @8_4uF%vO~I4yf`,Ѩkfu_u@kNG]gE[C%? ~~-#chgU?#'"m #qFd%090@s3ۂQ `]Wqs zM/JŢJإ;=#!n/1VL̊bc̼Ir@ '1 9ގP}[90AMVil .9f-X.ˁۥY#s?fգmYk -8l4jRz4}s*} 16 *0Duss Е1""::C VAox5^!wypQ< ො<#s }W T T d3qrZC}<|4~v }u?kx vj֓`:[?gk ir<-kP|1GR{;wOK`^ɲ:Ay[ \Ug+!tDNJv(Ӹ^B){qƴOeg ;[\8T>x=E"JWgN?Y`_z ,%atS?Uk>棣dF, ^ePcG,B?⡗+އ:ƦD&ɣvi1[B1~[]_`w'eA8pF{ ߔ%Cʜ-_m_M1gqmbg.e'sg6% Er>qcfFlb4b,l44zj=pt"#0Վ`iRq"*r Ǽ=;ZNy{i ||ީ;xN7@л`9*nS4'+zrՠx >cl?W&y@֯0LzYߏnՇN,bkz ,io=p.bKsc=ӷ_-fdP=1IVݥs:312Q.wS 6 [&gU|#IexE8G`J*f%W| dg8C.xw nRz0jרS+yQ"ۃbV@2G&1jx(HSou620tFuYk{` 5@jrsOֱ2  m'aŚ3s'%pok#>ӰB;h%}<[iի"Te!`6("hR1o%Gqg[Cw|.@sJZ Bapɭk g}LGԂx>J8jT8\og#k8(S.饹^NM{[{] @)<:l 8诊RttQγӽ;OQUheߢ9fW>HDUsEMt]ancq}P_{=W"G#xw# f<ji$땜akX!ڪX v[+T@9D‹~MˬkukpվҪ.8HP!W.T\F*M"ũ{[}.p +|\ ][m\'5 p}VMLcpzm+:=l&xag.Ǵ? sk*cw@v{ |uAJkp# # zέ5o;=Nv$y: ւ)pi(bY~۵U]'#IȎ jx/XKdp- @؍"!b(/ tN$)v6Ҵ&--AݓCMeIw")k0[] }Z:f ڼCh\2XB'l[o)u灦wNvmQn{ZU[ oI8T#U ݊mbm\۽uS&ޢ%b *b`MI VVpQA3`jBWIi*ZH4<]c^G]ϧ󕭌oLYgzbߔhLYX$/i=?aQD6aD*Ωu`gY M6ytbׯ;SlD}G-߱F =eJZieiqhΨRa>F1H>X% >F1 J+~RI^sꗭż G[J7JGwnXRµ!YV лpm"&g^|Ƴ%ǬwfjMOU\dpçEn4<- SЖzhI2 \S7a :yS̲)`N> M`/i_=x }^gCKL!#%'zȊ/߀||>=?޽|o?{ǿ|+_o~y;X*tY-p`,?Mso?> G 'n8!w/4E{y-©'U7x\2h{Eƽe~/cMFD^L} gvw)+Z5k>pmUU^my^vNܓ:wI^@tJ&%!qm>Pay]jJ4.Ey֠+VIVVA=EK? uS6w :VSOG#k E& K?6IlW3&@ClS=WQU*a,հ~ލK#X􃣼 NWb.J[s1rS$)WۘkZA`Zʕ؟A}C\xC k &f1nPyh .me*sWt]͸0l&,aeE!;쒣YRKԙ<3L_)+piz캅h2f-Ȋ[//(NiNCk8E=Ӥ7}ﮈy^zx鑇@ Zzr\ Oiм?u:8$e<;rgb9L&:\IlabMWe#Y.y~B]~Fl1Wzޝ5J=浖%sjx592A`$Q(ZyPVUDXt]=`ϣQ} UwQUݫ4]i`V?YbpAFjJ}2zDS :::DZ 6h?uԊgM?bXq `%r%&noB.ziDֹb'ةa8qʡ*ȩlxnw)Lc!y5S_觲;㔪K!,PKcg3&8;=0OfA|ɐ$gCˆQ ر98s_r_0 3.R'Tqр;bϟs k1jSzamsxa.Ru)wO6i}݀U\yQb@9CuSJ[5DF f=y8FI:VzzU';|7HIU c{":<>Wn_uf &!ҎLSc5rS `2iN+UPH~mgXC]'fژdA`-W.N7&ėYCtiFEGCsi!sRy?\̉sAHIe[V_caM|c7A0 kW~9lTmZliiGpr?'=h0stYɅJ$LVN><7>xE-vɛ'w/^޳go~ş߿GJ~o(v\\#^x&pn>!Ɂ@m3 ʵLۮո9.n}R([u|ɲ Z0G;޲8d[vAH4ʰ{ ~Ai("DM4o -Sj09㝵U$_9yؘ! TDe^ĂadȒjiզұj5h912&Gk׈0W7A.AqAS}fn-yR)&XiD兡<*I3}ys[G+'*Lb̈RɇF͉@X\YuqFT)jl"B⨾Th7߃e4}Flí[' qpᙻ: O7N;ū}.f/7\>@;HVAPϋm% X )Yj{et_0kXFT* 2aS=Ǟ\ m!*8\վ PK H6|o]뽳IA ,8ZN:|J uG3mMWT6\ @ТKՉ6uVf RL'5IV3UpNKZ<3bC+hTeUmG,/El&0=iǤH+Tz -:M/z_ДrAV˗$Ȭd *N/:H5@)ښ`* [}"# lGe7ud5]Lk*H\ҝA"Bpiz8Pf\Qɔh#X\hj DZGBGJ|itA0bXPcyv(IuΪ!Z? >nsHJbjQ1cGb0͜v0eKE`i&-AA%YgtxQDfRHJTK;kkM_) y*8cbof5Or Hqbi@Uh.A"8%4/DzJZrNEv)B FhY`0KyU`.u͵a&F`_<. Thiu1[]CuՑ DC՟ KVbMzzM40L!+6<<v7P5՟C's8.Ds[mC4e/x]{`ƳDǩ{uk& W禦 گXrmJ 9-ove AiyQeX(ޏKN6݀vȍΪX)8?fst nc4"@QL.ݏ'j3.xTO/{YYlXxXw|p[+mY,].l=_AP7FQFR±`຃zoH]_ F/,3ӊ:?ͳ]½ n/JyEK&mѼ V_W8e?YXB,s_UArO;腑l+m,oap,69˃7^:|:^ao^m=\~Ugz ^lѩS˥ e©, r7"Fd6ᙲpYL6 R5hpQ{YEt,_*AU^<%\̺DeO7G/N.,'o.ήnp9@d@h>JKQJ`<:TS TF" 'f_1d+(4ؽp xE0=m el#Gw}-L)[yݶ Nn/~˃LJOE]_WWix޲W36V%}v⾮DgP()K2(5P[4Dn{9U)O}2K!:aEѻE0Hb5]/ycf b{ 8GU!Ae9U`z@dHc˞۰Jm1*Am9V|7_§V/%MJ6j4`XXq= ?(X&Gw}oCI kC}rp@%#2ggԖs5PMѤԋS[mL1A.2 $V66jr$lm\~Kco'Mrhߠ4R- 3籶$)zT!E2]jfct跘SVi^>K %VJe2ӕ$5'3 /׻/R K:eD^=!")A`En3` .dT! uX320{қGw|'֢[l8n?A)S䠶%슺Plͦu.pcY  M1okZިAP)c>ƒA(8ˤj ◫B(FJ8fTSmI}q*LUj2QO +==]̡BadizʦIBmi$fM#BkKnU)Q9j :Si٨/ܙ$Mtu3Vo%Hn{ȝxZS{No X$Wlb3_>՟+×Յc O7[n ;G;| m?cw ug҆RΛvmL[tv)w^K-9/U#WqDydKtUW,/$% !Z,p =;;d[am io n{_% ? F2o{@"%AV)p͆"=a/Y>Gώb0Xa^NJ0mP`~,`WUv\jUϸ֣zT g[K}Q zE(;4ݥ(Sǭ`/P( w:TY8z;,V*x5W8k/hV訑 1Ϣ"Ÿ1\񠙙ZuiZ<9˖j3g&LW,4%iV).j`3aCMAظ0hi4$kv>;\hށU-> %aKB (Rr\%}8q%eVT-Gx{aM.+Gev\يǔs i~6#IL\-DEGJPs/LTIh)A0d9bJD-+ѮOP61{!ԝ rՆQ~IbfixÌ& #lP^Gq>=q&vﯟ<_Z_4zPnힽ* JA'ڬk٫{rBu0|DY7-¡Ѥ;H\!6⵰gZE(95חj.9%^:dF&2y5(zbnBKL|mqtIcvX$|^j&")Rs, O> Eb]k,&ZoΏ>&3ak;7z,f|dϤI Ż'CRkZ%d؈M@$.J2d`sr| >[EKڞ~Wo>Ozӧ|x7_ͻÏ_>'_CUk% a֣Rh˾TORK9T`A…e{*TiMe9Zxxx_겔{sO{)Vz)D\AXl7@л0ˋ+{qZYX ]y4dASh&ebms>R/N)ouӟ#_~;O~N{ƒnus=O8ϭ9Vm[FenmP=4?~tOψɃzgHpIl'6I7Zf~q"պhasm\(8^ ^`@} kccBZy+i[ !H.,idw?fڤ) ^p!BF Zr+AAcqweU $& d^xV;2d:$6IQ_iP@[JL *TbQjh_%Olz i[U9[ltb_r ģ t I ˆ@ FΈ ݾ^YSKȹhBdcuBoc20x#/oԢmGebX-"]fV DǺa:w)?}ȖjS)X+<؟8ks_88].u R(]IgW qpE=cn=QAgT885oF (f9UӲI Mbdߠ]P0OfE%B;5 )&4Bq=u{}DȕC{āV&`KO*EzTD<4*sShZ}D1B+Z6AQc<@*4U ]ӱijU/,B$ Pv 4kIP '4JVP{b*60/o4}% L7lm}}单s|65\6wz8VRD1m͝BF R 4Nx ̙OW5B@-:XmGdǑ:ÑCrBSNc 5>BҪ pP{'TOΊE`/3%G6DN 5)<+z#L X EgSo1{F˞}Dn>zJqIB&(e,bu98ʛ2M79VtOpbj_ 4_l FP &SOe Y@RNkI%Ǣ:-V΋U8?4gIvPD~xp !l,PA3;u*Xz!1쏦ڕCr_Dؕx+= arKC.R-*7=֐ zwS J@ɺXa\k&+Y,7-H9iOOltH3Z)6zq*vvBŰ泊{hqfUه EVFDW>J! {$W²30 8 fT{/PR 2Ye!BzC*Eݫ0 cS."R!Bs{Ũ5~g tM qwNnlh-A 2)=Z!VAYȅHEp~䙎s?䴋w_s}a~.U[ e+T6n:|Ʃ|!ᲀW@h eͪ)B+78=Y 8؝ΦD 4WBٗ1<~nmV湩 G0?pMC,ٰ>+ 0aP(-Zm%-D5+c [q`GdF2l4*1\Ȅ|BHgoAhvP4*sBSO|\ښYP ¡ni'^%{j?|PxfЌڗ$KA2y&ʰF:;aq&L +ۧ B-Wڙ-F6dE\/H,k T|nMF, ы"p,wgB%vꥢ'j"ͤ4kia?%ky\S@x"e~VEFz,C|}P3௑4p-}f*XC y<꯽{6Avmΐ] Tl# R8C^Bu}65pr\fZ(]4˼nyUnKHpج:?dQzOs=1TUDyk7gzyqO)4;U]_SqF ASЮȲ(Ks%~p@Y!k4OTcd?T+ՄhA՝i%s9_@x2; ZuPp*!%ܴ$g09g&=FJ>=Bb^旛)nKCC\^L=4w~8JKR7gq˖O wQptfD aM,q”7}Л-> ٖ,R>g%S@q?s>daTiNFCg_RM8*g`xp0R$ ,] >ְ^GGrAW{*cxelcg($5Cclh)lCMdH>{/XvF9.д)X0ώCy(k3=dfȕWȕ`B@s~ ݌ZSP{ ];= !o,`$/ ʘ<A)Oo4V)ì}~6fFOŧQV^ԣOe`ᛋ(`Ϳ"h>: OYP,u"“C3ϼ۪U=DRMݼ^i ΩBE/@Gy+tvT;r[)ZF);X 6IlX 4)c%8.k˷]JA)Җt{Ȫ"pF5ύ6;95&>_v~&?d>[lDȗzPsڽNi@CQ釩 |;z*CiFr/5g]EqjWU@ |۾huWZ<3+0|뾟: ag$L c??rx׎ j}s{kjI51aEe%Fx|G7B@Z @7 f8mm6[2Hȧ@ߋ^?SzF).4fdYiLM2 PlD"ӃnPJgX>J*>i_pӗd Px׳::I Zzcq79K,FA-7yhCzA^(1h.2(7G̦SZDq^r~ r{!s^c8k? c=7L"YɄD9?ٽmOpOMF>B5ښ(/0[j+|퇠p>)4dW\N[GC=D:\]3i-C.J?zfR] ?;Y]:<}xR8%5T&\X@дi{;Pa:L?IV%2yP ;Fл<'dͪ'Me-+;Zl[ݸ DC@ iP=[@!GJlvJj[ƨ[u v̂9@NВAN6<ecݧKƸo\!HbƇ5: ww۴YdO4ECJfCAKȓ_S\3O6uFQ}+CsldF#mA"c^<./a{<:\gvq"(D3/Tȸ:hcC*oJCZVC"C⼧ԎU ic8/)c1xJUk}fB<+0Rk|lCgloR lGiߟ53].4dsh;G䘜3 <#\!2D  8{C.?m;#em;%VwE((Pq_}}zP}20HE|{3fwj߁=^wDUܧ)埸VE9(ڳ܁XDa|-{>H,lٕsgwEя:S}{dIoqPbcaZ@IKP/z9ƪ׋F :+ts.zѽg1eu=:`*BHpNllެ6'7ƩeŠ^| tSNCDkpn 6|-e<|t NXNn5w~ኼϝ9n=qtq d<SQВT#򈓠.e J1=vSڣ>i_*΄59y26s|K ӊX'Mz;&8J˧$쳞YVikpE#m~*$E,ŔLwVx,;LfeZt?7AՆc4b@R 9ji^' _Ek3jNC 2?PYރ Ea/cV"! zǣ-v+^ H>۩bqd ^{ZjX?1;䠨~7u(swZ1T͉ߋoP5 ءQU AXx̚lgQE_ w bMZ(?8O!ߨYH60;I0G<BSH5ѝsrYPEˋbo4* 1T20CrGy9mN{@ugȍ 5ﺇ2]k*mQIΨqbH:] >X_tsdޕRH? 56(lc /Xekϔ8!v[3H4h}/:yCdK j W;%}}`'E,ɦFB ֖tڋLZU鮾-iX!+ ;X6OGRKdL;[{\8xͨ磋8c< %5g3z aGxjdFW7[с|?=S k:|&=(ADO`$ ?IK_qY0}ִ"je6}gG]|'`~sk3i1X2yʍEGd~YRSkcΤr\A]Qu.3PD@o90-Aݛũ -ϠQ/NaC]_Ow~{+am c7 ]Vl|cds`;^ŒZye#7񬧆 3839{/Ht$'HW͞|=bwiL]W^sL!2p|ψD4^'Y4mz7<r)рW@hǟE@rA!-ël(Mgc=(-CF_J.y>Yg.krsϹr죭H;yWs?hA,qlpU#\jeΖ- k b/vzŕ`.S+We-?--$QE$j;em~$b򥰭̌s*뙶2+Ywǰt 1AZ<” g@bJk~YLa7:bM%LD.!0v޴JxP^@URd~p(7p:!bWތ⳧Hf\v<<lhzquS[ d ^2o]! x~4i4_9__}>'ʷd:t.wv%@Ifg~NE'gbx[83gj"`'*"twsnSI5d@n7_K%{:v.FA?9kWn] y1 =΅l׀ uQ# K29CrcY̞!"2:rIHg.S]@;:=ոg$G'&;~i'qOLcTS[+i5{!-M=3L)Rhe}1Mڌ^Sd⣦ DʎnajKt8wU9@+?VIv¦yO.vr,N?Q]~riW'fOOl0N?5X ֓^Z@6fuoJhU `)^, O ee>h^S~Ԫ=$e2L[Ad!uZxMTb gp2irQn^ cWk;Q6Pp Pdd 9H촔{K>ꗂ镪iX]u^L dL rW^$ װP@78;]f Љe UjZ\Bkظ8 3,uN+1WԭEZ-ۢ_(ek (^uAp̓b0*;Tm%W8t@#I8ZXg_߬Vtx+q!' h!' T@ S bO kφd5P_|[6AHYΙu,k4vS z7Wbr:@ݥ2ȣŹ\,2BI2QŸD:QH#R56 `k(c&0*^:ҍTPG&Mb PdTӐskvgL~$T^Wg[߅ؘF8B{U V""e- )@M\D8\fza`"#y.v݆4X6Ċ΋U^iGwp;|ӋO/_޿}/}~w?z; !Z7gR Y=?>Yw;xD~{cB}(9{$}4Ng/kH ax.# Dp],-/X`LW1lCv<&Fɹ8 U95:7'OGkv,C0`Fu @ѥ] 5>K˜ex_ȌX9E>eSnڎp-R'Jٳ7ݿU=湑Au:f54][Ȝz/CӌkRK:&n6TxɩH%bdc0ApͶdc"`VH1R:9ck_.^o^}v[Cοy7X ?o=_}Ƥz}'@hȰ$y/ &$hte\z2?9p%OR IQv趁Э`Vple-p]X݂Dz(n}fe5=Vv=~},pxp.wxx̐:8 I4RE҆P4MVI#\i(2=\]W3201K a 6P^/5Omwrma=A1ڥ\ .Q~}Vw댬3MN>잏O1N46ciLlgLa1Fvq~iPm,0HKc%ގ*ܖhe-eYW9ʨdQZ+p7Q[ioC!K Mk~lk`$2bd98A_NŦORۆZ:,h v~uhZwyEҜD[<&@+/g6/ 5z1V-hFMZK~ zn%\\1knTZj6Z_X4ɲZZ"$c82DYmEf9T~p7oŅl2VKP*!f )8r۟ TIp< Z:1xi$uNKl:~Fz&-Quk0*$ :"I7x>*[l'#(eUd[owc0H/`كz młAS; +o, /ʉHlj K*ZdqԚt:/Z `- endstream endobj 76 0 obj 22229 endobj 77 0 obj << /Filter [ /FlateDecode ] /Length 78 0 R >> stream HWko?_@J7{4釤DBZ*\,gv2!U0;;\/7϶O^^ǃVxi 0ٻMwc2>b>H`6}8)On9LѨCڮ?ɷFWo~nߟ_ruې?_>l/~#Os+oD:4#m%/!#|_ KooU Up΃ Tq>:/J %U0ro6{XpŁg8DlP1DQ{V93r,MA Zq-o^m,Q%NAYrYE2!>Ah_j ʻUR*Qo ߕq~tJ{׍UI.HbW5F9ʶ q+x!*]/0Chǽ2_:+(B,)y:2nD_Mf':l~Oh]DFTeX<`a#ysL@ڸ;IԱTI n'*j .'zUWF B̋Y3 VQGA"ϣcQn259c(~qܧ,'A[qE>"oMAS+%s9?A<=ѪM)+pʔN̸˨S)*~5L U}e0H5b2~wf Ѭ A~l*Hrjge e2pT +@reh$\nn[Y*Q 2*8SpaPP]p⦪`/*mU#}r~X3U{zNÌzj@/(4tOBAޟ?V (5J3QRao9Z)2' 1MeLFl_TNڞ,G+p 6 Iu҅&h*$ԟߠ;m2+7N&0*ZxEB(輄yX`r pY R $0r;Y7% #6QP/bv]:=טּO^ZXyg(]z2yxHsEvyk˸;l~Q:iYqb`4i64j [t·Rp35N O^\]<\ݞ gׯnٞz{~}yw߾x}E"O_6/Ow/7of;y.YCwŃEvgLbqGU6Rg~ou-Q[`#+yƬއWlD0pPۢ-7l*Bz:'1[{yޓWڽOKRe3#yY3S 1+а֜uSzGr]% eļa #K= }0Y+=4LS, %J( 4vjn3@O:z sE#f0MS$HRAٶLПuHE׆L,̘hEJvJ:IF.C *,J'&th.8G|%Pg0xÃAgTqCou 'HfcZ@,Z1XmLaFU茱ɤEN¯c:HNSY4FJcXP&gy4Fs Hsu\si04ٔPJCd=slщ֊EN§cщ:ǚL 1y!$PHsF\(R6WIl)q Իˀ#Xl=dc٢fHxZ;NXL>jVK[$S+܉;4['`1t؁x,z㾏6b ۢMA, sPLYdΣ_ PZ i*:`e}[ & o4(1T]H)}-0ƈ9@lwID$cljÊ7 u0Z_m*56[Czf%3!õ!#P]\UkWȰ? rp*+.$jWPGj`9slK[1N{Pׄs,;z Pe_S al :#E)kUeӢp}(Y¹|Gʢڏ73E 33ȠMPJ&3\Ŧܺɀ*LUhea?il JR84pdŠG`ېVsj/%嫺pܻmb]J] Y2@(}3I0=/ #JB UBTl wiGGsP@+@SĠZP\YVu"8#cSΖtRѻWz6)؇>$-Xzv1%gI=o~j^߆G?q@wbXQyPJaPyܛ,g:*P!F??xrp|r (dҭVJh;kS7.*,؈uֶLcx0AitvuA^.eTc] $ َ+%\dA\S"I nN|Z1Zx+0gV)Q `2p[k~'3g g!Ȥz-ϱ=d\ptG۫Sۀyd qϟ;JFQYp*qլlDP]kcn,-x)"xT߷l6&5iQE3%d$eݺۡp) C1{`2ϵ76<%Gx A1ҐϢf"VNݹU¥ۅXyyxr8dX&fn ?2oNwDf ^` zI, 0^u{;;# яgsʟƒ>+UMvLq$J\Y kqG@:OP @M8DKO2F'9Wd M=*uF"EIXicVmYW{EA@qr"f< ?%rOb|_w`ZL?_0s~>|gLqi쮴G9_Ōm@rC_TٸO HSE(#-|i줂;w\/d,ӭ]и3\ 7t vlm!GCx\8~/O>7~|˷!O}=}tkCXL障tD#>?Яvg{CzQX *m!,fQ`)$syU٘HRULK2Iz $8M2)z̤PQ$ \öZ*۩L\{i5dX uS2\J\Apʑ2$}ZjRX(x ]sZ"GuRPE̯$;>$=Eb*e=87u2%Ѩ鮱Mq+n7VX ݻ)³D`Kdh\/]{5z%Sm%VmUV]"pnMIym['+b2hЕ1 Ygq]o+Qa~p l ۟>,wl]u1XVU*>8vBQuT|"6,|\,_Y D؃%sA2 `讖Mo#!JdB6g0t&@<1d9u&d]$%%C?57sZd"pT+yZ@2Zmh,*T1"yZWvʔ.y`Tg(# !@]އhڬ( "$gv/l×.z"8C =i#mt"cWφoDT]*.$(Y Yϔ$DTe"m_3ޗWaFЛ5)aܬ16·4(RlzPj@luhMn@*3\35r^"Nd7 ]Y޹ӶJ<9= )8a/DDOj[TWeGaY-ŽG~/ȁŸB stߓsb5me)L8t;VZM3{&([T~4X[uΔ^b hDfKw\bk=(M!s@XI3N . Bl4W TC?喫OGǀs2x9ʿ>6֤YvC&C,fGݧ/JJcwIYj9|6ny{:4{18 PK";Ak4E;M" 3Bv2d2$n^yy)Lq~pj*nH0uPĵA7If4DVtvj-;~'r;! vɫ$g/57vƈ`mCh;( c pH}kzA#A-u*;uSV`³cm@nQJ'|fO@wž6ֆPZ`V8GCaNFwGhNAlR Bf'l +pSLJ_S|0u,ÆFeTs<تUt+t +hdew|+'fp4v14m?ހwX@~ P>Mjt"lk]]TX52%MNRERpRv+P5AkN߶$~5uI_*t+bNL՘CQM 1Kx_Јt1Ex $IqeӂV7\1G |Emu21 USxѾy1YzzJO:&5Xkxld*0e]οw@zOו>Tp>8 ̙]j)tyV9}\ #5Z9L7_8S^%$TD(f U&M9#LC#LW '0 iv;`W |B0 0xJmGw\aڹ-X5oD;>2b8>?ysnzQS&mߏk᷵Q5MXL4o޾~zBY?H`r |/łQ*0w1.T 'phm;5G=*I=x= Ǹ Ԛ>! . OG5TmȺ1@\ = hm+V`4Ԓ^ h̗ܴ*α\qVZsoO D+)v@ϹaE{z vW»-VRrXFS}”j(a;#6ͬ N'ns-k2,h_++fpKJt4rG{8%;9-wo_|yB_}7?|?_?_>/~ ./?ТGRqDGwn!1M3[B<)E?Wy;u)LʯHMEU ގ^ B*wib;Imv LPF"`[nS$r{!edTZS Ӟ TS6G&{6ٮv?e!K)d&(58N1y/ezYR'wKgWYUˡw bҕ0FȌ:wڅg:Uߎ!B +Eǜ9n9ׯv[&Fy|@2f~B]A筡0W;5WK2w,0Ks%.jU$Mpo}P(=`ÏS6^~O_^$~'~-7~yw?o}%އNC}>w݇C_x:?j{J#m e~9{ 0aMk2dxߧ^1Im;X; jC .܃rSԺTlLTMsIqԉT:VF֥!f-? ݔ8EE}`c `b2ĢSXnvoA_hjW"9Ӯ(˶ZE{"6TX8CR gۺSԩqFEm;z1=}X}ŠX#EZT :S? :*C4Ԝ 竹h,ߎ<ҏ HOKnnSkqu,@ |mSb +Y qNaT4!Hx3^K0ԣ+p(SPjG7Hմ5ߋ')zOR`4Gox,pF?iEu}B`tXOZE̓)VExmַBbMu?TCwk4lT:Ne6Y?4ɸ2YEIIʁ`!bܳ(Ezê^/f m͏'x{WPgZ-dL) B%\stа+2HHOtk \ 5RH \$3ihuv&{^&5R'G:IcПlrDn|J Ě<=*ozS\:z5[z[}m#_>g:OM]M?LN/2Ɜ4QC)N~kZH :ST{bt_g&B2Md]KsVI"a5[6>(i?v|M" }z4%Ɏ? V 1D}WbX6 v5YLXחEEs?S*hHq8.Yl_DPbu3jpq{%M$_ff&/E"C)o^[ԅWzǜɚɯ:ڲp evYҞ;E ʬ<\lA2Nz`XW{5Zrq[7 C %fյ4 uʕ袮`!SWΛjk1,X}x^w'Z*|W2)b:*C6(z*p)q5{Ϣ$ IHG$zEsypmwHZLIp;>'R~Ư5F&)ȓ8.0[܅%w w\ 1&CRQE7"c0`HH3T.GkN񇭱e3dJw&0:?ٻ{-'XvKC6m{qN˝WSٻG>>1>϶u5}%lKwL2ĨH]d=@3ZbB!!\ky'+@SҠ%j51#~ٮ=nyU*H:A4y}[L5/yO"<>JDM(X]:bW >!eDޝL[P5} `Ij2cdYuUdY̽?gn<-B4t$J,[n?+[`YA?V}mDm֖ڹ%jm{ȝk#(QIko"lM e;qX9 `UP@Q"עXLF1OvڷQ0ExMZpZBIIV%7\hwI3VP 'Tcoz⨻n$x9|)f,O\NY؆>3?HG+kŏ9I*,_ #zB *c PduL7%DPO'74Z-63@%L'uoև")tH`g:Rt,d)L)ؔ7Ia~nYЖN$U_۷W~ Ru&SXOlj> %R=kGg~8.55Ow|,2k:Kf=k7(8?N|K/pR ?L@ξT:*ȴvת*꫚V(e:ٮRK9QN%&N9Cc*邛YzYѪةHe0ӄwt29=ܞV? {ഊ^$#cXٮ/CyBwI#XW-^؈"z>t9+(nAP##U'pîAe+[ `؜_X0mX}7hҶq#b,g̨qPԷ5iT 푡{ lS2Nqxؚ[\Ww=0 H'8VvC5 R1ca'Љy9Zv:8$"+aRAVEH` E}Vz=ȕ[g~c=5!f]RŔ! @VrȔf&>b&^DHkҪ_[ R:\7Ӳsj/%~qIDǭeIEE 7ihT&FP=&9S 5V*'$ΐbFڒ5Qul'U(# ϑd4{18l*N(+kRELkR~t44.elc@@㙾gÐ,+2hzP$AAQ97Փt:S¼"S t Fg reV+Ll粼$M.JQ![V :Xy}`#%J3\-/ ]UA"Bz 8b80S&XiW/z0 r/BA`"x&% X(isJ2GNGh -o9tuŞ»RdD{I;wd Bug\bj͡: zQP>up9(0x p~k2&%ll"] r)>ǂއb<0A 4OzŚ&kl L-6+`P p e;a A΢:}r/m>fs/@ ʼn*prqԭ]I bٵ5t }Uءa($MrSqqa8X:LֱU lAt٦\L6xfJt^g! b}N -DO*)-IpPV40זGDdRIŨGw w6Tr @9rWoV#{H猩^}Ա4#}08G Eh DS͘n 8޸K!PW[B q˸ dVckHT0 ؋G量߽>|Oܾwq{O~y?߾??#m<{݀'_o_?}ooW-ۇG!Omy27fG`m~>'y?{y{eϠ=ԨF}v_@M/k E;57b4^>dLWruWm)fg&׉%Z]t4ϊfi3('ad˼&~Dp2/Ez0څ`4w8XX (ӏh>,Huz૰ß]"Yym!#1dzW0)>ԅDdlz8Dt15~# )[e(HTfZY+ ha5NR?ioqH-<@lQ|R !%߷_&E,_?"j}8"S}Q[=X^%Q{{ VtkST=}TϞŸ, @ b>m CY(2l]ciF`=ónV݃='&n@IKV2R>hz˕Tl6c3YbIw%4"- dB1Q5C_ ¯5t6t1X Z{JÞbF/`63o DiduTbФޯ $vU,!c{V16 8jn x3 \ZqN7N<+B=N40j%r/屝py}CbmK]98h+Up%ٓ- $F*r8HS~-$bB*!qMTGnIsp0R\jh=TONVULEVW*P,:wm%NXR5`ɏ#LQ17l;kHOxB :A`{;=GPޝ.t/}/S3q'8ξ+)NPZ+-lfR`y$b&twpIC!sԻimQ2=v'|gbIq̚[hz$CA5ߏGvA`dÏw|QU~\uAԔTaaCYS*̦%*xKx1,_a'oStRv͕AS!c%!#85Kt)TKtBGJzO]=u=.r#ljOWR+3WhC|* ĄfOb5F*H|͘>Is#՜X@ rsАe[\3"ڡLJ_ !7-a'r-aA+csv!$0{_ 1R]? *+:)g6F*9Lht@ VXKk峬H5n_OwGxʹL|?:VW: AG|%(r%{L*C9_(p~ L \r ک|{jnS vfKlF[زBrVC]&U9e:ɗ*ezHϸIN@+Tjs/̱f]O= *A8Jf 1 _b ʟrVlڹ3懻Lm? & gZ'@%3[J@8 "e$:mXt(+¸~c,=쮓WN`h' 45 rGc/O#9lz8l'q.-; j觑S:il42j9d=J Bvil.@c7Я ʳB`s4N\[p2{4 =42ޮG~u?=r(xT" "l4(\XI&[wi.]`g|1,|cfk|G M䗷7~۟^*̠Pt/s6Y?_|~cE-/1|ك3ӓ8嗺8o?_/7Y_tl bȑ9vv/R9H8gU;%M* ` EǞ(3J[wuV(%kQ^'Ov9:wZV7!waqvz ֝|al?սX}o~Ng&oTVw޻]y oڋsvégȜ5eG'c'Zkbyvy2GWIQr&ouWvƷZnd1JOMMOOڎ2Txtyjnbg?xZ]I1tQ CA1f b[!`9ZƼQyH vt\wC?o- XLMF1Tܳūj`+\w(66-&I_ Q|kpʆS6߾w`CUŇR*4ھkwb c fϗL3K{*+o3_Q1*,!J6fG̓}N (c{DAe.n{c9RF; &ɧqnb,ݓh䙌.[~K `4VwZpB˷NU.(.t L.Ot|飛+_|9$dȬd4F˜+6ÒjB++,$֦pVS+Zr);Yp/pFH8X0!-YFac_(&KVh@()(s,ؕQ=T6q(GQq1AU<ܡH ! y,M@Grw`bh أuA.mFKQP:R{FXȅ=G䩺\HwT=82p4Q)]F` HlcB7{zIH0=җX;ޤոU4;6ERgSt)%`P!Iv*!yB1lӶmt7?|{C?T\ L"+-#LUm_׃#>tN ^O9}%5D/֫V|~wn(AVȚ4P fގ 5 XԀJT[c̺"`*J>"cA ARacVϯB=E԰GTTIi>jB:<:>18چhH84|SHU-h3 Yk}@UDǷ!kA,'H0PZ`$&w E8rX"YNbZBl"b2KRt"Q9dO9ztbGc-Ϛ;ˉJ,v*8lID"G 6Mv+̓pm'(*lBC]5:+`W{o6=IJޖl@Gv] 'MEXtF INϾ#eUNd'Xg6#~wdžJ)"FS" ڂ.qٗF.U>*GG~t/0P_3#40p nKP ,QW`1:F C%t!`^숉شR43Ӥ\e~ Jldc6f : %nZ %+6Sahܔ\E:TPu#T-u~T?Z4fZ)AeC.)6idQѬXњ)8Qz(r3??hn%p]B͂"fkԂY%x )M+/QNLH`1qǪBrT%% \R$4<5rNfʂ>:=YY,]MUhZR CV$j0D=!iwXdF 1 TOCMhRI:F>T4S}U8ine0($wpw;=Kya&@Aۭ8$8^3ڲ,YV'. lSadl4U7xKwȩްOZP^8cϷAHGaq+.8[=1DŭHA!i倎8Xc\Ё~'..=lqgxMR97 g 0o`YP ѢdIP =I`_L#P/dBxQsƕ endstream endobj 78 0 obj 18657 endobj 79 0 obj << /Filter [ /FlateDecode ] /Length 80 0 R >> stream HW{sHUPNU5z vH6@|6Y(.5&"qrٯgFoɉu@V~=llۏubz);j#ʼnPwן2j u$f@IOhBp"zD>Kv:~`9C`-1=Y,'? I|^4= GWTUPwD )[>&arg Lv395$$M,:YD=˳A )qȯrWS\k1.TjjZ|Dqzٺ+|n7IKF )A/Lv(x!V5^ n \,|+Wz}?:]rāFaah~)IB U4 G\ DqHi \k琏a|.Ww1#;9 AbCt2P W- a!f|pwvi  ^>h{c;x6<pSRVm+qp?^wm qf,P0:ad_ W}? <yϓ/'W׎?{yye<.,7mKqzq{2a i=w;X;hB~ $-{ފպz]:^򚪙[L*ֲEG%@[c$H;$ļB$۲H*$Qd4;CWYwxIpŦ[C!Ǭ#-Б%r @_Prpūyt;Q,pi̶˻ /$3BlUL4d)*v-*-Ց8Sl0 mƽo8VA^>!Ͼf<Lࡪ+KLQm/4s04 C9a`#55jk[M592d>6l:fջuً)E~"TVarScXk0-bs5L;{hK>MiV[tji\0i 6t| :>ƥJa2&sZd5L5=<$5OIeܚ:z)ϊt  !#t{L78.(gOW_W=gp⓿煞5 - C:-n-͵ +g-zn{We9SDcWan;UI|*¡hA~ [} IA\y !t@{d/5A޻Ps+_`o44 C耬dڳށ{:z1O8wQ8g/^HrB5I@–fRx/jANvJk/Dc 3W:@#@~i.>'PGȃ;dƠt*sNfKF\4>V呼RqEM^ (ڡEMJgel.$zk*1$׍5jk;ꬆN̔tN 1)0K)UEމ:ۛ MDU8]+&iMG\fd!ZI@L+XpPZ?&52#x8IU:}BSۇX.oK(i9VC!l9urD0ZIQem\_ zӸoH2̸s"RsŁen{ip{kmbYQU/fi^inatd0EɯL="$6JT8P{(d! `qpy f|O[שE\}O;"{v@br 쪟Lj<h[}E!eэC}`b Ї)p%T@=WVlC&l}9O63 !6 x"*x}rH4qH.~ÈJQH,3YJJyme^Vi+wo<Nek2 rUvKץȫB%,H~8P+b!E 7+ $k騩&'2IRɬYϡ>![f܌3l*uY7YZ݀.;CԲK{V:\Q'9lyWI\fLE&xӋhl,R'_1u[qً"K@]nZcFQ&UR^%D^%ey&xFYUK2N2i2UP6빰rRLsx"YVC,glS!Qh˵$[*^/g0|vХQ 3@j?b%Dqf/BSk:"|zvx&}s`H+xn9dgVX[qa`,o;Gx)+Ax0#J' ;p\J`Gg6SȎAkx{ ;oQhSsMC50 cQ;15i0g6w]$j9lL=\m0 MQDZ:}n8)ʚg ?G4;G ](80=H&nmj흿KNcA`qQe!B-\Y*ϪzBiϗm,ʹ_Zl^~i1f Zg,-u_}42yk"= >.<.[$SP~]:#2BCkrf';#r o \;pc5a[ㅶT  4=pģG<}@VvbڮoVԫ:XO{]t44\s=dXg10Yx@L⠎>]8/lP:ȤEL/n4h"Z4߁ &jȤQ

BmZS 2iAh4D J# 1IۮObBGMA @АIJFRMCȷP=⣇Lq.O4 RL4BsNi@ېA&m-!DsVԤuЇ,2 !Y򩙝cer|X+OC&0F&LgmXz9ZݏTNCCwD7xGO=5PoQCzSꚮ^c e<,0/jНL}&Sc 5a.^0Su^C;QzafdGǑ{lK2=  kpW(b‰ ;{#5DxL=#bdbH95߬I%KER޻ XBF25YDNP duNo~$%Q 3o,Kv˿~c,x{t~b$9X&q`'̍e~L2=[yCxWBp@ 73 .K20ofGmb?c9)UU;cRjvƨO}^AT":U4ƛdI #AfַQk6SłTYv5ؔd/9C|IsҵM#dmH պL 0$բG2ۗ5Qf 2$n*5MRV(>m'ԘSGo+l_ /6֥ ߿$;3W&9u]o?2uA9}db/ֶtvx!+oGW 2;S}%mmB2${Ibc`*]2A{ Y&94?g9%K#F+=iU!Af mqt&E&FԎh-z$^c Mk8*emf$mLjTx⟶hA)m a۱}ehV#Lrd| 2$19ir6Ο_6I4b^%vRV3E]9mk7[S[j.sg- .$* .XJvI&XNݺ =e'U/#MrkQIΆ>ٍdI9P]mHǢd/qvCHfɊ^9N>mkw^mOdaz>mjipF0d3Y;e%8 ޻/YCf&QlO;H zh*YWKŇHh ~$'E& M ޳Kь%͎ʰI~l62˗|}b;Flܢ+W7߿$NQ[پdϊmK&8jv bW=xz,Se m֚$}15g}ɮ싫Kj׳Milpz^Now'?nhȔ}Oc-H~Os [&ܥLc#Ѫ-O=D#ocaGx>{|Wu~vrA.J|oni,\qQD >}/ASm皭|[CIAQ+ ZQ/h#90ˬ8T%VeIV %+NsCTd6UtZmR6rd!Czrs7p|ʷ)zRԍν(a$};ii.l0pK6IfC.)~#_%;9&lVgcm/a˾S)NJkMr)8>E}ӧ}arشd)*w&r8>&7M]rsjِ^3u\ب:>m ^R~{)d ʰL5ee'F\Ww&NΣ2}ɮ+nӾ${ZI&I,_G.]F.ueI]#5Z>mK4k&) ̲ Dwi$L\uoIљѣ/6Iݮ 8I6Ȇ$l; T}w>2 Ql{ `5d mSvîE2sڗK'g`rĬ[稷Lu^O/uFvY%MrovOvi[jSdIγ=ؿi&5vRwZ}&9}TC39W"ĺhA7TI#WAf$RK/d|ؓdIzȗMILfA "L϶[& ܂̶XQE$MrJ,Qo . =eucW-iˢy}$W756SN3^̶߶ٱO`S}Rٖ.l^.%5:9|$C2gYvpFijvdI@*s~?o'%Hk5 R/`ε In r 6m̚?o`Z;9LpR7'.;eewaU׹mym%ۮf4B0m7.4FɬeLvIޑ8 E!)QvP4Le8C,MOG J TWΉ?\&~ph?&E>4 d9oܸmnF[`;tqh,h?[XO<8gSFeuIi#?[v0i›}kO^(cu?uPH-2}1& JAy4O5.eZEAz\r$∢oBu0kF2Ѵ陞ųmIYh;YG_vebNvr1궝%k2* ,YGG=%usE^zvaq%]%Y{RQ& Dad^n7$~)[2h?)B/P9:N%O,_\YTz.Mů(} m{{`;KdK{4yK_t=C4^P~4}~N9*3DG>d鞳F{fs,#kMe&zPOddd0U暜 '_#Ͽg`?iKɶ3OAQDm; F;߶Y?HL1v-oާVY>?l'^Mړq~i`3O޸ܛJz=4/ NZbEj +Q"ygN69f!H߶zY+)C}9MS3mIm'3rht  Į(\5g\ux=g{-(>Q'0:40`4 dcLv &9(rw &䌦WDI7Hkfz7=QsFdiۨs 6RӦ2!so9dIG%\3cer5?5FV˷IJ`޾Hl_3Gvn`l LYm2M'THF$?1$J*i2$KHԇuxU\o .j`Bq;].15*E8ctI3pVCF{XX~F5Q釼d`{Bm^{\kdN zB&(;KfiCF!5'_'oԠMrov~ٛ,;(j76Ii6Ngfe;Kdolh7)|&Yk_*zCFdkzπ̧l]#PE0]q%7EB%'GᢻA8*@A&Xm0e5>t1Q&ص'e2>}驂Ɇ -BSFd.X`%zy$`SoHE p ZClFy+4$MRdєvI5~hlmt#s=y$m2$Wbd2ڛذ:Nd}$s)LM2s_*hiNK%gg[،¿Un`ˋOdj$qDF/dWVO"e 7Xˮ@Jq 4o'V2 ~jwsy^vI佚ks2$k> N;IGV2-ӏMrOk}!ќx}0s*.dnȪeWdAV{m'{UTofI2>go7iK*:DmۢJ,;`B[%?Q"riunJkpDWQt2N7=B*Ƈ'mOTI~ʋ|~[7aOVc;|>-`O >7.,nN]?>s.}K^osUN.)SK7V/l7XAi}/f/@A djƏP({9 um PpVAVD{]- )=%xl 76}*O gйeƕ >*&%j^i%1~؞0B}ȽP1ubF N$#ֳ6S`9 p\yӢ췼iҩMR*<$GJ͸h;ي\t}DZI~Iښd'ܶV{OVX[MqT(adI͡J"CFdmzұdI<7m5Sݢ} _#p[%x),o\ա_\C#V0Jd}:t|tA2 K??(`;){p˜N~o_.`޼M&vvr go۷}Ih;58wd,7>~8F5Rxos.ou53ܶ;oD^޶=gm;[ܽf7/Vvr XM}9+a[ؑߌ6IYR7ϡekU4' {Oxm:z!~M%|a 6(<=bz{~IV-JJ4m#q-1´m /dum I֮P~mx~$ަ]-;k2n 3?&34I3S6ԵsӲc9VKO&ٳ^M^IFiI=֊!MKjn~$Sʋrv鱍 I?6ɞ=S&0`J?ݪ!M hmlua]j˕dIWImfO_lydxj|Y$f둍hjAIzG6`?Ţ-`luX~dIfzdi-̳ Ʉx<=Q5mm1?6Idngil#RcluܖlI쮦9!m$5T&)mZMincLsb󱍔 )}5IVoiXc2$OrclгdjR>:$뷹F S` ]2VWI,iDh;~$Rcs*F|hD){us:odT,&6ɔYd6 yIN~N͡/ۛ.n/X\.$jҿ젞=wY{e6呝,UᶝzW:jP9ᶯWvNj~NE|;:qDEG=N q&vRK 2|N]u2 oA $$ /[tLcxUa KH]A]0O_>{ԪV (u&Nhkuc;81z: ZI]*I 9Ȗ&;Np oA8ҐDݠ$ndtEID* @͊KKܟ(\i#Xvi A-:vk:w(lZ 爝d|-;9oFDL;߮sS N+]]2DIM֕IFIG;7:lώZFv،)ʌ\rcΞ:%4 1GCk 5lh)LQ` pVa I?V<UH9rvh:ndP ƩWMnW47P!VmvIAVvrnFC]SvK&X.XBȁHp(Jb,r&C>՟?2n2I=H2$y#ڗՂ6IdMW`$aKdc؍?<%]:I&P<$S H*d7adr,_7Σ& )G4Km]r E6b$SlloZ1Y&GSK>҈Ju,_R0zmL6ɶ%MR|A@traFECploRO&jkDQl2ۗR3 endstream endobj 80 0 obj 14122 endobj 81 0 obj << /Filter [ /FlateDecode ] /Length 82 0 R >> stream Hl,)@-h,>m(_U("I@=jEE%QCFd.6%d5ߟ>xyI!KQ7PN1jaŸUidDnHn|$gg ݃vm`^AV;N߫}H Ng1 Y^KNp *oI9,H_pGycE>ˢqN0|C;Ɂ$vm-'vYm'C{sUNkO#=.ӛ#rXtxZIʸ%Ugi>> !j'9E;I5IgQtCrJ!;)kſV38Ӄ$#r4 ]%ȱj&?0 GG#>fp0loq=,Im*ݹ7_2VCe\_\U:hP~;WU~ 9܉U3ǔj:f`LNeEŨ}ƲH/^PdxAYRlK4MBc6_15i0ģc ?q>ŭGܧq-n8-sUMY>jpra>TR6qs QCO> nlU5 M-m}ऱvdv/fXU8U58k]Š`jp[\AR&hHj9ÊZM/|_38i}zi9 )&e If`r0c4nK öv}`~l:GzPnf`]'\ eF}afޜdhlU\;wmQ*%s,Ɂ-Ff+fb%s~dqEgmQ|__Hv\A¨: @:ؙbq»4axO`O"]&m6%xn[Uy|6\*1m2b/8lèsK|.88 ګee"`CglV<.)nbPeM ?#NO>imeiZǠ<থL LvؕdS`~_38 >G$aGӷw-r;E)\j[_U2e$䥳O̔:}-)gRGdجʐ> .0U^Cﺓjpx&epcYg5U]={3nJ{W4NL'`L~G Ia Ɛ[7}DqN3bP<۠z@htV3yV+V8˪sgq =\V~n Z/)!e5^PJ?* 4F ,vP NNygPjo3լC4d&yME2l`eVPY j-D ī"V+YscZ񵬒:I[/7MΌIYInZz 7'ߴs YbYiXSbIlZK=V,6<"O,dc;ن`5lg[ ˶J%薎@I=oOz!{Ye3 yXS VYUeҴɟ죒8i\[}D]:BY%ܰ Ce:{4'kI$׭+p1b֬C8z>ik\s-~4n\S{+b$6S^sS, j&ov7w GxY vmy6l| j 6Ěq߳"X!1mVYOfAu;DQedjUxelUq\m5{6-'.v2{YO&s޴е\ʜTrV aLKtMx+窶\2 "d*zf[bSznYQu*bf;>rTP%g1nyNOU:M&K"I boMin'8,n6w>z6|[L>U/SEAZdMãs&9<]VuK ϓ)Dc o1]ߵ"YcEbӢF/U*R$5Յ37c>_Ks ө*OuqbRy7T9J:mqqevܻd>L'{lm[~kMfZj ۓuv21|L%O'M7 5-0&30rN .y^O` FrW Ãeӱ!cbI36C vK{pȈe5-C1y]N;GEQRp [fp`#⽷˪s%pY n) Il)>" \f`b2(ϷbI\HJj1g|\v:D%58THjy,nA_$fUcij7-jM78a#|dlέ_K"2lP]{ɰgl)%\>;1UƬ }pL=E]E _DR@Ro\1kVoq#՛G%WQIm/՛՟G9)^:Z0ƅycĺۼo> )H^#/U3 }UrIX C_}yhJ7b`C}p#5Lr֊:{՛裒CAavliyc>%Bܦf Flr]Zrں[$fy\bگUrHAajpmLQ1m6c$1"59K l-SI`$^xn Ql/>jpU91m6Cfs:^;&aI^ buY c Ʈd|mԱon+[mp-'?jpeU[@ܱެơ*9K H^esެ:7B"|Mߗ[ nFk\RM6-㮝ky w䐤}PU{Y%׺M[J7lS?惵z8dA9 }7Ԝrre+u.5`;e֗Qx̥ǜY 78o~X<]&ɮ0? ohrΔd .h:^:g "&.ơw\#WJEpyKVMD=U)e\P%M RkS\nn9ӸwvUTeU_:WPVky[umxr?]-EӰMZT R4%ڤzrΆ+͎9l}:LLzpni.4ìN|ަs]O{ݹ:gc(\ÍkU6M0{c/qh?.a:IUrHem:e->3\">˦j J1_$PhPU-9.c$0zڐ'Xzd۾MrU 9U0̡/ m:&ceFߋr!U;nE9뾕k%E\fAl6εnE [BE&fHvgG-q)|_H=&yb<=>:KzjNho Q|Mxc>&9/Ap6Uʡ%ȅ\PUHܭCAj{nӱym84 t `gE&`>PiQt̮h $&&)D梡/?.-%|^P-߈lᵌ\PMU ]ZS9L~_PgLRƯ b|On=|7g.w.LE.ԛCA᭮P6F8Su\|JP:k@|>mNaf-]ɉepK[T jVFc̶$-,O "1T4X{tG}̞TL N>/%gAGNvmGG7'V`6&ZAikYˎJ?IִĐ0PIK %6I8?wo%OId7!mg/mLp0o$SEc5'}jGs*F`ϚrA&Xu Hh5;C&mAbz'MY*`L%1T.f7G% #{_\hKI+:NNF6jWѧ8m;iSC$2JhL]k}o{::ν[Ib(zTmC696I8`6!ladό6ɢgv GFz$sv0f`DaѱM;B34[ _2MdC!z!\{+ů%vDyeZ4vI4.wv-OQ=XF;&n 2r'~`t ";}&rӹUG]=d iyj/#(,C;e2p c;Q&)zj"36ɉӄhCdIqE^}1od˂=*s͘B_PzXKi9U~0B2ڛLX 0(Jemcf;}fQ/sm2jdIB0{ }]O`Fe>7.AtJY b!hݛQ&lD(IaaГ('wYv46 m3EgieEgFy#GI$MM&W>C)2ڇLtJ+`lK<"7/z;jg7XN#kIXtfRnZ/]!T06tCT\x"gzeXSyBdqe ˉa֕~*ֱ=N-(S|ȡ7Y I6YIюO|~1.|/F'\v,m??C.7KfzK; d6Jh|d FbKCv| Wцh9]=//:>m Edڛ-{`QQE=DWu$W`{_~t YA>^]9[d){?dIZF8/h AdIq^6Ʌmd]k9m# X4Q>M2jc#ǼCb^dڗe"; o._6IE咓Ě˯|v7RId`Y_1Yq|v |$IJ^& #qh}& &odщԃ`΂$zV;XXy=hrx|mfGHkk&37Bw9\hodY>%p'h]xn i< dL3gds2cNϾ/ G_v!D VlrahR?ZɚgNW2&x1&Y=sZ1_+eA$fb$8dDhGdV+r f[d90KX&_$jMѳG͂Gx%Yv@tG&1,DRWP8MRjFGӰOk⚧ߟ=`Ʃ{Q=i.*%Ǎ ki SVtOK9h|M5N6QO{l=Km;ّuY7m]E6ZR{~IMnLu-@L05qb~`l~o^{?\T|_1HasNi=!sI6 IR& Z|Nuu$1f[-Iؙ'h,Чdj5q(00i?኷֛czT$4[&(upkKH[!Lw'2V|+D{m6$6+|5d&MNM2[r}Ht'6 M;?VA2$G{*_JYv2J!]D&AHB}zN.dk$?.9TW%߭1 ? RViֱ(]'߆$kssX[B.PnI qzcc'6//07 =21_v b<e܎fs`p TIJ@\sM~Tb؋mx]^K$7>6.œm6IWZ0g66գM2c.M[X6>cWwɛ6I aMr3L{߶h*Բh8続ĻcΠgNV%;>P@?ehHL~}ȩr,mIZidIQm&UKJV1E\ͰJe-ƺ<#6ceIܛ=ry${M8o˹m)MFMtuE8A7mWQyKZކ= 0 Xx|lVn2$gVa;ܡ!եğ2޴ Qn,vH Hf`Id M/\cs%tWIQ75gI-X-%鉽/(;4A&زَZ[>dӱSuնIa}[&lZd9y@Lvݦ $M*chh}&9Rjy&9V$Mr-m'1m6D6I'%-6I4E0>9~5 Q<<WK҉"/_ǵ|2/C. >uDj[ *1D| *zժqEdPqd>dY*P>}Hj^ڂB"CH~41< z@B[-=5N|l ~2qxi~?KdKhю[s49&iFW-Batbҽ=6o7eU73ٟ?d1?CJd JOb|e'qE\ 6.9d.$MFI 1r|-Ͳ:ibTFE ܮ8M:V׾d{}dI4M`Umd]u5Ըa ~hEHIn^G>d~^MéjL*N5hUme)lӽX=}W&);0HL^|oAytL$eܒ$ A( *?&94c8cI邜豝h,vHhXLz,oI1R 8d,Cs&'m$H섒F\]/T nT̲Q4l`J@:`dҊ1j=d!5tK̶E|ԌU?=FVFخd!簞豝Ln# !}oz@c$؎mI_RyO#I8__-? 22!&T! ;Q}*&Jѩf/(-LCͷd_$UO#3//'趝 C(vJnv]0?lCfH:i̲}NI,.9% 8vf9H.l$m;9k/߾綝KWl@OmhJz[v+YWv(?6CfȉL rdl7m;Ho[{\z5!.NMm$}#|ݵ Cfl$Zj{vrT5(q2NN#dogVSD8\SDOnܮq3; (umjUI`:9ʥByN.*]ID̶mv,8hC^ Uzʾ\1wvBCyl' Uᱝ:D6ofH[CzvJnsc!5dm[`MSIvpɘ+ Y6^ddzb}c;iy,N`lbw#;Zhv<lDݕꇤu㶝ԶOtl= hX6Ϟ߶Q? y#Ks2N6fmx(y_CzlԢ8 AAN}|c.rdN3뜊[vwJNvx/ADf$!; %gvצ fY6%/׹J2<egvlK!@YvrOC*Yu2ND}Zs2NnIS!q }6Nqzl'[7V;% VImЇ c8dאt%XG̲XD{l';L6zL $+ӵm#sb:d~ 2u[􆷭_7@tumnH ljc;rd }FiZ9e/Qo̲tCze9ygN:7W$K $ۜ_RnXݺdym$.c@)@;~3NRNnI$W;ȵF 'd'^Kt2AeRyl'g'm[Ab5ҳ6kjN&UthJ~fImNpv[rm#q_2N"҂ٸ ar $Qr˖[TxנoIWeom(y|CN9ƻGVnC?5g3RZ$ 끴Y@ijC"g uM8wmi$"B>dMժx|:{V;{uۇlv'R3!uT'76ɾ4Dao>$҅U4h2뀂:}zMA$ >QIJ֌!`5MэıC2ڇZrEt0)uY 6OeY d=-1܇V b+3oSsIZVzF ACULoAfRXUKdI^]vVv) ۬$Mһ;V) Ukh/*mێydYdauZMsxl}C ػ!>渑IF;wT'k#mjq0$V7k#A|`oIꬩ7nM8}SPU1'9W4$oMFɉIɜ&MR*,4jЏM6?@(;Xdd "2:ؖwG&)8Z`D }YUo[&C)X_Y,hO AlgEt'QYIvl0")uO voxoUn2Nl⿝gcN{2K^hi%XdRCa-v0r.'sFnm/&r Z5\DiU&Mr9Y<ne!M؇,k=dIV FQ=c>6IMjA2Z\L$eT‚hļ\f,+h,CAc;l O6mkEmĀ;&X7mi0:v$]r8(~%ݧ#~ h;ٜ V_ʶ}oS`7}?*+r?\7C~$HUk»c5Ah&Y $ScDVOv&Y}$M,Qo~bJ:TMWen2妁2=2I?d:22 ;Բhe F m'Mme&9!MX@^,I6296d{9)6ɶc6!:X $}vQjdI RuWt$}-,6@+m]2A >yĦ:OOmS+}1:YvþڴOw${ՓN 66R5u\׌!Lf|8>d9'lݵn&E9/)ڟߩ#-l5yv,%xv~>;S>?Iaө$m(Ȓ6NfoZn6m,c\ Z)dDD]><6'Z1{y$-9=H趲4E\]Kc98̛8ERVcMFcXگy$:hbl:tI} b`ӫֲ ;݌&KF$ڽՓ#U4 mgY8SҎѿ6IiUb~$G_,*`ķUv^qv VzT1β6eC2AZgu1Y 9an$:XU$dYuIgcA&8R;6e#+L٪y&Ys؇DB3NBv$@tw+.@ 0?MK- \{ ikM79qN=&#rv7cM':MJwg;moR'dYī&ٓ;oNLܻd&%n\LI)*&؛T VQin{S7T qau;U&Fd"EfbUCfbuާCHbbYe {;Čc?fp8Ur; 9|n5 ɁՄܩ&gڎX(S ]Ex޶FT]hy或8qq|0Z;SMn 4aQk&;znE͍Nl8=frgyFD&%1|^58o534BTR,G)Qɷv<#JG 0#>L>jr*/2ko3lcfb<[:ɭnfL+">jrH\a}GMA.1 endstream endobj 82 0 obj 16427 endobj 83 0 obj << /Filter [ /FlateDecode ] /Length 84 0 R >> stream Hl˕$9E-ڂ<B0AB]7uoF>|fky럟v4!;Aѩ nչJۃkޭ:GN 2S'pU n"8so58Q|Uӱik@Ãcq@>$D&W9,篁3 W臻L֧l5U}3^f`5uSpM_'ԱH(*ڿqET ~&u}+*;-=ȚwUNpMo79k)` ;'|$G@2NR6ao҇7Mzî IJ5h ;I8 P"aQm').NRAvk|8b?d\8v E')@ +l`.k^;ɡJ#'W##67q4mhM|m'VAZ _rYc<Q=|z\;z5ď Eqۭm rY)d=M#NZ=/vjdtd% b}mvmҰd9d÷Ancx5AVK[/ #'F[Po w@+5ק=Œɲ,= }_nY#f>+sӲ- Qe96Q]}T#=mM ýQ~dY>ֳ!ؙ8f`M_fpzp-?؏cs# ^dչ\wVkƒ\Uc`[r2o-oH>7,n8J<>>򑿠zm#|mo˾?MI cKUuvOY$h,2@k%'Jv}M nYeTUi"=rNm&gZC6r.@,^&I0QC-]/Sɠ`dM2QrGSǨ 595+}XT(lc/f4@^2A-8e!*!Lkd/ d#X LR߃h 5?u,Df' &O#ښo2wYLpeM2HmĒgylMfty$ef[9͡&dMJG1{le~4&Ye}6fSEG{$u~Ijs0?}A&XfG&٤g˒dIS6)IF Ӫ96Iu&hء&FQͺ>NX +JcI-`0d[HOiI1Su2$-^~A.Krm+M-a7'LP^R=?~dg}>6U+dMrZ4gFdD5\(L7Yq-oܬv nEV`|$sk4>%M<6bCS` fmЂ22_d::qwMxd2ȵoclMꎲk~lRl$7'MRdmrLiv>nm yڇP\L2ت8],oK&17.Lruh]/6Ӣ~L40؇v^z6y${ZIJ)k)j_mGY}xlhFO*VENreŶ@ydڗQ&ޣ-DBʼe#mfKpY(gF0ssz  P/fjA,MT Z=ɲVg#ESG\m |)_,ٹü(#[%7eN5{HKDM?G䴙׾j'Wߵ  !wdo^pnТb#[׬J%CMFjϼYێ4uozic> H5>C$]Dh-CRι9Fnq׃9*w;s'vyd7}6S-dAj#v\t EFpuՇ .HmJomi_ AyCh7CV? EЂ>6HTIdINY9܋&9ۂAf%gmNFV]mT}"q=6H9m,Hhl=6R&o{e}V=c2IQM 6Hmn$}H;mLr %zPG;K:qvj4;VxV2ɺM.6ɼmzgn7mm%U#<6wsayl.9я?6ɲ.(˚ ]-!K0jd:IVl:z>yWIi/diYBQdlNFdmލHB uX-=*JLKt%#=*^Qh,Z0UKloYCi8 2̶%B2$k%v$ ZNF?k:` jn.%XkG9q6)MՂ+c{d%, [_. $/&CFX{h{ k<6ȮusEJwYֈmuϣL2 mi~lQdntUAVMAV&ٲ|2Yt2s$uՄ"NF] pQ&lF(S Z?)I * cmMscl/"(=iU;\9ulyGuPq>Q8}4\oAcH:ϋs=j?uLJusIfOM7lׇGunH?,I[\,*GSV Wc @jrluo qn\U&-]#]Gd5QNyXp65IVb  d;Qky5]\U><)[jp{sgL[[MУ'bYx! MYTϷB*b _nq] 1k˝vrjrkqWŤlK*~Š<#Պ8pnQ[Dbj;ZFp7o[8jHF\o=Sm4-fA uq8|+b`]u}ժcAUC CoVCHƭnã7Nc yV׫jpCﲂ+qh4whLkN58l/$C3xj'ljrMC`{15ؐ[/auVh6jpxiN<_UȕKtqߪ&Ga:G a֣~9-bBݪzsU;_5Mp*35W pbT5u؂+֥ƵGEjrI0ZMx UĠY˂ӛ FxbaYIo38ퟗ4O%7&[ ЃjM0M%*iSU38-qoX4l7g9v&58KU57z%rkOmцsU NzG ![z&'YY'/V`r-Rc ی9U58?-njEaVd5-^zT6-u)am౳+fpYo8jp똼窚 bVY-Wwӏd-!b&tŏ1wn1<,6.WVAOWt*y,V79Va<|nNtPiŲ&W!; ?\_vds$҄-jq;#.WжQC. lYx[k};_5g~jp'ё:GMn1.Nm&64S+G<^1vtho=q8MZt3ޢ~UjpIQPFpE Nc/Go58s'f`0xI o15>G GcsL=]=jr]!8֎(iUVx۪&wt@troQ8BMnsC׳HƱR*~\nrrEMiG_5V JU>qV3|ߎsIiN<\i!Ãf=ĞjYbsfb>Ƒso3pF-ș|F9h5$@F ٿykf~OϭfhS(:}r&r\Jik&vƶ'k[ơ3jr$݂x۪&7toP>yakگELlƔ__IKLl~+ey` 믙=JoQwኙuZRUHGR'-&%ˉُ>*9{+ԯ>ㄳ-jr$j2ܯxŕMsPn4.gfth\yPn38d ,׾_+0Xp65#rsU554zU5kpui9 gPϫwjLnBD23|"J9yzp(6"reMk'ɬCdYz$ѾnI)9$KV9AlΔ`m8h $a\$!(df%TIҽrR|vRr[ݶ;_Қ3B$aIG;I,ō(j'XskVId/r Xꠁ\ Na+nbI+ r4pJ[61d|jɭ=%HY^l^;I;NV4QNex#IV;IڅÆ:TNrwVarvudDYk'ud= J Jׁ3{/ӣGWNr uRvna"dDDZ~Nue#?v(yVNR_ h}bo^s; ! i葿S 浓Sw&^;uB-^$es^;CgT޶(}"Ѹ5% qQg>fa_c!$@bEvǿ0F?jIѹ!ᵝD(ڹ f:WI![EN,oK-MgHrFIѾ$Y$hmHm4vN#GLC[2d3M4P&[؇{j{:mk|0T.eQ~r  `m]8+?}o{ 6p5\t(GFA&8d~Ixe yq pyͅl$ڕ"dm[m6Cj&)WZ@ĪQ>jKyd 6HO*.-u>%7ZdE3o%h?&e Gzya'g)SIyyFW!,畯^Cޕ?wz*YY3;d9lCz۸01uy9W/:&٥&(YSAObÐѼ2׌vK{yۧN ld=ɹFSO~]ruX+F7t&{F4;Y0Žo9׽dCe6[ %n}&:vܡ&RUn;L é6Ɏ%*Ǥi NIjN+ hA%X#$gL-&9zDK>66л6roUI֮9$G>`Zobo`I@;$MNY|-{P7 \B]h)0n@䛾,wQ&YR*U .w`/8pkY%r?KPG*yeuHˏM25S%m#1t%@o6=!2r~d}۹.4Gv{Ҭ?J#Yqcĕ~mnT=GH4Zd^N9MΔ$6)"9v'-dF3e ۇUMraѝ6I位(}k]}\1'M2gdNFHQuhxm3 ;$MJ"K.'MRDh}5^fIIdH<$mwUkSIU(|2:r}`p[؝+@ь?+@KB0N1T ]m&+9w{]LR;.0'm$>& m&h$nmsg.'MN ",Ll}A&W5WFH @?I.4K52Ï(*dm j(,ҞJg&0D2FN' rr py ed%\Ti?^62c9J>dMdIZMD_!rh5eL"I qɭrmC.ENF\z#>_%XFYrֶ#Kgr\$ K>Dw5i]OS|>dC%I붿_ݤ( dwt7㜎`YCOG JOhk^Ј#U~9e" oDу3kEd' 'F5 u9E:!W5;% ʱI(h% A\0f-!?/3V|`9X~B=56\un fTTLshǾ dx5fZvD\gh^;{hξKW%5odRi;?B $ڜΎp6ə YTюDjNFLkYms.76HkіQ&8J^gL/lt0$F#KmU?K6Itn~A0p |IDr+J%΢2HViL\%kMA LjBVYx-3 #QddDK^D+nNFd(9m8ul'Mr/鏥nQ6Xy8d=Lr .6nhzAbmNFHtC&QD۪$MILnIڭ9muw+All\wi0gK7 崊$WOCɴku2FvZCF [eHE4{qk" k f$@$de_ydu$jr2$[Bk_[>B(:&><1)ώhݱijM*Q$XTz7һ>dhٞnKj}FWi9.J㐿6:&B-)%m ^IܨdI9rd9Kv2Fah$[-&9JKZ6%E5XK p.IOe:&~ڌ&DeN FTfFH-&J|)M>=:G,$+~fѮkdaNF$f9pڟm9YR#mTSu2$G1%9dIN`$(}i4Cknp_Dm_1jz}TrJ71tr=$O%UarץѶ"lI29LК)-W .$IBh uBAcӦvq\zrbl> L^$MjՔWdINͬ})|dul`7dŎ }i@3v b k .9(Jj *3w#c=69pX`t}^LPh-rU?lYVKdIFcMFdͺAv3_rF icQ>`Xk"yG>L>yޱY[G:94C|hsYgǶld@6+}bUԳ8}6V/OaM2Ѫ{,^3$,YdcA5U=m7w`p zRXeEnEDCFk{zU1ȊOm*}>`tێI!1s8Gh+jim8eG9EYR7ebCIH%}sc[&^~1Px:6m&VXʨs>Ч32yxxAk?5uz$<퍬u}s.zQҧ#Jem4񑮃KF%O4LEɞdsyF bru e{eMFIUZ*؇ ~l 6|V>Rju6r%7VS5]rHZ/k&]'CG?>6IZ+ fU{]Osx$=lxF6I JZ;u<6ɔ:>A!1o`P}[&)M,"dFBks%(-!X/\qLuHKEOހ`o$o`M:P} FdWIgZCl}MXBP-߾emU؇̚W@xhZu"IIF`9m'hN K,_ 8}ȩ}LݷcF:IvJΔxhډE'6I;t  2thL{%]kVG>$]_;fIی6lKVaʯ F]pU%L}zza\.5'[>KN4h5Y=dbah?d^ 5\&>-Ȓ!T1!󎲮UMa}ȦdBV[ E" vXòn,K_yԴX1/FNUUo%ͥ )m^\,_.vJ(7bwQ|`@UijݥI+`Z"qlmf)u>dQC$7G!d`,;_`nza\(L̽&}:GI :b,&95ͽ:ndܽIe_dنIR*k&8L2N@Cn 6ɞ~3k6Ik# 3Z\[?$  Y0:eiUtί}f+d>dξm;$9ZttdSuw[&WVpEWs+kA6P-k!KFd.H5m<4}Wcl;ƴ'l תuxwlTkG&]Z-޸n`<`IQm'MR᜜>c;qo2Wau\+ayIO:MRΛjdqkA&8DxB7I*N=R$Q$bQY|S>6ɖ5\ٓcCwHA?C6).,Yr7Fԣ9$k:)uIviK` 4_ QbzyCVmɨQIFdAdyM2ws]hx}Ȓ=x qt`; knl1&9tSѼP4(}vq(n%ε?dED/EmdIJ[p($MҚ{/E&},N">D#ê%|lmzAIVK-LP#(( tE}`:[ouy}[&h/CZWrɎ-'Nbw&#}O<-mPo 2Oe ;8e?mX˪IJͪ={ zl'ШNfIfJNoZMRN0.?)<6ԥdDNj֣vROlOSMroş趝 YC[>`޷4k$enI*F{I/mإ^Mo2J.ݑ)d7Wn.ujZيu}nnp=n8ݜտfėˎ&I _,˒-5lXh ϱ}"+Qը$Ԛjw2##T˭QJ`yP>44 Jr5s)z%q)XU8d*K>Nsב!4PQ^H.DSӼT91RBC R/%\pH %5ܕ )"Jbڵ+:Bbejv!TE)taNG*b,QOXhҺeW*W wz%1FP6%Ċi )敋 S*JbŸV8\X~5$.+YZCw8/%;-(/$J4qw!a!X0Iyrp Qplr3:Jb a Φ$)VzBbU;29\XV ƅddŲFf eA7ͪ$'Æ`cyº2Y=%(谂sQNjwbCMOꛍ^]~(i6`Gx??W/c'Zk/`-l`_Gӌ %5ؼ?O/}O=?'<~^sͨC$\7{򋗈Oۈ>K^W\Qb")*+VvGd;򗪗"#g'e)3#kB\!]_m|#ss\1G6ycW̓MSbBʉ/O|<ʴGY'M.̿^>(?~A$H }?^>'/ 閆+޶~>}Jx^7#')HC p=~:p`fQFњۥ'`U鸗ǷkHX},O_DV򏯯䭽|lky+g6b+K|GMxq'_g kP_'Hp:O2HTW8mKW̓W[c&F&>x m+"n,HV ]č*/s<~#n'm+.s˶H=]Z1O 6ܬc~f.7z lz1O"}dmdz͹2șUj>ARuQ޾L_Y9l?טlU4ڍ`D;I{ ɊohK|5'>#WڍD,5&?cORFbC[c2a8k77Fnwӏfwoen ~2cpwyUИl/kP 1 0sFFBdhJ>ڶ2[]ЈD8{hLbR=4Y3O%Zh(Ft:|-D$wI׈DYmhvrЈOqF,tBF$*224&Q TI׈%e;5&!I׈%.R=h%&]#;cw4<,wsh~9GKScLC##KCc!9G+l{ǸքoPhW7;y)0O6Su ˏ?_ϮMgUAî'W&0u`ۦk:O$ rTЬWV=H9&`6 /}k ; [IP6PD6BȡMr"tge'G).2{H~Dblh}j`'[NKMcߣԔH}&9ڋ>|ZS:` fLxMD" VldΥ0[ыcWϋۋ endstream endobj 84 0 obj 16238 endobj 85 0 obj << /Filter [ /FlateDecode ] /Length 86 0 R >> stream H|ɕD)E-hʂ8 fzv~xd .SqOk#R?\QنGL#J.ͣn2NOK6eҋl%;>穛.hys[}(Yק~ 9E[mK[vp~VoAyd lZ0I_籝٥(7-Lc']$9}Y޷L0T xK8S\P)O 6K ?-;Yh3o2$['s)ɂWz6ɱ]|}n\oq&2REZ|z9m}?$+NE+>&d,` bY5'BLfAY6]Һ빯 ;#euQ&YE/y$:!gY3&l`AjZvNޕL9ɔ<6lV&ġӷHMs&9Iʜg,&Y섟\e&{hn$* )mMFWb9Y{l'Q-6:rRMhVel2$Eϕ*im0"AO/>Lp,7G]U"^{n`A`9I~֐h; WvGL?Rl}d.j94MHWR>>2A!L0 [m?-Rf1,!6iJƛGrEGɂ4JȏmoԪ*,&b%vȧHM- LpiWeV5edO]wκ:MN v S$G.5Obo@t&$Rd"SWnK%k*ۉ6Ru"CԶte-FO"e4mWYgG$6ChBdOG:;vC׌6\6/t&Y0"c;vUc'M{YMGȋxY4=?.%]o;N mIdڗCs-&k v2&YYsp !|*-D}e`rr&v y3{fq2I1ڇD,3={Ĥ 88vɡ(%9uMr%M/eZ7lF2v=#Ѵ'&YlvK'&YŢH;&I,*H=6I4L'}&7HFIKIQIdO֩zC!imrSh&Y6W 'G&8F{d QPd,edYo2$x;w{MZMF J>&M7);p o΄rEdh"}IֆRɑ?zlHF$fQh%dZoeqh;a_2A+!m! 2ɉ!4KdIޔ&;!1%ͣ`w޺\r5cjܥChu.Yr6䲹:8pUx PqLRRV`f'q&MIU)TMrэ,Ż&U3m;#knfIʨբ{$t>E=q\2A)q"?nd) &ٵF}GYWN&}HcђxhkH䒡$dYdlh&sFb͛6I?[65KMRt (,6Kh>6jo"kF$ƧbdkF#C'b&9RFN|hHhj%LpaAM| Iy}CN۳h!VSFI=S[Ռ6IJ ay$hk4?n΁6}l2$xJSO&|ab؇lvVQIb^VRe(3}|ȦA-}[>eI#~[l%G`iq>y4"t  =A>Jq2$hm>tRO?2(ڇTMfiF%c\DI`}8s%#R!V/yrd]mZdj#Cb&4r} o;WI!PYdi} HP{eXm$l>Eug4$}Hd@}C2Ir$WeܗG @ܺYJH`25: #6]Q>oCy#m.%eكoC !5ʢr%7ޖ?=>Kv.RS|Q> zRINi I4*!eΒբOi3c`k%mut?ogV89=dKXM9}._b2Ƴ?Cnt]r@6FNڋx>[>d}i㽍!-) )<ڇe~`R2%IJF@cO|Ȯ{6o H tB2gW. Sk-}ɡi|mΨ66sM 0Y6үަ@[r} ]=A։qLVsB{dR}JclVuIQ:r=6Iوl!>6ȉaHW[%eZ-UXGs0$[/xPo~$SW`ӵ@ 2Ar AJ(9W'MeodmdAV9 kdI];2@:@/+ lZ #7澝6Ȍb6I&`[co^6Iطv2ڇL O)6J S$ rIbi"V$2 fi(S-e' p3d4%r P]XԜ 26YJ#,#~d@9Vh,M5qdcu!6ɚ;t)Vy9m:k/46I9 KGzlYvRp2$sJ.3?3 \1y61˶ճEM{|99NFHk($=#}H3 RK I ?3$lJ«$w'-=XUJ!Ejf;olVFlz֫%lzѾsTKoKkU+jk5$ې]R69Mretf5H۾T|۱nTMӋ&$W _[>S|b;5 *Z^u"#K>L6FQ}I~˱KYuO㳛,ɓcs 5t}ȥKc'7mܩև 6slxPs;bd5xы%`C+mYۍOFs~$[1KIxGff-2>ji~wn;`Y=m3e5Gcf`!]>%֣YoڭL)ʜ>*jI9INNΓcJ$H 2.izV偹0#Q&)9+zcPV%SM'}fNZ$MRg`s9JK,(ML fk>F=!NJM2 ǏidIl&)G$gmT) NuauLp zk7-9kjBZv0$ƹ&@Hn&j#ZNFsw[),j)dЕD)`ħ&ٺ"29^+ 3_v2$KXm 5i@WsNF$ҹ֊YAJ;e&z'ILJs9|F}lZWZU$G=1s`yCJFv2$eX{ 6H! 1{ >6H~AJ``~ۇ۔\~ %9h"r+ l2g\[(Z7(,rl셇6ɖ7V R.'9&y~ v~%( 咳.j\׹2O1v0W\7zVm{`T.`+CLP!^P v2% Mz]MR]QZnFALa@6ylX&)~ e0M-%%bu7|F}\z풛7[s/( i"?6I_vI:^vQ?jCzy\z,U؇uICP9Sֲ|`liT#sƘJ֦͢ vaE^gK ؇brY mCFU4dI]nڳ* R\ȲwLJ3(AK2IܗG.,ÜLI-@DEjW6RFߺz?`lpk+x΍iOF(^H}ݽ:dIs rxW?#Rb=dD3Ble +k1xe3Dm}^BF;ǽ![klch׼m[MkY1̳:Lpbc9 l8fZ2I;(B(yFv4RtRmyl#Zduy+!؉E}35D%Q?lemm\}/nCFHʝj]WK xa֢uӷ:mHWgz$WF!m$n0eMҺVI4u0@liXE 2))6G&2;InD%]c -e CF χecH*&|h MRy LT}qH"<%l膺zW&9퉐9im@*ep%g\VZ/غ]kKҦS?(J6&٦vDu^m\KNKp?OH~hIVǰ$BKkuXu%k5n]'&rc+9%!xq$luKkR<2>8!LT9eK+8VWF j|ǨSz%m'WWn~˒I_`ET%ϏdKn%yjϓ76Im`Zk{I܆4N"ڛd\;=&9>bSknwr_m'Tq`;9+aI9oOUs#x:B\iV׿ՊE2qkbUcM2/yo]laovrȷj㎋3& sVZep .uoAL'S- } 89N~Rvv0>L.IvͣdF=8#Fd {̇(s]s(7g .YFu7$/Ň-leN$k5So`QI8v\+F=D eٗ%&d? 6<6$I*NFM &(w 2$1%6`Gۣ8Tn~NH"d^`[VNdO8OmEșR9dIfm]6m2QPmPv[&8%)BKɞs`+XԺ]UF2px!p%40) 2"K'9Ol}\Srb\reqvi S΁\yW2ɤ{J"!Ye-SFd4Med#ymX-Cc$I G2;auIlW 5oda@HvhD#;^8cS*H|h;٥B,-$dnFm$q_#DW_Jn Vi )z'(J!L0-ɒXGvRB 7Â9@$*Lp 8[-1 exMə.m'ucC&x%r 3ܮֲ|:X%ٺKRke[2xd'au$MiY["lVd^Rv׌Jas]-<6Id)?\lf-;`kk2z.r-[:Ƅ8dXRͣdj[:9?MRkz:WƇ:&B0^0&XlLMlpvra s寎Q\Vu,[V? m{dWp_eNk%5}j}[3N6݇H ?%IC QPq|lĴqۇDщdIαW_j%C.3}ȬdPmy6 `b>dYs&CsrCwo6q3F ncS :)ߵ[>dehn eg1&/o!}ȱwmMohDEڂ(هp9}ȼ3!>%`Qx:}HjDCAR(PkhFG0WK<js![&YEA> b8AYhCj <(9Efȳ&/sn/e}\!3KҌ/w9.'N+EۼW16}j`.w5hNAӃt)5r:h{G$`Ǟ SRS'¤({j9v)D6=jtwMrng3!4gIJmx{$GѼȾmdh^n$&u6ɥ`>8uLQe\P**FOoJ^[6RLENFT [lbI4̟m]INL'FVżmk-ШxMv h-:m#5^&H6ɑHQ6ރAN .]781]+5۵Yp0FjKnb>q:81Ź蒴є<;qmu%YbN-;dd<3$eU'2MrTlV}l#r츚{M+LvnH=whvL8m&#Lpei%enqp(~*s؛Ɋ&>ˢ3$Z(dDedҴa,Sή>mmRح|l# WغQ&(;2Uvo?Y(%>?lݺ+D6tE2Aa{3Li1lڝ{tZ$ً6wNxl#ueIItFV7M{nuf}~$kZxnH m>2-\-IZFȥr4:h]o((NmcW[$P{"3Y^jOb D+vg>2I,юyaMr6i;:6)[G$uW5UgK%Wtx[Q2ǎH`C`umU%Mr2FD6'MS? X.zCALu0NNGi8uXWF+[T~)=2g;~$n>(N +粻ndsUtD$&:GnӎQ([jQN[ը$,$K d;f DQ# LZ1rd$94YS+ȒJf s&cj|= h49L05o0ȱN!:!MW c»:v,m [(z &m>󪱅tx\vZl+N0$> Os۱CTdOmvˣK/dwr4,E7vˆNFdSHxl#[8GFX ]r2N<ӥ]ݻۍ#4\}r,msUf8"0gD" !eΰmwu ,M풳`i>];ݙ"t2I:'G߻FX+dIu<.9syYŻTPE&DEg{dyh'V챍:ej$q9&kg!S6)c8mu^ qKq%WU9|\#pEm9nme{mDUwi,;C]A;t2F"֝s05d.BsyFj @dodkzv8n@$95:&|^=g샦X}d]WC5NgZR%2"ɶ01.ş6ɹ4#*vI֜lq8{Lm+(M,: -YϠ}F?Yd籍DJ7ѕm{CjRX'?iH~ T=ڦQ>d=I" m z\2A4 |/ld 辽i6Z-m#SMFY?6\݁\t2FbAn>?lXc> n??l#NV:%e&q-MˮMShoRwk,C6IAӻ3\sw1m$*º${^dclMԾi2ܲhArJmda\gHM*z!y8my_dj!dG>> G|k1&:B[5N8!7x yh MP2QF( 2(^/?$KrWӀt? p"箋p$IY>d -D1ŌCf&3.u0J! u\7rR2 pl6pT,Y(Z?_lf M޶s5# +/Um;9v9R[&9d;Y RY[v{רvZ^h؇̶caF=dnd̦ѶΧ߶$JL\:i {{2NZe׹&AW>4Q>Ke" p,0JK:|kIvn~~NZ&uCfI9d[vr!l ǔ[ GfIޅ4Wm';m̎T 札$p?d͂k.:\v DݑO<\R㡫;d쫳Nd[扎z_m#Kvn2dY,;RM̲#MD-iݪc}N`Kp̪s1rȓ|:9{e6rٛP#=Q5&9d Y^lȰ]5$n?'OXpU`vïj )HԐ6zrp4e;>?ܜ?C~A$NQ $ [~d91.ӛY!4CFW2)SHLdhۘcm? qd;H+ z,G,& =Nyr_-o75w#Aޤj7p5# SȎLS \=(۹ayJK?gl2l [:dzk$)R^Aÿ#.drݤ/+t~ 7vEn)v7iF&ϹrrhDS}sg#ʐ9uwCJ%dL3 e;j9hd9i2Fs}`\4Jrr;hY1M(0}f~*aDUjf;H?z jJryd0JTۆJt;.ߞ yO%=Ӊv:p;lGCVEtG~Z"kOŻl) I=$хW}2<)$9k.1dYY7*T".,[RΨTT0Y?nS{ɇb-@|U&Cr"8lH®#eU.s+BPMmz9w- N;GGy7ExwC^\nմhJ^}I :owI%} }`Ɔ]z5nsr>(P{ YQ'u~,ru&%M`KȲ?~gU&$;M&9?F:k~rvk{Rl!MY'/'l|&I&8w"xGLRmEodIf+Hl82AڱfKFnCf$ I$ _dljU]'>v8*kdKO$׶"6ɾ?z?`/g yKȈ(gWKd$F1uRp!'_}eeCIxвIfdhbnd e)6hWd^Y2YMdI&tzZ?IUv+ wogC^=2|UcgO%?$ qo ?6Id$@ 10xm8Bg;$]7-6ɦ|~׾8|j6O&{dqt,q$J;®9>6I̊Y}l6{ǂ.]cxe+^ W&l|誇6I$zl\-"G&;K>q.$ST%Xnjie#9%HsP{ FKP|NDƟ?K檶Cfd3ȓ/?2"P]'rxٽcT29Fwr IJ!4 UI'T^3$D<ꨑ?6IlեdQyk\S|m8.QD˩` ƝZ V,bv4=,G&#\{l:rxW=dI ֍wLpSm5+GpZKp>#A0$;U~ q˽W!M\_?uCf$@E"|lc*D*+rNVz6I^Nr_6#fCfɍ" NJ&᯳>6ɭ~րxlY!W~d8,>6I<\vtwo;z\rR[<\m<`D?&@!L6'>.A,%&W&8DO$*If$^xuDI!vx/5:!i.qrW^2+lN},_Rj;&ӏ|Aj"1|eY>%GXq3Ǿ?#E>w/{zՎKNJAv Dpn؀Gw̺k'b/2 AE{6VuM; USJj?6suT&h^Wɐ ]o& s?$lbd ]{}FF[4=É.~!,r$&k fvW;Z1jVKRlM83&i1b[Im+YnGIGwZ~}בSmS[TAZ7>SMڱ{Mfi^~f{^m~~}NIqž;2ܟ3iScn>T$Ҫ^:z6S"^ 3,2IU*n WYn6p#[[~=}3m.Ä8 '+{:t}63GÓT9*rTYIvT[X(`N{v s.趃U"5/ endstream endobj 86 0 obj 16249 endobj 87 0 obj << /Filter [ /FlateDecode ] /Length 88 0 R >> stream Hlɵ0E# s]Qo@ ߫8`?mՇdczY>24ԟ1w@`el0AXaYL6ɋ4*O);y don2 "6HZjt>}l2ۇو77 Cʔ @$L__&W۷ -QRMfܧcQdAF顺wA*ڨn2AgM2Rms$7CMfA<'dVYS&WK^7efDW  74 fi; omsY-_2@1`H &\ќӋ7\xp1YI=q{_!]xn2AN4O<6I;@m}5ll̟}n2ۇ, YiMf$2 KJr +^K8z /-/d]gfjF!6Hd/d նl9 N= S3J,g6H'A^أ _t QR& 2*gf;Ȯ˲FedAj1@t 밼dӍdl!dIAy/t2 Aj^W+"o 5 {)kʍЈm}7PP3/dZmn2 D=Rf9@mfNtu\-oX<~>~FôAj{GNDAR)liWo88ʾ p4M>dg dYצ3ۇ$4ʵ2Nj]^me6蓕d~e; n5Ԇ `_C ..U}G=`iH&~ZoNIDq3o$K+=&ڗ}ȸߋ v<3 kh > {-/طeRAj){>;?lk3^_6ȵ=J򲃔(ȩ& RęZvy }ܳze\^D%Qa2c;ytm-e[0U)\*}oTplwxcY;N9mI|²6Q~ɇԞ#5/;ȥ4 }i x .l:5 VۙAb"NVFQ.o2 ;MlQݭ2Aj|%:{8GeDT0&/6d  ryWŸSvRg'k)xlU{Wqj@ p+WdH mYRNvv? R>}^%eR+pDYieS ԿlUDoht %eG/p%Rel.i#eR#^*B[ /`e`K)^#cCƉvE/A.Lw6 L%;m8Ⱥ[ r6k99AfdiMf&E#u֪gf;H=4Ie$S]-uDC6ǰ5eԌ2&dź }1H˘#6Ho+I]@fK pZ#6M2_Cz&CzdvZ1=Z^fl|hTwRC?ԂRA&zf{p3d_b0gnbf))MɾoIjLv4Mnm9I$v(Y圹_w-e"m=$) =^qP]~!/7X(ZsҰ\Q_dĥK;6/,=eO&.V?_RNB#!ćO%*;S5[9,?Y}>nG`9Yy]JQ[ rhkञܧ>=Ұ:.7ӡ%h))ٹ:%В idzN؇\wF=ѫN isdm{7o$! }YИg#I_lA3W㐂{˘iW_`l˂:̽ Yc`T)eY(Ru4ڿSzLb N ][.+7wz}ר8BfM-c"/uFI,wK*ٽ3!ْEma1-r\rӤ`բ'RQ+tx/ΥM6 G }8.e/\a}Wc&Ypg<$a }x,s놹geR@D y$ksҤUu2FJ/ˆP<6ޗE붮IZ%D4Qm#3Z*N26.㝐c[lcF:~FZ2QdTݲy95yIV$Dq̒&Y4r,Q&% e) qXĒK_ܹrƬ.RkSA0F")[g?dI!ȑ6Q[NL6[js[YT>2IEh8̽ebcSO3$cXH5폔iH/YnNZְݲIrj#_lJbFdZDؑ2٦h;9+qj7Gdetvrj?dA#+:QnR }:ȱL}q׃`(VSA4~ncc8vQUACv izh^ ^ɧhNJh[=d1jFoTIILOd5s&d'{9d:Ib϶Fs^NH}O &zY\D nA$yDe.8I u+ZAvP|hU7KI'S;2myt q[&{ nxds`/'sܲhq%̓EXS+WkU=F+!MrGFbT(1-<6Ɋ>W $=;Av!dۇ m:jwIn[|F鱍Ĉ6$&jM`8Q}HԳLLWpT<$ޭZ ~l#1,X_lCFdI[AZoTM0F<ښnv UY$W]qh]lI6ID'O2$[/Ym[&9[F@ AoC9%ӭR<2ɜV32g'dF.i&j$Wm#Ĭ|hDeYu&ٶ.x: $U$m ch42$jځmuw#$л*X6I]']r{IaZ yC-n\Q 긊g +зLpi`25$v6Ik81E2FBȶ&h-DQlwn$3Vx; 7%gJUJ ]"a:hְ2"H5LivIvILBb.뇌6Yk;c2m:^(7A&N@RAvp!=r(ȾvRf[֑=&/`;$f L2N".+7 r\& ;n.ORdjؑς8!(xыfS$蘴lȔOzq멭e.90-oA$o ?Ge[\o;Y{F|~ꌺӆ_o۫ #:B~^a4իAI.Y0J(s!9(Mog]Z4z/-ҋ[mv ?lF96r2_geUNf}F; v=4X- rLcubr'.g (NFNؤşs̶S&ޜێɺ!m-%Q?g ^zI-FCuqF9zSFֵF$._%MR/\o燭dPr6ַ.i%IV!lU&&I)FdLմ6r+-ؖaue3o%gIeMPKb5}&gl.]xSWKD E՜VlmjAAOV_6L^fp]rI_oBR CVGiVzZl}N&햽l)7[Dݱ=Kx+2$kfm {o6Mu6IgsoHú&Yl&JՕz9d̸SgeyhѷJLG ]̣[5n!9#":\tIm$*GW{/:Nk)/`6"TdNyiiڹ|$1 4M2erm/Ȏ$6ɒۼm#фLl^6ɪ/`Z^EB"2Kަ[|! {?%g_ʍl:%cՏmCzBm}mIٝ6c6<mĨm'VC&8hIL]r3[qK&!߱2cIoa-%;9͏.9`[:jQC&ldc6eq ; ̖/H4)BjYvLm/!͎/׹o}uNsɟ܇~ rknIrl'dR6M"&0w sVՎD2$l5gF]MݶQCNmzTPV=I"YǹiSW=i6>%y%ԋvm\ef%[I$M)jݶ/! 6IDidnv8odF;Il%g&9g՜h\mLEx!Mr7LEBqmܗu}h9w]t&V>ITm9_ɚNOm{̅UT!m$BFb!M2w챬fn`(imM28IԪuFnB8 M2BͶ 7,%k9 Re/PW#Lr;0 LЧNK&ؚFiCoKvr\dIji^2A9F޲ȕx_XEp[;/$TY| LN-\u{êK&ewe<. !MM9Z ,&9V<񲝔$i[=x$5ycW!l#+^DoJl e,IQ-vG2A;\ 1C`GGEm^&) V3:6U8ӶΜDUHԜb&sjJt.m;`Ymu8%銏2Ad`KxoS~D^Q&xDχ6Uώ2-Ab D5FUPL2ՌLܶY}\U!$ dIl5ͲHI4m%!-$Bf_R\QevQuY}(p^|TӦ^2Ɍ1ΗM2fہt2Fbm  >3NZОyN:r/ml/n`K`M0$ܵM8YhYn$M̼]fI0 ˡ|P(A:љ,`9M4Y< z{6ɵ iǧ4T6ISyhV ؇kڹ$<C (:m, fWFl=.v-GldoB%ئۭ=g L2o[S6tdA me-9kv2$GIHnd϶׿9Vv2$1'عLPm|dJ=pJ>29䏞$v$Gdy;m"ҩ&Y4枴dAe( *o ^>|S2>d*)(l̵3o-ž?߹{T׹etސYBBBqWG>K(#i#~qU VUuk-Jq}#j=gkY~E:{7ڧsL IJJFS€V}~$Z.qh9Z6O'M\:`#vlYD^$!?#4wz,IuF2<'-,{sVE#%-j|~${M w~ۇtcFzݣ}L8|J{dMT_@RXkb8rH{Z[=I[3o8E팙A%8F~BnC`x` `'b h wR}9`@0hu%4[&8^ʿRk~QƒmX5;0jU 1G!mZu(]y_ULp$]E3X+e+q,!h-_(fI&Kcc6ɹ5 Y&m{T;G&8r8 -2:ZqF!lȎswY:-UyhmXu:xWk%6 2c=p?2Ѫ;NIf5CFdZp=!ٜ6lOK0eZd ΥX3 QE+azl+W^Yu#=2@]#KC2A6闼eEF1[2CY6IN zj~dupmF]rC,}.@isk}$MDJf[&8G PWxZpɂIIF%U' R_wm2x)ߪ-ܛ?J5{q4L<½o#ixU+C'2IJ7m%{m::&)&_hW&dAnxzYj$Mrfl]}޷8mgfkL#=תcs6g[~~ %$f'Mr|gUɡxQ%Җ&9&_!1O6Hκ-(\;;p'pjު%1bn POU ,}.Ts;en澜6HGڹ9mty%&36H%Lse'}H/I>}E2$=&_ wl2xTLfF#K%/`;IPRk&Izs2ڇl{#E o,u|gW)˲sDNJ$k+??d$D[v<n()L]d. _JmMydI4hh}bښn'Mrց!ʎ ʋh/K>`WQ&) I r36FG[\㊴Kp؀+ZKpjꖜ`F30`Iz^.y$F?%GE|l2$(hWIIF1W /ßI64gB|l3m P>Wn 1ʿ2 PV-6_өm C>_h\mNk! SNF۞^F|l;/TdAjJ.6cmvؾn4g%r6ɩM A;^8dվȚ4$+6ɆN,|e]]n$m">2;Pz宝61Ԯ R#Ց6d˪[IM+Qe>6_Ɇ$kҬ*՜<LKKw2 O JHFdclվQ([$rGPKoACv"f }r MmC&$foB, |!wݶ*-'$}0Z):R-)I ]r~APc<:#T-g8 ]݈FvI\rq2FbM?l'$C?nc2f @|rؓjfG&bh+lQmuis!oNf;u W2A$}|5|ڛ tƙGr`~1n[EN&/f ޸rRUG&,4>Frt=u8<2I\x\lpz :e6IuHsoLG$"(Iq2$Z;8Eo ڏZإȉw^? 7;X6j%汃 )k & o B7oN2쓏LnUdz UG,VG5^W&j,lf ;MRI;$ 2AVImyNۣ'M,"Y/'$S-Vb&~l(7{Qx ,</zu07pfeUZse^L:gw Md7$8vAZi6d\x[!J̶h5d-GI5D2il8 X1 +N,"H 'd/ð:ʇL6ImYr2Aa;tى ITl'!w ǞNf$fm%fb~2P^.ԫHF%?cy?R$5U|XE m@WMt TAjkbϫCi{s\I6? Lct2AYnp/tn7FBRt0$P+x8Qoeej76- =[pY$tewF{:S~\ȰlEI'6$7wjy 'vhu@¸` `뜤9^'qYyn9H8RilG} #ؤ584Bf]Pi}赃5 _7~S;C e\Ne38]lU#ܶ5iK5dkU,'uڏ!"9Z 2$O2LvS>i"/vo'!9`;2A&-^:_}o9@k+ Z.Cr|svcJyAN>Xu~AcUv2$1@9g 2A *|m9N3{4l'Tm3 ^AfΆ|J<=A d[!]_󶃜6bEo ~gR$2[E=l ѬG1]=u9'wlC­CiZaV[9+0_=lz΢JsM?U#E[+uRabuy jJF} V>6It-cYWFIrjUAZGhޏZGARڰչ?3$O}ڬA%zppj Ѧkcyٶz|{l]0,bt-,89JKlU#?؏Չc9XrY0AqD&/J!d\IRlT eI5']]ﱃ㯫scUM;mɷfFx XV'~&)aRmuuod/qۻ8wP=V r 1xl^@1Q~A!QJ|&x!~؇\R56ID&i3#Hd^3^+F:\lo%[nRL}LhGFd=e9m=eTDG[| ry%[F$1Čdg>2$Wi$bu2ڇ{kMI!}qM2&D$}2;6*O(qH*^.n "  `In ոdDk kmrɺ!ڛ[&XLeer*1 Roqչc`oeJd bT x$uQ%,ڝ6ɅӄO|&m~mNeUoeŖs>?lUaIFLŢɿ )-^Hm5LQ&䕻$޽oeIkmmdFkj$e{뺡(#d%q5l!7\6I챼;Rβ|lc2/l}ȩ rdHK\$}HHi:D!Mn }?6ɾB9&&&s|fInzQQ> #$bA4:ճG6+׾mK$MR}&=IMr45 m#,HFM%5;C"+kq0NiViYhmJNԶ0&OVJpԔ6'Lp)+!l#&rq B6\H՞y$OFs\y$u/sm\*9eZ+%u8 9H%XTA %"tY%Xr,W`|~vDXv tSxgQ&&Y{$kN'MrӴCgIV?dB+FADyF:Iul~Lr26Ll:G&Aa[&87fQj}5'LpI%`Y>!h};C&ьduMnN2$z[$@ 4>$Z>??lq$M5U'}Ht͹6ɑ \1f'C.(Y3_3D(eE d\{FFA> ;DQEr#|ٚe~wE1q-MruH y2؇(!I@{DMr(KF!̢W{SYd+l|l%5!U ym2ڇEG& *z[v@Y2Ɂ>˂>?]rK (vѫes,N׹OA&XJKvnpnmsaܰqIj3ƾz6QH'@'Mr5'k?Cn%DvF?DyET/6NE1$,Gx$̀BhMs\iNR Y؇l[meK$i]r}JӨ\In[a3o'm$R[=Pz$}cY݊Aڝ|lg4Xso/^sn u'LpOtH}s9e#huodz&>!#̳{l#+ZmWG&^V>SJ[>T9C3)dIN$Z<=[}K8IFd^NjuIVLTC&8֐%:[&$ ؋Old+-<h3\h- L@L% pA@T3(E#IJ f%f=\T=LkYoS\ 6aURȕMr5f&n2m$|E9dIk^MrayS"i]u$6.Z$,䜲kK>66ɕPrޝEklp$K*Q[%,\*1 klJp͔5&e#3W~E[KL')H ݶ~ovXm !r-32$cHٯ6^dUqhȲE׻6=PlzdYA|Dv2[ob&/eCz_F|y.,GB^OG2)9Tۡ!ˢ46H!d٦OMj25׋T>2vP2IĚ(LP?]k{Vuh=_us ۸r7_ld$8AMr*zbM/`b߆hI2[כ/3=^>`r7/Hm(Kc60|0m\.tRH:ݲx(Wk%D:Z~O7j fyZtMM-;d\gFh$"W4;%M2@pnws2C&`ۢ*lL2Id,j[oe4s{wͺ{|rx"&Z⮓L)Eo>UruhW^-wsһs#eK1dIf[De6kDxD-eoi_ jU7 ,Dm]F`)  endstream endobj 88 0 obj 16309 endobj 89 0 obj << /Filter [ /FlateDecode ] /Length 90 0 R >> stream Hlɵ6 E#pANsZ ka^IW>ch}*Ͽѭ1Vsʰ%:?>|HKF.(D{e|z$^J6_忠~kk4 U k-Q4,`k)Xsl`J C..]|k78@C(`ry9 kA 7,; %kTPO@Zj\vY7Vx&@Yb䇴#Gvu7.#dYldqg٩;ծH8d`e=!Y֛g$xNo)i]ʩl#1 ݛvw.;2[ZVJ63x~Ab?*vd;J5Emfݺd ?\Z%Nl6#bj1tR[c'C/Q'j,maӖ>ĝuA"Ykgv!i̶|ƒo=lɕ< {ԍJNf;Ȳ8qF$ ,&MȉF\Rܫ5^떃yyiڐoص; K1U'm8HzD짟vEkw'm$f;> $V9퇔* WE: ~ȷlt^K9n7n}8;ڮ&$F4EA&Ȋ]N WdC%Kq(%D$ -XA.,Y#'<z/%Y[`\$\(ou^v&+ٚeHşLre@G'hsA0$$2Z-)yAɤMnm$>$&d$ $,_NONf!IzZxfn$xfD1ܥ^r,5җrC-[!Yfx2F. 0" bS) ?F{; [Y 2[F[4J)6M'4}`HorR,je9T%3H-l`Ibl_K&̼GSH̏#YÍSc=~G2#!}.,O ~9[>dU bg}}~=BKi`w:niV=  'y?7#%sCjG6gW">%5(&__N×(ȧez8bՕ?=zUkF=-: ׇe)!lU޷|ڜYs7;TGֳC}K^bU/t! A,m'm;+9CGtg#VH "{nJ=YsrN[U{`%ȈoKvp6[]tձvm'hUvR.p!}2M8k;STôվ#c;zausaЖsQ&vb珌01_ݲ62-DԬնvulYuJv5ScHxrCunMP9e'\r2.UJsV93|չm'5vrdIj'(;^V:]1z&1ї~ϣ:7[)VDw]Aro2NѲUWm;97W\t"չ1-4f@ɜ#o :лExNb͜`^dDV'+/GvrFw&&Y̊~ V}qW"(;e'[O폼m';vI񱝔e}I*&w@Y?<yܮs4b07\X'Fڴg&9wFuoY6;JDmv2׉!-;X7d}Pos[v&ZJ޸m'WV}"{CVY7m#iͪo9dG`a'092BbvIVgNv4Mr}l'Xul'gt-Wcr٭-9㱝k 3i<6IуUnGIkt\HJ tf_4:ػHIIa6svhW}NH>N*.2mݴ2$5d1'vah~jc2AQdM9j޶6ILuiԐiTV`c*9]ihS6]'gemom$n1,oE)jW\mZ~C~ϋ 6Im7rd :~i,{޶uW$1NNr}vN~M3>?dt#2A,N9ÛvZudI"ˢrswpn&˘6I$*FӧV~AecQ&j!ZJϼmdj=ӷa;9VM&&)r"uMFɪ]LəyNJ$q&d׮k):sdܳ>b= `l2N"*fIfL[,vuQvp.rh$/`A+LW5az5~NJosچmh?ͺs% n׹/s$}uv?s~m[:dل kyۇ;)ikI{MG״ ,~^9>φ6\y+W&Cs4-evrV:6Idl)1@VMTj,6IzKo(P(f%;ؚvT}d'r3\&MRsXF߲h;٭TfFU%z($< V߸4Wr'll 'Q"$rd]1mNVH">l'$U!~#hXst'MWQՙU)&$j?l>y6"VgFɱآy$Nu 0NZjez|m'ên.b{vHl֏$6.hMvrȨղ!mnK97m'%.,A^eNCHUE.Di Q>0jUO+!8Tv@ʛ'c 1MFde2MriI:<&dleM$MJ_-QE[-bK_ZLIGaIbҲb1(;Ұ*mn2Г [/y$})m0¬2<<ݲxSX2ɞtYwy$Gm٪8AIF$V^oi$h5{&Hb_ɹDmҏMհjI$$ O&r3I+t@5%?o` .P_v z 7 yWՁ`di+17^2$B{b$jLhr$gOMrM၆q?d4{l6%8G#;Ws ְc(2W>`>ȿl8ĪSI"׌6IYIڦW!o2N"O#`X5O1Mb_[H9odMFԌUy^3N6o雌6I;H鞍nd#$ZL ̓c;iު0Re&YZӵPwmz(MVy$H!>=Ó5/=$%5"9$1Nt*hl K^vmWe2ՐL~&& P\]9"^xa ELMUsuA&81W>dIblF"vBINxhr5㹐 <>6ɢYYI&YRblE5MFxhDAh>nJ)$MS,:ED؇Clm9}H$Ub}FȊ3CIZo`zRxlv .|@jUYLP$i{@;fR{30Uo`,)!Cڗ }!myRcR?Vj !WÏ3|i6goVD5%ېCCt cg caVI4tjn|`~5"{ 2eCNJ̥#QMR]>P-Hڱ Yc}z!ւ_-ZsDtw¹sXYn;l#_}Hmd^=la'[I ` o{&;2Oh0#:ɡK?vGIg"hJj^]I=)`2 r̺ kI'm;gTK>dޗŎz6ɞN=v\P(sZUsMLCާ_z|d%2D2qD?o2ڜ-[YՂ@$;d] MMMs]rŸ1%)&Ӟn3&ehQ;ʡ F .4(w0\Hκ\G2I ާ6 VϠ&)UMO;%Ǡ&icUSMFI4x~\rieN':A.bK҇(%m;mcy}N6,Rq6m}uqW#ЎYy.`^bNbxg.X76IqѮ:x 2l2b9KspD0$Pwc;u8ٚ>MId-{v2{cҪE2$Xc3X'|l'mQ&8F+fo[L3ScQ62#~tkfy2zlI&Qdԑj8yk:grɥnmZ\'l]#LPp2y]rYOͶXcn.u,j&[%'E=2])T`_t??__G ޶4>G}$\ g$EĊ={~d/lNKn輦U̗,. M*Z|'>2ALCŪ2J`v`Dl.Q&(}@Qhyy~Cd :yӸy%X}0,L2GﱍLڕWK$e%c&gF&$f҆l2${YO~d'l82]dIڽ*MF&m8#I_LZ?_l-getdp$o+ݷ-;ka\m0$yj߯ԖW{-h8 efիivRvBDu~&'Nm;EժKxlw`mDquܶw%tNLph&M^2AKkY*l_Fc_#NR {"|o{}{Z}H(LT͛sc`n#L/}.؇,*3Jօ,{lSWkHdIW>`'ǰC 1<Q>^Ń͜KFɎYDK>LiH\ 6x 0)[0_9@=`{ʕ h Q&V 3kr'/mUҞU!g2||\3nM|H@"OqM2 9"53ڇlګ)9K+f=Q0l@͌2AF-6 *uQ&$/}oAܕKF %g:j#O2ɩ@|n,6mcf1wzm=Ñ&YENc my$mLZwG׹oiBpĦbaA7R Qs$/hD 5KnM9>d.բζh;c΁^~v$}6'o${-klɂW` bf(.WC.NIb(O-D6,p6dUށL\t F %;cjY%n0$%kEh>÷ML>!y_[>` %czq ;ۢI֪us? mCU2&d,6m2{n\@Mrʩl.FΥWjsn2$ź*mMYt6mi%]SCMDe e&)M\=!%gm6o'&N==Vm&MFdڀ&YN0#6I[FYIEwno6^F5Rfy$mn2$Ydo2ڇ٣kvljh,\y1 Ip[tNX-\ӮQ&hz$OŏLXtU!dhxq-(;Yְ"4dhFcmޜlM<6ɡg$FlQgFItn "|/Q4o Js[=~-{̉O 2^f5pT dӒ ?yyl%e$:2>3ڇLE5:I&Ŵ3$.sjHR3$EI >$:e'8}H E3IyxT<<2A1= O "Ɲm]E 21J7I z?Nm0?$4P%o2$[˂$!m-jtv$ޔuv+)ç&FcKy[|2˾\rMKzY&KF1&M2$Q>3NV4Xtd61p$#Th6hLNyL1l0$m(>$> o$1ږmӣ}ыEs\gFѩWvE=_!笽N\}H;^=MA&8EtIڑ}^=M(-*zCjG-yi<kIa Ey/OR-:.PA2&h)99>hQőd')oaO1/!E;+- hrdB2$J8 6IS%O@5 ڧZo(1ktc.&RY}z mҔI$m1I Fg[|{Ok4䝑E;v[ [YOXAtD2Iko#_j16Ibd>7ڱqGXpra $΅]I8֕-kL0#lRwƾm ͕E{˝3e䜫Qř2$ǴN}lDh;qMM=Ծh6vy'E <6I bњ/m#kPx?NV}I>ҨxugMy M?]zdI569xl't0Lh;YCFq e>L(X%s?`Ԧj_h:>Ivd"m',Tl2$J;7Ibr$}c;K:Ctde&7F6iE׸[K"uUWD5ƚpM}y*2bOi%Ifi&k^`j;ZGvUfj_dO5:JU޶8!}H8% ʻ0&$eoA46,ڛ[=r5?dzoWv [H$WcQD dvYI1͟V*^dY eIeFq0"ٷf䶴KeW޲(I-- ! zmLU #mIڠ$KYżee`s;\r]w?HKUIgQDC15ړ&W&r6g6raՊdIQ_`Ѯ*5H(lo6Dr TGKw0F"ojo`j@Kkp0w-5ۯ?6ɦ +64|xH|kKy$Fb_e D+eydY|d rζFmdƁMRg0%my'+#dIcyl#э'hLanϼd+n>[Z-jA&Uv&.M24CFb(qNF@Ѵ&f/ڣMI!OYFv2F$<5$E~$5+]Z6I&+HHr>?l#7ۣa,SoVv6Zkw2$_n-cV^hUFPs QA6! iyˇ,eMri$֙` VlEN#l`!A7mRxCAjIFțdI?=m#n.%S|$GHJ$MiZ$Ӓ Gu0 L3uX|y !+1fyU}dea'8m`+CTFJ|ՙό6I4/[IzM2mW2mQ>`3\axE欍ܗIl%iEmD`/Aa&ey"Oɵ > (U ̞^}C&eE )m4H L0g]zG6sUjWLZ6{tDv @i4`I6p26L.S"O$gsO}lv)L&0hmߚ%pwr D N~q0$znƽ&ٴpf&Y'Ź.I]߮q(DKfE d+$Vw+Y[&Xe $] lzuxd#32'Mr24&Y˖aǫ,WINt&9j5)( ]p2 fT ԅIZ)?!$cJ?2{d=21 ]c-`mqd ͠Q&}I! Cv2FϪ 'gUN) Cot3CMxZ[uz0iseiP${hEN[6j舆|3?8$'Od&m&zCf+EI֜>?lZ\՚G6էK][>sr}-\[6>%I#Z|do+K&h@GAh!Q,ٳm]&liȔ-.f rcq2X[>$x[eH[wri*DJB>*ru cQ&٦r6*}82$3$!Myq;% Լ6^2A,P ~w0$[1$Gl&Y ٨>6RSh[ό6ԓEWh 6*e ;mc#q[嚿6ɪyO&YZJZm'}ȡk6dId\ KIF$hUrZ|mM!]NfM=WV66Im$:Wۣm$h-Cچ}~$aa?&eGt_nK&X.ʘ#LY)uOHF+2emIKw2\Ak ٜĮX?.9ԭv=`NY FNw$MJ!F㉬HF,hF-PR%m}$0}H\Js0HTj~~$,2sDQ2NƒhsmlKʉ|Ss2ڇ,E2ڇEdU#:5Mac"OV/K+SBL54kNFdj_Ƽme9smNFrLIZ h=d[%:9۫J-A|@ӱLXSkRg9C1l) hLo?$IQG*}ص{J Gd_S~$;lM2Ҕx('Bi;eĻGRi[#|kw풛K 6_T5Urh'|}mbt(MIlಜ/e#?l dZ?ru2$[I[X(yl !- h^+3$S՝R'm#zyb]a&9ܔm -) {+ܜ 2pTmùP&U"A6.AqW_ELr'O$:]Wݬ8mHHFyh̻ãLfm$޲5xh\5u&KlZhlIb'HhDNhE=ȒqbT{$]rJ_FMiZ]9e Z#3 FmV髴Q$Ԁ` 2jK0$c8YNFyXuB0wZS|y2`lG6H&CV9PR62 =IֶG! 'M섮7})Y ?6Io(_꽐 6_R"C=K%1LpA$125;>[%}H~6Ra3rƻGd^r8&Y!<6I5-Y$|l#8(ݷ$g#$&D=g'MhF6S{+{Ib$Ґ;v͙rnIldH4*͒io 'M2ݔyJ6IW"l'Mrg&謅dDthç7k |lȿ% M7c\s6JDV}8e5c K&kLcQ%7+!{KTs5iMzymi,f''}Hic"NQMi*)9l w# UjL0w %od R'6I-HFu6Pg!wJ5&yf=JքE(}|Gu?/n$nzcs~JihDsv2dI"nں&!TSμfI62Y 2w!$)~lYO{di+KKhr$"C>NF2 9==6ɖ;c(e-}.)dˋoC.jCsFdOYAC|.% 7Zy߷_d퉿Я{,c.ɶ[u |^W>^Q>d]E0qY|VzS \ k!Q݈|n~7xZEd+2AD^m|:֒c$&Y%KU}:ַv>d=\Pc_G5 K&O&9sI%WDb$me7IfT>G/!h4_E:ys2ܗ"`!c@@5OLP7np]( d-Te6uGyu>힄G*tytOf_9/'/I {51Zke l?Z#d }#$kM h|g'jVvgAo~q6EU8qM|oKΗꜜwM$3-(l{| XwIfKyYzyl#3 H5MR/ȕ|m՞|>m# ֙yh] nBMHV2*m%3:nr1mĖYJb-Iѵ82e"u.'|aj.e ܭl$:$Sp2$^T>Re Zc#SCM2 XVcٰmQ&X3N[/8T6i`p LO#SZòy汍idIR[ Z\rv+}Ft'Y չFv2$0&wZ7m%+U>$#$_G6;} %h#,o9-=fx&2֊7dbdDTݟ[{l޲69 2ǎ-t6Rv}MrTnyZw2-'M#LZO6|Q6gc|ZRu2F"abb#,~n[Gk6'O|?/`Z]QnGD,p2$k}jFb˺^l6Z$ ik2F#Gu$snԻmOt}m-.y~4Ku0KSS%X5iur5P~߿ iRo`*Z^Mȼdۉ^une !^8?`ԐU-ؿ2Q3M_24篶Q>d=qF"n49; SbV%+o^eEiaqre9;lFIRYcdI,ž#!>leܮqm-Z.tWl.B((o|*ev ^09Nr͍~Uuã Aj:Qϣr$yINk7fݺA q$*5vimڂT;Ibmvr+':_9ƾ:4B~+6VFj$u_9AE=X\pz>ҽFא&8i%&eGO%;5i-֑$Mb>QXb'9Z }K.D^/GWCMVl/NRtNEA?jԖG%''+vmYlՀud+'=jZ[ nFAHl"'c}^;I- ײ AjGPr4\NP5:s%_$=<ɣ??$cnUfIy@@(vmѳ;y ߔcc҂~,v1 AjRs燝(IVǣ:m;ΟD<*3k+şY/v8v|#;I[/9IԒ>9, endstream endobj 90 0 obj 16340 endobj 91 0 obj << /Filter [ /FlateDecode ] /Length 92 0 R >> stream Hė\9şߡWv첗lQ$Fb=9vܮ{ A ENw}#T-v,^J:BvzRh(N2Řn# dI2ȳ9 $[I9J&Res-<ȓYr(C+y%U.kɥy!~'Msd)ї^}iDl-їv4}i'! 9BRq9/V2+|o}WM9ao4Lr'g{VgwC#Q̥yqψpʹZW l60ő'hn.qHkf#Km֜m$nqWḺD*(l`NGY,BfƓy}"L9 z% Uw)i0\J"6ګQ v2<̬"67()^ViHn%2 zUeޢ@} 6a^nxT2AoV4TR&F2VN63 > Iz+ fRjm [ެd<n#ZɋH6ԖM^J~l${}:QL=Sw0I6r7X$!椗bV2!:(X@-N4]l`Kf%Q"1ϐy1(#B--i~2b/ IJfSbn#KsGl~.n$LYI0#ԋJwB-CR^]j2I6r<1}k:Y$H*i~q+ZEwD\ٽF<`ir7b^$WUcc.EJP҅_FJ/GUJFk'PNһ, +<YatRyؕg/F?g/^ke XEl` Lxa^䨛Ŭ`T "џX}1/rN{.EVrl`AvߜIl1R'<*m')gDQ,$n*\t D3Q. C:8K1=#`%xK{HdIVYydMGAoZ-H v^-<9LU)캷Lpt1yTCLr(sW޶X zH#F`a#ݑ-J _A4}('y~h){KV&$%6ɎZd]V6Ʌ8UY&Ĺx--a(IKWyh4Z~l:@4MMR3e[{~l#]rEokڰt=}[um]{or%8kܯJl˜#XYj]ȿo0$[UIM yZxl'Ƕմ:h*Z\vp䞫+JoFH|P&G&X8QJ^2!qYJ$FƵlHҚzhD]rd1]7I,,CFD1<3hD" !md :}Fd%9{&{&9~ ljcD6{\W!MRvF3H:33$1FXV6t۠$}Mɯjid6IT"6r{dOdRgEIdt$B),nZ{(rc.h`Vd 2UM W&8z7-IbWMu2FNx?dMn2lU2ɊuY}l "z\|l#QJiI9k;m't!K=` цj^x= 82$\ƿ}clR')?64v2K]=;hYa͋GAl][&\]'=2X2Nldnd_]>0:jdlvc;91'>݅zI%mօ;ּe'GJ\/$Q)MEAvжvwduk9KF7\3 r hs1/m'!K ǂ 1Y"-,#˽\:|hb(OepK04`Y>W`;gUvhSҔl95[Sfvr X l?WvpKr'lA6emv$s34vh;$\lٷd)od*ϙv)c%SNڱ~6m;W~ f(A$ V柈%[&L%žnzbdk%oB}ǶFYUIZOh8:l1Gu0e꿚 {KA>^$sׁB1_"Uwʢ]/r6M}^ŖR:{MB:V3 `{*FFvede.&vJ#6oCWujL]XP=/f Q.dvIVM:U&VS|(5]`2d9_I!sŚq$;vzmUl2,GVOUdڱrr$I(; (FnU*Hl0ʇ`~(o`[:Q=%ѪC&GULx"pm*e6ItXz<>$MRMvOmjF$6RvMk {~Lж;%{hE1Y/2Ab« ;9($hh@{MP6A2$"bj6Is!eMF$0LE~:eM#2}ȪUI\R}yԔR*Z wꝳ$_[#gYtU 'q{zIN[#Σ}Ng+zIxd`7GC{^*Ӹ}oZ}z?b#εN벽e{!7֊2ɖ킐k>d'2M~fIԾd9h7+Km&M 3(S+|~qJ3|oXfՁ22nA V9YHFQf.~EHLh!&YqPi`4mɥchF5c~r--daGV9;xv֟`35#EEdū ݶyhW~~$-+YNM `JM$M~(;8bv;g>|o`YL xmhYCH>dkoD6I?%/6^LTz$mfoI'>sj2A< |2tj(HmInn>!In?6IN2$ǜH&&R 8CVL4,l0$ғ  *1;Z&a(iL4:7Erhc`~yQ%V~^`oYfC;`I]l{Mzl'ё/TSm&iH&rrA2ڇvtm IZUO`;Yb xr6eeiW un`OvXp\Z2i!d2ܶXj6<жKFP0I ߼ȚPM3MrNbIh\7BI wx5KsҖdMVgWylmld[6)%o2N"#g&ie(`pٴy@KCH2ɡm`eKl02jd[~~dRiN$GW9ad$q5%v&Ѫ߻~$3U4SHٯc %S9dsV|gf\J]&"B0$-`w>9&9Sj^/zPeU7/֬d*'gj?3}}&Xd LG|@\GV%O~yϳ菲(F9G(=$^Mxx}Țڷvx+z>?lMZuۇ Jiȵ).ۑ-ZMy=PDcQtO{8 } ]w}]ΊL0r||3U4kc·}HJ|CLC|jMҶOt\I]̠吾dBe9a(iu=NC)d45+a}~q:smsoD^VaVeUvyӪ>$e붝D"i\ lenճd6KsRIuMFw㱝DˇI֊Y|="! J؂ I_Y&M B0vDDuN-];6*oɆi7{&ٖ?R˼mmչcD/v06m'+~  ⠤xSժODBW榿L#n}A"In! ý&u%$Lم* h#{uT[&CN"\OuCt] LҝIOdI>R%/K69=J);jHeW%'bhP5ʜr͑dh,(Jb{],HˋK&6ؗ_Q*7-}$SzK&_s7gFdC^^&+m֠\2Ak :d-¡א!ąДlH6m# :5:{"m5O _~$1ah6]6ɖs[ Dm a b`&:C%X*5L)ʳvF@//dIڽge ]0OYAx[xN>m)+;""YG`Kz\OS7n 2ph"(5e>2$|mdї{dI6[EIfgDv\'p26dS |;ڇ.f~` ElLS{NdAK97mvڙ{FєDkKe葕eiԶhjmeąUm&V-mMFS"ڻ5m:ôhغl&Y hLU >ƣo&Ө}DG#S-:g$eq^ѩ .& ^ j+J)e%}-OdTey$Q2-?eD=A&R*i!;dY΋&9L6bA%Ӑ#ۉ=Ě^Iy2?Tu֪ѵ*h;Yex)޻MFd!dt %vi}2ɌwBd.ʂw{*w1Nʡ.R :KC߽h^cf |Ń\M+7:K jCvRJ ;Burэȉq>Hdƴee=e?:eK@^F׌dVLOoS3ϐ@GS&$HOskF٫'_d,W>2~CLw+x4$j񍌶_d~%2: v*n8~ʨ&WFe7Xś9:lJb|7XZR.G5>L:kwv vzRnaDګhnQ?KhlM˥}0Ne٧RQ!d{o?I㌠n@OMT9$tÄé}>cG}8>J~)M6,$G d?mJBĹ4Fg$3$!4I)ȵo2$G ?!y&&)iG}h9Qpq=EB9 ̝_"Hz$[uf6IkAHF,25lGl2`?m+-dm$>K;nQvPj w<\r;Mk",)KtA=);ij|dIG7Di;Y@瓷dwd2Y[?\ K~3g+g~Nf%g}?`*T3hM^ mD)ɦ ,:C-^\%P/Ns]T?ZKHNd\jeTF Vyi;HtN_h(KhiZȑ3Od2W,O"%iceDԗc:"vwz^3 _)d v\KZԂCY w""o$Swt$|_|o2lx2{T'y6}}5qXm.zf&Щիtl$jHdG:J(qlGZRÊxL6:Hs85>v$MJ12m R4QqYhl+QZ5fu#ǴXo0>12k`혔ʳaJv 6!~r1=ٿ^tn=IQRZ`~eFvpxY9%ZMrM~_AYIhK9RT[:5#8'YU5?.^(-;|)4Y nU>r-ViK.Ƀrl$zSk=6ȮMYɭGv}șOI.odVDgm\C~L.8٤6&[uNB{n7bOȑ rKEL6Vc{\p:_7&nq,4 1d[Tm{ k1-(Turٸx,铬kAOU .|l;)ca䖱lMWl3 I8dŵ}xd4bolJFgrȭIkkIvo&d.H,;}PIKuA/ P ]@&Ͷ .lN:w.g>Af9j! N{Aq/c)9[;vcYq=uFmHr{7I/݄[Qk\ d%Yi .U(rjgb/- er>_z&_.ExEh"x(*{7u~=BU_Ip\=Jv Rc'4`Hf5k&٧q{ 9$<Fw$·]e9zU7~2ӥi@{5l5ʓQνd/$T#Jʷ@D%9@h$YH9-1LNo&AN$+(*ENŊ&.*!X-ii1ښ^i|r&?*+ܲb O줬(Q"er%yúeF⤹e洪=v˻$cTm2U#ɕCﱝ׆^ih/Cf\c)=cu0qtڛ2iNOGɅ=]\r6NA:x̶WT:~p2U{/\_я$ LAlKJVv~ld^ F9#Q|^ ڭ:̲UV[gTSBOIym޲LfRCfd[ؽEHU.y$;(yk<2.G'e=y wߢ~l;)b,'iz?6H;;hUm;95_Z kԪm.mU_أq02Af䠒;cn}L. y;G|V*N; nMFRߪsF+# PR /2Hs)ec)q ! /:YԻcd5ߖ!d7&S93T7rUvR$#7 J:Bd1 d'F6HnçdciYlF[x!zb[ۯ} 밵  *ga#H`:~SnJ$zBN]^.ҬJ3α5d j(6ȭ'FّNYjD;TބU>AAϛTHێ4nkU94 $>AnmD,S]1>2[| .]xZv#MtVq#WZCՈ%i|Fݸ5̿nJp-r? [Mp#%}:V7 nnn䦬7r2Lvdj:F#lVmؿN4=2W5r1~B<&I*,VGNyOyz$[FMBR Zqj}Sko9ZH"N?fIj#9mQSk] &"H{vJ{3}ʏ/2HUAQ<)ZY#{7C؋FKV! Т_4W;`'',]zl #2 lc;)6A))ɮ׿m~lIYU~2NjcְI;;A1H r9<\Zrf\ meS5wcL$Ia(xz֗'BnYz8.4c)0{d'g(4@A.vwl[&TVao8LR%0A0+o|de rl|d։EGosטG&b+yϧ:~^&Y,_P_y>D2<t?Z7db=!uXo`MzI됿kwpKp.Y'1AE^Uɉ Zand=,>g(ֲ+\Yk$Mh6IXz:n$k {yl,-ĽT%,MAvUUX6eebѼ&ٺ>&9x ru&9xIaw6ɕhĢѺ|e!$k\\оl2$u/Wژ7ߢKnu] 2*dǰg/h_SHdKzvJID}h፼mKK$d|h;m$uU&V&FPN>r0m"CpQ'_p88>{f'Sf&d mR$hXwι/ٺEs'm$jdmZ*Ibq)<7ho3&j螻?b a軓D4[],Ö}wnR mψ1j!aG asii{5q}åCi VT J(,y,z S)$yn;leoMt;6WVeYvز+QTz7lc_Z=;Vwi\jMT=-Ls(&`9L-y4:lhh#[&fbi696\r-EܮXs%[ʛ},BV2:w0/Ɏ%YdRO_IqU7e.>a?L9_yNbyMF {SI`i NbkXIέr^9_s8n㒬X oILbnԷ9=6d~MX+׫5o0f+)M6(ݢDx TůhPAɖ<.$w~f&)scRms%WcDwafK3K`,V66d^kʿ]&:&u,;.AцaCG?d &$>r*l6}I29}KNLXnb*4vl6K"]]F TL2޾I_#[Om&YmOIZU̩Y.Av \e-l& wIʲ(v8l6IS }#n9$2GDPnmnu6+c;^d:`/(]]s]2At '96e'qRlYt$1߉EGod,ђ>mdR{Mr$Fލ|C&6?G&:HiPͲ([&Č 2Ib~Wvrk_2$kiӢsMyQ9챝e=Y3?2A[ 5Sdyid̙{zCTveKh/B0SQqx Z6Cb IzOBm14;~&9e,#ouZoO+ҹm)[* ͺ/oqd+ZJrQ6ev.cAvo=LrVlF6ɦ]h$mq4dIZ()^`9duNg>-h;r Dj׹emlѕ|zl2QEFF6[`1#-_n8yZU_nXð 2ɮhdI,|ttU:K咓b$='6ɬⱝ5uUgeO02Wg%w>dd$qEQ8~f{jN[&G gG&ن6eO4w&Y+. D^dY2H"mZ@ !VE;"S`F>iJx>Fq~gcU@t)sKJd]BUZ)r=ݦOuOPK^(fe .A^ڤCym vgaYh \O֚R1Xk#hY9z0?0YCI(^d.Jʞ-{t:117f~ HaiJ endstream endobj 92 0 obj 15960 endobj 93 0 obj << /Filter [ /FlateDecode ] /Length 94 0 R >> stream HɵE#p/-'aՃx|G.y,{].UkrK y>^RwكA屗([&muX3,l\$?yAJW3=u'sNFڊ2@{i4c~k$7.4q Nvc9EP-^^I$극 v![[`AJKF9]kh4:z [dQ$YhNgF;vdUN!z):l\Z`(2m4=lѲReǶUvU??lIXr>z╤UrO;,9~2rd֬eirw`Y+2b7UuIEw eZkyYZ_jN.9SZm:7 :~~ɼ=jN(eljSɕ1/<6\Rs- //킣dLkקۺU[dA)$vr*m9'Ouxl'eݳM1&ӊZ\6HYa Zms^d&)`F^&{M+g^2dSez9yio~ nUYI[tae}$<1Nļ{i͑FQ.%Eʘ }_bYA-:|n NCI߽eo$P^M&U{OdiKHd w˃iE5~k:;qَ|~56-f*X(ojQxMB&8Hv){_HP8ܠ] OyhpKWrʄ_dk5pedg?DTK hghrHn(gF{C32C D;fTZ 7'=dTػ I]Z䲳tAZkIcqxZPN]CYz\yS9;>v} {$dFUw4>؃uAkFliϔ )UW%kU rlS%Z2:(Fmkk`EbFնtx7HQ~'?=D*']Xxhi\p\TpTh{E=BSF]KFT1CF߮J 5_Npy c>ld5 z`57F!kLGvw{F5єjnCo@ 9gOlF_ HdQCk/kwQ~T%45K.&)&H6EH]^)}eHs!L2=?.6J):6l( 'UGkzS6R4MF[HY$*)mdq^iNUTm2FNMZ/1&$:9fMFHBfs.Ȃ(LYFF[Id=ZR.ʟd#,E}sF.gdeVOһFۮmd-_Wc{ D :7e#1*iIqd#-bڨ_}Ѿ贕8]τс6m#;BNH2J&} CkeY>^8tE䠾O:,?իeY0!Jלr62u97 `DK9R ڳ+C;$wrU9qdPrwmdGLED#IeA6u8MmeN׸fUN@JR^)+6r`RdzFGU;K5Ll?̩Jl%Ye76SkFniz6B&m9LZ4+\&j EQ!dQrChB$j cwmd)kFfmdxLeLG~lDY02'O!NRmdi Юm#5,4il'1) I+dG]NHn*UKV&d+6)L )!7m#KdrR6m' Z%d $}\t:eO FYI5\y6rfyj3 fdlS]M)c5!khI\\Q6 93 ؞2U92H)!)?h(P-WoKXB&`9a!'MT8kK@x jC;?|,vL3j_H{?=\bwX $Pla&R |‹ܡQo:Yf.1&}^^?A4t{Zߙۗ/oq@0BB|@*ǁJ?_ӏy_x_/,y8Gkssվ}'|s[~9ڥ1qeGnDѫx[%\цYɂ6-ޫd26'/L }~J~7@9?^ɻNgEɚ_7i"v^%x닽Hd$3'7'wfR[cN-AS1%q5m lX}IHm$&|%-=9Ч{l#1˕ДpX{2rw㡍Wm(h1%\6q]a?9ɥŔDeLSS2+ǠOFfd_{b^R?cJ~4=o40%m7{GQЬ6Ut)&M։-M!=X}UI)Yrxl##˷S#'ud1F'&LġObJ@OLPPgѾ~;%QO*!4%ObJږOUĄ,wrh''&Y}Ǿh~ւdee``r1%UjJzLȌ!9X'&dCk'dBҙYI oC?^wL,WYr`C_Sg&h{DŽ8ӟ'rҧ?1![Ac7?1=j-ӟ'KQ@/(V7LhS15 M_?럞jF3v/zk JBZbJLi;$RZ/V?ege9fJəEv1VtUkrJ#i{ vU0Fe6Kj1AoNֵs=`>bFL]*uE7û$PF$1?ACc$Qre=N'?eka✺q\Ӫ#Ev?shEN7Rd Ʃ`q蘍 R*;oxwۛ`+JT[eDKu$_vr伂mLL6밢1)iN$ͺ(*9{E;:Sj`H`K@I"0#TTɚ*:vrLOM)d#[MFdǹZl3wGX3״I;[]>u-d:\rc7qtzrKr\1zXuOZ(UޞvrIv4̛F/-7w\, TxE=aŐ甝NWTQ#&9oY}7wI4ӳ^dĝa:Vư!bѪ:uޝCurn%06IGs8Ékd'heC&m()DsV6|^sNdMkM:k7Rm'>ȘIS/=2I܆U|át1=@{p4~fI pHz*iҮm/t}Wsǂ:Q뉢 s{LAαD>ʋd9% gJd65GzcI4܍t:8A [dJ[>{ZK~w:LEܶ%!N G_Gic{ Pt{Jt JVm9:~`Vt lYǫ59 ʛL.AV>hKAAD-6H8Z`+i9lAҚ/dY`W"eh(Ki(Ϭχ CE# 2|e8*yAR3Wa3UIf`\c*" wZF֍!k4l!+u!d.%$#&+χ rP(p} FdKm%*Q`Yo1Y@/oC e&M8MZnZr(3>ܲ~>l9iC ZJږ_t͕ 2HC52i7Cɝy>\pr4Ydd-ɗ P~A]9|8J /r/8R:3Yý~3́BR_F7>R9}HR: 4?t o_Cr>Mhy#rYlu-p縷CC-m{K=^%Fy0'pff: ehU޲KeS'9`!ZVeyhԆ_2 ~K> L9χ|ٔHg 6Hh.B+L~jQI i#K' Wu۴~5b ny= ]FK谼 2- ,χU4N E]Ph{d#Ho3 E -:ooLl ;K.[A[Ym3_5Z]ph7mMvg]7W2P]GΘ Q(&[l[hv/XS ԨtA>`4u% ۣ_#5VF)j {>lژ#6%xχ 2%MM[IHt4͸m%3}_IAvGYyot eۚVVZlfΣI-֨[0S]MeϾ n!_VW׼_U9je$f  ޱKd ^kx : 3_%0n\Q#۱J`\b_-+HfmA5[IZrf: k,|>l%M!L.IÍuYY咖[gkdIFLԮ1&6Ⱦ>i| ۰ۥ/# 27ٹ[ɅǢl# RT&6Ȕl%oBUMo[Z}VQ$`,s] 2-}AVF \zoS;ކ~[YT n[?' Sd; L߹'JKx1 GJmyJJS[NHo+YA)2 ;?Ql6ȖF>;Jfr랃 Y\UwAw3#}įOdӟ1RNN L\tÌ!QҌ6uSFpt-`;ep/=J6-'ahl"Gdk\8h/myYvYB86,Ip:YJ%3]WA&oStm;I0CvG,u6H:[=!)/R4k| 3 \D{#$O;Ih0{tۑ:CUn7J$DjB֝Hg;ZNB}󼑳#9(W>I]+Sh2wg3V]u]&Y8Q>átm:g e&)'Ƿ|v(T'S+JIw??s79WYA88#Oލ`]=V} 6I<b3^|"ž82Kֵz%yAߣLrJ$rJI*"@ 490NF&>jb6%/fjv>? no{HvzmVOdcCkɞGN9eֈ#\ӢǒXG.4uLXlg ڑF\j+k)e31h=Q =/Se%P[_$ܰ|v ŜUpeB'K5|MbNs5Xԛ G>(YɾuuxiվR&den`I#T3ҏ6j"ޘ+LP?_ȑW2AXO9xv5&94.{LpnՋ+py`zHI)d+>Y?L9Cǐە` j֚h_K,Kːs,Lrʱ=;mM#1&CzNFSBRh)$![X!%+ ;o:pv$}H9TBvhR*g)K@6?P畯_~·~m}=!e Y?2lf~bp+GRz>=6\T̮m>dsP9M^;`gQ;{mk.ysrnZprcƹA}oE{@C#rU1m>(Uo>>M}L<1ϜHxB%&2od}*ՄdUShi}~~$,K'FIyexLvn 6~-Tԑ>dYI.MR_ŤZKo2P'@E`)˾(]2\ҟ:\([ڽv̷&uH,m3O"%UOhòџdaY? r b*ZM Mt *Q8M\y#̝o$) 0Z/qlhzmr9!5 Y6I&Y4[Ns2J.UG*NFdrPe/zl#@7~4N$C{d]TH~dq ̒ .*gTك(!. Kq0$uPt}M2o4dcMPdIf^=3oȆ2Ӷ>9D{lKzc??l#6 Bό6IǤZ>!7m#>z&{Ci myj4'}H. \Mb$}HxݶIg+ ,9Oؑdn*CVrn)I\sg>}uM:]rX҄>k>zlr6r=%mQX!'%5YuCHuշ&g#D߱QLޮq ]ߐ]57G&YJ(rNFHt>~*n\<K.ew5&90}G&Xr[|;e,SI(F5!V?M鬇F7&i9m> $Rt\$ҍoxl%TZFImުc,kڞJ2$y%=Mn &z5r Mj'Z%dzfIh\:m#j$El MRl!QٌY%e|nXveI@F/6r2ꯇ1PHȩȉR'iYɛc+U%>~NI롺R$MRj6ɂ ${c[hK U@Ik;.5dw}lST dI|*(v>\v ܲ A@IA^9Ij|)'N"'G&X.ٷu::ds} O{6 tN"\+]'/%_vܕRmipͣLoַ$jl.zBRgxl"gգ 9G=0,ȱ 9kco)I{u@P|z"՝[MlRo2ԣ엤* Z..9Wdpc8s[&(q7;$%ԡ~:ʿ혲d,{n%f<lO16ɵԪvSbe*|zIv2 GL#kusK6*]Lю3`x}݊B\~Lpe`F2co׏M&A+ϼm{Nc)qaOˎ# %:D P.G&YqO61]A!Ң QkW͙ E2YJ}k;՗A\$P$g=jLpjn7뽲M9 .?\r:~Lʜ6?oKad*`;Y4z{/Vgi\h,Z陧^KbWck}E!A?; rɟo\kx8/٦:|+^vr K,QX_TO~m'QiEIzr ><ߣ9lo_ٛAyYs_7iE{@owƗ125p9ӛ1ZZo:J [,ZgBzeOlٷR}*}e5i޵\k36HJRǙڢ,v/o`$U*_`iH[=LNsNN[N~.&A.zeȇV&n-LOI40 h;AngDȾDQvP̖> stream Hlɹ* F#:DoW h`rԇϿOkIUc+/8Iɝ:ȷ 0f\y [#ƴ ,DjnIvsQHE9|w֒D!NuQ$3ɥã2Qlṡ*QXbě.Hb` { N}clO,H)\:Q{F"Id]py:z^݂ԶyfNAA,;F$1ݢ$[Bh;%$AeY@GsqSj^dA޾m;%SAza RruYF^` }nJuo `9 yv {OwnheZ&eIږ6aI}vr3k-eL/ei r%Ih;)0hkNd]ob?!:\p)ɂ7YJv'io$ i 6QK߬`;)tzYFNO?mT4itdEF }\"&mO f (ˣ wh%EAHwddEA>Nun)ۯ5BR@Fda ??lmd'hDH}.2FX$SdkZ 2:md^A (~2 g.Nvxh;eh2 )Y]/{ȑ|\6ȞGh) &]J.2 giNii`;YUL燂G TD?HA }7Rhzٛ`-dAvZ$ʻ^6142ߌ6uZ|{FI2ւ₤ceFIk 9K %ه 0Xu{yEyI;B<{v>?ME2EF{6)meoҲNHJ6H) ďd7Im](oH4ɷ0/e<;ʛeK AJk{r [$}M{u1IHo6ߖMBQv!$0؟"pRgfRcfZK{jL2 աr7ebpwW3 I/]Ä &%s˻R$%WDyiu4ϧΐQWɔ&J %*+(IIe:ڡiU{͢)|PHХQҔ d,"yd(oPZկ'2IAZ#Pcĉv5x?@Sfi0pO;L4sr䯤Udݣ6MI[tڸX+"f R?qU[;CB:Mf%b&5D$]6H*IMI5*;n٫-HyCX5:V;ei1Z\t6X4g/ P*%r(;)$;~? \sb\`p&r$]oLT^2\ }qJ>.0  U/A M(#3/0+rWh 7Kk0 0e}sp2k 79 >8XwNpѶ*e,R4(%;(4IZ" o N),m_omdK@NJoFQJ5/h9C)L. t/\Ŏ2@yԴ`^Y.N:enі G:xILrTl4t(VdmL!Q텟.@o c~V$_\# (Sޠe,JtJm謻wdRA<:wvH)NeAJ7e;)tXq~]A+= .g.pKus GtA\m k%S60iq"kE`>%kF+wZd'AJ2aL՞TY d)v^Ӧ_.{+r5dqu)|Lzqn.5ҍc? S+.H9/dњl\XEgl&߼䘶B&6ȒkAAua2/2Nʭ"Q -2 m$Ԩ]>?l%[+ȵdD,x}){GFvvSLE̒LZ0%o2;#ǁ늂^&Dc"f&ZU$ i{Jg 6ɒi o@tޫV&}f#dLRW:n$Y \_JɊ+eP]㖍,UK㗡a7%YHiUȩ&9rZݯM2(i)]Ⱦ җu~uP%꫕a5Fb,ObC^6R%3$sBnje7_ v:;uIe:yF"}5}iOmk:X2AW6O"yNFEdN&>mLL%}KEGe6QD?u܇."FI=䐼0*r ğkSG^2b2!aN4=MkDY[g66-csIVuZn6Rd=]M2%yF. *WBgN6)CKj6$.Fm6GI.O+ WxՕx!4y]ޟ%&Z Lrf&هFvI[&%ahrqH3ҏ^E ~YbW&ٖW7Ifzm#!>יH!5T 5$Fa"$,R%w'odZ~%U-m$J@;̫ӬU&MnHW`6I,NBVIL\trWeOEUfNld塣~&z1bkmjCHwIviRER$"]oJ>[iIxJr#U]w61%%MO]Rb'y$uSjZ[6 iyT'/ R*F9glʔ2[k 6ImaRe[6Z jZ*_@=H[6e[$,j3?؇%!o,TײXl#Jݜmcu`C6yu`rI|CٟI )v`TW&5I{WđN&MR#ݯk+Ul4kP&N.VM:΃lcXvGdIq .el =do~)l GLj IkX#ގMri>LI6*ׯ`b2t&6RҞפ625znIRD)ժ\&ٶr2iDdIEINi|tLK[b+1Dح-ŝ[%Vl3Y~dտ9ȇ,mIyE 6<>rצ>.6sJ]?1u &3ӱ[5 (|gy\rIA%U,}dїJZӎXIOnl#02g5}HH-|A&8nXcv}ح1^t+XC1MT`ܕtg[B6^tSg 62%mLN66$k8&$d Y6 kVklIfѐi]-$~'i=N'ol>MѨ.&Yx<dY3Ok["+|m=Qmˈ4VpV97I&_'z&7`.V\X6\rqvJI %hޛ 1|aI`(6OF\8Qݻyeyf0/o$Ƶ_)mDK&I4G@8Ȟ&?IZf͟`lIo`n> ,NN ld=MRKs "ne+UR1Xo 2I43gO'odٲx$FTu|VGHx F:H^M:kaWI V! Nd?uuMR}5=R[ɯoK\ #NɱM.b_a"dne8yFb2eyh@2AQkJoHJ&صg.FbHWmrO*oa,J#;y$+vMrj6e{;#ܲ/>-6{^Dk-\N6IVmr(!w/yFbY?zj/~f/V}_%ؗ5_L^ Yɜx|?l% b*gNG BmiM%iV|fA`~IUsN[0)| q2ϦAv 9H6M-ޞ@(Ҙm9T`9iw"W rȔ~7$IIEI'"ɀXUe+ș8eSvQc`plk AYj>Af*VE2lU _2QȫKS[u2qoy*ؽ\<_d J$ W fA>QJ&٤$SҳeHM$ZNIB~>lM˳eo*7ݜ͔Xϙl+|" f%o) yŕʍg oPz5O|-U4SofQ`(oRyG{|pXH5-Ǹmz>}#J&՗ۨƯ"GwIdA+M4}TqTr2ڡI5MF x"/~=w^7肓q-,;sa@'˒nPZn),ѱ%9/d]N{g@Qޣ~ i̥ՂrC+ 9/~dOC۲j|Ɉ5J[Rn-7Y;i6W* 2Hʭ[%'bH[*l$Q[;UvP=2Qjjꩽ{7&\t`v}uKٴItjdo.;lJf mEw!TAHmwf%+T=1\1dAUJl 0+Nmk OΌc`Z%k }/yn {-g}ldC٧ e#c翯\mN\6ANK| ɏCXd[* Hx h6cg#x-/?m;?e9* ޖ:+ 2@]p0Od5Δ$I6'm$3?eT|I-+G`AS9QhZ|Fʵk1j]&KuRaOe9t˝Ia4ߡg< 2,YzȞ΁h̔\6HҼF mXR)o0vKޤ߾eɚmʠ>lvW~>dՂoms?,->&%9SD9M.~=%S*|th &AGFy~rR\k?1 8'M!^pXM/w'!_=.{IȚ,/_lH_礁򾎓;m \ %Yrd)#|d_8Z %yѠw36ȒǪKV"G|iw Ԉ*`mFywYVלdAI!L'zHrwClUdK9<T}*F/E1f. )y%zO-SH|H$-5F9L$A8%H-eD6k6QX<7E\`p?KjYA^Q1YTHZVh#kTY߽M6zZE=mctOجuIu6Nre)rX4ϐ*LG]pM^~0wo`x{#UOjm=sa6jj= w w wzS#TIh\i՞7yg,R|V'wFJ3a$. <;?x:N_ɫ^ '}HQ1f~,Y_)?7sdM"TGvfχm$|ymD(S72ZS*vK/$Hl -d7JעCݪl]6*A\E]&2R!d[,d%tp/wJ5Cئ䮾Y<2ȥI},χmUnh$]>~W%`DN]pz^[5r 2ñsZzdWJ^6ȥ^ks2ڛ$럓Vr%¦|'YJ>3ڛu [K#%p7[ج?mHJ{øٝ8̏Nw(dK G[|k)'e4SɽsܨCgu4%_3 SOFf χ[>khe=cxs/d!.O{LZMr2 ,RݖˎӢϘm8 9(6%hcYj~@N$YDm3e8ﺕ1E|fAΓZӎ=mS=6Ȫ᪍>m%Z\e=qE$?VfA"7IuFrJ2mNd$.HN6MTKNFdMȝ6OHN y y){6ȒeBIUba+9dOC h$,mv ףaoQ6)U? \pܡIn,;N pU߶T)|wB,+$cv ąNLl$-M 9^[&4^d$$Fb4r璝6I?&KI HÒ$-D-Zwl`U/\/ժbK4.eK2VOy_ vA"{W$m՝6Iw<6ܥ"mWVi%W?+6Im&9n,#5'MRf Q&ض$v'ݱpLBr%XnkH,O-;r< PG̯y>vmPG|rB6|idz5=!:ꥹh_mhlpac5su+~>7~ u)2H:$ljY{l{:NcCt|'g&U3h,<1 ';ze?رVS~] eR-)[NϮ^΢*[/񢯃KitI4:nH:gm:iu;+m.˾Nc?M!&?!k9ز  5iɅV#D=r{(YHmNmZ(EH˪{9mǶ%u &dFBZi'#Z5V̿ +9p2wCߥѴ(& *MMrJbUJ dĵ{k4؇}E  pu{-M2O`G݅`l? VQ&[)e;'LS9RNFdjf&H4h+nVpn67[&9GiY2ɷ@ᘖTB؂n삖eN'Mr!zkh))z;eSF*LP+aܘ2VGFH) 5d9y콴~lH9Fʭ!{bm-~-+Y"Wa #20J4-n`hG&9J62c[(xh,v+83oBbԚNFH ڝ|\rHy/׸bB+g;Fd暀=6^ʎ6I4E.vH$\|hӣ9e>M'd>&5+>nr`T6ɝ&\cף}ȞFBFby{6ɑ`@m\IOC.ceV'9@hldZs#f>`JV*dG'=$lC{5[~lk!K^m6-`9e^'PD.\zdFuk6dm-ħ&d \—LP^}@Zxdh}P$W-,iQ6O;>\ .Zd]e/G&YgW2Aі2 u–2)mmdt;*&&Z59I-E_|('*ȕ`iz^!JI0,Rf 6}sTުs%e8HHvKNgVg2yIt%g61l-m} tIv%m@|L}K&#;|x+YW%K|(_?[?w=z?ȇi4nREmH#\£m-x~;@4Xpt%'w(Pϕ=^.9K;Z5P'oR`{Th%'^rюI|<%)#RڧV3EFT&K 3Vae6'|3%q8?6LT]!mNDXde/-Aͅ@O6Ğ~p-{ D>]jON Q366}m%QT!Ds=zăl(:Δ8DLfSw]kN7>lϴ"z$(a#odeMYIbl-s5NzϫD+Qld;̡(hYD0]@J`͔5GFd}iO] NИ6\*1M։m57iLORA+n{x$KZ dL4s$.UN惤#ߵ8[ki~C v2w'}Hl#zM}luQNm$z6<2-3 `X,>ڨJzmIԻG>`@lA6`[`YG==6ɼsl#Q ~_̑NFdյ1-pFT@+m#U#cM r%&[%X#l Fs l2nI455G/B2ӕd g2ɂMM2A<~k-P~2ɲ^-l/yuBpN8, I6FKsFbȺo'm-)Mr&9,M2ɵ].Y J?gݼu6'kC·,$kEim#oH, H%0]A3W&$($܇ 2A ${&8!sYka;$ GH5l`E [M﵍o h5&ڜFb+y$upw}m#*kmjBf^mUFCFd.QHFH5ykZMc_tNIYw!l'$!nHϐ{=1FL v!ȱ;`+IciA&9Թ2A,CAN>?dȨV}#mBREk!_䒖'$&٫bsXCJIp%)6[vP~d(b $"gxmwG%֦e~nXЀ,ݿ*<l6c^;Olsa + A$I}><%lY)al2I\!䏌6RewPm9ok]y3MRP)j N9unLpH$Vs~y,2;쐧i6ɊXն 2$TZeۿd{n~  ?|%;r p%ڌl+;jm?2$<:$՝xFVdedi(/B33o`"QE`ɎbW.9M|RM݂(K D5>`IڸIJG &d-2YlMeH1._xI>Pl)KpiE5d>lp~~$"Dg޶HFcHI&.MIܒ*c8B5Vmhwxvʰ$Baq豍DjtPmRc,cmyj=dVu-IݶV9|d wOcm$&MEI&Y~3O9|^%,:rd%6j_6TdJ4oȂMFdcX62CO~$yt#[`~dɳܲV?.6rT{L0n߲leQ&h]5 U^2L>?d8\/y?qI瞺^&YӰF]:fIZ`$soU;)N>dD=&YFoS>?lC!a&ՙm= p36?3$\~F"QClI{H M2dU6Drt:cD:6 Eg؟$WZC[t#֔ٺ-P5C#:L˪yqh+)G@3Iտ " Ne9d ֬zd#hrc=6fg&L!m eZ~l:'d/ 㱝rh,]$sM HlCAnLp%;XnOLR5N2$V]=M ULrM8g)zc;)E..L0/Bieg`rγ,>xI cvl#;uJQvrH@uC޶oBM HJb򱿟)psN*߄^Qdy}-J2;=\Ļ.iwlwBf~g诗;VUHFoQ1-6ϼ 2AGl Qy U?s:V>e}&NQ?2ދu\hwm'ܗ&v}mdݻv3C/oUWW3 RɶGAd]H}qbEٗ޽ny"#pG6V=ܶg%c!#dߛd=Ӥ:d6ɝ "I0 T Qs/.g*TpcB[`'>>B}m;)K{'O}ĉB<V$5i&?05ϋKn>(3[d|%$,T4-kY ."Kn'q R]5Lʿ#Py{d'M&d=];?3N,~Ozl'eѨD2V汝2v;^6njv2!-fxȞ R{vkL=[=ߊ1]I*S{S궝-da~moK&sA2]PfskQS-;(S.%IU;}@tv?w`6N _$&zͨdENnm#mձv[|?KC N\CUod-3kuݶlm/E2$L!Y o`?r}#%-Jn]`ú1 6χ%mP#P]][$;'gҐJl"9٣k#$o6vb_(Pj*SD|}6 QHg\=ahng[6>XKī'-U0ާ ",dH-aD^l ك{FRed@r}9\?ԲDB,0LT. )i)R^l!Cz LUޭe]#cR섯e`+:L*@\UmZY^aVt}YvWb *Wj["*(LA]_- Z6cTHȯrm ilVPɘm"ۤ#הIm Fˋ-dHNϤhT.E~[k#RzO' mrm IsTkRBY edrmJyjH~@f']Vk,t!<Ȗ1X<{bJ`r9*Ȗ*'K J,}n%vb6g'_Hc(y:ϑX7> ֠O%lcd˰mtFj|,[1"J, եSG6# FQF[kz0A[% &o䇄1x+KRʥBNֵ+ i+#C>vuaޡcP֢50 @d˵<ҸGV|Hۺ8/Ԭ0#1hɣ[]|䜐=HQ+[HlV1zGSW#O-0ZjGɣ5-b$-̽P eHQ*N2:Zd w~qcUDA0z1m!Qq>M$ρEU%K\s`P"BzC,`vG3Y&VYMeCuF9 ̲|H@Ld+$mԳm!P8.v'}*tKIm  \Yl"-j>]9Ȥ쳧JŏL A-p+}e=JBVd6VFm!S0thDPkζ_s,%n L`iJRI% 9Jp^[TÉ  f7m"JK )q߹DaD&PBz&g[H\l;Me ϶bw2үxB>*b Yeˤl\M&0m! & f,-$:: DZl e3gHH'~DF m}D8VKb Ni]B{b c/#5#M$v6^ݎ2DmDJT-2yC.H,=K uH+1*"YH\,5:[l!h<&>T.Ro.2g{h=rCd/;Y:FCeuIT."D(5DRtLAHϜm"DG}BBeRBFQ,T.p9Dj"I%u#c ꍂ2A3+-d (vM$ZDy9 &n֭]pDj3]!=Gl YB\Hmy-$wm_Ȳ7Gz -dʼcRDVtp"Y&-dN|c=j-եN,w|H% XDZ|cw4,[dJu,K<5M$n*]9Lj[H%ڷZ)f- ѱuO\JXl!Ku4 uMdDG}t.,`tq D3!i3 U WI.EK`A]\Kʢx L`+xԲr(b YB2Be&`*&v[[Bql2G} 4Nv#lwu:!pX(~>_<y7,&c0 j?*Ԙ/W-0O?xxuğ=ogϾC7C>vǛW7o.n?o?gw'omwF9KzQm oVW\e? o_xq}:?\ܼpڿ?'lBAD[( Lc_ۚx*"Y'7_l=|F-a;o?^\m|>.ϟZ/s]g#g^3..w/G on݇=᧿~`,^_G endstream endobj 96 0 obj 15758 endobj 97 0 obj /DeviceGray endobj 98 0 obj /DeviceRGB endobj 99 0 obj << /Type /Font /BaseFont /ZZHCCS+Helvetica /Subtype /TrueType /Encoding 100 0 R /FontDescriptor 101 0 R /Widths [ 278 278 355 556 556 889 667 191 333 333 389 584 278 333 278 278 556 556 556 556 556 556 556 556 556 556 278 278 584 584 584 556 1015 667 667 722 722 667 611 778 722 278 500 667 556 833 722 778 667 778 722 667 611 722 667 944 667 667 611 278 278 278 469 556 333 556 556 500 556 556 278 556 556 222 222 500 222 833 556 556 556 556 333 500 278 556 500 722 500 500 500 334 260 334 584 0 667 667 722 667 722 778 722 556 556 556 556 556 556 500 556 556 556 556 278 278 278 278 556 556 556 556 556 556 556 556 556 556 556 400 556 556 556 350 537 611 737 737 1000 333 333 0 1000 778 0 549 0 0 556 576 0 0 0 0 0 370 365 0 889 611 611 333 584 0 556 0 0 556 556 1000 0 667 667 778 1000 944 556 1000 333 333 222 222 549 0 500 667 167 744 333 333 500 500 556 278 222 333 1000 667 667 667 667 667 278 278 278 278 778 778 0 778 722 722 722 278 333 333 333 333 333 333 333 333 333 333 ] /FirstChar 32 /LastChar 255 >> endobj 100 0 obj << /Type /Encoding /BaseEncoding /MacRomanEncoding /Differences [ 219 /Euro ] >> endobj 101 0 obj << /Type /FontDescriptor /Ascent 1206 /CapHeight 718 /Descent -444 /Flags 32 /FontBBox [ -195 -444 1446 1206 ] /FontName /ZZHCCS+Helvetica /ItalicAngle 0 /StemV 88 /XHeight 523 /FontFile2 106 0 R >> endobj 102 0 obj << /Height 128 /Width 108 /BitsPerComponent 8 /ColorSpace /DeviceRGB /Filter /FlateDecode /Length 103 0 R >> stream HWR|_W+X:( BB$r 9n";F,epx!؛=Y{zիzH,cŐ)}a 2jV8rvܹ˗/R/.]ϟ?|8%{u(о5[̠},F"DƤO&b/үj1{y4TJNKbs!LLL~DMI կLD|wr1^Xdvv6sXc9([Zfoٙᧅ*H.ᜋAZ6f#YqmyydbYN`ۛF%g$YITwDEz6WVlְ̀&]ƿKZ-4ktA=osYK sX=6ڜ~m-Go^8DTNݠ=8֓I]Q s8}MJ@#+-FG&NC<pE/rv6~OL|QCٖW[Q!Eu.޵>,4<+ ZUR4VF5VYӫ#974fv 9g'N!PnU4_ͨV_c4L9Ҭfb仗ᏺ~ģđaF` HO\/*+!qw%q2c9˹?uS8_}oZ ޥgt/F[56 +-8lo"$)-\\@@2_ev\,#z_Ymx(h͢&!ȊiGǝQE J YG V\=8Dmm#*,t3Nn7?>̾}C6N K;* # )qx66Ⱥ)6b[QjHҺ<4; pIK UZUtJ!+F^25qC iN" ^80@̌$8s0ӌ͕jZ$@u!֢ P4CAѩcBtţG=+*ɺD(cvg(S13.8p.5\{pcHCL !+2FS~zvtl"?fLБ!Qo JPOXnJsr]\ 笚WkHS ۛg 6"v"k'w [xDl4(Hݨ࢙B ek Ybn:U;wu;Tv\T FCVVB!ϟM4:5663 135¥/UCYhe-*CzFy5H>&cHv؎H}C%iHn,~NCVo3E\|䤪i [f%ᖮ ܢ 5=Āt; 82:{1Cܝ*TU kH8Hxxlu3]PUW 2߾կ^g-`XN<iNA:.-gjGrb%\Ph[ZTUmLSCiF2PaN!TxފiR?kO}]*xOn=eAt~QQab́יK7!h 0-3zP߿δ~jŔs+i<2PQnm.3x* լاxF߮rQ0F4f,J`dZuCBEI GsVQM 'rhX^qh=`fqc Q|X!Q7; '\4a]"-jD^Yחoh>~xԸBazCа[QpoTH͎!_-]Ҳ’Թ8=6qHmmroPķj+T hc3]]ͭ@INAHBXvyC\oTpd8 <1|/[U9M!4A:wd$^ȡT 54]J!C+%VԠ@Fr\(1BnD5'|%I9Z>joP' ^gu: N %YDjW2a&a~.C:ւO[Fy K T55ܣka0S5&֙K]f]4lN$uzB^oS&:=]ƯWK#%*o"|Z@.PT>`P "aEfFB;1hZнڎ-l 4 n㝬C>s|>#8nJ944xA+͇ܪ:Jp#RHOϪ@tdaӁ=<8tuZEP8Lhz=]*Y4! v/7}s{g8S4]xqc2^&򘪐yvRdEL xATݻyCHeLslzZS0F")T-q"WX5=>-R a X;8lpuڑœTs!(̺CgŅ"r4SZuNp8c,TjmmUf_ՙəT(@r *miccB|ϥehD3Ff T6v `yHiƏ%#65<(5qqqKnP=+'U%^'َSbqN^1abU^KvfV^n`.#ڝ̎Uzs#Z;3Ú?9GGގS"fNC<]&oODCyWRW|_Wx_?i;ZHD@$DÇV>LQQ> Iposud37;;7{߽se&ў`bՈ}w,aAz ó._^#@ s. bf2đ -B6 Ƭt $ԕie`u`Ln4z \Xr;)[BD"S{ !c.yCL^\:bb xAb+_xi\Z񕼮7CCS. ;39JwQ4R==@è8)P[_]hаRO_|_"b`kmmOΣU~B)Ypdj)^y0i[fgg71/'[W#fOOYC4Z2m7yceG$n|>|s rgYӪs)y7;YFɇ,=g0̎.EuJO]|vG*ˎX1D1(9mjs#+/xe$cׄo(,# `5M ΊeݩCO5gB[#vvZɚUn1(¯.ai+^r/<+ ch" hi'qXSz gE@U neKh>}w7)kԴ eEDvL'Q_ 77?ѹ+-Xzry?2Uķ?>2#Ӧv R۰+]/e2{(p )3̏*Hm9nܰ΋ts(fo^ƖC:ơ"4hV$5h4XG\Lt67~X FFFPc/--u<'vu?Mf?~^7nkkk4+؆C|.:ʁpzUƕɤyR `+ KwXٿ+JXX}^+7ozu% AfljʰRPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPxhNwr@}B~l7B؍U?Ϟ=k 0mC%аvw> stream H]o7\K@v7X#1/TGqUXv M/9$g5Koï~{w=>~~} Zr˗g6oGvx1~?v?A9uR;n;n?og_>mnaTR)3h]bHn7u8l>oۻߋ嫳+)lTd+9ՑQ×npy%j~~aw=v+Rl_9%q2Շ(7P$vM"A5zNVqjEE#|@xz~V 1 #a< `Ye4 <}VxHϹs j0I9[B_}bO__}B_S~N."&-E !~*r60-}X+vV;%)!u U'T 9Ď E;mh\ `m Ԛ2376٧ڥ9,' mt m"g=5gرN\t[E%,O񦹊l+d($yD#4n ,'>M!p" ߇IsB#P&QxaOG'q+ DZ99jE>j" AB"eLe0*);xR9)i`2JFg*M2K:;xR%<vhR2EK*.@T;t1 TGq7eR;9'͛$<Le:ͷ{2ǶlO*qY'SIyM(&m*2T CPӺvibrXt ߎIe0MM7I0TK$[TbjTZn*QFa#wpS쭈6eR__S`ĀPI5$o.k|!?7yC~^􇉟]WxoW$ & mPEQ# #\oBa{ ;sGBw*d^vɡ‘|Y:w#OM(qSFįawj%:Js +:٤ΡH\' 9TjOe 94Lzh½EZeaVҝGCY#3ͤVzc;Ԫ=*4kփ$ΣҺ4U֖rQi+uLk1C{JhtutZ٣qq#m1±t,Ih4bɌt3}0tKzT #GqC|U%.tнGCD z4\Ⱥ!Tޣ\Hwԣ-Y2=*II#{T:Bd-tQ{:SHޠo-*ͰOC:Zzy՝l/Zu!!8dJ{u |(ٍ˱`1VD?+͂Gsi?Ԣ*b&YGpНE1uBPޢRʚ Ku,F=_*+YƬ.poQi,v,xTZRijF6h0(tjQaTNEf~ѢHVʒ<*׼,XT11r Yt}7`-*,rrֽFu]zō*´QiAԄ=F:(IL/tQi V<m|R.jZW{J%/%(ZC,*,I"uibq΍Cc [Tcq{G1~,)&UB,-y4cWJՅ= dԣ֤3KK6i5sQQuEN*S[Rչsp_i[OeUVԣȔbjbgԣ%e]T{J|t0 {T:MYg;L{Ji5EͩHʠc+b,QsjQ{ܧ,*2c-*Li`.GA(:CqPw}!jk׾Q8.ǡix䦬 qu[Q訴'Hc+&fEcL:;ME\M7S C=W0*'w38#&'] OixO P86+ӟ"^dU45pIj}:;S#4n 3:;rCI7o-B-:/K7Ä 0[/k:)A@[suV8]wY!:;^K?tv8Myt=WpFwREU*+2Uw*믎uڹjF/=4(Kn PNhMatnʖ>\Njz7>jaUYks/r(6^ :.MnER4涺,wu8ϊ)Dѡ^A[]טJ9}K"A,P:9߆5&cK3i;-G*(ΊFl:R_x[4rћڌwLd]9{;&GH^"A`"QwYa\%E[Ɏ.{VeERmpayņ$SEY@pѽ.$Eг6WQEގTNK%WVipz0ϧ:-wwu˛QˮK6lΏ![3ѬpZ✼K\N#1гgǓnJ'D-{qz8 =:>uȋ#=.YsJj2PgKa\lI;Qń߂`3vWRƗ,\1X*\'cdERPKk>k$kL' y#YZ4gKLH4ڌ̋4dhg0T{c]_|4oE_ߵTz:7HqMΝ:Rf..y%Ց ImaQI=(F][y E}hԎ?tvk'̢jA/Rxq6pz 1`:;/֥_ӸqR@w JNrW>,NgЭmX_diKJ0ϵd]ߚWx*!RN6[J7F79z_]MD OBnMapҥN G<f`+ 'V^צAV౧WXǩ8_0OL7]ˊp;ga4  4d0݄kwSびicM47>_0e1aY:aö1<={ q V]_I>tv8-Neסt-2+w O58۰:{$|[ZhyyF˪~i4b4h:rT4[=%X:;e[ tߍlړ|NϦO9g?q0zܶN[A",kS Ύ>5w q~k]A/ߠGtv8=YCtvpD]CgGЍtPowgL;H Ύ{}CgGCK[voEUU]߂ |ٲq,b\CBeCW[f5>*;`'<)9Y(>x2Xi0ʭ8/ET O^RۑfcɎ1c}!I8d"Y';+a8~H!Dk˛ P|c쁌"˜2nRN'zG Ift1vM*+̎E*Eo̎;IrgE89&mX/h#R|ʈ<AW{})#X,22nXC[{i] o4X?/&z0nA56ƭ]IgókuщB<|5C-"n8K2-AlGʆw^"W)-dpY I4Z_:GAR~W.z#FyT1q )^+K{W?5W(NI(L1eC6c*l[( 2+EN H-͉ecRo3!`餤AMt{;Xyw+:IMVQ&레w eeMOO%!1{>N׊et2?ct8ֻfq#8|v@ŧ J>ǯaH0e`tN45Q@vYh#8^lQz(4!/4^ mm'ϩ `o YBۢQTN"6t齖Er;HW|(] G2ߧ}AKܾpxnա|ɠ Ύb TNOyR!Jvw>V-wp>W/NM|46-Xܩ4 Ύz3 d1N9baѥU9:Hҋ7trpওߧ㡻M&~vv|,~|1d0?7T?䒝FyWR|qpz mttVֳ? ]J*>j]CGivfCֱD G9ZlB:8H#a&ZF~˺h™5j}* ]>?S$=ttnضu?c_O-YРu^E\s: ++::Hd :ءXhT bH3ε@G1o8YfYe ,Z1i4=pT7Y=q;H[a.Xoh0}::HjYRIcN?"9i-:0H8յ8As+H2W'N8*bM*KAkѽ.aTCIT!=::6m'8dYj9jR:Wv8mju}ߧt똶tv;PtGҥE';E5ɴk=ˢHMhkɸto~tqFc(Z·S:aHo$N芒A::6=O.uB:8hX)z. Ysj }PAfe"؛ 8v8ڥWNeT[ɋ ;:ⓠ´\VؼUK-c8gw[}o\9} 9}뢗Oި֭@cw`doK_2OG9#ag}:um=W8Jkm ɍ ֬Nx 4ĐtASXp0; F3Nn#7޳ŬY6D[rV 6;a[m.ӧ;Vp)سadH\M{%ug$E }:cMl R؜lvwbQmhk0Ӆn{ʵ6P9i [u^3c gUm tH:۰ijݦ/Ivި}9TwYI xhV t3|;Hԡ4ιUiD-[Gs:pf븣 nWpS 4nQqSS%pXz;Q-6M]Ng]hQEt -镒NQJ79G#|IAz.)e/&h9ONo5:4iXV+J5pGyp;'pT[A}ztԞh /#-'ElW12YkYH?ep.ifDӣr{ |a.Cy^~k@u=rfAZBxDlN:8HMB#} ]u{l%~8aJ@GÚd=AmtLӗ̱4Gj )_:*HϞIn0?OsԩQ;:(2@N)U4ҙtnӈEӟǎ/-w/ Ύ%pBN5w;ܣ.MR85˅9839~禿tt.V4đNf]^ ٚ_B?nHCR'©K_^Vmn,#d5\n qlZ{(H#uH<W{8]*Xoٮ\azoTw7Gnզ~jXM4KR<sQatB=rMAAٗWhR\,+<DL~†( AGny22D)^Y.V/4q4Fj/Vƃ)ϥvܷ4Yp.Hj=0Zʐz8H:B3V)ZkW`(f {-L@4tS iIƕuogAӁM鹵GႌQz+ ZpY\TGifd¼m z>ҝVhSri::HKJAA:$#7% ދϷڶQpZGaUF]a}Kq~̸R?Oh;>_z鮢<N/LXG+izM's=?wW9Eet~~&}6GJ[xG[e gKVd08Wu^|&?HQeҥςy8EÒ^eyN\l¿XlNsk=*oZW_^?h(Hb}_ ut8j*Wtpx'IH7f>+>Oi%C$Z&>ڮҘ 1ZOE koZhQ_ 8/rz }&܉RslNox,[GV95Ru480/`}a ȍOkldm|+Pԡ58{j G87\Ɨ 0nBv)TCHcN$hgbNg)7n~p[BEa)&Ya} YIG&NB7y`[֩ifM,jB}uWݠoQuwdǬ뻗owd[]`u;C3܎oOGǺTTw42fJu$Ddi)X_sn>wt|#9ְ>y0F^LZ ~tNVoA4ra4&!aH;:H@y3loimɦW?ttI1=9vưlcLdIa(x>7ġ~˔yxiTGh4ۿͬ O] QLn~]u)%\J#a~9S:8mn/[[^aHV^뤁3kyed!>7u簣pXWg'\Is쉺_r$;Hi¨փIKV_|Ho4p]67x#-S MP}9ƙii^lOŐ,=|`ڬT$hݎ0eoHzZ7\ѽaqTښHE0wmDQ:6!Yo skA~lm1,3bHx}-pU|tG~{CPG}TH@20(M&tu|Tc>:~'#5uRv~FIG㏧x4]u{y:9 N|4ҕ e#iTFˎ-:h}2ՑI8nuIőtkXi54zv$]OY M,Hzu'e]ISo}[7:nm Yw'tGH'>ѷ#ux\ jz,KpÉoJOt. ?`x#鵇~`D!oEspwG3Ϡ"|q`F^d] /A7x!ۣkF=}] Ñ5Kpk1r)̹Szш4{#~(~a}kLgde,x[4m țmO]I-6I7D }SK'i̶=sˑ4KGWd?,RF.O7ڤ"AjX]=Oőto;xi<Ί üeΦώP?H'F('"iZNJHzͭ[?tr$M}cFGғGcoN[cH#?GGy'4SZrx8kьnB#iFGOžﺬ..W 4t|8OGI/EZJR)ƻ[PQ>o>®-t(kF#ӥ|AD6~R^s*>XWՅ`*5ݰ5QGGo\iK:rw5_/:H>Zs<̉%6^bHpއ:Z]_>2ۿ.Ͽs|hGR|g$8)FC9H2i3(G/ô(2]:GCyUIG8AjI7Ftu8ܻu~:zO&#W,[0#a71ڏ[j9Ht'E,diIEi #in[3:;I`SPiiM>]Io!"#}x~8?tۡhxCPv͎'U~9S k&]I5[E6 };gdЃ#q >IIO؇z^Dztu86h݆]I:fEK/GҌfr8MQt$OY};ݻ{]IOkF #i;' :FSn4:>?pKngtq$qpnIl{\ zဋ!Y|VſaqjHtCԁۑnGS]Icu^eChG{/;Q ŎF2n#òC`,>7.g X"0,3Wd6U`Yה]ގ Egt +36m?8;ƖUB &Og YMty]o(V h@Wf@,`;yU˞ G߫ܞR$=~^IOheAbܺu X94vn!v ^de߶\nAx[ă6, S}BֲEu_1niD-v-ƅb豣!n]hP}P4>Da3@_W?%VK.!B"G؞zGK(uC,mAsnMڌDďyUcʎ~{ɝ};k=PRf\ʐmep֐2Ľ-_ ~_7i<􎶩×d@5o!bYm2ՁMQ[dj5C~Y\7"m6vY? X+Pb[34vXqh>>mސ= *2˞8z[='EfcMc .E+DɲA1A<4Vtque|I|7z3Vpft~z00vN.ZXyEg ?Yㆹ&5 *Pd픩" qN- I(ұ}wlѬvM񻿗~t#U E7Wl] o4Ď#P"dCmS 4,ug2@Y.]o> Xߝ?y'XPN b(,ƊuO(MEXY|(8nx[N;䪼ѬwtdEYZǴzGl:Y3.A]9iw%vegXFLmt̒EK[hlଈt]Ϩ:IT[λk vn6KP rg" ꬝YS V7 }z -EޖIh:B?n;*k`C4V*{ ]wϝYT 'XFbllid&!)"-ս,8&&`'.^^ --ZdY-8k R6U%\lj-@C,AFe;;ldlC7|lY.llE2.#, 4G5ФPAq־,f䁮P@qJL e,HJ|Y V'؁3SD2M-!KXu ص7eg|!`{xl$T)f$V؆875.=-4gY$PhQ9X;wSOwYc&Y, fF ά(l2&bCKç<$yPZWp9 2HJ]T@Ŏ dt4I(Uև|Ge˳f|% t34.-,L YѮ2= 6~GUC}yדJY;,N*RGζ+MRfH;\Sw1{ t^7jjhd]l`Xnw8 !{g=դ3d-U< g5yZQ[1zMh2#axmhL<}h)(AmGs0`I%Cǯ< d}t}m2Pllܰ4۽3e(6B;^6l;pgr6oC6ȣ|ipoh >_. άEKP 8u| 0ɃT00Q<}3 M>X^}beg0b.c;*+8Nڞ/K48@=Y~{N;KYy />gtor9B@'K)q>Xv8hԮYKbI}c /]Y'pԍE`Amil;^@+.eL鉛ra5^HH;5hP|7EN$@'{N趼PngǪEb*fl,"m9wڟ6pOT.zGI߄KKơxϹЊ -HH@;:[2I%4 ߶3@+ 興0qkwa]?EwtѠMnGk~hOw2 sŃ*{PmYrӖޞZ-H[-,/-k`)HQ3un6ɷHԶDoa5#3"}4yܑ@ԹOYDPy= a-<|-٩}e嬧|$;)Cl>mi|@7LGDh87#?n"VE_?Iwb@O5?Y`aԗ$HvE[E:qUbv*v5ͻ.pV.v7΅M~eJH"TgwCÕ>..K3K Y'9  l(@ڿamajކOT؎3: M+,jDx?C ·%؄2 ]}ܤ:'xߣZ~[5?Ykչ H% $:ʙV`ېa]$:GEXcwNUӃd6{W;=YnavomMn-%UٍI3*Xܻ<[FzK Y+۴! 81򉃨!Y>I5ʬ&l>pPo-,-GDs5\ܒo(6͹ ew~w5e{p*hd(Ot-C+?o-,{-:sVw $;֣ĵ6-c5A193-z Bto>;?5Iߴ @m *;v Ks5,n` 6wWMEYcwz1-YɚlGu=Ǝ1v܄*[ em[B  '}gc8GmO vJ}k0mIqf S"}~Mr<[<*N`iwcU tl4_Uj Z[%?P}âOooX>Ʈ9{#xDk5ip $ۻmKSE XGluB/5?qDt#$В,| g  &&Lg@T!|`@~Mg|C pڊ#(Z֨pKw~Qh5ndkUQvztL0i}'JC_~wzQDԗ: 0 ؝lWi3vֶUX e1Xٚl}J5ŪBMRk[;=XOѽ2ɒqU XRaZm dlct %,t Ś@8=Lh[|y{dbjn,j w-EHI+;PhJ$›q+! Ӈ$NtC p'۴kP ,@ֳihaHv4y[ إ}a[]K҃6boKz2h*q|WOmx4b»%`p[k- #+6 <,%jKf+wzV.oه"Hz۽_i}Z̿œ{ )PpEb]byq{:wruny'nCo^Ty %?YB؃*hkɢYғ$gQaq~ӓSK0.mZkz6i}!T`1"ẖrE@hR aJ$h6[\ lpZq!0yזCOkG'[)]5,=WYZ.I8a~I~<txhEi+NoXzgOV5dZ}k$C;$zhÃC3"_&OJWWqtHzIA9񪳞)pzth&?2:HO\ G:8!otC9nһ-mQ۹a,!$,>WӸr[O.!)#!({[ k¬_+='p-qQaT ;+pt[EL @Bo'Ug};HܤoT6pP(V@Njo_u\\ˁ]r"Ѹֺ: վ 8ҹ9Hi =lCiW3Ǎ:H{/m*]kGŪmbrpxlO_e ZvQ8iVks0[_1ťi@Z#%S`(gq܋uV,][#nSAvy.˨7U\ b]>1JveՄ_ mzhNҷAㆺ;:H>4j1;xowmyyIP%}Ny#ݶ;y'j%g?WKoV8޵=:*_mHV4~/ss͜؅CGTyqj6pf߉px*S:NzNg)SZ^E& 쭩p"T}r) gdpZ5ӊeMpo֤J7%6+MëY6Qn|nx5+Yp8oſbh2uPw_o/E+IToy":.ir٧g<(~!b=:aPx;˙dl$Ma4z0beu鑻LN0z :Q =*~+Wl/8m[aLұϕꁣtèb$Q ~'XNVc)(vz>l}-sNO{L+X(/YIv1 _QQd|p:\u zBSnpP>=>tP;TilA~;HibUFiV $6AI.zqNlH҉oFcVB@ڹ+>tt8]Pٔn-[SC.ҽ1ZK X]7,ƽϹeI‘tR;_$:H\Nwӥ4KLwtns7Ig&ESǡ4Oֿ8|Nf(e8HsvAiF W ܶNp m5qr.}] dWv2y0/O*%ɬL{f^yvdqvAm}]A:,yͿhu=2B>tt8=ʍ.k`_wZI? dXT ;N|] #:HjwYimt(/%r zC鲳A0M#0X~#JN:8HzUfԔn귂p]y}ApM Ebo(H'Q at&zQƏMرl_e  ;'.ȁa/Ԗ} /oHKi8y?Wѕg#1:HU銋gAFƉuCGA]8tt/ElpP]m}zI^DVկ}?oo _;!t摎kQߺnvG ekgqkh(MX܂pY^ ڀ*GXa| =˟{~s8.vkQap+!a ,i{76zM{ ko vYsQF֨|h02Y8AWÕۇ y<= ]z]{A5fv9H4%!kG& А,i&>OyJMGֻ)H7SQې˽1UI3Ai>dys^ mSy#s^7lsϓ, ,鯝Ս{n?F4k {;H/|qfU0Z kYlvsY8j p <6 v zo -W(a4z: b{::HiXFn$}k::HwMaa4&@c$Ga /mX/t?%K B򁢃y^]ycٗXYt6F rkŒv$oӝIte>gv7U[=v8O&AEvi4vp֗UEr c?K9pV8ݑGAԷt3w3n]dN<Ak:mPz -%up[7GKe/Ov?tv8͖@SjV<FW<[,K wv8=itdgpzmp_<#*њI0;茘rM}+"gN2hCgvB'cVps)LaYڽZaepƛqedRH2:h|ZkaDC5 B4Yr hlYE[pJ/-`4'[Ip8I ŭ=NOYEEDC'ë+u\ O4',1+zNpSם5Ye9OS}( WvpS'jWgE k^ơi_Ry2VO"Hvm hqcRLN'Ә-?}7I O{8nƍrN&=[Ve:tv=w c 4#~w(٩ ׉wK,K`{UnF~d,T|ViWF Wu6ۤy:✣p~#:fwp&g7;n]>o,`v]VhR6.=?pR=3~`C7ڡMjiR.P+w>HC'g il"ٵ^!u& 0ndHIhc=V:%pHj[6*ύ_ZU4~SF GЈV8tov:z yXΎ6HR#~s7=мKq:)|ZCn`{m"vUv8}4c=AhF'8tv{[[p-_AGy7;fWU>tv8.fInGнQ=ӵ_$9&]뭬_^v0Pot]NhKфutv8=fC>< E~O9Z& %Z|w:N LRo:~&v t8]^6=F׿i$u M:;ny4>9hBZ4*и]z|8.Һ|~PoXLƁ%<`;6kmQ3݆K+R(O=y9N`3>cq4 ON ۞}6co@$S:ox$Faɐ _}ŲCa40ޖ5a8eJ9 }) 3m n  I]^ ,[[NRX.C Ζi[Yl۰Wmij9Oq+Ե^ֹgѱLzԇi9B]VeK|;nI麛|YpZ/HN'ÅD+Z%`pC#Nz@|Keh$iīK 䃋6ǃFΎ]tktx WqCO8veE7-Zx}_Zsڟ?OGM4uc 4sC=7}#Y.ݗ$;9!6$tO5Isl^}tr=W4 KɎ-fCY-;;ƿWIv8W(̎L#t֡#hBӠ`W2_C%6g Jp!gL K/U|WZhXҿLWm`ҸSfGh uΎD׍LGzKsr|蜅:6wg'G$u t|vЀ[&zzJ栓#kUg4}4MpdD-c_EHHSaZ)1+з^xg ;Wg^v}:pV]~1LGvW0M2IkpWǴf .,pb}t8]'‰}%y ;;Fm9&N='^rܷ#QGΎ{iltv8-k}T5oӭ,;D*pRдo٘eҗevܴ$sBZo{[B{89 u4ͱ #?$I?jӂGB5tż+3%莎C=(Խ=~ذu|+V'FK~2 S~f}Fnyy Ա6|pK/.ny*7) Kpz%;kxy8g5% x,˪ccE}V$G[uܱ4" zkn{ݎ/[mjk⣥Gގit^rzqt鶏q芝y.u;Nư=oh&N?|KpƍFc^/ȓju)pZRdoqQxeJ:8Hggu mPwpi=l:(1K{߻ xzY"ң$}_/_%Qmw #L]fsʴ:^ǟzFݎC+#Z= ’ux3ҿ M3SІtoNȼo fu VDo\iۻ d1D~p/v'}V?G P&cC{7G]*!AZb2e*#sbpS_5W1FҽJ"{ W35+5C8t_Z=MGтc`ɺMH|?AArcM@#d` j=;P8wRޅT}{8H65pzM߰p[k\ h(0A[o =sSYPl::F\z^jM\>; h"yMŁk<F_^OoAzyȇKE=N?mgQA76p+ޙїpi`dl"yJҞ֐paݸ<$=c`srG7zxu!6k8lEjZ2Ӎ',]& =O:ǭ*C*pm6#sQAdtDA7vxh57N)E1릣tEЈڧ_AyĻ? gR< 'fD;=pRMP}Ew)pӎhp_VZT?yuɡI뵴B8(^lk &=1(W,ZN} ;Y =1vS1S:b^ &.1l4T=u+a s/y0U;zsm8*H/;J#?{8<#{*{8HKOۑK P&Ia, g#c& ={N7r;.+ː\6kےspnV޾[ADW"иcm::<;efil~T/Ł#V'~[(C`}4> VkPl;ry ; =wu*tcF =!~oឋÈ]V.kG2|aZXÁQN} ">ëN@87KMDP:㍮e}8=q魞j-vnYoQF`8l_U S_a ;tM@yʅ9f]_ 0(n6~4 퉼;^F1t8Kw AA8E6VdMEyp`\J}MV3}+=ksv~Gt Nisڰ@K =~\)P|ߟE/W)}_ɯ|nf_8tKc q*eT!5h¥:84fNsZJ/!㝧!>ӹ5ARnŁՓ4a #iԧ4h8,*W5a'Xp$.*-# \؞̘^OvYegײ| ﴕe ۆh1|DsoiY1,t6+ڄ~P0جZ. ;Ŧ@ G7.Kٹ&*Bɷnoc7`Q*^j {4tfje* eWi\ ݮ ƎQq_{ȅ@t %#(iV'_- +ߘQ4ETaeWAx)~+H5ӽcm::fQA{~ͧ K(h 'v)A::HKMJW$V<'<YF_ RF:^j:(k$.Vn@874Dwv-K>M -Cprtk4^J+ pX4iA V<.'4R_?䔇tS^$ۘN4qPшc4? Wk 5e Eli45oҺ6w};Hoz%?17:\ӾaVۆ3↣(_Y l}Mʦ҃;CqhyAp[f" S9Xb4p߷itt8&dնF79[?0"SQΊyV?iԷ#h$9F#9d!$? ߖZ9~nMbrU"6Y3Rߗ`ma}$7"[{QM>ASYu ?$GeіwvzYD<ΎVٚ߇#hd6ătv͟0*n]]0z/}Y{Xz8浺ֶ߷㏖xgl2c^#otRQٮCtK˛a4[Au046q ~8jyB$"`ՕKrMAݧc8F#:eP==Y "}u]F y^.ؾOšMbtvY=c\A'Eht0Ί*.dVt,0"豙eA'Gui@{)sV`S+h+ ԭ-+|vzwuΎf_M*+4/Ɏ}z}* ؟NtR&=eT{"hR.v:; o6<A٤I( ]gv:; uJ FϞSޯ:eǡN1(6<<Aԭ48)u:)}YapVM{K;tl,V>[YXf`eH0<zM!S~;QE}nǡmP]#h$I!ߧ#h]NgGȂrt!uOŁ͑vnE8uR]#YtR'>c}:k'#hm-RzKȬ8~УtKSXq ɊCi UmّݨFLGeђ;;2$qv%cc=[84VˮgNϖ$9~R.mDx(έ2 ݻqZّzN|HuH-+vvFMN1z8ղ LG"0*ۚZ*ƳL=vVuQr A(Gvzl@Bdb7`6"cdʼnNK;s'XE_j͊Nv)6i|o">VRA#oȸqž7vL cGqpQ-o;SѼF1*֓+׺MFBa2&7]lnEc.?mBzvPqIAO1m>xݳNEF,㙬? A3K%uTG sYa0Iܲ.ttRL%Y5E"h4˓WghmEñIpץ8Vo``g0ESCHddW6kr!jf($G A iڷ2+XwyAQv8+^:Uj0X{OGн"]X?z8=}:;+Վ)GЭ2uv`>:AO9gJwNgG6:Ng(븮kX~8=%;ˋӭ՘l|3mofoEKcPPW)KFq:;vuT|>qR栳#u?NCOb[tvm/CCD :9SBBcZ9%'[n~8YnΎ'6KPǡi5YQq8F#,<; ;Aun/Rmy(\gS7;q캎iCa44u`vgEh&RK!ppVW]cOG֔(\۽[K~s:) >2z&‡"ƃFp=v9 a4:bH7 ɭ~:XKpg;Y#zat)KԥxВ@뵆}y }crk0z}pIVP<uߗA"1}ῸK?ƻ)2ډ D" u+ʟ/dE1l64Y֙俛8r8{fU,yG{iU7\Ӫ˥w!N]4b?>,k^=&@YI~*@XH=^eTrZ ; T)n6i!p 26 :>C^Y첦)WbO,65FScG+>FRVccYnhqZ&bhƦ+:O 'yge\A ^CEPvI&J|^-,,R^Zs7l}j;;e{F/YhSt5QgGm+$?Pt~O(|q]?N.7V7Jq7Apvdj_kG-,:gO٫Yx6[X}:݊wTtOf1gp@%vXNl'pm8"BWCaieTW:Zoo,5Eg tgs[grdEOEg}E&{ 8;m۷\bsB/08D}xOZ #{ ^],VoK=4<%`tcgF5[͟w{L^[( 8{&9mME8XkֺD ba>O&`-̦t/e_g:2&e"`wX'ήM[4։{ Y"T)D|EG; Oz!{;*`Ś[`N,:;}VO7P4m&*ftGډe'{=sGogϰ,p&fG"^}ޗO 8;1דDYYU*Y;Pu'c c+Ooݢ'wtYf|C ,{y:v\ZXL@Zw!% 3lgA՞z&%ahJiiFe=9}k=z|0}R1il9t_|2 aE <5÷DZ9NWF׸?"[#1Wqr4Hk 1AUozܿگimuwA>\2e ;}IuQ-;?ЍQAZ=]DSS;?)\(+l˾1Ĝ^Y-t&vӷ]->NA=8']vq6m%";CVkdD{.?3 t%S;\6[#huH;F좟T#Ic^ɫhqTsFXg״8 / .27^,*{&A V!}:i ',]tz} AZ^co'\OjLw1KQV|KuR0*amAs]7V4,[g=[pYCJ a$v]g'zͲ=~+~os}%xK *ܤ9}2%3 kenoɉHW# ?A{J4t[}NDvH]}i|Q$Ao R6̽ =qp(% nяDD ㅓU b^GtW!`ݭ1^%_w]” }xOK_A2Jzy5H`}2]Ctx0 CCق>:(p/h^ f.x3ε0 E"TãYO%7' -^}mco90V7+B-b5FQr館*˜ c L<'wvwݦ4Yu)}|)ˑE8m"%Nklii,af'x+he@j:Dї+"5Hwo߶P}RƬq$jsZMoV<ȫC! ĺ%s'|%?v`&w+-_ k/-|%aʫ4goNf4 _ݫ4Dx5tc2>N9}k|i*ڷiX(nqػ}4v_TL -&W3z:ӷFpG,Ԗj- X:|Kp+Tf%W!XVO@sY+|KlV#iO$}XK]I$,S,$H+/<|/gS 4x{ƗF#8wI$'TH3>p%AoK^h՛h|ia7TWzϮcA!/ZJ[ Ӄk\-'S 9d]|_g]lo6Umk"WӗD"2![i9>uYoU^ޫ4|jQAҘڷFкTxy5jN^y/$Ir(u 1*@JG,M w: HOmހ1pT, zY@oK,l2 <%o+|c|{RpV^;i[x( dچz p2 v 3\Ws+Z,eK9Q"$\` lXCAz샂[\?Fg?+BR=^qen9 =й31zʄ`J G" %Vr^{=(H#(WNG饕 1ttZPqAJUѷ4"Y$FFt_r>O&XJ+DzBZNGѨM^ߘ* ݦ,z<c:"p8* Fq.U }ks+K. ROۿ[Azfhî@VrkEapeYl}H)MhpAz:j0x al{lłm <6\?ƭ 1Yox;d1GJVҖ"drNM6 Qѡt*+[h|M⥮pF8nO_z8Ɛ,[<Rs.SO>IEEITpnwĞvMWtt^8K׋fq h>0z!𱣃t-tK8IJMֳTl DJIniMke8FO%=xՕ.5 iLhm:hw8*\$U"8p~j9hdT1 vψ6tiO})۔+\L4zrutXrQQ ¸q ){c!,DCt6ĦpG)G]}[<J7|"IOx;Hْ&0ҽHr,$=)yhcW+KAg繊ѷwjA (bA9ohLr%8GaLS9җpCۺ~扇:*ȭ:g z.pT;5ygɁū =|yVx(%PS.tP^NXmj*P6һiRtp&"нM::|CzGj;FǡˬF#tk~z(pm_RD޵"_+^{odhA+\3T+?c4h p%u5+ʲy suk}\^:j&j hdtnzp|k\ {e"U懃t󍭰CGGuQy9Ջ/ħFZ iI8LMGٯe pu2 E7M='ƛ8izt!vvHy f5펹!dߊCN2|0t:886"Ǡqy:„'tʕttQ,ו~%tioPlҼ_zvV'>06H׋\.蘶>hԮL۴Bp|ir~q~uN]HȰ;%;%8*%22.W`,"ȗpڅ4ֻ8tɁ#MatAS~ P gy9Fӭ@J8*Eu+ׂi0allM lVmӊPF C?phJ'پX;h*VG~3P7t#Z27l?gQ`_{_ن :X=բ{zݫfc-@vmd{WgVNmW>&nٙڝZW:%]Q6 Ca4u,CќO- YvyD6"$S6"˜:i6rpTr0g-g!z`v|k;0]d@5ƄI,(ٍGf`mU}M_v)[;q(m}ٟ@i [9GAVtt.uV)d?h6 ӂ햟W:Ql}ޥ1HDK?ڡD;Toќo 2XYa՟.nv6 (X v -[ße3ǝOT}p7#Zɮ|ZGq:|(Bud+:Xєo(L'N's,+(LVq4 ,>d;CPW0v)hg~+R(*8lw~e,Gd 44$,fb}2g:*+3>l6_Wۣ 9BϞ}h)ZU|e YLGH~~i;r6 ;|qn0D,|NG6 VWEAJ70l?9;)*S/F3d'+ߕ!lj>#(lQڔMD-fHj{d@Q ?-d: zΚ|ObFm[oAr@i}^d7.eU`(n`ːc9"_g6d[oޏ9ēucqT! +]mv7Kf`=!@vH9hhE6 ;k]BJY !XxR%پ:u?XڙW[fDͲ@&a7kd[ڴ {y@hp)o G=r˛qup Gml=˜5`e-ju z{J1Fe}1ۣf}uvӍu-,l١>V@0tUЋ'֎][,~v m#>,9q}GWۅ9,>_ë㇛Y aKн§aM6[4^\ag@X k^9?6#=cG7zzBcyMs.nkb-cEdY H, +m%qh7+{pSvr~ܝ;f`m )'7 a+G;4o,Tnޤa,d^TZpNٛ@M,cSdGOH9IvNg?_ҰAMn5 x=kc}OW(^s[ej?sUrfLlRє[M ӣ9?Xou4aξKIˊvqnu`KkÊ@X`W*yzt8œl鼑9?Xtag]K azjry 얲8w\;r~XҶ+}4:ہyeS kc%#6$,nQ;;^QX#~c)U3ĔLۓ(_|Xr#:XՇ ~^d1^W|#tJ-@vAVc1ɞeåڧl0V6 SK<Ț'3tymb7$#䩝םh\Ct?t.l.QZ2nn4pC'Fc5IgrU1Zޱtzoi/I:k8[Y=JAg,6z|Keѩ!%wccB#`gA,^ "@}QA8][Fr.]Km::H[f" KlWM$ۙ~IԦćH=w‚}2v>+_َ%/! = JEOG PXt-^ ¸voQl E}gŗЫ6=~Oi +^CTFI+:.8`\؅A6&*]{ҴΥ8tk^ 3bybܩ ћ$e1ư t6큮!kAuMv`'t:4xe`P7jşVsRZ%NeҘttb{:HZ{nj^ £X6Fjܐh {MGޟe9$L2Ppn)ۍFa 6}̗s|(oϐiy/KY_l!ط|a-b￧4n;[tt(=s-׵qhFON/1\7m$&֔^NnVA:gqWSX-{tb_wm]{jӭ̴6=ԃp_#%֑/i4oV{^me2 0>VQ&/% *5`&ťiϳo6FsE6=@Z IKvZVqx dq-aٺ.0T亇%x_?݊=eA>mڮm:6 :O8܅;r)\Zi◺}u+B{)lleߺ{)Y9TU^_)]s.c"}U{Qjyt{ގCϒRv}Nh&}/}8H"#uV@c<|8I/--X6|OYnϺ:`:@Y4 CLBr*<0FI̳ꔃ3<sq04Z!sjt8IBDJV/v3gӣҳ&Nx^f-lAzd.q^3Yv$I@GmuPn3w.JFis閯_cL]Եph_N =M$]/N1ܯQztt#I?uҪR=X򦣃4Rw/sR_Ikl*LţnxZm}ѫsɖ[]RkpP]T=nU2;nҠ d:zh$Db~JsTƄ.wtY==\E- krp8]L]@G=%w/_x~(OjV^~~Խ?N#mֶ ƩAvuHeV(^5~ xK&jR6NkHFϛCQ9{2z8HKL$ʡD[F'޾pZe C w#Э"};Hcgi^Rޗ9зFXR׍,j5-}"em ]GNh_Ҙ]Φ&!;:Hϩs]a] 6`M+{\?'kI18^.RSt8Rm[g/ ]umR ]h^>/R Y놣b' y.C&Ji9<M7?9vUCԘȻ EF{|8Hn9 6N5z1ևOvqluLf!*!eoֲpqxA;~GשA5%5Y"hVOhcA'lCbOv=` Ă)i\<N[2fYkn8*dmtHjF^Pz <^u\ҚRkMtp!ohpI'$MG:QC=3AZ~vMGiTXwMGQ6SYuQAxZͱMoݷaȺ+(\z.TG;W_;q=EjnvD?O齑SۇvX[>qyl8*8t x눆xЍ&xR=V7H8N[p5F0xȘ|_h@sݯ|`AԬ;kx_KHG4'+]} ʢ;:No&̠ S<]88άVO6a ªiߎ3P C/*f`W:(Nz2pEӻ0DCQg/\>%T3Xŗ0y ٓDA[;@8!rOdANɵ۔6u}nt`ğDtP8OimSkaX6N!UvԇS .hA#=j0;=SJwE}xXuKz F-O݇t|VkatDKJm::HrFpp.=o::Ƭw߰I u*,rva mn:(#)=}y*.ttƌ^ eZ kJ!p`=p9B:8Hgs(eGʈdέIϥ5}t</v9phyb@[_Qx^4{$h [[{ma$nQϻ܆d.E}@2YeD3Ttt% dk,ansZ ? ɞ cL-_[4|v٘>$ 6Shl"]n(r<NE7~gAc#vLJFѝخӷFXig^IEciнIxF$cߪyh6JW܇Fѓ.JiXDq{ Fx@-t G:^m&oÝ:-QLlrљ)ւrkLv&E#sDŽX&!z'Fv4\;szr]Lm&̺G8|KuDy< 6?yX['sNT(+4U(5,GCoh4P]SyX[fxsceo̟S-Q4:{ᅲ-O(:!Q0ӌIuoN(Ȧmc<E->4>:+ıQѧFjLFѭ7}v[+o([Mj%!(8MT\~^w^=CnH{()PX*:q22aò=$"?$ 0+*dBPN%1Uо5C`]c$FZQя>40 qG sYxh Oa nZ4r8S`ÎPy{KL~#=<%Z#_NQ4cBs(u@||K`KS"hؾ3}asȓ5c^`q%&'e$}H|6hfՌ}h-Rs5ƼVPҧD( s3؋Mn4[H!l4O<mQ>T=ELqPXO=bknwwJ]VPbw~]b$V(S}oKw~+eX,jG /IO5//@ -5NgaKre@qޛ`nd#y8 Gf*!pDžBx'ue->rDYfG0|gˏ뺭d~^b( 2wOLT Otvtl_ڦ}E'C Y!8CصbÔ2),v6ۣ(Pe號r~;lsPQOp';ԻC Y҃=xaa1dQƫh.hhZ@2VWƔnH-(X9df]`OgGU+Lv@VK!!yʿ6ڰGHVd<<ٝE`Ow{ؕXj$],KJ>QG~cǓ1~W^b2#΁Ij)OTb"pB,Gax|z;a~X6S?`q7UH033X8+Ҽ>U:māvɢw0݇@hv?@D[s;w0|號v}p܇@սܭ<HT31wdJn;@l|1F@9 ̃XJa͇@8-'p zHVa3pDsC !XK)P,3v@ +C Y0f{ 86I{͸@ZLC ٱȪe`W%`Ob YZ6~^ɢXxy{ K9RH{!x[CXV=S :0ϾN=m%=Xy@<p8C َ/Iw@-X43?Q-&G~M#|g{ٓa-ꋝɮ2DȮ@։YhH)fg- ,){'ka6L~^ɶ[{ ]V^$-jϘt'M<*M<ғ W 1!Ԥ`ZgTTƴvF L-]"1{od.%LC YYgf[ ٬ -S YۧQQ)SYx&E|S 鋄*\godua8m (}eC3s@nMޒH_R0V7^_ىJ`OdPCfQu=SX6f/pvжyD)/ve' %Y@f'[*בD/zR`/Ͼ.<6t*2>j;ziO7Յ'M'G\x$bH06"I/LQS zR^9>\O_w(%vE8?94_`\Jys?~Q'OB~t'ryJX.Xӻ:ӻ}qӈ6ӏ;b?zN6ё8:VuQ3j`9㼩vCҜ7u=FB1iWU:GpR\m7 UVu>\M w yg!kA?jXg pa7u+`xS \`ƦpC $ֱHU՜'+ڝMcΜ߮pK2CoƮpm"[8"j`Ug[Ʈg,: KǽTR%LD:ƣ0*Q6Vs$*g;Z^VlيMauhS1Vu~S(rEEjr&ӭ#3 ]Q46瑱˭һ7uKqzwOЛ:ӴGۉ~p$7uq[~7ѰXfW':Q:AiJ0g}P MuЛ:ӔtMeEVqfskyQuὗUC#vxzSgnşl#~)xsu_Slлjh7u)V_ z74ޜwugOTCj@ ԙFE8u8]5: \LjWg }P |6{WgeW՛Fc4XjmՉxI/u{ ׊6+Sj>_r?ǟ4w_ן_^-+uO]%^׸%3]qdp%9/l-Qn+Cit2Ab}g>A{%cИWXGҍUh1hqUH}h_X}%=9{(];msj*H}顴! Z6LltoVMSz(B=;x45]cNB[c z u.w9PI}>{ mzĥz(/u9˳>w?Ρ`Qh1ʌD/!:JF7+ w5`8䨴#Sjܾ,va7=(w% "WDQw-vBc .vst_Z( gge] qNwkaf a!v="=R5)PI8`#M`AڝK̖֝ .9#;>gH}Zh _\##.,X|,=ijŠƑ"cij%vG@4M?6t =&uP6« ք|LgaF26xP8$\]#-(ca1]&ْ*;ETEݼ.VSJkGaiEIKA8$f8*FCO@g4>Ӕfٲc gͣcr8(+u4+y[МyoUC#&T8\ Ţ¿s)[VON!px5 ܠe*ar8(~_GkRCA!D|oHUN 뽔l3MA{Qtm| N6cR8l[*s U sg oYOW+UنS@SL=|4P$;K:>] rC{(BWm v@{N;ܗ\֨!v" 98+zKߝ2ݚ[ŊZ/1ᅪxη\`~K ؟,?!נkA UncOA?#68ITc\U{&v>/Mwm2$.<_B ԛ:a>ttxǒ%)-ofI`s𹣃t'D1GtϫsψaJ02pUswr;sV;<az7e1-tp4mո^ֳB::vO?vmQy:HzxCGҲv[t)ʇtem}N >pn\pPFBw餃EN[LVtt]rrOy8*cQszǾ-"I%t39A[j9ODFG`(zI=+"Fiug:ҭWg s̾ryGêç%Qt)Btez͇4Zj "Mm0}#3fnq>B7J/ 7CK:W#NɥJ oR,u+׺nm:(}a &tQpZiҿ d*).S Nsg;tVn. .}#"F`2xRm ۬.m>WFY/ <ӐKK)W)kG3F-k"k}XS}8f1pzE #;"[0XN{ݞV!tCp$yAA5"ơpP-x$TG]2l;C14&X&T #tY<Nw)l:7, >r+5p29aYئuLEG(zT[ G< g-𯁰ez)0Њ3n)\qiR:p2D@S:0p >p8]%aZp(r*NGz" enܮA:C§nށsAwt8] 9 Rz a\H* ~ ^:NE8(s L`ȤأCᴮAROGvnKT>&tDE0bNۙv+tK:nSz`D:cQR72鞥L_Z!QV>vt8$c,#(6uiIV<ᴴ!ߖupZ-q*uMENvz>@:8)5#;/-mtH~\*~QlK$ $e  ¶~^ 7 oI/% w*2 A7g^p۾d8/~p h,i(QpormޯѽkulZm7fؔmU~hiݢ>O=MUtK5.eI8(nujc-Nkw~x%IP*s2@b;Tw6*S`6Wy{F =K[A.E~LZ/4P\l[jZTp{bPZƄɑ^eGR]':iq^e5Ӎt#L0܀8=~cPL1$'AiK\}:*ݸx8p/(+|dGʵX-9.;dǨ+epgǙ_҅Q'2>0)4@Bg L Fފq^mx١4 Uyoߧ#A8NX y8r-k Qf<~`""`xkz(!AF(E0ɁB0x)˰Y_|Du֩00 ۗ"hzWv]a֓jwY=ABY* ,Ѩ6[:N>9AS#i޲ĔA gYֹPp+[a$>VY;(ݥ>A֊n0zҽLT0gH2R\v&> Q],E]dg߁h_v>ޛΎC5uf)-PPvwm0xYTF"hlqp]_\*;FӯP=0.#f5l,x8FmC=Mv"kMbDyCG{8B~rM/ Gm6i8tMjQostr]%/d0TF{йǗZ>F7ym!AZ&6Է"tR6C4jۏh>_R̫j2fE[tm\eJԅۡtۘ,Mmv:;n׬w<A}3>F/cGеj\j~(.rpXVV)%0)z];]nCg \ނ`e`l*TEaw~8fH=0?:O[cNgGмQut 9g]Qp!ܫtt؛4:Й%-r:;4Ȱ۩A]QwΎki]flp]qنvMv)3eTP C!,|W:)|jCsJYUo ICEj!KX1\`NƖ{\:ȫVKG(?,bV4mB#&Yt!4~q8֔4}F#Un0B"`ҩE։,߆`eҭ[>^;N=AiZ7v-ŧz~C֗eyFL|k7N>|2sߎ7 M\A0}j2 ܃Ύ `צ0Sd8+FAlR>Ίwڦ4-ߛqyDt7Fuj4)Pg `܎-%㡹,t{}ˇZΎ[RfpncϪ0X'Q *c>qd˥X+};^@iLG;FKb#X4t=zV#G!`,@e?H/CM.cTPufOK f?L"࿯Vhq竑meRRgED_=w|PR$"*igu=ΎG\/a5%%MtvݏMWGkv8+ F4F3IV/Ca4R>ikźEܬ)yu:K٣?>F43qFnGУڬG0cߎ?e;F㗖p=>H>bBx8G, ;;FB(֓F#o>,&܎qҚ1bpNnavM?QNZ1?AsZ6&f!443$7gЃco"U]g`3Ղ,kJqv>%}ʰAx٤kH}:חBYNgǡ3;8A//vaP:b}cЈ'Ɏ˿za#ئPl,N7I`i~(2;r%+k('Iu7I1hZ+ o?It]^y5ҭus:Эtt]&%9g-޾l!bCCAo='"YȨ\bڜyb-/iQ0zxՒu1tȺFbMx8Ho%YuN`wlY\}Ks Ƭl-S 7΍]@xT; sn8AkΒ^t;HcBFtt(-ݰoYuutO{=Wʇjy<_u8*   pC7 ="c0hk:*9QAx%Yfi`u w|=F_SB#A%8豲ݘ^ڬڟv-ĚUJuTqwGB ><Fe4#I>^-PW`,Aa05aĺXy.t*\kqȶ-L֙ni0އ`FW}){by =vȀ]yNoiOsN0)KmZOx{;HcID?g<F#Wdy& 4QA8*Gcnx)71bپ5t g m]_xm^[jm:Pz,]:jc^O[>Vц0TiM6]Nfl-6m)c[3GšW ? ] "1<$kͺZ?Oǡ[Zh NGǡ{C{}:hk%pM@Z:e6? ^2s=C*d=⨷~T챳pؙeOI#GA:8^K­D\=oOhVж  pt|g%mHk ]dy*N60pY>`X]>V= (HcRQȨ]&ºcjCrㄎC:H#&y@ls.8i*zKF5wẼAUSP+Beɢy7͉vlƹm{ ɦ95MF5{nbteж벛~;H߀w;H7 =o/9;,hD#ۜpIҋatcϪthFNGǡm{p;HsNBݫ AtX mj=Tᚪ"(,tQlN|8.8%o]Gr]8蒸&VX#yv_aa}*mAAa'NAذzT 9%)XG[apYSv 럧 ҫۺDviJ}18;NGi= $:H'7G֢pcA>tAd'?^iO95qemtޥ.GG`p::H'X߈-P20 __Ҵ \yD:(,/Gh8ph lx(HϦʢ 55 ښA}UA:O|ru::ݵ-18ta4Nn׹to/}8Hc61jy(W g:ec&pZt}bV(;F&u=(4X)C oTP64eu9 aF` upX' 4 )wi=GGFcn;y_>OǡSu ,(,_a_byʁ uepP\X\A:_ekɧC!a4%>=ג/ˇY Çҷl=wni8:jQq-ty:H}0 Evn,yŠ MEZsoN"wܻyh hl%q蚗ѽl`TN-%YG!iI/Qa4E뺥Az-/3·lk( *\ՍDq8XVNGǡ^L`v:&Fz! ~& tǡq躒oxNY5EŁГB8p9o$Ԋ2:*=nJw9oNGǡ;^A5U~f8翑wh=5e'`4:Qx l3&fQc*,U؝֠9n.$Gr(:%H[5ە$8[&H!0^=8 M4Zw::48py:W^Y崱e.{W8RneAA8E@5Aql }ǚ;:*H#\pZGNdlW#g9X.= 9B`i8tZ"״uBWifч]8ޘnǡ/1In\PJ2;:=%HgvU*gW0: ٿ`0._C&1M! %` )pyqY"rg&8p̈́zT _:8Sԗ+NGǡ50 CKxf71vpX==6@°.1*,1 ?Qqlf|Yzh(d<+.4K$jCަ_ƌ3GGAX. /SμMBA4FtpPHGG|5o~8tmr4 OBGXmХF,oZnFѡ=zTA@}Bp7ݎoE3{!+=O sS9܎sd ppn`8i&Lk8Hh0h'lCeb]y:~g;W8k+r$6\tWiJctG^/a2HG=ecNGVW=r;HcHGkav=3y{ԝ蝘FM֔qe19F㶪TPFCdN,>k2M!<;m -$7NzQ_a4q;j CӵZ{d`]ѡHt{:= )/y+ L^t]  mCiG;I*:00Z:q:Rq8*>$uE3J u{ǕzVV= rt78eoŁwpmcZWZV h鶥#+-EAǎF*.KBN6DNaV8eYy(FoM:3ҭ ܫ#?&[KAx-@n0zh ]̿áLLuMhl^g~8H#-{yvщ^ZNڿ>OZ Dz])psP]Ja;AчѹY^}8HcWw-NGDYKi}AzX~Dy,k ъJNKov:(0t44qdDL-p-%2V=s@(SWs:()ەI·ht ?g ]4*vZ^<WtGhGgb] kbP#-mAa0R]no~-YGni_$pc,އAddJik + )$,avӀ NGiZZ3};HͨUeht^W{n8[oU>V0ʕRl4.=4>A~+Y^z3~im3_oA%14μ'GTquK"RIGfWFd8+]w8%kmn>/yc^f32Kq` Yaq y,62&IA*rB޸x AAX:r K zG9vJrO$K_s+I4#&qktt.]P3q~- [86ɨtI%֩OBo?C% r+>GHU[Tb8<')Xrʤ#vo>ZLOiF1$*B0C}lC`C.V2@ q"Zԛo=ckJG}iM ӲBGXGE PC e*߫}Cqh_Vx8~&wK8p{cXRN޷?Vp7{r0g;83lγ(]fnXzm+68HPG dg/ֳ&J(y;HdmMAh4Ӻe\FܷpS[?h=`RZy۠Pv-= 0y#mzkL4^{~8HI p=TB g Sg!qh}.qAMIB0k< ]vZH 7hR.MᾳG)p06Y\ѕkJsTXTX:0Z.._t64"f-:+w!xk}"wlsP_Fz("%kq KX4ЎYJ Ik[ZQ(7&Pi([< Uz> \sƻJc`0woV[ sneapT=Q_i}8F/v$ QWF7%oWqt^/ٌco|8Hy•iIIexI8t1vF$醊ߐi9צ4׹XsCtE&X7BSAbq㘥mpV£2!a lN y*H&Ky=2 G ¨uAAx EWY!a w̋!`0V>WÄA8#7-HSC4,mtۇ:UKA5KYu<臂t1:`1Cen::H׆)& Yi8};֪K!ㆣp})7_8*4:oŁ\~#PypWlr]x_m̈́ڄKFźgj{m6D@\ZE66M(JpT2 j:ȢlUf6) @x)!XQ=ۥ~)Øq1Gl3*XpH*O)4j[q<+6 m•R__ {SAu(e@r#nȍnA7vVy:H{C/:UM|28tuWq43E:8H{8~Az$m<נ;:HP$tt.֬4G6A-T Fmtp8Ǎ}Az{:A+, ~5>+x)vڪzpT8e [Y| pPFO>S~)bU=CɛM6 vI$v!s6.MPwm::FlfU<NyZ𔑫GB8(HgsytYZ?%pU;GAZlVX沸$kAZ -ktGbP7F=*D GaiX$o ޼?>i|`::H:Zt$:H#W73MGdۜƑ+tt8-Աץ)C%g>ӷ K8(V?R.6* 3P:v:c5:MGi5$4+ 4n::H{I'^,ң,מ/RqetPKPL ҭ#fHMGǡ`3Ҩ+KFǡmn,/Wz qIt~gճ ¥[a]֪W.16g*q%ʾz XiѨX4:8dZ.#[%Azr&/G!*LR|;d+=N[q4vN?KgB f4V2uPl3 [!< dsR㒗pvڴ#Ҙdvz0|C6*=7@9?[1>T8ui[y&Z>OipqMGsAzd= t;m۞ ֮ -uǫmi8֧6}jոx|EO:E/! 煬Uoa ْcp"::h|eN_LwdMGi09z ½$؍p47ߍ{ю bqIhI_PO Ө˷Yp ]T:iCYg؈J>O{go~ϥj48?'(~k*6/YY.{ ך}8)P8ڧq7R8-FQ5-6jY}9n3nE{>W`G(R'"=ɺJCŇBap{}(rҳ"),u3MGӲ`wQqࡣߥKAT`-dpq|. }%)?g210n::e ,>Vc_"ۢO7Ig(L ? kׇE6=̐ҥ墧vn~C7Wz_>n(~H&)=2乳v|rhw]KIОF}!s޲th<_':/( w#ɳtpIǡa90o::mݹ7 UTYb+h3C[ǯЩhݰ2ã(r3RDA`]'1 "z6#}xc.,gGвz3Zz-JT&Jˋ^v8?v݇ΤR]۰u+OE*[X6b ܫ"4ɎzbeidE&&V< XG-gY4 fޑFN^gEU֦.䭈D[qGh#N_V<&[%*驥1#هT'$,A4 .$;1í"9b4RnwTuR~;fPq0p|uHQHJBZzaj:Js#$Ϟ$Mw6ّjI6wqReKI(>`XiSmM&¾PsgܜC=+nq]dG΃RГ.)$G2;J tLuB>#ʭHM0 L'i\8p2Do F%N`>`mϘ OΉeŲ = C _H:i-+VdC4G~'soԐÝNefّҟȟl~;^[C%|yxRkz+-\V+Ѓ[ACo?N'GЀ2x:Y4j})/Kz(IR?ht0'ERPM"#̤ųU@Jt:{{>iVp+Z(PގRo7-y C$U y -M1.-xY$C " PX]:>OGv8-ܺZeз;I˷iM+DE!:v8]9;ZٱiAstv8ƛF>pBG4:vI+5@'ɎMk-C߇>8NcE!RRDQNlNe'(InM+_yvݬ_H eƨߧb(<{Cwu:)ngp.x9 +y)6F?8p1خ.8Ϻ7R\qN@['p*JԚ?GV8\{m\8ydpxȒ( QkPAt8(s\v8]edǦ1kWONK- OPo89@?p&toztrwv]&+:F SC'ӽn4!H-?Ne1bCGte[8;5koç~QwWf8+6=Pc-ib;NOK> ѷ#誓/S:tv8h[}::{Fñi0vBp ]ٴ `}*tarp6dg Zv3e, _g08- -a4 WTNJ=p5Q/#i`4FF?tv8{ppK?wv8]'Dqt =}(6H(w#e EE LoӄдZtvlIF0f`}=J7A0v8ʗ8tv8ݖ^֪vp K=Rlؓ/Y9pV8=V]5NjEڡi|ыNN"S4UOS:;o6q橯#hKJS]?N2C>NfjsNm r=kٕ47{㌳ }Ȳ?Iv8]1QΌEKI`v8=+-2vߎI';q롳iYԂg)iI,cߜ}Tss R%kfӚVIȎ l|t1pu}z@kWzIS۽&-4*;n{;2gڦZvG`m8B0̳ MO?XYw0; )KpNtAsoRqk좒/Z#LoIS-oETދJ42$GTitGNSugGB #dQc>pVz_ߗ"XzzV\'>%鎐AUe?ɑv,E'w;H밬VGO=v8կY] --pS"k+GyJMuQA5=2Z_=RFծU9ӭ0zvV3:#0MGiַ:Ύ_a4t4[Oη,5=-<7<='Zn6:i:m{e Snu0,i8XJ򆣂 o(vyUG u[s*B@V?8~pԼ_k4\Ӹii^SzfHiW3?113o:(WgGpPz ]MGvz7էl::H㑪at8=J_`MGiY~p8ڽC빗MGiF cVwTɾcRWsaz/ۂ }p:#xB}$ɛ&NAzdS\p8yMҧ=xg#CAx,DzKA˦at:uW inT8iEi ,pxvMqs@iQˋ `rpT8ׇNEKAxgZtI:48p%[}nŁ=6tQAOڸM~8hR+dsu:fa -bošsQ00Qqb'sb}k//XTM[O=+nv>xtZnKΣ\;vڶ־㗶L,aeu,rߊXl]|}Q@DM[]l)4$e+󜑨8p&'VʡGՐ$h%7~h8p/:tcPXhꁃЖ^KJQ $2Rp3Fš i^\+.X[YZd4/{}__ێ8(~E0 A mJ{8șM/*@UtIMV84xv{QHHRAqӨ7'8tNaIǃHbR룟0ztr=е"riݮ8^ xN6wLm8vGHDš4$CZGG>#:H(\d'bQ/*fߠ޺鐷 Oыr"u! G]/dC?et$!dYAyCwϮ}(w` ܰY٣\ԧHc+"qh3iҟA V,EB{&#OMi⬭b4j#0/*|'as`s(kAzԫg-~AGhum>a?yup0mea8h}p-[8Ј@pT8h>p~`'2 m'6b3\Q6;ftMգ4"cݭ~ңI.VovK+k>|+wyX/ᢓ D#4'rnzQAxLOpkeoiouMGlWDb ]<[F 82ͩ{x(g̈auLuP8tNiWDp/ Ҿ(AmM8`[=ttF"AkA5Kv.> H}nŁ5\GMR/Z=cLAqhfRIHˆ΅B8(tC0p[$H Qe) p^ij8Kep,M3p9W8sso2K4_^dKUapmO{C{@}(t:CA7?}h4SKAl[ E#%Tru|R.Cs5<'~]v6 O{`0ʇݝ s&~w(.ҡ Jr~t\"tBttjF‹Q4su=[Iila4"ٱ\FatK4b0h@Ƭ6/Z9*sxng7]SpzʱDj]`վҩ0S oVhQatYp$y@$K٩0,M?0xnyQ(T;RPjpz% WwqMI?|h>pzϠr2::F"F%ql::FtIi.kL{V0zh:6VCiG򊟫5ޜ [pKsn8*FS'h}6atp(]R!}8țGjyatvxشyQW in0ict9FTyX'y atyIsu=J—bNtK)tƤ0zl;'=N\F`95Y:Þ$:ֈ4 CiԹ#b=\XiQpK(Ώ"54pZ+)zN)qK:u _ω k}pPl4h-Wf_h}JŠ;I"#UeQ=a=ttx-izW@Q4NF[W`ݧ#uZx; lT%ԕ"4In o 4!Ixkp˪|Tϗ Gh-?o c},Bm垫.SYzutLu X"%z3\$ QRW< =+ƎE3x^F/!f7_h0]Ni}:,>Ws- ,gGGj@f0:c@겞McܖL476tu\4q: P:)F5]a{t;D Ewl6͜j=ckrt%ϥ`(\4c"0:USaDXmѠ0T<$bJyn [M[>Ʃ0䩊7Jg1Ʀ*iZ/3(]l\F%O\ TfPr+>3>s(%ؑw h/cS@?x4(˹de>F=%r~\u-T(̹,R2̑n8*nmr:==hmXŁ*&$ED#cK`lCi0. Uvx hPBK }Oд-с* .8iSap"pc GѤ xgdPzZz\F[U9|ȋ\Ox" t!Rѳ7a=W9h2 =7I,ꆣfKbSmQajd`PImCƎe1456F#rozBAn+ V%}* . qRh. s\ ~J|tx ~RjNe b>']h"irjFғglGIVKN#)~_iՃVIgdv`@:huDO2>fObo|#ׅyՋZP8LHkpPtILٹ#=Wө,4.TzO7 $нjtP0:X}OᐕJ8u\Fu\hy-PI8Qp`$:NZ;sutEIûHiAp jP9\Yp7pWx_qtg}1?vet8=8G NSC>&,4F:QC+Fp8]k[3:8}tYgtp8P(T\7ۨB 5fnONKbjTr"zd̕+hBu-Mt%ɋ.,9B ިp_lM{.^浉Ԛw'Ɏ-.#+_yaA:_ ׽(RVd-`mF/~8gS@ ?z=9ͺ]jO߭fe|'!eUrKӝ- ~cu+T22uB#_Wm*Jcޑqj{IT{Ϝo!{|8G>_^o;E;nZOl"捉)^VЭtC >tr ]XRt:;.KfAK,ӷ&4\0zybHqh4lULFߎq}EA'ǡ'5} YjnSMi.]mlh#hf;ާA)@h{Y0ҋJԕYN9aLKuYy(RUZtvRG%;oM:ؾm0aPvڶ0V sUڦ@:==QB#噊)ѮNgG?^ - =|tGΎ1`o⤣>Aj?IF6l(Oo OpVCR;1s+L~#h*k/ݑ[-/|_GoS01ۖP=i/ GraHjfdÿTKa,=w*mvv(\r8 .YRsENuߧ#Oop>[*"KK0vU'oCmpݶIa8W7h6"ǐ# ttU%#4ϊ*q?aL@caXHd6܊_h M">hmӪ;Au6+-qMTD1>F/TdBJ#ol?};m6IھYC>eWNoE)Lk,g۪3fA7e?A&-0y KZZgEz!Z֪oEapݑ8kcsdx4jG#};^TPM}9AoCQa4F{fgEiuݦ[~ū4x֡ؼN`'8JGH9@+qnE68n9s;Ɖb֐8FkG>N\<At{~p=mAnjz!oǡזw~}:$[̎CsGx܎I t1 <AG6ՏSr:;l܎C7.C#hq>ϝA[6 ߫qh 4Ɍѭo̎}+='ŁGQ6dFRx~9vAcwlAgMFj:9IEJ|[fG& ۷G7)`ޣq%csE?/BcYA*lƴ$Ź$[JqZ84ɀ6YJˬ'ǶRS= Ms@8+n\8mh{dE N#N1)Ne2ڹ{Y:Bt~Jറ1x(.jX1!ɪhJOeiGͦa."` ·[68A"12zb45JA{8&41?F"ImmxGЭaN$h"KⵔpVܧ.tV\5Ki05zj|I8Av9=0(kF>FN~;5H㴭>.:KA'GИd*R?IpErN BAmxTv63tZ?Fz4Ύ~MtfoGeVcX{8ƨ>˖ h|+dCp F[a0v/Jk8ASGxI@Ta$(#{_=R:: \ڦ9_F >5N4oHCbMGw t^Cg}e[Gϛ]=phY1t>Gtړ!O~8FBkf#CcDFpړ 9Hǡ+AC{EȞ ytp|iGwp;-YD;oNK}Ǘ.4# uP0fSGElC~A:cF#zg ]=`=ܢMGǙiT1l8*HמMep;DgVC[4F17P!2`G[Ax j'#6,bڸ#QAvelx{;Hl=t?OǡҚoېw ,C5CG镵`Yzi|p&as]s?w+Hׂ韺׶շ4ebGۭ݃ <6e]鄃\M,c\}G@ gGpUBIX |]dv/—p:;n/ty:HuԭV80:WaKAXZ͖ zz[c[qک 5VSmpxg[Ol?/aAXGӐe .tuGAzdB>OVFwYR7FFU3h{kaӞ8Үc6 YJ[?A+ mtt8D DLE)eFE |ؖi^?uM˜N3 auD'A7V: .u]֞zC["udAD܇)|p`4)]$s0ݷuL* ʲY =tcQq!usN0>-_XO6~ Qro|  ^i~Ӛ2K6ԙNMu 4]StowXǛfAz>Wagv1f$ttSgޝT8& ~E?/aI`ϼ\ކ~u }G.aS؉i`k \%eL?C[XP,T.TQ7PK)?zhMޚsM gnteiY)dcҹNut8rY%):a)<5 G$b80B;0XD;ҫ5. xP ҥ{>snmBw+Fǡ=4$YO%*]ǡ%0Y7Ng&yе~ =gѠ?PG4r#%Çc6Xcq脄nGAn=t:Ət3 6V%QAXz<mpo1Ywz(H&6"gnه4= ]r؊ -]ҭ}2^kd))g>wtn{,&ߓAHpZE٨# %- Fu|"ҩe]/`/DKtP9X;!Ai2Vn0lOiXaMG4V8N::FAeQt?-% LtATźX6qD%Zlʾ$rI)m>Oa'wvyai =~Ao^n%t1Eחoi-2P8)ZkA0j eOcר[q4ZAn L#a yuR>6啙$d|L vn=7aoPZ.%{ ty*z{Vdtt8~2Y8zٿ+_'Tfv8('K*JKڒd}hJ<M-CwBV;:t}\ύt_(D8_DyoŁ<[qhNǡWݤP8/!a]Rm~#mִ݆:e̵ V8׼ڹ5ߊ{ne}-U=R>&(Nm2b\ԽYЅet8h=K%w&:N QM^fuwt8]ZLF5ʞEnGw]t^ڇPOKoJM@(0vPrJ37};ƅ`.ӟvQ뤁;'l+t8$a}I\ДV"R{+%$Ίb7Od ;Ș$R8<0}5 _C,K g\b /xw5MB¨uv㤜=AY6:kH*iT UApcWc7Wkhle%6ԇP(2<N+njAlGSL岸ṥq-H)h ܼa#TrsP83-?y#KCow)kCބoi \K[Gî?ޥpxe.\_ H.Yy[^g+;(DR[TPy>]-\a ,}l{fpT8]\|8\ۓD8FwW4zt v8SGaT:0Mv·B1Dکp:8P{ 1BX_AASaE-ZVj Q':gPR.Hmw+$pҩ8tM1ett/6^q Hy_hJz/iLvkdf-#tme2b <N_Ňpǒp 2XntFAa/=N7+kNpr[itt,2m6.-:C r,%q2y9V N3m'sݣW>qZZQ4όУ u+};.([{iݵ;NRKIaIA:[T:N{8c |8^5=jc!y8HcKtѻ/dY+Wobl4̗6BDؕ.z̯w^OHv::HcWsk]/&iD3z8޵vfrvwt8=6F- \qvU{jȹ6j~;=箤qhE̙N008%#eIip7H~z2_Ggth{;P8fZ5BQV(]Op:UtcSƟBg~(Iw+7QIDSA:Fatt8={W>OinUѭ0::3z+Jbͪp> #ٌ$c=ƻp8}@Es8*^]NmpWҜf ϖK$  L=n#y:H# .I4xͤS}8=Qou}җ4 <>pPF+<:A68;FMd fne7Hy?O zN\ _܆4::HoT]t˲|[ ]r [Bq5-)8=U^i0T4zNׄ'Lvp8{!-N5iT.&jqy8N˗u\SQA1u=p8Io6tNq?Oi2# pz2v,An[IWɦFŁQ CAjeۮ W+A =I̘p8acaSv8t)eQWc?pr,iĶu1ݝ񋍿򴭼^&I8J@y8T*vU0+$ӈߒkP+s ƪf7˻oӣ,N\d'SpG#Dg]U}^&Am7OӘTK7:ҘB`d+n> d'լu6\G_K8me'T{ti}:z[J-3e -l֑(j6t8J^=yhb ]ڰz^pڲ=mtfA59iU@k{B+J 9}:HOi:A<4ENz:t5Kߎѿ՗$EYg+;Hc mxBü>F KHC>BWoU 5cADl ݃,]RWV8![6)^x;il/M4Ӈ4vZ!r8dvc`[twȞvWma ɯIi;}8딤 za$};Ho5<+R;:ط2h3- ޵sJY/'4&zN]BpxmN#PFo+{񍲫?iK }Mvtoi2sQ ϥidKA#Cjyd_Oӽ`$7W;1kmFҘLt8LUDpΝ^ fC0f_5.T D+ɝt9+7.Yi 'f/}:.]ԗ-ͭ k-c_ kζbw+)m58\ӡ4v݀H4*cGpxa:D7PFxW}*^]\u FmV8TMQݎ靺\ҹRAyN`|*G.w[AGHEiO};Fhn %~otkS n;~H dkf@- JAGqN ?68Hnb;%1HAet\m6NS:zSpp)b*}:H˝ ;Œ3Dhjy`ٌ>Jτϴ9n]3 ϪtpzϢP?٪}:HcPhCg*)t8"pzst0yBit*zB [=e[ISA~RM:EaZM5쇎$4y GYfgY/ͱc͖VFS\C.״q.sk#ψA{ٛfJ${,ѧi (};n;Y-lvO+p6- }uNn5)\̭xS5c5t8~/fӇ^ϴOr:H/{^2.q)p8]SCiLpSHvns.I}fcO{*%Z~[`L*u=xi,WV$%׷C%1&ɜUpQo~C?+ӫˠ 7H'M';P8GMHp&(P8=s_ʤ}:U[9egsdW鈝Upum9n}-NvE,S7ײ7}۲ m*ᕳZе2@Akɒe@9F9J}Uv8#m0PYK%;pxr%w!D̛V^Ș+&NuF@蜩gPl(:<wkz #gҥwӷCn1hF[mx_]pU`MO ,MV2nC%Z|[l;C};Hcmipx|h _؅9Un|ɳK{ŵcx+}S[~(HOU۾y6p8]tJs܎~w0Fk;@0`F5PF co2T8mUfW}kM/YiWi##iipz! h*4gz|VOҘ~@Amv^~q.qW*|ܑ@4J5OK'%sb -`t}Bӹ7t+EZekEepv,i`pzH) B> [irOY[8V4FK#7g773|*IObdpltt8=zQpz]9_,s:HgpyK'9^i1r8] PLt=kݸ!.raLHk/vni.״q_y=w;Hi\W'>Ng[&4g]8~ёF )+Яft[~C=b 4%q fA҂qǿAzMp^ez}8Yo}q305(W5:H뿍m-p%k[z dfP]|l m[BhY@,,%htG#ptז b6-L_ǥmZ4z`'FiVS||8H/h`G:H,cGl$i&ѭ'+ַxz(. ýA'a6۽5gÅBջ]IAxAܰk}~v"~pt EsҳLZExZqczAgiQ:cbOrSHgǥ]Nu8"*-2;H{8zuQu[,V1|'F7giН\zRn!=pYz֌^Av=DZ_itr^GșU:J:;HK5ҚAgi9t89qQGI4-X-ҾZoh5 0?:HW<>7HtRLdgD $8gbJ}8H>;lāuçT2:Zu KϢL _Ǿ~Yϟ]i'R֋2FA@*Z »T'ŅaKj?C0sm) 'N"ֆ ΐpV\xhTn@vHE-==FLrpVUtιƥ*.`,^` C^k (;&-ῆ Ӫe/i46IqᣋjY9#_ P];)).P }Yq v"99xkYeSs2%ҏѷ?:Q ܊-)?կᲽeĦ'Å]}ѲûI'ǥcpm =Em*xḴ%04tgmәޞlҧjgӋHEt3 H4ҵerJAgǥsg)tgiOw|m~z> bi>v<XsSpӵ+^C01_6ׅX#z@2"| lڅ ~{7րu== qtjՃB:9H _2;F涓?5Fpy8Hcat|q85h t\Cb iAӍ>1>X$.1=IgOE(HT7 }G:f9 =z@ABp뤓4決lR :;H^z0]?O| p8nX4jB%:/9Xz-=DsjzrAZF:;H:b` :;Ʒa=$NA4#׺}?}B o/ 8+J8u{k [uDY88_Å^VxM8TgFˍ-pr48djJa } =WS jQX J4 -5#˪M/r¤ ҫu43VYqatjg#p>6aޔ 31P\f4&tv\zi׺SUDsgu3ூ.[n}s΀a4f{L&Ƙ U%رݻ.)ࡷw0sU~Oi:=<{ӆOٵptdT8Qu=[ө$0aijr`U[9>@|b7:l]  >*upV8\vQnjUs" =V%츴o1\"sz_8Qokk xAl*HK.$YNn+'O}^ &:Itp=:NgGЛe:MSiBwv=HV,=&ZU1ފq)u<A/MeW#ԩEIa06BfC4R'h] ]\MV`uetfa8p_< լ~\2XҒt}Lߺ41͂A{SΘ`,&c":+fa#Kp$ \Yp5 ہ +EMehIzAwtv]L^ҥҷ#Qj'nZXpٝΎC#te?#hvqM(z ҍ;;GU[{Fck ǝzbSv ) M#h=S)GӃMŻe8fiRz$\% K<"_=ᅡ(ٚe!%>Pk7SKe'F[*]iIl$uEgš_a;Aok"/a-PH [c̎mbE`TMpXt_*QJo-zv)Za4r%F@yGЭS'm*<, c:Aw+҃Nda 'A^uwЇ#hoܾh<F#QUכA#ZysvHS?lx(<^U’6z0&ӲxcU<3-:+q^[Xx8#qhD/bB%]ewr\y_bp8ywx(MrFɑ>$̓A9\6;}0|پ%#tJ4RhuvVL(Xl؞JGo V9ΐі=_ {,jPj-ǃ^uu;d;sϭ#hfBȁ$gE4 dpX'vp8܋ N fn C2_Z|ʆ`[՜!|oUMrΎ}>cܜef6 dy +X\Js^l6=mL{( ƁUg3nEs漢0&E{8&=vGЈm;͖N/:r:;FY)~t_}i[{8=GifۛN;5t4x1oѨY6j Ύ}$z8\?F@8iX-4/<};F]"p[0 T1ul5[pX@x+.ڈ=};ޗqR5I#^5bBnڴqF/mںvNܪ[t$T :;F+]nLY1<A5R:C0V}Ly)T. iu:;nej3at"_Ltl ipXjέ; ;cyd70?I'^|e]kq}߻8#h@)lXZ:)};uL4ƒI-:;>2WoGhG>j5x9.k.Rtfh t'|Y#hԫm(unGud]߫tvMq :; :}[?*خ:nr8+/==mnߎ=`]brWv]k@\atxA)ݪ8tՑ8Gٷ"`e 5+sRCZ'CB?}~A]Ί c!XL22ZT]## pl6FP2W955}Z).U$i 7%bntR*'AB[qhDlC%)gNA#:417[[_#UuyxTy)L$SO%Qql0X<9Ws8mvs!`0; O/^vVӗA ū7hpڛF>tvc' ޯAhVuUz;pRXXǣjcRj".$Yn ^O3C0 72 2CHt*EN'8- v8+$4݇#6*=|O蝒Ӵm#VRo'݆W"=AWf!0a~ =dhAJ[VH$EIc+ <AˀJ{y_1.r!X@h=kZfɒPehbY~aoGЃ$L:t[Acߴ::Ƈu]cu?Ȃ4vB<ˊw!Yg57d_CۤrCU!CVzu#.d4" a! F7t.ZGpM}t'-x8HB3Stu˺0Ebl9A-@[0ZVV^hi`4ǻI4^l=zl_{80* @ix`D`,sog XꚺQf {{`CXN&4|OEЕu]OG[zf=0aY:d 7_H_nl>F 3ZS^E m_c0jh]2ww:)A#˨EFzu:;F.WV||8^ʬpѹk-kIa0%mg?$)fv*pCsS)4/gXdOunevN@1Fn  "Y ^a x!]u|RCf~WCr;^ ekrMe=+>=}{) >C\Zoe2u+镣[UC\N*=s0Xnr4[_jm}8i4N]x[ ل zsǝA=EoT<=Awz##[v v+f`=g 8)|ۅG] ڌނ#h;?q& ! qcHmvtbO}Oǡ7o*-m1.8)Iܴu5^ ɏe"UZAvnGTFpIIXP9Y\BUxxy޺HMg;`B ?׷"h*O ɞ8Ev8wxH+}Y/σd~ 4P/1ܩF6fMG:A[얺\tv=a+t{gGTƜZGFpY艴ގǐ(4R$uZ=!X SW?ɾ9W`(&RC>,5ҷh#zh,J#hD[ޜ}zp4/t,h (Ъ}l܊Mq)n/L YItĆ's{:}tZ#Em|(18ྩ; aшIq- UgKխPcpE_n'EкLV!Ti"&HЇ!`®*Vsz+lpėΊC󒙶g7Ztrݩadǡ-\)tvڮڿqh9.Rlya8,*Y;ZaыDrjuC-XgǡkU|8Ц芿9)^`̑~^_9I'Ź-_ 8irh̠xPQwHBȎh WS,$78R[A q8im&G4eA{gg"YcOi31fǡ")]yFȎC{3NPBat/rFܒAVtv\F}X2Ύ&;ʈfIqgS޻Kq2m-WHYq,:J#%}н#m7,Po?fزDYqAjs̱cɊޡNK1jѷd?zM`R,.`{JK phu t8:zQ0AǗXP8<ø>A1*owF[Қ6JTye?N7t)\egp_z#|VKu08]6ivf?e4^41'ч4n֘}շi(Ztȇt/ZsCA8ҪWA sTB] TNc'Ae\Y9:JL u=W( C(A3U m}:Hk3:Oieˣ$YLQXQ>Wп2RtޫP{iDRSuk>>%{KNJsPH1}:x 4r'@u:=_xv8$S0kغߧNZc#7^{og12mc˂=  r꺌h>G΍咊?ti\VۦIz ~8HcŲشh5ZrAQ17Z趤i~;63.KЧcq O@(KcD%°Q  R[F2c/PW.a>QF EtTWЇ̢gMPγhfp87$v ߏ0ԍBQVV2~ 6֥t߾鱫M >ѵ34pcm}E};H2D+Pn5eNͷpwGT8vQm"ճ-߿:F xL^z|KAqT<N 32?>OFup򒈫CQZ?ӭp:wu:cAzجSi̝EƗT>s|ijs2jTF;2"݆͖n%^/fKٔH  5މf4FPM'&pNZMM>>fP(\b= =/o#ف~96qIң.cx9_#YݧcvJ|)6\ڊ8E6< L} ȶ-a *_TlzM[8 ]D(=ϼ:t:}:6+qӘtl 7^+g+*A6V=4uqOԥ:=~3fo{]pd+AIפOZo9A:wц zEpcL.}*6-Y>P7m1ÕߠC #k gs;H㞛S>kvqAw^w_9Oiʔ&iKK@_#v6* ގMi m3}:HQ5w`}h"}8Htf:b󷃴h5zL 1Zg~\>S@{g>NʶNUg,wvT}:Hcxl> Y>CKu+65`y 08%Y{F4chdSVƯ(8/gת -t݉h 0ӷRS'"]fdL5!`}ᡒ5Nj zv4btoӸ^簾[};Hls $z;H LϿOǦ9DtR p;^ n%_Ø&}MTT0 nz) ϱGk{ñl]M)5SAG6D% dQ02VaԒ#DDm-kg,FJ,3K}%]ޭp$W V-jpVfDj[3SA8lhpYI *D >ÍѨzZ]'p6kY&_a>υgx+\#F&}:H7j׿ Ll}I /V>S|4\zq>Fgn Az腱𯂰|֡v)K&P8]/)VrЧtO6' (!վ19,[ K;V1+KZe&`P T{N+yq {jtCeH2NvnΫeߧt)erZAW(R/nDFJz `Gr;p|҈.8( FHk$ iC6X>Eٍ?ݬޥU8Rk}؂-hor烈@qM,bUKfs6?oi4itmh$4:l |8HKJ;p;H[<:E4^|fNsU~0}$vIGgM5"ƵVGᦻ6nRflַtF*J׹|iʅFQ|5$() oׇܶ!,KAexE<#>u%Yh4KA8o),şmFvHtzJ & e. b<)t~2"+8lS$vyus k }[7Oǡ{[6$}?ZRqh-F޲-xhK1f[$ Rv_K,H`s^y.Fࡎ'Cߧ  Z͖"_. o"%( KY븞\8],-[>/AZ~XP^scv[7*LK{Ojw =֒Yбpq?).toa [i'gp=06npG{ uoHQqV٪_KAx$c e W ԖĽ?ՋgKAJz{vN;/ G+am'M|s)iCA҈0:GV$]ttε[o8FAr #>^Ӷ{+\4xz(#SAxbs+w/Ł5IGm; WM*&o ]}t; gg~p~XZ}%ԷhiZZGni߳zA.Zhɋ~FQPpҗp}/Qa4_i,\ wZva g[^o 9R~_&~e7:p[@>,cϞ3 -f՝#]7ܗp,|зp$\S+F4Rr1_@XU:lR^ …wmi9'*4ҷhdӯҽ 鄠KO۾0eul:o_?6xEG>^TԗtBZCa4NCr.i};ư-E8pF M9طa6ڗܗtA)ZavoѲdY ݓE\=ۡtVYUglM[F6Zo0z'6pgI}dKAXh pTq)ۄG;;@9Ѻ}:F oitpNM/2[ҜҶPCpڴа859S/4?so %b v:{@|9 ]gCa0?5F H*g;h_`pAX}*o=S3@+Gi+Lhl*{켷Aa۔ͻW{ C銆1b:piD,z $Q 5sJ:8HXALty%x']cR\s8 Ǩ$wJA:M3%}{"]и &CKM ]=u\L};H'h2z[Oѝ[h~e%mOo[JiZkw8*ו2})3Wda /~pp6QaptZMZ/,,s*Ц[q$ctN 4H!:8HW}RwL=R<ǔ{/u< j0:7Q(]w|CK~Jnr3Kii*رJ6+-g;|( 8ttNUBC~qϜAyLpiGbʹ%^eK+{( +L|;H#"RpTz.2M}Lp0,!a l1w򺶵[AJKQlVSIcgJc ܤжikv: 2Ҿaktp.I&hDp?ӷ33$g_s+|í # '<%aw~PoYזE7_8UFh =cq \G!GR Pl81m{F˜m/pVnsj{CAZsuIp q׭p8ˌRss (SZ,Dި ]1R`G qXrҔ_".g$pU4\9=KA8`i08lbþp(ERMPƶE=NO5K)}:H,-ö fk6N}}:FBQU<=%H{c4 pN1l08jMŌ۝56| [Roye3ҥhFp83Pk#SAC@~.Zi{|*H5O鞺&pZg6Z=}:H#Oh{:H,N诠Ob]оDz0fΔCr)N%SAaYiҹzG@A)Z ֽ<.Eqo ȣ#*FU$鉦=F:P"hnU~+CA:UQKmS>k\A %;R0nYZhU 0l/Hi(-[AI^N4=YǵTχ뙵?uYtl`ҳx4H};HT J:%;ESZwl|(6lIpnzmR2C4zlOU_qJ =66u ­&Zs)6lɫ7|\o隳"V0^]Sg͞oXx6=ox)eA*B0l SRc }!Aǧ%"5S=U; ٪.''.4CAvfWt8y|GN$U>֦pb~!V!:OJGlCu#+ب"c aS,骱'^|*=;iZ\HAAy.ywFtIzȘ{A˜ T8Qf㡅·EML|[AZZĄ ]H>׆iD׏'Sg=Υ9+ cq Om@+`O8GY>#,P Jt[b_vlzV+JIM-slG{*kRζ='p7p} á0sЧқ-AZj4PrشW#5ؿ۱rךOr:H/_"^:,QB|;Hȣ.phZZkAջL ]. tlκEts҇iNAgSo,&eT&ě%MA6cf˱iASu;65b),) C08^J[AqڥRZЧt^NP>FO0E%5rAzf,R /fEZ]o$_1q\t⇀!|"B|Z.F{PƼ5(_Tl8tCHg n/騡 +:1yC}8HKf?׀Oa콊[Ae[|@8i|9dpG̲RC ޑ^ ح>L9hMc|)pRa}M" rkÇJIJPl[0p6'buio:wŇ4S|HU>o\'j,Na#<Yҿ2I}R TlX'ފ ᒅq*H?1q%}:6mSOy8$Jsy\\czx8HȣQpWЧtO:j~[AxokWϹ #SAa zI|ݻ-MXni|~灇tާ=HviDWXl[$+wx )2/w:gayASrfvu%NgG1NG[ }8bV.inCS >9t8^}y h9%W0":ntvݨɩ5x#ewMvNgGЌ=ľnG>=FcY[rtoߎGQ'àzCLF4&ſSa0Zch=, \/e=XG0ԩtRegšcM"`LN(_­`k`t~݊밯ՐB?A{Jaq}A#Ί嘢ZtRV/YauvҾO4yV$;݆4mXagX6ySN(OˮpEWȫEK%ZCq`qX;Ur:)-';rkiK*q}݂@+R>o;؛cj܆CS#]2ĈC'G&Z4S.;E58Z>GDmB箸#RȪʸ<'l\qm!IoP.zi}>~oA]n9/96RglHqvt'eܙ'M$L\Ƒ ko_Iɑ[kb*H3#C݇t\X#Ưu\+)Ԉr=ĭ |J=ok7Qvz hEvnǡ}3qv3tr]W|7pAFK߬)=%oE2tp}K0IVF: T~WΎ}9v]fa;FOHRoL>gގ\Zo\Ng҄ODًΊq W[0͡>I:F@IK8p2} jѧwJR:UL<'EвU*j2ΎyKx,[q`#utR&()0z|j :9;^@>A*0cLIBwiߧ#i=F;fgEH@W,f!G> cqq{!`P[Um 7f>HK' V?ן}y!9 b0ߊ%֋ˎv/unOGи$G3`,XUd1uketvh~vM7 "}9؉Yɪl0k utq=GЫu_v\7qΎJ8]A"b]Y&@+r:;FOڀjt#']};vIFo#h0 npRXCip:)^ᎯaO}+& Ztv?Z_[r]ֆAl9"`Or8+FNB1;v][OCalF :2nm_0nAӒ]t:;f uNږ[#@-03"v` aG2vRƅEfá14BcFQ'Exa/7/3]T$Rz~(.oV<>}G}*&hܬ=FȢ#:vv:;^,MY=ږ7!:Ag M#Mh̓r ܊/E9WWd5ZS}*=x;tNZ_إu o9u:;O_[fIN8#a4:Wm wEfY~8.kJ:Fv(=9InKYMCeX/$ ,/1^if3B XJY`9"nJƸ:Խ8:WЭY$Xt n#JR{<]U8c1yefp̖uU1/  SceA;Ed' V2|?IϹxųaL :ak05+y+n; :BhEނ) φ` P4G15 [Aӵϵ:afpC}t9`4*QpChƬ9:o<>Q\f`kB)MZ<pY}`1{2ak!t)٥WqX0y"ex.AJk aBhz3n<Ƅ¸Y}9{,9Y !tBKG5g4WbzCtskB{WS`>[06euAXuBmɁaԡ\K7e&֔d0H . [ #8?m<sh\6NHaX,^Ԃ/BQhb^lVNw@\0bs!ks:=+&}D,56TMnH* (+VDî\yJ,͠]6qv!?P/QQIH~}?>\/?_🿠h?o{u>}}yw/?>/?~&?o<o=<㳍OG?>|WӏDZQ7_|O3k0 TJ!`._`g˧4IϞ_h90?C=!/_rY|GOy[6?e|-P6OOՇm(w[MX&ћom-FEԭ#gizլ.cD"_fE,HMk%jFdE4gA9{ K4lGY%b ]mZ0q*T4CV!Zf?3Xfi؈ܔ{-:-Q_N!^3f Y5"&W7OTA^OǘaElȘRRO{EUErjѰk%jȥly,~J%4D-jzY̲a +VD"ǘB0]⾣ p2G4 /Q5]M؆ɽ=D᷂͢T@fq;*t?DeS5ՏBC54Ļvܩ:=Uw4[U1]0M쪡-bj:}bE)N TMk*^Ρ~$2 vթV9S5TczTM ԌHC542DC^a6=wÊYTF)^K,|Pjxmt/i6ڡ>TCo58K/USF/Q={2'P 3wP5`# MިjQfΡ*s#ݴ0\\)̤_=8Lu|=g+3Q:4/R~-c8F}z8a޷}adc>V3A4a8\qXn9쳳"X0'/ҀK*/r<h=L[J ki2E,vN 9{e;;1U#x2ic!p~=fY0Zbj&m=# :?ChHO߉ xDyC~ 6Nz0ݯ8ޑ銞Y&m=N{zz9bʯ&./o!t :ECj) .भjig!p )N1BSkCyc~!=i豚D'_Lm<θy6J9;0Q}F/L+N8\1{VGDxY۸MqR`:^XoWK:i5z[03Kk8FyuYzAx \Gל,.0_wN+=W鱳Oϫ]JKqǦ upGCT: irj0:rB(MEA(52ƙPlxE鉽h#6TcAzN#lN|_:6KyLYOw( Fi]ߦ3Ei0B.M , ܤ&}*l9s FtlNA8Eh=tx"e} (4 hR$t kR8HA=yq.z5]KYa4NM#Xo ]pQnXa8 s=>٧/$H Q Ok(:UfZ%f^w52tu`+I޲\,UNKJTh =r V=[s:H;~.;.$YG.]tY4';}iLP=[R8H[:PO<ۢt #DKGaTtl:IUgwlZҬ9'a 3B"U2& 0  1fҩ \T.߽>YFuQl\t=jT )}هS%,\Fg^wNr7e9 5v}@D> -2F=I gFE`cAF{n0Jsgαh -ßHӞt.PEZ-Hez*^gkˌTb؎O&5LMYTu%)G? Βәb"\b;!9".+x>%Ps,ҨrA㚬z:6]i%kxI;Ǧaq Q$llQXgu5@8(m0tSAu)<itN#Fȋ֚JrǦ07C>qҰ^$PH9H'Qʴ]0Ne3lһԸblk)Fe򂝁pYRf_XWĄ^EAx)t:jT,шcCMʕ/ \@6WZ"~XB0mJK'$FLnƩ @T\2;6=D X8H\bصƠh@:H($@אabé |IxaM'7N៣Em+Mbzp'-`MGA?xO>4αiTy֥"W&@*77b0C󦿎]J FGձkӌrxFSS\k6k UfYY58HR,;޿'"τ`HO/[ ^_40`mXC(>QaҝW|㮬X<S J+=?Wiv\_ձ0k4;[(]اPRM 'sk;3j~qp}dt=W;ʝړA::kk`8FKDzUADٞ0ׅ3!pU`)@IWw*[%^皵NӜI@]w.%[ߥ FQ#@^w~0u"^AY[fSA8{> &htbO~*X^WPЇ.!sU(Q?{E;?WņC.ЧASSn2I-6~Q"7ah:Z =@Id<. 1H]0K~C].E{ҋcөfA:Kku$A:$47!_FvhmeA:wX>Q)A:5Lzni:FE#8+^kl] YV`]6+GGٱi0:WɀXsM.ǦQ2}AI3A$wt E{Ǧ#뱬,yqNYGźű"A貺Ea<-qF [SۙDBm#@<קc,% |q/DtM;Ǧ#U W[{_ {Ŧ{Z.8B{Ҿe}߃AZzXGű\BI49kz<ڧc3큹s{Ǧ:SJw:ٰ1ztT_^hߴRb}OTLaX.r nԣaIjA:SA8, p`g,jOu999xaqȬΎ ңXVnӒu_tCzt.RV"㡽Ge1_AUz ^g3CрupIaέj>VƳ.' V*QA:/0׫ r;H -`.t%08F}xz*H޲Ѳα$ZR@xKA.tF :gt)^z8H 08FҀQBK^ j\?'0(]X?TZ$:Ҿpl_8ԕ l{9L{%Az:t =w:(H2)xo pCTzw .oO?F4auG;r:a5-i-oaq36}Pwvy8X]㹫hv:_+w: OU:oè^Ax` )Jȃu%xἃ`WtICyS.{D4p/5Cr3B -H#PWej`(r x+H I^a!{pCs_nJ]PF=nD"jsw0[҈W;H+FގM[__O= 'Av5XNĭ 9ڬv  yNiAXGu-Ԕ^p]SJcUKRzm ʷB3vƗ*E/2upc]MwFH[} =ːztlW>˞z)=KϱCAҵZ_ # 'Tl5k xnamh@Ȱ^Cu:U8H_e@zM[A!%tlcjD9a`⎒))[tݷeP=0C{C빏I;VC ˇ&s3r'﷛vR5v0Κr9RȤ4tdp;H$υE+$AWGJ&hm% N&j6nj[Bk a/@%_ -c%zVokQZURZu_T}~l扖FcInaQ-(ldw+H=sҡ OP:O95״AZöpdU; qe_^6p>Up cr)o{\wgUVz[Ak qF7bS 8@atEoË\8HיͿm[r;H'LUS Y-L>FSiN ˎth8躞F#k%8H' >b+ܷh!آ9#ptxM%*sM'a9Κfuqn=2ѷÒKQ7:ҵMȮl1tx WrCk} nP81.O V z˖wt2nu^ww6qF"JCE+:HJS8F) 3ݤ>p/5ݭ r &D _yhQ{Q\O6a}隓h6Eah]X:uWAO7 ¥tT%R}+F6]]q`1863O:.-8H4tC`:rFgiqSd{A:mhuqNt}>hToi+_B m99Zr;HmzV~K~VGZ \$a= 'y0:o&떛A6]}X*vQd9[A8F{[&oQA8J-౔o㧬٨ A{OHa4:E5cVDZƢQ><9.u}QeC8Hg)J4D{҈FhiqNra4&@ĕ3'<MoiKBJ+81q$"}:H"=@[uq-g,ʀ'Qq{IIX)q"A(W$c3EIq?a \Ґ?g^q+HLJ[y\Ѩo̬%rc[{};H1qbrD =F7EED]pEսO8kpoOA8llه6,\ؗTkdsa[e J[Ñi9t}:AL3#A:uՇFA:T4ǦCMqKN:j@&}8HWDD;i(o2R{Y --6)-ş09/._#Ǯ8H7}g+tRƦ>ګvAH":b+S:9qEC{NLQVwt]?SAH]Gn,%Ng㗼Lݩ>ɔ 8DR 09([272A!kfc,:*ʛIeg 'p]U2*H뭅H0ZDT8>+]˰\8H`-tE&8H ؖǦzvl:a1?h0#'teqڙSķtR}+pJs-v̨9>9j=3/ϡb=.9S(/w:HtEpl:ւ/;:2WjʤTLuMĂg SaY Q |CA8.7WiMBoǦWmNǦZsYqNAw|ܒӱiXGM{N `#pM*nCq(,܎)>PMuSVʱ{Tldq()w<PH~+Ɏid6 CJ9}(6݊e]oq׋$0҇:Bˀw};6OKxߔ^ʾؕ(-e1ulZ\sJ|8v?O^SQC ȯװa πsU쮫QaƧp肠Rvp(vTFߺp*v Ms6SN)r;@3&?'X0]n~~NY*K"ftq{ON?}U@_`{¯e5@`7D#) \b]#(oj( x=:G3QC᱓8F)oUާ޴BT oDSP#F _Şq5) \vJ+.}ȶ*5N_юȠdҬx';HclZ2Bi¹9}T{@W TV} {2=Oio-zqEj\_KC5q]qMJ[z[)qzFAz&⋵zt%)Azm=05$ /i>B:5AwM};Hg{ :24 t \BM]nAb[ nņ>`I*N8Zd}\ KOeţ溟kp  0k܆ -_&EjW/qf0.W锥b}T7cr%Wχ>HHO$4sWR}VAS ;fGER}b uk,4f揝COl5n˯YSlzS|zRJ|I#k4FT}~$zGA/'EINp}z}vVd"ގ7]#Pެެg<Ǐ!QyjTΫX3D>lE+ZO}9)RMmOIaz>WC\6 s;xJBI QHf(KK֛"bW5MR8ڃLG)Bop|찉z,趟k9yy_v=qS_۲xk N'G[G\>/%'g{\NBSONr>RGU0ʸg= V\"qm8+k/4N,{2:;fUOw8KU0N[w.+hLI$&i0;;nV;Jg6a_N:i.i:nS֡#.tdhX4>NʈLxY*]zTdvO8NN jz0vgu8%ZVߊҿ8p.oGГ|̔Ǜ>]\onx3]H6JT+m8'W.eD|uqėV!FT5t\ Ovd쇗}=~ϥٖVݷҷpğ~;=G|~qD}eׯJv8m#`^yuJgk|8Կ6Âgkݔ8 y%ˎZ~p+tBZSqގs ]Yn԰ 'EjѦp6&O10X[鹥"K|Hv- qmWךz},e{ _̛A6twSE8S'0MZgGLu\י>WGk8KYƷ$>'G)m O\VsgR)U_wJK#;S@>gNO$yCuGM:6"vi.TF;BѸ;N^јUtAE?0ϥ ,2KI|{uʿw{% rOv4 ƝU]G hQ*'ämAh6ӿ۞6?IfUt(?IV80߆`fY>7VH?&:pW_sq=3Ea4jbSzsqsV@Ru/Dr8)f>pڪ,o5oG HiitH-!ɸ$pz4dpVD8,V<mR.1p7|~;.eH.MտIv[6 14qq8z-*4~+: ='cϹ4Ϋ>rsVpV8,u8 *ėV`0Ҵ!bipKiFN:ʚb]0Xv5Ò&;}]B͍FiX롳iTIFsoXYƶ90xc{'G ÈG.xõ&"s[LJtfT?S}Iͨ ٵ\NRaQ+rf6A.w/sj\`l+'MZ58$6jֶ%lCgSN4xt0Kw?epX6{6mܭw8 ҲصsMEa4'7^aSAa)6; ]Slq|hv+IDꩤ8ȫB|\Æ+&mLkZnFةY^[^ǎ-Ů%q|Hm}t*]iGVkױKji&Azֱ,8kѦgAǡ A's*>sBzoxz5) oΘs }\NIdrڟM/R9 v s< /[ c s^٥ǛG$J}y$O  i-H=0u[i8׊ ]ںһs;MVֵ`|+ 2UKw'[}[A5k8Ҙiqe,T,3BwRnVᝣ$'+>86p\,0ZlEY¦Gѧ G{:ݧcөŮ~+z?0bV/r˂OŦLgǦuNn8mTt 9Q,:CӾ巃l0S!)uU|<aR{ 2:\qlZϢй mn cӥ.X׳UlX;ԱYt)$1^F9K vgU~PlX ӡϾᯂ].8^:JH}voR7ucӶwWqG;ߎ}D%vH:6rafޚ?Rym56.OǾCf% Ī4Q9MYT [t+EZv4e8qoV7܎EkŶ4]wC2q.Vx~z,Hi<;@bT8;7Ң3F&8|s:v3B X¢-ڒ%w§ۥCA'-^۰oe._iFv^׆>owZZ;܎ުZ-ϓc6Qp>odCV+>ptZXsA:L,c.{чU63Οx)2jk_m $_Կ#\Oas[qz-} 5IyoHh<V:Kk8%_9UoH;Gnmૹ[c0fSڛKYV)"t=ɝ%t΂4ɄDχKoSU9ukX79 y럜86Tih-[f ҿCSIkE =Kx~2 Z9q d9~5ˢcdd@6φ8Hgg'i|\逶mh>F}wGt-$K}+{n~s7uWq"PO~8C'IʢO&Vu(1BIJCA8V78 d(]["Kc DgTgP%qWE,c-Ar;HKJ=Җ;wu8Ro#_ј8FRW%}9HwݮAnIBwNx!^>OmHaGѼp_PA_ᚤԄKh UiR~1/80{ UFwWOZ(>f(KmZJWpҮ5(hZṒOm }"GȞVKOd0r"\l͢>x{|RU*o7o—l+}Zyqz qh5Љn\AȲ=Wױ8H5#c33y p8޴>LO -B^f۾0}{+*oȯFWn 3 d>ܫ *¢x[ 37=':H{зtK1l F0ut t/e}j ]+ғʡoRzie0y$'s| u+q웼k7q; l;VExGR& lK ;v'*aF =- <XΤGAϙw uaT :>ato9Hp6ҷBiɽ QQ@p }Bd2$}9HUr,F-ݷtom;yer̃AO:o;a2p>7 uIзtʋ sXhWj2w Ύ-lng/Q`鲤k? 8p]AY?g% Ngqg ckWWAXFoiͭ4WvnmN%N,?4wkPH_LJKWe6ɱc'x;n,rnC&a8n +m79pt⯼i8Wv%Zf)~N.ض½ ~spWMH.ak@|BȤ kDDG5+;_Wpwv]u'}]gЛ3/p]sg^O1У)v;|\#LNr\9SY}9Ho - tOd2ZGp&,{>:>wxs2L#/~pEVz5k.cl'T\2oouj?iIS[h/6SР a4VOJ]MAzHJ>,pHSz,GܭtʖoeXG \ }V~o^ђ%kX= = b6Wp{[(H}S'u(/Oj:co]L* ?h밣I`p[+e]\?uM#Xc`2\:{VǚR^E,P^f@K|'X0z$nz [1c 0Zv!gmAj]$p8/uUv };H#M[JUB \O~%L ,/~[AzT[;0hC$6۟7:Hܢ:Hw=RGз7럫:Ho}BmNdp*bvǡ|SpX'0Vu ]ܢ:TZ|8F8Vq 67Q_óH s ˁo\JZ'}9nm:8KviHrZN:#tj9܎-wl*z&CӥM=`ݿ>*s[ 1\Gse4uiZ=nϛN\AQ~k! PNmpkUVeb\@Aznʠ} ZSX=vn[2SR\uimOfPMz>lje: ;93.EhDYvP p0^{i:y.:x/ zR #ef4j'q'ңw :˺S};~g1*Vz/Po2|+'zao W|G'tNkǁgu 9>[ ZfPWat֭0͸0.+KA8mtqK=UپygG"c^F$uϵlmzKQ ˘~\Ga+a8 k |򔜃A0Oݺ3(HwR(IhvWA_f'y}P䅊0uJ( gvY;-Svalq*< I)`lkh z vΑkc(=J8H'fSZp˨0PҔ>ǯS="<wvi wڢЅ3u8ݓds(%|pngW;¥ ]-kOoMc\dIa x9A o'$+ R EǩwThcI5Wqi`GEXy:5Jƌq>!|}w =4fJH޺4ߧϦG%1 |5ͅ^ ܊!izEV0yx7&1$^{eQAz-A7tUIy[,tᶎ;]F=uT&>g<%QttF-3Ck].Ncfp.{gPE};amQaMGZRW_ 2 ݧ~ O(t#Nj g[-->@8k1X-MI>J*v֒ Z4=q#m^7 ?ȥ 1k_><Gz@(4n;d]ǐ3A'|pKtT{ ,}TmCA^_괶cAzX\PmyKͤQww+u4bQl=kl'X)EnǹO[J ܻVdΥ <VGcA*:N-8/}ߌ.y;N.:y:H{Vua34J7Fr&8]OuNn3E6X"E8*~T|L 29n(p4j%Ւa HktV8M$HmVw)OupT-"ֽ}X1p_D,%IpTCzVC ]7C4,ffzeAsygN;hk4mOl( Z@ G1f! =f)b}q;H:~T{AѥoԇE6N# d'Ҙ!6¾݇'Dpz ݇wp:iuzen9hߓAچGig \Woci8.-Vβ :U~A *-K(ҩg.HpYzP6cT8}OZU!'t?͵;=q+:wEi+ֵ\7ԡHLA`r0!DP](!T8sir0Zn荃h|yW #2r9='^|WNk+qꍇЁ4ƙxǠCr *4pz&c&֣WB [c_ne#Ǡ[w .%i1\*K]"ɒh #RB&C*%(X,jIx̝9iSHjc:A'q<1elquk9P_H!&ӫw\Eڬ~ DL%?NQ mF~Ls"g*0RA[衮4= c+NǚZK2DlD 'k+SD׈5Vz+ O>*~/|g?xڛyO<:1Q_׿xs{/o~߯nóGWE"KL_}<|e'Oß?>|[6FbOIvg"&'}̝)?hQdx8_WϧlZ}ϸOq27_sC!jʏyKc0ZfcS}_n  {}:zLn驪0\[#7yzTE?ɌOV\ɊUHJUd=TE\Q^7`Q5n}bXz$D1>T79r"'CUdimC,&`r?H$C]io8礒PAYyGL)l4TE#h2*/p')w}>Ic]UhTmQ=UM{LI*W)G.EdziwJ<|jhPʫT^GtFMUy|1HjT iDǂ!Ց>zOUS+=TMWZTE#JEez_uMTw(&KQbQl2NC]bpxB8b JpPvFS]9*:E\d+NU̠/3ą & $BN'u-R,EVzNG斩衮sX+=UERAJ{TW:pVdF"-ޫ5JG\esNP^!CͲj/OJ:j_!*!!+ꕺ2ST,PWM S]i0zuOq9|S\YwN] INk-;(ٻNԕ& h2c:S]lUwf6G(FJppcW=UugHxDS]JEGݐp|_>LP~_9~v!W"HBq%hIx1ZW5ZfYXo=]1Nk1Tڣps\ݷBDyC6e:gŝeo/n&.PU:v,I-Wa.p!cwιJAh!t5o=&Rӣ:=]Qo-NRӉgJ_,Sxux-_X C.W50@+h0Ϥ#tZMOWFs}kfChW.N(wuc6F}7U8޷B<}9L蛾ڻlcQ~|СKSǫCcQZ[A1E*q^ O}L֕ vFtdi!tLU 2k5d!t?|baU[іﴲh0<[WYͯ}h4֢6G1lV!4N{J˭h0^ ﴲݶuׯF>q\.@nq_.,EI$>&~v+iuM_08pI@G!H~B^o/5ooOAzJ{  ss_P<|{~pD`~ЫзhHl:l/sKg`0+ [qhi:Hk,2Ka<#L/၏'a mU]/ty:׉~ג{Y^r?| ¶lj.ˣP eLt5y]F* Y0":ɟs5~Ga02 ք QJ J?"p.#O / S{;};n|9ę>ut>_;30z -E6qh|ѯ/)s4oʨ@؟:HW:Wt |JL5oѲϵaIҚ tvbbCךnGcEcXHו RT,,=Weۯȭx_ -#sv?hyU;5o}᰾\Y7bb:ed w}[B~nث8ζ) f KZzn#fu_閭]l`_0ˎACޮ"suLKo};HT{EA}ub`ltŎؑq}}3ܺbUޞ$/b[ʔekBǡuPr(:J/}9Hg)X0zb(As_ڼZRuV~-3:(#3Kd 2ug0zz~ b!:hM҉mumɥ%k{D=1e%(;};F/rAzD w ˿Zе5p6k] 뿬]c8}) N,/T.\g ΁pr8|+H[vP`hlh'gL7q8Yscç")ThNPպ/t=1˶Eҳ.•~b|40c,-_h9e1kʎ^?o8k?.to$4O]/ MzmCNEHDq*sNQMxۡ>o@RAk3!?Or +^?o$qm{h]^sy{"9-= Rr0@&,c×RD0[S9;|+cx`,;R\@ض^Ñ XzIӢR0Z,{/*- mU6IAZՋn_0'`TW4ٽ gy+}WAxeeIip`Vg} W(H@Ζ@Ak</HM/T-{Cyqh|JW[Q)P;u _07H?_up(p rS.-#Y×`%ahm \%+kWAx.g B5@Az*S8};HԪH( F Jr"aTn'{WAZl>9kNSn2i0ΚtԳ^/t:yͯuC^_cti| c% lZ\ 9qh*ky(n [aLJWNԥBǡ5 ]#:Ri+Aiזz>@rEAM7m La>OmB7T>QU.EhJxH^šI0cT_CkP:8~荼-u_ lq_錣Gq`ۯ)^iEB73_8]W NߎCw4f JL5_8.?BMKmy!D$ǦGq%D*'lt3c^Ѻo9!CgIB/nHt]ZKI,ǭ,7.bTI%lw*l"t3Bc3+|ш dls S:]_ N0Nɫ8N(mEB>]e o\X2ƫ-gRߗ8oC LRqS^&ّ8J@pS U{BZX R'w> cl&oItYW@8cPۥzӗpC_A _=J79aԋ|V_Mn$\(:};F/~r zc}V),GO08ckQn~^йObefW˄ocOд8ayB\eK };HNm8F?r~l8t|AOЈVfKQUI+ 68O( kU`$oY<[(YD F <޷@Ab565+Ǯ[.No  F7<.׾:};Hڶ}3jTo:Hc>tJoNoC toGFwޯat/+ֹ۠7]* Ij-rmJk^/8H׎t^I^iY8 NrYgQ8or6tL_m?lE(n _؁/19_R-3&(p_ǡ-|xLa;e җt=ygiY%Áh˽]a|Bi]}mΕ- F)BTZnX =2VA%{`"):HWapVN5-C%pjEן- EG:5>zLt.Z_ cǐFq8R# gpmS`c8};Hs&rI*ֻ3pk:y>sohZ8\"$ˤͷpX?c`p2G=,r]12rF}x*mzC ]44nT[CKCF={"YгȻBiK53"ǡSޅauj>:H-i@蒪?О-"ǡVIM%Z qJ-nI?"=\DO- {O/hӿ=ˣ/?1"O[?Yڹһr( /l\s^eE}-(rZR{qN* [ywW'`ޜAYO=ss;HwJOy{oǡn@ݷtX5ECU|ђȣ8өa03nšj/tΧAVɛR=St1 cn{{&,PAx<1BG)C.[q̲MPVѯ8QJӽ y>֚:e݃'t!e97%y?8MgԹE{ڵ4}Byi Y8f7BSumeix_7if'_Y:7"t+β'^i%R|R* 2^пk u`,дNz dKZɪdphowi=E=1)JN l2._WiZvK`(&a:z HTDXWՙG"nSZfo8WͲy r!qq蹶[l4oXtƶ9HˑlJsGFf ԫkoYחz#7 =s$}BXF{ F/7ԙ"i ˉPU~rQkl6ydJѳ9};Fi+51ܲ==uowgE]_c T/a lM'P2%IR8};FJ+uJmsY}yД?Wa0J@Κe~FwU9ͥ+}B>s:HUK4r _Mn7vj}W}>WQzN-'f8W0P|Ti Azi~FcNmX+Hg Wnx\Rn>c8F2Z[ҽ3mXZm+a4uٿ:p(&Ւ\s/T2¹JmB鼬S~;P?'p[HvO -׹i7$'yF#uˠҺ@@tQ<@.4^zd .HZΩ|8CnOXyA49i00΅{_0PzŁFn. ptݤ"靚ToUW:EG ڻ<$*| .Z?g900Ώ_-K[8 nJuq,3#$p^nA`0AsG_@wv_֗$R, MX<K)[*H@v3E_mCv!Seyג 9b h á/8k$} N'za4Naqz 3yKZɖSJR.UЗ~"u@x o3_d ڔv2~i9FhNOKa|VҐ6 e~ d-ԁQ s(hpn?uҫ069qot-WOO_jCo_:t 兡ilkXnz*u}ԓ/t_ohw/e殴^wڐGANgJ7~~C8d~N&8HWRoûȭZ_K=6}(vQnٰ/Gǖԣ9 ϙ1exb,ɃXKUl̺ y/TN;/|Kg', /iKHB5;g:H']2_DTDHauxnM^Ǖ:bdyN2=*Wsi}R3//_ZձzխKY`ƞkI\s.:H=UZ ٷJ& mUa2~Ӿ;L̬4j!};|s YI,)ght.4)@nY,j=-@,1{Cߎk%2/0:-u8:Ha #asg^щKCmCmҶgI}-+_ ]ʔзCl jCBaU8- әRGd8H,h_٤= J KJ\aU r\/T"H[@jŒ \״@`,cvv:c ۴HJU5=փϓn,YNڎ%$SdyX 箄/yioS]}C_ OLaUs|d[wSPfF|{Rԑ5.X'Y#]ARԨKuU>0yvh}@u$fp|-FgU,uI_Mh_зt,@AXC('}hjb.!GuL&ŷAz6,Z2Az,Y .Mv/t ^g&1 } { gϡr - -,ݷi˭r*Ұ/pv8mE.h};֙#v};䨣ەKcTx!5_Cû igyL4/R8\~>Zt YZji·0zv;3z^8Ga Bc:MQx=>q MC+fޜ;d%ٝ.w\$Hy<1.[p.{N0"5PGIF-ګxq;'Eٵ(#TUK0W@6p3^aFu 1F]vз4ޭ> ЌȇF >0Ȣ1;#fІ+f?doQcnj#~LE@a0.|.VEȞ + pR mB|e [ZO )dm5[Ng:R0X"5Hh4);[ k8Hbhl8Fж%#PnE+(o P3OXvgܞ/0;Nz JkZFCo Bd4&vRmeHZIȡt|RO Ng`E +rI&@ngcJyW(4L5r {?\Ʃt<ה-n µ/SrW2Sɨ7g?,H4_q NiySŹssi݌npS8eo ΞzBO ~y5啟O]9SkqMhay+eSa̕+.Qxx ةDX3Q6Vx):9-k+AZrq8=Ͳ<K]Wʋsy9At=7n9x9,n$|sΖ>=AZ:a 7S_@YQK%-)H^[ǁ%z VC½݋ Q?~ttEG6Hv 7;:HO=UIpu4F::dPaf~pWz7$snfxvDAig5mf(:;}l]ևׅt*E6 y쟜6 PAwSu: ]EގgGe|J[]9j;nSSV- >oA\՜1lOu.O]8HNѣ 0:JsGi̇r ]~WiA:*r| hݤZvWMO: ُ(:qk'mzVʡ rkV;hFiܛtJ/| ]>9ꁣ킠mdAl\ͧi&$:Hemt n='p$zw u0bJᗉ D+ɧ Rfߔspz'7>WpÌu-/ܱA*CphB̤qE/%v'_gyXmΰ{47O]Z pcq b 1JE bh]^;x&k, ϝ]\p-`ڑ4KL_Ex2qREŦ>%N/T|NWj㰾ӏ{ư\a+2:!8t{]j|N#z׽wy٧hYAwtxR z2g+Y!8<Ү<sw9.:B2::E%(m(ruPxVLu eB%1iEȥp"sx_D[@w?kxlćجV_3Dt)U 6x׿gi}:Hsa~Wڬ\1KX9H*7.vQ:ս9HUay3Mל; {Kdnҽam8 dѧvi!n~m~C{38-!PncteD\tp;}da4;= -etn˾AfˈtOR,`, zEċ0ߝΑm? Mν^|?NdCGe7\[){]f? < hk'F/Z%~ -LnmdY{`Y%zu^4K#}֓kQPowpzpg9HscQtpK"MA87};ݬUO;^\i[F\X_i]N\Ze÷p(&/ƭC{"!3b' Ga4n&G&A:3 : 1ڪE.Oq4۴rv^aǞүpQe467|+Nue"A:͠{C'81KuEHIsqN{JMa4b*,!aӷ1J ©J[zB GM oa?KFW X*_`nUh2V:¥HzM# tΤa Q; 8)bmG`h@l8}^Y[=> YtYtmF^8Hnm",I[hWC~-AuTYt(m)8EKXǔsoСk=E'AZ~rܴEukoшkUZyo;} w_(˓֋uPӺ:Hi4:A:i>Y9ݷhc!k΁Ab3 V9_iqH7};E[9ܰ# &a@2ߚ$p ݳ &" d?:&GAiYiBs^i98'#8FBmAZՋƊ:Hw8HeOxh6};H2ѩU֎tċi=a4m,WAYF֫GAYT*HGt]5/Wapovᰖ e kvڌ F$`aѵut^g7{?OҿC:NyCV׽AVԦA:8roǡsb^ǡE:N{hxoPSJם^qR/2c7|WRFLWAztD_J\y_a\z;Pcn(u ݚ5.WA+f;KA8_%0(F:~WJI/":.S8H,A mR xVOu_WA8ܓrdqwD=-趏0kP/8gң'n3үк /*Cw:n]8A~ŁӚ&?E |+ Jwt9t ~v f4۸a4F8Hߎl8HmKKwA S5}a KybH^ ,5kgnL ]qC;arEhe@@ .pv^Z]=Ac*:Ht ٚӷtUFP8=6ZIWk|F{8uƺXrȫ J`_08&'>_ι~KatB9گS&[M{\Nҹ)'[01d-GS_(HVz~^lku= d-J]G E/mQ|% `,\~ū [~dd mOia FO{+-:};H{Fg&o ]6??AqhWR_-/oakh* 8w{(H{d6N~[~{|tF(Z?"pNY.)VƜ ^t SH_ S]3Pu7quvneM_o Dv9w@A@FD8}F Bš 0WiD}ZR,.5#WpJ@+%ӪcF? cWl% ? 4 [a4SZ)NңKxqK&XXv m`F 1dQy.Qҏ1_JqVY~#wAm,ҷh]nv~ӯ¿0-}^O:Hτ0+'{B|4Z_}b[kO/U: _h0ݢT:Hwv=lF?gV/t(ӹK[_PL#wNA (U2^ʁ-),+¯.eY}]ӷh tЬsZKzތFWAz' g7mUX~> h/IcK =H~Fw<\6tI$>G)/\4ƅݱWa0P 1q&k ڔ 8| F[>ͷt&t*uf+u _0zat ω[:HZ䞂K:H2m\_ = &f Fu%}ЭpvШcYyESN^ӷ1/o:(ޚ1@L c !eŸ]m0:{|:C8,KF>KҹJ~}*^4)$:};H9VS=>Rx6}UR/e4q No¯pQ '=PAxVA.I;C8-|t frƛoJ4Fsv}J? p9Y}9L0ǡːzͫ܎wF^hyj_k'o7"ӵ[GLݎCR:r9C'gJxsw/tk6W6:q!f{v9~|*7ﷃtGPB:}uW䙅U:~Vg=_Lأ,q:hJg]x{3U%0^]_}i tK8NƐ(]vi w|Z2-Kq>Ա+(H˲^NF{;"ܷwZzA:{ȒHi&:~m7@qϞQP{T?c2ыl8Řʭ:{~/5*/a)r $R=^=OY:HҐ֤F:{`8nʎ^pXzo ZW茽RG8Hl:WU΀ֻhFSºvV}#U(ڔ/u '[s(Um_0ϻw)|+H[Ӵ 8Fc]WA؆ٯG| dȣlH 4y,/4SI[0f }gl$Kf4ڲG[|_0u醃hwc+ҥ${86/ϚS g-S/TeΜ6{`D)kԱYS}Wk7k G=iܟq^m[S fA嵑@ҧc1:Mоqޡu( mwOA !rZ5$zg%Ӑdp Wĝ8q[A8L{ј8'9Q:MY_:4`c$0+?c\лݎMOyV9`Ht?@!}dvk :n~!J}r`8M҄`[ S"tу}^p֚8r3.ac_0jYO{uu{> E1>gxwd͍`7YZi呺^:Y&[ \ruttKӱ'(7cj-t1?:3Oo{g (wm"܊gq+>4ڥM E9@0a,yBg}L`Š [;e^xsc@c o_)E#CALDj̽ow h1Au;{Yqpst]#qlN3 ½,M+'܊v&p.9 7i29Ҳ~nMPWޫuvFKOپʎt-ugDZ\J,t T5]#ZX kg0NSyuuAzb߳F4X'IN ҳJXt_ 3: =Sqn_h?.~  D.W#4x%N6a4~2azw9璭;s^#qFcYBL/k}:HˈMJ4;e˓'$M^A:N=l[Tz\ޒ7; Xn)h Siчb3աuҭ,:8HTΝqlzԴnOqgàG]VݧhIs-Ώr+B9 U6?MKg ;mJGx'O<ʘ-TYbOnӻ %-tnB >z6al9i5Jxc*u&m <\hȧװa=R/mчB_5n5۰-I>XV|,K${9M#W9:;J~;DSY q2K=u~2HPϟZ9]fǗN[q em8@/u7, 5t\*-J֧thkD~2bxflOte]]?leH HNl|tBʞ~;vsEO6dI=bp3◍J8ҡ鯯]N׺ʩL hh^)PҊYق e[Ni1k λqd(%>%Hu}\b p;+f\GAt)Th0V<ѽun/.!,tl'BuA:h.ZuVu9zy.t.A" ߨ}+ Fi5C})y|[AZ"}fu(qe'%q/y -uCLˇ5o^Np+cJ99َh:aY :В1k\7U:HGN8Ì=ڽ1ŸAz pLYo3u "`Ntې`w4{ ¸ R:6#ۍ B6v+ 쵿Q4I0;k; - 6S k]}:H3Tlgtg(#uAօWfu]V`MqMK#Jt.r9qlZ7v8t[; ,8N6J iѧc{}ާc_˞dma>]?;UlxL]p2y#ϭ7'6}#/8]:^C4܎Mt:"\Çcw*r+:ҳkG3xW;W2G[w=z) }\{ޠl q(ëKgd [L:P]ױ%9s3;82HxDZ~6)*aA:YI#8rL=o4Ϣrax|+E85߱%% b`2.K{Os3A(,8 -jV WKLzgΕKϩ86;c86{VTw8:AO83X COMuvG [uѧ,9/: 'h< ɫdq :AzBctO%F˔_/uX}:mosZ=iش4̃g#}86=$oh0Z+}8.Pαs;H[:t_y;H#XǢOt ݰ@,TSptm췂9%BO1NJKv {zq7d1 p@לl J1 6vvA7\m~a`z弓q R_ 2m8i? l(f`{>*ݗ_WA6\X$ Rg?¹|i ]ҿؐ|;Ҷ(ZZoN+^xɕ[@z"v:};`ʍ0pMg 1И߾aתp.ƫ \CCi_Sun}A>v_D&]ly0l%|+O,Q~vU~Ֆ/ >84~Ԣteo/a4_Az-!4_X8UNK w-- ^Z w]ZN8o>5r/tDtq&ԓl^/-s 6$iiURk]|Ye&$^wu4]|EOL avuWa0Lh-v@A:>ýC (ݘӦ- {kֈg`Ai?[I{KWt!E ?s ICiٜS Vᰲ8 e80—hޖ+oZcj2!<}c*p/ ǖ^*kuXy.|mO?oiO [=0z[6b])0 H"ˤ$2ntkc]c031H#U;P_a*|lH8| FjrQmy .RO͇۫0 Z/] n vVFm_ ]pȲ֛&/tN Pg FF۩BiLG}D<Ҷ =B`]ѪnKIKA8 "p0+"d <W&P:Vt{,twoqˣ֫8t-4}a45,&BK9H/t[N0Z5vvڏm{߯ЖZιŬq褩Ȥ/dA:Qł?dBѲX@[.oզ+ВS~m%Gޓ FݮJVҷ]m&N=,z%d/t &NAs,Di=UCe__ f) ӏBrN[>0c̙uڶNӣy84"^1zHBҘl :%~q  uiIto kI1U%Azi)_ ݫ:Ǚtt t[7AZ'$oѴ~GsreVGo2M|MIlxֺӷ[8};Hњ2 I_C7jcL~A:5c7WapED׵tima2:(HeW8kOz l9Wʩ(Fj (mA:Hi$P8Y6 Lp_IGHХW(ѧSa07Ǯ0::X|5(- =,գ^먓 3l#*G. {*SAvRENsu.ZuQ<87QXt?KZڴpQMЭwqΉ^$,zwNˉG}4ڏ<d=ypQ,1TSFN4B z"꩑Fc m :Ɯ蒊# tz>WUFg^ 9HGi0:av4zw./L$X݆sud[ mMCZ. _)$#T1-_[nNҒsEAx5zܕTN1d[PX'sU vb[_ ]6u8Əza8H7o5a u jc48F3Yu+>{Gr*Zl a,Z> "8f 4Ϋc ;\wJ+Ћ3̡p8QXSsUtV?lw8;u!]06V̆|9 HA:uNv3㫴 ]*4ϯ§.ZrTm:|n {{< d2n4(7; 7eyH`M!óMcu;rw ̛h/KApYZT:ՙ.=dv?W7Iuk/&ru*(Xw0 Qs{F6ϵgt޹ a]w]+~bJPpO[MQ,骑Yq:H"L;Ӄ6ދpM5OCAY(jo(=-M?/zw-Dmr*օI =>OR8j%牖,IR9htK\)Oј_u\ u ]JX~ItԿTz߬Aں{p:JdatÚ"m%rۧ5M!%?ۧ&pzIɕ0ztAzI)1T\N :Hw -cq퓧͙A:hi9P`"D\ꌿAshW(Hp vOz*6'›t D鄓cWNSrhNᠻ 'XeiD(Kʙ0WX_gNaK{%b{tuaGm3/k [ڔ[s .El\ l3I8`bWw*F#{ !1ȓt( PKWxU }b{$:^9И~^k\HW:cC_npM,{Վ,lB%ub+.+vU@ϐ S\ 5 q!Li>Mpr9Jе: w!4)3=:FT hD p:a#Gcvo@eb'V0[ӽRZF?xQA0^~hf{(^uWh 2#3)F15 :[(FAy!Chd)%H[t %F?',2 1YB_ޱChCB(M5Atܚ}j l@]p˹@, *sg7Oơ:ќ&sSe!tr.1{ttJ'#&uRImWu4MzZ]6)5qKBot:p^)ӝ86[M!=bo Sy0 F絴gFi;vk@uxv&N*9;;nROBEljh!p,ӽChɄ^{tӕc;[zt^A0Z)s$h L :my>DXK=:1v&{ykȸFF&a3sLolF5cM<1aIHA^p/ZQ!0┥EJ6S4QLtDL5XѱY5OD#eV8Np5Е8.OT(.LB)hWB}N% ]ךhg0֪*C)F}!trR'%K i >:JBfS0r|:9W/D 0;Nx-U3w L]%<\)>֣bC +h̨ 8"*TYNQhd&qܾ!;ou9Y#MP%ъgφ{ؼmޝN_=ݝ"ʔ%-=WˣW7jׇw{8ݑ˓`}M>\/ޝnn]yfw/pa߾=^ī!Ǜͣk囮_mߗxf'׿mPgu<6/x[SRuM:nfkoaf׼=m&'כ'؊'u;k-ٜQݜjq =LVu4QxՌ7Ikt?Ak6;ybkLjER(]?z?<o%(lh4k(G oտv5kC3~ڜͺov=чfeg|Usn\mcCc?P 'ݞ*"[ endstream endobj 105 0 obj 152635 endobj 106 0 obj << /Filter /FlateDecode /Length 107 0 R /Length1 56089 >> stream HlV xW|!A{Gu,Q5Ze&DbؗTQyU.%B\.Ē;ޘgf@kV,mlwDJH"QXQ묫uU]վ>mDڇ5#k;2);L",jv5cnőz}Ґ`W+ÕJu]IDW+9S*9?GzϪG(ݠۚ{[:8D y.eG=iG xjՎ.FA&4&g*k':.2(:Rdڿc<%+ 1GԬbй96k'[lm%-Tۦp[t4ZOt&sWCsb7崀>ٴ.ZIf'6!:@[(i!%Jtk&=Ft4~J EwhIF2iehCc58*4&$&Im}w 0`F/ >E dڨ@E=>!*8+4h% o΢9Z%Zc[8 o-F;J{Yq::]>:3> bf0tCw@OszA%T^A_C$#  G,O@dru7b8nͿ O̡rH6f;;p{?g |Dct3\g| K|oM.[|=!#~O)Wp%?_r5ARJLeS>WP~Hb$r+'/'yPN,1F9q"3F֘P)9k4Rdn)[1HB󸜗 r_C)GZ9S^yv5aUg\^K:GWDJ%ܔ2%A-UTH<]6 f`C5SM ~þF @&0JhA6>X`^% xJÛ`|qVY Q c&a6a_~\k?I<Ψo4:(e$9F]|n`i ogk=I+fd}̾f?eFK',ȇEO&ݤ.DH+$RKDhv3=4# A2XPzJK$J$K -*#%M%C252 7{]̒8{(D1nWq%ZYp[ʱLkrк*ձk_&@]y}yJ'$" 7 i۰@&Ni؃Ea?Q8C8#8BqIBN㌪s༸ΗpwpWTGy)o꨺ VU}@mU^FW)Uj*]}jjZ6jg-kY* ^&3rZ+a׋$lSIvءp:eP&ev][HKGnqٔQq|XG" ،-HA*Ұ۰ sķBg> 8OKqw \%\\ŗ$k\u7eHwq[Yd Y؁l`'va7`/r}؏|p'pPBCg `X44&M=Mi DѨg,,ԄGi&zL@ W&uLhhh`tD{t@C$tB%+Bf:+zz8p}W+sגDY!V΋K:wd>@s)2m`$sGK-$.Bگ]Hk:jfnt^oʻeCѐ(w{}I$ssg' oM gR|s$.DfR8v"͞djx-qrd. %$eɴ $k?X܅c9M=J~u iRt\˪bE[yv[{9ΓLyU'ODY0BWٻxqx(x&_­kuBA8T,cgSr|K?u)/X~A Vp[(DITXs%9q#dkuB5x}}VY2b`Yp9Ac]FqFYlqQndժS/#0%w3ere#We!Qç8򲂬>H+YFUdݳ)U S8XT:utq.2sBbnoMw)fw?e d%+9 G[sBhȑ~MXҹ&H_G/݉ *]|5lP^:>^kyԬQݽZ*+U|SnF+߼lS}?l營HH˫qNB< !® K`< C\X S%6D''P :9",9PX ! '5pcWOTmu}B߁^V⥨D&bs+%?ܔg$LE0.aAZb$ȬY@('7)eW|4BП\a!I;z.ڕjܶՏ{y}3oۓ?~-`"OyXIX:%n2b&وR! en=%jtJsEBʉ.hy SYK=@Bz}dSZsF&; e4f$utGy#*:H=h,?IТq nWɥ)S ᮧ"AjGga;s 纥"OYB1^iiKCb՚m v`';D-_[r?E?is'"A_3RQckաOw  E4Lbf'+=4S7"Oՙqrde=R[ FgP].?0;HE%o}ezwnf}HwrGVcLJ& +1#PtFYBQMOܢ;Aŭ:-wl-fQm'#\5n?``7CS۲ gat"hABOeASCjncVNugEX \&s&\~ֳcn[osDq Kbƭwa!o'5f~-jcoA##K4ŤqO}/KisW޸.b@J`+>(6$"H-#^5 rë l\B*ǐNpD~Gf.3Fr1m;8iɠL hYSGE.t4Ne) n\Ue7Ʈ-v#=M%\rڇ#E2ϕ B7Y->R_'Q6gS Ncwg/2n:#~{psz͑MoS W4SQi4&4AM]-/ >|ktNcn!\No2tZ Pjyі]%zEfnKvaU\hb;]ӕ~#͕nLekYan_ic mBT}{3zC`mР bʞԻ n11*`n6C|YϢ Zp2F`uQ P+G~9xzlݎݗdg;F.]mUug.P?8Eb^Obg{v w+JSZBhٽEh_[`;ZҧJQmJVprV J{ll$o݅4k̥BQp npܘ BS3W+WlP!YrT`1Zd LH?wG={i,vY˾>|+/[ȶZh6 'Ik<;ZwǷlVyQ=ԛ>VzI,ZuCilj8zֵ*LguoR_!W:x5X&3]X:[+Y-2o@%$6PR31` :B;61r &g:)P(N9fƙG2jFX@`,䰜—2Ɏ]}'̋2egy5Ǡ(Υ j^?0<%֋E3,2LF&A) ,:G 6LWFPiT`[rZTHY??`wƻqg?=-f?|݋ȁt"\]bjJLa\wmhG# D{㽉]NKra# ')IG'sn?m-/^S2xŤM➀`x{5 yX'pO-C| a*LaWq#x$6Dr LXP0Cݝ[^ؿWOǾ6KΉ,l(Y&]N_ݽdek;_[w/Xع7늋SM+g wdX*Zx7Jk6wdM }|)D+𢥛7p |i_ IN3sp\Btt]ڶ>N.gfejGE4,,\c;,ZAĬBm jS)3 IJ c[Y_8e7 [GΜhT:n <IL({$$f,d$ۆ`(CAd1 R2WR%qZRn%Frt %O']V>}y^x% /W/3φU܊߼LT@Mχ`P"-B#>(I¨uSf h4F0Uؤd3~o!OmhS`6ZʎüCYnC=^L]ŷ['I7!r]9_CIaMPDSA4: (yO)&c$=oim[r]烊 Uve,Ͼ 0LtzyYo/a4غ6%- ,KSAl# v r㈼y7xZQtʼn|zQ} y7E9TYx.еV|Y&oG4Z e7i!?%=f2-X8Y]7gRvQ`\ .Iw>Tx{Qf2;鳕~jݡutb3UGiZ/f&fӰ'=;$" [=6J٭tD Vf}z@۩"ΙM[5uj]f 7ժ+neqZ+ +aʏA6O1?[g]ر[/gXJ/ mhF)Ϻhu 4c%ΑJbw$ܙmBfWjt;]ufeOܬ]cf+8I6W5U$_uT%ca2'txtQo\O)}5[]c|\R86{Wos9E}5V=2 Eu4C5{ҧm>{Ȃ|h]:~=G^rnJZzJk#Kڵ0ac+NyļaC(iKiRLipL@Sl !6 LJI m$)5>jx?h2%ٕ SJxϹsUեs%&pIrޘॺ!e'Jf|N{<n֫KlF V8%Px 7V޵~‰MĪ={^{KB_If^z ~"Tr˧?ڿF~HF fNștE.FUX )^QwbXw$EuP;1{.~dv%j!@""67!!G*%Fdc"N8,>F YeybM^U 9%"D?o,ޱwv5?~7wn~ro_{XShGܫ2Z?\ClO^+ˉQɩYuEk ]>\V,0kg^S8, d/SK?Oof~6]ui8B qrB kƱ4EҌ!y`GYg*m]؃}&;%* *irƘ0 lJq XB?Kg/ RˉOv1]4 U@Ӡg)cmXY;a=xjHLFz5Yr8W:tN./>o"dU  B?6% '!c0tbh`w=  )ʝUwl@XY]RX[rҒuf '~W`]`NxjexڢZ;UF)f7o#2a/MN`b\l`ipD * E-J|Q쑉L@]#FIJ3&`N?s}su[љ_5<*Y xYGPA='\qτ.Q}MuZeV݄P-+Nl*5#D?4k&Dhm'e<!hD ;KwiAf㯯?sľ}zp`A';-}ctٛ0,~& ؔ~@GZf/Q HY#k@>%Q9DiTъFi8,h2Ype8ژq 1tJ14~sdڅOGLZK}|cá+7mϝЖ&}e%3Rw>&%4'f/#)JDBH2xN[!ٙӉm%?5WSW!a7҃5A8;O}wt&$Ѻ>uEգ[yjcZkVXvydus=sEIE۴}gQd)UPCdKʖ-Gn m ok% {K F%+sJX Iuirr3Znϊc$wX0 D "hADw~4mEK&L|yNB xZn<xϘ_aR6S^ +_8;t)) uqzZQcNuF]A 'x-HF!EVf2 mrz95/ExwDϐ|Uܮ3Mmnz߿=G#]7vu߿E/Ƽ*1E5w]8sRUm}EYql{ʿK~󆒤#;:u-a-3W +=ZF!ܾQj3oWiYlZi:Iz`+=ykF&/:%”lQ¾HCo:nxz" KPXXjX:9=,eOh967׭-ksW Zq:̢%Z?es|&#~HEI8#jFQm0vh;ԥ8Z}M߮뺳ᔩt~ݖ>hE˫ޣEG"@tCSP ɇի\%m{EYY7 >p KI= @yV{e"o+Uըc(fzu7κ#(Q4X1#I@gsbZvx,oF|;⻻|;*\<՞< fڧwewQWfZ5UkC?@A˯ ϟЗ<*,s4dg@oJ[&-+CW_r 6)+@56#NQfzЅ~|Z'X,JQjC;ESSa U GZU)̋M܃~/kl>\ 8 i0V+3&53JwIz;vSr{|&a`!Qx >qN_:>jԚP6Q#*eB5J7檹TR^^6B`ݮ p3IәOWrϣݫ]^#NXV;E'1N/⹒Sc]n?0h1iVo@cI*e}K9h(: ƜЙ60x3ڭ&>:?N(Sz)=[<7 2 K>M&H4"h=_X`~{Wdn@@ 9+>Ch2/iY&cc/hOJ4]F0-ՀQXj\5MO1u>Va[h  `; 3|b`~VcNЍ x /O0kײ-ۙeuJ+O6 kRY?_]~ a~ ]KYú,y;~p ,} c; :OEG̕1Y-/$ ?-jYu#^Pa8MM.bYu7q#_ɇr,ޡC6oHʹthwvw'(%ߎʼܐ8Ĺ']q\"O1|R9ym3Ұ3`mL {[E2.qO<;Zd\,Nb!nEz 3tpQ ǜɫ? )E~9K-*_%iSQ F;vZ,QvDͅ܁~ =uBv^ll(4L cfjg c3he+sMbA捾\|hhx|W9|T v顪a},[!x2$r`ljaK}ϳl!g|_jރ?2 ?h=ق6mV;Wڡlj\tP/(?e30BV8頸S ?6E]={!2WdC^7dM#Nk$pJ:ּ9Oω\߰+1'9im=4}YՎ=%~A+nQ-QN@)ySBRa܃8ݽ{w]@Lx\"$%/Z^!(He!du6 :m(3QfѶVMPW[ S`칛My`g:n{~{,\70EekDx%f^'/U1] A"8 ;*KxŤWT^Fҥe2Nn(q omԹV܎phһ8cnH"To# Z{ |XBՠo;+{Tə$q{"'Cfݻ-+n?vo<ͶjԚ:;%o%s $]BbXv }K!7h["_6f:n)ٳzʜ؛Wb~?'ɕ gLY*ut򞁤7Wco] kgn[>μ0AˁVs{v9Ά;1` smrsKvVdN0szK̋mE9ˋ<+G: MeNg^6KHTn ޿4/7LMߝ\$I}'OlOվ݃^!q0~Ƈ_뛏IPڗ\| t/4IƧ1>Øv2'2OzMR{9Ż.u7ݴD5ج|@f{v}h-kG=\M<}u~ZYwSÑ8>ysb.Zn4Ks@h[ϽRK{c+L[NO 6|3墫z\8gb!6ucإi Y&wί_PcXL>r2+{)DyHϙEV؎9 .1ܬ罅S2xNV|7 |ǣ=c6W;Q uޏO__sh?F\t|?DҮH/F)4َ)'&}|!%4 K*2id'?!쿒, y1i#h]vjC}̷0/>CBI)&f~f5;s1gh AcH~E$oT{s}a00w:iOw!gilwۃcI`-Jѽ(7FQxi+Ԝɾ}^G1#Qj̧ohԳ$#ه|뻂rSnM謟1s2e;R}cW#h)OxuLwB@L`q" 8:Z0O->SɝsTWCQYpܙFDZd%##*;7 0m t:9KG.4 `] -ù>?-O`90MF cE~ \~ 6)`l?1aa;'uQ nA1y0?>xO\I-u-kқn`@=INmvIdG=[lkFIϙ11X_rO?y=g'6$-)_nZ=6Zn|MWux荃?}ÿ=> ~~_) ð Ȍ¨،øLLL¤LLLLôL¬ü,,,¢,,,,ò,ʬªڬúlll¦llllöl®þe 89#99c9999S9mC>c>S>s|W|7|w|O/o_?2A Ȋ芡؊JJJJJJJJʠʤʢʦʡʥʣʧ********򪠊ʪꪡڪjjjjjjjjꠎꢮꡞꣾ  U4L5B#5J5Fc5N5A5I5ES5M5C35K5Gs5O@ HDKL˵B+JFkNAIE[M۵C;KG{Ou@uHuDGuLuB'uJuFguNuAuIuEWuMuC7uKuGwuO@HDOL^^>>鳾諾~~9.w!=0yx=G(գyt1=8y|O ='$ԓyrO)=4yz=g,ճyv9=y}`C=Ѓ| l-s {f!$MڌRҩ؊Dd2:Z:-іM{-|s{\ɒr+dL+JJ2IkeLzAnr,d"mr!w]r#}r<  )!yXG1y\f+ yRyJ"Y,KiyFL Y)dyyA^eyE^uyCޔmyGޕ}@>cD>sBkF{A~gE~wCoGzX(C@E?l 1aclM6[aklm;ag]v{ao}8`Cq8GhA!E% QZxz4M8#pF'p:΀$V6D,(8pE]1FY8\q.ER\10pU1 ZL\qnT܄1 q nmwN܅q}ALCxQ<1s0|,SXEX%xY,2, *<^KxU[x]>GS|W[|~OW__ً)KX2Y a_cܐ7&ܔqsn-6ܖq{w.ܕqw=>ܗqy!ćc|9s9OI>Ņ\\§ R.rJjs嶙:=if_tjN̔Zq7ѡyViG3q,\uv:?$rԡ%ۊiGҩ&6Nۖ4dē IY-ԭlY2Լ)Lz!S"Ȥ,"!% 2D}TTSbCXRSij%`ZKz|X$LFa֢9*k)obUF*iW^F[|x$j%2ڋeeMIMq ׃MߔըL%um bcXA +:m7؝=VW..훊LJkNr ;XtŜN1g} LC 4oFi,F4g}#LL䂙4h Ma~+(e$s}D<2fscoʚդzBXސOjQ%)?]z*5ȃҠ{7a< ]㘧F*] mTPV#&iri[iKwL;?e+ݤ&J((+JĉmgӎWw4̵[o1um+o,S'%JuO@SplSٜcXƶ= ~߆)ϗܰ򞬞 nB7Vn:N^S#Y6X V*8Tƛ3aa*gˆKZ ZEXZ:Wn Mj5,:7!xSѐI*o\#VV>Rw5](M E/URL+RPDP߮rJ~]ɯ+٩bJ~]ɟUԺ="6"2"]K̺wGwו_ UR !W V(L]6\-'Bvv0^I`Fpm[ ECՐ]]y6BՑ+#8+ܧiۥOn-Z>4rÕ"eFuzSI?KkX#^}WqōTY|!mvޟK ,n8$竣V*=?;mC\}$iMCOM^( my~d<73>.# M6E,ΗZk9.auL+%>&hZ۱8ZkK5Vk*Zu -=kATZ랲+gfe ='|.w, L2q`۞`xect *d &`D_8L,[#R! H\U/-Tˮ+.+%ނ42 z"j{C\)lCAeƓ݂mz A%Y)@#q{J HTv7nˠ>5o,\f[LAŽa^bTHR%OxHҿH\E(*e' m-OP j_NE`L6"TT4-<U\j&\0@{Jk/_N#ӕ$搄S6EɅwzbna76^Jbu$)/Fu;t)2 +#Xy<"qK}ek]!*&OH'> &a8g#%\g#v/&t \&IQs6S{hcObO+n39OZTZܴjTZ1} 0T(1-Jzp#zjHx6sF]iսuyQrglV[jǖenY,2˱e[˼9(^'ƣ2m+jpmk tӶSUunxQ=AOP?*~ZF%%u{gc!UK.p]ov6M SZVַ7 h«Aq+7;ވW-AIG!3c?^|ɦm>0IXuNNJ?8$ iFIwHÌSJ ?Y2ןH|$! 3?1]ۺ xk䍱 +`[d(sSG4W*5")> sA>٭;1`Bɮ岓ZY+[iݥ7c1 RʀjT9u.vXe^f"1hH^%|.zјI Y}=9I)8u释FlyP/_׈!K'#6"nps1F|% _f)O ZO PE](j+<:c9h>Q/v|AM} ӗM/˦owUq|&ub'M$MtBf ό>O2mEݬZPc'։xXUHJؕ}aIUVZ~< og,wq4>{sdܹ9`>;}nt̵ttY,TOg,h\:댾׿G7苂9|}s燥Q֪[oGyЃVy?G6wC>-L)کn %FfԵrѨVz?y-ɒ++Ű,2e]͍XVa  kڰz+k:||||||<<<<<< %KЗ/A_$OOOOOOxX/_~"E+W} +W`} ֧@_t }*UWB_X સ*:x:x:x:x:x:x:x:x:x:x:x:x:xzzu׆ =z6lгgCφ =:ׁ}t:u@ׅ =z.\wB߅ }7Gt=zAσ=z<{T)Sxu- hw:}m6iznwm]MTD= ǜmVwK'7K*hX+ WmvJVL|rJJm䣁--AT^PI:hlқ%t&HRoS:iO SlOcN'@ʚMNߍ᳽n|kwa,DD K4OvnDu{,{1:ޥ:3q_e&+LTUmқetb{f&*ތWxsPś*LT9'*ޏWx@U?xWx@x?]銏hN_tt^-exs;_#v#˝ 1:Ozk?? 6x<ׄw_;<93yB]y(TD:~agɑ`wN -|cIU t]ZPx ϻo%{h9i+RM]pe}yi媰-/;8ً ׳_frSxn,e;o. #/'%r[Fręy?ΧerC9.79f;Sa4^Hz\OׄLЁ_n q6Kf9mxΫ~n~W_7\~ٖƗZj^;[nuѽVupg}~8>qvys'j{,:  oÇ3n}Ƴstv.eq+jXĬPʷ !VȺke ׭f< npe}znJ7q:GG endstream endobj 107 0 obj 24635 endobj 108 0 obj << /Type /Metadata /Subtype /XML /Length 2935 >> stream Adobe PDF library 5.00 2004-03-05T11:21:23-05:00 2005-07-21T16:14:17-04:00 2004-03-05T11:21:23-05:00 2005-07-21T16:14:17-04:00 Adobe Illustrator 10.0.3 2005-07-21T16:14:17-04:00 endstream endobj xref 0 109 0000000004 65535 f 0000000016 00000 n 0000000088 00000 n 0000000152 00000 n 0000000007 00002 f 0000000321 00000 n 0000000698 00001 n 0000000008 00001 f 0000000009 00001 f 0000000010 00001 f 0000000011 00001 f 0000000012 00001 f 0000000013 00001 f 0000000014 00001 f 0000000015 00001 f 0000000016 00001 f 0000000017 00001 f 0000000018 00001 f 0000000019 00001 f 0000000020 00001 f 0000000021 00001 f 0000000022 00001 f 0000000023 00001 f 0000000024 00001 f 0000000025 00001 f 0000000026 00001 f 0000000027 00001 f 0000000028 00001 f 0000000029 00001 f 0000000030 00001 f 0000000031 00001 f 0000000032 00001 f 0000000033 00001 f 0000000034 00001 f 0000000035 00001 f 0000000036 00001 f 0000000037 00001 f 0000000038 00001 f 0000000039 00001 f 0000000040 00001 f 0000000041 00001 f 0000000042 00001 f 0000000043 00001 f 0000000044 00001 f 0000000045 00001 f 0000000046 00001 f 0000000047 00001 f 0000000048 00001 f 0000000049 00001 f 0000000050 00001 f 0000000051 00001 f 0000000052 00001 f 0000000055 00001 f 0000001886 00001 n 0000001967 00001 n 0000000056 00001 f 0000000057 00001 f 0000000058 00001 f 0000000059 00001 f 0000000000 00001 f 0000002610 00000 n 0000014737 00000 n 0000033025 00000 n 0000033048 00000 n 0000049985 00000 n 0000050008 00000 n 0000069580 00000 n 0000069603 00000 n 0000089738 00000 n 0000089761 00000 n 0000102377 00000 n 0000102400 00000 n 0000106063 00000 n 0000106085 00000 n 0000124067 00000 n 0000124090 00000 n 0000146401 00000 n 0000146424 00000 n 0000165163 00000 n 0000165186 00000 n 0000179390 00000 n 0000179413 00000 n 0000195922 00000 n 0000195945 00000 n 0000212265 00000 n 0000212288 00000 n 0000228619 00000 n 0000228642 00000 n 0000245033 00000 n 0000245056 00000 n 0000261478 00000 n 0000261501 00000 n 0000277543 00000 n 0000277566 00000 n 0000293364 00000 n 0000293387 00000 n 0000309227 00000 n 0000309250 00000 n 0000309279 00000 n 0000309307 00000 n 0000310362 00000 n 0000310465 00000 n 0000310694 00000 n 0000315619 00000 n 0000315642 00000 n 0000468357 00000 n 0000468382 00000 n 0000493112 00000 n 0000493136 00000 n trailer << /Size 109 /Info 3 0 R /Root 1 0 R /ID[<1d818e218aaaf4b6af9913b0c57532e6>] >> startxref 496157 %%EOF king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/RotCor.help0000644000000000000000000000521611531212716024223 0ustar rootroot ABOUT RotCor is an implementation of the 'corRot' score from the Richardson Lab's assessment of templated-based models (TBM) at CASP8. We now prefer 'rotcor' to 'corRot'. It compares a directory of one or more predicted models to a potentially multi-model target using rotamer names derived from quality-filtered, multidimensional distributions. All sidechain types are considered except Gly and Ala. A "consensus" rotamer comprises 85% (1 chi), 70% (2 chis), 55% (3 chis), or 40% (4 chis) of a multi-target ensemble at a given residue. If one of these conditions is not met, the residue is labeled NO_CONSENSUS. OUTLIER indicates that the sidechain conformation falls outside the valid range of our rotamer distribution. USAGE: rotcor [mode] modelsdir targetfile (results sent to standard output) ROTCOR is "java -cp chiropraxis.jar chiropraxis.rotarama.RotCor". MODE can be either of the following: -Model Default one-line analysis including number of residues and models considered and primary 'rotcor' score. -Residue Per-residue analysis including target rotamer, number of model rotamers, and fraction match. TARGETFILE is a PDB file for the target structure. If more than one MODEL card is included in this file (e.g. for NMR structures), the consensus target rotamer at each position is used. MODELSDIR is a directory containing one or more predicted model PDB files. These may include NMR-style files containing multiple predicted models separated by MODEL cards. OUTPUT DETAILS - MODEL TargetCount number of PDB-style models used to define target rotamer names (usually 1 for X-ray, more for NMR) TargetRotamers number of valid rotamers in target: number of residues sans Gly, Ala, OUTLIER, or NO_CONSENSUS ModelRotamers number of valid rotamers in model: number of residues sans Gly, Ala, OUTLIER, or not aligned to target Matches number of model rotamer names that match target rotamer name (across TargetRotamers) RotCor Matches / TargetRotamers: "does model match whole target?" OUTPUT DETAILS - RESIDUE TargetRotamer reflects consensus if target file contained >1 models or simple rotamer name otherwise; may be OUTLIER or NO_CONSENSUS, but if so will be ignored for matching ModelCount number of valid rotamers across set of models that aligned to this residue position FracMatch fraction of model rotamer names that match target rotamer name *at this residue position* king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/CaspRotCor.help0000644000000000000000000000542511531212716025034 0ustar rootroot ABOUT CaspRotCor is an implementation of the 'corRot' score from the Richardson Lab's assessment of templated-based models (TBM) at CASP8. We now prefer 'rotcor' to 'corRot'. It compares a directory of one or more predicted models to a potentially multi-model target using rotamer names derived from quality-filtered, multidimensional distributions. All sidechain types are considered except Gly and Ala. A "consensus" rotamer comprises 85% (1 chi), 70% (2 chis), 55% (3 chis), or 40% (4 chis) of a multi-target ensemble at a given residue. If one of these conditions is not met, the residue is labeled NO_CONSENSUS. OUTLIER indicates that the sidechain conformation falls outside the valid range of our rotamer distribution. For CASP8 assessment we combined scores for predicted "segments" by simple addition, like so: rotcor _1_1 + rotcor _1_2 = rotcor _1. This program automatically performs such combinations if applicable files are found in the input directory. USAGE: casprotcor modelsdir targetfile (results sent to standard output) CASPROTCOR is "java -cp chiropraxis.jar chiropraxis.rotarama.CaspRotCor" MODELSDIR is a directory containing one or more predicted model PDB files. These may be NMR-style files containing multiple predicted models separated by MODEL cards. The file names must be in official CASP format: Ttttt[TS/AL]ggg_m or Ttttt[TS/AL]ggg_m_s, where tttt is a 4-character target number, [TS/AL] is either TS or AL, ggg is a 3-character predictor group number, m is a 1-character model number (1-5), and s is an optional 1-character segment number (1-5). TARGETFILE is a PDB file for the target structure. If more than one MODEL card is included in this file (e.g. for NMR structures), the consensus target rotamer at each position is used. OUTPUT DETAILS Target target ID TargetCount number of PDB-style models used to define target rotamer names (usually 1 for X-ray, more for NMR) TSorAL standard CASP TS/AL designation Group standard CASP predictor group ID Model first 2 characters of standard CASP model ID (no segment ID) SegmentsUsed number of "segments" (identical target, group, & model IDs but different segment IDs) combined for final score TargetRotamers number of valid rotamers in target: number of residues sans Gly, Ala, OUTLIER, or NO_CONSENSUS ModelRotamers number of valid rotamers in model: number of residues sans Gly, Ala, OUTLIER, or not aligned to target Matches number of model rotamer names that match target rotamer name (across TargetRotamers) RotCor Matches / TargetRotamers: "does model match whole target?" king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rota500/0000755000000000000000000000000011744306102023326 5ustar rootrootking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rota500/asn.ndft0000644000000000000000000005046211744305700024776 0ustar rootrootTop500 Asn B<40CCHH9p:4:49p:49:4:4:p:p::::::::p9p:49p:4:p::::::4:p:p:::::::;;%;%;%;;::::p:p:::::p:p:p:p:p::::;;;::::p:4:p:p:p;C;%;%;%;%;p;;;;;;;;;;;R;:::4:4:::::::::::;;C;;;;;;;4:::::;;C;;;<;;ـ;ʀ;<<<4L>>!>#>><> H>ԕ>>>>=@=8=Ȓ=X=+=<ـ<` >.>`>F>>ܜ>l>tt>s>q>j>`L>N>4>,===P=e=?@=`< X> > Њ=x==>L>7>u>>Ɣ>ڬ>>">>>>>H>>>6>j>~>h>G8>"0=`=H=8=h=A <@<@<@;::4:p::::;%;C;a;;;;;<@>'X>7>?|>B>H(>I>V>j>V>Ƞ>>R??b?ԕ?>r> >h>>ڏ>z>>z>kP>U>5h>l==8==m0=<@ Њ>p>2\>F>R>g>>>>>^?a? g?<>?? ?ƅ>>>4>u(>XT>D,>>ȿ>@0>A>9ܺ>( >==X=`= =)< >̝>,D>

Z4>>> >t>?^??1>.>ǰ>>\>>v>1>`=(===>؂>>ȃ=====m0=Й<<7;ʀ::4:4:4:4:4:4:49p:4:4:4:p:p:::::::;;;<,<<< =.`=l@=8=H=@==@>L># >P>>>>d>Մ>V>p>kP>kP>j$>P>$==@==a=Kp=V=} ==8===@=P==@0<<< ;:9p:4:4:4:4:4:49p:4:4:4:4:p:p::;%;;<;<<<ـ=0=@0=a= =X===`>>'X>M>ud>>> >} =h==H== ==`<<<<< <`<@=.`=T=c=l@=Zp==`<<`<0@;ـ;:p:4:4:49p:4::;C;;>Ԇ=0==<<<<!> > >l>l>L==ި=X=(==>ȃ==X===G<`<<%;;;%:::p:4:p:p:;;;<>"0>"0>=@=X=8=h=X=@0=?@=?@=+=Й=$=C=} =8==> H>>ȡ>>>n>h>cX>W(>L`>F>S,>y>̎>ڏ>x4>7>؂===6з<$>6>`>{>~>j>F>'X> H==X=h=(=(==P=ְ=>>@0>} >H>h>v>>>@>>z>><>ڭ>>z>Z>ш>ͪ>:>r>7=@==X<@Ȓ>5h>a>Ԇ>>X>>">g>FH>,>!>(>IT>p>2>>p>^> >>l?p? ??A>>>>0>Z?׃>Z>>??>>z>>S>=@=]@<P>>9>[`>>>|>>v>~>j$>V8>P>j$>>X>>>\>>H? ϋ??"ƣ?' ?~?A?׃>\???4?#?!֢?R?Ϛ?? ϋ>>Ȃ>Λ>FH==8=X<@$>>.`>@0>P>_\>i>kP>j$>a>V>X>x>>>Z>B>ۜ>? ܍???%>v>? ?U?)8?,?+?(H??>j>Ŕ>>h>Й=0==?@<L>>&>/>2>/>2 >M>R>>>>V>ފ>?|?y? ? ?>>4><>b???#? ?? d>f>>>Cx>=X==e= <@> >BL>b>{@>ڏ>L>X>>>,>:>>v>6>>> ??׃>B>H>4>>j$>x=P=X=Й=l@=3<<<;;;;::::::;;%;C;;;;;;;<@ >,>P >b>`>^0>d >h>`>+T>Z4>> >>>̬>>~>7====l@=O0=,=p<`<<;ـ;a:::::::;;%;4;C;R;a;;;;;< L>>Ȓ>> =p=ˆ=> >?>Z4>^0>JD>(>=`==G=)=Й= Њ<<@<>L>*d>>>F>E>=`>8>>P>7>H>4>.د=0=h=(=a=10=P<ـ<נ<===+=.`=3=?@=F=Zp=|0===X= =d=@0=P<ʀ< <<< <`<<<`< <{@+>QL>e>e>X>P>`L> >4>,>>̺>^> >Ƞ>>>>J>>>>P>=H==C=<<= =# =?@=P =Zp=l@====x===(=p====Zp=,=0===Й=0=< <@<<`N>X>>>>>>>|>^???"?,˭?/?2?5w?4?,? ێ?>ܺ>p>=ˆ==@0=<`<===`=X=~====ݸ> 8>!>.>1>,D>$>>==0=====P=Zp=?@=<<<"l>>̺>.? ?5? :? :??(?4?9?B?I?T:?]?d?Z?GG?2?>>k> =0=e=+=P<< =`=I=v===X=P>>8>[>{>\>\>>xp>g>I>*> =@=====]@=3=`<@< <>>??*?-%?-a?/#?4?=?E?O?[?g?t8?~??tt?V?88>>>,==h=3<<<Ƞ<==O0= =P==ݸ> >*ܫ>UH>ƅ>ܜ>>>>>X>\>d>8>@==P=`==kP=10<<<<;< ;;< <@?>j??'X?1?5?7f?;ڼ?C?L~?WU?aZ?k?q,?uF?y?xa?h?I?.>P>*=ˆ=@=%<`<<< < =p=C= = = => >( >UH>>>>>>>>ڏ>qh>B>(>====X=0<<(>֢>@??-%?3j?79?>?G?Ri?Y?^0?`?]?WF?S?K???->====`< < << <<@< < =.`=c==0=p=>>4x>n >h>8>z>>>>x>M>'X>==`==h= P<<@p>t8>T>,?A??+E?4???F9?Hd?G ?CZ?:?2 ?$[?>>ҵ>k=P<<<>(>\>>~>‰>p>H>( > t==`=h=(=V=p<>l>>4>z>?R?%K?.?-?!?R>B>¦>H>`>"=ި=Ȓ<0@<@< < < < < < <>!>,D>!>=P==P==`=?@=p<<<,;;;;::::;;;;;C;;>8>YD>Ԇ>>n>T>>>q>I>@=@=X=V< <;;;;;ʀ;ـ;;;<@<%L> >T==H=h= =X= <<<%;p:d:Y:Y;Zd<~;~ʜ:Y:Y:Y:Zd:p;K<><#d;d:d:d;~ʜ;~ʜ:d:Y:Y:Y:Y:d:d:d:d:Y:Y:d;~;d;d;~ʜ:d:Zd:Y:Y:Zd:ʜ;K<~<~;K:ʜ:p:Zd:Y:Y:d;5p;p;K;Zd:d:Zd:Y:Y:Y:p:d:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y:Zd:Y:Y:Zd:Y9Y:Zd:d:d:d:Y:Y;Y;K;K;Zd:d:Zd;~ʜ;~ ;~ ;~:d:Y:ʜ;;:ʜ:Zd:Y:d:d:Y:Y:Y:Y:Y:d:ʜ:ʜ:d:Zd:Y:Zd:d;5p;Zd:ʜ:d:Y:Y9Y:Zd:d:d:d:Zd:Y9Y:Y:Y:Y:Zd:Zd:Y:Zd:d:ʜ:d:Y:Zd:d:ʜ:d:Zd:Zd:d:Zd:Y:Y:Y:Y:Y:Zd:Y:Y:d:d:d:p:Y:d:ʜ:ʜ:d:Y:Zd:d:d:d:Y:Y:Y9Y:Y:Y:d:d:d:Y:Y;#d;Y;Zd:d:d;Zd;1{;~:d:Y:Y:d;5p:ʜ:d:Y:Zd:Zd:Y:Y:Y:d:ʜ:d:Zd:d;l;K;~:d:d;~;d;p:d9Y:Zd:ʜ;~ʜ;5p:d:Zd:d:Zd:Y:d:d:Y:Zd:ʜ;Zd;Y:p:Zd;Y;~;5p:d:Y:d:ʜ:d:Zd:Y:Zd:Y:Y9Y:Zd:d:Zd:Zd:d:p:Y:Y:Zd:Y:Y:Y:Y:Y:Y:Zd:Y:d;Zd:ʜ:Y:Y;~ʜ;;K:d9Y;5p;~ ;K:d:d;5p;Y:Zd:Y:Y:Y:Y:Zd;5p;~:d:Y:ʜ<><%<ܪ<8r;~ʜ:d;K<;~:Zd;K<=C=K =u)<1{<:2;K:Zd:Y:d;Y;Y:d:Zd:Y:Y:Y;Zd<>;~ʜ:Y:p;5p;1{;Y:ʜ:Zd9Y:Zd:p:d;Y;d;~ ;~:d:p;Y;~;5p:d:Y:Y:Zd:p:Y:p:d:d:p:Y:d:d:Zd:Y:Y:Y:Zd:Y:Y:Zd:Zd:Y:Y:Y:Y:Zd:Zd:Y:p:Zd:Zd:d:p:Y:Zd;Y;~;#d:Y:Y:d;Y:d:Y:d;d<~;~ ;Y:Y:d;K;;~ʜ:Zd:ʜ;<,<>;:Zd:Y;Y<(X'<є<:2;5p:d:d;d<ܪ=Q=7!=c~ =rG=QK<$T;~:Y<:2<=Q<ӑb;~ :Y;~ʜ:d:d:p:d;<^W=%=7!=2<$T<~9Y:Zd<%<>;;d;d;K;d;~ <^I;<<2= f=D== ==5p:ʜ:Y:Y:ʜ;~;Zd:d9Y:Y:Y:Zd:d:Y:Y:Zd:d:d:Y:Y:d;Y:d:Y:Y:Zd:Y:Y:d;K;;d:d:d;Y;Zd:ʜ:d:Y:p:d:d:d;~ ;;5p:d:Y:Y:Y:Y:Y:Y:d:d:ʜ;Y;Zd;K;~ ;d;~ʜ:d:Y:Y:Zd:d:d;~ʜ;d;d;K;5p:Y:Zd:d;l;1{;;Y:Y:Y:d:ʜ:ʜ:d:Y:Y:Y:Y9Y:Y:Zd:Y:Zd:d:d:Y:Y:d;~;:d:Y:d;Zd;Y:Zd9Y:ʜ<~<1q;:d:Y9Y:Y;Y<< <;~:d:ʜ;~ :d:Y<5p=[=8D=0N|<ܪ<(X';Zd;~ʜ<><=Q=7!=<є="4<;Zd:Y:d;5p;Zd< <ܪ=>=[<;d;d:d:Y;<(X'<%;5p:Y:Y:d;Y;~ʜ;Zd:ʜ:d:Y:Y:Zd;<:2<5<;~:d:Y:Y;Y<~<:2<%;Y:d:d;;;d:ʜ:Y:Zd:d:d:Y:Y:Y9Y:Y:Y:Y:Y:Y9Y:Y:p:d:p:Y:Y:Zd:d;Y;Y:d:Y:Y:d;Y;Y:d:Y:Y:Y:d:Y:Y:Zd:Zd:Y:d:ʜ:d:Zd:Y:d:ʜ:ʜ:d9Y:Y:d:d:Zd:Y:Y:Zd:d:Zd:Y:d;Y:d:Zd:Y:d;5p:ʜ:Y9Y:d:d:d:Y:Y:Y:Y:Zd:Y:p:d:d:Y:Y:d:d:d:Y:Zd:d:Zd:Y:Y:Y:Y:Y:Y:Zd:Y:d;~;Y:Y:Y;Y<~;~ :d:Y;~< ;:ʜ:d;;~ʜ:d:Zd:Y:Y:d:Zd:d<~<>;d:d:Y;<<1{=8r=<;K:Y:Y:Y<<2=~=~<є<~:d:Zd:Y:d<,<2<:ʜ9Y:d;<~;:ʜ:Y:Zd:ʜ:ʜ:Y:Y:Y:Y:Y:Y:Y:Zd:d:Zd:Zd:d:ʜ:d:Y:Zd:ʜ:ʜ:d:Y:Y:d:d:Zd:Y:Y:Y:Y:d:Zd:Y:Y:Y:Y:Y:Y:d:d:Y:Zd:d:d:Y:Y:Y:Y:Y:Y:Zd:d:d:Zd:d:ʜ:ʜ:d:Y:d:d:Y:Y:Zd:Zd:Y:Zd:d:Zd:d;l;1{;5p:Y:Y;5p<<%;~ :d:Y;Zd<Y<(X';:d9Y:ʜ;d;;~:p:Y:Y:d:d:p:d;Zd:d:Y:Y:d:p:Y:ʜ;K:Zd:d;;~ ;:d:Zd;5p;<;5p9Y:Y:Zd:Y:Y:Y:Y:d;Y:ʜ:Y:Y:Y:Y:Y:Y9Y:Y:Y9Y:Y:Y:Zd:d:d:Zd:Zd;#d;~ʜ:d:Zd:Y:d;d<%<~;5p:Y:Zd:Y:Y:d:ʜ:Y:d:ʜ:p:Y<Y="4=z==8r=V<엑<(X'<~:d:p:d:d:Y:Y:d;Zd;l:d:Zd:Zd9Y:Y:Zd9Y:Y:d;~ʜ;~:d:Y;Zd<<(X'<;Y:Y:d;~ ;K:Zd:p:ʜ;5p:d:d<(X'<<ܪ<^W==){X<~ ;~ < =Sb==A>=د= G=V=D=a7==%=SR=?==l<:d;~ <==Mn=a7=2<^I:Y;d=Jw==$T>b=O=M"=Sb=D=V=p#=f==4=%=Rn1<:d:Y<(X'=Q=[=l=8D<<%;Y:Zd:Zd;Y;d;~ ;~ʜ:Zd:Y;<~<%<~;d;~:ʜ:Zd:Y:Y:Zd:Y:ʜ;~;~ʜ:ʜ:Zd:Zd:d:d:Zd:Y:Y:Y:Y:Y:Y:Zd:Y9Y:Zd:d:d:Y:Y;Zd;1{;l:d9Y:Y:d;#d:ʜ:Zd:Y;;~ :d:Y:d<(X';;K;d<><=@=Mn=V=7!<$T<:d:Y;5p<<^I<:2;;;K;<><;5p:Y:Zd:ʜ;~;K;d;~ < <~;K:ʜ:Zd:Y:d:ʜ;~;K;d;~ ;~ ;:d:Y:Y:d;l<<><><;K;Y:Y:Zd:d:Zd:Y:d:ʜ:d:p:Zd:p:d;;~ <~<є<ܪo>`=-==[=\=[===V==AU= =;c<~:Zd:d,SR>7>=1{= =[==!=ܪ>E> >=Y=<;Y;~ ===N|=є=v=l(>3>'=6P=y=8r=)=+K=O=$T>==;&={a =@=y=!= =?=|;<:Y<%=em=є=r>===QK=QK=h =3==h= ==M"=$<Y:d;d<==l=>= ==E=bZ=H1{=<%:d:d= f=H1{=\=8D<:d:d<5p<2;~ :d:Y:Y:Y:Y:Zd:Y:d<<=7!=8D=<;~ʜ:Zd:Y:Y:Y:Y;5p<(X'<^W<>;Y:Y:d;Y;~ ;Y:p:Y;K<^I;K:Zd:Y:d;d;d:ʜ:Zd:Y:d;Y<%<%;H1{9Y:d<1q<<ܪ=8D=|;= =f=[<7;~:d="4=V==E= =/+Kr>t>E==f=p#==h=y6> y>'> 5=s=5 y>=c,>K >/t==HM= ==O>>>.P>$\>=?=8D=엑==7!;~:Y=~=0!> >:>IT>.P=V== =^=|>?>J>* >!>8r=!=B y===h=A^W;d>"=={X=h =h =[== =엑>8r>|=O= = ;5p:Zd:Zd;Y;Zd:ʜ;5p=[=QK=P'=h ==H=8r=m=5p:ʜ:Y;d<<>:d:d;l;K;1{;~ʜ;~;d<><^I<<2=){X=bZ==sj=8D= f=bZ=B=m=< :Y<=|;=;&>> =B====K =[==AU>o>%>Ǡ=O=y<$T<~<,=[=y==AU===Q;#d:Y<===~>* >9>A =O===f= >|>ҥ>/+K>(> |i=2=Zd>pS> =Y=h <:2<$T=a=>* >9>=O=y====B>>.>*> /= =rG==~==ǟ> >n>==|;E> =鿗=d=Rn1=E=z==a= => > f=V=Ə==<%Ǡ====;:ʜ;K:d:Y:d<~<<̾>;~ <<:2<~ =Zd=M"=a= =h =D===7!=<5p:d:Y;~;;Zd:d:p:Zd:Y:p:ʜ:d:Y:Y;~<8r:d;Y<=){X=Jw=7!<;;=0N|=pS=D==\=Sb=h ==LZ>`y=ܪ=@=:2=2=h =f= => >o=د=@=7! f>K==P'<5p=kt`==G>=B=d=A^W=5p=bZ===A>,\> =-==V<=<==em=h>E>pS> 12=|=h <~<^I;:Zd;K<==V===p#==޻=v===k}=QK<1{;:ʜ<=8r=u);:Y:Y:Zd:Zd;~<8r<%<2<>;5p:d:d;~ :Y:d<5p<$T=l=v===l<$T;5p:p===%=V=<>;~ ;K<ܪ=HM="4=8r<<~:ʜ:Y:Y:Y;d<<=:d:Y:Zd;~<;;;K<1q;d;~;p;~ ;~ <;5p:Y:Y;p<%<%;d;~ <~;#d:p:d:d:Y:Zd:Y:Zd:d:d:Y:Y:Zd:d:d:d:d:d:d:Y:Y:p:ʜ;;K;;Y:d:Y:Y:Zd:ʜ;K;~ ;p:d:Y:Zd;Y;~ʜ:ʜ:Zd:Y:Zd:Y:Y:Zd:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:d:d:p:Y:Y:Zd:d:Y:Y:Y9Y:Y:Y:Y:Y:Zd:Y:Y:Y9Y:Y:Y9Y:Y:d:Y:Y:d:d:Y:Y:Y:Y:ʜ;~ʜ:ʜ:Y:d<%<є<ܪ<;d:Y;#d<2=){X=8D=@<$T==~<<$T=.=8D=+<ܪ<~:d:Y:Y;Y;Zd:d:Y:Y:Y;Y;K;~ʜ:d:Y9Y:Y:Zd:d:Zd:Y:d;Y:d:Y:Zd:ʜ;~ʜ:ʜ:Zd:Y:d:ʜ:d:Y:Y:Y:Y:Y:Zd:Y:Y9Y:Y:Y9Y:Y:ʜ;~ <~;:Zd:Y;~ʜ<^I<є;~ :Zd:d<~<5p;:d:Y;<~;:Y:Y:Zd;5p;K<<~;K:d9Y:Y;~;~ ;5p:Y:Y:d:d:d:d:p:d:d:Y:Y:Y:Y:Y:Zd;#d;;5p:Zd9Y:ʜ;~ <~;:Zd:Y:ʜ;d;~ ;5p:Y:Y:Zd:Y:Y:ʜ:ʜ:Zd:Y:d:d:p:Y:d;Y;Y:d:Y:d:ʜ:ʜ:d:Y:p:p:Y:Y:Y:Y:Zd:ʜ;5p:d:Zd:Y;Zd< <(X'<:ʜ9Y:d<~<;Zd:Y:ʜ<ä===[=4?<~<;:d:Zd:ʜ:ʜ:Zd:d<(X';1{:Y:Y:d;l;p;~ʜ:d:Zd:d:d:Y:Zd:ʜ;;;Y:Zd:Y:ʜ;~ʜ;~ʜ:d:Y:Y:d:d:Zd:Y:Y:Zd:p:Zd:Y:d;K;ʜ;K:d:d<~<<^I;Zd:Y:Y:Y:Y;5p:Zd;=[=Y> >%==v=p#=P'=\=p#=[=pS=f=y==<8r:d;Zd<=Y= a<;5p;d=V=>> = =X'=kt`=QK=V=`y=p#= =y={a =){X<ܪ<>:d:Y:d;<<>=B=2=5p=[<^I;Zd:ʜ;5p:d9Y:Zd:d:d:d;Zd;K;<~<(X'< <^W< ;d;Zd:d9Y:Y:d;Y<> l>9>E>([=Z=k= =9==>|> l==;&=u<;Y;Zd,>g0j>wx>S.>)=={X=q= u=>>J>=2==[;(>b>pI>L,>`=2={X==̾=>>> l=i[=`<;K>-O>8>= u=޻=f= =a=?==ӑb=|=d=8D<:2:ʜ<>="4=[===\=V<^I;Y='4=q==˛ ={X=V="4="4=(X'=5p=IT=em=rG=V=[<%:Y:ʜ<~;5p:Y:Y:Zd:d:ʜ;Zd;~ʜ:ʜ:Zd:d<(X'<1q<<==[<엑<;~ ;<><є=/+K=h ==p#=8Dz>&Z> y===H=8r=-=Y=>>> |i=O=<є;5p;K<ä=QK==a=5=){X;K;~=C=йh>:Bf>}l>>n>$=D=l=D>>n>;/>G>=>==n<1{<ܪ=V==I==AU=d<=:Y;=> l>j>>H> G>U>u=̾>=V>Y>5$ >U>hg>`>9>=k=.=8D==7>>n>%=s=em;;1{=>>gy6> >R>K>Rn1>=O=y> >,>Jw>`>Y!>8i>E=k=5p=Mn=Ə=>>,>=2=<%:Y=7!=˛ >3&v>q>>aB>= =I=c=_> l> >3&v>/>)==l<=){X=.=O>Ǡ>>~= =V;d>===q$T=p#==H=pS== =AU==+K=`y|==O==<є<;1{:ʜ<~<~ =8D=H1{=,==,==8D<;K:ʜ<~=[=Rn1=kt`=E<ܪ;Y;K=Y=B={X=D=h==є=,==ǟ=SR=sj=~:ʜ;5p<=+=n==H=`y=[<(X';~;d<><ܪ=bZ=={X=q=8r=h =h =bZ=7!<;Y;d<$T=p#=d==a=h =8r=P'=Ə=O=_=O===d=a=[=/+K<5p:Y;K==8r==2=q=f=8D<=<~ ="4=8r==o>b=t`= u=D=q= =)=C<:Zd:ʜ<2=em=k==^=8r=8D= f=~=5p=~===#=AU==^=a===+<:2:Y:Y;~ ==[==sj=B=Y<$T=="4=^I=k}=h=={X==\=V=Mn="4<:ʜ:Y;~;d:d9Y:Zd:d;Zd;~ <5p<8r,>:>d== u=y= ==y>>(>2ݪ>%>:=q=5p<^IM>>>7>=c,=V=c,=>>:2>`>sN>j>A#> y={X=@;&=8D==>J>+x> G=y=<%<:2=M">>|>n>1{>q>ycu>P=2>E>([>T_>d>> >lN>.=AU= ==|>>F~>^_>Ix>=p<:Y<%=>'>d>>ŢM>uM>we>HM=y6>>">M>|;o>w>f>nLZ>2ݪ=B=pS=޻=د>">U>kt`>Y!>%-=^W=Y:Y:ʜ=V=y6>GJ>>>:>:Bf=-==׌>>)$>MO>h3>g0j>F3>r==sj==2>`>9>K u>=c,>={X&>4s>=|==3==?=AU>[>J>J>`y=h=em= = a==є=> >|==C;p:p<2=`y=pS==p#=~<<+K<~ =@=Rn1=[==pS=n=~<8r;;<є=8D=}l=y=z==޻;d:Y;;Zd:ʜ;Zd;~ <%;;5p:Y:d >>%=e=2={a =a7=p#=Jw>>J>r===rG<<~:ʜ?>>==O=a=<є<;~:Zd;K==V=q$T=QK<~ ;Zd:Y<5p=2==Ə=E=E=+K===c,==Y=E<%< :p:Y<b=엑=,=h=={X= =8D f>%>~=y6=|==!=a=V<:d:ʜ<=Sb==X'=k====HM==A^W=k}=>>> 12==O=D=v=^=y=8D<1{<^W<< :d:Y:Y:d:d;Y;<~>&> =={a ==^=O>Ǡ> >.P> k>=H=q=:29h>d>u)>{>>.=s=?=s> >5$ >]<>t>lN>EM>u)==em=Rn1==>,>@>2ݪ>= G<2;=l> l>k->>>>fV> =i[=~>n>Qܙ>>}>V>>wx>9==d==>,>c5?>{>jQ0>3oB=ϖ7=7!:d;d=[> l>j>/>!>4>g0j>Y=ۇ=>ҥ>Mn>>!>M">~9>@>=={X=>9>q$T>>zr>?=y6=Jw;Y:d=C=йh>8>}> a>x@D>2ݪ===O>>,>W>v{>w>X>%-=د==M"=O>n>T">k+>Y!>&Z==k}:Zd<=3=<>>)$>%== ===I=7>Y>(>+0!>M"=AU=pS=H1{=== =ϖ7>%>"_h>pS=׌=q$T<%:p<=V=u)==z==Q<:2;K:Zd;~ >pS>%=B=2={a >)> G>==2=rG<$T;:d> |i>b=йh=d==<;Y;K=~=\=y=V=;K:Y<>=Jw=)==I==I===|== G=Sb<;~ :Y:Y==`y={a =\=> >===E=Ə=f=7!o===~=[>9>M >5=B=d=3=X'=Դ>>4?>F~>A#>"_h=-=a=C=7!==_>>4?>&Z== <:p=8D=ǟ>,>o&>>n>+0!=ܙ==;&=>, >Y!>vG>t>Sb>="=pS= =1{>>Vi[>nLZ>`y>+x=Y=0N|:d:Zd=8D=1{>-O>o&> >nLZ>.P=ܪ=+K==>,>[Ѓ>{>|;o>_>,=Q0=X'=d=>-O>fV>~>nLZ>8i=ܪ==;#d<==X'> |i>Rn1>:>Ǡ=?=޻=X'=>`>96>Vi[>Y!>?Z>pS=,=pS= =>'>F~>`>O>ҥ==~:Y<~=Jw==->b=ܪ=d=T=8D=YAU===B>>J>o=,=޻=Rn1=8D=~ʜ=>Ǡ>> =ǟ=X%;<1q= a=em=p#=:2<2<~<%<<$T=@;&==d== =Sb=HM<<5p==йh=d==:Zd;Y<ӑb=8D=V=8D=Q=l=I=є==%==H=p#=Rn1= a8r===8D< >t> /=ǟ=B=D=wx={X=>Y>&>%>=׌=k=^I=T= = >">9>.P>=HM<^W:Y==O>u)>n>Y=O=5=Rn1={a ={X=߂>pS>.>1(>f=j=?===>`y>3&v>GW>;/>={X<7:Y;d=@;&==m>=y=X'=V=+=@;&= =c,=A>'>J> y==-=p#=bZ==>E>/>"=o=f<;Y:Zd:d;K= a=p#= = =3= =a==p={X=[=+;:d:Zd:Y:Y;5p<#d<ܪ=+=A^W=Sb=@;&=@<;~:Zd:Zd;5p;<~;~:Y:Y:p:Zd:Y:Y:d:d:p:Y:Y:Y:Zd:d;~ʜ;d;ʜ;~ ;~ʜ:Y:Y;Zd<~<Y;;d<><8r<^W<ܪ<<8r<@< ;K:d:Y:Y9Y:Y:Zd:d:d:d:p:Y:Y:d:Zd9Y:Zd;Y;5p:p:Zd;#d;~;Y:d:d:Y:Zd:Zd:Zd:d;~ <%;d;1{;~;<5p<ܪ= a=2= f:ʜ:Y:ʜ;:d:d<%<;d:Zd;= f=V=n=QK=Q:ʜ:Zd;~ʜ;#d:Y<~<ܪ=){X=7!='4=8r=l= G=={X=M"=X%<<5p;~ ;Zd;Y;5p;Zd;Zd:d:Y;Zd;~;5p:d:Zd:Y:p:d:Y:d:d:Y;d<>;~ :ʜ:d;<:2;:d:Y:Zd:Zd:Y:d;~ʜ;~:d:Y:d:d:Y:Y:Y:p:d:d:p:Zd:d:d:Zd:Y:Zd:Zd9Y:Y:Zd:ʜ;Zd:ʜ:Zd:Zd;Y<>:ʜ;~ʜ;Zd;5p;Y;Y:Y;Y;;5p;~ʜ;<<є=Y="4<$T;~ʜ<5p=n=>>%7a> 12===\=u=.=^=D=?==~=~;~ :p:Zd;~ʜ >?>KRA>.=t`=d=3= =a=E= =O==k=8D f>:>F|>)2=B=a=3=f=M"====!=/=){X<>:d;Zd=rG=O>`>=j={X=n=V=[=`y=p#=B=y==5p<;5p:Y;Y<(X'< =E=Jw=:2=.<;:ʜ:Zd:Zd;d<2=Y=(X'=8r<1q=H1{=+<ܪ= f=[">0>= === G==I>>Ǡ=j==z=<;Zd;~ʜ@̾><>>vG>, =O==;&=鿗>Y>* >5$ >,> ==Rn1 >q$T>`>>A >Y!>= u=F+>E>n>J>E>%7a=y6=y= f====LZ>|=B=<=:Y;~=u> >n>^2>q> G>U>B=˛ ==>>2ݪ>A#>=c,>=ܪ=[=~=.= = u>> y==!=5p:ʜ:Zd=7!=O>8i>zr>>>fV>@=Y=E===y6> >J>=={X=2<><==u=!=7==AU==;Y<^I==Դ>>C>?=SR={a =l=p#==)=4=?==~=< :ʜ<>=@====k=V<:p;Y;5p<~<=u)='4=[=(X'==pS=@==I=J=ܪ=ϖ7==~="4<=;~ :Y:Zd<=U===I==2=˛ =AU=,=N|==HM<є==0N|=Qb==D=!==v==V<:d;=%==c=,=̾=d=h =*=HM=8D=f==y6=#=د===a==~=8D<:2<:d:Y:ʜ;~ ;K:Y;d= f=M"=Y=йh=I=rG=5p=H1{=y===A==_==L>$>dXp>z=>WX>)=={X=>K>q>9>C>9>=,=l>^>f>RA>>{>>HM=>|>">Ix>pۈ>:>>X>@=;&=p#=`y=d=鿗>HM>&>pS="=bZ:ʜA>{X>>j>ݩ>_h>BS> l>)>79>e{>>>>~ʜ>==G=k=k}=йh>z>E>X>EM>M"=<?>>7>nU>ۇ>8>A> >Y>0H>\>^>K>o>~9>===d=-=V>$>R>g0j>U> =2>d>&v>8>0!>o&>=V=>Y>2ݪ>X>q>pۈ>Qܙ>z=̾==H=y=>Y>9>H>:Bf> =X'<2=8r=?> G>V(>hS>C>=?=^=v=;&=m> y>ҥ>ҥ>==a7=B=+= =Y>>Q>=c=K ;~ :d=~= ==̾=9=Jw==Q=HM=7!=[=8r==M"=h <=<1q;~ʜ<~<==X%= ==3=5p<1q:Y:Zd<%<:d:Y:Y:Y:d;5p;K;d;l:ʜ:Zd:Y;5p<5p:ʜ:Zd:d:Zd9Y:Y:p:d:Y:d;~ >?=AU=0!=`y >>>K==B=Y>)>z>=A=c==H=Y>==̾>=9=Mn<ܪ<(X';p<=====}l=%;Zd;d=Y=8r= ==2==h===v= =D<엑;5p:Y:Y:d;5p;5p:d:Zd:Y:Y:Y:Zd:Y:Y:Y:Zd:p:d:p:Y:d;;;~ ;#d:Y:Y:d:ʜ;5p;K<1q<ܪ=2=8D=HM<5;~:ʜ;K<>݅L> >>5$ >>.>-O>\>7>q>>>U>=̾=2>>A>{>>>>F3=#=E:d:Zd=*=|>2ݪ>w>6>l>'Ə=i[==6P=>M">9>Vi[>X>=>,\==B=[=D> l>2ݪ>D>7> =9<;~ʜ=2=^=ܪ== =y=C=8D=QK={a =a==ۇ=I==y=+===q==c,=<>>>)>b=== a<==8r=X%<$T;#d:d<ܪ==!=AU==>E>%>%7a>1y>,>޻=~ =k=:2 >`>)>t>-O>5>.P>޻==a=8D<2>> l> >>> >pS==є==Y:d<є=h =X'==i[=AU=׌=ܪ=y6=-==?=[=*<;1{:Y;d= =]=rG=Jw8r>$>.>$1>u)=~=B="==y=u);9Y<%=8D=^=O=m===f=V=Mn=y=׌>Cw>C>96>n> 5==y6=Y==/+K<~;d="4=%=̾="=,== =h =h =pS=AU>J>8D><>.>=~=ܪ=O=D=5=Y;K:d'>>Ǡ=د==X'=d==8D=="4=Q<ܪ l> >K==l#9>i->>}>d>C=є={X=D>Ǡ>.>Qܙ>f>`]F>:Bf>o==V=8D=[=˛ >`>n>r=йh=kt`;<>=)>E>Y8>̾>j>>Ǡ>&Z=> >1y>hg>>c>̚>>Q4> /===鿗>2ݪ>k+>>pI>9=AU=2:pC>uM>>;o>>q>Y!>>>Ix> >.>S>>S>a>79==B>>>j>E>> >sj>"= ;d<=p>B>R>b> >b>q>]<>>n>IT>>SR>O>I>q>4>>=>=~>,>{>>c>p>V>>&=><~;~ = >>^>.>j>db>>0H>> >,>av>>>U>ذ>k->%=m=">pS>\>,\>>o>f 9>=;5p:Y=%=2>$>f 9>~9>aB>"=د===> G>EM>hg>l]>U>&*=7==Cw=ǟ>J>H>b>Qܙ>d==h<7;5p=$=a='=g=6P==E=7!=K == =йh>?>B=y6=&v=rG=/+K=u)====,=鿗=йh=>)>=A=;&=[=@>%>%>1q>+>=y=:=8DK> >`>r>d=>/+K>8D>.>pS=B=@=7!> Y8> y>>>!>>|===~<:2;d<$T=|;=\===Rn1:Y;Zd<^W=[=HM=Ə==h =%?>>>* >@> l==O=={X=p#<ܪ:ʜ;K<;==SR==E=)=[=2=8D=[=O>>8i>?>2ݪ>">|=<=s=!=[=~;p;~<ܪ=l=d===Y=h =C=V=/=ϖ7>pS>3>9>)$> =y6=˛ =c,=Ə=p#%>pS>u=O== G= =l=%<:2:Y9Y;Y%7a>9>"=_=)==d=O> |i>(>:Bf>5$ >pS="=/=8D=%=[=>>r>o=;&=Mn;~ :d=QK=>E> a><>.>GW=e=є=йh> >;/>o&>4>;>k+>3&v===a=>">\>w>fV>/= u=){X:d;~=3>>|>$ >D>n><>([=o>>%>av>%>>V>m>g>$1=2=йh>>]<>>>ذ>iv>)=l;~ ;~=>Y>|;o>s>U>>>.=>`y>(>c5?>!>S>~>A >uhK>1y=x=鿗> a>n>A >>̚>{>>d==pS<~:p=K =B>F3>>?>>R> =,=ܪ>>?>z=>>G>;>Y!>=ܪ=̾>> >OMk>4>>`>[>Ǡ=p#;5p.>A>/+K>|==M"=a= >>.>MO>V>B>=ܪ=^=HM=2>>>=>V>F3>pS=<є:Y:ʜ:Zd;Y<~<:2;d:d:d;Y;H1{:d:Y:d:ʜ:ʜ:d:Y:Y;5p;~ʜ;Y:ʜ;K >%>)=A=c,==H=u)<8r >>>>b===B> y>>8r=AU=4=H1{:ʜ<%=kt`=d=!=c=c==D=i[=د==-=`yM">> =ܪ=D=^=pS=p#=HM<:2:Y:Y;d<~<:2<=B=7!== G=a=8r=2">96>&Z=o=f=h =y=h=>n>8i>8D> ====h =k=엑>(>=c,>2E>=HMpS>T_>o&>Y!> =,=={X=AU>>F~>i->lN>T">(==l=SR=>+x>c>~9>n>8i=AU=7!:d<==E>%>V>pۈ>^>&=׌=d==_>f>Mn>q>{>>d>96> Y8= ==>9>v{>3>\5>F3=#=Mn:ʜ,SR>@>0>=?=5=M"=>>2ݪ>R>[Ѓ>H>&==!=v=">n>WC>o&>`>,=|=%:Zd;Y=(X'=9=Դ=#=Դ==bZ=5p=;c===>> >=o==y=rG==O>)>&>J=ܪ=rG<~;1{<==QK=l=E< <:2<><~;d;#d:d:Y:Y:Zd:d:Zd:d<<<<<<<є<< ;~ʜ;Y<(X';K;Zd;K=~<^W<=B=5p=7!=~<;ʜ:ʜ:Y:Y:Y:Y:p;Y;d;~ ;~ ;~:d:Zd:Y:Y:Y:Zd:p:Zd:Y;Zd;;~ :ʜ:Y:Y;K=a=7!<ܪ=k}=l==O=>|=鿗=^W==i-=V= =Y> /> >=AU=p#<%:d=u)== u=鿗===H1{=B= a=rG=v=_> l>u)>o=I==3==d=y>>2ݪ>%==y:Y<2=rG====="4==˛ ===h =y=̾>>>.=˛ =Zd;K;<==V={a =YAU=~=QK=H1{=O=m=[=l=p#=5p<є;d:Y:Y;:d:Y:d;d<= f=8D=`y=`y=<є="4<$T<><~;~ʜ:d:d;5p;d<~;d;Y:Zd:Y:d:d:ʜ:d:Zd:Y:Zd:Y:Zd:d:d:d:d:p:Zd:Zd:Zd:Zd:Y:Y:Y:d;Y;l;Zd;Zd;5p;Zd;5p:ʜ;5p;d< ;d:d:d;l;1{;K;d;d;d;K;~ʜ;K<(X'<~;5p9Y:Zd:ʜ:d:Y:Y:Y:Zd:Zd:Y:Y:d;;K:ʜ:Y:d<><>;;5p:d:Y:Zd:Y9Y:Y:Zd:d:ʜ:ʜ:p:Zd;~<<~;K:ʜ:Y:Y:Zd:Y:Y:Y:Y:d;Y:ʜ:d:d:ʜ;Y:d:Zd:Y:Y:Y:Y:Y:d:d:Y:Y:Y:d;d<%;~ :d;;K;5p;5p;;d;~ ;~:Y:d;p;Y;#d;Y;d;d;~ʜ:Y:d=8r=QK===sj=8D<^W;~ :ʜ:d:Y:Y:Y:Zd:Y:Y:ʜ<>=/+K=|;===k}=}l=+<$T<:2;~ ;K;l;~;d;;;:d:d<><%=7!=h =|;=h =2<<>;d;d;H1{;~ʜ;K;~ ;;:d:d;~ <=="4=.<^W<(X';;5p:ʜ:d:d:ʜ;5p;Zd:d:Y:Y;l<<~;:d:Zd:Y:Y:Y:Y:Y:Y:d:d:d:d;~;d;~ʜ:d:d;d< ;~ ;Y:Y:Y:Y:Zd:Y:d;K<;d;Y:Zd:Y:Y:Zd:Y:Y:Y:d:d:Y:Y:ʜ;Zd;Y:d:Y:Y:Y:Zd:Y9Y:Y:p:d:d:Y:Y:Y:Y:Y:Y:Y:Y:Zd9Y:d:d:d:Y:d;:d:d<%<ä=HM=2=(X'<7<:2:d:Y:Y9Y:Y;~<8r=[=8D=Sb=Jw="4:d:Zd;K< ;K:ʜ;5p<%;:ʜ:Y:Zd:p:Zd:d;;:d:Y:Y:Zd:ʜ;5p:d:Y:Y:Y:Y:Zd:Zd9Y:Y:Y:Y:d:d:d:Y:Y:ʜ;~ <~;K:d:Y:d;~ :d:Y:Y:Y:Zd:d:ʜ:d:d;<<5p;d:p:Y;K:d:Zd:d;5p:ʜ:Zd;~<є=Y=(X'=[;l;l;~;~ʜ;1{<:2:ʜ:p= f===\=QK="4+0!>8D>=Y==a7=~ʜ=޻=0!==D=є=f=8D>V >f 9>A>=4=y=u)=d=!=O==د==rG<%<~;~ <=,=n==P'<:d:Y<ܪ={X>>Ph>`>;c===y= =%={X=c,=O=|={X=`y<;d;ҥ>* > f=={a =a7=bZ=em=sj= = G=)=`y<~ ;~ :d;Zd;~:d:Y:Y:Zd:Zd:Y:d;5p;p;1{;#d:Zd:Y:d;5p<,<=8r=~<ܪ=9==/=8D<==[=C=5=SR=c=={X={a >8D>EM>* == == =є=-> >Y> l=AU=HM=Y<(X'< X>P>^2>0>A=Z===LZ>>3&v>A#><>d==߂=f=Y<==A^W=k}=̾=O=D=rG<(X';==H> G>6>>>D>y>=ϖ7=ܪ>>'Ə>F~>_>Y!>9> l==Mn=A^W=)= u>> =A==){X:p;~ =B>">B> k> >>rQ>)="=AU>b>t>=c,>Tk>R>5$ >=X'=H1{=Rn1=9=>`>> 12==T;p:d=A^W=>Mn>>>>6=ۇ=h== u=>>&Z>%> = =p#=B="4=3==>o===8D;d([>4I>=]=f==~ʜ==HM=E==;&=d=P'<;d<<є<;~ ;1{<=5p={a ==p#="4<(X':Zd:YK=鿗=c= =@;&=*=E=@=AU> l>`>E=ܪ==c=={X=}l=;l;~ =8D==K=-=ۇ=D=y=IT=5p=QK= G='>`y>~=o=Y==={X==\<:ʜ:Zd;~ʜ:Y:Y:d;K<1q9>>,\>z=>+==v=1{>>%7a>A#>S.>Jw>,===+=~=D==ǟ=AU=;&=< ,>>K>|>uq>%>.=>>(>U>>>>qm >7=Q0=k}=5=>`y>(>8D>&=o=;<є=>Y!><[>Az?>E>>`>%>J>;c>n>o>3>}>>ZR>r=c=p=>,SR>Y!>nLZ>\O>&Z=<ܪXf>>~?NF>>i7>_˭>>>8D>i->>c>7a>,\>Zd>=̾=>|>79>i->~9>k->5l=K=@:Y< =>'Ə>M">/>O>Z>d>, =>|>>;/>iv>>>k->4I=鿗=d=d=ܪ>d=>Jw>av>N>A =<$T:Y:Y=@=>0>t>>fV>ҥ=ǟ=E=!=|=>>0>3&v>=_=u)=8D=H1{= =AU>,\>ҥ>%=ϖ7=p#<(X':ʜ="4=a==B===8D=/+K=/+K=A^W=l=u)= ==/=8D<:2<~;p:d:Y:Zd;Zd<:2<>=ܪ==l=>J>>|==f=(X'<> |i>>>V=\5=̾=3=){X<`y>=A==^=bZ=B=~=Rn1={a ==u=p#=p#=`y=5p<$T:Zd:Y;Y<:2=8r=Jw=\=5p<;K;Y<~<(X'<=5p== =}l=K =8D=C=K =+<1{;K;K=u)=y==є=v==<є<є<$T=h =!==j=߂===N|==k}=`y=bZ=h=鿗=A=V=h=l=:2=+=`y=>^>!>+>> 12=o=y=AU==pS=2<:Yb> 12>=йh=4={a =bZ=.=د> G>:Bf>@>5$ >>==鿗=˛ =d=@;&<:2<%=QK==->==O=Ə==rG==׌>>5$ >9>* >==AU=O===,<~:d<ܪ=8r=l=Y==v=y=h =em=[=!=>)>>`y=,===d= =Jw<є:d:ʜ>u)==d=Rn1=h =k= u>>>A >=={X=7!<=5p=8r=޻==@;~:ʜ=;c=B>Rn1>m>~>)>G=鿗==y>V>=c,>em>|>y>Sb>f=Y==\==ϖ7>`>t>=D=V;5p<8r={X>@̾>R>.>r>Re>S>M> >pS>?>y >>q>{>>g0j>@=˛ ==>2ݪ>fV>|;o>i>2ݪ=,= vG>ֲ(?Ǡ??l>װ>>-O>.>ZR>>n>>)> k> a>BS>=LZ> >g0j>m>7a> G>kt`>r=:d<$T=s>sN>Դ?m?O?% >ֲ(>>/>.>X%>`>$ >>Mk>>P>GJ> y>b>,>v{>>r>8>{>>=u);Zd=c,>><>L> >V>QK>>pS>7!>j>N>>MG>>q>+0!=-=AU>'>W>V>>>_> V=l:d:Zd=8D=I>IT>->?>>EM>b=D=ϖ7=x>>GW>k->pI>Y!>(=_=d=@=ǟ>>E>[>IT>=l<%;Y===D>|> =))=SR=}l=a7=h =;={X=,=B>`y=Z==`y= 5=8r=Sb== u==O=<;:d:d<޻=Y="4<~ <ܪ="4=+=8rǠ>޻>r>=Y= =2`y>Ǡ>޻>'Ə>2ݪ>,>pS=y6==QK=>>>J>n>/+K>79>.>pS=V==P' f> >Q>>>n>>b=̾=f=+;d<~<~;d:ʜ9Y9Y;K<є=*=8D= 5o>u)>>=7= =2=D=d=h <ܪ:ʜ<%=@;&= =Դ= =ܙ===8D=8D=B=O>k}>:Bf>B8>8>> l==-=1{= =8D<%9Y==1{=d==|;={X>|>4I>Vi[>^}>M>3oB>>=e=د={X=QK>0>N>U>B>&> |i=o=߂= =k}=8D<1q:d%>,SR>.>===?=v=HM=\<ܪ;5p;Zd<є=:2=p#=rG=V=8D=7!=K =p#= G==B=s=c,= =H1{=8D=7!=YK="=pS===K ===$T>>J>=y6=4=8D:Y=2= u><>>>8r>;c=ܪ=l=s> >79>`>{>y >U>n=s= =rG=a=鿗>n>5$ >%==3<:2<(X'=:>/>?>Ѓ>>O>`>A> l>>9>t>>s>$ >?>pI>* ==|> l>F|>|>%> >Mn=A=QK:d`>ǟ?b? f?I>̙>}>+0!>)$>V(>>>">֎>X>k}>U>pS>~>6G<>>>db>*>6>.P=d;~ <+K=̾>_>}?M? ?>}>̙>>.>+>V>>>Վ>d>ơ>es>`y>q>%>A> >p> >c>NX>:Bf=<%< =Cw>.P>>)>>װ>_h>K>r>>8D>pI>?>ן>> >q>@> =A>* >tE>a>q>->~9>n=M";l:Y=){X=O>;/>:>o>:>A#>E=Y=O>b>(>Y!>~>:>pI>?Z> l=c,=?=2>,SR>av>{>>iv>2ݪ=O=Y;Zd=7!==N> ===`y=`y=h = =!=鿗>>> |i=O==T=8D=h ==鿗>==="4:d:d>)>=A==f=/+K<ܪ<7=C= =X'=X'= =7!;ʜ;Zd=k}= ===A>>o>>([>2L>+>=2=d=K =B=[=l={X= =Y=I=<є< =<є=4=AU>>>>>!>1y>8i>/+K>pS=m=d=E<$T<$T=h =v= u=ϖ7=2=y<$T<~=8D=d=ϖ7=l> 12> >>>n>$1>>===q;Y:Y:Zd`y> >|=i[===X'= =8DpS>8D>?>3&v>">b=~ =ϖ7=D==u);K;d= a=M"==,==X'==H=V=l=^=A>0H>R>Zd>G>.>==<==%=0N|<%;==[===?===p#=8r=>K>.>K >R>?>n>=_=,=p==HM;~ :d>* >,>=LZ=2={X=a=[=8D<:d:ʜ:d:d;l;Y:Y:d<%=m=\=E==QK>A^W>\>BS> f=v=f={X=AU>Y>6G<>K>Ix>/>=!==QK=l=O>r>([>=_=}l<#d:d=`y=A>d<>c>>~>o&>'='=_>>GJ>b>> G>8r>Rn1>pS=O==j>9>vG>3>~>D=))=A^W:d;1{=M">"4>V>N>1>ܙ>A >C> |i> l>/>o&> >>> >>A> y=>*U>wx>̚>>>I>&= G;;1{=M">">)>͘>Xp>Ѹ3>q>G> > >3oB>t>>>8>y>.>MO>pS> >8D>:>O>>s>f>3oB={X<~:d=`y>b>d<>^2>>4>y >&==LZ>J>Mn>4>̚>2>g>yA>8D>>=>>hg>>2>?>sj>=5;Y<є=d>w>F~>av>K > G=ϖ7={X==>%>?>fV>oW>`>7!>=c,=+K=>n>U>n>^}>)2=;&<:Zd<~ =3=c,="==޻=QK=.=5p=kt`=\=s>`y> y>|= u= G=h =7!=B=q==j=ܪ=k=:Y:Y;<є<<є<>;5p:ʜ;5p;d=B= a;d:ʜ===N|=ǟ=׌=ܪ==l>>>)=== ="4<<ܪ=V=k==={X=kt`E> Tc>z>n>>b=̾= =޻<>`>Y>=ܪ={X=U<^W<~<~=q=y===d=em<8r:ʜ<ܪ=l=d=h=̾===O=ܪ=ܪ==^=h <ܪ;~ :d:Zd<ܪ=8r<;d:Y;~=y=,=v==8r=p#=8D<ä;:Zd<>=~=QK=l=QK=Q<>n>==Y==X'=5=7!<:p:dr>2ݪ>9>* > =I==p==QK<є:ʜ:d%>.>3>n>=T=?===8D.>Y=x==pS==em=5p<~:d:Y9Y:Y;5p;K;d;~:d:Y:Zd:ʜ;#d:ʜ:d:Y:d;l;5p:d:Zd:Y:Zd:d;< <є<<%;~:d;~ <ܪ=5p=8D=Y<8r;~ <:d;Zd=(X'= ="==ܪ==;c= f=GJ=Y==Z>E>===}l=2<=$=/= u=LZ=AU=d=%:d<=%>E>=>Y!>EM>%=h=[=pS=>>0N|>K >R%e>:>=د==.=!> y>=c,>W>F~>=E<ܪ=~=c>,>we> a>>?==q==->%>\>> >t>EM>=i[= >=H>?Z>~9>v^>>M===Rn1:d= f=>.>ycu>`>K>C>=h==>,>d<>6>`>>V> =엑=AU>`>Ph>j>E>v^>_> =p#:ʜ 12>D6P>a7>Mn>q==d==O>r>C>k->z=>i->@>%="==>5l>n>>y >>==~ =7!:Y;5p=7!==~> >== =YAU=[==D> 12>+0!>7!>,>=йh=4=`=X'=>#9>9>,=A= <>;d=޻=rG=y=}l=7!<1{;~ <~=~={a = =d=y=7!<:d<2=V=HM=v==!== =йh=i[= ==em<ܪ;~ :d:d;~ <%<="4=y=Y=>u=-==%=B=`y=(X'<;~:Y;5p<(X'<~;~ <:2<є=k}=kt`=^=̾=6P===0N|=<є<<====p#=p#=:2<%<#d;~:d:Y:Zd:ʜ;<%;~ ;~ʜ:d9Y:Y:d:d:Y;1{<$T===V=8D<є;~ ;~ʜ<5p<==8D=V=h =bZ=C='4<ܪ|=t`=="4:ʜ:d="4==V>o===n=Y=1q==I=t`>u)>HM>===M"=8r=d=y6>n>8D>+x=l= 12>=̾==/+K=7!=[=2>b>>(>n> l=O=Ə==p>>0>EM>9> y=d<5:Y<%==c,==D=d=QK= 5= f=`y={X=> y>J>%=== G=3=k=AU>>,>d==g=;;K=HM=|;=Y=[=<є:Y:Y:Y:Y:ʜ<~<^I;Y:Zd:Y:p:d:d:d:Y:Y:d;d;~:Zd:Zd:d:d:Zd:Y:Y:Zd;Y;<= =<є=E=){X;K:ʜ:Zd:Y:Y:d;~<%<~;ʜ<~;d;5p:d:Zd:Y:Zd:d:d:Y:Y;~ =8D=<=Q=+=<~:Y:Zd:Zd:d;~<Y;:ʜ:Y:Y:d:ʜ;Y;Zd;;d<%;1{:d:Y:Y:d;Y;~;;Zd:d:Y:Y:Y:Y:Y:Y:Y:d:d:d:Y:Y:Y:Y:Y:d;Zd;~;~;~ʜ;Zd;Y:ʜ:d:Y:Zd:Zd:Y:Y:ʜ;K;ʜ<%<(X'<><%;;;~ʜ;d<~;d:d9Y:Zd:Y:Y;Y;~ <>;K;~;d<~;~ :d:Y:d:ʜ;Zd;;K;K;l:d:Zd:p:Y:Y:Y:Y:Y9Y9Y:p:d:ʜ:d9Y:Zd;Y;K;~ ;~:d:Y:ʜ;1{<~<~;d:d9Y:Zd:d:ʜ;;~ ;ʜ;~ ;Y:d9Y:Zd:d;Zd;;K;d;;5p:d:Y:Zd:ʜ;~ʜ;;~;5p:d:Y:Y:d:ʜ:ʜ:d:Y9Y:Zd:Zd:Y:Y:Y:Zd:Zd:Y:Y:Y:Y9Y9Y:Y:Y:Y:Y:Y:Y:Y:d:d:p:Zd:Y:Y:Y:Y:Zd:d:d:d:d:d:d:d:p:Y:Zd:d:d:d:d:d:d:d:d:Zd:Y:Y:Zd:Y:Zd:Zd:Y:d:p:Zd:Y9Y9Y:Zd:Zd:Y:d:ʜ:ʜ:d9Y:Y:d;Zd;l:ʜ:Y:Zd:d;Y;#d:d:Y:Y:Zd:d:d:d:Y:Y:Y:Y9Y9Y:Y:Y:Y:Zd:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Zd:Zd:Y:Y:Y:Y:Y:Y9Y:Zd:Zd:Y:d:p:Y:Y:Zd:Zd:Y:Zd:Y:Y:Zd:Y:Y:Y9Y:Y:d:d:d:Y:Zd:ʜ;5p:ʜ:Zd:Y:d:ʜ:d:Y:Y:Zd:Y:Y:Y:Zd:d:d:Y:p:ʜ;Y:d:Zd:d:d:Zd:Y:Y:Y:Y:Y:Y:Zd:Zd:Y:Y:Y:Zd:Y:Y:d;Zd;~:ʜ:Y:ʜ;d;;:d:d;K;d;l:Y:Zd:d:ʜ:d9Y9Y:Zd:Y:Y:d:ʜ;Y:d:d;Zd;l:d:Y:Y:p:ʜ:ʜ:d:Y:Y:Y:Y:Zd9Y:Zd:Y:Y:Y:p:d:Zd:d;Y;K;5p:Zd:Y;5p;<~;K:d9Y:ʜ;d;;:d:Zd:ʜ;5p:d:Y:Y:Y:Y:Y:Zd:d:d:Zd:Y:ʜ:ʜ:d:Y:d:d:Zd:Y:Y:Y:Zd9Y:Zd:ʜ;5p:d:Y:d;;K;5p:Zd:d;~ʜ;d;Y:Y:Y:d:d:Y:Y:Y:Zd:Zd9Y:Y:Y:Y:Zd:Y:Y:d:d:Zd:Y:d:Y:Y9Y:Zd:d:d:d;~;5p:Zd:d;~;5p:Zd:Y:d:d:Y:Y:Y:Zd:Zd:Y:d;~ ;;~ʜ:Zd:Y;~ ;~ :p:ʜ;;5p:ʜ;#d;K<<~;K:d:d<%<==K =rG=n==<$T;K;~;Zd;K<~<1q<:2<~:ʜ:d;<^W=2=l==n=8D;Zd;Zd;Y:ʜ;Zd;d<~<%;d:d:Y:d<%<:d:Y:Y;Zd:p:Y9Y:Zd:d:p:d;d;1{:Y:Y:Zd:d:p:Zd:ʜ:d:Y:Y:Y9Y:Y:Y:Zd:d:d:Y:Y:d:Y:Y:Y:d;K<%<%;d:d;Zd=C=={X=[= f< :d:d;Zd;d<%;K:d;Zd<~:ʜ:Y:d:d:Y9Y:Y:Y:d:Zd:Zd;~ <є= f=Q<<%;K:Zd:Y:Y:d:d:d:Zd:Y:d:d:d:Zd:d:d:d:Y:Y:d:p:Y:Zd:Zd:Y:Y:Zd:d:d:d:d:Zd:Y:d;Y;p;K;~:d:Y:Y:Y:Y:Y:d;5p<%%>t>==8D='4=@;&=kt`=y=^=={X=f=/+K>9>F|>'Ə=O==V=kt`==H====є==`y>7!>A^W> =ǟ==`y=h =p#=~=d==I==D<;d;1{Ǡ>=V=޻=8D=/+K=/+K=,=7!=`y=={a =<є<$T=8D=Sb=7!<;d:Y:Y<=V=HM=a=sj=8r<@>,>Y=D=V=D={a =d==g=A=o=Y= =<5p;<5p;/>>,\>we>&Z==%=4==A>>,>+x>%=ϖ7=l=Y<ܪ=){X=B==D=d=Mn;;Zd=Jw>8r>nLZ>>">?>Y!====> >.>C>C>+>?=Ə=H1{=5p==!=y6===d=B:Zd;5p=QK>>k->8>t>>U=N===s>>$1>;c>=c,>$1==a=@;&=8D=f=̾=A> ===5p;Zd:Y=Y=>6G<>{>>6>hg>C=2=d=d=v=Y=G>%>r=G=D=`y<==h =SR==t`=ϖ7==k};p<%=a7=D>%>==X'=h =Rn1=D=Rn1=p#=޻==SR= =8D<;~ʜ<~<==c~ =%==M"=L>=+=[=h =bZ=Zd=bZ=Rn1=+<^I;5p;Y<==}l=^=v=HM=L>=V==2=N=߂=D=~=8D=@=7!=y==>=-=̾=v=v=v=@=l<=;~ʜ;p=2=d=,==йh=I=l===,=8D=y=;&=엑===E==k}=k}=f=Jw<^W:ʜ:Y >f 9>}>\>r=X'= ==د> />, >9> =g==/+K<==2=3==^W==l>^>>Mk> k>\5>pS=|=ܪ>.>8>c5?>>>av>--=s=HM==H=Ə=->>&>pS="=h ;Y>=> >x>B>5?>Z>C=>|>n>Mn>>k}>z>>K> == =>>F|>Z>GJ>=<=c,>2>>E>7>/>C>=H>>>GJ>}>M">>E>Jw> ==E=V>%->U>j>X>#d=c<7;l=q$T>%>b>> >q>y >=AU=>K> a>Jw>n>sj>X>&Z==k}=M"=>`>9>Jw>;/> =^<:Y<ӑb={X>>Y!>l]>ID> y=D=k=>=SR= u>>z>>> =˛ =~=){X=+==c,=> Tc>b==A^W<~:Zd<ܪ=8r=D==4=h =){X=~<== f=0N|=h =u)=%=|;="4;~ :ʜ:Y:Zd:ʜ;Zd;Y:d:Zd:Y:Y;K;:ʜ:d:d:d:p:Y9Y:Y:Zd:Zd;Zd=x=׌==h ==e=={X=h =8r;=+=)==̾>==O=s=ܪ=y=s== =<є<<>;p<>=E=y=M"=}l=Y;5p:ʜ<2=QK==Ə={X==={X=Ə==rG=7!<ܪ<Y;K:d:Y:Y:d:d:Zd:d;;l:Zd:Y:d:ʜ:d:ʜ;1{<;~ ;Zd;Y;K<~<;~ʜ:Zd<~<====Mn="4<^W;d;~ʜ= f=3=E==4=n=<<<ܪ=QK==O==|==a=d=d= =QK<1{:ʜ>d=>%=~=йh= u=|==y=){X<Ǡ=A=˛ =d=p#=[=f= u>)>0H>79>'Ə> ==="=c,=HM=8D<,;=H1{=E=B=A=LZ=J=\==p#== u>>+>/+K>f>======"4<~:d V> y=엑=h=%=.===H=8D<:ʜ:d<=8D=p#=rG=V=7!=.=7!===p#=f=I=q= =2:ʜ;E> y>=ۇ=d=8D9>>o>>}>3oB=|=d=c=>$\>G>dXp>b>C>pS==`y=P'= =>>>|==8D:ʜ;= >+0!>>ֲ(>>F+>Cw>8D=LZ>K>$>X>3>>;>.>Z>=1{=I=>">R>i->V>!=2<ܪY!>8>m? Y8>_>Y>nLZ>>pS><>{>>̚>db>>0!>:>;c>=Z>>U>Y8>ذ>>X>>=V:YX>_>>?l>>6P>o&>C>>:Bf>x@D>>>>SR>7=>>]>=LZ>t>av>)>>K>hg>Y={a :d;d= >'Ə>K>p> 9>Ϻ>z><>>`y>>Jw><>BB>`>>c>n== u>>A>}^>.>=H>G==;c:Y=8r=̾>5$ >}8>>z=>3oB=y6==h=> |i>2E>R>[Ѓ>F3>=O== =>>2ݪ>EM>8i> =a<8r:d=u)=d===ϖ7=a=l===8D=Sb=f==i[=V= u=a=H1{<7<1{=/+K=~=l=Y=D=<^I;d:Y;Zd`>%>)=\5= = =5p<ܪ<ܪ=QK=@=h=2==h >`y>B> 12>pS>>M"=== =5p<̾><=Jw=k=c===sj<:d?>o> >|=i[= =p#= 5==ǟ==v=0!=pS=V)>2ݪ>9>,>%====2=)=2<Y<:2=\=!=y6=9=엑= =f={a =|;=4=>,>K u>T">A#>%-> ==m=|=k=A^W*>F|>ID>9>"=N=׌=,=D= =1q<>:d=̾>> >#d>%>Y===d=a=f=Jw;~:Y:ʜ;;<<><=7!={a = =y=p#=2>=Դ=d=A^W<є<%<8r=(X'==pS=[=2<><7=l>&^>pI>Y8>pI>* ==k}=?=엑>>E>c5?>d>F|>=O=/=kt`=)=">>%7a>=ܪ={a <%;Zd=>>>1{>> >>0H=Q0=>d=>Vi[>2g>^2>`>M">f>$=߂==>96>o&>>wx>==2=5p:Y<1q=0!>EM>s>$T?O{>j>/>f>>)>9>{>~>8> >$ >v^>K >)>b>(>oW>>>4>{>>q= :ʜ<5p={X>D6P>&v>#?I>>?>j>>pS>:Bf>|;o>>6P>>6>޻>U>"> l>2ݪ>~>>6>>B>+=a;~ʜ;l=>>X>>ٮ>I>M">>|>d=>UF+>>Z>O> >|;o>8i>=鿗>>_>>̚>k}>i->%=|;:d(>n>^>oW>3&v=LZ==D=AU>%>?>f>q$T>`>5$ >K=D==ǟ>>IT>c>S.>n=h l==;&=y=;c= a=<є=pS=ǟ=y6=O=%<$T:Zd:Y< <ܪ=~<$T<5;~ ;~ʜ;5p;<~;5p:Y:Zd;>>%=e=̾=f=0N|K>>> >>>pS=\5==y=.=D=[`y> 12> >=AU=0!=jQ0=;l:ʜ:d:Y:d;5p<^I=+===8r=E="4="4="4<7==={X=k===/+KY>1(>96>* > ==˛ =̾=0!=|;=8r;;d==/==J=є=d={a =QK=p#=4=~>,>ID>R>?> >`y=I=O=D=f="4<~;Zd<$T==v=є==d=8r=p#=l=+K=e>*U>F|>ID>8i>pS=Q0=1{=c=X'={a =~;d:Zd<:2=){X====8r=em=]=}l=k=O> >$1>&Z>Y=ܪ==%= =q$T=+K >޻>>D>fV>==O>>8D>rQ>M">BB>>k+>.>=I>>R>3>>,\>_> 5=h :Zd5$ >KRA>;/>=ä=f===>+x>Mn>^>Mn>+==h==є>`>=>WX>F|>pS=<==O=Ə=`y=8r> >b="={X=`y<$T,>EM>7!>8r={X=em={a ={X=B>z>9>@̾>1y>u)===3=X'=>/>EY>96> y=\">`>>k->2ݪ=B=k=k=Y>>B>k->ycu>f>=c,>=ϖ7==->0>jQ0>a>t><є=7=5p:Y G>aB>>n>7!=o={X=^=O>pS>IT>vG>a>uhK>Jw> G== u>|>=c,>{>>U>>G==B:Y<(X'=8r=$T>3&v>KRA>=c,>r=== =D>b>/+K>V(>fV>Y!>8D> 12=,=h=>">X>pۈ>b>.P=|=8r:Y=8r=k}=AU>K=Q0==[=@;&=7!=|;=?=>>&*>>=|=k=[==O>%>%7a>=AU=n;Y:ʜ<ܪ=QK=}l=l=/+K<є<^I=Q=|;=q=d=3=/+K;~ :Y;Zd:p:ʜ;K:Zd:Y:Y:Y:d<><<<5p;d;~ʜ:ʜ:Zd:Zd:d:d:Y9Y:Y:d<(X'='4=~ʜ= ==;c=~<ܪ|=y===h =A^W=Q;Zd:Zd:Y:Y:Y:Zd:p:Zd:Y:d;~;:d:Y:Y;Y<%<<%;K:d:Y:Y:d:d:Y:d> >Ǡ=V=!==sj= =˛ >%>%>=I=z=;d:Y< =.=O==y6==p#=Q=~=Zd=X'=I> >>>=|=d= =d=m>>4s>'Ə==f<% > =鿗===|;=y=>>> ==QK;5p:ʜ<ܪ=V=B={a =7!;:d:Y:Y:Zd:ʜ;<><ܪ=Y<7<:Y< <엑="4=~=B=5p=){X;~:Y:Zd;~ <(X';d:d:Y:Y:p:d:Y:Y:Y:Zd:Zd:Zd:ʜ;5p:ʜ:Zd:d;~;~ ;d;Zd:d:Y:Y:d;K<Y<%;;p:d:Y:Y:Y:p:d:d;Y;Zd;K< <5p<5p<>;~ ;5p:p:Zd:d;#d:ʜ:Y:Zd;Y;;d<%;d:ʜ:Y:Y:ʜ;~ <%<%<~;~:d9Y:Y:d:ʜ;H1{;5p:ʜ:d:Y:Y:Y:Y:Y:Y:Y:Y:Zd:d:ʜ:d:d:Zd:Y:Y:Y:d;~ʜ;p;p;;Y;Zd:ʜ:d:Zd:Y:ʜ;K<<;~ :d:Y;5p;< ;K:d:d;5p;~ʜ:ʜ:Y:Y:Y9Y:Y:ʜ:ʜ:d:Y;Y;d;d;Zd:Zd:d;~ʜ;<;:d:Y:Y:Zd:d;5p;1{;K;#d:Zd:Y:d:d:d:d:d:d:d:Zd9Y:d:ʜ:ʜ:d:Y:Y:d:d:Zd:Y:Y:Y:d:d:d9Y:ʜ;d;;:d:Zd;<><:2<:ʜ:Y;~ʜ<%<>;~ :d:d;~;p;Y:Y:Y:Zd:Y:Y:d:d:Zd:d;~;~:ʜ:Y:Y:ʜ;K;K;5p:Zd:Zd:d;Zd;~ʜ:d:Y:Y:Zd:Zd:Y:Y:Y:p:d:Y:Y:Y:Y:Y9Y:Zd:Y:Y:d:Y:d;~ʜ;d;Y:Y:Y;Y;~ <~;p:d:ʜ;d;~ ;~:Y:Zd:ʜ;Y:d:Y:Y:Y:Y:d:d:Zd:Zd:d:d:Y:Y:d:d:Y:Y:d:Y:Y:d:ʜ:d:Y:d:d:p:Y:Zd9Y:Zd:d:Y:d:ʜ:d9Y:d:ʜ:d:Y:Y:p:Y:Y:Y:Y:Zd:Zd:Y:Y:Y9Y:Y:Y:p;5p;;Zd:p:Y;Y<~<>:ʜ:Y:Y:Y:d;Y:d9Y:Y:ʜ;K;d:ʜ9Y9Y:Y:Y:Y:Y:Y:Zd:d:d:p9Y:Y:Y:d;5p;5p:d:Zd:Y:Y:Zd9Y:Zd:d:d:d:Y:Y:Y:Zd:Y:Y:Y:Y:Y:Y:Y:Y:ʜ;d<%<~;Zd:Y:Y;Zd:ʜ:Y:Y:Y:Y:d;Zd;~:ʜ:Y:Y:ʜ;d<~;;Y:Y:Y:Zd:Y:Zd:d:Y:Y:Zd:d:d:Y:Y:Y:d:d:Y:Y:Y:Zd:Zd:Y:p:p:Y:Y:Zd:Zd:Y:Y:Y:Y:Zd;~ʜ<<%;d:d:Zd;K<ܪ<(X':d:Zd:Y:Zd:Zd:d;5p;K;~ ;~:p:d<~<><ä<2;p:d:p:Y:Y:Y;5p:Zd:Y:Y:Y:Zd:ʜ;1{;Zd:Zd9Y:Zd:ʜ:ʜ:d:d=p#=!==9=.=,=sj<7<^W<7=[=.=bZ=B=8r=]= 5:d:d;~ <8r<є<<%:ʜ;K<%=2=8D=<5p;Y:d:d:d:d:d;5p;Zd:d:Y:d;K<%<Y;:d:Y;Zd<%<>;:Y:Y:Y:d:Zd:Y:Y:Y:Y:Zd:Y:Y:Zd:Y:Y:d:d:p:Y:p:ʜ;Zd:ʜ:Y:Y;5p;K;Y:d9Y:Y:d;1{<~<~;:d:d:ʜ:ʜ;p<%<:d:Y:d;d;d:d;5p<(X'<<;:Y:Y;d<~;~ʜ;~ʜ<%:d:ʜ<=$===5p<$T<^I< ;;~;5p;~ 2ݪ>A^W>#d=|=V=4?=H1{=={X=O===K==D!>d>z=>U> 12=k}=q$T={a =Y==t`> >=A=є=|;=[<2=Y=rG===a=O<5p:Yn>`>t>OMk> l=a=== ==>>Ǡ=t`==h <<2='4=8r==є==n*>8i>HM=={a =V=H1{=V=B==̾==q==H=~<1q;~ :ʜ:p:Zd:Zd:Y:Zd:d:d:d:ʜ:d9Y:Zd:d:d;5p<:2<^W<<=/+K=@;&=+<$THM>*>=p=@;&="4=Rn1=M"==o> Y8> |i=))==l8D>>}>%>{a >, ==5=%=2=l>">=c,>@̾>,>==kt`=2=h = ==="=a=8r:Y:ʜ=@;&>K>k+>~>C>>av>b=q=E=">>:>^}>c>HzG>=i[=M"=sj=9=>>"4>=K=l;1{:d=@;&=ʜ>i->/>!>>`>E=h=p=O> f>5$ >W>_˭>F3>=O=`==X'=t`>A >.>= =B<%:Y<==c>3&v>{>>>pI>'Ə=|=d==v=">.>,>2ݪ> ==^=Sb=<є=f=>>>Ǡ==QK;;K=H1{=>%>>>o=!==V===QK=8r==,=د===+<<="4==v=c,=q=u<;5p;d= f=h ==QK= 5<%<%;~;5p;K<(X'<~ʜ;5p:Y;d |i>w=x==={X={X==kt`=;p;l=k}=M"=c,=O== ==H1{===em=9=i[>> l=-=h=HM=M"==l=Jw<;Zd:Y=q=|;=8D=9h=Jw=8D=<5p:p:Y<%<==5p=7!="4=~=~=~=~="4=V=={a =7!<^I;~:Zd9Y:ʜ;;~;~;Zd;~ʜ<%<ä="4=:2=A^W=/+K<$T<>:d;==o>3oB>GW>/t=Z===={a ==m>%>(X'>+0!>=y6=d=D==5p= ==O=2=f<ܪ:Zd:Zd=$=>R>!|>0!>>R=LZ=4==>">GJ>k->pۈ>Y!>,==4==X'=LZ>>>0H>n=t`=<%;Zd=n>>>X>Վ>;&>7>$1=O= u>E>2ݪ>k+> >s>I>OMk>M"=ǟ=q=i[>>O>fV>U> a=2<ܪ;Zd=n>r>8r>`>ӵ><[>>(=ۇ=ϖ7>>/t>hg>|i>[>a>Qܙ>'=˛ =!=B>)2>\>sN>bZ>.P=1{=B:Zd="4=ܪ>Ns>>>!>Sb>=є=D='>w>b>n>Y!>.=o=SR==>.>=`>R>A>=0!/>A>,==0!=3=|;= =!=LZ>'>d=>%== G=E=5p={a =9=B>w>==8D;<#d=:2=pS=X'=)=\=q<ܪ<<є= f=V= =@=y=C;:d:Y:Y:ʜ<~;d:ʜ:Y:Y:d:d:d:Y:d;Zd;d;Zd:d:Y:Y;~ʜ<><5p;~ :ʜ:d:Zd:Zd:p:d:Y:Y:Y:Y:Zd;d<<=<$T<<~;5p;Y;~<<(X'<(X';:ʜ:Y:Y;~;~ :d:Y:d;d< ;~9Y:Y:Y:d:ʜ;Zd;K;d;1{:d:Y:Y:Y:d:d:p:d;5p;Y:d:d:ʜ;5p;5p:d9Y;1{ >r>=== ={X=pS=^I<7;Zd<~=5p=@====Ə=sj===K =l=̾> |i>%7a>+>===!=?=d=rG=~;d;~ʜ=~=3=!==c,=^==`y=l==>~>n>$1>=I=I==d=/=V<7;Y:Y<5p=2=l=>==[=`y=Mn=`y=={X=د>>=AU==p#=`y=em=D= f<:Y:Y:Zd;Y;K;K;;~;;p;~ʜ:d:Y:d:d:d:ʜ;<~<%;;5p:Zd:ʜ;Zd:ʜ:ʜ:d:ʜ;1{">:Bf>$1===7!=h =4=ۇ>`>&Z>, >== =bZ= a=E=d=د===X'=.;5p=[=ǟ>@>0>>->G=))=d==>>H1{>oW>z=>aB>7!>=!= G=D> >8>IT>;/>={Xo>z=>?>Sv>jl>:>"=O=Y>|>4s>pI>>>>`>"=V==>79>m))>E>u>=c,=2=1q:d=QK>>y>t>Ȟ>:>>)2=ܪ=O>`y>5$ >pۈ>>>>fV>(==˛ >`y>?>{>>>I>GW==;c:Y:Y=[=ǟ>?>X>>w>Q4> l=є==׌>'>GJ>tE>K>o&>B> /=Y=I=>"4>Y!>pI>av>-v=|<ʜ;=h =_>%>;e>*=x=E=f=|;=޻=>>&>3&v>'4>===l= =O>%>%7a>==p#;K<%=8D=)={X==rG=.<<^I;:ʜ:Zd:Y:Y:p< <є<$T<%<<~:d:Y:d:d:p:Y;Zd<~<>;d:d:d;=2=޻==Y=!=/=h =\=V=5p />>B=O= = ===7!<:d;~<엑=l=k=v=d==8D=(X'=C=5=> y>'Ə>,>"===0!== =Mn f>"_h>&Z>)=I=v=k}=)=}l=7!>=I=X'=kt`=H1{=A^W=*;:Zd:d;5p;d<(X'==4=8D> ===M"=A^W<$T="4=y==_=,= ="4:ʜ f>L,>k->V(>=={a =`y==LZ>&>GJ>R>A>ҥ=y6={X=y=Ə=e>,>@>4I> l=d<<=>8D>> G>|i>J>|==4=˛ >>Jw>y>z>r>GJ>'="=h=I>+>aB>{>>k+>6=د='4<$T=c,>8>_C>>>OMk> l=!==йh>%>OMk>}8>6>|;o>Rn1>C=B==>7!>nLZ>>y >?=g=5p`>Mn>m))>ZR>&=ܪ=d=޻=D>?>/t>X>i->[>79>==v=|>J>K u>fV>V(>"_h=c<ܪ:d=@=0!=>Y>=D=%=`y===sj==g>޻>"_h> G=9==y=l=B=>Ǡ>>w=D=V;Y;Zd<==em=3==H=H1{=<><^I<8r=%=p#=d=l==y==<=<8r:ʜ:Y:Zd:Y:Zd:Zd:Y:d<~;~ :Y:Y:Y:d:ʜ;Zd;~ <><~;5p9Y:Y:d:ʜ:d:Y;K`>r>=H=ä==8r=rG=@;&<=<%:Y9Y;K<=@=8D=7!=Q<$T= f=8D=|;=+K=-> >`====h =Rn1=+<;~ :Y;d:d:Y:d;<< l===Zd<엑=B=V=a=O>>>=ܪ=v==H===bZ=?=>)> l=Y=a7;~ ;~ʜ=IT=|>>79>(===Mn=D=5=̾> >,>:Bf>2E>===.={X=\5>/+K>C>8i> y=<;=Mn=,>A >96>+>==l=V=.=T>u)>5>E>>=LZ=D==D> >:Bf>Qܙ>A>=v<:d=Q=Ə=G>Y>Ǡ=O=޻=E=0N|=p#=q=>>,>&Z> =O=^=y= =7>t>2ݪ>%-=$T=5<~<1q=;c==?==f=8D;~ʜ:d:ʜ<;~<~=[:d:d<:d:Y:Y:Y:Zd:d:d:ʜ;~ʜ;1{;#d:Y:Y:Y:Y:Y:Y:Y:d;~;K;~ ;d;Zd:Zd:Y:Zd:ʜ<5p<=V==Y=~ =߂==d=|;=A^W=QK====-==(X':d;l;d<^I=2=f=l==J=I=u)=c~ =+=){X=}l=!=,=є=3<1{:Y<><==5p=+<ܪ<%:ʜ:Y:ʜ<=5p=|;=pS=M"==Mn=@<<(X';~ :ʜ:d;K< ;ʜ;5p9Y;Y< ;d;5p:ʜ;5p< <Y;~:Zd:Y:Y:Zd:Y:d;Y;d;K;5p:d:Y:Y:d<~<2<$T<< <5p;~ :ʜ:Zd:Y:Y:d;~ʜ<5p<ܪ=3=<є="4<~:ʜ:d<~<8r=%=;c=){X<~;K;Y:d:Zd9Y:d:ʜ:d:Y:Y:Y:d;~<~<(X'<;~ ;5p:Zd:Zd:Y:Y:d;~ʜ;d;1{;Y:Zd:Zd:d:d:Y9Y:Y:Y:Zd:d:ʜ:d:Y:p:ʜ;Zd;~ʜ:ʜ:Zd:Zd:d:ʜ;Y;Y:d:Y:Y:Zd:Zd:Zd:Zd:Y9Y:Y:d:d:d:Zd:Y9Y:d:ʜ;5p;Y:ʜ:ʜ:d:d:Zd:Y9Y:d;5p;~;;d;~ ;d;~:ʜ:Y:d;Y;~;K<~<%<%;;Zd:d:Y:Y:d:ʜ;5p;1{;~ ;;K;Y:Zd:Y:Y:Y:d:d:ʜ:d:Zd:Y:Y:Y:d:d:Y:Y:d:ʜ:d:Y:p:d:ʜ:d:Zd:Y:d:ʜ:ʜ:d:Y:Y:Y:Zd:d:d:d:p:Y:Zd:d:d:p:Zd:Zd:Y:Y:Y:p:Zd:Y:Y:Y9Y9Y9Y:Zd:Y:Zd:Y:Y:Y:Y9Y:Y:d:d:d:Y:Y:Zd:Zd:Zd9Y:Y:Zd:d:d:d:d:d:Y:Zd:Y:Y:Zd:Zd:Zd:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Zd:Zd:Y:Y9Y:Y:Y9Y:Y:Y:Y:Zd:Zd:Zd:Y:Y:Y:Y:Y:d:Y:Y:Y:Zd:Y:Y:Y9Y9Y:Y:Y:Y:d:Zd:Y:Y:d:Zd:Y:Y:Y:Zd:Y:Y:d:ʜ:d:Zd:Y:Y:d:ʜ:d:Zd:Y:d:Y:Y9Y:Y:Y:Y:Y:Y:Y:Y:d:d:Y:Y:d;5p;#d:d:p:d:d:Zd:Y:d:d:d:Zd:Zd:ʜ;Zd;5p:d:Y:Zd:Y:Y:Zd:ʜ;~;~ʜ:d:Y:Y:d;Y:ʜ:d:Y:Y:Y:Y9Y:Y:d:d:d:Y:Zd:ʜ;5p:d:Zd:Zd:d:ʜ:d:Y:Zd:Zd:Y:Zd:d:d:Y:Y:ʜ;p;K;Y:Y:Y:d;Zd;d;~ ;~ʜ:Zd:Y:d:d:d:ʜ;5p;Y;:ʜ:Y:Y:ʜ;~;~;Y:d:d:d:d:Zd:Zd;5p;K;K;Y:d:Y:Y:ʜ;~;~ʜ:d:Y:Zd:d:d:Zd:Zd:p:Y:d;~ʜ;:ʜ:Y9Y:ʜ;~ <;:d:ʜ;K;~ ;~ʜ:Y:Zd:ʜ;Y:d:Y:Y:Y:p:ʜ;Y:d:Zd;5p;~ ;~ ;~ʜ:Y:Y:d;<~<~;1{:d:Y:d:d:d:ʜ;~;d;d;Zd:Zd:Y:d;Zd;5p:ʜ:d:d:d:d:p:Y:ʜ;;~:ʜ:Y:Y:Y:d;5p;5p:d:Y:Y:d:d:Y:Y:d:d:Zd:d;;K;5p:Zd:Y;5p<<%;d:d:Y;Y;~ <~;:d:Y;Y;Zd:d:Y:Y:Y:Zd:d:d:Zd:Y:d;;p:ʜ:Y:Zd;Y;d;d;Zd:Zd:Y:Y:Y:p:ʜ;~;~:ʜ:Y:Zd:d:d:Zd:Zd:Y:d:d:Y:Y:d:d:Zd9Y:Zd:d:d:Y:Y:Y:Y:Zd:Y:Y;Y;Zd:d:Y:d;1{;d;Zd:Zd:d;~;K;#d:Y:Y:d:d:p:Y:Y:Y:d:d:Zd:Zd:d:ʜ:p:Y:d:d:Zd9Y:Y9Y:Y:Zd:Y:Y:d:d:Zd9Y:p:d:Zd9Y:Y:Y:Zd:Y:Y:Y:d:Y:Y:Y:Y:Zd:Zd:d:Zd:d;Zd;d;1{:d:Y:Zd:Y:d;d<<%;K:Y:Y:d:d:Y:d;K<~<%;d:d:Y:d:d:Y:Y:ʜ;p;d;:d:Y:Zd:Y:Y:d;Y:d:Y9Y:Y:Y:Y:Y:d;~;K;Zd:Y:d;d<<<;5p:Y:Y:Zd:Y:Y;H1{;<~;K:d:Y:d:ʜ:d:Y:Y:Y:d;~ʜ;l:d:d;d<:2<:d:d<~<8r<;Zd9Y:Y:Y:Y;K;~:Y;1{<$T=QK=f='4= =8D=@;&=.<;d:Y:Y:ʜ<%<=5p=B;d:d:Zd;d=:2=)=d==~<>;d<><ܪ=:2=[==d=Y=`y<=< :d:d<(X':Y;Zd=7!=!>>== =@<<=.=l=="=Z=O={X=a7<ܪ<(X'<>=+=wx=f=sj=@;d<(X'==H=LZ>/>A#>([=K=z==+="4=Sb== u=l>Ǡ====k}=}l=엑>.>?>$== =;c=0N|=QK=)=;&=>===}l=B<===+K=;&==|;<є:p;Zd=*=I>|>=))==Rn1= a==u)=QK=޻=!=;&=I=3= a=4?= =f=8r=5p<ӑb="4=~=[="4=8D=7!=u);5p:Y:Y;~<>=B=V=|;=em=u);;K=`y=йh>>3>==h =8r=Y=h = =I> 12>> l=د=:==<$T=,=y==O== w>Mn>i>Luq>`={X=a7=QK=f=>>&Z>1y>#9>==|;=8D=z==D=> y=l==B;~ʜ<=%> >K>hg>K u>=E=|;=a7=f=>>"4>/+K> >`y=D=rG====>`y>r>==Rn1;p;d=QK=O>C>0H>z=F+=M"=V=7!=QK==>b> 12>b=|= =){X=B=@;&= G=O==AU=d=޻:ʜ:Zd<:2;p:p;5p;p;~ ;<~<(X'<1q;~ :d9Y9Y:Y9Y:Zd:d:Zd:Y:Zd:Y:Y;Zd<;~ʜ;5p;1{;~ ;d;Y:Y:d==< ;K)>* >'=|=n==~=bZ={X=I> >>`== =bZ=HM=C=d=AU==I=0!=7!;~<:2=3>E>@̾>^>EM> =v=`y=Mn=f=;&> f>.P>:Bf>/t>u)=˛ =)=h = =O>)>">J==<>E>@>\>F3>%=9=}l=^I=y=> >.>;c>1y>%=,=M"=rG=޻=ܪ>">,>d==Q0=l<>;K=:2=>>*>k}===[=7!=[=d=i[> >>%=鿗={X=bZ=8D=kt`=p=e>>:=є=C;5p:Y;:d<~<=8r=޻=Q<%<(X':p:d;<<8r;:Y:ʜ<%=Mn=u=QK<엑;~ :d;~ʜ Tc>%7a>pS=ӑb=3=$=Q=Rn1=9=_>%>n>=l=2==Rn1=}l=;&> |i>z>=йh=rG<%;l=3=>`>&Z>=I===="4=V==~ >'>$>>== =h ==T>u)>!>==}l<~:db=Q0=!==){X >==d=bZ=7!=Rn1=X'=->===7!:d;~ ===q=M"=kt`=@;K;Y:Y:d:d:Y:d;~ <5p<(X';d:d:d;;ʜ:ʜ:Y:Y:Zd;#d<2;Y:ʜ<^I=Q=[===d= =Rn1;<<ܪ<^W<(X':d:Y;K<ܪ=[="4='4=[<;d:Zd:Y:d<%<~<є<;d;Y:Y9Y:Zd:d:d:ʜ;~;<(X'< <$T=7!=em=h =7!;~:Zd:d;<<ܪ= f= a=[= f=QK===bZ=5p<$T<%;Y:Y:d:d:Y:Zd;Zd;~ ;;K;5p:d:Y;#d;p;:ʜ9Y:ʜ<~;;p:ʜ:p:Y:Y:Zd:p:d:ʜ;d<1q<5p;~ ;Zd:d:Y9Y:Y:Zd:Zd:d:d;Y;;l:d:Zd:Y9Y:Y:Y:Y9Y:Y:d:d:d:p:Y:Y:ʜ;~ʜ;;1{;~ʜ:d:Y:Y:Y:Zd:Y:d:d:Y:d;l;~ <>;~ :d:d;;d;l:Zd:p:d:Zd:d:d:d9Y:Zd;5p;K;~:d:Zd;~ʜ;;~ ;~ʜ:Zd9Y:ʜ;K;~ ;~:Y:Zd;Y;l:d:Y:Y:Zd:Y:Y:Zd:Zd:Y:Y:d:d:Zd:Y:d:d:Y:Y:Zd:Y:Y:Y:p:d:Y:Y:Zd:Y:Y:Y:Y9Y:d;Y:d:Y9Y:d;K;;~ʜ:Y:Y:Y:Y:Y:d;K;;Zd:Y9Y:Y:Y:ʜ:ʜ:p:Y:Y9Y:Y:Y:Y:Y:Y9Y9Y9Y:Y:d;5p:ʜ:Y:Y:Y:Y:Zd;d<5p<(X';~:Y:Zd:Y:Y;d:Zd:d;~ʜ<><<:d:d:ʜ:d:Y:d<8r=Q="4:p:Zd:ʜ<=2==޻=rG=;:d:d;K:Zd:Y<%=+=8r=Y=p#= f<>:ʜ:ʜ;:d;Zd<є=7!=QK=,;~:Y:Y;<%<2<:Zd:Y:Y:Zd:p:ʜ;Y:d:Y:p<:2;K;5p;Y:d:d;d<~;d;Zd;5p;~ <%;~ ;Zd:d:ʜ;5p:ʜ:Y:Y;;;p:d:d;Zd;K;d;d;d;:d:Zd:d;Zd:ʜ:Zd:Y:d:ʜ:ʜ:ʜ:d:Zd:Y:Y:p:Zd9Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Zd:Y:Y:d;l;~:ʜ:Zd:Y:Zd:Y:d;~ :ʜ:Y;Y;K;:d:Y:ʜ;;Zd:d9Y:Y:Zd:d:Y:Y:d:d:p9Y:Zd:d:ʜ:p:Y:Y:Y:d:ʜ:ʜ:Y:Y:d:ʜ:d:Y:d;;;~ ;Zd:d:d;;~ ;1{:d9Y:p;5p;d;~ ;Y:Y:Y;K<$T=>=HM<<~:d:d:d:d:ʜ<%<<;~ ;~ ;~ <:2<Y;:Zd;;K<5p<$T=V==={X==,;K;~ ;<%<8r<==5p=7!<=<>;Zd;K;d;:d:d<%:Y:d<><<<>:d:Y<~<ܪ=Q<$T:d:d<==:2=h =l=8D<ܪ;d:Y:d<=(X'=Sb=Jw=~<~;5p<=A^W=p#=V=[<>:d:Zd;Y;~:Y:d<<:2<%;5p:Y:Y:Y:d;d< ;d:d:Y:d;~ʜ;~:ʜ:Y:d;Zd;l:ʜ:d;5p;~ ;ʜ;Y:Y:d;1{<>;~:ʜ;ʜ<5p<5p<%<%< <$T;~ʜ:Y:p;Y;~ʜ;l;5p:ʜ:d:d:d:Zd9Y:Y:d:Zd:Y:Y:Y:Y:Y:d;Zd;l:d:Y;5p<%:d:ʜ:d:Y;p<==/+K=7!=Y<;K:Zd:d<>=[=:2=8D<7;1{:Y;d;Zd:Y:Y:ʜ;Zd:Y:ʜ;d<~;K:d:Zd:d:d:Zd:Y:Zd:Zd:Zd:d;l;~ʜ:d:Y:Y:d;;K;5p:Y:Zd:ʜ;5p:ʜ:d;Y;l;#d:d:Zd;Y;d<~;K:d:d;~ʜ;;~ʜ;Zd;p;K;~:d:Y:d;~;K;~:Zd:Y:ʜ;#d;Y;Y;~;;5p:p:Y:Y:d:Y:Y:Zd:Zd:p:d:d:Zd:Y:Y:Zd:Zd:Y:Y:Y:Y:Zd:Zd:Zd:d:ʜ;d;:ʜ:d:Y9Y:Zd:d:d:d:d:ʜ;~;~ ;K:d:Y9Y:p:d:d:d:d:d:d:ʜ:d:Y:Zd:Zd:Y9Y:Y:Y:Y:d:ʜ:d:Zd:Y9Y:d;~ʜ;d;K;H1{:p:Y;Y;Zd:p:Zd:ʜ:d:Zd:Y:ʜ;K<%<><;Zd:Zd:ʜ<~<;Zd:ʜ;p;Y:d:Y:d;K<~<%<~;:d:Y:d<~<Y;#d:d;~ʜ;Zd:d:Zd:d;5p;l;~ʜ;5p:d:Y:d:ʜ:Y:Y:Y:Zd:Y:Zd:Zd:Y:d;Y:d:Y:d;d<%;~ :d;Y<%;Zd:ʜ<<><:ʜ:p;Zd;1{;Zd:Y:Y:d:d:Zd:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:p:d:Y:Y:Y:Zd:Zd:Zd:Y:Y:Zd:Y:Y:Y:Zd:Y9Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:Y:ʜ;~;Y:Zd:Y;~;d;:d:Y;Y;;Zd:p:Zd:d:d:Y:Y:Y:Y:Y:Zd:Y:Y:Y:Y:Y:Y:Y:Y:Y:Zd:d:d:Y:Y:d:d:Zd:Y:d:d:Y:Y:Y:Zd:Zd9Y:Y:Y:p:Y9Y:Zd:Y:Y:Y:Y:Y:p:d:d:Y:Y:Y:d;Y:ʜ:d:Y:d:d:Zd:Y:Y9Y:Y:Y:p:Y:Y:d:d:Zd:Y:Y:Y:Zd:Y:Y:Zd:d:d:Zd9Y:d:ʜ:d:Y:Zd:d:d:Zd:Y:Y:Y9Y:Y:Zd9Y:Zd:Y:Y:Y:Y:Y:Y:Y:Zd:Zd9Y:Y:Y:Y:Y9Y:Y9Y:Y:Y:Zd:Y:Y:Zd:Y:Y:Y:Y:Y:Y:Zd:Zd:p:Zd9Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Zd:Y:Zd:Y:Y:Y:Zd:Y:Y:Y:d:ʜ:d:Y:ʜ;#d:d9Y:p:d:Zd9Y:Y:Y:Y:Zd:Y:Y:Y:p:d:Y:Zd:ʜ;5p:d:Y:Zd;Y;~ʜ:ʜ:Y:Y:d:d:p9Y9Y:Y:Zd:Y:Zd:d:Zd:Zd:Zd:Y9Y:Y:Y:Y:d:d:Y:Y:d:d:d:Zd:p:Y:Y:Y:Y:Zd:Y:Y:Zd:Zd:Y9Y:Y:Y:Y:Y:Y:Y:Y:Zd:d:p:d:d:d:Zd:d:Zd9Y:Y:Y:Y:Y:Y:Y:Y:Y:Zd9Y:Y:Y:Y:Y:d:ʜ:d:Y:Y:Y:Y:Y;Zd;d;:d:Y:Y:Zd;~;;K:d:Y:ʜ;~;#d:Zd:Y:d:Zd:Y9Y9Y:p:d:Zd:Y:d:d:Zd:Y:Y:Y:Y:d:d:Y:Zd:ʜ;Y:d:Y:Y:d:ʜ:d:Y:Zd:Zd:Y:Y:Y:Y:d;5p:d:Y:Zd;~ʜ;d;:d:Zd;5p;~ ;d:ʜ:Y:Y:Y:Zd:p;#d;~ʜ:ʜ:Y:Y9Y:ʜ;Y;Zd:Y:Y:d:d:d:Zd:Y:p;K<%;:ʜ:Y:Zd:Zd:Y:Y:d;d<><:ʜ:Y:Y:Y:Y:Y:Y:Zd;Zd;d;~:d:Y:Zd:Zd:Y:Zd:d:p:Y:Zd:Y9Y9Y:Y:Zd:Y:Zd:d:d:d:Y:d;#d:d:Y:ʜ;p;Y:ʜ:Y:Y:Y:d;<%;1{:Y:Zd;Zd;d;1{:d9Y:Zd:Zd:d;<>;K:Zd:Y:d;5p:d:Y:Y;#d;~:d9Y:Y:Y:Y:Y:Zd:d:Zd:d;Zd;;Zd:d:ʜ;K;;K:d:Y9Y:Y:Y:d;;d;~:d:Y:Y:Y:d:ʜ:d:Y:Y:d:d:p:d;K<;1{:d:Y:ʜ<%:d:Y;Zd;1{:p:d;;K:d:Y;Y;;#d:Y:ʜ;<:2<(X';1{:Zd:ʜ<~<%;l:p;;;K:d:d;~ʜ;~ ;d:d:d;d;~ :ʜ:Zd;Y;1{;~ʜ:p9Y:Zd:Y:Y:Y:Y:Y:d:Y:Y:Zd:d:d:Y:d;5p:ʜ:Zd:d:ʜ:d:Y:Y:Y:Y9Y:Y:Y:Y:Y:Zd:Zd:Zd:d:d:Y:Y:Y:Zd:Zd:Y:Y:p:p:Y:Y:d;5p;5p:d:Y:Y:Zd:d:d:p:Y:Y:Y:Y:Y:d:ʜ:ʜ:p:Y:Y:p:d:Y:Y:Y:Zd:Y:Y:Y:Y:Y:Y:p:d:Zd:Y:Y:Zd:Y9Y:Y:Y:Zd:Y:Zd:Y:Y:Y:d:Y:Y:Zd:Zd:Y9Y:Y:Y:Y:d:d:Zd:d;Y:ʜ:d:Zd:p9Y:Y:Y:Y:d;Y:ʜ:Y:d:ʜ:Zd:Zd:d:d:Zd:Y:Zd:Y:Zd:d:Y:Y:d:Zd:Y:Zd:Y:Y:d;Zd:ʜ:Y:Zd;Zd;K;~ʜ:p:Y:ʜ;~ʜ:ʜ:Y:Y:d:Zd:Y:Y:Y:Y9Y:Y:Zd:Y:Y:d;5p:d:Y:Zd;5p;1{;Zd:Zd:Y:ʜ;Zd:ʜ:Y:Y:Y:Y:Y:d:Zd:p:d:d:Zd:d:Zd:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y:Zd:d:p:Y:Zd:d:p:Y:Y:Zd:Y:Y9Y:Y:d:p:Y:Y:d:ʜ:d:Zd:Y:d;Y:ʜ:Zd:Y:d:d:Y:Y:Y:Y:Y:Y:Y:Y:p:d:d:Y:Zd:d;Y:ʜ:Y:Zd:d;Y:ʜ:Y:Y:d:d:d:Y:Y:Y:Y:Zd:Y:Zd:d:p:Y:Y:Y:Y:Y:Y:Y:Zd:Y:Y:d:d:d:Y:Y:d:d:d:Y:Y:Zd:Zd:Zd:d:Zd:d;Y:d:Zd:d:Zd:Y:Y:Y:Y9Y:Y9Y:Zd:d:Zd:Y:Zd:Y9Y:Y:Y:Y:Y:Y:Y:Y:Y:d:d:Y:d:d:d:Y:Zd:d:Y9Y9Y:Y:Y:Y:Zd:Zd:Y:d:ʜ:ʜ:Y:Zd;5p;K;~ʜ:d:d;~;d;~:d:d;5p;~:ʜ:Y:Y:d:d:Zd:Y:Y:Y:Y9Y:Zd:Zd:Y:Y:d;5p:ʜ:Y:d;p;;K:d:Y:ʜ;~ < ;d:d:d;K;~ ;~:p:Zd:ʜ:ʜ:d:Y:Y:Y9Y:d:d:d:Y:d;Zd;K;Zd:p9Y:d;K;~ ;:d:d;;K;5p:Zd:Zd:d:ʜ:d:Y:Y9Y:Y:d:d:p:Zd:ʜ;Y:d:Y:Zd:d:ʜ:d:Y:Y:Zd:Zd:Y:Y:Y:Zd:Y:Y:Y:Y:d;#d:d:Y:Y:Y:Zd;Y;;5p:Zd:Y:d;5p:ʜ:Y:Y:Zd:Y9Y:Y:Zd:Y:Y:Y:Y:Y:Zd:Y:d;5p:d:Y:d;K<~;~ :d:ʜ<~<5p<Y;5p9Y:Y9Y:d;d< ;~ :d:Y:Y:Y:d;5p:ʜ:Y:Y:Y:Y:Y:Y:Y:Zd:d:Zd:Y:Zd:Zd:Y:Y:Y:Y:Y:Y:Zd:d:Y9Y:d:d:Zd:Y:d;5p:d:Y:Y:d:d:Zd:Zd:d:Zd:Y:ʜ;5p:d:Y:Y:Zd:Y:Y;5p;K;l:Zd:Zd:d:Zd:d<<5p<%;5p9Y:Y:Y;5p<><:ʜ9Y:Zd:d:ʜ:ʜ:d:Y:d;;;K:d:Zd:d;Zd;~:ʜ:Zd:d:ʜ:d:Y:d;5p;Zd:ʜ:Zd:Y:d:d:d:Y:Y:Y:Y:Y:Y:Zd:d:Y:Y9Y:Zd:Zd:Y9Y:Y:Zd:Y:Y:Y:d:Zd9Y:Y:Y:Zd:d;Zd;Y:p:d:d:d:d:Y:Y:Y:Y:ʜ;p;K;~ʜ:d:Y:ʜ;~;p;Zd:d:Y;5p;K;:ʜ:Zd:Y:d;;d;Y:d:p:ʜ:d:Zd:Y;Y;~ʜ:ʜ:Zd:Zd:d:Zd:d:d:Zd:Y:p:Y:Zd;Y;~:d:Y:Y:Y:d;5p:d:Zd:Zd:ʜ;~ʜ:ʜ:Y:Y:d:Zd:Y:d;5p:d:Y:Zd:d:d:Y:Zd:ʜ:d:Zd:d:Zd:Y:Y:Y:Y:d;5p:ʜ:Y:Y:Y:Y:Zd:Zd:Zd:Y:Y:d;5p:ʜ:Y:Y:Zd:d:ʜ:ʜ:d:Y:d:d:d:Zd:d;Zd;~;Y:Zd:Y9Y:d;5p;l:ʜ:Zd:Y:d:d:d:Y:Y:Y:Y9Y:Zd:p:Y:Y:d:ʜ:d:Y9Y:Y:Y:d:d:Y:Y:Y:Y:Zd:Y:Y:Y:Y:Y:Y:Y:Y:Zd:Y:Y:d:d:d:Zd:Y:d:ʜ:d:d:Y:Y:Y:Zd:Y:Y;Y;p;p;5p:p:Y:ʜ;Y;1{;~ʜ:d:Y:Zd;l;d;1{:ʜ:Y:Y:d;;d;:d9Y:d;Y:ʜ:Zd:p;#d;~;Y:Y:Y9Y:Zd:d:Zd:Y:Y:Y:d:Zd:Y:Y:Y:Zd:d:Zd:Y:Zd:Y:Y:Y9Y9Y9Y9Y9Y9Y:Y:Zd:p:d:Zd:Zd:d:ʜ:d:Y:Y:d:d:d:Y:Zd:Y:Zd:Y:Y:Zd:d:Zd:Zd:p:Y:Y:Y:Y:Y:Y:Zd:p:p:Zd:Y:d:d:d:d:d:ʜ;Y:d:Zd:Y:d;5p:ʜ:p:Y:ʜ;Zd:ʜ:Y:Zd:d:p:Y:d:ʜ:d:Y:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y9Y:Y:Zd:Y:Y:Y:Y:Zd:Y:Y:Y9Y:Y:Y:Y:d:d:Zd:Y:ʜ:ʜ:p:Zd:p:Y:Y:Y:Y:Y:p;~;1{:ʜ:Zd:d:Y:Y;1{<%<ӑb<~:d;~ʜ;~:d:Zd9Y:Y:d:ʜ:d:d<=){X=/+K:ʜ:Zd;Zd<(X'<%;:d:Zd:Y:p;1{<><:2;~ :p;K=8r=bZ=p#="4;:ʜ;d< ;;Zd:d:d:d:Zd:Y:d;1{<%<>;1{:Zd:Y<~;K:Zd:Y:d;K;;1{:d:Zd;~ < <+K<<<;:d:d;<1q;:d:Y:ʜ;K<%<5p<%;~:Zd:Zd:d:Zd:Y:Zd:Y:d:d:d:Zd9Y:Y9Y:Y:Y:Y:Y:p:d:d:Y:Y:d:ʜ:d:Zd:Zd:d:ʜ:d:Zd:Y:Y:Y9Y:d:d:d:d:Y:d<%< <%;Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y:Zd:Zd:Y:Y:Y:Y:d:d:d:Zd:Y:Zd:Zd:Zd:Y:Y:Y:Y:d;~ʜ;l:d:Zd:Y:Zd:Zd:Zd:Y:d;;;d:ʜ:Zd:d;K<~;d:d9Y:d;l;1{;5p:Zd:Y:d:d:Zd9Y:Zd:Y:Y;Zd;d;~ʜ:Zd:d;~ <5p<~:d:Zd;;ʜ;K:d:Zd:d:Y:Y:Y:Y:Y:Y:Zd:Y:d;Y;Y:d:Y:d;K< <;Zd:Zd:Y;~ʜ<5p:p;Y<%<<%<<ä<^W<:2:ʜ:d;K<;~ <><^W=%=<:ʜ:Y:d;<;~ ;5p;5p<5p<ܪ<ʜ<;1{;~ʜ<:2<;K:Y:Y:d:ʜ:d:Y:Y:Zd:d;d;Zd:Zd:Zd;<= f=HM<2;~:Y:ʜ;d;;~ʜ:d:Y:d;1{;d;Zd:ʜ;d< ;;~ <%<8r<%<ӑb:d:ʜ=<=<%;1{;~ʜ<:2<%<=<2;d:ʜ<<><%<<><1q;~ <^I<є<7<;~:Zd;l;K;~ʜ:ʜ:ʜ;5p;5p:d:Y:d;Y<>:d:Y:Y:Y:Y:Zd:p:d:d;5p;l:ʜ:d:d;;~ ;p:d:Y:d;Y;5p:ʜ:d:Zd:Y:Y:d:ʜ:d:Y:Y:d;Y;K;Zd:d:Y:Y9Y:d;~;p;5p:p:Zd:d:ʜ:d:Y:Zd:p:d:d:p:Y:Y9Y:d;5p;~ <><:2;d:d:Zd;K<5p<;Y:Y:Zd:d:d:p:Y:Y:d;~ :d:ʜ<5=u)=5p=,=[;d;d<5p:d;Zd<=Y=.=k};~ʜ;K<(X';l:Y:d<%;~ <(X'<<<<:2<1q<%;~:Zd:Y:d;Y:d:Y:Y;d:Y:ʜ;~ ;l:Y;d<ä==*=B:ʜ:Y:d:d:Y9Y;~ʜ;d:p;Zd:d;K<%=Y<ܪ;K<:Y:d<ä=B===n=HM<Y:Y:Y<:2= a=Jw=5p l>=t`=<%;~<=bZ=={X===+<<^I<:2<><=%=V=n=K <ܪ:ʜ:Zd==?>Ǡ>"=B=y:d<>=bZ==AU==8D;:ʜ:d;d= f=rG=/==@;1{:ʜ<=8D=|;=l=n="4b>=,=em;~ :d<^I=+=|;=޻=޻={a =(X'&Z>4s>)={X<2<#d=B=u=====Jw< &Z>8i>=E<7 |i==<1q;~:d:Y:Y:Zd:d:d:Zd:Zd;Zd<5p=+=[=@=/=B< :d:Zd;~J>!>`y=k}J>">=:<є;=E="4<%< ;d;Zd:d:d:d:ʜ;~;d;K;#d:Zd:p;5p;~;5p:d:d:Zd:Y:Y:p:d;Zd;Zd:d:Y9Y:Y:Zd:Y:Y:Y:Y:ʜ<~:d:Y:Y:Zd:d;d< <==u)<=<2="4=E=V=8D=8r;5p:Y:Y:ʜ;~ ;~ :ʜ;1{=Q=f=I=?=f<엑:d:Zd;~ =2==O=AU=N|=:2;~ :Zd;Zd<8r<=="4='4<=<8r;;K;~ <;d;~;p;~ <5p<:d:ʜ<5p<ä<ܪ;1{:d:Y;~;Zd:Y:Zd;Zd;d;;5p;K<1q<~;1{:d:Y:Y:d;K==:2=8D<ܪ;Y:Y:ʜ;1{;1{:ʜ:Y:Y:d;~ʜ;;d:d:ʜ<=7!=q$T=q$T=(X'<~:Y:d;<~<%;:d:Y:Y:Zd:d;p<1q:ʜ:Y:Y:Y:Y:d<1q:d:d<~< ;~ :d:Y:d:d:p:Y:Y9Y:ʜ;1{;~:Zd:Y:Y:Y:d;K<><~:d:Y:Y:Y:Y:Y:d:d:d:Y:d;~;~ ;Y:Y:Y:Y:Y:Y:Y:d:d:d:Y:Zd:d:Zd:Y:Zd:Y:Y:Zd:Zd:Y:Y:Y:Y:Zd:d:d:d:p:Zd:Y:Y:Y:Y:Zd:Y:d:d:d:Zd:Zd:Zd:Zd9Y:Y:Y:Zd:Zd:Y:Y:Y:Y9Y:Zd:p:Zd:Y:Y;Y;K;p:ʜ:Y:Y;~;Y:Y:Y:d:d:d;Zd<%<>< :d9Y:Zd:d:d;d;~:ʜ;5p;;~:ʜ:d:Zd:Y:Y:p:d:Y9Y:Zd;Zd< <5p< ;d;d<%<5p<%;1{:d:Y:Y:d;~;K;1{;K<%<#d<(X'<%;K:d:p:d;5p<><%=3==="4<;Zd:Zd:Zd:p:ʜ;d<:2:ʜ:Zd:d:ʜ;<=[=<$T<^I;:ʜ;Y;Y;Y;<%<Y;d;#d:ʜ;Y;ʜ<>:ʜ:Y:Y:d;~ ;d;5p;5p;Y< <<ܪ;~ ;~ʜ;Zd;Zd;<(X'<^I<%;Zd:d:Y:Y:d;d<%;:Zd;5p;K;;5p;l;K;d;d<;;~:d:Zd:Y:d:Y:Y:d:d:Zd:Y:Zd:d:p:Y:Y:Y;d<;K:Zd:Y:d;l:ʜ:Y:Zd<~<~;Y:Y:d;Y;~ʜ:d:Zd:d:Y:Y:Y:d<%<7= a=~<=+=|;=)= =X%=Q<2<%<=޻=\=p#=;c<9Y;l<%;Zd:ʜ<%<:Y:Zd< <^I:Zd:Y:ʜ<:2<엑="4=2=2=$=~=HM===bZ=YAU="4b=$T==k}=[=u)=$=3=O> >==@b>=ܙ=~;;p;Zd;K<~<;5p:Y:Y:d;~;~ ;K:d:Zd<Y<2=8r="4=+=){X='4=7!===+=[=E=`y=D=(X'=[<;E>|=c,=\<>:Y:ʜ=7!=d=->w> l==V<~:Zd;p<=8D=y==|==== G=D=O=T=4=D<%:Zd;;d:d:d;5p;~;5p:ʜ:d:Y:Y:Y:Zd:d:Zd:d;5p;Y;Zd:d:Y;5p;d<><;l:Y:d:Zd9Y:Y:p:p:Zd:Y:Zd;Y<1q<$T=*=+=[<%u)> f=I=E=="4="4=3=ϖ7> >r==pS=D==s==~=7!="4=E=)=>>,>%7a> =i[={X=q$T=p#=E>o>/>7!>r=<=:Y:Y<:2=<є==ǟ=p={a = a=[=8D=y=̾>|>>==,=X'==H===\5>"4>(>=d<<;5p:dE==K={X=em=+=5p=bZ=d=ä=O=l=em<:2;d=0N|=a=O=-=V=K=O=ܪ=A>==йh=SR=rG=8D=5p=[=>=ä=йh=!=l=q<$T=Y=h =a= =.=+;~ :d<=Mn= ==pS==H=YAU=Mn=Rn1=V=P'=8D="4==Q=+=~<=z==є=鿗=~ =0!=5p;K:Y:d<%;~==E=/+K;d:Zd;Zd<ܪ=A^W=3=f===h =`y=rG=p#=8D<%=>=+=HM<2;~ :Y:Zd;d >o===u)=8D=/+K=l=Y>>>=O=sj<%:d>%>!>.=-=!==}l=v=\5>!>%7a>E= G< 9Y:Zd>`>`y==l= =l=v=>J>z=))=<1q;~ʜ:d:Y:Y9Y:Zd;~<%:Y;~ =8D===-==O==O===7=̾= G=`y=7!=+=U==є=|=v=V<><><:2<>;~ʜ:Y:d;Y:d:Y:d;1{;d;5p:d:Y:Y:Zd:d:Zd:d;~ʜ;5p:Zd:Y9Y:Y:ʜ;~ʜ:ʜ:Y;Y<<%<%;1{:Y:Y:d:d:ʜ;K:p;Y<%<~:d:Y;5p<>=V=HM={X=d=)====?=^=5=;c:d;~ʜ=A^W=pS=SR==[=@;&=,=7!=8D=~;Zd:Y:Y:d<~<8r<2<є<%<=<;<ܪ<<^I<<=="4=<5p:Zd:Zd:d:p:d;Y;Zd;5p;Y;l;K;d;Y;Zd;d< <5p;~ :d:Y:Zd:Zd:Y:Y:Y:Y:Y:Y:Zd;#d<~;d:ʜ9Y:d;Zd;1{;5p:Zd:d<%;~ʜ:ʜ<~<%=.=7!= f<:ʜ:Y<%=u)=em==H=rG=U=:2=7!=<є=;c=@;5p:Y:Y<=/+K=E=7!;d:d9Y:d:ʜ:d:Y:Y;Y;;d<%<5p<5p;~ :ʜ:p;5p<~<1q;d:p:Y:Zd:Y:Y:d:d:d:d:d:d:Y:Zd:d;;d;5p:Y9Y:Zd:p:Y:Y:ʜ;~;5p:Zd:Y:d;~ :ʜ:Y:Y:Y:Y:d;Y;~ <:2<<<%:d:d;;d;Y:Y:Y:Y:Y:d:Y:Y;~ ="4=}l=== =Mn<:Y:Y;K:p:Y<=7!=h =A^W<+K:Zd<%=8r===QK=2==̾==7!<,:Zd|>`=y=kt`;K;~ ="4==;&=ܙ= u=={a =[<><%6>Mn>0= u=<={a =̾=>Ǡ==D=k}===<ܪ<==QK= =a= ==<(X':Zd=A^W=y6>;/>[>=c,=y6=8D<$T== =>=$T==)===޻= y>* >r=?=;Zd9Y;='4= =4===<~:p:Y:Y>> 12=O=m;~ :Y<(X'=H1{={X=>>=엑=2=<$T;d:d:d=@==>>o=1{=l<>:ʜ<^W=|;==> y> /=l=ǟ=޻=){X?>b=B==3="4;~ ;Zd:d:Y<~=8r=B=;c:ʜ<=^>r>MO>b>=c,=="4= 5=5=˛ >>> =o=D={a =$A>x>?>>.P=a=l=>8r>&>3&v>* >="=k}=V=8D=8D=kt`==Y="==%=Q:Y<1{=>C>>~>%>=c,=p==D>8r>$1>/>"> |i= u==h =Jw=H1{=rG=4=|=Դ==pS=~:Zd;p=>Y>d<>>i->pS= =:2=/=O>`y> f>K=̾>=d=q$T=D=2='4=8D=[={X=I=d=bZ<<:2==))>>b=d=B:d:d;p<8r===H1{;K:ʜ<7==I=O=AU= =a==<;Y:Y;Y=H1{=̾> 12>A >޻=s=f<5:ʜ l> 12=B=ä= =@o>J>%=_=f<<=B== >>>>=йh=== l>Ǡ=LZ=;&=M"=8D<;1{:Zd;5p=8r=}l==)=V<;K;d<^W=D=pS=h=T=ǟ=!==`y=;K:d:Y:Zd:d:ʜ;5p;Zd:ʜ:d:Y:d;5p;Y:ʜ:d:Zd:Y;~<%;~ :d9Y;Zd`>=V==H=%===˛ =O== =5p=J>0H>oW>>[>>=h =8D==ܪ>`>>P>==y=8D=Y="4=Sb===6P=!=>e{>4>%@>>EM==y=;&> >.>:>3&v>"=鿗={X=q$T=QK=bZ= ==V==AU={X=5p:ʜ:d=8D=G>hg>>?>8>W=O=pS=^W> 12>, >8D>-v>r=_=X'==h =p#=)=є=g==AU={X=3:d:Y0>`y>G>a>,=X'=h =Cw=i[>Ǡ>>o=_=q==bZ=C=B=p#=d==|==r>.>==5p<2="4= ={X=I={X= =[=/+K=Y<>;d;Y:d:d:ʜ:ʜ:d:Y:Y;#d;K;5p;Y;d<5p:Y:d >=1{={a 5>=Y=|;<< <$T=p#=?=y6>>>=t`=є= =2<;:Zd:Zd<===i[=˛ ==;c:d:Zd<;Zd:d:d;> f="=u$1>\>k+>A==H1{=Y={a =h=>8r>`y=߂==h = fPh>>?>>*U=d=m==V>)> >>=Y= =E=7!=Mn=3=!=AU==1{==Q:d;1{===m>Q4>>c>>7!==}l==߂>>>)=x== =\=H1{=`y= ==ܪ==D== 5:p:d>g>K>`>`==8D={a ===))=I==k}=kt`=;c=3=8D=kt`=a==є={X=h ===~<=/+K=Y< ;Y:Zd:d<%<<%;d;:d:Zd:Y:Y:Y:Y:Y:d<><ܪ="4=*=8r<;:ʜ:Y:Y;5p;~ ;d:ʜ:d<~=(X'=Jw=7!<5p<<$T=+=X%=rG=p#=V=.<ܪn>(>o=d<=f=:=p=!=d=bZJ>ID>Y!>5$ ="=8D<ܪ===޻=c=йh=O=h=f=/+K>ID>^}>9==D<===)== u=Y==[=5p<;==(X'=bZ==I=!=k=K <5p:dz>+> =0!=u)<%;;5p:ʜ;Y;5p:ʜ:Zd:Y:d;~<5p;~ :d:d;Zd<~;d;5p:d:d:d:d:d:Y:d;5p;~ʜ:ʜ:Zd:Y:Y;Zd="4=kt`=l=){X<(X':Y:d<><<1{;~ʜ9Y;d==/=h===%;Zd:Y:d;5p:Y:d:ʜ:ʜ;p;d:d:Y:d:d:Y:Y:Zd;5p<:2<~;~:d:Zd:Zd:d;~ʜ;d;;:Y:d<%<==7!=7!<ܪ;~9Y:d<~;:ʜ:ʜ;K<>;K;Y:ʜ;d<5p<<~:p:Y;Y<~<~;Zd:d:ʜ;Y:ʜ:d:Y:Zd;5p;d;;d;Zd:d:Y:d:d:d:Y:Y:p:p:Zd:Y9Y:Zd:Zd:Y:d;5p;Y:d9Y:d;l;K;K;Y:p:Y:d;Zd;1{;1{;5p:d:Y:Y:Y:Zd:d:ʜ;Y:d:d:Zd:Y:Y:Y:Y:Y:Zd:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:Y:ʜ;;Y:Y:Zd:d:Y9Y9Y:d;p;;:Zd:p;Zd;1{;5p:d:Y:d:ʜ;Y:d:p:Y:Y:d;Zd;p;5p:Zd:Y:ʜ;d<%;;K;d<%<5<>;Zd:d:d:Zd:d;<:Zd:Y:d:ʜ;K<:2<:2<>;d;~ʜ;~ʜ;<5p<:2;K9Y:d<<<ܪ<1{<;d;~ʜ;Y:d:Y:Y:d;Zd;:d:ʜ;~ <<%<%==8D=E=3<;<~;Y:d:Y:d;5p;d<%<;d:d:Zd:Y:Y:Zd9Y:Y:d:Zd:Y:Y:Y:Y9Y:d:ʜ:Y:d:ʜ:d:Y;d<<2=Q=~=q=D=f=[< <><<ܪ= f= f<%<<8r<%=@=+=<(X':Y:d<>:d;1{<%=$=7!=Sb=|;= =%=d=d=.=`y=[;;~ ;:Zd:d<2={a ==2=4=[ />pS=~=X'="4;K:ʜ >;c>A>q==K >C >GJ> =6P=Jwu> y>Ǡ==|=O=LZ>b=-==8D;~:ʜ<n>!>b=="4J>3&v>+0!> Y8=̾=B=/+K===->|>,>8D>=;&=;c;~ =`y===c==<є=5p=h =4>K>7>U>H>%7a=o===y=O>&>Z>h3>?==|;=V=D==h==4?="4=\=a=߂>!><є>6G<>pS=V=v=f=Y=,>>MO>ZR>5$ =s=bZ< ;Zd<=rG=M"==+<<є=HM=l=9=O==鿗= u==3=bZ=kt`= G="> y>)==k}<~ :d;5p<>;~ ;d<:2<ܪ=4?=\=sj={a =n=QK=){X=;~ ;#d:p:Zd:Zd:Y:Y:ʜ;d<5p`y> y> Y8=t`=h==H="4=~===pS=;&=O=D=q$TE>)>">.>$> =ӑb==K =8D==D=> =LZ=Ə<엑;~ =E=h=e> y> l>|>>%> >)2>>=J==D=8D={a =!=>=A=SR<=:Y;d=5p={X=ܪ==g==O=~ ===-===`y=HM==2=y==ܪ===f==5= =3={a =QK=(X'%>B>J/>&=˛ =U==c=c,===-==h H1{>:>j>[>=[<7= f==H=> f>* >=c,>>]>* > >o>%>#d> G==:<ܪ:Zd;<5=8r=> y>Y!>.>>g0j> y=<==+==->n>A#>[Ѓ>[Ѓ>A> >>)2>4s>)2>=Ə9>i->n>;c==[Y>.P>A>@̾>+>> 5>>n>pS=~ = pS>pS==/<ܪ;d|>=<====V=O=d=2;~ :Y:Y:d;d<ܪ=em=M"= =Sb;~ :d:Y:Y;Zd<(X'< >96>/>`=1{=f=*=5p=k}=#>!>,>`=!= a;Y:ʜ=={X> 12>">`==޻===ܪ>5$ >|;o>>w>f>* ==Ə= >E>K >4>)>n>J==c,>Zd>=c,>=q=k=D> l>X>>!>r>P>W>=ܪ=_>* >I>q>c,>>C=є96>T">8D====>>D6P>>>=l>_C>Mn>=~ =y6>([>{>>U>!>>:=!<:Y:Zdr=B={X=bZ=QK=y=> l>9h>V(>Mn>79>= =h==A>8D>n>{>MO>b=p#;~ ;Y<%;~ ;~:d:Y:Y:ʜ;K;d;Zd:ʜ;5p;~ >>>>n>4?>=c,>7!>=LZ= =m=f=HM=O> />E>==HM:Zd%>8i>7!>.>4s>F~>`>jd>]<>;>%=˛ ==M"=> Y8>9>Mn>8i==sj;Zd:Y==SR> Tc>9>KRA>GJ>:>:Bf>K u>aB>i->Y!>8i>`= u=a=HM=2> >A#>`>F~>~=8r;K:Y<ܪ=Cw==>(>9>5$ >$> >+x>96>:Bf>,>=ܪ={X==sj=k}=>>>:2>)$=ۇ=Jw:ʜ<>=U==LZ>>=m=s=׌=B=ܪ=Y==f=V=$<;="4=~=є=y=|=8r;~ʜ;5p<(X'<$T= a=O= =;~;Y%>[Ѓ>b>5$ ==V<8r<2=:2=%=|>`y> G> >)=-=ܪ>b>,\> =B=%<$T:Y:Y;~<:2<ܪ=HM>Y>j>><>wx>=y=8r=4?=M"=_>q>L,>q>{>>a7>96>&>4s>@̾>9>pS=;&=8D:ʜ:Zd<~<="4=>"_h>>$>,>>=޻=%=H1{=0!>8r>9>o&>v^>!>>Xf>?>GJ>T">F3>>= u=C;Zd:Zd;~ >[Ѓ>w>>`>=t<ܪ=/+K= G=o>* >X%>}^>a>jQ0>A^W>/>8D>=c,>1y> y==:ʜ:ʜ< <>===2>%>6>79> y==8r<~<є=QK==Q0>>,SR>1y>n> |i=l>>> Y8==є=p#< :d:d;Y<%== =+K={X=<=;~:p;~ʜ<8r=+=|;=a=?==!={X=k=a= G=3=H1{<1{;~:Zd:Y;ʜ<;d:d:Y9Y:Zd:d:d:Y:Y:Y;Y<5p<$T=2=8D=Y />EM>fV>[Ѓ>7> =є=`y==>>A>Ix>(=O=7!:ʜ<>=[=LZ>@̾>av>F|>.=^W==>>aB><>/>!>>b>>=I=i[>n>vG>7a>N|>P>5$ =v%>~9>!>>79=鿗==>.P>>̾>Z>^{>`>[>M>J>%>MO> >Դ>>>k-=ܪ<$T:Y<>=)>>>ycu>v^>{>>.P=i[=h=AU>"4>ycu>MG>L6>Ηm>t> >M>>pS>MO>BB>йh>^{>>fV=K0>Jw>2ݪ=엑= =y=v=o>.>j>3>Y8>uhK>Mn>==> >fV>>9>F>!=޻<<%=7!=Ə==v=h =Q=Y=\=޻==鿗>>>K=y6=є==d=є=9>>n=l=%<:Y:d<~;K:Y:d<~`y==i[={X=QK<==Y=bZ== =O==kt` y>> G>%> >2ݪ>F3>OMk>C>([>==[==N|=G>!>2ݪ>= u==:ʜ:Zd=HM=h>pS>A#>Xf>U>GJ>ID>b>{>>>qm >K u>n=V=q==AU>>>Xf>q$T>X>)=M"<>:ʜ===O>)2>Y!>pI>lN>[Ѓ>Y!>k->>F>tE>K u>>=-=!=!=>(>i->>q$T>%=>F|>_>Y!>EM>>]>G>X>Y!>F3>%>b==k= G=2> >EM>i->S.>=y<>:Y>$>n>r> Y8> >u)> =e= u=4=8r=V=8D=h =>K>> =D="4:d;5p==B==c=={X=%=)= ==X%=2=Q<$T>F~>H>t==){X<><= a==!=>t>+x>===\5> > 12=I==:Zd:d;~ o>^}>>M">`>K=em<є===ä>'>K u>{>>^>tE>F3>.>7!>@̾>8i>pS==B;Y;~ G>y >^2>->{>> ={a <엑=3==))>4I>q>l>>>>k->ID>K >T">EY>>=O=U;p;Zd<5p<ܪ= > l>V>3>>Sb=鿗=QK<=޻=l=׌>#9>\>^>v^>>}>WX>:Bf>:2>=c,>/> y==+;5p:d;1{<:2=){X=> >2E>0>=HM<ܪ;<=5p==I>HM>8>C>7>> l>Ǡ>==c=sj<<=@=0N|=Y<;Zd:ʜ<5p<>:Bf>Y!>R>4s> =J= =[=> 12>2ݪ>8i>'=<:Y:YA>e{>K u>=ǟ==^W> Tc>V>o>q>O>N>g0j>)$=))=ۇ>>em>K><>~>ҥ= ;d:Zd<є=@>$>~9>o>><=N= =>+>>>ճ]>ֲ(>db>pS>Xf>f>>F3>pS>>ܙ>>SH=2d=>x@D>,\>}8>4?=Z==AU>n>k->>6P>I>q>,\>W>n>>GW>V>6P>4>>QK=;d=<є=">1(>M>79=B== ==))>(>\>><>w>WC>&Z>|=>n>`y>>>we>޻=;5p<%=8D={X=|=p=rG=Y==]===ܪ=>b>=== ==^W>`y>t>=~= <^I;~ :ʜ:d:d:Zd:Y:d;Zd;d;;d;Y;Zd:d:Y:Y:p:d:d:ʜ;~;<%;d:d:Y:Y:Y:d:d9Y:d<5p<<엑==/+K=7!=8D=D=B=(X'<;5p:d;~ʜ>>>w>r>$\>79>;e>/>=߂=d=p#==H={X=V>>!> ==.:ʜ:Zd= a=>%>:>Mn>IT>?>@̾>U>iv>n>^}>9>Y=O=4= =>J>GJ>`>F3>=~<1q:d=@;&=O>$1>S.>j>f 9>U>R>b>rQ>vG>aB>=c,>===I=ܪ>n>[>{>d<>=@<5:d=.=2>>C >Y!>U>B>=`>D>OMk>Mn>:>==D===> Y8>=>`>ID> = >&>">pS> y> y>> 12===a==O=5p=n=>|>> ==7!:ʜ;Zd====Y= =p=^=d= G=y=h =5p= f<ܪ=u)=sj=pS=[="4;d:ʜ%>%=i[=|>)> l===,=B=ܪ=h={a <:d;~ʜ=$=>&*>Y!>WX>>=<=;ʜ$>Rn1>hg>Y!>1(>'>J>n>==X'=Y:Zd:Y;#d<>=V=V>=>v{>sj>6G<=]=<5p<=8D=0!> >F|>{>>7>\5>T">2ݪ>/>2ݪ>$>=E='4:d:Y;Y< =7!=Y>%>R>Pp>z={X=H>8D>f 9>{>>k->C[>$>>>t>u)=߂=<$T:d:p:ʜ l>==Mn<>:ʜ;Kb> >3&v>+0!>Y==I="=^W=a=8D<%:Y:dE>>> Y8=I=SR=m=Rn1=.=J=x=r=;&=QK;K<~=){X=!>>/>>= =4=y=d=йh>>R>we>y >_>8> ==I=<>([>R>WX>,SR= <=:Y:Y<^I=h =LZ>?Z>b>ID>===>E>;/>{>G>>V>hg>/>|=->>W>X>>f> l=V:d<(X'=Zd=2>9>Y>C> =D==?=N>.>e{>[> a>z>b>.>=>>Y!>5>>i-> Y8=V:d:ʜ<==d>>> y=c,==[=y==>>4I>=c,>;/>*>o== u=e>,>S.>Y!>,=;&<엑:Y;~ʜ<%;~ ;Y:d:d:d:p:Y:Zd:d:d:d:p:p:Y:Y:d;5p;5p:d:d;~ʜ;:d;d<=H1{=p#={a == =9={X={X= G=|;=HM<:2<~=2=߂="=߂=l> > >?=O==P'='4=8D=8r=D=~ == u=y<1{:d<==g>>%7a> >%>>)2>8>96>(> =O==|;=[=SR=鿗>>'Ə>%=^W=8D;d:Y<;=SR>>,>=c,>9h>,>+>79>A>@;&>.>=׌=Ə=5=y=?=A>(>* =m=l<>:Zd<%= G=j> a>4s>/> >>n>* >$>)=鿗=!=/=h =`y=%=">>,SR>==[;~ <1q=V==> y> =x=y6=y6=-=ܪ=c,==n=:2=~<2=(X'====AU= G=:d:d<=`y=k=q=v=a==y==em=5p<=<<7=~<<<>=m===q$T<ܪ;Y:Y;Zd<%={a =E=Y=c=a=8r====m=:ʜ;d=QK=c====8D;~ :Y:Zd;~<є=3=">)>&^>>b=,=D==6P==Jw<%:YY> =6P=QK<%:Y:d<~="4=> l>2ݪ>F|>=>A =\5==))=د=E=bZK>%>9>2ݪ>'==i[=,=2==7!<~:d<1{==Ə=9=`y l>==!=a=y={a =7!E> |i>=B==8r=bZ=y=є===X'=u):d;Zd<=~=йh>`y=엑==h =8D=em=a=O> l> >(>!>`=ܪ==q=p=>J>==p#;d:ʜ>J>J> f==?=Ə=>b>t>i=y6={a ;~ :Y<=q= =v==V<ܪ<ä=Y=bZ=)=0!== u=׌=D==pS= =a= u=B==!=0N|:ʜ:Y;d<^I<<<$T=2=^I=n=`y=3<%<~:d:Zd:d<><7=$="4=2== =y=y=:=I=є==d=p#=Y<<>==,=m===O=X'=m="4=N==g=B>>|==N|==9h=[==V=Ə=O==1{=/<=;Y;K=/+K=X'=ܪ=j==AU="==V=AU=2=M"=Rn1="4<^W=){X=p#=f=.;:Y=%=9=,=V==h= =bZ=;c=+<ܪ;~ :Y:ʜ<=8r<=<^I:d<5p=V=a=={X=y=D<=:ʜ:d;Y=Y=YAU=l=D<;:Y;1{=~=p#= =y=[=3= =M"==H1{<ܪ<1q:ʜ:Y;Y<є=4?=Jw=7!<%;d:Y:d;~:d:p:Y:Y;~ʜ<5p<(X';~:Y:d<7=QK=h =QK=%<<~;~ʜ:ʜ:p:Y;5p<~<~;5p:Y:Y<1{=A^W=`y=D=~<5p<;5p:Y:Y:d:d:Y:d;5p;5p:d:Y:d;Y;1{<%;;5p;5p;d;~ ;Y:Y:Y:ʜ:ʜ:Zd:Y:d:ʜ;5p;1{;~ <%<>;;~;d<<>;K:Zd:Zd:Zd:Y:Y:Y:Y:Y:d:ʜ;#d:ʜ;<~<~;Y:Y:Y:Y:d:d:ʜ:Y9Y:d;Y;:ʜ9Y:Y;1{< <<̾>:Zd:Y:d;Zd;Y:Y:Zd:ʜ;~ <<==/+K===7!=<%;p:d:Y:p:Zd:Y:Y:d;Zd;d<~<:d:d<== a=B<~:d:d<=='4<ܪ<%:d9Y:Y:Zd:d:Y:Y;Y<<~;Y:Y:Y:Y:d;1{:ʜ:d;p;d;Y:Y:d;5p 12>%7a> =0!== =u)=1qr>3&v>t==$<=p#=̾=>=o=c=f=.<7<є ==<~ <(X'=(X'= = =O== =8D<%<2 >E=̾=QK;Y:d<=8r=D="=ܪ==a=8D:d:Y:d=H1{=|>>"4>=鿗=f<(X':Zd y> /=l=Y= = f;:ʜ:Y:d=7!=c,> f>@>=y=~<^I;~<$T=f=1{>>>>> l=i[=k=8D > ==ä=޻=0N|<:2:d:Zd;5p:Y9Y:Y:Y:Zd:Y:Y:Y9Y:Y:d;5p:d:Y:Zd;~ʜ< <%;d;#d:d:Zd:Y:Y;d >Ph>k->G==Jw=7!=0!>>!>2ݪ>, >%=i[==H1{="4=~='4={a =4=={X=}l@̾>>>'>A=c=M"=>:>F|>WC>IT>,>`y=!==H=Rn1===h =d=|=AU=1{=d=){X:dF~>>s>>X=ܪ=d=I>!>EM>SH>EM>&*=B=?=8r=bZ=K =p#===ۇ=1{==$:d:d=l>pS>t>%>>}>1y=!={a =?>>n>+>>=H=є= =`y=:2=(X'=8D=8r=0!=D={X={a <2;=~>8r>)2>P==A^W<=C=^= u=ӑb=̾==bZ="4=<ӑb<<ܪ=7!=:2=޻<є<%;~ʜ:d:Y:Y<~<1{= 5=B<;d:d:Y9Y:Y:Y:Y;t>2ݪ>(>=a<:Zd<>=C==m>~> f==;&=8r=8r<;~ʜ:d<:2=%>>8D>K u>A^W>z=c,=%< =޻=f=>>.>/>==l=h <%<,;~ʜ:Y<%= >|>2L>F3>=c,>=2=){X<=Mn=p>>+0!>?>=>* >Ǡ==l=Q > >J=))=<=<2=QK=q=>n>5$ >2ݪ>C====B<1q:ʜ<~=V=N|=D=;&=%=){X<^IK>w> y===pS==<є=.>=c,>=q 12>>z>~=˛ =pS=K =@<==HM=`y=%=X'==\<>:Y:Zd=7!=>Y>q>{>>C==a=->*>R>f 9>]<>=>'=O=%=q$T=h =3==I==I=E=D;p:d={a >>pS>G`>+>Ҷ>%>=د>pS>M>{>6>>_˭>.P==&v=M"==0!=> 12>> Y8=ϖ7=[ G>E>ݩ>N>7><>/+K=鿗>>Luq>y >:>{>WX>([=o===޻==B> >'> |i=ϖ7=[n>jl>&>>I> =є=>)$>H>W>G>,>===~=|;=)=є=鿗=x=B=q=A^W;~ʜ:ʜ=:2>b>X>>hg>f=X'=a7=HM=">> >==X'==V=7!= a=5p==d===V<~ʜ:Y<= ===h <1{<;K;#d:p:Y:Y:Zd:Y:Y:Y:Y:d;p<~<;l:d:Y:Y:Y;~ <2=8r=B<<>;K:ʜ:p:Y:Y:Y:Y:Zd<~<=A^W=p#=n=9h<^I===H1{;K:Zd=A^W=k}=h==+K=[=Y<%:d:Zd<~= =o>(>;c>2ݪ> =%>>= u=)=){X<8r;:ʜ<>=4>Y>A^W>Y!>M >%==D<=8D= =>&>=c,>=c,>(>=є==Q y>=`>T">GW>!=O=V=8r=p#=>Y>9>Qܙ>OMk>79>Y=O=޻=5p>.P>%>=0!=3=[=rG=> 12>0>C>A>* >8r==y=*<>;:Y<==c,=_== =Mn<є<є=@;&=d=> >i>>`y=D==[<~ <%:d<Y=u)=H1{=@;&=~>K u>]<>7=O=7!=8D=a=<>>%>$1>%=I==h =5p=(X'=D=3=v===u)>|>s>ŢM>0!>_˭=ܪ=q=A>2ݪ>[>nLZ>g0j>GW>===~=l=d=̾>>|> 5=G==h <~<%=>9>{X>Q0> >T>>/t=>>WX>> a>q>i->8i>>==d==̾>>>$\>=-=9>~>"?O{>>uM>@̾>b>>U>\5>>>av>2>==4={X=ä>:>>&Z>%=鿗= >3>v>|>*:>>=O>|>.>Pp>_>R>5$ > =O=X'=M"===ܪ>Ǡ>`>b=̾=h <~=5>>vG>>~ʜ>.=D==H=d=ܪ> |i>Y> l=s==.=rG=QK=;c=em= G==̾=N|=}l;1{:ʜ:d:d:d:Zd:Zd;Zd;:Y:Zd:Zd:Y:Y:ʜ:ʜ:Y:ʜ;K;d:d:Y:Y:d:d:dpS>* > ==a>Ǡ=LZ==[=Y|>/>C>:Bf>'==8D<=+= =y6>>0H>0>z=o=q=h =,SR>?>8D>r=c,=Jw<==`y=D>>.>A>@>)2>=є=[='4<;K:Y;5p=<є=> |i>>pS=t`=a=){X==em=l>b>">7>4s>z=))=I=}l=HMb> > =y6=D= ==<$T<^W<:Y:Y<7={X> >F|>!==){X=Y=8r==> >`=A=;&=5=8D=~= f=8D====a=[o>g>>O>J>=c,===O>J>:2>K u>F|>0> 12==f=jQ0={a ===>|=y6=E=@;&;p+>ذ>ܙ> >>>u)=|>>8i>`>oW>i->IT>n==X'=u)===>>> /==8r* >>ي!>))>j>M">@=йh>>6G<>[>k+>aB>B>z=ܪ={X=%=k=c,==>>>=F+=8r=B>oW>L> >q>m))=G=E=>%>2E>=`>5l>==!=޻= =3==>>o==l=B;p:po>R>qm >V(> =pS=K ==D=߂===ä=d==Rn1=7!=7!=`y=HM=l=h==`y="4=%=h=4=V<<%<=@=bZ={a =p#=QK=*<=<:Y:d;;K:d:Y9Y:p;<(X'<=5p=|;=={X={X=%=p#=8D=<$T<B>pS> /==<=<> Y8> l===='4<>;K:p;5p=8D=D>>%> 12=د=M"=Y<=$= =D>>>pS>|=6P=pS=;c > l=V===7!<;K:Zd:ʜ<==q$T=޻= =bZ=[:d={a =O> >%== <є*>b>pI>GJ=j=rG=7!= ==9>>===8r=+=Q=3=rG===Y=?=<є:Zd9Y<=bZ=>V>pS>_h>Y8>0H=+K=[==>>+>([>==d=em=E=n= G====AU=="4:ʜ:Y<5p=V=엑>V(>>}>>:Bf=h=y=E=>HM>&>:> =׌=a=n=V={a =d= u====ܪ=4=$:ʜ;d=%=q>">k->>c5?>)=M"=U=y=c,=LZ>:>?=ܪ===H1{=8D=Rn1==E=˛ ===8r<1{:Zd:p>>|==$<=8r=n=@= =X'=M"=em=(X'<=<%<==/+K=p#= =/=p#=;Y:Y;K<1{<є;~ ;5p:d:Y:ʜ==8r<%;d;5p:p:d:ʜ;Y:d:Zd:Y:Y9Y9Y:d:ʜ:d:Y:Y:Y:p<=Y="4<%<:Zd:Zd;~ <<> l=i[=~<=޻=QK=|;==K <є:d;5p<=u)=o>#d>.> =v=Q<5= a== =̾= =E=[='4n>.P>`=v=u)b=,=|;;Zd:Y:d;Zd;<(X'<;d;K<<<:d:Y:d;5p;d;~:d:Y;~ʜ;~ :ʜ:Y:ʜ;~ <,<%;Zd:Y:Y:d;~;1{;~;~;~ʜ;5p;Y;l;d< <><~;5p9Y:Y:Y:Zd:Zd:Y:Y:Zd:p:d;5p;K;:d:Y:d:d:Y:Y:ʜ;K;:d9Y:Y:Y:Y:Y:Y:d;5p<~<^I;:ʜ;Y;K;~ ;~ ;K:d:Y:d:d:ʜ;K;p:Y:Y:Zd:ʜ;~ <%<~;:d9Y:Y:d:d:d:Y:Y:p:Y9Y:Y:Y;5p;1{;5p:Y:Y;Y;~ <%;ʜ;Zd:d:Y:Zd:Zd:Y:ʜ<~<(X';d:d:Y;<$T=@="4=~<<5p;K;K<<~;~ ;Zd:Zd:Y:d;Zd;Zd:d9Y;Zd<;:d:Zd:Y:Y:Y:Y:Y:Zd:d:d:Y:Y:d;Y:ʜ:Zd:Y:ʜ;d< ;;l:Y:Y:d;d<5p;~:ʜ:d:d:d:d:Y:d;K<1q;d:ʜ:Zd:Y:Y:Y:d:p:Zd:Zd:d:d:Y:Zd;Zd;d;K:ʜ:Y;Zd< =5=+<%:Zd:Zd;1{:Y:Y:ʜ<2=p#==c={X=q$T=<:2<~;d;~;5p:ʜ:d:Zd:d;Y<~;:d:p;~;~ ;~ ;K;d;d;~ʜ:d:Y:Y:d:ʜ:d:d:d:Y:Y:Zd:p:Zd9Y:Y:d:d:Y:d<><є<ӑb<<є<엑= f=Y=8r<<ä>t>6=h=;c<:2;~ʜ Y8>:>F~>* =_={a <є>@>Ix>, ==<> >8r=="=I==G=AU==HM:d9Y:d;Zd<є=3=>>#d> =h=`y<~:p:Y:Y;Y;~ʜ:ʜ:Y:d>&Z>n>E===,=7!=޻=I>>>b==/+K<~:Y;K=5p=f=I= G=V=Q=8r=B== >(>D6P>=c,>=s=={a ==̾>>=c,>GJ>&Z==kt`<^I:Zd;K=/+K===%=E=B>5$ >.>%=AU=^==[=>>7!>=>= u=]<5p:Y:d<=:2=h =;cE="==;Zd:d;d<(X'<~;K;5p;Zd;~ <= a=em=~=f=}l=Rn1=;d:ʜ:Y:Y;~ʜ<<~;K:d:Y:Zd:Zd9Y:d;~ o=LZ=<7:Y:d=HM=="=-=i[=;&=c,=йh==m=̾>==B=7!<엑<ܪ=Q=rG=?=O=={a <(X'<><~;d;~;5p:ʜ:d:Y9Y:Y:d;Y:d:Y:Zd;5p;:ʜ:Y:Y:Y:ʜ;l:d:Y:Y:ʜ;~ʜ:ʜ:Zd:dr>n> =2=Jw4s>t>>[>%=k=@<==V=+K=>>!>:>==>> 12=9==p# >pI>c>R>>:Bf==V=Rn1=^>>2ݪ>V(>jQ0>f 9>GW>-v>)$>6>:Bf>+>8r=<ܪ:ʜ;~ <2=>J>~>S>k>">A=Y=bZ=p#=>>GJ>oW>F>~>av>@̾>:Bf>F|>Jw>9>u)=N|<=:Y:d;K<=8r>>UF+> a>N>v{>n==8D=P'=>Ǡ>7!>W>h3>a7>D6P>,>* >6>9>([=e=pS >5$ >=c,>= u=n>>>">o==>~> l===7!;~ :d:Y:Y;1{=~=f=?=D=a=Rn1<;ʜ<~<є=D=/=X'=SR=Ə=Cw=pS= G==d=[=){X<5p:d:d:d:Y:d<ܪ=|;=="=O==em<є;~ <%|>79>R>F~>"4=y6====P'=SR>o>2ݪ><є> G==C<~:Y:d=(X'=;&>Cw>4I>z=O==u)=SR=e>IT>>x>d>>=>=!=2>޻>f>>>l>.P=E l>R>mq>K u> =i= =|>>x@D>>>,>>q$T>([==l>=>pS>I>Վ>s>b=߂=5p;5p;~ =rG>>>K >hg>EM>E==d=>>f>~>>a>>k+>)2=x>>=`>v^>ˉ>L6>+K>\=ܪ=+:ʜ:d=Y=>>#d> f==t=l=k="> a>b>>~>Y!>.>`y=Y= u>u)>QK>3>J>t>=do>=y6=ä=d=8r=8r=^=AU> y>%=t`=@=:ʜ:Zd;~ʜ;~ ;d;Y:ʜ;~ʜ<%<є='4=Sb=l=l=a7===޻<%;K:d:Y:Zd:d:p:d:ʜ;K<%;~ :ʜ:Y:d;<<;K;~ʜ;<><<(X')>>=>R>Mn>C>GW>`>z=>>vG>R%e>"_h=-=v==̾>z>Z>|;o>f>=d<:Zd= a= >$>U>j>d<>Sb>QK>d>{>>>nLZ>GJ>z==0!=k=|>!>k->2g>}l>1(=>@>T">Jw>9>2ݪ>=c,>J>K>;c>=Q0=E= =8r={X>^>D>k->X>= <~<1q={a =O> >">%>b=t`=>===!=.=`y=.="4=Jw=d=o>>~==~:d:Zd<=bZ=:={X==8r=l=l=em=B=@<엑<^W;;d;~;Zd:d:d:d:ʜ:d:Y9Y:Zd:d:Zd:Zd:Y:Y:Y:Zd:Y:Zd:d:Y:Zd;~;;K:d:Y:d;~ʜ;;5p:d:p:d:d:Y:d<=+=A^W=.<є;:Y:Zd:d;5p<%<> >D6P>Tk>3oB=鿗=B=-===йh=V=ۇ=l=h <8r:Zd:ʜ<>=>Y>|;o>O>!>l>?==h =^I==>.P>WX>t>uhK>ZR>5$ >(>79>?>5l>)==+:d:Y;Y<~=[=̾>KRA>pw>>>>>=%=f=y6>79>y > >p>p>>_C>m))>we>~>m))>===sj;p:Y;av>Z>B?->>f> /=d=0!>>Mn>>>>n>!>y> >3>.>d>Jw>=B;:Y;Zd<5p= a=̾>?`>>װ>A>/>i== =HM=>=c,>~>4>6>i7>>4>t>{>>~>i->6=s=V;:Y:Y;Y<=B>|>L>>3>>m))>={X=5p=O=p> y>:Bf>av>{>{>>`y>>]>5$ >;/>=c,>+0!>K=a=;~ :d:Y:Y:ʜ[> ==a="4<1q< =8D=d=O=>>=o=ܪ=ۇ=y===3=% 12>n>J=A=D=h |=O=3<^W:ʜ;Zd=){X=>Cw>5>d==_=v=9=E>>L>>%>U>>E>@;&>==>Ǡ>R>>>u> G=q<:Y:Y<2=>;>>_h>.>C>=<>>GW>> ?O{?>_>c>Z>>">b>s>>d>>3>=D;5p:Zd=$=>ycu>C>Ηm>!>{>>>`y>z>sj>Sv?\?HM??B>4>>J>F~>)>???>>4s=y;엑:Y= a=y6>qm >>>D>pI>=>pS>f>>?O?O??>,>>OMk>Ix>>⣧?ғ?I?t>6>3&v=f;~ <>=d>.>z>N>~>,=O==->.>:>>ݩ><>;&>>_>'4>">aB>0!> >j>ܙ>>`y=8D:d:Y<=={X>> G>==l=em== u>)>@̾>^>\O>F~>,SR>=O=O>Ǡ>=c,>u~>=H>WX> l=8r<1q:Y<#d=~=7!=Y>S.>>>=>MG>vG==k}:Y:Y="4=> G>IT>av>[>C>8i>;e>A#>=c,>* > |i=O={X= =5=v> >Q4>|;o>k+>"=d<^I;=D=E=t`>:==߂=Y= === G={a ===(X'=<̾>=Q==̾==ۇ=<ܪ:Y;d<==Jw=em=Mn=2=HM=Q<$T<<(X';K;~ ;~ ;~ʜ:d:d;~>Y>gy6>=c,==8r<=b>>>`=V=i[=$T> l>>=F+=)<:p:Y:d<:2=>([>>ɝx>K>V>N=T=sj=|;=> >C>>z>es>V>f 9>G>U>av>Vi[>/=y6=p#;K:ʜ<~=*=<>t>?9? X>N>&Q>==>E>Ix>%>^W>B> >Mk>R>N>!>k}>12>aB>=d>>Y8>-??>m>>=I=>J>j>)>ܪ>d>_>.>I>SR>~>~>z>pI>#d=k->y>h?D>Z>d> 12==> >X>>1{>->*_>i[>$ >A >>ذ>4>WX>`=޻t>d>MG>6>!>7=c=`y=y=ǟ>>>Z>>->>G>|;o>aB>aB>`>GJ>z=̾=@;&K>* >2E>,\==D<8r<ӑb=kt`=9=>J>.>1(>"_h>%> > l>E=_={X=QK<є<~;~:d:Zd;;)$>@̾>9>i==d=QK=C==߂>>== l>T>u~>Y!>f=_==د>n>|;o>J>L6>uq> >{>>.P=LZ=I>$\>{>>>s>M">8=<2:d:ʜ=+=))>x>>ѓ>/>:>.P> >n>y > ?K??? >Դ>)>Jw>?>6> ??>>>d==h ;#d;p=p#> a>>-><>v>{X>Qܙ> >=c,>k}>&?E?*V?+x?.?d>a>:>{>>D?r?"?)i%?z>v>X=d;d;5p=h >t><>>e>>^2>F3>J>79>`>5??V?$?&?>>>a>q>~>I?r?"M5?)?{F>6u>Zd=;~ :Y=u)=">fV>>6P>S>k+>Y=鿗>>Tk>c>Ţ?O{?>> >pS>WX>Ns>f>F+??>> >>"=h :ʜ;=H1{=<>96>T_>8i==d=pS=h>>5$ >m>>v^>:>fV>2ݪ> >Ǡ>.>rQ>;>,>v^>3oB={X<8r:ʜ<%=n=޻=="4<є<==@;&=8r={X=ä=йh=ϖ7=F+=|===y=X'=,==A==p#<:d:Y;d<$T=Rn1=8r=/=@={X=E=2===?= =,<< =8r=em=%=d=f=+;~ :Y<:2=em=>>r>>>f>/>A>ID>@̾>&>=!==H={a ==鿗>n>1y>=O=Jw;Zd;5p=QK=ܪ>1(>aB>z=>x@D>l>q$T>~>ذ>A >)>uhK>?> = u=>`y>EY>Y8>q>`>D6P=ä<ܪ:Yt>n>>S> >>>>,>^>X>>>hg>,>E>?>.> >>ބ>N>޻>"=V:d.>>>;&>+>MG>>jl>¥>>=>K>g0j>,>o> l>9>l>>~>d>>5=;Zd<^I=9>>t>>J>O>>>>~>`>HM>u>=c,>=m=>n>>ˉ>~ >)>BB>"=h :d;5p=V=ܪ>8>oW>q>E>nLZ>av>b>h3>aB>F~>!=~=;&={X={X=i[>/>>>G>V =AU=8r:Y)>$1> >>o>`y>=Q0=6P=d={a =Rn1=5p=@=V=E> l>(>==V;Y:Y<~:d<>=Sb==I= =U<є;:d;~ >B>ID>"_h=J=Rn1%>C>Y=g=йh=엑>>`y=ܙ=M"Cw>>=>>D>5$ ==@;&=V=d=>8D>{>>>̚>M">nLZ>M>U>`>T_>.=-={a ;d:Zd;l==>l>N?I?>7>^=~=y==y6>;c>>;&> >))>ۇ>!>BB>HM>k}>>aB>z=<:d;=8D=\5>> ? Tc?>~>>=9=0!> |i>[Ѓ>><>?NF>i>$/>> >*>ذ>pI>%=Ik->>?=H>O>=\5=)=a=>Ix>>w>(>~>1>#>>>ذ>>WX>Y=q<:p:Y:ʜC>|>q>jl>P>/+K=?=D=bZ=>޻>W>v^> P>>>3>nLZ>f>`y>F3>z=6P=QK?>+x>0H> =p=5pf>8i>A>79>n>)> >=ܪ=SR=V<>4s>.P>=y6={X=h =V==ϖ7>o> f=׌=[ |i>U>w>_>"_h=g==AU>>m))>>8>$>>{a >3=A=Z>>hS>>;>I>n=HMt>6>of>> >4s>`>>nLZ>>?\?Y?z>Ԑ,>K>Qܙ>=>d> >ʜ?7=>N>k}> 12=5p:d;~ =p#>@>>x>>鿗>S>Y!>$1>:2>>6u?<%?$?'G*?z>>U>>z=>U>?v?#^2?>L6>A^W=l:d;=em>HM>f>6u>g>>>MO> G>4s>7=>k? ?d=?"h?>>>8>3>>,>;?@?$o0?K>Դ>F~=y:ʜ:Zd=Q=O>av>x>]!>SR>o&>P=엑> >IT>E>G`>{>ʜ>>>!|>^}>S.>>?G? 4>>>J=;c:Y;=D=߂>8>U>:Bf>b=0!=k}=!=j>* >[>\5>6>>k+>8i>> y>2ݪ>sj> >{X>>.=Ǡ> l=йh=|;<^I:Zd:Y:d:d:Y:Y;5p;d:d:Y;d<ܪ===n== ====q={X=%=V<<><(X' > y> |i>>n>2ݪ>8D>+x>u)== G=V=em=a=ܪ>> a> =2=8D;~;Y=V=د>* >WC>l>i>`>d>|;o>>->z>[Ѓ>,=B==є=x>9>{a >,\>>3=!<ܪ:d%>f 9>!>c>_h>ذ>ذ>/>L>I>/>4>Tk>@==B>'Ə>|;o>>>̾>>`=QK;5p(>~>~>4>!> >`>*>h>6>>>WC>n=ʜ>o>5$ >w>+p>N>_>>.P=B;pJ>m))>>,> >>G>BB>>q> a>hg>3&v>o==鿗>>z=>4>cQ>>N>n={a ;Y;5p=Mn=AU>5$ >mq>>>oW>c5?>b>e{>[>@̾>=鿗====i[>.>>q>pS>U=V=@:Y>)$>* >>> 5>o==J=k=rG=Jw=$= f=\=!> >,>!=y6={a ;~:Y<^I=E=pS={X={X=a=.=f=|;=C=8r< <%;~ :ʜ:Y:ʜ<~;5p:Y:d<2=H1{=n=Jw<=<%:Y:Y:d;~ <=Q=7!=2=HM<7 >=_=.<~ ;d;~b===I=є=O=̾>=E=m< :Y=(X'=~ >OMk> >`>X==kt`<є l>A>w>7=>{>>K u>/+K>4s>:>1(>==:2:d:Y<>=d>8D>>>Ѹ3>Վ>~>=c,={X=2=H1{=> >Y!>>>*:>>d=>E>|;o>}8>j>=c,>|=f<%:dT_>!>>LZ>;&>^}==QK=n=>*>>:>>*_><>>>%>.>}8>Jw> 12=:Bf>>>йh>!>3>A=!=8D=V=>@>o&>^>ͽ>۬>̙>T>>>~9>d>7!==<(X';5p=B=o>O>3>>Y>=<%=~==>/+K>l]>)>q>>y>Sb>F3>;>%>|=="4;K;=\=6P>> |i=ӑb=[8r>">0H>* >pS>B=鿗=йh=h= =){X<5p:d;<ܪ=8D=8D< ;~ʜ:ʜ;5p<<=޻=<є=QK=:2=~ >=c,>.>|=={X==->,>g> >6>pI>C>Y=˛ == >(>S.>Y!>,=Y=@;5p9Y:ʜ==>8D>{4>̚>>U>)=g>>79> >c>>4 > >>o&>,>>BS>v^>=>D>c>BS=l>s>+p>h>>0>~>J>X>>6u?G?>F>ܙ>A >\>F~>>'>C?>⣧>=f 9>~>1{>n >~>([=l>Y>Jw>ذ>c>G?>H>)>>av>Pp>>>?w>->M">>= f9Y9Y<= G>#d>~9>>>:==;&=_>>Y!>NX>&v>>n><>q>8>.>_˭>>˿s>e>p>`=Y<:d[>n>`=Y=3={a ===>HM>0H>?Z>F~>9>pS== >)>C[>o&>{>>K =x=K ;Y:dǠ> l==Y==8D=[="4=p#=E=_=o=,=/<$T:ʜ:Zd=Q=N|>>)$>9>8D>/>5$ >F3>Y!>ZR>EM>"==l=u)= =>,\>Qܙ>:Bf>=38>jQ0>d>|;o>nLZ>o&>>}>>>{a >Ns>n=鿗=c=ǟ>>A>_C>>>D6P=,=:ʜ;~ =f>>Mn>>N>)>6>> a>'>)>I>W>%==|=د>%>Xf>>p>>nLZ>`y=D;#d;~ʜ=h =#>@̾>|;o>>>h>wx>|;o>>{>>`y>6G<> f=O=I=2=>A>d>Ə>es>b=A=;c:d:Zd=B=?>޻>EM>`>^}>Jw>?`>=>=>5$ >=o=D=%=y=|;=> 5>H>qm >fV>+0!=2Y>r> ==엑=V=D={X={a =5p=8r >:=c=:2:d;~ =(X'==HM=HM= =B=|;=a7=2<<>;Zd:d:Y:Y<~:d:d<~!>"==/<є;5p:ʜ<#d= a=\=>%>:Bf>0H>=))==l=t`=є=<8r:Y=Y=йh>=c,>{>>{>>;c= u=5p<><1q= f=9> >GW>d>P>~>av>9>5$ >4s>#9>`y=N|=HM:Zd:d=D>b>^}>)>)>[Ѓ==Rn1+>pI>> >;>9>]<>Mn>F~>5$ >==7!:ʜ:d='4=_>A#>}l>}8>@=i[=8D<:2n>aB>->q>m>{>>Mn>>=>5p>n=x={X=Q:db>)2>(>K=pS<2;Zd;K<==~ >&Z>N*:>em>Z>;>A >`>==q=\~>`y=m=^W={X=)=p#=*;Zd:Y:Y:p;~>> =o=h= =sj==;&==ܪ=4=;Zd:Y:>=c,>.>|=D=>={X=>J>D6P>iv>t>i->GJ>=_==Q0>$1>IT>K>=<є:Y:Zd<>=B>u>MO>o&>Z>!==?=>:>79>n>>>&Q>~>C>r>>n>Z>>O>f>=QK:d:YF3>i->S.>=˛ ={X==>* >Z>E>>v^>|;o>EM>> y>, >gy6>)> G>u~>)=p#;Y;l=HM=>>, >z=ܪ=HM===c,=>>4s>F~>Q>@̾>==鿗>u)>@>k->pI>A=y6=5p:d;d=(X'=%=={X=z== f=~=8D=u=pS=0!=2=йh=-=y=={X==є>K>J>=엑=y<:2<:2<%;K;Zd;1{<><><<(X';5p:Y:Y:Zd:Y:d:d:Zd:Y:Y:d:Y:d;Zd;K;:ʜ:Zd:Y:Zd:Y:Y:d;5p;d<8r==/+K=7!=(X' |i>>Y=A=̾=/=?=$=8D=8r==LZ>==k=%;K:Y<2=k}=>>,>+>"_h>&Z>5$ >=>:>%7a>=є=)={a =[=I=A>%>9>&Z=-==H >8i>IT>F~>:Bf>C>K u>EM>.> =|=d=[= =є> y>=c,>Y!>F~>)=-<2:d8r>2ݪ>F3>BS>8D>0H>5$ >8i>.>pS=m==f=V=bZ=Ə=>0H>Luq>@>=d<:Y;d=YAU=ǟ> >n>n>'> y> f> 5=B= u=@=a7=+<%K>z>r==kt`;~ :Y;d:Y:Y;~<~;d:ʜ:d:d:d:Y:Y:d:d:Zd:Y:Zd:Zd:Y9Y;dpS>(>>>B=йh==̾=&v=f=޻;Y<=l=O> l>=̾=X%.>6G<>G>@̾> >=Q0===Cw=7!;K;d=C===鿗=+K=7!;~ :ʜ=Q=?> l>,>=c,>7>z==AU= =+K=[=Q;l:Zd<={a =X'=d=h `y>> =g=2=d=3=h ="4:Y:d:d<=em=?===pS=E=@=5p=rG=a=є=߂>|>o=G=Y={X=k}== u==Q0=v="4:d:d== u====I> l>=̾=P';~;~<==y=k}= =E<%<<ܪ=+=V=~ʜ=pS==є=={X=M"=f=k}=̾=-=_=v=2;5p;~<є=HM=~<=V=Jw=7!=0N|=U= =^=d=kt`<:Y:Zd:ʜ:ʜ:Zd:d;~;K;d;d<~<(X'<^I?>B=~=ǟ=޻=8D<=.<(X'<5p;엑:d:Y:ʜ:ʜ:Y:Y:d:Zd:Y:d:d:Y:Y:Y:Zd:p:Zd;5p<:2:Y<7= =h=ä== =l=8D==~==HM==7!;d:Zd;K<<<^I;l:Y:Zd:Y:Y:Y:Zd:d:Y:Y9Y:Y:Zd:d:p:Zd:Y:Y:d;~ʜ;~;#d:ʜ:d:Y9Y:Y:Y:Y:d;K<~<~;1{;5p:d:d:Y:Y:Y:Y:Zd:d;d<%<~;Y:d:d:p:Y:Y9Y:Zd;5p;1{;~:d:Y:Y:Y:d:Y9Y:Y:Y:d;5p;5p:ʜ:Y:Y:d;d<==:2=sj===Jw<;~:d;Y;d;:d:d;K<;Y:d;Zd;#d:Y:Y:d:d:Y:Y:Y:Zd:d:d:Zd:d:ʜ:ʜ:d:Y:Y:d:ʜ:ʜ:d:Y:Zd:ʜ;Y:d:Zd:Zd;Zd;d;:d:Y:Y:Y:Y:d;Zd<%:Zd:Zd<(X'=<~:Y:d;~ :d:Zd:d:d:ʜ;d:ʜ:d:d:d:ʜ;~ =='4=Q<%<є=q=;c=@;&=*<^W;d:Zd:ʜ;5p:Y:Y:Zd:Y:Y:Zd:Y:Y:Zd:d:d:Y:Y:d;Y;#d:d:Y:Y:d;Y;Y:d:Y:Y:d:d:d:Zd:Y:d:d:Zd:Y:ʜ;Zd:ʜ:Y9Y:d;;d;Zd:Y9Y:d;K;;~:Zd:Y;Y;Y;Y:Y:Y:p:Zd:Y:Zd:Y:d;#d:ʜ:Y:Y:Zd:Y:Zd:ʜ;Y:d:p:d;K:Zd:Zd:d:ʜ:ʜ;~ʜ<><2=[=Y;;Y:Y:Y;~ <:2<:d:Y;1{;Zd:Y;5p<:2;:d9Y;5p;:ʜ:d;~ <>;~ :ʜ:Zd:ʜ;~ʜ:ʜ:Y:Y:Y:Y:Zd;<^I<~:Zd:ʜ;<;K:Y<= f=7!=k}<8r<^I;~:Y<%=A^W= ==H=.;:Y=̾>==HM=E<8r:p;p<$T=7!='4<;5p:Y;<=QK= =d== =`y=8r;~ :d:d:Y:d<%<2=.=(X'=$=. =엑= <<8r=h ==~> 12>=AU==Mn<$T<7=D=p#=^I= f;~ :Zd=,=йh>2ݪ>Sb>:==rG=2==>t>,>!>==~=+<==>f 9>Mn> =pS=E={X==>>+0!>d=>=2=B=/+K=[<ܪ=:>r>8i>)$=B=z==~==Y>K> l=== =8D<=<є<8r<=~=QK=q$T=YAU=8r;p<ܪ=q$T==v=HM=V=;Y:d:ʜ:d:Zd:d:d:Y:Zd:Y:Y<%<<;~ :Y<== =~ =ϖ7=d= 5:d;1{=~=sj=k}=9= =@;&<:ʜ:Y:Y:ʜ=Rn1= u>%>%7a> G== <(X':Y;K=$==ǟ=엑==i[=SR=`y<;d;~ʜ:d;=l=G>+0!>=>5$ > =<;1{<ܪ=3=,> V>@>> =د==;c<<%;l:Y;K=|;=->">96>.> Y8={X G>/>.>HM=엑==h <%<;Zd9Y:Zd==I>|>> y=O=|;<>%->"> /==4=V===د===%<%:d:p`y>r=LZ=E>'>=9==5=8D=Q&*>{>>,\>{>>$\=X'= =AU> a>G>_>V>9>`== =`y=<є=Rn1=M"==˛ =;&=="4;5p==ܪ>i->MG> >>y > l=1{>>F|>t>>|;o>Y!>([=={X=[=rG=5=D==A=鿗==a7<~<ܪ=>t>>ֲ(>6P>3>=ۇ>)>F~>q>>}>we>R> ==4==sj=y==->K=Q0==`y<;~ =k>=c,>>s>c>f>=p=->$>F3>S.>F3>(=A=D=5=h =E=a7=:=^W===k}="4:ʜ1(>Y>GJ> =k=Jw=`=O>B> 12>b= u=>=em=5p= ;K=Jw=d==K ;d;~ʜ;p<%<8r<<~ =5p=P'=@;&=~<1q:d9Y:Y:ʜ;l;Zd:d:Zd:d< >> 12=O=p#<:Y<5=Zd=== =I=l=%<:2;~ʜ:ʜ:Y<:2=> l>9>MO>A#>z=c,=Q;~<={a =>>>t> 12=ϖ7==8D<2>>U>l>`>5$ =g=\<є=H1{=!> >5$ >M >K u>4I> =ä=y=*<1{:ʜ<=E>>M>f>ZR>0H=B=jQ0=HM=B=K>ҥ>Ix>fV>c5?>C>=AU=a=@;&<ܪ(>;/>4I>`==8D=%=8r=>>A#>Y!>V(>96>`=1{=޻=7!<;~ :Zdt>.>*U>==X'=h <~ <Y:d<5p=(X'=`y=QK=Q<^I;<><==l==˛ =_="=h=޻=V<=<%:d9Y:d;Y:d:Zd:Y:d<=X%=Jw=/+K<=<8r;K:p:Y:d;5p;d;Y;Zd;~;~:ʜ:Y:Y:Y9Y:Y:d:d:d:d:ʜ;Y:ʜ:d;Y<:2 >H>av>=c,=7=V=a7=h> Y8>.>A#>?>* >8r=є= =`y=;c=Jw=====<=:d:d=V>o>|;o>6>N>!>u~>=˛ >pS>OMk>\5> >>k->:Bf>Ǡ=c== =d= u>b> 12>|=|=5$ >>ۈ?>FO>t>Ix>%>:Bf>{>>>Z>a>>WX>f=AU=q={X==9>>&>==d<ܪ;Y=3>8i>">? 7>6>>b>><є>{>>>^2>BB>>OMk>%="=E= =̾>>>)2>==d<ܪ:Y=2> >[>X>>B>c>=H>>Mn>wx>>{>>WX>([=G=!===X'=د>Ǡ>>=D==H$>B>>)>KRA=2==> f>&*>0H>&Z> =йh=4=8r=`y=8D=V=HM==ä=!=f=:d;~=7!=|>o==v=E<$T=.=3==D={X=f=Sb="4={X>)>C>ZR>M>$=O=8D<><= =AU>pS>.>.>==4=V<=,>b>{>>mq>?>b=[=Q=p#=>>GW>fV>d>EM>===B=&Z>\>t>i->2L>c>~>{>Zd>(== =em=u)B>5$ >GW>?>z=|=i-=:2==LZ>,>Y!>rG>n>Jw>=د=d=QK<$T<5p:d:Zd<==d=y6>o>b=Y=B= f=.=|;=ä> >1(>A>=c,>n=LZ=q=|;=%<ܪ===sj==l===.)2>k+>>Y!>>=8r=B=>Y>8D>Ix>GJ>3oB>`= u==sj=bZ={a =d=;&=O=;&==;5p;d=y>n>)>N>>y>~>=_>>Y!>>)>.>vG>D6P>=|=X'=d=h=t`>Y>>`=ܪ= <R> ?b? ?P>8>`y> G>A#>b><>x>>>b>&Z=-===ܪ>Y>.>8i>*U>o=q= 5:YV>?s??>of>u~>&>C>M>A >>>>[>:=V===_>>2E>:Bf>,> l=E=.:Y;K={a >"_h>8>b?M>&>q>IT> >!>U>~9>Ǡ>I>av>2ݪ>=̾={X==є=a >J>:>=7==>>*><>_==q=,>>,>8D>.>'=y6=?==u=bZ= =="=B=D=:=(X';Zd:Y%> 12=2=em=Y=8D=/===D=d==H=A^W=@<ܪ<<%=2=c~ =p#=P'<$T;d:Y;d<<<ܪ=@;&=l=\==SR=޻=]=Q<1{<~ʜ >E= =n>2ݪ>EY>:Bf>=2=2<<%== u> >#9>$\>=йh==;c<ܪ>M >em>Y!>/+K=V={a ==em=>)>?>Zd>X>:Bf>`==f=7!>GJ>`>T_>,=~ =8r=7!=u)=V>* >Y!>tE>o&>MO>="==QK<ʜ<^I:ʜ<%=B=鿗>"_h>8i>/> ==[=5p=)=B>">Mn>hS>aB>?>Y=ä=/=:2>&*>8i>2ݪ>V=د=k=`y=8r<~;~:d:Zd:d:d:Y:ʜ=~=޻=̾=Y=d=4?<(X'<%<==p#=\==== =IT=޻<<<<$T=$=8D="4>U>em>=c,=y=h =`y==>z>.>.>====QK=D=l==D=^W=?=[< :d;=>>>i7>/>O>f=o=є>>9>c>z=>sj>X>.P==q=޻=pS=q=I> >%>=|=z==>O>엑>>>>8D>=H>&>`>o>>v^>z=>F|>Y=J=v=E=O> 12>&Z>.>==<ӑb:Zd<8r=>=>J>j?r>FO>D>F~> |i>([>^>>>>q$T>@> =Y==I=">`>+x>2ݪ> =x=d> a>> >p>NX>#d=I> l>6G<>Y!>jQ0>b>C>=Z=+K==f==>>J> 12=O==H<^I:d<%= G>!<7>{>>V>|>5$ ==Y==>%>>>= u=d==V=Rn1=B==,="=c,= =8r:ʜ:d<$T=*=+=Q<%;d;5p;Zd:ʜ:p:Y:ʜ<><==`y=pS={X==a=B=QK=5p= <є;5p:Y:ʜ<%;5p;~<~;:Y:Zd:d:d:d:Y:d<%<>> /=׌= <7;K|>=ܪ={X=h <=ҥ>2E>([>=+K=7!">/>.P>=AU=k}=D< <^I;~:Y<==>>.P>$1>E=N|=;c<$T=X%=D>>.>BS>?>"_h=o={X=em= f >>=O=.="4<==bZ=!>>%->96>3oB>pS=د==Mn>> l=ܪ==em=޻<8r;~:Y:ʜi>!>E=\=;c>~>>iv>=a==l=>>2E>1(>===rG=D=`y= =!=د==T==u):ʜ:Y<(X'=p#> >o&>>>>S.=ۇ==ܪ>>=>Qܙ>M>8i>%=|=M"=}l=y=v=_> l> /=A=2=V;:Zd8r>qm >uM>>$>b=))==>>K >GW>4> ==޻== ==y6> y>Y>|=c,=[<:Y<~=.=;&>:Bf>j>@>6>6G<==)==>">'4>">Y=I=4==`y=rG===엑===d="4;5p:d< =QK=>@>8D>=,=h ="4=\===AU=Դ=]=q=f=.=~=HM=QK= ={X==pS=<є=h =B==h =7!<7;< <8r<$T=@=@<ܪ<%:Zd:Zd:d:d:p:Y:Y:d<<==޻<<2="4=h =u)=d==pS={a =K =7!=Y< <==HM=/+K=/+K=u)K==˛ ==D<ܪ<%:ʜ9Y<%=:2=pS==^=B=+;:d:Y:Zd:d:d:Zd:Y:d;Y:ʜ:d:Y:Y:Y:Zd;K<%;~ :d:Y:d:d:Zd:ʜ<ä=7!=C="4<;l:Y:ʜ)>"==a=Y<=$=B==ǟ=O=2=Q=7!>o>8i>D6P>#9=|=Mn=Y=l={X=йh==B=_==h =Y<==,=rG=k=D===V>79>F3>(=˛ =Mn==p#={X=s=o=G=AU==i-=q=~=7!==^=2=є={X=a7~>=x== f;:d:Zd:Y:Y:Y:Y:d<~<2<8r<:2<~;d;K<5p=2="4<$T<%<~;;K<~<7=7!=8D<ʜ<%:d:Y;<ܪ===sj==bZ=$<;;K;~ ;p;<~:ʜ:Y:Y:d:ʜ:d:Y:Zd;5p<~;K:d:Y:Y:d;Zd;~;1{<<5p<^I<~;:d:Zd:Y:d;5p;l:ʜ:Y:Y:Y:Y:Y:Y:Y:Y:Y:d:Y:Zd;~;~ ;:Y:Y:d:ʜ:d:Y;5p;l:ʜ<>;5p;5p;;K;p;Y:Zd:d<:ʜ:p;<є=<є;~ :Y:Zd:d;<><<<<%<%<%<%<><(X'<%;d;K<~<< <^I<:2<5p<5p<%;~ ;;Zd:ʜ:Zd:Y:d<~=_=="4<#d;~==d=7!<1q<~;;d;<%<(X'<%;d;1{<%<;K;~;d<є<ܪ<;p:d<~<<є< ;d:Zd:Y9Y:d=-=Ə=+< :ʜ;<ܪ====޻=Cw=%=f=|;={a =n=B=[<%:Y:Zd:d<=%> |i>?>Qܙ>79=B=yb=B== u=D=K=йh== =[:d:Zd:d;#d==6P>79>z=>^>f 9>f=v=7!=={a =Y>.>*>5$ >-O>> 12> >pS>'>E=;&=[;~ :Y:d;~=/+K=O>=c,>\5>X>k->n====7!==V>>>=c,>F|>=`>'Ə>>>&Z>&Z>)=Դ={a <>9Y:Zd;5p=8r=>>Q4>av>@>B=k}=){X=#d=5=O>>* >/>$\>%> > >>>==QK;K:Zdu>===P'<<<>>)=엑==Mn<<==bZ==I=-=c,==H<ܪ;:Y >EM>g>]<>79>=?==8r=˛ >>F3>Q4>,=AU=p#>%=={X=l=h =HM=">+>q$T>v^>6>`>&===> l>F3>\5>4>b>%=9<ܪ:ʜ:Y<ܪ==B> /=-==V=V=M"=,>n>c>>~9>U> =V=q=!>o>A>ycu>E>\>=a<%:d<%=Mn==є=d=QK= =Q=V=-=鿗>">=c,>8i>==!= =u)=Y>Y>4s>;c>f=,=em<:2:Y<~<7=<%<<><=5p=y=D=,=1{==HM=X%=@=Y=V==D=2=d=V<8r:d:Y:Y:Y9Y:Y:d;~ <=u)=8D=8D="4<ܪ;~ :Zd;Y<2===p#=rG=B==v==O=i[=Y===7!<=<ä=Q=n=y=p#=:d:dǠ>>!>d=> /=_={X=wx=8D=@;&==>`y=y6=a<ܪ<~=|;=AU>>n>E>Y>pS>(>:Bf>A>9>d===!==em=8r=O>f>96>(=y=V;Y&*>5$ >,>>>* >9>=c,>0>)=<=X'=|;=bZ=y=ܪ>* >G>9=x=u;K< ==B>>!>>8r=\5> 12>>>=ϖ7=4=rG=8D=7!=c~ =!> 12>)$>=D=8D;5p:d=u)=d==Z= u=+K=====)=l=7!=<2<%;~ ;~ʜ;~ʜ; >A>U>96=l= = f<є="4===V>b>b=V=|=;&==O=є==7!<:Zd:d;K=V>B>m))>[>y>>F~=={a =a7=d=A>/t>T>i->d>GJ>+>$>/>2ݪ> a==<ܪ:Y:Y:d;Y8i>̚>ۇ> >I>F> =d=a=~ >5$ >uhK>G>~>^2>v^>pI>av>k->nLZ>X>* =s=8D:d:d;l<^W=l>D>SR> >j>H>12>=SR=>B>Ix>3>>>:>>Ǡ>{>>>>mq>96==QK;5p:Zd;Y>$>>Z>I>&v>j>==Cw=>:Bf>ycu>k}>>> a>rQ>f>o&>pI>X>%7a=Y=5p;~:Y:Zd;d=8D='>6G<>ycu> >f 9> G==@;&=V=?> l>7!>V(>dXp>[>A#>0>/>8i>79>>= = <̾>;K:ʜ:Y:Y<=QK=!=>=y=4=8D<8r<<Y<;~ ;K;l:d:d;~;K;l:Y:Y;Y;<%;~ :ʜ:Y:Y;K> |i=ܪ=d=5p<<2=7!=HM=;&=Y={X=V<;Zd9Y:Zd<;={X>>>b==/== =ܪ>2ݪ>ycu>>Y8>`>"=ܙ===>2ݪ>j>y>H=x=8r<~ʜ:d<(X'=k}>>k->:>em>t="=̾=<>.>->˿s>b>>]>Y8>9h>>>>EM>z>>>>hg=I=8D;~<ܪ= u>R>BB>O>>GW>=s> f>U>D>j? 7?~>))>&v>o&>-v>.>{>|>?Ip>>q>z==H<~<%=Y>Mn>> >O>@̾==i[>Ǡ>K u>>b?NF?z> >uM>q$T>1(>2E>{>>¥>?\>(>>=<~< = >>^I>we>Qܙ> =q={X=K>t>o&> >>}>>d>=c,> Tc> >C>>Z>k>n >bZ=g=7!;5p<2=/==9=O=y=8D=:2=3=> 12>8i>Qܙ>Luq>79>pS==E=E=<>!>Mn>\O>8D=t`={a :Y;K<;Y:Y:Y:d:d:p:ʜ|>Y> >.>,>"==!==E=`y==> =={X=8r:Y:Y<%={X> >8D>GJ>D6P>=c,>D>]>w>>}>x@D>Vi[>)$=N=!=Cw=>>[>~9>i->"_h=<:2:ʜ=V=>BS>{>>>^>{>>{>>>>?>޻>wx>?>`=O==>Qܙ>BB> k>{X>nLZ==u);5p==H> y>Y!>>E>>4>:>w>>>P>m))>8> l=O=> l>f 9>v>>`>;> /=7!:Zd:d=YAU=>EM>~9>f>8r>pۈ>fV>nLZ>}8>}>f 9>:2>=йh===>A>l>>>lN=o=u):Zd<ܪ=>%>=c,>Mn>EM>.>n>$>+0!>">`=߂=E= =rG=rG==A>C[>o&>`>=<~:ʜ9Y:d<~;~:p:d<%<8r< Y8=t`==8D< << =Q=V= ==0!=4==[=[= =f=em=~;~ :Y:d==>=c,>:>,\>pI> =E=P'=5p==>>&Z>9>9>&Z> l>b> y>> y=ܪ=)<7:Zd:Y:d<:2=d>=>>v>FO>j> >`=Ə=d=>0H>q$T>>~>~>>}8>b>k->sN>aB>7!==m;p:d;Y=%=엑>4>M??!|?Ip>>A^W=йh=O>n>w>R>cQ>>FO><>c>c>9>/>">l> =-Ǡ>G>>U==鿗>8>>8>"?M?_C>j>.>/>!>n>->~>,=N|{>_? ?V?>y>9=ܙ=йh>*>~>q>ݩ>L>i>>;&> >>>N>f>=">>>i[>s>hg>=H=a==A>>]>~>=l>>t><>~>y >{>z=>^>)$=O=V 12>>=>Ph>2ݪ=o=޻=޻=){X=%=_>J>2ݪ>?Z>=c,>.>ҥ>>@>%>==h <$T<;5p:Y;~ʜ<>9>Tk>GW>(===V=QK=d=))>>">=SR=+<>:d>iv>>hg>#d=鿗=,=Q0>.>V>J>Ţ>>>[>8D==G>4>j>f>I>/>Ix==Y;~ʜ:d==> >|i>D>>W>>3&v>>.>>^{??!i?!`?b>1>A >Xf>Mn>%>d??? 7>`>79=Y<>9Y;Zd= >:Bf>$ >~?>>>Y!>,>K u>?O{?$?8 k?8i?'k? 7>v> a>7=>U?.?+0!?5p?$>>{>=<:Y;Y=5>8D>>j?>p>S>M>$>F|>k>b@?c?1F?3J?$8?6>,>P>3>S?@?+ ?6"?%a>>~9=>I>`>l>6>y >J>b> >oo>;&>6???B>>>fV>^}>!|>1?NX?E? V>6P>@= G<%;~ => |i>QK>k+>F~>==\=D>M">W>%> >>>~9>@;&>%> />9>B>>ŢM>->Q4=O=Y:d;1{="4=)=0!=/=8D<=Q=Rn1=%=|=> 12> 5>=~ =h=޻=y=SR=ܪ> 12>=-=<;;5p:Zd:d:d:Y:ʜ;pS>&Z>%>">.>A#>Y!>em>Z>=c,>=׌=k==X'>>79>Q4><>==H;d;~ =p#>?>F~>~9>x>>z>>%>`>S>`>>S.>Cw=m=,> y>av>c>'>{>y >`y=+:Zd<=?>2ݪ>7=>O>>>>>db>uq>q>X>>ycu>8i> >>=c,>>1?d>N>h>F3=;Y<= >C>G>>H>ϖ7>U>/>6P>p>of>;&>a>rG>6>>.>Mn>&v>? ?\>>hg=<~1y>3>&v>O>;&>*>~>z#>&v>q><>>D>pS==x>5>> ?s>>>OMk=;d:ʜ=l=>Luq>t>m>O>d>n>oW>v{>m))>QK>(>b=Y=I=!=>Rn1>f>ŢM>>_C> =:2:d<8r= =LZ>!>5$ >.>> > |i>~==J=-==h =Jw=A^W=8r=s>'Ə>M >A>Ǡ=y<>:Y<<5<:2;~<~ʜ;K:d:Y:ʜ<~K> =o==8DXf>>;>a>* =?=[=H1{= =̾>>'>=>]<>av>H>%>>n>.>%>o=?=.:ʜ:pb>9?? 7>]>!|>=N|=+K=>A>> k>F+>e>8>`>>>v^>:>W>)= G%>$? E?&H_?*V?>Ѓ>Z=y6=g>4s>>1{>??>?:>v>̙>U>;&>{>{4>==ǟ<=:Y:d;~ =rG>(>??0#>w>>u>K u>>>B? D??f?%?vL>>ٮ>H>>ذ>K u=AU=HM:d:Zd;K=QK>r>??"q?'\?8>j>Y!==>=>r>9?b?=Z?ͽ?Ǡ>#>Վ>/>>+K>>79=;&=~;K:Y:dRn1>c>?>ݩ>`>=D=!>>ZR>ذ>Z>Z>T>йh>&v>>E>޻>K>F|>= <7<%:ʜ;5p=(X'=ǟ>4I>z>^>`>pS=N|=A^W=Mn=v>`y>2E>Y!>vG>{>>em>H>=c,>:Bf>3&v>=y=޻=*<5p;d:d:p<<<~:ʜ:dK>>=Y==f={X=O>n>^>|>sj>MO>=ϖ7===>Y>:Bf>A>==H1{K >>uM>>Z>HM>=H>Y>U>>??NF>Re>y>nLZ>&Z>z>Vi[>><>>I>vG=-=7!;~ :Y;d=5>8D>J>~?9>i> k>g0j>5p>O>~>h?"M5?5p?7jl?%`? >Q >V>~>??$8?+0!?>x>_= nLZ>\?=Z?1D?b>5?>`>Qܙ>vG>w?9?8 k?Lr?M;???!*>>!>2>鿗?!`?B"?Je?9?>A =y6<^W:Y<:2=q>j>`??3?.>`>6>GJ>nLZ>̾?d+?1q?GiI?J?< b?,o>A>e>>?"M5?B?K@?;?NX>=<:Y:ʜ=}l>+>>N>ʜ>鿗>~>GW>t>=c,>Y>?)?%?(??>Mk>o>V>a? ?'Ə?0`?!`>$T>t=27>j>>B>79=Z==>2ݪ>>{>Ѹ3>>Sv>{X>|>;/>5l>k+>>>~>ֲ(>3> =A^W:d޻>&>,>+>==є=D=B>z>?>IT>* =O=D;~ :Y;K<(X'<%;;1{;d:d:Y:Zd:d:d:Y:Zd;~ʜ;K;~<є=X%=k}==D=є=T=ܪ==x=="==p#=8r<ä="4=~==̾>=D={a 6>.>>]>=c,>9>@>WX>n>wx>i->E>===HM=]>pS>Qܙ>o&>Y!>=:<:Zd>em>)>;>=l>G>ذ>)> k>/>,>>b>([=G=엑>$>z>>b>̙>V>=h ;~:Y= 5=F+>K u>>>>ճ]>Sv>I>H>> >ܙ>>6>GJ>Cw>z>av>?vL?b? >d>oW=!aB>R>ۇ>q>>_>ֲ(>> >x>G`>D>>GW>n>(>ycu>ӵ? ??>~>,\=ܪJw>>͘>>ݩ>>7>J>˿s>1{>s>M">`>* > >J>\>?NF??>->F= u'>o&><>pw>,>ҥ>)>[>>{4>t>C>pS=g=D=AU>>z>>))>4 >>:Bf=M";Zd:Y%>BS>]<>Y!>D>5>.>+>>==a==sj=|;=> />Z> >~9>9=<ܪ:d<~ ===O='==?=SR===8D<$T<2<%=:ʜ<+K=M"==t`==y=YF3>>)>g0j>==2=(X'=p#=>>1y>U>`>K u>(>> >+>"_h>==.:ʜ<%=>Y> >7?r>>6>`y==f=د>1y>>&v>!><>D>~>`>V>`>z>V(>r=>)?Zn?$?'?K>>B=1{=O>!>d>̾>cu?v^?W? }>#>Ѹ3>>Z>>>>==O=~:Y:Y;Y=`y>* >`?M"?.N?3C?>->c5?=t`=t`>;/>K>ܪ? 4?f???9>M><>l>>G>M ==*:d:d=8D>>?t?"?&#?>*:>ID==ܪ>1(>>RA?I???@>>ݩ>ͽ>>>[>8==;~:Y<=>Y!>'>?vL>O>3>%=SR=0!>>Mn>&Q>J>v>Y>_>>/>BB>޻>>F|>B=)<ܪ;d:p:d== u>:>>>`]F>={X=7!=8D=d=o>.>\>> >z=>[>F3>=c,>2ݪ>===(X'<=[=A^W=em=QK=k}<<5p<~;Y;~ =/+K=>>>Ǡ=,={X=d==>pS>H>hg>b>C>====c>>* >.P> ==(X'HzG>>>>`>>>u)>IT>>e>F>b@>\>*>t>+>J>G>>,>ٮ>>\= u=u);~ :Zd<%=f>2ݪ>J>j?:>E>>k->8D>IT>>m ??,e?0?"q?>)>`>{>S>?w?%?J>ճ]>GJ=pS<~:Yhg>><>>S.>o&>a? ?.?EƳ?H?;Sd?P> >e>}>\?v?;?D?2? !j>=O<^Ib>؋W? ?"? >>>GW>h3>??) Y?@(?D?8 k??>;>>R>S??=P?FK?6? 0>=">c>d> >->3>Ns>t>96>6>? E???#??:>H>z> a>.? ?$1?+T?.>b>j=q<~<>={X>2ݪ>>>B>:Bf=LZ=Y=))>(>k->>U>Mk>|>0!>>}>A^W>:Bf>nLZ>R>5?>>Ғ>l>o=7!:d:Y~>>">* >Cw== =c,=>$>G>U>2ݪ=<=Jw;K:d<%<>>"_h>4?>3&v>.>4I>F3>Y!>`>M>.P>Ǡ==/= => >?>Z>D> V=)<:d:Y%>X>3>>>.>`>A >U>SR>?>>ID>J==>>t>{>̙>c,>^>=`y;:d= 5=O>A>M">c,>Mk>̙>;&>+>ɝx>!>Դ>¥>>z=>9>)>>Xf>q>i? E?>͘>bZ=&vXf>>> >m>>Mk>D>ݩ>ۇ>I>>{>;/>>&>nLZ>ɝx?l??<%>))>j=ܪ<2:dC>>U><>@ >Sv>`>̾>6P>>>X>R>>>o>pS>WC>!>]j?? >\>=йh<:Y;~ =y>Y>k->es>MG>>?>r>>v^> >k->=`>===">>>6P>->ި}>>=c,=d;l<7=v>%>C>`>`>MO>=c,>5$ >/> >====bZ=p#=v>>\>>>==i[=[:Y<==u)=ä=~ =鿗=AU===q=)=QK=Y>GW>O>!=Y=Jw<`y>$>5>*U> =>> f>8r==pS'Ə>ذ>>>>>==D=IT=Jw===>D6P>X>R>>S>>mq>j>n>\>3oB==;db>6u? ??>>G> =޻==y6>EM>ذ>I>Az?I>i>G`>s>}>^2>M">j>n=E<=[>>>F??1D?@>q>%7a==> >j>&v>? 4?(?9>">'>>p>>}l>.=c,<$T:Zd_C>5?? ?>E>A >%==>B>[>/>˭??l?M>6u>^W>q>~>>f 9> G=1(>g>N>Վ>SR>T"=د=p#=p#=̾>!>oo>8>>$/>|>>v^>:>y>X>* ==p#>M>Xf>0H=I=p# 12>9>^>k->av>F|>2ݪ>%7a>>b==}l<ܪ;K:d:Zd<5p;K:d:Y;K >n>d=>Y=-=N|=~=sj===-=V=E=H1{>f 9>F>l>1(>b==鿗>>_˭>>>4>`>>B> =G>>X>12>'>k-> =>I>U>ۇ>~>P>@>>$\>i->L>"? ?>?>D>~>f 9>HzG>>;&>Az?NF>x>>`y=+;Y<%=B>* >&>'?>nU>p>i->/+K>=>>h&? Tc?!?&Z?f?>Վ>G>:>>d??"q?r>j>A=:ʜ;d=rG>">>>ʜ>N>J>`>%>9>:>uq?Ip?f?"M5?E?t>C>g>>GѸ>Rn1=pS;Y:d="4=V>o&>>̙>!>d>* >|>r>IT>!>ͽ>~?>e><>x>x>hg>G>װ?% ?v^>;o>>*U=h :d;=l>K>F|>g0j>ID>r===c,=>* >X>>>M">:>R%e>!<7>C>F3>4>*>.><>K =̾<2:Y;d=.=a====H=$=+=`y=y={X=="=Q0>=G=1{=SR={X=˛ > >+>/>Y=l=Y;Y:p;d< ;~:Y9Y:Zd:d;K l> Y8>8r> y>z>)$>* >==c=l=Jw=U=pS=i[>)> a>==a7+>Xf>l]>i->^>`>t>E>:>nLZ>C>=ܪ=?=2=>9>~>I>:>@=˛ =$;~ :d<8r={X>z>i>k}>>d> G>k}>5>>>ذ>wx>=>==l>-O>z>>݅L>Ϻ>ذ>([=f,>>,>>>>>{X>*>>{>>~9>BS>=> f>=>>ܪ>>#> k>Mn=qt>{>>`>4>:>> >>>y>^>Y!>%=A=%=>,>>ͽ>>T>uM>F~=<%:Y:d=A^W=y6>A#>K>pS>)>>x>pI>mq>`y>=>pS=ܪ=p=a==>G>ذ>i7>J>I>=:d= =>* >A>C>8D>&*>>>Ǡ="=d=kt`=8D= f=HM=[=>0H>W>Mn>f== =#d>&Z>"==^<=:Y;Y=>n>x>>>!>+x==%==}l=Q0>@̾>Y8>><[>=>K>ycu>k->g0j>N*:>%==bZ;5p;~ =a><є>>ֲ(>cQ>>H==7!=,=d>>i->c>+p>݅L>ܙ>&v>pS>>d>f 9>6G<==;ʜ;Zd=3>)2>[>>6P>>8D=N|=@=@=> y>[Ѓ>>>>>~>3>|;o>lN>Mn>"=ӑb=bZ;d:Y=Q=AU>A>~>>Mn=e=rG<"4>`>3>G>,\>vG>Rn1>@̾>2ݪ>=-=<;:d;Zd=@;&=>|>=O=>!>/>+0!>>o=))=O==8r= 5;K;Zd<=/+K=7!<7;d:Y:d<< =em=a=v=v==)=q$T=8D<=<2<ܪ<<:2;Y:d:ʜ;~ <:2:ʜ:d:Y>Cw>="==pS=a==>d=>9>@̾>:Bf> ==={X==B>J>'=ܪ=rG>`>>j>/==1{=i[> >A^W>~>>>>>OMk>>Ǡ>>Y!>3>%>hg>o=c~ ;K:Y:ʜ= f=>=c,>P>>o>Z>pS= ==>(>j>>W>j>>t>6>C>1y>WC>%>[>L6>>O=8D>>;>>S.>=AU=o>n>]<>>e>̙>1{>J>3>H1{>9>f>>N>ܪ>4>g0j=O<2<(X'=|;>>J>mq>V(>='==є=>!>O>}l>>m>Y8>Y!>([>q>C>>{X>s>N>==E8r==h=~ʜ=`y=B=d==2>o>>,>$1> l=ܪ=>>5>[>b>;c=鿗=P';~ʜ:Y >E>">>>* >5$ >2E> G=o==3=n==H==>n>2ݪ>n=<=<;~ʜ:Zd:d=5p=>>G>`>]<>Ph>N>^}>h3>b>F~> =鿗=!=\==y6>(>dXp>E>sj>2ݪ=Y= a;d:p:d===ܪ>7!>m))>:>I>t>lN>t>z>oo>R>(==;&==>|>>=>8r>=l>%>\>b=U;d:Y:Y=%=T>.>hg>I>>nLZ>b>b>b>V(>8i>=O=0!=)=d=I>2L>|>ذ>>Xf>b=QK;Y |i>:>V(>V(>F3>96>2L>.>>===bZ=/+K=<є=9>b>?>f>^>*=<ʜ:Y:d='4=q=>%>> ==-=ܪ===H1{<ܪ >=Y=\;Y;~ =+=f=={X=a= =={a =@;&<7;:Y:Y >=йh=h==p=Ə=~ʜo>2ݪ>3&v>o=d=Y;1{:d;~ =@;&=Y>>BS>Y!>Mn>.>Y> 12>=Q0=D=em<%:Yn>Pp>Q4> =!=+;~ :ʜ<= >|>9>j>>}>ycu>R>/>!>J>==8r<8r<=X'>u)>:Bf>9> =^=;l:d2ݪ>]<>sj>i>F~>)$>> =))=!=em l>(>8D>/>HM>=B==0!=|;<=;Y:Y<~=+=|;={a =+<:2:Zd:Zd<%=5p==Y== u=h=\=~=V="4<;Zd:Y;Y<~<~:ʜ:Y;Y<="4=H1{=|;=%={X=0!=a=B=T=7!===l==bZ<7;Zd;d=~=y=ǟ=엑=د={X=sj=P'=V=~=Ə=|=> >u)>`y=O=q=9=0!=1{==B=Ə=޻:d;="4={X>?>J> f= u==|;====>>/>9>,> f=ܪ=ǟ=ܪ>>,>,>=pS<^I;~ʜ=B=9=>)>=Y= =h ={a =a=2=y6>>)2>79>-v> =V=ӑb=>>>=>?`>=p<ܪ:Y:Y f>o=s=̾==O> >(>([>8r=\=H1{=={a =2<є9Y:Y;d<`y>8r>> l>%>J>u)=엑==p#=7!=){X=8D==H==> l==?==<1q:d;5p=E= > >n>!>> G>>>!>">K=h=B=C=2=;c= = u> >">=ܪ= />">$>f>>pS>> |i=ܪ=d=V=8r>>'=ܪ=<^I:Zd:Y |i> >=N=鿗=<=ǟ==V<%<%;~;K==~=̾=鿗=B=+K=8D;K<%=H1{=== =={X=d===7!<>:ʜ:ʜ<=V=y=5==<~;Zd:d:d:d:Y:Y:Y:Y:Zd;1{<><%;1{:d:Y:d;Y;#d;l;Y:d:Zd9Y:ʜ:d:Y:d;5p;K<(X'<<ܪ=<$T<;#d:Zd:Y:ʜ;~ʜ;Zd:d:Y:d;K<1q;:d:Zd:Y:Y:p:d:d:Zd:p:Y:Y:Y:ʜ;K;K;5p:d:Y:Y:Y:Y:Y:Y:Y;Y<%<~;d:ʜ:Y:p;K<^I<<>;d:ʜ:Y:Y:d;~;l:d:Y:d;~<~;d;;d;~ ;~:Zd9Y:Y:Y:Y:Y:Zd:Y:Zd:Y:Y:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:Y:p:Zd:Y:Y:ʜ;;K;p;~;Y:d:Y:Zd:Y:d;~<><;:d:Zd:d;5p;5p;K<(X'<~;:d:Y:d;5p;Y;l;<^I;d;~ʜ;Zd:ʜ:Zd9Y:Y:Y:Y:d;Y;;d;Y:Zd:Y:Y:Y:Zd:d:Zd:Y:Y:Y:d:ʜ:d:Y:d;~ <><(X';:ʜ:Y:Y:d;d<><===~<є<%:d:Y:Y:Y:ʜ;~ <:d:Y:Y:ʜ;~ʜ;#d:Zd:Y;="4=p#=l=|;=5p<^I<(X';~ʜ:Y:p:d;5p;d:d:Y:Y<%:Y;~ʜ<><ܪ=~<$T<^I:d:Y:d;Y;~:d:Y;5p;d;d:d:Y:Y:Y:d:d:Zd:d:ʜ:ʜ:d:Y:Y:d:ʜ:ʜ:d:Y:d;Y;Y:d:Zd:d;~;~ ;d:d:Y:d;Y<:2='4=Jw=V=8D=B<;~ :ʜ:Y:Y<,='4=q$T=l=wx=.<1q:p:d:ʜ<:Y:Y:Y:Y:d;p:d:d;5p;l:d:Y:ʜ<(X'=~=7!=%=[==<=;:d:d:Zd:d:ʜ;5p:ʜ:Zd:Y:d:Y:Zd:Zd:Y;K<<ܪ<ä;Y:d:Zd:d;Zd<:d:d:d:Y<2=f=Y==n1=d=Y:d:Y<>='4=y==n=O==pS=;c<8r:ʜ:d:Y;d=5p=HM=q==bZ<5:Zd:Zd=m=pS= > =Z=0!=bZ=8r<<5p'4>F~>5$ ==f=@;&=4=>>.P>&Z> y=T= =5p<<2<^W=/+K==)=f=A^W5$ >ZR>GJ> /=^=`y=0!=> >,>">[==f=0N|<=<є<%=7!==M"=f=A^W >2L>%7a=-=y=$==|>|> 12>|=w=HM=B:ʜ:d:d:Y;5p=Mn=|>> >=V=<#d:Zd;K=Q=y=є=_== ==@;&<2<%<~;~ʜ:Y<~=[=o>'Ə>:Bf>0> ={X<^W;K<ܪ=B=>~>>z>8r=Y=u)=7!<<^I;:p;~ =|;=V>n>5$ >+x>=\<%>1(>.>=ܪ==V>Ǡ=D=m'>([>"_h> f=˛ ==@;&E=A=O=^=m<=;:d:d=u)=p#==^=a=[=Jw<=< :Zd:d;~ <8r<ܪ<7==[<%<$T=}l=>`y>pS>pS>==u)=P'="4pS>f>_C>k+>f==M"=AU>n>G>`>Y!>;/>%=˛ =M"=em=:2=A^W=====)=;l<є=>U>8>c,>0!>n> |i=O>u)>F3>t>_C>~>^}>,==SR=8r=h ==v=د=LZ=_=?=V<%av>+K>->e>:>=Z>r>F|>q>|>{>>X%>&=鿗=X'=8r=h ==E=ܪ==߂=p=V< ;=/>/>>$>A >`>==>$>F|>U>IT>,>==3=^I=8D=H1{=)==ǟ=2=޻= a;Y<@=?>&^>OMk>A#> ={X=`y=M"=s>> >u=йh==l=,<=<=8r=Mn=rG=kt`=5p<2;ʜ;~ʜ:d:d:d:d:ʜ:d:p9Y:d<^I=Y=Rn1=rG=h =2<~:ʜ:Y:Y:d:Y:ʜ=[=B=a=u)=<єK>%>Ǡ==h <~:Y:po>7>H>=>==~;1{>>>= =f=3<%ҥ>R>i->\>0H=I=Rn1<^W=H1{=!> >9>S.>Ph>3oB>o==8r=/+K<<;1{<^W=E>>ID>b>V>,==`y==8r=׌>">S.>n>i>F|>pS=˛ =pS=@;&<=%7a>9>/> f==2=Y=~=׌>>>IT>c~ >^}>;> =c,=f=0N|<2<%:d:Zd<= =,=LZ=I==E>%7a>7>0>r=ܙ==QK<<~:d:Zd="4=V=C<=<>;Zd< <$T=q$T=&v=i[=鿗=ܪ=h= ==;~ʜ:Zd:Zd;K<=~=HM<79>J>.=O=a7=f=!>>,>A>@>, >o==޻=l=?===}l=d=I={X=<엑:ʜ:Zd=.=鿗>d<>V>>>f>K=O>>M>~9>>4>nLZ>=c,> f=̾=@=y===o>B===rGn>d=>>> >V>C>r>:Bf>zr>y>~>>f>[Ѓ>n==+K==9=))>> >=鿗=Cw<ܪ:d=kt`>$>~>q?s>E>4>[>>=c,>z=>ذ>8>q>~>U>i=د=v=d=D=$T>J> >pS=t`=><ܪ=Q=>>Sv>x> >>9>>Cw>M>x@D>:>~9>]<>,=A=!====˛ >> 12>?= =|;>ycu>K>|i>F|=-={X=6P> 12>(>2ݪ>, >Y=ܪ={X==P'=+=== =?=c,==~=:d;5p=){X=2>?=LZ=q=`y=Q=7!=y==2=E=޻=h =){X;K:ʜ:d:Y:Y;~<є=5p=V=QK=+<ܪ<<(X';d:ʜ:Y:Zd:Zd:Y9Y;Y=u)=p#==={X=M"=Zd= <,;<~ > G>Y=AU=8r%>A#>Xf>IT>n=T=7!<(X'<= =_>z>4s>3&v>== G=H1{=~<ܪ,>a7>x>j>;/===H= f={a =O> a>Tk>oo>l]>IT>HM= u==H1{=%<1{;=~=̾>&>ZR>pI>f 9>9===;c=a=9>:>oW>6>:>b>+0!==d=bZ= a<є;~ :>2ݪ>F3>;/>=̾=`y=8D==>8D>i->>{>V >=O==IT<===;&={a <;=~=B=O>J>=c,>Q4>GW>(==Ə=h =~ >=O==QK<=:ʜ:Y:Y:Y<<ܪ=+=7!= a>R>i->C=o===>`>5$ >G>GJ>4?>u)=O=k==bZ=l=%=D==h= = f;5p;Y=h > >I>c,>>>{> =>>WC>E>%>>z=>F~>r= u={X=a=N|=ܪ> |i>r> l==l:Bf>D>N?qv>~>!>S.>>@̾>>?>x>~>>gy6>*U===p=O> |i>&>0H>">={X=8r:Y<~=>=>> ? ?>2>j>%7a>B>~>>>^2>>`>$= ==l=O> >+0!>4I>%>==~:Y;Y=Rn1>>&Q>ۇ>>>}>C> f>!>Tk>~9>>:>g0j>8D>~=̾=\= G=p=>r>i>`== ,>Y8>^2>>T_==?=O>>.P>9>4s>z==h=.=h =Jw=sj= =˛ =AU= =k}=$;~ Tc>:==p#=){X=D=޻==Y=;&=SR=y=QK=%<,;~:d:d;d 12>|=;&=h B>2E>C>96>%=h=+<<ܪ==F+>pS>.P>,>)=O= =7!>KRA>b>V>,==p#==p#=D>>K >i->f 9>A>Y=є==7!=B<;J>F~>^}>Qܙ>* =ܪ==7!==N>79>i>>~>Y!>:==`=Jw=~!>79>,> |i==QK=2==>2ݪ>av>{>>qm >ID>pS=;&=8r=7!<<>:d:d<=Y= u=엑=_=?=h <<==|;=ǟ>%>8D>GJ>?Z> =_=pS=A^WE===3=/+K |i>;/>J/>*U==\=`y={X=t`>J>,>.P>=~==~=V=A^W=`y= =v=h= ={a <ӑb:d;Zd=QK>|>h3>Z>>8>S.==2>>79>`>wx>t>Y!>/=l=I=M"=.==йh>> f=A==h <:2<%= >([>BB>=>#>@ > G>-v=>$1>\>^>M">P>|;o>IT>=D={X={X=>> >([>"=엑=<1{:Y<(X'=y>(>>Ţ>F>T>>=c,>o>%>[>:>> a>x@D>EY>=|={X= =|>Ǡ>">,SR>==<;d=H1{=>{>>>>֍>8>4>t=> l>5>Z>k->f>H> =鿗====N|=y6> >>=ǟ=|;<^I:Zd`>c5?>B>p>+x=^W=M"=q=LZ>>n>> =i[={X==H=D=8D=q$T===O==y=8r:ʜ:Zd==h ===q=\==X%=7!=Q<^W<8r<="4=Mn=h =h =8D:Y:d<~;Zd:Y:Zd:ʜ:d:Zd:d;Zd;l:d:Zd:Zd:d:d:Y:d<є<$T<̾>o>pS> ==5<ܪ;1{ > 12=y6={X=QK<7;5p >1(>&>`y==/+K(>=>:2>A =I=M"=8D<~ z>-O>">==7!<7=kt`= >>>=>W>QK>/====Mn=8r y>= u=y=Q<7=p#=>Y>8i>Ix>C>"=m=)=7!<ܪ<,:ʜr>n>HM== =H1{<$T;Y:Y:Y:Zd:Zd:Y:Zd:d;<%=$="4<$T l>=<=M"=Y<==Sb=a==g==AU==sj=*<=<~ ="4=Rn1=B= =sj=%<:d<==>%7a>d>ycu>R%e>8r=M"==H==> G>/t>1(>=e=E=u=@;&=QK=8r== u=i[=̾=u)=:d;d=;c=鿗>U>>V>)>@=̾>={X=>">QK>O>:>޻=,=M"=p#==-=ϖ7>=H>~=o=!=H1{;~ :Y<~=8D=>W>>q>>Mn=I==ܪ>">;c>M>K u>8i>)=ǟ=M"=sj=8r={X=>> 12=~==Rn1;;=[={X>">t>x>we>'Ə=D==!=>E>* >)2>=t`==}l=Mn=\==є=s==O=a="4;5p:Zd<:2=3=> 5>">=;&=h =+=h ={X=˛ ==~ = u={X=sj=/+K<~ <==<є=====;c<^I:Y:Y;K<2=8D=l=V=u)<==Rn1= =d====V=8D=%<ܪ<<ӑb<<$T<є<5p;Y:d;<=Y=\= =a=d=)=rG=A^W=+=[<<ܪ=8r="4='4= f;K:d:Y:Y:Y:ʜ==8D=K =5p=V<ܪ<%;5p:d;Y==pS=ä=ܪ=,==H1{b=e=,=M"=$<;~ ;Y:Y:d=[=.===1{==K <ܪ=~ʜ=;&>=H>%> ==d=7!<<~:ʜ:Y9Y l>b= u=y=Y=7!=)==Y==)=+<;d:d:d;~;K;Y;5p;Y;Y;Zd<^I=HM=Rn1=Zd=7!<̾><~;Y:Y:Y:Y:Y:Y:d;~ ;d;Y:Zd:Y9Y:d;~ <1q<~;Y:Y:Y:d:Zd:d<=+=:2= a<;K:Y:db>o=׌= = f<є=){X==H=0!==O==)=8D<̾><8r<є='4=a7==y=l=;~:ʜ<8r=8r=y6> >.>Y=D=;c=%=n=X'=O====E=l=u);5p<=sj=> >/>==;c=HM=q$T={X=s==A=Z==p#=k}<7= a=m= ==h=d=V`y=AU= =<=8D= =?=ǟ=O=c=HM=E<~ <<$T=@;&=[=:==[='4<:ʜ<<Y;1{;~;d;K;5p:Y:Zd:ʜ;~ =L>=[=Jw=5p=@=<є:d:Zd;5p;1{;Zd:d:Y;Zd<=2=A^W=.:d:ʜ:d:Y;K<1q;~ ;Y:Y;5p<(X';~ :d:d;5p:ʜ:Zd:Y:Y:Y:d:p:Y:Zd:Zd:Y:Zd;Zd<~<(X';ʜ:ʜ:Y:p;~ʜ;~:ʜ:Y:Y;1{;;Y:Y:Y9Y:Y;Zd<;~:d9Y:d;Zd;l;Y;#d;Zd;5p:ʜ:d;Zd<(X'=[=L>=l=em=8D<;;Zd:Y:Y:ʜ;d;;p:d:d;:d:d;d<5p;d:ʜ:Y:Y:Y:Y:Y:p:ʜ:ʜ:Zd:Y:ʜ;~;Zd:d:Y9Y:d:d:Zd:Y:Y:Zd:Y:Y:Zd:Y:d:d:Y:Y:d;~ʜ;:ʜ:Y;l<%=޻=q$T=pS==[=D<<;K<>:d:Zd:Y:p<2=[=  l=t`==3 l=={X=8D<8r<1q<ܪ=Rn1==D=є=!==0!=?=c,=є=X'=f:Y<%=@=sj=f=z==+<<~<~;~ ;Y:p:Y:Y:Zd:Y:p;~;;K:d:d;~ʜ;~ ;~ ;~:d:Zd:ʜ;;1{;5p:Zd:Y:d;~ʜ;:ʜ:Y:ʜ<<~;Zd:Y:Y:d;K;K;#d:Zd:Y<~=B=B=L>=@=+= ===M"=:2<>;K;1{<><ܪ=+=5p=[<8r;:Zd;l=޻=y===鿗==.=+< f>Ǡ=I={X=`y=Q=[=p#=p=Դ===|;==йh==Zd=u)=~=l=q=O=O=I={a <ܪ;Zd:Zd;d< ;K;Y:d:d<~=~=rG=0!=;&=c==z==HM;~:Y:Zd;5p;d;<%;:ʜ;~ʜ;K;5p:Y:Zd=V=9===`y= =SR=!=N|=k=l=E<=:ʜ:Y:Y:d 12=$T==7! >F3>[>?>=%=HM<ܪ=7!=d=AU>>u)> f=$T=ܪ=ܪ=2=߂===;5p:Zd:d;Y=Q= >:Bf>>w>t>* ==U=8D==߂>@>;/>F3><>&*>%>>:>>> =˛ =sj<1q:Y:d;5p=$=O>A>B>M">|;o>0=;&=em=\={X>>1y>Qܙ>\>Mn>8D>)$>,>6G<>5$ >t= = <9Y:Y:ʜ<=>>Y!>o&>Q>%={X=8D=@;&=a=鿗>>9>@̾>6G<>:>>A >)$>([>Y=s={a <:2:Zd<(X'=T=> l>>=2=`y<ܪ==l=v=ܪ>>==B==>|>=i[=a=@;Zd:Y9Y:p<8r=:2=f=HM=~=:2<<%<(X'<%=9h=|;=Y=Y==8r=3=HM=^=d=B=HM;d:p:d:d:Y:d<(X'<є<ܪ<ä<:2<~;Y:Y:Y:Zd:Y:Y:Y:d:d:d9Y9Y:d:d:d:p;Y<%<>;:ʜ:Zd:ʜ;Y:p:Zd:Zd:Y:p;K f> >%==?=`y=[= 5=sj=h=7=V==z=J>T">t>i->@>w=є=y= =د>q>F3>OMk>+=i[=p#pS>&> 12===[= =>;c>>>޻>q$T>79=r=!=>>HzG>>3>f 9>=d%> >=q={a =}l=X'=>7!>{>M">w>k->5$ >b=h=2>`>F|>}8>6>b>M"=^<:d<5==ä=ܪ=!=n="4=2=~ʜ=> >:2>V>Pp>2> = =)=pS=ܙ>>;c>C>%=AU=z=>'>@>>o="==p#=8D=7!==y6> ===[:Y<:2= =>ҥ>,SR>n>>pS>(>9>>=>4I>===l=em=8r=AU>,SR>J/>;c>=;~ <=4> f>4>?Z>5l> a>f>,SR>9>;>+> y=йh===h =M"=>=c,>f 9>Tk>r=">/>!> >>`>>r>K=ǟ=d=rG=B===}l=1{>n>C>8D=={a <~:d=){X=======D==v=/=h =7!= f<==Jw=8D;Y:Y:d<~ >GJ>`y>@̾>==+<==8D=a=>8r>> ===˛ =йh=i[==f=8D<~:Y:d;1{=Jw>^>t>SR>>a>W==y==p> >@̾>kt`>~9>wx>Y!>9>0H>9>:>* >=4<=:Y9Y:Y:d<5p= G>:Bf>V>睜>j>F+>>=?=q>b>F3>q>>>q>BB>a>qm >{>|;o>d>0=ܪ=QK;Y:Zd:d<=SR>F|>>FO?vL>|>BB>,=^W=;&>>`>ذ>h>Sv>ŢM>uM>>j>w>>{>@̾==n;d:Y:d<5p=Y>%7a>>Ѹ3>s>>=H>޻==I> l>K u>4>>>O>>>{>a>I>g0j>/=i[=QK;:Zd:Y;l=2=,>:Bf>_C>>}>/= u={a = =|>P>F|>j>y >nLZ>V(>A>A>G>F|>.>K=k=~<~;Zd:Y:Y<>=Mn=!=A>=l=h=em<==sj=?=>> 5>===>b==,=='4<>;l:Zd:Y:d;K;;p:d:d;d%> f=_==;c޻>&^>=,=d===>9>>o>w>i->,=V=Ə==LZ>2ݪ>f>pۈ>C==5$ >|>%>y >,==йh=A>:2>k}>G`>">q> >'>GW> >w>H1{>>ͽ><>c>i-=_=8D;=%=>k-> >db>>ZR> =>>f>a> ???w>>^W>E>:Bf>9>d>?b? |i>E>^2> =<%==엑>h3>3>h>d=>R>=t`>>b>!>ֲ? ? >~>;&>^>>=>;/>>U?b? >~>>$=y<>, >x@D>Y8>hg>P==h=LZ>3oB>>c>ٮ>e>c,>)>S.>">'>J>k}>+p>>>qm =l=P';~:Zd= =v>u>r=o=a=V=YAU==>!>R>o&>nLZ>R>,>==!=>.P>_>mq>F~>u= <:Zd:Y<ܪ=8r<$T<<%:ʜ:Y:Y:Y:Y:Y;1{<2=2=V=em=l==H=.= G=0!== ==V=B<<,<=){X=Sb=8D>>* >%>r====;c=E=X'=G>'>Ǡ=!=HM:Zd:p= 5=h>J>A#>S.>J>A>EM>\>t>~9>o&>K > ==?=HM=h>@>k->x>>8D=<;Zd={a >>Q>_C>%>>>}>~9>3>ذ>BB>>n>9> =O=>`y>bZ> >uq><[>4>=C:d;~= >>i->m>^2>>v^>4>v^>>BB>x>f>0>=O=ǟ>%>}>U>m>X>?>(=rG;5p:d=p#>>U>}>>v^>~9>n>sj>~>{>av>6G<> =O==!>K>^}> >N>>>=Mn:ʜ@>Luq>`>UF+>9>* >+>.>$> =AU====l=E>M">hg>>>=c,=c,<ܪ:Zd:ʜ=0N|=q=엑>`y=LZ=˛ ====q=sj===2=+=HM=Y=8D=HM=B>>=D=5p;;5p<ӑb=9h=V=;c=k}=<=;Y:d:d;Y:d:Y; =$T===<2A>>ذ>~9>,==m=K = =>>9>ID>G>4s>> Y8>%>">`==޻<7:Zd:Y:d<~=Cw>A>!>>>y>>@=!=N|=~>@>>>a>>>Y8>pۈ>z=>~9>j>9==sj;d:Zd:d<7=V>->??!*?b>ϖ7>Z==鿗>2E>q>>b>>6>>>L>>,>q>t>"=>d=??#1?)$?!|>>q$T> >8r>GW>>I>m? ? ? >Z>w>[>̾>>>2ݪ=hF>s+?&Q?C? 4>I>U=l=>:2>>_>N?P?>}>q>)>>>t><>pI>q={X<;~:Y:Y<5p=pS>&>v>Ѹ>b>Ȟ>:>J==h>.>R>/>O>U>X>SR>N>3>|i>>l]>4s=߂=sj<є<;5p9Y:d<엑=^>>Pp>i->GW> /==H1{=V==9>([>A>R>K><>/>.>/>(>,\=̾>=[=u)<==n=d=D==h=h==2=D={X=3=7!<^W<=u)= a="4=$=&=@=[<>;Zd:d<~;K:d:Y:Y;d;5p:Zd~>:Bf>T">G>* == =rG=l=4=->'>"==d=+0>~>>ycu>0H=;=_>b>79>>Sv>Re>>U>>C >Ǡ>`y>79>Ǡ>>W>c>GW=̾="4;~ :Y:d=h >>>>װ>>Ѹ3>!>=c,>ҥ>9>>3??$?%I?J>nU>{X>hg>Y!>E>??v? d>>:2=k}Q>6P?b? g> >є>f>8i>^}>J??(&??,w?+'>ۇ>z>->I??.?9U?(&?->=˛ <ä:Y;~ʜ=d>Luq>̾>? !j>> k>^}>2L>Y!>?)?$?8?:?*V?b><>A >NX> ??0H?; ?*#?O{>j=AU<%:Y:Zd=`y>>>>⣧>I>>>#d> >0>:>Ϻ??ذ?v?Q>(>q>{>>j><>"?HM? 8?Y>Ҷ>Tk= >j>I>_>r=2=I=s>* >pI>̚>>6P>&v>>X%>d=>>A>->U>Դ>p>i-==8D:ʜ<1q=]=E=={X=f="4=+=p#=v=엑>>">%>z>= u=k= =?=>z>$1> =l=/+K;d:Y:ʜ;;;~ʜ;K="4="4=@=$=4?=4?=Qn>/>,>&>/+K>A#>WX>`>U>8D>%=ϖ7===9>|>>=>av>Mn>%=)<5p:Y<(X'=> f>U>>pS>>>6>N>/>{X>es>|>Ix>%=I=ǟ> >n>t>Ѹ3>Z>.>J=V;5p=c,>P>>1{>6P>ן>t>c,>v>͘>>A >n>3&v> 12>>F3>,>C? {4?>ѓ>hg=<:2:Y<7=йh>R>>,>`>>/>̾>W>L6>Mk>>>k+>0>`>)>`y>?;??ͽ>(>Y8=O=c,>!>a>Mk>w>6>>>>J>@>{>>=>%=>>EM>q>? h>ݩ>z==є<^I:ʜ={a > >^}>>>>7>{>>y >{>>n>Mn>"===D=̾> >q>c,>6u>X>>.=8r;~<5=k}>u>1y>A>(>>%> =e=D=\=8r=sj=h =l=d>>GW>ycu>k->+=<1{:Y:Y;K;d;~ :Y:Y:Y:Y:Y:Y:Y;K<8r<2<<#d;#d:p:d:d:p:Zd;<%< ;1{:d:Zd;~ʜ>)=B=SR=@;&<%=8D=y=E====4==={X==3=2<:2:Y:Y=B=s>b>̚>>>79==|;=h ==y6>&Z>R>o&>pI>Y!>2ݪ>f>(>3&v>* > l=p=+:ʜ:Y<(X'=>m))> >{X>,=;&=> 5>Vi[>E>W>5?>0j>N>>>M">>j>[>=a<^I:Y:d='4>)>=?s?-?4 ?"h>ܽ>z=>>>BS>ذ>h&???? 4>j>>ͽ>Sv> k>>A=O=8r:Y:Y:d=Rn1>+0!>-??94?@MY?+ ?>->J>>`>R>LZ?Y? O?"??% >j>y6>_>y>q>S.=V=){X:ʜ:d=5p>r>,? .?*V?1{?u;>q>{>>Y> 12>Q4>>ݩ?Zn???>a >>װ>q>h>`>=c,= u="4;:Zd9Y_>̙?M? >>/>4s==O>>>nLZ>7a>Ѹ3>(>">>_>S>`>>>S.> 12= G=A^W>f> G>~>0=,===̾>%>A>k->>q>we>^}>Rn1>M >C>)$==^=8D<1{<><;l:ʜ;~<(X'<8ru)> >u)=د=={X=!=>:>Z>{>>q>Ns> =AU=Ə=a=Y> >3oB>9>==Mn<^W<%:d:Zd="4=>b>>>^2>f>n> >>Zd>SR>*_?t?\>&>>~>1(>!>X>->ݩ>))>w>z==t`=H1{ID>?? D>>;&>oW>=>[Ѓ>R?z?$/?8?;w?*V?>>m>>6?:?&?/?m>(>i-=D>(?? a?&Q>N>%>_>z>$/??< b?OMk?Q8?F!?'?E>>y>(?$o0?F3?M;???>X'>|=8r:Zd<^I=Y>>}>?J??> >,\>WC>>̙??7?L?O?C?&+?>U>!>#?&Z?GI?Oq?B8?}>r> 12=Q:Y;Zd=pS>?Z>i7>F? >j>>W>+0!>N>q>?~?+ ?0?$?@>v>4>!>I???,A?7?'Ə>h>4=dM >> >)>EM=A=د> >E>>>>>>>> a>K u>=c,>w>4>?s>d>>n=;~:Y<ܪ==> 12=鿗={X=p#=kt`=pS=ǟ> y>,>?Z>IT>EY>/> =˛ =2=LZ>(>Vi[>g0j>C[>b=%>9>G>D6P>A>X>lN>q>b>=>=AU=d==>>_>>o&>,=I<%;Y:Y:Y<є= > a>pI>>V>`>BB>>>!>> > a>ZR>!=G=鿗>(> a>q>LZ>Z>3>79= <>:d:Y='4=>Y!>c>Mk>B>>йh>˛ >!>v>7>>T>a>A>>>l]>͘? ??>>w=o&> k> >~>FO>S>>\>->1>j>SR>>BS>>>,>t>-??([?#'?l>U> y=8r:d<==AU>Y> >AU>*_>Re>׌>w> >>ǟ>MG>v^>X>$> >@>oW>F+?b? 8?f?>?>`y<ܪ:Zd;=k}>n>d>>^>4>}> G>>>f>pI>?>%=2=O=鿗>.>>?<>m>>c5?=<%==h>ҥ>UF+>n>j>T">?>8>1(> >E==:=y=B= = >(>>>E>b==8D:Zd:d=[== u=-=鿗=د==D=SR=y=@;&=~<ܪ<7 l>`y==C;~ʜ:p;;l<=.=bZ==E=!===5= ==9=l=*<(X':Y:Y<%=O>T">k}>>|;o>f={X=Sb=;c==6P>>@̾>f 9>l]>X>3oB>>%>/>&>==){X:ʜ<~=>i->h&?9? >j>>==SR=LZ>A>w>>\>3>l>q>ذ>޻>&Q>6>Y!>M"=d>?u)?+ ?1MG?d=>x>c5?==>2ݪ>>N??K?HM?>>>q>ɝx>">>A== f:Zd:Zd=H1{>0>??8?>?)>^>:> >>K>9>v??!?$?C? >>1>;J>I>A >T"=鿗=2:ʜ:Y=){X>J>?Q?*?0r??>鿗>o&>>=>@>k}>X?n??Tu?_U?>>۬>Mk>jl>.>=c,=O="4;K:Yk->?? U>j>̚>.==>>b>>ܙ>Q>F>b>v>&v>><>7>R> =aNs>)>>>/=Y=n=h => l>=`>lN>3>>>k->Y!>Ph>A>(=B={X=7!<<%;5p:Y;~=Q=M"=˛ =-=,=HM=$<>|>=H=l=LZ==;&=d=p#=~;5p:ʜ;~ <><~;Y:Y;~ʜ=QK=̾>>!<7>Y=ܪ=?==D=n1>>EM>aB>`y>C>Cw=ܪ==\=̾>>!>%7a>=^=7!<є<1q:ʜ:d=5p=I>]L>> k>̚>i->#d> 12>J>Mn>ҥ>T>s>>3>>>}>5$ >n>KRA>>n>݅L>>bZ==7!<^I:ʜ<>= >C>db>;? 3>>>t>>]>U>>i?@?0?4I?&? a>܆>ذ>z>?I? 8?(׍?>\>WX=0!~9>b??*_>G>_>|;o>Y?]?2^D?IBx?MO?A?%-?>I>J> ?P??Z?H?8?b>?=LZ<ܪ:Zdz=>x?_U?A ?>>%>V(>wx>]? i?,?EƳ?J?>)?%?>,>n>(?"g?C?L??<.?>>u96>&v>E?E>H>L>[>* >F|>)>?)?$J?)?!r? >|>>%>J? g?)W?3C?$\>d>_C=<8r<=̾>F|>>>>GJ>=AU>>9>>P>>5?>ڈ>^>>R>BS>|;o>>?b>3>@>:={a ;5p:Zd<%=a=o> ==?==p#=M"==A>J>/>=>A>2E> ==6P>|>3&v>av>q>OMk> =5<:29Y:Y;1{=AU=׌=|=I= =7!< |i>.P>=`>9>1y>79>F~>Y!>\>GW>(>u=c,= =3=D>>Ix>m>Z>C={X<;d:d:Y:Y<2=X'>>d<>%>a>>>%>q> >>>|;o>E>=I=m> a>>X>v>H>>* =fM>@>I>؋W>>I>ˉ>->!>>>>oW>5$ >Y>i>c5?>^W???v^> >=د<ܪ;p:Zd:Y=.=LZ>em>q>>I>q>^{>F+>ي!>_>#>¥>>sj>8>>,>>?V?#K???>^2> 12=Q;Zd:Y<엑=̾>>Q>>Դ>Re>>k>W>}>J>^>~>t>Ix>> l>>j>͘? U? s?G>=>><:d;~ =Y>>|;o>>>4>>>>)>6>i->9> 12=AU=Y=<>,>&Q>^{?>x>ŢM>em=<><==D>>V(>rQ>pI>^I>GW>=c,>7!>"_h>B=̾=%==kt`=8r=>* >>>>f>o=QK:Y:d==d=AU>K>==AU=|==Cw=\=~<> 12= u=c~ ;~ʜ:d;Y:Zd;5p<%>]<>g0j>6G<=ܪ=u=8r<2==[=1{>w>.>:>/t>)>b>~>`>Ǡ=׌=޻<%:Y;Zd=y>5>~>8> >?>_=ӑb==H=n={X> >V >>>;&>&v>pS>{>>vG>x@D>b>7!==;dv^>FO?8??(>O>%=E=>=H>WC>̚>`?d?>>ݩ>a>q>0!>>o&>$\=w>??!?%m?)>uq>EM=D=>z>{>>??^ ? B0>x>>Sv>`>2>z>4I=<=:Y<1{=>V>E??{F?>ן>8D=̾=>r>lN>J>b? ? ?M>N>O>>>E>>nLZ>n=I<ܪ:d;d=q>A#> P> >q>I>{>>=%= =>2ݪ>d>>Е>ܪ>N>&v>>>>g0j>3oB=g=,>k->{>>Ns> ==u)=Q==˛ >>F3>i->wx>k->U>@>6G<>&> =O=f<$T;~ :d:Y:d<є=p#====QK< :ʜ;~<%;Zd:Zd:Y:Zd;l<><~ʜ<2<ä<<<>;K:Y<>=8D=d=ۇ=e=B=!=pS= ===O> l>>">`=== =[= G===F+=X'=C<ӑb%7a>q>>vG>8D>Ǡ=m=>>\b>o>s>>U>f>K>>>C>X>.>ذ>t>r=/<%<%:d;=p#>Y>>>|>ͽ>>F|>d=>,>k->t>? b??Ǡ>+>D>rQ>S.>:>W>ʜ?:>#>>%=`y<~:Zd<#d=)>:Bf>>{?q>{>db>o&>8D>F~>,\>܆?>?$?*#?!`? >5?>>>$ ?b?P?'Ə?>>Z=<Y9Y;=f>7!>y>E?_C>N>!>hg>/+K>A>>c? 4? 8?')?P? B0>T>Z>>? ?#1?+BT?w>*_>o&=D< :d=8D>>a>ˉ>X>_>~>2ݪ> >t>X>>X?? }?r>s+>e>B>sN>>>V?w??Zn>8>F3=;<>= >%>[>z=>[Ѓ>ҥ="=!=˛ > 12>8D>jd>>;>c>!>g0j>.>%7a>R>pS>>p>$ >n=="4:p9Y<5p=bZ=D=йh===P'=8D=l=HM=h=i[=j> >> y=7===AU>J>=c,>GW>,=ܪ=V;~ ;Y<2=8r=$=:2=V=h =n=Sb=){X<ܪ<^W="4=u=k=d=8r="4<2=~=%=[<ܪE>> > l> >f>* >([>pS=o==y=QK=K ==ܪ>">/t>n=Z=[4I>c5?>y >oW>c5?>c5?>vG><>>i>=>===>>C> a>}>BB>`==QK">wx>>MG>0!>>>>^2> >~>pS>o&>9> =->>7!>>H>FO>v>>F3=SR<+K;K:p<є=h>79>`>>Q > >6>J>&v>">uM>E>y>=c,>Y=x>>K u> >? 7?E>H>uhK=<;5p:Y<:2=d>(>t>D>W>8>&v>`>^2>4>z><>T">n==ܪ>b>;c>?>3?NF>>->n=йhRn1>/>> >,\>>{>>q>`>=c,>r=i[=?=d=D> >hg>r>l>,>>9=4;1{<8r=>o>9>U>WX>F3>4I>&>@> 12=د=d=h =7!=u)=5p=@>>M>{>t>:=ܪ=@:Y<$T= = =g=o=Z= u=c=q=`=D<1{;d;Y:d:db>=O= = f<%:d;~GJ>~>>Y>=3=8r>8D>g0j>}8>o&>GW>,>.>.P>@==<=:Y;K=Y>3&v>q>Е>)>0!>Ix==V=.=)>>KRA>>$ >6P>>A >>y >pI>X%>+=I=h ;l<(X'=E>R> k>N>$T>1{>q==sj=V=!>n>vG>0!>ӵ>>>>A >>4>nLZ>;c=G=<~;d=q>;/>d>ֲ(>`>>[Ѓ=Դ=Zd=A^W=E>>i->=l>ŢM>k>Sv>>V>>{>[>,SR==p#;:Zd=5p=>\>M">>t>J=a=<==8r=>/>k+>>>o>>`>Qܙ>?>%=x==.:ʜ;~ =h =i[>pS>f==d=8r;d;ʜ<===H=Y> />* >5$ >/>n>r>=t`==M"="4;d:Y;d==P'=]='4<^I:d;~;~ʜ:Y:d;~;d;Zd:Zd:Zd;Y;~;Y;~ʜ;~ʜ;~ʜ:ʜ:Zd:Zd:Zd:Y:Zd:p:Y;=߂=E=9={X==LZ>">2ݪ>=>=c,>%-=l==?==A>J>=s=[>l]>>pۈ>6G<>`y=йh=I>>?`>|;o>>z#>`>>^>n>>%>`>P>>z=>=yID>>,>>aB>=>>,>k->>w>ܪ>i[>>NX>Qܙ>:Bf>`>q>9>_>>k+=ܪ=B:Zd:d=8r=̾>EM>>z#>k}>[>=V=A>&Z>av>>#> >G`>>>Y!>C>pۈ> >`>N>̙><>='4:Zd%>]<>|;o>aB>([=2=D=Y>>* >Y!>7=>>̚>>lN>3&v>)2>Ph>,\>>I>$>`]F=AU<$T:Y:d<$T=^=>%>>=1{==q$T=f=0!=˛ =>r>.P>=c,>79>޻=t`=>>C[>q>\5>Z>Y= <%:d<є=`y= =[==<ܪ<==7!=`y=B=M"=X'=?==HM==u=d=">> |i=_=޻<$T:ʜ:Y;5p< <:ʜ:Y:d;d<^I:d:d;~;d;~ <~<~;d;5p:p;Y>">n>>>+0!>5$ >/>=鿗=l= == =E>|>.P>C>79>=><<%:ʜ:Zd;Y=8D= u>&>Xf>n>i->Y!>Vi[>`>h3>a7>C>z=V== ==>79>}>K>>Mn=LZ=QKA^W>~9>v^>f>>w>z=>{>>nLZ>N>"===?=> y>T"> G>!>SR>~ʜ>=f<:2:d9Y:Y=(X'=AU>;c>{>>>d>>o&>iv>f 9>V(>79> =˛ == G=v=>F|>%>~>>{>E=f;:Y<={X>pS>K u>k+>k->Y!>EM>9>3&v> >B== =bZ=8D=^I=>>^>>>F3==A^W:d;5p=C=̾> >">(>t> =r=-=Y=a=Rn1<%<(X';K<~=){X={X>`y>">==>=ǟ==Y<:Y:d<8r=p#==G> l>=йh=c,=є===8r<ʜ:d:Y<ܪ=I> G>K u>OMk>n=c=V>EM>[Ѓ>Q4>1(>P>>=B=c=p#<(X':p=@=йh>8i>o&>rG>=c,=ܪ=m<;<ܪ=:> l>=>n>>{>>WX>8i>.>$>="=y<:Y<7=є>&>WX>Y!>+0!=Y=C<5p;1{<ܪ=>>8i>av>we>l]>K >2ݪ>%>>`y=;&=rG>'=B=3<^W:d:d >, >9>2ݪ>t> y=l=I=2=f= f;5p:Y==?=a=B=A^W<:2 >)> l=ܪ===!=ϖ7=N=o==8D;~ :Y<(X'=8D=!> l>ҥ>=׌=d=l=5={X= =>J>4s>@̾>79>=Q0=د=>>96>;/>pS=<엑:Zd;K="4=>u>z> ="=q=}l=B=d=є=g>%>/>A^W>:Bf>==m>>,>Pp>W>0H="=7!:d:Zd<== =鿗=AU==p#=8D=H1{={a =%=E=ӑb>>>r==,==>>9>=`>=̾=q:d:ʜ<ܪ=rG=HM=u)=YAU=<<%=Y=7!=^I=====4==f=X'=i[>>>="=5<~;~:d:Y:Y;1{<=k}=8D=7!=Y<ä<(X';Zd:d:Y:Y:d;K<~ʜ<̾><ä=B=鿗==D==/+K=8r=[=Y===޻==,== =Y<>:ʜ:Zd;5p=2=E=>`>> y> >)>>=Q0=={a =IT=D=V= =Y>Ǡ>> =,=u<;l:Zd;~=bZ=د>E>2E>3&v>+0!>#9>">"4>J>?=h=~=Zd=K =h =9=m>>96>.>=d<$T;~ʜ:Y;Y=V=AU>t>7>9>/>#d>f>HM> y=_==`y=){X=u)=5p=y=s>>4s>,>=-<~ :ʜ:p="4=!>>> >J> >b=o=s={X=em<~ <:2; f>Ǡ=O=< ;~;~ <<2<< :ʜ:Y:Y;K=bZ=D=2=~=N==߂=i[=;&==8D<ܪ=H1{=y=d==h <엑;K:Y<~=Mn==O=I=i[===E=>=h <ܪ;~ʜ:p<~<ܪ=9h=n=m=5p<;Zd;5p=~=[={X==d=y=|;=p#=E= f=B=E="4<ܪ<<<$T;5p:Y:Zd<>=%=p#==N|= =йh=̾>=!=3=Q<~;5p;K<<%;Y:Y:Y:Zd:ʜ;Y:Y:Y:Y:Y:Y:d:d:Zd:Zd:d:ʜ:ʜ:Y:Y:p:d:d:d:Y:Y:Zd:Zd:Zd9Y:Y:Zd:d:d:d:Y:d;<~<Y<;~ ;K:ʜ:Y:Y:d:d:d;Zd< <8r<<^W<<8r;;Zd:d:d:d:Y:Y:d;Zd;Y:Zd9Y:p:d:Y:Y;Y;~ʜ;Y:Y:Y;5p<>=p=[=Y< :d:d:ʜ;d<^I<><= f=+=8D=){X<<;;Y:Y:Y:Y:Y:Zd:d:ʜ;K=~<8r;~ ;~;5p:d:Y:Y:ʜ;~;#d:Zd:Y;;Y;Y:d:d;<<~ <є<~:Y:Zd;~ <8r<=8D===h=Y==== a:d<><$T=P'= === =c,==8r=<%:Zd:Y;~ ==Rn1=rG=bZ=@<#d9Y;Zd<8r=1q<<^I;K;~ʜ;Y:d:Y:d;d<(X'<:d:Zd;K=Rn1=[=%===:2<ܪ<5p;d;Zd:d;~ʜ;;Zd=a= =h ="4<є;5p:Y:Y:Y:p:p:Y:Zd:d:p:Y9Y:d;Y:ʜ:Y:Y:ʜ;<>;~ :d:Zd:d;Zd<><==Q<$T:ʜ;K=){X=y=d==9h<%:d<1q<==7!==='4<;~:Y:Y:Zd9Y<ܪ=k}= f<;lw>==V=8r=q$T==G> > l=={X=`y<엑f>r=йh= ="4=}l==9> >>=׌==T==?=7!;5p:d<%===pS====O<ܪ<;~ <;~:Zd;Zd=A^W=> l>">`=йh=q$T<~:db=A=O==D<ܪ<^I`y>> |i=D=h <Y;~<%=~ʜ=>E>pS>%=LZ=+K=n=~;1{:Zd:Y<=f==Z=O=a=Q;~;`> 5===[<$T<%;~ʜ:d;Zd<7=bZ==rG=Y;:Zd:d;l:d:p;Y;~ ;d:ʜ:Y<8r=8r=5p=*<1{;K:ʜ=8D=Y>n>;c>&Z=ܪ=l=]= =B>:>5l>4> G=鿗=SR=p#=2=<=8D=l==M"=X%<2:d;K=l>)>hS>l>w>/t=O=4=ܪ>>>F3>Y!>U>9>w=6P=y=Jw=){X=2===== =%;Zd;~ʜ=[> G>ycu>o>l>D6P=LZ=I=> >EM>WX>QK>5$ > f=̾=~=B="4=5p=[=q==!= =HM;Zd:Y=(X'=g>GJ>t>em>(=,=M"=h>>!>/t>)$>==a=QK=@<ܪ<==Rn1=)===em<є:p;~ʜ=`y=ܪ>> =O==,=\={X=O=I==E=l=7!<ܪ;:d:Y:Y:Y:Zd:ʜ:d:Zd:YpS>(>=t`= :>="==8D<ܪ>/>A#>79>`=+K<=<>=u)=k}=))> >9>6G<>P==Y=;c=<ܪ+x>1y> f=SR=[>;c>T">Luq>,=j=4=`y=u)o>P> ="= Tc>79>H>B>!===E<7r> >==q=bZ= y==)=="4==Y>>>> f="==z==<є= f<==.=l=3==7!>l>~>o&>"=2==m>$>Luq>em>aB>F|>t=I=^==V=`y=pS=2=̾>=̾==/+K;K==йh>\O>~>;&>,>t>%=I>޻>HzG>y >4>>j>9>== =|;=y==鿗>b==2=mh3>&v>>c,>~>$=>>IT>vG>t>>f 9>5$ >=!=y=u= =c=o>==є=p#7>O>SR>>f> =ǟ=N>(>HzG>[>U>9>%=O==h ===em===ܪ=D=d=8D;d:Y<$T=c,>,>V >GJ>==8r=k=>o>)> /=== =Jw=~<2<$T=QK=y== =E<>;~ :ʜ:Y:Y;Y!>5$ >(>=9Ǡ>@>>=!=em=~<ܪ<1{>=c,>Ph>B>E==4?<=A^W=h>>=>Y!>Tk>2ݪ>b==V="4=B f>8i>IT>=>==8D<==8r=>+>[Ѓ>vG>n>GJ>%==rG=2<=<;K<5p=q$T=йh>>%7a>z==HM=Q<===_>([>U>k->d<>=c,>Ǡ==`y=Y<<%:d:d |i>.>=>7!>=J===8r=5p="4<2;d:ʜ;d%=V==8r=Rn1=+=){X=V=y=f=/=K 4s>:>k}>F>2ݪ=6P==>, >Tk>k->i>O>&Z=o==5=rG=l===-==0!=@;&;:d=;c=B>vG> k>j>/>>"=> G>Pp>~9>x>3>sj>A^W> == G= =^=ܙ>>u)>>=,=8r>ˉ>>/>[>,>?>@>O>|;o>|i> >n>=c,> f=;&== =Ə=ۇ> >> l=O=<9Y<ܪ=>IT>d=>>$>qm >r=ϖ7>b>,>Ph>b>^}>A#> G=߂=Ə==h =y==鿗=A=V=l=V<%;5p=7!=AU>;/>f 9>U>z=?= =X'=_> >>pS>=,=9=m='4<==,=B=X'=E=\=p#<ܪ<޻<>;:d:Zd:Y:Zd:Y:Y;Zd<$T;~:Zd:Y;Y:ʜ:Zd9Y:Y:d;~ <<ä<1{<8r;1{:Y:ʜ;~ <(X'<%;~ʜ:Zd:d<~>#9>== <̾>;Zd>>J=ʜ==QK<7<є:d`y>.>=>3oB> =E=+<8r=:2=D>>V(>Ph>/t=~=:=8D= 5<ܪ<;~ʜ<^W==A>* >:Bf>/t> 5==7!<$T==ܪ>)$>Y!>pۈ>kt`>C> ==Rn1=k}<%o>J> =׌= =[%->Qܙ>h3>`>9>=d=8Do>, >:Bf>2E>==`y<$T:ʜ:Y:Y:Zd:Y:Y:Y9Y:Y:ʜ|> 12=I= =Y="4={a ==I>> f===M"=\=0N|=~=HM=H1{==H= ==H=+<5p:Y:Y<=>>fV>>_>%==޻=ǟ>`>2ݪ>F3>F~>5$ >Y= u=޻=kt`=V=={X=1{=AU==="4;Zd:d=0N|=>V(>?>t>?>X%==>=H>0H>X>nLZ>l]>U>+x===l=B=a=˛ >b> l==є=h <(X':d=2=AU>\>>^>$>k-> Y8=D>>1(>WX>lN>jQ0>Ph>'Ə==0!=~=B=d=>> ==̾=n<:2:Y<%=>*>>>>A#=~ ==O>%>2ݪ>A^W>?>,> = ==bZ=Rn1===߂==F+=X'=8D;K;Y="4=?>J>8i>* =))==em=5==))>>:=y6==u)=QK=B<ܪ=/+K==d= ==V<:Zd:ʜ<=C=f==H1{=[<^W=Q="4<=<ܪ=5p=h =8r=B=[=@<ä<ܪ=޻=k}<$T:p:Y:ʜ;d<><>;1{:d:Y;<b=A= u= =~>> |i=O=[<%<~>2ݪ>.>u)==em<ܪ<>>= u=~<7 y>5$ >G>A> === l>.>?>8i>pS=Y=a7 12>> =ܪ=u)<=<:2;~ʜ:Zd;5p<5p<f>,SR>=!=Jw=8D==h=-> l>w>|== =8D=B=[=8D===v= G=Rn1Y>Ph>i>GW>u=pS==v=->>(>, >i===h =+=7!={a = =T="==.=B:d:d<^W=>>V(>rQ>V(>`=d=[=+K=엑>pS>([>*U>E===l=/+K=8D==='=ܪ=ä==Q:ʜ:Zd"4>=>* =_=[=V= ==> > =l=Y=M"=D=[=Q=\= G=h=є==rG<^W:Zd:d<=QK== u==[=$<$T=1q=[==;&===޻=Rn1<=<%;~ʜ:p:Y:Y:Y9Y:d<~<=Jw=}l==H=l=C="4<=<^I<<<<=Y= f===rG===?=;&=I=l<=;Y:p:Zd:d:d:d:d:d:Zd:d<%==@;&=QK=+<;Y:Y:d;;K:d:Y:Y;~;~ ;1{:d:Zd=$=h =y= ==:2;~ ;Y:Y9Y:d;5p<%<̾>=$=5p=@<$T<8r;:Y:d<<%;#d:Y:Y:Y:d;~ ;~:Y:d;Y;Y:Y:Y:Y:Y:p:ʜ;5p:d:Y:ʜ;<%;K:d:Y:Y;~:ʜ:Y:Y;<ܪ=5p===){X<1{<:Zd;~<2="4=7!=HM:ʜ:p;d<ӑb===|;=B=em="4<1{=<;<;d:Y:Y:Zd:Y:Y;<%;~ ;l:d:Y;Y<#d;1{;Y;5p:d:Y:Zd:p:Y:Zd:Y9Y:d;~ʜ;p:ʜ:Zd:Y:Zd:p:Y:Y:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Zd:Zd:Y:d;Y:d:Y:d;<>;:d:d:d:Y;Y;Y;<^W=(X'=;c=7!=~;:Y:Y;Y;K;p:d:Y:d:d:d:Y:Zd:d:d:Y:Y:Y:Zd:d:d:d:d:d:Y:Y:d;~ʜ;1{;Y;l;Y:p:ʜ<~<:2;Zd:Zd9Y:Y:Y:Y;<^I<~;5p:Y:Y:p:Y:d:d:d:Y:Y:Y:Y:Zd:p:Y:p:Y:p;5p;;~:d:ʜ;~ ;;l:Zd9Y:ʜ<%;~ <<2=8D=sj=h =Y;~ :d<$T=`y=u=D=Y=){X=V=h =Jw=@<~;~;Zd;H1{:d:d:d;~ʜ<><8r<2<>;:Zd:Zd;d:d:Y:Zd<>=B=Jw=l=K <;~ :Y:Y:ʜ<1q<^W=Q=+=8D=.<=<><>;d;5p:Y:Y;K >6>>=AU=|;>R>i->Jw>.=d===5p=l=> y>%>.>$\>%>Ǡ> f>Y>`=G==QK<9Y:Zd:d>Y!>oW>T_>=SR=Rn1=Sb=9=g>>8i>>]>4?>n>>>$>!> =D={a />D6P>/+K===7!=A^W==йh> > >'Ə>> > 5>Y>z>%>=c=`y<~;Zd=~=pS=ϖ7==i[=k=7!;~:d:d;Y<~;~ :d:Zd:Zd9Y:Y:d;d;Zd9Y:ʜ<^I<ܪ<ܪ==|=Y="4<2<^W=8D=%=?=q= =2`y>1y>GJ>=>==k=a7=em=I=\5>J>=={X=5p<~:Y===l> =y6==h =l=k}=F+>"_h>\>{>>o&>GW>HM=O=HM==y6>"4>F|>Ph>.=I==H<8r:Yo=AU=pS=Mn=YAU==د>!>X%>u>l]>F~>="=HM=k}=>!>F3>Q>0H=y6= |>(>:>79>== =`y=\=q=>J>>=?==<9Y<#d<8r l>%>==#> >>P> ==!==H1{=+=H1{=q> />.>>=د=`y;K<==鿗> G>&>>>> >>pS>=O=4={a ===7!=p#=Y> >EY>96==8r<5p;5p=f=O> >> =y6=йh=g==V==f=p#=8D=k}==U=> y>-v>n=AU=em<~<8r;:ʜ:Zd:ʜA>>y><>5l=Y==h ==>,>K >[>R%e>9>n>>!>"4>Y=i[=y>t>>p>>q> |i=X'==>2ݪ>m>P>>>>av>WX>`>`>F3>=2=.:d:Y:Y;~ =sj>z>>>x>8>z>=!=D>>F~>>>R>}>M">~9>sN>|;o>{a >_>)2=O=H1{;Zd:Y;~=C=>l>>`>7a>av>=X'==>8i>oW>>>M">>i->d>lN>jQ0>K u>"=c=7!;Y:Y:dY>WC>q>V>J=h=l=8r=є> >1y>Ix>T">GJ>7>.>1(>8i>5$ > G=_= <ܪ;:d:Y;~= = =ä==O=k=;c;K;~:d:Y;~<=HM=/+K="4<ܪ<~;~ ;~ <>;~ʜ:Y:Zd;~<%<%;:p:Y:Y:Zd:Zd9Y:Y:d;5p:d:Y9Y;5p;Y:d;~ʜ> ==D= =8r==|>>IT>g>[Ѓ>8D> l==y=l=c,> l>*>.> 12=N|=8D<,:d<~=:>z>^}>pۈ>M>=T==_>n>t> >Z>>>nLZ>* =t`=V>$1>i->>>|i>.P=N|=8r:ʜ<ӑb=O>GW>>q>>5==d> >F~>A >ֲ(>j>>$/>>`>>J>R>BB>>2>6P>x@D==Sb;~<ܪ= u>F3>.>BB>>/=߂=O> >GJ>y>&>&>&>ܙ>_h>fV>!>>T_>>!> >U>\5>8r=em;<>=pS>)>SH>g0j>A=={X=4=د>$1>k->?>>jl>a>z=>8i>|=>(>o&>>L>K>C =̾>='4:d:Y>=c,>U>S.>:>=ܪ=k= =̾> />3&v>=> ==h <(X'9Y< <ܪ<==2=Mn=QK=C=Mn=h =u==[==Sb=HM>>?=_==y=:2=[<=n=;&==AU=%<1{:Zd:Y`y>)$>5l>,>n>#d>7>F~>L,>=>n=== =n=`=>EM>n>^}>C=d8D>hg>z=>n>Y!>U>d<>x@D>{>>e{>:>==0!=d=O>=c,>޻>&v>>m))=B=5p:d:d=h >>K u>I>.>^>oW>dXp>lN>{>>{>>`>5$ > l=˛ ==+K=>Y!>$>̙>̾>>=`y;Zd=7!=>:>oW>I>wx>Y!>F~>IT>Sb>K u>2ݪ> =O=0!==d=د>@;&>ذ>h>>{>>8r=;c:ʜ >5>BS>8i> > >`>>u=={X=[=l=V=l=d>>M>}8>o&>.P=l<ӑb:Zd:Y<엑=޻=1{=ܪ=|=q=d= =pS=z==5p=[=~=HM= =[=8D==s>==N|=/+K;K:Y%>`>vG>Sb>`=-=Sb=7!=z==>B> >.>* >pS==-=>=Q0=h=p#<:Y;5p=V>pS>>s>_>^>y>~=X'=d=AU>+>iv>>>?>3>f>Pp>Y!>_>GJ>=Y==:d:Y:Y<5p=>`>Ҷ? Y8?>^>D>=c,==">>nLZ>->̙> >7>>U>>>z>>R> = <>:Y:Yy >??V? 7>ŢM>V =l=>5p>>>>g>>6u>¥>r>>S>E>hg>=d={X>N>ǟ?NF? >}>S>==鿗=Z>* >zr>V>9>2>~ >+p>ݪ>^2>̚>>V>R> l=u)<:ʜ;Y=QK=>wx>!>U>0!>g0j> |i=q=>>vG>&Q>^2>>>~ʜ>uhK>y >pۈ>R>f==Rn1<;d:d:Y<8r={a =>* >A>,=~=9=:2=V=X'=s>>* >2ݪ>,>n>t>> >>b==l<7<%<><>;d:d:Zd;1{<:ʜ:d<~`>n>=== =C=@;&=B=q=O= u=X'=`y<>W>k->IT>)="=6P=I>>aB>>>D>K>b>n=_=йh>%>K>q>%>l>%=<$T;d:Y=8D> >~>!>U>>nLZ>n> >$>l>>??>;>/>>A>5$ >o&>>E?>->N>=|;< :Y:d=y>4s>> 9>E>O>>@>"_h>EM>>d??%-?')?3>>>~>k-> >Q?k}?!?W>Դ>Q=+K2>c>⣧>>>">9>>D6P>pS>?O?#3?%?G>;o>>:>pI>̚>C??$8?>ܪ>`]F=<8r:Y=8D>>vG>MG>̾>>_> y=> >k->q>?pA?9>cu>q>ذ>W>A>>ơ?b? >F>S>3&v=<~<~= > |i>F~>\>:Bf=={X=d=O>>Y!>V>>}>z>{>><є> l=o>n>fV>BB>.>M">A=,=%:d<~=== G==)=D=8r=Q=V==ܪ> >pS>J> ==!=8r=YAU= ==A>Ǡ== = f;Zd9Y:ʜ;K;<~<><<==+=Rn1=rG=rG=`y=7!;~ʜ:p:Y:d:d:Y;~ʜ<2===[===M"=@=0!==?=E==[=8D<1{<:2<~<є=\= ==%;d:Y:d<2=~=> y>>Y> f>%>!>1(>5$ >)$>=B=SR=p#=8D=h =ä>f><є>/=$T={a <Y:Zd;~ =h =>:Bf>k+>}>tE>c>c>wx>>>Y8>{>>Mn>n===X'=ܪ>E>>jl>0!>u~>=:2;~:Y&>{>>>uM>>>>q>&>V>E>vG>=c,>`=<=ܪ>$>޻>ݩ>>j>>K u=8i>.>$ >>a>R>>~>>0!>>rQ>9> =-=>=`>T>g? ?~>>t=<>:Y;d=>%>>|>jl>L><>)>%>pS>v^>y >E>==˛ =y>,>>Re??M>w>av=I:Y=8D=鿗>A#>}8> >>nLZ>V>Rn1>OMk>A>%7a=A=c=X'=a=v=>X>1V>N>|>%>>=rG;~ʜ<=}l=y>>,>$>%>E==y6=|==sj=QK=QK=B=Sb==LZ>96>d>Y!>ҥ=<2:Y<>=7!= =a=HM==y=l=Jw=Y<2ݪ>> a>i->={X=h =H1{=8r=6P>u)>3>F3>EM>2ݪ>r>> Tc>> =AU=M"<ܪ:Zd;~ʜ=5>:Bf>p> ?M>~>>=?=v=엑>:Bf>|>>>>x>>z=>{>>k+>9==|;;d:Y<=ܪ>>;? >?$8?$>I>X==->.>:>?>N??`y>j>c>>s>L>a>vG>%7a=q>? h?(|?.?>>y >>o>F~>z>H?b?>?a?>LZ>>̙>ǟ>L>;>5$ =;&<$T:d:Y<є=ܪ>>Az?v?"(?s>>av>Ǡ>>:> a>8>"?9?Ip>>_>U>;&>>>vG>"=2ݪ>{X>O>{>X>>"=ǟ=>Y>U>v^>t>,>>/>c>K>!>.>u~>96=엑=8r<є<:d:Zd<ܪ=>>hS>>_˭>=c=l=p#=!>`y>+>G>^>_>N>A>=c,>:Bf>1(>'=AU=u)=%<8r<>;~:Zd:ʜ;l;Y<(X'<5<><1q;~ :d:Zd:ʜ<%~=엑== G=޻=d==~>#9>96>4s> G=))==y==Ə=O===A==l=(X'<2<>:d<ܪ=ä>=>:>ذ>>:Bf>Ǡ=o> l>4s>>6>د>Ѹ>>!>QK>>>.>w>>!>G>9h==/+K:d:d=l>.>_h>B>FO>۬>f>F~>(>@̾>>O?? O?"?J>B>!>z=>]<>%>6u??"?>>8i=< :d;=l>a7>ͽ???O{>~>tE>A>hg>MG?s?$o0?9U?=,?.N?\>b>[>)>¥?S-?,A?7?'Ə>ʜ>B=AU<%:Y;~ =I>^}>˛ ?:?.?>}>#>lN>=c,>f>O>h?!?6Yo?:?,ҷ?>M>>ذ>D?s?0`?;Sd?*?E>,\=))<ܪ:Y:d=>&>BB>d>N>of>O>5$ >%>4>̙?(?~??q><>6P>7>u>̚>??"g?><>hg=̾1y>~9>w>pۈ>%7a=i[==x>5$ >y>>U>͘>ˉ>^2>t>2L>@>Ix>G>͘>>>|> /=a7:ʜ:Y<= =O=t`=D=HM=T=IT==?>|>>/+K>79>0>=o==k}=c,> >2ݪ>A^W>)$==h <~;Y;~ʜ:Zd:Zd<~=8r=p#= G={X=0!= ======{X=l=5p<<%<>=#d=)==4=`y<;Y:Zd;=Y==l>n>.>([>>>$>7!>B>C>5p>J====Rn1==o>9>^_>MO>=a<2;:d:Y<=> >Tk>u>>0>>}>>V>G>k}>~>`>.P>==c>o>j>s>!>y>M">n==>,\>!>ǟ>^W>t>>s>>c>>;>O>=G>`y>EM>>?v^? E>݅L>{>=ǟR>4>+p>;J>>y>a>>Y>>U>4>Mn>@>8r>)>em>ͽ? ??>> G===:ʜ=>K>^W>H>λ>>>0!>S>8>>av>+>=鿗>Ǡ>QK>=?B??V>nU>= >c>K>>>)>a>|;o>wx>f 9>A^W>===I=|>>[>&>ֲ>(>>R%e=v<~<=d> y>;c>R>Mn>:>(>t>>=D= G=rG=h =V=z==h>>l]>M">.>R=鿗=+:Zd:Y=c,=N|==M"=em=Y<є==!=:2;~:Y<(X'<7= f=~<=<엑<7)2>q>>}>R>B==H1{=+=V==B>n>8i>;c>,>%>|> |i>)> |i=i[=M":Bf>&v>o>d>G`>|>==k}=˛ >([>n>?>>>>[>{>>{>>|;o>hg>8=$T=|;;dM">_??"M5?b> >F|==O>>t>MG>S??>{>B>a>>H>q>t>%7a=I<:Y:Y<=> >0!? ?(?-R?f>T>kt`>`y=>7>w>Sv>l?b?(? |i>E>>>ŢM>~> >5l=&Q> ?@?"M5?>Ηm>X==y6>,><>>'?? ?b>x>͘>U>i7>>tֲ>"_h=?@>ݪ>Y>Ч>>v^>==?>8r>F|>Y8>q>s>j>3>>>o>d>q$T>8i=LZ=8r<;p:Zd:Y,>vG> >dXp>A ==V=QK={X=#>$1>GW>b>i>^}>K u>A>;>/>=AU=Y=[:ʜ:Y:Zd;d<=Y=7!=A^W=Rn1=h =m=^I=8D=:ʜ;~ =7!==o>==2=>==\=h=B>%>!>:>%===u)= == =V=I==p#=k}<9>:>o>d>:Bf> V=>8r>+0!>o&>7a>ŢM>>">)>S.>>>$>f>>>3>+x=q=){X'Ə>>ܪ>K%>X>>GW>'Ə>:Bf>I>1{?r??v?>E>C>{>Y!>>D? 7??=H>t>.=HMW> ?)? b?b>Z>t>@̾>_>>j??0?6"?)?>>>>c,? !j?(X'?1?#9>>=O<є:Zd;ʜ= >T">}?? U>>>m))>:>[Ѓ>>LZ?k}?,A?3C?(?K>&>R>k}>W?.?+?7jl?'Ə?>U= <ä:d=rG>A >HM>Դ>->>>8D>>5$ >{>>hK?b?[?,\>s>J>U>x>^2>"?? =l?<%>ٮ>g0j=+>x@D>|i>nLZ>(=_==LZ>([>`>>q>_>/>>ycu>79>">Rn1>y>>>2>u>Y=bZ:ʜ:Zd<2= =O=LZ=ϖ7=d=em=K =8r==> >>+x>,>Cw==h== u>'>?>Qܙ>8D==|;<%:Y;p<+K=[=8r<^W<8r<>< =$=H1{=n=[= = ={a =5p<2pS> a>>pS>J>* >5$ >2ݪ>n>8r=˛ =k=a7=;c= =>+x>H>=c,> =>F|>{>>Y8><>t>q>I>V>3>vG>GW>=-=h=>>Z>`>ǟ>c>6>=<;d:d:Y<$T=2>5$ >~>>>h>U>c> >&v>>>y>=>Y=>=H>=>~>"? ?r>ܙ>nLZ=<~ ;~ :d<$T=1{>F|>BB>I>؋W>>> k>h>db>>?>|;o>@;&>>?>Y>^>Z?Zn??>>=a =~;:Y<=>8D>%>=>йh>̙>>T>>>>>U>n=A=߂>>>J>!?b??>> =<ܪ:d:ʜ=p#>Ǡ>`>o>>/>>>|>u>av>Y=ܙ== =>>>̙>">+>p>U=!<% >=>Y!>Y!>F3>2ݪ>%7a>z>o=̾>=k}=h =E=7!=\=> G>m))>M">`>W==8D:Y:Zd<== ==m=鿗=AU===^==+<<><><%<>= =M"=i[>~>`y=̾=Sb;~ʜ:d<=$===C=8D=/+K="46>?>J=;&=h =8r<<̾>=Rn1==y>o>`>=B=,=AU=g=AU=I=em>Y8>> >>?Z===Rn1= =->2ݪ>m))>P>>.>nLZ>Qܙ>Q4>S.>?>=Y=8D:dk->$/?9? >(>>pS===ܪ>8i>> k>ܪ>S>׌>6><>ذ>!>>KRA> =M"<(X'<=>>(??L?D>s>5$ =;&=?>~>Y!><>j>?>}>E>װ>>H>>V>b>=X'<:YuhK>׌?n? >>̚>)$=h=SR>>K u>޻>ŢM>Q0>FO>x> >>>BB>8r>N*:> =">>1{>c>J>b=j= ==> G>\>->T>p> >>:>|;o>k->Jw>C=Y=H1{<~:YY>IT>[>9=N= =B>)$>?>GW>C>8D>-v>">pS===h <~<(X';:d<~=){X=M"=;&=O==a=}l=rG=8r===="="=|==y=l=bZ===Ə==h =Q<1{ f>F3>`y>C>== =K>>* >Y!>>:>d>\>&==د=>)2>UF+>av>96=I=sjgy6>>>~>l>%-> |i>pS>A>7>>3>#>1>>)>Jw>0>V(>f>I>Ţ>S>vG=G=QK<>:d;K=|;>t>%>F+>>>G>E>>/>m))>J>? ?? d>~>̾>>g>)>d? h?_U?r>h>:= G<>:Y;5p=l>J>V>>3>Ηm>M">>=>HM>-O>j>>? E?%? U>>3>{4>q>>x?u)?? >0E>Qܙ=<~:Y=HM=I>\><7>$ >q>^}>'=> >=c,>~>uM>>>x>͘><>d>ID>>;&>B?:>&>>2ݪ= ;~;~ =|;=>9>OMk>8i>[==d==>n>C>n>>>{>F|>pS> l>/>ycu>d>n >>V(==u):Y<>=K =X'=є==3=7!=%=C=f====~>== = G=y=>>&Z>3&v>=ǟ=C;d;Y<<<1q;~ʜ:Zd:Zd;Zd;~ <8r> >o==c,=k}=`y="4=8r=Sb=D>>> =1{={a <<>;Zd:p9Y<~=H1{=Y> G>C>V(>M >?>=>M >Y!>Tk>:Bf>pS=m===@=ϖ7>&>oW>O>6>F3=ܪ=A^W<>;~ :d:Y >X>V>y>޻>[>I>> >>k->=c,>%=߂==йh>z>y>>`>Ҷ>q>5$ =k<^W;:d:Y>z=>8>>>>>K>>>vG>C>=鿗=O=>2ݪ>>`>>~>̾>av= )>m))>?>>R>>>3>[>{>>Vi[>([==1{==">%>>Ҷ>~>>>^=:Bf>{>>>`>>hg>X>Mn>:Bf>"==v=Y=B=@=>Ph>>U>?>v^>,=;K<:2==LZ>(>A>C>6G<>n>)>o=~ =q=u="4<ܪ<==y=>=c,>i->c5?>/t=,=Q:Y<ܪ= =h=i[=_=O==v=>={a = a, >hg>o&>==y6==Y<<ܪ=|;=D>%>4I>C>9>>>%>)>=ǟ=8r<;~=u>m>>=>>N>79==[=@={a =ܙ>* >f>v^>>'>{>[Ѓ>V>Ph>9>u)==+:d;=%>5l>ҥ>>%>>Y!=i[=sj===d>Ǡ>K u>|i>S>f>>!|>a>zr>l]>Pp> =O=QK;Zd;~==H> > >db>6P>>>EM=ǟ=V=5p=a>>A>>=l> P>>v^>z=>m))>_>@>==7!;Y:Y=8r=s>=>~9>B>Zd> y=M"<=<ܪ=l=̾>>A>h3>{>>oW>WX>B>9>,>=i[=3> =ܪ= <$T;K;d<ܪ=h =E=-> 12>r>Y> 5>`y=LZ=K=?=|;<%:d;~<є=+=7!<=<>:d;~ʜ<= a=`y=l===a==l=V=Y:d:d;5p:ʜ:Zd:Y;5p<<(X'< <^W<ܪ<==2=޻=~=u)={X=2=AU=A> y>`===ǟ=0!=@={X==V=B=I=V<є<>;~:Zd:d<$T=>>>@̾>Y!>@̾>%==D=̾=>pS>;c>b>{>d>hg>7!> Y8=> l>4s>c5?>pI>F~=A={a * >wx> >vG>6>=O=_>%>:Bf>qm >>0!>>A >pۈ>2ݪ>t>9>~>>!>>F~=ä=B:d:Y%>q>7>p>2ݪ=B=ä=AU>>79>k->o>>uM>>z=>8i>%>GW>.>>y>SR>f 9=-= a:Zd<%={a =>8i>OMk>9> =̾=d=?=>`>/+K>WX>{>>^>{>GW>HM> >.>q$T>?>z#>V>F3=ǟpS>#9>>==2=鿗>(>U>b>BS>=8r<%:d;K:d:Y:d;K > Y8>>`y> >>`=o==)=m=Sb=V=޻=AU>>.P> =))=<=<:2;~:d:d<==+K>Y>=c,>R>IT>;c>79>;c>?Z>8i>@=LZ=h=k=)==O>d=>`>:>zr>:=AU=Jw,>c5?>}8>x@D>c5?>Vi[>S.>R>C>(>K==X'=={X=LZ>:>6>c>>j> =[(>aB>~>|;o>g0j>R>GJ>A>1y>r=׌={X= ===د>3oB>|> >>i->u)=[<5p:Yo>:>X>Y!>F|>2ݪ>!>>=O==V="4=B=2=k>>GW>rQ>l]>9=B=@;&;5p:ʜ=8D=!>`y>z>q>>b=_=1{==B= a<:2;Y:d;K== G=엑>pS>== =/+K=M"=!=̾=i=-==d=d= =C Y8>5$ >96>u)==em<;~ < =5p=v=>>*>n> f=A===O=d=5p;:Zd<==>!>T_>X>+0!=˛ =rG<^W<~<==H=AU>i>=c,>Ns>F3>.P>>>==!=[<%:Y)>=>A>==H1{>5>C>=c,>(>%>%>=߂==8D;d;K=H1{=;&>>=|=|;<ä;Y:d<:2=8D=X'=2> >r> >=o==Y={X=em<:Zd:Y<%=+=|;=|;=7!<~:d:ʜ<=7!===SR={X=4=d=.=p#=*=鿗=D=[=V=h = =\=h=> 12>>=N=ǟ=2=ǟ=x>>>b=<ܪ:p;l=[==ܪ>|=鿗=i=8r=Jw=\=3=d=D=_> >>z>=H=O==AU>>2ݪ>9>z=̾=$:d:Y>>>&Z> y=I=~:d:d<є=V=3==<є<%<^I;d:ʜ:d;Zd<^I<ܪ=<ܪ<8r;K:Y:Y:ʜ;Zd;;~:ʜ:Zd:Y;K;d:ʜ:Zd9Y;Y<~<5p<>;d:d:Zd;Zdb==LZ===y6=c=y===+=7!===}l=!=LZ> l=A=c=p# y> >">">> > |i==D=pS=Sb=5p=7!=IT= = u>>%>A ==f=[;:d:d=;c=>%>,SR>.>!>> >=m=D==, >">==d=~;d:Zd:Zd=k}=>?>>t>r>=m=O=!= =7!< ;K;p<:2=Q= = u==B==<%<^W;~:Zd:Y<~=/+K=)=E=D==k=%= ===<ä;5p:d<=em= G= G=z=="4;K:Zd:Y:Y:Y:Y:Y:Y:d:Zd:Y9Y:d;Y;#d:d:d<~<8r<<<ܪ=em= =+K=D=2=̾=c,==l="4<<^W='4=V=`y=7!<:2;1{:d:Y:Y:Y:Zd:Y:Zd;Y;d;;#d:Zd:d;~ ;~:d:Y:Zd:Zd:Y:Y:p:d:d;Y<#d< <є<ܪ<%<<5p;l:Zd:p==8r={X=!=!===pS==H=8D;~ʜ:Y<=D=~= =[=p#=[==="4<є;1{:Zd:ʜ;d;;:d:ʜ<%;l:d:d:d:d:Y:Y:Y:Y:Y;;5p:Y:Y:d:Y:Y:p:d:d:Y:Y:p;~<#d;~:p:Y:Zd:ʜ;~ʜ;K<(X'<<7=<ܪ<1q<8r<%=u)=(X'=@=[=~=Rn1=p#=V=u)<~:Zd<=%=7!=){X=.<;d:Y:Y;Zd<><(X'<%;d:d:Zd:d:p:Y:Y:Y9Y:Zd:Zd:Zd:ʜ;l;Y:d:Zd:Zd:d:d:Zd9Y:Y:Y:Y;5p<<5<<=u)=7!=8D="4<ܪ<><%;d:d:d;~;;:Zd:ʜ<<~<1{=QK= = =.=Rn1<:Y:Zd;Y<:2<1q;d:d:Y;Y;;K:d:Y:Y:Y:d;5p:d:Y:Y:d;K;~ :Y:d;;엑< <^I<%=+=QK=V=9h=~<:d;<~<7="4=){X= <%:ʜ:Zd:d:d:Y:Y:p:Zd9Y:d;d<%;~ :d:Y:d:d:p:Y;Y;<%;K:d:d;~ <^I<>;5p:d;Y;5p;~ʜ;~ʜ:d:Y:Y:Y:Y:d:ʜ:d:Zd:Y:Zd9Y:Zd;Zd<%<<%:d:Y:d;1{;d;~;5p;~;d;;K:ʜ:ʜ<%<<엑<ܪ=[<ܪ;~ :p:Y:Zd:Y:Y<~<="4=<>:Y:Y;#d<~<(X';:d:Y:d<=7!=[=8D<:d:p;d<8r< <=<є<%:d:Y:Y:d< =*=GJ=){X<ܪ=Y=Q<ܪ<^I:ʜ:Y:d:d:Zd:d;Y<1q;~:Zd:Y<=bZ== =H1{<<~<=Rn1=k}=N|= = =@;&<;~ :ʜ:Y:Zd;~:ʜ:ʜ<~<7=Mn=l= =p#=0N|<ܪ<8r<~:ʜ:p:d<~> l=^W==7!==c,=> > =LZ=D==H=<<:2>">=I=%=H1{=[==A> > 12=鿗==~ʜ=u)<<(X'B=r===$=IT=d=Y=ܪ=== =8D<^W<>;~;~ <=@=8D=2;:d:Y:d:Y:Zd:d:d:d:d:Zd:Y9Y:Y:p:d:p:Y:Y:ʜ;~;5p:d:Y:d;d<1q< ;5p:Zd:Y:d<><=LZ=E=5p;~:Y< =8D==m>>=H=˛ =y= f< 12>@>J==^=8D<2o>J>==="4< <~;p:d;1{<1{=8D=^I=8D<є;Zd:Y:p<ܪ=Jw=pS=!== =[=A^W=Y<ä<(X';~ <5p<=~<==A==V=7!=8r=;&=>%>>E=Y=pS=QK=u)<є<==h =l=}l=5p3oB>SH>=>Ǡ=v==?=9>n>4s>5$ >q=G=E=rG=+<==~=`y===d=rG<ܪ:d:d=L>=鿗>?>fV>T">=^W=޻=D>|>n>2ݪ>2>==q=n="4<7= f=l=d==4=|;<7:d<ܪ=E>>;/>2E>=v={a =pS= u>>u)>`==;&=/=8D<^IE>Y>=̾=X%<5p:dY>%7a>>==8D<2 >|=c=V|>+>=>8>pS==h <7&>8i>/+K> ==H1{=Q=h =8r=h =u)<%:d;5p<%=B=|>>%> l=O=3 12> > =!=em=E=/=|>>pS>> =K=d=em=(X'<$T==D=5= G= =H1{==ʜ>C>em>J> =N|=/=>E>#d>96>9>&Z>E==[=8D==8D=3==c,=l=5=8r:ʜ<~=>B>Pp>vG>`>>===є>>$\>8D>8D>"4>==8r=7!=Y=8D=`=D==h= =.:ʜ:d=){X=>$>F~>9>o==B==s>>>>=O==`y=~<=u)=p#=a=0!=a=h <2:Y;d=7!=&v=m=AU={X=h =.=8D==q====)=X%=[;d:d:Y:Y:Zd:d;d<%;d:d:Y;Y;K;~ʜ:d:Zd:d:d:Y:Y:Y:Y;H1{;p:Zd<%=QK=?=))>=LZ=?=D<:2:ʜ>([> >==4?<<b=-=q=D>,>?>96>pS= =Vb>'Ə>8i>/+K> =D=7!=~=Rn1=p#=Rn1=8r<%:d;Zd<ܪ==ǟ>>%>~=O=B;~ʜ:d:Zd:d:ʜ:d:Y:Zd=_=޻=2=$=h =^= u=>b==D=8r=7!<$T<2<$T=:2==H= ==.<(X'<%=h =د>%7a>=c,>([=ܪ=3=h =f=O>>>t>`=ܪ=d=^I=Y==5p= =0!=!={X=sj,>G>5l== G={a =k=> l>">Cw> =ܪ==bZ=Q<==8D= =E==v=<ܪ:d:d= f=\>E>>%=ǟ=[=QK=|;=q=ܪ=B>K=m== =;c<%=u)=7!=2=<7<<>;p:d:Y:Zd;1{;p:d:d:d:d:Y9Y:p;~ <ӑb=7!=`y=^I=:2=Q<:d:Zd:Zd:Y:d<1{=bZ=={X=pS=Jw`> |i=AU= <;d;~ ;1{:d;=HM=y=?=̾=I=8r=8r;~ ;Zd<=[=">%>">===[;~ ;1{;Zd:d:d<2=QK= = G=y==<;~ʜ;~ʜ<ܪ=8r=O> y>z>%=Z=)<;Zd:d:Zd;~<;;~;l:ʜ:Zd:Y<~=~=[=l=8D<$T=8D==k=v=d=rG=@=.<:d;Zd= f=k}=ϖ7=Q0=Y= =HM<;=8D=~==="= =a=QK<$T:d:Y:d:ʜ:Y;K=[= =ä==AU=q=QK<~:Zd:Y;K=޻=h =sj=C<ܪ<%;K<(X'<=0N|=kt`==em="4<ܪ<~:Y:Y;d<7=<є=Rn1=+<^W=8r=[<є<:Y:Y:Y:Y:Zd:d:ʜ<~<2=@=B=P'=7!<$T<5p:d9Y:ʜ<~<^I;K:Zd;~ʜ<5p;~ :d9Y;~ ;Y:Y:d< <є=Y="4<=;~ :d:d;1{<%<%;K:d:Y:ʜ;K;~ ;:d:Y:Zd;5p;;#d:d:Zd:Y:Zd;Y;~ ;:d:Y:Y:ʜ<%;~:d9Y:Y:Zd:Y;Y<^I<<~;5p:Y:Y:ʜ;;5p:Zd:d:ʜ:d:Y:d;Zd;Y:Y:Y:d:d:Y9Y:d:ʜ:d:Y:Y;d;5p:Y:Zd;~ʜ:d:Zd:d:d:Y:d;;K:Zd:Zd;5p;1{;~:d:d:ʜ:ʜ:Zd:Y:Y:d:Y:Y:Y:Y:d:ʜ:d:Zd:d;<#d<~;Zd:Zd:Y;K<:ʜ:Zd;~<5=='4=*=<~ =(X'=*=:ʜ;Y<^I;K:Y:ʜ;d;~ ;H1{:Zd:Y;#d<%< =8r<<%;5p:Zd:Y;<є=2=QK=7!<;d:Y:Zd;~ <^W=.=Sb=`y=Rn1=;c=){X= f<7:ʜ:Y;K<~;K:d:Zd:d:d:Zd:Y:Y:d:Zd:Y:d:d:d:Y:Zd:Y:Y:d:d:d:p:Y:Y:Y:Y:ʜ;5p:ʜ:Zd:d;Y:ʜ:ʜ;Y;Y;d<<%<~;;:d:Y:d;~ <%;~ ;d<:2=A=ǟ=.=){XpS>&>t>`y=є=="4=.===x==˛ =)=Q;<=8D=%==~=(X'>%>>>= =8r=@=#d=޻=O=A=\5=ϖ7==%;Y:d<=8D=L>=%E==O=d==<<%;~ ;5p:Y:d< <8r=HM=p#== =:2<^I:Zd;5p<>;;~ <є<=<ܪ<5p:d:Y:Y:Y:d;~ :d:Zd:d<~.P>A#>,SR=-= =7!=*=p#=?=엑>`>>>?=m=2=엑=鿗=ǟ=k}=2;:Zd<=4>!>k->>f>>===H==q>?>+0!>F3>Q4>EY>0>n>n>(>&>=O=[<:Zd<^W=>.P>{>->y >.= u= =pS=|>)>=>_>hg>[>C>79>8D>=>:>!=))=<ܪ:Y:Y y>OMk>m))>R>M"=D=|;= =;&>o>-O>EY>Ix>=>.>([>,>4s>/>pS=AU=f<:Y;Y=$={X=r>'>o==|;=/+K=bZ=d=ǟ=G> y> y>==>> 12>o=I=X'=8D<%:Zd:Y<~=Q=h =5==5p<1{==5p=4?=[<><=5p=8r==.=V<;K;Y;d>>o=د==V=>="4=p#={X==2==DY>@>>=2= ==X'=>n>S.>lN>aB>=>=O==pS=O>u)>/t>7>=;&=V<1q:Y;p=8r>:>:>Ix>,=V=X'==|>Y>M>~>BB>>>G>)=|=c,> |i>o&>b>[Ѓ>Y=k|>9>F~>(===Cw=|>޻>R%e>6>BB>D>E>Qܙ>"=,=> 12>@>x>>g0j>=0!<7:Zd:d=5p=h>~>r=LZ=d=Rn1=em==>-O>X>oW>m))>Q4>* ==4=޻=>>?>Mn>3&v=$T=l >J>>`y=O==7!=[=l==i[=~ ==f<:d:d;엑< ;K;Zd;Zd;<1q<><<є<$T<$T l>o====h ="4<$T==pS=>>===;K<= G>b>%7a>1(>%>'>%>>,SR>(>r=g==3=QK===[=鿗>>=>kt`>]<>f=X'<2:Zd<є=>%>:>GW>=`>([>>%>.>([>== =[=]=h =d> />av>|i>I>:Bf=^W=8r:d<:2=>E>.>:>/>P> l> />Y>=AU={X==H=V=8D=QK=>b>IT>{>>l]>+=p<ܪ:Zd:d=7!=D=B> |i=a ==;&==c={X==7!=޻=Q==Y=h => >/>&^=鿗={a <5p;d=+=[=޻=8r=`y=Rn1=V===~<8r<<^W<<>;Y:Zd:Y:Y;Zdo>J>>=D=bZ=u)<$T="4=B==i[=V=ܪ=Y=!==?=!==|;=;Y:Y.>|;o>>nLZ>n===H=q$T=d=Q0>">A>Pp>GW>4s>>pS>> > Tc==f<:d=3>|>}l>f>˿s>v>f 9>=={X=2>,>f>>k}>M">I>bZ>V(>^}>_>A>==5p:d:d=QK>Y>>N>v>9>>'=є=c>>C>I>?>x>>N>I>we>}>{>>[Ѓ>%=O=Rn1;~:d=+=鿗>lN>{>¥>~>av>Ǡ=I=!=>79>l]>w>!|>>:>o&>i->nLZ>j>H>J==8D;9Y:Y>Z>z=>ZR>=̾=8r==> >/>GW>R>GW>:2>5$ >6>9>5$ >k}=ܪ= <$T;~:d;Y<$T=[==Q0=׌=Ə=QK<;=2=l==O=m=V=AU=i[=߂=-=-=ܪ=== f<>;Zd:ʜ:Y;5p;<~<=*=QK=em=bZ=V=a7=q$T={a ={a =h =7!;;~<~ />J>E=;&== =Ə=˛ > >8i>L,>EM>,SR>==pS=u)=D=>>J=o=\=7!* >k->\5>Z>=׌=|=>$>k+>?>jl>!>>w>5$ >|=y6> G>X%>v^>>>}>&Z=I=Q;Y=Y=->Y!> G>~>w>A>E=t`>M">Mn>ذ>̙>*_>'>Վ>2>q$T>,>>G>pS>RA>ބ>Z>w>=a7;Zd=@=y6>WX>ذ>>y>=c,=B=>>Sb>>>t`>LZ>B>,>{>2ݪ>A >N>E>Ҷ>3>Sv>:>=sj;~ʜ">f>{>>T_>`=2==o>0>qm >>jl>?>$>j>ID>=B>([>o&>c>!>?>Tk=-=8D:d:d=2=I>|> =鿗=-=V=Zd==->n>EM>^}>`>Jw>,>b=?==>%>;/>Ns>6==f=7!=d=Y=йh= u=̾=1{==o===h=%=QK<=>(>5$ >,> >>.>:Bf>96>%>=D=>=em=D=3=>D6P>oW>b>"=<ܪ;#d:Y:ʜ=QK=>79>f>x>k->W>Mn>Z>hg>c~ >GJ>==h=pS=%=,>?>ذ>h>O>{> =Zd;~ :Y:d=l>>IT>b>w>q>oW>aB>f>n>f>F|>==D=9==>c5?>t>X>>!|>&Z=[<~:Y:Y=8D=s>:Bf>q$T>>{>`>IT>G>Ix>>=> ==!=f= =d=g>Q4>>ɝx>;&> a> G=p#;K<=d> >96>G>@>,>>)>>?=ǟ==kt`=V=H1{=p#=>J>j>%>|i>IT=AU=Q:d:Y=8r=f==엑=y=|=D==d==8D>!> G=ܪ=l<>:d<(X';d;>.P>%=={a =/+K= f=+=~=є=g===AU=;&=D==ǟ=2=%=/+K;d:Y<=ϖ7>V(>>0!>.>7!=|= =={X>>3>[>pI>nLZ>WX>9>, >2>8D>$=A=Ə=:Y:ʜ=|;>*>`> >E>$/>:>==l=>>>p>p>>>{>~9>~9>b>.=_=em;~;1{=pS>C[>c,>;o?>N>?>.=йh=D>%>Y!>>6>Mk>j>.>^2>o>>>~9>@̾=x=8r<%;Zd={a >([>4>Ţ>FO>Ҷ>>n=|=̾> f>H>[>~>>db>>K>V>2g>>k->1y=I=m<%:Zd:Zd=~=|>IT>K>~>.>@̾=鿗==f=i[>J>F~>m))>>d>nLZ>^}>WX>Xf>OMk>2ݪ>={X="4;:d;~ =8D=D> >!>%=O=3= a=7!= =є=엑> >> > y> > /> 12>|=K=d=8D;Y;Y;#d:d:Y:d;K<%<~;~:d:Y:Y:ʜ<%<;d;5p;#d;Y;~ ;d;Y:Y:Y;Zd;ʜ;:ʜ:Zd<><ܪ=Y=[<%;~:Y:Y<^I=bZ={X=h={X=[=Mn===V=~=d=2=1{=c,={X=8r=B=){X=5p=QK={a ==|;=D=<ä1(>>=>$1=LZ====>">R>o&>nLZ>V(>.>=H===AU>%>7!>?>f=|=rG<%;~ :Y= f=߂>Rn1>pS>̚>|i>@̾>o=G>>=>6>h>>ބ>1{>>i->&>%>9>>G<>1{>{X>WX=7=QK<:Y:Zd=bZ>޻>7=>]>9>s>vG>">u)>.>n>r>?q? >>ճ]>>Z>=c,>rQ>>g?'u>&>;>* =HM<%:Zd=em>>>>͘>D>q>> >.>pI>O>v?K? ?~>>^2>c5?>D>}l>?M? >F>uM>:Bf=4<%=Y=AU>Jw>> >7=>9=G=ۇ>`>GJ>7>>C>6u>H>q>>:Bf>n>N>BB>!>b>λ>>=[;~;~ =z==y6>)2>9>=i[==/=> l>6G<>_˭>~9>>}^>ZR>(==>>=c,>|;o>w>we>.P=є<$T:Y<%=8D=.=\=.=QK=[==K =pS==y6=>E====h =5p=l=v=I=~=i[==:d:Y;d<><8r`y> |i>=鿗==d=em=8r<=[=pS=g>>Ǡ==O>?>MO>D>9h>8D>C>N*:>IT>5l>%=d===m= >pS>k->>;>D==5p<>:ʜ:Y<%=>o>Mn>F>v^>Y8>z=>o&>z=>b>{>_>0>=1{={X=>>hg>>ۇ>йh>>,=.<:ʜ:Y<~=޻>pS>i->">c>d=>->:>B>Ǡ>>`>/>`y=D=l=>">>i[>>m >>R=o>X>.>@>G> >t>n>m))>]<>:>`=O=q==>Y>> >&> >q>F~=<:2:Y=8r=c,>#d>Y!>q$T>k->T">=c,>5$ >.P> G===y=|;=l= =AU>=`>pS>!>r>b>=`y;5p;=K =;&> l>">> |i=o=ܪ=1{==|;=*<ʜ<=<== a= =m>,>R>IT>J=X'<5p<>;d;~ʜ;~ :d:Y;K<%<~;5p:Zd:Y:d:d:d:Y:Y:ʜ:ʜ:d:Y:Y:Y:Zd:Zd:d;d<~;K:d:d;~ʜ;<%<;;Zd;~;K;~ʜ:d:Zd<=8D=h =QK=>r>>>==h =HM<ܪ<엑=QK==Y=د===?==!=;&=!=Y='4;K:Y=[=د>V(>>>B>)$===bZ= =AU>>>F~>b>fV>R>8i>(>.P>3&v>:==<$T:Zd;~=>2ݪ>> >FO>N>>}> 12=v=d=">*>k->ذ>MG>>c> a>{>{>>{>>`>,==`y;~<=>Q>>?\>>>$==D>>F3>j>q>>Ѹ3>X>}>G>޻>>{>>?==B< ;K=f>8D>>d>~>>3> G==q=>:Bf>}^>k>>>q>BB>`>>>i->0N|==h <:Y:p==m>_> >>>A=2= ==> >=c,>f>>}>u>{>>f>\>Xf>K >1(>={X=Y;1{:Zd<=Mn= u>>.>P=йh= == f=|;==y> Y8>>'>>>Y> >b=йh=d=7!<5p:ʜ:p9Y<<==Mn=rG=`y=%+>9>n===v==鿗>>96>S.>Y!>H>, >==D=йh> >+>5$ >=̾=p#<~ <:d:Y=@=د>GW>->q>[>=>o=o> 12>4I>qm >8>Y>>>?>j>(>Y>2ݪ>{>SR>a><7>OMk==P'<>:Zd:d=\>`>d>i7>/>N|>q>"> >$>^}>>Վ>??>hK>$/>d=>\><>mq>Hq>"?b>->>([=<(X':p=V> >~>!>1{>>nLZ> > |i>$1>`>A >$/>F?>>؋W>c>f 9>E>{>;&>r?Zn>E>>:Bf=^<%=~=O>C>>E>>8i==د>Ǡ>9>vG>>6P>H>,>J>E><є>!>Qܙ>>G`>v>N>`>=l;~;d=n=߂>#d>7!>@=_=k= ==x>">D>f>zr>u>Y!>+x== u>>D6P>>V>>79= <=:Zd<%=8D== ==h =Y<=:2=y=I=O=V===i[= =p#=8D==c=> =G= =HM:ʜ:d<><1q<%;:Zd:Zd:ʜ;l;Zd:d:Y:Y;~ʜ;Y:Y:Y<~="4=^I=Rn1=u)=A=h=V<<~;Y:Zd;K=2=h>>5$ >@̾>:Bf>/t>.P>9>@;&>9>">==a=p#=em={X>`>Z>_C>{a >9=T=7!BS>{>>4>|>nLZ>f>m))>t>i>IT>n=o=c=d==A>\>0!>)>J>V>%= >`>%>>g>>>>>q>QK>!=o=̾==;&>J>:>͘>$T>b>?>L>=<;5p:Y;Y=l>|>R>|i>>">>t>lN>hg>T_>2ݪ>=={X=Cw=>>z=>8>v>B>SR>F~={X<^I:Zd==2>!>Y!>vG>p>[>>A>8i>/t>===[=h =Rn1=[=i[>:>+'>n >R>>=p#;Zd;~ =[=Y> >">"4>>=엑="=?==H='4<ä.P>T_>Luq>=q<2;l:Y:d:d:Zd:Y;~ʜ:d:Y:Y:Y:Y:Y:p:Zd:Zd:d:d:Y:d:d:d:Y:Y:d:d:Zd:p:d:d:Y9Y;<%=޻= f<̾><5p:ʜ:Y:Y:Zd;Y<%<5<,>nLZ>|;o>Jw>|=@=E=.=.=pS=>)>* >0>&>> >>r>=Y=>>>ŢM>>F~=Դ=3=\==>1y>em>>v^>>iv>U>T">Qܙ>:Bf>=h="4:d;d=y>1y><>׌>>c,>nLZ>=H==B=>>R>:>^2>S>>>}>y>n>R> =˛ =E;~ʜ;Zd=l>f>>^W>>U>[=o=y={a => />EM>{>N>?>><>q>k->av>B>=2=2;5p:Y>>jQ0>Cw====5p=M"=>pS>:>Vi[>a7>X>GJ>=>9>.>pS=AU=3b>.==X'=8D:>>E>=#=AU=h=B<ܪ;Y:Y;~ʜ<2=$=8D=HM=V=2>> Tc=N===y=k==йh=> |i>%>u)=x=|== G==D=G=A= u= =.<;ʜ:d:YpS>Tk>j>IT>=د==> >, >V(>~9>>~>n>9> Y8=鿗> 12>uhK>>c5?>={X=Q;d:Zd:Zd=k}=,>?>4>E>>:>B=_>=H>* >Y!>>>;&>c>8>y >3oB>>:>q>!>zG>R>hg==U;1{:Y=~=ǟ>=c,> >G>>9>|=i[>K>+0!>Y!>>MG>8>>{X>>:Bf>n>GW>pS>I>d>'>>=n;Zd<8r=@>%>Mn>fV>F~>%=|=q=O> >/>Y!>E>>G>7=>R>J>>+>ycu>> k>_h>a7==8D:d:d="4==> ====V=y=2=-> f>n>5$ >9>+0!> l===>$>Y!>nLZ>T">=k<8r9Y;~ʜ==p#= ==H=8D 12>>%> |i> |i>)>J>====q$T=8D=7!=f=ܪ>"4>B>9> l=d=z>F~>[Ѓ>Sb>@̾>9>=>A>8>===@=[= =˛ >* >}>>M">Y!==em<;d:d:ʜ=;c=AU>5$ >l]>F>~9>g0j>V(>S.>Qܙ>A>"===d=.=d=>Ix>A >]>n>Zn>n= <;Zd:Zd:Zd=@=ǟ>.>h3>>~>hS>OMk>EM>=>-v> = u===rG=Y=>A>>jl>q>>>= :Y ><>X>Xf>B>,>q>=\5=;&=y===!=8r=8D=>pS>b>>[>OMk=~=K ;5p;~ʜ=8D=p>K>>> y=LZ==c,=a=X%<$T<%;Y;~<>=7!=> f>+>&Z>b=HM<8r<^I=B=M"=v===`==\=k}<%=~=[<$T=q$T=AU>>=A= =`y< <:2<%<=sj=SR=Y=йh=|==!===+K=B=B;Y:Zd= = >0>lN>we>F3===2`>+x>96>0H>@>>>>|=є=mMn>>)>k->V={X=:2<==Mn=>>0H>Qܙ>aB>Y!>A>7!>4I>,>pS==y<:Y:Zd= 5=O>:2>z=>|>Vi[> l== a<ܪ=QK=q>>* >EM>U>K >:Bf>1(>,>!> =ǟ={a +>4I>)==D< =H>>@>z>)> /> l=B=O==;5p:Zd<=h =4== =*<%;K:d:Y:d:d:Zd:Zd:ʜ;Y:d:Y9Y:Y:Y:Zd:Zd:Y;Zd;K:ʜ:Zd:Y:Zd:Y:Zd;Y;Zd:d9Y:ʜ 12=G== =sj= ==;&=йh=G> />pS> y==={X=D=<> y>==4=+<>:dd=>1(> G=-====˛ =>`>+x>BS>Ph>A^W>=t`=s=#>#d>R>dXp>C>>=y=kt`=د>@>/>=-= =y== u=>u)>.>HzG>Y!>ID>#9=G=AU>>9>nLZ>I>c5?>f=<:Y;Y="4==> 12=B=є=3=T=B==|=m> |i>!>/t>%>==D=<> >R>f 9>F~> = Y>f>Ǡ=!=){X;Y:Y<~==5p=$<^W;~ :ʜ;~ :Y:Zd:ʜ:ʜ:p:Y:d;5p;~ ={a =y=y=}l=QK= a<<%;d;1{<5p=Y=p#= = =H1{<$T l>>>Ǡ>|>>==T=a=p#=Jw=8D=C=)=>t>96>.>=\=@* >=c,>:Bf>* >>pS>)>8r=Դ=\={a =Rn1=A^W=`y= >>>]>f 9>[>* =D=C,>C>A>1(>>%> Y8=엑==V=== a=Q=7!=f>b>:>av>ZR>, =O=A^W<(X':d;~=QK=|>%>+>,>>o====f=5p<<><%<=P'=c,>%>1y>.> V==~;~ʜ9Y:Zd<=)=̾>=>b=====z=="4Y>r====<;d;=u)= ==s==-="=O=O==0!=h <є:Zd<=QK=>|>E= u=f=%<>;5p<~=@= =є===="=O=T=c==K :d:Zd;~<̾>=Y="4<$T;d:ʜ:Y:Y:Zd:d;1{;~:d:Y:d<:2=Q=D=bZ=l==y=f=z==8D<7?=g=s=Y=c,==3=7! f> />|=_=Y==d=sj=@<><><^I<='4= ==鿗=V==|;<$T< :d<^W= =O>K>:=엑=ǟ=N|=k=8r=8D<;Y:d:d;K<=8D=%=h==k=D<;K:Y<5p=H1{===ǟ=h=:==a7=0N|<2;:d<5p=Q=[=p#==<%<Y:d:ʜ:d:Y:Y:ʜ;~ <5p<<==+=;c=8D=<$T<<(X';5p:Zd:Y:Y:Y:d:ʜ;l;5p:d:Y:d;~ ;K;~ ;~ ;5p:d:Y9Y<5p="4=rG= =/=)==/={a =/+K< ;K:d:d<;~ʜ:ʜ;d<5p<<:Zd:Y:d:d:d:ʜ;d<;5p:Zd;~ =~=`y=5===d==[==<;Y:Y:p:d:ʜ;d<><~;;K:d:Y:Zd:Y:d;~;K;#d:Zd:Y:Y:d;5p<~<8r;d;K;~ <%<%;:Y:Y:d:d;K;Zd:Y:d;p;<Y=2=5p=*=.<%<~;5p9Y:Y:Y:Y:Y:Y9Y:Zd:d:Zd:Y:Y:d;Y;Y:d:Zd;Y;d<~;d;Zd;5p;d<~<~;~:Zd:Y:p:d:ʜ;~ <5<;K=h ==em=< :ʜ<(X'<=+=P'=em=bZ=@;&=u);ʜ;d;5p;~ <%=5p=E=5p<;~:Y;l<,<< =<=<^W<1q;~ʜ:d:ʜ:d:Zd:Y;~ <;~:d:Y:Y:Y;H1{;~ʜ:Y:Y:Zd:d;~<~;~;Zd<(X'<ä<$T<є<~:Y:Y:Y:Zd:d:d:Y:Y:ʜ;Zd:ʜ:Y:Zd:Zd:Y:d;Y;K;5p:Zd:Y;~ʜ<(X'<^I<(X';ʜ;K;5p:Zd:Y;1{<~< <<><~;Zd;5p<:2<ܪ=4?=A^W=+;;Y;d;~ :d:Y:d;Y:d:Zd:Y:d:d:d:Y:Zd:Zd:Y:Zd:d:d:Zd:Zd:d:d:Y:Y:p:d:Y9Y:Y9Y:Zd:d:Y:Y:Zd:Y9Y:d:ʜ:d:Y:Zd:Y:Y:Zd:d:Y:Y:Y:Y:Y:Y:Y:Y:Y:d;Y:ʜ:Y:Y:ʜ;~;5p:d:p:d:d:Y:Zd:d:Zd:Zd;5p;p:d:Y:Zd:Y:Zd;Y;~ʜ:d:Zd:d:ʜ:d:Y:Y:Zd:Zd:Y:d:d:d:Y:Y:Y9Y:Y:Y:Y:Y:d:d9Y:d;~ <1q<>;:ʜ:Y:Y:Y:Zd:Y;~ʜ;K:p:Y:p;<;Y:Y:d<<1{<ʜ<<~ =Q<ܪ=8r<~;:ʜ:d:Y:Y:p:Y:Y;<<$T<<>;Y:d;5p=(X'=bZ=U=u)<8r<1{=+=@;&==="4<̾><:d:d;K<%<:ʜ:d<~<:2<~;p;l;~<~;d:d:Y:d:d:Y:Zd:Y:d;~ ;Y:Y:Y:d;~ʜ;#d:Y;#d<2=8D=`y=:2<7<:2<~:ʜ:Y:d:Zd<%<ä<~ <2;Y:d;K<~;~ :d:Y:d:d:ʜ;Y;d;d;d<~<%;;~ʜ:d:Y:Y9Y:d;Y;Zd;Zd;5p:ʜ:p:Y:d;Y;~ʜ;~ʜ:ʜ:d:Y:Y:ʜ;~;1{;Zd:d:Zd:Y9Y:d;Y;~ ;d:d:p:Y:Y:Zd;~ʜ;~ ;K:d:Y9Y9Y:ʜ;~;Y:Y:Zd:d:Y:Y:Y;~=f=O==د={X=5p;d:p:Y:Zd:d<~:p<5p==/+K;:d;5p;5p:d:Zd<=8D=|;=~=bZ<=;K9Y;K=+=X'=>===X%<~:d:d:d:Zd:Y<%;;K:ʜ:Zd:Y:Zd:ʜ;~ʜ:ʜ:Zd:Y;~ <7=<є=V=/+K<1{<>;<%<~==8D=Rn1===Q;l:d:ʜ<<="4=}l=/=|;=$<є<<=Q=V=l=޻=f=V=u)<8r;d;Y;~ <+K==0N|=Y<8r:d;ʜ= f=rG== =7!<7<2<="4=kt`= ==/=h =*<ܪ=){X=8D="4<8r<$T=){X=8D=4?=Y;d:d:Y:p;Zd<>=$<8r:ʜ:Y=QK=Ə====:ʜ:Y:Zd:Y:Y<(X'=[=;c=C= a;d:d:Zd:ʜ;<~<8r<8r:ʜ:Y:ʜ="4=l==d=sj<%;~:Zd:d;K;~ ;Zd:d:Y:Y:Zd;Y<#d<2<ܪ<<:2;Y:Y9Y;5p<;1{:Y:Y:d;~<(X'<=޻;~ :d:Y:d;Y:d:Y:Zd;Y;d;;:p:Y:Zd:Y:Zd:ʜ;;p:ʜ:Y:Y:d;l;Zd:d:Y:Y:d;Y;Y:d:Y:Zd:d:d:d:Y:Zd:Y:p:d:d9Y:Zd;~;~ ;:d:ʜ<%;~:Y;Zd<5p;K:Zd:d;<1q<%;Zd:Y:Y:Y:d;l;Y:Zd:Y:Y:Y:d;5p:d:Y:Y;1{;p:Y;~<<ܪ:d:Y:ʜ;~ʜ;~ʜ;K<>;:ʜ9Y;5p<^I<ܪ=@=){X=u)<2;~ :Y:Zd:d:Zd:Y:d;1{<<;=){X=5p= a<ܪ<5p:d:Y:Zd:Y:d;~;K<~;5p:Y:Zd;<><<~<><ܪ=.=A^W=E=7!= f<:2;d:d9Y:d;Y;5p:d:Y:Zd:Y:Y:Y:d:Zd:d;Y;5p:d:Zd:d;~ʜ;~;Y:p:d;Y;5p:d:Y:Y:d:d:d:Y:Zd:Y:d:p:Zd:Y:Zd:d:d:d:ʜ;~ <><5p<%;K:d:Y:d;Y:d:ʜ<<<%<%;Y:d;K;;:d:Y:d;d<^W<$T<2<>;Y:Y;Y<<^W<:Zd:d<<<<~;d;~:d:Zd:Y9Y:Zd<><ܪ=[<$T<ܪ=8r="4=.=%<=[<7<1q:d:Y:Zd:Y:Y:d;Zd;5p:p9Y:d:ʜ;Y:d:d:ʜ;K<;p:d:d;~;:ʜ:Y:Y:Zd:Y9Y;Y;d;d:d:Y;Y;K;p:d:d<<:2<%;5p:Y:Zd:d:Y:Y:Zd:ʜ<%|=߂=^=Rn1=@=.=em=a=є=i[=I==|= =1{=O=|=v={a <ܪ:d:d<==a=-> l=o==h =7!=V= ==i[==j=y6=د==V=엑=== =Y;Zd:Y<=rG=h==̾=/=8D=$=V=.==6P=ϖ7=O==c==O=d==p=<:ʜ;l<ܪ=QK=|;=h =q<7=Mn= =a= =QK%>t>==c=[=){X=4?= =̾=V=鿗=1{=޻= f;H1{P>"> G>=,=Y=+=(X'= ==LZ=B=د=d="4;~ʜ<~="4=rG=[=QK<̾><:2<=7!=%==x>>K=ܪ=+K=h ;~ ;Zd;Y;Y;d;p:d:Y<<<ܪ<%<<;Zd:Zd:d=V=9=<=׌=d="4;p:Y=~= =O=y=йh=є== =Y=D=HM=a7=/+K<$T Tc>=є=D;<1{=3==,==v=X'=={X=޻=[=YE==?=2;Y;K=#d=B=)==p#=l=q$T=`y=){X<<5p<(X'<><%<(X'<2<ӑb;d;~ʜ;Y< ;1{:Y:Y:p:Zd:Y:Zd;1{<<%;Zd9Y:d;d<%<;#d:Y:Y:d:ʜ:d:Zd:ʜ;ʜ;d:d:Zd:Y;1{<%<ܪ8r=y6={X=`y="4==8D=== u=ӑb= u==D=D=c=2=4=p#<ܪ:Y;~=]=I>+0!>=>&^=V==em=h ==̾>>>E>%>>b>> l>>=I= =E<~;d={a =B>;c>U>:Bf>E=====B>>* >.>#9>P>>>>>==m>5$ >n=7==h =8r=0!=ӑb>o>>J>,\> l> >`>>`=엑=q=QK<(X':Zd;K:d:Y;l=$= =k= =Rn1=Q<$T="4=h ===c,=?==V=u)<%==8D=p#=y=5=h ==H==d=h =em=)=є=B>>(>> y=ܪ=0!={a ={a ==O=>`y=ۇ==2;;Zd=V="> G>(> ==y= ==>%>IT>av>^_>EM>!=LZ==a=O>>4>@;&>(=鿗=5>&Z> 12=2=8r=l=!>|>.P>R>k+>i>R>.>|===ܙ>J>=>Ph>8i>u=<9Y:d= a==߂=j=D= =4?=<є=%=">%>0H>?Z>=>.P>=̾>= =p#=0!=>>)$>pS==sj<><%=+=}l=5=h =<2=%=K =|;=3=8r=l=7!<;Y:ʜ<%<=[=HM<:d:d;Ko>)> >>>Ǡ> 12>=׌=0!==8D<7<===>>=>6>=pS>(>n>%> l> >`>E=йh=d=q$T=8D=8r=Y=8r=y6>:Bf>f>[Ѓ>n=<=;Y;d=p#=O>>t>>====={X=n=7!=Y<ܪ= f=l=>/t>X>M>J=4<:Y:Y===O=y6=ܪ=ä=D=?={X=y=;c<ܪ<> >m=AU=`y<~;p=B=h =8r={a =\=Rn1=Rn1=7!<:2< :ʜ:Y:Y:ʜ;dQ>>===8D='4=8D===ܪ=V=AU=˛ =̾==,=O== =Q:ʜ<5p=>>X>n>GW> ===q$T=޻= u> >%>.>* >t>)>>>>E=̾=rG*U>x>3>i->d=== = ==>">>=>H>E>96>.P>,>2ݪ>/>pS== <2:Yu)>U>n>K u>u)===l=N|=y6>>/>8D>2E>)$>">$1>* >$1> 12=|=}l>z> f=Y=[=7!=QK=Y=D=ܪ=>|==>?>`y>==,=k}=){X;~ <~=u)=n==5=@;&<1{:Zd:Y:Y:Y:Y:d;~ʜ;K;K;1{;K;d<~<1q<>;p:Y:Y:Y:Y:p:Zd:Y:d:ʜ:ʜ:d:Y:Y:p:d:d:Y:Y:Y:d;~ <:2<>;1{:d:d:d;~;ʜ<%<;5p:Y:Y:d:d:d:Y:Zd:d:d:Zd:d;d;5p:d>!> |i=̾=M"= =E=I>>,>=c,>;/>.>)=I=SR=9=̾=ʜ>>&Z>u)=D={a 12>@̾>Q4>2L===0!=s>>9>d<>>}>>vG>OMk>=_= >b>0>c5?>zr>Y!>=l=8r:p f>@>Q4>2ݪ=G=v=X'=>>@;&>k->>/>>^}>)$=鿗=|>8r>:>vG>j>pI>-v==%:Y;d=em=,>> > |i====H=E=>">A#>[>b>T">79> =c=^=s>>GW>`>GJ>r=SR<1{:Y:Y<={a =v==4=bZ<==l==ܪ>B>>r> =-=E=n=8D===A> ==h=:2;:Zd<$T=8D=z==M"==a=pS=sj=<;d;Zd:d:Y;<ܪ=a7=޻=\=={X=v=p==4= =h =){X> /=˛ =rG>+x>&Z>>>i>>r=== =Sb=Q=8r==H=->;/>i->`y>$1==){X<5p:d<~ = > >4I>C>=c,>/t>">">">pS==l=l=V=){X=8D=4>%>f 9>`>:>GW=I=8D<%:Zd+0!>;c>79>%>>r>`=e==y=Mn=/+K=~=7!=Ə> >Y!>q>>@;&=йh=;Zd;=C=>`y>r>Y>E=y6=ۇ=1{==|;=k}<ӑb<<$>G>A^W>Y=@<8r:Y:Y> G>|=={a =+===Rn1===|=;&======I=;<=:ʜ<=4>C>_>o&>F3>8r={X=h =D=rG=E=G>pS> a>n>">> >>>K=є=h <:2:Y<%=c>8D>d> a>j>f=c,==m==">>2ݪ>@̾>A#>9>.P>* >.>,>=%=3<:Y<=4>>>c>y >R>%==h =bZ= G=,> f>%>2ݪ>3oB>-O>&>$>'4>:> |i=Y=rG޻>'Ə>%=1{==HM="4={a ={X=˛ =>>>`y>>>=N= u=HM=;:Y<:2=/+K=l=k=u)=H1{<^W<%<^I=B=QK=[===X'==I=?=N|=d=8r=(X'<%:Y:Y;~<:2;~ʜ:Zd:Y:Zd;~<(X';~ :d:Y:Y:d:d:p:p;Y;Zd:d;~<є=4?=Mn=7!<ܪ=<є<%;;K;Y:Y:d<2==?==SR==7!=+=a7=u)=^===v===p#=@;&=A^W=l=y=9=d= =QKY>Cw>>=;&==f==ӑb>>pS>&>,SR>#d>=y=+K=d=є=>>#d>u)=D=|;<:d<^I=)>>9>GJ>,==E=X'=ǟ>Ǡ>(>F~>f>q>k+>K u>=Z==G>.>`>we>Y>=!=.:d>>9>GW>.====|> 12>.P>N>oW>>z=>Y!>* =엑=ǟ>>:>w>3>uhK>1(==q:d;d=\=1{>Y>> l=̾=l=={X=>)>,>BS>QK>IT>4s> f=;&=X'=ϖ7>@>O>i->Qܙ>=q> |i>8r=g=?=sj=@;&=l=> l>> Y8=̾=K ;K:p<#d;K:d:d;d=A^W={X=O=B=V=I=Z=엑=t`=AU===h =Q y>>==rG<>">n>J>%>>> l=I==8r===<===>3&v>[Ѓ>SH>t=!=.B>.>?>;e>.P>n>>>.=Z={X=|;=A^W=HM=7!=X'> >[Ѓ>6>>BS==;c* >=c,>9>* >>> ==2=8r=8D=Y<$T=+=^> 12>Tk>>{>==i[=){X;;d=P'=c,>Ǡ>z>> y=G=m=O==sj=.">GJ>A>)=<:Y:Zd<2=q$T=q=ǟ=ǟ=={X===7!<;:d:ʜ:ʜ;K==`=˛ ==鿗=q=5p;Zd:ʜ<;5p:Zd:Zd:Y:Y:Y:Y:d:ʜ:ʜ:d;5p<7=H1{=h =QK="4;Y:d:d;~ >79>@̾>=ϖ7=y=5p<$T= 5=l=+K=׌=엑==))=V=m==o=,= G=$;9Y<^W=>>W>e{>=c,=A=@=:2=Y=Jw= =">Ǡ>pS>z>>%>>)>==?=Jw<~ f>?>L,>-v=2=y="4=8r=QK=a=O>>`>>%>`> >.>Ǡ=B=Ə=5p;K;~ʜ=+=E=> =y6=d=8D=HM={a =Ə=="=ܪ=I=y=I=_=O=+K=n<:d<= f=a7==V=8r<:2;~ :d:Y:d;K<~<~;~:d:Y:Y9Y:Y:ʜ;Y:d:Y;~ <^W="4=7!=HM y>>:==f=|;=d= u=> |i>>(>+>=j=h=X'= >o>/t>?>,==y<:Zd;~ =T= > >">=̾=f=sj=d=O=A>>$1>5>8i>([>u=c={X=,>pS>D>ZR>BS> =d<є:Y:d=%=d=AU=="=d=QK=7!==H=E=йh=LZ> >>> f=Դ=a=[=>K>,>>=>,==<^I<(X'=8D=/=d= =A^Wb=I=d= f:d9Y;~ <^W=~<$T:d:Y;5p<~<%;d:d:Y:d;Zd;d;1{;5p:ʜ:d:d:Y:d:Y:Y:Zd:d:Y:Y:Y:ʜ;~ <<(X';~:Zd:dE>==g=Q0=y6=O=q==@;&=[< >#d>f=鿗==QY>">n>)>>E=e==I==7!=[<<ʜ=3=Z>* >K u>EM>J=?=+<:2:d9Y<~=h =,>%>'Ə>%>'>==V=;&===<&>G>C>=I=;K:Y;5p=){X=0!=o>.>`>=AU=Y=l= =8D=7!=>`y>d=>=t`= =Rn1={X==̾=HM=;Zd;5p<2=2=\=`y=@;&=(X'=8r=kt`=O>>'==Ə=QK<ܪ<^I<8r=(X'=l===ǟ=Y=6P==T==X'=bZ<:Y;d=;c==A>=йh=)=+ |i=o={X="4;5p<~ =QK=)== =+;~ :Zd;K<:2<%;Y:Y;Zd<>;Y:Y:d;K<~;;p:d:Y:Zd:ʜ;1{<~<^I<%=%=.=/+K=<b==;&=<$T<>:d:Y<==>>=-=|=D=X'==:2<%<%;K;~ =A=6P==H=3=.=+K=I=d=8r=T=+<:2;5p:d;~ <<<%<8r<~:ʜ:Y;~ <2=~=Q<ܪ;~:Zd:Y;<%;~ʜ:Y:Zd:d:d:Y:Y:Y;5p<%;d:Y9Y:Y:d;p<><:2<~;:ʜ:d:d:Zd:Y;Y;~ʜ:d:Y:d;Zd;d;;d;Zd:d:Y:Zd:p:Y:Y:Y:d:ʜ:d:d:Zd:Y:Y:Y:Y:Y:Y9Y:Y:Y:Zd:Zd9Y:Y:d:d:Zd:Y:p:d:Y:Y:d:d:Y:Y:ʜ;1{;1{:ʜ:Y:Y:Zd:Zd:Y:Y:ʜ<~==sj=P'=5p=~;Zd:Zd;~:Y9Y;Y;~ <~;d:d:d;<%;K:d:d:d:d:Y9Y:d:d:d:Y:Y:Y:d:p:Y:Y:Y:Y;Y;~;5p:d:d:Y:Y:Zd;Zd;K;~:ʜ:d:d:Zd9Y:d;Zd:ʜ:d:Y:Zd:Y:Y:Y:Zd9Y:Zd:p:Y:Y:d:d:Y:Y:d;5p;Zd:d:Y:d:ʜ;;:d:Y;#d<~<;1{:d:d;~ <><><><%;~ :ʜ:d;Zd;Zd;Y;;Zd:d:Y:Y:Y:Y:Y9Y:Y:p:ʜ:ʜ:Y:Zd:d:ʜ:d:Y:d;~ʜ;;;Zd:Y:Y:d;p<%<(X';;~ʜ;5p;K<><>;K:p:Y:Zd:d;;5p:Y:Zd:Y:Zd:Y:d:d:Zd:Y:Zd:Y:Zd:Y:Y:d;d<;Y:d:Y:Y:d;K;~ʜ;5p<^W;d:d:Zd:Zd:d:d:Y:Zd;#d;p;5p:Y:Y:Y:Zd:Zd:Y:d;d;;~:d:Y:Zd;1{<^I<%<(X'< <~;d:d:Y;Zd<5p<<2<<%:d:ʜ<~<<5<^W='4=7!=HM;#d:Zd:d:d:Y:Zd:Y:Y:d;;;K:d:p:d:ʜ:ʜ:d:Zd:Zd:d:Y:ʜ<%<5;d:ʜ:Y:Y:ʜ;~ʜ;Y:Zd:d<~<;K:ʜ:d:d:d;Zd<;d:d:d;K<%<>;K:d:d:ʜ;5p:ʜ:d:d:ʜ:d:ʜ;:Zd;Y;d;Y:Zd:Zd< ;~:Zd:Y:Y:Y:Y;l;~ ;;p:d9Y:d;d<~;;5p:Y:Y:Zd:Y:d;5p;1{;p;#d:Zd:Y:d;5p;Y:p:Y:d:d:ʜ;Zd;~ʜ;5p:d:Y:Y:ʜ;~ʜ;K;K;~:ʜ:Zd:d;Y;K<;;:ʜ:Zd:Zd:d;~ʜ;K;K;~ʜ:d:Zd9Y:Zd:d:d:d:d:Y:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Zd:Y:Y:Zd:Y:Y9Y:Y:d:d:Y9Y;p<%<>;5p:Y;p;~:Y:d;5p:ʜ:Zd:Y:Y:d;~ <%;;Y:Y:ʜ<:2<є<ܪ<^W<8r<8r;K:d:p:ʜ:d:p:Zd:d:d9Y:Y:d;K;~ ;~:d:Y:Y:d;d<є=[==Q<ܪ<^I;~ʜ:Y:d;<(X'<~;l:d:Y:Y;5p;<^I<>;~ʜ;5p<#d<%:ʜ:Y:Y:d:ʜ;~ʜ;:ʜ:Y:d:d:d:Zd:d:d:d:Zd:Y:Y:Y:Y:Y;~ʜ;~ ;;Y:d:Y9Y;Y<%;~:Y:Y;~<^I;:d:Y:d;;p:d:Y;5p;;d:ʜ:Y:Y;Y;K;~ <>;K;Y:Y:Zd;~;;p:d:Zd:Zd:d;Y;K;d;Zd:d:d:Zd:Y9Y:d;Y:d:Y:Y:Y:Y:Y:Y:Zd:Y:d:ʜ:ʜ:Zd9Y:d;K<~;d:ʜ:Y:Zd:d:d:Y:Y:ʜ;d:d:Y:Zd;d<%;d;~;~ ;Zd9Y:Y:d;Zd;Zd;#d;~ʜ;;d<~<%;K:d:Y:Zd:Y:Y:Y;5p<=8r=[<ܪ<;~ :d:d<1q:d:d<^I=Y=7!=7!=7!===H1{=8D= 5<<>;~ ;Y:Y:Zd;Zd<=7!=bZ=Jw<~ ;~ :Y;5p:d:d< =*=QK=== f<<<5<$T=+=A^W=D=D=E=D=:2=;c=V=h =V=+<;~:Y:d:d:d:Zd:p;~ʜ<><:d:Y:Y:d;~ <=7!=em=q$T=QK=;~ ;~<;=^I=sj=D<%<(X'<%=8r=<^W<^I<;l:d:Y;~ʜ< ==$=+=HM= f=8D=E=IT=7!=.==7!=HM<8r:ʜ:Y:Y:Y:Y:Zd:Zd:Y:d:Y:Y:d;~ <#d;:ʜ:Y:d:d:Y:Y:Y:Y:d:d:Y:Y:Y:Zd:d:d:p:Y:Zd;Y;~;Zd:d:Y:Y:p:d;Zd;p;K;d;Y:d:Y;5p=Sb=A^W=@:Y:ʜ<="4=C=8D<<>;1{:d:Y:Zd:d;Y;K;~ ;d;;:d;5p<$T=Rn1=y=em=2<:Y:Y<8r=V=d===rG=Y<̾><ܪ=.=8D=p#= ==f==={X====k}<%:Y;~<ܪ=8D=`y=IT=~<^I<2=~=8D=bZ=}l==8r=3= =y==;c<2;H1{;Zd<(X'<5p=V= G={X= =7!<=-==X'=7!;K<%="4=rG=8r=V<7;~ ;Y:Y:d;p;;;1{;Y;K;d;d;~ ;K:d:Y:Y:Zd;K;;;5p:d:Y9Y:d<~<<<ܪ<ܪ;:p:ʜ<#d:ʜ:d;#d;~ʜ;Zd:d:Y:Y;Zd:d:Y:Y:Y:d<=bZ={X=є==[=;~;~<2=5p=[=[=H1{=8D=@<+K;~9Y;~ʜ<ܪ=V==h =Q< ;Zd<5p<8r;d:d:ʜ=8r=~=em=y=)=)=)= ==@;&<ܪ<="4=|;={X==E=B<~ :d;~<ܪ=8D=QK=+<%:ʜ;<ä=:2={a =8r=8r=`y={a =`y=%<%<%=H1{=Y=X'==V:d:Y;<^W=){X===+<:d:Zd:d:d:Y:Zd;~<(X'=8r=:2=D=+<<><:d:Y;=8r=h = == =d==/=l=0N|<%<%:d:Y:p<~=== G==|;=+<<%:d:Y<%;~ʜ:Y:Y:Zd:Y9Y:Zd:Y:Y:d;d<~;;~:d:Y;~ :d9Y:Y:Y:Zd;5p;d;K:ʜ9Y:Zd:d:Zd:Y:Y:Zd:Y:Y:Y:d;~;d;1{:d:Zd:d:d:Y:Y;Zd<5p<<><%:d:Y;Y;K;:ʜ:Y:Y:Y:Y:Y:Y:Y;K;;<~;~ ;5p:ʜ;Zd;~ =~="4<< :Y:Zd<~<@<<<==Jw=|;=}l=QK=~=~=@;&=P'=){X<;~ :d:d<8r="4=V=]=8D=~<2<%:d:d<~;d:Zd:Zd:Y:Y:Y:Zd:Y:ʜ<~<^I<^I;:p:Zd:ʜ:ʜ:d:d:ʜ;5p:ʜ:Zd:Y:Y:d:p:Y:Zd;<><5p;d:Zd:p;5p;Zd;Y:ʜ;~;~ʜ:d:Y:Y:d:ʜ:d:p;Zd;~:ʜ:Y:d:d:d:d;5p:d:Y:Zd:Zd:Y:Y9Y:Y:Y:d:Y:Y:Y9Y:Y:Y:Y:d:d:Zd:Y:Y:Zd;5p;d;d;Zd:Zd:Y:Y:Y:Zd;5p<<:2<ܪ<$T;5p9Y:Y<^I=7!=}l=8r=h =7!=~<є<1q:ʜ:Y:Zd:d;5p;~ ;5p;<ܪ=+=/+K=8r<~;1{:d:Zd;K<1q<1q;d;Y:d:Y:d:d:Y:Zd:d:Zd:d;5p;Zd:d:Y:Zd;5p;1{;:ʜ:Y:Y:Y:Y:Zd;Y;l;Y:d:Zd:d:Y:Y:Y:Zd9Y:Zd:Zd:Y:Zd:d:Y:Y:Y:Zd:Zd:Y9Y:Y:Y:Y:Y:Y:Y:d:ʜ:d:Zd:ʜ;l;Y:Zd:Y:d;Zd;Y:Zd:Zd:d:d:Y:Y:Y:Y:d:d:Y:Y:d:ʜ;Zd;5p:d:Y:Zd:Y:Y:p;K<><(X'<><><~;Zd:Zd:Zd:ʜ;5p:d:Zd:Y:Zd:d:ʜ:d:Y:Zd<><ܪ=8r<7<2<;~ʜ:Y9Y:Y:d;<%;5p:Y9Y:Zd:Zd:Y:Y:d:d;Y;;d;Y:d:Y:Y:Y:Y:Zd:Y:Zd:d:Zd:Y:Y:Y:d:ʜ:d:ʜ;Zd;5p:d:Zd:d:d;~ʜ;K;K:ʜ:Y:Y:d;5p;5p:d:Y:Y:Y:Y:Zd:d:d:Zd:d;5p;5p:d:Y:Y:d:Zd:d;Zd;Zd:d9Y:Y:Y:d;~;d;~ʜ:d:Zd:d;~ʜ;Zd:d9Y:Y;Y;:d:Y;Zd<~<(X'<;#d:d:d;5p:ʜ:Zd:d;<(X';d:Y:Y:d;Zd<<>;~ ;Y:d:d:ʜ:d:Y:d;d<%;p:Y:Y:d;5p;~:ʜ:Zd:Y:Zd:d:d:Y:d:ʜ:p9Y:Y9Y:Y:p:d:d:Y:d:p:Y:d;Y;5p;1{;;~ ;Y:p:ʜ;Zd;<5p<>;:Y:Zd:d;~;;~ :ʜ:Y:d:p:Y:Y:Y:Y:d:d:Y:Y:Zd:Y:d;Y:ʜ:Zd:Y:d:d:Zd:Zd:ʜ;5p:d:Y:p:ʜ;K;~:d:Zd:ʜ<%;~ :Zd:Y:d;;d;~ʜ:ʜ:ʜ;~;~ ;K:ʜ:d;d<@<2<~;5p:Y:Y:p:d;~;d;:d9Y:Y:Zd:Y:Zd:Y:p:Zd:Y:d;5p:d:Zd:Y:Y:Y:Zd:ʜ;~;5p:d:Zd;~ʜ;K:Y9Y:d;~;d;:d:d;:d9Y:d;d<~;~ :ʜ:d;Zd<#d;:ʜ:Y:Zd:d:d:Y:Y:Y:Y:Zd:d:ʜ:d:Zd:Y:d:d:Zd:d;;~:d:Y:Y:p:d:Zd:Y:Zd:Y:d;5p;Zd:d:Zd9Y:Y:Y:Y:Zd:Y:Zd:d:Zd:Y9Y:Y:Zd:Y:Y:Zd:d:d:Zd:Y:d:d:Zd:Y:Zd:Y:d;p;;~:Y:d<%<+K<ܪ<+K;d:Y;l<8r=8r="4=~:ʜ:Y:Y;K<:2;5p:Y:d;1{;d;5p:Y:Y:Y:Y:Zd:Y:Y:Y:Y:Zd:d:Y:Y:Y:Y:Y:Zd:Zd:d:d:d:Y:Y:Zd:Zd:Y:p:Zd:Zd:p:d;~;~ ;d;Zd:Zd:Zd:d:Zd:Y:d;K< < ;K:d:Zd:d:Y:Zd;Zd;~ ;;~:p:Y:d:Y:d;Y;Y:d:Y:Y:Y:Y:Y9Y:Zd:Zd:Y:Zd:Zd:Y9Y:Y9Y:Y:Y:d:d:Y:Y:d:d:Y:Y:d:Zd9Y:Y:d;5p;~ʜ:ʜ:Y:d;<%<(X';:ʜ:Y:ʜ;~:ʜ:ʜ;Y<%;5p:Y;d<8r<<<2<<~:d:d;~ <><~;~ <~:d:d<5p<%<ʜ<%<<:2<^I<<<;:Zd;1{<^I<(X';~:Zd:d;K<~;d:d9Y:Zd:d:p9Y:Y:d:d:d:Zd:Y:d;~ <:2= <ӑb;d:ʜ:Y:Y:Zd:Zd:Y:Y:Zd:d;Zd<%<<1{;K:d:Y:ʜ;~ʜ;Zd:d:Zd:Y:d;1{;<~<^I< :ʜ:Y:d:d;5p;K;;~ ;K:ʜ:Y:Zd;5p;K;p:ʜ:Y:Y:d;5p;~ʜ;Y:ʜ;#d;Y:ʜ:d:Zd:Y:Y:Y:ʜ;<:2<%;1{;Y:p:d<Y<;d:d;Y;~ <~;~ ;~:d:d;K<><<ܪ=3=A^W=Mn=7!=Y=8r<=<ܪ==){X=Q<<^I;K:Y:Y;Y<^I=U=;c= a<=<ܪ;d:d:Y;~ʜ;Y;5p;~;~ʜ:d:Y:Y:d:ʜ:d:Y:Y:d:d:Y:Y:Y:Y:Zd:d:p:Zd:Y:d:d:ʜ;5p;K;K:ʜ:Y:Zd:ʜ;~ʜ;Y:Zd:d;;d;;Y:ʜ;Zd<~<8r<є<ܪ;K:d:Y9Y:Y:ʜ<~<<є<%=="4=B=Rn1=;c=HM<є<1q;Zd:Y:d:ʜ:ʜ:d:d< <ܪ=8D=h =|;=q$T=Mn=<^W<:2:ʜ:Y;K<< << <~;Y:Y:Zd<~<ä<ʜ<$T<2;K:Y;~ =޻===?=~<%:Y:d;~ ;;5p:Y:d<<8r<:2;~ ;l:Y:Y:Zd:d:d:Y:Zd;#d<~:d:d===GJ=@;&=8D=.<;Y:Y:d:Zd:d<~<:d:Y;~<(X'<:d9Y:d<(X';K:d:Y:d:ʜ:d:Zd:d;<ܪ= <=<є:d:Zd;K<5p<1q;K:Zd:Y;<><(X'<;~ʜ:Zd:Zd:Zd:Y:d:d:Zd:p;5p;d;:ʜ:Zd:Y:Y:Zd;<~<%;ʜ;~:d:Y:Y:Zd:d;Y;d;~ ;~ ;Y:Y:d;d<><%;~ ;Zd:d:Y9Y:Y:d;Zd<;Y:Y:Y:Y:Y:Zd;~ʜ<%;Zd:Y:Y;Y<<ܪ=){X=:2=C=8D=Y<^W<>:ʜ9Y:Zd;Zd;;5p:ʜ:d:Y:ʜ;Zd:ʜ:Y:Y:ʜ<~<1q;ʜ;#d:d:Zd:Y:ʜ;l:ʜ:Y:p;5p;Y:ʜ:Zd:Y:p:d:d:Y9Y:Y:Zd:Y:Y:Y:Y:Y:Zd:Y:Y:Zd:Y:Y9Y:Y:Zd:Y:Y:Y:Y:Y:Y9Y:Y:Zd:Zd:d:d:Y:Y:p:ʜ;#d:d:Zd:d:d:Zd:Y:Y:Y:Y:Zd:ʜ;Y:d:Y:Y;#d;~ <~;Y:Zd:Y:Y:Y:Y:Y:p;Y<<:2;~ :d:Y:Zd:Zd:Y:Zd;Y;~ <~;~:Y:Y:Y:Y:d:d:Zd:Y:Y9Y:Y:Y:Y:Y:Zd:Zd:Y:d;K;~ ;Zd:Y:Y:Y:Y:Y:Y:d;d:d:Y:Y:p;Zd;:ʜ9Y:Y:Y9Y:Y:p:Y:Y:p:Y:Y:Y:Zd9Y:d;;K;#d:Y:Y:Y:Y;~<1q<~:d:Y:Y:Zd;K<%;~ :d:Zd:d:d:ʜ;5p;l;Y:p:Y:Y9Y:Y:Y:d:d:Y:Zd:d:Zd:Y:d;K;;~ ;Zd:d:Y:Zd;Y;~;Y:Y:Y;~<><;Y:d:Y:d;Y;d;:d:Y:Zd;5p<<:2<(X';~ ;Y:ʜ:Y9Y:Y:p;Zd;p;~ʜ:d:Y:Y:d;5p;Y:d:d:Y:Y:Y:d:d:d:Zd:Zd:d:d;~ʜ;K;1{;Y:Y:Zd:ʜ;Y< ;~ʜ:Y:d:ʜ:ʜ:Y:Y:Y:p:Y:d;K<~;d;5p:p:Y:d:d:d:Y:Zd;~ <<엑<7:d:Y:d;d;1{:ʜ:d:d:d:p:ʜ;<%<~;;1{<5p<^W="4=7!='4<7<<^W;d:ʜ:d:Zd:Y:Y:Y:Zd<<Y;;5p:Y:Zd;Y;~;l:d:d;K<><<<ӑb<;d:Zd:Y;Zd<~<>;K:Y:Zd:Zd:Y:Y:Zd:Zd:d;~;d;;l:ʜ:d:d:d:Zd;K<5p<%<%<5p;~ ;5p;Zd;d<%<Y;K:d:d=8r=A^W=V=8D<ܪ;:d:d:d:Zd<%<7=.=8D=><:ʜ:Y;~<^I<є<~;~;Y;~;d<%<><~;Zd:Y;Y<>;Y:Y:d;~ < :ʜ:Zd<~<1{=8r<<<<<<$T<ä<5p:ʜ:Y;d:ʜ:d< <;=V=[= ==8D;Y:Zd:d< <8r;Y9Y:d;d<5p="4<=;5p:Y9Y:Y:Zd:p:ʜ;d;#d:Zd:Zd:d:ʜ:d:Y:d;K<1q;Y:Y;d<8r<<;#d:d;5p;Y:Y;Y<%=*=;c=E=Rn1=f=n=X%='4<ӑb<;:ʜ:Zd:Y:d;~<><><(X';d:d:Zd:Y:Zd:ʜ;Y:d:Y:ʜ;;~ʜ:Y:Y:Y:Y:ʜ;~ <5p<%;5p:Y:Y:Y:d:ʜ;~;K;K;d<2<2<;~ ;d:d:Y;5p;:ʜ:Zd:Y;p<>;~;~ʜ;d=V=B=HM=a=/=a7=u)<<%<<~ʜ;;5p:Y:Zd;<1{=/+K=QK=Mn=/+K<ܪ<:2;d:ʜ:Y:Zd;<ܪ=8D=]=YAU=8D=<<;~ʜ:d9Y:Y:Zd:Zd:Y:Zd;~ ;~ ;d;:d:Y;#d;d;d;<:2==QK={a ==h =8D= f<ܪ;Y:d:d:ʜ;K< ==8D=/+K<=;d:ʜ:d:Y:Zd:Y:ʜ;~ʜ:d:Y:Zd:d:d:d9Y:Y:Zd:Y:Zd:d:Zd9Y:Zd:d:d:d:Zd:Zd;Zd;;;:ʜ:Y:Zd:d;l;~ ;;K;Zd:d:Y:Zd;~<%;d;~ʜ;1{;;d:ʜ:Y:Y9Y:d:d:Zd:Y:d;#d:ʜ:Y:Zd:d:ʜ:Y9Y:Y:Y:Y:d:ʜ:ʜ:d:d;K<(X'<(X';K:Y:d;~ʜ;~ ;~ ;<%:d:d<:ʜ;Y<="4=V=|;=8r=|;=bZ=H1{=5p=<7=*=7!=+=[<ä<;~ʜ:Y:Y;d<8r<1{<ܪ=){X=HM<ܪ;~ʜ:ʜ:ʜ;Zd<<<7<엑<8r;5p:Y;Zd;~ʜ:ʜ:ʜ;~<<== 5<ä;~ :Y:Y;5p;~ <%<Y;d;d<><;~ʜ:Y:Y:Zd:Zd:p<~<<1{<2=h =rG=p#=]=8D=Y<;~ʜ:Y;K=%=Jw=p#=|;=}l=sj=h =Jw="4<;5p:Y:p;d<ä=C=pS=={X==k}:d:Y:p:d:d:d:Y:Zd;1{<=[=7!=8D='4<ܪ='4;5p:ʜ<><ܪ=A^W=}l={a =A^W<%="4=;c=IT=D=7!=޻<%;5p:Y;l;5p:Y:Y:d:d:Y:Y:Y:Y:d;~;K;Y:Y:Zd;~ʜ<~<%;K:d:Zd;Zd;~ ;~ ;Zd:Zd9Y:Y:d:d:d:Y:Y:Zd:Y:Y:d:Y:Zd:ʜ;Y:d:Zd:ʜ;Y:d:Y:p:d:Y:Zd:Zd:Y:d:d:Y:Y:Zd:Zd9Y:Y:d:d:Zd:d;Y;Y;~;5p:ʜ:Zd:Zd:d:ʜ:d:Y;Y<>< <;Zd:Y:Y:Y;<~<Y;1{:d:Y:Zd:d:d:Zd:Y:Y:Y:d:d:Y:Y:Y:d:d:p:Y:Y:Y:Y:Y:Zd:Y9Y:Y:Y:Y:d:Y:Y:Y:Y:Y:Zd9Y:Y:Y:Y:Y:Y:Y9Y:Y:d:d:Y9Y:Zd:d:d:Zd:Y:Y:d;1{;~ ;~:Zd:Y:d:d:d:d:Y:Zd;Zd<<;~ :d:Zd:d:d:Y:Y;Y;K;~ ;~:Zd:Y:Y:Y:Zd:d:d:Zd:Y:Y:Y:d:d:Y:Y:Y:d;Y:ʜ:Zd:Y:d:d9Y:Y:Zd:Y:Y:Y:d:d:d:Zd:Y:Y:Zd:Y:Y:ʜ;d<~;p:Zd:Y:ʜ;~;K;p:ʜ:d:d:d:d:Zd:d<~<<~;:d:Zd:Y;#d<(X';d:d:Y;~ʜ<=[=HM<$T<:2:p:Y:d;K<~;;H1{:Zd:d:ʜ:Y:Zd;< <~;~:Zd:p:d:Y:Y:Y9Y:Zd:ʜ;~ʜ:ʜ:Zd:ʜ;~ < ;~ ;l:d:Y:Y;Y<<><~;K;Y:p:Y:d;p;~ ;K;5p:d:Zd:Y9Y:d:d:d:Y:Y:d:d:Y:Zd;Zd<~<>;;Y9Y:Y:Y:Y:Y;#d:d:p;5p;;l:d:Y:Y;d<(X'<(X'<%;d;Y:Y:Y;Zd<~<:2<^I;d:d:d;K<~<%<(X'<(X'< ;K:d:Y:d:ʜ:ʜ;Y;5p;5p:ʜ:Zd:Y:Y:Y:Zd:ʜ;5p;Y:d9Y:Y:d<~<8r<;Y:Y:ʜ;<><~;~:ʜ;~<8r==Sb=m=bZ=8D=B<<%:ʜ:Zd:Y:Y:d:Y:Y:Y;~ʜ<><~;~;1{<~:p:Zd:d;Y;d<;~ʜ:Y:Y:d:ʜ:d:Zd:Zd:p:Zd:d;~ <(X'<;~ :ʜ:Zd:Y:Zd:Y:d<,<~;Y;Zd;d<^I<;:d:Y:d:Zd9Y:Y;~<==[=.=9= G=l=[=8D=+=Q<2<%;Zd:d:d:Y:ʜ< :d:d;p;;~ ;<%<:2<5p;K:Y:p;5p;Y;5p:d:d:ʜ:ʜ:d:Y:Zd:Y:Y:Zd:d:d:Zd:Y;K<^I<8r;K:d:p;;~ ;d;K<(X'<;ʜ<><1q;d:p9Y:p< <%<%;p:Zd:ʜ<^W==.=/+K="4=%=u)=Q=8r<ܪ<2<<%;Y:Zd;~ <~ =Q;~:Zd:d<==Y<=<>;~ ;Y:Y:p:Zd:d;5p;Zd:ʜ:Zd:Y;<=<ӑb<%:Zd:Y:ʜ;l:ʜ:Zd9Y:Y:d<;5p:Y:ʜ;~ʜ:d:Y:Y:Y:Y:Y9Y:Y:Zd:Zd:Y:Zd:ʜ;~ʜ;~ʜ:ʜ:Zd:d;d<%<~;d:d:d<~<5p<%;:Y9Y:p;;;K:d:Y:Y:d:d:Y:Y:Y:ʜ;Y:d:Y:Y:d;Zd;~;5p:d:Y:Y;K<= a=:2=QK=D=.=<,;~ ;K;K;d;K;#d:Zd:d;Y;~ ;d;Y:Y:Zd:d:d:d:d:Y:Y:Zd:Y:Zd:d;Zd:ʜ:Zd9Y9Y:Zd:ʜ;p;~ ;:d:d:ʜ:d:Zd:Y:d:d;Zd;K<~<><~:ʜ;Zd<:2<><:2< <<%<<(X'<%;d:Zd:Y:ʜ;~ ;d:ʜ:Y:d;d==k}=%=3=V=u)<^I;Zd:p:Y:Y;Zd<5p<8r<=Q=A^W=kt`=|;=l=3=B=rG=V=8D=k}<є;d:Y<=h ==v= =7!;K:d:Y:d;Y;~ ;l:d:Zd:Y:d;K<%<><~;d;~ <:2=A=,=a=C=8D=.;K:ʜ:Y:ʜ;~:ʜ:d;==QK<7<:2;~;Y;<=8r=Y<<:d:Y;K<%:ʜ:Y:Y:ʜ<~<(X';~ :d:Y:Y:Y:Zd:d<%<5<<= f=k}=(X'=+=3=.="4=<8r:ʜ:d=AU=HM=7!<;=HM=V=޻=D="===׌==HM=y=}l=E>=ܪ= G=8D=~=3=|;={X=O>b>)>>`y=T={X=HM=5=\<=;:d<ä==H=!= =0!=p#=Q<7=$=rG=^= u=> >Y>=H=˛ ====H=C<ܪ;~ :Y;=8r=QK=h =B=<<="4=bZ== ==Mn=~<="4=. >,>6G<>">==[=5p=Y=8D=5=q=i==D<5p:d=8r=v=j>=엑=J=2==i[=9>&Z>OMk>[Ѓ>C> =-==[=p#= =̾=> l=y6=\=;Y:d>8i>EM>9>=V=SR==|;=%=˛ >o>>=!=A^W^>%>=o=?==;c=7!=l==AU==i[=d=7!<^I:d;d<~ʜ<ܪ= a=V==f===!=̾== G=K <ܪ<~;~ <:2<<<є<>;Y:Y:Y<>=Q=h =.=d=Ə=v=є=AU=LZ=7=?=p#= <8r>>(>==.=%<2=^=^=I=ܪ>`>* >4s>#d==y< >>==H1{<5<~;~ <=*=B==8r="4 > G>`y=&v=em= f=[=:2=y=D=y6> > f=LZ=2=d=M"==bZ=;~ʜ;~ʜ=5p=2> > G>==bZ= f=޻=`y=d=йh> y>"_h>$>Y=Z=={X=a=8r=/+K<5p:Y:d==޻=O=7==~=@o>@>n>u)=鿗=є={X===*<^I:p:Y>o=B=ϖ7=E=pS==H=Mn<=<(X':Y:ʜ<:2 l>|=O==8D)2>Mn>X>A^W>= =SR=8r=a7=|;={X==2==f<$T:d;Zd<$T= =>r>>=))=y6=B>>J/>|;o>>m))>A>)=AU=I=d=?=LZ>d=>.>'=|=h =A=~ =I=$T>>9>c5?>oW>av>%=د==X'=>?>+0!>:>#d=7=<ܪ:d:p;d<2=QK=a=D=h=!=c=,=V> |i>n>0H>.>pS=I= =y==.=>8r>pS>o=̾=rG<ܪ:d:Y:ʜ<><==8D=l= ==?===йh=-=m=є=y=7!==|;=k=+K======5p<;Y:d:d;~="4===k}=[=C;K;1{;~ <<%> |i=B==sj=u)<=~=$=B=|==m=E=\>f>7>>=>.P=A=HM=#d=~=){X=[=>%>(>=Դ=B<ܪ;d:Y:d<1{====m=Դ=>o>(>BS>K >8>B== fz>.>=O=m<;Zd:d<=f==c,==?=&v=ӑb> f> >)$>= u=]< l= = =~;K:Zd:Y<~=[=bZ==l=rG=a7=8r==,==D=rG<<~;<(X'<==h ==d==8r;:Y:d<%=5p=QK=5p<ܪ<:2;5p:Zd:Y;Y<~<=I=d=Rn1<$T<=8r=V==D=j=A=ܪ=!==8r=l=:2=ܪ=a=H1{< >>Ǡ=ܪ==\=)=sj=><>:Y:ʜ<ܪ==!===bZ<=)>pS> =V=c,=X'=޻={a ='4>79>>=>5$ >=I=0!=5=h ={a =k==i[=c=5=B;5p;Zd 12>> y=鿗="=_> |i>9>av>k+>^>:>Y=ܪ=D=X'==B>>* >)=Y=rG< :Y;#d<>=B==> 12>=<=O=ۇ>>>,>Mn>]<>U>8i>Y====D=#>">8i>!=7=y<$T:d:d;d<1{=QK=^===D=D=c=>>HM>([>'Ə>%=߂== =8r= ==B>Y>=;&={a <7;5p:Zd;Zd=Y=p#= G={X=^=޻=~=[=[=q$T=5p >$>J=_= >>>$>%=Y=h =B==Jw=޻>>D6P>av>EM> =4=%;~ :Zd:ʜ==`= u==A=V=AU=G>>,>1y>z=s=em<$T=~=QK=d> />R>n>ID> = G<엑;~9Y:ʜ>=N={X="4,>=>n=O=QK<>:Zd:d=޻=8D===.=B<(X';Y:d:Y:Y;d<ܪ=\=B=h =+<;~ :d:ʜ;~ =HM=sj==\==={a =K =/+K<ܪ;:p:Y:d;Y:d:Zd:Y:Zd:Y:p<><%<8r=Y=A^W=8D==/+K=M"=2=|=D=%==H=8r=޻=h=>K==Դ=0!==T=8D=:2=`y=3=f= =Rn1<:d:dr>@>z> l=Դ===3= ={X=˛ ====8D<~:d<^I=2=/=ä=V==?= G===鿗> Tc>>HM> l=AU=E== =%=I=I>==D=`y< :d:Y;<2=8D= =={X==8r=l=a=2==N=j=د=E==a7=QK=h =y=q=˛ = =a=:2< :ʜ:Y:Y;Zd=d=a==5p<<1q<= f=V=p> >!>pS==y<ܪ;Zd:Zd=c,>\>A> 12=d=~;~:d<^W=q$T=?=йh=AU=Y=D==i[=-===<$T<8r<ܪ===@>Ǡ>L>>m))>ID> 12=<ܪ:d:d,>A>$=O=V<>:Y:d<<;=;c=`y=a7=Jw=/+K=8r<2<~:p:Y:d;Y:d:Zd:d<><<ܪ<ܪ<1q;d:d:Y;Y;Zd:ʜ:d:Zd:Y:d<>;Y;~ʜ;K;K:ʜ:Zd:Y:Y;Zd<=B=~<ܪ<5<><~;<^I==7!=7!<=;l:Y:d<=8D=rG==`y="4<ܪ<$T=8D=h =a7=(X'<=Mn=0!>>z> =J=p#<:p:Y<~=Y=sj=HM=d=HM=3== ===U 12>$1>%==a7 f==d= a;9Y;~ <==Rn1==3==V=/+K=HM=~:ʜ:d<<==~<<:d:Y;~<~<~;~:Y:Zd;l<>:ʜ:Y:Y:Y:d;5p;p;d;:d:Y:p:d:Zd:Y:Y:d:ʜ;l;5p:d:Y:Y:Y:Zd:d:Y:p:d:Y:Zd:ʜ:ʜ:Zd:Y:d:Zd:Y:Y:d;d<<<<<~;~:d:Y:d;~ :d:d<><<8r;Y9Y;5p<>;Y:Y:Zd;1{<:2;K:ʜ:Zd:Zd;~ <%=A^W=n=GJ<%;Y;l;d:Y9Y:Y:Y:Y:Y:Zd;5p;Y:Y:Y:Y:d;1{;K:d:Y:Y:Y:p;Zd;K;Zd:p9Y:Zd:ʜ;p;K;Zd:d:Zd:ʜ;K;~ ;p:d:Y:Y:d;5p;Y;Zd:d:Y:Y:Y:d:d:Y:Y:Y:Y:d:ʜ:d:d;K<~<~;~ :ʜ:Y:d;#d:d:Y:p;=Q="4<7==:2=(X'<5:Y:ʜ:Y;#d<><<$T=<=<є<5p;l:d:Y:Y9Y:Y;K:d:Zd;~ <7===p#==}l=V=HM=5p<:d:Y;~ :p;;1{:p:Y;;d;Y:d:Y:p<%;p:Zd:Y;K<8r:d;Y<:2:p:Y:Zd:Y;Zd<= 5="4=Y<<(X':d:Y:Y:Zd<<(X'<><~;p:ʜ:Y:d;Y;~ ;~ ;~ ;K;~ʜ:ʜ:Zd9Y:d:d:d:d:d:d:Y:Y9Y:Y:d:Zd:Zd;p<><^I='4==d==4=u)=h =/+K<(X'<%=8D={a =3=8r=c~ =2<=<< ;K;l;~;d;K;Y:Y:d;p<~<><;;5p;~ <<$T=Q=8r<1q<;~ :d:Y:p:d:p:Y:Y:d;Y;<1q<~<5p<7=h =a=!==v=.=V=@<%<%;Y:Zd:d:Y:Y9Y:Zd;Zd<%<>:d:p;5p;Y;l:d:Zd:d:ʜ;d;~ʜ:Y:Y:d:d:d:Zd:p:ʜ:ʜ;~<<(X';p:d:Y<<5<<<==D=`=I======u)=y=sj=H1{="4<1q;:ʜ:Y:Zd:Y:Zd:Y:d;d;;p<~<:ʜ9Y:Y:Y:Y:Zd;~<=Y=5p="4<~;Zd9Y:Y:d;d<~<%<~;l:Y:Zd;Y;~ <:2<;5p:Zd;Y;d;~:ʜ:Zd:Y<%;p;Y;1{<#d:Zd:Zd;5p<~<~;;~ʜ:Y:d;~ <^I<%;:d;Y<="4=7!=<1q<;d<~<%;:Y:Zd<~;;:d:ʜ;1{;~:d:Y:Y:ʜ<Y<>=`y=l=p#={a =p#=QK= a<2<%:d:d<^I<$T=8r<ܪ= <$T<^W==@;&===^=X'={X=^===5=\=Y:d;#d<^I<:2;~ :ʜ:d:d:d:d:d:d:Y:Y:ʜ;5p:ʜ:d:Y:Y:Zd:Y:Y:ʜ;~;Y:d:d:d:ʜ:d:d:d:d:d9Y:d<=+=$==~<1{;9Y:Y:Zd:ʜ:d:Zd;<5p<><%:Y;> > =9=йh==={a =.E>=-=є=a===<ܪ;~ :d<=B=*=8D=C=E=D=D=K =YAU=`y=H1{=@<2< :d:Y;5p<:2<<ܪ< <><">d==엑=d=wx==a==>>>=ä=y=@=>%>:>8D> /=є=%=d==ϖ7>Ǡ>(>1(>===h ==Y=wx={X=6P==4=8D;p;d={a =o>n> ==D=u)===ǟ=>> >)=엑=E=h =.='4==I="===l:d;l<=8r=Y<=<5p<#d;d;5p:d:Y9Y:d<><<<엑<ܪ=~=7!=<є="4<^W<1q;~:d:Zd:Zd:d;5p:ʜ:Zd:d;K;~;5p;d:d:Zd;d<2<$T<1{<>:Zd:Y;K<<;~ 9Y:du)>ҥ>=p=kt`=8D=Mn= = =1{=>>%>==˛ =2={X==+;<5p=5>>A>[>=c,>=H=^=[=u)=N|=>.>79>R>R>9>=G=<==4=`yǠ>GJ>fV>G> ===^=>K>">Qܙ>pۈ>oW>Qܙ>([>== u==h t>6G<>n=Z=\==d==> G>?>[>[>?>J==˛ =D=޻=8D<:2:Y:Yr>#9>&>M"====y=Jw;Zd:Zd:Y:ʜ;~;d<%<<%<>;;K&>$1>b==d={X==>>=c,>B>)$=A=q=`yD6P>~9>{a >GJ>Y==> Tc>3&v>{>̚>~>~>GJ> =;&=)=3==t`>Y>r==d<%:Y:Y= 5=G>`]F>>>lN>1q>M">޻>(>V>Cw>O>Sv>{X>vG>/=9===->%7a>Ix>R%e>/+K=-=h ;~ <2=̾>9>q$T>y >SH>&Z> >u)>">F|>;> >D>>i>.P>K==c,=>-O>W>`>E=y<8r;=H1{=>pS>n>`=o="=>>J>9>Z>i->WX>1(>==Cw= G=> f>/>8i>n==u<>:Y;~ =HM=|;=޻=pS=M"= =I=ä=O=_=e>8r>b=׌=4=`y="4=2={a =I=Z=N=Դ=="4<:Zd;~<(X'<=k}=n== ={X==%=pS=f=Sb<7;;~ʜ<>>@>1(>-O> f==Jw=B<%<ܪ=%=l=u)=f=@;&<:d;~ʜ=~=B==q==_>%>:Bf>f>|;o>n>9=y6=n=~<=Y=em=0!===f=8r;~;~ =0N|=u)=v=p==V>i>Jw>{>3>|;o>?=鿗=bZ<ܪ<ܪ="4==H=h=s== =[;Zd;Zd==l= ===D=>* >ID>[Ѓ>F~>==){X=H> l==?=Sb;Zd:Y:d;~ʜ;;1{;;~ʜ:Zd:Y:Y:Y:Y:p:ʜ:ʜ:d:Y:p:d:Y:d;~;:d:Y;Y<(X';:d:d;~<#d<<<$T= f=5p=K =\=`y==<ʜ;~ ;5p=u)=v=~> l=I==2<ܪ>Z>vG>V(>Y=q={a =l=`=2=e>*U>F~>GW>1y>%=== u=={a <:ZdGW>N>.>ذ>J==SR=d=є>`y>7>{>G>K>~9>GW> >Y>=ܪ=^=+:d:Y<ܪ=O>M >BB>>>Y!>`y=!==K>pS>S.>޻>>,>M">f 9>5p> >)=$T=q=;c;Y<=^>n>oo>>z=>.==d=d=|>>C>>>>:>R>(>r>o=ܪ=='4;K;~=;c=є>w>"_h>%==/=a7=u==ܪ>P>?Z>`>aB>GJ>">=m=,==h <̾>;Zd:YY>޻> l=m=є=^= =V:p:ʜ<> f>%>= = =Y<~;pz>R%e>W>79>==> >0N|>x>>8>^>EM> y=є= ={a ==Y==r=O=3<:Y:Y=%>>pI>^2> >>aB>;/>8>L,>12>ܙ>?=H>>8>a7>"_h=a =~ > >=>pI>{>>K u>=V<:2:d=@;&>>6>>I>J>X>f>`>{>>{>F?K?HM? >N>v^>Qܙ>([>z>?>7=>&v>db>>A#= u="4:d:d=8r=>_>> >BB>d>av>_>y>`>?m? U>>6P>>QK>* >>E>>c,>T>`>Xf= =QK;d:Y<%=n=>9>U>M>=c,>1y>7!>GJ>o&>@>>I>s>v^>W>$>=>E>\>)>>:>8i=|=B;:Zd<%=,==;&===> l>>q>2>EM>Tk>L,>2E>~=̾=d==>>/>=c,>,SR==`=~:ʜ:d< l>pS>r=鿗=^=QK=){X="4="4=Jw=HM==4=n<ܪ;l> 12>>.P>Qܙ>{>>I>IT>=%=`y=V={a => >n>=1{=emz>#d>&Z>9>f>ذ>>j>> a>,==sj=}l={X> >Ix>a7>@>o=<:d;5p=8D=> f>%>,SR>)2>=c,>vG>~>&>6u>̙>m>2E==kt`==H=D>>Y>nLZ>G> =޻<:p:d=@={X=엑> >> >J>H>>>s>>i-> f= =7!=X%=d=G>1(>>=>:=ϖ7=V;~ :Y&Z>F3>Rn1>;/> 12==){X<ӑb=8r=h ={X====|;<5p;d:p:Y:Y;Y<(X':ʜ:Y:d;~%> > f==em<<<=A^W= ==I=-=O=h===pS=p#=:ʜ:Y/>~9>>}^>.P= u=3=bZ=l=D>u>9>_>`>A#>ҥ>^=t`=i[==3<ܪ:Y:Yi>J>Sv>n >pI> =h=d=h>E>EY>>w>0!>>c>8>!>=x==QK;K:Zd=Q=>nLZ>!>H>c,>~9>'===,>HM>hg>U>˿s>Ȟ>2>>R>9>*U>= u={a :>w>~>M">F|===HM=;&>Y>U>!|>>=>D>pI>C>/>>>=є=em$>;c>&Z=鿗=HM=C=P'==>n>V>~9>~>b>:>> ===O==){X<%9Y:d l>t>"_h>>8r=I=== =8D<;Y:Y:Y;~8r>&Z>/>==v=Rn1<ܪ<>W>l>Y!>8D>">>Cw>Ix>'>db>>c>ycu>3>K=c,={X==G>i>!>8r==$;Y:d=%=>k->0!>>>,\>k->X%>n>>j?O??>$/>k}>Y!>(>pS>0N|>pI>_h>>V>/+K=p<;:Y;Zd=8D> >_C>W>v>Ҷ>D>pS>6>!|>C?b?&?+ ?A ?>8> >Y!>F|>pI>D>엑>>X>_C>o=sj;:ʜ==s>WC>~>ŢM>'>>V>7> G>?Zn??"g?Q>{>a>V>^>IT>{>>>g?t>>>z==V=鿗>@̾>vG>>ycu>h3>c>u~>> >>E>n>+>>[>1y> >A>v^>|>ۇ>/>vG>o=<2:Y:d<~="4==-> />>>>*U>2ݪ>A>`>{>>7=>ͫ>fV>5$ >Ǡ===>&Z>`>z=>`>=h=K =,=l=!=>o>`> y>o> >Y>.==l==8D=$=H1{= =O==ܪ={X=K K> 5> y> l>> a>-O>!===p#=QK=[=~ʜ=h> Y8>@>`=ǟ=h >#d>4I>7!>;c>R%e>{>>ذ>8>m>`> =0!= =%= >0>\5>u)>vG>+x==HM;~ʜ<%==o>2ݪ>U>`>[Ѓ>g>>!>߂>>d>>w>~9>>>Ҷ>E>c5?=o=A^W;d l>@̾>d<>i->`>l]>K>I>">>> >D6P=s=9=>> a>Ѹ3>d>8>l]=LZ=8D;l,SR>F~>F|>9>A>vG>^2>>Ҷ>>>==l= >>i->>8>@>:= /> f==>">F|>k->u>Y!>n=c=em==={a =2>>Mn>bZ>5==:2;Zd:Y<5p=/+K==k=k}=l=rG=5=?==V==f=Jw<=<̾>==`y=Ə=ǟ=˛ =\=0N|;K:d;<<<~<><ä=Q=.<ܪ|>%=B==V<1{<>>f 9>>}>d>=c=p#=/+K=C=pS=ܪ>">BS>D6P>/+K>=엑=O===h Qܙ>es>>>>WC==4=8r==د>.>~9>>>a>R>.P>k}> ==SR=8D;1{:p<엑=йh>X%>>]>>`>=0!=/=>E>Ph>g>> k>BB>t>G>5$ > >o=̾=m*U>{>!>>.=˛ ==p#==>A> >>>v^>f 9>@;&>.P>>==bZ>&*>Y= =rG=[=Q=p#=>%>F~>nLZ>oW>U>5$ >> =B= u=k}=+<%:Y:d:Zd:d>>Y>`y=B==I=pS=B<;Y9Y:Zd:d:d:Y;5p=~=<є=8D=8rY>f>===`y=Y;;=h =LZ>8i>ZR>WC>9>pS>> 12>2ݪ>{> >>&Q>q>8D>>= u===m>)>>|=0!=+;~:d;>%>N|>0!>)>k->IT>Xf>N>X??>>N>BB>d<>2ݪ>t>.>j>>>>2ݪ=!= f:p;5p==˛ >Tk> >ܙ>>p>>>12>?O{??,o?R>_>y>o>fV>Mn>nLZ>uM>LZ?b>>V> y=<(X':ʜ<ܪ=X'>,>>/>;&>uM>K>>>X>s?%??>>{>|>o>i>R>x>>? >E><> =<%:p:Y< =7!=c>/>q>B>>nLZ>`>j>>>`>+>8>̾>>i>* >A#>w>w>0j>1{>>`=.<$T;5p:Y:d<~=%=d=>pS> >&>)2>,SR>:Bf>Y!>y> > >nLZ>?>r= =̾>=g>#9>av>>j>&Z=є=[> f>o>8r> f>>)=l==pS=V=5p=E=pS=Y==AU=^=Sb<;:ʜ:Zd;Y= 5= ==y6===6P=SR===K <%<==5p=}l=v===.=%;~<%=;c=4=>> /> >8r>>%>HM> 12=O==V=V=q$T= G=>8i>Qܙ>:2>o=:<:d;Y=+=D> >0N|>=`>:Bf>:Bf>E>f 9>u>.>|;o>;/=-=k=M"={X=A>i->>6P>}>_==K ;K9Y<^I= >:>?>fV>lN>b>c>a>c>~>Ѹ3>?>>d==є={X=D>79>S>e? >ܽ>>=B<~:Y<2=>>R>wx>z=>hg>i->f>s>>Ţ>,>%>(=;&==ۇ>G>ˉ? {4??>>n=}l;1{:Y<=>Ǡ>;/>[Ѓ>Y!>B>?Z>g0j>޻>q>4>>hg> l=X'==Y>.>c>C?Ǡ>v>>==+:d9Y<%=V=> f>> G>Ǡ=A>%>8>U>[Ѓ>@> ==l=kt`= G=>K u>BB>uM>3>@= <1q;Y<=`y===l=q=l=3===J== =C=@=Y=7!=pS=׌>r>==f<:Y:Y;l<=[=+='4<=<(X'<%;~ ;Zd:Y:Y:Y:d:Y:Y:Y:d;<%<>;~ :ʜ:Zd:d:Zd:p;Y;Zd:d:Y:d;;K;~:d:Y:p:d;5p;Y;~ʜ:ʜ:Y:Y;d<=Y=<<~:d:ʜ<%f>2ݪ> G==/=%<<2=8D=a=I> y> /=l=йh=!=a=8r=QK<;:Y<:2=8r>>V>rQ>Tk>%==`y=@=A^W=@=>8D>ZR>Zd>@̾>n> l=t`=1{={X=q$TpS>`>}8>^>==h =7!=q$T=>J>`y>>:>gy6>=c,>">Y=B=|=="4;:Y0>EY>+x=y=y="4=~=a7=>%>Ph>{>>{>>[>8i>> ==6P=޻="4;~ :Zd:Y:Y;p==f=O====H=<:2>:2>>)>.>HM>>= =|={X=p#<ܪ;~ʜ:Y:d:d:Y:Zd<%=~=O=QK=%|=j=I===k}={a =Y<%:d:Y:d;Y:d:Zd:Y;<%<~;~ʜ:Zd:p<1q= a=}l=a=X'=\=pS=8r=l=Jw=~<:d:Y:ʜ:ʜ:d:Zd:Y:p:Y:Y:Y;~ʜ<8r==,=5p=$=~=8r=8r;Y:Y:Y:ʜ<<$T[>)2>,>=B=c==B>>C>Tk>Mn>8D>`=s=I=== =Y===<7:ʜ:Yb>M >>>h3>8i>pS>'>C[>> >$ >>E>o&>9>P>> >, >`>z=>R>Ǡ=%<є:Y:d<ä=>%>q>>Z>)>k+>?`>A#>>}>p>Ѹ>->>Y>?>pۈ>C>/>:Bf>{>>>/> >Vi[=߂=P';~ :pV >>A >>k->F|>IT>>q>c>>ܪ>¥>q>u~>GJ>3>@̾>q>8>>̾>vG>=<:d:Y;K=Y=> |i>F|>`>W>>=>, >+>MO>I>BB>{X>>k}>vG>D> >> G>R>G>y>BB>Qܙ=鿗=sj<^W;K:d:Zd;~ <;==O>> l>>E>|> >">=c,>Q>WX>A>>== ===x>,>IT>:>=\=7!<<;Y:Zd:d;K:ʜ:Zd;d:Y;~ ==rG=Ə===d=8r=m=h =C=[<>=+;p;=Q=[=D=د=y6=~ ==Y=,=ϖ7===QK=q=.=V=pS=>5>Pp>;/> |i=d)>t>">pS>>">8i>=>+x=A={X=sj==:=鿗>`]F>>U>~>_=o==;~<~=bZ=i[>">BS>F~>9>4s>A>b>>|i>q>2L=i[==pS=2>+>Z>{? >R>>=}l;d:Y79>WC>V(>?Z>8i>K >wx>r>y>_C>>==<= ==ǟ>?>`? /?C?Ǡ> P> =z=;Zd:Y<^I=B=->%>@>=c,>'Ə> G>,>N>o&>y>Y!>A =c,=l=5=>'Ə>>a ? x>>`=A=,:p<~=7!=E=>> 12==s=ܪ>u>J>J>o=̾= =H1{=Sb=)=엑>QK>^2>>m>+=%<^I;Y<=L>=k}=q==M"=sj=h =|;= =M"=B=Jw=@=~==.=M"=ܪ>f>,> |i=<ܪ:d:Y;~ʜ;;Y:Zd:Y;Y;K;~ ;d;~ ;~ ;~ ;~:d:Zd:Y:Y:d:Zd:Y:Y:d;5p;~;Y:d:Y:Y:Y:Y:Y:d;5p;5p:d:Y:Y:Y;o> V==йh=h==p#=(X'=ܪ= =8D<~<%<=`y=> |i>%7a>)$>>=ܪ=?==l=Q<%:Y;~=~= ==̾>==bZ<%;;~ <=V=9>>n>&Z>>==c,=d=rG=HM<#d:Zd:Zd:Y:d<^I=2=}l==;c<;Y:d:d<(X'=q= = u>|> l>K=߂=̾={X=3=Jw<ܪ;d:Y:Y:d:d:Y:d<%<<;d:p:Y:d:d:Y:d;Y:d:Zd:Y:p:Zd:d<5p<%<><~;Y:Y:Y<%=:2={X=̾>===f=L>=8D=Sb=)==߂==,={X==|;=f=QK=D=X%=m=V=Y<%:Y;5p=~=9=B> >(>Y=i[={X=a=>:> >1y>5$ >* > == u====>K==^=7!;d;~ =7!=l>>D6P>OMk>8i>`==6P>>3&v>U>f>i>Z>9>>==>>8D>OMk>79==%>96>GJ>79>Y==O> >6G<>V(>i->m))>`>=>d=> l=A>|> G>KRA>n>T">==;~ :d:d<=Sb=I>E>>`=g=є=h=ܪ>u)>,>=c,>C>8i>>?=йh=|=йh=;>%>A#>3oB>|= G=Y>Ǡ==ä=d=~=8r=y=^= ==د=^=@;&<^W<;K;5p:d:ʜ;Y:Y:Y:Y:Y:ʜ>t>)=i[=>j>4>o&>&Z=D<:d:d|>8r==-=>Ǡ>pS>HM>o=D=`=H1{=QK= =_>_>J>of>&v>`=B=(X':d;5p==X'=>)>)>E=>=H>>%>([>r=i[==Rn1=Rn1=޻>>~>Դ>N>'>vG=-="4:Y;~=޻=d=B>[>8r=g='==x> > /==h==H=7!=8D==>`>>>I>Mn=pS>iv> >]<>=h <%:Y<>=Q=l=y=f=p#=;c=$= a=+=){X=~=ӑb=<є:d:d<(X'<ܪ==q<=<;~ ;Zd;Y:d;Y;K;;d;1{;d:d:Y;1{:ʜ:Y9Y:d<~:ʜ:Y:d:d:Y:Y:d;~ ;Y:Y:Y:Y:Y:d;K;< <:2:Y<5p=5p==̾=̾>=D=;=+=B=D==D=;&=̾=h=4==HM==a=k}==v=^=}l=h =4=̾=O=O=̾=v=k}=޻=@==^=?===u)=;~ :Zd:Y:ʜ<=;c= =4=a=rG="4=~=K =/==== = =n=bZ=}l=l= =a===p#<7<~;5p:d:Y;Zd<5p<:2<є=/+K=a=-> >=є=Mn;:dn>A#>.= =rG<5p;p=8r=q$T==d=k}===I==={X=B=(X':Bf>d>BS==rG<>;d==|;==f==f=)= G==d=y=Mn* >G>,=O=;c;d;<ܪ=QK===p#=Sb=D=D=L>===<<>;; =m= 9Y:ʜ<:2<5p;d:Y:Y:d;~;K;K;d<%;~ʜ:d:d:d:d<%<<^I==[<=<엑<+K<~:d9Y:d;~ <%=q=1q="4<7<:2:ʜ:Y:Y=Zd=K =$<^W=B=k}=2=@;&=Rn1=`y=QK=(X':Y;~<><ʜ=HM==<^W<<^I;~ :d:Y:Zd;Y;:d:Y:Y:Y:d:Y:Y:Y:d:d:Y:Zd:ʜ;Y:d:Y:Y:ʜ:ʜ:d:Y9Y:d:d:Y:Zd:d:d:Zd:Zd;<(X'<:2;K:Y9Y:Y:Y;~:ʜ:Y:Zd:ʜ;ʜ<~ʜ<<;d:p:Y:Zd:p:d;~<%<>;d:d:Y:Zd:d;5p;~;Y:d:Y:Y:d;5p;#d:d:Zd:Y9Y:Zd:ʜ;5p;Y:d:d:d:d:Y:d;Y;Zd;#d:ʜ:ʜ;#d;Y:p:Y:d;5p;l;5p;Y;Zd;~;~ʜ:d:Y:d:ʜ:ʜ:d:ʜ;5p;p;:d:Y:d:d:Y:d;Y;K;K:ʜ:Y:Y:Y:p:Y:Y:ʜ;Y;Y:Zd:Y:ʜ;d;ʜ;~:d:Y:Y:d;~;Y;5p:d:Y:Y:ʜ<<(X';d:d:Y:d;<;d;Zd;5p;5p:d:ʜ;K<<~;d;l:d:ʜ;d<^I<><;;Y;~ <:2<>;K:d:d;~;~ʜ:d:d;<(X':ʜ;5p<%<~:ʜ:Zd;1{;Zd:Y:ʜ;~ ;p:d:Y:d;5p;Y:ʜ:Zd:Y;p<>:ʜ:Y:Y:Zd:Zd:d;Zd;<1q<(X';:d:Y:Y:Zd;Y;<><;~ʜ:p:Y:Y:ʜ;1{< <~;5p:Zd:Y;~ʜ<%<5p;~ :p:Y;d;:d:d;~<(X'<<:2;Zd:Zd:ʜ;K<%=n==˛ =!=em<^I;K<="4=C=V=QK=E=8D=%<1{;:d:Y:d;~;p;Y:Y:d<< >`==%9Y;=Q=y=l==\=em=u)=HM=h ={X=,=2=엑=-= u=d=`y<=z>@=i[=+:Y:d<8r=;c==={a =8D=k}=5p=u==^W= u=|=={X=sj=HM=$==ܪ=I=9<:d<5p<ܪ=~<$T<ӑb<7==QK=l===f=n=7!<+K<==%="4=  l==X'=:Zd:d<8r=$=n=u)=9=Ə=SR====A^W<=<<< f> >)=̾=+:d:p>> =!=u):d;l;:Zd:p<~<=8r<$T<;d:d:Zd:ʜ;;K;~:d:Y:Y:Y:Y:d<~;~ʜ:Y:Y:d;1{;p:d:Zd;K<=Jw=`y=/+K<8r:d:d<^I= f=;c=Rn1=\=K =$<2<~<~">%==+:d:Zd<(X'=@;&==د=B==8r=<2=:2=9=˛ =>o> >=O=a=bZ==׌>9>y>r>%=pS;K:Y<>=8D=X'=O=AU=2==){X="4===鿗>o>>> y=AU=d=h ==>EY>6>6>:Bf=4;d;l<%=p#=d===V="4=7!=8r=!==o=ʜ>b=V=?=sj=){X===I>r>F3>F|> Y8=bZ:Zd:Y;~ʜ<=k}=7!=(X'<=<~ ==^I=޻=v=?==Ə=/=D<1{<:2;K;Zd:d:Zd:d<>u)>* >==H1{:ʜ:d<=/+K==d=?==D=ܙ= u==f===Y<=,>IT>=c,>=;K:p"_h>A>8D==l;~ʜ;~ʜ<= a=]=8r==k}=HM=l=Mn=<< <8r%>o==:d:d<%;Y:Zd:Y:d;;~ʜ:d;~ )>8D>* =AU=Mn;:Zd<(X'=8D=X'=K=_==<$To>u)> |i=_={X=8r={X> >_˭>>X>9=>pS>>=LZ=+K=f=N|>>m))>d=>>OMk=h<(X';Zd<2=a7=={X==`y= a="4=p#=0!=O=))>:> =A==y=U=3=I>5$ >j>f 9>=:ʜ;Y<ܪ=%=7!=;c=5p=޻;:ʜ:Y:Y:ʜ<8r=.=[=@;&<є:d:ʜ<^I=[=GJ={a =V==k}=M"=|;=8D<$T>,SR>n==V;Zd:Zd<(X'= =h =k}=?= ="=B==є==U="4.>S.>GJ>,\=y;~ :Y;)$>M>C> =l;K:d<(X'<==Jw=B===X'==sj="4<є G>r=Y=5p:d:Zd;d;ʜ:d:p;<=u)='4<<Y:Y:Zd;=@;&=y=pS=rG=;~:d<=7!=p#=M"=4=-=f=K =(X'=bZ=I>b>> |i=?='4:ʜ:Y;K<==H==D=a=H1{< ;=>hg>V>`=;;~<%=rG===>=\=;=1{=%=u=X'>8r>H>{>>k-> = ;K:Y<>=HM=p#=3={a =8D<=<=+=B={X=;&=׌==={X=h =8D==T>t>@̾>79==H1{:p:Zd;K<<==~;:d;Zd<=C==?={X=h < :Zd:d<:2=~=bZ= =d=v=?=v=޻=`y=Q<<5p;~ =~ > y>==0N|;Y:d>0>* ==jQ0;:p<(X'=~=bZ=M"=0!=h=є=!=Cw=`y=< y>.>'Ə==bZ;l:ʜ<^I=Q=V=[=pS==3=QK<$T<:2<~;~ ;;5p==+K=~:d:Y;ʜ<є=HM=7!=5p=[;:Zd:d<1q<є<^W:Y:d<:2 y=j=d<ܪ:Zd:Y;d<엑=H1{=h =H1{=[J> l=<7:Y:d<(X'<$T="4="4<><%;;<(X';Y;5p<==QK=p#=8D<:p:Y;~;Y:Y:Y;Y<є<ܪ<8r:ʜ:d;;d;:ʜ:d:d;Zd;Zd:d:Y;5p<~< ;l9Y:Y:d:ʜ:d:Y:Y:d:Y:Y:Zd:Y:Y:Y:ʜ;d;~:d:Y;<1q<(X';d:ʜ:p:Y:Y;~ ;l;Y;;~ ;Y:Y:d;ʜ<%;5p9Y:Zd:d:d:Y:Y:d:d:Y:Y:d;Y:ʜ:Y:Y:ʜ;K;:d:d;~;~:d:Y:d:d:Y:Y:Y:Y:d;1{;;1{:d:Zd;K<~:Y:Zd;d<==8D=Jw=8D=~;~ :d:d<%;Y:Zd:Y9Y:d<^I=Q=QK=l=bZ=7!<$T<%;~ ;d<^I<$T=2=A^W=8D=Y<ä;p;l;;~ʜ:d9Y:p<%;Y:ʜ:Y:Y:Y:d;1{;d;~;Zd<<7=a7=====p#=,8r>=G=O==y=rG=E="4>E=LZ= u=SR= ={a =V=7!=Q<ܪ<є=7!="4<=<1{<~;p;~ ;;1{;5p:ʜ;Y;l;Zd:d:Y:Zd:d:d:d:d:Zd:Zd:Y:Y:Y:Y9Y9Y9Y:Zd:d:Zd:d;l;1{;~:d:Zd:d:d:Y:Zd;Zd<~<(X'<%;:p:d;1{<%<Y;~:Y:Y;<(X'<^I>==1{=== =p#=;c=Y<<<>;~ʜ:Y:Y;Zd<~<(X'<%<Y<%<#d<<==C={a ==H=n=@;&="4="4="4=@=Q<1{=<7<8r<>;< <(X'<%;;d;:ʜ:Y:Y:ʜ;d;~ ;~ʜ:Y:Y:Zd:Y:Y:Y:d:ʜ:d:Zd:Y:Y:Y:d;Y;~ ;K:ʜ:Zd:Y:Y:d:ʜ;Zd:ʜ:Zd:Y:ʜ;d<%<~;~ʜ:p:Y:d:d:ʜ;~;<%<;#d:Y:d;1{;;~ ;Zd:Y:Y:d;;K;K;;Y:Y:Y:d:ʜ:d:p:d;Y;~;Zd;5p;d;;K;Zd:d:Y:Y:Y:d;~<~<%<~<~<5p<="4=QK=a7=QK=7!= a=~<=<:2<%< =@=8D=E=D=;c=8D=@;&=H1{=@;&=2=%<ܪ<<<;=~<=<є<%;:Zd;l<(X';d;l;~ʜ;1{;d<%<~;:ʜ:d:ʜ:ʜ;d<=8r=>=.<%<2;ʜ;K<:2;Zd:Zd:Zd:Zd:Y:ʜ<=%=/+K=Q<2<ܪ<~ :ʜ:d;d<:2< <<$T<ӑb=,=8D=@<>;Y:Y;H1{<є<1{<5p;K:Zd:Y;l;K;Zd:Zd:Y:d:d:Y:Zd:p:Y:Y:d:ʜ:p9Y:d;Zd;d<~;d:d:Zd:d:d:d;<~<%<%<>:Y:d<$T;;Zd;;ʜ;~ ;K;K;1{:ʜ:Y9Y:Zd:Zd:Y<ܪ= ==p=~=J>=د= =5p===rG=f=Cw=&v=2=v==Y >4s>.>8r=+K=p#=|;=={X==V=o==N|=l<@>i===z===޻=^==ӑb==йh==rG<><%<= =Q<ä;~ :Y:Y;K<%<~;~:Zd:Zd;Y;d;;d;Zd;;;d:d:Y:d:Y9Y:p;5p;~:ʜ:Zd:Y:Y:Zd:ʜ;Zd;Y:d:d:Zd:Zd:ʜ;~;d;~ ;;d;Zd:d:Zd:Y:ʜ;~ :Zd:d<<< ;:Zd:d;<1q<:d:Zd:Zd:Y:Zd:Y:Y:d;d<<5p;:d:Y:Y:Y:Zd:Y:Zd:d<~<<<~ <ä<(X':d:d<> y==X'=h =QK=h = =q=йh>>>A >>==׌=h=޻=:2.P>EM>/======>>=>_:>`>F~>*U>Y=A=йh==bZ<8r;~=h =>8D>U>=> l=h={X=!=s>8r>, >Y!>{>>{>>^I>79>=A=йh==Sb%>,>=V=={X=!=O>?>n>C>`>a7>F3>">?=ϖ7==5=Q;~ʜ<~=Jw==D=̾== =)=d==˛ =>r>#9>$\>=엑==a=sj=HM<(X':Zd:Zd<>=~=D=^I=V=[=n=B= =k}={X==̾>=O==9=|;=8D=.<ܪ<$T<$T<7<%>EY>=>=h= =pS==O> 12>+>/t>pS=׌= =(X' f>o&>ذ>)>^}>r==y>>>* >kt`>>ذ>{>>96==X'=p#=}l==> l>B=̾>==H<~:d=h >n>l>S>>I>5l> /> 12>>>KRA>>G<>>BB>aB>C=i[===Z>t>:Bf>9h>pS==HM:Y:Y=2>>>i->pS>NX>kt`>,> Y8>>>?>><>c>.>U>=׌={X==->$1>D6P>C>!="=D;5p<^I=Cw>r>?>A>$1>b=O=ܙ=l>%>2ݪ>Mn>W>A>f=y6={X==y=2>8r>">&> y==+;l:Y<=8r==Y=D=d=%===c=|=AU====.=2<ܪ="4=|;=E=Դ===q$T;~ ;1{<~<8r<1{<<Y:Zd:Y<(X'<ܪ=){X=]=`=?=>>>==-="4<!>IT>c~ >W>*U="=P'>5$ >aB>y >em>.=AU=P'=N|=4={a <7:d;K<2=Q=+=V= G=ӑb>>4s>@>0>[==%<><:2;Zd:Y:d;;d;~ʜ:Zd:Y:Y:d;Zd;Zd:d:Y;d<8r >>B=I=h =.=2=bZ=M"=D=鿗>>pS> />`y=o=ܪ= =4=a7<8r:Y,>|;o>)>\5>1(=n1=d=d=D=鿗>%>f 9>Y8>f>vG>Jw>.>> ===/+K:d:Y= =t`>i->J>Mk>>d>==O=>$>oW>0!>,>>y>>^>=c,>+> ==h ;d9Y=Q=>sj>c,><>w>->.==-> >=c,>>6P>T> >2>>n>G>5$ >pS=O=h ;~ @̾>k}>>->k->=ܪ=>>5l>|;o>,>>,>>>R>4s>n>E=?=5p;~;~ʜ=V=<>5l>WX>F|>'=˛ ==?=йh>`>=c,>pI> a> a>vG>C>>=-=h=p#<:d:Y)>&>* >=G=={X= =K <;K:Y:d<5p<ܪ="4=2=+=k}=k}=.===f=y={X====u)=h =5p:ʜ:Y:d;K<:2<5p;d:Y:Y===ܪ>>%=== =M"={X= u> 5>,>0H>=O= = a y>z=>`>q>t>,> y> > >W>>->Mk>V>j>z=˛ ===;&>>>=o=Cw<;~=SR>`y>>>>>3>X%>U>t>MG> ?L?x?[>5>}8>2ݪ> 12>~>,>i->v^>>c>)=/;~ <=>{>"?-?=H> 9> >u>|>E>۬??+0!?0?w>m >>b>7!>2ݪ>g>d>>H>>R=F+=8r:Y;K=k>R%e>>S>N>N>>>>>K>Mk? ?!`?%?>S>>aB>8i>5$ >n>0!>e>\>!>gy6==8D;Y:Zd=޻=>`>K> >V>g0j>K u>R>n>%>}>N> >>~>k->2ݪ>%> >;>B>0!>>)>C=йh=.;Zd;Y=5p=> |i>J>> f>Ǡ>>(>8i>Pp>l]>{>>jQ0>?>%=йh==q=m>&>Pp>Y!><є>=M"<%:Y:d<5=,=h =[==h=i[=鿗=g=ܪ=AU=Z=ܪ==f=.<=="4=p#=+K=AU=-=ǟ= =;~ʜ:Y;~ʜ< =7!= =I=2=l=Cw=~ʜ=V=2<ä;d:Y:Zd;K<==7!=8D=[<1q:p;~==q$T===u)=h =(X'<%<5p:d:Y:d;~ʜ;~ʜ:ʜ:Zd;l<ܪ=Jw==H=~=q$T=;c==<^W<5p;Zd:d:d:d:ʜ:ʜ:d:d:p:Y:Y;=8r=a7= =%=y=8r=y= G=k=8r=+>J>0H>0>=2=`y=HM=[=Q=8D==Y=[=7!> G>=>t>>&v>^>~9>$=+K=QK=C=p#=Ə=ܪ=A=~ = =2;K:Y />">#d>E><>f>&?>>!>\=y={a =z==d=y6> >2ݪ>t=B=%>n>)2>MO>>̙?d? >>^W>b=g={a ==H=q>>2E>@̾>* == 8r> l>+0!>k+>[>Դ>x>Mk>pS>2ݪ=h=E=`y=d=<>pS>"4>=˛ =h <%;= a=;=={X==O>>A#>lN>|>bZ>* =O=]:Zd9Y;p<>X>u~>W>)=p=p#=O=|;=X'=y6>%>H>Rn1>=>%>r>==6P==:Y:d=$>o>>}>6u>̙> a>%7a=K==O>%>av>/> >Sv>N|>>em>EM>2ݪ>="=8r<,:d=|;>79>?>}??m>̾>>jQ0>=e>%>Ph>0!>m ? ? >>ǟ>@>>fV>=> /=v<엑:d=[>;c>?m?HM?Q>`>d>#d> 12>&Z>pI>J???I?Zn><>,>>{>>Q4>k}=9= f:Y:Y=IT>>>-?NF>B>i7>^_>%=A>@>bZ>L>hK? ? >>ơ>BB>>f>>=> =d5$ >>U>A >aB>=|=c=>0H>z=>uM>p>Mk>D>>`>A>0H>Y==\> /=Դ==p#===I>z>C>d>f>Mn>,> =j=AU=I=n<;~:Y<~<7===f=bZ=8D=8r<$T=Q=8D=}l=0!=O===AU===y=h =$<;~:Y:d;K<:2<:Y;Y<==[>GJ>K u>,>=ܪ==>d=>_>`>>q>/+K=Q0==Mn=7!=~ʜ==Y=Y=X'=A^W<%:d=rG>1y>>L6>>p>>V >ID>i>)>C??HM?B>2>>4s> l=B>>GW>z=>~9>H1{=l=u;K<^I=>3>+??I?Zn>#> >>c?9?.?K ?P:??Z?D>_>>f 9>Y!>>¥>?>i[>~9==5p:Zd<є=>@>ʜ??%a?>>Վ>->N?vp?Ix?^I?c??V?3A?% >̾>pS>>є??!5?(?K>ŢM>:=<5p~>???]>j>!>*:>M??B]!?XV?]L?P?,w?>]>m>NX>?:?'Ə?1?.>>U=&v<;Y=H1{>>V>I>I>Ҷ>4>{X>{X>>E??.?65 ?&? E>>&Q>m))>fV>y>B?@?HM?:>&v>96=<ܪ:Y;~ =V=߂>/>Tk>[>[>]>h3>~9>޻>&v>4><> >>vG>9>pS>>96>:>{>Z>c>a7==rG=;&=엑>>#d>.>.>.>96>A^W>=c,>"===.= =?>>* >8D>%7a=t`=y<ܪ:d:d|> Y8>|=ۇ===\=|;=:d:Y:ʜ<~=5p==6P=V=鿗=AU= u=Դ=Q0=-=є=3=5p=Y=Q=@=:2=rG==p#=@<>:Y< =QK=?=>r>>>+>8D>Qܙ>x>|i>:>T"> y={X=|;=q$T=y=c,>Ǡ>>o==;c<:ʜ=8D=>>A^W>V>av>y>z>/>?Zn> >ŢM>pI>=0!={X=ۇ>8D>d>v^>o&>%=p<$T:d`>Q4>}8>l>w>>$/? ?&Z?1?%?>>1y=ǟ=D>t>>>H>MG>av==;c;Y<=>@>c5?>Ǡ>v^>>> ??/~?;Sd?,ҷ? >{>8D=O=ܪ>.>pS>)>+>8>o&>?=Jw;Y 12>F3>k->pۈ>o&>>c,>??"q?>鿗>>==>>w>t>5>q>C= u=%:Zd;Zd===> >"_h>#d>f>1(>i-> >W>ӵ>/>>&^=2=8r=k}=i[>"_h>[>k->?Z==[<5p:Y<%=8D=M"=====O> y>([>/>>===D=%=3=3==~ =鿗==<2:Y:Y;~={X>/t>~>M">>4s="=5=D=bZ==~>8D>av>hg>R%e>5$ >> 12==,== 5:Y:d=8D>t>Cw>1>ʜ>))>{X>A=LZ==ǟ>J>{>>>s>m> >c>>]<>A#>"=LZ=pS<;5p=pS>U>ӑb?Y? 8?~>엑>4>%7a>>r>aB>[?;?U?C? |i>⣧>>G>I>WX>n= =.:Zd;~ʜ=d>_>??'Ə?,o>b@>K>6G<>`>+><>?HM?*#?)?K>>Q > >>o&>2ݪ==K ;Y:ʜ=>2E>?r?&Q? >h&>{>>>K>n>t>͘? ?u;?vp? >T>>>6>av>$=̾=8D;l:Y=Q=AU>W>U>Q >c>a>%7a=s=h=>:Bf>`>L6>E>Q>Ѹ3>`>^>k->S.>0N|=B=޻P>4I>$\===]=`y=9=t`>)2>`>^>7=>m))>EM>*>HM> =ܪ==.<1q:Y:p<^I="4=l=8r=rG=8D<ܪ< l> f==ܪ====n=[<>:d:d<~< <є:ʜ:d:Y:d;~ʜ;K:ʜ;=:2=d=h=E==q$T=h ==u)=!=V=x=_=q=h <^W;~ʜ:d;~ <="4=+=pS>R>f 9>M>+0!> y=l> 12>5$ >>`>>>]<>=O=Cw=[=a=;&=-=LZ==,>>>K%>>0!>>n>>6P? |i?#'?(X'?>{>L>t>8D>!>;>{>>~>D>f>&Z=<<=,>^>"?{F?$b? ?>C>8>??C?Zd?`8?UŐ?65 ? >N>>>>}??#?Q>6>&Z=8r;d<7=>E??(?7jl?--?HM?I>j? j6?2pw?Y!?l]?r?j,?Q&?%>b@>>>*_? O?F3?O?<?l>I==<>=2>wx>*_? ?*#?%??>? ?/O?U3?i?n&?fV?M?#>F>ŢM>a>FO?%?M+p?U)?Fj?V>==:2;Y;~=H1{> >P>x?>}>>))>O>!>s+?Y?0{?Kv?Q&?GD?(?>v>>>k}>J? ?0??'?+ >A>\5=׌=A^W;d:Y;ʜ=Mn=I>A>>`>)>V>o><>c,>T?s? E?=H>>S>~9>HzG>k->J>(?>+>c>+0!={X=Y;p:Y:ʜ=H>q>96>GW>OMk>Rn1>Zd>lN>~9>|;o>_>.P>b=Y==_>"4>Vi[>n>[>=h=;c:d:Y;5p<ܪ==>>>>!>>==Z=AU=D=3=;c=8r<;=7!=l==Y=D=8r=;:Y;K=,=d=ܪ>^> l=~=˛ =4=8r=QK=<>:ʜ;5p<|=߂=h==f=p#=5p<єo>pS>> y>|>E> f>=O=HM=V=<є=A^W=h = G=D==˛ =޻= f;Zd:d<==d>|>.>D6P>Mn>Vi[>`>|;o>o>9>>j>==a=\=ǟ>&Z>n>>f>ҥ= >V>_C>>>A >>N? ?I? >_>[>E=s=y>6G<>> >>>>=h ;:Zd=HM=>EM>v^>>>e>Sv>}?x?6k?Aݼ?4%@?W>)>G>>>>N?w?) Y?>ͽ>GJ=d<>:d=A^W=>Y>>h>>#>c??#?A?J?=c,?>w>Tk> y>">޻??,?m>T"=X'<>:d=0N|=_>A>7>>`>_h>J>6u?b?(Z?1?$o0?>4>1y=$T>>|>?o?+ ?[>>+=;~:Y<=d> />EM>g0j>fV>Vi[>a7>P>>鿗>>ܪ>>EM=t`==>0>I>>>I>`=w=B:Y;Y=HM=d=>`y=A=_=_>>+>F|>Qܙ>=>V== ==pS=O>>MO>^>0=˛ =8D;~ʜ:Y;K<<<=;Y:Y:ʜ;K;~ ;~:d:p:ʜ<Y@>jQ0>B>l]>'Ə=ǟ={a =HM===O>d=>C>IT>9> > f=='=I=}l<2:Y:d=u)> > >Ғ>>ۇ>z>2ݪ==d={X>>^I>>͘>)>>>l>Ix>2ݪ>==8rA^W>8? Y8?G??>ي!>uhK>r=AU=~>F|>'>?V?(?>$/>>v^>vG>G>pS== a:Zd;~=>ID>N?b??[>Q0>_C>n=>r>l>Ҷ?(?#1?#?&>'>ˉ>c> a>f>* =,=H1{;Zd;5p=p#>%>^>? ?y>]!>`y> ="> y>_>;&? ?z?}?>O>L> G>:>Z> ==8D;:d= 5=O>HzG>es>>{X>j>=?==s>(>> >]>O>/>>>a>k+>Pp>.P===:ʜ:Y:Y<%=Sb=>>%>'=O=~=@="4==˛ > G>Xf>I>>f>A>+>> f==d=7!^> l==I= =?=d==HM<(X':d:Zd:Zd:Y:d;9>W>Jw>,> l=-=#>>Y!>|i>M">>Y!>!=_=v=pS=k}=?=йh=ܪ=={a <2:d:ʜ=D>o>|>5>7>$/>R>_C>av>n>U>E?`??>>$T> k>a>B>+>9>q$T>c>t>v^>* =<2:YR%e>j????k}?<>B>>+p? {4?1̬?NN?V2?M;?0?Q>>^2>>x>ֲ??&?̈>>,=f<><=2>l]>q??0{?+?z?>?y?'k?N:?d?k?d?N?(3?r>Ϻ>>?!`?H?RI?BS?>=ϖ7=:dA^W>s??&?%7a?[?(>~? ?&+?L?aI?h?aB?Mb ?'k?NF>ܙ>6P>j?'Ə?O7?Y!?M ?Cw>c>=H=X%<~:Y;5p=*=ܪ>u~>I>ʜ?NF>>6u>H>x? 3?(3?B]!?K ?C?*C? >O>S>?>I?ғ?6n?FF?4?\>==f=c,>^>>>>>> k>_>? ?NF>+>>12>^_>F|>o&>ݪ>? h>d>J>9h==8D >+x>?>Ix>Ix>Jw>X>nLZ>>^>nLZ>>=>%=߂=Y=g>&>^>~>k->+0!==V<ä< ;5p:Zd;~=u)= =O> >t>n>>==o=鿗=ǟ=={a =7!= a=8D=l=D=˛ =2=5=Y> l====[=`y= a<>;~ ;ʜB>= ====em="4`>>>.===x==!=[=L>=C=V=y=> Y8>> = =Zd<~:ʜ=%=> 12>9>OMk>V(>X>Y!>j>> a>I>GJ>=!==?=>Y!>>>>Mn=ۇ="4:d:Y<=->z>g0j>>y>!|>BB>MG>׌>>?>>;&>hg> =ܪ>>d<>H??S?? U>'>?=;:d=5p=Q0>V>>>8>;&>I>?Q?&Z?/=~?$8?NF>>8i> >.P>V?"?BS?Oq?:=1{ >lN>>W>uq>1{>>}??0N|?:T?+? >&v>BS>>@;&>U?%?SZ?^q?O7?4>[=OV>K>MG>&v>2>>!?D?C?#3?I>N>>)$>>2E>{X??H?T_?B܇?Ǡ>l={X<:d<==D>>Z>|>{>>c5?>av>~>O>йh>O>Z>>8i=t`=O> >c>?HM?%?>>,>==:d:Y<(X'=C=h>|>>==鿗>>n>96>@̾>1(> f=̾== G=>>T">E>0!>>z=3<:2:d%7a>=c,>* ==d=+> >u==={X=)=h =8r;1{:Zd<=>EM>N>>E>U>==Mn=`y=l>>iv>>,\>}^>U>2ݪ>>=йh=k='4;Zd:d='4> l>3>of>LZ>>K>.P=,==E>>{>>>>T>I>q>~>_>>=> G==yr>&Q>˭><>Q0>>9=d=v=O>/>> ?E?`y>Re>>>>`>6G<>E==8r:d:ʜ=5p=>oW>>h&>U>E>=h=HM= >&Z>->Վ>F>}>׌>{X>>uhK>V >.== G=:d:Y:Zd G>aB>I>i-> ==em====>Jw>>>jl>A >{>>W>@;&>* > =̾=p#<(X' >'Ə>"4> l= u==X'=̾> l>.>?>=c,>&*>|==k=={a =8r=HM=d=f=7!4s>f> >`>4>Mn>&>#d>Y!>>I>ֲ(>p>ן>P>X>* >r>r>0H>d>{>>M=G=}l y> a>߂??>> >3>>ŢM?<??&+?!5?u)>> k>>qm >E>>b@? 7>K%>>o=bZ;~ <%=l>>3???%?9>`>>ŢM>??; ?HU?B?+0!?>->s><>h?NF?(?7?%a>))>]<=>>(??O?)>>>p?I?,o?8?F3?A?*?>1>>c>]!? ?2?C?1(?>z=AU=9h<(X':d:d<%=>5$ >̚>%>T>Դ>>>SR>F+?O{??"h?o?b>$T>=>>:>>v??)D?C>{>hS=̾>=Jw<;~ :d:Y:ʜ<==d>>bZ>>>{>>k->i-><>4>;&>Դ>)>>ҥ>tE>BS>.P>C>j> >v>Ҷ>>=d=/+K<<;5p:Y:p)> >([>#d> >)2>=>W>`>Ix>([>E=|== >>2ݪ>R>BS> y==8DE>8r==F+=Y=1{=Y=l=޻=bZ=){X==(X'=em=a===X%<ܪ;d;Zd:d;d= a====I=ǟ==3=em=8D=8r<8r<<~>=LZ=O=6P=== =E=(X'=(X'===f=> f>ҥ>%=n=p#<>:d>/>4s>4s>.>/t>C>5$ > =̾=HM=)=X'=엑>S.>>&v>>Q4=="4:d9Y<(X'=>?>A>q$T>~>y >x@D>>k}>>>>{>>!=AU==엑>WX>͘?b? >? >;&>>==pS;p:Y<;=^W>8D>E>>>?>es>q>>?NF>j>>_>`=>>>??DO?QK?A? >=<>:d=7!=y6>K u>%>>N|>>8>>1?Ip?.?>U>pۈ>J>>5$ >??&+?V2?av?S?A >N=O<5p:ʜ=+=Դ>:>I>E>>12>:>?>ơ>b>FO>`>c>M > Y8=LZ>(>Z??Mtz==0!;d:d<=d> >@>`>[>A#>96>K>y>Y>ذ>>Mn> =ǟ=>E>a7>~?S??+ ?HM>>J=E:d:Y<(X'=2={X=V>>K=ۇ=Y=O=엑>Ǡ>`>=йh== =Y=>:>[Ѓ>>>N>-O=pS> y=i[={a <;~ʜ:Zd:p;5p;p;Zd:Y:Zd:d;5p;Zd:ʜ:Zd:Y;~;~:d:Y$1>;/>(=o=k=){X>n>">>=ܪ===l= f;:Y<= G>>hg>:>i>!=^W=em= f=:2=>>Y!>I>>g0j>@̾>%->`=-=h=<=:ʜ:d<7=>*>{>>P>{>.=ä=l=/+K=|;=йh>8i>q>c>^2> >dXp>A>+0!>`=ܪ=d=5p;:p>Rn1>l>Ns> /=d=0N|= f=p#=1{>.>~>A >BB>>Z>:Bf>"_h> ="==.<~:Y:Y:Y;=C=> f>>={X=+|>?>i>k->Mn>.>>=׌==sj<~ ;:p:Zd9Y:Zd<(X'=5p== =V<;p:ʜ;Y>> y==O===p#=~<~:p9Y:Zd:d:d:Y:Y;Zd;ʜ;;5p:Y:d<:2=){X=y=E==E=k==h =8D<7;d:Zd:Y:d:d:Y:Y9Y:Zd:Y:Y9Y;5p&Z>M>Jw>)$====|>%>8i>K >Y!>MO>.P> f=LZ="==D= =A=йh=)=~;Zd:Y<=^>!><>>>>MO>>%>=>>8>:>+>q>!>i>A^W>/+K>,>HzG>u>!|>~9>n={X<:d:d=~=>?Z>>j>!>p>4>T">K>B>>O>>>S>8>y>x@D>_>f 9> G>د>j> >>o=p#, >pS>}>>$ >w>c5?>`>.>>˭>~>d>d>>es>}8>d>oW>>LZ?>$T>>"_h=<~ ;~ :d:Y<~=Mn=i[>GW>V>>>i->C>;/>av>>>ŢM>RA>c,><>}l>R><>GW>7=>Z> >>>== 5HM>3&v>2ݪ>">)> >'>3oB>Y!>y ><>we>Pp>* > =A> 5>,>i->|i>|>4s= =U<;<<5p;~:Zd:Y;~ == =h=1{="==O=,=O=> >> Y8=_=!== =pS=!=_>=LZ==@;&<$T<><%;;p:d:d<=5p==k}= G=y=l=B=+=<<Y;p;p;d<%<=){X=:2=*<є=8D=8r=%= =Jw<:d9Y:Y<~=B=rG==!=D==^==9= =O=[<<==V=Ə=ܪ>|==h=Jw;~ ;K=Y===I=====>?==c,= =\=QK={a =>P>`>>e{> a=I<1{:Y:d<$T=f=>q>+x>'4>([>+>5p>F~>N>=c,>="===?>'>>b>e>ۇ>f>=B:d<~=l=y6>1(>WX>_>Mn>H>Xf>t> a>!>z>HzG> =Y=!=7>Y!>߂? 8?0?vp>h&>C=/:ʜ:Y<=> 5>F3>k->nLZ>Z>R>d>>>8>%>]>%=i[=є>b>}l?<?8D?Iy?5Hq>>Y=;Y:Y<8r= >>6G<>U>T">=c,>5>BS>e{>E>Y8>uhK>=>o= =l=#>f 9>H?*?=>?(!>⣧>9={a :d:Y<(X'=Jw=є>Ǡ>Cw>J> l>|> l>HM>.>4s>#d>B=̾=f=pS=c>"><7> ? a>j>.=-= f:Zd;Y<=i-={X=2=h=4==Cw===D=+K==rG=K =QK=|;=>%>ycu> a>f> l=p#<1q:Zd;d=<$T=5p=h =h =<є="4=.=7!=2=[!>">8r==[=`y=/===>>>pS>=o=V=AU=O=D=O=_=|==>;;1{=,=!> G>IT>Qܙ>0>=D=d=D>`>+0!>=c,>G>F|>4>>u)> >~>>* >=c,>* = =3<:d;Zd=HM=Ə>Y>BS>N>79> y=Y=?=_>P>5>IT>Y!>T">;e>n>Y> 12> >>D6P>b>IT>`==~<:ʜ:Y:Zdu)>n>=엑==4==>J>0>;/>5l>@>8r=-=2=> >+>B>5$ >K==8r==O=q==^==c,=>?= =X'=7!<^W > G>>)=o==B=\=[=,>G>>of>L>WX=ǟ8r>pS>%>+x>Cw>?=2=3=em= =))>y>۬>>>|;o=ܪ<$T:Y:d`y>>> =ۇ={X=p#=H1{=[=ܪ>f 9>ǟ>->}>`=є<2:d>~>ذ>y >=[<=H1{=>o> G>b= =8r;#d:Zd;1{<8r<ܪ<~ <є;Y:Zd;#d<="4=QK=bZ=V=/+K<:d;<2= a=.=<;d:d:Y:Y;Y<^W=Mn=y===y=em=8r;d:Y<~<$T=7!=8D<$T<%:d:Zd:Zd;5p;~ :d:Y:ʜ<Y:d9Y:Y:Zd;~ʜ<%<=Q=D=[=A^W=.<(X':d:Y<%<==+="4<$T<:d:Y:Y:Zd=%=sj=޻=)=rG=*<==){X=h =)==d= =bZ=E=a7=8r= = ==)==*<^I;l:d:d:d:Y:d<<2<<>:ʜ:Zd:d:ʜ;#d:ʜ:Y:Y;5p;~;5p:d:p;Zd<>;~ ;Zd:d:Y:d;1{<~;d:d:Y:ʜ<(X'<є<<~ ;Zd:d:Y:ʜ<=5p=a7=QK=;d:d;d===a==Vz> Y8==~:ʜ:Y;~ <ܪ=.===V=q$T=y==f= G=3=H1{<7<><<>='4=k}=G>>K=<:d:Y;p<=[=@=){X=/+K=8D=:2=8D=/+K<ʜ<>;~ :ʜ;Zd<<ܪ=f=D==h=h <:Zd:d<%<<ä<^W<<~;Y:Zd:Zd:Y:Y:Zd:Y:Y:d;#d;Zd:ʜ:Zd:Y;Y;K;d;~:d:Zd:ʜ;5p:d:Y:d;;~ ;d;l:d:d;<<ܪ;<><<7<$T<є=Y=/+K="4<=<2<8r<Y:d:ʜ:d:Y;5p<5p<ܪ=.=@;&="4;:d:Y;Y;~ ;~ ;~:d:Zd:Zd:Zd:d;Y;;;~:ʜ:Y:Y;Zd<;ʜ;l:Zd:Zd;5p;;;;K;~ <~<;1{;~ʜ;~ʜ;~ʜ:ʜ:Y:d;~;~:d:Y:d;K<<;d;;d;~:ʜ:Y:Y:Zd:d:Zd:Y:p:d:Y:Zd;Zd;1{;;l;Y;#d:ʜ:Y:Y:Y:Zd:d:d:d:d:d:d:Y:Y:d:d:d:Y:d:ʜ:d:d:p:Zd:Zd:Y:Zd:ʜ;Zd;5p:ʜ;Y;~;1{;~:d:d;Y<;~ ;K;~ <;Zd:d:Zd;K<%;d;K;K:d;p<8r<ܪ==<$T<>;l:d;엑<<ܪ=B=HM=$=){X=$=3=8D=7!= f<8r;1{:d:d:p:ʜ;~;~ ;~ :d:Zd;~;~ :d:Y:p:Y:p;K<ä=Q=*=){X=~;Zd:d;d:d:Zd:d;5p;Zd;~;~;5p:ʜ:Y:Y:d:Y:Y;#d;K;Y:d9Y:Y:Y:Zd:d:d:d:Y:d;l;Zd:d:Zd:Zd:d:ʜ:ʜ:Zd:Y:Zd:Y:d:d:d:Y:d:ʜ:d:Zd:Zd:d:d:d:Y:ʜ;l:d:Zd;Zd<><ܪ=&=5p="4;Y:d:Y:Y;Y<7=;c=L>='4<;;Y<1q= =em=f= =8r=em=5p<=<:d<^I=8r=8D=QK=h =}l==p#====8r=8r;5p:ʜ<;Zd:Zd:Y;K<="4=GJ=A^W=8r;:Y:d;5p;Y:d:Y;~<(X'<%:ʜ:Y;d:d:Y:ʜ<(X'<~;~ ;~ ;1{;~ 12>>==#d:p:d<=7!==k}={X=l=c= ==4={a =$<$T<===8D=y=V>%>=c,>,=y6=Jw:ʜ:p>7>$1=׌=7!:ʜ;~<="4=Rn1=m=|;=B=B=em=+<2<1q<%<:2<==Rn1=N|=$T> y==<ä:Y;Y:d:Y:d;Ǡ> ===+<==bZ=E=> Y8>J>>)==D=[==Y>96>~ʜ>d>6G<=En>&Z>u)=J=[=sj=v=> G>3oB>F3>K u>=>=y6==!>d=>pS>h&><>q>pS="4:ʜ<==k=>>n> = u=@=d=O>`>.>A>U>Y!>GJ>$1==E=>&^>>O>$T>n >, =2:Zd >$>1(>9>:Bf>+0!>o== = =LZ>d>~>h>w=<;Y`y>8r>b==AU= =em= =B==ܪ>$1>0H>?=em:d:d;1{<>:d y>!>޻=,=H1{:d;~o>=鿗== =bZ=H1{=QK=h =>O>K >nLZ>`y>=d>u)>`=B==={a =em=m=[=6P>*U>t>>7=>A^W=<;Zd<ӑb=P'=)=E=ä=ܪ=>=l=د==[=]=QK=`y=|;=>n>k-> >>:=5$ >Vi[>EM> 5=|;;K:Zd;<=+=P'=kt`==H==H=`y=><=[=8D=;c=5p=% l>2ݪ>* =߂=h ;;Y!>* >%=ä=bZ=k}==c,>|>>5l>>]>8D>=鿗=!=,>8i>>׌>F+>> =/+K:Y;~ =5p=>>=c,>C>,==k=l=>o>.>Ns>o&>}>o&>IT>E=>M">j>"??>$T>l=pS:d;d=.=>%>8D>=c,>([=G===߂>>@̾>c5?>>:>~>V(>n=B>i>>?!5?#?> =-:d:ʜu)>>=Y=4=I=V>>8i>M>f 9>l>]<>6>8r=|=엑>Vi[>I?s? G>$/>IT=`y9Y:Y;d<==8r====y====>)> G>!>$>=t`= =}l= =>F3>`>!>R=<:2:Y;#d<1q<ӑb= f=.=[=.=h =.=====X'=M"=P'&>pS=o=D=޻=}l=p#=3= u>.>{>>>T_=AU<$T;=Q={a ==O=B>>">4s>5>"_h>=Y== ==>=LZ>Mn>BB>db>>> /=$;~ʜo>HM>'Ə>([>V==h==l===_>E>>h>q>d> l=Y:Zd<:2=Q=p#=a=h=s=))>==د==3=h =V=Mn=[=0!>pS>g0j>>q>A=< :Zd<~<ܪ=<є={a === =a==7!=<=<=<<ܪ=8D=>>>$>=йh==;Y:d<<^W=Y=2=2=[="4=[=QK=;K:Y:Y:d;Y;K;Zd:d;~ʜ=/+K===E=5=:ʜ:Zd;~ʜ= =bZ=*<%<~:d:ʜ<#d<2<==<є<~:Y:d<ӑb<=<7;:Y:Zd;~ʜ<<=="4=8D=8D=[:Y:Zd;=+=^="==̾=B<2;~(>Pp>?=A=">+0!>)=Y=`y==bZ=I=))>>4I>A^W>"===A>`]F>>N>x>>=E:d;~ =/+K=c>>=>EM>.P== ={a ==>$>ID>pI>I>{>>W>%> l>2ݪ>8?NF?!`? 8>>{>=d;Zd;d='4=9>%>8i>?>*===d=O>%>9>aB>>.>>>d>.>>9> ? 4?) Y?)i%? G>v^=N|;Y:d<2==>u)>"> l=D=d=X'=>>/>Luq>j>x@D>k+>C>r=y6>)>d>B?,\?u)>ߧG>Y!==H:Y;1{<7===c=E===u)==y6> y>E>* >/>">==pS=I>%>m))>>c>hg=;d;Zd;Y:d:Y;5p<=< <:2:d:Y;Y|>^=t`=c,=޻=`y=7!="4=4?=l=AU>&*>GW>@> =%<:2;5p<ä=Mn=HM=є=>Ǡ>>.P>1(> >==@=}l=f==>,>>>>f 9== f;l<ܪ=`y==̾>>>>.>@̾>C>4I>)=AU==/==%=Q0>SH>c>y>8>>=C:Y:d<=:2=M"=;&=>`>%>8D>96>&>o=ǟ==5={a = =I>K >̚>>X>,\>=8D:Y;d<ܪ=V= G==I>>Y>=A= =={a =\=@;&=Jw=> G>wx>>>Z=߂<ӑb;Zd=8r=<ܪ >5$ >.==p#;K:Y;~ ;d;d;d;~:d;Y< =rG==.=:2<%;K:d:Y;K:Y:d<>:d;=QK={X=ä===E;;<~<2="4=;c=+>+>%==K ;~ :d<%={a =˛ > l>=={X=(X'<^I==[=D=g>>n>> f=O=E=V>A^W>>^>'>i-=AU=Y:Y;5p<~ =q=x> >*>=,=|;=2==>E>&Z>GJ>]<>Xf>:Bf>=>n>>˭?:?M>U>7!=l:d:d<=޻=>i>$1>Y=O= =sj=^=>>:>^}>oo>jd>F|>=>(>M">N??>װ>Luq=:d:Y<1q=H1{==))>=y6=l==B={X=I>`>,>F3>V(>KRA>,>K= u>>>av>h>(>>~>>=0N|:d<^I=8D=.=^=a=B=[=bZ= =h=ܪ=\5>>>`=_===X'>`y>IT>K>{>3oB=<:Y;Zd<~;~ ;d;1{;~ʜ:ʜ:d:Y:d<%<<8r;~ :d:Y;Zd;d;<5p=q==X'=d=f8r>%7a>>=-=|;<%:Y<~==n={X=1{=> >C> >Y=-=q=B=@;&=+=B=d> >WX>>a>B=,<ܪ:Y:Y<%=޻=8r=D=B> Y8>n>3&v>5l>$1>>==pS=h =A^W=h =c>.>3>,>{X>{>> f=+:Y;1{<=l==>>J>+x>,SR>===f=`y=8D=Rn1=h>,>3>>V>{>> |i="4:Y:Zd<(X'=%===,=>>>=g=!=8r=E=.=~=[=5>b>T">B>>?=<:Y;<$T=P'=f=4=q={X=y=:2<ܪ G>==Jw;:ʜ8D>Vi[>===p#<~:Y<%=8D==ܪ==D=M"=%>>޻=9=c==>3&v>>8>>F3=>* >$> 12=|=v=<>:Bf>->D>~>`=O<:d |i>pS>u)= ={X= =D>%>]L>>~>1q=X';:ʜ;K:ʜ:Zd:Y:ʜ<="4=QK=H1{=<~:Y:d<:2=Y=`y=8r=)=@==y=]=Y >2ݪ>/+K>|=yǠ>o====8D<$T<<$T==߂>8>i->d<>+x=<;d=B=}l=0!=ǟ=t`>>b=_=q=p#="49>k+>fV>+=?<:Y >6>1y>b=<~:Y<1q==A^W=z==8r=n=2<;d;~ʜ;Y:d:Y:ʜ=@==ä=̾=y<%:d:Zd;K<^I:Y:d<< <>:ʜ:Y<><<<%:Y:Y:ʜ<Yo=-=pS)>`y=X'=~<^I:ʜ:Y:d;Zd;;~ʜ:d:Zd:Zd:d:d:Zd:d;K<;~:Y:Y:Zd:Y:Y:Zd:Y:d;d;Y:d:d:p:d:p:Zd:d<>;K:ʜ:Y;Zd<2=7!=h =`y=q;#d:Y:Zd;~ <1q;:ʜ9Y:ʜ<~:d9Y;~<^I<%:d:Zd;K<%<Y;~:Y:Y:d:d:Y:Y:d;Y;#d:d:d;ʜ<$T<5p<>;K:d:Zd<~<<%;;d;~ < <~;Y:Y:Y:d;~ʜ;~;~;~;d< <>;Zd:d:d:d:d:Y:Y:d:ʜ:ʜ:Y:Y:Y:Y:Y:Zd:Y:Zd:d;Zd;p;~ʜ:d9Y:Y:Y;5p<~<(X'<%;d:p:Zd:ʜ:ʜ:d:Y:Zd;<><^I;Y:Zd:Y:Zd:Y:Zd:d:d:Y;Y<2<===Q=C=u)==ǟ=D==d=|;=H1{=8D=*= f<7<^W<є<;:d:p;5p;K;d;d;d<%<<ܪ;5p:Y;K;K:d:Y;< <:d:Y:d;5p;Y:d:Y:ʜ<~<^I<^I<:d:Zd;5p;d;~ ;5p:Y:Y:d:d:d:Y:Zd;5p;d;~ ;K;5p:d:Y:Zd:Zd:Y:d:ʜ:ʜ:d:d:d;K;d;Zd:d:Y:d:d:Zd:Y:ʜ<%;~ :d:d;;~ ;~:d:Y:Y:d:d:Zd:Y;1{;1{:ʜ:Y:Zd:Zd:Zd:Y:ʜ<><8r<ܪ= f=Q<ܪ<1q:Y:d;~ <5p<:2<%;d;5p:d:ʜ;K<<;~ʜ;~ <;5p:Y:d;~ <%<~;5p:Y:Y:Zd:Y:Zd;5p;d;K:ʜ:Y:Y:Zd:Y:Zd:d:d:Zd9Y:Y:Y:Y:Zd:d:d:Y9Y:Zd:d:Y:Zd:d;<%<:2<~;K:d:Y:Y:Zd9Y:Y:d;K<>;~ ;d<~<;;1{<%;K:d:Y;~<~<#d<>;K:d:Zd<2=rG=X'==rG=< >%> 12>=2===l<ܪ;Y<%=Sb==O=є=.=a7=h == G==I> 12>ҥ>">J>=y=c==P'?>u)>r> l=-=̾=d=h E=~=!=]==Y=@;&=n=f=f=d= =7!%7a>Mn>EY>===[===> >`===kt`=8r<є=%=kt`=޻=9= =A^W<>:Y=~=>>=>o&>gy6>1y==4={X==Z>%>.>2ݪ>t==d=QK=u)=K ===O==޻=~:p<ä=!>&Z>Tk>Mn>"=I={X={X==د>>t> >%=_==QK=~=H1{=f==ۇ=̾>==/+K;5p;p=V=ϖ7>>%=LZ== = =k===O=I===sj<==Jw= G=X'=`=h =D=GJ=H1{=QK=V={a =y=y=h =;;Zd<є<ʜ=޻=@=Q<є< :ʜ:Y:Y;Zd<~;~ :d:Y;5p"4>;/>&=2===3==̾>8r>4I>V>`>K u>5$ >q>w==;&=5>j>3>z=>2E==I=h=O> l>>=>>d=>4>`>i->@>(>)=y6=d=@:d<~=>n>{>ذ>>GJ>b=6P= u=))>t>]<>G>s>>?>{>>GJ>+>===8r:Zd:d=bZ=A>K u>vG>f>,SR=V=c=ä=Z>pS>IT>_C>ҥ>d=>3>^}>.>%=x=̾=rG>u)=ܪ==={X==V>%>=>[>]<>C>n== u=v=sj<ܪ:ʜ:d>u=-=;&=={a =){X<8r;Y:ʜ<1q<(X'<%;~ ;d;<:2WX>o>d>@=N==є=Z>>ID>~9>>Y!>==B=8D=V=HM==د=˛ ==){X:Zd;~=>EY>>̙>J>>GJ>>>0>n>R>ڭR>^{>>d>,=~ =?==B>&>>]>9>=p<ܪ<~=?>b>/>>v>=>ycu>?>:>WX>&Q>c>6?><>>Y!>pS=Q0=>&>av>B>z>K u>=p#:ʜ;~=Y>>=>_h>>>>k->;c>9>V(>>;&>+>">ѓ>E>Q>==>+>k->`> a>_>,\= <~:Y= f=>Mn>>>>av>1(>r>pS>0H>OMk>I>@>f>>Y!>A ==!=>~>=c,>f 9>d>9==q$T<~:ʜ=8D=>> =9===O=LZ>>>f>"4>HM===8r=A^W={a ==>>==^=:ʜ:d<=D=p#=p#=l=B===a=M"=.=M"= =l=<;~:p9Y:Y:d<:2<7="4=.=.=7!=:2=8D=~<^I;l:d:d:Y:d;~;~ ;1{:d:ʜb>%7a>OMk>m))>b>5$ =7=`y<<<==K =3==M"=V<:d:Zd|>6G<>z=>->>S>{>ҥ= <===E===O===*;p:d Y8>C >>ן>>4>w>"==[=Q=h =4=O=鿗=AU==@;&<:Y<^I=,=l=8r=a=AU>n>_>`>A >>GW=G=<2<=+=B=c>>n>*U>==%<=;~ <5p=8r=p#=f=Ə==em<є:Zd:d:ʜ;:d:Y:Zd;Y<5p;K:p:Y:ʜ;<%<="4=QK=l=p#=QK=Q<>:Y=~=@;&==d=!==Y====y=,;~ <%={a =>6G<>M>6G<=j=d=h =^I=8r={X=->&>K >Y!>G>4?> >)>=O==@:d:Y<==ܪ>_>T>>">{>>=˛ =;&=i[>)>b>>y>>">޻>pI>Q>:Bf>=i[=8rJ>q>M?s>>>`>%>E>>S.>U>&? |i? {4>e>->>:>i->>]> 12=4<ӑb:Y=QK>n>>??7=>of>~9>%>%>.>v{>ģ?r??6?Ip>ݩ>uM>->x@D>Ix>r= <%=.=A>>>Վ>G>N>ݪ>`>> l>$\>gy6>(>"? ? |i>>>E>{>>^}>6==y!>I>>J>bZ>J=ܪ=s>|>3>zr>$>D>ɝx>>6>Vi[>8D>!>=="4;K:Y<=pS=鿗>r>w=I=SR= ===>J>=>[>]<>C> =x=F+==)=+<>:Zd;5p<>=+=\=n=Rn1=){X="4=8D=QK=u=>=c=i[=AU=̾=^==Zd="4<;:p:Y:ʜ<~=SR>%>X>Sb>#9=7=h==F+>`>C>we>~9>Tk>=є=|;="4=){X==v==2==$:ʜ;5p=>K u>{>ܪ>>>k->8i>79>T">%>˭?Ǡ? >FO>0!>Y!>)=_=ܪ>`>9>[>Xf>* =O=.:Y<2>>>d??J?I>8>NX>`>>j?#f??Z?EM?0H? >>u>?Z>>=>vG>0!>j>> >G=<=8r>>$ ?:? t?#1?M">>>l>??+>?>wx>{>>2>?Q?>G> G>r=Mn:d!|>?V?HM? G>^{>e>ן>D??3C?OMk?S.?Ek?>>>z=>~9>~>j?&Q??_C>0!>&Z=B;d;~ʜ=f>:Bf>> >v>y>7a>)>>T>_? ?#?(?>E>U>p>EM>F|>7>I>F?>;J>f>Y=n<~<^I=f>>K u>`>S.>@̾><>G>f 9>>>>W>&v>|i>GW>pS=o=>)$>o&>>>>7!=="4;Y< =8D=޻=E== u=鿗>Ǡ>)>>%>">n>z>b=2==YAU=|;=v=$T>J> > =c,=D<%:Y;==em |i>f>9>c5?>I>{>ID>B=M"=5p="4=<є== ==={a <:d > >/>Q4>^>>"?D>>>k-=~=y==-=y>>* >pS=د=|;>=c,>M>`>j>'?E?"q?-??#1?z>>* ===׌>#9>^>o&>Mn>=I=:Zd;5p=Sb=i[>&>Ix>Y!>i->>Mk?.?*?82?*V? > >0==E=>79>t>:>b>"4=̾="4:d:d=+=> />.>7!>=c,>k-> >???ͽ>Z>> /=d==ܪ> >Q4>bZ>C>=<;:Y>Mn>>>y>>{>>=q=V=p#==g>%>> y=ǟ=rG<:2:Y<(X'=Q=H1{=YAU=h = =h=>>t>Y=߂==&`y>=e=Q0=׌==4=\<^I<=>=c,>Q>~>&Q>K u==4==%=|>!>nLZ>m>@> a>n>K >79>!>==bZ;:d=h >.P>uM> ??9>w>i->%=>`y>?Z>8>s+? E? >b@>p>V> a>rQ>GW>=D=u);l={X>nLZ>??0?(3?9>SR>K u> >9>>"???2^D?3J?#3?9>>db>>>M>===a7:d;~ʜ=E>|;o>??'}?9?1?r>^W>hS>6G<>V>$? ?+ ?BS?C?.?>L>ͽ>P>w>Mn=\5=p#;~ʜ:d= >H>F+?\?&? O?b>)>Q4>(>IT>BB>B?!?5?5 ?"g?Ip>>4> >d>;c=ܪ=C;~ʜ==>d>'>i>b>{>`>=A>>>i->t>{?-?.>F> ><7> >n>C> y=k<$T:d<~=h =>=c,>i->^>+0!=엑===ǟ>>K u>;>9>^2> >b>9h>%7a>==="4<%9Y:ZdE>pS>>~=ܪ=2=SR=pS=em<=<%:d:d<~<> =鿗==kt`<2;5p:dY!>>M">nLZ>5$ >)> y>>T">A > >of>y>y >$\=ۇ==k}=є=>>.=y=pS>:? 7? a>>>>v^>9>A >x?A ?9z5?@?-? >;&>|;o>=>4I>Z>&Q>>ơ>y>5$ = +x> ??2?:?*V? .>>װ>?) Y?U3?j,?o&?e?H?I>i[><>E>J??%?+?I>8>.={a :ʜ:Y=U>A>?"q?C?K ???"? ?<??F?h?x?{*q?v?_p?0{?b>v>-??*?N:?U)?D? b>7==ҥ>??4s?@(?5p?es? ? ??D6P?e?w/G?yA?sN?\?-->>>Mk??1q?T,?\+?M+p?YJ>A =鿗=@:p<:2=I>g0j>Ѹ3? E??]>;>>b?z?"M5?H1{?]?cq?Yw?;?Q>Е>>7a>??E=="4:d:Y9>Y8>̚>8> >>̚>Hq>e?y??}>">>}>Mn>IT>4>0E?I? >B>~>0H=d<ܪ:p:Y`>#d>:Bf>K >[>bZ>nLZ>:>P>>i->/+K>b=1{= u>>=c,>qm >>k->* ==1q;K:ʜ>z>===ۇ==E=~ʜ=){X=~="4=p#=0!=йh=~ =Y= =;Zd:Y;~ =Y= =̾=-==ܪ==M"=n=2<% >> y> >>#d> >==bZ=+=(X'=8D=sj=a===Mn<8r:d:d >:>GW>Y!>u>N>.>Ҷ>I>>EM=ܪ=HM= =>=H>2ݪ>C>+x=-=|;>IT>~> a>o>2>!? ?&?2?(3? >&v>?=ܪ=O>pS>t>P>;&>>R=B=2:ʜ:Y<7= >:Bf>4>>G<>;&>b? ?1?Ph?Ye?P^i?,>m >~>)> 12>V >!>? }>M>G> =[<~:Y==_>K u>&Q>n >>>x?_U?>>>>n>? /?}?NF>>,=pS<(X'5>>>>)>>ʜ?%?E}?N?B?.>j>^}> l> />R>s>?> >3>%==H;d<%==>79>X>\>Y!>u>X'> ? d??Zn>>y>%==K>z>i>c>n >v^>79=="4:p:Zd<+K==є=Z=B=AU=>J>F3>nLZ>}8>f>5$ =G=== =̾>o>(>0>)==V;:Y<<$T=3=8D=7!=5p=E={a =Cw==SR=.=QK=>=8r==U=/===[="4;~ :d;l;K;K;Zd:d:d;<1q>#d>Y=Y==[>)>Y>o==i[=̾==VbZ>S>U>=>{>>=2=y= =O>5$ >l> >y>a>>>d<>E>.>u)=,=z=<>:ʜ=5>K u>Ηm?b?P?>엑>X>$=>8r>T">??D??C? >->>_h>4>_>%-= u=8D:Zd;d=Y>??0?C?:?>Sv>f>, >A^W>?Ip?.P?FF?G2?3?>^>T>!>M">X> =f;~ <~=>E?*?: ?K ?D?#3>>>@̾>d>;&?N?@?Rn1?S?C?$o0? >M>Sv>c>n>=<^I;K=E>vG>e?'Y]?94?1?$>^W>i->3&v>X>MG? ?5Z?Je?J/?6n?>ʜ>O>c>>^> l=3>>i? B0?>>~>%>B>* >>!?b?"?"?\>q>8>>>k->, =ä=:2;dM">i->v^>u>F3>=!=d=ϖ7>:>j>*> >1{>0!>6>av>IT>8D>=̾>=p#<:d:d<є=h =0!=6P=є==V==.=em= =->J>1y>3oB>>==O== G=E:d:Zd:Y;K<8r>([>Y== G=/+K`>>V>V>f 9>7!>!>1y>n>$ >>&>ֲ(>4>_˭> G=_= =7>`>.>3oB> =?=.:ʜ< =1{>d>鿗?? ?\>>!>4>!?|?+ ?K?Qf?G?%`>>L>~9>em>[>;&>F?y>>z==د=Q:Y:Y=A^W>&*>D?w?A?L?B?%7a? > ??=+?c# ?vB?yA?u1?_?6k?9>H>ŢM>j?$J?H?Qg?=?Ip>q==c,> ?*?P'?Y?S/?=c,?#'?z?-?Wh&?uC?~o??}8?s4?Q8?!>g>F??M ?hAg?nY?bt?6">U> =8D:d:Y=7!>z>̾?w?EƳ?Q]3?M?8?#1??0{?VD?s|?}p?%?}?q?P? =l?>? ?Qof?m;\?t{?i?B܇> >&*=|;<%fV>?z?*#?(3??ғ? {4??:?[?o8?uC?n^?Y?1MG?;>Ѹ>ճ]?m?9z5?\?e?Y?*C>6P>J=C>;>̙>׌>c>N>>D?NF? >?56>??'?5p?>>ן>w> >t>g?%?2?">o>z==AU=P'<5p:d:Zd<>=sj=йh>i>=c,>[>qm >M>> a>>s>ŢM>U>>{>>9>)> >.P>t>7a>?>)>k+>=>5$ >9>.>>r>>>=Y=Cw={a =p#== u>o>'> l=;&=\< ;Y:Y:d<=em=!=>%>pS>Ǡ===@=8r=;c<,\>Y>=s==Ə=)=\=8r<<>$1>3oB>7!>.>* >1(>=c,>8D>%===h =kt`= =2>|>===*;K:Y;d=K =O>, >av>{>>>Y8>ذ>>܆>>>,>^}>==c,>8r>Y!>es>,>M">A=|=:d:Y;/>d>J>=>¥>Ѹ3>e??6n?B ?7m?>>]<> >>o&>Վ??x? >4>9=/;:ʜ=h >u)>~>>~>>$T?+??C7?[u?c~ ?Z?l>96>EM>&v??BS?N:?;c?>=1{<;~ʜ=f>!> a>1{>,>j>x?Zn?$o0?L?b?iv?`E?D? 0>>F3>]>͘?&?S/?]?N:?>=ۇr>{>>&v>йh>%>ۇ>M??6:?Q?Y?O?*>K%>:>2ݪ>IT>?2z?IBx?S?B]!?m>oW=7!>~>k}>D>>q>,?<??$o0?>'>k}>7!>o>ҥ>x@D>>={a ;K<~=\=ǟ>)>,SR>)$> G>n>@>t>)>BB>f>ZR>HM=˛ =h=O>>`>>S>6>#9=<є:p<>="4====y== =k=h=D=Y=q= =z==p#==4=i[>8r>o=йh=3<^W:Y:Zd;8r>E> ==<=<~;db=엑=O=!==B="4;K<=;&>Ph>o>4>~>i>==h =a7=I>>oW>>>->u>Ph>4?>E==D=K ;K:d=p#><>;&?Ǡ?~?v^>ܪ>}>=O=>;> >{?s?V?NF>۬>=>k}>}^>K >=2="4:Y;d=h>_C??)?;?2x?&> k>OMk>>,SR>M">?'(?>??Z?+?Y>N>>+K>>ID>=B;<%=1{>?9?2^D?E5?uq>i->,>HzG>L?s?9?NN?Nm?=>?3>Z>q>d<>=%k->?!*?2E?)? h>>Ns>@>@>c?~?/=~?E?EƳ?1?&Q>>Z> k>pS>WC>=f>>?> >>g0j>%=I>pS>nLZ>͘? 0?c?? >鿗>=>c>w>hg>(=6P=C<~< =Cw>>a7> >z=>8D=g=a=8r=>)>aB>>1{>J>V>^>aB>K u>8D>pS=O={a <є:d:dpS>4s>79> > f=LZ===9=QK<2;~:ʜo>>o=i[=k=E<$T<>>Y>i->4s>> G>G>G>#>>¥>q>i->([==O=د>:>">,> f==+;5pOMk>/? ?I?@>>ן>y>c>??9?Fj?ʜ>>3>lN>_C>db>F?>Z>>}=ۇ=k}:d="4>B>c?(?7?GiI?@?'}? U>{?~?.L?W?n?u?p?\?8{j?v^>\>/>FO?$?K ?S?C?.>>}=I<9Y:Zd==>pS>]??J/?V?R?@?%7a?"?'\?N:?m\?{s=?~?|;o?qm ?S?'k?% > ??N?ju?r?f?>O>>=QK;K:Y=Q=>?V?>?P'?Mn?=c,?&?A ?+0!?O?l`?{ ?}?{?p"?R?'?:?I? O?S?p#?w ?mM?K u>C>8= <:d<%=>=>Ηm?\?)?+ ?!?r? V?HM?2?T_?i?q?k?YT?8 k?\>b>? !j?=`?`F?id?^?4n >X>)2=M"<ܪ;d:Y:Y<=X'>7>>F+>x>>X>><>\5?3?.L?;c?5l?!*?>Sv>es>>!?)?*1V?;Sd?*V?b>f==u, >Qܙ>m))>~>E>>>>s>D>,>s>12>R>%7a>'>7>|;o>>̙>>I>Y=HM=HME>"_h>8D>9>,>E>>#9>&Z>pS=LZ=2=%=3=d=> />>>=˛ =rG<ܪ<5p;:d:Y;Yb>'>P> l==D==޻=p#=2<엑<%`y>pS>>=د=!={X=Y=V=u)<%<ܪ=B=5p==9=0!=k}=U<:d:d<=]=c,> />.>;e>:>1y>%->%>,> =A=q=~={a =8r={X=LZ>)$>&=~ =rG<>:Y<%=em=Z>9>pI>>;>>)>7a>>4>>N>@===i[>">w>s>x>W>~>>=7!:d:d==">IT>ذ>/>1{>y>Ϻ>M??%?/}?%?Ip>L>GW>r>+0!>??0?@$?+0!>~>oo=D<%;~=>t>>I>O>E>C??\?5$ ?O7?WzY?N`?+ >j>4>=c,>i-> 9?8 k?`E?j,?]?>E<1{;=a>2ݪ>y>Վ>E>_>? ?A??N?WC?^}?Uj?4r?>>Mn>`y??Mo?n?vT?k?B8>Ϻ>.=:Y;~ =>!>j>>>>6u>? ?(?F!?M;?B]!?d=><>}>=c,>q$T>'?B8?gB?pnU?d!?2>D=鿗<1{;Zd===鿗>GW>/>->Z>BB>?>;&>FO?v^?I? >>w>7!>pS>=c,>?_U?C?Pp?ZR=<%:Zd$>=>:>*>&Z>=c,>f 9>:>0>>OMk>==йh>K>=`>@>->>F+>oW="=.:Y;Zd<=V==q=v====d=?===I= G=.=Y=a=> 12>5$ >=>J=h="4:d:ʜ;~ :Zd:ʜ<~;~ʜ:Y:d;1{<1q<<<1{:ʜ;~ <ܪ="4="4=8r<>;~;~<^I>c>ͫ>n>-O===<$T=l=йh>%>Mn>Y!>G>6G<> G>=د=?=|;>|i>H>">_>q>:Bf=AU==d>>nLZ>6>D>Ţ> >c>7=>fV>A^W>=߂=fA>W? {4? ?Y>6u>K>=ϖ7=>Vi[>Z? ?S????w>*_>ˉ>d>Y8>Y!> ==8D:d;=a>WC>ֲ(?̈?#1?U> >>'4=>'>I>b??.?/=~?d=?NF>>>?>z=>6G<==h ;d;p=y>79>=?+?? >Դ>vG>r=>>vG>O??&+?&Z?>>>>>lN>,=,=V;:d=,=>i->q>L6>>>"==d=Դ>8D> >Re?ި?>b>>ذ>:>fV>:>=\=%;~9Y<~={a =o>1y>H>8i>`y=d===+=[=">3&v>z>><>6>]<>=c,>*>޻=LZ===:ʜ:Y:Y:Y;K;l:ʜ;~ʜ<~;d;Y;Y;1{;~:Y:Y<~=:2=d===a=h =8D=+=:2==D=O=D=q=[=:2=.=[>8r>IT>o&>f 9>9> =i[=O>|>7>k->|>z>k+>;> f=د====7==Y=8r<ܪ:d;Zd=em> >>ճ]>~>(>6P>v^>`>^}>G>O?s?"?s?b>H>d=>l>H>QK>B>>>^>A=<%:ZdY>ݩ?"?)?&?V>))>8>˿s?:?(E?IBx?UŐ?Q8?=^?>>S>>ˉ??*V?8?%>Re>GW=pS~9>_?*#??Z?>a?*#?+'> ??$\?K?cq?m\?j,?Y!?:?>$T>Ѓ?>}?/K?V2?`&?S?#>R==7!;d:Y\>v?!?8D?8?(׍?q?NF? x?'Ə?Lc>?cr?l]?i?Y?;c?>E>Z?Ip?9z5?]?gT?\+?0{>> G=~ʜ<;:Zd9Y;Y=QK> 12>>F??i?b>>v>E??+R?IE?T_?QK?@?!*?>йh>+> ? 8?KѦ?WC?K ?q>$ >%=~<=>>">>8>>>2>6P>K%? U??6? !j> >pw>V>wx>M">T?%?"h?>B>lN=йh=h =J>:2>N>Y!>ZR>QK>QK>em>o>?>>k}>t>>=>pS>>>S.>>0!>q>_˭==8r= a<є >J>J>`>K>b> >%>==?= == ==> Y8====;d:ʜ:d?=y=c,==pS==h =7!=<7b>|=m=={X==B=;c==2=d=->> >n>pS> l>^>===/=l=bZ=z===LZ>(>=c,>* ==8r<:2:Y:Y;p=.=>J>Ix>b>d>f 9>f>n><> >|>KRA> Tc=|=!=|>>4>>>|>~>=7!:d:Y<1{=>,>>>>>}>:>i[>g?<>~>>qm >t>`y>@>?r?2E?C?->e>o&=I;d:ʜ=Jw>>n> P>)>׌>ӵ>Վ>?.?#1?+0!?!5?>>O>&Z>Y!>ݩ?8?b?ls+?`]F?/t> k>K<>;=>">>?>ܪ>5?>`>>b@?N?,Q?7?*#? U>a>e{>8D>y?M?O)?qm ?x@D?n&?GI>> <ܪ;K=rG> />nLZ>&>~>0E>>>Ѓ?w?z?!`?>$T>>L,>,>hg>(?F3?j?s|?h?:>=엑2E>vB>P>>a>|>>%@>H>>v>q>Y!>> y>8D>7a?Z?J ?U)?E5? D>k-=;~ :Y<8r=p#=O>%>(>%>> >>.>C>OMk>C>$1=A=˛ =ǟ=G>9>c>E?l>v>=y6=Q:Y;~ʜ<=A^W= =d=k==3=~=l=M"=4={X= = =f=y=HM=є> 12>>)>Ph>+0!==+:ʜ:Y;#d< <%;K;<(X'<==){X=5p=0N|=3=Jw=sj=y=8r=;c<>;;5p:Zd:d>> y=,= =Y;~ ;Zdҥ>o&>>{>>5$ =ܪ==.=(X'=k> f>L,>{>>~9>f>F|>+>=y6=h=<7:d:ʜ="4=7>f 9>>y>p>|;o>pS==p#=%>>b>S>s>j>p>NX>pI>QK>.> l==h >~9>>b>1{>> k=!= =!>n>w>H>~>~>AU>> >q>ID>n=I=y<:Zd:ʜ=/+K=g>]<>4>?>>m))> |i=a==E>>t>D>N>->uq>_h>z>f 9>@>=йh=B<^W:d:Zd<=d>">Y!>t>[>"==;c=/+K=3=Z>F|>>>&v>>sN>ID>2L>pS=엑={X=<є2E>Y!>Y!>=c,>>[=y==a=P'<;Zd:Y:Y:d<%<ܪ=<<:d:Zd:d;~ <ܪ=sj==g=o=i[==d=~=V=YC>UF+>>}>>>1{>e>BB>wx>F~>3oB>GW> >`>D>ͽ>v^>==7!<7<8r;~ :d:d >>pS>>o>:> f>(>GW>Y!>Ix>,> =د=|=_>u)>:Bf>Y!>GW>w=a=7!=<2>pS> =|=`y;:p<^I=V=h>|>pS>t>n>> >+0!>/>%> ==d=`=d=m>A#>>>,\>@̾=ǟ* >V >c>_>_>hg>{>>.>%>j>Z>A =V=Y=g>GW>U?,\?n?@>>2ݪ={a :d:Y<=Ə>>i>v^>o>.>>>>->֍>O>ذ>Pp>M"=A>@>?&Q?J/?W '?H1{?u)>_C=;p:d==>5$ >d>BB>c>m>%>>>^{>b>>~>em>"_h> f>5$ >??+?\?g?Z?&>=|<~:d<==>%7a>i->3>>~>vG>[>^2>'>1{>!>v^>K u>J>`y>-O>S?#3?T?`?Rn1?v>=;d:Y<=y=>, >F|>F|>79>/+K>X>y>b>pI>F3>=-=йh> f>lN>"?(?:?%>>6G<={a :d<=Y==Y==s=O=˛ ==y6>> >=V===d=h> y>q>>O>p>Q4=<2:d<>V>%>o=\<=:d:d;K<~;Zd:Y:Y;5p;K;p:d:p:ʜ;~ʜ;Zd:ʜ:Zd;Y<#d;5p9Y:Y:ʜ;d<~<;:d:Y;<^W="4=5p=@<ä;~ :Zd;5pE=-==X%<1{;p;K=H==׌===QK<<%:Zd:Y%7a>:Bf>&=~ =<=)$>GJ>GW>5>Cw> =i[={X={a =Q<~:Y<=/>E>:Bf>OMk>8=~=V=<2=8D=q>)>R>{>{>]<>8i>z>|===@;&&*>8D>@=D=QK<є<ä=E=>>Mn>z=>ycu>X%>1y>=LZ=є=pS=8D<:ʜ;=[==I==Y=sj<<%!>D>EM>,> 12=~ ==%=a7=<(X':d:Y;<^W=B=V=Q;ʜ:d:d;Y<>=*= =O>`y>=V=]==rG=7!<ܪ<%:ʜ:Zd:d:d:Y:Y:ʜ<5p=޻==d={X=k}={a =8D<pS>%==d=U=(X'=Jw==˛ =>>==AU=йh==l=4=d== =:2B>x@D>u>C> =є=^=6P> >2E>Ix>b>c>K >1y>n>pS> >)>* >9>n=O=h r>t> >;>w>=> =鿗>޻>EM>p> a>q>@>j>f 9>F~>9>8i>Tk>X> >Y8>4s=="4;K:Zd<=m>o>hg>>>>Mn>> Y8>$1>V>|>E>{X>>,\>m))>Jw>=c,>B>n>>>~>^}=y6=V<>;d:ʜ:Y:d=Y=D>&>b>t>_>5$ > /=> >1(>[Ѓ>>`>>nLZ>F3>+>n>,>Q4>3>_h>)>GW="=QK<ܪ>z>J>E===̾=->>8D>F|>=c,>$1> l=V=߂=~>)>96>Sb>A^W> l=޻="4<<@<:2;d:Zd;~==l====k}=5==%=D=i[=-=== =y= =%=SR==n1=є==<;:Y:Y;:Zd:d<%<$T=8D=h == =d=SR={X=%=l=$>2ݪ> a=V={a ;~ :Y;d="4=pS=Y=߂=>> y>>&>.P>$> 12=O=d=8r=)=йh>:Bf>>D>z>A^W=c%>z>>f>+>=c,>V(>`y>Q4>/>8r=̾==h>pS>G>>BB> |i=@:Y;5p="4=q>8r>">* > >"_h>3oB>IT>hg>oo>av>:>=O==>3oB>ŢM??*g?}>6P> a==:Y;~="4={X=o>%>pS> >Y>q>4s>IT>T>F3>'Ə>|==-=>* >!?u)?"h?v^>L>u)=0N|:Y:ʜ<^W={a =?=O=s=1{=s=y6>K> >'>=o==pS=8r=\>>t>̙>>0E>f 9=<^W:Zd<~<==V==8r==8r= ==== G=3=`y=7!=7!=Sb=d>>IT>i>A=y6=X%;K:d;d<<$T<=<:2:ʜ:Zd:d;5p:ʜ:Zd:Y:d;~ʜ;Y;p;Y;5p:d:Y:Zd:d:d:p:Y:d:d:Y:ʜ;<%;~ ;Y:Zd:Zd;Y;1{;:ʜ:Zd;Y;Y;1{<%===bZ=A^W=Q<;d:d:Y:d<=== =pS=%=y=h =~<~:Y:d<7===%=Y=엑=o=ϖ7=q=3=8D<==Y==|;=y=y={a =8D<==t`==8r=A^W=z== ====엑="==Y=O=i[===\5=߂=d='4<~:d:p:Y;l=/=~<5p;K;~:ʜ:Zd;=={a =>=d=y=QK=(X'=7!=em=Y==I==[=em=p#==.=k}=-=4= =.<8r< ;~ ;~ ;~:d;5p<=q=8D=0N|<$T<;l;Zd;p;K;~ʜ:d:Y;Zd<>K=LZ=Y=k}=QK=Y=){X==H=;&>HM>=c,>* =ϖ7=7!:ʜ:ZdE=G=|= G=QK="4=8D=)=))>F~>{>>V(>|=Zd;Y:pEM>o&>IT=LZ=Mn;Y:Y;d<=k}=5p=C=l=3=/==u)=B=QK=Q>.P>Y==Q:d:d;~ <5<2<%;Zd:Y:Y;~<%<(X'<;~:d:Zd<~<ä=~= 5;d:ʜ:Zd:Y;<ӑb=+=B=@;&=HM<8r:ʜ:p<<<є<^W=q=QK=n=l=Rn1=){X<є;~ :d;Y<+K<:d:Y:Y:Y:d;<~< <#d:Y;Y<5=%=P'=`y=Rn1=7!="4='4=:2=h =|;=f=+<ܪ<;:ʜ:Y:Y:Y:Y:ʜ;d<~;~ ;;d;<%;;Zd:d:Y:Y:Y:d:d:Y:Y:p:d:ʜ;d<=Mn=l=%=f=%==8D<2<~;~ <~<=5p=}l=5=h <:ʜ;5p<(X'<:ʜ:Y;K<=B=+=+< ;:Zd:Zd:Y:d;;5p:Zd:d:d:d9Y9Y:Y:Zd:Y:Zd:d:ʜ:d:Y:Zd:d:Y:d;Zd;Y;5p:Y:ʜ;K;~ ;~ʜ:Y:Y:ʜ;~;Y;#d:Zd:ʜ<(X'<<><<ܪ<ܪ<<є;~:Y:Y;Zd;~ʜ:d:Y;Y<%<=;K;~:d:d:Y:d<<є=u)=;c=`y=em=V=QK=B=8D=޻<<~;5p:d:d:ʜ;Y;~ ;~ :d:Y;p<8r=[=5p=8D="4<ܪ<<엑=~<=;#d:p:Y:Y:Y;K<^I<ܪ=$===B=2<=<5p<;Y:Y:Zd<%<7=7!=QK=8D<7;1{:Y:p:Zd:Y:ʜ<><<є<(X';;;K;K;K;d;K;~ʜ:d:ʜ<<<=l====c,=?= G={a =8D=<1{==Rn1=q$T=(X';K;Y=~=3=I=={X==5p=/+K=q$T= =O=엑===ܙ==.=Mn=Q=~=n=2=йh=-<7:ʜ<====!={X= =|;=8r=d==t`>>==йh=N|=l=7!<~ |i>P>8r=<ܪ:ʜ<5="4=Rn1={a =3=pS==y=`y= fo>=ʜ=^;~ <(X'<ä="4=8D=){X<^W;Zd<#d=D=d=2==k}=;c<є:d:d;5p:ʜ:Zd:Zd;~ > 5=g=^=7!=Q=|;==>>z>@>==c,= =Zd=> f>H>V>=;:d<~ = =>E>n> =D=Y= =>=H>n>7!>C>F~>:Bf> G====y6>f 9>q>?>j> l<:d<ܪ==y6>>z> ===D=V>>4s>BS>Mn>Ph>?>A =V==HM=o>y >Y>Ғ>q>=@:Y޻>,>4s>6G<>2ݪ>n>==5=\=SR>1(>->?>k-=m > V>|=엑=,=\=bZ=8r>=Z=V:ʜ:Zd;Zd<5p;~ ;Zd:d:Y:d<(X'<==#d=5p=5p=<ܪo>> =c,=+:Zd:d>=߂=?=8r=QK=IT=bZ==>>C>av>Mn>r=.;K:ʜ<ä=QK====ܪ=>o>=鿗==y=`y=\={a =M"=O>(>i->^>we>1(=<%:d<=5p===?==ۇ=엑=g=|=d=m=:2=A^W=h = =Y>n>aB>>n>)2=d;~ ;K2E>G>8D==V:d;~ʜ<==.=H1{=h =l=D=~<%:Zd<==2=ܪ=AU=?=em>=йh=='4<>`y=ܪ={X=[=@<7<є;~ <><^I<>:ʜ:Y<=em=d=v=d=3=h =7!<%> 12=-=d=[<~=7!==Y=o> l>> l=V=I==V={X>%>EM>BS> f=y<%;5p="4=>pS>;/>A>+x=o=)=h ==> >=c,>X>c5?>YAU>9> =O=">@̾>D>i>> k>1y=`y:Zd<%=`y=I>/>Y!>av>F3>==!=o>&>Mn>t> >M">>k->3oB> 5> G>޻??(&?+ ? >=̾;Zd<Y=V=>(>OMk>Y!>@̾>M"=ܪ=ܪ>%>=c,>f>:>N>>)>t>9> >n>@??2?7jl?>D=ܪ;~ʜ;~=Q={X>E>%>/+K>C==O=>>:Bf>Z>pI>>9>ycu>M>==>a7>5???>>t=-:d:p<5p=7!=d= u====E= u=9>>1y>9>:Bf>+> 5==޻=/=I>Y>x>6> ><=:d;d<="4=8D=5p=<є==d==AU=-=B=,==v=B="4<<1{=8D=d===h=+:Zd:Y:Y:Y:Y:Y:Y:ʜ;~<%<7=C=sj=B=|;=Mn= 5<ʜ=;~ʜ:d:Y:Y:d:p:Y:Zd:Y:Zd;~ʜ<><,;;K>>)>=O==B=l=q$T=8r=D>`>C>d>V(>={X >!>5$ >8i>)2> =O===k}=>b>Jw>[>0!>_h>lN==HM<%='4==?=Դ>>>.>@>C>5$ >=~ ==={X=]>>pI>r>9>ŢM>)>t=;c;p<==l==ä=t`> y>n>2ݪ>5$ >">8r= u==a=d=D> y>i->S>˛ >̾>`>pS=){X:Zd > V=LZ=c,= G=B=|;==޻=s>3oB>E><>%>W=O<:d<><==D={a =޻= =p== =V=(X'=HM=@=(X'=7!=8r=йh>>>=c,>/=엑=T;Zd:d<<%<+K===M"= ==8D<>:Y;5p<%<:2<;:d:Y:Y:Y;l`y>=,=5:Y:p=+=D>>>>K==Mn<є<^I<<%=){X=C=E=+=[==~=[<ܪ<5p:Zd:Zd=$=>`y>> G>o=Y==/+K<7> ===`=V=Yn>(>Y==P'<ܪ=L>=X'=AU> l>>,>&Z>=AU=X'=>J>|;o>2>d>Y!=O=:Y<~=V=V>5$ >`>i->Ix>M"=!=f=>>1(>Z>>>>g>3>`>.>9?s?%?%`?:>>=I;~ :Y<5= > f>Q4>>^>l>2ݪ=t`=Y>>79>hg>>>>>o>f>;e>v{>N?0?QK?R?5$ >T><>:Y<=>>GJ>x@D>>f>2E>|=o>f>Mn>>>G<>;&>ן>>oo>A>~9>?:Bf?XV?Z?AW>>>/+Kҥ>F3>R%e>;c>=鿗=>t>G>q>>>2>c>^>K u> >D>?d=?C?FK?%`>̙>E<:d Y8=G=Y==ϖ7>>(>B>WX>i->m>_>9> f=O=V>F|>>??% >>OMk=|;:Y:Y;#d=u)=em==H=rG=em=8r=d==>>8r>>=t`==[===a7=>Ǡ>:>D6P>=;~ 9Y:Y:Y:Zd:d;Zd;~ <(X'|>J>%=йh=h ;d:Y;=~=y===>`y>J>.P>4s>%> =O={X= =3==O>(>nLZ>>Y8>ID==u):Y >(>EM>`>g0j>V>4I> =AU=D=v=^W>>y >>O>>`>5$ =:Zd%>8D>Y!>v{>{>i>BS>J=o=Y=2=>/>ذ>8?>?> >bZ=:d;~ = f==I=B> >,>ID>fV>k->X>5$ > Tc==c==O>(>޻>`>>>>]<=k}:Zd:d Y8>!>79>9>(> V=ϖ7=E=k=%=X'=\5>av>+K>H>˿s>ذ>#9==:Y:d<:2==m=%=!=K=엑=鿗= u=4==em=V=K =Jw=k}>^>M>~9>q>/=<^I;Y< = f=E={a =[=q$T=7!<7<<;p:d:Y:d:d:Zd;l<<=<7=l=D=8r>z>=\5=I=8D<ܪ=7!=em=p#=V=/+K=B>>>f>Ǡ===Q l> y=j=c,=f=8D<7:d:Y;l=/+K=a=6P=s==d==8D<%<5p<%=/+K=QK=QK=2 a>*>)=J=X%b>>,SR>* >=I==,>8D>!>>t>i-=="4:d<%=YAU=y6>8D>c5?>k->Mn>=D=8r==>(>V >> a>7>o&>f>IT>??+?+ ? 7>V=<>:Y< = > >T">|>4>oo>6G<==c=>+>_˭>`>0!>4>>>t>Pp>u)?b?:?V֎?V?9 >>>Ix>{>E>k->5l>?=߂>)>A>y>@>6>W>'>>d>Z>K?m?C ?]N?]~?DO?vL>4I<ӑb;~ =8D=|>n>H>W>@̾>=s=B>)>=c,>j>>7a>*>>>_>8D>i->ܪ?')?Je?K@?)>ܙ> |i<>:d> >b= u=!=̾=>t>:2>V>nLZ>{>>mq>GW>=> >o&>j? ? />M>[= :Zd:d<5p=Y=l=f==q$T={a =.===$T>E> > >E=O=HM=l= =йh>$1>Y!>\>%7a=<(X':Y:Zd:d;Zd<%;~ ;l:ʜ:d9Y:Y;~ʜJ>M"=ܪ=|;<(X'9Y:Y;K<7=`y= G==_>>n>8>=>2ݪ>pS==?==8r= =>"_h>rQ>G>)>Z==5p:d9Y<~=HM= =h=->>0H>U>q>{>j>C>J=鿗== =>%>{>8>d>Xp>q>GJ=:ʜ<=HM=~=є=G>@>B>n>6>/>>Y!>*>`y=,==йh>/><>]? 4?>>~9=̾;~ʜ;5p<ܪ=h ==y6>V>9>b>~><>q$T>H>A =o==&v=1{>*U>>N?Ǡ?9>d>{>=;Y:Y<%=Y=8r=h=鿗>>6G<>J>Q4>=>=o===M"=d>>n>>y6>>x>=c,=:d:Y;~ ==l===> l> ==є=pS={a =bZ=C=8D=k}> 12>b>`>Y8>GJ=,<є:Y:d>=ϖ7= <%;5p:d:p;Y<=$=V=l=`y=7!<= l>Ǡ=I=\=/+K<~:d9Y:d;<=B<=<<@<5p:ʜ:Y:d;5p;5p:d:d:Zd:d<%<ܪ=*=Sb={a =sj==<ܪ l>u)===+<><=V==^W=$T> 12> y====2>@>pI>M">:>-O={X>C >J>3oB>|==8D==>>,>S.>k->jd>MO> a> l>3oB>=l>i?_U?,\>Վ>E=f;~<=a7= >7>c~ >l]>R%e>Cw==%=2>Ǡ>6G<>iv>v^>?>BB>7=>V(>9h>z>6u?"h??'?=c,?z>2=د/>[>g0j>M >=O==Z>t>ID>d>A >0!>*>>c>A#>I>*_?(׍?Hh?GI?$\>̾=x Y8>/>:2>* >E=c,=D=s>J>@>l>f>ذ>M">{>C>">M>A1?b?,.?+? U>=;~ʜ;d=/+K=4=AU=#==D=@=k=є=B>>4s>K u>Y>R%e>2>=O>b>R>v>>~ >^2>#9=B:Y:Y;~<^W=;c=rG={a =a7=Jw=`y=l={X=;&=йh= ==I=p=|;=D=B=ä>r>8D>5$ >=y;:Zd:d<~:Y:d>%>.>n>Ǡ=O=9=p#=Mn=bZ=>b>GJ>{>we>:=s="4:d:ʜ<===a=,>>:>D6P>b>k+>Y!>79> =O=-= ==V>OMk>>>Sv>>0H=3;l:d<=E=X'=>>79>`>~>>r>IT>=V==a=+K>`>>Ҷ>>~>O>bZ=E;:Y<(X'=*=%=O> l>.>V(>q>z=>f 9>=>%=йh==pS={X> >>$/>>~>>av=;Zd:d >-v>A^W>EM>6G<>=AU={X=y=p#==ϖ7>K>}>Mk>>>+=kt`:d:d< =;c= ==~ >|>=~ =?=B=Jw=5p=Q<$T=l=>D6P>{>>sj>4?=<:Y:Y<~<7=:2=|;= =l=Sb=:d:Y;K<><ܪ<~;#d:Y:d;~;;d:ʜ:Y:Y:Y:Y;d>%>=!=+;l:d<=="> >>b=l=8D<^I<ܪ=p#= =AU> y>>n> /==D=#>F3>m>>>U=<7:Y:ʜ<7=d>>&*>/>=ܪ=l=(X'=h =I=LZ>A >A>Z>ZR>>]>'=A>(>`>?>>>%=QK:d:dn>+>%=I=pS=h ==O> y>3oB>Y!>o&>m>Mn>n>o>0H>N>v? f?> >=c,=n:d<%=Sb=2=x> =~=є=y=rG==˛ >>%7a>C>X%>R>5l> =ܪ> >hg>i7>3>˭>BB>"=/+K:Y:Y>i>޻===u)=> >Pp>d>we>0=<^I:Y;~ <ӑb=+=8D=0N|=Q=B="4=Sb=8r=pS=={X==`y< <2=+= =6P=LZ= =v="4:d:Zd;~<%=8r==Ə={X=B=;p:d<==h ==?=O=o=x=g===V=~`y>(>&===%<є:Zd:ʜJ>/>5l>&Z> =˛ =HM=Sb=+===f> l>^>.>>R==7!:d:ʜ<=l==~ >%>2ݪ>G>Mn>=c,>=m={X={a =D=bZ=>2ݪ>%>>>Y8>=l:d:Zd y>,>@>C>4s>)=O==h =8D=QK=h>5$ >M">>!>3>z=`y:d;Zd<$T=|;==ܪ> >z>> y=׌=a=a7=2=B==> 5>f 9>)>v^>U=I=8r:Y;~<7=U=M"===̾==|;=<^W;d<є=>>,>(=엑=p#< :ʜ=<ʜ;Y9Y:Y:d:p:Y:d;l;K;K;#d:Zd:d:ʜ:d:Zd:Y:Y:Y:Y:d:d:d:d;1{<5p<:2;p:Y:p:ʜ;~ʜ;Zd:d9Y:Y:d:ʜ;5p:d:d<~<$T=@;&=V=*:Y:pK>==<:Y;1{=u)===˛ ==}l<~ ;d<(X'=$==4=D==t`=Y===>B>;/>Z>A^W=B=Rn1;p;Zd==y====l="4 l>=={X= =?> f>GJ>nLZ>Y!>O=}l;d:Y>=c,>.=g=Jw;Zd:d>)=د=}l>C>A^W>Y=d>F~>C>Y=@>pS=O=V;d:Y;:Zd:Y;5p<<5p< ;:ʜ:ʜ;5p<><^W<7:ʜ:d<~<^W==5p=7!=@<;d:ʜ;<^W=8D=`y=8D<~;Y:p;p<~;~ :ʜ9Y:d;Y:ʜ:Y:Y:Zd:Zd:Zd;Y;~ <;1{:d:d<~<%;:d:d;K<><=8D=y=I==Y=h==bZ=2=@:ʜ:Zd;d<^I<5p;;~ <~<5p<>;:Y:Y:d:ʜ;Y:ʜ;~ʜ<~<><1q<^I< ;~:Zd:Y:p:ʜ:ʜ:d:ʜ;~;K;~:d:Y:d:d:Y:d;K<~;;Zd:Zd9Y:Zd;K<~;1{:d:Y:d:d:d:Zd:Y:Zd;~<<=="4="4=%=u)= a=A^W=[=4=?==k}={a =H1{=A^W=A^W=5p= a=~<<:ʜ:Y:Zd:Zd:Y:Y:Zd:d;Zd;Y:ʜ:Y:Zd;Y;~;;~ < <~;K:ʜ:Y:Y9Y:Y:Zd:Y:Y;5p;1{;Y:d:Y:Y;#d<~;5p9Y:p:d:d:d:d:Y:p:d:d;5p;K;K;~:ʜ:Zd:Y:Y:d;l;<~;;~ ;d;~ <(X'<<5p<%;K:d:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:d:d:Y:d:d:Zd:Zd;Zd;d;K:ʜ:Y:d;~ <~;~:Zd:d;K<~<~;~:Y:Y:d;=Y="4<=;p:ʜ:d:d:ʜ:d:Y9Y:d<~<~:d:ʜ<%<<<%:ʜ:d;K;d;5p:Zd:Y;5p<~<~;5p:d;5p<<<ܪ<$T<ܪ<<2=%=;c=A^W=(X'<;Y:d;~ʜ;~;#d;Y;Y;d;~ <#d<=Y=8D=;c="4<;Y:Y;Zd;K;p;Zd;Y:ʜ:d;~<^I<$T="4=.= 5<5:ʜ:Y;Y;p;:ʜ:Y:Y:Y:d;d;;Y;~ <~<;Zd:Zd:Y;d;~ ;;5p;K;~ ;1{<%<є=HM===p#=y=== =8r==<̾>;K:Y;5p< <>:Zd9Y:d;5p;Zd:d:Y:Y:d;=8D<=8r="4=2=5p=;c=Rn1=8D<$T<u)>>Y>=o=O==|;<;5p;~ =@;&==s==pS=V=Jw=V=B={X=йh> f>">+>ҥ> =LZ=|=^=bZ>>`== u= ==~;~;~)$>=-==\="4=h =X'=O=鿗="==0N|;~ʜ;K=em=AU>>pS==p=M"=pS====د===N|={a =8r> =9==p#;Y:Zd:Y:Y:Y:d;K>>=H==AU===E>;c>* ==k==8r=pS=>>>9>b>o&>]>@>* >>= u==~:d<=5>>k->>I>>>C>>U>*>BB>|;o>Ph>5l>>=9=v=/+K:ʜ;d= >>d> >>Y!> =T=ǟ=y6>>f 9>>X>6P>S>Y8>ZR>:Bf>#9>E==:d:d=QK=ʜ>T_>|>y >;c=A===AU>>R%e> a>> >N>n>;/>> y=ӑb=<:Y!>====a==>>E>g0j>iv>Q4>+>=<==3=;Y:d<=V=޻= G=~=Sb=D=V=p#= =?=s>>Ǡ=LZ=Y== =7!;;d<<%<7<8r;K;Zd;d<<:2<<==u)<$T[>j>I>@̾===c=V>pS>Mn>d>>aB>$1=O= =[=|;=X'=̾>=y6=={X=2:Zd;~ =->ID> >&>Sv>>ID>> G>5$ >q>q>>x>Z>}>5=== u> >5$ >M>D6P>pS=p<%<:2=2>k+>#>->x>>~9>C>A^W>av>>ڈ?E? >%>,>fV>ҥ=l>o>8D>t>M">[>]<>B=l:d;d=>>F~>>ѓ>)>>s!>B>A>c5?>>˿s>hK>>5?>>^}>=> l>;c>>?>?>rG>=y;:Y="4=>Y!>f>>i>8D>J>>>;c>`> a> >>es>j>&Z==c=O>pS>OMk>{>>{>>F~==p#;;Zd=Mn=˛ >`>pS>>=ܪ=J=>K> >J>*>2ݪ>$>=^W=f=QK=l=>>>q>b=X'=:ʜ;Y<$T=bZ=B=={a =8r== ==pS=Y===p#=%<5p<>>`y=̾>==H<;K;l;d<= f=2="4<;~ʜ;Zd<^W=5p=l==|> >:Bf>o&>7>>F|=B=p#<> |i>F~>`>+>)>}>>/==~<==QK=:===O=4=8D;~ :Y<2=h ==v= >%>Xf> >p> >H>>6G<=D="4=={a =?=7>K=엑=h=\<1q<5p=){X=p#==\= >/>{>>8>>_h>f> =)<===h =SR=йh=-=i[==B<:Zd<~<2==5p=y=,>%>79>A>/>`y=Ə=<%=8r=<^W<#d:d:ʜ<~<%;:d:Y:d;~<5p<=/+K=\=p#=n=Jw=[<%<:2=3===8r=7!<<~;K.>IT>5$ =A=Ə=kt`=Sb=sj=\=>/>]<>k->]<>C>.>C> 12=ܪ=d=1q;5p<ܪ= u>Y!> >̙>db>E>n="=^W=K>M">nLZ>y>d>\>y>c>q>f>IT>&Z=鿗= r> >? ?y>w>t>>o>">^}>ן>??\?q>7>>>~>R>=?=:Y=8D>@>?b?'?.>Z>`>5>>2L>>H? Tc? 8?!5?Y>>6P>>>a7> ==9Y<$T=> >\?s>s>}>{>(> >* >q$T>??9?^ ?`y>>0!>>t>F|> =@*U>f>N|>>~>/==AU>>9>>h>M>M>>#>k->GJ>3&v>u)=c=7!;~ :Zd">n>==k}=%==>t>GJ>i>k+>Q4>){X>=y6=|=9=8D<:2<>< <=.=;c=8D=~<(X':Y<=?>+x>]<>V>$=I=?==> Tc>A^W>vG>d>[> G=Y=l=8D=Jw=.==,= =d=7!;~ʜ;d={X>U>n>5?>>D>o&>9>7>Tk>m>^{? 3?>>jl>i-> G==>>GJ>lN>hg>2ݪ=K=0N|:Y<>`>~???3?t>0E>>>>g?%-?DO?K?94?(>/>>K u>Mn>q>>Re>]>c>W=c,%>=? B0?%?(3?>j>6P>^>?I?B?[u?aD?T_?.N>b@>$>z>4>6>??R ?7=>2>=C:d Y8>;>;o?"??ғ>b>|>8>|?K?C>)>:>5>?<?m?&l?O>`>/+K=;d;K=k>GJ>,>6u>N>Դ>*>>>>'??.P?8 k?(X'?n>>>R>Y!>>ܪ??Q>L>>=rG<~<=q>">^}>o&>b>K >GW>X>vG>>~>c>>>es>]<>n>b>>:>_C>S>:>ذ>C=D=$;Zd 12>>J>z>([>3oB>,> =Y=/=m=f=>Ǡ>(>/>pS=|=QK<(X':ʜ={a =[;~ :Y:d<1q= f=bZ= =pS=l=V= a<^W<~:Zd:d;d<^I y>&*>HzG>~9>pS>w>_˭>=="4=[=7!=B====<ܪ:d:Y<=3=AU>%>$>7!>^>NX>??\?Zn>Վ>> l=={a =Ə=鿗>@>,>"=߂=<59Y:d=7!=>A >EM>Xf>k->>'??,?:?.uM?ғ>:>;e===~ >+>bZ>vG>V(>t=c="4:d:ʜ=QK=ܪ>.>U>c>v{>A >v??7?DH?7?R>>C='=>>=>}l>|i>n>.=йh=;c;Y:Zd=$=>r>5l>=c,>GJ>|>?+?>?)i%??>{>o>>=h=I=>,>`>p>UF+>f==*:d<5p=bZ=D=Z==B>n>`>>N>7>ɝx>v^>1(=6P==3=>|>n>.> G=2= u> >.P> =={X=:2<ܪ=Q=p#={X==O== =~:d:Zd;l<~<5p<ܪ=Bu)>%> >|=V=D=SR=h <>7> a>>ذ>R>=v=f=M"=T>-O>>>>?>>>f>GW>0H>%=˛ ={a %>uM??NX? >Վ>z>z=>>K u>D>;o?^ ?? 7>->;&>>o>^> ==2:Y;Y=k>lN>?$8?6n?.N?b>c,>`>,>A>???(3??'?Ap?.>?>>k>D>v^>R%e>E=|;;~;5p={X>~?b?+?Ap?94?x>)>>A>c5?>4??8?M?N?=>?m? >T>ˉ>es>c> =l;:d=8r>OMk>D?Tu?.N?(&? d>>k->8>Y!>?s?+T?B?BS?.,?>C>>{>->M==bZ;K=~=A>>?NF>_>y>>}>.> >+>{>>I?Ip???Ǡ>\>>ذ>a>Xf>==~:ʜ;ʜ=h =A>R>>~>F~>=T=E=">t>^I>ذ>!>:>@>wx>GW>4I> a>=I=7!<>:Y:Y l>> > =y=є== =t=u):d:d;d<<%<~;Y:Zd:Y<<2=8r=E> f=y6==lb>>y>vG>8D>Y> >E>Mn>y>>>>>/t=鿗=E= =O>u>>=LZ=7>b?Q?V?P>7>)>4>?>x??>6>J>?Z>l>̚>>װ>)>=c,=SR96>$/?BB?9?A?1?>LZ>^{??+ ?XV?n'?t?k?Q? a> >U>Z>ֲ(?=Z?/?8?!>j>6G<=rG:ʜ:Zd=|;>SH>?(&?J ?P?F?(׍?b? kk?vp?K ?l?{*q?}?z=?h?>? |i>f>ڈ? !j?7F?WC?^q?NN?}>޻=ǟ0>̾>?1D?<.?H ?=?$o0?O? b?!?J?ka?zs?|n?y??f?۬>^{?-?>+^?]N?e2?V2?$J>==:d< =,>|;o>5??`???HM?>B>}? ?*#?Ph?fk?l?eE?L?f>5?>L>$ >$T?$?J/?Rn1?B?)>=<=){X;5p:Y=(X'=ܪ>OMk>>>s>S> >J> >*_??%-?/=~?%? >̙>>`y>`y>D>7??{F? >>?=SR<$T:d:d<===i[> 12>>/+K>A>U>f 9>o&>a>>>;>:>A> ==߂>>U>j>>:>:Bf=D=8D<~:Y<~<7=B= ==>Y>> y=LZ=y=-=I==f=8D=+=;c=f=c=))=l=ܪ=f=;d:Y;Y~>`> >u)>f>0H>.P> ==X%= =[=*=h =HM=Ə=M"=A^W([>?>K >`>>}>9>q>v>M>U>X=Q0=%=5=E>b>.>=>%7a=~ =~ʜ 12>U>t>޻>>n >Xp??1(???3oB?!>J>Sb==">>pI>>a> >O==;c;5p:Y<$T=ǟ>A^W>>>>v>??,\>">>Y!>>l? >K%>E>"=):Y=HM=m>Vi[>BB>db>Ȟ>_>FO?v?F~?_:?g7?^J?BU? >z>2ݪ>&*>vG>Վ??f?n>>5l=Ə<<~ =>:>;>8>T>&v>Ηm?l?.L?N->{>>> G>`>є?O{?w>#>&Q>n=pS?>=`>b>hg>f>z>l>B?I?>?(> >>&*=B=o>* >{>y>>>H=s=Mn;5p:Y>%7a>V(>>.>~9>EM> =p=޻=^=">޻>:Bf>C>([= = f>n>= u=3=YY> >!>> l=鿗=˛ ==l<9Y<^W= u>]L>R>>>> =ä=.=)=ܪ>C>>`>1{>p>>>`>>=>@=I=f<8r:d=`y>GJ>Ҷ??$o0? s>F>G>2ݪ>> >hg>9?b?%m?'?3?b><>>>v{>79=߂=V:ʜ;K=>)? U?7?J/?B܇?!5>ݩ>}8>9h>Rn1>?r?>̙>c>n>HM=?݅?B&?Q8?L?+BT> >>V >y>Վ?"̚?L?\?]*M?Pj?2^D?HM?+>>p>a>&Z={X>}??.L?Cn?M>>GJ>k->J?3?BS?S?T_?F?&l? B0>#>Mk>>qm >=HM<8r:d=V>!>J?r?HM?Y>N>>A>>9>>\? ?/O?.??>۬>f><>>:=AU=Sb<~#d>:>~><>n>%7a=Z=h=鿗>2L>:>'><>Z>U>>{>>`y>F3>$=B=<є:d:d<=rG===Q0==%=QK=H1{==!=A>&>B>C>,> ==AU=6P=4=`y<ܪ;~ :Y:ʜ<$T=Y<==鿗==k}=y=M"=N|=->">"_h>`==a=8D>nLZ>|>s>>j>7!>n>.P>hg>J><>>6u>,>n>&=="=>>:Bf>@;&>%==8D;Y0>~??#?>>>>4??--?N:?W?Oq?/J?>>>u~>M">?9? >))>=_=~:Y:Y=kt`>8i>?%?H?Q?J ?+0!?b?z?K?Aݼ?g ?xC?|?y,?hAg?BS?a>v>H?b?,?Q8?YT?I0E?>=R%e>FO?4?V2?_G?Y?FXL?(?P?4%@?[?xC????x?[u?* ??r?#'?T_?n?uhK?j>?BS><>)=7!:ʜ:Y=em>/>F+?&?M;?X?Tk?BS?*g?$\?8?[Ѓ?wx?%??nh?xw?[cQ?)? Y8?Ip?(3?ZR?t2?x?q6?Mn>>4I=<5p:Y|>{?$8?5=?2^D?$8???"4?D?d!?v?z+?wx?em?B]!?%>+>?)?F~?e:?mq?a?8>ۇ>$1=lg0j>4>>))>T>_>ݩ>K%? b?)i%?F!?O7?Hh?,A?9>>>J>I? x?2?B ?0 =엑=\`y>5$ >T_>lN>d>~>.>k}>v>Ηm>x>>>v^>MO>>>J>C>>>X>̾>:>=)<;K:Zd:Y<>=@=l=2=>>2ݪ>7>* >>>$>([>%=_=SR=y=y=q=>J>* >z=׌=|;<2;Y:Y:d<<7=m=&v=g> > ===˛ ===8r== > f===E== =V=<>< >$>2ݪ>5$ >0>.>9>G>BS>=|=3=V=V=[=D=#>>==d=Q;Zd:p<>=V=د>2ݪ>j>I>8r>`>>U>M?>E>^W>t> ==c>>R>>~>12>9=c,D6P>޻>i7>W>̙>`?O{?#9?Aˉ?L?B? 8>7>vG>>z>nLZ>c?\? ? E>:>5$ = <%;5p=p#>pS>t>8> >N>? 4?$\?Lc>?bt?j,?a?G?Y>$>K u>R>=?6?Ek?P?>?>a=̾><;l= >)$>!>L6>m > ?O{?_?+0!?R?i ?o]X?g5?N`?~>n>`>k->l?*#?V?`?Q?v>k}=鿗=8r:Y:ʜ={a >>|>>ڭR>5?>3>F??@?Y?a?W%?8i7?> G>GW>]<>??M;?XW?G?.>=O<ܪ9Y:Zd=Q=O>:>> >4>?>{X>AU? 1?%?.P?"?I> >Ph>z>/>>b?'>2L=pS<5p;~ =V=T>pS>2ݪ>2E>%>.>Mn>>>S>>pۈ>.=LZ=O=))>%>pI> >^>>:Bf=̾=Y:Zd:Zd<~=Y={a =HM==M"==a==;&=i[==c=:=y=3=޻=D=>r>P=e=0!= a:d:Y;Zd<1q<`y>> ==3=[<(X';~ >r> y=LZ=Y=N|= =7!<(X'<5=2>Ns>>;&>O>we>=h=rG=p#=>/> >>>>v^>q>Mn>.> =|=p#<(X':d=p#><>I? ???%>N>f>$\=߂=>O>?Ǡ?R ?!?NX>~>&>>%>f>*=O=<є:d;d=>3??0?D?;?>>i->%7a>;c>~? ?5=?Lc>?M?>|>A >b>Y=M"=O>D?b?;0?M=?FK?%7a>x>>?>`> ??HH?XV?Y?L>?,?>>Ѓ>N|>{>n=X'<;=!>}8> ?)?=,?6?N>>o&>5>W>??>?Qg?Q8?BJ?#? j6>>>c>k->=<:d=n>%>>?? >^{>2g>0H>Ǡ>([>j>??,A?+?C?>X>h>?>}8>9=AU=`y<><8r=>)$>I>>>aB>=|==O>%>>X>>>>>|;o>av>F|>$1=~ =<ܪ:d:Zd+>Ix>KRA>3&v>r==_=|={X=h <$T<~:Y:ʜ|>`>="==V=8rM>k}>>>n>5$ >޻>>A^W>%>>>N>{X>z>4?>=I=->`>2E>:Bf>pS=h=8D;~g>>>?>~>Q0?S??>\?Mo?G2?+0!? >̙>>|;o>>̙?9?>j>`=y6=:d=:2>'>?{F?B8?O?If?.?NX?M? ?2?\b?sj?y??v?e?DO?HM>q>X??-?S/?\?M;?">v^=<:Y:Y=h >+>Վ?)?QK?]K?Z?I?+?R ?,A?R?r?}8?ۚ?~ʜ?x?]> =QK;=7!>Y>6?R ?Iw?W%?U)?GI?.L?$J?3?T?s?}?g?~i?wx?]?2E?? ?)V?\M?v0|?zs?t{?S.?&?>F~=<2:ʜd>?!i?6:?8 k?*g????=,?]?r?x?v ?fl?GiI?>e>'??J/?h?qm ?gB?B >LZ>9= G<=;:Zd:Y=Q=D>_>>K%>a > >d>\>엑? 7?%?@$?M?Hh?1?+'>_>S><>,??9?IE?9g?><>=B< <~:d:Y<ܪ=@> >GW>nLZ>>X> a>>V>>>d>t`>N>>k->7!>([>Ns>>˿s>d>Վ>G>%7a==,< ;K:d:Y<=+=@=> >$>79>8D>(>%>f>2ݪ>9>)$> Y8=O={X=k=>K>#9>9>+==y=8r<^I;:d:Y:d<%=~=8r==>`>Y>|=O=I=Ə===Mn=@= f=u)=2=p#= G== =7!= f==;&=x>>u)>|=O=p=X'=)=`y=@<7u)>/>:>:Bf>2ݪ>* >,>7!>.> ==y={a ==d=s>f>.>J=D=QK;~ :dA>{>{4>>P>>J>>4 >C>)>Xf>= u=د>n>>I>:>a>pI==$:d:ʜ="4=I>V(>a>}>ѓ>c>O>{?I?.?;Sd?0?%>1{>d>>2ݪ>ذ?9?2E?B?,.>i>i-=+K<5p;K=>$1>)>L6>j>m??7=?f?>a?WC?_?VD?8 k?>>R>u>-?:?b ?l,?_?.>!>|<:Y;=d>9>k>>?E?9? ?#?H1{?^q?e?]*M?A'? B0>0!>iv>x?9?Pp?qm ?x?n?F>T>= a:Y;d=)>(>>ɝx>v>&>>?s?1?M?U)?L>?(>N>pS>WX>>{?GiI?jЕ?s4?gi?9>>=8r:Y;Y=;c=LZ>Pp>M">>MG>}> >?d?"? 8?8>K%>>T">,SR>Ph>q?2z?J?UŐ?D? >q=D+0!>F3>F3>7>5>K >v{>>>>j>/>B=>u)>M >{X>}?:>d>6>b=<є:d:ʜ>B>R>.P=AU=V;Zd:d<(X'<2=8r=){X=8D=H1{=P'=V=p#=/=d= G=p#<ܪ:d:Y;Zd<%HM>l]>f>}8>:Bf=-=f=Y=Y==>;/>n>{>>k->V>96>z=9=|==~:d:Zd=,> y>>\>l>&>O>Mn=o==>>j>H>?M>鿗>;&>>>>`>2E>b=a<ܪ;d=>O>Դ?(?#?>}>N>,=t`> y>sj>]F??*?+R??E>ߧG>+>?>u>2ݪ=AU=V;~ʜ< =SR>i->-??,?%?\> >@̾> >)$>ذ?I?(??'?@?,ҷ?_U>>F+>s>>GW=x=<>;K=k}>G> ? ?R ?>$T>o>/>> >P>}?"(?6Yo?6n?$? >3>ǟ>3>E>=c,=y6=p#<>:d=8D> 12>:>>>߂>`>H=B==>U>???!?<>؋W>~>G>~>Mn>==.;K<~=y> >Qܙ>t>c>(=йh= =h ==>Rn1>A >>>>|;o>R>:Bf>!>=D=V<%:d<~=8D=k==N|= =(X'<<=Q={a =6P>r>4s>79>ҥ>=AU=={X=l=2<~;~;d<5p<=5p=3={X===p#=7!=Q=Rn1=SR=|=;&=9=em=7!= a=5p={a ===ä===A^W=<^W>`>I>pۈ>?> y=йh=ǟ=>/>hg>u>>z=>GJ>pS=鿗==!=1{=>8r=AU=Y<=:d;K=B>>q>-?>m>of>N>hg>a7>N>Ѹ? 7??? > >0!>~9>Xf>`>M">RA>>i7>Tk=!<ܪ:Zd<2=|>{>>E?#'?5Z?0?v>>>!?йh>>ѓ?(?6n?D?/K>>^=<8r:Y<==->l? ?7jl?K?H?5Hq??D? ?) Y?Q8?k.?uC?rP?dF=?HC?P>6>b? 5?<?^?g?[Ѓ?->̾>=8D<~:Ya?b?,?D?E"?3?f? ?R?.,?S?k?uJ?s4?eE?J?!`?>?s?FF?f1?np?e ?>O>1>* =8r+> k? ?"?%-?? Y8>?O{??9z5?U3?a?^I?O?-? f>6u>N>d?+?U|?`oy?UŐ?)>v>n= = 55$ >>ѓ> >؋W>1{>6>6>Դ???(&?([?3>_>ŢM>>Y8>~>?,o?.L?#'>e>= ={a =~7!>X>i->m))>i>]<>[Ѓ>t>z>!>>,>>V(>&>pS>5$ >we>$>I> k>> /==2<ä<:2;~ʜ;Zd=~===>>>%> y=x>>J>">HM>=Y==HM=0!=>>n>)=Y=h <=<><%;:d:Y;d<7=kt`={X=O===F+=D=d=Cw=)==\=2=@=%=){X=Zd= =k}=8r=*pS>n>>pS> y> |i> >==d==l={a ==Z>>.>=ϖ7=];~ :p<=7!=̾>!>V(>k->k->l>o&>}l>.>>%>fV>==c= u>z>I>S>~>=>o&=o=Y:d:d5>6>$>$ >q>L>U>C>V>4I>>&Z>,\??3]?E"?0F>hg=Ə;d;Y=V> 12>{>>n>@ >5?>>5?>=?\?+T?7jl?*? ,>I>o&>:Bf>f>⣧?=<;=[>>>}>x>q>b>]?D?vp?88?B?5p?>%>_C>Mn>:?_C?RI?s?yQB?qR?L>Ţ>%=;p={a >%>z=>q>Mk>G`>Q >̾>>v? d?"q?*U? =l?NF>>oW>BS>{>>e?K?m?vT?k`?B>͘>E<ܪ:ʜ=$=O>8D>~>ذ>E>w>3>A >;&>Ţ>ܽ>߂>>}8>8i>>GW>D??Oq?Z?Lc>?>=<>:ZdpS>/+K>/>n>>+0!>=>WC>em>\>=c,>pS=G=g> 12>HzG>D?=H?O>>K>Ǡ=8D:Zd;Y>Ns>em>;c=y6=^I;5p:ʜ<5p<ܪ=u)=Y<=<^W >&>J=Z=="4<%;~ <= =s>>>>=2==)=V<$T;:Y<=>.>>BB> a>ID==.=){X=H1{=!> >o&>o>>4>k->G>,> y=ϖ7==@;#d:ʜ=8D>|>~9>̾>߂>ͽ>!>/=̾=5=>pS>:>0E>q>ܽ>ճ]>O>>rG>HzG>=AU=~<;=h >>>ճ]>j><>~>A=׌=^=O>:Bf>}>"? ? 4>{>->c>>jQ0>8D>|=a<;:d;Y=A^W> l>|;o>>؋W>1{>>,=;&= =J>5>>鿗?_C?D>N>>>|>[Ѓ>.P=o=M"<:d:Zd4s>~>!>^>A=Z==h =d> |i>lN>D>$/>>>v^>g>F|>)$>==V<>:p:ʜ=Q=h> >> 12==V<7<ܪ=<є=4> >Rn1>~9>}8>ZR>0>r=N=O={X=em> =))=^W==8r=QK= ;~ʜ:d:d:Y9Y:Zd;Zd<%;:p:Y;~7!>v^>,>~>>4s>=~ > >EY>~>>H>>y>_>79>q>r>%7a>Luq>e{>==-=em<%:ʜ=[>u)>o>3? ?E>B>>k->[Ѓ>f>>E?Q?&Q? >>db>)>{>>>}>P>'?>>w===;d;~=>.>:?q?v?BB? E>ۇ>>>)?? a?5?8?*g?q>&>db>/>jl>?%?3]?$>q>`=SR<$T;~:Y:d=`y>>}?d??z? >1>4>6>^{? 5?%-?:?=>?-?>j>8>.>ŢM? ?1;?B?2L?> =׌=;c< ;p:Y:Y<%=>em>U>N> >->U>d>>>?S-??";??->>8>>~>K%? s?+ ? 8>#>~='=V<7Q4>>?>G>q>lN>Y!>f 9>`>h>۬>T>j>q>X>^>EY>d> >O>d>u>~>2ݪ=^=A^W<$T> >+>&*>> >>>7!>av>v{>h3>B>==Z>>,>`>>nLZ>* =!=Mn= f;d:ʜ:d |i==l=7!;~ʜ:Y:d l>>">%>%>+x>5l>=c,>8D>==l=>=Ə=>:>4> >>3oB=<:Y:Y;~ =V=>4s>b>pۈ>k->j>v{> > G>8>E>x@D>79>==B>IT>ˉ??!?>>>*U=V:d:Zd<=>([>wx>>>>>m>;>є>>->ي!>>qm >.>>,>?}?M?Y!?K ?!>7==;d:d=[= u>=c,>4>/> >>?> >>(>>>>^>?> >EM>J?1?`8?k.?^?+x>{X=̾><%:d==>,>tE>>o>3>>M">y>Ηm>>RA>[>pI>4?>P>=>?(׍?Y?ein?W?#'>D=̾;:Zd<>=/=>1y>Q4>Tk>C>=c,>Mn>m))>4>>4>f>7!> =B>>>6?0{?C?->nU>GW=/:d;d=Q=޻=|=t`==߂=y6=>>>%>f>> =B==h=O>J>>>>ɝx>i-=ϖ7<$T:d<~< =D=p#=q$T=n=n=p#=l=p#=8r=y=~=={a ={a = =4=߂>n>5$ >=h="4:d:Y;d;:ʜ;~<><<==Q= f=~=+=Sb=p#=h =.<<>P> ==|;<ܪ;<>=1q= =#>)>'> />|=ܪ=?=8r=.<:d:Y8r>?>ZR>C> y=4="4<="4=-> |i>EM>k->k->S.>79>>===8D<^I:Y:d<ܪ={X> G>[Ѓ>vG>^}>=q=5p=~=kt`=|>,>z=>>N>>U>2ݪ>pS=-=I=l<%:ʜ:p<=pS> />F3>^>C >Ǡ=pS=@=HM={a =Y>+0!>vG>>V>{>>IT>([> 12=AU=0!=]<;Zd;~ =0N|=є> >z>8r==(X'<<ܪ=K =>>@>i->g0j>D6P>>K= u={X== a>J>==X'=B=A^W<=~>)$>n=={X=bZ=+=A^W=k}=O>|>.>%>=엑=7=O===I=h=d=QK >aB>`>V>]<>J=,=SR=> />8D>[>{>~9>f 9>@̾>,> >> >?Z>U>8i=엑={a .P>v^>!>i>G>U>J>=H>">M >>>>p>J>BB>|;o>WC>EM>F|>n><>p>q>ID= u=/+K;~ :Zd<>= >">4>J>i>>j>1y>>,>b>>*>6P>+>8>E>^}>Jw>Xf>l>>ֲ(>>~9>=kt`F|>_C>`>}8>Mn>"> |i>%>:Bf>pI>&Q>>d=>~>_˭>:Bf>.>>=>pI>̚>> >jQ0==h =kt`=I> >79>0H>==1{=Y=>#d>M >c5?>Y!>;c>>|=> >,>[Ѓ>{>>g0j>!=v=7!<7<<1q;~:Y<~=8D=Ə=Y=O=є=X'= =f===>[>b=i[=?=d=d== =>=鿗=d=+<<>==йh={X==QK=V=pS=йh>>)2>=,=QK;~:Y;=/+K=d=F+=$T>> >r>n>3&v>=c,>8i>==h==d=_>:Bf>M">t>E>=c,=+K<^I:d<ܪ==>Cw>'Ə>$>* >8D>K >i>we>k->F~>= =2=˛ >n>ҥ?=H??>k> =~;5p=1q=h> >.>6G<>.>1(>A^W>_˭>~9>>}8>X>+x=\5=D=鿗>A^W>ܙ?o?0?>йh>,=B:Y;~ʜ=*==>>>">t>/+K>F3>b>n>b>A>z=-=;&=V>:Bf>ǟ?Z?(׍?>U>ҥ=<є:dB>%>n>+>%>u)==h=\=2>u)>^>>><>~9=ܪY>`>>W>`y={a ;:d;K;d:d9Y;~ʜ > y==|={X==H=, > 12==2=%=[= f<~:Y%>==9=~ʜ='4=C==|=鿗==o==AU=ܪ=_=_=ܪ=y6=#=O=M"=8r;~ʜ>f> 12=йh= G=V=z=={X=<>> > ==ܪ=د=_=-=> >>o=!=8D=~==%=\=n== =>=e="==!=;&=̾>=B>E>.=e= =*;d<% f>`y>>d> |i=h :d:Y;d<^W=k}=7!=]=5=\={X=SR=0!=d=l=QK==%=8D= =>%7a>A>"==+:Zd:Zd;K<є<̾><<~:d:Y;<%<%;d;Y:Y:d;1{:d:Zd:d<^I=Y=Mn=h =bZ=7!<;d:ʜ<=~=Y;5p:Y9Y;d<є=Q=~<Y<;~ :Y:Zd:Zd:Y9Y:Zd:d:d;l<%;d:d:Y:d:Y9Y:Y:Y;1{<="4===@;&=5p==Y=>=2===8D=Q<є<8r<%;l:Y:Y:Y:Y:d;K<~<~<<Y;~:d:Y:d<(X'<ܪ=Q= <ܪ=%=2=[9Y:Y:d:d:d9Y:Zd;~<(X';;K<%;K:p:Y:d;#d;Y;Y;p<%<:2;d:d9Y:Zd;5p<%<ܪ=7!=rG=M"=@=`=l=%;~ʜ:d<%<=u)=2=0N|=8r<<2<<;5p:p:Zd;p=Y===@;&="4;d:d:d<~<<%<Y;~ ;:d:Y:Y;~ <<ܪ< 5>> >=H=د==8r=:2=C={X>>=V=Sb:d;~=%= ==Y==a=f=M"=?=߂>Ǡ>>pS>>=={X={a =2===!>HM>/>Ǡ=B:ʜ:Y<8r=8D=f=f=HM= ===2=I>|>>E==O==B=0N|=D=8D:d:d<><ܪ=@=7!=Sb==H=k}=== u=|== = =V=8r<ܪ=9h=|;=.=޻=y=u=QK=/+K<$T< =='4<;:Zd<%>=r=X'<:ʜ<=/+K=p#=/={X==6P=2=d=h =B G>,>%== :p<:2=~=H1{=|;=M"={X=+K===8D<<:2<8r= f=[=d=>P>'Ə>%=<=:ʜ=ܪ=y=/+K==H= ==Rn1=5p=[pS>@> |i==l=D=k}=׌>.>%7a>5$ >9>0>=-== =|>:>|i>V>WX=O<:ʜ=Q=> |i>.P>79>n=엑===׌>>7>Mn>b>i>\>:Bf>=йh=>>es>鿗>>>==\:ʜ=8r=^>>$>/+K>==;&= u>B>* >GW>_>n>rQ>c>=c,>u)="=>&Z>.>?>H>[Ѓ=:Y:Zd< =p#=^W>K> =B=O=є=">>%>=>IT>Qܙ>Ph>?>t=y6=E=%=y6>we>ơ>ֲ(>c>* =8D;5p<2=\=={X=d===̾=-> y>z>t>>u)>b=Y==V="4=c~ =V>>]>Y!>(={X<>:Y:d;K<Y:ʜ:Y:Zd;1{;d:d:Y:Zd:Y:p<~<є<=<ܪ<;d;Y:p:Y:Zd:Y:Y;~ʜ<(X'<;K:d:Y9Y:Y:Zd:Y:Y:Y:Y:Y:Y9Y:Zd;KJ>.>=ܪ=P':d:d>>%>B=O=d=~ʜ=p#=[==O>">^>{>i>* ={X<:d l>>HM> =d=0!=3==.==>=c,>>ذ>>G=Yo>Ǡ=LZ==pS=p#=m==4= >79>~9>'>6>@=<%;Y>F|>f 9>Q4>u)=B;Y:d<> ==d<<~ <$T<<(X';~ʜ:d:d:ʜ;~<%<є=8D=|;=[=U<:ʜ:Y:ʜ;l;5p:d:Y:d;d<5p<(X';K:d;Y;<~;:d:Y:Y:Y:d:Y= f=\=s>>=׌=%=Q<5p;p;Zd;K<>>z>">==em=<2b>>>>==f=@;&==<=~=+=<є=8D=Q<7==){X=7!="4<2;5p<=5=O>>=엑=2= =bZ=/+K=8r<=[=+=8D=2 G>!<7> =c,=B>:>+>$> ==d=f=i[>>>5$ =q,>V(>`>C>,\=?=޻=6P> Tc>79>ZR>{>>:>~9>]<>+>> f>w>5??M"?Q>N>k-=:ʜ<:2==H>>EM>t>~9>c~ >,==> >:>i>>>0!>8>V>X%>(>B>a?w?BS?F3?%>> 5<%<:2=sj=>j>vG>]<>,>`y>>%7a>T>>ذ>x>$ > >%>`>.P>G>Sv?%?L,?N?0>>>>:>EM>4I>Y=LZ>>$1>MO>q>j>ذ>A >>vG>Y>z>? 4?0H?6Yo?>=엑;K:dK==ä=̾=B> >,>C>Rn1>Zd>Z>IT>)$=x=c=!>pS>><>#>>=>>>==鿗=O=SR=u=2='4=}l=ǟ>>* >=[;~:Y:Zd:Zd:Zd:d:ʜ;K<u)>o=;&=@;&;5p:Zd;d==q$T==D=O=>>!>)$>i>b=== = =a=йh>!>_>d>tE>7!=<ä:Y<~="4=3=E=O=A>>4I>Ix>S.>C>%7a>=H=1{==+K=>>h3>>¥>>7>=C<~== =E=">>> >@>\>d>S.>2ݪ> =ܪ=є=2=ܪ>* >|i>U>d>>>:Bf=u;5p<ܪ=`y=a==>>2ݪ>HzG>Q>@>n=A=|==p=O>>>>Y>x><>`>3=V:Y<%=[=h ==2=V> 12>>!>r===k=)=pS= =G>L,>E>i7>>{>>9>\>J>`=B;~ :Y<Y<^W="4=Mn=`y=C=Q<>">=B==,>2L>/>pS==l= f<J>1(>2ݪ>Cw=엑==Rn1=HMk}>@>w==X'={a =7!=8r=="4=V=|;=|;=U="4<ܪr>:Bf>A#>+x=LZ=3=/+K==;&>>n>;/>IT>F|>/+K>o=Y=>=c,>c>F+>&> >=0N|:d<5p=B> l>Mn>~>>k->/=ܪ==%>>GW>{>>#>̚>?>Y8>W>,>X%> ?f?=c,?>?>=B<:2:Zd<+K=>>m))>M">E>:>Mn>=o>>Jw>b>8>^W>Mk>0E>~>7>bZ>? ?H?av?c~ ?L? >GW=:Ym>d>.>&Q>>K >> >2ݪ>g0j>>L>>ۇ>Ҷ> k>>k-> ?&?P'?hAg?i?T_?[>j="4<>=h =y6>6G<>c5?>o&>X>,> |i> >/>`]F>>>>U>>>>we>C>qm >))?6?V?Ye??Z>;o>6G<<2;#d> >Y=鿗=ϖ7=>>9>Y!>sN>>|i>>_>,>>>Y>|;o>&?Tu??+>.=D:ʜ:Zd;|>)>>>>=鿗==y=)=O>-O>we>>F3=,> l=A=̾>===H=bZ=bZ=a7= =O>'>2ݪ>+>b=)>.>GJ>SH>E>([>= u==d==>?>3>~>>o&> |i=QK:Y:Y<^I=:2===>޻>8i>aB>I>l>~9>WX>,SR>o=׌==I>.P>P>ӵ>~>o>>X%=4:ʜ:Y<:2=7!=M"==r>>GW>y >P>K>{4>kt`>9>)=엑=F+=\5>G>q>?d+? >T>=J;Zd;1{==u=E=m>>;c>i->B>>d>Y!>,>o=ܪ=D=LZ>A>>?e`? 4>>=є:d:YM">96>S.>Z>G>* >u=O=!=0!=2>>:>uq>%>b>s>C=:Zd:Zd<~=8r=h = G=̾=> >>=H= u==y==n=p#=>>uhK>>>Ph=O<2:Y:dB===%;5p:Y;1{;d;d<~<~;Y:Zd:d=+=!>>>==4=Q;~ :ʜ:d;Y:d:Y;d9>Ix>G>3&v> 12=йh=e>`>>S>ݩ>M">o=8D:d:Y 12>S.>|>4>oW>5$ =I=X'=Y>u)>=>u~>N>>̚>`>av>;>y>?$8?D6P?C?c>t=">q>G>q>f>U>Y=~ > >>=>{>>4> >>)>!>)>z=>r?݅?N:?e?fC?N:? f>F|=:Y>i>>z>l>Sb>>8r>%>Y!>>q>>>cQ>>Cw>>!?C?Uj?kt`?k?WZ?>i-=/+K9Y<%=l=))>:Bf>j>x@D>`>1y>o>E>">R>|>k>?>>U>V>:>\>w?b?>?[Q?\+?C>>79J>%>=#= u=AU> Y8>.P>OMk>p>>%>>nLZ>:Bf>޻>-v>N?-?"q?$o0?9>=̾;~ʜ:Y;Zd |i>pS>n>&>t>E=;&=k=E>E>H>X>`>S.=Z;;~;5p;Y:ʜ:ʜ:ʜ:ʜ:d:d:Zd:ʜ<><o>> Y8==!= =h =Rn1=QK==>r>5$ >/> l====˛ =>>:>Z>f>Y!>8i>)==&v=={X=>=>,\>D> P>I>%=;Zd:Zd<5p=1q=.==>>E>y >%>>>nLZ>)=Z==׌>+0!>HM>B?=H>>q>pۈ=<~<~="4=y=>>*>]<>>̚>V>q><>Mn> =G=Դ=>K u>db?M?Z?8>F>=<5p;Y<ܪ=h =I=>ҥ>O>a>>>M">vG>@>=-==t`>F~>?D?HM?݅>{>=));ʜ<~= f=~=c=>&>Qܙ>oW>z=>hg>A^W>pS=V=2={X=>z>>_?b>;o>˿s>f={X:ʜ:Y;d==rG={X=د> >n>&>%====l=l=h =p>* >4>0!>->pI>= f:Zd:dJ>%==8D;d:Y;d<<ܪ<=<ܪ`y>>pS==0!="4;;Y:ʜ;~ <^W=7!=l==}l=`y=5p>>">==YAU8r>~=g=E=h <ʜ"_h>,SR>M"=O=h >(>* >=B=!=AU>;/>>t>>Mn=є< :Y<~=\=->8>d>n>R>=2===I>">F~>vG>3>3>rG>@̾>">V(>? ?&Z?#>;o>oW=;~ >T_>z>3>u~>:Bf==!=AU>z>K u>>/>!>=>>>}>\b>G??5=?Q8?Ph?->I> l<><:2= >>J>}8>B>o&>9>b=O>E>0H>f 9>޻>t>6P>> > >i->ҥ??>?X#?X?;>]>><+K;Zd=7!=|>!>K >ZR>EM> G=I=˛ >>+>Xf>^>>uM> >>kt`>C >x@D>_?#d?D?D?">><(X':Y>>%>=йh=N|==O> 12>+>IT>j>{>>t>S.>$1>B>>~9>ӵ??% >ͽ>Mn= :ʜ:Y<(X'=$===M"==H=h =rG==h=i[=> Y8>> =I={X=f==o>1(>_>]<>(=D;1{;?==O={X=|;=8D= a=HM=7!=k}=->'>=y6=)<ä:Y:Y;K<^W===.=D=> y>.P>H>V(>G>,>Ǡ=J=Cw=8r==!>>o&>>N>b>=n;d;~<ܪ=bZ=v=_>>9>k+>j>>^>b>0>8r===?> |i>{>>2>LZ>>>X%=<,:ʜ<2=`y=I=>>Q4>:>>>>{>>A>Y=AU==D>+>_h>? B0? 4>g>3=7޻>F3>{>>>>k+>6G<>= u=q=̾>* >̚>j? /? {4>>=د< :d<=h ==t`>>>HzG>i->o&>`y>9> = u={X=/=k}>>{>>zG>%>N>4>R%e= G;5p:d<=V==O>Ǡ>>>>%=V==l=bZ=8D=*=޻>)>pI>y>o>\=<=:Zd:Zd<:2=.=`y=M"={X={X=.=Jw=[<>|=='4;d:Y;~<=8D=V=`y=D=@<;K:Zd<===E=V=$T=O=/<7;Zd<(X'==p#=k}===׌=c=޻=l=%=B>)2>@̾>&=|=5p;~:ʜ<=>>* >2ݪ> G==}l<7=3=pS=>B>%>=c,>=>*>=AU>w>j>'>h&>I>}8=V=:Y;~=/+K=̾>>C>M>8D> l={X=^I= = u> y>7>aB>~9>~9>bZ>5$ >>EY>>b@?Q?a>׌>EM=:ʜ:ʜ="4=>pS>=c,>GJ>5$ > =I=y==> >ID>y >>>sj>A>!>N>D?_C?R ?v>>hg=;5p:Y<= =>%>">=y=d= =SR=>pS>;c>a7>ycu>uhK>V>(> >* >|i>Ѓ?9?O{>Z>;c=rG:d:d<;= =c=O= ===h =y==y6> />%>5l>1(>pS==!=йh>&>y >q>ذ>V=ܪ=:Y:ʜ> =O=l<>:Zd;5p< <8r<#d;d:ʜ:Y:Y:d:Y:Zd;d>i>#d>i>=w==QK="4=){X=h =>n>K >ID>@=c=){X:d:Y;d<$T={a =?=Z>>:Bf>Y!>c5?>Tk>2ݪ> l===h =rG=!>&Z> > P> >>J=;K;~<$T=~=>|>+0!>V>x@D>>n>F3>pS=йh=d== =߂>Y!>pw>b>؋W>>A^W=d;d:d">K u>k->sj>av>9> f=̾=%=rG=8r=I>^}>?>>cQ>{X>@̾=%;5p;d== =>`y>%->;/>@>1y>=D==h =7!=8D=v>-v>.>>~>z>Y=;c:p9Y<===="=N===v=n='4<$T<([>V>QK>%=>%> =0!<ܪ:d:Y?==a="4 >u)====>>[>~>c>%=|;;~ <%=A^W=q=V=~=د==;c<%=k}= =?=_> >n>n> =̾>=+K=O>">k->w>\5>+0!=f<5p:ʜ<=~====y=8D<="4===O>b>> ==?=޻=v>|>:>`>KRA> =;<1q;d==`y=B=|;=Mn=Q Y8>=h=8D<;~ >Q>u="=X'=h =~>9>9> =4 > >'Ə>==p={a ="4<2<ܪ={a =V>>=>u~>pۈ>8i=J=Y:Y;Y<=}l=v=AU> |i> G>>=߂=d=V=~<<=m=->A>z=>v{>96=J>A#>=> = <5p:d=Y=\=p#=Jw=<%:d:d<~:d:d;d<<==Q=~;~ :ʜ:Y:Y;~<===Mn= ==.<>:d;<>;~9Y:d;< ;:d:Y:Y;Y;Zd;Y:ʜ;5p;<>;K:d:Y9Y:Zd:d:d:Y:Y:ʜ;l;~ʜ;l;< <є=+=V=em=Jw=Q<8r<;d:ʜ:Zd:Zd:d;5p;#d:d:Zd:d;Y;#d;Zd;K<^I<$T="4=+=~<;~ ;~:ʜ:p:Y:Y:d;5p;Y:d:Y:Y:d:d:d;Zd<Y<%;p:d:Y:Zd:Y:d;d<%<~;Y:p:Zd:d:d:Y:Zd:ʜ;;~:d:Y:Y:d:d:Zd:Y:Y:Y:Y:Y:d:d:Y:Y:Y:d;5p;l:d:Zd9Y:Zd:Y:Y:d;5p;5p:d:Zd:Y:d;d;d;K<~<(X'<%;~:Zd:d;;~ ;;<~<:2<^W="4===@;&="4<є<%<~< ;d;~;<~<(X'<%;~:Zd:Y:d:ʜ:ʜ:ʜ;5p;d;d:ʜ:d:d:ʜ:d:Y9Y:Y:Y:Zd:Y:d<~<<%<<>;~:Y:Y:Y:Y;p<1q<^I;1{:Zd9Y:Y:Zd:Y:Zd:d;Y:ʜ:Zd:Y:Zd:Y:Y;5p;K;:d:Y:Y;5p< ;5p:Y:d;Zd;5p:d:Y;~<,<><7=<7<%<(X'< ;d;K;K;;5p:p:Zd:Y:Zd:Y:Y;Y<8r:ʜ:Zd;Zd;d;d;Zd:p:ʜ<^I;p;;<~<~<~;;K;5p:d:Y:Y:Y:Y:ʜ<5p<2;~ ;~;l;~ʜ;~ < ;K:ʜ:Y:Y:Zd:Zd:Y:Y:p:Zd9Y:Y:d;l;Zd:d:d:d:Zd:Zd;5p;d;K;Y:Y:d<~<>;d:p:Y;Y;1{;p:ʜ:Y:d<~<<є<;1{:p:ʜ:ʜ:d:Y;~< ;K:d:Zd:d:ʜ:d:d:d:ʜ;Zd;1{;;~;;~ʜ:d:Y:d;K<;;d;;p;<:2;5p:Y:d;K<><%;:d:Zd:Zd:d:ʜ;Zd;5p:d:Y:Y:ʜ<:2<=8r== f<$T<<5p;Zd:Y:Zd;Y;#d:d:Y;~<:2<~;1{:ʜ:Y:Y:Zd:Zd:Y:Y:Y:Y:Zd:Zd:Y:Y:d:d:Y:Y:p:d:Zd:Y:Zd:Y:Y:d:d:d:Y:d;K<%<%;d:d:Y:Y:Y:Y:Y:Zd;d<8r<є<<(X';#d:Y:Zd:d:d:Y:Y:d;K;Y;5p;d<%;5p:Y:Zd:d;Zd;~;5p:d:d;Y:ʜ:Y:Y:Zd:d;5p;K;~ ;1{:ʜ:Zd:Y:Y:Y:Y:Y:ʜ<~;5p:Y:Y<%=%=h =`y=Q<5p;d<1q<><1{<ܪ<$T=~<7<^I;~ʜ;Zd<%<2<=<엑;K:d:Y;5p<(X':d:Y;~ʜ;~ ;1{:p:p;K<><%;Zd:p:ʜ:d:Y:d:p:Y:d:p:Y:Y:ʜ;K;d;~ʜ:d:Y:Y:Zd:d;Y;;~ ;Y:p:Y:d;o>?==1{===(X'<~:Y<,=1q={a ={a =;c=8r<7<$T="4=V=)====~ = u=I==D<:Zd:d<^I<== 5<ܪ<:Zd:Y:Y:d;<^I< :ʜ:Y:Y:Y:d;~;K;p;~ʜ:ʜ:Zd:Y:Y;Y<><<ܪ=Q= a<ܪ;@>'="=B=/+K=B== =!=O=ܪ=D==D<$T<1{=k}=U==V=l=8r;5p<=4>>:Bf>3oB>o=={a ====ܪ>> >== =,====y==D=\=[< :Y<5p=y>|>(>"=9== = ===O=LZ=\5===="4<ܪ=8D= =I==v=p#<є:d:d=u)= =B=g==y=h =n=}l=f== === =8D< <5p<==^I=Y=d= =8D<^I:Zd;Zd=[=p#=8r=em=7!="4=@=[== f=/+K=Jw=L>=@:Zd:d<:2<==5p=8D=<8r:ʜ9Y:d;Zd:Y:Zd;d:d:d;Zd;#d:Zd:Y;5p:Zd<%<ӑb=<ܪ<5p:Zd:ʜ<(X'<8r;d:ʜ:Y:Y:ʜ;8r===rG=<є=7!=Rn1= =>`>1y>=c,>5$ >"_h>u)>b=ܪ=+K=kt`<:Y:d=$=|>,>R>EM>)=2=%=M"=d= u>J>Y!>> >{>>T>2ݪ>C> f== <7:Zd:d=+=>@>o&>f>/+K=Z== =h=>5>{>> >>dXp>:Bf> >=ܪ= <^W:Y:Y>>H>E>J=O=4=d=q=y6>&^>av>t>Y8>q>EM>>> ==!=Rn1< ;Y======Y==|;=|;=f==LZ>>9>=c,>+> =I==d=V<:d:Y<~= f=`y=sj=U=(X'=~=Y=/+K=C==?=O==̾=SR=.=^I=B<:2:d:Y;Zd<:2<<5p<=~=.<%<>:Zd9Y:Y:Zd:d:Y:Y:Y:Y:d;1{<>=7!<1{;Zd:Y">Jw>@> ==[= =E=AU>)>8D>@>+>K=0!=em=4?=Rn1=y====<2;5p=p#>>>>>f 9>=y=Q0> >4s>{>>>U>V>WX>=̾=d==s>>(>==;~ ;K=`>5$ >G>db>">V>A>pS>>5$ >hg>̚>>ۇ>a>>8i>K==ܪ>>H>n>i->/=̾=~:Y:ʜ=h >E>I>>4>~>;c>P>f>9>g>>̾>N>>z>4s=\5=|=>>V(>>~>D=_=8D:ʜ<ä=>,SR>]<>\>8i>`=LZ>>>6G<>[Ѓ>a>>y >>=>Ǡ===E=A>.>Pp>OMk>"=c="4;5p:d=.={X=y==O===!=|=ܪ=o>>u)>o=د=d=@;&=Y=X%=d=AU>>=Y=rG;K:d9Y:Y;K>EM>b>U>"=ä=5p;d;Zd">i>>J>>k+>=y<1(>> >>,>z=>pS=<ܪ`>K >:>M">E>==~ =h <pS>">%=O= <^W;~;K<ܪ=YAU=M"=d=޻=V;ʜ:p:Y:Y:Y:Zd:d:d:Y:p;K<^I<`=l==}l=/+K=~=*=p#=D> l>.>=c,>8D>* >pS>=-== k}>y >z> a>G>?=I=\=v=y6>=c,>f>y>>~>X>i->GJ>2ݪ>Y==h <>f>>x>cQ>>G>=߂=A>5$ >q>X>?s>N>>?>>em>:>=HM~ʜ>Դ>b@>#>?>o&>f>`y>>V>,>E??b?d>k> >.>u~>F~> =<<>=>T">t>݅L>>>Zd>=>`>G>A >??+> >>M">vG>Y!>2E===H\>.>>[>=_=c,=AU>z>]<>> k>>>{>>GW>/t>Cw==^=~;5p<%=V=̾>8r> l=B=?= == =h=ʜ>%>?Z>A#>.> y====[=Q;~ 9Y:Zd;<ܪ=8D=bZ=Mn=q<==.='4=em==q=l=d=l=YAU=+:ʜ;5p<=2=8D=8r<<1q >=鿗====a=>Ǡ>,>9>"_h===Mn=.=$=p#=a=+K=Ə==H=:ʜ;Y=|;>n>|i>L>SR>>3&v> > 12>n>V(> >&>x>}>>9=B==>>$>=c,>79> f=<~>Վ??vL>%>>i->fV>E>??#f?+ ?A >E>_h>U>* >-v>a7>ذ>=>;&>)>&^=y;l<ӑb>?>o>&???O> >ˉ>>k}>D>E?"h?B܇?L?">3>Y!>d> G>׌?r?Ǡ>>=<ܪ:Y{>G`??B>))>>q>q>4>ֲ??>O?Hh?9z5?>йh>>\>i->a>? y?%>{>> |i=8D;Zd:ʜ=>>j>k>>}>3>{>>>}>ذ>>?m? t?>>es>X>.P>8D>}^>4>>B>>~=LZ=7!;K>4s>A>79>$>#9>3&v>ID>k-> a> >=>SR>a>9>`y=1{=ܪ>>`>>y>|>!=Ə<7:ʜ<1q=8D=/=4={X=q==߂==j=> Y8>>=-=Ə=QK=5p=h =X'=y6>>==="4;:ʜ:d:Zd;Zd< <^I<:2;p:Zd:Y:d;Y>%>M>nLZ>f>6=B=h >>1(>nLZ>~><>hK>b>q>Xf=د=Zd=/+K=|;=h=> f=x=2=\<>:Yn>.P>;>n>0!>j??$o0?U>>G>t=4=y=D> l>5p>EM>3&v>=4<:Zd:Y >.P>8D>BS>|;o>4?z?!6?+?"g?b>>>(X'=D=d=йh>C>K >av>GW>=="4:dY>>>Luq>>`? j6?? |i>H>vG> l==k}=J>%>:Bf>KRA>9> y==~:Y:d====!==e>5$ >}^>>p>^2>i->r=0!=]=h =d=> >> y=,=|> >|=ä==Q<<̾>=<є= =E===<ܪ:p:Zd;Y;;~ <><=.=7!=GW>qm >^}>d==ǟ=y=Rn1=bZ=\>Ǡ>M>>.>>i->G>0>k}==E=D;~ <~ =>{>Ηm>> >V>ID>=1{=د>&Z>v^>?I?>#>->>`>pI>C>`==:Zd=A^W>+>? x? O?{F>{>q>@;&>>$>>˭??+T?-?,o?>zk>Z>>>;c=߂=H1{:d:p=Rn1>=c,>k?L?*g?%-? G>C>b>.P>A>BB>?&+?=,?>?+T?)>hK>&>*> a>J=j=`y;l:Y=>>>ݪ??C?6>{>^>U>%7a>>))?f?0?0??9>>> >~9>9==8D;YY!>4>T>^{>uM>jQ0>">K>>X>V>? |i? E>FO>}> >>i>?> l=HM,>_˭>^}>5$ > l==X'=>o><>~9>>>>T">.>> =y= G=Q;K;~<7=rG={X=!==8r===8D=K =[=?=>u>>==2=d=)==D<ܪ<:d:Y:ʜ<~<<;<<8r,SR>c5?>dXp>8i>Ǡ='==>>R>>>;>G> y== =f=="==엑=є=|;<< =+K>Tk>>>>N>>`>R>k->>hK?i?$o0?E>ֲ>`>Z>)$>q>B>~>>>{>Y=|;;~ʜ=HM>Y>|??"(?'(?>j>>s>q? ?]>f>4>>C?}??Ǡ>> =@:Zd=<є>* >??1̬?;w?,A?%>N>+?s?+R?Ye?p"?v?p#?X#?(3>#>n>>LZ? 8?D?Mo?7?>f 9=9<(X'=Y>>? ?%-?/=~?%7a??>F>? ?-?X ?nY?uJ?np?W?(!>%>>>{?'Ə?M+p?T_?C?>j=ä<%:d<=>K u>h>F??>}>x>Ғ>ӵ>#??8?U3?]?U)?8? >¥>'>">Mk?O?3J??Z?*V>>m))=<=;Y:Y=8r=є>,>t>>>>V>%>̚>O> ?r?r?>}>r>pI>9>;/>>>d?7=>&>?>>=.<2:d:d<ܪ=8r=c,=鿗>`y>u)>!>3>=>F3>X>|>>>f 9>(==D=>>8i>k+>K>d>t==k};~ :Zd<%<ܪ=5p=p#===-==AU=2=!===@=L><<=="4=p#==ϖ7===<$T;K:Y;d<^I<==Rn1==SR=+K=k==D=k}<2;:d:Y:Zd;~ʜ > f="=y=Q8r>z>$>2ݪ>R>>->]>>|i>3oB=?=bZ=;c=B=c,>>w====;d:Y;=QK=AU>/t>`y>pI>{>>)>db>?C?'Ə?,o?>/>2=Y=E=>79>z=>7>i->!==%:d>n>݅> >)>6P>?%?GD?Qg?Hh?%a>h>t>`=>.>4>ŢM>ڈ>>k+>=|;<~<=>0>>d=>>q>N? ?.L?O_?X%?O_?+>$T>b>f>>F|>̚>鿗>>װ>6>z=)%>av>6>w>O>U>d?i?86?D?8 k?Q>J>Y!> y> l>:Bf>)>of>x>`>u>=~<%:d=5p=>HM>9>=`>:Bf>WC>>t<>9? >><[>k->Y=D=йh>%>OMk>d>>>5$ =O=7!:ʜ;p="4=)==h=D=,>B>* >ID>_:>K u>"=2=9= =)==>n>-v>=׌=}l<5p:d<~;Zd:Y;d<1{=<7< ;K:Zd:d<:2<==Jw==[=sj=Rn1=/+K<%;~ <=p#=c,=Z=O=d=Jw<;;~ o>w> l=Q0=Y=q= =7!<5p<%= >t>|;o>>.>HzG>b==em=kt`=?>A >pI>f>`>>o>i->F3>* > =;&=em<>:Y="4> >>B??Ip>'>x@D>=د=->=> >b@?R?? |i>->1{>)>>^}>!==0N|:Y:d=8r>WX>+?!?4[?,A?>>_> >5$ >ذ?b?)?B?D?2??>v>>o>Xf>~=B;;Y=>pI>;o?+ ?@?94?>ي!>>=>X> k?M"?j>*:>>n>=M"G>_?A?/t?*#?->5>q$T>8>Pp>x? ?1?HH?Hh?65 ?{F?+>v>a>>[Ѓ>=B<>=~=e>w>S?% ?O{>$/>7>9>`>$>|;o>ѓ?@?!`?!?b>K%>ŢM>*>v^>i->(=;&=5p;~ʜ;K=l>8r>`>->>ZR>==?=O>>hS>`> >|>2>t>^>C>0>%=ä=`y>x?Q?A?`]F?hAg?Z?(׍>P=I<;:d=7!>)>uM??8?Hh?B?+ ?HM?O?"?GD?id?z=?}p?{$T>]?&Q?I?g0j?n^?b ?88>L6>=K <YX>I?(?!*?vp?&?NF?vL?Q?*V?QK?i?q?l?XV?.?I>Sv>}>?/a?V\?_p?R2?#9>$ > =bZ 5>pS>==V<;~ʜ:ʜ<1q<~;~ <%=B=X'=U=HM=~=5p=~=E=?==h Y>@>WX>\O>em>~9>E>>װ>͘>>>J=-=d==ä>>U>i>F3> l=<8r:d<2={X>">vG>>~>V>>? /?(׍?6?+ ?.>>T">=\5>8i>y>v>g>G`>a> l=bZ;1{:d=+=>aB>>D>F+>>(??5?R7?[u?R?2? >NX>79>2ݪ>4>R?#?1?>F+>G=<:d=D> |i>wx>>!>˭> >{?"??Z?Y!?a?Y?;? >?>GW>HzG>8? ?:e?Iw?4 >s>l]=Y<ܪ:Zd=){X=>ZR>?>db>S>6P>Վ?M?(׍?Hh?Qg?GD?$&d>->^>8D>@;&>G?s?.N?>]?(3>T>Xf=>_>>7=>>|i>q>))?b?ذ?.>\>>:2>`>C>`>6??u)>B>ذ>@= <~:d==k=鿗>>Y> l>>* >Mn>v{>>y >H>=i[=̾=йh>u)>G>6>">y>&==:Y:d>=Z==u):Zd:Zd;5p<<(X'<(X';;;5p;d<(X'<7=8D=a7=h =K =*<E==O==޻=h =8r;d;~ =;>HM>t>pS> >EM===8D=<є=d>`>\>w>>`>~9>\>9>z==E=@;&;d:Y=@> >E>&? ?b>ŢM>k-> ==O>/>>#?w?Y?r>7>`>><>Pp>%=h= a:Zd:ʜ=3>R>5?? s?.N?'? >q>Luq>%>$1> a>F?%7a?>ۇ>n>Q>K >|=}l;;=d>n>I?')?;Sd?3?>̙>n>.>EM>+K?,\?8?M;?N9???"M5? >K%>->k>f>=)<^I;5p= >K >@ ??*V?%-? }>>`y>([>?>?l?.>?E}?FXL?2ݪ?k}?M>>>%>W>=[<:2:Y=+> l>`>?> >ɝx>\5>*>|>>t>p? ? O?m?>>K%>ŢM>>v^>f>&=̾=8D;;d=B>>c> a>;>R>޻=,=d=>>i-> >̙>Sv>O>X>c>GW>2ݪ>%==l<:Y<~=8D==AU=ܪ=c=)===+=H1{==i[>HM>8>9>n>|=i[==N|=u)=B<^W=8r=[<ܪ<$>l><>k->96> |i=ܪ="> l>C>_C>q>A >>F|>w="=!=D=> |i>w=m==Y:ʜ<~=d>;e>I>d? Y8>>̙>޻>q>vG>`>i?BB?, ?* ?>>>q$T>OMk>gy6>?>װ>>=>S.=I<є:Y=[=>l??+ ?;Sd?2?>e>֍> ?9?B?`?k?hx?UŐ?.N?u>Sv>s>Ѹ?[?=,?IE?3A> >X= u)>D?HM?@q?O)?Kv?4r?!|? 7??8?`E?we?{?yЧ?mM?O?>>?d+?B܇?b?k.?^I?0`>;&=j=){X;1{=8r=>? ?6"?H?Fj?38? s?+'? >?>]?bZ?w?{ ?zs?n?Ph?!5>>#??Lr?id?q?gB?@>>n=sjA> ?b?$8?%?? !j?b? U?%m?K ?d ?n?j?Y!?65 ? >O>?P?2?Y?d!?X%?+ >>J=[<%;Y:Y==>@̾>k>Ϻ>ݩ>Դ>Sv>>1{>?O?+0!?U>)>^>>>:=B=h <;p:Y:Y<7=pS>|>3&v>OMk>av>k->n>jQ0>n>>R>>>ן>>ID>z>%>8D>~9>J>>6>>w= =HM 12>>> =>b>>n>r=鿗=?== =v=m>>$>pS=O=rG>>pS> >> |i>)> /=I=d=kt`===8D=n={X=AU=o=O=M">>Rn1>hg>hg>i->vG>>c> k>MG>X>9==I=I=>A^W>>A >>+x=3&v>^>>&v>q>!>Ѹ3>??#?v>m>>GW>`>>c5?>̙?a?>? >!>* ==H;d;Zd=H1{>o>v{>s>׌>6u>6u>*_?m?&?DO?N:?EƳ?$8>N>|i>=>M>?{F?Kv?V?GD?,\> = <;Zd=q$T>">o>ˉ>Xp>N>N>~?b?0*?M;?V2?M?+>>!|>U>l]>׌?1q?]L?g?Zd?&H_>=LZ<=9Y:ʜ=U> Y8>o&>SR>˿s>of>͘>!>?f?8{j?C?7jl?>>>EM>b>1{?(!?V2?a?R7?f>o=I<ܪ:Zd<엑=>,>v{>>N>12>.>)>װ?b? ?->>v^>BS>q>9>v^>_?+ ?;/?&l>>IT={X V>$1>&>>J>,>EM>b>rG>j>GW>d===߂>|>2E>q> >\>>`=g=5p:Zd:Y;~ |>">/>'=|=H1{:ʜ:Y;5p:Bf>_>K>z=̾=\>F|>V>Qܙ>C>+0!> ==={a hg> k>>Sv>>4s= u=3=a>>g>>:>h>q>uM>޻>y >M >n=y=3<:ʜ=`y>'Ə>P?M?? 4>>>}>J=O=>S.> ? G?w??Y>E>Ηm>J>%>av> a==7!:d;=5>@;&>ģ? U?w?>>k}>2ݪ>K>>:>*_?f?0?1?"? Y8> >J>>~>8i==`y;K;Y=sj>,>0!>r?b? 7>>o>%=>r>~>B??(|?(??>ֲ(>jl>E>o&>.P=,=Jw;K:Y==->i->D>!>/>>@̾=G=2=>@>)>K%? Y8?9>FO>I>>Y8>i->:2>=k=8r:ʜ;5p=V=>a7>Tk>!===kt`==>=>>>>>hg>>=>([>Y=V==7!<:2:Y;5p=====f=8D>$>)$>%=y6=є== =a7=.;~;d<~<%;d:d:d<~<>;Y:ʜ:ʜ;K4s>Mn>=c,>=O=d=pS=v=->$1>EM>UF+>EM>=엑=є=9= ===˛ =?=rG<^W:d:d=Mn>>\5>Z>>i[>~>i->4s>([>Mn>ذ>ܙ>?>q>a>X>R>2ݪ>5$ >c5?>z>{X>Y8> a=<<5p=>Tk>I?s?"? >?n>&>8>8>ӵ??1MG?Hh?HzG?5l?I>b>uM>#>>%? ?(׍?> >+x=n<#d<8r=>}l>C?$?8?6"?"?> >N??65 ?X%?f?eW;?U)?5 ?Q>>>q?#9?M+p?WC?J/?HM>!|=T=k};K9Y<%=N|>b>T???1?2x?"M5? 4>FO>?HM?x>йh>?,?U)?`]F?T_?&>> |i=em<;Y:Zd=`y>pS><>I?W?? >#>d>^{??"?C?RI?QK?AV?n>e> >{>e?"?B܇?Ph?D?>2>=|;<$T<:d<5p=M">!>4>n>ŢM>>R>>>0!>0j> >I>k+>v^>Ҷ? ?x?a>>g0j==a7<7<%:d&>A>L>>O>GJ>:Bf>4I>BS>{>>V>>t>:Bf>`>>n>]<>> P>>>av=== ab==_=Y=">> >=_==.=3=a=Y>>Y>|=I=K =A==AU=د=m=ܪ==/=bZ=A^W=@;&=q$T=SR=AU=#=ϖ7=%>1y>C>BS>@>A>L>>c5?>wx>oW>EM>=ǟ==v=->:>q>>>}>&=Ə<:d<=>pS>f 9>v^>>V>)><>><>&>Ţ>!>v{>%->> >Y!>1{?%?!5?>>%7a=em;Y:d=q=>S.>BB>>ŢM>`>>>ʜ?I? a?l>>,>_>,>A>?C?M;?YT?K ?9>4=h`y>k+>V>/>p> >w>V? ?!?*#?!?9>'>w>?>b>!?5=?`E?ka?^?+>=R>K>n > k>>>]!>K%? B0?? >鿗>>c5?>8D>Z>I?+0!?Zd?e:?W%?#>?=AU<:Zd<ä={X>>W>~9>>oW>j>>es>>1{>?>>i->0>'>4?>`??2?C?->j>U=Ə;;K=+= =o>Y>> f> |i>M">">5$ >@;&>=>,> =-=AU=>.>f>j>nU>̙>o&==*:Y:Zd;~ <$T=U===f= =/=)==X'==X'=@=M"=pS=a==>* >9>= u=A^W:d:Y;~;;~:d:d<> 12>=̾=`y=B="===7!<:d%>_>I>o&>2ݪ=AU=sj<==2=> f>Q4>>:>u~>[>=c,>n>?=є=8r<$T:d:d=HM=د>Y!>/>^W>t>>A ==p#=a>>i->>Վ>ي!>X> ><>c5?>:>==h E>{>>>ڈ>v>>5$ =1{==c,>([>o>O> >>0j>>k}>>Xf>'Ə=V=f<2:Y:d= a=>b>~>8>>:>"===2>#d>,\>Դ>~>i>@ >+K>>o&>GW>t=Դ=<:Zd:Y >j>[>z=>9=߂=5=h =k}=A>X>_h>>Z>[>a>U>79>=엑=Ə=7!<5p:Y:d<2==>%>==kt`=<ܪ=8D=:>>A^W>k->k->I >!>=AU==޻=;c;~;K<;=B==>K=AU=E=f=Rn1=q<ä<(X';~:d9Y:d;5p;K;K;5p:Y:Y:p;Zd<>=5p=sj==em="4<< ;Zd:ʜ:ʜ:ʜ:d:Zd:Zd;~ʜ<~=t`==~ʜ=*pS>k->`>^>N*:> ==0!=̾> 12>:Bf>n>>>c~ >7!>>=鿗>u>n>2L>pS==2;:Zd=){X=LZ>{>>2>N>x>/>d>;/>([>G>|i>>N>ʜ>FO>>BB>oW>R>W>Y8>db>_>>^=Y=;Y:Zd=Mn>pS>@>#? d? f>H>!>j>~9>es>Ҷ?? >?$\??=H>ͽ>ҥ>3>>!? .?C? B0>^W>4s= <2:ʜ=,> 5>[>g? "? 5>E>6P>>V>J> ??%%.?* ? ? >!>>)>`>?C?)?>3>fV=D=+ID> >d>>w>>V>~9>>>C?ғ?q? G>x>y>3>x@D>->O? G?? b>'>X%=!===>|;o>>>n>Mn>79>7!>`]F> G>`>>>>>m))>;c>,>G>|i>]>b>>`>=)=5p<2<%;Y:d=[={X=A>pS>>>o=Q0=йh=I>pS>A>X>M >.>o=йh=ǟ=鿗>>G>f>T">==8D<$Tb>>>>> 12>>"> > y="=0!= = =!> >@>[>>=c,>ID>EM>A>IT>`>{>>Ǡ>z>`y>+>K=̾>=йh>>>ݩ>m><>=g >Q4>~>>~9>y >>BB>>U>h>E>b>([> l>pS>oW>nU?*V?>t*?)>+>F3=|;:d:Y>hg>f>>><>,\>T>y>ճ]>>>{>>9>>.>G?:?Hh?V\?GJ??>|;o={X;~ʜ:Y<>=@>`>MO>w>}^>k->em>z=>pS>R>>J>M">d<>.>Y>, >-? ?@?O7?>?>l=X';Zd<~=X%=>r>0>6G<>+>(>8D>M>jQ0>y >oo>Tk>.> 5=엑> >T_>̙??%7a?>>'Ə=p#:Zd:d<=em==̾=Y==O=I=o>> > />=H=د===>>R>8>>?>=c,=<:ʜ>%==d<=:Y:d<%<%;:d:Y;Y<%<^I l===]<;~<~===Դ>>o>=o=йh==p#=~<>:Y/+K>E>3oB=\5= G=[<=Q=޻=N>4s>Vi[>V(>@>* >r==h=[=HM<~:Zd<=HM>.>G>c5?>K u>)= =){X<==\=>f>c5?>6>;>lN>C>%-> 12==\=E<:p:Y=H>9>Mn>9>E=޻=HM=Q=l=>>bZ>>>hg>:Bf>J=9==k}=8D>r>b==/+K4s>X>V>8D>====`y<=<%:Zd:Y;~<~ =rG= =l<7<;<><%=:2=d=>>=o==޻=`y= a;~ ;#d:ʜ:ʜ:d:Y;d y>u=̾=~=.<%<%=X%==O=B==O==2=N|=a==HM= ==){X< ;=H1{=y6>@;&>o&>k+>96=B===H=y= u>Y>4I>Mn>R>;/>>`>=l> >>.>===;;d=8r>>wx>q>q>~9>79>==>J>Ns>>ذ>HM>d>R>3&v>(>,>HzG>>)>~>*==8r;~:Y;l=p#>>o&>@>>t>Jw>=o=\5>,>i->!>}>>X>_>9>/+K>;/>k+>BB>&v>8>W===<8r;Zd:d:Zd=Y=T>5>mq>{>>c5?>9>=ܪ=AU>`>F|>~9>v^>Y8>j>=`>@>pS>+x>V>V>>>GW=O=ITJ>* >!> f="=SR=d=2>>3oB>GW>@>">B=AU==e>>D6P>`>IT>.==*o>>&Z>&>)=V=?=/=/=>>Qܙ>z=>Xf>Ǡ=l;:Zd<=p#=>> > >>>2ݪ>Ix>[>V >:Bf>pS==D=2>>f 9>6P>>1{>i-= )>z>>z>,>C>av>nLZ>g0j>GW>"===i[> >>?? >BB><=:d<ܪ=y=,>|> l>> />q>4?>G>V>Mn>79>޻=V=є=йh>ҥ>o>i? >~>'>=8r:Yo>r>E>>o=ܪ==d==B>R>R>͘>.>J/=<8r:d==n=bZ=p#==엑>2ݪ>K>.P="=P':d:d<><2<%;~:Zd:ʜ<~<5p<(X'<%<>;d:d:Y:d<~<^I:d:Y:d=̾=I=Cw=em<$T;K:Y;5p<=l==,=E=]K=A===d=rG=HM|==K==f=D<$T<(X';Y:Y:Zd;~ <ܪ=Mn=h =.b>=AU=Ə=bZ<=o>=A=̾=V=+=(X'={a =?=_==鿗= u=D==є=ǟ=ܪ=B>=V=k=k}<%:d:Y;5p=u)=d=ܪ=j==h=8r=+= a=`y=d==m=AU=D=>=k}={X=D= u=Q0=A=AU=pS=u)=7!====u)=D< <ܪ="4=h =k}==X'=f=`y=bZ=~ʜ=f=a=?=D=a=A^W<<~;~ʜ;#d:d:Y:Y;~ ;:d9Y:Y:Y:Zd:Y:Zd:p:d;K=Y=2=.>> =<ܪ:Y:Y<~==@;&=p#==p=O=g=A>E==йh==3=em=q$T=d=>/>S.>8i==+:Y<<$T=7!=[=f====I=s=K=i=HM=p#=QK=n=d=->3>Vi[>8D=ܪ=5p:Y:do>t>={X<;Y<2<==(X'=8D=7!= f< <2==l=a==%=7!;K:Y;Zd<%<;:d:Zd:d<:2=8r=@;&=`y=V=/+K<2;:d=){X<><%;;Y:Y:Y:d;5p;~ʜ;;~ <5p<ܪ=.=D=@;&="4<є<:d:Y:p;d<8r=@=kt`=y= =a7<є:Y:Zd;~<(X'<<<<>:ʜ:d<;Zd:Y:Y:Zd:Zd:Y:Y:Y;d<==.='4<ܪ<%;~ʜ<~;d:ʜ;l;<(X'<:d:Y;~ <:2;:d:Y:Zd:Zd:Zd;d<;;~ :d:ʜ;~;Y;5p;p<~<%;5p:d<~<%<~;:d:Y:Y:ʜ;;~ <%;~ <~<:2<<==H1{=8r=f=Mn<=8D==X'={X=8r<7=8D=V=A^W={X=޻=D<%B> > l=A=F+=q==5p=8D=d=A>==Jw:Zd:ʜ<%=p#={X=9=0!= =z==~={X=n>?> >> y=A=O={X=sj=){X=8D=+K>Y>([>=:ʜ:Y<~=~=h =~=8r={a =|;===,=엑=A==-=˛ ==8r=3<є<ܪ=}l=">|=|=:2:d:Y;~ʜ:Zd;~<5p;:Y:Y;Y<><є=~=7!=V=em=QK='4b=ܪ= <1q:Y;<ܪ=8D=vG=f=!=c,=D= =V y>J>=v<~ l>>b=:d:Y9Y:Y;#d;K;d;K<<2=~="4=~ >>`y==h =IT==s> >n>.>4I>,SR>=y6=v=3=>+0!>y >>C=є<^I:d<ܪ==B> a>,>=I==d=O> />/>F|>Y!>`>U>7!> =ϖ7=>r>.>>\>0!>2L=H1{:p<є=/=->">#d>=B=!=̾=~>>>?>U>c~ >iv>[Ѓ>9>="=c>>>t`>> >MO=:Y:Y<>=====;=V=c,=E==>z>5$ >@>F3>F~>9>= =?==>f>>I>> =8D:d<^I=0N|=8r=HM==5===йh>K>u)>>> ==6P=@=em=+=h =_>8i>Mn>"={X<(X':Zd:ʜ<~ >>`=̾=+:Zd:Zd<(X'==h = ==ǟ=LZ>Ǡ> 12==Y==l=a7==M"=;&>r>F3>b>R%e>pS=.;Zd:Y<~=8r=X%= ==O=B> >%>=йh===p#==d=ܪ>,SR>k->>{>>4s=+K;d;5p|=== =`y=V=|;==O>">dXp>F>pI>+=\;:Y;1{=\= ==2=2={X=8r=8D=Q=Y=8D=p#=0!=\5>2ݪ>ID>9==V:d:d<%<^W=$=Zd=rG=h =7!<<<(X';d:d:Y:Yo>8r=AU==%<(X';Zd:ʜ;H1{;=8D:>J>>|=h=`ypS>>=;&=B=5p<=`>>L6>_> >2ݪ=bZ:Y:Y:d;d<2=+=P'=IT=Mn=}l=a====j=-=ܪ=ǟ={X==:2=+={a =>r>!=9=l;~:Y:Zd:Y:Zd:d:ʜ;<;d;Y:Zd9Y:Zd:d:ʜ:d:d:d;~;ʜ;K:p:Y:Zd:Zd:Y:d;Zd<><ä=k}=7!=8D=;c=H1{=QK=A^W=>==I=2:ʜ:Zd;d<7=[=)={X=2=ܪ>o>>"4>P=e== G==y==>>GW>j>_>%-=I >* >C>Mn>@̾>!=\5=6P=={X=2>~>R>>D>&>y> l=){X;5pr>79>Tk>`y>Pp>/> =F+===,>k}>{>>F>װ>>>&=K :Zd>>'Ə>A^W>Ix>=c,>d==j==v=0!=^W>>pI>n >Դ>w>>t=2:ʜ<=$=z===|>>pS>>u)=-=D==3=3=:=AU>9>3>~>>`y=AU<:d< <7=;c=[={X==]=v=f=Sb=5p=*=*=8D=5=i[>$>C>6==`y;:d<%<Y<=;c=M"== G==`y>P>pS==SR=+<<%<%>.>.P>===>-->.P>=B=k}==<=<є<ä=~===h =h =K =5p=){X=+=q<$T>>Ǡ=O==bZ=q<%<= f=@;&=f=em===Y<ܪ<є >4s>;/>$=g==7!==є>?>Cw>7!>C>@̾>+x>=̾=̾>(>4>6>$ >nLZ=AUb>EM>vG>>em>, =i[==йh>pS>A>n>`>BB>>:>Qܙ>&Z>F3>t?>?.?0?,\>y=̾;K:Y>bs>.>&Q>E>GW> y=Q0>>B>x@D>> k>ǟ>>V>^>Y> >;?>2ݪ>Y!>>v^>~>F3>)> l>+0!>Z>6>^> >4>>L> a>em>NX??F3?`]F?a?Lc>? g>Qܙ=;d=Jw=>,>Y!>hg>Qܙ>%->>>%>Qܙ>}8>G>O>6>pw>>pI>@;&>d<>%?)$?N?Ph?2w>+>$ >HM> 12=ܪ=ä=ܪ> >,>IT>d>{>>a>{>>W>)$>8r> >hg>?a?J>>\5=:d:Y;5p~>w>Y>)> |i=B=I=`=޻=T> >c>pۈ>:2=Y:d:Y:Zd:p:Y:p:d;<#d<8r=A=O=X'==a7=`y=\=8r=є> l>">t=t`=y="4==X'=є=ܪ> l>* >EM>R>EM>(>=˛ =SR=9={X=I>/>{>>>\=A=@;&:d:Zd<(X'=){X=f==AU> Y8>.>Z>>~>~>Y!>,>o="==йh>d=>z>6P>->B>v>C=;Y;d=~==q=ܪ>><є>o&>>>y>k->:Bf>%=-=O=t`>9>̚>N??r>Վ>t=D;5p:d<====>:>/>`>>X>d>Y!>,>>=i[=^W=ܪ>2ݪ> >t`??>Ҷ>m))=0!:d;~<=QK=q=J> l>0H>M >X>GW>* >`y=D=+K=d=q>o>pۈ>>6u>>8>/=V:Zd:ʜ> y>K=D=d=[=n=Sb=Sb=9>.>`>3>>:2=D<8r9Y;d<:2<2=h ==g=i[=HM="4=V=Mn=8r<~:d9Y:Y<5p=h ==O=1{=Ə=:2<%:d9Y:Y:d;5p;~ <;d;Y;d<%<%;1{:Y:Y=){X=I=9>>%=))=d=8r;d:d:Y;Y<<==Q=8r<$T<$T<<%<;~;Zd=`y=O>M">,>+>=ǟ=kt`r>,>,>=AU= ="4<2<8r>pS>8r=ǟ=/=@;&:d:Y;5p<2="4=5p= a:p:dY>8i>?>* =#= =(X'=em==鿗>>2ݪ>C>BS>.>o=D=I>A>>I>>q=׌>>ID>|;o>:>k->1y=ܪ=Ə=> y>8>i->w>q>>}>Z>4I>c5?>ɝx?N?5 ?4?Y>k}=c;~ :Y<=>>j>)>y>4>Ph> => Y8>8D>l]>z>h>> >MG>w>n>? l?C?\?]*M?C>b@>,SR<2>av>0>&Q>:>MO>r>?>t>K u>>>J>ֲ(>ܙ>>>{a >}?>?K ?cq?dH=;d=V=߂>4s>b>o&>ZR>,>|=>J>C>t>>q>>2>^2>K>U>a>q?0?QK?R?5p>> <:d<==<>>n>r=y6=;&=1{=A>n>A>aB>~>j>:>g0j>8D>r>$> >-?[?J>E>=l;Zd:Y:ʜ 12>'>>=G==d=q=>:Bf>y >~>A="<2= f=5p=;c=7!=.=;c=l==|;=V="4[>)> =t`=2=޻=kt`=Rn1=Jw=p#=!>Ǡ>(>$>b=d<ܪ:Zd9Y:d>9>[Ѓ>iv>_>pS=V=l=k=d=йh>0H>:>>>pI>`=|;;:Zd<>="4=l=h=V>>?>v{>)>C>%>t>?>==;&= u>t>3>Ҷ>{>j>ˉ>`=h<>;p<=={a =!=>A >Tk>>̚>0!>>t>Qܙ>n==O=->=c,>uM>>?s?>엑>=B<:2:d<=:2=a=>%>F3>>>>>z=>A#>=V==>9>R>?O?w>*_>=K;~ ;5p<^W=`y=0!=߂>f>ID>nLZ>{>>i>C >=7==d=>>>Е>C>">>>Rn1=M":d:ʜ>@>$>==h=%==V=K =>>{>?>>^}=I<%:Zd:Y<%==QK= ={X= =pS=`y="4<=sj=O> 5>`y==;~;Y<1q;~ʜ:d:d:Y:Y;5p<=[=<;9Y:Y:d:d:Y:d:d:Y:dr>=t`=d= f;K:d:d;r>)===;c>([>%=D=h > >">u)===^W>!>vG>%>>&Z=pS2ݪ>`]F>i>Mn>=2===>r>=c,>j>F>>k+>:> G>A#>>r??>_>EY=|;:ʜ~>M>h>7=>oW>8i=))=&v=O>r>A>{>>BB>>R>y>v{>Qܙ>4>?&]?FF?DO? 8>t=ܪ<~<%=>|>F3>ycu>a>k->7===>&>WX>3>>>>8>>`y>>~?/=~?N`?N?+>q>o:ʜ=2=̾>A >GJ>V(>A>="==> >G>{>>K>>9>v^>f 9><>f> ?N?6"?65 ?R>/=AU< >w>`y= u==d==9>>=c,>[>m))>i->IT>n>>'>f>c>>N>l>96=:ʜ:Zd<(X'='4=}l=Y= =p#=Jw=P'=== =I=>o>=F+= = =^=V>">F~>F|>z=+K<1{:Y:Zd;5p<>< <<<>=ܪ=p==B="4=Q=){X= =AU> /> =_=޻<ܪ:Zd:Zd;<ܪ=D= ==> >.>Mn>]<>R>4s> =йh=d=8r=B=0!>u)>av>`>f>V(>b=rG;d; 12>8D>k->>pS>5>j>79> V=1{={X=>b>jQ0>f>>߂>P>HzG=q>Jw>:>>>g>>F3>=ܪ=D=̾>n>k}>-?% ?M>cQ>=<^I;=޻=.=> >A>{>>pS>BB>>o&>9>Ǡ= u=v=>q>ذ>? ?>cQ>~=;ʜ:Zdz>F~>i->tE>b>`=˛ =X'=f= =>kt`>>T>\>>A=:d:p>>n>r=-==[=Sb=){X==> >b>v^>|i>ID=1{<2:Y:Y<Y<==D=y==^= =Mn=8r:ʜ:Zd:Y:d=h ==,=|==7!;~:Zd;~ <є="4=A^W=QK=D=+<ܪ<5p:ʜ:d:Y;~ʜt>5$ >8D>!=\5=O>K>Ix>G>">c>ID=E">@̾>Ix>6G<>o=Ə=V=3=>>,>U>pI>sN>Y!>.>%>5>M">y?K?>$ >n=7!:p:ʜ="4=D>>:>EM>2ݪ>o====_>'>>=>j><><>jQ0>;/>>>=>A >LZ?P? >Ηm>?`=p#:d:YpS>n>%==k}==a=йh> >/>R>k+>i>K >">8r>ҥ>v{>'>Y>>^2>n=Jw:d:ʜ=8r= =2=,==f=h =C=rG=SR=K>`y>>+0!>([>==D=˛ >">[>o>>:2==:Y;5p<=2=Rn1=Mn=/+K<=<ä<==C=[===h==)=V=7!=h = =y>>=Y=p#<%<;d;Ǡ> k>.P>&> =AU=^=em=$==Sb=>>A>A>==5p:d:Y;<==t==_>>=c,>a7>lN>`y>;c>u)=O==h =h =+K>ҥ>~>8>;>vG>Y=;K;~ʜ* >Y!>}8>>y >O>f==Ə==l=׌>Mn>>&>>n>9=k};K:d >MO>o&>{>>iv>@>,\=Y==p#=}l=i[>R> >l>Ϻ>>7=y:ʜ;d=~==>b>%7a>=>EM>8D>V===h =,=0N|=>$>>V>>x@D>=$:Y;~ =Q=q$T=X'='=N==I=={a =*<ܪ>G>C> = <%;l<=Q=K ={a =rG=A^W<$T< <<2<(X':Zd;#d<(X';l:Y:Y:Y:ʜ<ܪ=q=7!=C==="4<ä<^I:d;<==V==^=h=2={X=8r=V=|;==LZ>=йh=p#<%9Y:Y<2=QK==h=<>> l=t`==d=D>8r>9>S.>8i=<=,:ʜ<,=K =E=m=j=F+=k=2<=8r={a =0!=O>>pS>>u=1{==>>GW>k->Sb> =rG<~;5p=8r=3=!===8r="4o>=I=&v=%=Ə=y6>!>=c,>-O=-=l%>">=Q0===H="4< 12>4>2ݪ> l=<=;= f=8r=?=>%>* >1(>">8r==3=2<є<=p#=߂>9>k+>i->1(=̾= f:ʜ<$T=u==AU> y>n>&>%==v=l=Y< <=kt`=2>;/>nLZ>kt`>0H=%>:Bf>7!>`y=;:d;;5p:Zd:d;d;d:Y:d;K<1q<~;5p:Y:Y:d;~ʜ;d;;d;~:ʜ:Y:Zd:ʜ;l;~;#d:d:Y:d;#d;~ʜ;Y:p:d;5p;~:ʜ:Zd:Y:Y:Y:Y:d;~ʜ;;5p:Y:d<~<<8r;d:Y:ʜ;d<;;Zd:Y:Zd<~<7=5p=8D=8r<~:d<~<5<2= a=f=sj=E<ܪ;d:Zd:Y<:2==7!=V=rG=p#===~;d:Y:Y:Y:Y:Zd:Y:Y:d:d:d:d;Zd;d;K;Y:d:Y9Y;5p<;K:Zd;~ʜ:d:Zd:Zd:Y:d<%:ʜ:Y;<^W=޻="4=;Zd9Y:Zd:Y:d;K<%;:ʜ:Y:d;Y:ʜ:Y:Y:Zd:Zd:Y:Y:d;K<;~ ;5p:Y:Y:Zd:Y:d;~ʜ;~ <2<є<=B=,="4<ӑb<(X';K;p;K<~;~ :d:ʜ<8r<>;d:d:Y:p:Y:Zd:d:Zd:ʜ;~ <~;;d;l:d:d;~;K:ʜ:Y9Y;d<1{="4=~Y>4?>* =G= G=n=~===\5>n>.>!>b=E=p#=7!=V=)=!===p#< :Y<=>,>WC>Jw>=ǟ==?=O>>)2>Q4>c5?>R>$==a=rG= =;&==>>=2=8D;~ʜJ>?>:Bf>%=D===AU>>&>H>_>M >n=AU==h = =Y>o>f>==kt``y>=O==.=d=!=O=>Y>n>=t`={X=V=Y=V==׌>K==D=@;&<(X':Zd<%=2=l=/=|;=QK===YAU=h ={a == G=0!=0!=y=2:Y:Y;~< <:ʜ:Y:d;YE===V<#d:Y<(X'<$T="4= f<:ʜ:d;~ y>5$ >IT>:> f={X<$T:d:Y;~ =[=bZ=B=p#='4<1q:Y:d<%<<ܪ=f=Y>>F3>_>G>r=q=~;Y;Y<8r=$=d=>f>-O>=د=[===={X={a <1{===޻==AU=y6=ܪ= ===l=~;~ :Zd<1{=޻=> G>r==pS=V=8D=H1{=y=O>ҥ>F3>Vi[>GJ>5$ >J> l=LZ==<ܪ:p:ʜ=.=s>GJ>~9>vG>:===f=4=׌>,>{>>>>M">u~>MO>3&v>>>K=v=*;Zd:ʜ=8D>8r>i>ذ>޻>c~ >=йh=D=>Ǡ>M>G>c>`>>>`>@>,> 12==2;Zd:d==i[>E>>d>M >Y=O=I=c,>`y>=c,>^>7a>~>>j>?>)$>=))=k<=:d9Y<%==>'Ə>,>=F+= =)=k}=> >96>[>_>C>n>:= = u==8D<>:d:Zd:p<<^W<ܪ<;d:d<=l=d= G=`y<;>=>79>~=h=%==N|=AU>>IT>b>Q>"_h=ܪ==p#==d==ܪ= u==Y:d:ʜ=h >Y>t>A >ذ>g>">E>>>A>d>>!>U>>?>=O=K> >96>Zd>V> =<2:Y;= >, >P>>jl>)>V>2E>5$ >K u>>#>b@? |i>;>8>|;o>,> >%>A#>>>2>>޻=l;1{:ʜ=p#>>y >_h>8>>T">8i>=c,>[>>>? }> >¥>~9>.> 12>>IT>`>!>a>K>2= G<:p:Y<ܪ=>"_h>Tk>[>@>>>޻>n>9>dXp>)>>ܙ>>[>E>o=O=>$\>fV>pS>BB>z>= <:d;Zd="4=^=AU==i[== =ܪ=x>.>$>C>_>Rn1>)$=y6==p#=.= u>%>7!>=>==;c 12>Ǡ=O=B<:d:Y:d >@̾>|;o>M">3>Ph>B=<<~<є=QK=f=E=={a <ܪ:d;5p=[= =h=ä=O> >IT>M">>>p> G>9=c,=5p==QK={X=s>`y=o=!=QK<%;Zd="4=a=Y=O=׌>>[Ѓ>^2>>#>߂>8>A=O=bZ=8D=[= >o>> =O=2ݪ>>U>>>ycu>HM=0!=C=5p===>`>E=̾=h <:2:ʜ%>:2>M >9> |i=E==<ܪ<ܪ=8D=M"=2==̾=M"=;Y:ʜ;~ <><=@=p#=pS=d=pS=h =$=jQ0==kt`=HM;~ :Y:Zd:d;Y;<><;:p:Y:d<%<<є<;~ʜ:d:Zd:d:d:Y:Y:ʜ<><є<ʜ<=>(>)2>t>~==Y==VY!>>>>==j={X== =>'Ə>{>>> >BB>_C>c~ >A#>* > |i=c=QK< <>=>G>J>ۇ>&>f>F3>=ǟ=AU> >>>͘>F>>y6>a><>_C>f 9>9>B=HMi-> >E>(>>o&> =>o>EM>>"? b?>ʜ>!>H>M">{>>Jw>%=X'<ܪ:Y;~ =>C>SR>ۇ>Վ>}>a7>=>>=c,>ذ>??s>1>c,>E>>bZ>9>=.<:d=){X=엑>Y!>v^>v^>f 9>(==]=˛ >)>V(>D>>>>~ʜ>S.>9>%->Ǡ=D=7!;~ <=Jw=Y> >r>=O==[=3=I=>">A#>A>+> f=V=̾>===8D<ä=.=QK=@;&= f |i>>=鿗=X'=Rn1= =~=A^W=y=d==z==Y;~ :Zd=5p=->Mn>4>4>X>A =A=->K>&>q$T>U>Y>i> a>A>= u=^W=>>5$ >2ݪ>Ǡ= <є:Y;=X'>?>3>M>5?>>>]<>S.>g0j>>?[?$? >>q>hg>2ݪ>.P>\>m>U>˿s>q>2L= <~`>6P>?r>s+> k>G>>`>\??>E>g0j>i-> G>ܪ? 4?>>K=9=@;Zd<~=v>@>1V>T>E>>!> >>$ >??q>>k+>o&>>엑??r? >t>q=p#X>k}>&>q>3>>>G>Z>??([? 8?>>wx>:>@̾>>6P>?Ǡ>(>E>=u<5:YJ>.>/t>* >/t>9>IT>k->NX>c,>T>)>^2>b>=m=o>* >n>>q>K>A= =8DK>J>/>1y>=ǟ=8r=X%===>t>* >%=̾=em<;Zd:Y;K<<<:2;~:Zd:Zd;Zd<~=Rn1==!=̾=,=>J>:2>Y!>R>)$=K=h y>>z>/+K>`>>D>T>ي!>c>K =AU=u=C=~=O>Y>n>=O=sjJ>?>G>Ix>n>>m?Q?C?M">>>n=== u>>>Y!>pۈ>UF+>=!=Y:p;Y=8D=йh>)$>M>V(>W>{>>~??$o0?>B>g>.==є=B>=`>>V>{>6G<=йh=8D:ʜ:Zd==l>`>0>4?>0H>K >0>̙?? ?> >sN>%===o>2ݪ>pۈ>[>k->,=|=+:d;~ =H1{=E==I=AU=A>,SR>hg>&Q>[>">`>pS=c=M"==c>>3&v>EM>2ݪ>E=CwE>">J=y6=@=5p<ӑb f>3>EM>EM>9>>>===|;<ܪ:d;=f>&Z>>n >>t>=̾=M"=a=g>F~>@>1{>4>^>_h>3>i->D6P>ҥ==<~ʜ<=i[>:>_?> >8>pۈ>==>=>>{??J?>1>U>9>;>Y!>=h=޻:Zd:Yb>>B?? U>Z>%>9> >pS>kt`>N?Q?$8?%?I>>׌>p>>pI>/= u=7!:d<=Դ>>ܪ?G>^>ͽ>^>5$ >Ǡ>>b>;&? ?{F?? D>,>^W>>X>`y>n==@:d;d=3>&*>>h>p>>F3>="=->.>6>1{>]>s+>>~>~>k->M >* =Q0= <:Y:Y y>96>:2>ҥ=x==M"=q=ϖ7> G>W>>~>`y>5l>HM> |i==ä======{X===="4= a=Jw=M"==m=鿗=D={X= ={a =V=){X<є<~:d:d;1{:d;#d >r==c= G====I>q>;c>8i>z=AU==`y=<є=bZ=k}=p=I=pS=B<:Y:p=K =>f 9>>>v^>U>%7a>%>>>,>LZ>O>'>[>9> =>u)>9h>f>o&>:Bf==7!;#d<=I>Ix>c>? >ֲ>>)>>>? Y8?,.?@?:2?,o>H>c>n>[Ѓ>7=>;&> ?o>Ţ>=O<ܪ:dnLZ>M?u)?C?>~>0E>i7>??.?S?`8?[cQ?D?>>A >o>?m?*?7?"q>_>=c,=l=D>Mn>?9?? >~>ӵ>1{>7? f?3C?UŐ?a7?\?GD?{F>`>>BB>ͽ?%?8 k?DO?/}>;o>l=?=;~ʜ:ʜ=p#>>zr>=>ބ>>>&v>>>q?HM?8{j?Hh?C?(!>>s>K>{>V>? ?+?f>y>V(=l=k};~ <= =G>:2>hg>sN>n>pI>rG>~9>N>̾>}? ?~>3>`>`>([>$1>Y!><>>j>ٮ>>=/<=;:Zd>Y>z>> G>&*>MO>y >h>[>!=د===y6>">R>k->S.>r={X=+<7<ä=2=QK=8D<;Y:Y;d<=K =E=> > f> f>%>2L>V>vG>oW>A^W>=H= G=== a=QK= =>b=߂=^=k};Y:Zd<>=8D=|>n>IT>Y!>U>aB>7=>&v>1><>ۈ>c,>o&> =p==s>(>k+>>`]F>=0!<7:Y:Y>^>>->> G>X>6?A?(X'??>x>E>?=鿗>#d>:>I>B>є>k->?=c~ ;Y:Y">o&>)>ذ>o>̚>j? ?&H_?29?([? !j>C>WX>Y> y>C>`>j?>鿗>>z= < <%= > >QK>{>>>wx>:> >O?u)??O>->G>:2>> l>=`>>5?>>ֲ(>^>V=l;~ :d=k}=D> >,>.>$>,>R>3>q>¥>>Y8>?>^=,=AU>>]>BB>~>V>C==8D:d;~ʜ=[=[={X=={X=?=D=LZ> |i>pS>>=H===.=k}=є>E>,>=c,>(==y>%>t==a=(X'<<=8D=X'=l>%>9>4?>==T==`y* >x>+K>8>nLZ>J=D== =د>=c,>o>a>I>>>B>c5?>=c,>'=O=rG:>@ >ʜ>E>/>hg>=|=>7!>^2>R?-?Y?NF>>a>>:>QK>pS=I=Q:Zd:Zd=%> >>j? ?Ǡ>ڈ>7>.P=B> y>c>v? ?!i?#?K>d>!>$ >G>l>+=|=7!:ʜ:Y<==o>>ڈ?d>F>W>~9>(=> |i>^}>?9??2z? >Q0>>>X>\>ҥ=="4:d<>=d>3oB>)> k>&v>>=c,>= =د>*U>>̙>ܽ>K%>> >>oo>Ns>* =鿗=3pS>=>=c,>=Q0=v=[=M"=˛ >>c>Y8>~>l>?>n>`==Y=y=8r;:Zd<^I=D=k}=0!=={a =){X<==~=H1{= G=s>>=V===8r=bZ=2<1q<~;Y:d;<>>r>=Y=q=q$T=a7==>>%>.> G=V=Ə=|;=A^W=B=[={X=v=޻=E<:Zd:Zd='4=i[>Mn>G>{X>G>b>* > 12>>>>k->>װ>;J>>v^>F~>>> |i>/t>_>nLZ>=c,=ܪ=C;d;K=>4I>S>N?[>^>s>>~9>>>i?P?4??3?o>>&v>~>av>z>?>;o? j6>N>3=s=;Zd<(X'=l>U>q?@?es?"?O{>ӵ>!>]!>C?#?J?Y?W?D? s>v>> G>a?l?-?M>Ph=%<^W:d;~ =d>:>/?9???NF>7>y>װ??)i%?N`?\?Z?Hh?m>(>{>;>͘?V?;c?J ?7?Ip>==+<~:Y:Zd=Mn=G>vG>Z>엑>>%>>pw>i>5???1q?E5?B܇?*?l>J>P>>x>?$?2?#>$T>o&=6P=;cID>> a>4>:>~9>{>>>D>#? ? >> k>{><>2ݪ>aB>>g>g>>4>* ==+>z>n>">>'>ҥ>ID>>>q>:Bf>===x>/t>d<>I>l]>)$==Jw===/=$<;d:Y:d<%=]=f==k}=l=V=5p="4=<^W<є="4=2=~< ;K:p:Y:ʜ<%>pS>'>u)>>"4>;/>U>T_>/==={a =V== u>%>n> f==7!;l:d2ݪ>`y>k->b>b>}>es> >O>K>>`y> =|=є>>V>>> G>==є=:Y:d<2={X>">pۈ>o>BB>o>>n >x? U?HM?>>->q>C> > >K u>n?@?Q?+>8>z=;K:Zd<ӑb=2>6G<>E>>>?>_h>^W>{?[?!?}>F>S>Y!>>$>z=> ?c?-?>j>@;&=<5p9Y >hg>>->>^>>Ѹ3?? i?>ܙ>>BS>'>n>o&>?HM?%?(>̾>9=9<%;K=QK=йh>n>@̾>D>8i>7!>MO>|;o>>U>=l>I>F3>)=>>9>N>x>d>׌>F> =n;#d:Y<5p=H1{=Ə=Y= u==|=I=> Y8>>pS> f=I=h==h=鿗>+0!>gy6>>}>^_>=SR<:Y;~o>?=̾=<;~ ;<ܪ===))> Y8>Y> y=Q0=2=%=`y<=;1{;d=|;> |i>\b>:>y >:Bf=엑=="4=Jw={X>>]<>>)>~>t>T">4s>=ܪ=>="4;5p:Y<1{=>U>2>̙>;&>>2ݪ=O=pS=+K> >w>]>x>>Դ>D>N>~9>U>$==ly>S>Re>`>Ə>QK>|==">3&v><>d??Ǡ>~>ͽ> >%>q>=c,>=<~ :Y:Y<ܪ=">`>>of>1{>ذ>BS===йh>0> G>D?,J?b>d>>>>av>2ݪ==M"i>o&>)>V>WX>r===> l>b>2>/>U>,> >fV>F3>* >o==QK<:2:Yt>J==E=q$T=7!=em=0!>o>C>l]>m))>Mn>(> Y8=-=Y==V<:ʜ:Y;~ =[=em=|;=[=@<<ܪ="4="4>f>>u~>==q=Y>%>Qܙ>>>>b>(>=i[=̾>>b>n>.>Y==$;~:Zd=8D>K>~9>Y>T>>>w>@>2L>U>E>`?\? ?>N>>\>=>K u>~>>i[>t>Tk==B;Y:d=p#>t>=l>K%? 7? >>H>.>6>>??0?3?#?B>I>Y>~>pS>?b?? >=>+=<:d:Y=QK> >>{??>->>k>>X?d?";?8?:?(? j6>N>>l>>&??+T?es>Ţ>Z=q="4< :Zd<%=c>IT>[>j>)>>8>,\>6>?>#? f?o?!`?>>U>|;o>g0j>5>? 4?2z? >uq>MO=?=8D8i>nLZ>>y>i->Tk>@>D6P>vG>>d>5?>0E>BB>`>+x>>@̾>:>a>۬> >3>=޻=* 12>)>Y> ===ܪ>J>F~>`>Mn>&=G==!=ܪ>>F|>c5?>Q4>r={X=;c=Y=B<8r<$T=~<ܪ;~:Zd:d;d >>@> l= u=a=|;=`y=~=ä> />>=q=@:d:Zd< =2=>pS>=c,>GW>=>8i>@̾>]<>~>>.>l]>0H==̾==l>Pp>d=>>>=`= f>O>~9>_C>y>o&>:>k>6P>װ>ͽ>>pI>*>>>F3>? l?I?>2>=YAU:ʜ:Y>em>X>v^>:>\5>,\>&v>ڈ>엑>D>>>=c,>>d=>sj>v?#1?4?!i>>A=pS;K 5>GW>pۈ>ycu>f 9>^>tE>%>>>c>>lN>0> >>lN>*:>:2=pS;1{;~ʜ=8D=> >*U>/t>"_h>>.P>E>av>qm >nLZ>V(>/> Y8=m>|>8i>>*_?E> >x> =\:d:Y<%=7!=pS===h==O=I=>|>=B=ϖ7===p=V>,>qm >>j>z={X<;Y:Y:d;5p;~ < <~;d:ʜ:Zd;~:Zd:Zd;~ <%>,>===~<:2o>%>.>* >d=> y=B=q==Y;~ Y>Y>~9>m))>2ݪ=={a =HM=a7=> G>h3>.>>>}>b>A#>(>o==l<$T:d:Y<=>,>}>%>>Ns>==[=)=>F|>N>>:>>E>^}>>=>@=엑==*;1{:Y@>i->>|;o>==o==`y=)=2>D>V>E>q>E>z=>M >1q>%==k}=HM;K;5p=7!=>&>A>7!> |i==QK='4=l=D>J>aB>6> >k+>=c,> G>=йh= =\<:ʜ;~=4?=4====7!<2<==h => />.>/>=鿗====8D<2;:Y:d<~ />+0!> ===`y=$=7!=M"=د>>%>!> l="=h=d=/= =2=|==h >q>>v^>`> G=ܪ=E=c,>>J>o><>!|>ycu>=c,>"> l>Ǡ>#d>L,>fV>D=G=C>>8>>>`>,SR>>d=>`>>Mk>T>h&>>~>F|>5>@̾>{>>T>ŢM>S>[Ѓ=ϖ7=7!<%:Y<:2=SR>:>ذ>>̾>̚>{>>F~>,SR>9>~9>!> >E>>>>R>?Z>X>>>,>ѓ>> /=Ǡ>av>>G>>a7>9>>>MO>K>̾>p>`>z>c>2ݪ>%>A>a>>L6>c,>d> Y8=8r=[<%:d9Y<=>>4s>A>;c>([> =B= u=LZ>6G<>rG>6>{>K u>==>.>;/>y>v^>>}>8i==[<$T<%:ʜ:Y:Zd<=p#==AU=_= u==a=~=8r==>> =V=l=)=/={X=> >@> /==kt`=[<~:ʜ:Y:Y:p;K<;<Y^>=H=>> > >7!>8i>#d>=|===є>J>]<>>\> V=rG;d;l==> l>, >4?>*U> >-O>C>em>{>>y >Z>/t>=йh=O>>{>>>">N>q="<ܪ;~=8D=>J>;>A>8D>.>=c,>\>>V>4>nLZ>@>==>79>??&Q?>d>%=;c:Y;Y=+=I>o>%->,> >t>.P>F3>c>t>o&>WX>2ݪ> 12=B=>4s>`>?>b@>>=C:Y:Zd<=sj==I=엑=y6=t`>8r>M">"_h>.>/+K>n>Ǡ="=2=Y> >e{>>k>s>Y!=йh=:ʜ`y>:>WX>9h==|;;d:d<1q<1{==Q=HM== f==~=@="4=@=$="4==8D==H={X=D=d=Rn1<5p:d;`>K=h=V>> |i=~=AU=?==HM<:2:Zd;d=@;&= >r>&Z>pS=s=|;<^W>>=c,>=c,>(>=G== G=QK<є;Zd;~= a=?>>> |i=є=V<<='4= => >@>?>&>o=ܪ=h=/=A^W>>t>=˛ ={X=[=D>=B=d=V<엑b=x=i[==?= ={X==Y=йh=h={a n>IT>H>&Z=o==a7=E=d=>%>;/>9>ҥ>K=ܪ="=>Ǡ>">3&v>=˛ =`yn>Mn>UF+>8i> /=Y= ==E> f>;/>V(>Mn>/+K> f=V=Z>>>>F3>_>EM>~=M"<;;d:Zd([>3oB>"4>E=2=[=em=pS=y6>&Z>=>8D>=엑===鿗>>:2>QK>;/>`y=/=Q<1q:ʜ:Y:d== G=AU=x==̾=)===>===HM=>>=йh={X= =HM=q=د> V>>Ǡ==V<ܪ<%;5p:d;Zd<ܪ=h =M"=)=rG=/+K<<<%=HM=jQ0=pS=%==H=@;&=+=7!=Mn=B=d=SR=M"=A^W<1{<>;~:d:Y:Zd<~<=[="4:Y:Y:d; =鿗=޻<:Y;~<7=q$T===h=̾=i[=> >>> ==h=HM= =I>>F3>m))>K u>b=V:ʜ;="4=)==Y=T=i[=>`>>>,>+>k}=9=Y={X=4=">, >7=>/>>,=;~ ;1{=Q=B={X=p==,=))>>>>> =m==d=d=йh>*U>_C><7>:>+=9< :Y|>?>c5?>A#=N=p#;5p:d=P'==ϖ7==O= <;5p:Y:Y:ʜ;~;~ʜ;Zd;~;d;~ ;Y:d:d;~ʜ;Y;Y:Zd:Y:ʜ;Zd;5p:ʜ:d:Y:Y:Y:Zd:d;Y:ʜ:Y:Y:Y:Y:Zd:ʜ;K;K;5p:p:d;Y:d:Y:d<~<8r;:d;Zd:Y:Zd<5p=2=f= G==Y;:d:ʜ<%< =\=a=!==X'==q$T=$:d:Y:d<><є=;c= ===l=9h=Rn1=u=f=a==I= G=Mn:ʜ:Zd:Y;Y;~ ;~ʜ;Zd;~;d;d;d;~:d:Y:d;K<>;;1{;l:ʜ:d:p:Y:Zd:Y:Y:ʜ<%;Y:ʜ;p<5pb=ܪ=f=.=`y=9=AU>==y;~:Y:Y9Y:Y;K<<$T<:p:Y;~ʜ<8r<є==Q<;:Zd:Zd;5p;K;K;l:ʜ:d:d:d:Y:p:d:p:Zd;Y<><<<>:d:d<~<~<<$T==Y<7="4=+= f<<(X'<~<^I<=[=~;~ ;K;d;:ʜ:d;p<:2<;= a=HM<엑;;;~ ;K<~<=~=~<><8r< <>;5p:Y:Y:d:d:p:Zd;d< ;K:d;Zd;K:p:Zd:d:d:Y:Y;~ʜ<%<#d;d:d:Y:Y:d:d:d:p:Zd:Y:Y:d;;ʜ;d:d:Y;Zd<(X';<><^I<<$T="4=2=$=Y<=:Y:Y;~ʜ<><<ܪ=8D=l=h = a<>:Y;K<^W=5p=\=h =K = f<:2:Zd:p<~:Y:d;:d:Y:Y:Zd:d:d:Y:Y:Zd:Y:Y:Y:Zd:Y9Y:Zd:d:Y:Y:Y:ʜ;Y:d:Y:Y:Zd:Y:Y;5p;d;d;#d:Y:Y;K:ʜ;#d;K;K;p;5p:d:d:Y:d;~ʜ:ʜ:Y;='4=D===9===={X=y=K <ܪ<%<5p=*==I= = 5=7!;d:d:d<<:d:ʜ<є=<=<;~:Zd:d:p9Y;Y8>z>= :dw>">>>%===Y=h =d>>hg>~9>GJ=<2:d<^W=8r==7!=Rn1=a7=P'="4 />n>)==:Y:Zd<%<ܪ=4?=rG=d==AU==,={X=n=){X=$=A^W=rG==LZ>&Z>=>.=t`=A^W:d;Y>8i>&==5p:p:d<% y==d<є:Y:Y;<엑=f= G={X= ="4;1{:ʜ<<1q<%;d:d:Y;Zd|>K=O=޻=@;:ʜ;5p;=Y=8D=7!= a<~ <$TB>b=ܪ=+K=rG=/+K=l=>u>=!='4:d:Zdn>+>pS=i[= =p#=d=ܪ>Y>,>=>GW>C>,>o=Y=h>u)>t>uM>t>~9=e<$T:d<==E>>9>C>0>u=l=0!=ӑb>%>79>U>o&>~9>wx>WX>+>>B>]<>U? ? h>ۇ>bZ=M":Y:d<ܪ=4>Ǡ>0>;/>+0!>|==̾=>:>C>av>{>^>>`]F>1(> f> >k->ܪ?%?%>>=p:d:Y<:2=h =>Ǡ>>=,==є=>>8D>HzG>\>hg>^>=`>= =_>6G<>>>a >1{>U= :Y:d<=V=9=I={X= =f=d==>>">f>>>J=9==d=M"=ǟ>2ݪ>>v^>]<=-<><`y=o===h =QK=a7=p#=)=O>u)>)$> =2=p#;K:d8r>>)$>A >E=Y=k===%=>>U>{>>lN>.=<8r:Y;~ <$T=Jw=~==AU>`>+>6G<>+> =i[==)=/==AU>2ݪ>>>)>R=йh>>">J=A== G=8r=`y==ǟ>* >{>>>w>GW=?>f 9>U>r=3;d:Y;<=+=l= =M"=8r=E=[<2<<<=,==د>=Q0=<$T:d:d<>)>Y=LZ={X=5p>==&v=V<$T >pS>=!=Mn<ʜ=E==,=A>u)> G>J>o=O= G=f=ǟ>$1>R>GJ>={a ;K:d=HM=>>EM>Q>9> |i==y==> >?>`>q>nLZ>T">(>`y> f>fV>̾> >_>>2ݪ=Rn1:Y;=Mn=s>5>d>oo>Xf>#9=׌=2=鿗>ҥ>F~>q>>>E>^>W>,>E>SR? ?,.?.?b> = u;5p;l=;c=>,>ZR>i->Qܙ>n=B=>Ǡ>0>Y!>>>`>;>>aB>5p>Ph>h??8?;/?>f=;:d<7=\>>.P>:Bf>* >`y==,>>&Z>GW>i->>P>>pI>A>i>* >.>?>?"?B>pS=;~ʜ:Y;d="4=a==鿗="== =v=O>8r>>0>=>G>A#>)$>="=i[>!>4>W>Ϻ>A >&^=V:Y:Y;p>$>=H= ;ʜ:Y:Y:Zd:d;~<%<^I<^I<>;<8r=+==B==@="4=Q<><=.=D=@;&<%=3=bZ=|;==H= ={X==ϖ7=Y= =8r=A^W=/+K=.=){X=7!=l=c,=g==q=A^W;K:d< <~ =Jw==@=E=ܙ>Ǡ> >.>%> y==SR=f== ==>6G<>Y!>R%e>ҥ=<:Y:Y; 5>2>U>c>WX>7!>`=AU=E=9={X=>;/>12>0!>>q>Ǡ=C:p:d>A#>i->y >k+>D>J=Q0=2={X=D>>>f>*>G`>̙>>&*=h :d;Y~>4?>WX>f 9>Xf>5l> y=ϖ7=+K==0!=B>`>>Ѹ3>Sv>N> =A^W:Y:Y;d |i>%>0H>%7a> Y8= u===p#==>+>>8>BB>`=ܪ<ä:ʜ<=+=|;=0!=ǟ="= =d=p#=8D= a=>=c,>2ݪ=o=a7;K:Y;:d:Zd==SR=>`> ===Q< :ʜ:d;5p<1q<є= = a= a=u)=~=<% > =鿗={X=8Dr> G>o==Rn1<%=.=u)=c,=Q0> y>>> l=O=d=a=>9>b>M>`y=h ;;Zd=5p=ǟ>">M>Y!>@̾>=I=8r=d=>V>96>^>u>t>Y!>.> f>@>>j??b>>(=:2:Y;=h =o>=c,>m))>{>>av>,==p=>>=c,>m))>>> >f>aB>9>`>?V?1MG?1?>=є;Y;K=Zd=s>6G<>f 9>q>[>* =V=Y=>$1>Mn>~>> >>>nLZ>C>k->uq??=,?>?.>=-;~ :d= f=> >8i>C>3oB> ==c,=t`> G>?>g0j>~>%>NX>>Mn>* >@;&>>?O{?#?$?K>=є;~<~=8D==V>?=y6=h=HM=k==$T>pS>.P>BS>S.>M>5$ >Y=t`=>:Bf>>Ϻ>Դ>A >%7a=[:Zd:Zd;<=L>=z==p#=D=7!=A^W=u=k==ǟ=i[=y=د==:=[=u)=>>+0!>.> l=;K:ʜ:d:d:Y:Y:Y:Y:Zd:d;1{;:d:Y:d<%HM>8i>EY>=c,>n=9=;&===H=|;=k=>=>k->fV>/=,=8D:d:Y;KCw>Ix>t>>x@D>Qܙ>"===d==߂>EM>E>]>h>5>ҥ=[;:d,>b>;>>:>f 9>1y>=D=v=p> 5>y >8>b>>q>EM=;;~<ܪ=bZ=X'=>>S.>{>^>{>Sb>!=LZ==d={X>>vG>U>>>>@=3:d;=B=|;==>$>C>Ph>B>!==D=pS=sj={a =6P>=c,>>/>>:> =q:Y;K<=V==D=>==;&==a7=5p=8r2L>^}>S.>pS= <~:ʜ=8D=@<%;1{:Y:Zd=V=="4<>%>)$>={X<ܪ:Zd;Zd=k}=I>>79>?>+x==%=8D=l=E=g>>79>K >Mn>9>r=Q0>Ǡ>W>̚>><[>pI=˛ <~;d=D=O>([>R>`>F|>=c= ={X=y6>>B>o&>[>o>oW>B8> >@>q>??s>ي!>B=h :Zd;~=8D=>n>ID>Y!>A>'=^W==є>E>+0!>V(>>>s>>Qܙ>.P>K >?K??>N>lN=pS:d:Y<ܪ= G=>"_h>/> ==0!==9=>@>@̾>g0j>~9>|>av>79>pS>,>z>Ҷ??(>I>A^W==H:d;p=$= G=D=I=,=Ə=z==l= ==LZ>,\>&>7>4?>=e=O=>$1>m))>>D>^=엑=:Zd9Y;1{<%=8D=bZ=Sb=/+K=<==em=)=X'====4=l=kt`==9=LZ>> /=AU==H<8r<<<;d;Zd:d;5p<=@=5p=<%:Y:Y;~ %>0>=c,>8D>=$T=h=l=QK===rG=ǟ>">M>Ix>@=̾=7!:ʜ:ʜ%>EM>m))>|>o&>IT>f=-=v=3=[=2>+0!>t> >~>{>>)=B;K:Y<= 5==!=>* >_˭>:>.>:>`y>+x==h=pS=HM=g>Y!>P>ֲ(>ܙ>5>9h=pS;d:d<=Sb=4=I> >Q4>y >>vG>L,> G=ܪ=SR=3=y=m>ZR>J>׌>I><7>5$ =B:d;p<====>$1>A#>K >?>@=V= =B=C=@;&=q>+x>l>T>~>vG>E= f:Y;K<==`y=a=˛ =>|=鿗=====~n>IT>B> f={a ;d:ʜ=[:Bf>=c,>*>Ǡ=>|>?>3>>E>?Z=Ə<:d<ܪ=޻=鿗>k}>">)="=l=7!=rG=E=2>)>5$ >Ix>K u>8D>=> >M>k}>>L>g0j=O<<5p=[=D=o>=-==h =2=bZ=4=йh>>n>5$ >5$ >d=>?=ϖ7=鿗>*U>n>M">|i>==cpS>/>&*== <:Y:d 12>>%=~=;&=.=8D<ܪ<<===ܪ>Y>Y=߂=:>@>K>A>$\==!==0N|="4==H=g>;c>nLZ>k->7!=O=;c:d:d >8>Y!>g0j>YAU>5$ >=є=5===8D={X>J>uhK>>D>hg>u=QK:d<~="4= =̾>>.>J>X%>GJ>%==SR=sj=+=+=Ə>>z=>q>>hg=;=+:d l> >&Z>J==N|=u=*A>vG>nLZ>1(=q> l=D=:d:p< ;~;Y;;;d:d;d=={a =^=v=u)=){X;K:Y;5p<>="4=P'=sj=f= =~ʜ=D=k}=Y=Jw=l=y=;c<5p:Y<%=/+K=HM=;&= u=I=m<;l<(X'= f=em= =0!=̾=Y=l=)=}l==0!=ܪ==;&=\<%9Y;~ =$=)=2=Y=E=q$T y=엑= G< :ʜ:d<^W=a7=== =;c<<<8r<:2;d;~ <:2=[=em=y=y=`y<7:ʜ:Y:d:d:Y9Y:Y:Zd;d8r== u=d=bZ>>B=={a Y>> =y={X=l=8r<1q<%=@=> >/t>,>= Ǡ> >b=ǟ=)=;c<;K;d=q=> >1y>,=B=}l;~ ;d>|==:Zd:Y;d<2=%=E=l=h =:2:d;Zd<~;~:d:Y:d;~;d;~ ;p:ʜ:Zd:Zd:d:d:d:Zd:Y:Y:Y:Y;Y;~:ʜ:Y;Zd<>:p:Y:d:d:p9Y:d<%<<==Y=<;~:Y:Zd:Zd:d<%<2== f<ܪ<:2:p:Zd<<+K==~:ʜ9Y:Zd:Y:Zd;~ ;:Y:Y;~:ʜ:Y:ʜ;;K;5p:Zd:Y:Y:d:ʜ:d:Y:Y:Zd:Y9Y:ʜ;~:ʜ:Y;Y<~<>;~ ;;Y:d:Y:Zd:ʜ:ʜ:Zd;d<:2:d:p;K<%;d:d9Y:d:ʜ:d:Y:Y:Y:Y:Y:d:d:Zd:Y:d<~b==Z=є== G=em<%;Zd:Y;~=u)=^=I=鿗=c,=/=Mn=7!=E={a ={X=y6>Y>HM>==,=={X=:> V=B=s=D=^=/=Mn<:d:Y<~=$=y==޻=|;=8D= a=@=.=h ===;&=E=k}==[=.<^W;:Y<(X'==;c==="4<ܪ=u)<<Y:d:Y:d;Zd;Y:d:Y:ʜ< %>?>f 9>`>1(=-=k=n==]>>>> ==l<;Y;5p= 5===c,=^=8r==)==h=ܪ>u)>.P>,SR> l==em=>=Jw=a=ܙ>> l=O=p#<2;~:Y<~<====P'=7!="4='4=A^W=QK=Zd=y====k}=9h< ;~ʜ:p:Y:Y:Y:Zd:Y:Zd:Zd:ʜ<%<=%=V=p#=T=Q<>:Zd:Y;Zd<~;:ʜ:Y:ʜ;K<;Y:d<~<<%<ܪ=5p= =))> >7>,>=-=;H1{:p;K>/>EM>8i> ==@<Y; l>HM> 12=1{=B<%;;K 12>`>=د=2={X=B=<~:Zd=[=l>+>+>=i==Jw=em==AU>$1>K >Z>M>9h>> |i=LZ=є=<2:Zd:p<8r=>>Sb>V >,SR=LZ==5=M"=> >MO>~9>>nLZ>M >/>> l=i[=)<~ :d:Y<5p=y> >=c,>A> === =޻=>>>]>jQ0>n>Vi[>5$ >J> l=LZ=;&=<:Zd;5p=޻=E=l> Y8=o= ==q$T=p#=M"=>[>#9>&Z>==̾>== ==;~ ;~ = a=y===y=O=){X=Y="4=em=Cw=h=є=v=/=kt`=@;&="4;d:ʜ:Zd:Y:Y;1{r>pS=r=E=f='4=@=A^W==:=`=Jw<:ʜ<=> l>2ݪ>/> f=˛ =?==I=">@>b> >>av>t=,=Ə==ä>>> G=y6=z=$1>Xf>\>8>%==A>>* >k->U>Ηm>D>?>U> /==ۇ>%>@̾>t>}^>GW=m=8D<~:Y:Y<ܪ=>%>@>IT>5$ >pS> > >J>=>d>">@ >H>/>^>==>Cw>Xf> a>HM>pۈ>)=[>Y>Ǡ=鿗==>>n>Jw>X>>/>>0H=ܪ==h>b>5$ >k->{>R>`y=[<ܪ;:d==l===m>J>:Bf>=c,>E= u=}l=;c=h =X'=>>!> l=+K=A^W<;5p:ʜq>:>79>Y==<є===H= G=u)=Jw<8r:Y:Y;1{===v=p==>>9>uhK>*>Zn>Ph> l=="4<=@= =Y=鿗=AU=^=/+K;Y;~=HM=pS=2==?=|>%>K >6>>M">_>Y=0!=V=2=`y=v=>>=̾=`y<~:d">R>mq>`>,=<==C=2=a7==> >K==QK;~ :db=LZ=̾=y=2<=Y=7!=;c=8D=%=u=<є=:d:Y<(X'=em=,> Y8>Ǡ=O= =q<̾>==H1{={X=>>/>2ݪ>&Z> =鿗=Y=d=L>2L>f>b>2ݪ=t`=d=p#=8r=>.>WX>~>>:>kt`>GW>.>=== a;5p:d="4=鿗>X%>.>2g>Z>P=O=9={X=m>8D>3> P>pw>d=>^>c>D6P>,> ===;~ :d== u>?>|;o>}8>K >="=Ə=0!=Z>2ݪ>>}>>_h>v^>n>IT>2ݪ>==v=*;~<(X'=B=A>.P>3>J==!= = =>>:Bf>av>b>GW>* >=A=ܪ=!=p#b>=V=2=d= =|;=8D<;Y:Y<(X'=HM=V=`y=7!<:2;d:d:Y;<<$T<ܪ<:2<% >7>?>* =o==sj=X%=p#=d==D=.=){X< 9Y>S.>`>=c,>==i[=O>>=>>>e>>Y!>޻==,=>>>F|>Qܙ>%==;~:Y='4=˛ >:Bf><>)>d>Mn>0>#9>$1>O>G>>>GW>pS>>4s>tE>/>s>>,=&>o&>Y8>~9>X>A^W>9>=>n>V>s+? ?l>1><>Pp>>>A^W>>>ܙ>H>Y!=Y=7!<:2:Y$\>A>?>/>(>%->* >GJ>>+> 9>5?>6>}8>([==>#d>j>>t>>A==A^W<:d;#d=~==2===y6=鿗=LZ=LZ>K>>Ph>>>a7>=1{=a=4=i[>C>ID>c5?>EM>=="4;d;Y:d:Zd:Y:ʜ;d<;d;Zd:d:Zd;5p;<, >5$ >Tk>R>.P=-=/=+<ܪ=~=l==7=̾>== f:ʜ:ʜ<==ӑb> l> >>> >Xf> a>c>>vG>* =D= =n= =AU>>8i>%7a=-=l<^I:d<є=HM=t`>>> f> />2>nLZ>?>> >:>79=={X==> 12>GJ>fV>ID>)={Xr>?>rQ>3>>R>=ǟ=d==>~>@>^}>EY>=X'<є:Y:d<=l==k=M"===~ >o>pS>>=̾=M"=p#=p#=)=ä>>%->=AU=|;<%:Y;r>u)=ܪ=޻=HMt>.>2ݪ>'Ə>`=t`=̾==:2:>k->fV>4I=))==V={a =q>>Z>4>v^>>m))>J>2L>pS=V=d=;#d;l=Sb>>aB>,\>12>Z>pS= ===I>;/>`>N|>s>5>Y8>i->HzG>,> l==@;&;~ :ʜ=7!=엑>K u>I>>M >M"= u=a=4=߂>9>Y8>^>3>o>y >S.>9>@=A==2;:Y<~=>> >8>9>=엑=v=8r=5=> >GW>pۈ>q>X>5$ >HM>8r=B==sj<2:d:Zd<2====̾=d=h =(X'=.=kt`==엑>%>'>E=O==k}=[=D<;l:Y<(X'=Q=E=Jw=$<1{:=B=p=f=QK=7!=[=d=>* >:>, >b=E= =]=a7=pS==h==:2<^I:Y< =>>Qܙ>k->Tk>&>|=ϖ7=c=_>&Z>~9>U>p>>hg> k=o=йh=>k}>A^W>R>,=D=8D<~:Y2ݪ>B>>)>iv>;c>$>J>:>7=>>>>:>4>\> >'>0>m>>>z>9== ;d<ܪ=>">{>>ذ>NX>vB>R>=>79>Y!>>v?ި?>*_>S>g0j>(>>A^W>3>U>۬>db>k-=~ =V4s>^>`>IT>:Bf>.P>%7a>9h>x>:>6u>h>8>>;/> f>>* >n>>^>>Y!=I=l>> >Ǡ>b==t`> y>H1{>>->sj>5$ ====>$>Y!>we>]<>P===|=V=+K=p#=7!=C=8r=h=>=鿗=0!=Rn1< ;p:d:Y;l<Y<^I<=Jw==i[=V===˛ =A>f>9h>;/>!=t`=^=kt`=5p=B=0!=>.=x==+:ʜ;~<==k=>">>Y>Ǡ>P>>]>nLZ>j>o>d<>(=I= ==?>>R>pۈ>R>`= G<;5p= f=+K> l>'Ə>+>z>)>(>V >^>D>pS>vG>8>K=;&=!=s>96>}>>6>79=̾=Q:Y:d<=pS=~ >w>%>=e>u)>2ݪ>Xf>oW>k->MO>n====s>5l>F>>|>3&v==Q:Y;1{='4=޻=D==&v==Y=>>u)>޻> f=ܪ==%==!>~>?>\>A^W> |i=a<;Y<8r=8r=='4=;c=kt`=[=f=)=a==}l=V=D=;c=h =d=AU=l=m=0!=+:d:d;;~ <%<>Ǡ> 12>8r==2=M"=P'<;5p:d="4=>n>B>:>%==em=u)=8D= =m>0>Y!>av>Tk>?Z>([>u)==E=h <:Y;~ʜ=P'=))>?>j>aB>1(== G=]=B=h>>f>>v^>>`y>>=>&Z> V=O= 1y>Y!>SH>)$=鿗==l=l=>J>c5?>j>3>u>O>1y>=A==8r<%:d:Y G>=l===H=8D=V= G=>.>R>U><>>|=AU=h=޻=5p<5p:Y:Yo> f=== G==QK=.;K;<2<ܪ=[=V=p#=E<= >E=Y=)=V=(X'= a=U= =k}=B=$<(X':Y;=C=>* >F|>9>Y=O===H=/=ӑb>* >f>>n>:>>=Y=E==鿗>>>>Ǡ=E=+;~ <%=l> >\>:>}8>K >ҥ=\5=O=->.>>q>̾>>>8i> l=>`>9>qm >j>k->= <=;p;=>>>WC>E>I>]<>6>>:> Tc>GJ>>I>ӵ>>>A>> l>n>Y!>>U>&Q>A=|=D<:d:ʜ=0N|=>n>IT>Pp>=c,>%7a>w==o>n>u>>>>h3>"_h==>>C>:>E>7=>9=|=V<2;5p<^I=bZ=;&>> >Ǡ===D==I> 12>C>_>GJ>z=i[=-=-=T>.>:Bf>R>=>=9=7!==;c<%;:Zd:Zd;1{<><^W<<> >Y>=,=d=rG=8D=D=Ə=> ==d=:d:ʜ<є== u>`y> l==AU=V> >+x>A^W>GW>6G<>=ܙ=0!=)=E>.>R>vG>U> y= <:2:d<ܪ=pS=m>>>o=>>n>?>W>[>EY>=LZ=c,=I=B>9>>~>.>8i=<7:Zd<>===>K=鿗=AU=>u)>&Z>96>=c,>/+K>Y=ܪ=D=E=>8D>~>>Y8>5=c>=A=O===)=p> >EM>e{>F~> ===="4:d:Zd;~<%:d:Y Y8=l==~ʜ<% y>> l==ܪ=h=y=8D<5:d:d=.=E> |i>!>HM==:=+<ܪ=$=[= u>P>96>9>* >'>=H==SR=|;<=;:d<̾>==>>=د=pS=.>:2>;/>([> =Q0= =d=l>>=йh=E=)=h = a=9== =7!<%> f=׌=4==m={a = G==ǟ==p#<є:d:Zd<7=v>%>79>3oB>)="=d=V=@;&=d>>9>R>EM>=߂=p=0!=c,=>J>* >r==[>;>=c,>">b=є= =u=E>>Qܙ>k->[>.==2==ܪ>>;/>Qܙ>:Bf>=M"=[;~ :Y>n>)=엑=D==Sb=V=>0H>IT>=c,>'=K=-=X'=T> 5>2ݪ>F3>3&v=B=޻=<1q:d:d<===Y==K=p= =Jw= f=[==O>=9=ǟ=%=`y=l==Y>`y>%>E=h=h <$T< :d;H1{;d:d:Y:d;~<~>.>8r=ۇ=?=/=p#=y=O>f>8i> =T=7!:d9Y<~=(X'=޻==^W====y6>o>P>t>r=N===)=?> 12>Mn>t>Vi[> =3<~;~====v= ===ܪ=> > >==!==.=?> 12>KRA>pI>R> = <>:Y<>= f=O=em=rG=f=d=v=D=̾=|=c,={X= =|;=h = =O>>2ݪ>=O=YAU;~:Y;K< <%=~=+=8D===<є=H1{=V=H1{=5p=+="4=[= a=q$T=N|=Y=p=|;;Y:Y<(X'=@;&=d=={X=q$T<$T;~ ;Zd<>=8r=|;=N|=|=ǟ==4=.=\=<%:p:Y;d==y=X'==P'<є;~ ;p<#d;d;<~;~;Y 12==a 5==d<$T:Y;;~ :ʜ:Y:Y:d:d:d:d:Y:ʜ;d<1q<~:d:d;~;d;Y:d:Y:Y:Y:Y:Y9Y:Zd:d:ʜ:d:Y:Y:Zd:Zd:Y:Zd:Y:Zd:Y:d:d:Zd:Zd;Y;~;Y:d:Zd:Zd:d<<1q;1{:Y:Y:d;Zd;~ <>:Y:d;엑;#d:Zd:d:d:Y:d:d:d;5p;d;;d;Y:Y:Y:Zd:d:d:Zd:Zd:d:d:d:Zd:Y:Zd:Y:Y:Zd:Y:Y:Zd:Zd:Zd:d:d:Zd:Zd:Y:p:Zd:Y:d:d:Y:d;~;p;~;Zd;Zd;5p:d:Zd:Y:Y:Y:Zd:d:d:Y:ʜ<;Zd:d:Y:d;K<%<%;K:d:Zd:Zd:Y:d:d;5p;:ʜ9Y:d;1{;K;Y:Y:Y:Zd:d;Y;<;p:d:Y:Y:Zd:Y:Zd:d:d:Y:Y:d;Y;Y;;5p:d:Y:Y:Y:Y:Y:Zd:d:ʜ:ʜ:d:Y:Y:Y:Zd:d:d:d:Y:Y:Y:Y:d:d:Zd:Y:Y:Y:Y:Zd:Zd:Y:Y:Zd:Zd:Y:Y:d:d:Zd:Y:Y:Zd:p:Zd:Y:Y:Y:Zd:Y:d;1{< <1q<~;5p:Zd:Y:Zd:d:d:Y:d;~<;~ :ʜ:d<%<<<=<1{<(X'<~;~ ;1{;Zd:d:Y;5p;엑;;K;<<~;5p;Y;d<^I<є=8r=7!=V=h =`y=Jw=.<ܪ<><1q= f=/+K<ܪ;Zd:p:d;l<~<<="4=7!===5p=[<;~ :Zd:d<%:Y<~<ܪ=+===8D=[<ܪ=~=;:d:Y;K<ܪ=){X=+==8D:d;d=~=rG=.=8r=K ="4=/+K=p#=d==I=鿗=鿗=ܪ==@=V==QK=> y>"==rG;~ʜ:Zd<>=8r=8D=8D=%==q=`y=pS===Y==h=d={a =(X'<1{==pS=ܪ===@;&:ʜ:Y:ʜ<%:Zd:Y;5p<<%<><>;;5p:Zd:d:d:Y:Y:Zd:d:d:d:Y:Y:Y:Zd:Zd:Zd:Y:Y:d:ʜ;~;;~ʜ;Y:d:Y:Y:Y9Y:Y:Zd:Y:Zd:ʜ;d<>:ʜ:Y:Y:d;Zd;~ʜ:d:Y:Y:ʜ;ʜ<(X'<:d<^I=7!=|;==QK< <=<$T<8r<~:ʜ:p;Y:ʜ:d:Zd;:ʜ:Y;5p;~:d:Y<>=2=8r=.=p#=u)E>b=_=?==H1{=[=O>%>M"=O=A^W:d;Y=/+K=SR=<=x=ܪ={X=h =V= =є=G>>Cw>$> > =ܪ== G=O>2>u>~9>=c,=є<;Y=Y=a==t`=йh==p#={a =9=̾>>>'> >,>'Ə>%=V==X'=>F3>>pS>`=-<$T:Y<^I=K =k=I=Ə==QK=h ==c,=鿗>> 12>Y> =o===y=>d=>`>lN>9h=]|> 12=йh=c~ ;Zd:Y:d;K<><(X'<%<^I<$T=3=QK=`y=V=A^W=+<=<:2<:2<1{=Q=7!==X'==йh==X'=rG=$=[=@=7!=`y=X'=V> >=?="4:d;Zd 12>%>J=O=<є;Y:Y;>>%=;&=){X:d:Y;Y<^I=[=P'=[=M"=5=V=;Y:Y;d;l;~ʜ;~ʜ;#d:d:d="4<;Zd:d;;:ʜ:d> ===V=(X'=em=Ə=йh>?>>Cw>> f=Դ={X==O>(>X%>R>)=;~:ZdpS> >u)=O= =sj=:=O> l>n>8i>GJ>F3>0> =ۇ=د>([>:>p>>K>|>z> y=˛ =M"=y==s>%>* >@>SH>OMk>8i>=Q0=))>8D>>͘>Ѹ3>>A =8D;~ʜ= a=k="=))=={X==B==O>>pS>'Ə>5l>2ݪ>Cw==J=|>>i->5>}>y>`y=%:Y<~=Y=sj=/==`y=7!==={a =\=̾=Դ=V===˛ ==.= =h> f>9>?>=><:2:Y;Zd<5p<<ӑb<^W<><%;~ ;~;Y:d:p:ʜ<><%=@=HM;~:Y:Zd;Y<^I />z>r=== =V===Jw=8r=|>J>:>3&v>=/<:d<:2<;=<є==h=> G>*>n>8r===l=Jw=V==~>=c,>i->^_> =4<:ʜ >>%===[=GJ=/+K=7!=y=t`>9>d>WX>%=<(X';Y y>, >=йh=:2;5p:d<>;~:Y:Zd<є=`y==޻=n=<~;K;~ʜ:d:Zd:ʜ<~<(X'< ;K:d:Zd;~< <>;~ :ʜ:Y9Y:ʜ;;~ʜ:d:d;d<%;;Zd:Y:Y;Zd<~;~ :d:p;d l>%=\5=!=[=~=A^W=HM==엑> >Cw>A > /=ۇ=q==o>79>_>Mn> l=l:d:d<==>>,SR>HM=ܪ=)=em= ==l>>8D>ID>ID>8D>r=Q0=>:>>>jl>x=<:Y>%->M"=ۇ=HM==d=O> |i>$>A#>Y!>X>?>>K> l>IT>?>Ҷ>>&Q>%=q<~=A^W=N|=鿗>=-===n=pS==>)>*U>:>:Bf>%7a>=ܪ=>&>ycu>`>^>oo=G=8r:p%>?>A>)=@<^I:d<<<==<ܪ<=Q<(X':Y:Y;Zd;d;~:d:d;;K:d:Y:Y:Y:Y:Y:Y:Y9Y:Y:d:d:p:Y;~<^I<8r<8rǠ>E=ۇ=q==7!=Y=8r="4=8r= u>u>=Y=|; l>)$>8D>/>r==={a =A^W=:2==ϖ7>* >Qܙ>IT>J==:Y:d>:Bf>G>?>n=))=?=[=QK=Mn= > l>V(>>\5>=c,=Y=~:Y;<є=@;&=޻=|> y>,>9>/>Y=O==l=5p=2=M">>T_>>}>9=<:Y;<$T=QK== u=ʜ> >=O==`y=q!>GW>?>o={a ;K:Y;d<="4=n==d=M"=bZ= f<<>;;5p<(X'=D=?=ܪ=˛ =<>:Zd:d<:d:Y:Y:d:Y:Y:Y:ʜ;~ ;Zd:Y:d= a=[=]="4<%;:Zd:Y:d:d9Y:d;d=y6===pS=> y>n> 12={X >P>o==m=Y=Jw===G>pS>+x>-v> G== u=">>[>:>u~>>=f:ʜ:Zd Y8>>=^W=|;=7!=p#={X=Դ>>!>8D>96>%7a>o==엑>+0!>p>ذ>>B=! >ҥ> > /=V==̾>>`>C>pI>i->&Z={XJ>)=i[=p#<>:Zd<<<7<ܪ<;K:Zd;Y<(X'<>b=AU==}l='4Ǡ>&>5$ >-->Y=AU==a7==8r=Mn=>pS><є>9> ={X<;:Y:Zd<,=u)=rG==Z>>9>F~>=c,>=y6==p#=){X=HM=l=>@>pۈ>k->1y=є=8r:Y;Zd<^W=QK=>=O> >,>8i>.>`=T==QK=BA>q>k->.P=b> |i>K=T==Jw<=<^IpS>:>4?=A=em;~:Y<~<<;d:Y:d;K<(X'<8r<+K<є<:2<:2<(X'<~;~ʜ:Zd:Y;~ʜ;<~;d;#d:d:Zd:d;K<~;~ ;5p:Y:Zd;~<%<1q<~;5p:Y:d;<8r~=_=l<(X'<=7!=k=|=׌==y=~=u)=+K=O==G===={X=ϖ7> >> =!= f:d;Y l==q=.;;d<$T===V=8D<=<^I<<<<==7!=7!=<~:Y:Zd:Y:Zd;~<><>;~ʜ:Y:Zd:d:d:Y:Y:Y:Y:Y:d;~;~:ʜ:Zd:Y:Y:ʜ;K<%<==7!=[=em=P'=+o>%> f=V===HM l>=ǟ=HM>">J=x=h=[="4<8r >0H>--=\5= >޻> 12=ܪ=d=]<=<%<~=*=?> >2E>,==sj;d;Y<=A^W=3== u=ܙ==9=Rn1<=<:2:d:d=\5=v<$T:Y;<=8r=:2=h =n=K = f<%;K:d:Y;5p<~;1{:d:Y:Y:d:ʜ;5p:ʜ:Zd:Y;5p:ʜ:Y:ʜ;~ <><(X';~ ;Y:Y:Y;5p:ʜ:Y:d;K==D={a <:Zd<<7=/+K=`y=}l=|;=X%=@<~:d:Y:p:d:ʜ:ʜ:d:Y;Y<5p;Y9Y:Y;d<:2<;Y:Y:d;5p:d:d<~<(X';d:d:Y:ʜ;d;~ ;~ʜ:Y:Zd:d:ʜ:d:Y:Y:Y:Zd:Y9Y:Y:d:d:d:Y:Y:d:d:Zd:Y:Y:Y:p:d:Y:Y:d:Zd:Y:Zd:Y:Y:Y:Zd:ʜ;~ʜ;Y:Zd:Zd:d;~<~<%;d:d:Y:Zd:Zd:Y:Y:ʜ;K<%< <5<:2;~:Zd:Y:d:d:Y:Y:d:Y:Y;~;;;l:Y:Y:d:d:Y:Y:Y:Y:Y:Y:Y:Y:d;Y:ʜ:d9Y9Y9Y:ʜ<~<%;~:d:Y:Y:ʜ<~<(X';d:d9Y:Zd;l;K;5p:Zd:Y:Y:Y:Y:Y:Zd;Y;K;~:d:Zd:Zd:Y:Y:d;~<%<~ <ܪ<ܪ= f<$T<^I;K:d:Y:d;Zd;5p:d:d:d:d:d:Y:d;1{<%<(X';K:Y:Y;Y<5p='4=<є=+<%;~ :Y:Zd;Zd;;~ :ʜ;5p<2=7!=H1{=7!;Zd;~;<>:d:Zd;p<$T=^I==h =){X<<8r<<=~=QK=f=HM===`y=7!=޻<;~:Y;5p<ܪ=`y===QK=8r;~ʜ:Y;Zd<~;Y:d:d<%<$T=/+K=(X'<є;#d:Y:Zd;Zd=sj=a=N|==0!=Y=n=8D<ܪ<:Y:d< =n=+K=={X=B=){X<$T=8r=>=`y==|=i[==є={X=u)=t=/+K<є=5p=em=p#=Rn1=%;K:d:Y;<(X';K:d:Y:Y;<><%;5p:d<><2!>.>=̾>=l===7!=l===|=4=Eb>4s>=c,>>=د=f=D=H1{=f=2=LZ>|=O=f= f<(X':p:Y>z>=H==Jw=8r==n= =ܙ=V=̾== a=8D={a =m="4<%:Zd;d<ܪ=/+K=5p=Q<$T=*===1{=йh== =8D<ܪ<~;Zd;Y:ʜ:d:p;Y<8r<~ <ܪ<%:Y9Y:Y:Y:d;Zd;:ʜ:Y:Y9Y:Y:Y:Y:Y:d:d:p:Y;Y<;;5p:Y:Zd;<1q< =B<^I;Y:Zd:p<=h =d=4=y=8D;Zd:Zd:d;K<%;l:Y:d< <2<$T<єd=>/>i=7=M"=QK=8D=rG={X=ǟ==!={a <ܪ;K:Y:Y<=QK=X'=====rG=Mn=B=`=j>2ݪ>A^W>* ==k}=X%=V=)==A> |i=y6==8D<8r:ʜ<(X'=$=l= =q=d=f=n=H1{=1q=Sb=>>n> ==z==$=5p==H==y6=ʜ==d=@;&<;~:ʜ<="4=bZ={a =m=E=2=Q<2<>= a=sj=k}=X'={X==y=Mn<=K>> l=6P=|;=){X='4=p#=SR=йh=y6= u==/+K<^I:d;5p<ܪ=p#=4=q==B=:2=<8r==7!=2;5p:Y:Y;Zd= a=em=n=H1{=[:Y:Zd<%;K:d:Zd:d:ʜ;Y:d:Zd:d;5p;d;K;~ʜ:d:d<%<ܪ=$=.=Q<ä<2=@;&={a =QK=2=Q:Y;Y;ʜ<;5p:Y:p;d<>;~ :d:Y;Y;;d:d:d<><2:ʜ:Y:d;~ʜ;1{:ʜ9Y:Zd:Y:Zd:Y:Y:Y:Zd:d;Y;;~ʜ:d:Y9Y9Y:Y:Y:Y:Y:Y:Y:d:d:Y:Y:d;5p;Zd;Y:d:Y:Zd:d:d:Y:Zd:d:Y:Y:Y:p;H1{<~<%<ӑb<:Y:Y;#d;d;~ ;K;#d:d:Zd9Y:Y:Y:Zd:Y:Y:d;K;K:d:Y:d;5p:ʜ:Zd:Y:d:d:d:Y:Y:Zd:Y:Y:Y:Y:d:ʜ:d:Y:Y:Y:d;Zd;K;K;~ʜ:d:Y:Y:Y9Y:p;Zd<~< ;;~:d:Y:Y:d;Zd;;;p:d:Y:Y:Y:d:ʜ:d:Y9Y:Y:Y:Zd:d:ʜ:d:Zd:d;K<%<%;Y:Y:Zd:ʜ:d:d<;~:d:d:d:d:Y:d;< <Y;Y:Zd:ʜ<;d:d:Y:Y:Zd:Y:d:d:ʜ;<:ʜ:Y;Y;:d:Y;~<;5p:Y:Zd:Y:Y;:Y;~ʜ={a =,<$T="4=.=̾=|=<;:Y:ʜ<1{=%=2='4<7<>:d:d;< =l=;&=̾>==c,=d={a =\= =O> l> l==5p:d:ʜ<=5p=Zd=K =@<2<8r<ܪ=8D=8r=={X=q==\=[=QK=8D=q$T==y==SR=k}:Zd:ʜ<(X'<<^W<<(X';K<<> |i>==~9Y:Y< =Q=em==p#=2:Y:Y;Y;d<~;~ ;Y:Y:Y:ʜ;p<<~<%<%;d<~<=޻===8D:d:Y:Zd:Y:d;5p;Y:Y:Y:d:d:Zd:Y;Y;d;d;5p:Zd:Y:Zd:d:Y:Y:Y:Y:Y:Zd;~<~<%;;;~;d<$T=,=P'=rG=8r=rG=8D<ܪ<8r<2=%="4<:ʜ;~ʜ<ܪ=a7=%=d= =7!=+={a =\=^W=ܙ=ǟ={X=|;="4<7=/+K=5p:d;~ʜ<=޻="4;Zd:p:Zd;l<:2<<ܪ=!=:2=8D=q:Y:d;1{<<><%;d;Y:Y;Y;d;#d:Y:Y:Y:Y:Y:Y:Y:d:d:d:Y:Y:ʜ;5p:d:Zd:Zd:d:d:p:Y9Y:Y:Y:Zd:Y:Y9Y:Y:d:Zd9Y:Y:d:Zd:Y:d;Y:d:Y:Y:d:d:Y:ʜ< <^I<:2;#d:Y:d:d;5p;;~:d:Y:Y;~<є<є<:2:d:Y;Y;K<5p;~ ;;~ <<%:Zd:ʜ;~ ;~:d:Zd:Y:Y;Y;~ <%;~ :ʜ9Y:ʜ<%<>;K:d:Y:Y:ʜ;<;~ :d:d;K<~;;Zd:Zd:Zd;~ʜ;d;~:p:d;5p:ʜ:Zd:Zd:d:d:Y:Y:Y:Zd:Y:Zd;~;d;~:d:Y:Y:Y;Y<:2<;5p:Y:Y;5p<5p;d:d:d;5p;1{;d;K;H1{:d9Y:d<~:ʜ9Y:d;~ <8r<>;5p:Zd:d;d<(X';~ :Y9Y:Y:d;d;~ ;~;1{<>< ;~ ;~ʜ:d:d;d<>;d:d:d;;Zd:Y:Zd;d<#d;K:p:Zd:Y:Y:Zd;K<5p<;~:Zd:d;~ʜ;~:d:d;Zd;Zd:d:Y:Y:Y:Y:d:d:d:Zd:Y9Y:Y:d;;K;~ʜ:d:Zd9Y:Y:Zd:d:Zd:Y:Y:Y:Zd:p:ʜ;1{<;;d:ʜ:d:Y:Y:d;~;~ʜ:Y:Y:Y:Zd:d:ʜ;~ʜ;;~ʜ:ʜ:d:d:Y:d;K;d:d:Y:Y:Y:Zd:p:Y:Zd:Y:Y:Y:Y:ʜ;5p:Zd:Y:Y:Zd:Y:Y:Zd:Y:Y:d:ʜ;Y:ʜ:p:Y:Y:Y:d:d:d:Zd:Y:d;Y;Zd;Y:d:Y:Y:Zd:d;Y:ʜ:Y:Y:d:d:d:Y:Y:Y:d:Y:Y9Y:Zd:d:d:Y:Y:d;Zd;~ʜ:d:Y:d:Y:d;5p;l:d9Y:Y:Zd:Zd:Y:Y:Zd:p:Zd:Y:Y:Y9Y:Y:Y:Y:d;Y;Zd;Y:d:Zd:Y:Y:Zd:Zd:Y:Y:d;Y;Zd;5p:d:Y:Y:Zd:Zd:Y:Zd:Y:p:Y:Y:Y:Y:Y:Zd:Zd:Y:Y:Y:Zd:Y:d;l;K;Zd:Y:Y;~ʜ<%<5p<~;Y:Y;Zd<~<(X'<~;Y:d;Zd;Y;5p:Zd:Y:Y:d:d:d:ʜ<~<1q<:d:Y;d<><~;;1{:d9Y:Zd:d9Y:Y:d;K<%<~;:ʜ:Y:Zd:d9Y:Y:d;l;;5p:d9Y:Y:Y:d:Zd:Y:d;Y:ʜ:Y:Y:Zd:Zd:Y:Y;5p;~ ;K:d:Y:d:d:Y:Y;5p;~ ;K:d:Zd:Zd:Y:d:ʜ:d:Y:Y:d:Y:d:d:Zd:Y:Y:d:d:d:d:Zd:d:d:Zd:Zd;Y;d<~<%<#d<1q<(X'<~;Zd:Zd:Y:p:Y:Y:Y:Y:Y;l<%<є<є<~:Y:Y;Y;l;Y:Y:Y;Y<;5p:Y:Y:Y:Y;Y;Y:Zd:Y:Y:Y:Y:Y:Zd:Zd:d;Y:d:Y:p;5p;d;d;~ʜ:d:Y:ʜ;d<><~:ʜ:Zd;5p;~ <><%;K:d:Zd;5p<<;Y;Zd;~ <%;p:Y:d;K;~ ;:d:Zd:Zd:d;Y;d:ʜ:p:d:d:p:Zd:ʜ;~ʜ;5p:d:Zd:d;~ :ʜ:Y;5p<%<(X';Y:Y:Y:ʜ<%:ʜ:d;~ <~:d:Zd:ʜ;~ʜ;~;Zd:ʜ:d:Zd:Zd:d:d:Y:Y:Zd:Y9Y:Y:Y:d;5p:d:Zd:Y:Y:Zd;l;~ ;K:d9Y:d;~;d;~:d:Y:Y:ʜ;d;K:d:Y:d;d< ;~ ;5p:d:Zd:Zd:p:Y:Zd:ʜ:ʜ:d:Y:Zd:ʜ;;~ʜ:ʜ:Y:Y:ʜ;;~ʜ:Zd:Y:Y:Y:Y:Zd:Y:Y:ʜ;~ ;d:d:p;5p;5p:Zd:Y9Y:Y:Zd:d;5p;l;~:ʜ:Zd:Y:Y:d;d<;~ :d:Y:d;Zd:ʜ:Y:d:ʜ:d:Y:d;K<~;K:d:ʜ< >$>&i>m9==D=,<`v<|q;l;$; `v; `v;;,;;s{v;D<$(>k>9>>J~> ==]<_z>h>?>>>!"===&6<<*Ԏ;;;s;;< `vT>?s?4~?>YX>.c=3L= O=FQ<&J >>D?>>>.$=Z=|=Lj>k#>i>W>:k>n2>!aq=v==J?SĚ>,.%>Z >n>^y>1> !=:==1<,<]<1;H;;<,;<=@m=|q==H==w==Y=*Ԏ<ػ > >(@>P> A =J==]= i<[<2@;;;M;;';> />5==?=Y=$<3<6;{v;;s;l;l;s;=q===F=Y=<<#X !>> e =====@m>1u>Ve>[m>AiL>D>=:k==L<ػ>җ>`>>s\ >-H>=Fq=or=Rx >r>?:>w9>#3=r"==6>jX>_z?X??gl?(@>To>J^> ns==P#X5B>y?1Y?o?U?Q]>mx>k>b===Z =>j'>U?2?\ ?Dc)>>]>w=0=L$>U>"?Y?!#>>+z==w=)[Y>'L>h->>~(>1>PC==R >6}> A =s=1=`=<`v<&6;D;;<; `v:;:8V'8V'9V'::<::b; `v; `v; `v:b:;:<9V'8V':{V'; `v;D[N;;';m;; ;;s;T;$; `v; `v;,;;s{v;Dh>Jp>5Q>Xk>>O > w>č>W? 5?>?j?>/?7?}?TR>?|?2y?>O>e>(>Tڛ> iA=Ͼ=;;Z.<;\::\:\:Z.<:#9.<9.<9.<9Z.<9Z.<9Z.<9Z.<9.<:Z.<:\:;#;)>n>$> ?'A?K6p??Kp?d?5z?I? >t?A>P>>_>˱*>>|>n>Wi&>2VK>'>>t=P==%=xܽ<<Ń=&18=g ==N?=T)king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rota500/asp.ndft0000644000000000000000000002426211744305700024777 0ustar rootrootTop500 Asp B<40CC4H$*9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A:&:A:qf:W;E;YB;e;e;YB;5p;E::qf99A9A9A9A9A9A9:A:qf:qf:&99A9A9A9A9A9A9A9A9A9;~;E;&;W;p;Ǖg;Ƌ;Ƌ;͡;p;W;E;qf;A:f:W:qf:qf:W:ٺB;&;YB;e;YB;5p;&;&;&;5p;M;A;)W;5p;YB;e;qf<>=V=`=[=HV=9=6=0V=9D!>؀>*n=b/=!+=p===HV= Y< <3<\g>>>>>>phT>Zܐ>I>(===I%==q=<>>>">(5>1H>B>[>>">?o ?ٺ>>ɩ>>>[=U>+0=%=V=9D<v>o>7>K>VSY>er>~>y>%> >隂?v?-,?? q6>c>r>>^s>=)d=Gg=q=_=ӭ= >W>#O>:L>O$>Zܐ>phT>|>+>$>?ݲ> >Z'>zl>)"=,=hp=ɪ>3 >#K>.>@3>hp>C>z>ڬ.>(?>Y>r>>}>X>==To=<>8FO>l >>j>R7>">">?i>Z=J=x8=2<>>1T>$ ;=b '=R*=Gg=6=<<<9D;;W;dD;Ǖg;ٺB;;Ƌ;ٺB;ٺB;<E< <9DB>+0>>W=b/=(=== ===5=Ǖ====Ƞ=`=9D<|<Wl>׾>>>}>2>3>> R>o >>yۆ>er>Jk*>'>W>>Z>>׾=Ց=w=eK=K]=P=V=_=j\ =nB=t=x8=x8=x8==[==)><>#@>#K>(>7>P>l >.>)W>>i=< ;Ǖg;W;;;;p;<9D_=R*=X=[=`=dO<9D<<~<2jh<9D<E;ٺB;p;K;~;e;E:W:&:qf:W:W:f;&;5p;YB;YB;e;e;qf;qf;~;E;W;Ǖg<E<2jh==+==V=Wo >")>&!t>ޤ>?>c>&9===To= |<'>z>G>n>'>?>T>t0> u=.~=='>ޤ>9>`'P>?>A>C>0%=G=E=-1<|<\g<<z=}=HV=!=r=젦>>Lc>p>{R>7>[I> ?7?1r?JQ?[U?`^?Y)?FZ?)p,>F>=>=z=k=S>U>>E>Ki??'?&?3P;?B&^?U=$?mV??z?jC?L[?H>>=`=i^=*n=6%/>`W>s>[I?H??,?6 ?>:g?GX?Rs{?`^?pP#?x8?n;?V?6JG>Ca>>==t=+<̰<$J>9>>>㾛?8?$&?3D"?:?=?AX?Hc ?M?Oyo?L?@B?)p,>->Z=K=L=<9D_=n#=ޤ=\ >(f>hG>/(>>>??!?'>5L>M=HV=Q>>1T> >>)>>^>Ҽ>?>r|>Cͺ>;==׾>eN>S>5>2->c==#=}=k=+<ִ<;W;E;qf;YB;A;)W;E:ٺB:ٺB;5p;~;<E<2jh=L==C;i9g9g9g:g:g:D<;D=(=?/=)d!<;g9g9g<=: =?=J==I@+>>k=O6i;>==;:g9g9g:g;?<=3m=`~=3m<:D9g9g;{=== ::D9g9g:g:g:g:C9g9g9g9g:gV=07=#=,;=:g;g<(=w=a>M>/B3>!{=a=:D9g:g:g;g<=%O6==2=?=YY<}9g:D{=:=D<_:D:g:t<=i;> >@>b>Uǟ>`={>?C>b>W)>=ni;>->%=m==N,>:*=G=51=t:D9g:g;g;;g:D:g9g9g9g9g;3m=*==g:g9g:g:D;dt;T?:D:g9g9g9g9g:D<= :=M+=L=<ѳ;t!:g:D==s/>d>+=Y=N;g:g:t.~G>T?>KR>B=v>>> =ȃ=*:D9g:DB>^t>>aS>I@=*=;g:g:g;= =y =Z>R=yn= =N:g9g9g:g{=?=<_(:g9g:g<=>-'>^t>H> >L=Z=XT>w>{==R:C9g9g9g;g= ===:K=C<#D9g9g;n='Y=܊>+>WOw>S{>!7=:=h_<_({=07=Mv>>{y=yN=#=a=c<<<}<=1=D=U=o=4;?9g9g:C:D:t:D:g9g9g9g===_yN<}9g9g:t<=3m=u[=Z_(>>T=2<_:g9g:g<'Y=Z_(=O>>DU>Dn>&= ?e>>=n=c:g9g:C<=R>v>>KR> >>KR==K;m:g9g:t= :=>T><>,=OW=!:K:g9g9g:g<*=?=?>f=O=d!<_(9g9gf>KS>66>\>P*>q=T<ѳ;:t;?=*i\=U> >x> I==:g9g9g9g;J=,s=?=dB=y =T?<'Y9g9g;dt=c=>q$>L>P*>&==T< TP= =<_:g9g9g:g<==0= :<ѳ:D9g9g<=T?=ʎ>*z> =嘮=o=h_=(<V=G==T?s>>Q=s<:g9g9g9gT= =Y>>>Dn>!{==: ;9g9g:g<5Q==~== ==g:g9g:D<=:*=Ϩ>=嘮==T-'>@>IG>%==`~=_H=<m:g9g:g<=*=ѳ==d=%`;n9g:g<t==07>`>!:K> =U=Z_(V= =t<;3m9g9g9g;!=;D=/===T?<:g9g:t<=22=ѳ==m<:g:g޵=L=/=R;n:g9g9g;!=9=:K=J=Y=Q0*z>2b>{=<t:g9g9g:C:D;<ѳ==K=-y <;9g9g;dt= ѳ=g=/==1<}:D:g:g;?=g==2>i;>V=5> )>f=d=| <:g9g9g9g9g9g9g9g9g9g:g; O>>"=:=d<t:g9g9g9g9g9g9g9g9g9g:g޵>w>v>=T=zG<'Y9g9g9g9g9g9g9g9g9g9g:g<'Y==6=?/=<t;n:g:g;!=%O6= %=Σ==ӽ)=5=:D9g9g9g9g9g9g9g9g;dt<<ܫ=g<<:D9g9g:g{>=~=^<ѳ;3m;<<'Y<< =>>:*=̘=`~i;>F7>c >Q>-'=v<;g;<<\i<=C==~==t!>-'> =Ϩ>=VJ<<;n<=(^=>,o>u >t>/>C(.=@<:t:;?{=T==%O6;J:D;<=2>'I>u(o>>R>D=d=;?;g;nT>@>eW`>V>t==0<ѳ;J;!>R====/<*<}=d=L==;9g9g;#D<===V=[=51='Y;9g9g:g<<= 5=cV=5==;D;?9g9g9g:g9g9g9g9g9g:g<~'>8>İ=m= > v_>*>#r> =>`>$J>>*z=d!<:g9g:g;g;3m::g:g9g9g9g;m<m=h_=s=a=x = :g><>+=%=T?;t!9g9g9g:g:D:g:g:C9g9g9g:Di;>>O= =m >7>U>E2>d=x <;D;?>%>0>']> =n=<}<=w=ܫ>G~h>)3>> >u[> =)d!</<R< ==m=n=C;n9g9g:g<=a>4>(>6>+4>w=~G<ܫ<'Yc>s>9>H>Y>%`>::k=<;JB>!7>B=07=x ;!9g9g9g:g;i=R5Q=>GM>%>>T=ѳ<ѳ;t!<=T?> >qp>>?>U>">>@Y=/=R v_>-y > v_=={;J:g9g:g9g:g<t=Y=>޵=G=J=3m;?:g:t<=U>@Y>t>,>#>66>= E=3mu>"?>=a=?/;t!:C:g9g9g9g:D22>\>T?>!7=魚=:K=Q0=c<< = 5=?=>R=ܫ=<:g9g9g9g9g9g:g;t<<<};t;dt:g9g9g;=K=y-==t4==2=,=;D=N<_ d>=*=p5<ѳ:g:g</=R=L=p5=Q0= >!:K> %>{=/>'I> >4=^<:C9g;n====D=XT<;D9g9g9g9g9g9g:g= :=ʎ><>&>2b== *z=[==,s;9g:g:D;g:D:g9g9g9g9g:<===;D=0>`>!>&>=/d>&Tq>.~G>']>w=:k<_;g;3m;J<;D= :==m==<~<;? I> v_>)d!> >:*=o<t:g:D;?<<;?;3m:g:g9g9g<;D=+n=====?/ )>> =J<=_yN;g9g:g:;;n;dt:D:g9g9g9g;t!<*=R5Q=R==c9= V=?=<:D:D;g;n;;<=0=u[=c9=c;J9g9g<}=t>V>/>'I>==ѳ<<;D>S:>z3>u[>::k= f~'>7>C>951>==c+>]u>>>u>V>: => 5>=07=T;!9g9g9g:gGM>>>L>@>L=*=<<=>M>U>OW>ߙ>X>>x=07= 5i;>4 >C(.>3>d=<=9g9g:g:g >+>;>.>i;=B>>9%>Bu>Bu>M>~>{=f<ٛ>C>Sx>C(.>=X<t:g:g:g:g;t!=c=> >B>d= =t!<:g:D==07>\>ݏ>>>>NR=O==c<=(^=>-'>;?>I>;?>=>Xc>E>>S:>===3m= :==x =07>M>(> %=?=R5Q;9g:g9g9g9g:D<}=g=<;?:D9g9g9g<}==d>>-'>=E=Tq=t!=4=c<_==,=Ѳ=d==d<:g9g9g9g9g:g:g:D:g:g9g9g:g<*==*=_===\i=-y =< f^>k>GM==>%>7X>/B3>s=U=:t9g:D<t=]n==+=U=?e<_(:t9g9g:g:D:t:D:g9g;i=x>4>+-H>>>4\Y>GM=ʎ=:D:g%`>+4>%> )=<*:C9g;dt=1= =T=:=s< :g9g9g9g:C:g9g9g9g<*==> >=͝=VJ<< =9g9g<=t!==O6=h_<(:g9g9g9g9g9g:D=g=R=n= %=J {<:g9g:g<= :=!:Kd>~'><=t=qp<;D:;<'Y>V>!:K>GM==x<ѳ;dt;?V>~'>>-'=?= T>= == 5:D9g:D;;J;!;m:t:g9g9g9g;t!<*=Q0= ==\i=ٛ>#D>B=07=rܫ>@Y>o>o>;?= =;:;3m;n~'>6%>AV>3>-'=51< f;?<;D=I@=>Dn>!k>> >>@j=*<;n;n>#D>GM==T;?9g:D<_=y->`>?C>KR>@~>M=ʎ<;t!<'Y=h_> >v>f>ٻ>ۥ>D>~>V=?/<;D;iu>=̹>Jg>;>2b=<9g9g:g:D<=:K><>->=̹>.>O= >x>qD>Y>N1>j>\>Y=,!{>L>[>L> v_=nw>&>i;==t!;t9g9g<=0>F|>>D>>q$>V>== :<*==OW>&>C(.>Sx>C(.>&=m<=:g:g9g9g:g<'Y=L=2= f=dB=< f:g9g9g;=t!>+>IG> >>V>İ=5Q===0=R==T=>"#>0 >%>={;9g9g9g9g9g9g;i;>-'>%?=J<=Y=rܫ=(^=<<==>g==O6=5===Cd>8>==<*:D9g:<t=3m=:*=?=t=a< {>%>7l >.~G>-'== ѳ:D9g:t<=qp=:k=Ow=̘=t=g;3m9g9g9g9g:;n;;:D:D<;D=>:*>*>=̹>3>B== :D9g:g<==T=Σ=d=07= =:g9g:D;=;;3m:g:g;?=s=d>>*>#r> =n<:g9g9g;?=XT=n=07===c:g9g:g:D:D:g9g9g:g >g=ʎ=T?<9g9g9g9g<=:*===<:g9g9g9g9g9g9g;3m===Tq=t=K<t:9g:g>/=d=='Y;J;3m;i= =n=c;:D;<;D<}v>>w==o<_:t:g:g;= :=*><>/>6l>~'==:D9g9g:g<'Y=_yN= E=ʎ=={<t9g9g:g>!:K>*>=ܫ=t!;?:g:D<t=TP><>`~>">XD>u[>*=D<ѳ:D:g;3m=: =͝> >>=ʎ=<~:t9g:D<=> >*>3ټ>'I>R=<9g:g<*=*>-y >>,>%>}>P*= = 5;m:D<;D= :>/>'I>2ԁ>&">g=;J9g9g9g:D<ѳ==m>/>)d!>k== ;t9g9g<= E>.<>">w>;>V>V=[=a<;m'>6l>D>5 E>d=/<;D9g9g9g:g;i=(^=>{>(>޵=n=*i\:D9g< ==:*>d>k5r> >>|>/B3=~=x <5Q ?e>->?C>.<> =TP<g9g9g9g9g:DGM>C(.>M\z>, >f=/=dt<<<='Y=̘>i;>q$>==3m:D9g9g9g9g9g:g;!< f= <_<#D:g9g9g;!=T?==T=== E= =*i\w>{y=E=qps>!{>ٛ>=<:g9g:D<=;D===~G=h_<:g9g9g:C;;?;J;:t:D>%>/>޵=5 >~'>d==,==:*)d!>6>=yN=_yN<#D:g9g:g<===܊==*z<:g9g:g<}=a=5Q> ?e>d>V=2<5Q9g9g:t= :=dB> v_>`=:>n>IG>^=> =m==:9g:g =[=n<_(9g:==>%O6>eW`>t>N>==;n:g;3m=,s=ʎ><>İ><==(^;g9g9g:C;?=g==ȃ=O=n={<=9g:g<_=D> I>51>Dn>(= ==(;!;g;3m=g=>g>O>=T= :g9g9g9g:D<;D=c=qp=R=n<m;3m9g9g<'Y=R5Q=n>Q> ==d=X=rܫ<< =;:<=Q0=n== f=T=T==-y ;D9g9g:g;J<=0=`~=?/{=!=?=3m;?9g9g:g;nQ=*=n=,s+>{===<5Q:D9g9g9g9g9g9g9g:C;?<==t=,<};t!:C:g;!= :=/== =p==rܫ<:C9g9g9g9g9g9g9g9g:g;n>.<> %=<m;;dt;i<(< I>C(.>`>N>d=f;?:g:D;t!;J<==(^===D==C<:D9g9g9g9g*z>A>a>Pl*>i;=| x>-> 5=yN=K<};3m:g:g;3m<;D==]n=| =T?<5Q;:g9g9g9g9g;?<== 5<g==%=,<:D9g9g9g9g9g9g9g9g:g;?<= =(<</:D:g;i=N=D=d>s>>> ==-y ;9g9g9g9g9g9g9g9g9g;gk>q$>+4>'I>nv=J<=N f;i:g9g:C:g:g:g9g9g9g9g;< =e=d=x=x =<};t!;=(==>>%> >w==%O6;3m9g9g:g:g:g:g9g9g9g9g;t!<5Q=VJ<=:*=ѳ=t!=t<};3m:<ѳ=h_=~h>V>(> =t=<:g9g9g9g9g:g:C9g9g9g9g:g<>:> =i==c >9>S)>@j> TP=s<<<*<_<5Q<_(=-y ===s=f<5Q;g9g9g9g<==>>s>*> >k=s=-y < fKR>j>P|>C>m…>%?= 5<}<,>!{>.<>%> ==<t<*=g>d>u[>g>>`N>W>-= <}<'Y<t=R=m=E> )>s> =%=]n<;D:g9g:g:g;i=S:=>-'>>GM== >u >zS>>`>>>0 =>>=Ow=VJ<<:D:g:g:C:g<=x=>Q=!==T?C(.>>>>w>=v>>>/=OW=;m:D:g:C9g9g:t<*=i==M=h_<ܫ<(;g:t;t!='Y=>6%>\(O>Pl*>=*={=c<<t޵=[= E=;9g9g;g<t=(=(^=Nw>>-'=嘮=p5;i9g9g;dt<=-y =f=Q0-'> 5>GM=!=m;?9g9g:g<ѳ=<~=T=u[=c;9g9g9g9g:g='Y=ʎ> >>Y=Ow=M+;3m9g;i==g$=^t=;n:g9g9g>>i;=i=<_(:9g:g:g:g9g9g9g9g9g;#D>)>6l>0>=t=]n<:D:D;T?;3m:D:g9g9g9g:gٛ>8/>Es>@>'Y>T=~'>0>@Y>::k> =5=a;J:D;g;;m;g::g:g9g:C>$>> =<:D9g:g:D;g::D:g9g9g9g;==u[=%`=5==3m,> I=2=n=^td> v_>~'=E=,s >(>22>)d!>w=_=N f=(=t==5>;>|>&>>g$>/=;D< fq$>C(.>R=>F>&"=?=T=!:K=C=>%>>>O>֬3>L>d=%= :{>>']>ٛ=G=i;<:C9g:g;==:>!{>IG>YY>P*>-y ==| =R=22=U>D>>H>v>RF>c>>=Z_(ٛ>@Y>M+>>>~'=~< ;:g;3m;<5Q= Z>-'>8qD>I@>@> v_=yN=H<@j>̙>??Q>܊>>-'=<==qp=9>%>NR>\>L> = {=;m;dt;g;3m;!=J {=܊>>"#>f>f=<;?;J=YY>>)3>~>޵b>܊E>'>u >k=R=c= =Q0=ʎ> %>C>T?>C(.>= E4 >4>>*>|Z>!7==/=-y =t=(^=^=m>"#>/>"==rܫ~'>/>+4>=$=o=qp=-y =c<==a=>V=07=5<_;g:g:g9g9g:g;g;!< =;J;:9g9g;=0=== =ȃ=%`=_yN=(^= <=G=̹=C<'Y9g9g;!<_(=0=R5Q=K='Y>*>!7>R=<:C:gi;>4\Y>Es>>>as=+=g:g:g<==XT=2=*=ȃ=x=g;3m9g9g9g:g:g:C9g9g<=~>İ>>OW>L>C(.>!:K=Ow=:g9g<3m=h_=s=魚=9== ::D9g9g9g:g:g:g9g9g<'Y=>>-y >>OW>1F>=OW<9g9g;3m=3m==yN=T=d!=:9g9g9g9g9g9g:D=3m=E>c>&>= =x <(9g9g<={==={<:D9g9g9g9g;?=K==̘==T<:D9g:g>>-'=!=t<::D;g;;dt:D:g9g9g9g;?=g=]n= =T=C<;?;~'>.<>;>22>M=a=R5Q!:K>?/>KR>C(.>(>T=T<};J<;D<<}<'Y;:D:C9g:D %>8/>C>>>"=Z=`~<;<v>>q$>)d!>!7> =?<:D:g;t!;i;J;;3m:D:g9g9g<3m=-y ===/=5=^t{=Z=J=3m;9g9g:g:D:D:D:D:g9g9g9g:D>> =5Q=rܫ<_!:K>@Y>7>^=d<=< =>::k>Dn>::k>`=d=]n=c= 5=ѳ>{>P*>XD>><>w>.<=t>d>k=ʎ=T?;?9g9g;=Q0=~>/>W>fL>Z>8/>=='Y=Q0=U>1F>>Ӝ>->NQ>:>>d=a<ܫ==^t=d>GM>951>Dn>4\Y>i;= E<:g9g:t<g=Z_(=2>6%>_7>nE">d>@j>^=t=(=C=E>Y>>8 ?W? :>>ԁ>;?=^== =c>>::k>ba>oJ]>_>1 Z=07=,s;g:D;m<(= 5=T>&">P*>_7>V>2>{={<t<=>Xc>qD>3?!?e>1>*>C(.==0= :=>w>IG>t>rJ>qp>C(.>g=P*;J;m;?;?<=I>>(>9v>/B3>N==;n;i=R>,2>>z>>6>>;>'I=dB=Q0=(^=>k>@>lJ>y>k5r>=̹=~=0;!;?;t!:;3m<=t=07>R>V==h_U>>'>>>Q0>4= =h_=<~=]n=̘> 5>KR>Z>K>q$=dB<*;;t!:g:g9g:g<;D=0=T=T=0<ѳ;n:g9g:t=_yN=G>.<>Td>S)>-> I=0==]n=-y = :=f=T>x>!7>İ==a<:D:g9g9g9g:C;g;?;?;:D:g9g9g{>f=:=n=d=[db=*i\=g> I>>d=嘮=*z<:g9g:D<}=*=v===w==̹=R<;n9g9g9g:g:g:g9g:g^>0>AV>9> :=ʎ=:D9g;t!<=t!= E=%=@==C<;J:g9g:g;3m;dt:D:g:D=g=Ow>%>N f>^t>V>0Gn==C;g9g;t!==s=L>k>=%=m…*>T?>d>Z>7l >{=L;g9g:D<= Z>Q>'>^=07=<(9g9g:D;dt;:t:g:gk>B>S)>IG>']== 5:D9g9g<ѳ=/=[>w> ==< =9g9g:g:D:D:g9g9g;?==m>q$>+>">v>=D*z> >g==]n>Y>!:K>*>!7> )==c<g;Ja>.<>;?>0>GM=E=: -'>*( >2ԁ>+>-'=ʎ= :;i;is> %>=t4={y>^>V=J=4<ѳ~'>3W>22>d=<}:t;t!;n;n;i<={===)d!<(9g:g=R=>B>5a>@j>22>s=n=(^<<5Q=]n=~>::k> >>4>(>22=< {<;Dv>>O>=ȃ=<~;3m9g;n=P*=>/>W)>c >WOw>2>{=| <=c=>><>W?>>>ђ >S >~'=t!<<=0=5Q>Q>>>IG>::k>-'=m<t9g9g:D<=_yN>{>8qD>_>m…>a&>?/> =<==*>@~>s>4+??>>>C(.== <=>4>@Y>i>u >f\>7X=O=%O6:t:D;<=1=>)d!>R5Q>_>V>0>Q=i<#D<ѳ=n>@Y>Q>??R>>qD>M\z=+=4=,=t>i;>Q0>z>I>w>K> ?e=T?;?;g;m;? I>+4>;>0>=y-=:D:t=qp>>>U>*>c=>z>>.~G==_yN==> )>H>u(o>>t#4>C>޵=B;i;;3m:t;==n=> I>g==_yN< =9g9gB>> > >}>W)> =?=p5=(^=M+=E>'I>Td>c9>U>'I=0(^>M>Q0>/B3> =E==R5Q==R=h_=L>>*>s= =| <'Y:g:g9g9g9g:g;;n;#D:g9g9g9gT>V=嘮=Y=^=T?=<_<= >GM>i;=07=:*<:C9g:t<=)d!=m==x=T=Q0=<;?9g9g:g:t;:D:C:D< f=>d>1L>C(.>:{>=̘=:D9g;=g=,==܊=ӽ)==YY%>N>_7>V>1 Z==K;3m:g;?= :=~G=> TP>=yN=,*>T?>d>Z>7l >{=VJ<;dt9g;3m= :=>{y>>x==<;D9g9g:g;t!;J<g;;#D;<ܫ=̘>L>AV>R=>H>&"==)d!;9g:g<5Q=>޵>7>=yn=s*>*i\>!:K>=< f:D9g9g;=s=d>=2==[db;9g9g9g:g:g9g9g9g:g>>g=ʎ=\i>>O=07=^>7><=a={ TP>^=嘮=T<'Y:g9g9g9g:g<==1=i=K<*:t:g<=5>%?>s>']>L=J]=| <ѳ;!;?/>Q0>4>)3>g >=*zk>@>K>=̹> :=ȃ= <(<=(^=>N f>eh>ȤJ>w><>s>T=C<;<=̙> >'>1 Z>#r>T=;?9g9g:g;i=0=>&Tq>KR>W)>I>%==*i\;;J=Q0>>>>,>>=>>"#=t)d!>S:>_7>N>!{=<:g:g:t;J= :=ʎ>M>@~>KS>@Y>=5Q=c:D:D=?/> >q>G>O>#4>F>|>+==(;?>fL>s>b>2ԁ=L=:D:D;g;<=x=>k>)p> 5>=/<9g9g=g=>Xc>>FH>[3>f>,>= E=,s<=7X=$>0>^>m…>]'>.<=&=g:D:D:g:D;?=g==a==*==:9g<=5>>d>E>>~>0=Z=:K=,s<5Q<=̙>-'>?C>N f>@Y>=y >%>)p>~'=O=X=t!=c<<= x=51> >GM>^=0=)d!;g9g9g9g9g:g:;;3m:g9g9g;n=(^=D=+=*= ==[db=c >{==f@> 5>->%> I=<5Q:g9g;n<*=^t=O6==/==<ѳ;?:g9g:g;t!;J<(;?;dt;=R=j>>8qD>HBT>@Y>8=E=:D:C;D=g==T==p=Y=B;?:g9g9g:g;<'Y<;D< =;;J=(=ȃ>>>>M+>C(.>!:K=t= 5:t:g;3m<m==[> > =i=i;9g9g:g;<(<;i;;< {=y >>+4>;?>/>-'=n=R;g9g:g<=t=> Q>/=J<=a;g9g9g:D;;n;3m:g:g<=T?=:><>B>d=嘮=>*>-'=y-=)d!;?9g9g9g;t=3m= %===0;!9g9g:t<=^=t4>B>k>d=5Q=,s;dt:g9g;n=?/=a>@> >D>k5r>as= <:t:g:t='Y=>Q> ====R:D9g;g/>!{>*>f=t4=x ;i9g9g< == >>|M >>R>S >J {=07=P*;!:g<'Y=>> >+>=O=h_;n9g9g:g;< f=x= >`>#r>=:=t!;?9g9g<R=>7>>u>>>P*==x <;3m<=:K>w>0>@Y>.<> =;9g9g:g;g{> >=_=)d!:D;n=p5= >NR>D>>w>+n=yN=u[*z>*i\>951>)p>= ;?9g9g9g:g;n<=j= Z===h_d>4 >@j>%>Q= Z=C<ѳ;t;=g=n>w>M>d=5Q=t:g9g9g9g9g:g;n=J=\i;!9g9g9g:g:D::t:g9g9g:g<;D= :=k=| =Z_(= :<{>w>/=:=h_<9g9g:7> 5>GM==<:C9g;>"?>= = % I>>==g<t:D9g:g;=&Tq=?=ȃ==<9g9g:g;g;3m:D:g:g;?==d=Ϩ>=07=T=i\=8 == E=C<;D:g9g9g;J=(^=x==/=t;9g9g:D<==1====n=YY;?9g9g>-y >&=嘮=<:t9g:g=yN=dB=g$ >0Gn>%`=?=^ >>=ȃ=u[<;g9g:g I> I=T==&Tq;i:g9g9g9g9g9g9g9g:g>{=a=M=g;dt9g9g9g9g9g9g9g9g:g<Q==,{=…= E=P*<< =<'Y<_=>>2Q>N><~>=VJ<< =;?<'Y=[==L<ѳ;;i<=>>ba>|>u[>/B3=m :>c >>x>2ԁ=?<ѳ:g:g:D;<=f=~G==^=VJ<<;g9g9g9g9g9g;n===n=:K=p50>U>DU>d=?e===!:K{y>==:K=;9g9g9g9g9g9g9g9g:g<'Y< =(^=*i\=<;dt:g;J=c=?=t4>B>%>"#>==zG>!7>1>/>f=t4=x<:D:g:g:g:g:g9g9g9g9g;!= :==D====C<;;?==Tq>Q>>+>*( >İ=嘮=zGq>-'>= =m=;9g9g9g9g:C:C9g9g9g9g:t<t=/=u[=~2=YY=c=ʎ=O6=?/4>,s>=s=K>[>>F>U>[>Z_(=U< f v_>==ٛ>D>>c>ԡ>=>_7=%<_<#D<==c=>V> v_>+n>f=Z=T<;;3m;3m:D;dt=g=̙=Z> >*z=d=| dt>>>>>0=*~'> >-'=Ow=K>[>">y>@Y== =g<ѳ<<==#=:>޵=*=t<;;g:D:g9g9g9g;g<== 5=<<'Y;n:g:Ci;><= ==22,>Y>{=T= :;g9g9g;#D>!7>=O=p5;t!9g;L>)d!>q$>T=,;g9g:g<=Q0===R=+n<:g9g9g9g9g;dt=a=>-'>>-'==]n;g9g9g<=-y =,=T=#D<:g9g9g@==i\<m:g9g:gd>>İ>+=OW=0;!:g:g:C:C9g9g9g9g9g;<5Q=L=m=| =C<5Q;J;t!<}=c9=:>>-y >>>::k>#r>T=x<;n:t;g;g:D:g9g9g9g9g:g<}=K=/=:k=:k=/=VJ<%`>>OW>M+>IG>0>=y <;i;;;n;dt:D:g9g9g9g:DGM>5a>F7>C(.>+>v>= %<;g;#D;t!;;t!::g:g9g:gg>f>*>'I>-'==N f;i:g:g:D::D:D:g:g9g9g<=%`===2==YY\==*=T<:D9g9g9g:g:g:g:C9g9g9g:D{> >V=ʎ=T='Y=c==Q0==2>%>@Y>3> =xw>+-H>7X>-[>-'=Эy= =Q0=_yN=>{y>T?>է>s>f>?e>&=s=c=='Y=,s=t!=~=T>g=…= E=<~;J9g9g:g;=1=;>"#>H>W>N>-[>{=5=a={=>8qD>M>Эy>p?>J]>R>> ==Z_(=c=(^=x =ʎ>d>)">1F>%>%?=<:D:g;g< ==A=t>'I>Pl*>`=:>W>6f>=8=;D=_yN=T>^t>Ê>>?1?E>>R>+=x= == :=^=>*>Pl*>\>KS> v_=͝=;J;t!;!<==>&>@>Rv>J>*( ==m<ܫ==y->]'>X> ??S >_H>y >0=̙==c=^>{>7*>`~>m…>\>-==1>+4>']>== :<;D<=g>/B3>f>>n>->U>>== ==t!=07>,2>W>e>U>&Tq=Ϩ>= :XT>> E>>x>@j=T= ==(=*i\=>d>2ԁ>B">1L> =<<g;?:D:g9g:C<(==qp=w=0<<;3m:g;3m=Q0=G>/B3>T?>N>']=m=y =_yN=t=g{>d>=J= 5;J::D9g9g9g:g;?{>>==C<9g:g;J<*=0=Z_(=R5Q=+n<<=;i:g9g9g9g9g9g9g<t=:K> ?e>']>2ԁ>)p> TP=?<ѳ9g9g:g>AV>Q0>Dn>!:K=5Q<*9g9g:g<ѳ=f=̹=~=Ow==;9g9g9g:g:g:g9g:g==T>#D>I@>WOw>L>'I=yN<ܫ9g9gGM>: >F|><~>&=y-<9g9g9g;m=]n=ȃ=Z=…=Y=?/;9g9g9g9g9g9g9g;m=x =Z>>#r>&=~=R<;D9g9g9g<_=a=y-=U==;3m9g9g9g9g9g-'>>GM>== :;J:t:;3m;g:D:g9g9g9g<R=c=w==ѳ=_yN<;!;<t=T=>a>1L>@><~>#D==<;!;J<<(;:D:g9g9g9g:D< f=x ==͝== Z=qp<<;D"#>AV>Q>LW?>1F><=< >>OW>KS>Es>-7>4=<;i< =<;D I>"#>.~G>*>==C;?:D;3m;;?;D;3m:D:g9g:g<==Q0=D=U==={=R<'Y;n<=g$=U= > >g=d={Y=yN===-y =t=#D=XT=/> >>>d>_>-=Ϩ>=ٛ>>OW>IG>@Y> v_==ѳ=\i=h_=~G>>n>I>r>>Tq>Z=:=%O6=g= =*i\=~'=嘮>>> d=0=^t;!9g9g:D;!=p5>>4\Y>\>k^>a&>@>i;==qp=g=i>IG>M>? 8? >>5>-== :===>%>F7>S{>@j>==g:D:g;?<}=~2>/>>>f\>ui>l{>KS>GM=51=Q0=u[=_H>u >? .n?(?)"?>>dR%=Ϩ>=3m=(^=m>s>KS>s>}>nE">@Y>=Z_(</;->WOw>gs>_>@~>^=/== :=t>u[>?i?)?)?E>Ϩ>>k5r==J {=-y = >>\(O>">:*>0>S)>"=<ѳ^>0>B><0>/=9=KI>>?E?>>>>C=d=T?=)d!=D>-'>Sx>|Z>k>zB>LW?> =qp<t>d> ==:*<:t:D=(^> ѳ>w>x>0>> >u[>2b=X=^t=+n=rܫ=>/B3>]n>k^>\(O>,o==*>Pl*>y>x>M+>==s=J {====Z>"#>0>%>{=:*<;;3m:g9g9g9g:g;?<;J;m:t:g9g:C<=y =2>>i;>V=ʎ=d=J {=>s>B=ܫ=:*>?/>M+>A>q$=Ϩ>=R:g9g;1L>Z>i>^t>9>,=4:D9g;=c=y =yn>Y> ==<ѳ:D9g9g9g:D;;;dt:D;=N f>{>9>`=:>n>dR%>@Y>4=J {:D9g:D==dB> >>B>@=<=9g9g:D;t!;;g:D;3m==07>*>Pl*>^t>T?>-=5=%O6:9g:g<= >f>~'>N=2=s<9g9g:C:D:D:g9g:C >*>7*>+4>=<*:D9g9g;n=u[=Ow>{>V=5Q=rܫ< =9g9g9g9g9g9g9g:g<=d!=E">*z=yn=~==̹<;D:g9g9g<=x ==2=<_;g9g:g<=-y =qp=^t=c>d> Q=yN=R<;t!;g;;?;;g:g9g9g9g;!= ѳ=g$===C<;;g(>$̙>.<>(>=*=KGM>1L>@Y>9> 5=O={2b>-[>;?>2Q>ٛ==_yNa> >ٛ>=<;g:D;<<#D;J;g:D:g9g9g:g<}=J {=5=T=j=̙=g$<ܫ<;m<=C=y =&=[=嘮=m=)d!;9g9g:g:D;:t:D:g9g9g9g:t<=0=u[=zG=L=g<\i;:D;t!<==%O6=T=t==,s<'Y9g9g9g9g9g:g:g9g9g9g9g:D;!<ѳ= %=R;9g:g:D:g9g:C;g<;!:D9g9g<=h_=E> >O>k=@=h_=R<<ܫ==t=>.<>Y<>Z>-=E=;;?;!;!<;D=c=g=*=R= 5;!9g9g:g=c=̘>&>::k>Dn>::k>V=T=rܫ=(^='Y=>T>WOw>>>ê>O6>^2==<<<ܫ=R=>d>B> )==A;t!9g:g;!=h_>V>4 >[>ilK>^t>=̹>==9=J {=51>/B3>>M??>>>2Q==<5Q=u[=_H>']>KR>W)>Dn>`=OW{y>@~>f\>t!>k5r>HBT>==*=1=Ϩ>>[>L?9?% ?&ƺ? ѳ>+>k^==+n==n>~'>Pl*>w>">td>C>=L;?;<+n<ѳ=`~=[>/B3>Y>h%>^t>>OW> =<<5Q=>]'> ??&ƺ?(?->Ϩ>>r\=E"=Q0==X> v_>ba>/>>aS>Y<>-'=,i;>3ټ>C>=J>L=yN=<~;n;=>2ԁ>Tq>? O?>!>h>KR= =a=t=?>>[>|>>66>U>d={k>><=9= {>g >>W?>Σ>>w>GM==g$=t=h_=t4>9>g >u(o>eW`>5a=?=(^<;J:t:D:g;g<*=x =5==M+<ѳ:9g9g< ==%`>^>Es>qp>u(o>M\z>GM=yN=t=C= ==>>*>;>-7> I=t<;dt;g:g9g9g9g:D;?;i;g:D:g9g9g:g<_=n=>d>d=m=Ɉ=i;=C= <~'> >==<:g9g;<=4==?==:*=]n= :<;9g9g:g;g;3m:D:g;#D= =>>@>N>C(.> =J<= ::D9g;?====̘=:=嘮=dB=w22>\(O>k5r>_>;?>%?=Q0;g:C;i=,s=OW>>-'>O=d=޵>::k>`>oJ]>fL>@> D=_yN;dt:g;=3m=Ѳ>d> v_>8> =*>Pl*>^t>T?>.<=[=: ;:g:g= =>>k>\9>=<9g9g:D;t!;;g:g:D >)p>6%>+4>d=/=;:C9g<'Y=ѳ=> )> =t= <#D9g9g9g:g:g:g9g9g:t=R==:>=yn=Y=Q0<=;g9g9g9g<=TP==n==:t9g9g9g9g9g:<t=22=qp=a= :<;:g9g9g>d>=O=,<;n;<;D<}2b>>==:K< ;J;Jd>GM>i;=5=<;t!;{=d=Y=?/;?:C:D;<(<;?;3m:g:g9g9g;J= =x =t=t={=t<=;;3m;J>%>)p>w=>!7>*>8>Q=t=L>u[>>>4>.~G=n<;n;dt;J='Y=51=~>%?=魚=<_(:C:g;n=)d!=;>!:K>C>Pl*>C(.> =a=M+<<t=Q0=>qp>>ߺ>>ƙ>>={<;J==U>-'>2Q>?/>,s>=x;!9g9g;g<'Y=Q0=>+n>Q0>]'>Rv>-==rܫ<>m0>N1?k?>>o>@=<ܫ{>9>a&>m…>\i>,2=J<<ܫ:D:D;? v_>Dn>S)>G~h>%==O%;?;n=rܫ>M>>0?4? D>?>]>F|==/<=>w>L>u >>qp>AV>T=,s;;;?<(<_=>>%>0>'I>=>~W>Y>}B>>>x>*( =s=4<=g$>k>C(.>pI>|M >m…>?C==)d!;;n;t!;<(==y =T>/===C;9g9g+>/>>R>-'>KS>k==*i\<= =s>!7>P*>^t>O%>!7= 5>@Y>C(.>'I>޵==u[=R<B>%>Q==Z_(;:g:g9g9g9g9g:C:t;m;g:g9g9g:g D>-'> TP==T<=:g9g:<= :=k=R= =f=+n< <};3m9g:g;3m;t!::g:tw>+4>:X>.<>i;==g:g:g;<_=u[==Эy=ʎ=:K=4!:K>Es>UE>J>']==)d!;g:g;?=c=I=:>v>>=:=rܫ<'Y:g9g9g:D;%>KS>Y܊>P*>+-H=…=;D;:g;g==:k>+>N>=d=x<9g9g:g;<<'Y;J;<=c=ȃ>GM>;?>HBT>>>=:=!:K;?:g:D<*=~G>>>d==:*< =9g9g9g:D;;n;3m:D;3m<ѳ==J]>a>!7>&==s=,;n:g9g;?=p5=Ϩ>=Z=yn=y-=J {;t!9g9g9g:g:g:C9g9g;3m<5Q= =ȃ=9=d=D=3m<ѳ;3m:g9g9gV=yN=^>@~>L>*=t=Q0<'Y:g9g:g<'Y=Q0== E==(^;?9g9g:t<==>`>!{>:==`~>g >m0>>Z>4 =ʎ=%`;:g;n=YY=E> >'>{= E=R:g9g:g;<=> I>&>/B3>#r> =a<ѳ:g:g)">2b>>>Y>l>f=x w>-[>9v>'I>V={;9g9g:D;<_=s>{>>)d!>k>T=^->>0>H>>p> )==M>@j>N>>OW>-'=?>>i;>=Ϩ>=VJ<;9g9g<=a>2b>u[>>,>>C(.=t4=<;<ѳ=D>-'>;?>I@>8/>d=<9g:g:g:D;?"#>V>a&>?>=T=S:<ѳ;;?=*i\= >>(>==C:t9g:g9g9g:g;<ѳ==;D= :<}:g9g9g:g*z>v>=:=51=x <<;:D;?=R5Q=ȃ==d= w>a>d=L=R<=:g9g;gg> v_>+n>!{>4=o<_:D9g;3m<=M+====g>#D>.<>%> I==;dt:C:<=p5===db=I=g:g9g:g;3m;?;J;n;dt;?<=R=?>~'> v_>GM==s<;:g:g;!=K===E={=[=n=p5d>L> ==dt<ѳ:g9g:g<'Y=C====;?9g9g:D޵>8qD>L>-=2==;g:g:D<_==E=魚=ʎ=| <}9g9g:D >?C>Q0>0>g=D=c;n:g:D==n=d>=:=%`>']>=t=:*T=?==Q0<;D9g9g:g;?<===(^= V=Z=j=`~<=:g9g:g;<==VJ<=8<:g9g:g:t;g:D:g:D<===̘==E=n=J {<=:g9g9g:D<= ==C=*i\<:C9g9g:g:g:C9g9g;<=C==o=?=| =<;D:g9g9g9g:DT=9=n=)d!<;D:D9g9g9g9g9g9g:g$̙>@~>.~G>=\i;J;;t<(< =<<=B=s=YY= <;D:C9g9g9g<t=:*=̘=t=%== :^>P*>td>g >'I=2 >Q0>u[>j#>+=51<9g9g:g:t%>Es>;?> TP=/<9g9g9g:g<(=c=s==^t<ܫ;J:D:g:g9g9g9g9g;?<==N<*<;D;:D:g:g< ==L=>T=O=I=g;g:g:g9g:g:t >>> d=E=T>%>%>=…=s<;=:g9g9g9g9g9g9g9g;J=(=x ==/= =3m<;t!;dtd>> 5>'=a=,<ѳ:D9g9g9g:g:g9g9g9g9g;i==p5=a===1<;dt:D< ==&Tq==> => =p=='Y;i:g9g9g9g9g9g9g9g9g;g<='Y=f=t!=K=<3m:D:g;g<==C==~=~==?/*z=t4=n=g=-y =c= :=T?=>">Dn>g$>\(O>%= E<ܫi;> %>=!==M+== :=zG=t4>Rv>>i\>Tq>k> v_=g>"#>ٛ>{=o=-y <*<=p5>d> >>R>ȤJ>̙>Py=n<<w><> =ȃ=K<\i:D:D;t!:t;J=I@=> >a>=E"=~'<ܫ<;D<=(^>>>d>+>L>g>U=ʎ>q$>=d=S:S)>C><>Ѝ>I>+n=I<><>:*=OW=&Tq<;D;?;n;g:D:g;dt<5Q=h_=t=x=Z_( I>N f>u[>nE">7X=:=R5Q<>v>=Эy={< f><> I=ȃ=:g9g:g<'Y=g=3m=)d!<;9g9g9g;n=p5=>-'>ٛ>d=Ow=,s:g9g<==a=[db=;9g9g9g9g:=?/=͝> >'>/=n=:g9g9g;=g=Q0=M+<;:g9g9g=:*<t:g9g:C>>w=G=*=?/g>>->, >M=t4=t">+4>?C>>OW>(> == ;!;g:D:D:D:g:g9g9g9g:D I>']>8/>6>#r>g='>q$>L>w=:=^t</:g:g:C:g:g:g:g9g9g:g<(==T=:K=̙===C<;n:D;!=c= :=0=E"=07==| <:t9g9g9g9g:g:C9g9g9g9g:D/>7l >.> d==GM>"?>M>޵=OW=g=_yN=g$=t=>C>>I>Z>>"==>1F>AV>: >f=07=t=f=s=>'I>w>ŵA>/>>>">/=I@/>k>%>GM=07=T<=:g:g;n;t= :=y->İ><~>L>C>%=t4==3m=C=>KR>n>$??9>R%>ݏ>&=/ v_>C(.>N>>>-'=2=g;J;n<'Y< >->@Y>7>==^t<*<=#>IG>>? ? >}>̙>)p=i;+>T?>_7>M> v_== :d>L>L>{==,;!;=M+>!7>S >1]>>lK>!>o>-'=| <t<=?/=d>!:K>J {>W)>Dn>= E= Jg>nv>>R>TP>8/==A<<t%?>'I>2ԁ>% ==~2<<'Y< =;g:g9g9g;n)p>KR>E2> =嘮= = <<g===R;?;g:t9g9g9g:g;3m;?;i;;dt:D9g9g=*=O6=c;9g9g;t!<==)d!=!:K=<<;9g9g9g9g9g9gM>%>&=T=p5;?9g:g;!<m=a== =><;:g9g9g9g9g9g9g9g<=>-'>2Q>@Y>1L>O=O6< =9g:g<=*i\=5=U=Y=>;?>EA>::k>u=^>+4>7l >*> )=/<'Y9g9g9g:D=%O6==E=ӽ)==;g9g9g9g9g9g9g;=UE=T>^>İ>w==Z_(;i:g9g9g<ѳ=v=s=s={<:D9g9g<;D=Z_(=2=ʎ=51={<;3m9g9g:g*z>O>^=[==(^<::g:g:g:g9g9g9g9g;i=g=]n= =T=C >!7>/>->V=5==>/>@j>@Y>)d!>=Y=R</;?;?;?;::g9g9g9g;dt<====O===c<'Y<;D=?/=ʎ>d>+4>=̹>::k>$̙>{=t<;?;;;?;;g:D:C9g9g;#D~'>"?> v_>^=*=K;!:g:D:t;3m;g:D:g:g9g:gg=T=OW={=?/=;D=?/=_yN=m>>4\Y>Z>Xc>*=̘ I>']>2>*>=:=TP=rܫ=rܫ=?> >^2>>>>8>R5Q=ʎ=<<_=c=m=Σ>޵> )=G==;dt9g9g:D;=3m=t>!{>F7>W)>N f>.<>/=y =x =T=>9>> ?b?N>0>>'I===g==x =>ٛ>::k>C(.>0> =)d!>Q>a&>Y<>: >=~G=Q0=Z_(=E>a&>Y??? Z? >">WOw=s= ==:K>Y>@Y>fL>p>^t>.<=a=)d!<;J>C(.>V>M>->{=<=,=y->bM>L?K!?!kF?"`-?9>2>\=0=c=g=>nv>P*>vn>,>r\>AV>@=\i<t<<=Q>!{>0>+n>-'=ʎ=(^< =;?=:*>::k>,>/??)>$>>7=/=c<_=> >Es>p5>|M >lJ>=̹=t4=Q0<<<;D;J;?<=s=>g==ʎ=e{>i>]>ƙ>]>>gs> )==$̙>P*>]n>L>q$=n=w>F|>nq>m…>AV>w=51=UE=<B>$̙>GM==dt > =07=s=R5Q=g )>-'> =*=]nO>.~G>>OW>.~G>"=n<9g9g:D<t=N f=O6=y-=_==(^<=;9g9g:g:D:D:g:g;3m== >&Tq>KS>Y>L>%=<*9g9g:D<=x=>==ʎ=a<'Y:g9g9g:g;g;3m:D:g;=0=E">+4>R>_7>S{>+4=<:g9g:g< {=D=yn>^><=*=Rq$>AV>NR>AV>k=ʎ<5Q:D9g9g TP> I== </9g9g9g:g:g:g9g:g>q$>)d!>/>=x<:9g9g:D=;D=/=07=*=?=?/;n9g9g9g9g9g9g:g<=^=d=E"=;=?=t<'Y:D9g9g9g< ==C=a=t=^t<t:D9g:gV===~'> v_>> ==K >!7>.~G>+>B==x <;J;<'Y<'Y;i;3m:g:g9g9g;3mk>8>*>']>-'==\i=%==| =g< =; >N>'==< ;3m:g:;;n;g::g:g9g:g)p>Q>T?>)p= f ?e>$̙>.<>%><=n=w=C=1=T=…>H>>l>>f>Sx=ʎ<ܫf> )=t4=n=:g9g:D;=-y =i>!:K>Dn>T?>I>*>V= %=K=C=̙>"#>İ>א>r?E>޵b>U>)d!=x< {<=T?=a>>>>F7>2ԁ>Y=*>Q>`=:>WOw>6f> )=#=&Tq==X>H>Ê>1?}??f>">\=@=<=>^>C(.>k^>u[>cψ>2Q== :;?;?>Dn>V>L>,2>=<<=o>KR>qD? ?Ȥ?s?a>U>a&==<5Q=?>a>W)>~W>+>w>I@>=XT޵>%O6>2>+>==;;3m={>'I>i> ??k>j>9><~= {=*< f=>^>N>w>;q>u(o>C(.>,=T?<ѳ===Z_(<:g9g=R=[>Y>>>`>s>g>h%>w==*>Xc>g >V>']=Ϩ>=c )>@~>f\>gs>@>^=j=a=,<<ѳ=T?=07>L>+>q$=[=w >=嘮=n=Z_(=g<<'Y;n</=3m==%==Y>~'><=T=x <=9g9g:g>0 >@Y>1L>=<5Q:g9g;3m<=m…= E=:=̘=D=?/<;:g9g9g:D;;;3m:t;?=*i\=>'I>M>Zv>N>(=9=(:g9g;t!==:K=:> >=T=| , >Sx>`~>U>-=?= ::t:g:t=R=/>+>~'>-'==tq$>B">P*>C(.> 5=:= ;:g:g<=o>>-'>i;=[=xQ>>)p>>=/===ʎ=[db;9g9g9g9g9g9g9g:t<_=d=:=E"=yN==0<;dt:g9g9g=[==qp<t;3m;g;n;t;?;dt:g9g9g9g:g<;D= :=x =d==M+<;:g;< {==d>k>> ==dQ> )>=T= <:t:t;< =< =;:t:g9g9g:g<}=6=d=y =n==(^<;g;#D<;D= 5==Ϩ>==Ow=i\=(^;9g:g:D;g;;3m:D:g9g9g9g;?<=\i=R==Z_(=g޵> >%O6> =t<:g9g9g9g:g<=g= :<ܫ<(9g9g9gd>İ>(==T= <*<<=>>f>nv>C>rJ>%=<ѳ;3m:D;===n=*==t!d>->;?>.<>==F^t>y >Ӝ>ؖ>>K!> I=[db<;D;n<*=2> )>&Tq>->=07=R5Q;3m9g9g;3m;?= :=ʎ>L><0>I@>?/>/= =^t<w>TP>P>^>W> >eh>/=D<;!=C=Z>-7>T?>^t>KS>= E<ѳ:D:t;i<= =51>'>0>@>4\Y>GM=5Q=0;?;dt=?/>O>>x> ?66>!>>5a=51<_*z>@Y>h%>td>a&>0==;;;!;!~'>!:K>&>T=5lJ>w>2>X>L>)3>=n=6f>a>nq>]u>-y =Ow=;?;?;;;$̙>y>F>>>;=O=,u>@>P*>@Y>=Tq<ѳ;dt;:g:g:C:D>4 >7>=E"=='Y<ѳ< =;<_=> I>İ>=ʎ= :;3m:g:g9g9g9g9g:g:D:g9g9g:C=T=> =>T==ag> >+4>!:K>k=?<:g9g;<t=C=%`==2= = ѳİ>::k>Es>;?>=ȃ=:9g;3m< f=R=0==?=~=: ;?:C9g9g:g;dt;i;!;?;<= 5=Σ>>@~>KS>@>%`=*=;:g:<*=/=?> >=T=p5;9g9g:g;g;;?;;;!== E>c>-[>;?>.<>=J=c;?:g:g<}=ѳ=>>+=d=e;9g9g:g:t;3m:D:g;g<}=qp=T>w>GM>d=嘮=<ܫ;:g9g;=0==a=;=y =:D9g9g:g:g9g9g9g;g<=h_= ==dB=Y=(^<ѳ;g:g9g9g;J=0=R=R=3m<'Y9g9g9g9g:D<;D<_=t=<m<;?:D9g9g9g:Dv>>0 >@Y>q$=Ɉ='Y;?9g9g9g;?==/=x=e<:D9g9g:g<'Y=^t=Ѳ> >d>޵=/=+nS{>>N>~W>%==;3m:g;dt=0==>==x<ѳ9g9g:g:t<ѳ==?>x>L>-'==x  %>>Q>O>Ȥ>Y=…=UE<(:D޵> >)p>=yN=0:D9g9g:D;t!<==x =a>d>>d=~=t!<9g9g;=>!:K>>>X>P|>\i==qp<\i:<t=y >O>1F>@Y>,2>+=zG;n:g:g:D;3m<=*= Z=>g=T= E=%O6:t9g9g;J=R><>a>է>}>f>/=n=T?>+>9v>'I>=qp;:C:g:g:g;3m>Dn>P*>-7>T=:K=;!:D;3m=g=>^>`>w=ȃ=R:g9g:g9g9g:g:D;J<=f>^>q=:=x <:C9g:D<B> >GM=~=t<5Q:D9g:D<;D= :==~G=?=Z_(&>%O6>ٛ= ==g;dt:g:D<=22=O6=@=n=RY>B>"=嘮=d<;:g:g;== %=n=~=<t9g9g:g:D:D:g:g:D<= :=M=E== ==^t<;g:g9g:C">R=J=;g:g:D:D:D:g;dt<=B>1>)d!>Q=w;?9g9g:g:g:B>3ټ>,s>޵=T;t9g9g9g;g-'>w=ʎ=!:K;g9g9g:D Q> =m==rܫ<;9g9g9g9g9g9g9g9g;g<=8=rܫ=x =K<m<:g:g;=g=a=n>޵>=Z=:k=Q0>.<>'I>{=w<;D;?</<+n;J;n<'Y<_= :=<(;dt9g9g9g:g<*=d=*=L=E=D=VJ<=<*< f==y >ٛ>a>P\>">KR=~=*;J;?<(</<=;D==n=O=,s<\i:g9g9g:g:g:D<_=%`==G=$==Q0?C>)3>>>rJ>k=,<(:t;<=c==:= =n=x <;dt:g:g;g:g:D<=T==a=5Q=s= :<'Y;t!:D>>o>I>U>"> =;?9g:g;m==n==[=5Q= >hg>D>H>Uǟ>/=K;3m9g9g:D`>;?>3ټ>d=DT>d>i;>f=+=| <;:g9g9g9g9g9g9g9g;J=g=_yN=/==Z_(=g<g:g:t<=| =Ow>>>k>O=嘮=<;:g9g9g9g9g9g9g:g >GM>&><=܊=,g>+=07=o=&Tq;J:g9g9g9g9g:g9g9g9g9g;n<̹=;D=x =| =R5Q=<#D:D:g:D/>~'>O=Ow=;D;J;<<;:D:D< =<=GM>XT>66>~>L=m=* TP>B>d==n=f=3m=-y =~2>T>\> >>>>H=dB<5Q<;D޵=嘮= %=g;3m9g:g;dt;#D-'>>&>V= Z=C=2b>>>>܊>;>z>{=!:K;J<(==D>Q>ٛ>"?>-'=E=J { =>~'>'=?=<mi;>>)t>>> >}>/='Y;g;t!<_=> >'I>0> v_==m…<ѳ<(;!<(;;<=*z=:=d=魚==8`>7>>>KB>Qqe=yN=g;dt:t<==O=>/>(>==M+<(<'Y<;?;dt:g;gGM>cL>>>YY>d==<=;m;3m;=c=>V> ==D= ѳ<'Y;?;?:D:g9g9g:g;v>>q$>=2=M{=$=<:g9g:D<'Y<=t=N<;?:g9g9g9g9g9g;?=e=~>d>GM> =ʎ=c:g9g:D<}=)d!=t!=j=<(:g9g9g9g9g9g9g9g;!=T=:>>L>==)d!:g9g9g:g<ѳ=R5Q=i;=ѳ=?/<;D:g9g9g9g9g9g9g;=R5Q=:> I>>=n= ::D9g9g9g<'Y=;D==R=22<'Y:g9g9g9g:g<=d=Ѳ=嘮=Σ=<:9g9g:D<=;D=A<ܫ;:g9g9g;g< f=R5Q=T=a=g;J:D9g9g9g;3m%?>>>g==h_<t;:g:C:g:g9g9g9g:g'>>q$>d==>ٛ>M><=E=u[<=;#D:g:g:g:g:g:C9g9g:D<ѳ=?/==2=2==Fq>/=魚=Tq=;m:g9g9g:g:g:g:g9g9g:g< ===a==x=p5=~'>->+> )==<:;;m;t!:D;<ѳ<*T> )>g=d=t=k=T?=J {=x =:>)d!>x>b>a>y> 5=m<;D<(<'Y`>'> v_> =ȃ=g=M+=?/=>w>x>mP>{>`n>c>x>=(^7>> =y-=/;:C:g;;<*=>>#D>1>+>-'=:=x = :==>%>L>`n>*>>>w>!:K=<;D<=: =E> :>;?>C(.>.~G>v>=<=;n;m<;D<(<==O>>(>!7> )=̹=*i\<=$̙>w>֋>!>hw>ٛ<>>%=<'Y;?=<~=>%>L>W)>C(.>u=n<w> =;=m<ѳ:t:g=> =>>qD>z>2> >66>^=p5<'Y;= =ȃ>>C(.>P*>>OW>=5<ܫ/B3>@>L>KB> >-=ʎ=<;D;?!{>-y >k==dt<<(< =;3m:D9g9g:g<<<</;g:g9g9g:D=0=>>;>8qD>=*=VJ<<t<(;n;gw>~'> )=ʎ=0;m9g9g;m<̹=DU=T=w='Y<;n:g9g9g9g9g:g9g9g:g<ѳ=>*z>"?>, > v_=2={;n9g9g;?=N=d===T<;g9g9g9g:g:g:g9g:g )>(>2Q>&>=;?9g9g9g;n=*i\=o=:=Ϩ>=5=:9g9g9g:g:C9g9g:gٛ>%>&==rܫ;!:g9g9g:D=c=:K==ʎ==g:D9g9g9g9g9g9g9g;g= 5=/=>v>=yn= E= 5<g:D9g9g9gg>V=n==;!:D:g:g:g:g9g9g9g:gg>O>d===3m<;D;g:D::t:D:g:g9g9g:D<t=C=x==i\=/= 5> =T=o= :;?:D:g:D::D:g:g9g9g:g<ѳ=3m=====/=(^w>&">&>:*=?e;!:C:g:g:g:C;t!<<===g=C=)d!= :=3m=>M>i>m>nv>u[>/={;!;t!;3m;n>%>f>R=OW=i='Y= =XT=>cψ>R>>l*>L>x>T=#D;!;n<==>B>>=U=c:D9g:g;;>#r>0>)p>'=Σ=b< <=T?>>>̹5>>I>E>M>!:K=/<#D;=(^=>%`>@Y>I@>3W> I=M>(>!{> =?=*<;D;=0>>>Σ>>>=>א>>%=<;D;n=: =>+>S)>]'>J>M=<<R<>^> =T={n>b>Ӝ>֬3>qD>>d=T>"#>KS>WOw>C>B=n%>xyn>~>>66>,2=Σ=(^f>)d!>5 E>%==w<;?;i:t:g9g9g:g>2>1 Z>~'=5Q=a<;J;g:D<}=x=L>g=07=/d>>w=E=]n<#D9g:C;J<=a=x=/=;DR>%>.~G>#r>޵=x >)p>4>)d!> =M %>']>=~=<=:D9g9g;dt=3m= E=yN==n=:D9g9g9g:g:C9g9g:C;i=)d!=/=>{y==D=;D<};3m:C9g9gB>N>]n>6%=:=`~<;D:g9g:g<ѳ=v=2=/==<:D9g9g9g9g:t<_==d=*=*=<ܫ;:g9g:g= x=a>A>I>x>l:>=n޵==,<'Y9g9g9g:g:g;3m<==̘==+=^F7>>>nq>ٛ=X=g;t!9g;=R5Q=:>Y>s>%?=o<:g9g:g:g:g:D"#>Z_(>g$>>>%?=f>^==?<:g9g:g:g9g:C:t-'>B>{= E=0<;D:g9g9g< ==S:=dB===M+;9g9g:g9g9g9g9g:g;dt;;dt:g9g9g<(=)d!==51=/=ѳ='Y<}:9g9g9g9g;J=c=M+="?{=p==M+=G==_yN<(:D9g9g:D<}=-y =x =f=g;#D9g9g9g:g:g:g:g:D</==t=d=?=u=n=J {<:9g9g:g<= :=f=XT<_:D9g9g:g9g9g:g;Q==a= :<:g9g9g;=g=`~=qp=%O6<;D9g9g9g:g;?<5Q=C=c9=,s<=:g9g;==O6=:>{=yN=5='Y<;D:g9g9g;J==T=ѳ=VJ<<ѳ9g9g9g9g:g;t!>&">!7>{=<:C:g:C9g:g;t!<=<<;m:C9g9g9g9g:g'I>N>Jg>q$=n'I>Pl*>L> v_=n<ܫ:g9g;dt<_=N f=a=*<};3m:g:g:g:g:g9g9g;dt<ѳ< {<t;?:g9g9g9g )>)d!>%>+====d=<:D9g9g9g9g9g9g9g9g;dt<t= :=J {=J {=<ѳ;3m9g9g9g;<=qp=:K=y ==A<;3m9g9g9g9g9g9g9g9g:g<">&>%O6>%?=T;?:g:g:D:g:g:<'Y<<'Y;3m9g9g9g9g<#D=?/=t==/=k=<m I>HBT>t!>s>C=='Y;dt:g:g:D;i==qp=,=C<:9g9g9g:g:g:g!:K>u[>S >>s>=:*<:g:g:D<=g=OW=== 5;J:g:g:g;#D:D:g;i=*== Z==YY v_>x>>է>t>f=<9g9g:g<m==*==/=Hf>M\z>z>w>G~h>{=Z_(;9g9g:g<={==ȃ=?=(^w>*>(> = v_>C(.>C>/=51 :>gs>>8>nE">&=T;t:g:g:D<t=qp= Z=/=x=;dt9g9g9g:D:g:t<==̘=07=t=o=Q0<_<t<;D9>>>R>w>@==J<={<\i:D:g:D;;g;g;?>>M>>CY>@=ʎ >"== %<;;dt;;;3m:g;g<*=w=M===0<;D:D9g9g:=w>&>o>>>q!>L=v>=*==<;?;;n;dt:D9g9g:D$̙>J>IG>!7=:='Y;:g9g9g<=Z_(=X==y =4<`~;T?:t;3m:g9g9g9g:g:C9g9g9g9g<#D=VJ<=n=O=07==)d!;J:g9g9g9g9g;!=c=A=t<;3m:g9g:g9g9g9g9g9g:g~'>951>>OW> := >WOw>H>Q>gs><=x ;:g9g:g<=| ==?=ѳ<ܫ:D9g9g9g:D:g:D<=R==嘮==d!=?/<'> >>>>;?=+=yN=T<+n:g:g:g;t!:D:D<}=f=?=E=ʎ= :=c<;g:g;n=d>)d!>>O6>>8><0=ʎ< f:g9g;?=p5=;>w>2b>{=I<;3m:;dt;:t:g;g<={==x=3md>`=:>)3>>k5r>=D<=:g9g;g=+n=n>>w=~= %<;g;#D;;g:D9g9g:D>@Y>@>f=Ϩ>=*i\;:g9g9g<;D=h_=n=T==K<;D:D:D:t:g9g9g9g:g:C9g9g9g<;D=[db=OW=L=9=y =*i\<:g9g9g9g9g<= :=T?=(^<:9g9g:C9g9g9g:g<}= :=I@=0<;:g9g9g9g9g;<'Y<(;g9g9g9g:g;?<;D<'Y;:g9g9g9g:g:g:g9g9g:D;!>d=9=L;9g9g;gN=t4=t7>>=^=;9g9g;?==s=zG= 5<(9g9g9g9g9g:g>f>*z==;?9g9g9g<=,s==t=_yN<ѳ9g9g9g9g9g9g9g;<t<ܫ<;9g9g;!=C=D=>{=E=R< f;dt9g9g;>=ʎ=3m;n9g9g:g:D:g9g9g9g9g:t<;D<=>8>{=^<ѳ:g9g;<;D>%`>=d>V==C</9g9g:D<'YGM> :=~=T</9g9g:D;i;J:D9g9g9g9g9g9g9g;i<=g< f<;D;;;:D:t'>3ټ>8/>B=?< :D:gO>3ټ>7>B=~= ѳ:D9g9g:D>GM==<t:g9g:Cw>d==_yN;J9g9g:D<(<:9g9g9g9g;<< >'I>+4>^=o<*:g9g9g:g<ѳ==<:D9g9g9g:g9g9g9g;3mq>(>+4>^=<m:D9g9g;g<=?/=J {<m;9g9g9g:g:g9g9g9g9g;g;?;:g9g9g;g=C=E>w>d==m<ѳ:g9g9g:gT=@=H<#D:g9g9g;iT= {=Z_( TP==5<_:D9g9g:D<;D<ܫ=t=R>ٛ>d=y-=!:K;dt9g9g:D >{=2=c;g9g9g9g:g;i<= := :<;n9g9g:g;n<;Dw>>=y-=3m;:g9g;n<=,s=[db=4<;3m9g9g9g;?=;D=/=_H=yn=ȃ=Z_( TP>::k>T?>C(.>d=t<:g9g9g:g<(== =O6= %=YY>I@>i>\(O>!:K=51<_:9g9g:D<#D=*=====c;n9g9g9g;?=3m=5===?/<t;3m:g:D<=Q0=:>+4>M>C(.>-'=n<:D9g9g:g;?<ܫ=x ==Tq=T=;9g9g9g;<m=;D=4=<:C9g9g:gw> =Σ=L;!:g9g9g:g:D<=R=VJ<=a=&Tq4>%>3ټ>#D=5=| <=:D9g9g:g<(= ѳ=x =t==-y > =嘮=d<<(<<=a=yN>!:K>W)>pI>`=:>%=/=R;:g:g;#D<=VJ<==0=ʎ=/='Y;i9g9g9g9g;g===>=== %>c9>>u[>;?=yN=0<;3m:t;n >C>gs>^t>(=%=< =;dt;3m;> >8===k>k>']>~'=E=KM>C(.>Y>F7>=/< f;J;dt:D;g<=VJ<=2=5Q=̘=D=0<g:g9g9g9g:gM>M\z>i*>Zv>!7=j=cT>->L>B">~'== <\i<(;J;!<=Q0=2==T=/=a<=:g9g9g;?= =YY=_yN=(^O>d= =zG<;J;;;n;!<*=h_=s=#=,= ;?9g9g9g;n<< f<=;3m9g9g:gs>M> I==;J;n;g:t;g<=c==o=={<ܫ;t!9g9g9g9g<=*i\=^==,= :<;D:g:D<;D= 5=:K=>~'>!{>s=:=?/^>=@=J {<ѳ<;DR>===M+O>d=m==| %?>/=Z=ʎ=:*<ܫ;:g:D<==h_=o= E=/=qp= :<t;!;m;;i;J;J >R=E=T<5Q;i:D:C:D;;?;m:t:g9g9g:g >>&==<;t!:g:g;3m;!<;D<(;=:g9g9g:gk>L>2b=_={=Z=o=t<;t!;?<=R=| =Эy> TP>`>GM>v>=@=p5<;:D;v>> >V==g< g>+4>G>@Y>==#= : >!7>q$= == 5<t4>@>ba>W)>*> ==R5Q<t< = > =E= =c<<<;D<<t<=3m=OW>=m=T=n=,s>Q0>Es>!7>=Ɉ=e^>= =8=C&>V>^=!= E=C<};;J=;D===嘮=dB=Y=0<*-'>'=:==g<;3m:D;;J<;J;3m:C9g9g:D<t=^t= =͝=/=R=N>+4>'I> )== ;i:D:t;?>'I>!{>%?=5<*;:g:g;n<+n I>{=n=;D;!:g9g9g:g;;?;m;g:g9g9g;g<=t=R5Q=C=R޵>{=O== :<3m;g:t;>ٛ>-'=E=J {*z>%>>OW>4>=a=,>C>@~>'==%O6<<==qp=:>q$>W)>z>p>?C><=51=?/8>IG>D>=51=YY=%>q>>>Pl*>==| =g<=g=y >v>>> %==d=>M=:=d=,s<-'>^>>w>B">= =/=<t=(=J>^>&>$̙>=m=Z_(=<_< <*<<}!:K>Dn>@~>#D> =ʎ=rܫ<*^><==O6=N f= ѳ<<;!;J;:;tR=G=ʎ==(=d=K;9g9g9g:g;>>{=Σ=zG<*<(;;3m;;J< =;?:D9g9g9g:gR>>=Z=*=g;!;3m;dt;i<;Dk>`>~'=O=d{>T=*= <<;t!;;?<#D<=g==gQ>>d=ȃ=(^{>%>@Y>::k>=:=_yN>@Y>9v>Y== :<<=g=_yN=̘>%`>W> >v->@> =d!=<tGM>@j>?C>'==Q0=g<= x=XT=>$̙>rZ>>D>W)>=ʎ=`~T>s>c=Ow=t!<ܫ<t<t<=g=>>2b=yN=R='Y<-'>^t>q>~>Es>-'=:=x =g<=&Tq=OW> =>>GM=i=:K=8= x<<m$̙>HBT>@j>%O6>=OW=UE<<t=R==07> =>=E==3m=R<*g> ===n=x <ܫ<'Y<<=3m=t== =d=J {==y =6;!9g9g9g:g;g<'Y> x=嘮=| >i;=Z=};J9g9g9g:g;<=DU=s=0<'Y9g9g:g:g:g9g9g9g;=c==5r===1;3m9g:C:D<'Y==)d!=g;9g9g9g9g9g9g:g<=I@=t==i >q$>>V=I= ѳ<;;?;!-'>w=@=H->UE>P*>"?=a=h_i;>^=*=v= <=<<==,>%?>@Y>nE">h%>22=== , >Xc>S)>'I=Z==<<ѳ= =ѳ=:=_H===Q0 Q>#r>"?>^=i=<m=/<:g9g9g:g;?<=d=s=: >w==M>ٛ>== :<;D;g;?<}=g=J {=h_=C<<#D:D:g:g:g:g9g9g:g<t=;D=T?= 5d>i;=[=Y=(^ = =5< ;3m9g9g: ?e>q$>2b=ʎ=1;?9g9g:w>= E= :;D9g9g:g;J>==<;?;J<<=:*=2>, >G=>8qD> = > >">^=T=)d!>pI>>|>Dn=07=;D;n9g9g;g>k> ==3m<ѳ<;D<ѳ='Y=d>8qD>g>a>m>`> ?e=u[;!9g9g;dt<=t!=~==5Q=:K=;D9g9g9g9g:g===~>=07=D=*i\/>i>:*>>K=G=R5Q;9g:C;gq$>@j>;?>=<*:D9g9g:g;f>^>=ʎ=I@;?9g9g:g:g:C9g9g:D;J<\i+>>޵=ȃ=?/;?9g9g9g:g:g9g9g:g;dt;?;?;g9g9g9g;?=)d!===?=J<=<_(:t9g9g9g9g9g9g9g9g:g:g:g9g9g9g:g<==0= =a=| =;:g9g9g9g9g9g9g9g:g;-'>-'==<*;J;!<;D<==>>.~G>"#>T==;n9g9g:Df>7>::k> =07=dtV>?/>|Z>8>4>Q>k=T<}:g:g;===*=07==/=g;3m9g9g9g;g=3m=O>)p>J>O%>6l> =5==(=C=X>%`>u >U>(>Q>8>1=dB=;n;#D>O> = =<t:g9g9g:g=g=:> v_>C(.>KS>6f>^==7X=c=8=2>!:K>|>s>">$:>>L=O='Y<;?<ѳ=_yN=+> >&>>==;#D9g9g9g;?=R>{>#D>.<> v_>Q=n=(^<< ={> >g$>k>>Q>>;?=@=c<(;JV>>d==^=R:t9g9g9g<===嘮>%?==ʎ= < f;;i< f=>f>k5r>#>>WOw> = <;;g;iQ>k>%`>T=a{>(>=̘=WOw<#D9g9g9g:C9g9g9g:g;{> >޵=ʎ=Q0<:g9g9g:g9g9g9g:D;i >%`>f> =~=>?C>P*>@>~'=ȃ=B<'Y9g9g;g'I>C>F|>-[>=== =[db=n>&>\>t>%`>>n>GM=Tq=,;;g<;D=1==> )>%?=͝=a<;D:g9g9g;n=^t>{>3ټ>WOw>]n>DU>=n=VJ<=?/=R=*>4>><>i}>&>F>N=t=M+<<;D~'>$̙> 5> == =;:g9g:D= :=嘮>*>Q0>Z>F7>as=ҷ={=C=T=yN>9>(>> >Ԣ>i\>h%>={<ܫ<=(==>q$>.~G>+4>~'=i=a<:g9g9g<=s>(>/>@~>.~G>d=ʎ=g$= =+n=>ٛ> >M>>~>k>V=Z=c9<_<== =>>'Y>%>'=E=\i<(:g9g9g9g<= Z>\>>=07=Tq=0>">m0>XD>u(o> ==c<(<} > =O== ;3m9g:g<==X==̙=I@<;D:g:g;3m== >>3ټ>4>u=y-=,s-'>-'==n=c>7l >Ci}>1F>w=51=(^<(:C9g:D<=F=s=*=D=Q0ٛ>4\Y>7> v_==< ==a=@>L>R=>@>>>Xc> =x< ;J;<;D=)d!= Z=!> >޵=%=qp%>F7>L>4>(==C=0=:*=07>.<>{>U>>>>7*=ʎ=L< f<<=R=嘮>>#r>> ==)d!;:C9g:g>@Y>I@>5a>i;=n=a=1==>-y >@>n>>>i>P*=*=x ===(^==2>>.<>+4>=a=qp >-[>!7>R=J=J {=g=+n=:K>i;>g$>>d>y >m>@=a=i= :=(='Y=^=07>>']>%>=T=c9v>>޵===g<(k>hg>?e>H>^2>=o=(^<ܫ>Y=_H=o=;9g9g>"#>&>w=~=;D>M><=0=p5<t;g:g9g:g;<ܫ=\i=g=h_=;9g9g9g9g:D===>-'>2b>=2= 5g>*>P*>^t>L>V=dB=)d!f>f> >d=:=h_<<5Q=Z_(=n>-'>F7>z>)3>E>N f>g=| = <<ѳ<=R5Q=~=m>^> =*=M>>d=i= < <*=J {= E>^>G~h>aS>0>w>g >-'=5=6=c=g==T=:> )>>B>=~=)d!;?:C9g9g9g< f=Tq=d> ?e>T=ʎ=| < {'I>h%>>޵>S)>w==9= :=c==t!=>>-'>== E=*;?:g9g:g===n=n=:K=;D!7>C>C(.> =a=x ==g<ܫ=g=&Tq===5== {=<:D9g9g;3m< f=I@=m…=?/<;g9g9g:D<=,s= =O==Ѳ==c==:> )>w=d=:K=<(;g;3m:D:D;?<=VJ<==| = 5 => v_>(>GM=~=XT/> >.~G>"#==^= )>M>~'=Z==< <<v>>V==-y <:D:C:g;g;?<;!;g:g9g9g:g;dt>=d=y-=T<;?::D;<=R5Q==T=5< f<;g:g;m<==&Tq=:K=>^> =a=:*= <}Y> v_> 5>d==t=c<'Y;;O>=p=D=: <a>.<>-7>GM=[=~G=-y <;!<;D=g=?=:>T=t=={='Y< { ѳ> > v_>i;=Z=/=J {<<;D<ѳ== Z=!>%?==U=N=I@g==yN=n=)d!>>'=O=d!=F<;:g:g;g;n;::g9g9g;3m==D> =>İ>Y=@=: <ѳ;!<;D=g=>>*( >BdB>>OW>=Ow=a<;?:t;<;D<>>%>`=07={">@>Z_(>S)>+==_yN I>`>=Ow=s< )>;?>Sx>Jg>!7=ҷ='Y;J:D:t<>.~G>%>=<;3m:D:;?g=07=?=;i;dt:t:D:t;<(<;D<;n:g9g9g9g:==_=Z_(<<#D<ѳ==J {==d> >>>w=*=?= 5"?>>>6%>-'=n=;D<<==g=E>>@Y>Xc>T?>4\Y>=ӽ)={<ܫ<ѳ<==R=/=嘮==i=t=;!:D:g >Ci}>m…>k5r>>>k==: =(=A=D> >;>x>Y>D>f>*=m=Tq=C===> >+n>/B3>İ=O=x >I@>u[>u[>IG>d==x =;D=h_=> =>KԢ>Z>ݏ>>~><~> =n=t!=(^=XT= >+n>W)>\>;?> ==^t=<_=%O6=Q0== >%>NR>P*>*( =m=2=qp=C=p5=D=T>7l >k>C>>oJ]>8qD>d=+=zG=/=qp=>0>^t>f\>B">'=ʎ=:*=;D==(=0=VJ<==ǟ> > =?=={=(^==?/=T=*> =>C(.>k5r>a&>AV>">R=J=T?=c=22=n>>>OW>C(.>)">=n==*O>GM>-'>*z=5Q=/=> >{=ӽ)=x=0<t<:g;;?<(<;D<<t<ѳV==t="?>;>4>GM===<;3m;< =&>)p>k=Z= =!{>\(O>u[>nq>F|>=?= <;D< =*( >?C>/><==3m<<ѳ=K=>::k>u[>>>^t>ٛ=y <ܫ<<'Y<=c=!:K=c!{>4>*> =y =;D<<=K=>2ԁ>p>f> >U>=^<(;n;J>a>O=t==%O6&>L>cL>Xc>+=yN='Y;?:D;t!<;DGM>%>=*=h_ => =yn=s=T=k>2>)d!> ?e=='Y<=R=WOw=5=嘮>>7*>K>Dn>*> I=y-=f<_<t<t=R=/=n=d=dB=TL>`=:>I>">Q0> ==K=F=R=>f>W)>4>C>>wt4>2ԁ>k=2=YY=*=!:K=>>!{>']>d=ʎ=0;J:D;g==]n=E>;>?e>>r>>4 =*=5=g=Tq>>=̹>>>Эy>,">>cψ>%`=9==x =>>Dn>q!>u[>P*>==<<=^t==yN>>>>R>R>(>Ci}>g=?= :=>{>C(.>!k>>˴>>l>}>.<>{=dB==*>)p>u(o>nv>>|>5= =d=Z_(=C=R==dB>ٛ>s_H>N>>u[>(===:*=:K=a>)p>8>@>A>>R>u[>2> ?e=y-=:K=yN>0>|Z>V>>)3>C>g= E==x =x ====>f>F7>F|>!{=~= =u[=C=qp=n>Q>Sx>>>9>>UE>%====*>>\>>>u >.~G=2==~2=^t=c= 5='Y=C= :=ʎ=E=51=:*=: < f<t<_=<~=/=>7l >^t>\(O>C(.>%> =y-=x =0=_yN=>&>@>IG>-[> =@=g=<ܫ;m<<//>g= ==_yN=g{y>==<*;g:g:D;J<=?/=x==m<9g9g9g:g:g:D:D:g9g9g9g<t=>v>>0>@Y>%==R:D9g;g-'>@>N>3=~=&Tq:D9g;dt ==?{>)d!>6%> v_=J<=:D9g:t;!<=g=E=[==<(9g9g9g9g9g9g9g9g9g;g==s=yn>/= =a<5Q:g9g:C;#D;<=p5=M==g:g9g9g:g;!==}=d=zG=c;?9g9g9g:C:g;<;D<(:g9g9g9g:g;i<<<;?9g9g9g9g9g9g9g9g9g9g:g:D:g9g9g9g9g9g9g9g9g9g9g9g9g:C:g:g:g9g9g9g9g9g9g9g9g:C;dt;J;J;:g:C9g9g9g9g9g:C:g:D;g;;:g9g9g9g;g*>Dn>@>q$===>$̙>&=E"==<ѳ, >k5r>|>}>V>B=='I>;>.<>w=?=R5Q< f<=a=G>J>I>O>>n>'I=n=c$̙>7>-[>w=dB=Z_(Dn>66><>o>g$>q$=y < f;!w>>GM==o=;D<%>]n>ui>j#>>OW=2=`~<;D;t!;<}>!7>0>%O6>Q=<;n::D;<%?= =n=rܫ]n> >O?+>^>s>I>)d!=t4===n>ٛ>`=:>> >k5r>q$= Z=0== =d==>`=:>̙>">>,>hg>-'==~=d>>gs> ?Q?%;?F>a>է>@>=T=>{>Dn>{y>>Y>>Qqe>=Tq==g= Z==>7l >8>>>>Es>R=Ɉ=n=OW>*z>P*>R> ? %?>{>t>E2>s= =ȃ> >NR>8>R>d>L>cL>=ʎ=n=O6=?=?==d>;?>nq>oJ]>@> TP=~h==a=R=>&>k>> >>Z>pO>4\Y> =ʎ==07>0 >z3>w>>>L>w=ȃ== %=XT=XT=K=p5=J=t4==:==XT v_>oJ]>O>>fL>;>:=;==w=/>V>3>b>nE">M>as==5=h_=J {>>>T==T=*=g=&Tq=:*=T> )>>=Ow==3m<<'Y9g:g:g;3m< =<<ѳV===;?:;3m;! >5 E>C(.>*=J]=_yN<(:D;<===ʎ=i=51=0:D9g9g:g;;J;!;i;:D:g9g:D=)d!=a>2Q>ilK>u[>\i>=d<(:g;?<=dt=͝> I>-'>/= <9g9g:g;t!;?;J;?;:D:g9g9g;g=7X=!>@j>u[>">kv>(=#<:g;?-'>/>=Ϩ><9g9g9g:D;g;#D;g:D:g9g9g9g:D=R=%>*>]'>k^>R=>~'=;J:C;*z>>k=<9g9g9g9g9g9g9g9g9g9g:C!:K>+4>=5Q=0:t9g:g;n~'>-y >)d!>w=n=I@<<(;?<(<>޵==T=gM>V>qp>i>@> ==x<-'> >==n=3m8qD>u[>>@>\>==-'>!{>M>V=2=B<<=<~=;>3ټ>qp>k>>V>2b=5<*<'Y޵>-'>^==s=%O6<ѳGM>KS>c9>XT>,o=$=^t<};;?s> >~'=9=| k>,=J<==3m<<=<(<<=&Tq={===T=*i\*>I@>@>~'= E='Y<<_=J {==m>&>Q>l:>c9>4>%?==C=== ѳ=,s==ʎ=E=?={<:g9g9g<(<=?>(>xyn>>>o>==x =h_=:K=>/>u[>>v>w>1>A=2=5=`~=I@=YY= > >&>(>d=n= 5;J;;?= 5=M+=yN>P*>>>2>Q>S{>{=dB=n= {>>WOw>f>z?]>>>g> ==D=d=51>>N>xyn>| >UP>=5=)d!= ѳ====07>U>k>>>>`>d==OW=*>>b>B3>?$@?:>r>X>951>=ʎ=?= >9> >>F>Z>@Y===/=:*=== {>+4>>̙>O6>)3>@Y>V=U==>>M+>zS>?4?>֬3>d>>>w=d=y->k>C(.>;>>Tq>-'>S{> ==y ===s==>->a&>dR%>7l >=:k=g=M+=T=>M>>>N1>җG>D>lJ>->=dB==L>*>m…>m>b>@>@~>R=n==?=^t=R5Q=;D=VJ<==嘮===ѳ=?/']>u(o>8>Z>eW`>4>d=Σ=:*={=>T>+4>V>_7>@j><=E= %=rܫ=VJ<>k> v_>-'=[==a=c==;D==>R>>{=%==3mv>>i;>V==t;:D;3m</>F|>UP>=>{y=<;D:g;<==(^==̘=O==1;9g9g;B>u[>">k5r>(=~G >i;>{=n>P*>,>>u[>1F=51<;D:g;?<=T= >>ٛ>^=y-<5Q9g9g:D;;!;J;n:D:C9g9g;t!=-y =07>7>i>u[>\i>=;?:g;gg>w= =<ѳ9g9g:g:D:g:g9g9g9g:D >+-H>3ټ>=T=(^:D9g:g;<ѳ=J {====-y ;dt9g9g9g9g9g9g9g:g;<=:*=ȃ=:= =P*<'Y9g9g9g:g;<ѳ<<;?9g9g9g:C:g;g<=c= 5<ܫ<:g9g9g:g:g9g9g9g9g9g9g9g9g9g:g:t;3m:D9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g:g:g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g:g;g;g:D:g:g9g9g9g9g9g9g:g:D;dt;;dt:t:g:g9g9g9g:g;?T==y-=p5<* >9>1L>==<~<t<<w>@>Z>S{>+n=E"=zG<5Q{=~==T=w>?/>W>N>']==w<*>/>']>v>=y =-y <t<;J< =>q$>GM==p5<< =<;D< f=K=>g>#D><~>4 >=@=T?<_<<_(<_=g=K=:*==| =;!9g9g9g;g;3m= :>g>Ci}>nE">k5r>8=_=| =(^==Z_(=/><>DU>/>}>g>p>==DU=c=c=*=w=== =:=g<;g:D;3m< %>u(o>l>-'>td> v_=Ɉ=t=| =t= >)p>66>>`n>FH>,>W)>==a=R5Q==yN>ٛ>:X>;>=E=R5Q>y>~>> >,s=L==x==9>1 Z>>>n>.>>u[>V=*=t=x=>-'>F7>m…>qp>L>O==w=M+=P*=={=,=>L>>޵>XT>~'==t=w==n> >>s>lK>a>>m…>q$===*=Ϩ>>>S{>z3>>]u> 5=== ==x =_yN=5==2>$̙>'I>w=ʎ===4==(^==>T?>>>[>Q>HBT>=:===J>w>: >_>g$>DU>~'=*==| =x = =g<^>KS>nq>gs>B">&=07==DU=O%=I=%>Y>#r>(>~'=?=D=p5=(^= ;;m;;?<ѳ== := <^>d===g= =T==R;T?:g:D;i<ѳ==3m=+n<<:D9g9g; >1>@>)p==x ;!:g;dt<;D=R={==y =,+4>^t>kv>Pl*>~'=<'Y:g;g<=J {== =?=ȃ=[db;?9g:g;?<ѳ<<:K7*>i>u(o>Y>`=ѳ;D:g;dtV=yN=;!9g9g;g< =!7>N>XT>=J>f=DU:g9g:Da> %>R=d> =t==<^> ?e=d=R=t<B>=O=o'I>M+>HBT>k=:=<~<>=J>;?>2b==p5= :< ==p5=@> >o>(>Z>^>-'=̙=<<5Q==~2==嘮==?=]n<t;?;n;<}<;D<=M>7>@Y>@>M=Ow===?/=c= 5=p5=E>3>U>>q$>Y>(=d=rܫ==*=h_=dB>*z>>= ==4a>M>{=51=w=<'I>|Z>>W>td>'==:*=3m=?/=R=E>d>!:K>!:K>Y=͝=zG==g<_<<=;J =>I@>rZ>m…>C(.>-'=%=w= :=1=g=s>g>-'>-'>T=/=p5= : >%>%>i;=a==c<==T?==y-=yN=i=T==(^ =>>g=X=/;:g:D;<==K=B=g<;D:D9g:g;i<ѳ<<<:D9g:g<=>Q>$I>->=T=C;n:g:D</=g=^t=d=d=Q0<:D9g:g;<} >*>2Q>=5Q=:D9g:D<;D= =p5===p5a>>=<9g9g:g;i<*=3m=x =}=0>==/<m<;;?>)d!>+n>d=n=C<< =@> v_>#r><==a<> )=…=y =;D I> ===t!<\i;t!;3m;3m;?<5=>\>>w=~h=I@<;D:g9g9g:g;i<_(=?/=S:=;9g9g9g>~'>T= %>@>dR%>V>= Z<:D9g9g:Dw>'==/< <;i<'Y< {=i;>>Z>rJ>t!>2=*=(^;3m9g9g:D{>@Y>g >Z> 5=?=c:D9g9g:D<=g=f=d=/=*i\<9g9g9g9g:D޵>>s==_yN<}9g9g:g;T?M>==p5;?9g:g;g;?;:g9g9g:D;?<;D-'>Q>d==_yN;n9g:g;dt;m;t!:g9g9g:g;g;n;:D9g9g:g<t=| =Ϩ>>{> =~==R:g9g9g:g:D:g9g9g9g9g:g:g:g9g9g9g:g;J=(=g==n=n=K<(9g9g9g9g9g9g9g9g9g9g9g9g9g:D;?<==3m= :<t;9g9g9g9g:g:C9g9g9g9g9g9g9g:g;C<'Y I>8>*> =<m;;J;!<==]n=Ow>>->#r>Q==;=9g9g:D<==;D===M=w<*:g9g9g9g:t=B= >)p>DU>F|>, >=T<<< =_yN=嘮>: >>>ѳ>Y܊> I=R/>8/>Y>^t>D>~'==/=c=4=?>>zG>>>f>u>>OW== ѳ;3m:D{>"> ?e=0=Z_(;!:g9g9g:D='Y=5>->T?>\i>F7>&==F==C=n>#r>>>6>ƙ>̙>W=嘮=4;?;<=j=%> TP>>-'=p=d>2>@Y>-> =~=?/d>td>>>qD>>C(.=*= :;;nV>O>=嘮==>'> ==yN=t=<)p>z>>Y>a&>d=<=:D:t;i<=k=j==yN=2=?/;!9g9g9g:D<=~2=2=/=t=,s>']>!:K>@=<*:t9g9g:g;<='Y=rܫ=t!=%O6-'>>x=5=*z >%>.<>%> I=o(>%>->"#>{y=O6<t:D:D;;!;?:D9g9g9g;3m</2b>M>==qp;J:g:C:D;3m:t:g9g9g9g9g:g;g;;:D9g9g:D > ?e==*zw> =&= :=g;T?9g9g:D'I>B">C(.>)d!==T<<=g=qp=嘮>*>cψ>rJ>t!>?C>{=`>Pl*>nq>r\>Y>%=Ѳ=R5Q=;D=| =d>+4>@>R>C>>>H=07=DU<(;<==>>f>~'=T=g%>`>{>+>u(o>AV>==T=?>%?>Z_(>̙> >q>>H>Z>İ=<_(<==*=> >+4>>>3ټ>GM=%=(^;n:g:g;?=a>&>Y<> >f>u[>HBT>= =R=?>>gs>>>m> >җG>W>&= E= :<*=C=s>-'>7>Jg>C(.>%=d=w<'Y:g9g:D==5>6l>c >p>`=:>4>==a=T=O>Jg>ݏ>Ӝ>>8>s>x>M=O6=c )>-7>@>;> 5=:=u[<:g9g9g;t!={>޵>+n>>>1 Z>=嘮=*z<= =>">td>9>T>>>T?=?=XTd>>>{y=OW=&Tq;dt9g9g9g;!=p5=E>\>g==D=c;?;3m<= > TP>L>u[>r\>@>{=| <;;n;!<=Q0===E==J {<'Y9g9g:g</=&Tq=R==}=R;?:g9g9gi;>>=p=<:g:g:D;dt:t:g9g9g:D >"#>-[>%> )=<5Q:t:D;;i;n:g9g9g:D )>#r>,s>"> =y >>d=={>==?=g<;?<'Yİ>%>as>޵=51=*i\;?9g9g:<=K==D=R=(;t!9g9g<'Y=,>>1L>N>P*>3ټ> I=/===DU=>d>K>66>> >Zv>x==;t!:D<'Y=;D=?=> ?e==~= 5;dt9g9g:g"?>\(O>zG>~>g$>1F=J]=R=t!=Y>>I@>E>v>Σ>&>zS>fL>=R>$>1L>*>d=?=g;3m:g:D<t=>-[>m…>>>>Rv>=~=5=ȃ>>u(o>L>M>m> >ؖ>+>*=n=C= =qp=܊>*>C(.>V>O%>.<>V= !{>g >>x>|>XT>`=ҷ==U>GM> >>??>hW>>@Y=={=?/=ѳ=>'I>Q0>cL>]u>@Y>O=y <:t:g:D=3m>>Ci}>qT>~W>o>F7>s=̘=I=>>a&><>G>P>t4>>>1 Z==rܫ=J {==yN>q$>F7>Y<>UE>7>(=nd>;?>M>C(.>%>{=̙=(^=0=?>k>> E>Σ>1]>n>s>w=t=-y =t=F=>޵>%>7l >22>as=07=| <;D:g9g9g9g<\i=x=yn>'>'>=dB=<~&>f>?e>>`~>== :>%?=i=d > =_==< =;3m;#D;3m;n{y>Q==R5Q<9g9g:g:g:C9g9g:Dw>GM>'=07=R<ѳ:g9g:g:D:D9g9g:Dw>B>d=嘮= <=:g:g:g:D:g9g9g:g;J<=c=!:K= <t;?:D:D;<=a=/=!>=[=?=7X;:C9g9g:g9g9g9g9g:;!<= > ==<;;?~'> v_>==~G= :;n9g9g:g%>@>@>'I==<m==M+=>'>D>u(o>>|M >J {>=n=g;:D;!='Y==>k=G=:k=)d!;n9g9g:g<ѳ=?>u>KS>kv>nq>V>$̙==| =i=n>/>B">:*>>Y>u>>Rv==g<_<ѳ=(=>{> >.~G>)d!>d=/=c;:C:D/>\(O>~>g>q!>@>v>==t=ȃ>>f\>> >>j> >)3>==]n=(^=}=T>>@j>T?>M+>->{=<=:D:g;=%?>-'>Sx>z3>g>u(o>F>===>-'>l{>=>>> >[3>V>.~G=0==qp=/=_H>'I>P*>a&>\i>?/>i;=2<_;3m:g:g=g=a>/B3>^t>m…>_>951>Y== ==Z>L>>5Q>P>8>ƙ>(>']=ʎ=R={==>>D>XT>T?>7X>w=>*( >?C>4> %=[== :==x>d>q!>>>>>a&> =5=_yN=R5Q=u[=>>%>6%>2>as=:=> =Z=2=!:K< =;n I>M+>y>y>Q0>-'= =?/=<= =B=D=L>/>==<_:D9g:C<;D=3m==Tq== 5<:g9g9g<'Y=K=n>>/=9=t=t<< =;!;J<'Yk=!=Y=i<ѳ:g9g9g9g;dt<=*i\=L= 5<:g9g9g;?==̹=n> => %>> ==3m#r>Es>Sx>BdB>`=E=a#D>@Y>AV>)p>{== :=== >"#>^t>>+>'>k5r>M=51=3m> I>a>=O=x<:9g:C;=^t= >->Q0>WOw>@j>B= {=s=Z_(=O6>V>: >@>^>~>X>>M+=T==: =t=R5Q=>>%>5 E>/B3>İ=T=XT<#D:g:g:g= =E>#r>Jg>V>C(.>=a=:*=e=5=[>8/>>>1]>ƙ>>g$> =d!=x =g$==%>>1>C>@>%==<:D9g9g;?=>>+4>=̹>/B3>s==,=0=qp=>ٛ>t>@>>>@>Y>/=̙=~2={===ȃ>Y>*>>OW>951> 5=!=<ѳ:D9g9g9g<t=Tq>{>>-'= =51=8+-H>y>S >>ui>*===[db=VJ<=qp=%`=t>>q$>> ===;D;J:g9g9g:g>6%><~> v_=07===0= =R==-y = =Y=&===Z_(<}:g9g9g;dt<=1=Z_(=0<;g9g9g9g:D<*=T=T===p5=R<ѳ >^>Q=T=Q0 I> I==?=c;!ٛ>;?>D>2ԁ>w=='Y<ѳ<'Y;?;i<*=rܫ=X=:=@==;J:g9g9g:gi;>>+==N f<t<=VJ<=>{y>1 Z>^t>u[>i>2ԁ=p=T==g<*<=_yN=*=!> =>=T=<_;n:g9g9g;?=XT=Ϩ>> >d>*z=ʎ=t!f>/>gs>>~>KR> )==UE=: =-y =I@=ѳ=:>{y>>===/<:D9g9g9g<ѳ==E=~=07=OW=p5<*a>Jg>nE">i>>>=D=_yN=M+=M+=c9=ѳ=ʎ>{>d>w==O6=;!:D9g:g-'>.~G>1 Z>==g=C=0=22=J {=h_== f=:=嘮==h_= >=07=D=< Q>T=U=]n<<<_<_<= :=XT===n==*<ѳ;t;T?:g9g:g;t!v>> =[=i}=x < ===B==N=-y =^t=R=51=>>i;>V= {= = x<(<ѳ<=g=m…==5Q=̘=~G= =L=>v>=Z=ȃ=O=t<<5Q=c=8=ѳ= {=t====a=N< f<*=c=1=Z_(=o=~2=| =f=C=3m=?/=L=\i=s=T=x==@=:= f=/=,=c<<*=c=?/=== f=Σ==x=J {<ܫ<Q><==i\=,;J;R>~'>=!==Z_(8>-[> v_==j<ѳ<T>&>>>5a>=ӽ)=g$'I>;?>, >v>=s<ܫ >9>Q>H>"#=a=]n<;J;iGM>)p>q$=yn==c<<;DR>0>IG>@Y>`==(^*z===VJ<= :>)p> 5=2=<;!;?<޵=?==)d!<=v>>,=ʎ=u[<*>a> %>==T=a<*/>8qD>3W>B=Эy=]n<_<==rܫ=_> >22>O%>NR>4>~'==i;= :<>?C>bM>dR%>@>w==R5Q= :=C==…>->h%>+>>a&>, >g=2=g$='Y='Y=d>>%>->V===0<5Q^>C(.>m…>pI>N>&=d===a=| =>{>@>޵>+>>x>>>^=@===h_==>$̙>P*>YY>>>=@==0==;D=g=m=~>'I>M+>Rv>3ټ>(=ʎ==T=x==t4>/>|M >2b>ѳ>l:>951>d=d==T==?>, >Y<>dR%>HBT>= =:K=XT='Y='Y=a===O>i;>~'>/=%===rܫ=g=5=ȃ><>@>eW`>]n>@> >=n= =h_=*z=ʎ>>>>HBT>1>=Ow=t=;D=c<=c=8=c9===M===t!=XT=B=-y =3m=XT=T==07>(>>d>޵=:=x=3m= :=22===Ow> >u>d=Z=2=]n<*<};<;D<===R5Q<;n:D9g:g;3m;dt;dt;g;3m;;;;n;3m:g:g:g:g;n >a>=2=n=:*= :<'Y:D:g:g:::g9g9g<'Y=x =>!{>/B3>!:K=!=u[<>Dn>^t>W>2ԁ>R= Z=?/<;?;?ٛ>M+>_>Q0>"#=ȃ=)d!<*T>@>y>?e>/>cL>!7= {=C'I>]n>q>cL>3ټ=:=p5= =g=x> TP>W>>u>c>u[>-=+=0<<ѳ<ܫ=*i\=I@=3m=g>O%>eW`>Y>+4=t=T=*=R=R>v>>Q0>P\>i;>d>l:>!7==%>=J>0 >d=={=)d!=(=T=:>0>h%>~2>r\>C>޵=p5<t< =<;D ?e>g=Эy==^t=(^= :=qp=>^>/>@>1 Z>w=n=4>F|>>x? eG>>U>m>S{>L=m=yN> =>Q0>>&>>g>w> v_===/==i\=~h> =>@j>o>u(o>Rv>=Z=/=:K=2=i>&>}>l>[3>s>V>u[>@~>-'===:>2>">q$>>>a&>&=:=a=x =+n=f=R=n= > I>>Q=+=:K=t!=VJ<=rܫ=t=0>&>`~>E>>a&>?C>ٛ=O==Y=Tq>{>=J>oJ]>~>c >.<>{=~G=J {=c<<<==T?={=g=| =R5Q=*<w>>:>R=T=%`=J {= :=,s==07>~'> >>{= =F<;9g:D;;J >-'>T=<_;!;;<<=_yN=Tq=:k=< 9g9g9g:g;;;t!:D9g9g >3>AV>*i\=*=;dt:D; ==G=<3m9g9g9g:g;3m;;:D9g9g:g<ѳ=?>>C(.>T?>=J>/=VJ<;:g;<=3m=n> I>a>(= {< 9g9g9g9g:g::D:g9g9g9g<=T>>->?C>)d!=[=a;i:C;>g=<5Q9g9g9g9g9g9g9g9g9g:t== E>{>>{=?=,s;3m9g:g;T=yN=== >4\Y>0>GM=嘮=?=: {y>0>AV>1L> I== ::k>s>>\>_7> =ӽ)=rܫ<*, >a&>u(o>ga>7l =5=x ==&Tq= E>L>r\>W>$>>Q>L>=,=<_(=c=9=R5Q=8=g<;D:D9g9g:D= ==>@~>u(o>I>z3>O%>==C=UE=ʎ>.>>)T>>>]>^t> ?e=m==g=1=s= =u[=,s2Q>k^>rJ>u[>J> =n=VJ<=a=ȃ>+4>>5>>g>m>S{=G=R5Q<<5Q=+n=x =R={=4<;n9g9g:D<=>-'>F7>^t>UE>, ==?=XT=Z_(=/>B>c9>8>w>>vn>)p= E=2b>'I>!7> I=̘=D=M+=L=5=>->^b>qp>ba>0 =_=J {<tk>{=O==p5=DU=Q0=I=0> I>>&>a==g=<tk> ?e=yn==/= :>>==ʎ=%?=<<\i;?<<=]n=/==C<;3m9g:gİ>)p>$̙> ==g=J {=f==51=>i;>+4>@~>>OW>)d!>c=d=R='Y=,<=R==dB=d==nv=;9g9g;i= :=ʎ>)d!>gs>>E>Y<>=n===51>V>+-H>`>>V>!k>~>@>-'=:=^=h_=YY=*=>%`>%>~'= =f<9g:C=R=:*>^>k5r>r>~>~>>i>-'=̘=OW=07>%>j#>>>P>>>>;>== E=n>N>W>|>>k5r>'I=s=(<'Y'I>(>ȤJ>g>lK>I>u>?C>/=*> =>@>)3>G?\?/$?-ʯ?*z>L>k5r>(> )=d>>^t>>,>51>,>u[>~'==Q0=?/==:>->> >>[>֬3>P|>Pl*>-'=m>^>D>W>?1 Z?<0?: p?&>,">+>@Y>`>d>2ԁ>H>c>uY>>;>F>BdB=:====_H>>>>Y>N1>_>>@~>=n>/>/B3>>g?/x?:?7 ?Q>9%>k>D>L>-'>=J>d>)t>ψ>>>>XT> =E=ȃ==i=m>7l >Z>O6>9>>S:>~'=L=@=t>c>^t>`N? T?*W? >X>q$>pI>6>>>$J>y>>> >L>>KR> =Σ=/=a===嘮>M>>>@>%>4=̘=== :=̘>-'>n>>s>Ê>>u[>AV>B=?==!>4>E>̙><>k>qp>%O6==5=>+>M>S)>Dn>(> =:=M={=^= >$̙>S:>a&>L>$̙=d== 5>>=T==;t:g9g:g:g:D;;i;J;?;:D:g9g9g:C;t!w>B> ?e=n=^t<<=)d!>\>k5r>Q>GM=D< =>i;>g=n">^t>o>m>>H=yN=;!<ѳ='Y=> >,2>: >*>=\i9g9g9g:D;<(GM>m…>c>~>d>Y<==;?<ѳ=(^=51>>;>Jg><~>-'=:D9g:C:D;g;i<(;i;3m:g9g9g;g=;D>>T?>I>d>>C(.=t= :;?R>+n>-> I=*z:D9g9g9g:g:g:D:D:g9g9g:g&>IG>Z>Dn>s=< f:D;<ѳ= := E>*z>-'> =ȃ=9g9g9g9g9g9g9g9g9g;3m=(=o=!>==OW=;D;9g:C;g<<*=p5=M==R:D9g9g:C;D<*=J {=u[=\i=;?9g9g:g:D;3m;;g:g9g9g9g9g9g9g9g9g:D;< =;:g9g9g9g9g:g9g9g9g9g:g:g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g:g;g;i;?;3m:g9g9g9g9g9g9g9g9g9g:g:g:g9g9g:g;<<*<5Q<=;:D:g9g9g:g;3m;i<3m<t<*<<<:g9g9g:D$J>;?>4>&=嘮=t=&Tq']>7l >)">g==<C(.>~>d>:*>i>'Y=J<=g$<*<(<=g= <ܫ<;9g9g:D<5Q=>%>Y>l{>^t>/=?=/=*=-y =~>'Y>>>-H>>>XT>==c=R=+n=]n=p5=Q0= ::k>o >>v->KS>w=~G=T?=t!=܊>@>>s>U>> >nq>===t=VJ<==^=,=: <;g9g9g;3m==;>22>k5r> >u >KS>d==a=m=i>=̹> >f>>=>V>d> =s<ܫ==L===g=?/<;9g9g:>KԢ>b>Y܊>2Q>==XT=p5=>!{>ui>>>>I>::k=%=%`<<==XT=t!=_yN=*<t;9g:gq$>2Q>->~'===A=K=O6>*z>;>nE">>r\>@>Q=rܫ<<;D{>-'>O=~= E=qp=-y =;D=:*=E>w>%>.<>k=?=<<ѳ<;D;i;?</<t<_<<g==͝=c=<~='Y=A=T= E=L>>=:= E=h_>v>=5=j=,=,s=,s=i=ѳ=2=&>*z>(> =07=*=m…=<<%>?/>7*>İ=Ow=ѳ=Q0=f=M=>T>L>>OW>P*>H>+4> =ʎ==: = 5==C==_(==i==,s;i9g;==J<>=J>">>a>z>)"==M=*=Ϩ>>>C(.> >*>&>2>m>P*>=Ow===R=n>d>/>951>$==ٛ>I>N>֋>Ow>>>%O6=?=;> >?C>E>L>S?!k?,>>%`>F|>=07=ʎ=>'I>qp>>S >">;D=a=3m<<t==T>?C>>X?ll?>>>Y܊>~'>>>]'>k>?0_?[3>66>3>-'> ?e>&">w>O6>ê>R>>>(=T==T=a>{>HBT>>%? D? I>S>W>lJ>!7>d> >cL>s??=Zo?Gc?F7?56>>>2b>P*>%>f>N>XD>7>q>NQ>><>_7>4=5Q=+=>R>.~G>a>ђ >i>t4>z>>W)>&> >x>M>3? #?;p?F?E"P?3>>-'>WOw>*>!{>W)>|>*>?>>e>u[>Q==Z==>w>W)>f>>OW>̙>qp>"#>T=yN=t4>!7>q>Y?+9?6%?3h?>f>@>HBT>>>>>x>>L>>>>Q>gs>GM=!=07=_==Ϩ>>>1 Z>^2>a>@Y>-'=a=Tq=d==p>.~G>E>˓S>->>]>` >V>%O6>޵=07>d>T?>]>X>>>` >;?>{==/=C=Z_(=w==y-===d=Y=qp===<~=~'=嘮> v_>]'> >z3>a>?C>GM=07=m=t=51> ?e>@Y>td>">l>;?> I=:k=h_=0;<<<_=3m=rܫ=w=Q0= :<<;?<;D< =p5= =07> I>d>=yN=y =| =0==C=s=07>>f>~'===B><~>IG>22>{y=?=t<<=R=f=y =E== E=(^;g9g9g:D;?i;>_yN>?e>^>@>I@==K޵>>'I>=;= 9g9g;dt<'Y<t<*<_;?>` >>i\>*>{G>={<=<_=qp=~>!{>F>T?>B">a=/:9g;3m<<ѳ< f<_HBT>c>>d>O6>q>%=/<+4>VJ<>b>S)>%=;?9g:g;< =.~G>>KB> >w>u(o>~'=w>C>Sx>C(.>Q=y ;9g:g:D:t;dt;t!:t:g9g9g9g;n=<~= >G>z3>k>t!>7=a= 5;?</<*=qp=嘮>GM>%>L=*=;D:g9g9g9g9g9g9g9g9g9g:ٛ>'I>=*=| <'Y9g:g;?<==1=D=n==C;9g9g9g:g;g^> >as>=?=\i< f;J;g;3m;;t;n:D9g9g9g;t=1=> =>~'> =%={<m<=<t=<~=E>-y >h%>>x>Q0>= E=)d!< >3>F|>;?>~'==p5=R=c=5>>nq>]>:K>F>H>C(.=_H=f< <= 5=M+=[db=: 8>N>ba>WOw>-== %=0=L=>0>R>̙>>R>7>\>v>=| = ==I@={=g=p5=<}:D9g9g:t<=n>f>N f>cL>Y<>1>޵=I=;D=Z_(=@>.<>I>A>y >Y>CY>U=m=g$< ==;D=w==k=<}:9g9g:D>5a>L>C>$̙=~=%`=(^=3m=>İ>e>>C>S >w>+=s= 5GM>)d!>%>d=:=| == =g=>*>\(O>n>_>.<=嘮=h_^><=?==3m>f>w==_yN<,== Z=YYk>4>.<>=s=p5===u[=~G=L>-'>->@>8qD>==?=XT=(^=(^=&Tq=Q0=?=*= =Ϩ>=/= :;9g:D.~G>x>>c>qp>=s===dB> >: >w2> %><>i\>Z>@>f=51===g=%?=OW>4>$̙>+4>M=?=Td>{G>B3>΂\>ë>>66>f==d>k>4\Y>66>>E"?~'?,>c>V>;?>/=0=dB=>>_7>>>qp>-=d=;D0>>֋>yn>>ۅ >I>Sx>-'>4>&>W)>>臸?/)?;?:J?+9>ؖ>w>(> )>>%`>gs>}>>>>>q$=J=R==a=>=̹>`->D??k>澑>>fL>>d>*>]u>Cz??:X?F(?EA?5>>>Dn>f>u>AV>>>>>x>>Q>k=E=d>>{>&Tq>> {>> >0>F>P*>>R>'>IG>ݏ??9v?EA?Dn?3w>8>8>N f>"#>ٛ>KԢ>>ď_>>G>a>>i>B===~=t4>4>IG>>(>l>KB>i>f=G=ǟ=:>!:K>>ՆP?)"?4J?2?>>~2>@>>d>3>>F>ٻ>>U>I>\(O>s=G=Z=s==@=>(>S:>XT>7>^=E=?===!>2ԁ>E>!>s>>&>>N>q$==>Y>HBT>t> >>9>">0=2=ʎ=i}=M+=_yN=u[=ѳ=J==07===p5==c=R5Q= %=5>+n>i*>Ȅ>66>a&>9v>-'=yN=D=a=~>/>4 >g$>u[>`>1 Z>/=51=t!=C;<'Y<(<_=0=qp=x =XT=&Tq<_<ѳ޵>7>~'> ==T=/=Z_(=t==L=#=07>d>>===K<;n9g:g:D;{=*==Q0q$>L>Y܊>C(.>2b==&Tq<t>nq>c>W>Q>WOw>f=p5/>>&">~'=ӽ)=:g9g:DHBT>m>>>$>@>#r=^<t"#>EA>Py>?C>=d;g9g:g<<=g== V>W>=>l>H>#>-[=<<ܫ==t4>, >T?>^t>LW?>q$=2;n9g;?>Q>r>>>z3>`=w>@j>N f>>OW>-'=t;#D9g:g;#D;n;;n;dt:D:g9g9g:<>UP>g>?e>y>=̹=a= ;<<=g=$>~'>>-'=E= ::g9g9g9g9g9g9g9g9g9g:g;3m<'Y<=>{>"#>-y >ٛ=嘮=e;?9g:g;<t=?/=5==:K=+n;n9g9g:g;g;?<'Y<=I@=a=?=:*= 5;J9g9g:C:D;?f>.~G>F|>@Y>ٛ==_yN<<;J<;D<ѳ<>-'><=yN=i;=*;?>u(o>>w>Xc>= Z=t<<<_== :=gٛ>*>"#> ==a<===>w>Z>>a>O>u[>-y =%=J {<_<==: =DU=&Tqq$>.~G>(>^=ʎ=rܫ=g==>w>W>:*>s>Y>q>'I=@=F<_-'>"#>8>v>==VJ<4>l:>>u >F|> ==<<< f=g=<_(^> =*=5= >+><0>+4>v>=y =><5Q2b>d===/>-'>^=07=5=C=R====(^=x =D= =?=h_<:t9g9g:g=<~> )>F|>l>i>;?=[=/=,s='Y==*>-'>Dn>~>CY>d>`>~'==rܫ=J {=XT=_yN=x=*>> ==51=0;?:C9g<;D<= {>C(.>w>>i\>E>KR=G==̙=*>2b>T?>b>^>>V>>x>==t==Tq=J]>'I>Q0>WOw>;?>=D=4>u[>]>FH>o>>/>'I==a>>, >\>L?Y?.,?,?P\>o>LW?> TP==ʎ=>0>u[>S >>4>DU>T=t=\i=L=/=OW>d>rJ>X>>db>>>;?> )=>>2ԁ>>H?,?8`?6?'>&>n>"#>=G>`>_7>b>>>^> >$̙=====:>{>[>>¥>ŵA>M> >(>{= =O>%O6>/>F?*?5Ê?4?L>>qp>+4> >g>!7>k5r>k>OW>@>>>9v>=J<=E=Ϩ>= {=͝>u>f\>>>|M >::k>%?=̘==> >Y<>>=?3?b>>ٛ>YY>!{>,=>>S{>m><>>Y>66>.<==0=͝=/===51>> >'I>-'= = Z=T=VJ<==>ٛ>u[>>>qD> :>h%>-[>=ʎ==魚> 5>^2>?e>>I>M+>=Σ===R==#D=C==2=:k=D=,=J {=c=g=(^=s=> :>M+>i>b>Ci}>8=t4=y =rܫ=qp==i>-'>2>@>/B3>=T==-y =:D;;!<}<=-y =C=1=<_Y> ==51=h_= ѳ<5Qg==%=a=< =:D9g:g:g;#D;J<`~>8qD>DU>1 Z> O=o=(>V>>Q>{>@=_H=Q0 >^=yn= %<:g9g;g<====*=/B3>g>>ݏ>]>l:>-'=w<}<5Q=p5=̘>d>)p>/B3>=L='Y:g9g:t?C>>A>Y>>u[>B=h_<(<*=x =>a>3ټ>?C>*>V=VJ<:g:g;i<)d!>y>>|>>Y<>{=;t!<ѳ=J {=~> =>%O6>, > %==!:K9g9g:g;;J;?;g:D9g9g9g:g;?<={>>>>k5r>u(o>Y>==07=i;>~'>g=<:g9g:g;T?!7>6%>.<>=dB=<~s>AV>XO>P*>(5=:= =N-'>@>V>KS>$̙=嘮==q$>.<>%O6>= E=_yN= <<ѳ<}{>`><==T=g>4\Y>/B3>d==6<5Q;>f>eW`>9= =d=P*=;D=x =OW> I>Ci}> >q$>>y>!:K=U=C= :=)d!=C=O=E>v>>w===(^</;3m:<(<=m…>2b>kv>> >u[>(=yN=n=^=Tq=>+>/>>܊E>>>h%>d=={=x ==魚>8>@Y>DU>,2>+=5=&Tq<*<t=C=1=>~'>r\>u>rj>g>;?>T=n=#==>=̹>u>E?]?;>>:*>*( =*==?= f>~'>F|>q>x>\i>%=a=^=XT=I@=g=t!=}=t4>I@>V>/>fL>%=07=2=x==E>.~G>>+>8 >>>">*z>/= =dB= = >>UE> >k>nE">4\Y>Q=~G== =x =_yN=K=>>+4>7l >/=T==T=C=R5Q=^>-'>n>̙>s>3>>c > v_=:===Ϩ>>-'>@>i>u(o>Z>)p=T=^=T=x == ѳ== 5===:=:k==h_=t*>nE">>>a&>+4>޵= =w=T==>>0>>OW>)p> )==| =-y =c;;J<<=g=C=a=Z_(=3m=(<GM>.<>, >GM=_H=?=-y <==\i=M=Ϩ>=>f=d=y-== :>V>d=yN=Tk>J {>W>C(.>B==<\i<=g=g$=n=ȃ=== :<(:C9g:t޵>EA>u[>66>k5r>/B3=~=(^<;D<=,s=t=J<>T>{=Ow=x <;D9g9g:Dw>S)>>>r>2Q=E=g;?<ѳ=: =#=> ?e> =?=D<;D9g:C;?V>>OW>h_>qp>U>=5<;D:D<====T=G=%=f;?9g9g:g;t!;?;:D9g9g9g:D<(<=R5Q=y->d>,2>/B3>GM=%=:D9g:t<ѳ=)d!=,=I=n=<_(:D9g9g9g9g9g9g9g;/> v_>== d>==/=M+= ѳ<=c=L=M= >@Y>nE">m…>?/>4==,<<==qp==T= ===;!;g:D;:t;g='Y=E>>B>{==| =!:K<==: =y >~'>a>D>#>a&>k==XT=R==T?= Z=…> I>w= =dB=a=a=O6=h_=c<>\>>>^t> =yN=T=/=0=T=>{>-'>B> =?==R<ѳg>;>`=:>^>>OW>'=ȃ=a= =+n={==Z> ><==n=t!<(>%>']>-'==D={>(>޵=ʎ=w<ٛ>%>B=*=:*<*</<3m< f=: =g==d=O%>">*>=a=qp<(;<R-'>u>{==c;?:D;g<t=-y =x ===)d!<;D9g9g:g:D:D9g9g9g:D;?k=*=I=N<;n;!<== =n==/=='Y/=?=n=%O6<;D;JQ== =3m;dt9g;n<_=?/=XT=0{=07=D<5Q9g9g:g;g;?;:g9g9g:g:t:t:g9g:g==<9g9g:g;C;m;t!:g9g9g9g:g:g9g9g9g:D >f>>=s 5>@Y>0 >= %<_(:9g9g:D>+>->GM=:=3mq$>k^>>g>C==Z_(;!9g9g; =>%>+>==^t<t<}<=!:K=>22>aS>>-'>bM> D=*z >>R=U=XT<t<'Y 5>m…>j>/>Jg=[=p5<9g:g;D<=Q0=Tq=U==w<ѳ:C9g9g9g9g;!=DU==:=== 5#D>Dn>;?> )==:t9g9g:t<<5Q=N f= =x =c;?9g9g9g9g:g;J= ѳ=_yN=p5=,s<ѳ;g:g9g:<ѳ=?/== {=:k=T=g;9g9g:g:D;d>GM>d= =p5;i:C;g;J<'Y;J:9g9g;dt > >)d!>/>{= TP>!{>)">%`= =< =:g;t!<;D<>GM>=E=C:t9g:g;D;J;?;#D:C9g9g9g9g9g:g:D:D:g9g9g;n<=\i==t=T=E=<:g9g9g:C:D:D:D:g:C9g9g9g9g9g9g9g9g9g:D;!<=: ===T=#Dٛ>1F>1>=_(=;D>2Q>Sx>H>ٛ=%=B;J9g9g;=c>@>^b>a&>F|>==(=g= 5=>>Y<>>+>eh>aS>&Tq=~<:t:D =m=/=R:g9g9g9g;?=>GM>R>u(o>y>d>/B3==dt=;D=qp=>/B3>m>>F>K>y >i>{=h_<'Y;?GM>%O6>as==<;D:g9g:g;=w>^>K>rZ>z3>gs>7=2==R5Q=m=%>A>f>΂\>>0>)t>g>^==<<;D=R=>V>!:K>/>)">w= )p>V>a>R>'I=Z==*i\=T?=>+-H>(>~>uY>ؖ>>oJ]>{={<>'I>!:K> =<_:D9g9g9g;3m=M+=5> v_>/B3>&>=̘=_yN<<_(=h_=>S{>u>>Y>:*>+=51=(;i;i >v>=Ow=zG=<_;;3m<ѳ=qp=[>->S:>Jg>ٛ=s=*i\;J:g:D;g<;D=c=*z=y =̙=k<:g9g9g:g<(==T==_yN >V==N f< =:g:D;dt;;g:g9g:g;!<==<;!:g9g9g:g<t=D>/> >+-H>!7>:*=n>4\Y>@>2ԁ>= {=;?<<t<<;J:g9g9g:g</ٛ>6%>@Y>1L>7=n<ܫ;;J<<<ѳ;!:g9g9g9g:C;nw>% >+4> v_>޵=t>>V=n=+n;g9g9g:g;g;dt:t:D:g:g9g9g9g9g:g:g:g9g9g9g;3m>>>f=<m;i;n;?d>!{>%`>=T=(^;n9g9g;t!< f=qp== E==;9g9g< ==R>>>>Y<>Z_(>@>i;==<ܫ= :=R>T>@j>;q>S >8>dR%>Q==,;:g> I=m=/=:D9g9g:g<t=>-y >gs>@>/>td>@Y>T=*z=a==>@>է>>>[>>s_H>^= >']>3>*>=n<:D9g:D;>z>>nv>:*>`~>M=dB=t= >i;>vG>a>,??,>܊E>>3ټ= {=1 >G~h>Y>P*>, =d=M+;?:g:D.>u[>>S >>i>%=n==Y>B>f>@>?"?i>E"><>K==p5=*==p>+-H>UP>g$>^t>>> =='>WOw>>:*>>XO>q$=T=a=D>>nq>v>J]?e?%?>0>>;?=0=[db= 5={=~>!:K>Jg>\>V>4>v>== 5>P*>`>W)>2ԁ>=51=C=R5Q=>+>m>L>>Ow>;>~>c= :=c<=-y =>>'I>::k>2ԁ>&=_(=Q0;?:C9g9g:g< {=J>w> v_>/>w=E=p5<ѳ<;D=*=>*>z>է>'>l:>`=y =RR>g=:=T<:g9g9g:< =a=ʎ=E=51=p5<:9g:Dd>d=L=<_;n:g:g:D; >=ȃ=]n<;D:g:g;#D;3m:D9g9g9g:D޵>q$>)p>!:K> ?e=B>1F>?/>2Q>a= f= :;!<(<<t>22>?C>0>=ȃ=(;?;i<\i<ѳ )>!:K>)p>q$>޵=/<:D:D;<(;J;dt:g9g9g9g9g:g;#D<(<<,> =2==0;9g9g:g:D::D:g:g:g9g9g9g:g;dt;;n:t:g9g9g;g</<=^t=/==#=h_<;g9g9g9g:g;3m;?;i;t!:g9g9g:g;^>!7>!{>w=y-=(^<;D<f>(>>OW>22>B=yN=a<#D9g9g;<===*=/=f7>F>dt>g >KS>M=dB=-y =*=c9=dB>&>`~>O>>f>>.<=O=4<(;t!<ѳ=T=>O>`>==i;J:g9g:t<_=>6%>r\>o>x> >M>Y=Y==51>^>\;>`->Эy>}>>>Z> 5=m=>=̹>LW?>C(.>!:K==%O6;:g;dtC>g>>>>nq>'I==*=;>%>Z> {>?? >E">=>P*=?=*z=J {= %>޵>5a>_>qT>i>F7>=<ѳ:t;g<ѳ= f>;?>>XD>C>'>v->2ԁ==s=i>)p>O>א? ?`??E>~>hg>=I=T=>^>C(.>n>~W>u[>WOw> v_=<m;g:D;=>>dt>>>>hg>-7==2=J>7>g>?0?XD?CY>>>Y==8=,= Z>v>>;?>cL>u >n>Pl*> %=/=g;3m:g:g<ѳ=̘>,2>^t>q>g$>Dn>L=:=x =x =:>@Y>*>0>07>a>=>m>%=s=qp=XT=R=E>V>@>T?>N f>/B3>=<ѳ:g9g9g:g=c=Ow>`>.<>-y >&=_H=ѳ< f<ѳ=C=9>@Y>>>{>4>7l =;=_yN=< ==zG=*>Y>M>GM>{==;#D9g9g;===嘮=p=5Q= O>'I>(>^=n=C<ѳ;?;?;! )>~'>c==<ѳ:D:D;t!;;#D:g9g9g;dt<t=(^=p5=}=a= :<;g;3m<= x=Tq>V>>&>/>*z=<5Q;t!;3m;?;!;:D9g9g;dt<=&Tq=i=| =a=t<ѳ;;޵>>%>>\=? >-'> )==rܫf>İ>>{== :<'Y;!+>$̙>22>*>d=%=K;!9g9g:D<=w====\i<\i9g9g9g:g<=x> >7>U>V>;>d=o== :=j=>&>W>>>>nq>#D=Ϩ>=0<;<>B>d= =rܫ</:g9g:t< f=Y>&>`>>g>nq>;>Q===:k>w>S)>m0>¥>>{>L>{>B=o=(^<_=C=@>>7>H>@> 5=yN=3m;:g;g<=ʎ>0 >t!>d>m>>]n>ٛ=Ϩ>==T> v_>~W>>,? ?\>>>@==ѳ=h_=?>{>2>\>n>g >Dn>=?']>n>>> >g$>'I=:=~=E> >P\>ȤJ>?"?>.>>Xc>===n>^>@j>k5r>z3>u >V> 5==R;:g:=A> >Pl*>}>> >YY>"?=07==> >nq>;>E"?e?>>>?>KS==n==j> =>9>a&>s>m…>NR>==R;t!:C9g< ==i\>as>L>`~>XT>::k>=U=`~=\i=dB>*>w>V>ۅ >>'>4> v_=ȃ==g=s=a>ٛ>@Y>Rv>L>.<>=<:D9g9g:g<=>d>#>$J>-'=9=}*>~2>g>a>}>.~G=t=T=-y =(^=J {=:*=E>Y>>B>V== :;t!9g9g;g==M=Эy=yN=n=T<:t9g:g>k> > =n=`~V=Z=51=22;i:g9g:C:g:g9g9g:D==/< ;g9g9g9g9g9g9g9g9g9g:g;3m Q>-'> =a=a~'>+-H>+n>~'=T=dtf>/>\(O>oJ]>c >4 >g=>3ټ>Td>Xc>@Y>-'=:k=J {==̹=t=p>->u(o>}>7>>>>=:=}=<= ==> %>*>#D> = =;3m:C:g<=g> >C(.>i>q!>\i>+4=5===/> >KS>XD>zt>א>җG> Z>{G><==w=Q0==J<>&>?C>P*>HBT>)"=G=| =J>g$>s>a&>6%>R=2=:*=>/>P*>KB>a>;>hW>">ѳ>%=:=t=x=~G=>&>M+>^t>Xc>::k> =<;3m:g:gk>KS>\>Q0>-7>=~G=qp==>1>(>>O>F>f>f>=Σ= %=t==> v_>C>W)>Py>1> ?e=%`<:t9g9g:g== >k>0 >->=_==c==>{>U>W><>>S >T?>R=o=g=g= :=y-> >%>4 >/B3>GM==g$޵>=:=n=<'Y;<ѳ=T=>;?>g$>k5r>D>d==qp=/=-y =J {=zG= =:>/>{=5Q=g<:D9g9g:CV=yN==CB> 5>:=?=t=g;m:D:g:C;?=c==/==-y <;D:C9g9g:g;= :=>>~'>>%?=~=6T>)p>T?>g$>Y<>+n===,<ѳ<#D> v_>%>x=9= <=g=w=>'>H>>c>d>c9>&=T=f='Y=c=(^=D=T>>&>=== ѳ;i:D:g9g>%>GM=!==#D=c=u[=>d>M> >F>w>~W>+4====h_=f=,==> :>'I>!7><==;D*z>>^=07=:K=%O6<ܫ=3m=t=d>/>vn>c>>oJ]>&==={=,=i;= E=p>>!:K>%`>v>=̹=1{>6>_>a&>@Y><= E={=_yN=p5===y-=~> >==:*i;>a>=Y=u[=*i\== 5=0=J {=qp= %==n={<;?:C9g9g:D<;Dg=:= Z=C<;?;;g:D;?<=0=a=K=g<'Y;g:D:g:g:g<;D=*i\==T=n=D=T?<;;<ܫ=a=o=?>>>2b==x=<x>%> 5>/==F== :==0=]n=?e== f===?/f>>İ>{==T?=(^=;D=N f=h_=T=nv==== :=0<;J;dt:g9g:g:D;n<==*i\=޵>d>g=2<;J;n;T=yn==zG=R<=<g;?;i<<;;g:C9g9g:g;t!==/>>> =~h="?<ѳw>=0=x <_==~G=<< ?e>T=OW=C<<;D )===C<<'Y;?;m<==: ==x =0=g =>8> >w=ʎ=w=cGM>/>1L>k= =/=a=(<>$J>)d!>==M=VJ<=)d!=3m=p5=Tq=>%O6>A>AV>'I>===?/=8=VJ<==ʎ>/>>=t=:K=f=d>~'>v>=0==x =^t=g$==y =:>&>3W>2Q>k>@==D=]n=f===嘮>>ٛ>=!=51=T=(^== =C={= := Z=ȃ=Ϩ>=/== =w=dt=`~=x =d==:> >d>===T=K=Z_(=,=O6=d>>> )=07==qp=c\>T=Ow=y =x =;:D9g:g:g:g9g9g9g:g>,2>L=07=Z_(V>"#>7>1F>GM=a=i;=>Dn>WOw>F|>V= E=g<f>N>g$>_7>9>== :<k>Rv>e>WOw>(=d=9< <=5=T>+4>d>z3>r\>F|>=s=cw>@Y>U>H>k=ȃ=\i= :%>\>td>h%>;D>V=>)d!> >=?=f=,s==?/=~>>=J>Pl*>C(.>=y-=(^2b>>-'== )>'> )== E=a=>%>!7> TP==P*==R=*i\=h_==G>>;>@>.~G><=:==0<_<<ѳ=3m=%`=51==h_<;!:g:D>B>h%>k5r>F|>i;=2=C==N f==!>->gs>>I>h%>5 E>w==*z=I@=-y ={=J<>>>^=0=qp<ܫ<'Y;?= :==*>)d!>nq>>CY>{G>=J===g$=m=>>`>7>n>> >^>s=O====>,s>]u>i>L>GM==XT=g.<>y>b>>>M+>^===%`=Ow>#D>|Z><>;p>ƙ>>w>->==n=E>&>_7>>> >@~>T=5=L=*=w== >ٛ>\(O>k>{y>r\>::k>=s=D=o=J<>`>u[><>̹5>¥>f>qp>.<> d== f=魚>$>l>O>6V>o>P*>w=~=x =L=Z_(=s=~=>>AV>KR>2Q>d=܊== :==T>T>@Y>>>>66>N f> v_>T= f==:>-'>Rv>|>=>x>@> =X=e=0==C=T=:K=n==d=yN=?==%?=m…=h_= =y =d>(>N>M>6>k>%?=ȃ===5=&>M>B">R=>@>=L=x=c/>>w==5= :> =:=Y<;dt::t;D<=/=:K==n=22;9g9g:g;g;g:g9g9g;dt=*i\=ʎ>w>B>v>= E=:D:C:t;i<t=_yN=n==:=T><== Z=c:9g:g;mY>~'>v>=51= 5>%>9>3ټ>ٛ=O==R5Q<ѳ;t!:D:t;g;t!:D9g9g9g:g< f= >ٛ>J {>Z>IG>ٛ= E=(<==^>,>::k>n>@> >Z>=={AV>u[>I>y>K>/=x =t=)d!=>>k^>-'>>>k>C(.==g=RV>Q0>g>>>_7>==Q0=M+=>*>,>>>O6>>S:>@=m= ѳ==3m=t!=g=w=3m<;9g9g:D<_(=>@j>x>H>66>W)>-'==qp=b=n>%>{m>}>>i>?e>C=嘮=Z_(<=g=C====,=LGM>P*>h%>^t>2ԁ>T=y =m=h_=>-'>Z>o>S >>k^>=n=c+>%><=Ϩ>=5=T=qp=O6=>*( >WOw>i>Y<>+n= =R5Q< f<<<*=c=(^=(^=({>V=yN=~G=:*=| ={= %=d> I>>%>=p=*=*i\<_<=07==n=x=x =zG=T==~=> >w>/= ==VJ<=c<5Q<\i;;3m<<<>-'>> Q=9==?/=,<};;dt<}= :=VJ<=R5Q=-'>#r> v_> =Ϩ>==k=x ==Y=ʎ>v>>%O6><~>@Y>.<><=*==4=,<ѳ<=J {=?=D=y =| <m;=9g9gk>UE>w>w>Qqe>~'=n===D=>>G>z>TP> >u[>C(.>GM=9==n=L==a>-'>>d=5Q=]n >UE>]>)>d>M>a&>===ȃ>O>N f>t>(>Эy>Σ>]>I>>>d=a=?=_> I>HBT>w>>ba>%=n=k>">qD>O>2>OW>(>=J>T=Ϩ>=?>'I>z3> >1?"p?0x>>d!>i>)p>=Z>>P*>>Ѝ>>>s>2b==,s=== >%>>V>M>6>L>V>Pl*>^=>>.~G>o>א?)?4l?2b7?>>aS>@~>>'>+-H>Y>[>P>>@>>@=yN=t===07>GM>qp>y>>Эy>l>>@> TP=:=>"#>g>uY?)"?3?1? >;>>B> v_>7>2>>X>2>lK>)>>Xc>==O6=m=*=2>.<>Y>>>j>W)>&=07= f=;> >N f><>M ?Ȥ?>E>>k^>2Q>x> >q$>q!>>;p>z>r>|>L>{===u[==J=>>::k>@j>+>=O=y =t=D=ʎ>w>`=:>ݏ>>>>n>;D>=d=E=[>/B3>66>>>f>t>%=O=,=J { >AV>I@>=>!{> =0=s= =a=L>%>R>c >Q0>)d!==d<mR>-'>=嘮=c<;:g9g:C:D:D;dt;m;?;?;;dt:D9g9g9g:D;t<ѳd>9v>D>.~G>=:*== =*z;i9g9g:g;g<'Y>OW>n>| >f>*=n<>)d!>%`=?=229g9g9g:g;<;D>KR>~2>>u[>;=O= x;!<=(=>R>+n><~>.<> =:t9g9g:D;?<<(;:g9g9g:g<=d>1 Z>g >u[>a&>*=+=c;n v_>.>%>%?=:9g9g:g:::g9g9g9g<#D=>{>*>+>=̙<:g;>*z=n= 9g9g9g9g9g9g9g:D< f=:*=*=O==2=)d!;t!9g:g;{y>W)> >8>H>`~>İ=?=VJ<={=07>C>>>>>k>q!>İ=n=0==3m=k=T=qp=(^<;t!9g9g;=M+>>h%>8>>>v>+4=@= =>{>\(O>>'>>>p>"> 5=n=3m=-y =h_=x=?==i=<(9g9g;t!=9> TP>]n>` >է>>td>+=E==#>{>W)>V>v>8>>>w>=x= :=*=k===s=zG=<;D:g9g:t=,=5Q>5>p>>}>V>L=*==/=>::k>U>><>Y>>N=07=N f<*<=?/==s=:*=^t=R<'Y:g:g>7>Q>J>)">=dB===%>İ>VJ<>>>q>Y܊>=x=d> v_>q$>===D=I=51>> >@Y>K>8qD>'=~=C<</>i;>w=yn=Y=d=R=^=y => =>>>=d==XT=R< fT>>> ==2===s= Z=*>g>>#r>!:K>==~G=K= < >1 Z>M>IG>)d!>{=D=x=M=*=O> >*i\>Q0>g >b>IG>$̙>,==s=<~= :=M+= =?>===K<9g9gG~h>{y>s>>?e>C(.>{=OW==a>a>KS>P\>̙>v>l>>k^>+4>*z=ȃ=Tq==a> 5>I@>Sx>;>d=?'I>O>ê>9>j>ȤJ>XD>>>g=*>>C(.> >'>B? v_?%`>>-H>fL>)d!> =[>v>>@>U>q$>O6>>]u>v>=dt<ѳ<==t4>L> >?? ?o>(o>>u[> >Y>!:K>fL> >hw?4}?B8?A. ?0W>6>-'>Pl*>)">ٛ>>OW>D>X>܊>>K>>IG=:=T=rܫ=><>Z>>8 ?+?&? v>ƙ>k>/B3>>)">o >qD?&g?C?Mu?KR?<0?9>>k^>?/>2>g >̙>??>m>ʎ>E>=͝=U=m>^>Ci}>>c??4>>ټ>u[>(>>q$>]n>?&?CH?Lɉ?I,?:J>Y> >q>B>951>n>>g?d?4? >ٻ>>'I=t4==Z>f>>rZ>>a>P>X>x>@>d=m> >/B3>S >^?3F?@*?;??)>;p>>^t>2>'I>UE>f>א?? >2>R>>%=!=~=J=0=p>>Q>@>I>g$>/B3>v>=%=~=*>>Es>>臸? Z?>>w>k^>6%><> > 5>u(o>R>җG>D>Σ>>]n>^==y =;D=s=a=J=?> I>^>{=:=?=qp=UE={==m>.<>u[>8>>y=Z>S{>'>v>=E=:k=E>ٛ>e>m>|>8>`>=*=n=!:K;-'>V>>{=E=n={=J {=o=T><>, >=̹>0>~'==f<ѳ;9g:D;t!;!<ѳ<<5Q<<ѳ< =;3m:g:g;<= :=a=====g=x =UE=!:K<<=K==yN=yn=07=:k=VJ<'>9v>F7>1 Z> )= E=a=,s= :=&Tq=u[==yN=L=Y=: ;#D9g9g:D;s>a&>>c>f>P*>=T=&Tq=(^=h_=/> >%>.~G> v_==(^9g9g:g:t< =<@>>O6>4>q$>>%=/=c=%O6= =07>(>Q>_7>P*>"#=:k;n9g:g:<gN f>l>s>>zS>?e>0=y =R==g=>4 >`>pO>a&>4 =<=9g9g:g;dt2Q>>>Y>%`>|M >!:K=<'Y>T?>cL>V>*=dKS>Y>:*>z3>C(.>V=p5{>'I>8/>+4> I==;#D9g9g9g9g:g:g9g9g9g:g<'Y=x =Z>q$>.<>!7>+=I<:g;+>V=t=~G=qp<;9g9g9g:C:g9g9g:g =>2b>/==(^<<q$>P*>g$>_>;>Y==VJ<<ѳ;;<k>N>_>Py>!{=ȃ=L==C=dB> >rZ>>ݏ>L>Z>IG>޵== ѳ<<= :=*i\=<;?:g9g;3m=%O6>>L>rJ>?e>g>XT>-'=n=a==>T?>>>V>>,>~W>q$==?/=)d!=S:=T==| =1>a&>)3>>>td>*=Ϩ>===s>w>nq>O6>s>K>g> >>+==Q0=J {=}=s=o=/=rܫ=;!9g9g;m=XT> >Z>Z>><>s>-y =a=t=>>i>|>>>y->7>k>!:K=̙=*i\=3m={=:K==?={=c<:C9g;t!=/=>;>td>f>rJ>Z>=i==O6=>J {>c> >qD>&>>_>g=rܫ<m==K=/===]n=g<(:C9g:D>@j>Y<>Sx>2>w===x=J<>>e>d>!k>8>k5r>==>->+n>a=?=n=T=,=>%?>']>JL>W)>B>=dB=?/d>M>B>+=ʎ=Y=u[=T==> )>`>f>d=嘮=/=0<< ?e>%`>q$>i;=Z=51= ={== Z=J<>R> :>!7>k><=yN==8=(<ܫ<<=p5=n=_= E=:*=c;m9g:g<=?>i;>C(.>ba>_7>:X> I=s===OW=>>=̹>g$>{G>t!>P*>!:K====e=XT==E> >i;> ?e=:=zGq>]n>>L>>>]'>w=Σ=ȃ=2>)d!>g$>W>>F>v>>m>.<>/=5Q=?=n>+>3ټ>a&>k^>Q0>q$=y-=:D:D=I@=>951>f>>>2>ޔ>>V>>/>q$>_7>>ՆP??2ԁ?2b7?>s>w2>/B3>>>B>Y<>է>[>>>w2>=k>h%>V??!:K?#$? T>>[>3m>f>::k>>u??B=?L:?Jg?=?i>r>^t>2Q>'I>T?>>>J>8 >M>,>ga=m=I=>{>~'>w>6? ?)d!?*( ?]>>XD>DU>'Y>@>> ?3gr?M+?aR?]'?G?,"/>`N>|M >L>C(.>}>>S?~'?3?>N1>>(=[=?>d>&>^>X>!?rj?/?f>,">>;>>0>|M >?3?Lw?^b?[?F?(>/>">R=>J>@>>RF? Z?)? %>E">eh>@>^> > >>-[>Q>">t>g>>%`>W>> >B>N>R???4?H?F#?6>>>p>AV>7*>n>Ѝ>?s?G?>D>ٛ>=>w>R==d>v>>+4>qp>2b>>>I@>=07=Ѳ=J]>`>oJ]>C? F?,s?'>>n>>HBT> v_>x>3>:*>~>\>I>M>@>y>q$=Z=;==/= E=i> =>%`>!:K>==J==g==i>GM>^2>>+>r>8>k^>8qD>-'=?=5Q=>0>66>>2>q$>\>1=[=5=,<{>>4 >8qD>(>=07=51==v== >>C>UP>F|>%===,=*===R=f=22==0===0>f>^> Q= = >'>=E=x=XT=3m=(^=-y =k=/=?== := :;i9g9g9g9g:D;n<<}<t<t>>n>{>f\>.<=07==H=;D=e=#=9> >w=[=@Y>x>̙>R>k> >&"=*=K=R5Q=a=>q$>@>J>7l >w=g:D9g; >td>>>>>ٛ>S)==J {=VJ<= Z>^>C(.>k^>u[>ga>7l =9>>>]>Σ>>>`=:=:=J {=C=m>>Q0>y>޵>u[>I>f<_9g:D;?ilK>P|>v>_>>u>JL=E=3m=*=>v>>@>k^>x>k5r>>=!<9g9g:g;#D;i<;D(>~W>>>x>nE">&=/<_(<=8=T>B>?C>M+>@~>B=n;9g9g9g9g:g:D::g9g9g:D;J=R=>>Jg>Z>EA>&=ʎ=c;g; ===M=:t9g9g:t;!<ѳ==-y =cw>4>L>C(.> =:== ѳ<(;dt;;!<'Y;J;g9g9g9g:g&>6l>)d!>k=5=(^=,='Y=>-'>]'>>> >y>0=t=c9< f<<*=(= :=<ѳ;g9g9g:D<_=ʎ>'I>Zv>nE">`~>2ԁ=Z==C=x =L>C(.>>Ѝ>qD>,>>k5r>'==%O6===̹=rܫ=m=a=@Y>t!>>{m>S)>:=~={=>>`=:>L>`N>ǟ>_>p>{>/==?/=1=k=d=%`==K<;g9g9g9g;=0=_H>?C>td>I>~W>W)>=Ɉ=,=5>>\i>}>qD>İ>>O6>z>a==(^='Y=a=^=*=x=R5Q< f;n9g9g;3m= ѳ=Ϩ>>']>Z_(>q!>i>C>==rܫ==07>>>o> >=>+>">Qqe==k=g=g=0=qp=,=qp=*i\ >2Q>IG>C>(>*z=~G=M+=S:= >>UE>>>>XT>d=s=~'>']>$̙>'=_(==)d!=(^=ѳ=>GM>7X>B">.<>v>=?=<<}<;D >>d=~= E=_yN= :=&Tq=zG==Z> >===_yN7>> I=yN=5=C= 5=VJ<===07> >c>=9==Z_(=c=g< <_(==w==?== =;n9g9g;=t!>>9>WOw>T?>-[==n=p5=h_=s=J<>>.<>Xc>n>cL>::k>w=̘=x=k=f=h_=a=:> >>%?= f=rܫP*>>R>M>>Pl*>{=J==?>!:K>^t>2b>;>ؖ>FH>M>qp>=魚=~=2=~=>)d!>T?>]u>Es>&=s=c;#D:g=%`=s>)p>>FH>!>>>F>q$>KR>>g>>Y>+>5Q?ӽ?2b7?2A?+>>k^>!{>=Z>d>I@>=>>>6V>i>=5= Y<>qD>G? ?*?ӝ>ȃ>f>.~G>>4>}RF>l?V?@?Jg?I?<&? TP>>R>'I>/>D>>D>ߺ>lK>֋>Y>YY=m= Z=>V>d>j>¥??"?$@? >`n>>@j>%>>OW>k>R?1?J?]'?Z?F?,>X>s_H>@>8qD>o >^>? [??0>0>t>%==[>O>~'>Rv><>.??>hw>L>k>6l>L>->x>ƙ?1 Z?I1?[?X?E(>y=Z>G=>@Y>xyn>)>)?!k? f ?E>Bu>|>>OW>'>>w>d>%>|>'>>D>ŵA>>R>> I>>N>Tq??;?Fw?Eŕ?5@>>f>hg>::k>->`~>ݏ> ???&>{>>7>d> )==!>޵>%O6>e>>c>}RF>C(.>i;=07=*=>>s_H>51?*z?)d!?!>q>p>zB>@>&>">,2> >d>܊>$>א>>n>as=t4=嘮=N=?= E=E>>`>q$>d=07=/====2=>>gs>+>i\>,>>ga>0>w=yN=Ɉ=[>)p>t>>D>+>t>+4=Z=̙=<t< =(^=a===OW=n===p5=3m= 5=R5Q=:*=Ɉ>>->C(.>@j>+>d=u=D=x =a=a=>&>>OW>L>@Y> ==s=R<:g;dt< =<=(=3m=<~=(^=(<ܫ<<ѳ<>"> =$==;g:g9g:g:D;<#D=yN=̘=/=t;n9g9g9g:C:t;?<'Y~'>k>==/=C== :=3m=T=y =ʎ=̘==M+<:g9g9g9g:g;m<\i I>KS>|M >+>s><~=2==6=-y =h_=~G=07> >^=!=<(:g9g:g<<=R="?=)d!=<5QM+>>R>>)T>k>.<==M+=K==…> v_>@>F|>1F> ={;g9g9g:D<\i> >M>ŵA>w>OW>>\(O=?=Q0=]n=̹>i;>C>i>s>`=:>.~G=:<;D9g:D<;D<5Q=t=B=K=0=<;:g:D=p5>f>H>d>̹5>[3>X>.>gs=~=J {=UE=n>GM>Q0>u[>@>pO>@=i>u[> >>7>;>>NR=Ow=!:K=(^=D> )>@>gs>t#4>a&>1F=t7>k>L>I>>r\>`=xu>9>Dn>3>w=x;3m9g9g:g:g:g;;3m:D:g:</'I>U>`>I>=_{= =t<ѳ9g9g9g9g:g:g:g:g:t;<=< f=(^==͝=a=ʎ=:*< f:D9g9g:g;m D>u>c==a={=?==L<*<<=h_=9>+>_>u[>l:>@> ?e=M=>.<>$̙>==T?==,s= >as>k^>>f>>>6%=yN=VJ<<<==*i\=: = :<;n9g9g9g:DO>9>LW?>A>/= ==1=dt=J<>2ԁ> >>>u>>S:>V=,===)d!=]n=m…=K=<:g9g9g9g:D<=>-'>>OW>Q>H>%=d==3m=h_=E>0 >>>H>)T>t>L==T==g=(^=XT=h_=J {=<;D:g9g9g:g<ѳ=>/>,2>@j>;?>L=07== :=*i\= >&>dR%>>>m>qp>&Tq=@=R5Q<7>%>!{>=+=f<<=rܫ=*>)p>W>i*>Xc>'I=yN=| =(^><=?=#= :<\iO>>=_=Z_(=g<<}<;D<(;!<+n<<>+4>'I> =T=Z_(v>>!7>1 Z>)p>Y===0=*i\=?/=K=zG===07=T=i\=,s;J9g:g;=d> >i>>)3>k5r>%`=Y==x = >>/B3>r\>C><>-H>Z>;?=d=?=*z== :=ȃ> I>'I>0>!7>{=/>k5r>I>!>L><>>/==:>޵>0> > >??&> U>>>OW>{=̘== >&>YY>>?e>u[>::k=[=T!:K>>Ϩ>>_H>n>z>̙>Y>>v>>L>U>>臸?0_?>.?=Zo?/1>ߙ>>+4> TP>g>ٛ>`=:>+>>>>k>+=d== =T=>->>܊??@>>=>n>#D>d>/>`~>f??<&?H!?GMm?::k?/>w>M\z> v_>GM>?/>> >>%>F>Y>_>^=yN=:=m>Q> v_>Q>s>g>?>ђ >>^2>> )>>R>j? T?:\?F#?F?6l>>>W)>'I>%`>F>>">>8 >> E>w>q$>==~=G>{y>F7>է>Q>qD>ݏ>y>+4>==m>->>9F?+n?7*?56?#>@>>F|>%`>>1L>">L>2>$>֬3>>l:>M==d==ʎ=E>>/B3>]'>hg>M> 5==@==ʎ> )>Q0>>>*>!>U>E>Xc>"#>g=>c>J>8>=>>[>)3>@>=Σ=s=_yN=x ====:>>=T==n==| =M=>'>P*>/>u>E>z3>G~h>=*===ȃ><>@Y>t#4>>td>C(.>'=@=T=VJ<<<V>#r>7*>1>*>T==f=&Tq=(^=i=51>{>>&">/> ѳ=:={Q=n=̘= <:9g9g:g:D;t!;!>7> )=n==<_3W>e>rZ>\>*=魚=| ==c=B=M=%=T=O=U=Z_(<}:g9g:3ټ>I>f>r> >qp>k==,s=-y ===d>d>%>)p>B=ӽ)=:9g9g;dt<t=c=1=I@=<~=>g >L>%>0><>w>@=*=0=Q0=>޵>+>L>Sx>?>i;==;t!9g9g;3m<ѳ=R=)d!==̹=1=(^>u(o>)T>~>ê>>>IG=:==J {=> I>6%>Y>`>M+>L=y ;n9g:g< =>^2>><>>I>:*>-=y <===G>&>H>Q>?C>=d:9g:D;?<<'Y<;J;:D:D;<ѳ=%O6=>']>qp>>7>>O%>V=8;?<=J {= >{>>$̙>x=E=9g9g9g:g:C:g:D:D:g:;!<= :=u[=5Q>GM>::k>A>)"==T<(:g;gs>!>Q==*=<ѳ;;g;g;?;!;n:g9g9g:C;g<={=n=;==M=C >Pl*>eW`>Y܊>/B3==%?= >@=ʎ==%O6V>>>q!>g>y>P*>-'==;DQ>"> =;==*i\<=R=:*>T><0>nq>66>u[>L>d= Z=I@<_<v>>g=E===(<ѳ8>KR>]'>P*>%=嘮===(^>ٛ>d=E==0<<tGM>3ټ>0>d= E=J {< =g=J {=D=9>>Dn>fL>^t>.<=O=g===-y =C=| =X=07=2=魚==0;J:g9g;;=T?>i;>^t>>Q>i>===R==>+>w>>ê>>f>Q>==g$=w===@>^>->951>'>=D= <;=,==>2Q>d>>> :>]'>d=E=_=>>\i>>?3?>> >4=Z= E=o=Σ>>I@>v>>i>0=Z=Y=,s=g===@>>>s>(>;>7>t!> =_H=Ϩ>=~>>q!>X??-?-?9>>\>~'=L=:>g>3ټ>x>+>q$>">a&>&=ʎ=a==~G==dB>!:K>,>U>Tq>nv>_7>GM= =U= {>i;>gs>?D?+M?*ۦ?@>Ѝ>`>q$==a> I>@>I>{>M>F>u[>)p== ==Tq===?>2>k^>x>\>']==n==Tq=!>C>W>l*>,c>~>,">>KR>:=嘮=͝=2>->qp>:>>1>gs>!:K=O=o=̙=p5=qp=T=/=>O>><=a=/=Y=t!==>GM>g$>>Ѝ>>>]->!:K=O=2=?=ȃ> ><~>l>~>k^>;D>=m=}=fٛ>M>gs>c >C(.>ٛ= ===C=L==Y>>!:K>->"#> =ʎ=x <<:D;t!;J<}==;D=XT=T?=J {=: =(^====YY=:k>g><>-'>{=dB=Z_(< f< >+>::k>+>=J=7X<*<5Q=c=a=/= ==w=g<g:C9g:D>G~h>w>|>oJ]>;>V==(=c=]n======h_<:g9g;3m<ѳ=R=*==<;D:g9g9g9g<(= Z>)p>x>XD>>>`=:>=/==(^=:*=̘>v>>Q> %> = E< f:g9g:t7> >|>q$>>gs>x=x^>#r>']>s=<9g:g;J<'I>o><>-'>+>IG==: <;D{>~'>L>=2<t9g9g:g;;J;?;3m:g:g9g:g;?<=(^=>>7l >^t>dt>F7>i;=5>w==<:g9g:g;i<*=1=a=h_=&Tq )>g=ʎ=x = x<ѳ;i;dt;3m;T?;3m:D9g9g9g9g:g;x>!7>=m=i\=C<_-'> 5>GM==n=R5Q=<ѳ޵=[==m='Y O=~=N f<*>+4>M=?=n=p5='Y==x >>IG>8>R>M>>Q0>=={=p5=5=…>>8/>C>3W>2b=Σ=t!= =<_(=07=?==C=R<_(=(^=>1L>u[>w>>t!>::k>/=y =\i=]n=x=O>d>)d!>3ټ>'Y> I=dB=[db<ܫ>@~>]n>\(O>?C>7==`~= =(^=e==> >> =i==/>`>`> I=̘=[db=[=ȃ=g= >)d!>q$>=51=K<ܫ< f= =Q0=====Z_(< f;9g:g< =>C(.>Pl*><0><= f=^t<(>Q0>Y<>@>s==3m<< f=C=t=n=Ow=0=I= :;dt9g9g;g<ٛ>;>@>%= ==< f<O>O=yn=i\=;?:D;=<t=)d!=u[=*z=w=<9g9g9g9g9g9g9g:D{y>i;>+=U=@j<#D;dt;t!;JV>!{>+n>== I>'I>.~G>8==>Q>q$>d=:=h_<ѳ<<t= =h_==d=a=˓S=t=&Tq<'Y:D9g9g9g:g:D;!<=R=<_(<ѳ<'Y;n:t:D< ==Z_(==Z>==<_;;V=yn=y-=Z_(;J9g9g;nv>>>/=Ϩ>=XT;9g:C O>d>޵=y-=0:D:gT>\=嘮=<ܫ:C9g9g;<*=: =VJ<=/<;3m9g9g:;J >*z==c>~'>w==T;!9g9g:<=_yN===T=c;?9g:g;?<(< f>u> =E=\i;t!9g9g:g => ==%=:D9g;==T?=i=<~<;t!9g9g:D;?>=0=m<}9g9g:t I>'> ==x < =9g9g;g< =t!= %=s=T=;i9g9g;^>>R=̘=R5Q;g9g9g:<*=a=a==| =;J9g9g;g<<}>{y=Z=2= ::D9g<'Y==^t=h_=6<;3m9g9g:g;g;J;J;:g9g9g<(=K===t=Y=zG<ѳ9g9g:g<<V= =n=c:g9g:D<=: =| ==N f<*;3m9g9g:g;dt;?;?;g:g9g9gf>&>Q>=< {;n;;GM>4>+>=/d>)d!>,o>İ=:=0<;DB>`>+>}>@~=5=f<(9g:g;m<_=t!===Y=0;9g9g9g9g9g{y>%>, >`==f<,s>\>>>\> =:*^>GM> =%=f>gs>Z>|>C=Z=qp</:g:g;i!7>A>4> ?e=:K=R;3m9g:g;dt )>-'> I=E=a<:t;!+>>#^>=~=>L>$J>GM=Z=m;J:D;J<ѳ<<<(:D9g9g9g:g;dt;?;;g9g:g<'Y=*==Z>d>~'> = f=22:D9g:D;J>-y >,o>~'=Ϩ>='Y<;J;!<ѳ=VJ<=嘮>(>IG>@j>=͝=1;?9g9g;t!<_= =?=ȃ=n=3m;9g9g9g9g;=rܫ> >;>Y܊>]'>C(.>-'=Y<< f==^t=>KS>>I>> >$̙=51<ܫ;:D<\i=VJ<=s>> )=m= <ܫ:g9g9g9g;D=>2b>N>rZ>w>a>.~G==T?='Y=YY=n>%O6>)3>'>0>W?>>cψ>V=h_&>%>= =~2;?:C9g:g;t!=a> >IG>qp>z3>i>::k>@=R=?/=qp=>8/>>>hW>ܪ> >rJ>w==<+>%O6>2>)p>=n<:g:g9g:g+n>Xc>f\>V>,o==x='Y=J {= Z>%>d>>զ>l*>Q>k^>=x <ѳ %>*>"?>{y=D<:g9g9g9g;dt=a=2>&Tq>7>->=J<=p5P*>S >>3>H>'I== ;J;J<=8=51>Q>^> =E=c9<9g9g9g9g<'Y=m=yN>>*z= ==;i;t!<=T=>.<>R=>IG>t=n=/;!:g:D;===T?V> %>%>>g=<>.~G>::k>-[>=n= <3m<t<=<GM>0>;?>, >d=<_;i >!:K>)">>T=TP<;D:D;<;D<ѳ<=<;3m:g9g9g9g9g9g:g;dt;;;g9g9g9g:D<\i==d=T>q>>V=n=3m;9g9g:D;;t;?;t!;g:D:g9g9g9g9g:g:g:g:g9g9g:g;?<= 5=:*=/====g;9g9g:g;dt;J<;D<;D;i:D9g9g9g9g:g:t;t!;g:g9g9g:g;!2b>==s<;g;3m;g>>&>==;3m9g9g;t!<*=x = Z=~=5=0;i9g9g9g;i=x >4>5a>S)>T?>9> =<*<< =\i=>0>vn>8>?e>^t>GM={> O=m=*=:D9g9g:g']>a&>>@>oJ]>;==rܫ=?/=| =ʎ>.~G>8>D>җG>>>nE"><=g >'I>4\Y>*> =4 >u[>>H>>_7>&===>>k>>g?]>>ٻ> >2=ȃ=0<ܫ=a=a>!7>Jg>Z>Py>+4=:=)d!;g:g:D<'Y= >,o>ui>8>S >)3>k5r>']=Ow==2>c> >Э>?? >q>7>H= =h_= 5==>->Xc>i>_>>OW> =x <:D:g;t!=Z_(>i;>Y>|>?e>;q>\;>"=T=x= %>V>gs>f>V?k?ll>>`->8/=Ϩ>=Z_(=%O6=~2=嘮>%>Na>_7>WOw>4>+=x <:g9g:g%O6>UE>gs>]'>=J>=̹=C=J {=D>*( >>zt>ٛ<>F>>}>==c< =7X=2> I>+n>>OW>4\Y>=ҷ=+n;:g9g9g:g= =0>u>*( >'I>x==~2<<;D=!:K=*>, >{G>N>>m6>=n= >=Эy=p5-'>=嘮=x<;n:g:g:D;<t=-y =rܫ=a= <:C9g:g<;D=&Tq=x = =YY<ܫ;!:g9g9g:Df=G=n=a<=;D;?<(;J;t!:g9g9g:D<;D`>%O6>>f=y =<'Y-'>->8qD>-y >-'=ȃ=/~'>.<>8qD>+4>O== <( >q$>&>ٛ= =a<=;g;t!<>{> =2==8;?9g9g:D;t!;m;;3m:t:g9g9g9g9g:D;3m;;:D9g9g;<=c=| =y =J=y ={< ;g9g9g:g:t;?<;D>ٛ>ٛ>v>= E= x;?;n<f>1>-[>s=:=C;i9g9g;=< =I=~h=E=/=w<ѳ:g9g9g:gw>@Y>\>^b>C>x= Z=c=,=22=> )>P*>)3>V>>z3>+=Эy=!:K;!;dt>>i;= =a;t9g9g:D<=ȃ>.<>l:>>o>z3>HBT>v>=x=t!==>KS>f>>M>>~>>=o= :<=3m=̘> :>?C>M>C(.> v_=:=c;3m:g;#D<=i>@Y>>2b>+>>m…>%=:=̙=>GM>\>2>?? >07>>O>==g=C= :>f>8qD>a&>r\>i>DU>c=<;D:D;g7*>Y>է>C>i;>w>4 = ==ʎ>>Z>{?k%?f?w>>o>h%>f==T= E>d>EA>o>T>w>WOw>L=2<;3m:D;=x >Q>fL>o>m>?e>l{>0===2>d> >ŵA>RF?l?>>>Y====2> >>>g$>v->pO>P*>&=~G0>cL>u[>m…>L>8=E=rܫ=i=5Q>>>%`>K>lK>>=>>%=n=p5=VJ<=?e=~>k>C(.>V>P*>.~G>V=,"?>::k>7*>!:K>T=B">TP>̙>|>{y>8qD==_yN=g<==*z=i>d>f>GM>Q=#<m:D9g9g;!=a=%>{>=L== ѳ;n9g;3m=*=n>O>, >,2>d=n=J {<=;?;?< =<== :==^=s=]n<;g9g9g:gv>>> =~= >!7>>=?<;i;!Q>>!{>==M<;;n<<;D< =;dt:g9g9g9g:D<<_(=(^=;D= 5 =>>v>=0=a<;D:g:g;3m;n;::g9g9g9g9g:C;3m<;D<<5Q<;!:D9g:D;!<=;D==˓S==@==,;t!9g9g9g:g:g:g:g:g:g9g9g9g9g:t;?<'Yd>d==5<;;g<GM>)p>$̙> =s=*i\;9g9g:D<={=51=ʎ= E=m…<ѳ:g9g9g:gT>->KR>L>1L>=t<<_=4=> I>F7>">-'><>i>!:K=ȃ=*<;<;D=a=J<><>>^==h_<9g9g:D<t=n>8>Y>y> >i>4 =Z==c9==>@>>j>d>K>>y>B=='Y>8>I@>@Y>k=d=*;:g:t<ѳ=51>*>nq>Q>Y>f>Z>=n==>-'>r\>> U??a>>#>@j===a=>{>2ԁ>^2>nq>g >C(.>^=d"#>l>)3>CY> >g$>'I==o=U>B>66>2>?J? C> >L>Z>{=n==Y>">C(.>l>|M >u >U>= E<;dt:D:t=,s> =>Q0> >>66>\;>%=嘮==D>R>i>>?¦?D>a>>N=== %=Y> )>;D>c9>u(o>n>N f>= Z<*;3m:g:C<= > v_>R>g >^t>@>u==VJ<=C=>*( >(>>db>Y>`N>>!:K==R=,==>L>AV>T?>L>-[>= B>,s>+4>&=?=<<==*>.~G>>V>>{>2Q=;=m='Y=&Tq=L=s=yN>">>B=2==;g9g9g;m=5==:=t4=:=x<_;3m9g:g<=y > >%O6>']>^==a<5QT==X=: <R:g:g::t:g9g9g9g:D >=E=/<:D9g9g9g;?==,===;i9g:g;J=+n=>Y>!:K>!:K>w==;D >Of>g$>]'>1L>V=i;<;:D;dt=g==9==*=~G=*;9g9g:g<=_yN=!>*>KR>P*>7*>Y=i\=t==m=Ѳ>f>h%>>i\>>>@~==| =ٛ>)d!>!{>R=<_(:D:g:g;?=^t>g>=̹>cL>lJ>W>(=嘮=g=\i=:K=t4>>>">>> >d>~>GM=D=rܫ=K=T=:> :>?C>O%>F7>&"==^t;!:g:g:= :=E">7>d>q!>`>6%>=̙=u[=5=[>Es>>W?>r>>">8>)d!=Ow===i\=!>']>N f>^>WOw>6%>v>=<}::g:Ck>L>^t>T?>/B3>v>=^=R5Q=x =͝>-[>8>>ض>F>N>U>"?=Ѳ=t== Z=> >DU>WOw>P*>/B3>\=<}:D9g9g:D=-y =:>">8>3>=5=R=<=T>>W)>>><> >Y܊> ==T=T=t=ȃ> >&>5 E>.~G>~'=%=C;J:g9g9g9g<'Y=g=嘮> >^== =(^<'Y;3m/>C(.>p>td>N f>-'=51=p5=%O6=)d!=K=T==O>/>=ʎ=qp<t:D9g9g:g{>v>=嘮==I@< f<}<<<=(=K=u[=\i= w>&>=:= %=;:D:g9g;= =,==:*=-y <>w=Z==;!<'Y= ѳ== >k>KR>c >Y<>-= =^=<<<'Y= = :=E=_H===-y <g:g9g:g:g>q$>d=d=qp<>@Y>}>m>TP>i>=ʎ=qp=*= ѳ==*z=d> TP>GM>==>!{>B=5==(<_(=J {=n>>I@> >f>>|>4\Y=_=s=a=a=T==t4>GM>%> v_>{y== :;!:D9g9g:g*z>>O==5= :<=c==L>/>z3>nv>>w>.<===x =T=i;= E=5>2b> v_>ٛ>g=o=c;i:D9g9g9g;=B=U=[=yn=Ϩ>=R=R>@Y>i>l:>I@>=~={=VJ<=h_= ===yn> >{=+=u[`>q$> =={='Y= ==22=R5Q=x =%`=2=?=c9< f;:C9g9g;g<==,s=c<;n:C9g9g:g<=K===~'=Q0=g{=!=Y=rܫ<;t;:D:D;O> 5>&=m=y =: ~'>+>)d!>d==m…= :== :=0=]n== Z==~=== : > 5>!:K><==qp=)d!=3m=K=m…==i;==_= =g=(<\i;:t9g9g9g:g;n<="?=;D=<_<=<(<({>4==5=A==(^=I@=a=v=}=R=d=,=0=x <ѳ;dt:D:;!=g=| = =%==n={='Y =>> Q=~=< =;;n<===$>R>g=:=D=(^<*<w>>=*=0<t{>-'>=yN=:*= :< >{=/=)d!<>==_yN<_<>w==D=(^T>>/>=T= =XT<_(w>']>, >L===/< f v_>@Y>AV>)">v>=s=T=*i\=c==3m==%=O=yN=Tq=XT=c>.<>7l >#D=m=n=c9=%O6= :=K=Tq>>/B3>V>V>6%>w=̘==h_=h_=T==9>-'>/>-'==s=L<m<==_yN= %=>@>>!7>=L==T=Q0=C=h_=n=>'I>L>I@>*> =%=/==/=/=dB>{>!:K>-y > >==lJ= <_==<~={= %=?=n==Ow==Y={=VJ<=<~=R5Q==>{> %>>^=5=OW==qp=m==/=!>>!:K>>T= E=XT<ܫ<<ѳ<=!:K=?/=P*=^t=rܫ=x =p5=g$=XT=0= ѳ=g= :=Z_(=t==:=Ϩ>==:*=J {='Y=: =h_==ʎ= >>{=E=^=<<+n;g<'Y<=<<R>+=9==}=R<(:D:g:g:g:g9g9g9g:D<=>>%>2Q>#D==h_<ѳ;!<;D==Tq>޵>&Tq><~>7*>ٛ=L==&Tq<ѳ<(;?;!<;!;:g9g9g;gas>M+>^t>NR> v_== >T?>k^>c >=̹> ==n=,s< f$̙>Y>l>^t>.<=a=I@=R0>k5r>rJ>u[>Jg>^==(^<ܫ=g=%O6=M+=WOw=3m=-'>F7>\>Pl*>$̙=:=j=(^==K=>*>a>w>l:>>>{==c<_= ѳ==̹=p5=w=XT=tٛ>0>(> ==x =C==Q0=n>>@>T?>F7>=y-=0< f~'> v_>==T<ܫ TP>> =?= =a=:>*>+4>:=J<=u[== = 5=R5Q=:K=!>!7>A>I@>7*> :=Z=Tq=C=g<t>F|>qp>u[>WOw>%`=n=VJ<=t=;D=^=:>0>n>#>x>u[>@Y>=Ow==i=Z_(=^=嘮>&>%>-'=:=`~<*< =;=c==…>+>u[>x>&>>L>v>=D=a=s=51>a>h%>F>f>>>nE">%>Q=ʎ= =>Q>::k>m6>x>\> =n=C<<}=L=y =~>2Q>\>f>v_>(>^2>=ȃ=i;==0>']>>>>uY>&>+>7>^=E"=O=p>$J>nq>-'>|>j>Q>/=N='Y==a=n=> 5>hg>>>|>Jg>d= {==D=5Q>q$>*z>~>Bu>c>y >,>9v>==>,>.>~W>>> >g$>==M+=(^=I@==/=>(>T?>^t>F|>M= ===M=>*z>U>f>><>>\i>&Tq>q=9=:=>q$>ga>>>)3>Xc>-'==;D=Q> ==Σ==I=rܫ=`~=| =2>>BdB>n>i>G~h>%>v>=Эy====>, >\>nq>[#>-==R>{=a==g=I@=-y =R5Q=Tq=d>B>$J>>*z== :</;3m:g;;?;!<<;D=5= 5'>&> ==;D<}<;J<<=Q0= =0=Y=k<+n9g9g:g;g;;;g:g9g9g9g;?=i=:>ٛ>&Tq>==`~<'Y;3m;<+n<=,=E==*=̙<_9g9g:g;;3m:g9g9g9g;=8=ʎ><>>^=E=]n;J:g:;J=:===:D9g:g;C>ٛ>=n='Y >)d!>>>::k>/=i=2=M+<;g:D:;dt;3m:D9g9g:t!:K>Q>a&>Q0> v_=T=c<=g=>+>?C>td>P\>{>]u> =Ow={<5QJL>}>>rJ>R5Q> O=T='Y=22=> 5>q!><>>>>Ci}=== >XT>>m>?e>g >=n=^t=`~=>.~G>E>U>o>]>c>Sx>== :=N=Q0=====KHBT>Y>>+>^t>=*=~2=x =ʎ>+-H>66>KB>>`->)3>Dn=嘮=g$= ==a=ѳ=M=I=c9=c<;D:g:g8>Xc>p>g$>>>===zG=J>B>_>>>>nE"> 5=o=<5Q=g=C=m==T=Q0=<'Y:g9g9g;dt==5Q>>3ټ>.<>nv=a=n=={==>-y >\(O>m…>]'>-y ==T? > =T=/=t=*z=T=M=:> )> >(>`=i=/='Y >w>=yN=?=K=R{>=p===T=| =*z====E>f>i;>>===3m<ܫ:>'I>']>=9==| =| ===Y>{>#r>>>B">0>~'=*=/=;D=g<ѳ<t=I@===n=x <ܫ;g9g9gk>V>}>>^t> 5=*==,= %=*>i;>Es>}>m>m>\>K>V=*=D=| =h_==:>>!:K>=5Q=XT I>UP>>>/>s>rZ>===> >Jg>z2>>c>)>>>C>=J]=̘=:>i;>Rv>">U>o>-y =s=(;!;!=j=ʎ>*>E>e>2>c>>~>I,>{==>$̙>|M >?9?+?(>>F>u[>0>7> ?e>u>Y>W>w>)t>Ѝ>>ٛ===c<=?=>%>Z>=>lK>${>>#>_7>i;=*=>.<>Z>'?-V?8`?5Ê?!Z>;>x>HBT>&">>4 >>l>܊E>臸>j>>T?==,=a=/=L>&>x >>F>ٻ>_>!k>N>w==>%>o>L?.~G?8@?5a?k>G>>M+>)p>8>@~>>dB>>^>x> E>nq>/=̙=i;==+>{>7*>v>>̙>>a>k5r>!7=O=Ϩ>=;><>\i>? TP?+?%_>${>>vn><0>>>)d!>>L>l>Fi>Ow>>a&>==R=a=t==>#D>KS>W)>@Y>= = =5==*>B>x>>P>>ݏ>~>B"> :>{=07>>AV>t><>>>:*>5a=a=p5=)d!<(=c=P*===51=O=*==/==a=3m=-y =h_=/>>7l >^t>_>JL>(> =i=~G==n>{>: >m…>>n>>> =<_<'Y:g;u>"#>>޵=n=R;?:g9g:g:D;;;!<#DQ> )>T=ȃ=x=T?=-y =<=,=C=T=g=3m<;D9g9g9g:t;!s>KS>XT>C(.>=dB=]n='Y=c==[db==[>=?= >Pl*>@>4>w2>@=~=_yN==R=*i\=a=m>!:K>.<>"#==`~:g9g9g:g;i<ѳ>^t>>>>P*>=lJ>1F>C(.>7*>=?;?9g9g;dt<'YC(.>u[> >s_H>>==XT>)d!>;?>.<>w=;?9g:g:t;n;n:t9g9g9g9g^>8qD>K>;?>:=n=R;g;? >B>d=i=?/:g9g9g9g9g9g9g;3m===>g==ȃ=XT;i9g:g;! > =?=J==R;:C9g9g:C:C9g9g9g:g`>%>~'=d=?/<t<} >N f>e>^2>;>w==h_<t;;dt;;J;?;3m:g9g9g:t<m=0>.<>a&>s>ba>/B3=O=?/=c=C=n>s>k^>>KB>V>E>B">==<t<<m=c=g<t;?:C9g;=*i\>>]u>Z>E>D>g$>ٛ=̙=`~==!>KR>><>>>q$>s_H>B=n=(^=c=0=h_=T=rܫ=,s<;9g9g;=Q0>>n>i;>}><>~W>1 Z=͝=:*=>v>>bM>P|>~> {>H>>޵>q$=n=3m=*i\=p5==I= %=v=c<3m:C9g;dt=3m>d>c9>>+>1>y>0==M=s>/>]'>>v>s>>>y>7===&Tq=w=5==D=g=&Tq>>vn>v>>|>]u>q$=O=/=D=T>@Y>#>Tq>&>>>P*=07=T?<==P*=:*= %=x=rܫ=<>@Y>YY>S{>/B3> = {===0>`>Z>>w>>]'>-'==R>']>%>-'=07= =x=Y=51>>">C(.>P*>>OW>==C TP>B>>g====Y==> >>%`>=Z==N f=g<{>GM>M>d=T=T=====ʎ>>~'>!{> v_>'=…=i\=C= >0Gn>P*>P*>/B3> ====M==%>޵>%>P*>h_>g$>M+>%>{=X=u[=?/==[db=51=[>=[= =Q0<#D9g9g<ѳ=x >Q>C(.> >`->̙>8>P*>v>== =Ow>>D>Ȅ>>> >q$>r\>.~G>v>=%=2==T>&>Q0>\i>C(.>-'=n<:g:g=3m=>%>d>7>>>΂\>>IG>*z=> =>?C>>??']?$>>,>n>.<>>>O>I@>>,>>>l:>w=fK><>!??]>Ϩ>">|>$> )>/>b>{? ?6?D?C?3F>>>>Y<>0>%O6>Dn>>>/>p?>>s>Y܊=E=c9=VJ<=i> >Z>51>W??3?4>FH>>4 >x>']>pI>D?+Ѝ?EA?Rؖ?O?B"?L>>u[>I@>?C>nq>>??6V? >O>>GM=j= E=>>Es>g>}? u? ƚ>˴>OW>>, >>>`>`N?,y?EA?R?O%?A. ?>~G>{G>M+>A>w2>>I?/?&?L>臸>/>/B3=*=Ow=07>޵> 5>zG>F>j>>L>b>P*>-'>> >6l>??7 ?Cn?Bt?0 >'>>g$>>OW>.~G>_> > ? ƚ?V? B>db>a>, =07=*= E=*=> >`~>#>>~2>C(.>d=O==db><>W)>> ?!J?\> >̙>u[>>> %>d>)p>|>Kb>Bu>.>X>>u(o>==5=0=w=s=ʎ>V><>ٛ>=_===zG===dB> =>C>?e>8>ٛ>>]n>+><==ȃ= >*( >zG>KB>>k>z3>-=yN=h_=; > 5>%>M>=9=*==_yN==:>>AV>Sx>Es>$̙=_H=T<t;:g;g;? >=J<=<t:D9g9g:g:D:D;3m;m;t;J;?;g:g9g9g9g;=<=*=Z_(=h_=h_=^t=^t=VJ<=-y =<_= :=rܫ=/=o= :=J {<ѳ:D9g9g9g9g:g:g:D;;n;?;:D9g9g;=t==E=魚=;===w=Z_(=0==*i\=v===:*=J {<=:g9g9g9g9g:g:D;>f>H>V>A>==N=t!=XT=R5Q= =51==?=y-=J {;g9g9g:g;"#>t!>-'>>TP>a&>B= Z=t!=i=R=n> >)d!>22>$=~=;D9g9g9g:D< =<=(= 5=<5Q<:g9gT?>N>7>>9>Q><0=Ϩ>=^t=a==[>, >W)>dR%>UP>'I=;!9g9g:D<(<=c=(^=t<_a&>@> >>]>'>F=n=L=C=>><~>gs>u[>i>>OW=_H<9g:C;gEA>z2>zS><>>>22=@=*i\= :=w= >.<>\(O>l:>^t>2=L<9g9g:C;dt<w>\(O>4>(>+>S)>d=< >0>B>6%>-'=O6;9g9g:g;g;dt:D9g9g9g:g>*( ><~>-[>d=~=g:D;/==<*9g9g9g:C9g9g9g9g:<=J {=O6=n=~=R >=t=y =fw>GM> I=OW=$I<%>W)>m…>d>?C>w=/=J {<\i;g;;J</;J;3m:g9g9g:D"#>U>g >W)>&==C=*=a= f>'I>x>V>̙>q$>#>Jg>g=< <<*=(=%`= >Sx>@>>q>^t>B==qp=>*z>\>>qD>s>M>9>rJ>L==3m==?/=x =R=zG=07>gs>8>~>>x>.<=0=d=>-'>u[>5>r>:>+>> >*=51=L=6=u[= %=n=s=w= ѳ<:g9g;=T?>d>`>>a>O>xyn>1L==8=>i;>qp>3> >>@>]>> ==)d!=)d!=w===O6== :@>x>>@>`>$̙==t=o>g>Rv>S >=>>1<>|>ba>޵=x < ==L== %==h_= ѳ~'>G~h>`~>Z>::k>i;=͝=ѳ=Y=_(>$̙>k^>>>c>nq>8=n= 5>22>0>as== =g==/>*z>*>P*>\i>HBT>==?/-'> 5>> I=ӽ)=t=x =| =?=t> >ٛ>q$>i;===(^<5Q >q$>">~'==n=={====:>*z>>!:K>f> TP===0=Rd>@>`>`>@Y>^=ʎ=M== E=>>951>g >|M >u[>R>"===T=e=_yN==a>(>u>== <9g9g%?>WOw>>>@>>g >i;=Ϩ>=n=[>$J>a>a>>Ow>E>>">1F> ==y-=0> >>OW>k5r>u >\(O>%=:= :;g:D=C=>1F>>2?a?>,C>>_>>{>>[>M>ǟ?#4m?4}?3ټ? v_>+>>7l >GM>(>q$>`~>>>>R>>!:K=<޵>e>(.?EC?$z?&? #>Ow>c>8/>M>51>>`N?$j?D ?P*?Nr?A?C>n>i>=̹>/>Z>>χ>*?%?>p?>>x>f==TP=>>u[>Σ?8@?*?+9?+>>/>%`>KS>%>@Y>:*>[3?5a?Qqe?e?cψ?KԢ?0_>^>k>V>M+>">v>!?8?(?>>Z>/B3==a><>>_>?E?L? ? >җG>>@j>s>0 >66>v?5a?Py?d?bhW?J {?.>7>>Z>S:>U>?4?)?,o?&>}c>>M> >޵> >>0><>@>>>Ow>Tq>i>!7>w>L>W>?%'?C$?M+?K! ?>y>K>@Y>u[>>S?G?(?*>.>]>F7> >=a=d> >5 E> >>U>>^>q$= = =>!:K>\>r??1?/1?>>4>N>'Y>V>>>w>h6> ?>>ƙ>?e>'Y=E"=Ѳ==:K==?>-'>*>1L> >k=:==/=?=?>#D>t#4>:K>;>>;>vn>?C>a==a>k>@>>Q>><>>C>{=={<ѳ=g=9=T==͝=:=_=5=T=DU='Y=N f===͝>w>.~G>H>HBT>1L>===M=,=?=yn>-7>Z>m?>]u>5a> =n=RO>>=m==c;=:g:C:D;3m;<'Y<<t<'>>^=07=y =,=f=R5Q=P*=T=n=ȃ=ʎ==1<(9g9g9g9g9g:D;<'Y<t<*<_ TP>KԢ>| >>r\>?C>=~G=,=w===$> >d==tRv>2b>Ѝ>d> >>9v=yN===n=>!:K>C(.>M+>;?>d=/:D9g;g<'Y< f= 5=K=Q0=3m=g&>g>Xe>>a>>>f>/=:*=*z=>>HBT>o >z>k5r><~=07!{>` >ԁ>ë>>@>I>rZ> =R=x =n>Q>W)>~>q>{m>P*> =R9g:g;d>y>]>>@>>%`>[#=m=rܫ=J {=D>w>G>r\> >qp>C>{<ܫ9g:g;g<g<ѳ< f9v>H>q$>g>@>z3>']=OW==,=_yN= f>/>F|>W)>F>/=̹;!9g9g:C;t!<'>W>g$>S)>$̙= =1;?<g<_(=XT=n>>-'> =ȃ=R9g9g:g;g;:t:g:g:D;m~'>@Y>Sx>HBT>"#=?=d=g;?:D:t;;!;:D9g9g:g޵>+>>OW>-y >v>=%`= 5= =M+=OW>>g$>(>|><>}>1F=9=_yN<>-y >`>t!>ga>9v==ѳ=Q0==>N>>]>>>k>m…>d==t=g=&Tq=]n=t!=WOw=cDn>y>H>66>W>B=51=T=>w>k5r>:K>o>>n>M>@>=s=9= 5=VJ<===R=I@<;9g9g9g;dt=(^=~>C(.>x>U>">\i>%`=ʎ=*z=i\> >f\>>>>>Y>~>GM=5=&Tq==VJ<=====WOw<_;?9g9g:t==0>*>`~>u[>nq>I,>u=@=zG=^=>Es>t>>>Ѝ>2b>UE==qp<w>7>N>IG>,2> ?e= =T?=XT=>&>]n>v>>>Z>^t>-'=:K=<:K<t<ܫ=t=-y =-y =>*>'I>N===+n='Y=Y=魚>>?/>IG>4 >Y=i\=<<= >GM>-'>Q==p5= :==u[= =i>(>d==J=Z_(<_<t<ѳ>>Y=t==N f=*=F=,==07>>^>=a==M+=R<V>2>T?>Rv>->==t!=a==+> >,2>W)>lJ>b>;?>^=̘==dt=a=qp=s=yN> >-'> )== F|>>i\>>>UP>k===>k>\(O>nv>X>U>>7>u > 5=?==51=ȃ>>/>\>h%>Rv>!7=E=*i\;g:D= :=*>"#>-'>>>>S>ٻ>I>Rv>=2>>W)>>Эy??3F?3F?>>u >'I><>+>~'>P*>>p>&>>x>L==c<=m=?>S{>qD>2???9> f>Q>0 >>22>}RF>?}?B8?M?Lɉ?@j?>g>]n>.<>%>L>>">臸>NQ>hW>F>k^>=y ==>w>f\>n?Z?&#v?(?g>#>a>E2>!7><~>>?2?Mk?c,C?aR?I'?0s>i}>\>IG>@>u(o>[>q?X?G?>ߙ>>-[==07>w><>Q0>>I?!k?e?]>L>TP>?C>k>.<>~>G?2?L?af?^g?HR?.,>V>g>P*>D>}> >!?n?)?ӽ>>]>F>d>> )>>(>>C>⩥>}>a>>c > >w>GM>Xc>n?!?@j?Jmq?Hb?:J?$>Y>r\>@>22>g >^>g?S ?8?S>M>>AV>">=L=t4> >->td>>C>>YY>=2==m>%>>¥?1?.B?,s?|>qD>>F7>q$>-'>0>>>$>=>;>D>g>$̙=!=yN=s==n=07>'>)">/B3> 5>== =s=ȃ=>,2>zG>>l>>>t!>8qD>==*>T>3>g>>Gn>>>>OW>V==R<=c=K==~G= f=:=n=n==x =_yN=,=?=yN>GM>@>W>S)>7l >~'=07= ==p5==?>%>Q0>a&>U>.~G> ==c<:D;?޵>V= = E=R=Q0= :=c=I@=O6=:>O>&>>==*;:D:g:D;dt;J<}<< f<<<}>>$̙>GM===rܫ=DU=;D=T?=:*=/=E=T=51=e<:g9g9g9g:g;<;D>XT>E>>|M >F|> )==w=e= =/=>>d=~=t<ѳ:g:g;i<<m='Y=;D=0=c{>]'>6V>>X>H>>@Y=L=R=,==>"#>AV>IG>2ԁ> I={:D9g:g<(<==I@=_yN=T?=(^#D>:*>>+>[3>ŵA> >l:> I===>~'>HBT>l>u[>cL>1=J<<;D9g:g;J->(>'> >2>+>Ѝ>u[>^=/=T=*>>V>z3>g>u(o>Dn=<9g;dt<+n<= ѳ= 5=!:K=c<;!;#D;?=m…>ٛ> >>ƙ>+>>P|>^t= =a=R5Q= E>d>Es>n>xyn>h%>::k=*<ѳ9g:g:t;<;DH>3>̙>R>8> >']= E=g=g=x =J<>%`>@j>N f>>OW>2b=5;t!9g9g9g:g;<\i<}<'Y;;?2ԁ>a&>nE">W)>!7=E=;n;J<5Q=h_=>> ==<9g9g:D;?<;i;D;?<;D'>>-'=07= :=<\i;:C:g:D;3m:D:g9g9g:g;g=g=O6=5>=T=o=46%>i>~W>r\>Dn> ==/=<;D;n< =<ѳ%O6>3>'I>v>=~G=K==Z_(=ʎ>&Tq>u[>b>5>|>aS>::k=a=XT< f<<=='Y= <;g9g9g9g:D<t=>>@Y>S{>F7> =&==?/=T=>@Y>?e>O6>>> >V>{== ѳ< f=c=I@=\i=;D< <:g9g9g9g:D>B">WOw>M>(=_H=a=C=| =$>>OW>>r>[>>>Q0==T=R< f==J {=^t=J {=c<};g9g9g:g =>0>Es>@Y>=:==/=?/=>!7>nE">">|>S >u[>*=ʎ=La>)">%>d=0=h_<5Q1L>`>q>_>.<=$=m=<t>'>c=[=n=*>>=ʎ=a< T=[=ȃ=| <*< =<R<*=h_==d=E= =c9<_(<ѳT=9=y =K<<<==,=Z_(=:K==͝==g= 5< f<<<*<_(=c=Z_(====a<*;9g9g9g<= >^>']>$̙> =/=]n<_<=%O6=:*=ȃ>>!:K>/B3>'I><=={=!:K=!:K=6=Q0==51=L=== =M+</9g:g;?=>>_>4>?e>j>f=={=i=>{>/>rZ>>7>i\>>@Y==D=/=ѳ=5=:>>/B3>>>-7>Y==R;#D:g<ѳ==>`=:>>>>h> > =a=˓S>{>0>Y>=>E"?|? %>E">>Es>=E=*=E">q$>`>>>;q>I@>=s<_Q>c>l*> >> >>`=:>~'>f>>W)>>?1?@j?@Y?1>>)3>4>> D>>eW`>>&>@> >(>;?=嘮=x=zG=5Q=>(>}>?N?H>q>>x>%>^>q$>dt>?1??4?Jl?I?=̹?E>eh>Y<>'>>@j>>>A.>˴>hW>ԁ>t#4>~'=_(=ʎ= >Q>q$>)3>&>${>>>ض>9>l:>!:K> >u>Y>??>R?IG?H2?;?? =>$>a&>-> v_>Jg>>R>?*z>>-i>H>'Y>T==p=> TP>M\z>>v>T>>q>>>^=>+>7l >>?.B?;p?:J?,>ٻ>>Pl*>!{>2b>3ټ>>>>NQ>R%>>>"?= =07==%=>c>@Y>nq>z3>bM>2ԁ><=~==i>>_>>Y? ?>ǟ>>c >(>v>=>d>Q>b>>L>>&>T?>=̘=Y=g$= ==Y=O>d>a> =07=ȃ=n=/==;>>`~>>q$>f>>UE>q$==== {>i;>M> >>>Y>=ǟ==UE>1L>HBT>AV>'I> =n=| =+n=&Tq=g$=> d>)">7*>->~'=*=<T==J<=5=K<<%`<=*=R=>Q> )>/==M<;3m:g:g:D:t;=&=%=5=;n9g9g9g:g;g;Jd>GM>^=嘮==;D=c=c=)d!=u[=?=j==?=K<:g9g9g9g:g;>@Y>nq>z>d>1F=2=a=J {=6=c9=D=:=d=Z=s=XTB>>r>5>>{G>)p=+=qp=h_==yN>'>']>*>a=:=:D9g9g:D>u[>̙>>ê>>b>P*==w=T=Y>{y>.<>O%>V>@>-'=;#D9g:D<;D<5Q==1=3m=t>">>ď_>g>>>XT=G=^t=x =n>^>;>]n>e>Q0> v_=2;:g;d>nq>>f>><>>?C=%==: =n>{>+4>N>W)>B>~'=M:t9g:g;t!;?<4> >>/><>\>w={<\i<=f=n> >#r>*>Q= ='Y9g9g9g9g:g;t!<<;D</<'Y<"#>F7>NR>3> = %<:g;<=C=/===51=Q0;9g:D;?<<L>*> v_>==(^+4>[>nq>a&>6>=TP=(<>޵=ȃ=| =/<m=)d!=D><>H>zG>U>>W)>==3m<t<>> TP==x=(^=,=%O6=5> I>F7>w>P\>~W>S)>s= =;D I>*z=d=R='I>V>g$>XT>+4=T=== :<<;D>$̙>=嘮=d=)d!<5Qd>*>)d!> d==Bٛ>Dn>c >^t>0Gn=~= =(= ѳ=(^=L=R==> >= {=h_>S{> > >i> 5====>Q>/B3>w>eh>V>V>q$>\(O> ?e==qp=| =a=:>N>8>Es>3ټ>i;==3m)d!>` >R>]>C>cL>-'=0= =T>GM>`>>?c]?M+>}B> >C(.>{=T==:>7>O%>V>o>y>C(.>=D=3m<ܫ=T= =n>51>X>f>>Tq>}RF>(=d==a>q$>u[>X? Z.?/1?/s.?o>>m…>q$=Z=J<>޵>5a>>>>>u >']=O= :=T==n=>!:K>aS> >M>>m…>!7=T==%>>p>m?)?-V?-V? T>qD>qp>']>{= > >AV> >i\>l>^>>::k=yn===D===>>>v>>n>9> =:= Z=>g>R=>>Ow?@?>ض>>W>V=?==>.~G>y>KB>>8>~W>/B3====rܫ=T==51=>>+-H>>=:==^=t=͝>$̙>u[>>>>C>l>*i\===/=> >C>{>` >>P*>=n={=a<=R=3m=p5=:K=+== f=:k===x =T==*>)d!>_>y>u >U>%=T==K=<~=p5=OW> >->@>3ټ>B=9=<md>!:K>/> =5Q=zG4>\=a==c;?:D9g:g;g;i">/>@Y>/B3>i;=ʎ=i=N= =(^=u[=?===rܫd>S{>w>>w>C(.> )=̙=I@=8={==a>T===b7l >>|>>2b>k^>q$=J=T?=XT=M=E> I>>k> =F|>#>>">>t!> v_==)d!=J {=5=>>']>)p>=*<m9g9g;4>}>N>6V>j>WOw> TP=T<= ==%>v>>>L> =51d>Dn>k^>r>U>ٛ=T{><>~'>V==c;3m:C:D<'Y=g=VJ<=T=T=3m ?e>-'> =O=:*=<t;?:D:g:D:D:g9g9g9g:g<= ѳ=c9=,=h_=%O6<Q>/>+4>"#>v>==Q0<5Q;!;3m;3m;t!;dt;g:g9g9g9g9g:g<(=c=x =x=T=4>)p> v_>= =VJ<{>w>f=Σ== 5<<'Y;?;;g;C;?<(<R;:g9g9g:gT>=ʎ=x =/== =?/=x=>g>)d!>L>Py>.~G>V==<=_H=OW=S:&>0>Q=i=ѳ=VJ<=C=h_=y =>0>v->>>>::k=[=x == ==C=n=>>%>>{=y =v>>951>I>0> =51=| =I@=VJ<=>Y>R> >,>>>_7>İ=~=_yN=I@=/=>7>4 >Es>;?>&==x <ܫ%>6%>']>k=?=T=0==R> >V>nv>&>>>a&>f=%=T=a=a=*>%`>AV>Td>F7>"#=:=:*=V>d>{y=i=Y=t!='Y=R=R5Q=[>@j>">C>+>g>I@>d=/=a=K= =5Q>>1F>C>951>GM=={<m&>P*>nE">m…>N>=;=qp= ==: =t=嘮>i;>k>~'===,ss>)d!>(>~'=9=x <{==:=t=6>!:K>->#r> I=ʎ=~2= 5== 5=a=nv=#==XT<;dt9g:g;m%O6>N f>YY>C(.>\9=t=:*=-y ==R5Q=a==Ϩ>==t=;9g9g;22>\>eW`>KS>=J<=u[=c=R=Z_(=?=ʎ=a=Ow=n=;3m9g9g:D;< =;?;#D:g9g9g9g:t<;D=R= =?>%>G~h>LW?>/>=y =t<>&>&>=Y=F-'>>-'=嘮=<}:D:D;?=g=:*=y-=Y=Ϩ>==(^;i:C9g9g9g:g;?<=dt=R=| =K= ѳ<d>.~G>;?>*> = Z<_;;J<=K==O>޵==̘=| <:D9g:g:g;dt<#D==p5==x=k= :<ѳ;D;t!<;D='Y= {>İ>951>@j>.<>= =,<( >{=d=R<;3m:g:C:D;^>)d!>.~G>L=_H=<;t>d=2==(;m;dt<<t=c={=n=:k==T=;!:g9g9g9g:g;<R<<ܫ=g<5Q==y-==3m< f<<_=3m=w==w= 5 Q>Q=y-=M+;!9g9g:D<=h_=== =<:g9g9g:g;#D<;DV> ѳ>T=/='Y;t!:g:g;<5Q=T=51=ʎ=OW=?e<:9g9g9g9g:g;C޵>>+==R5Q;?9g9g:g<ѳ=VJ<=s=y ==(^;J9g9g:D;!</>w>g==-y ;g9g9g:D<t=a=̙= = %=?/<;D9g9g9g:D;<<5Q< >g=%=a;i9g9g;g>>d==x ;?9g9g;=g=m=n==i;= 5;?9g9g:g;!<<>~'>`>"=;=_yN;9g9g;C<_=x ====,s<9g9g:g;t<ѳ<<t<:D9g:C<5Q=5=:> TP>^>T=51=:g9g:g>^>=={<'Y9g:g<==T=:K=5=x <_:t9g9g;gV>İ>f>-'=:= <(9g:g > %> 5>-'=嘮=x ;?9g9g< ==#D=d====0<R9g:g;D>-'>>v>=@=;D;3m9g:D<=M+===p5<m;9g9g:D;?<<R;:g9g9g =>{=+=h_<9g:g>>w=a=w;J9g:g<ѳ=VJ<=?==J=t=)d!;!9g9g;g޵>B>>^=;=dt;?9g:g">'>g=n=1;3m9g9g;dt<ܫ=i===_yN<_(;t!9g9g:C;#D;;;g:g9g9g<'Y=n==?=p=*=?e<:g9g;m/=n=51=*i\;#D9g:g/> I==51=&Tq;g9g9g<#D=(^===n=D=| =;9g9g:g;;i;:D9g9g9g==?=:D9g;3m< f=Q0==| =3m<:D9g9g:g:D:D:g9g9g;= 5=s=ȃ= f==_yN>=͝=]n;J:g:g:D;t!<;D=XT=;> >/==g$<ѳ:g9g9g:g;id>-'==5<;t!;t!;?<`~==E>)">L>AV>=Y=;dt9g9g;#D^>:>*z==c;J;<'Y>Es>n>a&>(=;=C;9g:g;/=Z==<#D;n;J<t=a=t4>2ԁ>XT>L>L=n=*;t!9g:g;+>>d=E={<t:g9g9g:D;i><>=n=4;?;4><=m=:k= :;3m:D< =<ѳ<t<};J:D9g9g9g9g9g9g:g:t:D:g9g:g<=g=T==ܫ==a=i;>=_H=<ѳ:t:D;g;?T>&>İ==M< f:t9g9g:D>8/>;>!7=:=T?<;D<>`~>I> >I@>= ,s>Q>XT>@j>=<<=g=K=p>Z_(>C>=>> >3W=̘=;;t!<=Z_(=>v>>> ?e==c:D9g9g9g:D=R=yN>*i\>Sx>^t>KS> 5=0=3m<_==T>^>v>H>V>~>%`>N=魚=;D<g;i<=~2= >>>x=魚=`~;9g9g9g:gN>>OW>KS>>>Q=ӽ)=Q0<̹<=s>>d>> E>Gn>>>OW=*= :;J;J >B>d=a=Z_(;9g9g9g9g:=(^=T>~'>%>q$>v>=:k=)d!'I>ui>(>)3>\(O> =ѳ<t;3m;<;D=c=== =嘮==:t9g9g9g9g<(=h_=̘==~=ʎ={-'>*>"#>T=*=,;dt9g:g;<(=g=h_=D=| =c;?9g9g9g:g<=]n===m…<5Q;t!9g9g;==x =s= =7X>^>R=d={a>/>:=d=x<<;D<=g<m{>>q$>s=:=>>4=ʎ=C;n:g;<'YV=:=}<ѳ:g9g9g:D<=?/=d===c;n9g9g9g;#D==͝>B>.<>.~G>=E=*i\< =;!k>?C>a&>\i>/B3= =h_ I>@Y>_>eW`>L>M=*=<*==| >{>_>@>&>s>>@Y=&=+n<;n<ѳ=T=魚>>q$>==T?;n9g9g:g;?=>B>VJ<>z3>{>n>?C>={=(^=_yN=51>1F>a>^>D>#>>>~'=d>0>@j>5a>x=<t:g:C:g;=p5>>V>~>K!>x>M+>==N f=u[=:>KR>O6>O>>${>W?>>%== :`>@>Py>EA>#r==;g:g:g:D==Z>=J>k5r>x>l:>D-i>==?/=P*=y->::k>C>̘>>c>>?e>t=:K=c<_=>=U>>7*>F>@~>8=:= ;#D:g9g:g;!=/>-'>?/>R>IG>*>%?=t=g<_=>">nq>̙>>>@>Sx=07=VJ<>']>>*z=5>q$>k> =@=C<'Y;t!<>U>{G>u[>D-i>= T=yn==dt>^>=Ow= < f~'>k><= =/a>8>s=O=^<;! )>O>/=̘=T?<(:D;dt;!<;D<;D;i;g:g:g9g9g9g9g:g;dt;?;i;t!:g9g9g:g</<_=_yN==_(=07=5Q=t=R;g9g9g:g;3m;n;;dt;3m:D:g9g9g9g:g:D:D:g:g9g9g;<}= ==a==?=x=\i<*;3m9g9g:g:t;?O>O=d= %f>8/>::k> =07=VJ<<\ias>\i>Q>y>L>"=t<;t!:D;?=0=OW=> === :;dt9g9g:g< == >d>F|>k5r>o>Xc>%=+=)d!= =I@=y >GM>}>>L>)t>q$>^t>k=u[<R>%>22>)d!> I=5<ѳ:g9g:g<=t>L>_>>4>z3>L>Y=t=R5Q=R= >M>O6>T>T>>>>+4=Y=6=R=Z_(=i>!:K>I@>Y<>P*>*=魚='Y;:g:D;?=,> :>`~>k>j> >\(O>f=U=x =O=>dt>>g??> >I>AV=T=qp=?/=:*=>.<>Xc>ilK>_>=>=m…;!:D:g:t= :>\>HBT>u[>]>y>T>8=ʎ=h_=rܫ=9>Py>>>G>>ҷ>>4=ʎ=f=I@=:*=?>'I>P*>`=:>WOw>4 >{=g$< =:g:g:g<;D=>>L>`~>Y>;?>=m= :=R=5>L>E>>;p>> >xyn>d=a='Y= :=\i=>w>->@~>5a>=̘=t;:g9g9g:D= 5=Ow>>+4>*>B==u['I>r\>>>k^>= E= :<ѳ< >k=%=a,>GM>B=Z=D=;!:t:t;</g>(>=5Q=zG>Y>g=ʎ=dt<};;?<'Y<'Y;i;g:g9g9g9g9g:g; =>{y=a=<:D9g9g:g^>%>'Y>=ʎ=*i\< =< =>N>oJ]>i>@~>v>=d<;:D;g=c==>=Z== 5;n9g9g:g;t=T?=2>1F>V>\(O>C(.><== <=C=>i;>l:>P|>>h>u>Q0=2=u[@> >.<>%>{y=<:D9g:g;?=p5>Y>Jg>s>z3>h_>951==,=9==>>>w>,">hW>>T>>$̙=J=M+==a=E>L>C(.>UE>KS>'I=L=3m;:g:g;dt==̹>{y>KR>u[>">u(o>J>==]n= =L>Q0>>2>>T> >>::k===g$=a=t4>+n>T?>d>\(O>9>=w<:D:g:g22>dR%>u >j07>Dn>N=51=DU=R5Q=̘>>>>΂\>>t>>S >.~G=̘=T=u[=M=?>%>KS>\>T>1L>=p5<:D9g9g;?=>d><~>Q>KS>.<> =5=<= >>t>9>zt>o>j>oJ]>c=s=M+=C=| =y->Y>+n>;>2>B=ʎ=*;n:g9g9g:g=g=dB>(> > >d=5Q=S:>a>R>>c >%`=~=;D >=ʎ=\i>=2=o=-y ==:*=;?:g:g:D:D:g9g9g9g9g9g:g;3m{>{=E= !:K>;?>2ԁ><=Ϩ>=K=/= )>%>)d!><=E=L4 >z>w>t>k5r> v_=y-=;D<t<'Y>-'> =Ow=p5L>?T>G>2ԁ>^== < f=I@= Z>-'>n>>>(>w>Z_(>/= :=*i\= =-y =>*z>%O6>22>+>"==;3m:C:g:g<=>>B">Q>AV>L=O=XT=g=C=2>k>|>]>ȤJ>ŵA>p>w2>~'= E=h_=XT=T= {>>22>C>=̹>%`=E=,s;m:g9g9g;=T>>/>Ci}>;D>L=L=p5>qT>̙>~>D>{>nE">i;==qp=i=:*=@>^>-y >>>4 >GM=̘="?;m:g9g9g:g= ѳ=>-'>&>%O6>d=%=J {7l >I>|>>/>@Y===?/=B=rܫ=Y=>-'>>==t<*;g:g9g9g<'Y=s=5Q>,>=9=<;g9g;3m=?/=…>->V>XO>4 >=/=(^#r>>OW>7*>B=:=rܫ<<;g;dt<=UE=i\=n= ={<_(;3m9g9g9g9g;=%O6= =T>= = %=;n;n&>U>u[>t!>K>d=2=: <{=!=:k=C<'Y:g9g9g9g:g<_==[> >T=n=K%>k5r>:*>4>g$>!{==rܫ=&Tq==: =g=@>޵>d> I==w<=;g:g9g9g9g<'Y=T=>{==ʎ=p5GM>Y<>>,>^t>k=ȃ=rܫ=3m=;D=b=^==m> >= f=a*>Q0>U>2ԁ>*z=?==̹==&Tq=L={==ʎ= =Эy== ;J:g9g9g:g>-'>T==Cw> =嘮== 5f>>ٛ>/=*=M+<<>B>\= =I@<=g=c=)d!=K=dt=,=O=x = := =R<=;;3m;3m;R=Z=s<5Q >^>g=Ϩ>=d=*<ѳ;J;n;m7>ٛ> =ȃ=g$=<">)d!>+4>İ=J==L=g<T>>%>~'=a==22<m< f===L>>=̹>>> =G==p5=-y =22=XT==Y>{>d>k==w=R< >x>=̘==R5Q===!:K===>x>0>/B3>B=?==x =J {=`~=*z=n=>-'>>==a= :< >(==̘==R5Q=/=Q0=T=n=&>Y>GM>O=*=x= Q=[=n=g$<;t;:g;;!<R;J< =i;>>^== :<'Y;n;?d> v_>%`>R=n=T=Rv>>0Gn>C(.>2> )=x< >2ԁ>KR>B"> 5=嘮=:*=<<<<_<ܫ<^>>>Q>B">a==< f>Jg>`~>UE>*=:= =<*<_=t=?/=I@=(^*>@>2ԁ>^==3m=-'>AV>W>Jg>=*=[db<<==4=e=o=K=c<t;9g9g:D>&>-'=t==L=%`<==M=>"#>22>'I>޵==R<t<<=)d!=R5Q=Z_(=;D=<;n:g9g;n=c=:K=:=%=={=J {=$I===| ==m> I===-y <k>>>v>=/=DU<_< >']>.~G>!7> ==ʎ=,=c<t<<'Y<m=_yN=g=qp=<};dt:g:C޵>+-H>S)>Z_(>@Y>^=D=%O6< f2b>L>t!>xyn>\(O>*( >{==v=0=%O6=a=51>{>w=G=#=~'>UP>@>:*>s>4=07=T===T=yn>B">:*>>>.n>S{>=yN= Z==/=E>>N>\>@j>w=x=>cψ>d>E>|>G~h>=?=XT=N f=>^>c9>>i}>T>q$>m…> ==Ϩ>==ҷ>d>P*>|>)3>zG>:X=9=R5Q<<>KS>}RF>f>o >51==Tq=x =u[=> >bG>>ǿ>j>L>g$>!>V==+=>V>`>3> > >S:>4= >>>Jg>4\Y>"=ȃ==p5=e===>2>>I>KB>>@j>=嘮=n=~=%>^>M\z>">> >F7>= <<ѳ'I>Q0>P*>0>-'==== ==yN>k>K>\>L>"#=yN=Kd>>~'= ={y>i;>k==ed>>O=t=rܫ<ѳ;J;J<<ѳ=I@= =E= {=<9g9g:g;g;:g9g9g9g9g:t=*=51>>w>=ʎ=S:< =:D:t;mv>==<_< =;;!<=Y=>-'>"?>q$> ===c<(:D:g:g:D:D:g9g9g:<=s>>5a>F7>3ټ> )=x#r>T?>k^>b>>OW> I= =3m->cL>u >g >3ټ==;D== =s> TP>R> >">x>k^>%O6=ʎ=Q0<<<=='Y=<_(<;D:D9g9g;g<=>=J>s>>xyn>J>R=g=-y =+n=Y>GM>k5r>'>F>W>~>/=͝=O%<ܫ<ܫ=.~G=h_={=f=-y < f;?9g9g:g+4>fL>z>n>AV>%?=a=T?==̹=D>s>bM><>>>t>%==-y v>>=>UP>KS>#D===h_=?/=>V>@>u[>k>| >KS>={<ܫ<t<5Q=,s=p5=T=rܫ=B< <:g9g9g:g<=Tq> >k>&>\=n=(=h_=B=| =͝>~'>>OW>M+>>OW>-'=~G=c<=<\i<= >>=y-=i< ff>>~'>f==*z=Q0=C=J {=R5Q=| =n>{y> 5>'Y>M>{=/=p5=<=;i;J=g=t!=^=g=8<t:9g9g<;D=: =OW><>4 >\i>a>C(.>"=2=XT==̹=VJ<=ѳ=>8>U>xyn>}RF>a&>0> =n=T=;D=(^=u[=dB>> I=p=D= :;J:g:g<=R=_H>0 >|>k>ݏ>>W)>/==]n=,=*> v_>p>>;>>ݏ>u[>-[>k=%=2=/=>.~G>a&>nE">Py>=d I>^b>>Э>G>h>>.~G=E=a=̙>޵>Rv>>D? 8?>>q$>Z_(>q$>=d>>6%>I>>i\>\9>gs>*z=3m<=^>nE">[>Эy>F>j>է>C=~= E=T>d>m…>??/1?-'j?>>zG>2>B>(>q$>i>r>>d>>>7l =i\=<=T=?>%?>Sx>f>>-i><>o>5 E=O=~=n> TP>g >ƺ|??0s?-ʯ?>l>z3>6>`>d>%>x><>Ow>/>>,>V=O=M+='Y=a=?=>f>m…>>6V>?e>U>i;=ȃ=Tq==*>::k>̙>J]?? =>4 >>]'>&">w>g><>a&>>ȤJ>)>7>>L=n=J {= :=R=^t=t=:>-'>5a>C(.>.<> =ȃ=d={=T=D>k>Xc>P|>>>]>e>*>=a=ʎ=嘮>)p>}>>s>q$>z3>%== <;?"#>HBT>KS>1F>==/=:*=rܫ=:*=t>)d!>Z>n>]n>.<=G=p5w>`>s==<;3m:g9g:g:D:D;3m;n;?;!;J;m:t:g9g9g:D<gQ=?==%`=u[=F=<<==3m=3m<_;9g9g9g:D;is>::k>Dn>1 Z>d==,=DU=t==(^===O=Y=YY;?9g:g;@Y>n>x>c9>0Gn=p=| =*=c==p5=*>w>>d=5Q=#D:g9g:C;n*z>KR>zG>>s_H>@Y>{=w<*<= :=T=5>8>-y >">{=;3m9g:t<(/B3>a&>p>\>-[=:=KGM>']>k==T;dt9g:D;;n:9g9g9g9g<=R>T>%O6>3>(> )=2<:D;<==t=D=> )>g=s= ::g9g9g:g9g9g9g:D<5Q==ʎ= ==='Y;g9g:g;?<t=(^=:*=y =5=;D;t9g9g9g9g9g9g;n<=%O6=K=0<*;9g9g:D;i>d>T==g<;D<'Y^>0>D>?C>q$=:=/=<(:D:g:D;3m;g:g9g9g:D<t=D>>DU>WOw>Es>=n=<_(= :=:K>Y>M>">>{y>g$>"#=*=]n<ѳ<g@j>u[>I>y>Jg>=| =,s=]n=>.<>g>P|>R>O6>>P*==T<{>S)>I>8>>c >&==`~=T=>Dn>w>>qD>d>>cL>=,=F7> >> >_7>`=:k={== >@Y>ѳ>d!>>7>]>Xc=t4=e<<=J {=R=t=^=m…=!{>\>u(o>k^>AV><=~=,={=ȃ>%>u >a>>w>>-=51=<<=(^=u[=R==XT= %>@Y>::k>=Z=~G=| =c9=I>>?C>nE"> >oJ]>>OW=d=S:>u><>+=ʎ=x=qp=^t==Σ>w>)d!>1F>!:K==^=,<<'Y;t<<ѳ<5Q=g >==={=a=]n=x =o= >*z> ==G=n=| =R<<;D;;#D;> >=*=/=qp=_yN=h_=w=t=ʎ=> > I=d=Y=t!=<ѳ;;T?;&>0>2Q>=…=={=p5=| ==n>>'I>C(.>F7>/>d=E=:*=(^<<=c=i;=˓S= =+=M= :;9g9g$̙>g$>)3>Y>x>1L=t= :===yN>>Z>>q$>P|>>U>ٛ=嘮=o===a=̘>d>0>>>']==/^>ilK>>R>FH>>Q>+4=Ow=y =Ϩ>>>a&>>E?66?>֋>>T?>>{=*>>)d!>r>l>C>>L=嘮=;?;J=rܫ=>%>է>{>>2>Bu>7>h%>=T=m>7X>>א?+Ѝ?8P?6?(>զ>Q>C(.> >~'>*>u[>>a>܊>ȤJ>@>::k=?=<=o=*>/B3>>D? ?>>u>\>ٛ=[> >F7>q$? D?:?Fy-?E?5a>P>P|>`=:>4 >)d!>N>>l*>P?)>=>ŵA>>=T=u[=n=?>#r>8>̘>9f>t4>܊E>>m…>~'=T>޵>;>q$??;O?Fy-?Es?5 E>~>i>fL>::k>,2>WOw>>ޔ? ?b?v>>>m>=y = %= E=Ow> >T?>f>o>U><>>7X==5Q=>ٛ>/>?.~G?9?6f?# >><>P*>)d!>>@>>R>RF? O>>>>a===m=O6=*>^>C(.>u[>">i>/==/=#= E=:>;?>>ݰ'?p>RF>W?>+>\i>']>=m>7>g$>>Σ> >Σ>,>^t>{=R=J {<=(^=v==> )>'>=0==p5=J {=]n=t=:>.<>w>m>8>v->B">İ=_H=n=Tq=U>a>b>O>V> >gs>q$=~=<ѳ;g;!<==k=x=/===f=)d!<ܫ<ѳ<=<=t!=D=~>><> I=嘮=T==Z_(=/=J {=51>">22>C>::k>=Ow=C<:D:g:t;n<(<<5Q<_{===\i<;D:g9g9g:g:D:D;g;;?;?;:t:g9g9g:D<;D<m=*i\=B=K=C=L=B= :=ȃ=2=x=x =XT=)d!==(=DU=a=VJ<= ;!9g9g9g9g9g9g:g;<'Y'>2Q>@Y>.<>d=E=/=m=]n=?/=_yN===?=xa>_>U>t>66>NR>O=X=g=rܫ={=?=07>>ٛ>w=UAV>Q>A>Y>>~>-=%=rܫ=g$=:*= f>a>=J>Jg>;>-'=;g9g:g;<ѳ===N>c>><>r>>8qD=E=Q0=J {==yN>%>P*>^>Qqe>&=ʎ2Q>@>>>C>u[>'=_= :==^t=>ٛ>Dn>V>I@> =<;D9g9g:<R<<ѳ<'Y:D9g9g:D=1>>C>u[>g>qp>?C>k={ v_>.~G>%>=R;g9g:g;;?;dt9g9g9g:g<=n= >>%>>@=s<:g;3m<===D=5Q=Z=a=M<9g9g:g:D:g9g9g9g:D,=a=/-'>::k>N f>C(.> 5=07=d=;n:g:g:;t!;:g9g9g:g>8>J {>9>^==<m=4=2>>\>>0>(>r\>)"=:=R5Q7*>m6>~>q>@j>T=m=3m={=9>@>d>>>[>W>]'>*z= <ܫ<=g=3m=VJ<=A=R<`~:D9g9g:D==>L>66>)3>+>]u>İ=o=f=d>>Y<>C>f>">>eh>u >O=^= <=-y ={===I@<5Q;?9g9g:D==…>Dn>|M >>>]u>M==x =a=>T?>W>>>>>l:> =<ܫ<_=<~= ====_yN=<:g9g:g<=D>&">_7>u[>n>Es>O==w=,=O>4\Y>E>>>D>>@j=E=0<{>.<>F|>@j>$J>==a=R5Q=>d>N> > >@>Na>:*=| <d> >q$>=E=d=J {=3m=%?=J<>>2ԁ>@Y>+4>=t<ܫ<<;D<<;D<<5Q=g=g<<:D9g9g:D==~>g>>=Z==qp=3m=0=h_=~G=嘮>{y> = =/=XT<*>i;>/=J<=s=[db=: =J {=p5=5=:>> O>==n=M+<_< >>>@Y>"#=[==rܫ=^t=| == >-'>8/>R5Q>O>>0 >w== =1===n=Y=t4>=~=dB=VJ<</:g9g<;D=3m=i>.<>z3>Q>>>AV=Z=?=x=51>%?>4 >y>L>>L>>_7>f===?==T>!:K>IG>V>@Y>= E<_:t:D=(=>-'>>>D>>@>>@~=Z=@=>0>w>>n?$?%;>><>bM>"?>{y=>w>>>f>q$>>>gs> =x <}<;D==>2Q>̙>%? ?>>OW>Y>=m><>XT>P|>?6?DZ?DN?4>>L>S{>)d!>>>OW>>>=:>6>2>Ѝ>Y=Ow=XT=<~=+=>C>>NQ?L?/?:>̹5>>-7> )>>gs>?)d!?E?Sk?Q[?Ci}? Z> >td>@j>5 E>b>̙>? ?~?>O>>GM==n=*>*z>3ټ>>Bu?EC? =>>>@>&>v>>>[db>?*?E?S?Py?B֌?f>>x>DU>:X>l{>>T?V?%;?+>lK>>/B3=a=̘=yN=>GM>pO><>ؖ>O>>`>>Pl*>^=…>g>7*>ٛ?\?6q?Dn?CH?22>>KB>c >3ټ>'I>T?>>&? ?6V? )3> >V>, =9=ȃ==ȃ=O>8>_>> >">Jg>d=E=dB=E>w>`~>>2?$I?f>:>>u >5a>~'> >!7>|Z> E>Bu>T>Bu> >zB>=~==3m=x =5=ʎ>*z>%`>%>~'=O=Y=x==/=Ɉ>-'>Z>1>> >>^t>%>=J<=~=a>(>z3>q$>>>">0 ==h_= :<>5 E>3ټ>>*z=Ϩ>=D=u[=?/=| =d>>IG>[>N f>)d!=2=:*<;?:D;< ?e>>w==t< f:D:g:g:D;3m;< => D= =5Q=D={=]n=C=22=[db=x=Y=Y=T<m;t!9g9g9g9g9g:g:D;m4>cψ>oJ]>YY>+n===g=u[=w==dB=嘮=:=n=C;9g9g:C;g<<= ѳ==c<;i9g9g=g=yN>@Y>>q$>@>t>u[>*=Ow=c== %=>>'I>/>s=07=!:K9g9g:g;t!d>r\>ݏ>>>>>S{>Q=== =>>->U>`~>P*>!7=/;9g:C;3mİ> >^>V>ȤJ>`N>>]'>k= =t!=~G> >>>g >td>d>6%=<}9g9g:g;?<==*= :<</:D:g=>k>g >>>>>m>F|=?=XT=<~=d=yn>/B3>Z>i>Z>-=O'I>u[>2b>C>8>bM>Q=Y^>1 Z>@j>2>d= %;3m9g9g:C;<}<>?/>M+>;?>=s=g;g;<=C=o=O>/=yn=~G<9g9g:D;!<;D;!;g:g:g;3m;J< f=i= =ʎ=T=*z>%>3ټ>)d!> )=~=J {>!7>=J<=VJ<<*<*=)d!=?> )>KS>>I>+>\i>== :<;t!;tİ>F7>Y<>KR>q$=@=Q0==p5=J<>22>f>>M> >>Jg=E"=a+4>`~>u(o>h%>=>==I@== >N>><>u>>>fL>v>= =g<=c=S:=qp=YY=*i\>`=:>u >k5r>@> =?=Q0= =Z>J {>m>>X>>~>^t>g=zG<_<==c9=| =i=+n<;n9g9g:g<ѳ=>>F|>^t>V>.~G>g==<~=Z_(=˓S>,s>|M >w>eh>>>5 E=͝=3m!7>7*>0>=*=== :=c=>/>@j>rZ>66>r\>@Y=2=w<_(< >>B>=dB=_yN ?e>%>->f=?={ >=db=='Y<<= :=:*=ȃ=T= =:=x= ѳV>v>=_H=Y=~2=c<*<5= 5=T=?=9=5=yN==a=<t<ѳ<<t<ܫ=K=== %=_yN>, >,s>-'=:= =(^=(=5=TP=*><>)p>@~>8qD>ٛ===C= :=!:K=3m=| =Y=ܫ>= =n=Z_(<'Y9g9g;n<5Q= >q$>hg>>>z>,s=:==k=n>>0>t>>[>>d>L>=y-=t==n=>&>@Y>KS>8>=OW=;3m:D< f=p5>g>kv>~G> >ض>><>-[= ==>/>\><>J]?? >(o>Y>Uǟ><=d=嘮>+>->u[>> >>[db> ==<!:K>V>?ӝ?EC>>}>qp>=>7>V>>?3h?C?CH?3>>>-'>EA>f><>->y>>>5Q>X>>>L==m=VJ<=̘=?>0> >lK??>>H>q>'I> >ٛ>e>y?%`?C?O?N?BdB?f>o>i>3ټ>)d!>Rv>>{?F? ><>>{y>GM==%=:>{>'I>>j>? >}>>{m>#D>/>2b>Z>M?k?C?OwC?M?A_?V><>pI>;?>,s>Z>Z>k? TP?? I>i>m0>, =E"=J<==>>`~> >@>Σ>qD>">KR>c=E">\>951>>?3?B=?A_?1^>w>\(O>*>f>C(.>է>ҷ? v? ƚ?F>P>c>)p=?=:=/==:>>U>aS>Q>x>Dn>i;=t=y-=db>'>d>R>e?Ao?,>}>5>nq>.<>^>Q>GM>i*>> >>E>2>m…>-'=U=i\=R5Q==D=ʎ>g>>$̙>~'=G= {==t==d>>c9>nv>3>O6>>\>!:K==ȃ=n=5Q>%`>i>u>>6V>u[>*==w=0<\i<*=*=`~==~=n==5==u[=Q0=e=R=?>:*>-y >Dn>@>%>==d=K=%O6=p5= {>B>@Y>Q0>C>"#==<<:D;n<3m:*>>Y=?=:K I>i;>v>===]n=0='Y=22=qp===*==#D<9g9g9g9g9g:D;n<+n<t< fq>@>nq>y>a&>/=m=̙=t!=]n=qp=8== =07==C;?9g9g:;J<ѳ<==t=I@>TP>̙>>%`>|Z>-[=O==T==:>^>%>+4>&=;=c9g9g;g<<==3m=5=<5Q<(:g:D=h_>>{>g>T>s>Kb>~>V>{== =*>>->Q0>Z_(>F|>&=:D9g:<g<=c=,s=0=!{> >Xe>ƙ>̘>OW>>`~>/=T=x =:k><>=J>a&>l>Z>+n=;i9g:g;t!'>r\>5>;>>Gn>>H=07=J {=?/=>T>.<>UP>`>P*>"?=Y;?9g:C:D;J4\Y>>+>f>CY>f\>GM=s<>+>7*>'I>޵=x :g9g9g:g<<< >G>S)>=J>=51<:D;n ===Q0<;i:g9g9g9g:g9g9g9g9g:<t=| ===i}=p5<_( >N>a&>T?>']==f<;m:g:D;?;!;:D9g9g:g;=;D=E>>>-'=yN=x =<_=3m=>7>[>>>>h%>L=X= 5g>(>: >-[> ==J {==XT=ʎ>(>w>>>|>޵>7X=O=Q0k>+4>@Y>2ԁ>-'=U=]n=c=J {=>&Tq>ui>>>>@>2ԁ=d=I@L>.<>'I><==Kd>T?>|>d>f>Y<><== :<ѳ>>-'=~=i\=as>DU>U>C(.>=n=B<Q==+=T{> === :<=?=0 > =yN=ѳ=c޵>d> )==M=/<< f==*=Z_(=*=ʎ=a=:=?=&Tq;?9g9g:g;=C=:>-[>XT>^t>951=====h_=ʎ>>C>y>>x>g$>/=+=s=H=^t=T=m=>>']>==5< f::g<'Y<5Q=o>)d!>>>o>W>Y܊>===@>~'>W)>2b>">>…>-i>o>*=嘮===ʎ> )>>>nq>|M >g$>0=O=w<t< ==4={=魚>ba>>F>>>-'>>OW= =̘=>1F>+>?0?2r?2?>Э>u[> >T=?> O>?C>>>mP>I>\>"#=ȃ=^t=*=^=:k>+>x>~>>>>>Y<>^=嘮>>@Y>>0?2A?A?A_?2b7>,>>C(.>> I>!7>n>9>K>ޔ>a>r>V>k==t==d>{>_>M>Эy>p>>>P*>^=t=>4>w>0?1?@j?@~?1\>>s>L>ٛ>Y>(>{>2>D>>ޔ>,>qp>=Σ=D==Ϩ>=E">)d!>>>^>>qp>)p===>>~2>~??0_?0W?">ê>|>::k>d=>>d>Tq>>>>Cz>g$>=ʎ=*==n==>(>V>c9>P*>']>{=ȃ==>T>Dn>>9%>,C>,C>>`>>L>=嘮=n=…>.<> >^>>>)3>>= =5===Q0==Tq=>v>>d>=a=n=D=d=5=OW> TP>J>>>>y>@>(=ʎ=i;=k==[>1L>k^>">ui>C>O==1=<g<ѳ v_>5a>0>==?=C<_<==t=i>>)">!><=%=]n,==%== =y-=,=&Tq=,'I>S{>^t>HBT>q$= =R=?/=)d!=I@=R=~G=s=T=D=;n9g9g;dt<<(<5Q<<_.<>{>>>>a&>M==qp=]n=:*=Y=yn>d>==<=9g9g; >`~>>~G>;>]>Z>;?==t!=u[=^=>>1F>9>%O6=d=3m9g9g;t!<;D>o>>F(>>>>A==VJ<=a=y =>#D>AV>J>4 > d={:g9g:D;f>Z_(>>p>Q>U>,>)p=J=(=&Tq==>>3ټ>>>*i\>{=^t:g9g:g:D;m%>i>>>rJ>C(.= =T?<#D<=8=n=T>>> =~<9g9g9g:g;J<t-'>.<>3ټ>/=:=| <(:g;3mw>>=:=| =<;:C:g:g:g:g9g9g9g;3mM>C(.>UP>F>=J<=j1L>a&>u(o>gs>=̹>k==;!:D;<<;D<#D;:D9g9g9g9g;= ==>=:==C</B3>_yN>qp>cψ>9>g=i;=<;;i<;D~'>>>M+>?C>=+=_yN<5Q<#D;;t<<}<t<<=<:t9g9g9g<(=K==ʎ=n=^= ;J;;?<ѳ=XT=˓S> >'>*z=U=dt<ܫ<=<'Y;!;?;?<'Y+>{==c9{>8>2Q>/B3>:=ʎ=B<<(>N f>Y>51==x=,s='Y={=0>>L>E>>KB> >;==w= 5=5=h_=>{>!:K>->"?>=2=<R:tVJ<>t>S >66>==O=%`=g=>{>;?>q>l >>澑>zt>Z>,o=a=a=:*=s=>+4>_yN>rZ>^>-=_H=== =>n>>>(>Z>=n=t=>4>Pl*>6V>#?d?:>%>D>V>d=ʎ==*>B>Y>>W>x>Z>==c9=%O6=rܫ==/=m>U>d>է>;>P>=ȃ=M==>N f>ٛ>?i?ۅ>8>>\(O>=T=/=T>q$>h>>eh>>rZ>%=Ow==h_=qp=,==Ѳ> 5>V>gs>T?>(>T=/=ѳ=ѳ=E>2ԁ>?e>/>ߺ>>>ѳ>AV> I===>>T?>>>>f\>q$=͝=zG=_yN='Y=H=~2=#=嘮>> v_>B= =Ɉ=:K=,=T=s>d>\i>>>r>t>Xc>GM=Эy==b==~>%>\>u[>i*>;?>{y=='Y=ca>KR>g$>c >C(.>B=̘=a=V>+4>%> = {=R5Q<ѳ<;D:D;n<;D<=)d!=qp= =,=T={=h_=M+=1="?=R5Q=2>Q>-'>i;===J {<;J<(<= :===t4== {=&>%>>V==]n=c=g=c=?/=| ==t!= :T>9v>g$>s_H>\(O>+4===J {=)d!=VJ<=ѳ=51=%=ȃ==c;n9g9g;dt<+n%>m…>>1> >Q0>'=2=YY=C=,=51=>v>>{y=9=T<(9g9g;#D<2ԁ>|M >է>>)3>Y<>=̙=0=-y = =>>>s>V=<\i9g9g:g;;?;!<(< =;?;3m:D;g%>gs>>>z3>?C==k => =J=<(9g:C:g:D;g;J<;i;?{>0>T?>XT><=D<;n<'Y==| ==Эy=*=i\=%`:9g9g9g:t<g/>==Y<5Q:t:g:D;?*z=[= =e= =d>>-'===&Tq<;g:g9g:g:g:g:g:g9g9g9g:g<=R=YY=t!=L=gw>>i;=$== 5d>*>/B3>=07=x =d=Tq=R5Q=R<_=%O6==>B>M+>x>66>a&>(=a=C<=<ѳ=,=T=Ow> >>-'==D= ;J:D;;!<}=*i\=>-'>">=嘮==0<ܫ=(==:>.~G>vn>İ>>H>KS>==<=1=>{> >0>*>=̘=[db<t;?Y>>x==?=K<ܫ7>~>V>f>:*>P*>i;==-y =c=C=> >)p>>>3>İ=;=t!>=Ϩ>==XT=R)">h%>4>>p>7X>{==c=g= 5==yn>f>.<>'I>w=Ɉ=S:< >::k>XO>Y>?C>-'==!:K<=<<=?/=%=>d> )===R;;n:g;t!<v>>ٛ>> I==9<;D;g;?</<t=R5Q=n=@==5=3m>>O=!=51=zG=<_=g=*i\=dt=x =\i= ѳ<:g9g9g:g;;J;;#D:g9g9g9g9g;=c=51>>1F>>>+n>Y= f=R=,s==&Tq=rܫ=%`===a<:g9g9g:g;g;?;n:t:g9g9g9g9g:t v_>C(.>K>1>w==t!=c<_=(^==== E=,<:C9g:g:t:D:g9g9g9g9g:D<#D~'>0>3ټ>k=p==<t<=R=h_=5==?=_yN TP> ==^=-y I>>(=a=,*z>!{>-y >"#>=i\<:D:D;n==D= =2==ʎ=}<ѳ:g9g9g:g;n<}=(=_yN===[db= <>)p>2Q>%>=d!<:;g<= 5=o=嘮>V==Ϩ>=޵>L>%O6><==zG<'Y:D;<R==ѳ=ȃ= =db= =XT > ?e=07= %<~:D:g:t;?<ѳ=0==I=s=qp >{=ʎ=_yN</9g9g:g<t=p5==U== <_:D9g9g9g:g;n >T==1;9g9g:D<={==@=OW===;3m9g9g9g9g:D;?<ѳ=R='Y=t<5Q<(:g9g9g:g;J=N==yN=J]=0=<t:g9g9g:D{><>f==XT;i9g9g;3m>*z>>{=s=-y ;g9g;g<=rܫ=o=51==C=t4=OW=3m;t!9g:g;!= ѳ=x = %==p5< f:D9g9g;g;!<;D<;g:g9g9g9g:g^><> =J<=_yN;n9g:g>İ> =:=L;#D9g9g;J==:*= E=?==1;9g9g:g;mv>> )= ==g:g9g:D<ѳ=B==x=t!=;n9g9g:g:t;?<(;?:D9g9g;J=C==ӽ)=E==M+<R9g9g:Dq=G==3m;dt9g:D-'>GM>=Ow=]n;n9g;g<=m…==ʎ===-y ;9g:g;n*z>GM>ٛ>c==XT;9g:g<=VJ<==y-=U=5=,s;?9g9g;t!d>i;>{=OW=:D9g9g;?=R=w===rܫ<_;9g9g:g;t!;m;dt:g9g9g<=h_=s==?=ʎ=T<ѳ:g:g;i< f==*<*;i:g9g9g:g:g9g9g:g<t=VJ<===a<;#D9g9g:g;t!;:D9g9g9g9g9g9g9g9g9g:g;J<<<'Y;3m:g9g9g9g9g9g9g9g9g9g9g9g9g9g9g:g:D:g:g9g9g9g9g9g9g:C:C9g9g9g9g9g9g9g:g9g9g9g9g9g9g9g9g9g9g9g9g9g:C:g9g9g9g9g:g:g:D:D:g9g9g9g9g9g9g9g:g;g;g:g9g9g9g9g9g9g9g9g9g:C:D;t!;;;t!:g9g9g9g9g9g:D<'Yw>>q=ʎ=?/;t!9g;g=g= =51= f==='Y;?9g9g;nT>-'>> = f=C;9g:D<5Q={= = {=n=t=;9g9g;3m</<\i<;#D9g9g9g TP>w==*= ::9g9g<;D=+n==D==fg>q===c:9g:DV==y-=XT==3m;?:g:g:D;<=/=>>i;== <ѳ:g9g9g:g;m<t=t=8=R;?9g9g9g<=?/=̙=OW=Tq=C<;D:D:C:g;t!<=/=*>>v>=%=k*z>=yN={<'Y:D:t;t!;t<=><>'I>#^>/==;dt9g9g:D<= :==a=qpGM>k>=n=c;m;g;?>KR>t#4>l:>::k==p5<(:g:g;<=rܫ=X=ʎ=m=I@;?9g9g9g9g9g<'Y=T=> %>%>=嘮=p5q$>l>>>W>d===嘮=Ϩ>=d> %>-'=07= <;n;a>^2>">| >H>/={<:g:D;?/>@==h_']>EA>@Y>== :;g9g:g;dt<\i='Y==#===t;9g9g9g;t!===s=dB=ѳ=R;9g9g:g==<#D<'Y<t-'>=T=x>!:K>%>=ȃ=;!< >M>u[>qp>@j>=&>>>DU>/> = :F7>>@>{>>3ټ== ;?;{y>-'> ==ʎ=*;dt9g9g9g:g<=/>>C(.>Q0>@>&=Ɉ= :{>g$>q$>v>>W>Q0==+n<;D<(-'>q$>=:=k;?:C9g9g:gw>2ԁ>D-i>::k>&=E=;DYY>g>o>f>>C(.=~= :<'Y<w>>i;==_yN;?:C9g9g9g;dt=C=a>a>'I>"?>Y=n="?;J;t!<=/>'>p>.n>>a&>B=<;;<;D=*===m=5r=y = ;3m9g9g9g:C<(=x=>>=i=/>4 >/>O==;:g:g;#DV>{=:=p5(>(>'I>Y==;!:g:g:gw>)d!>->&=;=;D<;Dq$>m…>>o>a>=s D== E=c;n9g9g9g:D<=+> >F|>Q>>>-'=2<m<<=^t>>dt>>>,>>V==R5Q<>%>= =,%O6>P*>]'>N f>%==K~'>">]>!>s>zS>td>d=T/>&">3ټ>+-H>w=<t:D:g9g:g>@>S{>F|>&"=d=qp<(<ѳ=n>d>ui>Tq>j>>>gs> =qp<*<==>> 5>-y >%> =<:D:g9g9g;m=h_=yn>!{>3W>.~G>GM==R5Q<#D;=g=a>@>4>>|>g>3ټ=5Q=*>> TP=J<=]n<:g9g9g:gi;>=~=I< ;g9g;g=a>{>3>V>T?>,o==u[R> v_>>/= Z=c<(:D:g:g<=;D==/=?=UE<ѳ:D9g9g9g:g<ѳ=R=[>a>> =:k=;?;!<==>~'>]n>g>66>W)>-'==g<;dt;m===?>f=d== :;i:g9g9g:g<=>d>0>=̹>)p>*z=<<;D< f=]n=>Sx>7>>>>KS=d=]nx>!:K>=i=-'>;>I,>;>GM=ʎ=t<>qp>̙>>v>q$>i>== ѳ<_==:K>{>!{>/>'I> )=O6<:D:g9g9g;!=R>>.<>@j>8/>M==C<;DR>c9>>L>h>V>_> =T= =,=)d!=:K=>>)p>!:K>=<:D:g9g9g;3m=3m=T>~'>'I>%>d= {=)d!;?:D2ԁ>~>է>S >|M >1=J<=8<<==zG= {>%?>d> ?e=*=T?<'Y:g9g9g:g<t=Y=>>v>==i;, >N>N>+4==,>=%=T< {;?:D9g9g:D<=[db= =p5=</:g9g9g:g;i==s=Ow= =?=S:<:g:<+n=g=| =*>)p>M+>KR>'Y==| >^>Q= E=c;dt;3m v_>j>o>>g$> =n=0v>=2=OW=22<(:g9g9g9g;3m=&Tq=>w>>==}7*> >>>;q>;?==a=g<==t!= f> >7>w==h_ ?e>GM>-'=[= :<;3m;3m< f=n>->y>>>z3>2ԁ=~=]n=g<_= :=| = {>f>d> =0=T?<'Y:g9g9g9g:C<=x=>v>>q=yN=R<:K:D9g;n=T>^>KR>r\>td>P*>u= =Y>']>'I>=%=P*<ѳ;J;!<\i<̹=)d!=w==p5=<(:D9g9g:g<;D==m…=qp=)d!<:t9g:C<ѳ=x = E==5=;D<};g:D:g:D;<<}<ѳ I> )==t=<'Y;#D:g9g:t<=22=e=K=<(:g9g9g9g:g<= :==={=;t!9g:g;< f=]n=͝>GM>7*>7>ٛ=i=x <*<#D;;<==,s=x=^==C<:D9g9g9g9g9g;= :=a= E=Tq=Z_(+4>Q0>S)>1L>{==c<&">J {>M+>->Q== <<<5Q==w=i\==n=\i<:t:g9g9g:D<:K=^t=t==f<*;9g9g:C<ѳ=O6> I>%>(>-'=*=[db<Q=ӽ)=R=<'Y;?;;J>{=t=5=C<;i;;?w> TP=*==N f< f<\i*z>{=d=/=C=m=<5Q;J;D;n<;D=)d!=>{>'> TP=yN==0<>u> =n=d>q$>=?= :=(^ ?e=== )>>d==x <=嘮= %=g=T=/=x =޵>ٛ>!:K>d=ȃ=J {<<'Y;J<==0=>>0>9>$>{==[db<_ %>C(.>O>>6l> =a=c<ѳ I>C(.>n>qp>NR>V=Ow=d=C=="?=x =͝>d>M> I== :%>T?>`>H>==7X<5Q<=3m=dB>8>g$>x> >l>)d!=?=I=| =g$=g=Y>>>OW>L>6> =:*<;?;~'>@Y>M+>6><=Y=C=<=C=n>ٛ>gs>>j>g >#r=?=o=g=T==J<>q$>P*>a&>N>as=/<;?;<'Y<*=0=(=t>d>`>^=E==-y =g>7l >d>`>8/>=+===\i=_yN= =>s>@>S)>B>=51<_;n;t!;g'>-'>=ȃ===3m===*i\=a=07>L>)d!> 5>{=x<::g:g:;n;!<==(^=*i\=c>">Q=GM>(>!:K>/= E=YY%>51>'I=m={>Dn>Z>P*>%=a=zG<*< =;?*z>2>G=>::k>d=D= ѳ<<:K=0= f>'I>^2>t#4>f>6=!=x %>;>.<> )=?=(^<ܫ<=,s=ȃ>!7>W)>k^>]'>-y =a=J {<<<}==4=M+=<~=>GM>= ==4=R ѳ>1>D>7l >d=:K<<;i{y>-'>=OW='Y )> v_>%>=ʎ=_yN=g<i;>/>;?>'I> ==h_<<= >8>gs>r>V>M= E=1<5Q>ba>4>>t#4>7>/=:k=m=H=K==>V>%O6>d=51=;J;g;g>l{>-'>>:*>M+=m=g= = =D> I>]u>> >>>nq> =T=OW=D== >9>n>}RF>a&>q$=M<;n;?<*=qp=Ϩ>>%O6>~2>KB>̙>S >a&>d==3m=3m=y >k>Ȅ>>>}B>>>7l > I=~=ʎ=> >n> >>2b>\=2=t<(;!>fL>m>>:*>P*>/==I@=Q0=o>M>> {>>q>9%>>::k> ==*=:>, >>>>ݏ>w>İ=t!<\i<<t=-y == >)d!>\>l:>Sx>/==t!=-y =3m=R>+>a&>> {>ď_>5>i>"?==ȃ=/= f> %>oJ]>>O6>1>l>7=T<\i;?;J<===E> >> =0=R=,s<>^t>>+>_>%=2=/=:*=x =^=>7>td>+>u >>=G=I@;J:t:g;n<;Dd>-'>\=̘=t=M+=<*= ==>%O6>4\Y>*( > =n<:t:g9g:g:D;dt<<t<*<<t>>w==~G=zG=3m=>7*>A>.~G>c=s=dt= :<< f&>AV>N><~>a=ʎ=3m<<g=!=2=g9g9g:C;t!;J;!;:g9g9gR>)p>6%>)d!> )=<ܫ<g</Q=T==:C9g:g:D::g9g9g:===G> I>g==YY;?:g:D;{>d> ==='Yw>`>== :<>@>V>Jg>!7=t=zG<;:D:D;t!;i;?;t!:g9g9g:g;J=t!> =>6l>Jg>;?>d=s=g<<5Q=u[=>AV>y>>">UE>d= %=g;J;<B>Jg>_7>R>$̙=ʎ=?/=g=R==>w>[>Q>>Y>m6>8=Y= <'Y<(<= :=3m=-y =R<=;dt9g9g;?={>w>@>W>L>!:K=Ϩ>=a=c==> )>U>>E>>cψ>İ=<< =<'Y<_=22=WOw=P*=!:K<;?:g9g9g;3m==>q$>4>-7>(==n= :=,=a= >1F>gs>z3>m…>;=Z=Hw> I==?=XT=<==^> >-y >>OW>,2>=={==t=;J;3m:D:D;<'Y<=<4> =*=^=M+=<m<_<ܫ===O> >d>{=ȃ=| =$̙>Fy->O%>1L>V==4=c= =J {= Z> >>>cL>i>M+>f===0==c=n=Y=>=$=5=c;?:D: >nq>s>w>>I==R=0=K=>i;>\i>>~G>>|>g$>=_====?>%O6>T?>`>D>= G>>>L>Ѝ>E>$̙==t!=g=魚>@><>`n?[u?*z>ض>>P*>=[=yN=>*( >w>>,>W>_=t4=<(<#D=4=5= >XT>>,">>51>c>9v=E=?e=> >^t> ? Z.?.;>s>+4>(>{>s>XT>>s>P>><>/B3=<@>a>>~>n>>*=ȃ=:*==>\>??/1?-?>u>u[>.<>d>޵>GM>i>d!>Ӝ>G>>O6>Q=ȃ= <=,s= =_>-'>cL>w>>>P*>=5=t!==ʎ>6%>>?i;? >ܪ>>Y>%`>V=嘮> ?e>T?>f>X>ՆP>X>%`>I@==<*<=(^=}=y->d>4>C>.<>==\i=0=<~=>+>\(O>>>>>g$>!7==y-=n=ȃ>/>w>P|>7>>|M >!{=i\<5Q<;D;n0>WOw>Xc>6%>d==5=a=,s=^t=͝>$̙>Z>r>_7>-=E"=L<#D:D:g;g;?<}=g=4=Q0=3m=< >&>=5==<:D9g9g:g:D;3m;< >-'> ==L===]n=)d!==g= :=3m=*i\<̹;3m9g9g9g;g<#D<ѳ<ѳ<'Y;#D9g;=XT=嘮>*>T>^t>I@> v_=:=#=p5=?/=(^=C==i}=*=m=3m;#D9g:g;?<ѳ< {< {<ѳ;?:C9g<=x>x>Z>> >y>F|>=n=VJ<=4=B=,=*> >~'> ==g9g9g:g;i<as>gs>Q>>I>T?>-'=O6===3m=x=5>>)d!>=~=h_:g9g9g;dt<;D<t< D>L>y>޵>p>?/>=T>$̙>==h_:g9g:g;t!<<;D;?:g9g9g9g<ѳ= Z>-'>::k>F|>4>-'=_<ܫ;3m;t<=0==[> >V=/=R:g:g;t!;;3m9g9g9g;g<ܫ=t=܊=[=嘮==:D9g:g;?<=?/==2==4;?9g9g:D;g:D9g9g9g;<= :=?/=&Tqv>>-'> d== = x;!:g9g9g9g9g9g9g9g9g;dt\>d>V==>P*>dt>W>+-H=嘮=t!{>->@>0> ==s=g<==> )>UP>>>>g >&=Tq=;J;3m;!<t-'>C>Y<>L> v_==A<= :=Tq>>p>է>>>Q>-[=T=*^>@>WOw>KR> =:=a=R==#>>k5r>O>>>x>'I== <'Y;$̙>;?>0>=ȃ=h_=<=T>޵>Es>{>>>Pl*> )=Tg>~'>=yn==N f~'>?C>N>?C>-'=<<(;;i޵> ==4=;J;;;n;t<>===K=(<*^>>V==p5<_{>, >U>\;>@~>=:K=?/=c='Y=:*=9> v_>WOw>y>z3>Y>!:K=嘮==;D='Y=F==>O>> =̘=XT<;D;g:t)d!>">>Y>s>\>=t=]n==>+>{m>zS>@>˳>>z3>(=d=?=o=>>6%>j#>x>^t> =/Q>[>>Σ>ԁ>>>4=d= := E>d>`>9> ?(>??(>><>eW`> >{=p> I>;D>>>@>Tq>| >=| <<=zG= >v>>p>%>(O>M>>V>N=d=n=s>M> >I?*H?7?6?)d!>ԁ>4>>>~'> > v_>n>R>զ>9>>,>M=ʎ=0==d=:k>Q>Xc>>R>Ѳ>D>-'>@Y=嘮=̙=:k>s> >ђ ?+9?8P?7 ?)">֋>#>A>>>%>~>;>x> >/>f>nE"==rܫ=VJ<===>!7>|M >8>O6>x>gs>~'=OW=^=#=>Z_(>d? ?+M?*?;>>u(o>,s> =>>hg>M>c>}>ض>y>c ==w=C=(^=rܫ==>>N f>]n>DU>~'=@=/=g$=T=>/>,>>j>ԁ>,>E>7> I=T=?=a>.~G>:*><>>h>>5a=Ϩ>=3m<T=a==T=?/= :=!:K=f=y->k>\;>> >Z_(>#D=[= E==Q0=g=07>5 E>s>q>x>B>:*=O<;!:D;? > ====T=/<5Q<=<_==07>>(> >==c;g:g:g:t;;<<<*<< >)p>1F>"#> ?e=ʎ=Y=^t=;D=(^=<~=g$=%?==*i\<9g9g9g:g;i<ѳ<<<};9g9g>UE>>k>rZ>@Y> I= E=zG=XT=\i==?=:==J<=x ;9g9g;g<;D<==,=J>I>|>P|>l>m…>#r= {=qp=VJ<=x =>T>>']>&==*9g9g9g;G=>)3>>>C>y>*==DU=<~=u[=>w>-><~>-y > =g:g9g9g:g;i<<_<ܫ<;:g9g<;D=>.<>z3>է>C>>a>V=o=g==C=n>>&>2ԁ>'Y>=,:g9g9g:D<<< f<ѳ;9g9g;3m=3m>T>;>gs>td>\>*=07=0;t >> =%=t9g9g;w>u> ѳ=d=^t;n9g:D<<=p5=y =U=2=R5Q;?9g9g:t<=07=n=0<=;9g9g9g9g9g9g9g9g:D>@~>R>C(.>=y-=0i;>q$>-'=:=Q0<<==,= > >G~h>}>>|>V>^=d<5;:D;']>::k>+4>==c<=c=/>~'>dt>>>E>s_H>"#==</;<;D< f=g<_<;:C9g9g9g;?=p5=>'>;>.~G>=='Y<==t>-'>_yN>)3>u>>m…> 5==c~'>'I>>g=o='Y<<=`~=>>OW>p>">u >C>+=m<<< =<t<= =<̹> = =a= <>0>@>/B3> )=?<ܫT=J<=a= :<}<;Dٛ>?C>Dn>&Tq==}=<= ==>f>N f>l>k^>D>-'=n=\i=c= :==̹=d=> ><> )=:=p5B>kv>>>:*>C=:==C==>+4>u[>U>>>̙>l>=:=5===G>'I>WOw>g$>P*>=U= :<;?=c=u[=>@j>>>>>>']===51>>\i>s>??!>->>\i>~'===>)d!>w2>F>>|>k5r>w=<WOw>>Эy>א>u9>>@==̙=>M>w>?3?4J?4J?$ZO>΂\>g>2><>>2b>W)>F>ƙ>F>s>\9>@~=d=^t=1=x==07>B">>3>#>>>4= =:K=̹>2b>w>"?!?4?4?#eh>Ќ>>:X>d>V>GM>g >f>>;>)>R>]n===qp=/=̙=%>GM>k5r>է>>TP>\>==Y==>XT>Y>I?#?"p>8 >=>nq>%>g= > ?e>P*>L>G>z>1]>ݏ>Sx=Z==a=;D=x ==J<>>Ci}>T?>@~>=Ϩ>==x ==>!:K>@>>+>a><>">2ԁ>=@=D=ʎ>L>u[>ݏ>Gn>>@>*=5Q=L=<===̹===07== =*==n=C=R5Q=,=Ϩ>>%O6>dt>g>66>^2>%==d!=n=)d!=h_=5Q>%>_>w>h%>6%>g=Q>x>-'==={=<ѳ<;D<=w=_(>> v_>&>,==;n:D:g;#D;==yN==K<:g9g:g:g:D;3m;<===dt=<_< f<_==;D=[db=Q0=<\i:g9g9g9g9g9g:g:D;<'Yd>/B3>;?>']> =U=| =3m=*=!:K=J {=rܫ=R==*i\<'Y:g9g9g:g;3m<<<`>\>>o>v->@j> I=y =a=A=[db=x=/=*=Z=ʎ=_yN;9g9g:g;Dn>:*>>r>>p>#D=~h=_yN=K=| =>>&> >=͝<9g9g:g;S:>>O6>H>f>|M >+-H=ȃ=9=3m=T=ȃ>>)d!>2Q>#D=Z=Q09g9g9g:D;t<<_<ܫ<;?:g:g<=ҷ>;>g>rj>f>m>e>&=?f> >*>==J {:g9g9g:D >F7>p>x>`~>*= =;?g>>Q= E<5Q9g:g;!<<ܫ<<+n;;<<*==?>>&> )=ʎ=C;dt9g:g;i<_=a====*;dt9g:g;?<B>"#>İ=L=T!:K>Pl*>cL>V>'I=i=VJ<<;g9g:g;dt;m;t!:g9g9g9g;D= :==> >Q==-y ;>nq>>ui>Es>v>=x<_;:D;</>O>v>=ȃ=T?<<<=g$=!>7*>k5r>}RF>p>AV>/=<;!;<(<<t<<\i;t:D9g9g:D=g==>q===M+<ѳ<'Y`>F7>Xc>IG>=:=Ld>&>w=:=a>^==:*<>!7>951>6%>=yN=p5<<=%>]'>k5r>IG>== :<ܫ=C=U>>IG>aS>/>>P\>@==D=;D=?/=t!=*>>']>3ټ>%>=y = ѳ;J; ?e>g >g>>j>N>==XT=Y=>6%>I>f>/>魚>ê>D>5 E==n=t=/>{>7*>p>g>oJ]>1F=O=,~'>>O6>y>C>m…>GM= E=}=> >N>C>0?+?@>!>zS>^t>s==T=>%`>k^>C>zS>}>nq>B=:k=?/=R=^t=*z=>w>i>>q$>>`~>~'==}=a=[>N>>m??@>>>R>d>==dB=>']>Y>Y>>>q>)p=E=p5=8=Q0=| =?=07>0>k5r>z3>ga>1F>T=̙=rܫ= =̘>1F>>~>#>>1]>>IG><=ʎ==>a>k5r>>>>}RF>%=Эy=^t=0=c=;D=m== > >-> 5>{=_==a=p5=> >\> >>M>S >_7>=:=c=WOw= =L>22>v->>">KS>w=n=<ܫ>I@>i>f>C(.>=y-=p5=R<<==>)">@Y>2ԁ>s=d=VJ<&>!:K>==D=C=R<_==%O6=F=Z_(=;D>@~>k5r>td>Y<>(=T===3m= :=1=u[=5=OW=OW=ѳ=g:g9g9g9g:D;<+>s>>2b>q>Qqe>d===̹=(^=]n=?=>g>==R<g9g9g:D;<::k>>a>>ѳ>\>== :==a= =_H>'>~'>/=&>kv>[>>\>C(.>{=lJ<< f=1=:K= > >^==Tq<t9g9g9g:g;!<t<<ѳ;!;n<g.>UP>[#>@>O=o>*z=yN=^-'>q$>=*=:*=<;D:D9g9g9g:g9g9g9g9g9g;v>>)p>;?>->^==3m<:t9g:g:D:D:D:D:g9g9g9g;g<=a=#===C<ѳ;J<3m*z>'Y>6>+-H>Y==3m<=;g:D:D;dt;n;?;J;?;3m:C9g9g:g<;D=22=d=Tq=i;=3m> >B>w=i=<{=ӽ)=T<5Q<;D<<*=x =%>>/>S{>WOw>9v> )=<<< ===u[<;3m:g;<(<*= =>,s>@~>(=t4==<= 5=>>4 >x> >>H>IG>f=:*= ===)d!==5>>+n> >*z==-y d>IG>^t>IG>==C=g='Y=n>d>WOw>u>qD>>>t>!{=ʎ=e=22=_yN=Y>>@>XO>IG>/=9=T<5Q<;D<==?/=> I>?T>T?>AV>=ʎ=h_=c==x>^>_7>M>>L>3>w>'I==T=C=a=Ɉ>>Rv>nE">_7>-=Z==>+4> >=*=rܫ=t=c=n=>KR>?e>|>">w>Z>=T=XT==0=>d>@j>^t>R5Q>%=…=*z<*<{=T== %=p5=-y =c='Y= >k>]'>\>\>_7>&Tq==rܫ<`>.~G>'I> =n=8B>0>/B3>= =| <;;n;<==>,==˓S=| =>'I>/> v_>*z=?=h_=0>Y<>a&>H> %== = 5< ==f== E= Z=<:g9g:g:D;g;3m;g:D:g9g9g:D )>AV>k5r>o>T?> =O=qp=< f= :=T==%=+=D=c:D9g9g:g:g:D;t!;:t:g:g;<=rܫ=>.<>T?>Xc><~>w==c>8> 5> ==3m<;g;g<;D=R=m…===K<ѳ:g9g;3m<;D<ѳR=Z=~G=;3m9g:g;dt<==<~== =o=| <;?:g9g9g:g;3mi;>1L>>>*> =D->Z>e>M+> =Ow=*i\;J;<#D=*==G>> =嘮==;n:g;g;i<==x ==07=~=n=Q0/>;?>cL>l>S{>#D= =K<'Y< ={>>c=T=̙=c;i:D;dt;!<== ѳ=x ==:=ȃ=s=_yN=,s>P*>U>=J>=dB=c;?;J;!q>g==<;:t:D;<'Y<*=K=Y=̙=5==Z_(=*< f<;D;?<=>>']>*>B=a=k<:D:t;3m<=,s=#=ʎ=Ɉ=:K=0<;D:D:g9g:D;==%?=8<5Q<\i޵> >=*==R5Q<<ѳ<<=*i\=C=&Tqi;>~'>v>=*==1> =:==XTq>i;> =a=T<'Y9g9g9g >x>=yN=w;J9g9g:C=̘=i\=;D< =:C9g9g:g;<}= =Q0=w=p5=22> ==m= ::D9g9g:g;J=&Tq=^= Z==R=R;m:C9g9g:g;dt<'Y<5Q=)d!=UE=M+=*<5Q{=:=~G=c:D9g:gk=?=<:g9g:g<=c=T=D=O6=,=;dt9g9g:C;3m<(>k=:=n=R:D9g;t!<_=rܫ=n=dB=/=:*=g:D9g9g:C;n4> =!==:g9g:D<=[db===m=%?< :D9g9g;C< =<;:g9g9g>=*=? O> = =<:D9g9g9g:D<;D== 5v>> >q$>=Tq<:D9g9g:g;dt<t=(^=R5Q= 5=/=zG<:g9g9g:t<*=5>%?>ٛ>GM=m=^>=*=ѳ<*;:g9g9g:D<t=22=a=-y <ѳ:t9g9g9g9g;==n=魚==J<=<;;;?#>F|>Dn>!{=yN=6;!:g:C:g;J=t=:*=?==c;n:g9g9g9g;=(^=OW>> >Q=51=;n:D:t<;D=Z_(>>B>i>fL>>OW>=qp<:D:g:t >޵= {=M+;t:g:C<R=h_>>>>`=:>\i>3ټ>V=a;J:g:g;gL>2>.~G>2b=@= :;dt9g9g:g;?<ܫ=]n=T=]n>%>%> == :<'Y:D:g:g;<=u[=d=x =;!:g9g9g9g;===~>/=:=/<_;;?<<t=`~>>@Y>gs>g$>@Y> ?e=<ѳ;:g:D >> d=Ѳ=R5Q;!:t;dt<ѳ=>M>a&>E> >^2>=n>s>^==T<;D:g:g&>\i>0>}RF>W)>L=D<t;t!:;>=*=m…<'Y9g9g;=^t>T>2>T?>Q>.<=m=w<'Y:g:g;3m=ʎ=%`=N;t!9g9g>-'==?<ܫ:9g9g:g;g\> v_>!{> = E=7*>^t>^t>;>=%?<;?:D:D==:k= 5;3m:g;<==c>x>W>~2>|Z>Y>= D>޵=̘=XT;?9g9g<(==>2b>Sx>v>u[>T?> :=y < f;?;t!;!->O>N>.<>V=>=m=n=;dt9g9g:g;+>=a=x=<'Y:t9g9g:g~'>3ټ>7X>as=t=Z_(<t;n:g:g;J==p5=:*=u[=c<;D:D9g9g9g9g</=: =#=dB==a<;D9g9g:D<'Y=T?=T>->S:>T?>3>k=<;J;g;<=4===x=-y +>N>P*>0>=:*>+>,o>B=Ow=K<'Y:t:D;g{>k=yN=d=g<:D:g9g:D<;D<5Q=R<_>>*z= E= 5<;D;dt:g:D;<=(=%O6=x>İ>޵=2=<;3m:D:t;J<==<_(<'Y:t:C9g9g9g;n<==c<;dt9g9g9g9g;dt=&Tq=Y=>Q=d=,<;:D:g:D;=g===a=g<'Y:D:g9g9g9g:g;;i;:9g9g9g9g:g:g:g9g9g9g:g:g;3m<<ܫ=rܫ=n=== :{> =07=ѳ<>2b>T==K(>:>=n=(w>'I>%><=~h=h_> ===c >"?> 5>*z=?=VJ<<<<;D >V==c;:g:D;g;i >Q=̘===<\i;;J<====07>== E=N;t!:g:g:g:D;g<3m=g=J {=a=M+=<< =;3m:g:D;!g=T= Z=C<;:g:C:g;3m;;n;3m:g9g9g:D<=: =51=;=y-=qp<;?;;g;!==>+>-'> = {=Z_(T>>%?=dB=3m>>==A<5Q>"#>*>B===<`~;?;?-'>5>B">+=2=T=4>a&>gs>C>-'==_yN=<>'==*>HBT>V>?C>=O=,<>_>:*>#>gs>$J===22==3m=>>.<>@>*==XT;?:g;<<=?/=X>d>6l>C>->{=| <*<;D<;D=R=I>İ>d> >O>h%> = =:*=3m= 5=N f=>-'>C(.>Y>C>-'=<'Y:g;g;^>a> ==BQ>=J>i>i>>> O=~=YY=R< =t=>v>>6%>L>;D>d=t`>`>{=/=h_<'>!{>==h_;i9g9g9g:g:D;n<=N=0=!:KV=5=y-==22<<t<;;!<_=(^=cv>===zG=<<;D;?;?<=H= =w=;g9g:g:D:D:g9g:g=*==D="?<;D;m;:D;n<=VJ<=:*=T=c;9g9g9g9g9g9g;t= 5=:*=?=i;=6<;D:g9g9g9g;3m<ѳ=*=XT=?/<:9g9g9g9g:gT=07=Tq=&Tq>(>%`=Z=,<;:g9g:C:t;;?;t!:g9g9g:g%?==5=g>-[>@j>1L><=<;n:g:C;<'I>;>-7>=t^>ٛ>O=J<=T?<;D:D:g:D;i<(<*T=Ow==-y <_<(<(;<;D=M+=ȃ>>^>T=~=M+<t;?:D:D;J>.<>::k>#^=5== :%>R>Zv>?/>d=n=T?/>fL>u(o>Zv>s=:k=;D#>s>s>m0>;q>>>=y =_yN=: =^t= > )>/>@>)d!=:=B;J:t;i@>@j>|M >>qp>/B3=%=9<L>b>l>51>KB>`>GM=:==m==>.~G>k^>>i>'Y= Z<:;<== :=g=>.~G>i>w>_7>"?==<ѳ<ѳ=: =>T?>F>>C>v_>eW`>Q=E=t===>C(.>g>>>aS>C(.= =g;g;< = >.>@Y>*==u[1 Z>q>A>>:*>B"> ==w=M+=u[=Ow>22>u[>4>y>;=yN=;g:D;g<(<=9=~G== =J<==7>a&>d>?C><=T=g$=R<*=R=> O>@Y>WOw>Dn>=<:D:C:C:D;>{=E==3m{>-'>=Ow=^t<:g9g9g:g:g:D;n<;D<= I>>v>= ==x =(^(>, >4>%> =n=u[=t<ܫ-'>6>@>-7>w=dB=;D<<<< f=XT= Z==~=m…<(9g9g:D;m;?;t!:g9g9g<=R=>q$>'I>`=G=<<< =<'Y<=XT==ʎ=OW=u[<;D9g9g:g:;3m:D9g9g:D<ܫ=*=yN=d=a=D= ѳ:t:C:g;3m == E=(^'I>::k>+>4=t<_;9g9g9g:D;t!;g::g9g9g:g{=魚=t=g<;D;D;>@>V>F|>ٛ==;!:g9g:D;?=:=I=d>;>P*>A>GM=?= ;?:g:g;>*>q$==<;dt:D:t;t<ѳ<<g>=a==3m<_<</<#D<ܫ===>">x>=n=M+<ѳ;?;g;?<t=6===:*=,s~'>951>Dn>-[>T==(^/>::k>f\>nq>O%>&=%=a< < {= =t!=>޵>w==Tq= ;J;3m;>;D>u[>aS>l{>+=͝=VJ<=;?>>̙>>E>U>==| =YY=g=ʎ>>A>V>>> ==<;g;J<=H=̙>k>Q0> >>|>AV=_=\i< I>ga>>Σ>=>,>rJ>*=E"=i\===n>>@>66>>">=J=d=c;?;!>>z3>R>s>1F=͝=,s<>q!>>֬3>z>X>>/=[==Y=> >W)>>>>>Z>=Q0<;<}=R=UE=/>i;>@j>S{>=̹> )=:*<<}<=*i\=>R>>>>F>fL>=Ϩ>===f==>Dn>>>Q>Pl*>T=VJ<<;;<}<_=VJ<=:k=m> )=d=?=(^<~'>\i>aS>+>cL>%= =='Y<m=*=>>S)>nE">[#>%=̘=;:D:g;g< =<=*i\={=/=p5=!:Kg> v_> > ==dB=k=g^>q$>==:*<:D9g:g:D;g;<3m )>']>->k>g==T='Y=g->V>]'>DU>=~==%O6=Q>9>a&>j>Q>#D==h_=,=07=5Q=*z<3m9g9g:g;g<<;D;J:D9g9g:g==:>!{>G=>Pl*>::k>=OW=R<;D'>> I==C;:g:D;?<=L=/==?=;D;?9g9g:g;?<'Y;t:D9g9g9g:g<\i=0=d=:K=R= :;9g9g9g:g;L>, > ==:*< f;9g9g:g:g:g:g9g9g:g>5a>J>>OW>N=51=< =:g9g:g;#D;n;:t:g9g9g:g<ѳ=s==yN=ȃ=<;i;dt;<t=a> >0>C>7>== <g:D:g;3m;J<'Y<(;:t9g9g9g>!{>İ=?=<t;;3m;g;?> D=…=#= ;!;3m;g;<=6=:*=?=x=C<;C:D;<;Dk>!:K>+4>GM=E=qp=>/B3>XT>_7>@j>= E=)d!*z=?=o=)d!#D>\i>n>T?>t==,s<ܫ==T=…>1F>}>>>Q>M> =Y=M+='Y=^t=>>,2>@Y>+>V=d<;?;?5 E>v-> >o>/B3=:=: >Z>i>ê>ɩ>>w>'I=܊=d=k===yN>'I>gs>,>m?>*( =Ϩ>=3m<3m< =<=&Tq=T=+>'I>e>w>`>&Tq=n= 5<t<=w> >g$>>>Ϩ>>=>@>-[==t=rܫ=ѳ=>;>>O>P\>Es=yn=p5<}<'Y<==g=C=5>/>0 >C>/B3>*z==<ѳM+>m>[>Gn>&>b>&==v=3m=_yN=>*>rZ>>{m>=J=T=i=07==CB>\i>|>>b>&==| = x<< =R>/>;?>W)>Es>GM==(^;J;dt:D;n</ I>']>'I>d==f<;J;;?=c=>{>>w=a=^>*>0>q$>V==]n=R<5Q< f<_(=c=3m=;D=,;n9g9g9g:g;;!<;t;g9g9g;?=i>>3ټ>\>a>HBT> %==w=c<<_==u[=?= Z=^=:g9g9g:g;n<(<#D;i:D9g9g;?=zG> >@j>i>o>UE>#D=t=VJ<*>Pl*>W)>>OW>= <ܫ<#D<;D<t= 5===5Q=~=a;!9g9g;3m<;DGM> %> =~h=(^;t!:g:;?<=J {=Y=?=:*=;9g9g;t!Q>w>޵==M+<=;t!9g9g9g9g9g9g:D<ѳ=3m=R==qp< ;i:D:t;<=rܫ= >u>%O6>=[=(<_;?:g9g9g:C:g:C:g9g9g9g:D<ѳ=C=c=:K==< =:D;g;-'> >GM=5=<5Q;J:t:g:D;g;#D;;g:D:C9g:g<==T=s=| =c;t:g:g:t;<_=/=>+=[=*=22-'>-[>2ԁ>q$=:=p5<ѳ;;?<\i=g=| =51=*=U== :<:D:;!<t=t=d=07>ٛ>*i\>=yN=]n<>N>z3>|>f>-[==Q0<<%?>> ?e=Эy=,< f;n;dt<3m>1F>G=>3ټ> I=1L>{G>>U>d>UP>d=5=(^<==ѳ= >%><~>+4>/=2='Y<;n+4>@>.~G>=<_<;D<ѳ=<~=yN>>>f>A>>>]n>x= Z=: ===>:*>9v>V>Dn>~'=ʎ=Ld>>==w< <}<}=R= E>)d!>s>>>l>rJ>A>\=ѳ=c+n>F|>::k>'=U=3m<;;n<<t=c=| =OW=Ow=n=Y=K=R<;?>a&>cψ>C>= = : >f>u=T=t<_;;g:g;3m;i<===Q0=qp=_yN=A==<N>>=o=-y </:D:g:g>GM> )=T=^=!:K<L>Q0>4>w=2=<B>3ټ>9> =d=T<;J;t>==d<:t:g:g;3mR=:=5<_:D9g:C;g<;D= =rܫ===Q0<;:g:g:D;n2b>2ԁ>@Y>+n>=N<ѳ::;<t=Z_(==+=ȃ=5=3m=魚=5=;J:t<= ==>>1L>]u>i>Q> =%=;J;m;?<*==O>T=[=ȃ=T<*;dt:g;3m;!<= :=d=t>*z=[==(^R>@~>hg>rZ>Xc>%=i=-y <'Y;i;?<*==E"> )>=Ow=Y<;:D;g;i->Td>Z>@>=/=g;i;n;dtV==@=m >&>*>~'=d=a<:g:g:g;====y-=t=!:K;t:g:g9g:g;3m<<=t=C==̹=&Tq=( >w>T=U={=c<<<>GM>{y=ȃ=p5<ܫq> ==07=s={=O==&Tq;3m9g9g9g;dt<=a==d=XT<;3m9g9g9g:g;i;>M>O==| ;!9g9g9g;g= ѳ=x===d=t;i:g9g9g:D;?<=%`=p5===0İ> 5>=07=g<R9g9g9g;g==c=D=OW==&Tq;!:C9g:g:D;<ѳ= :=h_==T=?/<_<;D:t:C:g<#D=h_=><>-'>f=U=;D;g9g9g9g:gw>w==x<:g9g9g9g:D<'Y<d>=[=/=<'Y:D9g9g:Dw>%>']>d=s='Y<:D9g9g;3mw>%>%>d=U= 5;:g9g9g:D<'Y<_=>d=Z= %<*:D9g9g:g;3mO>i;=~=?=R;!:D9g:g;3m<;Dd>'=~=<;:g9g9g:D;J<ѳ<=n=H<=;g:g9g9g:D;D<#D<;D;J;dt:g9g9g:g;g;i;n:g9g9g:C;3m=qp >w===;:g:g:D;J=c=:*===*;!9g9g:;<'Y<=R5Q==yN=L=T=Kw><=嘮==;:g:g:D<;D=3m==ʎ==^t<;D9g9g:g:g;t!<=c===2=/= <:D9g9g;g<=h_=j=07=嘮==a<;g:C9g:g;!= := :=OW==VJ<===(^x>M> ==N f<'Y:D:g:D<= =T==rܫ<;?:C:g;n >>{=i\=c<-'>6%>;>s=?={> =07=<;?;3m:D;?==n>&>@Y>@j>!7=d=<;m;;?k=O=<*:g9g:D:D;v>>%O6>%>^=@=N f==D=;D=<g>$J>+4>GM=={<;3m:D;#D )>N>==%O6$>N>V>8/> ==g;i;m;i{>=yn=<*;!;:D;==>.~G>[db>`>@>= E=<(;?;ic>g==;g9g:D:D;?>A>Es>)d!>T=<;?;t!;t!<={=> = ==N;#D9g9g9g:g;d>-'==I=<g:D:g:g;J===̘=n=%?<5Q:9g9g9g9g:g;#D<(<ѳ<tV===XT>q$>'I>=yN=h_<;D:D:g:D<'Y=(=zG=a= =)d!=*=t= < v_>HBT>Rv>7X>=< f;n;g;dt<=a==Ow===g;:C:t;n,o>V>]'>A_>=>@j>F|>, >g=x<ѳ;::Di;>>==;:g:g9g;gQ>*z=魚=o==̹Y>>=~=;9g9g:g;dt>,2>4>!=yn=T<;D:g:g:g;==T==%`=qp=g;n:g:g:D;>7>@>)p>{=>%>+>=yN=XT;i:g:C9g;g<*=| =o==| =g;9g9g9g:g:D;nf=a=x<*:D9g9g9g:g*z>w>Q=OW= 5;g9g9g9g:g<;D= :=`~=h_=/ >-'>/=U=)d!;3m9g9g9g:g=嘮=<_:g9g9g9g:g;!< =C=T?=&Tq<:g9g9g9g9g:g;dt<'Y<==,>V=*=m<;g9g9g9g:g;g<(<;D</;?:D9g9g;t!<=0=]n=5<;dt9g9g:Dk>=͝=rܫ<}:g9g9g9g:D;;?;?;dt:g9g9g:t<}=='Y= *z>= f=}޵=m=ʎ=p5=g@==?= x;dt:g9g9g9g;t!<(=g<*z=07==;3m9g9g9g9g;<t=g=g<;9g9g:g9g:D;{> TP>+=d=T<:g9g9g:g;g;J ?e>@=̘=p5> Q>V=͝=w<t:D9g:g;g<<t<**z==s=XT<;D:g9g9g:g;==M<*:g9g9g:g;g;:D9g9g9g9g9g9g:g;n+>v>==ʎ= > >T=Эy=d=c;?:g9g;g<=c=-y = :<t;t!9g9g:g:g;J<*=<~=T==f=<#D;J;!;i<=R=| ==E==[=t=?=| =;!:D:g;3m<}== 5= :<;i:g9g9g9g;g{>=[=~=F{>>V>w=a=<_;#D9g:g;k>> %>=9=t=c;i:g:g;J=g=N f=h_=?/<_;J:g9g:g:g;?<==C=M+= :<=;i<<#D;J<'Y= ѳ=x = E=:> => ===g=< =::D;!v>> TP=yn=/=(^;!:g9g9g;3mf>k> >d=i=| >k> >d=O=/<;:g:g >w===p5<;?:D;gO>>T=~=;D<#D:g9g9g;i<_=(^=-y = <t;?:g9g9g:g;g;?d>>=OW=J {Q> ѳ>+=d=m<}:g9g9g9g:D;?<;DR>T==p5{> )>{= f=x <=:g9g9g:g;>~'>=07=N<:g9g9g:g;nv>>'> )=a=R<t:g9g9g9g:D;?{> =m=ȃ=m…<}:g9g:g;n<} >-'> = =>w>=d={{=…=/=C<#D:g9g:g;t<=g=c=< f )>B>O==/<_;9g9g:D;;:D9g9g9g:g;d>>~'=?=%?<;9g:g;3m;;:g9g9g9g:g;g>d>v>==J {<#D:g9g9g:D;;t!:g9g9g9g:g;g;i>&>=L=<;g9g9g;<v>>-y >A>4>'= E=;n9g:D<<'>>>S:>C(.>=J=;:g;dtv>>->@j>1 Z> =s<:D9g:<<(<ѳ;J:g9g9g:C:D;3m;!^>V>d=:=C;?:g9g:g; TP>>=0=/< f:D:g:g;J<=<ܫ&>,2>->> ?e==T?<'Y:g:D</==rܫ==C<t:9g9g:D;?<==3m==>\=~==R=1= :==c==%>d>.<>F7>EA>3W>L=O=<;t!;T?<t=\i=y ==:K=C>/>C(.>Dn>7>q$>T=i\= :<(;?<*=}=T=*=?=<_(;t!9g:g:D=U==N f====0==E> =>/>+4>->'I>x=?= %=c<;D<<=f=i\=dB=2=T<;:g:g9g;<*=XT===R=C<m< {<<=g=w=51=嘮>*z>^>'><=[=?=a< f<;?<}==b==g=P*GM>']>ٛ=J]=,GM>G=>\i>Jg>`=(>^t>s>_7>&=<_:D:C;<=R=<*;J:g9g9g:C:t;< v_>Pl*>cL>N>=~G<=:g:g;g<=k>']>2ԁ>!7=d=g$;?:g9g:g<*z==5<;dt9g9g9g;t!>=Z=~=VJ<<\i:g:g;g<==;D=>+==5=| =F= =,=UE=>> >5 E>7X>%> I=~=)d!;J:D;?=,=x ==s=`~<=:g9g9g:D TP>>GM>g==g=Q0=*=&Tq===J>%>Td>t>s>T?>)">V=<;?V=d=t! >`>>=~==P*=*i\=L=~G>>>>u[> >>s>@>s=ʎ=K<=<=x =yN>>k><== 5;:g;dt;J >k=i=D=w=J {=(^=e=?>R>;>td>>4>r\>Es>==p5< {<_=T=>~'>!{>=E=p5"#>R5Q>k^>k5r>W>3ټ>d=ȃ=XT<޵>d>==t! ?e> >1L>4\Y>+>~'=*== :<t4> >V=E= %=B<*T>=07=t=<(;t!:;3m<'Y==R5Q=^t=i;>>"=ʎ=,s;t!9g9g;m<tx>AV>T?>?C> TP=<'Y9g9g:D(>[>n>V>=5!{>P*>_7>Es>^=<9g9g:t =>'I>/B3>= =?/;n:g9g:g<<<_<{= =^<;3m:C9g:g;n<V>>>=̘=t!<t::D;> > 5><=E==T=0=(^==yN>B>>OW>Xc>WOw>;>B=Ѳ=]n<ѳ;?>;?>;>#r=2===;D=Q0=> I>AV>| >>>u[>@Y>^=/=0<=,=~'=ܫ>M>&">=j= ;:D;DM>3ټ>6>==/=g=A=h_=U>>`=:>>g>>>\>!:K= =T=g=1=*>d>951>L>3>%?={>~'>>=*=D=x =3m=u[=>-'>]'>>|>>ѳ>`=:>%=07===C= >d>::k>N f>9v> TP==;i;dt;>;>v->=> >u(o>IG>İ=5Q=qp= =&Tq=*=G>>-y >q$=m=n= :;J:D:g;-'>7>Pl*>Q0>@> v_= =='Y<<=VJ<==:>==͝=Y= :;J:g9g:C;<ѳ >~'>>=*==Q0/><===: <>ٛ>$̙>-'=5Q=L<<'Y;J<(<=VJ<=t=5=s< {;3m9g9g9g9g:D;<;D<<*=g=g=g=g==qp=n> >%>/B3>%`=9=R5Q<};J;n;i>$̙>=+=0<;dt:D;3m<'Y=*===TT=a=d< f;:g9g9g:D<;D= :=J {= ;9g9g:g;g;m;!;!;;3m;g;?=x ٛ>&>-'=dB= ѳ:D9g;<<_<*c>1L>@~>%O6=yN=-y ;g9g:C;w>,2>2ԁ>M=*=%O6;9g9g:g;<>s==:K > )=~=?=VJ<<ѳ::g;3m<ѳ= :=Q0=?/<;?9g9g9g:g<<=Q0=~h>>(>)d!>=== =0=!:K==>~'>;?>W>Xc>7l >=ȃ=VJ<#D>C(.>HBT>/> )=̘==B=K= Z> >AV>|M >>>y>@~>=2=;D<===>8>*>B=5Q==̹<#D;3m;as>>OW>B">,s> =+==C=\i=>B>`=:>O>O6>̙>>_7> ==| ==C=>>>OW>Q>;> ==;i;n;m<=22==>~'>\9>w====;D=_yN=>-'>]n>>Z>>>a&>!7=O=T==VJ<=>-'>>>Q>>>d=?=;D<'Y;3m:g;?<=DU=N=OW=@=Y==d=dt=(^=h_=>޵>;?>u[>>Q>u[>Dn>d=?=R5Q=R=3m=y >V> >.<> v_>==4< =:g9g:g;J>4>N>P*>;>GM=== <=R=zG==[>/==̘==;?9g9g:g;t!;J<'Y<< =/>-'>-'>/=E=^=^>>/=n=N f >%>.<>==h_<*i;>2Q>@>(=yn=t!>(>6%> v_==^t>>{==<:D:g:g;3m<=h_=i;=f<ѳ:g9g9g:g;g;;J<(;i;t!:D:D;J<_=Z_(=/===,s<=;t!9g9g9g9g:D==&Tq;J9g9g;g< =<;?:g9g9g:D;n</<>>޵=n==R5Q=g%`>22>2Q>=d==<;D;dt;>+4>0>=!=D=====O>%O6>Y>z3>{G>Y<>$̙==*z=R>d>= Z=t;!:t:;m<(=3m=> =>%>+4>M==U==*i\=+n=̙>q>>>w>8>>}>B">^==1<= =/=>8>,2>==/<;;g:t< =<_=w=ʎ>> >=E==*z=/=;D=>>: >u >>>{G>C(.>w==-y < f='Y=o= > 5>-7>f==s=;?:D:g:< =<=C=d=n=o==x=a="?=M+=?=07>q$>Pl*>nq>q!>W)>']==| = =<=t= %=>w><> =5Q== ;:g9g9g:g;<<< =c=(^=(^=c=g=1=O=n>T>M>.<>0>8==?=<<<=w= E=O==%=n=rܫ< f:9g9g9g:g:D;dt;<#D+=07=Y=*i\-'>> )=n=C<<'Y;?;iV>/>'I>=̘=Q0<B> >==A<;t;dt;g;!=+n==̘=o= :;9g9g9g;3m;!=t=~'= {>V=T=5=!:K{>=t=~G=R=,s<<=J {= Z=>>;?>;?>q$=~=5=<:;t!{=嘮=J==R5Q<<=rܫ=>^>::k>Y<>\>@~>==0<=;?<>3ټ>UE>Xc>>OW>=n=*<=<'Y<=rܫ=_=5>T=a==C<ѳ:t:g:g:D;3m;!<=8=rܫ=T={=a=*i\=g=t={==Z>>.>1F>k=!=<*>޵===*<;D;<d>^=?=o=%O6;t:D:g:<t=?/=R=~'=| ='Y<;t!9g9g9g:D; > I=嘮=?=c;m;g;3m<=(=| =?==:*=;D<;:g9g9g:g:g;dt<>{=y-=a<}:g9g9g:g;m<=g<_ )>{=ʎ=| <;3m9g9g:D;!<_=)d!=(^<5Q;?:g9g9g9g9g:D<<=)d!=22=c<t;!;dt:g9g9g;t=R5Q=OW===/=zG^>=:=,<:t9g9g:g<2b>']>%`=2=D=;?9g9g;3m<=C=/=T=<;D:D:C9g9g9g:g<==u[=:K=#=zG<<'Y;n:D:g;dt==~h>>%>>Q=y =*i\<;D:D:g;?<_=u[=i\=n=rܫ >4=n=%`=)d!w> ==yN=^=;9g9g:D<;D< =(^=<t;n:g:g9g9g9g:D>(>!{>==3m>(>"#>=X=K<=;3m:D;!=R====͝== :;!:D:g9g9g:g;<==(^=T===a< <(:t:g9g:g> ==s=3m<;m;g;!<_=w==n==*<#D:D9g9g9g:g:g;R= =ʎ=qp>i;><==aQ><>=yN=x<:D9g9g:g;t!< >> )== <:C9g:g;-'>><==̙<:D9g9g:g;g<;D<>~'>d=O=/ >d>{y=J<={>L>=p=< f:g9g9g;3m I>> ==^V===,s;?9g9g:g;?<<ܫ==g> >=ȃ=_yNV==:k=K{=[=j=h_>>==a=<;D:g9g:g:D:g9g9g9g9g:t> v_>&===<:g9g:D;g;#D:g9g9g:C;t!{>O> )=d=f<ѳ;t!9g9g:D;;:g9g9g9g:g;t!<<=<<5Q<<;D;g:C:g;dt<=zG=j=i=̘==g;?:g9g9g:g;;dt:D:g9g9g9g9g9g:g;dt;J<<'Y<'Y;J;#D:g9g9g:D>V=!=:=5=;D<;3m9g:g<< =(^=޵===f<;t!9g9g9g:g:D:g:g9g9g;==x =M==k=<;n:g;?=>,>%>;>1F>-'==;D>T?>nq>dt>5 E==x <;3m;3m<;D+n>e>Y>ui>C(.>g=u[<;;/>Sx>m…>`~>.~G==8<:D;{>']>: >-[> =̙<*;#D:g:g;i<=<<;D;g:g9g9g9g9g:g;dt;! =2==J {<\i:D9g9g:D;J >~'>a>^=:=D=c;:g:g;J>f=a==L=c<_=g=qp=ʎ>>)d!>@~>@Y>+4>-'=~=| <:t:D<'Y='Y=i;=== ;m9g9g:C;<;D=(^==>w> =p=X=| =K=+n=DU==[> >DU>]n>Z>C>%>+=y =;!; ?e>v>=:=51==x =XT=v=D>V>%>I@>Z>W>F|>+-H> =Y=?/<<<=d=E=O=Ow==R;dt9g:C:g;J===Σ==07=̘=?= =p5=M+=t!==Z>B>1 Z>@Y>>>22>q$>+= E=3m<ѳd>GM>&>x>v>=E=R=gO>>=~=<;3m9g9g:D< =%>]n>v->k^>;?==qp > =d=51=rܫ=g<ѳ=L> >Zv><>%`><>r\>k=>^>Q=={=g<=>`>qp>;>">5>g>)d!=,==y =B-'>c >E>> >s>`=:*7>nq>;q>u(o>>=T=0;m:D; ѳ>+4>;>+4> Q=?<5Q;3m:g:g;?%?=p= =\i<=:D9g9g:D<\i<m= := v>>L>)d!>'I>`>{= =N;:D< ====*=x=C<\i:g9g9g:C;<=m=~>-'>"?> 5><=5Q==K==C=>v>>0>Xc>r\>rZ>UE>,2>{=<;<=]n==T=2=0=a;J9g9g:D<'YV>%>>>>OW>$J>==x =Q0= =i>%>b>>>I>>>Zv>!==a>#D>0>=T='Y;C:C:t<'Y<_=>%?>'I>@j>C(.>*( >v>=U=s=T=I=>6%>">Y>j>%>>x>;?>v>=:K= 5=3m=T>GM>F|>[>C(.>d=<=:D;3m< =<===_H>M>.~G>0>k>,=ȃ=?=ѳ= >{>3>,>̙>qD>>>z3>A>d==K=WOw=Ɉ> %>M+>`>KR>İ=~=g;t!;3m;k>>>v>=a==/=R=n=T> >_7>d>;>u>>fL>2ԁ> D==B=J {=2> O>.~G>A>.<> )==;:D:g< ====ʎ=9=a==:K=R=u[=R5Q=g=ȃ>v>>*>T?>h%>g$>Xc>;>==== :={=ʎ>/>> =J<=%?<_;t!:C9g:gg>> >$̙>k>^= =5=3m<>ٛ> I==;D<ѳ;!;?;!<_=a===p5<;J:g9g9g:g:D;g;?;t;J<;D<=<t<<5Q==| =Ɉ> >!{>'I>=:=J {<'Y;t!;3m;?<=f=:K=~G==(;?:g9g9g9g:C:D;3m;;?<;D<ѳx>&> =̹=*;n:g:g:t=i==qp<t:D9g9g9g:D<#D<m='Y<;!:g9g9g9g:D;n<<'Y;J;n;<<< ==0= :<;:C9g9g9g9g:g;g:D9g9g9g:g:D;;:D:g:g:C:g;g;;;;dt:g9g9g9g9g:g:C9g9g9g9g9g9g:g:C:g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g:g:D:D:D:g9g9g9g9g:g;;;?;g:g9g9g9g:<<<<>.~G>%O6>{=t<5Q:g9g;n<<<_<ѳ;?:g9g:g;?= =/=>>{y=Z=~=T=*< f=-y =T>@Y>}>>I>Of>%?=a;J:g;n<*=<~=a=I@=g<:g9g:g;3m<}=DU=~h>Y> v_>!7>-'=…==a='Y=:K>!7>\>>>d!>>+n=?<ѳ;n<==,s=T=x=zG= :<'Y:g9g:< =<=Z_(=Ѳ>-'>(^>*>M=2= =a=;D=>::k>>L>¥>>7>>=<;!>ٛ>>d=t=c= 5==dB>0 >>Cz>>2>>+=~'>^t>.n>C>>\> )=XT;?;g<(<_=;D=a=R5Q= "?>M+>\>J> %=j=R;:g:D<'Y==?/=M+=)d!d>B> =d=x <:t:g9g;t! >~'>7> =O=:*<:D:D-'>%>$̙>-'=07=/=g=F=u[=n> =>+4>Pl*>eW`>`>DU> =:=T<ѳ;J<_==Ϩ>= =yn= {=[db;J9g9g:g>C(.>a&>g >N>!:K==n===2>1F>q>>n>]>(>a&>%=a=k<=WOw=%>2b>4>AV>)d!=…=: ;n:g;<t=B=E>%>`=:>>>v>B">w===U>~'>^>f>{>>>}B>>>T?><=U={=?>{y>C(.>{m>o>w>4 =5Q=g;;?$̙>a>H>>Q>K>=d=o=T>q$>y>>G?? Z.>ٻ>I>qp>*=5==>>i>u>`-> >g$>d=<t>DU>p>{m>dt>22>=:=2=yN>>ui>>>? #?>=>#>u[>0==2=̘> 5>m…>g>̙>V>nq>&=~G=g&>51>@>->-'=p=dB=Tq= f>">P*>ٛ>>> >&>d>bM>%=:=:K= E>w>KS>|>8>I>N>c=?<_;!:D{>R=[=*==x===> v_>c >CY>>|>>m…>;D>^=n=T==Ϩ>>>@>T?>Dn>q$=嘮=/>AV>WOw>W>H>.<>^=:=Y=K=I@=g=T=t4> >q=a==R5Q<}:g9g:D</ =>-'>>=Z=?=:*=N f=(^==(^=J {=w=x=:K=%`=g=*i\2b>B> = f= =0==*=,s=C=k== =f=<>8/>A>-y >=?=*i\<=g=c=a=?==?=t=0<ѳ;?:D:C9g9g:g; >;?>eW`>p>XO>!7=ȃ= 5=qpB>M>{>E>nq>/=Ow=v>>i;>,=s<:g9g9g9g:D;?w>@Y>qp> >dR%>&Tq=y-<5Q;;m@>d>{=5>;?>Jg>0 >=>&>GM=a=fv>> )===a=R5Q= :=R5Q=5>>OW>zG>Q> >@Y=yN=:g9g;dt<*=K=zG=h_=*<ѳ:D9g:g;n<=B=>d>']>*>M>=n==a= Z>"#>\>>>Y>@>=w;:g>5>9>%> =@===t!=d>=̹>>c>Э>qD>H>,s==<#D;dt<t=A=^=^==Q0<t:D9g9g:g;J<ѳ=g=Z_(=ȃ>-'>+>-y >`==n=R5Q=;D= f>7*> >M>v>o>> 5=g<;dt<==%O6=T=a==?/<;g9g9g:g;t<=<_=8==魚>Y>w=G=X=CV>c >>Q>TP>W)>*z=Q0;i:;!<=C=w=rܫ=-y <;i:g9g9g:g;t!<'Y<=(=XT=t=51== :=(^<'Y:D;#D=22=9>%>P*>]n>HBT>L=/=g;:D:t<;D=R=L=a=F=">~'> ==_yN\>>>q$>'=L=< ;;3m<=J {=%`= E=o={V>->L>Py>;D>=*==T=t=a>B>A>l>޵>>`=:>0>=?=c<t= 5=y =>-'>x>=, >kv>Z><>aS>UE>=a==ȃ>>LW?>>>>>>Y>;>==g$=:K>g>1L>`>q!>WOw>=<5Q;i;?<=m= >Dn>>k>">>\>3ټ>=dB=嘮>)">Y>>W??s>>>td>*=yn=?=a>%>q>>>V>l:>-'=x<_(<ѳ==m=>@>H>7>>>>>OW>R=ʎ= >2Q>1>?"??1?.Q?H>>>D>^=yN>g>@j>TP>,>(.>f>m>;?==YY<*<=M+=̘>!{>k^>>>m>i>*=m=Ɉ=t4>.<>m>֬3??.?*y>m>>d>J>=yN>k>C(.>8>>s>U>S >C(.=G=*>\>oJ]>\i>/>w=yN==> %>t#4>2>?>> >̙>|Z>6%>+=U=$>*>u[>>i\>> >.<==h_<:t<==~'=>^>GM>d=~=̘=n=t=>>4>f>I>51>>f>g>N f>=d=5=>>6%>i>|M >n>@j>"= = :;?9g:g<==[db=x=t=R=qp=a=C=3m=| =ʎ> )>2ԁ>a&>w>u[>`~>@Y>a=t=:K=x =%?==t4>~'>#r>> =ҷ=<*:D9g9g:g;t!<'Y{>GM>&Tq>'I>>=Ϩ>==rܫ=Z_(=_yN=}== Z=n==D=:K=^t >Y>T=ʎ=x=a=Q0=]n=f=a=c9=u[=,=ѳ===w=&Tq<:D9g9g9g9g:C:D;;3m;g;dt:D:<=]n=ȃ>v>>>GM> =E==a=Q0=h_={=~2=T==R=g=h_=)d!k>7l >>OW>)p> ?e=/=rܫ=K=_yN={=d=n=/==t=XT=g<};i:t9g9g:C;#Dd>@>g$>r>\>*( =t=w=-y =3m=^t=:K=:=d=!=+=T(>k5r>>է>U>R=> =T= =R=: =y =>GM> 5>d=/<;dt:g9g9g9g:g;?<==3m=I@=N f=?/= 5==C=s>Q>8/>>*>>>hg>-'= >->@>-== ::D9g9g9g9g;g,2>y>>eh>XD>a&><=k{>-y >C>2Q>{=!:K:D9g9g9g;3m >F7>66>>y=Z>6==c;?;dt<;D==/>w>!:K>:=<:g9g9g:D;!&Tq>::k>&=={<t:g9g:D;J==Y==:K= :D9g9g:D;?<'Y==x<_(:D9g:DV>M+>a&>KR>=RGM>>d====a=a><>V>ѳ>C>>P*==:g9g;g<5=a===;D>, >.>>,=T=R=f=X> >u[>KB>M>8>n>g=3m;g:g;J==t!===C<;3m9g9g:C;i<<_=3m=>^>'I>)p>~'=:=5=J {=(^= E> v_>nq>W>?>~'>^2==C;?:g;i<>(=O=y =3m<<=R><>HBT>x>E>oJ]>-=Ϩ>=t;J:D;=<= :=XT=a=: <N>3W>?C>'I>Q=/<*;J:D:D;!< f=+n=UE=J {=T=a=s=!:K<ѳ;?:t:D;<ѳ==J {=J {=<\i:g9g9g9g:g;gf>R=07= =x=N f=g==,==> >>-'>*z==<_;?;3m<=c=u[=x=x=VJ<<;3m:g9g9g<=,=D>{>3ټ>W>_7>KR> 5=!= =x ==E>>:{>dR%>Y>|M >Y܊>'I==?=+nd>-'= =n=(;J:D:t<_=h_=t>1 Z>u(o>>b>t>gs>%==~G=n>">IG>Z><>ȤJ>n>> >;?>{y=?==O6>{>2Q>cL>u >^2>!7=ȃ=(^{>L>j>̙><> >` >Es> =@=>'I>|M >>>?? #>M>Cz>u[>.~G>=ȃ=07>'>t>|>>f>u >L=/=(^<5Q==:*=G>D>j>^>>>>M+>w=%=[>3ټ>m>ҷ?1?/1?, ?$>">ѳ>KR>O=*>v>>C(.>8>c>X>a>>C==*z= ѳ >q>C>r>V>z>6%>R=͝=!>0>>Σ?3?,"/?(>>>>LW?>d=> >EA>(>Ê>@>>~>L>R= %=R)p>cL>y>j>?C>=07==>L>r\>]>&?>n>Эy>>{m>1F=m=y-=O>->x>L>>eh> >3ټ=t4=g<:D;<=M+=> )>`>>===D=ȃ>>951>@>,>>d>%`>66>Dn>w=n==~> I>;?>k^>0>s_H>C>==&Tq;?9g9g:D<=g=e==R=T=w=Z_(=R5Q=i;=>(>2ԁ>_>u >s>\>4\Y>=ȃ==p5=ѳ=>\>&>%>*> =Ow=<:g9g9g:;Jf>GM>&Tq>'I>>{=dB=g=K=J {=qp===n==˓S=OW==J {<}:g9g9g9g:g:D;g;n;n;t!;dt<'Y= :==%>{>i;>-'>k=͝=x=R5Q=9=Q0=i=| =R=d=s===a= <'Y:g9g9g9g:D;;;J;n;3m:g:<=p5=d>d> >!:K>=嘮==`~=J {=a=T=:*=d===:*=h_=t'I>C(.>IG>3ټ>i;=ȃ=| =L=`~==5=51==n=I=_yNa>L>u(o>~2>h%>3ټ==g=;D=?/=rܫ==>>4=L=<;:D:g9g9g:C;<=*=M+=_yN=[db=8= 0>w>b>f>>^t>O=d=*==R5Q=/> >'I>1F> v_= =;g9g9g9g:C;?{>AV>>>Gn>{>w>M=%`=GM>Fy->\(O>H>i;=e;3m9g9g9g9g;g6f>U>9>>>u >~'=<<==O6>x>J>ba>Q0>=zG;t!9g9g9g;<ѳ== :=*==< f<5Q=3m=/>-'>^t>>rj>Q>L==J {']>@>.~G==:D9g9g;d>AV>WOw>@>d=:K=;:g:t<;D=XT===yN=x ;i9g9g:C;<;D<<=>>==>@~>S:>9v>=^t<9g9g;i<ܫ=,s=,s=gw>i;>V=ʎ=^=R5Q=(^=w= >+>a&>u[>Z>a=a<:g9g:g<+n==?/=B=c<(;3m9g9g;<<<=| =9>^>O= ==k=c=g=t!=Z>->\>m…>Py>-'=5<_;t!9g:g<<_=0=C='YGM>9v>@j>'I=[=}<5Q;?:g:g;? )>w=Z==!:K 5>@j>I@>2ԁ>=̘==(^=,s=d!=i>>5a>P*>N>.<> =Ɉ=| =R<<=)d!=?=E==/=qp>\>>[>>Q0>7=Ϩ>==~'=_H>)p>e>>>>>]n>!{=:=8=R5Q=n= {>s>>OW>N f>::k>=n=<=2Q>{G> >>+>z3>0===>-'>W>a>8>Bu>&>>>\(O>q$= ==>w>M\z>E>E>>S)>=/=<*=c=T=>,s>x>>)T>}>>951>%?=OW=d> 5>td>>]??%?>N1>R>{>4>==>#r>r\>>-H>Z>@>*=T=a=>Q0>>>>cL>']=2=U=_(>k>q>>z>>^>)>>?>z3>1==dB= >'I>u(o>f>>)T>>/=={<d>@j>Z>P*>+>===:>'>P*>>qD>>w>mP>1>Z_(>İ=ʎ==͝>GM>UP>><>t>`>f=:=M+<:t;q>=ܫ=*==D=n>>%>^t>>>+>>]n> =E=:*=t!=Y=~>"#>IG>[#>N f>%=m=<*;=9g9g9g:g<;D==]n=zG=zG=rܫ=Z_(=^t==Ѳ>f>8><~>Pl*>O%>::k>~'=J<=,=%O6=(^=~2=OW=J]> I>'> =魚= E=I@<9g9g:g;g >>-'>*z=̘== :<5Q= ѳ=M+==n==/==/=k<;9g9g9g:g;dt;?;?;;g;t!*z>/===YY=R%?>~'>B>v>= f=/='Y=R==I@=rܫ=,= ==qp=,s<;?:D9g9g9g9g:&>1F>7l >%O6>/==Q0==!:K=R5Q=R=Tq= E=2=x=/ >9v>^t>gs>Q0> =Ow=h_=N==?/== f=>=_(=<t:g9g9g9g;dt<=N=DU=WOw=DU= :q$>`>?e>>">C(.==| = < =(^=5>V>!:K>,2>`=ǟ=:D9g9g;+>{m>>̙>N>]n> ==< f==Tq>-'>@j>UP>@j>=dt;n9g9g:D!7>vn>>̙>XD>[>=x <*>D>\>KR>={;?9g9g;t!<=g==c<m<*z>Jg>E>8>~2>4==<~%>>OW>,2=G=+n;#D9g9g;<}>2Q>Es>.<>޵==;:g:g;!=XT=:>T==<#D:g9g:g;<;D{> =嘮==;i:g9g9g:g;i<<<<;D;g9g9g:g;<(> =07== :-'>a>=n=T=T> > =5==qp<%>L>W)>AV>B=E===*=>>#D>P*>o >pO>NR> v_==5=: <5Q O==51=K I>@>m…>{m>k^>;?>v>=:k=p5=| =yN> 5>Y܊>)3>q$>|>c>d>']=T=%`=R5Q=_yN=?>d>;?>P*>@>~'=y-=: >;>k^>~>p>@j>d=*==:K=>22>xyn>>>qD>O6>I>A> ====:>+-H>`>y>k5r>5 E= =<<t<= ѳ=T=Ϩ>>>Dn>\(O>P*>*> )=d== >T>1L>u[>C><>d>>">>OW>/=^=| =O6=>.~G>d>{m>m…>9v>+=t=<w>>>=E"=n=I==!> 5>V>k>:> >Z>[#>=Ɉ=qp=R5Q==:>s>D>WOw>HBT>q$= =<<'Y;dt;n;! >&>J>`~>_>G>as=d=a===T=ʎ>> :> 5>s=Z=y = %;J:t:g:g:g9g;3m{>>GM>B>v>=@=g$<</^>>g=Ɉ=x <mc>(>.<>=t4=t= :<<}<=: = %==%==N f<9g9g:D<'Y&>Q>\>@>"==3m4>i;>{=o{>;>r> >^t>ٛ=OW=<~< 5>.<>q$= =0;9g9g:D<R5 E>p>Y>_7>&==*i\<t<(<=)d!=_>#r>5a>%==?/;9g9g;g<'Yİ>F|>WOw>::k>f=a=<;g:D<=> >>d=n=:t9g9g9g;g< )>>g=*=L/> I=5=2=i>x>7>{==m…>>!{>=*=s=VJ<<_< =g=t>>4 >R>T?>7>d=ʎ=h_=R<<==#D=5=a==嘮==<~<ѳ;n:D;!GM>!:K>B==y-=R=(^=: ==>$̙>R5Q>q>u[>Y<>']=d=^='Y<==:*=>d>&>d= =/<_;!;<(<=t== {>{>w> ===U=^=R5Q=qp== >"#>N f>k5r>o >T?>!7=嘮={=c==;D=Y=[>>L>=L==>->C(.>C(.>+>q=i\=< )>">@=n=f<t;n;;g;;;J >O>w=5=Y='Y%?===?/c>>=m=T?< ^><>Q= Z=M+<*<'Y;g:g;?=rܫ=>{=嘮={==i;= 5T==ʎ= <_<;?;t!:D;i<=\i=g=rܫ=<:9g9g:g;>-'>d=t4=o='Y<</;J<(4>'><=07=5= :<} >u>=Ow={ 5>/B3>$̙>=̙<_:D9g:C;<=%O6=^t=Q0=<'Y:D9g9g9g9g9g:g;J<m=_yN==h_=&Tq!:K>1L>&> =:k=)d!;t:g:D;J^>>~'>T==I@>/>GM===;g9g:g;!s>Dn>\>Pl*>$̙=yN=J {;9g:D<=?/== E=̙=K<;t!:g9g9g9g:g<#D=*=:K=d=a=_=g= 5,o>i>>v>Es>{y==<ѳ:D;?==:*=:>{>Q=y-=C,s>kv>aS>z3>JL>w=?=g<<ѳ=,s=5=>>=d=<5Q;:g:g:g:g;t!<t=_yN=m= f===(^<-'>I,>e>Y<>.~G>g==c<=<=(^==0>g> =07==<:t:g:g:g:D<<=k===p5=g<'Y;=:D;==ʎ>2b>(>#D>w== <ܫ(>B">?C>L= =^t<:g;.<>nE">4>>Y<>~'= )>=̘=J {<};n:D:g:g;<=R=>d>~'>=n=rܫ= <<_=VJ<>,>S)>TP>>f>|>.~G=ҷ=(^<;DB>3>951>ٛ==-'>>^=E=*z= :< f<=;D>{>V>CY>̙>>I>2ԁ=yN=XT<*=%`==?>!7>F|>Q0>2Q>@=t!<t;n:t;;?{>d>%?=~h=u[=,<=6l> >i;>d>e>=ʎ=Z_(==)d!=:*=ӽ)>s>3ټ>@>)p==| <;J;;?;;i<=M+===Σ=s=*i\/>;?>Y>Pl*>)d!=m=:K=(^<_==M+= :=t>Y>B> =U=K > =L==Q0< f޵==Y<}9g9g9g9g9g:g:D:D:g9g:g;J>%`>(=s= x:g9g9g9g:D;3m;n;n;3m:C9g9g;3m<;DGM>/>^== :D9g9g:g:D;t!;i;!;:D9g9g:g;dt;;:D9g9g:g<(<ܫ=T=͝>V>=07=<:g9g9g9g:g:D;;;=:g9g9g9g:g:C9g9g9g:g;J<=^t=s==,< ;9g9g9g9g9g:g:g:g9g9g9g9g9g9g:D;i<t<%>F7>F|>'I=yn=T> ==07=:K=(^*>r\>>>nE">$̙=U=c<<=h_=51>g> :>&=2=d<<;dt:g:;==?>Q>>$̙>=t=,=c<<=I@=>T?> >>d!>>C=:=VJ<<t= :=t=T>%>M+>V>6l>V=u[<;?;g;?{>!7>, >f=!=x= :<\(O>>=>>>IG=[=t!<=;D=>{>3>a>nq>T?>&=n=g<;?>>=yN=,<@Y>4>F>V>|M >-=Ow=a=(=: =a=>#^>P*>^>G=><=o=c<\i<'Y<>G=>k^>fL>;?>f==)d! 5>-[>8=5=>d==I=C< f >-'>+= E<_:C9g9g9g:g:;;m;3m:g9g;<= ==<ѳ;9g:g;i= ==o> >&>.~G>k=魚=C:D9g9g:g:t;i I>(>1L> 5==C:D9g9g:g;3m<(<<<;?:C9g9g:g;<\id>GM> =/*z>"#>)p>x=5Q=XT >K>xyn>|M >V>~'=<;J<ѳ=3m=a=> > = =< -'>> =@=XT<*>~>>C>g>0=:=)d!2b>;?>Dn>*=!=zGGM>!7>x==x 3W>q>>>>5 E=i=;D<ѳ==m=Ow>!:K>Q>`~>HBT>N=n= <'Y;?>-'> =ȃ=Q0<ѳ;n;g<t=>8>m…>>d>h%>q$==!:K:>@j>S{>@Y>i;=o=*>Q0>P*>(=?= GM>']>&==R<_</</;i;i;;?T=2=ʎ== ѳ<};?;<;D< =m=ȃ= =Ow==(^*z>w==y >)d!>=yN=1:D9g9g9g:t<(<<<ѳ;:g9g;<=c=>!:K>+>`=a=-y :g9g9g:g;3m<'Y<< =>>{=s<9g9g9g:D;{>%>->u= f=[db(>Y>`=:>;?>{==g>d= = =H<;?:t;n<R<ѳ==̹= Z=?>{=嘮==c<#D:D:g;!=(^= >2ԁ>g >k5r>@j>v>=<;;t<5Q=Z_(=J<>GM>(>`=07=<_;J;dt;J<'Y>IG>KS>%==~2<ѳ;m;<=0=ȃ>>"?>İ=07=x<_;i;;i< =<(<>7=G== ?e=m=n=e<(;;;dt;;g:t:D;> I=!=?V> =yn=?/= ==qp*z>d> TP=_=<5Q:9g9g:g;n >=yN=<_;t!9g9g:t;! >> O=9=R<(:g9g9g:g;'>>x==i\=g;T?9g9g9g:g;=5=?=R;m9g9g9g:D;J >> ==;=,<:g9g9g:g;O>>=[=<_;g9g9g:g;n{y>'> TP=嘮=t޵=Z=?=B;t9g9g9g:;!<=<<<ѳ<'Y;:g9g9g;3mg> )>{=Σ=u[<:g9g9g:D;J<}<<<=p=dB=a<=:D9g9g:C;3m;!=*=0<ѳ;dt:C9g:g:g:g9g9g9g:<=(^=_yN=UE=<;J:t:g;i=\i=~>> >M===<>1F>KS>B>=Ϩ>=T?<t;g:D;<;?:D9g9g9g;g>@>Z>Rv>%=i=Q0<=:D:D;J>->E2>>OW>=_=;!:g:g;J<(>&>=嘮=g<:t9g:g;n> ==n= 5<'Y:D9g:g/>k>,2>)d!>>=ʎ=h_<;:g;#D<=^t===T=N;9g9g:C;g<ѳ=a= =9=魚=E===f=0=?/=N=5Q> )>!7>->)d!> %> ==ӽ)==g< =:t;?=R=T==?e=-y ;!9g9g9g:Di;>&>>w===x <_<(;t!;!=g=_yN=T=f=;i9g9g9g9g;< =a== :===| =S:===c=YY==dB=yN==?=a=@=='Y<;n;g;s>#r>%`>V=D=t;i:g:g:t;;?;#D:g9g9g:<=T=n= ==/=w=R'I>_>{m>r\>B>k=<;dt;dtv>>=07==Q0<*<==a>^>Z>>8>>z>'== <<#DY>==J=p5=g<*=d>>p>|>H>r>H>22=Y= =<'Y@=9=n=K-'>`>>P|>t>x>"#=?<;4>m…>;q>u[>C(.>=_yN<:D;? >*>::k>+> d=2=(;m:g:D;J*z=~=ȃ=,<*;3m9g9g:>ٛ>M>O=O=?=g;3m:g;g<=C=T={=%O6g>>O= =s==1=,= 5==[>!{>C>Z_(>Y܊>AV> 5=?={N>(>)p>İ=Z==x =C=x =ʎ>>R>|>nv>(>x>F7>~'=n="?(>GM> ?e=51=R:D9g:g;m<ѳ=g$=> :>0>4>"?>=@==,=/=?>, >r\>V>>>>a>)p=5=~2<_{>'I>7>%=[=t!;?9g:g;t!>)d!>->>/=:==a=y =yn>-y >u(o>M>>>d>f\>/B3>{==t==/>>-y >@~>*>,=xT>2b>GM>w=Z==i\==== >`>WOw>/>c>)3>v->Pl*>%=Z=t= := :=ѳ=?>>$̙>= =u[!:K>F|>Xc>S:>@j>(5>^=Σ=rܫ<<_=K=4=yN=d=T== :;!:g9g9g9g;J==h_===| =k=R5Q=0=c==i=2= > I>>>w>T=ʎ=/=c<=g>= =x<;i::D:t<==9===| =c;i:g9g9g:g:t;;?;?;;?;J;J;J'>>T=y =R;:g:g:D<ѳ=Q0=:K= E=5=C<;D:g9g9g9g:g:D;;;i<'Yk>q=9=d-'>@j>\i>Q>%=O=XT<9g:g;?< O>>&> =:===0< =>>gs> :>9>q$>|>+n=<ܫ;;!<_=3m=L=&Tq<;9g:C;?<_(=x=2>"#>8qD>8qD>#D>=~=x =J {=E>C>b>OW>l*>=>̙>b=_H=-y <<=22=T=R=a=g;?9g9g;g*z>*>AV>B>, >== =x =2>]n>I>΂\>=:>>h>u[>޵=: >1L>2> 5>V= Z=h_=h_=T>S{>>> > {>">c9=07=c>>{=s=h_= =*=y->->>U><>>4>.~G=<;<=N=_yN=T=rܫ=(^v>>?/>nq>rJ>qT>?>T=g$<'Y:D;t!w>%>.<>!7>==)d!;i:g:g;n<*==̹=h_=Z_(=t<;n:g9g9g:tQ>==:=t=;9g9g;g<=: =rܫ=h_=(^V=2===3m<'Y:g9g;<=VJ<==x =0>&>$̙>!7>:=~==;dt:D>"#>!:K>-'=?==| =I@=/=:>-'>=J>_7>t>o >V>->=<;?<=x=Y>g>=a= <>@j>_yN>c9>M+>!:K==D==2> >B">66>>qD>,>6V>r\>0=Z=t!>=J>IG>1 Z>{=h_;?:g:t<=5=db>&>`>+>Q>{m>H>i;=ʎ=#=J<> >td>R>t?k>8 >>C>ba>=Ɉ=| =><>L>|>>>@Y= =R;t!;n<=+n=Ow>'I>k5r>Z>S >H>WOw>%`==n=[>->>? #?*Y?>g>[> >3ټ===ʎ>&>u[>>Cz>%`>qp>~'=V>WOw> >>|M >IG>`=?=͝=>+>>R? ?'Y?L>M>>">?C>=OW=T>,2>{G>>>>y>/=n{>.<>W)>c >P*>)d!> )=a=n= >>k5r>> >NQ>x>>V>oJ]>1L>V==y->>\>>b>)3>XT>d=tv>>>#r>GM>%?=====>.<>>>B3>Y>>x>G>&====> >M+>^2>KS>=i=VJ<<;D:D9g:g<ѳ=YY=y =ʎ= f=J=D=x=x =K=_yN=>>(>S)>gs>dR%>Qqe>7*>=…==a=YY==ʎ>>>g=%== ѳ;?9g9g9g:D<\i==t=c=g==c=< >>2b>c>T=ʎ=%`=dt=)d!==(^=I@=h_===p5=3m< f;9g9g9g:D;3m:t;g;iw>i;>V==u[= :=g==='Y=M+=g$=_yN=*i\<&>8qD>@j>,2>/== :<̹<==XT=5=~=:k==)d!O>@>i>td>\(O>%=͝=*޵==x< f;:g9g9g:g;3m<>W)>Y>P\>qp>4 =9= :;i<(^>>^==;dt9g9g9g9g:g;<;D<t>I>u(o>Y>fL>)d!=ʎ<>ٛ>i;==;g9g9g9g9g:g:t;?V>@Y>Jg>0>޵=g<'Y:g:g;n<==E=2=L=d<t:g9g9g9g:C;dt<<:K= <5Q;t!9g9g:g;g=G==ak>޵==~G=i= :< {=)d!=O>)d!>dR%> >q>: =:=Z_(;t9g:g!:K>7X>7>#r>q==ѳ=]n=>-[> >>>l ><>@j=< f;3m<'Y=*=T=s= =3m<:t9g:tİ>Dn>_>`=:>H> ===> ѳ>l:>=>܊E>>>$:>> =*i\ >U>oJ]>oJ]>V>*>V=T=>>I>>`>S?|> >W?><>O=E~'>F|>bM>a>H>8==D=s>a>}RF>X>M>[>%>~>@>R='Y<==c=w=i\=OW=2==g;J:g9g9g:D<;D<=;D=t=> v_>951>8/> >T=D=L=qp=m>T?>>)t>+>>>P*=ҷ<_< =<=22==O6=={=<;t!9g9g:;i<t=c=dt=D=yN>{>V=܊==q$>c9>>u> >`~>x=^<=;dt;<=K==a==;D<;?:g9g:g;#D v_>@j>M+>>>=*=L<'Y:D:g;?==p5=D=*z=R5Q<<R:g9g9g:D{>O>-'><=E"==-y <:g9g;< =h_=^===_yN<<g:g9g9g:DV>^>~'>-'>R=:=x <::g<'Y=)d!=ѳ=n==t!=g;i:C9g9g;m\>>>q=&= E=,=]n=i;=T>Y>%>@>P*>M\z>8/>GM=yN=h_İ>Fy->f\>l>Y>.<> ?e=ȃ==ʎ>^>@~>u[>S >eh>P|>)3>a&>%= =a=R= =嘮>L>2Q>;?>$̙=_H=dt<(:D:t<*=>+>F7>>C>>W>w>1F>V=Ɉ=2>0> ><>P? ב?;q>ҷ>P|>l:>#r=a=I=E>q$>]n> >nv>>I=~=5<;D<==:K>>b>C> >L> E> >[db>=?>d>W)>>=?0?::k?5a?>0>XD>S{>u=Z>^>S:>>>@>`N>2b>>OW=='Y<=t=>>g$>5>¥>R>L>>j>!:K>{>>i*>?*?=a?F#?D ?1>>zS>q>+>>%>u[>Xe>ٛ<>>X>>oJ]> =i;=c=R=T>{>N>XD>v>ê>@>S >Y<> %>{>GM>ba>?*?;??E6>^>u[>0>d>)p>z3>=>>>m>qD>x>~'==t >nq>>5><>o>2Q><=> >AV>P|>T?,?4J?1 Z? >g>1>cL>%>g>GM>_yN>\9>>{>ȃ>5>\i> ѳ=<;<ѳ=qp=嘮>%>S:>cψ>R=>)p> )=a=y-=>V>m…>>>NQ>A.>H>8>z>?C>d=yN=Z>(>m?>>k>XD>p5>(==M+V> ==*===,=t=嘮>!7>g$>(>F>t>Z>i>>>x=嘮===07>>>OW>L>@>8==<ܫ;g9g9g:g>22>F7>G=>::k>"?> ?e==2=t=x=#===嘮=~=n==Z_({y><>İ>^=Z=dB===D=x===g=T==T=f=*<ѳ;dt:D9g9g9g:g:D;dt;<(i;>!7>"#>== Z=*z=T=?e==s=ѳ===g=p5=I@= :<5Qk>->M+>T?>@Y>a=*==x =*z=s=n=U=̘=n==]n=,<t<+n;?:t:D;t!%>a&>P\>>rJ>KS> I=t=Q0=a=:*=U=yn> I> TP=5=:K= (>M>D>r>H>f>z3>%= E==&Tq==d>'>.~G>@Y>,2=m=]n>b>~>6w>>y >>3=U<<=t!=O> 5>R>hg>Y>!7=D<;D:g9g9g:g;g<;D7>W>է>d>`N>M>4>+=<t<t=C=>>V>n>a&>*= <#D9g9g9g9g:t<<== :=)d!=,s=(^==4==T>)p>u >&>>>`~> =a<(;J<ܫ=R>T>/>M+>@>={;9g9g9g9g:g;<;D<=g===Rٛ>N>a&>IG>7=n<_:t:D<(<*=| =O>==5<ѳ:g9g9g:t;!<(<*T===9>/=07=/=R=I@==dt=t>)p>cψ>|M >kv>-=%= 5:t9g:g<3m=c=F=C=c<ѳ:D9g:C;n< f==>&Tq>@>AV>, >^==o===5Q>/>>,>ê>>l>2ԁ=a&>|M >| >`=:>-[>=/=>k>>~>>hw>…>¥>"= ='Y<}==w=2=ʎ=U==;D<ѳ:t9g9g;dt<=g=K=?> >;?>W)>UE>7l >w=D=h_=>>\(O>*>Ê$>U>s>8>M+=5Q=R<'Y޵>İ>==='Y<}<=:k>!7>k5r>(>6V>8>b>~'=a >C(.>P*>@Y>&=%=M+Q>d>> ==~G=1*z>d>a>u> I=i=<5Q;n:<;D=0====T=c<:g9g9g;<=qp=>İ>.~G>4\Y>'I>w==i\==D=>~'>2Q>Sx>fL>c >Jg>$̙==d<_>=嘮=<ܫ;:g:g<=a=9>/>nq>>E> >cL>'I=2==07>>U>?e>>>51>>| >;?>v>=~G=x =>>/>V>`>G>~'==<;J=;D=>t>l:>>>H>qD>>hg> 5=m>O>KR> >??,t?)>>>>@>=07> )>@Y>>ݏ>Q>ݏ>}>"?=/=(^<=x =:>-y >>>z>a>db>;>>>>'>!7>td>?0x?=!?G ?Es?4\Y>Ϩ>>u[>3>>.<>{>Q>܊>:>ߙ>>u(o>-'=n=M+=~2=Эy>(>o>>> >%>¥>>G=>GM>*>>2?1mP?HE?[l?V)?B=?>U>x>L>+-H>L>>W?>Y??¦>>u>3ټ=L= =UE=>>u(o>>z>%>db>>>;?>-'>(>I>z?0Gn?G?X?Rؖ???!>Э>>P*>*>P*>2b>R?]?? D>t>;>@=== =Q0=d>7>>>>>7>Z>> >&>cL>?s?8N?D ?@?-V>q>[>>=J>&>8>aS>>/>3>)>s>:*>-==a@>}>>w>Q>q$>V=9>>0 >` > {?*z?Ȥ?>>>o>S)>>g>>N>O>>~>>-'>R=>c=Y<_:g:D-'>>x= =͝=~G=s=> =>@Y>P\>,>><>as>">P*>q$=m=:=>>>>gs>v->kv>AV>-'=͝=C;J9g9g:g;!=g=Q0=u[=a=J {=B=-y =%O6=e=>v>>-y >V>k^>k5r>W)>4>=T=ȃ=%=/=E=><>i;> =!=ȃ===;t!:g9g9g:D;<<;D<}<t<<=/>!:K>3W>6%>'I>= =:k=o== ==U=~h== E==I=M+w>/>G=>IG>4\Y>2b=i==I==T=s=ȃ=ʎ=T===Q0=<;!;t!:D:D;n<}<=%`='Y=<m%>Xc>x>0>l>>OW>v>=/=:K==i}=i=G>{==:==(^ I>M> >q$>">ٛ>y>+=Σ=^=t=̹=yn>:>'I>, >=a=Q0<ѳ<'Y;:D:D;i<5Q=DU=g=====rܫ=-y ==a=ҷ>%>y=Z>3>ď_>̹5>>>S{=~=m=x =>>1F>a&>u(o>a>)"=<ѳ;;g9g:g;?4> >>_(>/>{>i\>gs>4=h_=C=̙> TP>P*>/>E>?e>Y܊=2-7>I>v>܊>/>[3>>a&=m=C= :=>>Rv>o>b>>g > ">XT>f>>,">'>>=J==R->qp>>Y>F|=t<}:g9g9g9g:^>Y܊>>+>>T?>/=x <<g$>@>22>k=C;3m9g9g:D<<t<_(=g=g<*<ѳ>+4> v_=== :;i:D;ni;>;?>P*>;> =TP<:g9g;n<*='Y=*i\=~'>.<>1 Z>>f=͝==^=>L>l{>>>k>r\> =I@;3m9g;gi;>IG>i*>k5r>P*>%>,=ʎ=/>V>N>> {>܊>\z>$>G==D']>e>66>66>g$>3> ==̘=>>nq>x>H>E">0>;>g$=$J>`~>|Z>| >_>*=G==y >">j>f>[3>M>F>>XT=*=c< >>OW>Y<>Xc>::k> = =R5Q=^t=>Dn>8>=>~>=>=>-= E=<(R>ٛ>>=n=t>Sx>>[>~2>F|> =~2< {;!;<==*={=x=x=x = 5^>*>3>&>==1<;?;g;?T>R>R==n=p5< f;!;3m;?>;>Dn>4\Y>=?=n=p5===>^>'I>D-i>Xc>WOw>@Y>V==d=c<t===˓S=!==E=nv=< =;3m;g= ==>6%>x>>C>>u[>3ټ>%?==9>>N>P\>3>>qD>8>y>7> =j== E>%?>-y >U>a&>I,>=n=?/<<t=zG=y->q$>ui>Z>>w>">>z>*>>d>HBT>Y>&? ?*ۦ?(?66>e>?e>G~h>=>>@>E>>>O6> >-y =Ow=zG=;D=/=*>2Q>x>>Bu>>r>¥>է>K>~'>"#>s>qD??: p?F?E?4?aS>>rJ>@Y> v_>2ԁ>}>~G>Y>>>> > v_=̘=:*=?= >->t>n>${>Y>Z>w>C>T?>ٛ>-y >H> ?-V?F?XO?UE?C8?$j>,">w>W)>1 Z>P*>1>?,?c]? p`>N1>@>C(.>{=̙==dB>-'>x>>D>>m>>8>C>B>+>k>U?, ?EG>m>VJ<>.~G>R=>է> ?k?+? ƚ>,C>q$>L> ==0=rܫ=>6%>>qD>>e>>hg>']>>>gs>w? D?5Q@?B???.B>T>>">>OW> %>;?>E>N>}?T>>>&>>951=G=<ѳ@Y>>>>]'>']> ?e=Z> =>8/>>Э?0??>r>>>N>GM>{>B>Rv>8>]>>`>X>>Y܊><=X= :g:g;m==>O>!{>`>/=;= ==Ow>i;>C>/>̙>w>Q>>Y>F|>~'=:=*=?>İ>C(.>m…>}>q!>F|>İ=E=J {;J9g9g:D<t=?/=,==qp=^t=I@=K=d=>d>0 >Xc>nq>m…>WOw>0>w=t===~h=07> >7>GM>O==ʎ=<_:t:C9g9g9g:g;J<t<*<< fd>*>@Y>@>-[>=yN= =?=y = ==yN= =E=s==:*=3m<;3m:D:g:g:D;B>>>UP>W)>@j> %=*==Tq==y-=*=_(=yN=*= E=ѳ=K<_.~G>g >>>v->G=>d=s=Tq= =ʎ=07>f> >v>=L=̙=(^<t<'Y;:D:D;<=!:K=t!=Y=x==T?=(i;>YY>w>><>U>|>3ټ=~==:K=ȃ>{>q$>7l >@Y>*=m=w+4>g>=>K>Y>>U>]'>=^=R=dB>^>EA>x>>y>@~=5Q<;n:D9g:g;<5Q=UE==n=y ===J {=(^=| =>;D>m>s>g>>Bu> E>u >^=:*=h_= >GM>i> >k>a>td>=c;g9g9g9g:D0>t>ď_>臸>>>a>>t#4> =={=?/=>>n>W>eh>>rJ> %='Y;3m9g9g9g;dt>k5r>>R>ٻ>,>>P*= =C=R=_yN=[>L>4>>8>d>q>u >F>>w>n>İ== =<}<_=> I>C(.>a&>T?>=Y;!9g9g;g<ѳ޵>1>KR>;>-'=s=Z_(<ѳ;;i<ѳ=: ===͝=h_<'Y9g9g; =O==R;#D9g:g<( >==͝=̙==p5===9>!7>Z>s>Z>=i\g$>~>>>e>޵==̹;t!9g;#D<5Q=_yN====_yN=;J9g9g;m >@j>a&>b>F|>V==n=x=E>->>-H>U>Ѝ>I>M=:* )>@j>`>`>C(.>=ʎ=*z=v=5Q>.~G>> >>>|M >&=t#D>@>@Y>!:K==R==(=>GM>^t>Q>2b>H>P*>*z= <5Q;i;?<="?={==M= =: <t:D9g:D;<;D<==*z=> > ==_(=,<_<g<g=;D=n>!{>J>W)>AV><=̹=C> )===x =<t< =;3m;3mw>)p>1 Z>$̙>{y=ʎ=T=c=(^==$> I>ٛ>'I>(>GM=G==e=g<!7>cL>>8>U>a&>!7= ==>޵>+4>^2>#>V>>>UE>q$=O=i\=qp== {>w>,2>9>%>T=:K=0<_d>^2>է>]>>>ٛ>f>`=~=>,2>td>Tq>z>>>2>g>u[>6%> )=~=yn> >a&><>>>>c9>Q=U=x =Q0==&>!7>|M >>a>>җG>> >6l>>i;>T?>>?&d?4?4?'I>!>U>n>.~G>-'>k>XT>&>>Ѳ>^>7>a&>-'=Y==Tq=yN>q$>{m>=>T>>܊E>`N>>@>^>%`>l>?b?4T?C?Ci}?3?>@>P\>Dn> >2Q>|M > >Bu>t4>:>H>>/====>q>Y>5>G>z>ë>7>|>3>w>f>k5r><>Y?3F?B=?A_?2A>>>I>@j>>3ټ>>>6>>>>>5a=G===̹=rܫ= Z>>z3>`->d>p>>U>k>>>P*>>O?0x?0d?/!?i;>>>gs>%O6> >!:K>g$>>>ߙ>F>]>y>$̙=T=x >]u>y>n>F|>>޵=>v>>*>q>̙>P>>m>s>>td>+n==t>>51>x>C>>s>>>>=~'=,:D:t;dt> ==0=/=/=~>d>1>i><>|>b>/>[db>"#=07===E>>->Pl*>^t>Q>+-H>q=~G=,;9g9g9g:C<#D==t!= =| =g$=N f=^t=*= >Y>#r>?/>Pl*>O>>8>~'=yN=={=^= E= >{> > TP>,==D=: <3m:g9g9g9g:g:t<'Y<=R= I> v_>/B3>.~G>k>=51=g=p5=R==n=ǟ==@= ==K< f;n:g:C9g:g;3m;?w>/B3>F7>G~h>1F>i;=5Q= :==i;=o== f=*=s=̙=qp= !7>V>u >y>dR%>4\Y>= Z==a==:=[>>=T==g;!;dt:D9g:g;<==j=?e==,=C< <>Es>>i>ݏ>է>m…>!:K== == Z=:>>.<>7*>!7==h_<;D;g:g9g9g;<=?/===?==f=>nq>>8>r>a>S >C(.==T=t!=n>>@~>q!>">qp>4 =~h< {;3m9g9g;g%>I>qD>ۅ >t>ӽ)>>Zv==T=T?=s>>a&>Y>C>>k5r> =;9g9g:gk>V>qD>>8>F>>Y<=Z=j=(^=R>'>gs>>P|>&>w>=/;n9g9g:t<=)d!=t!= =zG=F= <*==>{>V>> >΂\>)t>>::k=ʎ=9G>E>'>>]n>{=;g9g9g;3m<t==I@=C=(^=gd>fL>է>8>c>[>Y=t=<;D<=m> I>@j>]n>O%>L=d<'Y9g9g;<(< =R< <)d!>@Y>.<> =J=Q0<;3m;t!\===:t9g9g9g:g<R<<<;9g9g:D;?<==8=>f> =t4==t=h_=,s=?/=o>/>-[>@j>+4=2=<ѳ:g9g:g;<== :=g<};g9g9g:D;<;D<_=:K> >#r>&>-'=t=?=m…=+n=]n=%> v_>U>i>R=>=*=;:g:D<#D<=3m=R5Q=I@=<=;3m9g9g9g;#D;iw>']>'I>=:=/=*i\==T?=T>%>U>g >P*>&=i}=3md>d=J=t=&Tq<O>2>@>+>%?==*i\<ѳ;;dt;i<=/=| ===g=J {<;g9g9g:g;g;J> =yn==h_= <;J;3m;dt/> =Z=n=,=g;!<==d=/=ʎ=J<=Ow=dB=x=F<m<ѳ;J:t;g<<<5Q<<}< =;?;n;m< =3m==m>.<>W)>a&>R=>&=T=Y==)d!=>>%`>>OW>Y>Z>@Y>&=:==h_=<_=3m==Ow=?=E=?=J {<_<<=DU=a=9>)p>nE">8>L>CY>s_H>*=嘮=(=>>2ԁ>oJ]>>>m>q$> >@>O=ӽ)=̙=#=>ٛ>J {>_>P*> ===3m= 5=| =>*z>C(.>>̙>Gn>>m>Sx>w=y-=i>!:K>gs>f>̘>>yn>>M>>@>w==p>ٛ>^2>z2>f>>qp>&== =_yN==>{>@>?e>>qD>><>^t>GM=>T>3W>޵>,>??H>1>s>>Y<>>> TP>8>I>>>d>>L> ==| =h_==Ow> v_>s_H>>>>:*>L>~'=>>4 >g>>}? #?2b>>>>R=>B=>Y>@Y>4>M>>>!k>S:>Y=~G=rܫ=!:K=L=^=>/>r>>">Z>(> I=_H>>'I>j#>@>s>M>M>ƙ>>td>+==ҷ>T>,s>q>>g>q$>g>6%=~=x=0>7*>22>k>==E=d>>@>w>W>Tq>D>>nq>,o=07==?=0>O>>>i>{m>nq>@>w=2= :<;t!;n;n<'Y=)d!==E=a=͝=m==I=ʎ>{>ٛ>::k>WOw>gs>`=:>Ci}>M=J<=| =1=i==:>d> v_>&Tq> :===)d!;J;9g9g9g9g;^>> >as> =̘=zG=g<=0=ѳ===嘮=O==a=0v>>'>"==?=e<m<=*=t!= %=2==5==-y <t;3m9g9g9g9g:D;;i>!{>!>-'===: =(='Y=g$=Y==D=a=rܫ=c<+n:g9g9g9g:g;3m<(<(<m='Y=;D=(^<ܫ{>)d!>DU>KR>4>=˓S=x =&Tq=-y =p5=*==E=:= =Z_(`>Sx>{>|>kv>2ԁ==TP=-y =(^=h_= =G>>&> d=y-=-y ;:g9g9g;3m<}=c=[db=g==k=%O6<4>|>8>>u>a&>==: ==`~=>f>J>[>HBT>:=5<t:g9g9g:DKS>>m>~>Ѝ>g>k=*=?/=c=T?= >;D>u(o> >y>@=i=R;3m9g9g:g;i< f=3m=p5=w=R5Q=<t<'Y<t=f=T>DU>>@>T>>E>==(^<='Y=>@>|Z>=>޵>N=Z=;9g9g:D!7>~>>d!>w>d> )=<%>a&>y>l>3=ʎ.<>k5r>| >a&>#r=5Q=^t<;3m;m==;> >7*>)p==_yN;!9g9g:D<<<<<'Y;n:D:>> ?e=*==;?9g:g;gd>>R=ʎ=Tg>޵===a=(< fq$>C(.>P*>?C>~'=:=qp<_==s=>%`>@>^t>a&>J>!{=~=o=T=;D= ѳ=C=D=L>==s={=q>6>bM>u(o>g$>9v>{y=2=_yN=x =yN>q$>O>>66>>|>t>g$>+4= =̹=x=?e=Y> =>-y >B">7>7=*=h_=<= :=h_=>*z>22>cψ>x>m…>B">-'=*=t=>{>22>n>>I>=>>I>F7>i;=5Q=~G=/=[>&">V>n>b>3ټ>\=x== ==c=J {==&>M>DU>]u>U>0 >=i= =n>>6%>n>CY>̙>>> >?C> I=n=o=s>+>.<>^>u[>i>;?>/=a=t=R :>-y >*>GM==̘==Ɉ>>*>XT>T>t><>>Rv>İ====/=>"?>F>X>I>!:K==i<T>{= =n=Tq=s=T=[>>2ԁ>N>Y܊>S:>9v>==VJ<=&Tq=Z_(==> >q$>%>== %<<#D<'Y;;J;?;<=Z_(== %==k=R5Q=h_==*>{>-'> %>%`>-'===0<ѳ==;D<;; > ==T=qp<<;D<<t=c=XT====a I>#^>)p>GM=:=M='Y%>Q0>\(O>>><==Q0<_(>q$>=d=Q0;J9g9g9g9g:g;?<==(^=(^=R<t;?:t;<=ѳ>>@Y>u >>_> %==^t<_>/B3>C(.>22> =x<:D9g9g9g:C;g>@Y>v->|>c9>f=n=K >8/>N>@Y>i;=<:D9g9g9g:g;!{>S)>`>@> =Y= :<#D:D:t==a> >4 >'I>T=TB>q$><= {=rܫ<;g9g9g;i=g$=T>g===g;t!9g9g9g:D;;t;;#D:g:g:g<'Y=!:K=d=:k=n=O6=e<_;J:C9g;i==I@=,sv>>=a=5=*i\<_<*<t<<'Y<=^t====̹<;J:D:D;J<}= =:*=Ow>>^>޵=Ϩ>===^>%O6>8qD>::k>!7=m=i\=WOw=3m==g=(^==͝=L==n=C<;t!;g>'> ==n=T?<m= :=?>{>!{>@Y>W)>W)>>>x=5Q==a=C=C==Ϩ>>>^>/=:=m< f;?;R>{==y =p5=(^=Z_(=Y> O>)d!>C(.>U>Pl*>6%>d==T=WOw=P*=o==07>w>2b> =Ow=T<;t;!<<==J {=x=y-=a=t=Y==]n=3m=u[=n> Q>!:K>22>::k>->B===6=%O6=: =t!==t>+> =!=/=Kd>GM>x>=Эy== :<̹<=c=Z_(=/===d==rܫ<;?;;?;n;!;J;?<;D<ܫ=&Tq=%O6= =yN=s=C*z> ?e==?=;DQ=07== :;?:g9g9g9g:g:t;n;?;?;g:D9g9g9g:g<=t!==Z==== <:t:g9g;3m===E=y-={>-'>~'> =yN=a= 5 >&>Q>===4=c ?e>-'>d== ={=(^=g<*< {=R=C=%?=:K===9T==dB=T=0=Rg>=?= =^t<5Q>c= =y-=/=!:K<> ==Z==x==̹4>O>=0=%?<;:g:g;<}>!:K>+4>k>Q=o='Y >)">2ԁ>%> I==p5<<3m;i<;D>%>ٛ>==/=<k>w>=$=/=w=cq$>.<>%> )=n=K&Tq>Y<>pO>c >3ټ=m=<t;g;J==p5==T=n=R5Q<;g:g9g9g9g9g;Dn>0>>H>\;>GM== ѳk>{=ȃ=N f<;dt:g9g:g:g;<_=x=Ѳ=J=T=y =p5=<_< {=I@>>I@> >'>>cψ> =ȃ=M+<ܫ==h_= E=>-'>~'= ==t/B3>i>>u >KR>GM=ʎ=rܫ= :==`~==> )>d>Q=51=VJ<<_>*>)d!>=O=w/B3>g$>66>z3>R5Q><=2=g;J>>==T=8=B=x =/>f>nq>V>Ѝ>>>F|=:=Kİ>,2>(> ==<*;J:D:g:D;nR>']>/B3>q$===t!=VJ<=x =Ϩ>>4\Y>>>6>>>pI>^=='Y=T=̘>>@Y>c9>i>Es> =x <;?:D;i;!<*=5> D>-7>;>*> =dB=| =A=K=n>4 ><>v>Ѳ>+>R>u >B=~G=w= %=>&>N>w>66>dt>#^=OW=*i\<<(<<;D<=rܫ=>>+n> 5>޵=X=^t=c==>>{m>,>>>a>Y<>d====Ϩ>>^>;>f\>rZ>Xc> =˓S=h_=Rw>=;=x=c<}>>~>>>e>)p=T=t=h_==n= >-'>.>>OW>+-H> ?e==k=>%>>OW>6l>f==o=J {=(=t=]n==n=?>{=d=dB= =(^T><>&> =?=g:g9g:g:D;dt;;?;;g:g9g9g;n&>0Gn>4> =:=M+;:g:D;n<>2ԁ>8/>!7=:=L;?:D;3m;! I>>/><=J=;n:D;3m;J<;D<<<<ѳ;i:g9g9g:C:g9g9g9g;3m<=t=T=D=~= =51=J {<'Y:D:g:D;g;n;?;J;!;?:D9g9g9g9g9g9g:g;?<t==Q0=R5Q=(<;D:D9g9g:g:g:g:C:C:g:g9g9g:D<<޵> === E=?/<\i;3m;J==f==*z=I@<;g9g9g:Cv>>0>P*>Rv>6%><=x>a>*z=~=^t== 5=h_=> x>Py>>F>>q>AV=d=VJ<<*=C==>-'> v_>GM==h_<t;?;g:g:D;!=&Tq=ʎ>GM>;?>B">*>/==w=p5=i;=;>9>TP>>ǟ>ԡ>}>> %=D=C=t=L>/>NR>p>td>Na> =,< f;!;dt;!<=a=>0>^t>j>Sx>$̙=嘮===>Q>[>g>܊E?>Y>T>>::k=:=i;=n> I>@j>0>W>> >M=:=M+<<(<<_=h_=ܫ>7>gs>u >`>0=2=̙=t!==>_7>s>R%??:>܊E>P|>B=07==5Q>d>Jg>Z>U>>>nq>= := :<=c==0=> >Q0>`>Q0>']=…=^=3m=: =ʎ>AV>>;p>lK>;>">>0= ==>>4>zB>W>>>d>-'=y =VJ<= := :==g=t!=> v_>1 Z>(>Y=n=K-'>o>P|>>]>S >WOw>'====i>i;>B">qp>@>l>4\Y==:K=R5Q=(^<_(===| < f;!;!=g=̹>ٛ>T?>q>i>@>=ʎ=g=J {=h_= %= {>> 5>-y > >{==m…=N=;!;i;J<}==x ==I=m=R<;;?<> =*==f= =>d>T=y <*:g9g9g9g:g;#D;n;:t9g9g9g9g;<= :=(^= <;g:g<=c===07> >@>IG>22> D=;t:C:g:D;iO>A>e>l>W)>!7=51<ѳ:g:D;?<<m=0=I@=&Tq<;T?9g9g:g<<-'>Dn>h%>oJ]>Y<>$̙=?<=:D;3m<)">K>S:>;D><=;J:g:;J<ѳ=g=?/=`~=J {=g;J9g9g:C:;dt:t:g9g9g:D>GM>q=<*:D9g:g;3m;iQ> Q=~= =)d!<3m;g<'Y==x =s=^=`~-7>S)>Y܊>@j>= Z<>ٛ>q$><=Ɉ=qp=(==I@=d>{>KS> >̙>g>E>W)>v>== :=w=n>>!:K>22>->w== ѳ%>M>W)>?C>==x =\i==͝>22>>V>/>8>^>>-y =n={=2=>->g$>>?e>q!>'I=D=$I >F>ui> >j#>51==:K=| ==>[db>2>A??1>q>y >Py=E"==:>>UP>>,>>L>s>=d=g<ѳ=(=&Tq= :>Y>P*>~W>q>u[>Dn> ==rܫ==>e>>? :?L>*>Gn>Y>=51=~>GM>^t>>>51>n>>-y ==Q0= =;D=?/=| =?>4\Y>gs>u[>fL>7l >{=t=3m=C=:>L>̙>l>2>>j>>B=Z==Ѳ> >F7>Q>,><>>g>)p==| =;D=?/=0=,s=t>>/>C>951>=̘=N f<> >R>8>>>nE">&== %==t>ٛ>Y<>>m>>T?>d==qp=?/=c= >=:=m%>fL> >rJ>W)>ٛ=Ϩ>==F=f=:K=E>-'>51>G>::k>2b==T=*=cg>2b>d=O=~G=\i<m<&> >=*=!:K:t9g9g9g:g;?=L=&Tq<;?:g;n1L>Y>ba>M+>ٛ= Z`>WOw>|M >g>q>;=>Z_(>rJ>5>u(o>?C=$<_:D:t<>=̹>c9>m…>WOw>!{=/>%O6>-y >`=O= 5:D9g9g:D;J<=(^=XT=I@=<:g9g9g:g:g9g9g9g9g:D >.<>>>)p>{=<w>'=2= =C<!:K>oJ]>>>>C==t!=(=VJ<=n=$>-'>"#>>g==t<;i:t;iM>@Y>G~h>/B3> =n=C==,s=>d>td>>K>)> >o>!:K= =T?=t=a>%`>S)>{G>">d> =Y=: <<<< =*z>,><~>h_>t>]'>*=嘮==;D=S:=>0>>{??aS>ߙ>)T>@=E=*z=X>>@>%?>*>.>>j#>i;= %=c/>C(.>s_H>\>kv>9>==0=J {=>@Y>v_>N1??k%>/>>G== ==/>v>>IG>TP>> >,>5>*==N f= ==1=?/=x = >+n>Z_(>k5r>XT>+-H==x =,= =y >,2>nv>ȤJ>>lK>@>-'>1F=*===5>1 Z>66>k>>V>}RF>&=ʎ=qp=(^=0=-y =*i\===>%>5a>*> d==<;D<\i=]n>v>>b>>>L>>^2>^=?=\i=g=>w>K> >>,>M><==R5Q=&Tq==g< fx>N>r\>n>Fy->d= E=?/<= :=zG=?> >.~G>A>4 >=@=j=R< R>g=:=^=!:K<(;!<< {=K=O6= ==O=OW=Z_(<<'Y<'Y:g:g:g:D;<<ѳ<=;J:D:D;g;?;!<}=c=_yN=~2=qp=7X>>= {=*;3m9g9g9g:D<<<t+>T?>]'>F|>=s>P*>w>>lJ>6%=~2b>Sx>z3>g>p>;?=t<5Q:g:D;J3>^t>i>S)>q$=2>)d!>B=:=t:g9g:D;?<=3m=h_=VJ<= %?==n=$I<'Y;<8>S:>cψ>IG>-'==c<=GM>8>w=̘=h_ >y>V>,>>P*=[=h_<*=-y ==db>>;?>C>*i\===%O6<;!B>;>DU>/B3> ==='Y<<=VJ<= >U>KB>dB> {>~G>}>i;=< =XT=m> >DU>z3>>u(o>8/=T= =g>C>R>?C>==3m<t<=rܫ>>i*>>Ԣ>K>>">u==<m=]n=>d>XT>>S >o>Xc>d==*< {==c=3m=o> )>->>OW>,o> =Y= <(<=A=…>T?>>>P>8>a&> =x <*=0=>>Dn>Y>j>\>Pl*>w=y =(^V>d>=Ɉ=R5Q >l:>d>>nq>%=͝= 5<<_=R5Q=>ٛ>M\z>cL>V>)d!=?=:*=R< f<>4 >3ټ>İ=d=^t<ѳ;i<#D-'>"#>ٛ>T==*<ѳ^>->7>$̙==u[;!9g9g:C;?*>T?>]'>F|>İ=n-y >WOw>a&>KS>Q=y >951>C(.>->\=w;3m9g9g:<'Y==k=:*=T=)d!V> )=5=<9g9g:g;g=!==a= ;i:D;k>.<>@>(=?=v<;t!<({> =T=n=-y .<>k5r>x>WOw>-'=/<;g<<ܫ=R5Q=ȃ>'>"#>= =~G=I@<<<+n<t= =T=Ϩ>>>O>g=?=B<}:D:gAV>| >>`~>='I>@>4\Y>=ҷ=x <5Q<;D/>a&>i>@j> ==i;!>;?>0 >-'=ҷ=qp< >)p>,s>==3m;i:D:D;?=c=51> >k>>Q==)d!-'>M> =y-= :;3m9g9g:g;n<=R= 5= ѳ<;3m9g9g:D~'>k>^=ȃ=N:D9g9g:g;<= :=;D='Yq=*=<=9g9g9g:g;3m<;D<_==R<;dt9g9g:t;J<;D<;dt9g9g9g<'Y="?==/=| <_:g9g9g:g:t<R޵=m=Эy= >{=Ϩ>=zG>>d> =*=<ܫ;t!9g9g:g;</{y>=;=s<;?:C9g9g:D;</<#D;?:D9g9g9g;<= = V> >{=%=zG<=:g9g9g:g:t;?<<;D<'Y;:D9g:g< =<_(=&Tq=)d!<;!9g:g<==>4>d> I==<ܫ;t!9g9g:g:;?<'Y4>{=ǟ=ѳ< ;?:g9g9g9g:g;g;;!;J;t!:g9g9g;t!<t==<;t!9g9g:D<=| =:k=:==d!=T?=~=g<5Q:D9g9g:g:g:D;g::D:g9g9g:g;?=G=ȃ=v<t:t9g9g9g:g;3m;;J;i;:9g9g9g:D=n== :<(:g9g9g9g:g:D;g;g:D:g9g9g9g;=T=?==J {f>.~G>'I> ==M>K>ga>\>-=嘮=a<;t!;dt<'Y<<;D;3m9g9g:g;!<=Q0=/==_==^t<'>]n>x>n>?C==h_ٛ>KR>e>Z>*=~=0;J:g:t> v_>/>']>={=5=~=Z_(<:D9g:g;<<^>d>===<5Q;dt:g:g;3m<== :=3m= x I>'I>;>7*>!7> =y-=?/*z==0==p5=t=*=x=> v_>F>\i>S)>4>~'==޵==E==T=0=: = %=5>"#>KS>]'>S)>6>B=:=i;=(d>.<>>OW>1>q$> I==R=R{> >=~===J { >4 >-7>==*i\;!:g:D;<;!;3m:C9g9g9g;?==O6=>{==:=nv= 5@>rJ>>>[>^t>=t< f;;?<ѳ<*<<;D:D9g9g;dt<=h_=Ϩ>> >ٛ>&>{y=ʎ=~2==g=y >%>|Z>>w>s>>@=+=<>#D>!7>=~=i;=: =4=͝>8/>)3>&>¥>'>>S)=yN=<#D<==DU=I@=cR>GM>İ>v>=̘= =3m=C=>->|>Tq>%>[>>@=s<5Q;-'>V>:*>u>>f\>=/>C>V>G~h>q$=*=7X;J:D;dtw>s><==:K=;:C:g;?<=!:K=DU=3m=g>g=O=n=qp<:D:C;3m<=*i\=`~=VJ<=d>'I>7l >7*>']>Y==-y ;J:D;t=c=R= E=/=x= ;9g9g:g;t<=rܫ=Ow>d>!:K>#r>=_H= =t!=1=h_=n>>C>t!>4>I>gs>;> =?< f;<}=a= f>k>Y= =D%>DU>M+>7>=yN= %=qp=t=[>8qD>>>>>!k>k^>*=魚=`~Y>0>AV>->V=| ;J9g:g;<ѳ=,>T>.<>WOw>b>N f>#D==:k==> I>T?>m0>U>ۅ >χ>Ѝ>P\>B"> =:K=(^=<~=Ow>'I>\i>pO>Y>q$=/<:C:g;3m'I>P*>\i>G>!7>{==̙=> x>U>>!>Y>a>>>HBT>-'=51=]n=qp=>->cψ>vn>`~>$J=>.~G>;?>,2>=?=T===T>6%>>>>]>0>p>::k>=/=]n=h_=*>&>B">Sx>=̹>=D<t:g9g9g:D<>> =?===u[=x => >H>@>>>d>>>ٛ=?=t=(^=*i\=^=><>-'>==3m;!:g9g9g9g;?=c==2=51===,=Z_(=*= =XT=>V>8>+-H>'I>`><=嘮==J {*z> =E"=Tq=t<'Y;g;#D;<ѳ=-y =T=R=a<ܫ;?:D:g9g9g:g;g;id>'I>,s>Q==_yN<:D:D;D==x=~h==n=T v_>=J>@>)">Q={;!:g:g;?=t==>=t4= =:t9g9g9g9g:g;3m;?<#D<}a>.<>0>ٛ=9=C;t!9g9g;3m< =?=07>==/=t;3m9g9g9g:C:g;3m<<<_= =R<<_= =\i=Y=>>v>= =:*/===T<5Q:D9g9g:C:D;3m:t:g9g9g9g;= :=Y=嘮>{==:=a=0'I>d>>u >@==| >1L>.~G>=[==f=<~=U>->>=>>;>m0>KS=:= ;<< =;D=Q0=&Tqİ>@j>Y>Xc>@~>=T= %=>Y>k5r><>Y>>/>>/>d=Q0q$>N f>g$>f\>L> v_==~G= >>\>>?F>˴>;>E>ٛ=a>@>Y<>Xc>?C>~'=J<=5=y >>x>c>Bu>>}>>H>d=22M>/>.<>&=O=5=f= =m>Pl*>B>>R>~>f>W)=;<_;if>^t> >2b>>`>=/>=J>G>;?>&==a{>^>-'>^==OW=L =>i;>O>=Ѳ=x ޵>&>.<>>>>OW>*>c=ʎ=C<;#D<=f==0= f===̹<(:C9g:g<;D==?>V>"?>8/>=J>+4>'==o=?e= E>>*>\(O>>>>z3>N>GM=/=<}=3m=J>R>ٛ>>=ʎ=(^;:g:D$̙>]n>g> >|M >L>~'=5Q==T>/>ga>>L>L>H>qD>>U>'==Z_(=5>{y>;?>i>y>bG>'=n?C>K!>>>>>7>V=>Q>?/>>?G?/?+M><>>>8>T==9>1F>rJ>>>>x>L=<<DU>><>>y>o>IG>^=>w>Q0>Y?0X?3W?>?8/?!A>ԡ>W>UP>=>w>Y>6V>9%> >s>>DU=:= :7l >>Y>>Tq>/>AV>w=>(>KS>Cz?*z?3?=a?6?f>:>+>\>k=d>>_>F>İ>F>h6>>Q=07=I@<=<<*=>>a&>>+>d>`>'I>{==>->l>܊E?V[?.Q?&#v>!>>?e>M+>~'=>>DU>Q>Ѝ>D>>x>3ټ=0=(^<'Y:D< ==R5Q=嘮>%O6>N>^t>M>'I>4=ӽ)==dB> D>Z_(>r>R>G> > Z>>a>,2>\=n=*>u>NR>@>)3>>G~h>=R>>g==/==k=h_=X>d>Q> >c>#>td>N>)d!> =͝==a=y->{>>']>L=[=:K=;J:g9g9g:gM>'I>'I>%`>d=E"=dB==h_=XT=u[===s=?==u[=*i\<;m:g:g9g9g;< =;!;!g>k=:=?==3m='Y=8=J {=3m== ^>']>-7> %=n==4==(^==̹=a=R=s=/=K<>@~>fL>o>Zv>(=a=YY<_=g=1====_H=%= < f<;;dt:g:t;!<==: =C=,s=c<_<<t==*z=d>0>p>>S >>W)>^=<>%`>)p> %=07=a >HBT>>>`->>l>=x<;D>;?>Pl*>C(.>=v>>@Y>m>m0>>>a&>d=rܫ;?<==>d>?C>WOw>L>L=>M>|M >P\>q>0=5Q=g:D;dtq$>7l >->v>= <(9g9g9g9g:g;g<#D<=(=)d!=)d!=t=R=*=T=J>g> >+>GM=E=K<'Y9g:g;<=t!=ȃ=[=嘮=8< f:D9g9g:D</<==<*<ѳw>M>===;3m9g9g;3m;J<(;?:D9g9g:g >>B>*z=ʎ=x=M+=%O6=> =>M+>>6V>>d>d=R>@>Y>Xc>@~>İ=t==8>{>T?>>Σ>Bu>֬3>=>nq=:=c;dt<#D= 5=,=a==;D<;g9g9g;7l >m…>>\>k5r>;?><=E=Ow>)p>>ë??-?/>>@> =a<}>HBT>\>ѳ>>z>H>==Z>@>%`>Bu??L?XD>…>>2ԁ=g>>ui>>>o>;> I=͝=t>8/>b>Ow??'I? >0>k>'I=s<= := =/=͝==5=;D<ѳ;g9g9g;dt<==N={=ȃ>&>L>gs>eW`>F7>GM=5Q==>&>{>>ܪ>E">Bu>;>}> =0'>% >!:K> TP==a==b=:>>OW> >>>>p>3ټ=y-Y>9>_7>m…>^t>3ټ>%?=x<;:g<(= :=g==={= 5<;g9g:C;3m<(= =: =h_=T=T=t!=7X<_<<=C=s=E">> 5>'I>!:K>d==<t;#D:C;==| =s=5=T=#DT>O>/>)d!>)d!>>{=d!=(;?:D<;D=C=:K=/=/==1>!{>%>> ==9= Z==dB>{>q$>@>_>r\>oJ]>Y>1>=s<ܫ >=yn=o=;:g:g'Y>`=:>>>{>WOw>!{=G=ʎ=t4>">^t>>b>#>>`> >q>F|> =n=rܫ=/> d>1F>W)>a>KR>=?=;i;==#>-'>_>&>>>`>@>~>`>ٛ=yn>>Rv>a>uY? ?1?-?¦>Y>>F7>^=L> )>A>>j>>> >!{== <=K=>%>I>>>>>>o>;>d>%>| >s?)?CH?M+?H?7;?K!>>{m>5a>>2ԁ>>>ߙ>ܫ>/>qD>u[>"==)d!=XT=>%>j>Э>${>W>.>b> >IG>L>.~G>>?6?Q?eQ?ba?Eŕ?'zS>6>8>Pl*>.<>W)> >ؖ?k?İ? >X>w>0 =Ow=p5=3m=:K>>w>>/>>>>>#>@Y>~'>-y >>?5?Q ?e6?_X?D?#>w>m>V>0 >\>M>Ow?o?4?>x>q$>@Y=:=}=,=C=?>Pl*>F>">l*>s>q$>gs>$̙> >ٛ>n>!?)?B=?J?Fh?3F>1>>>D>!7>Dn>Q>)t>…?ӝ>x>r>t>+=d=J {<#D<t=d>>a&>m>>>k^>+4>R=a=2>3>x>? ?. ?&> >>">\i>']><>ٛ>Y<>>>X>D>>S)> =<:g:D >0>@j>0>=*= =M=>{>DU>>>>X>>q>WOw>)d!> =9=:>x>C(.>nE">}>nE">@>w== :;9g9g:D<=a==2==R=v=Q0=&Tq=8=D>Q>->Z>pI>m…>V>7l >Q>{===OW=Ϩ>=[> =>^>*z=i=o=\i<;3m:D9g9g:g;Ja>'I>)p>q$> ==dB= Z=o=o=o==n===v=S:=<(;?;:g:g:g;g<(T>!{>8qD>;>)d!>Y=0==%`=d!====y =a=p5=0=R&>M\z>q>y=Z>f\>4 >{=s=d==2=ʎ=嘮== ==w=g4>IG>H>L>I>>w>*( =̘=| ===>O>#r>*i\> :==VJ<']>y>>j>G>'>L>T?==k=a=2>>/B3>`~>u(o>eW`>.<=Ɉ<_<;?:D;3m;?>>>>ߙ>R>Y>h%>v>=a=3m=><>P*>*z>>=>`> =)d!;:D9g:g;i2Q>+>mP>d>ޔ>a>">`=:=2=7X==/> >Sx>o>a>m>m…>=;D:9g9g9g:D;J<==R5Q=qp=zG=p5=T?=K={=ʎ><>Z>C>'> >>>6l=<m0 >td>4>">Q0=m=:g9g9g9g:g;3m>Uǟ>:*>> >I@==_yN)">DU>=J>O=<R9g9g9g:g;t<== := :=R< f<= 5=T=%>d>q$>-'=a=R=g;;g<#D<==ѳ=J=2=VJ<<;D9g9g9g:g;d>ٛ>d==Y>8>L> ===T=h_=y >>S)>O>>>`> ==qp< =9g9g<= =C=C=c<ѳ:D9g:D<= :=/>`>M+>h%>h%>N f>"#==ȃ=OW> )>Z>> >V>܊>d>k^=<*:g;!=(^=I=n=?=x =R;i9g9g;JT>G~h>>8>>~>L>GM=p=d>/>>F?k?? >0>>=;D<d>_>d>>>Q>^t> =>k>I@>r>g?]?#4m?>>>M>/B3={ )>XT>>b>>q>T?>= =yn>A>f>? ??|>L>>']=T< f===dB==Ow=51== <:C9g;n1>m…>aS>">e>+=:=?=> v_>I>`N>r>NQ>%>>">Y=Z_(<t<*=K==n===/=0<:D:C;m*>C(.>@> = =T=c=Z_(=>C>)3>d!>>i\>#>>OW=0=c >?C>gs>u[>gs>>> =<_;?:D;!=c==5=/=g=;Dd>!7>*>%>-'==xV>s>">/>1L>%> =/=0)p>J>V>Jg>*> =:=o=̘> )>*>S:>u[>q>I>o >F|><==Q0<=p5=ʎ>>GM>ٛ>Y=0=Z_(<ѳ;n;g==>%?>HBT>>>>U> >P*>~'=_H> O>4\Y>u[>>a>>>L>1>f\>#=07==…>>Q>| >>u(o>9v==m< <==T>-y >p>2>4 >L>l>v>>C(.>u>%>m…>R?@?2??4?<~?,>L>)T>l{>.<>~'>)">h%>%`>> >ď_>F>Rv>޵= :=XT=n>@>F|>V>א?]?(? >>>k>+4>?C>m>/?4?P?eQ?c/?H2?,>Ӝ>X>^t>@~>]'>>Ѳ?v?]? T>2>C>;?=5==>T>G=>.>L?3??է>g>d>v>4>Jg>? ?C?g?zB?u[?]?7>>>,>u[>W>~2><> ?#^?,?*?U>>h_>=U==E>.<>C>Y?)?s? =>,C>zS>h%>, >F|>P|? D?C?g3?y-?tt?ZN?5>>>>x>XT>w> >?'?.B?+Ѝ? O>ê>u(o>ٛ=@=Q0=> >w>>>>>A.>>t>C(.>M>0>>R%?4l?Na?c4?\?Dn?%{>>>c9>AV>kv>q$>?H?# ?4>>> >]'>d=n<<5Q=M>%>>i\>qD>7>>P*> :>޵>>W>?@?1?:?5? U>N1>,>w>>> >;>66>Ѝ>Ow>V>Bu>U>I>+4=yN=C;g;g<=y >/>W>nE">^t>/> =T=Y=i>ٛ>k^>)T>>>܊>>V>q!>;>a>>d>4 >qT>>>>r\>.<==g<=:C9g:g<t=x =ȃ==5Q= Z=={=YY=I=a>ٛ>S)>>>)3>y>S{>)p>c=[=yN=*>*z>L>+4>1F>%>d= =t=c;?:t9g9g:g<R<=== x= =ga>;>Q0>R>@Y> >=9=%=%=ҷ=yN=:=O=9=@=y ==I@< f;!;?:t:D;g<<<= ѳ=c=< f8>G~h>a&>dR%>P*>(>,=Σ=s= f===07=07=:= Z=%?=C=R<{>@Y>y>(>S >>`>q$=;=T= {=a>>w>>d== Z=8<_(!7>u[>s>>dB>>է>T?>= =51=>d>,2>M+>Y>C>2b=<_<T>I@>>Э>x>>t>@>66>===t>f>_7>>u>>cL> =22w>]u>)T>2??)>8 >w>>)"=*===yN>, >g>:K>[>g>d>7l ==<;#D:g:g;!<m=f=5==51=~G=d=f=]n=n> I>U>>ٻ?;?{y>>̘>>!7=n==*>-[>>>>7>>DU=:K;?:g9g9g:D<'Y= =rܫ=a==/=R=a=UE=d=07>->o>>/>>t>>u(o> )=%?=XT=>x>o >Q>>q$>q>+=x ;dt9g9g:g<(<m=C=qp={=o=R5Q=: =J {=/=!>::k>>]>{>Ѝ>>.~G=U=C==h_=y->&>i>޵>zG>C= =Y=:D9g:C;ng=07=n=B<}:D9g9g:t<#Dw>==n=M=| =w=I>V>2>p>k>u[>6%==%O6;3m9g9g;n >@Y>]n>]u>B">M=O=n= =>@~>S >>a>V>C>?T=̙?C>z> >x>y>F7>=07=嘮>>{>j>J]?,>>>ȤJ>k==;<ѳ=a==@=y-=?=R5Q<:g9g9g:g{y>[>x>V>rj>?e>\i>L=Z=yn>2>> ???>>>=R5Q<\i<_=T=OW=J<=ӽ)=51=g=R;?9g9g:<t==,>v>>XT>` >>a>>T?>-'=ӽ)=&>->>>?)>RF>l*><>-'=qp4\Y>qp>>f>i>-y ===D>>rZ>>U>Bu>`n>>g$>T=T?<tV>/B3>KS>F|>%=07=x <5= 5=ʎ>.~G> >>Tq>>| >*==*'I>Q>`>T?>+n=~=x=<;D;g;?<*=S:=:*=a=/=K<;g9g9g9g;dt'>L>~'>=Эy=<<;;g<=-y =zG=%?=rܫ= 5<ѳ;3m9g9g:g;i<*=^t= E===_H=J<=~G=^t=c=*i\=5=> ?e>:> v_>$>`>޵=*=8<;J<'Y====:K==*i\<;t::g{>1L>Y<>hg>]'>;?>=E==/>{>!{>F7>k5r>rJ>Y>h_>@>-'==x = 5=k=J= >>s>=@=h_ >Q>d>Tq>>>>`>=>{y>0Gn>p>*>,">>>2>>gs>)d!>Q=5Q=yn>8>P*>|M >>u[>=̹>޵=s=K=(^==_H>5 E>>>D>>1~> >>S)>ٛ>&Tq>k5r>>=?1?>??=Zo?/1>)>d!>u[>;D>>.<>k5r>V>8>Ӝ>!>>]n>O=n=t= f> >Q0>7> ?Z?? >>h>y>1>@>>?2b7?M+?e&e?d!*?I?0s>>;>m…>J>a&>>?/?L? ƚ>>>K> I=ʎ=E> >Q0>>^??$)T?C>>`N>g>=̹>P*>U?+?Ao[?f ?x ?u˴?_h?;O>W>>">`>>>?&"?.,?+=? >>u[> ==J=>2>f>? Z??1>ط>>u(o>2>M>P|?,?A_?e?w?t3?[ ?8@>G>>,>_>|>>?)?/?,?ۅ>L>>'I=嘮= =>>z3>>g>>q>>XD>N> >8/>>?21uY>>i>F7>m…>Z>??&ƺ?3>G>>j>=y-= =c=> >:*>y >D>L><>\(O> > >`>^t>g>=?/)?96?5Q@?">&>zS>y=Z>;D>!:K>?/>޵><>>4+>>>>4=p=rܫ;;<\i=^>>Z>u(o>g$><0>i;=07=E=>&>n>r>;p>M>2>~>C>oJ]>3ټ>>*z>-'>>OW>w>S >>+>|M >7X>޵=x<t:g9g:C{>&>Y>@>>t>}RF>S)>%O6>v>=嘮==i>^>$̙>::k>@Y>/B3>B=:==;D:D:g:g;#D/>%O6>H>^2>]'>F|>$̙>*z=t=ʎ=%=yN=>k>v>>T==̹=x=8+>WOw>o>rZ>\>0> ?e=J<=ȃ=5Q==!>>V=?=y-=x=I@<<=<#D;!<(Y>N f>I>a>\9>>l{>'I===Эy=:>{y>~'>k>`>{y=s=K+>>>ŵA>;p>>|>^t><==y-=Z>~'>;>`~>nE">Y<>!7=51=g<=<;3m;n<t=C=x=/=ʎ=ʎ===WOw=)d!=>{>Q>F>l*>>>2>>>U>"#=U= =p>)p>u >a>>6V>y>=`~^>fL>>%? j??¦>z>+>0 =ʎ=D=O>A>>>>>&>N f=y I>\>Ѝ>%? >??9>_(>&>-=s==>DU>X>>>{>P|>^t=n2Q>X>Σ>˴?F>>H>+>a==g=>)d!>P\>{>>y>-'>C(.=*;J9g9g:gM>>9%>˓S>>b>F7=L=g=DU= =:>C(.>aS>E>I>`=:>q=:D9g:g.~G>rZ>f>u >@Y>/=O6=0<>-7>!7=07=: ;9g9g:D<'Y<<ܫ/>+=yN=O6=M+R>%>7>&== B>1F>4 >>{= {=D=t=>>WOw>>%`>c>[db>k=A;g9g:g>W)>u[>u[>Zv>)p>{=ȃ=51=~>@>է>>W?>>>::k=<:C;?=c==:K== =0<:g9g9g;i951>wt4>=>D>v->@> TP==> O>`>>Эy>0>:>>[#==c;;?>w>D>?e>u(o>;?>Q==>>_7>>G>4 >>?>V= =3m8>Y>u >s>Rv>=OW=^t=YY=><~>?e>>>>>1L=ʎ=-y <ѳ>7*>2Q>~'==: <<=g> >J>z3>>z3>I@> ===<=< ={> v_>-y >#D> =dB=u[=*z== f== :<<;n!7>HBT>W)>KS>)d!>= =Z_(={=> >!:K>;?>P*>Sx>@>q$=~=~G=a= :==| ===a=y-==,s<5Q<<=x =n=>>>V>w>̙>8>{y>M>w=y-=i>>L>>g>>>>>M\z>==n=*>q>+n>T?>c9>N>q$=9=x=_yN=P*=m=07>%>|M >>>Y>=>> >@~> I>-'>L>> {? x?-[?.?~'>:>>gs>-><>L>I@>>5>qD>y >ѳ>AV>=/==:>{y>?/>-'>&>?>B>F>>eW`> 5>*>{G>?h?;`N?I?I,?>\?Ȥ>@>>_yN>:X>G>K!> >L>>>>>951>{=ʎ=O>>=̹>>?N?i;?4>'>>pO>)d!>;>TP>:?.,?IG?bڠ?af?HE?19>U>u[>M\z>d>;>ض? ?x?+>p?>>`=:>B=a=n=魚> v_>>@>=?4>m>Ow>>`=:>%>;>.n>?.,?H?`?]"?G ?/8>>q$>rZ>IG>g$>KB>N1?ۅ?$?V[>8 >L>i>ٛ===?=嘮>UE>>K>>א>c>>@Y>Q>+>w>Kb?E?: p?F(?EV>>S)>.~G>NR>>>^? ?>܊E>q$>Q0>w=/=t=%O6=a>*z>h%>>Y>>>H>> )>>LW?>E>? 9?)?%1> >U>>Z> >d>&>g$>}>Y> >I>>u[>!=5Q=]n;J;!<;D=J {>Q>8/>T>KR>)p> I==i>\>"#>Y<>>=>>`>>I>>L><==>>)p>^t>I>>H>_>!7=yN=Q0>!7>F7>k^>0>y>_>2Q> I= f==Y= > >>+-H>-[> v_>==ev>> v_>>OW>N f>KS>3>-'=a=2==2=̘=?>{>g=Z=*=Tq=^t#D>KS>b>cψ>M>%==/=s==+==t4=G==J=T=cg>@>w>>>Ȅ>Y>=E===d=>^>İ>7>{=51=,sf>n>*>;>~>>8>F|===2=>w>0>WOw>dR%>P*>==>>>x>>N1>>u >-'=2==O>!{>lJ>'>>S >n>=Z_(N>7>Y?;q? >G>W?>)3>===>;?>)3>p>>>l>A=?<=:D9g9g;<=a==n====22==n=:>D>5>?? >P>a>.n>%`====E>@>m><>>>\9>T?=51<:g9g:C;!== =n= =I==-y = ѳ=?/=Y>!:K>` >s>臸>(o>M>>u(o> ==qp=>%>;q>ݏ><>>8>;?=>>S >>V>L>>7*=O=zG=(^=i=*>@>rJ>>v>>XT>=;g9g:g']>e>{m>h%>2ԁ>=5=&Tq<N>)p>q$==C;?9g9g:DQ==:=5=C<t;;;J>%>7X>&=2=/~'>3>8/>!:K>{==t=rܫ==07>22>s_H>k>ui>5 E=a=0;n:C:\>::k>Z_(>\(O>@>-'=ҷ==t!= %>Y>Y>t>V>>Z> )=<t;3m;m >@Y>^2>]'>@Y>d=~=t!=5=i;>^>Y>#>>>Y>w=<<(;!#D>@>?/> v_=9=| =g<=M+=5>6l>k5r>{m>k5r>4\Y= =:*=g<\i< =w> =n={R>'I>4 >'I>==\i<ܫ{>k>'>>f==Q0{>Y>d>R=;=:K=h_=!:K<_<ѳ<=c=C=Q0=3m=(<<<t<>P*>x>k>\>UP>V=ȃ=a=T=yN>GM>>>j#>4>Q>x>KR>=Z=?====嘮>d>>= =5=XT=8=: ==n> >HBT>o>̙>Gn>>nv>Z>O=Y=0>>XT>>v>>r>W?>r>xyn>;>d=yn=>s>C(.>x>>rJ>M+>2b=ȃ==/= E=>&>gs>>C>U>,">>@>-y =!>>A>Q>)t?,?+ ?-V?>܊>7>u >4>GM>%`>F7>Z>>o>F(>a>V>i;=@=n=J=嘮>GM>i>,>a>X>F>;>?e>;?> >>\i>>?'?7|]?:*?/B3>>@>>KR>%>.~G>k5r>7>a>9>ۅ >> >+4=:=51==ȃ>\>KR>w>>>,">>rJ>0>w>M>]'>>܊?&?6?7l ?,>> Z>E>C>!:K>0>rZ>> >>hW>~> >0=Z=2=x ==/>>u(o>/><>Y>>U>q$> ѳ>B>I>d>?66?%_?&? >>V>`~>%>d>>[db> >>P>,">>td>L=*=:*== :=C=/> >a> >u[>P*>!>v>=>w>.<>j>+>~>֬3>:>qD>u>c >L=[=9>>.>q>>5>|>>3=5=g= :<<;D ?e>f>>=07=ȃ=ʎ=Z>>;?>e>>c> >u >C(.>d===n=>w>->NR>[#>L>%O6=O=<t;J:g:D;dt;i<=| ==*==x=| =R==~>~'>*>@Y>HBT>@>%>{==_yN=@j=g==>v>>d>w==n=qp<:D9g9g:g;m<<<ܫ=(^=J {=?/=(^=c=c=qp=OW=t4>d> 5>)d!>%>i;=a==I@=-y =p5=?=ȃ=yN=n==?=]n<;n:g9g:g; >)d!>=̹>;>'I> =n==YY=w= %==ʎ==OW==*i\ٛ>KS>k^>q>Y܊>,s==#=rܫ=| =5==07>V=m=O=<_;:D:g:g;?<==a===t= =C>>>>KB>>a&>==x =x =5= >x>0 >>>*>V=D<;3m:g9g;dt>gs>5>T>>%>>;?= =g=i=>>C>y=Z>H>|M >Ci}=07=,s;J:g9g:g;!<5=Q0==n=n=TP=I@<_<= = Z>8>;q>@>>a>Эy> >S)=~==[db=I>&>n>>q$>>y>=| <\i:g9g9g:t<}='Y=g=:K=D==C<<}=g=>>> >>>[3>9>U=Z=| =;D=/>>u[>C>">P|>+>*=d<}:g9g9g:g;n< f=Q0===T=3mQ>Xc>>>>~>է>7=:=VJ<= ѳ=rܫ> I>\>t>M>>rZ>B=t!<'Y:g9g9g;i<ܫ=C=f=VJ<=<<< =~'>k^>a>q$>i;>]n>d== :<t=R= >q$>Y>s_H>f\>.~G= {=g;g9g:g;J ?e>1L>F7>2ԁ>d=ȃ=a>*z==t;9g:g;g=Z=/=L )>"===x=Ci;> v_>~'=07=<;:D;t!;!<t=g== 5=Rd>i;===p5= ~'>#r>GM=_H==>w>޵=̘==N<};t;;?<===f=R=R=a=;i:g9g9g:C:g:tw>)>2ԁ>&Tq> =~=-y V>-'>"?>']>>T=dB=ѳ=rܫ=C=c=c=DU=====x ='Y<_<*<_=;D=w=/> )>>>gs>xyn>l>@> TP=?=(^=R5Q= f>>=J>j07>>>>Y>'>T=Σ=2=5=*=5>~'>#D>ٛ>{=~=rܫ=0=(^=n==O>>Zv>>> >l:>(=i==n> I>@Y>u[>}>l >L>,>X>fL>)d!>/==yN>k>+>[#>u >k5r>>> ==t!=\i={=:K=>ٛ>\>)3>> >u[>3W=2=~=d> %>[>>Gn>{>D>̘>Y>,>@>=Z>Q>>R>q>>>l>']=u=:*=rܫ=g$=:*=>>AV>|M >t>>dR%>*( >{=d=:>!{>`~>>Gn> >܊>ŵA>7>y>5a>=> >!7>]'>>;>>u[>,2= ==`~=0=Q0==͝>GM>IG>f\>^t>>>u=!==ܫ>/>S{>@>f>>>7>>Jg>==J<=Z>>KR>|M >)3>p>[>&=/=Q0=(^<_==&Tq=g=d>>'I>%>s=t4===>-'>;?>`> >>+>m…>=J> ?e==t=̙=ʎ>f>%>Jg>Z>KS>"#==p5<<<'Y<V>%`>3ټ>Dn>G=>8>=?==(^==^t=D=O>>2b>~'>v>=̘={v>=E=/=c==~=,=<= > =5=/=qp<<^>!7>']>GM=ܫ=D=;D<*,s>Sx>[>@j>~'=Ϩ>=w= ѳ<5Q=c==Ϩ>>>^>V=J=0;:C9g9g:tİ>\i>>>z3>8qD=yn== 5<_==n>^>4>G=>7>^=)p>~2>>#>1>WOw>{y==&Tq<*==̘>)p>`~>u[>gs>1=t=0;J:C9g9g:D< =)"> >KB>>>Zv>=a=<ѳ=g=0>0>k^>66>u >@=5=K<:g9g9g:g;#D>Zv>> >\>;D==x >Sx>k>^2>*=*=;?9g9g9g:t<;D>J {>XT>>>=/='Y;!:D;?=!:K=d>&>->!7== <ѳ:D9g9g:D;i/=?= E=[db >-'> ===R<_;+>~'>%>&Tq>~'=T==/=| =YY=-y =,s=zG=y =y-=?==;D<<#D<#D<=g=XT=>f>q$>*> v_>q==H<=(=> =>)d!>HBT>bM>gs>R5Q>(5>\=n==t===*>k>d> I===(^<ѳ> 5>.<>'I>d=5Q=%?=&Tq=h_=yN>>DU>hg>,>>rZ>C>:=a====>k>q$>+>$̙> )=_=K>!7>/> I=:==h_==>)p>Pl*>nE">>>k5r>>OW>w=:=/== E=i>>)d!>7l >,2>d==C<Q>">Y=d=n=d=| == >(>J {>^>ga>\>@j>==#=x===> >q$>)d!>/>== :ٛ>2ԁ>@>>>*>=̘==J {=?/=p5==n=?>4> TP==n=qp<<4>İ>>==J=`~=x>&>==,= :<;;n< {=a=>{=…==(^<g:g9g9g:g;g;!<}<<*<^>->4\Y>==x='Y<=;;=R=>d>k>s=t=T<;3m9g9g9g:D;n<;D<ѳ>1 Z>::k>=_=^= x>&Tq> %=_H==<;t!9g9g9g:g:D;<>k>!7>w=Ɉ=f<t;n:D:<=o>>x>Y=5Q=h_<:9g9g9g:g:D;t!;;dt:D:g9g9g:g<==0=>Q=d=nv=R;?:g9g:g;i=)d!==Σ=n= <ܫ;?:C9g9g9g9g:g:g:g:C9g9g:g<'Y=(^=^==~G=R= :<(:g9g9g9g:C;?< f=t=cv>>İ>ٛ>-'==?=T=[db=J {=(^= :=(^=x =D=51=2=/=;J9g9g;g;?<=22==~h=E=ȃ= %=3m<ѳ;J>>0>4>)p>d=Ow==,=w=\i=L=qp==ʎ==:=n=Kw>+4>>>@~>->=J<===| =o=rܫ==*=܊==yN==a<:;3m">*>8qD>2ԁ> v_>{===s=^t=WOw=qp=x==Ϩ>=܊==̙=Q0<t;;J/>>%O6>>v>==R=T?=,s= :==C=| ====5=w= :<;J</> ==s=T=*i\= => ==̘=i;=B=d>$̙>&">~'=Z==x =?/=< =g=&Tq=h_=x= %=^=VJ<<:9g9g:g:D;iٛ>/B3>0> 5>g=dB=D=_yN=3m== :=C=T==n=?=m= ;!:g:g;=;i<}`>,2>,2>ٛ=m==x=h_=1== :=K=,=M=̙=5=T= 5<ѳ;;<<}<==C=u[=g=u[=/">ٛ>> =i=n=g=DU= <_=g=,s=qp=*z== =_yN=<{=~=*=={=C=R<> I> =a==h_=g<;D;?O>0>?C>->'=Ow===t<+n>WOw>gs>W)>,o>=y =Q0< <_(=(^={=̙==T==+n<;g:C9g:g:g;?2Q>`=:>rZ>a&>::k>^=n=| =,s= :=Q0=(=̹=yN==== :<=;:;g;m(>N>\i>N>-> =ȃ==J {=*i\=T?== E=E==0=D=_yN=<=;!<'YN>->3ټ>)p>=T==~2=,s==0=qp====/=s=rܫ=* >w>f= ==g=0<*<t<5Q=(^=s===t===L=(<<=<;D^>f>ٛ> ====']>W)>n>cL>>>^=D=B<< f=I@=a=/==M=;!:g9g9g9g9g:D>=嘮=i\=]n=)d!=J {=| =>GM>a&>w>>V>Y>5=07=m=c=0==͝>>> =0=F-'>ٛ>Y=E==Z_(=R5Q={= f>.<>I>p>> E>+>]'>=?=Z_(=T=>޵>$>@j>C(.>!{=E=?/<;D:D;!;!`>%>GM=T=n=_yN=0=J {=ȃ>0>U>>L>`N>>g$>İ=Y===5=5Q>>1F>WOw>^>@>^=n=3m<d>>===?/=g=R=> 5>s>>>>)3>S)>-'==*=?=>>&>F|>Q>;>-'=ʎ=T=)d!=m=͝=/=>@Y>t!>q>rJ>Z>+=2=2====n> >>'I>>k=n=R=C=<5Q<=c=C===:=̘==3mc>*>8/>.~G>>Q=51=w=*i\=)d!=p5=?==07=m=!=͝==_yN="?==?=XT<>q==ѳ<t:g:g:D;;t<<(;i;3m:g9g9g:C;3m;J<g;n:g9g;m==rܫ=o=>^>L>> ==X=R;;#D;?> v_>/> = E=;J;?{>> = =:*{>>B> )=Ow=g>=9== :< f=c=_yN==&>k>KS>f\>cL>Es>=ȃ=3m<= = =?=E=E==0;!:g9g9g9g9g;dt=c=>+>>> =ʎ=| =K=w=/=:>!7>m…>>+>Tq>>S)> ===/=u[=j>Q>>%O6>`==S:/>Dn>N f>22> I=OW=O==>v>>V>>@>>a>>3>,2===*=m>']>V>vG>y>S)> =t!<;?:t;?>i>u(o>^2>)p=?=y =/=_>2b>u[>v>)? K? >/>̙>Q0=n==>~'>KR>+>>q$>>T?=!=^t< f<;DAV>td>rJ>lJ>::k>޵===>'>z>$:>G??1>lK>>\i> ==d=~> %>V>>3>y>8>u[>M=2=VJ<= =-y ==J {=:>+-H>^t>nE">[>-y ==?=VJ<=p5=[>]'>^>>>[>A >>L> =~=Z>2b>C(.>|>>D>>nq>=%==\i=C='Y=(^=d>f>+4>?/>0>-'=?={=R= :=>)p>I>>u9>u>>nq>'I=Z=@=*>T>k>O%>z3>/>u[>C(.>^=ʎ=t=t!=!:K=c==I@=~G=yn>Y> = ==<(<*=rܫ=!>0>h%>>xyn>U>%== =:*==Y=?>O>)>6>+>i;=a=̙=w=J {>M>B>=d==3m< ==M+===yN===n=x=?/= =<>i;>T=y <ܫ::g:g:D;< =@>&">B">G~h>/B3>*z=T<:D;3m;J<}<<_L>F7>eW`>i>Q>=~G<t;< =<<m=$I=M+=]n=3m<*;n9g9g:t;!>I,>gs>l:>T?>f=o<< = )>.<>KS>P*>4>/=u[{>~'>GM>%?=<;n;g;J~'>-7>22>#D>\=<_,>7>~'>޵= =Q0= ѳ=%O6=x =y >>7*>qp>>>u[>?C>T=qp==p5=/=yn>w>>V==;i:D:g9g:D<#D=T?=~>>@j>F7>,2>==T==2=d>;>Q>2>Эy>qe>>>*=@=/= E>T>%>M+>dt>_>22=9=0<;:t< =<*=d>^>Q0>| >g>l>2ԁ====:>L>y>>8 ?;?>>>cL>=Ɉ=!> >^t>t>Z>>>Y=O=Q0'Y>u[>>>O>a&> :=:=:k=a>-> >-? ?1?1uY>>=>>>OW> >>ê>>>N>7==C<=M+=a=Y>+4>~2>>f>>q>%=yN==Ϩ>>->C>L?' ?2b7?2b7?%,>>>(>>7>AV>{y>d>FH>uY> {>̙>]u= =5=a=={=D>>e>x>l>>`~>k=%=:*=#>>>R??*y?*? >">>#D>:*>d>/>x>,>ê>+>> >YY> ==s==rܫ=rܫ=5Q>+n>`=:>rZ>a&>6%>v>=n=C=Z_(=>S)>7>>!>${>,">W>N>d=t4=>~'>DU>>{>>>|>2Q==Y=t=^t=: ='Y=dt=T>>'I>!:K> )=~h=_yN<ܫ==>>]n>m>>KB>4>M>-'==/=D=*>d>7l >ba>u(o>cL>4> =ʎ==| <5<<<=h_=X=t===u[=g<<*=: => >*( >@~>7>k>T=51=| =,s=C=d=y-=:> >u>d===qp=*=c;t!;3m;<;DB>3>>OW>'I=m=x < =:D:g:t;J<>T?>u[>}RF>gs>0Gn=E<5;t!;<'Y< f=(^=j=| =VJ<=,;?9g9g;<==!:K=g=̹>v->TP>m> >U>=-y ;i<<=)d!== Z==y =w<*:D9g9g:D{>@>z>>>>WOw>{y=-y <(%>^t>>>q!>9v=!7>C(.>Jg>1L>޵=e;i:D;-'>.<>;?>*i\>v>=><>B>*z=OW=UE<==Q0= :=?>.~G>r\>>nv>>L> =R=3m=:*=Σ>/>>>=T=^t<ѳ;m:D:g;dt)p>P*>W)>;>w=/=| =| == >2ԁ>#>>>r>ǟ>u>>=9==ʎ> TP>51>dR%>0>\>W>=O=gas>e>:*>>>HBT>{y==n=@>>xyn>?)?*?+?H>Ԣ>\>'=i>޵>->t>|>d>l>Tq>Y>a==R<= :=Z_(=J<>>>>f>>g>u[>'I=yN=51=yN>+4><>臸?+Ѝ?5Q@?5?-V>>>>'I>޵>7>L>>>`n>>>]>^t=d== 5=x =R=9>C(.>>ݏ>>L>g>51=?= Z=d>.>>>?.ML?6?7;?/B3>8 >F>6%>>>P*>է>>0>lK>>l>@>s=?=g===>)p>z3>a>L>S >u(o>+n==^= Z>>8>ۅ ??0?0_?x>ض>t>-> >>;?>>>`n>>><>x>=5Q====^=yn>@Y>u(o>|>u >F|>d==M+=rܫ=m>`=:>>,C??> >>_>==>>W)>S >Gn>>&> >L> = {=:K=x =]n=;D={=?> >3>+4>i;=%=h_=g= =?>&>nE">><>2>u>a&>ٛ=t== =?>a>L>|M >{y>rJ>N>7=d=%`=,= <<< {=Q0=2=i===rܫ=g<< f=,s=/>d>951>Rv>KS>+n>v>==T=-y =C=t=̘>{>M>'I>>==w= :=;;;t!;?<ѳ==h_=p5=1<*<==07=5<_;g:g9g:g;?q>={<(<< {=R5Q=y =T=07=O=o=3m;i9g:g<'Y==;D=C=t >S)>>>P|>>u(o>q$=| < =<;D<ܫ=s==p>{=t4==t!<}9g9g;3ټ>u[>>>>WOw>{y=(^;;!<=R5Q=2==~==dB=m…<}9g9g:g;i{>6f>^t>g$>P*>M=k><=O=<9g9g:g;i<=0=f=^t=t>!{>İ=07=x +>/===!:Kw>KR>}RF>>ui>=̹=[=w=*i\=x =51=T>w>-'> =˓S=_yN<;J:t:g;<'Y=A=:>ٛ>?C>C>*>=s=;D='Y=_yN=i\>>i>>΂\>)>><>0=5Q=s=/=m>'I>T?>q>q!>L>w=M= :<=;i<ѳ=,=*>-'>W)>66>>td>::k= =t==M=Z>M>Y>ܫ?G?#4m?a>">s> =s=07> 5>a&> >>]>>u[>B=O6=*0> >a>>m>i>=y-==>O>Q>Эy? f ?2b7?2?)>8>c>=>/>9>><>W?>e>=>>Y<==*z=&Tq=p5=g=J<>9>E>>A>W>w2>)p=d==>u>o>?'?3gr?4 ?+~>P>7>&=!> >;>)3>qD>ض>>F>d>zG>nv=={==O=/>!:K>oJ]>w>W>t>g$>=n=p5=d> >{>ǟ? TP?+Ѝ?,%?S >;p>E>/=07=>%>z3>M>W?>c>>>s>==d===:*=嘮>0 >f\>u[>g$>951>===: =T>G=>f>>>>d>>V>P*>R=ʎ=%> >C>)3>>>M><>DU>%?=/=:*=]n=P*=0=XT=*>-'>%>k>g==(^< )>Y>m>I>`->>T?>O=Y=:*=ѳ=ʎ><>@Y>qp>aS>x>I@>d=s==]n<ܫ{>)d!>AV>?> ==Y==̹<*==rܫ=*=> :>&>q$>=*=K<ܫ= =t$̙>G~h>Pl*>: >^= %<}:g:g:g<;D==I@=XT='Y<:D9g9g:g%>g >q>Q>~W>H=m=&Tq;t!;3m<==x =n=51=d!=p5<:g9g:tF|>+>+>>>n>`=x ;J;i<=R5Q==9=[=嘮=*=M+<9g9g;gKR>H>C>k>2b>rZ>f={;?;!R>Q=*=,<t:C9g:D-y >qp>o>>/>V>v>=)d!;g;<ѳ=C==魚>T=i=ȃ={<:g9g;g0 >Z>dt>M>Q={> I=?=a<9g9g:g;m I>5 E>KS>;D>O==<*==u[=̙=ʎ=E=n=?e=<ѳ;?:D9g;g;<ܫ==!>N>GM>=~=VJ<<>r>f>]>>`><=a=C=| =*>>q$>2Q>2Q>=J<=T=c(>R>[db>@j>i;==J {=== :> I>n> >/>J]>>>;=ʎ=| =O6=_H>)p>f\>Q>>\>A===<t<==s>d>Q0>}RF>I>qp>9=~=:*=0=Q0=>-y >V>M??6V> >>a&= =Y=T> >M>z2>R>>Y>>/B3=E=f= x=0=Q0=n>N>Z>I>Q>~W>H> =t=,s=Z_(=E>A> >e?C?3?F>>i=yn=x=/> >V>>>L>>b>O>>=d=?/=T?=a=>{>@>o>}RF>k5r>8/==<=t=n>4>+>> ?b>޵b>̙>N=嘮==̙=[>>>j>M>X>7>>H>V= %=S:=K=Q0=Q0=i\>>2ԁ>Dn>6>=OW='Y<;D<===>-'>q>̙>>L>>z3>q$= E=T?=qp=Y><>\>o>>">nE">%==g=: ==N=g=g=T=Ѳ=Z=…==K<ѳ;;?=c=_>!{>`>g>|>`>$̙==[dbM>D>[>Q>)d!=== 5=<}>İ>~'>Q==T?<;<(=,==5Q> =>:>"= =x=, >%>,2>==_yN<:g9g9g;i TP>B>i>r>Z>&=ȃ<:D:g;g<=C=ѳ=:K=ѳ=?/%>gs>H>I>T>K>=&Tq;#D;g<;D= :===T==/= 5;9g9g;<=3m=h_=f=-y <;=:g:D==>'I>k^>o>>|>P*>=(^:t;dt'>N>u[>\>i>1L=E< {:g:D<R= x=d=ʎ=9=J<=y =DUs>7l >@>*=m=t!;9g9g;g޵>2>KS>::k> =^>-'>V=/=N f*z>Q>>V>>C(.=a=;D>%>1L> >T= =\i<_(<;D<c>->7>#D===R<'Y<=0=Ɉ>+4>?e>d>> >oJ]> ?e=XT<==:*=>+>fL>z3>gs>2ԁ>V=:K='Y<>7X>C(.>.~G> ==̙=<(A>XD>'>L>>u ><=R5Q<}=R=%?=?>>>}>>g>T?>=_=C<_<_= =3m=/>>!{>-> 5=G=x<;3m;=3m=Ow>4>4>̙>>S >T=Z=1-y >m…>>y>M>-'=?=;D<_({=J]==,s<'Y:g:g<=̙>-'>S:>~W>66>]u>%`=~d>@Y>XO>Pl*>*=~=x=R^>'I>)d!>i;=͝=K>!7>>==%O6 >'I>->M==^t<9g9g:g;i<*=+n=L=+n<;n9g9g:D']>L>T?>>>d=*( >Pl*>Y>AV>-'=<;D:g:g;dt<t=DU=t==D=qp>1F>=J>']=G=lJ;g9g9g:D<;D== =s=x=VJ<<:9g:g;dt<=%= = =5=,;m:D:t;<#D<=[db==:K==h_=N<=;m;J/>/>=J<=*i\;i:D:t;<=T?=n=[==O=n=^t<ܫ4>-y >>>$̙==C;J:g:g;3m<==t4>x>~'>g==~2=gV> >(>-'=ʎ=*i\;:g:C:g<==>>B>f=s=qp>= =a< f;#D:g9g:g<=x=嘮> > ==嘮=?=!:K<'Y;:t;g;n;=;g;t!;;?;3m:C9g9g;<m=w=#=s== :<g:g9g9g:g<=qp==t==m=R5Q=i=<(:g9g9g9g;#D==C;i9g9g9g:g;?<t<_< f> >==< f;;#D;n</<'Y;:g9g9g:g;<ѳ=0===={=c-'>?C>XT>M> 5==*< =:;t!<+n v_>S:>n>a&>.~G=a=)d!;?:g:t<;D>@>Y<>N> v_=ȃ=g;g9g:D<'Y>']>f==<ѳ:g9g:g;!<,>i;>i;>=:=<*;#D:C:g;dt^>0>C>>>"#>*z=J=3m<:D:g;= =R=?=== 5;?9g9g9g:D޵=~=:=Tq=S:<_<=T=嘮>&Tq>T?>hg>\>9>=E=t!====_yN=g==,=?>)">W>l:>^t>;?>==T<_<;?<=`~==ȃ==VJ<<'Y9g9g9g:g<;D=M+== =Z==s=s=C<*< f=M+=>2b>::k>IG>>OW>s>{==p5<_<'Y<(<=3m==t=x =R;dt9g9g9g;=== Z=D=2=a=c9=c<=<\i<=qp=͝>v>>d>v>=07=U=d=,s<;i;?<'Y<==<*<g:g9g9g:C<==I@=YY=I@=(^= <GM>)d!> v_===;n:g;3m;i;!;:D9g9g:g;i===yN==5=s=T=<951>x>O>k>S)> ==x <}:t; >M>GM>޵=Y=a=R== >%O6>w>>,>i\>)3>5 E=%<;g;!<=<<;g9g9g:D<;D===a>s>%>"#>d=d=*z=3m=J {=E>7>o>~G>>qD>>J= { I>>>R==m=;D=^t=Σ>->>̙>>Ѝ>ѳ>951= Z-'>Q0>/>>>^>O=p5;?:D;?Q>>OW>M\z>@Y>=U=t;:g;#D>w>f=;=a=;:C:g;i<='Y=L=A= <};:g9g9g;3m )>#^>4>5 E>%> TP==-y <g:D;?=g= ==?==&Tq;!9g9g:C;t!<}=;D=>>> >=d==p5='Y=_yN=J>d>C>w>?e>>i>::k> ==<*;m/>^>T=2=;3m9g9g:t >G=>T?>@>`===K=:*=E">8/>E>I>>w>m0>l:>']==_yNi;>6l>HBT>2ԁ>v>=0>bM>t#4>]u>-[>g=m==n>{y>WOw>f>>/>c>>R>?C>4=='Y=N f=>.<>fL>y>cL>%=-y >`=:>qp>\>->==x=n>/>Y<>7>=>g>z>d>H>A>^=2=^t=T= >6%>nE">{>m6>+4=ʎ<:g:g:g;===ʎ>>@Y>O>>@~>M=5==T=R=>;?>> >ȤJ>a>\9>nq>0 >/==_yN=w= >q$>Jg>\>C>d=/<ѳ:g9g9g:g<t=a=p>s>>-'= =T==?/=-y =d>>Sx>:*>l>>f>4>2b=yN=i;=*i\=-y =t=>Y>-'>==;n9g9g9g;g=(=c=Y=ȃ=/==w=4<m<=R===>!7>.>'Y>-'>{=d==C<*<==f===]n=<'Y:D9g9g;<===<=g=g< I>d>Q=*=*i\;J:D:g;g<=3m=R==T= ;J:D:g9g9g:g;dt<(<<<>0>7l >$J==m<(:g:g;n=c==a===?=g;9g9g9g:g;3m< =<V>)d!>F|>L>3W> TP=Y< =9g:C;i=C=ʎ> >>d==[db;i9g9g9g9g:D;<R >;>@Y>']==a;g9g9g;=0= {> >&>-'=_=t!<9g9g9g9g:g:D;n>==s>T==3m;9g9g9g:g;D<ѳ<m= :==<*<%>_>~2>p>9=07=]n<:C:D;<;D v_>1L>.<>İ=嘮=t=R5Q=I@= f>.~G>U>=>L>> >Dn=n< f:D;?<==`>D>]n>Z>@~>-'=͝==>i;>k^><>˓>5>t>>> )=;?$̙>UP>n>k>N>q$=t=n=/>!:K>g>zt>?]>n>>m>GM=3m;!<=0=T===x =t&>H>a&>_7>AV><=0=:K=>`>z>>M> >臸>>`>>=;?<=1====Q0<_<:9g9g:g< =!7>::k>5>%`=…==w=>{>Q0>b>>̘>j>%`>U=:<;\>Q=ӽ)==3m=%O6={= f>as>[>4>>>^t>==`>3ټ>A>4>GM==T?<:g:g;!=g=]n= =,=T?=g<;D:D9g9g;dt Q>^><==OW=K{> >w> =%=x <;g:g;x>)d!>951>::k>)p>^==I@>->4\Y>(>d==~G==2=>&">WOw>>>z2>| >O>B==!:K<=0=>f> :>8>c=%=J {;J:g:g<=c=>&>WOw>I>d>\>S:>&=:==*>ٛ>cψ>%`>>g>D> >O>UP>'==qp=D> >>OW>k^>|M >ga>+=Ϩ>=t;;3m8qD>Z>>r>Y>>@>{=~=yn>;>l>?#4m?2?.Q?v>e>4>::k>޵=n=Z>;>I>,>2>g>"> v_=/<<<=3m=*>H>+>>@>>>V>d=E> >P*>i\?Z?56?C?=f?*H>>ٛ>V>=Z>~'>aBu>8>]>z>̘>>S{= =3m<@Y>S > >-i>v>2b>P*>w=;> >KS>[? ?6F(?C(.?=j?)k>>>[db>>>L>j>#>>D>[3>>_= =^t<ѳ;J<t=̙>q$>x>>5>f>{>1L>==嘮>,2>t>a?)?2ԁ?.]?;q>>` >J>=5>d>P*>>>(>ŵA>>է>@=J<=0<:D;=J {=O>3ټ>k5r>|M >k^>=J>=̘==#>{>c9>R>Y>>>>>">]'>'I>{=ȃ=&>>W>R>-'>>R5Q> =x>/>-'=Z=?==C=*i\= :>Y>Y<>j>W>>u(o>Es>!{>/==== {>4>q$>(>==<ܫ;t!9g9g9g:g<ѳ=<~=g==x =R5Q=<~=!:K<ܫ>&>#r>~'>==̹=d=_yN=P*=qp=====F<ܫ<;D;g9g:C9g:g;{=07=̹=g=)d!==/=-y =!:K=c<>'>->8==D=)d!<=c='Y=Q0=T=:*=T=4(>AV>k5r>u >`>.<==_yN6%>v->>>d>`~>=^ I>*><~>-> =nv(>P*>>5>Y>|>u[>!:K=>P*>g$>\i>, =ӽ) O>F|>f>L>̙>>nE">İ=*z;!<;D=3m=0> >V>p>g$>8/=L=g:D9g9g9g:g;g<#D >Z>f>.n>|M >>== :;g;?==> )>8qD>T?>KS> v_=^>->::k>"?=07=h_{>~'>=t=K;i9g9g9g;gY>&>d=yN===;9g9g9g:g:t;3m:D9g9g:g >>~'>T=OW=T=<~=(^=*>w>NR>>;>'>dR%>^=T<;D9g9g;<=< f<GM>Dn>]u>Z>@Y>=E==> >W>̙>Ѳ>/>z>d>o=07Q>@Y>u >H>P\>nE">;?> =Ϩ>=t>/>>U??~?Z>X>f>"#=B;?<==: =x=?=a=VJ<<;t!9g9g9g<>S)>5>E>w>>KR>=a=2>F7>q$>R%?~? ? :>4+> >7=x k>IG>>>x>w2>@Y> =͝=?>?/>V>?{y?? >9>>*=f$̙>Z>u(o>p>P*>V=0=M=OW>>>>&>z>R%>>66> )=)d!<<ѳ=)d!=====g$=(Q>.~G>+n>i;=ʎ=qp=0==>>>>̙>>3>>951=ȃ<*;n;<=Q0=x=D=M=x =%O6<t;3m9g:D;g<==I@===̘== %=: <>5a>]n>m…>_>8/>=x<>ٛ>%>!:K>==:*<;C:g;3m >>%>(5>8>*z= Z= :;J:D;!='Y=nv===x=-y >>>>v>== ===>ٛ>;>Z>nq>nE">Y܊>4\Y>:*== R> ==n=N;i:D:D<ѳ=4=>>U>>>|>Y>#r==ȃ=> v_>Z>>>ǟ>i}>>Z>K>^= E==J> >.~G>T?>_>I>L=n=&Tq<'Y;?= => =>W)>>u>ȤJ>>f>h%>f=T>d>N>a>z?"?2b7?/$? >7>>L>-'=t4>^>DU>H>>>>g>']==)d!<*=I@=>%`>k>)t>8>S>lK>s>(>@Y>Y>!:K>z3>s?+-H?E?SJ?NW?<~? F>qD>,>?T> 5>?C>K!>>x>>6>Y>66>~'=o=?/=XT=?>">>K>RF? T?>F>>NR>>-y >O>?9z?YI?j(?g0?J}?,o> >i;>WOw>::k>a&>}>ٻ? ?*?>>>>==T=7X=>B>)3>,"> ?>8 >R><>Ci}>-'>*>>J]?:J?YF>>[>?C>h>>ߙ?ۅ?#Y?;>Z>>L=yn=R<=: =Z>e>>>,C>p>>| >(>޵>a>q!>?-?E`N>/>IG>,2>R5Q>w>>? ?v>c>W>4 =;=VJ<<<=>8> >ݏ>Q>>k>=J> ?e=Эy=07>3ټ>C>澑?*i\?3F?/1?4>ŵA>>\(O>)d!>>%>e>M>C>>!>>_>Y=M<:g:D<=>%`>Py>dt>T?>&==OW===i>KR>XD>>FH>Э>Y>H>S)>'> =%=>>M>x>q>y>F|>w== ѳ;D9g9g:D<ܫ=%?=Ɉ=yN==5=,=WOw==t=^=!>.<>\>s>n>R>/B3>u>=J<=OW=OW=:=><>d>f=:==&Tq-'>#D>%>>= =Y=o=̙=D==n=D==f=3m=cٛ>2>7X>&> =5Q=?==5====5=T=,s<5Q<t<=>KS>qp>z3>gs>7>=n===n=y-=&=07=i=m=\i/>KR>o>>>>~W>.<=d=v== Z=魚>>*>4\Y>%==x <<ѳ'I> >>>΂\>3>>[>޵=x =a= E> ?e><~>pO>g>v>C(.=Z=?/>t> >>x>F>y >s_H>^=T=N f=J>u>`>Y>><>w> =| ;J;3m:C:D<<_=DU= = %=5==T=N f=I@=x=!>8qD>>>l>t>>>k^>=p5=C=51>GM>i>S >U>>g>-[=ѳ;m:g9g9g:D<<_(=7X=t!==={=Z_(=O%=T= f>&>e>q$>>1]>`N><>@j=Ѳ=*i\= 5=%`>*z>L>q>S >z2>l>=a;3m9g9g9g:g;n<=c=?/=^t=]n=K=7X=: ==ҷ>L>a>>t>j>UE>=<*< f=VJ<=/>d>D>ba>YY>*=ʎM>)>=T==<< =>8>-'=t===;9g9g:g;;t;n:g9g9g:D<;D=C=̘>d> >q$> )=͝=t=u[=rܫ=>2b>Y>>>:>gs>c=x <'Y9g9g;#D<== >V>p>nq>Q>!7=Z=n=>i;>ba>n>9F>P>X>Ê>t#4=嘮 ?e>T?>>2b>>g>P*>=:= >::k>W>>? ` ?!? A>>>#r=;D;n<}=K=/=51= == 5<'Y:g9g:g<}=!:K=>L>m…>nv>P|>k>z2>d> => >Rv>>g?`?'9?Ȥ>8 >><~=,~'>gs>^>f>>)3>Z>a= >T>Jg>ݏ>/??|=?XD>>>0=AV>{>)3>>q>1F==O6=>%>o>Y>>P>J]>s>>2b=_yN<ѳ<t=(^=d==/= Z=ѳ=J {<;3m:g;g<'Y<=(^=> I>::k>T?>N>+n=d== 5={=>IG>>[>?>]>>E=a=t<;D;i{==U=a<<ѳ=#D=2>>@Y>k^>{G>n>Es>'=n= ѳ;t:D;<=lJ=x===C<;dt9g:g:g;t > >, >)p>L=yn=?= ѳ;?:g:Dd>q$>.~G>3ټ>*>= f=T?f>?C>M+>D>*>=E=n=>v>>'>Na>td> >f>td>M+>M=*=p5=={=ʎ>>>> = f=a<<R;?=*==!>;?>">>R>r>>S)>B=>{y>1>ui>>΂\>…>>>KB>o >)p==*=>>N>x>+>r\>7X>T=O= :#r>|>>N1>E">M>9%>E>F>>!7>k^>R?,?3h?B?A?1 Z>!>i\>u[>8>*>.~G>l>>U>>ɩ>U>WOw> ==n=u[==>@>q$>D? ?e?>><>qp>*>;?>>R%?51?V3?j?hg?N f?1>X>C>i>IG>gs>|>א? V? %?~>A.>>C(.>Q=2==>HBT>2>>? %?(?q$>>D>0>3ټ>HBT>? ?F?m/??+?f;??d?N>>>dt>f>>m?)?/?,t?h>=>u[>=*==5Q>4 > >07??#4m?e>I>ټ>rܫ>+4>DU>??F?m@??}ď?e6?=!?b>7>>f>>??+9?1Ϩ>>\> 5=:=XT=>^>>L>n?H>hw>=>ٛ>L>>.<>d>?8?Wp?i?f\?I?.]>>>k^>P*>v->g>臸?4?*?$?{>>l:>-'= =̹>L>j>̹5>>q$>g$>k>T>^>Z>Q? D?5?B֌?>R?,t>>Ѝ>|M >C(.>)p>F7>v>>>M>G>S>#>>2==R5Q;dt;t!=,=Σ>;>z3>?e>,>P*>= =/=̘>L>r\>>ٻ>d>g>>8>td>>>Q> >N>@>|M >~>̙>%`>>5a= =,<:g9g:D<m=>Q>d>*z=*=I=g=R5Q=g=E>>V>޵>m>>z3>P*>'I>"=t4= => ?e>q$>2ԁ>;>+4>i;==g<_(;;3m:g:g;=<=c=3m=3m=(^= 5=(<>7>N>N f>;?>k>+=9=Σ=̘=0=yN=?=5=a==t=^t=<;!;!;;< =<>B">]u>`>M+>']>V=͝==@=:=yN== ==t=M+=< f<;?>x>m>u>>bM> =~=51===><>>^=ܫ==< {!:K>w>$>C>=>qD>+>XO> ===/=>d>/>W)>fL>S{>q$= E=<<=;i;!<=L== E===2==C=*= =>KS>>,">v> >/>>k>!:K=~==07>">l:>>L>b>u[>=x <<'Y;g;<t=?/==?= f=+=?=a=YY=?/=?>w>a&>^>? ? K?>ؖ>է>.~G=ȃ=?=!><~>x>i\>Kb>> >Pl*= )>Y܊>>0??Y?F>[3>2b>)p=n=?=Z>AV>CY>>>/>k>`=:=J<<;D:g9g9g:D2Q>>#>>=>x>>m>==i;=ӽ)>)"> >r>>R>>F|= E;i9g9g9g:gC>է>>L>>8>;?==T=h_=?=yn>A>,>>` >`~>w=,s:D9g:g#D>_7>u >a&>.<=Z=='Y==C==*>x>+>"#==a;n9g9g:g;i<(<5Q<_<5Q{> =2=Y=a-'>==?=ѳ=t!={=2> >>OW>z3>>66>C(.=Z=?/;n9g9g:D7>KS>ilK>gs>I>=07=/=>>I>>n>E>@>>M=/<}9g:DM+>E>>>">L>s=嘮=O>'I>Z>>NQ?$>hw>>>= ::D<'Y=0==m==^=;D<:g9g9g9g>l:>l>>>>dt>q$=T>Q>?C>C>#?{y?? x>hW>KB>!7=qp<;D>j>>>f>t>^2>~'=E=_>7>u>:?F? ƚ?V:>ض>a> v_=F|>66>8>d>u[>7*=07==>GM>|M > >ٻ>臸>>ԁ>x><=g$^>A>]n>Xc>2==| ==?/=J<>7*> >>y >$>>::k=J<=4<ѳ<( )>R=%=h_<<(, >Y<>lJ>`>::k> ==='Y-'>s>/>i;==D=tf>>"#>*i\>#>^=%=h_<<'Y'Y>P*>a&>Z>=>===2=>>C(.>gs>>">oJ]>J {>=yN=O=T?=*z==~>w>d>==rܫ=<\>Dn>Z>3>>s>XD>f8>q$=E">+>.<>nq>f>>>07>W?>Z>u >2> =?>%?> v_>M>x> >s>9>=s=t!=M+==O>-y >>$:>j>=>>,">>WOw>>$̙>k5r>5>?2r?B?B?2>2> >">HBT>*>8/>n>>X>O>+> >`>7=5Q=n=d> d>Jg>̙>j?E??s>>>qD>>1F>?/>>> ?3?S)?j@?h?P?4l>>>y>WOw>nE">>O? }??s>?>]>Sx>d==i> )>Q>>8 ? ?+ ?%;?*z>s>>>OW>N>i?f?D?kfm??+?g3?B֌? d>@> >n>H>?66?*W?0d?.,?]>>|>']=[=n=J>: >Y>??'?8>RF>> >22>LW?>q$?k?D?k5r??}ď?f ?AN? B>>4>nE">o>a??,?2?/x? %>֋>?e>, ==:*=:K>w>)3>;p>m? u?+>ٛ<>U>XT> v_>6l>ѳ>&?5a?T ?hg?f\?KS?1 Z>L>?>t!>U>y>^>J?G?+9?(?>Y>y>k= f===>;>>>Эy>ƙ>O6>r\>&> )>>`>R??4l?A?>.?.]>p>>{>C>+n>J>>;>$?a>[>;p><>@==T;;;> >t>P\>Y܊>f=Z=:=[>'I>ui>+>Ow>>>@>v_>u[>;?>B> I>>F> >f>i\>>:*>C(.>=<:g9g:<_(=>޵>~'>^=*=*== =>>(>]'>H>S >d>@>T?>%> ==:=9=>>+>C>L>>OW>=:==<_;n;3m:D;3m<<*=0=p5=zG=f=Q0=(^==rܫ=n>>%>F|>\>[>C>!{>f=yN==*=~=yn>/> =>{= ==s=((>T?>m…>o >Y<>/B3>v>=J<=ȃ=%= =Z>T=2===x =< I>KR>I>+>>CY>n>)p=?==%=07>>7>f>V>{y=j=3m+-H>g>>>U>¥>>cψ>d=s==d>>@>k5r>y>g$>-==>U>U>j>3?v>>]> >)d!=͝=?=>0>>>>>>+=ѳ<;!:g;3m^>k5r>>??C? j>0>KB>;?=yN=~>+>R>>f>s>>A>e=<;9g:g<(=c==dB=T=;=ʎ=̙=h_=A=> )>b>,>O?S ?*? >a>8>7l ==OW>*z>Z_(>L>>R>Э>>u[=!;?>\9>)>?4>=>>)3> v_=ȃ==>@>c>>)t>X>L>]u=%*z>Y<>D>!>> >F>Rv=m=̙=^=51>w>^t>>>a>x>as=e;T?9g9g;g<=1=f=p5=T?='Y=g< f= ==07>>OW>\>)3>>K>^=/=qp=@j=p5=Tq=>,s>F|>;D>^=:*<'Y9g9g;dt<=<= =<5Q<<;i<}= 5==…>>(=?=m=h_< <t<<= :=Z_(=,=p5=R;9g9g:D;?">1F>HBT>6%>Y=:K<:g9g9g:g;i<ѳ<$̙>AV>B">'I>/=ȃ==*=̘> :>i>L>>C>oJ]>s=u[;m9g:g<'Y=R=?/=F= :<;g9g:D<(>gs>|>;q>g$>/>޵=ȃ=>+>Q0>f>ŵA>զ>@>>P*=͝<:g;m<=c9=x=TP=x ='Y<:D9g9g;D<ѳ='Y=5>KԢ>E>-'>>;q>KR>w=+=ʎ>-'>r\>>ٻ>>>>rZ>=-y ;JN f> >-'>>66>DU>==2>d>nq>R>5Q>Bu> >s>lJ>f=XT<ѳ.<>k^> >,>`>!7=y-=a=n=嘮>G=>E> >>L>>G~h=嘮=J {-y >IG>Dn>!7==H'>V>*z>>4>]n>==+n<<<3m >*>>>2ԁ>B=a=d= 5T>g=_H=ʎ==<\i;:D;m<t=c=3m=4=(<;n:g9g;;i<==&Tq==%=07=*=+==*i\<>d> =?==J {<*<}<'Y<==4=3m=<_<ٛ>@>R=>K>, > =/=^t=s=>> v_>;?>S)>Z_(>KS>+n> =n==XT=^t= :=OW==_(=j=ѳ=<~=R<==/=n=Z>2ԁ>z3>&>̙>P|>Q>Sx>d=n=E>>Jg>aS>Tq>L>^>d>m>\;>%>==…><>+n>P*>^t>H>as====x =~=*> >u[>i\> >>O>U>>AV> =>i;>KS>m>g?"?1?2?$>Bu>̙>u[>?C>">'I>P*> >>>&>>Dn> I=%==T>v>>951>>Σ>? s?V:>N1>d!>kv>>)p>|Z>'?~'?A>`?P ?Q[?Cn?+-H>Ow>>n>IG>V> >D>,?K!>hw>Эy>S >@Y> ==a>v>>;?>>X? .n??l> >1<>w2>)d!>;>>d?1 >>|>]n>r>P|>=:?:?'? f >>@>m…>%`=E"=~h=L>!:K>>?k?? B>r>M>i>%>;?>ѳ>d?2A?PK?gs?f?O%?4l>>>Y>Y<>u(o>>A.?K?*?&d?>>x> =*===:>k^>W>Bu>>>%>ď_>>F7>&>+>z3>'?Q?A?N f?L0??4? >Ϩ>>a>`~>@Y>\>b>?p?rj?6>>M>`=:>-'=n='Y=&Tq=rܫ>GM>I>i\>'>Gn>է>Zv>k> )>>P*>է>ӽ)?*?0_?/B3?q> >>h%>+>>.>u(o>)T>̘>>z>%>>)p=i=p5;!<(<}=>`>\i>vn>l>AV>=07=t>{>%O6>_>է>qD>̘>ȤJ>Q>>W)> %>T=><>1F>m…>>~>>u >, ==VJ<f>g=~= E=t==y->/>&">M>td>5>>cL>5 E>Y=Ow=J=y-=>>#>8/>>OW>-y >O=ʎ=R5Q >!7>?C>Na>KS>2>=9==Tq==%=O>%?>q==d==;D">Jg>a&>a>L>$̙===~G=*=%=L=t4=[== =g$<_<;D;i;?޵>@Y>x>>-'>H>\>=O=2=?=E= >w>a>>\=X=(^<=<'Y;!;!<t==qp==2=?=51=={= 5==4=>k>t#4>Z>j>>@>>N>޵= = E=>^>4>_>n>[>$J==c@Y>>,">?>G>>'>\>L=T==嘮>(>u[>~>$>> > v_=%?<t;:C;#D<t=;D===Ow=Ow==d=1= =k=>UE>>M???;q>{>E>(5===~>IG>nv>Gn>>l>>Xc=ʎ<;3m9g:g;?=,=,=51=:=E=n=x=3m=R=f=>M>9>9???V:>>>']=ʎ==>Sx>6V>qD>ŵA>>j>k5r=t(>c>˓S>!>>q>>><= =:K=a>;?>ѳ>n>;>>>S:=n<:g9g:DIG>>> {>u>X>C(.=T=M=,=y > >W>)3>m0>>n>=^t;m9g9g;3m0>s>+>ui>@> ==]n=+n=Q0=5=>(>@>22> ?e=v>> d=d=s=t=p5=B=rܫ=dB>^>9v>O>>>>=i\<:g9g:g;<}<5Q<_(<ѳ;:g9g9g:D;i== >'I>HBT>IG>.<> I=ʎ=M=| =>g>IG> >>>P*>*z=p5;!:g;dt>N>n>m…>P*>==/=,=y >>nq>>̙>C>u(o>=y <*;;t<=)d!=a=| =zG=M+=RGM>S{>p>n>P*>==zG=I@=>>l{>0>i>a>rZ>==>4>T?>Q0>.<===<=Z_(>{>F7>|M > >rJ>N f>(==<ѳ<'Y>as>L= =^<;J;3m<=>d>4>HBT>>OW>=:=T=Rٛ>']>> I=̘=a<q>-'>>==_==`~=3m= :=+n=Q0=h_=a=;D=>IG>ui>E>Y>Y<> 5= f=a=T=yN>GM>?C>k^>?e>>E>\i>*>==n=~==[>d>İ> =a=̙=t!=`~=dt=?=U>R>B">>O6>>Xe>>a&>=?=*>>Z>w>>1~>>>Q>q>KԢ>8>w>Y>L>F|>y>>>N f>~'=:=n===t>a>dt>>>ٻ> >h>4>0=>{y>C(.>x>Y? D?0?2?)>P>[>>G>(>)p>Q0>x>>s>~>>^t>B=i=:k=n=>~'>k>Ѝ>>lK>]>>>@~>>>^t>F>0?-V??4?BdB?4J? t>ď_>>\>4>>>u >9>J<>${>6>9%>)3>3>T==y =>Q>Sx>>a>0>>6w>H>3ټ> ѳ>ٛ>`>L>M?.,?>?A?3F?{y>j><>V>/B3>?T>~2>Q>Sl>=>J]>G>nv>=̹>V=OW=T=R=2> 5>>o>>@>>`> > =>a>N f>>X??/!?0s?;>> >rZ>2Q>ٛ>)p>ilK>>b>N1>Ow>c> >&=yN=x= := :=6=>951>Y>> >dt>+> =>^>1F>q!>f>b> >;>@>U>ui>*> =>>;>Y>f>>>>I@>Q=ѳ= 5< =<;DL>6%>1L>`==̘==i>>@j>n>>V>]>\>P*>===*=a>>;>`~>oJ]>c >8qD>g=:*=d=dB=s===̹=2>>1 Z>Fy->Q0>F7>)d!>/==T=`~=:*=OW=p>w> :>&><=J<=zG<:D9g:g;2b>#r>+n>%>i;=a=5=Z_(=C=x ==ʎ= =t=+==XTw>*>>>=>'I> )=ȃ=:*=g$=| ==T=== =ѳ=>NR>oJ]>ui>^t>0>{=y =}=g=#==07>>Q=i=AV> >f>$>]>k^>!:K=̘= =,=Tq=>İ>8>Es>2> Q=M<̹;::D<<>qp>g>ƙ>Σ>j>b>Es=d=i;=~2=>>N>|>>/>T?>޵=T?$̙> >>0>>O>S*>a&>q===>%>z3>}>>>q>-7= %>4>>M>>ۅ >]>dt>*z=a={=y->-[>>ݏ>Q>Y><>@~=m<:t9g9g:g;J= =| ===d=J {>f8>^>>>s>>F7=07==[db=n>ٛ>o>b>>>|>(= :<ѳ:g9g:gk>y> >]>V>l:>==M+==qp=>1L>m…>|>xyn>C(.=?=-y ;m9g9g:D<}=c=7X=1=R<ѳ;?;3m;=%O6= E>d>@Y>Td>AV>L==| =gw>L>2b=Ow=WOw</9g9g:D<'Y{==D=^=M+>İ>^==T<=:D:D;t!;!<}T>ٛ>k> =:==Q0%>::k>+4> = E=<(;t!;>q$> v_> =~h=T=<}<=u[=>'>;?>->=j=C<=;J;?<#D I> I= === :^>%`>=O=?=/<t<;;?>)">3ټ>*i\>c=ȃ=4f>İ>)d!>0>%O6>===D==g=T=:*=====?/=c= ==\i=| = E> >;?>fL>x>oJ]>Es>d=?==XT=E>>@>m…>d>u>TP>l>951>O=[=yN=*=db> >&>%>>%?=y-==Z_(=Q0=T= %=E>&>Y>U>XD>>r\>.<=܊=/=y >>B>z3>P|>~>a>>q$>w>;>>R>{>O>1F>a&>z3>p>C(.>d=U=={= =5=E>>^t>>k>&> >;?===Ow> 5>`>c>;>Bu>4+>>;>d>R5Q>!:K>^>(>%>\i>>|>a>zG>.=?=s=g=rܫ=*z=51>4>I>q>]>(>pO>->Q=+=O>'>gs>S >{>0>@>֋><>>F|>M> >w>*>i>>#>>f><~=yn=t=rܫ=1=C=T=%>!:K>\(O>x>p>IG>&=5=d=~>%O6>\i>Z> >OW> >>1>^t>q$>%?=_H>,>>Xc>>> >t#4>'I=:=qp=,s >8>3ټ>f>=͝==07>>C>l>>O>>}>L>=:=/=51=ӽ)> >/B3>\(O>n>d>9>{=xV>,==/==5=ʎ>/>%>@>Q>U>C(.>$==Tq=_yN=;D=u[==a><>>']>&=[=<;m;n:D;{y>>L>`>w=a=ѳ=(^<>=p=/= ='Y<<({>w> =t4==T=>'I>+4>%`>Q= =^t=< =(^=h_=t= E=51==4%?>4>^>h%>N f>8=9=='Y=g=%O6=R=d> >-'>4==J {<'Y:D9g:g;J<=c=?/=a=t!=h_=/< {<'Y;J<}=-y =T> 5>k5r>><>q>I@>R=I=?/==0=>N>@Y>S)>C(.>İ=/= ;?:g:C;g<#D<= :=VJ<={=t!=06%>U>I>>|>j#>-'==?/=R=DU=L>4 >n>{>u[>AV=G=\i4\Y>>">>*>n>-'=n=*<ܫ=C=[>@>y> >\>S:>v>=w<:D9g9g:g;g<= :=R5Q=XT=(^<;:g:<=>M>k5r>>>)3>M>޵=<_<= 5=:>+>cψ>z3>n>=J==L<;D:g9g9g9g:C;&Tq>Y>h>N>=ʎ=?/)d!>@~>0 > =?<;dt9g9g:g;/>">{=={< {;:t;nw>>w==x =>ٛ>+4>.~G> v_> ===2==Y====*==D=`~=<ѳ<ѳf> v_>-7>$̙> =OW=22<t==OW>d>/B3>Q0>l{>td>`~>::k>-'=:=Ow===OW=嘮> >N>c=T==Q0< f+>!{>1F>+4>-'=d=}= :=v=…>']>NR>qp>>)3>w>V>!7>{=*=d==O> )>%>4 >-[>=:=vGM>)">%O6>w=d=i;=a=s>>2ԁ>Zv>w>>4>zG>M+>=[=yN=*=̘=魚>-'>1F>D>=J>= =| <_ ?e>u>-'=m===| => ?e>22>W)>k5r>s_H>j#>N>!:K==s=*=/==9>^>*i\>::k>.~G>=͝=^t<<T>%>@j>N>I>4>=a= %={=t!=/==ȃ=yn>'>>d= =s=<\id>!7>']>> ==Ϩ>=T=t<_<ܫ=*=_yN===J<===a=;D<t;;i;{>\==J=t!=g<>{>:*=Z=OW=| =<ѳ;i<gv>>%O6>+4>B===<~<<(<===t4> I>Q=_=R5Q>C(.>L>.~G>\=o=I@<<<3m=22=>GM>(>8==<ܫ;i:g9g:g:t;?k>E2>NR>/>=Y=%O6<;J 5>1F>'I>=I=;!:g9g9g:g:;<\i<<=<(:9g9g9g:D= =51>w>+>1 Z>V== d> >GM=…=:*<5Q;m:C9g9g9g9g:g;g;J;;:D9g9g9g:g<ѳ=/=>4> ===*;!:D:D;<t=t!==:=yN=?= 5d>q$>!7>V> ==i= =̙=M=g=x =T=M=?=ʎ=s=*=<~=a=%==;D<=;J TP>*( >=J>@>2ԁ>&=[=n= =n=t=ѳ==/==Z=07=y-=GM>::k>J>KR>;?>`=?=:k==Tq===?==…>{==E=a=;n;3m<;D<t==Z_(= :=D=ʎ==/=a=<=Q0=J<>&>9v>F7>AV>+4>Y=͝=?==Y==TP=?=U===5=̘=i;=Ni;>)p>1F>)p>=a= %=w=_yN=Q0=L=e=:*=n=n=Σ==i\=t!=>~'> )=a==C==g<<_==;D=w=R=?e=,=\i=<<'Y<<3m>2b>~'> I=07===*z=a=)d!=)d!=Q0=| =^=a= ==̹<:D9g9g:g;i>0>1>!{> =:=o==| =T?=\i=T== Z=?===;J9g9g:D;>)">@>@j>->=~===,=m…=t!==̙=/==Ɉ=n=`~<;t!:D;J >)">>>>>)p>=E=y =d={=_yN=h_==?=OW=+==2=T=V>>*>'I>~'=T=:k==x =C=)d!=4=h_=^=o==/=={=!:K >O> I=07===_yN='Y^>>i;>Q=%==h_=t<_= =K=p5=i=3m<5Q<:g9g9g:g;Js>F7>V>Es>$̙>g=n==C=%O6=S:=====u[=R<(:g9g9g:g;g>@Y>oJ]>w>r\>F|> :=&=/=p5=WOw=R==ӽ)=Z=p=ȃ==R<(:D:g;;?<=)d!= %=Σ=~=ȃ==,s<*<=c=Tq>^>F|>w>H>}>T?>$J=O== =}=5==?> =>(=m=y-=zG=R I>;>d>u >h%>Es>*=07=o==g=/==嘮>R>(>k==?=VJ<<m<%O6>@>H>>OW>%O6>=Ɉ==rܫ=f= ==Ɉ=07==[=E=Tq=p5= :<<_=c=C=zG=^===?=p5<ܫ;?;<={=%> Q>>Q>==y-=a=\i= := =0={==̹==ȃ===J {= =Σ==F<t{>>,2>*>&== Z=[db=<_(=-y = =M=^=J {<ѳ:D9g9g:D<=t!==_H=t4=ʎ=,===;D==2>/>;>pI>f>Y>Xc>!7=嘮=i;=DU=J {===~=07=ʎ=x <;3m9g9g9g:D;i<_=ѳ=O>7>>=dB=t!=?/=qp==T>)p>z3>> >s>E>WOw>d=*==Y==>>,2>)d!> =*<_;?:g:g;!w>.~G>::k>#r==I=i=rܫ==!>F7>s>>d>Σ>>~>']=E=D=/=5>>A>g$>n>KR>^==-'><~>HBT>0 > =̹=qp=I@=m=…>J>m0>s>ۅ >ՆP>h>I>2=?=~=Σ>g>!7>T?>|M >I>l>.<=嘮=,= 5>*i\>8qD>']>= =UE==0=͝>22>>Q>H>>k>td>+=5=y-=Ϩ>=>ٛ>Dn>l>x>dt>1F>{==x =3m=0=(^=J {=:*=d> >İ>d=07== :<==̙>>WOw>>b>CY>x>F7>-'=d==/=>v>> >>>K>?C>q$=G===VJ<=(^=)d!=H={==J<=T=嘮=X=_yN<8>@Y>M+>C>,s>d=:=%`=qp={=?=0=>^>B>-'>{=Ɉ=s=a=<~{>/=m=&= Z=w=<<=%O6= == {=:====;D= <;t==?=a޵>7>>= E=;g:;<(>-7>-[>GM=:=+n< =;?>.<>->B== )>>>T=<<(<;D<=,=c= 5=*i\='Y=<ѳ;g9g9g9g9g9g9g;J<_(=K= :=y-=yN=E=i\='Y<;;!<ѳ<< f>!{>%>İ=!== )> )=?=?=,s=R=;D==>>/B3>c >~2>z3>]'>+=…=x =*=Q0=̙=E=G==:=w>->1L>=t=^=p5=I==G>3ټ>@>g>>>s>qp>k=n=:*== >>.~G>AV>::k>=T>>OW>h%>pI>U>8=:=/=s=:>>n>y>M?q?|>܊E>>N f==y-=>>A>w>(>> >.<= =R<;D;<==t>B>`>>Z>>G>=51=~G=O>%>>? Z?*H?)?Z>>u[>s=> >+4>k5r>>>Ê>Tq>>M= %=*< f=;D=DU=:K>M>k5r>t>>4>XT>-'===s>"?>>d?ʎ?,s?+Ѝ? Z>ê>66>"?>{>O>22>u[>>> >>1>@==s=UE=x =g$=>{y>Q>{> >| >I@>w==p5=>d>z3>̹>G?y?>E">y >p> >>w>)d!>a>u>>51>y>t>AV>{=̹=d=,=p5=qp=dB>>M+>^t>M+>#D=5==%O6=R5Q=yN>C(.>է>Y>ٻ> >>>Es>d=~=>-'>6>qp>>C>m>k5r>)"==i}==dt=L=J {=}=Эy>w> %>~'===J {<==8>^>KR>">m>Z>td>@>=yN=51=?= >>(>Jg>Y܊>M+>*> D=̘==g= ѳ== =0===t=J<==lJ=g<==p5=Y>>q$>)p>#D>-'=5= E=zG=*i\=C=ѳ==:>4>d> )==/=,=A= 5;?< =<}>f>!{>O==-y ;J::;<3m>::k>Xc>]n>Dn>-'=/<;;i'I>Zv>x>|Z>f\>, =ȃ<*( >]u>{G> >gs>-[=<_<>@j>_>cL>IG>2b=Y<ѳd>%>'I>=dB<;?;? > I=t4=2=-y <#D:t</==T=t=x=S:<;dt9g:D<_(=ѳ=E===E==R O>)d!>C>Jg>7*>= E= <ѳ= :===i=Ow==: <'Y:C9g9g9g;m=*i\=dB> >k>>==rܫ=*i\=T?==͝>-'>N>>ٛ>|>?e>W)>=M=Q0=a=T> >q$>$̙>u==;D<:D:g9g;dt<=>Q>6%>^t>e>G=>x=U=N==Ɉ> >S)>V>W?>>>Эy>\9>Es=[==Ow>>@>l>I>>^2>'=x 'Y>u(o>m>է>>T?>=y-=n=…>+>>ђ ?!?/1?/)?%`>{>k>L=[>w>;>|M >P|>v>>R>>=RKR>>̙>>*>66>-y =嘮=ʎ= >DU>̙>6?0_?: p?::k?1?T>>7l >d> >YY>է>>܊>>җG>n>fL=yn= =-y =*z===>R>>p><>> >>=d=J=5>F|>i\??2Q?;`N?;I?2b7?>^>J {>M>(>^t>>^>L>O>Bu>>+>M=ȃ=nv=#=M=ʎ>4\Y>p>KB>̙>> >0Gn= =/=y->.<>V>?*8a?3gr?3W?)>><>C(.>>"#>KR><>:k>܊>/>ױm>>>!:K=*==D=s=a>%?>N>V>?e>rJ>Pl*>~'=U=t!==>w>q!>Ê>T?E?->g>o>s>'I>>>)">dt>V>>>;>+>Y<>7==?=R=qp=T?=TP>{>+4>@>3ټ>GM====(^=I@=>'>y>:K> E>>>oJ]>+n>v>== >>"#>WOw> >>f>YY> v_=[=T=/= 5=< ===%=t4=n=5Q= :=<~===m=O>&>@>V>O>>0 >= =n={==51=?><>!{>->%>w=t=5=a=?/;!;?;i==^t< >{>v>==?=;J;g:D;*>KS>S{><0>c=<t;;dt;?<t=c=8=C=t<:9g:g;?<= =c< f<:g:D.~G>kv>>?e>| >DU= =(^< =<((>R>>>|>(>i>~'=h_d>V>:*>V>>>l:>B=c9g=~=Ɉ={<=9g9g;g<'Y9v>u(o>x>>g>N f==N<'Y<t= :=,==07==E"==x <=9g9g:g;g;t!;g:g9g9g;?= =/>v>>7*>Z>`~>G=>-'=<;D;dt<<=1=ѳ=?==s=/=-y ;J9g9g9g9g9g9g9g9g;t!<t=f=>*z> =L=  TP>w===&Tq<;g>)p>KR>UP>B">&=/= ѳ<=3m=?=0=:===x TP>!{>$̙>'=:=zG= :=+n=T=> >J {>{y>>>>k5r> %==rܫ=n=?>B>.<>8qD>*>=d =>Dn>n>u[>Z> =*=d==?>k>M+>>_(?$? >lK>>^b>R=U=07>8>U>g>>է>V>1 Z=J=::k>I>>>>i>=ʎ=OW=>)d!>O>;?)?4l?5?,>5>a>%>V>s>KS>D>[>ȤJ>΂\>j>>;D=j=,s<=I@=,>{>`>><>w>>o>@= =ʎ=m>DU>? s?4J?A>`?BL?6?rj> >I><>'I>j>s>>V>˴>6>>;>==T?==:K> ?e>i>f>>{><>2b>Q0>%?=n=G>KS>Gn?>[> v_>->m…>>>yn?>i>Σ>W>1L==D==o=07>LW?>m>><>̙>Q>B===:>7l >> ?0s?9?9?1>Rv> 5>%>V>V>L>>S>lK>ƙ>>3==n==:K=n>-'>b>j>2b>#>bM> =*=T=5>~'> >¥??$ZO?$j?>u9> >.~G>-'>>,o>u[>g>^>=>!>9>t>/=E"=dB==T=_yN=>>;>P*>C(.> =_H==3m=Q0=*>0>>>ƙ>U>f>@>7> TP=07= > >+4>lJ>O>i>S >td>,o=m=dB=5=,s=c<_< ={=˓S=~==E= %=I@==t={=a>!:K>Rv>l:>g$>F7>=Z==T===>>1L>B">8/>= ==XT=?/<;?;;<=0===f=*=g==t=5=g==ܫ>k>=yN= Z=p5=g>B>v>=n=,s< =:t:D;<= :=I@=J {=>@>dt>l:>V>!{=n<_;;3m;?<==̹=T==h_=;9g9g;J<_(= 5=&Tq<<;D:D:DT>C>66>>W> >ba>=h_<'Y<<=?/=/=ʎ=T=@= :=c;dt9g9g;!İ>gs>>̙>>>>.<=s<=<ѳ= :=D=d>޵> TP>=Ow=R<:g9g;?< f= := 5=g&>k^>>>i\>P|>+>1L=5^>~'>O=t4=n=R:D9g;dt<<>N>H>6V>f>>n>GM=a<( >i;>Y=E"=O6=:D9g:g;<<+n;?:D9g9g:D<5Q=>~'>Q0>u[>}>g$>-=ȃ>>=~<:g9g9g;dt<=(^=R=D==zG=;dt9g9g:gi;>0>@Y>/B3>=>2b>V=/=DU<<=*=~2=E>%O6>m…>S >%`>>]u>=s=dt=t=E>>$J>+4> >Q==<#D;#D:g;2Q>]n>eW`>I@>==_yN=Q0==Σ>%>>y->NQ?Q>ߙ>">V== =d>-'>Es>u[>>>v>-y ==C*>w>nv>>>Y<>w==a=*>^>l:>s??1\?2b7?)d!>8>m>=嘮>><~>;q>>~>r>X> >::k=ʎ=H<=3m=rܫ=O>S)>E>zS>7>>5>1L=yN=n=ӽ)>%>>n?1?<?=?4;?|>>;>/>GM>Xc>m0>U>>6>X>51>">=i\=L===>Z>b>o>F>Y>O>AV=5==:>-y >F?K?2?>OW???5 E?S ><>IG>d>V>Y>f>΂\>O>>${>h6> >.<=܊= :==5=>@Y>>>Y>L>|>2ԁ=a=I=/>!:K>m>r?+-H?4J?5a?->>>?/>w>>@>>>M>>M>zt>>.<===s==5> >T?>aS>>|>T?>N= E=L= >4>gs>d>!?s?+>˴> E>u[>q$=m=>ٛ>cL>8>u9>>>>k^>İ=Ow=Tq=| =p5=M+= =>)p>?/>1F>2b=:=u[== 5=> >v->ݏ>51>>5>x>*=[=T==>>]'>#>a>>k^>%=嘮=D=,=c=<~'>AV>]'>Z><~>=O=c=-y =6==yN>d>,s>>>2Q>=Ow=g==c;?;n;3m;#D;m^>-'>=OW=(^;?:g:g;g<= :=K=L=<;D:C9g9g9g;dt >>OW>`>h_>R5Q>q$=̹@Y>~>>u>>_>O=f;;?<t=: =?=Ѳ==5Q=?=#D;n9g9g:g>a>>eh>]>%`>">-=5R>"> D==<:g9g:D>g >2b>,>>>I>0Gn=?O>L>2b>T==;g9g:g<IG>P\>>>>m…>=t!;?< = )>s>d=yn==;g9g:t<<ѳ<=<:D9g9g<=t>>N>ui>|M >g$>.<=̘<:g:DGM>q$>(=dB=c:g9g:D>i;> =ʎ=C<ѳ<<ѳ= :=h_=:*=ѳ=p5=R<#D:g9g9g9g:g%>^t>u >b>.<=a=Q0= :=K== f=m>==OW=_yN<>)p>.~G>==zG7> >j>,">>U>(=OW=| = %=a>`>@>\>^>@~> =D=22<;?<< {=,>>DU>t#4>{m>a>'I=0=h_=&Tq=L=> v_>>?h?>1> >gs=yn=:K=>>LW?>H>P|>>6V>n>İ=2=/<= ѳ=,s=>$̙>r>><>o>WOw>(==VJ<=*z=d>N f>;??.?0W?"O>u>?e>c== >%>t#4>r>>>>F>V>T==*=K=f=>*>z3>:>>>g$> :=2=XT=>g>dR%>L?W?0W?1?%'>>t>=n=9>#D>z>>>z>>M>ui>x= Z=a=qp=x =Tq>>`~>Z>(> >T?>d=s= 5=e=Z>W)><>G?"`-?&#v?>>z>c=~=ʎ>>`~>q$>V>Σ> >I>m6>2b=51=zG=a=h_=h_=ʎ>!{>T?>e>T?>%=a=a<=R=Y>+n>Q>>D>a>s>S >A=:=s=%`=*>, >~>q$>s>̙>o>A==:K=^t=(^='Y=c===m>i;> ==:*=g>OW>>>է>\>Dn> ?e=I=<~=;D=D>Q>.~G>a&>y>oJ]>C(.> =2=M+= :<t<GM>-y >+>==/= :İ>$̙>>g=y =t<}/>@Y>D>.<>k=x<=:g9g:g!:K>^t>66>K!>td>>== 5;dt:D< ===g=/=@==/=g;g9g9g:D@j>>2b>>d>c >-'=k;i;{=~=ȃ=u[<}9g9g:t<==N=B=?/=cC>>>C>>h%>=u[;?;?<=w=͝>g>(> ?e==<_(:g9g:D)p>k5r>:*>ѳ>66>L>V=)d!:t;dt<}=M+=T=yn>v>>{==ѳ-[>T>\>Dn>=#T>=嘮=<9g9g:g;n<=Q0=g=T=C<:D9g9g9g:g;?>GM>'==^t<t!:K>g$>V>k5r>-y =*=(^<*=c=a==>/>v>==o=h_=g%?> >'I>s=:=rܫ< f<<==51>>g>~G>~>9>u >O={=R=8==>'I>Py>`=:>IG>&=d=T=g!:K>KS>W)>?C>d==*P*>+>>x>,">>)d!===M+=T>>W)>{y>S >?e>Y<>~'=?=?/<<_=c=s=a>'I>V>ba>L>=n=0 >h%>,>>>w>0>-=>g$>>5>+>w>,2=T=a==g==H=/>-'><~>Jg>6l>^==c;*z>Xc>>s>L><>>=<==>v>>Rv>Q>+>m>nq>'I=:=^t=g ?e>~'> =*=h_<:D;g=(^=5Q>)>u[>> > >@==Q0<<==M+=E>%O6>]n>w>n>Dn>=n=*<<<<}#r>C(.>DU>)d!>=<_;;<==2>!:K>3>->i;==C<}*z==n=Q0 =>w=[== :;D9g9g9g;t!<==c<*;!:g9g;dt!:K>AV>I@>0>R=O<ѳ:g9g:gd>C(.>gs>n>W>"#=n<*:D:g;n<5Q=qp==U=/=R=R;=9g9g:D<;D<_(== <;?:C9g:D<ܫ=y >i;>F|>m…>u(o>]'>'I=Ɉ<:g:g;?< =/=n==͝=?=0<(9g9g:g;J<t+4>Q0>Y>@j>=>8>(=y-=:D9g9g:g;?==t!==x=UE<;#D9g9g:C:g9g9g:g<ѳ=K=%`=n=/= ;3m9g9g:g;<t=g=g>0> =L=C<'Y;3m;D<'Y<ܫ=rܫ= Z=͝=ʎ= Z= =%O6<;?;!-'>M+>g >KR>d=,<\i;3m;m*z>>x=m=/=rܫ=g<\i >\(O>oJ]>Q>-'=RGM>0 >->2b=Y=R=GM>AV>P*>2>T=p5<#D:D:g;t!==>x>-[>+n>-'=d={<*<'Y;m<a>> =?= 5;?:g9g;g==2>%?>a>~'=2==*i\O>>{= Z=R;g9g9g9g;<==: ='Y< f;9g9g;t!>GM>=*= x;g9g9g:g;n޵=a=<t:g9g9g9g:>!{>GM==^t<'Y:g:g;3m;i<(;?:D9g9g:g;J<==f==g=J {<_<'Y;;J<=̙>{>!:K>3W>)">{=<;D:C9g:g;<#D<(;g:g9g9g9g:D<<=c=T?=T=| =K=~'>%O6>==h_;i9g9g:C;Q==o=;dt9g9g9g;g<;D<ѳ<ѳ<;D;:g9g9g9g9g:g;</ٛ>*>!{> TP=:=< ;:g:g;g><~>M>@>/=?==<'Y:D:g;m=====;?9g9g:g;i=&Tq=:K=*=t=Ow=/=T=g;J<#D=(^=ȃ>>@Y>Q>B>k=07=:K=!:Kv>>']>2>%>{y==/=(V=L=51=/=: <5Q<;dt:t;<'Y<<(</:D9g9g;3m<= :=/=<V=07==(^>C>`=:>Rv>q$=51<_;3m:g;t!;<;:D9g9g;3m޵==ȃ=| < >K>>!k>>^t> =J {;:g;3m<#DT>d><=嘮==&Tq<_=c=>ٛ>b>X>I>}>u[>`=rܫ;=9g:t<;D<<>=J<=ѳ=%O6==+n=s>>Sx>Q>>>>c9>^=?/:9g:D'I>Xc>pO>`~>, =*~'>>x==T<:g9g:g;?g><>B> =9=x<m;n:g:t =T=n==<=c=g=~> >Q0>k5r>dR%>AV>=;=t!{>%>1L>#r>/=51=?/>c >>>>>>A> )=2=c<;D<={=?>>%O6>=yN=XT<9g9g9g:<_=>~'>Es>Y>Ci}>`=t={= =]n=>3ټ>U><>¥>qD>>a&>`=0=`~>?C>Q>>>=GM>I>\>I@>= =*z==VJ<=J<>8qD>TP>l>>>>bM>=yN=m==3m=̘>`>EA>Z>C>=<\i:g9g9g:g >->@Y>.<>=ȃ=qp=R==Tq>q$>w>>=>̙>>C(.>O=̘=| = :=(^=>>%>2ԁ> v_=嘮=K;n9g9g9g9g<(=k=Ѳ> =>>/=*=^=(^2Q>l> >l:>>OW>-'=嘮=d!=VJ<<ܫ<_=Z_(==i=嘮=dB=^t<>~'> =L=U=5=n=R<\i<'Y{>`>q$>O=:=;D;C9g9g:D<=R== =E=>,o>0>k=:=R5Q;g9g9g;#D==~>޵>> =E=VJ<;J9g9g9g:g;#D;?<c>#r>%>=ʎ=:g9g:t=*=n>>a>=嘮=x T==ʎ=_yNq>=y-=I@;J9g9g9g9g;3m >1L>L>>>d=I=g;3m:C:g:t;3m;g:g9g9g9g:t )>>=[==?/===Tq>GM>`>>3>f>w>&=x ;?9g:D;?<;Dv>>+4>@j>>> =?=s=N f=w=>J>a>>[3>@>|>VJ<=ȃ>>OW>U>Pl*>0>/=n={=M>w>aBu>3>ҷ>/>z>Gn>nq=L<:g; >0>J {>Dn>'I==%`=rܫ=>R>Xc>f>~h>O>̹5>,>\=%O>#r> 5> =J=[db=3m=,=i>.<>Y>7>>,>I>)d!=d;J:g;g<}==R5Q=_yN=B=<ѳ;n:g9g:C:<<=&Tq=x ===:=s=T?==c=`~=>k>22>b>u[>eW`>2Q=?='Y;g:g:g;!T>>L>=m=Tq=;:g:g;t!<t= 5=T?=VJ<=(^<;!:g9g9g:g;?<} >İ>`>'=?==c<:D;m>^>==2=T=M+==s>{y>-y >XT>td>qp>Uǟ>+4=2=^{==s=(;9g9g:t)p>]'>n>\>, >V=s=WOw=>T>;?>@>I>C>{>>w2>-=T==(^=rܫ=O>>@j>Q0>>OW>d=Tq-'>k5r> >7>W>nq>#D=~h=x =>&>u[>,>[?}? >db>?>eW`>=;= %=n>L>a&>Y>>>[db> =t!<};g;?<=?>%>Z>>>>>::k==a=>*>m>H?)?4;?1,?>>@>1F>=ʎ>>AV>[>>3>>>0==<(;?#r>>n>qD>>Z>951=*==d>(>է>r?+9?5@?2A? 8>>`>I>7> )=i> >Jg>>;>>D>u>@Y=ȃ=N< =;3m;J=p5>w>g$><>>>m…> v_=%==D>O>g>BT? eG?'I?e>>>i>'I>V==>0 >{G>q$><>̙>>#D=<*;g:C:D= =Σ>'I>^t>s_H>`=:>.<=~=s=A=3m=n>>OW>:>zt>)>>r>ui>3ټ>w==?=> >7X>i>~>j07>-==1;?:C9g9g;!=a=5Q>(>a> )=Ѳ==I@4 >nq>>s>G>q$>q==?=c9=Z_(==O>*z> =~==-y ;!:g9g9g9g<#D= :=c9=k=;D=c=g<*<}<( =>f==%==Y=R5Q=c<m=t=A=T?=K= 5<;t:D:g9g9g9g9g;3m;J;J;;!== :=J {<*<ѳ<< >-'>R=+=m<_(!:K>F7>S{>@>=n=< =<&>W)> >>u[>A>T=T?;?;J<_=x=~>/>->#>Q=<;D;g:g9g:g;?<t= ѳ=0=C=?/=(^=</B3>qp>>u>o>Xc>=qp;;!=c=>~'>BdB>Z_(>Q0>%=ʎ+>i>)3>>+>M>@=;D;dt;J= :=y->`>KR>e>\;>0= =g:D9g9g9g:C:t;?(>>OW>g$>t#4>YY>q$=<:g;<=#>>0>KS>Ci}>f=<:g9g9g9g9g:D<g:>M> ?e== :;n9g:t,>2b>d=yN=R5Q;J9g9g9g:g;!<<_(<_<=!=dB=| =<ܫ<_=u[=d>,s>gs>">t!>7=&=0;n9g9g:g:t;n;:t:C9g:g;n< f=>*z>+>AV>?C> ==s=w=g=07>;>>Kb>h6>>>C(.=y <'Y9g:C;<t<5Q<<;D;3m9g9g;g<ѳ=C=>(>]'>u[>r>Rv>k=ǟ=#=>>x>>A.>>${>ď_>k>*z<9g;#D<t= :=?/=)d!<_(<:D9g9g9g;i<_={=yn>>OW>td>>>gs>-[=E"==J<>->o>˓S>G? u?>ǟ>2b>~'=c:D;?<_=M+={=qp=)d!2ԁ>l:>|>0>^>$̙==?=ʎ>%>4>V>?'>> {>>= ;3m;i-'>C>^>Y<>6l>=5=h_=?> =>`~>>^>א>1]>I>[=i<;g; D>>==5=*= =p5=%> >gs>>|>d>i>ٛ=sL>9>I@>@~>8=t=\iV><>Y=2=U=a<=:D9g:g >i;> ==^<_;m:g;#D<=K=,=,=R5Q<<:D9g9g:D<=,={=J=a===:= E==a=x=>Q>>0>Es>IG>;>==~2!{>Pl*>d>W)>/B3> =~h==/>/>1F>m…>l>> >>lJ>*=?=i;=XT=x=yN>>)p>1 Z> =G=x<;?:t<ѳ=*i\=y->%>>)T>>9>>C(.>==>*i\>~2>d>ܫ?}?-'>ψ>>{m>.<>V=Ѳ=Z>&Tq>c9>>w>>Y> ==g^>>>M>)>>{m>8=:>>Q>̙? ?51?D?C?1 Z>^>>cL>(>d>$J>h%>P|>,">ܪ>>>\i=2=*z=(=c=| >*z> >>>>E">ŵA> >,s=>-'>i>(.?, ?GMm?Z?U$Z?A??>>rJ>@Y>%>DU>o>9%>>?>>K>>"#=OW=C==K=G>y>>8>t4>*>V>{y>']=>d>g$>ȤJ?.B?H2?Z?U4?A_?+>̹>,>A>)d!>N f>>=>hw??R>ٻ>+>0=ʎ=K<t<_=n>N>r>>z>̘>g>i>-'=Ɉ=Z>F>Q??:?F?C?1>,>i>.~G>ٛ>8/>rJ>>0>=>>L>R>=2=c;n<=p5>i;>r\>>Y>f>}>+4=嘮==I>>I>=? O?*?>>>~>;?>>V>>H>o>M>>F>CY>C(.=07=\i~'>H>]n>KS>=;=t=?/='Y=2>%O6>rJ>>c>Ѝ>'>dt>.<>O===ʎ> ?e>/B3>Y>k5r>Y<>)p=07=p5d>2ԁ>F|>AV>(>==*==d=Y=n=%=魚==J<==3m> >Q==*=x={=rܫ=t!={=| =h_=6=x>>w=*==w=S:=c9=u[=zG=w=R5Q=c<;;;!<;J;n;g;dt<%>KS>WOw>C(.>ٛ=܊=T=;D=T?=w====n={<&">m6>>>>\>=='Y=1=T=OW=2>GM>!7>==?/<(>\>x>>>R>=>>OW=T=-y ===:>)d!>\i>s_H>f>3=O=<(;n:g:t<;D==VJ<=R==a==J {= ==g=J {=s> 5>u[>3>7>FH>>|>S:=T=C=(^=D><>P*>k>>>i>GM=a;?:D9g:g;?<='Y=rܫ==^= =Z_(===_yN=ȃ>f>p5>̙>s>Σ>>>Jg=~=;D=0=>'>Z>>`>S >w>%= ;n:C9g9g:g;?>Dn>ѳ>>>,>">"#=n=(=!:K=>{>@>|M >.n>>`>s=R5Q;3m9g9g9g;3mk>@Y>u[>I>n>/B3==K<<_=f=T>w>;>W)>N>$̙=<:g9g9g:D;!{>^>{=dB=g$<;?<'Y<=C=a=%=[=07=v>=G==qp< f;n9g9g9g:g:C9g9g:g;<==Z> >v>==d=M+=&Tq=,s=t>f>8qD>u[>{y>~>@j==;D;?9g9g:t;!^>?C>WOw>T?>2ԁ> =D=t=>V>F7> >9%>qe>7>>L=51<;D9g9g;m<=c=c<<:g9g9g9g;dt<=L=>>>u[>>>l{>1L=Z==i>%>f>H>!?V:>S>̘>> )< 9g:t<=4=rܫ=p5=0<;:g9g9g;! )>XT>{y>]>>|>H> =ʎ=J]>::k>b>֋?[u?s? > >>k==̹;3m;t==m…=i;=d=p5=v>>T?>>> > >@>T==O>0>>>G? ?a>Ӝ> >GM=J {;i< ==g=qp=t=*==M+<<:g9g:g<.<>i>V>|Z>Y܊>=̹=x =>>td>Ѝ>[3>M>֋><>nq= =;!;%>@Y>;?>=ȃ=-y , >| >>g>F>\>+4=">KR>^t>T?>->=<_;:C:D >~'>> =;=d<;:g:g<= x=M+=`~=C=<\i:9g9g:g;#D>>/>&>%?==-y <'Y;3m;?<=_yN=/= =Z_(=R>k>f>^=*=o=x ==d>>(>I@>`~>f\>V>2> =2=DU=g==̹=:K=:====d=<;;g< f=0=y >^>P*>k>-'>.n>k^>.<===:>~'>M\z>H>>İ>İ>>.n>Q0>=T==E> >(>IG>V>@Y>-'==^tT>S{>>ƙ>Ow>̹5>R>~>%=07> >DU>O>qe?8?3F?2ԁ?4>ҷ>>\(O>%>O>M>J>H>I>qD>>4>.<=a=R=B= =n>GM>Q>ʎ>X?{y>Y>)>L>N f> >ٛ>u(o>j?'?Eǟ>)3>U>4>M+>>>?K!>>̘>d>%==d==n>#r>|>? ѳ?/?>>>^t>>'I>>Bu?8?]z?p?m?Ti?4>}>F>k^>P*>n>>?s?(^? f >>>Y>R==qp=s>>W>ۅ ? ?? .n>j>g>T?>">%>>1~?:?^?p?l?SJ?3>>L>k5r>Q>u >̙>lK?ӽ?+-H?&?> >j#>w==t=;D=:>|Z>>>hw>J]>ǟ>>1L=>>lJ>7?.~G?G^?Z#?V)?B? >h6>TP>Sx><~>^t>b>?4?C?~>lK>9>R=>Q=:*+>c>Ê>Э>>>V>(=ʎ=a>22>>?,o?6?4;?>ӽ)>C>_7>+4>&>.~G>rZ>>>M>ٻ>> >f=51= :D:D<=Y>0 >t#4>k>y>Dn> =dB=?e==>KR>2b>>F>a><>)3>Q>"> =?>>'I>a&>o>N>t>g$> 5==#D;9g9g:g< f=t=[> TP==T==XT==(^=5>T>.<>\>u >q!>Sx>+n>d=Z==~=s=_>w>8>$̙>==I=<(:D:D:g9g;t!<}<= := := =<_GM>(>)d!>ٛ>R=i===D=y =51=y-====K v_>;?>@~>+>d=J<=Y===y ==?===: <GM>S:>y>g>rZ>@> ===%`=2= f=07=yn===a<<ѳ<ѳ>Rv>>>h>̙>>::k==?e=^=?=i>`>>OW>L>;>^=^<*<ѳ<3m;g;<=,s=,=#== E=/=qp= :(>>Q>>t>΂\>]>k5r>Y=t=R=@>-'>T?>R> >x>b>d=N f@Y>u>>J]>P>>~>g>=~G=a=a>+>66>q$>>Tq>>@=~G<;D;:g:g;?<=c9==~=̹=o==1=t=}=>::k>2b>ʎ>>>g>>>s==/=魚>3>>g>>>>R5Q=@<(:g9g9g:g<==T==n===3m= :=]n=n>&>w>>E>D>Ϩ>>{>\i=m=t=a=J<>!:K>u[>\9>9>ݏ>?e>;=;m9g9g:g%>>A>>k>u[>/=?=p5=w==>6%>td>H>>S:>v>= ::g9g:g d>::k>O>>?/>~'= {=t!=c==a==:>^> >&=:=Q0;dt9g9g:g;?%>Y>r\>_7>'I=Σ=;dt9g9g:t<g>3ټ>Q0>N f>->=X==:K=:>2Q>{y>Q>̹>,><>/=s<R9g9g;<=c=<_<;D:D9g9g:D<;D= :=d>8qD>u >>>l{>0==T=%>GM>u >>t>>>v>w=[/>XT>?e> >7>I>Jg> ==~h=yN>)p>)3>#>>?f>=>̘>ѳ>=3m;t!;?<=a=ѳ==,=;D/>WOw> >u>2b>;q>C=m==ȃ>#r>v>>u9>臸>B>:>H>>O=Q0</<>3>q>k>g>a&> v_=?=]n=^>>c >A>>>>>`=:==0.<>K>Dn> =Ϩ>=)d! >nE">>KB>x>u(o>%=OW= :<;D;;?GM>@>T?>Jg>'I===<:D:g<(^>'>v>=~==;!:D:D;?O>`>a>=dB=R5Q<t<#D<#D<_(=<~=a=Z_(='Y<_<=;!;dt:D<ѳ< f=1=i\>V> v_>0>.~G>as==~G=]n=x =s>/>!{>@>Z>cL>UE>22>=n=T=F=h_=D=Ɉ==_(=OW=/=%O6< f<ѳGM>^2>>>> >@j>= E=>>HBT>>3>H>>!>m>Z> v_==n=:><>'I>Es>S{><0>=Ϩ>==I@=*i\=d=T> >^t>j>>X>ǟ>>Z>1L=> >D>>̹5? ?3w?4T?&#v>ߙ>5>lJ>7*>q$>%>M>>">>]>)3>7*== E=d=2=>!:K><>χ??(?k>2>,>]'>>8>u[>??DZ?YI?X?EA?,"/>d>>gs>Es>V>{y>~>T?9>Y>Ѳ>>1F==OW== >)p>f>/?? ?>>>>nE">>+n>:*>?5Q@?[l?pO?n?Wh?8N>NQ>]>|M >\>ui>>/?!?)?$)T?;>X>h%>-'=Ѳ=t=51>>>X? .n?*?>:>>a&>~'>)p>4>?7 ?[Y?p.?m…?V{7?6v> >9>y>Z>w>Tq>??,s?)?)>V>w>=̘=S:=a=嘮>~>>${?>>>;p>>?C> >Q>nq>)t?+M?F?Y?V3?Cn?)">>>^t>A>`>&>զ? D?:?>4+><>`> =<<=p5>)p>>qD>!>>f>_>N=L>{>>>2b>?+?51?4l? f >>>h%>.<>\9>1L>v->>җG>%>=:>>:*>(5=͝=0::0>u[>:*>>N>'=%==y->d>Py>>`N>`n>>>w>Y>!{>4=T> >.~G>m…>> %>>x>-==C;!9g9g:> ==E=5={=J {==Ϩ>>>::k>fL>~>y>\(O>/B3>=07=ȃ=dB=Ϩ>>V>ٛ>.~G>7>*>(==*i\</:D:D:D;g<;D^>']>8qD>7>%> =yN=51=d!==~=*===yN=?==c^>0>KR>M>9>GM===?=o=/=̘=ӽ)= f= E=T=<<;D<'Y;!<'Y<}<=*=R5Q=u[===v=6<ܫ<=g=a=O>&>b>+>#>\>N>==:K=y =s=t>T>v>>==<_<=^>_>Q>>>[>t>Dn=yn===̘>\>%>NR>_>M+>&=Tq<<<(;dt;J<*=R5Q=i;==y-=y-=~G=m=%`< =: =@>/B3>>~>>J>ۥ>d>u[>==#=yN>L>h%>>f>>u[>M=rܫ<=;:g:D<=*i\=x=?=0=Эy=:k=:*=(^=g=\i=嘮>F|>q$>O?T?>>>j>!{=ȃ=2=yn>?C>ѳ>-H>qD>>>Q=U<ѳ;9g:g;<=m==%=*=T=d=3m==a= >@>8>z?66?>P>W?>> 5=ʎ=?>@>IG>S >L>9%>v>q$>d=a<}:g9g9g:g/>4>Y>6>T>=:>}>r\>c=:k= =>22>4>>>Xe>է>M+=<:C9g:D6l>>>>Q>?e>2ԁ=~= %==> >P*>>>>gs>=DU:D9g9g;dt<=1=a=a=<~=k>Y>o>]n>-=t4=/=[db=VJ<== =~> >6f>+n>+={;i9g9g;<ѳ<_=<_<t<;D;?;n<;D=g=rܫ==?==s==-y @>8>-y > 5==<=:g9g9g9g:D;;J;:g9g9g:g;?=g=~>2b>-7>+>-'===x =x =2>>P*>>>Q>U>=C;3m9g9g;t!>UE>r\>p>P*>M=Ow=?=D=07><~>>>V>>>: =/;?>v>?e>>o>1===>>\i>U>=>F> {>>Z=$=;;<=22=qp=m=rܫ==̹<_<:g9g9g;g<<5Q=d>=̹>x>Q>:*>nq>-=T==>T>Xc>F>j>΂\>L>8>W==*i\q$>Z>u[>qp>M+>O==t=3m=>0>f>eh><>̙>H>6l= f= 5k>8qD>2>-'== x<;D<==k>V>@Y>s_H>aS>x>K>=?=`>+n>%>w=5Q==<;D:t:g;n<ѳ==3m=?/=t<t;g9g9g9g:D;J>= =Tq=: <<=>)d!>&">-'=====a=> >8>2ԁ>@Y>3> %=~===]n=_yN===n=5=m=8= ѳ<5Q< fO>KS> >>>l:>/B3===/=2>)">]u>Q>7>>>>Dn>GM=~=yN= = >>!7>)d!>GM=ܫ=2=T=`~=[db=5=J>>G=>1>qD>,">V>̙>y=Z> v_=5Q=>*>u[>Y>;?\9?$ZO?*z> {>u>`>/>ٛ>>22>dR%>>8>]>k5r>== E=5=*=;>B>wt4>>6>>e> {>>D>V>d>W>KB> U?22?D?Eŕ?9?M+>Э>Y>_7>>>@j>pI>ݏ>Эy>s>ޔ>> >!{=Z==51=O>>>1]>m? ?>ۅ >`->V> TP>>qp>1&>>td>N f>Z>t>>?q? u>a>>N> =̘=s=>*z>66>s>I?H>RF>զ>F>Jg> )>%`>pI>??D?X4 ?X?Eޔ>KB>m…>I@>\>nv>Σ?/?C?s>?>>^t>==_yN=_yN=>Py>zS>ӽ)>>>*>+>,2>+>2b>V>P|>yn?4J?D?D?5a? >T>Q>M+>.<>C>>[>,?/>Y>֬3>V>G~h>T=%`<_(v>>v>ݏ>>>>F7>Y=:>>0>@>Ê>Ϩ?#^?!>>>>N>>>>Z>>v>a>=>Y>u[>~'=2=;;3m;J=rܫ>>S:>n>a&>4 >v>= {=51=T>'>AV>>>>,>f>|M >::k> = =͝=d>>V>w>>H>ba>ٛ==;n9g:C;t!<t=| =0>Q=G=̘==T=i= %= >-'>0>Pl*>dt>]n>@>Q==51=/=?== >~'>'I>-> >=^>!:K>->+>L==Y=N=g=d====07=O= E=qp 5>W)>zG>,>nq>@Y> =:k==M==0=?>,=m=?=<*޵>O>>>d!>>>">2=9==t=J=p>%`>C(.>T?>@>d= % v_> >w>֋>D>R>,>`~> =Y=t=ʎ>~'>]'>x>GM>>hg>d=^t2>>+>Z>>A>> >~'=:k==嘮>3ټ>4>,> >M>>B=2<:t9g9g;<*=t!= Z=ʎ== E=T= ѳ<==j>->է>΂\>#4?>6>zt>>=OW==!>@j>>7>u>1<>C>W)=ʎ<t:D9g9g:g<'Y=1=t= ==y =~2=c<<=>i;>{G>>l>V>F>R>`>===t>->>Z>>Y>8>@Y=)d!>>>w>3>">)d!=ӽ)==x=:k> =>G>{>8>>\(O> =;D;t!9g9g;<5Q=?/=k=a=0>N f>fL>T?>']=?=a=M+=I@=x =n=>>->"==i<9g9g;V>&>::k>*>%?=`>6>6l>%`=…=n=t!=C=T=07>5a>s>+>u[>?C==C;m:g;g<<=g=g<4>?C>\>[><0> =51=x =M+=a>(>Zv> >&>8>a&>-'=t<;;m ѳ>AV>`=:>^2>=J> D=?=3m==R>>Xc>` >:>>`~>~'=Tq&">B">@Y>=d=R5Q<<;D=)d!=>1F>i>}>n>@Y>޵=O<d>Y==h_<;t!:DQ>%O6>6l>-y >==g$<_<;D;g:t;<= :=VJ<=^t=1{>d> ==n=!:K+><>=*= E==`~=R5Q=R5Q=`~=f=XT=)d!=g< f<!7>IG>^t>W>4\Y> ===c=0= Z>V> >C>h%>w>j>B">ٛ=2=E=ʎ==ʎ==07=07= f=I={=C==̹=K==M=E>L>a&>8>f>+>V>?C=:=T=s>>9v>u >k>">Эy>~>L>td>;?>GM>Y> >>'I>IG>]'>M+>!:K=d=2==R=%`= E=G>8>=>&>H>`N>*>k5r>-'==>%>qp>`->?*?)? 3>զ>>qp>=̹>#r>>8/>m…>+>i\>>k>8>=dB=:K===T>@>+>>F>̘>R>z>=Ϩ>=m>;D> >??3?6%?->t4>>>M>-y >+4>Xc>>>ӽ)>+>>ui>ٛ==i\= =I=n>-[>>>ë>>̙>n>&=a>>@Y>?e>V??3w?5a?,"/>>L>|>Dn>&>*>`>|>#>2>T>>f>"#=i==;D=0=k>:*>s>s>Gn>>>EA> =>%?>0>y>M>,?L?$ZO?>ʎ>>[db>%>>>N f>8>> {> >>t#4>-'=51=_yN<']>n>> >Rv>ٛ=07=ӽ)=yn>/>T?>D><>6>΂\>>l>Y<>==yN=G>%>gs>(>>|>@>4\Y==N f<;g;;?=g=Y>7>,2>'I>d=a= Z=y =%> >+>T?>y>:*>k>ga>1F>g==t==OW>g>)d!>N>_>UP>+n=$=T?;!:D9g:D;? TP>q$>-y >2Q>)d!>'==t=T?=+n=XT=t=͝>T>d>>*z=U=;D;J9g9g:g;i<< f<5==,s=?/=0=t=g>d>~'>d=yn= =T=(^=c=?/==n=_=U=== :<:g9g9g;n<==R=(^='Y===c=c<<t2b>!7>!{>-'=O==h_=3m=J {====̙=d=T?<;:g:g:g;i<= 5=Q0=a=dt=\i=K=*i\=g<ѳ/>.~G>P*>W)>AV>===\i=Z_(=g=:K=/=5Q=5Q= =VJ<<};:D:D;m<==[db=| =R=R=T=[db=c<$>ilK>>i;>E>P*>=X=qp=^t=R=>{>>+>=*=u[<=;:D:D<;D<==̹=zG===t=zG=<ѳQ0>XD>d>>f>K!>-== =h_=t=!>3W>k^>>r\><~==(^<#D:D:C;3mw>o>>˓S>d>s>C>Es==ѳ=| =>>d>(>>XD>ui>=<ѳ:D9g:g;3m<==3m=ѳ=o=o===*i\ >nE">M>a>T>>F>F|=?=:*=,=> v_>s>>r>f> >+-H= %D>a>X>>Gn>Q>,s=*=x =rܫ=2>-'>]n>>+>'>p>L= Q>WOw>j>>>M> =5=A==̹==~>%>Y<>qT>d>/B3=:=;9g9g;3m<==: =-y =,!:K>2ԁ>'Y>v>==K{>d>q==0;J9g9g;3m^>=ʎ=YY<'Y:D:D;dt;?</d>===~2= :<ѳ<t=]n=a>>+4>!:K>{=?=g;?;dt;;!-'>==o=Q0<;J<;D=Q0=> %>-[>#r>==*޵>-'><=yN=(===J {>ٛ>x==̙=g;?v>>~'>>>=Ow=51==y ==?=/=%`=Y={=L= :<>?C>Q0>IG>'=O=ev>>']>L>u(o>>y>T?>'I> === ==Z>R> I>T=*=5=f=3m=,s=K=_yN=5=2>/>d>~>u[>N>=?=)d!=m=Z>)d!>\i>)3>>l>>E>a&>+n>i;>>{> ?e>f>?C>S:>F|> =E"=D=qp=J {=J {=Z_(==>7l >u[>D>K!>\>=n=| =>w>C(.>\>7>>֬3>r>>Q>?C>V><>R>x>>>qp>>>Y<>=@=T=N f=(^=(^=x =:>)d!>kv>+>~>Pl*>~'=ʎ=/=ȃ>>L> >̙>#>[3>L>>w2>2>s>R>{>>L>">>(>p>%O6=*=u[=*i\<_<==8>w>C(.>`~>WOw>/> ?e==y =*>>C>u(o>>><>>k>Dn>i;= =t=L>^>@Y>u(o>> >^t>GM=X=0-'>)d!>%>O= ===> >0>V>r\>">\>a&>/B3>T===?=51=p>>IG>^b>V>+4=:=w<<(;3m;?<<=a=n=?=…= f=5=| =T=o=07>>-><0>;>)d!>d=%=R=?/= :=;D= ==2>~'>q$>x=:=x< f:t:g:g;<;D< I>"> )=!==\i=R<==^t=<-'>>(==:K=N f<<=g=+n=m…===i;=rܫ=g;?:g9g9g;3m<= =0=?/=?/=0= :<ܫ<};?;<'Y<_=h_=Y>8>AV>L>4>O=== 5<==M+=s=嘮= ==?=;!:D:g:D<<>N f> >q>pO>1L=!=t=22===>{>'I>;?>,o>=%`<_;?:g:g;3mq$>q>S >\9>)3>P*>:*=?=3m= ==̹=ʎ>!7>V>lJ>_7>-==6q$>r>u>f>>Q>== :==Q0=>->eW`>z3>oJ]>>=T=T? >LW?>|>>u[>2==qp<5Q<=B=>k>P*>g >Y<>)d!=:=-y <'Y:g9g9g9g:g;?<== 5=<;g:g9g:t= =?>>;>I>1 Z> ==V>+> ==:*v>=2==XTw>L>>=m=d=n=/=51==o==51=~= Z===C>a>=:=TP<*<R<5Q=5>V>q$>;?>Rv>XT>F7>%> ?e= =yN=Эy==s==>%?= =*= :=-y <t^>ٛ>==='Y<=3m=Ϩ>>GM>;>Z>td>y=Z>gs>>>-'=~=07=Ow==ʎ=t4>> >ٛ>+=/=Z_(>>=!==Z_(=={=:>$̙>G~h>a>u(o>u >`=:>2ԁ> =嘮=t=̘=n=̘>޵> >1L>+>=Σ=h_ =>*z=t=D=h_=?/===p>$̙>Dn>WOw>\>S:>4>^=0====== >>+4>%> TP==VJ<<;J<(GM>0>>OW>6%>"#>=Y=%?=h_=g$=t!= =n=܊>{y>><==5=*<'Y;;<;D<t<_=0= =5=t=| =C===h_=~>{>~'>&>d=d=2=L=g<<<=*=u[=?==:=U= :=C<;:;#D<T=07=OW=,= :<;!;!<== :=x ===-y <ѳ;g:g9g:g;GM>>d=a=s=<~<<<<=T=%=J]=;==*i\w>/B3>;?>"===><<3m >GM>d=O=T^>0>;>!7=[= %=<<'Y<ѳ=0=%>i;> >=E"=x=g<(:g9g9g:g:D;D&>>w=͝=f{>> =5Q=t!< f;:g9g9g9g9g:g;n<(<;:D9g9g9g9g;=?/=51=07=Z= f=I< ;:D;#D;J>-'>~'>=2= f== =n==^=~'== E====0<\i:g9g:g:T>q$>->/B3>%O6>w=a=~=51= =:K= :== Z= f== =Y=m<:D9g:D;w>, >>><~>*>w=:==y =n=5=a= %==yN=~=[=:=t=;m:g;<">,2>;?>3ټ> 5>T=51=x=d==R==N=m=Ow=T=?=Ϩ>==+n<;D;3m< =<ѳ< =(^=h_==t==f=#D/>q$>'I> v_> )=ʎ=%?=VJ<=M+=J {=?/=I@=rܫ=t=51==Ɉ=2==>>V=ʎ=,==g<5Q<<<*=N=Q0=T===w=4 I> >V=yN==D= %= =XT=R5Q=rܫ===t==L<:D9g9g:D;!<5Q=C= =x=rܫ=c-'>%>']>>\=Σ= Z===qp=rܫ=R==2=_===,s<'Y9g9g:g;g<\i==a=s===(^<;J;?<=d=> 5>2ԁ>4\Y>%O6> =d=~G=M=R=x =~2=ѳ=Tq=dB=0=Эy= E={< ;:g;<'Y< {=!:K=k=d===: << =;?T> v_>1 Z>0 > v_>*z=ȃ=:K=?e={=h_=rܫ===j=:=ӽ)=J=^=,s<ѳ;?~'>!{>>w==n=R=f=?/=-y =<~=e=x==n=n===: T> >{=E=5=p5=?/=N{> I>=:===R=R5Q=='Y=^t={=zG=Q0= x<;dt9g:g;3m>4\Y>C(.>6%>ٛ>T==%`=u[=L=h_===D=y ==*.~G>^t>rZ>a&>;>:=9=Y= =qp=(==J<=Z=!=*==&Tq>9v>h%>|M >nq>G~h>/=?=n===̙=ʎ=?> >c>޵=5Q==<}<({>-[>T?>e>Y<><~>GM=9=̙=R=R=?==魚>:*>d> == Z=dt=R<<<=0=rܫ=t==ȃ=/==R;!;g<ѳ==魚>V>2>;?>.>ٛ>=/=TP=h_=i=R==Σ=T>{>T= = Z=x =<_<_=c=C=x ======XT<;;g<}=Z_(=>T>d>d>f==2= =C==c=: ===y-=:=*= ==R5Q= <_===+=E==zG<;dt;#D;J>>>d= ==f=t==0=T==:*=DU<;t!9g9g:C;dt<ѳ=K=2=a=9=/=\i-7>_7>w2>n>HBT>`=a=M=m…=_yN=:*===嘮=ȃ={<;:C9g9g;g>a>{==C==Q0=:*=̘>q$>l{>+>>̙>?e>KS>w=~=Y===>>)p>'I> =D=< =:D:Dd>1L>;?>!7=E"===1=Q0==9>8>>\Y>>ǟ> >t#4>!7=J<==?=5>~'>>>b>k5r>K>O=Tq=<>?C>I@>/B3>R==3m=%O6=e=>;D>w>>x> f>>~2>-== =*>޵>>N>x>g>m?>1F=d==&Tq< = := :=C=>>*>7X>$̙>V=̙=*<*==?>&"> >Tq>>}>>l:>'I=?=n=*>T>`>@>i>w>g >7>4=2=x =: =0=-y =M+=ѳ=:> >7> =;=<ܫ >F|>m>8>Q>oJ]>@Y>d=*===> ?e> >>>LW?>@j>#= = E=g=T?='Y=(^=C=w=?=Σ=嘮==i\=C<ѳ< =s>.<>=̹>4\Y>!7> ?e=@==g$=zG=̙=E>T>'>>>==s=]n=3m<5Q=g==I@=| ==n=5=i=g<<g<=3m=x=ȃ=:=d=嘮=ȃ==[db====0=<;?O>s>f=X= :;?;3m;<<}'>%>']>-'=̘=(^<(;ii;>$>$̙>"=D=< =<'Y> ==~2=Ow=ӽ)===J {<;:g9g9g9g9g9g9g:g;m<;J:9g9g:D<+n d>GM>&>=i=<_*( >vn>> E>6w>V>bM>B=J==D=>d>*>?C>4 >d=tQ>>>hg>o>T?>M=n==t=>d>`> >Y?\? v>ض>C>C(.=i=dB=yN>'>>>s>t>>|Z>-==R>d>Z>>>D-i=m=s=t=>ٛ> >?{y?)"?(?k>>m…>'=t>/>)d!>eW`>XD>y >w>O6>>f==*<_=I@=N f=>%`>m…>>S >>V>Y=I=,=>>>+? #?+=?*M? >>z3> 5>T>>/B3>q>k>v>">>>B=07=d=[db={=k=> >S)>;q>>z3>C>==C=>/>l>@>>??H>%>Cz>k^>>>>'Y>]u>>Q>qD>Ѝ>>Dn>޵=:k=d=T=i=k=>>L>\i>IG>k==x ==3m=ʎ>3ټ>>qD>>a>>>AV>d=yn=>-'>3ټ>n>>>>l>+==/==[db=C=<~=u[=ȃ> >>d=?=?=/<= ѳ=>*z><0>r\>>k>i>9v>w=t=/=51=_>w>)">J {>Z>NR>-> =ʎ==T=<=g=*=x ====?=]n=g-'>ٛ>B> == ==w=(^=;D=^=ȃ=p> I>><=5=%=}=4=;;J>İ>><=y-=,s<'Y;dt;3m;>.~G>N>T?>=̹>=Y<t;i;JL>P*>n>t>[>"#=< {<;D<< =7X=~2=/=i\==T?<t:g9g:C:t;t!;#D:g9g;3m>R>q!>u >\(O>!{=< >3ټ>T?>WOw>=J> =h_<;DaS>&>>=?<;dt;>{=a=a<_;t!:g;?==_yN==u[=(^<=:D9g:g<ѳ=YY= =J<==/=p5q>!7>;?>?/>+-H> = %x>>޵==C==3m=D=ȃ>w>B"> >>է>|>IG> ==3m=R=+>/>&> 5>=Ϩ>=!:K;i:g9g9g;t!<==qp=yn>1L>\(O>a&>C(.>O==x =ѳ=>>F7>>ƙ>:>>̹5>N>;==Tq=̘>^>;?>g$>,>w>Z>d=h_<ѳ;:D<===2>'I>u >>XD>4>Q0>===a>#D>+>R?Rf?.?/B3?*>Эy>rJ>=嘮> >6l>v->>ԁ>u>>g>GM= <5QL>>.>i\>KB>rJ>'I=*==…>;D>V>8 ?/?9'?:*?1>;>/B3> I>>U>>>T>0>0>R>g =~=T=)d!= =R=_>Sx>l>i\>=>>>6l===yN>>OW>r?'?1?:ݰ?;O?2b7?;q>>Dn>İ>%>Y܊>>Э>9>E">>`N>K!>as=s=ѳ==x=s>4 >q>8>̙>C>| >*=5Q=/= E>%>>9?(?2?2(?(>ޔ>>@j>ٛ> >F|>)3>X>T>G>>F>">"===s=:*=R>>M+>> >~W>KR>d=2=T?=T>>b>>*? ? >>>nq>'I>>>']>_> >ԁ>>c>>Z>=a==T=]n=;D== >'Y>;?>->=E===3m= E>>k5r>V>[>>>>hg>(>=嘮=~>R>!7>Sx>66>>>Y܊>!:K=p=51==<d>.<>B">?C>'I>= =y ={={==?>w>!7>->%>^===XT=0;?;;< ={= == ѳ</;g;3m;?<= =(^= 5#D>B>IG>1 Z>{y=N'I>a&>>+>t#4>;D==</<>HBT>">>b>>^t>=M+>KR>@>է>+> >`~>w=?/>T=5Q=*z.<>k5r>>?e>z>@j=<_;<= :===p>{=G=͝= -7>P*>V>;D> ==i;?;g< =<=5==n=E=+==C<9g9g9g9g9g9g:D<+n=<~==i=m=Ϩ>=^t;?9g9g:D;?<= =^t= =T=?/<t:g9g:g;m<<<'Y:g9g9g9g9g:g;dt<<ѳ<(<g:g9g9g9g9g9g9g:g9g9g9g9g9g9g9g9g9g9g9g9g9g:g:D;t!;t!:D9g9g9g:g:t<<<=g<<:g9g:t<= :=a=T=u[=C<_;?9g9g:D<=L=x=2=X=D=zG= :<;D:g9g:D< f=zG=2=͝==0==T= ѳ<9g9g:t<=p5= = =5==:=y =XT<t:t9g9g9g9g9g9g9g:g<===E==Z==n==;9g9g9g:g:g:C9g9g:D;?<'Y<;g:C9g9g:g> =:=sV>%>C(.>L>::k>=n<<}= :=^=n=;===Q0{>>> I=U=Q0<ܫ==rܫ=>>@> >k>D> >_>x=M=Q0=t= >>*>2ԁ>']>{=<;t!:g9g;<==}>>AV>m…>u(o>WOw>==x =T=~G>>A_>a>c?? eG>g>>UP==2=T>`>Pl*>rJ>c>> >.~G=2=R<;g<= :=>9v>>|>>>g$>-'===d>!{>/>z?)"?4l?5 E?,>O> >L=…>d>F|>>>ŵA>̘>>a>;== :<ѳ=22=qp>T>a&>V>>>>j>;= ==?>>>ݏ? [?4?A>`?B?6?><>A>^>"#>eW`>L>>>_H>>j>k>=s=<~==s>+>i>>;>`N><> >KR=d=~G=嘮>A>i\?1?6?B=?B3?8/?ӽ>>V>ٛ>*>h%>D>ԡ>NQ?,>>>b>1F===^=/=yN>KR>m>><>̙> >=J=嘮=x=>.<>>NQ?/R?8@?9?1 Z>>s>N>k>#D>Q0>B>]>臸>˴>>s>E>3ټ=d=51==x=>d>`>>nv>o>^t>&==g$=i;>d>t#4>?@?!Z?!?66>>>.<>-'>'>)p>pO>I>2> >X>u>td>k=嘮=/==g$=;D=R>R>4 >K>>>M===+n=I@=>'>}>Tq>>)t>I>~>3W><=07=yN>>)d!>g >z2>>>r\>,2==/== :< B>@>XT>UP>;?>GM=_H==T=x =/=!>>.~G>@Y>4\Y>= =t=F=(^;?;:;gw>i;>{=:k=-y <#D;3m:; =>::k>\>c >L>=/<ܫ;;dt;!>>zG>>-'>U>Y> TP=^t<;D<-'>_>>>I>>{m>&"=<<ѳ= :==>>w>v>=a=d<:g9g:g<(<x>cL>">>>>Y>(=Yd>>-'=m= =:t9g:g;T>F7>g>>rj>>cL>d=C;? >s>d=G= Z= ::t9g:g;g;3m:D:C9g9g:g>I@>nE">ui>\>%=-'>GM>*z=n<9g9g9g;3m<==3m=d==s==;D9g9g:C<(=g=<5Q;n9g9g:g;<t==R=d==TP= 5<#D:g9g9g;d>-[>;?>+> =<<}=g=rܫ=d!=y-==̙=C >^=_H=Tq=* v_>g >>>)3>W)>w==C==ʎ> > >)d!>8=yn=<*;?:g9g;dt<#D=DU=>.~G>Z_(>a>D>d==0=*i\=w=~h>>">2>n?;>D>̙>N==/=~h>O>C(.>td>` >>u >+n=51=(^(>w>-'>>#>W)>v>=t=T=> )>`>¥??1?22?)>}>>~'=%>,>951>Y>eh>)t>s>@>E>8/=='Y<ѳ==K=>Q>'>>y >>>+4=ʎ==s> >TP>!?1?\?4}? >p>2ԁ=>-'>T?>:>>Bu>P>܊E>qD>V>-'= %=(^=rܫ=T=O>Y>b>7>>9>)3><~=;=i;=s>'I>a?Q?2ԁ?>o??4?5Q@?>2>C(.> I>a>U>C>I>…>^>>!>i;>-[=%==^==ʎ>;>{y>>Y>f>>,s=̘=zG=n>>?e>0?*W?4J?5a?-`>!>6V>;?> >d><~>o>j>>6>Bu>>Z>-y =&==x=g=R>{>P*>|>)3>66>N>^==-y =x >{>\(O>>ط??>ܫ>>r\>L=m=t4>>\>}>e> {>u9>U>jq>:=ʎ=t=_yN=J {='Y=a=07>#D>8qD>+4>^=ʎ=e===2>GM>ilK>\9>d>d>>p>(==Y=2=$> %>W)>U>S >TP>hg>!7=;==p5<_Y>1 Z>K>IG>.~G>=yN=t=1='Y==T>w>'I>8/>->O=+=rܫ= I>^===(^;i:D:g;3m<== :=J {=I@=c<#D:g9g9g:g;=<(<R;g:g:g;3m<==: =o>>51>Y܊>`>IG>=<_;dt:D;<=B=R=a=| =N;i9g9g:D<<t<t<'Y;#D:C:g;?>w><>>>WOw> I=_yN<;?<t=4=?=:=嘮=E==+n;?9g9g;3md>]->>q$>eh>Q>z3>%=a>O> =*=M>`>m>ݏ>,>|>Y>)d!=t<\i>ٛ>>g=:k=%O6;t!9g9g:t<#D<<<'Y;9g9g;t!=I@=>C>\>XD>>>dt>=_yN;;J<ܫ==>>>= =%='Y;dt9g:g:t;m;n:9g9g9gd>H>nE">u[>^t>']=n{==:=s>&>= E=,:C9g:g*z>> =Ɉ=: %O6>]'>u(o>`=:>,s==0==-y ==ȃ=Z>=[==N f<;:g9g:D;q>%>+n>7==Z_(1F>>u9>>>R>%==Z_(==O>L>@Y>Z>]n>>>=t= :<;D;3m<<ѳ=^t>>A>qT>y>_>"#=n=C==0=>ٛ>d>N1?~??AO>D>b===51>O>KR>k>*> >+>l:>=I=c>oJ]>>7>>T?>==(^=u[=07>C(.>W? #?/!?0?$ZO>D>> I=:K=d>!7>n>U>T>,">> %>T?=t4=rܫ%>w>է>>>b>=/=)d!=}=>Y>?GM?0?1?&b>>)3>-'==E> >u >>R>א>>( >s>i;=/=1=C=N f=>^>\>v>>8>aS>N>=:*=g=M+=*>KR>>?!?&D?9>j>u[><=*=n>d>Z>%`>>W?>L>>i>d=Tq=Q0=: =<~=<~= E>ٛ>N>`~>N>/=*=J {<ѳ<m=/>!:K>@>f>Y>ߺ>Y>>>=07=5==>'I>w2>f>i\>>H>>=?=:*=3m=R= >%?=%=,<ܫ->p>d>>w>>>=y =C=(^== >)d!>Z>t!>k5r>?>=5="?<^> 5>q$>d==?=(^>%`>~'=[=ٛ>9>@Y>(=m=<ѳ:g9g:g<;D= =[db=t!=F<;3m9g9g:g;i>Y>{m>>lJ>4 =a=*;:D;!===*=Ɉ=~=:*=;3m9g9g;dt@~>| >m>s>{y>[>w=a;!;m<=S:=?=T>޵==̘=| <(:C:g;n<ѳ<5Q<*AV>>nv> >I>`>i;=i;i;?<=u[=%>+>> I=*=/<:D9g;3m(>ga>>>z3>Dn=G=%O6:t;g >=a=t<m:D9g:g;;n;:g9g9g;=dt=d>+n>P*>WOw>@Y>d=<;D9g9g;<_=R===;==h_<ѳ:g9g9g9g9g9g9g;=: =Y=> =a=I<9g9g9g;n"#>k^>>m…>+4=͝=c > ==?=L<;?:g;g;J<_(=^=G>>#r>d==R5Q<ѳ;;!==2>GM>I>,>9%>f>u[>=\i>(>P*>^t>G~h>B=ȃ=_yN>F7>R=>9v> ==g<(<ѳ=x =07>IG>>܊E>g>6>S >%=T<*=3m=?>>T?>H>>>W)>i;==!:K>Q0>^t>EA>=2=c;J<t=x>>^>d>⩥>[T>>է>*=>ba>>>b>u(o>']==,s TP>3>C(.>.~G>v>=<_;3m<=| =>Jg>|>L> {>y >~2>a= +>KS>v>>>8>j#> =Y='Y^> =n=P*k>g$>>>|M >9v= =WOw<>V>r\>i>?C>k=<_(B>1>4>q$==t=;;dt<5Q==O>>+4>%> == Z=;t;:D:D:D:g9g:D< =<'Y;?;dt:D:t;g;dt<=f==E=Ow=51=g=;J:C:g+>N f>U>>>d=%`GM>> TP==:D9g9g:g;?=={= %==f8>4\Y>!:K=*=3m;!:t;g<(==T= E=̘=n=/=a< <'Y;g;dt;?<=0=t=̘=db=J=x <;n9g9g<'Y=?/=>d>N>h_>KS>=x <#D:t;t!<;D=-y =>>B>=:=Tq=8<t;?;n<<=-y ==E=07==R=;9g9g>WOw>n>N>d=zG<:D:D;J=-y =@>~'>-y >'I>Y=n=XT^>4>D>+4=Z=R5Q<:D:g;dt==T>d>']>#r> I=~=9<>==s=;:g9g:D=g=?=[>">Y==^<_;t!:D:g:D:D:D:D;g<(<;:g9g9g<g=,s==?===Q0<t:D9g9g:< f=T=U==d=̙='Y;9g9g9g9g9g9g9g9g9g:C9g9g9g9g9g9g:g<ѳ=)d!=o=w=DUd>= =n=;9g9g9g;3m<=(=3m=&Tq< f;9g9g:g;#D;;3m:g9g9g9g:C<=8==>-'>B>*z==;dt9g9g9g;g<=*i\=_yN=Q0= <'Y:g9g9g:g:D::g9g9g9g;g<_=:*=0>T>޵==<<'Y;g:g:D;< ==X=XT<'Y9g9g9g9g:D;g::g9g9g:C;3m<R">>w=n=x=)d!>q$>'=yN==<\i;g:g:g:g;!< f=R< f;t9g9g:g>=~= E=^t<<'Y;g:D:g:g;<\i<}<:D9g9g;<5Q=22=?/= =d=5 >,s>B>0 >*z=t!;9g9g:g:t;3m:t:g9g9g9g9g:D<'Y>C>\>KS>=;J9g9g9g:D;g;;g:g9g9g9g9g;g<;D<5Q=3m=I===fd>1F>H>7> )= ;n9g9g9g:g;n;!;!;::g9g9g:g:D;!<<=3m=h_=_yN= 5<<<;D I>> ==:D9g9g9g:D;? >f>&>*z=ʎ= <*;dt:g:g;J=R=m…==h_=R;t9g9g9g;dt<5==:=_H=a==B 5>Q>j#>^t>0 >==3m<;g:t<t={==J<=s=<:D9g9g9g;==?> I>>w==,<;f>D> >8>H>YY>:==h_ ==2=;3m9g9g9g;=3m=>>!:K>7=嘮=<*;? Q>L> >2b>j>^t>x=y-=qp<_(<;Dg>">{=<ܫ:D9g9g9g9g;t!=*i\=?>f>'>==f2>j>rJ>nq>7l =m=o=VJ<<_%?>'I>1F> =m= =| =*i\<;!;?<ѳ= :=\i=c9= 5T= ==;i:g9g:g:g:g:g9g9g9g:g;ٛ>K>e>Sx>=Tqw>v>=0=rܫ<*<}>T?>)3>|>c>]u>+= x9g9g9g:g;3m;dt:D:g9g9g9g:g;?<=_yN=><>>a=G=="#>nq>>>q$>xyn>~'=DU:g9g9g:D;?<;!;:D:g9g9g:g;J%?>>O= =<>a&>>q$>>e> ='Y:g9g9g:D<<ѳ<.~G>d>y>g >+=ʎ<t:g9g9g:D<'Y<<_< f<ѳ;J:D9g9g9g:g:t;i<}<_=4=s=p5=*i\u> v_>7=嘮=_yN;i:g9g9g:g;!<<< <<#D;g9g9g9g9g:g:t;m<w> v_>!{>-'=07==<'Y;;< f=N f===i;=rܫ=c<:g9g9g:g<;D=C=><>>"===g<ѳ= =s=yn>0>k5r>>I>^t>%==d=<<=a=>> ==yn==$I;J9g9g9g:g<=s>GM>W)>n>W>!7=Ow=,s<==3m=̘>)>{m> >>'>>a&>a=:=T==?/=>>@>T?>@>=̙< f;3m9g:C:D@Y>>w>>G>+=u[<=dt=d>KR>rj>Ϩ>>>A.>>>-y ===rܫ=i;>k>@>xyn>>~>@=:='Y;J:D:g:D<*=:>Dn>H>nv>>N>= <=M+=?>P*>U>2>>O>Y>` >.<>T=/==>(>Jg> >>4>NR>{=;D;!:D:g:g'I>k5r>rJ>l>2Q=*=h_<<_=51>1L>z2>)t>>R>eh>gs>=嘮=n=rܫ=d=G>->cψ>| >i>-[=E=g;t!:g9g9g<(={= >*>?/>-y >=s= :Q0>?e>>>c9> 5=Z=~=='Y=,s=D=G>ٛ>'I>==Z_(;?9g9g:g<*= =ʎ= =dB=u[= <t;?:D<#D=a=> 5>,2>L>=͝=y ==-y <<ѳ=R=h_==?=/= :;?9g:D<<<_<ѳ<'Y<;J;:t:Dv>>i;>=@=Z_(<3m:D:g:D<'Y==x =^=u[<_;:D:g:g9g9g:;J<ѳ<5Q=g2b>3ټ>@>.~G> =M<ѳ:g:g;n= =^=ܫ> >=X=R;dt:g9g9g9g:D;J<=< f<ܫ<_<<ѳ*>Pl*>Z>Dn>B=~G<:g:g<#D=h_=>>-[>%>*z=R<'Y:g9g9g9g:g;t!<(%>HBT>S:>;>Y==<'Y9g:D<}==>!7>::k>0 >d=?<:C9g9g9g:g:D;t!;!k>/>#D>O=U=:t9g:Di;>$̙>q$>T=<;D9g9g9g9g9g:D;?ٛ>+4>L=07={<ѳ:D9g9g9g9g9g9g9g9g9g9g:g;!=c=y =>w>:*=5Q=u[=< f=R=><>IG>f>2b>?e>Q=~=c:g9g9g9g:g::D:g:g9g9g:g;n<= =G>%>;?>2ԁ>==\i=%O6=h_=9>9v> ><>9%>(>>-=:D9g:g;<<(;::g9g9g:D</=R=D>w>;>T?>M+>)p==T=9=>{>S:>V>V>U>ƙ>>I@=2;n9g9g;gv>>2Q>L>DU>"#=yN=]n===d>H>>X>ǟ>`N>x>;?=D;?9g9g;g<=>&> >+=5< <=J {=_> 5>nE">>ݏ>W>k>=XT;n9g9g;g==c >M+>_7>N f> 5=><>=T=,<;dt9g9g9g;t!<ѳ=g=( >d> =yN=Y= ѳ<'Y;3m;?<*=8=a=T?=<t;n:g9g9g:g:D<>4=9==J {==22==O>/>G=>g$>i>N f>!{=07=x=(^<*==T===~=n==R;J:g9g:D;n=c=_>$̙>ga>rJ>n>:X>{===w=*>-[>u[>>>>ݏ>w>+n== Z= =t=&>>;>KS>7> =̙=c<'Y;g;>u[>ݏ>>,>>-y =n=8=>>h>i\>?ӽ? >g>>j>">T=ʎ=> >c >c>q$>u>gs>'=s=*i\>S >>R>>w>KR==dt=n>!{>>?)?6?4?as>W?>?e>::k>= >w>F7>t>c>h6>OW>>F7=J<=N f+4>]>>R>>V>KR==qp= E>/>)3>2?,?8`?5a?x>R>j>::k>-'>>>Q0>է>̹>[3>ɩ>#>Z=_H=a>>>L>g> >-==K=| >R>u(o>zt? Z?,B?'> ><>pO>$̙>=>>::k>f>>>>c>@=:=(^<#D:g:g<= {>7X>z3>?e> >EA>{=^=<_=>.~G>>~>ٻ>>Cz>y>-[> =Ow=n=>>EA>}RF> >>N> I=mٛ>+4>=嘮==&Tq<t;J= = {>)">a&>z>nq>C(.>GM=~=ʎ=M=[db=WOw==[>~'> >~'= =zG{=G=O=/=:K=| =: ==g=(^=h_==ѳ=t!=R;?:g9g9g9g9g:D;?;J;i;i<(<#D;J;n;i<===T=?=== =R5Q= < >-'> =:=*z=g<<t=J>/B3> =+4>u[>a>8>>cL>-'=<ѳ<=F= f> v_>UE>nq>e>7*=a'I>s_H>7>f>>\> =x <=<*=u[=t>*>a>{m>t!>F>=c:D9g9g9g9g:D;!<===<ܫ >D>x>+>n>.~G=Эy= :<;D<_(=p5=͝>>K>eW`>]n>1 Z=yN< f:g9g9g:g;@>"#>->M=a=_yN>'I>!7>{=m;i9g9g9g;g;!>'I>;D>+n>޵=d<:9g9g9g:g:g9g9g9g:D;!= :=Y> >8>L==5=3m=t=C=>~'>[>>f>l>a&> ?e=8:D9g9g:D;m;i;:D9g9g:C;n<=a>>?C>W>Rv>-[==x=a==Z>H>է>>I>u9>V>@Y=Y;m9g:D<<t!7>Z_(>t!>nE">I@>d==p5=?>>fL>,>΂\> >>>]'= fq$>W)>p>k5r>C(.> =Y=: =>>]n>>s>`n>b>>Q0=Ɉ<ѳ:g:g;n>/B3>KS>Dn> v_=%=%O6>0>I>>=>̙>g>%=%`w> =Ϩ>=K4>i>|M >l>::k=d=C<;D:D9g:g;!<=N=t= <;J:C9g9g9g:g:D;<=0={=w= 5>s>>=y ='Y=yN=̘=#=F >*>%>>/=Y=a<_']>@>: >=嘮=ѳ=&Tq=UE=U>^>;?>kv>>x>z>F|>-'=Эy=t={==51=>{>=L==J {<<'Y;m<V>Y>>ݏ>>zG>, = f=f=?> >M>8>~>%>>@>>^t> v_>T==>">6%>dt>zG>f\>*( ==| =c<=,=,s=>3ټ>>s>E>,">,>gs> =d=:>*>/>G? ?5@?5Q@?% >uY><>S)>#D>^>>C>4>>">qD>>>OW==g=!:K= =1=>^t>>ܪ>>>D>g>=n=07>>>|>Ϩ?8N?G,?Fy-?6f?k>>n>7l >q$>.~G>nE">>9F>>>>66>~'==M+<ܫ== >^t>>Y>@>0>>rJ>=y =a>8/>V?K!?:a?H2?F?6f?>=>p>3ټ> v_>3ټ>x>>M>Ϩ>>ȤJ>d>$̙==I@<2ԁ>C>L> >s>>Z_(>{=t=/>k>?e>܊E?.,?:J?7?)>Y>>Q> v_>>!7>ba>>̘>>܊>1<>|M >=?=R;T?;g<=yn>bM>>|>>u > v_=y-=qp=p5=5r>P*>>N1?v>?V>U>f>`>!:K>*z= >Q>.<>w>F>y >Tq>:*>;?=J<=3m<g9g9g;=_yN> >@>WOw>D>u==u[=N>IG>>W>l>vn>@>==dB=M=I=O>!{>I>\>Pl*>&=O=0;?:g9g9g;J=&Tq=D===i=<> v_>>w=…=U=s=x =WOw=a=d=U==ܫ=i=t=g;:C9g9g9g9g:g;n{>:*====22= :=*i\=J {=]n=YY=3m=,Y>,s>951>)d!> I=?=T?=='Y=C=rܫ==a==4<;?;?;?;g:D:D;?<t= =8=^t=a=C= ѳ<<'Y I>K>z3>p>u[>@>=====M+=t=E> =>>==<;?;3m:g:g;?<='Y=h_===f= :951>>r>Ѝ>>zG>%=D=*i\=={=0>f>Pl*>hg>[>)d!=<;n:D9g:g;<=(^=| =a=~'={='Y>WOw>C>>ď_>>>9=Ѳ=L=J {=?>R>I@>;q>>?e>a&>=4;dt:g9g9g:DS)>V> >s>>>2Q==VJ<=lJ=:k>O>Xc>Q>>i;>td> =p5;9g9g9g9g;g)p>">ݏ>>>F>pI>~'=5=: =p5=>/>AV>|M >j>>]n>'=-y :D9g9g;m*>fL>v>^t>%O6=Ϩ>=M+= x=?/==Ϩ>>>?C>W)>L>!:K=OW ?e==~=^t< f<}<=B=T===t4==:K>&">&=07=zG<:g9g9g:g:g:g9g9g9g:g;<_(=Tq>k>&>=_H= %=0= :=;D=> )>G=>g>>k>I=[=/:D9g9g;g;J<;?::g9g9g;g<`~={> >>OW>Xc>S{>-===`~==t>8/>?e>o>>=>d>+4= %;9g9g:t!7>]'>w2>r\>M>=n=h_=>{>V>>>χ>>>KS=ȃ<:C:g;!:K>\>u[>q!>KR>w=s=-y =,=!>N>a>>=>>W>Dn=@<:D:D;>::k>V>P*>(5=T=*i\'I>z>>g>>z3>#r=I>İ>-'==a->`~>ui>g >5 E=i=rܫ(> %>B=m==R5Q >f>%>q$> =ʎ= =)d!===R5Q=| =T=VJ<=<<=<;?;<<=-y =><>7>T?>NR>-y >{=%`= 5=C=dB>>7>hg>4>t>V>Rv>k=O=/=i\==ȃ=嘮=m=m==:K=VJ<=c< f<= 5=<~=#>(>cL>>">>>@Y=={=><>L>TP>~>>>[3>̙>p>1L>i;>V>,>>2ԁ>`>y>g >*==a=Z_(=,s=Q0=| =̘>>>>&>#> >s>vG>==>+>f>ê?%`?5?7|]?,"/>}>:K>i>6%>k> 5>F>>]>ŵA>>W>EA=d==t!=Q0=w=:>`~>L>>(o>g>L>Q> =X=…>@Y>+>?6%?GMm?G?:J?S >> >Jg>, >7X>o>>Y> >q>L>4> =%=*z= 5=#D= >^t>d>X>!>j>>>=~=07>;>~>3?8?G^?Gc?:*?nv>>>Dn>*>;?>z3>,>澑?V>>΂\>2b>0=={<<=`~>1L>|> > >h6> >b> )= =*>!7>*z>[3?,?:?8?+9>;>>c >*( >B>%>g$>ݏ>Эy>>=:>`N>> v_=D=+n;D;c9>> >>z3>']=E==̙>*z>M>ٛ>?:? >O>̙>r>(> =07>f>3ټ>>>2>y >O>L=?=a>AV>\i>L>=*===M+=]n=>'>IG>I>L>a>>M>GM=…==?= >{>.<>Zv>nq>eW`>;==a<;D:g9g9g:g;!=+n==E==d=K={>L>(>%>~'==n==w=h_=T==>v>>^>==-y ;J:g9g:g:g:D;m<#D<{>{=07=J=ѳ=\i=8=J {=qp===s=d=\i<_(;i:D:g:g:t;dt;t>-'> ?e==t=R5Q=3m=K=t!=/=R={=C<_<;C;g;3m:;dt;?`>>>I@>7>=Σ=| ==̹=M+=t!=^=̙==#=t!<*;J;;n;3m:D;>[>H>>g>O%>d=D=DU=J {=m==07>> 5>=@=t<;D;:t:C:D<;D=g=DU=T==a=| =&TqF7>"><>;>>P\>/B3=%=k=Z_(==嘮>*>ba>zG>m…>6%=:>h%>Tq>G>:>¥>C>G~h=07==g=OW>i;>\>>V>>s>`=XT;:g9g9g:gg>fL>g>>E>İ>|>Dn=嘮=D=a=5Q>>m…>>>>|>*=;m:g9g;<=p5==5==H<*>;?>m>d>>>P\>'I=y-=,==+>>WOw>?e>b>m>nq>&=UE;g9g9gCi}>|>ѳ>~>@Y=2===UE=| =2=*> >T?>l:>_>-=+<:g9g9g:D<= =)d!='Y=<ѳ;J;n;J^> 5>B=?==(^==(^=t!=t==yn> = =<_:g9g9g;g<'Y<(<t>GM>Es>\i>IG>İ= 5>;?>6%>GM=:={=,s=C=#>d>XT>)3>>Z>Y<> =YY;3m9g:g;#D<+n<t >AV>^t>Z>4\Y>=Y=1=WOw=Y>%>z3>L>>>|M > v_=/<;D:g:D;<ѳY>C(.>`=:>[>4\Y==x =g='Y=>!:K>u >V>̙>>v->=<t;t!:;n<<ܫ=N== =<<:g9g9g9g:g:t<_=>%>@j><0>GM=?=(<+n<t=>v>>J>>I>|>Q0> = )>R=ȃ=;D<'Y:t;m<m=>d>4>J>@Y>=̘=Z_(<;:g:g;#D<;DQ==:=5=J {= =u[<_ >i;>Y=5=/={=;D=(^=;D=_yN=qp=XT= :<<=/>(>@Y>=J> 5=?=}<_===*>&>@j>dR%>t!>cL>;?>2b=*=U==X=U= f=0=y-=:K=rܫ=0= =g==C=R5Q=s>f>C>f>u>w>q!>*i\==C==Z>+>n>>Y> f>a>b>`>,s>d>޵>> >V>1F>D>3> )=n==a=K=a=zG=> >p>=>8>v>C>\(O>Q=,=>a>dR%>5>V?#4m?+-H?>Эy> :>`=:>0 >>a>->`~>>9>>\>%=܊=:K={=XT=h_=>2ԁ>C>]>ٻ>>>s>^= %=%>'I>">C?Ȥ?6?::k?/>2><>z3>B>']>%>P*>(>>E>>>l{>d=n=,=&Tq= :=>-y >>Э>֬3>̘>I>ilK> =n=d>&>>s?# ?7?::k?.=>I>>u[><0> >#D>Y<>C>@>Bu>ٻ>@>|>==h_<<==g> >;q>R>`N>Gn>m>B=G==̘>>dR%>d!>?*H?+9? j>>>Q0>q$> >i;>F7>> E>̘>ƙ>u>q!>w=?=;;;J=>51>,>>>4>Y>x=ʎ=5=>޵>4\Y>>[>U>F>v>l>V>~'=Z== >k>cL>(>P|>}>@>3W=Ɉ=(^<9g9g:g< f=ʎ>>::k>-y > ==ѳ=p5==ʎ>^>22>e>;q>{>`>/B3>{=s=M=,=t=07> v_>G=>\(O>S)>*=T=(^;9g9g:g;?===*= =^=[db=!:K<==:*=%>{>>`>>k=͝= %=f=-y =3m=h_=d!=yN>> )==m=c;g9g9g:g:;t >^>{=̘=ѳ=?/=t=+n=]n=T==| =R5Q=R<'Y::g:g:g;<;D< f=c= 5= 5=*== <~'>2>>OW>+4>^=={=3m=9=_yN= =t=D=s=t!<>KR>{> >s>@~>R=/=K=<~=p5==E> )>~'> ?e==<;dt:g:g;<== x=I@=x ===f= 4>U>̙>y >>u[>!7=s=rܫ=XT==:> v_>V>m…>^t>'I=~< f;:g9g:g;?<=7X= =5=5== :V>f>j>b> >>5 E=n===> )>Q0>>l>d>d>^=<~;J:g9g9g:g<'Y=!:K==̙=Tq==)d!T?>k>9%>>v>CY>4 =T=R=Y=>>a&>>><>u[>f=rܫ;!:g9g;==qp=t=s==0<;n;i==51>+n>>>>>z3>8=~={===U>w>M>>m>` >`~>w==̹;9g:g7>wt4>q>r\>3ټ=d=*z=L=u[=Tq=~>M>I@>_>S{>!:K=<:g9g9g;dt >>=嘮=x=*=g= 5=_yN=D=51=07>@=*= % ==2=;3m9g9g:g:g:D;3m;g:g9g9g9g9g9g;=M+=O> > ==yN==;D<<==> >22>H>8/>w=Tq<t:g:C:g;;i<'Y<;;:g9g9g9g:g<;D=y >d>(>&Tq><=?=VJ<<_#D>Y>nE">]n>)d!==(^;m:D:D;<'Y<=<<ѳ>+>)">Y=m=)d!<}"?>V>k^>[>*==K-'>d= =x >/B3>C(.>7l >-'==)d! >=%=R=c>`>B>@= Z= <<=?/==>d>%>0>']>'=:=n====/= =D= =J {=*=<5Q>>A_>\>WOw>1>=u[/>-[>`>?e>u>ѳ>k5r>3ټ>>=t4==?=>>=?=51===VJ<=+n=)d!=22=0==[>;?>~>>)3>fL>q$===qp=?>*( >nE">V>>O>>ݏ>u[>9v>>^>:*>^>"?>H>f\>Z_(>)d!==I=rܫ=C='Y==x =~>T?>>D>i>~>+4=n=Q0=M>>D>D>>NQ?9>>><>N>%>-'> >>M>H>|> >u[>$=0==B=,<̹==:>P*>m>U>V>u[>#r=ȃ==> >HBT>ѳ>>yn?>lK>v>j>DU>f> >k> 5>`>2b>9>I>?e>>OW= = = :(>u[>>g>N>=n== E>R>4>y=Z>Tq>>4 >zt>>eW`> v_>==a>>S)> >|>+>>-y =~h=<~/B3>N f>B">k=:=n==i\=?>>K>}RF>l>a>>V>B=t= E=t==d>*>^t>w>td>I@>=T<};dt9g9g:g;?=Z_(=Ow>>%?=;=Tq=zG=]n==>aS>>0>@Y>6>%`=[=n=v=*i\=*=^t=X>>>.<>&>=t<t:g9g9g:D;<=22=,==qp=3m=N<=&Tq=g==:>T>==~=T=,sx>ٛ>=07=O6=VJ<= <=c=8=a=m=m=C!7>KR>WOw>A>=J<==*i\==t=XT===Z=E==<;:g:g:g;?<t=g=&Tq=C=T?=L=<ѳ;m;t!<g<=ѳ>d>XT>>> >A>=:K=K=(^=K=s>޵>+n>@>0>v>=:*<t;:g9g:g;?<ѳ=(=R5Q=zG=w=3m%>~>F>̙>>a&>-'==Z_(=J {=g=O>)d!>`=:>w2>k5r>6%=Ow=N< =:g9g9g:g;i$J>T>>9>~>e>=n=Q0=]n=t=~>::k>qp>E>{m>IG= =/<:g9g9g9g;#D<=A=| =T=S:<;J:g:g =>WOw>=>2b>E>C(.>=R=+n=R5Q= :=嘮>)">\>td>ga>2=d=;?:g9g:g<3m= ==J {=]n=;Di;>AV>UP>?C>'=~=0=,='Y=x = Z>{>#D>3m>'I>=T<ѳ:D9g9g;g==~=: <:D:D:;t!;n;;;;;t!:D9g9g9g<(=^=̘=Ϩ>=̙=L< f;?:g;g<=t=>v>= =U=XT<=;:t:D;g;;;?< >B>==<;g<3m=DU=?=2>>.<>?C>22>&>V=O=d=J<=:=ʎ=ȃ===/=T=C=<<<<t===>8>.~G>*>d=51=g<<_=>@>%>M+>w>H>Y>W)>%>==T==&=O>>Y>{=+==I@=g<<t(>@j>::k>GM=ʎ=1>@~>rZ>>k>>y>;>'>޵=5=yN= > >']>>OW>3ټ>-'=@=x =#D>>>2Q>=ʎ=h_=t=t!=܊>&>C(.>u[>i;>>>s>0> D=[=O=ȃ=T>'><~>Y>T?>*=嘮=g^>#r>k>k==T=DU=g=>B>9>]n>y>66>n>@~> I=E====ȃ>>4>Pl*>KR>#D==a{>==?=m…=I@=}=U> >!7>22><~>2Q>=E"=#==^t=M+=g$=Tq=T>`>+4>%>v>=n=(;g:g9g:C:g;g/>w> )=t4==s= :<<}<=R=t!= =$>Q=:=2=1<'Y9g9g9g:g;dt;i<;D< f==,s= :=<<==T?==n==n==C^>a> =&=5=L=<ѳ<}< f=3m==D=x=22<=;t!:C9g:g;<-'>;?>F7>.~G> =_=qp=c< == E=0*>]'>k5r>N>&=Ϩ>=w=c<_==x =:>q$>/B3>%>T=<_(;J:g9g9g:D;*>^t>l:>P*>GM=ȃ=T?< %?>+4>@>2ԁ><=5=<g:g9g9g9g:DO>;?>G=>->=D=c<ѳas>, >!:K==<*;m:g9g9g;<ѳ+>w===J {=07==%`<;D:D9g9g:g;'>>8>=d=ȃ==n=_=51= E==U=y-=51==L<;?;#D:D:D;==t=E==yN=Tq=(^>'I>7l >8>%>4=*==ȃ==o==51=yN=t4=…===;?:D:g:g;3mQ>L>.<>:X>4> === E=/==x=s=51=d> > Q=9=/=t;?:g:g:D:t>'I>'I> %>=?==R==T=rܫ=g= E=T> >R=yN==t;m9g:g:D;t!<=g=u[==t={=8= >>^===a= :=====L===魚=a=/=| <;g9g:g:D;<Q=?=n== 5<ѳ;?;<;D==u[=t==C<<:D9g9g:g;dt;?;J<R<(;:D9g9g9g9g:Dq>d>޵= f=== :<;!<<t=M+==E==x=*<ѳ;:g9g9g:g;g;D<f>w=2=dB=p5<<;D;!>d>d>{=%=t===~'= =}===== =?=/=J {w>V>GM>=͝=:*=rܫ=g=R=| =c9=n=R==Ɉ==={<:D9g9g:g;n<==Z_(=w=a=*i\<<;J<=k=E>>>7>T=51=qp=C=S:=]n=N f=;D=M+==n=y-=ȃ= = =c;9g:g;dt >\=*=/=&Tq=g=g==<=N=M+=:*=̙=n=t=i=;J:g:D;<} > I=yn=@==R=,=i=?/=C=_yN=m==I==,=;J9g9g:g:D;t>~'>~'>v>=d=5=m=qp=[db=C=C=_yN=,==51=:k=5=]n<;:g:D;dtk>>-'>\=ʎ==h_=Q0=?/=*i\=-y =Q0={=5==J=Tq={=(R>{=;=#=t!=;D= :==,==(^=^t=x==n==t!=<;?;t ѳ>i;> ===?==VJ<=#D=22=u[=ѳ====a= >'I>3ټ>(>i;=?===XT=1=^t=^= ==ȃ==m=(;!:g:g;?<>/B3>@>3ټ>ٛ>=J==R5Q=K={=:K=n= =p=~= E=h_x=d= Z=zG=K=K=x =/=/=9==?= {===(^<d>>=[=n=:*=Q0= 5=!:K=J {= =n=ʎ=yN=T=Y===;D<_<ѳ<}<==1=VJ<=s=x =XT=v>>&>8/>.<>=魚=s=x =?/='Y=R5Q====a=122>l>k> >Pl*>ٛ=yN=x=h_=a=x==yn> >=:=t!<*;?:g:g>>==!:K^>YY>^>r>KB>,><~>==T===~>>4\Y>>OW>!7=:=| L>%>i;=ʎ=I@<<==>">_>u>>̙>4>I@>w==I=D=J<>>%>KS>Y>C(.>==L<_^>İ>:*=n=C<AV>|><>>u(o><0> I=51=x=̙=0>޵>q$>@>Py>AV>k= =%?=.~G=<<==VJ<==O=Z==?= :</;3m;?=!:K=ʎ>>@j>Z>WOw>=J>=9==| =R==> > >->']>d=*==?/=N< f =>>w==ʎ==K==(^={= Z=Ow=m> ?e>=yN==XT=<><=d=?=;;t!;J\>*z=;=T<ѳ;dt;m>!7>5a>1L>M=Z==(< f=g=R5Q== ==x= <:D9g:D;i<*=T=><>d=O=t= >@>}RF>E>(>nE">)d!===B=i=Y=>>>O=d=;Dk>C>KS>-==T==K=^=&>->%?>>ђ > >s>o>B===i\=07>>Dn>j#>n>KR> I=T<;;dt>@j>n>w2>\i>=?=: =J {=d=>N>P|>2?K?>F>S >5a=a=n=:>w>;?>x>է>>ѳ>S)>V=qpg>I@>w>>j>, =5Q=H==s=嘮>Q0> >?9?>2>C>F|>{=ȃ=07>>Dn>k>P|>zS>>u[>!:K=51=VJ<=*=;D=*i\=M+=:>-y >_>m…>Uǟ>q$=y-=*i\< f= :=D>1F>>X>嘮>hW>>>>>== >d>6l>u[>>>N>qp>%=:=x=_yN=7X="?= 5==>%>3ټ>$̙>T==R >W)>i;>>@>t>[db>k=:=y-=@=Z>>Dn>rZ>|>u[>Jg>s==d=h_=c=g<= :===*=Z===YY<<d>3ټ>N f>L>22>-'====R=Y=d>-'>+>;?>0Gn>GM=9=%`=dt=22޵==8=R;!;g:D;3m<(<ѳ<d>(>->=a=Q0<;D;;< =<t<=*=)d!= ѳ']>Dn>K>0>g=p5'I>C>IG>.<==C<(;i)d!>-'=~<;3m;ng>>~'>==t;m;3mM>KR>l:>n>M+>V=n=<=(^==͝=~>{=a=>4 >;D> v_= =a=g=3m==Ѳ>%`>k5r>>>s> >h%>d=t=K=x= >>>OW>UP>R5Q>(=+= ;J:g:g<<̹=T>>R>}>g>i>)p=Ɉ=XT=p5=>>T?>j> U??W>p>>BdB=E=5=Эy>B>M+>I>|>>m>T?=魚=-y *i\>z3>է>6V> >Y<>==x =2>>|M >??/?0&?%`>R>u > =+>>.<>u(o>>>s>> >;?==*i\<_(=C=J {=>->V>6V>>>i>-'==T?=>s>|>җG?:?1[3>">=[> O>3>~>>ȤJ>5Q>s>7>`>g=s=R5Q=t!=[db=/>>g$> >l>>UE> =:*= 5=h_>,>g >?;q?$j?$z?> E>n>/>%?> >']>i>f>>]>D>>\;> )= E==p5=DU=3m=>%>Z>k^>WOw>$̙=i=_yN<_==>,o>>>n>>>D>B">d=!=5>d>::k>| >|>,>f>">8qD=Z=2=:*=0= />>^=L==%O6<<*=_yN=…>/B3>nE"> >4>k^>8/>w= ==~G=yN>w>.~G>XO>l>`=:>8qD> d=dB=/=\i/>>d>޵===T=&Tq===y-=d>^>B>d=?==R5Q=R<5Q:D:g:g:D;i< f=%O6=0= :>q$>$>=:=S: >9>Z>a&>IG>B=<*;t;!:K>Zv>|M >>k^>1L=*<;!<#D< f=?/==n=0== :=;D9g9g:g:g:g:g9g9g;?='Y=ʎ>$>]'> >g>n>2Q=͝<;?(>@Y>a>h%>N>GM=N<(;3m<< {=L=D=*=== E=VJ<<;D9g9g9g9g9g9g;=(= > >$̙>(>-'=dB<:g:g;t!<;D=g=h_=?== ==c;9g9g:D<==VJ<=?=y =zG<t:g9g9g:g:D;t>L>">-'==8;;t!<ѳ=-y =*z==/=rܫ<_(;g9g9g9g:g`>T?>>/>k5r>.<=yN= :<>-'>q=51=;?:g9g9g:D;J= :=̘>>F7>N f>/==T=g= :=v=>>q!><>z>>zt>o>!:K=n=N f=s=>*>V>rZ>t#4>L> ?e=Z_(>fL>>>~>@Y==g$=Z_(= %>f>UE>=?%??*?+~?CY>y->g =*=5=>#D>dR%> >R>Gn>7>z>-'=x <ѳ;?<5Q= :=n>>OW>>8>eh>W>p>=/=rܫ=y >B>">?*W?5 E?56?->>>-'=Ѳ>>?C>q><>>Ow>G>̙>]'=07=M+AV>>$>">f>~>!7==]n=:K>&>{y>R%?,?6-?6?/1>d>>%=>w>@>=>qD>z>>א>> >=D=R5Q=u[=_yN= %>#r>z> >f>>k5r>=5=-y =T> >u >@??/!?/?*>K>>%>> >,o>z3>-H>>O>\z>n>v>B=/=*z=qp=K=;D=Ϩ>>5>nq>\>l:>3ټ=ܫ=| ==0=d>;D>a>l*>*>X>ђ >w>Rv>=G=>'>D>#>>>>>L>==R=0=c<=c=~>d>!7>==o=3m<5Q=,=,>V>@j>g>+>>|>I>~'=:=51=n=T>i;>>OW>nE">|>w>K>=s==R5Q<tO>q$>k>O=yn===)d!=N=/=ȃ=m>~'> v_>==~G=J {<_<:g:g9g9g:DGM>3ټ>;>%==Rٛ>T?>u[>|Z>ga>.~G=d=;!;m::k>u[>t>m>+>S)>=;D<#D<<_(=_yN=/=$==?=n=h_>OW>y>>>>V>=*i\;i<'Y=g=T=̘>V> d>=a=<5Q:g9g9g:g:g:g9g9g9g:D=,=>!7>^t>>I>q!>7=J<<:;?<=h_==yn>>{==!{>C(.>Jg>/>{=_yN;3m9g:g<= =x==a=T==`~d>GM>=̘=)d!;?;<;D==XT=%?==VJ<<;=9g9g9g:g;=c=8=5Q=T==YY<;dt;n<== :>g>::k>nq> >cψ>*=:=(<=%O6==:>> ѳ===t<g:g9g9g:g;dtd>1F>;?>=;=UE<,>N>>̹5>J<>{>H>q$==0==嘮> >Jg>e>g$>B>*z=h_<t;3m:g;n )>S{>Q>+>nq>-=ȃ=3m=c=\i=5Q>/B3>f>T? Ed?%{?:*>>_==m=>GM>WOw>j>eh>i\>i>rZ>=T<;<<_=D>*>~>W>>>`~> d=/=+n=,>{>^t>^??2b7?3W?*>>o> =n=嘮>-y >{>g>s>FH>L>>V=嘮=6<= =%`=s>/B3>@>>U>u>n>u= :=(^=>>nE">l*?$E?3W?4l?+Ѝ>>TP>B=%=p>->V><> >>l*>y >u[>=Y= :=: =22=,>7>j>8>u>D>Y<> )=*z==WOw=!>Xc>?$?*ۦ?+?>ǟ>w>==>ٛ>gs>>Э> >ƙ>,>m…>d=?=N f=4=&Tq=*=>$̙>\i>nE">Z>%=E=M+&>Z>~>澑>>ƙ>E>@>*z=ʎ=/=m>1 Z>>>Q>,>?e>@Y==(=K=> )=O=== =<<=h_=>-y >o>ѳ>t>u(o>=̹><=̘==rܫ=>޵>,2>_7>w>m…>@Y>/=?=8= <'Y;!;;g<g=={=g=_yN=>>> I== E=h_w>GM>O= ==B>1F>9>#D= =<t;g:g:Dٛ>S)>u[>| >fL>.<=E=t;?;3m<'Y=g=x ==n= E= <;#D9g9g:g;3m;t!:D:g9g9g;?=Q0=?>9>u[>t>m>+>T?>v>=L<;i<=R5Q=/=>==@=x <ѳ:g9g:D;;::g9g9g;=C=T>>OW>zG>>-'>4>W> =DU;i;i< {=w=+>g>w> Q=嘮=< :D9g:g:D:D:g9g9g:g#D>_7>,>K!>t#4>;=t=g:D;3m<ѳ=VJ<==> >k= =M<:D9g9g9g9g9g9g9g;=C=L>%O6>F7>M>3ټ>v>=,;?9g9g;m< ==ȃ==yN==p5<ѳ9g9g:t=c=o=L=_H= {=h_<9g9g;m<ܫ=h_==d=a<_:t9g9g:t >1>F7>3ټ>= %<t> )=L=d< ;;=<;D=g=5>i;>l{>8>>>Y<>\=C*>.>.~G>=n=;D<:t9g:D;?<=OW>f>I@>S)>7*>޵=,<^2>f>> >Ow>>-y ==c=w=>&>^t>*z> >|Z>;D==M+F|>w>">k5r>+-H==!:K<ѳ= =n>&>>/??G?{>'>U=OW=)d!=a>>C(.>>̙><>>|>)"= E< ;!<}<=M+>{>P*>>>u[>::k=yN=;D<==~>%>w>V?*?!kF?D> >Z=J<=`~=>%?>F|>><>D>>i;>Dn=a=3m<ѳ<<==ʎ>.~G>g >u >_7>%==<g<*=n>>H>L>?g1>Y> >@Y=d=x =,=9>-7>">eh>>9>>>OW=i=C<<!7>3W>$̙===<;<;D=t!=~>Dn>>Gn>;>>cψ>==YY=3m=n> >F7>g>">Q>`~>İ==g>.<>T?>W><~>-'=:= >.<>F7>?C>==3mV==51=3m;i:g:D9g9g9g9g:C:g:g:;<+n{>>> ==K<+n:g9g9g;<ѳ===g<;D:g9g9g9g:g:g9g9g9g9g;?= :=i\> =>3ټ>WOw>]'>C>7=<_;3m:g;dt<ѳ=22==?==T?<t:D9g9g:g;g;g:g9g9g9g;=-y =̘> >Y>{>66>k^>22=yN=;n:</=(==ʎ=9=J<==?/<#D9g9g9g:D;t!;dt:g9g9g9g;3m=t=͝>$̙>^t>>>p>::k=嘮=;=:td>C(.>g$>m…>V> =OW<:g:g;J= ==E=Z=07=n={O>+>0>==M+;g9g9g:DT===,;m:t;dt;i<===)d!=<<(:9g9g9g:g:D<;D=&Tq=g==]n=g<:D9g:D;<=ѳ>k>>OW>W)>>> =<\i;?g=܊=:*< ;:g;g<t=p5=?>Q0>>q$>TP>@=Ϩ><<<t=XT=> >%>.~G>=嘮=g<_;:g:D;m<=zG=T>q$>(>s=+=C<;D:D;m==~G>>Z>f>C>Cz>l=<<g(^>\>qp>^t>(=_(=J {<\i;g;t!<g<={=>%>1>k==f#D><>> >^>m?>@=;!<=p5=07>1L>q> >y>C>*z={<;dt;<(<=)d!=n>w>M> ==A<9g:==>s>oJ]>>#>d>B=yN=$I<<=)d!=>>\(O>w2>k^>;=2=f%O6>U>_7>?/> == ;?;g<==>)d!>A>;?>u=_=c;n:D:D:D::g;dt<==c{>=*==[db<:D:C<=;D==G> TP>+=@=XT<(:g:g9g9g9g9g9g9g:D;g:D:g:g:g:g:g;n=,=qp==/==7X<;3m9g9g;n<=x =o=J=n=`~ =>k> >^= {=C"?>@Y>C>, >{=<ѳ:g9g:D<;D= :==/=x=VJ<<:9g9g9g:g:D:g9g9g9g:D<=d=2>']>D>KR>1F>{y==-'>,2>0>==WOw;i9g9g:g<=*==o=O6=| =;9g9g9g9g9g9g:g<==u[=ʎ=>g==:*d>T=?V==U=]n=0=n=9<:g9g:g;<=g<<;9g9g9g9g;g<=0=rܫ=rܫ=)d!=!= E=_yN>+-H>=:== <#D;g:g9g:D{>%>4\Y>%O6=ܫ==<#D;g:g:g;#D<ѳ=*=UE=/<=:g9g9g;?=c=m=={=c<:g9g9g>%`>(=n=N f<<g;t!:D:g:D<<<_<t;=9g9g:D<t= :=(^<B>!7>=ȃ=(:C9g9g9g9g9g9g9g9g9g9g:C;t! >*>;D>']=O=K:g9g9g9g:g:g:g9g9g9g:g;g<;D=g=a==| =c;!:g:D<;D= :=:K>T>k>*>=Ow=(^:g9g9g9g:g:D:D:g:C9g9g9g:g:;?d> ==/=A<t;:D:D;!<*=*i\=J {=(^<;m9g9g<g=L=Σ==a=<_;3m:g;t!==>2b>AV>`=:>WOw>'I==x='>%O6>~'=O=K;J:g;m=C=J>8>u[>d>4>XT><=^=L<_,>d>/==;:g9g9g9g:gٛ>/B3> ==h_@Y> >>d>^>=5=L=<<ѳ=XT=y-> d>&>d=*=%O6;dt:g9g:g<*=> >f>'=̘=3m<'Y:g:g=g=ȃ>%>^t>z>m6>2ԁ=yN=}=0\=E"=?<:g9g9g9gٛ>)d!>&==?e=8=<(;?;t!s>>d=='Y;3m9g9g9g9g9g9g9g9g9g9g:g;#D<=VJ<= E=d=n={<t;=;!7>Q>g >P*>=t;!9g9g9g:g:C:g9g9g9g:g;mT=…=i\=;n;m<=T>Q>::k>n>|>nq>+n=/<=9g9g9g:g:D:D:D:g9g9g9g:g;n<=rܫ= {=Z==<_;g;t!<=u[=?>->`>u(o>]'> v_= Z<}9g9g:g;#D;;;g:D9g9g9g:g;g;J=g=,=o==H >,2>;>']=yn=dt;?9g9g9g:g;dt;t;;i;dt:g9g9g9g9g:g:D;n<ѳ<m<=yn=G=E=5=J {V=?=o=</;dt<(==> )>0 >T?>U>->Q=y =^t=4>Qqe>>>=5<;g<ѳ=>R>F7>>>>E>4\Y=!==| =,s=)d!==07>>%O6>GM==e!:K>nq>I>qp>/B3=d= ;k>s>> {>]>̙>g >i;=%=D=rܫ=x =0>M>LW?>g >WOw>!{=n<;!::g9g;g=>*>w>o>z3>;?= =%O6;!<=>%`>{G>>U>a>>k^>i;==Tq=x =g=>'I>_>{>n>4\Y=9= :;!:D9g9g;dt=m…>s>Xc>rZ>^t>$̙==;!;?=h_>>Z>>Gn>>>?C== ==?/=M+=n>>Ci}>^t>P*> v_=n<5Q;t!:g9g:g==%> %>/>!:K==p5<;n:gİ>S)>s>gs>2ԁ====C<5Q<=dt=> )>Q>'=T=F;9g9g9g;?=#D=D=y-==;DV=O=dB=I=a=)d!< f<'Y;m<=(^=g=5== :;n9g9g;O> %>=d=XT<;D:D:g:t<==_yN=/= =+=mR>'I>3>"?=[=x <+n:g:D<=)d!=?> >>s==1;3m9g9g9g9g:g;dt<#D<ѳ<g>$̙>.<>as=a=J {;?:g;n<=p5=E>>'I>!:K==p5;9g9g9g9g:g;t!;<'Y<;;g;T?;dt;?<=R5Q=U>޵> )=…=<:D:g;J>>i;==22;dt9g9g9g:g:t;;n;;dt;3m;#D;g;!<ѳ==T=^=a<;#D9g9g;=y-=m>%>2ԁ>!:K=07=a;t9g9g9g9g:g9g9g9g9g9g:t<ѳ=,=i>޵=yn==5 E>k^>rJ>k5r>)d!=OW>>-'= =\id>S{>q>>P\>F|=嘮=c:g9g:g;dt;m;;:g9g9g9g:g;dt<=>{>>==C;J;?<_==> >H> >#>|Z>>OW=yN= :D9g9g:D;n;J;!;;g:C9g9g:g:D;i=8=Y=:= = %<:D:D>k>LW?>^2>H>u= >> ==ȃ=8*z>İ>&> )=E=i;=N f=<<*= 5=L=K= 5<5Q<};J;g:g9g:g:C;dt==U>B>.<>%>V=<*;?<==w=t>"?>WOw>,>+>f\>'=[= E==c9=a=x=51=T=9=y-= =R"#>n>>zG>>=_=&Tq<==51>`>g >KB>H>ȃ>>x>'== f==#=Ow>>7l >O%>@Y>d=Y=(<;!;g:DV>l>A>>i>^=p51L>>BT>>m> >V>KS>d=O==> >@Y>}>c>?e>V>4=x ^t>W>̙>V>n>i;=T.<>>Эy?N?v>ض>>M+>==n=Ɉ>d>Rv>)3>V>W>r\>ٛ=t<m<'Y:g:g;n=>;>%?>>H>N f>@=h_<<=M>s>u[>]>א>)> >66>'Y=ܫ=ȃ==>g>>>z3><>>Z>"=T<;g9g9g:D=22>>B>\;>Jg>B=m=&Tq<< ===ʎ>*( >q!>w>8>j>']==51=I=B=;D=51>d>: >S)>G~h>q$==?=/='Y{y>GM><>{===rܫ=<<ѳ=)d!=O6=t>{=[=<:D9g9g;t< f==<t>-'> D=Ϩ>=p5w>7>IG>4\Y>=i\=<'Y<<===yn>w>+=m<5Q:D:g9g9g9g;g<;D<_==!:K=g)p>^>pI>WOw>8=n=%>>>1F>Y= ;?9g9g9g9g:g< =<5Q=t="?=g'I>^2>nq>T?>&= =g )>3ټ>N>C>ٛ=n<(9g9g9g;dt<ѳ<= ?e>0>@>)"=yn=u[<=#r>951>.~G><=R;9g9g:g;t<ѳ= = E< f:C9g9g:D;<R<(;?;3m:t:D:g:D;?Q>%>u=J<=K;?9g9g9g:g:g9g9g9g9g:g<=f=J<>== E=#D)p>\i>pO>Z>q$= E >8>GM=07=qp<<;D<ܫ=:*>>F7>}RF>?e>|M >>=9= ::g9g9g9g:D;;i;;3m:D9g9g9g9g:gv>>f>GM=*=\i<'Y;<=T>{>@Y>u >%?>u(o>7= =!:K;3m9g9g9g:D;<<(;?;dt:g9g9g9g:C;g=3m=̘>V=yn=y =g;3m:g<(=*i\=>&>DU>XT>DU>B=v>>> )=Ϩ>=f=i\=K<=;t!< =<m=T=Ɉ>/>ٛ> 5>-'=5=2==M+=)d!=.~G=Z_(=p5=XT= :<>;>1F>d=2=;J<=,=t>!{>XT>@>>u >::k>w=T==5=t=Tq=n=5Q=Ϩ>=2=qp=c<'I>u(o>)3>g>KS>T=?/>cL>i>s>Ϩ>>c>?e>@Y>i;=[=*==嘮>d>0>M>@>O=o=0<_<<'Y;D<t=̘>W>է>̙>>td>=zG<ѳ=: =d>->>ê>hw?k>0>Tq>h%>!:K> Q=嘮=t> >>OW> >S >>_7>w=c=<;?:t< ==̘>^t>+>>>t!>=R)d!>{y>,"?]?Z>'>Y>i>f>%?=Y=Ow>>S)>>Z>>~>%= Z=%O6<ѳ:D:g;3m=t>;?>k>> >Q0>*z==R==o>>h%>>d>2>>d>>OW>v>=T= Z=>/>B>">2b>>k5r>=\>C(.>^>M+>`=n=Z_(<ܫ<̹=dt=Ow>!7>g$>8>>u[>8>=n=t=]n=[db=>>F|>ba>Z>.~G=yN=t;?:g9g;?=_yN= > ===a=<=<#D>{y>>&> )=d==s=&Tq<*<=a=>/>>"=:=)d!;9g9g9g;?<_=0=*i\=<>>=07=D=(<tV>L>^t>F|>İ=n=3m<k>~'> =Y<;3m:C9g9g9g;g>OW>vn>f>nE">-y ==Z_(<_==K=>/>1F>L>@>-'=< =:g9g9g:g>>y>q>nq>+=d=I@<=,s==ȃ>N>DU>_7>T?>#r=<;D:g9g9g;!< =3m=C=t>M+>_7>Ci}>d=̙=R I>0>H>>>-'=;9g9g9g;<=R==g<;:g:g:<\i= 5=>>>*z=/=,s޵>'>v>=jT= =<:D9g9g9g9g9g:g9g9g9g9g9g9g:D< ==:= {==</;m<'Y=c=n>q>)p>;?>'I==T<(9g9g9g9g:g:D:D:D:g9g9g9g9g;t!=Z_(= > >=y-=?/<\i;D %>KR>]u>Jg>GM=<:g9g9g:g:D;t!;;t!:t:D9g9g9g9g:t=XT=>Y>v>==,s;!:D;J=#D=U> :>D>XT>EA>GM=J<;g:g9g:g:D;g;;?;?;=:g9g9g9g9g >.~G>"= =x<;:g9g9g:g:t;n;!<g;:D9g9g9g;3m==m…=a= x<:g9g:g;=,==E=Z= =o=B<;n:g9g9g:g;g;n;?;t!:g9g9g9g:g<g >d>=~=n= =a=^t=p5=,==YY=R<<;D<;!;?;?<;D<(<==XT=Ɉ>w>!:K>%`>= %<; I>3ټ>^t>n>Y>+> ==Ow===o== E== :=^t='Y=g>G~h>i>^t>+=E=c;t<*=> >@~>">$>>q$>{>4\Y>^=[==ȃ=*=Z>(>%`>=i==!:K(>u[>.n>I>KR==0~'>`>k>̘>l>">+>Y>>q=嘮=Ϩ>=:>>N>u(o>l:>5 E==x = +>|M >8> >I@==^t< f=(^=51>s>_7>>K>ܪ>¥>+>V>B=2=:=n=[>,2>nE">#>H>Z>w=== d>Z_(>w>g >+=a=x =c=&Tq=>޵>;D>U>M> >s>y>)d!=G= {===_(>%O6>_7>rJ>z3>N>/=qp<t;9g9g9gٛ>4 >(>*z= =g$=c= ==m=%>d>;?>e>n>S{> = =O6={=,s=*i\=>>.~G>J {>Dn>/=:kq>== Z=rܫ=-y <<=w>=Y= ;g9g9g:g;<t==(^=<_<t<(;?<===i===*==w=)d!< <=;J;JY>>w=;=:*=>@Y>N>8/>^=?=DU< <*<=3m==O> ==.~G>i>x>]'>!:K=ӽ)=`~= ѳ=c=I@==t4>%>>OW>.<>=n<#D:D9g9g:g<\i=c=K=N f=t<ѳ;3m:C:g;= ѳ=*>/>lJ>|M >_>!:K=͝=L= =1=T=51><>8qD>Pl*>C(.>7=O>AV>T?>::k> )=?= <=?/=R=/>{>&Tq>;?>-y >%?=qp;J:g9g9g;<==(^= <t;9g9g:g<=*=>>^>{=?=0/=T=/<:D9g:g<#D<<<v>>-'> = {=?/;?:g9g9g:g:g:D:D:g:g:g9g9g9g<;D=T=~==x <5Q;n:g:g;!=7X=>4>> I=Ϩ>=XT<;D:D:C9g:g:g:D:D;g;t!;3m:g9g9g;g==/== 5{=~==F<(:g;<ܫ=g=ʎ> ?e>>+4>!:K> =J<= E=~G=====s=f==w> v_>=[=c>;?>gs>z3>k>>>==J<===*==ʎ= {=2==3m v_>;>.~G> ==<;<=:*=07>%>_>O>V>8>f>%>{=嘮=+=*= =Ow> >q$>Q=T=:*=<<:D9g:g<=ʎ>!:K>>>.<> ==c%>_>ѳ>>>a&>k=T=0==M==T>"#>@j>@~>GM=%=(^ >"#>`===Cnv>>>gs>vn>ba>-y =[=51= %={=_yN=Y=:> >>OW>:X>~'==;:g9g9g:g=c=?=[=T==N=F==g=_yN==E">d>> v_>d=J<==UE=<* Q>>=?=p5<\i:g9g9g<=*i\===%`==R5Q= :<*>%>~'=_= %=3m<_^>8>E2>-y >= Z=;D=,<_= =N f=51>/><> O== 5<'Y:D9g9g9g:g<((>;?>H>.<>*z=̙= 5<_= x=;D==>>%>L=yN=I@L>%>=O=t!>N> ==<g:g9g9g;g<=g= <==d=R=s=D==n==g=K=c<_(<ѳ;!;3m;3m:t:g;3m<5Q===a=͝=< {:D9g;dt<ܫ==ʎ>>7>>-'=O==n====?==M=x=x =A=<;n;g:g9g:g<ѳ=T=ʎ=*=Ow==g;:g<(=22==yn>a>-[>9>*> TP=Ɉ= = ==a==x==ʎ=dB=x=5B>+>3>$̙>{= E=:K===_yN=Q0===Ϩ>=2=~=Y=f<;3m9g9g9g9g:g<_=ѳ==_==Q0v>>>>@=*=w=a=J {='Y=='Y=:*=d>V==n=a<t:g9g9g< ==(^==t=,=?/=<<==/=OW=d=T===<~<m<> =2=U=| =c< =[=/=XTd>ٛ>=:==f= 5<>-y >G~h>>>GM=嘮=x=0===K=a==?=~=*==<'Y:t:< >3ټ>S{>Jg>%>==?/=(=!:K=x =o=> I>-'>=ȃ=VJ<<<;!<;D>2Q>0>&=ܫ=?=C=c=&Tq=w==>4>> I=Ow=| =,<(<`~<<#D{y> ===w= :ٛ>.<>']> ?e=~=C<<<='Y=m=o==?=L<<(:g9g9g;g<<=_yN=Ϩ>> ?e><=$=<;i<==h_=>%>d>> >N f> ==<_==T=s>g>İ>a=~=<ܫ;J:g:g<(<=g=M>>'I>.<>== :T>Jg>>>>>.<==VJ<=*=\i==G>$J>KR>V>;?> =c<5Q<(;?<= >->8qD>=T=0Q0>է>]>>ѳ>@j==nv=R5Q==y->R>1L>`>qp>[>&Tq=5Q=: B>!:K>d==t;J;;=c=5Q>.~G>| >>>u(o>1 Z==?=qp=*z=_>T>&Tq>R5Q>d>T?>']=a=dt=cg>->P*>N>0 >^= f=?e=J {=VJ<=5=E> >(>9v>->d=T=UE=c<_(<;D;!;J<'Y >@=ʎ=zG= <<=:t:D;3m;t!;?<<<v>><==a<;t!:D;g;?<\i<==<g>R==u[<;D:D:D;t!<g<=<ܫ=(^=C=)d!<;dt9g9g:D<(====ȃ=<*:D9g:g;dt;t{>>x==n>M+>w>w>G> =<<'Y< =w=dB=> >޵=OW=(^<'Y:D9g9g;g<'Y<ܫ=y >'>2ԁ><0> v_==,s{y>U>ٛ>0>>f>I@=T=t< f=J {=D> I>1L>WOw>^2><~>T=a1L>`~>j>M+>=ѳs>E>>07>6>s>g>d=*z=-y ==魚>$̙>bM>D>>Ȅ>Dn==: 7l >i>u(o>Y<>=D<*!7>D>ȤJ>T>\>@>{y>=_==̙=~>+4>t#4><>>S >i>~'== <<`>L>Z>AV>w=x<t;!<==u[>^>nE">R>;p>̘>^>nq>ٛ=:=5=Tq=>/>^t>>u>o>`>==B= <5Q<td>k>d==K'I>oJ]>>>n>2>====dB>+>,o>\(O>qp>c9>6%>T==: = w>>q$>=:=~=='Y==,==m>>&">/>%?==C<<;t!:D:g:D;t!<==R=< <t<;t;!<'Y<t=;D===n=a=| =6>f> =Y='Ya>22>::k>!7=$=C<'Y;g:t;!<=(^=x =:*=~2=(^GM>3W>;?>!7==&Tq;n:D;g<<_(=Q0==n=5=i<:D9g9g9g9g;g< f==>>> =<:g:g:D;? TP>']>+4>u=d=(^:t:D> O== >ba>(>N>x>%= <=< ==R=x=a>>>`=ܫ=x L>F|>P*>1==VJ< >ba>o>9F>ޔ>>| >{='YV>M+>u[> >`>ٛ=%`<ѳ::C;D>u >~>cL>#r=y #D>m>z? ? .n>}B>k>%===%O6=O>T>7>~W>C>#>a>h>w=m…KS>}RF>f>pI>.~G=n=g*( > >D? ?^>*>U>2ԁ==g=>޵>@Y>>̙><>I>I>*==c<ѳ<*>`>oJ]>W>=<;!<t==>B>">>>>ď_> >']=O=5=:K=?>*( >u >>̙>}>{G>'I==?/<<<ѳk>.<>k=嘮=p5<ѳ;n<=(^= >7X>q>U>>>C> =ʎ===T=OW> I>>OW>t#4>P\>| >KR> =5=0<L>0>/>f>===)d!=R=w=U>>!{>2>*i\> =*=C< f<ѳ:t:g:g:C:D<'Y<ܫ= {= = %=<:g9g:g;2b>.~G>4\Y> v_=?=qp<ѳ;3m:g;gQ>/>S{>Y>@>O=<t;t!:D<(<_=^t=5==i\={<_;g9g9g9g9g9g:g<\i=m>g>1F>V>\>C(.>=Y&>8qD>?/>&"==22;3m:g:g;<*=rܫ==ȃ=n= %='Y;i9g9g;J=Q0= {>{>4=a={<(9g9g9g:g<=c=| ==t=h_<5Q:t9g9g:D<t=(^=7X<ܫ;9g9g:g;?>%>s=d=)d!;3m:D<f>M+>>>xyn>'=2 D>>=嘮=i^>2ԁ>>>"==+n<;<ѳ=C=t>C(.>>͝>զ>%>z>V= <\i==OW>>@>hg>t#4>VJ<>~'=<}:D9g:D;i0 >cL>nE">S)>= > >,">1?>u>>=h_*( >oJ]>-'>>w>^2> ?e=R5Q<g:D;<#D<=Ow>8/>lJ>w>_yN> =i\<;?-'>>FH?,?`>0>>'I=Tq=,s=i=9>-[>{>F>Y>V>{m>!:K=<;?<'Y<;DL>N f>]u>D>d=<;3m<;D=qp>*z>g$><>z>;> >">=51=a=]n=>`>b>CY>>է>n>=D=gw>L>d==;D<'Y:D;= =n> 5>rZ>]>>~W>22=2=n=C= :==Z>*( >a>{m>nq>>OW==w<* I>>!{>==/=qp< f<`~=*=:K=:>x>%>k=2=a=g<;?:g:g9g9g9g;gV=yN==N;!:g9g9g:D;!<~'>/B3>4> =J]=x <;g:g:>1L>U>Z>AV>-'=<;dt:g;?<=XT=:K===,=g;t!9g9g9g9g9g:C<==>>5a>Y>_7>F7>:=5<ѳ::g;i<ܫ==~=:==D=3m<9g9g9g9g9g;=: =t>L>>>B">*==_yN;?:g9g;t!<=m…=2=ʎ===3m<9g9g<'Y=n=E> >==<(:g9g9g:g;J= =T=5==t!<;T?9g9g;t!f=:=5< f:D:g;g;!<==<~= :<;dt9g9g9g9g:g;i= 5==t=h_<;:C9g:;!>N>c >C(.> =rܫ;?;3m<'Y==R==t=E= %=c<:g9g9g:g;g==~>>=:=<;g:g;t!>i>KB>I>>AV=OW>.~G>8qD>=i=;D<:g9g:g:D<=rܫ>V>)p>3ټ>=E=*i\;t:g;?=c= E>+-H>a>s>+>>p=:< f;?<=>,>3ټ>ilK>zG>dt>'I=ȃ=g;dt9g:g;t!>0>@Y>'I=07=L<:C;?='Y=>4>>ƺ|>΂\>]>o==(^{>@>z3>> >Dn==B;:g:D;< ===ʎ>~'>$̙>==%O6;9g:t==>&> >̙>>w>@j= =R5Q<ѳ(>d>~>n>:{==3m;i:D:D;#D;t!;!==2=J<=Y=rܫ<:t9g:g"#>V>^t>::k> ==: >)p>C(.>8>= Zg=yn=/=(^;:g9g9g9g9g9g9g9g:D;g:D:D:D;g;g:D;<=C=T=T=a=,s< f;n:g:g;dt<=P*=d=/==t;?9g9g9g9g9g9g:g;3m;t!;g:D;J<==R<g>>> I=n=?/>8qD>>>&=={<ѳ:D9g:D 5>?C>BdB>+-H>={ >%>)d!><=5Q=,s;9g9g:g<==:*=n=̙=T=R;n9g9g;!=: ==$=5==h_<\i:g9g:t<t=4=x =w=3m<:D9g9g;g<t== 5/=07=ѳ<t:g:g:g;dt<ѳ= 5=R5Q=<~<3>L>,2= = :t:g:<;D=3m==ʎ=0=y =C<ѳ;#D9g9g9g:g:DL>h%>}>WOw> =;D;dt:g:t<=t!=*><>GM> ==)d!;:g9g9g:g:t>ilK>z3>S)>=K;:g:D>*>=T=x />A> =Ϩ>=3m< =:g:g;=/=J> )>><==f<9g9g9g9g:g:g;<=t= <ѳ;dt9g:g<=R5Q=?=Ow=07==R= =;J:g9g:D< {=R=̘=_H==Y= ѳ;g9g9g9g9g9g9g9g:g;dt;::g9g9g9g9g:D TP>=5=/=R;!:g9g9g:D<'Y<ܫ= 5=<;m9g9g:g<R=t=̙=p>">i;===;?9g9g;g<}==VJ<=L= <;D:g9g9g;g<=x ==d== f=zG<t:D9g9g:Dv>=d=M< f;?:t:g9g9g:g;3m<#DT>d>{=Y<;m:t:D:g9g:g;=qp<;t!:D:g:g9g:C:D;D<'Y;!:D9g9g9g;3m^>R=n=J {<>;?>1> ==x<%>B">;?>^== I>k>a=a=1<=g> I==޵= =d< {:D9g9g9g:g:g:g9g9g9g9g9g9g;'>*( >(5> ===R5Q='Y<<ѳ~'>=~G< f:D9g:g<t=>g>51>^t>_>0 =*=T=L= 5<*<==g=^t=Tq=ʎ=/=x <;3m:g9g9g:=> >!{>==c;9g:g<ѳ=T>{>::k>cψ>d>6%=07=u[=;D=<<= x=/=5Q>=d=s=g;t!:g9g9g:=b=O>O>g= Z= ;J:g:C;J=/=U>~'>4>2ԁ>==+n= R=$={== %< ;g9g9g9g9g:C:g:g9g9g9g;n<<=;:g9g9g;< f=x = E===Z_(d>+-H>.~G>=:=^=k=;D=(<=g==(^=/=<ѳ;:t:g:g9g9g;={>{>> I=<:9g:D.<>\i>g$>A> ====b="?<ܫ==a=D=~h=/=w >!7>-'=ʎ='Y;?:g:D<=| =>->_>k5r>C> =#={=K=<===>>{=~=c;:D9g9g:D=Z_(=?>d> ==3m >-[>22>=ʎ=rܫ=3m=<ѳ<;D{=2==g;3m9g9g:g<=i;== =g=*<ѳ;:g;dt<ѳ=K==ӽ)==X=]n=R<*= E=a<}:g9g9g9g9g9g9g9g9g9g< =<*=51=rܫ<:D9g9g9g9g9g9g9g9g9g9g:d>>R==D=h_=K=(^==c==g<<(d>.~G>>OW>%==O6=g=k=0==g=*=h_===R=&TqV=*=?=c;t:g:D<>.~G>>>$̙=?=t=qp=DU= <<5Q=?/=n==d=x<;D:g9g:g=/=;D >-'=m=s=YY= 5<_{===XT=J {=?/=/=<_{> :>-'=={ >!{>8>=̙= 5<<(Q==t=g<;t!:t;;;D< > = =5=: <<<;D<=C=/====s=<3m;i;;3m::;3m;t<<;9g9g:g;dt;!d>.<>, >R=R;J:g:g;޵=:=^t7l >i>gs>/=%=;i;<==x=>>>/=2= ;?:g:g:;< ==g=>T> = =s@>qp>pI>;=5=rܫ<;!!:K>/B3> 5=?=h_<;;g;3m;t!;mf>A>@j>8=yN=:*= İ>']>ٛ=?=u[\>޵=yN=D=h_< ;!;!v>==51=0<=;!;m:g:g:g:g:g;n >d==h_;9g9g:t!{>WOw>^2>-=ʎ<ѳ:C:g;<=,===Z==L<:g9g9g9g:D;?==> TP>=yn=R<}:D:g;3m<ѳ=T>+>V>)3>8>dR%> =/;:;?==>>']>1L>=T=)d!;n:g9g:g:D;= =ȃ>>GM>g=<(:D:g:D >]'><>m>hg>=,d>9v>M+>9> O==<ѳ;dt:g:g:D;3m/B3>cL>g >9===<(<==?>{>'I>>OW>->v>=^^>d=t4==T= ;i;<=e=n>g>i;> I=̘=R5Q<=;m;g:C9g:g9g9g;dtk>^=*={;i9g9g:D;J-'>M>[>0=%g=E=^t<;D:g9g:g@Y>@>?e>`>{y=c;g:g;#D>']>2b=ȃ=R:t9g9g9g:C:D<=/=> ==wD>f>?e>`=:> =VJ<>*>?C>+>Q=rܫ<:g9g9g:g:g;m=,s====+n<(9g9g9g;?= 5=/>>P*>W)>+=a=rܫ&>+4> v_=d=u[T=E= %=Q0<:D:g<R=t=?=>g==2= :;J:g9g9g9g9g9g9g:g;n;?;3m:g9g9g9g9g:t<='Y=s={=[db=,s=J<=<*;?:g9g9g;3m==T<t;g9g9g:g;t!<= :=K=C=g;!:g9g9g;n===ȃ=+=?=t;J:g9g9g:D<;D=R=;D=5< ;J9g9g;<=,s=7X<;J:g9g9g;gx>"#> =<g9g9g:g;n<=p5=t==K<}:D9g9g9g;dt===:K=t!<;g9g9g9g;<=a>>=̹>N f>&=:kV>:X>IG>!:K=X<:D9g:C;J='Y= =>w=m=<_(:D9g9g9g9g:g<#D=&Tq=e=,s<;3m9g9g:D<ѳ=?/=> I>==R<_;9g9g;#D<_=d=T>T=07=5=r2=b+=0N\>YD>\a>=>=\=t=2C<մP<'<X;x599:c:c:;Gu;2<>CsP>k>pj>T^c>.{==b=G<=X=Si<,< # >d|> > >Q> [>r2>0N\=i=t=*<59>U>Җ>G<>[E>fc>.u===C=pj= Za>T^c>9>a>d>nj>>J>fc>=2O=k%<<;5:999:c:c:;x5;cBb>X>N\>>>V>>> N==b=r2="#<C&>q>*?x??Ε>s>>>/jh=@==<';u:999:c:c:c:;Gu<# 6>:>>2O>B>q>=7>=q=\)=iK>=x5+ښ>ɯ>Y?U?$? >>>s>+ښ=\=8<,<;n:999:c:c::;GuLZ>>j>>T^c># =G=G<={E=5}>o>kL>ޛ>>L">sP>j>DWC> N=jh=`c<Δ/jh>6>_==G<={E=<ŭ95>}>FX>> [>|p2>@=Ͱ=X=>(J>=>Bb>6 >@= =N\=X=0N\<51I>hgJ>ɯ>U>P\>_=={E=-0>{E>5>T>;>>*>u>5= =g=*>fc>1k>M?C?-?3-?-?y>i>>0N\=$=X=2C>:>`c>r>o>Sv>3l0> g=Ͱ=_=k%=*<< r>?#?1N?BV_?O#,?O\)?C?.n?9>R>\a>x5=N\=8='f<մP< z>'f>)h>=֘D=V=u=֘D=>/jh>b>@>5> ><>>?><>_>-0=K>=f=u=# :>I? vn?64?N?9?Y?^)?Y`?LK?3l0? u>o>o>!+0=\=$=^=<մP>:>R$>Z >G>12O> B= =K>=,>!)>Q@>B>Đ@>M???>>c><>*L>hgJ>&=\=='f]E>Y??@8?V ?^U?\?Ry?@8?'W>5m>>^)>ѳ=@=z=r2=0N\=< Za>8Q>^>s>tl>c><ŭ> ===>(J>_>(>ԗ`?i?$?^?_G?_G?BV?>U > >>0U=q=r2=x5]E>ìM?{S?9?M>?Q$?KZa?;SA?&ff?Y>~>U>3l0==5=@=pj=<ŭ='= <,<,=_=K=X==>}>=>c>q>p>YD>54> t==$=G>>CV>j>9o>?? ?BV?be?&?*/1? մ?t>I>qN>=B=0N\=>E>?FX?0?2k?(G?>c>C>wv>1I====8=W|7=*===x5=='f=^=g==ޛ>>1I>CsP>PΕ>Gu>6>=@==G<==$>_>M>X>>#>մ>? >U?O?+?(.M?v>>vn>=C=CI]>hD>jh>ޛ>>P>}>9>ɯ>F$>{=\=b==iK>=CI=# =x5= = = N=='f=R$=8=b=q=gJ> N>b>!)>{===x5=r2=iK>=wv=g==>0N\>]E>U>"H>>>?Ar??Y>>~8>=g=,<=>>]E>t>>[E>tl>>>=ݷ=#=8=I<='f=@(>J>eIv>Sv>(=<=s=<Δ< <'=*=8<Δ=@U{=n= N=pj=iK>=I<='f=X<{>O>!)>==J=ep=x5'f>9>>>=7>6>(>==\=N\=cI=B=8=l =s=N==Ƒ$=֘D=G== >> >U>=p=q=b==k%=R$=CI=2C=0N\=5=CI=iK>=g==G>-0>ep><>K>g>>>f-j>6=K>= =^=@<$ N>L>>9>Q>o>> [>W>_>=7>/jh>U> g==(=ݷ> N>1I>M>pj>>q>w}>r>qN>eIv>D=>.u>=$=N\=cI=C==n==q=>-0>T^c>=q>>?r?U>>W>}>f> >aG>===,<,6><>>ޜ?y?`+??sP>Ṩ>>>ɯ>q>_>K>>>>>b+>t>>>>Q>>a>WC>9>^>>aG>6>==֘D=@=@=>>/b>g]> >=?V_?(?;;?BV_?=p?6?12O?+?>>9>o>B=q==Bb='<,<մP<@U{>O>? c?7v?>Ƒ?ݷ>>>}>#>t>z>>Q>ါ? ?b? մ?M?8>A>R>|>yR]>CV>(J> [=E==>>1I>gQ>H >c?Ar?6?Ry?b#?ee?b֘?`??^O?W?CI?'W>>>]E>= =r2=CI= G<<,8>G<>U ?.{?C?O\)?Ox?Eɯ?85m?$e?>]>ͱ>~>>>>ښ>:>??+ښ?/M?$e? ^>>> >o>b>==2>>)h>>?rl?+?IY}?b+?ojh?u?v?u?s?kښ?_ ?=p?>Ͱ>W>).=q==^=0N\= N<մPx5>ɯ>s?"?;>?HY ?L?DWC?9Z?)5?/>>%>Y>>>>,>P$>%? ??#e? =>5m>~>>q>=>==֘D=@=@=p><>0N\>o>I>a?(G?Ft?a?nMx?y5?~8??~?s?bd?C?'>_G>vn>0N\= =[=ep=0N\= 9>e>ޜ?a?-?22?0Y?(?1>T%>|7>Đ@>n>u>B><>ɯ>>{>Y>c>ݸ>>4>V>L>-0==q=G<=C=@=C=J=<=>8>ʓ>8>w}>O===K=U<28Q>^>p>ܚ>>p>p>H>>e>>[>ɯ>v4>]E>>>26>26>J>r>>r>Bb>}=K>==B=iK>=7m='f='f=2C=W|7=8=cI=ݷ>3l0>9>o>d? 3?9T?M??Z}?_?^)?O\)?5?/>!>j>=7==n=iK>=# <226>T^c>yR]>[>>j>qN>Si>F$>=>7>).> N=G=ŭ==N\=Ƒ$=@=b==N=r2=<ŭ<,<ŭ>Q>B>~>M?#?!?*h.?$e?>5>2O>tޜ>54==cI=k%=>O>'f>>= =|==\=ښ=N=`c=).=U=n== N_>=7>k>N>>9>>#>ep>-0==6=X=E1<,=C==> g>B>'f>==N\=X=`c='f<w>(`7>96>RA>j>>r>>>>!? ?0su?GnN?*?T?M?$?;d?.B?U8>q>ۿf>%>[>e> W>e2>GI>4> =|= =.=p=U =,=S >;>>F> ==ջ=7=%=|J=k =R8=?=.=.>0}>A>^ >z(>BR>b?!?ǥ?*?Zj??ws?kl?X?k5?#o?> >w>$>w>nќ>J >*=h===S=[b=5n=Qp=!>V>`>==M=2===U=DZ ==e=bl=H=1z="= .!e<.%<&J<Yn<<< ݷ< ݷ< ݷ<<)<*v8 >=ċ=a_)<<<;::';*V>h>2>e1>Er=R=Er\!j>u>zY>V==Q<>>!@?>`>u>F>>Ԙ>֏>>Jq=h>X?I?&?@>>>=Er=<2<<;:::::::::;Q;Q;{;Q;Q;';Q;;<'<<j8>*l>V>>>G==7q-?:y?'7?5z?-sx?>E>8==TDY>Y>h>+>̼>==Q<{;:';<=>e1>?!~?23n?))?Pk>>PV{==qh= 2<V>5>R9>$>>T=3=IL-f>? ]?$?>2>>I!=ق=qh=_<%>kڨ>>X>*=N ="z/W#>͸>>!@>Ň >Er>C=My=h=V<*l<<;{:':<'=h=

*>R>>_>I>.=D={=%<_>8>6u>=*l={=,<>=V'==x= 2ҡ>.E><>*>NJ= =h=D= 2<Er>.>b> >>[;>Er>,M=_=%"z/>ny>(>>>a>\!j>a==2=Q= RC>>$qW>AD>e1>/V>*>8???zY>>^I=_<ڨ<:':<<<ѥ=>>e1>>?x8? ? >[>P>Ks=Dw==f= 2>-f>Ks>[y>m>>R>>My?1w?5z?F?G~?0>`>F=vV'3>>ڨ?A?(_?1 ?(?h>V>E>\!j>NJ=h=TD<>9hU>X>s>W#>>9>!>>lC?P?FX?`_?h?S?%>=[<;:':<Er<.E>?x8?'?;k?Cf ??˗?2]\?h>`>~>AD==h=_<2NJ>P>?>Z>ny>>W#>I>R>{>̼?d=?B@?cu?ny?_?6u>ҡ>NJ=23n<<::<<,M>? ?*??˗?G*l?D?8? ?>*>_h=6==' 3> >5z>F>O >O>Lh+>Ks>\!j>3>3?!f?Jq?Z*B?Mc?)_>Ï=6=<<<;Q:;a>I>H??4*?;5?8?-T?h>Dw>\!j=V=="z/<>TD>?_?*,?#u>6>==_<<;:':';<<<ѥ=^I=>`>D?n?h?P??a?>y>zY>8=ق=ny= 2<<<<ڨ=Er="=_==,=G*l=^I=h=x==R=Er==h=W#==={=i;=c =sG==>*>z/>>>rg==fҡ>>>h>!@>|>3>">>Jq=V=A=: <*l 2>X>*>>zY>|V>PV{>#!=X=A=IL<ѥ<ҡ>3>N >NJ=ق==x=23n<<2P>`>/V>P>> >AD=8=h<_)<<::::;;<<<_>M>~>ͷ>G?>lC>͸>>,M=E=<k2>xMO>sG>X>.E>Er=ق====!=>NJ>P>C>~2>?NJ?f^?*?0?'?d=>Ԙ>pp==\!j<<'::':':::;;<<<Er>_>

,M>M> >[>7>8>vV'>=V> 2=X=ق==>

O>n>?>VQ?N ?8l?I^?S?Y?P3?=o?>M>ҡ=~2= R>C>_h>T>=]=\!j= 2<_)= 2=O =q=<=6>*V>R[>>3>>~>>I >u>c>>>PV{>>Ks>*>>ck?Z>F=.E>G>EH>>cVQ>ҡ=N =TD=23n=IL=h=>h>.E>sG>_>$>">VQ>>>}>>*l>>v>9hU> 2=h=!j=>>Z*B>>Ϯ? ?2&?P?k2?w'?~??}a ?k\?B@?[>sG=ق=ny= 2<>>3>[;>l> >*=]=x=Q=^I==>>RM>I>h+>V?>͸>u>P>l`>-f>NJ=ق===*l>>F>>֐? ?1 ?Kl?a_)?ny?t?z?v?ewg??˗?>Er=6==: <ѥ<2<<;::';{<<

t^>d=>">i>>TD>~>Ԙ?? h? ]?1>u>Er>`>,==<=="=h={=ҡ=>ҡ>V;>(>??2&?Cf ?Kl?R#?Z?[͎?Ks?0X>V>Er> =N =Q= 2*V>P3>P3>,M=h==i;=IL=Q={==>0>>⮙>+>!@>Ϯ>?>NJ=*l==\!j=D=23n=,==_=23n=^I=h=>8>R>Y>??1w?]?+?28?(5?>c>t^>=N =TD=_<3n<\!j<::':<.E>x>x>>l> >9hU=^I=<<2'>\!j>I>N >׋b>>>ЪW>(>F=⮙==Q= 2>*>V=_)=N <<<<Er;;;;;;<<< >M>>5>[>Ks>NJ==ny=23nh> =I==qh=?M<ڨ<2<<;::;<<<<:<:<>=z =l=Qrv=L6=Qrv=ZD=i=l=jQ=bv=ZD=ZD=ZD=V=M==ϻ=w=i=^=_ػ=i=n>=p:=l=V=5 = s=!1=3V=7D'=$=<<މ<== s=L==r"=6==I==g=d== =?==1=ǡ=i"=i"=6=Ūl=ϻ==g=s=s{v=A<<=b=El=s{v=X=;=6=HS>>Rx>D{>I%>Rx> ;>|q=D=1,=d==q==D'=d=6==;=ɗ=ɗ=ǡ=m==1=?=V=<<`v<$=-S=d==]=q>1> ns> ns> >-S>?=,X==[= ==g==?=q=?===q==#=1=@=z =J=<<`v=?=`v=g==={==ݎ=ǡ=ó=1=s{v=s{v=s{v=s{v=x=z =z =s{v=o=k=p:=wh=?==?=s{v=U_=b<[N<`v==!1=$=w<<<`v<"RN;:{V';b<;=== =1=]==]=s=6=C= 1=l====|q=1==1==1=Ԏ==l=k=A=;'>I%>>ƻ>`> ;>=?=g>M==ɗ=1==6=>> >> >6=HS=,==@=s{v=A=IN<<$<;'>'>C_>T>[>XQ>Pw>FQ>3>':>)q>I%==={v>>>.>'>(>'>">> ====s{v=3V<<<<= `v===E===!1=N;=z =1=Ūl=>-)>3]>Tdx>j6>yB>{_>t#>d>U_>FQ>'>>=?>3>ˎ>> >'>'>&6>$>ƻ>Rx>IN=]=6S=l=A >%>B>YM'>bʽ>h3>c>\>N,>:ݸ>1==V{=V{=g==>6>(>>>>====1=s{v=4<:<<>">,ws>/iv>.X>'>>]=?===nI==Ԏ===;=q=Ԏ=]===q=D{=z =I=l=V=.X<[>I%>6=;=1=s{v=.X<<;<:rv:rv:{V'< `vˎ> s=HS==$=fdN=;'<;';dN;;fdN;;:{V';rv<><=b=A=e1=x=e1=l=p:=l=W =5 ==l=IN<<<$<;<<=ƻ=5 =A=@m=$=<<`v<"RN;rv9;dN<b=ƻ=V==|=ͅ=6=_z=?=g=6=D==g= =6=;=ƻ=,=?==ػ=?>l=L=弿=[N=RN=6=l=<=l> [>6>Lݎ>Qrv>J?S><>,ws> [>@>0d>`=_z==dN=>W">$>0d>6>4R$>)8>>1=إ=X=6=W =E<<;'<<>=E=,;=0=&?===,;=U_=z =1=;> >'>Oϑ>r>>>>i>~>c>Pw>Qrv>-r>> e >Rx>>,;>FQ>T>ZH}>X_>P>A>'>[===?=ElI%>2@>]G>>|>+>H>Rc>&>>o>I>)q>b>>E> i>/=>FQ>P>U_>T>O(>E3>-r>====V= `v>">G>n>>i>>>i>!>C>bv>> e =L=>6> ;>>">'>(>(6S>'>%>>=I=X=?=D[N=l<6<<:<<6<]>.X>N;>]G>crL>a{>U_>F>0d=Ūl=D===wI=Ūl==V{==إ=ڜD=g=g=V{===6=V=<6 > e > =L=6=إ=i=jQ=n>=s{v=wh=z =z =wh=s{v=s{v=wh=l==?=z =l=?<<<<{v<<<<'<<;'<;{V':':{V'==wh=q==ܒ=Ūl==l=U_=<`v;dN99;;rv;9;$<<`v=i=i"> e >%>'>E=HS=X=?=ARx>/=>G>G>,;> ==ˎ=U_|G>0>?>8?}>!=r"=#=}b==ϻ<<;;;;{V':{V'<<`v<<><=l=E=C 1=s{v==M{=C>>Rx>> ==q=}b=HH<<$;b:{V':;{V';$:{V':{V'<"RN<<====5 =_ػ=l==M{=[=|==l=@=x=D[N=;;<<b<<;dN;V'<<<99:{V'<=l<>=,X=M'=ó=]=RN=={==ƻ=w=6S=d=>?> > ==_=Ԏ=|q=n>=7D'>`L>:ݸ>R>ZH}>T>G>3>%>I%>0d>D{=?='=v=_z>Rx>'>6>FQ>C>4>%> =ܒ=;==U_= X<<;1>&?>N;>t#>e >>>->>>jn>Q>O(>)8>> > e >-)>,ws>G>Y>a{>`>Y>G>)8>[=g==z =?<><;<<:=M=!1="RN==;'=E=2=^==6S=މ> >->[C>>(>r>?>,>E>?>p5>GMQ>'>I%> e >M>e>-r>F>Tdx>]:>]:>U_>I>/>==M{==HH=IN<<<=== `v=l<=IN==U_=IN= ==L>>C_>lHS>>;'>>>(>D>ag>|G> V===>>B>">(>.>.>,;>'>>=]==x=3V<><<< >)8>N;>_ػ>jQ>dm>YM'>FQ>-r====Ԏ==wI=ǡ=]=ܒ=I=g==g=i"==w=}b=D[N<<<<`v >[> ns=L=1=i"=ZD=ZD=fdN=l=s{v=s{v=s{v=s{v=s{v=s{v=z =l=?=}b=s{v=V="RN<<$<$;;;dN<<<$;rv:{V';dN<<$=s{v=jQ=A=<<<;{V'=?=ˎ=wI==6===l=T=6<`v;dN9;;rv;:{V':{V'<$>0>1`">g=r"==l=@m<;<"RN;:{V';<<<<l>'>J?S>Y>U >5 > e = 1=|q=N;I%>3>N;>Tdx>J>(>==}b=7D'<[N<"RN;;Qrv;:{V'9<<<;<:=6==3V=jQ=$==g>w>w>'>%>E=?==IN=El<<$;dN:{V':{V':{V':{V':{V':{V'<,;<<:= `v=d=0=N;=x= =b=g=Q=i"=i"====Qrv== X==*-=El=r,X=|q=RN=:=?=s{v=^=<==E=!1=ƻ<=U_=0==6=z =n>=[b=N;=A=A=V=s{v==s=s=C=W =!1<<b>(>2>->%>>=>Rx==[N=]=]==l> ns>>'>(6S> [> e ==M{==l=$<:<>$>GMQ>a{>t#>tʓ>h>W>A>'>'> ;=6=V{==> e >%>5M{>F>GMQ><>(>M===ˎ=V= X<<$<$< >*>Tdx>yB>W>>>z>]G>E3>>ٌ=dN=ܒ=g=?> e >!V>/=><,>5 >(>D{=?=d=@=i=E<<`v<`v<6}>:6)>]G>vmx>~>{>di>P>4=>=i"==:=={= >?> e >D{>;'>> i=h=i"=q==M6> i>2@>8 >)8>> =D{==6=6==D{=w===M{=== =q=D{=IN=U_= `v< >w>-)>n=[N=X=c=nI>4R$>C 1>5M{>=弿=g=s{v=!1<-<b;'9< >(6S>:ݸ>->Rx===[b= `vn>B>|G>B>=6=@=c=<<7D';9<b==RN=b=?=s{v=V=(<><`v<;:;<<<-<==7D'=e1=x=?=Rx>>d>E> ==V{==]=1==i=1=]=V{=h> > >(=HS= 1=g=l=N;=<<"RN;dN;dN<<{V'<`v<`v<$6>ƻ>,ws>0d>+|> > =h=ó=q= =i=`v=1==ݎ=>?>>3=Q=Ūl===W =< >>#M> >]>== ==l=x=|D====]==ǡ=Ūl===i=s{v=A<:<`v<<<$<<"RN<"RN<;V';dN<=z = ==إ=l==;=D=?=T=M=A=A=C 1=M=U_=fdN=s{v=x=l=?=}b=s{v=W =4<<֮<n>ˎ==ǡ=]=i=d< >=HS==6=P#X=<<:{V':'<b<$<<<>;9;{V';;;;dN<<b<;<;V'<<;:{V'::';<=p:=V=A=$=d="RN=El=r,X==]=,=;'=6=s{v=M=E<6==3V=M=]:=x==g==RN= =-S=}b=e1=M=5 =!1=d=!1=A=i=z ==@=@==s{v=Qrv=<<<`v<"RN<;<:{V';dN==A=jQ=p:=ZD=2<< >==[N==p:=<<9;;rv;dN;dN<<<<;rv;;;rv;b;rv;;{V';;b<<=+|==>n> => >6====M<'=N;=}b=l=Ūl=إ=މ=V{===C==ϻ<6<"RN:{V';;;:rv999:{V';;dN<$<<b<<=A=@m=i=z ==ˎ=ˎ==s{v=El<<`v;V'9:{V'9:';;rv<<<7D'<==!1=3V=4=<><;'<b;$;;rv<<=s{v=s{v=ZD=?=<><=!1=HH=gl=r,X=s{v=x=z =x=s{v=p:=s{v=wh=IN=IN=n>=s{v=z =z =s{v=o=jQ=W =N;=A=!1<{v<;<$<,;<;rv:{V':{V';fdN;;;;;;rv<=s{v=r,X=l=fdN=ZD=ZD=e1=l=l=$=0=2=$===b=!1=*-==IN%>U >h3>ag>Q>3> e =Ūl==<<<<<>Ը>iVQ>`>>>>A>wh>5B=?==*-<`v9;<b'>wh>>>>>w>>ZH}>B=Ԏ=M<;$:{V';dN< >C_>n>>6>>z>^d>0d=?=@=0<`v:{V';';b<<<8>>>-)>I%>1=_= =M<֮<:{V';;rv<<<;dN;b;b;rv;:rv;;dN<b[>>#M>> ====iv=1==s{v=U_=0=<:<<$<7D'IN==q==>> >R>]G>c>]G>O{>EV>8 >(6S>;'=L={==}b=^=@m=<:<;<;'<;'<$>g>.>3]>2>0>/iv>6>J?S>P>]G>`I>f>dm>`I>]G>Y>N;>3]>=h=]=-S=l=M=$>&n>6>={><,>C 1>O(>^>`I>(>'>)8>->/=>3>6H>0d>#M> X='==z =U_=3V=<މ<<`v<`v>]>B>>I%>-)>%>2>2=ǡ=Ūl=ǡ=Ūl=Ūl=i"==HS=g=Ūl=H=IN=F=(<<6<;'=[b=M=]:=tʓ=6=$=?=l=2<{v<6<<<{v=ƻ="RN=ƻ<<<`v= `v=w==l>G>bv>j6>b#.>Pw> =إ=X=M<މ<"RN;dN:ݸ>D{>>r>6>>#>>V>F>C=ػ=wh<:<;dN=tʓ=wh=n>=M=!1<{v<;<<;'<`v<`v<<<{v=a'=>>>|>ݣ>̳>:>֮>ʼ>y>>7=D'=A<$;<-)>>Ԏ>~>#m>С>~>,>>>RN>T=i"=W ,;>s'>0>#>>>(,>->?}>#>i>)8==<= X=!1=.X=0=!1=<{v-)>>P>>>>>>`a>vmx>'=Q=p:?>=]=ǡ=@=N;<'<T>^d>ag>Pw>(6S>;'>[>=HS=V{=wI=,=?=jQ=I=,;=l?>'>0>2@>->%>%>2>G>>;>r>V>RN>>E>Rx>>ag>8 > e =6=[==s{v=T=<<>=6=*-=U_=n>=s{v=r,X=n>=s{v==]=6> >b>">2>U >n>[>>6h>`L>6h>>|2>R>>ݣ>>iL>+>]>>X>`7>1>=>J?S> e =]=X=@=z =V=0==,;=M=n>=x=IN=IN=}b===i"> >'>5M{>I>bʽ>`v>`L>?>ws>>6>>>#>G>>(>3>Ϧ>ƥ>>>>`>`">>#>_ػ>|G=dN==w==i=A=0=3V=J=gl=s{v=s{v=s{v=s{v=}b=D{=Ūl>>"RN>2>G>c>->>>>r>>#>>>>V>`">>>>>>>:>(V>(k>1>GMQ>$=ǡ=?=X=wh=U_=0=ƻ=w=!1=7D'=A=El=HH=J=V=s{v=;'=ǡ=>>`L>7>_ػ>>>`L>RN>#>>r>>,>i>k>}b>>->>>,>w>>z>A> s=1=]=l=l=A=;'<:<:=6==V=?=,=M{={=:> =>':>;1>G>M>T?>c>p>>==1=:=ܒ=6>w>w>'>#M> ;=V{==s{v=M=0==;'<:rv;;9;b6=6=;=x=2<<`v;b:{V'<b<`v<<{v=ƻ=4=@m=4=;'<<<$<"RN;dN9:rvP>>1>>(V>>|2>R>i==[b3>:>>r>弿>>>>>(>>T==_ػ<;<'<;==Qrv=z =D{=;==]=RN==s{v=A=;'<: >RN>>> ? K??!?!>L>g>>&?=D{R>>->-??=??%DQ?e?~>MQ>RN>4==;dN;<<b<<>=3V=l==1=;==?==l=e1=8D=!1==*-=A=bv=s{v=|q=>>n>?>>>>!?6?8?n>_>(A>>`=<;;<<$<= X=@m=gl=wh=?=?=x=i=El=!1====&?=M=r,X=?=D{=> >Qrv>S>>|2>#>1>>,>`>(V>y>(6S=iv=A<$;<;dN<<$<<= ;===b=<><6<;<<6<:===ϻ=fdN=z =ˎ==V{>=6>>>)8>9>J?S>Qrv>I>%=1=@==ϻ<;b:{V';;dN<b<7D'=s{v=}b====s{v=?<<`v<;rv<g>!1>> ;=މ===]=6S=RN===p:=T=7D'=<:<<$?> > ;>==HS>>>>ws>#>>>1>D>wh>jn>U_>4>[=_===z =^=/iv=6<:==0=W =s{v=z =x=wh=l===>> i>>>)8>Lݎ>zZ>>,>>>>.>(k>>dN>n>>->V>>>]>6>>8>6h>>3> =إ=]==z =W =D[N=U_=s{v==D{=ƻ=g===> >)8>I>Y>lHS>>>`7>@>>g>>>>ќY>ݎG? ?w? K? ;?z&>!>l>މ>>0>>1>w>1>=6=d=ƻ=?=s{v=s{v== ===@==ó=>>Hn>g >s2>(>.>`7>w^>į>=>I>版>>?6???=??i? ?> >!> >ͯ>>>>C 1>-)=C==#==z =z ==@=,==?=q==މ>>=(,>]>yB>`v>?>`7>M{>1k>=>M>R>?~? ^+? K>\>!>>\>>>6>h>dx>M>>>c>'> ==g=w=?=o=jQ=r,X=x=l=====?='>I%>->F>]:>>>`7>>+>Ž>R>>弿>Z>>>M{>#>,>#>>1>{>>>>i>d> =>=Ūl=#=M=x=V=?=2=0=3V=5 =9b=<=?=F=jQ=$=@=M'=> =>'>N;>}b>i>>1>#>8>>>?}>_>Qrv>J?S>U >l>>i>1>>n>2@=_z==@=l=r,X=M=<<>[>B>"RN>4>U >lHS>p5==[=1=1=?=ǡ=?> >=ػ=H=z =P#X=0=b<<><:=l=M<<== X=IN1>> e =މ=@==ϻ<<;rv;rv;dN;dN;rv;$:{V':{V';;dN<<"RN@>#l>== = ; i>l==|D s>'>;1>6>`===3V<<,;;rv=r,X=i=El=ƻ<<l>^>>>&>iL>#m>(,>>n>==;'=7D'=>>3>ئ?W7? ??]>>?}>Rx>=<;;dN<<=A=z =1=='=HS==ǡ=q==gl=4=<<:<:>>_>:V? Z?'y?6|?;?4(A?B>Hh>(V>U_==0<b:<<==e1=s=iv=V{=?>3={v=Ը?==i=o=C 1=0=$=3V=El=W =z ==L>_>r>H>H>?=?*?8?=R?5&?/t>#>?>dm=;=?<"RN;<,;<==^=6=?=Ūl=I===M{=;'=}b=V=?=5 =A=V=s{v==g=V{>>P>>>>? !?u>?&??z&>r>RN>7=q=w<9;rv<<;'<:=7D'=n>====RN= ==n>=F="RN=d="RN=?=e1=}b==Ԏ=1,>>`I>c>>Ԏ>>>H> >M<>6)>RN>T=M'=l<-;:{V';<<,;<<==?=U_=V=N;=9b=ƻ=IN<މ==!1=N;=s{v=-S=1=1=> =g>Rx>.>O(>h3>>>z>HH> ;=|=_ػ<<=s{v=>^d>^d>Y>:>I%=V'=HS====6=Ԏ==wh=e1=HH="RN<<Rx>%>0d>8 >3]>'>'>U_>>>->D'>W>RN>?>>+>>{>C 1>[==]=1==jQ=?=!1=0=R=s{v===X==1=D=>Rx>$>)8>5M{>O(>s{v>>(k>`7>#>ws>ws>>V>?}?? ;? ?>\>>r>MQ>0>?}>>>q1>/iv>[=6=ó=d==s{v=tʓ=6=1=;====]>l>#M>I>bv>y_z>?>>w>`">>̉>&>H>>_>~?!?(?*Ԏ?)?%m?w? ?6>>>:>>D<>,>di>5M{>-)>===X=`v=ƻ===ݎ==M'=>>6H>bv>-S>Rx>e>#>:>D>y>:V>G?K? e?Ym?/t?#8?+?,e?+?)U?"?F?=? ?e5>>d>,>`L>y_z>FQ>%> ;====M=ƻ=Ԏ===[N=ǡ=b>-S>)8>YM'>{>>>RN>>>dx>r?k?p? K?gU?"?(u)??M??#?i? ?-S?~>h>ݸ+>.>|>`>WB>*Ԏ>?=b=;==ˎ===i=D{=E=1=1==Ūl>6>'>E3>XQ>s'>A>RN>>(,>>>l>h?p? K?#>;>>d>#X>=>>w>M<>MQ>(>V>i>N,>Ը>=I==nI=?=l=W =V=V=W =ZD=ZD=^=jQ=}b=g=ǡ=> >-)>2@>`I>Rx>>DQ>;>>ia>Q>С>=>1>>`v>e >>>l>H>>[>bʽ>=މ=]==`v=}b=ZD=4== X<<==0=]:=z =ˎ=ƻ=M{=V{>>Ը>(6S>5 >Pw>r,X>Rx>>,=V{=ɗ=ó=ɗ=1> i>%>.>'> ns=[N==r,X=V=A=*-=6<6<=[b<<;' ;> >=>=[=x= ;<`v<7D' =>B>X>M1V> =;=wh<>S[>h>ZH}>(6S=V{=P#X<<;$;rv<$<;dN;;;$;<< >6>O(>Rx=<><:{V':{V'9:{V';;rv<<<"RN<,;<"RN<;9<<`v==wh=D=L> e >==s{v<:{V':;;rv;:<;dN;;b<`v=6=V=?=i=?=F#M>GMQ>N,>(6S===A<'6>>>R$>į>>H>>zZ>n=-S=E>ag>3>>1,?n?`a?0?B>H>>?}>Rx> ;=?<;rv<<$<=Qrv==?=6=HS====r=$=i=5 = `v<:<<<=d=V==>>?}>-??%m?6?>8>O(=M{=,;<;{V'<"RN<==p:=D{==m>>w=L=M'=@=X=o=A=*-=!1=*-=?=V=x==g>?>|2>>O? ?'O?7?=R?5P?r>l>>]:=[N=<<"RN;rv<7D'<==l==]====ܒ==E=}b=V=;1=2=5 =N;=n>=?=1=6> >]:>>>r>>? W?*?%m?8?z>1k>>,;= =;'<:{V';rv<<;'<=A=s{v=i==X=Ԏ=1==n>=El=!1=ƻ==4=V=wh==?=i"> ns>GMQ>Hn>(>>>H>;>y>d>w^>>C 1=ǡ=^<;9:rv;<<"RN e =[N=>i>;>[>p5>s'>]G>,;=,X=1=P#X<6<9:{V':{V':{V':{V':{V';<$==A=i=z ==@==?=U_=n>=s{v=z ====p:=;1<:<`v;V':{V';:{V';Qrv;$:{V';<<,;<$<;'<;<=b=5 =A=?=5 <֮<<<<$=U_=@m=4=0=2=3V=0=!1=]>[>P>/> ;=6=='=l==i"===z =jQ=Qrv=3V= ;8>Ը>'>0d>.>'>(6S>=(,>U_>>{>>(A>>`L>>`a>[>>~>G>I%=g=:===s{v=M=0=3V=M=r,X=?=$=i=@=,==1> ns>-)> >'>]:>>i>l>`7>V>>H>>C?p?=??z>>>#m>>#>>;>6h>yB>5M{>B=?=i"=;==x=x== =====V{=>g>>wI>U_>a{>yB>>>#>?}>ƥ>M<>_>ػ>r7>&?Y?%YC?'O?% ? x?P??$>>>V{>>D<>>n>>wI>`L> =g=@= =@=g==ϻ=ǡ==V{=>[>/iv>WB>t#>>>>>ia>̉>弿>\?k??(?gU??)?*V?(?&??? T?W7>>ئ>>1>>~H)>K:>(>D{=?==d=;'=d=Ԏ=M{=wI==Ūl=V{>>%>K:>bv>yB>u>>>D'>>i>?Y? ?C??%/_?i?i?i?? ?p?n> >:V>1A>>V>i>ZH}>/=>>$='=V=@==ˎ=X====1=1==>|G>-Ƒ>?>T>}b>,>>#>6>M<>d>:V?i? ;?>>r>>̳>,>r>̉>p>>&>>Rx>IC>Ը>n==6=q=s=s{v=jQ=_ػ=ZD=ZD=W =V=W =e1=wh=D{==]=6>?>E>?>yB>[>1> p>n >w^>>̉>;>>>>i>w>6h>(k>RN>>M>Y>]=֮=]=[=D{==n>=D[N=*-=b=6<:1>>'>E3>d>>[>={=ó==6= > ns>d>'>g>=]=?=jQ=V=J=3V=<'=z ==D{=?===V{=L6=J=A=M=i=|D==@==i=$<{v<<`v$>8 >/iv> e =D=-S='>_>}b>k>9:==-S=<;<"RN7>x>>>G=L=n>%>[>s'>^>(={= `v|G>(>=g=6`>>1=]=s{v=E6>s>RN>Y>V>#>F>2@==i<<;V'<;<=A=r,X=6=1=RN=g=X=z =U_=<><<$<"RN<<<"RN<;'<މ=2>I%>k>>` >> ? >#>?S>DQ>P=Q=ZD<;:{V';dN<[N<<<<=4=p:=g>`I>|2>G>,???$?>L>{>[>;'=<;dN:<b>~>6>->?8??%DQ?>>>w>.=@=<;<-)>U_>>?>É>??>>M<>#>q=ʓ=x > ;>F>ns>`L>V>>(A>>`L>]:>3=`v=#l<$:{V'9:{V';$;rv<<$<[N<<==D{=#=ɗ=X==إ>n>>%> > ;=V{=1=n>= <;';rv:{V':{V':{V':{V'9:';<<$<<;=W =?== `v=6> [>-)> ;===l=1=ƻ=q==RN=i=x=e1=J=5 =d<<<;<$< ;>>m>DQ>H>6h>>^5>L>Pw>[>[>FQ>==b=,==|D=e1=5 == `v=!1=D[N=gl=s{v=x=}b=-S=nI=1=إ=l=6=,X> s>>:ݸ>_ػ>6>Rx>D{>D{>>`L>#>5>#C>&>ͯ>->>#>V>V>>6h>>G>=h=i"=M{=1=}b=i=e1=r,X=IN== =1====L>`>#l>'>/=>I>n>1>#>H>V>&>6)>K>>M>>8>MQ>_>[c>Y>->>GMQ> i> =HS=[N=g==?=-S=@==?=;=]=d=> e >'>5 >Bd>P>m8>>#>6>>(,>>;>>>Z?D????1>F>m>->#C>M<>ó>y>#>X>O(>(6S>I%>?=V{=;==-S=ˎ=@=1=g==l==;>3>Ը>(>0>C 1>^d>>RN>=>,>ǡ>M<>>?Y?1>l>dN> > >-> >ΪW>>>ia>#>>d>.X>`>=6=ó=g=={V'=z =z =IN=l=l=?==1===b>>Rx>%>T>>>->1>(>>>>3>:>Ƒ>n >6>>>>>?>>>>P>-)={v=V{=Ūl== =C=jQ=U_=D[N=?==ϻ=4=2=2=;1=Qrv=s{v== =g==1=6>>FQ>c>?>|G>(k>V>>>M>B>O(>]:>jQ>yB>~H)>mC>J?S>?=ǡ==@==?=s{v=U_=0=ƻ=<> >$>@m>S[>U_=;'=]=@= =q=Ūl===ܒ===Qrv=5 =2=#l=<><<<:<<$<;rv;rv;::{V';dN<<<|G>/iv>'>==?=;'=i=ϻ> >W >r,X>a{>/===?= X<$<,;0d>m8>>wh>?==i<֮<<<"RN=l=>>U >i>YM'>%=Ūl= X>&?>=إ=?< e >E3>z>R>crL> =1=o=<`v;<;<<=$=?=ZD=s{v=s{v=s{v=_ػ=?=;'<<<;<;rv;<:{V';dN<7D'=nI>>N;>D{>:>(A>ia>6>>`L>Kq=V{=s{v=IN<';$<bHn>>Ԏ>>>_>ݎ>,>i> =g=7D'<;';dN >[>,>>->m>:>̉>V>>%==A=A=E<><;<<[N0d>s2>>(V>(A>`>>6h>S[====r,X=i=I=<:<<<<-<[N<==5 =bv=z =i=== >D{>6H>[>vmx>s{v>P>=ǡ==5 <<9:{V';rv<<<<;=x==D[N=l=== =1=1==l==ϻ=<;<:{V'9;<b=== `v=<>=V=L6=M=W =i=e1=U_=;1=d=$<G>@.>1> >=_=d=6==='=1=;'=l=p:=ZD=D[N=!1<<6<<<>==&?=<=J=_ػ=tʓ=-S=M==i==;'=;= 1='=L> i>Rx>>Ը>.>E3>RN>RN>(k>>>^d>Hn>O{>]:>]G>G>"==d==D{==s{v=M=(=d=!1=?=U_=i=r,X=wh==D{=;==Ūl=d=d=V{=>1>5 >Y>yB>W7>?>i>?>(k>R$>>#>>>RN>I>H>>>>V]>%>=V{==6S==wh=ZD=T=U_=e1=s{v=wh=z =?=ˎ=ƻ=D=i"=I=މ='=h>B>;1>kL>(>>->w>>>y>`>r>D'>w^>>V>l>>|2>`L>Rx>^>'>(===M{=1=?=o=e1=]:=gl=n>=s{v=s{v=s{v=}b====Q=Q=ǡ='> >0d>a{>;<>I>RN>>X>]>C>6S>m>?>>>>>.>,>>n>>3> ;=g=Ūl= ==X=x=e1=U_=D[N=A=A=A=A=A=M=i=}b==@=@=@===b>#l>GMQ>kL>>>1>i>>dm>Y>]G>f>g >_ػ>_>`I>Y>@>='=V==M==l=n>=M=5 =!1==IN<{v<?>>3>S>iVQ>q1=Ūl===Ūl=i"=1=h===ó=@=s{v=a'=V=U_=A=*-= X<:< s>3=Ūl=6=ZD<'>={>0> =#=_ػ ;>:ݸ>Rm>E3>;'=M{=?<<<<,;'>7>(>IN=1<>D=1=?=e1>E3>Lݎ>,;=#= =M<>>0d>bv>u>Rx>{>,;=_=l=!1<;dN:{V';V'=ƻ=El=$=6>W">9>e1>?>=>qؑ>'==?=$<;< `v:< `v>&?>6H>6H>nI==]=U_=6<;rv9;<b<`v<֮=6== X<<<`v=3V<<<"RN:{V';$<<6<;<<ɗ<'<:<<6<=o=[b=?=ƻ=6<:=]==V{=M{=E=i=D{=q= ==1=?=jQ=N;=@m=&?= X<<<<<=z =|q==q==]=ǡ=>6>-r>'>':>> =މ=ǡ=]=HS=?=dN=Ūl==6=wh=o=V==ϻ=ƻ=6<:<<:=6===*-=A=ZD=s{v=x=s{v=n>=ZD=e1=wh=|q=[==إ=:=L>Rx>'>1`">0>,#>)8>(>-)=L==,X>>3=6=ǡ==s==s{v=jQ=L6=,;=ƻ= Xw>>-r>6> >n>>=>=V{=_=V{=:==D= ==x=r,X=i=U_=5 =d==<> ;>=g=1=,=1=@=]=1=nI=1=s=z =jQ=N;=A=<=*-=E<<<'<'1={v=M{=wh<<;<b<<"RN<<$<;9;dN<'<<6<<`v<;<==U_=U_=C 1=,;= X<'<=l=i=U_=0===b=;1=U_=W =D[N==IN<<<<<<6=4=!1=l<6<`v<;;<<'=HH= X<=?=E== ;=E=E=<<<`v<;rv;;dN<<=i=i=i=V=4=<6= X=*-=M=i=n>=p:=l=l=n>=p:=wh==1=#=-===='>IN> > >> =V'=މ=== =D{==-S==?=l=2<<<6<<>=6==ƻ=!1=3V=I=i=s{v=z =}b=l=== =q=Ūl=?> >=?>IN>-S>>ƻ>$>====ǡ==;== =1=]=@=$=s{v=5 =6<{v<=6==!1=2=7D'=<=9b=A=V=jQ=n>=s{v=z =6= =?==> X>>Rx> > > i> e >>[>(=Ԏ==RN= = =ˎ==i=i=|q==z =U_=w<:=s{v=s{v=l=N;=d<<<<<<މ<:=ƻ=L6=n>=}b=i=======?==@==0=0=3V=$= `v=ƻ=9b=M=W =a'=e1=n>=s{v=wh=z =wh=l=El<<=IN==!1=0=5 =9b=2=;'<<'<<;dN;$;<<><'<<<<$<:{V';<;'<<{v=A=x=$==n>=3V<:<= =d=I==RN=s{v=<:<=z ==1=ǡ=L> >=Ūl=6=4<<"RN9:';:<< ns=b==?=$<;<:{V';V'<'<`v<<6<<<;<"RN;::rv:;dN=3V=s{v==q=`v=?=s{v=r,X=z ==z =U_=$<>=l=wI==z =a'=U_=V=e1=W =A=<><>>f>8D>>IN=މ=ǡ==D'==(=?=V=<<<<6<>=6=;'=0=Qrv=s{v=6= =RN=q=q=?=====މ>6>-S>6>]>'>G>t#>>;<>|>`7>RN>D{>vmx>ZD>J?S>;G>,;>%>-)>=V{==s{v=U_=M=HH=U_=gl=s{v=z ==`v=RN==_=6=C> >Rx>I%>>&n>N;>>>>Rc>>1>H>#>>D<>w^>#>#>RN>I>[>D{>w>>j6>V]>9>-)=C===`v=i=@=;'==#==M{=Ūl=g=?> >>/iv>FQ>P>]G>~>,>6S>Y>`">1>y>w^>D'>{>>>6>>X>>RN>`L>`L>>I>D{>-S>k>N,>'=r"=1=;===]==d=ǡ=Ūl==Ūl=V{==>B>,;>I>[>ps>[>->>]>C>>>`>&>>n >|>>>>Z>(>D{>&>[>s2>`>N;>.> `v={=6S==?=|==]===]====q==i">>|G>,;>FQ>c>Rx>1>>->>>>|2>1>1>>@m>5 >/iv>0>5 ><,>=ϻ>:ݸ>.X>g>Rx=?==@=|D=z =?=6=$=i=@=@==wh=i=c=e1=gl=s{v==iv=V{=?>[>,;>U >r,X>{>s=>j6>dm>YM'>J>E3>C_=ݎ=ǡ=ǡ=ǡ=ó=d=6==ͅ=Ūl=M{=w=l=V=5 =!1=&?=9b=A=M=U_=N;=<=;'<>===D>=?=dN=މ=V{=l=p:=p:=i=V=V=n>=s{v=z =z =s{v=i=A=E<'<<"RN<"RN<6=$=M=fdN=jQ=i=U_=A=A=M=V=l=l=w=D{==s{v=i=]:=e1=W =D[N=(==w==!1==<: > >1==d=]=q=?=1==@=?=p:=a'=e1=p:=s{v=l=i=p:=x=6=X==C=]:="RN<<=]>>Y>>,>~>zZ>>n=ڜD=?==s{v=V==ϻ=2=?=U_=fdN=l=x=$=[==i"={=V=ˎ=[b=;'<6<`v<b;<;<;= X=x=V{>C_>>8>#>>>>N;>Ը=ػ=s{v=5 =<{v<֮<;<= X=$=I=s{v==M{=g=D=?=;=1=l=<[N<;<:{V';GMQ>e>ws>>y>?>>EV>6=<:-)>tʓ>>RN>1>Rx>M>(==V<"RN;9;<< ;>(>0d>'> X=ɗ=-S=?<<<;==Qrv=s{v=}b=s{v=N;==e1=?= s<;=1=ǡ=g={=d=p:=d<ٌ>%>0d>%==g=V<>>1>Rm>\>I>-)=wI=o<-)>b>&6>A>V]>\>G>=D'=i<>1>>'>-)>E>#l>.X>/=>g=6=@=5 =@=ǡ> >%>.>]=r"=V{=i"=ܒ=މ=d=]=U_<><;<$:{V':rv;dN<<7D' ns>g>!1=1= =IN=o=l=n>=W =(<'==d=d=<{v<<`v;rv;;;$;rv<<b<<"RN<>=إ=g=ǡ===jQ=M=El=T=ZD=U_=<=E<:=6=b==*-=D[N=s{v=@=-=m>A>>>N,> >?=g=V{=֮==ó===ZD=ƻ<֮1>;1>c>>Rx>,>D>`>>I>[>>>tʓ>bʽ>Qrv>/=> e ==ˎ=l=U_=I=P#X=gl=s{v===g==M'=_z> e >w>'>+|>,ws>-r>?>di>;'>>RN>>(V>V>1>ݣ>#m>#m?g?i>5>>>`>M{>V>?>[>|2>>k>9b>6=rv=1=]=]==ɗ=މ=>?>Rx>">2>Q>s'>u>>Rc>>m>y>#m>>6>h?z&? P.??`?#? ?$?? =?s2>8>Z> >~>ݎ>K>w^>#>M>>N,>'>>>[>]>-)>">&?>'>2@>D>S[>yB>;'>>m>>w>>>?=? ?'y?- ?4?8?6r?1?,M?"?=q? K?6?$?>>,X>H>ʓ>>:>3> >k>G>9:>2@>.>/iv>3]>;1>7D'>2@>5M{>={>I>jn>A>>n>H>|>P>_??,?*?.?1K0?5#?7Q?4?0?*?>>>?>Z>>>1,>>(,>>>;>>Tdx>8 >2@>.>,#>)8>->/iv>'>i>6}>>b>,ws>\?)>i>H>(k>q>>C>r7???w???[? ? ;?>~>|>>>>V>>#>X>>;>>c>3]>> > > > >8> >ˎ==b== ===>ƻ>@m>]:>D>>m>#>D>>r>>D>>> >>n>{>s'>{>?>>M>`v>}b>]:>E3>%>=i"===[==?=?=q=H=D{=l=i=Qrv=El=El=fdN===;=,X>>2@>`I>> >e >>>n>yB>yB>=g=I=I==={v>?>=L==V{=1=w=?=gl=A=3V=?=A=M=P#X=El=0==Q=?> > >6=6=V{=M'==>B>'>I%==V{=ϻ======?=z =IN==6={V'=^=,;<<<`v<;:{V'<<;=U_=>>N;>Rx>|2>>V>->>n>mC>XQ>jQ>5M{>D{={v=;=b==ó=6=ó=1==ó=g=L>=g==?=El=<<<:{V'<"RN<{v=s{v=إ>L>`L>ia>_>V'>(>,>H>Y>#>;'>Z >Ը== =,=@=1==1=ó=;=v>8>%DQ>7>:ݸ>%==?=s{v="RN<މ<`v<9<"RN<=z =h>}L>>?#?'?'y?>r7>D>;>>==6=p:=R=Qrv=l=l=@=RN=(,=Z>>;1>U_>YM'>;> e =M{=s{v=!1<<$<<~>>H>?H?/?- ?>r7>>|2>tʓ=-S=5 <==El=s{v=D{=Q> ns>.>Kq>K:>+|=L=g=VI>>ќY?{?#? !>>wI>RN>]G=L<<;dN;rv;rv;rv< >>-)>=]=s{v=z>`7>d>>1>(V>>'=M{=U_;<;dN<`v==W =ˎ=r=m=D==n>= X<<:{V'9<0d>Y>WB>8D> e ==n>=<$;rv<`v<:=3V=ZD=n>=bv=3V<<|q>]>6==IN=*-<[>3]>V]>_ػ>N,>-)==jQ<==3V=4=$= X#l>,ws>N,>s'>i> >zZ>9b==|D= s<$;{V';>Ը>_ػ>[>e1>n>[>1>yB>6=g=wh,ws>U >c>{>^>V]>a'>m8>e1>J>?==N;<6<:{V'<<<;1>2@>b#.>>W>]G>6H> >ƻ>d>-)>=1=s{v=6<`v<$:{V';<<<,;b>D>d>~>|Q}>-)=6===g=1=6=_ػ= X<<7D';V';rv;;::{V';{V';$:{V'<7D' >$>4>?>2=D{=s{v=A=!1=ƻ=;'=<'(>.> >=ó=g==@= =1=`v=z =U_=ƻw>>D<>>i>>p:>I>?>?>4>&?> == =i=!1 >'>@.>G>M>j6>i>>>>r?z&>>q> >`>w>=>?>ws>n>RN>[>s{v>,ws=dN=#=@=-S=-S=@=g==ó=I>IN>>%>AiL>]:>wh>>?>Rx>,>>(A>D>>:>W?? D? z??p?:` ?3?)?n?p?s2>r >#>Z>[>V>>V>H>g >0>-)> ;>> >I%>>(>3]>G>WB>ps>Rx>6h>>#>:>`>{>3??w?+?6n?A~>?Kq?Q?M[9?EV???S~?J?AiL?6n?.?+?)8?!V? O?K>>>>(,>r>>u>m8>[>Qrv>Qrv>YM'>ag>fdN>m8>z>`>Rx>6h>[>V>>P>ճ>h??.?AiL?P#X?Y?c?j`?m8?iA_?aQ?X_?T1?Mr?Cݣ?=:?9%?8(?6n?/?!v? e >0>ݎG>ݣ>V>DQ>I>Rx>W>k>}b>>>>C>C>i>>?>`7>V>>>-?D??6H?I?W^?`?f?kʨ?mq?iA_?bi>ʼ>(>;>>[>`v>U>}L>wh>w>zZ>n>^d>U_>R>V]>C>,>>>?}>H>??$?9:?D?J*a?N,?P?P?L?F= ?AiL??Ҙ>>?z&??p>,C>#.>>` >!>Ʀ>>>crL>Y>P>G>EV>C 1>Bi>2>"RN>Rx>-S>n>I%>=ϻ>s{v>>6h>`7>]>#m>#???n?43?gj?i? ҃? /?ˎ>>D<>W>>(A>?}>D'>,>>RN>w>W>]>6H>> X>>=V'=r"=#=HS=V{=M{==6=?==g=>1>.>n>i>|2>Y>>C>y>>Y>>D<>`">GMQ>=ϻ>>wI>Hn>YM'>c>j6>a{>Rm>?>'>=#=Ūl===?=?=?=?==}b=n>=A= X<މ<[N<6<{v=$=[b=IN=@==g>>2>L>K:>@.>8 >8 >={>G=@= =====1===1====s{v=J=<=IN<{v<<$<;$:;<=IN=;'=$=.X="RN=ƻ= X<=z =z =s{v=_ػ=M=5 =E<:<<{V'<:;{V'<<`v<6>[>`L>(A>>ئ>#>[$>{>>>`7>>Rc>m8><,> i>> >W">B>Rx> s>> >!>4><>(6S>=M{=}b=?=IN<<"RN;;dN<=A=X>.n >d>?W7?,M?<,?<,?/iv??s2>ܼ>(,>>;<>C_>I%=?=ػ==L> >[>>>5M{>_ػ>n>>qؑ>:6)==1=ZD=MN;>ws>_z?3k?S?b#.?^?P#X?7Y?e >>6>`>0d=dN=Ԏ=@==1= =i"=>1>ƻ>J>s2>i>[>>R> ns=d=W = s<<"RN;<:rv<$=!1=?>G>?W7?>bX?]9?j{?fdN?T1?7?>_>,>]=1=W =,;==ƻ=A=o=6= =Q>-S>5M{>n>`v>(>}b>=ϻ=:==4r>>?.f?Kd?WV{?P?<?!>1,>:>=D[N< ;>4>U_>Y><,> =?=P#X<<$< `v;dNp5>>]?? M?T> >.>`L>8D=D<:{V';b<7D'<=2=}b=X=>6>6==1=U_<֮s{v>n>y>R$>>Ը><,=ó=i-S> i>Rx=;=|q=<<6==@=?=U_=< e >;'>6=1=s{v=>E3>_>d>N;>E==U_:ݸ>FQ>]G>`>Rx>Rx>~H)>8 =މ=s{v<:<<;<7D'<==(=?=4=w<<;'<b;b<< [>3>1>z>D>->>>>~>9:=:=r,X<<;Qrv<"RN<<:=E=!1=ƻ<<'>\?)>>i>A>3>r,X>{>l>x>S[>=iv=El<-<<.>g_>(>>#>>X>6H>/=>.>'> i=ó=wh=lb>G>{>>>>6H>=ػ=[N=1==D{=p:=ƻ<<;;$;;:{V':;':{V';{V'<`v=;'=r,X==g>M>2>U >i>n>]:===n>=V=M=A=0=<>[>I%> ;==<;<@.>GMQ>2>M=ػ=M{=;==wI==X=`v=r,X=0<<<$<'<b<<"RN>-)>->y>V>Ƒ>->u>p5>n>{>yB>iVQ>S[>,ws>-S==l=A=ƻ=>> >[>>-r>O{>g_>wh>n>>w>(V>X>>?[? ?i>弿>H>D>m>.>(,>|>D<>l>[>^5>=V{==1=D{===d=ܒ=?> ns>(>,ws>O(>qؑ>i>`>Rc>>>`">K>>m>&? ??"??6}??EA?@֯?8?,M??!?n??-S>h>߄>r>w^>i>?>^>6H>"RN>>>$>/=>>wI>L>YM'>d>>~>|2>#>1>>ݣ>תB>F?C?,e?;?H3?VO?_?c?]9?T1?Kq?aQ?ZH}?R?HD?BO???=g?6?*??W7>>(>6)>Ԏ>>>~>j6>di>o:V>~H)>>>?>->>F>|2>n >>P>=>q?W7?!B?;G?O?^5?jn?w}?~??{?p:?f?dC?]Oq?W?P?M?Lt?Im?A?3?!? >|>(>>>DQ>>~>Rx>=>>]>>>1>>1>RN>X>` >>>>? ?*?Bx?WP?fy@?q1?{A5?~??|?A?BM?@m?7C?'?M?>:k>>(>H>|2>>[>>>>X>>}>m8>di>o:V>(>>>|>į>>,C?T?3k?FϦ?U?\i ?bʽ?fO\?f?`?Yb?S?>? [?/t?`a?1?P?"y?;?#?Y>>d>{>`">>i>Rx>n>s'>`,>Y>WB>WB>N,>4R$>#M>>`>'>ZH}>>.>>6>>r>(???)[?-3?./J?.f?,e?)?$ۘ?"y>3>m>>ݣ>d>>ͅ>į>n >X>>?>[>m8>J>0d>$>1>Rx> ns> >(=r"==X==W"= =1=h>-)>5M{>_>>1>u>(,>6>>ǡ>>>Mf>H>į>~H)>t#>s=>6>>> >(>3>dm>N,>.X>b>?=V{=]=1=]=@==`v==z =W =$>)8>Y>{>|Q}>l>fdN>a{>crL>n>}b==== 1=;=g===Q=g=]==6S==s{v=?= X= X=2=C 1=El=A=3V=d=<I%>D{>>?=g=ó===@=}b=U_=;'<6<`v=5 =tʓ===rv=V{=ڜD='=g=6>> >>A>>]G>Bd>'>Rx>=?=弿=ǡ==?=_ػ=J=N;=V=Qrv=3V= X<މ<<$<b;;rv<"RN<==}b=Ūl>-)>YM'>`v>>|2>l>|2>(k>ԣ>>ƻ>u>->(>g_>HH>+|>!1>ƻ>(>[=?={==ǡ==='=]=6=V=ƻd>X>;> > ? T? P.?`>&>1>С>{>,>6>;'>d>EV>(6S>#l>'>(>'>>I%>>6H>V]>_>Oϑ>%=g=@=V=;'<\>>L?*k?Hn?W,?Uk?HR?7C?"(k? V>1>G>RN>{_>4>>$> s>?> >%>%>)8>O(>3>`a>|G>Rx>bv>#=D=s{v=(<֮>m?g?Rw?q?~37?z?i{?Rm?7D'?>>q>wh>=M'=]=?= =V{=h> V>D{>)8>^>w>>1>,>>(=ó=s{v=<<7D';;<;'=A=6>n>?-?^_?}"??C?m?Si"?3k? i>>W =b=6=V=5 =?=fdN==w= =I>I%>L>D>#>?>>di>=?=Qrv<{v<`v<$Qrv>?*?Q?l]E?wk?mq?W^?8~S?>M<>`7== X>N;>vmx>~>`,>(6S=i"=s{v=> s>M>l?%?@m?F= ?;?!>Z>w^>Rx>[<"RN9;<<$<މ=?=?= =>>|G>==s{v(>#>#m>弿>:k>>>> `v==9<<=E=ZD=?==D{=?=Jn>]:>i>{>2@==s{v=6<$;<<`v-S>'>?>C_>'===ƻ<;dN;dN<$'>,ws>EV>`,>yB>u>S[> =Ԏ=A<;dN<<;'>'>q1>_ػ>a{>yB>[>~H)>W>==A'>U_>x>C>>kL>ZH}>]G>`I>V]>2==@=d<$:rv;Qrv<<ٌ>3]>jQ>=>[>E>wh>HH>'>!>.>==6S=c<މ<;<<'==HS>>O(>}b>Rx>>(>)8>1={=1===ˎ=e1= `v<`v;b:{V':{V'9;<;'==s{v=q=> >6>WB>f>fdN>T==?=jQ=ZD=V=N;=7D'= X<-<;:{V';$;;;{V';fdN<;= ;=gl=@==>8>]>I%> == s<6<==1=RN=,=X=x=J>!>=>=1=RN====1=6S==i= `v>DQ>>RN>i>jQ>U_>]>n>n>^d>I>&?=L==x=7D'=< `v>>/iv>GMQ>Q=>[>;Q>#>1>1>>|2>H>>C>>[9>R>D>>,>>>(V>(k>#>U >=H=g==?== =q=wI=]=6>>]>)8>N,>c>~>>`>`L>`7>#>>r>>V'? ? =?>>?6H?3?,I??43?i?? ?>>:>>#>l>1>T>(6S>Rx>>6>[>>'>0>;>IC>]G>>H>>(V>>>>弿?D??,b?:?G?S~?VO?N;?B:?:6)?S?N?H3?A?h??"|2?=?D>版>>r>>>>c>P>N,>Tdx>_ػ>fdN>j6>ps>z>?>ƻ>>6>>>Ϧ>>y??,?A*v?R?^ ?i?s1>=>>Y>|2>w>>D>yB>}b>1>[>~>|Q}>}b>>w>n5>>(,>>弿?Y?B?54?Jp?Y?e*#?nh?vX?v1?nќ?e??[?C?A!?=?\>m>{>>(V>->~>=>~>s'>s=>zZ>s'>`,>U >P>Tdx>z >Rc>Ʀ>Y>>ʼ>版?-S?$H?;?G8_?Q?Wkl?[m?ZH}?U_?L?E?`?D{?gj?A?1??n? ^+>#>օ>1k>D'>D<>H>,>X>u>\>J>@.>?>B>4>%>M> V>6>I%>=(,>o:V>]>>V>w^>>? Y?b??"y?"? [??n?&>#>(,>>g>#m>>P>>>`7>>~>W>g >G>+>b> =L=>===V{===ˎ==|q==V{>1> >FQ>vmx>[>>1>{>K>#>(,>` >`>D'>(,>c>_>c>y >>=>`v>>jQ>U_>>#>'>;'>?=V{=iv=@=6==l=l=z =l=A==;'=?=i=z =i=;=g>;'><>\>]G>U_>T>Qrv>T>]:>c=====ó=_=I=:=V{=#X=Q=:==i=s{v=?=l<<<><:<'<;<>`>> =>3=I==-=1==x=N;=<<;?> >>D{>n^>D>]G>>wI>%> ==6=ܒ=g=,=z =T=?=A=U_=Qrv=5 = `v;'>R>>,>1>RN>RN>#>Ʀ>|2>>n >>>c>FQ>'>|G>>I%> V=dN==X==V{==I=M{==V=E<֮<`v<;rv:{V':{V';V'>W>#>ʼ>???3>V'>:V>M'>D>>>`>bv>=(,>%>>>$>>Rx>>>)8>O(>\?)>O(>&6=1=]=V=WB>|>?+?HD?VO?S*L?EA?6n?%? K>ʨ>>RN>z>2@>>?>?> e >>Ը>>g><>s'>>>Rx>c> ==s{v="RN<63>?"(k?V]?s'?~r ?ytl?gJ?Q/?8 ?YX>>R9>xd$>w=V{=X=g==ݎ=6=>|q>ƻ>O(>>>>e>l>-=ǡ=s{v=<<"RN:rv;<`v=;1=Ūl>>{?3?c!?~??C?l]E?Rw?4?>M'>\=ػ=-S=U_=0=4=W =IN=D{=q=Ūl>n>6H>}b>[>,>i>iVQ>=#=U_<:<;;dN<"RN=IN=>P>?%?V?qE?z ?nh?W,?8?}?>إ>==< V>fdN>x]>^>)1=V{=wh=6<`v<;rv>>!?.?F= ?K?=? 1>Q>>1>`<:{V';<b<$<;=!1=s{v==g> >`>==x=6<{V';rv<<>=>0>>=>C>!>m>V>w>==69<<<=?=s{v==X=IN=M<މ<<"RN=6=>Rx>~>e>i>T==l=<;;$;=*-=e1===1==El>3=V{=@=5 <<$<b<`v<<'(>>(>'> e =wI=l)8> >!>,;>6H>/iv>=Ūl=s{v<<<<`v<<6<> >2@>6H>G>(6S>,> >">b==q=[bI%>6>WB>d>_>0>Rx=r"=6=1=i"=;=C=*-1>'>I>]G>bv>U =r"=b=1=D{=@==s{v=?<'<"RN:{V'>)q>2@>->|G=|D=M=<=A=D[N=?=!1<:<`v;dN:':{V'9<<_>bʽ>U_>/=>;'>>ƻ>'>)8>%>=HS===A=l>>6}>2>F>D>FQ>Qrv>>>>`7>V>>#>>#>`L>>>N,>=Ūl==o=El=8D=A=W =s{v===ƻ=;==b>?>Rx>>,;>A>]:>s2>w>,>RN>`7>V>wI>D>~>6>>>?>L>#>>(>ܼ>_>:>H>>#>->>G>=Q==?=q===l=?>3> >>/>Tdx>wh>>#>(k>V>>K>>ʨ?i?43? M?"(k?|?1>?$ۘ?% ?!??`?&?w? e>H)> >V>->>>`>g >=ϻ>.> ns> >I%>>':>'>'>,ws>9:>\>W>,>>>]>D>Ӽ>d$?i?"(k?1?=?E^?EA?=?/?&??-?-r?+R9?'?'?'y?"?6}?>1>֮>P>|>|>`L>=>h3>HH>-Ƒ>'>.>9:><,>4>/=>/=>7>Y>ns>>>>?}>H>M?D??.?9p?B??I?HD?@֯?58?-]???Ko?`a???T?>=>1A>>?}>=>>>>a{>G>,;>':>(6S>.>,ws>#M>>I%>I%>'>S[>>>|2>>D'>r>6?b?B?$H?+?0?.f?% ??`>Vf>{>{>l>>>?>M<>Mf>#>Ԏ>>i>Rx>ps>O(>.>Ը> >?>1>>l=dN=ɗ=1=M{=Ūl=D>nI>;1>bv>>?>n>y>#m>C>_>>>ئ>ܒ>m>٠>>>m>>>|>`7>RN>#>!>z>]:>G>.>>=_==q==== ==s{v=W =T=e1=|D=D{==6=>-)>kL>>->>|2>RN>->`L>>RN>;'>> >'>0>9>5M{>(> >;'> ns=L=dN=6=|==l=T=I=A=A=?=!1<<<;'<`v<<>==3V=D[N=ZD=s{v==M{=Z> ;>Rx>> `v>[>Rx>;'>=s{v=z =?=|q=@= =1=,== = =@=6=s{v=P#X= X<= X=3V=M=U_=U_=v=弿=g=6==1=-S=z =p:=M=<މ`,>I>.>b>=V{===q= =}b=N;=== `v=!1="RN=<><<`vg>Bd>^>yB>`>ns>(>`>Rx>>1>>_ػ>5M{>>=HS=dN=={====ˎ==M{=@= =s{v=<<<O(>,>6>>(>M<>ϥ>˸T>ݎ>?S>->=>>+>h3>2>D{===?=L==V{=d=6>>d>,;>'> ==?=?<:%>,>6? V?,M?5w^?2?&~}?`a? W>>>#>`v>@> e ='== 1= =6=6=g=> >6>bv>{>j6>B>-S=1=[b=<<;Qrv;dN<`v=$=6>@>Ƒ? ?=:?XќY>w>2@=Z===z ==g=]==[N=>>S[>1>>>WB>D{=|=[b:>(A?P?LJ?f?n?eT?P#X?7Q?k>\>>-)=d=bv=<=l="RN=V=s{v==D{=> >C 1>s'>-S>wh>FQ>=]=7D'<ɗ<7D';< `v>#??@֯?Yw ?^?Si?: F?>>>>w=M `v>2@>GMQ>4>[==c<>̉??1`"?3,?>>>>Y=Q;rv;<=3V=tʓ==i"=dN== =bv<>H>(,>=>(>>RN>O(==k<;<'<G>>yB>/iv=6=s{v=IN3==1=1=`v=@=@=-S=s{v=<6>?==?=e1=V=e1=i=V=?=<;';<<=d=i==?=1=6====<'<==;'=<<;<"RN9;dN=r,X=s{v=}b=?=?=X====]=M{>?r>J?S>GMQ>/iv>'>0d>A>G>G>3>`L>=i"=1=s{v=2<>==$=?=N;=a'=p:=|D==D{===V{=Q=> >I%>!V>:ݸ>\>]>FQ>.X>.X>`L>l>>(k>>->RN>>> >8>_ػ>9>M==1=tʓ=M=5 =<=U_=r,X=}b==|q=@=1==ǡ=>>I%>'>GMQ>`I>wh>>Rc>RN>(V>1>>>>Rc>w^>>>>>>6)>#>Y>>1>>n>Qrv>==m=1=6=6=D{======d='>ٌ>>2@>Rm>t#>Rx>>RN>>y>g>ͯ>:>>>]>>iL>Ȝn>̉>1V>ͅ>d>Ϧ>>V>>|2>?>Rx>k>Ը=h=Q=;=?=M{=[N=ɗ====ó='>ˎ> ><>^d>>>->`7>,>H>ݎ>>>>r>>(,>|>>->>Ž>>d>`">>M>-)>>~H)>U_>/=>I%==Q======V=?=g=g==_=L>;'>1`">U_>z>]>>>V>,>>Ϧ>6>D'>>,>6h>>Ʀ>>`7>>M>>W7>g_>S[>E>2> >w='==1=ˎ==ˎ=i==?=s{v=n>=l=s{v==g=M{=V{>>b>/iv>Q=>`>>>RN>|2>>>>ƻ>'>/=>G>Qrv>P>G>6>'>> e >=,X==6===s{v=W =J=A=A=A=3V==<<= X=.X=L6=e1=s{v==D{=|=6=L>>'>)q>)q>(>&6>%>':=@=1====]==q=[=ƻ=1==@==n>=4=>=ܒ=wI=d==z =s{v=l=U_='<{v<<-S>Rx>Ը> >|G> ;>H6>'> ====@==X==r,X=D[N=.X=5 =ZD=s{v=wh=i=4<<0>y_z>Rc>>`L>`L>>>,>~>wh>4> `v=ܒ==;'=@==ƻ= =6=x=|D=D{==:=إ=M{==N;=IN<2@>#>D'>[$>弿>ۗ>ͯ>R>iL>]>RN>di>=1,===wh=z ==@=@=ˎ==1=ڜD>Rx>$> >n= =x=!1<h3>>Q}??#^? ?>,X>>->>e=ϻ==V=(==9b=ZD=s{v=x=z ==]=>'><,>3>=ǡ=IN=!1<<"RN:{V';V'~> 1?#?1?5w^?(u)?p>ؑ>ͯ>,>;'==A<><<`v<;'<<==7D'=Qrv=s{v=g=dN>Ը>,ws>'>|q=]=l=l<;;dN:{V'U >?}?p?$4 ?'O?I%>>V>;>(>-S>>>:V>:V>M<>>>C 1=ˎq=U_:rv;V'<"RN<`v<6=;'=]:== =X=s{v=<<$<#M>~>`7>?>>G=6=?=6<"RN;<"RN<;'>=g==A<[N<:{V'<<'<'<<:{V':{V';;'9;<$<6>$>===[N=q==wh=M=<<`v ;>-S=v=d=>>-r>F>IC>FQ>C 1>9>.X>">Rx=L=إ==RN==V=<> >$>FQ>U >L>%> >1>.>Rm>lHS>t#>iVQ>[>J>3]>#M>Rx>?=={===wh=M=!1===E=*-=9b=A=?=A=M=ZD=s{v=}b== =]=;==>>>!>D>^d>o:V>_ػ>6>ƻ>> >;1>U >]G>Q=>9:>%>]>?=dN=V{=Ūl==Ԏ=@=s{v=M=$= `v= `v=;'==$=$=!1==0=A=V=l=s{v=====Ūl=>Rx>'>8 >C 1>6>"> `v>[=V{=>> > ==إ====g=1=@==tʓ=N;=!1=<><<<<>>?===1=g==n>=A=!1==!1=+|="RN=<<=w=N;=s{v=wh=jQ=3V<>6H>~H)>(>>zZ>o>[>0==?==ZD=0=<><= `v==!1=ƻ=E=0=i==?=q=]=p:=<(6S>[>;>>#>|2>>X>O(>3=s{v=5 <:GMQ>H>>r>w^>`7>>xd$>%=<><;'<,;<;b;b<,ws>>V>&>;>>m8>.=M{=U_;dN;rv<b=<=s{v===r,X=*-<6<"RN;dNbv>>6h>>GMQ>=1=7D'$>)8> e =ó=?=<;';<:{V';dN<"RN<`v<<$;{V';fdN;rv;b;:{V'<<$<<;'=l==!1=,;=*-===V=r,X=IN===C=s{v=o=i=U_=5 =b=<<<$<<;99;rv<<<7D'= X=(=?=N;=i=i=V=A=@m=n>=?=]=1=]==wh=l=ZD=M=2=b= X<<<=="RN=?=T=bv=bv=U_=A=A==A=[b=e1=V=A=$= X<<>==6<{v<<6<<>>==wI==D[N<;:;:{V';;dN<<<'<<$<[>=:=g=i=IN<<"RN:{V':{V'<<=p:=Ԏ=Ūl===o=<<{v<'<<<`va=0, =#={=}Ŋ=h|=#=!<, <0, :V:9<0, a=!<<<0, :V;IV<0, <.<4=#=f=wz=o4=0, a=UW=8=<&<9<0, ;IV;9;IV;&a=w >!=uQ==8>̞=a=={=d<%Z=z=͈=k=)T=k=D==]=w=\7=!a={=k=-|=f=w<%=!<%<9<9;9 _L>=䚭=K=`h===!=n_=!==`h>==z=ua=<]%>I">@I>_==-|=0, <<<<]==w=4>>?>(==)=>a(N>So>TY>5jN=F=)=So9>ER>\H>T>%==w=>a=R<͈<.<&=8=>R>IV>]C>SM5>h=o=ua==!= =#=h|==z>:>`>h|>Q> m==ua=<]0E>SM5>IV>.=O=-|=0, us>:"X>TY>J>=V=wz=#=9=R=d=Z&=w=!>K>R@>Uf>@m>Fd==ua=<]Z>> = =)=b= k̞>2>= =}=b=>P> =!==Q===|D=I==h|=<]=2a=y=Fd==X>=R<<<.;'l<.<&=0, =R==O=Ѻ===8= k<&<<b >0, >)[> _L=|D=9=E%=w>$>n==w=#.#>So>So>+t=#=F=2D<4<2<0, :9;&I%>TY>p>i>ER>=T=ua=0, <>[>y>ds>.#=䚭=r=!}= k=F=>a=-|=>XY>f-[>>>n >%=={=w<͈%>jd>>>>Uf> m==wz=4]=!8 p>|>5>9>TY>=?q=So=#=0, =`h==9>.#>z.>><>p>HЮ=4==0, >X>>z>n >G:>==h|=!}(N>n >G>}Ŋ>P==d=b=%=+<=So=!=1>F>^/>>_L>z>:"X=L==0, d>A>5> =|D==0, <<<<%=+<=d=>6v>TY>M~>=>=-|=8=w=w=#=d=w=!>ū>Q>Vr>D> k==y=w<=a=1=R=2D=O=!}a=^O=O=!}a=w=2=D=!=!}<%<_-|>!=9=F=8<4<.n>3ס>-> =>=w=f=#P>5jN>=n_=d=8!>D>`h>_\i>?`==K=8_>TY>ua>lx>IV>!=jN=}Ŋ=G>=>ds>>>ua>?`= =R='l==!}=So=w=!>3ס>{>U>>}?P>6=9=r=F&>jd>9>!>V>= 1==Q=wCk>>>i>]ɼ> _L==f=0, =8=h|==4>F>̞>>+c>5>So=z==2Dz>W>y >n >G:>!=<=ua=2D=!.#>y >_L>>T>*==h|=6v=8=f==O>&>v>8>sZ>B>J=a=_=2D<4<;&;d<=+<=_= >ū>?`>2D> =|D=!=>a= ?`>Xx>So>XY=䚭=x3=O=2=2=6v=q0=}=a>3ס>]ɼ>f>SM5>b =͈=}Ŋ=F> ==Ѻ==>aa=F > _L= =D=!=X>=2>>Fd=*=9=<%<]">Ko>IV>2=䚭=-|=2(>M>G>>P==d=ua=>ER>\7>SM5>=|D=wz=w<==2D==͈>P>]ɼ>>>^/> ==h|=9*>ER>]C>Uf>-=a=)=wz=>a= >]ɼ>|>o4>?=<=w=>a=.=#=UW=x3=uQ>(N>r>5>P>|>5=䚭=!=a=d=z>+<>O>ER>.=9=w=f=# k>SM5>lx>`>2D= =w=O=!}=#=O=!=>>Z`>W>9>iR>&=uQ=!=<͈ > _L==)=h|=#<_>3ס>)[>=={=0, = ==#=d==䚭>P>IV>R@>3ס>=D=h|=9=a=8=w<4<]<!<:9;.<.9>Z=!= =>aa=w<4 >=&=k=!}>?>?>=uQ=-|=K _L>!=!=)=ua=>a=_ >$>=n_==`h<<4)T>So>TY>0, =z=d=>a> >w=4=)=d= n>?>ER>=4=K=>a==!==-|=8<9> =z= 1=!=d<͈a=!<<.<2<]<4=w=d=====!=8a=b=O=a=!}=9a=b=@I= <<;V;Va=wz=-|==f=%= =_=o=L= =o=w=>a<4<2a=wz=!=y=O=wa=-|=]=h=9==x3=8<4<_<;9<{a=ua=ua=X>=w=o4=o4=>a=9<]a=C 1=2D=<&a=\7=b=O=!}a<͈a=f=>a=k=>6>Ko>P=͈=h|<%;'l;d<==f=!=9=wz=C 1= _L>HЮ>W>/=!={>")> _L==f<&;V:V<d<<=w=f==!=q0=+<=`h=0, <<]=R<.;'l<2=!=b=-|=k=ua=#(N>Vr>N>!==#<&<]!==}=Q*>r>+c>>_=0={<Ay>Y>E%==.=)T!>~>P>m>> == =<> _L>Uf>{>ds>ū==`hER>5>U>_\i=r=-|+<>TY>M~> =D=X><<, <0, <9<_P>-> _L=Qg=8<, <<<<%a=8=#=9a>"==)=%a=X>=@I=!}=!z>|> >>Zr>&5=)= <d:Va=Q=>a=dTY>>>D>:>=4=b<2;&<.=w=r=v=9==W==!=lL=h|=ua={=wz=`h=F<ѺTY>i>z>"X>5>P==ua<];9<<<=%==o=4=n_=!=D=9=o4=o4={=!==h|=%=>>>K>.$>>`=uQ=Q==o4=8=@I=f=wz=ua=Z&=2<法>]C>z.>So==x3= ka=k==Ю=8={=K<&<!a=)>Fd>X>>>r<>P==6v<4<%<4=!}=o4=w=6=O=L==ϡ=)=lL<> =a=l=f<<_;IV;IV<.=9={=4>o4>>z>=X>m>:"X=)=%=!==h|=w=I=4> >2>>B=h=w=2D<]<.>G:>>+c>>Ko=O=ua _L>+c>>7>ڤ`>S>I%=.=o4=F=4]=y=}=O>Z>>:"X>5jN>h=<==b>>.$>I>>>?`=D=8<%Z>+c>Ո>|>_*>ǁ>>F=}Ŋ=w=+<=sI==c\=z>n>(N>#> ==)=d<<, <=!}=d>ū>>>#>>>o4=!=f{>N>>'>b><>!=jd<==aus>}?P>K>$q>>>^/=uQ=f!>>>v>+c>ER=Qg=w=ww>r<>_>U>z>F=)=+<<%+t>D>U==>a̞> =n_=<=Z&P>|>z>>>=Fa=Q= m>5>>͈>M5>>ʅ> m=wz<, :9;d<2=w===!=4=!===R=-|=k=w=R=ua=0, ER>7>|D>3?-|>!>>^O=w>P> =4=I==)=T=D==w=jd=wa=>?>7>Ε+?S?>k>E>o4=]=R!>XY>(>=n_=>===D==6=d=wz=!}<;&;jd<<%<=2D=x3>9>5>=X>>>9'>>>T'=F x3>_>Z=uQ=)=x3=w=d===w=o4=F<];V<9<9<>>>}>v>jd=!=b<;d;'l<<<=d=!=6=uQ=9==F=lL=>a=`h=wz=!=!=ua=6v!}>?>h=͈=ua=wa=d=h|=`h=# _L>!}> =͈=wz=W> >.$>ޓ> >=w=d<=w=b===a>>#>> =!==4]<]<.ū>v>>o4>=v=f->7>>뮻>_*>1>z>Fd={=0, =Q=R==z>&>T>k>ds>M~>=͈={=!)T>+c>t>z>>7>SM5=V=b`h>z>&h??2>?P>z>`==Q=h|=F=&> >J>v>9>>`>*g===#=C>}?P>O>#>>|>ON>>ū==w<;d:9;d<, =w=)>]ɼ>?B?#u?$?1I>z>==E%=b==o>>=G>f-[>}?P>z.>X>>=!==0, ̞>z>?z?S>Ԝ>.$>T=Qg=%<]<:9ū>!>ߟ? ? >(>$q>]ɼ=}=d=%=ua=}=uQ> >/>M~>IV>'B2=r=z={=!}T>ޓ>͈>_*>FB>,>>SM5=8=#<, ;&;IV<9==>n >>>>b>>B=f|><>>>:>8>=k=!<!:V:9<{=0, =Ѻ>P>U>>|> =ka=h|={=!={=f=0, =99>|>>kk>P=]=8<];d > _L=L=d=#>>>==Q>==D=>a=]>>">=z=}=0, <!;d<_\7>>>t>>auQ=|D=0, a=9P>?q> >?>>e>>R@=29=Ŋ=䚭=====#==k=b=!<:9>>=X>I?2?#1? >>w=C=29>(N>6>$>==|D=|D=>=O=ϡ=#=-|=0, |>=X>??$ğ?>0>=!=%<{;V>;.>I">3ס> m=L=ϡ=Ѻ=9=!=uQ===G><4<0, ;'l<0, ?`>7>H?>? >L>{>v==w>>>)T>z=z=V==D=1=Ѻ=o==-|=8<法<0, ;lVr>v>{>z>7>>={<4z>]ɼ>x >Q=z=k=w<2;&;9;IVa=f=d=>a=w<&>Q>?=r=d=2Dz.>>b>u>2>Q=z=O==d=o4=K=O> _L>.#>M~>IV>%==D=d<4<!<X>>+c>>+c>^O=n_=w=0, <%M~>.$>T?p?O >>>!>6=&=Q=f=_=o> >N>z.>>Fd>iR>0E= ==d<&<法=4]=>^/>>ɚ>ٗ>҃>I>>!=x3=w<<K=>? c?)|?)7? >:>5=W=o4=ua=)= >$>g>x3>>_>9>SM5>Z=)=G><=9=ua=>>>&h?? >䚭>O>lx=|D=Q<w>Jt??. ?/`?rM>Ѻ>==f=h|=d=>ū>]ɼ>>>>>Ko=r=)=X>==w={>!>+c>?*??o?S>z>w=a=o4F>g>P??d?>;@>9=I=0, =4]===>->Z`>r<>m>SM5>=uQ=x3=>a= k= =h|=!>d%>E>뮻? ? o>4>>=<=f5>D>؋x>L>Òk>>=wz>_>_>!=*=&=f=F_>>8>>Ԝ>`>>Z`==0, <, ;V:9v> >>8>%=d=!<2a=wz==d=)=={=O=w!>o4>7>>+c>c9=z===.>Z=9==F<<<<d >*=*=-|=9a=d=>a=!<2;V:9;Va _L>%>$>9==`h<;IV<0, 2>HJt>I">ū=!={<%;9;&<0, #>9>>T'>=O=ua<]:V;IV;.;V;&;V;.;9:V _L> =4==0, >(>(N=r==8<2;9<8<`h>m>>t>>auQ=ϡ=8=RSo>>9'>a?S>aC>F>N=2=<>us=z=9===<=D=Qg===f=!<:9B>Ò>?H?!\&? >,>=Ѻ=!}2>*>ū>9====uQ=䚭=&=D=-|=0, >=X> ?T?#S?8>><=O='l<;& _L>+t>=G>)[> = =O=uQ=!=d=!==w=O<4<'l;&D>7>͈>?9>9>I>auQ=8=w<9;Vn>K>#=a=o=]==|D=O=ϡ=D=Fd=:<<;IV<0, Vr>>z>>->5=z=wz>T>f>A=L=-|=w<<;d:9:9<<%=#=ua=R=k={=C 1=w= =#=Q=h|=h|=E%=w=ua=y=ua=>a<<;IV:9 _L>0, >%=z=d=8a=&=9=a=uQ==!=TY>>)>>z>G>=I=Q=9=w=b=w=c\>us>!}>Ay>?>K=z=<=bTY>>>+c>ds>!=)=\7>2>o>>m>|D>?q>.#=&=>a=O=R=Jt>9>Ck>o4>>>`>)[=|=k=!}Vr>>ūR>ֵ>Ѻ>V@>>_=K=0, <ѺY>I>.?T??>6>=͈=h|=h|=&=!>ū>_>>_>w>>M=r=qA=G>=!= =ua=n_>>#>Uw?ˑ? A>!>t>~=!=o4Y>8?]?#u?%? k>Ğ>x3=O=b=`h=F=9>>Z&>Fd> >>|>ER=z=d=X>==w=y=>>1?B?2?H?;>>+c>B={=!<.;dū>v>݆? c? >L>=X>lx=#=!}=#={=Qg=z>)[>V>o4>lx>R@>F=&=_L=z>=X>法? A? 6> >"X>>=wzua>F>>>E>> _L=h|<4>b >_>=o=F=d=w _L>w>z>0>>>d>p#=uQ=Q<%<9<2=d=>T> >>|> m=lx>z>T> >z.> =w=!>2>n=4=&=d<_<2= =O=f=O=<];d:9;'l;&9>>d>!==^O<<;IV<..>A>D>P=9={ >0E>6v>_=&=wz<&:9;'l;IV;IV;IV;'l:9:V>= ==8<2;9)T>R>>P>>&=d=w qA><>$q>|D>j>->+c> _L={T>>9'>%?S>aC>c>M~=qA=RB=r==V==z==1==d=ua=wSM5>?q> >D)?>O>>SM5=)=w> m>9= =|D===o=Ѻ=V==r=#<];IV:V;dF>x3>>H>Ԝ>z>>I%=R<<9;IV;&<]=0, ==V=4=.=4=͈==d==D==6=?q=ua=<, ;'l;.K>>>K>b >@I==Q<an>2==<=f=9a=Fa=y===#=}=!=]ɼ>U>>e!>̞=F=!} > =z=|D=k=%<%<<_>ds>*>y>3ס= ==SohFB>>'1>Y>.$>p==}Ŋ=w=_=f=?q=uQ> m>>T'>TY>So>3ס>=z=q0= kn>w>)>ס>o(>K>x >=w=0, !>>q>%>V>Ʒ>v>6=d=+<=+<={=v=z>.#>]ɼ>z>v>TY>=O=!=#\7>>~>法>V>>>>X>=|D=f>+c>>G>ZP>H>>Jc\=}=#=#=wz=D=z>)[>X>>qU>lx>SM5>b =Ѻ=!=0, <=9=b=c\>c9>G >W>Ŋ>Ŋ>>T>=I=wz=!<2<;d<, =G>=O>|>>>Ѻ>ס>+c>=!<=R=So=w=o>9>(>ER>A>K=a==ua=2->>Òk>>法>^>>} =I=sI_>5>>d>z>SM5==#<]<%= k=\7===!=n_=a=uQ=={=0, <V>T>>>g>>So=o=>a̞>ER>Q>2=|D=f<͈.#>>_>x3>W==-|<̞>9=!=w=_<a=0, =!===^O>us=9=F=#<:9;.<0, _>b =z=D=Z&<];9;V;d<<9;V;IV;V<2 _L> =a==So<]:9 >9>6>Fd=D=Z&5>>>m>>2=)=%>iR>&> >>>auQ=C=h|!>a>m>O>=X>>f=O=q0(N>B>>>8>!}==Qa=!=d=T=)==r=wz={=-|==R=ua=)T>D>Ko>n=>=y=F<=h|=d=4]=!<<;V:9;.<0, =+<=wa=f=sI=h|=4]a={==x3=r=b=Fa=F=9> _L> =#=)=@Ia_> = =D={=#@I>>>_> _L=d=2<%#c>>>w>n >=1=wz=w< >>>?q>>N+=Ѻ=Q<4*>h>n>=Ѻ==>ap#>v>5>5>7>> =d=8 >>>>+c>TY=O=QB>F>_==o=k=>a<}Ŋ>>8>ס>)>b >6==Q<4X>>_>+c>9>$==_<, <%=9=UW=x3==!=n_=I=O=)=ua=!}P>ʅ>ٹ>>>>6==@I<&!>A>Q>=O=lL<ѺVr>_> >F>ua> =.=F<2;jd;Va=8=2<<<, <!>P>Jc\>b =V=da=h|=f='l<4a=X>=4]=R<]<:9<0, <.<%9>!=O=w=.>?>:"X> _L==ua= <2;&:9;V<a=0, =<͈n>>T'>:"X> _L==y=w<, <0, :9;'l<9a=Q=>a=F _L>=9=&=f= k<, <0, :V=X>=>a=w<4<2<0, ;IV<0, <Ѻ=!}=f=}Ŋ=r=f=F<]= k _L> =n_==!=0, !> m=n_==>a<<!<<]<=8=ua==d=d=k=h|=d<4<<<2<]>TY>[*>A>B=D=h|=!<< _L>=r=D=>a<]a=wz=w=d=d=R=f=<4<, a=w=>6>p>Z>h|>%=&={=<<>F>Uf>ua>`>$=O={=9<<;9:V<法a=0, =wa==9>_>6>.#>=Qg=`h<法<0, :9:9a=ua=wz=So= k<;IV;IVa=o4=ua=\7=a=0, =R=wz={=ua=UW=a==&=}==!=`h=w<%a=R<=h|=b=8=w<4a=Fa==uQ==wz=F<]a=!====F=da=0, =w=da=h|=ua=h|=:<<.;IV:9;9;IV;.<9a=X>=G>=d<法a=8='l=w=!a=Q=8=<%=>a=w=f=b=Z&=`h=Z&=a=%<<, a= <% _L>=Ѻ=F=b=<&<_b >F=n_==}Ŋ=#B=4=={=F<͈=O= 1=w=@I=d _L>#>9=uQ=F=8<%>)T>==<=So<&<0, :9;V<_ m> _L==F=#a=f=q0=`h=#<=>a=8=0, =Fa=Qg> >IV>Q>&=uQ=!=d<4<]<===R={=b=0, =0, =q0=F=Qg==d=y=2<͈<!<.;9;'l;9 >9>?q>>i>ua>==C 1=9<<a=d=z>0E>TY>So>0E>9=䚭====!=k==I> > >=&=w=8.#>>I>t>>K>]ɼ=<=w=>a=9D>><>sZ>~>G>> ==V===1>Z>:"X>c9>r>z.>J=z==8<<.a=&>>U>7>1>I>.$>B>U=#=f=w=!=8==r>TY>>b >>9>SM5>_=#=|D=D==>K>`h>w>v>?q>U>G:==ua<W> >}>>>i>*=)=X>>[>v>n >SM5>=z=ϡ=8=d==O>F>V>_><>:>m>`==y<<2M>!>>_>&=ϡ={=<]>=0=͈===r=wz=!=)=>>c9>b >]3> >>a=1=`h=0==wz=R<2<;d%>HJt>!}=9=r=9<!;jd:9;IV:9;V<<0, a={=9={=8>0, >ū==I=!=%a=#=w=w=)T=`h=f=E%=w<&<P> >P> >>P=n_==2D<4<2 _L>>>=X>o(>c> >SM5=uQ=ua=!<, a=>a=h|={=}Ŋ=d=!>x >>z>D>jN>d>r=n_=y<<2<0, ;9<]=+<=x3=D=8=={=f=>a=#=2=+<=C 1=>a=w<]<;V*g>_L>>7> >>^/=O=M<]<0, :9<!=w=C>P>f> >0=>c9==!=`h=>a= k<, ;d:9:9;'l<0, a=0, =w=8=F=>_>M~>N>=c\=ua<<%Vr>?q>'1>h5>=X>U>=d=8=9<4>Ko>o4>n>N+> m=uQ=8=F=r=wz==o> m>6v>:"X>=䚭=R=!}>>^?ˑ?&?&>>>(=D=h|=#=#=lL=>#>x3>>O>O>>x3>F>=uQ===4>=G>>+c>&>+c>xF> =d=>a5jN>.$>0?/`?A.?)>>̞=d=h|=h|=d>Fd>>>>M5>҃>;@>>>8 p>==n_>.#>>>ס>Ε+> >7>> _L==#<法>ū>V?,!?A6f?>2?#S>>+c>#=={=y=]>2>U>>,>C>>Ʒ>:>>Ko> =z>Fd>So>F>t>ɼ?? _L>O>>[*=Jt=`h>D??$?$?>>P>n=D=ua=h|=}>*>z.>>b>%>>t>P>p>"=z=!=z>ER>w>g>px??Yf>۱>E>|=&=dFd>>>ʦy>9'>V@>+c>N=!=!=+<=d=q0=>n>p>>> >8>\7>F==== 1>B>]C>&>1>r>Ŋ>W>qA>TY=D=0, Uf>_L>x3>n>(N=9=!=w<%B>_>>=uQ==-|=ua=f=y=)=a>F>+c>>V@>!>W=n_=wz=F=E%<法>D>ū==wz=wn>5jN>XY=n_==ua=w<&<a=E%=q0=Fd=w=R=o4=)T>>v>$q>>+c>Z&===C 1>P>J>=O==w=9=w=D==9=V==f=w=>|>g>%??>;>>> _L= =]ɼ>5>k>Z`> _L=&=]===!=>=L==q0=w>ɚ??,u?/`?mt>-[>>`=ϡ=lL= kf> >>e!>=9=z=====r=!=)=UWm>? c?1*?88?/C?,>>̞=䚭=h|.#>iR>hFB>5jN=a==}==d===ϡ=<=wz=9<<HJt>>??+ح?#u>>=X>f=6=#<]SM5>?q>:>!>>Y>>=f<];d<{a=wz=wz=f=8=!}=w=9<z>}?P>+c>+c>lx=4=h|<]:9:9a=X>=E%=#a=-|=qA=d=!=8<&<:V;d<!<=F>b >d%>m>T>sZ>6=1=O<a=F=9>!>!==#=-|=lL=>a=2=.=f== > > = =)=C 1n>P>,?} ?;?>> >=9=8=w==8==a>X>>+c>>K>+c>c> =W===w=|D>2>q0>0=>_>d%>6v=ϡ=h|= <<!z.>??A?TY?MF?/`>0> >B=K=lL=ua=)>̞>9>> >>>9'>>5>/=z=uQ= >/>8>.$> p>Ю>;@>d>v=={=8>M5?1*?Y?o8?jG?Mc?@~>>\7===?q=L>[*>>??h?"?l> >>z>$> _L>>>!>9'?B??rM>m>7>`h=͈=h|=9K=>?-?W?o8?lx?R2?d>E>>=8=>!>|>>ֵ? c?"%}?! ? >ӐR>.$>} >:"X>>@I>w>>x?(?:?:C?&j>7> > _L=9=.0E>^??;֔?TY?TY?;q?l>)>lx=z=)=d=#>\7>>t>? A? >4>z>>f-[>ū> _L>(N>>5>ǣ?-??*?@d?/`>f>K>=k=F<%<, <, lx>>m?? ?S>jN>_>$=I=}Ŋ=wz=<> >>>>Ю>Ʒ>I>>n >= =C=n_>N> > ??D?0?2?>>+c==wz<<<!Vr>P>>[>>>==o4=w=w=X>=&=I>C 1>z.>/>>k>+<=4===-|==䚭>@I>>6f>Ai>P>ӐR>>N+==#<]>$> k=uQ==#<%<<2<Ѻ=w=`h===O=uQ===wz=@I=w==#=lL=)=z>TY>{>h>(>(N=8=8<<:9:V;.a=)T=a==G>U>ʅ>_>c> _L=8=f=<͈<<@I>>P>Ko>b =9===k==]=O==O=<==E%= ko4>$q>O>>4>o>7>TY=!=!=#(N>>>&>x3>A==uQ=͈=> _L>!}>+<>= =)=o4=!}2>>+B?.?=? >>[*=&=wz=n >>7>>>>">us=z> >5>TY>V>?>*=6=sI=!}= k=0, =d>SM5>D?/0?Ck?Z`?_?O^?.>؋x> > =w=0, x >>=X>=X>>>.#>!=r>>=G>T>Uf>6=r==So= =!=8=&>=G>??F?c?k?]e?<>Ŋ>>&=w=!}<<9;9<4=d>;>F>>>+c>]ɼ> = ==z>>(>$> _L=|D={= +c>7?2?R?]e?TY?5H>_*>m==q0a=Ѻ>8 p>x >z.>J>=c\==)=8=|D=䚭=O=#=wz=R<<<9=)>>>?'?7?1G? >E>Uf=<=`h=h|=o4=`h=K<&=)> > >>>Jt>.$>V=} _L>6>$=uQ=d<;IV;IV;V;d<<0, <@I<0, <;&;'l;d<{a=UW=M=%a=X>=O=%<<, <0, ;9=So=!}<法a=d.#>>!>c>>c9= =wz=w>P===-|=d=.#==.=wz=> _L>->-> _L==f->>>?;?-k[?! >ɼ>>ū=}=d='l=!}=\7=d>B>|>T>>>>>ū==)=k=&=>HЮ>U>>?q>+c>f=<={=> ?(?N+?a?[?=|>ZP>m>XY==r=!=>P>_>E>\i??>n>D>+c>?==9=z>SM5> >o(>>䚭>>b><>=_L=.#<4+c>>?<~]?g|?y?|?\z+?*9>@>>!==D>>z.>)J>%?Yf?)T?)T?.>%>->} >-> m>4>0=>>px??0M?.?>>*=!=y=w<&<]<=>a=!=>>H[?9z?f-[?U??`͉?1G>ɚ>>P=o=o>n>P>>0?!\&?0?0? {>ZP>>>F>XY>SM5>ʅ>)? ,p?7@?G:?FU?4>i>>2=F=)T<4TY>#??K?c?b?K?H>D>> ==>̞>~>>;? ,p?"F?"%}? A>>.$>~>)[> >:>>;?Zr?:?L?M$ ?:? (>>5=?q=0, <法<<=R=O=w=z>5>6f?sZ?1?3ס?>'>&>O=9=w=x3=|D>%>I%>>>>24> >>5>+<=z=䚭>>`>v>>?)|?=?>2?->G>7>=9=w<]<.!>>:>>Ո>>b >IV=!=!=>a=8=wz=jN> >lx>>m>P>>\7>=|D=}==}=a>auQ>>>? ?Q>(>>ds=1=Q_>P>So>+t=z==X>!>!=L=6=_L=f=%=F=+<=wz=>n>>T>>+c>M~=|D=faa=h|=q0=`h=#=R<&<.aua>?q>>>I%>:"X=O={=!}<4<V>>R>V> =*=6===!>> _L=r=O=d=wz=0, sZ>ȍ???Ƹ>>>>===8f>7>>>?q>>!}=r=z> >5>T>[*>IV>#=ϡ=k=Q=w=!}=>HЮ>8?e???SR?S?>u?'>D>|2==r=#<4!>>t>1>1>=X> >\7>>2>?>f-[>d%>9>lx>.#===Q=d=>a=>z>j?1G?Yv^?s?z~?e!??>i>>=F=8!>>I>ʦy>>E>&>ds>)T>$>I">n >9>9>g>$=O==0, =w=@I=>_>c\?/?]e?y??v|?P0?Yf>>(=F=#xF><>b>E>.$>U>A> m> >>N>^O>\7>:"X==)=@I<_>? c?Jc\?kI?x?j ?H ? >>=uaus>v>F>+c>p>3ס=a=W==>> > _L==}=OUf>#?I?A.?O?Gr?(Q>,>v=d<=!==R=}Ŋ=r=-|=_=&==q0=_<G:>!>?>> p>=DHJt>|>f-[> =r<];'l:9;IV;V<a=>a=!}<<]<0, B>n >+c>m>>>T'=ϡ=h|= >>=9=d=h|=#!>>d>=#=C 19>{>;@>m??>ON>_>*==Z&=#=w=0, =9=!>So>+c>>v>.>`>==-|=ua=-|=Ѻ>5jN>>P>>b >\7=!=ua=[>I? ?>u?R?L?/`>҃>{> ==y=y=}>>>F>j>ǣ>m>ӐR>>>=uQ==䚭>6>>>>؋x>'>7>=#=!=!}Z>?.?X>?n?jd?O^?.>>f=n_=)=)=>Uf>>0? ?!`?"%}? A>M5>>c9> =z>F>>>7?@~?(?$?us>>n=ϡ=ua= k<<, n>?*E?W?pf?n,N?TY?#H>>> m==>Z>|>c>/?I?)?)T?.>>F>X8>d>*>+<>B>ס??18?@d?>?*>L> > _L=x3=#/>d??=&%?UD?U?>?>>}Ŋ>!=D==n_>^O>>͈????>|D>>]ɼ> =z>h>i>b??3ס?D:3?Cp?1>m>?q>==#v>I>K?$?'? _L>6f>+c>9=ϡ=k=9=>>} >.$>ON>r>/s>>!>}?P>_=!==!>Ko>7>ӐR?7?4?4?>0>>=!=w<]<.=w=a>e >K>8>J>.$>8>/=Ѻ={=8=2D=o4=)=>T>8>h>z>x3>P=z==w=}Ŋ=x3=O>P>7>>>2>0>K>D=D=M>6>D>P==&=E%Z>auQ>>+c>W>&=Qg=`ha=ua={=lL=0, aa= <Ѻ<<_\i>m>.$>>w>6=͈=ua=wUf>R>R>Z`>#=uQ==D==>!> _L=r=uQ=)={=8a=͈>R>~]?`X?ʅ? >O>c>p#=L=r=!}`h>>>>?q>>(N>!=r>#>:"X>Vr>]C>Ko>==w=b==K=-|>(N>$q? ?<~]?O?O?; =? >N>[=V=h|= a=.>w>T>ON>ūR>=X>P>_>(N>")>G>>lx>9>̞>n >3ס=L=F=b=!}=6v=d>[>ɚ?.]?UW?q?v ?b?<>px>+c==}Ŋ=F_>>Jt>ɚ>E>&>i>2D>.#>SM5>x >>R>lx>*=䚭=9=8=w=2D= >O>)?-I?Z?|??r?L? >K>!=wz=9<];l:ViR>>I>z>>Zr>ER>_>U>+<>So>d>`>D>!==`h= 9>?1I?H(?i?vn_?g|?D[>r>z=C=2DhFB>>b >W>0, =a=O=9=<> _L>F> =<=T=f=!<=>So>t?@~?@d?N?CՈ?"h>;>ER=ua<<:9<=G>=8=#=z=h=)=-|==-|=w=}==d=}Ŋ=0, =>I">v>r?2V>%>=X>`h=Ck>vn_>Y=r=ua<9:9;IV;d<0, <0, <0, a=o4=ua=X>=w<%")>6>F=uQ=!=a=>><>S>J>>>$=Qg=f=d=!<4D>z.>X8>SM5>!==ua=8=2=N>X8>̞>hFB>n=)=0, >v?K=??.>ٗ>>Ay=o==So=>k>.$>ס>>>I%>(=ϡ=.=-|=d=n_>`h>>>E>>>A=D=`h> >?*9?@K?=|?! >ɚ>>h===}Ŋ=}>us>}Ŋ>}>e>4>>>>} > m=o=D=O>2D>+c>D>e>]>k>y> >&=d=8<4<2<. >+c>>?+ح?B?B!K?)>/s>P>ER=O=w==>P>sZ>I>e??>uQ>8>I%>!}==V=L>SM5>?q>??!}?7>r>>e!=Ѻ=q0=!<]z.>?$?,u?.?:>>+c>5jN=|D=_L=-|=#> _L>>qA>,>>>9>~>>> m=O==O>:>m>? ?%J?#+?>>V@>z=!=wz=<]>>'1>7>n>>>c9== =jd=f=-|=V>%>5>>>t>v>5> qA=O=)==}=z>}Ŋ>ٹ>ٗ?[~?b>W>>M~==f m>|> >P>U>O=a=F=C 1=w==%=ua=8>>G>>lx>lx>IV>Z=6=k=h|=C 1=d==>p#>>V@>b>>c=a=k=#>0, >6> =|D=!=#<4<2=a=0, =w<<4=d=ua=<法<.<;'l<==ua=d==Qg=={=b=>a=6v=6v=Q=o4=}Ŋ==ua=`h=%<<]<<=.#=)>b >z.>>>^/>9=}=>a_>M~>N+>7=L=D=d==)==uQ==uQ=Qg=x3=h|=#5jN>>>n>ٗ>3>+c>)T=<=>a>>>m>8>P>==!=n_>>+t>3ס>&=n_=D=!=>a= k=9=f= >+c>Ԝ?C??5'1?4†?T>Ѻ>+c> m=9=F<%Uf>>5>>>>2D> _L> >ū>Ko>^O>`h>J> m=V=-|=>a==F=}Ŋ> >d??; =?TY?W?E%?>>V==%Vr>v>O>$q>>k>#>_>)[>SM5>ds>c9>J> _L==wz=#<=w=}Ŋ>!>???*?\7?cV?T{7?0>>x =)=w<, b >A>?q>>+c>^O>=z>>#>.#>G>>A>P==w=>a<<&<=h|=͈>>ϡ?-?Mg)?W?K^?'>T'>Ko=y_>Z`>auQ>;==>=6==uQ=a=r=z=W==C 1F>>۰?$?3Qg?'>!>=O#>x3>>1>8>F=r=#;IV;&<!>ū> =6=!};.;'l;jd;&<'l >+<>P==F=8 _L> =n_==>a76>sZ>T>&>!>=#=h|=!}=98 p>ua>|>P==)=jd=0, =2=8==<>E%>>x3>}Ŋ>3ס=|D=h|<|>}>>6f>.$>}?P>R=)=h|=0, =!}=2D==9>G>>I%>>>+c>Uf=4=d=y=h|={=>%>5>>>>w>.#=6=b>B>l>Ε+>'>V@>{>+<=|D={=Q=>a=d==r>hFB>m>>->?q>|>*=D=_L={=R=&>I">h>t>z>->>m=4=-|=F<%<{Uf>>D>6>.$>>==ua=>a=2D=Z&==L>N>_>T>>+c>T=<=)=!=ua==>.#>>>~]>'1>>o4=z==#<法<>n >+c>P>x3>ER=L==>a=F==!}=d=)=z>D>r>xF>Oe>=T=!=b=>a=Z&=k=#>\7>7>ޓ>>sZ>5=&={=>&> _L=Ε+=R=0, >T>So>=O==:<<]!>>d==8=h|=!O>+c>>>>ER==f9>?>F>==D=}=)=D=|D===C==!=Q=<&<%=w=>!}>]3>>K>>Ʒ>v>3ס=)=.<, <.:9<.=C 1=ϡ>A>w>} >\7>F=!=c\=Ю==r> >#==c\=x3=^O=T>l>ZP?7?"?Fd>>R=&=0, <, <0, :VD>p>>`h>===uQ=<> _L>>F=r=>=-|=>a<<a=>Q>>?(N?/?>Ԝ>b =uQ=<{;IV:V!>IV>SM5>$=a=I=D= 1=uQ=a>==uQ=d=f=w<%<<]=!}=k> > >j??!`? A>Ʒ>Fd==O==w=r=r=x3=)=6=I=jN=F=h|=w<%=>ER>>ON>r>t>>=b >n >>|>#=!a=>a=a=R=T===\7=!<]<_=!=qA=`h=!a=F=!>_>+<>&=4=.=82>.#> _L=o=!=!}=F=䚭> >=4=)=h|=#= k=!==X>=}=n_>5jN>Uf>Ko>=>=ua= <] >ū>Z==!=d>M~>=> _L=={=F!==o=.=b= <&<.a<<<=E%=%=<> _L>.#>3ס> _L==o4a=>a=O=f=ua={==ua=So=!}w>z>+c>z>G>&==#<2:9F>>c>g>>s==uQ=:<2=>D> >>ס>c>==# _L>>>>?q>`=6 >\7>>]ɼ=z=f<0, ;'l;d<0, ===uQ==o4a=.a=8=F<4=wz=-|=r=`h=wa==>F>&=z=&=#<.:V> qA==&=a=w;:t:g]:%::9:::g]:t; ;cf;8+<0$<_<u 0>J>i{>D4>E_=<^>4>BD>g> >=&<ðF;ۀ; :::9999:::g];;>>͖??!">ƺ>Tb=G=(Ĺ<[;cf:\i:%::9999:999:::g]; ;<<@<ĹV=f_=~Q>3@>Ӌ? ?>j>]>7=v<;5;%::::999:::9:::g];;<s0<=*RP=T>JL>I>?>l>>#=D<ߤ>}> 4>>Z>}>Q=<?(>eV>R>&.=={<#<~;:;:g]:::9999::g]:\i;-;<cf:::9:::%:;;W\i;<N=? =U=,C==G=+=u=lu<<y;Z:\i:%::%:g]::; ;Z;*1.>{>{>P>3>EC=#4=?<: B>Xex>=>Ӌ?Q?? {>r>=E=f_<ðF>sk>>,??>?S?Ijc?" >ݳ>~="=D4<Ĺ< ;>:g]:::::%:g]::\i;;%;:<u<:^<~u>TA;>ex>???6.?_t?r?fӽ?>?E>B>?==K;p5;Z;<< <4(a:>X>>Ӭ"?E?5JJ?Ukl?a!?P%F?4?>՝>={x=eV<Ĺ<u;>:\i::t;;O;Z;;8+;5;<0$(>>L\>??*Z?.?#?-?Y>t9>S>Q=,<ޛ>tX>R>>^> >F&>;G>>p>oO> =I:>5O>`>7>ѫ>i>D>:>RP>>5==D4<\i<<;Z;W\i;_;;<u<y<N<N<<; ;5;~Q<<%>5><=ri=Ϙv==Kt9=<C;W\i;Z;;ۀ;<u;;5;cf;cf;Z;;a;:;5<a;;<;;;<;Z:\i:\i:\i;;;;>;Z;5<><ԃ<;6:;%;:%:%:%:%:%:g]::\i;W\i;:<<><_;cf;;;8+;ۀ;5;5;ۀ;:;;;cf;W\i;:\i::%:%:%:%:%::::9:::%::\i;;6:;_;cf;p5;_;>;-;;:]::::%:%:::::::9:::%:g]:::~Q; ;%;%;;;:\i:t:::%:%::::9::::::%:g]::\i;;;;:\i:\i:\i:::::g]:%:%::9:::%:%:g]:::::::\i:\i;;;;;;:\i:\i:t:::g]:%::::::%::\i;; ;%;-;-;%;%;-;-;>;W\i;_;g];g];W\i;>;%;;:\i::g]:%:::::%:;;O;cf;;;:;;\i;\i;\i;ۀ;5<cf<u<<<;5;;;Z;_;-;::::%:::99::;;g];:;5<<*<0$<@==$=&=&="^=y=>>3R>5>#>k>\>A> ==t=,=*RP!C >qn> >N>>gH>q>>+>g>wب>5O===Y=3=<=~==2=n@==5S==z={=Kt9=&.= 0h<><>=Z=L}H==I>T>\>-?o?Fh? ,?s>>%>>b>>wT>C>-L====,=r=+:=k*= [=&=E= =!=V="^=<8+<R<V>+}? ?6?HY ?HJ?@~?.??>z>x]>>=7>'>=> >5> >'>!>=֕=܊=W\i= 9w<<<=*1>>?N?[?s?v)?v)?aKS?C?,"?>Gq>>}iZ>Ov>@:>CL>P> >^>b>Q>1.U> ==0<>?K?aC ?xL?}??vϘ?U)(?7K?>;>>>zp>oq>kx>pV>o.>[_>94>~=b<><<[;;;>;:\i:::t;;N> ?1?G?T1?h?Z???'`? :>>ɴ>A;>}>fN>R>D>9>*>=e=m=E=<@;;_;::%:::::%;>F> >o ?7??Ϙ? *s>o>Ռ>=>`>3R>t> 0=E=ا=L=c=UJJ=lu$Z>M">~>JJ>>L>H>y>Q> T=,C=(a==tޜ=;T=!< < >I>u=_=0=V=܊; :::%:99::%::\i;%;_;<;:;5< < ;5;Z;::::g]:%:9t9t:::%:g]::t:\i;; ; :\i::%:::::::::%:%:%:%:%::99:::::9king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rota500/ile.ndft0000644000000000000000000005046211744305700024766 0ustar rootrootTop500 Ile B<40CCHH:i-:v:-; O;#;#; O;:-:-:v::i-: O:i-:-;/b;i-;up;vz;i-;^';/b; O:-:-:$:i-:;$:;$:-;Fg;O;;b;b;;';i-;;$; O:-:v::;$9;$:;^;';b;;;;;b;;i-;;$;:-:$:O:;$:i-:v:-:v:i-9;$:v;i-;b<<<#< O< ;p;g;;i-;Fg; O:-:$:O:;$:i-:-;i-;b;b;b;:-: O:;$;;< Ouu<;i-::;<#u >=M==2O3<;.JD> v> V>k> g==*EU< <2O3;b;O;Fg:-::;$: O:i-::$:v:v:$::i-: O;;g=Rv=>>>A> j>Ѥ>W=S=w=E>`>>T?=>b>hT>o==<;l<;g;;^';:$:O:;$: O:;$:i-::v:-; O; O; O:-:v::;$;;b< <5;=H=@[>R>j>>=>>@1=Jg=~Oa=X<;l<;v;;i-; O:v::i-:i-:i-:O:$:-;;^;#;^;:-::;$: O:-;;-<<;$x>=Ea>U>->w=L=G{u<<5;;-;;i-;#:-:v:::O::$:-;;^;/b;#; O:-:v:O: O:; O;^;'< <,v<2O3u<,v< O;OJ;;i-; O:v:O:O:O::-;Rv;A< O<;$o>l> .=a==;l<;l<#;; O:: O9;$:;;i-;$*>D*>2 n> .=v=6<ɱ .>?v>]&>L>H==]l<;=6=+==f=4o=E>>39 >R3>9> =l=^'<Ŋ<R<,v;A:-9$:i-:v;^;<<= ;=,=o=ج=1=b=w=2O3<Ŋ<;l<;$<;b;;b;p<,v>!>EI=p=L=H<9<R=cEx==i=EU=X=jB=b<==Z==d>>{u> 6}=q='=\= O=1=ev=cEx=(=E>< O>jB>y>Ȱ|>1>~>7=JD=_= /<<$h{>0?g!?/ ?',? >>V=!=C=E>=Z=>>D>Y ^>->q=]=g=;l<ܱ<<>u;v;Rv;^;^;Fg;#; O; O;^;^';^;g<;l<ܱ<<0<9==[p>eB? b???{%?r@?6q?v>\%t=El=w=<̞K/>:0>>B>d>ǻ=]=Z= <̞uq>??5?p??GƢ? {i>z=p==<ܱ<c>/.>>_R>g>T=;=|9=<~[%> ??5 ?FD?)!?>n;=OV=y1=L>R??>‘>n0=Oa=X= ;<~<*<#;b;';i-;#:-::i-:;$:i-::-; O;Rv;';v< }>]M>(?? .?9>u>$=X=H=E><;uG>=>>W>>S1=ج=jB=X<̞<[;<;l;;O;i-;:$:;$:;$::v:-;i-;$<,v<*">hc>@O>pY>"=˅j=sY3=X*>v>=>\>q==%<;<;l<5;;v;^;i-;Fg:v:i-:;$:i-:$;#;b< OP=q==,v<~<<@;;';i-;Fg; O:i-:;$:-;vz;-?K?]X%?4?%qv?5?,??>8>`>>@>f;>>t>=?=m==iٺ=>t=&X=6===/P C>/7]>]<>V>B^>v?&?+?dg?1-?E?J,0?Ok?`D>?fG?rX??_7?z^?`?Wp?R?CA?/?? H?Q6?i> >,>&>u>L>&>9===O=t=R߫=>f=!?=X<^> $>Y|><.>>$A>˟>?>>>"w>C#>q>R>m\>>>T>>!>gX>o:>Sb>,%1> 1= =Ő=̐=v=k=Ѯ= O=jS=R0== !== <;;@;Zak;Zak;Ov&;Ov&;.V;; ;@;@:ak:Ċ:V::@:Zak:Zak:Zak:Zak:@::V:ak;@;;9;Ov&;Ov&;Zak;Zak;eL;@;;;V;);Ċ;;Ċ;>;V;>;;;;;|;;;;<h(<.V i>,>K>{z>%]>NO>>hj???'i.?8x?B?:W?(/?6V?(/?z>B?~>&>>j>P;>D>)>r>>2==={=S`=66==<צ;>;h(;@;Zak;Zak;Ov&;9;@:@:Zak:@:@:@9.V9.V9.Vking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rota500/glu.ndft0000644000000000000000000055377311744305700025021 0ustar rootrootTop500 Glu B<40CCC4-- :p9>;#;#;#:#99>:p9>9p9>9p9>9p9>99>99>9p9>:#;C.;p9>; 3;<;p9>;C.;#;4*; 3:p9>:p9>:p9>:p9>99>99>;C.; 3;$;$;$;#; 3;p9>;C.; 3:p9>99>9p9>9p9>9p9>; 3;p9>;'Z;$;$;$;;;p9>; 3:p9>9p9>9p9>;#;p9>;;;; 3;p9>;p9>;C.:p9>9p9>9p9>:#;4*;R2;R2;C.;#;#;#; 399>9p9>9p9>99>99>9p9>9p9>99>:p9>:p9>9p9>9p9>:p9>:p9>99>9p9>:4*:p9>:p9>99>9p9>99>9p9>9p9>9p9>9p9>9p9>; 3;C.;4*:#99>;R2;$;t;t;$;R299>; 3;$<_N<(?<,$< ;$;C.;#;$<<7<;<%'Z;t;p9>9p9>:#;;9><%'Z<4*<#;5;a59p9>9p9>;4*;;t;t;5;; 39p9>; 3;R2;p9>;R2:#9p9>9p9>9p9>9p9>9p9>99>9p9>9p9>; 3;C.;R2;R2;#:299>; 3:#; 3;#;#; 3:p9>9p9>:4*;R2;;$;$;$;;p9>;C.;R2;C.;C.;C.;C.;4*; 3:p9>99>;R2;$;t;9>;t;t;$;'Z;<;R2;C.;4*;#;#;#; 3:#9p9>;#;;t;<< ;;t;$;$;<;#; 3:#:#:2; 3:#99>99>;R2;$;t;;;t;$;;<;R2:p9>99>9p9>9p9>99>:p9>:p9>9p9>99>;C.;;$;ʰL;$;;a5;C.;#; 399>9p9>9p9>:p9>:p9>9p9>; 3;R2;p9>;p9>;C.; 399>99>99>:4*99>9p9>9p9>99>:p9>:p9>9p9>9p9>:#:9>:p9>99>99>99>9p9>99>:p9>:p9>:p9>99>99>99>99>9p9>9p9>99>99>99>9p9>9p9>9p9>9p9>9p9>9p9>9p9>99>:#:#99>;#;;ٳ;t;ٳ;;#:#;<_N<7;<< 39p9>; 3;p9>;$;$;;R29p9>99>:4*9p9>99>:p9>99>9p9>;#;C.;#99>:p9>;C.;p9>;R2:#:p9>;C.;R2;C.:p9>9p9>:9>; 3:p9>9p9>:4*99>9p9>9p9>:p9>:p9>:p9>99>9p9>; 3;4*;R2;p9>;R2;#:299>9p9>;#;p9>;<; 3; 3;p9>;R2;#;#;$;$;$;$;;<;p9>;#9p9>99>;R2;.;9>;;9>;t;t;$;'Z;t;t;t;t;5;2;2;$;;4*9p9>:#;a5;ٳ<<7<7<,$<< ;<;t;t;t;t;t;5;5;t;t;$;p9>; 3; 3;R2;$<_N<7;t;2;R2;C.;R2;p9>;<; 3;;<;R2; 399>; 3;p9>;;9><<< 3;t;$;;p9>;a5:#:p9>:9>;#;R2;p9>;p9>;C.:#9p9>9p9>;#; 3;$;ٳ;;#;R2; 3:#:#:#99>99>:p9>:9>;4*;R2;R2;#99>9p9>; 3;R2;p9>;C.:29p9>9p9>9p9>9p9>:p9>;#;4*;4*:9>9p9>9p9>99>9p9>9p9>99>:#; 3:9>99>9p9>99>:p9>:p9>9p9>9p9>9p9>9p9>99>:#; 3:p9>9p9>:#;R2;<;#; 3;R2:p9>9p9>:#;4*;C.; 399>; 3;p9>;5<b<7<7<%'Z;t;p9>99>99>; 3;4*;C.; 3:p9>;C.;$<<]t< 3<9< 39p9>99>:p9>:p9>9p9>9p9>;4*;.<7< 3<$;R2;t<4*9p9>;C.;;5;t;$;p9>:#99>:#:2:p9>99>:p9>99>:2;R2;<;a5; 399>;R2;$;t;.;p9>99>; 3;;t< 3;9>;$; 39p9>;4*;'Z;t<_N;9>;$; 399>;#;<;$;ٳ;$;p9>99>99>:p9>;#;R2;p9>;C.:p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>:p9>:#:p9>99>;R2;<;#;;<;R2;C.; 39p9>:4*;#;R2;R2;R2;R2;C.;C.;C.< 3<<%'Z<%'Z< ;;9>;t;$;R2:p9>9p9>;#;#;<%'Z<< 3;;9>;9>;<_N< 3< 3<<;p9>;$;t;<_N;9>;ٳ;;<;p9>;<;#:9>;#;C.;p9>;;'Z;;p9>;C.:p9>9p9>;#;p9>; 3;;p9>;#99>:p9>9p9>:p9>;#;R2;p9>;p9>;C.:p9>99>:#:#99>:p9>;#;R2;p9>;4*:4*:#;R2;'Z;$; 3;4*:p9>:#;#;4*;#:#; 3;;9><%'Z<(?;<;$; 3;;ٳ;t;9>;5;;#;#;$<<7< 3;t;<<4*; 3;<_N99>;#;p9>;$;t;9>;t;$;p9>;R2; 3;9>9p9>:p9>9p9>:p9>; 3;4*;#:p9>9p9>:2; 3< 39p9>:p9>;p9>;9><7;C.;;ٳ;t;$;p9>:p9>9p9>:p9>:#99>99>;#;C.;#99>99>;p9>;2;t;5;<:p9>9p9>;a5;t<4*;C.;2<,$<]t<<; 3;<7; 3;;t<%'Z:p9>;R2;<;$;5;t;t;ٳ;<:p9>:9>;R2;C.;C.;C.;C.;C.; 39p9>:#;#:2:p9>9p9>9p9>:#:4*99>9p9>:p9>:p9>99>9p9>;%'Z;C.;#:29p9>9p9>9p9>9p9>:9>;$;$;$;#;<;p9>;p9>;C.:#9p9>9p9>9p9>:p9>; 3;4*;4*;#:#:2; 3;C.;p9>;$}d=7=.=.=D=T=^d=H=H=AN=(?== = = = = 3<{<<5=o= Q== v<= v<===&=5'=D= =b= =_N<;;9>;t;5;$;;a5;R2;<;;$;$; 3;R2;#; 3;#;p9>;:p9>; 3;C.;p9>;;$;$;<;4*:p9>99>:#:9>:#9p9>9p9>99>;C.;;5;t;$;R2:#9p9>9p9>99>99>9p9>;R2;t<;;<;<;p9>;%'Z9p9>:p9>;'Z<7<;'Z;#;5<7;t;p9>99>;#<<_N;R2;t< 3<=_N= == =<.< 3;; 3;2<4*<<<<7<<,$<7<7<7<;ٳ;p9>;4*;R2;$< <7;9>;$;'Z;ʰL;9>;R2;R2;R2;C.;#99>:p9>;p9>;5<<7<7<;t; 3;C.;#;R2;R2; 3;p9>;;;<;4*99>9p9>9p9>9p9>:2;p9>;;p9>; 3;C.;5<%'Z<7<%'Z;t;C.;R2;9p9>;t;p9><(?<<<;R2;ٳ<4*<<7;#; 3;p9>;$;p9>;R2;#:p9>9p9>99>;#;p9>;C.;#:#:p9>;#;R2;R2;C.:#99>:#:p9>9p9>:#;C.;5;;'Z;p9>;C.;C.;C.;4*:#99>:p9>; 3;4*;R2;R2;4*:#9p9>99>;4*; 3;$<_N<<< 3;;5;;5<  >)> Y4==}d=r=Ǥ=1=/=~=p9>=c=g:=Ǥ=r='Z==W==7!=T)="O=>Lz> >?==&= R=}\_=~L=?==s#=dV=g:=1==7!=7!= = =?=m=K=3$=W=g=>I===b%=Xç=Y=`Eq=[R=T=I=I=Xç=lxY==_N=1=O===^=¶e=o=~L=q)w=Xç=?m='=$7!='='='=== =r='=5'==+=?m=@]=Fg=T=dV={{== v<=r= 3<#;t;t;t;9>;;9>;t;;2;#;p9>;#:2; 3; 3; 3:p9>9p9>:#;R29p9>:2;p9>;t<,$; 3:#:p9>:p9>9p9>9p9>;#<7<<_N<=l=*Ȳ=6=-^== 3<.<~<7<,$<(?<;t; 3:#; 3<=5'=dV=?==c=H=!fu=o< a< 39p9>:#; 3<4*;t;$;$;9><=JL=Ǥ====c=@]=CT<5<9<<== 3= 3=O=<< a<<<b;$;p9>;;t<%'Z;#;<;;t;9>;t;t;t< 3<;<<< 3;p9>;#:#9p9>:p9>;#;4*;%'Z;#; 3;C.; 3;$;'Z9p9>;C.;;$;;C.:2;$<;t;;#9p9>;R29p9>;p9>;t< 3;< :9>;#< 3<7<(?<,$<,$<;9>;$;R299>:p9>;p9>;5<;ٳ;$; 3;C.:#9p9>;#;<;$;<;p9>;4*:p9>9p9>99>9p9>99>;4*;p9>;#;;p9>;%'Z:p9>9p9>9p9>9p9>99>; 3;C.;R2;C.:9>9p9>; 3;R2; 3<7<(?;;ٳ;2;t;t;t;$;#; 3;#;$;ٳ;ٳ;$;<;R2;C.;p9>;$< <7=~<{<<.<>=/=G=\==uڕ=t\=i=[R=T=Xç=f=1===z=q)w=}\_=3=_=A>7>BzW>A>3:>#=T= a=@=$=?==-t=V=y=.=[Q=ѹ=.=Ė="O=>q>-!A>WB>^>[R>I>.ť> 3=ه=.==g=.=>I=æ=ç=>Lz>Lz>>>D>#>3v>FY>R2>Xç>Rn$>>>&˿==æ=>I=.=.=¶e==.=Ҫ3=>>Lz>j> >F>'>4f>E>0&>2J|>.z> ==^==='Z====W===W=aj==m=<>>>+=6=[Q=g=1==b%=Xç=[R=b%=c=_U7=T=QA=Y=g:=~L=?= 3==\=Ȳ=¶e=A=dV=c=Xç=E.=&= Q= ==== =/=~=_N= 3=S=r==$7!=-^=E=T=b%=~=_N;C.;#;#:#:p9>:p9>:p9>; 3;R2;$;9>;C.;'Z< 99>;'Z; 3; 3<%'Z=v=g>o>=T=$=}\_=E.=CT>0&>-!A> =.==K=<<+>2>)y>=_=t\=5'=_N<$l> Y4=t=Ȳ=s#=5'=_N<'Z<7<_N<<4*;R2;<;$;t;<<<0j :p9>;%'Z;p9>;#;5< 99>;#;p9>;$<9p9>:#;R2;p9>;R29p9>;R2;;$;;C.;R2;t<79p9><<<<$<<<$<{{;<;#; 3;$<_N<;#;.<,$<'Z<==_N=_N;'Z<%'Z<$<̐9p9>;R2;t<7:p9>9p9>;#;$< <7;<;t;$;p9>; 39p9>:p9>;R2;$;t;#; 3;R2:p9>99>:2:9>:p9>:9>;R2; 3;$;$;<;C.; 3; 3;#; 3:2:2;#;R2;<;;p9>;4*:p9>:p9>;C.; 3;$<_N;t<_N<b<;;ٳ;$;#;$<_NI=-^=&='=6 a=H=M=JL==+=-^=6 a=S"O=uڕ=>*>3:>3v>*> <=(i==W==9=6=Y4=o=-t==4=D=?='Z=^=g=>b>c9>r>q>]8>=9>=X=K=K=k===Ӛl=> 3>o>D> > &>q>)j>8c>Oه>8> >Lz>w>S"O>.ť> Q=ĵ>3>#=<>ʰ>$>6>!ޒ>,m>-l>+|>-l>4f>Cj>X>qݢ><>>>j>Fg>$s/=ĵ==|>ʰ=|=|>3> 9>i>*>,m>+|>/>5R>E>Y;>o >U>Y;>QA><`>=t=m=m=g==W=.=.=Ҫ3=!> 3> &> Y4>r>!*g>/>:q>I!>b>7> &==^=={{==)==)=_N=~L=?=3=ޒ=?===W=~r>>e=3==O=c=D='=!fu='=-^=5'=-^= v<=r=r==-^=7=B>I=K=[R=s#=O=b=== Q=_N<<<_N<~<<;R2;R2;C.;R2;a5;p9>;$;t<9p9>9p9>;C.<7<=#F=@]=?m='= <<9<7;t;#;R2;4*:#;R2=D===A=T)=b=Xç='=~<<;<_N;t;$;<;#9p9>99>;.<=:>.z>>}d>6}>i=6=3=QA=9<̐<<<4*<<_N;5;;p9>;p9>;;t5R>aq>p9>>^>7s>='Z=Y=<̐;t<Kܔ>q>v>]>2˜===D= 3<<4*< 3<<b<<<7<<<.=6=T=?>#>8c>Q>P>4f>ʰ==K= 3<)>B>)=ĵ=F=lxY='<:p9>;#;R2; 3;t<7<:p9>;p9>;t;R2;ٳ<7<<= 3= 3;$; 3:p9>;R2;$< 3<%'Z< 9p9>;#;p9>; 3;p9>; 3;R2;5<%'Z<%'Z<<<<< a<9;4*9p9>;R2;t99>;p9>;t<;<~99>;C.;$<;#99>9p9>:#;#; 3:p9>:9>;R2;<;$;;a5;#:#; 3;#;C.;4*;4*;R2;<;#;;<;4*:4*:p9>;C.;<;'Z< 3I=Nq1=Wm=U=I=B>I=E.=[R==\>.M>77>8c>/=>=[Q=Ȳ===-t=3=b==V=J|=æ=¶e= =^==[Q>#?>>i>w>w>cG>C> Y=r?==d==[Q=[Q=U7=\> Y4>P>@G>r>>i>.M>>G>U>>>Im>;->}\_>XK>0&>)>B>{>\A>>O> &>#>'>0j >1ZC>0j >2J|>9F>I>\>uڕ>>^>1>pZ>J8/>'>==>?>y>?>Lz>> J>-^>0j >0j >3:><$>Jt>>\>r>XK>[a>V/ >@!>#F===m==Ҫ3=A=̐=̐=ç=> >e>o>\>)$N>2m>>G>M>P>> |=/=^=Q=w=~L==3=b==?=O=3='Z=$=&=>I=z=I>\A>}==S=?=b%=B>I=&=='=5'=>}d=5'='====,$=?m=E.=S"O=b%=}\_=)=CT=== Q=~< 3<< a<<9>= 3=6=r< 3<< 3;$;<;p9>;p9>;p9>; 3;#;$;5<<;;#:p9>:p9>:p9>9p9>:#;p9>;#:9>:p9>9p9>;=dV=}d=<=O=}d==Nq1=r<ٳ<~<;.; 3;p9>;C.:9>99>9p9>9p9>9p9>;#<=>@G>C>Rn$>E.>'=;==D= 3<<7;t;$;;<;p9>;p9>;;5<4*X|>ʰ>N>s >BzW>l==K= 3}d=Y>,>q)w>>J>ubx>=Q=!=Im=.<77>[a>u>oI>I>= =E.=; 3;C.; 3;9>3:>,m>2J|>'=V=O='<̐<7;p9>9p9>;4*;ٳ Q=^=7!=uڕ=!fu;p9>< <_N<=!fu=U=x=V='=/<;ʰL;#:p9>; 3<<~<2= ='=-^<%'Z;<9p9>9p9>;R2;$<9p9>9p9>:p9>;#;4*; 39p9>;#;#;t< < ;t; 3:#;<:#;;<<]t<9;4*;ٳ<7<<<~< 3< 3<_N;R2;2<%'Z:#9p9>;#;;t<%'Z;2;$;p9>;#9p9>:p9>;4*;<;$;4*; 399>9p9>:p9>:9>:#9p9>99>; 3;4*;R2;C.; 399>9p9>:4*; 3; 3;#;C.;p9>;<;<;R2:#9p9>9p9>:#;%'Z;R2;t;< < ;t;$;; 3;#;.< <7= = =/<{ Q>=;>i> u=U7=@==~L=~==t\=k=uڕ=?=='Z='Z==9==y=aj=>Fg>Sl>Sl>C.>*=B=>I=y=:=}=y=^='=æ=T==|==>> >)$N>5W6>cG>p9>>mh>Y;>77>r= o==Ҫ3=K=4=k=t=!> x>9>=;> >f>(?>2m>?1>R2>\>en>`>L>.ť>=.=.===Ӛl=Ҫ3=[Q=O>#>r>@G>9>>*>2J|>>>O%\>5D>8 >4*>%'Z=ڕ=˜=\=-t=?=y=^=P=?=^=.=6=/==l&> Q>@G>'>0&===Q=^=x=[R=T=Y=i=xA=t\=dV=_U7=_U7=j=O====z=¶e=ه==r=g:=Y=@]==l= 3=3= v<='= v<=#= 3=?= 3=6==(?=5'=H=Y=dV=lxY=l= 3<{<<<<9<<+<+<< 3;<; 3; 3; 3;;$;9><4*99>:#; 3:#99>; 3;p9>9p9>;p9>=T= =]=J|==[R=&;4*;#; 3:9>:p9>99>9p9>:p9>;C.< >3v>>G>0j >#?==Y=r<;#;t<7< a=(?=>MD>r>v>Y;>,m=g=oI=<I=V>3>gO>>>\>)j==V4= 3;C.:p9>:p9>; 3;R2;2<75W6>XK>i>^>6}=O=r=r<$<_N;#9p9>;R2;t2>+|>/>0=æ=Y= 3< 3;299>; 3;2)=J|==ht=;<<< 3:#;$<(?< 3:p9>;p9>;5<%'Z<]t< 3<~9p9>:4*:p9>99>9p9>9p9>;#;p9>;;;p9>; 3;;t<<(?<;9>;; 3;#<;R2;29p9>;#;$<;p9>;t<4*<7<7<7<%'Z;;$;C.99>:#;p9>;5<;t;t;$; 3;C.:#:p9>;C.;;2;R2;C.:#9p9>9p9>:p9>;#;C.9p9>9p9>99>9p9>9p9>9p9>9p9>9p9>9p9>99>:2;#;C.;#:p9>9p9>;5;.;;R2;C.;R2; 3;$;$;'Z;;;'Z;$;'Z;p9>;C.;#;#;#;4*;p9>;$<.< a<#<_N<<<_N<~> 9> ==.==oI=dV=r=uڕ=f=b%=dV={{==V==7!=Y== a=8/=^> v<>*>)$N>7=%=?=x=?=6=7= R=)==9=@=¶e=g=Ň=.="O=/>_N>r> > v<>>=.=9=z=}\_==S=o===='Z=T)=æ=æ=g=ç=>~>e=T==Ҫ3=J|==_U7=Nq1=V4=e=uڕ=oI=b%=[R=a5=uڕ==r=-t==^=}d=.=z===uڕ=U=-^==='=6 a=B>I=6 a=(?===!fu=5'=H=S"O=Xç=dV={{=?=Im=-^='==_N<<.<̐<9>=_N=O<{<<<<'Z<+<ٳ;<< <<4*;#;#;R2;<;p9>;R2;R2;C.;R2;;9><(?; 3;$;.;ٳ;5;5;ٳ;$; 3;#99>9p9>99>:9>;4*;#:#; 3;R2;t:p9>:9>;#; 3:p9>9p9>;C.= 3=E=[R=T=5'= <2< 3<(?;$;C.:#:p9>:#; 3; 3:#99>9p9>; 3;$< 3=`\=/={==S=K=r<.:p9>:9>;#;R2;p9>;$< 3<~=_N=Wm>i>5D>5D>f=æ=f=<̐9p9>:9>;R2;$< 5D>J8/>Cj>$L=>I=Wm= << ;R2; 3;< e>0j >5D>,m=!=j=<<(?;R2; 3;$<4*<9=~=6 a==.>V(===¶e=s#= <9<_N;C.:p9>;'Z<,$=p#=ç=6=s#=1ZC<̐<%'Z;<9p9>;R2;:p9>;< <]t< a=~=CT=;;R299>;R2;$;9><(?9p9>9p9>:p9>:p9>99>99>;4*;p9>;; 3;R2:#;p9>;$;t;t;5;'Z;R29p9>; 3;;9>< < 3;t;$;R299>:9>;<;5;t;9>;t;$;<;#9p9>9p9>;C.;;$;$;; 3;R2; 39p9>99>;4*;<;4*;#:*99>9p9>:p9>;#9p9>99>99>9p9>:#:#99>:p9>; 3; 3; 3;#;#; 3:p9>9p9>9p9><<#;t;$;<;;$;5;5;$;;<;<;$;;$;$;$;#; 3;p9>;'Z;9><2<<$<<<}d=E=K=T=Xç=!fu=r= 3<< a<$;<;$;'Z;#;;'Z;.< ;R2;a5;p9>;<;p9>;4*:p9>99>:p9>;4*;p9>;p9>;C.:299>99>;#;;2;R2;R2;R2;#;#;C.;R2;R2;#99>99>; 3;C.;C.; 39p9>:#;C.;<;$;9>;<;9>;5;$;;a5:#9p9>9p9>:4*; 3;4*;#:#9p9>;#9p9>9p9>:p9>; 3; 3:p9>99>;R2;t=)y=K=QA=0j = <<<7;ٳ;R299>99>:#:9>; 3;4*; 3<_N<~<{==$='Z=w=-^=o; 3;R2;$<_N9p9>9p9>;4*;$<b<~<5==[R=-t=¶e=]=-t=T=_N<9<%'Z; 399>9p9>;R2;t9p9>;C.;t:9>;$<<~<̐= =)y=B>I< a:#;R2;<;;$;#9p9>:p9>:#:#99>9p9>:#; 3;#; 399>99>:#:#:#99>9p9>9p9>; 3;#:#9p9>99>99>99>9p9>9p9>9p9>9p9>99>99>9p9>9p9>;<;<;5;<;C.;C.;R2;p9>;p9>;R2;#:2:#;#;p9>;#;$;$;$;;p9>;<;ٳ<< 3;p9>;'Z;<4*<.=o=_N<<+;t< 3<7<7< 3;< <7;'Z; 3;;$;t< 3<(?;$;p9>;C.;R2;p9>;p9>;a5;p9>;<;$;9><0j <;;$;;a5;R2;R2;a5;p9>;<;p9>;C.:#99>:p9>;#;R2;R2;C.; 3:p9>:p9>;C.;#;$;a5;R2;#; 3:#:#:2:#:p9>9p9>9p9>;#;R2;R2;#:p9>9p9>;#;R2;C.;C.;#:p9>99>99>:p9>:p9>9p9>99>;#;C.;C.; 39p9>:p9>;#;R2;p9>;R2;%'Z; 3; 3;#;#:#9p9>:#;#;#:#99>;4*;$;t;9>;t;2;#;p9>;R2;#99>9p9>:p9>:p9>9p9>; 3;<<~9p9>9p9>;C.;2<4*= 3= 39p9>:#;C.;$<(?< 3<=-^=)y= <<<<4*;ٳ;R2:p9>; 3;p9>;t:p9>9p9>;C.;$<%'Z< 3<= =(?=r= 39p9>;R2;.<%'Z< 3<̐= 3=<.<<;p9>:p9>; 3;;t<7< 3; 3:#9p9>;#;p9>;$;t< <b9p9>9p9>9p9>9p9>9p9>99>9p9>9p9>9p9>;p9>;<;R2:#:9>;C.;R2;C.;#:#:p9>;C.;t;5;;C.:#99>:p9>:#:#:p9>9p9>:p9>;R2;;$;$;$;#;#;.< ;9>;$;a5; 3:9>;#;R2;p9>;R2; 39p9>:p9>;R2;;5;t;9>;t;9>< 3< ;t;;R2;#;C.;p9>;;'Z;;R2:p9>9p9>;#;p9>;$;5;9>;<< <;5;;C.;#;C.;a5;<;;$;;R2:p9>99>; 3;C.;p9>;$;5;t;9>;p9>;#:p9>:#;%'Z;R2;p9>;<;<;R2;#99>9p9>9p9>99>99>99>:p9>;#;p9>;#;; 399>9p9>99>:9>;#;4*;4*;#:p9>9p9>99>:2:9>:p9>9p9>:p9>;#;C.:#99>9p9>9p9>99>:p9>:p9>99>9p9>9p9>:#;#;4*; 399>99>:#; 3:2:p9>99>9p9>9p9>; 3;C.;C.; 39p9>9p9>:#;4*;4*; 399>9p9>:2;%'Z;4*:9>9p9>9p9>; 3;R2;C.; 399>99>:9>:299>99>;#;p9>;p9>;C.; 399>9p9>9p9>9p9>9p9>9p9>99>;4*;$;$;'Z;p9>;C.:2:p9>:4*9p9>; 3;<<%'Z<;9>;$;<;C.:299>; 3;;99>;C.;$<99>;4*;;<7<{{:p9>;C.;;t<0j 9p9>:#;C.;<;$;t99>9p9>99>:p9>9p9>9p9>9p9>9p9>99>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>99>:#:p9>9p9>:p9>;#;#:p9>99>99>9p9>:p9>;#;#:9>9p9>9p9>; 3; 3:p9>99>; 3; 3:p9>:p9>; 3; 3:p9>9p9>99>9p9>:p9>:9>:299>99>; 3:9>99>99>;#;#:p9>:p9>;C.;4*:#9p9>; 3;C.;#:p9>:p9>;#; 3:p9>9p9>99>:29p9>9p9>9p9>99>:p9>:p9>9p9>:p9>; 3; 399>:p9>;#;#:p9>99>; 3; 3:p9>9p9>9p9>99>:p9>9p9>9p9>9p9>99>99>9p9>:p9>; 3;C.;C.; 39p9>:#;4*;R2;R2;C.; 39p9>:2;4*;C.;#; 399>9p9>:p9>:p9>:p9>9p9>9p9>9p9>9p9>9p9>99>9p9>9p9>99>99>9p9>99>99>9p9>9p9>99>:p9>:p9>9p9>9p9>9p9>9p9>9p9>:p9>:p9>:p9>:p9>:p9>:#;#;C.;C.; 3:p9>:9>;4*;C.;#; 3; 3; 3;4*;R2;R2;#9p9>9p9>;#;R2;p9>;R2;C.;#:9>; 3;#;#:9>9p9>; 3;R2;p9>;R2;C.;#:p9>99>99>99>9p9>:p9>;C.;R2;R2;4*:9>9p9>9p9>; 3;C.;C.; 3:p9>99>:2; 3:p9>9p9>9p9>9p9>9p9>:p9>;R2;;$;'Z;<;C.; 3:p9>9p9>;;<7:p9>9p9>99>;p9>;t< 3<;R2;#; 3; 3:p9>9p9>9p9>9p9>99>:p9>;C.;ٳ<;< 3<<; 3; 399>9p9>9p9>9p9>:p9>:p9>99>99>:p9>:p9>:#;C.;2<7<4*9p9>9p9>9p9>99>99>99>:p9>;R2;t;;2;$; 3;C.:p9>9p9>;4*:#;#;#:9>9p9>9p9>9p9>9p9>9p9>99>:#:#99>9p9>; 3;C.;C.;4*; 39p9>99>;4*;a5;<; 3;;<;R2;#99>;;ٳ;<< <_N;9>;t;ٳ;$;;p9>;#9p9>9p9>99>; 3;C.;p9><7;$;2;<<4*< 3< 3<<<'Z<_N<7<< 3;;;9>;t;ٳ;$;$;$;9><%'Z<;<_N< 3< 3;;ٳ< 3<4*<;;;t;;4*99>99>:9>;p9>;5<<79p9>; 3; 3;t<<%'Z<<_N;t;t;t;9>;9>;t;R2;C.;4*;#:29p9>9p9>;#; 3;.;t;5;2;$;;<;p9>;p9>;p9>99>:p9>:p9>:p9>9p9>; 3;R2;<; 3;<;R2;4*:299>9p9>9p9>:p9>;#;#;#:#9p9>9p9>9p9>9p9>9p9>9p9>9p9>99>;p9>;2;t;9>;t;t;5;;;C.9p9>;t:#;C.<= Q==!fu==CT= 3<ڕ<<.<:p9>; 3; 3< < 3=6 a=T=[R=U=I=-^=r= 3<{<ٳ<< a<<(?<]t<= =-^=CT=CT= =_N<<'Z;<;'Z;$;$;$;t< 3<7<_N; 3;#9p9>9p9>:#;C.;p9>; 3;;$;2;t<4*<~;9>< ;<;ʰL;p9>;#9p9>99>; 3;C.;C.;4*;#;C.;R2;'Z;R2;p9>;p9>;4*:p9>9p9>9p9>99>99>9p9>9p9>9p9>:p9>;#9p9>99>99>9p9>9p9>9p9>:p9>99>9p9>99>; 3;C.;C.;#99>9p9>:#;C.; 3;$;$; 3;C.9p9>; 3;C.; 3;$;t;<< <_N;t;$;R299>99><7; 3:#; 3;C.;4*;#;4*;;9><%'Z= 3= = Q== =_N<<< a<'Z;;C.;#;R2;#;9p9>99>;C.;$;9><<< 3;;t;2;$;$;:p9>; 3;#;#99>:#;R2;<; 3;<;p9>;R2;#:#9p9>9p9>9p9>9p9>:p9>; 3; 3:#99>99>:p9>9p9>:p9>:#:p9>9p9>; 3;C.;R2;#:#9p9>;#;p9>;; 3;p9>;C.:p9>; 3;p9>;;$;$;p9>; 39p9>; 3;a5; 3; 3;R299>:p9>; 3; 399>9p9>9p9>9p9>:p9>;p9>;$;2;t;t;t;t;$;p9>; 3;p9><%'Z< 3< a<̐<=_N=(?=D=K=K=H=?m=-^=!fu== =_N<<:p9>:#;R2;t< 3=b==æ=T)='Z=S=}\_=c=T=E=6 a=(?=r=_N<< 3<(?;5;t<(?<#= 3=K>#>>> <=m=y=3={{=b%=S"O=H=<=(?=CT=<.< 3=;>-l>)`\> Im=Ҫ3==/=b%=L=B>I=5'=(?==l==.==uڕ=K=-^== Q= 3=_N9p9>;#;p9>;$;5;9>;<b<7; 3;R2;p9>;<;p9>;p9>;<;'Z;ٳ;<; 3;p9>;R2;C.;C.;R2;R2;C.:p9>:p9>:2:#:p9>:p9>; 3;4*;R2; 3;#;#;C.;p9>;'Z;*;2;$;p9>:p9>9p9>9p9>99>:9>;R2;p9>;;$;<<0j <7<4*<;t;<:*99>:#:p9>9p9>:p9>;#;p9>;;$;; 3;<;'Z;<4*='=)y=-^=.=+=!fu== 3=~<9>= 3==5'=[R==>*>#F>=;>9> Y4=/=.=T)=&=`\==_N=[R=B>I=)y=-^=Fg=_U7=~L=\=W>)>)`\>U>LT>Cj>>G>4>(?>3>)> Y4>Lz=<=.===~L===?=æ=!>>=9>Q}>]>U>>L>Fg><`>0j >%ci>i>i>d>==>I=@==^=>I=A=>>2>MD>]8>8 >2J|>/=>-!A>%'Z>o>==l&==[Q=== ==$=T)=ߠ=h>o>*>7>>===Ň=æ=s=7!=q=S=CT=o=O=p9>=dV=q)w====r=J|=Ҫ3=>y>ʰ=s#=a5=T=K=D=+==9=====!fu=6 a=H=I=E.=K=c==S==x=o= =_N<<< a< 3;<;$< ;t;'Z;C.:p9>9p9>99>;#;;t< 3<< ;<;t;$;;p9>;p9>:9>;R2;p9>;a5; 3:p9>;C.; 3;$;$;;R2; 399>9p9>99>:2; 3:#9p9>; 3;<;$;$;'Z;R2:#; 3:#:p9>9p9>; 3;$;<< ;t;#;R2;%'Z;#;p9>; 399>;#;5<4*; 3;t9p9>99>;$<;;R2;<;p9>;9>9p9>; 3;C.;p9>; 3;; 3;p9>;#9p9>;C.;9>;'Z==4=ѹ==}d=^= =7=_N=e=Y=K=6 a==<<7;$;#;<%'Z< a=(?>5W6>Y;>^d>Jt>>0j >6=<=.=^===~=e=K='= 3<+<<<<1>>b>?>X|>0> |=T=]=?==o=<=`Eq=AN==<̐E.>>>N>$>U>*=l&=æ===Q==i=T=6 a==/<<=CT=T=&>">_U7>t\>>{>R2>)`\====i=[R=T=K=AN=)y=r= 3>G+u>(?>+|>==={{=K=+=r= = 3= 3=o |=b=?=b%=Fg='= 3<_N<<= 3=6 a=b%== 3=_N;<;$;t< <4*9p9>9p9>; 3;p9>;$;5;t;t;<<7;9>;t;ٳ;$;$;;2;$;p9>:29p9>:9>;R2;p9>;p9>;p9>;p9>; 3;$;t;$;$;$;ٳ;<<(?<(?<;5;p9>:#:p9>;C.;p9>;a5;C.;#;C.;<;$<<(?<7<]t<<'Z<$<9<<;;$;5;5;$;'Z;'Z;.;= 3= 3= ==r=r== 3<{<ٳ<<Y;>Kdw>>>5W6>+|>r==T=4===7!==a5=QA=T=lxY=3==>>A,>XK>)h>>>gu>4>cG>Oه>IG>G+u>E>8c>*>)=<=2=%>o>\>14>R2>>f>?/>>P>>>>x>?>>>z>b%>I >7>4f>;4>I>Y>v>>D>k???<>?W>(i>>>o> >> >ė>u>[a>P>P>Z>i>|0>>V> >;?G>亀>˾>E>?>>Q>}|>w>x3$>v>i/>U>>Be>;>A>M>[a>n>1>b>:>U>m%>^>~>v>oI>Z'>@>2m>/y>0&>-l> Y>V(>\>{>6>">.z>6}>Kdw>d>>C>> >=l&=X=ه=^= = ==#==?=?=CT='Z=ZC=m==>b>%'Z>)$N>=p9>=dV=Wm=JL=?m=(?=r= Q= 3= 3= 3= =!fu=7=K=QA=Oaj=V4=oI===)=}\_=_N=_N=~;;p9>;R2;R2;p9>;2<< 3;;$;R299>9p9>; 3;p9>;5<<7<4*<b;t;;C.;C.;p9>;$;$;$;'Z;R2:p9>9p9>;4*;<;#;%'Z;t:9>;<<<= =(?=?m=Fg=?m=!fu=~<;t; 39p9>;ٳ<~<5==6 a=S"O=Y=S"O=-^=O<7;R2;R2<7< a= 3=(?=E.=K=D=<;p9>9p9>;$;#<,$< 3<<$< 3<;C.; 3;<;$;$;p9>9p9>9p9>9p9>:4*:p9>:p9>99>:#;p9>;ʰL;<<,$<(?<;9>;$;R299>;#< 3<~=O=?m=[R=oI===?={{=dV=S"O=B>I=*Ȳ==/<.9p9>9p9>;C.0j >;4>4 >'>)==Ӛl=G='Z==_N=f=K='=~<<4*;<<,$<=r=>>Hn>'Z>ɱ>~ĵ>PQ>14>9==K=>I=^==1=U=(?=_N<+Be>>>>>>>v>D>(?> Y4==ه=>I=@=CT=ht=E.== 3=CT=U=æ>9F>e>0>>>ˠ>0>n>77>b=h==4=$===b%=D= v<=r=6 a=>>XK>>>1>wJ>o#>3>vR>8c> <=.=w=CT===oI=Xç=D='=CT==B>I=b=>H>X>lg>z>h{e>?>r=.= R=c=K=?m=5'=+=&=r=l=_N<#=_N=(?=i=>P>E=d=A=^=)=[R=6 a=r= 3;<<4*;$;t<_N<<(?<;:2;R2;;$;.;$;$;t<b<7<<%'Z<<,$.z>$s/>0> &=<=g=^=F=-t===uڕ=T==+=-^=6 a=M=mh= R=^=>i>0->>d>r>8>i>MD>8c>2>2J|>1Q>+|>+=l&=Ҫ3=]=.=> >0&>W_>,>v<>m?"?'?>w>*>,>(Z>9>>D>C>}\_>ba>P>I>PQ>b>|0>̾>D>?;?!}?H?:?%ۅ?>J>։>> >bi>>v>>b> >>>>">N?? N?7 ?GI}?P?@?,"?k? Z>'>˂~>ť>(i>˾>j>>>k>>d>>W>h?s?( ??@?Po?3?(??? ;>>S>$> >^>|>>>@G> R>>܅>d>F> >>?5?)y?4W>H>q>W>9/>>)>|B>u>x3$>w>j>Y;>MD>M>\ o>o!>>Im>2>>Ы>?4>cG>V&>Sz>M>8c> v<> &>Lz>Lz=|=:="O=̐=T>#?>>'>1Q>C.>Y>oI>z>w=c=$=w=W=Im=p9>=_U7=Wm=Nq1=E.=B>I=E=Nq1=b%=|l&=Q===:=aj=T=K=Ė=(?=)y='== =_N<<.9p9>:p9>;#;<;5<,$9p9>;#;$<(?<{{<9:4*;ٳ9p9>;<<<==K=z=-t=?=V=x=S"O=CT<9;5; 3; 3:9>:p9>:p9>;#;C.;R2;R2;C.;#99>9p9>;p9>;t<%'Z:p9>;#&S>P>b%>Y>E>0j >>o=d=G='Z=3==_U7=6 a= 3<-t>{>˾>*>o>w>JL>0j >P=B=K=æ=$=CT=dV=7=laq>{e?=w? >>>v>cG>9F>#> <=<==>I==~=S"O='= ==c=U7>PQ>>??>>&[>>X|>/=>)==Q=¶e=^==uڕ=L=(?==D=l>o>q>>Ώ8>!>L>{>S>]8>+|=r?=¶e===S==f=Nq1=-^=r==H=-t>e>[a>>>h>S>>l<>5W6>=z==b%=S"O=I=D=6 a='== 3<{= 3=-^=z=W>)y>^d> >====V4=0j =r= 3=I<<; 3;$;t<_N<%'Z<7;4*;C.;<;$;t;t;t;9><=g:=a5=Xç=K=?m=4*=)y== 3=== 3=CT==*Ȳ=6 a=M=dV=xA>U>FY>5W6>(4> =<==¶e===y==/=i=b%=g:=x==.>_N>,$>G+u>XK>>޿>>>y>en>Oaj>I!>MD>PQ>J8/>:>-!A>>e>P>,$>A>f">>>޿>??1?/?)?AG>>k>-t>\>C> >>q>;->R>|B>m>6>>dz>;?\?/?>y?a?V8?=$?#?sl>61>Ԩ>A>a>q> >;<>&>˿>1>m>>?=w?!9k?k>2>j>I>>ն>˜^> >}d>>$]>?5?(5?D?[:=?e?Sma?Cy?-{V?[B? h>j>g>?>W>(i>>J|>> >">?>˾>Ŵ??z?/j?FJ@?T0??>>Eq>@> >>&>>>x>}\_>r>t\>y>e>}>>p>??P?b>e>1>}\_>r>Y;>7>(p#>%'Z>&S>i>6>=ĵ> Y4>#>3:>@]>Oaj>d~r>~ĵ> >#>=T=aj=.=m=?=S=?=}\_=p9>=`Eq=Wm=U=[R=p9>===?=4==>^>Lz==6 a=7=5'=-^=&== 3=;#;p9>;$< 3< < 3<.<<= ==+=B>I=D=5'==)y;p9><%'Z<<{==H=oI===7!=6=a5=I=O<_N;t;C.;R2<%'Z<= 3=B>I=}\_=z==|=!=æ=r=I9p9>;#;< &>> ==W='<;$9p9>99>;$<<=_N=E= R=W>#?>)>3=Ė=?<;9p9>;#< 3<==_U7==¶e=ˠ===@];t;C.<(?<.==I=dV=k=T=<; 3;t<~<.;;p9>:p9>99>;%'Z;p9>;<; 3;<;p9>;#99>:p9>;;<<<:#9p9>99>;<<> Q>=9>Sl>P>@]>0->#=L=Ҫ3=ZC=W==t\=T=)y=_N<'Z<7;<<==7>r>->o#>">>v>I>.z>=<=W=}===[R=)y=_N< a<Ȳ=_N=T=A>J8/>P>Z?<>L>f>D>ba>7s>f=ĵ==.=&=|V=p9>=E.==o= 3=QA=m>;p>0>3?!?O> >>Im>WB>-l> ==æ=:='Z==c=B>I=r= =(?=j=|>Y>>ʿ>'i>ݰ>>o>[a>+|==4====z=[R=D=!fu= 3= 3=-^==>I >dh>|B>Q>>cG>4 >=J|=?=_U7=K=D=8 =+== 3<# >M===[Q=^==Y=6 a== 3=< 3<,$;'Z;R2;R2;<;$;ٳ;5;t;<%'ZJL><>-l>7====c=F=}d====z=t\=~L=3=y=K> &>,3>BzW>Oaj>>U>~>>lu>N?><>;4>DZ>J8/>Gg>8 >-l>>#>I>0&>I>o>>>۲Y> p?9I?*?> p>R>>dh>o>}>k >Ƥ>>><>}|>N>v>fu>.>Z?M?,$?:چ?\ϝ?P?4?"?nQ>[Q>bi>4>W>Ы>>3>>s/>˿>->>!P? -?! `?:&[?Ss?]t?aD?V ?;?"?8>h>Fp>Z>ח_>>H}>S>x>:>چ>Z>5>L??'4?@{?X?bp?JH?;?%p?>>>>">>bi> > >>>>*>>^?u?|V?,!?@N?MS??j>>>q>Fa>}|>z>Q >*>}\_>nX>c>ht>}\_>&>q">g>>Ƴ??}?A>>s#>f">Y;>Be>*>)>r>r> Y4=ĵ=t=U7=ڕ>7>,$>5W6>E>Xç>q>>D> R=.====\=x=z=s#=c=U=K=E.=I=U=i=Q=\=?==2==/=ٳ=!fu=&='='==CT= 3=~;C.;'Z< 3I=+==|l&=[R=CT<< ;R2;#;$^>3>)=n==[R= 3; 3;#<7<.==b%=$=|>#>-l>'>=ZC=AN<̐;t:p9>:4*;p9>;<=CT=Y=?=r?>i>)`\>=;=xY==o<4*:p9>:#;:p9>;$<~==3:=g:= R=CT=z=AN;;C.;p9>; 3; 3;p9>;R2:9>9p9>;p9>;t<7;C.< < 3<=~= ==S= 3< a= =>}d=b%==x=?=t\=Y=D=(?== 3<۔R<9<7;$;#;%'Z<==xY>#>I>=;> _=<=.=p#=6=s#=[R=K=-^= 3<.I>M>*>>,>n>M>/=>e=U7=c= ==}\_=[R=5'= 3{>CT>v>G>">T>o!>@>==æ=@===lxY=I=Vk>:.>˜^>>{V>>gO>5W6> u=A=$=W=o==a5=AN="V>r>Im>-t>;> >h{e>5W6> =>I=9=}\_=dV=]t=QA=7==_N<<+=_N=H=>r>V4>:T>M>I >3:> u=.=3=b%=E.=-^=$7!== =_N;R2;a5; 3;#;#;;.;<%'Z)>R=[Q=F=7!=r==b===W=)=oI=[R=Y=dV==r=y==h> Y4>>i>(Z>u>I >-l>@G> Q>D>i>)y>)$N>0>O=)w=t=|>7>/>H>k>Q>>>?&?<>>>>e>Vk>[a>oI>|0>|l&>oI>[a>PQ>Oه>\H}>r>h>f>3>? ??3?$L?>>^>0>>>>^>,>x>>,>Q> >-t>ZC>'?N??+?6?97?)u?a[>>G>i>v>F>-t>>> >q">܅>>>>5>n? ?!Hn?0L?>>(> >~ĵ>>X>>>l>~>~ĵ>>r>>">>!??[B?">>s/>7>>lg>Jt>>6>9F>C.>DZ>=9>3v>/>2J|>Cj>XK>i>~>>>ť>ǣ>˾>:>-^>=;>D=\_=A=¶e=æ=>I==?==q= =G=>?>7>(p#>3v>A>MD>Kdw==g:=b%=b%=[R=T=K=H=>}d=,$= v<====.=K=[R=mh===S=3=o<==?= 3= 3=o; 3;#:p9>; 3;R2;;t<<,$<4*<%'Z< 3;t;5<_N<4*99>;C.;;t<,$;R2;$<<]t<<ʰL<{= ='=AN=Fg=AN='=5'=_N99>;p9>;ٳ<7;4*99>;p9>;t Q>=Ҫ3==S"O=_N99>;p9>;5<7<+=r=Y=w=h>>(?>i===-^9p9>;C.;$<<$=3=Wm='Z=>>"V>7=U7=:#;p9>;ٳ:p9>;C.;t<=_N=5'=f== R=p9>=5';R2;4*:29p9>; 3;$< <7;$;R29p9>; 3<,$< 3<b<=_N==6=Fg=Fg=6 a=&= Q=_N<<$:p9>; 3 Y4>'>*> J> Q==:=q=uڕ=Y=K=7==_N<Ȳ<7;$;'Z< <$=r=e>,m>P>ba>Y>Be>,1>Lz=.= =j=dV=Xç=JL=-^= <ʰL<<4*<$==t\=A>;>b%>o!>` b>A>&S=r?=J|==j=Y=K=AN=&= 3Lz>(p#>;>Be>5W6>\=O=$=1=Xç=D=0j ='== 3<̐< 3<;<,$<_N==E=CT=/=æ=d=d=æ=V=o=U=.=r= = 3=<<$;;$;<;C.;C.;R2;#;<;$; 3;R2;4*;#;#;#;C.; 3;t<,$;C.;C.;R2;R2;C.;%'Z;R2;;ٳ;;5;ٳ;.;$;$;t<<7;$;#;#;$;5;2;$;#;'Z;$;2<<%'Z<<<7=z=w=uڕ=uڕ>-l>\=!=>I=== =y=>I=Ҫ3=Ҫ3=>I==l=l==¶e=>l>|V>+|>3>4f>dh>>W[Q>0j >6=ĵ= > Y4>">/>0->&˿> > <> Y4>>.z>=+>X|>u>Q>CT>ɱ> B>7>w;>`>;>-l>)j>2J|>E.>R3>T>I>:>5W6>9T)>I!>[a>s >&>>->g>̀>W> >>l<>J8/>4f>0j >8c>MD>X>XK>MD>@!>=9>G>Y>m>`>o>V>>N>>$>>d~r>G+u>2J|> >>&S>1ZC>5W6>3v>,m> v<>"V>0j >?>PQ>ba>y#]>X>ɱ>R>V>A>,3>=L=T=.=¶e=ˠ=+=d=aj=4=y=z==|>&>'>2m>>>M>V&>Sl=?==|l&=uڕ=mh=c=dV=f=dV=\=L=?m=-^=5'=M=k=)=-t=`\=J|=>I=g=.== = ====r= = 3=~<<.< a<<= 3= Q=r=!fu='=&=!fu=; 3;$;t;<< 3;;t;ٳ;$;$;$;5;< 3< ;;5;;C.:p9>:p9>:#;#;p9>;#;$;ٳ;ٳ;$;;p9>;<;$;t;9>;4*;<;$;t;< < < 3<<;<<< 3< 399>;R2;'Z;t<;p9>;ٳ<:2; 3;t<4*< 3I==dV=&<;<;#:9>;;9><7<= 3=8 =<=:=V=l&=t=:=uڕ= 3:p9>;p9>;5<%'Z;#;<;t<_N<==I=a5=`Eq=D= 3<<9p9>:p9>;C.;ʰL:p9>99>;C.;$;t;5;<99>9p9>:p9>; 3:2:p9>;C.;$;t;;t;$;<;#9p9>;'Z<(?<7<_N;'Z; 3; 3;t<_N<<{= 3=/=<<<<= Q=+=E.=I=D=+=r= 3<<̐<;R2;<=!fu=QA=t\=Q==)=uڕ=U=:=&=CT= 3:9>;t< 3<9>=t\==Db=¶e=T)===c=H=-^==b= 3<ٳ;p9>;C.;'Z<<=_N= v<==_N=99>;#;$<7<<<<<~9p9>99>;#;$<;9>;t;$; 3;<;'Z;ٳ;t;t;*;#;p9>;C.; 3:#99>9p9>;#;<;ٳ; 3; 3;p9>;R2;C.;R2;;$;5;ٳ;$; 3;R2;%'Z; 3; 3:#:p9>9p9>9p9>:p9>;#;p9>;R2;C.;#; 3;4*;<;ٳ;< 3< 3;t;;;p9>;R2;p9>;p9>;R2;#; 3; 3;4*;R2;R2;R2;C.;R2;;<7<_N;t;9>< <;<;5;;p9>;R2<_N<<<b<7< 3<<ٳ<;t<=O=dV=_U7=c=}\_=q=`\=]=>I=^=\==S='Z=}d=Ԋ===B={=>e=Eq=J|==)===y======^=G=K=ĵ>6>!ޒ>+|>0&>0&>(p#>6==J|==;=S=7==:=aj==%=g=J|=^=¶e=>Lz>|V>(?>0->3v>2J|>*=Q==Q=~L=w=z==r===P=\===\= =Ҫ3=>O> 9>r>e=<=w=S"O=B>I=C.=D=E.=K=Y=a5=b%=V4=Fg=-^=-^=I=dV= 3==ޒ='Z==w=r= Q=_N=_N= 3= 3= = Q== = =_N<5<.<̐<= ==(?=-^=-^=-^=-^=$7!<]t<<<<<$<<<~;;$;<4*;ٳ;'Z;<; 3;$;9><<<%'Z<b< 3;9>;ٳ;$;#;C.;<;$;;$;#;p9>;C.;#; 3; 3;#;R2; 3;'Z;'Z; 3;p9>;R2;C.;4*;#;C.;R2;R2;C.;#:299>9p9>99>:p9>:#;#;4*;C.;R2;R2;C.;#; 3; 3;#;4*;C.;t;$;p9>;#9p9>99>; 3;C.;R2;p9>;p9>;a5;R2;R2;<;;< 3;;4*;p9>;;$;ٳ;t;<(?;R2;$;t< <7<<:#;<;5<:#; 3;t<%'Z<]t<= 3=5'=b%=Im=3==Y= v<;p9>;ٳ<;C.;;t; 3;R2;$<%'Z<<<<<_N<b;R29p9>:p9>;C.;;$;$;R29p9>9p9>; 3;R2;p9>;R2;#:p9>:p9>;;9><<(?<;9>;$;R299>:2;5<;< ;$;4*;R2;t;<:#9p9>;p9>;9><̐=_N=='=-^=*Ȳ== 3=<<̐< a<9p9>;<<,$<=_N=6==(?=-^='==_N; 3;t<<<.<=/= 3= == 3;#;t<<<<:#;'Z<0j <_N<4*<7<7<4*<%'Z<< 3<_N<<,$<7<,$< ;t;;4*9p9>; 3;$< 3;;$;#;<;R2;R2;p9>;;$;t;t;2;'Z;p9>;C.:#9p9>; 3;p9>;#;4*;#:p9>99>:p9>;%'Z;p9>;;#; 3;p9>;C.;#:9>:p9>9p9>:#:p9>:p9>9p9>99>;#;p9>;<; 3;p9>;R2;#:9>:p9>:p9>99>9p9>:#;R2;;$;$;$;<;R2;#; 3; 3; 3:p9>9p9>99>;p9>;5<<(?<(?<;9>;$; 3;p9>;p9>;<;<;a5;#99>9p9>9p9>9p9>:#; 3< ;$;$;;t<4*< 3<<{= 3= 3= 3<<<I=K=c=?=b=7=)={{=]t=D= ;R2;;t<<(?<(?<< 3;t;5;'Z;;$;t<<4*<7<7<(?< ;t;$9p9>:p9>;R2;;$;$;#;p9>;R2;4*:#99>; 3;p9>;'Z;$;$;$;; 3;R2:29p9>:p9>; 3;#;#; 3; 3:p9>9p9>9p9>9p9>:p9>;#;C.;C.;#:9>99>9p9>:4*:p9>:p9>99>9p9>9p9>9p9>99>99>99>9p9>99>99>:p9>:p9>:p9>:p9>99>9p9>9p9>9p9>:p9>; 3;#;#:#; 3;#9p9>9p9>:#;#;C.;R2;C.;4*;#;R2;#;t< 3< 3;5;;p9>99>; 3;p9>;#;$;;5<_N<4*<]t< 3<< 39p9>;4*;#;5;<%'Z=<<<<%'Z; 39p9>9p9>;C.;$;9><;C.;'Z;t<%'Z<<{=CT="V= v<= <̐:9>;p9>;2< 99>;4*;<;ٳ<99>; 3;R2;$;<<79p9>; 3;p9>;'Z;$;;R2:#9p9>:p9>:#:p9>9p9>9p9>9p9>;#;a5;p9>;a5;#99>:p9>;<;5;< 3;;ٳ;;C.99>:p9>;#<:#; 3< <]t<<9<<_N;$;9p9>;C.;t<%'Z; 3; 3;p9>;#;$;5;t;t;t;9>< 3<%'Z<7<0j <;t;$;R2:p9>9p9>;4*:p9>:9>; 3; 3;#;C.;R2;<;$;5;t;t;ٳ;$;<;C.:p9>9p9>9p9>:p9>;#;R2;<;; 3;p9>;R2;C.; 399>9p9>:2;#;C.;C.;C.;#; 3:#:p9>99>9p9>:#;#;4*;#;#:#:4*99>99>9p9>99>;#;C.;R2;R2;4*; 3:p9>99>9p9>9p9>9p9>;C.;;$;$;$; 3;R2; 3:#:#:#:p9>9p9>:p9>;<;9><,$;p9>; 3;;<;#9p9>9p9>;C.;$<%'Z<{{<< a< a;'Z;ٳ;t<_N<<<<_N;t;t<<7;2:#:p9>;4*;p9>;<; 3; 3; 3;<;R2;#;C.;p9>;'Z;;ٳ;ٳ;$;$; 3;R2:p9>; 3;#;#;4*;#:p9>99>; 3;C.;R2;R2;R2;C.:29p9>9p9>:p9>:9>; 3:p9>9p9>9p9>99>99>9p9>9p9>99>:p9>99>9p9>9p9>9p9>9p9>99>9p9>9p9>9p9>99>:#:2:p9>9p9>:#:p9>;#;C.;C.;C.;C.;p9>;;$;$;$;a5;R299>9p9>;#;p9>;;'Z;;t<<7<7<(?< 3;;<:#99>;C.;#;2;9><(?:#99>;R2;$;t9p9>;C.;'Z;9><,$<]t;#;<;5<9p9>9p9>99>:9>;R2;#;2;5;2;;R2:p9>9p9>:#;4*;R2;C.; 399>9p9>9p9>99>; 3;#; 399>;#;p9>;#;$;#;p9>;C.; 3:#9p9>;#;;t;9>;9>;t;5;$;$;;R2:2:2;p9>;ٳ<_N<<< ;<;;;t;$;<; 399>;#;<;ٳ;< < <_N< 3<<<;9>;$;p9>:#99>; 3;R2;;$;ٳ;5;5;t< 3<< ;;2; 3;4*:p9>9p9>:p9>;#;C.;a5;p9>; 3;$;5;t;t;5;$;<;C.; 39p9>9p9>99>:p9>;#;R2; 3;;; 3;<;p9>;C.; 39p9>99>:9>;#;C.;C.;C.;C.;C.;#:#9p9>9p9>99>:p9>:#:2:2:#:#:p9>99>9p9>99>:p9>:p9>:p9>:p9>99>99>99>9p9>9p9>:p9>:p9>:#:p9>:p9>99>9p9>9p9>9p9>:p9>; 3;#;4*;4*;#:#99>9p9>9p9>:4*;#;R2; 3;$;$;$;;<;C.; 3:p9>:p9>:p9>:p9>9p9>99>;4*;<;*;<%'Z<;;<;;$; 3;#; 3;<;ٳ<_N<4*;p9>:#99>;$;t<%'Z<%'Z<(?<7<,$<<;#:#:#;#;a5;$;t;<_N;;t;9>;<<_N;<;9>;t;t;t;t;t;C.:p9>:4*;#;p9>;;;<;p9>;p9>;p9>;p9>;p9>;p9>;<;<; 3; 3;p9>:p9>;#;C.;C.;#:#99>9p9>9p9>99>:p9>; 3; 3; 3:#9p9>99>:#; 3:9>:4*9p9>99>99>9p9>9p9>9p9>99>:#; 3; 3:p9>9p9>9p9>99>; 3;C.;a5; 3;$;$;$; 3;R2; 3;#9p9>9p9>;C.;;ٳ;<<4*<7;$;p9>;R2:#; 3;;<7;; 399>9p9>;R2;t<4*99>:4*;R2;$<_N<7;#;p9>;$;t< <<%'Z<;;$;C.99>9p9>99>:p9>:#; 3;C.;p9>; 3;'Z;;<;C.:p9>9p9>:p9>:9>; 3:#9p9>9p9>99>99>9p9>9p9>9p9>9p9>9p9>9p9>:#;%'Z;R2;p9>;a5;C.;C.;C.;R2;C.;#:p9>:p9>;4*;p9>;;$;$;$;;;;$;'Z;<;R2:#;#;p9>;'Z;$;2;2;;$;$;;ٳ;ٳ;$; 3;C.:#9p9>;#;p9>;;$;$;$;$;$;$;$;ٳ;ٳ;$;#;p9>;%'Z:p9>9p9>9p9>:p9>;C.;p9>;<;<;<;<;<; 3;;;'Z;#; 3;p9>;C.; 399>9p9>:p9>; 3;#;#;#;4*;C.;C.;R2;R2;R2;p9>;R2;C.; 399>9p9>9p9>99>:p9>:p9>:#:#:#; 3;#;4*;#:#9p9>9p9>9p9>9p9>9p9>99>:p9>:#:2:p9>99>9p9>9p9>9p9>9p9>99>99>:4*99>9p9>9p9>9p9>9p9>9p9>9p9>99>99>99>9p9>:p9>;#;4*;#; 3:#:p9>:p9>:p9>:p9>99>99>9p9>:p9>;p9>;$;5;t;2;$; 3;p9>;R2;#; 3:p9>99>99>9p9>;$<:#9p9>;#<7< 3<<'Z<<9<< 3<<;t< ;$;#;#;$;<%'Z<7;5;ٳ;t<#<79p9>99>;#;<;$;t;< < ;<;t;$;<;R2;p9>;;$;5;t:#9p9>9p9>;#;R2;<;;$;#;p9>;R2; 399>9p9>99>:2;#;4*;#:p9>; 3;4*;C.;C.; 3:p9>9p9>99>:p9>:p9>99>9p9>9p9>9p9>99>99>99>9p9>9p9>:p9>;C.;p9>;#;$;$;$; 3;R2; 3:p9>; 399>:#;$< <79p9>;<,$<_N;;R2;#99>; 3;t;C.;9p9>;R2;t;p9>9p9>99>;C.;$< ; 3;R2;;5< <%'Z<(?<%'Z<;t;#;#9p9>9p9>:p9>:p9>; 3;4*;R2;R2;p9>;p9>;C.:29p9>9p9>9p9>9p9>9p9>9p9>:p9>:p9>9p9>:#;R2;<;<;p9>;R2;C.;#;#;#;#;4*;#; 399>;;t< < ;<;t;5;$;; 3;<;<;p9>;R2;#99>; 3;<799>; 3<(?;C.:#9p9>9p9>;R2;5<<7<7<4*<< < ;;t;*;'Z; 3;<;<;p9>;C.; 3:4*9p9>:#;p9>;t;2;t;t;5;2;2;ٳ;$;'Z; 3;p9>;C.;C.;R2;R2;C.; 3:p9>9p9>9p9>;4*; 3; 3;C.;R2;R2;p9>;p9>;<;p9>;R2;#:9>:p9>:#;#;#;#:p9>9p9>99>99>:9>;#;#;#:p9>99>9p9>9p9>99>:#:#:p9>9p9>9p9>:#; 3:9>:p9>99>9p9>9p9>9p9>:p9>99>9p9>;#;R2;p9>;R2;#:9>:p9>9p9>9p9>9p9>99>99>9p9>;#;$;9>< < 3;5;#;R2;#:#:p9>:p9>:p9>:p9>99>9p9><%'Z;C.; 3:#:2:2:p9>9p9>:p9>;#<;p9>;p9>;R2;C.;#;4*;p9>;$< 3;5;ٳ;t;<%'ZI=5'='== 3=<;ٳ;$;$;t< <7<99>:p9>; 3;C.; 3;$;t< <(?<0j <;t;$;R2;#;C.;<;$;2;$:p9>;#;R2;p9>;;$;$;#;R2:9>9p9>:p9>:p9>99>9p9>:p9>; 3;%'Z;C.;C.; 399>9p9>9p9>9p9>99>99>9p9>9p9>9p9>9p9>:9>;C.;R2;p9>;a5;R2;#:#99>9p9>9p9>; 3:p9>:p9>:p9>99>99>9p9>9p9>;4*;$<<7<7<4*<;<;2; 3;R2;4*;p9>;C.;#;#:299>9p9>;#;t;$;$;p9>;C.;#:#9p9>99>;$;4*:#9p9>; 3< 3<=_N==0j =5'=(?== 3I=1ZC== <ڕ<<<<;R2:#9p9>;#;9>< 3;p9>99>;C.;*<,$<~;p9>:p9>99>;#;p9>;.;< ;<;t;ٳ;;C.99>9p9>99>:p9>:p9>:p9>:p9>9p9>99>:p9>99>9p9>; 3;C.;C.;C.;4*;#; 3:#:p9>:#;#;#; 399>;'Z;<%'Z<4*<7<7<0j <_N;2; 3;R2;R2;p9>;R2; 39p9>; 3==_N=<< a< 3<7;9>;$;;;p9>;#9p9>9p9>;p9><< 3= = = 3=_N=~<<۔R;C.:#:#;#;'Z<7;C.;4*;a5;$<(?<;#; 3; 3;#; 3; 3;R2;#;t< <%'Z<7;R2; 3;$;$;$;.;ʰL;$;<;C.:2:p9>:p9>:#:#:p9>9p9>99>:p9>:p9>:p9>:p9>;#:#;R2;;$;$;;p9>;4*:#99>9p9>99>:p9>:p9>9p9>:p9>;;t<<;t;$;p9>;C.; 3:p9>:p9>:p9>:p9>99>9p9><%'Z<~;R2;#; 3; 3:2:p9>9p9>9p9>;<;R2;C.;C.;R2;;5<7<< 3<_NI=8/=æ=Ȳ==~L=Y=7='=!fu=!fu==CT= 3<<{=O==.=K=a5=O=V= o==Ҫ3=m=@===oI=Xç=Nq1=K=K=I=7=(?='=5'=K=`Eq=s#=?=-t=G=z=k=æ=}=^===o=|l&=f=c=dV=dV=[R=K=E.=K=Y=dV=uڕ=/==]=y=`\===3==CT==xA=e=c=dV=e=a5=QA=E.=AN=E.=K=Y=p9>= R==s#=dV=Y=U=U=Y=[R=Xç=T=K=K=K=QA=K=AN=,$=!fu==&=9F=S"O=e=uڕ= v<== = 3= 3=l= ===== v<='=#F== =_N=~= 3==(?=5'=-^<.<<< 3<~<~< 3<< a<̐<<<{;4*;R2; 3;$;'Z;<9p9>99>99>99>99>:p9>:#; 3;#;R2;<;$;;$;;C.9p9>9p9>:4*99>9p9>99>99>99>:4*:p9>:p9>:#:p9>:#;#;C.;p9>;p9>;C.:p9>9p9>9p9>; 3;#;#;#;4*;%'Z;%'Z;#; 3:#:2;#;a5;p9>;p9>;R2;#; 3:p9>99>99>99>:#;;$;$;$;'Z; 3;p9>;a5;C.;4*;R2;#;t< <%'Z<< ;9>;ٳ;#;p9>;p9>; 3<7<7<7<(?< 3;ٳ;; 3;p9>;;ٳ<0j < 3< a<̐<ʰL< a<#<_N<]t;$<%'ZI=-^== 3;#;C.;'Z<7<==U==?=y='Z==g:=T=6 a=9p9>;R2<%'Z<.==Y=r=m==s==p9>=Nq1=)y= 3:#;5I=}\_=V=@=\=uڕ=Nq1=(?= 3;p9><,$<= =6 a=Y=c=U=6 a==_N< a= 3=CT=l<<<:p9>9p9>:#;C.;p9>;<;p9>;R2;#:p9>9p9>9p9>9p9>9p9>9p9>9p9>:#; 3:9>99>; 3; 3;;<7;C.;R2;R2;C.:9>9p9>;4*99>9p9>;<{=S=-^=Nq1=_U7=Xç=@]=3<ٳ<<,$;ٳ;; 3;R2:#;R2<0j <$==3=o=S=b==Y=)y=O;#:4*:p9>;R2< <'Z= Q=T>=|=Ė== R=t\=Nq1='=O;R2;p9>;ٳ6>_N=:==V4=?m=!fu= 3<<]t<=l='=-^=-^;C.;#;#;4*;C.;<;t;t<<(?<,$<;<;5;$;p9>;4*; 3; 3; 3; 3:p9>:p9>; 3;R2;R2;#99>:p9>;59p9>:9>;t;$;; 3;p9>;C.;#; 3;#;C.;p9>;ٳI=_U7=q)w=g:=T=)y=<;5;t<4*<'Z<9>=r===K=m=-t=oI=6 a= 3A>BzW>3v>=t=J|=Im=T=:=B>I=K=T=M=<='=%'Z=-^=U=Y4=J|=<>>3:>>>gO>Cj>)$N> Y4=U7=^=9=3========>>3v>M>g,>>k >7>8>]>A>2m>%'Z> Q=I=T==|>\=l&=<=> Y4>0->M>e>>>@G>z>r>~>_U7>G+u>:q>2J|>*>>o>7>i>!*g>f>q>6>&˿>;p>U>g>4>}>>>w>[a>@>2J|>-]O>(?> v<>7> u> >7>q>V(>l=ĵ>)>(4>3v>@]>X|>v>,>>>2m>yI>{===~r==K==ѹ==Ҫ3=g=}d=J|===:>>!>2>>}d=¶e=`\=CT==uڕ=r=}\_=Ǥ==?=x=Im=Im=/=}\_=t\=mh=uڕ===>I==aj=?m=$7!==l= 3=/= 3=CT=='=+=5'=6 a=:=5'=)y=$7!='=5'=T=dV=f=V4<< 3<<<̐<<{=<<;t;t;< 3<%'Z;;$;$;2;$;5;t;t;t;ٳ;$;'Z;<;p9>; 3;$;t;t;2;;R2;#; 3;#;C.;p9>;<7<7<7<;<7<< ;9>;5;$;$;ٳ;9>< 3;<;t;t;ٳ;$;$;$;5<<̐<̐<. Y4>">">CT>>_N==6=ZC=mh=6=#=<.<&>P>i>cG>L>5W6>*>_=!=^=(?=~<+< 35W6>mh>]>~ĵ>Z>6 a>i=!=$=j<<]t< ;$;4*9p9>:4*;p9><_N#>PQ>f">X|>3v> ,===I= ;t;a599>;C.<_N<=6=b%=> ,>|V>_N=m=6=U=<̐;C.;<;R2;$;9><_N;t;$;p9>;#9p9>9p9>9p9>9p9>; 3;p9>;$;'Z;R2; 399>99>:#; 3; 3:4*;R2;t9p9><=_N=6 a=dV=?=~L=Y='<9><<%'Z;$;<;p9>;#9p9>;p9><%'Z==¶e=Eq=|=B=[Q==dV=$7!<<_N<_N;'Z;p9>;C.:p9>9p9>; 3\>i>X>>}d>.ť>)=g=Q=?m= 3<<7;ʰL;;p9>;C.;C.;$0>>:.>C>X|>14>==}\_=6 a= 3<* u>V&>(Z>>t>1>:>Lz==?=K=rE>?>R>;->rU>3:===M=(?= ?>>}d>lxY>ė>$=Ė=z=-^=l<ڕ<;5;t< _>P= 3;a5;p9>; 3;#;2<#;p9>;R2;R2;R2;<;p9>;4*;#;$= =-^=Fg=H=5'=SV&>Vk>D>+>ʰ==6=T=/y=6 a=K=Y=Y=H=+===6 a=ht=`\=>+|>E>(>}>>>~ĵ>MD>0&> =A=?=w=:=æ=.==?='Z=T)>O>>>w>"@>J|>ߠ?)?>>3>dh>}\_>a>FY>/=>%'Z>,m>5W6>:>8 >5W6>4>MD>>3>?H?K{?!d?2h?#?e+>q>/>>>>sE>b>g,>w>Q >?>*>?>b>l???-{V?1>)h>>%>CT>Im>>> > >a[>7>> >?/6??-o?=2?=@??G>>x>k >r>G>>>~ĵ>>$>>;->>C>ɱ>>Ԩ>??S?"e?#>>>k >>g>XK>T>Rn$>O%\>Kdw>M>P>P>N5#>J8/>Jt>>[a>w>>"@>ZC> >>i>T>5R>=;>ʰ=<=!=>o>#>$>\A>==)w=>{>CT>+>8 >U>kL>rU=.=`\==mh=U=K=U=c=uڕ=~L==x=/==/=x==7=`\=g=駭==%=6 a== 3<<<̐<۔R<#=_N=l===&=(?=)y='=!fu='==+=U=g:=g:=U<۔R< a<<~<~<_N< 3< 3< 3< 3< 3< 3<{{;9>< 3<%'Z<,$;t;t;9>< <7-!A>=:=x=Y=6 a=W===)y=H=dV=3=æ=|>=;>+>.z>2J|>=9>MD>U>FY>Jt>>6==/=U=5'=W=='=H=s#=>\><`>w>>"@>b> >>>>}>>A==3=Y=3:== 3=l= v<=K=="O>5W6>> >!P>>!P>ѹ>K>p>s/>>ʰ==AN=<<<< aFY>x>u?? h?~>@>>>>MD=Y= 3<<_N<7;< 30&>>ݓ>媺>>ܔ>>>C>Y>=9p9>;p9>< 3< 3=_N=U=>;4>{?>>X>pi>>>o==S"O= ;#:#;$ <==T)==L= 3< 3;t9p9>;p9>< :#;<< :p9>99>:p9>99>:p9>;<:#9p9>9p9>:p9>:p9>9p9>;$==Y=v<=====[R=/=>JZ>S^]>Oه>D>-^=|='Z=QA= 3<<;;R2;4*:p9>9p9>:p9>; 3>dz>>6>w>Kdw>f=.=dV=<ʰLR2>? ?!>~r>F>ʰ>I >r=J|=`Eq=<2)`\>}\_>v>H?b?>>CT>X|>"=.=1==+= 3\A>ba>>y? >>Z>CT>FY=B=v<=a5=-^= 3<3>g,> >wJ>j>>Oaj>=o=Gߠ== 3<< a< 3=T>5W6>i>$>Q==Fg=CT=<<7;9>;9>< 3<<;9>;5<%'Z=-^=S"O=a5=_U7=K='=<Lz>#?=U7=ZC==U= v<= 3= 3==+=-^= v<= 3<<+<2=O='=Xç==>\>CT>>Z+>2>o=k==~L=xA= R====xA=b%=`Eq==q1>*>[a>>}??r>>>(Z>w>Y>:> v<>D>d>'>+|>(?>i>0>-l>aq>,>?5?!Wr?$ ?WB?@?&D? h>چ>D>~>#>>s#>v>q>Q> >>>>j?.7?;?WB?a?aD?j?[R??@?"? >>媺>>ݓ>5>7>>dz>>dw>|?~?! `??@?]?m,?t*?rs?k?\9z?@?$?>>*>k>N>>%>N>5>>|>{?̾?(5?D?_X?m§?ug?t &?ZY?Cy?*?&>c>h>H>Fp>>)h>v>#N>ʰL>>N>G?#?'?+^?C?[vK?e?eA?$U(??3>(i>F>>F>F>>Fa>Fa>>j>>> >|>͞>??!ώ?/L?/>9/>>>i>E>5W6>5W6>=Q>@]>@!>A>@>>>;p>:>@>Q>lu>!>0>>>Ė>5W6>&S>=.==o==p#==}d=¶e=¶e==4==g=ç=ڕ>q>,$>:T>DZ>@==f=Nq1=)y== =S=W=)y=6 a=D=I=K=Nq1=U=Wm=Y=dV=/==&=J|=v<== 3<I=-^<<<>>'=!=y==[R=D=1ZC=-^=.=6 a=E=T=g:==`\=.==>0>5D>Nq1>P>>XK>&S=6==}\_=Y=Nq1=T=^d=w=3=.> Y4>5W6>]>w>>9>>ݓ>%>">O>tr?>,$=ٳ=={{=[R=T=_U7=~L=Y=T>0>w>`\>9>4??N?Ud??b>z>@>`> =@=}\_=V4=E=E=V4=1=J|>>g,>?kE?!9k?+?-0E?+?,!?*Ȳ?g?j>}U>Y=Y=Y=5'== Q=r=6 a=b%=>f>~ĵ>Q??-0E?:qm?:چ?2?,!?#7?Ud>(i>j=uڕ=r<<<9<9<=_N=*Ȳ={{=>a>?y? J?)QX?&S?yI?>`>s/>_F=<9<%'Z;$;p9>;R2;<>|B>O>8>[>Ԩ>3>>U>=;$:#9p9>;a5;<5W6>Oaj>L>4f>6=>I=a5= 3< 3:4*; 3<7<=-^=c=<=mh=S"O=(?=_N<;t9p9>:#;$;#;ٳ99>;5<<<<=-^=S"O=T=6 a= 3:p9>9p9>9p9>:#=AN==ѹ>l> ==&=p9>= v<<<4*;p9>:#:p9>9p9>;R2<<>Rn$>v>}\_>s>`>>>=c=[R=l<9;;p9>;C.;4*:9>:p9>;R2;<S>>L>F>S> >en>0j =6=}\_=#F<̐-l>y>D?k ?}?|>> >cR+>+=ߠ=s#=&<<<<7Q>l>1?'?!?]>>>{{>77=!=3=K=CT<̐< 3<<<< a3:>>??T? 9>>/>o >%ci=æ=}\_=B>I=>>D> B>? >M>~ĵ>0=F=c=+= <ڕ<+<I=?>">d>>F>1=>I=uڕ=+= 3 3>+|>0j >7<+<$ >l==s=7=b%=0j ===-^=E.=I=:== 3}d=lxY=V=>`\> >>i>?>*> <=(i==-t=?=G=m=^=-t=)=/= >ʰ>A>>0>1?,!?қ?N>(i>> >>en>E>3v>4>=9>E>D>>>;p>MD>h>Ħ? 9?&?4v?6)h?eA?T{?4v?N>l&>>˾>7>'>D>dh>ɱ>>>>˿>>P?}?0?U?f?m§?m?uDq?g"?SOZ?/?N? ?>>!P> >W>>>>?/?M?5]?Xi?k.?y???v?hi?T?2˜?m?5?G??a>>>4?nQ? -? ??%??@?[V?m?{ ???h?XҪ?<?!ޒ? vx?>>ڕ>L>߯M>ٳ>>7>??? ??,!?EZ?]G?k1?r?q?;C?&?;>Z>@>1>>~c>4>d>V>>|>>v> B>亀?m?A?&D?;ʿ?LT?K͐>>?>>.s>_U7>I>MD>Y;>\>[a>[a>Z>Y>Y>[a>gO>>܅>>7>vK> >>Wm>>>)$N=L===^=.=6=%==T=K=m=T=> >$L>5W6>I>\>h?W>dBd==|V=}\_=Nq1=)y==&=/y=E=K=T=V4=V4=[R=c=p9>=}\_= R==.=[Q= o=Ė=6 a=!fu= Q=O Y4=h=>I=\=s#=K=-^=#F==CT= 3=O=_N=_N= 3=&=E=U=a5==`\=> >s >H> v<==?=1=_U7=M=K=I=I=K=U=mh=CT=}d=xY> _>&S>A>o/>>>>>E>=.=-t==ht=ht=v===.>r>C>v>>>y>a?5? 3>>/>d>P>D=æ===uڕ=}\_=S=^=<>3v>#>?3?D?M?"?-h?5W6?.ԩ?p>>r>5D=U7==}\_=a5=^d=r=3=.>i>o!>r??,3?>}d?E*?K͐?Q#?O4_??@?# >>U>=%==V4=:=)y=0j =M=}\_= a>%'Z>]>n? @?E.==I==<2>l?0?,(?<$?>_]?9?.\? \?5>J=b%)$N>$>.>]>A>>U=t<#;C.; 3;<<$==6> Y4>Fg>l<>tN>d~r>FY>i=z=E<99>;<;$:p9>;#:9>99>; 3;$<%'Z:p9>='=z==?W=<=g=-t=Xç= 99>;a5< 3<Ȳ>3:>WB>ba>`>Oه>1_=ĵ=V=K=~r>ǣ>f>@G>1>U>!=¶e=dV=9< a<%'Z;.;t;<<i>g,>%?8 ? >L>>>T>\=:=a5=I>D>S?&?? >q>>f">-l=2=?=D= <1_>h>>?>{>l>@G>R2>e=^=dV=2J|= Q<<$<9<<>|>>,>Z>>Z'>r==T=!fu= 3<< a<<<< 3">a5>e>> ==_U7==>)$N>,1> &<.<;p9>;$;<7<_N;p9>;'Z;5< <7l&>7>>j>>'>;>!P>S?a???+?K?d3`?pfH?w?u?nI?` b?C?&??>:?N?>&j>P>a>1>?B ?S??!9k?6?Sma?e?r?z?xB(?a?J),?-{V?>]>?W>I>B>>q>e>ѹ>>o2??}?&D?:?S|e?dv?k?j=?+^??>έ?>>>>g>I> >"@>\>>F>BU>6">+>? ?^?,(?;?;a>@>L>K>o>D>2J|>9F>IG>Oaj>MD>M>JL>J8/>J8/>Oه>^>y#]>>r>y>>I>Ԩ>Ӛl>D>0>F=ç='Z=CT= ==Ė=G==.=.=æ=8/=:>> J>2m>@>PQ>X|>Q}=7!=S=uڕ=K=(?===(?=6 a=D=Fg=H=I=Nq1=Xç=c=uڕ==7!==g=8/=4=<='== 3=_N< 3<=_U7=I=*Ȳ=r= 3<<<<~< <==>I=W=t\=K=-^=!fu=r= =_N<ڕ<<<=CT=2J|=K=Xç=w==T>>s>Gߠ>=%=`\=o=\=K=H=D=?m=7=>}d=K=e=W=.=ڕ>_>9T)>k>>,>*>>D>e=.==~L=e=dV=ht=v==v<=m>&˿>PQ>x3$>>>Ӛl?3? 3>>G~>0>PQ> =æ=\==q)w=w===.> >X> >?m???,3?5R?/?қ>>D>6}=t=={{=a5=[R=ht=Q==l&>Fg>>? @?0?=` ?F`?P~?Po?@?%'Z>>V&==x=V4=:=)y=-^=K=ht=Y>ʰ>[a>*?s?-0E?@?K?P?Q2?H?2˜?S>JL=}d=I==o<<<{=6=5'=s#=.>D>g?a? J?/[?6)h?4?.z?"? 3>S=dV<<^>J>ڤ>?o>>Ԩ>>ba=ĵ<,$;4*9p9>; 3;<;<-!A>M>\>Y;>D>#=.=U<{9p9>;R2<4*<̐=!fu=[R=j=Q=|l&=Y=*Ȳ<<%'Z<<<<< 39p9>9p9>9p9>;%'Z; 3;$;;#;C.;t<]t<+==_N<<;;#<='=^d==S==U= v<<̐<4*;C.9p9>;C.;* >%ci>P===b%=:p9>:#:#; 3;p9>;tm>}\_>tN>^>D>"=Q==>}d=o< 3;t;'Z;ٳ;<<7<$= 3=QA=y> Q>A>>y>CT>w>J8/> v<=.=~=>}d= 3<$ >R2>Lz>><>$> >X|>)y=T=b=S"O=!fu=~< a< 3MD>>'Z>#N>k>y>Cj>_N=?=g:=6 a=9=o<<>X|>|>,>t>2J|=bx=S=I=W=O<50>W_>g:>X|=a5= v<:#;#;<;t<;< 3<'Z<<+;4*; 3;5<%'Zr>)> x=V=¶e=^==1=dV=_U7=k=o==|l&=c=T=Fg=H=b%=9=.=!> Y4>i>5>Q >_U7>DZ>;4>5'>)y>}=|=>$> &> <>\A>#>l>f>D>s#>o>> ?'?N>N>S>r>9>u>$>r>Y>T>Y>f">o >w>~ĵ> >:.>}?q?'?!ޒ?!Hn?;?&? >匳>7>3>>>g>q">> >\>>@>>Ԩ?AG??+?@N?ORg?K͐?A? ?+O?m> >l>D>>>=>F>;>>{V>x>W>8>4?q?"?2m?H?V?T0?*_?^N>ĵ>>g>+>>>g>@G>CT>n>g>>>>?5??Ø?,"?:qm?96">uL>> >>`>PQ>a5>s >uڕ>o >i>lu>rU>wB>> >,>^>˜^>֧&>7??>>d>E>'==K=l&>r>=;>> >9>S>b>f>/=>DZ>Z>l{ >^>Im>>\A==4=b=c=V4=b%=|l&==b=b======æ=/>O>S>i> >#=r=]t=I=(?=CT= 3= 3= 3=6=r=r=r=='=-^=D=QA=b%=|l&=====!fu== 3=_N<<;<;<< <(?I=(?=CT= 3<#<̐< a?>#=<=ZC=Im=Y=B>I=+='=== = 3= ==K==7!=æ>ʰ>/>JL>R3>>Y;># =K=F=w=V4=I=Gߠ=H=I=K=V4=w=`\={>+|>Cj>f">>>r>">>w>,m=[Q==uڕ=Wm=K=T=[R=f=?=?>{>FY>>>>B? ?}?p_>4>=>cG> u=`\=}\_=T=B>I==+=JL=[R={{=v<=>Kܔ>>u?>:?P?!?+"?,+?#?>>$s/= =Y=5'== =CT='=E=dV=Y>)>k>??.?"?)`\?+?'?>޿>r=z=r<{<<$<'Z<+<= Q=?m==>Q>>>܄??}?&?(Z>>>{{=)y<<;t;ٳ;2;t<)>U>>3>Eb>>b>tr?>,m=?;599>99>;#;#<7<=!fu=}\_=æ>>=;>f> =Ӛl==-^;$<9p9>;#;'Z;<<7:p9>;C.;$=r=H=i=?=~=a5=@]=<̐9p9>9p9>99>; 3;p9>;t<%'Z< 3<==æ=z=z=}d=3=`Eq=.= 3 J>I>e==æ=3=Y=-^= <̐<~<7<,$<;=J|=ڕ>>2>"==+=q=_U7=5'=r=_N<.<\>4*>8c> |=g==Y=6 a== 3 v<>14>+==K=6<#<̐<$;;$;<;#9p9>:p9>;C.;$<; 3;<;5< <,$<4*<;9>;.;;p9>;R2;#;9>< 3< 3;;ٳ;p9>:p9>9p9>;#; 3;ٳ;<#<<;t;ٳ;ٳ;5;t;t;5;5<.<ht>WB>A>+>>9>Y>\> ===>B>Lz>)>> J>-l><>P>]>i>r>S>CT>~ĵ>WB>;>>}d>L>MD>@!>2>/y>2m>7>AN>N5#>[a>oI>o> R>#>g>">>>fu>>aq>A>A>U>>\H}>U>G+u>A>E>MD>Yw>i>~>>_>R>q>h>W>έ?>I>>o >Cj>&S> v<>3v>@>?>5R>3>5D>;4>D>Q>g,>>>>?>l>>">^d>FY>-l> 3=Ň=}d=T>> &>>$>O> 3> Y4>q>-!A>AN>U>[a>]8>a>lu>n>ʰ=;=:==e=a5=v=)=3=\=\=3==CT==ZC=>\A>V(>>CT>7> ==ht=U=6 a=====(?=0j =-^=)y=+=5'=E=U=mh====Y===(?== =_N;R2;<;$;<,$/=|=ZC==Xç=.=r= = 3= 3= 3=O= 3= ='=T==G=>><`>O%\>I>PQ>)=T)==U=-^=r= Q=CT=r=='=6=[R==>%ۅ>@>`>>2>@G>^>J8/==S=Y=5'== 3=_N= 3=r='=D=c=?>)>Fg>{{>dh>fu>r0>>> >V(= R=?m==_N0->l<>6>>h>>D>^N>cG=i= 3< a< 3f>P>~>9>r>Fa>~ĵ>E=<;; 3;p9>;p9>;R2;p9>;p9>;$< 3<<<='=uڕ=m> >+>3v>3:>&===-^;C.:p9>;<+<<= 3= = 3<۔R< 3;2:#;p9>;$;t;<;9>;99>9p9>:#;#:29p9>;#; 3;5< <7<;<7;;:9>99>9p9>;#;<;$< == 3==== 3=o<<<4*< a;C.;#;C.;p9>;<; 3;'Z;t<9p9>9p9>9p9>99>:#;R2;$< 3<,$<7<,$< 3;t;$;<;R2; 3:#;R2; 3;$;$; 3;R2:29p9>9p9>99>9p9>9p9>:p9>; 3;C.;p9>;p9>;R2;#:#99>:p9>:p9>:p9>99>9p9>;5;2;$; 3;R2;#:p9>:#;R2;$;t< 3< ;;ٳ;#;p9>;<;$;ٳ;5;ٳ;ٳ<9<9< 3=U7=4=3=r=k=/==|V=S=S==\='Z=J|=8/=xY>>Lz=L==r?>j=;=¶e=V==Y=T=b%=}\_=O=1==x=x=o==J|=Ӛl==l&==ѹ==T===dV=K=5'=)y=0j =D=K=T=U=QA=K=T=_U7={{=r=^==^=V==W=H==+=)y== =O=_N= 3=6=r==S=CT=r=!fu=5'=QA=dV=s#=r=dV=[R=T= = 3=_N<#<<; 39p9>99>:9>;R2;;5;<<<:9>9p9>9p9>:#;R2;;ʰL;5;ٳ;ٳ;t;<<< 3:#;C.;;ٳ;9><_N;<< <7;R2;R2;$;<7}d=uڕ=T=5'=9=_N<<<_NFa>>=æ=:=_N<<ʰ>r>> Y4=Ӛl=<̐;<;$<(?9p9>9p9>9p9>9p9>:p9>; 3<0j <=_N=*Ȳ=U=w==6=z=K= <9p9>9p9>;p9><<<= =!fu=(?="V= <99>; 3;C.;R2;C.:p9>9p9>:#; 3:9>:p9>9p9>;#;C.;R2;p9>;;5;9>;t;.;<;#99>:#;t<_N< 3< <%'Z<;9p9>;#;p9>;'Z;;R2;p9>;p9>;R2;R2;;t<<%'Z<7<<;t;9><(?;$;t;t;t;ٳ;$;5;<<%'Z<4*<%'Z<<<,$<%'Z<_N;t9p9>:p9>;4*;R2;C.;4*;C.;<;2;9>;<;t;$;;p9>;R2;#:p9>:#;R2;<; 3;p9>;#99>9p9>9p9>9p9>99>:2;#;C.;%'Z; 39p9>;p9>;R2;C.; 3:p9>:p9>:p9>;#;a5;'Z;ٳ;t;t;$;;p9>;C.;C.;C.;R2;R2;R2;p9><%'Z<< ;;t;t;5;t< <7<<< 3<<<<.< a<<Ȳ<<<;t<_N< < < 3;<<<4*;p9>;<;$;t<#<(?<7;C.;#:p9>9p9>99>; 3;R2; 3;$;5;t;t;t;ٳ;C.;C.;C.;R2;p9>;p9>;R2;#:p9>9p9>:#;4*;R2;p9>;R2;R2;C.;#;#;#;4*;R2;p9>;R2;#:p9>9p9>:p9>:9>:9>:#:#; 3;; 3;p9>;R2;R2;p9>;R2;#:#9p9>9p9>:#;#;#; 3:2;C.;<<0j <b;t;$;#;<;R2;#:#99>99>;4*;<;;$;;$;t<<<<9p9>9p9>9p9>:p9>;R2;$<_N<(?<7<7:p9>:p9>; 3;R2;$<;#:p9>:p9>; 3;<;t<7< 3<.=_N=r=-^=D=D=*Ȳ= 3<_N<;2;;p9>;R2;#99>:#;<I=Fg=9F=99>9p9>9p9>;p9>< 3<<Ȳ<:p9>;C.; 3;$;5;ʰL;<:p9>9p9>; 3;C.;C.; 399>;C.;'Z;2;2;;C.:#:p9>99>99>;#;;t< < ;t;#;#9p9>:p9>:#; 3:2:p9>99>; 3; 3;t<<;9>;$;R2:#99>:p9>:p9>9p9>9p9>:2;#;#:p9>9p9>9p9>;4*;$;t;t;ٳ;;R2; 3; 3;4*;#:299>9p9>99>:p9>:#:#;#;p9>; 3;p9>;4*:#:p9>; 3;C.;#:9>9p9>99>:p9>9p9>99>:p9>:p9>9p9>9p9>:p9>:#:9>:9>:#9p9>;#;#:#9p9>9p9>:p9>;#;R2;p9>;<;<;p9>;C.:9>:p9>:p9>99>99>99>; 3;.;$;<;R2;4*;4*;R2;<;$;5;5;5;2;'Z;<;<;;;p9>;R2;a5;;$<%'Z< 3;t;$;;<; 3;$;t< 3< 3< < ;9>;t;t< <;;t;<<%'Z<<<<<<<%'Z<7;<_N< < <<(?<7;p9>;;$;;2;ٳ;5;t< <(?<7;p9>;p9>;p9>;p9>;#;ٳ;<<%'Z<4*<4*<,$<%'Z;t;t;t;2;#;R2; 3:p9>:#:2; 3; 3:9>; 3;C.;p9>;;$;ٳ;t;t;t;5;p9>;p9>;p9>;p9>;R2; 3:p9>9p9>9p9>:#;#;R2;p9>;<; 3;<;p9>:p9>:p9>:#:#:#:p9>99>99>:#; 3; 3:#:p9>9p9>9p9>9p9>9p9>9p9>9p9>:9>:p9>9p9>:p9>;p9>;C.:#:#;#;C.;#:#:p9>; 3;R2;$; 3;4*99>; 3;p9>;$;$;$;'Z;#;$;$;5;;C.:p9>:p9>;p9>;ٳ<_N<<(?<(?<%'Z<;;$;p9>; 39p9>;C.;$<<7;<;9><7:p9>; 3;<7;#;p9>;'Z;$;$;p9>99>9p9>9p9>9p9>9p9>; 3;#:#; 3;R2;p9>;C.:p9>;#;p9>;<;R2:#:p9>;C.;R2;%'Z99>99>:p9>9p9>9p9>99>:p9>99>9p9>;#; 3:p9>9p9>9p9>:p9>:#; 3;#; 3:#99>9p9>9p9>99>99>9p9>9p9>:p9>; 3;;p9>;C.:#99>99>:#;#;4*;C.;C.;#:#99>99>:p9>;#;C.;C.;C.;R2;p9>;;ٳ;$;p9>;4*:#:p9>:#;#;4*;C.;4*;#; 3:p9>:#; 3;R2;<;;'Z;$;2;5;t;*;;R2; 399>99>:#; 3; 3; 3:2:#:p9>:#;#;p9>;#;$;ٳ;5;t;t;ٳ;$; 3;C.:#9p9>9p9>9p9>99>99>99>99>99>:p9>;#;R2; 3;$;$;2;ٳ;5;;<;R2; 399>9p9>99>:p9>;#;R2;p9>; 3;;;;C.;4*; 399>9p9>:p9>; 3;%'Z;C.;C.;C.:#:p9>9p9>9p9>:p9>:p9>:#9p9>9p9>9p9>9p9>:p9>;%'Z;C.; 39p9>99>;C.; 3;#;p9>;4*:4*:#;p9>;$;.;$;<;4*99>:#;p9>;$;2;$;;C.:p9>99>;C.; 3;'Z;;p9>;#9p9>:p9>;#;C.;#:9>9p9>9p9>9p9>9p9>9p9>:p9>:p9>:p9>99>9p9>9p9>;#:#99>9p9>9p9>99>9p9>9p9>9p9>9p9>; 3;C.;R2;R2;C.;C.;4*;a5;C.:299>9p9>9p9>99>9p9>9p9>:p9>;C.;p9>; 3; 3; 3;<;<;p9>;C.:9>99>9p9>:2;C.;<;;;#;; 3;R2;#99>9p9>:#;4*;R2;p9>;<;<;p9>;p9>;#:p9>9p9>:p9>:9>;#;C.;4*;4*;#:#99>9p9>99>:p9>:#:p9>9p9>9p9>:p9>99>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>99>; 3;#:#9p9>99>;C.; 3;#;<;C.9p9>:#;p9>;$;5;$; 3:9>:p9>;p9>;$;5;ٳ;;#9p9>;#;<;'Z;'Z;p9>:#9p9>:9>;4*;C.:#king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama8000/0000755000000000000000000000000011744306102023364 5ustar rootrootking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama8000/ileval.ndft0000644000000000000000000037517711744305674025556 0ustar rootrootIle/Val (no preP), 70%, B<3044C4C4 8WB8WB8WB8WB8,48'7B7B7B7,4646464647,47'747B7B7B7B7B7B7B7B7B7B8'8'8'8.8.8.8.8.8.8.8.8'8'8'7B7B7B7B7B7B7B7'7,4646464646464646464646464646464646464646464646464646464646464646464647,47'747B7B7B7B7B7B7B7B7B7B8'8.8WB8WB8WB8WB8lH849 +9WB9090<9H:.:5h7:R@:uK:t,:2:\5:|::<>:D?:@>:0<:8:3:.:PN:cE:=x::80:)90<9`)9 ,8@18.8WB8WB8WB8A;8.7B7B7B7'64646464647,47,4747B7B7B7B7B7B7B7B7B8'8'8'8.8.8A;8A;8A;8A;8A;8A;8A;8A;8A;8.8.8'8'7B7B7B7B7B7B7'7,46464646464646464646464647,47,47'7'7'747474747'7'7'7,47,47,47,464646464646464647,47,47'7B7B7B7B7B7B7B7B7B7B7B8'8.8A;8WB8WB8WB8WB8.8E9A;9'9`69PA: +:&3:J>:pI:.:6:׬B:8J;b);4/;'3;.5;+4;"B1;,:M:E:::0:}M:R@:-X5:,9@>9`)9 +8@K8'8WB8WB8WB8,48'7B7B7B7,464646464647,47,4747B7B7B7B7B7B7B7B7B8'8'8.8.8A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8,48.8'8'7B7B7B7B7B7B747,47,4646464647,47,47'747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B74747'7'7'7'7'7'7'747B7B7B7B7B7B7B7B7B7B7B7B8'8'8.8A;8WB8WB8WB8lH889 ,9w@K909;9pF:-:26:XXB:\(:3:׬B;(;&3;E2<;bE;sJ;X(;);3);zL;izG;PH?;26;):hD:4:l+:cE:47:,9=9'9lH8;8lH8WB8WB8A;8.7B7B7B747,4646464646464647,4747B7B7B7B7B7B7B7B8'8'8.8.8A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8,48.8'8'7B7B7B7B7B7B7B74747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8'8'8'8'8.8A;8WB8WB8WB8WB8+8E9L@>9*989PA: h*:!@1:B;:o0I:.:::8J;#2;PH?;uK;+; /;u3;5; 6;5;#3; 0;I,;{M;P@;!1:4I:8:t,:aE:.5: *9:949L@>848WB8WB8WB8,48'7B7B7B747,46464646464646464647,47'7B7B7B7B7B7B7B7B8'8'8.8,48A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8,48.8'8'7B7B7B7B7B7B7B7B7B7B7B7B7B8'8'8'8'8'8'8'8'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8'8'8'8'8.8.8.8A;8WB8WB8WB8WB8lH849`)9aE909=9K:.:68:[C:):L3:ݸD;+;D<;sJ; ,;2;8;?;D;H;]I;H;D;?;7;k1;j*;blE;'3:4I:6: ):R@:%H29G9B9/9/8.8WB8WB8WB8.8'7B7B7B7B7'7,4646464646464646464646464646464647,47'7B7B7B7B7B7B7B7B8'8'8.8A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8,48.8'8'7B7B7B7B7B7B8'8'8.8.8.8,48A;8A;8A;8A;8A;8,48.8.8'8'8'8'8'7B7B7B7B7B7B7B7B7B8'8'8'8'8'8'8.8.8.8.8A;8A;8WB8WB8WB8WB8WB8'8;9!@19'949PA: +:)P4:J>:pI:/:;:L;/\5;fF;+;2;:;1B;K< V< 0<'L3<+<&3<<b);|G;=;#3;+;^dD;1:E:H2:yL:D0<:.:,9=9'9'8'8WB8WB8A;8'7B7B7B7B7B7B747'7'7'7,47,47,47,47,47,4646464646464646464647,47'7B7B7B7B7B7B7B8'8'8.8.8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8lH8lH8lH8lH8lH8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8,48.8'8'8'8'8'8.8,48A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8A;8.8.8.8.8'8'8'8'8'8'8'8.8.8.8.8.8,48A;8A;8A;8A;8WB8WB8WB8WB8WB8WB8lH849'9L@>9.9:9D:-:5h7:[C:(:H2:۴C; *;B;;}LM;..;7;A;DL<Q-:0/:hxG:5h7:'39L9 99w@K8E8lH8WB8WB8,48'8'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B747'7,47,46464646464647,47'7B7B7B7B7B7B7B8'8'8.8A;8A;8WB8WB8WB8WB8WB8WB8WB8lH8'8.8@1848;8;8;848@18.8'8lH8WB8WB8WB8WB8WB8WB8WB8WB8A;8A;8.8.8,48A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8A;8A;8A;8A;8A;8A;8A;8A;8A;8A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8+8;9'9L@>9(949@>9L:.:< 9:iG:t,:\5:G;/;Q@;*;m1;ı<;|G<,:809 F979\`C8;8WB8WB8WB8A;8.8'8'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B747,47,46464646464647,47'7B7B7B7B7B7B8'8.8.8A;8A;8WB8WB8WB8WB8WB8WB8WB8lH8.848;8H9'9 ,9/9/9/9/9 +9'8;8;8.8'8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8'8.8.8@18.8.8'8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8@18@>9/9w@K9.989@>9 F:x-:'3:H8=:pI:.:8:4I;!@1;VA;*;3;̖>;mL<808lH8WB8WB8WB8A;8A;8.8.8'8'8'8'8'8'8'8'8'7B7B7B7B7B7B7B7B7B7B7'7,4646464646464646464647,4747B7B7B7B7B8'8.8.8A;8WB8WB8WB8WB8WB8WB8WB8WB8lH8.888E9 +91`69L@>9lH9|M9'9'9'9'9|M9g F9L@>9/9'8;848+8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8.8;8E9'9 ,9/9!@19/9/9 +8@K8;8@18+8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8'8@18;9 +9L@>9*949@>9E: h*:.:)P4:=x::[C:PN:@1:<:@K;%H2;WB;*;3;F?;N<$=S`=Xc=L@>=3IW=m<=D<5q;1;Z(;E<; *:PA:1:1:uK:H8=:1:'9;9'9'8+8WB8WB8WB8WB8WB8WB8A;8A;8A;8A;8A;8A;8,48.8.8.8.8'8'8'7B7B7B7B7B7B7B747'7,4646464647,47,47'7B7B7B7B7B8'8'8.8A;8WB8WB8WB8WB8WB8WB8WB8lH8'8.8;9'9/9L@>9w@K9*9/9@194989p99p99p994929/9`)9w@K9L@>9 ,8H8;8.8'8lH8WB8WB8WB8WB8lH8lH8.8;8@K9/9L@>9w@K9'9 ,9.909090/9.9'9w@K9L@>9/8@K8;848@18.8+8'8'8lH8lH8lH8lH8'8+8.8@1848;8H9 ,9L@>9'909;9ٰB: *:.:,4:< 9:N?:dpF:|M:.:5:ݸD;\(;47;bE;j*;J3;?;wM<$2<[<.<=p=I}=|m=mm=@==[=lH=:Y= k<|<+9w@K9*90959:9=9?9B9ٰB9ٰB9ٰB9ٰB9PA9?90<9:9P490/9'9WB9F=9/9'8@>8;8;8;8;8H9 ,9< 99\`C9`)90949:90<9@>9?9PA9PA9PA9?9=9:94909`)9w@K9L@>9< 99/9.9 +9'9'8@K8@K9'9'9 ,9/91`69L@>9WB9'9.979@>9G:x-:"2::9:PH?:hxG:|M:l+:/:P4:<>:8J;4/;E<;pI;,;3;̖>;L< 19WB9'9.929p99=9PA9D9J:): h*:,:,:,:,:p+: h*:)9K9D9B9@>9:949090/9p+9'9'9|M9'9'9.90949:9@>9ٰB9J:`): +:x-:-:-:-:x-: ,: +:)9H9ٰB9?9;9p9939090/9.9`)9(9'9'9`)9p+9.9090949p990<9B:':(-:*4:A;:_D:yL:p+:0:P4:(;:۴C:9>">f1>=\==&w=8^=<<0j909lH9/8E888.8'8lH8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8A;8,48.8.8'8'8'8'8'8'8'8'8.8.8.8,48A;8WB8WB8WB8WB8WB8lH848@K9/9Q@9'9.92979:9@>9PA9E9L: +:x-:.:/:!@1:"2:'3:)P4:'3:&3:"2:1:80:.:.:x-: +:X(9H9D9ٰB9B9B9B9B9B9ٰB9D9 F:X(: +:(-:/:'3:-X5:5h7::9::9::9::9:68:47:-X5:*4:"2:0/:-:p+:X(9 F9ٰB9B9PA9?9?9?9?9?9PA9B9ٰB9D9 F:X(:,:.:,4:A;:cE:}M:,.:3:|::۴C:8J; );!1;?&:;aE;(;z-;#3;<;E<<% >W>d>> es==ľ= =L=8;3;*;+;] C;"B1:J:(;:0:}M:XXB:68:.9 F9;90/9w@K9< 99 +8H8;848.8+8lH8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8A;8A;8,48,48,48A;8A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8'8;9 ,9Q@9p+949;9PA9E9L: *:,:(-:.:!@1:*4:06:88::9:>::B;:E<:F=:F=:E<:A;:@(;:>::=x::< 9::9:68:06:,4:*4:'3:&3:'3:)P4:*4:,4:,4:,4:,4:06:68:< 9:F=:PH?:[C:g F:iG:k(H:k(H:hxG:g F:cE:]D:WB:R@:N?:F=:>::68:,4:!@1:0/:.:.:.:.:.:.:.:.:0/:80:1:&3:,4:68:E<:aE:|M:.:P4:ɐ=:|G;X(;/;6j8;PH?;l*H;9*;|-;!3;:;ݸD<'</<:9d>"L>+<>+҄>#Z>%}>=*=a0=lh=8X=z<r<91`69 ,8@K8;888.8+8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8+8;9.9w@K909:9B:X(:-:80:*4:47::9:>::E<:L@>:Q@:TPA:`hD:cE:g F:iG:k(H:k(H:k(H:k(H:iG:iG:hxG:iG:iG:k(H:iG:iG:iG:hxG:iG:lH:mH:pI:uK:yL:|M:|M:yL:yL:yL:|M:}M:):,:(-:0/:4/:4/:/:.:t,:+:d*:):X(:}M:yL:pI:iG:`hD:R@:J>:E<:D0<:E<:E<:H8=:J>:J>:M?:PH?:R@:TPA:[C:cE:mH:PN:,.:P4:@>:J; *;*R4;B;;_fD;zL;+; /;4;;;D;NM<U.<78%>&;>6N>=:>:ʼn>.R%>> =(==={h=[S=?qz=&?s= <<>9!@19 +8H8;8@18+8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8lH8+8@18;9.9aE909:9ٰB: +:/:47:E<:TPA:g F:o0I:uK:|M:PN:':): ):*:+:p+:p+:+:+:+:+:p+:,:t,: ,:|-:,.:0/:4/:0:@1:H2:3:X5:8:9:|::;:,;:;:|::$::x::(;:Ä<:<>:Ϝ?:PA:ըA:PA:<>:,;:9:7:5:P4:L3:3:D2:0:.:t,: ):}M:yL:uK:w@K:yL:|M:}M:T':(: ):d*:p+:$-:.:2:`6:PA:;F<(</<8C8h>>.M>AFs>M'>Q >Iu>9QP>%>>^=={2====<=w5=F=Ln<ֿ<:B:߼D:|G:8J:HM;(; *;"-;/;80;1;1;:0;/;/;/;0;!@1;"2;!1;80;~.; j*;\(:LM:K:4I:|G:F:߼D:B:@>:,;:8:4:H2:1:0:0:<1:1:D2:H2:L3:4:6:8:;:>:E:HM;.;=x:;_fD;N;,;60;T4;&:;A;I< *<"y}>*>A{>V>f.f>l>hMG>Z3>FQ>0>>>U>u>;> >=i.=!=q=| =1<9,49'8;8.8lH8WB8WB8WB8WB8WB8WB8WB8WB8lH8lH8.848;8@K9 +9/9L@>9w@K9*949@>9 F:-:,4:H8=:iG:(:/:P4:|::PA:߼D:G:H:,H:,H:|G:G:xG:E:E:D:۴C:\C:B:۴C:E:|G:4I:L;T';^);r,;4/;'3;6j8;?&:;J>;S@;`D;izG;nI;qJ;rJ;qJ;qJ;qJ;s8J;tK;uK;v>K;t:J;pI;j&G;blE;SN@;J<>;?:;;9;1 6;'L3;0;&-; *;X(:@K:,H:߼D:ըA:<>:;:;:;:0<:<>:PA:۴C:E:(H:8J:N; *;!@1;=x:;] C;N;,;1; 6;Ƿ=;ߑD;L<߬<*dG>>-5>F <>as>{[>E>>>d>oWA>Wm>A>2nN>-R>/>5>8;(>6ո>/˾>$(>M>=ϴo==6x<<<<9/<;Ѡ@;3;C+;fF;< 9;d*:߼D:\5:.:w@K:R@:68:/:,9H9B9=9 99390/9'9\`C9< 99`)8;8@18'8lH8WB8WB8WB8WB8lH8'8.8;8H9 ,91`69L@>9w@K9'9.9P49;9ٰB: *:/::9:TPA:yL:.:4:@>:,H;(;,;:0;#2;'L3;'L3;#2;!@1;0;/;.;v,; j*;);\(;(; *;-; 1;,V5;;9;A;;OF?;[C;izG;uK;3);*;,;O-;.;0;>1;1;1;1;1;2;2;3;3;2;2;0;2/;z-;+;*;);{M;pI;fF;XB;K>;?&:;2 6;"2;&-; ):LM:K:4I:,H:H:I:8J:DL;(;);.;#2;47;D<;^D;yDL;+;0;6;=;CE<<<.ŵq>(>-=>Je>j >8>**>>!>>>>&h>k(>W8>M(>O>Z>g{>n >m7>aD>M>6>d>=_==&J31;I;S;;0;^);VA;*R4:M:D?:3:t,:o0I:N?:47:/:,9@K9ٰB9@>9:95909`)9lH9< 99'8;8@18'8lH8lH8lH8'8.8;8H9 ,9F=9WB9'9.90979;9PA9J:x-:&3:@(;:eF:\(:1:;:H;*;)4;?|:;P@;^dD;fF;gvG;fF;cE;] C;VTA;P@;K>;D<;?&:;;Z\C;j&G;{HM;);+;-;0;2;4; 6;E8;~;;=;>>;?;J@;J@;J@;Ѡ@;N@;A;؃B;B;B;#@;k>;ı<;9;`6;{4;2; 0;.;K,;=*;PN;lH;[^C;I=;<:;-X5; >1;-; *;`);^););+;/;#2;37;?|:;PH?;erF;zFL;j*;,.;#3;:;C;@K<,<,5Ju>,>J`>lp>gz>>> #>\F>ژ>ʐ>~>7_>ל>o>pt!>m9>zD>w>4>r >>iw>{=>Y>9I>>==Z= <<<99<;A;4;,;nI;?:;,:|G:x::1:(:g F:E<:,4:.:,9L9ٰB9?9;97909`)9WB9,49'8;8@18.8.8.848;9'9,49Q@9'9.939 99=9PA9 F: +:.:-X5:J>:lH:+:3:D?:HM;"2;E<;fF;~N;h*;,;-;z-;-;K,;+;*;);';xBL;oI;j&G;izG;j&G;qJ;(;n+;(-;1;4;7;Ä<;q?;مB;nE;H;J;sM<<Ũ<<^)<<<3)<J<*< *< +< '< )<B;K;H;E;B;˔>;U;;7;4;1;(-;+;';jH;XXB;G=;=x:;06;'L3;!@1;!@1;"2;*4;6j8;A*;;P@;fF;yDL;;*;O-;1; 6;>;F<(<0<@~;D>'F>DƼ>jϘ>>>Ty>܈> >>{o>Q*> >կ>t>œ>s>>>G>NB>/>>6m>R0>*5>z>R-X>/>$=!= =(H<^9/8@K8;8;8;8;8H9 ,9F=9w@K9+909p99=9PA9 F: *:-:!@1:88:PH?:o0I:t,:3:TA;X(;1`6;YB;PN;K,;c0;#3;6;8;n8;7;6;4;J3;@1;/;-;,;+;+;,;z-;e0;T4;I9;̖>;ݸD;H;#M<#<<E;p9;4;0;,;);pI;`D;O?;A;;< 9;57;47;8n8;>:;J<>;ZC;m,H;(;+;/;3;8;?;G<#<#ڲ>>7>Y_>>>ɓ>#>C?49? ? S?9*?K`>p>J>n>{>>R>>>Y>z>Ϟ>>9t>y>J6>1>c><9>=ī=V~==x:<3<1;*;`D;26;):E:8:/:T':g F:I=:47:1:-: *9 F9ٰB9@>9:939.9w@K9L@>9/9'8H8H9'9/9L@>9w@K9.9P49:9?9D:):x-:/:,4:=x::TPA:s8J:,:P4:ըA;X(;3d7;bE;*;/;5;ï<;A;AE;G;*H;G;AE;B;͘?;;;j8;X5;3;o2;2;u3;5;S;;A;|G<-(<,<<1;[^C;mH;(;,;/;y3;9;@;G<< 1 n2>$}J>C>iWW>ϗ>>2>?? ?U?@?%v?w'? ܹ?X>v8>Н>>>9}>L>{>_>o>^>غZ>[->>>j>A>=c=1=E< <9w@K9.949;9PA9 F: h*:.:"2:5h7:F=:`hD:yL:$-:L3:D?:M;,V5;]bC;*;0;8;{A;YI<s< <E<</< <#;M;H;C;Ϝ?;<;:;:; <;{A;G<Z(<<*4<#<)<%<<;D<;D<;J>;TA;hxG;}LM;+;.;3;8;̖>;F<(<.<8C8>"">B>l>f>ͤ>)>L?I?J}??!?$?"x?ȫ??>>ؚ>:x>^>1>V>1>->B>l>>A >>ۺ>fl6>>B>x= =O=@[<<9 99@19-9w@K9L@>9A;9,49< 99L@>9w@K9p+939:9PA9 F: +:.:)P4::9:L@>:cE:{HM:$-:3:8=:8J;0;PH?;(; /;=7;مB;%N<*.<-X5;E<;F4<;N?;[C;m,H;3);K,;1;5;Ć<;\C;J< <&u3>7x>`"d>>>0>?Y?7?n?'?-?/]?+"|?!Q?c?[>>> > L>nl>S>v>,>>Թ>>->_>%>XY>3>=9==2'<<(i9L@>9L@>9w@K9(909 99?9pF: h*:.:)P4::9:N?:g F:|M:t,:H2:(;:|G; +;>$:;p2I;-;5;@;M<I<= <]L)=;ϙ=4`=)= === = =mm==om= = l+=<;YB;nI;`);O-;o2;7;>>;E;NM< >&D>I>x\>!X>Һ>??6??(V?1e@?6HJ?6\?1?&!?>?>>}>>>>>>`>Ƹ>>>>i>f&>C,>$>z=X}=y=j<:g F:|M:t,:@1:8:ݸD;';(3;XXB;*;1;<;H<9<:9d<,<#Y:;< 9;=x:;B;;R@;j|G;);O-;2;A8;Ϝ?;IF<(<<3N<^#<+5>1Mf>X#>Wm>5E>ۤ>? ??%q.?0:?8(?<?;0]?4?'C?'?'c>>sK>!>">@Z>4>>W>c>>mZ>>j.W>I>-F>su= ==S3`=.i<®:8J;&-;?|:;oI;-;/5;A<(<(3;<:;1`6;,V5;/\5;;9;I>;dF;N;K,;1;7;m?;F<'<<2b6<]w<<۹=o=37={h=0w> >x><>fn>\>.`>e????+\?7-f?>Z?@y?=?4I?%?Z?>_r>>l>j>IJ>>>>>_>u>eD>IG>/Ie>^>(=b==._;"B1:M:۴C:8:<1:):mH:R@:< 9:*4:0/:x-:`)9 F9B9@>9:9490/9`)9|M9w@K9w@K9'9.939;9B:):.:)P4:< 9:R@:mH:X(:.:3:(;:E;X(;'3;R@;(;60;v9;F<<;;:9;'L3;0;/;0;*4;=:;TPA;s8J;+;0;5;Ƿ=;D;M<5<->$>GU%>u->>A >?݂??#(?1 ?}>Op>u>8`>>u>t>yXt>|C>yg<>nq>Zc>D2>-e>^>Ũ=P=j=PH?=f <:4:/:T':hxG:M?:88:%H2:.:,:X(9E9PA9=9p99@19.9'9w@K9w@K9w@K9'90/949=9D: +:0/:06:F=:cE:w@K:+:1:6:D?:4I;p+;;9;dF;j*;2;a=;J<0/ >+>Q>>}>l>:a?4#??(;?57?=ǂ?B+?A?; ?,2B?? C>6?>Р>ƕ>>i>\>Y?b>Z*>ZC>V]>L .><>*:>Ķ>}==?=d='\S<<޳9:94909*9'9w@K9lH9w@K9'90979@>9 F:,:1:88:N?:hxG:}M:|-:H2: 9:۴C:DL;/;A;;nI;I,;%4;?;M<ұ9<-;H;a=;3;I,;qJ;O?;2 6;,.;\(:DL:8J:8J:HM; );:0;< 9;WB;zL;,;1;7;Κ?;MG<<#o2>2>Y>q>4>E>+? ?Sm?+D?6?)?5?&W??Y>>6>+>o>Sh>F04>A+>?J>>b>99>1>$>e>V ===qՊ=6X=.i<{|<,;uK;O-;5;{A<'<"z:=,vu=I=h<<>5>^B>z>Ge>v>x? ??)f ?3?8 ?:4?8'?/y? %U?(>t>ޜ>>\>Z&>?>1>+,>)u>&S>">>t>=ޟd=B=|m=B{=<<9r<| <*<3);1B;6;|-;~NM;S@;0^6;`):xG:;:3:-:|M:cE:F=:06:80:x-:)9E9PA9=9p9929.9'9lH9L@>9L@>9L@>9WB9'90/989?9J:-:&3:< 9:R@:mH:):/:P4:<:G;(;'L3;O?;{M;-;5;A<(<"2;'L3;):@K:G:۴C:@:>:PA:߼D:J;\(;!@1;?&:;aE;-(;-;H2;I9;-B;L<p>>7>_>>fI>H>I>>>qK">G>-dM>)>->>> >=m=ۉC= ==L~= .<׊<4x< 9< 99689F=9L@>9w@K9.9`69@>9J:x-:&3:< 9:R@:mH:\(:/:P4:<:G;(;(N3;PH?;~NM;(-;5;A<'< >1< g=k<\<1~<==?[=q4I=]=)=Ӗ='=R=d=x={=׉R=6=)=~g======-=i1=l=r=A;=X<< ;"B1;Z(:4I:߼D:PA:ň<:;:Ä<:<>:C:,H;(;4/;Pv>7>_l>F>y>R'>oL? 6?-? S?*B?.?/(#?+0?"V?\C?>g>e>>^>6>P>ϔ>>>E_=;=n7=Rm==~i=U<=)%4=f<Ș<9<Z(;/B; 6;(-;}LM;RL@;.5;`):|G:,;:H2:$-:yL:cE:F=:06:/:,9K9B9=9p99@19.9'9Q@9F=9/9 ,9 ,9/9A;9\`C9*949@>9 F:x-:"2::9:Q@:mH:':.:L3:Ä<:xG;Z(;'3;PH?;}LM;&-;5;L@;sM<̰1;7;Ӥ@;K<>7>^L>>>S>?Ƙ?C?>><>Ux>M4>'`[>J===߃=p={===T=Z<=1j=E+9,49 ,9'8@K8@K9'9/9L@>9'9@19;9D:,:80:68:L@>:g F:}M:-:H2:|::E;(;$2;N?;xL;-;)4;m?;K<.=j=ck==>y=͢=P2=3=N=0==ˎ=N=wO=G=M==ө=e=E=z=dZ=5= <Ä<<4j:(;:8:8:8:8:(;:<>:ݸD:J; );#2;@(;;blE;(;"-;2;G9;ZB;PN<̰T~>7P>^#>> >>K? ? ?F?H?!q?!J?,n??o>>J>>n?><>>0=ݵ===0=-==z=Yb=5ӷ=<(H<'<+<_<2 6<,;{A;6;(-;~NM;RL@;,V5;(:xG:(;:H2:t,:yL:cE:F=:06:/:,9 F9?9 9909`)9w@K9L@>9/9'8B8;8;8;8;9'91`69w@K909:9ٰB: *:.:.5:E<:]D:uK:+:@1:8:`C:M;!@1;G=;qJ;I,;3;=;H<7<;3ݖ>6j8>\>q>i>Ѥ>봴>?@?s?`?+?S?ZZ>>;>Zlc>.U>q==7=A===uK=dJ=N=4=O9*979?9L:-:'3::9:Q@:mH:(:/:X5:PA:@K;/;A;;kH;+;1;|:;GF< <3Ϸ:߼D:8J;);%H2;B;;ftF; );|-;3;":;-B;iK<<3>2^>W> >>>X>g?? NP???o? Y?->>>->}#>J@F>">==N=~w=iD=Z+=L־=>:=-5==(<959.9g F91`69'8;848.8'8lH8lH8'8.848H9,49|M9@190<9E:,:/:26:F=:aE:yL:$-:3:<:4I;v,;$:;(:PA:\5:D2:0:/:0:2:3:6:;:׬B:,H;(;0;>$:;_D;(;-;3;O:;A;I< ի<&4L>.bE>P>z+l>b>>VE>>?N? 0? A? ?>x>#>C>K>o!><ł>3==5=nI=`=H]=:9=.=#N==/(<<2w<9.9p99PA:':-:&3::9:PH?:mH: ):1:::G; );16;XXB;Z(;.;5;N@<'<$$:=LQ== k==%޳=<*=X=x=\ =_=i==E=Y=~=ی=O=v=8=~=.h=0=8=V=(N3=<<*4>+*>J>n>>>>އ4>폸>G?"??[y?>u>ݧx>u>'>_4>0>ϔ=ᢵ=W.=iI=C=.D="W=v=1='<<{:68:80:,9 F9@>949`)9L@>9'8;8.8lH8WB8WB8WB8WB8WB8WB8WB8lH8.8;9/9|M9090<9D: +:.:,4:@(;:[C:yL:,.:X5:۴C;T';$2;L>;tK;v,;#3;>;J< >==,u=u=A=TU=.ŵ=P=%o= i1=/V=E\=`$=~==l=v==#=‚;=}m=А=R=XB=Ϸ===*=_$=._=h<·>)d\>D|>dn>,q>>E>ЦP>Q>>e1?N> >:>Z>ͪc>>s>Q>'D#> =Ė\=QZ=Ps@=.5=0= M= 9`)959?9 F:,:/:47:J>:iG:d*:H2:ɐ=:8J;,.;?&:;izG;+;1;;;|G<-"h>> >`=t=Q,=Hm=j=?=*\=&3=. =>=Ta=o0I=P ==3q=Cd=QX=? =,=1=o=0= = =4==i$G=5= "JL>(N3>AFs>]zs>~P>@>>qs>i>Z>^>c>0>*O>=S>z>W>y4>Gȵ>!>==y$ =>z= yQ={= <<,H<<:O:={ =d=>>c>t> B====N=Qo=9E8=4===O?=f=AW=k=O=1S=Ͷ=z=%^=ք===!=p=u==pi=<0Y=WL>&+>>*>W:>t >> >R >̞N>>>>A/>>B>>h>oi>@#>0=-=N3=i=2rV== =`<&<<<<<::eF: ):H2:˔>:@K;0;E<;rJ;z-;5;VB<3)<036 >_F>n>5>)=#==$=b=Hs]=C=M7=`=D=x,==ߝ=bq===ɭ=q= =ݨ$=8=o\=8=Hm=u =A/=+<><.<\u<"2;K;0<;60;vK;78:@K:8:|-:pI:TPA:H8=:E<:J>:R@:cE:qJ: ):/:7:hD;);\>#>9>Q>l,>'> >4>R>чd>>*t>߮(>k>-y>{!>>h7> =x ==ae=,4== =nI:pI:.:6:hD; );47;cE;+;3;?;%N<'3>>Th>>> QK=*==m=tZ=YB=T=\`C=n)=/(=r,=0 ==i=Ʌ}=ֲQ=i==׷=W,= =)~=x =C=j::9:06:1`6::9:B;:Q@:g F:}M:.:X5:D; *;?&:;qJ;O-;5;Ң@;L<Y.<:ݹ >">2K^>INe>b>D6><>G>B>ul>>c>f>Ф>>>>R>b.u>9*X>=p=G=`$=*'4=,=N =y<<;J;k>;#3;l+;] C;&J3:8@K8.8WB8WB8WB8WB8,48.8'8'8'8.8.8A;8A;8WB8WB8WB8WB8+8;9/9lH9.9p99?9@K:.:26:R@:}M:<1:;:4I;/;J>;-(;:0;<; J< ~<_P >7>&S>(>!W >m>==R==q=i=p2I=;=&=N=+C==ˌ.='=✥=f5=޲4=M=IW==|m=FD\=$:;qJ;z-;5;Ӥ@;sM<0/<<9/(>¶>)9\>>>W>t>>>>v>ʠZ>`l>0 >ȿ>T>>i>^`<>8KH>O==s=e=-5=m= =!= =D<< ;3;*;VTA;0:,H:8:4/:':hxG:M?:68:1:,9pF90<909w@K9 ,848lH8WB8WB8WB8.8'8'7B7B7B8'8'8.8.8A;8WB8WB8WB8WB8'8;9 ,9Q@9p+959@>9@K:.::9:aE:):H2:@>:N;3d7;k(H;Q-;8;G</= >]>$>1-&>3>,X>#X> =b= =@===9={====)_=1=7="8=UW===s==M}_=0<% >>3^>LP^>i>i>~>t>u> >δs>D?> >>E>`>]>9\>_/>*=f=o =5ӷ=+p=$-=y== =]::*4:.9L9?959'9688;8'8WB8WB8WB8,48'7B7B7B7B7B7B7B8'8'8.8A;8WB8WB8WB8WB8lH849'9L@>9'939@>9@K:.::9:eF:d*:L3:ݸD;x-;P@;l+;5;D<-=%B=~>>0>?>C>[>;Y>,c>O> =~=G= f==:!=#=.=ϙ=P=+=J=;=q[==ي===^='&<"<^y<|M<p>' [>?C>\>}N>3>%M>O[>Û>2>]>y|>>>q>^F>P>%==~.=A=&=JP=p=-p==I,<<4<; f*:PA:2:\(:g F:H8=:06:.: *9ٰB9:9.9L@>8@K8.8WB8WB8WB8A;8'7B7B7B7B7B7B7B7B7B7B8'8.8,48WB8WB8WB8WB8lH8@18H9,49|M909=9K:.::9:g F:+:6:8J;67;}LM;2;A< ->%|>?>Rw@>X>Q@>B>0> >#>=:=咆=;=ښ===C==>>|p>D=:=%==}-=<5=*::HM:8:*:YB:-X5:x-9D9@>9;9:9;9@>9ٰB9L:x-:!@1::9:TPA:}M:1:˔>;(;H>>/>JXv>i7>z]>l>>%>ɀ>FJ>L>>?>>ae>?*>!‰>a===RW=7ax=.=.Ou=.U=*=q= ;v,;blE;.;8=<H>4%>UI>o >{>y_,>k>X>CL>/6> S>T>:k>z>>6>Qp>>j> > - >!={=\o=_=a=!1;Z(:(;:t,:YB:,4:p+9PA9 9909.9.90939:9PA9J:x-:"2:< 9:cE: ):L3:D;,;E2<;xL;z-;{4;ň<;D;N<<0<+<6ոq>>5i>RB>t>;> >0s>I>>ã>?>S >&>g>C6K>#">a===gg=N=Fz=E=EM=?Fz=1=To<< ::"2: ,9 F9=909w@K9/888lH8WB8WB8WB8.7B7B7B747,47,4647,47'747B7B7B7B7B8'8.8A;8WB8WB8WB8WB8lH849'9Q@90/9:9pF:.::9:s8J:3:8J;B;;+;v9;#M<=M: O>I0>us>p>* >>>>(>gr?>M&>;}>/ >%PB>m> >Ju>Z>.>>> Z===ek=Hc== R<:.:cE:,4: +9?939(9lH9L@>9L@>9WB9'9.979@>9 F:,:!@1:=x::g F:*:P4:hD;r,;A*;;nI;+;1; 6;8=;ݸD;H;M<(< +<<"2<6j8&Y>4!>9UX>X>{>>>>>O>> >>n>Gn>%;> f==0==m(=ef=cɥ=_=T=A=&o=<><n;1;nI;*4:G:3:}M:PH?:,4:x-9 F9=9@19|M9/8;8lH8WB8WB8WB8.7B7B7B7'6464646464647,47'747B7B7B7B7B8'8.8WB8WB8WB8WB8lH8@18@K9L@>9.9 99`C:.:L@>:p+:D?;*4;^);6;I<6)<==->Wq>1>i>§><>>H>>v]>c>E>>x>\>HW%>9>/>)>&>%TJ>"^i>>A==ы=rX=0(v<+<mN> >=>^>>t>>!>>>>>t>KK>)5T> =h===:===H=zQ =gV=L^=,= < ~9`)9 99G:*4:o0I:5;r,;qJ;#3;G<2Ͷ<==Ա>w>JƦ>n>~>?K?u?!g?:?W> B> >u>x>s>Z>L9>C(>=R>7 >/>$j>e>==m =~<~909L@>9'8;8@18.8.848;9'9689w@K909 99PA9L:.:-X5:L@>:pI:-:T4:׬B:M;4/;< 9;RL@;j&G;}LM;;*;,;-;c0;y3;G9;A;mL<K<>#>C6K>h_>>-h>>C>˧>>>x>OV_>->=~ =====ь==sHj=P@=+T=>ms>ƖU?T?%6?@A?E?D?>6?(C?2?c>Ut>>>,>m(>aR>W>K>= >*\>&===N?9.9A;8;8.8lH8WB8WB8WB8lH8lH8.8;9 ,9L@>9(929;9ٰB:`):.:1`6:L@>:mH:d*:@1:8:PA:,H;(;&-;'3;;9;G6=;[C;qJ;*; /;b6;B< >(؛>La>w43>D>>>>+>[>|>S}H>2>a>>H=닸=]="==0=*=sj=I:==!z:< +;B;#3;);#2:߼D:80:iG:1`6: h*9=90/9L@>8@K8@18WB8WB8WB8WB8.8'7B7B7,46464646464647,47'7B7B7B8'8.8A;8WB8WB8WB8lH8.8@K9Q@949K::9:*:|G;PH?;[/;\C<*.>j>?+:?Gu?O ?R~?Pծ?J?DE?+El?0L>60>կ>{)>:U>Ӳ>>py>\xs>DL>+\D>=w==)%4<{9*9/848lH8WB8WB8WB8WB8WB8WB8WB8WB8lH8@18@>9/9Q@9`)909:9?9J:x-:!@1::9:PH?:hxG:|M:+:4/:L3:8:@>:E:L;x-;;9;blE;d*;g1;<;I<ό>2^>\i>'>mO>\>L>>N>>Y >7>JP> s=m=G=,==#B==fn=8=<,<.Gn>n?8?G:?U?al?dȠ?^38?Sp?Iy?M>;>#>Vw>5>p_>a>B2>#Q>a==XH"<<^<3Ϸ;H;4;qJ;,.:,;: ):J>:-90<9'9'8.8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8@18@>9 ,9L@>9w@K9*909p99@>9D: *:.:&3:5h7:A;:R@:g F:yL:l+:1:8:E; +;>$:;k(H;"-; 6;=D<,?>C>pQ1>>O>6>S>}>_ d>=>r>#E>D>b8==!====L=:(-:XXB:19ٰB90/9,48;8lH8WB8WB8WB8A;8'7B7B7464646464647'7B7B7B8'8,48WB8WB8WB8WB8'8E9aE90<:/:mH::;-5;j*;Ć<<0>jM?>x?8?Q[?eF?uc?vB?h ?W?JR?>l?z?9>>ȉ>1>>>~0>W_>2>d=B=} =$<9g F9(90979=9B9 F: *:(-:"2::9:TPA:yL:/:::4I;:0;Q@;*;#3;A<ͩ<>z:>->W;b>w>Ց>>>E>>b5>@>%K>6U>=@i==i=[=^td=*<<I> ??FF?Z\?r??}?iwA?U΍?H%?2m??>R>J>g>S>j.>f6>=>w=7==JP<7<\ C< T;S;;*;$F2:$::yL:88: h*989F=8@18WB8WB8WB8A;8.8.8.8.8.8.8.8A;8A;8WB8WB8WB8WB8WB8WB8WB8lH8lH8'8.848;8@K9 ,9F=9lH9'90/949=9pF:-:47:TPA:PN:D2:˔>;X(;>$:;PN;1;?<3)%o>?>e>>>U>>>`>?>$>l= ==V=\=f=0V=<^4>O? _?HZ?]?t=?~r?s?_@?N?CeT?? S>0>Yj>X>b>l>nC>AM+>S==tg=N<9.9:9E:.::9:cE:*:X5:I;.5;r6J;0;><)Ǩ>(#3>K>m=>>X>a>v>W7Z>7>>y=⿕=%= =^=,u=`9.9L:@(;:|-:|G;L@>;e0<>>ͭ? @0?F?Yp?iA?l?`o?Q2?E?&o}? 7>P>> w>*v>[L>k>=d>#v=/B=bE<Ď<.<;9;K;15;}LM;,.:P4:[C:.9@>9'8@K8lH8WB8WB8A;8.8'7B7B7B7B7B7B7B7B7B7B7B8'8'8.8.8,48A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8+848H9F=9*9:9G:/:A;:qJ:1:hD;&3;qJ;0;#@</5>3>S(>l>y2>u >a>E$>)R>ˌ=P=v=~ =F}=;<Lj<;1`6;,;Fi;>JX?>Ȁ?N#?W?V??MO?D?!5?u>0>>t>iG>H>\Y>1|n> A+=0w=?ך<5~>:Y>Q>]>Y8>Gu>/Ie>E==s=j=+T=hH<Ù<<[<#;K;Y<; /;{HM;?|:;(:;: ,:aE:,49.9'8lH8WB8WB8.8'7B7B74646464647,47B7B7B8'8,48WB8WB8.9lH9B:-X5:w@K:8;x-;T';><>$:;ϙ>aH??@lm?E&?C?,??h>cF>>>>yL\>Z>=~>0=̻=;=o<<{2<=L^=H>a>"]>5>>b>:WY>+ >T==T=\#=/<A9?:%H2:k(H:H2:DL;_fD;5<(-<=Xޢ>Bt>u>i?? m?s>˄>86> 0>;>\>Ae[>+X<>^>W=}4=Ex97:)::9:PN:Ä<;/;qJ;#3;.I<=b<60=d =z=@> >6>>>f> [=X=*=OF?= %<'<<@<;F;8;|-;izG;#2:G:P4:\(:Q@:"29L9 99lH8WB8WB8.7B7B7B747,46464647,47B7B7B8'8A;8WB8lH9!@19;:0/:[C:/:߼D;=x:;.;H">)>f=.>>>t>&>\>?>'ڣ>M>w=ͅo=j=J K;4;oI;,:T4:[C:x-9`69/8'8WB8WB8WB8A;8.7B7B7B7B7B7'7,4646464646464646464646464647,47,47,47,47'747B7B7B7B7B7B8'8'8,48WB8WB8WB849WB9;:x-:L@>:,.:|G;?&:;+;0<<:+:<;0;(;0<< 1<.='!3=-&> >&@>.>&K>!n>V=T=)=*=R&=<ݢ<;9(9?:.:PH?:-:`C;1`6; );`6;H<"2<[3C<<.<8'8WB8WB8WB8.7B7B7'646464646464747B7B8'8A;8WB8lH9/97:,:D0<:\(::; +;blE;.;;; I<<2b69|M9;: +:5h7:mH:D2:|G;47;vK;..;36;Ƶ=;u@;?;":;2;+;[C;#2:4I:X5:PN:A;:,979 ,8lH8WB8WB8.8'7B7B7B7B7'7,46464646464747B7B7B8.8WB8WB8'9/929L:06:mH:D2: F;#2;]bC;3);K,;.;.;&-;,;7);pI;TA;57;X(:,;:)::99D9`)8@K8lH8WB8WB8WB8WB8A;8.8'7B7B7B7B7'646464646464647,47B7B7B8'8A;8WB8WB8.9/9.9?:x-::9:mH:0:׬B;v,;E<;mH;);*;5);pI;M?;1:4I:p9:|-:aE:&39`C9`)888WB8WB8A;8'7B7B7B7B7'7,464646464647'7B7B7B8'8A;8WB8WB849Q@9:: h*:47:mH:80:H?;(;)4;?&:;E<;A*;;68;!@1;b):8J:D?:H2:PN:J>:-9:9L@>8;8WB8WB8WB8WB8A;8A;8.8'7B7B7B7B7,46464646464647,4747B7B8'8A;8WB8WB8lH8;9L@>9@19B:-:5h7:cE:p+:X5:dD:LM;r,;.; j*:DL:׬B:4:t,:iG::9:,9:9L@>8.8WB8WB8.7B7B7B7B7'7,46464646464647'7B7B7B8'8,48WB8WB8lH8@>9w@K9;:`):*4:TPA:):H2:,;:۴C:߼D:\C:0<:X5:<1: ):dpF:68:,9=9'8@K8+8WB8WB8WB8A;8A;8.8.8'7B7B7B7B7,464646464647,47'7B7B7B8.8WB8WB8WB8.9'9lH9P49B: ,:*4:J>:mH:l+:<1:3:3:D2:.:}M:_D::9:.9ٰB909/8lH8WB8WB8.7B7B7B747,47,46464646464647'7B7B7B8'8.8A;8WB8WB8lH8@K9|M9 99pF:.:68:R@:pI:(:):(:uK:cE:A;:"2:)9:9'9'8+8WB8WB8WB8WB8A;8,48.8'8'7B7B7B7B7,46464646464647'7B7B7B8.8A;8WB8WB8lH8;9 ,9w@K929?:X(:.:,4:@(;:PH?:YB:YB:PH?:@(;:,4:(-9 F9 99w@K8@>8WB8WB8A;8'7B7B7B7'7,46464646464647,47B7B7B8'8.8,48WB8WB8WB8'8H9aE9@19=9 F:,:0/:)P4:,4:,4:1:x-9 F9 99|M9'8+8WB8WB8WB8WB8A;8A;8.8.8'8'7B7B7B7B7,464646464647,47B7B7B8'8A;8WB8WB8WB8+8;9.9WB9.9 99PA9J:p+:(-:.:.:x-:)9ٰB9:9.9,48@18WB8WB8A;8'7B7B7B7'7,46464646464647,47B7B7B7B8'8.8A;8WB8WB8WB8lH8;9< 99'909p990<9@>9?9@>9;9@19w@K9 +8.8WB8WB8WB8WB8A;8,48.8.8.8'8'7B7B7B7B7'6464646464647'7B7B7B8.8WB8WB8WB8lH8.8;9 +9F=9|M9.949:9=9@>9=9:949p+9L@>8E8lH8WB8WB8A;8'7B7B7B7,464646464647,4747B7B7B8'8.8,48A;8WB8WB8WB8lH8@18@K9689WB9|M9'9|M9\`C9< 99'8@18WB8WB8WB8WB8A;8,48.8.8'8'8'7B7B7B7B7B7'7,464646464647,47B7B7B8'8,48WB8WB8WB8lH8.888H9 ,9689L@>9w@K9|M9|M9w@K9L@>9/8H8.8WB8WB8WB8A;8'7B7B7B7,46464646464647'7B7B7B7B8'8.8A;8WB8WB8WB8WB8WB8lH8.8;8@>8E8;888.8lH8WB8WB8WB8WB8,48.8'8'8'8'7B7B7B7B7B7B747,4646464647,47'7B7B7B8'8A;8WB8WB8WB8WB8lH8.848;8;8H8H8B8;848+8lH8WB8WB8WB8.8'7B7B7B7,464646464647,47B7B7B7B8'8'8.8A;8WB8WB8WB8WB8WB8WB8WB8WB8lH8WB8WB8WB8WB8WB8WB8A;8.8'8'7B7B7B7B7B7B7B7B7B7'7,46464646464647,47B7B7B7B8.8A;8WB8WB8WB8WB8WB8lH8lH8'8'8'8lH8lH8WB8WB8WB8WB8A;8.7B7B7B7'6464646464647'7B7B7B7B8'8'8.8,48A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8.8'8'7B7B7B7B7B7B7B7B7B7B7'7,46464646464647,47'7B7B7B7B8'8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8.8'7B7B7B7'64646464647,4747B7B7B7B8'8'8.8.8,48A;8A;8WB8WB8WB8WB8WB8A;8A;8.8'8'7B7B7B7B7B7B7B7B7B7B7'7,4646464646464647,4747B7B7B7B8'8.8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B7,464646464647,47B7B7B7B7B7B8'8'8'8.8.8.8.8.8.8.8'8'7B7B7B7B7B7B7B747'7'7'7,47,4646464646464647,47'747B7B7B7B8'8'8.8A;8A;8WB8WB8WB8WB8A;8,48.8'7B7B7B7B7,464646464647,4747B7B7B7B7B7B7B8'8'8'8'8'7B7B7B7B7B7B7B7B7'7,47,46464646464646464646464647,47'7B7B7B7B7B7B8'8'8'8.8.8.8.8'8'7B7B7B7B7'7,464646464647,47'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B747,47,4646464646464646464646464647,47'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7'6464646464647,47,47'7B7B7B7B7B7B7B7B7B7B7B7'7,46464646464646464647,47'747B7B7B7B7B7B7B7B7B7B7B7B7B7'7,464646464646464647,47,47'7'7'7'7'7'7,47,464646464646464647,47,47'747B7B7B7B7B7B7B7B7B7B7'7,47,4646464646464646464646464646464646464646464647,47,47'7'74747474747'7'7,47,464646464646464646464646464647,47,47,47,47,47,47,47,47,464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464647,47,47,47'7'7'7'7,47,47,46464646464646464647,47'747B7B7B7B7B7B7B7B7B7B7'7,47,4646464646464646464646464646464647,47'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B747,47,464646464646464647,4747B7B7B7B7B7B7'7,464646464647,4747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7'7,4646464646464647,47B7B7B7B7B7B8'8'8'7B7B7B7B7B7B7,4646464647,47'7B7B7B7B7B7B8'8'8'8'8'8'8'8'8'8'7B7B7B7B7B7B7B7,4646464646464647,4747B7B7B8'8.8A;8A;8WB8WB8WB8WB8A;8A;8.8'7B7B7B7B7,4646464647,47B7B7B7B7B8'8'8'8.8.8.8.8.8.8.8.8.8.8'8'7B7B7B7B7B7B7'7,464646464646464647,47B7B7B8'8,48WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8.7B7B7B74646464647'7B7B7B7B8'8'8.8.8A;8A;8A;8A;8WB8WB8WB8WB8A;8A;8A;8,48.8'8'7B7B7B7B7B7'7,46464646464646464647,47B7B7B8'8A;8WB8WB8WB8lH8+8@1848;888@18.8lH8WB8WB8WB8WB8WB8A;8'7B7B7B646464647'7B7B7B7B8'8.8.8A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8,48.8'8'7B7B7B7B7'7,46464646464646464647,47B7B7B8'8,48WB8WB8WB8.8;9/9L@>9w@K9'9'9'9g F9L@>9 ,8;8@18lH8WB8WB8WB8A;8.7B7B7B646464647'7B7B7B8'8'8.8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8.8'8'7B7B7B7B7'7,464646464646464647,47B7B7B7B8.8WB8WB8WB8.8@K9Q@9.959;9?9PA9PA9?9;98909|M9< 98H8.8lH8WB8WB8WB8.7B7B7B646464647'7B7B7B8'8.8.8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8,48.8'7B7B7B7B7'7,46464646464646464646464646464747B7B7B8.8A;8WB8WB8lH8;9L@>909;9`C: *:x-:.:0/:.:.:,:X(9ٰB9;909w@K9/8;8lH8WB8WB8WB8.7B7B7'6464647,47B7B7B8'8.8,48A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B7B7'7,4646464646464646464646464646464646464646464647,47B7B7B8.8A;8WB8WB8WB8.9 +9'9 99D: ,:!@1:26:=x::E<:J>:F=:@(;:68:)P4:.: *9B9 99p+9F=8;8'8WB8WB8WB8.7B7B7,46464647,47B7B7B7B8'8,48A;8WB8WB8WB8WB8WB8WB8WB8lH8lH8'8'8+8'8'8lH8lH8WB8WB8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B7B7'7,46464646464646464646464646464646464646464646464646464646464647'7B7B8'8A;8WB8WB8WB8WB8491`69.9@>:`):80::9:N?:cE:mH:uK:yL:uK:mH:cE:PH?::9:'3:x-9 F9;9.9L@>8;8'8WB8WB8A;8'7B7B64647,4747B7B7B8'8.8A;8WB8WB8WB8WB8WB8WB8lH8'8.8.8@1848484848@18.8'8lH8WB8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B7B747'7,46464646464646464646464646464646464646464646464646464646464646464646464646464646464647'7B7B8.8WB8WB8WB8WB8'8;9L@>9@19B:x-:,4:J>:g F:|M:+:.:/:4/:/:-: ):yL:cE:J>:.5:.9H9;9.9A;8;8lH8WB8WB8A;8'7B7'6464647'7B7B7B8'8.8A;8WB8WB8WB8WB8WB8WB8lH8+8@1888;8;8B8E8E8@>8;8;848.8'8lH8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B7B7B7'7,47,4646464646464646464646464646464646464646464647,47,464646464646464646464646464646464747B8'8A;8WB8WB8WB8lH849 +9w@K949ٰB:(-:5h7:R@:uK:p+:0:L3:6:8:p9:8:T4:D2:.:(:mH:M?:06:.9 F9:9(9/848WB8WB8WB8.7B7B7,464647,4747B7B7B8'8,48WB8WB8WB8WB8WB8WB8lH8.848;8E9'9 +9 ,9 ,9 ,9 ,9`)8@K8E8;848.8lH8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B7B7B7B747'7,47,4646464646464646464646464647,47,47,47,47,47,47,47,47,47,47,47,47,4646464646464646464647B7B8'8A;8WB8WB8WB8.8@>9689`)9 99pF:.::9:]D:}M:.:3:$::H?:dD:F:G:߼D:ըA:,;:5:0:d*:mH:J>:,4:x-9ٰB949w@K9'8.8WB8WB8WB8.7B7B7,4646464647,47B7B7B8'8.8A;8WB8WB8WB8WB8WB8lH8.848;8@K9 ,9/9689F=9L@>9L@>9F=9689/9 ,9'8;888.8lH8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B7B7B7B7B7B7B747'7'7'7'7'7,47,47'7'7'7'7'7'7'7'7'7'7'7'7'7'7'7,47,47,47,47,47,464646464647,47B7B8'8A;8WB8WB8lH889 ,9WB90/9;9G:.::9:aE:':0:6:D?:G:@K;(;(;^);(:DL:H:PA:8:1: ):hxG:E<:"2: h*9?909L@>8;8lH8WB8WB8A;8.7B7B7B7,46464646464646464646464647'7B7B7B8'8,48WB8WB8WB8WB8WB8lH8+848;9'9/9689L@>9Q@9\`C9lH9lH9aE9Q@9L@>9F=9/9 +8H8;8.8lH8WB8WB8WB8WB8WB8WB8A;8.8'8'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7474747474747'7'7'7'7,47,47,47,47,47,47,47,4747B7B8A;8WB8WB8lH8;91`69'939@>9@K:.::9:[C:PN:0:8:B:8J;\(;.;!@1;'3;'3;"2;/;b):K:۴C:8:0:':aE::9:0/9@K9;9*9!@1888lH8WB8WB8WB8.8'7B7B7B7B747'7'7,47,47,47,464646464646464647,47B7B7B8'8.8A;8WB8WB8WB8WB8WB8lH8@18;8@K9/9A;9L@>9lH9|M9'9'9'9'9'9w@K9WB9L@>91`69 ,8H8;8.8lH8WB8WB8WB8WB8WB8WB8A;8,48.8.8'8'8'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B74747'7'7'7'7'7,47'7'7B7B7B8.8WB8WB8lH8;9L@>9`)979?:X(:.:68:TPA:|M:/:`6:׬B:K; *;"2;57;>:;B;;B;;?&:;98;'L3;t,:DL:۴C:6:.:yL:R@:06:-9`C989|M9 ,848lH8WB8WB8WB8A;8.8'8'7B7B7B7B7B7B7B7B7B7B7B7'7,47,46464646464647,47B7B7B8'8.8A;8WB8WB8WB8WB8lH8+848E9 ,9689L@>9w@K9'9`)9p+9.9.9.9p+9`)9'9w@K9L@>9689 ,8H888.8lH8WB8WB8WB8WB8WB8WB8WB8A;8A;8,48.8.8.8'8'8'8'8'8'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7474747'7'7'747B7B7B8'8WB8WB8lH8;9A;9*9p99PA:):.:26:PH?:pI: ,:3:˔>:4I; *;&J3;=x:;J>;S@;[^C;] C;WB;O?;?&:;,5;,:J:>:L3:p+:mH:E<:&3: +9?9@19aE9'8@18lH8WB8WB8WB8WB8WB8A;8A;8.8.8'8'8'7B7B7B7B7B7B7B7B747,47,464646464647,47B7B7B8'8.8A;8WB8WB8WB8WB8lH8.8;9'9/9L@>9lH9'9*9.90909090909.9+9'9w@K9L@>91`69 +8@>848+8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8A;8A;8A;8A;8,48,48,48.8.8.8.8.8.8'8'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8'8A;8WB8WB8@19/9'979PA:):.:-X5:H8=:hxG:):1: 9:E;X(; 1;< 9;N?;]bC;izG;m,H;mH;j&G;cnE;R@;?|:;'L3;`):G:::0:PN:[C::9:0/9L9=909L@>9'848lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8A;8.8.8'8'8'7B7B7B7B7B7B7'7,4646464647'7B7B7B8'8.8WB8WB8WB8WB8WB8lH8@18;9 +9689Q@9|M9`)9.90909393939@19090/9-9'9w@K9L@>9/9'8;8@18'8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8.8.8'8'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8.8WB8WB8lH8@K9lH929@>9@K:.:*4:@(;:\`C:yL:.:P4:˔>:J; +;/\5;E<;[C;j&G;s8J;{HM;|M;xBL;nI;dF;O?;:9;0/:L:PA:3:t,:o0I:L@>:,4:-9D9:9.9L@>9'8;8.8'8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8A;8.8.8'7B7B7B7B7B7B7,4646464647'7B7B7B8'8.8WB8WB8WB8WB8WB8lH8@18@>9 ,9F=9\`C9'9 ,90909394949494939090/9*9'9WB9F=9 ,8H8;8.8lH8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8.8'8'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8'8A;8WB8WB849,49.9:9D:,:!@1::9:PH?:mH:):80:7:C:L;0/;9p9;O?;dpF;qJ;}LM;/(;1(;(;yDL;k(H;YZB;A*;;%H2;Z(:E:8:/:}M:`hD:=x::!@1: +9B989*9L@>9/9'8;8;8@18.8'8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8,48.8'7B7B7B7B7B7'64646464647,47B7B7B8'8.8A;8WB8WB8WB8WB8'848@>9 ,9L@>9lH9'9.9093949`698989`69493909.9(9w@K9L@>9&39'8;848.8lH8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8lH8.848;8H9'9'9'8@K8;848.8lH8WB8WB8WB8WB8A;8.8'7B7B7B7B7B7B7B7B7B7B7B7B7B7B8.8WB8WB8lH8B9WB929?:X(:.:-X5:E<:aE:yL:t,:D2: 9:߼D:N;:0;:06:.9L9?949p+9w@K9L@>9689/9 +8@K8;8;8@18.8lH8lH8WB8WB8WB8WB8WB8WB8WB8A;8,48.8'7B7B7B7B7'646464647,47B7B7B8'8.8A;8WB8WB8WB8WB8lH8@18@>9 ,9L@>9lH9'9.909394989p99p99895949090/9*9|M9Q@9F=9 ,8@K8;848.8'8lH8WB8WB8WB8WB8WB8lH8'8@18;9 +9F=9w@K9`)909294949@190/9'9L@>9 ,8;8'8WB8WB8WB8WB8,48'7B7B7B7B7B7B7B7B7B7B7B7B8'8A;8WB8WB8+9 +9'9p99ٰB:p+:1::9:N?:hxG:}M:|-:H2:$::߼D:PN;4/;;9;O?;erF;qJ;~N;\(;^);(;{M;nI;_fD;G=;/\5; l+:4I:<>:L3:$-:uK:UA::9:"2: ,9pF9=9490/9`)9'9w@K9Q@9L@>91`69.9'8@>8;8@18'8lH8WB8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B7B7'6464647,47B7B7B8'8.8A;8WB8WB8WB8WB8lH8@18;9 +9F=9\`C9'9.909394979p99p99p997949@1909-9'9g F9L@>9/9'8B8;8@18.8'8lH8lH8lH8'8.848H9/9WB9.949=9ٰB9L: +:,: ,: +9M9ٰB90<929'9/8;8lH8WB8WB8WB8A;8'7B7B7B7B7B7B7B7B7B7B7B8'8A;8WB8WB8@19/9+9:9 F:x-:&3:< 9:R@:mH:':.:H2::: C:DL;|-;2 6;G6=;] C;k~H;uK;~NM;PN;}LM;sJ;j&G;XB;B;;,4; h*:4I:@>:P4:.:}M:cE:F=:-X5:.:`)9ٰB90<9792909.9p+9'9|M9aE9L@>91`69 ,8H8;8@18+8lH8WB8WB8WB8WB8WB8WB8A;8,48.8'7B7B7B7'64646464747B7B7B8.8A;8WB8WB8WB8WB8lH8.8;9'91`69Q@9'9*909@1949598989895949@1909.9'9w@K9L@>9,49 ,8@K8;888@18.8.8+8.848;9 ,9Q@9p+989?9M:(-:&3:68:@(;:H8=:J>:B;::9:*4:.9M9@>909Q@8H8'8WB8WB8WB8,48'7B7B7B7B7B7B7B7B7B8'8.8WB8WB8WB849< 99.9;9G:-:*4:>::TPA:mH:':|-:D2:8:PA:J;);#2;=x:;O?;`D;j&G;pI;qJ;pI;j&G;`D;O?;=x:;"2;):,H:<>:P4:.:T':hxG:M?:88:!@1:x-9J9PA9=9:9p99`69490909.9'9w@K9L@>9689 ,8H8;8.8'8lH8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B7,4646464647'7B7B7B8'8.8WB8WB8WB8WB8WB8+888H9/9L@>9w@K9'9.90929494959494939090/9p+9'9w@K9L@>9689.9'8E8;88848@1848;8@K9,49w@K909;9 F:-:*4:B;:[C:o0I:}M:(:(:PN:s8J:cE:J>:-X5:-9D989w@K8@K8'8WB8WB8WB8.8'7B7B7B7B7B7B7B7B8'8,48WB8WB8WB8;9F=9.9;9G:-:)P4:=x::R@:k(H:}M:t,:<1:4:0<:E:HM;,;*4;>$:;MB?;WVB;bE;dF;blE;ZB;O?;?|:;/\5;.:N:F:Ä<:3:.:T':k(H:Q@::9:)P4:.: *9 F9PA9?9ɐ=9;9;9:9894909.9'9w@K9L@>9/9'8;848.8lH8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B7,464647,47B7B7B8'8.8A;8WB8WB8WB8WB8lH8@18;9 +9< 99Q@9|M9`)9.909@1939P4939390909.9`)9'9lH9L@>9689/9'8H8;8;8;8;8;9'9689w@K909ɐ=9L:.::9:TPA:uK:+:4/:H2:3:P4:3:1:$-:}M:cE::9:0/9 F9p99lH8@>8lH8WB8WB8A;8.7B7B7B7B7B7B7B7B8'8A;8WB8WB8lH8;9< 99.9;9 F:x-:"2::9:N?:g F:yL:):.:2:7:˔>:G:M;,;%2;78;?:;G=;J>;I>;B;;<:;-5;/;\(:J:׬B:8:2:|-:}M:iG:R@:=x::,4:.:,9L9E9ٰB9B9PA9?9@>90<9:9p994909p+9|M9Q@9< 99 ,8H8;8.8lH8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B7,46464647'7B7B7B8'8.8WB8WB8WB8WB8lH8+888H9/9L@>9\`C9'9`)9.9090909090909.9*9'9w@K9WB9L@>91`69.9'8@K8@>8;8;8;8@K9/9w@K909;9J:.::9:`hD:PN:/:P4:$::˔>:׬B:׬B:@:;:6:1:d*:hxG:=x::.9`C939L@>848WB8WB8WB8.8'7B7B7B7B7B7B7B8'8A;8WB8WB8WB849/9`)9 99ٰB: +:80:47:F=:YB:mH:}M:l+:/:H2:7:<>:F:L;`);,.;#2;-5;1 6;/6;*4;!@1;-;Z(:8J:dD:;:4:0:l+:yL:g F:PH?:=x::,4:/:x-:`)9K9 F9D9`C9ٰB9B9?9@>90<9:95909.9'9\`C9L@>9/8@K8;8@18'8lH8WB8WB8WB8WB8WB8A;8.8'7B7B746464647,47B7B7B7B8.8A;8WB8WB8WB8WB8lH8.8;9'9/9L@>9\`C9|M9'9*9.9.9.9.9.9`)9'9w@K9aE9L@>9F=9/9 ,9'8@K8E8;8;8@K9 ,9L@>9*9p99ٰB:-:26:TPA:}M:/:6:D?:G:8J:DL:L:K:H:\C:::D2:):cE:68:x-9@>9`)9'8+8WB8WB8A;8'7B7B7B7B7B7B7B8'8A;8WB8WB8WB8@19 +9|M949?:X(:.:*4::9:L@>:cE:o0I:}M:d*:,.:1:T4:(;:׬B:|G:@K;X(;b); *; *;);(:L:H:۴C:,;:X5:1:-:':pI:aE:L@>::9:*4:/:x-: h*:X(9K9H9 F9 F9D9ٰB9PA9?9=9:97909.9'9lH9L@>9/8@K8;8@18'8lH8WB8WB8WB8WB8WB8A;8.8'7B7B7'6464647,47B7B7B8'8.8A;8WB8WB8WB8WB8lH8@18;9'9/9L@>9Q@9w@K9|M9'9'9(9'9'9'9w@K9WB9L@>9F=9,49.9 +9'8H8@>8;8E9'9,49w@K909ɐ=:):!@1:F=:pI:.:X5:H?:,H;T';d*; ,;x-; +;Z(:J:ݸD:8:0:|M:N?:!@19 F949L@>848WB8WB8WB8.7B7B7B7B7B7B7B8'8A;8WB8WB8WB8+8H9L@>909;9D:,:/:,4:=x::M?:\`C:k(H:uK:T':+:.:D2:T4:::˔>:۴C:E:|G:|G:G:hD:׬B:<:8:P4:1:|-:\(:uK:g F:R@:D0<:68:&3:.:x-: +:):'9L9@K9J9 F9pF9ٰB9B9?9=9:95909.9'9aE9L@>9.8@K8;8.8'8lH8WB8WB8WB8WB8WB8A;8'7B7B7B7,46464647'7B7B7B8'8,48WB8WB8WB8WB8WB8'8@18;8@K9 ,91`69L@>9Q@9\`C9w@K9w@K9w@K9lH9WB9L@>9L@>9< 99/9 ,9 +9'8H8@>8;8;8H9 +9F=9'949PA: ,:06:WB:(:D2:,;:G;T';,;0;%H2;'L3;!1;,.;(:J:Ӥ@:P4:,:dpF:47: +9;9w@K8@>8lH8WB8WB8.7B7B7B7B7B7B7B8'8,48WB8WB8WB8lH8;9/9'949?9J:x-:80:,4::9:F=:Q@:]D:hxG:o0I:|M:):t,:/:D2:3:6:8:8:8:7:T4:3:1:.:+:PN:qJ:g F:TPA:H8=::9:,4:80:.:,: h*:):X(:X(9PN9L9K9 F9pF9ٰB9PA9@>9;9 994909.9'9Q@9< 99 ,8H8;8.8lH8WB8WB8WB8WB8WB8WB8.8'7B7B7'6464647'7B7B7B8'8A;8WB8WB8WB8WB8WB8'8@18;8H9'9/9,49F=9L@>9L@>9L@>9L@>9F=9689/9.9 +9'8@K8E8;8;8;8;8E9 +9L@>9'989`C:.::9:g F:,:P4:PA:8J;d*;0;+4;3d7;4f7;/\5;#D2;"-:M:hD:8:0/:o0I:=x::-9@>9`)9'8'8WB8WB8.7B7B7B7B7B7B7B8'8.8WB8WB8WB8WB8.8@K9L@>9.9p99?9J:,:.:%H2:06::9:@(;:J>:PH?:TPA:cE:hxG:pI:|M:\(:+:,:(-:.:|-:t,:+:\(:}M:qJ:iG:]D:PH?:E<::9:,4:1:.:x-: +:):X(:X(:X(:'9M9@K9J9 F9D9B9?9=9:989390/9`)9w@K9L@>9!@19'8;848.8lH8WB8WB8WB8WB8WB8A;8.7B7B7B7,46464647'7B7B7B8'8A;8WB8WB8WB8WB8WB8lH8.848;8H9'9 +9 ,9/9/9/9 ,9 +9'8@K8H8@>8;8;8;88848;8;9'9L@>9'9p99D:.:< 9:k(H:-:6:۴C:DL;r,;#D2;2 6;:9;;9;67;*4;/;(:G:|::0:uK:D0<:.9PA9.9 ,8+8WB8WB8.7B7B7B7B7B7B7B7B8'8A;8WB8WB8WB8lH889 ,9WB9.9p99?9pF: *:x-:.:80:&3:*4:.5:47::9::9:@(;:H8=:PH?:WB:cE:g F:k(H:k(H:k(H:hxG:dpF:]D:R@:M?:E<::9:26:)P4:/:.:,: *:X(9L9K9@K9@K9L9L9K9H9 F9D9ٰB9Ѡ@9@>9;9p994909.9'9WB9F=9 ,8@K8;8@18'8lH8WB8WB8WB8WB8WB8,48'7B7B7'6464647,47B7B7B8.8A;8WB8WB8WB8WB8WB8lH8'8.848;8;8@>8H8H8H8H8@>8;8;8;88848@18@18@18@1848;8@K9689'9`69`C:.::9:iG:$-:X5:C:L; +;"2;1`6;:9;;9;5h7;(3;.;X(:$G:$::0:uK:D0<:.9PA9.9 ,8+8WB8WB8.7B7B7B74747B7B7B8'8.8WB8WB8WB8WB8+8;9 ,9Q@9.949;9PA9pF9PN: *:,:x-:x-:-:(-:.:.:0/:80:&3:,4:47::9::9:=x::=x::=x:::9::9:47:,4:#2:/:.: ,: *9M9H9 F9pF9 F9 F9 F9H9H9 F9 F9E9ٰB9B9?9@>9;9 994909.9'9w@K9L@>9/9'8;848.8lH8WB8WB8WB8WB8WB8A;8.7B7B7B646464647,47B7B7B8'8A;8WB8WB8WB8WB8WB8WB8lH8'8.8.8@18484888484848@18.8.8.8+8+8+8+8.848@>9/9lH929PA:x-:68:cE:+:3:D?:J;`);4/;(3;1`6;2b6;-5;!1;,:M:D:8:.:mH:=x::-9?9`)9'8'8WB8WB8.7B7B747,47,47'7B7B7B8.8A;8WB8WB8WB8lH8.8;9 +9L@>9'90949:9@>9?9B9B9ٰB9ٰB9ٰB9ٰB9ٰB9`C9E9H:X(: +:x-:.:.:.:0/:0/:.:.:-: ,: h*:X(9G9D9ٰB9B9B9B9ٰB9ٰB9`C9D9D9D9D9ٰB9B9PA9?9=9:9p994909.9'9w@K9L@>9,49 +8H8;8.8'8lH8WB8WB8WB8WB8WB8.8'7B7B7,464647,47B7B7B8'8,48WB8WB8WB8WB8WB8WB8WB8lH8lH8lH8'8+8+8+8'8'8lH8lH8lH8lH8lH8lH8lH8lH8lH8.8;9'9L@>9.9=: *:*4:Q@:}M:1:::E:M; *;/;"B1;"2;<1;-;(:4I:@>:3:+:cE:26: +9;9w@K8H8lH8WB8WB8'7B7B7,46464647'7B7B8'8.8WB8WB8WB8WB8WB8+848H9/9L@>9|M9p+909@19P4949493929@19@19@193949 99;9@>9B9`C9 F9H9J9J9 F9pF9ٰB9B9Ѡ@9@>9ɐ=9=9=9=9@>9?9?9PA9B9B9B9B9PA9?9@>9=9;9:9793909.9'9w@K9L@>91`69 ,8H8;8@18+8lH8WB8WB8WB8WB8WB8A;8'7B7B746464647B7B7B8'8.8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8.8;9 ,9w@K9`69D:.:=x::k(H:t,:3:<>:G:L;\(; h*; +;);':4I:׬B:8:4/:yL:J>:19 F949L@>8;8WB8WB8A;8'7B746464646464747B7B8'8,48WB8WB8WB8WB8WB8lH8.888E9 +9,49L@>9Q@9WB9WB9Q@9L@>9L@>9L@>9L@>9L@>9L@>9L@>9lH9'9 ,9093979 99:9:9:9:9p9989594949494989 99:9;9=9ɐ=9@>9@>9@>9@>9=9;9:9 997949090/9*9'9lH9L@>9,49 ,8@K8;848+8lH8WB8WB8WB8WB8WB8A;8.7B7B7B6464647'7B7B7B8'8.8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8.8;9689.9=:`):'3:L@>:uK:,.:P4:0<:dD:,H:8J:J:4I: F:@:8:1:(:[C:26:,9@>9*9 ,8.8WB8WB8,47B7B7,464646464647B7B7B8'8,48WB8WB8WB8WB8WB8WB8lH8+8.848;8;8E8E8;8;8;888484848;8;8@K9 ,91`69L@>9WB9w@K9'9'9'9'9'9'9'9'9`)9*9.9/9093949p99 99:9:9:9:9:9p99794939090/9-9'9w@K9Q@9L@>9/9 +8H8;848.8lH8WB8WB8WB8WB8WB8A;8.8'7B7B7,464647,47B7B7B8'8.8.8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8.8E9L@>909?:,:,4:PH?:uK:$-:2:7:,;:˔>:@>:4<: 9:P4:4/:(:cE::9:.9ٰB939L@>8;8lH8WB8WB8'7B746464647,47B7B7B8'8.8A;8WB8WB8WB8WB8WB8WB8WB8WB8lH8lH8lH8lH8lH8lH8WB8WB8WB8WB8WB8WB8lH8lH8.8@18;8;8H9'9 +9 ,9.9/9/9,49< 99L@>9L@>9\`C9w@K9'9*9.909092939393939@1909090/9.9*9'9w@K9WB9L@>9689/9'8E8;8@18.8lH8WB8WB8WB8WB8WB8A;8.8'7B7B7,4646464747B7B7B8'8'8.8A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8.8H9L@>909PA:,:)P4:J>:iG:':|-:0:D2:2:@1:/:h*:uK:TPA:68:.9D979w@K8@K8'8WB8WB8,47B7B646464647B7B7B8'8.8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8lH8+8.8.8@1848;8;8@>8H9'9 ,9,49L@>9L@>9qJ9|M9'9`)9*9.9.9.9p+9*9`)9'9'9w@K9lH9Q@9L@>9689/9 +8@K8;8;8@18+8lH8WB8WB8WB8WB8WB8A;8.8'7B7B7,46464647,47B7B7B7B7B8'8.8.8,48A;8A;8A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8+8;9L@>9/9ɐ=:':.:68:L@>:cE:o0I:yL:yL:uK:k(H:TPA:>::'3:,9ٰB949w@K9'8.8WB8WB8A;8'7B7,46464647'7B7B7B8'8.8,48A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8lH8lH8+8.8@18;8;8H9 +9/9< 99L@>9L@>9Q@9\`C9lH9lH9lH9lH9aE9WB9Q@9L@>9L@>9< 99/9.9'8@K8;8;848.8'8lH8WB8WB8WB8WB8WB8A;8.8'7B7B7,46464647'7B7B7B7B7B8'8'8'8.8.8.8.8.8.8.8.8.8.8,48A;8A;8A;8WB8WB8WB8WB8WB8lH849.9'959PA:):.:&3:47::9::9:88:,4:80:,9 F9;909Q@8@K8+8WB8WB8WB8'7B746464647,47B7B7B7B8'8'8'8.8.8.8,48,48.8.8.8.8.8.8.8.8.8,48A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8'8.848;8B8@K9'9 ,9/9/9/9,49,49,49,49!@19/9/9 ,9'8@K8H8;8;848.8+8lH8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7,46464647,47'7B7B7B7B7B7B7B7B8'8'8'8'8'8'8'8'8'8'8.8.8.8A;8WB8WB8WB8WB8WB8'8;9/9'9@19;9PA9pF9K9L9J9`C9?9 99/9w@K9/8;8lH8WB8WB8WB8.7B7B6464647,47B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8'8'8'8'8.8.8,48A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8lH8+8.84888;8;8@>8H8H8@K8@K8@K8H8H8E8;8;8;848@18.8+8lH8lH8WB8WB8WB8WB8WB8WB8A;8.7B7B7B64646464647,47'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8'8'8.8A;8WB8WB8WB8WB8WB8lH848@K9,49WB9'9*9p+9`)9'9Q@9,48@K888'8WB8WB8WB8A;8'7B7B646464647,4747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8'8'8'8'8.8.8.8.8.8.8,48A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8lH8'8+8.8.8@1848484848484848@18@18.8.8'8lH8lH8WB8WB8WB8WB8WB8WB8WB8A;8'7B7B7B64646464647,47'747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8'8'8.8A;8A;8WB8WB8WB8WB8lH8'8.8@184848@18+8lH8WB8WB8WB8WB8WB8.8'7B746464646464647,47,47'7'747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8'8'8'8'8'8'8'8.8.8,48A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8lH8lH8lH8'8'8'8+8+8'8'8lH8lH8lH8lH8WB8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7'646464646464647,47,47,47'7'7'7'747B7B7B7B7B7B7B7B7B7B8'8'8.8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7,46464646464647,47'747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8'8'8.8.8A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8lH8lH8lH8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8.7B7B7B7,46464646464646464646464647,47,47,47'7'7B7B7B7B7B7B7B7B8'8'8.8.8.8.8.8.8.8'8'7B7B7B7'6464646464647,47,47'747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B8'8'8.8.8A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B6464646464646464646464646464647,47,47,47,47'7B7B7B7B7B7B7B7B7B7B7B747,4646464646464647,47,47,47,47'7'7'7'7'7'7'7'7'7'7'7'7'747B7B7B7B7B7B7B7B7B8'8'8.8,48A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B7,46464646464646464646464646464647,47,4646464646464646464646464646464646464646464646464647,47,47,47'7'7B7B7B7B7B7B7B7B8'8'8.8.8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8.8'8'7B7B7464646464646464646464646464646464646464646464646464647,47,47'747B7B7B7B7B7B8'8'8.8A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8A;8.8'8'7B7B7B7,46464646464646464646464646464646464646464646464646464647,47'7B7B7B7B7B8'8'8.8.8A;8A;8A;8WB8WB8WB8WB8A;8A;8A;8.8.8'7B7B7B7B7,464646464647,47'7B7B7B7B7B7B8'8'8.8.8.8,48,48.8.8.8.8'8'7B7B7B7B7,46464646464647,47B7B7B7B7B7B7B8'8'8'8'8'8'8'7B7B7B7B7B7B7,464646464647,4747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7'64646464647,47'7B7B7B7B7B7B7B7B7B7B7B7'7,46464646464647,47,47'7'7'7'7'7,47,4646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464646464647,47,47,47,46464646464646464646464646464647,47,47,47,47,47,47,47,464646464646464646464646464647,47,47,47,47,47,47,47,47,47,46464646464646464646464647,47,47,47,47'7'7'7'7,47,47,47,4646464646464646464647,47,47,47,47'7'7'7'7'7'7,47,47,46464646464646464646464647,47,47,47'7'7'7'7'7'7'7'7,47,47,464646464646464646464647,47,47'7'7'7'74747'7'7'7'7,47,464646464646464646464647,47,47'7'7'74747474747'7'7,47,47,46464646464646464647,47,47,47'7'7474747474747'7'7'7,47,4646464646464646464647,47,47,47'7'7474747B7474747'7'7,47,464646464646464646464646464647,47,47'7'7'74747B7B7B74747'7'7,47,4646464646464646464646464646464646464646464646464647,47,47,47'7'7474747B7B7B74747'7'7,47,4646464646464646464647,47,47'747B7B7B7B7B747'7,464646464646464646464647,47,47,47'7'74747B7B7B7B7B74747'7'7,47,464646464646464646464647,47'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7'7,47'7,4646464646464647,47,47,47'7'74747B7B7B7B7B74747'7'7'7,47,4646464646464646464647,47,47'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7,4646464646464647,47,47'7'747B7B7B7B7B7B7B7B747'7'7'7,47,4646464646464646464647,47,47'7B7B7B7B7B7B7B8'8'8'8'8'8'8'8'8'8'8'7B7B7B7B7B7B7B7,4646464646464647,47,47'74747B7B7B7B7B7B7B7B7B74747'7'7,47,46464646464646464647,47'747B7B7B7B7B7B7B8'8'8.8.8.8,48A;8A;8A;8A;8A;8,48.8.8'8'7B7B7B7B7B7B7,46464646464647,47,47'7'747B7B7B7B7B7B7B7B7B7B7B7B747'7'7,47,46464646464646464647,47'7B7B7B7B7B7B7B8'8'8.8.8A;8A;8A;8WB8WB8WB8WB8WB8WB8WB8WB8A;8A;8,48.8'8'8'7B7B7B7B7,46464646464647,47,47'7'747B7B7B7B7B7B7B7B7B7B7B7B7B7B7'7'7,47,464646464646464647,47'7B7B7B7B7B7B8'8'8.8,48A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8.8.8.8'7B7B7B747,464646464647,47,47'7'7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7'7'7,47,4646464646464647,47'7B7B7B7B7B8'8'8.8,48A;8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8WB8A;8A;8A;8.8'7B7B7B7'6464646464647,47,47'747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7'7'7,46464646464646464647,47'7B7B7B7B7B8'8.8,48A;8WB8WB8WB8WB8WB8WB8WB8lH8lH8'8+8.8.8.8.8+8'8lH8WB8WB8WB8WB8WB8WB8WB8WB8A;8.8'7B7B7B7,464646464647,47,47'747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B747'7,4646464646464646464647,47'7B7B7B7B7B8'8.8A;8WB8WB8WB8WB8WB8lH8+8@18;8H9 +9/9< 99L@>9L@>9L@>9F=9689/9 +8E848+8WB8WB8WB8WB8WB8WB8WB8,48'7B7B7B7'64646464647,47,47'747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B747'7,4646464646464646464647,47,47'7B7B7B7B7B8'8.8A;8WB8WB8WB8WB8WB8+8;9'9F=9w@K9.929p99;9@>9@>9@>9@>9;9 9949/9'9L@>9 +888'8WB8WB8WB8WB8WB8A;8.8'7B7B7B7,464646464647,47'747B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7B7'7,46464646464646464647,47,47'7'747B7B7B7B7B7B8'8.8A;8WB8WB8WB8WB8.8;9!@19w@K909;9ٰB:X(:x-:0/:"2:*4:,4:,4:)P4:1:.:p+9H9?9p99.9L@>8H8.8WB8WB8WB8WB8WB8A;8.7B7B7B7'6464646464647,47'747B7B7B7B7B7B7B7B7B7B7B7B8'8'8'8'8'8'8'8'7B7B7B7B7B7B7B7B7'7,4646464646464646464646464646464646464646464647,47,47'7B7B7B7B7B7B7B7B7B8'8.8A;8WB8WB8WB8WB8+8;9/9|M939@>9L:.:,4:D0<:XXB:lH:uK:}M:T':PN:|M:pI:cE:L@>:88:80: +9B979'9 +8@18lHking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama8000/prepro.ndft0000644000000000000000000037517611744305674025610 0ustar rootrootpre-Pro (no G/P), 70%, B<3044C4C4;)?V;\:o::j-: 9g99w8o8?8?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?8?8?8?8O9*O9L_9999_9g:::C:v::::%: :;`;;;?; `; q]; q]; q]; q]; q]; q]; q]; P^;;;;`;`;;; P^; ;;7Z;G;G;h; X;& ;*O;0;7;>P;QL;a;qD;;\;W;GQ;;<<(<<&6<'<$0<{z<_;;";XY;;P;I.N;"W; q]:g::C99_99*O8?8?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?8?8?8?8O9*O9]g99O99_9::!:Y%:?::_:N;; P^;\;Z;G;XY;X;!;$W;& ;& ;& ;& ;$W;"W;X;h;G;G;7Z;[;[;Z;7Z;G;X;& ;,p;/T;0;7;=x;I.N;Y%;e;r;T;?;\;h;;ƅ;2<`<j<+`UP;I.N;OL;QL;R;QL;P;N;J>;C;>P;8&R;6R;0;-U;-U;*O;-U;/T;0;8&R;>P;L_;W;`H;k>E;r;;?;\;;;};;ھ;)< <#<>E;v;`;;/^;;?;;/^;;_;D ;{5;r;lN;e;^xH;Z6I;QL;P;SK;[F;a;iF;p;{5;_;?;;Z;d;;O;[;F;< =<h<;E=0=M4(=_D====G="=;=u;=E=E;;WI;;:;ϑL; ;С;:;K;WI;;ƅ;<<}<%Aw<;=C=cS=A==t=g=ހ=9{====D=A=<<}<.< P^;;;N;X;::e:9_98o8?8?7?7?7?7?7?7?8?8?8?8?8?8?8L_8O8O8o8o8o8o8o8o8o8o8O8O8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?8?8?8?8?8L_8o9*O9]g99O99_9g9o: :L_::%;;;>P;D ;yY; ;<<4(sP<3<)ǖ<#<<j<L< =<<<<<u<<>< -=<<<<(6<:GQ O>>>!==v'==m=5=&&<<[.>o>3h>?>AL>6.>o==)=-==@X<<&<[<;|;};c;)?V; q]:%:?:G9g9O9;W8?8?7?7?7?7?7?8?8?8?8?8?8?8O8_8o8o9G9*O9*O9*O9*O9*O9*O9*O8o8o8o8O8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8O8o9;W9w999W9_9g9: :P::F; q];(.;`H;\;t<?<. <]<>;>>*/>B>a<>~o>}>\!>8>m= =y=R= <(sP;;T;)<&<\)<]<<_ (>S>0>HHb>p>>>J>s>FR>yY=@f==]V=E;;<jE0==#=4k='bv=jr= =<<7<Վ<<"<(s=#u=G@f=s:=[=v'==>=>af> >35>G2>k>>>E>o<>)>J7>=jr=J=]g=D<">GQ> jr>0.>B?>b{>U(>jr>>h>>>C>&=U(=X=Vk= -<~# >>+[>==5>Uڿ>R>af>/>v>> >~x>= >؞=l=I=K5=<>>"\>4W>J>u>>t>X>Zz>yY>`U>>;d> t=h==A2E0=-=!e=k=M,= >E= ǖ= >= ƅ= }=L=:=&=y=%ɷ=0n=?=Rs=l===L==>>+>)>?^4>fF>0>U(>!>΋q>Ϸ>FA>Aw>>@Yj>.=F==:ϑ<(s<`=|΁=== ==q=$===p=p=j=K==j=W|=F=8=,=$A=U=4=V8=!=#u=&F=+-==0=8&R=Be=O+=`P=v==6I==T=٥=> $1>|>4>T,>_>d>>xH>>n,>{>;>>Qi>= =p=:%A<U>O>>>> >=rn= =ğ=y="==w:=e=VѲ=H=@=9=5#=6Ir=9*=>=Bv'=GQn=Mu=XYj=dO=u'=G=7=S=m==P=>>>+u>Da>o<>rn>>f0?? ? ?u> >.>u>!%==D=@<T>3>/>;B>>x><>5_>(a>3>p=΁=ΚX=Y=/=?=P^==o=c w=Z=U=U=Y6=^P=d7=ku=r==&=\==`=m=C==Ѳ>g@>q>'>>`>n>L>GQ>? y?s~? ? ??>ϱ;>zi>0n=!= =J=3;_;W;!<X e>4>_>%>/^>+>@>~<>Y >? >)T>y>==yY==OM=u==~=G=~X=|yY===V==T=Hb==+=D=d=6=}>b>>rn>)* >>8j>e8>jr>>m? T?q?*_?0?.?"&?>繿><>@==r=Y*= .N<<[<7Z;pM;\;^xH;& ;::]g:999w9*O8L_8?8?7?7?7?7?8?8?8?8?8?8L_8o8o9*O9*O9*O9;W9;W9L_9L_9L_9L_9]g9]g9L_9L_9L_9L_9;W9;W9*O9*O9*O8o8o8o8o8o8o8o9G9*O9;W9L_9L_9w9w999G99O9999W99_9_9g9o::G:L_:w:G:_;;G;1T;j-;L; N< ]$>E>>$1>>2>+>ʸ&>>9>>e]>?L>(3>WI>a=U(=X=k=.=6I===Z== ={== =Y=T==Aw=> q>]>>%x>/>?2>a>>>ޘ7?\?i?+?6?; >?8?/"?>@>G>T > e==g@f=>LyY>>ڸ&?p?p?f??ia>:>H>o>.>>r >F|>0H>G> [=$=G=p=W==S===xH=;=ΉP=X=7=>">g>!>-l >5ɷ>Ee>_@f>!>>OM>?V?WI?&G?6}???C?A;?7?#?o>>j>=f=u=<©?=Y6=&R=a>59>?G?$d?1:?5?2%?+]$??7?>Qn>$>>%>>Ow>5>>>=u==8j=Ֆ=ٔ~=`=%A=l>D >>>E>M,>-4>8>A]$>I~>R>c5>L>>L>???1'??* ?HO?K?G+?̪P>T>P^=Ǖ=="7<ȃE;\;:<$]$>~'b>zi? ?'1?:?E|?J]?Hq?BO?:?1?$.?o?>>">H>v>vt>F/>/>G>o<>>a>>?># > ~>2>>>*>6@>A%>LN>UC>^ >h?>>k>l >Ɏ>5? K ?"_?7j?E+?N?P?Ku?>P?*? >̣>>=y==& <>;G:5:h:L_:9999L_8o8?8?8?7?7?7?7?7?7?8?8?8?8?8?8?8O8o8o9*O9*O9;W9L_9]g9w9w9?9999G999999999O9O9999W99_9_9_9_9999g9g9g999o99w::::;W:T:w:::F;;G;7;p;;%<"W<}<=,p=%=؝>'2>K>g?]?0a?BR?M׍?SY?ST?P?J߉?B?9B?.?i?4(?A>yY>W>>c>U+>;>,(s> > w>>>O> a>$59>(`>.R>5x>>g@>H>V>`>eK>j>x>_>l>Y>>ٮ??%[?9?H9{?Q?Rg@?KV?<6I?$xH?>*>p&R>*=rn=G=%_P;7Z:N:&:C:9999no9*O8O8?8?7?7?7?7?7?7?8?8?8?8?8?8?8O8o8o9*O9*O9;W9L_9no9w9?99999O9O99999999W99_9_9_9999g9g9g9999o9o999w:::: ::!:H:a::&::g;;G;7;p;;׍ "{>s>/? af?'E?:^?F?Nv'?Q?QK?O?IN=?AV?7?,x?%?ϑ?>>šX>>P^>gf>L'>?>:>8>:\><>>`>@.>CB>I6>RO>]Aw>hjr>oV>o>p&R>}0o>>>59>+>W? O?!E?6?Dϑ?M\?M?E?5?]$>> >Xh>B==|q=<E;\;΀<& >LN>>@? ? ?0?:V8?@?D3?D}?Aǖ?<^?4?+3???>>[>‚>>>>tS>fg@>a>_">_f>_|>a.N>av>cd>hX>o>vF>ze>v>rT>{3>h>>i>c>S??p?.C?<,?Cm?C*?;؞?+T?e> >/>A>g=}=k=<8E>O">>*>?C?<$??&?+ ?+d?(r?!??x?]$?H?_>>|>S>Yj>u>>> >l>>X>>>Q>%A>> >6>|>u>z >8j>>W>m>Ѳ>? \?q?.?6C?6?/$?E0?y>>>>1D=3==X&R=s~<&;;W;<#o>'2>M>>Aw>>֜y>c>h???? ??{z?'b?ia>\> ->T>>ɇ>U>>M,>l>q>> >t>&>>]>>E>[>>y>x3>>>> >zi>;??y?(?#2?%u?l?>>>tA> "=y=u=Av>>1 >M+>zO>4>>>> >>۪>}>ٮ>>>">* >迚>T>>>>ٮ>T>C>>>>3>/^>F>>{>vE0>z>c>> > >>&R?jr? _E???!?>k>x>NF>=_=B=+}<հ+<2 >>.>B>d>d>>@>ټ>a>>???C>>/> > >>>W>v>X>>>>>K >{$>rW>q<>|c>&>>G>T>.> w>??y?Hb><>>>9>6I==l==X<`P;G:w:.:v:9999O9?9;W8o8L_8?8?7?7?7?7?7?7?7?8?8?8?8?8?8L_8o8o9*O9L_9no9?99O99W9_9_99g99:: ::!:;W:H:T:]g:a:no:v:v:v:v:v:v:v:no:j-:e:a:]g:]g:T:P:P:L_:C:C:C:C:L_:P:]g:v::::W:;;;*O;N;D ;;Ǖ;<E<@P&>.o>Vt>C>R>P^>&R?? N? Aw?7?9{>m>ݼ>>˞>>>K>>>>T>F>w>mg>jϑ>pB>af>>t>I>Т>6I>Yj>>1>>ڜy>>>}'>)===W= ><*P;G;_::w:999W9O9?9;W8o8L_8?8?7?7?7?7?7?7?7?8?8?8?8?8?8O8o9*O9;W9L_9w999999_99g9o::::!:C:P:]g:v:w:?:?:::::?:?:?:::w:w:v:v:j-:]g:]g:T:P:L_:C:C:C:C:L_:T:]g:v:?:::: ;;Z;)?V;H;r;\;;:;< =< w8<6R>:>&R>v>`U>?K? T? Т? H?>/^>d>>>,>˪>N>q>>\>2>so>hP>e]>hJ>s>P>>>OM>>>.N>>Ȧ>ɇ><>W>*=מ=~#=Ft=`<P;G;::w:99999w9;W8o8L_8?8?7?7?7?7?7?7?7?8?8?8?8?8?8?8O8o9*O9;W9]g9w99O999_99g9o:: :G:;W:P:a:w:?:::G:h:::h:G:&:::::?:?::w:v:no:a:]g:T:P:L_:C:C:C:C:C:P:Y%:j-:::::g;;; X;6R;]g;{5;];h;`U;;;;V<<$W<8}>,>jC>>}>5?%?S?K ? # ??>.>/>>E>$>pM>q>J>k>Qn>k>bK>^ >^>e>~'b>>>>>>hQ>>ֺG>>+>Ce>J=ʤ=59=?f<<7;X;:::!99999w9;W8o8L_8?8?7?7?7?7?7?7?7?8?8?8?8?8?8L_8o8o9*O9L_9w99999_999:::2:L_:]g:w:`::h:::::::::::h:&::::?:?:w:v:no:]g:T:P:L_:C:?:;W:7:;W:C:C:P:]g:v:?:::С:;?;Z;!;0;@P;]g;k>E;r;D ;;\;;S;pM;F< `<)v%>dWI> >>? ? ??%?? W? ?a>>Ѳ>t>V>?V>z9>e>[o>Ue>T>Z`>n>Yj>pM>t>׍>ںG>af>%>̆>/^>N=><c> 7=Z=O=?#>e3>)>ۂe?zi??????? ?O>>Þ>>>y>a؞>U>N>L>Rs>e;>G>m>@f>:>]$>>#>K >>>7:> =:==EAw= w&Z>su>;>? _?* ? ?#t?!N=??|? >>˦>k>>>a>Q~>H>F>Li>`>:>.>>ºG>m>x>̷>8j>U>xp>7> =Α=[=O= ؞<.>*>Ƚy>?? o?' ?&g?!?? >>1>Ir>m>>c>P>F'b>Cm>Ie>]>9{>>>\>ɟ#>q]>>>ɷ>vt>8&>D=8j==[$=)< >>P>)>? Aw? ?%?)y?&?4?W?>>1>> >g@f>R>Gs~>C>Iǖ>\>>_>W>>a>ş#>+>%>>zXY>+=ޫ`==dO=GQ<.>cd>;>??|? /?(p?(@?"R?ڿ? ;>U>\>L>0>tS>Y>M_E>H>NQ>^p>Ȧ>׍>>>>zi>>>]$>n>@>v==>E=o\=!<С<<2K;;;;:GQ;7Z:o::29o9_9O9w9*O8o8?8?8?7?7?7?7?7?7?8?8?8?8?8?8L_8o9*O9]g99O9W99o: :C:v::.:%:N;`;; q];;;7Z;G;XY;h;;;h;G;G;7Z;; ;?;::g:::h::?:w:e:T:C:2:G: ::99o99g99_9_99W999O9999w9w9]g9]g9w9999W9_99:: :H::g;;7;;<A.x>X>Ԓ???$g@?)?&A?r?T?>GQ>u>>XY>fѲ>V>>Q >>Tc>b7>%>>>p>|>“>>>S>>H@>!=C=c=|FA=)<ڜy< -<9z<A;ϑ;?;C;G::&:29o999no9*O8O8?8?8?7?7?7?7?7?7?8?8?8?8?8?8O9G9;W9w999_9: :C:v:&::g:V;; ;[;G;h;!;& ;)?V;,p;-U;-U;-U;)?V;'V;!;XY;G;; q];:V:::p:h:::v:Y%:L_:7:G: ::9o99g99_9_9999O999w9]g9;W9*O8o8o8O8L_8O8o9*O9L_99999_9g::;W::o;G;KOM;;O< ] >Uڿ>6>??j?'S?)]?$?? >>ξ>h><>}t>cu>Y>Yl>ex>؞>T>6>Hb>>>¢>>9>E0>V>*> ==I=4<<[)>>ւ??zi?&L?+I?*U(?"?7?N>J>%>OM>Ir>ta>d>`@>h>d>/^>>Q>n,>r>v'>># >WI>l>7D> =Α=T=DG<E0=>ٮ>\N>3>?B?$?,?.*?*?}?>>ҏ>>S>K >u}>k>q> >*>.N>a>>Zz>Վ>WI>> >>H>F==d=[h= ,-<(sE;a;SK;A;7;-U;$W;G;;::%::&:?:e:L_:!: :9999_9_9W99O999w9L_9*O8o8L_8?8?8?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8L_8o9w9:::%;\;0;p;3;>E<4(s<= af=}V=FA>6>jr>~#?5?"L?-?0?/q]?(?P?6>X>}>">>V>>>>>'b>%>+>姧>}>>c>OM>>m%>.==A=sK = H<ʂ<<:GQ;:;W;p;-U;::C999w8o8?8?8?7?7?7?7?8?8?8?8?8?8o9*O9w999_9o::T:::; P^;7Z;& ;3S;MpM;e;z%A;;;+;;;\; ;?;;r;iF;Y%;A;3S;)?V;h;;?:5:F:.::w:T:;W::9999_999999w9L_9;W8o8O8?8?8?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8o99_:G::;\;3S;{5;<>>? 5?Ȧ?-?2i?36?/>E?#G?>$>٧>}>2>>!>af>>|>h>2>ǖ>3>>>_E>>>r>Eg>2=Ǎ ==2m<7<P;;O<<=:==^>Xf0>??XY?. ?5[?7u?5?-K?? L>A>v>>>`>l>S>U>)>%?5? Т?? 59?s>>{z>>pD >!=p==B2?>.>?w?-m?8?=*?=S?7?)?6I?V8>6>ͣe>>>>.>T>?D? w??`??? ~>>L>G>4==M=L=T >>گ?y?,Z?<Z?Eaf?G?BG?66I?!~? t>>谳>ޢ># >6>>{z??? ߉?*}?-af?+L?#D??D>>z>D>\==U=t<E;J>;0;X;;:g:::T:G:9g9_99O99w9;W9*O8_8?8?8?8?7?7?7?7?7?7?8?9*O99: :w:%;\;;W;L;w<~g@=c==>La>?1?)}??U?M?R?O%?B?1Qn?? ?>[>G?ia?GQ?3?zi?(@?2`?8?:?8?1u?%u?~#>#>>WV>= =X&R=<%P<\߉<~g@<<<<)D>>j?$?A}?T ?Zc?X?O?>?.E0??C??v?X?_E?%e?1'?:?A?F59?G_?D4(?>s?3m??>E>59>f> )=y=T9{=P<<1T;;};W;G::w:9_9w8O8?7?7?7?7?8?8?8?8L_9G9L_999_9:G:w:;;G;@P;/^;S;<EE S>>E>2??Au?W?_?_l?Y?L?=<$?2Т?,?(f0?&%?+?2?;?C#?K?Q?SL?T8j?Q[?Kg?@?.?o> w>o|> =jr=IF<+Qv>o?D߉?Mu?UK ?Y?\?]\?]?[2?V?K N?6?>`>d> =m=5;<΢=Y==!=-===_={=J=5>,??;w?V6?d?iK?f?^G?WL?Rd?N.?K+?K@f?O?UT?[?aw?e^4?g?hh?hWI?do?]?P?7?5>59>G==>=XY< >> N>m=C==bO=<8j<8j0o> ??5 N?T?b ?ku?k"?fn?`8j?\/?Z[?Y+?Y?\ ?a?h?o?r?sH?r.?p{z?i?^?N?0p?>>'Ȧ==\a<}4>G>M>s>W>{+>1=1=q]=e=%<^<=L=p>r>x>??+i?MF?_3?jyY?n?l?i?f?e^4?eU?f ?jU(?p?v?z# ?zh?y~#?w=5?q}?g_E?Yi?BR?>.>g+>x=e=&E;<%Aw<* =P=Y==>2zi>;>Zz>? ?%>B>rn>Arn===Z=M,<Tc>Ԋa?u?B?Y؞?f?o >?pТ?p4(?p# ?p?q?s?vP?z(s?|g?}[?|W?y2?t7Z?i;?\&?J[?+ ->΁>>T=O=Rs.6>R>T?j?3q]??'?m>7U=bv==Eg<<0/Y>m? @?7R?S?al?lv'?qz?so>4=צ=zia= m<<4(s;WI; ;7Z: ::9g99no8O8?7?7?7?8?8?8?8O9*O9]g999:T:;G;{5;V8=jr> >oj>h?f?=u?V)?_q]?]#?O?. >>">=Ǖ=]=# w<ɶ=>>O>?)c?HO?[?f&?n?r)?sK?uȦ?x,?y?z?z!?xv'?s?j*?^ ?S_?? ?%_E?6>>9*===<=C>c>>?.?R?h?wD?vF?ev?K?1>1>No=y==Co< [>?E?;؞?S?^?f?j?la?n'b?pe?qAw?pU(?l?ft?^+?T`?C;?/f?>S>Ȧ>12==9=$S<>?^?5af?Y?t?~?~W?xT?\=?5>p>_E>y==W<<<,;g;;e;)?V; P^::?:2:9_99no8o8?7?7?7?7?7?8?8?8o99::v:g;G;W;<<}V<4=o=C>5}>??+?Dq?T`?[^4?^K?_R?`R?`X?`GQ?]t?X?P[?A=5?/~#?\>Z>*>fF>= =|y=X<.>>?2G?YU?w???~ ?dD ??4?B>4>o=Ѳ=X&R<<ٮ<"T;pM;q];MpM;G::h:T: 999G9;W8?8?7?7?7?7?8?8?9*O99_: :: ;G;Y%;;-> >?9{?/u???H?L?M=5?MW?MF?Jϑ?D?:?+g?>>Z>^>,_=1=/^=X=^4(>J?)?T%?rE0?~?ǖ?|?b?=7?jr>F>B=&=@x<kT>FP>8>@f? /^? ?)?-B> ->>0{z=D=2==)<Վ<<.;B;[;SK;X;:O:a9999*O8L_8?8?7?7?7?7?7?8?8?8?8o9w9W9w:a:%;G;oD;8H># ?}?IS?e?yF?{?o3?Um?+bv>">Rq=ǖ==C<'<:q;;;P;G:::;W:99W99;W8?8?7?7?7?8?8?8o9w99g:!:&:V;X;^xH;;q>Y>v>>'>>|>>΁>e>䮒>΀>>~<>1C>=<===K>?I?7?UD?a?a ?U[?62?>6>==:%Ap>:?>`.>>>F>#>0>m>tJ>I>'2>m=Ć==G=ٮ<.>i>pM?1?6~?AT?=h?(>ٮ>><=K=H<ڜy <>59>v>h>>> ɷ>=* ==^=Pn=* <ƅ<<<< P^;Ǖ;\;iF;/T;:::;W9o9_98o8L_8?8?8?7?7?7?7?7?7?8?8?9*O9G9:G::5;*O;]<@<"=@=r)=>*>x>?}? }?l>XY>>W==AC<^1T>}N=>>>v>2C=n=d=*` > >=# =e=kƅ= m<:<*O;:;+;^xH;-U;:g:`: 9_9G9L_9*O8O8?8?7?7?8?8?8O9;W999_9: :e:;;G;>P;;.;F<E;T;-<$W<\WI<׍P;:g::C:9_98o8?7?7?7?7?7?8?8?8o9;W99999::]g:h:; q];;:GQ;k>E;؞;W;C;WI;)<`<</^<A;w;k;;;;2;W;;bG;/T;\:::?:]g:C::9g9_99?9*O8?8?8?7?7?7?7?7?7?8?8?9*O999:L_:G:;;7;~g@;W;6I< ؞<$u<6Ѳ<:GQE;lN;iF;^xH;I.N;3S;$W;;::::T:G:9g99O9?9L_8o8L_8?8?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?8?99:!:: ;;-U;OL;qD;/^; ;\;\;q];;r;]g;8&R;$W;;_::G:no:2:9g9_999L_8o8L_8?8?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?8?9;W9: :?:g;;/T;bG;;;;;;;;h;];}V;]g;3S;XY; `: :::C: 99_999L_8o8?8?8?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?8L_9O9:e:; q];-U;k>E;;;;;;;;WI;O;;+;xB;MpM;)?V;:V:::P: 9o9_999L_8o8?8?8?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?8?9w9:?:;;)?V;m_E;h;:<@<<(6E;;饆<;!; q]:g:G:a:9w99W99w9*O8O8?8?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?8?99:e:g;G;]g;3;g@x=2< >9>'=^4==q=9*<E;-U;\:N::v:!:9g9_99O99L_9?8L_8?8?8?7?7?7?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8L_8O8o8o8o8O8O8?8?8?8?8?8?8?8?8?8?8?8?8L_8O8O8O8o8o8o8o8o8o8o8_8O8O8L_8?8?8?8?8?8?8?7?7?7?7?7?7?8?8o9::w:g;G;^xH;T;V+>%]>4>-> =# =y=G@>.>>=m>5pM>D ===J<$>%%>2>*>=7==A<<<,;F;X;p;0;7Z;`::?:C:999_99O99]g9*O8o8L_8?8?8?8?8?8?8?8?8?8?8?8?8O9G9L_99999_9_99999_9_99999]g9;W9L_9*O9G8o8o8O8_8o8o8o8o8o8o8o8o8o8o8O8O8L_8?8?8?8?8?8?8?8?7?7?7?7?8?8?9?99:P:;;-U;}V;< ]<\WI WI> >==%==+OM<С<~`<%Aw;;;oD;0;7Z;:::C: 9o99_99O99w9;W9*O8o8O8?8?8?8?8?8?8?8?8?8O8o9;W9w999_99g9o9:::99o9g99_9W99G9w99]g9;W9*O8o8o8o8o8o8o8o8o8o8o8o8o8O8O8L_8?8?8?8?8?8?8?8?7?7?7?7?7?7?8?8?9;W99o:P:;;)?V;r;ǖ;5E;0;7Z;:::P: 9o99_9W9999]g9;W9*O8o8O8L_8?8?8?8?8L_8O8o9*O9L_999999:: ::G:G:G:: :999999999]g9;W9*O8o8o8o8o8o8o8o8o8o8_8O8O8L_8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?8?8O9L_99o:L_:;`;;a;;WI<#dP;;&R<<:GQ= >E=5=VZ=e0o=_=F@=!<<P;!; ::::Y%:G:999_99O999w9]g9L_9;W9;W9;W9;W9;W9;W9L_9w9G99_9g9: :!:L_:]g:w:?:::::`::v:T:C:G:9o99_999?9L_9*O8o8o8_8O8O8O8L_8L_8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?8?8?8o9w99: :no::V;G;8&R;xB;; <P;xB;[;;N<mp<$W< ;2;;\;t;A;& ;;_:g:::T:G:999_9999G99?9w9w9w9w9w9w9?99O99_9::G:C:]g:::G:::::::h::?:v:P:!: 9o9g9_999no9*O8o8o8O8L_8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?8?8?8o9]g999o::{5::N; ;!;E;q];W;ƅ; <`< }<L< }<?;_E;:;*;\;D ;R;-U;G; q]::::?:P:G:999_999O99999?9w9w9?99999_99: :2:T:w::G:::::::p::h:::]g:C:9w9g9_999no9*O8o8O8L_8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?8?8?8O9;W999::L_::6:; ;h;0;Z6I;{5;+;3;l;O; ;;P;T;; ;{5;SK;0;;;:::G:w:H::999_999O99G999999999O99_9g:::C:a:?:::::x:::::p::&:`:v:L_:G:99_999no9*O8o8O8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?8?8?8L_9*O9w9O9_9o::]g:::; `;G;)?V;:GQ;^xH;uC;/^;];;L;+;;D ;iF;I.N;0;X;;::%:::e:?: 9w9g9_9999O999G9999999O9999:::L_:v::&:::W::::_::::h::v:P:!:99_999]g9*O8o8L_8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?8?8?8?8o9L_9999w::]g::: ;;\;G;*O;7;L_;]g;e;iF;bG;[F;H;6R;)?V;G;;/^:5:g::G::T:!:99g9_9999O9999G9999G99O99_99o::!:P:v::G::::_::%:С::::h::w:P:!:99_999L_9*O8O8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?8?8?8O9*O9w99W9::G:T:?::С:N;;;7Z;X;)?V;-U;0;/T;-U;$W;XY;; q];::g::::e:C::999_9W999O99999G9G999999_99o::!:P:v::G:::x::::_::::h::v:P::9g9_9O99;W8o8L_8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?8?8?8?8o9;W9?9O999: :C:j-:::::w;; q];;;;;; `;:V: :%::::v:P:!: 99g99_9999O999999999O999_99o:::L_:v:?:&::.:::::::p::&:?:no:L_:G:99W99w9*O8o8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8L_8o9L_9?9O9W99:::C:a:?:G:::g:N::V:5::N:g:%:W::G::v:P:2: :999_9999O9999999999O999_99::G:C:]g:::h::p:::::::h:::]g:?: 99_999L_9*O8O8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8O8o9;W9w999_99:: :!:P:r:?::::::::::&::w:e:P:2::9o9g9_9999O9999G9G9G9G9G999O9999_9g:: :2:T:v:?::h:::::::h::?:v:P::999O9w9;W8o8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8L_8o9;W9no99O99_99g9o:::2:P:a:w::?:::?::v:]g:P:C:: :9o9g9_9_999O999G9999999999O99W9_9g9o::G:C:]g:w:?::G:h:::h:G::?:v:T:7: 99999L_9?8L_8?8?8?8?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8o9*O9L_9w99O99W9_999w:::!:;W:C:L_:P:P:L_:C:2::::9o9g9_9999O99999999999999O999_99g9w: :!:C:]g:v:?::::::::v:T:?::99_99w9*O8O8?8?8?8?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8O8o9*O9L_9w99G9O999_9g99::: : : : : :::9o9g99_99999999999999999999O99W9_99:: ::C:T:a:v:w::w:w:v:]g:P:7::9999w9;W8o8?8?8?8?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8O8o9*O9;W9L_9w99999_99g9g99o9o9o9o999g99_9999O99999?9w9w9w9w9w9w9?99999G99O99W9_99:: :G:2:C:P:T:T:T:T:L_:?:: :999W9O9;W8o8?8?8?8?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8O8o9*O9*O9L_9w999999_9_9_99_9_9_9_9999O9999?9w9w9w9no9no9no9no9w9w9w9w9?999999O99W9_99g9:: :::!:!:!:!:G: :99g9_9W9O9?8o8?8?8?8?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8O8o8o9*O9L_9w999O99999999O9999w9w9no9]g9L_9L_9L_9L_9L_9L_9L_9L_9]g9no9w9w9w9w9?9999O9999_999o:::::::9o999_999w9;W8?8?8?8?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8L_8o9?9*O9L_9no9w9999999w9w9]g9L_9L_9;W9;W9;W9;W9*O9*O9*O9;W9;W9;W9;W9L_9L_9L_9]g9no9w9w9w9?9999O9999_99g9g9999g999_99O99no9*O8o8?8?8?7?7?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8L_8o8o9*O9*O9;W9;W9;W9;W9;W9*O9*O9*O9*O9*O9*O9*O9G9?9?9G9*O9*O9*O9*O9*O9;W9;W9;W9L_9L_9L_9L_9]g9no9w9w9999O999W99_9_9_9_99W99O99w9L_9G8O8?8?8?7?7?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8O8O8_8o8o8o8o8o8o8o8_8O8O8O8_8o8o8o8o8o8o9G9*O9*O9*O9*O9*O9;W9;W9;W9;W9L_9L_9]g9w9w999G99O9O9O9O9O9999w9L_9*O8o8?8?8?7?7?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8L_8O8O8O8o8o8o8o8o9?9*O9*O9*O9*O9*O9*O9*O9;W9;W9;W9L_9L_9no9w9w9w9w9w9w9L_9L_9*O9?8o8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8L_8L_8O8O8_8o8o8o8o8o8o8o8o8o8o9?9*O9*O9*O9*O9*O9*O9*O9*O9*O8o8o8O8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8L_8L_8L_8O8O8O8O8O8O8O8O8O8O8O8O8O8O8O8L_8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?8?8?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8O8o8o9*O9*O9*O9*O9*O9?8o8o8O8?8o8O8?8?8?8?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?7?7?7?8?8?8?8?8?8?8?8?8?8O8o9*O9L_9w99G9999999w9]g9;W9*O9no9;W9G8O8?8?8?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8?8O8o8o9*O9;W9L_9w9999W9_9_9_99_9_9999O9G9999no9*O8o8?8?8?7?7?7?7?7?7?8?8?8?8?8?8?8?8?8L_8O8o8o8o8o9G9*O9*O9*O9*O9G8o8o8O8L_8?8?8L_8O8o9*O9*O9L_9no9w99999_99g9o:::::9w9o9g99_9W99W99G9w9;W8o8?8?7?7?7?7?7?7?7?8?8?8?8?8?8?8?8O8o8o9G9*O9*O9;W9L_9L_9]g9w9w9w9w9w9w9no9L_9L_9;W9;W9;W9L_9no9w99G9999W9_999::G:7:H:P:T:T:P:C:: :999_99999?9;W8o8?8?7?7?7?7?7?8?8?8?8?8?8?8?8?8O8o8o9*O9*O9;W9L_9no9w9?99999O9O9999O9O9O999O9O999W99_9_9999:::?:Y%:w:::G:h:h:&::w:]g:?::99w9g9_999w9;W8O8?8?7?7?7?7?8?8?8?8?8?8L_8O8o9*O9*O9;W9L_9L_9no9w9999O9O9999W99_9_9_9_9_9_9_9_9_9_999g9g99o9::: ::2:P:v:::::g: :N:N::%::::no:C::*O:99_999w9*O8?8?7?7?7?7?8?8?8?8?8L_8o9*O9*O9L_9no9?9999O9O99999_9_9_9999g9g999o9o9o9o99:::: : :::!:2:C:L_:T:v:?:G::%:;_; P^;;;[;[;; q];::F:::]g:w:C: 99_999;W8o8?8?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8?8o9*O9L_9w999999_9_9_999g9g99o9:::::: : : : :::G::!:;W:C:P:T:]g:e:v:w:w:?:::::С: ;_; q];;XY;& ;-U;0;6R;6R;0;-U;$W;G; q]:w:%:::?:H: 9g99O9w9G8?8?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?8?8?8L_8o9*O9]g99999_9g99::: : ::G:!:2:;W:C:C:P:P:T:T:T:T:T:T:T:]g:a:v:w:?:::G::::::::g:o;`;?;\;G;& ;0;>P;Z6I;iF;p;z%A;{5;r;k>E;[F;>P;-U;G; P^: :::?:C:9999*O8L_8?8?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?7?8?8?8?8o9*O9]g9999_99o:: :!:C:P:]g:no:v::?:::::&:G:G:G:G:&:&:::::h::O:W:С:%:g:g: :N::V;;; q];;G;X;-U;:GQ;Y%;no;_;;[;;d;W;;;];T;bG;:GQ;"W;\;::::299_99L_8o8?8?7?7?7?7?7?7?7?7?7?8?8?8?8?8?8?8?7?7?7?7?7?7?7?7?7?7?8?8?8?8L_8o9L_9w99999o:::L_:e:?::h::O::::%:F:g:g::::g:g:F:%:_::::F:::w;_;;?; `; q];;;;G;;& ;-U;6R;I.N;bG;{5;؞;;;;С;g;F;;;[;P; ;\;z%A;N;)?Vking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama8000/rama6-template.kin0000644000000000000000000142265411744305674026741 0ustar rootroot@kinemage 1 @whitebackground @onewidth @flat @master {axis} @master {Data pts} @master {Favored} @master {Allowed} @master {Titles} @master {Outlier Lbls} @group {Decorations} @subgroup {Grid} off dominant @vectorlist {axes} color= gray width= 1 {Phi axis}P -180 0 0 {"}180 0 0 {Psi axis}P 0 -180 0 {"}0 180 0 @vectorlist {minor} color= gray width= 1 {axis}P -120 -180 0 {"}-120 180 0 {"}P -60 -180 0 {"}-60 180 0 {"}P 60 -180 0 {"}60 180 0 {"}P 120 -180 0 {"}120 180 0 {"}P -180 -120 0 {"}180 -120 0 {"}P -180 -60 0 {"}180 -60 0 {"}P -180 60 0 {"}180 60 0 {"}P -180 120 0 {"}180 120 0 @subgroup {Labels} dominant @labellist {labels} color= white {-180}-190 -203 0 {180}174 -203 0 {0}-1.5 -203 0 {-180}-213 -183 0 {180}-210 177 0 { 0}-203 -3 0 {Phi}83 -203 0 {Psi}-210 87 0 @subgroup {Axes} dominant @vectorlist {edges} color= gray width= 1 {plot edge}P -180 -180 0 {"}-180 180 0 {"}180 180 0 {"}180 -180 0 {"}-180 -180 0 @vectorlist {vertical} color= gray width= 1 {tick}P -180 -180 0 {"}-190 -180 0 {"}P -180 -170 0 {"}-185 -170 0 {"}P -180 -160 0 {"}-185 -160 0 {"}P -180 -150 0 {"}-185 -150 0 {"}P -180 -140 0 {"}-185 -140 0 {"}P -180 -130 0 {"}-185 -130 0 {"}P -180 -120 0 {"}-185 -120 0 {"}P -180 -110 0 {"}-185 -110 0 {"}P -180 -100 0 {"}-185 -100 0 {"}P -180 -90 0 {"}-190 -90 0 {"}P -180 -80 0 {"}-185 -80 0 {"}P -180 -70 0 {"}-185 -70 0 {"}P -180 -60 0 {"}-185 -60 0 {"}P -180 -50 0 {"}-185 -50 0 {"}P -180 -40 0 {"}-185 -40 0 {"}P -180 -30 0 {"}-185 -30 0 {"}P -180 -20 0 {"}-185 -20 0 {"}P -180 -10 0 {"}-185 -10 0 {"}P -180 0 0 {"}-190 0 0 {"}P -180 180 0 {"}-190 180 0 {"}P -180 170 0 {"}-185 170 0 {"}P -180 160 0 {"}-185 160 0 {"}P -180 150 0 {"}-185 150 0 {"}P -180 140 0 {"}-185 140 0 {"}P -180 130 0 {"}-185 130 0 {"}P -180 120 0 {"}-185 120 0 {"}P -180 110 0 {"}-185 110 0 {"}P -180 100 0 {"}-185 100 0 {"}P -180 90 0 {"}-190 90 0 {"}P -180 80 0 {"}-185 80 0 {"}P -180 70 0 {"}-185 70 0 {"}P -180 60 0 {"}-185 60 0 {"}P -180 50 0 {"}-185 50 0 {"}P -180 40 0 {"}-185 40 0 {"}P -180 30 0 {"}-185 30 0 {"}P -180 20 0 {"}-185 20 0 {"}P -180 10 0 {"}-185 10 0 @vectorlist {horizontal} color= gray width= 1 {tick}P -180 -180 0 {"}-180 -190 0 {"}P -170 -180 0 {"}-170 -185 0 {"}P -160 -180 0 {"}-160 -185 0 {"}P -150 -180 0 {"}-150 -185 0 {"}P -140 -180 0 {"}-140 -185 0 {"}P -130 -180 0 {"}-130 -185 0 {"}P -120 -180 0 {"}-120 -185 0 {"}P -110 -180 0 {"}-110 -185 0 {"}P -100 -180 0 {"}-100 -185 0 {"}P -90 -180 0 {"}-90 -190 0 {"}P -80 -180 0 {"}-80 -185 0 {"}P -70 -180 0 {"}-70 -185 0 {"}P -60 -180 0 {"}-60 -185 0 {"}P -50 -180 0 {"}-50 -185 0 {"}P -40 -180 0 {"}-40 -185 0 {"}P -30 -180 0 {"}-30 -185 0 {"}P -20 -180 0 {"}-20 -185 0 {"}P -10 -180 0 {"}-10 -185 0 {"}P 0 -180 0 {"}0 -190 0 {"}P 180 -180 0 {"}180 -190 0 {"}P 170 -180 0 {"}170 -185 0 {"}P 160 -180 0 {"}160 -185 0 {"}P 150 -180 0 {"}150 -185 0 {"}P 140 -180 0 {"}140 -185 0 {"}P 130 -180 0 {"}130 -185 0 {"}P 120 -180 0 {"}120 -185 0 {"}P 110 -180 0 {"}110 -185 0 {"}P 100 -180 0 {"}100 -185 0 {"}P 90 -180 0 {"}90 -190 0 {"}P 80 -180 0 {"}80 -185 0 {"}P 70 -180 0 {"}70 -185 0 {"}P 60 -180 0 {"}60 -185 0 {"}P 50 -180 0 {"}50 -185 0 {"}P 40 -180 0 {"}40 -185 0 {"}P 30 -180 0 {"}30 -185 0 {"}P 20 -180 0 {"}20 -185 0 {"}P 10 -180 0 {"}10 -185 0 @group {All data} animate dominant @subgroup {Title} @labellist {Title} master= {Titles} {All data} 0 190 0 @subgroup {Data} @dotlist {Data} master= {Data pts} @group {General} animate dominant @subgroup {Contours} nobutton dominant @labellist {Title} master= {Titles} {General} 0 190 0 @vectorlist {Allowed} color= blue master= {Allowed} {level 0.0005}P 170.77 -180 0.001 {"}171.016 -179.016 0.001 {"}171.032 -178.968 0.001 {"}171.311 -178 0.001 {"}171.481 -177.481 0.001 {"}172 -176.552 0.001 {"}172.143 -176.143 0.001 {"}172.204 -176 0.001 {"}172.335 -175.665 0.001 {"}172.669 -174.669 0.001 {"}172.986 -174 0.001 {"}173.269 -173.269 0.001 {"}174 -172.189 0.001 {"}174.058 -172.058 0.001 {"}174.088 -172 0.001 {"}174.18 -171.82 0.001 {"}174.686 -170.686 0.001 {"}175.152 -170 0.001 {"}175.448 -169.448 0.001 {"}176 -168.924 0.001 {"}176.351 -168.351 0.001 {"}176.662 -168 0.001 {"}177.161 -167.161 0.001 {"}178 -166.343 0.001 {"}178.137 -166.137 0.001 {"}178.256 -166 0.001 {"}178.752 -165.248 0.001 {"}178.935 -164.935 0.001 {"}179.892 -164 0.001 {"}179.934 -163.934 0.001 {"}180 -163.877 0.001 {"}P 57.094 -180 0.001 {"}56.934 -179.066 0.001 {"}56.907 -178.907 0.001 {"}56.753 -178 0.001 {"}56.552 -177.448 0.001 {"}56.155 -176.155 0.001 {"}56.103 -176 0.001 {"}56.074 -175.926 0.001 {"}56 -175.718 0.001 {"}55.424 -174.576 0.001 {"}55.245 -174 0.001 {"}54.907 -173.093 0.001 {"}54.842 -172.842 0.001 {"}54.575 -172 0.001 {"}54.381 -171.619 0.001 {"}54 -170.747 0.001 {"}53.687 -170.313 0.001 {"}53.566 -170 0.001 {"}53.232 -169.232 0.001 {"}53.075 -168.925 0.001 {"}52.769 -168 0.001 {"}52.481 -167.519 0.001 {"}52 -166.499 0.001 {"}51.773 -166.227 0.001 {"}51.672 -166 0.001 {"}51.367 -165.367 0.001 {"}51.104 -164.896 0.001 {"}50.783 -164 0.001 {"}50.494 -163.506 0.001 {"}50 -162.37 0.001 {"}49.834 -162.166 0.001 {"}49.757 -162 0.001 {"}49.543 -161.543 0.001 {"}49.159 -160.841 0.001 {"}48.866 -160 0.001 {"}48.571 -159.429 0.001 {"}48.115 -158.115 0.001 {"}48.068 -158 0.001 {"}48.048 -157.952 0.001 {"}48 -157.827 0.001 {"}47.332 -156.668 0.001 {"}47.099 -156 0.001 {"}46.734 -155.266 0.001 {"}46.546 -154.546 0.001 {"}46.349 -154 0.001 {"}46.231 -153.769 0.001 {"}46 -153.267 0.001 {"}45.439 -152.561 0.001 {"}45.204 -152 0.001 {"}44.747 -151.253 0.001 {"}44.537 -150.537 0.001 {"}44.317 -150 0.001 {"}44.2 -149.8 0.001 {"}44 -149.335 0.001 {"}43.391 -148.609 0.001 {"}43.118 -148 0.001 {"}42.682 -147.318 0.001 {"}42.406 -146.406 0.001 {"}42.235 -146 0.001 {"}42.149 -145.851 0.001 {"}42 -145.468 0.001 {"}41.344 -144.656 0.001 {"}41.053 -144 0.001 {"}40.658 -143.342 0.001 {"}40.343 -142.343 0.001 {"}40.199 -142 0.001 {"}40.124 -141.876 0.001 {"}40 -141.572 0.001 {"}39.28 -140.72 0.001 {"}38.95 -140 0.001 {"}38.577 -139.423 0.001 {"}38.046 -138.046 0.001 {"}38.024 -138 0.001 {"}38.014 -137.986 0.001 {"}38 -137.957 0.001 {"}37.07 -136.93 0.001 {"}36.633 -136 0.001 {"}36.389 -135.611 0.001 {"}36 -134.812 0.001 {"}35.586 -134.414 0.001 {"}35.355 -134 0.001 {"}34.79 -133.21 0.001 {"}34.563 -132.563 0.001 {"}34.301 -132 0.001 {"}34.205 -131.795 0.001 {"}34 -131.332 0.001 {"}33.392 -130.608 0.001 {"}33.12 -130 0.001 {"}32.79 -129.21 0.001 {"}32.643 -128.643 0.001 {"}32.428 -128 0.001 {"}32.326 -127.674 0.001 {"}32 -126.544 0.001 {"}31.806 -126.194 0.001 {"}31.742 -126 0.001 {"}31.683 -125.683 0.001 {"}31.428 -124.572 0.001 {"}31.332 -124 0.001 {"}31.25 -123.25 0.001 {"}31.187 -122.813 0.001 {"}31.105 -122 0.001 {"}31.109 -121.109 0.001 {"}31.115 -120.885 0.001 {"}31.119 -120 0.001 {"}31.203 -119.203 0.001 {"}31.29 -118.71 0.001 {"}31.376 -118 0.001 {"}31.468 -117.468 0.001 {"}31.89 -116.11 0.001 {"}31.915 -116 0.001 {"}31.935 -115.935 0.001 {"}32 -115.82 0.001 {"}32.462 -114.462 0.001 {"}32.69 -114 0.001 {"}33.054 -113.054 0.001 {"}33.191 -112.809 0.001 {"}33.593 -112 0.001 {"}33.732 -111.732 0.001 {"}34 -111.469 0.001 {"}34.58 -110.58 0.001 {"}35.08 -110 0.001 {"}35.439 -109.439 0.001 {"}36 -108.958 0.001 {"}36.422 -108.422 0.001 {"}36.887 -108 0.001 {"}37.376 -107.376 0.001 {"}38 -106.933 0.001 {"}38.474 -106.474 0.001 {"}39.11 -106 0.001 {"}39.535 -105.535 0.001 {"}40 -105.265 0.001 {"}40.692 -104.692 0.001 {"}41.714 -104 0.001 {"}41.854 -103.854 0.001 {"}42 -103.774 0.001 {"}42.97 -103.03 0.001 {"}43.003 -103.004 0.001 {"}44 -102.394 0.001 {"}44.201 -102.201 0.001 {"}44.483 -102 0.001 {"}45.256 -101.256 0.001 {"}46 -100.83 0.001 {"}46.446 -100.446 0.001 {"}47.064 -100 0.001 {"}47.507 -99.507 0.001 {"}48 -99.21 0.001 {"}48.681 -98.681 0.001 {"}49.712 -98 0.001 {"}49.851 -97.851 0.001 {"}50 -97.763 0.001 {"}50.549 -97.451 0.001 {"}51.108 -97.108 0.001 {"}52 -96.697 0.001 {"}52.462 -96.462 0.001 {"}53.442 -96 0.001 {"}53.773 -95.773 0.001 {"}54 -95.682 0.001 {"}54.434 -95.566 0.001 {"}55.307 -95.307 0.001 {"}56 -95.138 0.001 {"}56.999 -95.001 0.001 {"}57.001 -95.001 0.001 {"}58 -94.871 0.001 {"}58.89 -94.89 0.001 {"}59.115 -94.885 0.001 {"}60 -94.906 0.001 {"}60.946 -95.054 0.001 {"}61.091 -95.091 0.001 {"}62 -95.259 0.001 {"}62.557 -95.443 0.001 {"}63.551 -96 0.001 {"}63.853 -96.147 0.001 {"}64 -96.235 0.001 {"}64.716 -96.716 0.001 {"}65.063 -96.937 0.001 {"}66 -97.706 0.001 {"}66.166 -97.834 0.001 {"}66.279 -98 0.001 {"}67.055 -98.945 0.001 {"}67.238 -99.238 0.001 {"}67.741 -100 0.001 {"}67.862 -100.138 0.001 {"}68 -100.37 0.001 {"}68.677 -101.323 0.001 {"}68.963 -102 0.001 {"}69.297 -102.703 0.001 {"}69.645 -103.645 0.001 {"}69.791 -104 0.001 {"}69.864 -104.136 0.001 {"}70 -104.532 0.001 {"}70.486 -105.514 0.001 {"}70.63 -106 0.001 {"}70.892 -106.892 0.001 {"}70.949 -107.051 0.001 {"}71.178 -108 0.001 {"}71.406 -108.594 0.001 {"}71.64 -109.64 0.001 {"}71.75 -110 0.001 {"}71.815 -110.185 0.001 {"}72 -110.866 0.001 {"}72.369 -111.631 0.001 {"}72.466 -112 0.001 {"}72.612 -112.612 0.001 {"}72.796 -113.204 0.001 {"}72.953 -114 0.001 {"}73.064 -114.936 0.001 {"}73.072 -115.072 0.001 {"}73.17 -116 0.001 {"}73.256 -116.744 0.001 {"}73.286 -117.286 0.001 {"}73.36 -118 0.001 {"}73.369 -118.631 0.001 {"}73.367 -119.367 0.001 {"}73.376 -120 0.001 {"}73.332 -120.668 0.001 {"}73.3 -121.3 0.001 {"}73.254 -122 0.001 {"}73.147 -122.853 0.001 {"}73.126 -123.126 0.001 {"}73.005 -124 0.001 {"}72.853 -124.853 0.001 {"}72.74 -125.26 0.001 {"}72.584 -126 0.001 {"}72.457 -126.457 0.001 {"}72 -127.472 0.001 {"}71.895 -127.895 0.001 {"}71.867 -128 0.001 {"}71.813 -128.187 0.001 {"}71.498 -129.498 0.001 {"}71.334 -130 0.001 {"}71.161 -130.839 0.001 {"}71.12 -131.12 0.001 {"}70.908 -132 0.001 {"}70.83 -132.83 0.001 {"}70.781 -133.219 0.001 {"}70.703 -134 0.001 {"}70.705 -134.705 0.001 {"}70.695 -135.305 0.001 {"}70.697 -136 0.001 {"}70.777 -136.777 0.001 {"}70.829 -137.171 0.001 {"}70.91 -138 0.001 {"}71.061 -138.939 0.001 {"}71.082 -139.082 0.001 {"}71.225 -140 0.001 {"}71.383 -140.617 0.001 {"}71.602 -141.602 0.001 {"}71.698 -142 0.001 {"}71.758 -142.242 0.001 {"}72 -143.318 0.001 {"}72.191 -143.809 0.001 {"}72.234 -144 0.001 {"}72.293 -144.293 0.001 {"}72.583 -145.417 0.001 {"}72.686 -146 0.001 {"}72.841 -146.841 0.001 {"}72.9 -147.1 0.001 {"}73.049 -148 0.001 {"}73.227 -148.773 0.001 {"}73.29 -149.29 0.001 {"}73.427 -150 0.001 {"}73.554 -150.446 0.001 {"}73.858 -151.858 0.001 {"}73.894 -152 0.001 {"}73.916 -152.084 0.001 {"}74 -152.463 0.001 {"}74.424 -153.576 0.001 {"}74.519 -154 0.001 {"}74.659 -154.659 0.001 {"}74.806 -155.194 0.001 {"}74.953 -156 0.001 {"}75.134 -156.866 0.001 {"}75.177 -157.177 0.001 {"}75.33 -158 0.001 {"}75.469 -158.531 0.001 {"}75.67 -159.67 0.001 {"}75.745 -160 0.001 {"}75.791 -160.209 0.001 {"}76 -161.138 0.001 {"}76.242 -161.758 0.001 {"}76.296 -162 0.001 {"}76.39 -162.39 0.001 {"}76.676 -163.324 0.001 {"}76.813 -164 0.001 {"}77.012 -164.988 0.001 {"}77.017 -165.017 0.001 {"}77.204 -166 0.001 {"}77.404 -166.596 0.001 {"}77.711 -167.711 0.001 {"}77.8 -168 0.001 {"}77.852 -168.148 0.001 {"}78 -168.565 0.001 {"}78.51 -169.49 0.001 {"}78.683 -170 0.001 {"}79.051 -170.949 0.001 {"}79.092 -171.092 0.001 {"}79.395 -172 0.001 {"}79.599 -172.401 0.001 {"}80 -173.253 0.001 {"}80.319 -173.681 0.001 {"}80.45 -174 0.001 {"}80.803 -174.803 0.001 {"}80.933 -175.067 0.001 {"}81.271 -176 0.001 {"}81.538 -176.462 0.001 {"}82 -177.405 0.001 {"}82.261 -177.739 0.001 {"}82.379 -178 0.001 {"}82.675 -178.675 0.001 {"}82.889 -179.111 0.001 {"}83.212 -180 0.001 {"}P -180 -163.877 0.001 {"}-179.298 -162.702 0.001 {"}-178.675 -162 0.001 {"}-178.458 -161.542 0.001 {"}-178 -161.011 0.001 {"}-177.666 -160.334 0.001 {"}-177.438 -160 0.001 {"}-177.098 -159.098 0.001 {"}-177.052 -158.948 0.001 {"}-176.611 -158 0.001 {"}-176.454 -157.546 0.001 {"}-176 -156.8 0.001 {"}-175.775 -156.225 0.001 {"}-175.652 -156 0.001 {"}-175.423 -155.423 0.001 {"}-175.206 -154.794 0.001 {"}-174.833 -154 0.001 {"}-174.613 -153.387 0.001 {"}-174 -152.374 0.001 {"}-173.882 -152.118 0.001 {"}-173.806 -152 0.001 {"}-173.621 -151.621 0.001 {"}-173.238 -150.762 0.001 {"}-172.8 -150 0.001 {"}-172.537 -149.463 0.001 {"}-172 -148.776 0.001 {"}-171.701 -148.299 0.001 {"}-171.466 -148 0.001 {"}-170.885 -147.115 0.001 {"}-170 -146.122 0.001 {"}-169.946 -146.054 0.001 {"}-169.891 -146 0.001 {"}-169.131 -145.131 0.001 {"}-169.01 -144.99 0.001 {"}-168.607 -144.607 0.001 {"}-168 -144.027 0.001 {"}-167.988 -144.012 0.001 {"}-167.972 -144 0.001 {"}-166.936 -143.064 0.001 {"}-166 -142.408 0.001 {"}-165.791 -142.209 0.001 {"}-165.524 -142 0.001 {"}-164.722 -141.278 0.001 {"}-164 -140.881 0.001 {"}-163.469 -140.531 0.001 {"}-162.664 -140 0.001 {"}-162.327 -139.673 0.001 {"}-162 -139.492 0.001 {"}-161.041 -138.959 0.001 {"}-160.877 -138.877 0.001 {"}-160 -138.423 0.001 {"}-159.737 -138.263 0.001 {"}-159.271 -138 0.001 {"}-158.545 -137.455 0.001 {"}-158 -137.177 0.001 {"}-157.22 -136.78 0.001 {"}-156.208 -136.208 0.001 {"}-156 -136.094 0.001 {"}-155.939 -136.061 0.001 {"}-155.825 -136 0.001 {"}-154.73 -135.27 0.001 {"}-154 -134.823 0.001 {"}-153.488 -134.512 0.001 {"}-152.814 -134 0.001 {"}-152.409 -133.591 0.001 {"}-152 -133.273 0.001 {"}-151.352 -132.648 0.001 {"}-150.804 -132 0.001 {"}-150.532 -131.468 0.001 {"}-150 -130.614 0.001 {"}-149.773 -130.227 0.001 {"}-149.679 -130 0.001 {"}-149.595 -129.595 0.001 {"}-149.385 -128.615 0.001 {"}-149.26 -128 0.001 {"}-149.184 -127.184 0.001 {"}-149.138 -126.862 0.001 {"}-149.066 -126 0.001 {"}-149.063 -125.063 0.001 {"}-149.061 -124.939 0.001 {"}-149.057 -124 0.001 {"}-149.106 -123.106 0.001 {"}-149.114 -122.886 0.001 {"}-149.161 -122 0.001 {"}-149.266 -121.266 0.001 {"}-149.336 -120.664 0.001 {"}-149.427 -120 0.001 {"}-149.517 -119.517 0.001 {"}-149.769 -118.231 0.001 {"}-149.813 -118 0.001 {"}-149.852 -117.852 0.001 {"}-150 -117.375 0.001 {"}-150.34 -116.34 0.001 {"}-150.411 -116 0.001 {"}-150.539 -115.461 0.001 {"}-150.739 -114.739 0.001 {"}-150.897 -114 0.001 {"}-151.149 -113.149 0.001 {"}-151.251 -112.749 0.001 {"}-151.459 -112 0.001 {"}-151.539 -111.539 0.001 {"}-151.825 -110.175 0.001 {"}-151.858 -110 0.001 {"}-151.88 -109.88 0.001 {"}-152 -109.302 0.001 {"}-152.242 -108.242 0.001 {"}-152.284 -108 0.001 {"}-152.317 -107.683 0.001 {"}-152.486 -106.486 0.001 {"}-152.531 -106 0.001 {"}-152.586 -105.414 0.001 {"}-152.647 -104.647 0.001 {"}-152.709 -104 0.001 {"}-152.739 -103.261 0.001 {"}-152.759 -102.759 0.001 {"}-152.789 -102 0.001 {"}-152.794 -101.206 0.001 {"}-152.794 -100.794 0.001 {"}-152.8 -100 0.001 {"}-152.794 -99.206 0.001 {"}-152.789 -98.789 0.001 {"}-152.783 -98 0.001 {"}-152.762 -97.238 0.001 {"}-152.738 -96.738 0.001 {"}-152.717 -96 0.001 {"}-152.707 -95.293 0.001 {"}-152.689 -94.689 0.001 {"}-152.679 -94 0.001 {"}-152.736 -93.264 0.001 {"}-152.762 -92.762 0.001 {"}-152.825 -92 0.001 {"}-153.031 -91.031 0.001 {"}-153.055 -90.945 0.001 {"}-153.279 -90 0.001 {"}-153.514 -89.514 0.001 {"}-154 -88.606 0.001 {"}-154.229 -88.229 0.001 {"}-154.331 -88 0.001 {"}-155.07 -87.07 0.001 {"}-155.47 -86.53 0.001 {"}-155.866 -86 0.001 {"}-155.931 -85.931 0.001 {"}-156 -85.86 0.001 {"}-156.898 -84.898 0.001 {"}-157.567 -84 0.001 {"}-157.76 -83.76 0.001 {"}-158 -83.461 0.001 {"}-158.681 -82.681 0.001 {"}-159.093 -82 0.001 {"}-159.444 -81.444 0.001 {"}-160 -80.606 0.001 {"}-160.26 -80.26 0.001 {"}-160.378 -80 0.001 {"}-160.659 -79.341 0.001 {"}-160.879 -78.879 0.001 {"}-161.193 -78 0.001 {"}-161.38 -77.38 0.001 {"}-161.774 -76.226 0.001 {"}-161.846 -76 0.001 {"}-161.884 -75.884 0.001 {"}-162 -75.454 0.001 {"}-162.346 -74.346 0.001 {"}-162.417 -74 0.001 {"}-162.463 -73.537 0.001 {"}-162.591 -72.591 0.001 {"}-162.646 -72 0.001 {"}-162.661 -71.339 0.001 {"}-162.68 -70.68 0.001 {"}-162.695 -70 0.001 {"}-162.678 -69.322 0.001 {"}-162.655 -68.655 0.001 {"}-162.638 -68 0.001 {"}-162.607 -67.393 0.001 {"}-162.525 -66.525 0.001 {"}-162.496 -66 0.001 {"}-162.44 -65.56 0.001 {"}-162.166 -64.166 0.001 {"}-162.142 -64 0.001 {"}-162.126 -63.874 0.001 {"}-162 -63.186 0.001 {"}-161.847 -62.153 0.001 {"}-161.818 -62 0.001 {"}-161.791 -61.791 0.001 {"}-161.603 -60.397 0.001 {"}-161.551 -60 0.001 {"}-161.509 -59.509 0.001 {"}-161.444 -58.556 0.001 {"}-161.395 -58 0.001 {"}-161.297 -57.297 0.001 {"}-161.246 -56.754 0.001 {"}-161.129 -56 0.001 {"}-160.999 -55.001 0.001 {"}-160.999 -54.999 0.001 {"}-160.871 -54 0.001 {"}-160.79 -53.21 0.001 {"}-160.733 -52.733 0.001 {"}-160.655 -52 0.001 {"}-160.585 -51.415 0.001 {"}-160.453 -50.453 0.001 {"}-160.397 -50 0.001 {"}-160.361 -49.639 0.001 {"}-160.175 -48.175 0.001 {"}-160.157 -48 0.001 {"}-160.15 -47.85 0.001 {"}-160.003 -46.003 0.001 {"}-160.003 -46 0.001 {"}-160.003 -45.997 0.001 {"}-160.035 -44.035 0.001 {"}-160.035 -44 0.001 {"}-160.037 -43.963 0.001 {"}-160.151 -42.151 0.001 {"}-160.155 -42 0.001 {"}-160.169 -41.831 0.001 {"}-160.343 -40.343 0.001 {"}-160.369 -40 0.001 {"}-160.412 -39.588 0.001 {"}-160.525 -38.525 0.001 {"}-160.58 -38 0.001 {"}-160.643 -37.357 0.001 {"}-160.722 -36.722 0.001 {"}-160.789 -36 0.001 {"}-160.877 -35.123 0.001 {"}-160.9 -34.9 0.001 {"}-160.989 -34 0.001 {"}-161.13 -33.13 0.001 {"}-161.167 -32.833 0.001 {"}-161.294 -32 0.001 {"}-161.358 -31.358 0.001 {"}-161.443 -30.557 0.001 {"}-161.499 -30 0.001 {"}-161.532 -29.532 0.001 {"}-161.594 -28.406 0.001 {"}-161.622 -28 0.001 {"}-161.646 -27.646 0.001 {"}-161.73 -26.27 0.001 {"}-161.748 -26 0.001 {"}-161.743 -25.743 0.001 {"}-161.684 -24.316 0.001 {"}-161.678 -24 0.001 {"}-161.658 -23.658 0.001 {"}-161.573 -22.427 0.001 {"}-161.548 -22 0.001 {"}-161.478 -21.478 0.001 {"}-161.34 -20.66 0.001 {"}-161.258 -20 0.001 {"}-161.147 -19.147 0.001 {"}-161.114 -18.886 0.001 {"}-160.997 -18 0.001 {"}-160.884 -17.116 0.001 {"}-160.852 -16.852 0.001 {"}-160.745 -16 0.001 {"}-160.707 -15.293 0.001 {"}-160.663 -14.663 0.001 {"}-160.626 -14 0.001 {"}-160.606 -13.394 0.001 {"}-160.584 -12.584 0.001 {"}-160.566 -12 0.001 {"}-160.566 -11.434 0.001 {"}-160.588 -10.588 0.001 {"}-160.588 -10 0.001 {"}-160.622 -9.378 0.001 {"}-160.668 -8.668 0.001 {"}-160.705 -8 0.001 {"}-160.791 -7.209 0.001 {"}-160.848 -6.848 0.001 {"}-160.931 -6 0.001 {"}-161.035 -5.035 0.001 {"}-161.042 -4.958 0.001 {"}-161.143 -4 0.001 {"}-161.262 -3.262 0.001 {"}-161.333 -2.667 0.001 {"}-161.433 -2 0.001 {"}-161.523 -1.523 0.001 {"}-161.716 -0.284 0.001 {"}-161.767 0 0.001 {"}-161.806 0.194 0.001 {"}-162 1.258 0.001 {"}-162.17 1.83 0.001 {"}-162.198 2 0.001 {"}-162.228 2.228 0.001 {"}-162.454 3.546 0.001 {"}-162.509 4 0.001 {"}-162.59 4.59 0.001 {"}-162.708 5.292 0.001 {"}-162.798 6 0.001 {"}-162.971 6.971 0.001 {"}-162.981 7.019 0.001 {"}-163.142 8 0.001 {"}-163.313 8.687 0.001 {"}-163.43 9.43 0.001 {"}-163.553 10 0.001 {"}-163.649 10.351 0.001 {"}-163.935 11.935 0.001 {"}-163.951 12 0.001 {"}-163.959 12.041 0.001 {"}-164 12.279 0.001 {"}-164.392 13.608 0.001 {"}-164.457 14 0.001 {"}-164.518 14.518 0.001 {"}-164.655 15.345 0.001 {"}-164.725 16 0.001 {"}-164.809 16.809 0.001 {"}-164.861 17.139 0.001 {"}-164.941 18 0.001 {"}-165.007 18.993 0.001 {"}-165.007 19.007 0.001 {"}-165.071 20 0.001 {"}-165.148 20.852 0.001 {"}-165.159 21.159 0.001 {"}-165.228 22 0.001 {"}-165.299 22.701 0.001 {"}-165.343 23.343 0.001 {"}-165.406 24 0.001 {"}-165.449 24.551 0.001 {"}-165.479 25.479 0.001 {"}-165.517 26 0.001 {"}-165.549 26.451 0.001 {"}-165.6 27.6 0.001 {"}-165.627 28 0.001 {"}-165.642 28.358 0.001 {"}-165.686 29.686 0.001 {"}-165.698 30 0.001 {"}-165.707 30.293 0.001 {"}-165.755 31.755 0.001 {"}-165.762 32 0.001 {"}-165.77 32.23 0.001 {"}-165.826 33.826 0.001 {"}-165.832 34 0.001 {"}-165.842 34.158 0.001 {"}-165.977 35.977 0.001 {"}-165.979 36 0.001 {"}-165.981 36.019 0.001 {"}-166 36.178 0.001 {"}-166.304 37.696 0.001 {"}-166.345 38 0.001 {"}-166.395 38.395 0.001 {"}-166.542 39.458 0.001 {"}-166.608 40 0.001 {"}-166.724 40.724 0.001 {"}-166.815 41.185 0.001 {"}-166.935 42 0.001 {"}-167.057 42.943 0.001 {"}-167.066 43.066 0.001 {"}-167.176 44 0.001 {"}-167.311 44.689 0.001 {"}-167.381 45.381 0.001 {"}-167.484 46 0.001 {"}-167.566 46.434 0.001 {"}-167.74 47.74 0.001 {"}-167.784 48 0.001 {"}-167.815 48.185 0.001 {"}-168 49.553 0.001 {"}-168.093 49.907 0.001 {"}-168.107 50 0.001 {"}-168.126 50.126 0.001 {"}-168.429 51.571 0.001 {"}-168.483 52 0.001 {"}-168.549 52.549 0.001 {"}-168.675 53.325 0.001 {"}-168.749 54 0.001 {"}-168.818 54.818 0.001 {"}-168.852 55.148 0.001 {"}-168.922 56 0.001 {"}-168.992 56.992 0.001 {"}-168.993 57.007 0.001 {"}-169.064 58 0.001 {"}-169.126 58.874 0.001 {"}-169.145 59.145 0.001 {"}-169.206 60 0.001 {"}-169.265 60.735 0.001 {"}-169.306 61.306 0.001 {"}-169.361 62 0.001 {"}-169.423 62.577 0.001 {"}-169.539 63.539 0.001 {"}-169.59 64 0.001 {"}-169.638 64.362 0.001 {"}-169.825 65.825 0.001 {"}-169.848 66 0.001 {"}-169.876 66.124 0.001 {"}-170 66.718 0.001 {"}-170.315 67.685 0.001 {"}-170.376 68 0.001 {"}-170.469 68.469 0.001 {"}-170.682 69.318 0.001 {"}-170.802 70 0.001 {"}-171.005 70.995 0.001 {"}-171.007 71.007 0.001 {"}-171.186 72 0.001 {"}-171.367 72.633 0.001 {"}-171.497 73.497 0.001 {"}-171.614 74 0.001 {"}-171.69 74.31 0.001 {"}-171.945 75.945 0.001 {"}-171.957 76 0.001 {"}-171.964 76.036 0.001 {"}-172 76.319 0.001 {"}-172.317 77.683 0.001 {"}-172.355 78 0.001 {"}-172.391 78.391 0.001 {"}-172.53 79.47 0.001 {"}-172.575 80 0.001 {"}-172.658 80.658 0.001 {"}-172.76 81.24 0.001 {"}-172.845 82 0.001 {"}-172.995 82.995 0.001 {"}-172.997 83.003 0.001 {"}-173.137 84 0.001 {"}-173.346 84.654 0.001 {"}-173.528 85.528 0.001 {"}-173.656 86 0.001 {"}-173.747 86.253 0.001 {"}-174 86.981 0.001 {"}-174.397 87.603 0.001 {"}-174.539 88 0.001 {"}-174.861 88.861 0.001 {"}-174.948 89.052 0.001 {"}-175.222 90 0.001 {"}-175.431 90.569 0.001 {"}-175.729 91.729 0.001 {"}-175.814 92 0.001 {"}-175.852 92.148 0.001 {"}-176 92.796 0.001 {"}-176.338 93.662 0.001 {"}-176.421 94 0.001 {"}-176.512 94.512 0.001 {"}-176.693 95.307 0.001 {"}-176.801 96 0.001 {"}-176.874 96.874 0.001 {"}-176.893 97.107 0.001 {"}-176.968 98 0.001 {"}-177.027 98.973 0.001 {"}-177.031 99.031 0.001 {"}-177.091 100 0.001 {"}-177.141 100.859 0.001 {"}-177.154 101.154 0.001 {"}-177.201 102 0.001 {"}-177.28 102.72 0.001 {"}-177.32 103.32 0.001 {"}-177.388 104 0.001 {"}-177.493 104.507 0.001 {"}-177.684 105.684 0.001 {"}-177.745 106 0.001 {"}-177.801 106.199 0.001 {"}-178 106.996 0.001 {"}-178.312 107.688 0.001 {"}-178.394 108 0.001 {"}-178.547 108.547 0.001 {"}-178.785 109.215 0.001 {"}-178.963 110 0.001 {"}-179.164 110.836 0.001 {"}-179.22 111.22 0.001 {"}-179.381 112 0.001 {"}-179.498 112.502 0.001 {"}-179.693 113.693 0.001 {"}-179.756 114 0.001 {"}-179.79 114.21 0.001 {"}-180 115.633 0.001 {"}P 81.167 120 0.001 {"}81.642 119.642 0.001 {"}82 119.425 0.001 {"}82.637 118.637 0.001 {"}83.031 118 0.001 {"}83.376 117.376 0.001 {"}84 116.433 0.001 {"}84.153 116.153 0.001 {"}84.206 116 0.001 {"}84.337 115.663 0.001 {"}84.714 114.714 0.001 {"}84.984 114 0.001 {"}85.14 113.14 0.001 {"}85.195 112.805 0.001 {"}85.337 112 0.001 {"}85.373 111.373 0.001 {"}85.402 110.598 0.001 {"}85.435 110 0.001 {"}85.396 109.396 0.001 {"}85.342 108.658 0.001 {"}85.301 108 0.001 {"}85.156 107.156 0.001 {"}85.104 106.896 0.001 {"}84.961 106 0.001 {"}84.738 105.262 0.001 {"}84.498 104.498 0.001 {"}84.345 104 0.001 {"}84.249 103.751 0.001 {"}84 103.292 0.001 {"}83.537 102.463 0.001 {"}83.305 102 0.001 {"}82.898 101.102 0.001 {"}82.777 100.777 0.001 {"}82.461 100 0.001 {"}82.336 99.664 0.001 {"}82 99.046 0.001 {"}81.614 98.386 0.001 {"}81.427 98 0.001 {"}81.189 97.189 0.001 {"}81.094 96.906 0.001 {"}80.858 96 0.001 {"}80.702 95.298 0.001 {"}80.569 94.569 0.001 {"}80.451 94 0.001 {"}80.403 93.597 0.001 {"}80.303 92.303 0.001 {"}80.269 92 0.001 {"}80.263 91.737 0.001 {"}80.263 90.263 0.001 {"}80.256 90 0.001 {"}80.258 89.742 0.001 {"}80.342 88.342 0.001 {"}80.344 88 0.001 {"}80.346 87.654 0.001 {"}80.42 86.42 0.001 {"}80.423 86 0.001 {"}80.412 85.588 0.001 {"}80.418 84.418 0.001 {"}80.408 84 0.001 {"}80.376 83.624 0.001 {"}80.242 82.242 0.001 {"}80.221 82 0.001 {"}80.189 81.811 0.001 {"}80 80.991 0.001 {"}79.858 80.142 0.001 {"}79.84 80 0.001 {"}79.805 79.805 0.001 {"}79.55 78.45 0.001 {"}79.472 78 0.001 {"}79.345 77.345 0.001 {"}79.233 76.767 0.001 {"}79.084 76 0.001 {"}78.938 75.062 0.001 {"}78.91 74.91 0.001 {"}78.76 74 0.001 {"}78.646 73.354 0.001 {"}78.406 72.406 0.001 {"}78.324 72 0.001 {"}78.26 71.74 0.001 {"}78 71.089 0.001 {"}77.777 70.223 0.001 {"}77.716 70 0.001 {"}77.609 69.609 0.001 {"}77.387 68.613 0.001 {"}77.197 68 0.001 {"}76.975 67.025 0.001 {"}76.955 66.955 0.001 {"}76.715 66 0.001 {"}76.605 65.395 0.001 {"}76.339 64.339 0.001 {"}76.269 64 0.001 {"}76.225 63.775 0.001 {"}76 62.974 0.001 {"}75.875 62.125 0.001 {"}75.864 62 0.001 {"}75.866 61.866 0.001 {"}75.819 60.181 0.001 {"}75.82 60 0.001 {"}75.831 59.831 0.001 {"}75.88 58.12 0.001 {"}75.887 58 0.001 {"}75.895 57.895 0.001 {"}76 56.345 0.001 {"}76.043 56.043 0.001 {"}76.047 56 0.001 {"}76.052 55.948 0.001 {"}76.306 54.306 0.001 {"}76.333 54 0.001 {"}76.375 53.625 0.001 {"}76.52 52.52 0.001 {"}76.575 52 0.001 {"}76.722 51.278 0.001 {"}76.832 50.832 0.001 {"}76.984 50 0.001 {"}77.304 49.304 0.001 {"}77.542 48.458 0.001 {"}77.707 48 0.001 {"}77.809 47.809 0.001 {"}78 47.399 0.001 {"}78.626 46.626 0.001 {"}78.891 46 0.001 {"}79.328 45.328 0.001 {"}79.699 44.301 0.001 {"}79.836 44 0.001 {"}79.893 43.893 0.001 {"}80 43.625 0.001 {"}80.679 42.679 0.001 {"}80.938 42 0.001 {"}81.299 41.298 0.001 {"}81.491 40.509 0.001 {"}81.674 40 0.001 {"}81.762 39.762 0.001 {"}82 39.062 0.001 {"}82.425 38.425 0.001 {"}82.579 38 0.001 {"}82.93 37.07 0.001 {"}82.975 36.975 0.001 {"}83.248 36 0.001 {"}83.436 35.436 0.001 {"}83.668 34.332 0.001 {"}83.76 34 0.001 {"}83.809 33.809 0.001 {"}84 33.047 0.001 {"}84.368 32.368 0.001 {"}84.489 32 0.001 {"}84.737 31.263 0.001 {"}84.887 30.887 0.001 {"}85.135 30 0.001 {"}85.399 29.399 0.001 {"}85.694 28.306 0.001 {"}85.8 28 0.001 {"}85.852 27.852 0.001 {"}86 27.36 0.001 {"}86.489 26.489 0.001 {"}86.649 26 0.001 {"}86.945 25.055 0.001 {"}86.975 24.975 0.001 {"}87.232 24 0.001 {"}87.431 23.431 0.001 {"}87.711 22.289 0.001 {"}87.797 22 0.001 {"}87.845 21.845 0.001 {"}88 21.223 0.001 {"}88.374 20.374 0.001 {"}88.475 20 0.001 {"}88.645 19.355 0.001 {"}88.822 18.822 0.001 {"}89.001 18 0.001 {"}89.224 17.224 0.001 {"}89.3 16.7 0.001 {"}89.461 16 0.001 {"}89.587 15.587 0.001 {"}89.923 14.077 0.001 {"}89.944 14 0.001 {"}89.956 13.956 0.001 {"}90 13.765 0.001 {"}90.525 12.525 0.001 {"}90.657 12 0.001 {"}90.961 11.039 0.001 {"}90.984 10.984 0.001 {"}91.218 10 0.001 {"}91.457 9.457 0.001 {"}91.706 8.294 0.001 {"}91.8 8 0.001 {"}91.86 7.86 0.001 {"}92 7.453 0.001 {"}92.617 6.617 0.001 {"}92.851 6 0.001 {"}93.261 5.261 0.001 {"}93.449 4.551 0.001 {"}93.659 4 0.001 {"}93.767 3.767 0.001 {"}94 3.233 0.001 {"}94.58 2.58 0.001 {"}94.837 2 0.001 {"}95.241 1.241 0.001 {"}95.47 0.53 0.001 {"}95.684 0 0.001 {"}95.777 -0.223 0.001 {"}96 -0.786 0.001 {"}96.514 -1.486 0.001 {"}96.724 -2 0.001 {"}97.071 -2.929 0.001 {"}97.116 -3.116 0.001 {"}97.387 -4 0.001 {"}97.554 -4.446 0.001 {"}98 -5.831 0.001 {"}98.064 -5.936 0.001 {"}98.086 -6 0.001 {"}98.112 -6.112 0.001 {"}98.523 -7.477 0.001 {"}98.627 -8 0.001 {"}98.73 -8.73 0.001 {"}98.814 -9.186 0.001 {"}98.918 -10 0.001 {"}98.933 -10.933 0.001 {"}98.934 -11.066 0.001 {"}98.949 -12 0.001 {"}98.884 -12.884 0.001 {"}98.853 -13.147 0.001 {"}98.784 -14 0.001 {"}98.683 -14.683 0.001 {"}98.496 -15.504 0.001 {"}98.412 -16 0.001 {"}98.327 -16.327 0.001 {"}98 -17.03 0.001 {"}97.772 -17.772 0.001 {"}97.675 -18 0.001 {"}97.451 -18.549 0.001 {"}97.21 -19.21 0.001 {"}96.837 -20 0.001 {"}96.572 -20.572 0.001 {"}96 -21.267 0.001 {"}95.722 -21.722 0.001 {"}95.484 -22 0.001 {"}94.861 -22.861 0.001 {"}94 -23.655 0.001 {"}93.847 -23.847 0.001 {"}93.659 -24 0.001 {"}92.872 -24.872 0.001 {"}92 -25.528 0.001 {"}91.774 -25.774 0.001 {"}91.47 -26 0.001 {"}90.736 -26.736 0.001 {"}90 -27.161 0.001 {"}89.55 -27.55 0.001 {"}88.931 -28 0.001 {"}88.521 -28.521 0.001 {"}88 -28.909 0.001 {"}87.495 -29.495 0.001 {"}87.002 -30 0.001 {"}86.651 -30.651 0.001 {"}86 -31.46 0.001 {"}85.807 -31.807 0.001 {"}85.7 -32 0.001 {"}85.596 -32.404 0.001 {"}85.338 -33.338 0.001 {"}85.177 -34 0.001 {"}85.131 -34.869 0.001 {"}85.112 -35.112 0.001 {"}85.067 -36 0.001 {"}85.105 -36.895 0.001 {"}85.103 -37.103 0.001 {"}85.137 -38 0.001 {"}85.237 -38.763 0.001 {"}85.246 -39.246 0.001 {"}85.327 -40 0.001 {"}85.429 -40.571 0.001 {"}85.496 -41.496 0.001 {"}85.571 -42 0.001 {"}85.64 -42.36 0.001 {"}85.83 -43.83 0.001 {"}85.859 -44 0.001 {"}85.879 -44.121 0.001 {"}86 -44.887 0.001 {"}86.266 -45.734 0.001 {"}86.311 -46 0.001 {"}86.369 -46.369 0.001 {"}86.598 -47.402 0.001 {"}86.679 -48 0.001 {"}86.761 -48.761 0.001 {"}86.82 -49.18 0.001 {"}86.902 -50 0.001 {"}87.017 -50.983 0.001 {"}87.019 -51.019 0.001 {"}87.12 -52 0.001 {"}87.146 -52.854 0.001 {"}87.149 -53.149 0.001 {"}87.174 -54 0.001 {"}87.149 -54.851 0.001 {"}87.143 -55.143 0.001 {"}87.117 -56 0.001 {"}87.022 -56.978 0.001 {"}87.02 -57.02 0.001 {"}86.915 -58 0.001 {"}86.827 -58.827 0.001 {"}86.758 -59.242 0.001 {"}86.668 -60 0.001 {"}86.564 -60.564 0.001 {"}86.183 -61.817 0.001 {"}86.141 -62 0.001 {"}86.111 -62.111 0.001 {"}86 -62.34 0.001 {"}85.686 -63.686 0.001 {"}85.609 -64 0.001 {"}85.463 -64.537 0.001 {"}85.33 -65.33 0.001 {"}85.089 -66 0.001 {"}84.843 -66.843 0.001 {"}84.544 -67.456 0.001 {"}84.328 -68 0.001 {"}84.229 -68.229 0.001 {"}84 -68.512 0.001 {"}83.516 -69.516 0.001 {"}83.19 -70 0.001 {"}82.832 -70.832 0.001 {"}82 -71.925 0.001 {"}81.971 -71.971 0.001 {"}81.947 -72 0.001 {"}81.838 -72.162 0.001 {"}81.194 -73.194 0.001 {"}80.44 -74 0.001 {"}80.273 -74.273 0.001 {"}80 -74.499 0.001 {"}79.221 -75.221 0.001 {"}78.11 -76 0.001 {"}78.062 -76.062 0.001 {"}78 -76.104 0.001 {"}77.707 -76.293 0.001 {"}76.873 -76.873 0.001 {"}76 -77.295 0.001 {"}75.463 -77.463 0.001 {"}74.109 -77.891 0.001 {"}74 -77.925 0.001 {"}73.933 -77.933 0.001 {"}73.407 -78 0.001 {"}72.214 -78.214 0.001 {"}72 -78.238 0.001 {"}71.788 -78.212 0.001 {"}70.801 -78 0.001 {"}70.108 -77.892 0.001 {"}70 -77.87 0.001 {"}69.79 -77.79 0.001 {"}68.638 -77.362 0.001 {"}68 -77.108 0.001 {"}67.291 -76.709 0.001 {"}66.514 -76 0.001 {"}66.2 -75.8 0.001 {"}66 -75.615 0.001 {"}65.136 -74.864 0.001 {"}64.471 -74 0.001 {"}64.224 -73.776 0.001 {"}64 -73.486 0.001 {"}63.314 -72.686 0.001 {"}63.003 -72 0.001 {"}62.599 -71.401 0.001 {"}62 -70.101 0.001 {"}61.955 -70.045 0.001 {"}61.937 -70 0.001 {"}61.889 -69.889 0.001 {"}61.268 -68.732 0.001 {"}61.048 -68 0.001 {"}60.757 -67.243 0.001 {"}60.653 -66.653 0.001 {"}60.468 -66 0.001 {"}60.363 -65.637 0.001 {"}60 -64.129 0.001 {"}59.959 -64.041 0.001 {"}59.948 -64 0.001 {"}59.935 -63.935 0.001 {"}59.557 -62.443 0.001 {"}59.484 -62 0.001 {"}59.408 -61.408 0.001 {"}59.278 -60.722 0.001 {"}59.198 -60 0.001 {"}59.104 -59.104 0.001 {"}59.077 -58.923 0.001 {"}58.99 -58 0.001 {"}58.914 -57.086 0.001 {"}58.908 -56.908 0.001 {"}58.839 -56 0.001 {"}58.789 -55.211 0.001 {"}58.781 -54.781 0.001 {"}58.735 -54 0.001 {"}58.687 -53.313 0.001 {"}58.665 -52.665 0.001 {"}58.621 -52 0.001 {"}58.584 -51.416 0.001 {"}58.546 -50.546 0.001 {"}58.512 -50 0.001 {"}58.472 -49.528 0.001 {"}58.401 -48.401 0.001 {"}58.368 -48 0.001 {"}58.342 -47.658 0.001 {"}58.195 -46.195 0.001 {"}58.18 -46 0.001 {"}58.172 -45.828 0.001 {"}58.051 -44.051 0.001 {"}58.049 -44 0.001 {"}58.048 -43.952 0.001 {"}58 -42.97 0.001 {"}57.916 -42.084 0.001 {"}57.91 -42 0.001 {"}57.91 -41.91 0.001 {"}57.935 -40.065 0.001 {"}57.935 -40 0.001 {"}57.942 -39.942 0.001 {"}58 -39.612 0.001 {"}58.137 -38.137 0.001 {"}58.154 -38 0.001 {"}58.183 -37.817 0.001 {"}58.377 -36.377 0.001 {"}58.44 -36 0.001 {"}58.573 -35.427 0.001 {"}58.683 -34.683 0.001 {"}58.88 -34 0.001 {"}59.097 -33.097 0.001 {"}59.207 -32.793 0.001 {"}59.439 -32 0.001 {"}59.572 -31.572 0.001 {"}60 -30.793 0.001 {"}60.207 -30.207 0.001 {"}60.301 -30 0.001 {"}60.469 -29.531 0.001 {"}60.718 -28.718 0.001 {"}61.022 -28 0.001 {"}61.245 -27.245 0.001 {"}61.665 -26.335 0.001 {"}61.793 -26 0.001 {"}61.842 -25.842 0.001 {"}62 -25.536 0.001 {"}62.374 -24.374 0.001 {"}62.508 -24 0.001 {"}62.613 -23.387 0.001 {"}62.721 -22.721 0.001 {"}62.847 -22 0.001 {"}62.878 -21.122 0.001 {"}62.888 -20.888 0.001 {"}62.919 -20 0.001 {"}62.866 -19.134 0.001 {"}62.857 -18.857 0.001 {"}62.807 -18 0.001 {"}62.656 -17.344 0.001 {"}62.547 -16.547 0.001 {"}62.439 -16 0.001 {"}62.324 -15.676 0.001 {"}62 -14.477 0.001 {"}61.837 -14.163 0.001 {"}61.791 -14 0.001 {"}61.661 -13.661 0.001 {"}61.243 -12.757 0.001 {"}61.02 -12 0.001 {"}60.67 -11.33 0.001 {"}60.408 -10.408 0.001 {"}60.252 -10 0.001 {"}60.172 -9.828 0.001 {"}60 -9.391 0.001 {"}59.45 -8.55 0.001 {"}59.257 -8 0.001 {"}58.862 -7.138 0.001 {"}58.8 -6.8 0.001 {"}58.55 -6 0.001 {"}58.382 -5.618 0.001 {"}58 -4.524 0.001 {"}57.78 -4.22 0.001 {"}57.699 -4 0.001 {"}57.416 -3.416 0.001 {"}57.109 -2.891 0.001 {"}56.819 -2 0.001 {"}56.575 -1.425 0.001 {"}56.363 -0.363 0.001 {"}56.251 0 0.001 {"}56.155 0.155 0.001 {"}56 0.674 0.001 {"}55.439 1.439 0.001 {"}55.231 2 0.001 {"}54.752 2.752 0.001 {"}54.575 3.425 0.001 {"}54.345 4 0.001 {"}54.177 4.177 0.001 {"}54 4.548 0.001 {"}53.25 5.25 0.001 {"}52.868 6 0.001 {"}52.463 6.463 0.001 {"}52 7.552 0.001 {"}51.77 7.77 0.001 {"}51.651 8 0.001 {"}50.918 8.918 0.001 {"}50.849 9.151 0.001 {"}50.466 10 0.001 {"}50.265 10.265 0.001 {"}50 10.948 0.001 {"}49.484 11.484 0.001 {"}49.247 12 0.001 {"}48.753 12.753 0.001 {"}48.591 13.409 0.001 {"}48.357 14 0.001 {"}48.204 14.204 0.001 {"}48 14.807 0.001 {"}47.437 15.437 0.001 {"}47.203 16 0.001 {"}46.768 16.768 0.001 {"}46.646 17.354 0.001 {"}46.416 18 0.001 {"}46.243 18.243 0.001 {"}46 19.131 0.001 {"}45.605 19.605 0.001 {"}45.446 20 0.001 {"}44.914 20.914 0.001 {"}44.875 21.125 0.001 {"}44.569 22 0.001 {"}44.326 22.326 0.001 {"}44 23.532 0.001 {"}43.775 23.775 0.001 {"}43.675 24 0.001 {"}42.899 24.899 0.001 {"}42.817 25.183 0.001 {"}42.444 26 0.001 {"}42.225 26.225 0.001 {"}42 26.707 0.001 {"}41.272 27.272 0.001 {"}40.863 28 0.001 {"}40.457 28.457 0.001 {"}40 29.678 0.001 {"}39.836 29.836 0.001 {"}39.758 30 0.001 {"}38.999 30.999 0.001 {"}38.999 31.001 0.001 {"}38.604 32 0.001 {"}38.384 32.384 0.001 {"}38 33.949 0.001 {"}37.977 33.977 0.001 {"}37.968 34 0.001 {"}37.909 34.091 0.001 {"}37.132 35.132 0.001 {"}36.816 36 0.001 {"}36.494 36.494 0.001 {"}36.254 37.746 0.001 {"}36.161 38 0.001 {"}36.093 38.093 0.001 {"}36 38.42 0.001 {"}35.216 39.216 0.001 {"}34.879 40 0.001 {"}34.582 40.582 0.001 {"}34.358 41.642 0.001 {"}34.235 42 0.001 {"}34.144 42.144 0.001 {"}34 42.555 0.001 {"}33.299 43.299 0.001 {"}32.973 44 0.001 {"}32.588 44.588 0.001 {"}32.151 45.849 0.001 {"}32.083 46 0.001 {"}32.046 46.046 0.001 {"}32 46.137 0.001 {"}31.027 47.027 0.001 {"}30.503 48 0.001 {"}30.29 48.29 0.001 {"}30 48.93 0.001 {"}29.446 49.446 0.001 {"}29.137 50 0.001 {"}28.686 50.686 0.001 {"}28.346 51.654 0.001 {"}28.189 52 0.001 {"}28.123 52.123 0.001 {"}28 52.449 0.001 {"}27.309 53.309 0.001 {"}26.981 54 0.001 {"}26.643 54.643 0.001 {"}26.297 55.703 0.001 {"}26.177 56 0.001 {"}26.137 56.137 0.001 {"}26 56.532 0.001 {"}25.431 57.431 0.001 {"}25.215 58 0.001 {"}25.001 58.999 0.001 {"}25 59 0.001 {"}24.804 60 0.001 {"}24.723 60.723 0.001 {"}24.664 61.336 0.001 {"}24.592 62 0.001 {"}24.629 62.629 0.001 {"}24.626 63.374 0.001 {"}24.668 64 0.001 {"}24.771 64.771 0.001 {"}24.792 65.208 0.001 {"}24.921 66 0.001 {"}25.138 66.862 0.001 {"}25.317 67.317 0.001 {"}25.532 68 0.001 {"}25.666 68.334 0.001 {"}26 68.784 0.001 {"}26.416 69.584 0.001 {"}26.701 70 0.001 {"}27.206 70.794 0.001 {"}28 71.586 0.001 {"}28.19 71.81 0.001 {"}28.411 72 0.001 {"}29.184 72.816 0.001 {"}30 73.362 0.001 {"}30.357 73.643 0.001 {"}30.979 74 0.001 {"}31.549 74.451 0.001 {"}32 74.654 0.001 {"}32.898 75.102 0.001 {"}33.234 75.234 0.001 {"}34 75.565 0.001 {"}34.275 75.725 0.001 {"}35.042 76 0.001 {"}35.665 76.335 0.001 {"}36 76.44 0.001 {"}36.619 76.619 0.001 {"}37.175 76.825 0.001 {"}38 77.014 0.001 {"}38.766 77.234 0.001 {"}39.368 77.368 0.001 {"}40 77.532 0.001 {"}40.339 77.661 0.001 {"}41.58 78 0.001 {"}41.861 78.139 0.001 {"}42 78.18 0.001 {"}42.285 78.285 0.001 {"}43.276 78.724 0.001 {"}44 78.936 0.001 {"}44.742 79.258 0.001 {"}45.554 79.554 0.001 {"}46 79.729 0.001 {"}46.167 79.833 0.001 {"}46.487 80 0.001 {"}47.317 80.683 0.001 {"}48 81.021 0.001 {"}48.552 81.448 0.001 {"}49.41 82 0.001 {"}49.692 82.308 0.001 {"}50 82.496 0.001 {"}50.784 83.216 0.001 {"}51.852 84 0.001 {"}51.918 84.082 0.001 {"}52 84.14 0.001 {"}52.914 85.086 0.001 {"}53.939 85.939 0.001 {"}54 85.991 0.001 {"}54.004 85.996 0.001 {"}54.011 86 0.001 {"}55 87 0.001 {"}56 87.826 0.001 {"}56.085 87.915 0.001 {"}56.194 88 0.001 {"}57.094 88.906 0.001 {"}58 89.616 0.001 {"}58.191 89.809 0.001 {"}58.418 90 0.001 {"}59.174 90.826 0.001 {"}60 91.47 0.001 {"}60.286 91.714 0.001 {"}60.659 92 0.001 {"}61.32 92.68 0.001 {"}62 93.192 0.001 {"}62.45 93.55 0.001 {"}62.997 94 0.001 {"}63.458 94.542 0.001 {"}64 95.011 0.001 {"}64.549 95.451 0.001 {"}65.076 96 0.001 {"}65.448 96.552 0.001 {"}66 97.228 0.001 {"}66.375 97.625 0.001 {"}66.631 98 0.001 {"}67.004 98.996 0.001 {"}67.008 99.008 0.001 {"}67.325 100 0.001 {"}67.397 100.603 0.001 {"}67.508 101.508 0.001 {"}67.567 102 0.001 {"}67.614 102.386 0.001 {"}67.788 103.788 0.001 {"}67.814 104 0.001 {"}67.833 104.167 0.001 {"}68 105.491 0.001 {"}68.06 105.94 0.001 {"}68.066 106 0.001 {"}68.083 106.083 0.001 {"}68.422 107.578 0.001 {"}68.505 108 0.001 {"}68.659 108.659 0.001 {"}68.79 109.21 0.001 {"}68.973 110 0.001 {"}69.213 110.787 0.001 {"}69.395 111.395 0.001 {"}69.578 112 0.001 {"}69.696 112.304 0.001 {"}70 112.831 0.001 {"}70.457 113.543 0.001 {"}70.715 114 0.001 {"}71.178 114.822 0.001 {"}71.666 115.666 0.001 {"}71.858 116 0.001 {"}71.908 116.092 0.001 {"}72 116.208 0.001 {"}72.865 117.135 0.001 {"}73.545 118 0.001 {"}73.741 118.259 0.001 {"}74 118.551 0.001 {"}74.832 119.168 0.001 {"}75.805 120 0.001 {"}75.901 120.099 0.001 {"}76 120.192 0.001 {"}76.314 120.314 0.001 {"}77.287 120.713 0.001 {"}78 120.972 0.001 {"}78.916 120.916 0.001 {"}79.104 120.896 0.001 {"}80 120.837 0.001 {"}80.525 120.525 0.001 {"}81.167 120 0.001 {"}P 180 115.633 0.001 {"}179.92 115.92 0.001 {"}179.905 116 0.001 {"}179.888 116.112 0.001 {"}179.588 117.588 0.001 {"}179.533 118 0.001 {"}179.482 118.518 0.001 {"}179.364 119.364 0.001 {"}179.307 120 0.001 {"}179.206 120.794 0.001 {"}179.145 121.145 0.001 {"}179.047 122 0.001 {"}178.898 122.898 0.001 {"}178.879 123.121 0.001 {"}178.752 124 0.001 {"}178.599 124.599 0.001 {"}178.41 125.59 0.001 {"}178.316 126 0.001 {"}178.256 126.256 0.001 {"}178 127.329 0.001 {"}177.787 127.787 0.001 {"}177.73 128 0.001 {"}177.639 128.361 0.001 {"}177.338 129.338 0.001 {"}177.195 130 0.001 {"}176.985 130.985 0.001 {"}176.978 131.022 0.001 {"}176.779 132 0.001 {"}176.619 132.619 0.001 {"}176.403 133.597 0.001 {"}176.305 134 0.001 {"}176.245 134.245 0.001 {"}176 135.397 0.001 {"}175.841 135.841 0.001 {"}175.805 136 0.001 {"}175.759 136.241 0.001 {"}175.482 137.482 0.001 {"}175.391 138 0.001 {"}175.301 138.699 0.001 {"}175.216 139.216 0.001 {"}175.123 140 0.001 {"}174.988 140.988 0.001 {"}174.985 141.015 0.001 {"}174.858 142 0.001 {"}174.686 142.686 0.001 {"}174.553 143.447 0.001 {"}174.431 144 0.001 {"}174.291 144.291 0.001 {"}174 145.121 0.001 {"}173.667 145.667 0.001 {"}173.558 146 0.001 {"}173.2 146.8 0.001 {"}173.064 147.064 0.001 {"}172.736 148 0.001 {"}172.46 148.46 0.001 {"}172 149.46 0.001 {"}171.759 149.759 0.001 {"}171.658 150 0.001 {"}171.435 150.565 0.001 {"}171.16 151.16 0.001 {"}170.896 152 0.001 {"}170.63 152.63 0.001 {"}170.325 153.675 0.001 {"}170.211 154 0.001 {"}170.155 154.155 0.001 {"}170 154.693 0.001 {"}169.581 155.581 0.001 {"}169.471 156 0.001 {"}169.357 156.643 0.001 {"}169.215 157.215 0.001 {"}169.098 158 0.001 {"}169.051 158.949 0.001 {"}169.045 159.045 0.001 {"}168.999 160 0.001 {"}169.015 160.985 0.001 {"}169.016 161.016 0.001 {"}169.032 162 0.001 {"}169.071 162.929 0.001 {"}169.079 163.079 0.001 {"}169.118 164 0.001 {"}169.192 164.808 0.001 {"}169.259 165.259 0.001 {"}169.335 166 0.001 {"}169.365 166.635 0.001 {"}169.422 167.422 0.001 {"}169.451 168 0.001 {"}169.463 168.537 0.001 {"}169.48 169.48 0.001 {"}169.492 170 0.001 {"}169.494 170.506 0.001 {"}169.498 171.498 0.001 {"}169.501 172 0.001 {"}169.511 172.489 0.001 {"}169.548 173.548 0.001 {"}169.558 174 0.001 {"}169.599 174.401 0.001 {"}169.831 175.831 0.001 {"}169.85 176 0.001 {"}169.872 176.128 0.001 {"}170 176.552 0.001 {"}170.206 177.794 0.001 {"}170.256 178 0.001 {"}170.353 178.353 0.001 {"}170.58 179.42 0.001 {"}170.77 180 0.001 {"}P 83.212 180 0.001 {"}83.483 179.483 0.001 {"}84 178.247 0.001 {"}84.103 178.103 0.001 {"}84.148 178 0.001 {"}84.264 177.736 0.001 {"}84.758 176.758 0.001 {"}85.018 176 0.001 {"}85.303 175.303 0.001 {"}85.678 174.322 0.001 {"}85.805 174 0.001 {"}85.861 173.861 0.001 {"}86 173.518 0.001 {"}86.562 172.562 0.001 {"}86.786 172 0.001 {"}87.143 171.143 0.001 {"}87.336 170.664 0.001 {"}87.608 170 0.001 {"}87.735 169.735 0.001 {"}88 169.115 0.001 {"}88.405 168.405 0.001 {"}88.554 168 0.001 {"}88.793 167.207 0.001 {"}88.901 166.901 0.001 {"}89.135 166 0.001 {"}89.273 165.273 0.001 {"}89.438 164.562 0.001 {"}89.553 164 0.001 {"}89.602 163.602 0.001 {"}89.752 162.248 0.001 {"}89.782 162 0.001 {"}89.782 161.782 0.001 {"}89.806 160.194 0.001 {"}89.807 160 0.001 {"}89.786 159.786 0.001 {"}89.664 158.336 0.001 {"}89.63 158 0.001 {"}89.57 157.57 0.001 {"}89.432 156.568 0.001 {"}89.353 156 0.001 {"}89.213 155.213 0.001 {"}89.152 154.848 0.001 {"}88.997 154 0.001 {"}88.84 153.16 0.001 {"}88.743 152.743 0.001 {"}88.594 152 0.001 {"}88.513 151.487 0.001 {"}88.162 150.162 0.001 {"}88.131 150 0.001 {"}88.114 149.886 0.001 {"}88 149.46 0.001 {"}87.727 148.273 0.001 {"}87.667 148 0.001 {"}87.606 147.606 0.001 {"}87.489 146.511 0.001 {"}87.401 146 0.001 {"}87.316 145.316 0.001 {"}87.27 144.73 0.001 {"}87.17 144 0.001 {"}87.082 143.082 0.001 {"}87.068 142.932 0.001 {"}86.978 142 0.001 {"}86.875 141.125 0.001 {"}86.835 140.835 0.001 {"}86.734 140 0.001 {"}86.625 139.375 0.001 {"}86.444 138.444 0.001 {"}86.364 138 0.001 {"}86.297 137.703 0.001 {"}86 136.847 0.001 {"}85.741 136.259 0.001 {"}85.625 136 0.001 {"}85.303 135.303 0.001 {"}85.112 134.888 0.001 {"}84.697 134 0.001 {"}84.428 133.572 0.001 {"}84 133.046 0.001 {"}83.443 132.557 0.001 {"}82.972 132 0.001 {"}82.522 131.478 0.001 {"}82 131.028 0.001 {"}81.25 130.75 0.001 {"}80.369 130.369 0.001 {"}80 130.22 0.001 {"}79.741 130.259 0.001 {"}78.47 130.47 0.001 {"}78 130.539 0.001 {"}77.176 131.176 0.001 {"}76.326 132 0.001 {"}76.166 132.166 0.001 {"}76 132.29 0.001 {"}75.276 133.276 0.001 {"}74.801 134 0.001 {"}74.48 134.48 0.001 {"}74 135.063 0.001 {"}73.648 135.648 0.001 {"}73.492 136 0.001 {"}73.101 136.899 0.001 {"}73.041 137.041 0.001 {"}72.604 138 0.001 {"}72.393 138.393 0.001 {"}72 138.994 0.001 {"}71.642 139.642 0.001 {"}71.505 140 0.001 {"}71.169 140.831 0.001 {"}71.073 141.073 0.001 {"}70.686 142 0.001 {"}70.447 142.447 0.001 {"}70 143.178 0.001 {"}69.71 143.71 0.001 {"}69.608 144 0.001 {"}69.148 144.852 0.001 {"}69.042 145.042 0.001 {"}68.56 146 0.001 {"}68.342 146.342 0.001 {"}68 146.87 0.001 {"}67.543 147.543 0.001 {"}67.35 148 0.001 {"}66.866 148.866 0.001 {"}66.598 149.402 0.001 {"}66.288 150 0.001 {"}66.157 150.157 0.001 {"}66 150.378 0.001 {"}65.297 151.297 0.001 {"}64.986 152 0.001 {"}64.589 152.589 0.001 {"}64 153.62 0.001 {"}63.824 153.824 0.001 {"}63.741 154 0.001 {"}63.485 154.515 0.001 {"}63.135 155.135 0.001 {"}62.805 156 0.001 {"}62.511 156.511 0.001 {"}62 157.592 0.001 {"}61.828 157.828 0.001 {"}61.755 158 0.001 {"}61.592 158.408 0.001 {"}61.214 159.214 0.001 {"}60.964 160 0.001 {"}60.671 160.671 0.001 {"}60.396 161.604 0.001 {"}60.254 162 0.001 {"}60.19 162.19 0.001 {"}60 162.793 0.001 {"}59.601 163.601 0.001 {"}59.476 164 0.001 {"}59.282 164.718 0.001 {"}59.142 165.142 0.001 {"}58.947 166 0.001 {"}58.751 166.751 0.001 {"}58.652 167.348 0.001 {"}58.506 168 0.001 {"}58.427 168.427 0.001 {"}58.197 169.803 0.001 {"}58.162 170 0.001 {"}58.14 170.14 0.001 {"}58 171.028 0.001 {"}57.793 171.793 0.001 {"}57.755 172 0.001 {"}57.732 172.268 0.001 {"}57.592 173.592 0.001 {"}57.559 174 0.001 {"}57.537 174.463 0.001 {"}57.49 175.49 0.001 {"}57.465 176 0.001 {"}57.437 176.563 0.001 {"}57.389 177.389 0.001 {"}57.359 178 0.001 {"}57.264 178.736 0.001 {"}57.191 179.191 0.001 {"}57.094 180 0.001 {"}P -57.61 180 0.001 {"}-56.811 179.189 0.001 {"}-56.567 178.567 0.001 {"}-56.265 178 0.001 {"}-56.135 177.865 0.001 {"}-56 177.613 0.001 {"}-55.151 176.849 0.001 {"}-54.716 176 0.001 {"}-54.42 175.58 0.001 {"}-54 174.365 0.001 {"}-53.817 174.183 0.001 {"}-53.728 174 0.001 {"}-52.981 173.019 0.001 {"}-52.969 172.969 0.001 {"}-52.571 172 0.001 {"}-52.343 171.657 0.001 {"}-52 170.746 0.001 {"}-51.633 170.367 0.001 {"}-51.468 170 0.001 {"}-50.846 169.154 0.001 {"}-50.735 168.735 0.001 {"}-50.425 168 0.001 {"}-50.24 167.76 0.001 {"}-50 167.125 0.001 {"}-49.435 166.565 0.001 {"}-49.143 166 0.001 {"}-48.633 165.367 0.001 {"}-48.221 164.221 0.001 {"}-48.113 164 0.001 {"}-48.054 163.946 0.001 {"}-48 163.833 0.001 {"}-47.045 162.955 0.001 {"}-46.564 162 0.001 {"}-46.316 161.684 0.001 {"}-46 160.932 0.001 {"}-45.511 160.489 0.001 {"}-45.247 160 0.001 {"}-44.746 159.254 0.001 {"}-44.553 158.553 0.001 {"}-44.324 158 0.001 {"}-44.19 157.81 0.001 {"}-44 157.311 0.001 {"}-43.349 156.651 0.001 {"}-43.008 156 0.001 {"}-42.539 155.461 0.001 {"}-42 154.282 0.001 {"}-41.86 154.14 0.001 {"}-41.79 154 0.001 {"}-41.091 153.091 0.001 {"}-41.008 152.992 0.001 {"}-40.606 152 0.001 {"}-40.39 151.61 0.001 {"}-40 150.404 0.001 {"}-39.81 150.19 0.001 {"}-39.72 150 0.001 {"}-39.2 149.2 0.001 {"}-39.031 148.969 0.001 {"}-38.642 148 0.001 {"}-38.38 147.62 0.001 {"}-38 146.874 0.001 {"}-37.524 146.476 0.001 {"}-37.24 146 0.001 {"}-36.635 145.365 0.001 {"}-36 144.179 0.001 {"}-35.908 144.092 0.001 {"}-35.856 144 0.001 {"}-34.995 143.005 0.001 {"}-34.99 142.99 0.001 {"}-34.515 142 0.001 {"}-34.304 141.696 0.001 {"}-34 141.031 0.001 {"}-33.484 140.516 0.001 {"}-33.212 140 0.001 {"}-32.722 139.278 0.001 {"}-32.414 138.414 0.001 {"}-32.223 138 0.001 {"}-32.14 137.86 0.001 {"}-32 137.522 0.001 {"}-31.32 136.68 0.001 {"}-31.002 136 0.001 {"}-30.618 135.382 0.001 {"}-30.169 134.169 0.001 {"}-30.092 134 0.001 {"}-30.06 133.94 0.001 {"}-30 133.796 0.001 {"}-29.213 132.787 0.001 {"}-28.848 132 0.001 {"}-28.511 131.489 0.001 {"}-28 130.404 0.001 {"}-27.798 130.202 0.001 {"}-27.685 130 0.001 {"}-27.2 129.2 0.001 {"}-27.039 128.961 0.001 {"}-26.629 128 0.001 {"}-26.409 127.591 0.001 {"}-26 126.597 0.001 {"}-25.731 126.269 0.001 {"}-25.608 126 0.001 {"}-25.41 125.41 0.001 {"}-25.176 124.824 0.001 {"}-24.948 124 0.001 {"}-24.795 123.205 0.001 {"}-24.74 122.74 0.001 {"}-24.615 122 0.001 {"}-24.567 121.433 0.001 {"}-24.476 120.476 0.001 {"}-24.435 120 0.001 {"}-24.484 119.516 0.001 {"}-24.525 118.525 0.001 {"}-24.585 118 0.001 {"}-24.707 117.293 0.001 {"}-24.77 116.77 0.001 {"}-24.921 116 0.001 {"}-25.178 115.178 0.001 {"}-25.559 114.441 0.001 {"}-25.748 114 0.001 {"}-25.828 113.828 0.001 {"}-26 113.643 0.001 {"}-26.613 112.613 0.001 {"}-27.118 112 0.001 {"}-27.474 111.474 0.001 {"}-28 111.062 0.001 {"}-28.505 110.505 0.001 {"}-29.175 110 0.001 {"}-29.571 109.571 0.001 {"}-30 109.339 0.001 {"}-30.84 108.84 0.001 {"}-31.366 108.634 0.001 {"}-32 108.342 0.001 {"}-32.217 108.217 0.001 {"}-32.809 108 0.001 {"}-33.56 107.56 0.001 {"}-34 107.428 0.001 {"}-34.76 107.24 0.001 {"}-35.123 107.123 0.001 {"}-36 106.945 0.001 {"}-36.747 106.747 0.001 {"}-37.341 106.659 0.001 {"}-38 106.514 0.001 {"}-38.414 106.414 0.001 {"}-39.794 106.206 0.001 {"}-40 106.163 0.001 {"}-40.132 106.132 0.001 {"}-40.806 106 0.001 {"}-41.682 105.682 0.001 {"}-42 105.619 0.001 {"}-42.499 105.501 0.001 {"}-43.259 105.259 0.001 {"}-44 105.118 0.001 {"}-44.885 104.885 0.001 {"}-45.162 104.838 0.001 {"}-46 104.648 0.001 {"}-46.474 104.474 0.001 {"}-47.85 104.15 0.001 {"}-48 104.105 0.001 {"}-48.076 104.076 0.001 {"}-48.315 104 0.001 {"}-49.417 103.417 0.001 {"}-50 103.25 0.001 {"}-50.919 102.919 0.001 {"}-51.115 102.885 0.001 {"}-52 102.644 0.001 {"}-52.466 102.466 0.001 {"}-53.915 102.085 0.001 {"}-54 102.057 0.001 {"}-54.041 102.041 0.001 {"}-54.183 102 0.001 {"}-55.353 101.353 0.001 {"}-56 101.132 0.001 {"}-56.692 100.692 0.001 {"}-57.578 100.422 0.001 {"}-58 100.244 0.001 {"}-58.127 100.127 0.001 {"}-58.316 100 0.001 {"}-59.022 99.022 0.001 {"}-60 98.285 0.001 {"}-60.112 98.112 0.001 {"}-60.207 98 0.001 {"}-60.39 97.61 0.001 {"}-60.718 96.718 0.001 {"}-61.212 96 0.001 {"}-61.457 95.457 0.001 {"}-62 94.77 0.001 {"}-62.205 94.205 0.001 {"}-62.309 94 0.001 {"}-62.458 93.542 0.001 {"}-62.655 92.655 0.001 {"}-62.942 92 0.001 {"}-63.187 91.187 0.001 {"}-63.523 90.477 0.001 {"}-63.71 90 0.001 {"}-63.789 89.789 0.001 {"}-64 89.475 0.001 {"}-64.296 88.296 0.001 {"}-64.379 88 0.001 {"}-64.448 87.552 0.001 {"}-64.569 86.569 0.001 {"}-64.664 86 0.001 {"}-64.777 85.223 0.001 {"}-64.813 84.813 0.001 {"}-64.949 84 0.001 {"}-64.998 83.002 0.001 {"}-64.998 82.998 0.001 {"}-65.049 82 0.001 {"}-64.972 81.028 0.001 {"}-64.971 80.971 0.001 {"}-64.9 80 0.001 {"}-64.84 79.16 0.001 {"}-64.824 78.824 0.001 {"}-64.767 78 0.001 {"}-64.776 77.224 0.001 {"}-64.772 76.772 0.001 {"}-64.783 76 0.001 {"}-64.884 75.116 0.001 {"}-64.894 74.894 0.001 {"}-65.015 74 0.001 {"}-65.151 73.151 0.001 {"}-65.265 72.735 0.001 {"}-65.408 72 0.001 {"}-65.506 71.506 0.001 {"}-66 70.21 0.001 {"}-66.027 70.027 0.001 {"}-66.034 70 0.001 {"}-66.042 69.958 0.001 {"}-66.248 68.248 0.001 {"}-66.309 68 0.001 {"}-66.344 67.656 0.001 {"}-66.431 66.431 0.001 {"}-66.476 66 0.001 {"}-66.524 65.476 0.001 {"}-66.567 64.567 0.001 {"}-66.624 64 0.001 {"}-66.691 63.309 0.001 {"}-66.718 62.718 0.001 {"}-66.796 62 0.001 {"}-66.864 61.136 0.001 {"}-66.866 60.866 0.001 {"}-66.945 60 0.001 {"}-66.99 59.01 0.001 {"}-66.99 58.99 0.001 {"}-67.041 58 0.001 {"}-67.031 57.031 0.001 {"}-67.033 56.967 0.001 {"}-67.023 56 0.001 {"}-67.017 55.017 0.001 {"}-67.017 54.983 0.001 {"}-67.011 54 0.001 {"}-67.067 53.067 0.001 {"}-67.079 52.921 0.001 {"}-67.137 52 0.001 {"}-67.249 51.249 0.001 {"}-67.392 50.608 0.001 {"}-67.495 50 0.001 {"}-67.597 49.597 0.001 {"}-68 48.67 0.001 {"}-68.125 48.125 0.001 {"}-68.155 48 0.001 {"}-68.218 47.782 0.001 {"}-68.5 46.5 0.001 {"}-68.675 46 0.001 {"}-68.911 45.089 0.001 {"}-68.935 44.935 0.001 {"}-69.256 44 0.001 {"}-69.409 43.409 0.001 {"}-70 42.188 0.001 {"}-70.043 42.043 0.001 {"}-70.059 42 0.001 {"}-70.08 41.92 0.001 {"}-70.406 40.406 0.001 {"}-70.532 40 0.001 {"}-70.638 39.362 0.001 {"}-70.693 38.693 0.001 {"}-70.834 38 0.001 {"}-70.901 37.099 0.001 {"}-70.91 36.91 0.001 {"}-70.982 36 0.001 {"}-71.061 35.061 0.001 {"}-71.079 34.921 0.001 {"}-71.163 34 0.001 {"}-71.254 33.254 0.001 {"}-71.355 32.645 0.001 {"}-71.441 32 0.001 {"}-71.515 31.515 0.001 {"}-71.859 30.141 0.001 {"}-71.884 30 0.001 {"}-71.9 29.9 0.001 {"}-72 29.491 0.001 {"}-72.184 28.184 0.001 {"}-72.211 28 0.001 {"}-72.218 27.782 0.001 {"}-72.271 26.271 0.001 {"}-72.279 26 0.001 {"}-72.254 25.746 0.001 {"}-72.208 24.208 0.001 {"}-72.19 24 0.001 {"}-72.15 23.85 0.001 {"}-72 23.052 0.001 {"}-71.727 22.273 0.001 {"}-71.676 22 0.001 {"}-71.529 21.529 0.001 {"}-71.221 20.779 0.001 {"}-71.038 20 0.001 {"}-70.645 19.355 0.001 {"}-70.303 18.303 0.001 {"}-70.174 18 0.001 {"}-70.095 17.905 0.001 {"}-70 17.731 0.001 {"}-69.141 16.859 0.001 {"}-68.704 16 0.001 {"}-68.334 15.666 0.001 {"}-68 15.191 0.001 {"}-67.335 14.665 0.001 {"}-66.911 14 0.001 {"}-66.411 13.589 0.001 {"}-66 13.001 0.001 {"}-65.443 12.557 0.001 {"}-65.098 12 0.001 {"}-64.526 11.474 0.001 {"}-64 10.543 0.001 {"}-63.715 10.285 0.001 {"}-63.557 10 0.001 {"}-62.802 9.198 0.001 {"}-62.595 8.595 0.001 {"}-62.298 8 0.001 {"}-62.149 7.851 0.001 {"}-62 7.55 0.001 {"}-61.199 6.801 0.001 {"}-60.806 6 0.001 {"}-60.497 5.503 0.001 {"}-60.068 4.068 0.001 {"}-60.04 4 0.001 {"}-60.021 3.979 0.001 {"}-60 3.92 0.001 {"}-59.082 2.918 0.001 {"}-58.656 2 0.001 {"}-58.34 1.66 0.001 {"}-58 0.841 0.001 {"}-57.544 0.456 0.001 {"}-57.287 0 0.001 {"}-56.64 -0.64 0.001 {"}-56.319 -1.681 0.001 {"}-56.163 -2 0.001 {"}-56.072 -2.072 0.001 {"}-56 -2.254 0.001 {"}-55.038 -3.038 0.001 {"}-54.518 -4 0.001 {"}-54.247 -4.247 0.001 {"}-54 -4.725 0.001 {"}-53.258 -5.258 0.001 {"}-52.822 -6 0.001 {"}-52.411 -6.411 0.001 {"}-52 -7.392 0.001 {"}-51.678 -7.678 0.001 {"}-51.505 -8 0.001 {"}-50.826 -8.826 0.001 {"}-50.708 -9.292 0.001 {"}-50.403 -10 0.001 {"}-50.232 -10.232 0.001 {"}-50 -10.932 0.001 {"}-49.466 -11.466 0.001 {"}-49.212 -12 0.001 {"}-48.717 -12.717 0.001 {"}-48.598 -13.402 0.001 {"}-48.379 -14 0.001 {"}-48.185 -14.185 0.001 {"}-48 -15.023 0.001 {"}-47.538 -15.538 0.001 {"}-47.373 -16 0.001 {"}-46.757 -16.757 0.001 {"}-46.705 -17.295 0.001 {"}-46.456 -18 0.001 {"}-46.228 -18.228 0.001 {"}-46 -19.221 0.001 {"}-45.595 -19.595 0.001 {"}-45.425 -20 0.001 {"}-44.695 -20.695 0.001 {"}-44.515 -21.485 0.001 {"}-44.284 -22 0.001 {"}-44.124 -22.124 0.001 {"}-44 -22.477 0.001 {"}-43.123 -23.123 0.001 {"}-42.669 -24 0.001 {"}-42.306 -24.306 0.001 {"}-42 -25.166 0.001 {"}-41.529 -25.529 0.001 {"}-41.295 -26 0.001 {"}-40.71 -26.71 0.001 {"}-40.545 -27.455 0.001 {"}-40.319 -28 0.001 {"}-40.191 -28.191 0.001 {"}-40 -28.897 0.001 {"}-39.443 -29.443 0.001 {"}-39.165 -30 0.001 {"}-38.624 -30.624 0.001 {"}-38 -31.999 0.001 {"}-37.999 -31.999 0.001 {"}-37.999 -32 0.001 {"}-36.944 -32.944 0.001 {"}-36.874 -33.126 0.001 {"}-36.399 -34 0.001 {"}-36.212 -34.212 0.001 {"}-36 -34.621 0.001 {"}-35.271 -35.271 0.001 {"}-34.891 -36 0.001 {"}-34.557 -36.557 0.001 {"}-34.214 -37.786 0.001 {"}-34.129 -38 0.001 {"}-34.081 -38.081 0.001 {"}-34 -38.297 0.001 {"}-33.193 -39.193 0.001 {"}-32.815 -40 0.001 {"}-32.514 -40.514 0.001 {"}-32 -41.795 0.001 {"}-31.896 -41.896 0.001 {"}-31.837 -42 0.001 {"}-31.193 -42.807 0.001 {"}-31.016 -43.016 0.001 {"}-30.554 -44 0.001 {"}-30.352 -44.352 0.001 {"}-30 -45.025 0.001 {"}-29.517 -45.517 0.001 {"}-29.264 -46 0.001 {"}-28.803 -46.803 0.001 {"}-28.655 -47.345 0.001 {"}-28.4 -48 0.001 {"}-28.272 -48.272 0.001 {"}-28 -48.879 0.001 {"}-27.484 -49.484 0.001 {"}-27.238 -50 0.001 {"}-26.83 -50.83 0.001 {"}-26.709 -51.291 0.001 {"}-26.453 -52 0.001 {"}-26.333 -52.333 0.001 {"}-26 -53.232 0.001 {"}-25.671 -53.671 0.001 {"}-25.527 -54 0.001 {"}-25.303 -54.697 0.001 {"}-25.137 -55.137 0.001 {"}-24.9 -56 0.001 {"}-24.715 -56.715 0.001 {"}-24.578 -57.422 0.001 {"}-24.443 -58 0.001 {"}-24.402 -58.402 0.001 {"}-24.223 -59.777 0.001 {"}-24.199 -60 0.001 {"}-24.206 -60.206 0.001 {"}-24.171 -61.829 0.001 {"}-24.178 -62 0.001 {"}-24.224 -62.224 0.001 {"}-24.395 -63.605 0.001 {"}-24.496 -64 0.001 {"}-24.735 -64.735 0.001 {"}-24.85 -65.15 0.001 {"}-25.168 -66 0.001 {"}-25.427 -66.573 0.001 {"}-26 -67.314 0.001 {"}-26.258 -67.742 0.001 {"}-26.489 -68 0.001 {"}-27.168 -68.832 0.001 {"}-28 -69.502 0.001 {"}-28.25 -69.75 0.001 {"}-28.615 -70 0.001 {"}-29.37 -70.63 0.001 {"}-30 -70.923 0.001 {"}-30.701 -71.299 0.001 {"}-31.654 -71.654 0.001 {"}-32 -71.804 0.001 {"}-32.135 -71.865 0.001 {"}-32.54 -72 0.001 {"}-33.524 -72.476 0.001 {"}-34 -72.605 0.001 {"}-34.751 -72.751 0.001 {"}-35.15 -72.85 0.001 {"}-36 -72.994 0.001 {"}-36.921 -73.079 0.001 {"}-37.086 -73.086 0.001 {"}-38 -73.163 0.001 {"}-38.793 -73.207 0.001 {"}-39.208 -73.208 0.001 {"}-40 -73.248 0.001 {"}-40.758 -73.242 0.001 {"}-41.234 -73.234 0.001 {"}-42 -73.228 0.001 {"}-42.836 -73.164 0.001 {"}-43.149 -73.149 0.001 {"}-44 -73.08 0.001 {"}-44.979 -72.979 0.001 {"}-45.027 -72.973 0.001 {"}-46 -72.867 0.001 {"}-46.785 -72.785 0.001 {"}-47.311 -72.689 0.001 {"}-48 -72.607 0.001 {"}-48.579 -72.579 0.001 {"}-49.497 -72.503 0.001 {"}-50 -72.477 0.001 {"}-50.511 -72.511 0.001 {"}-51.423 -72.577 0.001 {"}-52 -72.615 0.001 {"}-52.846 -72.846 0.001 {"}-53.08 -72.92 0.001 {"}-54 -73.144 0.001 {"}-54.541 -73.459 0.001 {"}-55.827 -74 0.001 {"}-55.924 -74.076 0.001 {"}-56 -74.11 0.001 {"}-56.248 -74.248 0.001 {"}-57.175 -74.825 0.001 {"}-58 -75.166 0.001 {"}-58.518 -75.482 0.001 {"}-59.635 -76 0.001 {"}-59.838 -76.162 0.001 {"}-60 -76.238 0.001 {"}-60.429 -76.429 0.001 {"}-61.187 -76.813 0.001 {"}-62 -77.104 0.001 {"}-62.616 -77.384 0.001 {"}-63.909 -77.909 0.001 {"}-64 -77.948 0.001 {"}-64.037 -77.963 0.001 {"}-64.138 -78 0.001 {"}-65.36 -78.64 0.001 {"}-66 -78.866 0.001 {"}-66.835 -79.165 0.001 {"}-67.348 -79.348 0.001 {"}-68 -79.581 0.001 {"}-68.275 -79.725 0.001 {"}-68.879 -80 0.001 {"}-69.556 -80.444 0.001 {"}-70 -80.639 0.001 {"}-70.897 -81.103 0.001 {"}-71.318 -81.318 0.001 {"}-72 -81.669 0.001 {"}-72.179 -81.821 0.001 {"}-72.414 -82 0.001 {"}-73.218 -82.782 0.001 {"}-74 -83.343 0.001 {"}-74.333 -83.667 0.001 {"}-74.657 -84 0.001 {"}-75.238 -84.762 0.001 {"}-76 -85.473 0.001 {"}-76.241 -85.759 0.001 {"}-76.461 -86 0.001 {"}-77.054 -86.946 0.001 {"}-77.313 -87.313 0.001 {"}-77.787 -88 0.001 {"}-77.862 -88.138 0.001 {"}-78 -88.291 0.001 {"}-78.681 -89.319 0.001 {"}-79.139 -90 0.001 {"}-79.427 -90.573 0.001 {"}-80 -91.337 0.001 {"}-80.256 -91.744 0.001 {"}-80.442 -92 0.001 {"}-80.9 -92.9 0.001 {"}-80.967 -93.033 0.001 {"}-81.482 -94 0.001 {"}-81.629 -94.371 0.001 {"}-82 -94.981 0.001 {"}-82.358 -95.642 0.001 {"}-82.538 -96 0.001 {"}-82.823 -96.823 0.001 {"}-82.914 -97.086 0.001 {"}-83.23 -98 0.001 {"}-83.365 -98.635 0.001 {"}-83.621 -99.621 0.001 {"}-83.708 -100 0.001 {"}-83.763 -100.237 0.001 {"}-84 -100.986 0.001 {"}-84.225 -101.775 0.001 {"}-84.277 -102 0.001 {"}-84.336 -102.336 0.001 {"}-84.561 -103.439 0.001 {"}-84.653 -104 0.001 {"}-84.82 -104.82 0.001 {"}-84.879 -105.121 0.001 {"}-85.062 -106 0.001 {"}-85.204 -106.796 0.001 {"}-85.302 -107.302 0.001 {"}-85.43 -108 0.001 {"}-85.54 -108.46 0.001 {"}-86 -109.784 0.001 {"}-86.053 -109.947 0.001 {"}-86.072 -110 0.001 {"}-86.101 -110.101 0.001 {"}-86.535 -111.465 0.001 {"}-86.672 -112 0.001 {"}-86.965 -112.965 0.001 {"}-86.98 -113.02 0.001 {"}-87.299 -114 0.001 {"}-87.442 -114.558 0.001 {"}-87.899 -115.899 0.001 {"}-87.929 -116 0.001 {"}-87.943 -116.057 0.001 {"}-88 -116.216 0.001 {"}-88.406 -117.594 0.001 {"}-88.507 -118 0.001 {"}-88.581 -118.581 0.001 {"}-88.699 -119.301 0.001 {"}-88.781 -120 0.001 {"}-88.787 -120.787 0.001 {"}-88.796 -121.204 0.001 {"}-88.802 -122 0.001 {"}-88.736 -122.736 0.001 {"}-88.673 -123.327 0.001 {"}-88.61 -124 0.001 {"}-88.475 -124.475 0.001 {"}-88.113 -125.887 0.001 {"}-88.082 -126 0.001 {"}-88.056 -126.056 0.001 {"}-88 -126.211 0.001 {"}-87.455 -127.455 0.001 {"}-87.292 -128 0.001 {"}-86.942 -128.942 0.001 {"}-86.888 -129.112 0.001 {"}-86.582 -130 0.001 {"}-86.383 -130.383 0.001 {"}-86 -131.2 0.001 {"}-85.69 -131.69 0.001 {"}-85.576 -132 0.001 {"}-85.344 -132.656 0.001 {"}-85.147 -133.147 0.001 {"}-84.886 -134 0.001 {"}-84.664 -134.664 0.001 {"}-84.375 -135.624 0.001 {"}-84.256 -136 0.001 {"}-84.178 -136.178 0.001 {"}-84 -136.663 0.001 {"}-83.541 -137.541 0.001 {"}-83.397 -138 0.001 {"}-83.132 -138.868 0.001 {"}-83.063 -139.063 0.001 {"}-82.813 -140 0.001 {"}-82.585 -140.585 0.001 {"}-82.122 -141.878 0.001 {"}-82.076 -142 0.001 {"}-82.055 -142.055 0.001 {"}-82 -142.22 0.001 {"}-81.448 -143.448 0.001 {"}-81.285 -144 0.001 {"}-80.991 -144.991 0.001 {"}-80.985 -145.015 0.001 {"}-80.717 -146 0.001 {"}-80.5 -146.5 0.001 {"}-80 -147.769 0.001 {"}-79.911 -147.911 0.001 {"}-79.879 -148 0.001 {"}-79.766 -148.234 0.001 {"}-79.224 -149.224 0.001 {"}-78.934 -150 0.001 {"}-78.613 -150.613 0.001 {"}-78 -151.85 0.001 {"}-77.932 -151.932 0.001 {"}-77.898 -152 0.001 {"}-77.727 -152.273 0.001 {"}-77.142 -153.142 0.001 {"}-76.723 -154 0.001 {"}-76.379 -154.379 0.001 {"}-76 -154.912 0.001 {"}-75.444 -155.444 0.001 {"}-75.138 -156 0.001 {"}-74.54 -156.54 0.001 {"}-74 -157.234 0.001 {"}-73.576 -157.576 0.001 {"}-73.329 -158 0.001 {"}-72.624 -158.624 0.001 {"}-72 -159.485 0.001 {"}-71.719 -159.719 0.001 {"}-71.558 -160 0.001 {"}-70.836 -160.836 0.001 {"}-70.633 -161.367 0.001 {"}-70.311 -162 0.001 {"}-70.179 -162.179 0.001 {"}-70 -162.536 0.001 {"}-69.305 -163.305 0.001 {"}-68.98 -164 0.001 {"}-68.54 -164.54 0.001 {"}-68 -165.752 0.001 {"}-67.877 -165.877 0.001 {"}-67.813 -166 0.001 {"}-66.935 -166.935 0.001 {"}-66.886 -167.114 0.001 {"}-66.479 -168 0.001 {"}-66.256 -168.256 0.001 {"}-66 -168.785 0.001 {"}-65.366 -169.366 0.001 {"}-65.039 -170 0.001 {"}-64.549 -170.549 0.001 {"}-64 -171.731 0.001 {"}-63.863 -171.863 0.001 {"}-63.794 -172 0.001 {"}-62.921 -172.921 0.001 {"}-62.83 -173.17 0.001 {"}-62.405 -174 0.001 {"}-62.208 -174.208 0.001 {"}-62 -174.575 0.001 {"}-61.212 -175.212 0.001 {"}-60.749 -176 0.001 {"}-60.38 -176.38 0.001 {"}-60 -177.071 0.001 {"}-59.489 -177.489 0.001 {"}-59.165 -178 0.001 {"}-58.575 -178.575 0.001 {"}-58 -179.55 0.001 {"}-57.758 -179.758 0.001 {"}-57.61 -180 0.001 @vectorlist {Favored} color= sky master= {Favored} {level 0.02}P -173.453 -180 0.02 {"}-172.887 -179.113 0.02 {"}-172.241 -178.241 0.02 {"}-172.067 -178 0.02 {"}-172.042 -177.958 0.02 {"}-172 -177.906 0.02 {"}-171.227 -176.773 0.02 {"}-170.548 -176 0.02 {"}-170.31 -175.69 0.02 {"}-170 -175.355 0.02 {"}-169.401 -174.599 0.02 {"}-168.773 -174 0.02 {"}-168.409 -173.591 0.02 {"}-168 -173.201 0.02 {"}-167.417 -172.583 0.02 {"}-166.689 -172 0.02 {"}-166.334 -171.666 0.02 {"}-166 -171.389 0.02 {"}-165.222 -170.778 0.02 {"}-164.007 -170 0.02 {"}-164.003 -169.997 0.02 {"}-164 -169.995 0.02 {"}-163.987 -169.987 0.02 {"}-162.791 -169.209 0.02 {"}-162 -168.719 0.02 {"}-161.542 -168.458 0.02 {"}-160.613 -168 0.02 {"}-160.233 -167.767 0.02 {"}-160 -167.623 0.02 {"}-159.154 -167.154 0.02 {"}-158.958 -167.042 0.02 {"}-158 -166.55 0.02 {"}-157.623 -166.377 0.02 {"}-156.66 -166 0.02 {"}-156.206 -165.794 0.02 {"}-156 -165.704 0.02 {"}-155.525 -165.525 0.02 {"}-154.772 -165.228 0.02 {"}-154 -164.951 0.02 {"}-153.226 -164.774 0.02 {"}-152.652 -164.652 0.02 {"}-152 -164.507 0.02 {"}-151.538 -164.462 0.02 {"}-150.367 -164.367 0.02 {"}-150 -164.332 0.02 {"}-149.661 -164.339 0.02 {"}-148.356 -164.356 0.02 {"}-148 -164.364 0.02 {"}-147.59 -164.41 0.02 {"}-146.505 -164.505 0.02 {"}-146 -164.565 0.02 {"}-145.315 -164.685 0.02 {"}-144.767 -164.767 0.02 {"}-144 -164.909 0.02 {"}-143.116 -165.116 0.02 {"}-142.798 -165.202 0.02 {"}-142 -165.401 0.02 {"}-141.522 -165.522 0.02 {"}-140.009 -166 0.02 {"}-140.002 -166.002 0.02 {"}-140 -166.003 0.02 {"}-139.996 -166.004 0.02 {"}-138.456 -166.456 0.02 {"}-138 -166.627 0.02 {"}-137.121 -166.879 0.02 {"}-136.927 -166.927 0.02 {"}-136 -167.222 0.02 {"}-135.378 -167.378 0.02 {"}-134.326 -167.674 0.02 {"}-134 -167.76 0.02 {"}-133.802 -167.802 0.02 {"}-132.991 -168 0.02 {"}-132.172 -168.172 0.02 {"}-132 -168.217 0.02 {"}-131.714 -168.286 0.02 {"}-130.547 -168.547 0.02 {"}-130 -168.685 0.02 {"}-129.157 -168.843 0.02 {"}-128.888 -168.888 0.02 {"}-128 -169.063 0.02 {"}-127.19 -169.19 0.02 {"}-126.739 -169.261 0.02 {"}-126 -169.376 0.02 {"}-125.468 -169.468 0.02 {"}-124.373 -169.627 0.02 {"}-124 -169.689 0.02 {"}-123.749 -169.749 0.02 {"}-122.555 -170 0.02 {"}-122.087 -170.087 0.02 {"}-122 -170.106 0.02 {"}-121.855 -170.145 0.02 {"}-120.506 -170.506 0.02 {"}-120 -170.642 0.02 {"}-119.164 -170.836 0.02 {"}-118.897 -170.897 0.02 {"}-118 -171.107 0.02 {"}-117.269 -171.269 0.02 {"}-116.585 -171.415 0.02 {"}-116 -171.543 0.02 {"}-115.627 -171.627 0.02 {"}-114.015 -171.985 0.02 {"}-114 -171.988 0.02 {"}-113.99 -171.99 0.02 {"}-113.92 -172 0.02 {"}-112.236 -172.236 0.02 {"}-112 -172.257 0.02 {"}-111.746 -172.254 0.02 {"}-110.286 -172.286 0.02 {"}-110 -172.283 0.02 {"}-109.736 -172.264 0.02 {"}-108.144 -172.144 0.02 {"}-108 -172.134 0.02 {"}-107.871 -172.129 0.02 {"}-106.018 -172.018 0.02 {"}-106 -172.017 0.02 {"}-105.984 -172.016 0.02 {"}-105.602 -172 0.02 {"}-104.084 -171.916 0.02 {"}-104 -171.907 0.02 {"}-103.893 -171.893 0.02 {"}-102.285 -171.715 0.02 {"}-102 -171.677 0.02 {"}-101.578 -171.578 0.02 {"}-100.66 -171.34 0.02 {"}-100 -171.194 0.02 {"}-99.107 -170.893 0.02 {"}-98.817 -170.817 0.02 {"}-98 -170.57 0.02 {"}-97.603 -170.397 0.02 {"}-96.283 -170 0.02 {"}-96.075 -169.925 0.02 {"}-96 -169.903 0.02 {"}-95.831 -169.831 0.02 {"}-94.706 -169.294 0.02 {"}-94 -169.045 0.02 {"}-93.248 -168.752 0.02 {"}-92.59 -168.59 0.02 {"}-92 -168.403 0.02 {"}-91.693 -168.307 0.02 {"}-90.017 -168.017 0.02 {"}-90 -168.013 0.02 {"}-89.989 -168.011 0.02 {"}-89.865 -168 0.02 {"}-88.175 -167.825 0.02 {"}-88 -167.82 0.02 {"}-87.829 -167.829 0.02 {"}-86.167 -167.833 0.02 {"}-86 -167.842 0.02 {"}-85.863 -167.863 0.02 {"}-84.783 -168 0.02 {"}-84.072 -168.072 0.02 {"}-84 -168.076 0.02 {"}-83.901 -168.099 0.02 {"}-82.429 -168.429 0.02 {"}-82 -168.532 0.02 {"}-81.105 -168.895 0.02 {"}-80.952 -168.952 0.02 {"}-80 -169.376 0.02 {"}-79.585 -169.585 0.02 {"}-78.957 -170 0.02 {"}-78.346 -170.346 0.02 {"}-78 -170.616 0.02 {"}-77.238 -171.238 0.02 {"}-76.475 -172 0.02 {"}-76.224 -172.224 0.02 {"}-76 -172.488 0.02 {"}-75.271 -173.271 0.02 {"}-74.714 -174 0.02 {"}-74.382 -174.382 0.02 {"}-74 -174.928 0.02 {"}-73.499 -175.499 0.02 {"}-73.13 -176 0.02 {"}-72.589 -176.589 0.02 {"}-72 -177.388 0.02 {"}-71.711 -177.711 0.02 {"}-71.513 -178 0.02 {"}-70.783 -178.783 0.02 {"}-70 -179.832 0.02 {"}-69.917 -179.917 0.02 {"}-69.862 -180 0.02 {"}P 55.707 -124 0.02 {"}55.806 -124.194 0.02 {"}56 -124.703 0.02 {"}56.254 -125.746 0.02 {"}56.303 -126 0.02 {"}56.287 -126.287 0.02 {"}56.237 -127.763 0.02 {"}56.224 -128 0.02 {"}56.175 -128.175 0.02 {"}56 -128.822 0.02 {"}55.657 -129.657 0.02 {"}55.506 -130 0.02 {"}54.859 -130.859 0.02 {"}54 -131.87 0.02 {"}53.895 -131.895 0.02 {"}53.372 -132 0.02 {"}52.203 -132.203 0.02 {"}52 -132.232 0.02 {"}51.852 -132.148 0.02 {"}51.589 -132 0.02 {"}50.644 -131.356 0.02 {"}50 -130.871 0.02 {"}49.662 -130.338 0.02 {"}49.452 -130 0.02 {"}49.161 -129.161 0.02 {"}49.076 -128.924 0.02 {"}48.769 -128 0.02 {"}48.782 -127.218 0.02 {"}48.786 -126.786 0.02 {"}48.8 -126 0.02 {"}49.138 -125.138 0.02 {"}49.365 -124.635 0.02 {"}49.637 -124 0.02 {"}49.792 -123.792 0.02 {"}50 -123.528 0.02 {"}50.921 -122.921 0.02 {"}51.333 -122.667 0.02 {"}52 -122.248 0.02 {"}52.273 -122.273 0.02 {"}53.659 -122.341 0.02 {"}54 -122.375 0.02 {"}54.874 -123.126 0.02 {"}55.707 -124 0.02 {"}P -129.271 52 0.02 {"}-128.533 51.467 0.02 {"}-128 51.078 0.02 {"}-127.474 50.526 0.02 {"}-126.969 50 0.02 {"}-126.435 49.565 0.02 {"}-126 49.235 0.02 {"}-125.335 48.665 0.02 {"}-124.451 48 0.02 {"}-124.156 47.844 0.02 {"}-124 47.771 0.02 {"}-123.604 47.604 0.02 {"}-122.764 47.236 0.02 {"}-122 46.931 0.02 {"}-121.323 46.677 0.02 {"}-120.3 46.3 0.02 {"}-120 46.189 0.02 {"}-119.868 46.132 0.02 {"}-119.564 46 0.02 {"}-118.43 45.57 0.02 {"}-118 45.365 0.02 {"}-117.14 44.86 0.02 {"}-116.246 44.246 0.02 {"}-116 44.082 0.02 {"}-115.952 44.048 0.02 {"}-115.889 44 0.02 {"}-114.779 43.221 0.02 {"}-114 42.593 0.02 {"}-113.658 42.342 0.02 {"}-113.192 42 0.02 {"}-112.469 41.531 0.02 {"}-112 41.2 0.02 {"}-111.241 40.759 0.02 {"}-110.027 40.027 0.02 {"}-110 40.011 0.02 {"}-109.993 40.007 0.02 {"}-109.976 40 0.02 {"}-108.548 39.452 0.02 {"}-108 39.22 0.02 {"}-107.1 38.9 0.02 {"}-106.771 38.771 0.02 {"}-106 38.481 0.02 {"}-105.651 38.349 0.02 {"}-104.814 38 0.02 {"}-104.195 37.805 0.02 {"}-104 37.73 0.02 {"}-103.524 37.524 0.02 {"}-102.772 37.228 0.02 {"}-102 36.843 0.02 {"}-101.445 36.555 0.02 {"}-100.609 36 0.02 {"}-100.201 35.799 0.02 {"}-100 35.656 0.02 {"}-99.033 34.967 0.02 {"}-98.039 34 0.02 {"}-98.016 33.984 0.02 {"}-98 33.968 0.02 {"}-97.692 33.692 0.02 {"}-96.956 33.044 0.02 {"}-96.539 32.539 0.02 {"}-96.082 32 0.02 {"}-96.037 31.963 0.02 {"}-96 31.921 0.02 {"}-95.018 30.982 0.02 {"}-94.19 30 0.02 {"}-94.086 29.914 0.02 {"}-94 29.819 0.02 {"}-93.048 28.952 0.02 {"}-92.184 28 0.02 {"}-92.083 27.917 0.02 {"}-92 27.826 0.02 {"}-91.043 26.957 0.02 {"}-90.191 26 0.02 {"}-90.09 25.91 0.02 {"}-90 25.799 0.02 {"}-89.08 24.92 0.02 {"}-88.302 24 0.02 {"}-88.147 23.853 0.02 {"}-88 23.663 0.02 {"}-87.196 22.804 0.02 {"}-86.58 22 0.02 {"}-86.291 21.709 0.02 {"}-86 21.29 0.02 {"}-85.421 20.579 0.02 {"}-85.052 20 0.02 {"}-84.551 19.449 0.02 {"}-84 18.581 0.02 {"}-83.741 18.259 0.02 {"}-83.59 18 0.02 {"}-82.819 17.181 0.02 {"}-82 16.074 0.02 {"}-81.963 16.037 0.02 {"}-81.939 16 0.02 {"}-80.952 15.048 0.02 {"}-80.556 14.556 0.02 {"}-80.097 14 0.02 {"}-80.045 13.955 0.02 {"}-80 13.9 0.02 {"}-79.012 12.988 0.02 {"}-78.167 12 0.02 {"}-78.071 11.929 0.02 {"}-78 11.853 0.02 {"}-77.358 11.358 0.02 {"}-76.946 11.054 0.02 {"}-76 10.092 0.02 {"}-75.946 10.054 0.02 {"}-75.899 10 0.02 {"}-74.759 9.241 0.02 {"}-74 8.475 0.02 {"}-73.724 8.276 0.02 {"}-73.497 8 0.02 {"}-72.662 7.338 0.02 {"}-72 6.556 0.02 {"}-71.69 6.31 0.02 {"}-71.46 6 0.02 {"}-70.667 5.333 0.02 {"}-70 4.5 0.02 {"}-69.722 4.278 0.02 {"}-69.519 4 0.02 {"}-68.669 3.331 0.02 {"}-68 2.467 0.02 {"}-67.746 2.254 0.02 {"}-67.581 2 0.02 {"}-66.758 1.242 0.02 {"}-66.012 0.012 0.02 {"}-66.004 0 0.02 {"}-66.002 -0.002 0.02 {"}-66 -0.005 0.02 {"}-65.043 -1.043 0.02 {"}-64.499 -2 0.02 {"}-64.245 -2.245 0.02 {"}-64 -2.717 0.02 {"}-63.35 -3.35 0.02 {"}-62.965 -4 0.02 {"}-62.476 -4.476 0.02 {"}-62 -5.345 0.02 {"}-61.656 -5.656 0.02 {"}-61.455 -6 0.02 {"}-60.733 -6.733 0.02 {"}-60.245 -7.755 0.02 {"}-60.102 -8 0.02 {"}-60.048 -8.048 0.02 {"}-60 -8.164 0.02 {"}-59.122 -9.122 0.02 {"}-58.664 -10 0.02 {"}-58.324 -10.324 0.02 {"}-58 -11.013 0.02 {"}-57.48 -11.48 0.02 {"}-57.183 -12 0.02 {"}-56.587 -12.587 0.02 {"}-56 -13.924 0.02 {"}-55.963 -13.963 0.02 {"}-55.945 -14 0.02 {"}-55.487 -14.513 0.02 {"}-55.02 -15.02 0.02 {"}-54.522 -16 0.02 {"}-54.253 -16.253 0.02 {"}-54 -16.869 0.02 {"}-53.426 -17.426 0.02 {"}-53.126 -18 0.02 {"}-52.612 -18.612 0.02 {"}-52.137 -19.863 0.02 {"}-52.068 -20 0.02 {"}-52.037 -20.037 0.02 {"}-52 -20.152 0.02 {"}-51.168 -21.168 0.02 {"}-50.802 -22 0.02 {"}-50.472 -22.472 0.02 {"}-50 -23.763 0.02 {"}-49.888 -23.888 0.02 {"}-49.835 -24 0.02 {"}-49.353 -24.647 0.02 {"}-49.039 -25.039 0.02 {"}-48.587 -26 0.02 {"}-48.345 -26.345 0.02 {"}-48 -27.357 0.02 {"}-47.711 -27.711 0.02 {"}-47.581 -28 0.02 {"}-46.963 -28.963 0.02 {"}-46.931 -29.069 0.02 {"}-46.539 -30 0.02 {"}-46.324 -30.324 0.02 {"}-46 -31.227 0.02 {"}-45.659 -31.659 0.02 {"}-45.517 -32 0.02 {"}-44.987 -32.987 0.02 {"}-44.977 -33.023 0.02 {"}-44.599 -34 0.02 {"}-44.401 -34.401 0.02 {"}-44 -35.599 0.02 {"}-43.832 -35.832 0.02 {"}-43.76 -36 0.02 {"}-43.476 -36.524 0.02 {"}-43.115 -37.115 0.02 {"}-42.761 -38 0.02 {"}-42.515 -38.515 0.02 {"}-42.072 -39.928 0.02 {"}-42.044 -40 0.02 {"}-42.032 -40.032 0.02 {"}-42 -40.16 0.02 {"}-41.394 -41.394 0.02 {"}-41.19 -42 0.02 {"}-40.866 -42.866 0.02 {"}-40.778 -43.222 0.02 {"}-40.536 -44 0.02 {"}-40.412 -44.412 0.02 {"}-40.109 -45.891 0.02 {"}-40.08 -46 0.02 {"}-40.066 -46.066 0.02 {"}-40 -46.453 0.02 {"}-39.647 -47.647 0.02 {"}-39.575 -48 0.02 {"}-39.502 -48.498 0.02 {"}-39.362 -49.362 0.02 {"}-39.271 -50 0.02 {"}-39.25 -50.75 0.02 {"}-39.26 -51.26 0.02 {"}-39.237 -52 0.02 {"}-39.301 -52.699 0.02 {"}-39.428 -53.428 0.02 {"}-39.489 -54 0.02 {"}-39.585 -54.415 0.02 {"}-40 -55.554 0.02 {"}-40.096 -55.904 0.02 {"}-40.142 -56 0.02 {"}-40.333 -56.333 0.02 {"}-40.78 -57.22 0.02 {"}-41.4 -58 0.02 {"}-41.656 -58.344 0.02 {"}-42 -58.651 0.02 {"}-42.694 -59.306 0.02 {"}-43.879 -60 0.02 {"}-43.95 -60.05 0.02 {"}-44 -60.072 0.02 {"}-44.127 -60.127 0.02 {"}-45.297 -60.703 0.02 {"}-46 -60.949 0.02 {"}-46.811 -61.189 0.02 {"}-47.27 -61.27 0.02 {"}-48 -61.45 0.02 {"}-48.459 -61.541 0.02 {"}-49.653 -61.653 0.02 {"}-50 -61.711 0.02 {"}-50.257 -61.743 0.02 {"}-51.818 -61.818 0.02 {"}-52 -61.838 0.02 {"}-52.159 -61.841 0.02 {"}-53.844 -61.844 0.02 {"}-54 -61.848 0.02 {"}-54.146 -61.854 0.02 {"}-55.896 -61.896 0.02 {"}-56 -61.9 0.02 {"}-56.088 -61.912 0.02 {"}-57.278 -62 0.02 {"}-57.914 -62.086 0.02 {"}-58 -62.094 0.02 {"}-58.098 -62.098 0.02 {"}-59.806 -62.194 0.02 {"}-60 -62.203 0.02 {"}-60.191 -62.191 0.02 {"}-61.989 -62.011 0.02 {"}-62 -62.01 0.02 {"}-62.009 -62.009 0.02 {"}-62.064 -62 0.02 {"}-63.837 -61.837 0.02 {"}-64 -61.81 0.02 {"}-64.232 -61.768 0.02 {"}-65.608 -61.608 0.02 {"}-66 -61.523 0.02 {"}-66.581 -61.419 0.02 {"}-67.341 -61.341 0.02 {"}-68 -61.199 0.02 {"}-68.91 -61.09 0.02 {"}-69.085 -61.085 0.02 {"}-70 -60.95 0.02 {"}-70.938 -60.938 0.02 {"}-71.075 -60.925 0.02 {"}-72 -60.912 0.02 {"}-72.988 -60.988 0.02 {"}-73.011 -60.989 0.02 {"}-74 -61.069 0.02 {"}-74.84 -61.16 0.02 {"}-75.211 -61.211 0.02 {"}-76 -61.301 0.02 {"}-76.643 -61.357 0.02 {"}-77.44 -61.44 0.02 {"}-78 -61.491 0.02 {"}-78.524 -61.476 0.02 {"}-79.474 -61.474 0.02 {"}-80 -61.457 0.02 {"}-80.636 -61.364 0.02 {"}-81.295 -61.295 0.02 {"}-82 -61.181 0.02 {"}-82.988 -60.988 0.02 {"}-83.022 -60.978 0.02 {"}-84 -60.759 0.02 {"}-84.661 -60.661 0.02 {"}-85.507 -60.493 0.02 {"}-86 -60.413 0.02 {"}-86.387 -60.387 0.02 {"}-87.724 -60.276 0.02 {"}-88 -60.256 0.02 {"}-88.243 -60.243 0.02 {"}-89.843 -60.157 0.02 {"}-90 -60.148 0.02 {"}-90.129 -60.129 0.02 {"}-90.985 -60 0.02 {"}-91.89 -59.89 0.02 {"}-92 -59.871 0.02 {"}-92.179 -59.821 0.02 {"}-93.501 -59.501 0.02 {"}-94 -59.347 0.02 {"}-94.899 -59.101 0.02 {"}-95.062 -59.062 0.02 {"}-96 -58.779 0.02 {"}-96.643 -58.643 0.02 {"}-97.602 -58.398 0.02 {"}-98 -58.308 0.02 {"}-98.273 -58.273 0.02 {"}-99.808 -58 0.02 {"}-99.976 -57.976 0.02 {"}-100 -57.971 0.02 {"}-100.035 -57.965 0.02 {"}-101.807 -57.807 0.02 {"}-102 -57.769 0.02 {"}-102.267 -57.733 0.02 {"}-103.692 -57.692 0.02 {"}-104 -57.639 0.02 {"}-104.361 -57.639 0.02 {"}-105.749 -57.749 0.02 {"}-106 -57.749 0.02 {"}-106.208 -57.792 0.02 {"}-107.064 -58 0.02 {"}-107.816 -58.184 0.02 {"}-108 -58.235 0.02 {"}-108.353 -58.353 0.02 {"}-109.312 -58.688 0.02 {"}-110 -58.91 0.02 {"}-110.854 -59.146 0.02 {"}-111.243 -59.243 0.02 {"}-112 -59.444 0.02 {"}-112.506 -59.494 0.02 {"}-113.635 -59.635 0.02 {"}-114 -59.673 0.02 {"}-114.388 -59.612 0.02 {"}-115.495 -59.495 0.02 {"}-116 -59.405 0.02 {"}-116.993 -58.993 0.02 {"}-117.024 -58.976 0.02 {"}-118 -58.495 0.02 {"}-118.307 -58.307 0.02 {"}-118.705 -58 0.02 {"}-119.386 -57.386 0.02 {"}-120 -56.642 0.02 {"}-120.286 -56.286 0.02 {"}-120.472 -56 0.02 {"}-120.929 -55.071 0.02 {"}-120.978 -54.978 0.02 {"}-121.391 -54 0.02 {"}-121.529 -53.529 0.02 {"}-121.897 -52.103 0.02 {"}-121.925 -52 0.02 {"}-121.942 -51.942 0.02 {"}-122 -51.74 0.02 {"}-122.389 -50.389 0.02 {"}-122.484 -50 0.02 {"}-122.723 -49.277 0.02 {"}-122.868 -48.868 0.02 {"}-123.136 -48 0.02 {"}-123.372 -47.372 0.02 {"}-123.767 -46.233 0.02 {"}-123.851 -46 0.02 {"}-123.889 -45.889 0.02 {"}-124 -45.584 0.02 {"}-124.389 -44.389 0.02 {"}-124.525 -44 0.02 {"}-124.9 -43.1 0.02 {"}-124.958 -42.958 0.02 {"}-125.363 -42 0.02 {"}-125.582 -41.582 0.02 {"}-126 -40.762 0.02 {"}-126.229 -40.229 0.02 {"}-126.323 -40 0.02 {"}-126.618 -39.382 0.02 {"}-126.873 -38.873 0.02 {"}-127.256 -38 0.02 {"}-127.49 -37.49 0.02 {"}-128 -36.166 0.02 {"}-128.042 -36.042 0.02 {"}-128.056 -36 0.02 {"}-128.086 -35.914 0.02 {"}-128.56 -34.56 0.02 {"}-128.751 -34 0.02 {"}-129.08 -33.08 0.02 {"}-129.159 -32.841 0.02 {"}-129.448 -32 0.02 {"}-129.588 -31.588 0.02 {"}-130 -30.366 0.02 {"}-130.096 -30.096 0.02 {"}-130.134 -30 0.02 {"}-130.24 -29.76 0.02 {"}-130.704 -28.704 0.02 {"}-131.016 -28 0.02 {"}-131.347 -27.347 0.02 {"}-131.871 -26.129 0.02 {"}-131.93 -26 0.02 {"}-131.952 -25.952 0.02 {"}-132 -25.82 0.02 {"}-132.526 -24.526 0.02 {"}-132.719 -24 0.02 {"}-133.045 -23.045 0.02 {"}-133.083 -22.917 0.02 {"}-133.376 -22 0.02 {"}-133.514 -21.514 0.02 {"}-133.841 -20.159 0.02 {"}-133.883 -20 0.02 {"}-133.909 -19.909 0.02 {"}-134 -19.466 0.02 {"}-134.279 -18.279 0.02 {"}-134.343 -18 0.02 {"}-134.474 -17.526 0.02 {"}-134.718 -16.718 0.02 {"}-134.902 -16 0.02 {"}-135.142 -15.142 0.02 {"}-135.231 -14.769 0.02 {"}-135.432 -14 0.02 {"}-135.54 -13.54 0.02 {"}-135.81 -12.19 0.02 {"}-135.852 -12 0.02 {"}-135.869 -11.869 0.02 {"}-136 -10.535 0.02 {"}-136.058 -10.058 0.02 {"}-136.066 -10 0.02 {"}-136.073 -9.927 0.02 {"}-136.215 -8.215 0.02 {"}-136.237 -8 0.02 {"}-136.268 -7.732 0.02 {"}-136.392 -6.392 0.02 {"}-136.44 -6 0.02 {"}-136.565 -5.435 0.02 {"}-136.717 -4.717 0.02 {"}-136.879 -4 0.02 {"}-137.178 -3.178 0.02 {"}-137.376 -2.624 0.02 {"}-137.601 -2 0.02 {"}-137.728 -1.728 0.02 {"}-138 -1.122 0.02 {"}-138.377 -0.377 0.02 {"}-138.564 0 0.02 {"}-139.032 0.968 0.02 {"}-139.086 1.086 0.02 {"}-139.51 2 0.02 {"}-139.641 2.359 0.02 {"}-140 3.453 0.02 {"}-140.141 3.859 0.02 {"}-140.191 4 0.02 {"}-140.272 4.272 0.02 {"}-140.612 5.388 0.02 {"}-140.793 6 0.02 {"}-141.046 6.954 0.02 {"}-141.076 7.076 0.02 {"}-141.313 8 0.02 {"}-141.437 8.563 0.02 {"}-141.681 9.681 0.02 {"}-141.751 10 0.02 {"}-141.784 10.216 0.02 {"}-142 11.634 0.02 {"}-142.049 11.951 0.02 {"}-142.058 12 0.02 {"}-142.069 12.069 0.02 {"}-142.282 13.718 0.02 {"}-142.328 14 0.02 {"}-142.372 14.372 0.02 {"}-142.483 15.517 0.02 {"}-142.543 16 0.02 {"}-142.592 16.592 0.02 {"}-142.637 17.363 0.02 {"}-142.693 18 0.02 {"}-142.711 18.711 0.02 {"}-142.72 19.28 0.02 {"}-142.738 20 0.02 {"}-142.689 20.689 0.02 {"}-142.646 21.354 0.02 {"}-142.601 22 0.02 {"}-142.486 22.486 0.02 {"}-142.178 23.822 0.02 {"}-142.137 24 0.02 {"}-142.1 24.1 0.02 {"}-142 24.369 0.02 {"}-141.574 25.574 0.02 {"}-141.43 26 0.02 {"}-141.083 26.917 0.02 {"}-141.037 27.037 0.02 {"}-140.682 28 0.02 {"}-140.525 28.525 0.02 {"}-140.171 29.829 0.02 {"}-140.122 30 0.02 {"}-140.106 30.106 0.02 {"}-140 30.878 0.02 {"}-139.882 31.882 0.02 {"}-139.864 32 0.02 {"}-139.85 32.15 0.02 {"}-139.737 33.737 0.02 {"}-139.711 34 0.02 {"}-139.707 34.293 0.02 {"}-139.7 35.7 0.02 {"}-139.695 36 0.02 {"}-139.699 36.301 0.02 {"}-139.746 37.746 0.02 {"}-139.75 38 0.02 {"}-139.748 38.252 0.02 {"}-139.803 39.803 0.02 {"}-139.802 40 0.02 {"}-139.784 40.216 0.02 {"}-139.758 41.758 0.02 {"}-139.735 42 0.02 {"}-139.672 42.328 0.02 {"}-139.52 43.52 0.02 {"}-139.411 44 0.02 {"}-139.149 44.851 0.02 {"}-139.092 45.092 0.02 {"}-138.746 46 0.02 {"}-138.559 46.559 0.02 {"}-138 47.914 0.02 {"}-137.977 47.977 0.02 {"}-137.965 48 0.02 {"}-137.942 48.058 0.02 {"}-137.468 49.468 0.02 {"}-137.212 50 0.02 {"}-136.835 50.835 0.02 {"}-136.368 51.632 0.02 {"}-136.168 52 0.02 {"}-136.113 52.113 0.02 {"}-136 52.279 0.02 {"}-135.058 53.058 0.02 {"}-134.809 53.191 0.02 {"}-134 53.676 0.02 {"}-133.676 53.676 0.02 {"}-132.429 53.571 0.02 {"}-132 53.571 0.02 {"}-131.133 53.133 0.02 {"}-130.96 53.04 0.02 {"}-130 52.612 0.02 {"}-129.67 52.33 0.02 {"}-129.271 52 0.02 {"}P 52.435 64 0.02 {"}53.952 63.952 0.02 {"}54 63.947 0.02 {"}54.069 63.931 0.02 {"}55.669 63.669 0.02 {"}56 63.574 0.02 {"}56.74 63.26 0.02 {"}57.124 63.124 0.02 {"}58 62.652 0.02 {"}58.386 62.386 0.02 {"}58.818 62 0.02 {"}59.511 61.511 0.02 {"}60 60.971 0.02 {"}60.447 60.447 0.02 {"}60.726 60 0.02 {"}61.279 59.279 0.02 {"}61.804 58.196 0.02 {"}61.913 58 0.02 {"}61.946 57.946 0.02 {"}62 57.808 0.02 {"}62.58 56.58 0.02 {"}62.778 56 0.02 {"}63.137 55.137 0.02 {"}63.262 54.738 0.02 {"}63.527 54 0.02 {"}63.664 53.664 0.02 {"}64 52.494 0.02 {"}64.146 52.146 0.02 {"}64.19 52 0.02 {"}64.318 51.682 0.02 {"}64.747 50.747 0.02 {"}64.994 50 0.02 {"}65.296 49.296 0.02 {"}65.543 48.457 0.02 {"}65.706 48 0.02 {"}65.792 47.792 0.02 {"}66 47.069 0.02 {"}66.324 46.324 0.02 {"}66.421 46 0.02 {"}66.698 45.302 0.02 {"}66.884 44.884 0.02 {"}67.183 44 0.02 {"}67.417 43.417 0.02 {"}67.735 42.265 0.02 {"}67.824 42 0.02 {"}67.872 41.872 0.02 {"}68 41.343 0.02 {"}68.389 40.389 0.02 {"}68.506 40 0.02 {"}68.835 39.165 0.02 {"}68.935 38.935 0.02 {"}69.257 38 0.02 {"}69.488 37.488 0.02 {"}70 36.01 0.02 {"}70.004 36.004 0.02 {"}70.005 36 0.02 {"}70.011 35.989 0.02 {"}70.723 34.723 0.02 {"}71.024 34 0.02 {"}71.325 33.325 0.02 {"}71.661 32.339 0.02 {"}71.792 32 0.02 {"}71.847 31.847 0.02 {"}72 31.284 0.02 {"}72.359 30.359 0.02 {"}72.461 30 0.02 {"}72.652 29.348 0.02 {"}72.821 28.821 0.02 {"}73.043 28 0.02 {"}73.258 27.258 0.02 {"}73.426 26.574 0.02 {"}73.581 26 0.02 {"}73.674 25.674 0.02 {"}74 24.296 0.02 {"}74.075 24.075 0.02 {"}74.095 24 0.02 {"}74.148 23.852 0.02 {"}74.637 22.637 0.02 {"}74.833 22 0.02 {"}75.16 21.16 0.02 {"}75.308 20.692 0.02 {"}75.551 20 0.02 {"}75.66 19.66 0.02 {"}76 18.357 0.02 {"}76.096 18.096 0.02 {"}76.122 18 0.02 {"}76.164 17.836 0.02 {"}76.536 16.536 0.02 {"}76.662 16 0.02 {"}76.887 15.113 0.02 {"}76.934 14.934 0.02 {"}77.165 14 0.02 {"}77.35 13.35 0.02 {"}77.579 12.421 0.02 {"}77.692 12 0.02 {"}77.762 11.762 0.02 {"}78 10.888 0.02 {"}78.232 10.232 0.02 {"}78.303 10 0.02 {"}78.474 9.526 0.02 {"}78.763 8.763 0.02 {"}79.026 8 0.02 {"}79.244 7.244 0.02 {"}79.426 6.574 0.02 {"}79.587 6 0.02 {"}79.644 5.644 0.02 {"}79.92 4.08 0.02 {"}79.933 4 0.02 {"}79.935 3.935 0.02 {"}80 3.173 0.02 {"}80.107 2.107 0.02 {"}80.123 2 0.02 {"}80.136 1.864 0.02 {"}80.201 0.201 0.02 {"}80.223 0 0.02 {"}80.229 -0.229 0.02 {"}80.152 -1.848 0.02 {"}80.156 -2 0.02 {"}80.145 -2.145 0.02 {"}80 -3.023 0.02 {"}79.842 -3.842 0.02 {"}79.77 -4 0.02 {"}79.432 -4.568 0.02 {"}79.141 -5.141 0.02 {"}78.354 -6 0.02 {"}78.17 -6.17 0.02 {"}78 -6.281 0.02 {"}77.707 -6.293 0.02 {"}76.492 -6.492 0.02 {"}76 -6.508 0.02 {"}75.659 -6.341 0.02 {"}74.743 -6 0.02 {"}74.192 -5.808 0.02 {"}74 -5.761 0.02 {"}73.131 -5.131 0.02 {"}72.98 -5.02 0.02 {"}72 -4.349 0.02 {"}71.824 -4.176 0.02 {"}71.651 -4 0.02 {"}70.732 -3.268 0.02 {"}70 -2.658 0.02 {"}69.67 -2.33 0.02 {"}69.379 -2 0.02 {"}68.653 -1.347 0.02 {"}68 -0.647 0.02 {"}67.687 -0.313 0.02 {"}67.464 0 0.02 {"}66.765 0.765 0.02 {"}66 1.783 0.02 {"}65.898 1.898 0.02 {"}65.836 2 0.02 {"}65.166 2.834 0.02 {"}65.016 3.016 0.02 {"}64.354 4 0.02 {"}64.19 4.19 0.02 {"}64 4.466 0.02 {"}63.315 5.315 0.02 {"}62.902 6 0.02 {"}62.488 6.488 0.02 {"}62 7.25 0.02 {"}61.653 7.653 0.02 {"}61.461 8 0.02 {"}60.804 8.804 0.02 {"}60.237 9.763 0.02 {"}60.086 10 0.02 {"}60.048 10.048 0.02 {"}60 10.128 0.02 {"}59.158 11.158 0.02 {"}58.669 12 0.02 {"}58.386 12.386 0.02 {"}58 13.088 0.02 {"}57.591 13.591 0.02 {"}57.381 14 0.02 {"}56.791 14.791 0.02 {"}56.3 15.7 0.02 {"}56.124 16 0.02 {"}56.072 16.072 0.02 {"}56 16.204 0.02 {"}55.221 17.221 0.02 {"}54.817 18 0.02 {"}54.495 18.495 0.02 {"}54 19.552 0.02 {"}53.803 19.803 0.02 {"}53.711 20 0.02 {"}53.178 20.822 0.02 {"}53.032 21.032 0.02 {"}52.551 22 0.02 {"}52.337 22.337 0.02 {"}52 23.093 0.02 {"}51.618 23.618 0.02 {"}51.444 24 0.02 {"}50.855 24.855 0.02 {"}50.586 25.414 0.02 {"}50.271 26 0.02 {"}50.16 26.16 0.02 {"}50 26.509 0.02 {"}49.392 27.392 0.02 {"}49.129 28 0.02 {"}48.723 28.723 0.02 {"}48.402 29.598 0.02 {"}48.226 30 0.02 {"}48.143 30.143 0.02 {"}48 30.571 0.02 {"}47.47 31.47 0.02 {"}47.27 32 0.02 {"}46.802 32.802 0.02 {"}46.574 33.426 0.02 {"}46.321 34 0.02 {"}46.191 34.191 0.02 {"}46 34.709 0.02 {"}45.454 35.454 0.02 {"}45.218 36 0.02 {"}44.699 36.699 0.02 {"}44.247 37.753 0.02 {"}44.12 38 0.02 {"}44.068 38.068 0.02 {"}44 38.24 0.02 {"}43.229 39.229 0.02 {"}42.853 40 0.02 {"}42.522 40.522 0.02 {"}42 41.808 0.02 {"}41.916 41.916 0.02 {"}41.879 42 0.02 {"}41.782 42.218 0.02 {"}41.242 43.242 0.02 {"}40.988 44 0.02 {"}40.756 44.756 0.02 {"}40.613 45.387 0.02 {"}40.447 46 0.02 {"}40.367 46.367 0.02 {"}40.039 47.961 0.02 {"}40.031 48 0.02 {"}40.026 48.026 0.02 {"}40 48.166 0.02 {"}39.573 49.573 0.02 {"}39.463 50 0.02 {"}39.3 50.7 0.02 {"}39.185 51.185 0.02 {"}38.998 52 0.02 {"}38.892 52.892 0.02 {"}38.847 53.153 0.02 {"}38.737 54 0.02 {"}38.776 54.776 0.02 {"}38.765 55.235 0.02 {"}38.811 56 0.02 {"}39.042 56.958 0.02 {"}39.09 57.09 0.02 {"}39.359 58 0.02 {"}39.558 58.442 0.02 {"}40 59.17 0.02 {"}40.306 59.694 0.02 {"}40.599 60 0.02 {"}41.301 60.699 0.02 {"}42 61.256 0.02 {"}42.434 61.566 0.02 {"}43.373 62 0.02 {"}43.789 62.211 0.02 {"}44 62.296 0.02 {"}44.472 62.472 0.02 {"}45.223 62.777 0.02 {"}46 63.039 0.02 {"}46.738 63.262 0.02 {"}47.413 63.413 0.02 {"}48 63.57 0.02 {"}48.361 63.639 0.02 {"}49.869 63.869 0.02 {"}50 63.893 0.02 {"}50.102 63.898 0.02 {"}51.786 64 0.02 {"}51.985 64.015 0.02 {"}52 64.017 0.02 {"}52.017 64.017 0.02 {"}52.435 64 0.02 {"}P -69.862 180 0.02 {"}-68.951 179.049 0.02 {"}-68.646 178.646 0.02 {"}-68.143 178 0.02 {"}-68.07 177.93 0.02 {"}-68 177.842 0.02 {"}-67.105 176.895 0.02 {"}-66.436 176 0.02 {"}-66.215 175.785 0.02 {"}-66 175.488 0.02 {"}-65.284 174.716 0.02 {"}-64.786 174 0.02 {"}-64.384 173.616 0.02 {"}-64 173.087 0.02 {"}-63.452 172.548 0.02 {"}-63.083 172 0.02 {"}-62.54 171.46 0.02 {"}-62 170.681 0.02 {"}-61.653 170.347 0.02 {"}-61.439 170 0.02 {"}-60.775 169.225 0.02 {"}-60.106 168.106 0.02 {"}-60.037 168 0.02 {"}-60.02 167.98 0.02 {"}-60 167.943 0.02 {"}-59.136 166.864 0.02 {"}-58.643 166 0.02 {"}-58.365 165.635 0.02 {"}-58 164.957 0.02 {"}-57.565 164.435 0.02 {"}-57.332 164 0.02 {"}-56.735 163.265 0.02 {"}-56.019 162.019 0.02 {"}-56.007 162 0.02 {"}-56.004 161.996 0.02 {"}-56 161.988 0.02 {"}-55.129 160.871 0.02 {"}-54.661 160 0.02 {"}-54.413 159.587 0.02 {"}-54 158.585 0.02 {"}-53.765 158.235 0.02 {"}-53.667 158 0.02 {"}-53.166 157.166 0.02 {"}-53.035 156.965 0.02 {"}-52.587 156 0.02 {"}-52.358 155.642 0.02 {"}-52 154.778 0.02 {"}-51.673 154.327 0.02 {"}-51.523 154 0.02 {"}-50.931 153.069 0.02 {"}-50.832 152.832 0.02 {"}-50.428 152 0.02 {"}-50.266 151.734 0.02 {"}-50 151.053 0.02 {"}-49.587 150.413 0.02 {"}-49.42 150 0.02 {"}-48.848 149.152 0.02 {"}-48.609 148.609 0.02 {"}-48.299 148 0.02 {"}-48.175 147.825 0.02 {"}-48 147.434 0.02 {"}-47.384 146.616 0.02 {"}-47.098 146 0.02 {"}-46.676 145.324 0.02 {"}-46.197 144.197 0.02 {"}-46.101 144 0.02 {"}-46.061 143.939 0.02 {"}-46 143.79 0.02 {"}-45.25 142.75 0.02 {"}-44.885 142 0.02 {"}-44.536 141.464 0.02 {"}-44 140.32 0.02 {"}-43.852 140.148 0.02 {"}-43.775 140 0.02 {"}-43.335 139.335 0.02 {"}-43.058 138.942 0.02 {"}-42.579 138 0.02 {"}-42.379 137.621 0.02 {"}-42 136.64 0.02 {"}-41.755 136.245 0.02 {"}-41.653 136 0.02 {"}-41.359 135.359 0.02 {"}-41.12 134.88 0.02 {"}-40.772 134 0.02 {"}-40.583 133.417 0.02 {"}-40.29 132.29 0.02 {"}-40.205 132 0.02 {"}-40.174 131.826 0.02 {"}-40 130.721 0.02 {"}-39.864 130.136 0.02 {"}-39.838 130 0.02 {"}-39.825 129.825 0.02 {"}-39.732 128.268 0.02 {"}-39.712 128 0.02 {"}-39.733 127.733 0.02 {"}-39.996 126.004 0.02 {"}-39.997 126 0.02 {"}-39.997 125.997 0.02 {"}-40 125.99 0.02 {"}-40.446 124.446 0.02 {"}-40.685 124 0.02 {"}-41.171 123.171 0.02 {"}-42 122.173 0.02 {"}-42.068 122.068 0.02 {"}-42.14 122 0.02 {"}-43.022 121.022 0.02 {"}-44 120.242 0.02 {"}-44.123 120.123 0.02 {"}-44.316 120 0.02 {"}-45.243 119.243 0.02 {"}-46 118.776 0.02 {"}-46.453 118.453 0.02 {"}-47.456 118 0.02 {"}-47.801 117.801 0.02 {"}-48 117.722 0.02 {"}-48.544 117.456 0.02 {"}-49.135 117.135 0.02 {"}-50 116.793 0.02 {"}-50.559 116.559 0.02 {"}-51.811 116.189 0.02 {"}-52 116.122 0.02 {"}-52.092 116.092 0.02 {"}-52.423 116 0.02 {"}-53.552 115.552 0.02 {"}-54 115.409 0.02 {"}-54.993 114.993 0.02 {"}-55.017 114.983 0.02 {"}-56 114.588 0.02 {"}-56.404 114.404 0.02 {"}-57.478 114 0.02 {"}-57.825 113.825 0.02 {"}-58 113.753 0.02 {"}-58.516 113.484 0.02 {"}-59.143 113.143 0.02 {"}-60 112.735 0.02 {"}-60.478 112.478 0.02 {"}-61.539 112 0.02 {"}-61.825 111.825 0.02 {"}-62 111.731 0.02 {"}-62.956 110.956 0.02 {"}-63.355 110.645 0.02 {"}-64 110.14 0.02 {"}-64.066 110.066 0.02 {"}-64.134 110 0.02 {"}-64.856 109.144 0.02 {"}-64.987 108.987 0.02 {"}-65.916 108 0.02 {"}-65.952 107.952 0.02 {"}-66 107.903 0.02 {"}-66.817 106.817 0.02 {"}-67.537 106 0.02 {"}-67.723 105.723 0.02 {"}-68 105.388 0.02 {"}-68.572 104.572 0.02 {"}-69.032 104 0.02 {"}-69.399 103.399 0.02 {"}-70 102.462 0.02 {"}-70.153 102.153 0.02 {"}-70.237 102 0.02 {"}-70.45 101.55 0.02 {"}-70.792 100.792 0.02 {"}-71.197 100 0.02 {"}-71.43 99.43 0.02 {"}-72 98.208 0.02 {"}-72.057 98.057 0.02 {"}-72.081 98 0.02 {"}-72.127 97.873 0.02 {"}-72.566 96.566 0.02 {"}-72.788 96 0.02 {"}-73.072 95.072 0.02 {"}-73.138 94.862 0.02 {"}-73.406 94 0.02 {"}-73.513 93.513 0.02 {"}-73.836 92.164 0.02 {"}-73.874 92 0.02 {"}-73.889 91.889 0.02 {"}-74 91.091 0.02 {"}-74.112 90.112 0.02 {"}-74.124 90 0.02 {"}-74.133 89.867 0.02 {"}-74.257 88.257 0.02 {"}-74.273 88 0.02 {"}-74.286 87.714 0.02 {"}-74.363 86.363 0.02 {"}-74.38 86 0.02 {"}-74.395 85.605 0.02 {"}-74.448 84.448 0.02 {"}-74.465 84 0.02 {"}-74.481 83.519 0.02 {"}-74.52 82.52 0.02 {"}-74.537 82 0.02 {"}-74.548 81.452 0.02 {"}-74.575 80.575 0.02 {"}-74.586 80 0.02 {"}-74.584 79.416 0.02 {"}-74.584 78.584 0.02 {"}-74.582 78 0.02 {"}-74.576 77.424 0.02 {"}-74.564 76.564 0.02 {"}-74.558 76 0.02 {"}-74.556 75.444 0.02 {"}-74.562 74.562 0.02 {"}-74.561 74 0.02 {"}-74.599 73.401 0.02 {"}-74.653 72.653 0.02 {"}-74.695 72 0.02 {"}-74.809 71.191 0.02 {"}-74.854 70.854 0.02 {"}-74.978 70 0.02 {"}-75.131 69.131 0.02 {"}-75.201 68.799 0.02 {"}-75.35 68 0.02 {"}-75.46 67.46 0.02 {"}-75.78 66.22 0.02 {"}-75.829 66 0.02 {"}-75.858 65.858 0.02 {"}-76 65.373 0.02 {"}-76.237 64.237 0.02 {"}-76.3 64 0.02 {"}-76.413 63.587 0.02 {"}-76.629 62.629 0.02 {"}-76.825 62 0.02 {"}-77.096 61.096 0.02 {"}-77.224 60.776 0.02 {"}-77.495 60 0.02 {"}-77.614 59.614 0.02 {"}-78 58.732 0.02 {"}-78.195 58.195 0.02 {"}-78.297 58 0.02 {"}-78.573 57.427 0.02 {"}-78.826 56.826 0.02 {"}-79.331 56 0.02 {"}-79.55 55.55 0.02 {"}-80 54.845 0.02 {"}-80.34 54.34 0.02 {"}-80.676 54 0.02 {"}-81.267 53.267 0.02 {"}-82 52.5 0.02 {"}-82.28 52.28 0.02 {"}-82.756 52 0.02 {"}-83.468 51.468 0.02 {"}-84 51.107 0.02 {"}-84.822 50.822 0.02 {"}-85.335 50.665 0.02 {"}-86 50.448 0.02 {"}-86.448 50.448 0.02 {"}-87.574 50.426 0.02 {"}-88 50.426 0.02 {"}-88.62 50.62 0.02 {"}-89.227 50.773 0.02 {"}-90 51.063 0.02 {"}-90.578 51.421 0.02 {"}-91.296 52 0.02 {"}-91.738 52.262 0.02 {"}-92 52.491 0.02 {"}-92.762 53.238 0.02 {"}-93.348 54 0.02 {"}-93.663 54.337 0.02 {"}-94 54.884 0.02 {"}-94.432 55.568 0.02 {"}-94.645 56 0.02 {"}-95.085 56.915 0.02 {"}-95.176 57.176 0.02 {"}-95.506 58 0.02 {"}-95.628 58.372 0.02 {"}-95.985 59.985 0.02 {"}-95.989 60 0.02 {"}-95.992 60.008 0.02 {"}-96 60.059 0.02 {"}-96.365 61.635 0.02 {"}-96.44 62 0.02 {"}-96.583 62.583 0.02 {"}-96.761 63.239 0.02 {"}-96.934 64 0.02 {"}-97.153 64.847 0.02 {"}-97.241 65.241 0.02 {"}-97.427 66 0.02 {"}-97.534 66.466 0.02 {"}-97.806 67.806 0.02 {"}-97.848 68 0.02 {"}-97.871 68.129 0.02 {"}-98 68.967 0.02 {"}-98.187 69.813 0.02 {"}-98.233 70 0.02 {"}-98.285 70.285 0.02 {"}-98.497 71.503 0.02 {"}-98.59 72 0.02 {"}-98.736 72.736 0.02 {"}-98.819 73.181 0.02 {"}-98.987 74 0.02 {"}-99.178 74.822 0.02 {"}-99.306 75.306 0.02 {"}-99.476 76 0.02 {"}-99.599 76.401 0.02 {"}-100 77.572 0.02 {"}-100.142 77.858 0.02 {"}-100.223 78 0.02 {"}-100.746 78.746 0.02 {"}-100.955 79.045 0.02 {"}-101.633 80 0.02 {"}-101.796 80.204 0.02 {"}-102 80.482 0.02 {"}-102.701 81.299 0.02 {"}-103.319 82 0.02 {"}-103.663 82.337 0.02 {"}-104 82.685 0.02 {"}-104.73 83.27 0.02 {"}-105.743 84 0.02 {"}-105.901 84.099 0.02 {"}-106 84.162 0.02 {"}-106.233 84.233 0.02 {"}-107.378 84.622 0.02 {"}-108 84.791 0.02 {"}-108.821 84.821 0.02 {"}-109.156 84.844 0.02 {"}-110 84.873 0.02 {"}-110.785 84.785 0.02 {"}-111.265 84.735 0.02 {"}-112 84.653 0.02 {"}-112.539 84.539 0.02 {"}-113.729 84.271 0.02 {"}-114 84.213 0.02 {"}-114.175 84.175 0.02 {"}-115.048 84 0.02 {"}-115.832 83.832 0.02 {"}-116 83.796 0.02 {"}-116.25 83.75 0.02 {"}-117.529 83.529 0.02 {"}-118 83.441 0.02 {"}-118.662 83.338 0.02 {"}-119.258 83.258 0.02 {"}-120 83.137 0.02 {"}-120.956 82.956 0.02 {"}-121.073 82.927 0.02 {"}-122 82.733 0.02 {"}-122.606 82.606 0.02 {"}-123.765 82.235 0.02 {"}-124 82.176 0.02 {"}-124.155 82.155 0.02 {"}-124.751 82 0.02 {"}-125.7 81.7 0.02 {"}-126 81.538 0.02 {"}-126.639 81.361 0.02 {"}-127.25 81.25 0.02 {"}-128 80.98 0.02 {"}-128.947 81.053 0.02 {"}-129.07 81.07 0.02 {"}-130 81.15 0.02 {"}-130.581 81.419 0.02 {"}-131.776 82 0.02 {"}-131.937 82.063 0.02 {"}-132 82.087 0.02 {"}-132.134 82.134 0.02 {"}-133.403 82.597 0.02 {"}-134 82.804 0.02 {"}-134.965 83.035 0.02 {"}-135.056 83.056 0.02 {"}-136 83.28 0.02 {"}-136.596 83.404 0.02 {"}-137.709 83.709 0.02 {"}-138 83.777 0.02 {"}-138.153 83.847 0.02 {"}-138.434 84 0.02 {"}-139.476 84.524 0.02 {"}-140 84.863 0.02 {"}-140.611 85.389 0.02 {"}-141.22 86 0.02 {"}-141.646 86.354 0.02 {"}-142 86.705 0.02 {"}-142.6 87.4 0.02 {"}-143.065 88 0.02 {"}-143.551 88.449 0.02 {"}-144 88.889 0.02 {"}-144.541 89.459 0.02 {"}-145.062 90 0.02 {"}-145.594 90.406 0.02 {"}-146 90.693 0.02 {"}-146.766 91.234 0.02 {"}-147.863 92 0.02 {"}-147.953 92.047 0.02 {"}-148 92.072 0.02 {"}-148.178 92.178 0.02 {"}-149.223 92.777 0.02 {"}-150 93.288 0.02 {"}-150.418 93.582 0.02 {"}-150.95 94 0.02 {"}-151.571 94.429 0.02 {"}-152 94.785 0.02 {"}-152.645 95.355 0.02 {"}-153.284 96 0.02 {"}-153.636 96.364 0.02 {"}-154 96.809 0.02 {"}-154.539 97.461 0.02 {"}-154.927 98 0.02 {"}-155.339 98.661 0.02 {"}-156 99.925 0.02 {"}-156.026 99.974 0.02 {"}-156.037 100 0.02 {"}-156.057 100.057 0.02 {"}-156.584 101.416 0.02 {"}-156.773 102 0.02 {"}-157.073 102.927 0.02 {"}-157.123 103.123 0.02 {"}-157.379 104 0.02 {"}-157.532 104.468 0.02 {"}-157.918 105.918 0.02 {"}-157.942 106 0.02 {"}-157.958 106.042 0.02 {"}-158 106.192 0.02 {"}-158.409 107.591 0.02 {"}-158.517 108 0.02 {"}-158.853 108.853 0.02 {"}-158.939 109.061 0.02 {"}-159.283 110 0.02 {"}-159.51 110.49 0.02 {"}-160 111.744 0.02 {"}-160.074 111.926 0.02 {"}-160.102 112 0.02 {"}-160.165 112.165 0.02 {"}-160.649 113.351 0.02 {"}-160.875 114 0.02 {"}-161.159 114.841 0.02 {"}-161.288 115.288 0.02 {"}-161.511 116 0.02 {"}-161.627 116.373 0.02 {"}-162 117.959 0.02 {"}-162.008 117.992 0.02 {"}-162.01 118 0.02 {"}-162.015 118.015 0.02 {"}-162.514 119.486 0.02 {"}-162.667 120 0.02 {"}-163.05 120.95 0.02 {"}-163.098 121.098 0.02 {"}-163.425 122 0.02 {"}-163.605 122.395 0.02 {"}-164 123.494 0.02 {"}-164.154 123.846 0.02 {"}-164.213 124 0.02 {"}-164.379 124.379 0.02 {"}-164.771 125.229 0.02 {"}-165.082 126 0.02 {"}-165.345 126.655 0.02 {"}-165.648 127.648 0.02 {"}-165.771 128 0.02 {"}-165.837 128.163 0.02 {"}-166 128.715 0.02 {"}-166.335 129.665 0.02 {"}-166.43 130 0.02 {"}-166.699 130.699 0.02 {"}-166.878 131.122 0.02 {"}-167.179 132 0.02 {"}-167.433 132.567 0.02 {"}-167.847 133.847 0.02 {"}-167.905 134 0.02 {"}-167.932 134.068 0.02 {"}-168 134.292 0.02 {"}-168.467 135.533 0.02 {"}-168.604 136 0.02 {"}-168.913 136.913 0.02 {"}-168.959 137.041 0.02 {"}-169.262 138 0.02 {"}-169.448 138.552 0.02 {"}-169.789 139.789 0.02 {"}-169.854 140 0.02 {"}-169.891 140.109 0.02 {"}-170 140.498 0.02 {"}-170.396 141.604 0.02 {"}-170.512 142 0.02 {"}-170.797 142.797 0.02 {"}-170.909 143.091 0.02 {"}-171.21 144 0.02 {"}-171.416 144.584 0.02 {"}-171.722 145.722 0.02 {"}-171.809 146 0.02 {"}-171.851 146.149 0.02 {"}-172 146.798 0.02 {"}-172.283 147.717 0.02 {"}-172.353 148 0.02 {"}-172.493 148.493 0.02 {"}-172.723 149.277 0.02 {"}-172.923 150 0.02 {"}-173.211 150.789 0.02 {"}-173.406 151.406 0.02 {"}-173.608 152 0.02 {"}-173.729 152.271 0.02 {"}-174 153.042 0.02 {"}-174.309 153.691 0.02 {"}-174.42 154 0.02 {"}-174.753 154.753 0.02 {"}-174.912 155.088 0.02 {"}-175.272 156 0.02 {"}-175.471 156.529 0.02 {"}-175.841 157.841 0.02 {"}-175.893 158 0.02 {"}-175.916 158.084 0.02 {"}-176 158.473 0.02 {"}-176.346 159.654 0.02 {"}-176.434 160 0.02 {"}-176.623 160.623 0.02 {"}-176.802 161.198 0.02 {"}-177.038 162 0.02 {"}-177.258 162.742 0.02 {"}-177.443 163.443 0.02 {"}-177.6 164 0.02 {"}-177.67 164.33 0.02 {"}-177.962 165.962 0.02 {"}-177.97 166 0.02 {"}-177.971 166.029 0.02 {"}-178 166.773 0.02 {"}-178.057 167.943 0.02 {"}-178.059 168 0.02 {"}-178.053 168.053 0.02 {"}-178 168.399 0.02 {"}-177.819 169.819 0.02 {"}-177.786 170 0.02 {"}-177.687 170.313 0.02 {"}-177.393 171.393 0.02 {"}-177.171 172 0.02 {"}-176.848 172.848 0.02 {"}-176.619 173.381 0.02 {"}-176.366 174 0.02 {"}-176.267 174.267 0.02 {"}-176 174.91 0.02 {"}-175.726 175.726 0.02 {"}-175.609 176 0.02 {"}-175.267 176.733 0.02 {"}-175.106 177.106 0.02 {"}-174.635 178 0.02 {"}-174.418 178.418 0.02 {"}-174 179.086 0.02 {"}-173.679 179.679 0.02 {"}-173.453 180 0.02 @subgroup {Data} @dotlist {Data} master= {Data pts} @group {Isoleucine/valine} animate off dominant @subgroup {Contours} nobutton dominant @labellist {Title} master= {Titles} {Isoleucine/valine} 0 190 0 @vectorlist {Allowed} color= blue master= {Allowed} {level 0.001}P -161.597 -180 0.001 {"}-160.861 -179.139 0.001 {"}-160 -178.459 0.001 {"}-159.791 -178.209 0.001 {"}-159.549 -178 0.001 {"}-158.876 -177.124 0.001 {"}-158 -176.336 0.001 {"}-157.856 -176.144 0.001 {"}-157.697 -176 0.001 {"}-156.979 -175.021 0.001 {"}-156 -174.114 0.001 {"}-155.952 -174.048 0.001 {"}-155.897 -174 0.001 {"}-155.699 -173.699 0.001 {"}-155.162 -172.838 0.001 {"}-154.486 -172 0.001 {"}-154.298 -171.702 0.001 {"}-154 -171.338 0.001 {"}-153.501 -170.499 0.001 {"}-153.14 -170 0.001 {"}-152.694 -169.306 0.001 {"}-152 -168.515 0.001 {"}-151.798 -168.202 0.001 {"}-151.637 -168 0.001 {"}-151.036 -167.036 0.001 {"}-151.01 -166.99 0.001 {"}-150.174 -166 0.001 {"}-150.107 -165.893 0.001 {"}-150 -165.739 0.001 {"}-149.368 -164.632 0.001 {"}-148.935 -164 0.001 {"}-148.542 -163.458 0.001 {"}-148 -162.882 0.001 {"}-147.611 -162.389 0.001 {"}-147.277 -162 0.001 {"}-146.751 -161.249 0.001 {"}-146 -160.515 0.001 {"}-145.752 -160.248 0.001 {"}-145.507 -160 0.001 {"}-144.837 -159.163 0.001 {"}-144 -158.422 0.001 {"}-143.781 -158.219 0.001 {"}-143.557 -158 0.001 {"}-142.845 -157.155 0.001 {"}-142 -156.443 0.001 {"}-141.746 -156.254 0.001 {"}-141.466 -156 0.001 {"}-140.738 -155.262 0.001 {"}-140 -154.722 0.001 {"}-139.553 -154.447 0.001 {"}-138.72 -154 0.001 {"}-138.323 -153.677 0.001 {"}-138 -153.434 0.001 {"}-137.172 -152.828 0.001 {"}-136.593 -152.593 0.001 {"}-136 -152.297 0.001 {"}-135.783 -152.217 0.001 {"}-135.189 -152 0.001 {"}-134.451 -151.549 0.001 {"}-134 -151.339 0.001 {"}-133.096 -150.904 0.001 {"}-132.826 -150.826 0.001 {"}-132 -150.519 0.001 {"}-131.546 -150.454 0.001 {"}-130.358 -150.358 0.001 {"}-130 -150.312 0.001 {"}-129.717 -150.283 0.001 {"}-128.119 -150.119 0.001 {"}-128 -150.107 0.001 {"}-127.896 -150.104 0.001 {"}-126.005 -150.005 0.001 {"}-126 -150.004 0.001 {"}-125.995 -150.005 0.001 {"}-124.107 -150.107 0.001 {"}-124 -150.113 0.001 {"}-123.874 -150.126 0.001 {"}-122.297 -150.297 0.001 {"}-122 -150.329 0.001 {"}-121.608 -150.392 0.001 {"}-120.491 -150.491 0.001 {"}-120 -150.586 0.001 {"}-119.092 -150.908 0.001 {"}-118.949 -150.949 0.001 {"}-118 -151.367 0.001 {"}-117.534 -151.534 0.001 {"}-116.681 -152 0.001 {"}-116.17 -152.17 0.001 {"}-116 -152.227 0.001 {"}-115.645 -152.355 0.001 {"}-114.638 -152.638 0.001 {"}-114 -152.934 0.001 {"}-113.29 -153.29 0.001 {"}-112.43 -154 0.001 {"}-112.154 -154.154 0.001 {"}-112 -154.227 0.001 {"}-111.629 -154.371 0.001 {"}-110.671 -154.671 0.001 {"}-110 -155.006 0.001 {"}-109.345 -155.345 0.001 {"}-108.608 -156 0.001 {"}-108.221 -156.221 0.001 {"}-108 -156.329 0.001 {"}-107.459 -156.541 0.001 {"}-106.745 -156.745 0.001 {"}-106 -157.16 0.001 {"}-105.433 -157.433 0.001 {"}-104.716 -158 0.001 {"}-104.232 -158.232 0.001 {"}-104 -158.329 0.001 {"}-103.482 -158.518 0.001 {"}-102.713 -158.713 0.001 {"}-102 -159.083 0.001 {"}-101.347 -159.347 0.001 {"}-100.411 -160 0.001 {"}-100.126 -160.126 0.001 {"}-100 -160.176 0.001 {"}-99.738 -160.262 0.001 {"}-98.538 -160.538 0.001 {"}-98 -160.776 0.001 {"}-97.151 -161.151 0.001 {"}-96.245 -161.755 0.001 {"}-96 -161.903 0.001 {"}-95.935 -161.934 0.001 {"}-95.817 -162 0.001 {"}-94.449 -162.449 0.001 {"}-94 -162.649 0.001 {"}-93.066 -163.066 0.001 {"}-92.686 -163.314 0.001 {"}-92 -163.722 0.001 {"}-91.806 -163.806 0.001 {"}-91.417 -164 0.001 {"}-90.337 -164.337 0.001 {"}-90 -164.457 0.001 {"}-89.115 -164.885 0.001 {"}-88.952 -164.952 0.001 {"}-88 -165.572 0.001 {"}-87.702 -165.702 0.001 {"}-87.181 -166 0.001 {"}-86.298 -166.298 0.001 {"}-86 -166.417 0.001 {"}-85.254 -166.746 0.001 {"}-84.882 -166.882 0.001 {"}-84 -167.391 0.001 {"}-83.578 -167.578 0.001 {"}-82.869 -168 0.001 {"}-82.221 -168.221 0.001 {"}-82 -168.29 0.001 {"}-81.558 -168.442 0.001 {"}-80.702 -168.702 0.001 {"}-80 -168.977 0.001 {"}-79.318 -169.318 0.001 {"}-78.28 -170 0.001 {"}-78.087 -170.087 0.001 {"}-78 -170.114 0.001 {"}-77.844 -170.156 0.001 {"}-76.506 -170.506 0.001 {"}-76 -170.645 0.001 {"}-75.016 -171.016 0.001 {"}-74.953 -171.047 0.001 {"}-74 -171.47 0.001 {"}-73.633 -171.633 0.001 {"}-72.964 -172 0.001 {"}-72.253 -172.253 0.001 {"}-72 -172.358 0.001 {"}-71.409 -172.591 0.001 {"}-70.812 -172.812 0.001 {"}-70 -173.161 0.001 {"}-69.447 -173.447 0.001 {"}-68.671 -174 0.001 {"}-68.223 -174.223 0.001 {"}-68 -174.372 0.001 {"}-67.22 -174.78 0.001 {"}-66.923 -174.923 0.001 {"}-66 -175.494 0.001 {"}-65.685 -175.685 0.001 {"}-65.268 -176 0.001 {"}-64.448 -176.448 0.001 {"}-64 -176.803 0.001 {"}-63.316 -177.316 0.001 {"}-62.645 -178 0.001 {"}-62.264 -178.264 0.001 {"}-62 -178.534 0.001 {"}-61.188 -179.188 0.001 {"}-60.487 -180 0.001 {"}P 75.131 -42 0.001 {"}75.808 -42.192 0.001 {"}76 -42.23 0.001 {"}76.32 -42.32 0.001 {"}77.417 -42.583 0.001 {"}78 -42.769 0.001 {"}78.782 -43.218 0.001 {"}79.701 -44 0.001 {"}79.865 -44.135 0.001 {"}80 -44.212 0.001 {"}80.598 -44.598 0.001 {"}81.116 -44.884 0.001 {"}82 -45.863 0.001 {"}82.066 -45.934 0.001 {"}82.128 -46 0.001 {"}83.087 -46.913 0.001 {"}83.305 -47.305 0.001 {"}83.752 -48 0.001 {"}83.847 -48.153 0.001 {"}84 -48.348 0.001 {"}84.737 -49.263 0.001 {"}85.134 -50 0.001 {"}85.36 -50.64 0.001 {"}85.671 -51.671 0.001 {"}85.779 -52 0.001 {"}85.82 -52.18 0.001 {"}86 -52.869 0.001 {"}86.266 -53.734 0.001 {"}86.33 -54 0.001 {"}86.411 -54.411 0.001 {"}86.637 -55.363 0.001 {"}86.752 -56 0.001 {"}86.797 -56.797 0.001 {"}86.825 -57.175 0.001 {"}86.87 -58 0.001 {"}86.778 -58.778 0.001 {"}86.712 -59.288 0.001 {"}86.627 -60 0.001 {"}86.521 -60.521 0.001 {"}86.11 -61.89 0.001 {"}86.083 -62 0.001 {"}86.064 -62.064 0.001 {"}86 -62.24 0.001 {"}85.592 -63.592 0.001 {"}85.478 -64 0.001 {"}85.159 -64.841 0.001 {"}85.084 -65.084 0.001 {"}84.647 -66 0.001 {"}84.4 -66.4 0.001 {"}84 -66.96 0.001 {"}83.575 -67.575 0.001 {"}83.314 -68 0.001 {"}82.746 -68.746 0.001 {"}82 -69.446 0.001 {"}81.694 -69.694 0.001 {"}81.401 -70 0.001 {"}80.71 -70.71 0.001 {"}80 -71.234 0.001 {"}79.513 -71.513 0.001 {"}78.538 -72 0.001 {"}78.217 -72.217 0.001 {"}78 -72.359 0.001 {"}77.155 -72.845 0.001 {"}76.967 -72.967 0.001 {"}76 -73.358 0.001 {"}75.471 -73.471 0.001 {"}74.346 -73.654 0.001 {"}74 -73.722 0.001 {"}73.738 -73.738 0.001 {"}72.17 -73.83 0.001 {"}72 -73.84 0.001 {"}71.833 -73.833 0.001 {"}70.23 -73.77 0.001 {"}70 -73.761 0.001 {"}69.724 -73.724 0.001 {"}68.41 -73.59 0.001 {"}68 -73.528 0.001 {"}67.296 -73.296 0.001 {"}66.826 -73.174 0.001 {"}66 -72.838 0.001 {"}65.469 -72.531 0.001 {"}64.727 -72 0.001 {"}64.273 -71.727 0.001 {"}64 -71.587 0.001 {"}63.056 -70.944 0.001 {"}62.209 -70 0.001 {"}62.105 -69.895 0.001 {"}62 -69.806 0.001 {"}61.015 -68.985 0.001 {"}60.277 -68 0.001 {"}60.166 -67.834 0.001 {"}60 -67.642 0.001 {"}59.26 -66.74 0.001 {"}58.837 -66 0.001 {"}58.595 -65.405 0.001 {"}58.23 -64.23 0.001 {"}58.148 -64 0.001 {"}58.111 -63.889 0.001 {"}58 -63.645 0.001 {"}57.452 -62.548 0.001 {"}57.272 -62 0.001 {"}57.066 -61.066 0.001 {"}57.04 -60.96 0.001 {"}56.839 -60 0.001 {"}56.796 -59.204 0.001 {"}56.772 -58.772 0.001 {"}56.73 -58 0.001 {"}56.758 -57.242 0.001 {"}56.775 -56.775 0.001 {"}56.803 -56 0.001 {"}56.93 -55.07 0.001 {"}56.944 -54.944 0.001 {"}57.08 -54 0.001 {"}57.307 -53.307 0.001 {"}57.784 -52.216 0.001 {"}57.867 -52 0.001 {"}57.904 -51.904 0.001 {"}58 -51.676 0.001 {"}58.437 -50.437 0.001 {"}58.591 -50 0.001 {"}59.091 -49.091 0.001 {"}59.651 -48.349 0.001 {"}59.902 -48 0.001 {"}59.939 -47.939 0.001 {"}60 -47.853 0.001 {"}60.741 -46.741 0.001 {"}61.505 -46 0.001 {"}61.745 -45.745 0.001 {"}62 -45.489 0.001 {"}62.745 -44.745 0.001 {"}63.99 -44.01 0.001 {"}64 -44.004 0.001 {"}64.002 -44.002 0.001 {"}64.005 -44 0.001 {"}65.137 -43.137 0.001 {"}66 -42.67 0.001 {"}66.519 -42.519 0.001 {"}67.785 -42.215 0.001 {"}68 -42.157 0.001 {"}68.132 -42.132 0.001 {"}68.681 -42 0.001 {"}69.686 -41.686 0.001 {"}70 -41.614 0.001 {"}70.446 -41.554 0.001 {"}71.414 -41.414 0.001 {"}72 -41.337 0.001 {"}72.586 -41.414 0.001 {"}73.554 -41.554 0.001 {"}74 -41.614 0.001 {"}74.304 -41.695 0.001 {"}75.131 -42 0.001 {"}P 60.648 72 0.001 {"}61.667 71.667 0.001 {"}62 71.513 0.001 {"}62.996 70.996 0.001 {"}63.083 70.917 0.001 {"}64 70.122 0.001 {"}64.069 70.069 0.001 {"}64.131 70 0.001 {"}65.195 69.195 0.001 {"}65.745 68.255 0.001 {"}65.92 68 0.001 {"}65.954 67.954 0.001 {"}66 67.892 0.001 {"}66.912 66.912 0.001 {"}67.455 66 0.001 {"}67.646 65.646 0.001 {"}68 64.583 0.001 {"}68.188 64.188 0.001 {"}68.254 64 0.001 {"}68.467 63.533 0.001 {"}68.85 62.85 0.001 {"}69.113 62 0.001 {"}69.298 61.298 0.001 {"}69.389 60.611 0.001 {"}69.52 60 0.001 {"}69.575 59.575 0.001 {"}69.692 58.308 0.001 {"}69.73 58 0.001 {"}69.757 57.757 0.001 {"}69.822 56.178 0.001 {"}69.84 56 0.001 {"}69.846 55.846 0.001 {"}69.846 54.154 0.001 {"}69.852 54 0.001 {"}69.852 53.852 0.001 {"}69.852 52.148 0.001 {"}69.852 52 0.001 {"}69.849 51.849 0.001 {"}69.79 50.21 0.001 {"}69.787 50 0.001 {"}69.773 49.773 0.001 {"}69.695 48.305 0.001 {"}69.676 48 0.001 {"}69.622 47.622 0.001 {"}69.481 46.519 0.001 {"}69.404 46 0.001 {"}69.323 45.323 0.001 {"}69.258 44.742 0.001 {"}69.167 44 0.001 {"}68.966 43.034 0.001 {"}68.932 42.932 0.001 {"}68.694 42 0.001 {"}68.528 41.472 0.001 {"}68 40.245 0.001 {"}67.937 40.063 0.001 {"}67.921 40 0.001 {"}67.901 39.901 0.001 {"}67.676 38.324 0.001 {"}67.596 38 0.001 {"}67.432 37.432 0.001 {"}67.277 36.723 0.001 {"}67.023 36 0.001 {"}66.797 35.203 0.001 {"}66.376 34.376 0.001 {"}66.224 34 0.001 {"}66.164 33.836 0.001 {"}66 33.514 0.001 {"}65.613 32.387 0.001 {"}65.45 32 0.001 {"}65.018 31.018 0.001 {"}65.01 30.99 0.001 {"}64.292 30 0.001 {"}64.205 29.795 0.001 {"}64 29.417 0.001 {"}63.595 28.405 0.001 {"}63.325 28 0.001 {"}62.763 27.237 0.001 {"}62 26.608 0.001 {"}61.684 26.316 0.001 {"}61.324 26 0.001 {"}60.722 25.278 0.001 {"}60 24.746 0.001 {"}59.536 24.464 0.001 {"}58.229 24 0.001 {"}58.082 23.918 0.001 {"}58 23.885 0.001 {"}57.825 23.825 0.001 {"}56.646 23.354 0.001 {"}56 23.167 0.001 {"}55.036 22.964 0.001 {"}54.956 22.956 0.001 {"}54 22.79 0.001 {"}53.135 22.865 0.001 {"}52.887 22.887 0.001 {"}52 22.964 0.001 {"}51.206 23.206 0.001 {"}50.56 23.44 0.001 {"}50 23.627 0.001 {"}49.73 23.73 0.001 {"}49.217 24 0.001 {"}48.27 24.27 0.001 {"}48 24.329 0.001 {"}47.513 24.487 0.001 {"}46.702 24.702 0.001 {"}46 24.973 0.001 {"}45.315 25.315 0.001 {"}44.408 26 0.001 {"}44.142 26.142 0.001 {"}44 26.204 0.001 {"}43.629 26.371 0.001 {"}42.723 26.723 0.001 {"}42 27.13 0.001 {"}41.494 27.494 0.001 {"}40.887 28 0.001 {"}40.349 28.349 0.001 {"}40 28.554 0.001 {"}39.168 29.168 0.001 {"}38.348 30 0.001 {"}38.169 30.169 0.001 {"}38 30.283 0.001 {"}37.002 31.002 0.001 {"}36.154 32 0.001 {"}36.076 32.076 0.001 {"}36 32.143 0.001 {"}35.315 32.685 0.001 {"}34.95 32.95 0.001 {"}34.742 33.258 0.001 {"}34.186 34 0.001 {"}34.1 34.1 0.001 {"}34 34.204 0.001 {"}33.055 35.055 0.001 {"}32.329 36 0.001 {"}32.198 36.198 0.001 {"}32 36.429 0.001 {"}31.28 37.28 0.001 {"}30.822 38 0.001 {"}30.54 38.54 0.001 {"}30 39.722 0.001 {"}29.896 39.896 0.001 {"}29.838 40 0.001 {"}29.583 40.417 0.001 {"}29.117 41.117 0.001 {"}28.712 42 0.001 {"}28.565 42.565 0.001 {"}28.316 43.684 0.001 {"}28.239 44 0.001 {"}28.204 44.204 0.001 {"}28 45.217 0.001 {"}27.83 45.83 0.001 {"}27.788 46 0.001 {"}27.734 46.266 0.001 {"}27.476 47.476 0.001 {"}27.373 48 0.001 {"}27.389 48.611 0.001 {"}27.433 49.433 0.001 {"}27.449 50 0.001 {"}27.528 50.472 0.001 {"}27.792 51.792 0.001 {"}27.828 52 0.001 {"}27.864 52.136 0.001 {"}28 52.648 0.001 {"}28.223 53.777 0.001 {"}28.277 54 0.001 {"}28.427 54.427 0.001 {"}28.689 55.311 0.001 {"}28.977 56 0.001 {"}29.336 56.664 0.001 {"}30 57.513 0.001 {"}30.189 57.811 0.001 {"}30.283 58 0.001 {"}30.64 58.64 0.001 {"}30.866 59.134 0.001 {"}31.636 60 0.001 {"}31.799 60.201 0.001 {"}32 60.428 0.001 {"}32.652 61.348 0.001 {"}33.391 62 0.001 {"}33.695 62.305 0.001 {"}34 62.565 0.001 {"}34.699 63.301 0.001 {"}35.746 64 0.001 {"}35.88 64.12 0.001 {"}36 64.216 0.001 {"}36.909 65.091 0.001 {"}37.284 65.284 0.001 {"}38 65.717 0.001 {"}38.173 65.827 0.001 {"}38.38 66 0.001 {"}39.226 66.774 0.001 {"}40 67.264 0.001 {"}40.487 67.513 0.001 {"}41.588 68 0.001 {"}41.833 68.167 0.001 {"}42 68.28 0.001 {"}42.973 69.027 0.001 {"}43.068 69.068 0.001 {"}44 69.557 0.001 {"}44.324 69.676 0.001 {"}45.298 70 0.001 {"}45.766 70.234 0.001 {"}46 70.364 0.001 {"}46.894 70.894 0.001 {"}47.022 70.978 0.001 {"}48 71.401 0.001 {"}48.482 71.518 0.001 {"}49.745 71.745 0.001 {"}50 71.801 0.001 {"}50.165 71.835 0.001 {"}50.907 72 0.001 {"}51.688 72.312 0.001 {"}52 72.428 0.001 {"}52.578 72.578 0.001 {"}53.205 72.795 0.001 {"}54 72.96 0.001 {"}54.973 73.027 0.001 {"}55.033 73.033 0.001 {"}56 73.105 0.001 {"}56.967 73.033 0.001 {"}57.031 73.031 0.001 {"}58 72.953 0.001 {"}58.781 72.781 0.001 {"}59.533 72.467 0.001 {"}60 72.324 0.001 {"}60.243 72.243 0.001 {"}60.648 72 0.001 {"}P 180 143.009 0.001 {"}179.777 143.777 0.001 {"}179.726 144 0.001 {"}179.643 144.357 0.001 {"}179.342 145.342 0.001 {"}179.217 146 0.001 {"}179.117 146.883 0.001 {"}179.087 147.087 0.001 {"}178.99 148 0.001 {"}178.94 148.94 0.001 {"}178.935 149.065 0.001 {"}178.886 150 0.001 {"}178.875 150.875 0.001 {"}178.875 151.125 0.001 {"}178.866 152 0.001 {"}178.886 152.886 0.001 {"}178.888 153.112 0.001 {"}178.909 154 0.001 {"}178.996 154.996 0.001 {"}178.996 155.004 0.001 {"}179.088 156 0.001 {"}179.215 156.785 0.001 {"}179.336 157.336 0.001 {"}179.454 158 0.001 {"}179.552 158.448 0.001 {"}180 159.66 0.001 {"}P -60.487 180 0.001 {"}-60.22 179.78 0.001 {"}-60 179.513 0.001 {"}-59.211 178.789 0.001 {"}-58.62 178 0.001 {"}-58.303 177.697 0.001 {"}-58 177.219 0.001 {"}-57.437 176.563 0.001 {"}-57.098 176 0.001 {"}-56.603 175.397 0.001 {"}-56 174.178 0.001 {"}-55.921 174.079 0.001 {"}-55.876 174 0.001 {"}-55.319 173.319 0.001 {"}-55.026 172.974 0.001 {"}-54.48 172 0.001 {"}-54.264 171.736 0.001 {"}-54 171.182 0.001 {"}-53.499 170.501 0.001 {"}-53.258 170 0.001 {"}-52.795 169.205 0.001 {"}-52.551 168.551 0.001 {"}-52.305 168 0.001 {"}-52.185 167.815 0.001 {"}-52 167.367 0.001 {"}-51.441 166.559 0.001 {"}-51.18 166 0.001 {"}-50.737 165.263 0.001 {"}-50.444 164.444 0.001 {"}-50.247 164 0.001 {"}-50.146 163.854 0.001 {"}-50 163.497 0.001 {"}-49.363 162.637 0.001 {"}-49.044 162 0.001 {"}-48.606 161.394 0.001 {"}-48.16 160.16 0.001 {"}-48.084 160 0.001 {"}-48.048 159.952 0.001 {"}-48 159.816 0.001 {"}-47.204 158.796 0.001 {"}-46.765 158 0.001 {"}-46.408 157.592 0.001 {"}-46 156.823 0.001 {"}-45.624 156.376 0.001 {"}-45.39 156 0.001 {"}-44.826 155.174 0.001 {"}-44.531 154.531 0.001 {"}-44.254 154 0.001 {"}-44.139 153.861 0.001 {"}-44 153.58 0.001 {"}-43.278 152.722 0.001 {"}-42.837 152 0.001 {"}-42.444 151.556 0.001 {"}-42 150.664 0.001 {"}-41.704 150.296 0.001 {"}-41.521 150 0.001 {"}-40.865 149.135 0.001 {"}-40.631 148.631 0.001 {"}-40.29 148 0.001 {"}-40.168 147.832 0.001 {"}-40 147.497 0.001 {"}-39.327 146.673 0.001 {"}-38.947 146 0.001 {"}-38.578 145.422 0.001 {"}-38.115 144.115 0.001 {"}-38.063 144 0.001 {"}-38.041 143.959 0.001 {"}-38 143.852 0.001 {"}-37.234 142.766 0.001 {"}-36.893 142 0.001 {"}-36.598 141.402 0.001 {"}-36.247 140.247 0.001 {"}-36.153 140 0.001 {"}-36.105 139.895 0.001 {"}-36 139.557 0.001 {"}-35.438 138.562 0.001 {"}-35.222 138 0.001 {"}-34.927 137.073 0.001 {"}-34.874 136.874 0.001 {"}-34.616 136 0.001 {"}-34.457 135.543 0.001 {"}-34.256 134.256 0.001 {"}-34.189 134 0.001 {"}-34.163 133.837 0.001 {"}-34.035 132.035 0.001 {"}-34.03 132 0.001 {"}-34.029 131.971 0.001 {"}-34 131.306 0.001 {"}-33.885 130.115 0.001 {"}-33.876 130 0.001 {"}-33.885 129.885 0.001 {"}-34 129.021 0.001 {"}-34.059 128.059 0.001 {"}-34.064 128 0.001 {"}-34.082 127.918 0.001 {"}-34.247 126.247 0.001 {"}-34.318 126 0.001 {"}-34.457 125.543 0.001 {"}-34.674 124.674 0.001 {"}-34.916 124 0.001 {"}-35.233 123.233 0.001 {"}-36 122.17 0.001 {"}-36.05 122.05 0.001 {"}-36.082 122 0.001 {"}-36.162 121.838 0.001 {"}-36.643 120.643 0.001 {"}-37.088 120 0.001 {"}-37.42 119.42 0.001 {"}-38 118.818 0.001 {"}-38.306 118.306 0.001 {"}-38.64 118 0.001 {"}-39.218 117.218 0.001 {"}-40 116.556 0.001 {"}-40.236 116.236 0.001 {"}-40.548 116 0.001 {"}-41.205 115.205 0.001 {"}-42 114.591 0.001 {"}-42.276 114.276 0.001 {"}-42.73 114 0.001 {"}-43.371 113.371 0.001 {"}-44 112.973 0.001 {"}-44.521 112.521 0.001 {"}-45.614 112 0.001 {"}-45.826 111.826 0.001 {"}-46 111.717 0.001 {"}-46.903 110.903 0.001 {"}-47.255 110.745 0.001 {"}-48 110.331 0.001 {"}-48.178 110.178 0.001 {"}-48.503 110 0.001 {"}-49.29 109.29 0.001 {"}-50 108.904 0.001 {"}-50.501 108.501 0.001 {"}-51.454 108 0.001 {"}-51.737 107.737 0.001 {"}-52 107.572 0.001 {"}-52.885 106.885 0.001 {"}-53.356 106.644 0.001 {"}-54 106.275 0.001 {"}-54.149 106.149 0.001 {"}-54.403 106 0.001 {"}-55.198 105.198 0.001 {"}-56 104.631 0.001 {"}-56.297 104.297 0.001 {"}-56.669 104 0.001 {"}-57.271 103.271 0.001 {"}-58 102.628 0.001 {"}-58.261 102.261 0.001 {"}-58.55 102 0.001 {"}-59.122 101.122 0.001 {"}-60 100.206 0.001 {"}-60.074 100.074 0.001 {"}-60.132 100 0.001 {"}-60.256 99.744 0.001 {"}-60.699 98.699 0.001 {"}-61.126 98 0.001 {"}-61.42 97.42 0.001 {"}-62 96.642 0.001 {"}-62.219 96.219 0.001 {"}-62.402 96 0.001 {"}-62.804 95.196 0.001 {"}-62.926 94.926 0.001 {"}-63.487 94 0.001 {"}-63.665 93.665 0.001 {"}-64 93.162 0.001 {"}-64.362 92.362 0.001 {"}-64.597 92 0.001 {"}-65.03 91.03 0.001 {"}-65.096 90.904 0.001 {"}-65.548 90 0.001 {"}-65.681 89.681 0.001 {"}-66 89.038 0.001 {"}-66.241 88.241 0.001 {"}-66.339 88 0.001 {"}-66.453 87.547 0.001 {"}-66.656 86.656 0.001 {"}-66.833 86 0.001 {"}-67.011 85.011 0.001 {"}-67.016 84.984 0.001 {"}-67.197 84 0.001 {"}-67.338 83.338 0.001 {"}-67.667 82.333 0.001 {"}-67.752 82 0.001 {"}-67.795 81.795 0.001 {"}-68 81.009 0.001 {"}-68.114 80.114 0.001 {"}-68.136 80 0.001 {"}-68.167 79.833 0.001 {"}-68.327 78.327 0.001 {"}-68.402 78 0.001 {"}-68.514 77.486 0.001 {"}-68.639 76.639 0.001 {"}-68.806 76 0.001 {"}-68.963 75.037 0.001 {"}-68.971 74.971 0.001 {"}-69.145 74 0.001 {"}-69.329 73.329 0.001 {"}-69.781 72.219 0.001 {"}-69.855 72 0.001 {"}-69.886 71.886 0.001 {"}-70 71.553 0.001 {"}-70.253 70.253 0.001 {"}-70.356 70 0.001 {"}-70.51 69.49 0.001 {"}-70.704 68.704 0.001 {"}-70.953 68 0.001 {"}-71.247 67.247 0.001 {"}-72 66.093 0.001 {"}-72.027 66.027 0.001 {"}-72.044 66 0.001 {"}-72.073 65.927 0.001 {"}-72.497 64.497 0.001 {"}-72.767 64 0.001 {"}-73.205 63.205 0.001 {"}-74 62.253 0.001 {"}-74.098 62.098 0.001 {"}-74.196 62 0.001 {"}-74.541 61.459 0.001 {"}-74.878 60.878 0.001 {"}-75.648 60 0.001 {"}-75.783 59.783 0.001 {"}-76 59.534 0.001 {"}-76.691 58.691 0.001 {"}-77.534 58 0.001 {"}-77.753 57.753 0.001 {"}-78 57.505 0.001 {"}-78.747 56.747 0.001 {"}-79.797 56.203 0.001 {"}-80 56.079 0.001 {"}-80.046 56.046 0.001 {"}-80.113 56 0.001 {"}-81.056 55.056 0.001 {"}-82 54.482 0.001 {"}-82.341 54.341 0.001 {"}-83.167 54 0.001 {"}-83.674 53.674 0.001 {"}-84 53.472 0.001 {"}-84.92 52.92 0.001 {"}-85.174 52.826 0.001 {"}-86 52.454 0.001 {"}-86.346 52.346 0.001 {"}-87.514 52 0.001 {"}-87.836 51.836 0.001 {"}-88 51.746 0.001 {"}-88.556 51.444 0.001 {"}-89.115 51.115 0.001 {"}-90 50.72 0.001 {"}-90.545 50.545 0.001 {"}-91.732 50.268 0.001 {"}-92 50.193 0.001 {"}-92.152 50.152 0.001 {"}-92.561 50 0.001 {"}-93.367 49.367 0.001 {"}-94 48.944 0.001 {"}-94.545 48.545 0.001 {"}-95.417 48 0.001 {"}-95.693 47.693 0.001 {"}-96 47.352 0.001 {"}-96.497 46.497 0.001 {"}-96.811 46 0.001 {"}-96.936 45.064 0.001 {"}-96.956 44.956 0.001 {"}-97.069 44 0.001 {"}-96.886 43.114 0.001 {"}-96.886 42.886 0.001 {"}-96.757 42 0.001 {"}-96.491 41.509 0.001 {"}-96.181 40.181 0.001 {"}-96.116 40 0.001 {"}-96.067 39.933 0.001 {"}-96 39.856 0.001 {"}-95.039 38.961 0.001 {"}-94.505 38 0.001 {"}-94.261 37.739 0.001 {"}-94 37.481 0.001 {"}-93.203 36.797 0.001 {"}-92.671 36 0.001 {"}-92.329 35.671 0.001 {"}-92 35.329 0.001 {"}-91.295 34.705 0.001 {"}-90.766 34 0.001 {"}-90.363 33.637 0.001 {"}-90 33.234 0.001 {"}-89.34 32.66 0.001 {"}-88.822 32 0.001 {"}-88.402 31.598 0.001 {"}-88 31.048 0.001 {"}-87.483 30.517 0.001 {"}-87.074 30 0.001 {"}-86.51 29.49 0.001 {"}-86 28.785 0.001 {"}-85.607 28.393 0.001 {"}-85.272 28 0.001 {"}-84.586 27.414 0.001 {"}-84 26.627 0.001 {"}-83.696 26.304 0.001 {"}-83.458 26 0.001 {"}-82.672 25.328 0.001 {"}-82 24.542 0.001 {"}-81.718 24.282 0.001 {"}-81.482 24 0.001 {"}-80.675 23.325 0.001 {"}-80 22.609 0.001 {"}-79.659 22.341 0.001 {"}-79.322 22 0.001 {"}-78.562 21.438 0.001 {"}-78 20.923 0.001 {"}-77.475 20.525 0.001 {"}-76.962 20 0.001 {"}-76.405 19.595 0.001 {"}-76 19.231 0.001 {"}-75.287 18.713 0.001 {"}-74.58 18 0.001 {"}-74.233 17.767 0.001 {"}-74 17.543 0.001 {"}-73.111 16.889 0.001 {"}-72.244 16 0.001 {"}-72.098 15.902 0.001 {"}-72 15.789 0.001 {"}-71.167 15.167 0.001 {"}-70.971 15.029 0.001 {"}-70 14.037 0.001 {"}-69.98 14.02 0.001 {"}-69.959 14 0.001 {"}-68.798 13.202 0.001 {"}-68 12.304 0.001 {"}-67.842 12.158 0.001 {"}-67.707 12 0.001 {"}-66.762 11.238 0.001 {"}-66 10.119 0.001 {"}-65.941 10.059 0.001 {"}-65.898 10 0.001 {"}-64.858 9.142 0.001 {"}-64.406 8.406 0.001 {"}-64.123 8 0.001 {"}-64.052 7.948 0.001 {"}-64 7.873 0.001 {"}-63.215 7.215 0.001 {"}-62.974 7.026 0.001 {"}-62.894 6.894 0.001 {"}-62.271 6 0.001 {"}-62.111 5.889 0.001 {"}-62 5.718 0.001 {"}-61.079 4.921 0.001 {"}-60.424 4 0.001 {"}-60.175 3.825 0.001 {"}-60 3.519 0.001 {"}-59.222 2.778 0.001 {"}-58.732 2 0.001 {"}-58.316 1.684 0.001 {"}-58 1.065 0.001 {"}-57.481 0.519 0.001 {"}-57.167 0 0.001 {"}-56.6 -0.6 0.001 {"}-56.045 -1.955 0.001 {"}-56.021 -2 0.001 {"}-56.01 -2.01 0.001 {"}-56 -2.037 0.001 {"}-55.054 -3.054 0.001 {"}-54.565 -4 0.001 {"}-54.284 -4.284 0.001 {"}-54 -5.145 0.001 {"}-53.616 -5.616 0.001 {"}-53.412 -6 0.001 {"}-52.746 -6.746 0.001 {"}-52.402 -7.598 0.001 {"}-52.19 -8 0.001 {"}-52.093 -8.093 0.001 {"}-52 -8.326 0.001 {"}-51.161 -9.161 0.001 {"}-50.644 -10 0.001 {"}-50.303 -10.303 0.001 {"}-50 -11.002 0.001 {"}-49.534 -11.534 0.001 {"}-49.274 -12 0.001 {"}-48.696 -12.696 0.001 {"}-48.23 -13.77 0.001 {"}-48.107 -14 0.001 {"}-48.055 -14.055 0.001 {"}-48 -14.206 0.001 {"}-47.186 -15.186 0.001 {"}-46.753 -16 0.001 {"}-46.394 -16.394 0.001 {"}-46 -17.561 0.001 {"}-45.812 -17.812 0.001 {"}-45.71 -18 0.001 {"}-44.952 -18.952 0.001 {"}-44.909 -19.091 0.001 {"}-44.493 -20 0.001 {"}-44.278 -20.278 0.001 {"}-44 -21.26 0.001 {"}-43.694 -21.694 0.001 {"}-43.549 -22 0.001 {"}-42.935 -22.935 0.001 {"}-42.886 -23.114 0.001 {"}-42.523 -24 0.001 {"}-42.291 -24.291 0.001 {"}-42 -25.317 0.001 {"}-41.711 -25.711 0.001 {"}-41.57 -26 0.001 {"}-40.88 -26.88 0.001 {"}-40.763 -27.237 0.001 {"}-40.409 -28 0.001 {"}-40.23 -28.23 0.001 {"}-40 -28.921 0.001 {"}-39.494 -29.494 0.001 {"}-39.211 -30 0.001 {"}-38.708 -30.708 0.001 {"}-38.404 -31.596 0.001 {"}-38.218 -32 0.001 {"}-38.135 -32.135 0.001 {"}-38 -32.628 0.001 {"}-37.469 -33.469 0.001 {"}-37.23 -34 0.001 {"}-36.829 -34.829 0.001 {"}-36.725 -35.275 0.001 {"}-36.476 -36 0.001 {"}-36.354 -36.354 0.001 {"}-36 -37.858 0.001 {"}-35.952 -37.952 0.001 {"}-35.931 -38 0.001 {"}-35.876 -38.124 0.001 {"}-35.288 -39.288 0.001 {"}-35.03 -40 0.001 {"}-34.773 -40.773 0.001 {"}-34.621 -41.379 0.001 {"}-34.438 -42 0.001 {"}-34.348 -42.348 0.001 {"}-34.111 -43.889 0.001 {"}-34.086 -44 0.001 {"}-34.07 -44.07 0.001 {"}-34 -44.38 0.001 {"}-33.502 -45.502 0.001 {"}-33.352 -46 0.001 {"}-33.177 -46.823 0.001 {"}-33.106 -47.106 0.001 {"}-32.934 -48 0.001 {"}-32.865 -48.865 0.001 {"}-32.845 -49.155 0.001 {"}-32.78 -50 0.001 {"}-32.784 -50.784 0.001 {"}-32.793 -51.207 0.001 {"}-32.797 -52 0.001 {"}-32.873 -52.873 0.001 {"}-32.891 -53.109 0.001 {"}-32.969 -54 0.001 {"}-33.162 -54.838 0.001 {"}-33.324 -55.324 0.001 {"}-33.509 -56 0.001 {"}-33.638 -56.362 0.001 {"}-34 -57.081 0.001 {"}-34.212 -57.788 0.001 {"}-34.328 -58 0.001 {"}-34.58 -58.58 0.001 {"}-34.798 -59.202 0.001 {"}-35.263 -60 0.001 {"}-35.53 -60.47 0.001 {"}-36 -61.056 0.001 {"}-36.342 -61.658 0.001 {"}-36.678 -62 0.001 {"}-37.24 -62.76 0.001 {"}-38 -63.444 0.001 {"}-38.25 -63.75 0.001 {"}-38.583 -64 0.001 {"}-39.249 -64.751 0.001 {"}-40 -65.311 0.001 {"}-40.383 -65.617 0.001 {"}-41.099 -66 0.001 {"}-41.6 -66.4 0.001 {"}-42 -66.631 0.001 {"}-42.884 -67.116 0.001 {"}-43.293 -67.293 0.001 {"}-44 -67.626 0.001 {"}-44.235 -67.765 0.001 {"}-44.818 -68 0.001 {"}-45.56 -68.44 0.001 {"}-46 -68.62 0.001 {"}-46.958 -68.958 0.001 {"}-47.019 -68.981 0.001 {"}-48 -69.292 0.001 {"}-48.595 -69.405 0.001 {"}-49.597 -69.597 0.001 {"}-50 -69.674 0.001 {"}-50.25 -69.75 0.001 {"}-51.941 -69.941 0.001 {"}-52 -69.954 0.001 {"}-52.034 -69.966 0.001 {"}-52.189 -70 0.001 {"}-53.499 -70.501 0.001 {"}-54 -70.622 0.001 {"}-54.813 -70.813 0.001 {"}-55.096 -70.904 0.001 {"}-56 -71.073 0.001 {"}-56.789 -71.211 0.001 {"}-57.292 -71.292 0.001 {"}-58 -71.413 0.001 {"}-58.463 -71.537 0.001 {"}-59.649 -71.649 0.001 {"}-60 -71.721 0.001 {"}-60.228 -71.772 0.001 {"}-61.894 -71.894 0.001 {"}-62 -71.912 0.001 {"}-62.074 -71.926 0.001 {"}-62.553 -72 0.001 {"}-63.64 -72.36 0.001 {"}-64 -72.442 0.001 {"}-64.563 -72.563 0.001 {"}-65.25 -72.75 0.001 {"}-66 -72.89 0.001 {"}-66.965 -73.035 0.001 {"}-67.043 -73.043 0.001 {"}-68 -73.176 0.001 {"}-68.656 -73.344 0.001 {"}-69.518 -73.518 0.001 {"}-70 -73.631 0.001 {"}-70.279 -73.721 0.001 {"}-71.722 -74 0.001 {"}-71.927 -74.073 0.001 {"}-72 -74.099 0.001 {"}-72.194 -74.194 0.001 {"}-73.242 -74.758 0.001 {"}-74 -75.068 0.001 {"}-74.639 -75.361 0.001 {"}-75.754 -75.754 0.001 {"}-76 -75.852 0.001 {"}-76.091 -75.909 0.001 {"}-76.27 -76 0.001 {"}-77.202 -76.798 0.001 {"}-78 -77.319 0.001 {"}-78.398 -77.602 0.001 {"}-79.03 -78 0.001 {"}-79.518 -78.482 0.001 {"}-80 -78.88 0.001 {"}-80.598 -79.402 0.001 {"}-81.338 -80 0.001 {"}-81.66 -80.34 0.001 {"}-82 -80.662 0.001 {"}-82.674 -81.326 0.001 {"}-83.606 -82 0.001 {"}-83.809 -82.191 0.001 {"}-84 -82.37 0.001 {"}-84.809 -83.191 0.001 {"}-85.748 -83.748 0.001 {"}-86 -83.915 0.001 {"}-86.049 -83.951 0.001 {"}-86.11 -84 0.001 {"}-87.055 -84.945 0.001 {"}-88 -85.596 0.001 {"}-88.261 -85.739 0.001 {"}-88.649 -86 0.001 {"}-89.404 -86.596 0.001 {"}-90 -86.97 0.001 {"}-90.675 -87.325 0.001 {"}-91.703 -87.703 0.001 {"}-92 -87.83 0.001 {"}-92.121 -87.879 0.001 {"}-92.34 -88 0.001 {"}-93.289 -88.711 0.001 {"}-94 -89.077 0.001 {"}-94.639 -89.361 0.001 {"}-95.703 -89.703 0.001 {"}-96 -89.814 0.001 {"}-96.133 -89.867 0.001 {"}-96.371 -90 0.001 {"}-97.276 -90.724 0.001 {"}-98 -91.086 0.001 {"}-98.656 -91.344 0.001 {"}-99.66 -91.66 0.001 {"}-100 -91.779 0.001 {"}-100.16 -91.84 0.001 {"}-100.51 -92 0.001 {"}-101.389 -92.611 0.001 {"}-102 -92.883 0.001 {"}-102.784 -93.216 0.001 {"}-103.407 -93.407 0.001 {"}-104 -93.62 0.001 {"}-104.297 -93.703 0.001 {"}-105.352 -94 0.001 {"}-105.795 -94.205 0.001 {"}-106 -94.278 0.001 {"}-106.402 -94.402 0.001 {"}-107.284 -94.716 0.001 {"}-108 -94.91 0.001 {"}-108.872 -95.128 0.001 {"}-109.174 -95.174 0.001 {"}-110 -95.351 0.001 {"}-110.626 -95.374 0.001 {"}-111.433 -95.433 0.001 {"}-112 -95.455 0.001 {"}-112.567 -95.433 0.001 {"}-113.374 -95.374 0.001 {"}-114 -95.351 0.001 {"}-114.727 -95.273 0.001 {"}-115.236 -95.236 0.001 {"}-116 -95.147 0.001 {"}-116.865 -94.865 0.001 {"}-117.373 -94.627 0.001 {"}-118 -94.373 0.001 {"}-118.27 -94.27 0.001 {"}-118.783 -94 0.001 {"}-119.707 -93.707 0.001 {"}-120 -93.608 0.001 {"}-120.737 -93.263 0.001 {"}-121.126 -93.126 0.001 {"}-122 -92.492 0.001 {"}-122.303 -92.303 0.001 {"}-122.702 -92 0.001 {"}-123.562 -91.562 0.001 {"}-124 -91.243 0.001 {"}-124.71 -90.71 0.001 {"}-125.356 -90 0.001 {"}-125.714 -89.714 0.001 {"}-126 -89.455 0.001 {"}-126.797 -88.797 0.001 {"}-127.455 -88 0.001 {"}-127.745 -87.745 0.001 {"}-128 -87.528 0.001 {"}-128.826 -86.826 0.001 {"}-129.432 -86 0.001 {"}-129.712 -85.712 0.001 {"}-130 -85.45 0.001 {"}-130.765 -84.765 0.001 {"}-131.367 -84 0.001 {"}-131.672 -83.672 0.001 {"}-132 -83.367 0.001 {"}-132.703 -82.703 0.001 {"}-133.227 -82 0.001 {"}-133.581 -81.581 0.001 {"}-134 -81.113 0.001 {"}-134.569 -80.569 0.001 {"}-135.023 -80 0.001 {"}-135.501 -79.501 0.001 {"}-136 -78.904 0.001 {"}-136.449 -78.449 0.001 {"}-136.806 -78 0.001 {"}-137.382 -77.382 0.001 {"}-138 -76.528 0.001 {"}-138.247 -76.247 0.001 {"}-138.452 -76 0.001 {"}-139.203 -75.203 0.001 {"}-139.629 -74.371 0.001 {"}-139.852 -74 0.001 {"}-139.92 -73.92 0.001 {"}-140 -73.806 0.001 {"}-140.872 -72.872 0.001 {"}-141.431 -72 0.001 {"}-141.661 -71.661 0.001 {"}-142 -71.086 0.001 {"}-142.468 -70.468 0.001 {"}-142.747 -70 0.001 {"}-143.198 -69.198 0.001 {"}-143.45 -68.55 0.001 {"}-143.697 -68 0.001 {"}-143.796 -67.796 0.001 {"}-144 -67.273 0.001 {"}-144.436 -66.436 0.001 {"}-144.601 -66 0.001 {"}-145.024 -65.024 0.001 {"}-145.048 -64.952 0.001 {"}-145.407 -64 0.001 {"}-145.511 -63.511 0.001 {"}-145.757 -62.243 0.001 {"}-145.807 -62 0.001 {"}-145.844 -61.844 0.001 {"}-146 -60.783 0.001 {"}-146.136 -60.136 0.001 {"}-146.163 -60 0.001 {"}-146.209 -59.791 0.001 {"}-146.561 -58.561 0.001 {"}-146.664 -58 0.001 {"}-146.742 -57.258 0.001 {"}-146.797 -56.797 0.001 {"}-146.879 -56 0.001 {"}-146.978 -55.022 0.001 {"}-146.981 -54.981 0.001 {"}-147.085 -54 0.001 {"}-147.123 -53.123 0.001 {"}-147.137 -52.863 0.001 {"}-147.176 -52 0.001 {"}-147.211 -51.211 0.001 {"}-147.235 -50.765 0.001 {"}-147.27 -50 0.001 {"}-147.301 -49.301 0.001 {"}-147.337 -48.663 0.001 {"}-147.367 -48 0.001 {"}-147.384 -47.384 0.001 {"}-147.414 -46.586 0.001 {"}-147.431 -46 0.001 {"}-147.461 -45.461 0.001 {"}-147.538 -44.462 0.001 {"}-147.565 -44 0.001 {"}-147.582 -43.582 0.001 {"}-147.629 -42.371 0.001 {"}-147.644 -42 0.001 {"}-147.647 -41.647 0.001 {"}-147.702 -40.298 0.001 {"}-147.705 -40 0.001 {"}-147.695 -39.695 0.001 {"}-147.695 -38.305 0.001 {"}-147.685 -38 0.001 {"}-147.685 -37.685 0.001 {"}-147.685 -36.315 0.001 {"}-147.685 -36 0.001 {"}-147.682 -35.682 0.001 {"}-147.682 -34.318 0.001 {"}-147.678 -34 0.001 {"}-147.678 -33.678 0.001 {"}-147.678 -32.322 0.001 {"}-147.678 -32 0.001 {"}-147.682 -31.682 0.001 {"}-147.682 -30.318 0.001 {"}-147.685 -30 0.001 {"}-147.692 -29.692 0.001 {"}-147.692 -28.308 0.001 {"}-147.699 -28 0.001 {"}-147.714 -27.714 0.001 {"}-147.744 -26.256 0.001 {"}-147.757 -26 0.001 {"}-147.764 -25.764 0.001 {"}-147.764 -24.236 0.001 {"}-147.77 -24 0.001 {"}-147.779 -23.779 0.001 {"}-147.779 -22.221 0.001 {"}-147.787 -22 0.001 {"}-147.794 -21.794 0.001 {"}-147.852 -20.148 0.001 {"}-147.857 -20 0.001 {"}-147.862 -19.862 0.001 {"}-147.862 -18.138 0.001 {"}-147.866 -18 0.001 {"}-147.871 -17.871 0.001 {"}-147.93 -16.07 0.001 {"}-147.933 -16 0.001 {"}-147.941 -15.941 0.001 {"}-148 -14.611 0.001 {"}-148.041 -14.041 0.001 {"}-148.042 -14 0.001 {"}-148.042 -13.958 0.001 {"}-148.123 -12.123 0.001 {"}-148.124 -12 0.001 {"}-148.128 -11.872 0.001 {"}-148.285 -10.285 0.001 {"}-148.293 -10 0.001 {"}-148.307 -9.693 0.001 {"}-148.455 -8.455 0.001 {"}-148.474 -8 0.001 {"}-148.489 -7.511 0.001 {"}-148.548 -6.548 0.001 {"}-148.565 -6 0.001 {"}-148.615 -5.385 0.001 {"}-148.695 -4.695 0.001 {"}-148.748 -4 0.001 {"}-148.786 -3.214 0.001 {"}-148.818 -2.818 0.001 {"}-148.855 -2 0.001 {"}-148.89 -1.11 0.001 {"}-148.9 -0.9 0.001 {"}-148.935 0 0.001 {"}-148.953 0.953 0.001 {"}-148.955 1.045 0.001 {"}-148.973 2 0.001 {"}-148.985 2.985 0.001 {"}-148.986 3.014 0.001 {"}-148.998 4 0.001 {"}-148.986 4.986 0.001 {"}-148.985 5.015 0.001 {"}-148.973 6 0.001 {"}-148.967 6.967 0.001 {"}-148.966 7.034 0.001 {"}-148.96 8 0.001 {"}-148.954 8.954 0.001 {"}-148.951 9.049 0.001 {"}-148.945 10 0.001 {"}-148.958 10.958 0.001 {"}-148.958 11.042 0.001 {"}-148.971 12 0.001 {"}-148.998 12.998 0.001 {"}-148.998 13.002 0.001 {"}-149.025 14 0.001 {"}-149.12 14.88 0.001 {"}-149.159 15.159 0.001 {"}-149.255 16 0.001 {"}-149.327 16.673 0.001 {"}-149.412 17.412 0.001 {"}-149.476 18 0.001 {"}-149.511 18.489 0.001 {"}-149.631 19.631 0.001 {"}-149.659 20 0.001 {"}-149.683 20.317 0.001 {"}-149.797 21.797 0.001 {"}-149.813 22 0.001 {"}-149.822 22.178 0.001 {"}-149.901 23.901 0.001 {"}-149.907 24 0.001 {"}-149.91 24.09 0.001 {"}-150 25.542 0.001 {"}-150.04 25.96 0.001 {"}-150.043 26 0.001 {"}-150.043 26.043 0.001 {"}-150 27.834 0.001 {"}-149.997 27.997 0.001 {"}-149.997 28 0.001 {"}-149.997 28.003 0.001 {"}-149.872 29.872 0.001 {"}-149.864 30 0.001 {"}-149.855 30.145 0.001 {"}-149.799 31.799 0.001 {"}-149.787 32 0.001 {"}-149.773 32.227 0.001 {"}-149.695 33.695 0.001 {"}-149.676 34 0.001 {"}-149.647 34.353 0.001 {"}-149.56 35.56 0.001 {"}-149.524 36 0.001 {"}-149.487 36.513 0.001 {"}-149.452 37.452 0.001 {"}-149.409 38 0.001 {"}-149.372 38.628 0.001 {"}-149.33 39.33 0.001 {"}-149.291 40 0.001 {"}-149.262 40.738 0.001 {"}-149.242 41.242 0.001 {"}-149.212 42 0.001 {"}-149.127 42.873 0.001 {"}-149.108 43.108 0.001 {"}-149.017 44 0.001 {"}-148.874 44.874 0.001 {"}-148.806 45.194 0.001 {"}-148.663 46 0.001 {"}-148.547 46.547 0.001 {"}-148.241 47.759 0.001 {"}-148.187 48 0.001 {"}-148.157 48.157 0.001 {"}-148 48.783 0.001 {"}-147.818 49.818 0.001 {"}-147.79 50 0.001 {"}-147.754 50.246 0.001 {"}-147.553 51.553 0.001 {"}-147.489 52 0.001 {"}-147.403 52.597 0.001 {"}-147.336 53.336 0.001 {"}-147.228 54 0.001 {"}-147.107 54.893 0.001 {"}-147.085 55.085 0.001 {"}-146.957 56 0.001 {"}-146.87 56.87 0.001 {"}-146.806 57.194 0.001 {"}-146.71 58 0.001 {"}-146.694 58.694 0.001 {"}-146.679 59.321 0.001 {"}-146.663 60 0.001 {"}-146.679 60.679 0.001 {"}-146.694 61.306 0.001 {"}-146.71 62 0.001 {"}-146.755 62.755 0.001 {"}-146.797 63.203 0.001 {"}-146.841 64 0.001 {"}-146.912 64.912 0.001 {"}-146.929 65.071 0.001 {"}-146.997 66 0.001 {"}-147.037 66.963 0.001 {"}-147.038 67.038 0.001 {"}-147.077 68 0.001 {"}-147.137 68.863 0.001 {"}-147.148 69.148 0.001 {"}-147.204 70 0.001 {"}-147.247 70.753 0.001 {"}-147.277 71.277 0.001 {"}-147.318 72 0.001 {"}-147.342 72.658 0.001 {"}-147.342 73.342 0.001 {"}-147.366 74 0.001 {"}-147.412 74.588 0.001 {"}-147.456 75.456 0.001 {"}-147.497 76 0.001 {"}-147.536 76.464 0.001 {"}-147.611 77.611 0.001 {"}-147.642 78 0.001 {"}-147.662 78.338 0.001 {"}-147.754 79.754 0.001 {"}-147.768 80 0.001 {"}-147.809 80.191 0.001 {"}-147.997 81.997 0.001 {"}-147.998 82 0.001 {"}-147.998 82.002 0.001 {"}-148 82.007 0.001 {"}-148.629 83.371 0.001 {"}-148.797 84 0.001 {"}-149.109 84.891 0.001 {"}-149.196 85.196 0.001 {"}-149.452 86 0.001 {"}-149.621 86.379 0.001 {"}-150 87.572 0.001 {"}-150.149 87.851 0.001 {"}-150.214 88 0.001 {"}-150.656 88.656 0.001 {"}-150.944 89.056 0.001 {"}-151.417 90 0.001 {"}-151.611 90.389 0.001 {"}-152 91.391 0.001 {"}-152.223 91.777 0.001 {"}-152.323 92 0.001 {"}-152.833 92.833 0.001 {"}-152.966 93.034 0.001 {"}-153.426 94 0.001 {"}-153.603 94.397 0.001 {"}-154 95.507 0.001 {"}-154.168 95.832 0.001 {"}-154.237 96 0.001 {"}-154.504 96.504 0.001 {"}-154.867 97.133 0.001 {"}-155.243 98 0.001 {"}-155.419 98.581 0.001 {"}-155.733 99.733 0.001 {"}-155.81 100 0.001 {"}-155.87 100.13 0.001 {"}-156 100.507 0.001 {"}-156.465 101.535 0.001 {"}-156.618 102 0.001 {"}-156.907 102.907 0.001 {"}-156.954 103.046 0.001 {"}-157.243 104 0.001 {"}-157.404 104.596 0.001 {"}-157.633 105.633 0.001 {"}-157.725 106 0.001 {"}-157.81 106.19 0.001 {"}-158 106.79 0.001 {"}-158.376 107.624 0.001 {"}-158.506 108 0.001 {"}-158.96 108.96 0.001 {"}-158.987 109.013 0.001 {"}-159.382 110 0.001 {"}-159.59 110.41 0.001 {"}-160 111.435 0.001 {"}-160.214 111.786 0.001 {"}-160.323 112 0.001 {"}-161.061 112.939 0.001 {"}-161.227 113.227 0.001 {"}-161.707 114 0.001 {"}-161.846 114.154 0.001 {"}-162 114.395 0.001 {"}-162.781 115.219 0.001 {"}-163.342 116 0.001 {"}-163.654 116.346 0.001 {"}-164 116.804 0.001 {"}-164.602 117.399 0.001 {"}-165.056 118 0.001 {"}-165.482 118.518 0.001 {"}-166 119.376 0.001 {"}-166.275 119.725 0.001 {"}-166.446 120 0.001 {"}-167.13 120.87 0.001 {"}-167.444 121.444 0.001 {"}-167.779 122 0.001 {"}-167.892 122.108 0.001 {"}-168 122.272 0.001 {"}-168.828 123.172 0.001 {"}-169.341 124 0.001 {"}-169.632 124.368 0.001 {"}-170 125.077 0.001 {"}-170.405 125.595 0.001 {"}-170.631 126 0.001 {"}-171.214 126.786 0.001 {"}-171.612 127.612 0.001 {"}-171.825 128 0.001 {"}-171.905 128.095 0.001 {"}-172 128.272 0.001 {"}-172.809 129.191 0.001 {"}-173.302 130 0.001 {"}-173.604 130.396 0.001 {"}-174 131.147 0.001 {"}-174.387 131.613 0.001 {"}-174.618 132 0.001 {"}-175.182 132.818 0.001 {"}-175.594 133.594 0.001 {"}-175.826 134 0.001 {"}-175.912 134.088 0.001 {"}-176 134.243 0.001 {"}-176.821 135.179 0.001 {"}-177.311 136 0.001 {"}-177.567 136.433 0.001 {"}-178 137.649 0.001 {"}-178.122 137.878 0.001 {"}-178.173 138 0.001 {"}-178.418 138.418 0.001 {"}-178.873 139.127 0.001 {"}-179.268 140 0.001 {"}-179.456 140.544 0.001 {"}-179.714 141.714 0.001 {"}-179.796 142 0.001 {"}-179.849 142.151 0.001 {"}-180 143.009 0.001 {"}P -180 159.66 0.001 {"}-179.938 159.938 0.001 {"}-179.917 160 0.001 {"}-179.882 160.118 0.001 {"}-179.591 161.591 0.001 {"}-179.43 162 0.001 {"}-179.122 162.878 0.001 {"}-179.063 163.063 0.001 {"}-178.694 164 0.001 {"}-178.482 164.482 0.001 {"}-178 165.206 0.001 {"}-177.744 165.744 0.001 {"}-177.556 166 0.001 {"}-176.989 166.989 0.001 {"}-176.87 167.13 0.001 {"}-176.163 168 0.001 {"}-176.101 168.101 0.001 {"}-176 168.224 0.001 {"}-175.342 169.342 0.001 {"}-174.757 170 0.001 {"}-174.428 170.428 0.001 {"}-174 170.841 0.001 {"}-173.445 171.445 0.001 {"}-172.728 172 0.001 {"}-172.362 172.362 0.001 {"}-172 172.622 0.001 {"}-171.212 173.212 0.001 {"}-170.257 173.743 0.001 {"}-170 173.897 0.001 {"}-169.949 173.949 0.001 {"}-169.869 174 0.001 {"}-168.906 174.906 0.001 {"}-168 175.464 0.001 {"}-167.682 175.682 0.001 {"}-167.081 176 0.001 {"}-166.482 176.482 0.001 {"}-166 176.805 0.001 {"}-165.28 177.28 0.001 {"}-164.272 177.728 0.001 {"}-164 177.866 0.001 {"}-163.933 177.933 0.001 {"}-163.84 178 0.001 {"}-162.948 178.948 0.001 {"}-162 179.618 0.001 {"}-161.812 179.812 0.001 {"}-161.597 180 0.001 @vectorlist {Favored} color= sky master= {Favored} {level 0.02}P -141.067 -180 0.02 {"}-140.497 -179.503 0.02 {"}-140 -179.214 0.02 {"}-139.245 -178.755 0.02 {"}-138.517 -178.517 0.02 {"}-138 -178.296 0.02 {"}-137.786 -178.214 0.02 {"}-136.911 -178 0.02 {"}-136.294 -177.706 0.02 {"}-136 -177.605 0.02 {"}-135.501 -177.501 0.02 {"}-134.704 -177.296 0.02 {"}-134 -177.167 0.02 {"}-133.135 -177.135 0.02 {"}-132.874 -177.126 0.02 {"}-132 -177.094 0.02 {"}-131.17 -177.17 0.02 {"}-130.773 -177.227 0.02 {"}-130 -177.305 0.02 {"}-129.427 -177.427 0.02 {"}-128.159 -177.841 0.02 {"}-128 -177.882 0.02 {"}-127.908 -177.908 0.02 {"}-127.663 -178 0.02 {"}-126.259 -178.259 0.02 {"}-126 -178.34 0.02 {"}-125.533 -178.467 0.02 {"}-124.633 -178.633 0.02 {"}-124 -178.854 0.02 {"}-123.136 -179.136 0.02 {"}-122.587 -179.413 0.02 {"}-122 -179.664 0.02 {"}-121.749 -179.749 0.02 {"}-121.238 -180 0.02 {"}P -114.184 30 0.02 {"}-114.045 29.955 0.02 {"}-114 29.94 0.02 {"}-113.903 29.903 0.02 {"}-112.553 29.447 0.02 {"}-112 29.195 0.02 {"}-111.21 28.79 0.02 {"}-110.139 28 0.02 {"}-110.046 27.954 0.02 {"}-110 27.927 0.02 {"}-109.843 27.843 0.02 {"}-108.69 27.31 0.02 {"}-108 26.813 0.02 {"}-107.506 26.494 0.02 {"}-106.954 26 0.02 {"}-106.353 25.647 0.02 {"}-106 25.372 0.02 {"}-105.169 24.831 0.02 {"}-104.323 24 0.02 {"}-104.132 23.868 0.02 {"}-104 23.754 0.02 {"}-103.277 23.277 0.02 {"}-102.929 23.071 0.02 {"}-102 22.158 0.02 {"}-101.906 22.094 0.02 {"}-101.797 22 0.02 {"}-100.669 21.331 0.02 {"}-100 20.708 0.02 {"}-99.589 20.411 0.02 {"}-99.163 20 0.02 {"}-98.473 19.527 0.02 {"}-98 19.069 0.02 {"}-97.397 18.603 0.02 {"}-96.843 18 0.02 {"}-96.363 17.637 0.02 {"}-96 17.272 0.02 {"}-95.289 16.711 0.02 {"}-94.667 16 0.02 {"}-94.296 15.704 0.02 {"}-94 15.401 0.02 {"}-93.219 14.781 0.02 {"}-92.54 14 0.02 {"}-92.24 13.76 0.02 {"}-92 13.516 0.02 {"}-91.142 12.858 0.02 {"}-90.386 12 0.02 {"}-90.172 11.828 0.02 {"}-90 11.652 0.02 {"}-89.061 10.939 0.02 {"}-88.261 10 0.02 {"}-88.12 9.88 0.02 {"}-88 9.751 0.02 {"}-87.01 8.99 0.02 {"}-86.176 8 0.02 {"}-86.081 7.919 0.02 {"}-86 7.833 0.02 {"}-85.398 7.398 0.02 {"}-84.921 7.079 0.02 {"}-84 6.085 0.02 {"}-83.95 6.05 0.02 {"}-83.896 6 0.02 {"}-82.715 5.285 0.02 {"}-82 4.635 0.02 {"}-81.613 4.387 0.02 {"}-81.153 4 0.02 {"}-80.401 3.599 0.02 {"}-80 3.32 0.02 {"}-79.135 2.865 0.02 {"}-78.062 2.062 0.02 {"}-78 2.018 0.02 {"}-77.988 2.012 0.02 {"}-77.969 2 0.02 {"}-76.535 1.465 0.02 {"}-76 1.197 0.02 {"}-75.19 0.81 0.02 {"}-74.089 0.089 0.02 {"}-74 0.035 0.02 {"}-73.976 0.024 0.02 {"}-73.936 0 0.02 {"}-72.472 -0.472 0.02 {"}-72 -0.693 0.02 {"}-71.105 -1.105 0.02 {"}-70.462 -1.538 0.02 {"}-70 -1.823 0.02 {"}-69.883 -1.883 0.02 {"}-69.708 -2 0.02 {"}-68.434 -2.434 0.02 {"}-68 -2.684 0.02 {"}-67.154 -3.154 0.02 {"}-66.208 -4 0.02 {"}-66.067 -4.067 0.02 {"}-66 -4.113 0.02 {"}-65.708 -4.292 0.02 {"}-64.765 -4.765 0.02 {"}-64 -5.607 0.02 {"}-63.778 -5.778 0.02 {"}-63.598 -6 0.02 {"}-62.636 -6.636 0.02 {"}-62 -7.561 0.02 {"}-61.767 -7.767 0.02 {"}-61.61 -8 0.02 {"}-60.719 -8.719 0.02 {"}-60.128 -9.872 0.02 {"}-60.047 -10 0.02 {"}-60.022 -10.022 0.02 {"}-60 -10.059 0.02 {"}-59.292 -10.708 0.02 {"}-58.982 -10.982 0.02 {"}-58.952 -11.048 0.02 {"}-58.397 -12 0.02 {"}-58.197 -12.197 0.02 {"}-58 -12.621 0.02 {"}-57.308 -13.308 0.02 {"}-56.924 -14 0.02 {"}-56.441 -14.441 0.02 {"}-56 -15.49 0.02 {"}-55.742 -15.742 0.02 {"}-55.601 -16 0.02 {"}-54.739 -16.739 0.02 {"}-54.392 -17.608 0.02 {"}-54.174 -18 0.02 {"}-54.085 -18.085 0.02 {"}-54 -18.284 0.02 {"}-53.123 -19.123 0.02 {"}-52.67 -20 0.02 {"}-52.356 -20.356 0.02 {"}-52 -21.47 0.02 {"}-51.748 -21.748 0.02 {"}-51.63 -22 0.02 {"}-50.869 -22.869 0.02 {"}-50.767 -23.233 0.02 {"}-50.418 -24 0.02 {"}-50.244 -24.244 0.02 {"}-50 -25.148 0.02 {"}-49.619 -25.619 0.02 {"}-49.459 -26 0.02 {"}-48.889 -26.889 0.02 {"}-48.814 -27.186 0.02 {"}-48.492 -28 0.02 {"}-48.341 -28.341 0.02 {"}-48.014 -29.986 0.02 {"}-48.01 -30 0.02 {"}-48.007 -30.007 0.02 {"}-48 -30.037 0.02 {"}-47.245 -31.245 0.02 {"}-46.974 -32 0.02 {"}-46.675 -32.675 0.02 {"}-46.504 -33.496 0.02 {"}-46.343 -34 0.02 {"}-46.256 -34.256 0.02 {"}-46 -35.782 0.02 {"}-45.932 -35.932 0.02 {"}-45.912 -36 0.02 {"}-45.86 -36.14 0.02 {"}-45.318 -37.318 0.02 {"}-45.128 -38 0.02 {"}-44.876 -38.876 0.02 {"}-44.833 -39.167 0.02 {"}-44.64 -40 0.02 {"}-44.519 -40.519 0.02 {"}-44.407 -41.593 0.02 {"}-44.33 -42 0.02 {"}-44.282 -42.282 0.02 {"}-44.211 -43.789 0.02 {"}-44.182 -44 0.02 {"}-44.163 -44.163 0.02 {"}-44.122 -45.878 0.02 {"}-44.111 -46 0.02 {"}-44.112 -46.112 0.02 {"}-44.134 -47.866 0.02 {"}-44.136 -48 0.02 {"}-44.162 -48.162 0.02 {"}-44.257 -49.743 0.02 {"}-44.307 -50 0.02 {"}-44.435 -50.435 0.02 {"}-44.57 -51.43 0.02 {"}-44.836 -52 0.02 {"}-45.191 -52.809 0.02 {"}-46 -53.714 0.02 {"}-46.069 -53.931 0.02 {"}-46.139 -54 0.02 {"}-46.366 -54.366 0.02 {"}-46.754 -55.246 0.02 {"}-47.937 -55.937 0.02 {"}-48 -55.983 0.02 {"}-48.006 -55.994 0.02 {"}-48.019 -56 0.02 {"}-48.113 -56.113 0.02 {"}-48.87 -57.13 0.02 {"}-49.273 -57.273 0.02 {"}-50 -57.67 0.02 {"}-50.171 -57.829 0.02 {"}-50.784 -58 0.02 {"}-51.45 -58.55 0.02 {"}-52 -58.779 0.02 {"}-52.767 -59.233 0.02 {"}-53.35 -59.35 0.02 {"}-54 -59.583 0.02 {"}-54.3 -59.7 0.02 {"}-55.917 -59.917 0.02 {"}-56 -59.939 0.02 {"}-56.047 -59.953 0.02 {"}-56.457 -60 0.02 {"}-57.565 -60.435 0.02 {"}-58 -60.533 0.02 {"}-58.671 -60.671 0.02 {"}-59.181 -60.819 0.02 {"}-60 -60.956 0.02 {"}-60.953 -61.047 0.02 {"}-61.053 -61.053 0.02 {"}-62 -61.138 0.02 {"}-62.835 -61.165 0.02 {"}-63.183 -61.183 0.02 {"}-64 -61.21 0.02 {"}-64.808 -61.192 0.02 {"}-65.198 -61.198 0.02 {"}-66 -61.178 0.02 {"}-66.856 -61.144 0.02 {"}-67.146 -61.146 0.02 {"}-68 -61.109 0.02 {"}-68.915 -61.085 0.02 {"}-69.089 -61.089 0.02 {"}-70 -61.063 0.02 {"}-70.937 -61.063 0.02 {"}-71.066 -61.066 0.02 {"}-72 -61.066 0.02 {"}-72.936 -61.064 0.02 {"}-73.065 -61.065 0.02 {"}-74 -61.063 0.02 {"}-74.963 -61.037 0.02 {"}-75.038 -61.038 0.02 {"}-76 -61.01 0.02 {"}-76.988 -60.988 0.02 {"}-77.014 -60.986 0.02 {"}-78 -60.961 0.02 {"}-78.959 -60.959 0.02 {"}-79.045 -60.955 0.02 {"}-80 -60.953 0.02 {"}-80.958 -60.958 0.02 {"}-81.044 -60.956 0.02 {"}-82 -60.961 0.02 {"}-82.959 -60.959 0.02 {"}-83.043 -60.957 0.02 {"}-84 -60.955 0.02 {"}-84.977 -60.977 0.02 {"}-85.023 -60.977 0.02 {"}-86 -61 0.02 {"}-86.939 -61.061 0.02 {"}-87.07 -61.07 0.02 {"}-88 -61.13 0.02 {"}-88.797 -61.204 0.02 {"}-89.234 -61.234 0.02 {"}-90 -61.302 0.02 {"}-90.634 -61.366 0.02 {"}-91.422 -61.422 0.02 {"}-92 -61.478 0.02 {"}-92.477 -61.523 0.02 {"}-93.623 -61.623 0.02 {"}-94 -61.659 0.02 {"}-94.312 -61.688 0.02 {"}-95.822 -61.822 0.02 {"}-96 -61.839 0.02 {"}-96.148 -61.852 0.02 {"}-97.768 -62 0.02 {"}-97.968 -62.032 0.02 {"}-98 -62.036 0.02 {"}-98.041 -62.041 0.02 {"}-99.723 -62.277 0.02 {"}-100 -62.313 0.02 {"}-100.364 -62.364 0.02 {"}-101.469 -62.531 0.02 {"}-102 -62.604 0.02 {"}-102.673 -62.673 0.02 {"}-103.262 -62.738 0.02 {"}-104 -62.812 0.02 {"}-104.862 -62.862 0.02 {"}-105.124 -62.876 0.02 {"}-106 -62.926 0.02 {"}-106.969 -62.969 0.02 {"}-107.029 -62.972 0.02 {"}-108 -63.016 0.02 {"}-108.95 -63.05 0.02 {"}-109.055 -63.055 0.02 {"}-110 -63.091 0.02 {"}-110.866 -63.134 0.02 {"}-111.149 -63.149 0.02 {"}-112 -63.193 0.02 {"}-112.771 -63.229 0.02 {"}-113.255 -63.255 0.02 {"}-114 -63.29 0.02 {"}-114.696 -63.304 0.02 {"}-115.315 -63.315 0.02 {"}-116 -63.328 0.02 {"}-116.729 -63.271 0.02 {"}-117.244 -63.244 0.02 {"}-118 -63.18 0.02 {"}-118.961 -62.961 0.02 {"}-119.073 -62.927 0.02 {"}-120 -62.687 0.02 {"}-120.479 -62.479 0.02 {"}-121.289 -62 0.02 {"}-121.763 -61.763 0.02 {"}-122 -61.606 0.02 {"}-122.925 -60.925 0.02 {"}-123.765 -60 0.02 {"}-123.875 -59.875 0.02 {"}-124 -59.691 0.02 {"}-124.715 -58.715 0.02 {"}-125.068 -58 0.02 {"}-125.299 -57.299 0.02 {"}-125.458 -56.542 0.02 {"}-125.607 -56 0.02 {"}-125.637 -55.637 0.02 {"}-125.689 -54.311 0.02 {"}-125.713 -54 0.02 {"}-125.676 -53.676 0.02 {"}-125.55 -52.45 0.02 {"}-125.498 -52 0.02 {"}-125.317 -51.317 0.02 {"}-125.203 -50.797 0.02 {"}-124.962 -50 0.02 {"}-124.681 -49.319 0.02 {"}-124 -48.078 0.02 {"}-123.977 -48.023 0.02 {"}-123.967 -48 0.02 {"}-123.937 -47.937 0.02 {"}-123.385 -46.615 0.02 {"}-123.027 -46 0.02 {"}-122.671 -45.329 0.02 {"}-122 -44.416 0.02 {"}-121.849 -44.151 0.02 {"}-121.751 -44 0.02 {"}-121.458 -43.458 0.02 {"}-121.163 -42.837 0.02 {"}-120.565 -42 0.02 {"}-120.36 -41.64 0.02 {"}-120 -41.169 0.02 {"}-119.566 -40.434 0.02 {"}-119.216 -40 0.02 {"}-118.765 -39.235 0.02 {"}-118 -38.377 0.02 {"}-117.838 -38.162 0.02 {"}-117.677 -38 0.02 {"}-117.11 -37.11 0.02 {"}-117.03 -36.97 0.02 {"}-116.15 -36 0.02 {"}-116.107 -35.893 0.02 {"}-116 -35.725 0.02 {"}-115.337 -34.663 0.02 {"}-114.68 -34 0.02 {"}-114.614 -33.386 0.02 {"}-114.37 -32.37 0.02 {"}-114.32 -32 0.02 {"}-115.153 -31.153 0.02 {"}-116 -30.326 0.02 {"}-116.159 -30.159 0.02 {"}-116.311 -30 0.02 {"}-117.486 -29.486 0.02 {"}-118 -29.232 0.02 {"}-118.779 -28.779 0.02 {"}-119.844 -28 0.02 {"}-119.954 -27.954 0.02 {"}-120 -27.932 0.02 {"}-120.155 -27.845 0.02 {"}-121.279 -27.279 0.02 {"}-122 -26.751 0.02 {"}-122.433 -26.433 0.02 {"}-122.869 -26 0.02 {"}-123.543 -25.543 0.02 {"}-124 -25.096 0.02 {"}-124.584 -24.584 0.02 {"}-125.048 -24 0.02 {"}-125.533 -23.533 0.02 {"}-126 -22.877 0.02 {"}-126.412 -22.412 0.02 {"}-126.672 -22 0.02 {"}-127.251 -21.251 0.02 {"}-127.652 -20.348 0.02 {"}-127.837 -20 0.02 {"}-127.9 -19.9 0.02 {"}-128 -19.682 0.02 {"}-128.662 -18.662 0.02 {"}-128.957 -18 0.02 {"}-129.287 -17.287 0.02 {"}-129.478 -16.522 0.02 {"}-129.658 -16 0.02 {"}-129.749 -15.749 0.02 {"}-130 -14.729 0.02 {"}-130.206 -14.206 0.02 {"}-130.263 -14 0.02 {"}-130.363 -13.637 0.02 {"}-130.687 -12.687 0.02 {"}-130.845 -12 0.02 {"}-131.05 -11.05 0.02 {"}-131.066 -10.934 0.02 {"}-131.243 -10 0.02 {"}-131.329 -9.329 0.02 {"}-131.39 -8.61 0.02 {"}-131.462 -8 0.02 {"}-131.493 -7.493 0.02 {"}-131.555 -6.445 0.02 {"}-131.583 -6 0.02 {"}-131.581 -5.581 0.02 {"}-131.6 -4.4 0.02 {"}-131.598 -4 0.02 {"}-131.576 -3.576 0.02 {"}-131.555 -2.445 0.02 {"}-131.53 -2 0.02 {"}-131.484 -1.484 0.02 {"}-131.444 -0.556 0.02 {"}-131.389 0 0.02 {"}-131.329 0.671 0.02 {"}-131.298 1.298 0.02 {"}-131.23 2 0.02 {"}-131.164 2.836 0.02 {"}-131.151 3.151 0.02 {"}-131.078 4 0.02 {"}-131.023 4.977 0.02 {"}-131.021 5.021 0.02 {"}-130.963 6 0.02 {"}-130.933 6.933 0.02 {"}-130.927 7.073 0.02 {"}-130.897 8 0.02 {"}-130.904 8.904 0.02 {"}-130.906 9.094 0.02 {"}-130.913 10 0.02 {"}-130.944 10.944 0.02 {"}-130.948 11.052 0.02 {"}-130.978 12 0.02 {"}-131.007 12.993 0.02 {"}-131.008 13.008 0.02 {"}-131.036 14 0.02 {"}-131.03 14.97 0.02 {"}-131.03 15.03 0.02 {"}-131.023 16 0.02 {"}-130.974 16.974 0.02 {"}-130.969 17.031 0.02 {"}-130.918 18 0.02 {"}-130.825 18.825 0.02 {"}-130.757 19.243 0.02 {"}-130.664 20 0.02 {"}-130.559 20.559 0.02 {"}-130.264 21.736 0.02 {"}-130.209 22 0.02 {"}-130.169 22.169 0.02 {"}-130 22.707 0.02 {"}-129.771 23.771 0.02 {"}-129.703 24 0.02 {"}-129.555 24.445 0.02 {"}-129.329 25.329 0.02 {"}-129.048 26 0.02 {"}-128.731 26.731 0.02 {"}-128 27.801 0.02 {"}-127.927 27.927 0.02 {"}-127.871 28 0.02 {"}-127.545 28.455 0.02 {"}-127.115 29.115 0.02 {"}-126.112 30 0.02 {"}-126.058 30.058 0.02 {"}-126 30.103 0.02 {"}-125.706 30.294 0.02 {"}-124.882 30.882 0.02 {"}-124 31.278 0.02 {"}-123.436 31.436 0.02 {"}-122.434 31.566 0.02 {"}-122 31.662 0.02 {"}-121.676 31.676 0.02 {"}-120.351 31.649 0.02 {"}-120 31.662 0.02 {"}-119.607 31.607 0.02 {"}-118.555 31.445 0.02 {"}-118 31.37 0.02 {"}-117.149 31.149 0.02 {"}-116.908 31.092 0.02 {"}-116 30.841 0.02 {"}-115.401 30.599 0.02 {"}-114.184 30 0.02 {"}P -121.238 180 0.02 {"}-120.271 179.729 0.02 {"}-120 179.6 0.02 {"}-119.353 179.353 0.02 {"}-118.799 179.201 0.02 {"}-118 178.765 0.02 {"}-117.477 178.523 0.02 {"}-116.723 178 0.02 {"}-116.219 177.781 0.02 {"}-116 177.639 0.02 {"}-115.272 177.272 0.02 {"}-114.886 177.114 0.02 {"}-114 176.456 0.02 {"}-113.712 176.288 0.02 {"}-113.346 176 0.02 {"}-112.455 175.545 0.02 {"}-112 175.2 0.02 {"}-111.247 174.753 0.02 {"}-110.383 174 0.02 {"}-110.141 173.859 0.02 {"}-110 173.754 0.02 {"}-109.44 173.44 0.02 {"}-108.846 173.154 0.02 {"}-108 172.474 0.02 {"}-107.704 172.296 0.02 {"}-107.327 172 0.02 {"}-106.462 171.538 0.02 {"}-106 171.187 0.02 {"}-105.244 170.756 0.02 {"}-104.305 170 0.02 {"}-104.113 169.887 0.02 {"}-104 169.804 0.02 {"}-103.58 169.58 0.02 {"}-102.787 169.213 0.02 {"}-102 168.644 0.02 {"}-101.584 168.416 0.02 {"}-101.018 168 0.02 {"}-100.369 167.631 0.02 {"}-100 167.356 0.02 {"}-99.086 166.914 0.02 {"}-98.545 166.545 0.02 {"}-98 166.199 0.02 {"}-97.854 166.146 0.02 {"}-97.539 166 0.02 {"}-96.423 165.577 0.02 {"}-96 165.371 0.02 {"}-95.206 165.206 0.02 {"}-94.857 165.143 0.02 {"}-94 164.952 0.02 {"}-93.026 164.974 0.02 {"}-92.976 164.976 0.02 {"}-92 164.998 0.02 {"}-91.157 165.157 0.02 {"}-90.793 165.207 0.02 {"}-90 165.345 0.02 {"}-89.483 165.483 0.02 {"}-88.272 165.728 0.02 {"}-88 165.794 0.02 {"}-87.849 165.849 0.02 {"}-87.325 166 0.02 {"}-86.34 166.34 0.02 {"}-86 166.425 0.02 {"}-85.359 166.641 0.02 {"}-84.846 166.846 0.02 {"}-84 167.082 0.02 {"}-83.31 167.31 0.02 {"}-82.531 167.469 0.02 {"}-82 167.614 0.02 {"}-81.701 167.701 0.02 {"}-80.129 168 0.02 {"}-80.027 168.027 0.02 {"}-80 168.032 0.02 {"}-79.962 168.038 0.02 {"}-78.342 168.342 0.02 {"}-78 168.387 0.02 {"}-77.597 168.403 0.02 {"}-76.486 168.486 0.02 {"}-76 168.504 0.02 {"}-75.544 168.456 0.02 {"}-74.316 168.316 0.02 {"}-74 168.282 0.02 {"}-73.772 168.228 0.02 {"}-73.027 168 0.02 {"}-72.17 167.83 0.02 {"}-72 167.794 0.02 {"}-71.688 167.688 0.02 {"}-70.611 167.389 0.02 {"}-70 167.136 0.02 {"}-69.257 166.743 0.02 {"}-68.26 166 0.02 {"}-68.087 165.913 0.02 {"}-68 165.86 0.02 {"}-67.635 165.635 0.02 {"}-66.818 165.182 0.02 {"}-66 164.488 0.02 {"}-65.722 164.278 0.02 {"}-65.441 164 0.02 {"}-64.583 163.417 0.02 {"}-64 162.845 0.02 {"}-63.54 162.46 0.02 {"}-63.133 162 0.02 {"}-62.499 161.501 0.02 {"}-62 160.919 0.02 {"}-61.525 160.475 0.02 {"}-61.159 160 0.02 {"}-60.554 159.446 0.02 {"}-60 158.629 0.02 {"}-59.699 158.301 0.02 {"}-59.5 158 0.02 {"}-58.79 157.21 0.02 {"}-58.35 156.35 0.02 {"}-58.142 156 0.02 {"}-58.079 155.921 0.02 {"}-58 155.786 0.02 {"}-57.175 154.825 0.02 {"}-56.714 154 0.02 {"}-56.428 153.572 0.02 {"}-56 152.535 0.02 {"}-55.782 152.218 0.02 {"}-55.673 152 0.02 {"}-54.986 151.014 0.02 {"}-54.967 150.967 0.02 {"}-54.488 150 0.02 {"}-54.276 149.724 0.02 {"}-54 149.169 0.02 {"}-53.466 148.534 0.02 {"}-53.163 148 0.02 {"}-52.605 147.395 0.02 {"}-52 146.143 0.02 {"}-51.934 146.066 0.02 {"}-51.895 146 0.02 {"}-50.945 145.055 0.02 {"}-50.845 144.845 0.02 {"}-50.351 144 0.02 {"}-50.18 143.82 0.02 {"}-50 143.489 0.02 {"}-49.264 142.736 0.02 {"}-48.845 142 0.02 {"}-48.456 141.544 0.02 {"}-48 140.459 0.02 {"}-47.791 140.209 0.02 {"}-47.682 140 0.02 {"}-46.965 139.035 0.02 {"}-46.927 138.927 0.02 {"}-46.491 138 0.02 {"}-46.331 137.669 0.02 {"}-46 136.373 0.02 {"}-45.867 136.133 0.02 {"}-45.819 136 0.02 {"}-45.728 135.728 0.02 {"}-45.304 134.696 0.02 {"}-45.119 134 0.02 {"}-45.033 133.033 0.02 {"}-45.027 132.973 0.02 {"}-44.943 132 0.02 {"}-45.049 131.049 0.02 {"}-45.07 130.93 0.02 {"}-45.187 130 0.02 {"}-45.375 129.375 0.02 {"}-46 128.131 0.02 {"}-46.027 128.027 0.02 {"}-46.038 128 0.02 {"}-46.074 127.926 0.02 {"}-46.566 126.566 0.02 {"}-47.008 126 0.02 {"}-47.4 125.4 0.02 {"}-48 124.859 0.02 {"}-48.356 124.356 0.02 {"}-48.849 124 0.02 {"}-49.392 123.392 0.02 {"}-50 122.99 0.02 {"}-50.502 122.502 0.02 {"}-51.569 122 0.02 {"}-51.795 121.795 0.02 {"}-52 121.676 0.02 {"}-52.912 120.912 0.02 {"}-53.201 120.799 0.02 {"}-54 120.392 0.02 {"}-54.229 120.229 0.02 {"}-54.804 120 0.02 {"}-55.477 119.477 0.02 {"}-56 119.23 0.02 {"}-56.722 118.722 0.02 {"}-57.55 118.45 0.02 {"}-58 118.248 0.02 {"}-58.151 118.151 0.02 {"}-58.533 118 0.02 {"}-59.341 117.341 0.02 {"}-60 117.007 0.02 {"}-60.58 116.58 0.02 {"}-61.954 116.046 0.02 {"}-62 116.024 0.02 {"}-62.014 116.014 0.02 {"}-62.04 116 0.02 {"}-63.009 115.009 0.02 {"}-64 114.381 0.02 {"}-64.191 114.191 0.02 {"}-64.493 114 0.02 {"}-65.182 113.182 0.02 {"}-66 112.579 0.02 {"}-66.262 112.262 0.02 {"}-66.608 112 0.02 {"}-67.209 111.209 0.02 {"}-68 110.553 0.02 {"}-68.229 110.229 0.02 {"}-68.474 110 0.02 {"}-69.084 109.084 0.02 {"}-70 108.231 0.02 {"}-70.09 108.09 0.02 {"}-70.174 108 0.02 {"}-70.455 107.545 0.02 {"}-70.831 106.831 0.02 {"}-71.656 106 0.02 {"}-71.788 105.788 0.02 {"}-72 105.557 0.02 {"}-72.537 104.537 0.02 {"}-73.042 104 0.02 {"}-73.403 103.403 0.02 {"}-74 102.764 0.02 {"}-74.285 102.285 0.02 {"}-74.55 102 0.02 {"}-75.095 101.095 0.02 {"}-76 100.149 0.02 {"}-76.06 100.06 0.02 {"}-76.115 100 0.02 {"}-76.292 99.708 0.02 {"}-76.779 98.779 0.02 {"}-77.485 98 0.02 {"}-77.677 97.677 0.02 {"}-78 97.271 0.02 {"}-78.463 96.463 0.02 {"}-78.855 96 0.02 {"}-79.256 95.256 0.02 {"}-80 94.295 0.02 {"}-80.108 94.108 0.02 {"}-80.186 94 0.02 {"}-80.329 93.671 0.02 {"}-80.688 92.688 0.02 {"}-81.071 92 0.02 {"}-81.33 91.33 0.02 {"}-82 90.063 0.02 {"}-82.02 90.02 0.02 {"}-82.03 90 0.02 {"}-82.049 89.951 0.02 {"}-82.503 88.503 0.02 {"}-82.735 88 0.02 {"}-83.054 87.054 0.02 {"}-83.152 86.848 0.02 {"}-83.503 86 0.02 {"}-83.638 85.638 0.02 {"}-84 84.952 0.02 {"}-84.354 84.354 0.02 {"}-84.626 84 0.02 {"}-85.217 83.217 0.02 {"}-86 82.482 0.02 {"}-86.347 82.347 0.02 {"}-87.442 82 0.02 {"}-87.857 81.857 0.02 {"}-88 81.823 0.02 {"}-88.142 81.858 0.02 {"}-88.616 82 0.02 {"}-89.706 82.294 0.02 {"}-90 82.368 0.02 {"}-90.937 83.063 0.02 {"}-91.953 84 0.02 {"}-91.979 84.021 0.02 {"}-92 84.039 0.02 {"}-92.94 85.06 0.02 {"}-93.62 86 0.02 {"}-93.81 86.19 0.02 {"}-94 86.391 0.02 {"}-94.818 87.182 0.02 {"}-95.485 88 0.02 {"}-95.77 88.23 0.02 {"}-96 88.422 0.02 {"}-96.961 89.039 0.02 {"}-97.303 89.303 0.02 {"}-98 89.828 0.02 {"}-98.108 89.892 0.02 {"}-98.28 90 0.02 {"}-99.531 90.469 0.02 {"}-100 90.679 0.02 {"}-100.991 91.009 0.02 {"}-101.021 91.021 0.02 {"}-102 91.387 0.02 {"}-102.473 91.527 0.02 {"}-103.832 92 0.02 {"}-103.972 92.028 0.02 {"}-104 92.033 0.02 {"}-104.036 92.036 0.02 {"}-105.796 92.204 0.02 {"}-106 92.219 0.02 {"}-106.228 92.228 0.02 {"}-107.705 92.295 0.02 {"}-108 92.306 0.02 {"}-108.308 92.308 0.02 {"}-109.675 92.325 0.02 {"}-110 92.328 0.02 {"}-110.322 92.322 0.02 {"}-111.684 92.316 0.02 {"}-112 92.31 0.02 {"}-112.303 92.303 0.02 {"}-113.74 92.26 0.02 {"}-114 92.254 0.02 {"}-114.251 92.251 0.02 {"}-115.785 92.215 0.02 {"}-116 92.213 0.02 {"}-116.211 92.211 0.02 {"}-117.836 92.164 0.02 {"}-118 92.163 0.02 {"}-118.165 92.165 0.02 {"}-119.867 92.133 0.02 {"}-120 92.135 0.02 {"}-120.139 92.139 0.02 {"}-121.871 92.129 0.02 {"}-122 92.133 0.02 {"}-122.141 92.141 0.02 {"}-123.819 92.181 0.02 {"}-124 92.192 0.02 {"}-124.215 92.215 0.02 {"}-125.693 92.307 0.02 {"}-126 92.342 0.02 {"}-126.438 92.438 0.02 {"}-127.41 92.59 0.02 {"}-128 92.741 0.02 {"}-128.935 93.065 0.02 {"}-129.187 93.187 0.02 {"}-130 93.534 0.02 {"}-130.298 93.702 0.02 {"}-130.707 94 0.02 {"}-131.57 94.43 0.02 {"}-132 94.731 0.02 {"}-132.729 95.271 0.02 {"}-133.4 96 0.02 {"}-133.737 96.263 0.02 {"}-134 96.542 0.02 {"}-134.753 97.247 0.02 {"}-135.294 98 0.02 {"}-135.647 98.353 0.02 {"}-136 98.884 0.02 {"}-136.517 99.483 0.02 {"}-136.83 100 0.02 {"}-137.367 100.633 0.02 {"}-138 101.996 0.02 {"}-138.002 101.998 0.02 {"}-138.002 102 0.02 {"}-138.012 102.012 0.02 {"}-138.919 103.081 0.02 {"}-139.386 104 0.02 {"}-139.642 104.358 0.02 {"}-140 105.258 0.02 {"}-140.304 105.696 0.02 {"}-140.446 106 0.02 {"}-141.049 106.951 0.02 {"}-141.096 107.096 0.02 {"}-141.484 108 0.02 {"}-141.669 108.331 0.02 {"}-142 109.454 0.02 {"}-142.201 109.799 0.02 {"}-142.281 110 0.02 {"}-142.64 110.64 0.02 {"}-142.92 111.08 0.02 {"}-143.286 112 0.02 {"}-143.531 112.469 0.02 {"}-143.913 113.913 0.02 {"}-143.945 114 0.02 {"}-143.964 114.036 0.02 {"}-144 114.14 0.02 {"}-144.764 115.236 0.02 {"}-145.095 116 0.02 {"}-145.421 116.579 0.02 {"}-145.793 117.793 0.02 {"}-145.877 118 0.02 {"}-145.922 118.078 0.02 {"}-146 118.297 0.02 {"}-146.709 119.291 0.02 {"}-147.035 120 0.02 {"}-147.39 120.61 0.02 {"}-147.733 121.733 0.02 {"}-147.842 122 0.02 {"}-147.899 122.101 0.02 {"}-148 122.403 0.02 {"}-148.655 123.345 0.02 {"}-148.955 124 0.02 {"}-149.36 124.64 0.02 {"}-149.721 125.721 0.02 {"}-149.843 126 0.02 {"}-149.908 126.092 0.02 {"}-150 126.285 0.02 {"}-150.854 127.146 0.02 {"}-151.392 128 0.02 {"}-151.702 128.298 0.02 {"}-152 128.759 0.02 {"}-152.676 129.324 0.02 {"}-153.205 130 0.02 {"}-153.664 130.336 0.02 {"}-154 130.741 0.02 {"}-154.732 131.268 0.02 {"}-155.37 132 0.02 {"}-155.755 132.245 0.02 {"}-156 132.508 0.02 {"}-156.872 133.128 0.02 {"}-157.59 134 0.02 {"}-157.826 134.174 0.02 {"}-158 134.389 0.02 {"}-158.898 135.102 0.02 {"}-159.559 136 0.02 {"}-159.787 136.213 0.02 {"}-160 136.544 0.02 {"}-160.754 137.246 0.02 {"}-161.243 138 0.02 {"}-161.585 138.415 0.02 {"}-162 139.333 0.02 {"}-162.297 139.703 0.02 {"}-162.461 140 0.02 {"}-163.08 140.92 0.02 {"}-163.17 141.17 0.02 {"}-163.553 142 0.02 {"}-163.703 142.297 0.02 {"}-164 143.2 0.02 {"}-164.301 143.699 0.02 {"}-164.43 144 0.02 {"}-164.735 144.735 0.02 {"}-164.907 145.093 0.02 {"}-165.208 146 0.02 {"}-165.352 146.648 0.02 {"}-165.47 147.47 0.02 {"}-165.574 148 0.02 {"}-165.6 148.4 0.02 {"}-165.68 149.68 0.02 {"}-165.7 150 0.02 {"}-165.671 150.329 0.02 {"}-165.617 151.617 0.02 {"}-165.579 152 0.02 {"}-165.444 152.556 0.02 {"}-165.326 153.326 0.02 {"}-165.118 154 0.02 {"}-164.77 154.77 0.02 {"}-164 155.848 0.02 {"}-163.95 155.95 0.02 {"}-163.913 156 0.02 {"}-163.715 156.285 0.02 {"}-163.172 157.172 0.02 {"}-162.192 158 0.02 {"}-162.098 158.098 0.02 {"}-162 158.171 0.02 {"}-161.03 159.03 0.02 {"}-160.915 159.085 0.02 {"}-160 159.607 0.02 {"}-159.745 159.745 0.02 {"}-159.066 160 0.02 {"}-158.395 160.395 0.02 {"}-158 160.566 0.02 {"}-157.015 161.015 0.02 {"}-156.971 161.029 0.02 {"}-156 161.393 0.02 {"}-155.591 161.591 0.02 {"}-154.651 162 0.02 {"}-154.276 162.276 0.02 {"}-154 162.461 0.02 {"}-153.321 163.321 0.02 {"}-152.687 164 0.02 {"}-152.413 164.413 0.02 {"}-152 164.938 0.02 {"}-151.722 165.722 0.02 {"}-151.596 166 0.02 {"}-151.345 166.655 0.02 {"}-151.181 167.181 0.02 {"}-150.784 168 0.02 {"}-150.544 168.544 0.02 {"}-150 169.364 0.02 {"}-149.849 169.849 0.02 {"}-149.774 170 0.02 {"}-149.588 170.412 0.02 {"}-149.293 171.293 0.02 {"}-148.802 172 0.02 {"}-148.514 172.514 0.02 {"}-148 173.095 0.02 {"}-147.709 173.709 0.02 {"}-147.458 174 0.02 {"}-146.887 174.887 0.02 {"}-146 175.688 0.02 {"}-145.872 175.872 0.02 {"}-145.721 176 0.02 {"}-144.981 176.981 0.02 {"}-144 177.725 0.02 {"}-143.866 177.866 0.02 {"}-143.663 178 0.02 {"}-142.878 178.878 0.02 {"}-142 179.462 0.02 {"}-141.702 179.702 0.02 {"}-141.067 180 0.02 @subgroup {Data} @dotlist {Data} master= {Data pts} @group {Pre-proline} animate off dominant @subgroup {Contours} nobutton dominant @labellist {Title} master= {Titles} {Pre-proline} 0 190 0 @vectorlist {Allowed} color= blue master= {Allowed} {level 0.001}P 172.508 -180 0.001 {"}173.147 -179.147 0.001 {"}174 -178.081 0.001 {"}174.026 -178.026 0.001 {"}174.052 -178 0.001 {"}174.227 -177.773 0.001 {"}174.89 -176.89 0.001 {"}175.73 -176 0.001 {"}175.857 -175.857 0.001 {"}176 -175.73 0.001 {"}176.842 -174.842 0.001 {"}177.73 -174 0.001 {"}177.861 -173.861 0.001 {"}178 -173.744 0.001 {"}178.884 -173.116 0.001 {"}179.022 -173.022 0.001 {"}180 -172.196 0.001 {"}P -180 -172.196 0.001 {"}-179.92 -172.08 0.001 {"}-179.759 -172 0.001 {"}-178.635 -171.365 0.001 {"}-178 -170.961 0.001 {"}-177.52 -170.48 0.001 {"}-176.679 -170 0.001 {"}-176.268 -169.732 0.001 {"}-176 -169.625 0.001 {"}-175.379 -169.379 0.001 {"}-174.813 -169.187 0.001 {"}-174 -168.797 0.001 {"}-173.575 -168.425 0.001 {"}-172.724 -168 0.001 {"}-172.268 -167.732 0.001 {"}-172 -167.638 0.001 {"}-171.457 -167.457 0.001 {"}-170.746 -167.254 0.001 {"}-170 -166.967 0.001 {"}-169.339 -166.661 0.001 {"}-168.357 -166.357 0.001 {"}-168 -166.223 0.001 {"}-167.836 -166.164 0.001 {"}-167.207 -166 0.001 {"}-166.286 -165.714 0.001 {"}-166 -165.65 0.001 {"}-165.547 -165.547 0.001 {"}-164.614 -165.386 0.001 {"}-164 -165.227 0.001 {"}-163.112 -165.112 0.001 {"}-162.911 -165.089 0.001 {"}-162 -164.967 0.001 {"}-161.069 -164.931 0.001 {"}-160.919 -164.919 0.001 {"}-160 -164.881 0.001 {"}-159.155 -164.845 0.001 {"}-158.832 -164.832 0.001 {"}-158 -164.797 0.001 {"}-157.186 -164.814 0.001 {"}-156.814 -164.814 0.001 {"}-156 -164.832 0.001 {"}-155.168 -164.832 0.001 {"}-154.832 -164.832 0.001 {"}-154 -164.832 0.001 {"}-153.13 -164.87 0.001 {"}-152.881 -164.881 0.001 {"}-152 -164.919 0.001 {"}-151.017 -164.983 0.001 {"}-150.986 -164.986 0.001 {"}-150 -165.047 0.001 {"}-149.085 -165.085 0.001 {"}-148.907 -165.093 0.001 {"}-148 -165.131 0.001 {"}-147.182 -165.182 0.001 {"}-146.803 -165.197 0.001 {"}-146 -165.245 0.001 {"}-145.274 -165.274 0.001 {"}-144.703 -165.297 0.001 {"}-144 -165.325 0.001 {"}-143.351 -165.351 0.001 {"}-142.649 -165.351 0.001 {"}-142 -165.375 0.001 {"}-141.408 -165.408 0.001 {"}-140.592 -165.408 0.001 {"}-140 -165.438 0.001 {"}-139.465 -165.465 0.001 {"}-138.504 -165.496 0.001 {"}-138 -165.521 0.001 {"}-137.543 -165.543 0.001 {"}-136.381 -165.619 0.001 {"}-136 -165.638 0.001 {"}-135.661 -165.661 0.001 {"}-134.187 -165.813 0.001 {"}-134 -165.826 0.001 {"}-133.835 -165.835 0.001 {"}-132.379 -166 0.001 {"}-132.026 -166.026 0.001 {"}-132 -166.028 0.001 {"}-131.968 -166.032 0.001 {"}-130.084 -166.084 0.001 {"}-130 -166.098 0.001 {"}-129.879 -166.121 0.001 {"}-128.328 -166.328 0.001 {"}-128 -166.398 0.001 {"}-127.494 -166.506 0.001 {"}-126.638 -166.638 0.001 {"}-126 -166.797 0.001 {"}-125.168 -166.832 0.001 {"}-124.832 -166.832 0.001 {"}-124 -166.87 0.001 {"}-123.043 -166.957 0.001 {"}-122.964 -166.964 0.001 {"}-122 -167.052 0.001 {"}-121.112 -167.112 0.001 {"}-120.865 -167.135 0.001 {"}-120 -167.197 0.001 {"}-119.197 -167.197 0.001 {"}-118.803 -167.197 0.001 {"}-118 -167.197 0.001 {"}-117.197 -167.197 0.001 {"}-116.803 -167.197 0.001 {"}-116 -167.197 0.001 {"}-115.177 -167.177 0.001 {"}-114.838 -167.162 0.001 {"}-114 -167.143 0.001 {"}-113.102 -167.102 0.001 {"}-112.907 -167.093 0.001 {"}-112 -167.052 0.001 {"}-111.006 -167.006 0.001 {"}-110.995 -167.005 0.001 {"}-110 -166.964 0.001 {"}-109.093 -166.907 0.001 {"}-108.89 -166.89 0.001 {"}-108 -166.832 0.001 {"}-107.168 -166.832 0.001 {"}-106.832 -166.832 0.001 {"}-106 -166.832 0.001 {"}-105.219 -166.781 0.001 {"}-104.781 -166.781 0.001 {"}-104 -166.736 0.001 {"}-103.362 -166.638 0.001 {"}-102.582 -166.582 0.001 {"}-102 -166.505 0.001 {"}-101.495 -166.505 0.001 {"}-100.505 -166.505 0.001 {"}-100 -166.505 0.001 {"}-99.534 -166.466 0.001 {"}-98.466 -166.466 0.001 {"}-98 -166.432 0.001 {"}-97.612 -166.388 0.001 {"}-96.277 -166.277 0.001 {"}-96 -166.247 0.001 {"}-95.777 -166.223 0.001 {"}-94.183 -166.183 0.001 {"}-94 -166.166 0.001 {"}-93.841 -166.159 0.001 {"}-92.076 -166.076 0.001 {"}-92 -166.073 0.001 {"}-91.928 -166.072 0.001 {"}-90.072 -166.072 0.001 {"}-90 -166.071 0.001 {"}-89.933 -166.067 0.001 {"}-88.025 -166.025 0.001 {"}-88 -166.024 0.001 {"}-87.977 -166.023 0.001 {"}-86.023 -166.023 0.001 {"}-86 -166.023 0.001 {"}-85.976 -166.024 0.001 {"}-84.063 -166.063 0.001 {"}-84 -166.064 0.001 {"}-83.93 -166.07 0.001 {"}-82.179 -166.179 0.001 {"}-82 -166.194 0.001 {"}-81.785 -166.215 0.001 {"}-80.364 -166.365 0.001 {"}-80 -166.399 0.001 {"}-79.483 -166.517 0.001 {"}-78.635 -166.635 0.001 {"}-78 -166.819 0.001 {"}-77.075 -167.075 0.001 {"}-76.852 -167.148 0.001 {"}-76 -167.404 0.001 {"}-75.52 -167.52 0.001 {"}-74.261 -168 0.001 {"}-74.051 -168.051 0.001 {"}-74 -168.068 0.001 {"}-73.879 -168.121 0.001 {"}-72.524 -168.524 0.001 {"}-72 -168.898 0.001 {"}-71.265 -169.265 0.001 {"}-70.304 -169.696 0.001 {"}-70 -169.838 0.001 {"}-69.884 -169.884 0.001 {"}-69.73 -170 0.001 {"}-68.587 -170.587 0.001 {"}-68 -171.112 0.001 {"}-67.465 -171.465 0.001 {"}-66.87 -172 0.001 {"}-66.301 -172.301 0.001 {"}-66 -172.563 0.001 {"}-65.095 -173.095 0.001 {"}-64.486 -173.514 0.001 {"}-64 -173.838 0.001 {"}-63.889 -173.889 0.001 {"}-63.768 -174 0.001 {"}-62.681 -174.681 0.001 {"}-62 -175.326 0.001 {"}-61.585 -175.585 0.001 {"}-61.143 -176 0.001 {"}-60.445 -176.445 0.001 {"}-60 -176.967 0.001 {"}-59.422 -177.422 0.001 {"}-58.832 -178 0.001 {"}-58.304 -178.304 0.001 {"}-58 -178.617 0.001 {"}-57.206 -179.206 0.001 {"}-56.412 -180 0.001 {"}P -99.568 -2 0.001 {"}-98.348 -2.348 0.001 {"}-98 -2.448 0.001 {"}-97.303 -2.697 0.001 {"}-96.84 -2.84 0.001 {"}-96 -3.189 0.001 {"}-95.392 -3.392 0.001 {"}-94.477 -3.523 0.001 {"}-94 -3.642 0.001 {"}-93.74 -3.74 0.001 {"}-93.045 -4 0.001 {"}-92.273 -4.273 0.001 {"}-92 -4.314 0.001 {"}-91.582 -4.418 0.001 {"}-90.621 -4.621 0.001 {"}-90 -4.793 0.001 {"}-89.164 -5.164 0.001 {"}-88.695 -5.305 0.001 {"}-88 -5.558 0.001 {"}-87.611 -5.611 0.001 {"}-86.389 -5.611 0.001 {"}-86 -5.653 0.001 {"}-85.705 -5.705 0.001 {"}-84.784 -6 0.001 {"}-84.209 -6.209 0.001 {"}-84 -6.241 0.001 {"}-83.749 -6.251 0.001 {"}-82.251 -6.251 0.001 {"}-82 -6.261 0.001 {"}-81.715 -6.285 0.001 {"}-80.476 -6.476 0.001 {"}-80 -6.51 0.001 {"}-79.508 -6.492 0.001 {"}-78.492 -6.492 0.001 {"}-78 -6.476 0.001 {"}-77.524 -6.476 0.001 {"}-76.476 -6.476 0.001 {"}-76 -6.476 0.001 {"}-75.54 -6.46 0.001 {"}-74.46 -6.46 0.001 {"}-74 -6.446 0.001 {"}-73.568 -6.432 0.001 {"}-72.432 -6.432 0.001 {"}-72 -6.42 0.001 {"}-71.568 -6.432 0.001 {"}-70.494 -6.494 0.001 {"}-70 -6.508 0.001 {"}-69.478 -6.522 0.001 {"}-68.571 -6.571 0.001 {"}-68 -6.586 0.001 {"}-67.304 -6.696 0.001 {"}-66.797 -6.797 0.001 {"}-66 -6.911 0.001 {"}-65.006 -7.006 0.001 {"}-64.993 -7.007 0.001 {"}-64 -7.102 0.001 {"}-63.288 -7.288 0.001 {"}-62.473 -7.527 0.001 {"}-62 -7.657 0.001 {"}-61.759 -7.759 0.001 {"}-61.142 -8 0.001 {"}-60.277 -8.277 0.001 {"}-60 -8.481 0.001 {"}-59.206 -8.794 0.001 {"}-58.92 -8.92 0.001 {"}-58 -9.233 0.001 {"}-57.532 -9.532 0.001 {"}-56.876 -10 0.001 {"}-56.302 -10.302 0.001 {"}-56 -10.571 0.001 {"}-55.124 -11.124 0.001 {"}-54.512 -11.488 0.001 {"}-54 -11.797 0.001 {"}-53.87 -11.87 0.001 {"}-53.73 -12 0.001 {"}-52.605 -12.605 0.001 {"}-52 -13.153 0.001 {"}-51.497 -13.497 0.001 {"}-50.961 -14 0.001 {"}-50.328 -14.328 0.001 {"}-50 -14.604 0.001 {"}-49.158 -15.158 0.001 {"}-48.121 -16 0.001 {"}-48.044 -16.044 0.001 {"}-48 -16.071 0.001 {"}-47.715 -16.285 0.001 {"}-46.879 -16.879 0.001 {"}-46 -17.785 0.001 {"}-45.867 -17.867 0.001 {"}-45.779 -18 0.001 {"}-44.788 -18.788 0.001 {"}-44 -19.671 0.001 {"}-43.802 -19.802 0.001 {"}-43.68 -20 0.001 {"}-42.84 -20.84 0.001 {"}-42.095 -21.905 0.001 {"}-42.025 -22 0.001 {"}-42.014 -22.014 0.001 {"}-42 -22.031 0.001 {"}-41.041 -23.041 0.001 {"}-40.482 -24 0.001 {"}-40.308 -24.308 0.001 {"}-40 -25.006 0.001 {"}-39.588 -25.588 0.001 {"}-39.428 -26 0.001 {"}-38.822 -26.822 0.001 {"}-38.55 -27.45 0.001 {"}-38.266 -28 0.001 {"}-38.19 -28.19 0.001 {"}-38 -28.721 0.001 {"}-37.498 -29.498 0.001 {"}-37.293 -30 0.001 {"}-36.682 -30.682 0.001 {"}-36 -31.82 0.001 {"}-35.903 -31.903 0.001 {"}-35.853 -32 0.001 {"}-34.978 -32.978 0.001 {"}-34.926 -33.074 0.001 {"}-34.357 -34 0.001 {"}-34.214 -34.214 0.001 {"}-34 -34.553 0.001 {"}-33.271 -35.271 0.001 {"}-32.754 -36 0.001 {"}-32.377 -36.377 0.001 {"}-32 -37.005 0.001 {"}-31.525 -37.525 0.001 {"}-31.274 -38 0.001 {"}-30.6 -38.6 0.001 {"}-30 -39.473 0.001 {"}-29.704 -39.704 0.001 {"}-29.544 -40 0.001 {"}-28.822 -40.822 0.001 {"}-28.366 -41.634 0.001 {"}-28.137 -42 0.001 {"}-28.092 -42.092 0.001 {"}-28 -42.274 0.001 {"}-27.206 -43.206 0.001 {"}-26.68 -44 0.001 {"}-26.389 -44.389 0.001 {"}-26 -45.218 0.001 {"}-25.637 -45.637 0.001 {"}-25.405 -46 0.001 {"}-24.913 -46.913 0.001 {"}-24.768 -47.232 0.001 {"}-24.398 -48 0.001 {"}-24.25 -48.25 0.001 {"}-24 -48.857 0.001 {"}-23.575 -49.575 0.001 {"}-23.354 -50 0.001 {"}-23.197 -50.803 0.001 {"}-23.137 -51.137 0.001 {"}-22.961 -52 0.001 {"}-22.863 -52.863 0.001 {"}-22.818 -53.182 0.001 {"}-22.721 -54 0.001 {"}-22.658 -54.658 0.001 {"}-22.537 -55.463 0.001 {"}-22.481 -56 0.001 {"}-22.537 -56.537 0.001 {"}-22.658 -57.342 0.001 {"}-22.721 -58 0.001 {"}-22.841 -58.841 0.001 {"}-22.881 -59.119 0.001 {"}-23.006 -60 0.001 {"}-23.227 -60.773 0.001 {"}-23.472 -61.472 0.001 {"}-23.639 -62 0.001 {"}-23.759 -62.241 0.001 {"}-24 -62.686 0.001 {"}-24.438 -63.562 0.001 {"}-24.73 -64 0.001 {"}-25.212 -64.788 0.001 {"}-26 -65.759 0.001 {"}-26.088 -65.912 0.001 {"}-26.209 -66 0.001 {"}-27.057 -66.943 0.001 {"}-28 -67.919 0.001 {"}-28.032 -67.968 0.001 {"}-28.081 -68 0.001 {"}-29.147 -68.853 0.001 {"}-30 -69.414 0.001 {"}-30.282 -69.718 0.001 {"}-30.795 -70 0.001 {"}-31.538 -70.462 0.001 {"}-32 -70.703 0.001 {"}-32.992 -70.992 0.001 {"}-33.005 -70.995 0.001 {"}-34 -71.312 0.001 {"}-34.398 -71.602 0.001 {"}-35.514 -72 0.001 {"}-35.861 -72.139 0.001 {"}-36 -72.174 0.001 {"}-36.226 -72.226 0.001 {"}-37.497 -72.503 0.001 {"}-38 -72.625 0.001 {"}-38.688 -72.688 0.001 {"}-39.268 -72.732 0.001 {"}-40 -72.802 0.001 {"}-40.888 -72.888 0.001 {"}-41.089 -72.911 0.001 {"}-42 -72.995 0.001 {"}-42.995 -72.995 0.001 {"}-43.005 -72.995 0.001 {"}-44 -72.995 0.001 {"}-44.861 -73.139 0.001 {"}-45.148 -73.148 0.001 {"}-46 -73.261 0.001 {"}-46.613 -73.387 0.001 {"}-47.453 -73.453 0.001 {"}-48 -73.544 0.001 {"}-48.358 -73.642 0.001 {"}-49.916 -73.916 0.001 {"}-50 -73.936 0.001 {"}-50.052 -73.948 0.001 {"}-50.314 -74 0.001 {"}-51.608 -74.392 0.001 {"}-52 -74.456 0.001 {"}-52.562 -74.562 0.001 {"}-53.328 -74.672 0.001 {"}-54 -74.814 0.001 {"}-54.9 -75.1 0.001 {"}-55.148 -75.148 0.001 {"}-56 -75.372 0.001 {"}-56.503 -75.497 0.001 {"}-57.622 -75.622 0.001 {"}-58 -75.697 0.001 {"}-58.261 -75.739 0.001 {"}-59.932 -75.932 0.001 {"}-60 -75.942 0.001 {"}-60.052 -75.948 0.001 {"}-60.627 -76 0.001 {"}-61.807 -76.193 0.001 {"}-62 -76.215 0.001 {"}-62.245 -76.245 0.001 {"}-63.556 -76.444 0.001 {"}-64 -76.496 0.001 {"}-64.511 -76.511 0.001 {"}-65.489 -76.511 0.001 {"}-66 -76.527 0.001 {"}-66.527 -76.527 0.001 {"}-67.473 -76.527 0.001 {"}-68 -76.527 0.001 {"}-68.511 -76.511 0.001 {"}-69.521 -76.479 0.001 {"}-70 -76.465 0.001 {"}-70.425 -76.425 0.001 {"}-71.805 -76.195 0.001 {"}-72 -76.174 0.001 {"}-72.15 -76.15 0.001 {"}-72.811 -76 0.001 {"}-73.817 -75.817 0.001 {"}-74 -75.736 0.001 {"}-74.376 -75.624 0.001 {"}-75.383 -75.383 0.001 {"}-76 -75.168 0.001 {"}-76.943 -74.943 0.001 {"}-77.088 -74.912 0.001 {"}-78 -74.703 0.001 {"}-78.503 -74.503 0.001 {"}-79.686 -74 0.001 {"}-79.91 -73.91 0.001 {"}-80 -73.826 0.001 {"}-80.33 -73.67 0.001 {"}-81.216 -73.216 0.001 {"}-82 -72.898 0.001 {"}-82.65 -72.65 0.001 {"}-83.886 -72 0.001 {"}-83.967 -71.967 0.001 {"}-84 -71.933 0.001 {"}-84.12 -71.88 0.001 {"}-85.304 -71.304 0.001 {"}-86 -71.043 0.001 {"}-86.773 -70.773 0.001 {"}-87.558 -70.442 0.001 {"}-88 -70.27 0.001 {"}-88.177 -70.177 0.001 {"}-88.486 -70 0.001 {"}-89.406 -69.406 0.001 {"}-90 -69.159 0.001 {"}-90.802 -68.802 0.001 {"}-91.514 -68.486 0.001 {"}-92 -68.27 0.001 {"}-92.168 -68.168 0.001 {"}-92.405 -68 0.001 {"}-93.278 -67.278 0.001 {"}-94 -66.937 0.001 {"}-94.592 -66.592 0.001 {"}-95.297 -66 0.001 {"}-95.662 -65.662 0.001 {"}-96 -65.347 0.001 {"}-96.74 -64.74 0.001 {"}-97.572 -64 0.001 {"}-97.79 -63.79 0.001 {"}-98 -63.572 0.001 {"}-98.755 -62.755 0.001 {"}-99.451 -62 0.001 {"}-99.72 -61.72 0.001 {"}-100 -61.405 0.001 {"}-100.649 -60.649 0.001 {"}-101.054 -60 0.001 {"}-101.369 -59.369 0.001 {"}-102 -58.486 0.001 {"}-102.195 -58.195 0.001 {"}-102.347 -58 0.001 {"}-103.015 -57.015 0.001 {"}-103.104 -56.896 0.001 {"}-103.759 -56 0.001 {"}-103.861 -55.861 0.001 {"}-104 -55.652 0.001 {"}-104.607 -54.607 0.001 {"}-104.874 -54 0.001 {"}-105.168 -53.168 0.001 {"}-105.552 -52.448 0.001 {"}-105.759 -52 0.001 {"}-105.847 -51.847 0.001 {"}-106 -51.652 0.001 {"}-106.661 -50.661 0.001 {"}-106.991 -50 0.001 {"}-107.262 -49.262 0.001 {"}-107.825 -48.175 0.001 {"}-107.905 -48 0.001 {"}-107.935 -47.935 0.001 {"}-108 -47.858 0.001 {"}-108.743 -46.743 0.001 {"}-109.143 -46 0.001 {"}-109.345 -45.345 0.001 {"}-109.838 -44.162 0.001 {"}-109.897 -44 0.001 {"}-109.931 -43.931 0.001 {"}-110 -43.858 0.001 {"}-110.762 -42.762 0.001 {"}-111.239 -42 0.001 {"}-111.411 -41.411 0.001 {"}-111.849 -40.151 0.001 {"}-111.897 -40 0.001 {"}-111.931 -39.931 0.001 {"}-112 -39.858 0.001 {"}-112.762 -38.762 0.001 {"}-113.143 -38 0.001 {"}-113.304 -37.304 0.001 {"}-113.608 -36.392 0.001 {"}-113.715 -36 0.001 {"}-113.776 -35.776 0.001 {"}-114 -35.216 0.001 {"}-114.324 -34.324 0.001 {"}-114.405 -34 0.001 {"}-114.572 -33.428 0.001 {"}-114.749 -32.749 0.001 {"}-114.988 -32 0.001 {"}-115.205 -31.205 0.001 {"}-115.358 -30.642 0.001 {"}-115.533 -30 0.001 {"}-115.553 -29.553 0.001 {"}-115.67 -28.33 0.001 {"}-115.686 -28 0.001 {"}-115.701 -27.701 0.001 {"}-115.866 -26.134 0.001 {"}-115.874 -26 0.001 {"}-115.874 -25.874 0.001 {"}-115.874 -24.126 0.001 {"}-115.874 -24 0.001 {"}-115.874 -23.874 0.001 {"}-115.874 -22.126 0.001 {"}-115.874 -22 0.001 {"}-115.874 -21.874 0.001 {"}-115.874 -20.126 0.001 {"}-115.874 -20 0.001 {"}-115.858 -19.858 0.001 {"}-115.686 -18.314 0.001 {"}-115.652 -18 0.001 {"}-115.608 -17.608 0.001 {"}-115.608 -16.392 0.001 {"}-115.552 -16 0.001 {"}-115.518 -15.518 0.001 {"}-115.518 -14.482 0.001 {"}-115.477 -14 0.001 {"}-115.373 -13.373 0.001 {"}-115.373 -12.627 0.001 {"}-115.216 -12 0.001 {"}-114.973 -11.027 0.001 {"}-114.973 -10.973 0.001 {"}-114.811 -10 0.001 {"}-114.649 -9.351 0.001 {"}-114 -8.379 0.001 {"}-113.866 -8.134 0.001 {"}-113.811 -8 0.001 {"}-113.716 -7.716 0.001 {"}-113.477 -6.523 0.001 {"}-113.216 -6 0.001 {"}-113.104 -5.104 0.001 {"}-113.104 -4.896 0.001 {"}-112.955 -4 0.001 {"}-112.521 -3.479 0.001 {"}-112 -3.045 0.001 {"}-111.373 -2.627 0.001 {"}-110.955 -2 0.001 {"}-110.521 -1.479 0.001 {"}-110 -1.045 0.001 {"}-109.104 -0.896 0.001 {"}-108.896 -0.896 0.001 {"}-108 -0.784 0.001 {"}-107.303 -0.697 0.001 {"}-106.454 -0.454 0.001 {"}-106 -0.379 0.001 {"}-105.546 -0.454 0.001 {"}-104.697 -0.697 0.001 {"}-104 -0.784 0.001 {"}-103.216 -0.784 0.001 {"}-102.784 -0.784 0.001 {"}-102 -0.784 0.001 {"}-101.189 -1.189 0.001 {"}-100.432 -1.568 0.001 {"}-100 -1.784 0.001 {"}-99.867 -1.867 0.001 {"}-99.568 -2 0.001 {"}P 71.216 88 0.001 {"}71.784 87.784 0.001 {"}72 87.686 0.001 {"}72.992 86.992 0.001 {"}73.027 86.973 0.001 {"}74 86.405 0.001 {"}74.278 86.278 0.001 {"}74.695 86 0.001 {"}75.446 85.446 0.001 {"}76 85.086 0.001 {"}76.604 84.604 0.001 {"}77.207 84 0.001 {"}77.58 83.58 0.001 {"}78 83.207 0.001 {"}78.604 82.604 0.001 {"}79.086 82 0.001 {"}79.446 81.446 0.001 {"}80 80.695 0.001 {"}80.27 80.27 0.001 {"}80.405 80 0.001 {"}80.811 79.189 0.001 {"}80.937 78.937 0.001 {"}81.405 78 0.001 {"}81.592 77.592 0.001 {"}82 76.811 0.001 {"}82.256 76.256 0.001 {"}82.347 76 0.001 {"}82.463 75.537 0.001 {"}82.725 74.725 0.001 {"}82.874 74 0.001 {"}82.959 73.041 0.001 {"}82.964 72.964 0.001 {"}83.054 72 0.001 {"}83.159 71.159 0.001 {"}83.205 70.795 0.001 {"}83.304 70 0.001 {"}83.345 69.345 0.001 {"}83.391 68.609 0.001 {"}83.429 68 0.001 {"}83.411 67.411 0.001 {"}83.364 66.636 0.001 {"}83.345 66 0.001 {"}83.258 65.258 0.001 {"}83.168 64.832 0.001 {"}83.089 64 0.001 {"}82.994 63.006 0.001 {"}82.993 62.993 0.001 {"}82.898 62 0.001 {"}82.786 61.214 0.001 {"}82.743 60.743 0.001 {"}82.646 60 0.001 {"}82.522 59.478 0.001 {"}82.06 58.06 0.001 {"}82.043 58 0.001 {"}82.033 57.967 0.001 {"}82 57.856 0.001 {"}81.595 56.405 0.001 {"}81.414 56 0.001 {"}81.205 55.205 0.001 {"}81.102 54.898 0.001 {"}80.907 54 0.001 {"}80.684 53.316 0.001 {"}80.335 52.335 0.001 {"}80.221 52 0.001 {"}80.159 51.841 0.001 {"}80 51.392 0.001 {"}79.672 50.328 0.001 {"}79.443 50 0.001 {"}79.143 49.143 0.001 {"}79.064 48.936 0.001 {"}78.767 48 0.001 {"}78.519 47.481 0.001 {"}78 46.314 0.001 {"}77.92 46.08 0.001 {"}77.869 46 0.001 {"}77.759 45.759 0.001 {"}77.299 44.701 0.001 {"}76.948 44 0.001 {"}76.614 43.386 0.001 {"}76 42.261 0.001 {"}75.915 42.085 0.001 {"}75.826 42 0.001 {"}75.608 41.608 0.001 {"}75.162 40.838 0.001 {"}74.743 40 0.001 {"}74.425 39.575 0.001 {"}74 39.126 0.001 {"}73.468 38.532 0.001 {"}72.937 38 0.001 {"}72.489 37.511 0.001 {"}72 37.063 0.001 {"}71.483 36.517 0.001 {"}70.937 36 0.001 {"}70.468 35.532 0.001 {"}70 35.157 0.001 {"}69.32 34.68 0.001 {"}68.347 34 0.001 {"}68.15 33.85 0.001 {"}68 33.757 0.001 {"}67.558 33.558 0.001 {"}66.802 33.198 0.001 {"}66 32.87 0.001 {"}65.468 32.532 0.001 {"}64.405 32 0.001 {"}64.141 31.859 0.001 {"}64 31.813 0.001 {"}63.714 31.714 0.001 {"}62.632 31.368 0.001 {"}62 31.131 0.001 {"}61.139 30.861 0.001 {"}60.776 30.776 0.001 {"}60 30.561 0.001 {"}59.596 30.404 0.001 {"}58.123 30.123 0.001 {"}58 30.087 0.001 {"}57.924 30.076 0.001 {"}57.216 30 0.001 {"}56.147 29.853 0.001 {"}56 29.843 0.001 {"}55.843 29.843 0.001 {"}54.157 29.843 0.001 {"}54 29.843 0.001 {"}53.853 29.853 0.001 {"}52.379 30 0.001 {"}52.025 30.025 0.001 {"}52 30.026 0.001 {"}51.972 30.028 0.001 {"}50.19 30.19 0.001 {"}50 30.203 0.001 {"}49.715 30.285 0.001 {"}48.524 30.524 0.001 {"}48 30.718 0.001 {"}47.084 31.084 0.001 {"}46.803 31.197 0.001 {"}46 31.518 0.001 {"}45.641 31.641 0.001 {"}45.008 32 0.001 {"}44.256 32.256 0.001 {"}44 32.35 0.001 {"}43.255 32.745 0.001 {"}42.907 32.907 0.001 {"}42 33.544 0.001 {"}41.685 33.685 0.001 {"}41.325 34 0.001 {"}40.495 34.495 0.001 {"}40 35.004 0.001 {"}39.413 35.413 0.001 {"}38.826 36 0.001 {"}38.287 36.287 0.001 {"}38 36.454 0.001 {"}37.056 37.056 0.001 {"}36.166 38 0.001 {"}36.08 38.08 0.001 {"}36 38.143 0.001 {"}35.524 38.476 0.001 {"}34.886 38.886 0.001 {"}34 39.798 0.001 {"}33.868 39.868 0.001 {"}33.763 40 0.001 {"}32.71 40.71 0.001 {"}32 41.42 0.001 {"}31.599 41.599 0.001 {"}31.052 42 0.001 {"}30.356 42.356 0.001 {"}30 42.68 0.001 {"}29.192 43.192 0.001 {"}28.131 44 0.001 {"}28.046 44.046 0.001 {"}28 44.075 0.001 {"}27.768 44.232 0.001 {"}26.831 44.831 0.001 {"}26 45.55 0.001 {"}25.706 45.706 0.001 {"}25.405 46 0.001 {"}24.601 46.601 0.001 {"}24 47.255 0.001 {"}23.561 47.561 0.001 {"}23.131 48 0.001 {"}22.489 48.489 0.001 {"}22 49.131 0.001 {"}21.52 49.52 0.001 {"}21.052 50 0.001 {"}20.454 50.454 0.001 {"}20 51.052 0.001 {"}19.515 51.515 0.001 {"}19.093 52 0.001 {"}18.513 52.513 0.001 {"}18 53.197 0.001 {"}17.598 53.598 0.001 {"}17.297 54 0.001 {"}16.809 54.809 0.001 {"}16.299 55.701 0.001 {"}16.125 56 0.001 {"}16.07 56.07 0.001 {"}16 56.241 0.001 {"}15.365 57.365 0.001 {"}15.006 58 0.001 {"}14.661 58.661 0.001 {"}14.087 59.913 0.001 {"}14.045 60 0.001 {"}14.03 60.03 0.001 {"}14 60.126 0.001 {"}13.418 61.418 0.001 {"}13.197 62 0.001 {"}12.986 62.986 0.001 {"}12.977 63.023 0.001 {"}12.757 64 0.001 {"}12.644 64.644 0.001 {"}12.273 65.727 0.001 {"}12.209 66 0.001 {"}12.202 66.202 0.001 {"}12.202 67.798 0.001 {"}12.196 68 0.001 {"}12.202 68.202 0.001 {"}12.202 69.798 0.001 {"}12.209 70 0.001 {"}12.216 70.216 0.001 {"}12.216 71.784 0.001 {"}12.224 72 0.001 {"}12.299 72.299 0.001 {"}12.602 73.398 0.001 {"}12.742 74 0.001 {"}13.057 74.943 0.001 {"}13.142 75.142 0.001 {"}13.472 76 0.001 {"}13.629 76.371 0.001 {"}14 76.981 0.001 {"}14.376 77.624 0.001 {"}14.549 78 0.001 {"}15.143 78.857 0.001 {"}16 79.886 0.001 {"}16.048 79.952 0.001 {"}16.095 80 0.001 {"}16.379 80.379 0.001 {"}16.911 81.089 0.001 {"}17.595 82 0.001 {"}17.779 82.221 0.001 {"}18 82.374 0.001 {"}18.983 83.017 0.001 {"}19.104 83.104 0.001 {"}20 83.739 0.001 {"}20.136 83.864 0.001 {"}20.314 84 0.001 {"}21.297 84.703 0.001 {"}22 85.054 0.001 {"}22.704 85.296 0.001 {"}23.67 85.67 0.001 {"}24 85.791 0.001 {"}24.128 85.872 0.001 {"}24.348 86 0.001 {"}25.417 86.583 0.001 {"}26 86.782 0.001 {"}26.959 86.959 0.001 {"}27.03 86.97 0.001 {"}28 87.159 0.001 {"}28.688 87.312 0.001 {"}29.572 87.572 0.001 {"}30 87.679 0.001 {"}30.293 87.707 0.001 {"}31.916 87.916 0.001 {"}32 87.924 0.001 {"}32.055 87.945 0.001 {"}32.379 88 0.001 {"}33.751 88.249 0.001 {"}34 88.27 0.001 {"}34.278 88.278 0.001 {"}35.722 88.278 0.001 {"}36 88.286 0.001 {"}36.295 88.295 0.001 {"}37.705 88.295 0.001 {"}38 88.304 0.001 {"}38.314 88.314 0.001 {"}39.608 88.392 0.001 {"}40 88.404 0.001 {"}40.429 88.429 0.001 {"}41.457 88.543 0.001 {"}42 88.572 0.001 {"}42.621 88.621 0.001 {"}43.309 88.691 0.001 {"}44 88.743 0.001 {"}44.782 88.782 0.001 {"}45.197 88.803 0.001 {"}46 88.843 0.001 {"}46.865 88.865 0.001 {"}47.123 88.877 0.001 {"}48 88.898 0.001 {"}48.967 88.967 0.001 {"}49.03 88.97 0.001 {"}50 89.043 0.001 {"}50.87 89.13 0.001 {"}51.159 89.159 0.001 {"}52 89.243 0.001 {"}52.704 89.296 0.001 {"}53.364 89.364 0.001 {"}54 89.414 0.001 {"}54.557 89.443 0.001 {"}55.554 89.554 0.001 {"}56 89.58 0.001 {"}56.396 89.604 0.001 {"}57.776 89.776 0.001 {"}58 89.791 0.001 {"}58.209 89.791 0.001 {"}59.791 89.791 0.001 {"}60 89.791 0.001 {"}60.216 89.784 0.001 {"}61.784 89.784 0.001 {"}62 89.776 0.001 {"}62.232 89.768 0.001 {"}63.768 89.768 0.001 {"}64 89.759 0.001 {"}64.285 89.715 0.001 {"}65.524 89.524 0.001 {"}66 89.451 0.001 {"}66.68 89.32 0.001 {"}67.182 89.182 0.001 {"}68 89.054 0.001 {"}68.803 88.803 0.001 {"}69.46 88.54 0.001 {"}70 88.347 0.001 {"}70.286 88.286 0.001 {"}71.216 88 0.001 {"}P 75.621 172 0.001 {"}75.897 171.897 0.001 {"}76 171.874 0.001 {"}76.142 171.858 0.001 {"}77.686 171.686 0.001 {"}78 171.652 0.001 {"}78.896 171.104 0.001 {"}79.023 171.023 0.001 {"}80 170.486 0.001 {"}80.324 170.324 0.001 {"}80.811 170 0.001 {"}81.405 169.405 0.001 {"}82 168.811 0.001 {"}82.374 168.374 0.001 {"}82.811 168 0.001 {"}83.405 167.405 0.001 {"}84 166.811 0.001 {"}84.324 166.324 0.001 {"}84.486 166 0.001 {"}85.023 165.023 0.001 {"}85.104 164.896 0.001 {"}85.652 164 0.001 {"}85.727 163.727 0.001 {"}86 163.216 0.001 {"}86.324 162.324 0.001 {"}86.405 162 0.001 {"}86.442 161.558 0.001 {"}86.442 160.442 0.001 {"}86.486 160 0.001 {"}86.572 159.428 0.001 {"}86.654 158.654 0.001 {"}86.763 158 0.001 {"}86.763 157.237 0.001 {"}86.763 156.763 0.001 {"}86.763 156 0.001 {"}86.654 155.346 0.001 {"}86.572 154.572 0.001 {"}86.486 154 0.001 {"}86.36 153.64 0.001 {"}86 152.784 0.001 {"}85.727 152.273 0.001 {"}85.652 152 0.001 {"}85.373 151.373 0.001 {"}85.169 150.831 0.001 {"}84.695 150 0.001 {"}84.405 149.595 0.001 {"}84 148.784 0.001 {"}83.67 148.33 0.001 {"}83.373 148 0.001 {"}82.572 147.428 0.001 {"}82 146.856 0.001 {"}81.533 146.467 0.001 {"}80.973 146 0.001 {"}80.374 145.626 0.001 {"}80 145.392 0.001 {"}79.032 144.968 0.001 {"}78.896 144.896 0.001 {"}78 144.448 0.001 {"}77.652 144.348 0.001 {"}76.162 144.162 0.001 {"}76 144.126 0.001 {"}75.88 144.12 0.001 {"}74.864 144 0.001 {"}74.082 143.918 0.001 {"}74 143.914 0.001 {"}73.918 143.918 0.001 {"}73.136 144 0.001 {"}72.12 144.12 0.001 {"}72 144.126 0.001 {"}71.858 144.142 0.001 {"}70.314 144.314 0.001 {"}70 144.348 0.001 {"}69.373 144.627 0.001 {"}68.831 144.831 0.001 {"}68 145.305 0.001 {"}67.577 145.577 0.001 {"}66.784 146 0.001 {"}66.261 146.261 0.001 {"}66 146.348 0.001 {"}65.071 147.071 0.001 {"}64.142 148 0.001 {"}64.084 148.084 0.001 {"}64 148.142 0.001 {"}63.071 149.071 0.001 {"}62.348 150 0.001 {"}62.251 150.251 0.001 {"}62 150.627 0.001 {"}61.472 151.472 0.001 {"}61.142 152 0.001 {"}60.761 152.761 0.001 {"}60.523 153.477 0.001 {"}60.314 154 0.001 {"}60.273 154.273 0.001 {"}60 155.045 0.001 {"}59.788 155.788 0.001 {"}59.74 156 0.001 {"}59.714 156.286 0.001 {"}59.595 157.595 0.001 {"}59.558 158 0.001 {"}59.577 158.423 0.001 {"}59.577 159.577 0.001 {"}59.595 160 0.001 {"}59.64 160.36 0.001 {"}60 161.621 0.001 {"}60.103 161.897 0.001 {"}60.126 162 0.001 {"}60.142 162.142 0.001 {"}60.314 163.686 0.001 {"}60.348 164 0.001 {"}60.896 164.896 0.001 {"}60.977 165.023 0.001 {"}61.514 166 0.001 {"}61.676 166.324 0.001 {"}62 166.811 0.001 {"}62.595 167.405 0.001 {"}63.189 168 0.001 {"}63.611 168.389 0.001 {"}64 168.811 0.001 {"}64.595 169.405 0.001 {"}65.189 170 0.001 {"}65.653 170.347 0.001 {"}66 170.608 0.001 {"}66.891 171.109 0.001 {"}67.303 171.303 0.001 {"}68 171.652 0.001 {"}68.314 171.686 0.001 {"}69.858 171.858 0.001 {"}70 171.874 0.001 {"}70.103 171.897 0.001 {"}70.379 172 0.001 {"}71.611 172.389 0.001 {"}72 172.486 0.001 {"}72.486 172.486 0.001 {"}73.514 172.486 0.001 {"}74 172.486 0.001 {"}74.389 172.389 0.001 {"}75.621 172 0.001 {"}P 180 60.126 0.001 {"}179.456 61.456 0.001 {"}179.197 62 0.001 {"}178.986 62.986 0.001 {"}178.979 63.021 0.001 {"}178.779 64 0.001 {"}178.571 64.571 0.001 {"}178.196 65.804 0.001 {"}178.131 66 0.001 {"}178.101 66.101 0.001 {"}178 66.784 0.001 {"}177.835 67.835 0.001 {"}177.813 68 0.001 {"}177.774 68.226 0.001 {"}177.528 69.528 0.001 {"}177.449 70 0.001 {"}177.393 70.607 0.001 {"}177.364 71.364 0.001 {"}177.297 72 0.001 {"}177.267 72.733 0.001 {"}177.227 73.227 0.001 {"}177.198 74 0.001 {"}177.112 74.888 0.001 {"}177.096 75.096 0.001 {"}177.005 76 0.001 {"}176.967 76.967 0.001 {"}176.964 77.036 0.001 {"}176.925 78 0.001 {"}176.873 78.873 0.001 {"}176.85 79.15 0.001 {"}176.797 80 0.001 {"}176.736 80.736 0.001 {"}176.688 81.312 0.001 {"}176.631 82 0.001 {"}176.531 82.531 0.001 {"}176.406 83.594 0.001 {"}176.338 84 0.001 {"}176.332 84.332 0.001 {"}176.28 85.72 0.001 {"}176.274 86 0.001 {"}176.264 86.264 0.001 {"}176.136 87.864 0.001 {"}176.131 88 0.001 {"}176.128 88.128 0.001 {"}176.128 89.872 0.001 {"}176.125 90 0.001 {"}176.123 90.123 0.001 {"}176.048 91.952 0.001 {"}176.047 92 0.001 {"}176.048 92.048 0.001 {"}176.048 93.952 0.001 {"}176.049 94 0.001 {"}176.049 94.049 0.001 {"}176.049 95.951 0.001 {"}176.049 96 0.001 {"}176.054 96.054 0.001 {"}176.136 97.864 0.001 {"}176.149 98 0.001 {"}176.17 98.17 0.001 {"}176.17 99.83 0.001 {"}176.196 100 0.001 {"}176.202 100.202 0.001 {"}176.202 101.798 0.001 {"}176.209 102 0.001 {"}176.209 102.209 0.001 {"}176.209 103.791 0.001 {"}176.209 104 0.001 {"}176.209 104.209 0.001 {"}176.209 105.791 0.001 {"}176.209 106 0.001 {"}176.17 106.17 0.001 {"}176 107.045 0.001 {"}175.853 107.853 0.001 {"}175.832 108 0.001 {"}175.809 108.191 0.001 {"}175.528 109.528 0.001 {"}175.483 110 0.001 {"}175.396 110.604 0.001 {"}175.297 111.297 0.001 {"}175.197 112 0.001 {"}175.112 112.888 0.001 {"}175.093 113.093 0.001 {"}175.006 114 0.001 {"}174.881 114.881 0.001 {"}174.841 115.159 0.001 {"}174.721 116 0.001 {"}174.644 116.644 0.001 {"}174.46 117.54 0.001 {"}174.396 118 0.001 {"}174.31 118.31 0.001 {"}174.165 119.835 0.001 {"}174.131 120 0.001 {"}174.118 120.118 0.001 {"}174 120.784 0.001 {"}173.826 121.826 0.001 {"}173.805 122 0.001 {"}173.779 122.221 0.001 {"}173.714 123.714 0.001 {"}173.673 124 0.001 {"}173.619 124.381 0.001 {"}173.428 125.428 0.001 {"}173.354 126 0.001 {"}173.309 126.691 0.001 {"}173.282 127.282 0.001 {"}173.233 128 0.001 {"}173.197 128.803 0.001 {"}173.197 129.197 0.001 {"}173.157 130 0.001 {"}173.112 130.888 0.001 {"}173.093 131.093 0.001 {"}173.052 132 0.001 {"}172.964 132.964 0.001 {"}172.957 133.043 0.001 {"}172.87 134 0.001 {"}172.765 134.765 0.001 {"}172.655 135.345 0.001 {"}172.557 136 0.001 {"}172.42 136.42 0.001 {"}172.17 137.83 0.001 {"}172.125 138 0.001 {"}172.085 138.085 0.001 {"}172 138.448 0.001 {"}171.638 139.638 0.001 {"}171.528 140 0.001 {"}171.379 140.621 0.001 {"}171.241 141.241 0.001 {"}171.052 142 0.001 {"}170.826 142.826 0.001 {"}170.653 143.347 0.001 {"}170.457 144 0.001 {"}170.25 144.25 0.001 {"}170 145.015 0.001 {"}169.723 145.723 0.001 {"}169.615 146 0.001 {"}169.446 146.554 0.001 {"}169.238 147.238 0.001 {"}169.006 148 0.001 {"}168.691 148.691 0.001 {"}168.232 149.768 0.001 {"}168.131 150 0.001 {"}168.083 150.083 0.001 {"}168 150.348 0.001 {"}167.543 151.543 0.001 {"}167.354 152 0.001 {"}167.218 152.782 0.001 {"}167.153 153.153 0.001 {"}167.006 154 0.001 {"}166.841 154.841 0.001 {"}166.718 155.282 0.001 {"}166.557 156 0.001 {"}166.428 156.428 0.001 {"}166.174 157.826 0.001 {"}166.131 158 0.001 {"}166.114 158.114 0.001 {"}166.045 159.955 0.001 {"}166.039 160 0.001 {"}166.039 160.039 0.001 {"}166.039 161.961 0.001 {"}166.039 162 0.001 {"}166.044 162.044 0.001 {"}166.112 163.888 0.001 {"}166.125 164 0.001 {"}166.157 164.157 0.001 {"}166.351 165.649 0.001 {"}166.435 166 0.001 {"}166.571 166.571 0.001 {"}166.755 167.245 0.001 {"}166.919 168 0.001 {"}167.096 168.904 0.001 {"}167.135 169.135 0.001 {"}167.297 170 0.001 {"}167.504 170.496 0.001 {"}168 171.686 0.001 {"}168.079 171.921 0.001 {"}168.125 172 0.001 {"}168.224 172.224 0.001 {"}168.68 173.32 0.001 {"}169.006 174 0.001 {"}169.347 174.653 0.001 {"}170 175.905 0.001 {"}170.026 175.974 0.001 {"}170.042 176 0.001 {"}170.087 176.087 0.001 {"}170.661 177.339 0.001 {"}171.102 178 0.001 {"}171.461 178.539 0.001 {"}172 179.347 0.001 {"}172.231 179.769 0.001 {"}172.508 180 0.001 {"}P -56.412 180 0.001 {"}-56.178 179.822 0.001 {"}-56 179.602 0.001 {"}-55.199 178.801 0.001 {"}-54.598 178 0.001 {"}-54.294 177.706 0.001 {"}-54 177.203 0.001 {"}-53.399 176.601 0.001 {"}-52.931 176 0.001 {"}-52.399 175.601 0.001 {"}-52 174.953 0.001 {"}-51.519 174.481 0.001 {"}-51.153 174 0.001 {"}-50.519 173.481 0.001 {"}-50 172.703 0.001 {"}-49.633 172.367 0.001 {"}-49.351 172 0.001 {"}-48.601 171.399 0.001 {"}-48 170.649 0.001 {"}-47.629 170.371 0.001 {"}-47.297 170 0.001 {"}-46.571 169.429 0.001 {"}-46 168.755 0.001 {"}-45.571 168.429 0.001 {"}-45.18 168 0.001 {"}-44.522 167.478 0.001 {"}-44 166.869 0.001 {"}-43.531 166.469 0.001 {"}-43.131 166 0.001 {"}-42.543 165.457 0.001 {"}-42 164.708 0.001 {"}-41.654 164.346 0.001 {"}-41.449 164 0.001 {"}-40.879 163.121 0.001 {"}-40.571 162.571 0.001 {"}-40.238 162 0.001 {"}-40.143 161.857 0.001 {"}-40 161.49 0.001 {"}-39.485 160.515 0.001 {"}-39.255 160 0.001 {"}-38.878 159.122 0.001 {"}-38.757 158.757 0.001 {"}-38.473 158 0.001 {"}-38.312 157.688 0.001 {"}-38 156.624 0.001 {"}-37.817 156.183 0.001 {"}-37.771 156 0.001 {"}-37.673 155.673 0.001 {"}-37.382 154.618 0.001 {"}-37.183 154 0.001 {"}-36.771 153.229 0.001 {"}-36.605 152.605 0.001 {"}-36.378 152 0.001 {"}-36.238 151.762 0.001 {"}-36 151.159 0.001 {"}-35.551 150.449 0.001 {"}-35.386 150 0.001 {"}-34.773 149.227 0.001 {"}-34.184 148.184 0.001 {"}-34.071 148 0.001 {"}-34.046 147.954 0.001 {"}-34 147.857 0.001 {"}-33.222 146.778 0.001 {"}-32.762 146 0.001 {"}-32.409 145.591 0.001 {"}-32 144.803 0.001 {"}-31.612 144.388 0.001 {"}-31.375 144 0.001 {"}-30.75 143.25 0.001 {"}-30.202 142.202 0.001 {"}-30.083 142 0.001 {"}-30.055 141.945 0.001 {"}-30 141.791 0.001 {"}-29.302 140.698 0.001 {"}-28.832 140 0.001 {"}-28.435 139.565 0.001 {"}-28 138.724 0.001 {"}-27.69 138.31 0.001 {"}-27.483 138 0.001 {"}-27.012 137.012 0.001 {"}-27.005 136.995 0.001 {"}-26.481 136 0.001 {"}-26.237 135.763 0.001 {"}-26 135.297 0.001 {"}-25.518 134.482 0.001 {"}-25.233 134 0.001 {"}-24.905 133.095 0.001 {"}-24.714 132.714 0.001 {"}-24.396 132 0.001 {"}-24.193 131.807 0.001 {"}-24 131.405 0.001 {"}-23.525 130.475 0.001 {"}-23.297 130 0.001 {"}-23.036 129.036 0.001 {"}-23.023 128.977 0.001 {"}-22.721 128 0.001 {"}-22.42 127.58 0.001 {"}-22 126.624 0.001 {"}-21.782 126.218 0.001 {"}-21.673 126 0.001 {"}-21.527 125.527 0.001 {"}-21.268 124.732 0.001 {"}-21.052 124 0.001 {"}-20.841 123.159 0.001 {"}-20.677 122.677 0.001 {"}-20.481 122 0.001 {"}-20.358 121.642 0.001 {"}-20.065 120.065 0.001 {"}-20.047 120 0.001 {"}-20.039 119.961 0.001 {"}-20 119.716 0.001 {"}-19.702 118.298 0.001 {"}-19.639 118 0.001 {"}-19.619 117.619 0.001 {"}-19.506 116.494 0.001 {"}-19.483 116 0.001 {"}-19.47 115.47 0.001 {"}-19.47 114.53 0.001 {"}-19.457 114 0.001 {"}-19.506 113.506 0.001 {"}-19.696 112.304 0.001 {"}-19.73 112 0.001 {"}-19.768 111.768 0.001 {"}-20 110.784 0.001 {"}-20.146 110.146 0.001 {"}-20.209 110 0.001 {"}-20.314 109.686 0.001 {"}-20.688 108.688 0.001 {"}-20.89 108 0.001 {"}-21.18 107.18 0.001 {"}-21.46 106.54 0.001 {"}-21.676 106 0.001 {"}-21.784 105.784 0.001 {"}-22 105.514 0.001 {"}-22.631 104.631 0.001 {"}-22.946 104 0.001 {"}-23.325 103.325 0.001 {"}-24 102.595 0.001 {"}-24.285 102.285 0.001 {"}-24.595 102 0.001 {"}-25.25 101.25 0.001 {"}-26 100.595 0.001 {"}-26.291 100.291 0.001 {"}-26.649 100 0.001 {"}-27.381 99.381 0.001 {"}-28 99.071 0.001 {"}-28.745 98.745 0.001 {"}-29.838 98.162 0.001 {"}-30 98.081 0.001 {"}-30.041 98.041 0.001 {"}-30.126 98 0.001 {"}-31.312 97.312 0.001 {"}-32 97.063 0.001 {"}-32.814 96.814 0.001 {"}-33.379 96.621 0.001 {"}-34 96.42 0.001 {"}-34.31 96.31 0.001 {"}-35.933 96.067 0.001 {"}-36 96.049 0.001 {"}-36.039 96.039 0.001 {"}-36.284 96 0.001 {"}-37.688 95.688 0.001 {"}-38 95.639 0.001 {"}-38.404 95.596 0.001 {"}-39.405 95.405 0.001 {"}-40 95.354 0.001 {"}-40.661 95.339 0.001 {"}-41.312 95.312 0.001 {"}-42 95.297 0.001 {"}-42.661 95.339 0.001 {"}-43.367 95.367 0.001 {"}-44 95.405 0.001 {"}-44.513 95.487 0.001 {"}-45.565 95.565 0.001 {"}-46 95.625 0.001 {"}-46.345 95.655 0.001 {"}-47.809 95.809 0.001 {"}-48 95.826 0.001 {"}-48.157 95.843 0.001 {"}-49.621 96 0.001 {"}-49.974 96.026 0.001 {"}-50 96.027 0.001 {"}-50.029 96.029 0.001 {"}-51.843 96.157 0.001 {"}-52 96.166 0.001 {"}-52.213 96.213 0.001 {"}-53.579 96.421 0.001 {"}-54 96.532 0.001 {"}-54.638 96.638 0.001 {"}-55.302 96.698 0.001 {"}-56 96.838 0.001 {"}-56.986 96.986 0.001 {"}-57.01 96.99 0.001 {"}-58 97.133 0.001 {"}-58.779 97.221 0.001 {"}-59.235 97.235 0.001 {"}-60 97.309 0.001 {"}-60.672 97.328 0.001 {"}-61.347 97.347 0.001 {"}-62 97.365 0.001 {"}-62.635 97.365 0.001 {"}-63.365 97.365 0.001 {"}-64 97.365 0.001 {"}-64.663 97.337 0.001 {"}-65.302 97.302 0.001 {"}-66 97.274 0.001 {"}-66.911 97.089 0.001 {"}-67.055 97.055 0.001 {"}-68 96.878 0.001 {"}-68.748 96.748 0.001 {"}-69.276 96.724 0.001 {"}-70 96.623 0.001 {"}-70.532 96.532 0.001 {"}-71.542 96.458 0.001 {"}-72 96.392 0.001 {"}-72.317 96.317 0.001 {"}-73.978 96.022 0.001 {"}-74 96.017 0.001 {"}-74.014 96.014 0.001 {"}-74.071 96 0.001 {"}-75.357 95.357 0.001 {"}-76 95.092 0.001 {"}-76.542 94.542 0.001 {"}-77.375 94 0.001 {"}-77.676 93.676 0.001 {"}-78 93.504 0.001 {"}-78.787 92.787 0.001 {"}-79.826 92 0.001 {"}-79.9 91.9 0.001 {"}-80 91.843 0.001 {"}-80.985 90.985 0.001 {"}-81.086 90.914 0.001 {"}-82 90.247 0.001 {"}-82.139 90.139 0.001 {"}-82.365 90 0.001 {"}-83.243 89.243 0.001 {"}-84 88.723 0.001 {"}-84.37 88.37 0.001 {"}-84.964 88 0.001 {"}-85.477 87.477 0.001 {"}-86 87.112 0.001 {"}-86.532 86.532 0.001 {"}-87.297 86 0.001 {"}-87.659 85.659 0.001 {"}-88 85.473 0.001 {"}-88.754 84.754 0.001 {"}-89.746 84 0.001 {"}-89.861 83.861 0.001 {"}-90 83.785 0.001 {"}-90.929 82.929 0.001 {"}-91.459 82.541 0.001 {"}-92 82.132 0.001 {"}-92.079 82.079 0.001 {"}-92.214 82 0.001 {"}-93.214 81.214 0.001 {"}-94 80.701 0.001 {"}-94.376 80.376 0.001 {"}-95.052 80 0.001 {"}-95.556 79.556 0.001 {"}-96 79.255 0.001 {"}-96.606 78.606 0.001 {"}-97.405 78 0.001 {"}-97.666 77.666 0.001 {"}-98 77.381 0.001 {"}-98.619 76.619 0.001 {"}-99.325 76 0.001 {"}-99.598 75.598 0.001 {"}-100 75.157 0.001 {"}-100.437 74.437 0.001 {"}-100.925 74 0.001 {"}-101.284 73.284 0.001 {"}-101.686 72.314 0.001 {"}-101.826 72 0.001 {"}-101.867 71.867 0.001 {"}-102 71.595 0.001 {"}-102.358 70.358 0.001 {"}-102.532 70 0.001 {"}-102.75 69.25 0.001 {"}-102.83 68.83 0.001 {"}-103.153 68 0.001 {"}-103.374 67.374 0.001 {"}-103.737 66.263 0.001 {"}-103.826 66 0.001 {"}-103.85 65.85 0.001 {"}-104 65.189 0.001 {"}-104.14 64.14 0.001 {"}-104.162 64 0.001 {"}-104.188 63.812 0.001 {"}-104.329 62.329 0.001 {"}-104.378 62 0.001 {"}-104.393 61.607 0.001 {"}-104.45 60.45 0.001 {"}-104.467 60 0.001 {"}-104.461 59.539 0.001 {"}-104.461 58.461 0.001 {"}-104.456 58 0.001 {"}-104.456 57.544 0.001 {"}-104.456 56.456 0.001 {"}-104.456 56 0.001 {"}-104.478 55.522 0.001 {"}-104.478 54.478 0.001 {"}-104.504 54 0.001 {"}-104.571 53.429 0.001 {"}-104.636 52.636 0.001 {"}-104.718 52 0.001 {"}-104.867 51.133 0.001 {"}-104.89 50.89 0.001 {"}-105.074 50 0.001 {"}-105.232 49.232 0.001 {"}-105.301 48.699 0.001 {"}-105.428 48 0.001 {"}-105.504 47.504 0.001 {"}-105.797 46.203 0.001 {"}-105.832 46 0.001 {"}-105.857 45.857 0.001 {"}-106 45.392 0.001 {"}-106.275 44.275 0.001 {"}-106.412 44 0.001 {"}-106.602 43.398 0.001 {"}-106.759 42.759 0.001 {"}-107.052 42 0.001 {"}-107.255 41.255 0.001 {"}-107.595 40.405 0.001 {"}-107.73 40 0.001 {"}-107.805 39.805 0.001 {"}-108 39.189 0.001 {"}-108.291 38.291 0.001 {"}-108.446 38 0.001 {"}-108.714 37.286 0.001 {"}-108.881 36.881 0.001 {"}-109.174 36 0.001 {"}-109.381 35.381 0.001 {"}-110 34.348 0.001 {"}-110.143 34.143 0.001 {"}-110.261 34 0.001 {"}-110.482 33.518 0.001 {"}-110.818 32.818 0.001 {"}-111.164 32 0.001 {"}-111.413 31.413 0.001 {"}-112 30.448 0.001 {"}-112.196 30.196 0.001 {"}-112.314 30 0.001 {"}-113.063 29.063 0.001 {"}-114 28.126 0.001 {"}-114.071 28.071 0.001 {"}-114.126 28 0.001 {"}-114.325 27.675 0.001 {"}-114.794 26.794 0.001 {"}-115.523 26 0.001 {"}-115.74 25.74 0.001 {"}-116 25.427 0.001 {"}-116.751 24.751 0.001 {"}-117.675 24.325 0.001 {"}-118 24.142 0.001 {"}-118.108 24.108 0.001 {"}-118.379 24 0.001 {"}-119.351 23.351 0.001 {"}-120 22.784 0.001 {"}-120.482 22.482 0.001 {"}-121.518 22.482 0.001 {"}-122 22.348 0.001 {"}-122.33 22.33 0.001 {"}-123.67 22.33 0.001 {"}-124 22.314 0.001 {"}-124.314 22.314 0.001 {"}-125.686 22.314 0.001 {"}-126 22.314 0.001 {"}-126.33 22.33 0.001 {"}-127.67 22.33 0.001 {"}-128 22.348 0.001 {"}-128.482 22.482 0.001 {"}-129.269 22.731 0.001 {"}-130 22.914 0.001 {"}-130.724 23.276 0.001 {"}-131.827 23.827 0.001 {"}-132 23.914 0.001 {"}-132.064 23.936 0.001 {"}-132.216 24 0.001 {"}-133.524 24.476 0.001 {"}-134 24.595 0.001 {"}-134.937 25.063 0.001 {"}-135.189 25.189 0.001 {"}-136 25.595 0.001 {"}-136.27 25.73 0.001 {"}-136.811 26 0.001 {"}-137.592 26.408 0.001 {"}-138 26.595 0.001 {"}-138.823 27.177 0.001 {"}-139.874 28 0.001 {"}-139.951 28.049 0.001 {"}-140 28.081 0.001 {"}-140.175 28.175 0.001 {"}-141.219 28.781 0.001 {"}-142 29.126 0.001 {"}-142.583 29.417 0.001 {"}-143.351 30 0.001 {"}-143.72 30.28 0.001 {"}-144 30.51 0.001 {"}-144.818 31.182 0.001 {"}-145.739 32 0.001 {"}-145.908 32.092 0.001 {"}-146 32.209 0.001 {"}-146.784 32.784 0.001 {"}-147.033 32.967 0.001 {"}-148 33.676 0.001 {"}-148.177 33.823 0.001 {"}-148.374 34 0.001 {"}-149.35 34.65 0.001 {"}-150 35.112 0.001 {"}-150.527 35.473 0.001 {"}-151.205 36 0.001 {"}-151.699 36.301 0.001 {"}-152 36.619 0.001 {"}-152.888 37.112 0.001 {"}-153.392 37.392 0.001 {"}-154 37.73 0.001 {"}-154.157 37.843 0.001 {"}-154.347 38 0.001 {"}-155.32 38.68 0.001 {"}-156 39.157 0.001 {"}-156.511 39.489 0.001 {"}-157.205 40 0.001 {"}-157.718 40.282 0.001 {"}-158 40.586 0.001 {"}-158.911 41.089 0.001 {"}-159.351 41.351 0.001 {"}-160 41.73 0.001 {"}-160.168 41.832 0.001 {"}-160.405 42 0.001 {"}-161.49 42.51 0.001 {"}-162 42.87 0.001 {"}-162.802 43.198 0.001 {"}-163.558 43.558 0.001 {"}-164 43.757 0.001 {"}-164.157 43.843 0.001 {"}-164.405 44 0.001 {"}-165.437 44.563 0.001 {"}-166 44.957 0.001 {"}-166.684 45.316 0.001 {"}-167.739 46 0.001 {"}-167.915 46.085 0.001 {"}-168 46.174 0.001 {"}-168.392 46.392 0.001 {"}-169.162 46.838 0.001 {"}-170 47.257 0.001 {"}-170.425 47.575 0.001 {"}-170.874 48 0.001 {"}-171.483 48.517 0.001 {"}-172 49.007 0.001 {"}-172.547 49.453 0.001 {"}-173.11 50 0.001 {"}-173.591 50.409 0.001 {"}-174 50.946 0.001 {"}-174.511 51.489 0.001 {"}-174.937 52 0.001 {"}-175.476 52.524 0.001 {"}-176 53.126 0.001 {"}-176.437 53.563 0.001 {"}-176.782 54 0.001 {"}-177.216 54.784 0.001 {"}-177.849 55.849 0.001 {"}-177.937 56 0.001 {"}-177.968 56.032 0.001 {"}-178 56.103 0.001 {"}-178.707 57.293 0.001 {"}-179.043 58 0.001 {"}-179.373 58.627 0.001 {"}-179.909 59.909 0.001 {"}-179.951 60 0.001 {"}-179.969 60.031 0.001 {"}-180 60.126 0.001 @vectorlist {Favored} color= sky master= {Favored} {level 0.02}P -55.419 -26 0.02 {"}-54.303 -26.303 0.02 {"}-54 -26.422 0.02 {"}-53.226 -26.774 0.02 {"}-52.894 -26.894 0.02 {"}-52 -27.465 0.02 {"}-51.665 -27.665 0.02 {"}-51.339 -28 0.02 {"}-50.463 -28.463 0.02 {"}-50 -28.92 0.02 {"}-49.377 -29.377 0.02 {"}-48.909 -30 0.02 {"}-48.374 -30.374 0.02 {"}-48 -30.898 0.02 {"}-47.404 -31.404 0.02 {"}-47.033 -32 0.02 {"}-46.467 -32.467 0.02 {"}-46 -33.296 0.02 {"}-45.624 -33.624 0.02 {"}-45.398 -34 0.02 {"}-44.634 -34.634 0.02 {"}-44 -35.913 0.02 {"}-43.953 -35.953 0.02 {"}-43.925 -36 0.02 {"}-42.893 -36.893 0.02 {"}-42.719 -37.281 0.02 {"}-42.298 -38 0.02 {"}-42.152 -38.152 0.02 {"}-42 -38.466 0.02 {"}-41.202 -39.202 0.02 {"}-40.741 -40 0.02 {"}-40.397 -40.397 0.02 {"}-40 -41.309 0.02 {"}-39.656 -41.656 0.02 {"}-39.469 -42 0.02 {"}-38.869 -42.869 0.02 {"}-38.73 -43.27 0.02 {"}-38.396 -44 0.02 {"}-38.264 -44.264 0.02 {"}-38 -45.191 0.02 {"}-37.687 -45.687 0.02 {"}-37.566 -46 0.02 {"}-37.36 -46.64 0.02 {"}-37.158 -47.158 0.02 {"}-36.938 -48 0.02 {"}-36.818 -48.818 0.02 {"}-36.771 -49.229 0.02 {"}-36.665 -50 0.02 {"}-36.68 -50.68 0.02 {"}-36.671 -51.329 0.02 {"}-36.687 -52 0.02 {"}-36.839 -52.839 0.02 {"}-36.87 -53.13 0.02 {"}-37.06 -54 0.02 {"}-37.284 -54.716 0.02 {"}-37.887 -55.887 0.02 {"}-37.935 -56 0.02 {"}-37.956 -56.044 0.02 {"}-38 -56.098 0.02 {"}-38.619 -57.381 0.02 {"}-39.162 -58 0.02 {"}-39.516 -58.484 0.02 {"}-40 -58.874 0.02 {"}-40.531 -59.469 0.02 {"}-41.417 -60 0.02 {"}-41.723 -60.277 0.02 {"}-42 -60.419 0.02 {"}-42.969 -61.031 0.02 {"}-43.061 -61.061 0.02 {"}-44 -61.469 0.02 {"}-44.357 -61.643 0.02 {"}-45.789 -62 0.02 {"}-45.933 -62.067 0.02 {"}-46 -62.085 0.02 {"}-46.119 -62.119 0.02 {"}-47.417 -62.583 0.02 {"}-48 -62.716 0.02 {"}-48.931 -62.931 0.02 {"}-49.037 -62.963 0.02 {"}-50 -63.147 0.02 {"}-50.67 -63.33 0.02 {"}-51.457 -63.457 0.02 {"}-52 -63.581 0.02 {"}-52.307 -63.693 0.02 {"}-53.754 -64 0.02 {"}-53.924 -64.076 0.02 {"}-54 -64.098 0.02 {"}-54.148 -64.148 0.02 {"}-55.351 -64.649 0.02 {"}-56 -64.825 0.02 {"}-56.92 -65.08 0.02 {"}-57.111 -65.111 0.02 {"}-58 -65.318 0.02 {"}-58.588 -65.412 0.02 {"}-59.516 -65.516 0.02 {"}-60 -65.587 0.02 {"}-60.403 -65.597 0.02 {"}-61.637 -65.637 0.02 {"}-62 -65.646 0.02 {"}-62.391 -65.609 0.02 {"}-63.568 -65.568 0.02 {"}-64 -65.521 0.02 {"}-64.612 -65.388 0.02 {"}-65.297 -65.297 0.02 {"}-66 -65.108 0.02 {"}-66.832 -64.832 0.02 {"}-67.551 -64.449 0.02 {"}-68 -64.247 0.02 {"}-68.17 -64.17 0.02 {"}-68.398 -64 0.02 {"}-69.486 -63.486 0.02 {"}-70 -63.05 0.02 {"}-70.63 -62.63 0.02 {"}-71.206 -62 0.02 {"}-71.653 -61.653 0.02 {"}-72 -61.185 0.02 {"}-72.62 -60.62 0.02 {"}-73.036 -60 0.02 {"}-73.475 -59.475 0.02 {"}-74 -58.435 0.02 {"}-74.198 -58.198 0.02 {"}-74.298 -58 0.02 {"}-74.784 -57.216 0.02 {"}-74.959 -56.959 0.02 {"}-75.393 -56 0.02 {"}-75.61 -55.61 0.02 {"}-76 -54.487 0.02 {"}-76.19 -54.19 0.02 {"}-76.268 -54 0.02 {"}-76.483 -53.517 0.02 {"}-76.831 -52.831 0.02 {"}-77.127 -52 0.02 {"}-77.363 -51.363 0.02 {"}-77.59 -50.41 0.02 {"}-77.716 -50 0.02 {"}-77.776 -49.776 0.02 {"}-78 -48.641 0.02 {"}-78.176 -48.176 0.02 {"}-78.222 -48 0.02 {"}-78.263 -47.737 0.02 {"}-78.488 -46.488 0.02 {"}-78.561 -46 0.02 {"}-78.575 -45.425 0.02 {"}-78.592 -44.592 0.02 {"}-78.608 -44 0.02 {"}-78.542 -43.458 0.02 {"}-78.365 -42.365 0.02 {"}-78.317 -42 0.02 {"}-78.25 -41.75 0.02 {"}-78 -41.137 0.02 {"}-77.775 -40.225 0.02 {"}-77.69 -40 0.02 {"}-77.456 -39.456 0.02 {"}-77.223 -38.777 0.02 {"}-76.769 -38 0.02 {"}-76.494 -37.506 0.02 {"}-76 -36.921 0.02 {"}-75.676 -36.324 0.02 {"}-75.389 -36 0.02 {"}-74.816 -35.184 0.02 {"}-74 -34.41 0.02 {"}-73.833 -34.167 0.02 {"}-73.641 -34 0.02 {"}-72.903 -33.097 0.02 {"}-72 -32.362 0.02 {"}-71.835 -32.165 0.02 {"}-71.604 -32 0.02 {"}-70.844 -31.156 0.02 {"}-70 -30.527 0.02 {"}-69.751 -30.249 0.02 {"}-69.393 -30 0.02 {"}-68.703 -29.297 0.02 {"}-68 -28.841 0.02 {"}-67.549 -28.451 0.02 {"}-66.737 -28 0.02 {"}-66.345 -27.655 0.02 {"}-66 -27.468 0.02 {"}-65.096 -26.904 0.02 {"}-64.805 -26.805 0.02 {"}-64 -26.452 0.02 {"}-63.684 -26.316 0.02 {"}-62.545 -26 0.02 {"}-62.175 -25.825 0.02 {"}-62 -25.777 0.02 {"}-61.736 -25.736 0.02 {"}-60.528 -25.472 0.02 {"}-60 -25.401 0.02 {"}-59.4 -25.4 0.02 {"}-58.629 -25.371 0.02 {"}-58 -25.37 0.02 {"}-57.452 -25.452 0.02 {"}-56.315 -25.685 0.02 {"}-56 -25.737 0.02 {"}-55.803 -25.803 0.02 {"}-55.419 -26 0.02 {"}P 52.933 70 0.02 {"}53.833 69.833 0.02 {"}54 69.784 0.02 {"}54.322 69.678 0.02 {"}55.411 69.411 0.02 {"}56 69.161 0.02 {"}56.805 68.805 0.02 {"}57.944 68.056 0.02 {"}58 68.023 0.02 {"}58.015 68.015 0.02 {"}58.031 68 0.02 {"}59.246 67.246 0.02 {"}60 66.471 0.02 {"}60.259 66.259 0.02 {"}60.454 66 0.02 {"}61.187 65.187 0.02 {"}61.653 64.347 0.02 {"}61.869 64 0.02 {"}61.92 63.92 0.02 {"}62 63.715 0.02 {"}62.618 62.618 0.02 {"}62.849 62 0.02 {"}63.091 61.091 0.02 {"}63.125 60.875 0.02 {"}63.321 60 0.02 {"}63.375 59.375 0.02 {"}63.401 58.599 0.02 {"}63.448 58 0.02 {"}63.408 57.408 0.02 {"}63.371 56.629 0.02 {"}63.326 56 0.02 {"}63.143 55.143 0.02 {"}63.101 54.899 0.02 {"}62.888 54 0.02 {"}62.66 53.34 0.02 {"}62 52.04 0.02 {"}61.99 52.01 0.02 {"}61.985 52 0.02 {"}61.968 51.968 0.02 {"}61.36 50.64 0.02 {"}60.906 50 0.02 {"}60.552 49.448 0.02 {"}60 48.909 0.02 {"}59.614 48.386 0.02 {"}59.169 48 0.02 {"}58.629 47.371 0.02 {"}58 46.919 0.02 {"}57.504 46.496 0.02 {"}56.584 46 0.02 {"}56.261 45.739 0.02 {"}56 45.608 0.02 {"}55.232 45.232 0.02 {"}54.934 45.066 0.02 {"}54 44.715 0.02 {"}53.443 44.557 0.02 {"}52.375 44.375 0.02 {"}52 44.286 0.02 {"}51.737 44.263 0.02 {"}50.186 44.186 0.02 {"}50 44.17 0.02 {"}49.817 44.183 0.02 {"}48.287 44.287 0.02 {"}48 44.307 0.02 {"}47.612 44.388 0.02 {"}46.566 44.566 0.02 {"}46 44.697 0.02 {"}45.031 45.031 0.02 {"}44.908 45.092 0.02 {"}44 45.486 0.02 {"}43.648 45.648 0.02 {"}43.16 46 0.02 {"}42.351 46.351 0.02 {"}42 46.588 0.02 {"}41.12 47.12 0.02 {"}40.204 48 0.02 {"}40.082 48.082 0.02 {"}40 48.168 0.02 {"}39.166 48.834 0.02 {"}38.976 48.976 0.02 {"}38.826 49.174 0.02 {"}38.16 50 0.02 {"}38.079 50.079 0.02 {"}38 50.202 0.02 {"}37.117 51.117 0.02 {"}36.577 52 0.02 {"}36.348 52.348 0.02 {"}36 53.119 0.02 {"}35.62 53.62 0.02 {"}35.432 54 0.02 {"}34.995 54.995 0.02 {"}34.991 55.009 0.02 {"}34.632 56 0.02 {"}34.52 56.52 0.02 {"}34.3 57.7 0.02 {"}34.239 58 0.02 {"}34.232 58.232 0.02 {"}34.137 59.863 0.02 {"}34.132 60 0.02 {"}34.158 60.158 0.02 {"}34.32 61.68 0.02 {"}34.377 62 0.02 {"}34.552 62.552 0.02 {"}34.72 63.28 0.02 {"}35.012 64 0.02 {"}35.345 64.655 0.02 {"}36 65.476 0.02 {"}36.194 65.806 0.02 {"}36.375 66 0.02 {"}37.105 66.895 0.02 {"}38 67.603 0.02 {"}38.203 67.797 0.02 {"}38.543 68 0.02 {"}39.371 68.629 0.02 {"}40 68.936 0.02 {"}40.719 69.281 0.02 {"}41.504 69.504 0.02 {"}42 69.686 0.02 {"}42.234 69.766 0.02 {"}43.291 70 0.02 {"}43.816 70.184 0.02 {"}44 70.222 0.02 {"}44.253 70.253 0.02 {"}45.539 70.461 0.02 {"}46 70.512 0.02 {"}46.538 70.538 0.02 {"}47.398 70.602 0.02 {"}48 70.63 0.02 {"}48.608 70.608 0.02 {"}49.437 70.563 0.02 {"}50 70.543 0.02 {"}50.49 70.49 0.02 {"}51.7 70.3 0.02 {"}52 70.265 0.02 {"}52.222 70.222 0.02 {"}52.933 70 0.02 {"}P -75.409 178 0.02 {"}-74.287 177.713 0.02 {"}-74 177.621 0.02 {"}-73.433 177.433 0.02 {"}-72.75 177.25 0.02 {"}-72 176.949 0.02 {"}-71.318 176.682 0.02 {"}-70.151 176 0.02 {"}-70.036 175.964 0.02 {"}-70 175.945 0.02 {"}-69.896 175.896 0.02 {"}-68.604 175.396 0.02 {"}-68 175.003 0.02 {"}-67.351 174.649 0.02 {"}-66.616 174 0.02 {"}-66.198 173.802 0.02 {"}-66 173.637 0.02 {"}-65.057 173.057 0.02 {"}-64.982 173.018 0.02 {"}-64 172.058 0.02 {"}-63.966 172.034 0.02 {"}-63.937 172 0.02 {"}-62.734 171.266 0.02 {"}-62 170.415 0.02 {"}-61.761 170.239 0.02 {"}-61.577 170 0.02 {"}-60.645 169.355 0.02 {"}-60 168.469 0.02 {"}-59.734 168.266 0.02 {"}-59.539 168 0.02 {"}-58.678 167.322 0.02 {"}-58 166.218 0.02 {"}-57.882 166.118 0.02 {"}-57.803 166 0.02 {"}-56.871 165.13 0.02 {"}-56.613 164.613 0.02 {"}-56.241 164 0.02 {"}-56.12 163.88 0.02 {"}-56 163.641 0.02 {"}-55.178 162.822 0.02 {"}-54.723 162 0.02 {"}-54.381 161.619 0.02 {"}-54 160.75 0.02 {"}-53.636 160.364 0.02 {"}-53.439 160 0.02 {"}-52.798 159.202 0.02 {"}-52.56 158.56 0.02 {"}-52.284 158 0.02 {"}-52.164 157.836 0.02 {"}-52 157.414 0.02 {"}-51.356 156.644 0.02 {"}-51.052 156 0.02 {"}-50.616 155.384 0.02 {"}-50.18 154.18 0.02 {"}-50.096 154 0.02 {"}-50.057 153.943 0.02 {"}-50 153.796 0.02 {"}-49.199 152.801 0.02 {"}-48.831 152 0.02 {"}-48.493 151.507 0.02 {"}-48 150.143 0.02 {"}-47.937 150.063 0.02 {"}-47.908 150 0.02 {"}-47.725 149.725 0.02 {"}-47.11 148.89 0.02 {"}-46.719 148 0.02 {"}-46.442 147.558 0.02 {"}-46 146.297 0.02 {"}-45.87 146.13 0.02 {"}-45.807 146 0.02 {"}-45.463 145.463 0.02 {"}-45.081 144.919 0.02 {"}-44.664 144 0.02 {"}-44.424 143.576 0.02 {"}-44 142.409 0.02 {"}-43.825 142.175 0.02 {"}-43.742 142 0.02 {"}-43.466 141.466 0.02 {"}-43.124 140.876 0.02 {"}-42.775 140 0.02 {"}-42.571 139.429 0.02 {"}-42.28 138.28 0.02 {"}-42.194 138 0.02 {"}-42.154 137.846 0.02 {"}-42 137.092 0.02 {"}-41.709 136.291 0.02 {"}-41.637 136 0.02 {"}-41.56 135.56 0.02 {"}-41.368 134.632 0.02 {"}-41.266 134 0.02 {"}-41.182 133.182 0.02 {"}-41.146 132.854 0.02 {"}-41.059 132 0.02 {"}-41.004 131.004 0.02 {"}-41.003 130.997 0.02 {"}-40.947 130 0.02 {"}-40.92 129.08 0.02 {"}-40.916 128.916 0.02 {"}-40.889 128 0.02 {"}-40.879 127.121 0.02 {"}-40.875 126.875 0.02 {"}-40.866 126 0.02 {"}-40.881 125.119 0.02 {"}-40.881 124.881 0.02 {"}-40.897 124 0.02 {"}-40.966 123.034 0.02 {"}-40.968 122.968 0.02 {"}-41.043 122 0.02 {"}-41.186 121.186 0.02 {"}-41.325 120.675 0.02 {"}-41.465 120 0.02 {"}-41.588 119.588 0.02 {"}-42 118.638 0.02 {"}-42.142 118.142 0.02 {"}-42.204 118 0.02 {"}-42.398 117.602 0.02 {"}-42.744 116.744 0.02 {"}-43.251 116 0.02 {"}-43.552 115.552 0.02 {"}-44 115.122 0.02 {"}-44.483 114.483 0.02 {"}-45.061 114 0.02 {"}-45.525 113.525 0.02 {"}-46 113.221 0.02 {"}-46.685 112.685 0.02 {"}-47.86 112.14 0.02 {"}-48 112.064 0.02 {"}-48.039 112.039 0.02 {"}-48.153 112 0.02 {"}-49.376 111.376 0.02 {"}-50 111.173 0.02 {"}-50.896 110.896 0.02 {"}-51.142 110.858 0.02 {"}-52 110.649 0.02 {"}-52.53 110.53 0.02 {"}-53.577 110.423 0.02 {"}-54 110.345 0.02 {"}-54.287 110.287 0.02 {"}-55.869 110.131 0.02 {"}-56 110.108 0.02 {"}-56.092 110.092 0.02 {"}-56.957 110 0.02 {"}-57.82 109.82 0.02 {"}-58 109.798 0.02 {"}-58.241 109.759 0.02 {"}-59.498 109.498 0.02 {"}-60 109.426 0.02 {"}-60.708 109.292 0.02 {"}-61.174 109.174 0.02 {"}-62 109.04 0.02 {"}-62.84 108.84 0.02 {"}-63.212 108.788 0.02 {"}-64 108.627 0.02 {"}-64.486 108.486 0.02 {"}-65.694 108.306 0.02 {"}-66 108.234 0.02 {"}-66.176 108.176 0.02 {"}-67.07 108 0.02 {"}-67.718 107.718 0.02 {"}-68 107.643 0.02 {"}-68.545 107.455 0.02 {"}-69.183 107.183 0.02 {"}-70 106.963 0.02 {"}-70.727 106.727 0.02 {"}-71.418 106.582 0.02 {"}-72 106.423 0.02 {"}-72.314 106.314 0.02 {"}-73.754 106 0.02 {"}-73.924 105.924 0.02 {"}-74 105.903 0.02 {"}-74.147 105.853 0.02 {"}-75.354 105.354 0.02 {"}-76 105.179 0.02 {"}-76.862 104.862 0.02 {"}-77.209 104.791 0.02 {"}-78 104.562 0.02 {"}-78.397 104.397 0.02 {"}-79.977 104.023 0.02 {"}-80 104.016 0.02 {"}-80.011 104.011 0.02 {"}-80.055 104 0.02 {"}-81.341 103.341 0.02 {"}-82 103.13 0.02 {"}-82.786 102.786 0.02 {"}-83.356 102.644 0.02 {"}-84 102.428 0.02 {"}-84.292 102.292 0.02 {"}-85.357 102 0.02 {"}-85.756 101.756 0.02 {"}-86 101.663 0.02 {"}-86.735 101.265 0.02 {"}-87.064 101.064 0.02 {"}-88 100.691 0.02 {"}-88.44 100.44 0.02 {"}-89.652 100 0.02 {"}-89.848 99.848 0.02 {"}-90 99.771 0.02 {"}-90.791 99.209 0.02 {"}-91.029 99.029 0.02 {"}-92 98.535 0.02 {"}-92.306 98.306 0.02 {"}-92.917 98 0.02 {"}-93.471 97.471 0.02 {"}-94 97.142 0.02 {"}-94.61 96.61 0.02 {"}-95.649 96 0.02 {"}-95.824 95.824 0.02 {"}-96 95.71 0.02 {"}-96.888 94.888 0.02 {"}-97.447 94.553 0.02 {"}-98 94.19 0.02 {"}-98.096 94.096 0.02 {"}-98.24 94 0.02 {"}-99.098 93.098 0.02 {"}-100 92.468 0.02 {"}-100.223 92.223 0.02 {"}-100.526 92 0.02 {"}-101.206 91.206 0.02 {"}-102 90.614 0.02 {"}-102.28 90.28 0.02 {"}-102.622 90 0.02 {"}-103.241 89.241 0.02 {"}-104 88.652 0.02 {"}-104.296 88.296 0.02 {"}-104.652 88 0.02 {"}-105.248 87.248 0.02 {"}-106 86.636 0.02 {"}-106.273 86.273 0.02 {"}-106.569 86 0.02 {"}-107.152 85.152 0.02 {"}-108 84.325 0.02 {"}-108.123 84.123 0.02 {"}-108.235 84 0.02 {"}-108.569 83.431 0.02 {"}-108.865 82.865 0.02 {"}-109.558 82 0.02 {"}-109.711 81.711 0.02 {"}-110 81.356 0.02 {"}-110.419 80.419 0.02 {"}-110.693 80 0.02 {"}-111.1 79.1 0.02 {"}-111.514 78.486 0.02 {"}-111.813 78 0.02 {"}-111.87 77.87 0.02 {"}-112 77.68 0.02 {"}-112.42 76.42 0.02 {"}-112.625 76 0.02 {"}-112.927 75.073 0.02 {"}-112.956 74.956 0.02 {"}-113.345 74 0.02 {"}-113.483 73.483 0.02 {"}-114 72.162 0.02 {"}-114.025 72.025 0.02 {"}-114.031 72 0.02 {"}-114.04 71.96 0.02 {"}-114.302 70.302 0.02 {"}-114.381 70 0.02 {"}-114.461 69.539 0.02 {"}-114.572 68.572 0.02 {"}-114.687 68 0.02 {"}-114.832 67.168 0.02 {"}-114.868 66.868 0.02 {"}-115.04 66 0.02 {"}-115.189 65.189 0.02 {"}-115.339 64.661 0.02 {"}-115.483 64 0.02 {"}-115.573 63.573 0.02 {"}-116 62.227 0.02 {"}-116.03 62.03 0.02 {"}-116.038 62 0.02 {"}-116.05 61.95 0.02 {"}-116.33 60.33 0.02 {"}-116.432 60 0.02 {"}-116.587 59.413 0.02 {"}-116.708 58.708 0.02 {"}-116.949 58 0.02 {"}-117.178 57.178 0.02 {"}-117.483 56.517 0.02 {"}-117.675 56 0.02 {"}-117.76 55.76 0.02 {"}-118 55.369 0.02 {"}-118.35 54.35 0.02 {"}-118.562 54 0.02 {"}-119.027 53.027 0.02 {"}-119.227 52.773 0.02 {"}-119.791 52 0.02 {"}-119.864 51.864 0.02 {"}-120 51.716 0.02 {"}-120.661 50.661 0.02 {"}-121.415 50 0.02 {"}-121.67 49.67 0.02 {"}-122 49.408 0.02 {"}-122.69 48.69 0.02 {"}-123.849 48 0.02 {"}-123.928 47.928 0.02 {"}-124 47.887 0.02 {"}-124.278 47.722 0.02 {"}-125.15 47.15 0.02 {"}-126 46.78 0.02 {"}-126.575 46.575 0.02 {"}-127.67 46.33 0.02 {"}-128 46.233 0.02 {"}-128.204 46.204 0.02 {"}-129.984 46.016 0.02 {"}-130 46.014 0.02 {"}-130.015 46.015 0.02 {"}-131.91 46.09 0.02 {"}-132 46.095 0.02 {"}-132.121 46.121 0.02 {"}-133.599 46.401 0.02 {"}-134 46.496 0.02 {"}-134.758 46.758 0.02 {"}-135.139 46.861 0.02 {"}-136 47.237 0.02 {"}-136.515 47.485 0.02 {"}-137.199 48 0.02 {"}-137.75 48.25 0.02 {"}-138 48.42 0.02 {"}-138.976 48.976 0.02 {"}-139.008 48.992 0.02 {"}-140 49.803 0.02 {"}-140.124 49.876 0.02 {"}-140.256 50 0.02 {"}-141.338 50.662 0.02 {"}-142 51.289 0.02 {"}-142.445 51.555 0.02 {"}-142.923 52 0.02 {"}-143.597 52.403 0.02 {"}-144 52.749 0.02 {"}-144.835 53.165 0.02 {"}-145.934 53.934 0.02 {"}-146 53.977 0.02 {"}-146.016 53.984 0.02 {"}-146.042 54 0.02 {"}-147.439 54.561 0.02 {"}-148 54.876 0.02 {"}-148.793 55.207 0.02 {"}-149.746 55.746 0.02 {"}-150 55.877 0.02 {"}-150.087 55.913 0.02 {"}-150.225 56 0.02 {"}-151.466 56.534 0.02 {"}-152 56.831 0.02 {"}-152.805 57.195 0.02 {"}-153.885 57.885 0.02 {"}-154 57.952 0.02 {"}-154.031 57.969 0.02 {"}-154.074 58 0.02 {"}-155.301 58.699 0.02 {"}-156 59.24 0.02 {"}-156.451 59.549 0.02 {"}-156.946 60 0.02 {"}-157.544 60.456 0.02 {"}-158 60.916 0.02 {"}-158.582 61.418 0.02 {"}-159.078 62 0.02 {"}-159.515 62.485 0.02 {"}-160 63.163 0.02 {"}-160.393 63.607 0.02 {"}-160.651 64 0.02 {"}-161.151 64.849 0.02 {"}-161.412 65.412 0.02 {"}-161.708 66 0.02 {"}-161.796 66.204 0.02 {"}-162 66.766 0.02 {"}-162.377 67.623 0.02 {"}-162.507 68 0.02 {"}-162.633 68.633 0.02 {"}-162.762 69.238 0.02 {"}-162.909 70 0.02 {"}-162.984 70.984 0.02 {"}-162.987 71.013 0.02 {"}-163.06 72 0.02 {"}-163.032 72.968 0.02 {"}-163.032 73.032 0.02 {"}-163.003 74 0.02 {"}-162.901 74.901 0.02 {"}-162.856 75.144 0.02 {"}-162.746 76 0.02 {"}-162.63 76.63 0.02 {"}-162.428 77.572 0.02 {"}-162.345 78 0.02 {"}-162.279 78.279 0.02 {"}-162 79.168 0.02 {"}-161.822 79.822 0.02 {"}-161.765 80 0.02 {"}-161.659 80.341 0.02 {"}-161.359 81.359 0.02 {"}-161.153 82 0.02 {"}-160.919 82.919 0.02 {"}-160.853 83.147 0.02 {"}-160.623 84 0.02 {"}-160.507 84.507 0.02 {"}-160.135 85.865 0.02 {"}-160.102 86 0.02 {"}-160.085 86.085 0.02 {"}-160 86.401 0.02 {"}-159.705 87.705 0.02 {"}-159.638 88 0.02 {"}-159.536 88.464 0.02 {"}-159.373 89.373 0.02 {"}-159.221 90 0.02 {"}-158.997 90.997 0.02 {"}-158.994 91.006 0.02 {"}-158.763 92 0.02 {"}-158.628 92.628 0.02 {"}-158.352 93.648 0.02 {"}-158.269 94 0.02 {"}-158.219 94.219 0.02 {"}-158 95.004 0.02 {"}-157.79 95.79 0.02 {"}-157.733 96 0.02 {"}-157.629 96.371 0.02 {"}-157.376 97.376 0.02 {"}-157.187 98 0.02 {"}-157.017 98.983 0.02 {"}-157.012 99.012 0.02 {"}-156.842 100 0.02 {"}-156.762 100.762 0.02 {"}-156.701 101.299 0.02 {"}-156.627 102 0.02 {"}-156.602 102.602 0.02 {"}-156.571 103.429 0.02 {"}-156.548 104 0.02 {"}-156.55 104.55 0.02 {"}-156.558 105.442 0.02 {"}-156.56 106 0.02 {"}-156.573 106.573 0.02 {"}-156.601 107.399 0.02 {"}-156.614 108 0.02 {"}-156.618 108.618 0.02 {"}-156.618 109.382 0.02 {"}-156.622 110 0.02 {"}-156.634 110.634 0.02 {"}-156.643 111.357 0.02 {"}-156.655 112 0.02 {"}-156.701 112.701 0.02 {"}-156.741 113.259 0.02 {"}-156.789 114 0.02 {"}-156.88 114.88 0.02 {"}-156.899 115.101 0.02 {"}-156.997 116 0.02 {"}-157.161 116.839 0.02 {"}-157.239 117.239 0.02 {"}-157.388 118 0.02 {"}-157.543 118.457 0.02 {"}-158 119.781 0.02 {"}-158.059 119.941 0.02 {"}-158.079 120 0.02 {"}-158.14 120.14 0.02 {"}-158.674 121.326 0.02 {"}-158.958 122 0.02 {"}-159.368 122.632 0.02 {"}-160 123.693 0.02 {"}-160.122 123.878 0.02 {"}-160.186 124 0.02 {"}-161.002 124.998 0.02 {"}-161.011 125.011 0.02 {"}-161.73 126 0.02 {"}-161.864 126.136 0.02 {"}-162 126.3 0.02 {"}-162.782 127.218 0.02 {"}-163.294 128 0.02 {"}-163.619 128.381 0.02 {"}-164 128.935 0.02 {"}-164.468 129.532 0.02 {"}-164.738 130 0.02 {"}-165.251 130.749 0.02 {"}-165.779 131.779 0.02 {"}-165.902 132 0.02 {"}-165.939 132.061 0.02 {"}-166 132.19 0.02 {"}-166.639 133.361 0.02 {"}-166.892 134 0.02 {"}-167.222 134.778 0.02 {"}-167.408 135.408 0.02 {"}-167.617 136 0.02 {"}-167.729 136.271 0.02 {"}-168 137.142 0.02 {"}-168.258 137.742 0.02 {"}-168.335 138 0.02 {"}-168.49 138.49 0.02 {"}-168.763 139.237 0.02 {"}-168.973 140 0.02 {"}-169.237 140.763 0.02 {"}-169.393 141.393 0.02 {"}-169.574 142 0.02 {"}-169.69 142.31 0.02 {"}-170 143.27 0.02 {"}-170.239 143.761 0.02 {"}-170.319 144 0.02 {"}-170.55 144.55 0.02 {"}-170.833 145.167 0.02 {"}-171.139 146 0.02 {"}-171.413 146.587 0.02 {"}-171.87 147.87 0.02 {"}-171.922 148 0.02 {"}-171.947 148.053 0.02 {"}-172 148.201 0.02 {"}-172.606 149.394 0.02 {"}-172.835 150 0.02 {"}-173.179 150.821 0.02 {"}-173.316 151.316 0.02 {"}-173.55 152 0.02 {"}-173.679 152.321 0.02 {"}-174 153.36 0.02 {"}-174.209 153.791 0.02 {"}-174.274 154 0.02 {"}-174.414 154.414 0.02 {"}-174.74 155.26 0.02 {"}-174.956 156 0.02 {"}-175.161 156.839 0.02 {"}-175.228 157.228 0.02 {"}-175.396 158 0.02 {"}-175.484 158.516 0.02 {"}-175.642 159.642 0.02 {"}-175.7 160 0.02 {"}-175.716 160.284 0.02 {"}-175.793 161.793 0.02 {"}-175.804 162 0.02 {"}-175.791 162.209 0.02 {"}-175.735 163.735 0.02 {"}-175.717 164 0.02 {"}-175.642 164.358 0.02 {"}-175.468 165.468 0.02 {"}-175.341 166 0.02 {"}-175.031 166.969 0.02 {"}-175.018 167.018 0.02 {"}-174.636 168 0.02 {"}-174.433 168.433 0.02 {"}-174 169.087 0.02 {"}-173.709 169.709 0.02 {"}-173.512 170 0.02 {"}-172.92 170.92 0.02 {"}-172 171.945 0.02 {"}-171.977 171.977 0.02 {"}-171.952 172 0.02 {"}-171.408 172.592 0.02 {"}-171.021 173.021 0.02 {"}-170.861 173.139 0.02 {"}-170 173.81 0.02 {"}-169.901 173.901 0.02 {"}-169.739 174 0.02 {"}-168.773 174.773 0.02 {"}-168 175.207 0.02 {"}-167.504 175.504 0.02 {"}-166.367 176 0.02 {"}-166.144 176.144 0.02 {"}-166 176.203 0.02 {"}-165.68 176.32 0.02 {"}-164.72 176.72 0.02 {"}-164 176.943 0.02 {"}-163.148 177.148 0.02 {"}-162.799 177.201 0.02 {"}-162 177.368 0.02 {"}-161.44 177.44 0.02 {"}-160.47 177.53 0.02 {"}-160 177.587 0.02 {"}-159.602 177.602 0.02 {"}-158.365 177.635 0.02 {"}-158 177.648 0.02 {"}-157.63 177.63 0.02 {"}-156.415 177.585 0.02 {"}-156 177.564 0.02 {"}-155.519 177.519 0.02 {"}-154.547 177.453 0.02 {"}-154 177.399 0.02 {"}-153.335 177.335 0.02 {"}-152.707 177.293 0.02 {"}-152 177.22 0.02 {"}-151.156 177.156 0.02 {"}-150.86 177.14 0.02 {"}-150 177.071 0.02 {"}-149.002 176.998 0.02 {"}-148.997 176.997 0.02 {"}-148 176.923 0.02 {"}-147.085 176.915 0.02 {"}-146.913 176.913 0.02 {"}-146 176.905 0.02 {"}-145.047 176.953 0.02 {"}-144.96 176.96 0.02 {"}-144 177.006 0.02 {"}-143.1 177.1 0.02 {"}-142.884 177.116 0.02 {"}-142 177.203 0.02 {"}-141.305 177.305 0.02 {"}-140.636 177.364 0.02 {"}-140 177.449 0.02 {"}-139.514 177.514 0.02 {"}-138.371 177.629 0.02 {"}-138 177.676 0.02 {"}-137.702 177.702 0.02 {"}-136.212 177.788 0.02 {"}-136 177.805 0.02 {"}-135.813 177.813 0.02 {"}-134.142 177.858 0.02 {"}-134 177.864 0.02 {"}-133.864 177.864 0.02 {"}-132.157 177.843 0.02 {"}-132 177.843 0.02 {"}-131.837 177.837 0.02 {"}-130.223 177.777 0.02 {"}-130 177.769 0.02 {"}-129.744 177.744 0.02 {"}-128.369 177.631 0.02 {"}-128 177.595 0.02 {"}-127.528 177.528 0.02 {"}-126.574 177.426 0.02 {"}-126 177.336 0.02 {"}-125.186 177.186 0.02 {"}-124.859 177.141 0.02 {"}-124 176.964 0.02 {"}-123.216 176.784 0.02 {"}-122.584 176.584 0.02 {"}-122 176.43 0.02 {"}-121.646 176.354 0.02 {"}-120.478 176 0.02 {"}-120.077 175.923 0.02 {"}-120 175.902 0.02 {"}-119.876 175.876 0.02 {"}-118.393 175.607 0.02 {"}-118 175.52 0.02 {"}-117.437 175.437 0.02 {"}-116.64 175.36 0.02 {"}-116 175.254 0.02 {"}-115.201 175.201 0.02 {"}-114.812 175.188 0.02 {"}-114 175.13 0.02 {"}-113.132 175.132 0.02 {"}-112.866 175.134 0.02 {"}-112 175.136 0.02 {"}-111.179 175.179 0.02 {"}-110.804 175.196 0.02 {"}-110 175.238 0.02 {"}-109.302 175.302 0.02 {"}-108.657 175.343 0.02 {"}-108 175.4 0.02 {"}-107.468 175.468 0.02 {"}-106.426 175.574 0.02 {"}-106 175.626 0.02 {"}-105.67 175.67 0.02 {"}-104.185 175.815 0.02 {"}-104 175.838 0.02 {"}-103.853 175.853 0.02 {"}-102.306 176 0.02 {"}-102.039 176.039 0.02 {"}-102 176.043 0.02 {"}-101.952 176.048 0.02 {"}-100.253 176.253 0.02 {"}-100 176.277 0.02 {"}-99.689 176.311 0.02 {"}-98.464 176.464 0.02 {"}-98 176.513 0.02 {"}-97.386 176.614 0.02 {"}-96.745 176.745 0.02 {"}-96 176.857 0.02 {"}-95.065 177.065 0.02 {"}-94.912 177.088 0.02 {"}-94 177.27 0.02 {"}-93.426 177.426 0.02 {"}-92.373 177.627 0.02 {"}-92 177.716 0.02 {"}-91.776 177.776 0.02 {"}-90.745 178 0.02 {"}-90.193 178.193 0.02 {"}-90 178.239 0.02 {"}-89.681 178.319 0.02 {"}-88.629 178.629 0.02 {"}-88 178.769 0.02 {"}-87.073 178.927 0.02 {"}-86.951 178.951 0.02 {"}-86 179.102 0.02 {"}-85.175 179.175 0.02 {"}-84.8 179.2 0.02 {"}-84 179.268 0.02 {"}-83.281 179.281 0.02 {"}-82.717 179.283 0.02 {"}-82 179.296 0.02 {"}-81.241 179.241 0.02 {"}-80.786 179.214 0.02 {"}-80 179.156 0.02 {"}-79.006 178.994 0.02 {"}-78.991 178.991 0.02 {"}-78 178.825 0.02 {"}-77.341 178.659 0.02 {"}-76.349 178.349 0.02 {"}-76 178.252 0.02 {"}-75.81 178.19 0.02 {"}-75.409 178 0.02 @subgroup {Data} @dotlist {Data} master= {Data pts} @group {Glycine} animate off dominant @subgroup {Contours} nobutton dominant @labellist {Title} master= {Titles} {Glycine} 0 190 0 @vectorlist {Allowed} color= blue master= {Allowed} {level 0.001}P 180 95.909 0.001 {"}179.922 95.922 0.001 {"}179.178 96 0.001 {"}178.084 96.084 0.001 {"}178 96.091 0.001 {"}177.906 96.094 0.001 {"}176.094 96.094 0.001 {"}176 96.098 0.001 {"}175.902 96.098 0.001 {"}174.098 96.098 0.001 {"}174 96.098 0.001 {"}173.909 96.091 0.001 {"}172.822 96 0.001 {"}172.078 95.922 0.001 {"}172 95.909 0.001 {"}171.874 95.874 0.001 {"}170.546 95.454 0.001 {"}170 95.318 0.001 {"}169.318 95.318 0.001 {"}168.682 95.318 0.001 {"}168 95.318 0.001 {"}167.197 95.197 0.001 {"}166.866 95.134 0.001 {"}166 95.016 0.001 {"}165.172 94.828 0.001 {"}164.578 94.578 0.001 {"}164 94.397 0.001 {"}163.647 94.353 0.001 {"}162.353 94.353 0.001 {"}162 94.318 0.001 {"}161.724 94.276 0.001 {"}160.276 94.276 0.001 {"}160 94.244 0.001 {"}159.781 94.219 0.001 {"}158.094 94.094 0.001 {"}158 94.084 0.001 {"}157.924 94.076 0.001 {"}156.076 94.076 0.001 {"}156 94.069 0.001 {"}155.94 94.06 0.001 {"}154.822 94 0.001 {"}154.043 93.957 0.001 {"}154 93.954 0.001 {"}153.939 93.939 0.001 {"}152.461 93.539 0.001 {"}152 93.43 0.001 {"}151.098 93.098 0.001 {"}150.955 93.045 0.001 {"}150 92.694 0.001 {"}149.623 92.377 0.001 {"}148.353 92 0.001 {"}148.099 91.901 0.001 {"}148 91.872 0.001 {"}147.624 91.624 0.001 {"}146.875 91.125 0.001 {"}146 90.573 0.001 {"}145.72 90.28 0.001 {"}144.986 90 0.001 {"}144.401 89.599 0.001 {"}144 89.288 0.001 {"}143.517 88.483 0.001 {"}142.712 88 0.001 {"}142.347 87.653 0.001 {"}142 87.359 0.001 {"}141.527 86.473 0.001 {"}140.913 86 0.001 {"}140.519 85.481 0.001 {"}140 84.963 0.001 {"}139.672 84.328 0.001 {"}139.244 84 0.001 {"}138.733 83.267 0.001 {"}138 82.417 0.001 {"}137.872 82.128 0.001 {"}137.758 82 0.001 {"}137.166 81.166 0.001 {"}137.034 80.966 0.001 {"}136.032 80 0.001 {"}136.021 79.979 0.001 {"}136 79.954 0.001 {"}135.317 78.683 0.001 {"}134.534 78 0.001 {"}134.372 77.628 0.001 {"}134 76.932 0.001 {"}133.772 76.228 0.001 {"}133.514 76 0.001 {"}132.954 75.046 0.001 {"}132.803 74.803 0.001 {"}132.31 74 0.001 {"}132.244 73.756 0.001 {"}132 72.636 0.001 {"}131.904 72.096 0.001 {"}131.833 72 0.001 {"}131.756 71.756 0.001 {"}131.393 70.607 0.001 {"}131.201 70 0.001 {"}130.913 69.087 0.001 {"}130.832 68.832 0.001 {"}130.57 68 0.001 {"}130.492 67.508 0.001 {"}130.379 66.379 0.001 {"}130.325 66 0.001 {"}130.317 65.683 0.001 {"}130.317 64.317 0.001 {"}130.31 64 0.001 {"}130.268 63.732 0.001 {"}130 62.295 0.001 {"}129.963 62.037 0.001 {"}129.951 62 0.001 {"}129.944 61.944 0.001 {"}129.944 60.056 0.001 {"}129.935 60 0.001 {"}129.935 59.935 0.001 {"}129.935 58.065 0.001 {"}129.935 58 0.001 {"}129.935 57.935 0.001 {"}129.935 56.065 0.001 {"}129.935 56 0.001 {"}129.944 55.944 0.001 {"}129.944 54.056 0.001 {"}129.951 54 0.001 {"}129.966 53.966 0.001 {"}130 53.804 0.001 {"}130.451 52.451 0.001 {"}130.676 52 0.001 {"}131.185 51.185 0.001 {"}131.603 50.397 0.001 {"}131.823 50 0.001 {"}131.912 49.912 0.001 {"}132 49.647 0.001 {"}132.559 48.559 0.001 {"}133.059 48 0.001 {"}133.612 47.612 0.001 {"}134 46.682 0.001 {"}134.231 46.231 0.001 {"}134.341 46 0.001 {"}135.127 45.127 0.001 {"}135.804 44.196 0.001 {"}135.951 44 0.001 {"}135.978 43.978 0.001 {"}136 43.931 0.001 {"}136.831 42.831 0.001 {"}137.427 42 0.001 {"}137.728 41.728 0.001 {"}138 40.986 0.001 {"}138.372 40.372 0.001 {"}138.557 40 0.001 {"}139.294 39.294 0.001 {"}139.921 38.079 0.001 {"}139.97 38 0.001 {"}139.982 37.982 0.001 {"}140 37.935 0.001 {"}140.829 36.829 0.001 {"}141.451 36 0.001 {"}141.725 35.725 0.001 {"}142 34.802 0.001 {"}142.245 34.245 0.001 {"}142.327 34 0.001 {"}142.735 33.265 0.001 {"}142.921 32.921 0.001 {"}143.473 32 0.001 {"}143.717 31.717 0.001 {"}144 30.682 0.001 {"}144.189 30.189 0.001 {"}144.235 30 0.001 {"}144.341 29.659 0.001 {"}144.671 28.671 0.001 {"}144.865 28 0.001 {"}145.282 27.282 0.001 {"}145.553 26.447 0.001 {"}145.74 26 0.001 {"}145.811 25.811 0.001 {"}146 24.758 0.001 {"}146.192 24.192 0.001 {"}146.235 24 0.001 {"}146.317 23.683 0.001 {"}146.646 22.646 0.001 {"}146.789 22 0.001 {"}147.223 21.223 0.001 {"}147.473 20.527 0.001 {"}147.701 20 0.001 {"}147.777 19.777 0.001 {"}148 18.117 0.001 {"}148.025 18.025 0.001 {"}148.03 18 0.001 {"}148.046 17.954 0.001 {"}148.591 16.591 0.001 {"}148.752 16 0.001 {"}149.208 15.208 0.001 {"}149.451 14.549 0.001 {"}149.694 14 0.001 {"}149.786 13.786 0.001 {"}150 12.682 0.001 {"}150.192 12.192 0.001 {"}150.244 12 0.001 {"}150.593 11.407 0.001 {"}150.897 10.897 0.001 {"}151.408 10 0.001 {"}151.709 9.709 0.001 {"}152 8.773 0.001 {"}152.281 8.281 0.001 {"}152.387 8 0.001 {"}153.186 7.186 0.001 {"}153.765 6.235 0.001 {"}153.922 6 0.001 {"}153.956 5.956 0.001 {"}154 5.823 0.001 {"}154.714 4.714 0.001 {"}155.094 4 0.001 {"}155.554 3.554 0.001 {"}156 2.401 0.001 {"}156.168 2.168 0.001 {"}156.244 2 0.001 {"}157.081 1.081 0.001 {"}157.247 0.753 0.001 {"}157.694 0 0.001 {"}157.81 -0.19 0.001 {"}158 -0.879 0.001 {"}158.415 -1.585 0.001 {"}158.58 -2 0.001 {"}159.244 -2.756 0.001 {"}159.807 -3.807 0.001 {"}159.924 -4 0.001 {"}159.95 -4.05 0.001 {"}160 -4.318 0.001 {"}160.455 -5.545 0.001 {"}160.58 -6 0.001 {"}161.176 -6.824 0.001 {"}161.401 -7.401 0.001 {"}161.694 -8 0.001 {"}161.782 -8.218 0.001 {"}162 -9.318 0.001 {"}162.195 -9.805 0.001 {"}162.244 -10 0.001 {"}162.359 -10.359 0.001 {"}162.688 -11.312 0.001 {"}162.894 -12 0.001 {"}163.302 -12.698 0.001 {"}163.609 -13.609 0.001 {"}163.776 -14 0.001 {"}163.835 -14.165 0.001 {"}164 -15.147 0.001 {"}164.213 -15.787 0.001 {"}164.262 -16 0.001 {"}164.593 -16.593 0.001 {"}164.875 -17.125 0.001 {"}165.427 -18 0.001 {"}165.671 -18.329 0.001 {"}166 -19.318 0.001 {"}166.224 -19.776 0.001 {"}166.325 -20 0.001 {"}167.036 -20.964 0.001 {"}167.529 -21.529 0.001 {"}167.935 -22 0.001 {"}167.971 -22.029 0.001 {"}168 -22.098 0.001 {"}168.713 -23.287 0.001 {"}169.268 -24 0.001 {"}169.649 -24.351 0.001 {"}170 -25.098 0.001 {"}170.373 -25.627 0.001 {"}170.676 -26 0.001 {"}171.216 -26.784 0.001 {"}171.832 -27.832 0.001 {"}171.935 -28 0.001 {"}171.969 -28.031 0.001 {"}172 -28.107 0.001 {"}172.706 -29.294 0.001 {"}173.225 -30 0.001 {"}173.503 -30.497 0.001 {"}174 -31.883 0.001 {"}174.03 -31.97 0.001 {"}174.039 -32 0.001 {"}174.063 -32.063 0.001 {"}174.513 -33.487 0.001 {"}174.754 -34 0.001 {"}175.201 -34.799 0.001 {"}175.626 -35.626 0.001 {"}175.823 -36 0.001 {"}175.87 -36.13 0.001 {"}176 -37.589 0.001 {"}176.034 -37.966 0.001 {"}176.039 -38 0.001 {"}176.053 -38.053 0.001 {"}176.424 -39.576 0.001 {"}176.541 -40 0.001 {"}176.637 -40.637 0.001 {"}176.706 -41.294 0.001 {"}176.823 -42 0.001 {"}177.059 -42.941 0.001 {"}177.091 -43.091 0.001 {"}177.306 -44 0.001 {"}177.341 -44.659 0.001 {"}177.379 -45.379 0.001 {"}177.412 -46 0.001 {"}177.492 -46.508 0.001 {"}177.676 -47.676 0.001 {"}177.727 -48 0.001 {"}177.734 -48.266 0.001 {"}177.818 -49.818 0.001 {"}177.823 -50 0.001 {"}177.823 -50.177 0.001 {"}177.823 -51.823 0.001 {"}177.823 -52 0.001 {"}177.818 -52.182 0.001 {"}177.818 -53.818 0.001 {"}177.813 -54 0.001 {"}177.773 -54.227 0.001 {"}177.541 -55.541 0.001 {"}177.46 -56 0.001 {"}177.32 -56.68 0.001 {"}177.247 -57.247 0.001 {"}177.059 -58 0.001 {"}176.872 -58.872 0.001 {"}176.832 -59.168 0.001 {"}176.676 -60 0.001 {"}176.57 -60.57 0.001 {"}176.455 -61.545 0.001 {"}176.379 -62 0.001 {"}176.297 -62.297 0.001 {"}176 -63.705 0.001 {"}175.946 -63.946 0.001 {"}175.931 -64 0.001 {"}175.876 -64.124 0.001 {"}175.387 -65.387 0.001 {"}175.059 -66 0.001 {"}174.823 -66.823 0.001 {"}174.682 -67.318 0.001 {"}174.487 -68 0.001 {"}174.341 -68.341 0.001 {"}174 -69.705 0.001 {"}173.944 -69.944 0.001 {"}173.916 -70 0.001 {"}173.832 -70.168 0.001 {"}173.306 -71.306 0.001 {"}172.902 -72 0.001 {"}172.57 -72.57 0.001 {"}172 -73.804 0.001 {"}171.949 -73.949 0.001 {"}171.916 -74 0.001 {"}171.832 -74.168 0.001 {"}171.306 -75.306 0.001 {"}170.902 -76 0.001 {"}170.618 -76.618 0.001 {"}170 -77.804 0.001 {"}169.938 -77.938 0.001 {"}169.893 -78 0.001 {"}169.738 -78.262 0.001 {"}169.201 -79.201 0.001 {"}168.682 -80 0.001 {"}168.487 -80.487 0.001 {"}168 -81.705 0.001 {"}167.909 -81.909 0.001 {"}167.804 -82 0.001 {"}167.411 -82.589 0.001 {"}167.068 -83.068 0.001 {"}166.603 -84 0.001 {"}166.482 -84.482 0.001 {"}166 -85.607 0.001 {"}165.861 -85.861 0.001 {"}165.804 -86 0.001 {"}165.764 -86.236 0.001 {"}165.764 -87.764 0.001 {"}165.706 -88 0.001 {"}165.786 -88.214 0.001 {"}166 -89.178 0.001 {"}166.164 -89.836 0.001 {"}166.411 -90 0.001 {"}167.364 -90.636 0.001 {"}167.607 -91.607 0.001 {"}167.804 -92 0.001 {"}167.906 -92.094 0.001 {"}168 -92.168 0.001 {"}168.236 -92.236 0.001 {"}169.546 -92.454 0.001 {"}170 -92.636 0.001 {"}170.718 -93.282 0.001 {"}171.706 -94 0.001 {"}171.909 -94.091 0.001 {"}172 -94.147 0.001 {"}172.181 -94.181 0.001 {"}173.626 -94.374 0.001 {"}174 -94.454 0.001 {"}174.908 -94.908 0.001 {"}175.024 -94.976 0.001 {"}176 -95.318 0.001 {"}176.682 -95.318 0.001 {"}177.318 -95.318 0.001 {"}178 -95.318 0.001 {"}178.546 -95.454 0.001 {"}179.874 -95.874 0.001 {"}180 -95.909 0.001 {"}P -180 -95.909 0.001 {"}-179.922 -95.922 0.001 {"}-179.178 -96 0.001 {"}-178.084 -96.084 0.001 {"}-178 -96.091 0.001 {"}-177.906 -96.094 0.001 {"}-176.094 -96.094 0.001 {"}-176 -96.098 0.001 {"}-175.902 -96.098 0.001 {"}-174.098 -96.098 0.001 {"}-174 -96.098 0.001 {"}-173.909 -96.091 0.001 {"}-172.822 -96 0.001 {"}-172.078 -95.922 0.001 {"}-172 -95.909 0.001 {"}-171.874 -95.874 0.001 {"}-170.546 -95.454 0.001 {"}-170 -95.318 0.001 {"}-169.318 -95.318 0.001 {"}-168.682 -95.318 0.001 {"}-168 -95.318 0.001 {"}-167.197 -95.197 0.001 {"}-166.866 -95.134 0.001 {"}-166 -95.016 0.001 {"}-165.172 -94.828 0.001 {"}-164.578 -94.578 0.001 {"}-164 -94.397 0.001 {"}-163.647 -94.353 0.001 {"}-162.353 -94.353 0.001 {"}-162 -94.318 0.001 {"}-161.724 -94.276 0.001 {"}-160.276 -94.276 0.001 {"}-160 -94.244 0.001 {"}-159.781 -94.219 0.001 {"}-158.094 -94.094 0.001 {"}-158 -94.084 0.001 {"}-157.924 -94.076 0.001 {"}-156.076 -94.076 0.001 {"}-156 -94.069 0.001 {"}-155.94 -94.06 0.001 {"}-154.822 -94 0.001 {"}-154.043 -93.957 0.001 {"}-154 -93.954 0.001 {"}-153.939 -93.939 0.001 {"}-152.461 -93.539 0.001 {"}-152 -93.43 0.001 {"}-151.098 -93.098 0.001 {"}-150.955 -93.045 0.001 {"}-150 -92.694 0.001 {"}-149.623 -92.377 0.001 {"}-148.353 -92 0.001 {"}-148.099 -91.901 0.001 {"}-148 -91.872 0.001 {"}-147.624 -91.624 0.001 {"}-146.875 -91.125 0.001 {"}-146 -90.573 0.001 {"}-145.72 -90.28 0.001 {"}-144.986 -90 0.001 {"}-144.401 -89.599 0.001 {"}-144 -89.288 0.001 {"}-143.517 -88.483 0.001 {"}-142.712 -88 0.001 {"}-142.347 -87.653 0.001 {"}-142 -87.359 0.001 {"}-141.527 -86.473 0.001 {"}-140.913 -86 0.001 {"}-140.519 -85.481 0.001 {"}-140 -84.963 0.001 {"}-139.672 -84.328 0.001 {"}-139.244 -84 0.001 {"}-138.733 -83.267 0.001 {"}-138 -82.417 0.001 {"}-137.872 -82.128 0.001 {"}-137.758 -82 0.001 {"}-137.166 -81.166 0.001 {"}-137.034 -80.966 0.001 {"}-136.032 -80 0.001 {"}-136.021 -79.979 0.001 {"}-136 -79.954 0.001 {"}-135.317 -78.683 0.001 {"}-134.534 -78 0.001 {"}-134.372 -77.628 0.001 {"}-134 -76.932 0.001 {"}-133.772 -76.228 0.001 {"}-133.514 -76 0.001 {"}-132.954 -75.046 0.001 {"}-132.803 -74.803 0.001 {"}-132.31 -74 0.001 {"}-132.244 -73.756 0.001 {"}-132 -72.636 0.001 {"}-131.904 -72.096 0.001 {"}-131.833 -72 0.001 {"}-131.756 -71.756 0.001 {"}-131.393 -70.607 0.001 {"}-131.201 -70 0.001 {"}-130.913 -69.087 0.001 {"}-130.832 -68.832 0.001 {"}-130.57 -68 0.001 {"}-130.492 -67.508 0.001 {"}-130.379 -66.379 0.001 {"}-130.325 -66 0.001 {"}-130.317 -65.683 0.001 {"}-130.317 -64.317 0.001 {"}-130.31 -64 0.001 {"}-130.268 -63.732 0.001 {"}-130 -62.295 0.001 {"}-129.963 -62.037 0.001 {"}-129.951 -62 0.001 {"}-129.944 -61.944 0.001 {"}-129.944 -60.056 0.001 {"}-129.935 -60 0.001 {"}-129.935 -59.935 0.001 {"}-129.935 -58.065 0.001 {"}-129.935 -58 0.001 {"}-129.935 -57.935 0.001 {"}-129.935 -56.065 0.001 {"}-129.935 -56 0.001 {"}-129.944 -55.944 0.001 {"}-129.944 -54.056 0.001 {"}-129.951 -54 0.001 {"}-129.966 -53.966 0.001 {"}-130 -53.804 0.001 {"}-130.451 -52.451 0.001 {"}-130.676 -52 0.001 {"}-131.185 -51.185 0.001 {"}-131.603 -50.397 0.001 {"}-131.823 -50 0.001 {"}-131.912 -49.912 0.001 {"}-132 -49.647 0.001 {"}-132.559 -48.559 0.001 {"}-133.059 -48 0.001 {"}-133.612 -47.612 0.001 {"}-134 -46.682 0.001 {"}-134.231 -46.231 0.001 {"}-134.341 -46 0.001 {"}-135.127 -45.127 0.001 {"}-135.804 -44.196 0.001 {"}-135.951 -44 0.001 {"}-135.978 -43.978 0.001 {"}-136 -43.931 0.001 {"}-136.831 -42.831 0.001 {"}-137.427 -42 0.001 {"}-137.728 -41.728 0.001 {"}-138 -40.986 0.001 {"}-138.372 -40.372 0.001 {"}-138.557 -40 0.001 {"}-139.294 -39.294 0.001 {"}-139.921 -38.079 0.001 {"}-139.97 -38 0.001 {"}-139.982 -37.982 0.001 {"}-140 -37.935 0.001 {"}-140.829 -36.829 0.001 {"}-141.451 -36 0.001 {"}-141.725 -35.725 0.001 {"}-142 -34.802 0.001 {"}-142.245 -34.245 0.001 {"}-142.327 -34 0.001 {"}-142.735 -33.265 0.001 {"}-142.921 -32.921 0.001 {"}-143.473 -32 0.001 {"}-143.717 -31.717 0.001 {"}-144 -30.682 0.001 {"}-144.189 -30.189 0.001 {"}-144.235 -30 0.001 {"}-144.341 -29.659 0.001 {"}-144.671 -28.671 0.001 {"}-144.865 -28 0.001 {"}-145.282 -27.282 0.001 {"}-145.553 -26.447 0.001 {"}-145.74 -26 0.001 {"}-145.811 -25.811 0.001 {"}-146 -24.758 0.001 {"}-146.192 -24.192 0.001 {"}-146.235 -24 0.001 {"}-146.317 -23.683 0.001 {"}-146.646 -22.646 0.001 {"}-146.789 -22 0.001 {"}-147.223 -21.223 0.001 {"}-147.473 -20.527 0.001 {"}-147.701 -20 0.001 {"}-147.777 -19.777 0.001 {"}-148 -18.117 0.001 {"}-148.025 -18.025 0.001 {"}-148.03 -18 0.001 {"}-148.046 -17.954 0.001 {"}-148.591 -16.591 0.001 {"}-148.752 -16 0.001 {"}-149.208 -15.208 0.001 {"}-149.451 -14.549 0.001 {"}-149.694 -14 0.001 {"}-149.786 -13.786 0.001 {"}-150 -12.682 0.001 {"}-150.192 -12.192 0.001 {"}-150.244 -12 0.001 {"}-150.593 -11.407 0.001 {"}-150.897 -10.897 0.001 {"}-151.408 -10 0.001 {"}-151.709 -9.709 0.001 {"}-152 -8.773 0.001 {"}-152.281 -8.281 0.001 {"}-152.387 -8 0.001 {"}-153.186 -7.186 0.001 {"}-153.765 -6.235 0.001 {"}-153.922 -6 0.001 {"}-153.956 -5.956 0.001 {"}-154 -5.823 0.001 {"}-154.714 -4.714 0.001 {"}-155.094 -4 0.001 {"}-155.554 -3.554 0.001 {"}-156 -2.401 0.001 {"}-156.168 -2.168 0.001 {"}-156.244 -2 0.001 {"}-157.081 -1.081 0.001 {"}-157.247 -0.753 0.001 {"}-157.694 0 0.001 {"}-157.81 0.19 0.001 {"}-158 0.879 0.001 {"}-158.415 1.585 0.001 {"}-158.58 2 0.001 {"}-159.244 2.756 0.001 {"}-159.807 3.807 0.001 {"}-159.924 4 0.001 {"}-159.95 4.05 0.001 {"}-160 4.318 0.001 {"}-160.455 5.545 0.001 {"}-160.58 6 0.001 {"}-161.176 6.824 0.001 {"}-161.401 7.401 0.001 {"}-161.694 8 0.001 {"}-161.782 8.218 0.001 {"}-162 9.318 0.001 {"}-162.195 9.805 0.001 {"}-162.244 10 0.001 {"}-162.359 10.359 0.001 {"}-162.688 11.312 0.001 {"}-162.894 12 0.001 {"}-163.302 12.698 0.001 {"}-163.609 13.609 0.001 {"}-163.776 14 0.001 {"}-163.835 14.165 0.001 {"}-164 15.147 0.001 {"}-164.213 15.787 0.001 {"}-164.262 16 0.001 {"}-164.593 16.593 0.001 {"}-164.875 17.125 0.001 {"}-165.427 18 0.001 {"}-165.671 18.329 0.001 {"}-166 19.318 0.001 {"}-166.224 19.776 0.001 {"}-166.325 20 0.001 {"}-167.036 20.964 0.001 {"}-167.529 21.529 0.001 {"}-167.935 22 0.001 {"}-167.971 22.029 0.001 {"}-168 22.098 0.001 {"}-168.713 23.287 0.001 {"}-169.268 24 0.001 {"}-169.649 24.351 0.001 {"}-170 25.098 0.001 {"}-170.373 25.627 0.001 {"}-170.676 26 0.001 {"}-171.216 26.784 0.001 {"}-171.832 27.832 0.001 {"}-171.935 28 0.001 {"}-171.969 28.031 0.001 {"}-172 28.107 0.001 {"}-172.706 29.294 0.001 {"}-173.225 30 0.001 {"}-173.503 30.497 0.001 {"}-174 31.883 0.001 {"}-174.03 31.97 0.001 {"}-174.039 32 0.001 {"}-174.063 32.063 0.001 {"}-174.513 33.487 0.001 {"}-174.754 34 0.001 {"}-175.201 34.799 0.001 {"}-175.626 35.626 0.001 {"}-175.823 36 0.001 {"}-175.87 36.13 0.001 {"}-176 37.589 0.001 {"}-176.034 37.966 0.001 {"}-176.039 38 0.001 {"}-176.053 38.053 0.001 {"}-176.424 39.576 0.001 {"}-176.541 40 0.001 {"}-176.637 40.637 0.001 {"}-176.706 41.294 0.001 {"}-176.823 42 0.001 {"}-177.059 42.941 0.001 {"}-177.091 43.091 0.001 {"}-177.306 44 0.001 {"}-177.341 44.659 0.001 {"}-177.379 45.379 0.001 {"}-177.412 46 0.001 {"}-177.492 46.508 0.001 {"}-177.676 47.676 0.001 {"}-177.727 48 0.001 {"}-177.734 48.266 0.001 {"}-177.818 49.818 0.001 {"}-177.823 50 0.001 {"}-177.823 50.177 0.001 {"}-177.823 51.823 0.001 {"}-177.823 52 0.001 {"}-177.818 52.182 0.001 {"}-177.818 53.818 0.001 {"}-177.813 54 0.001 {"}-177.773 54.227 0.001 {"}-177.541 55.541 0.001 {"}-177.46 56 0.001 {"}-177.32 56.68 0.001 {"}-177.247 57.247 0.001 {"}-177.059 58 0.001 {"}-176.872 58.872 0.001 {"}-176.832 59.168 0.001 {"}-176.676 60 0.001 {"}-176.57 60.57 0.001 {"}-176.455 61.545 0.001 {"}-176.379 62 0.001 {"}-176.297 62.297 0.001 {"}-176 63.705 0.001 {"}-175.946 63.946 0.001 {"}-175.931 64 0.001 {"}-175.876 64.124 0.001 {"}-175.387 65.387 0.001 {"}-175.059 66 0.001 {"}-174.823 66.823 0.001 {"}-174.682 67.318 0.001 {"}-174.487 68 0.001 {"}-174.341 68.341 0.001 {"}-174 69.705 0.001 {"}-173.944 69.944 0.001 {"}-173.916 70 0.001 {"}-173.832 70.168 0.001 {"}-173.306 71.306 0.001 {"}-172.902 72 0.001 {"}-172.57 72.57 0.001 {"}-172 73.804 0.001 {"}-171.949 73.949 0.001 {"}-171.916 74 0.001 {"}-171.832 74.168 0.001 {"}-171.306 75.306 0.001 {"}-170.902 76 0.001 {"}-170.618 76.618 0.001 {"}-170 77.804 0.001 {"}-169.938 77.938 0.001 {"}-169.893 78 0.001 {"}-169.738 78.262 0.001 {"}-169.201 79.201 0.001 {"}-168.682 80 0.001 {"}-168.487 80.487 0.001 {"}-168 81.705 0.001 {"}-167.909 81.909 0.001 {"}-167.804 82 0.001 {"}-167.411 82.589 0.001 {"}-167.068 83.068 0.001 {"}-166.603 84 0.001 {"}-166.482 84.482 0.001 {"}-166 85.607 0.001 {"}-165.861 85.861 0.001 {"}-165.804 86 0.001 {"}-165.764 86.236 0.001 {"}-165.764 87.764 0.001 {"}-165.706 88 0.001 {"}-165.786 88.214 0.001 {"}-166 89.178 0.001 {"}-166.164 89.836 0.001 {"}-166.411 90 0.001 {"}-167.364 90.636 0.001 {"}-167.607 91.607 0.001 {"}-167.804 92 0.001 {"}-167.906 92.094 0.001 {"}-168 92.168 0.001 {"}-168.236 92.236 0.001 {"}-169.546 92.454 0.001 {"}-170 92.636 0.001 {"}-170.718 93.282 0.001 {"}-171.706 94 0.001 {"}-171.909 94.091 0.001 {"}-172 94.147 0.001 {"}-172.181 94.181 0.001 {"}-173.626 94.374 0.001 {"}-174 94.454 0.001 {"}-174.908 94.908 0.001 {"}-175.024 94.976 0.001 {"}-176 95.318 0.001 {"}-176.682 95.318 0.001 {"}-177.318 95.318 0.001 {"}-178 95.318 0.001 {"}-178.546 95.454 0.001 {"}-179.874 95.874 0.001 {"}-180 95.909 0.001 {"}P 53.131 -180 0.001 {"}52.765 -179.235 0.001 {"}52.668 -178.668 0.001 {"}52.459 -178 0.001 {"}52.297 -177.703 0.001 {"}52.008 -176.008 0.001 {"}52.005 -176 0.001 {"}52.003 -175.997 0.001 {"}52 -175.986 0.001 {"}51.084 -174.916 0.001 {"}50.676 -174 0.001 {"}50.413 -173.587 0.001 {"}50.009 -172.009 0.001 {"}50.006 -172 0.001 {"}50.003 -171.997 0.001 {"}50 -171.986 0.001 {"}49.051 -170.949 0.001 {"}48.633 -170 0.001 {"}48.398 -169.602 0.001 {"}48.01 -168.01 0.001 {"}48.006 -168 0.001 {"}48.004 -167.996 0.001 {"}48 -167.984 0.001 {"}47.094 -166.906 0.001 {"}46.722 -166 0.001 {"}46.491 -165.509 0.001 {"}46.235 -164.235 0.001 {"}46.159 -164 0.001 {"}46.102 -163.898 0.001 {"}46 -163.497 0.001 {"}45.361 -162.639 0.001 {"}45.082 -162 0.001 {"}44.663 -161.337 0.001 {"}44.46 -160.46 0.001 {"}44.284 -160 0.001 {"}44.179 -159.821 0.001 {"}44 -159.278 0.001 {"}43.429 -158.571 0.001 {"}43.172 -158 0.001 {"}42.732 -157.268 0.001 {"}42.575 -156.575 0.001 {"}42.36 -156 0.001 {"}42.232 -155.768 0.001 {"}42 -154.781 0.001 {"}41.693 -154.307 0.001 {"}41.562 -154 0.001 {"}40.888 -153.112 0.001 {"}40.805 -152.805 0.001 {"}40.46 -152 0.001 {"}40.295 -151.705 0.001 {"}40 -150.301 0.001 {"}39.883 -150.117 0.001 {"}39.825 -150 0.001 {"}38.932 -149.068 0.001 {"}38.865 -148.865 0.001 {"}38.439 -148 0.001 {"}38.273 -147.727 0.001 {"}38 -146.791 0.001 {"}37.645 -146.355 0.001 {"}37.429 -146 0.001 {"}36.678 -145.322 0.001 {"}36.242 -144.242 0.001 {"}36.108 -144 0.001 {"}36.061 -143.939 0.001 {"}36 -143.806 0.001 {"}35.12 -142.88 0.001 {"}34.65 -142 0.001 {"}34.391 -141.609 0.001 {"}34 -140.309 0.001 {"}33.872 -140.128 0.001 {"}33.803 -140 0.001 {"}32.914 -139.086 0.001 {"}32.829 -138.829 0.001 {"}32.418 -138 0.001 {"}32.28 -137.72 0.001 {"}32 -136.709 0.001 {"}31.699 -136.301 0.001 {"}31.557 -136 0.001 {"}30.918 -135.082 0.001 {"}30.867 -134.867 0.001 {"}30.522 -134 0.001 {"}30.403 -133.597 0.001 {"}30.128 -132.128 0.001 {"}30.096 -132 0.001 {"}30.082 -131.918 0.001 {"}30 -131.068 0.001 {"}29.792 -130.208 0.001 {"}29.749 -130 0.001 {"}29.705 -129.705 0.001 {"}29.483 -128.517 0.001 {"}29.414 -128 0.001 {"}29.414 -127.414 0.001 {"}29.414 -126.586 0.001 {"}29.414 -126 0.001 {"}29.462 -125.462 0.001 {"}29.655 -124.345 0.001 {"}29.691 -124 0.001 {"}29.726 -123.726 0.001 {"}30 -122.147 0.001 {"}30.01 -122.01 0.001 {"}30.011 -122 0.001 {"}30.015 -121.985 0.001 {"}30.314 -120.314 0.001 {"}30.409 -120 0.001 {"}30.651 -119.349 0.001 {"}30.759 -118.759 0.001 {"}31.286 -118 0.001 {"}31.514 -117.514 0.001 {"}32 -116.784 0.001 {"}32.177 -116.177 0.001 {"}32.282 -116 0.001 {"}32.672 -115.328 0.001 {"}32.867 -114.867 0.001 {"}33.976 -114 0.001 {"}33.986 -113.986 0.001 {"}34 -113.973 0.001 {"}34.661 -112.661 0.001 {"}35.741 -112 0.001 {"}35.861 -111.861 0.001 {"}36 -111.748 0.001 {"}36.687 -110.687 0.001 {"}37.959 -110.041 0.001 {"}38 -110.014 0.001 {"}38.008 -110.008 0.001 {"}38.021 -110 0.001 {"}39.032 -109.032 0.001 {"}40 -108.572 0.001 {"}40.361 -108.361 0.001 {"}41.506 -108 0.001 {"}41.784 -107.784 0.001 {"}42 -107.685 0.001 {"}42.926 -106.926 0.001 {"}43.123 -106.877 0.001 {"}44 -106.502 0.001 {"}44.353 -106.353 0.001 {"}45.964 -106 0.001 {"}45.987 -105.987 0.001 {"}46 -105.982 0.001 {"}46.055 -105.945 0.001 {"}47.133 -105.133 0.001 {"}48 -104.779 0.001 {"}48.504 -104.504 0.001 {"}49.816 -104.184 0.001 {"}50 -104.117 0.001 {"}50.075 -104.075 0.001 {"}50.299 -104 0.001 {"}51.263 -103.263 0.001 {"}52 -102.9 0.001 {"}52.521 -102.521 0.001 {"}53.98 -102.02 0.001 {"}54 -102.011 0.001 {"}54.006 -102.006 0.001 {"}54.019 -102 0.001 {"}55.022 -101.022 0.001 {"}56 -100.508 0.001 {"}56.305 -100.305 0.001 {"}56.98 -100 0.001 {"}57.471 -99.471 0.001 {"}58 -99.089 0.001 {"}58.487 -98.487 0.001 {"}59.347 -98 0.001 {"}59.635 -97.635 0.001 {"}60 -97.311 0.001 {"}60.502 -96.502 0.001 {"}61.179 -96 0.001 {"}61.499 -95.499 0.001 {"}62 -94.941 0.001 {"}62.299 -94.299 0.001 {"}62.551 -94 0.001 {"}63.063 -93.063 0.001 {"}64 -92.03 0.001 {"}64.01 -92.01 0.001 {"}64.016 -92 0.001 {"}64.033 -91.967 0.001 {"}64.599 -90.599 0.001 {"}65.066 -90 0.001 {"}65.305 -89.305 0.001 {"}65.743 -88.257 0.001 {"}65.841 -88 0.001 {"}65.871 -87.871 0.001 {"}66 -87.318 0.001 {"}66.127 -86.127 0.001 {"}66.142 -86 0.001 {"}66.148 -85.852 0.001 {"}66.264 -84.264 0.001 {"}66.275 -84 0.001 {"}66.264 -83.736 0.001 {"}66.264 -82.264 0.001 {"}66.254 -82 0.001 {"}66.233 -81.767 0.001 {"}66.145 -80.145 0.001 {"}66.133 -80 0.001 {"}66.12 -79.88 0.001 {"}66.028 -78.028 0.001 {"}66.025 -78 0.001 {"}66.023 -77.977 0.001 {"}66 -76.411 0.001 {"}65.986 -76.014 0.001 {"}65.986 -76 0.001 {"}65.985 -75.985 0.001 {"}65.837 -74.163 0.001 {"}65.831 -74 0.001 {"}65.824 -73.824 0.001 {"}65.709 -72.291 0.001 {"}65.698 -72 0.001 {"}65.692 -71.692 0.001 {"}65.635 -70.365 0.001 {"}65.627 -70 0.001 {"}65.627 -69.627 0.001 {"}65.579 -68.421 0.001 {"}65.579 -68 0.001 {"}65.579 -67.579 0.001 {"}65.579 -66.421 0.001 {"}65.579 -66 0.001 {"}65.568 -65.568 0.001 {"}65.554 -64.446 0.001 {"}65.542 -64 0.001 {"}65.516 -63.516 0.001 {"}65.443 -62.557 0.001 {"}65.415 -62 0.001 {"}65.336 -61.336 0.001 {"}65.236 -60.764 0.001 {"}65.156 -60 0.001 {"}65.069 -59.069 0.001 {"}65.053 -58.947 0.001 {"}64.971 -58 0.001 {"}64.881 -57.119 0.001 {"}64.864 -56.864 0.001 {"}64.781 -56 0.001 {"}64.715 -55.285 0.001 {"}64.654 -54.654 0.001 {"}64.594 -54 0.001 {"}64.559 -53.441 0.001 {"}64.524 -52.524 0.001 {"}64.492 -52 0.001 {"}64.475 -51.525 0.001 {"}64.434 -50.434 0.001 {"}64.418 -50 0.001 {"}64.409 -49.591 0.001 {"}64.35 -48.35 0.001 {"}64.342 -48 0.001 {"}64.332 -47.668 0.001 {"}64.23 -46.23 0.001 {"}64.223 -46 0.001 {"}64.235 -45.765 0.001 {"}64.235 -44.235 0.001 {"}64.249 -44 0.001 {"}64.263 -43.737 0.001 {"}64.314 -42.314 0.001 {"}64.331 -42 0.001 {"}64.355 -41.645 0.001 {"}64.402 -40.402 0.001 {"}64.431 -40 0.001 {"}64.448 -39.552 0.001 {"}64.463 -38.463 0.001 {"}64.482 -38 0.001 {"}64.499 -37.501 0.001 {"}64.513 -36.513 0.001 {"}64.531 -36 0.001 {"}64.531 -35.469 0.001 {"}64.531 -34.531 0.001 {"}64.531 -34 0.001 {"}64.516 -33.484 0.001 {"}64.503 -32.503 0.001 {"}64.489 -32 0.001 {"}64.469 -31.531 0.001 {"}64.406 -30.406 0.001 {"}64.388 -30 0.001 {"}64.372 -29.628 0.001 {"}64.316 -28.316 0.001 {"}64.303 -28 0.001 {"}64.303 -27.697 0.001 {"}64.303 -26.303 0.001 {"}64.303 -26 0.001 {"}64.309 -25.691 0.001 {"}64.365 -24.365 0.001 {"}64.372 -24 0.001 {"}64.377 -23.623 0.001 {"}64.44 -22.44 0.001 {"}64.445 -22 0.001 {"}64.402 -21.598 0.001 {"}64.342 -20.342 0.001 {"}64.309 -20 0.001 {"}64.26 -19.74 0.001 {"}64.146 -18.146 0.001 {"}64.123 -18 0.001 {"}64.102 -17.898 0.001 {"}64 -16.682 0.001 {"}63.884 -16.116 0.001 {"}63.871 -16 0.001 {"}63.823 -15.823 0.001 {"}63.375 -14.625 0.001 {"}63.245 -14 0.001 {"}62.822 -13.178 0.001 {"}62.765 -12.765 0.001 {"}62.527 -12 0.001 {"}62.388 -11.612 0.001 {"}62.22 -10.22 0.001 {"}62.165 -10 0.001 {"}62.092 -9.908 0.001 {"}62 -9.554 0.001 {"}61.328 -8.672 0.001 {"}61.061 -8 0.001 {"}60.566 -7.434 0.001 {"}60.262 -6.262 0.001 {"}60.146 -6 0.001 {"}60.067 -5.933 0.001 {"}60 -5.761 0.001 {"}59.041 -4.959 0.001 {"}58.476 -4 0.001 {"}58.199 -3.801 0.001 {"}58 -3.335 0.001 {"}57.265 -2.735 0.001 {"}56.785 -2 0.001 {"}56.356 -1.644 0.001 {"}56 -0.638 0.001 {"}55.667 -0.333 0.001 {"}55.433 0 0.001 {"}54.553 0.553 0.001 {"}54 1.876 0.001 {"}53.935 1.935 0.001 {"}53.888 2 0.001 {"}52.765 2.765 0.001 {"}52.435 3.565 0.001 {"}52.179 4 0.001 {"}52.078 4.078 0.001 {"}52 4.254 0.001 {"}51.084 5.084 0.001 {"}50.606 6 0.001 {"}50.34 6.34 0.001 {"}50 7.691 0.001 {"}49.869 7.869 0.001 {"}49.81 8 0.001 {"}48.948 8.948 0.001 {"}48.91 9.09 0.001 {"}48.501 10 0.001 {"}48.277 10.277 0.001 {"}48 11.721 0.001 {"}47.886 11.886 0.001 {"}47.84 12 0.001 {"}46.978 12.978 0.001 {"}46.962 13.038 0.001 {"}46.536 14 0.001 {"}46.32 14.32 0.001 {"}46 15.981 0.001 {"}45.992 15.992 0.001 {"}45.988 16 0.001 {"}45.795 16.205 0.001 {"}45.015 17.015 0.001 {"}44.554 18 0.001 {"}44.305 18.305 0.001 {"}44 19.65 0.001 {"}43.839 19.839 0.001 {"}43.753 20 0.001 {"}42.805 20.805 0.001 {"}42.649 21.351 0.001 {"}42.328 22 0.001 {"}42.168 22.168 0.001 {"}42 22.76 0.001 {"}41.417 23.417 0.001 {"}41.149 24 0.001 {"}40.683 24.683 0.001 {"}40.504 25.496 0.001 {"}40.308 26 0.001 {"}40.187 26.187 0.001 {"}40 27.379 0.001 {"}39.786 27.786 0.001 {"}39.715 28 0.001 {"}39.159 28.841 0.001 {"}39.022 29.022 0.001 {"}38.652 30 0.001 {"}38.439 30.439 0.001 {"}38.155 31.845 0.001 {"}38.103 32 0.001 {"}38.062 32.062 0.001 {"}38 32.297 0.001 {"}37.205 33.205 0.001 {"}36.814 34 0.001 {"}36.476 34.476 0.001 {"}36.031 35.969 0.001 {"}36.017 36 0.001 {"}36.009 36.009 0.001 {"}36 36.034 0.001 {"}35.47 36.53 0.001 {"}34.976 36.976 0.001 {"}34.95 37.05 0.001 {"}34.447 38 0.001 {"}34.255 38.255 0.001 {"}34 39.108 0.001 {"}33.59 39.59 0.001 {"}33.361 40 0.001 {"}32.707 40.707 0.001 {"}32.482 41.518 0.001 {"}32.261 42 0.001 {"}32.16 42.16 0.001 {"}32 42.64 0.001 {"}31.358 43.358 0.001 {"}31.053 44 0.001 {"}30.668 44.668 0.001 {"}30.487 45.513 0.001 {"}30.311 46 0.001 {"}30.227 46.227 0.001 {"}30 47.224 0.001 {"}29.692 47.692 0.001 {"}29.557 48 0.001 {"}28.98 48.98 0.001 {"}28.967 49.033 0.001 {"}28.604 50 0.001 {"}28.462 50.462 0.001 {"}28.176 51.824 0.001 {"}28.129 52 0.001 {"}28.113 52.113 0.001 {"}28 53.318 0.001 {"}27.875 53.875 0.001 {"}27.845 54 0.001 {"}27.811 54.189 0.001 {"}27.54 55.54 0.001 {"}27.46 56 0.001 {"}27.409 56.591 0.001 {"}27.344 57.344 0.001 {"}27.286 58 0.001 {"}27.316 58.684 0.001 {"}27.379 59.379 0.001 {"}27.409 60 0.001 {"}27.477 60.523 0.001 {"}27.72 61.72 0.001 {"}27.762 62 0.001 {"}27.81 62.19 0.001 {"}28 62.802 0.001 {"}28.142 63.858 0.001 {"}28.181 64 0.001 {"}28.321 64.321 0.001 {"}28.629 65.371 0.001 {"}29.097 66 0.001 {"}29.336 66.664 0.001 {"}30 67.849 0.001 {"}30.033 67.967 0.001 {"}30.052 68 0.001 {"}30.148 68.148 0.001 {"}30.744 69.256 0.001 {"}31.662 70 0.001 {"}31.815 70.185 0.001 {"}32 70.349 0.001 {"}32.652 71.348 0.001 {"}33.765 72 0.001 {"}33.88 72.12 0.001 {"}34 72.213 0.001 {"}34.805 73.195 0.001 {"}35.512 73.512 0.001 {"}36 73.8 0.001 {"}36.127 73.873 0.001 {"}36.549 74 0.001 {"}37.438 74.562 0.001 {"}38 74.81 0.001 {"}38.644 75.356 0.001 {"}39.682 75.682 0.001 {"}40 75.831 0.001 {"}40.131 75.869 0.001 {"}41.014 76 0.001 {"}41.749 76.251 0.001 {"}42 76.329 0.001 {"}42.625 76.625 0.001 {"}43.095 76.905 0.001 {"}44 77.175 0.001 {"}44.656 77.344 0.001 {"}45.433 77.433 0.001 {"}46 77.549 0.001 {"}46.372 77.628 0.001 {"}47.818 77.818 0.001 {"}48 77.852 0.001 {"}48.132 77.868 0.001 {"}49.883 78 0.001 {"}49.983 78.017 0.001 {"}50 78.02 0.001 {"}50.024 78.024 0.001 {"}51.721 78.279 0.001 {"}52 78.329 0.001 {"}52.407 78.407 0.001 {"}53.363 78.637 0.001 {"}54 78.746 0.001 {"}54.994 79.006 0.001 {"}55.007 79.007 0.001 {"}56 79.2 0.001 {"}56.655 79.345 0.001 {"}57.477 79.477 0.001 {"}58 79.582 0.001 {"}58.333 79.667 0.001 {"}59.979 79.979 0.001 {"}60 79.984 0.001 {"}60.013 79.987 0.001 {"}60.098 80 0.001 {"}61.504 80.496 0.001 {"}62 80.634 0.001 {"}62.762 81.238 0.001 {"}63.681 81.681 0.001 {"}64 81.859 0.001 {"}64.083 81.917 0.001 {"}64.287 82 0.001 {"}65.207 82.793 0.001 {"}66 83.338 0.001 {"}66.272 83.728 0.001 {"}66.756 84 0.001 {"}67.304 84.696 0.001 {"}68 85.451 0.001 {"}68.165 85.835 0.001 {"}68.321 86 0.001 {"}69.01 86.99 0.001 {"}70 87.966 0.001 {"}70.012 87.988 0.001 {"}70.021 88 0.001 {"}70.056 88.056 0.001 {"}70.713 89.287 0.001 {"}71.405 90 0.001 {"}71.566 90.434 0.001 {"}72 91.225 0.001 {"}72.164 91.836 0.001 {"}72.253 92 0.001 {"}72.488 92.488 0.001 {"}72.781 93.219 0.001 {"}73.294 94 0.001 {"}73.435 94.565 0.001 {"}74 95.916 0.001 {"}74.013 95.987 0.001 {"}74.017 96 0.001 {"}74.02 96.02 0.001 {"}74.187 97.813 0.001 {"}74.227 98 0.001 {"}74.293 98.293 0.001 {"}74.525 99.475 0.001 {"}74.651 100 0.001 {"}74.828 100.828 0.001 {"}74.861 101.139 0.001 {"}75.102 102 0.001 {"}75.154 102.846 0.001 {"}75.169 103.169 0.001 {"}75.219 104 0.001 {"}75.254 104.746 0.001 {"}75.294 105.294 0.001 {"}75.329 106 0.001 {"}75.361 106.639 0.001 {"}75.422 107.422 0.001 {"}75.452 108 0.001 {"}75.479 108.521 0.001 {"}75.564 109.564 0.001 {"}75.588 110 0.001 {"}75.588 110.412 0.001 {"}75.588 111.588 0.001 {"}75.588 112 0.001 {"}75.564 112.436 0.001 {"}75.479 113.479 0.001 {"}75.452 114 0.001 {"}75.396 114.604 0.001 {"}75.294 115.294 0.001 {"}75.237 116 0.001 {"}75.209 116.791 0.001 {"}75.191 117.191 0.001 {"}75.163 118 0.001 {"}74.914 118.914 0.001 {"}74.904 119.096 0.001 {"}74.729 120 0.001 {"}74.568 120.568 0.001 {"}74.382 121.618 0.001 {"}74.29 122 0.001 {"}74.229 122.229 0.001 {"}74.016 123.984 0.001 {"}74.013 124 0.001 {"}74.01 124.01 0.001 {"}74 124.069 0.001 {"}73.453 125.453 0.001 {"}73.286 126 0.001 {"}72.851 126.851 0.001 {"}72.814 127.186 0.001 {"}72.572 128 0.001 {"}72.414 128.414 0.001 {"}72.018 129.982 0.001 {"}72.012 130 0.001 {"}72.01 130.01 0.001 {"}72 130.069 0.001 {"}71.479 131.479 0.001 {"}71.33 132 0.001 {"}70.875 132.875 0.001 {"}70.841 133.159 0.001 {"}70.585 134 0.001 {"}70.437 134.437 0.001 {"}70.172 135.828 0.001 {"}70.126 136 0.001 {"}70.101 136.101 0.001 {"}70 137.014 0.001 {"}69.795 137.795 0.001 {"}69.753 138 0.001 {"}69.586 138.414 0.001 {"}69.191 139.191 0.001 {"}68.962 140 0.001 {"}68.723 140.723 0.001 {"}68.661 141.339 0.001 {"}68.506 142 0.001 {"}68.403 142.403 0.001 {"}68.212 143.788 0.001 {"}68.167 144 0.001 {"}68.13 144.13 0.001 {"}68 145.008 0.001 {"}67.731 145.731 0.001 {"}67.664 146 0.001 {"}67.256 146.744 0.001 {"}67.056 147.056 0.001 {"}66.715 148 0.001 {"}66.517 148.517 0.001 {"}66.359 149.641 0.001 {"}66.263 150 0.001 {"}66.17 150.17 0.001 {"}66 150.858 0.001 {"}65.534 151.534 0.001 {"}65.359 152 0.001 {"}64.772 152.772 0.001 {"}64.626 153.374 0.001 {"}64.367 154 0.001 {"}64.229 154.229 0.001 {"}64 155.069 0.001 {"}63.59 155.59 0.001 {"}63.397 156 0.001 {"}62.746 156.746 0.001 {"}62.537 157.463 0.001 {"}62.29 158 0.001 {"}62.179 158.179 0.001 {"}62 158.687 0.001 {"}61.392 159.392 0.001 {"}61.076 160 0.001 {"}60.653 160.653 0.001 {"}60.417 161.583 0.001 {"}60.251 162 0.001 {"}60.156 162.156 0.001 {"}60 162.592 0.001 {"}59.346 163.346 0.001 {"}59.039 164 0.001 {"}58.633 164.633 0.001 {"}58.355 165.645 0.001 {"}58.211 166 0.001 {"}58.135 166.135 0.001 {"}58 166.566 0.001 {"}57.383 167.383 0.001 {"}57.106 168 0.001 {"}56.704 168.704 0.001 {"}56.558 169.442 0.001 {"}56.361 170 0.001 {"}56.252 170.252 0.001 {"}56 171.506 0.001 {"}55.827 171.827 0.001 {"}55.757 172 0.001 {"}55.369 172.631 0.001 {"}55.06 173.06 0.001 {"}54.733 174 0.001 {"}54.564 174.564 0.001 {"}54.424 175.576 0.001 {"}54.325 176 0.001 {"}54.242 176.242 0.001 {"}54 177.964 0.001 {"}53.99 177.99 0.001 {"}53.987 178 0.001 {"}53.979 178.021 0.001 {"}53.318 179.318 0.001 {"}53.131 180 0.001 {"}P -53.131 180 0.001 {"}-52.765 179.235 0.001 {"}-52.668 178.668 0.001 {"}-52.459 178 0.001 {"}-52.297 177.703 0.001 {"}-52.008 176.008 0.001 {"}-52.005 176 0.001 {"}-52.003 175.997 0.001 {"}-52 175.986 0.001 {"}-51.084 174.916 0.001 {"}-50.676 174 0.001 {"}-50.413 173.587 0.001 {"}-50.009 172.009 0.001 {"}-50.006 172 0.001 {"}-50.003 171.997 0.001 {"}-50 171.986 0.001 {"}-49.051 170.949 0.001 {"}-48.633 170 0.001 {"}-48.398 169.602 0.001 {"}-48.01 168.01 0.001 {"}-48.006 168 0.001 {"}-48.004 167.996 0.001 {"}-48 167.984 0.001 {"}-47.094 166.906 0.001 {"}-46.722 166 0.001 {"}-46.491 165.509 0.001 {"}-46.235 164.235 0.001 {"}-46.159 164 0.001 {"}-46.102 163.898 0.001 {"}-46 163.497 0.001 {"}-45.361 162.639 0.001 {"}-45.082 162 0.001 {"}-44.663 161.337 0.001 {"}-44.46 160.46 0.001 {"}-44.284 160 0.001 {"}-44.179 159.821 0.001 {"}-44 159.278 0.001 {"}-43.429 158.571 0.001 {"}-43.172 158 0.001 {"}-42.732 157.268 0.001 {"}-42.575 156.575 0.001 {"}-42.36 156 0.001 {"}-42.232 155.768 0.001 {"}-42 154.781 0.001 {"}-41.693 154.307 0.001 {"}-41.562 154 0.001 {"}-40.888 153.112 0.001 {"}-40.805 152.805 0.001 {"}-40.46 152 0.001 {"}-40.295 151.705 0.001 {"}-40 150.301 0.001 {"}-39.883 150.117 0.001 {"}-39.825 150 0.001 {"}-38.932 149.068 0.001 {"}-38.865 148.865 0.001 {"}-38.439 148 0.001 {"}-38.273 147.727 0.001 {"}-38 146.791 0.001 {"}-37.645 146.355 0.001 {"}-37.429 146 0.001 {"}-36.678 145.322 0.001 {"}-36.242 144.242 0.001 {"}-36.108 144 0.001 {"}-36.061 143.939 0.001 {"}-36 143.806 0.001 {"}-35.12 142.88 0.001 {"}-34.65 142 0.001 {"}-34.391 141.609 0.001 {"}-34 140.309 0.001 {"}-33.872 140.128 0.001 {"}-33.803 140 0.001 {"}-32.914 139.086 0.001 {"}-32.829 138.829 0.001 {"}-32.418 138 0.001 {"}-32.28 137.72 0.001 {"}-32 136.709 0.001 {"}-31.699 136.301 0.001 {"}-31.557 136 0.001 {"}-30.918 135.082 0.001 {"}-30.867 134.867 0.001 {"}-30.522 134 0.001 {"}-30.403 133.597 0.001 {"}-30.128 132.128 0.001 {"}-30.096 132 0.001 {"}-30.082 131.918 0.001 {"}-30 131.068 0.001 {"}-29.792 130.208 0.001 {"}-29.749 130 0.001 {"}-29.705 129.705 0.001 {"}-29.483 128.517 0.001 {"}-29.414 128 0.001 {"}-29.414 127.414 0.001 {"}-29.414 126.586 0.001 {"}-29.414 126 0.001 {"}-29.462 125.462 0.001 {"}-29.655 124.345 0.001 {"}-29.691 124 0.001 {"}-29.726 123.726 0.001 {"}-30 122.147 0.001 {"}-30.01 122.01 0.001 {"}-30.011 122 0.001 {"}-30.015 121.985 0.001 {"}-30.314 120.314 0.001 {"}-30.409 120 0.001 {"}-30.651 119.349 0.001 {"}-30.759 118.759 0.001 {"}-31.286 118 0.001 {"}-31.514 117.514 0.001 {"}-32 116.784 0.001 {"}-32.177 116.177 0.001 {"}-32.282 116 0.001 {"}-32.672 115.328 0.001 {"}-32.867 114.867 0.001 {"}-33.976 114 0.001 {"}-33.986 113.986 0.001 {"}-34 113.973 0.001 {"}-34.661 112.661 0.001 {"}-35.741 112 0.001 {"}-35.861 111.861 0.001 {"}-36 111.748 0.001 {"}-36.687 110.687 0.001 {"}-37.959 110.041 0.001 {"}-38 110.014 0.001 {"}-38.008 110.008 0.001 {"}-38.021 110 0.001 {"}-39.032 109.032 0.001 {"}-40 108.572 0.001 {"}-40.361 108.361 0.001 {"}-41.506 108 0.001 {"}-41.784 107.784 0.001 {"}-42 107.685 0.001 {"}-42.926 106.926 0.001 {"}-43.123 106.877 0.001 {"}-44 106.502 0.001 {"}-44.353 106.353 0.001 {"}-45.964 106 0.001 {"}-45.987 105.987 0.001 {"}-46 105.982 0.001 {"}-46.055 105.945 0.001 {"}-47.133 105.133 0.001 {"}-48 104.779 0.001 {"}-48.504 104.504 0.001 {"}-49.816 104.184 0.001 {"}-50 104.117 0.001 {"}-50.075 104.075 0.001 {"}-50.299 104 0.001 {"}-51.263 103.263 0.001 {"}-52 102.9 0.001 {"}-52.521 102.521 0.001 {"}-53.98 102.02 0.001 {"}-54 102.011 0.001 {"}-54.006 102.006 0.001 {"}-54.019 102 0.001 {"}-55.022 101.022 0.001 {"}-56 100.508 0.001 {"}-56.305 100.305 0.001 {"}-56.98 100 0.001 {"}-57.471 99.471 0.001 {"}-58 99.089 0.001 {"}-58.487 98.487 0.001 {"}-59.347 98 0.001 {"}-59.635 97.635 0.001 {"}-60 97.311 0.001 {"}-60.502 96.502 0.001 {"}-61.179 96 0.001 {"}-61.499 95.499 0.001 {"}-62 94.941 0.001 {"}-62.299 94.299 0.001 {"}-62.551 94 0.001 {"}-63.063 93.063 0.001 {"}-64 92.03 0.001 {"}-64.01 92.01 0.001 {"}-64.016 92 0.001 {"}-64.033 91.967 0.001 {"}-64.599 90.599 0.001 {"}-65.066 90 0.001 {"}-65.305 89.305 0.001 {"}-65.743 88.257 0.001 {"}-65.841 88 0.001 {"}-65.871 87.871 0.001 {"}-66 87.318 0.001 {"}-66.127 86.127 0.001 {"}-66.142 86 0.001 {"}-66.148 85.852 0.001 {"}-66.264 84.264 0.001 {"}-66.275 84 0.001 {"}-66.264 83.736 0.001 {"}-66.264 82.264 0.001 {"}-66.254 82 0.001 {"}-66.233 81.767 0.001 {"}-66.145 80.145 0.001 {"}-66.133 80 0.001 {"}-66.12 79.88 0.001 {"}-66.028 78.028 0.001 {"}-66.025 78 0.001 {"}-66.023 77.977 0.001 {"}-66 76.411 0.001 {"}-65.986 76.014 0.001 {"}-65.986 76 0.001 {"}-65.985 75.985 0.001 {"}-65.837 74.163 0.001 {"}-65.831 74 0.001 {"}-65.824 73.824 0.001 {"}-65.709 72.291 0.001 {"}-65.698 72 0.001 {"}-65.692 71.692 0.001 {"}-65.635 70.365 0.001 {"}-65.627 70 0.001 {"}-65.627 69.627 0.001 {"}-65.579 68.421 0.001 {"}-65.579 68 0.001 {"}-65.579 67.579 0.001 {"}-65.579 66.421 0.001 {"}-65.579 66 0.001 {"}-65.568 65.568 0.001 {"}-65.554 64.446 0.001 {"}-65.542 64 0.001 {"}-65.516 63.516 0.001 {"}-65.443 62.557 0.001 {"}-65.415 62 0.001 {"}-65.336 61.336 0.001 {"}-65.236 60.764 0.001 {"}-65.156 60 0.001 {"}-65.069 59.069 0.001 {"}-65.053 58.947 0.001 {"}-64.971 58 0.001 {"}-64.881 57.119 0.001 {"}-64.864 56.864 0.001 {"}-64.781 56 0.001 {"}-64.715 55.285 0.001 {"}-64.654 54.654 0.001 {"}-64.594 54 0.001 {"}-64.559 53.441 0.001 {"}-64.524 52.524 0.001 {"}-64.492 52 0.001 {"}-64.475 51.525 0.001 {"}-64.434 50.434 0.001 {"}-64.418 50 0.001 {"}-64.409 49.591 0.001 {"}-64.35 48.35 0.001 {"}-64.342 48 0.001 {"}-64.332 47.668 0.001 {"}-64.23 46.23 0.001 {"}-64.223 46 0.001 {"}-64.235 45.765 0.001 {"}-64.235 44.235 0.001 {"}-64.249 44 0.001 {"}-64.263 43.737 0.001 {"}-64.314 42.314 0.001 {"}-64.331 42 0.001 {"}-64.355 41.645 0.001 {"}-64.402 40.402 0.001 {"}-64.431 40 0.001 {"}-64.448 39.552 0.001 {"}-64.463 38.463 0.001 {"}-64.482 38 0.001 {"}-64.499 37.501 0.001 {"}-64.513 36.513 0.001 {"}-64.531 36 0.001 {"}-64.531 35.469 0.001 {"}-64.531 34.531 0.001 {"}-64.531 34 0.001 {"}-64.516 33.484 0.001 {"}-64.503 32.503 0.001 {"}-64.489 32 0.001 {"}-64.469 31.531 0.001 {"}-64.406 30.406 0.001 {"}-64.388 30 0.001 {"}-64.372 29.628 0.001 {"}-64.316 28.316 0.001 {"}-64.303 28 0.001 {"}-64.303 27.697 0.001 {"}-64.303 26.303 0.001 {"}-64.303 26 0.001 {"}-64.309 25.691 0.001 {"}-64.365 24.365 0.001 {"}-64.372 24 0.001 {"}-64.377 23.623 0.001 {"}-64.44 22.44 0.001 {"}-64.445 22 0.001 {"}-64.402 21.598 0.001 {"}-64.342 20.342 0.001 {"}-64.309 20 0.001 {"}-64.26 19.74 0.001 {"}-64.146 18.146 0.001 {"}-64.123 18 0.001 {"}-64.102 17.898 0.001 {"}-64 16.682 0.001 {"}-63.884 16.116 0.001 {"}-63.871 16 0.001 {"}-63.823 15.823 0.001 {"}-63.375 14.625 0.001 {"}-63.245 14 0.001 {"}-62.822 13.178 0.001 {"}-62.765 12.765 0.001 {"}-62.527 12 0.001 {"}-62.388 11.612 0.001 {"}-62.22 10.22 0.001 {"}-62.165 10 0.001 {"}-62.092 9.908 0.001 {"}-62 9.554 0.001 {"}-61.328 8.672 0.001 {"}-61.061 8 0.001 {"}-60.566 7.434 0.001 {"}-60.262 6.262 0.001 {"}-60.146 6 0.001 {"}-60.067 5.933 0.001 {"}-60 5.761 0.001 {"}-59.041 4.959 0.001 {"}-58.476 4 0.001 {"}-58.199 3.801 0.001 {"}-58 3.335 0.001 {"}-57.265 2.735 0.001 {"}-56.785 2 0.001 {"}-56.356 1.644 0.001 {"}-56 0.638 0.001 {"}-55.667 0.333 0.001 {"}-55.433 0 0.001 {"}-54.553 -0.553 0.001 {"}-54 -1.876 0.001 {"}-53.935 -1.935 0.001 {"}-53.888 -2 0.001 {"}-52.765 -2.765 0.001 {"}-52.435 -3.565 0.001 {"}-52.179 -4 0.001 {"}-52.078 -4.078 0.001 {"}-52 -4.254 0.001 {"}-51.084 -5.084 0.001 {"}-50.606 -6 0.001 {"}-50.34 -6.34 0.001 {"}-50 -7.691 0.001 {"}-49.869 -7.869 0.001 {"}-49.81 -8 0.001 {"}-48.948 -8.948 0.001 {"}-48.91 -9.09 0.001 {"}-48.501 -10 0.001 {"}-48.277 -10.277 0.001 {"}-48 -11.721 0.001 {"}-47.886 -11.886 0.001 {"}-47.84 -12 0.001 {"}-46.978 -12.978 0.001 {"}-46.962 -13.038 0.001 {"}-46.536 -14 0.001 {"}-46.32 -14.32 0.001 {"}-46 -15.981 0.001 {"}-45.992 -15.992 0.001 {"}-45.988 -16 0.001 {"}-45.795 -16.205 0.001 {"}-45.015 -17.015 0.001 {"}-44.554 -18 0.001 {"}-44.305 -18.305 0.001 {"}-44 -19.65 0.001 {"}-43.839 -19.839 0.001 {"}-43.753 -20 0.001 {"}-42.805 -20.805 0.001 {"}-42.649 -21.351 0.001 {"}-42.328 -22 0.001 {"}-42.168 -22.168 0.001 {"}-42 -22.76 0.001 {"}-41.417 -23.417 0.001 {"}-41.149 -24 0.001 {"}-40.683 -24.683 0.001 {"}-40.504 -25.496 0.001 {"}-40.308 -26 0.001 {"}-40.187 -26.187 0.001 {"}-40 -27.379 0.001 {"}-39.786 -27.786 0.001 {"}-39.715 -28 0.001 {"}-39.159 -28.841 0.001 {"}-39.022 -29.022 0.001 {"}-38.652 -30 0.001 {"}-38.439 -30.439 0.001 {"}-38.155 -31.845 0.001 {"}-38.103 -32 0.001 {"}-38.062 -32.062 0.001 {"}-38 -32.297 0.001 {"}-37.205 -33.205 0.001 {"}-36.814 -34 0.001 {"}-36.476 -34.476 0.001 {"}-36.031 -35.969 0.001 {"}-36.017 -36 0.001 {"}-36.009 -36.009 0.001 {"}-36 -36.034 0.001 {"}-35.47 -36.53 0.001 {"}-34.976 -36.976 0.001 {"}-34.95 -37.05 0.001 {"}-34.447 -38 0.001 {"}-34.255 -38.255 0.001 {"}-34 -39.108 0.001 {"}-33.59 -39.59 0.001 {"}-33.361 -40 0.001 {"}-32.707 -40.707 0.001 {"}-32.482 -41.518 0.001 {"}-32.261 -42 0.001 {"}-32.16 -42.16 0.001 {"}-32 -42.64 0.001 {"}-31.358 -43.358 0.001 {"}-31.053 -44 0.001 {"}-30.668 -44.668 0.001 {"}-30.487 -45.513 0.001 {"}-30.311 -46 0.001 {"}-30.227 -46.227 0.001 {"}-30 -47.224 0.001 {"}-29.692 -47.692 0.001 {"}-29.557 -48 0.001 {"}-28.98 -48.98 0.001 {"}-28.967 -49.033 0.001 {"}-28.604 -50 0.001 {"}-28.462 -50.462 0.001 {"}-28.176 -51.824 0.001 {"}-28.129 -52 0.001 {"}-28.113 -52.113 0.001 {"}-28 -53.318 0.001 {"}-27.875 -53.875 0.001 {"}-27.845 -54 0.001 {"}-27.811 -54.189 0.001 {"}-27.54 -55.54 0.001 {"}-27.46 -56 0.001 {"}-27.409 -56.591 0.001 {"}-27.344 -57.344 0.001 {"}-27.286 -58 0.001 {"}-27.316 -58.684 0.001 {"}-27.379 -59.379 0.001 {"}-27.409 -60 0.001 {"}-27.477 -60.523 0.001 {"}-27.72 -61.72 0.001 {"}-27.762 -62 0.001 {"}-27.81 -62.19 0.001 {"}-28 -62.802 0.001 {"}-28.142 -63.858 0.001 {"}-28.181 -64 0.001 {"}-28.321 -64.321 0.001 {"}-28.629 -65.371 0.001 {"}-29.097 -66 0.001 {"}-29.336 -66.664 0.001 {"}-30 -67.849 0.001 {"}-30.033 -67.967 0.001 {"}-30.052 -68 0.001 {"}-30.148 -68.148 0.001 {"}-30.744 -69.256 0.001 {"}-31.662 -70 0.001 {"}-31.815 -70.185 0.001 {"}-32 -70.349 0.001 {"}-32.652 -71.348 0.001 {"}-33.765 -72 0.001 {"}-33.88 -72.12 0.001 {"}-34 -72.213 0.001 {"}-34.805 -73.195 0.001 {"}-35.512 -73.512 0.001 {"}-36 -73.8 0.001 {"}-36.127 -73.873 0.001 {"}-36.549 -74 0.001 {"}-37.438 -74.562 0.001 {"}-38 -74.81 0.001 {"}-38.644 -75.356 0.001 {"}-39.682 -75.682 0.001 {"}-40 -75.831 0.001 {"}-40.131 -75.869 0.001 {"}-41.014 -76 0.001 {"}-41.749 -76.251 0.001 {"}-42 -76.329 0.001 {"}-42.625 -76.625 0.001 {"}-43.095 -76.905 0.001 {"}-44 -77.175 0.001 {"}-44.656 -77.344 0.001 {"}-45.433 -77.433 0.001 {"}-46 -77.549 0.001 {"}-46.372 -77.628 0.001 {"}-47.818 -77.818 0.001 {"}-48 -77.852 0.001 {"}-48.132 -77.868 0.001 {"}-49.883 -78 0.001 {"}-49.983 -78.017 0.001 {"}-50 -78.02 0.001 {"}-50.024 -78.024 0.001 {"}-51.721 -78.279 0.001 {"}-52 -78.329 0.001 {"}-52.407 -78.407 0.001 {"}-53.363 -78.637 0.001 {"}-54 -78.746 0.001 {"}-54.994 -79.006 0.001 {"}-55.007 -79.007 0.001 {"}-56 -79.2 0.001 {"}-56.655 -79.345 0.001 {"}-57.477 -79.477 0.001 {"}-58 -79.582 0.001 {"}-58.333 -79.667 0.001 {"}-59.979 -79.979 0.001 {"}-60 -79.984 0.001 {"}-60.013 -79.987 0.001 {"}-60.098 -80 0.001 {"}-61.504 -80.496 0.001 {"}-62 -80.634 0.001 {"}-62.762 -81.238 0.001 {"}-63.681 -81.681 0.001 {"}-64 -81.859 0.001 {"}-64.083 -81.917 0.001 {"}-64.287 -82 0.001 {"}-65.207 -82.793 0.001 {"}-66 -83.338 0.001 {"}-66.272 -83.728 0.001 {"}-66.756 -84 0.001 {"}-67.304 -84.696 0.001 {"}-68 -85.451 0.001 {"}-68.165 -85.835 0.001 {"}-68.321 -86 0.001 {"}-69.01 -86.99 0.001 {"}-70 -87.966 0.001 {"}-70.012 -87.988 0.001 {"}-70.021 -88 0.001 {"}-70.056 -88.056 0.001 {"}-70.713 -89.287 0.001 {"}-71.405 -90 0.001 {"}-71.566 -90.434 0.001 {"}-72 -91.225 0.001 {"}-72.164 -91.836 0.001 {"}-72.253 -92 0.001 {"}-72.488 -92.488 0.001 {"}-72.781 -93.219 0.001 {"}-73.294 -94 0.001 {"}-73.435 -94.565 0.001 {"}-74 -95.916 0.001 {"}-74.013 -95.987 0.001 {"}-74.017 -96 0.001 {"}-74.02 -96.02 0.001 {"}-74.187 -97.813 0.001 {"}-74.227 -98 0.001 {"}-74.293 -98.293 0.001 {"}-74.525 -99.475 0.001 {"}-74.651 -100 0.001 {"}-74.828 -100.828 0.001 {"}-74.861 -101.139 0.001 {"}-75.102 -102 0.001 {"}-75.154 -102.846 0.001 {"}-75.169 -103.169 0.001 {"}-75.219 -104 0.001 {"}-75.254 -104.746 0.001 {"}-75.294 -105.294 0.001 {"}-75.329 -106 0.001 {"}-75.361 -106.639 0.001 {"}-75.422 -107.422 0.001 {"}-75.452 -108 0.001 {"}-75.479 -108.521 0.001 {"}-75.564 -109.564 0.001 {"}-75.588 -110 0.001 {"}-75.588 -110.412 0.001 {"}-75.588 -111.588 0.001 {"}-75.588 -112 0.001 {"}-75.564 -112.436 0.001 {"}-75.479 -113.479 0.001 {"}-75.452 -114 0.001 {"}-75.396 -114.604 0.001 {"}-75.294 -115.294 0.001 {"}-75.237 -116 0.001 {"}-75.209 -116.791 0.001 {"}-75.191 -117.191 0.001 {"}-75.163 -118 0.001 {"}-74.914 -118.914 0.001 {"}-74.904 -119.096 0.001 {"}-74.729 -120 0.001 {"}-74.568 -120.568 0.001 {"}-74.382 -121.618 0.001 {"}-74.29 -122 0.001 {"}-74.229 -122.229 0.001 {"}-74.016 -123.984 0.001 {"}-74.013 -124 0.001 {"}-74.01 -124.01 0.001 {"}-74 -124.069 0.001 {"}-73.453 -125.453 0.001 {"}-73.286 -126 0.001 {"}-72.851 -126.851 0.001 {"}-72.814 -127.186 0.001 {"}-72.572 -128 0.001 {"}-72.414 -128.414 0.001 {"}-72.018 -129.982 0.001 {"}-72.012 -130 0.001 {"}-72.01 -130.01 0.001 {"}-72 -130.069 0.001 {"}-71.479 -131.479 0.001 {"}-71.33 -132 0.001 {"}-70.875 -132.875 0.001 {"}-70.841 -133.159 0.001 {"}-70.585 -134 0.001 {"}-70.437 -134.437 0.001 {"}-70.172 -135.828 0.001 {"}-70.126 -136 0.001 {"}-70.101 -136.101 0.001 {"}-70 -137.014 0.001 {"}-69.795 -137.795 0.001 {"}-69.753 -138 0.001 {"}-69.586 -138.414 0.001 {"}-69.191 -139.191 0.001 {"}-68.962 -140 0.001 {"}-68.723 -140.723 0.001 {"}-68.661 -141.339 0.001 {"}-68.506 -142 0.001 {"}-68.403 -142.403 0.001 {"}-68.212 -143.788 0.001 {"}-68.167 -144 0.001 {"}-68.13 -144.13 0.001 {"}-68 -145.008 0.001 {"}-67.731 -145.731 0.001 {"}-67.664 -146 0.001 {"}-67.256 -146.744 0.001 {"}-67.056 -147.056 0.001 {"}-66.715 -148 0.001 {"}-66.517 -148.517 0.001 {"}-66.359 -149.641 0.001 {"}-66.263 -150 0.001 {"}-66.17 -150.17 0.001 {"}-66 -150.858 0.001 {"}-65.534 -151.534 0.001 {"}-65.359 -152 0.001 {"}-64.772 -152.772 0.001 {"}-64.626 -153.374 0.001 {"}-64.367 -154 0.001 {"}-64.229 -154.229 0.001 {"}-64 -155.069 0.001 {"}-63.59 -155.59 0.001 {"}-63.397 -156 0.001 {"}-62.746 -156.746 0.001 {"}-62.537 -157.463 0.001 {"}-62.29 -158 0.001 {"}-62.179 -158.179 0.001 {"}-62 -158.687 0.001 {"}-61.392 -159.392 0.001 {"}-61.076 -160 0.001 {"}-60.653 -160.653 0.001 {"}-60.417 -161.583 0.001 {"}-60.251 -162 0.001 {"}-60.156 -162.156 0.001 {"}-60 -162.592 0.001 {"}-59.346 -163.346 0.001 {"}-59.039 -164 0.001 {"}-58.633 -164.633 0.001 {"}-58.355 -165.645 0.001 {"}-58.211 -166 0.001 {"}-58.135 -166.135 0.001 {"}-58 -166.566 0.001 {"}-57.383 -167.383 0.001 {"}-57.106 -168 0.001 {"}-56.704 -168.704 0.001 {"}-56.558 -169.442 0.001 {"}-56.361 -170 0.001 {"}-56.252 -170.252 0.001 {"}-56 -171.506 0.001 {"}-55.827 -171.827 0.001 {"}-55.757 -172 0.001 {"}-55.369 -172.631 0.001 {"}-55.06 -173.06 0.001 {"}-54.733 -174 0.001 {"}-54.564 -174.564 0.001 {"}-54.424 -175.576 0.001 {"}-54.325 -176 0.001 {"}-54.242 -176.242 0.001 {"}-54 -177.964 0.001 {"}-53.99 -177.99 0.001 {"}-53.987 -178 0.001 {"}-53.979 -178.021 0.001 {"}-53.318 -179.318 0.001 {"}-53.131 -180 0.001 @vectorlist {Favored} color= sky master= {Favored} {level 0.02}P 59.935 -180 0.02 {"}59.872 -179.872 0.02 {"}59.249 -178.751 0.02 {"}58.965 -178 0.02 {"}58.645 -177.355 0.02 {"}58.221 -176.221 0.02 {"}58.128 -176 0.02 {"}58.086 -175.914 0.02 {"}58 -175.68 0.02 {"}57.393 -174.607 0.02 {"}57.162 -174 0.02 {"}56.79 -173.21 0.02 {"}56.555 -172.555 0.02 {"}56.331 -172 0.02 {"}56.224 -171.776 0.02 {"}56 -171.122 0.02 {"}55.609 -170.391 0.02 {"}55.47 -170 0.02 {"}54.998 -169.002 0.02 {"}54.996 -168.996 0.02 {"}54.605 -168 0.02 {"}54.409 -167.591 0.02 {"}54 -166.388 0.02 {"}53.857 -166.143 0.02 {"}53.802 -166 0.02 {"}53.633 -165.633 0.02 {"}53.2 -164.8 0.02 {"}52.907 -164 0.02 {"}52.631 -163.369 0.02 {"}52.291 -162.291 0.02 {"}52.184 -162 0.02 {"}52.128 -161.872 0.02 {"}52 -161.454 0.02 {"}51.516 -160.484 0.02 {"}51.352 -160 0.02 {"}50.939 -159.061 0.02 {"}50.882 -158.882 0.02 {"}50.554 -158 0.02 {"}50.37 -157.63 0.02 {"}50 -156.542 0.02 {"}49.803 -156.197 0.02 {"}49.729 -156 0.02 {"}49.362 -155.362 0.02 {"}49.082 -154.918 0.02 {"}48.673 -154 0.02 {"}48.418 -153.582 0.02 {"}48 -152.579 0.02 {"}47.761 -152.239 0.02 {"}47.658 -152 0.02 {"}47.187 -151.187 0.02 {"}47.042 -150.958 0.02 {"}46.612 -150 0.02 {"}46.396 -149.604 0.02 {"}46 -148.505 0.02 {"}45.808 -148.192 0.02 {"}45.733 -148 0.02 {"}45.479 -147.479 0.02 {"}45.138 -146.862 0.02 {"}44.812 -146 0.02 {"}44.552 -145.448 0.02 {"}44.095 -144.095 0.02 {"}44.057 -144 0.02 {"}44.038 -143.962 0.02 {"}44 -143.852 0.02 {"}43.322 -142.678 0.02 {"}43.053 -142 0.02 {"}42.692 -141.308 0.02 {"}42.318 -140.318 0.02 {"}42.181 -140 0.02 {"}42.12 -139.88 0.02 {"}42 -139.56 0.02 {"}41.401 -138.599 0.02 {"}41.146 -138 0.02 {"}40.791 -137.209 0.02 {"}40.583 -136.583 0.02 {"}40.36 -136 0.02 {"}40.272 -135.728 0.02 {"}40 -134.66 0.02 {"}39.8 -134.2 0.02 {"}39.736 -134 0.02 {"}39.642 -133.642 0.02 {"}39.345 -132.655 0.02 {"}39.191 -132 0.02 {"}39.048 -131.048 0.02 {"}39.034 -130.966 0.02 {"}38.893 -130 0.02 {"}38.877 -129.123 0.02 {"}38.867 -128.867 0.02 {"}38.85 -128 0.02 {"}38.977 -127.023 0.02 {"}38.981 -126.981 0.02 {"}39.119 -126 0.02 {"}39.296 -125.296 0.02 {"}39.615 -124.385 0.02 {"}39.728 -124 0.02 {"}39.801 -123.801 0.02 {"}40 -123.404 0.02 {"}40.371 -122.371 0.02 {"}40.58 -122 0.02 {"}41.102 -121.102 0.02 {"}41.806 -120.194 0.02 {"}41.951 -120 0.02 {"}41.97 -119.97 0.02 {"}42 -119.941 0.02 {"}42.84 -118.84 0.02 {"}43.787 -118 0.02 {"}43.887 -117.887 0.02 {"}44 -117.802 0.02 {"}44.914 -116.914 0.02 {"}45.389 -116.611 0.02 {"}46 -116.19 0.02 {"}46.101 -116.101 0.02 {"}46.273 -116 0.02 {"}47.225 -115.225 0.02 {"}48 -114.781 0.02 {"}48.462 -114.462 0.02 {"}49.473 -114 0.02 {"}49.786 -113.786 0.02 {"}50 -113.684 0.02 {"}50.864 -113.136 0.02 {"}51.026 -113.026 0.02 {"}52 -112.54 0.02 {"}52.34 -112.34 0.02 {"}53.149 -112 0.02 {"}53.671 -111.671 0.02 {"}54 -111.525 0.02 {"}54.983 -110.983 0.02 {"}55.041 -110.959 0.02 {"}56 -110.523 0.02 {"}56.362 -110.362 0.02 {"}57.385 -110 0.02 {"}57.791 -109.791 0.02 {"}58 -109.712 0.02 {"}58.477 -109.523 0.02 {"}59.205 -109.205 0.02 {"}60 -108.928 0.02 {"}60.717 -108.717 0.02 {"}61.482 -108.518 0.02 {"}62 -108.374 0.02 {"}62.313 -108.313 0.02 {"}63.875 -108 0.02 {"}63.972 -107.972 0.02 {"}64 -107.965 0.02 {"}64.045 -107.955 0.02 {"}65.643 -107.643 0.02 {"}66 -107.565 0.02 {"}66.528 -107.472 0.02 {"}67.359 -107.359 0.02 {"}68 -107.235 0.02 {"}68.87 -107.13 0.02 {"}69.114 -107.114 0.02 {"}70 -106.994 0.02 {"}70.88 -106.88 0.02 {"}71.18 -106.82 0.02 {"}72 -106.7 0.02 {"}72.616 -106.616 0.02 {"}73.601 -106.399 0.02 {"}74 -106.336 0.02 {"}74.277 -106.277 0.02 {"}75.219 -106 0.02 {"}75.783 -105.783 0.02 {"}76 -105.672 0.02 {"}76.823 -105.177 0.02 {"}77.049 -105.049 0.02 {"}78 -104.363 0.02 {"}78.202 -104.202 0.02 {"}78.422 -104 0.02 {"}79.158 -103.158 0.02 {"}80 -102.056 0.02 {"}80.024 -102.024 0.02 {"}80.041 -102 0.02 {"}80.127 -101.873 0.02 {"}80.828 -100.828 0.02 {"}81.395 -100 0.02 {"}81.631 -99.631 0.02 {"}82 -99.085 0.02 {"}82.477 -98.477 0.02 {"}82.89 -98 0.02 {"}83.369 -97.369 0.02 {"}84 -96.608 0.02 {"}84.315 -96.315 0.02 {"}84.752 -96 0.02 {"}85.466 -95.466 0.02 {"}86 -95.138 0.02 {"}86.843 -94.843 0.02 {"}87.29 -94.71 0.02 {"}88 -94.48 0.02 {"}88.487 -94.487 0.02 {"}89.441 -94.559 0.02 {"}90 -94.565 0.02 {"}90.804 -94.804 0.02 {"}91.099 -94.901 0.02 {"}92 -95.145 0.02 {"}92.619 -95.381 0.02 {"}93.801 -95.801 0.02 {"}94 -95.874 0.02 {"}94.079 -95.921 0.02 {"}94.218 -96 0.02 {"}95.384 -96.616 0.02 {"}96 -96.916 0.02 {"}96.719 -97.281 0.02 {"}97.871 -97.871 0.02 {"}98 -97.937 0.02 {"}98.039 -97.961 0.02 {"}98.103 -98 0.02 {"}99.298 -98.702 0.02 {"}100 -99.105 0.02 {"}100.565 -99.435 0.02 {"}101.561 -100 0.02 {"}101.844 -100.156 0.02 {"}102 -100.245 0.02 {"}102.62 -100.62 0.02 {"}103.095 -100.905 0.02 {"}104 -101.468 0.02 {"}104.324 -101.676 0.02 {"}104.795 -102 0.02 {"}105.527 -102.473 0.02 {"}106 -102.782 0.02 {"}106.742 -103.258 0.02 {"}107.862 -104 0.02 {"}107.948 -104.052 0.02 {"}108 -104.088 0.02 {"}108.291 -104.291 0.02 {"}109.129 -104.871 0.02 {"}110 -105.496 0.02 {"}110.297 -105.703 0.02 {"}110.679 -106 0.02 {"}111.47 -106.53 0.02 {"}112 -106.898 0.02 {"}112.676 -107.324 0.02 {"}113.7 -108 0.02 {"}113.891 -108.109 0.02 {"}114 -108.18 0.02 {"}114.457 -108.457 0.02 {"}115.139 -108.861 0.02 {"}116 -109.419 0.02 {"}116.365 -109.635 0.02 {"}116.971 -110 0.02 {"}117.668 -110.332 0.02 {"}118 -110.503 0.02 {"}118.948 -110.948 0.02 {"}119.02 -110.98 0.02 {"}120 -111.466 0.02 {"}120.362 -111.638 0.02 {"}121.115 -112 0.02 {"}121.758 -112.242 0.02 {"}122 -112.344 0.02 {"}122.59 -112.59 0.02 {"}123.177 -112.823 0.02 {"}124 -113.191 0.02 {"}124.559 -113.441 0.02 {"}125.704 -114 0.02 {"}125.915 -114.085 0.02 {"}126 -114.123 0.02 {"}126.223 -114.223 0.02 {"}127.322 -114.678 0.02 {"}128 -115.021 0.02 {"}128.664 -115.336 0.02 {"}129.882 -116 0.02 {"}129.962 -116.038 0.02 {"}130 -116.059 0.02 {"}130.124 -116.124 0.02 {"}131.3 -116.7 0.02 {"}132 -117.115 0.02 {"}132.581 -117.419 0.02 {"}133.562 -118 0.02 {"}133.854 -118.146 0.02 {"}134 -118.233 0.02 {"}134.488 -118.488 0.02 {"}135.173 -118.827 0.02 {"}136 -119.308 0.02 {"}136.457 -119.543 0.02 {"}137.246 -120 0.02 {"}137.757 -120.243 0.02 {"}138 -120.38 0.02 {"}138.773 -120.773 0.02 {"}139.08 -120.92 0.02 {"}140 -121.446 0.02 {"}140.367 -121.633 0.02 {"}141.032 -122 0.02 {"}141.706 -122.294 0.02 {"}142 -122.443 0.02 {"}142.782 -122.782 0.02 {"}143.092 -122.908 0.02 {"}144 -123.341 0.02 {"}144.468 -123.532 0.02 {"}145.522 -124 0.02 {"}145.87 -124.13 0.02 {"}146 -124.187 0.02 {"}146.301 -124.301 0.02 {"}147.327 -124.673 0.02 {"}148 -124.938 0.02 {"}148.795 -125.205 0.02 {"}149.445 -125.445 0.02 {"}150 -125.641 0.02 {"}150.281 -125.719 0.02 {"}151.156 -126 0.02 {"}151.828 -126.172 0.02 {"}152 -126.227 0.02 {"}152.313 -126.313 0.02 {"}153.41 -126.59 0.02 {"}154 -126.764 0.02 {"}154.96 -127.04 0.02 {"}155.083 -127.083 0.02 {"}156 -127.375 0.02 {"}156.487 -127.513 0.02 {"}157.961 -128 0.02 {"}157.992 -128.008 0.02 {"}158 -128.011 0.02 {"}158.015 -128.015 0.02 {"}159.581 -128.419 0.02 {"}160 -128.551 0.02 {"}160.722 -128.722 0.02 {"}161.185 -128.815 0.02 {"}162 -129.026 0.02 {"}162.81 -129.19 0.02 {"}163.315 -129.315 0.02 {"}164 -129.465 0.02 {"}164.465 -129.535 0.02 {"}165.718 -129.718 0.02 {"}166 -129.76 0.02 {"}166.21 -129.79 0.02 {"}167.823 -130 0.02 {"}167.984 -130.016 0.02 {"}168 -130.017 0.02 {"}168.021 -130.021 0.02 {"}169.729 -130.271 0.02 {"}170 -130.314 0.02 {"}170.394 -130.394 0.02 {"}171.41 -130.59 0.02 {"}172 -130.714 0.02 {"}172.972 -130.972 0.02 {"}173.018 -130.982 0.02 {"}174 -131.265 0.02 {"}174.559 -131.441 0.02 {"}175.932 -131.932 0.02 {"}176 -131.955 0.02 {"}176.033 -131.967 0.02 {"}176.11 -132 0.02 {"}177.521 -132.479 0.02 {"}178 -132.677 0.02 {"}178.986 -133.014 0.02 {"}179.039 -133.039 0.02 {"}180 -133.432 0.02 {"}P -180 -133.432 0.02 {"}-179.573 -133.573 0.02 {"}-178.46 -134 0.02 {"}-178.106 -134.106 0.02 {"}-178 -134.152 0.02 {"}-177.777 -134.223 0.02 {"}-176.579 -134.579 0.02 {"}-176 -134.778 0.02 {"}-175.02 -135.02 0.02 {"}-174.961 -135.039 0.02 {"}-174 -135.31 0.02 {"}-173.42 -135.42 0.02 {"}-172.337 -135.663 0.02 {"}-172 -135.731 0.02 {"}-171.766 -135.766 0.02 {"}-170.14 -136 0.02 {"}-170.015 -136.015 0.02 {"}-170 -136.017 0.02 {"}-169.982 -136.018 0.02 {"}-168.172 -136.172 0.02 {"}-168 -136.186 0.02 {"}-167.796 -136.204 0.02 {"}-166.331 -136.331 0.02 {"}-166 -136.36 0.02 {"}-165.62 -136.38 0.02 {"}-164.457 -136.457 0.02 {"}-164 -136.481 0.02 {"}-163.521 -136.479 0.02 {"}-162.484 -136.484 0.02 {"}-162 -136.482 0.02 {"}-161.554 -136.446 0.02 {"}-160.354 -136.354 0.02 {"}-160 -136.326 0.02 {"}-159.711 -136.289 0.02 {"}-158.035 -136.035 0.02 {"}-158 -136.03 0.02 {"}-157.975 -136.025 0.02 {"}-157.857 -136 0.02 {"}-156.362 -135.638 0.02 {"}-156 -135.536 0.02 {"}-155.26 -135.26 0.02 {"}-154.878 -135.122 0.02 {"}-154 -134.785 0.02 {"}-153.479 -134.521 0.02 {"}-152.5 -134 0.02 {"}-152.195 -133.805 0.02 {"}-152 -133.679 0.02 {"}-151.014 -132.986 0.02 {"}-150.916 -132.916 0.02 {"}-150 -132.258 0.02 {"}-149.85 -132.15 0.02 {"}-149.637 -132 0.02 {"}-148.734 -131.266 0.02 {"}-148 -130.654 0.02 {"}-147.651 -130.349 0.02 {"}-147.226 -130 0.02 {"}-146.61 -129.39 0.02 {"}-146 -128.796 0.02 {"}-145.592 -128.408 0.02 {"}-145.123 -128 0.02 {"}-144.565 -127.435 0.02 {"}-144 -126.871 0.02 {"}-143.572 -126.428 0.02 {"}-143.102 -126 0.02 {"}-142.551 -125.449 0.02 {"}-142 -124.91 0.02 {"}-141.546 -124.454 0.02 {"}-141.035 -124 0.02 {"}-140.476 -123.524 0.02 {"}-140 -123.14 0.02 {"}-139.356 -122.644 0.02 {"}-138.488 -122 0.02 {"}-138.202 -121.798 0.02 {"}-138 -121.662 0.02 {"}-137.23 -121.23 0.02 {"}-136.934 -121.066 0.02 {"}-136 -120.526 0.02 {"}-135.645 -120.355 0.02 {"}-134.864 -120 0.02 {"}-134.267 -119.733 0.02 {"}-134 -119.613 0.02 {"}-133.382 -119.382 0.02 {"}-132.821 -119.179 0.02 {"}-132 -118.859 0.02 {"}-131.389 -118.611 0.02 {"}-130.1 -118 0.02 {"}-130.033 -117.967 0.02 {"}-130 -117.951 0.02 {"}-129.902 -117.902 0.02 {"}-128.668 -117.332 0.02 {"}-128 -116.949 0.02 {"}-127.46 -116.54 0.02 {"}-126.789 -116 0.02 {"}-126.38 -115.62 0.02 {"}-126 -115.237 0.02 {"}-125.424 -114.576 0.02 {"}-124.975 -114 0.02 {"}-124.597 -113.403 0.02 {"}-124 -112.32 0.02 {"}-123.89 -112.11 0.02 {"}-123.831 -112 0.02 {"}-123.65 -111.65 0.02 {"}-123.193 -110.807 0.02 {"}-122.816 -110 0.02 {"}-122.57 -109.43 0.02 {"}-122 -108.039 0.02 {"}-121.989 -108.011 0.02 {"}-121.984 -108 0.02 {"}-121.97 -107.97 0.02 {"}-121.339 -106.661 0.02 {"}-121.032 -106 0.02 {"}-120.715 -105.285 0.02 {"}-120.306 -104.306 0.02 {"}-120.175 -104 0.02 {"}-120.117 -103.883 0.02 {"}-120 -103.646 0.02 {"}-119.441 -102.559 0.02 {"}-119.152 -102 0.02 {"}-118.766 -101.234 0.02 {"}-118.341 -100.341 0.02 {"}-118.175 -100 0.02 {"}-118.113 -99.887 0.02 {"}-118 -99.686 0.02 {"}-117.35 -98.65 0.02 {"}-116.951 -98 0.02 {"}-116.609 -97.391 0.02 {"}-116 -96.22 0.02 {"}-115.918 -96.082 0.02 {"}-115.865 -96 0.02 {"}-115.432 -95.432 0.02 {"}-115.055 -94.945 0.02 {"}-114.41 -94 0.02 {"}-114.24 -93.76 0.02 {"}-114 -93.453 0.02 {"}-113.29 -92.71 0.02 {"}-112.673 -92 0.02 {"}-112.345 -91.655 0.02 {"}-112 -91.319 0.02 {"}-111.256 -90.744 0.02 {"}-110.389 -90 0.02 {"}-110.168 -89.832 0.02 {"}-110 -89.713 0.02 {"}-109.388 -89.388 0.02 {"}-108.866 -89.134 0.02 {"}-108 -88.574 0.02 {"}-107.587 -88.413 0.02 {"}-106.643 -88 0.02 {"}-106.164 -87.836 0.02 {"}-106 -87.775 0.02 {"}-105.719 -87.719 0.02 {"}-104.454 -87.546 0.02 {"}-104 -87.438 0.02 {"}-103.457 -87.457 0.02 {"}-102.426 -87.574 0.02 {"}-102 -87.591 0.02 {"}-101.682 -87.682 0.02 {"}-100.848 -88 0.02 {"}-100.321 -88.321 0.02 {"}-100 -88.639 0.02 {"}-99.514 -89.514 0.02 {"}-99.304 -90 0.02 {"}-98.991 -90.991 0.02 {"}-98.986 -91.014 0.02 {"}-98.714 -92 0.02 {"}-98.607 -92.607 0.02 {"}-98.53 -93.47 0.02 {"}-98.45 -94 0.02 {"}-98.372 -94.372 0.02 {"}-98.198 -95.802 0.02 {"}-98.163 -96 0.02 {"}-98.125 -96.125 0.02 {"}-98 -96.751 0.02 {"}-97.815 -97.815 0.02 {"}-97.792 -98 0.02 {"}-97.725 -98.275 0.02 {"}-97.414 -99.414 0.02 {"}-97.283 -100 0.02 {"}-96.906 -100.906 0.02 {"}-96.798 -101.202 0.02 {"}-96.488 -102 0.02 {"}-96.322 -102.322 0.02 {"}-96 -103.018 0.02 {"}-95.708 -103.708 0.02 {"}-95.598 -104 0.02 {"}-95.342 -104.658 0.02 {"}-95.14 -105.14 0.02 {"}-94.839 -106 0.02 {"}-94.577 -106.577 0.02 {"}-94.015 -107.985 0.02 {"}-94.009 -108 0.02 {"}-94.006 -108.006 0.02 {"}-94 -108.023 0.02 {"}-93.485 -109.485 0.02 {"}-93.328 -110 0.02 {"}-92.985 -110.985 0.02 {"}-92.975 -111.025 0.02 {"}-92.676 -112 0.02 {"}-92.494 -112.494 0.02 {"}-92.01 -113.99 0.02 {"}-92.006 -114 0.02 {"}-92.005 -114.005 0.02 {"}-92 -114.02 0.02 {"}-91.52 -115.52 0.02 {"}-91.387 -116 0.02 {"}-91.052 -116.948 0.02 {"}-91.024 -117.024 0.02 {"}-90.697 -118 0.02 {"}-90.491 -118.491 0.02 {"}-90 -119.841 0.02 {"}-89.955 -119.955 0.02 {"}-89.939 -120 0.02 {"}-89.884 -120.116 0.02 {"}-89.304 -121.304 0.02 {"}-88.983 -122 0.02 {"}-88.626 -122.626 0.02 {"}-88 -123.905 0.02 {"}-87.967 -123.967 0.02 {"}-87.952 -124 0.02 {"}-87.882 -124.118 0.02 {"}-87.216 -125.216 0.02 {"}-86.777 -126 0.02 {"}-86.48 -126.48 0.02 {"}-86 -127.436 0.02 {"}-85.8 -127.8 0.02 {"}-85.705 -128 0.02 {"}-85.291 -128.709 0.02 {"}-85.07 -129.07 0.02 {"}-84.591 -130 0.02 {"}-84.381 -130.381 0.02 {"}-84 -131.239 0.02 {"}-83.743 -131.743 0.02 {"}-83.632 -132 0.02 {"}-83.191 -132.809 0.02 {"}-83.052 -133.052 0.02 {"}-82.593 -134 0.02 {"}-82.384 -134.384 0.02 {"}-82 -135.239 0.02 {"}-81.734 -135.734 0.02 {"}-81.616 -136 0.02 {"}-81.087 -136.913 0.02 {"}-81.021 -137.021 0.02 {"}-80.526 -138 0.02 {"}-80.336 -138.336 0.02 {"}-80 -139.067 0.02 {"}-79.664 -139.664 0.02 {"}-79.513 -140 0.02 {"}-78.987 -140.987 0.02 {"}-78.967 -141.033 0.02 {"}-78.512 -142 0.02 {"}-78.336 -142.336 0.02 {"}-78 -143.222 0.02 {"}-77.749 -143.749 0.02 {"}-77.659 -144 0.02 {"}-77.309 -144.691 0.02 {"}-77.09 -145.09 0.02 {"}-76.701 -146 0.02 {"}-76.444 -146.444 0.02 {"}-76 -147.487 0.02 {"}-75.814 -147.814 0.02 {"}-75.741 -148 0.02 {"}-75.338 -148.662 0.02 {"}-75.072 -149.072 0.02 {"}-74.611 -150 0.02 {"}-74.367 -150.367 0.02 {"}-74 -151.093 0.02 {"}-73.629 -151.629 0.02 {"}-73.455 -152 0.02 {"}-72.871 -152.871 0.02 {"}-72.611 -153.389 0.02 {"}-72.276 -154 0.02 {"}-72.165 -154.165 0.02 {"}-72 -154.494 0.02 {"}-71.384 -155.384 0.02 {"}-71.085 -156 0.02 {"}-70.673 -156.673 0.02 {"}-70.116 -157.884 0.02 {"}-70.057 -158 0.02 {"}-70.036 -158.036 0.02 {"}-70 -158.12 0.02 {"}-69.287 -159.287 0.02 {"}-68.975 -160 0.02 {"}-68.636 -160.636 0.02 {"}-68.163 -161.837 0.02 {"}-68.09 -162 0.02 {"}-68.059 -162.059 0.02 {"}-68 -162.21 0.02 {"}-67.357 -163.357 0.02 {"}-67.11 -164 0.02 {"}-66.752 -164.752 0.02 {"}-66.477 -165.523 0.02 {"}-66.284 -166 0.02 {"}-66.192 -166.192 0.02 {"}-66 -166.734 0.02 {"}-65.547 -167.547 0.02 {"}-65.372 -168 0.02 {"}-64.899 -168.899 0.02 {"}-64.77 -169.23 0.02 {"}-64.432 -170 0.02 {"}-64.281 -170.281 0.02 {"}-64 -170.992 0.02 {"}-63.615 -171.615 0.02 {"}-63.457 -172 0.02 {"}-62.933 -172.933 0.02 {"}-62.85 -173.15 0.02 {"}-62.471 -174 0.02 {"}-62.306 -174.306 0.02 {"}-62 -175.106 0.02 {"}-61.667 -175.667 0.02 {"}-61.544 -176 0.02 {"}-61.151 -176.849 0.02 {"}-61.048 -177.048 0.02 {"}-60.692 -178 0.02 {"}-60.471 -178.471 0.02 {"}-60 -179.866 0.02 {"}-59.951 -179.951 0.02 {"}-59.935 -180 0.02 {"}P 74.997 66 0.02 {"}75.744 65.744 0.02 {"}76 65.608 0.02 {"}76.718 65.282 0.02 {"}77.128 65.128 0.02 {"}78 64.601 0.02 {"}78.394 64.394 0.02 {"}78.921 64 0.02 {"}79.591 63.591 0.02 {"}80 63.238 0.02 {"}80.734 62.734 0.02 {"}81.54 62 0.02 {"}81.811 61.811 0.02 {"}82 61.631 0.02 {"}82.922 60.922 0.02 {"}83.915 60 0.02 {"}83.966 59.966 0.02 {"}84 59.936 0.02 {"}84.229 59.771 0.02 {"}85.136 59.136 0.02 {"}86 58.415 0.02 {"}86.231 58.231 0.02 {"}86.478 58 0.02 {"}87.386 57.386 0.02 {"}88 56.91 0.02 {"}88.519 56.519 0.02 {"}89.113 56 0.02 {"}89.656 55.656 0.02 {"}90 55.387 0.02 {"}90.798 54.798 0.02 {"}91.701 54 0.02 {"}91.872 53.872 0.02 {"}92 53.758 0.02 {"}92.95 52.95 0.02 {"}93.918 52 0.02 {"}93.963 51.963 0.02 {"}94 51.925 0.02 {"}94.986 51.014 0.02 {"}95.001 51.001 0.02 {"}95.014 50.986 0.02 {"}95.925 50 0.02 {"}95.963 49.963 0.02 {"}96 49.921 0.02 {"}96.963 48.963 0.02 {"}97.825 48 0.02 {"}97.913 47.913 0.02 {"}98 47.815 0.02 {"}98.919 46.919 0.02 {"}99.766 46 0.02 {"}99.886 45.886 0.02 {"}100 45.763 0.02 {"}100.915 44.915 0.02 {"}101.808 44 0.02 {"}101.909 43.909 0.02 {"}102 43.817 0.02 {"}102.981 42.981 0.02 {"}103.582 42.418 0.02 {"}104 42.028 0.02 {"}104.015 42.015 0.02 {"}104.033 42 0.02 {"}105.119 41.119 0.02 {"}106 40.262 0.02 {"}106.138 40.138 0.02 {"}106.287 40 0.02 {"}107.223 39.223 0.02 {"}108 38.452 0.02 {"}108.229 38.229 0.02 {"}108.448 38 0.02 {"}109.246 37.246 0.02 {"}110 36.418 0.02 {"}110.204 36.204 0.02 {"}110.389 36 0.02 {"}111.223 35.223 0.02 {"}112 34.385 0.02 {"}112.193 34.193 0.02 {"}112.377 34 0.02 {"}113.276 33.276 0.02 {"}114 32.579 0.02 {"}114.315 32.315 0.02 {"}114.668 32 0.02 {"}115.457 31.457 0.02 {"}116 31.005 0.02 {"}116.567 30.567 0.02 {"}117.217 30 0.02 {"}117.671 29.671 0.02 {"}118 29.385 0.02 {"}118.795 28.795 0.02 {"}119.664 28 0.02 {"}119.851 27.851 0.02 {"}120 27.702 0.02 {"}120.921 26.921 0.02 {"}121.815 26 0.02 {"}121.91 25.91 0.02 {"}122 25.803 0.02 {"}122.884 24.884 0.02 {"}123.575 24 0.02 {"}123.768 23.768 0.02 {"}124 23.443 0.02 {"}124.669 22.669 0.02 {"}125.149 22 0.02 {"}125.508 21.508 0.02 {"}126 20.678 0.02 {"}126.283 20.283 0.02 {"}126.479 20 0.02 {"}127.115 19.115 0.02 {"}127.485 18.515 0.02 {"}127.814 18 0.02 {"}127.889 17.889 0.02 {"}128 17.704 0.02 {"}128.704 16.704 0.02 {"}129.14 16 0.02 {"}129.502 15.502 0.02 {"}130 14.642 0.02 {"}130.256 14.256 0.02 {"}130.415 14 0.02 {"}131.11 13.11 0.02 {"}131.493 12.507 0.02 {"}131.829 12 0.02 {"}131.908 11.908 0.02 {"}132 11.769 0.02 {"}132.771 10.771 0.02 {"}133.277 10 0.02 {"}133.604 9.604 0.02 {"}134 8.999 0.02 {"}134.429 8.429 0.02 {"}134.71 8 0.02 {"}135.277 7.277 0.02 {"}136 6.145 0.02 {"}136.062 6.062 0.02 {"}136.102 6 0.02 {"}136.375 5.625 0.02 {"}136.909 4.909 0.02 {"}137.487 4 0.02 {"}137.695 3.695 0.02 {"}138 3.2 0.02 {"}138.503 2.503 0.02 {"}138.833 2 0.02 {"}139.295 1.295 0.02 {"}140 0.087 0.02 {"}140.035 0.035 0.02 {"}140.056 0 0.02 {"}140.138 -0.138 0.02 {"}140.784 -1.216 0.02 {"}141.236 -2 0.02 {"}141.5 -2.5 0.02 {"}142 -3.544 0.02 {"}142.156 -3.844 0.02 {"}142.237 -4 0.02 {"}142.412 -4.412 0.02 {"}142.766 -5.234 0.02 {"}143.088 -6 0.02 {"}143.31 -6.69 0.02 {"}143.576 -7.576 0.02 {"}143.708 -8 0.02 {"}143.764 -8.236 0.02 {"}144 -9.295 0.02 {"}144.139 -9.861 0.02 {"}144.178 -10 0.02 {"}144.209 -10.209 0.02 {"}144.404 -11.596 0.02 {"}144.465 -12 0.02 {"}144.52 -12.52 0.02 {"}144.595 -13.405 0.02 {"}144.661 -14 0.02 {"}144.687 -14.687 0.02 {"}144.695 -15.305 0.02 {"}144.723 -16 0.02 {"}144.738 -16.738 0.02 {"}144.735 -17.265 0.02 {"}144.752 -18 0.02 {"}144.758 -18.758 0.02 {"}144.748 -19.252 0.02 {"}144.755 -20 0.02 {"}144.735 -20.735 0.02 {"}144.702 -21.298 0.02 {"}144.683 -22 0.02 {"}144.655 -22.655 0.02 {"}144.592 -23.408 0.02 {"}144.564 -24 0.02 {"}144.53 -24.53 0.02 {"}144.448 -25.552 0.02 {"}144.418 -26 0.02 {"}144.369 -26.369 0.02 {"}144.119 -27.881 0.02 {"}144.102 -28 0.02 {"}144.081 -28.081 0.02 {"}144 -28.355 0.02 {"}143.596 -29.596 0.02 {"}143.442 -30 0.02 {"}142.981 -30.981 0.02 {"}142.934 -31.066 0.02 {"}142.445 -32 0.02 {"}142.269 -32.269 0.02 {"}142 -32.619 0.02 {"}141.352 -33.352 0.02 {"}140.703 -34 0.02 {"}140.336 -34.336 0.02 {"}140 -34.582 0.02 {"}139.128 -35.128 0.02 {"}138.468 -35.532 0.02 {"}138 -35.82 0.02 {"}137.881 -35.881 0.02 {"}137.585 -36 0.02 {"}136.442 -36.442 0.02 {"}136 -36.586 0.02 {"}135.153 -36.847 0.02 {"}134.926 -36.926 0.02 {"}134 -37.181 0.02 {"}133.389 -37.389 0.02 {"}132.351 -37.649 0.02 {"}132 -37.753 0.02 {"}131.819 -37.819 0.02 {"}131.095 -38 0.02 {"}130.242 -38.242 0.02 {"}130 -38.296 0.02 {"}129.576 -38.424 0.02 {"}128.726 -38.726 0.02 {"}128 -38.914 0.02 {"}127.197 -39.197 0.02 {"}126.68 -39.32 0.02 {"}126 -39.522 0.02 {"}125.654 -39.654 0.02 {"}124.421 -40 0.02 {"}124.112 -40.112 0.02 {"}124 -40.142 0.02 {"}123.796 -40.204 0.02 {"}122.606 -40.606 0.02 {"}122 -40.773 0.02 {"}121.031 -41.031 0.02 {"}120.953 -41.047 0.02 {"}120 -41.276 0.02 {"}119.406 -41.406 0.02 {"}118.442 -41.558 0.02 {"}118 -41.645 0.02 {"}117.701 -41.701 0.02 {"}116.058 -41.942 0.02 {"}116 -41.952 0.02 {"}115.957 -41.957 0.02 {"}115.416 -42 0.02 {"}114.134 -42.134 0.02 {"}114 -42.146 0.02 {"}113.847 -42.153 0.02 {"}112.26 -42.26 0.02 {"}112 -42.272 0.02 {"}111.727 -42.273 0.02 {"}110.281 -42.281 0.02 {"}110 -42.281 0.02 {"}109.732 -42.268 0.02 {"}108.179 -42.179 0.02 {"}108 -42.171 0.02 {"}107.839 -42.161 0.02 {"}106.033 -42.033 0.02 {"}106 -42.031 0.02 {"}105.97 -42.03 0.02 {"}105.486 -42 0.02 {"}104.063 -41.937 0.02 {"}104 -41.933 0.02 {"}103.931 -41.931 0.02 {"}102.047 -41.953 0.02 {"}102 -41.951 0.02 {"}101.953 -41.953 0.02 {"}101.474 -42 0.02 {"}100.178 -42.178 0.02 {"}100 -42.214 0.02 {"}99.652 -42.348 0.02 {"}98.68 -42.68 0.02 {"}98 -42.982 0.02 {"}97.382 -43.382 0.02 {"}96.636 -44 0.02 {"}96.341 -44.341 0.02 {"}96 -44.816 0.02 {"}95.579 -45.579 0.02 {"}95.413 -46 0.02 {"}95.264 -46.736 0.02 {"}95.155 -47.155 0.02 {"}95.007 -48 0.02 {"}94.928 -48.928 0.02 {"}94.927 -49.073 0.02 {"}94.858 -50 0.02 {"}94.811 -50.811 0.02 {"}94.815 -51.185 0.02 {"}94.773 -52 0.02 {"}94.731 -52.731 0.02 {"}94.719 -53.281 0.02 {"}94.68 -54 0.02 {"}94.625 -54.625 0.02 {"}94.568 -55.432 0.02 {"}94.52 -56 0.02 {"}94.458 -56.458 0.02 {"}94.316 -57.684 0.02 {"}94.275 -58 0.02 {"}94.243 -58.243 0.02 {"}94.02 -59.98 0.02 {"}94.017 -60 0.02 {"}94.014 -60.014 0.02 {"}94 -60.083 0.02 {"}93.711 -61.711 0.02 {"}93.658 -62 0.02 {"}93.563 -62.437 0.02 {"}93.39 -63.39 0.02 {"}93.244 -64 0.02 {"}92.994 -64.994 0.02 {"}92.989 -65.011 0.02 {"}92.719 -66 0.02 {"}92.556 -66.556 0.02 {"}92.106 -67.894 0.02 {"}92.073 -68 0.02 {"}92.057 -68.057 0.02 {"}92 -68.221 0.02 {"}91.543 -69.543 0.02 {"}91.341 -70 0.02 {"}90.947 -70.947 0.02 {"}90.835 -71.165 0.02 {"}90.434 -72 0.02 {"}90.307 -72.307 0.02 {"}90 -72.947 0.02 {"}89.633 -73.633 0.02 {"}89.386 -74 0.02 {"}88.884 -74.884 0.02 {"}88.319 -75.681 0.02 {"}88.102 -76 0.02 {"}88.066 -76.066 0.02 {"}88 -76.16 0.02 {"}87.089 -77.089 0.02 {"}86.042 -78 0.02 {"}86.022 -78.022 0.02 {"}86 -78.04 0.02 {"}85.945 -78.055 0.02 {"}84.516 -78.516 0.02 {"}84 -78.638 0.02 {"}83.478 -78.522 0.02 {"}82.255 -78.255 0.02 {"}82 -78.199 0.02 {"}81.888 -78.112 0.02 {"}81.748 -78 0.02 {"}80.706 -77.294 0.02 {"}80 -76.797 0.02 {"}79.614 -76.386 0.02 {"}79.28 -76 0.02 {"}78.642 -75.358 0.02 {"}78 -74.617 0.02 {"}77.762 -74.238 0.02 {"}77.624 -74 0.02 {"}77.038 -73.038 0.02 {"}77.009 -72.991 0.02 {"}76.479 -72 0.02 {"}76.31 -71.69 0.02 {"}76 -70.982 0.02 {"}75.721 -70.279 0.02 {"}75.623 -70 0.02 {"}75.419 -69.419 0.02 {"}75.182 -68.818 0.02 {"}74.931 -68 0.02 {"}74.717 -67.283 0.02 {"}74.567 -66.567 0.02 {"}74.419 -66 0.02 {"}74.341 -65.659 0.02 {"}74.019 -64.019 0.02 {"}74.015 -64 0.02 {"}74.013 -63.987 0.02 {"}74 -63.897 0.02 {"}73.763 -62.237 0.02 {"}73.737 -62 0.02 {"}73.709 -61.709 0.02 {"}73.558 -60.442 0.02 {"}73.518 -60 0.02 {"}73.491 -59.491 0.02 {"}73.434 -58.566 0.02 {"}73.405 -58 0.02 {"}73.406 -57.406 0.02 {"}73.413 -56.587 0.02 {"}73.414 -56 0.02 {"}73.45 -55.45 0.02 {"}73.538 -54.462 0.02 {"}73.57 -54 0.02 {"}73.618 -53.618 0.02 {"}73.857 -52.143 0.02 {"}73.876 -52 0.02 {"}73.896 -51.896 0.02 {"}74 -51.498 0.02 {"}74.293 -50.293 0.02 {"}74.379 -50 0.02 {"}74.563 -49.437 0.02 {"}74.757 -48.757 0.02 {"}75.037 -48 0.02 {"}75.302 -47.302 0.02 {"}75.783 -46.217 0.02 {"}75.873 -46 0.02 {"}75.907 -45.907 0.02 {"}76 -45.698 0.02 {"}76.541 -44.541 0.02 {"}76.85 -44 0.02 {"}77.214 -43.214 0.02 {"}77.684 -42.316 0.02 {"}77.843 -42 0.02 {"}77.887 -41.887 0.02 {"}78 -41.605 0.02 {"}78.487 -40.487 0.02 {"}78.707 -40 0.02 {"}78.95 -39.05 0.02 {"}78.97 -38.97 0.02 {"}79.225 -38 0.02 {"}79.302 -37.302 0.02 {"}79.366 -36.634 0.02 {"}79.435 -36 0.02 {"}79.404 -35.404 0.02 {"}79.348 -34.652 0.02 {"}79.316 -34 0.02 {"}79.193 -33.193 0.02 {"}79.132 -32.868 0.02 {"}79.01 -32 0.02 {"}78.838 -31.162 0.02 {"}78.789 -30.789 0.02 {"}78.646 -30 0.02 {"}78.499 -29.501 0.02 {"}78.285 -28.285 0.02 {"}78.216 -28 0.02 {"}78.155 -27.845 0.02 {"}78 -27.234 0.02 {"}77.715 -26.285 0.02 {"}77.654 -26 0.02 {"}77.412 -25.412 0.02 {"}77.147 -24.853 0.02 {"}76.861 -24 0.02 {"}76.557 -23.443 0.02 {"}76.084 -22.084 0.02 {"}76.048 -22 0.02 {"}76.029 -21.971 0.02 {"}76 -21.906 0.02 {"}75.274 -20.726 0.02 {"}74.957 -20 0.02 {"}74.574 -19.426 0.02 {"}74 -18.093 0.02 {"}73.963 -18.037 0.02 {"}73.947 -18 0.02 {"}73.827 -17.827 0.02 {"}73.125 -16.875 0.02 {"}72.674 -16 0.02 {"}72.391 -15.609 0.02 {"}72 -14.746 0.02 {"}71.692 -14.308 0.02 {"}71.555 -14 0.02 {"}70.935 -13.065 0.02 {"}70.848 -12.848 0.02 {"}70.439 -12 0.02 {"}70.249 -11.751 0.02 {"}70 -11.197 0.02 {"}69.483 -10.517 0.02 {"}69.242 -10 0.02 {"}68.691 -9.309 0.02 {"}68.044 -8.044 0.02 {"}68.018 -8 0.02 {"}68.01 -7.99 0.02 {"}68 -7.97 0.02 {"}67.091 -6.909 0.02 {"}66.551 -6 0.02 {"}66.293 -5.707 0.02 {"}66 -5.186 0.02 {"}65.44 -4.56 0.02 {"}65.12 -4 0.02 {"}64.591 -3.409 0.02 {"}64 -2.392 0.02 {"}63.803 -2.197 0.02 {"}63.686 -2 0.02 {"}62.859 -1.141 0.02 {"}62.462 -0.462 0.02 {"}62.161 0 0.02 {"}62.08 0.08 0.02 {"}62 0.203 0.02 {"}61.086 1.086 0.02 {"}60.487 2 0.02 {"}60.242 2.242 0.02 {"}60 2.631 0.02 {"}59.303 3.303 0.02 {"}58.877 4 0.02 {"}58.452 4.452 0.02 {"}58 5.263 0.02 {"}57.631 5.631 0.02 {"}57.425 6 0.02 {"}56.763 6.763 0.02 {"}56.331 7.669 0.02 {"}56.143 8 0.02 {"}56.08 8.08 0.02 {"}56 8.24 0.02 {"}55.156 9.156 0.02 {"}54.684 10 0.02 {"}54.377 10.377 0.02 {"}54 11.197 0.02 {"}53.627 11.627 0.02 {"}53.443 12 0.02 {"}52.854 12.854 0.02 {"}52.682 13.318 0.02 {"}52.361 14 0.02 {"}52.215 14.215 0.02 {"}52 14.785 0.02 {"}51.491 15.491 0.02 {"}51.286 16 0.02 {"}50.789 16.789 0.02 {"}50.572 17.428 0.02 {"}50.321 18 0.02 {"}50.198 18.198 0.02 {"}50 18.713 0.02 {"}49.445 19.445 0.02 {"}49.207 20 0.02 {"}48.727 20.727 0.02 {"}48.392 21.608 0.02 {"}48.208 22 0.02 {"}48.131 22.131 0.02 {"}48 22.483 0.02 {"}47.364 23.364 0.02 {"}47.091 24 0.02 {"}46.692 24.692 0.02 {"}46.354 25.646 0.02 {"}46.201 26 0.02 {"}46.136 26.136 0.02 {"}46 26.571 0.02 {"}45.467 27.467 0.02 {"}45.272 28 0.02 {"}44.887 28.887 0.02 {"}44.799 29.201 0.02 {"}44.519 30 0.02 {"}44.367 30.367 0.02 {"}44 31.694 0.02 {"}43.894 31.894 0.02 {"}43.859 32 0.02 {"}43.765 32.235 0.02 {"}43.277 33.277 0.02 {"}43.045 34 0.02 {"}42.754 34.754 0.02 {"}42.549 35.451 0.02 {"}42.363 36 0.02 {"}42.257 36.257 0.02 {"}42 37.065 0.02 {"}41.67 37.67 0.02 {"}41.549 38 0.02 {"}41.152 38.848 0.02 {"}41.05 39.05 0.02 {"}40.666 40 0.02 {"}40.459 40.459 0.02 {"}40 41.754 0.02 {"}39.909 41.909 0.02 {"}39.873 42 0.02 {"}39.785 42.215 0.02 {"}39.292 43.292 0.02 {"}39.047 44 0.02 {"}38.806 44.806 0.02 {"}38.677 45.323 0.02 {"}38.489 46 0.02 {"}38.409 46.409 0.02 {"}38.163 47.837 0.02 {"}38.133 48 0.02 {"}38.123 48.123 0.02 {"}38 49.311 0.02 {"}37.908 49.908 0.02 {"}37.896 50 0.02 {"}37.892 50.108 0.02 {"}37.862 51.862 0.02 {"}37.856 52 0.02 {"}37.863 52.137 0.02 {"}38 53.56 0.02 {"}38.029 53.971 0.02 {"}38.034 54 0.02 {"}38.044 54.044 0.02 {"}38.318 55.682 0.02 {"}38.405 56 0.02 {"}38.593 56.593 0.02 {"}38.755 57.245 0.02 {"}39.049 58 0.02 {"}39.335 58.665 0.02 {"}40 59.865 0.02 {"}40.043 59.957 0.02 {"}40.072 60 0.02 {"}40.217 60.217 0.02 {"}40.819 61.181 0.02 {"}41.52 62 0.02 {"}41.74 62.26 0.02 {"}42 62.505 0.02 {"}42.72 63.28 0.02 {"}43.679 64 0.02 {"}43.854 64.146 0.02 {"}44 64.236 0.02 {"}44.83 64.83 0.02 {"}45.024 64.976 0.02 {"}46 65.528 0.02 {"}46.297 65.703 0.02 {"}47.033 66 0.02 {"}47.68 66.32 0.02 {"}48 66.432 0.02 {"}48.682 66.682 0.02 {"}49.131 66.869 0.02 {"}50 67.14 0.02 {"}50.698 67.302 0.02 {"}51.418 67.418 0.02 {"}52 67.538 0.02 {"}52.41 67.59 0.02 {"}53.706 67.706 0.02 {"}54 67.74 0.02 {"}54.247 67.753 0.02 {"}55.796 67.796 0.02 {"}56 67.806 0.02 {"}56.198 67.802 0.02 {"}57.793 67.793 0.02 {"}58 67.789 0.02 {"}58.223 67.777 0.02 {"}59.743 67.743 0.02 {"}60 67.729 0.02 {"}60.291 67.709 0.02 {"}61.678 67.678 0.02 {"}62 67.654 0.02 {"}62.379 67.621 0.02 {"}63.606 67.606 0.02 {"}64 67.566 0.02 {"}64.459 67.541 0.02 {"}65.535 67.535 0.02 {"}66 67.506 0.02 {"}66.54 67.46 0.02 {"}67.442 67.442 0.02 {"}68 67.387 0.02 {"}68.69 67.31 0.02 {"}69.284 67.284 0.02 {"}70 67.191 0.02 {"}70.953 67.047 0.02 {"}71.04 67.04 0.02 {"}72 66.869 0.02 {"}72.719 66.719 0.02 {"}73.541 66.459 0.02 {"}74 66.345 0.02 {"}74.28 66.28 0.02 {"}74.997 66 0.02 {"}P -81.748 78 0.02 {"}-80.706 77.294 0.02 {"}-80 76.797 0.02 {"}-79.614 76.386 0.02 {"}-79.28 76 0.02 {"}-78.642 75.358 0.02 {"}-78 74.617 0.02 {"}-77.762 74.238 0.02 {"}-77.624 74 0.02 {"}-77.038 73.038 0.02 {"}-77.009 72.991 0.02 {"}-76.479 72 0.02 {"}-76.31 71.69 0.02 {"}-76 70.982 0.02 {"}-75.721 70.279 0.02 {"}-75.623 70 0.02 {"}-75.419 69.419 0.02 {"}-75.182 68.818 0.02 {"}-74.931 68 0.02 {"}-74.717 67.283 0.02 {"}-74.567 66.567 0.02 {"}-74.419 66 0.02 {"}-74.341 65.659 0.02 {"}-74.019 64.019 0.02 {"}-74.015 64 0.02 {"}-74.013 63.987 0.02 {"}-74 63.897 0.02 {"}-73.763 62.237 0.02 {"}-73.737 62 0.02 {"}-73.709 61.709 0.02 {"}-73.558 60.442 0.02 {"}-73.518 60 0.02 {"}-73.491 59.491 0.02 {"}-73.434 58.566 0.02 {"}-73.405 58 0.02 {"}-73.406 57.406 0.02 {"}-73.413 56.587 0.02 {"}-73.414 56 0.02 {"}-73.45 55.45 0.02 {"}-73.538 54.462 0.02 {"}-73.57 54 0.02 {"}-73.618 53.618 0.02 {"}-73.857 52.143 0.02 {"}-73.876 52 0.02 {"}-73.896 51.896 0.02 {"}-74 51.498 0.02 {"}-74.293 50.293 0.02 {"}-74.379 50 0.02 {"}-74.563 49.437 0.02 {"}-74.757 48.757 0.02 {"}-75.037 48 0.02 {"}-75.302 47.302 0.02 {"}-75.783 46.217 0.02 {"}-75.873 46 0.02 {"}-75.907 45.907 0.02 {"}-76 45.698 0.02 {"}-76.541 44.541 0.02 {"}-76.85 44 0.02 {"}-77.214 43.214 0.02 {"}-77.684 42.316 0.02 {"}-77.843 42 0.02 {"}-77.887 41.887 0.02 {"}-78 41.605 0.02 {"}-78.487 40.487 0.02 {"}-78.707 40 0.02 {"}-78.95 39.05 0.02 {"}-78.97 38.97 0.02 {"}-79.225 38 0.02 {"}-79.302 37.302 0.02 {"}-79.366 36.634 0.02 {"}-79.435 36 0.02 {"}-79.404 35.404 0.02 {"}-79.348 34.652 0.02 {"}-79.316 34 0.02 {"}-79.193 33.193 0.02 {"}-79.132 32.868 0.02 {"}-79.01 32 0.02 {"}-78.838 31.162 0.02 {"}-78.789 30.789 0.02 {"}-78.646 30 0.02 {"}-78.499 29.501 0.02 {"}-78.285 28.285 0.02 {"}-78.216 28 0.02 {"}-78.155 27.845 0.02 {"}-78 27.234 0.02 {"}-77.715 26.285 0.02 {"}-77.654 26 0.02 {"}-77.412 25.412 0.02 {"}-77.147 24.853 0.02 {"}-76.861 24 0.02 {"}-76.557 23.443 0.02 {"}-76.084 22.084 0.02 {"}-76.048 22 0.02 {"}-76.029 21.971 0.02 {"}-76 21.906 0.02 {"}-75.274 20.726 0.02 {"}-74.957 20 0.02 {"}-74.574 19.426 0.02 {"}-74 18.093 0.02 {"}-73.963 18.037 0.02 {"}-73.947 18 0.02 {"}-73.827 17.827 0.02 {"}-73.125 16.875 0.02 {"}-72.674 16 0.02 {"}-72.391 15.609 0.02 {"}-72 14.746 0.02 {"}-71.692 14.308 0.02 {"}-71.555 14 0.02 {"}-70.935 13.065 0.02 {"}-70.848 12.848 0.02 {"}-70.439 12 0.02 {"}-70.249 11.751 0.02 {"}-70 11.197 0.02 {"}-69.483 10.517 0.02 {"}-69.242 10 0.02 {"}-68.691 9.309 0.02 {"}-68.044 8.044 0.02 {"}-68.018 8 0.02 {"}-68.01 7.99 0.02 {"}-68 7.97 0.02 {"}-67.091 6.909 0.02 {"}-66.551 6 0.02 {"}-66.293 5.707 0.02 {"}-66 5.186 0.02 {"}-65.44 4.56 0.02 {"}-65.12 4 0.02 {"}-64.591 3.409 0.02 {"}-64 2.392 0.02 {"}-63.803 2.197 0.02 {"}-63.686 2 0.02 {"}-62.859 1.141 0.02 {"}-62.462 0.462 0.02 {"}-62.161 0 0.02 {"}-62.08 -0.08 0.02 {"}-62 -0.203 0.02 {"}-61.086 -1.086 0.02 {"}-60.487 -2 0.02 {"}-60.242 -2.242 0.02 {"}-60 -2.631 0.02 {"}-59.303 -3.303 0.02 {"}-58.877 -4 0.02 {"}-58.452 -4.452 0.02 {"}-58 -5.263 0.02 {"}-57.631 -5.631 0.02 {"}-57.425 -6 0.02 {"}-56.763 -6.763 0.02 {"}-56.331 -7.669 0.02 {"}-56.143 -8 0.02 {"}-56.08 -8.08 0.02 {"}-56 -8.24 0.02 {"}-55.156 -9.156 0.02 {"}-54.684 -10 0.02 {"}-54.377 -10.377 0.02 {"}-54 -11.197 0.02 {"}-53.627 -11.627 0.02 {"}-53.443 -12 0.02 {"}-52.854 -12.854 0.02 {"}-52.682 -13.318 0.02 {"}-52.361 -14 0.02 {"}-52.215 -14.215 0.02 {"}-52 -14.785 0.02 {"}-51.491 -15.491 0.02 {"}-51.286 -16 0.02 {"}-50.789 -16.789 0.02 {"}-50.572 -17.428 0.02 {"}-50.321 -18 0.02 {"}-50.198 -18.198 0.02 {"}-50 -18.713 0.02 {"}-49.445 -19.445 0.02 {"}-49.207 -20 0.02 {"}-48.727 -20.727 0.02 {"}-48.392 -21.608 0.02 {"}-48.208 -22 0.02 {"}-48.131 -22.131 0.02 {"}-48 -22.483 0.02 {"}-47.364 -23.364 0.02 {"}-47.091 -24 0.02 {"}-46.692 -24.692 0.02 {"}-46.354 -25.646 0.02 {"}-46.201 -26 0.02 {"}-46.136 -26.136 0.02 {"}-46 -26.571 0.02 {"}-45.467 -27.467 0.02 {"}-45.272 -28 0.02 {"}-44.887 -28.887 0.02 {"}-44.799 -29.201 0.02 {"}-44.519 -30 0.02 {"}-44.367 -30.367 0.02 {"}-44 -31.694 0.02 {"}-43.894 -31.894 0.02 {"}-43.859 -32 0.02 {"}-43.765 -32.235 0.02 {"}-43.277 -33.277 0.02 {"}-43.045 -34 0.02 {"}-42.754 -34.754 0.02 {"}-42.549 -35.451 0.02 {"}-42.363 -36 0.02 {"}-42.257 -36.257 0.02 {"}-42 -37.065 0.02 {"}-41.67 -37.67 0.02 {"}-41.549 -38 0.02 {"}-41.152 -38.848 0.02 {"}-41.05 -39.05 0.02 {"}-40.666 -40 0.02 {"}-40.459 -40.459 0.02 {"}-40 -41.754 0.02 {"}-39.909 -41.909 0.02 {"}-39.873 -42 0.02 {"}-39.785 -42.215 0.02 {"}-39.292 -43.292 0.02 {"}-39.047 -44 0.02 {"}-38.806 -44.806 0.02 {"}-38.677 -45.323 0.02 {"}-38.489 -46 0.02 {"}-38.409 -46.409 0.02 {"}-38.163 -47.837 0.02 {"}-38.133 -48 0.02 {"}-38.123 -48.123 0.02 {"}-38 -49.311 0.02 {"}-37.908 -49.908 0.02 {"}-37.896 -50 0.02 {"}-37.892 -50.108 0.02 {"}-37.862 -51.862 0.02 {"}-37.856 -52 0.02 {"}-37.863 -52.137 0.02 {"}-38 -53.56 0.02 {"}-38.029 -53.971 0.02 {"}-38.034 -54 0.02 {"}-38.044 -54.044 0.02 {"}-38.318 -55.682 0.02 {"}-38.405 -56 0.02 {"}-38.593 -56.593 0.02 {"}-38.755 -57.245 0.02 {"}-39.049 -58 0.02 {"}-39.335 -58.665 0.02 {"}-40 -59.865 0.02 {"}-40.043 -59.957 0.02 {"}-40.072 -60 0.02 {"}-40.217 -60.217 0.02 {"}-40.819 -61.181 0.02 {"}-41.52 -62 0.02 {"}-41.74 -62.26 0.02 {"}-42 -62.505 0.02 {"}-42.72 -63.28 0.02 {"}-43.679 -64 0.02 {"}-43.854 -64.146 0.02 {"}-44 -64.236 0.02 {"}-44.83 -64.83 0.02 {"}-45.024 -64.976 0.02 {"}-46 -65.528 0.02 {"}-46.297 -65.703 0.02 {"}-47.033 -66 0.02 {"}-47.68 -66.32 0.02 {"}-48 -66.432 0.02 {"}-48.682 -66.682 0.02 {"}-49.131 -66.869 0.02 {"}-50 -67.14 0.02 {"}-50.698 -67.302 0.02 {"}-51.418 -67.418 0.02 {"}-52 -67.538 0.02 {"}-52.41 -67.59 0.02 {"}-53.706 -67.706 0.02 {"}-54 -67.74 0.02 {"}-54.247 -67.753 0.02 {"}-55.796 -67.796 0.02 {"}-56 -67.806 0.02 {"}-56.198 -67.802 0.02 {"}-57.793 -67.793 0.02 {"}-58 -67.789 0.02 {"}-58.223 -67.777 0.02 {"}-59.743 -67.743 0.02 {"}-60 -67.729 0.02 {"}-60.291 -67.709 0.02 {"}-61.678 -67.678 0.02 {"}-62 -67.654 0.02 {"}-62.379 -67.621 0.02 {"}-63.606 -67.606 0.02 {"}-64 -67.566 0.02 {"}-64.459 -67.541 0.02 {"}-65.535 -67.535 0.02 {"}-66 -67.506 0.02 {"}-66.54 -67.46 0.02 {"}-67.442 -67.442 0.02 {"}-68 -67.387 0.02 {"}-68.69 -67.31 0.02 {"}-69.284 -67.284 0.02 {"}-70 -67.191 0.02 {"}-70.953 -67.047 0.02 {"}-71.04 -67.04 0.02 {"}-72 -66.869 0.02 {"}-72.719 -66.719 0.02 {"}-73.541 -66.459 0.02 {"}-74 -66.345 0.02 {"}-74.28 -66.28 0.02 {"}-74.997 -66 0.02 {"}-75.744 -65.744 0.02 {"}-76 -65.608 0.02 {"}-76.718 -65.282 0.02 {"}-77.128 -65.128 0.02 {"}-78 -64.601 0.02 {"}-78.394 -64.394 0.02 {"}-78.921 -64 0.02 {"}-79.591 -63.591 0.02 {"}-80 -63.238 0.02 {"}-80.734 -62.734 0.02 {"}-81.54 -62 0.02 {"}-81.811 -61.811 0.02 {"}-82 -61.631 0.02 {"}-82.922 -60.922 0.02 {"}-83.915 -60 0.02 {"}-83.966 -59.966 0.02 {"}-84 -59.936 0.02 {"}-84.229 -59.771 0.02 {"}-85.136 -59.136 0.02 {"}-86 -58.415 0.02 {"}-86.231 -58.231 0.02 {"}-86.478 -58 0.02 {"}-87.386 -57.386 0.02 {"}-88 -56.91 0.02 {"}-88.519 -56.519 0.02 {"}-89.113 -56 0.02 {"}-89.656 -55.656 0.02 {"}-90 -55.387 0.02 {"}-90.798 -54.798 0.02 {"}-91.701 -54 0.02 {"}-91.872 -53.872 0.02 {"}-92 -53.758 0.02 {"}-92.95 -52.95 0.02 {"}-93.918 -52 0.02 {"}-93.963 -51.963 0.02 {"}-94 -51.925 0.02 {"}-94.986 -51.014 0.02 {"}-95.001 -51.001 0.02 {"}-95.014 -50.986 0.02 {"}-95.925 -50 0.02 {"}-95.963 -49.963 0.02 {"}-96 -49.921 0.02 {"}-96.963 -48.963 0.02 {"}-97.825 -48 0.02 {"}-97.913 -47.913 0.02 {"}-98 -47.815 0.02 {"}-98.919 -46.919 0.02 {"}-99.766 -46 0.02 {"}-99.886 -45.886 0.02 {"}-100 -45.763 0.02 {"}-100.915 -44.915 0.02 {"}-101.808 -44 0.02 {"}-101.909 -43.909 0.02 {"}-102 -43.817 0.02 {"}-102.981 -42.981 0.02 {"}-103.582 -42.418 0.02 {"}-104 -42.028 0.02 {"}-104.015 -42.015 0.02 {"}-104.033 -42 0.02 {"}-105.119 -41.119 0.02 {"}-106 -40.262 0.02 {"}-106.138 -40.138 0.02 {"}-106.287 -40 0.02 {"}-107.223 -39.223 0.02 {"}-108 -38.452 0.02 {"}-108.229 -38.229 0.02 {"}-108.448 -38 0.02 {"}-109.246 -37.246 0.02 {"}-110 -36.418 0.02 {"}-110.204 -36.204 0.02 {"}-110.389 -36 0.02 {"}-111.223 -35.223 0.02 {"}-112 -34.385 0.02 {"}-112.193 -34.193 0.02 {"}-112.377 -34 0.02 {"}-113.276 -33.276 0.02 {"}-114 -32.579 0.02 {"}-114.315 -32.315 0.02 {"}-114.668 -32 0.02 {"}-115.457 -31.457 0.02 {"}-116 -31.005 0.02 {"}-116.567 -30.567 0.02 {"}-117.217 -30 0.02 {"}-117.671 -29.671 0.02 {"}-118 -29.385 0.02 {"}-118.795 -28.795 0.02 {"}-119.664 -28 0.02 {"}-119.851 -27.851 0.02 {"}-120 -27.702 0.02 {"}-120.921 -26.921 0.02 {"}-121.815 -26 0.02 {"}-121.91 -25.91 0.02 {"}-122 -25.803 0.02 {"}-122.884 -24.884 0.02 {"}-123.575 -24 0.02 {"}-123.768 -23.768 0.02 {"}-124 -23.443 0.02 {"}-124.669 -22.669 0.02 {"}-125.149 -22 0.02 {"}-125.508 -21.508 0.02 {"}-126 -20.678 0.02 {"}-126.283 -20.283 0.02 {"}-126.479 -20 0.02 {"}-127.115 -19.115 0.02 {"}-127.485 -18.515 0.02 {"}-127.814 -18 0.02 {"}-127.889 -17.889 0.02 {"}-128 -17.704 0.02 {"}-128.704 -16.704 0.02 {"}-129.14 -16 0.02 {"}-129.502 -15.502 0.02 {"}-130 -14.642 0.02 {"}-130.256 -14.256 0.02 {"}-130.415 -14 0.02 {"}-131.11 -13.11 0.02 {"}-131.493 -12.507 0.02 {"}-131.829 -12 0.02 {"}-131.908 -11.908 0.02 {"}-132 -11.769 0.02 {"}-132.771 -10.771 0.02 {"}-133.277 -10 0.02 {"}-133.604 -9.604 0.02 {"}-134 -8.999 0.02 {"}-134.429 -8.429 0.02 {"}-134.71 -8 0.02 {"}-135.277 -7.277 0.02 {"}-136 -6.145 0.02 {"}-136.062 -6.062 0.02 {"}-136.102 -6 0.02 {"}-136.375 -5.625 0.02 {"}-136.909 -4.909 0.02 {"}-137.487 -4 0.02 {"}-137.695 -3.695 0.02 {"}-138 -3.2 0.02 {"}-138.503 -2.503 0.02 {"}-138.833 -2 0.02 {"}-139.295 -1.295 0.02 {"}-140 -0.087 0.02 {"}-140.035 -0.035 0.02 {"}-140.056 0 0.02 {"}-140.138 0.138 0.02 {"}-140.784 1.216 0.02 {"}-141.236 2 0.02 {"}-141.5 2.5 0.02 {"}-142 3.544 0.02 {"}-142.156 3.844 0.02 {"}-142.237 4 0.02 {"}-142.412 4.412 0.02 {"}-142.766 5.234 0.02 {"}-143.088 6 0.02 {"}-143.31 6.69 0.02 {"}-143.576 7.576 0.02 {"}-143.708 8 0.02 {"}-143.764 8.236 0.02 {"}-144 9.295 0.02 {"}-144.139 9.861 0.02 {"}-144.178 10 0.02 {"}-144.209 10.209 0.02 {"}-144.404 11.596 0.02 {"}-144.465 12 0.02 {"}-144.52 12.52 0.02 {"}-144.595 13.405 0.02 {"}-144.661 14 0.02 {"}-144.687 14.687 0.02 {"}-144.695 15.305 0.02 {"}-144.723 16 0.02 {"}-144.738 16.738 0.02 {"}-144.735 17.265 0.02 {"}-144.752 18 0.02 {"}-144.758 18.758 0.02 {"}-144.748 19.252 0.02 {"}-144.755 20 0.02 {"}-144.735 20.735 0.02 {"}-144.702 21.298 0.02 {"}-144.683 22 0.02 {"}-144.655 22.655 0.02 {"}-144.592 23.408 0.02 {"}-144.564 24 0.02 {"}-144.53 24.53 0.02 {"}-144.448 25.552 0.02 {"}-144.418 26 0.02 {"}-144.369 26.369 0.02 {"}-144.119 27.881 0.02 {"}-144.102 28 0.02 {"}-144.081 28.081 0.02 {"}-144 28.355 0.02 {"}-143.596 29.596 0.02 {"}-143.442 30 0.02 {"}-142.981 30.981 0.02 {"}-142.934 31.066 0.02 {"}-142.445 32 0.02 {"}-142.269 32.269 0.02 {"}-142 32.619 0.02 {"}-141.352 33.352 0.02 {"}-140.703 34 0.02 {"}-140.336 34.336 0.02 {"}-140 34.582 0.02 {"}-139.128 35.128 0.02 {"}-138.468 35.532 0.02 {"}-138 35.82 0.02 {"}-137.881 35.881 0.02 {"}-137.585 36 0.02 {"}-136.442 36.442 0.02 {"}-136 36.586 0.02 {"}-135.153 36.847 0.02 {"}-134.926 36.926 0.02 {"}-134 37.181 0.02 {"}-133.389 37.389 0.02 {"}-132.351 37.649 0.02 {"}-132 37.753 0.02 {"}-131.819 37.819 0.02 {"}-131.095 38 0.02 {"}-130.242 38.242 0.02 {"}-130 38.296 0.02 {"}-129.576 38.424 0.02 {"}-128.726 38.726 0.02 {"}-128 38.914 0.02 {"}-127.197 39.197 0.02 {"}-126.68 39.32 0.02 {"}-126 39.522 0.02 {"}-125.654 39.654 0.02 {"}-124.421 40 0.02 {"}-124.112 40.112 0.02 {"}-124 40.142 0.02 {"}-123.796 40.204 0.02 {"}-122.606 40.606 0.02 {"}-122 40.773 0.02 {"}-121.031 41.031 0.02 {"}-120.953 41.047 0.02 {"}-120 41.276 0.02 {"}-119.406 41.406 0.02 {"}-118.442 41.558 0.02 {"}-118 41.645 0.02 {"}-117.701 41.701 0.02 {"}-116.058 41.942 0.02 {"}-116 41.952 0.02 {"}-115.957 41.957 0.02 {"}-115.416 42 0.02 {"}-114.134 42.134 0.02 {"}-114 42.146 0.02 {"}-113.847 42.153 0.02 {"}-112.26 42.26 0.02 {"}-112 42.272 0.02 {"}-111.727 42.273 0.02 {"}-110.281 42.281 0.02 {"}-110 42.281 0.02 {"}-109.732 42.268 0.02 {"}-108.179 42.179 0.02 {"}-108 42.171 0.02 {"}-107.839 42.161 0.02 {"}-106.033 42.033 0.02 {"}-106 42.031 0.02 {"}-105.97 42.03 0.02 {"}-105.486 42 0.02 {"}-104.063 41.937 0.02 {"}-104 41.933 0.02 {"}-103.931 41.931 0.02 {"}-102.047 41.953 0.02 {"}-102 41.951 0.02 {"}-101.953 41.953 0.02 {"}-101.474 42 0.02 {"}-100.178 42.178 0.02 {"}-100 42.214 0.02 {"}-99.652 42.348 0.02 {"}-98.68 42.68 0.02 {"}-98 42.982 0.02 {"}-97.382 43.382 0.02 {"}-96.636 44 0.02 {"}-96.341 44.341 0.02 {"}-96 44.816 0.02 {"}-95.579 45.579 0.02 {"}-95.413 46 0.02 {"}-95.264 46.736 0.02 {"}-95.155 47.155 0.02 {"}-95.007 48 0.02 {"}-94.928 48.928 0.02 {"}-94.927 49.073 0.02 {"}-94.858 50 0.02 {"}-94.811 50.811 0.02 {"}-94.815 51.185 0.02 {"}-94.773 52 0.02 {"}-94.731 52.731 0.02 {"}-94.719 53.281 0.02 {"}-94.68 54 0.02 {"}-94.625 54.625 0.02 {"}-94.568 55.432 0.02 {"}-94.52 56 0.02 {"}-94.458 56.458 0.02 {"}-94.316 57.684 0.02 {"}-94.275 58 0.02 {"}-94.243 58.243 0.02 {"}-94.02 59.98 0.02 {"}-94.017 60 0.02 {"}-94.014 60.014 0.02 {"}-94 60.083 0.02 {"}-93.711 61.711 0.02 {"}-93.658 62 0.02 {"}-93.563 62.437 0.02 {"}-93.39 63.39 0.02 {"}-93.244 64 0.02 {"}-92.994 64.994 0.02 {"}-92.989 65.011 0.02 {"}-92.719 66 0.02 {"}-92.556 66.556 0.02 {"}-92.106 67.894 0.02 {"}-92.073 68 0.02 {"}-92.057 68.057 0.02 {"}-92 68.221 0.02 {"}-91.543 69.543 0.02 {"}-91.341 70 0.02 {"}-90.947 70.947 0.02 {"}-90.835 71.165 0.02 {"}-90.434 72 0.02 {"}-90.307 72.307 0.02 {"}-90 72.947 0.02 {"}-89.633 73.633 0.02 {"}-89.386 74 0.02 {"}-88.884 74.884 0.02 {"}-88.319 75.681 0.02 {"}-88.102 76 0.02 {"}-88.066 76.066 0.02 {"}-88 76.16 0.02 {"}-87.089 77.089 0.02 {"}-86.042 78 0.02 {"}-86.022 78.022 0.02 {"}-86 78.04 0.02 {"}-85.945 78.055 0.02 {"}-84.516 78.516 0.02 {"}-84 78.638 0.02 {"}-83.478 78.522 0.02 {"}-82.255 78.255 0.02 {"}-82 78.199 0.02 {"}-81.888 78.112 0.02 {"}-81.748 78 0.02 {"}P 180 133.432 0.02 {"}179.573 133.573 0.02 {"}178.46 134 0.02 {"}178.106 134.106 0.02 {"}178 134.152 0.02 {"}177.777 134.223 0.02 {"}176.579 134.579 0.02 {"}176 134.778 0.02 {"}175.02 135.02 0.02 {"}174.961 135.039 0.02 {"}174 135.31 0.02 {"}173.42 135.42 0.02 {"}172.337 135.663 0.02 {"}172 135.731 0.02 {"}171.766 135.766 0.02 {"}170.14 136 0.02 {"}170.015 136.015 0.02 {"}170 136.017 0.02 {"}169.982 136.018 0.02 {"}168.172 136.172 0.02 {"}168 136.186 0.02 {"}167.796 136.204 0.02 {"}166.331 136.331 0.02 {"}166 136.36 0.02 {"}165.62 136.38 0.02 {"}164.457 136.457 0.02 {"}164 136.481 0.02 {"}163.521 136.479 0.02 {"}162.484 136.484 0.02 {"}162 136.482 0.02 {"}161.554 136.446 0.02 {"}160.354 136.354 0.02 {"}160 136.326 0.02 {"}159.711 136.289 0.02 {"}158.035 136.035 0.02 {"}158 136.03 0.02 {"}157.975 136.025 0.02 {"}157.857 136 0.02 {"}156.362 135.638 0.02 {"}156 135.536 0.02 {"}155.26 135.26 0.02 {"}154.878 135.122 0.02 {"}154 134.785 0.02 {"}153.479 134.521 0.02 {"}152.5 134 0.02 {"}152.195 133.805 0.02 {"}152 133.679 0.02 {"}151.014 132.986 0.02 {"}150.916 132.916 0.02 {"}150 132.258 0.02 {"}149.85 132.15 0.02 {"}149.637 132 0.02 {"}148.734 131.266 0.02 {"}148 130.654 0.02 {"}147.651 130.349 0.02 {"}147.226 130 0.02 {"}146.61 129.39 0.02 {"}146 128.796 0.02 {"}145.592 128.408 0.02 {"}145.123 128 0.02 {"}144.565 127.435 0.02 {"}144 126.871 0.02 {"}143.572 126.428 0.02 {"}143.102 126 0.02 {"}142.551 125.449 0.02 {"}142 124.91 0.02 {"}141.546 124.454 0.02 {"}141.035 124 0.02 {"}140.476 123.524 0.02 {"}140 123.14 0.02 {"}139.356 122.644 0.02 {"}138.488 122 0.02 {"}138.202 121.798 0.02 {"}138 121.662 0.02 {"}137.23 121.23 0.02 {"}136.934 121.066 0.02 {"}136 120.526 0.02 {"}135.645 120.355 0.02 {"}134.864 120 0.02 {"}134.267 119.733 0.02 {"}134 119.613 0.02 {"}133.382 119.382 0.02 {"}132.821 119.179 0.02 {"}132 118.859 0.02 {"}131.389 118.611 0.02 {"}130.1 118 0.02 {"}130.033 117.967 0.02 {"}130 117.951 0.02 {"}129.902 117.902 0.02 {"}128.668 117.332 0.02 {"}128 116.949 0.02 {"}127.46 116.54 0.02 {"}126.789 116 0.02 {"}126.38 115.62 0.02 {"}126 115.237 0.02 {"}125.424 114.576 0.02 {"}124.975 114 0.02 {"}124.597 113.403 0.02 {"}124 112.32 0.02 {"}123.89 112.11 0.02 {"}123.831 112 0.02 {"}123.65 111.65 0.02 {"}123.193 110.807 0.02 {"}122.816 110 0.02 {"}122.57 109.43 0.02 {"}122 108.039 0.02 {"}121.989 108.011 0.02 {"}121.984 108 0.02 {"}121.97 107.97 0.02 {"}121.339 106.661 0.02 {"}121.032 106 0.02 {"}120.715 105.285 0.02 {"}120.306 104.306 0.02 {"}120.175 104 0.02 {"}120.117 103.883 0.02 {"}120 103.646 0.02 {"}119.441 102.559 0.02 {"}119.152 102 0.02 {"}118.766 101.234 0.02 {"}118.341 100.341 0.02 {"}118.175 100 0.02 {"}118.113 99.887 0.02 {"}118 99.686 0.02 {"}117.35 98.65 0.02 {"}116.951 98 0.02 {"}116.609 97.391 0.02 {"}116 96.22 0.02 {"}115.918 96.082 0.02 {"}115.865 96 0.02 {"}115.432 95.432 0.02 {"}115.055 94.945 0.02 {"}114.41 94 0.02 {"}114.24 93.76 0.02 {"}114 93.453 0.02 {"}113.29 92.71 0.02 {"}112.673 92 0.02 {"}112.345 91.655 0.02 {"}112 91.319 0.02 {"}111.256 90.744 0.02 {"}110.389 90 0.02 {"}110.168 89.832 0.02 {"}110 89.713 0.02 {"}109.388 89.388 0.02 {"}108.866 89.134 0.02 {"}108 88.574 0.02 {"}107.587 88.413 0.02 {"}106.643 88 0.02 {"}106.164 87.836 0.02 {"}106 87.775 0.02 {"}105.719 87.719 0.02 {"}104.454 87.546 0.02 {"}104 87.438 0.02 {"}103.457 87.457 0.02 {"}102.426 87.574 0.02 {"}102 87.591 0.02 {"}101.682 87.682 0.02 {"}100.848 88 0.02 {"}100.321 88.321 0.02 {"}100 88.639 0.02 {"}99.514 89.514 0.02 {"}99.304 90 0.02 {"}98.991 90.991 0.02 {"}98.986 91.014 0.02 {"}98.714 92 0.02 {"}98.607 92.607 0.02 {"}98.53 93.47 0.02 {"}98.45 94 0.02 {"}98.372 94.372 0.02 {"}98.198 95.802 0.02 {"}98.163 96 0.02 {"}98.125 96.125 0.02 {"}98 96.751 0.02 {"}97.815 97.815 0.02 {"}97.792 98 0.02 {"}97.725 98.275 0.02 {"}97.414 99.414 0.02 {"}97.283 100 0.02 {"}96.906 100.906 0.02 {"}96.798 101.202 0.02 {"}96.488 102 0.02 {"}96.322 102.322 0.02 {"}96 103.018 0.02 {"}95.708 103.708 0.02 {"}95.598 104 0.02 {"}95.342 104.658 0.02 {"}95.14 105.14 0.02 {"}94.839 106 0.02 {"}94.577 106.577 0.02 {"}94.015 107.985 0.02 {"}94.009 108 0.02 {"}94.006 108.006 0.02 {"}94 108.023 0.02 {"}93.485 109.485 0.02 {"}93.328 110 0.02 {"}92.985 110.985 0.02 {"}92.975 111.025 0.02 {"}92.676 112 0.02 {"}92.494 112.494 0.02 {"}92.01 113.99 0.02 {"}92.006 114 0.02 {"}92.005 114.005 0.02 {"}92 114.02 0.02 {"}91.52 115.52 0.02 {"}91.387 116 0.02 {"}91.052 116.948 0.02 {"}91.024 117.024 0.02 {"}90.697 118 0.02 {"}90.491 118.491 0.02 {"}90 119.841 0.02 {"}89.955 119.955 0.02 {"}89.939 120 0.02 {"}89.884 120.116 0.02 {"}89.304 121.304 0.02 {"}88.983 122 0.02 {"}88.626 122.626 0.02 {"}88 123.905 0.02 {"}87.967 123.967 0.02 {"}87.952 124 0.02 {"}87.882 124.118 0.02 {"}87.216 125.216 0.02 {"}86.777 126 0.02 {"}86.48 126.48 0.02 {"}86 127.436 0.02 {"}85.8 127.8 0.02 {"}85.705 128 0.02 {"}85.291 128.709 0.02 {"}85.07 129.07 0.02 {"}84.591 130 0.02 {"}84.381 130.381 0.02 {"}84 131.239 0.02 {"}83.743 131.743 0.02 {"}83.632 132 0.02 {"}83.191 132.809 0.02 {"}83.052 133.052 0.02 {"}82.593 134 0.02 {"}82.384 134.384 0.02 {"}82 135.239 0.02 {"}81.734 135.734 0.02 {"}81.616 136 0.02 {"}81.087 136.913 0.02 {"}81.021 137.021 0.02 {"}80.526 138 0.02 {"}80.336 138.336 0.02 {"}80 139.067 0.02 {"}79.664 139.664 0.02 {"}79.513 140 0.02 {"}78.987 140.987 0.02 {"}78.967 141.033 0.02 {"}78.512 142 0.02 {"}78.336 142.336 0.02 {"}78 143.222 0.02 {"}77.749 143.749 0.02 {"}77.659 144 0.02 {"}77.309 144.691 0.02 {"}77.09 145.09 0.02 {"}76.701 146 0.02 {"}76.444 146.444 0.02 {"}76 147.487 0.02 {"}75.814 147.814 0.02 {"}75.741 148 0.02 {"}75.338 148.662 0.02 {"}75.072 149.072 0.02 {"}74.611 150 0.02 {"}74.367 150.367 0.02 {"}74 151.093 0.02 {"}73.629 151.629 0.02 {"}73.455 152 0.02 {"}72.871 152.871 0.02 {"}72.611 153.389 0.02 {"}72.276 154 0.02 {"}72.165 154.165 0.02 {"}72 154.494 0.02 {"}71.384 155.384 0.02 {"}71.085 156 0.02 {"}70.673 156.673 0.02 {"}70.116 157.884 0.02 {"}70.057 158 0.02 {"}70.036 158.036 0.02 {"}70 158.12 0.02 {"}69.287 159.287 0.02 {"}68.975 160 0.02 {"}68.636 160.636 0.02 {"}68.163 161.837 0.02 {"}68.09 162 0.02 {"}68.059 162.059 0.02 {"}68 162.21 0.02 {"}67.357 163.357 0.02 {"}67.11 164 0.02 {"}66.752 164.752 0.02 {"}66.477 165.523 0.02 {"}66.284 166 0.02 {"}66.192 166.192 0.02 {"}66 166.734 0.02 {"}65.547 167.547 0.02 {"}65.372 168 0.02 {"}64.899 168.899 0.02 {"}64.77 169.23 0.02 {"}64.432 170 0.02 {"}64.281 170.281 0.02 {"}64 170.992 0.02 {"}63.615 171.615 0.02 {"}63.457 172 0.02 {"}62.933 172.933 0.02 {"}62.85 173.15 0.02 {"}62.471 174 0.02 {"}62.306 174.306 0.02 {"}62 175.106 0.02 {"}61.667 175.667 0.02 {"}61.544 176 0.02 {"}61.151 176.849 0.02 {"}61.048 177.048 0.02 {"}60.692 178 0.02 {"}60.471 178.471 0.02 {"}60 179.866 0.02 {"}59.951 179.951 0.02 {"}59.935 180 0.02 {"}P -59.935 180 0.02 {"}-59.872 179.872 0.02 {"}-59.249 178.751 0.02 {"}-58.965 178 0.02 {"}-58.645 177.355 0.02 {"}-58.221 176.221 0.02 {"}-58.128 176 0.02 {"}-58.086 175.914 0.02 {"}-58 175.68 0.02 {"}-57.393 174.607 0.02 {"}-57.162 174 0.02 {"}-56.79 173.21 0.02 {"}-56.555 172.555 0.02 {"}-56.331 172 0.02 {"}-56.224 171.776 0.02 {"}-56 171.122 0.02 {"}-55.609 170.391 0.02 {"}-55.47 170 0.02 {"}-54.998 169.002 0.02 {"}-54.996 168.996 0.02 {"}-54.605 168 0.02 {"}-54.409 167.591 0.02 {"}-54 166.388 0.02 {"}-53.857 166.143 0.02 {"}-53.802 166 0.02 {"}-53.633 165.633 0.02 {"}-53.2 164.8 0.02 {"}-52.907 164 0.02 {"}-52.631 163.369 0.02 {"}-52.291 162.291 0.02 {"}-52.184 162 0.02 {"}-52.128 161.872 0.02 {"}-52 161.454 0.02 {"}-51.516 160.484 0.02 {"}-51.352 160 0.02 {"}-50.939 159.061 0.02 {"}-50.882 158.882 0.02 {"}-50.554 158 0.02 {"}-50.37 157.63 0.02 {"}-50 156.542 0.02 {"}-49.803 156.197 0.02 {"}-49.729 156 0.02 {"}-49.362 155.362 0.02 {"}-49.082 154.918 0.02 {"}-48.673 154 0.02 {"}-48.418 153.582 0.02 {"}-48 152.579 0.02 {"}-47.761 152.239 0.02 {"}-47.658 152 0.02 {"}-47.187 151.187 0.02 {"}-47.042 150.958 0.02 {"}-46.612 150 0.02 {"}-46.396 149.604 0.02 {"}-46 148.505 0.02 {"}-45.808 148.192 0.02 {"}-45.733 148 0.02 {"}-45.479 147.479 0.02 {"}-45.138 146.862 0.02 {"}-44.812 146 0.02 {"}-44.552 145.448 0.02 {"}-44.095 144.095 0.02 {"}-44.057 144 0.02 {"}-44.038 143.962 0.02 {"}-44 143.852 0.02 {"}-43.322 142.678 0.02 {"}-43.053 142 0.02 {"}-42.692 141.308 0.02 {"}-42.318 140.318 0.02 {"}-42.181 140 0.02 {"}-42.12 139.88 0.02 {"}-42 139.56 0.02 {"}-41.401 138.599 0.02 {"}-41.146 138 0.02 {"}-40.791 137.209 0.02 {"}-40.583 136.583 0.02 {"}-40.36 136 0.02 {"}-40.272 135.728 0.02 {"}-40 134.66 0.02 {"}-39.8 134.2 0.02 {"}-39.736 134 0.02 {"}-39.642 133.642 0.02 {"}-39.345 132.655 0.02 {"}-39.191 132 0.02 {"}-39.048 131.048 0.02 {"}-39.034 130.966 0.02 {"}-38.893 130 0.02 {"}-38.877 129.123 0.02 {"}-38.867 128.867 0.02 {"}-38.85 128 0.02 {"}-38.977 127.023 0.02 {"}-38.981 126.981 0.02 {"}-39.119 126 0.02 {"}-39.296 125.296 0.02 {"}-39.615 124.385 0.02 {"}-39.728 124 0.02 {"}-39.801 123.801 0.02 {"}-40 123.404 0.02 {"}-40.371 122.371 0.02 {"}-40.58 122 0.02 {"}-41.102 121.102 0.02 {"}-41.806 120.194 0.02 {"}-41.951 120 0.02 {"}-41.97 119.97 0.02 {"}-42 119.941 0.02 {"}-42.84 118.84 0.02 {"}-43.787 118 0.02 {"}-43.887 117.887 0.02 {"}-44 117.802 0.02 {"}-44.914 116.914 0.02 {"}-45.389 116.611 0.02 {"}-46 116.19 0.02 {"}-46.101 116.101 0.02 {"}-46.273 116 0.02 {"}-47.225 115.225 0.02 {"}-48 114.781 0.02 {"}-48.462 114.462 0.02 {"}-49.473 114 0.02 {"}-49.786 113.786 0.02 {"}-50 113.684 0.02 {"}-50.864 113.136 0.02 {"}-51.026 113.026 0.02 {"}-52 112.54 0.02 {"}-52.34 112.34 0.02 {"}-53.149 112 0.02 {"}-53.671 111.671 0.02 {"}-54 111.525 0.02 {"}-54.983 110.983 0.02 {"}-55.041 110.959 0.02 {"}-56 110.523 0.02 {"}-56.362 110.362 0.02 {"}-57.385 110 0.02 {"}-57.791 109.791 0.02 {"}-58 109.712 0.02 {"}-58.477 109.523 0.02 {"}-59.205 109.205 0.02 {"}-60 108.928 0.02 {"}-60.717 108.717 0.02 {"}-61.482 108.518 0.02 {"}-62 108.374 0.02 {"}-62.313 108.313 0.02 {"}-63.875 108 0.02 {"}-63.972 107.972 0.02 {"}-64 107.965 0.02 {"}-64.045 107.955 0.02 {"}-65.643 107.643 0.02 {"}-66 107.565 0.02 {"}-66.528 107.472 0.02 {"}-67.359 107.359 0.02 {"}-68 107.235 0.02 {"}-68.87 107.13 0.02 {"}-69.114 107.114 0.02 {"}-70 106.994 0.02 {"}-70.88 106.88 0.02 {"}-71.18 106.82 0.02 {"}-72 106.7 0.02 {"}-72.616 106.616 0.02 {"}-73.601 106.399 0.02 {"}-74 106.336 0.02 {"}-74.277 106.277 0.02 {"}-75.219 106 0.02 {"}-75.783 105.783 0.02 {"}-76 105.672 0.02 {"}-76.823 105.177 0.02 {"}-77.049 105.049 0.02 {"}-78 104.363 0.02 {"}-78.202 104.202 0.02 {"}-78.422 104 0.02 {"}-79.158 103.158 0.02 {"}-80 102.056 0.02 {"}-80.024 102.024 0.02 {"}-80.041 102 0.02 {"}-80.127 101.873 0.02 {"}-80.828 100.828 0.02 {"}-81.395 100 0.02 {"}-81.631 99.631 0.02 {"}-82 99.085 0.02 {"}-82.477 98.477 0.02 {"}-82.89 98 0.02 {"}-83.369 97.369 0.02 {"}-84 96.608 0.02 {"}-84.315 96.315 0.02 {"}-84.752 96 0.02 {"}-85.466 95.466 0.02 {"}-86 95.138 0.02 {"}-86.843 94.843 0.02 {"}-87.29 94.71 0.02 {"}-88 94.48 0.02 {"}-88.487 94.487 0.02 {"}-89.441 94.559 0.02 {"}-90 94.565 0.02 {"}-90.804 94.804 0.02 {"}-91.099 94.901 0.02 {"}-92 95.145 0.02 {"}-92.619 95.381 0.02 {"}-93.801 95.801 0.02 {"}-94 95.874 0.02 {"}-94.079 95.921 0.02 {"}-94.218 96 0.02 {"}-95.384 96.616 0.02 {"}-96 96.916 0.02 {"}-96.719 97.281 0.02 {"}-97.871 97.871 0.02 {"}-98 97.937 0.02 {"}-98.039 97.961 0.02 {"}-98.103 98 0.02 {"}-99.298 98.702 0.02 {"}-100 99.105 0.02 {"}-100.565 99.435 0.02 {"}-101.561 100 0.02 {"}-101.844 100.156 0.02 {"}-102 100.245 0.02 {"}-102.62 100.62 0.02 {"}-103.095 100.905 0.02 {"}-104 101.468 0.02 {"}-104.324 101.676 0.02 {"}-104.795 102 0.02 {"}-105.527 102.473 0.02 {"}-106 102.782 0.02 {"}-106.742 103.258 0.02 {"}-107.862 104 0.02 {"}-107.948 104.052 0.02 {"}-108 104.088 0.02 {"}-108.291 104.291 0.02 {"}-109.129 104.871 0.02 {"}-110 105.496 0.02 {"}-110.297 105.703 0.02 {"}-110.679 106 0.02 {"}-111.47 106.53 0.02 {"}-112 106.898 0.02 {"}-112.676 107.324 0.02 {"}-113.7 108 0.02 {"}-113.891 108.109 0.02 {"}-114 108.18 0.02 {"}-114.457 108.457 0.02 {"}-115.139 108.861 0.02 {"}-116 109.419 0.02 {"}-116.365 109.635 0.02 {"}-116.971 110 0.02 {"}-117.668 110.332 0.02 {"}-118 110.503 0.02 {"}-118.948 110.948 0.02 {"}-119.02 110.98 0.02 {"}-120 111.466 0.02 {"}-120.362 111.638 0.02 {"}-121.115 112 0.02 {"}-121.758 112.242 0.02 {"}-122 112.344 0.02 {"}-122.59 112.59 0.02 {"}-123.177 112.823 0.02 {"}-124 113.191 0.02 {"}-124.559 113.441 0.02 {"}-125.704 114 0.02 {"}-125.915 114.085 0.02 {"}-126 114.123 0.02 {"}-126.223 114.223 0.02 {"}-127.322 114.678 0.02 {"}-128 115.021 0.02 {"}-128.664 115.336 0.02 {"}-129.882 116 0.02 {"}-129.962 116.038 0.02 {"}-130 116.059 0.02 {"}-130.124 116.124 0.02 {"}-131.3 116.7 0.02 {"}-132 117.115 0.02 {"}-132.581 117.419 0.02 {"}-133.562 118 0.02 {"}-133.854 118.146 0.02 {"}-134 118.233 0.02 {"}-134.488 118.488 0.02 {"}-135.173 118.827 0.02 {"}-136 119.308 0.02 {"}-136.457 119.543 0.02 {"}-137.246 120 0.02 {"}-137.757 120.243 0.02 {"}-138 120.38 0.02 {"}-138.773 120.773 0.02 {"}-139.08 120.92 0.02 {"}-140 121.446 0.02 {"}-140.367 121.633 0.02 {"}-141.032 122 0.02 {"}-141.706 122.294 0.02 {"}-142 122.443 0.02 {"}-142.782 122.782 0.02 {"}-143.092 122.908 0.02 {"}-144 123.341 0.02 {"}-144.468 123.532 0.02 {"}-145.522 124 0.02 {"}-145.87 124.13 0.02 {"}-146 124.187 0.02 {"}-146.301 124.301 0.02 {"}-147.327 124.673 0.02 {"}-148 124.938 0.02 {"}-148.795 125.205 0.02 {"}-149.445 125.445 0.02 {"}-150 125.641 0.02 {"}-150.281 125.719 0.02 {"}-151.156 126 0.02 {"}-151.828 126.172 0.02 {"}-152 126.227 0.02 {"}-152.313 126.313 0.02 {"}-153.41 126.59 0.02 {"}-154 126.764 0.02 {"}-154.96 127.04 0.02 {"}-155.083 127.083 0.02 {"}-156 127.375 0.02 {"}-156.487 127.513 0.02 {"}-157.961 128 0.02 {"}-157.992 128.008 0.02 {"}-158 128.011 0.02 {"}-158.015 128.015 0.02 {"}-159.581 128.419 0.02 {"}-160 128.551 0.02 {"}-160.722 128.722 0.02 {"}-161.185 128.815 0.02 {"}-162 129.026 0.02 {"}-162.81 129.19 0.02 {"}-163.315 129.315 0.02 {"}-164 129.465 0.02 {"}-164.465 129.535 0.02 {"}-165.718 129.718 0.02 {"}-166 129.76 0.02 {"}-166.21 129.79 0.02 {"}-167.823 130 0.02 {"}-167.984 130.016 0.02 {"}-168 130.017 0.02 {"}-168.021 130.021 0.02 {"}-169.729 130.271 0.02 {"}-170 130.314 0.02 {"}-170.394 130.394 0.02 {"}-171.41 130.59 0.02 {"}-172 130.714 0.02 {"}-172.972 130.972 0.02 {"}-173.018 130.982 0.02 {"}-174 131.265 0.02 {"}-174.559 131.441 0.02 {"}-175.932 131.932 0.02 {"}-176 131.955 0.02 {"}-176.033 131.967 0.02 {"}-176.11 132 0.02 {"}-177.521 132.479 0.02 {"}-178 132.677 0.02 {"}-178.986 133.014 0.02 {"}-179.039 133.039 0.02 {"}-180 133.432 0.02 @subgroup {Data} @dotlist {Data} master= {Data pts} @group {Trans proline} animate off dominant @subgroup {Contours} nobutton dominant @labellist {Title} master= {Titles} {Trans proline} 0 190 0 @vectorlist {Allowed} color= blue master= {Allowed} {level 0.001}P -104.848 -180 0.001 {"}-104.623 -179.377 0.001 {"}-104 -178.091 0.001 {"}-103.979 -178.021 0.001 {"}-103.968 -178 0.001 {"}-103.937 -177.937 0.001 {"}-103.365 -176.635 0.001 {"}-102.96 -176 0.001 {"}-102.705 -175.295 0.001 {"}-102.15 -174.15 0.001 {"}-102.085 -174 0.001 {"}-102.051 -173.949 0.001 {"}-102 -173.873 0.001 {"}-101.365 -172.635 0.001 {"}-100.898 -172 0.001 {"}-100.599 -171.401 0.001 {"}-100 -170.612 0.001 {"}-99.799 -170.201 0.001 {"}-99.579 -170 0.001 {"}-98.991 -169.009 0.001 {"}-98.935 -168.935 0.001 {"}-98.252 -168 0.001 {"}-98.142 -167.858 0.001 {"}-98 -167.703 0.001 {"}-97.28 -166.72 0.001 {"}-96.662 -166 0.001 {"}-96.378 -165.622 0.001 {"}-96 -165.287 0.001 {"}-95.38 -164.62 0.001 {"}-94.606 -164 0.001 {"}-94.309 -163.691 0.001 {"}-94 -163.481 0.001 {"}-93.099 -162.901 0.001 {"}-92.546 -162.546 0.001 {"}-92 -162.195 0.001 {"}-91.904 -162.096 0.001 {"}-91.697 -162 0.001 {"}-90.679 -161.321 0.001 {"}-90 -160.982 0.001 {"}-89.315 -160.685 0.001 {"}-88.411 -160.411 0.001 {"}-88 -160.263 0.001 {"}-87.825 -160.175 0.001 {"}-87.212 -160 0.001 {"}-86.373 -159.627 0.001 {"}-86 -159.515 0.001 {"}-85.418 -159.418 0.001 {"}-84.745 -159.255 0.001 {"}-84 -159.152 0.001 {"}-83.127 -159.127 0.001 {"}-82.886 -159.114 0.001 {"}-82 -159.091 0.001 {"}-81.091 -159.091 0.001 {"}-80.909 -159.091 0.001 {"}-80 -159.091 0.001 {"}-79.178 -159.178 0.001 {"}-78.781 -159.219 0.001 {"}-78 -159.301 0.001 {"}-77.423 -159.423 0.001 {"}-76.252 -159.748 0.001 {"}-76 -159.808 0.001 {"}-75.872 -159.872 0.001 {"}-75.591 -160 0.001 {"}-74.364 -160.364 0.001 {"}-74 -160.553 0.001 {"}-73.057 -160.943 0.001 {"}-72.974 -160.974 0.001 {"}-72 -161.436 0.001 {"}-71.664 -161.664 0.001 {"}-71.249 -162 0.001 {"}-70.457 -162.457 0.001 {"}-70 -162.892 0.001 {"}-69.344 -163.344 0.001 {"}-68.546 -164 0.001 {"}-68.194 -164.194 0.001 {"}-68 -164.397 0.001 {"}-67.14 -165.14 0.001 {"}-66.397 -166 0.001 {"}-66.184 -166.184 0.001 {"}-66 -166.459 0.001 {"}-65.268 -167.268 0.001 {"}-64.669 -168 0.001 {"}-64.339 -168.339 0.001 {"}-64 -168.982 0.001 {"}-63.576 -169.576 0.001 {"}-63.306 -170 0.001 {"}-62.66 -170.66 0.001 {"}-62.047 -171.953 0.001 {"}-62.02 -172 0.001 {"}-62.011 -172.011 0.001 {"}-62 -172.033 0.001 {"}-61.143 -173.143 0.001 {"}-60.648 -174 0.001 {"}-60.377 -174.377 0.001 {"}-60 -175.152 0.001 {"}-59.628 -175.628 0.001 {"}-59.364 -176 0.001 {"}-58.727 -176.727 0.001 {"}-58.354 -177.646 0.001 {"}-58.168 -178 0.001 {"}-58.085 -178.085 0.001 {"}-58 -178.269 0.001 {"}-57.176 -179.176 0.001 {"}-56.648 -180 0.001 {"}P -56.648 180 0.001 {"}-56.314 179.686 0.001 {"}-56 178.964 0.001 {"}-55.586 178.414 0.001 {"}-55.312 178 0.001 {"}-54.607 177.393 0.001 {"}-54 176.164 0.001 {"}-53.926 176.074 0.001 {"}-53.887 176 0.001 {"}-52.936 175.064 0.001 {"}-52.771 174.771 0.001 {"}-52.277 174 0.001 {"}-52.124 173.876 0.001 {"}-52 173.602 0.001 {"}-51.229 172.771 0.001 {"}-50.718 172 0.001 {"}-50.357 171.643 0.001 {"}-50 170.694 0.001 {"}-49.701 170.299 0.001 {"}-49.551 170 0.001 {"}-48.864 169.136 0.001 {"}-48.64 168.64 0.001 {"}-48.295 168 0.001 {"}-48.162 167.838 0.001 {"}-48 167.079 0.001 {"}-47.644 166.356 0.001 {"}-47.507 166 0.001 {"}-46.879 165.121 0.001 {"}-46.74 164.74 0.001 {"}-46.391 164 0.001 {"}-46.207 163.793 0.001 {"}-46 162.909 0.001 {"}-45.661 162.339 0.001 {"}-45.52 162 0.001 {"}-44.842 161.158 0.001 {"}-44.669 160.669 0.001 {"}-44.345 160 0.001 {"}-44.187 159.813 0.001 {"}-44 158.964 0.001 {"}-43.64 158.36 0.001 {"}-43.506 158 0.001 {"}-42.932 157.068 0.001 {"}-42.871 156.871 0.001 {"}-42.504 156 0.001 {"}-42.312 155.688 0.001 {"}-42 154.404 0.001 {"}-41.853 154.147 0.001 {"}-41.814 154 0.001 {"}-41.498 153.498 0.001 {"}-41.1 152.9 0.001 {"}-40.64 152 0.001 {"}-40.362 151.638 0.001 {"}-40 150.464 0.001 {"}-39.807 150.193 0.001 {"}-39.719 150 0.001 {"}-38.945 149.055 0.001 {"}-38.851 148.851 0.001 {"}-38.382 148 0.001 {"}-38.21 147.79 0.001 {"}-38 147.108 0.001 {"}-37.535 146.465 0.001 {"}-37.273 146 0.001 {"}-36.768 145.232 0.001 {"}-36.545 144.545 0.001 {"}-36.307 144 0.001 {"}-36.199 143.801 0.001 {"}-36 142.948 0.001 {"}-35.702 142.298 0.001 {"}-35.598 142 0.001 {"}-35.336 141.336 0.001 {"}-35.135 140.865 0.001 {"}-34.83 140 0.001 {"}-34.634 139.366 0.001 {"}-34.538 138.538 0.001 {"}-34.415 138 0.001 {"}-34.298 137.702 0.001 {"}-34 136.273 0.001 {"}-33.917 136.083 0.001 {"}-33.891 136 0.001 {"}-33.848 135.848 0.001 {"}-33.439 134.561 0.001 {"}-33.295 134 0.001 {"}-32.95 133.05 0.001 {"}-32.916 132.916 0.001 {"}-32.634 132 0.001 {"}-32.538 131.462 0.001 {"}-32.44 130.44 0.001 {"}-32.372 130 0.001 {"}-32.345 129.655 0.001 {"}-32.216 128.215 0.001 {"}-32.198 128 0.001 {"}-32.203 127.797 0.001 {"}-32.203 126.203 0.001 {"}-32.208 126 0.001 {"}-32.213 125.787 0.001 {"}-32.213 124.213 0.001 {"}-32.218 124 0.001 {"}-32.264 123.736 0.001 {"}-32.344 122.344 0.001 {"}-32.424 122 0.001 {"}-32.579 121.421 0.001 {"}-32.691 120.691 0.001 {"}-32.942 120 0.001 {"}-33.154 119.154 0.001 {"}-33.313 118.687 0.001 {"}-33.512 118 0.001 {"}-33.663 117.663 0.001 {"}-34 116.97 0.001 {"}-34.246 116.246 0.001 {"}-34.436 116 0.001 {"}-35.007 115.007 0.001 {"}-35.065 114.935 0.001 {"}-35.782 114 0.001 {"}-35.879 113.879 0.001 {"}-36 113.727 0.001 {"}-36.648 112.648 0.001 {"}-37.481 112 0.001 {"}-37.745 111.745 0.001 {"}-38 111.515 0.001 {"}-38.659 110.659 0.001 {"}-39.748 110 0.001 {"}-39.887 109.887 0.001 {"}-40 109.808 0.001 {"}-40.595 109.405 0.001 {"}-41.059 109.059 0.001 {"}-42 108.643 0.001 {"}-42.372 108.372 0.001 {"}-43.287 108 0.001 {"}-43.719 107.719 0.001 {"}-44 107.579 0.001 {"}-44.742 107.258 0.001 {"}-45.088 107.088 0.001 {"}-46 106.768 0.001 {"}-46.518 106.518 0.001 {"}-47.688 106.312 0.001 {"}-48 106.213 0.001 {"}-48.171 106.171 0.001 {"}-48.97 106 0.001 {"}-49.701 105.701 0.001 {"}-50 105.579 0.001 {"}-50.618 105.382 0.001 {"}-51.198 105.198 0.001 {"}-52 104.942 0.001 {"}-52.56 104.56 0.001 {"}-53.957 104.043 0.001 {"}-54 104.023 0.001 {"}-54.016 104.016 0.001 {"}-54.061 104 0.001 {"}-55.154 103.154 0.001 {"}-56 102.546 0.001 {"}-56.246 102.246 0.001 {"}-56.623 102 0.001 {"}-57.197 101.197 0.001 {"}-58 100.073 0.001 {"}-58.02 100.02 0.001 {"}-58.032 100 0.001 {"}-58.069 99.931 0.001 {"}-58.68 98.68 0.001 {"}-59.152 98 0.001 {"}-59.35 97.35 0.001 {"}-59.715 96.285 0.001 {"}-59.808 96 0.001 {"}-59.877 95.877 0.001 {"}-60 95.636 0.001 {"}-60.468 94.468 0.001 {"}-60.701 94 0.001 {"}-60.866 93.134 0.001 {"}-60.901 92.901 0.001 {"}-61.091 92 0.001 {"}-61.215 91.215 0.001 {"}-61.263 90.737 0.001 {"}-61.368 90 0.001 {"}-61.447 89.447 0.001 {"}-61.766 88.234 0.001 {"}-61.808 88 0.001 {"}-61.836 87.836 0.001 {"}-62 86.364 0.001 {"}-62.02 86.02 0.001 {"}-62.022 86 0.001 {"}-62.025 85.975 0.001 {"}-62.233 84.233 0.001 {"}-62.257 84 0.001 {"}-62.264 83.736 0.001 {"}-62.264 82.264 0.001 {"}-62.273 82 0.001 {"}-62.264 81.736 0.001 {"}-62.344 80.344 0.001 {"}-62.335 80 0.001 {"}-62.314 79.686 0.001 {"}-62.314 78.314 0.001 {"}-62.296 78 0.001 {"}-62.286 77.714 0.001 {"}-62.216 76.216 0.001 {"}-62.208 76 0.001 {"}-62.203 75.797 0.001 {"}-62.203 74.203 0.001 {"}-62.198 74 0.001 {"}-62.18 73.82 0.001 {"}-62.018 72.018 0.001 {"}-62.016 72 0.001 {"}-62.015 71.985 0.001 {"}-62 71.636 0.001 {"}-61.887 70.113 0.001 {"}-61.883 70 0.001 {"}-61.872 69.872 0.001 {"}-61.706 68.294 0.001 {"}-61.68 68 0.001 {"}-61.643 67.643 0.001 {"}-61.558 66.442 0.001 {"}-61.508 66 0.001 {"}-61.435 65.435 0.001 {"}-61.372 64.628 0.001 {"}-61.28 64 0.001 {"}-61.265 63.265 0.001 {"}-61.244 62.756 0.001 {"}-61.229 62 0.001 {"}-61.197 61.197 0.001 {"}-61.182 60.818 0.001 {"}-61.149 60 0.001 {"}-61.149 59.149 0.001 {"}-61.162 58.838 0.001 {"}-61.162 58 0.001 {"}-61.18 57.18 0.001 {"}-61.197 56.803 0.001 {"}-61.215 56 0.001 {"}-61.249 55.249 0.001 {"}-61.273 54.727 0.001 {"}-61.306 54 0.001 {"}-61.364 53.364 0.001 {"}-61.485 52.515 0.001 {"}-61.536 52 0.001 {"}-61.605 51.605 0.001 {"}-61.813 50.187 0.001 {"}-61.844 50 0.001 {"}-61.877 49.877 0.001 {"}-62 49.455 0.001 {"}-62.233 48.233 0.001 {"}-62.312 48 0.001 {"}-62.406 47.594 0.001 {"}-62.536 46.536 0.001 {"}-62.701 46 0.001 {"}-62.866 45.134 0.001 {"}-62.901 44.901 0.001 {"}-63.091 44 0.001 {"}-63.178 43.178 0.001 {"}-63.219 42.781 0.001 {"}-63.301 42 0.001 {"}-63.41 41.41 0.001 {"}-63.738 40.262 0.001 {"}-63.796 40 0.001 {"}-63.823 39.823 0.001 {"}-64 39.182 0.001 {"}-64.163 38.163 0.001 {"}-64.197 38 0.001 {"}-64.256 37.744 0.001 {"}-64.388 36.388 0.001 {"}-64.513 36 0.001 {"}-64.647 35.353 0.001 {"}-64.755 34.755 0.001 {"}-64.921 34 0.001 {"}-65.066 33.066 0.001 {"}-65.085 32.915 0.001 {"}-65.219 32 0.001 {"}-65.336 31.336 0.001 {"}-65.481 30.519 0.001 {"}-65.572 30 0.001 {"}-65.627 29.627 0.001 {"}-65.906 28.094 0.001 {"}-65.921 28 0.001 {"}-65.939 27.939 0.001 {"}-66 27.746 0.001 {"}-66.323 26.323 0.001 {"}-66.397 26 0.001 {"}-66.472 25.528 0.001 {"}-66.601 24.601 0.001 {"}-66.701 24 0.001 {"}-66.775 23.225 0.001 {"}-66.814 22.814 0.001 {"}-66.892 22 0.001 {"}-66.871 21.129 0.001 {"}-66.871 20.871 0.001 {"}-66.851 20 0.001 {"}-66.734 19.266 0.001 {"}-66.685 18.685 0.001 {"}-66.589 18 0.001 {"}-66.453 17.547 0.001 {"}-66.21 16.21 0.001 {"}-66.158 16 0.001 {"}-66.113 15.887 0.001 {"}-66 15.475 0.001 {"}-65.55 14.45 0.001 {"}-65.368 14 0.001 {"}-64.821 13.179 0.001 {"}-64.582 12.582 0.001 {"}-64.301 12 0.001 {"}-64.166 11.834 0.001 {"}-64 11.418 0.001 {"}-63.409 10.591 0.001 {"}-62.987 10 0.001 {"}-62.436 9.564 0.001 {"}-62 8.848 0.001 {"}-61.603 8.397 0.001 {"}-61.306 8 0.001 {"}-60.558 7.442 0.001 {"}-60 6.564 0.001 {"}-59.738 6.262 0.001 {"}-59.549 6 0.001 {"}-58.685 5.315 0.001 {"}-58 4.156 0.001 {"}-57.926 4.074 0.001 {"}-57.883 4 0.001 {"}-56.844 3.156 0.001 {"}-56.408 2.408 0.001 {"}-56.132 2 0.001 {"}-56.054 1.946 0.001 {"}-56 1.836 0.001 {"}-55.035 0.965 0.001 {"}-54.432 0 0.001 {"}-54.204 -0.204 0.001 {"}-54 -0.864 0.001 {"}-53.526 -1.526 0.001 {"}-53.318 -2 0.001 {"}-52.672 -2.672 0.001 {"}-52.253 -3.747 0.001 {"}-52.12 -4 0.001 {"}-52.062 -4.062 0.001 {"}-52 -4.273 0.001 {"}-51.232 -5.232 0.001 {"}-50.872 -6 0.001 {"}-50.462 -6.462 0.001 {"}-50 -7.858 0.001 {"}-49.935 -7.935 0.001 {"}-49.912 -8 0.001 {"}-49.615 -8.385 0.001 {"}-49.065 -9.065 0.001 {"}-48.552 -10 0.001 {"}-48.258 -10.258 0.001 {"}-48 -11.197 0.001 {"}-47.646 -11.646 0.001 {"}-47.479 -12 0.001 {"}-46.688 -12.688 0.001 {"}-46.214 -13.786 0.001 {"}-46.091 -14 0.001 {"}-46.042 -14.042 0.001 {"}-46 -14.164 0.001 {"}-45.053 -15.053 0.001 {"}-44.432 -16 0.001 {"}-44.191 -16.191 0.001 {"}-44 -16.797 0.001 {"}-43.399 -17.399 0.001 {"}-42.958 -18 0.001 {"}-42.399 -18.399 0.001 {"}-42 -19.368 0.001 {"}-41.729 -19.729 0.001 {"}-41.598 -20 0.001 {"}-40.917 -20.917 0.001 {"}-40.813 -21.187 0.001 {"}-40.415 -22 0.001 {"}-40.236 -22.236 0.001 {"}-40 -23.152 0.001 {"}-39.678 -23.678 0.001 {"}-39.551 -24 0.001 {"}-38.959 -24.959 0.001 {"}-38.922 -25.078 0.001 {"}-38.535 -26 0.001 {"}-38.364 -26.364 0.001 {"}-38.015 -27.985 0.001 {"}-38.01 -28 0.001 {"}-38.006 -28.006 0.001 {"}-38 -28.045 0.001 {"}-37.32 -29.32 0.001 {"}-36.991 -30 0.001 {"}-36.603 -30.603 0.001 {"}-36.346 -31.654 0.001 {"}-36.21 -32 0.001 {"}-36.124 -32.124 0.001 {"}-36 -32.766 0.001 {"}-35.594 -33.594 0.001 {"}-35.424 -34 0.001 {"}-34.855 -34.855 0.001 {"}-34.74 -35.26 0.001 {"}-34.432 -36 0.001 {"}-34.254 -36.254 0.001 {"}-34 -37.219 0.001 {"}-33.688 -37.688 0.001 {"}-33.542 -38 0.001 {"}-32.886 -38.886 0.001 {"}-32.743 -39.257 0.001 {"}-32.38 -40 0.001 {"}-32.239 -40.239 0.001 {"}-32 -40.984 0.001 {"}-31.539 -41.539 0.001 {"}-31.215 -42 0.001 {"}-30.607 -42.607 0.001 {"}-30 -43.782 0.001 {"}-29.902 -43.902 0.001 {"}-29.828 -44 0.001 {"}-29.497 -44.503 0.001 {"}-29.084 -45.084 0.001 {"}-28.643 -46 0.001 {"}-28.398 -46.398 0.001 {"}-28 -47.394 0.001 {"}-27.78 -47.78 0.001 {"}-27.684 -48 0.001 {"}-27.559 -48.441 0.001 {"}-27.324 -49.324 0.001 {"}-27.124 -50 0.001 {"}-26.989 -50.989 0.001 {"}-26.987 -51.013 0.001 {"}-26.864 -52 0.001 {"}-26.829 -52.829 0.001 {"}-26.814 -53.186 0.001 {"}-26.78 -54 0.001 {"}-26.851 -54.851 0.001 {"}-26.864 -55.136 0.001 {"}-26.942 -56 0.001 {"}-27.069 -56.931 0.001 {"}-27.102 -57.102 0.001 {"}-27.236 -58 0.001 {"}-27.424 -58.576 0.001 {"}-28 -59.527 0.001 {"}-28.126 -59.874 0.001 {"}-28.189 -60 0.001 {"}-28.364 -60.364 0.001 {"}-28.715 -61.285 0.001 {"}-29.219 -62 0.001 {"}-29.517 -62.483 0.001 {"}-30 -62.948 0.001 {"}-30.427 -63.573 0.001 {"}-30.982 -64 0.001 {"}-31.434 -64.566 0.001 {"}-32 -64.954 0.001 {"}-32.531 -65.469 0.001 {"}-33.394 -66 0.001 {"}-33.731 -66.269 0.001 {"}-34 -66.428 0.001 {"}-34.727 -66.727 0.001 {"}-35.105 -66.895 0.001 {"}-36 -67.225 0.001 {"}-36.517 -67.483 0.001 {"}-37.744 -67.744 0.001 {"}-38 -67.831 0.001 {"}-38.13 -67.87 0.001 {"}-38.788 -68 0.001 {"}-39.697 -68.303 0.001 {"}-40 -68.383 0.001 {"}-40.404 -68.404 0.001 {"}-41.488 -68.512 0.001 {"}-42 -68.537 0.001 {"}-42.537 -68.537 0.001 {"}-43.463 -68.537 0.001 {"}-44 -68.537 0.001 {"}-44.49 -68.49 0.001 {"}-45.617 -68.383 0.001 {"}-46 -68.346 0.001 {"}-46.269 -68.269 0.001 {"}-47.212 -68 0.001 {"}-47.891 -67.891 0.001 {"}-48 -67.879 0.001 {"}-48.155 -67.845 0.001 {"}-49.669 -67.669 0.001 {"}-50 -67.576 0.001 {"}-50.579 -67.421 0.001 {"}-51.309 -67.309 0.001 {"}-52 -67.058 0.001 {"}-52.862 -66.862 0.001 {"}-53.219 -66.781 0.001 {"}-54 -66.603 0.001 {"}-54.408 -66.408 0.001 {"}-55.207 -66 0.001 {"}-55.832 -65.832 0.001 {"}-56 -65.787 0.001 {"}-56.329 -65.671 0.001 {"}-57.462 -65.462 0.001 {"}-58 -65.136 0.001 {"}-58.814 -64.814 0.001 {"}-59.461 -64.539 0.001 {"}-60 -64.316 0.001 {"}-60.214 -64.214 0.001 {"}-60.559 -64 0.001 {"}-61.606 -63.606 0.001 {"}-62 -63.376 0.001 {"}-62.927 -62.927 0.001 {"}-63.497 -62.503 0.001 {"}-64 -62.156 0.001 {"}-64.101 -62.101 0.001 {"}-64.252 -62 0.001 {"}-65.452 -61.452 0.001 {"}-66 -60.918 0.001 {"}-66.551 -60.551 0.001 {"}-67.377 -60 0.001 {"}-67.832 -59.832 0.001 {"}-68 -59.688 0.001 {"}-68.759 -59.241 0.001 {"}-69.083 -59.083 0.001 {"}-70 -58.192 0.001 {"}-70.104 -58.104 0.001 {"}-70.218 -58 0.001 {"}-71.306 -57.306 0.001 {"}-72 -56.428 0.001 {"}-72.227 -56.227 0.001 {"}-72.454 -56 0.001 {"}-73.332 -55.332 0.001 {"}-74 -54.234 0.001 {"}-74.111 -54.111 0.001 {"}-74.204 -54 0.001 {"}-75.088 -53.088 0.001 {"}-75.292 -52.708 0.001 {"}-75.731 -52 0.001 {"}-75.845 -51.845 0.001 {"}-76 -51.482 0.001 {"}-76.622 -50.622 0.001 {"}-76.964 -50 0.001 {"}-77.455 -49.455 0.001 {"}-78 -48.273 0.001 {"}-78.117 -48.117 0.001 {"}-78.204 -48 0.001 {"}-79.009 -47.009 0.001 {"}-79.03 -46.97 0.001 {"}-79.603 -46 0.001 {"}-79.797 -45.797 0.001 {"}-80 -45.377 0.001 {"}-80.622 -44.622 0.001 {"}-81.014 -44 0.001 {"}-81.543 -43.543 0.001 {"}-82 -42.829 0.001 {"}-82.415 -42.415 0.001 {"}-82.781 -42 0.001 {"}-83.424 -41.424 0.001 {"}-84 -40.273 0.001 {"}-84.117 -40.117 0.001 {"}-84.204 -40 0.001 {"}-85.129 -39.129 0.001 {"}-85.475 -38.525 0.001 {"}-85.818 -38 0.001 {"}-85.901 -37.902 0.001 {"}-86 -37.685 0.001 {"}-86.79 -36.79 0.001 {"}-87.33 -36 0.001 {"}-87.697 -35.697 0.001 {"}-88 -35.204 0.001 {"}-88.559 -34.559 0.001 {"}-89.014 -34 0.001 {"}-89.579 -33.579 0.001 {"}-90 -32.96 0.001 {"}-90.48 -32.48 0.001 {"}-90.909 -32 0.001 {"}-91.539 -31.539 0.001 {"}-92 -30.848 0.001 {"}-92.424 -30.424 0.001 {"}-92.804 -30 0.001 {"}-93.483 -29.483 0.001 {"}-94 -28.737 0.001 {"}-94.359 -28.359 0.001 {"}-94.632 -28 0.001 {"}-95.34 -27.34 0.001 {"}-96 -26.205 0.001 {"}-96.092 -26.092 0.001 {"}-96.156 -26 0.001 {"}-96.654 -25.346 0.001 {"}-96.962 -24.962 0.001 {"}-97.492 -24 0.001 {"}-97.696 -23.696 0.001 {"}-98 -23.018 0.001 {"}-98.436 -22.436 0.001 {"}-98.727 -22 0.001 {"}-99.306 -21.306 0.001 {"}-99.713 -20.287 0.001 {"}-99.861 -20 0.001 {"}-99.908 -19.908 0.001 {"}-100 -19.636 0.001 {"}-100.635 -18.635 0.001 {"}-101.013 -18 0.001 {"}-101.482 -17.482 0.001 {"}-102 -16.273 0.001 {"}-102.113 -16.113 0.001 {"}-102.192 -16 0.001 {"}-102.545 -15.455 0.001 {"}-102.915 -14.915 0.001 {"}-103.394 -14 0.001 {"}-103.674 -13.674 0.001 {"}-104 -13.021 0.001 {"}-104.415 -12.415 0.001 {"}-104.664 -12 0.001 {"}-105.109 -11.109 0.001 {"}-105.273 -10.727 0.001 {"}-105.603 -10 0.001 {"}-105.764 -9.764 0.001 {"}-106 -9.207 0.001 {"}-106.458 -8.458 0.001 {"}-106.699 -8 0.001 {"}-107.03 -7.03 0.001 {"}-107.057 -6.943 0.001 {"}-107.364 -6 0.001 {"}-107.614 -5.614 0.001 {"}-108 -4.409 0.001 {"}-108.128 -4.128 0.001 {"}-108.192 -4 0.001 {"}-108.273 -3.727 0.001 {"}-108.636 -2.636 0.001 {"}-108.804 -2 0.001 {"}-109.012 -1.012 0.001 {"}-109.016 -0.984 0.001 {"}-109.203 0 0.001 {"}-109.392 0.608 0.001 {"}-109.552 1.552 0.001 {"}-109.664 2 0.001 {"}-109.683 2.317 0.001 {"}-109.736 3.736 0.001 {"}-109.751 4 0.001 {"}-109.768 4.232 0.001 {"}-109.891 5.891 0.001 {"}-109.899 6 0.001 {"}-109.897 6.103 0.001 {"}-109.834 7.834 0.001 {"}-109.831 8 0.001 {"}-109.822 8.178 0.001 {"}-109.764 9.764 0.001 {"}-109.751 10 0.001 {"}-109.694 10.306 0.001 {"}-109.587 11.587 0.001 {"}-109.489 12 0.001 {"}-109.329 12.671 0.001 {"}-109.22 13.22 0.001 {"}-109.014 14 0.001 {"}-108.857 14.857 0.001 {"}-108.777 15.223 0.001 {"}-108.626 16 0.001 {"}-108.47 16.47 0.001 {"}-108 17.409 0.001 {"}-107.857 17.857 0.001 {"}-107.785 18 0.001 {"}-107.622 18.378 0.001 {"}-107.293 19.293 0.001 {"}-106.898 20 0.001 {"}-106.664 20.664 0.001 {"}-106.141 21.859 0.001 {"}-106.085 22 0.001 {"}-106.053 22.053 0.001 {"}-106 22.127 0.001 {"}-105.293 23.293 0.001 {"}-104.829 24 0.001 {"}-104.565 24.565 0.001 {"}-104 25.327 0.001 {"}-103.751 25.751 0.001 {"}-103.519 26 0.001 {"}-103.039 26.961 0.001 {"}-103.013 27.013 0.001 {"}-102.519 28 0.001 {"}-102.364 28.364 0.001 {"}-102 28.909 0.001 {"}-101.629 29.629 0.001 {"}-101.329 30 0.001 {"}-100.886 30.886 0.001 {"}-100.595 31.405 0.001 {"}-100.273 32 0.001 {"}-100.182 32.182 0.001 {"}-100 32.467 0.001 {"}-99.512 33.512 0.001 {"}-99.234 34 0.001 {"}-98.909 34.909 0.001 {"}-98.808 35.192 0.001 {"}-98.519 36 0.001 {"}-98.393 36.393 0.001 {"}-98 37.454 0.001 {"}-97.899 37.899 0.001 {"}-97.881 38 0.001 {"}-97.873 38.127 0.001 {"}-97.683 39.683 0.001 {"}-97.664 40 0.001 {"}-97.664 40.336 0.001 {"}-97.617 41.617 0.001 {"}-97.617 42 0.001 {"}-97.63 42.37 0.001 {"}-97.589 43.589 0.001 {"}-97.602 44 0.001 {"}-97.631 44.369 0.001 {"}-97.596 45.596 0.001 {"}-97.622 46 0.001 {"}-97.645 46.355 0.001 {"}-97.645 47.645 0.001 {"}-97.665 48 0.001 {"}-97.657 48.343 0.001 {"}-97.602 49.602 0.001 {"}-97.593 50 0.001 {"}-97.588 50.412 0.001 {"}-97.564 51.564 0.001 {"}-97.559 52 0.001 {"}-97.554 52.446 0.001 {"}-97.531 53.531 0.001 {"}-97.526 54 0.001 {"}-97.516 54.484 0.001 {"}-97.476 55.476 0.001 {"}-97.465 56 0.001 {"}-97.46 56.54 0.001 {"}-97.46 57.46 0.001 {"}-97.455 58 0.001 {"}-97.455 58.545 0.001 {"}-97.455 59.455 0.001 {"}-97.455 60 0.001 {"}-97.471 60.529 0.001 {"}-97.511 61.511 0.001 {"}-97.526 62 0.001 {"}-97.536 62.464 0.001 {"}-97.559 63.559 0.001 {"}-97.568 64 0.001 {"}-97.585 64.415 0.001 {"}-97.636 65.636 0.001 {"}-97.651 66 0.001 {"}-97.659 66.341 0.001 {"}-97.687 67.687 0.001 {"}-97.693 68 0.001 {"}-97.683 68.317 0.001 {"}-97.629 69.629 0.001 {"}-97.618 70 0.001 {"}-97.602 70.398 0.001 {"}-97.577 71.577 0.001 {"}-97.559 72 0.001 {"}-97.469 72.531 0.001 {"}-97.406 73.406 0.001 {"}-97.278 74 0.001 {"}-97.062 74.938 0.001 {"}-97.049 75.049 0.001 {"}-96.76 76 0.001 {"}-96.645 76.645 0.001 {"}-96.531 77.469 0.001 {"}-96.442 78 0.001 {"}-96.39 78.39 0.001 {"}-96.136 79.864 0.001 {"}-96.117 80 0.001 {"}-96.107 80.107 0.001 {"}-96 80.654 0.001 {"}-95.86 81.86 0.001 {"}-95.836 82 0.001 {"}-95.832 82.168 0.001 {"}-95.792 83.792 0.001 {"}-95.787 84 0.001 {"}-95.764 84.236 0.001 {"}-95.764 85.764 0.001 {"}-95.736 86 0.001 {"}-95.704 86.296 0.001 {"}-95.62 87.62 0.001 {"}-95.576 88 0.001 {"}-95.569 88.431 0.001 {"}-95.569 89.569 0.001 {"}-95.561 90 0.001 {"}-95.553 90.447 0.001 {"}-95.553 91.553 0.001 {"}-95.545 92 0.001 {"}-95.51 92.49 0.001 {"}-95.51 93.51 0.001 {"}-95.47 94 0.001 {"}-95.458 94.542 0.001 {"}-95.501 95.501 0.001 {"}-95.489 96 0.001 {"}-95.501 96.499 0.001 {"}-95.552 97.552 0.001 {"}-95.564 98 0.001 {"}-95.584 98.416 0.001 {"}-95.584 99.584 0.001 {"}-95.603 100 0.001 {"}-95.636 100.364 0.001 {"}-95.636 101.636 0.001 {"}-95.664 102 0.001 {"}-95.699 102.301 0.001 {"}-95.811 103.811 0.001 {"}-95.831 104 0.001 {"}-95.859 104.141 0.001 {"}-96 105.182 0.001 {"}-96.164 105.836 0.001 {"}-96.192 106 0.001 {"}-96.242 106.242 0.001 {"}-96.565 107.435 0.001 {"}-96.664 108 0.001 {"}-96.758 108.758 0.001 {"}-96.803 109.197 0.001 {"}-96.909 110 0.001 {"}-97.171 110.829 0.001 {"}-97.285 111.285 0.001 {"}-97.489 112 0.001 {"}-97.642 112.358 0.001 {"}-98 113.533 0.001 {"}-98.131 113.869 0.001 {"}-98.192 114 0.001 {"}-98.262 114.262 0.001 {"}-98.623 115.377 0.001 {"}-98.764 116 0.001 {"}-99.03 116.97 0.001 {"}-99.05 117.05 0.001 {"}-99.299 118 0.001 {"}-99.547 118.453 0.001 {"}-100 119.636 0.001 {"}-100.123 119.877 0.001 {"}-100.192 120 0.001 {"}-100.273 120.273 0.001 {"}-100.636 121.364 0.001 {"}-100.804 122 0.001 {"}-101.053 122.947 0.001 {"}-101.091 123.091 0.001 {"}-101.33 124 0.001 {"}-101.52 124.48 0.001 {"}-101.744 125.744 0.001 {"}-101.818 126 0.001 {"}-101.869 126.131 0.001 {"}-102 126.675 0.001 {"}-102.412 127.588 0.001 {"}-102.515 128 0.001 {"}-102.639 128.639 0.001 {"}-102.768 129.232 0.001 {"}-102.909 130 0.001 {"}-103.079 130.921 0.001 {"}-103.107 131.107 0.001 {"}-103.264 132 0.001 {"}-103.444 132.556 0.001 {"}-103.574 133.574 0.001 {"}-103.677 134 0.001 {"}-103.747 134.253 0.001 {"}-104 135.455 0.001 {"}-104.145 135.855 0.001 {"}-104.192 136 0.001 {"}-104.234 136.234 0.001 {"}-104.553 137.447 0.001 {"}-104.632 138 0.001 {"}-104.758 138.758 0.001 {"}-104.82 139.18 0.001 {"}-104.964 140 0.001 {"}-105.154 140.846 0.001 {"}-105.204 141.204 0.001 {"}-105.36 142 0.001 {"}-105.509 142.491 0.001 {"}-105.694 143.694 0.001 {"}-105.768 144 0.001 {"}-105.818 144.182 0.001 {"}-106 145.346 0.001 {"}-106.134 145.866 0.001 {"}-106.172 146 0.001 {"}-106.218 146.218 0.001 {"}-106.531 147.469 0.001 {"}-106.632 148 0.001 {"}-106.717 148.717 0.001 {"}-106.768 149.232 0.001 {"}-106.864 150 0.001 {"}-106.96 150.96 0.001 {"}-106.97 151.03 0.001 {"}-107.058 152 0.001 {"}-107.218 152.782 0.001 {"}-107.282 153.282 0.001 {"}-107.411 154 0.001 {"}-107.492 154.508 0.001 {"}-107.621 155.621 0.001 {"}-107.677 156 0.001 {"}-107.699 156.301 0.001 {"}-107.751 157.751 0.001 {"}-107.768 158 0.001 {"}-107.799 158.201 0.001 {"}-108 159.682 0.001 {"}-108.054 159.946 0.001 {"}-108.064 160 0.001 {"}-108.073 160.073 0.001 {"}-108.168 161.832 0.001 {"}-108.192 162 0.001 {"}-108.192 162.192 0.001 {"}-108.192 163.808 0.001 {"}-108.192 164 0.001 {"}-108.192 164.192 0.001 {"}-108.192 165.808 0.001 {"}-108.192 166 0.001 {"}-108.187 166.187 0.001 {"}-108.187 167.813 0.001 {"}-108.182 168 0.001 {"}-108.149 168.149 0.001 {"}-108 168.654 0.001 {"}-107.772 169.772 0.001 {"}-107.731 170 0.001 {"}-107.646 170.354 0.001 {"}-107.491 171.491 0.001 {"}-107.33 172 0.001 {"}-107.122 172.878 0.001 {"}-107.079 173.079 0.001 {"}-106.848 174 0.001 {"}-106.71 174.71 0.001 {"}-106.539 175.461 0.001 {"}-106.428 176 0.001 {"}-106.309 176.309 0.001 {"}-106 176.909 0.001 {"}-105.731 177.731 0.001 {"}-105.584 178 0.001 {"}-105.353 178.647 0.001 {"}-105.187 179.187 0.001 {"}-104.848 180 0.001 @vectorlist {Favored} color= sky master= {Favored} {level 0.02}P -89.713 -180 0.02 {"}-89.133 -179.133 0.02 {"}-89.03 -178.97 0.02 {"}-88.212 -178 0.02 {"}-88.117 -177.883 0.02 {"}-88 -177.774 0.02 {"}-87.12 -176.88 0.02 {"}-86.034 -176 0.02 {"}-86.017 -175.983 0.02 {"}-86 -175.969 0.02 {"}-85.916 -175.916 0.02 {"}-84.827 -175.173 0.02 {"}-84 -174.774 0.02 {"}-83.46 -174.54 0.02 {"}-82.128 -174.128 0.02 {"}-82 -174.081 0.02 {"}-81.932 -174.068 0.02 {"}-81.432 -174 0.02 {"}-80.232 -173.768 0.02 {"}-80 -173.738 0.02 {"}-79.749 -173.749 0.02 {"}-78.185 -173.815 0.02 {"}-78 -173.824 0.02 {"}-77.859 -173.859 0.02 {"}-77.364 -174 0.02 {"}-76.225 -174.225 0.02 {"}-76 -174.273 0.02 {"}-75.552 -174.448 0.02 {"}-74.736 -174.736 0.02 {"}-74 -175.063 0.02 {"}-73.376 -175.376 0.02 {"}-72.432 -176 0.02 {"}-72.137 -176.137 0.02 {"}-72 -176.211 0.02 {"}-71.454 -176.546 0.02 {"}-70.873 -176.873 0.02 {"}-70 -177.57 0.02 {"}-69.759 -177.759 0.02 {"}-69.517 -178 0.02 {"}-68.607 -178.607 0.02 {"}-68 -179.137 0.02 {"}-67.513 -179.513 0.02 {"}-67.042 -180 0.02 {"}P -83.64 16 0.02 {"}-82.425 15.575 0.02 {"}-82 15.422 0.02 {"}-81.13 14.87 0.02 {"}-80.299 14.299 0.02 {"}-80 14.097 0.02 {"}-79.947 14.053 0.02 {"}-79.899 14 0.02 {"}-78.832 13.168 0.02 {"}-78 12.469 0.02 {"}-77.754 12.246 0.02 {"}-77.546 12 0.02 {"}-76.722 11.278 0.02 {"}-76 10.548 0.02 {"}-75.728 10.272 0.02 {"}-75.505 10 0.02 {"}-74.707 9.293 0.02 {"}-74 8.545 0.02 {"}-73.721 8.279 0.02 {"}-73.478 8 0.02 {"}-72.658 7.342 0.02 {"}-72 6.698 0.02 {"}-71.625 6.375 0.02 {"}-71.282 6 0.02 {"}-70.545 5.455 0.02 {"}-70 4.968 0.02 {"}-69.446 4.554 0.02 {"}-68.884 4 0.02 {"}-68.338 3.662 0.02 {"}-68 3.409 0.02 {"}-67.143 2.857 0.02 {"}-66.15 2 0.02 {"}-66.054 1.946 0.02 {"}-66 1.902 0.02 {"}-65.745 1.745 0.02 {"}-64.79 1.21 0.02 {"}-64 0.549 0.02 {"}-63.671 0.329 0.02 {"}-63.34 0 0.02 {"}-62.527 -0.527 0.02 {"}-62 -1.089 0.02 {"}-61.496 -1.496 0.02 {"}-61.069 -2 0.02 {"}-60.473 -2.473 0.02 {"}-60 -3.108 0.02 {"}-59.542 -3.542 0.02 {"}-59.23 -4 0.02 {"}-58.592 -4.592 0.02 {"}-58 -5.534 0.02 {"}-57.772 -5.772 0.02 {"}-57.646 -6 0.02 {"}-56.817 -6.817 0.02 {"}-56.312 -7.688 0.02 {"}-56.108 -8 0.02 {"}-56.051 -8.051 0.02 {"}-56 -8.139 0.02 {"}-55.081 -9.081 0.02 {"}-54.537 -10 0.02 {"}-54.266 -10.266 0.02 {"}-54 -10.794 0.02 {"}-53.418 -11.418 0.02 {"}-53.131 -12 0.02 {"}-52.612 -12.612 0.02 {"}-52.046 -13.954 0.02 {"}-52.021 -14 0.02 {"}-52.012 -14.012 0.02 {"}-52 -14.041 0.02 {"}-51.094 -15.094 0.02 {"}-50.641 -16 0.02 {"}-50.355 -16.355 0.02 {"}-50 -17.252 0.02 {"}-49.642 -17.642 0.02 {"}-49.47 -18 0.02 {"}-48.821 -18.821 0.02 {"}-48.585 -19.415 0.02 {"}-48.289 -20 0.02 {"}-48.165 -20.165 0.02 {"}-48 -20.584 0.02 {"}-47.349 -21.349 0.02 {"}-47.039 -22 0.02 {"}-46.63 -22.63 0.02 {"}-46.188 -23.812 0.02 {"}-46.101 -24 0.02 {"}-46.062 -24.062 0.02 {"}-46 -24.24 0.02 {"}-45.271 -25.271 0.02 {"}-44.96 -26 0.02 {"}-44.615 -26.615 0.02 {"}-44.252 -27.748 0.02 {"}-44.148 -28 0.02 {"}-44.094 -28.094 0.02 {"}-44 -28.405 0.02 {"}-43.395 -29.395 0.02 {"}-43.18 -30 0.02 {"}-42.805 -30.805 0.02 {"}-42.668 -31.332 0.02 {"}-42.433 -32 0.02 {"}-42.287 -32.287 0.02 {"}-42 -33.457 0.02 {"}-41.806 -33.806 0.02 {"}-41.745 -34 0.02 {"}-41.527 -34.473 0.02 {"}-41.155 -35.155 0.02 {"}-40.872 -36 0.02 {"}-40.617 -36.617 0.02 {"}-40.384 -37.616 0.02 {"}-40.261 -38 0.02 {"}-40.192 -38.192 0.02 {"}-40 -39.054 0.02 {"}-39.676 -39.676 0.02 {"}-39.569 -40 0.02 {"}-39.317 -40.683 0.02 {"}-39.13 -41.13 0.02 {"}-38.854 -42 0.02 {"}-38.689 -42.689 0.02 {"}-38.535 -43.465 0.02 {"}-38.415 -44 0.02 {"}-38.355 -44.355 0.02 {"}-38.045 -45.955 0.02 {"}-38.037 -46 0.02 {"}-38.035 -46.035 0.02 {"}-38 -46.377 0.02 {"}-37.781 -47.781 0.02 {"}-37.748 -48 0.02 {"}-37.749 -48.251 0.02 {"}-37.849 -49.849 0.02 {"}-37.849 -50 0.02 {"}-37.873 -50.127 0.02 {"}-38 -50.56 0.02 {"}-38.251 -51.749 0.02 {"}-38.335 -52 0.02 {"}-38.635 -52.635 0.02 {"}-38.833 -53.167 0.02 {"}-39.411 -54 0.02 {"}-39.659 -54.341 0.02 {"}-40 -54.664 0.02 {"}-40.627 -55.373 0.02 {"}-41.495 -56 0.02 {"}-41.766 -56.234 0.02 {"}-42 -56.375 0.02 {"}-42.762 -56.762 0.02 {"}-43.063 -56.937 0.02 {"}-44 -57.29 0.02 {"}-44.541 -57.459 0.02 {"}-45.681 -57.681 0.02 {"}-46 -57.765 0.02 {"}-46.208 -57.792 0.02 {"}-47.903 -57.903 0.02 {"}-48 -57.914 0.02 {"}-48.086 -57.914 0.02 {"}-49.869 -57.869 0.02 {"}-50 -57.868 0.02 {"}-50.151 -57.849 0.02 {"}-51.683 -57.683 0.02 {"}-52 -57.642 0.02 {"}-52.44 -57.56 0.02 {"}-53.401 -57.401 0.02 {"}-54 -57.284 0.02 {"}-54.992 -57.008 0.02 {"}-55.005 -57.005 0.02 {"}-56 -56.665 0.02 {"}-56.479 -56.479 0.02 {"}-57.438 -56 0.02 {"}-57.875 -55.875 0.02 {"}-58 -55.819 0.02 {"}-58.331 -55.669 0.02 {"}-59.304 -55.304 0.02 {"}-60 -54.878 0.02 {"}-60.56 -54.56 0.02 {"}-61.209 -54 0.02 {"}-61.736 -53.736 0.02 {"}-62 -53.505 0.02 {"}-62.895 -52.895 0.02 {"}-63.727 -52 0.02 {"}-63.89 -51.89 0.02 {"}-64 -51.745 0.02 {"}-64.927 -50.927 0.02 {"}-65.581 -50 0.02 {"}-65.809 -49.809 0.02 {"}-66 -49.5 0.02 {"}-66.764 -48.764 0.02 {"}-67.236 -48 0.02 {"}-67.617 -47.617 0.02 {"}-68 -46.87 0.02 {"}-68.43 -46.43 0.02 {"}-68.684 -46 0.02 {"}-69.319 -45.319 0.02 {"}-69.942 -44.058 0.02 {"}-69.976 -44 0.02 {"}-69.987 -43.987 0.02 {"}-70 -43.96 0.02 {"}-70.942 -42.942 0.02 {"}-71.518 -42 0.02 {"}-71.746 -41.746 0.02 {"}-72 -41.272 0.02 {"}-72.636 -40.636 0.02 {"}-73.072 -40 0.02 {"}-73.519 -39.519 0.02 {"}-74 -38.743 0.02 {"}-74.379 -38.379 0.02 {"}-74.65 -38 0.02 {"}-75.324 -37.324 0.02 {"}-76 -36.293 0.02 {"}-76.149 -36.149 0.02 {"}-76.248 -36 0.02 {"}-77.056 -35.056 0.02 {"}-77.196 -34.804 0.02 {"}-77.692 -34 0.02 {"}-77.827 -33.827 0.02 {"}-78 -33.51 0.02 {"}-78.696 -32.696 0.02 {"}-79.148 -32 0.02 {"}-79.533 -31.533 0.02 {"}-80 -30.823 0.02 {"}-80.41 -30.41 0.02 {"}-80.729 -30 0.02 {"}-81.35 -29.35 0.02 {"}-82 -28.457 0.02 {"}-82.232 -28.232 0.02 {"}-82.424 -28 0.02 {"}-83.206 -27.206 0.02 {"}-84 -26.096 0.02 {"}-84.048 -26.048 0.02 {"}-84.087 -26 0.02 {"}-84.749 -25.251 0.02 {"}-84.987 -24.987 0.02 {"}-85.642 -24 0.02 {"}-85.787 -23.787 0.02 {"}-86 -23.38 0.02 {"}-86.572 -22.572 0.02 {"}-86.881 -22 0.02 {"}-87.288 -21.288 0.02 {"}-87.701 -20.299 0.02 {"}-87.841 -20 0.02 {"}-87.892 -19.892 0.02 {"}-88 -19.609 0.02 {"}-88.574 -18.574 0.02 {"}-88.815 -18 0.02 {"}-89.234 -17.234 0.02 {"}-89.579 -16.421 0.02 {"}-89.776 -16 0.02 {"}-89.853 -15.853 0.02 {"}-90 -15.515 0.02 {"}-90.584 -14.584 0.02 {"}-90.866 -14 0.02 {"}-91.301 -13.301 0.02 {"}-91.854 -12.146 0.02 {"}-91.93 -12 0.02 {"}-91.955 -11.955 0.02 {"}-92 -11.858 0.02 {"}-92.709 -10.709 0.02 {"}-93.047 -10 0.02 {"}-93.392 -9.392 0.02 {"}-94 -8.088 0.02 {"}-94.033 -8.033 0.02 {"}-94.05 -8 0.02 {"}-94.09 -7.91 0.02 {"}-94.68 -6.68 0.02 {"}-94.942 -6 0.02 {"}-95.229 -5.229 0.02 {"}-95.433 -4.567 0.02 {"}-95.625 -4 0.02 {"}-95.699 -3.699 0.02 {"}-96 -2.332 0.02 {"}-96.073 -2.073 0.02 {"}-96.092 -2 0.02 {"}-96.109 -1.891 0.02 {"}-96.344 -0.344 0.02 {"}-96.397 0 0.02 {"}-96.407 0.407 0.02 {"}-96.423 1.577 0.02 {"}-96.434 2 0.02 {"}-96.405 2.405 0.02 {"}-96.248 3.752 0.02 {"}-96.229 4 0.02 {"}-96.191 4.191 0.02 {"}-96 4.917 0.02 {"}-95.814 5.814 0.02 {"}-95.758 6 0.02 {"}-95.637 6.363 0.02 {"}-95.356 7.356 0.02 {"}-95.105 8 0.02 {"}-94.795 8.795 0.02 {"}-94.398 9.602 0.02 {"}-94.218 10 0.02 {"}-94.151 10.151 0.02 {"}-94 10.381 0.02 {"}-93.377 11.377 0.02 {"}-92.889 12 0.02 {"}-92.545 12.545 0.02 {"}-92 13.243 0.02 {"}-91.642 13.642 0.02 {"}-91.212 14 0.02 {"}-90.562 14.562 0.02 {"}-90 14.998 0.02 {"}-89.353 15.353 0.02 {"}-88.068 15.932 0.02 {"}-88 15.965 0.02 {"}-87.972 15.972 0.02 {"}-87.821 16 0.02 {"}-86.313 16.313 0.02 {"}-86 16.364 0.02 {"}-85.672 16.328 0.02 {"}-84.158 16.158 0.02 {"}-84 16.141 0.02 {"}-83.894 16.106 0.02 {"}-83.64 16 0.02 {"}P -77.011 84 0.02 {"}-76.341 83.659 0.02 {"}-76 83.452 0.02 {"}-75.27 82.73 0.02 {"}-74.664 82 0.02 {"}-74.335 81.665 0.02 {"}-74 81.196 0.02 {"}-73.544 80.456 0.02 {"}-73.341 80 0.02 {"}-72.863 79.137 0.02 {"}-72.678 78.678 0.02 {"}-72.369 78 0.02 {"}-72.249 77.751 0.02 {"}-72 77.007 0.02 {"}-71.734 76.266 0.02 {"}-71.662 76 0.02 {"}-71.551 75.551 0.02 {"}-71.301 74.699 0.02 {"}-71.148 74 0.02 {"}-70.952 73.048 0.02 {"}-70.942 72.942 0.02 {"}-70.779 72 0.02 {"}-70.662 71.338 0.02 {"}-70.586 70.586 0.02 {"}-70.494 70 0.02 {"}-70.446 69.554 0.02 {"}-70.336 68.336 0.02 {"}-70.3 68 0.02 {"}-70.282 67.718 0.02 {"}-70.194 66.194 0.02 {"}-70.181 66 0.02 {"}-70.181 65.819 0.02 {"}-70.165 64.165 0.02 {"}-70.164 64 0.02 {"}-70.173 63.827 0.02 {"}-70.223 62.223 0.02 {"}-70.236 62 0.02 {"}-70.266 61.734 0.02 {"}-70.396 60.396 0.02 {"}-70.443 60 0.02 {"}-70.531 59.469 0.02 {"}-70.628 58.628 0.02 {"}-70.746 58 0.02 {"}-70.937 57.063 0.02 {"}-70.952 56.952 0.02 {"}-71.181 56 0.02 {"}-71.361 55.361 0.02 {"}-71.772 54.228 0.02 {"}-71.845 54 0.02 {"}-71.888 53.888 0.02 {"}-72 53.639 0.02 {"}-72.462 52.462 0.02 {"}-72.706 52 0.02 {"}-73.118 51.118 0.02 {"}-73.528 50.472 0.02 {"}-73.805 50 0.02 {"}-73.879 49.879 0.02 {"}-74 49.719 0.02 {"}-74.749 48.749 0.02 {"}-75.452 48 0.02 {"}-75.699 47.699 0.02 {"}-76 47.436 0.02 {"}-76.855 46.855 0.02 {"}-77.618 46.382 0.02 {"}-78 46.14 0.02 {"}-78.105 46.105 0.02 {"}-78.445 46 0.02 {"}-79.596 45.596 0.02 {"}-80 45.476 0.02 {"}-80.51 45.49 0.02 {"}-81.545 45.545 0.02 {"}-82 45.559 0.02 {"}-82.328 45.672 0.02 {"}-83.053 46 0.02 {"}-83.734 46.266 0.02 {"}-84 46.395 0.02 {"}-84.911 47.089 0.02 {"}-85.86 48 0.02 {"}-85.937 48.063 0.02 {"}-86 48.138 0.02 {"}-86.791 49.209 0.02 {"}-87.195 50 0.02 {"}-87.501 50.499 0.02 {"}-88 51.631 0.02 {"}-88.119 51.881 0.02 {"}-88.158 52 0.02 {"}-88.22 52.22 0.02 {"}-88.612 53.388 0.02 {"}-88.759 54 0.02 {"}-88.942 54.942 0.02 {"}-88.967 55.033 0.02 {"}-89.124 56 0.02 {"}-89.257 56.743 0.02 {"}-89.309 57.309 0.02 {"}-89.416 58 0.02 {"}-89.484 58.516 0.02 {"}-89.57 59.57 0.02 {"}-89.622 60 0.02 {"}-89.661 60.339 0.02 {"}-89.798 61.798 0.02 {"}-89.82 62 0.02 {"}-89.831 62.169 0.02 {"}-89.905 63.905 0.02 {"}-89.911 64 0.02 {"}-89.911 64.089 0.02 {"}-89.916 65.916 0.02 {"}-89.917 66 0.02 {"}-89.911 66.089 0.02 {"}-89.835 67.835 0.02 {"}-89.825 68 0.02 {"}-89.795 68.205 0.02 {"}-89.627 69.627 0.02 {"}-89.57 70 0.02 {"}-89.452 70.548 0.02 {"}-89.324 71.324 0.02 {"}-89.157 72 0.02 {"}-88.923 72.923 0.02 {"}-88.832 73.168 0.02 {"}-88.577 74 0.02 {"}-88.431 74.431 0.02 {"}-88 75.46 0.02 {"}-87.856 75.856 0.02 {"}-87.79 76 0.02 {"}-87.608 76.392 0.02 {"}-87.253 77.253 0.02 {"}-86.831 78 0.02 {"}-86.58 78.58 0.02 {"}-86 79.53 0.02 {"}-85.815 79.815 0.02 {"}-85.655 80 0.02 {"}-84.98 80.98 0.02 {"}-84.809 81.191 0.02 {"}-84.166 82 0.02 {"}-84.102 82.102 0.02 {"}-84 82.218 0.02 {"}-83.041 83.041 0.02 {"}-82.66 83.34 0.02 {"}-82 83.863 0.02 {"}-81.903 83.903 0.02 {"}-81.644 84 0.02 {"}-80.505 84.505 0.02 {"}-80 84.692 0.02 {"}-79.347 84.653 0.02 {"}-78.587 84.587 0.02 {"}-78 84.55 0.02 {"}-77.627 84.373 0.02 {"}-77.011 84 0.02 {"}P -67.042 180 0.02 {"}-66.432 179.568 0.02 {"}-66 179.159 0.02 {"}-65.362 178.638 0.02 {"}-64.803 178 0.02 {"}-64.356 177.644 0.02 {"}-64 177.252 0.02 {"}-63.334 176.666 0.02 {"}-62.805 176 0.02 {"}-62.373 175.627 0.02 {"}-62 175.17 0.02 {"}-61.387 174.613 0.02 {"}-60.917 174 0.02 {"}-60.437 173.563 0.02 {"}-60 172.945 0.02 {"}-59.52 172.48 0.02 {"}-59.179 172 0.02 {"}-58.575 171.425 0.02 {"}-58 170.52 0.02 {"}-57.737 170.263 0.02 {"}-57.564 170 0.02 {"}-56.783 169.217 0.02 {"}-56.101 168.101 0.02 {"}-56.033 168 0.02 {"}-56.016 167.984 0.02 {"}-56 167.956 0.02 {"}-55.069 166.931 0.02 {"}-54.512 166 0.02 {"}-54.27 165.73 0.02 {"}-54 165.209 0.02 {"}-53.439 164.561 0.02 {"}-53.143 164 0.02 {"}-52.65 163.35 0.02 {"}-52.079 162.079 0.02 {"}-52.037 162 0.02 {"}-52.02 161.98 0.02 {"}-52 161.935 0.02 {"}-51.14 160.86 0.02 {"}-50.689 160 0.02 {"}-50.388 159.612 0.02 {"}-50 158.653 0.02 {"}-49.72 158.28 0.02 {"}-49.603 158 0.02 {"}-48.984 157.016 0.02 {"}-48.967 156.967 0.02 {"}-48.542 156 0.02 {"}-48.337 155.663 0.02 {"}-48 154.476 0.02 {"}-47.819 154.181 0.02 {"}-47.76 154 0.02 {"}-47.524 153.524 0.02 {"}-47.14 152.86 0.02 {"}-46.835 152 0.02 {"}-46.548 151.452 0.02 {"}-46.219 150.219 0.02 {"}-46.138 150 0.02 {"}-46.091 149.909 0.02 {"}-46 149.606 0.02 {"}-45.359 148.641 0.02 {"}-45.118 148 0.02 {"}-44.723 147.277 0.02 {"}-44.448 146.448 0.02 {"}-44.263 146 0.02 {"}-44.166 145.834 0.02 {"}-44 145.308 0.02 {"}-43.472 144.528 0.02 {"}-43.274 144 0.02 {"}-42.855 143.145 0.02 {"}-42.739 142.739 0.02 {"}-42.464 142 0.02 {"}-42.322 141.678 0.02 {"}-42 140.424 0.02 {"}-41.848 140.152 0.02 {"}-41.8 140 0.02 {"}-41.697 139.697 0.02 {"}-41.289 138.711 0.02 {"}-41.096 138 0.02 {"}-40.864 137.136 0.02 {"}-40.796 136.796 0.02 {"}-40.604 136 0.02 {"}-40.501 135.499 0.02 {"}-40.338 134.338 0.02 {"}-40.276 134 0.02 {"}-40.249 133.751 0.02 {"}-40.071 132.071 0.02 {"}-40.063 132 0.02 {"}-40.063 131.937 0.02 {"}-40 130.483 0.02 {"}-39.966 130.034 0.02 {"}-39.963 130 0.02 {"}-39.965 129.965 0.02 {"}-40 129.445 0.02 {"}-40.057 128.057 0.02 {"}-40.063 128 0.02 {"}-40.079 127.921 0.02 {"}-40.304 126.304 0.02 {"}-40.378 126 0.02 {"}-40.545 125.455 0.02 {"}-40.715 124.715 0.02 {"}-40.99 124 0.02 {"}-41.306 123.306 0.02 {"}-42 122.201 0.02 {"}-42.064 122.064 0.02 {"}-42.112 122 0.02 {"}-42.304 121.696 0.02 {"}-42.806 120.806 0.02 {"}-43.537 120 0.02 {"}-43.736 119.736 0.02 {"}-44 119.476 0.02 {"}-44.704 118.704 0.02 {"}-45.671 118 0.02 {"}-45.842 117.842 0.02 {"}-46 117.732 0.02 {"}-46.894 117.106 0.02 {"}-47.015 117.015 0.02 {"}-48 116.511 0.02 {"}-48.351 116.351 0.02 {"}-49.308 116 0.02 {"}-49.766 115.766 0.02 {"}-50 115.672 0.02 {"}-50.458 115.542 0.02 {"}-51.279 115.279 0.02 {"}-52 115.095 0.02 {"}-52.947 114.947 0.02 {"}-53.065 114.935 0.02 {"}-54 114.803 0.02 {"}-54.736 114.736 0.02 {"}-55.301 114.699 0.02 {"}-56 114.638 0.02 {"}-56.599 114.599 0.02 {"}-57.462 114.538 0.02 {"}-58 114.502 0.02 {"}-58.46 114.46 0.02 {"}-59.694 114.306 0.02 {"}-60 114.277 0.02 {"}-60.236 114.236 0.02 {"}-61.415 114 0.02 {"}-61.861 113.861 0.02 {"}-62 113.812 0.02 {"}-62.339 113.661 0.02 {"}-63.249 113.249 0.02 {"}-64 112.924 0.02 {"}-64.573 112.573 0.02 {"}-65.471 112 0.02 {"}-65.747 111.747 0.02 {"}-66 111.547 0.02 {"}-66.813 110.813 0.02 {"}-67.706 110 0.02 {"}-67.844 109.844 0.02 {"}-68 109.699 0.02 {"}-68.884 108.884 0.02 {"}-69.819 108 0.02 {"}-69.904 107.904 0.02 {"}-70 107.818 0.02 {"}-70.762 107.238 0.02 {"}-71.032 107.032 0.02 {"}-72 106.294 0.02 {"}-72.197 106.197 0.02 {"}-72.586 106 0.02 {"}-73.493 105.493 0.02 {"}-74 105.23 0.02 {"}-74.936 105.064 0.02 {"}-75.05 105.05 0.02 {"}-76 104.857 0.02 {"}-76.938 105.062 0.02 {"}-77.104 105.104 0.02 {"}-78 105.311 0.02 {"}-78.424 105.576 0.02 {"}-78.983 106 0.02 {"}-79.574 106.426 0.02 {"}-80 106.795 0.02 {"}-80.528 107.472 0.02 {"}-80.854 108 0.02 {"}-81.319 108.681 0.02 {"}-82 109.827 0.02 {"}-82.062 109.938 0.02 {"}-82.084 110 0.02 {"}-82.14 110.14 0.02 {"}-82.652 111.348 0.02 {"}-82.891 112 0.02 {"}-83.206 112.794 0.02 {"}-83.432 113.432 0.02 {"}-83.644 114 0.02 {"}-83.738 114.262 0.02 {"}-84 115.079 0.02 {"}-84.236 115.764 0.02 {"}-84.3 116 0.02 {"}-84.431 116.431 0.02 {"}-84.704 117.296 0.02 {"}-84.909 118 0.02 {"}-85.205 118.795 0.02 {"}-85.437 119.437 0.02 {"}-85.643 120 0.02 {"}-85.759 120.241 0.02 {"}-86 120.873 0.02 {"}-86.343 121.657 0.02 {"}-86.458 122 0.02 {"}-86.757 122.757 0.02 {"}-86.9 123.1 0.02 {"}-87.228 124 0.02 {"}-87.46 124.54 0.02 {"}-87.961 125.961 0.02 {"}-87.976 126 0.02 {"}-87.983 126.017 0.02 {"}-88 126.079 0.02 {"}-88.507 127.493 0.02 {"}-88.64 128 0.02 {"}-88.905 128.905 0.02 {"}-88.952 129.048 0.02 {"}-89.206 130 0.02 {"}-89.376 130.624 0.02 {"}-89.592 131.592 0.02 {"}-89.695 132 0.02 {"}-89.768 132.232 0.02 {"}-90 133.166 0.02 {"}-90.206 133.794 0.02 {"}-90.263 134 0.02 {"}-90.391 134.391 0.02 {"}-90.721 135.279 0.02 {"}-90.93 136 0.02 {"}-91.255 136.745 0.02 {"}-91.516 137.516 0.02 {"}-91.701 138 0.02 {"}-91.787 138.213 0.02 {"}-92 138.869 0.02 {"}-92.343 139.657 0.02 {"}-92.462 140 0.02 {"}-92.675 140.675 0.02 {"}-92.851 141.149 0.02 {"}-93.078 142 0.02 {"}-93.274 142.726 0.02 {"}-93.409 143.409 0.02 {"}-93.551 144 0.02 {"}-93.621 144.379 0.02 {"}-93.844 145.844 0.02 {"}-93.871 146 0.02 {"}-93.884 146.116 0.02 {"}-94 147.234 0.02 {"}-94.101 147.899 0.02 {"}-94.113 148 0.02 {"}-94.123 148.123 0.02 {"}-94.26 149.74 0.02 {"}-94.28 150 0.02 {"}-94.299 150.299 0.02 {"}-94.377 151.623 0.02 {"}-94.401 152 0.02 {"}-94.416 152.416 0.02 {"}-94.452 153.548 0.02 {"}-94.468 154 0.02 {"}-94.477 154.477 0.02 {"}-94.495 155.505 0.02 {"}-94.504 156 0.02 {"}-94.494 156.494 0.02 {"}-94.477 157.523 0.02 {"}-94.467 158 0.02 {"}-94.453 158.453 0.02 {"}-94.422 159.578 0.02 {"}-94.409 160 0.02 {"}-94.396 160.396 0.02 {"}-94.36 161.64 0.02 {"}-94.348 162 0.02 {"}-94.337 162.337 0.02 {"}-94.286 163.714 0.02 {"}-94.276 164 0.02 {"}-94.265 164.265 0.02 {"}-94.189 165.811 0.02 {"}-94.181 166 0.02 {"}-94.167 166.167 0.02 {"}-94 167.604 0.02 {"}-93.97 167.97 0.02 {"}-93.967 168 0.02 {"}-93.963 168.037 0.02 {"}-93.786 169.786 0.02 {"}-93.757 170 0.02 {"}-93.681 170.319 0.02 {"}-93.466 171.466 0.02 {"}-93.321 172 0.02 {"}-93.024 172.976 0.02 {"}-93.014 173.014 0.02 {"}-92.675 174 0.02 {"}-92.504 174.504 0.02 {"}-92 175.603 0.02 {"}-91.901 175.901 0.02 {"}-91.861 176 0.02 {"}-91.741 176.259 0.02 {"}-91.308 177.308 0.02 {"}-90.917 178 0.02 {"}-90.613 178.613 0.02 {"}-90 179.526 0.02 {"}-89.831 179.831 0.02 {"}-89.713 180 0.02 @subgroup {Data} @dotlist {Data} master= {Data pts} @group {Cis proline} animate off dominant @subgroup {Contours} nobutton dominant @labellist {Title} master= {Titles} {Cis proline} 0 190 0 @vectorlist {Allowed} color= blue master= {Allowed} {level 0.002}P -119.346 -180 0.002 {"}-119.253 -179.253 0.002 {"}-119.253 -178.747 0.002 {"}-119.128 -178 0.002 {"}-118.846 -177.154 0.002 {"}-118 -176.308 0.002 {"}-117.877 -176.123 0.002 {"}-117.795 -176 0.002 {"}-117.692 -175.692 0.002 {"}-117.346 -174.654 0.002 {"}-117.128 -174 0.002 {"}-116.752 -173.248 0.002 {"}-116 -172.872 0.002 {"}-115.564 -172.436 0.002 {"}-115.128 -172 0.002 {"}-114.752 -171.248 0.002 {"}-114 -170.872 0.002 {"}-113.564 -170.436 0.002 {"}-113.128 -170 0.002 {"}-112.846 -169.154 0.002 {"}-112 -168.308 0.002 {"}-111.877 -168.123 0.002 {"}-111.795 -168 0.002 {"}-111.589 -167.589 0.002 {"}-111.253 -166.747 0.002 {"}-110.692 -166 0.002 {"}-110.395 -165.605 0.002 {"}-110 -165.308 0.002 {"}-109.346 -164.654 0.002 {"}-108.692 -164 0.002 {"}-108.461 -163.539 0.002 {"}-108 -163.308 0.002 {"}-107.346 -162.654 0.002 {"}-106.692 -162 0.002 {"}-106.461 -161.539 0.002 {"}-106 -161.308 0.002 {"}-105.346 -160.654 0.002 {"}-104.692 -160 0.002 {"}-104.461 -159.539 0.002 {"}-104 -159.308 0.002 {"}-103.419 -158.581 0.002 {"}-103.128 -158 0.002 {"}-102.752 -157.248 0.002 {"}-102 -156.872 0.002 {"}-101.477 -156.523 0.002 {"}-101.128 -156 0.002 {"}-100.846 -155.154 0.002 {"}-100 -154.308 0.002 {"}-99.877 -154.123 0.002 {"}-99.795 -154 0.002 {"}-99.589 -153.589 0.002 {"}-99.253 -152.747 0.002 {"}-98.692 -152 0.002 {"}-98.461 -151.539 0.002 {"}-98 -151.308 0.002 {"}-97.346 -150.654 0.002 {"}-96.692 -150 0.002 {"}-96.461 -149.539 0.002 {"}-96 -149.308 0.002 {"}-95.346 -148.654 0.002 {"}-94.692 -148 0.002 {"}-94.461 -147.539 0.002 {"}-94 -147.308 0.002 {"}-93.253 -146.747 0.002 {"}-92.692 -146 0.002 {"}-92.461 -145.539 0.002 {"}-92 -145.308 0.002 {"}-91.077 -145.077 0.002 {"}-90.967 -145.033 0.002 {"}-90 -144.872 0.002 {"}-89.419 -144.581 0.002 {"}-88.692 -144 0.002 {"}-88.461 -143.539 0.002 {"}-88 -143.308 0.002 {"}-87.077 -143.077 0.002 {"}-86.967 -143.033 0.002 {"}-86 -142.872 0.002 {"}-85.346 -142.654 0.002 {"}-84.308 -142.308 0.002 {"}-84 -142.205 0.002 {"}-83.824 -142.176 0.002 {"}-83.384 -142 0.002 {"}-82.554 -141.446 0.002 {"}-82 -141.308 0.002 {"}-81.308 -141.308 0.002 {"}-80.692 -141.308 0.002 {"}-80 -141.308 0.002 {"}-79.308 -141.308 0.002 {"}-78.692 -141.308 0.002 {"}-78 -141.308 0.002 {"}-77.308 -141.308 0.002 {"}-76.692 -141.308 0.002 {"}-76 -141.308 0.002 {"}-75.308 -141.308 0.002 {"}-74.692 -141.308 0.002 {"}-74 -141.308 0.002 {"}-73.539 -141.539 0.002 {"}-73.308 -142 0.002 {"}-72.581 -142.581 0.002 {"}-72 -142.872 0.002 {"}-71.033 -143.033 0.002 {"}-70.923 -143.077 0.002 {"}-70 -143.308 0.002 {"}-69.539 -143.539 0.002 {"}-69.308 -144 0.002 {"}-68.581 -144.581 0.002 {"}-68 -144.872 0.002 {"}-67.154 -145.154 0.002 {"}-66.308 -146 0.002 {"}-66.176 -146.176 0.002 {"}-66 -146.308 0.002 {"}-65.033 -147.033 0.002 {"}-64.308 -148 0.002 {"}-64.176 -148.176 0.002 {"}-64 -148.308 0.002 {"}-63.154 -149.154 0.002 {"}-62.872 -150 0.002 {"}-62.523 -150.523 0.002 {"}-62 -150.872 0.002 {"}-61.248 -151.248 0.002 {"}-60.872 -152 0.002 {"}-60.581 -152.581 0.002 {"}-60 -153.308 0.002 {"}-59.539 -153.539 0.002 {"}-59.308 -154 0.002 {"}-59.077 -154.923 0.002 {"}-59.033 -155.033 0.002 {"}-58.872 -156 0.002 {"}-58.654 -156.654 0.002 {"}-58.308 -157.692 0.002 {"}-58.205 -158 0.002 {"}-58.123 -158.123 0.002 {"}-58 -158.308 0.002 {"}-57.154 -159.154 0.002 {"}-56.872 -160 0.002 {"}-56.747 -160.747 0.002 {"}-56.747 -161.253 0.002 {"}-56.654 -162 0.002 {"}-56.436 -162.436 0.002 {"}-56 -163.308 0.002 {"}-55.605 -163.605 0.002 {"}-55.308 -164 0.002 {"}-55.077 -164.923 0.002 {"}-55.033 -165.033 0.002 {"}-54.872 -166 0.002 {"}-54.581 -166.581 0.002 {"}-54 -167.308 0.002 {"}-53.605 -167.605 0.002 {"}-53.308 -168 0.002 {"}-53.077 -168.923 0.002 {"}-53.033 -169.033 0.002 {"}-52.872 -170 0.002 {"}-52.581 -170.581 0.002 {"}-52 -171.308 0.002 {"}-51.605 -171.605 0.002 {"}-51.308 -172 0.002 {"}-51.077 -172.923 0.002 {"}-51.033 -173.033 0.002 {"}-50.872 -174 0.002 {"}-50.436 -174.436 0.002 {"}-50 -174.872 0.002 {"}-49.248 -175.248 0.002 {"}-48.872 -176 0.002 {"}-48.581 -176.581 0.002 {"}-48 -177.308 0.002 {"}-47.605 -177.605 0.002 {"}-47.308 -178 0.002 {"}-47.077 -178.923 0.002 {"}-47.033 -179.033 0.002 {"}-46.872 -180 0.002 {"}P -97.308 70 0.002 {"}-96.581 69.419 0.002 {"}-96 69.128 0.002 {"}-95.033 68.967 0.002 {"}-94.923 68.923 0.002 {"}-94 68.692 0.002 {"}-93.539 68.461 0.002 {"}-93.308 68 0.002 {"}-92.581 67.419 0.002 {"}-92 67.128 0.002 {"}-91.248 66.752 0.002 {"}-90.872 66 0.002 {"}-90.523 65.477 0.002 {"}-90 65.128 0.002 {"}-89.248 64.752 0.002 {"}-88.872 64 0.002 {"}-88.523 63.477 0.002 {"}-88 63.128 0.002 {"}-87.248 62.752 0.002 {"}-86.872 62 0.002 {"}-86.523 61.477 0.002 {"}-86 61.128 0.002 {"}-85.248 60.752 0.002 {"}-84.872 60 0.002 {"}-84.581 59.419 0.002 {"}-84 58.692 0.002 {"}-83.605 58.395 0.002 {"}-83.308 58 0.002 {"}-83.077 57.077 0.002 {"}-83.033 56.967 0.002 {"}-82.872 56 0.002 {"}-82.581 55.419 0.002 {"}-82 54.692 0.002 {"}-81.605 54.395 0.002 {"}-81.308 54 0.002 {"}-81.077 53.077 0.002 {"}-81.033 52.967 0.002 {"}-80.872 52 0.002 {"}-80.581 51.419 0.002 {"}-80 50.692 0.002 {"}-79.605 50.395 0.002 {"}-79.308 50 0.002 {"}-79.077 49.077 0.002 {"}-79.033 48.967 0.002 {"}-78.872 48 0.002 {"}-78.581 47.419 0.002 {"}-78 46.692 0.002 {"}-77.605 46.395 0.002 {"}-77.308 46 0.002 {"}-77.077 45.077 0.002 {"}-77.033 44.967 0.002 {"}-76.872 44 0.002 {"}-76.523 43.477 0.002 {"}-76 42.692 0.002 {"}-75.539 42.461 0.002 {"}-75.308 42 0.002 {"}-75.077 41.077 0.002 {"}-75.033 40.967 0.002 {"}-74.872 40 0.002 {"}-74.581 39.419 0.002 {"}-74 38.692 0.002 {"}-73.539 38.461 0.002 {"}-73.308 38 0.002 {"}-73.077 37.077 0.002 {"}-73.033 36.967 0.002 {"}-72.872 36 0.002 {"}-72.747 35.253 0.002 {"}-72.747 34.747 0.002 {"}-72.654 34 0.002 {"}-72.402 33.598 0.002 {"}-72 33.128 0.002 {"}-71.248 32.752 0.002 {"}-70.872 32 0.002 {"}-70.747 31.253 0.002 {"}-70.747 30.747 0.002 {"}-70.654 30 0.002 {"}-70.402 29.598 0.002 {"}-70 29.128 0.002 {"}-69.248 28.752 0.002 {"}-68.872 28 0.002 {"}-68.747 27.253 0.002 {"}-68.747 26.747 0.002 {"}-68.654 26 0.002 {"}-68.402 25.598 0.002 {"}-68 25.128 0.002 {"}-67.248 24.752 0.002 {"}-66.872 24 0.002 {"}-66.654 23.346 0.002 {"}-66.308 22.308 0.002 {"}-66.205 22 0.002 {"}-66.112 21.888 0.002 {"}-66 21.692 0.002 {"}-65.154 20.846 0.002 {"}-64.872 20 0.002 {"}-64.436 19.564 0.002 {"}-64 19.128 0.002 {"}-63.248 18.752 0.002 {"}-62.872 18 0.002 {"}-62.581 17.419 0.002 {"}-62 16.692 0.002 {"}-61.605 16.395 0.002 {"}-61.308 16 0.002 {"}-61.077 15.077 0.002 {"}-61.033 14.967 0.002 {"}-60.872 14 0.002 {"}-60.476 13.524 0.002 {"}-60 12.692 0.002 {"}-59.605 12.395 0.002 {"}-59.308 12 0.002 {"}-59.077 11.077 0.002 {"}-59.033 10.967 0.002 {"}-58.872 10 0.002 {"}-58.581 9.419 0.002 {"}-58 8.692 0.002 {"}-57.605 8.395 0.002 {"}-57.308 8 0.002 {"}-57.077 7.077 0.002 {"}-57.033 6.967 0.002 {"}-56.872 6 0.002 {"}-56.747 5.253 0.002 {"}-56.747 4.747 0.002 {"}-56.654 4 0.002 {"}-56.436 3.564 0.002 {"}-56 2.692 0.002 {"}-55.605 2.395 0.002 {"}-55.308 2 0.002 {"}-55.077 1.077 0.002 {"}-55.033 0.967 0.002 {"}-54.872 0 0.002 {"}-54.747 -0.747 0.002 {"}-54.747 -1.253 0.002 {"}-54.654 -2 0.002 {"}-54.402 -2.402 0.002 {"}-54 -2.872 0.002 {"}-53.248 -3.248 0.002 {"}-52.872 -4 0.002 {"}-52.747 -4.747 0.002 {"}-52.747 -5.253 0.002 {"}-52.654 -6 0.002 {"}-52.402 -6.402 0.002 {"}-52 -6.872 0.002 {"}-51.323 -7.323 0.002 {"}-50.872 -8 0.002 {"}-50.747 -8.747 0.002 {"}-50.747 -9.253 0.002 {"}-50.654 -10 0.002 {"}-50.436 -10.436 0.002 {"}-50 -11.308 0.002 {"}-49.605 -11.605 0.002 {"}-49.308 -12 0.002 {"}-49.077 -12.923 0.002 {"}-49.033 -13.033 0.002 {"}-48.872 -14 0.002 {"}-48.747 -14.747 0.002 {"}-48.747 -15.253 0.002 {"}-48.654 -16 0.002 {"}-48.476 -16.476 0.002 {"}-48 -17.308 0.002 {"}-47.605 -17.605 0.002 {"}-47.308 -18 0.002 {"}-47.077 -18.923 0.002 {"}-47.033 -19.033 0.002 {"}-46.872 -20 0.002 {"}-46.872 -20.872 0.002 {"}-46.872 -21.128 0.002 {"}-46.872 -22 0.002 {"}-46.872 -22.872 0.002 {"}-46.872 -23.128 0.002 {"}-46.872 -24 0.002 {"}-46.872 -24.872 0.002 {"}-46.872 -25.128 0.002 {"}-46.872 -26 0.002 {"}-46.872 -26.872 0.002 {"}-46.872 -27.128 0.002 {"}-46.872 -28 0.002 {"}-46.872 -28.872 0.002 {"}-46.872 -29.128 0.002 {"}-46.872 -30 0.002 {"}-47.033 -30.967 0.002 {"}-47.077 -31.077 0.002 {"}-47.308 -32 0.002 {"}-47.539 -32.461 0.002 {"}-48 -32.692 0.002 {"}-48.581 -33.419 0.002 {"}-48.872 -34 0.002 {"}-48.872 -34.872 0.002 {"}-48.872 -35.128 0.002 {"}-48.872 -36 0.002 {"}-49.248 -36.752 0.002 {"}-50 -37.128 0.002 {"}-50.523 -37.477 0.002 {"}-50.872 -38 0.002 {"}-51.033 -38.967 0.002 {"}-51.077 -39.077 0.002 {"}-51.308 -40 0.002 {"}-51.539 -40.461 0.002 {"}-52 -40.692 0.002 {"}-52.654 -41.346 0.002 {"}-53.308 -42 0.002 {"}-53.539 -42.461 0.002 {"}-54 -42.692 0.002 {"}-54.654 -43.346 0.002 {"}-55.308 -44 0.002 {"}-55.539 -44.461 0.002 {"}-56 -44.692 0.002 {"}-56.923 -44.923 0.002 {"}-57.033 -44.967 0.002 {"}-58 -45.128 0.002 {"}-58.523 -45.477 0.002 {"}-58.872 -46 0.002 {"}-59.248 -46.752 0.002 {"}-60 -47.128 0.002 {"}-60.747 -47.253 0.002 {"}-61.589 -47.589 0.002 {"}-62 -47.692 0.002 {"}-62.205 -47.795 0.002 {"}-62.616 -48 0.002 {"}-63.446 -48.554 0.002 {"}-64 -48.692 0.002 {"}-64.923 -48.923 0.002 {"}-65.033 -48.967 0.002 {"}-66 -49.128 0.002 {"}-66.654 -49.346 0.002 {"}-67.692 -49.692 0.002 {"}-68 -49.795 0.002 {"}-68.176 -49.824 0.002 {"}-68.616 -50 0.002 {"}-69.446 -50.554 0.002 {"}-70 -50.692 0.002 {"}-70.692 -50.692 0.002 {"}-71.308 -50.692 0.002 {"}-72 -50.692 0.002 {"}-72.692 -50.692 0.002 {"}-73.308 -50.692 0.002 {"}-74 -50.692 0.002 {"}-74.692 -50.692 0.002 {"}-75.308 -50.692 0.002 {"}-76 -50.692 0.002 {"}-76.692 -50.692 0.002 {"}-77.308 -50.692 0.002 {"}-78 -50.692 0.002 {"}-78.554 -50.554 0.002 {"}-79.384 -50 0.002 {"}-79.824 -49.824 0.002 {"}-80 -49.795 0.002 {"}-80.308 -49.692 0.002 {"}-81.346 -49.346 0.002 {"}-82 -49.128 0.002 {"}-82.872 -49.128 0.002 {"}-83.128 -49.128 0.002 {"}-84 -49.128 0.002 {"}-84.967 -48.967 0.002 {"}-85.077 -48.923 0.002 {"}-86 -48.692 0.002 {"}-86.461 -48.461 0.002 {"}-86.692 -48 0.002 {"}-87.419 -47.419 0.002 {"}-88 -47.128 0.002 {"}-88.846 -46.846 0.002 {"}-89.692 -46 0.002 {"}-89.877 -45.877 0.002 {"}-90 -45.795 0.002 {"}-90.411 -45.589 0.002 {"}-91.253 -45.253 0.002 {"}-92 -44.692 0.002 {"}-92.461 -44.461 0.002 {"}-92.692 -44 0.002 {"}-93.419 -43.419 0.002 {"}-94 -43.128 0.002 {"}-94.752 -42.752 0.002 {"}-95.128 -42 0.002 {"}-95.477 -41.477 0.002 {"}-96 -41.128 0.002 {"}-96.752 -40.752 0.002 {"}-97.128 -40 0.002 {"}-97.477 -39.477 0.002 {"}-98 -39.128 0.002 {"}-98.752 -38.752 0.002 {"}-99.128 -38 0.002 {"}-99.477 -37.477 0.002 {"}-100 -37.128 0.002 {"}-100.752 -36.752 0.002 {"}-101.128 -36 0.002 {"}-101.419 -35.419 0.002 {"}-102 -34.692 0.002 {"}-102.461 -34.461 0.002 {"}-102.692 -34 0.002 {"}-103.346 -33.346 0.002 {"}-104 -32.692 0.002 {"}-104.395 -32.395 0.002 {"}-104.692 -32 0.002 {"}-105.253 -31.253 0.002 {"}-105.589 -30.411 0.002 {"}-105.795 -30 0.002 {"}-105.877 -29.877 0.002 {"}-106 -29.692 0.002 {"}-106.846 -28.846 0.002 {"}-107.128 -28 0.002 {"}-107.564 -27.564 0.002 {"}-108 -27.128 0.002 {"}-108.752 -26.752 0.002 {"}-109.128 -26 0.002 {"}-109.564 -25.564 0.002 {"}-110 -25.128 0.002 {"}-110.677 -24.677 0.002 {"}-111.128 -24 0.002 {"}-111.346 -23.346 0.002 {"}-111.692 -22.308 0.002 {"}-111.795 -22 0.002 {"}-111.888 -21.888 0.002 {"}-112 -21.692 0.002 {"}-112.846 -20.846 0.002 {"}-113.128 -20 0.002 {"}-113.524 -19.524 0.002 {"}-114 -18.692 0.002 {"}-114.395 -18.395 0.002 {"}-114.692 -18 0.002 {"}-115.128 -17.128 0.002 {"}-115.128 -16.872 0.002 {"}-115.346 -16 0.002 {"}-115.626 -15.626 0.002 {"}-116 -15.128 0.002 {"}-116.752 -14.752 0.002 {"}-117.128 -14 0.002 {"}-117.564 -13.564 0.002 {"}-118 -13.128 0.002 {"}-118.752 -12.752 0.002 {"}-119.128 -12 0.002 {"}-119.346 -11.346 0.002 {"}-119.692 -10.308 0.002 {"}-119.795 -10 0.002 {"}-119.877 -9.877 0.002 {"}-120 -9.692 0.002 {"}-120.846 -8.846 0.002 {"}-121.128 -8 0.002 {"}-121.419 -7.419 0.002 {"}-122 -6.692 0.002 {"}-122.461 -6.461 0.002 {"}-122.692 -6 0.002 {"}-122.923 -5.077 0.002 {"}-122.967 -4.967 0.002 {"}-123.128 -4 0.002 {"}-123.419 -3.419 0.002 {"}-124 -2.692 0.002 {"}-124.461 -2.461 0.002 {"}-124.692 -2 0.002 {"}-124.923 -1.077 0.002 {"}-124.967 -0.967 0.002 {"}-125.128 0 0.002 {"}-125.253 0.747 0.002 {"}-125.253 1.253 0.002 {"}-125.346 2 0.002 {"}-125.419 2.581 0.002 {"}-125.754 3.754 0.002 {"}-125.795 4 0.002 {"}-125.824 4.176 0.002 {"}-126 4.616 0.002 {"}-126.554 5.446 0.002 {"}-126.692 6 0.002 {"}-126.692 6.692 0.002 {"}-126.692 7.308 0.002 {"}-126.692 8 0.002 {"}-126.692 8.692 0.002 {"}-126.692 9.308 0.002 {"}-126.692 10 0.002 {"}-126.554 10.554 0.002 {"}-126 11.384 0.002 {"}-125.824 11.824 0.002 {"}-125.795 12 0.002 {"}-125.754 12.246 0.002 {"}-125.419 13.419 0.002 {"}-125.346 14 0.002 {"}-125.253 14.747 0.002 {"}-125.253 15.253 0.002 {"}-125.128 16 0.002 {"}-125.128 16.872 0.002 {"}-125.128 17.128 0.002 {"}-125.128 18 0.002 {"}-124.967 18.967 0.002 {"}-124.923 19.077 0.002 {"}-124.692 20 0.002 {"}-124.461 20.461 0.002 {"}-124 20.692 0.002 {"}-123.477 21.477 0.002 {"}-123.346 22 0.002 {"}-123.253 22.747 0.002 {"}-123.253 23.253 0.002 {"}-123.128 24 0.002 {"}-123.128 24.872 0.002 {"}-123.128 25.128 0.002 {"}-123.128 26 0.002 {"}-123.128 26.872 0.002 {"}-123.128 27.128 0.002 {"}-123.128 28 0.002 {"}-123.128 28.872 0.002 {"}-123.128 29.128 0.002 {"}-123.128 30 0.002 {"}-123.128 30.872 0.002 {"}-123.128 31.128 0.002 {"}-123.128 32 0.002 {"}-123.128 32.872 0.002 {"}-123.128 33.128 0.002 {"}-123.128 34 0.002 {"}-123.253 34.747 0.002 {"}-123.253 35.253 0.002 {"}-123.346 36 0.002 {"}-123.346 36.654 0.002 {"}-123.346 37.346 0.002 {"}-123.346 38 0.002 {"}-123.419 38.581 0.002 {"}-123.754 39.754 0.002 {"}-123.795 40 0.002 {"}-123.846 40.154 0.002 {"}-124 40.616 0.002 {"}-124.461 41.539 0.002 {"}-124.692 42 0.002 {"}-124.692 42.692 0.002 {"}-124.692 43.308 0.002 {"}-124.692 44 0.002 {"}-124.692 44.692 0.002 {"}-124.692 45.308 0.002 {"}-124.692 46 0.002 {"}-124.692 46.692 0.002 {"}-124.692 47.308 0.002 {"}-124.692 48 0.002 {"}-124.554 48.554 0.002 {"}-124 49.384 0.002 {"}-123.846 49.846 0.002 {"}-123.795 50 0.002 {"}-123.754 50.246 0.002 {"}-123.419 51.419 0.002 {"}-123.346 52 0.002 {"}-123.253 52.747 0.002 {"}-123.253 53.253 0.002 {"}-123.128 54 0.002 {"}-122.967 54.967 0.002 {"}-122.923 55.077 0.002 {"}-122.692 56 0.002 {"}-122.461 56.461 0.002 {"}-122 56.692 0.002 {"}-121.477 57.477 0.002 {"}-121.346 58 0.002 {"}-121.128 58.872 0.002 {"}-121.128 59.128 0.002 {"}-120.692 60 0.002 {"}-120.461 60.461 0.002 {"}-120 60.692 0.002 {"}-119.419 61.419 0.002 {"}-119.128 62 0.002 {"}-118.752 62.752 0.002 {"}-118 63.128 0.002 {"}-117.477 63.477 0.002 {"}-117.128 64 0.002 {"}-116.752 64.752 0.002 {"}-116 65.128 0.002 {"}-115.477 65.477 0.002 {"}-115.128 66 0.002 {"}-114.752 66.752 0.002 {"}-114 67.128 0.002 {"}-113.419 67.419 0.002 {"}-112.692 68 0.002 {"}-112.461 68.461 0.002 {"}-112 68.692 0.002 {"}-111.077 68.923 0.002 {"}-110.967 68.967 0.002 {"}-110 69.128 0.002 {"}-109.346 69.346 0.002 {"}-108.308 69.692 0.002 {"}-108 69.795 0.002 {"}-107.824 69.824 0.002 {"}-107.384 70 0.002 {"}-106.554 70.554 0.002 {"}-106 70.692 0.002 {"}-105.077 70.923 0.002 {"}-104.967 70.967 0.002 {"}-104 71.128 0.002 {"}-103.128 71.128 0.002 {"}-102.872 71.128 0.002 {"}-102 71.128 0.002 {"}-101.033 70.967 0.002 {"}-100.923 70.923 0.002 {"}-100 70.692 0.002 {"}-99.308 70.692 0.002 {"}-98.692 70.692 0.002 {"}-98 70.692 0.002 {"}-97.539 70.461 0.002 {"}-97.308 70 0.002 {"}P -46.872 180 0.002 {"}-46.476 179.524 0.002 {"}-46 178.692 0.002 {"}-45.539 178.461 0.002 {"}-45.308 178 0.002 {"}-44.872 177.128 0.002 {"}-44.872 176.872 0.002 {"}-44.654 176 0.002 {"}-44.436 175.564 0.002 {"}-44 174.692 0.002 {"}-43.605 174.395 0.002 {"}-43.308 174 0.002 {"}-42.872 173.128 0.002 {"}-42.872 172.872 0.002 {"}-42.654 172 0.002 {"}-42.436 171.564 0.002 {"}-42 170.692 0.002 {"}-41.605 170.395 0.002 {"}-41.308 170 0.002 {"}-40.872 169.128 0.002 {"}-40.872 168.872 0.002 {"}-40.654 168 0.002 {"}-40.476 167.524 0.002 {"}-40.176 166.176 0.002 {"}-40.123 166 0.002 {"}-40.088 165.912 0.002 {"}-40 165.692 0.002 {"}-39.248 164.752 0.002 {"}-38.872 164 0.002 {"}-38.747 163.253 0.002 {"}-38.747 162.747 0.002 {"}-38.654 162 0.002 {"}-38.436 161.564 0.002 {"}-38 160.692 0.002 {"}-37.654 160.346 0.002 {"}-37.539 160 0.002 {"}-37.308 159.308 0.002 {"}-37.154 158.846 0.002 {"}-36.872 158 0.002 {"}-36.747 157.253 0.002 {"}-36.747 156.747 0.002 {"}-36.654 156 0.002 {"}-36.654 155.346 0.002 {"}-36.654 154.654 0.002 {"}-36.654 154 0.002 {"}-36.523 153.477 0.002 {"}-36.523 152.523 0.002 {"}-36.436 152 0.002 {"}-36.436 151.564 0.002 {"}-36.436 150.436 0.002 {"}-36.436 150 0.002 {"}-36.402 149.598 0.002 {"}-36.137 148.137 0.002 {"}-36.123 148 0.002 {"}-36.123 147.877 0.002 {"}-36.123 146.123 0.002 {"}-36.123 146 0.002 {"}-36.137 145.863 0.002 {"}-36.402 144.402 0.002 {"}-36.436 144 0.002 {"}-36.523 143.477 0.002 {"}-36.523 142.523 0.002 {"}-36.654 142 0.002 {"}-36.747 141.253 0.002 {"}-36.747 140.747 0.002 {"}-36.872 140 0.002 {"}-36.872 139.128 0.002 {"}-36.872 138.872 0.002 {"}-36.872 138 0.002 {"}-37.323 137.323 0.002 {"}-38 136.872 0.002 {"}-38.402 136.402 0.002 {"}-38.654 136 0.002 {"}-38.747 135.253 0.002 {"}-38.747 134.747 0.002 {"}-38.872 134 0.002 {"}-39.154 133.154 0.002 {"}-40 132.308 0.002 {"}-40.112 132.112 0.002 {"}-40.205 132 0.002 {"}-40.308 131.692 0.002 {"}-40.654 130.654 0.002 {"}-40.872 130 0.002 {"}-41.323 129.323 0.002 {"}-42 128.872 0.002 {"}-42.436 128.436 0.002 {"}-42.872 128 0.002 {"}-43.248 127.248 0.002 {"}-44 126.872 0.002 {"}-44.436 126.436 0.002 {"}-44.872 126 0.002 {"}-45.248 125.248 0.002 {"}-46 124.872 0.002 {"}-46.436 124.436 0.002 {"}-46.872 124 0.002 {"}-47.248 123.248 0.002 {"}-48 122.872 0.002 {"}-48.436 122.436 0.002 {"}-48.872 122 0.002 {"}-49.154 121.154 0.002 {"}-50 120.308 0.002 {"}-50.123 120.123 0.002 {"}-50.205 120 0.002 {"}-50.411 119.589 0.002 {"}-50.747 118.747 0.002 {"}-51.308 118 0.002 {"}-51.539 117.539 0.002 {"}-52 117.308 0.002 {"}-52.581 116.581 0.002 {"}-52.872 116 0.002 {"}-53.248 115.248 0.002 {"}-54 114.872 0.002 {"}-54.402 114.402 0.002 {"}-54.654 114 0.002 {"}-54.872 113.128 0.002 {"}-54.872 112.872 0.002 {"}-55.308 112 0.002 {"}-55.605 111.605 0.002 {"}-56 111.308 0.002 {"}-56.581 110.581 0.002 {"}-56.872 110 0.002 {"}-57.323 109.323 0.002 {"}-58 108.872 0.002 {"}-58.523 108.523 0.002 {"}-58.872 108 0.002 {"}-59.248 107.248 0.002 {"}-60 106.872 0.002 {"}-60.436 106.436 0.002 {"}-60.872 106 0.002 {"}-61.248 105.248 0.002 {"}-62 104.872 0.002 {"}-62.476 104.476 0.002 {"}-62.872 104 0.002 {"}-63.323 103.323 0.002 {"}-64 102.872 0.002 {"}-64.581 102.581 0.002 {"}-65.308 102 0.002 {"}-65.605 101.605 0.002 {"}-66 101.308 0.002 {"}-66.923 101.077 0.002 {"}-67.033 101.033 0.002 {"}-68 100.872 0.002 {"}-68.581 100.581 0.002 {"}-69.308 100 0.002 {"}-69.605 99.605 0.002 {"}-70 99.308 0.002 {"}-70.923 99.077 0.002 {"}-71.033 99.033 0.002 {"}-72 98.872 0.002 {"}-72.747 98.747 0.002 {"}-73.253 98.747 0.002 {"}-74 98.654 0.002 {"}-74.581 98.581 0.002 {"}-75.754 98.246 0.002 {"}-76 98.205 0.002 {"}-76.176 98.176 0.002 {"}-76.616 98 0.002 {"}-77.446 97.446 0.002 {"}-78 97.308 0.002 {"}-78.692 97.308 0.002 {"}-79.308 97.308 0.002 {"}-80 97.308 0.002 {"}-80.692 97.308 0.002 {"}-81.308 97.308 0.002 {"}-82 97.308 0.002 {"}-82.554 97.446 0.002 {"}-83.384 98 0.002 {"}-83.824 98.176 0.002 {"}-84 98.205 0.002 {"}-84.246 98.246 0.002 {"}-85.419 98.581 0.002 {"}-86 98.654 0.002 {"}-86.747 98.747 0.002 {"}-87.253 98.747 0.002 {"}-88 98.872 0.002 {"}-88.967 99.033 0.002 {"}-89.077 99.077 0.002 {"}-90 99.308 0.002 {"}-90.554 99.446 0.002 {"}-91.384 100 0.002 {"}-91.824 100.176 0.002 {"}-92 100.205 0.002 {"}-92.308 100.308 0.002 {"}-93.346 100.654 0.002 {"}-94 100.872 0.002 {"}-94.846 101.154 0.002 {"}-95.692 102 0.002 {"}-95.824 102.176 0.002 {"}-96 102.308 0.002 {"}-96.616 102.616 0.002 {"}-97.128 102.872 0.002 {"}-98 103.308 0.002 {"}-98.461 103.539 0.002 {"}-98.692 104 0.002 {"}-99.419 104.581 0.002 {"}-100 104.872 0.002 {"}-100.752 105.248 0.002 {"}-101.128 106 0.002 {"}-101.477 106.523 0.002 {"}-102 106.872 0.002 {"}-102.752 107.248 0.002 {"}-103.128 108 0.002 {"}-103.477 108.523 0.002 {"}-104 108.872 0.002 {"}-104.752 109.248 0.002 {"}-105.128 110 0.002 {"}-105.419 110.581 0.002 {"}-106 111.308 0.002 {"}-106.461 111.539 0.002 {"}-106.692 112 0.002 {"}-107.128 112.872 0.002 {"}-107.128 113.128 0.002 {"}-107.346 114 0.002 {"}-107.564 114.436 0.002 {"}-108 114.872 0.002 {"}-108.752 115.248 0.002 {"}-109.128 116 0.002 {"}-109.128 116.872 0.002 {"}-109.128 117.128 0.002 {"}-109.128 118 0.002 {"}-109.419 118.581 0.002 {"}-110 119.308 0.002 {"}-110.395 119.605 0.002 {"}-110.692 120 0.002 {"}-110.923 120.923 0.002 {"}-110.967 121.033 0.002 {"}-111.128 122 0.002 {"}-111.128 122.872 0.002 {"}-111.128 123.128 0.002 {"}-111.128 124 0.002 {"}-111.128 124.872 0.002 {"}-111.128 125.128 0.002 {"}-111.128 126 0.002 {"}-111.253 126.747 0.002 {"}-111.253 127.253 0.002 {"}-111.346 128 0.002 {"}-111.346 128.654 0.002 {"}-111.346 129.346 0.002 {"}-111.346 130 0.002 {"}-111.419 130.581 0.002 {"}-111.754 131.754 0.002 {"}-111.795 132 0.002 {"}-111.824 132.176 0.002 {"}-112 132.616 0.002 {"}-112.554 133.446 0.002 {"}-112.692 134 0.002 {"}-112.692 134.692 0.002 {"}-112.692 135.308 0.002 {"}-112.692 136 0.002 {"}-112.923 136.923 0.002 {"}-112.967 137.033 0.002 {"}-113.128 138 0.002 {"}-113.128 138.872 0.002 {"}-113.128 139.128 0.002 {"}-113.128 140 0.002 {"}-113.128 140.872 0.002 {"}-113.128 141.128 0.002 {"}-113.128 142 0.002 {"}-113.253 142.747 0.002 {"}-113.253 143.253 0.002 {"}-113.346 144 0.002 {"}-113.477 144.523 0.002 {"}-114 145.308 0.002 {"}-114.461 145.539 0.002 {"}-114.692 146 0.002 {"}-114.923 146.923 0.002 {"}-114.967 147.033 0.002 {"}-115.128 148 0.002 {"}-115.128 148.872 0.002 {"}-115.128 149.128 0.002 {"}-115.128 150 0.002 {"}-115.346 150.654 0.002 {"}-115.692 151.692 0.002 {"}-115.795 152 0.002 {"}-115.824 152.176 0.002 {"}-116 152.616 0.002 {"}-116.554 153.446 0.002 {"}-116.692 154 0.002 {"}-116.923 154.923 0.002 {"}-116.967 155.033 0.002 {"}-117.128 156 0.002 {"}-117.419 156.581 0.002 {"}-118 157.308 0.002 {"}-118.461 157.539 0.002 {"}-118.692 158 0.002 {"}-118.923 158.923 0.002 {"}-118.967 159.033 0.002 {"}-119.128 160 0.002 {"}-119.253 160.747 0.002 {"}-119.253 161.253 0.002 {"}-119.346 162 0.002 {"}-119.524 162.476 0.002 {"}-120 163.308 0.002 {"}-120.461 163.539 0.002 {"}-120.692 164 0.002 {"}-120.923 164.923 0.002 {"}-120.967 165.033 0.002 {"}-121.128 166 0.002 {"}-121.128 166.872 0.002 {"}-121.128 167.128 0.002 {"}-121.128 168 0.002 {"}-121.128 168.872 0.002 {"}-121.128 169.128 0.002 {"}-121.128 170 0.002 {"}-121.128 170.872 0.002 {"}-121.128 171.128 0.002 {"}-121.128 172 0.002 {"}-121.128 172.872 0.002 {"}-121.128 173.128 0.002 {"}-121.128 174 0.002 {"}-121.128 174.872 0.002 {"}-121.128 175.128 0.002 {"}-121.128 176 0.002 {"}-120.967 176.967 0.002 {"}-120.923 177.077 0.002 {"}-120.692 178 0.002 {"}-120.395 178.395 0.002 {"}-120 178.692 0.002 {"}-119.564 179.564 0.002 {"}-119.346 180 0.002 @vectorlist {Favored} color= sky master= {Favored} {level 0.02}P -107.401 -180 0.02 {"}-106.85 -179.15 0.02 {"}-106 -178.008 0.02 {"}-105.996 -178.004 0.02 {"}-105.994 -178 0.02 {"}-105.96 -177.96 0.02 {"}-105.083 -176.917 0.02 {"}-104.243 -176 0.02 {"}-104.137 -175.863 0.02 {"}-104 -175.757 0.02 {"}-103.103 -174.897 0.02 {"}-102.084 -174 0.02 {"}-102.044 -173.956 0.02 {"}-102 -173.923 0.02 {"}-101.387 -173.387 0.02 {"}-100.976 -173.024 0.02 {"}-100 -172.291 0.02 {"}-99.833 -172.167 0.02 {"}-99.674 -172 0.02 {"}-98.837 -171.163 0.02 {"}-98 -170.506 0.02 {"}-97.714 -170.286 0.02 {"}-97.434 -170 0.02 {"}-96.747 -169.253 0.02 {"}-96 -168.622 0.02 {"}-95.641 -168.359 0.02 {"}-95.23 -168 0.02 {"}-94.63 -167.37 0.02 {"}-94 -166.77 0.02 {"}-93.591 -166.409 0.02 {"}-93.049 -166 0.02 {"}-92.517 -165.483 0.02 {"}-92 -164.951 0.02 {"}-91.532 -164.468 0.02 {"}-90.923 -164 0.02 {"}-90.407 -163.593 0.02 {"}-90 -163.272 0.02 {"}-89.268 -162.732 0.02 {"}-88.018 -162.018 0.02 {"}-88 -162.007 0.02 {"}-87.995 -162.005 0.02 {"}-87.988 -162 0.02 {"}-86.795 -161.205 0.02 {"}-86 -160.77 0.02 {"}-85.461 -160.539 0.02 {"}-84.011 -160.011 0.02 {"}-84 -160.007 0.02 {"}-83.995 -160.005 0.02 {"}-83.977 -160 0.02 {"}-82.486 -159.514 0.02 {"}-82 -159.398 0.02 {"}-81.325 -159.325 0.02 {"}-80.704 -159.296 0.02 {"}-80 -159.208 0.02 {"}-79.227 -159.227 0.02 {"}-78.773 -159.227 0.02 {"}-78 -159.246 0.02 {"}-77.379 -159.379 0.02 {"}-76.377 -159.623 0.02 {"}-76 -159.708 0.02 {"}-75.78 -159.78 0.02 {"}-75.166 -160 0.02 {"}-74.251 -160.251 0.02 {"}-74 -160.314 0.02 {"}-73.437 -160.563 0.02 {"}-72.805 -160.805 0.02 {"}-72 -161.246 0.02 {"}-71.547 -161.547 0.02 {"}-70.944 -162 0.02 {"}-70.363 -162.363 0.02 {"}-70 -162.566 0.02 {"}-69.185 -163.185 0.02 {"}-68.371 -164 0.02 {"}-68.179 -164.179 0.02 {"}-68 -164.314 0.02 {"}-67.114 -165.114 0.02 {"}-66.376 -166 0.02 {"}-66.195 -166.195 0.02 {"}-66 -166.376 0.02 {"}-65.173 -167.173 0.02 {"}-64.539 -168 0.02 {"}-64.317 -168.317 0.02 {"}-64 -168.77 0.02 {"}-63.488 -169.488 0.02 {"}-63.24 -170 0.02 {"}-62.767 -170.767 0.02 {"}-62.245 -171.755 0.02 {"}-62.109 -172 0.02 {"}-62.063 -172.063 0.02 {"}-62 -172.166 0.02 {"}-61.242 -173.242 0.02 {"}-60.882 -174 0.02 {"}-60.574 -174.574 0.02 {"}-60 -175.722 0.02 {"}-59.881 -175.881 0.02 {"}-59.828 -176 0.02 {"}-59.492 -176.508 0.02 {"}-59.086 -177.086 0.02 {"}-58.608 -178 0.02 {"}-58.354 -178.354 0.02 {"}-58 -178.934 0.02 {"}-57.511 -179.511 0.02 {"}-57.272 -180 0.02 {"}P -97.36 48 0.02 {"}-96.34 47.66 0.02 {"}-96 47.571 0.02 {"}-95.372 47.372 0.02 {"}-94.77 47.23 0.02 {"}-94 46.923 0.02 {"}-93.497 46.503 0.02 {"}-92.847 46 0.02 {"}-92.303 45.697 0.02 {"}-92 45.558 0.02 {"}-91.081 44.919 0.02 {"}-90.009 44 0.02 {"}-90.004 43.996 0.02 {"}-90 43.994 0.02 {"}-89.971 43.971 0.02 {"}-88.865 43.135 0.02 {"}-88 42.292 0.02 {"}-87.852 42.148 0.02 {"}-87.757 42 0.02 {"}-86.878 41.122 0.02 {"}-86 40.167 0.02 {"}-85.915 40.085 0.02 {"}-85.863 40 0.02 {"}-85.232 39.232 0.02 {"}-85.021 38.979 0.02 {"}-84.317 38 0.02 {"}-84.181 37.819 0.02 {"}-84 37.624 0.02 {"}-83.263 36.737 0.02 {"}-82.846 36 0.02 {"}-82.536 35.464 0.02 {"}-82 34.602 0.02 {"}-81.729 34.271 0.02 {"}-81.593 34 0.02 {"}-80.985 33.015 0.02 {"}-80.951 32.951 0.02 {"}-80.425 32 0.02 {"}-80.254 31.746 0.02 {"}-80 31.149 0.02 {"}-79.588 30.412 0.02 {"}-79.44 30 0.02 {"}-78.913 29.087 0.02 {"}-78.791 28.791 0.02 {"}-78.42 28 0.02 {"}-78.249 27.751 0.02 {"}-78 27.28 0.02 {"}-77.461 26.539 0.02 {"}-77.237 26 0.02 {"}-76.813 25.187 0.02 {"}-76.515 24.515 0.02 {"}-76.272 24 0.02 {"}-76.147 23.853 0.02 {"}-76 23.584 0.02 {"}-75.282 22.718 0.02 {"}-74.944 22 0.02 {"}-74.614 21.386 0.02 {"}-74 20.216 0.02 {"}-73.897 20.103 0.02 {"}-73.846 20 0.02 {"}-73.656 19.656 0.02 {"}-73.157 18.843 0.02 {"}-72.803 18 0.02 {"}-72.539 17.461 0.02 {"}-72 16.254 0.02 {"}-71.889 16.111 0.02 {"}-71.842 16 0.02 {"}-71.701 15.701 0.02 {"}-71.202 14.798 0.02 {"}-70.923 14 0.02 {"}-70.674 13.326 0.02 {"}-70.268 12.268 0.02 {"}-70.167 12 0.02 {"}-70.107 11.893 0.02 {"}-70 11.629 0.02 {"}-69.398 10.602 0.02 {"}-69.185 10 0.02 {"}-68.862 9.138 0.02 {"}-68.66 8.66 0.02 {"}-68.394 8 0.02 {"}-68.279 7.721 0.02 {"}-68 6.99 0.02 {"}-67.67 6.33 0.02 {"}-67.547 6 0.02 {"}-67.12 5.12 0.02 {"}-67.037 4.963 0.02 {"}-66.638 4 0.02 {"}-66.463 3.537 0.02 {"}-66 2.365 0.02 {"}-65.867 2.133 0.02 {"}-65.817 2 0.02 {"}-65.656 1.656 0.02 {"}-65.196 0.804 0.02 {"}-64.909 0 0.02 {"}-64.664 -0.664 0.02 {"}-64.242 -1.758 0.02 {"}-64.15 -2 0.02 {"}-64.099 -2.099 0.02 {"}-64 -2.308 0.02 {"}-63.379 -3.379 0.02 {"}-63.154 -4 0.02 {"}-62.832 -4.832 0.02 {"}-62.634 -5.366 0.02 {"}-62.394 -6 0.02 {"}-62.286 -6.286 0.02 {"}-62 -7.01 0.02 {"}-61.663 -7.663 0.02 {"}-61.547 -8 0.02 {"}-61.095 -8.905 0.02 {"}-61.029 -9.029 0.02 {"}-60.604 -10 0.02 {"}-60.456 -10.456 0.02 {"}-60 -11.611 0.02 {"}-59.866 -11.866 0.02 {"}-59.818 -12 0.02 {"}-59.715 -12.285 0.02 {"}-59.29 -13.29 0.02 {"}-59.081 -14 0.02 {"}-58.86 -14.86 0.02 {"}-58.747 -15.253 0.02 {"}-58.545 -16 0.02 {"}-58.492 -16.492 0.02 {"}-58.328 -17.672 0.02 {"}-58.29 -18 0.02 {"}-58.264 -18.264 0.02 {"}-58.071 -19.929 0.02 {"}-58.064 -20 0.02 {"}-58.064 -20.064 0.02 {"}-58.005 -21.995 0.02 {"}-58.005 -22 0.02 {"}-58.006 -22.006 0.02 {"}-58.179 -23.821 0.02 {"}-58.193 -24 0.02 {"}-58.237 -24.237 0.02 {"}-58.449 -25.551 0.02 {"}-58.539 -26 0.02 {"}-58.829 -26.829 0.02 {"}-58.906 -27.094 0.02 {"}-59.286 -28 0.02 {"}-59.511 -28.489 0.02 {"}-60 -29.487 0.02 {"}-60.16 -29.84 0.02 {"}-60.237 -30 0.02 {"}-60.616 -30.616 0.02 {"}-60.899 -31.101 0.02 {"}-61.553 -32 0.02 {"}-61.734 -32.266 0.02 {"}-62 -32.547 0.02 {"}-62.688 -33.312 0.02 {"}-63.453 -34 0.02 {"}-63.73 -34.27 0.02 {"}-64 -34.469 0.02 {"}-64.881 -35.119 0.02 {"}-65.413 -35.413 0.02 {"}-66 -35.763 0.02 {"}-66.166 -35.834 0.02 {"}-66.513 -36 0.02 {"}-67.504 -36.496 0.02 {"}-68 -36.714 0.02 {"}-68.919 -37.081 0.02 {"}-69.149 -37.149 0.02 {"}-70 -37.443 0.02 {"}-70.468 -37.532 0.02 {"}-71.749 -37.749 0.02 {"}-72 -37.795 0.02 {"}-72.192 -37.807 0.02 {"}-73.923 -37.923 0.02 {"}-74 -37.928 0.02 {"}-74.076 -37.924 0.02 {"}-75.81 -37.81 0.02 {"}-76 -37.801 0.02 {"}-76.232 -37.768 0.02 {"}-77.59 -37.59 0.02 {"}-78 -37.528 0.02 {"}-78.659 -37.341 0.02 {"}-79.186 -37.186 0.02 {"}-80 -36.963 0.02 {"}-80.719 -36.719 0.02 {"}-81.752 -36.248 0.02 {"}-82 -36.148 0.02 {"}-82.107 -36.107 0.02 {"}-82.32 -36 0.02 {"}-83.496 -35.496 0.02 {"}-84 -35.28 0.02 {"}-84.763 -34.763 0.02 {"}-85.707 -34 0.02 {"}-85.876 -33.876 0.02 {"}-86 -33.801 0.02 {"}-86.536 -33.464 0.02 {"}-87.112 -33.112 0.02 {"}-88 -32.494 0.02 {"}-88.308 -32.308 0.02 {"}-88.602 -32 0.02 {"}-89.41 -31.41 0.02 {"}-90 -30.995 0.02 {"}-90.612 -30.612 0.02 {"}-91.327 -30 0.02 {"}-91.703 -29.703 0.02 {"}-92 -29.479 0.02 {"}-92.819 -28.819 0.02 {"}-93.581 -28 0.02 {"}-93.814 -27.814 0.02 {"}-94 -27.653 0.02 {"}-94.933 -26.933 0.02 {"}-95.808 -26 0.02 {"}-95.916 -25.916 0.02 {"}-96 -25.829 0.02 {"}-96.725 -25.275 0.02 {"}-97.041 -25.041 0.02 {"}-98 -24.132 0.02 {"}-98.076 -24.076 0.02 {"}-98.132 -24 0.02 {"}-99.126 -23.126 0.02 {"}-100 -22.195 0.02 {"}-100.113 -22.113 0.02 {"}-100.195 -22 0.02 {"}-101.133 -21.133 0.02 {"}-102 -20.195 0.02 {"}-102.112 -20.112 0.02 {"}-102.195 -20 0.02 {"}-103.074 -19.074 0.02 {"}-103.964 -18.036 0.02 {"}-103.995 -18 0.02 {"}-103.998 -17.998 0.02 {"}-104 -17.994 0.02 {"}-104.956 -16.956 0.02 {"}-105.653 -16 0.02 {"}-105.822 -15.822 0.02 {"}-106 -15.62 0.02 {"}-106.81 -14.81 0.02 {"}-107.364 -14 0.02 {"}-107.61 -13.61 0.02 {"}-108 -13.105 0.02 {"}-108.51 -12.51 0.02 {"}-108.785 -12 0.02 {"}-109.249 -11.249 0.02 {"}-110 -10.077 0.02 {"}-110.037 -10.037 0.02 {"}-110.056 -10 0.02 {"}-110.131 -9.869 0.02 {"}-110.79 -8.79 0.02 {"}-111.175 -8 0.02 {"}-111.426 -7.426 0.02 {"}-112 -6.213 0.02 {"}-112.084 -6.084 0.02 {"}-112.12 -6 0.02 {"}-112.197 -5.803 0.02 {"}-112.696 -4.696 0.02 {"}-112.919 -4 0.02 {"}-113.173 -3.173 0.02 {"}-113.354 -2.646 0.02 {"}-113.563 -2 0.02 {"}-113.641 -1.641 0.02 {"}-114 -0.204 0.02 {"}-114.049 -0.049 0.02 {"}-114.061 0 0.02 {"}-114.072 0.072 0.02 {"}-114.369 1.631 0.02 {"}-114.419 2 0.02 {"}-114.461 2.461 0.02 {"}-114.525 3.475 0.02 {"}-114.575 4 0.02 {"}-114.605 4.605 0.02 {"}-114.652 5.348 0.02 {"}-114.683 6 0.02 {"}-114.662 6.662 0.02 {"}-114.615 7.385 0.02 {"}-114.595 8 0.02 {"}-114.566 8.566 0.02 {"}-114.537 9.463 0.02 {"}-114.511 10 0.02 {"}-114.459 10.459 0.02 {"}-114.345 11.655 0.02 {"}-114.308 12 0.02 {"}-114.277 12.277 0.02 {"}-114 13.968 0.02 {"}-113.996 13.996 0.02 {"}-113.996 14 0.02 {"}-113.995 14.005 0.02 {"}-113.766 15.766 0.02 {"}-113.739 16 0.02 {"}-113.725 16.275 0.02 {"}-113.624 17.624 0.02 {"}-113.606 18 0.02 {"}-113.586 18.414 0.02 {"}-113.531 19.531 0.02 {"}-113.508 20 0.02 {"}-113.476 20.524 0.02 {"}-113.412 21.412 0.02 {"}-113.377 22 0.02 {"}-113.354 22.646 0.02 {"}-113.308 23.308 0.02 {"}-113.285 24 0.02 {"}-113.252 24.748 0.02 {"}-113.231 25.231 0.02 {"}-113.196 26 0.02 {"}-113.118 26.882 0.02 {"}-113.103 27.103 0.02 {"}-113.02 28 0.02 {"}-112.953 28.953 0.02 {"}-112.943 29.057 0.02 {"}-112.874 30 0.02 {"}-112.755 30.755 0.02 {"}-112.576 31.424 0.02 {"}-112.466 32 0.02 {"}-112.422 32.422 0.02 {"}-112.151 33.849 0.02 {"}-112.132 34 0.02 {"}-112.115 34.115 0.02 {"}-112 34.48 0.02 {"}-111.692 35.692 0.02 {"}-111.62 36 0.02 {"}-111.493 36.507 0.02 {"}-111.37 37.37 0.02 {"}-111.16 38 0.02 {"}-110.844 38.844 0.02 {"}-110.531 39.469 0.02 {"}-110.292 40 0.02 {"}-110.212 40.212 0.02 {"}-110 40.649 0.02 {"}-109.566 41.566 0.02 {"}-109.189 42 0.02 {"}-108.811 42.811 0.02 {"}-108.307 43.693 0.02 {"}-108.142 44 0.02 {"}-108.09 44.09 0.02 {"}-108 44.23 0.02 {"}-107.292 45.292 0.02 {"}-106.584 46 0.02 {"}-106.299 46.299 0.02 {"}-106 46.584 0.02 {"}-105.086 47.086 0.02 {"}-104.756 47.244 0.02 {"}-104 47.622 0.02 {"}-103.769 47.769 0.02 {"}-103.168 48 0.02 {"}-102.433 48.433 0.02 {"}-102 48.531 0.02 {"}-101.469 48.531 0.02 {"}-100.531 48.531 0.02 {"}-100 48.531 0.02 {"}-99.533 48.467 0.02 {"}-98.366 48.366 0.02 {"}-98 48.32 0.02 {"}-97.787 48.213 0.02 {"}-97.36 48 0.02 {"}P -57.272 180 0.02 {"}-56.802 179.198 0.02 {"}-56.324 178.324 0.02 {"}-56.143 178 0.02 {"}-56.075 177.925 0.02 {"}-56 177.801 0.02 {"}-55.147 176.853 0.02 {"}-54.604 176 0.02 {"}-54.331 175.669 0.02 {"}-54 175.195 0.02 {"}-53.427 174.573 0.02 {"}-53.104 174 0.02 {"}-52.649 173.351 0.02 {"}-52 172.423 0.02 {"}-51.787 172.213 0.02 {"}-51.662 172 0.02 {"}-50.986 171.014 0.02 {"}-50.951 170.951 0.02 {"}-50.394 170 0.02 {"}-50.22 169.78 0.02 {"}-50 169.378 0.02 {"}-49.436 168.564 0.02 {"}-49.204 168 0.02 {"}-48.827 167.173 0.02 {"}-48.555 166.555 0.02 {"}-48.308 166 0.02 {"}-48.185 165.815 0.02 {"}-48 165.434 0.02 {"}-47.427 164.573 0.02 {"}-47.204 164 0.02 {"}-46.874 163.126 0.02 {"}-46.72 162.72 0.02 {"}-46.448 162 0.02 {"}-46.325 161.675 0.02 {"}-46 160.814 0.02 {"}-45.731 160.269 0.02 {"}-45.645 160 0.02 {"}-45.497 159.497 0.02 {"}-45.23 158.77 0.02 {"}-45.045 158 0.02 {"}-44.843 157.157 0.02 {"}-44.721 156.721 0.02 {"}-44.537 156 0.02 {"}-44.465 155.535 0.02 {"}-44.227 154.227 0.02 {"}-44.19 154 0.02 {"}-44.163 153.837 0.02 {"}-44 152.834 0.02 {"}-43.859 152.141 0.02 {"}-43.838 152 0.02 {"}-43.826 151.826 0.02 {"}-43.667 150.333 0.02 {"}-43.645 150 0.02 {"}-43.645 149.645 0.02 {"}-43.645 148.355 0.02 {"}-43.645 148 0.02 {"}-43.67 147.67 0.02 {"}-43.828 146.172 0.02 {"}-43.842 146 0.02 {"}-43.863 145.863 0.02 {"}-44 145.27 0.02 {"}-44.197 144.197 0.02 {"}-44.231 144 0.02 {"}-44.303 143.697 0.02 {"}-44.579 142.579 0.02 {"}-44.715 142 0.02 {"}-45.044 141.044 0.02 {"}-45.13 140.87 0.02 {"}-45.504 140 0.02 {"}-45.64 139.64 0.02 {"}-46 138.951 0.02 {"}-46.284 138.284 0.02 {"}-46.425 138 0.02 {"}-46.979 137.021 0.02 {"}-46.994 136.994 0.02 {"}-47.605 136 0.02 {"}-47.748 135.748 0.02 {"}-48 135.506 0.02 {"}-48.675 134.675 0.02 {"}-49.205 134 0.02 {"}-49.536 133.536 0.02 {"}-50 133.156 0.02 {"}-50.574 132.574 0.02 {"}-51.09 132 0.02 {"}-51.491 131.491 0.02 {"}-52 131.139 0.02 {"}-52.639 130.639 0.02 {"}-53.454 130 0.02 {"}-53.707 129.707 0.02 {"}-54 129.52 0.02 {"}-54.809 128.809 0.02 {"}-55.791 128 0.02 {"}-55.885 127.885 0.02 {"}-56 127.805 0.02 {"}-56.967 126.967 0.02 {"}-57.23 126.77 0.02 {"}-58 126.181 0.02 {"}-58.091 126.091 0.02 {"}-58.199 126 0.02 {"}-59.069 125.069 0.02 {"}-60 124.308 0.02 {"}-60.156 124.156 0.02 {"}-60.308 124 0.02 {"}-61.054 123.054 0.02 {"}-62 122.139 0.02 {"}-62.071 122.071 0.02 {"}-62.134 122 0.02 {"}-62.555 121.445 0.02 {"}-62.933 120.933 0.02 {"}-63.775 120 0.02 {"}-63.863 119.863 0.02 {"}-64 119.735 0.02 {"}-64.787 118.787 0.02 {"}-65.468 118 0.02 {"}-65.689 117.689 0.02 {"}-66 117.423 0.02 {"}-66.759 116.759 0.02 {"}-67.708 116 0.02 {"}-67.852 115.852 0.02 {"}-68 115.757 0.02 {"}-68.958 114.958 0.02 {"}-69.184 114.816 0.02 {"}-70 114.272 0.02 {"}-70.179 114.179 0.02 {"}-70.453 114 0.02 {"}-71.353 113.353 0.02 {"}-72 112.969 0.02 {"}-72.679 112.679 0.02 {"}-73.667 112.333 0.02 {"}-74 112.205 0.02 {"}-74.158 112.158 0.02 {"}-74.56 112 0.02 {"}-75.572 111.572 0.02 {"}-76 111.434 0.02 {"}-76.773 111.227 0.02 {"}-77.128 111.128 0.02 {"}-78 110.902 0.02 {"}-78.793 110.793 0.02 {"}-79.297 110.703 0.02 {"}-80 110.599 0.02 {"}-80.599 110.599 0.02 {"}-81.401 110.599 0.02 {"}-82 110.599 0.02 {"}-82.673 110.673 0.02 {"}-83.261 110.739 0.02 {"}-84 110.821 0.02 {"}-84.936 111.064 0.02 {"}-85.12 111.12 0.02 {"}-86 111.366 0.02 {"}-86.459 111.541 0.02 {"}-87.584 112 0.02 {"}-87.886 112.114 0.02 {"}-88 112.149 0.02 {"}-88.297 112.297 0.02 {"}-89.289 112.711 0.02 {"}-90 113.208 0.02 {"}-90.466 113.534 0.02 {"}-91.131 114 0.02 {"}-91.671 114.329 0.02 {"}-92 114.507 0.02 {"}-92.815 115.185 0.02 {"}-93.558 116 0.02 {"}-93.752 116.248 0.02 {"}-94 116.484 0.02 {"}-94.758 117.242 0.02 {"}-95.327 118 0.02 {"}-95.575 118.425 0.02 {"}-96 119.077 0.02 {"}-96.384 119.616 0.02 {"}-96.602 120 0.02 {"}-97.094 120.906 0.02 {"}-97.215 121.215 0.02 {"}-97.566 122 0.02 {"}-97.68 122.32 0.02 {"}-98 123.013 0.02 {"}-98.329 123.671 0.02 {"}-98.439 124 0.02 {"}-98.677 124.677 0.02 {"}-98.849 125.151 0.02 {"}-99.137 126 0.02 {"}-99.289 126.711 0.02 {"}-99.41 127.41 0.02 {"}-99.528 128 0.02 {"}-99.612 128.388 0.02 {"}-99.993 129.993 0.02 {"}-99.994 130 0.02 {"}-99.995 130.005 0.02 {"}-100 130.053 0.02 {"}-100.195 131.805 0.02 {"}-100.216 132 0.02 {"}-100.254 132.254 0.02 {"}-100.48 133.52 0.02 {"}-100.546 134 0.02 {"}-100.689 134.689 0.02 {"}-100.816 135.184 0.02 {"}-100.965 136 0.02 {"}-101.113 136.887 0.02 {"}-101.152 137.152 0.02 {"}-101.289 138 0.02 {"}-101.372 138.628 0.02 {"}-101.47 139.47 0.02 {"}-101.538 140 0.02 {"}-101.606 140.394 0.02 {"}-101.857 141.857 0.02 {"}-101.881 142 0.02 {"}-101.902 142.098 0.02 {"}-102 142.462 0.02 {"}-102.355 143.645 0.02 {"}-102.419 144 0.02 {"}-102.554 144.554 0.02 {"}-102.763 145.237 0.02 {"}-102.919 146 0.02 {"}-103.122 146.878 0.02 {"}-103.195 147.195 0.02 {"}-103.381 148 0.02 {"}-103.469 148.531 0.02 {"}-103.677 149.677 0.02 {"}-103.733 150 0.02 {"}-103.793 150.207 0.02 {"}-104 150.847 0.02 {"}-104.326 151.674 0.02 {"}-104.407 152 0.02 {"}-104.577 152.577 0.02 {"}-104.788 153.212 0.02 {"}-104.996 154 0.02 {"}-105.237 154.763 0.02 {"}-105.493 155.493 0.02 {"}-105.662 156 0.02 {"}-105.754 156.246 0.02 {"}-106 156.869 0.02 {"}-106.373 157.627 0.02 {"}-106.511 158 0.02 {"}-107.028 158.972 0.02 {"}-107.077 159.077 0.02 {"}-107.525 160 0.02 {"}-107.637 160.363 0.02 {"}-108 161.469 0.02 {"}-108.156 161.844 0.02 {"}-108.201 162 0.02 {"}-108.377 162.377 0.02 {"}-108.788 163.212 0.02 {"}-109.12 164 0.02 {"}-109.305 164.695 0.02 {"}-109.504 165.504 0.02 {"}-109.632 166 0.02 {"}-109.676 166.324 0.02 {"}-109.994 167.994 0.02 {"}-109.995 168 0.02 {"}-109.995 168.005 0.02 {"}-110 168.053 0.02 {"}-110.188 169.812 0.02 {"}-110.201 170 0.02 {"}-110.201 170.201 0.02 {"}-110.201 171.799 0.02 {"}-110.201 172 0.02 {"}-110.18 172.18 0.02 {"}-110 172.973 0.02 {"}-109.824 173.824 0.02 {"}-109.801 174 0.02 {"}-109.754 174.246 0.02 {"}-109.538 175.538 0.02 {"}-109.443 176 0.02 {"}-108.996 176.996 0.02 {"}-108.989 177.011 0.02 {"}-108.513 178 0.02 {"}-108.355 178.355 0.02 {"}-108 178.923 0.02 {"}-107.611 179.611 0.02 {"}-107.401 180 0.02 king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama8000/cispro.ndft0000644000000000000000000037516511744305674025576 0ustar rootrootcis Pro, 70%, B<3044C4C4F9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:{:{:{:{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:{:W9:Z:Z:Z:Z:Z:Z:Z:{:W9:{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:{:W9:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:W9:{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:{:{:Z:Z:Z:Z:Z:Z:Z:Z:9:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:{:W9:W9:W9:W9:W9:{:{:W9:W9:{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:{:W9:Z:Z:Z:Z:Z:9:9:9:9:9:9:9:9:9:9:9:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:W99{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:{:{:W9:W9:W9:W9:W9:W9:{9{9{:W9:{9{9{9{9{9{9{9{9{9{9{:{:Z:Z:Z:Z:9:9:9:9;{;!k1;!k1;!k1;!k1;!k1;!k1;{::9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:9:Z:Z:Z:Z:{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:{:W9:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:Z:{9{9{9{9{9{9{9{9{9{:W9:Z:Z:Z:Z:9:9:;!k1;3Z;3Z;W9;W9;W9;W9;W9;W9;EJ ;3Z;!k1;!k1;{::9:9:9:;{;!k1;!k1;!k1;!k1;!k1;!k1;!k1;!k1;!k1::9:9:Z:Z:Z:{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:{:W9:Z:Z:Z:Z:Z:Z:Z:9:9:9:9:9:9:Z:Z:9:Z:Z:Z:{9{9{9{9{9{9{9{9{9{9{:W9:Z:Z:Z:Z:9:9;!k1;3Z;W9;i);{;{;k1;Z;Z;sv;{;{;{;W9;W9;EJ ;3Z;3Z;3Z;3Z;3Z;EJ ;W9;W9;i);i);i);i);W9;W9;W9;3Z;!k1;{:9:9:Z:Z:Z:{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:{:W9:Z:Z:Z:Z:Z:Z:Z:9:9:9:9:;{;{;{::9:9;{:9:9:Z:Z:Z:{9{9{9{9{9{9{9{9{9{9{:W9:Z:Z:Z:9:9;{;3Z;W9;{;sv;Rd;A;1S;<;; ;A;J ;Rd;Z;sv;{;{;{;{;{;{;{;sv;b;Z;Z;Z;Z;k1;{;{;i);W9;3Z;!k1:9:9:Z:Z:Z:W99{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:{:{:W9:W9:Z:Z:Z:Z:Z:Z:Z:Z:9:9:9:9;{;!k1;3Z;3Z;EJ ;W9;W9;3Z;3Z;!k1;W9;!k1;{:9:9:Z:Z:W99{9{9{9{9{9{9{9{9{9{9{:W9:Z:Z:Z:9:9;!k1;EJ ;i);b;J < <=!=kf=NA=1= =<ږ<1S=1S=> >h>>sv>>> >J>>!#s>!#s>\>>= =ܱ=ֆ===XX=3Z= <<ҽՋ>_>1>>S>I>QF>Ru>QF>ON>P8 >Ru>T>T>P8 >F!Y>8>+:&> >)=֪=;= =xږ=J=K<<1S<ֆ=?>sv>3f>P>o>>B>N >>h>>q>/>8>#>>u5>a>F!Y>/>==== =F=V=($='F>&.>Eٛ>p*>7>\>Ļ>>Ė>>>ƌ>j>M}>$>b>7>>)>a>=>">F=.==q=e=XX=($=!<1S=֪=4h=>˼> > >˼==ׁ=F=-=~=L:=x=R=!k1<ږ p`>/>V>!>&>6>ʝ7>݇>9O>>-> >j>>9>>Դ>1>>p>prW>G@Q>'@><@=ܱ=C=F=V=!k1<<ҽ<$<z/>>%W>.>4y>6M>4y>/>%Q>>n=ނ====)=NA=sv< O>3f>a>(>>S>K>??%??+?#?u$? p?>|&>>j>$>/>qN>EJ >$8>x=Uy==}Vt=Fi={<<ֆ<<`1S<7ֆz>3>+:&>8~>JUy>Z;>h>o>prW>k?>^>Lh>8>%Q> G=虒=)==\={=H={<0<< >3>b>B>>ư>>L?\??%W?+?-T6?+L?$nj?a? >>Z>r>W>X>d>8D>^M=y=f= 6=_[=*b=L:=`=u=Uy=ږ}= ><@>>)>8~>P8 >jH>c>ky>h>+>d>>> >)>gz>H_H>-x>3> G=PJ== =r =;3m=e<1S+>XL>->>b>>2? &?T?')?.?3H?3~?0Wo?(~?3? >n>|m>>+>y>H>#ab===۵=xږ= >i>+>;{*>R>oS_>"0>h>>>>ŵ>ʝ7>ʝ7>E8>>>>>t4>P8 >/>+:&>z/=֪=0W=p`=\l=%<<">F!Y>}>>>|m>?`?2N??(?-?0 ?0?+:&?!GR??f>oA>I>>'>Q>)C>n="= =c=D+(= >>%W>8D>P8 >n>I>Yf>l>lt><>Ŷ>>կ?}?>(>1 >/> >r>:&>ӹ>yj>N>B|>==J ==|7}=D+(= <0!>/>aPJ> >g>Դ> t>Y??W??l?!?#+? ?sv?J>*>PJ>w>L:>!>O>&.>Y=J ==w==q[=e)>+>3Z>P8 >r>a>>>>/?? x?5??%b?(6?'q?"??\?>虒>>>h>r>_Z>3> =%===XX= L:<ږ{>8~>p*>h>>ȃ'>c>>??Da? ? ? ?r>[\>)>z>>>s=>@>>d===>=\l=%<ږ<>41>V>!>i>B#>>~>E? ?m?)?41?:?>Z?A?A??:?<?5?+L?+? uH>>o>>ky>t4>@B>@==u=h=d0=+sv>>>qN>݈> >>[>D>>>er>>y>D>.=>b>>E>J>V>. >[8=F= ={=z/>(z>JUy>zAL>i>B>???-?:\3?A9?KP?QE?UgE?WU?W?S?NW?D?<"?1V??[8>>c>O>!>JUy>"Bk===m=kf=1=!<ҽ=$=p>3>;{*>gz>>}>Y>u>9>|>J>e>>l>>Yf>>t4>S>3>====T=3>3>_Z>>>m??M?3w??J?K?V?_[?e*?jH?k1/?iy?dA?]*?S?G.a?< ?,֪?-f>>͎>=>F>K/>"Bk= ,=q[=5=e(=+g>1>R>t4>>>d>\>+>>p`>}>qI>^;!>I>6(>"Bk> =1S= =*-=boA='<<<`1S<*b< ;A;Z;{;W9;3Z;!k1::9:9:Z:Z:Z:Z:W9:{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:{:Z:Z:9;!k1;W9;sv;A<>6(>jH> >X>].?g?.?>H?M"?Z?e?o/?u$?yX#?y?v?q7?g?\V?Op?Ao?35?d?}>>l>k>Eb>"==$=\=XX=K< z>">8~>Ru>i)>t^>x>tw>k?>V>Cj>3Z>%W>>n=(=+(=C==boA=- G>3>i)>>b>4? ?4g?C?S?a?nj6?v?}D??B?|*?u?jׁ?_l?QW?A9?4?> >>>n>5> =ҽ=W=)=D+(= >"Bk>1dw>9=<>?g>>S>7ֆ>-0W>@> = =Ջ$==W=>=u}=L= L:<<<<@B< ;J ;{;i);EJ ;!k1;{:9:9:9:Z:Z:Z:Z:W9:{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:W9:Z:9;{;3Z;{;Rd< )>)C>[%>>]>?#?4C?C?T?b?ow>?w,#?}Vt?p?~c|?z?rV?g?Z?LX?=?-?>rW>ŵ>sv>L>K== ={=\l=")<ږe>{>>T~>>= =֪==={=xږ=Q=+=<0<ֆ<sv>E>F>&> ?J?-f&??y|?O?\\?hu?q[?u}?wm?u}?q[?hQ?] ;?P[?A9?4?t?a>w>>[8>+===sv=m=3Z=!<ҽc>/>ip>!>o>(?~?6?C?Rd ?\h?c?ha?iX?g?ab9?Y/?O?Ao?4=??r>[>M>>^>O=B=sv=m=3Z=F<ؠ>C>>+p>Ŷ? ?$?8w?Bs?M`?Sܱ?W4?X|m?U$?Op?Eٛ?<?0>?J?s>D>f>/>b>.=3m= 6=\l=($<<<%>Z>%F>>u? ?"x9?3$?<"?A9?Dr?D?A)?<?4g?$?i>?>έx>H>>T>'@= =F=I=\<0O>1>n>O> 1>0?I?#?$?.?2N?2_?,?"TZ? ^?[>[>>+>t4>?>3=[=OO=($<ږ >:>s=>>>>~>|&?? ? &? +?>>PJ>ŵ>Z>>XL>->Ջ=ȧ=\=jH<9<5. >d>c==0W==NA= << p`>>ؠ>{> Qi=7}=(=ȧ===m=3Z<<ֆ<c<*b< ;{;EJ ;!k1:9:9:9:Z:Z:Z:{:{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:{:Z:Z:Z:Z:9:9:;!k1;3Z;W9;W9;{;{;{;{;{;{;i);W9;3Z;!k1::9:9:Z:Z:Z:Z:Z:Z:W9:{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{9{:{:Z:Z:Z:9:9:;!k1;W9;{;J <S>/OCGs[5 0 R]>>/Pages 3 0 R/Type/Catalog>> endobj 2 0 obj <>stream Adobe PDF library 9.00 2012-02-23T23:37:47-05:00 2012-02-23T23:37:47-05:00 Adobe Illustrator CS4 2012-02-23T23:37:47-05:00 188 256 JPEG /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAC8AwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq82/NPy D5z8y6pZ3Pl3VY9NhWwu9Ovw7yKXhvWjEnAIpAcInJH7EYqxO5/J/wDMzVdThj1XV4zo8UP1dka5 e5qDqVtcc47eWARKBaWwi4NUFlr+2xxVFeY/yp/NA6Lf6JoGvsLSaB7PT5Li8ljWGEW0MQ9SFImR /VCzJxXiIywda0AVVCXfkX85tNmutYs9RMuozyTxWFul1NcmJbi4sPq4uGkjjWZYobaaOSRgDQg7 nqqnnmr8rPONx5gk1/Q9WCahDbpbWckzlZG46fPbmSSVUMoYzyI/ENxPU7jFUqtfy8/PiOwklbzQ P0tHIxs1e9ne39NJLBYVlHojn+4S+5/DuzoTUiqqusfy1/OS4tVttb10zGN/WtbmPUbhXgVZOUUP EQgyOu5M5flQ8NwA2Ko+28kfnZJrF5eXvmFFgM0UtpFDdTBKxF/tRekFCMpQMn2SQdt91UAfy3/O ddKvltdbFtf3cgcf7krp6MwhV5DL6KHl+6JHw0CkrQ4qnkHlL83I/KmtWsmsrJrOotby2zm7mIgP 1uRrmOKYRK0am29NE4rStTQHcqpIPIP5+x6JbRr5nSXVeVvJeSNdyqhlh+scih9E0RuUPJOPFqGo xVAWvkL88j5e/RNpqwT9FpY2FpHeXM0UM3o2dLyR2jQyzQPcycY68TwXoemKvRfyz8u+edFk1dPM t+l5aSyR/oqNZpJzGiGTl9pI1ReLRqqr/LvU/EyrOMVdirsVdirsVdirsVdiqGn1PToLqG0nuoYr q42t7d5FWSQ7n4EJ5N9k9MVROKuxV2KoPVdUi021FzLDPOhkSPhbRNM49RuPIqu/EV3OKpTe+eNO tHdWsNSl9NBIzRWUzihIWnTc/F0/piqcaXqMOpWEV7DHNFHNUrHcRvDKOLFTyjcKy9O+KorFXYq7 FVO4ube2iM1xKkMS/akkYIo+ZNBircM8M8KTQSLLDIA0ciEMrKdwQRsRiq/FXYq7FWNf4904QNM2 m6qqoVBU6fccviUtXjx6KBv77dcVXXPnrTYE5mx1NxUD4LG4J3VW3BUU+2Bv3r4HFUz0fWoNUjla K3ubZoXMbpdQSQGo7rzADr/lKSMVTDFXYq7FXYq7FXYqg7nRdIur+DULiyhmvrX/AHnunRWkjpX7 LkVH2jiq7T5XZZVkDB1lehcoSVLErTiTsv2BX+X6ckQxBRWRZIHUvrMIW6twztGR6kK1Yuor8KqS qgtypUsoGzMeK0y7FR9J/H4+PcNywltv+Px+OiMikWWJJFDBXUMoZWRqEV3VgGU+xFcqIo0zanEp hf0eJm4kxByQvIfZ5Eb0r1wxq9+Soe3uPWvJOKyiP0IZFLrxT42kqACAwccfjB6fDk5QqI5cz+j7 O74oVNPZnsLZmJZmiQsx3JJUbnKkt2bl7WJipRuIDxsyuysBRlZlJUsp2ND1yeQVIqFbIKo3llZ3 tu1teQJcW77PFKodT8wcVQaxW1hNaWVui29hBbycLdF4IFjaNRuGVQqKxqCN67dDlkRsfx39P09P igmkYtsv1cwuzMXDeo6s6tV68irci69fho3w9B0yJlvaBHalOa2uqiSK5kYohAt2MaxyNQ05uIzI vXqp+g95RkORHx/BpBieYPw/Adp9x6kRieVZZoCUdw6OzBWZA7cFQKzFDyHEAMGA6Vw5Y0bAoH8V 1+/lRZRNorKkuxVQRm+vzLU8RFEQvYEtJU/hiqtU8gKbUNW8Om2Kt4q7FXYq7FXYqgNS1iKwuLSB 7a5na8ZkR7eJpUQqASZWGyDfavXFVKzmit4pbieWIGCSWK5aFQFRfVLxepuzLwjep3oORbYdLjG6 AB35fpr3n7q5sJER3KZ8l5BajkQSB3oOv68pZoG+WS7WayCK0bcFnjd1XlA/2zsJWo45KAVU1U/E Njl2Oo1L8X9n6eY2a5R4gQeSLt4FhjKBmYF3erGprI5cj5DlQe2VylZbHXFxFbwtNKaInWgLEk7A KqgszE7AAVJ2GMYmRoKhtMBBukfedZR9YkCoiPIYY2LIFJbjQgDmeW3UihyzL0rlW3zP422QFXTf +Oda/wDGGP8A4iMpSqQW8MCFIUEaF3kKqKDnI5d2+bMxJyUpGRs/itlVMiqhqF4tlZT3bRSzrAjS GGBDJK3EV4og3Zj2GKoK1mg1T6pfLA8J4SPbi5hKTRsrcORVviWqkjt8JPjkoyI+KtxX0FlAitDO LRlVrX0raVyqMK+m0cSs6FOlGRaCg3IOWnGZHmL67j52ed+9p4xDajXShf3Kl5qFYuFuSsksakOx 4NGZjwh5Iyu6l3NByjIFGr0oRDHvv+K5/IefcyMr2H9nw/Yq2mnwW881wqj1p6B2VQvwKzOq7dfi kdiTUlmPyEZ5TIAdB+P0AfBmIgIrK0uxVDx/8dGf/jDD/wASlxVEYq7FXYq7FXYq7FXYqk1nNcJc 3kaGOIKBdSzGB6P6jyR/78qWVYBXbpTLTEmIN9SPuP6UXStMdScCKW4S1YPGRIIiUfi8Z4h/UpR2 b06NRjvQd8ERW43/AAf7WEjex2/A/sU7S3vTqd7cC8hklCxW0qiJwEMZeZRx9TrwuF375PJL0RFV zPzoffEsohH+nqP+/wCH/kS3/VXKGSWwQXialcAz20l+ELrK8TGQRyN8K0Ep9OL4AoG3NlY0qCTk SJMRz4P0jn7z9wIDA3atpkuqTwOz3MLsJH4uLeRVMbn1IeJZ05funQEiorUVqDkM0QCK7h8+R+2/ gmJsWv05NQ/R9rSeGnox/wC6m/lH/FmVMkfGJAgEjBn7soKj7iW/Xiq7FXYqhbgXJvYhDIiUjevO Nm/aXoQyYqg9GsNVtLSSKSaEM1zdzAemzfDNcySrv6g/ZcbdumX6jIJSBH82I+UQEAL4zq1zNyFx HDFbyEMvpnk7DmhWRS5olCsiENU7dB9qJAiO8n9nLz5g/ilF+nqP+/4f+RLf9VcqSoXI1MGFFuUQ ySAF0gdqBQXIPxOqhuHElqddjypk4Abny/Z+P1WqHsLXVra8ntUkU2SxxSRTy+vMzSu0iyJylndg FVEP+yyzLISiJfxWeQA22rkPegKyJqH6Qn/fw19GL/dTfzSf8WZQlGRLdhj60kbrTYIhQ1+Zd8VV cVdirsVdirsVQ182pL9X+opE9ZkF16xYUg35lOINX6UB2xVATyrM76bGgE+oW14yzOPhAikVAGXY ne5rmRiFR4+kZD7b/wCJYZBYI7wmkE0VxbxzRmsUyB0PSqsKj8DlEgQaPRlEgix1QlbexvnZvgXU JAzyHkVM4RY1HQhSyIF3YAkCgqTlu84/1fu5/j9QRdFH5SyQGrRSCOO8ikEclqSxeQn01jbaRite PwrvX7VKqCvInLsJH0nr9/T8e4m6YzFqltDKs5mKOqyp+89WUsynlzVQg5RinquCQeyjcUoJSFV3 eX6efQfbyWK/Tf8AjnWv/GGP/iIypkiMVdirT8+DcKF6HjXpXtWmKoLT3v2js/0ikaX5tybpICxi EhKcgjMKkVxV0b2l5IObpJUXMXot+0qTCN/gOzBSoBNO/vl0gY/7E/ZbAgE7+bdzDdxiI2m5ioCG bkXUELwcvUkUJbny5Ajo1SpEJRN8X4/Hdy93NdxyRFrdQXUCzwNzjetDQggqSrKymjKysCGUioOx 3yE4GJo82aoyqwowDCoNDvuDUfjgBVZb20VvH6cfIrUkl3aRiSa7s5Zj9J6bdMMpmRsqpx/8dGf/ AIww/wDEpciqIxV2KuxV2KuxV2KuxVJIyBrli5WQ8La/UsFYqCbi3NCSK1PHb6cyIn9zIf0o/dNH VMYZ/TEwdJuMbsyuys5ZW+P4QorRSxUDrt8sqIumINWl+o6paXdjNFFb3kk1D6KC3u7Zmk/ZAm9N PT5HYvUUHfLseMxkCTH5xP2dfc1TygjYG/cR+hH6ffJPbBqs7I8kLvx+00LtEx+CoFWQ7duh3yrL Dhl8j8xbeF929pJazJcg/VmRln5BlXgQQ1TQUFMjAkSBjz6JUUaI6rLI1vJySCNY7khypDu5eNFI opHBSxH2vhr9kZMn0AX1O3y3/V3b95R1XabMn6Otdm/uY/2W/lHtlSUYpDCor9II/XirsVdiqHkY Lexk1oY3pQMf2l8NsVS3S0mjsRFN61u7X93L8KOSYzdyypUgEKrpStexp1IzKzyBlY39Ef8AcgfY WBH3op9dskkMZjuywNCRZ3bL/wAEIiv45WMEiL2/00f1sTmiDW/+ll+pS0mSSOe6i4t9WU1ibcgM HdPSVVJVFSKOOihR1qasWyWaiAev9hvzsk/2UyxihSZesng3/AN/TMdmhfrsvqGTixt6iL0BC/q8 /U4+py5U4cfipxrTevbLeEVXXnd7cuXLn/YhuOZP0jPs39zF+y380ntlSUUsisaAH6VI/WMVXYq7 FXYq7FXYq7FUvKXAnsngQMonnjuXJNVhYSNUVPUypGO+WwI4ZA923vv9VoKOkkjjjaSRgkaAs7sa AAbkknoBlYBJoJS9dItL2yVdXtUupJWE8tvc8blIpStOEfJQoVB8IKqK9T8RJN5zyhL92eGtrG1j z9/Pn5cqRXemEUUUMSQwoscUahI40AVVVRQKoGwAGUSkSbPNKx3Lv6aosiV4zksPhBUmnGjVP2dj TY1r2wgVv8ldbInAzCD6vLccZJ0IXnz4hfjKFlZgqha1PTrTGZPK7A5fsVZpv/HOtf8AjDH/AMRG RVEYq7FXYqosP9LjP/Fb/wDEkxVT+pFL4XVu/pCT/eyLjVZaLxV+o4yLRRy7r8JBopW3xLjwnfu8 v2eXfv32KWDTIpgTqHG9ctG/GRB6KPENjFG3Lj8VWqSW3+1QKAfGI+j08/fv3n7O7y5rSNylLsVU /qtt9Z+tekn1kJ6Qn4j1PTry4cuvGu9MlxmuG9u5VOP/AI6M/wDxhh/4lLkVRGKuxV2KuxV2KuxV 2Kpfp07uZI5SiL6kot4vjMjCKTjJI3MKaB2AFARSjcvioLZRoCvj3b8h8v1Vsi96RJubCa0klMsU lpRhLJyVo6CocMfs7dDkeGQNUbRxxIu9lmn3UUsQiE6zyxorGQMrF43r6cp4qi/vAtfhXjWoHTJZ IEG6ofix15fPkmJBGyKypKX39jbT3lqbmMyxCVZYgOVI7mEFkkPpr0K8gTI/GoUAVOX45kRNc6+w /joL59zXPGJVfQ38UTYuWtlBEoMZaKs4o7ekxj5mnXnx5A9wcryDfp37ee/2Mw1pv/HOtf8AjDH/ AMRGQSrRyRyKWjcOoLKSpBHJSVYbdwwIOEgjmq7ArsVUWB+uoe3pv3P8y9sVQqaheTuJbS1WWxBc GZpPTkfiNmgjKFXVm2DO6A9RVaE3nFEbSNS933m9vgD3c7RaMjuYXkMQYCZRyaI7OFqV5cTvQlTQ 9DlRgQL6JVMirsVdiqHj/wCOjP8A8YYf+JS4qiMVdirsVdirsVdiqU6l5c068votTeN5L+1Ie3Bn ljjLJRlDKpZePICvwn5bmqq3y4PMwjuRrsVnE/qsbb6k8jho2JNX9QL8XbFU0eBWRlDOpYMvJWNR z3JFa7jt4dsVXGKOj0XiZPtsvwkmgWtRQ1oBvhtFIe9/SKGE2KRvznT636zMOMFKOY6V+LYUHTAl WltoJaCVfUAdZQrEleaUKmh2+EgMPffrhEiOSpcsWtQ62q28FoNFlXldTlpPrbTKnAEjiVfZUFWa tBiZE1fRUyihjiVVjBCqqoq1JAVenU4FS7QhryLNDqdvaW8EXFLJbNnI4CoowYLxoONAMJJJsqmm BUDrOi2Gs2L2N+rvbSfbSOSSIn5mNkOKpZYabrum6jY2Fjb2q+WraJomkeeaS8AKkigZeJ+NV3L9 CcVTx7aB5fWKfvuBi9QVDcCa0qKHqMNmq6IoXfVtreJ+QkHqqzrIFejBWTiV4g9KMgYe++IJHJLb xmjMm8m7KCzceXHiK07e309cCqOn/X3sbV9SWOO/CK1ykDMYhIVowUmhK77VxVR1S4vrG1EthYya jMPhMAlVDxRGYGspoSSAvuSKmmKomFPURZ5IzFNIkfqJyNVK/EFqpoaFj88VQN4/mYa3ZraRWjaI yn69JK0guVajU9NQOBFadcVTTFXYq7FXYq7FUqv380DWbJbCOzbRj/x0HmaQXA+1/dBfg/l6++Kp lFMJOVFICsVJIoCQaGmGkW3yPPjwNKV57Ur4da/hjSoe81GOzPKeORbcAGS6ABjRTWrOa1VVoORp sDX7IYrZjxGfLn3dT+P2c6scW7WqWD31obdLueyYsrCe2YLIOLBqVYMKGlDtlTJIT5U1O3iM83mr VWENZGIFsaooPwlFgNdv5dz92GIs0FZLHPHI8kYqskZHNGFDQioI8QfEe46g4TEgWq0XcH1MXbt6 cHp+qzNtxTjyJPyGCMSTQ5qrYFdiqD1e8vrOxeexsH1K4UqFtI3jiZgTQkNKVTbr1xVUsrqae2tn uIGtbmeFZZbZiGMTUUtGWXYlS1KjFURiq2RisbMqGRlBIRaVYgdByKip9zhAQSp2V5b3lrHcwOHi kGxVlcVBow5IWU0IINDkskDA0VBBFhIbTylqNvdQzN5k1OaOGRZPq8jQFJFAUMklYixDFSdiOu2Q Sn1tdLOZV4NG0MjRlX41NOjUUsQrfs1oaZOcOGvNAK8SqZnhoeSKrk9qOWA/4hkEr8VdirsVdirs VdirsVQWnI6M5X4opi7luRcB1bifiZujLSnFexJ3OSJse5iBR96NyLJDXktsGSJjG12Q0lpAzKHd kU14Bt+hoSOxyyAPPp1YTI5dei3T7lJDc24fnJZTehIaMOqJKgqzOWIjlWrV3NenTDlhVH+cL+0j 7wWQRM0STRPE9eEilW4syNRhQ0ZSGU+4NcriaNpcI4xI0gUCRgFZ6DkVUkgE+A5GmNmqVD2CK+mW yOAyNAgZSKggoKgjEGlVbVZEtokll9eVECSzEKC7qKMxCgKCSOgGGZBJIFBVXIq7FUHctcrdx/V0 jkk4HkskjIApZanZJN/DbfJRrqxlfRWF0nIrIGhIIUepQBuTFV4sCVPKmwrXpUDHh7t14u/ZUllj ijeWVxHHGCzuxAVVAqSSegGAAk0EkgCygtNjdbrUDyf0jMBHGzlwKRqWZQxZkqzU47LQAhd6tblP pj7v0/b7+fntQjC9/ej8pZpXdTx2mqiQyovqwmR4uIU+lCwWaVpC6L8HrRH4gaKrU+1mRCJlDlyP 38hVeR+JHc1zNG/xX7P1okyMl/NxQuzRQhVHSvKXcnsB/nvtlAFsyVSBL5ZZTPNFJCT+5SOJkZRU /aYyOG28FGSkY0KBv3/sYxErNkV7v2q+QZuxV2KuxV2KoDUrXWJri0awvktII2Y3kbQiUyqQOIVi y8KEe9cVWQarZCURfWYeBM5c8hUMsoAFfsjqdjv4dDkuGhv5Mb3WXmv6ek6WkVxEZ5WRQS9EAfmz HmoahCQue2/EVHKuWY8dgyPIfs/SR9/RBlvSpbyaPbuXjuowTy+EShY/iYuaRqRHWp+1xr4nISyE ij+PjzZCIHJddazplnZTXHrLMtvG8npRuryvwUtxQFviY0oN8YR45AbCz8EtJq9nH6v1i8gfgS4a P4QsZJ4g1Z+TALvx+4VxIBqvv6/j+1iZU611e2drhJrm2rFKVjZJF+JCquvJSTxI5cTvvSu1aAzi BRHUfs/Hy80hrTtR08afag3UNfRj/wB2L/KPfK0t6E7SWLuV4Brm7K0NQV+tScWBH8y0b6cuz1xC jfpj/uR93JATDKUqF/Fdy2kkdnOLa5YARzsgkCmvXgStdvfFUs9W8s1sLfUL5ZL1y/rXaJHEvAOJ DWN2NFKr6dVqamvuJwre+78fr+CphJfaXIjRyXEDo4KujOhBB2IIJyINIItJtW1SztuTxlD6ktvb Lcm45NwubqNZwgD84xxlqGU/s9gqVysAEtr6SNV/NiSPfy+3zLXVS5fH8fjbyCcRXukwxrFFPBHG goqI6KoHgADmKZEmy2rZ9Y0+NQFuImkclYxz+HkFLfEyhuI+Hqfl1IGGMbVA2es6bczxS3ckEV2Y WVEHqFVDsGkUTSrEG5BEPHgDseva6ceEERNxvy+GwJ8+vVrEwT+wr0vrdNSmK3kLtKkAdy8YCIvq 14itTv4k0LeG2VWD8Px+PcyEeqYWtxbOqxR3S3MiL8TckLGm3IhKD7hkSbPcyRGBXYq7FXYq7FXY ql/1RjbSPCqyzBmKRTk+kzxzNIpIAYI3L9tVqNjQ8QMshPoeXlz7vj7vutBFt2UUxkCtA8NtatIs QuWE0sjE/DMknqSsqcSwAb4t+igbzyEVzsmuWwHlVDfly29/QRjWyPyhk7FUH+joo4khhT/R1+EQ F3VVRnDEAAkFRSipSgHwii7Zb4pJs8/x+L+PNiYgqtnbPBEfVdZbiQ87iZUEYdyAK8RXYKAq1JPE CpPXI5J2dth0/H436JDWm/8AHOtf+MMf/ERkEojFXYq7FUDfP6F5BdEKY445BO7MEEcRKF3Bag2K qWqfsg032NmMcXp7+Xmfx9qCiXimZq+sUUNyUIq7rxpxYsHr8W9RT+sQR3IIPeg9SjnZ7SNQ0iGR OTUBHJJY5OTUG3wI/wAVQK7dSMtxECz5H7iP1MTdhMcobEHq1m11ar6ah54JEngV2dUMkbVXkEZe VOoDbVoe2W4Z8J35EUwnGwrW1za3tsk9vIk9vKPhdGV0YdDupIO+2QnCUTR2IZAghLbj6ymozKpZ 5Fijks6SCPnIhlP1eSteQda78TtU7MoY24+H9e17d4/A+RIYWQa+X6vx/abQyxTRJNEweKRQ8bqa hlYVBB9xlMokGjzbF2BXYq7FXYq7FUNfada331f6wGP1WZLmHizJSSOvEniRUb9Dtiq+z/uN6k83 3NK/bPhtiqGKXU2qXMM3MWAgt3gZGMZM3qymX40Kt0WOo6U+Zy+4iAI+q5X7qFfpR1bvrp0ia6gm Hpw8lflxMBKuOZkYfGnD02TlWi8iWU02GOIJ4SOfz/HXzrYi2JmAL6IyGVZYklUMFkUModWRqEV+ JWAZT7EVyqQo0zXYFdiqH03/AI51r/xhj/4iMVRGKuxVp0V0ZG+ywIO9Nj7jFUBYafa6elpp9uG+ q21sYYkdufwqVAqzEsTTrXFV1ms0RmaShZXYT8YyC5FPTk5UTm3o8Q/EEchQU40y7JRqvv8AmPLf l5bnmwqjaIngtb21eGZUntp0oymjIysPuIyuMjCVjYhkQCENpNxIUls52U3Fm/ptRgzGMisbsDJM 45L/ADtyNK98szRG0hyl+D0A+TGBv3hH5SzQ8NvLFcyuJGeGYlyjcf3bAAUSihiG3J5MadBt0nKQ IG24+38eTGjaAnvbeeW8FpLFPP6EPoBaSgSepII2Kry2V+JJ6Drk44yCOIED5e/7GuWQEHhIJ+fu +1HQusV09qxRfU5TW6KOJK1Hq1+JixEj1LUA+IDrU5GQuPF8D+j7PubUTlaXYq7FXYq7FXYqhrSN vSNHZRzk+Gi7fG3tiq97YuyMZXDRnkpBA6gihAA5Dfofn1Awg0qBe11WGzb6pw+sO/qG3MixxqzN ykCyiB2IY1O8dak7jalwMDL1E131v5bcX6WAjXJHQxTiP97L8ZJJCBQoqSQNxvQdT360HTKZVezN f6b/AO/W+5f6YFd6b/79b7l/piqG02N/0da/vG/uY/5f5R7YqjFBAoST7mn8MVdirsVQ01BdI5cx qsTln+GlAV6kg9MQLVDwyJdXS3UF3I1tCjRVHH0ZWlKMGVqUfhxpUAj4iK1DDLpRMY8JG538xV/K /wBHuRam8ciRCXTrr0/rMnIQSRhgz0ZnCIWhKOaVYE9QduRJwjc1Icuv4B27v1U1V1ief48q8/ut FW1teJIxmn58gCXSiguRxYCMq3EAIpHxnqchIgjb8fH9nc2RBHNEem/+/W+5f6ZWyQl5atcrLEtw EDRSQPKAhkR5QvGm3hvTvtlkDw0fO2ucb28l0cb/AKRn/eN/cxfy/wA0ntlbYsjjgl1gymRmnsoW i4E0+G5KOWK8FqP3KhWDEV5DqMusjHXSRv5X+vce49UdUflKXYq7FXYq7FXYqo2hrCTSnxybHt8b eGKq2KuxV2KuxV2KofTf+Oda/wDGGP8A4iMVRGKuxV2KoS8uo7adJJEkZAjj91G8rbsv7MYdvwyU YmRofq+9jKQiLP6/uXoLiWUvKgjhjY+klSXamwduJ40O9FIPY7HYE0BtzQLJ35KazC2u1tFh+Gd2 kj9MIoCkF5HcFuR/efaYL1dfc5Lh4o8V8vwPs+4qDRr8ef2/ejMqZpfrN3dW0UDQiMQvKUu7iVgq wxGNyJTVo+kgQUBrv9OX4IRkTfOth3mxt8rYTNC0RBYQRJbqeUrWwpHJISzVI4l2PdyK1brufE5X LIST5/j5eSeEbeSHSCSG+kFqQESBKQPXgatKQA27JRulKgDbj0o8QPP8fj8FHCRy/H4/ARccsrSt G8DIFVT6tVKMT1C0PP4fdRgIFXaQTfJVyLJ2KuxV2KuxVK73VNVg1KC2g0mW5tJWVZb1ZYlWMEir FCeZAB8O3yqqqaNe2t1HP9WuoLmOOZ1UW5U+mK/Zcqzb1qeg22ptUk10VENJcozyFeUKqzCNUq/w 9q89y3Vfh+eHavNVRfrC+qZCsoqTEqLxYLQUU8mIZq132Ht3xNdFXgklgVIoaAmm+1aimRVrm3Kn A0rTltSlK8uvTt/ZiraklQSpUkVKmlR7GlRiqjYpJHaQQyKVaOJAxqCOQFCNj2piqspYj4gAanYG u1dvDtiVbxVA6zfX9lYtPYafJqdyCAtrHJHETXqS0rKKD2qfbFXWE9xcx2d1c2ps7qa3LTWrMrtG xKEoWXY8ScVRjuy9ELbE7U6j9ncjc4qhr23a8haNOKSwyI8TzIZI+aUdW4Bk58a7b7MK9RlmOfCb /YxkLRPNuVOBpWnLalKV5denb+zK2S2dPUiMXxASAqXQgMlQfiB8R2p3wxNG1WWaypbxxSA1RAOR JJ7gKSzyMWAA5EnfrhkbNoiKFOCSLeSy8SUaOJBQjqGfl1I6BgcilXxV2KuxV2KuxV2KrZYo5Y3i lQSRyAq6MAVZSKEEHqDiqE0zRNH0pZV0yygslnb1JlgjWMO3TkwUCpxVG4q7FUr8xyaLb2Md/rEp gs9PniuRNydVSRW4oW4dVq+9dvHFUvX8yfIjQ+sut2pi+Ic+e1VALdu3IffiqMtNO8vanqFt5mtH +szemY7e6imkMLJ8S/YVvTalW3piqcYqluj+XtL0h7hrFZFN0Q0oeWSQVWpHHmzcftHpiqZYq7FU qbyvpDa5FrhSX9Iw8uD+vN6fxI0ZrFy9M/Cxp8O2KprirsVadFdGRvssCDvTY+4xViVh58/LrS9N t7ODWYI7W1X6vEJHdmHo/CQS9WJFO+Kp3JBonmKytrhZBd2sUpmtpoJGUepHziJDIRXjVh8/cYqm EEMcMMcMYpHEoRASSaKKDc74ql135a0m71y11uZJDqFmvCB1lkVAKMN4w3A/3h3I8PAYqmmKuxV2 KuxV2KpVf+V9Gv8AWbLWLqJ3v9P/AN5ZBJIqr9rqgYIftnqMVTG3kMkfI/zOBUU2DEDb5Yq5jL6y AU9Eq3M/tc6rxA+jlXJCq81Q2qz3NtHFcxAvFFIDcxqHZmjaqnikcU7uVryCqBUj7QFa2YYiRIPX l7/iQPifkxkSEZ8LqDsyncdwcpZLBbW4bmIkDEULBRWnhXFV6qqiigADoBsMVUrGR5bK3kc1d40Z j0qSoJ6YqrYq7FUHq+j2Or2L2N8rtbuVZhHJJC1VNRR4mRx9+Kt2VvDYx2mnW/IW1tbiONWJY8Yg qJV2qWNPf54qs1gX/wBXjazuDA4cq3GL1uXqI0UdRRuISV0kZqbBTXauXYOGzxC/jXLc/YCPj3sZ g1tzRcMqTwpKleEqh1qCpowqKg0I+nKiKNJBsWo2D3TRy+uVYLK6QspDMUT4auQAvIsCaAbdO2Ty AbV3IgSQqi2tgxcRIHOxbiK9a9fnlbJeqqoooAA6AbDFVJJHN7LGT8Cxxso92Zwf+IjFVbFXYq7F XYq7FXYqgr/W9K0+4t7a8uFhnu+Rt42rV+BVWpQHoZFxVXswRBQ9Q8ldyf2z3PXFVHVLOO5hjDR+ qySDiObR0EgMMjBk3qIpXp7+HXLcMzEnfp7+W4+0BjKNilLUBe3Fg9oIR61xG0bEkrH0IerrUoH6 Iw5MK14HiRksfCJcV7D8fHz5Dz3YyBlGj1/H9iK0+1+qWFtafD/o8SRfu14J8ChfhSrcRtsKmmV5 Z8UjLvNswr5BLsVQ+m/8c61/4wx/8RGKojFXYqoX19aWFpJd3cghtoRWSQ1oBWnavjiqHsNQstRM F7YyrPaTRyenMpNG4uFagPgRiqMuFmeCRIHEUzIwikZeYViPhYqCtQD2qMlEgEXuFSw6lfGdrKOF 1uqFlkljmMRbmTw9VIvRClB8L8yw25IT8Jv8KNcRPp94v5XfPpVdxrdr9XL8fj8UjdOsjaW/B5PV mc855aEBnoFqASxAAUAVJPiSak1ZcnEdth0/H48qGzMCgicrS7FUPH/x0Z/+MMP/ABKXFURirsVd irsVdirsVaKqSCQCR0J7YqgraW+MZKQwspeQq3qtuObf8VnFUr833OvRaG7WKRxXbXFpHA6ycjyk uokAo8YXflQ1zM0MYnL6/p4ZfZEtebi4Tw/V0R2nXOozfWJhbhY5JeUSzPJGeIRVPGN4g6jmrfaA qanoQTRkjVDbkuM3Z35oz1NR/wB8Q/8AI5v+qWVNjvU1H/fEP/I5v+qWKu9TUf8AfEP/ACOb/qli qG059Q/R9rSCGnox/wC7W/lH/FeKo+MyFAZFCv3VSWH3kL+rFV2KupiqEmadLuJLeONgI3JDOUpV l7BWxVTu7jVY4w6R20aKwaaWSZuKRL8Tn7C9hStdq13pQzgAefw9/wCP1eaCaWW91qnqiF4Vk5Jz ilYyLstFYOfRChqmo2Wo6D4ScMoirH4934P2hQUV6mo/74h/5HN/1SytLvU1H/fEP/I5v+qWKu9T Uf8AfEP/ACOb/qliqGR9Q/SE/wC4hr6MX+7W/mk/4rxVGRNdlj60caLTYo5c1+RRMVVcVdirsVdi rsVQ19c3UH1f6vatderMkU3FlX0o2rylPLqF8Bviq+0IMJINQXkII/12xVC373hvraGKLlAY5ZDN QsEnV4kh5AMgZaSO5H+TUbjL8Yjwkk72Plvf3AfFjK+jSLJDrbSSq7fW7eKFZUQ+mGgaVzy+NuPI S7VUDb7RJACTeOh/CSfnXl5d/wAOZUc0xyhk7FXYqh9N/wCOda/8YY/+IjFURirsVacsEYqvJgCQ vSp8N8VQWn3Vxcx2c9zbmzupbcyTWbMrtEzFKqWXY0O1cVVb64SBI3LKGMihebBBTcyGp/liDN9G WY43f4/G9BjM0LUdVt5ysd1ax+pdwMGjjBC8+o4lmqqj4qM3FiELcRyOSwyF1L6T+PwNt6vZEh1H 4/H60bDLHNEk0Tco5FDow6FWFQcqlEg0Wa7ArsVQ8f8Ax0Z/+MMP/EpcVRGKuxV2KuxV2KuxV2Ko a0miENGkXlzkrUiteZ8MVavY7S7tngkdCG6BjVajoGCspZT0Za0YVB2OTxzMTY/H4+zmggEUUqOo NeWN3ZX6CK+gjMoWGV60BPArJB+9FSvwsoBcdAG5omTwCEhKJuJPUfoO3v7vMVI1EmiDzG/4r8H5 gG9tdK8CmV19UVWQ04Asp4sVUkniSKrv0zFmADtyblX14P8Afi/eMirvXg/34v3jFUNps8P6Otf3 i/3MfcfyjFUYrKwqpBB7jfFXYq7FUPJIq3sfJgo9N6VIH7S/Tiq6Y2cycJTG6VVgGINGRgysPdWA IPY4YyI3CpZI03ovYNCr20ipGTEU4BJJGSUAtNG6gRUPEL8H7Jf7OZAMb4r38/dt0I5/Prw82ow2 rp+L6/2JhaOsduolkUSsS8i+pzCs5LMqsQhKqTRfhG2UzIJ25NoVvXg/34v3jIK714P9+L94xVDR zw/pGf8AeL/cxdx/NJiqKWSNjRWDHwBBxVdirsVdirsVdirsVUbX+6Pf45Nz/rtiqtiqjcWVnc8P rMEc/pEtH6iK/EkFSV5A0NCRk45JR5Ei1pUiiiiiSKJFjijULHGoCqqqKAADYADIkkmzzVdgV2Ko fTf+Oda/8YY/+IjFURirsVdiqi3+9cf/ABjfb/ZJiqtirsVdirsVdiqHj/46M/8Axhh/4lLiqIxV 2KuxV2KuxV2KuxVRs6+hvWvOStaV+2etNsVVmZVUsxAUCpJ2AAxVaksbs6o6s0bcZACCVYgNRvA8 WB+nCQQq7ArsVdiqH03/AI51r/xhj/4iMVRGKuxV2KqLV+up1p6b06U+0v04qqsyqpZiAoFSTsAB iAqBTVl9GaeZVgjikZQrvWT01j9Qs0aglXK1cR/a40JoaqLzh3AG9j4Xy5/Zff38zHjCPyhk7FXY qh4/+OjP/wAYYf8AiUuKojFXYq7FXYq7FXYqlOpeXdMur6LVJYppby0IkhWOZ1BMdGVQhdY+q99v vOKrfLeoaxeRXP6T0mTSmimYQrJLHN6qsxbmDHWnXviqPurIXCKGkblGzPFX7Ik34Myigf061UNt Wh+0ARKMzG66/j8fJVws4VlkmQss0q8Wk5MxoAAKBiy7UqNupJ/aaqZkiun4/H9gQBSy9uLu3MJg tnu/WnSOUBkT0Y2FGk3pyC06dd8ilEcG5V5mla8dqUpTj06d/wCzFUva/wBVTWYbAabJLYNHyfVv ViCq4B+FotnqSB0FN8VR0EAhjSNWJSNFRQafsildgNziqX6JqerXrXK6hpUmmCBgsLPLHKJga/Ev pnboPteOKppiqB1nTJdSsWtYr6505mIJuLQostB+zydXoD7b++KpZYza3Z6nYaU1hc3ljFC0MuvT zQkkhOXORAeZZmSmy98VT90ZujldiNqdT33B3GKqcVqiRtEfii5Aop6rSh+0d2bmC3I71yRkbtiI iqXGMxp+7qQm6RDiBQLQINth3/swE2yUtPnurqxtbi5t2sriRFea0ZlcozLvGzDY8Se2BVLUNQGn JA8kdxdCZ1g/cR+oUPFmMjhAKL8NCfGgA3xVXhVZQLpecbTRx1VgAwVSWAIIND8ZBxVBXep6vDrl rYw6TJcafOtZ9UEsapCaMeJjJ5t9kdPEe+KppirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV dirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd irsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdi rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirzrTPNv5m/WI01PQVVJGi RvShkoo9NDNLz9RxRWZqKaE0oP5s6DNodFRMMnfzI7zQ5fb5/BrEpdzdh5t/NB7sreeWVS3aRiGB IKxBVKqaM/JmYMK0puNttxl0OiEfTl3r7f1cvwVEpdyFl8+fmzFCkx8leqCAXhSUhxQkMK/F9oCo oDStN8tHZugJrx6+C8Uu5e/nr8zprOWaz8qNyWQfVRKskbTRGKU1aOQo0LGVYh8VaAmo74B2bohI CWbpvVGjY6j6tuLkvFLuRk3m/wDMf/SJIfLAIgH7qBmYGYsB9mTovBjTdfiC1FOQC0x0Oj2By8+v d8PP7Lrpu8Uu5Ynm/wDMxtEvJ5PLKxapwrZW6F5FDVIo9Sgavw9GWm++E6HReJEDLcOp5fLn+leK Vcl9l5y/MWS4AuPKjR27z0UlyrLDwO7cfU+IsK1p7U74Mmg0gG2bevt+z8bqJHuXaB5u/MS61W3t 9V8sGzs51USToxYRP6gBLEncNGSenwkUq1a4NTodJGBOPLxSHTv2/X8/JIke5nuaNm7FXYq7FXYq l3mC81Oz0w3Om2pvblJ7YPbqAWaBriNbgoC0Y5LAXZd+o79MVYFrHm/87FsJm0jyVBJeFT9W9e7i C82jkIVl9RP7qRFBPICQGo4V2VRWv+ZfzVthFcaHoC6j/oNu81nKFgBumeZLqkryqR6fGEovH4lZ jy2xVFaP5p/MqbWTbar5UW0sXW4+rzpcpJV4UBi5shcRrMVanIbVA7fEqllr5u/Od7fR3uPKESS3 epGLVo1mj/0XT1aD98tZqSO6PMw32K0pXqqi9Z1j85bG81SbT9FsdTsP3v6JgEvCcmN1WNZeTooE waoNTx4kmmwxVKovOn5787kyeR7cwwRKYZBdRhppOhonq1X+em/8tSd8VTOTXfzhXzDIqaFbvpGz xLzjDbxAmFpfV+Gjj+8CsN6cfh3Vdpmr/nBLGZr/AEq2gktoJZpbYKnGeVbX4IEZbiVlrcUKvuON a0b4QqlN15n/AD1ZpXsNChe2LSfV2lgRJeAVjEWie7i+JpOKleYAQ15AimKp7/iT8x/8N+v+hF/T P1n6v6PFuPD9H+t6v2vs/XP3Vf5fvxV//9k= xmp.did:02801174072068118F62E2FE81E84A13 uuid:c65ae53c-bf73-784a-85e1-30fc477ff0af xmp.did:018011740720681192B08A7BA0BCFB0D proof:pdf uuid:b4001861-0610-a142-bfaa-cd93cce75a21 xmp.did:018011740720681192B08A7BA0BCFB0D xmp.did:018011740720681192B08A7BA0BCFB0D proof:pdf saved xmp.iid:018011740720681192B08A7BA0BCFB0D 2012-02-23T21:52:54-05:00 Adobe Illustrator CS4 / saved xmp.iid:02801174072068118F62E2FE81E84A13 2012-02-23T23:36:18-05:00 Adobe Illustrator CS4 / EmbedByReference /Users/tuatara/rlab/rotarama/top8000-angles/rama6pdf/rama6pdf-glycine.png EmbedByReference /Users/tuatara/rlab/rotarama/top8000-angles/rama6pdf/rama6pdf-transpro.png EmbedByReference /Users/tuatara/rlab/rotarama/top8000-angles/rama6pdf/rama6pdf-cispro.png EmbedByReference /Users/tuatara/rlab/rotarama/top8000-angles/rama6pdf/rama6pdf-ileval.png EmbedByReference /Users/tuatara/rlab/rotarama/top8000-angles/rama6pdf/rama6pdf-prepro.png EmbedByReference /Users/tuatara/rlab/rotarama/top8000-angles/rama6pdf/rama6pdf-general.png application/pdf rama6-template 1 True False 612.000000 792.000000 Points Helvetica Helvetica Regular TrueType 6.1d18e1 False Helvetica.dfont Arial-ItalicMT Arial Italic Open Type Version 5.00.2x False Arial Italic.ttf ArialMT Arial Regular Open Type Version 5.01.2x False Arial.ttf Cyan Magenta Yellow Black Default Swatch Group 0 White RGB PROCESS 255 255 255 Black RGB PROCESS 0 0 0 Gray RGB PROCESS 153 153 153 Light Gray RGB PROCESS 204 204 204 Bright Blue RGB PROCESS 0 255 255 Light Blue RGB PROCESS 153 255 255 Pale Blue RGB PROCESS 204 255 255 Violet RGB PROCESS 255 0 255 Light Violet RGB PROCESS 255 102 255 Pale Violet RGB PROCESS 255 204 255 Yellow RGB PROCESS 255 255 0 Light Yellow RGB PROCESS 255 255 102 Pale Yellow RGB PROCESS 255 255 153 Brown RGB PROCESS 153 51 0 Light Brown RGB PROCESS 204 102 53 Pale Brown RGB PROCESS 255 151 102 Blue RGB PROCESS 0 0 255 Faded Blue RGB PROCESS 102 102 255 Faded Pale Blue RGB PROCESS 204 204 255 Red RGB PROCESS 255 0 0 Light Red RGB PROCESS 255 102 102 Mauve RGB PROCESS 255 153 153 Forest Green RGB PROCESS 0 153 0 Green RGB PROCESS 51 204 51 Pale Green RGB PROCESS 153 255 102 Bright Green RGB PROCESS 0 255 0 Light Bright Green RGB PROCESS 102 255 102 Pale Light Green RGB PROCESS 151 255 153 Purple RGB PROCESS 153 0 204 Periwinkle RGB PROCESS 153 102 204 Lavender RGB PROCESS 204 153 204 Orange RGB PROCESS 255 153 0 Pale Orange RGB PROCESS 255 204 102 Light Pale Orange RGB PROCESS 255 255 153 endstream endobj 3 0 obj <> endobj 7 0 obj <>/Font<>/ProcSet[/PDF/Text/ImageC]/Properties<>/XObject<>>>/TrimBox[0.0 0.0 612.0 792.0]/Type/Page>> endobj 8 0 obj <>stream HVMO0W̱Hd9Ң ie!G.,IMA8DʱԺy7fN` ,2{̦;}6- ߌY8Vh(l욛]PlզܮwmټuV)ғLdDHBĴ/ӧz[cuT-_*֯kE" 1Lz4,!{uJ A 5!sZkydwٟϊ?~g~uoUӜü|sP6,{_D :_2rC:X$QFEp\%O[6W&FoQI=LgeqIA܎NT'ծl`UU4'(PIN^D 9 H$ѓ{$"s١?SW'qR ^s ×B & 0`PlD%%όOH? ,(ތ1*u _%y yZ=[1&wD'q*py&ηs4/L}Tb o巩A+R,&y `T[A'NJr铖)ɓ2"JP%ڒ\QΞZ m endstream endobj 9 0 obj <> endobj 14 0 obj <>/Filter/FlateDecode/Height 3148/Intent/RelativeColorimetric/Length 330377/Name/X/SMask 20 0 R/Subtype/Image/Type/XObject/Width 3148>>stream H ٯ;X~(5Y k)Pb="[0lVDbɠ?F\lG@,ٚS*ثb|s#뚐Gw^}|͛>W?[4WWӟ3k+CPi[ѧoTLaj*ؙͅ6Xf/_a}=v&:VJZܜWw RPccw;ku5LLlozKeOT*aj*=`ץ1ݓ)d-::H]]t{˹Ba1|1kz1㛛 ==!I:a~>vJx7i]]g`-,ToI[ߡ_.v-mN;?;%pP_RPz_(O @YkY\6kBGGHm= ZXm6}XZw]?R50;;+rPe:&NM-ojo/fbG\}}!Ij|>,,N RG>;TԱz{j@lrzzV`~vy%W(>ؑOnߎ_(,NxH:7 ub}m6mC~X߮mlLk烫Byk4wp/fbgoyPĎ@==U|>~auvVo^@ӪTBWW}=˱ss콁~1c[BԩSCCCoxd2CK篎LŎk=ONaΝiZA^ʦ˷4_̰NGp9W? !vIO鞞+Wb+---ߣI|3g?Jñ4;U?y! $ '?g2ش>vLGy&vv cNOO hnP6G^eM*mb[\un=vdE4ѣ$dW6>3vv GV;DU,[ZZbo'~+ ñWФXpױZ[H9z؋Iekǎz{j`_8{v4ssHn}N |~6qea3ǰ݅ j74$EIE; d) P Q%jE7d΋1qf,B]9sg59ՓgV^ŗ֜zy|/G3DnJ@}+Mb1H[=Y}P3A]Tٷ/ \$l ~F{^.}@Z/af]>R˟}*zN9y @'bܷ AlR}PA=4 :B@PvI}n4:MLH @"=* I6R'{4U @'bUp)H[.ؾFɠ.ΝZ@38ei0b^I}m4Tt{ӉBPHYY] ۫CJ5z 89|Tl[~ 55T V'&KKY#֦϶m# Ҁ: F9" ~F}O͛ul{{ jW6Ia>R?}zV'aPSC nu:55볮{W+h>,H 4q오4YRlVtT ߣG¶gWFkLs\dәhV'bPSCEq[_m> KRٱC~g@JP%ݵϒhKkN5xQm)dq\OeA}VJ>aA#zz$?KJǏN{JzŽ6FkUOWHBM 9ۧ4KԵJg` %`Dw:gIi4c~wS6@bnvV\&hMLs\t jrK@|O$x⾷6_>)Z)dƍPN֚5YR͸sGt큄#ܵk’06f{uHi_gדMQZ {C $/6V ۧ4&oJ'տYi0UIeݴI~%ьjUo&t*m$A 5R 4ZS/Z霼Wu=! ze:+0:hΝZ)tvtu(urϒhٳ&׵=d5ԃ\ކhMQ8'y ˡ1D?\*6ԢS V*|.4N)mm:<\7Ii4Gs[J6Fkz9yn[r)H\yotj)W.u6 4}}Z 8H<4ے[7Ii4OWg A ΪUa78|ꆐhMѼKEdqB ~ ѼC^_yotj5/`PV*:K0ģN)GHjww$Ѽ|^'gn ^R)!-1G?t'Azlp/m_;uYTٲE}@Qc$5&)ϥv]>H&@ W7Fk9a,G?C *ƌk<_J7FS$zIJc]r9իg| ,׮^R)ﯳh% 'A sxC#A}Vܸa>H6420 iƺLNlVeSH@ԉrꆐhMa+ijed|%H t˥ pm27YZ} j׹VdS'@Q>I;4+w"YWtvR)zyՌ B?SsKN^^ _%=e*E+ef0x$uL#I5}zIJcJ٬.l$ A yGR hMaWfדMy@Oűq3|c.Vl_zdD+efMFSN&) ÇJ]]g>6Fk Ͽ\θEBiaq>8)snYVߘ y-پugV;g8H<4rU7IilVժD!tYxhM3;'OЩRZX\}ySEI/ hx&) [Y-[ h-F:wV_:Qr\O0;] ~ .ke%n競?|PV6 <4}7=Rju떤 m{oHiSx7ߟ8'W n~ fOuqcxy_~YTSs萑]Q{%t|ၤ4&&6]h5%M`~{EJ#BeY9dM~ f5u$k/'"׻vi۷M: uwKJG5<;iOŢ8`{uHiSH7๪z9oj hu6S|$խe[^PW_+%N7C|ၤ4‡RoՁAPր۫EJ#¸dqu#k@O$Lۂ:! ǁC ZMVJ>?4NACCF $ьEJdU-C ("R?pvq=ټ9`dH 4%q|>{&*V GFR9{65PG%utpၤ4/|%?n{uEbhrRX31a{{Hi_ דMP*Ϛ~ %>,oMPi i/;4t䈤 $Ѥ+W6ZA >@XY](Rdds'/IB?>)_xhznN+% i/;4Kh!Ѥ ;v_I##ZA z{W7F: Qoiu I'cem㋊Ino QYP٣N6}? `{Ih>@Rr9]*=@ ׿Pi4o츞`'wH Twim[A$_mwwV"9J[ : NIi4y+aGP}?ժM#Nfo~q=O?]7E$iu_P&133,YPfR o5/448() $Ѽ йTa-- j1)߹! Nfoebs a'RRnlePk֦kP8NA4<Ąx#Ms9ɏC@J#zy8090)toa-STMqK*kaoeP{R¹|9 `А@RFT*:=o5sG??o{H'7q=keS C?N˂V<] {ՈzjJgZ);v;i0)I ݽၤ4Lr9].1@\(okA`{H'7Ғz]1905?#ꖛVzxX+%v,1BnܐHJÔKWsloA n$?)t2x?-;'S C?f&dQJ [2ѡt @PrYBխ$aȈ~vu`K5%?H4͟渞`>)H 4LA07M_-i%/]JI# .`P[;[HJ ٬+@ܴK~/\w8HiLq=js a'R܊dnWBVPڥXd;}i0CRA>YG_I]]W⊠+Ţ~n NFn99}7E$,뙛J QpލlM: fuuI֧0=Jh<=K5X9sFC_۫F:{'*_}f I'PwBI\8e Yp:;uD)D%ѭO#a\_tՁX"АWmR_Y[ϸ#ߟ"H <7S%Y|qtcb:ΝZ)ጎF)D$s``Hi'R6moA VR+e{АHo+zt/$bmۨvnL͗ ne1Rv-e4+i[79Kߜ 7т {4@Dg+qKKҪhxĹa/,]c}:Q%]̜3ߏs95fуMR>SPP-67b8Z[\ɉ&1l51`P߹׮]XL_0q52"<:"qӭ!X%WæN )lNĎ%'f5W?Ծב#?.cx;&;:";wmL؇`,:9iĐȦ>Oke/eUn'#p nFEp(B[|f?hS8 񚜔 W#ݻAj{&5;:F6s BY-:BC<_ZA=<귾: S39)6'&:FJ#!ssŋlBPJ>/ܣ\EJ#'B/Ԟv.a>7w$E[+^hӆCZjh( S35%6;FJ#!W~k"E\EJ#'ȍ7/IumKA8uq6Z~R1;$ˆ|d}ZVJ^gΘdIJ3Q0jy5Rɹtܜ v X)ɵ~CJ#d' /euDw.a>.K[+W, 'OJkh`{Rdܽj4hhߗo>55J}'F6N/eUn'#p +9hZgF'M}VJX۷bOJf4FU.]W"M| BA{n5'ЍO5di[믭 JE٣ ~V48KKV#rY GK%{L#XevVr̘;14Ip\zy3KOK/Զm k$5:j{m) رC2j>~a)RIzU8_MO`A *NI.'MR$8ս ĭJ0@N}.S[+W,uS :J kat+ S6ޓ̙wvXF &&>5(U>@rG_F6 N/. rAX'p twJ&ն1l5Z;uXYٍH̏?)zNitjVW"MՍ\zKa>|SYR mO]Π>zT+%sLw3`S;|X2dNLtXF:nޔ|_//`A *6r)l޲2Ha;յGuټVgUwv} &v4ljÒ!sKHG:{sjV\N )lo;_PPW)l|7rn|QYSSZ)abbmJud}h/EJ#5 ?Bh^K+WȦN߭zA(gl|2[|+HRlCJ#M}7=`A *r)l76r $5y-KOdkkշ>wN+%={Lwq9`qC8a/EJ#e~("-,0`I%>>nĐȦO'{A(v.a>> ~7osPjRš7) T!/ۗ"JED5=`A *r)lOv1'Чq(c[g[ccZ)afyJ&udCJ#}Rt@jV\W"Mݟ_^){A({_p oYA2ǶյG|3F>== JiǏ%2~z) E >: @I݋+R_u&Ḃo:3a߮B3F>y%=PJ@RVyOO EeGDPtZ^U\ҨLBq!Ḃy[Z~! Xw{^rWO|:I j>E( rꄭrrr 4/WP!jrݽ".vvv~o>M8`j f'`oʊv[?PP75y'ZfN= V,?|K&wA!JK}!+VUUPھM8`Nݘ o=K ՙ)Y]g<*A^*#y5liYX)?` 4t56 pmсBE?is[CJCWoom555/Lq3ri# !W-麫W'?PPxliڴwQvalhX~) ]~+,O*v:}nkHifUUU;T577|#g+Bq!b~];/g"7nxliwP>'Pwс@B7%oVs[CJC]68X@O wt7 v$ރ;@`O>/,G,?Di·voѭ!Q6w~+xͯܜg̖A{(u4NJCL yG}5ƴn )ʴ^Z&'*@O =u׵qϘ-Ą4X%lIi[oɿJe5hkS)T>54*7bqs sn^V}Wfwף?jQ /O4X5>.lIih~/^e]W}nHiTowvm n'sz9%|OS4V]-i[RaP*yɤE{&@xJ綉Fe}>~U 'YA^=}nHiTo~_?Q~+~;8-+F;G=U(x1¹sG{ulȦߒi/RĄ53sDJ2m|_?7p\s^Ae nx^‡T3F2^uluKR#Y4£MMb h&Ri?>[J8`MḂ)dexeZ^‡={=ih5k$- ME--uLF@14)o=dNk (^<,jL1i߄: ksΟ귨P55wtvJ^W1ƖF2'sDYY ~'k{J\浇x&M1¬_=|44@{@nĖv i55wttH^۵]Oli$S_1 jOhC?]zLҊ3s>:PSiصK414)9 jVjC?<~oBЍ˳cx8=3X#̹sڧN@?/l+Wp[=4}t+y{z]Oli$S= j:/MiC?G|?}M1>~]{(C[ffWU@MQW4ݫ}zbK#Bn~ӞDMߵ,?pG@VP? ƍaiP1ۅW_1C.ɻ\*HF)}5 3zTGk<={V{/44ƕ+ eKM[֦}tvܑHW1ƖF27 DM+Y ~' >Ӟ6k<={V{N@v Io\4ܔFCk4w%yK_[r?,x~5Gfk\r3sTG֘Jٱ11$ufIi\Oli8E748}tFܱoQ>w=L!7hywyY ~' zry֜gǨSUڴgxihnIc\ [ڽ[+sсNpDZcGy`@ĖF2SDM+Y ~'঎K\ܺ=DYck ٨0{HK/- g]$jm>:P#i8xP(8}zbK#Bnwy~5f?]w&'hsINj&5<=dN@d2l[zPONBA@-PK(ޭ}zbK#BnSDM+Y ~';M<\oΛ7[cʪUX@QazzqMu@-[$/r&}zbK#BnѼQȔ,?pw=L!7=?jAk 8nï. :syC5FիÇcH*447.]:Ζ֮1@tZ";}zbK#BnQ)Y ~'~[<%;SE9 Yc3H*44R[.Λ=4uVRvbB@ը1>.왷okHtYs*5 WZYyo4lԞWm:ma$uaW\gli8M>qB@ըq-njŢ-d ?9 jZ@OqOڎ\/kR͛63<=N@#e⋣li8}$؝GFn[v-d D͏&f,yhǂwL!7DYz((jMqC?-hi8|Xk`\idS?rAކ82pCeI{=MmNYcyTҞ@ a,I/q ށffnnq#%c}7WTeWʏs~ K7Z@ʐOq;t(??o @5ZϳkzZ{YBݽ+L##DK~:P4Gl] C|v ƕF6U|r*@Oq?;ԝ v\ 7G#d q*I ڍմI{xXo>i!~4]Aj?nLiC>P/6N;kjQ{Zcf=Ҟ@f y :Pفq#%v ƕF6Un@P*@ʐOqOeYޮ7c0;k׷j 3^aJ5wsMeH 8zrS]M';Bݹj:w#GiHޑ#”yvmM{ $[jC`fF/[o04/C>U:^- Rvu]5FRvRI{@]*L[5;=Pp[@QyvyYJ#jn{_?Au.'A>U:ԫ뛿>;EoWˏ" Zc$56=l N@RbK0%jwT&[I:`pPvߍǕF6k9?O0q e'*zCY~R-h 7Xc5== N>aDn$[=07P4 K7ȦaAM82p\C/?n'B!Ԛ+vk<޺=#N=ADnWi ԁ8 ǎI୯R+lޙĭW C>U?ԽAzvOmlĄ5FXkw edD[[mjT[l528 KI+l{g9?[҇|~W'c52WT+׭1:sƆ ҋ8 Zní7],y)4LOK>Ȧ(}9>,>p\CeAY[M~о5F^'NGRiP* gj Tp/ڭRi.x}ŕF6Eĭ&? LxH 8.ʡ>z N﬩J 5%GKEE{JaGv@emm"Np}m+l>+@P/擝҆|rMD]n-+W1֞=-IqJbBAu%[=07 E~;8wqMQ6/Ŝjymc3 M'จ΃IWMo$9Ztah=Soع9a q08:PAWd{z\pȦ(F9r@Oquq~Rf'6W\oayy"iPLfK%g鑬tWv߀q :;%ԔvߍǕF6E&?ȉjJ1 M':_~,Fei|./k -h}z0r~>v߀q dr~^J#"n~暈w'8 P>JdXcO i -S=.-iwjeCv 8YQ9~tގtutcDg<pP_ WoWZcb(מ@@]b a ܵ6/,h }}}Wiw_ j_[h(Ё'8~ ZoTBh&7Vǵ~_'ik 3H'4QaqBo :4u-n 4)A]v @!Z?w{sQjsnt##GNip `>o>d~&<7qQɳ{vmF6E9/ԡ6|P{,c?ZiV>oq-Lklwd{z#NP[g7* Ȧhڭ9/Z[c@p\,ziu}LJAި}SO\۾oR8 N듧ZM{}$;~q%nUpM?|A}28a'ุVd{mьqjW1@ )o-O=Kv8 H4u'OJ,J#j|@!bx?"ؿK- ժ1š@)KK({v ##>uJo :4u-n 4Ir^ oj|Po+bFuyaky;;=T!Nki_)$ \,j DG%nUpMǃ՜jhf1qÐOq,ٛkϥXFKHXcZ׵gip?|^ox% ~q ɳ;>w[pMo4햱 E=*|PuAW_z'ɹua~ R8 ^ցg|_W@%zgﯾrN7j.RVVl>oWGcpqu0j+$[,j DGnbB^w[pMlb {e>qÐOqI|Xb%b44diԞۈଙaԍYSwX_b*.A` kLKuFgY)K5w.2 ?7qRI}WΞ=n{uww7iu=Փ~F$p\.i+FbzyVuyqCUT+>A2FiǍc)`"ȒqxcB HH164fNGj*3ۑYZ"NZ[xvH{%{٩7P=4uGJ7;\ir TV:/?3@Or.ߓ\ą A؊8 6;xwvHvކ_q_,g!9 +|7/ WR"qJ#lV{V"N͎;y R=Rlv+`!NP/yvïҀ+ ]\a^Ahj\?!$,ۡ׋ԽV#S[$c͛3ql^,]=Rl.҆_qɳ~\ir'OulRsy59+ޫcrEb` 0F^ql^˲ߞ=#^yEv@=*yvWTwXt$ ,U| KwX[++nVn`Z[rY{6!NVe6VwK6vfFoziꆆ$v߱J#j˕FwG*OIB>Ǯ jMZ?#?M`^l޼$~333 %zv@/yv3cF:E{ޟs<_P__vH XNPol!kk1M`+Ӳӣ=ҧ\U)c NP!yvïҀ+td?f|A혘vH XNPˍ֙xEP5`+qc e¿]-[GC_W7J@OrZz9YnoWOO? ֩SqlvygTd12׮Iu64uI^LFXpNQm9/S C>iKY}b6>k#\`^ʲ$H+W$#4uCCwpPXpNQmeB@OrZza具Z֩Sql+q]a;rD{dK;;DewlLXpNQm~yFϟ{D$ ~VKgb[Hu7`4GW_º{W{Ƒ#dDMLH^4J#" E!Z_Y[aۧ= f?_}%~ 5{!NPw;\iS,8/|S<ʦaI^r%~%Juck@qlnog7A:d2!NPw J4)_Z =ߩ^|=/ Z]B #qh#Na~g;A:H[o@8 @ݡCw`@XpNnGW[x',<.̗7 Wʜ._scե=mi٣Wza!p]yvM{$$ҒpE[DK^LFXpNn~Xjő|$@Or̼ U\mc$իP~ct{0꫺!.^.vqÇ%/o[v߱J#{80 ,*m?a55Wj@ W$̌LHpOe.6æ\nHh7rf|A}|}1q a'`9eY_ߕU:JR`O>ў4I{j~]]3!Y,jsG^zqNnJ;[E2$ ,gɡn}nN#/ &'g+ x']鞞ߥK3!z{%;֦د*+`d梍.V"6n_ָ;ŕ"a4ېu*5i%Ur#1Ri.hm|GFF1[h '8G@IiR:uښYȳӧ%oe)4>, hm)bJ۪Fy\: NP YߞKwVoѣMǏ-wRSoIW>Ӻ 9%y{Ri.8uJ>RŔ˯nza$+?֒: NPmlY{c7bb~9vL r'?씷 0ss*7!J%Ƀ\[NpjX{uHi䷋^v:.'pSAFڦoW 0t/!R_ޞҕJקr)<7u &'pvV{uHi/S]Le 8ε~lQV3vU{9c|?\} 7_~)o}A`糿 yv)vui $@gτe-#QL6^ݹW^ fwSYr~s-t]VshoiV ı%ZJ޴cJk[{;Mȳ>Þw+߯e4_~vq NK=]S~s0[T;2A`|?\}8IiyoB=*y{ P8[>rD{oHi~⅑`OTr~s0,m Kx}|n4hܾ}L8L>y ܾ}G847u#>@nm5qM4òFi VַZfP_"k;6}>}n4`[)aַMȭgτptT{u 4G\"in)boϾH6g'lP(k-ѓ w63c7/ 0gٔݤٳ<9ՁQ. ?ğ~M4ˏ̞ %s`'8gdm>U23cJ% lr6f7)鿛utdurmpPZ[Mk$@{%6m"QL^~%/ds&м'8gzmcdm%_nj_А)1lJ.Sy囙 ٩S٩7 u;U}խ!QL^~FhNXJqh^pA}zUs/o;O47*+¾חAȳÇ%oo`@{o 4w| vw8RdFy2Ќ'8̪Y^Qͅ 76ѣ BJȈ@2iqC^oRdWW7 %tfD?ǹiϽ Y^6A`|_>&`) mJ/-+_OO!eÛ^H: ++*fj5, QL_~s/Dr3}Oq'6^^Q'OO4hS Ng ^(}rUɫ+Lk$Cvakoo)bc/dsZ@sJ-nL>XӾ! q@:Oi(8AJ׋탐[CC'ѡ7uSFGU0̣GF1eL-ya$#@{+6=W~\վ!& g>} Oi(2YJ;'|8zrk`@zzNpJ*ݭ}@HiS/Fi ꦍYOqM, _վ!& gtT4EJ@aRCy{Aȭ^{+Q y 37}@HiS6//?4 8)ՍQߞ= Oc#2=mJ%[)R K¾wkg==v@bi)M$> U4)_j^ V^mY G?5KP\9z}AgbBjbȈ--;607uΟW~SEJyk[^`>}p\uY=M#e|_8A`fIi(&qJ8gN½6 ifF[PjA6`_"Gc&඲v[W"ɝIqn$7HX3>s~q~8>3AXB6jX՞D?KWPjM\۳gye[vL{o{HiS/ lVO@¥+FCCq"͗_j t4MĔn6F{8 21!|]/^h@dotȧ_Ľà@O RԷ~9P>#/lj:SSg&u) =}Z~2 ɻz=KT|]׬kn )|76[\ dF^~ Ơ^OSV̅5xFøqSh_ 44G^^Z&&L',NHqa~]{uKHiS/_<_0{[a+  9'p) SweS}V>e8QuӧڗJiJ@NXIO?T0A`,dJ$yW{P$͛82%4)ly~A4aCH $\JW-Y!3kGDZ0ڗJiJ@NXIz=j٫T^lٷO?:  㺒/uhj5m O*/d^|nƳ!$.A=rkM̋P7ca/ ޔ< xceEE469m O*/S|y~ϒHpdUVwK#:Rlj:gIoJ@Ji7MLX< q9 j CpssW*0>2RK7 /7b[O RԕN;su :uq]89rD"Ni<)}vҒÒ427`u@…'U3:WmIPG?K{P󻬖ǹT [tlz8|E7^SnJ?o\WFG܄q{OQ##OZ/?lSՂw;\n @?K{P7[3Z;w~nj_ЅI8Tн4dzո=z}dݻ‡t=iɷ(l_io )|R|cߞsOPD?@P7)q/U- qo@]@J@"O7ahe d‚=i06&jOMi )|R|_=(x`gjq 'pkfޞֵ֖9|8pΞ>@UH 07=me dA,yBku{Roo`'ŗc&yv $\6z A-3//5#k5t#) YգTeo--Z6<,yB{VQBiֿF> /Z̫ $\6oZr^.GioHiȪtwߕvW퓼NHvu# O/⫂狦܉y[.3A}dvM_ϓڶ]X^6kG8ͦ:L]J9#/{-T7y\{u*4XXw ^F>eNO2y[.3A'3\Yվ;gΕ+XfR2w)]ו *)MjXE[[?IJ7;)|Rkb?w/e|wijA`Hf`@{{RJ@4O.">LrlNHrY^]F>ϗ?~ٌazJX:0] SǑz]{{RJ@4nFqaPXWDC9$`97 ;؀1.TIIԴJZPӄh+9:Onc{߮t <|&{;rq3IMgvn٘b䧟oFR4I3|}`zK^/aEɖyv]Ԏ_Rɬ]kGrgjP4$L-}pU֭'Bl8 y3}h64xikGH'^ɌˮP T2@4lhik$e|e_q8۳G;:$ I"h[{r٬ #bO%o@1pjGN6GAew* 645W? _gzڸqoS.kP4$I-Iuv0rvḰڹfcN㺒?ᆱ]F:YOf<_pOE:KZDqvnq$ - MKww ^>AH`%e>@1NGp GK#,yzXx쾿7fIKȢ >3#~jȖĈ'& '_^:XM;֎4s@ u%7m2AN4ɞd<_v <4ZkǯǑ܃IR[!.ɷt_~^@epPB\ сfcN6޻~];zhi=/zigD7}I19ǞRR:X4o e<NJ _PWHW;:7IjK@2D҇ 'ҹ5#l%y!ڹ0Ѿ}½WBK#zŌ nhQ79Ī,EyyR6+>/̪Uq$s Qt({ߖ-f@ޛN_Zd˿~>[ٟ/ V4e .Odz'{uC8N`y niH[G>ԩcB_ؘvt iqT*A?xP;}=him/`!9|4 .مV2^巷 Qu͝;` niH[gMn|<дeUlڤs@Luw^>f4ɶ]))jg泭/HvQ4%|!6]8۶M,#- q}K_j\Wދ )tܻ'|ǎiGS7obH'^LyV/?ՎMf[K^gߝ ݸ?ڰ8_Si3gZ}՛&,!||s@|АvPF+ۇO@Or/mP 6qm oķ4ĚVK 44*wxdaY}@8kpwԀ\.ҲBUOO?3ޞxv]M>˥ן-yE8 _k [С; 2/p=dс0q]ޫvbBބ'OжagE?zסּ|cH X. EGҹ31XquL~+ - ٻwZy͛];:4X۳ݭoBKCW.kiiYG.Oe<_p_洳@3Or))}^#tuiz{o t[zjdq ##D330Ąq]Uhir}}}Gf-|~x|@3Or)) '$|?ƌǑ_##ڟ9)ii)uwp˗/apP;=<עNvV/U~ IagKOsFϗnhQ jrquÇڟWii#Zz׮ȈJj4˟A> E (wvjkH'k_?Lf<_pxږT drw*?oJUK@Ҿo\W>V2G)|wkGdCQ@cMˣN־kcsimi@UzlrU4ѫS_PqWm 'U- cIK9#~ fZ^ǵa ke80&RgV5%bH".QCJ"%ê`75t-R`EM%̮^,};r잱9W>״X) 7Yy9yaڻ6 K}yn4>S4d=)eKW(5P* ?Cګ̞47'_) 7.0juYI{qX364Եơ7fY Uny5ygQf]l|_8)dJ@ؓҕ y{Uݱ%}ګ̞&&eiWAJM6 0̭Ғ6lNiq5|>++lK1kд^) YaUJ%35>R9zTyG{o`Yҧ,/^:oi/k?_}Apv4q}<7SªsHe&GXV5y%EPWHi=\¨8ݞw5`yJ ˂źk|_8ko8ٔL-GGMȻO?i;w_UՁg[P@J%EѶGJMޱFӅ,OiA}{>NIzcvj_Ь36}6gS2”Ç߻:, jHcjJ^ٿ_FJM/DST^Ҳ<.KW/h I~x\Ni)ǦG^J%к#G${Æ'xYFe5XԾaRnO # ]^Ҳ<.uiWOgdVc|_8A`>p) 3QѺ>ɷ޾]{o- jH_^>`Rnu0̱) p<d]1 yMW9`9kSofF{{hfɇ޽[{o- j+M/(ڃVH0oiiٟ8ǃ:Z;¢'szUfj|E'9`9kSov}`@WڠZMߘV &_0ޱ) #\z2sT׾YߗɓN"f670=v+@[ /ozA`U!L0juv+k/ie"eub7dE{f iU`3ST/>y='^h Ģtvʛލ'OjٜI/鍅 hO<7:651>.ozϐpS&^F[wT22g,k}AS6j&'oCJ,OT/3}g>ݶM{o],jHP0A&@JMx義za$ojd"euXؗg TRrftT %4N_Rt{oJ@XH@RY{Hi)/aF^Y L4^i$h5}ML 0/##g fci_}m$_5v? )a^)Rn12녑`JX{wJJed}yv/kє |zZ 4TRdP.-Ձv? ZtvJ@<)Hi)+/·0WhrYIipAT5skє+W栗W^1q6ne"Jn٫T~ֹ9ՁvDP@;w kNJUYy߅t)u@*+) "W:0>'h+G4栗׾p) 6DJ&K>DMhL5quujUyyRn4TH0_N[{wPJꕢ弰7L1kќjtuO5iHiYVReʗE[%[{o 4q#Ii)C/FqnV{wPJ1cMVڗGG4+ྟv.]>x` Pʗ˙wo?.vi QdM;^YIi)C/tLzM v )D$&Q*(5@"@H(b%NH@Iɵcbv-*j|=~~s\}t)lj ZDQnf\6o/y^@*jxj&&j+39@¢7Qܲn_jx^͚w7RNfWK7wۺ swU }S%&'K ̞+ϵ]- XxgM Z罅^H#Z:u-=?ֽwa;kd]Q́o|\-6- 7 B3Zv485ZXQvGzY{Vݺe|x^Yeԡ;vnSj/c+65o&hĦ&ߍ2AwY5xUpϿ^ޠUׯ7DdaA{ ]hid63m{ 'HE 2Oo̴4dݗj9R;;f]Kk(8V]tyoaHZ:-]ߗ{7jU{h.#kdcQLtm ?]SLKM}fP0* 6Z\CQީ.ˮ{A ,,ho- Җk;}Z{(vn A5Ȝ:%YQҁiiɺ/ Bxb5UV]Ք^6adx^s@,mOˏ跅;^C@,-jT7^4}}I& ;k &[BQɒz5#yA 1twrY{ -hidkއj/c&&$oaoQ/j5Ѵ4dan9YV~>ٳƚq@l/jV3/I4-- 7YoPa9qvpҖwP-:|,8Jc1֜? 4t2[Z56/^m,yA@l/j8|X~mߞhTZn?yw9qgXA;8ciK;(UVsE >W&5'\T*;'&ޖ-\^a'NH^q@RPW\N~}}rQii/L Xmjg,mipEݺ??nhMKܻgr9y^- ,-]ޑ# 8ldDd|HV ffTr9ii/E#.ig,mipEKϥ3>o% ͹s ?L~E36%58HV:Γ]w==I"{|l!q+[jhgV:.ֻy_Iy[ժ}#wy@Q hmۄ &{WJ LTI;;ޖGPq.h枬jǗ̶muTwEK@'KMKɏh>H{'r $+5E 33nϞp_П* LWPXZYӎ-u\3>B7nϓρ^- ,5-Y[^4Y\vt Y)j(M6+9|T*I$&{oj ͕{U{[AQ ?Y_ v|ZaǎFC{ B4t4m{ 8frRRjG;7Iģ&{ƚ K%48`EvG;UҎ/4=m<- ,M-m]z 8Q3rЎ$+ME CCn` x4d;U`\(jgXZf~yAvGU $ua5R3oN<{ifg]2g- 7Y/hfP0]g5fV4K>ܹB@;.iXNy7ojwɡC7 $.}E %gC.g{7y7jU(ÇFJOʋMQ}uV{wX]4GP˔. :+%#jV, X C7>} Hi2)](k{Mٙ jw ݙ3FJO^碸I`uRl#6ϥiQ\h_4RdJA]5ozZ?Sh L5ԪEy'Hi7(̃D{wXjS|ŏfҏ0tAPT1@#  Luռ><01!4{L5ԪMRS_ [c (̯>Va 6?,kgpQ X׾h4dɔ.\;^K+onhHiv`2Vo-)۷) ?xgKE`>z5ŹE;j62A].I/2,Uw%en Vjr<.I]lͧX0gnwW`A] ˲&|>R>Bblut0tA ><])i!'.ק}m4dﯫ]}]wKHoހA kc?l$ŭHi_H8'?R6R #EqnqW)|4h!$|>Ծ0RvJWkގn|\depP{o@Nq+R~2ۇ(̮w2`A^pc><?x@>@eSz|܅F57K>ހA k{FٙV4d?*%(LSIi^G,s{lA.>*Ṙ>rW*i`N9 >D$^CPZ\,otrZ[𓥗\1ł9wkN{wXu,ͧ*}u6NUC߅  hd) YCJˮE^N>˗%b6%>5EP膆ڊ,b`eRL"ף阤/n<Ѿ@im*R̓׼cɇ(xFiDJO^~6Eq|:;RJI;|퉠?ѩgU*nV¹}[ Hi2ORzzڅnjJ[zK!PIPZܹ#lt) ?{ݗ(LqnQ{wX{u7;ᄤ/E _wA m\hd) YOJkŋ۲w+i ('`-o={ڇsʹ(g7gwKiNo=)-j_ W( ѣCJ@qP]h`Ν0<7ğ!'c/va)sOPQ{wX{4e~y_{}߻0tA k״2,*/]w;w7Y FGx IhmMkR~S(u6\HwKi0Nɾ/~yN6t߲pݸ}%4do)kuthnؘ]h(-`Ub J*ː𓽗3(_T{wxcijIS4)+չrS.9  |K{olL{{$֭{z| jXU[Nܽ24dm%ł%ER!3p,+X^_RqAPׄpA Hi2Sz^a^݄Ç%?~Gހ^m>I8y2eHi˯<[j:碚'&g痴` A~yܛo k@eիv7;};tHh 0 IMeR~2.sQ,Ow0` A; MbvN8v ~Dufqb6;34l-Biumk*~/]iCw6[wmj7ak+8^ŒT1nE=usn>nj>R”^Z2MMv7>}:$yXb==:ٹ%ːҰS"[x`:.k') IBPoWeݾ:-k_ 4>n\wih# Lծ]{=~W jxnIܒeHi)_~L|j?KjJ@b[ߏEž:#ۍnjNԾFJ@ٙҟ.owwjosg?tH{o@A /04$%ːҰSREgIMiH :eݾ:{/wϸfgHi2kS:Ac[ǎi 6y]ԉ^ےeHi)_?gL7><Ԕ CצxU^㺛[oTe֦t_ݿ}utH|bB{o@A ϓIĎ[ ) ;%L̜se^{}x*) APjAs% ffL*e\W>;we3=4D)ק}Ӓ7cmP d2FTMHi)_y>KpJ@2??}eZ'MMTʸ|_@) QfsJ8 vf43#ytSR* ) ulvttp577'˿͒n/j'qu85ϋz}&2+soe6̌hoOWJ^M{o@A sTTHݑЕf~zzj=?u8:4'(nY۷M:m\W83 4D)=4$ow Б#PeyPG ) ]OަEe"x`wu8:4UǛ36p!оCMdL.}:R[yCcS{,jАTRlCC6UPg_斃5~QGPӢ y#6ո|xC t4D)!uMM\>n^yE##{jxֱcR{w7!.͎~K+ke~QGPB(x}ܩSu75_HeK^{J.'|A ϚLA7!a;& E ) qGPݲצqc}PdR)zU \4D),ow15%|iU5<ѣ RvJ?]Xv<_0w4A_ɂr==u38}.RW]LhGH^8a;6NKu^l̃"PfCJ@K1IMj!&1+VpetE>oR)y;~\<={jPGZy Rv˿~9lgCJ@*n|$k9łr7oוÇ!" H}6*[{jؐ>\5HiɆ/dm;/?lHi5Z_ 6?WM>BY™) QFJWjWtjyFP$bxkҰ%_yhj4AQVs᫲rq]tvj(#k>HX߯}@e2FPyGR-) ;Y_cso%X͒"kB^+㞞+=Y>B.Lkq]a! Hr45 7r'M+7`964<,ioU5Hiɒ/~!p<_0!M4A1Iϯ,j_)SSu%ק:R'ծ:o}@js[@Ç%kҰ=_~zrR~\Y X0?/ִw)Rvǥ*ߘ՗˝8aϕ+ۉo$Wfgp̑#ϸgހjȱcٙ4?A f`;OyG;/Yx Ckp !eFo`@{{tuI>coހjȗ_J:F @JO^JŲkW) yDP;>%S9u#m}=Hip)Dwθ_ W@PFNX3._lR~対\X6S%ȫ<"e]wEq\lI5'OjlR\FJ7]Z> ##c 6KP3>8Hiɷ?0S X4be]{}- wjt_) ջ/wOedjo) .#y?ĄjhKR32[|{KkAo) CPf^E_.&uSc4|aA k4nnq1U[Y>@۱cb\,jo&N4߶I4?~D`LwSvMRm +SvjoFJHM}ڍiojuՆ?= _fR~\ X0cExÔ|!tFYV^}?xjo2EJHMݿ/u۫{@{{54,,ne) ?ͅBŭή(.Vֵw?SrvУZ[m\~*6 19}Z S4ފ~a\goe4)Q,w_h/~4A)ao>MO k|::l}R\FJoؘMOkodnNfg\BP@s'OJH6NJO~Jł(&uϔ!|UVs+9}R\FJoEbP{&~nOT={4˯Ճ(RM{}3 Gj75 т?^YӾ jYcviI #4ޢay~-,?cjhax0_''o_rł9|;xfJߘmog`@ #4ޢ8a(uGjo5\p A ֑I/P X4Z]{}6 /jgM;bM1wO 4޺qa C[jo6N}pA ڻWR<2iR~O(̅Tw SrvV-:/ikԵoH!kpzzlhFJH>,uګ1y}[{{=5lW= ?MJO>A fŢ|sJ@..^sϴ/Hka5F8iFJHܼ),u6I)==¯G_ :6'i|~յBŭN[+`' }Lʚi=kNG!etKU!ugho#wtT{{I5ljpPX?>0O/pD`z;/x>qSY=}JU؎kp!etnjJ{JN"`SN Gggڟ&'_~Q,bRHҭJTj7l>'O\EPVW%df&O/ߥbł9}sU{w|48΅ɒ7#kpI} EJ[Q\WqդwD ux( @)ep jd*&-J@ ]{xyǾv%&@wΌ{~?:o9gup)-+u;}V 7pA 8xPCI]R퉗e/Jɚ Թ.GAEVͧ3TgjJ@K]sFGo Њ=dT%ўxW׽ [Pp48΋oƚ)R\FJ <~l}_/ʊ-FW"ТrYRE^{-U!ўx j=B#qul? _{61™!e5Tժ9sFS8=6Z49)l#? ()ˏݜ_P6o?^@8:GĵTE{lܺeΡC"4 Ce#|..joBr4/) #ŌTd/WwFlܜ@r4մw}GP@뺻%dxXER퉗tiY|>"qu&'kڻgcn5F2ɑ2R:g7dapP ko8}򉤐tuɿHJ=oxA(oPX48Η:<V5F8@B4N#lwv~^tܑ?4=5njJXɪUIi'^3^{`]X@a8:_O:K:h) .#2<,v> i[*=|X ?jH\NHi'^F,xA(_@18:fj<.Jukp>@{{e4Jپ>yglL]`}?ձ7ojA I&)7 ̫'++Ѻ 9c|A;pI޽LOk/ow޾}C .\Hufy}aE9^9R퉗̲ 9uFC?~gN[kzTonE7tgBP@"Š24$)ߨd B|| 9wHCkLԾh) .#UYOUFFoxi[*mԊY^Hi'^O/.zA(3 ڻ( RGPכ5YYU{lXcRĄ BJH>h.*33EJ={A(S3  ) #sm#ݳG19tHHip)&&Rx﷑3m=[*99DP@R®EJ=n/K>ڻ(RGP?k3'ڻgw1VӾx1R\FJoo(ioiN '+]]?DJ=kd BܯjPHipAwHEPOyY{,8`ѣ/FJHMR;Rxzzʇď"}{-@N 06&l,JhO:G^ kwP(48λ?, jK5ųT]1ٺ67/@JHWvl|^vH'48wN jyS[Ǔ}F{? BlD(RGPLCPy",Xkk|>xR\FJor_o?*;3c\Fvӆ UyX \񚐈JŊIpZ,UH wqXmf}R(wg;sѳ /㺒X!OLH eikTwީE4҉2P>5ӻHR,GPVQݻ?4،㒦.xMU]=TS7M{-4҉2?PLؒ$) #[]T#yӻ7d804}4،䤸=ϓ&<3uw|zI; FPΑ#&aX[Hi7e&V2~Պ$) #=woq|/ ft|qtdv6ms9ql[}Xi@PܺU[Hi7eW+?+?^@B`9:.jMxgdEJH&C9p R{:'.Ÿj.'ۀ=qO Ujй_dx )togl)^4; ru]Lx(۷Mx) 6#X.}{nFGcYrf1UT,DPΝ2sP NMº$) #`+ο{d<Msx^ 6r0wJ#w@Pګj޽uF:q73(O狦w4XN ]u.ozXJ.ו"` RlFJ7ӹsa}e39x0R|r X~EPk*IT+Hi7sÌ#hy4XNEE<7x\wq30`Hi)La({FxHdaA~[\Tgpџ A +[l N-V 2fML`9:M(;M/bQ\WG9٬3O`3Rލ^N9p@{ON;w^My=RBAYlj})toiD!Y\^^@k#ru2\[XSߜ L/Çq3=m4،nO>׍T6+\Q]]nFP@ݚnQIi7Kw 2~ْ6R,GP'CTJq q]qO`3RڈA}ǫkۥK::}ۦ)\5Dq޸ܻWIi7?PLpZ) #!]nct񢸮8rRFJrY5ղ:9ikFP@ssʒG5=F:qkqzJkha4XNyE]:vLG9+/>R0նy$A QyWIi7F;bF@ #rubtuIeӋ+ eq帮rπt#fq33ygp=/L> j(TNJ#5-e@1犦wHiAEoZ 7L7uqyr3 Hi)m9ԗ=#SmӦ?5Dקi;5=F:qkT~3~P\\7LU`9:1& _+WMqoH1RlFJ[bnNе%ӻ qπ"f=ffw(9S]rt҄~QyٚNJ#W)_2;VEJk)TLq32bH+RlFJ[Ou#UԔ A y[?F:qkV~*U #rub,Vtm:'~hzMO觿V4،Ąn\lCP@t7[?q'NKsuttpkljB3tdzw-~#ʶc͊(MEg@*`3RB~+v[_|3>nDP@to)?ǏodRfo۶:d3nj97;D?I2wo]Ϧ8!ÇMDJHi;[_cdrGҊtjn -LJìSNbZ65lnȎ =`ybz}~#fࢢɛ^ q]q~Fq]actgAq!68!6AH)7E".1`h$U8j:0x^Ĩ"dL||?zգN(ZZwIeaV(jH7Ч>dZmSǏz4(V$dzv|;&ΥJl} - >=7>veN9rDѰ £ wU.E##O9ӧOqkr(Vddb=;~sL]?f={WK0׭"gΟ8<,~(KK5w~Aj46;F1hEGqʭ*tQ9{JzSsR*‚5P4 i730 gHa}U?CQ@z~T6;F1L%A+2rn=;CK(ǝ{`f=:p@KQ;0hi-+ya%9to`5dbdD,?ٱ4PD.z - seŒBb=V% 9}־7Z|FKz]&')yU9qѣ24$=YGG+x217ֲٗof(&^B{y5HխKhiE3vKzV.s21a}- >s#IdzZN 70~9wNM25de wMR*Iᙴ4sj#b]֊z- sfѪno/ZϾ^{Mgh(Z|FKU*SSr ȈhXOK5de|\ƍ ϤQL|(TѲ@Ϡsu, ͎[ٔ={9eJ%I;hi-  +8ə3IKxjcA+2va=;AK(s!Q,-[n࣏9}.] 92/uomF1yw)bEN'ֳ4xΟbɿGփN;Z|FK(jٳ\ Ci4?F1=QmvǝUZs5d4 C曟FKx)X-Zt~Dr Tė?,O?JR<JqdtԉJ򇥿1v%i(* 2IY=w;v8@YPiJqsɽ8vJ1%ʹo`u_\ɴoQ'z]z˨4G8iD|vJh(I[>ET#ԥ]'l}I_~Dh˨4GPN$>SiT_gZF^;>ET#ԥ1sөF8v";uJ4XF8B ڷω^ϩ4/}щc.o`uiu%njno;ML,˨4GPɽNQM|ugi=JRm;\0Jq4^>oinW؉xn~^ |T,`B>D|ϩ4/vM5$j* ҈x>ǧZڷ67D<˨4GP~D|6;ϩ4/N~Ӌc-C8B]ަ~khoݞ=Ns-_JeT#P9'w}Tė?tAD%>l`.kwW[ݿD{=,* Qi0PܺD|Ҩ '9p%dڿ>* Н[=go=־=<7o:˨4G`}}ɽ^OQAON|Qi0PZ{^\>?HN$v־`5FDro׮GTP%vmj@uo_>ׇ)IH,>a`5;8܋ F>)TcV%i/Jq:\wk^MLՃNgi0QiJqFcfƉQiT ]%~yY|ʨ4GUi{?ԏPow"w˨4G`4>t">{ᅏ4>ӎci@u]{o V;{-&* Qi0PDrBQ5OF7$ٶ4Qi0P15~o#vɽ &* Qi0P8Dr綾nRiT xT3JR6Jq:Dqm_cǜϖOG4XF8B #sɽZG*}2f;Q̷]`|k[i]D|v˨4[?qy&` sƐ}՘@Z|$ham]*KҮivqtMwna` 3 Ę5 V}|?^w$W.xgŘijZ57oT(o.,k@ - ӥU2>/k?"66$ Ř9xPt- >s58S(1-La*M_ܬյ_@- SdgSSn?)j?Att1R*ig4xŘٻFOX .Ϻt9:ELZV19)yӑ64QRk8O,$_3Z};hiE;ޕe47cWF3Z}7R9kkchidDW -?_ԾS4x5+VcWn - >s58v8O>yFvOTllK.6- 29W Y}^~J&1ޮ}7RR.Ą H_|2<;ʉrtvJW׷wVӾOFQcǏ1ӳ4}őb麸};whiE 7+!+o]]յ .$NKjڧ#=hi- ;kzZzz$ ͶϷJW=*/ QwEK#;'ZFgAV}>GhiEZ]>K9gο.16>AKhiU21!ǎɾ}9" o(jpljfe55-V=&- -mR-e_169{Vt- >T(SQ/;<[XWS>Ծp}J)b,+pQԺBh;weeγϊ1߯}7҃Ҿ'% mE7Q5b~;}8DQ^-ŁU3@K(j-|E!9CYcOn- >=Q訴 ftIlfUW׬#]G&JA[o- U)m4RK~,c_n- >uU2:*HL1}}u!5m3{}8DW A[\s{#_V! ,g*ʨA1&q{On- >K[ |5kT>p}.<Dq҄g- b1$//^~Vv 1kߍg{Kl0BA)5:}:D]R-ljGK(j~Uc'׾AKhi._0Y_.s7(jp550}:D]T)b\)i|n6ua֖N,*u&qCdR* /*"MX*%B,Z /)/1-ePL5^gn;n"ϓs|?&ߏ%~KGK(վiټX k!k~eYS)D4.q%V5CIDBq2Qezu:T&~TG,ٽ[nTZLFKĄmg46,N黁`K?:nH+N,Z GQۏ >,p+,ωDF堥dty\tFll[=*==: >1/̇W+ɹDK(dvu7H?ݭ,sl[%ҧB`2Z &':ː46۷?"Q 144$}7VD""}Rww|c_ߑI @4ȾÛNk"Eڹs²FZ[Jߎ@KhQ8՛[FOX(j~1z{PND;X~\qurΪ"}>o ՜Ŗۥj:R(};֬ٱiSVokk;(@Yc/+V ikB(}>i"컯~rf+҇W,+ NnJWrX^FPNDJjzoW'^^-}>,?o4'qѬ^zY}xUYHuҷ/M,óq|u p՗5R]fPND@yE",Ƿ5}qq- }뾡j"oT}XΝ4zUvTZLFK-zù[Da\F?olnC× _ovS+ E "Z[荥7+<'KeZ'r\K 4^ :x4Jtw+I2)}:*- &5:6oWĶUstIe2%s=ဿ#o@̌R:yRt x(r\l0?Z GQ/g{vlXLYD"wr`2Z/*ՙU%Q yfgUs,):3Kn x-B[?Z GQ/Ǚ?^ǻҏCI{OY紵IߍAKhi_pXgSݻf{Ąjh*V,)۷̤wߕ4{ 9Fz.o?Z GQkx$>p{<{Lyqؿ_Y~ (- &)5dl[i?OM՞=])?L5Hy}c@'(_;ϩ;d- KW-%5n)uCܗ~(r\Lz,};`8s ]St&nKNF)eYS)D4^U<C Z`@̌: U6+}:0&W#=ҷ- \03n=僿dog'N(aQ9hi0-mdDgDI8.]*g(Cw6Q 4͛wc(WɐzLEWE mYGǏK }bW#ǯ/HO4~\S<7h=i,u^Vޮ,s::F堥die: jų 2O{5jiљF==wcۏCIQ' 񇻵:Sk/3ټ, ʲ<'QT$/ hpЇW45 x^Q ]gbwc)WGBD|CK(nfZS!'7b=I_[~1}eʲ<[tTZLFK{5:KaOϙ~<@PW(씾X. 9FZSҷ - ӏrW~Dua3693CWPn E*6u( 7?l[+jR0S`x̳mh)9p?g#&droϥ4]ȬHߍ\,Kg.\^AJHiO=Rf}zu 54$}*|"ۖF5)E{!hLݙCJj9'+TVNgngQneY'PꈎZNi0)~ukgvI?W(m|er]3CPuJQ[@'rK*ncu=@`Hi0\mtaߵ\{S3WsمR{,S_/7"6S^GuӫLsJ:*uؘ @!@PGN#dJlH/ 04.3xqFSc#xʲ<{#Rj* rHuvM%:ũbZZ1kyׁ;wJT9Yr9Ձ0OL|&f;3T@0Hi0\u&_\\+Hey)5QzLMdR5ULg>f.^uݻՅAÚeՁ0OL;6%U}Pg1ޣSJxTYLLHHH#jllM?M"NċcmnV@!@P6i4ÇWD?1|9qkNzw p˥w~@&n; / *<ɤr])՚PH鵕kOwNe>K<*Ԥ@!@VCNjmp/cuvH/ 4ʂz*kah4I﹜̮HBt萲,ϳ}ވ*Ki2z{uI$T_Znֿ:TOJT d8SZZD?1hRQzw prcܮl՗kA۶24sjl>VeYUzoDMS)KtRŜ8!}+=P-j52Ӆ{O@h'{|%f;Kһ) bPgoͥqlKYQŔAJ7T2S8:ǥA 5гgҫRg1:jNzw p Lj6fː|f[~lneYKzoDMRj )ZgϪDB)fK_쬯w(Kquu:]oBC?1߾\v{iE%ǧ j!NsN^a AeYKzoDMTRj)O?UNMZ=ɤz@ )o"q:-%齁p7<[ơKNx݅h9Wzw~ 3<ݒR땬^ ovLfWەey548Rɓ*H30 }I@G%SSgQFP'tZϫ~Tk$Ob1f^zw~ 363/zM2gV+F3I16iGΎP>&8~U jwNڳGzo PƵ~7Mll:_|E roz.ѧÞsمZߤ4I1*HuQ$jjJ}7Io"qwTdR@@&'Tᅲ48rQzw 3$ͺ{o3;g\ǁ31!:Ɛ)3g4Q\&}I2Yo"q.Wߗ^B.ZZ߼1f;s һH0xP/>r.ޣÞoϹ,0z?KWO*\~MH<k _zD:җft˴IDA &ө@{A?}Zzcbv4gw _`8_.zE1Ύ[Kni#Q47KNHv֩F3<,}F\Wڥ86IDA &ש@[J Vhl/)R+ļ?J"p"A?"^~l:>|v1ڶۗimDe9}Z=|>>&LРSIҫ &h8َ|>#8_mpPߛ^n8Q Þ;O n)@5dT2qz 4.۽[?V+}Ɔ/uqCJ}C\ii%cňQR)ՀE"HRLXꒀ33f<0>S,*g͌>GKP;=O,j0ƍ 41?8Ϝ%\yx*(iGP^`Yԅջ_ aM'z/力5:8^J##i4.iGG Qdl7ŴEkʸ煎#;Ģ)@##сH~tC'{vvr"p5]A)]y!)Yt gbu J^Ci0[P|S؋1fz{wUWvz ,_`>aюTfpPoo΍^;J^sbQ犥ӣfzVA&aal6ttV'4-%)EgbB 6l^vt ,_`B!tI֎TflLoh@;:xO^<}=WH0\uBtM Z_^@h-!%yF߯Dټ> G؋>ݭ}%./m۶0)E Fioq@e|_X㙖t:@W$Zt7Y٫l:?{/A;a}=R*4-s-MGA8{ @ؼ(e7X T,% [ڹ>&\O4BI;> ^` uP ov1-yJ4XQɃ4#`2k K46j@[gvҎč tHyI@5ttHvn<' דx^;> ^`8{R:r3W ^-9T6ݍZ:A[i0[[X=hSvz V]`lذڳysj'aI"(I7p=t i + W.,N^WʼnԦ#Sf/ZH^KsvzuLfnjNo]80k5ir2\ OCC81%?z/m L}H0 .uZ̶Bi 6%OѥqP>b: &sKOL{U\.Î@عdQljys891I@;:yp=<-+ E|U}Z/jl{)4gi0[Sދ^NoB!abQ;=v.j0\TΟ7mߞ%{6*׎\K`z浳(H0.b`Fߪ;Iޟ=U\[#|F|H34-}횼mLw&_׎ć"jʁW_s;ڙXVRϞ΍枔'sW$;btM[U&z:j>in*hl#y. `2۶P8^g0̕+›liюćm- Kl"i2[ ( G[{Ɨj'?^<^Ծ!XBǑ@>πNɬ}TQ/jn>y \fEP2jQ@찥aIoh΍e>p=X;;Opﻺzfe=s瞖;:$si0=[Bǩݹ}##a@Lس ҰDKGOlV;:IK?kNvz堟~ԳL)F=y`2{tggE]^jGbžE qĖ%v^XfݙTsO( -lOtWͪ8_zEsi>^ i0%[: ^4>}SAvJڴ1aɢbK'|I<$\O0[zg(LBZYU&z67 /{º:siR)3@YUR6oۻWrMMڹdQ@La!cM;:Ol\/-cϛ<zmsi>^i0 [:x^t/5k Ўā - K Hjsvt,th>v|+E?ŽDŽM‰[GŠ}uK\>Nl]]ښ^W_iGE Ŗ=ZZ$VtJ%V~xY3I)YpFjLasb۵πu~Duq6{wM/*ݭP,J4FMAZqH*Ŷ uڴp+?sӍQ3s9W'oOqJE;wjTVJir`>҈t͛nl>V~apg,WR93qĴ}JuvJޛ`uvJ~eKIqczVWk A 厔Ft<|(|UͿ* s=츐O@?n8%k\%Lf6} *9?iP l#RЋVYx@j(w4#vWr*z5^'b*?ymj q*e7-Am`upJ TgB /%Ձ3`)HtwR ׋?>O99[ߓgԏY;yG|:--Ei3)yA<^R/33!=iՠHiDʶmXdkO2z;^2'xSTY8{Ӊi_?1ƍ`ujJ]R/>@fWҢ:zVl );wJ:{c{㹘fA?֌S2؟95}@I>4p\}E03ҙLIhÆ`zZ eNr {g2 R,o7 f|rN{}K pIq*eZ.)c0`l,<0NCCiFQ LtwwIC婧Gr55{g2 RgWUiBnb'|3>O`]#q}z` ~P[+y]>;~} E03uu%tZi|\r6 ` & )K: b']@O`fv Kl6tN69>kX3KNSSN@KL&py/ji>@9@ jF Yګxs=B?urc$[Օ5(֝:֎mmwsI`u^JK(gk7{A ҈TJ:p@{u?bdR9E?57_:5;vj>J562 NCI`u^J jo_%֦7n,!5UUԤ7wN\O0ǯMj( ٿt'di㜙gPK fC "03Ӂѹs[_]{o 5DJ#.]^E|7ly?>' i)Zzvo>A |?8~\l\wo;zޅ% ?1;lEJ#ykA%]' " ,еI)=>^%.A _%uMOc4)'Iij\DK@`+R)}1L9)O6zG ,P:U2Ow jae?KL]S!Hi3;RQؔYխLJ.B̎[҈khH{uT{,{G j5S__a !Hi3 RzrҸ)54hn{%wk@Y`1Rt{{oj^(@dsyB{}O`^W2Sݟ7?:A޽u~GJ@YҧO ҉ګh.]ء7b5Xt:bŊe{AߴI'CIIIfx~;+rګ[*HU}ՁtPHi_~mmF Y(+R#b~Nj0P16f3Ւ"[@9HiHtSJhmɍ]7nj)xz+@$4qRl禴~ ^wiSӕ-%ߐ49iz{͚5u%ENC 2fN_MW2)fptPHiӴ/VH$k%]M9)O6o^/ 8[L9i$$~u%OwR,)HHjUwڽ[r#;wj [GJ#}풇@0}}g}oIyɌ@LOĖ_4Dz2}|=$LNSWϴ%FsoHfM;wUuF5)x _gi'C'b~ cB\]scOnOKsy l 'o`qHiѣrUUe|_{u{'H}w5)xO-[uM>}gs_IyYՕ) xIi9/?U j,F:{ml1om֬1Ւؒk3gk@ՙqڟa"(Eb.ݸe$֬Hnc׬f!ugdT>Wί79s|r~1RݔnlԌXqNWVnPHi͗Ң*5b>ttz?B5.!tZsmt'X_NekY)c]SѠOӛ/tTIZ:4̺wG'|uz?N5V ɑ#*rϪB%+33lRє>qB9tYk;wj~u@9 R~zJR|c}r1yY1ʥ)eYSU뙠R ˱c"~f̌(s4[[5CW2)ŢuV[/[ DA ᧟}mmuR_&2rs ֽa>56A|^m>-[kIm.gJX_"Hi2S: %L_~hzݽ)R.[DA ᧟}j6X=V7|yuwOx"7:D7,JU0q9uJn꒎ijTJ4VKLLHl}@Ue.ݻ9c2+~JCu@R~zokS.kWkR^LX/ϭ{|ayqHN1,~V zHΞ[%TnFfyf" \LWXX_aڬ["Š^rY2< j\"\Z7xN\+&e=:kb  ʜK吖[k`8R~ZK2fg:3YHdE{<| >+kFe55=o{:J%^W6TewlƁ! ʜK&͜wuqܬ/{X /~vP!`=OdEe&[x@\5_F[c AMܺ%L*7WrWWh}@$ent-Ϝn=R)}ۺon5V~RG;$ [Y0k()ey [gBPGrtwK:\d\:zubҁh# J61azUVOI&\np[A !᧕_~eO4;–-&ԝ-X@}N7,L[\&,]]srsqIio0}4D[){r[Oٱúon5V}MM!dwsl"({|| fƏe5]TYWKbUq)F  J>Lquqw濴Y 8­ߐӪ/C#T/֋O@Q=cֽ`>'/ G?z 22"'Oʾ}"۶)VMzzOd" Ji uu߱V.K:/IZR~ZfGԱc? ֧D&P恬u/OIӐrXZss ٬ʞ=eĹJGefF! J;4c^Cu߱69[VPoHii՗?:\::ϯn@W/0,Ugay(!ߡ|^^^ihdRUcַ) QVJiݻsؘu# j ) ?K%}AyuOCBOԃO:+\>r/r+*FKdvoS?a\y qq$4~`ڌP [l:XMd;6n&gТb}t~tW# J>kzR*_2;w[9wgs9ހ)dbBI<ͭaW56Jg9"ǧ0+Ҭq~~{Rn߾Z[ɽj>7;pnYolo4=ǛԵ}aI&5]$ڰ33k00+5kc^>9iuv5jysscX:`c?`'ӚMcc7=/"E CC%vISxy͸$20 ##˙0(Q+~#e?jdQPHi_hj< 4 +tVQ/>VWe$4֫! (~M|hsGR[bQPHiƗܬz|,ZM7D a1^Mk HhnpIKtvJ*%R,DJ@Y|Y&q}ӭG+7KLXŢpS/>ͽ09(;B,UTaqt@ı׹ LM:ߗQ<ڽ[>@FF㵡X0(5e2iTwG9'&.58j|sLq/ 8 6O_YEe w趋 ~bz#_wO4'Cx*+WdvHi3R_a:e~]VzSWc#==rKl 0*) V% ^j(3z,dKPHiܬ llVX:[oŇE{XNJ9^XWO[ZZ4'@{ʗ_ӧ[[Ki[R];NP ͦ[dKPHiᇚav"*YxWOXdh^KWflzE&yvMF$LFfgM;!H%;:4jWZ՛z·~v%M4TdÇA ͹<Kguޢށb?` w˺Eb_0=A]*ɕ+20 ym?ڹS O> X4ȳ%׬ݦ墾&[DJMϕùsMM,6ult@dƒo[z C(YKKr JKr ddv`'RbKJ'=tR.ϊRl jp) 7qpX0` t^*,&WY^mSO%Ju$LiVY$b`9[RdKJWhNg!}m{Z5zi.`FX:ߗMD B?tAnzajߗ)dR\mmr\$Ţ Bœ[R!~{#\x\yhx<}jzZ5z}}#bp0Q商t6V(&!7ϲbsX!6%lA]ȭ[rtuI<ރIfM8ldKJwvjvݩ)}GȩStl jp) 7O'N3 /rtsqt@4tkj:[WMϱ)! BAFFd.<put8g]e%PE(B@KYEۦ|ۖ6iӚvcf-F5;\̳Ӹ&{߯_'9p9Es"liseK# vIYY,jH'4)=1>(Gl>zA 8L6{Al;=Ϝ8aG#Ffu5 Է4bEa-[OS7;hw\,5[KhFA8\.d\OP7r[ڽ D>`'UYfO]"͇lV#sv8 6Ŗ~PJ8OPa=sXZliS?0 9%q=Au~ZH k\,2ójp{C@kQ߸a$<0ׯߏ NboޔbtT~kw_,5[双HN#!_d\OVw-!ST䵲~Q߽k$<ڻ,.-!UiY,$ k#h_,5[Il~4 ' Uۥv@ҐOة,-<+E B^^6o{d(q̻J^ ql-"}'Bg*y}DŢbK#\NxPܻ0хbdlk$ * ҨPfU{Do6qi`+kPVn?duZԹ1#Ts9{ܽk|? |i[zlL[WJ*E iƖF:}GJΊFAn-oe\OPM3yށD!О|WY=f%;5KKC8 6K 3szmlf߯= /jH34)g\/haڭ B>`|e!xBxV~]ԥq̱c_Bl4-=<,IMM}Ď.Q@NA_s8rg\OP7mj$m|+L*`fuahkOPG/X_mYIxy56CؘyP`3˷˒(~v߱'<1~N@R-t %W@.n-oe\OV8>{688_]nߢ^\WG~'fo1I oo;j'Lc'|Q@ʱNA_8}:QP/=3'[|@o%aRv_)oV'.Bdؼz5ht؅8 6|KIb}?&ցD|Q@ʱNA_И`G[ד+F>qZndfq99sT*_lD_?QY(#&M.vDGD?uJ/? mn˚ f[XMdiƁaoiLQr&~<~,ҵp֦w8nh/j84i_`h׹)d5CA} 'tKk;ܛ/iO'u:mb1If lEټ'&|pPZXPv@EyQPN;::V]]ݪc$Ƒ#ɪyxR} 'tug?n?-bѼ$0 flL{~qlf۷[!cv@yQЕN֨JR!ɭ_K~pq=Aܝn1 ]@uvAxlQ$-իXԞ€8 6yKJzNOjϭ[ߨM*eL.=qlfN$$1~&fNѴyv@4X-|MMctQ3Ydg3C>"uaZ]n? Ţ_%A6^n5gϚqfvn)aw]Co˺z{E x-h|͒wAծHvvQ{ d'7rwAf%16fl7M.=T"4-.L׮i* ePP@0\҈&(9:v{ʬzZߟ-KaB>出~pR2=A$yxZ|<P`3;tC$b&n=}~5=A՝'qhR{9bb1I^JGY/]f7:E x-h|KNVGApW{kzN{ 'r?'А$?M0GYwÇ[|b3*e<ĖF4 >(ԙ̏3E! T~Ӟ_gb1I ~Zh@ٶoݒg CɲΨQmQŖF4 S$PI {2뉫a(=?dJk^I~Zm߮=DqlfۖnjdRhhQ۶iwDm(4IK?{ʬz=`; foW>/ Ox܌i@Y eC*3whDU4I=*A _,Uwz+ bI{ nX~zd_S$xŊ@dfl/'dɅ 1HgQĖF4 ޒ mm~{O;WN'ϛ|v۲EX kQBY/^,+=x8 M=I,j҈&o ٻQ`*s\yU'׋dOݙbI{&*4}= D qlfÖӲ~{x@|pݻq[#GjU{H64LqK:%ڻ-|^{z[8 6cK#d'?GN6: έ<߉Tk*sv!h&^.'ڽ$֫W{q즵CוGz~ɓyցd#NH&s{Q@_#֙;e9OVZz-wMݸݻ%VJ`7-wN5vPy"ɾӧFL+yctXahuvY{]ߢ~X\ݬ7$^{jwx8 6ktZ4q;o٢:xi[$;}}'FG=[Iy *ڣV 0m׹9eaݸYRi$+ql-aO<7u_~1l[9xP[8 6cK#d'_$ٵ(G3wڣ'ZX^Me%knց[}!N͚JؘNMWk_:xi[$;ǎI$|bt_:P)kO(#0Ւv9#ɺ8 6k斾p!RȯFlC&ڕv~w8 6cK#d'JLx~U%iM<-~>hoJ>$k۶0ho8 6kږNyȯWpv`74Ivyɫ "'o-8:ei5_Gڽg$6C5gKAD ryC O?~Ynli$ӒI.gnXO(9RtOR V;«y+M)BוFiX8 6kΖp_QCݵe [uofli$!yLN VMEcw ' W_3m{)gۨ͛ ~8 6k–>y2R¯׉&ZK+W|rRuofli$J&FfVRYo|+dq+TVV7eVI]#GNiO 4ph(J )=*Oj-4،-d%o>sRYtxc^UU'b/ȮGڽ1=$ky5X8 6qKra&#OTWWX5erMMI>~:vfli$S/{6:dhk*U LA=9'vÂvSi500͢kfqm1N\Kwv!NH('_H34 Z̢qUnSfOī:%so.k^Im_ZiY,[u#Us2%A_v!NH('a#(h%g.:^jH߹eOk|fQvvxv1[X]Why,j[l}K߼5ҿS|ɕHCqlƖF2E9SSGJ:iJ~xԑ-8c8"_Zў @M.ُGڽ Im"ƖE7o";&LtZ/LL~6uqK'\uQ"4LRB)ر#\(DUe C.ډ1q؎(m=s~G9{^@1a0'#k޽hV3;b^>9U Z,y-޻z4zLƔҙL0\DPDԨ?[4) ;%ɚ+ɱϪ+[A &cJdSzr2To*Fmt_ݫ{#NɘҰSȓE+’SKw<_a<΀'ݪ׽wŎ50R j0SL&ғA<*o( ٨Qww>{#NɘҰSȓX,F [+;竭 ? *zLxg竺R,Iܹu1dLi0Nt:pPa~C%ݻoQJ?Ǻ`=4) ;b.:fX$̮ 2dLi0٦SuΝ *7ߨ] [Є8 &cJNOիe_n}X,8E%FsWB>.͑u]LF]57bA5) &{ɔՂO>Grt5jTJI[Є8 &cJNOͲ{nRr4E`lr1Ndʭ@x(n{߯>2dLi0ًS?)-udRwVA qLƔTkׄa fWv a{0nx| mgd^[\ \WWٲ j0SL|Jց FqCw{W D1a'U'Pxr<^>Ha7՘;VO%ݍaVdWe{WIXm˖ePɘ`gSwQeĄ,6:*k8 &cJN O~OkV`KG]ǯ>u OƼW޻b{Hj>|ٲ j0SL֘o{YJoWӺ5` 4) ;)<'O )jIO/żֱj]w@H߯,޸bSS¤{&+3dLi0ٱcRzr ݕ.\a qLƔTJask]3Yqëؠ׽QD@5WP6lNyWx\PŭA &cJ 9I&/W;].7t4)hR{򃗈 s./Y^dpMFQ'w\pKW a@um>LƔomfe]n7mn72`24IojbBŁ멬U\QFQ'< ?UjoӠ :+nn]~a4 j0St+߶i\ݾ{Wʅ /{PqLƔF4)?=~>_}7WAwE "ȚRƕ oHriPOnw5) Z0,u 0<,A1Ma.[ϔl꽼d, |+7uo|@?\au7 C޽ 1`0,t 3:*_0qLƔF4qcǔlqnUpWнQ< ?SYݍy~<. d 1dLiass^fft 6:*_0qLƔF4t[Z$oYU-[[Z b7+wF> vb&+9q5z{%qyMOWLƔ41۶U-W:h9ns2u[D"7\[Ia ĉbPɘ3FF d*7<,ܩA1M!bon Һඊn\ו_r j0S64$/־}*<)ɤA1t:=00p1DH'zZVP+1ǵBeݛCH> ;WUS*q:;)+^A &cJ@xVWӧ}ٟ~5Cu 4)tCCîHQ\^>fvH_}h96׽9 K{*qxEa _"LƔ,,GȳuQ|8 &cJ˗//x<wV߽[_,|Nt=꒜6}(8 &cJ#B=BPpS Pw9Wa]׽- %=xUfg3U j0STuKK~29͔3ѡoedLiDS'OT P?X#uŕql7 uфJ(r^E a0nRć֦蔩yAI408:̀w;Vv79}[ϭ:P7}&؎[seOL7xߌv oן8&>~@tEιwo`3Rb 5<,ܴ#uԿN7%Seo `3Rٔ_*|8ьvmOROK>n\ntTsNL.A 6# ӧkvdϏS*It f4)ɯ~}6h/W+k+ uӧO/2Z>7ݻ\Gd Z]lFJ@;\W鳺j]Ij)lJf$&hP{-;ZHQ7>P+}N@lFJ#ޓnhj_fӅ5[rLb? px,tr˦ڳGa:A 6#j55<,Y6NJROdrz{M A 6#MIN~(ylݻMm Fcw< R 1'W7Nnztu%ࠞj) /ڿ_K75@J[oIa}BPHidS“%y٩:͗[ `? p0"kMM7.FlA " _(.ґu mAJROd47(5،F6%Ii씌Y8o%j2Rw>\vr;7^U}^> \~\_fXFweѨ6j2R@%޽UyúyӭVIi %եo%j2Rw-ˮwpzEk}@*1_ OVFiNnlp|Je5x) h\Za߸b_utH死[wJe4IwuI;NWY@ժRT{@PL{Jr ͱvd-Ke5x) 8iU!oVa'LJU]dN75x)`> 74SELUuq"o>ўY,>Y:llB|xaW"s7wuz;Xa(}fc?|g]^̯>Y[<+x}x% dc6|4w쐬ǛUu=9zۤ/-/ .:5x)`>e3:Z~W썦BSU}21g>Оuފ>*tge;+Ӌ) EWԫG98<8ͱ Y ՃaHvͪN&+9)Kp.\:5x)`=*ZԛͯV]lfiM𡼐eY,>Y:q'W#UNuU{uRKWTZHF42/[MdPƖ jRy#\7+Ӓ 5OJҹs:5x)`䛦ֳg~Wğ."ڪ3ftr^H_hJS,|?/[뺿 Rڿ xVw噝.ϟ+d 5) ߖ:baUWd'})_vJ@ HiG&NxyZWˀzKU}f(,><қo?/R>jk{ 3Ţ4k]9334$YmR܉ǃcf{d+ެ N&+zRڗzz$sl/#LaǩXLWˀ+^fWw ·"jg,C<ҎzҩrͱLpzO4ߕqu><`9>y'{ej1UXn8<=_u7^g%㧟;A (EJ˗%+fev4Z#Ҿtdw7e4#mOcX|(b*Kc ўҩš36U.̤Gy$3_w tA \*n<ݒձU}'ڃ3Hi~J0Ç5Ǐ%CXSo!Hiw&ErqP5"fȅ7|55seW_L:O >*t7^>mm;: (EJY6 >a9u䈞ҾJ G1:5x)`䏏 >Ʈ=ae[|(bQ̯>"?SzyuKDz7һ__K}m:u^7 Tࣂ`xy::${[yg"ؘ]]-ل7+qm!}ɲ Hiw&? Cr9^c׀ffCӥU|g"}Tȯ>+6FJ;d߯N7][1K4bzQ0SݍS7vw;4) O$;ԙ3vA=z@NN@ F0yj$w#Gv O? E TS,_ί ,dٖ[ك#oSUbt-$`+뽿 9ݍ!۫O ƋaHv -KHi:xP2.@ F0yjaݧAo׀ƞ."fej{lh>7)+|fƗr+|gcߙnIWf9w}NR x}-Ӥmq7݂Ĭէҁ~{a$xjLyle)nƑ`E=U%Mί|tfy3co {W[ W4) 0w:ruSR:_ }:j!0q5KK,ohȆ`|WDӧ&RzQ3f#ZE~G ۴Ө{"Zj  =zdUTw93CJ%U<<}uXA 34&&P fDNR_\䡷DGu'S?zVIJQfl==,=4: k! G--YZ޻Q|ԧZ)nAP ) ɯdy47S E! rX;+'WB+IK1j$;c|={M)UvR~.w=M95utecviX ) hhzY64P*t^jnfRInAP ) oh`y9B7@v-j\g bi\7 5-NEXCe>6SA=y5{GDxfX6FGms-eMSԧR:/;2_|A7R o2 oS#ڛA r :0.]6{gnIvt_D ãlW_W̹s,34: k! LL,E4t^cj 5ϐPxȀM}w-[ β*KxnU)yt=2ΏGoi #Z=c V _+q?r6]ǩ T=R7x[`-4䐹9eYtT}QlcHtˬR x2 oRT]UѧL.Dq椊ݽrzM1?m_ܛ؁-p ҵYrG4nѨόDz18 o4\17gliuꃥK,z(u gHi(LND|)ۯ1'W,G׶仯 L>*0yI?M,dG$6TIY86a$0L?˺h  ) 9CeYq׏?RCye\ORAP ) ɯdy=yB7̤;clo\ez1ңkcﯫ~eGGܼsitzLW4O~xbOSv?"X-a_Q7nuUGpUHi(Z55,mx.mR:/ֲ mK u gHi(LN~U#F71j[X# ۔E= M}o\՗ 䃗ѪŹ_5O :7ש̉,4: 1alӗ<{lK55,s{.u gHi(LN},j87c%9W.K!K< 7>ouHrE_ (MuwlTs/})a;'sldY_9uV![,;flK{u gHi(LN~e%#oF\wk,\+{IA>|0^擷r܂oqM 3l̰; 4BJ-e52K,ӻH7R _Wx,ànKKYѧ1v(8+\hG.*jwʉ;\ؾIk*TԺ7VꓩO= 1c[Ծ},bM#pN*4&eM_;wZwXI} !O08úN:R  ;c8nT]UP33YE=~>2Uy:?|Rg)M/[{{DXqaziԍgeWGpUHi?X,l:wΒe1AJy1>!xK񰼃uEzՀZ?i\+.E ӹ [O/ęq\ivDaBȍ[i@p+&ᒊ(q=k-^:Of<~t^䍭s'?oGG&c=LGs=[7. ^w`2.On< "ǎ49 R"~ڽ[]7e϶<|(uuPA *#Mjnm"B63n%/oj>7<7 sA#l ͉'J;yKL,lyz.`+ecC1-|Jv婪3GQGJ+k.KD.իu )>"$oE2Rޤ"Bfò[63RH7J}}'i˞4x`p*z̀Τ%sی_jam^z̀:={?D laylQej l쾱pȕT?jHi,ߚ=MHiٳGde TFJÛLƪy:~\v{ȏ;#!"o0F"u"KǮ4eS;Fڊޙi~O'(r(8H35y9JK,Me=z!ݤKdo7U2Rޤ/,GvʔZΟ! 6{D{gR/w(ha2^TqS4pϧkyz\vٳGJ,| 5`]Eҫz@닔vV?rDvVEPHixʛykQW1K{ǢfUӯcz>Sڃn?_e ٣&b;5xyvTFJXkjڵ4Ī]LS뎔v7U2Rޤ75^lhOޮtbݧLU%< SڛmYgFV(pAC`!C1ٍ_J<ޑfjP) @۷\WOiJBJ/'3C&;E/QVEE*AmJ/eEtݘtVwڦle/2P f 8s̝+'6<7<+O}x%lFJ<<]]gQU<a"w`<r\?U`sJ;KUpB>^ dt:֌JYs %;*/fgOx\r"yڭx%lFJ<<##Q>nO's0rYoK/k_.gIiAO{it<}k$+`Q!f4-d̅ Zm Mk#ctTrlFJC],vq(_ڭsg 9Ū7.u#ɾۏc}`?ətW;Y5m(}Y4>Hj5KV6ܜik3dTkt`ttH.}A 6#+UTTlSՑXZ8:qBo~gV&޺ϋsK?$Vurds|V`wm핬==Ei^35eoKKqE"frRv c]hhFj) ]۴jg56JG]]}(̯k#_-IMgnd^[LźDHR"W__s޺i6fK&mfs>#9gv[-Y+J35،<3ssՄÒx\XzuFj) ]XbhT8VV׿[X=ET*꿖Oִ}KqCԁ!`[߲ޓlFJx̵k&5۷KBڴa*ջHصKr5Fj) uX׫<۵olq n>>w6#g߲ Ɋ{wQ!f4DD&V$bM. lEJFm97`3R&`3RO$$|Rڭ,Oi<#]\Z9~7\^>JŹ%9ڍK>,YA 6#fxjqOSRH`ܗilA 6#Q,|ϓvSϛrq +)CTܩi%wBPHi `~\bL$"WǏ/##᭹_u@PHi''AD}[o)gxfbq 3_ρ[WڍKdElFJbff㦮NZZkEJĄ6`3R?tHDz}4w\ @iJ -+%Ν'5،J7ߘFW Ν݌oTHF%NoCPHi''YJjh`J_N9i%&:LZWڍK IVA;!f4PZ=2cc46%^Q:*faA3);vHn}lFJ.YccڭlFJZvΎ}|?:oGzftѹk/\*5NSe4UYXr;9'RYkFG5W>/ah@s(jp-lrol<(JGZGxsoA+S}eF%T_^\1<RGQhiJ&~(28(GHOkbQ]F f-5YgunMe4ɋzwCs@˼hi<]%̕}fea{n*'7:RGQhi`ݼ)'NH>֬]kgҾn|AQhid'Xܕ -t}/Wtsd>~xcFMw̖~Ξf?uOqN.V'69Y'&OBQhi`;ܹ#k1SVZkÚM::Q2Z_Y\k/ZXYqW9ȩ{߽8c:xbNiQ2ZHWѣk61cONJfhi:{{sH&_N~gtunh/-fx+}F .V'6'/wZAZkqp:7$(jp-l hnLoeZKKIY˕#+kW׭'62YRGQhi nIof2_) C/@KkuUW?o@5F6r47R:7ƗF.z+K:;0 +64rHQhiQ$ׯK/i.꒩) C/g=H&_N+SGDuth/-&mln=w.ȕϞk+UhQ2ZPe~^J%l\V=~\fge˓?hijӶ6"e4ɗ4suth/-Xs@1k:;׍]]Wӿ_̌f-N? E .)JѡYvr W^9 CTҞZ]U$DQhidG'WWaQKy0WsucWG;{VnGR2Z/ܜ߯YvliYZ(j6_k ΀(jp-l/.jNkmR,Ka`ԩS1e4ɯѡ=mji4oZ(GbUq*Upb"$5]nMw9"OJE-RI[E .M~!:7hh;ʁbz}:;A8W/uzz4kŋ'e4-)5+S%gW_IaQZS* 9\FK#:|=IYGZ|,A.O⇁PTjRX)P2Z).IW})9tH>LU]n5F6ywysw-+9E:;_ *~:x2++P(J? EO';yLw/΀HK ¶Ԯij**"*"7M׶[itf g .)IqjWw5Wg7&>=j=\FK#^ ]K~_?A vvkl"Xگ۹qCrȎ;wLkFz]i<0IG+$֦E .Mm~(yC-.jZK^ߝzEqiv|8Խ-R\ng|\r9J\FK##._\Gk~,/k-jUXGjG BQhidw?9)yC]DkiXUX0~G]*ب IwI% E .Ĝ=+9^˄9we@‚.ӎ@&6]sw- +?lQ,?G][UQ_is O% E .=2L$AK{1:E .MmÇ7Tovnas/9vF] L% E ..]2(jdZ[M`Lճ3:*lbQ;:\FK# *3IyҰufŶu}S;8uޖ`NޭhKb105FSG+9vfwW\hi ;dfF;:\FK#|%Ϩ`ǖQl;'7Qc F~NWJ% E .dVWjdr(NwIeD(jp-lq{z$Ϩ)`ǖOQl;8yN/ 6+vZZ$J*a(jp-fr$WP#S(U/G󢥽#k>(jp-lqyKX |lizzŶ3p*uh&9$I*y(jp-氺jzz$'lZ[M`Lhv_j]${hG EQhidKSڹ- [AwUpe:n[s)ёV\FK ,-\Nr|fd-7$rvn e4%`ǖnQl; epQa,Xvp gJNP2Z~݄6s助VCKX4L_vn e4/$s=[ s mvpczCNe$HZy(jp- MNJ9z,/k'2K1zx(jp-lq?@vtcK֩{[A [vv84XnapPr9V\FKSiS:d1 O mN 5F633Tmfg%[Q,Olkg[V+lBO[w E .ᣟ6 Cs挩V&i@Qhid_* SOkGK>4l<{/9<n*Xcvv --;pe%<5w>rk Co=Hhi'7&O7!{jdD;7Xa S~bEEo%N^hGǒ#03IV$\FK/& %Ξs0kk_?Z#+)b\FK#<'$O>`ӖٿoQ,o`_nuёb$\FK#ϛ0:{G]~ -nIh\FK#<9ɓ];7Xak|_;pbEEse$G`>b$\FK f|\r9ah.\<Ҿ1--z=CQhid&yRI`Ӗ+Aepȩ{[-:^O<GH(jp- fxXr9ySW}"Ҏ15F6--WO?i4l vf(^KK6)e4bڄΫϬiZ" C@c(jp-lw$ss [ m'9uoKE'V׫XO1E .Ჹ9 ϛWLGY^6>/%utvn e4$юuaRŶsӒvp8dl"آگkhHr)SLEQhi8kiIry|IoFK{TzY/R"FQhid?:*yX}P7[~Fq^aP0]L66l- QH*Bhcm3$ J:TșzēPew0;ޙO筥kVsyrܰebA;8 o*آ௴7k}{kSQ`2Zfr]?6LO!mia/MOkG(j0-tj?p@׎MkߖFX- ;ުvtc%Yol(j0- 3K׍m'"t[VSd4ҩ}7.ڷܒg9`-<SuIB|I;xS煇߃ FQhihbBxl'Rt[SwvnQd4ҩ}7^m[ YМmil:Z7LL׵HBjo/=(j0- Ӝ;'9i^7ڟZ-l*)ݻsE &NmẏjGuK#agBU;8L% eI;xS%W_OO˃Q`2ZFuKrϼn=O7CK/YG٣@(j0-tjͿsG֎iFX- ;+k) 7UޔlVr <E &a?38Qw钰FFE &NݒvnhN4B%qã;OWSVX"9)[0̌ 5cٳD6Ȉ>H;:(P`2Z'V>-P&l9`Nvvaki!3>.99(j0- ܺg2cfd;D67 )@QhiSoե-PZNrܰoFxd-<X>/9E &E =@hiݾ-ZM;=(P`2Z销d$eЄ4B- ;?h"X[Վވ \.x5I߶%g̫S,Q W(+k."BQhiS6O[Є4B)LV- ;>VVC[̢`yr;'9#E &hnηmf=O{M왼N "5F:%`y;AЄ4B7O,ÚVՍq~ɱLG<LFKCY3}}_ -m)akܩ@t(j0-tJJZᆱF(5r\|١>mv^rc~GBLFKC˗_ oWO?hZdCCyS;:P`2Z销߹SڲE;74!-~{l9n9zvph:`m)^igoQɥL>SBLFKCEwu o5sDK͛%ʊvzѡd4)_(H^[4j9n{qQ;84&k'y~W ՘BR`2Z*0kThic}Վ R5F:%`>@# hiubn9n1[Վ=&F͛3/WVb IQhiIfǵh=ZXΜю R5F:%`e߶%.ю$??W0kgm`gvho x|q|!)j0-=xg2ضu"EQhiS26?|f y.t]irܰc/k˂ɝX@>/<&&bIQhier2zZ3xfڵKRbʊvtQd4tvttlP5<<3-/E.tb9n蔗jg?}H07e fn.֜5F<\׷mrn vdoZ566A[WW +yy juqSLr\L} L. eBU;x٬;'E &ޓ-?h ,챁Z5;;ѱA ݭ}N\Y+ⵚvv(xLE--fIQhiĠZm[rotIXeŢvt-u՝qϼÝD &bLL}P,mD'i]Jdfm dfԌ&ܽ0w__/|.>/E P777wܹ?֎;)+u9lZ;NJmޒ\w{:'E hxGttDxd-m6Ў 5XFK#G_~юsHmeuKzɧJI;;l) vv풜vA5XFK#mj}hY@-mP>/lJE;:P`-lri$ 9ZM L:Jj OUUU OVG2Zi;sFrOhik.AQe4ɥ%Çs\ji$e/AX_Վֺ`Uv.joয়$w].뭎JQe4RAemoYU5BxQ;:tP`-lri%ﯝ;s\ji$gE/vpԩ=IDI;x|#R`-QobYq\ i3ߏ*AQe4ɥ?yRC ZI_0L~[:eE'{+($G+D2Z9sFr'h`-moK K;7P`-lrioޔ<♜ԎpT_a9qvpԾ`OMW7਻tI%*E vHɍ}v06\vhidKEWXovt؄K-_+{At'R% L704$9nVJQe4KnZڔBAXk33hidc/|U*`#49qI/%hjm(ؓkOvE77hia~ɡ>Ok`-mʱcNjU;:P`-lrl_<׎q{Ata}U;:Z|M$S쯳 U5XFK>*kޮs6ҦIj[;74Q`-lrl#ߗ>P;:lıF"ֽ ̽hBI$cjgBArut褥2ZMwPYӧ6]Rkk&,Mmݒؑ#ڹ`#4:R0霽L;8ZaiyUl _ΩSs.IKQe4^|_rO% kmtT;:4Q`-lro퓼sFki$R ¤XV}.Xxz % ι={tR`-+ɕ>j` -mG lyDQe4ɽ][S;7lĽF"o L>ʪvvȍ'oO;{swtR`-#ɕ6=x1/i^׎ M5XFK##G$ϱx* Zt].yA(lU;;RuyQor:i)jFs K~];=`-mG>/i^RFQe4ɽ?yRgjJ;:½F"x`x{sDe Jn5XFKzz$WJ<~06V$hid{9ѣ4-#] OKr:i)jFsr+3Z^֎DK1;+)xƴHE &6i)}ɋ[;:½F"U/}4Svrァhi4D]U.HbQ;:Q`-lrr{z$\.V˜li$RP0UHс/+:{1<,IKQe4ea!$'JU6[ovi>,MNnؘQ̌vtx-D`~|)( bxI;24$9ΞIKQe4!}Owvt0Zڂr9}Ivt飨2Z/-IedK#m^&/[$[1twro뤥2ZMQF/ONFK[pffHE &W7?˺s\mi$2ta9{vpe`% ؊!:i)jFS|8Y':$jU;:Q`-lruGG%2ߏE4ߟyAtV#-wD<W7VIx> LQe4Q}Ԕvz0Zڂ|^RnڹE &W7vV44c ¤|X_ՎtzN8gn.,xDBEV)nikbM\qW[MmTĴ%C ̅až4_6yt~ ?i{q^c^ RI'0E &QG ht7N6AKߺs LFK#YwvtAmixSX`VE]tͧpv9*/9S`2Z%Ѩ>q_;=`6ZZ LFK#]]י{B;:&-w|~S;;jo-[,;cr٫29)9:;S`2Z-/Kw/fՉ+njJ;:d4)?2"|iGIk<lsw*,;߬lkgʥKG-0E &_o8qgnN;:`],LyJ;:hi]~Hx LFK#gڙ3`O[++M>}K쨥` XnMoCCj)j0- Cpk-5F8{ 3͝n'- Oڦ:)ਥIGL>ig֡CmdD-0E &S2pA;7 hi]vnuDQhiS7?<9yR;: vKÓǹe{xJ;8j&"؁7Y֎_561 ervnAҊׅiꈢo~[i=oiTo=WXiRE;:jd`܉N$WkfFrevnAҊ ㋊Bo+کSڹ`O[;D,묦QoomjgȈr;xpTRLQhi&LQh,{|?LFK#Ik'Oj=oixrd&l301,@e٫5<,NLQhi(L 4ZZQ,x/GQhiS7%#Gs4%ң_e7%-QI]@Q`2Z?wNd[Z hixv=l|vv<)crm/jfd4\&ڹa '_|c<$z5M1\˔j'U|))7wZ;:d4) ?4$yuuip4<}X`N,Cnm$߬lkgUr kfd48p@rڹUtqGvÛO׍ !6:*YK]W;:Vf_.eeWU6N9V^ҵ79)viG a&>^0 - _,|x~N;;Glo#25- ^Zmvn[ŎܺDFv)[g_>kE hiɄ/9ŭ[;:˭.KXiigG3oj[ [crll3io΍]_ؑvqE̜ykĞ˾--]{^M ͛)4Pd4d—_./_/Eτ{grwjB%uz wUMQ@l&vn$YE{JE AFKC,l&S8+ﶥ)¿?Ԛ7vtz(j2Zf2ohJ%fNKï/B1K0>jgo&m)4ik8xP߯ !60 LsR7 ż Ǭ y"t-j͛GCQ@09_~kwvnf3י?B1K6N)U¢#w%lk*Ǧ hi I6Aw3-';TvX5}'4 e8yWMvӈtn)5lzw㰭]s.[XkKRkڹ hiɜ/SrK&s09- p yx.WKD"mG96E AFKCl`@8T=#ji ~?.=s#x vzX>{󳹦aخx/~;Zf::$wvnX hiɜ/%hT;7ؑvB1K0vvxӷuQv||Nf33N_v]TN@09_~:-y3=ii,^Ύ),V¢fzA;̫Qd4%I_vnM.>uqDc"ɕ֒[~5/ K~u㷊u:yRi7kugg%8o09- n(f &vvs0Q- v27kuH ԝ=-ܧQg4$I}vn3 NHʾγCԤ}79Q֞>VNtZevnXhiɨ7A)mvn3!e;}vt<I?.wdOMQkh,'۶i6TQd[Mi<74<ӳp(y9rs: ~FKLFuuO9)bTKC{IJ|ΎǸ=]hi[B;'mm=a5- :rR];m˂ Ǔ例$zB-ټs=guzaɧh1!3<>eَ`_KigcM.4r5(sSo4arvvvw4$Z3W[㛺:GIkjgFܻ>S.D$>pg4dԛ_[+s-F4V',t95OO2o`Z;'7K5- :rtt:K]/jVAsk^͉)3^$"4)c?a&;%r۷k`0Zb͗,ta'n\;kgjFɞVU!!YNю/jVNǕaScݩ+ 8例lܧuz{O)بji}1vJkgCj>][]w{UQ!ܧQg4$ˉ;s΅ޱlOTO&'O'u&uM'lܧuzl|j`0ZbcS-egE-ΚHbÃGq׾/kOxĆ,HDRhS : ~FKLFSJ;7b]g²LgǙAVd(KfMLiBk禨hixQ^.Oa9JJ?eV{k, z`ܧuzn|ʭZjixe;Β?Ƶ[]7RKtgu$= ֬iڹ)j7Z^HZܹz9I*=}0S8s >GPI aN0Qo~$"[d:֎TF48gَ`?9XI.71= .i==ڹ)j7Z^46J9υ8Ohhm/%1@uz$rhG`*Z^ĆҖf!olr:$ٳ@-Y2NkGhixqdEim|pE?iBvca-nqj%x~[RhvnXhiFMMMfWIIɃ7y[xJ5WYvp2El'yvpWܩv,ظ`C{v(j3Z^]O> '*k/-…qQŵ`F/_> ̮h4󂯹j vݴl'i\{aelߟΞlhr+ʢEs>=Wq~jQ yoz_o}(.-(4)i`EѦ]<˿}_]5nʴ,Lڴ^mv(/\Oi?EU%N8gAl1~0!;iO90#MynwݵOPVYYYvpX_Q]WǿYFbp qۀpD$+8158\Dj˙/s鑧FQChΡk{he?nU൛zCC &c<_y`ߝn׏e\Y;~4%vE5Fl5l)W|7+[clN_egqqK9V$mӣ6ip- AvnVYki‡/w޾nK9dF;{dR)Ɇ5FH-ez+P~l1ͪd؜9<|҃Yۗ.U Jl`@;7m2Z6Y{I *k-^yri0ShGj|$^Ў'%ZvE5FH}}-%iG_iv_̉|!l=bGs͂_0u\FK&k/7%_soUZ!ݾ?|<*ig7jץIٕżt~?2 [;"\FK#QɖWтt+]>$fn˹9VTJRe: .a}k.iz:Ǽeϕo-Δ˿l9Վ[%Z+P2Z!DBtthG_9*W̓1}ZWy|`^(K$U q2Z6Y{[H6o *k-6yrOiIef,?J6I66܋(jp-$Jcvc煜x+fHN{ҿus{,~. TJRe: .a% *k->6κvpsKTmGU{ (jp-:;%J"Q-ٙx+&m?hr?n1,hiʂ_0u\FK&k/w$_sڹXeޕo1LPn 9MvK6܋(jp-z{%J0niG_ ?otjGKYchhiǂ_0u\FK&k/xX5ڹXeRsfA;!ŅJ\tM4dJDMݹ{E .K`iK`^$'rࠤs: .a _;7 4k=yr'ٙvv+OMhғ{H55i^BQhiDQɺHTi/U⢕6>"Ԗ|Aڧ;p@c==ڹhcҰok| k`Fxc/wNig7̗3 f빬v荌HvvK(jp-HJ֕`Μю/D_:;S>"ԖY%)WcҰ5ݡCڹdc/>LOU׹ªv{|I{=nmv%5F$jCdcٳG;\ɶ`|oV;>Ԗ.UkOeocɌ")s: .a-{uL2o\{~L4צ׹?feW2񟋷ZٻE .VڹdFzfB;;"s-){~vx"g57KJlNhid9"۹S;7 4"DOV~Km^>sqd7ۿ_;\FK#*I6`n֎LA0YҎ\KN&oӊ'rVKs: .a駒NL2҈h!<<n^1}anڹP2ZQ9wN+y9wF4QzFKKɚlYDڱC`6ip- |ߗ|55i`F$Jj<<<ȗOPgėLv>in64{ E .|^`Jl3ZiS[9+WgvnXe4l$tŢvnliDb\ev:tclN|#tR,#(jp-56J`]2=_VTݮf= oٲ֡t󦤾۵s: .a͗&sG;7{l4")W%'hl]GFX>rd1;~\;\FK#Bݒ6]]]2EA-jgGĞ]#97۟LYI륗s: .a͗. -<| ~QЎ_W>K"[|{J]s/e4"Gk;FrA{vKg xR~bAPndUu\FK&/_ST?sq2 AcmĀHN!8S3T6FeNZFp]ew!ip{w_s~;sg9.9ZZ7S_#O&~n?X ڽ#J:8 g>,CulFJMn~+9::7SAȭ_F<_V vX&_Ԟ <==D)lnA9dWt"i?JʭXf4+9~[oVS9zd<~b2x=qf}&9꺝2tN?, ڣٔF2k/}i}՞ O{|mChle}o#f41?/g%CtFB-8-zmgfp @D)^ݥ*`I$BKDVgB*=sGW[\܍j=hXyȬ8uy)Xt[Z(I:0: 24Iۛ?=My͵s b?.`o%=*Mi_nаSU9dAoǸeJjsp|E}AP ) pwvJӨp ndm 6T4NSصT##}*CJ$5:w*yTz ?e:|MiAP zZwsp8qx")[YW@P ) 9vҼ˦Aq7xI 94NSsJL70: 24IJy--q T?J S^܃29Gnfww7vC)+Y,5ʐ7(+zs _Cۙ*w .܀anT0몧QᰛpN ) zwtPtwܖS]T02ltNisB^?-#VPAǣ V#Q70@YΟ{ @eHiMÔ}=dSy2:w ǔ>0Fe/)ZLsN ) zG"\-3J ;ZNW) Czf{Ş潟[OPӔ+E T?Px{v涸8H1/hoOcޫ۷uw4ʐҠ'o\o/wL~Y fz>3YF?_Owrϡr+@eHii--}3tV6wN`*Ԏb\>n۞?O%Qp=ʶZGCgPVƯPR|v2eYݻ]A/g މ4w >t=C{%兏,(uw4ʐҠ'o_R^s.p '+a*USij|Z>tNiJa6av=\sJhb7Q20+@eHi޽f^@-1q{J_#ݫFNitwS!i!AO:Ƹ\?wzZ4d S꾖5p,:4lz{4hήGe.Y2" /=qxb}AP ) {۬WK rs0:w .ܠAyeȪzz{)p N ) zQ^sgr ࣹde0L+hXWOK Sw14h,Gr)4$ 6(ʉ)+Y,5ʐެWgߘ\74HY'܍,BRzGv$RWSbkˈ`}t4Jf!ѱ0XWUа*dcwk*CJ)ʪa B}6&b)A )=^m[cqH$BwXT=i~m@kدۧ(, dr-%р(/D]h_LeD*MBbM,lײPD9W<~\E5}׬Y^zEBmc^MmcQhmxKѹO0~hs|F܇sP-,p~ E 34Ƞ#G // :\wC`K[oHG]♒űc:ڱ;7Ti<9CM TX+OXϗ7T>(Wӫ ii瞡C< {Qj?+}q^,cP4ZdV);ϫI$ T z;8'[$hwȭHGVGNXdo?9IY30@iڟ ^ ˟^M ɰQ0s< a>xu. XvjamQ\r*eν @fhiǕPLo/}A'#wA<-=q?KM9 hl;:Ti<6@OQL@Q'~ڌqno/̎<*xK<~[o3ìqtit>בbq/lbr^E 34cdL]wzGb5ԔRůPny[5!qxXGN - ބ7rkk ?r>E3[٥0z+38ȝ^\&,{A<-}h,A̲wvJÝ 4Mx[Z(fM&}J@X];/)|^t.hiI:=6+[)#W"}4۾I2i#jj((wUP2CKTY2rg~lA<-=|~c k?X*BY78Uu@fhi&ܹDML=U'c6Ӿ9;#Z,W4hi\Ưh¿ fPlfi>_=]̤>[DeEM =3LTF~0F>źo9c- n(ЋEp14߁@4J\ZI%$BE85eж C-M~$~XDOsGj: 34x|Ç4wt >E%Ov8t4J,w\K e9}Q1o.%kdi9B܅+ɝ޶r s-eկy$&0ybrGj: 34x|KPCmY$L6- 3rc ޜ~X>:fRGyDvҥ̲02khЁܹZN - ބ7ܮ]ܹѤWTihLMv7Y>Q(jLnBMMk>o@Q}jLG#uw`Pk|7#(k̶3,L@bח]j')ē䜄$$''9{v20Krs?I_a̓kGdhiƆ@YxϹPa9op+7Mֆ N: 24&)kΜU%ꘋ$6 mpͲmOrgBKC{?8/4Y(Wg'w7DS֡¼(ϥ@繣un %x||^/5w wtR?sI2mBXN>sh$r Tx:uߗ [RP.sE 24L fr 9&'ehi(U8R3Owޡϕ+ܹXD^PnN;|;7@"ɜ;($p+F;)`?hUkT0훓b$܇R.uo@Q - ,E[ϹPC#ºq}= ӊyt4{;784k```f!k;7@̪.IŠ4zhϻ|ߤ~UFI>~?lϳiiQ$G ]]qAQ - D moh1NM)-Xګ- `\h .(iW(Ǫ3p:z3GUAnIvr󊳬fGiK8| 'PVBKF,$WuORs}tܹZ7N|͝?m3K ʱt;>O7ܤ2H֙hiz1~t$PU5mttuuqG@dhiOqA*SS(]&g0acXδyܤfW bLraZjnD3;:^񧁰K RKAw$=L:- f%M4\7{O~k81?[%>bK& t}1wDJq4qAX[>F隆"%o`ZeRݴ}Fl `3"CKCm<{y"d¸%e\o{KiwvsD&okr4ԬgNN(q̬zfF9;_UbCrVg ʺU1AQ - bexkRaN>FFRo'4R=b=lu@dhiM[\K wnYwI2aqg G}>^싍OR;;ROGf?],k8rkkCY10>vP"CKCoJ(Q&gK*y/5=XK`p'Mu9 q;aZjnV ѣܹvKK$+w|+MrK{<0i~g;tuQv´s@dhi,}F_ }L*.I&2١\NtW*}JLڹs;: 4PpZZsK sr"ʝzjy(B O`fy`4T M3<ʮe@dhi,n}isQKi$[qP.'[zLW;;: 4PpRUS.;.I&giƅ[q7sF_u Ӣj\F\N35Pq 5(7<.I.u<?JdKgr[4$+D=h6XDڄz;ne;7q?Rs1\O>Kqz,Y- U9ʖeg$wZ*g(Qϝu$P;;nTh7mlAuڈG6XDڄ{;د۟3T_4}6D|F 5Yq( VmY[CXw}xapcZAg|?Non~ \69r-}]d1L!ii%Veק(j3ZEK8/ϐ[Ϧ-fSoL;;R~<%{iNv0qC9`0Qx 45I>F;7ߞp,fɴvB0ƞ슲=w'x܏F%[VM߉0Q+؝LcreS16N6Y+pK/:WW ;gV4-_`^GڹŒF<57ɤr_-· qK{ O]KsN`N@(Ov|jb²`\Kjg/캲4_fPX8v higJŭgӖmtL;; goO^־S78(FV4-_`v\4'сE'bm3dZ;9t%)&fOLgIEK( Z;w(j3ZŮSDMMȚ#c&脣rotF&5)@B]WVk'>: aFK<hh~=x[D6NՎKLEJ͒N;w(j3Z%AGM_v\iw,:vSiΘdajiwNWvz+uŒFy/'/O?ՎeTt8ٕreW'mv_q*e CK( 6Im۴sg0Q>QsS[뻮c&׉؎ю)n4&xi4 P ;O`EN@(O_p{jG޶|ܲ`uŴC6gMs!qOBK( I]sg0QHJM=mՌvvd/ݤLaB:tH9b0Qx R~4*|kjҎ3dڲl_Kjޘi3{b3s1hi%Srѳ@Q@( ##mjn._>@v^$=67B*-2K fǩ„yuɓrX hi'^b;vHv ̳O 6y>i o2i87:C_]d [;zX hi} },Tt8mr_IjVK8`-XH]yuNOi3Z剗АmXQgQ9o~◿rȈv,N@(pz3_~xCcmr c^F;:DZ'xiDlN,"chT^8o`%N@(O?|UUi~16ɔv0JdE~+5/Ԭ}@\ׯ,W[jG4-R*٩ρw0lڲ`^{!ed!s*ϫp'O of4/DB#D̨vP;i NmOj_ ߥKa0QJ\_NY:Ȯm|s+S!Ï/-x!s*:}:ij>N@(O%UUI^ e)a2m<ϮG[wilUEYN@(1}}jD~oI,赤vpH(+:c[n@*32} a0QxK|ݹe/zX|fhHtt-ۑjL@\׏F%kՎѳ: aFKUMdZ0gڇYowO9!{/$- UKKKmWgi3Z剗&'ڹQNt-fޤvbb& ml?7zA*e_Sޮ=kf4JOkpZ0Ѩarajwˤ9m遻V+pT-kU56@1c0QxKjn|;eeTu:v\ZϭWc'cǮ\On$;U0kG4-~4*\Ͻ{Yո9mY?b;28W7 f4/IKsUt,릫f2dMͩXw#IOn%;Uuyq]hEf1 2ъ'W/lf\ïĤMu2N5hhzv,+aOɈ}-gOQ;zXd4֤Ç%+֒ma;|wkV;8BSo~WpقK~Z-Ċz^V@eҰ7I lvtX,;3;y3v5⾋هxEw,3Q6+\ZZ: &&apZǫh9zqap֎4Z52b]9|X0;}Sח[+O&-wylg2 ^2hi؉!{!sHɢvx}䣼J__E%T,'`Xþʯ[͎'Yd׀+xѕJ -2ܷ`tUk)ޒW͡C bBQCKN% ZCvtb$'׸'cWюћn mjf!NhimmٴI~=xo^UƄV^vu:EY+jτ,پ]R۰<ҾS#]VH~ѫ m*Emj~!Nhiydzv&'/OiDŽJ~Tt߂ΌJfE۷˫Ɵ>L(jrhi؉c=;~ӎo~3Y)^/w*UO;zH`2Z6(>^Hha9;iGtc+o[zZttmZ[ $C$Zv/#KK;:k ;v8ܜv|y%O3Mn deMː豧{XNQLjGuLFKgHil=ޅٙi~4='ot_eO_m 6!E X- ;qظQRko 0)jb4/cN3M;7,ߍqn~nf.ӣ/J`qNhif6vvm7!#gdW.O\o|܏ńULSaNQa'n~Hi|6)zHܑMKN_ZYW8YO7PΟ,Q\==*V[+YF`2Z:qBuy1>޳WRFtߍ: ٧!kF@F594/1QܰT$vvT䗖կ7_\0JoK6`뵣NhiX2̑#Z)y6~jGjl))*FFm3:@e*jshi؉_F{䁶vnX#ƝH jjy̞!Wz!I6`Z[NhiةQsvg8du&]6wrOl?v'e/+|Y^5,j.|;G`.#P-ٺbT2ǿ~\Jsph`@;~6u_q3NL򐌇!m2Fi U(Z&KJHX I'w.}ϵs}t~M+9 &Zì0Җ3GجvvgfKgVuoLkgWzj(̢'65k$/΍~a*bقLრ> 8(;'qg_ N#9 }v8d4BqYqb1/ge׏Ϧ<3[,6l]l kرCX5kx@If5F8uvJ^g}!=X߉ 8Ꮼ {Z!LeWSé0iGsLFK#zzYqܼ/.x  ҭ'y \Wvz%[FX+y}vn4dv1bقㅔvv'܍C ٪f5ju*NmmjGsLFK#?%YqQSox\Jn`N;;0_n3 : !n۷XE hi_ڹswYGvn4وe XF;; ?>[wʑ-LYw*\?@z\r5믵9 &r 8mm^6 ?+{nNhgGƶ=&3_ Ysc+6%usX`OUZ{cUG%;SzVne \M׎ 4i+EdE(ؖ/6_5_Pٶs]o.5Vl~Y͒wY6 |*b~gu\;8|bKOݭ#I攝'q'WOPr9Ur2x>i0- n%wګ>f7r&]A6Ef>o.&5F8eutHehFCIF,t&÷twӂ`cSIl٢=0i0- LNzѨZ+А'|xNVmpܼrx`rKy6/ۺ}\(׮+PfxX'6ɋ_;7ZH"b~i-`*[$P_YoɽTݻ9 &ګpA3V WiFGIt Gu7q= 3ѨgxE !GK#$//΍~:lϟ[Zz) &TrvZ9ԅ%Rq9 &Lkilin΍?lvpVlnUd*s_n0V6뵵ID^:qNhi^j6mvFD?ӌ3|{G3y lW^qËBF8euuIbڹѸ e f2jgo5mi7thNn`:|Xr)[;}5pNhiTʋF[qU?ˋ_jQ-lvv.Ck/j3Z旵k-ivn4ɴlyoZlb-b0xѨR*ΣGP `2Zx˭8]grci4ή@=~%ŒF8e9#yiFX߉wCbyZY4U%?~lеmL*޽髄sLFKmY~[-/BSĂZt,.Z:z̑\rvQ;v3whꢨ hi_Ą!k#?D,?hIJtv!`*ߝNLjf%7Rqb1/*yӋFW\qR)=giɸZn,.Zi}}}Z;BKKGTE EK#JHbڹѠv}*b~O idj А@*髇sLFKo_q\gj.uw'[=ή]Y3x.BF8ؼY΍dIJΆAG;8$Gͮ8{*?}ιe)9 ^:z8d4NC8ݚ;GqxK]VӋ5}gL] tꢨ hi_CW;7Ti'b~m0*-=1=%Y dQbay@|@*LvRrimL~\iW3=T/-#۷c?hg^{gb1/SN4‰ͯKb~ t"b~m Ŗˬ8{*&|~9@u@F=~8d4\kosd~FUgqcfJP@Y nJ(J*)]ʃj QYQ2,ܹ3ۙ>͝{՘5jg~J'竖 O_KhG;Jk.ZxJExmۦ+牟]gPo۷v|eªfR`'Zvbcjo΍4?M:>CuZ:YUxIwkzI3t4fjJ;Jk- %GݺuahтPL=Sjg70 |?Fsvzn5X$O's#Ε3t5-o;x4WX{4Z^;wTQ~Ą䮋}NjW/G=&[αvv}a6+}v3B4/yޭiuqܤsvpHZKJ L:-r.hh0߳vwKN7A5hiU*.+Wkm'SV`VKd%zKX5;vhGfVQmhi؉͏ihH΍4yM:ԴC5[4W8#äsڟ y]ћ5ZcFiڹpyE0_X-sVÎIiGfVQmhi؉͏%Ol6,#u8f3!-}6, 1<~\NrEћ@Kq8w=Kx!hhY-=y*[h/״Uvtbf5؆.\<׎t,62+ZC;;$Z}} [D%[%GڹlFKq|fCӎn͋.hǷY-/ْۤv|}wJ&;w364'؋/jGG< 2+2l3ζӥ, o,(<юF5Xp]ၷgv05ڏoUjƵtْxv|}풪 X̸Ұ_W evn&BjS`6(97_kh4` Eћà @L]]ozZ;zѬu=c/״^ƵwZtَ|RՎofIdԔvtV5Xv< ЎBqE2/׺=ɣL,Hm$}aVQmhi ~፷sv03_`/[z繲l:<U38E a'6?IHCW2tNCȸkW}.g6xOfsG;zW`ZW%7^4qXhGPKҷěV]}VM4E .Ϗhuvv1MO _ё"ϔ2t/j[sN˜ㅷz@4tIx kGoC,AK1}̋1axrj mlN}QήeyLNjdhQ%hiVzLА::$={s#Ez&M:9O;8̽OJ{Y&HW^Bќ:i-j- KoFa/ԗ\7i mOM{\Y;T/kdhQ%hi}L[ww~Zڽ[;7Rd]qܤB'Wgt$ҮȬv]9}sX%BlX.kGoӋҍ\z?͛S?62k6 Xcvv}v {fv耕 -j- ]|~ժUZKڹ"sŌ&ucvp>,6\ms ]i -:_kh$PovfJGQ@Z@|BJhӇ=alI ldnKw犲Mʢ̦M+[`ZțVgg'߁ڹ"[O3tz&<J}r. xElɫֵ T[htT;w3 }hi {%OsoW?^Q!* K)DE4Mh.$ V.Kj h0lj$=ku%؋vz~j9׏L;}LX`~MInKx*[%%|]rl@KNl~(o%y=T ;ۦ]2u(X_+^Cc 5]q2$4J$5' ^>@yYT0^y&>^miEkq]ߑ#žS}[`ZvbCyua0*v*j-}Jy2p.׵?P6v8Z`Z%WWDAN|,:YٝҚvveO KfVNX&E ƣa'6?k~0;^*焝>,j-ZbYϭt/]V'ÒЖ-ڹcfpQhi ɕdKGUXHrS>Mg[ɢvveJK1e]`3~johMsm Zo^׉B::w.+u(;zTr z51 Yhi@ftTr{d5Jė`ْXiW O^`6Zvb핼n tOS9'Xi-]S,o/V=yDš8  h玙E IAK2jH~Ȉz:\Q;5!ޮsv|essQͦ5퓼 <{9aF+=E:<{fqzHc}tv\hi@l>m#s?]`ZwFf?:5#q=QXz0ş'v Z+/:\r]꫒OGGcFQ@;\ YU9o{N+k 3˘~l֏}ktT^/viLgLQhi؉LF׎StS9'LCߪ^}f~3'? 1Mzyrkh$m۴sǏvFK-1?l k c(W`(cZ{5v]yU;K6 S`$Zvb6n霳m]XZ*@hʊvQhi$wn)W{%2.?ٯ3,VZzjXFTTԍV]WV5P\`. 3`hӤs_y~|'ߧe 4Leo׎˰&nАpzH;:pn*dNΌvpHw^|;eϜ_8Ң.(j2Znɳ2ojGh2UX!~{*+i4vUf*UԎr$"iʯR) +j0 -` d2m+Վ#>Ʉ,dCb|o恄#hr],ylެ.(j2ZIɳ2jG_tx5A;ikƾve{B{d2$4/ydڱC;7? YөJ;8$h/?1<*kDg `Y|ڴsE ^FKUveק{mpkzcBI;Qkos"\wO0ٳG;:`(LBK#2}}m+Ҏˆ,T~tK?Z'?[\7gϖ-ڹ낢/;tH2ܷO;Z}Z=(t27/Zy__.Wnh̆ CW`Z͗yJjU#lȲNW!AKM&_]{&&\hJh}z^o;$Ϟ-[sE ^FKU78(y64洣/qx>h7-j} ֭LsvnPF5F0qe_&cِe;ʯCgSIWVv)9*h۾]ٿ_;w]Pe4Puae/t2fqjF^ENŒv|}{J&)g.04/vds'ِe;#YLL.&ο5b[::$Ϟ>uAQ@㒗 i_T,#cn/sڇ0-veUB0Y` Z|YmMMiG YKJ;8$hi]b?rn4wn=YxH[3>.(j2Z&2 7o/jNY*DAgjK -W IaDZ`Z{BmhG>lSvpHO<_ܜK~f͓i jaVpa۵/t!|Ԗ~ Wm V܀L-j0-`ɶޮ>ym:dNvpH^+} v ftQw$BQ@-:$y~TJ }ys-\Bv/DUo^b1q .j0-`(YZZs]J,l ZڛצWt;7621}bڕ+O[vzhi$OcYXym7>cY٥Z%ڞ=ˡC\`Zw$VcvnܖKe;C ,3W~79C&_,i嗒Νڹ녢/ZH$Onٙhͦs8}3R{5Yr5zDSS\`ZwIj56jm Yx!eJǾOt4Mg?E<(yݫ^(j2Z<{}EsnִXP>ҕ!W{by6nKgvt,f5-`*ٳsZ'Bt* Z/ަ[/%οMGbjssvzhiF&'ˑ䕸0wk`5୔ |얎ձ{AWRV/j1hi7ߍ#G${ֆ ڹsm!v:!AKKP]{6.H?f`9yR9qB;wPe4P;HDP\q,qf4fG>hn鎫n 4ݸ!׵1hi7ߍ%KVGvnܞfBtxmF;8$hik<|˙e#"@Ν/o n.Œatui bvQ&n/^HMsM,tݙ ZڿҟHLزG&洏$l3 ZzF$rfe=21}>ѣڹ녢/Z[ӌj`]Wha~(hgo&s.Uwm}5 \ TE FK#nLO ,,? YөJ;8$hi $f3+푉9|ή]ڹ녢/:8p@\\ro?sM$P5F`,;4*c0f$")XiU8(& X.7wȄ`eQ睳Hϑ<:oV+ƮCh=yCƆ*TyhڻW-iG E 梥a'n~H%P ^-%7_i-.YX7=ڐ{ޢົ%+KPg47%W<3I,i7Od+fj@M6[O&%2=h5!m"Y= ^-%7_i-0jT){O?꒼v::sG8hI^磏Bng`; nK%cUB;7(,)j0- ;qC,Y7ojFtCn0k嶓kڇCvsG8h?.y1A3<.V [a{Z/_v|M#m۴sžҰ7?ɒ53&;vpܠsrI;8$hFuPhV/1fŪЀz{%aQ hi R=<Wϑ#x0{3'0=-]\X~xVv^?.y5tI'~#rс`OQhi؉d:^;7Lbqξ EWRZ7w^cwh:;%۷sG8K'?~}Ʈe<êfE|_ +%Ҏ4CKN%ڹaM8n Z]y$+ט?,yT*ڹBQ@@d\Wn\=Xqʼx#k?ӎo Z-]1/͒> 4ۊBKNٰBqNقvpH6ȗw 5浏J:[jE qFKQ<51V{Q.Դ*Tْ_MOL6m 4ۊBKNvlXڹa|qNx^;8$hiKx9XִO] ytuiE qFK;tHz\=ccgXֱ)h7-TNvkN;ݻ%eL @h5!I6V0YD.As<UN͔k̛' Ucl.yjE qFK;HgpP |]bf`ӎo [wd^IO&&泰 4M^j' :ym1MNec`λjE qFK+꭭7>*nTĻXv|X^R]_ ㏵泰 4]^_bOtCLzipF1?Sɞ:iE qFK*ffɤƍu>%$_2ʲ Ζ9Y]vv)]泳4 Q%7负i-m҆O49lUX0RKsvQg4G|6wh_k"/^9qggKX^LqaY;I[vt|v5!8 Y>D;7Ls&pܠ305fK3Uijڧii;ǟG8-ԓIc9<*z-l,[lJ$TG/kWP, ˤyY` Zv4:*YFFsdt|fKMNFj>L*%y47=O;z(j3ZP&yLsvu)YԎkֶtD^vru ]-j0- ;qCJ$ 7UH8n9wnsj}&$۵sG8EoKQL;:`8k@KNR)n%7\4>vV˿jܻ٪`;g.Ѣ hi@׾}?E{kǗ-i$#Q~,kg[2iiJ\4)VWؖlqέ'Ul~ߜ#%}&aF;gѢ hi@WTon<)(_^`c96W/d7OcY;oT_L9xP;:`2⏖!R {mM8a Z\KWߜ=ӒG?'OjGE qFK~[|)Rq~N~>GKR6z`~> 60 yl{vƢd45ɫ2ю^e4#޿N}UЎo&o黙JRtJ՚vF 6`ߔI*Jɋ GK9q#lU##ڹ[wTvQՎ]-~.|jH'd47?~V5=3KXv1!Z=t†2l/|{ڹҀ %`N֎^g1WM˗]k,tsyuJZGO7۷ +efF;=C5FsG48(\ՎxjwvZGl^o†2l/O>,y9(j0- 2Vu9GQ}ҁK?iyȋ74$C1DQhi4'n~D/ W舧Q'aae!Z׽e8t-OҲi`v _;wQ`2Z0A,yXN:NZk=7tV^OZu:i^;BO$}}_h↢hNJ%Jvtӎl²NۘB4ǥKfeڧE&ǵ7E &C+|^Η?Dټ[h.fWсd47?v>uvnSg:s`.B4ә6kB fbB;zQ`2Z0ܜy[oi̾xu:մ`Zz-W|v|>ю E &ќJw΍x%,;XC;~}׮hʎq]@P`2Z͉ݩSe ܈=l²O!DKy5AE϶AӾ}M[vn 5'yaΫ}:]ӹ;S,״O^3'NY:xC'ccсXd47?q)4KÙeRB4BKIPN\QMO;LFKp6#su,Ku~yEٹO^c%v'|Lv֎ E &ќѥӒe* +>IXvr4t^-x5@‚mvt 5wܼ}:/eߵ+'PFK.MX;[Zed47?tZI_a}~g%aa#9ZǮ]zQ4PpmJ]E &&yjN{q{/a:>2Zz~*.Iǫi+,9@|P`2Z͉]:-٤vgr!GKCup Ums+d4`tZ\7=O O?o[ֶ7jgWpFff1AQhi4'n~t5* e f)W9Z-,WHڣ~vM9ڧU*I^5>]E &3+|vM*jc/^Yf-.R먣]A,쐎@LP`2Z͉]_d B9$,;4l{5舀د4?w̸mv1(Zmъt5%1j"6v^IE3`.vD3-syyzwOoI X7c;_5z(j0- Y8@3~q\Ί&2u%S:\۹S!kGP N:yyp]ڳGjl OI~-# J}VXP#tV@XKضvt=5Օ ih>FGu+_-]K"ή`dDX [i(j0- ]PhիTh (yC54h熧|ôϲ7G~Q̟Nl&} ^]dYN;*LFK&;|X|N sccgXªhgAKuaRv (HU 됎(j0- ]]]]j kGڹ)Y`Ώkg+'(52?{#OSBUWKsd4`t:$? Goٓ hٜ .g#u $vzl5P(zUZZZOڹS,ݖϲgWOPr'd}2n_iZ@(XLg(j0- qr7 йٻW ._[֭v|B6FhMjG'ilNP N:yyp]ڽ[zjh Hgsu>K2MiLJ+'X 'oL*|P&?iGWEQhi|"urgx->KVz# ]") >`0LFK2q;xPtjm ˌϲej*X ledB\,5PGHVjGWEQhi.s 4:սYFK/U,#EǴ+sCΝ>`0LFK2q;~\t:zT;7㻘ϲQp I"n?g"3JюҀ'LL.L}CXҋx#,E.EhnwHkvz`5Fe'y:jw,{~6hiN.{0:j 45IVMskd4͒]tnvN[jRz:Ҏ_V"WO]a:rUUٺU;=`0LFK2q %OWRLNg|-'hi qY#W'Y#&Jsvnm5¶sUUutnƴP څ_D-G-&2u $_>vzT5Fe JNzY`DRQ4Vډd%St1A^ܸ[E &ssv7ȞT~+g-sw[tn\;[rvtT5Fe JMϲ;D4hiqA,4ŵ%+ڹQ`2ZF:7~D/}R>|hEDjry@X SQ`2Z^0(y7j6}9v}J;;JFy:} ,}f&d49ϟK7SU{B m<=&ˁ^\hBvήftT#Q`2ZާJMuuڹk#>^􄵃dhic):ƵO:}Zlۦ5VZߝ1Uq\;~9ҋK~|EܟڵꨫӎҨL|Z[%8vt-,[0͗[Z*xg݉zd4EJV top4>j[p\v3Yr0E &QIM l e ݸvv - -%}VXBcקfY-jk%̇j6E &/s^;vsJ;҃MhgWs:z{桨d4*7߽AᣩM;:p)߲vv - E_8_~ Nl&} ,(e^;(j0- xd5-\<}_E񫪺;~_Q[Юدߦ3@ImGAd%o&N&1@^& ȀiԞ;c眙vb,Τ'>ߏ_uKϣ]̌:Վ'N~2߲$0Xmt#ٱ\- ]ן6_DNHYw&Svd4Euu /Ti5~ŭggEKoĮltVJvv7Վ'N~ _h ݘElG0GgR$Z-r 8g^{!$7>5}QNs&)x; P%O{Z7gfIv~絳)svn<5F8q)y4:kLFlG0$Z&8{絬֝O a>M< @Qhi`뚞-KxM}w_T['rZ7b콜ήaaciG CQhi'?SOvnj]Ndpv| Js-%(uay(j'evtP`2ZҦ97ʋ+$W6u7"W+8{ubºhmK%I(j0-p)ɋTv6Ύ0Dl$.y1ίj:wNrٷO;(j0- luꚱ,5Eگfh dRvxu$qC;=`LFK#8<Μ #^vd3abt@NJ q&38 5Z9/,mJ53)DKoНe'Xؽ[gcP`2Z42F[6b;s)^#h4{$,u4eXLr)@}(}n5YAKoPwŵwٳcP`2ZD,&y+*u\IFlG0㏖#x4L+#uǾ^opE &MM+k帮SU\* ZzN%Ǧa)yѕLMU fd4‰XLP*TɐNvU- nFPSo.?j/n2Ud4P7%WS[!]VzjH Zz沲c3hgW]] fd4‰QCidD;7仕b\;;j|WqޕU~V{$7W)j0- ԍTʷ,ɭuʹjnq`3Ujnߖe*LFK#8< ?FlG6Ίv| -˿"+0- M];(j0- %`\0 75%O3PhMIW3s~F;USSU5F8qq}ݭ&5FlG0WQC4OQQm¥UrikmLFKu]Irq>P9ռ(/ZzZ&{mI;y߲]qvz@E &N@IGڹå݈!Z[Qݹł6!"߯ 5ۥK{yX9u?RIyқ5mAv`_MjgW.,}(j0-pOO$Վ3L؎`vKvz--gѲ̶|^{hk\cZZs@}f}˒\e^f3<N%--` ɔvpe^ 뢱MEQhi'?Qyƴ f"#/-Z[;ef3pY{P\cmLFKu1U,,hhuUZƓ<\ߩS¢x@;:_?QY; b}."܂vmVwQE][tl[+Ѭ$)ر0sIH24s{~:s'c2ZD:]F%чjGRT;IV͢gse,Awsvn3P`2ZDJ^srC7=NGng?ZZml/Źs=5F8(:;sSiײ4㍣A ņxJVnĒŋǵڹ@Qhi )E'ۖtnE;&IK44hP`2ZJ{>:~\;7 pIβ-hgGKc۽tnEc3Y;(j0- A:[2Y/һSnQ3lU|]_(J(j0-pbkGOkX#TΎ7Ɔ64'|#/?(^ٱC;(j0- G{M:mm|^3{s^Υfzhi|IML[LFK#ZGvnh[X*ˮz޽? _Y=JI1q]d4ϟ ߴsvTs&_4K2M҂=OiחϗQIE߯PBQhi_+WJrO,vvF||^Vt܃y &ו#Z3Νvt@E &Nl~twK.ZB$Xdp^;>|BK#H^.mIzb՜ѣ̽{ڹ @Qhi lZ[%ڵ[ˡĬz؅G %iήq` 5F8)ʿBhN[#'4f<')nmVkKyd46^IoZ+iգ^.f56Jav܀LFK#Z9vLrp[\؎%ze -{TK be&8d:;s@:$yVLlG6Ci-@Œe'5Dlg<5*yɔLFK!HH^gxX'Osn$P:`^'zhi/v 6ehF; a-|vtw5F8r,jo %m7ӖhV;>CK#5vMs+_{H^2_@8ݽ[F%ۊקΥzZ]# ҟή,/K:ajEQhi_+I;7lG6E-} nµ|#/P^+yޭ5B_򾭘6]#^SU^ ZڋEzk{=a-at̺E퓼dmLFKa#yVL&>_(r%zӉ^ ZڋDղv|e]]NhmՎ'6Vgыѡas_ʲL.hghiމ>_k!yޭ5B$ܵ34d.&?"vYW-oCK{ޤl=NkN;[Y(j0-pbk%EeXs,Kjghi^ ~.>jvsvnP`2ZR{˜<pZ۝Κ{+7tV+|:O#<}&Msad4C$ѶmڹɘT:ϥC-:52#h˥so9OY5 ϲ$ˌ~NJ9d{D9[6ŗѹQ/#Z:(@Q`2Zk!Kɘ&_4sqQsM_?euhk,3߯] E &rEبOnu=lQ;m49]ѣNhmՎTE &M`HvK@:f;o{|Wtsڟ \&YfihЎ e 7^ƴ?^қwԬYè=ήihHXo>LFK#x:p@r uthFXv'cS켜54o4'ϲu=˒3$5P`2ZR--uן={ӿ?-Υdo]z%)͛GQhiD/?XOK!x6lG0=١~q^V֢8UIDvd4&&<nxű&ÍiHV0?kg iI\W;:Pe5F4/_! s1yPCKߘiwA;LdӇ^k`@ڪܢDqI7ek+Ec@Z;a!kG҈&^~z{%P"}2f;Κn-jGZ(5)A3L~ASLW_/Yi9}Z;z(j0- `9#x-K{^J΢ќ-] [R'L~A;gτpvt(j0-hSr ;su2f;Ζvph2_UqMwAJeyϟkE &,g|\߯R\Fq;9Z*.#/{r5J`V@Q`2ZGIN?΍P]N|%hi`,lzeh_}%YiU;}(j0- ۅ޽_3q tUr kDOJF;wؘvt(j0-hYrB5Jȍ)DKuyANysy55 E &w 7zu{^vJ΢)/t9%xz5<(,}DQhiD/?X;wJ΍PtNc5hi`99AN]qڟa6V8ׯkE &YCpqC;++:֟If i*wmR$^L\$lUoVxZڐ%e; /ld2fP`3Z_^ÒGPSvnH&Q'J;84ڞe7E֕S?}Ky^{fv1f4 I$٥D6LZvNkgWkY!=0ҨL򚚒jj׎:G Ǎ:W=OЮ+g`j/hRa۬溒uٶM)MʴJrZ9s,%lF5،Fe]m49%7tM4 v!,(&[DžުM/nW҃(rZڜ/iW i5،U__/ hxX;7;4K8n龞M'z^/՞I :vaZnvXP`3Z[=}$8Oh!FΕ v1lZo~Zzv|M۷ ۠_;:`E 6kbbja#ؿ_:~\;7뼖M8n M':|<'U3>v6kGE 6lj8MMk!. 5sfZڨ3Pw6]Ӆ *غՊ*ʋuMK du¯C ~;.O jvT;T>u%M8dvz(j- `=悦&[cǴϰ,m֦<lFKX7KoqJ dįj'}s6~ - gx557 {`@Q`3Z&&&z{{?W}}=7$ϟ{sü7r Ǎ:M'@$W{]5w=setT' sR`3Z}| &3ARٔ5tf.δid7uxF;!a$A&(+lFK2qu%ϟ0v>QC- D7er6~[>EdRgpPQ`3ZsI{o8}}e~ZzT*?_-*-mZ~PD7] 遲f4*7߄Z'|:ac;z#pܨsx,hi *lH v4O GH{d)N[vz(j- V[>ò й{񝁖A`JvvvM,,N@YQ`3ZoBKsvny-pܨ~hi@EK_]5sX 7 0"ŹtI 7)T~ONZ:w=M8W5ZZeEQhiT&n wK?GhaF2 Ǎ:WdF~Tk"8Mf4ΝtvjgO7r񄤥c0XH8)5h8]Ycjj׎E 6Q&)y|vn9M8n M4 vuW͙;9,"p9vL;I5، {ilNF[YƏ!$-gd7y,ZԎE 6Q&%yhar Ǎ:_gC- 熤xWOţGA2)YrNo E 6LMI? jFL ix\{4+ήI\/jGʇҨL|퓼}¯%7t_i&Z(_L wTϳQl*Yr¹uK;15، sjL W[KD)tFtBZ:fMHigWVW')O> E 6Q&<(ytuiaײ Ǎ:WJtzI wl4}[KpCQhib.\}pW<.|GKǦxۂvvMwKJM;7P>5،Fe00 y=$7_i&Z(ݥ]5wk =g:5، ֭3o ~)U;gEsh\?+Mk:xPڹf4*7߄K$o+llلF+DKe}]+篧R3KBd '<8g.ڦ]2FVq|!`#$t4uëDSG"MlgE= aO!K~ȹy>~?s^Ϝgyn#Pf4?FGOߦ&[ /FKWͣ#%j% E aFK6qM8^iar:'Vj((2.;G77'y缜fPf4?R)7{Q7N|_Pźlt5Ϧd7j I@@(j3ZoK_}-ls˜vph|\㹄+S>6qod(-]MhIkgK`pP;7ŒFm-Y|sðcوe{_i&ZЅ{AWnϡCy9{EQ@|z}ỷu?I/X>2+ 5+iv@@(j3ZoBgdik Îg"uhi X )AWL9MOK:ޝ>Cp(j3ZOSSw78<&VMie$R5>,ܩE aFK6qM#ovnvl"lS+DKozsoehr7v^M,޼}Pf4VWOߖygU崉TtqF&ka<}E aFK6qMl=ڹaX\IJΉvph - ڸbgEhjmv*dz Pf4x3k#U{`Qk:%j\/]Ҏ0Q&$'sG;:L:e{ZM4`¹;A!W̶sU}5ϟK^;g`@$Qf4fɃgܽ}(j3Z@Pvt܀'2c*fdiήfdDkG hi&n!g~0?lsvp*XuJӂ~uˍ$s1D(j3Z@}W auVeg ZZeSή&;;Pf4j7ߐ.ʳkvn<l}5jhi:RuzK80KʍF݅^N߀~2*>EZ;;$?&܀?5-7d`@bhGIF:G3Ԛ+βgfnέ<6Ȉ1< hir[[ob睺>dϦO5K~8(j3ZoH"!Yy3?&uNe#uMfC - T\AǞy\>Y7^N4NMi Œ?VůtZ\덼8-xF (j3ZoN<.Yysäcوe{vp*%AQW{qQ(jnpQ+Ք|aAE aFK֑#Wnov_ͧք;-dhnY/+hgW(j3ZoݒK;7LjD,Y54P} b3GQS++h㴵iW hi?_OQW]m'Ŏa >j!m̘NM5>|g| ƌa>\Vv[ҙf(=f߯9{ޮ)ϲW܆XDq5\$eO' w]SmomҨNٻWi0^t#9njHiΥqgyitޖ-J#d417tn;pyrNhRZu2!8SI5ïҨN萬<i0:A)j4[p*!Kun,=7$}h5e^m[Sݻ=@9_̭Z|KJ+j0-;Wvj~vA &#Qx)w8_Tޡ~>I՞FGs.k״95cWܚM9u7pmCIiE9A{W'{z[j0)ě.ɾsvS:AvAJ|,WT4|מF7HBMNj:LFJz߯=C⢷;d9[PRZQ~~1*:-=)դO)LFJ:O%ѣ}#d5[Miơ_viu;KV%סҪYA &#5ֲ~JL`6뉤m)As ڽ|}R5FuÒ}g.}܈-gSڍC) 2/ujF{/^x%CPHi!y-oǵ(qrt&'Na#u >^Vw5O>n!d4o~x$NmW(h0Flo՞Nh74iAn{Yi x%kS~Ң=C9z6\Hi]:)w\q{WʾLFJ:svׯ"ơLp Yi?Y^)APHivjJ{r6Nz.>ίAI7W ǵ[Dj0)ě!ɲT|:”.DlGP܂vP@Jm.*JҺ,=[Һ_{EPHid< zј|N&ҹO2|E3(hoދVTcW,j A &#jۺ:.?9zuiZ'ڍk~v5Fu՞=}Wu;5lVq( M=dxijOSi+Vg0`2R@&'= z31/n :O!u\LQw5O?j0)ě;wΑ#ڭ#LIElokơL36YxDBuii*m~hEYw0EPHiavr;>=F9Og;Q;rG΍dgNw5{O[#d4o~EoFɾ֦:´/uvP@J,?;օ崧(,Kr5*[7oj5PAo3b{_*Ⱦs('ғ]S[K߰Ao?LFJ:mnɾ}#L-]ơthwVvF'洧aϲ$Zx\{FJ&vjJ{rP[yҹ7>)mm)ftl/mj0)ě6ɲޮ7OGloKk74`scYA3:1=ME]H.HeY^o85P1x;l;;XŶT}g ?NJ`QNvg{WKnҨNa,;{h05[K8ҀɎ gy^ZcĜ48^KTZ=9 A &#TҥKkmCW,jP΄;e'j;&HfmHkPSS~`2RՉ7?lmmMNoiy7b;~kא8ҀɊ^}wR饵>NiTio{6InJ++զ d4 ۼY~+W}/d٩N,Ne҆,:V;*PW';;[ d4o~>H$ڭ#4;[-vP@Jp|Gzي΍fLۻWxYZ^6A &#TX,&65iw]t,;{ϒ҆8piZv_>' /}VXX3LFJ:懭O>:Bk(o7ջJԻUr9c0ZIP!Ɯ`s0*@(  f׻^wQ͚}yGϭWW3\Yّ4`AO8q;} K7E'N3lFK6G- GrYN;:"lP@KSx9MA@=z$Y϶mOQhiY#_hNv7ԳRoҖ(FFhmB(j-ěoܹvtDc\C- L7 [ gw[֬KgҠhrlFK0/ G~vȄ4H -m‡~/]G.'Νρ)ҨMl$<|8v7sjgvp()_c-U8 hȨd2pT6Dp5،ulcv^x =z2({;լY#aP`3Z7߀S7{#~?z)F4ZZ5Y}:3V=8pk*4ID"}mSw8-s`_JLLkgWLﰍ(j-ěo@>/X7sjۗ%0 ?lGcVgpk?cc"3E 6hٽ[^La$5_kU֞ʞ9_;}֯NlFK6,$U;Wji40mJP{s@4ݼ$ũlV6$%vWl;NK?-m{3m*hg״lc_B;:(j-ěoƅ ›s1׫vki40E].h'Oc͛ws'5،hl{v?eg?hi q]|O; _ص7NLҨMfA"!44hGG4\r)Օ?%h+Ә8dw*%Kߏ6*E 6(jj. v=,lih<͸e #Y~vz`25،Fm7fM#מ \ihhi`JJ?%(ڧ1mvT6_|mNlFKPy|ݵK;d]ͅҶ|T=cw5:e_ сP`3Z7ߘS7VT)zΌ?fTוpJoi(S\aNlFKPt|uG#0CUlF;nᗾ|vt`2`3Z7ߘυ7O?ՎKobn]F4ЕWg~T<#ܠƍBR`3Z" ]}<ϖ-.8Ξ'mx8-xؗlRgHulFK64o䦳jvnDcTϯ洃(Z;'lI@\8d?'OFt57ױ5Wq=MU>>=ʗFkڽ[ƱNhi&|.\s/΍h;^3kJ;8iⷃ1W'kȜ/ GDt={jݴI`tv◿q~A(z]S2)̏юT: 6QxM?_rͩ΍h>^*FZN:xKJg27Qe8ӧ9E 6۹3{&pko7GnpDמhgW6g_^;7P4،Fm7i5g<܈ƜC vvCKg‰]3c(Yfٲ?Q`3Zb1XD:Np&Ԟ yͲii{|?%x +kj|i*bҨM&56J9vtD`鱾 f~0 ۜkɜ"lSe~#Q`/Z ] id4%ܽf-;h?YxOgKiWg ۱Nhi&|v^s#;b'U2a- LKz%0]A3S_/\~D}.W5،`> :Nޮ}Bk{h?Yw&+{|::_7j4،Fm7)Gr9wN;:")\O0+:2a- LKhw[χeȣGml|䡨f4KtwjcTj.wECcw'MA;بx;i-ěoX]䚳kok]@-PBhaH HA(Qm%(M Q)mRcu]wSGϜv=99j olMvk(8C֪b瓂[`G'ɾ}8~|uQn'ؽ{kXv\8df]W  sWkӶ,'NX4.`ٹs5)Sn}6i4=bvY~H$˒ToDW*$Cѥcjji2.ZjN)]~} -;|I;wMOW;u``247g5ǶS%CQMoJ;q. mRpT1޳vY~qñ,XU==n3Qr9VrQRs_sEìj)~ڇk,qLFF0,w6o9##ک|)Q,kХ5?Ub`:[ԮsÎeIƪ7uWiШdtiFfN[:Ţv+9r+fYK39]DХ^h箬Qij ,qLFF0$kk N(j "/iХ (/D8j#G$u$ya$i0]ě￑ɚکҡ]o'O@pΙRXʘ׮s2Yi`24ݹXuhH]3ɉvu㇂vs40 ƴS~ 4.`m ל~7]o =N>KA=Jp/T 1޳9F"Ԕv +I1L˥vUX,IvfLF]wuii0]ěI>7_bѥL*쑬9Gj 2Grf;@~UlK.eWH|Z(s'Xcccu?F &K0٭[lVul鵵8';i5?dR;u-`24țᅢ%;үΆ sO ˇEwDmz2]W$#VeD"ηP5. p']ϞξRŤ-ftr^*]HsEO?'S8 &KCW<ohhX]Iv6gBQ[K?~`>.5Q%Yʼ**ò˗x"LF`XL>n\0S Ųvҗ+ mtjJ;{dti^EǎIv&ၛO -㉅MIeQ%.+Ądz#,˹r'Ҩdti~>Ńٳwws. cks1+KٹSQ<:s`24t񆆆u۵ AqpfSj[(Q;TLk?0X2Xԝ\޳9C7kGWdtioLƱ,ɂ'کfBQԝ,S^O,lJ *!fNkW ɠvLO,5. /Y- ͎K"'7W KkKOJ;}5 N$"O8 &K#x47K}.CQ[Sv]@saѕQ%1veɬF;h`24wȧAk3]t,|"]G2#>\Q;}5G 6ԁ `247_lٱC;ox S( ڹstio8?JvkTŭ&v"ɸU[:ŕ+4j0]bzZ>ޭ}z]gRŲv-տjFQ75aѥLZ^,8 ܗ EzHN;qx. m'n#MGA4?7_UJ}UMoKBYCc$8\ mJ.I\ll/Ɓ*n!ClQb bf׻^v׷ .b/gvtfw^=9dzn\g4r|k~tuvF{i.+{X'{G/cցXHio!#၃ןLkUn#̩v&dgǂq7=\1uv:!\fw5) dN$"Z++DB{Ei͝ I!hv|Jw5Rv!rEui3RěBrikXȴNio yt ˎy*l&+۷HDtDb'HieZ_ض#tsmjΌOk,ޜaii&W}/N&|E {i }JZpS:S՞u"ꕯ5k.5) ttW֗ե=âzs.-o<"X֜H#ք]V%vM-ڭϱN&|E~*\:<#2Vu48EJX[׵GIjW>g4ҒNW֙2 O{ű嵥;=G|5"{LWiƲrKvsg47_ѥK λj|בi-8bڭK4&OjΔA~p2 ĉ?#={+uPkA;*{F;{״v+ްAo9i3Rěh|1 '_٬v(S=i arRwxT;PkMܷ&*GWk[{IPJS]Ϝўd7\^X¦ӈ=J NN͸eǧW}CN[XHio;NQlO2S![!R?W4eʜ6XoN{"Hn_3uIPJQ,vkW'YH>7kryaq6=JPԞNʞQn2|"n`#LVx9p@ux`xȴZ;ϦHi2=o+T7=Vl&ܾf*q j3R@KW[Liպo+ONiOXRw5.?apGN&|]^-ݫ:zW@N&|ujSY7<چ{WHiu 5JΗBufF{&Wi5g>MPJ]4vevM{^K蝬˫ʕc3)'le(+޴fg@PN&|?\mFG6D!T27;=P4*Ye~MP?N(vWw9Sk[ݹʞ=<=oǴ189c xXHiol*i ou,2VU۰v) bpOTOV{,ÇÐa-54L]\Ӟa.R:z'r1Ź`{,%{4OkݳV{4)`[%7͛7ַ%BԊ4%'HiE7l5*lZÓc ?.Y^7ߌOˮVjǶge5r_cZsO'n_ƍ>dpg@NuTp/?äRi ((haFmu֗ChaqbFGZZ%M& !yS)似˻Ϝ_9'sϱ'wK6~Q9nwr;ڏ. $GSJ^<}8]ܑ#~"!VǣnQD\.`?҅x%.TJj!@W33'vCkedti؉oߗ37kps\AiKϥ\}ӑYCSɝ8!Vcei` islubB.T12zR />ʎ ڹk t_}UXqLF8&3y#rqE~ti wgm|].HdR2ݍGIҨ4#ks❛.`?nJ]RN|]ݒ}sW hg0NҰ'dVF8zG1m5LGѥtsestZoh$==l%-Ykv.=_R;_%֥s/5zժe 'i0NҰ'F8F.W7JQCOx*G٬-Vb`' 8 z<߰A>6XԮһ'sӵfEke?^O>6aѥa'N!v쐬3vDž[1Ԣvh34قY])wK MMd0[ 0Naڌ.ҥ| e90ɾsvQ;w} Ţv4. ;q kdٷO;oZo<>9n.٣:Xa^^nI&={$J$/hq@$~"!Y׭+n{.}r5z,OՉčex^a i0]vbpP hl9 ;ډ. oJ]?HK`U͙3zv=x?:|C0[XiӼt}V~iai0]v7%Lwyک#'b+cڹ:lb5.zOg^C$>lv7*1N? 4f25ҥgKTχrUgcx~_D¿vMXqLF8233ک#٥ʢR[NmCyq6>]D:-Vq1N@#k3xïV5KhKg'[ z3Yo' XA;q#47 W dti؉o_.2}:Q-7&o+mT(y3y3tOt܋ֵ jY']6i64$YWbFfF-V⩠ ^b穢+l9>J@5 dti؉on"387Bx!渂xe6:=^{bh\khWӲ_f+ivDu% bB'AͮT ݩrإ.>Avر#d @1NҰ'[J۵Fh_W}GsGХ(QNN;?.hW2IxŢvi ԺpB.}j-xCI}]4{~?y 0; ݫ]qLF8xuyvt>渭_弆vh4]1''xFO&iԚ'%J9=qSH$k:Kr + {=*#dti؉o.L`te9渂+q,". @jWJxV j{I&f k``J_N8NgK<_4<1kډdpPxmIG1NҰ'EBu9㳟ڹ=L0]dr1yaz<߸Q2=vikKgnM͇TU?QǾ]N a^="qLF8Fl1vS\q[O/j'K0-IZ{}. کXT Ժ:dnsi['W0J;_, ~*i'nO?^ۡ!i`247J_dٳG;oixj1渭Fvh4- ^d:_5yPŢdBkƶmکWS=}{rإTݤw4FiV.Irډg{{}N8 &KN|)bF>t3渂<_m@`ʲpx_niWm iv`7i7 ֵqFrޥdzKw ^Kٯ,XZݢh%*.ڒM(*hI 6*5X #eΆdlw9w.;_9j>rsDO>ljA;Yڄq.i0Sěo. :vtfvΉX\MhgG 0Խ۴6XvӜS/Yvz1i וu:ɔy=ߓvv\.NOkG@Nɘ'| O^Ӿke pJ;;bJ0x1&6U=l^?65 rj7a: ffV\_~Qk8OxM.Ԫ9=N;AYo㏵#XdLioi6m0]]ڹ᧮{وe*:YԎO5,/ wyj{ɒΝnBuZ[fcJLz;t3lAm;%bJR;UNk7TԔpO[U} 4%ŵ`>Mi;4ļ$.'RBpZ xqQYCC= (XdLioiˋᳩl1#v|1ԑ+ȾSU믏bxXqN X`_H֦&q|LߔuI;a;6<%Yh@`1NڲErܹXF^C) e1&TU O U1[j嵻Pp$;[ow&v: { >+S:5R=ro gS ǻ!fk7W6FNuLƔF8hdDrl:vt˷ԅvvH0ԯ쳵絻bjݾ]U Xz/aJYhyGe0旴qO'h:: &cJ#x fЎ9TLc͘ZX꼝}VoѣVmnF: ­\MMt#ϔ4/0+{/EJf/\Oh:: &cJ#x T(MMO;:E/lAΎ5cJw2/j&[k[vnu*nߖo}Nv)$8S"z_nQO}@c1Nfڽ[r<bߵTIJe}kÔbi`RTc\fsln|Y.i(hT+quғbC=RDѿ;`N;|e睧{9 R/N48]LUeډe7L¾@H=ХxIyKD~͈v5S&zkH0MG,] x4)Yͨf2wY_FnِXh'ݖ>޶6Ndti&n3m$\U_N!Y|Nπ. KɼF5#ᾡvA%;dd>] x4. ZoHźH*\ˌF]U%&rcijjSkYHd!.]Sk}?7CډɎVΖ6dti&ncm&SNv&},kyKˌO9[ȌF=0 &7::t Oa - Gd!.MaH^ HδI1h'&k˭.n8 NFFn;VOpOٳG;uc@H iyK+M#*oԭ)n2~YłS`[Zj]:+Hh2msuaJpkCډ.8 NFFn;=e6a@HkNcntiv!ˌ/Kxb޸Q2Mo|bM0`ZSc5.ѥ/W?[Ŵ{8Q.wBɞ2:7l/š/cti9gp|ucXmH%5D(. rޮRx4̩A>nhҥSicVhIhڇG=0+m,r;:S{8Q.w-[$KJWvްh2 dσv ]@/?jf1lڳ4j_AnF\dM0QB8F0(itȣ戕ed2+$R{>&8?kT;qWzUipN<.w]$K֭y^;>!YkhХ׆/d9Yu,fY.3CW5w0N|||^ݾ]c--#ҝ-DbCq])2%mIvpG5j ti&n#YR̈{T^ Fۭvx*4\S6$~X?fg³7:,v8 T]-Wc1:KG2jT5՝Q:@;qڽ[kpZdK;Moo笤df-)۷];wc}8mҮOFk=m ިnDG~wL{]/Wڍ{3K->glٲł}E555UkX:'P>8l92LY֘ٽG{T#֪j{޶sRwoW׉OX`ygxGݴݜ[{8rZ?oiڍ{ثr׭nn,OZ@0v|{ yh ڭ㡛, 3$ݧ'@5R@`}r)+~-p9ׯϚz^WUCCuj!Q[Z$~9GNgGyxFf_QɔvYSn.j8Rē~CCu֡aT0e5,hO ٪7ZUp$Y&k BڼYU~߰N@Mb1`5S:W(6 $9Iєɜv޶m\J< HiObϴ[s5C0Ԟ?@J.go:7X&k WHDݕNN@~[F5Sz*:s|MZ{a9y!ݸ:3;;? HiO'45In~D:dҊf']4k?R[B ztԊD$]tN@kaYHa'NRbA{{q8)fݸm.1K52=A EJ#x=[rܩ7lJ SV=c.RGS:Mף=YPJJE|uZ[%;ƍ5WR3$h./jTG̓ v㞗LZ, p%5)`!ah ڭCB jOHi(92Ԗת^ZHccV$"Je: Kvr;3Sy(ؼG*؟J%N眿護f::+y( HiO'D%֡gϙaԢvXwW[^u1;A=1a54HvkuJk`G-}Rzx"2$ frbQdE r+U* jRē *nz0C6 %4TreJyg+\pv'ifի%; VPy.?ڼGױvc *;fx. PHiOW]+J=gC)ɼvc[J;ؒ͠xr9X@U=[çx1]=Ra^Nr7y0ݸoNOkbP@p&|غUrtvj UaD6RreoJ6T?6:Vyjnr9b.K5|GSz yTi =.| Gڍo^{M{GF0{KNNX*d.iRb7.~*k^YpA*Y+i:24Ȍwtzݔ>傝{dyL9sz$ݸtu57=ĻA A@J#xbNIcv61 z) 7uF+f~PwwKּJ57[Ѩ#NL:mE"ѕ~S/l$ 39mdV0ڍܜ~n#L<^曒{Co@@Hi1ge/r 6ȈdͫC\47 .\MwXGx:sbᄝijL ok7Ccc벫K{|F0{EgٲEoa.jt4DzW)mtڊD$^Uml]b i6#n6{ 3`5 Mninn#L<^-GBAuha jߓ) p|F'nޱC[5:js icF^z}½N?ofE $#Jq}! ~ V:=\A >FJ#xbhHr%/| f3K) P(Z-6q M-ń޽XN|u8xPGJx+l\%U؟4scIlL}جv- Gڭ5W4'+b1=ק:\`*~`ȅ~?7q]a3%LƼRg CNIIJf^"& 4i -!.L2S`"۬Ve`if!:+~wϞ#=X{Eqf5᰷ ÝPa/r_fKDc8.e+hl:Z 9\-Z-\*TGoQ@(ѥ'#o:7aX:bZdZuvѥ`]Lq5}Aj٬d[PazzxtɩjbR]~W}lL y.fW0TG?Q@Х'ٿ_,o1RĴHJuvѥ`]VIq55<zuod[I/Y $i<ҧn/&?[m|\0jZA`@=+|_{MutC5 ]z>2:-gj6 ZNEutѥ`#>.q55?ʍtu"dޫ[|% 4xduF AxddD<|::os=:A# \u4jwۨƄڲ=cﺻCC;9]anR]vk/, |Zu+͛~ Q@8Х'I$Ă1-AE{bF3K hu,pꫩx{6iPjk.Ȗ;b^䝹=OdZpßgT}/cڨ O~tuIչ"f'REuvMѥ`҅'?s54kE]ÐL}5m7%4x71i(=yr͓Cܥ'<.&kyى_P}5O .[—w.!nti'?X,# =jGLKPǢ욢K@Cz/fd_:WECwWS׬DH]>|"ݵu'KO-Dc^wE7-yobBͩNݨ O~K6={To]^:+t$_5jqNW]xC@0N@S=i"lt"[9l{_O+jZ%7|Sue/w C򎏫NBߨ O~Mu"%W'Ҫ. ⇢cW]ku}ݽ[2a_~\ )H&]zV.j&n&W*l]:)ih"qea>u3qCY]{FSӳ%zƖ%?yFalضk7Qѡ. =NodS~׋ԁڡKz1JM='٨qRlK0N@sMMCjOӳKO=n(uk\iun,3~Vݒ7w6չ. =d9qBunIn 1CڡKG'/ >y5usfi٨ywV(R۷~Ҍ/tqX|(mh,}OiOq*!Enۙ0yѡ. =ɓM-jlĴMSQ]3tinPJիݣmn˿ kAw~IΜccsQiiR޹m-|mKGO&&oPGF GxgdD|𙙌1-Aͤ˪. ݙ+EE_cmnԙkiluXPqXOQwtkLn^BO:!jd7GutyKCO<K֐{UlLFLW\/tihiWOReoǏKeիm *1N@+prK_ϡKʉ+ W ~|TSܺxXΝ—wnNut(B?KCO<34$A M&UG#hrAupХ)rG^Mu%7je uG6De#C~osW.T8]xٯߟ,VG&٦OL]g+*k jԭvb\ h`WkZl] lK]raY:=w;+)v[ҷ%hn~ڭC A ^FJßx+Α#5Sux;gcô[1R\|Eq-Y*A} g¢ڹӝ@4ICpliGHη["c:m?sҊl3g_n}jw 5x) ͯ8 א[(`vtDq!ݚUH7_8.pصmP&)>WRI\UU9dxPTbzap+%yhH$CA ^FJßx+ wݜ Zv[RJkx|WX?f~P1caQ5qg@J=eȬɿ]tC$-- /Muh Hio~ٿ_|vɹa ?v>BJ@]݀ U{:kA ¢ZJl8 spܰaH"r,ݼ?k&ߺ/_nM5kˀ/#OG::0lWw)}r8դ,cL>)ݠ޳G8Ց#.7.aZN8ڿMj4ϭU{WuAm֭qq hJqʭI>yq^l@V_Ee478 Y=>PoxOr60ô[5ڽ) e/*o녠jk%baO?JqmpP>y_?AJ/_.%J_#)퇇b<^d_Ee47+Y=}WoxR30LUe9}T۾RmCԉmdV,Fc@0N@V0(;kjIi[Nߘ2%_\Idž~uuڭEe47HVIMx0LAu{R*,ک}R)k*ɸXX1MMWGJ2ˬ;) S:zeRᙶo~kh1N'J40 Y=6l4}:`j>Hw_ #)mXT[(7`\,v3@)0N L ck"znK”٣lNQN/vp 4x) ͯD#Y=L0a ݻ/k۰W9<[db\8 Hi;̆-Lv,i?$Ǽ!+̍ uipӺuzvn"s8גOUO[+Hio~jjM SPəv/?R7<>S]OICu+O*.\>H1Nl ˗HRILܘz|7;Zje|~ؾ]w4x)_MW Sm2JC`MɈHLcB /JoIu-ʨleMi-:q'wW{s~ϑsL| [8tHoADz=s%- *ŗϤcl!q $Zɤ B)L/-]|ͅCsͦ+}a=.q[Gdli_~<:zmhβ5(j7liR^CZp?VjXF{juth"iJǏ /-]WWsMWxfvIQi0[ėߠ%Va}cv^nMj}+iOݻX[333wiJ?ݾ%]>g~9Xx^ŢHmOv?4-`oPGG8JڭHv?4:Ts/OveG.kfG|nLϧ_+s]rlFdli_~J$$rj#Z㵺?4ZX^}LZpKV꿖'x,jh`f(:vP\1}5wr_6t'ULKҪv[Gdli_~D$!acvd?4;?Uܒjt/kOPpC!IV8h^`ݻ'O=T_|!</j:#N&&ytk #XZG2ڍ[-,LZpQVj~XbÒY[{iizѨ0jJ <ڭΈ`24/quuIѨv0үF2x=- &ƼࢬCq7dڊŴM#Nֻ{W5o]$gSoqLƖF07>ɣ1a֑e;^e8ݸ ˫M/6?Xs IbdmjCœڭA+9#N&GG2}a;e;^e8ݸ#kulg=͚+W$yZkBE--ɤ@tuINk478 &cK#W,&yqD"n:̗̓,Zi- F0Uܘ_kn`@)+@= ccCv4-`oh'NHC7+YvE}- n8%Cua=ĚIIV*=< qLϻwˣHv4- u333N`k5777'$/wFz㓌e;^JVq#Y{Cdei n($ɖ8 yS5~FqqP/Rz7Cz Y!Q^z -JAcDY^"Ri@TA$*Qlx`/5M7^L'Z?g|?zn93^HnG}e`24tJ5$J^*ƓS$ͅv#י Ѹ?%{Je\7V7M`;QsbB{ ^}U:7Z8 &cJChۼy߀d2ɋ#Z4[xArߛnr0\}PW\uaw$^֫X4!N9&'Qstؽ[f2}e`24tJ5$3<,yqDfO/HZkG +M׆Sc̈́SxY={&i0ʶm¨a=٬ =xPo qLƔRtѷWƍ9+8r9aߟq@Pw-jn3 .Կ2"Iz=,ٺU0zCLj`1aԌEx];}e`24҉yɋaaw@PfLi0\<N2o_?PX*IfN~8 FVCFLF{ Ξ|gh!NɘH'N~[f%/hlxxݻ͘`Aeic}=۷KBfT^=4 NiQGu Ν|*؊8 &cJ#8m-8USu7xAzclFq1p:ckGߤuCוz]>qL39)okwخP|7Z8 &cJ#8mmxXVOR񂤵v6cJ ye\~9;$9^~nq t0gi.|vh4)t䷵ɋ#zOuڜItYq1p̓ïtYu߭)$93. '&'`٥([hn.ɷ߯7Z8 &cJ#8mP8|_oĂIkv6cJ:?xS[jpIԌk> 4iNaȼqCuj}}3Z[dLi' k SM/TvbJVG?/U;60 55>,!N._&ްVW_ÌVVi0Sok##Ǒ#}TG/lMwk1p/ek\.U)%Q%i0Svw CczMW߯7Z8 &cJ#8m-8UJO9^|ݸ`g /n?L~.O}j5t]Iڌ+Z>1>,!Nz{!-K2-C1NH^*`%v i}\j7n-4كolFp6VԵTڱCwXBc8 *$k!NɘH'N~[ۿ_V+v i>ݸ`gGkG_*|SU]ݒXWK` ~RȬT7بP|7Z8 &cJ#8mmhHrv،vbJ.ޜܭ˪ 7VwKBוdθ6m +8 暛I!X`k!NɘH'N~[ۿ_V+9Sv irvZqk1p3?b3\c7Wywu/+q88h==ℙiwhxX=F`+4)t䷵LFV+/HZvbJsP_7 uj.vz-Iq?8#NzdWע,^ۧ=`LF=F`+4)t䷵aɋ#Zd_v imڍ[) {A%^-s$y[ZH/4,/6f%c "NɘH'N~[%/\NolشIBYqk1p廂{vY}S~:[k6<, qڥ8"NSzݺۂl۫=`[2i0Sokqv0廎$ߟ(k7n-4.Ѡ_L~.֚U*ssZH)4>_xa,[jS(Hz7Z8 &cJ#8m-8UJ/TcĔ%Ի/UdWm\=6uAϸEqLO鮮EArE{uΝA^eHi5HXk+`e- M4K P#ҨEI#*ȝ56өVZ9ֻ73{Ι~;}k3Rv7Z&#qO5~x~sgzd"@sWw /mw>LNJ*heTm RiY5gNV/U5P@gՔ~팬[I! çTi) ;mpPrS{CoO ێ K۪wO R4A==!sll)/t˗n .iY5z7bYN'o@Ұo%7)x ϵkwO R4A}[O7"?Q>PE]7wOBMGݲ0UH780zoĆ: :#a'|InS@mG 7:]˪O R4A[ne^+D~Hh8ܻpqNŋ#aKp_W} %4茔xHnS@m'Ǘot^+^t:(UP@g4ěolVrtI̺z!@suy78~[oKu%u:++]_Gn˩>` ɧ֦zoĉ: :#a'|K.S@m;)w[˪wOR4UPߙ- nDx:uuIhu2P@gLNa|}70 NV7DҰo$)`_%^-lwU(4h..m?߽(13#չ|utʔ \W-çVW0۩SOWވutFJNFd$)`_wẈEԭ#K)Fu:Iiez{,P@gKÇrlLi> T8Q@g4ěolVrP7L05[r<_0'Ɵ=QHi\Aev=uI#LGG37`#4u)zݭ4ݍWG3Rv7Z6+t\zoyS}i^p鑔p\7fn :iRTQ5Y 60 ZZrYutFJNF#ɽO0W9%ջ') 6VS9Iy_Drz~NKzi8LL4mS֡NjtG^^4Ξ|q'N1NHi؉7hIanՂN;OR4yPO̬ ~KW|ݹ#饕q`jutV#)U)UQ@g4ěoɥ#!ի\q<_07z @sqzJ;_܍d: i8c3` 4vJ<) JNMvU7bFҰo$pyի_w<_0w=!Hi\LA6S9/x|[jz;'lnlANM%"y{#fi) ;曫_rHrY0N|9%ջ') /a#spJ}BiutV;ŠE*ە0[sݠ\V:bFҰo$'T }x`~^R4kPϬչy+p- iپ)}X.-54$Z[?4茔x͕HgϪݚɺݓ3)я:E+J juz{)P@g[b94xQ>zoď: :#a'|s J٬a͝|>S{c8g;;@"JH2IKVLʊ8:$@0$ZFL]/Ҥ Rҳ%ɓe|{>뤏_ ?wYrwfI-`/,FCMRi: &-*\,V5%StFXd4҉oiɻuݹa[ f;hi0vFt'nƔZ躒3ァ &aJRZ.+Vϟ o鎎Nhi'^/J|;7,tSMwv`8eEOdq{ooėb躒53WI Xd[o BA:~\/cH'N~[Н*2D-ug- SVOqg^TuwOvϭ[jH>i0Y/-(\)y_X)BוZ*uGXd4҉oc|\wnթQ֣p*Ɵk3|knKKJ~H2i0Y/-] W~_Xiq~4F:q50 yzLN ;t9?kAuPuLFK#8Z[>=VVtG+ǪvpzȝQZ-ƝV ]WbQARI: &뱥U> ?VN%Xd4҉o۷%\. ax~9vpz~Yp#wO+KMA|^v͛ bH2i0Y-ke eXixXR;vLwt: &N|KMNJG -9ut- S_~5w9wԵ0l XddʾؘoPuLFK#8:}Zh=[N|>;hi0Ƣ?U](:=-]3; bEj\NL j>LHS}}ΎPuLFK#8:}Z9sFwnXL|ltg- Xԗ{{.aKMs$kkFGL`H-=8(Y&'&| `eh 4F:q-54$y?;7,7e|PҝP^4vۇRԫ݃7J 3/jq\Z홙;2QԖ >zЁuLFK#86%oStFRd̽꺳ۇÙSA3<"ۓ\|Q KV֌ @2EmH"PН:Nhi'F'OJ ￯;7bA|]Ewv`8ӊZIvMgF $lk Lki@-}dP)uϱִ~bH'NAuFR,|p<_06tg- 3/-UetgJ քdmM6jF@4[ԖxQFR@·XkӝNhi'F+y΍ w+WASwz`8ӊӺk3zkFCʶgy9ho?*w u֡ld88NEh! Ԉ6Hĥf AKͬe{:%k很yfkm- UoKKvWC0Nf479Ţ ()rƂyVE- ),)Ef?.Yhij?6 @(liz[ztTClã=|(’총Nf4793vn˷ ^ nj;chiPNaQя.H>ӛg+fKvdNMM U4`S-}dچG`ɔJiЌF6;YrH_\b;chiPNgQO? >ӛsIN1߾m: td{ۆGT[Z%NVNf479ݒKvnίajvpڢsɗzc~rTyf4̌dߏ<1@Jmi@\K=*Y_72"?ea4hFK#x%D::lF_ wvҚ.@9E= zc.Vƍvs3@Jhni@-.ڶQZ[gѣ6iЌF6;c*<yA(_-Z\zkdNn&?7Z[;لR@sKmNx6< ףGa4hFK#x&9FlFK^;e]BKrʋ|7FK7@(oiȸz[zpP4> uz8lm-lwNkit`b zgJ ҷݼ)YkkAs,''%Kcs6< T(?vz(: &|)lFyrvvgU:-- 79s&Ve<- YVoK1hШ_xj%ZNX@3ZěbQrrqَ4YP0?i;3hiPNQWWdd s沽d2ŏm[LҍP0$J총:Nf4WSSoC&'%HKHŕu/(yAX\'E}/=ZZ +cߗ[& e6'Z2Kҭuql:%?vz: Ұ+744aUoo~9rvn׏/ wv PΉUzsN߭D릲}iw$$S- %hɮxGԙZ==C iЌ].]zö={7:I]yAX$'+E%'{sݹr-w~䉹JK@6 ZW(8aQu::̌Pu4aW>ohhxêDno%9IN{t zC~ʹRL,>ٵ3%s>w,[1s8ɕl3-1)˯(Pu4a]>>x]1;+J]5`lgw (JQ_ˢ];_/K89)uLl.#M#ɊR{O+Wl?4ahidoCn^%H3K^ ^n@9Wz&do;V ڙ2\ii&AKKVīWM? HJJ@iЌF6;d`@r46Qd;:ҫ#Wxi;hiPΡn* >[ +%4ji AKJVđӏhqkSk 4hFK#xA۹v{AX 4(PQ+OOTP8lc('9A>wN" ~@0}(jNf47!mF}e/d!4(VQ(jΎ Z3޽%K9b('5'N~@>xc@iЌF6;Ur΍[X^P0#_.Zs];%{7}޻1--ps- "hnɊeQe1_`hidoC|_r s#ޙwmvpE}EvMi,Y}Iv(2K\liAKKVW@ oPu4M&GȀ`lg׎-ۏoݛUqh•xpP'S(%4d%aGG,q#}L.?{f4hFK#x]1=-MZZlF6Ԭucx`2R˷ȈB7R&Y VȭƍFJ7jxNJ&ۄ_U&Yh#sVS9B8<(@u(Eu`i0)t[Yɑr26 VCw"puLQTݍ eUϞ#s9VS$ի $ÞHQǀ Xd4҉oAɑ Hҝ/u/{7) s&Y}ǣX{,ÿ(W\m03) Nj5;;%{; $'~ny `H'^FF$wJ+ I^Gzʯ7) s&k w<*4b\,V.c LJZJ5i"d"W뺇%Xd4҉o1ɩ HXoN}^ݻHi0KA=P}ǣz-FF$ju5NťssS5Lī\VCC9= : &#N|+\.9U&'un BY=}`8P)Ou+Pd%~NSfq)=-KD&bm5]USSUXd4҉oiµ*Aj훈96e_1nMLHV}X;`RRJ<)YΜIf FwL=PaH'^Y H^ן^ jnYw&"puigCjX{ڒɓшYp,1-#ol,Q)ota`!i0)t[!,ѯ_,{A(MDJ Su+؋!Vo}U0{) .9xJ ĦOvJE<4F:JΖW@r;^ WArOw!pzM)߶bTRRJ0{) .9xJ߾-~1i6qC~{ΟLF=z{؉uLFJ#xV\.SSF*U^v'}}`8'w({A~X%bo=66bm~N48)}ddT4@;̴-Z`2R˷r#}#^ ounR dP*G՗+‚}zfe2/NN48)=:*Yh;:vLjGXd4҉o%˕+FZmս a=]ݻqHi0A]u~&7k܈õ5 }wq2O1ɦwBbmS.;{geEH4F:ͷ%"_FGuݻYHi0A/dN4972ɞȳgɴ i4)}d͛Hl=j554ԆYr9#r`2R7‚:Rk5/uaw`8WSެn''O-^ i4)ڵ$`r M|_ݾ{؏uLFJ#xn)VI BAPn 4.>-WZUg ׫\N_r8L INVioe `2R7Ӓ+Uuog^ Eݽ9-{ɴZwޑ̯l2H) 8HJj hr7oyU* uWNHi/|CKwH^ʪTݾ)Hi?ՙqϼw\XTD4״14՘_̵ʀB5k*j(Xza/< =k}[`5/ԥszmiͅ&;ҽIJ<(_5n?:dg*L: 6#&|JΙ6}y R $ܔmAJ;Z= ŸD&;ҽ6H W;W33g~~aCWLN_B%t"ٜ UWFGt @OihM{ݾ}ԣG%^L*: 6#&|Hn}JjUwY[U}PQ5d:۱1P_ST}J@E{mJ:%_FGHu ՋulFJM|K$wMW j蝊LwoR,BP_5ۡ!P_Y΅ڔ~F٩{ 4،JIN^Mo) s$?۬A_ƾ)m^|_B*Ǐ `9PVO۷\}i;};7=4،JIK4O{A(O~jwHi;A}ك\A.j-P￯YȝJzJ8 \._62 qXօRZ~jz*8ulFJM|K$NW%PP~gz!Z2ݾa4XΝο[zҲ7}nlx6IX4TURz~^d۸QeVvJ$=O]-, `p_R)ɍ`hI%:' ԗ?3ݾa4XΩiyIɃ\g@V6}X'N4TURy w䈩i )/6)dRrXf4ėoəmo 擯zA(?vMn) s-ӼV$[tQip- oLM5Jj&N `p_\:Gs/eyDJ rg}ٴ>YE:^۶\N[֞) U)=;+\ 7Xdx7YIRTap_$Nk龁5NyA( ]iӽDJ ꡑYW￲"]T}_k͔Jnn{xڼy JLǰNHi/~wKdtzzA(_2!r Ӳg&~eWd.=X{Φ4TWµ4ݼ6H|_ ap_v풜<ͦ^8'?!r_ɞ|%y}:]TZMiJM$ [~d NשSkskvu$i) 7w%WOc龁ou^ gђ !ru>^0y+WT"!٨ꫯ `8PVL oP##jrO2]]*LWNHi/~͒ۧt@AJ\e5Չ sdQ]X.4oŔN&ځf޽^ب5=: 6#&|-9L 8|:r-c}3HiA}axN7Mi6T2)٫U9U*((6ɘ cp_>Pr(F^ꭎ̳E@J\he tV>3#٫/ rJR:S۷D:~WQ=8az6?Xf4ėoNlo`%{ 9@J}/{m/{[d xJR ua P}QZΜ1=?`3Rn˷߷JN;L ?L) s<٨d%a6llׅ:tHwxJ)%i1_|Qeb R)ӳ1`3Rn˷ߣGk(av:e BYx8o}HiA}a8+~sN7n(ߗ,˵gȑ`xJo2%51azJء>4=2i) 7ofFxe[^av.mwHiA;%{?l`g.jl/9RluqAtޤm)in~5UDYJ@7PXE FPI VJmz$M]dB)vos}/}sқ6mg$OCuV'M xi-xׅfɳ(2(ҽǓgkEK(ȃtIeg+ɂMhiY7ol7+ &ի: 6O*yݹc:7PFn|&`v| - C3/{4M_B-yIi:7Po?OLǯ!Z,GQ3[nH˾4A&-Ç}4ڒXZ+\\WMMNr+ϛ>AXf4≛_nߖ]yT;uv 7cLGGySyz_ٵKl4i-x׋$xX T-,-K~_6}r.]}ߣg*-d^1鴶BKr9庒]+h{<㏦4،F7X?Mx4X&/}S)庒<51-2U`;$[VKMGGCX_DB=~l<@-Nhi7^|k:7F ?O;~ _L`~Duq|qA;إjmV( T~X]($mֵC[W6nwsf3L9{4u#;{r߯|Np=˱_~N1q]I>y34Ca:yR;:v`i[jmm©SVOvn`fKf F?˱_ЏfǕȢ^.)޿t:- KcWo@4ժNЕf3N_S\|w<ɤ7,Ǣ~q'd{0WQF}ۤR}\Eo`KUI֬ ^{-l Bi[Ν;Gہ x^Ƀ+G_>q<_6?\ӎH-"߃)oF]"iuR<- V֪W_Վ]֭ T*ڟD: 6cKCW6mjjڣGπ듼_qT\5{#LI;~#Or,90\\If85– ;Uovt_`S)ڟD: 6cKC]68ZX<sRZq<_0o7,Ǣޑ=i+$%|y ~{ܻ'T~1W~nN3Qfli$'?.>HC܀̷%Ja`97%{0.\(HJ3sL- U>U]\ 4،-dEק*oϗ_U7 [,ǢީιZ>S}^yŔJ[,Q(N烣{7J`34ڹ~5x`FD;{ðr,ս=?+\o\WRŷϕ+[,12"RjGMNNH&N~\ H_kBGa|a`9bIvɷk3㺒65R>84XT2 {TGvzٵkj|0jU3=i[ɏ˗%OT'.9liZu2'⃹Zi㺒B5_|}jliٳlRP>TQfli$'?.vt 9/ߕ7[,Ǣ';_3߹c\WɃ4U@ұ@ʊD:D\Wog`34#--Wvn zmx;s- cQJ͢+>Gg*5'QI $[Խ>MLhGl5Gj: 6cK#81r!60Dx`rv`KXbS9_ڦJ?7+:H44V)|^[/?x ڟhNH&N~8!yjk `9;_KZɻ%>k- fgũS;=b^}^ i[ɏ>[_;7||N崳7[,ǢrwMvgE$q]h- xCޚ=N7i`4،-d964-u!xNW[,Ǣ+o6~~.nI3O*e2@Ⱕ@Ql\WX gtTkPfli$'?F%/2ޙ/8/﫢v`9u]D+[f5--&$ [ Ҿ}TNغx1TW?sT*X: 6cK#81<@h饲?[,Ǣcyuc䊯~qZ5r5--&Q$ [ Ȉvt[\&i[ɏӧ%n@hJ||\ю [,Ǣ)Tn,/,Hq]sV| )MX 舭rY[ZL.e`34#CCѣڹFxu96 [,Ǣʲ[>&zM%vlR)I?>kTI-Ӫ#(HGhGGٳPfli$'?Ffg%O6@#Le&W˱r,](h_[,,vtY`34#˒jU;:ZyhޞkǗcKX Q-_ Kǒ[)~DuqLo4ZtvۈP BڦK5M+_V]EnQ6 i'u ոxg@Fl hq3wsL>79hGxCwvjG: &O|$7h4xh2v|!Z GQVZ~npG[- *&'KћojGdROMi: &O|45Ihڹ0Lk<ٱv|!Z GQ%_iE_~[V嗒N{[- *::kGi;rD;:`*i0-xۥCLӎ9Ŭvv!Z GQ͇<]3Z{zn&`ˢ zfSW>3j t`2ZɷKwV˗avj|4\.DK(J{3~W_Vc.OZ_lY4D.a%^;7`0i0-x)3<ǏkGBdB4׹_o_pW_z/&Z]aY.'/{Z Xd4≓o%ﵓ's9xi|LXN4Biw/ϡ%{j`?Z#\{4*!;{dP,jG: &O|>,yuwkԢ_Ў 4sy]?}՝;qCTJ,- uwK^Svnx`2ZɷGIlvn T9u<_0o- gP/˓{UCdu_D"f4DI1NKBo%9{Gj: &O|]&y8ϗMhi0E]Uo}ՙ3I&1EK@{`yS4*(9{k: &O|kڹP 5^||u^;F`8e]r1}U>d{z-/DK@d<:۷QdRr&&sc҈'Nd@Z.N;/HN;F`8ڒ ]bI;C$q`xXK QɒgOq۶hiTbrR`Nhi'R͒wiBa|fo- 캿c|?H$$qlCK@d{OF%go>܀ Xd4≓oNí_;7_fLѲv pucAv\Hຒ~ݔ=BK@dR)z8Qc$gE;7`i0-x[Up yssv pu-,jJS646Jv_EKB풳Ң4F`7%+j 4F[dٻLKcE+s6`H&N\+UYՎQԭ?= ڡC>#G n==}[ZMq_E &L|{utHnڹLWGpuTWRnI|7^&'%}8vvzT4ĭG?--(%P ؀H&N:;sqj+̻W~C;}Z GQpY^n ? n==Νoii4E.'9ڹP`2ZɷcGс|sd#`8Ze񥟟iǏK6pFF n٬d{ZFS=*9ڹP`2Zɷ׍[8с82縞`_ig@K(j-?̮npUA:-Y耩hiݒoii4EW_E &L|{Jn\ˎɦU4Vtp"'guu 耑hi WrysZM![ïlH&Nv<sqZ^iKq=5U4V;yɍΑnߖl,rY4%[;7`LFK#8Vf%Ϸ>@Edk߄QԺ^_?zu= 2ɒNiCK@>-h\Nrs6d4o^_;7fWד{`8ZWei5^*<)Y9|X;:`ZbwksZMQ,JaE &L|rvn ~{/L- /`8Z]ϭ٥WG,S*i CK@>T:9-(%P ؀H&Nr9Y@>x渞l5/`8Ẑ^fQ;~Ǐ%K?0 - jkl,l|NK).\+[d4o @W{+=vhi0Em[ K祒NM燓z=H%@K)Μӧs6d4o>S;7*fr- MpuhǏpd_`yYƠ >7o ו΍_q܀ (j0-d[m`@|d׎iO##+7`8{sKߕ9%{9s@K@|>H? 4O$A܀ (j0-d[mtT| @K^p\O6?zukhi0EmϿ/3_;Ub~Dugq|q'M l 2Mmm?"*J4[ԤjvMHLuh:FD` 4IN0~<| HiO2)\T^ 415%x\o`; 2R2Zڭ()<G ) F,,cgsoSŋg  twKw_ +cǴ#2Rnݒ 7bGHi%Lv߀y5XFJ11uY[\ϗՃߖ;'8ښɜ?==־⺒q3zHiɯ 7Hi%Lv߀y5XFJ11uG{Xo B K嘗u<_P{'UIi0EٍgxQo3JHiɃkGHiedD2~7`A hLL~ %h;/?iMJq5Պ;woSKv>KvM!%ק7`A hLL~8xP;vLo Z3/ϗUWT&8ڠsJ^9zT4#G$ I_ߦԔd qjFcbÒȈv@Lϗ?Uz&8ڠGV7vjy24$תR*i) !I&% J&#f6d,#ј:嗒ܑ#};sw|qޔj:eygv*YQ# $HM! ו'}`) utzttDZZZ$ϷC"W|[y#oE3 GPt︒++5" $U}GHi[2v߀m5XFJCW:njjڡ*Hh 8tH| h@ j| qM/|VڒIV[y\@HiI{dikRȈv߀m5XFJCm$>X|А)'gKQ7~f\Vp<{ ?,k~" $mm=Hi(޽}`) ]tiD"7@W|۷Oo@yeuRݲqY;Dz޻7{m]]'zrBJ@H:;%KH<#4td&]jFPe4ԥjiia򷻁m>=;gTd.VO8ڬT^vߖۯabBX3gD$%dppGHimn<9:`A hLL~sۭ_o@9elj&,snJ^kWJ%3  $.HM!bQva5XFJ11u`|\vۿ_o@Om9ܱlM9VIi06kqeUvW궠}$zP@$HiI*%@ڈFZ[%c927`A hLL~'ۭGo@Uύld}`AmY͂?rv5~YX+ R HikxX2k FPe4_~EvCU[r<_\,D') ԖJ>,}nެ-Pݻ+ŢTJT)`<)o0Hi4&&r[J%U{&r*eW"hjNOωۯ)[Z}=>RBJI֏6"+W$cyv߀a5XFJ11uTݪi:sw|qM#hjWV6_Ų j::ρ?) !I$GWV c zm>8gO*Q.C E-BUe:%SM N jrѱ488N(jF2q㡭M=zPo S\\q(jX\;nߖ+c48I_GK#\cj 2Zɏ~6;xJ`Em_yyuقo=[j'Yvz%Z$֣/?5XFK#80<,Y߮^ h{38]t(H<(pI;ƾV4f`@;=- rGWȈXvn0,LxC٩0 {l~uu K+766&vzZsɫѦױccNyU5XFK#8G>.hG XXZv6`LUWf8:*J/WR㒻>c}c7Ɯ>7hipWn-p](| ?hi$'?oX@6]v(98];嵳NRИI?8@K#FWW(| =hi$'?ff[Ovt{~ ‹R`E!O*>wWol|\)G2chiMr2sVQ`-dC"ݭ07w:JEKquewv-,i T48w䥱gOGhiGr2sVQ`-dF&#Ysf\]@6)?xT\8:Z/׽>\wKNffZ4n- INfOvn*,L8qB<0PNԜT4GQGJj\xLo}RڴԞ<'@Hhip3ԩݧJNfgvn*,LظyS>R<("S~P(hXod/`M@\ȅ 7dGhinjJr2wU(jF2qc=ӣ?x9uyhi0]һ>{cZZ$Ik?@K#cc7Ɨ_6}FaSI5XFK#8Q[{vn~l/ͅ((:ͼ̼vtZsZ<0>#4\hm[s&Q`-ddwO\-((׳4mrۧ0Ȉ1<Z.:$9WhL2ZɏVy܀1qPZ 7 - Q>紃oB6+\R+e48r18Z.I'x#,L8iooOj~6`.(Ꞛ\Sy3:*Y^͕+2ZzUk- dshH;7`E H&N~Kַ{sx`vOa&8:F*,ToBR۳G#4VހG=.2plm E H&N~|d}/}^S^^@6O*!&8:,.\ξ9?\ki }[[CK;۶I^hiP(?hi$'?N>D]0ij_*(zQYM.]洳oL-l Nl - I^}#۷Kg6hi$'?N%vnɗWÊAKqutudw}vMӒe>ghw%O'׾@KÑ. CQe4'ݭ[;7`վE3RXhi0eɛ]ҁe>tC- tuIk_HoV',L8n_x=?LD! 4GQGW];]e1khipCd־@KÑ. k(jF2q$nڹ˫=`˕P2`Ei;d}q1]*k}1wj@wv<*2/pKr8 CQJ8g^nwЭA`QT%mП dj\zUlMkӤ_-l\+{e^D<3wΙs߯<9%9茔F2qMT݉O UR4GP׵=]k{ [GJ@|$_ nlmU7tFJ#8&n4vc.o9Me) #O‹zu. /kdD# >ÒEG/҈Ip>o@?5茔F2qMNKf T h,( 1-) #Zy[}սK mKF~oDJ@|F8ujHi%L P:tFJ#8&q]×2 jz廓95I/MսK JFěoAJ@|%ω_ sUhH&NI\W2E9ᗫNJzwywL&m԰]S%CiHiħQr>GGU hH&NI\W2Ebc3F=)m+ܝ.ʿTuBSSagvg?R APRV}!@g4oו n*뽶b9z[9--ʲ:;%βpqQg@J@dlF|NT:tFJ#8&q]ۏ6,T\֤4h6@nNvѯo]ha!L$:sFg@J@$rRrU脠H&NI\W2Eɞ-Tnc}IiAm얟yw }՟셔XH4sm3R7JFh=zj9.U/) # Pi_pUսW]2>W ^Hiՙ3'li9)m _APHi$'$+٢U4POPo]T/) #0p#+Ӿ+rd|U7HiА4b;'m˪@PHi$'$+٢UC{·jpM4h6|T{H_dY) Ν+-'_~ m[ʝT=tFJ#8&kccx34h6 [[^ mK-_]UahFΞr{Ouj)d)ɼ۫oNܘ['xSR4GPF}-thے9e?# VǏK46?/|Fg@HPHi$'$͒y-Z`?66dz$e9 ngT7^ׯ-%0S kv㡭F :$9ǎA :#L|45Ih}'|5}N#) #JgW|c:0L[هHiU{RZNJzz$Wu߀j)d䛤I29o~}OPǦIiAm?]W|*njܑL[e~) :zTrhk+-'Q}}S7R7IWd^;~\u@ir/Ԣ խu(5['L9R4GP5T^e 2;C$G^%Qv[T#@g4~Dugq|qid-J52t6%MMnA~H`tdMv 0^JJ`{wyz;9|'|kxdS(O_̬9'/v"pMr;Ir?eXL_uvɅannYRMvnFPHiDo/$kZ"7Pf帞0)Hi0AmKY{?b¯S 1R.0<|,)pll%ѡ:҈&&ϞIִFT)n,:'lC4̝i~%^=y=R*-\,)I5FPHiDo ɚLj ˎ RBJj˼\.vG/~kJn ]]ϒM:-Ԫb:҈&&gHִfuud.WHi0Am|_^/|/c^) AK&%WTjYR{Wx}\u@A &#MLyР:P6~٩t=GTKR GPۧ}zEv>)|/XLh$" h/J ϒkv*LFJ#|;ܻ'[e|ğ p}&7dڽ&v) kijkw%%٩7҈&&WH4 ցr6jq=Aʔ4Onkq{TV7;+\4  x͒U}dPiU5F41vH$ _mmڭeEjPIi0Am3dD<.5N*J" h«)PRAPEPHiDovɂАv@>s\OP߮~R GP[mjEp'ڍ_d_33#Hi{Bw7)PIWo@A &#ML$ _ڭe.Sz+~{`8J]j7b,&\7֖ HiZ.'*Ӥ4B58(ԡ!U5F41vH&% ڹs}V8=q\OPVj Nƃrdث>FJ@Ξ\._&W%ݭ7҈&& C+L̯;'V`UvZ-h580RB#!LJ#LWH5PEPHiDo'$ k X!߮t=U3֗`8Jwf'_cڽQqU,Vk@T[$7RJlVu@A &#ML vhآfxqV7~3) #کŠF ɬ66j !d4ɷլIo..9'?ג`8b5:n<@}$Y=++~ RB%OؘdVϜCPHiDoO>f.h ӼzJ]:൤4إɬdjEy^Z}WK7 bHiA:-OO?IfX(h(!d4ɷ@*%Y͚첹]t=?~R GP[њd}x%~b\N%4Cr+">:*~PBPHi[XXvUSS䗻K${YSv߀uΏ/;'7 Xz574$Y@kpP%4 \ IR >@2}Jj0) ] T%eI57k X/~v\OP'ofN'`8bc=9x>\ٳ#JHiAGJp") --qPBPHi8Voɓ,Na*]/ GP[u*+8x b]d ٫9@dtZr8qٸ&}Jj0) ] T%URקj8"&_ d챡 Xj@Cv8T%h +5T EƎا'dEԽӺeik7XPS3o XvXݺM[j7nӧI ǵ7Hi0iJǗIivdVP: 6#ѣGϟY---L~ݾ-9np,Q,7~,GP;lACo0\nݔA1֓'409)>o4 Kɬvvj (auÒ, Y-&Fqj`9azSvtYHi0VHiǒYݷOo@ 4،e{h k\ł-5R,GP7}/7_r‚v) f+ ) r9ɸ.-i h`uŢ"pL#bA}]`9m-M?qݸ9J$1R,OHi!o: 6#'&? Evv߀kIp!MW_) #˒7حyƍ:yRrk`Fe{R8 3g4NHiϺ0\dv߀Lւ(l)U_) #Z Sڽw$i4Hi0cbB Ӥ4ko}Xf4gZ"9rnpڝ-Q,js`9aS3ڽ&9LҺqCu3$@8MJü%ѡ7ulFJOL~MMIα|^ou 5ʧHiAS={7mbBrե:\GJ##M{RqMxulFJOL~ KαN xj`9an ^fW6ٵ+yR{83$@kcRKƵOo@4،LK+9ݭ7_Q,?) #w.xw_j7Mr7ڭi4+Y ) J%ɸ^7ulFJOL~ IαA&a޵kqMxulFJOL~}KesA wHiAJ){V{Wɸvwk h`immslpPo͵$bAo|n?>+xk7qɅvp) f H0\}_0lxX2}Xf4gZ.'9J%oT(Tmqu 4Xv w|aCq5nI.Z[[Hi0cbB/Ii65%|^o@4،zLrU.kxctEłHiAJ){V{WN."JElraqfSu8i) ?155%vYZY XP_=_) #6!xķ_kڭ*$wJZ]]ڭE4kdx?0/ %Z.k : 6#'&?zz$Xkv߀g (l)UNJj]=sڍ+qCrם;94s߶>) ɸk : 6#'&?bk x\ XP?Ԛ ) #*x}ݸ$ %zMNjp ) Ɯ8!ym ) >P2gh : 6#'&?j5АvgjA 4HHiAf/oo׵#VM?!ɻuR:$bQo8i) ?159)ҺySu?&(l\BJjWUM֧ U*I r3 +W$-4;tH2߰NHiϨӧ%WX&ڭxEł-`9U~\[ e R<[[u}q2.f8^:VФZFSVZʥR^FZB +pla[\E>-^n{wE0Y>|9u!a^W];:cLFrv݀.\ H&V ruRm^}Q]>@rtu~^4'55 a^O]3Xf4D;Wruwk xi\?þ-HiAT''څ[YrccD LF2S4f%sv݀q`3R~%_Pp>}4XNק{Լv,ߺuD ^į9OJü\NҮuƱNHiwT|O 1_ZHvN'E?]E j:-9[?'RLg9EJü\NҮuƱNHiwݒ+l_z;#[%Rl:T{--9[IHi0f.ɸ_8) YIk : 6#':QCC+,K˕ .cO`-Z;6+Nkn(K.oHi0_2S?0WҮ߰NHiw d]70,GJX1C ڵ[7%K6m.##Gd#!aX6+iם;cVu[.W~/ Bٻ'W`!zcE6kgw˷TTM%'L 2R) r9Ik : 6#':Q +u|>#[ N'%kjnN q2RLjh%) r9R[a ب]7}QثcNJatV6]X.j/J55i`RsdԜ#aX6+aXf4D( %'Xsv] HZ޺]>XxRJw˷Z\]FrįPЮ".ɠO.0Gҫ۶i : 6#':E*9ZZP.*?>=rEbN։9 ;dwvp) &m.Ի4 jGv݀q`3R~]qkiѮr AީE`N.g?.i'$L2,RL T) % 4،|m(96o֮JQJ^|s/|u:Iڎޔ 2[(ye,RL wIi.Mc6 62]7{a${w|u:1oOc}]3ZZ$L_.n"LF2S4 koАv݀q`3R~]*9\Ѯ=*a${a/|u:1޾$jv11!e79]:DJI)_Ssa--^=tHn8i) ?.`ŢvA_: cy\ݢv.)$L^yEtYɔ_za ^vMn8i) ?%WcvafFާ_t2W*ҡOMrѤBAt8FG%S0ifFҨrYt8i) ?9sFri A싂P^:8ϱN'%DN=[hWiE) RLڽ[2W:JJäG%Ԥ]7ulFJOtsv풜`7k F HX36+i|NKA RL`?9R&HMn@4،|twKN^Ӯ7W*kAߵGXOWijxowRSЮ"%#JJ$Ynݪ]7ulFJOts6l`;vh 9 oJE#k abN<\Z.Iin֮"ɈFJäAI h h` 61]7᧓sA/NGa~:Qt&o:wɯfIlVD5& f.bәLQ& M.^.Lt:I޽>{9/9ZC&]q~qSn''~˖S~zuF-BdLiҩ3iDu[/iK 'xHJ]ݿ]0O jOC?aJ7ѨJ^(7 u)p24r54;t~؞K)ô*9"jDvu_i|\j9roz>}gh95M+]4bltzۻW9~\:o) >S{7mz) t yX Ș':_/*ב#y1F҆iU}uq>B<7|oednMK봦@~?H6N) >kiQy{}4|եҥyX Ș':_/۷_y1DL˨8f%Wa/09zZm<<})U0K쉥K6OlOkiQy#;}*]$7 u)p5_嘟N쉥 Ӫ<"֕/V]tGלּ8Mn9>})$ujv˕|ɕ:t|ZVZxJ0g*a0F.=|X:o@4SDk1㫾~qS1 R]eĕ/V ]Kf«ϥcԟO>vu ;[YbL>R֟ t5AZaJϺT') 47tɓyX Ș':_#*WStL0-O"bZKK/&J;.&xyj`\ i,dKuK-]GhlT9pm[wO:u) >;}Z}wMSJ޾-7 u)p5ݭr|=*7U4 פkTx:ݗ3/N_%KҿPX5+p>7r\2jH[ʁSvԡ4,Uy7m:ÔoT4: AƔF8Q9NaUDL+]+:+G3[~>kO,qLl:gk XMy1YD+HRS^}U)Ƕm٬tS|68oS,ݵK:o@4SDkG:uJ:oJ~A0-ck terw2 o?1#Ţ/ {p9%]JvM.&೷Ryyd) |J8 7 u)p5ѡruwK @Iqw $ 66YC7rvѕ.{,,9Q ''Rۅ 逛f“9,IWSkg^)ɓCLiYOaJgΨh[tހi24‰Hs)7U^r s0*7YG|ɝY=u-6iIVE7c 􅛹T3ZcL)"]MmzeҩCLiYwLiSE: AƔF8پ]@3EôkYVQam}pzחR3QͺK ^u|NVqu1xp3']MJ$TnrJM0g Sx%=}Z:o@4SDbaA*ǹsҩ@y2l>OiU/KDo[BwW3QZOg+镵uPXwg=}mRj /9GH M0gcc*/{]ShjRix\:o@4SD"S91;+: |7G~񇻆iU5>k폧3wx\^):-dnmz?eKh:vDsF;`޴='[3Er洶J M0g﫼O=Ĕ?TZt~^:o@د(,  +ZF# IA FQ525 +>JEDņa^TmtR?e0JMevFFsK(oN=%N\I LHZu@Х!8ak,#Xi)unvi;-qޜF29$׌+oidmUrXZm}2MrN+fTI?vT~ 2\D]@y,'{r:8rIj. ;_+YFwc6O^BUґlx'qlg 1yGڡKHI3_}:8 2; upJN٫]Z,IL̏ \aa˨y?ίx QCO"Ώ~Z2ww8 j U5c]V8z=h^nF~1T'2zڊ̪wG8/5"s^}rE\헿ZW$ﻥ[NE[yq9!A/{lT|աaĤ~ljU?ۼ#J 81}:82önR}EEEʪ^l.@le+v]58^l+nmJ:5,4|䢘}wWS۵ȒN|[2o>2/H*\kd{wTVV EL+DW܊S9 _WEໆ_Ώ\e0͋\I {0ȥݦo3:8p@JOOPpxx8bAT!$Ei{8/ &Gѕw]YM5;CRec &tV{Tňu{"uԫ?~?5uqٙiqYwVJ@P17 T" ڥ% DŪEQF* aݎVI9|?'Os_ڿUGk\{͕÷~~4r%ݬ۬Կ{?(z²ß^!֥4=h?/F5tswX.S"-"Ξ9C]8hQ\uoWUU&''f񕕗+w*,8_EEuNM;iY$iI'N}q1)ovWO^hey!^?¸7?i,0+n-n>h`Km&;xjB*6nmì'g"Ydv?ў\8N#'˚~Z0EY(*:tŤ<p{ao:iKh8ZMJŀo_Gѐ}L ^|}]oS rۖp7^K޻a%,q B s/W٧UK{-JO٧xty6~+Y힦o H\cc<2a5R UPӐ|B]75D) />YLMQ #ҁdq$ᴜnt%p-8('WHXnG#M]ADNn\h7-]}JǑ{ Ӂ&ad0ٳzJ̡a bdߍo]hkM⛜ uj@>RȳC]7hӧx_] ~ʾe<˶: [1~t>n;xn=up d0uuu!ԥiaJCjB ݤ`33ԥ@2`J0sѸT:}/Oc@MNH:AR&Y힁XzJAL<8 @h߫ iBRĀ40!5g\rsb1 0Ih!pk/*>_ՠo{Y$AgW8ԁ1y.>8[8 @g?pnА-[xt18 2LiHM|UT\$H\,42)U-A՟2HRH<޽up t^SC]7h4O7iaJد+cn򰨰ZQuKggq'HD::: NTyIƖyŊK}mNΘ(LtT‚50eҽ!ޙ*%vq,nT^1ˉGtri[&s~{h?hU7btNM9 cvHFi!0ﻒGf ̭Wפ>sTC{ HJIGGMM)_P mNΘ(LtUÇs4 .-z ( umLǍQ>^[y>|O_}͓vUo(:SҭŒ_ ߽-f'A41.(_P==mNΘ(LtWΟ OҀV[Nt*K;:E1j{W54MحSswAsgW({mJǍyŻn Cse޺DG7go;KS_rzg獬Tע>}l.3bI*T.ǨWz_΍0`Y'Or]3[/)QNutƔFa5ve2ҹ S~ae_9}itq'2l]6w&b3?o ~4SNǗ讦FyX:7€ud]}y萎hutƔFau!VY)@0cx~TLrEw(F*fdČ [͠"Q+qntZYRi᳸(a: 2|P]]fot]IɺKG4: :cJ0:Sjks4Ytt '2bU$QH4"fu(%FU;bV]1vo|a3N{ "4ñ23 /gߺ~&Ibm'(ו0`qʋQ~kl utƔFauޮr=*@0V/Oys nE՛ٝ;7;UK~LQ7b6O:-]]N{ǍZ cwQ7"V]wYffa5~N!r| i߯w]STZC:7iSY4r57K?Li~ֻ"`s`ޙ*%?JRUftԪ6FeieMɿ=?' QO\=ҹ +w}PKGGh٣r7nH: :cJ0:SΜ ;{unmww]zۋwwjN<,>}罱}keIgݭrDҹ +*T^~+J|#: :cJ0Z\TŮ\ 95I*WҹLiɓ*={s#Q~ *utƔFaݭxttÔ1X]Uz#$k_KGGd2VU%4)Dk\+)Y}) cP11r&!<bE-NΘ(Lt-!M}=#*b5Mezɂ(E5# BD~ 'ah69;9ytf}~`q&&"UK/KCIiʴ4dkb33сgJK!ճcGvtCKiSGb";7m39^Y[ˎ%Y*tɯ-6zeG)- PslvtCKsgw8̎N{ܿ{CUiʴ4dkڵ+rzJvt)jY[~ \=E~w/ΝPu2-M7כ~?rbvtY)j3zSSi- PăMz5;:qXd&&0;:TeLKM&bwNvtY)j ^=7ndGU4@7G~s{sCaiʴ4d -7avtY)jٺ5rLN6i- P'D~ihZ3vpvn(: PL~AgDnhi5DNћɎNhi:n.KKiȀ= NT&_`N (NQCKgΟώNhi:VWpzvtynvt(: PL~A7GnkײscSpH贍(ٹi#7avt(: PL~5Enhi59ylM iiRN;vd ^=2]wgڬiiWsBhi5<~?r>\Fo?c ͦMzPu2-M7j"؎ٹ)jxZ׮EN贐(ei)9n ;dGڬiiW3Dn}s㡥S𴦦"'-/gG4@5[Fր۳sStpüz5;:fLKM&-ٹ)jx*++M9y͎N;iij"=x> njNT&_l;t(;70Z8E O孷"]vSSիzPu2-M7jfg#ѣٹ)jxrMwF_NZo .۶5avzJ:x08TׯgGiiW3Dα_%- P'9vFo>0zneٴ)2N.Y*tɯȑE6dCK 8t;CZݻ+Tvty38N33ѡ iiWsX";|8;70Z8E O"gΣwrZZ [rvzٿ?8K/fG6NT&_\";~<;70Z8E ׅ M9sF (h^ ΝNO%3WWCX*tɯСE6dCKnlzȍdmj.ǎeGӧ45Z: PL~5*p-,dCK1~?rl|ٟAii~! ѩd ݸZ: PL~5{Dss㡥SGDov6h9- PֶmܔqvpÜl׳CKX*tɯ׋ewfCK,/GN~ ZNKuxd7xܔp|iʴ4dKw/rp- PsPF!- PGEփsSJC{X*t//#G /dFKr"ͣ7ٟAii"d>4g!xriʴ4dK9q"rۗ- PM9m6 Z $sFl Tvth4@eZn2F7 (NQ_KGϳ?煖(k~>'zbvzR:3>;=u2-M7R~;reFKaf׮Q>bn:P) 9AM=sض-fyEP]R g3+HcP 믧z: 3)M=yYІS(Ȝ._}}1ç('J93~:1=z Jj ͛gNLJSO^~>md$2Ii jBQl.<9?nw\xzttW…@/Sr&'/?f̎vX{eٳ1;jSC HiݟoCt8>$fa!E|u gRz16u*LJdNPSW瞋VV;Gv;Tԃ)wo|O= %hDQ۷SOș|,k TޥK(bVJ=!r@J/,t:nL=01P 4@Τ4шY:_&2' BQ)Oq#Tԉ)=9_3vJ=ja!V+P 4@Τ4cb"f_k6S(ȜVV(_9{8ömMci)HCkLCU9ԓsb$2'Ν1(•+~4@_~7NJ;պρuNLJԻkppD۩ I?ȜJÅ aǎd30_O=$rȔ ibLM7SR*Dș&M6=H_CŬl O2';w޽/f%˳{wK=!u%rZJyd(j%#ǿ@9Ҥ5==Dj/b_Clm O2'uV8y2E28ȑ"rZJėKxy@C9Ҥ5;;iӦ'IkF#fk|T~9AMZ\ ?f yv97) 5Rzp0~VVR :E?;Hș&٩w7ࠗf3fk;v,2'[¡C(b?￟zNy[#/!_j kM}{u gRzl,n IJdNP[~)>"fxϧKJlq#fhSDWffKKQr&'/?cc1[+¤4@5=ay9̄ᘍΥGJl/$bH=T: 3)M=y:_&2'r /"f׈8/B>4@No${$xssah:?z"u gRzhĬo in._ts^y%kIieJ7z"ztiIilj1 IJdNPpJص+Er}:GEJ/Saeeg"ɓ]uѭ[Cz(u gRz;1D{edž=1 Egh(ܸz~X-q|uPu gRzqph7P&) 9AMrar2E6{Ȗk]u3g6x&WuӧzK*]8'RNHi$7&TJ ) A}rM Gtz֦lVn=ivVJWT)u^uAm >:ՙggji ^-eg'^e{@NHi$7O9=YԕoX>S[&&T.kqɉV WOR)vwmn1 9O尝pJ&.-ip)d;%6yͭ^7ؐ8DؘiR86~ mj5_i?KpdtܹӰm izZh}]nr9Z[j5۟h`@~=Xx jeE6ow⅋) ?Li4W0۫7oloH4F2qrɛ.n!qN=ܜy&Ų &R&!ey3qjJVWupG><ԓ'ZZ&&/EJ*?VOil\񯷪>`S) ^ԛk̶7C_ĠNHi$7)ɳnnĆ9GGR*eR&52m*Cl_~Ţ<ʊ_VOO׭oy79=u(9)yPTKNKl R=TY}$NHi$7)&ϺERg=43#3 sa4>\*iXOit팎,mCB`oj5{: .#L|,/878AIyId /U6 @r3?Z-mz0lkW{: .#L|ϛ Rg%_V>of㏪syFNR-ݡϝ;n ﷳ# up$u\FJ#N1yML^7ؐ?hjʤ12̻3>,`u\f/_-B_}߶ժ::B+: .#L|,.m@lHip\c\0͛n+4,LJwu-EϞŴ-\?gٰg$u\FJ#N0y}u ) 5U.kpPWDywƴ=FI镕?Ű5>n{@RQe4C'^*Ză~-癔C0--u*QPҠN¤q5/ {LloH*4F2q]N=Id\'N§A ߠ~)%]twNdNHi$75&Ͻ\ăEԧZ_W[IdgxX_G{ǁˍ: .$ߏDZvsV."8/lH<4F2q]S(<)ฐA}z4&Ro&'U,juUnr9x_x}]岖u::% yjmU6|88pQeQݻԪE_~G "W 4F2q]3?o⛚n qAR&/R6RI"8zH ϫXZ^N:LFasSjd4%4,”߯",wu @ԥR省Ͱո:;O.^WP7oI(2:* ȹsnji_* @ݔZS{2hp#>0: ҈'^6SS) ʝ1ON%<æWu9:T.Ç'N;d2rf~ erRFGÿD v-14v++ɕ+&&¿<8jM: YO];{qΎtt)ϟ~0: ҈'^6wN) ʝ%3xq)|J(33ؘ ࠜ?/[ >Gdx8\,׮ܾ-dOOsp Kb: EҩgRZQڲV"MyTNf4≗ӧy&`k+ ЄHiPA]JޞPP LF\ ~oߖY1I/˵k$d῟e98r : E''we+jf6.І: ҈'^Boe8nm:HiP%AoVKLL}YD)7 v*%leϳs\5u4#O| '[`) =7ww KBAJ%P@RzeZO&C[kkm ~~r}$CHi/_g±`L&]U4(נ~=)##&ExW_I"@%4hiJ٩ܺeww %9׻T^: ҈'^NCC# W^׫hm-U8%+ŨY)d{{| 69CMpn>Nf4≗?N.:HiP.kʛ]u4CJ/,,==rt6tw[j?4 4hVtg͊yr~t/ÓF1㬮>Nf4≗V*Cbz,!@ߗ|^<ϰvY] `: 3,DB#ݲKdL@}834hFJ#x7n:KHip%6Vfmsuimd j{CiЌF<5{p`<)] 4ԟ|X̚jk9)\u4s{{iΆCD{Hv}'Q@3RWpl\[su6POrfX@ӡNfR:Ö+}kkpd2TݼS,>$#iЌF<1i[`) yի-ФÔTdj*z<֤/y'VW])4hFJ#xݹc8rpd jHiRp͜:C I}|p^J&'϶o2STR&cpYݿo;8b.5Fxc,) Oz-1)z__|_k[[2SEEd8=ǃGJ#L|UI##Z]mt \FJ&^N3كN jhK4ɓjj{DJhcqze&ԅ jp) .ku uun(́ h6CJ#L|) -mnjbBQd>դX]džg!e4]Sz_|ggyV hvV˪lkP@{ &^N2^<= 5:(2fR ݻ8>ԉjp) .kW_)wef;*Wm5Ra7q8R@{W]&z52R\NJklEe۷C5FxJ6SvgvFJ]b6EMNѣHPHipYh)]5=\N٬:;_v+o_yE*tㆶmB j )0=h^d{M#xmeECKݭ^ŋJ5ZZҩS:q|uJ|^ss>BPHi}e2ko68}!Y%zuݽ{A .#e*4?'Z_?ejp)05=mYRXgΘ*iUO>\G{X\FJHgGikdD\ϱOe? e4W(RGI @sHiI[T,pDIwU58\FJ#L|ͩð?=&P.kr|,IHB!e42R=|l^vwaX٬4u}|&IT(hqQjo2Rz{8Gy1a򄔇Ds*0PB( YQ1L,&;@(a0(!lMIaxγú6wArB JSU533Sg`RZ{O>2r%nmt{B Jd 5@f*M]O^WtퟁU(ܼY{'@N׮Ş=.35pXjT 3HN2SiZXXX~fffj m[rv}d{=:kťK1#4@f* PdTpM6yϻ3gO}r\4MãݬoKKL2Si 3 pn4Mr^~9kB Jd 5@f*M?yĉ( qv4Nt?ҘX 5@f* J$'4Owc˖(z4LFqhaU[M2SiT 9L'/"}uijMggs`כ qP\0ׅPd4@rB JO^z(;V{o* <#7n͝'Ν| 3LjT~'յk4QJ˙J\ 'tr=ׄPd4@rB JO^۳'Ji?ǎ^Pit$<~kH2SiT 9L'/-.`+Wjx=M˵S:{v _{ys\^{P* z΍2+jB\Pif3$I5Z2A OW^\8χg{L2Si 3fL^vvbm-Ji3gzo؈ZpsDܻ{"4@f* PdҌNfQJ묯K./{j 3LjT1y~=JY\{(mqk])_|ҥˬ&L2Si 3fL^>WDQJ,Ͻ7)Rivvb6k=_^fe 5@f* J$'4cYX_RZgzoى^52L2SiT 9LC7iQi]nw{'4@f* PdҌ۷%̩S1^&Dr%j]^|…ˬ>L2Si 3fL^>ގR0{bc#j]^_$5@f* J$'4c%˽7Pi66ssReB2SiT 9L_;,a>&0 * ak+j]Ι^{E2SiT 9Lߝ<N;7էC[[nk^L2Si 3fL^>w~F:ƩS~sqp{ijT 3HN2Siȑ(uj 2}pOۏbf5@f* J$'4c77olѣ7Uo./ָz2S$4@f* PdҌ(u&T[/D 5@f* J$'4cykע(i&T{Wx1Y|mMK2SiT 9L曨5Ji>&SO'7zo2iB Jd 5@f*͘|Ǖ+QJ׀0;ōט:L2Si 3fL^>9z4kQiA5]Zz1L2Si 3fL^>i>ߎRw{FaXtsk;A2SiT 9Lw/>JikJQi^pjT 3HN2SiܺF):TM D2SiT 9LF)mm5O?` 3LjT1y[oE)MsXܻ{ X* u+f_ؓ'{/0L2Si 3fL^>QJӜ8y5 =,.K/A#4@f* PdҌp~)Ji3gz4 e/o9Pd4@rB J3&/C;v,JiO>0gNOA$4@f* PdҌnߎZޛ@b* 8w>{Q 5@f* J$'4ciQk4/ܼ{Ja׮-^cTB Jd 5@f*͘|>+^RiwKzx5&4@f* PdҌ˧|//RRicZohqN5&4@f* PdҌ˧n4ѣ׀Tmo.z16L2Si 3fL^>Kqj4˽׀|TZ/axB Jd 5@f*͘|(ij;wzɨ4Lد>}sojT 3HN2SiDgF)Msx wv렵j 8e ڒHL&JP 8R* 6ViZ"֙S'BHH <B`{מu<ô:׮E4L_ϟ\G_ 3LjT~y|-q^{;@* S,.փPd4@rB JO^>guƹ{7zHCa|]< I 4@f* PdY]4| Tnk?Gsv7L2Si 3|^ZJ\0MRq<L2Si 3|R/D/ 4L8<;7B Jd 5@f*M?yZJ,/G=$05njùs'zPd4@rB JO^>gjw>[[ @4㏵Nu/]kO 3LjT~9k}VKiOP* S`oΞ՝5xL2Si 3|`Pk); @()~/&4@f* Pdܽ[Ki JäuKK z ^L2SiT 9L9q|`P_8[[ @~ 8wjT 3HN2SigffZ駵ƹz5!'0/ѼVL2Si 3f͛… ~~ZJ,-E=&Ço8uo/zPd4@rB J3=33s֢L+Wj)-uu0z Lxw%5@f* J$'4Ƕ766xծ̃_A}k} x9B Jd 5@f*M?yӷRZƍO * Op>$z^Pd4@rB JO^>cvB-eY\n0B=8ށ&4@f* PdϘmnRFϞE:DPi8?j8v;0 L2Si 3|ѣZJ|eCɲS zxjT 3HN2Sig̞?O* eeƝ?ށ 5@f* J$'43~/RF* dkF 3LjT~Zs|wCIS5Pd4@rB JO^>{ ?NaR4^㙝OF 3LjT~;wj)-Aة4Lvrߏ^&B Jd 5@f*M?yoծ<7nD:JC~{{uv宝^VB Jd 5@f*M?yXZ!67k)#OgϢ?K!pԎaPd4@rB JO^>!=џҐܭ[m8 u0ށjT 3HN2Si'un2|ax4$rΆuɓ85L2Si 3|,/RFWK!Ǐ[nlmE/ 4@f* PdO+Wj)#D7JCf.ܲf5@f* J$'4蹕2G7JCZծkeyuյO,=~^X!1ͤRZ)QJK[?)*TozS8ܔ @xȀC=M~~Bkf[k;{lE P2- P2- P8E P2-M7dۨsZ.- eZ_nr9vE P2- P2- P8E P2-M7dYZ:.e Ps皜b^l+E P2- P2- P8E P2-M7dY\:߂NP&GkVdZdZpdZnGUMoAhi(r#lӧg)jiiii)jii'`U5uvii(p79&5@ɴ4@ɴ4@5@ɴ4dea!jsC4&$h((((|,,DUM~?{nh ;MίI*{E P2- P2- P8E P2-M7d|.- Ez2v((((|\U5uΞڥ59&^;CQLKLKNQLKMv>Yލ:^F٣C4ܹ&'$u++ `g(jiiii)jii'jTUNXXK^oכo>z\Y({4@ɴ4dȑsB"- %&g8pv(vqL?ǎyh_ȑ8qtflme/\J&;DNEUM~?{nh,/79&{7{zv(hlc#݋O? N>G?^133q~<}t4@ɴ4dh0:}=7HKCGXaadZA\ǏǾ} A-8{6n݊ `s(|-/GUM˗iiȵu䴚ʕ5@ɴ4؈ᅬG?|gOqVlme4@ɴ4d娪sb"- ΟorTMRױv(K[[q~,,ġC5ln.ֲ?\]udZnIt|T iiHu䨚 E P2- Q,,ā͟9׋;w?kudZnItXTiiHz׳@+5@ɴ4JG]ٳ\J&;D{FUM {nh,az@(jiiWz׼yx0Fu: P2-M7dY]jkײGiirjsj'@[5@ɴ4eG]һfdv6~%xmNLKMv>Ynߎj'OGiiH^sjﮭe(jiinl}FhudZnɲU5uzGiiHq\Ce^-R%@<{?ssQׯٕyx4xNLKMv>Y33=7KKCF&$/f/v)jii;?3gbodn.~-xMNLKMv>Ysl.- { 5ɡCyh(vk`:&F/x%tOgsC4of 5N]Ǔ':E P2- bkk/!/"@\J&;,ׯGUMkײviihViɠJ]iu5Njr?gv _r(|,-EUMKviih_49ٻ7ɠJ]ٳ˨_q#(4@ɴ4deq1j :EKCط4Ε+ӓDQLKɏ? ,9r$VWc¸N8?/mEcW!UYH-ЊXb =h6٠Tلlu8ޜ{gxf+ߋ&~3 ČFX25%.Ri~eoe=3Rgo+j`@j5yMYYeiezZ{Ngjɻut<~InuUc@L8N@Hi-33bLOI!`%\&[vCP@HincCFGݯ*>j`@ed iou)m-Y^ӧ~ _] Ч8N@Hi-"`&']6?jeE{! f4>' 28~I)efS.^7-räΎ|TA~"'>qbFJ#M|hYZcr‚v@X4F+Y1ٲǑ,bFJ;[[h_O Ae{Wz=J~˗etT/=}4ČFXn1¸zeW&&*bFJ//K~79bU&[[=JJT*;pH+ZM1&w٧@+2wO{" f4~o/.&29)kk0Sھ4c~_ɓr玏pH+ZĘeBJa4.y֡B#CCWʊ?eŎ4ČFX2=-.RRqٕJ%_uh# f4JGR.'ړ~?_?8N@Hi-O1)Hi nWe]Zn  f4ȝ;'Yr9JQlJHխ27 3RibCS@RHi >sْlj3R@z=9s&PŋrGJooK&YMC!m@8 1#&V>LM1>$h4\$[|:"@P@Hiqؐjj5Y__Jooؘ 8 1#&V>̈1>$|{VޞvA 1#mq佰Ɔz3S-V@"8N@Hi-"&&\#[vA 1#㧟ٔR^zI>0)X=~\vw=5 q8 1#&V>,-1kaAo ,Rە,sُl}vA 1#_ebޑ~Z:-XJomIR{8 1#&V>bLj">e3UJ=@P@Hi>Te{G믵)pJH_}[!i)4cr} H ) x5;Z_n  f4]7\u\&ONG*ZM f4ʇ)1&w٧ҀWfT*ΎvA 1#hd~庑LZ-_{ZW*)m?OkqbFJ#M|hcr} H ) xufTi3RNG],7G=Ŕؐ'!8N@Hi-"]v"[.h3R@xWHx8L [oɝ;sA7wwԩb>ہ{@8N@Hi-KKbLZXY[sىlmnj3R@H;'YxzJۗylfh(|zP)4crW7) 35i3R@0 \1Y"C-)VQ$A x RibCK).Rgde'VFdj) +WTr_LΞ՞ЏHRzk%3ݽ5IPFX29).Rەre'n! f4^,s\/jOM<)}ZVS'FJ#M|hi4ĘUk EJ|6d[Gdj) 7$/[/]ҞЧRھuEAJ#M|hyy1&w}aҀ'.lCY&:"CP@Hi^ݸ!0UŖ.~ݵUEaPggH5ƔhITM:AIFP߫"X(A2)'s9uZ9gfS{ ()8в R8!ժ5417!2RɹrEYqlx=a0_{盟מc0 '6ZŹܕBJ'J[=5XFJ8 /ժ"=t')n//k%1҈-8ִzNի>wPZi{jPC|Mdܹ#e3M+5D2 jS4C8zNԔTH:!2R@y(xJ[/G0?XgW10A Rbe{[][[}EJ;:Қn&`) ,$Oz9XN魭0A hlll[###l>Tj\Z_-~yJkiIuDPe4ROZڭ*,#GRx2*I5 %,-i^B j)8Rsk}]oHi\>ihj˭[$OJ'hfR@)==]t _מ ( B4Cʊ8S@THiD%Isljwjнo/dT7?L{6JâO%҈-\JOQ!ݾsuv0Hi]:8ABF%ܸ=aakEafF{)ؐ҈-/s+=DJtՓ֧jjЍ|,dThf[p)]]Gg< j )8r8Ο-R(K#>WА0,#믥Ry)dי3/ڳ\J?|(IRh167g< j )8r8S@THi,_}s57:l#2R@mgBF>-}=X BL[ GA '6ZŹܕBJe9wIkwWuFPe4g9 +IdoO{һljw :҈-8׵zJ>࠴ڭ<,#<26.8*c zJ?μvНЃ)8в"R(ؘϥ397B@Pe4?wߕqA7+r =?smzP@#'6ZŹܕBJ=~s53:B@Pe4en-pl I&=dBONG=W(q(FJ#Nl>,/s+=DqZ]n! 2RևJ8j5i' } [$vp>jc4CK&宵5"^}IkgGuHi N/I ȮJEAJܜvp>jc4C8u"U'fSuf~_:03ɢf[K[GtV+SpPAhتPۺP|#"ʢ bX\8E7={|?wy>3ĩesxqLj5Fy//_ZƊ b4J+N:7P.ZѰ@PPe4=Y[FCQeSQ@|hi͇'Ź“$fqgs::AQ@@.\PgOZz8`15ćF|Xiœ$fq^F#E UFKQ2t+^S"riOo݋}"+j -4*+ )40VKs,,XFP(j2Zp(wgևLFd--+ݶNYQ@dhi͇nW+N &4J/^:7P.ZEkΝ΍PPe4,~ZMŸ8 g}ϭ;+j -4sӱ fq{ E UFKqxT4oi1޶>aliz/áuzx[E Ѡ&6Vmq,-YEKo ]7ֹ"p뚇^.^,>a¢l@uzx[E Ѡ&6VZ-q4ֹr,>Xs70=BwxyՏo=*[[K^-_y(AK#Ml>\%ˬ%gϤV5gXGGP(j2ZW?hѐWbm~ 5āF|X 9Cd4>qQ@hi͇qZJDK:Ok|ng{n^ t4P+5@hi@qֹ ]^zf.]>ƊL[b/j-40s׳ t\1ͦun*{Wj5}40I-᯾N 5F|vŹXJDK:}b΍QPe4Pe7owĹxQ)Dϟ< H^E A&6mq,-YJDK Ϟ+o#@5T- TGCܴ>BK_H^ E ᢥ&6Z-q4ֹҀ͛%::DQ@@e?|/㡈Zz4+l@R(j-40ns^,>Ts3ZGG(j2Z-s}{{CAƆr y5F| 9t ύڹ@Q33΍dQ3ZP4{d?xVVpJLƆ?zaCK&n>tZ³ - -yV #Y5ČTp9ӴZa4>N?GaCK&n>t5hhBKt:g%xɢ f4P[OÓ'C ի?iG`Ұ]o Ϲsa<֎T uKڹ2bFKd'0>~}0ZKon v[;:5M|jsюT i4$oʵkڹ2bFKU Y&Y'asS`(CsG;:5M|I@%hiYɛڹ2bFKU~]O, ݮP&-o52XZ6qV  T-yPyP;:RFQ@hi2.3Sd[ziI9,,h`Ұuo ښvn40v[3hGG(j- T6~|i88>g?PEvnV,jH- Pn Ϲsa<֎lJ,AP3Zdܿ}T`Kю$E a7> Is@hi`z5YX΍Q3Z@gi2ݮxH;: 5$M|sY_׎7;+yMn΍Q3Z([ΥK@H_1?IBK&n>bp|pZڹ^<%kGG(j- ԳgGBlիod8ԎE a71e@hi`J}'yJy\;:GQ@hi<^^56[zsS|vt,jH- bp,-iGKSZY<%YcHE 1{ 6[z8~>.@l5M|`q18Wxs壥)j<%AQ@hi ~2}쬬>mK/hG`٢$Ұ,- O(- LcoOjiGG(j- ^/x/\_pnxRbSkGK$H>|飨 f4p{ͅH0ٖؐ>|;d 4l#w Oc@hi`>|飨 f4pZx_> `_S%f@K&n>b$(- LcnNjڹq&P3Z8-~2}t_0喾~]jG`Ұ$Oс[qC;:bFKbs3x/ܺ_w[<7G4?%GK&n>"Q Ͻ{ڹ[z$v[;:bFK'ܯM;y-};ʲƋ"GK&n>"q~p\(-  8(j- `Lo6އnW"L(- LC8+(j- a%Z^|S/k`E 1a78>8WxVWseuۑvt5Č66k}tXH;:(j- rpjڹ2!y8YZҎ3Ҁ`Ll:އo> "FKz@;:(jnHYqo9bh%n+yWB&r+(0 *"aSBG,0pð^|np|iiɧ~Cy*>~;:l- /)GoΜQ%ҐۍTUq#P6-nɔgO@3(jiiɧ?CHӧsG-a3O$u+wzjDQLKC'7TUy3P<-37xrG@QLKS>| iȳkWe'ޅHx2zjN'wzjDQLKèΟO\+@K;x25P%䵺sY---hV+0TUlsGa?Φ<Y\zQ%0LܱիmBK?;:dZΞ=#ݻwhBʬ[~iKrG^5@ɴ4d=7n-n'^sG@QLKΝ;wdo>02|;:l УGE P2- nn.qLoEy3gh]RntvsGNQLKS>|w1YX^he%hrGv5@ɴ4oM\ҥܟv/ԝ(|nǪ!<33BoX5b5@ɴ4;wT='rې;v,޽^@)jiiɧ4RݻRTU|8wzjGQLKj} `ffbK؆tߵkom-wz5@ɴ4S۷c);:l- ;s&񥘛:R%OܮSU޽ܟ/`6uP%4OZOsҰAwNy&zszԑ(x1VUvݟWVrۖX\LٳR%4O!<_};7l- kћNO)jiixWcU%n׃9w.gi?L'ONԗ(| tL a9t(wnZ6XXHy#zsdԔ(\Wω?mNKIU7wz5@ɴ4S! 0ۗ;7GSN)jii`~>e̅ ?z/嗉7rGjGQLKLN>eZ^!UCyzZ[˝GKC߹sǹSwdZS6?;=57am={6wt^5@ɴ4SB\;:ٔaϞܹiE P2- }9p wzKKTʅ]ZʝE P2-M39b)sH0>ZzSSiktxTΜ!R 5Si8w.9ݝgJgܩrKƈPLͧrgϦ9wJZ@w]+f*Mpm3Joٜwfn`5@T|*שirå+жɓAjwls;^O*?x''`Pz:0.f*MLn>{2mjEc*MdϞe;ǎ^OB P3&OSf>)Tz{zj4149aTVW3ߝ/0f*Md?>,T&'s>/(B P3&&7Cj\z:JgӉDj҄69}tүt@W\z70.f*MLn> o,.;Dv@Ns^D"5Si:q"-9I_ɜwKƅPLͧNLM3-vLlr2't"j41x6-ݝi?*J}!;Vz70.f*MLn>pfjd JOQiZ_)w>tj41dsjDүtN·_irz3*MXWd Fj4?nYDүIηwoj41djύwΨ4adb" PL _o,-^O0*=/һ 5SibrSӌ|/vF41ӉGj{Th|w.]*=f*MJcc#n4PLͧ_y'5ȧmfE ?s"߹zj4qvCzn. Jmsһj41˭[ir΍C&>Ȍ\ J'*J˗\^z=y3/,?JO<&,/YTPff2#z&5Si̇tw66J'0ѣ9_ŋw'5Sibr4#ӧK,*M(w;PL by9!=5Uz:NKOj;G,. YTP&'s ?1Qz7 5@T yHwg߾ӉMtb>;[z7B P3&&7YZJM3-4q<~6ӥPL`0Hv3h9h2|TRιv-z:Ԥt`PMNfyB d*M^|H}tP:rn|nTnF_|Qs54]gU~5z='MoޜSOETztsO P4JM|ZjrJ۷C*Mۗ9s&z:5@4esUJ9ghTmۖݰLL)I޳'z7ҵLMa+ 5@4˧*cGtJS[^/'GFOeB d*Mfgsѻaen.GLL&_>mUJ֭ѻa4*Mٮ\i\= 5@4;q"!ѻa̙[dn̈́TnvoQs܉#PivhN{ƍLL)ةS9ocǢw *]ɓ9Wwm&Mt/[ZR9~tJSoVj&Si vH[zv6z7ҵ [1h2|`˖*0lvݰP4JSɜLnXAk_XcB d*M7)UJG4e Kѻah2T7o<鰂J27s뇿&Mt/;WT:Fs=z7fB d*M7)wU)p/*MrҽsgnXML) /伥n t-N\ǣwm&Mt/ܹSmTT\=E)TN 5@4ڷ/-=3VSZfgs.WلTnS;jCwý4۵+'ѻa5h2Tyowމ t-339+lB d*M7)þ}UJDn`9~ݰP4JS^/-VSZr.WلTnS*sFtM*M2}ztXML)R[zӦj0t-ǏcǢwm&M҄gϞښ?rE)_eDg*B d*M<-y󿢇RZv{ߵk1z8bB d++=׭[RqƾEzr[G=/6)=tk>cJ{6ngp.*#ڏ<llˌ5z8p_ƾʸ_Ew799Y֭RU xag4ys@4* ^zɦإB .Pij-=9)70Jn\pWf\FM|h1ѐFMK%齁\Fҋ/ڼO\pWf\FM|h2?x*齁hTZ]lSSk5JC)Ofo=[)ntzs޹km}7oao~rsww{+[һ ZBK 5J#8Ф\I<@4* Ub\CeT*ڼe1<#g;~/Et|/ 7#2*lCZ-0&J DЪѰ)‚B .P-]K!?!FCBVm.K{H9B .&N>4Y[ I<|KDЪղ)v)70P˨4T-YGs?9o't|_X@jpF6qIc3ҫ4Z]u)5\F{Μۼy{ $7#2*lCB!0&4{4z \\CeT*Δo>ݜNQ_Qid'ʌ$ZMzo V6TjpJ3~׻9?əT:W^yjpF6qL`L)"Pih"ץB .PtE? Lq{d&%Qid'T*1g~^zo VMGGjpJu{tlփ ; |Y*ůץr\FM|(sz`LYTZP}Ձ5JC5t>[:<߁>98K;⯬H 5J#8Pfu50&DUmpW"2* xKkI[3w{t|B .&N>icO)7JC|bCB .ЪP-ʗy=>/Ncjm|>ҫH9B .&N>i4c‚@* l]I EeTZWx9;[w1mn\s~\FM|(37xfg"Pi(63cSrYzo(B .Њkwr^|ՓT:z{H?B .&N>I<7Qi(VZ8P˨4-bٺdif_(7#2*lCs@* ^~٦ժQ\Foi~hN-v>T:RONJ 5J#8Pfj*0&K DPl~ަss{GjpV*otE?on@c{H?B .&N>v-0&K DP\)v$7pQih[:~y~JaT: +ҏP˨4e67cϹs{4l=:*7pQih[:uGlJO|-1&sFG{p[cdƴ{af4[tO OC}|!.>ZZ^U z\*쭭ڽ8'ioOɜ|^7P + m.Ysj+ ڽ<\¨l),0;K+ǎI.{{voN`f4ɇ{zzc2W7P + uuIE7lJatsvoݾ_ ¨lNyZou6Ib5Xؿ_rٻ{pC 6c'N>ח9Ob~bc3 5،do\bFlʫ*s}zil=}>ف^Ne?|X7'0`3V~=Ǐ'dvbK$frR: C 6c0[zjJV(擋qʫt['gŕҤz c7lJO|gl,1&s{pd<]xpX$o>:py>#Y~ZݚurV\uVz=$7}zZ7'0`3V~=##13<{O2[jaf4&{KޭKJ`|0Zxn[48+v|=f_C5olLUPXi130v8֮ܳsgbL?X*$ѣՁj+ JtoѮ d9ƔH~*(+$n\PXiܙ9Obvnjbf4m-}vo|06,+SdAw|,(+k$]+j+ ?qĘ J/Kv;ݻJy'NH~'wT0gō2\<|}AEVzm E\PXi130XiΜѮ0`7Vλ~]BA7>a$Y M_ΊJKxX:W0`3V~=##13<'>H2mmڽJyQ$yH׮ as)_뉬taYEVzm߼ڪCj+ ?qĘI + O I;MkWj+ H҇iCׅ8#ABye>\ڶ}^[Sv:Cj+ ?qឱĘ9}Z7P + Oܺ%4]cf4|g!Ң'+ QJ|QsUX5JWro - 5،8p1۫?lw'o 5،>[[n8#AnT:_cY]c{ѡ[j+ ?qĘ{Ǯ]Nm[Rjj+  ieN;p%(kOVW:tNm|N9VE愗O:0`3V~=mm13:?>Lϝ;1lJv{Q|zu^vɢ[9"SS'c2gzZ7P + O"lJ!٩i_ (kʺw+ j\bk*wߕt bC 6c'N>339I]Wnlx͛RI=|PXix[~睤Rn_~] (k)m>UXDž7E:0`3VOTW?slɹ#h( E/6MmM qeZ)5Ftc% 3 .2$i31sr}Hyr@85&w:;{-_H6yC .ceCuY$o_X^&+KijۅydD=02Va3oiɝ@ 4B-,FC=PXictT~-$o_="}{.+K'O r9PXi YcrO7+|dƛqC=PXic}]޶ͦv{O$otkS%A[ϔ˶X(02Va3֘ J#@%g̡А!=j!NfŊbƆtRN>JȈgnG 5F85&w{-‚dɛV#< 5FP>LӮ q7kA, X568j|PXiYcrgtT7+ٝ;%cezZ=PXiF"}4<_-IdR|XeX駝?/͜<jp+0q={139hF}W2YԮ02V>ϜѮk8ɛWo|.+ϱO۹Sxoijp+0q(ҒvoVa{W2Y۵#< 5Fh>?V q7';}Pй܊sO7v{be4ɇO1S,FC:+`uuI&=l]ae4Bh;$,ժv{a!NfTяj{g*ϱ?mlydx'>Ngvo5VLzg#0 5F>{O'ysrM+λ/>J7fyPXiZcrW7+`U*Iק]ae4t!}vuVbgʂ;ά>J7 mjU=12Va'==֘9p@7+KVXvue^DumeAgM'Nm{vuce4ɇOڬ1ڽXiqɪgӮ02Vaڽ[޺6+BRa_+ wNȾJ7KlA|PXioq5&wEhhWZcÇ%۞%\J#XmmW+FC_.U q"J>̪G[$UIªt/jW\J#L|x;{jFݳQ$,\J#X==W[Uq!Nd9s3̪]+^*QdC .c&N>fnѣՁgb%L`e4u ߯];_D# M+p}7㒒Y~tfbBrU{C .c&N>hdrR:L4pp᳜;`e45;+Ev{A'tMlZ?kUVR!.+9zTrO{O7002VaO[cr'l]x&VX[mm22`e4*|Bgn该BMt9铗rk"f3۷K‚voa`e4ɇ1ѡxV KF>ˮ]\J#dWvu9RAn/7Х^/iVoPXiT*IX:<4g;C .c۷O6[k/W q"ݭaI:+}𞮭iW\J#L|x`f#͛ՁaLnH8kjp+ut_׮iWbZY>UMݒw{BJ?x PXi8aɝbѦvuyXi!gٵK:|PXiOTg?#3ƥ `D:д.=P ۬55YY֪,ԞqaCBU95wM;7==[tKvh}cil;zҲ`)?[閷ڪ5,/j8ZvGq ڹ2LFR+۫FQ@Ұq]-tGu O<_4g˛i**`sK/.ʏGi` ϶V]]o>nN8}se~:}Zq]3>EQ@@"!EwwkGGSK1ϗMvn3"7,ϋgo j` mɤlإKq$svt OUq]a緷kGtQd4p h  9.&T՗)'_U%-}lE GKC׹si7#Çe~$Y( s =2>Z?]yl}5S0GϊlİIlo׎&65- ]ccc555T%KYH2p?~*EQ@@+tCGKÅLessՊ1xwA4o޿_x0''E GKCXWWg[7!q\P'ZߵK;=" !- ].9lXiG٥ڔZvGx%qfvV{ 4V.?: |[tO_*Ƽtf co^bsK!9j`xR7oǑOk@yhi%"V8 E_{Ӆt+ڔ E |e-=1!9)E @KN|45Ǒ;塥LLץ 5- wO~^aW>+l5WC{>k[z`@r sE @KN?7#Vo],$95- jlߢKǏwRqǪ1oM[(z_=kXҧNI޽ڹڢPa'|Ąq]8(- RK+jGPd4K~^={wy~fW>(|y`t3oKWU)mvlk >5- ;#t::WzȸCpvzD E AFKfgW^#R~̫-x&|3.f.fSX--֦}-jZvG<}jG>MM DKA:BQ@Z+ʸ^#Fs1ϯlOUo6- 9ڹڢPa'|KgqsovzDE AFKkMLx\~^DB{8qc.o7G3IccgQ@XҰo>BoIu#"N hi%_~2,EΓ'kDBh.fci],ev]},j ZvGX;r;GK{O;= ߢWww'K)?z~.m/`gK'£7=},j ZvG(x8|_u,.Vu^@Q@+?/Eskidq*#G7*CK)#(j2ZxݻwLF;}~6yʴ M-[-,9kWj`+ g~_8A˽4hL$& Ђyґv61?hA-;1NbYHw)Bp99z/p9w$M|Dhi)xˠCJxD)&&Gj) _ҟjnO]ݮSWrT jH) 8r>8A0@HiI Eclnjw3Rh-u\x/vz ԡ?t$h kA i!a'QY[ eSއMy@< Gj) 4kwF {olʝ?RziIr`Ұx,/sTwnҞ) 4_8j5,bFJM:vL>yRu6ݞBCuJysѬJnٳ}0ZP@ZHiG$l/2BJ͛eq@A 1#&wjwo_*lֹ_յ䊍j 0kA i!a'1X[ eS\[y@j߷l}#Y5ČTo#GB= ;{Ǿ)۩fG_\޳/u'cc+vv R6qX eS\X_מ) Q֑,bFJkwoCBz{||[|vZJj 0kA i!a'Ր2;wGFJ-ڒ/ǏGj) 4oFi`I?Tz ??߮~گzvZJH.ؘv R6q޽˦#@Jdj) Q[Qއ /.힜zz[k{OZrMNj 0kA i!a'W*\f}X\Ԟ RhU*&'Nh43Rhɕ+·ҽuv R6qe++! eV_}[{*cHi@`xXPvHA 1#To郺zU{$TJJkڭ0TP@rHiG}p.`@'ҀW_ J:DP@HiU##·A=|=a*%* v 3R6qap08qݹ=a4 K[Gj) T?c RzrRr`ҰN ! eYއEـ#~r9uJo$Ҁ@(yK^SS3 R:ܦ`ҰΩTwsaaA{<+Hi@flL_z{C:RCP@Hi@%s*g@ LJvl3R6q rx1xHjOt ) ܸ!\1:RCP@Hi@Z }}>llhJiUj|L5$M|d}p#y ."-ᢙn! f4 vE}PghπJk$hvVo jH) 8P&'T}WkN! f4Ў!ɋ{W{TJMMi 6SA !a'YY_@בҀӒ]˅֑bFJ(GA>*11S)=>.D@Ұ\='>Ht[GRj) X>*מ3ҍ SA !a'mpxp}XXОPBJb7o ΩS^  f4о'ꃚӞ2  jH) 8 \̙RKbFJ+j<76@LԔ|vl3R6q!3;ukksHi42:AP@Hi ++{U8=d*$w㏵`ҰVǃV>*Q@;~Ij5bFJYi\ ٻnО1㒋  jH) 8hjp}Ӟ) idD_n  f4z= ֯="c*yi|L5$M|4ig':[GbBJmJn  f4Ge~_㪶0gϤƚF։fJ~0I ¾3XD)m "Ej00@Xp{^9kY0k^gGBPn59i="*5&rR>qR|je@dHi]ҼJ!Hc=R@P@Hi4߷1q|2g7\5$O|OUɲbR/) ^|֬[G j) ]ܮkezUJ//kҒu|sR>qWmi4$ɲbu7iX}Z\n)  f4wrrk|zUJ߸2ss}UP@rHiǟȇJ"YV` Ғt:q#$SuuHA 1#"|f>JEm W)=;2u|sR>qq|9#YV` KKGHi/j5囵k:GP@Hi W(޵p 22b7\5$O|kٔ$ˊ_ϭAJ}gkrҺuD@AZ- Ac_,^_ܗjNGnޔ$ˊg嫯׳H ) Ż*}7bFJY[Syݿo=*[-}W8* 94|{'33ee͛n[ $#n5Č urAGt/|b7Ǽ5O|ݓ$ ZM>H) EFFGj) _;v^lmYkRztTsY4eeT.{{)#~?g#b5Č61_UڲoknuR>q[pA^z` q4/E# f4P;qUe=xK95cނBJ'NrdY,/[ R装uA 1#u24_ AݳF[ 1oA i!'߃NG%ɲ2jxX~zf`P@5tɺ{Ċ@  -ٴ `[P@ZHil{{23#YVR 3?so[w(3R(E 33֓tRzvVs;u8- -4| T$ʨQ끁ADJjI.U=! f4PãUYc|Q;aP.o)##}p[P@ZHiTwHeW*rxh=00HiĄuA 1#rLMwu$(^_܋jUz=x- -4|~i Aץղh4wCyzD@9mVOf'OAt;;֭[P@ZHi.ccG%Trzc0:8@i66$&&'At~j75$O\&!ﳷui| "ibFJeؐq;g=J04wàVKgoAuL~`ݶpp !(_abFJ%{Vq?S܋)x0 !4|'ە[X CJi4[w3R(~fvaJ//k.ĄurR>qS葼}Biݵ 'q3bFJ&9岝ښ(Ô\qx0 !4|cz埽fS:Hi8ql̺uĄҀmRo!(Ôn5bxغo^9 jH) 8ّ+W${s@.^ԼsXh3R0طgQ )]h.Ek7|5O$ܾ-!^uj/R(ԃruպuDҀ^S۷nYRL1ͥxĺo. jH) 8k%gfgӱ 4Pv[Bм֭#5Člmnjj59<o++}pgP@*HiɏꪄUT"wZ OHih.hzݺoDҀ^OΟymnZwL_G/qM\UYFc]Ԥնjڔbjښ4E(%wB)kZK j,0 ={fzY{ym1=m7b5t R1q}zLFF4ۮdkzfVh) ׼z iGbĄ@H1:)8JUWQSSR[ ߑ@&'5h_upHi\yoԧZwLqP.[ A FL|oZD*juzZ6;F?n>) xP(i}uS̔VYBtA FL|WRJ%uzZ@ QwYj$[PA Z677Y2'P~ѫTfjU>VzZ(vau8@Pg4Ғ}PWX|MiW֭&lP@G aVuuu2UV@vvdfFDf ܴ > ղjH܊a AؔV/o:`5tRNY;eszN'(ƛo*/[5<#?&'Orz rJБ9?RjZWW)Sjox56{U*/sh'@1{Oy펎Zk5xFJ~lmI|u3"+V˺uDjZ677Y2'0?$}}5c{.Z}c}]YwS5xFJ|՝V, h)~ͺuDjFLb<}*ʽ5K%\$sh7R(FzjzU>wޑfzO~B|u")8X[RIfAyzH œ;[-aHi<4|x,G|ժu" )8j6evVDf筇'R(̃#aHimI;&SztTsIHiϓ'RhՌ5<,n=$@2_gd5xFJ>}}X3j$֭#xPs4bduUzz4[jJYY@!HiHʫW aHi}VOUg<9R1qnkKFFi:}Z67PR(R!IܱFjܺ|Y>cd_)‚u)87R*),'lZ @4P }ZA Ҁ[|xU*cdH3g4'pкoa)8mIZC() M}u@Pg4Y{Vf=N^^$]@Pg4b˭[KNn޴R(nj<{LD>޲'@J?|<++֭Hio 6J%wzBFHixw*$zݺ{HiWhhX-RٔnɿxѺu1)8'#IYE<}j=!;4PfSիݣp5xFJ]|{֍3@N k }Hi?=Y33k=k4`5k: GPg4:zhҩs4ǾϺo1)8jܹjT,Glo[R0Q/Gj:_u"S.h}Hi:jFL|_1ytɽ{ֳ*ok׬[Gj:˗25|'4@N(Oݻ֭Hi?9^D{Q>[[RrBV˺{Hiݭ|߸a=THԥKcu 3R1qe}]J%yD%\n=HiʻoGGj:>1a:THc?6f:jFLוu<~l=Hiʊrc Hi}ͺz~i:m}U$ӕDX$Ш|b"F=(Jfe|oڽ-=x{׋nK.ߟܻ&t;I鞅ȇ͡M=P:A 3)MlC~=4M{stz427߸S A 3) cG>1u~"RNPLJS'0PKsڱ#|}IiHh߾'EPLJCLLD^vn7u<")/YkRNPLJS'æM1ou07z0 4$43&[sgvS!r&uzWt>={^22oot gR:MO͛cԉCJCZgoH=Oș6:x0߿?u<")ԩI7P:A 3)Ml:æM1ujS"!m"?>uA 3) mϡib._ͥG!|ERMPLJS'> M\z?xfVҐ'I='r&y'u< )ȝt)u@5@Τ4u:~<4Mrz5`@HiHna!l?y2u șv-߰!ϧ&ۼ9fL7P4A 3)Ml~CBļ(ש^z04"[C{LPLJCK-, "p[DJ/7:O=oh gR:pX[rڽ;̤ h') 93ƍ3` gR륗"/ n#;z4r)u@5@Τ4uKn ;vD>$ת7ߤ h3) ض-M:&r&^{H._\ݻSKPLJS'+Ӊ|EZCCz04d̙`v6u șVt"/ w w/97{P gR:WC?!kt4̤ (L_ .A9jE^O=AJ0</n(șN6r24MqnꩀRHiǞ=/nA9jӉ<·n n/Rz#G"ԭ9ԩ͟ N˱z?嗩GRyJCV6Bؾ=u ș;y2եKH>4rGGSJPLJS77鄩#ũ9!C##G|A 3) m;7l9SS`]RzmRJPLJSj7ĉ4o SSGJTmJCN< 9P#WCCNI~[Dbց jIiT;T\ 95z$Pu4dkal,u șΆ{鄯N=k\ԭ%9ԩ4OTꑀrUҐmbMRjIi(Á1Gx1 FJ|9r|3u@5@Τ4umgg֭jᇩGV[JCΞ<~5u ș2|]TM>(ݻKqcO=PA 3)Mp@ q=6I=PRZaz:rxԭ3 gR3wRu:SIU׮n(șNUmG>i+@U) p 8vJ:!r&O+SIUMNFnݩ[#r&S=o _}z4Ȗ-1p A 3) Ř Msԓ^KܫĆșNlcxzz4sŜSd~>u șsgS2Rz-~BցjIiT?&Uz?rTaԐ:ccTA 3) % My/OeZ#7رԭe9ԩ?w.=_S|JCݾyKn9P4RG1^KcСԭe9ԩͿy3%_M_O= PSkx8ؾ=u ș\&_={R?:YW_M7PA 3)M 02\QM><0@ NihS"?L:ș"MNN' P goRzo۽x5@Τ4u*uph3pE5Mx+5#OÇS&r&T|ӦțW|z&16Ǐ(șNnx 'ZԔ[XCC1Eӄ[Rwr!/](LŢ2R#Y$IC!] A6ga=Y{y}>ְ֯5@Τ4߿7y|2uCJ/Сnڕo]5@Τ4ejOMEV[@2z*x`n%r&N佚K=RzQSșLN'|z+$mLihCg#r&ݺM~Lҋ:r$.nhA 3)MZgU||aZ&4NJ=+GPLJC'&R^tpGGSșLm/*믝;wS64|-[n7A 3) wf&߸1uHEݹSWUd{_̤h A 3)MZ7o֝NPԷoZJO~J=+DPLJC 6oIōw{r2u@[jIiԚ KROЧ5) t!vuAș>?$uœҋn>u-5@Τ4ejs]UB/?#^|1xx^]Φ r&Uɟ|2uœҋvU"kWց9Ҕ?:y=THihqlY  gR ԭMJ/ibܙo-5@Τ4ej_y=Toz ) gOؼvSw5@Τ4ܹMn]=3I%G{t4u@[jIiͿ{޴)c^ϧ`QMi(ݻ֭0A 3) 嘚ڹ3E҃t"+{ OPLJSnkuUEw l1Д;?KNH=C9P7ynN=Cy o+ZAPLJS&n~[oy?`MLi(/ϒ Rw5@Τ47yK=@y hA 3)MGFugLSuk8M=Q gRrzo n7 ҃ػ7=o5@Τ4ejOOGt~}=7z 4.d'OGSwOș|i&Us ,H=?u5@Τ4ej_Vw:7]?z 5+pd͚zn.jIi(ө6%҃x>_u5@Τ4ejwmBm~4ERٲ%~LNA 3) ׯNWg(_yt4u@ jIiԠu{wߥ`9@ϕ+uUk빹| gRtR&_3gRP)={W33NPLJSl{EqO`-[㩻g5@Τ4kǎYޫSP)=&ONnh8A 3)M}|WUտzejDJn\u+,șb]?WSvRz@|\#GR4șLo͛H_'XSxxbٷ/u,șm?TJJۭWDց9Ҕ)<O=@H) <꯿ -ggSrjIi(ɓnJ=FIG} 'r&)SN]U[n12Oiq.G9Pٺgc܁}0 A 3)M2S"oz3 !gn^.xZusBPLJCv woZMJOLh8A 3)M2#oڴO=2Oi`ϽA5@Τ4gy֮M=CIMLDx׮} 'r&)SΛrPUU[sJ׬1z#r&u,Pz҃;t([h8A 3)Mr;"UUTsJK:v,~̌jIi̙hKJn_kT?/;FSG)TjVֶЪFmZzS JC/z!a*104C`w3Pw&=yX,~:94Svʫi]=@?dF##GjIika!2/Ӊ`HI{0qO'PwO4}= r&IϞ~HIMپ=e{ggLPLJjm۶PSSSѿ~;֭}ʵ}uoeQ_52 gRxDe^UuwRzSJY辁:9Ě}%ݻ\X{Z?=@O`\~StșdtHJoʉnGԖș&Vڶm+CT$>֪ڳ\_'0VV;o7ߌ9ʢH̫WW:RzS}7q{[jKPLJj|4XcccYmdK[|=@_O`8?~,-Ew jIioKo܈~HM=y2u5@Τ4͔毬ERr}UJ#5@Τ47gyU))O$+ǣ[jKPLJLYm+)ouplUJLpFGv;{OPLJ41~Ew?\f@e@/~9Ι9?-/_nEw?\f%Bt@= jIi)Ϳ{7֭W{*4л;WN'{CPLJ/cǢ[.Rz<)"eu?4u5@Τ4͔::T`[(zwJsBt<șUxEnGw?Dt_OYݣGIPLJLlÇeQΪڵlZ4HS]JWF9LN&^G>DtaNt@ jIi)͟N|UQ]lLR藉?9cM>:ZDw?,tV+qu[jHPLJL9ljYO7i`@rHiϞoߏ9󬯗;w&.Ew?,trx1u5@Τ4͔;(ֽ{!- H) LSW gRxě(Ǐ R:ͩS){wot@ jIi)|ʢHyU511~*<[]-I<~q n W__AUE jIiŖˑjNJ'۵+ecǣFPLJL^Y)onۃl Z96~V ș^…||\]Τt{S6vt4on5@Τ4#)nSHb.BU:TDπț^:wH?ϝΤtSֵ("94S߼ {Z/SHbNOPUgDπț6bfʕjKJ'L\ף[jEPLJL!\ڕ V=NO`VOQU׮Ex gR؈(z:˿"zzwցZ94S<}mi,_~5@Τ4AOtWuV 5$G[rt\[A 3)M3 ~S_Oz-.M,O`tUuH &r& Z^,)=nt/HՅց94Ӏ7iܾ=խk׶GO ::"r&;{׳|z:zҽO\?nA 3)M3 xK|yun /hŲ(z.^5@Τ4qvO7y?Vt/nh0A 3) l=U9=CH8oGԄș7n$57};=]JwDT gRؔrO5zXhi&CID!#2DHp䗼H1|yu.߼OoS'OR?=&}}JI: gRn?z4UL96@]ei*A 3) ʢjffR=JPԫm r&馭ݻ\^adJ?NK\$r&˗㝼(S%=<ԏ>J: gRn߶-ub{K?r%ؗ)A 3) \ݛ-!7NN^hA 3)M7m/.v(WV k tT5USK1 gR;y2^˫Y^N6қ7/xSodOPLJM[vNE>ur@sYTM~CjIi leܹ3^?,@JС^zu { gRnښ ʱwVW - t;DLNjP[GPLJTE9z6ҵͥ^Ȟș{/55F@7S;ϻ~CgjIi`ԫşEҩԫ9t\o?kb#O^{-XoA 3) l`PEW>{R.;wFtlSMPLJM[pEʕ&6h :…xZ۷S?5@Τ4y6駩WϞԫy9tSӗy\^}#6O.+QSհ~HQ'r&[Z S=)]GWz|Ձ jIi˿p!yUl~]v@GOW~uꗌ4A 3) bb"R˕ԫMJר:zo o gRnj''#VET:-@=~\z*ϧ~9@-=R7)]ݻ#':5zo o gRnj1a6Nջ @+'qeQ T?rfnj(A 3) ƍ`MzޤthWW2&r&F/ȇU5`P.7o SRnj"A 3) :+~3&ktbSqq1@5@Τ4//E_`~Tnv/E gRoKөWϘÇԫ9tSs\𫪚~EZL?\oVɓ/9 gRBAs%569љ{9tSs?9fv-M?֝<,Wg9 gRpXR#kW>˕ԫ9tSC^{jmܩk OuasgbϩS?E]5@Τ4PÇ (ʥgIJر޺zu W gRnj򧧃S۷a][~lXEemW_])j!r&ݸooz,Izsz:@5@Τ4?z̙ZV (]k}zԏ  gRp>{VȒș}"_Rki-+Oqԏi?A 3) x>{6ҵW$r&/0("%k}7ߔ^qmkǴșiONadFJna!x'N^ȒșjǃQ|}rl,޻7S5@Τ4Pߏw;wRo)]ܶ-r^Ȓș/" U`l/i3A 3) n0(ǃ{f&M8r$r{Ȓșڜ;W˃F~Gk}&&~?KZKPLJM8}:޽?N}Nt]\$r&/0({<{VӓF~Oˢ9t(KZKPLJM%ĉDJ7ѣezpzu ? gRn? 6oQ׃F~x8ǎ++B gRhȁ=>^φnHQD{9tS]?۶E>k|Ojհfr| {FPLJ w/޺ϟO}6tC^=r|zo ? gRnϜ|7t) XX("^6N;׮~OjIi9;v+Dzد).T_чM揨 wKXADMͤ7mR&늻 -p?# 2rἝs×sAJ7#yTjIiӆl_Uy708'~nXou˗s%@sΝRK:Y˱}% #:yrc(ݿ_Ư5uNydRhNSWU޲nsP)ݐZۗo<dR//Uy4V3  .++oڳ'0O A P2) 4}T ̭[s GPLJ3S"/՚8s&~ٳ'yjIiQuU;wrndp'sFPLJ3/ `pO^ ^hkosORbz۶ÔMPLJMt瞋ۿ{tC;n((f8VeK@}}]N[S{ƍLPLJ |y޵+wYI<ɥܭ%% ~6/nnC  Џ^_kkÔJPLJ t:K{i)Hrz:w@I5@ɤ4é?z4Pnh >17l[.垧HdRHgtY\ >:PA P2)p o~Soy%ukbӵkuUo5瞧<dRHú ǎ>)ݨ;# 92o$dRo6J}D~V=LI5@ɤ4̃ƍg"nsCPLJ3?7WWU}tH  ^qrI!J& 3LtӶm,XbjIiS`V֭(`cUDI!J&~5x]ڕLt^y%((f8w몊VG++ f`]?zk@PLJ;3w9H馝?}% n+gju O&\z}j jIi i}BsM6nߞodR?~<,VU/.&`Oã,v׭=LVdRH綾"G֭J֓Mp$J&N;ϢL0h'@snݪ[i=L>dRHܹQ}t֓Mt8?u dRᴮ_\*,4  Шᅬ_wI%@z7o+WrwNg#/ J&Nȃ[UU/.`O}Q[S7o$A P2) aysn;wrN`*^o dRᴮ߱# I8 7xKK'APLJY}BR:_((f8=_y u{ 0P'@No_뭱G6dRbrzy9H,aUvցjIiz+'Gk[o_( ۷V+xd{5@ɤ4W_uT_{Tt=:PA P2)M^6mz& >5?( [SS'IKPLJYt:uU/ꉉ"8q"[ J&&m۶co?|uk$@q)zܓ$$J&\OEJ'03ñܭ%5;;iӦgFGnML$#H?ꪊ~ujaR%@.ԛ7$!tܭ%d7;;;55VZ###|y=?NG  L]U}۹IBPLJ]??4wIH4n,aWdRnjE^@ky9X}_' $_Un86/U0qb XIb@ Q/P7P@爚{Ф#괮ΜVx] m={ay^X>ڛĂHi]]{XǏGHi n~ZZϟZ ~@E>C$z5XFJU*s]PО>zt,{繹9e q'' DHivuN^C1_xY(!2RT;rƴ7$0'Tc<<^ 5XFJ0eh(T^H54H^]҉HiSp_yGӦr>X{ H( S\&#/CC DHi u:8;;;T)v n/"2RtxMMI)wt$5ynuU{j#2R5'^H}j@A Hgwe~Vyuu TA 3TޡzHr»70=: 5XFJ#/uط;/<]+J񣥃e+i^,]&[&!`) -zpP{Hi-Vr]==`Ǎ^ 01!yTN_fw{ / 4I#W\]:ֿ揯?Z:xɕL xXdnnjo"EPe4-zgG{pHiEmm‹=:`ݻ/]>L{h #wR>nix4;iflv檿*$HrBഷk!EPe4ݓ^! o]6=:`d^;'gKRI{$'{/1/';fLu;jDE`]ۮmLy)[͆D@e]C|h;w|wRƘsϽ~`jι'UuV˕k?^M6_HL9Y/:GGuZj3R\ CJPRZsxqj&mrR{4?_UU4r*^^I\0CeUQs%7'T\"jE"fmS+=Fj3R@ |}t% 92 W70 = kzZE"А@i|V]W7R ֖XeZa_ nNg@pE/:}Zzg4@HahݗبnWj4="ͅ]](=P!t87~ EWzUFkeyfBNWOqEqe7W>}*=Cj3R@PhᰊǥEJ˺wOյJ+5HP6hnkkhHz 4:/?Qt&7FuBQZ_LmK,~PHA~rRW^͍>k\!U}>V:+#\+`cc?#˳g+ٳZt,PׯK,֭=?"^=VE QBU{)?f8vʈ+@puu_aMM?#N~ޢ?H46<3g 2 u$@RSE"*~࿜sPԤSڎKn^ @PY>}Zb~wm$7OÇOweI1O7etᲽ#Tk}w;/?BHiAqҾT_A ~FJa9_[(ו`j>7o[P~5x`hH_ Kx;nU5CԲ?|klL9V:+P(R2Rҁ"HiAɨpX`k_Pn CUvX9Oi EVk͍gbz.Yu־!{πaj;_{b뛩+ɦ~ٗwŧ>{玲tVa14eÒn*JIj3R@@ϻvIw_0Rfg5_Νҭ(?ʭVrV 7)w[o"5}[Xeqjۮ&:6stvI5|y#[$}㜟rN=s`6bhL;j.$.ONK%HiÁ%]jMM*wg4U8?;'=@aHiyfl[ueFP@YOXiO0;;q{&5}[/$~ws_*2s_H[Uck:bgikx{ױY鏍_RǕJ[j3R@p ?IPR'FF4Yotʌ/iWUMJcb?Yfs秜ϺP_ì7[]wftV;-慽pnӵdv-zŮjg&pZf,BlS{7-@BjǨ d=(#awCjf_y}?CQ0 #4͈D>ٺ&j7CJ@U;|))KD&[ִMC^U ִP/R 3xmw͐P5j/H\ 8;UɝRjSG { 9 D_! ) lkrnoΐҮd3 cebBWgO|OYPkblkRrAIT|ɘ>֐wurTib잫\˸xTtZHi9X~|Q~@>wcXJ80(DS߮B.Mw 6~p34xCK9Үr^:8A P'Nؚ_U4Hi'thqZaI$igM|qܥH_;dّUTKԇZ=J\P\;=!ҒYǒo1S(2 Dw?6xHE!#D s͐ ,kkx>sz;@JJ:m::APwI~k/m_FJ?=WJmפ@ 0`3/Q_w=qTU[ Br^]j'jHi𒹕|}?U˰zp#qyTꛑN}T~qQWgYw?QoMҮ"F(daCQW@PؔIUq4:~y*[cL#b(Q,)aw헽tSR|V : RT/n$+j:,3QźF}g< E!͐%F(dqrnl^ ݦbݽKtp-W՗_Hi't~Uz|Vb~x^aM7fT ~~5O}n+1hRä,uxX?ק/9 k[˗׏p34xL{yhzviuj; 7) ίRZ.6T"Soʼ|ǽ=\%ۣN5<ըϕ RL.|:1*P5 {0!|tC{S4hj[^\?͐192VW7Rڅ"%IK ,[Yy9#Y7θsgǟ@J?+kmפ *[ \4%V[]\àpzB{$Jt+) n+Lb\R*>J$,-z57S.A fHiVs{;CJPg^:8A `ّ# R _]J0V˸L,Rot&wfR+<{ i`Vy*50/N7 21q/P_Q;y[/2?'[9͐=SS'gY lv'K I$l f;~) ί|a+VɊjzPNٍRrA==!*NV %ƥ錺St Vd=Q[ǥ_MMdiվW!]qEA.R)k/[;ZM AVVYGYgFKN'!I{[٥9I9Iz^ys9g|Bæv,o/9eHi(?nדߜi/HiYVSC2Zuu[ bz?) Ͼt87pqcBp!e K{onG:?Hi:;skQK8VU]:JeK?wu}ff>郐P0]\XLƵA{;:1'ZW}P<}ʟRrU%5HipR:gXȘ-*Ruj)Iͦ&wiA 24%Q4=kfSw7t[bCP^*BJCe3lx'k^d&?ꙌIÃpxxT+?HɩLBN7wOA/ÇuFP ) elxμLlJGu AP|" W䗨͚ه"2aّ'.wڣb, %e]KHcT21Bѝ9>Hi(G T8p/i } zuZ87pq3"KxdBuvjK2SFJCKsZHtSµG)3]+Uh\_[5ːP o]][GJ-嗴"AP|ԔߚӑP0tYݨ]LuFX\h(Ca.%C 3?q]k+/UsBaM8i9==ExZ*eHi({ӄWeh?D, bt=yB{P j\{L[BR*&W]ow9nHTiYcd1yZ`Xj"5Ě/80>tdLn- Km#ҙ U"̚?(Q|mR{DjMWڀhY=$'L?"딞}B`T\W%{^oF2 Uy"Zȝ[M^4O`r4kd3486\_ϧgtxv< GO\W^ Y RD"%%%jmm vCpYL5={6uMs+27$ջ>PDN=PAPQ㡟 ) ΄ohO\~E}=#jT֘^K^)bi@d ۿJ‰ra2\T$Z&z]:(:)~{O!{wDyj*д|fXi;CJӤӲ?)]\v54 SNAE]!p-qcYu2v&^SlE3} ob-bb/eOgSKzZ&@vLO]zx ? zX k8q\Tejp!e}e`348йssrwwA[EJ&ʫĻ{xj3Y55LCJ3i[ɜ_`TOog7'o'm͔>2 {XRQjD* B㽧Iat֓ǁ ^o^Jffi4!1<!ԩ.:ϟ߮CP(矽z&!p1pw.?:+{J2;^ԏ.]تk۝^^Fu'3]3RQx|+G/)e Y{rqGyC|8&& 'eEitqΐLMMsJDJK(Vs3!LO j ) ΄Oml5 JlEy/>ɍ$~3Y&]!DoxzHZ~sgfW GҷjӸTCv^R?kGAH?Ao},zgZ!46OGkSB>ITts!پoU߷>⛟d1^5:njÆ>89nԝ+j᪗O=̘f"ۀՏn ηI,r~c:k6: AFJLF|I޹ӧ&I:p@d6M٭X'@=z#T],z)hb%\>҉ԙ|*欘1:cʾe]Qd4([X_~I2 RU٭X'@ݺ%Nww!)hbk-u1Usڇe|dʣwD };3\=wO<kjbBԍGN@"!%#kNji7u"DY[.=3G4_VIJ#)W=juPt\|{?ײǍWGӭI}SoȢVS'f"q῁)ӭ)jH& /'OlE|{e #4ŗ&X7R:vveP@49';g4cn2e_ @Ȭ+gcߛog6w9(?5i)3cs[)Md_?۷??WJQKq"4) n5#Cw*="hjJ|q0kF41룉XqU;3}-#}Q#M3ʋjն')W<(;_a|qג}!])E?Di2Rf76 ]]6FJٳov A j,_rm[Rr>RL\AA$fBΔ.T˷3f&Sn%\ 2JίwM/_:riR#yC6+}Di2RV ƙW]ҡf̌ A j_o9)IiDL5TͽJ}8}-!zJ;A70e\X1|D72 ]}!-,]={j:uU7n.UKt9z\/ʾCƺv_gRT6e_ @҅}~zbi}soHB)'Sm#]#ƞ1MW~tmQiJ˾mEARgN@\D.Z"7\/ƩF41L!T*7MJ{zœujuPw17L5$Rd{]c>- U>D󕌻|%6~8w7S}}k: AFJvيڼꇔ:;zv9o7EP˲ m҈&&\'UC=$Z6 nVgFCoŴ xmۇһFmu-z9CX/wZ ɔȾ&&ƺ^;v}J"4ɇ'' o~͌ϴ )zWjۺU8-4﹕0-GHFB[J]7۬kMVħ XOSoPHiXh`@ 31IHiX*+tZ^DPP[Kxu)jHiI?,TѮ PV) @Lns?%{0:*h}>_|d~rFJB6[Y)Xw$zΞu:qB^DPPX,eZ') ]ssv~ϴϺ b Iinw'7pF+ZZ<69|rFJl†$VOFe/A @a•0uuO?&}~pa2geo@47Rӏמ,9!جUJUZbNi%uà YI[*uKvo2De$av@J-v*+/O`A @Ief'}"4͏f!gGLTMi%;Y-h]eeoRb g[o% Q`yx&Ƕ:)/XuCPPϽ{aV٧) =zoLTc3W5US@ПR(@@I[lPnR;vBO:`ׯ>:rlI+'CCO) =wǒ!gU@b켳ۘRtUJOm['U4)mTJjA }tz5ٳG I}54씰?=v<_s]+JFnQc:;v,J--}] 7D(zz %-q>"$II\N!a$לeM$4)'&_^e3<] }\[[+39): ӊ P()mvҧ,FPH_W" G_) ;%?,[Y5g0S^WR@WӺ}:gW *Wg0Q BA޼QRk=@b(ۥ6RvJO ;3 w$") ~ fJ\,fP|LO`=4DҢ{󕔶А*^A 1zz{HWFJNל)H3=ԛ i죅ҫܭ[ޕqplLz uK{maERҳ۪UzV5dV/}Ұ7bf1;Ik2:ԡ`9uN>UҫlgիkŨ]{GFTHJ[Vj00@\7O6Rv2`۩:e+ҫMiuk&_iLk5󇉢*57;ٻ IoN@,ᆱx Hii=DPHR)ܱC-}uҰ7)X7|,H14ԹjQչt,J ٻTatTzubqC~MϑҶzXݻ'`@;^?z{O.Rv2>Vp<_s$lДP3%6Us޵u7P Rl?PڳG}j]W~ LVt<_s]+J31bc:_Fn.HRsFz3HN@\.7|>޷Hi AJ߱g,CP0ݡCţ[!a'n;e5+`Yz`sKuUC@z;qbgJN@\rsb-RNxǪMjF+ZG.'FHiɬ5g۩\qqYzĬ`N=iWy=6C[z(%X: zz)m>PU/O) ;uӛs<_gԣY) P-jV\5wzވshқ5]Ůwoֺ}[U5=-` ~)t]Ų}{X*I/) ;t{'kΙM#xɠ`y͖ՐN,JQs?{cMkkx&`4VVA6KԟTҧAP0ec`@ѐҰ)7QXAzǔ`“iv-ibfQzښ ]wgoܩ2`4+Ţ;;+NzRjZZ kFKKX*I/ ) ;rwיÏe5 &SR@+k֭4cҫp躿z*2tiP37Xq{{c|Yjk @z5C׌/>}d4d^r<_gv OJcy|go,HR[/˳Wy?2;+ $u57Tb|\w{q  NJuBAҰSd+[gW-i=@E4$+T,IoS[׮MMϞ;қ@Q@ٛo]b|@ ޮX0>z4T7\Ynw<_g.,K<$`fAz/;HoS[Ϟ39) $u}b}0'Hi h=:;`r9lnVfҧ|՗ Uu4 ؋I^n՝T*\Z: Q?AJM=K/$A DbDJN|{~HUqH6X -r!j,nfY <iQV]ﮋ+ >HI5Xln@읁0rz&{̜3~$p|rOܓ08#59[>4s bv*u.:NNK I-ؙ3|LbQhFah+J%GO- - KAe'*8xЅM,ܾӶך5gU=k; : YtvDgKcS]]OxE XaR*֭}ҐٛAeҩsWmL]Zڟ}7~2a;J}>gfIGiQr;zzli_ Lk;Ԁ[ųl tvzY t+58~N@F&vDgKf~F >:/5&u"ӕǖLOq%,C@m8H󗱫KY9ل_ X|R:rlGP Ljmggqӧ ?֮}t_,jMäNXaFҐɵ_vctjƵ- @/NR63OTlGݽ{j2M.ϝ |AM:SO%z8[ho7:uO4jUr&]bFG7–LU02_zv׶48;lҰ4z(5vJe-[l_P ÇM mggqno_}tS,j).kn- ʴ,ad6j˩- @GyU_~xv޶M+iJ%ioMUΖ-5"ۧ|Ģ\4,ccn- %sjKЉJ638m;G-qQz i7x: ٵju'qJErPCCOE lj"y6ŖL+ӏY lo'[AZZ+gszA?Ѭy7…>;f*ܹ?}԰jpp-@-XrF>d35x:fdi<`9<6Fjiyo(V Ò%_>xm,^Xêbb">Ͷ hYyɦ!o{RJiYE̟A탣7+AXkcÆ ž,߸-=A7&w6E&E /yAy繽Glf}>\N+zvqf#iy "K[ޓYZނn9lf{zޟn+ivumncW7iy "{"K7&n~_5 C|ݹmC R͗&SSyCZdiyjyλ icѥmCR馽]O Z^diyjy;5WNf;:Y7֕yֵ9 +Z^dzOZdiyU:V*ϝW p}Qyi©!-Z^dzOZdiy~?Eyggm_JFH+};iyjy=i";7nl9Kuu ojy=imt*U}lb@;v׮w 0J2jTL 6jy=i"{ݓ-ܾ˩jU\J4k艉FH+} iyjy=i";RѫW'mߵ$[?"gߢSܺ:HW7iyv {?֑`L+{7sY '7j|6jy=i"KY[<#xtTZY]4I7Wˋ,-ޓYZ^-/yFfWIr:9c.%ub=oW7iyGniy'*Ȉf&ɛo0۴i8f7mwDF2}-۵"!"Z$)20ILcvw!gpŏs'[sidv 3LH#kxyȚ7{?y> _|=G?k=WV??\K7^͛o3~yަ4G>y5/|/}_{>g9^oyO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җ}衇EY#[FּўG>ywxԧ5oyۣ=yclk:v{ZZklZkάl_kYcZgZֱ1EѢ\6b 'МM8 .Id@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$}|>NVU1~|vc޻߁~3<^u]NVUcw~gx^v2@a}~v?2]׵pU5y~B,8RUe޻xFUe޻߁TUcwQUcw #UXgTX|HU5y~U5y~B,8RUe޻xFUe޻߁TUcwQUcw #UXgTX|HU5y~U5y~B,8RUe޻xFUe޻cM] 5 O6/)?X6pWJRK={:|JIj=GZzO!\)I-sHRK8+%tIj=x>p$#I-s9{$t{:`$΁C<RZzO쑤9pWJRK={:|JIj=GZzO!\)I-sHRK8+%tIj=x>p$#I-s9{$t{:`$΁C<RZzO쑤9pWJRK={:|JIj=GZzO!\)I-sHRK8+%tIj=x>p$#I-s9{$t{:`$΁C<RZzO쑤9pWJRK={:|JIj=GZzO!\)I-sHRK8+%tIj=x>p$#I-sg:`[|s~y=~>/Filter/FlateDecode/Height 3148/Intent/RelativeColorimetric/Length 235016/Name/X/SMask 21 0 R/Subtype/Image/Type/XObject/Width 3148>>stream H ٭*22&qZ0B[6r쬭LeJ[u.:b*24hg3N5h[ZtG嶍񶾐|Msz;W>*X*88Occqv6u'ըRRĉ86ggSw6=bSS 44bq[tMM1[oەJcwM>GGSXJsg ii qR|}SwXFG1! Ucz:C9r$ucԩ>UZZdPb o. Ҝ<srpZ2SwnOv9ʹG.8ϏL]|T=#Sϝ3|oo~zG'>w9uRMM1%W\.qv6uu^\. y2Lkkk"AWWWsssGGG"|Cg{nK;{=׋ʼn$Z߇w^}K~`2[ !."\ܻwhygX}2Lkkk"ߥx,j`ilB\D:;O~s[edd$Z\Yß{$߱Ƕuv oտ<-N]}2^st㗷[PJB˓O}Æ/mZqqI]^"I>T̾lDᣯy?~kKǙbI}ylڸ1RW?I\.Ԥ>u|sǷt6m.ek-.lkN(xjk=z*WBNmmO =Z\. yw>-li֚W9t[RNJW o(廽=^O/k׻>*uU΢Vݻ!.%'SIsFXNPli֎ ~lqB~f>1o鋺R1رe`: Pli*gQåK!qv6Y|jfKfJqtfk,('k{F~9~o7vũ$DPH[Wk. IQuU-&3=Ʉ$}UWWKz&~[T C;-z3)EpBLH,fli+CKX*om儔Z&PaJcO ٱm ēu3HqgeZ3M:5c|^NHq:p24š\ )+\QD/c#hiN|+CKCxM´Ɲq [l˰7UsBLȁ|iV85]8̝NNSWE/P0V[VDžq JwٶԸ3{nJ74\=Ģ儘>`{8NXZP`k?8!ggE/P0P&\\dZzG~+?MiC M$0wߔ%W_gV4>YCKHZ:j":{nfgnҏDG%2~trBʍcli+CKXKys3'^oBKCuTiWL_|sPMaj[Xn{|xX:۴9$fVg_21#JҶ)$7Czf\׹o߬|/IZQ5Z,Z>)NzxXn NvF|vB=+T!L/`;rsF`{8NXZP`_ׯsBJS5| Z&ѥ;v)Ƌq/ɼ)m(K;'mu~y_N]q 5\Vؘ^V|y7m+9ܙ >2"zbyOT޸AKWK|Cˤ^k=N 9r{gV85T4ʝNNHYyJ2>- _y29=lܤ+9ܙI;'SjW\W̛҆Қ7z)՗KZQMoHkgo喝z2t(mB^̀`tB/-4XZi~auA@@-FMsHϊ-*~N q:y,fEV85w:9!eOɷU<־NŕjOt'Ԏ(uEhSH1u3dۣrͰWzU7WtM=:cB5cӍymԺ3G1s'՟_4\hi(Ӄ @@tv~9^fWEϝl]Q_ 1!N'O&M.;q;:qRVz{EӠ:a-kU/MX.;m#@Y;Sџi J1/_͝TK(kzIlL>)ޝP/L$Qߠ*LSHyTXd@KvZPc kI;oTCuj?O'C-Z]l]Q.N q:⢉`8NXZP`;ϟsBʡC\D/Ӡ:a-G´Ɲq ֝ -ô5LFhK(kzI}L<)t'eȮm I;o/JCuqzF- [D[)ƞ.%z 5; ǖ聵--jEiV85Üͧ5|24T'LuHZqy`:dsugꇤamܤzm6y TLBm Ơt4BfԗUd޽e#T\9 QziF4_Z3´ڝP;M!v +F!f]J-M`fT诏kzoNzjW\WtB)=bRm~M]_1YY_uu͚~uV4,E pBJ0(z Z&_wL/t)R;@1 ?$r(+/gs9m(yS+Iv,LBW^V)֮͗.L #J] ҎkA,cfFnJK?G:y~Udߑ-g1z>_njF_bF mۂS#Fɡ[.oV]\vdv=؆_MMdyվ7[5!WO ёYaKԮ֢I $nr/ÈB; tr}aMNtW ʒ9}yQBrW_bu4E %)QBOc#5MhiLb꓍]Վu>GpyxA5;Ie"' 4dN0RY~zMݕi HKϏx2O=R=>iW6PBg}_GG)!yh4E %}8>}z- _ѰwyT{t큖xYiaD~΋5,5asN ,{iA<~"$/kDw^e\'P4,O0%$pwpkp\ - p(j(A9}~{thiLBn o^kV&=-1M)-A\7eS_N* S1iZigRpf3L˸uZY*fQ=K 5֭.App24áTtuQBϙ374T&L~艴7bp#&n+M*\QtH}IҕIVK}VHUy@x7TLZiGˆHĎϨu>~ #͟'+YԦI)!LAW N8ZPPLPBL]ݛO(EhiLB[xA$4HK'hrZƩZsPec=id-BzǍx2~ Kf߂^瓘ˮa>;ŽEϴk8NLz: dhiCQ@I)!#Z*&?_T`hU nB6GòLLRtY5ssN< noTzߧOfw 9t˯Lx_(!ϋ^pp24áqw/%$tu@P0[Ւ_GoHPsv~? -Lz"'>O'pvArl 'fT_Đc)ևYTsHf~L͐/ervr%$44P,Β`!4á)!Y& - EA K/.ݍ(IWA?aDjmSʁ1+Vu>mR{`ȱ.V7jE7`UuzmPBr͹sE[2Z2p858\ghiLOegGò#6~и|0$+ ʝW@״格+mv "߲?J([z:d?9-3)ePXOؔ|xBiW2|1![JDY>(]yXXZ]}|$lq+d`u;Gr;7ض4|ZPdH9M_|rʄϜK>(<) sEgGS~kEIf=*o/ 3맒lzʄĊ<}Q SBɁ0X/ hi(N_^LOJʃ!>6Ŵi#h.mEҗ3q:us۸~5aV;g^jeA|)+yTki۷lj{lk=ÝƺZ5G{WPQOnci6۴;%FK\07w}~#zJn[9;r&0V3w%O<c1SB<=E Z>- 95p+䙞W4'L/pr뙔OI V5!qDrB??a\[ڕi#4vu#;rL\;;Oժ]+) yl;\vw7o]KtqJ;77{z g.'C6_M9+8g^1<57DR7iQ]nXusw*d/TS ^26EuL?Ru2Ar $O zj㤥CQ䓊 j#hi(NA+e zHyqr7fNϼun\?ΎWFclϓzSLV*NݔCJ}Dmi'R:7{34'=li&0 )d;#o:wZ9EdUs;YNN;hY%ă0\ii94PrJH>f}AKCqܷʴ5 2ρ],]ȪfZQjڐR/vJooLyPRRRNǴǩgcf&ܰRQ!oIuXN̰~=s+wc(`Vqf )!D.\4- 95ijO~*ˬ;hi(Nd AeRsXo޳E뫄q&]ԯ7f=gƵڐZ9 W{岠-+UCߤ:zyZ$l׮Llްs <ѥ^/' Av;[V Q)]2Xj:yVyT+a4u_xcv)! +o- - 95p0hU%$|9Z&ߵ;'>A bS!}14D zt)mmeYGذsIv߼u-aĵKy ΙWZ5qջ`ݜM]߿2muK.V64}d@f$N=3‹sѻOӍ#NӻS:cz~@ӔSb㰥-4P۷)!y{ - ]JKjx.NL.hЏ} )vr֕4fmX) |iBiZZh&z%;gK64PeZ^N 3zBKCq*|XԿ`[9֫BX՜ָVA'b(,^/~T1V!>xzqqhM %d9r^  - 95 JH^Pyo b!S"̭@6Q|bK:<ԆuԲh;x@=}9U ?X/==N-+4~?{bmKEKpE \Y/khi(N9'wy b!slXym8,mعR<5Dժ!tK"deS;3o'zƁB?IqzbhbsKZs(j)!geT#O 6Pl99u;4kJ{ aP\R[_Rj}Di1m\I-;8ƻZ{q:ee++8oi"q%$ܾz- ũ&3,(zh,EpKVՐRB A_>7 o7[89 tοٯ&3cg22Nj(`0 [N0 ̴]L.CZ&iHrJZVZB1v;|>蝏w{S㙲깟uc&oVzxCf49@夦I!{RI NF^}: u';FslB9ݩTq%-'RkmfsOjѤN.=x&=6>U+Dn(S]a{/iۖ۶I!}TOo- EK@ԉhT Q}W=7hiSHn? 8k,WT RUMǝ#x3ugQOhIy"g1} SZޗNj:mYY 1D'7ᗖpQĊR*Nacnx;]Q=*yK?{ŃW̷;^W\8Xj'5f 7-8FVt >oNu9.!i۪QK@P(j/UfRJ34)7;^wYܛR=%KKOl=hN77lZWwGJ@=Hyێ%j@ә4) YJNLG- !DK@ԃ͛U&S}z/`nx?dKvEZP +ή$NW3fh;n5Crc?^ݲtm~f9胧{S}7 OvG:ch-nZ;.f72.d?[_om0{<ӫ4Q933Ծ+y흉\(,2ccO=ZM6D~;]Q=! RKK;=fӠ'O)z:Odkܺzx4- uĄ4)D5YLڶGK#s/Ft,<єW`Z^0U9|=u{7-ߢmy4)|v̫@oK@P(j m*2]]O_4)7 jDtv|U Ԃ[N\_fӠztrR22z%~oi6Z ɽ{Νrngܵk?'S3:Yk_9rgs5U,K65I!i&hiSn]KEt4[@`JveKlF||ʋcm[J!%Ke~- FKI'ڤ\){zd&z*DQPgFէZq% wszޮ F vi)~Xjbiia`,KY_29 E @ ۖ˗WLLVhio;VD7܍EAX[p lF||/_&o9sF0`4-gʝ;eS \ePWPu-pӆ]KnU?uK@>z5yF||ţI!EU@ mKONK=rr6dܶM;' zڢ֖-U7IR}N#LFFDw-R$KoK<%ri5 DzU B=R= OZ'T-HӧMٝh\Xn/ՕqAԍ/ PjvۺmcsQ, VdEZ,fAv+-mD u3(\yvn /{pν'`s9'a8gS*U]=<[[:14p[KdQ8N|1 - .yin7ߔTWKeuڴl";wJ}rE::u2{Q۷uC+o뎖bO R*%3sŮ`G%pe]O?}Du(558Q٩{KdK@bķ3ٷO45P6-j1}{u~ҰS^T?%# ūnhˉUpė ZW(R,Œ qlBA>Li5r2ݭbG@|_H}zhi)F/+|%*~[ZA$_ ~LB*'ry#%qZ= [% 9"UUj䥥E ݗ@x5 >4,ɁGO_{{ x)qiiXOSJ6çS`|jࢾuKGM\WuJ niHXԔȶmv-0JŢ$C>~ ٵK@:ҰS\^Ϧ]dpi $c[ 4V4dz2~^(- f5d\O>*LFiq5ٶM&'u jiZ9emYe󎴴r>,]]#&_3~uOmX3@⍎+,o&Zv2埼9hpF(- &;pqF&*[O>?鏳/]Qү:}ZHͶx׮\nJKr57'۲i)%)ϽPG{Q(Yݧ׊ |?e_=My~0{Iy Uh,,Aq]qe9}ZH–ڪrU;QcIW44hi\Nō(i61%t^7Zv2~ Yݣ4dl|cqYu8|$- q}_SʪJMݻ=9sFu2d2@m[FKNGLPAi- rcцlre*{GX[ r8 @Y /J:lU;ell;wAԫRWKXU.~yؽ[ @KNF)ϏƜ)@!Zbhl=IН[~ug8tw@X`unsuUkR]_Zٽ{y.V,Jo#uuRSґJn=aPV7ݧ7- ;Wڳ)Ϗ?%Cb4Z?_jLC@(jguqԤS</S}qrYm&~X9$R5XbV!nj$5j[vLZ)6Zک/ٝ r(C%~y.W>}_lkU:;Wkr떔Jg!mi ik \W m•ɮjll}/r~/Sa3@j'][[irEd^ @͢N͒ҕ?f=*7FÿYJ_L}wpNV1N C4"9qd…ʜ)ii1)kodu@n݊*ekqMo7:?cOҜTO jlYX*kdkuq̤I^ @MN^BAv4<+<2hF]h@%|@ ء=}&7{Lb,i@Rsb5t]~bxX\WL**^ @N ^󧫩kS\uq̤y4ԕ46i[BN49"ai]8=}&7r}wc{\Ψ~){4vwwB 824Z@Wk'fWN0I55@`\+ڣۇ+lRy7yI:s: /*KH{'+tv㘉ʹs+ulVpa'7Q$v9kduq1/]>\idSorFO@˟ K)i:;E>XL\WΟݨ`*t>RM˱$V(L핀: _ڣۇ+lJ/ _` (}ll5u5>X#1/Ũ`j@B+bVPĕF6j`6LU'+*W`W Yq3q]`WzbBsf3G-Gy{OܶbK#ozJհBUvL^dbQru͌穁H,CmwK*X($7s uY[ٔ_\k֢=Ղv]?+ҁ02ڷOq>Ȧdnj8Zu}>S'`. gt [joW\tvN^eK9uJU +2XP?x }n[Me4OK1 R~ؠUn׏]]Xd|^9sFUyHN^?\yrX#bM? iMM<빜 Cۊ-lJ/.8iA?;/U956'.ccuLS*Em@yf84$S,f3噚uAnͰM 4Z'ԠF.s$. H : 6zK=j~D*@:Q֦JnlidS77*ḥ'+C?˭YgDw{Kҙlݭ\̴0 )iن[HeT_l,sK:NiF߯_.}tMq=3lwv҈~[0T(kSu]3ԤE<Am~[rLKρFN0bNwx_-l*+h_=1{H) Xn[ZSҫ/jXg0T--uL.#ul~KE*xnIGBlJgR: o|Ϟ>ȦXoF;~17{j$R܆Kz5x|8<;&6ŢSCCґČ: 6[''ծ]5$'@ H 4|/]>zM1s@c:K5S^JUV?7ovJVBƒLl# ҆Fʃ-v 2*H&T"(Œk/,7UB]sޙ~tޮqt50d@?P@sgAp$ȅ.]OU.3A`h`@=^+Ԥk)bAh xz矅xMEӕsI;;Ryh4~_{)pa> C=7z I^N}gWI=V XP?.%z ^yJS`ofFVBMNmiY2EVρǀ sszf, N048(y/]rwFpњ o/l5@>5r~ q)3ajJVʴd|0"N>ĦMMȈN=,ϖ-zy uwK۷]\i&m j|kPOީJ 9]LN0JV `q|vѣFt }gW V ?K8?/ɫM-33S+eZaIJ55cyDqթ O'๴z9YTYW{K0Zv<2ӧ]4il(8zI@wO4oJ55cO~8y+_zjlhFF\x8 @LszvpњoKA jdju xPシ( /kT{Ҍr`vVVʨ]s=iѣ`:I\ ʷa^"N>Gn=;hM7kDU kOs:$mѼ,?CWf /0JkV]q|'Lezvu[;: }/uu >szvpњo;)Q~}f?>uU'7*Gˍ+WRFᇮg Etw #֑?7{?ibWn=;hM77 ;? C>Y9 >bwH9LJ5Y?|^8mdi x֡}$Hk-}lqٱC+%c\ =4fpPNp7y?wugĆ%o 4Z?u%u櫪 '9[z<8:Em ˙uj5:z)7CCv뾑<{3ib- J5Yji+O@Os(H=xfk9qB+%0@iMo$ݼodА<߾{'ib! J5Yji+O@OsvYzMm]HV C޾]+%3H8 ٵKuȔ9?0{'ib! J5Yji+O@OsqzM]fI^}Vʨnr=7뾑5| 33A V(H^84ZQ24<׌C?  +V4K==Z)yء CTVnYPo?_Q\W7wd6A4v f7f0ƥ"i+)Th0زa`l=wfWjwX8 @$px cK5>{Vx }'`-?|\뷷LUk*/L_Ғv\ ZoTO=\42yh*KrWwvHaanqX>/ys9-Kq!Kf Hur]T`2̟ziҒ0wjzԅ8 @i|v߉–Fk}?,9>,5,EUA*ܹyk!N=FGOu$ٞ=< /y;QhMO|qՑ/5,ׄE}oK]]X ]]1C{ttCWvH }vv풼)Ԏ-o׏Z[/҇|k¢^yz coT*-Imݪ=!N%VVLFG'lVuib;wJjǖFk}w_): _ C>5gQO]]Aŋ1z@{q,W51=C2xGh X8 @Kvvj(li'w~e }'`-}WQs-m Ԟ=vލ8 ƭepGH_oib1-QkWjH Ximcvu_Xm\{I7:# q,!Zڭ#$j X8 @%;6wњb^:vO҇|k{(H3]jh{EH=XX@ VffG}dS-yO;QP7;;{…5׶mb׊GXn4!tutIk4mHqt H޽}#]>D2٬v߀i(li蚝ݴiceR,@Ory$r~Wir 4:vLz{F8!ãG,@ k Ovli@[GGG,~.r; ,. uJ܎1 WU9;oihqǏKTx АdoqΝ7<ڱ_v7 5cLzqVv %&C㰶c+&QJ.ZҘT\Ez7㵧XB0/3gzoG=-[JÇ9KqgZ"<lX_!/L_V__hp [\{*U,jF=*lvt@uخ]Ƿ];wnnnԩS^۷oOX tLW; ,gɢ>ǂ@!˗CcS(i5[-RŢvnhGQ>,y|{zsg [nJqc O'`9Kucm%~wu -.ȧKRIңjJ?<F vΝ)li)?Gĝ竉~gQ%Ϗ`b14F8Bgϖ7 JzT;$WW;7: @\Or/7- jOSiǷȵk1)|K@KS?ְԎN;^k4ܔ#S[YO*,g,TӎoF#,Bc\et+ qW=ib}&|y+R+2@Or/'-ZMk"Rhp:;|K@IkF-,vt@uؑ#—9Rƺ2@Or/]ʚy4kǷBX(H&>$4;E_ihk\A܀4~ɳMOv`KM™Eξ3@Or/*Sv|8#io}}T*iFN+ڹ=ibGJh::g[nJq73@OrXo~^4h~}XЎoz=lk LwvzIcJS9'ڹ=ibӒg7vһx~w  l2O\4zI;]N L[[vz=cݒ٩952"ǏkP--}-һ KM󠶖` 4 X.zzooO`z=,Bc$svz=c589uBkPݻ%/o4v`KM7NW-y|Νli)՛O:wNڹ=ig7rY;Ȧl^a$B?˹{o7|1m1׎dW18(Kڹᣉ 6:C{WJt絣[+lj旪ma?'nhFp,ތw]( Z_׵B_ggbLѡ w4xOҗrVӎ KqtT;7: `*vtqM}A;}W֚\A?9}BIQni>J{rRюdW K\듬Ȉvn@u@CttHAJ#ZGA;]\mRp,>SUPNL_$HfzZ;: _iɓ¾-%86C|"ys[+lj{QL4)~PiUNkkG+ [\AUԎNh9'qn\idSk6Y%H0]jR$p,~tM;I4V‚pz3+vtqM-=gA;޼H`? XΏC}򚠫bz{c$svt ກIY*8֎@ݨ%}RvnqM-A;J͋8˕PR?W6@|bdLX;=;?4Ca_ZZҎ IW;7: Qzz$hWԲ?|u-#[l^*,͡RV9u_S'\bdNΛ+ %eibB;7<-Ya܀*4FZҎVKcC^J8%e)\.TC jQ4쬰 ^V\idS7صA fb'`9/5YcOonM;?N{ $J73;ko,vn@u@ml`ovt[qM-_ma$0zVlC?wk[;sEYiOKҒvt_]ipWr¾υ7=FX rY;ȦoKA j U'`9/;ƞ7?V)c$svt_^^ip׷ RWvt%=yFXׯ VJ#ZQ H4N ='`9/oI{T8_܌[cjU;:)/4+NJO*N5bŕtB '฼{,k%G(g>@J@v?}5Ƞ]vvti$;s;+ ?l~RmQ߫Oqy=ԥڪ87ߑZ͆5F8j%qYNwOovzin~^]C$Õ6RłuZHPG?Pw[5i#m5F8:xPX#k>Pl7PBGvnp'jł0]p\ Ckd:;mh?ȗ_iȮF_;#Sfg֘ӧnNhn9JOl1b\fNPD?Pݢ8WJH۱c|vz _} 4v$ё ;yJE;=4VػWcJO?yD`~uL j'|b5 j?UZ7[c${vz _} ffeUȈrنp 3Z%!JOmXD34ͨ~ Z3qsIi;v#bQ;=#]e-# |fF;= 4V|Op'/L(̞OK)Gpݥ6Qi>WJڏH[l#ǵ9ÕCy6>8p u@+ Hァ=\iIwVڢ8BmrZHɡvA۟Ļ~5F26Iyɕ,ڿ_X39n;xP]wh\B CCot_vnp'\ X07_i9o/z{sͲ LOkŸ+ 32"/KvnNpU&_;lh?p u@+ K>;wjvW~RkA fD12+ XW |&NHޭ 4d˵k¦ԜUSS:uJ;=4VpAnoI1\iI}k+'(~i@ԯ4`m^nᑠ7 6>nηjr+ R0Ɣo>@Qx/ ?Pcvtp'6A %4` J}󙢬{X+hr+ )5ghHpo 7PЎ: E::+ ?WQ X0{'* 5.\i<<7,kiO_>kpJ%@yx C>1uqYǰ3g4?pu@twSW~ra X06~ •C(d1=_[1NdW2qxԘw~\2;kPK]]'QOv%\iɑD1b|~Y+3+ x?u7XM_ۭ1i0O??4dEJee9wj?8p@HGhD"OvJE;3#jł鹴Rȕ%Y{o'A:}#i@y +W~i#q_ڳ&KjՆx=Ii-'6蕧-KKZPVm^ݟO RU0Hwx~_},5ujLIi-$]޶a;{D`.ZR -Ε,oua{o\%~Az{1)YLxJoݺ(K۶jU1v萼rk\E:o/D` Sc@Ks?C?N6I{s&/HwYcZ+ 9%K~ py>|pu@,,< >߅vz7p'w6?ۍ' z O.(rJOTW?ʟ;.M,혁&+Z1(eI'k*.*q&YS.P(8ukfC\PWϝ9Ϲ{߯ r9735%=`74zIo/F:Y˕F?p^2~T]EP{QyLPϟW9Io$) 6ۛKK+SgYf5[oIoX: ~YuuIo/F:FW?ИS?lJg[Jv!Êj:ِ^ߨRI55)՜ "fMa{_KoX: ~OBAz{Q4ɶk?ИƑPc4`:-JYz}j穅!fMRIe)*Szܻ\$}`=4ffۋ"NfK5lKi.uy Q++jN6J%D!f/J\N/Es C`N{;jHim/V7 lKi.uջt;|F (՟'$;;cUsn9ɱcI@`F.M/CJC\>̬V^~ 招[@-Oru՟;W+T,s @r`X-`by$N0# ՁqҐgxͰq$p|i] +@Oruf_G3>U襸nHRl>z4V_dY0!8}Z !9tH~rHi:{>i?~v8r@o~\x$> ,GPNjw#/0gcCyrXs@`bӣP2lɨbQ !c/ҫ!!+744'ۏ*o _g/I5C?;nnZ#WkԀ) P͢vΡKGO&P b4S:bTPcQy<مN0i}]C+Rd?0Vp@cN);Ԁ) z{lUWPs_W\Wr9`WOkbCU,5>H 4|椷7F:Yv@c .S@Pf_ߒ>¨I#}`1RlZ)=02L6܇ZZYI$uass#G7F:Y7{\~(>eyJC_ֱ+՟[`J0T|2穉 3'6T&H&4T)"N]Zs@cG aEz{#_>ЫչTO>Q9"f]2=;N4p"ju玚6=iTJ`)tOjCz}#_>]YrYeu5OJ4L#oV<56V_*ɨbQ DtuϜ R锈~aHz}З4#___?Q]id7 vZJ[-SؤC IK]bQѢٴCU]i\,Ư; ;\#:\9;w3~y~U~1Yk3X i\W9_K) iҧNi;wz"Bկ%3QV BJNF כ'}F4،ީTKC8*>HRL/@ۧ_^vU.z%tTj` F wG~8p@Ұ/}cR2`*#RlFPSM?Orym! ʹSPPZӋs萪V }\.{1  a'S^g?f<_oߤM4X~;K-M67*$A8s@faRzjJn9 +јڗmmvwK: @J썍IRv2-nd<_oOM4XGυvo7/HrioW @jf!S%庡ӋqƌGAkK: @PO~ AJNŌk.I JiA]BUo;/HT838(}4Y~@zLLD~"U_~٧M_I@SN+lmmZ> ~4dZfH: JiA]E2_GO/HАrP33#}4Y$)]E{"ϫ>,-I_44YGꗁ˗) ;ˏx~FkN\^t`'NG5*ㄚ7P@ fQt֧B$FG*YP{->ҫǏzXxƗMqf4XSӖa&5LH_\N9NHR,ڔ[ϡC#9u#p[ͪÀfA nnNT*njz'כ af4XZ.?WM 5;\W9N>FJ@E]]aP7nۙ4u@twkIcFJNƽŌkWVw`~ZcXoͅIۿ_9NfÇgHiHSz~>l}ziZ[ ^63Fjs҇ͅ: ],zHiɸkLXlJ1.6uC&~|umUz+ ;]]gHiH8Rzr2ҸUB$ ♳g~NK444sN=8p@zҰq/?Tّb5fc1ƥ4؆ntYƗw09\W9N>CJ@Ŕґ4߯JִT?ؘa@NH^)wHiėŕՌk̾VwƘ`Qj;^. TGvRR,Wݡ6s*"\""w;wu@JLLVҫljL|sט_\}*>4Ĕ^lIzwo68/} 4;B5muFFT6.}ԨRbqQ-ܻ'zHiЗ_x^Mzwh) 5=1Sks2^Uj@J@%|Dm3\cfsڻ7dDm@NHV'wHiЗJ5S>ahJ=j==.`yCz}G(UK$4K @}QWXIϫkvbB6iwfmXX^=64d_(;Z[uU*;$ڿ?9SK؄: =>Tǃ}#d<_oIu17cE>ډb)}wQj.^H) idJOM) ۣÇU)V~UJ_X: =juNE9#}Z^bnJ%jm%>_~Z@F>\W9‚@RHiHSzjJezTuIJE>v'< +Q_?Qi4b(g@"ؚ&tXrD[Uc5,첺sqi>yIӟ|SGrgjO_4_~T.f͔tK@P&0>I{K j Ϊ٬NSjB ;)}sioJ+/k $4X5<'G ZT/||i;$^M4\\ֵP{8kT- qA ccR_MꬥC9z⿡ʭ[ګ 9 V6nbލ#>4_~W)7˿ZoiEFdQ(HS8yw8SlYii uM>uurg׭OW7nho $4im5+>T{ Ls/R~3ቜZoiEܪ1{~|1O};GK@t>/'O: !Wy(ݼ)Us@٬QL+)7ʂ<- vCCooU=tttgpP{hi3#qP7AO6zm_O4>05w՞>j4ɂYRo7iƂQ᝻^07>^BG&#+co0Z,&-==2KCܹ#?,OHl!dqQ@ZZBWN~;tH ^SsI6b˽ƪ$nE e8vL{HH&k^Ŕ}rI{vؖ5- '=Ƒ u#5ʠ ٬tv:zٿ_gs?gTL{iu#E 2#g)-d_y͒{=>l͚[QjfJ1ϡC;AK@ſoߖPW1--r5dp[CK#yWkio!9U^{|ؚ5- #)5lroꇆqBedD{hihBAZd?/Al&@2mmڣGF2'Roִ-`%:Zw'}9sK)A<+sskQ jBBZ<(hW;4!OjOZd˿7_JyY'-`%:rc_T~*ʊ@hijiߗ^qݰ)ڟVQHkS{H&^SoG@{|xe- #KIkuqBe`@{ R4Y-t:s&+鑇"]Ţn$++GF2Yv|K,kiE] .MSWt8N\Zv[:䤡A%rO[ 6n djJ{(H&^[~3I[X~ƲP=7j|_\W'lƴ7"BK@zK߾-MM^ve|\EH5(ڣGF2;r)7=_ @`B~ʖ95]&+633ڛQ ,hBAN5R,j$!XPvᕲgJӇFK#{O AzOy&Y^c_Ke(idvէ=eu]{|M338R/ioFK@Y\_6ktu5E VA`~]=}h4ʗĹ=;ʖPԕ3C/gǢn ǵB ljLF׍', #GGF2YZO{~(5V4؄R`~u*=QqPq]YX^8 3gMc}57ՙqϜgTĪ1ZmV `XڲpnjSu.juK"įzgI3XX=y}/>I&L>o?q,ŢziTf=}{hi)/rŊ𫼶4E.(cFҴ8V>z=4,-=;& ` 侨þ}\=4”ח?5X3ֳ֗TW}+z|{SSa8֭$kmgR,uy^o-YL E nP3YZa/8m֍4E=[9ruzv/\*Ţ8ϵk;mgԔ un9~\~)j$yٲzS_X3?>~|fWTQ\o9_lZqqNa6Zznn0{})dnٳG_ ƍmlkQ[C Ɂ{R.KnUЊ@vhNbQj5@K#L9~& QHjҴ'- @Qws3og_sܹcEKhhHݻr\"~*#}}kl]*ٽ[eǎ߹S壏T$k5(G֣FrIsh\4a=>qK@>Ppou}2{ZOh3ZZgaAߗQ~ٸu\_TZ9e\X @VϿzMGo-0VbEzV以 (YUwwEK{ѐnqN1Z|FK=?w۹SJ%9~\&'%IY5 yMq.u6mFzt-Za˿[iX5^[r?]>wX )9e<^H9@8ɷZEK#L{3(VtzvK@Qԝqk_e |q8LO@z4Q2EqN}Gעܿ+w Q싦B;#iJDE}͜sG租Rg4x! R,sӫS_RsXŊ:#oi:cJftW}+o(9eRg4x-CC&YBK#L!k(VdBBK@QS\wտ؍y |q8L( i3Z}z`hi- dȈ8ɓ'֣GK#L]Ӆ(Vna=;]u'Iר(ylUqNAUg4x9Ήs=k=zz4˟.X@ii.Nݚ/sRz_s\b:4Q2gqQEq.uGOFy*(NUNK@FQԝϖ7Ą8϶m` 4Qh^qNZzhi)B+rޢNK@FQԝ75Ut}+CjO1Ug4xE.s:e=zJ48[bEL[ \4dEm"׼o+7xajJӧX{w~- >s5,VXRaSp^[BR_\@ii(ʶUyכu}q8Ϟ= 9@F!Υ)S8/r!u9}n=>@Q<]R3{qN˗^9@F<(ΥΆ $֣AK#LAB+R:?c=;@E3~]W"I[Sfլw~- >s54= Za xŊlKzv  (jCO撮Qyʙ[y[ǯQw(UYU4s]JR ! #~ҩfQS)snZʬ&K.1r-.~|9xoXi0SLLhWo+ }?9[I,"j <; cז}+v{K "9{VXij{wi;##ڽJ'o_鿮$iWJ@0ԺV֛3 ' s'tY7+ `C  "mA`ᓷ/IfIy‚vwy[iZ"VTALOkV,c8@~=Dή]Юm4|r}YDp _juMN35 `+ 1… [o+ uRillIE/Vpc-L5?vw[HG)ý{Xi0_A$&hW6VJROOU###Po,i?;'`CmZy]/5ea׮ Q|+ `C v"mX vakbbb~9;WNҬ ^j P[9s24]ߖ i>L`+ 1rС  o+ ]Rg9ybfg }1F~9ofkM=D:@h4|Xi0kǏvaT*|~|5IvxhjW P񝵈 \]ߖZ-r3o`+ 1r vm`/aYDV6J@0vL̅ʱٚvwsn "?XijD"svm`/rfןִJ@^0vbą oXijykA$&շOn/'invW֛8v /j;/V~RK,"3v}^]i ڔJ}u_/iw7 QN~|c2Vct ? + ~qfqŇUp 5 䟗5; oJ pXi0KAvga/ YDZ?\z~ܮ4Cmoq+k7ԩ Xijat4COJ'_뗫Iev}.x^iښO8¯=nZx KXijaf&yOJ'_BZN,"o^YԮ+ P[hwOݴ7H|+ `C ;|uvb/$""pJ} A*~﹊vq놆H|~\b2Vct vT4|r寬7wgIG˛t?+ 1]U. QXij] rYXiė?-'isX`CmбZ܅ YH|N~a2Vct goO|f!͒+U+ 1}t{-oˋݭ "  + `C k kW+ [dYywFS:nJq A!oe909D358Je4PDb20]}k4|o{q!ImY;.Jq M2Q8:Y.z]Xi05HLӮ5V> ~PM,"4†v}݌j.ݿhχ ǵOXij]V bi;{hW+ [][Loدߨ+1$JȆ8F\\xDPS"+RJ6UR9g'ZCZgߣXtlX3Vc}׹m`4kDD>JXip'&Jyf'-Vc}zҽ/lXw/ u{+ C &AD{F9q;k=ih3Js [G늷/ c~>T*AD+ C 2Aܾm{4ʉ74ܭ%Js [?[T_fO ŋQ4xJs 5ȼV:}d{4ʉ͍,I5u}b9ڭ7/ #Ñ#ADg/+ C 2j:##ֽJIfٲ N48Puy{._jADηJg48PL:Z-aQN^_HLwW+ 1ncMuD49|KJg48PAD9aQNI[ N48Pj۾·km{e\nر+ 1"z{H׹~ݺnXi794Suwb9ڳ- ca!T*AD·@Xij9~"Jg48PTdl̺4ʉӅKI)2uwa9ڿE۾upPѧZ>bJg48POD4xѺ4ʉ]MLn@lXip緖t|}Ӻ{jADJ%|Vm}DXip"]7ZշcQN] h$isJs 7iZw/Ώ@7g@\XijQ "YWߎF9qw"?jXwVc{򴝤u~Vú{,-J%34Z-c "4xJs 5(M]+rE-$im^֟ăB86x۟Ѱ.^H.̌V~h}ĂXipw "]7Zշ`QNn{F$:=ioZ Vch]S`]&' C3 4xJs 5XM=+r7I)2>b@$Xip.EoX/j53PZۑ c(rmA"ruuL1EheRJ%Pz_b=,g|gΙO]Gsy,@4GCq훶ǫ~o~okw礩kQiJq@֜<~zF9q_魏I{ϵw<* Pok1'9 #dT,`7p"R޻J[I{jgW{{`ȡpsC{KS'3#dT,`!'RxΟ޻Ju$F8B5's"˨4Gm|܉I4ʉc+$=wKUJq: onx<[Iz<{ԉ̙3#XT,`i'RxΝ޻Jqv~sѦF8Bή8wΉxӧ#LT,`Y'RxJۗ \^>PQi0PdmT=KS'3Nio0QiJq@ܖH*r[Փ, uX|ﵴԔ4uMBqT,`E'Rx*4ʉ@L{>}A`˱Ūc6ښKS'3˨4GHy=4ʉpd^6vO Pi0PeK~lwNs)P˨4Gml̉Q4ʉpͭ,OzZڇ* 개xƿ^<6CCNg.]^`5:s]T/dz=rmk@H4G2iJC{,-9IS ˨4Gmr҉7޻J5$5C uX.iz_ mn4u">@84XF8B nN kEQN,e/v T#a +U#t4uni`5)<ǎiEQN|>i$Y=ٗϵO T#aYx<ήYYq"30>>B@2* jp"gsS{}TMe=rYi@04G?T^<6KS'?g@4XF8B z##N|4ʉ$A8BcV=xΞu"=M}G2* j;y҉JE{}Tj3rv@8Bզ\:Y^>̣`5>D ŋ{('nNzst}`~ӆqq"s`˨4GDozډIQi7VKook T#dž}ڋǩv;9rD0JeT#w)<{_Y@QN^\{No~5>4GϞ{/xfgET#ԹsNjڋrىυ $* Qi0Phyׯ;թ4BŗT.%.lj_"* p~jxΟw"* Qi0PhyNgEթ4BŗTʵ(Ig5#C8B;XxwLꪋc'9* Qi0Phyc'y\^J#T|G(I}[4GsgVo(k/>s"nmMC2* j!q"B4ė߸(I7h* <*{{oBNv"۫}`5|PiJq@nr"gzZ{o* J?ZDI=7/`0Pч^/r9a ˨4G`dĉda4J /Q9$]zRV>u]_x)\;PiJq@H9:* ]'uuuiZǵ(IL}<[z{6˹sNgW%T,`bщd_U*N3 QzO!Ig^>>'`Σ+_U=臿^<,kk.Hiow5QiJq@H9:* uRittFsuttoO$mdn?i@0Px,mk/'3++ګ * Qi0PȈ<~7FϷy%i#SHW7Jq:<S+5ŃS.;yS{uA2* j!t"g|\{o*P3(IwgGD8BGv<^5Ct<{ * Qi0PȈ<{Si/X_HҨY~Jj4G-gUC45D| a˨4G`pЉd__qퟫQ62h@ u]^y4_^J4XF8B /:S,*M&|-gU$B^J_kQiK]W?<:N`I'S^-ӼM%5Fm~؇tҴcZaB ù?ƫ^th2=xZ^am|ـq|J{Nff%T,`Q'y>@ym*0q6v(#ӕƋ]sh/* "x~mh/E'?CC* Qi0PŋN$wJ#L|E=ڈ4vkOڈJq5=ޗڋtqD<Wj4XF8B 33N$\6Fx%iN} mC8B]Dӏ6<ޗڋndĉJeT#q<)M&nNT%&vCڅJq&5<^cwֵꪋc'9>:JeT#Q.;̳.*0q]}܌4̮4-4GhǓ[ڋ--8v"qT,`RɉdtQioZ99>* "Z{^q~qT,`Q'yE&nW*Q_?> CF8B]D큹%NgGgQiJq@ &'HW^J#L|#E콆Q&* "y]i/'O:cۣ4XF8B N$LL(M&nQO> CC8B]Dix<մǁ8=:JeT#Q.;sTaQm(9yR> A8B]Ds+o3Uq`k:yT* Qi0PDD2kSioW|ѕQ9:Siia`.;Iycr!)T,`rىdjiM&n575FI޹pC(uAuOU܉̓'kSio?(;^j@^T#՚{8؉xT,`U'3.iM&nMs?nFIsz+QB8B]PC5 g8)GGPiJq@8z{H)5w7߬ GIsj=ȁJqN~Qx]8~ZuqD|O{{t˨4GcpЉdRIsg*0qj3_GIsoյuA 'yz{h3* Qi0PGD2Ӛ;Si_iFIs.|\2`.fڋ߉̃ګͨ4XF8B <ǎiL&n~Q(Is u}ti/WZZr">ګͨ4XF8B ccN$ık6v7@>ۈ4LW]sȀJqkocjڋ㕶\;̳U=ډJeT#qWۙJ#Li7Q( * ":>WxH\i/y'3ګ4XF8B c'yDmg*0q󋥾Y5J} u,y<߽8^roD2OOmC2* jA|ىd8vTa'݈4̭4`.{ [?Uwܒ5]Dж]mk[H R al]mBױ:hƗ 3liÅׯ'y}r>y峬];r"!#74XJq 5,,8f'n~-W$i<^ʵ`4P\3<];u"!׮}Je4P{'kt ҈7>j#I=9쀕"[ x<];p IۡXijq"޹|Y-+8qXIlyX>Jq u]r%/;LOkW`2Vcf`xy4/]Jl/99V>Jq u]M+z+N$$]Xi0 wuڲ҈7;7]Kl/`C]Dgcgyq"9yR:+ `C 6;;ӖFEW_{vjf9~Xi0.w_iǮ 9'rY-+8q;6~p#Kܜoj`C]D-}]2=DBrvuV,c8@lwe4 s$͂sFks`C]DaMؕ W*9ձXijyM'❁4 yUM,8uCxVc֧̀Wű[g:4n4XJq 5،8e'n~XlluYC_4P;sű[w:LNjWG`+ 1b37D۫ӖF$͂u#[lliw`C]DCOfű[ժ+w.]Үvc2VcC'n40Ւ4 NDU"*O.N9=Je4PMDB mYiĉaϺndIGڇ-Vcx-^M8<N*h+V,c8@l܉ZUhJ#N3$͂sf%oi`C]DcՀwrvqxr"!Ӯb2VcD1'E4Hԓ4 />Y>`8NW]HH\Ѯb2VcDωxgaA*+8q;Rh%Itٓ\Jq uuWz]~w"9sF7ڊXi0!'>PJ#NN5׵$͂{}`8 W^[-s.ϵ}Xijxщx҈7S-$͂x}4XPNV ɣG>4XJq 5Ε+ UYiĉfW%|SXi.뀷K5 vu+ `C BN;_Vc gNյ#ċ/:twkF`+ 1"T.;luXiĉٲռ+͒pOĎ¹FLC8B:JԮ6a2VcD'+8q;^$?֮Ď<[.W:hWG`+ 1"DӣPF18qY@~<^Ď<'>kjG'7Ю6a2VcDhpЉx 4͏O,W6Qc8p WƋ-J%'^hV,c8@zˉxTrAWe'n~$z&jId`+ 1t9{-uΑ#.ϵXijt"!?説4͏ZO,,}]+ 1rga-=|fU8ML8|vu+ `C B ItUVqG"o:8GE*tE#Ql0>cDz!b;J1 5HM` `H V(Q (Vc[K.q 2S. 99}Z7Xi0|މN.2J#Lp\ʼn_?@Xi0n!McW!I^rvu4Xi09'Ⓥ3J#Lp,oIS7*_r_UKʷUhȝ;N'I] c2Vciu89q"Ӟ4r'~i /Jq u 9vhiS;R':0V,c8@Hăg~Kh 6 ke6?u@Ν;_?ʼn_~wv} ?q>wvq4޽+".m:;k@)\Pi~dP( Vc[Bw~wfiz{WD\iGCXij!۷oQĥMRf CtQU@(Xi0wOGK4G:ٷO7Je4PɓN$ukJ#L`UlFqk[jV7z/,]룙|Ӊ\֮`+ 1B;9r$4ٟ>.Eq{6A`8ڸ}}_-iG3]D|V,c8@nr"5d&^~[h+c_-iJq e)mysvU L.s"V,c8@Ⱦމ@v Yi3KQx;_\miv>Vc-;|w'ɆH jFXij!+Oj/?p-5Y#_]Xi06X{]OspzQ |ׯ;kW/V,c8@j5'b14WKQx?;+ 1fMϭ]I!Y4_D|25]Xijw"3?Q=Vaޣ(NRZԮp4Pke+يv}l':i/V,c8@v"37Q=Vaũ(Nѝ;N'ᅕXi0cǜH eTFx_'QIieS>`Cm[U㶞K-N뮻ۉkWV,c8@^}ՉN.*,/O \*Fq⑙+݁jۛkݱH kV,c8@^{͉,/OMެFq7>hwv2Vc *V7.$ݑ[wQWYHHQq11JSHmnfIH1`B^.B4M/"7n@ڿZZaߜ4sf=zF " YFVhY^箭 uoDa3Vc ٳEtcQM|zbf+ 1owPkkA$& աJg48P'HLZ|Ҩ&^>z}zfzź;PN48P{𻻭#v'zdu PÇ:X+ C ; "1η+jv-}g݁rb9?FU/ǃ:Y+ C ;D9>b4HL_Yʉj[Ys]yb{c#``l,ֽJg48P αcbQM|<IisueJs 3wZk7Y8}:39iz4xJs 5"RtrlJxxΓVfyܴ+ 1Ԇ϶jQk7;`q\Qg|ܺ7Xij53Db2?c+V^/\^LL?.+ 1Ԇb9jfV `fd$3S˽uǏHL>Ⱥ:Xijz8:*Ҩ&^>urmn[ʆt+7jon,Y8t(39iJ4xJs 5 "ՇF5W/%i̓'Ła90D٣w':ֽJg48P@ ΧՇF5򱯡?74VeJs u1߷#Ɲw "LNZ+ C N "\WVǾN44-@ٰC]^8M"\dJ4xJs 5 "ꌍՇF5$ʹyƒuqlXip7jtoFn5?\DԹzպ7XijuLQgx8>4}YJLX. + 1ԹZ]}ح۟83-EFp-(F8 V,@[qcb)-v6MQcnU5]B" b39;t>['S mn4" {C8v獈:J#W|mN~i8648n;_o&/}3\}8g|܈sPbe48ƌ:oժ>4}]y~͙%Łaq u+ se9ڜ]ڰ} %#Wh/41guzzZՇF6q﫡t,. + crd)[99?xlA#Wh/41ۋFD'[ՇF6qlJdfȄ s஡!#Wh/41GgQgs%eXid7Q.y~?V궋J꤄ 3p-3*w6l N5"ꌌ %V\JjأLjIKʰ&n>|hvq UXipCB)3*3uccFD+Wl+ .cq 5uffZRF6qUMvq UXipC7N䧼HqFDKl+ .cq 510`DoIVGʶJWtz7*Æc tuum+ .cq 514dDkIVGx~WJ†b5ƃRVWMGQeաJXipC {\fDԹp%eXid7Qy~襁Jx'̓s 'C{6"q25e:Xip+ c`9#ٳ-)J#r/hџmR1Z/vdB>>QC8XY1";f024(# U۪@86ǵJ1' Ol$7"tu =V\JjhvQ䛰&n> |Q@lR1ԇ6fj]Ratfz{:k7Xip+ cunL +l#J~6;_. + cWT #C5E9ވsce48fuoJ#20_@@8z_OT)cRD0Ն->mDY\z41Ьۈӓ|VGl8*48njg6o]ٶ}V04"qce48foaD*q4(_T槫h+.+ KPW g6,Tyb`Rng HJ#4 + cQ;&4 W/I)r{OwuVb1I)D|]MXi_>l궧84̡Wn]X>_ʹMg/u{7F}C}"HuWGPf49V P֤A25rVė*ze@t`8Cz+^}5❼KNr\q"F?LJ~=ؘB9qtWGP4`G455I!sB5Xi_>^HXj*O.D+ oW/s럺68n6Ri>r/nw*B(QݽQi0+ c`GR9r Vė*ze@t`o׼ԃ\ e<}x<|3+i|GsmmRpNXi0C ikB(/4/Ut/l$,[5tyŎ~OZC_MgGT0˺[%o dR IݽQi0+ c`7]]R8fVė*ze@t`l<8au[&2gRl/{Ӓ7ښ"HVWuWGm8d4K!s,CJ#Ql ,{J^?ř7KN(n9hWo 1)rIY,ꮎpNXi0C BjhXihJ>[|l uҳ\xX;fO3#ʇP S?l~[ܘ2ntC`gR97j9 &cp 5f}] $u`W*;UOOf]S}{ +]zT4_v~͔],~+hlB(MwoԌsLJjI kttn---{a#a٪<8'l,[5%݃AKH Z_xXM;1U$ ym~{.ew<[^~ZBÇGDXd4`R\4rʲUct- QV׫.V.Sgߔ=L; U\&>GDXd4`CCR|Q4H&n>,[5+$A֘zSN#Iß[,6WK_W֜eI)D\{tDuLFK(j6>.Pp4H&n>\-,[5ͧt- ʵ={:r!Vs2kVo@ܳG N8GtXd4`RtuIߏtZGL1e٪i>{p >hi1U +Rb=a /gxJ],BI)i0-  ښ"LVW#8F2q`dl4=84X]r!mBl;7&cW o^<+~Cgq)Db`8mnN)rtZG+nʲUsFI@|vra}YrB,;$r?9TGJ֗O-Tʎ)rO)i0- z{a⺭MK#pzMYjNl- `r[NZ}0?\觅{ޚLH!Qݣ#j`2Z GQK9"VL|ZJYjOZոhsdoI)cN|KB߿ 4<,۷u`2Z GQKJ!ĉVL|SS⃖`>!x݅BʅLפs} @Q}gB9]]V==FKhi0E /u"Lyգii$7FJ)VM)݃AK0VΫ/vMB, f\~o=PԀiY)D m@Khi0E /UI!VL|8,[5nt- vP{1k"bI0*۽sg_(M zBQ9~\ &GG`2Z GQvH!KK#pzMYjNtu- @ͭg+\/=}By%03i>I5[TC &{z- &p5lĄB9[:F2q`j)e٪i>{p >hiZ<+/Cf9ؕ¥Bd2R09rDhZLFK(j؎u)D<}ҹ4bʲU|J@|^ɯ'`N;o:/Kŏ\~Qo{ K!ݣ=hi0- `:;YXhPZGRʲU|J@|ڪ7_Z6 =]s~7+~5`ߗ{J!%k5ӣ=hi0- `B(gtCii$7rSD}Q;vօkcz\g9X\uQ0H6+ݣmhi0- `_ L|ϖS뮧{p >hiQS}sI3Y"E cpP &GG`2Z GQ6=+PNKH&n>,[5+nu3nB&s|/0J!BtOd4m~] ޖݺ8g" (5HP\ӆDȩR0 hIZ@' )پIqϯhL|8|i_I- Zٹ{`񚻐Wg HCQ8zT+eѱhip- `?J'֭4%LJzp >hi5qu;.4bm-}EQ.RYX뉖8VoVq߷_F2q~%=84{Vii#xeeBsi|d[ - zTlSϴ#yloZs9PԀR9wNzXg4Qzilr労4/=?0\Qzp >hi+K)Z<=gjmS9QԀGt:LFCzXg4Qz￯ɑ#+H&n>B ϗ/NݭזK@QRfgRkJ ?Z\FK(jXM,WL|["gb\xxjy|L~ӉC,)\J#}ѡ|{zRym= 4Q`嗵R\F2qh{~`gbY?WL)?5SdՑ>;P@IJYNk֔Ǐ2ZGQ)q2hi$7i,=84'zK_+8xa܁zwxsE DNk֔!m B4Q`$JZGۋfVMzp &hi`j4;j; j"y<4xREopwK)n5~Z6!Z\FK(j0j-d#?j@LF`L7* -UP@dyZs6-Z\FK(j0j-d#ܩ5LsVMzp &hi`ci4;3~:d濖On?O:3= r4Q`$JZG+k}Qv:gnF-Oϫm(j 2Z) 8dZ)tCK#wrt ZpJsLŌ8/rݑO-F(j i32"e48#SSZ)d2H&n> ϗ(ei؆8<ɦ srsr{};gn rfc⊢jiImm4QA%W_5\F<ۮL݌WloZΌL~' w5?++*R"ٷOZhip- @+파.GK#xa kD- Ri{o+r]y!8xݭ ÿP@={yme48-oDsr4≗u maށru__HNFf^^Q_o۾-臥%J)-P} 888Dsr4≗޾Z@7Cձu *hijĝ  Ho1UGQS"[͡C72ZGQgv O|pJݼ*T"[J> @KhipE Z&'vYhi/=WI Z\FK(jВ)t2CK#xbݼPq :hi`+KSPwd ^]i|Cؾ0 +f~l> AKhipE Zr9%Wfhi/=d \BKhipE Zr9%Wfhi/=^z~nTmoZ0_Jkϯ&?;ҽզA(j`nP !> CKhipE Zr9%Wfhi/=^x~W7D- h;Y0^ˏVm haA%J$t14Q%S"~eF<ñ+etƁ蠥M*ۇgKcٙgJAQV \EKhipE ZFGvyp9ZGn_\q :hi j_ϕCG?.ֲ}740*{Z^}88ݫDsr4≗FVt뭎6AQݸI%N}$l+4Qy.(d2+҈'^>ؕ)8)4"a5 1 ?x|moTk]"')Fib9Bic vA)AMJ*%ZUzfmcw/Zӝ3;v|Yݫ,,>33*ҴۧGBe48E*1ZF޿U΄i޻1g{Whixiţ˻>-&xkaVxFBiqUQwRdp0hM4Qи(RW%FK#ȉ[s06On8ZyRK##_~reyy5Jݭ"ٳAˢe48E*1ZFne4,8Z>`!3d43Cqco(j`?ם;U9ZHhY4Qи(RW%FK#ȡ_2al˶7x7'xVOJUQKFG5T9ԅ#2ZGQ@HES_-tc#{.3allo - ,U׎^K4%0?:;U>x[.A"IOMN -8wႊ'KEZF7gBܯ8Z?i!|L|gUgQ4-Ao۞ 8wꔊ㏓F:qJVV3a U{BKu+?25da|ey (joKE >=@KhipE ;qBEsx/Ұ.~:::Xo 063qmh\25G=g1W}H崽]E={trT- .q54a1ΡCɿHKî|>ֶͪ>W|&MŢ ZŬ Ҕdԡf_==*ҒZ\FK(jhܾ}*b_a6vms06Y|KYL|l>oPIjF5RVӻwW@Eh"Z\FK(jh޽*bwIEZvmV>ȵR&M8~UTgߎM\WmҋFzT*z;o"Ӷ'hip- qqHEZOVGG7Z΄iL,8~} dL\+OLlϏԣ=A"+]]hip- qGq}7ii7y c<.Vmo - W~lǰ{dGJŠZMϝvy }- .q54n`@EGɿHK#xP!ƦY8Zn+5)6 E MLhOe48]"F:qT cӴmo- j);dLl&0>8V*lE /=~'OkOi5Z\FK(jh\qN|?˄i:mo- ݫ$x#esj6DQ333zℶkOWNNe48E*1ZzJ06͛竃:_H@>^Yٞ(jxcrRUd+z큑4Qи(RW%FK#Xob&MŢa|x)k.$Hxif{b E LOkwlQ:;#3#5hip- qQ"ƩJF:qB&M3VwC4}}EH3*FF4Td߯KKgF2ZGQ@HES_-t%+0N;xE4P=.E֕kol]FFV=6R8E*bhi7/9J&d\wC4lr6s`gO-۞h~^O֝;UdzJ4Qи(RW%FK#x[b&Mc8qO4Bn|T[=*23_?>Г'u`@i*8G:IuV|B;T#:,ZFEƙ ;݉YD]NtȢr(vʳm̺d'{KIDr9"oRokr\j9N9F hi8;uJ;WQ|m.*r k'ZPjc<,,(Vi?#Gg(4ڶMUU&DHM==PCk|]/[+:;{_/>NM>DT;wcG>)o}~Q  (jG;_Febӷ^RAF,^;Phiҝ/cf_?Q٬FF۫v56^כnTqءp^S7mi2ZI9i~EZ/= \Yr3 K'Zf=3g+k܋/lA7=&σ4jkР:%J&u?N,d2sbG1p; FK@Q]]wjkͯHK21x['7Ӷ-Z%pq"a)wٹɹ`ٳQgܬL8uƔ~ڤӺpADqJ?MM}p; AFK@Q],&_Q|W͆R$^8PhiьA{ϯyFaJCTsSi}|YXKjdDh'8FHh^ k~`ekn6'-ԝ;xn hi8Α#WQ|ri(ͺ勖Jۋu}1G3idD~Z|:۷O]]:p@jmU2E"&Om qMMٞ',LF'O\m߮1i2ZWQ|zJ~S=pX^ O c֦fK,wԤp䡌6Ѩu.]*Ź9g33VmOeUUq~md4E ޵q|m+ҨLL>^˽\o6rSk-_ٿ TKoիjlT4j,FVcb1׫VuujhPS-Ąߗ*='䤮_י3ڥJ!ᰶog$p; AFK@Q]"! +ҨLL>^=J9q#c{@9,~p_ϙ;Y.nwj.mެb6l(^͆RAfvxOsW;>5kx/9}+_IxZ^C!Sdͥs46&׵=3?˗>m`i2Z$k~EZk'7U'Ӷ9Zċu}{/[Ļݿz+B36Zjksc:;ק749teH׉J&#RUv=x`4- GQG$EiiT&&ťP5^;PhiY{̗_"atTV,ԤݻZvwkhHss;:g>ܬ>*.~iΝS>od4- GQG+h.JK21(89 \>Xv0sZb١Y[/Z\իڹ䑊%֦MjiN*|9KАi \N֭OiykH4- GQGrI$뢴ٯ&<$Τݦ_&-/BSh22^[@3z jEk%Ì:^(M0CgޗA01(\ lٚ^;Phixpf.ZPN{Loe:~\^SToa^yEGjxXJ57W3dH }֦_u:Ns58t,u+(-`b_ B)mӋ>Zn~ҝ;x9CRihP,={40c4>ly|ځGKÕ>_Tkn~-b|\ᰗT^LjlLJ$߯9R/?>/utوtvjfti3Z|eN{{ELL>JVL}4V_cm ͛ʻqCmm^N՛HD]]-ؘH_խ[*6ԩ_/L>e˧=-[.}%8ӣ;T_oKQ8!ި ^hi9eYVtQZPvB}K?3~?_X5?1?/*M8n}^sG:tH}}ot5~{IR|>L<"aNs58ʲ\&&SB)m<`z@ xo<43seӛCy~z/'jIKӣ>>)eoU^ԹnбcڵKHTUo>@++4- >GQC,׉F+(-`b?cRځ@^Rkg}ӛCyg*r\gޮ izZLbֽwU+3jΝ| T+^hi9eNSLL~]9=$O-)juډ^.s/%ihP,={tH_* ?kZKK*ݴiI"?W_-MN6T%^hi9eoTtQZ\R(e{ȩVLZe>jN/z+5I/~9T/+rPmz{59Y o̢שSJ$߯%Sg`ZZ A: ~FKQɓ,I+(-`b,h.JnS<6| hiԿ:bO\YVMorzM^NIhTڳG}}YksĄZ[̼R|W- Z|2Y?U Zهr!mSL ZuNe^#᱅ӛS}Z[=e j~%J53\u9^inb7??dS|$ǵbzgK(jp(eNSLL~vPlz@Pxbv)I/z+S7b`z( uw{9UڵKJ&uႲYӷïyݺO>dfH%Dѡ{uN(jp(eNSLL~mX l;vjz@PҰ ̒v39[Dssr&58Q]+WtyӷzTiQkrRv֎kN^{v55m&.}ɤ}W.MjUiK@@s58Ȳ\J&&?WץBKřxj'/Loe=pˁmZZGMo|QgmݼWuUk"RoWwq55mdnf|u]S oij4E e2,)~4RBK3"8wNᰗӐD"T6kz~¶uΜQcƎqU86ttl4ZLF:OUF01{!+^; t`>:⥥?eʛS8(0:wN}i<1_ΝJioWWWiа?y934 U|)ђ6*m' .d5I0TDUDFc"U -cгg*u_$r'<zC/O,\W}y1TlFr CQ*WeA&|7K3p vSڞ/kTzc凕(ct>AuEZ[*ϞÇr挌ȉ;r^r9G_bhH孷aBAh* 6`9B (zpofԼ إojp vP%^k-C׮֭:_@I60 ssOkRH 'OА ؘ2=-O˱c~ke )Z5O* 6`9B MNR71TnwK^iMJ;wwWwV-gC'W|lݻ=s6RBAN!19}ZFFdpP\9rԫ[~vNMIdF4،J5$t(zGd)xݤ&J^ϗL?8*횋iyÝjdlnN|_g}4Bmߗ!y=#Cya yy_%`s`3* #(z{f)xToQP6sS=oI铡yt>|6_>K5،Jͨ4XP@B;wR׾* * 7;u/46xeΡ7mCgkOev w9Pͨ4،J5$k(zpoNxspvAܧU昍|l>:\Ng B 6`3* #ЁTߟTnwЮE/4V4st{Tj \r|jdPp/ahlN"`3* 6`9B :%JhRi75Fs%/ngeJU&l`frY.##:;;xP=2}*e`@3'~6B 6`3* #PR׾* * 7ܽU/4V4쀋tO*Rw2}0tQ'|ovySMsQijH( Ek_x]#_(~/~pQTL4:R0bX]ٳG&~R>~DfTlFr CQ*WeA&|T/ ؙU8JhbEݶBr28(i\X0}~]|_& !`3* 6`9B (zpoS޽Qm յgE{åF~7zkImuLrrjQiPJUYPi7){f JE{rcxЕfӧ:2Iۯ~8lCfTlFr CQ*WeA&|\ Z1fWdY1M:21}%ClFfT,G 0R}UTnwDWp֛_naՕ+:21ۺUEӧB,B 6`3* #(znJ&|wL?zAgE7[zՇuBW/|t[.'ŢSa#lFfT,G 'D;z4M4ě#ז J-fқohT7f}AtۚcfSΞۦ5،Jͨ4XP@BR׾* * 7cԢDi{lQMbU#5^|\n>:{T|S%f/.>!`3* 6`9B )J^Ri7FDiwgF7|n2W-ӧB' 28?ߗ04}6$FfTlFrb8Qq%"OH Rwęؖ N݇Zu[VkɲTz "XCq4x.k>D$Ǐ Gכwm=;q]b*B.O^;j^͘CԽ'd66&2ljyXސ'(jכwCii'%.ecZ kk\A?T+ی993%D'b*3CTJ''(jQoxy'Cii'%.yL+ߔu/p;Zzx+4f%{Bf33R[2lNDQd48E 9{W޼sĶJKÝ8n`%RR.^;v0ҋ*5Y{OUTF-bra(jp2Z G杪m=;qݠǴr+k܎vkW:6cģ{BO5SShip2Z=.^o PZwyi国x{w'Pk UƓ1 н7lE NFKp5haA^RN|7(21|4{hi*YzZҽ'd`YRS8lÐ to@Qd48E zUDZVK9i団׽vCދyi|L6qCս=E NFK{0;+ccHCTUIuH}KW Ƥ-Y>`n>+x盚Gvt WA{1H~`G: ;ϟ?;qwXcZ ͗v?cEW7K؋յuFb*#I8 Ӻ¡hi(dRff-|Y/Tj}[b1Y^Vq֪\P՟HKÝ8w=)k@K;ΓkUJuߊ/ֽ-lt<5'N(jp2Z5;+#mmr=œ:%44reVҒrzilf9}Zd~^gurO*HԟHKÝ8^`01|9 `АJnҽ'l)T3I&uoFQ쬌JGIO=knnF(Ў/ ȏ?@+6ii'wK$=ۋFK;ߗJu\{{O)/WD_R)CPd4WdlLΜpXNs_kqC|>6yݟ1_\ w*]-wh__yw]lѪǴr+k`;1~[9R^=Xѽ'l45%*cH\{o(b2>.]](uu A^D$ 2ːaoOJ>Pd\ w 3}WFKh4ZRRǕZZZt(ȍ7x{lObump\Q3r5{FwHY 5CCbhi;e͛'45Ie_ *!R_/-@AqUW\)K-7U 1|sJ\!Z/(iƴO\][׽!l442}da"hib2>.==&FvtH}TWKeTU2 dZI 4Q #OF4-))J---~ǴMO -'-:4Хc5Z׽%⢄*1 ijgtoGQؘ9#NI(dU::K$' louu _+*dOd%}GbtTukJ{czvPFKh4w~?'wqcZw˺OjfJf̥{ F|#ܱE CZ[%׽7/58- Y %.^u($x4 Mp׫ԟHKÝ8bcZ ^;hi]bkFZ4c|{OXLAc;&/vYD?y9w~KG|twۯkjBe0&hfEHS(_ZG(4lj#Xұ:ӺnuZ;!`@VHy,19 9k M<9z}Ӷ6P i(\,f2%:c4*;ǦM_Su۷3?Tݟy˶ׄMff 7O(j2ZAY=|51;`+s__]==Dڪҏ!z 8 5?Feb@ߖm \`䬑'^,hip٬fgu;NL(܈OK ?;G3Om[+49eI[߷0XEQVWuZOaS bpXe5`%&s1Zc{?Jb3u}@KӇ/3u †7u"OB!}(j2Z=8W_UcwZZα !%}5MM)#*4.4ҨL|S57`-]6_?T~[ <믊DLNg]6xE ^FKBd_WhrP0XRթ_|LvHPdds2FK2j. SŦ:ʭ۾u.[@|ޠ6m/O(29VϞ=z5x- ?YZŋ:vLVOQ:W^QMM^Bޮl7 8 K&Mf<*c4*;߯X S3i7`Z .%ҫuk&g tK(j2Z>>X--2R44YCFFH(ܚ 1U]ˮ]v_#zzT_oɔ6΃]L*4ΙB ;*c4*;߯b2x4[}6Ϗ֪ƊngNjrEɁ"kPe4vtZ}px[ZB|vV$s7[fMyyZڹO?ѣFTk??fgi&Pdds2FK2@/ z_/jHd4DZ?ٵ@m{a!(j2ZP0-s)ٹqľ}joWOt %fpP:x}=vLׯ+mMKr[omG|SPMM&[c'ҨL|iN.)LX}Kh5~rKl/e:0n3S ((-)o*$4;RY֥Řl\]-fY-S#XJGIhΌ3|?~srFFLq4;k{6FU꣏gO7Rb1ѨS{՛oG'OjhH:^:qB/~mm_|IrϨ ` )P&cY5Tϱc&ہWNqӑxk^~ex-])V>oRE큠%572hfl)5-*ItHau:JXLMM&&42~j`@J&庶Wj%xCZ] Ը5Tؘvii'?`ҙx <}+bWLh6=7LqH؞ ?Q (1H}ZZѡ. hxXCC:qB:yRN߾<{Vr]^]ՇǤM~jV* m-pO#A}(޺͊h>=rii?؞ 5?QY鴺+ߧAקuv?AMN]ey9}i鹹‘ƛ&ǶwdOkj2"-p̹[H<5 nؾu[tuV,uAr72il۶C͢hiTjvVvUxsvTgNPa O$~V_Qk.C~ĉ;vС?dtTWjaA)?^]̌ ={nqtGք`+R)%-3"-pL?G)P-X*7lvMq4:*׵=jE ~FK"VEԇWku2^YZZ慼kن^F8q/g#|pc(6彬A_ӓ--TG_m{0>V)P}}ao"ꇼe-,(JQgm@Xd={r4‰$]{ r-{P-mu>,/v7lnrW2kl@hif _A?uuڱC;wj.׫UǏk|\r]_.+W40PVvL(jd=wr4‰$7"A~\um;hi3feX4uמn؞)>&/8=?I~.?!ѨZZ48 ]e2(2t)kƮ]+s=<9|d13-pɎsH<50nؾu%^=\}&,WR33ץKFMqH؞ BQؤ?^X+|V)wQiMN*T.g!eVLwQIwJNXmDˑxkҶ@IWM'MX*_'k{𚞖㘼޽{lFy٬ 57W~Fӣ~p@/57ƪKk߷=*_.eldr4‰̭G)ي{P-ɵŬY1>_(8&34\lFQ7Qin>Ԁ*7ceEU|NMP[olb}}N踸 {P-y/}͛oʭ[y?T+̙6EY%!&WG4ė_~K/h;Jt٥9 EUyr8ٿ՜8!b 0V)ߖ}}ߖM&' RtPyUqB $&ցҰ_~}%\c *~w.g_NJګثPcL Si/j3*mmmY46ŋ+QCw85\ώj@_1 Ga':l%p LQlJY6OWԔ\[H*D ̨%-}MWi@4Q 0wq|5 Ga':X5k;mPF^2ކ.hb)ϓ/xj5`+B aF^-nq$Z}ft-\ZZDLF{=;P/U,k8Q ܧ^Y<47ffd^#ik5o٬ze8!ss?qTFy,7M B ~56\YfҰ_~-{/b |8DlJocmgJګX'Ln 8'ڋzŒJױtz mow& N!WKɉ5=m,* ;GR,7?z_d͊aZRyU3>.a_aGIB FU_5yYy[R))7nȾ}'\tZ{1;P_&շߚpN ~{!. ry.L8&'}e|\{1gŒJיRI}7r9rDwIKsst @jaqgQi؉/?)h;P4,w_ګM (b:ŒJד{=r8>,v;o5t63 @-jQYTvˏX5EwP*]viʰug7?=^"'gΘ\'LF{75gOڔxwR*`*bxX'Ȅif5erP* ;GG w [xm*)M8rn&ŒJׁYyo˵ !e=+Qi-٬AMgQi؉/?Қc 8ɜnf[gJKiq̌z,5|^ ,Ok~,V= FGM*%)kL:mEŀhnP@ҁ;v,ytIjI ڷ҈'n~h5g'%LDSyYyƌHZjSV@E4 &H` E{zt ߋS*i=8rD҂4≛NO斒Xl>; E1ݒ{5;/j/RSS>46~ (5)rMtڔJڛ R:χոuK@lj NW}R֋ yRSz,V&zf&I^m>+Š @:R:&/ȶmGb?$҈'n~M̗ HK 2'{DMMfI^mΟ^ EbJ>׿G^FP.?~F=nFq]a3H5L-`cJcUZBQH$cc TJMdpǻ^,KwNXR3g9w|_\\EP@#i>q'&|ۜ`fڻe+wLd Ͳ9qB~_8o.^ԾIe+5tzcc˙[/bSfgJgjH%I{>) 7Е^ v;_R+sE31!/]̷jؼ2 R:%":5}v#RzS/84%WOJM|y}ayy8PJ?1+ej6ȈTlj jp)jUFJarjHM|*Xp_m.zAtF,k/%ҕzG+s]]3/)36fu]VDJ7XvM`|_,.j_pA )Hj\Ii/63E/wZ"+)} sH׍%y>@2&R:Tu\־/ˡC! >Iu8) 7fIR[^@Kd%wMTA{wϛ\NRwgnJPHiTutpPvS_})CP@Jݒγo_Ii/*^&Z%)=*Ȯο׷ō&t}}jp)-SLSG`Cnߖ2Ǐko8z{%'4ėoC/NtQ{qޓ_dד*׵C>o|_Rt':': /&A "eS5S/ #Hig _Dr^&ڋhSR[ߒ<s׷… %-ysy?eٳiGV #Higݺ%h\BP@JÒ34pRn˷IgZ돂+kk$faA>{jp)ҒTtnNvYWީwAP@JgH xIi/*/^0@{qbJOH+״wwܾp_2jp)ԛo*}BJlzZko8ff$m'U4ėo嵺fY{wbyJWj[DUW6;k|_Rni<qt"rvaA2vYjr9} 5ǒ31pRn˷G~Z@Xgne}P_^ݻ&41}Y8R: Rғ'/ kHi:$t7 /{ORu_AJM|xAt~u*ke,O靓ApEsO?hﮩ^7ݒZ,jp)𰼗vvjUv\h|_ ioTcbNJM|x}a5Y^@ ٜ_/W͖ ,kIAm\,,h_pA Wӹ9d);ګn  G%U7bNJM|=W0Z^@ ٜ/o ڻkv>7!ڗ`wPH yMݻW{{DJ\>ѯJ%oKΞ='&|{,xAtZڔZDVcN}Y^_MߗrE26NUa/Fd~4=:R%=#4ėo+^& 5)}`vUYOfec9"iM.g>\&ڠR:a;^@f҈ܻ'|^pA )--IzN.g'&|K,={Atu) qU{}5}I}޼}ϰ3 tLa(l;vh Hi4l.ym3ժfGP@zmmLJM|8C/g ڋh-;S|YYSiw%=} j@)Ӿ}‚zF~]{u`# .IϙdRn˷>]0)j/LJȊfRI{w5ٶMc絯A h VzFÕ+gh^Ձ͎%=gddIi/V L:gڋh-;S} hZjﮣ^7KJ33} /bgPH8uNd)J%~U.kolj5/9LJM|˯zAtzϭj/,LJm}h⼊׵װl$ k?, jSt==š:4:#ԁf80ٵIn%1dM\Y \1:@m6DJT4חe[{tjw9;eu^=#z#|>\;:k54nɒF2q syѲwuQ;82(+zYY7nxd}-)9-Czvz/8Zݻ'|ƴFQ@,9'H&n!v_^l'@ko\]?gjgڝ;^*%]w@]59Z:А|S-xxu;$Qvt (jhddOL|CtYv_LkeUnhǏxdq-NomMOeZQ=z$_Yx(70 ysFQ@Yɒshɴ4o턝ֵh-Zyve2|R)ofF71hoi⣥Qɓ湮vt (jhܹs%gr2dZ73vζqЎŌj5wcx*O7|y/lj-0h:oj 4 _~ӎE pALMLK#&쇧턝9ZΨ((+p>nfɓ|۽BA7lQE @K1=-_VU;=XQM*]/{ *-d?V, ;_Yjo. ʟK?MB۱CO6ƨT8rDf2- ==ilL;7_54w$Hɴ4oC7턝OQ-:3/(NL7y>HVoPW>x@\Ҩ00 y E l8'H&n \[v|gY;83sg҂b^:-W筷SjtMs]ₖF'$oӾ}ڹq ׂOL|4oNع9-}UAS3ͪb II'OSjfhG#4*ܾ-ysEQ@.^l8'H&n ^l'<[iW/.j cG_;I۷@5-i:3@ҨIަ@|QиYɆLɴ4om턝vp-gHKϭה?/MkeVqpS-M*MOk )j@MfFG%j:vt1BK^bQ;7S54E[dÙ 8F2q=Z\l''rDSASZ^+AɚZN_@x5&Zz3{JVݻsZFBvn (jh.Ɇ3:p,-d;v?iCZ҂9mA+sE]38譭iCP-;%[vnBKZ_:~\;7S54Ł gh(XZWe;agdN;8(3uAMvVdVqdG+2kr:5@Ҩ+y E Mqd8F2qu^Xl'tiZ{+ *#Qy}`BQ6CKWu~^;:xQWBuwkb8rDd2H&n+턝?^\ -nx jʟ29)YPIe^:hN,ڹ-jG[;7S54Ȉd񿪏F2qս}cɲ3p=@[zgyAG}`׮I<@cԋP-]Sgdq=yR;7ءQͶ%TWvn (jh!ɆU-d;sղsU- 4ǿ\8Y/ly@4uLFKW{X޽@Ҩ6;+y::s1EQ@SH6hi$7_ݹ +ҩJÓj\W4uLFKW-R);U,j∢f%ѣH&n 턝O-hŖ~.hҼ2nDVJIVLOkNh Ţpq}euZ5-y~I;7G54K֛3gL|ue;aؗ+DA37ToV)^Zt@XdtׅkOvtqDKSuvn (jhlV;p,-d˖턝] -\NNywh.^Z>uLFKW-2Sj~?EqqP*A"E$jV2LaN<|;hDj3cP;Ҍw{_8dƙ^c?$͋۝׾?^DQ%miiT&|q/_NJ)1q's Tҷ+NENV]ޕhi쨷WSutn(jDOzҨL>HiNH>8Sh'c~'s WYJߎK: nFKC\N::/ҹ/zsvP4*oU_P3;q 51v2u!*Kstza7ttuuҹ]"*,f>HM^r?ɗԹd'L_=4|jqUrC:0Z;UZ55IK7,---ě/u jff8.[zB;vW\JY^N"ftUvN܀;$rϲԹd1s ۉSc1_P3;iGGӉV~{?5Rg]GbC-y򵪩.CQ%QƘPmiiT&|775ؒvR-n*1߿;R֫W17oJ`ip3ZH'ZN[^&{Nf8Wp~q];w'1(ҚM-RT`--I<>IK2ADηK`;~W襚c ݼ Xh"*Ȉtn;/V{zSXoJ|0Ma@(U뱣#cq%JK=ͦ6-RZZT>Xccҹϡ*mm*MOO{ҨLn8ٹvR-}B/uWP/uuD"Xu܌.lUhNT?1֩ğ/lI@KST>X}}ҹϡ**Moo{ҨLn05>K`;zQfkjTǥ4-]$VYbHmN-vΥ 8Sf?hi|sCQUU֛rQx jfa\vR-}i!Kw^K(kaAe5fjJ::NEa%ָ إr[ϢGcczCq">|u9]~&F)~S:795XexXe ݓFewS/*l''& u#]ԘhT::NEa%ָ Eٿzc g[oρP1ȓLzmSa(S!߯|i{ҨLn95s~6!Zz`L TQcۥ4-]$Vc]Ftab܈ =$V7E-RU>XNI<*_4*od|A >H`; Vr&pXe5fpP::NEVY*r[3Iy;u#3_gַ{|4J|Y$ӣ޴'-ěOfvHKO>S)3ĵ,Ƽ|) Xh"*{Ȉtnij^ԫ͟^vt4q;14Xݴ9(erRuv XҨLn0$ jf7Yl'ҿ2PJM3dlƼv>/ Xh"}}*+ҹd7W;u#jVFmZ\(%U`$2>nzCKC\$YZ5s~Z:8ۉ'3 Rjē5;vtHG`ftc)UXeϜ΍Mo6Peñe%-XdiiQS x E VFUvcB!+TUU ua> jf}:!D ]Z&ē٩IG`ft'UVY*@Gٽb TƆN%y.-2UY/K >%oHKCV(#^gPffv-%zL>I8OP} jL2)=8HEUVY*@ċƉ{||1-2>X#,fzCKCV$#K B5~o1FO:OÇ*1 ؆$-]Yemj΍]tĤ^md89u7WkF7%܀P`!_ex iiD"97_/m8vi # ,D&!uLڮH ؅@MhPTe|m5l;9;CI7w9C_Ý^;}IfTgq#M5@<%;SS ft={$lohSISYʨ9_e?>@unPࡑz34hO .0aMN_: aFKy=B;6:7Z͕CC84kܞܻ컗p%}zkX?n(mөX, (jP<.Yo{BZ'?$|Ph`Q-%袁y;lj<(Y>+uŒ3=-Yh չѺ YGy58oۇ/-O\7Kr.%;#+#\Oi{[*0ODŽwxhibtTr!m .KJt*瓩y{Äu3x\r!<4;+Yo)F{=g7;||KoM.R)l UG3i3ZN*%iݣt^7>MT3bF~{.>Z.Uשly3u:ӓlt%/㳳NӇ[VC$,(CƝ{F{NDs,/qCPDR5l 7dRut>c0R= V{|xz>QM0aOۧn;JEyQjw/llOeK 3Xؘu@k[o)pΟo|6Z'?<򕈦 F::;z,h7N~SnpPvb5VX h:du2y݉jӫY雧́y{憳(;SKD5o?JKcccw֑#sod9vhi'Py#ξ:8A mM~S\m(Y;TG?i3ZN*%Ykݣ[f2ONOf񧫹kTU_@N+Rʮwr<*FG%ﬡ!չBQ%@hO<ғD4lFup~ ^ Zhi`j]*9݉UG?i3ZN*%YkݣxTQR}[NkÄUq#;=1-Uw֎so]$p:;krhO<20oG4Y?G-ISBҶͩftiZH΍ܟQ|il8aOۧn;JEB[8p!=Y?n|w9x1k:Oo -U:$yguteсBQߗl8S/l>L'%ۦ;}}4-]_ݫ:7^ZS8iʾ48] s]V_[U||5[Ď}_Fhi4(ygs@ auwK6͛F{Wl2U [w㎵R5Z[HMw\Q@ X h:;wJ6[(Yj읕3s-iʼ5~Tu*|}cKtPg5::7BXs== ' ўxfkҌhzx/ȖO[yk*ܑtv֊EuŒudurQq[*#\D5_U9O*oM1QZ?k i܎ ǝsOEK=́ و F::;;Oe30oJ~᪹o: aFKٶM΍/Y?->=ߗh{Qs[RG:H^[s-u<7<,p?-ē6sW". Suv =cgk*Z,&\5IuŒgdԙqL;V+jZ*2Zu J"P\+uigm ڮcǑuiS VT{5yy>vxK~nCBcǮ̚kz`$kFqrnA{Jˑ#ka BǍK]~-L0LY݉0/ƾ`<\JŋœiW6=%>Tn;:`E[n ~3=!٦Kuh2WKǏK#G*qI];w~-X0:<є%X;Aô5l^almnglGJmOv{(X sf_o|?RDzNɵե7PAVIٱ;liT'N y8ɳ-}NVs˲%!ӮIx8 ~Ɩ.18(ɷvBT\\x6yZ7ї3/v\[}8 nx@rl)[ՉCB1hQ5&$϶)i$kI2-K{"NKD"k:yv>)xN]/Τ-h7M}%-Qrmuwk T4VsrUaK:qia*]nc<-cI>t%]xiW_vE?cKD$+ur9-xKQA콞 pT9{ pP IpXo%--35#liT'N?ESV0 j1mq~.^KlKqx8 ~Ɩ.H"W+<$רwbSXXh:s+=D;ˮ)ց B#9cc>–Fu֞/f)=f{϶ttLpv%kIݻliڭq-]"\_뿑 F{K{,*4&SaYɠCvg.Z,9ip޽sЪQ8uI>`zLLwfKdz ArƥtJ]ڭq-]"\s'u~N{,8 3_:8{;=twKm۴* q\):>–FuY}80V0 ڽp7[z?smcWV֥E`iצM i3tHDtV"_YzMY=tcz~s8 LZGjo,ipIO$45[Չgـa jp\wfK7Em[p%E;wJ]v"Pglk iIʞ?KD\"9},9=<%:;* q\2>.:55#liT'N=I[ÔysbPgn+ʥ[h NKH}O% +~0qyஓWg:0ͣ\=sE<}*:v]#liT'NϽg I2;xȝ97u0UBv4%>Huڴԅ'k止4‰埙:p)ũ'NH>,ipOm$44[Չs"a *t:fP6Ҳ=sr]J"]ڭPB?cKhidݺ:#w`$L>'?9Ko2#;Ko=/I;v/FuT0eu([z? ͨkkFHDuJgl¸Nk)l]㱤}ړsyv>YY2 wK.Bl&I;v [ՉsCـaOCq˃-2l}ghF]K$O,f2ڭPB?cKcIܵkxXuh[̓qqeY9&9:]Zu [o=mmc׮]/Fu\B05Ӽn d֍f55Id}v%FF$q׮?nz9%x9Ry=4=5R|QRiE]ac&MTtY+nmcv5{Z$*<834 s;3W_>QNHw Komm674 ͸h_if="y+gvD ڇ7%ݻu<8𿟓(M|( ,[6;{":]ʞ뛘IIȦګCrkY:3<= k<ر})}L˙9c$ߩfC-=Ό(Q|8xsIR$Nΐ R\Y[7Ui0)G%יFQX{_LsyޱP|nAp_[;u@ѡNnܐgz{Ii(n_f3AHgKg(:>U4Ɍ,RswC|Fi @uLFJ/il,[V&ίb~z9=ߞ9`4'U{:kLE/%ߩ6C%ي I&Q>p9lvJVӔɕnb%5K{o`2Rz9I3}}ګPv\ o;}uJ94> \*Hi 4#̉Ii R;`ɧDŽ!)}iA-{UM Q_/鐏i @uLFJ/-IuU{uDݸ൸8Ii{?[_=Q$cǴu ``@|ijKJOwO Nk*xһzÂ$rw sK:d27Ui0)n*iګ{vR{E: 왤8SUF Ύp4>U47 bwWa I64a~I./ϦګcMWOŷ뇄!o?wBcs#Huui 4ƎSQ"Q'eLFޗw)=K2콸kKR : &#s`g?^^JNqE)}V,>19)Bj4KOYYv4J ďD-צO}y=gdp5QU%)uu{F9ÒLwRS|},}ǢN]s'_e\*4J ďc vNвFڇ^Kצ^pq S c]Qdtn۶I:p{R`TT|=.sbgMOf7Й{q3NI>O55{ň: J3/R~SÉe3}ڇ2R|XU=aw0Р:mi0)[ch ϤφOEgPJ%SJDv 9͔V穹Y{oQ`>TR6m$Qj'u/SgڇR:> ˍCNQNTGgZZW: &#s;yRҁgn?=9}%Szd2%º'+|Q`T-[2k֬#QR'l XxVh,>\>gȮ3OW:$\,eeXL{uڨ`2R: I ޘdVHTbN{}r)=IEWљ @1N@b G]$QR'~W Xv>sQRQJo΅Z4GHzcu @+*/4dR{ox`hdVNtfgOX{wU. .3C#UTmLAB͛#4J ^A1[΅3sX)^n:Ło\Y@--887Pd%M#/nDg<;*GJ]Hg%S ZB&&$J"EB!g֮]OJtO6}K"ɲÄ+ AR>`2RzEIs{Q;q{>;*GJG|3nƴ< H>Luu{E: 9gHiId眽>%xg)p"ھ]R=`2RzE&Ң7<੸?8|,wJ7]Oh4R9*0k )4R2-/tO>F頟צh8}y{ꍸJ%љpX{uNH+i55{:VNt cSOTqɀ#jװh "2kͲf/ "xMYUV+F\``.s1ӤPfμ_y^ydAt,˵L\e()۵8 kndu^Q?'`/PUm>'sƷt2[ᩔO$1:kglUutHpsv0mn1/{*Hh5l-dk.\{\L}E)B|̖F ǙPvYG3ƷOÏ?ݟfg%Eo@?cK[J[Q^OvXVp8&8CNɭtv@@cK?vG'ArQ:]TJ{evK%WDaP8t$1i glUI°SSSڭ('x*n6OEx-}YVp84h>Xr+ i q<6:*BN<Ol6]֍Y9-BB8ddŎq-DB:qBus[S\\wmnK ujYˉ^[VzDo DdY8Pw#J"˺,=w nd 3SБ#ե7 N+c$o߮7u>!{*\[k[[9uLˉ^SVd8 ۾]6o^n$]YEl7N`rK]7KySPO$.}4[ cPv_^,hO)[z`TFLOKbwv8 ~ƖPk$;ե:\k?='e{ǚWՖ~Ս1oƁ{˨[o Un=I%WP@50mD`j %AWP"N+t$;eY/;Fw/lڭcvKo SyƁ{}}ȹqT8FR"=Pc`;0ئ⣴@@17 ~`,Kbgv8 ~ƖH\>l\T6nAP>>,8N=H{0;vLr}v@p@PTA#^D2MՍY큀bjKgV%_{JRbOv8 ~ƖP.W,I*vjR*=\}!!x*vjrPque48podDr i qTr%˒"v1I勥-FCTMfgꈩ-clE;;$:;%)!q-]I*.ٳÅ΋ S[Kڍ#[zHLpbJ 9@p i qHrQ^%I=xo"L@0< >1V{$"~v8 ~Ɩ$k۶R.=—k3ڍ#[⣴:5<8p[r j qKrQƴj&({wݻ;@:?El5r/=PL"OO #I֭}SP l|$k|\{Hz4.x->i7 lXXuZlAj q:$FNy%N8O<PXx՞ >SȾIg>edqvVu`jQj-]ya6vjϞwkQkyo bC~.^Yrɲ$wѣڭEE$kfF{+WJ63<%N50S?F!bOfg+rׅ3şb1a>\Xn?ZZ`KWk>aTW6D쐹JiW/NDެş>æ&E tff$\ݣzTATt*_n Ck Dk: ;zTrXV)-P3i51! HNr9e_=΄":\=LF^o {m?!I8#E \[GFWOMC1-ݢ:OU?ӮZۘҢ/jjіX qAmԵ(ܣ)`ղ-ډjꪷ:Yrp•>pw?x|2FہGkH@NL)+HnuuiP[;8Wj_~7\`YvܯzcoZbT- |yE=;$#L~( W 0|C.I6ljlM}֭ FہGo%zjks: QɎVCvtd҉D&|W 3n -mMXvܯ*\Z- l|yE._QWK0_/ {O;7eP aJJl]CZ|vplJLܺUoxhs@NXL#.Wvz{m0#3l>1hq룯S '_#cyQ}f 0j9Li'%KrSZ<ݪڟΎOʎ~M7}[x\5i*եaŚlYWU]2 ˎX7׸G- $"ݿ ery nÔٺtP'UT4OzQkqIvvxJW8";v79%t"q4AuiVg22 ~UTkٽz_\v[u}/A;dxS1?vp37 l=D^?"{-Rvv产gdE{%O ny{,\,K`NKK_XxCp~8AW^~|۲>֫GڝnvcvɐFp-Ξ}V;8`дiy  Ve^~E;>|+{->_A;;T+jx n˺`2̞}A,uv:9X,//ɟ3gk֬mF!fX˭he}ٍן+\=;ÊJ>WO9s%-vpVe,HOv|џWo?"ln*+ Ų>Ŕիk4}/x-=^gxyS^ڵd͚5'!: `e&)-Y0%N$"y)d+n⋋Ögq!怩["ݿO}& :ɝ <jQLi/I'ln-^R qkGxxқOcxiq/@رN@pD[~<~5[U9HJ<"WL >ՅLL| _@A 0)QEd[֧j|}W`\_;8˔?< 8̵@/ _@I2_FGV$_'3 d3UK}ÈPPl+I^ASDEW@Qwkf7V-&Ԫ5˝f7%tY gOί79ysv]pkډcKop۰D-xX_:`24^AxР=ke;2OڵF' 2 84:\9萼WcѥQOdrQ;{`mN i0]Qsp#.zv;?jǬ`Gْv2|Rue4ny(v }>I0]z}d~#p=.\Fi8ݬS7x%Νy0$.O?sO`;qvX z TXtHOv@0N҈&﴿*6E}[*i<^E*f!rRYb X'Y7~Tr▝>v}>I0]:&)ڏ0LY?zcv=j_]rVpz/eG;LjgD 4.hOo50kezޟ֮P6՟MP>@y_ELFȞ=)z.^̳lFE>ɕsGͫK޶a'ZP ب:1`24?^Sx;^|K/'R1!֟L ޙMj ,J!Gv<B9꒼}|7cHm7 ~45iy~ -UvgӂJ.ZP==jD 4.h;˗gkLyl̲É=C_}VԮXL';)>WEH<|'Nh ,`2tpN sqv"}cB;qԼ*ړob]Fv47kD4.h;+X+]J`3qˎ+%7^rLj*'#eq K^=+HҁڸQ2Kv;5]~q9+X$[/dGͫK/N L`ƄoȈv@0N҈+m~lJTs3kR1V/U44:krd8_y_ELFԝ;Yz. oz,+zRY;uԸjlIpnV__SqLFF4?k֤d˅lŷOc~ĭyH,|>NcGefC4}}' ELFZSd#p.}KAKzq/5;j[5]̭ЮMT nVɫ88 &K#H$$޷Gh=Hʹ 91?LhWTlɇ_feWl:r %y1X$dt={&ڏ͛ sl.W9ܟ,P |2S"qLFF4~$Ç%>)6,;JvP֮T~V|/<fEy}{}>I0]:ݒڏD.%'dvmt]Îr /|2FFS"qLFF4xmn~45iqeld̲Ìv,p>i8nd!y켯" &KTr7l ~[]ԟlmÎvmt} ml@`6ov@$1N҈Oؘ[W'\4H&B(xB7{'Os%]hpB4 |,`2t8FF$C\im6ʶvmtrC{j.Zx]ԁbѥM/= w ?@e*8,S«X$dL@]62DQS VEj}ɲٛ{{u;[_%9}9p<`܊˅Ƣx}JVd[*++E5L38(y` I0S:2GJfݫ=`ୢ|r^;qtLi?WP-XYK18:`+i0SvZK`.F[@ []>1_~s"x}rk`O.^@gj ;xX҅&I0S:2wJV|vݻEQBN;qtLw$M;NC`-vꀭXdLii]ь;wkBwxҍ9cKeL$]jlХFMf)y#uLƔt~_hơCZG/z;&1Ǎ8L{uO˅t{RQ%\+h146&Y[17]촜bQ;wtLS9AǾ:WP-x?>{hXuLƔtofiՄrqU?e]/}Whhخ͔֗hkE28(y` I0S:JRHHflT5X_ee_*٣kmdJ :_*tHS,: &cJNm:? ƎAUzj<s!?fJOY@og}2<,y_@$)~v݊cǴ Xǥkn))?Ղ ժvXdLiة}>,;qJM5RcT>渊ܥL.[ɜVE(gl)};$l]ǽ_+2iK` I0SZE:-ٱ[q@q(&47Tv>)eBGjzK"9:`=i0SvZK{^s /(p>c>_19b쾐}PzjSY>*c%O[+h1:%Y[17]j SRri1αMcK.}urs0=:`=i0SvZc i`5F lq"_T?zjSzٌQ(bqɻJi `2Z-صKi7cZծV;'rc{s,SȦ+yY^j`5w @4) ;^"8w.`t;0;nL)N̗=_+8/|^7˺Iɣvv! &cJ+qCi1lͲ <''G6Nd-Z|w( n<{huƔwJ.V$kUk7ʏeb} ]nŋ'wu킌32"y_@$)$v3`vV+ cSV+@7M]Ah-Xի‡`bB;u`64촮#, Ϫ[fbq+i_Odqÿ 킌34$y_@$) ۭҮJ;geWg.G7MIIs~wf~PjuƔ V$d4??,Ǔn̉4ev帴-Ƴ՘hdD k `2g?Is/ߐ]?F+@Lttfq=SC"`24?rDx"" luwXqʒkW)=:_7dՂv5&ey0$)na!H$$+w+Ÿ_]}F)oϱOk[A[\ӵ`E33v~: &cJN| n&ؽ;~R_Q~L&渑Ex~vO?y7>jWc~C647cpHɘ&?`EhaJLFv{nxv)-|K^yE8[Ԏ6sgKOaGh`2!ff$>ݿZ;IʕgN /j}RN6[|o-Fvn9 &cK#d{۶IΓ <@iϧ#ӚξyW;:Ɲ-2QLt68:cpHسG]c;+#4j]0#m܆x x5P+nsLƖF8'5R[\8a][(LvZS>gvhy#wvC9"~Rڭ0$-mO?,KI$aVJj:N=Җx$BDBIsLƖF8nR[o9rG&[SiA9_w+ڡazfœ}0\ }0 $-mn5i' 3kZv|zIv]̴,jdwtx:xN'?YNg HʕᏋ ?tֵhRHul*F{-}rN<_(,(Nɒn@ `24䏍y%9Uj gs+ޕ3 sJ~sk'0ZoUSp$-m NN oSrE;[z.YorA W 7ڭsLƖF8qRW6=\} @w&Ya؟>ճgRrE;$`I0[@cceIuuaќ,ֱv!xO^[ie"ܱopki0[Ԕɟ,uyds1e3Z;3K 0{.U|ΟI8$dli3MOKyɤvp S}4,.!`WnWFCꫯ<˒,絻P4-pj'³tf*+!L+T?7pH,K\&7Vܧ `nutZ<{;3C[[u?sLƖF85q{{K]Y7>ެ|@̯={&jvJ({gvCC$ߩÇ`I0[d##eIuUq0!p⪯+_0΋Y?7h}(|iwxN&N~xKmYЬ@-ܗ3 XN 5ǧW|ON-UsW^|qCLƖ6AX-,hyܹo`ϡ:KO~Q3rǦ*ppwuy=9 &cK#;nyb1.Qycb9b;Uvf״SBq1=tvJP==}0 $-m!ɛb1u<hP]Hk'qz/](WTBҒ|hwi0[ɟ,K~ѣuꃕWs߭ljD8Dmg!jGin ?Ogh$`2t[Dž/:zT;I5\XNgK~R rwxGNkwi0[;''bUߒvPVm¨ⲫ==*0= $-.ff$Ʋubz:YI; r-VvJt*b;UƪvJ!m<(*uui 0`2tٻW>o,fg<ֲͨBז$F.#$|^{wsLƖF87ɤ!O:xNΘ'OcU[LO{ XUKN|&^6uy*>gxFT.{IS\Cߙ\}r-~5/{b|M6Q OtZ{9 :cJ#*p E}y\Ώv9"j  Ny7'KYÛyP2 Ƕ[IS%֭*ڲ6l:2YfC|JMOT4j~8wnxNΘʜ|v>Xq)vz0~f!bZצ5 ˓p/Q}T-[ISJvSyaB>sKقt)I+o,K )mҭXiSTɓtgQtJܚ5|61-kAQ{}I:DU:|Xjm~X$@gLʻLS:IpXt>ԽTN: dLx2|tP[]uTFҭx)34©'1M SKQӊPK O\39*Ν}$)]SyW{cah5_x'r-VԴFnH)̂)rzM:Mݼ8[R<@gLiSOm;MMNIML,jbVj3|CoЂt*cճst" :cJW;vT$yh"?tpV̆$ҭx)34©'?x(<`L6jZoV#eƦVkbn跻Kقt*yճ{t" :cJ@"뽼D;λpUԴbKAE=?w"%Trct^4)p9Îal=%UHggeZ<6tk%bZKxը?U(U,Rn~X$@gL`V|W;##ygj.ɞ[})4/*|A:J)dӔn1NR'd1 ݧۮXgYɈiTD:"Jfh̃>gTQ)EtƔ0%UyUY|Ny6_c3s}Y:GYS[8_1N'r1 Dް_#SB:gSMy^JGnM:-:HΘA29K߹rE:OfXғtT)y+̬ #Sx34IS[DnmiQ\[#™˫SԚ';o-KA'ssZrtP[^VMMx <@gLiG+^䏎A%UHޘ|}31-ϫDLV:_MFM~;s9@mlL9{VuZb1g`1 '}y:Xsj4[iP b丫_''x <@gLiȊ7n M${w*TR\,X2bZ~ԧWsvA:bMFL~tw3;+:-HΘҁޮa56:ґYm___Ϻ<'MC]K=uJ{4) Y]]]544H/男2 U[We#SeݚJG t>sJgz{\.'7]HΘҁdNSʫ~2 gtT:U,e Υk Qs55osڝ;fo:-k9 :cJCV<߸qQmmmRminv=_ JE꿱1-*jZHG ]ԛ;nt hiQYnHc1*p Ca^vtمC2oզ|^: wZMEaݳG{4) qxhekr V}-*)p:; \ɈiTmwbƻ_m>}≺:kiEtƔKPyۯWt`9>&k+jZnHGn.G]M=ɜ]jHuuqSE}Y5)qB d:$ġ1.}$e"<8R @hՓeKN0G+gܯsힹ/4F8mWu9Z0;w*ϓhrI[['^I:g:82G~ZܻAǥTF ϕmk+Ns*S՗^܉}5-8:eKoN:Jؽ~<(z/4F8/GYҩ]wwNd,ǭѬM-J73/~?5!OIc<0iihhT琿-#\{_p)$չg?MJG lVf׭^=8 &N3gHǶU_t* W+l8F7]v^:e=)_˯Ljشu#Ѩ41Z: 9$ OrEog-j*^=8 &N.hޡX8  C:?iqk=ȔK:C=ؿ_^쯃҆^ܾ-tdtyڳGlؠ Hug4o9S$ |uw!6ܯI2eۚҫ4F8nߤ*ڵj|\:P5|6i9n'SE+g4}='˯o1ki=hlT'td4׹,67 HΦ\I:?4qt՝kbKkD4*nfd4CbcjpP:R𝸞8 q}$Nj~94xăӫ͖qLFK#qj^fofUOVw&-]y+tvv^:ϮOZ3?{']\z%mi355|6n^7Q`2ZyZ^:ضN|Pr\ᩙbI:\x%khүmpR:ڴI3ƤW@i0-p /VKo @3i9Lq:]#ܼtRhOS+?wImid_>^:Q`2Z㪱QR K L^ڟYՑ<d!r7S\K\ݙ(x%Lx̌mͪFI4F8}緷_HThW$,]8΍(;}Ȋ=YX[ǎi~^:Q`2ZO:{Vٶ潠46Tu!x"m9ij$>'5|{k'q~A::p@*;:W dg~80m"Ìs(* b4ŘNRgAYPP~ ߜTΜĠ3;}k*:]Xzf{gO=oNNCCG9rY \O Eev한=X;|(zZ)7`[We2pZεF#~򦵐yx:Am2klE*@fhi(0#ɰJ !O`)5O>$zV鼱Ko^FKKnlld#z5NWzs T>U-hȆ횰.Ynt(jD·*=XP\O)53iD*5nCKmzE<Z)7v֕Z61!z`whinUdēO.93KJZJG)kkcp>O˗g kSKFSľk+3+z\aR+3wjMүCKlvޫf%z5Na==z2c,>^T#TѐsxxZwahi_YtZd2Mv( X O7DI[hyr|2=qYKvۺoEKKkfpAZ)$7Rv#iVzvb/_57U*Hza BrD/*@fhi3>6m|JKgở7D)ۺ'u;'znєspT?X'FKKknz@fhiP|f(khB s.&캞Q䷨3fl T-퇶6&ojt(jǬ5Q,sуU>t\5-Fz7V0oYZcOulvB @fhip)Z)ټ:LS^x2i4U*֮,:ep8;QK Z|MY:-z@|Ch٢j-znuNʰu"oZZN-.z)5Na33Vzi0nU—~sr6˽aniOTWsVwO@@Q - .ݸ|S޽LE˛ѲrbY:=+l~yzϷ2n[ ZZB+0DBQ - ᄛ.BАQ=2AQhi䤨\+ޗC*v҃dȴJ}=1欻6 |-.N'3NWDKk#rW}zFQhiT'^/[|Yd2'ghbo,dZ ͪdZz/&&$뺾^tFK(EcrkzJ1: };91sz5e7 }➽~]k1'5t||ҨNsGJnpAQbrbfmmƴBuOCK_a9GP>(j-bdW_;1=zJ1619o7EqS\}3=P3ZՉ,K|g ÿvẪΊѹTx0^s 唏z )C^ɴ P3Z50 b욦&1;z`mzmNiG}w)q3o2I/6[Ѐܛ śm'~yar)?9dƔ4ތϾN?-N*[XP}z@g4/nݒ_O8,FG몞F:+yk*2 n9A[S}eAKߴѡ E :Qt##0d]"UWtͣvȴ"AD{Ȑ}>yS$uG!}[^EKk+;uJҨN=a;]WXL@lxchsX!1bmDTrf#JBKK,fDT@Y@g405%kǫ V3HԘV?Los߈J{|}E :Qxﳲ"::aovyzf}7O'> Əߴ[ǜM4E#{c!*4n:;OyarBMgUO,d!bP3ZyPƱkښ +?vȴH9nz{ez^tFK#80d<x9dȴH1s{vMU@`(j-ܜhl_ ʙ3beE@KKkhiWU@@g455% Cf== Q3ZՉ/arRWh_U=3Ehi [[-}<էPn(j-I$Ĺs2kH> Ç'D[۹'xȴf:'u0$ۉT<tFK:X8^~+4uuUH@%˶Y!tFK2q2Ozz ju uF<-'{ɶU@(j-ߋD¿@QW'_~Q=9R%44Hvŋ Q3Z+FzuiƴB?oB*;oӧU@(j-;0A;&:;E$`t}էP(j- %a/&;##'\뵏;!Ӫڢ΢jYE :QxŲ*N_ 3g.T[|nm>=2DQhi2>. C~75"T=dr١ԧBU=gZ'o{on4WMKu| =*Ϟi?=h"2* unIgpifL_=_8x,Δ枽VtX*?P| B .H&K_NvyS{^~xvvj?:"2* G\"[X^+ 9}Z{dy+Vpqa$_ J7*KVtR*#IեjpF2毟rעʍtvZfuGY\FjU`3vI.doOW~_ʔv|[l=o FGN)v~҉ksJk9tȾ6ȓ'  Qi$ozTdlLZZFٻW._ZM+^Mlj."P˨4\S -nc̻ϯTLWo/yzjqH~CdaWzXxSzV+iJG"B .H&pT*rHzZ[eqQ+`J`ɡ!Ge\F᠑47 {BJCҙҎαbz(vN)~t,afN/>[(vꟹxqizkCyNfvմw"B .H&0ML1'd핅Qi-2B .p}cy>WŪj/{?Gv^W^teJm ;9^Sws^efE?0*@a^@5J#xC69):$LG;X *S"6alj~zQFeT.夻?ȥK{GCV*JJ=YP˨47?|٬'(̥K_ߨOÖIܽ[DQiovVZ[-?c;$T:dzrBGeTěeyYe1&ii77oj*G`~q\F ٬tw[^4>gfF{Ia};PFP˨47_]>/}}bLbN^@#TڏzEcx8B .҈jUk̑#R.k /*VH \FL( ٴҴ;mJ7yJYfY^^@jpF;Rk ɓw PBeTěJEŘ@'Zg7Tih?=#2*șT3ϟ‚cnմwP˨47A8\VkktC{\DQiDQ>/ǵtXb~^{z5J#xUɅ rl]|<}9B,B .҈W933K"tcCy;CeTě r_kaVw+*Ю]6knJEQiDg~)WJA˔>bP˨4bR!˛hI- Tzr"֦gjpF23io $~l־xO F5J#$V#z;*N?zgjpF2R7msee#\F׮;sә3!֨zT`@{.!fp-ntX1YmBZm&̱"8|Q0#Pǔ,]7Ozz{NK.˨4O'Od|\v8-mMj{].,DD:rfgCzQ^z˳g PeTaU$o|n^H5*ʊ>zB2*pI?ϕ+!tRp!`F8V,ùrEj5UM xjzZ˨4RsϥszH#*z]jJ#L,-sNf`@e=4/+cRPeT/9wSiiԡ쳮!`b8??rT*21#qN._jU{U ]}QL?/HB QikkKr9ϧS"^ BcwuzK{&jJCWX;jjjJπުV%q31!*>9V_k=4"`Fȶ$PM'~^ )Brn{gG{&jJC)mrYƺ}(H~%ZziD2*=x{ClV67CZPXw{w`˨4tžS 89Ţz>{;u%!}s?@JjJ8j5Q$RJwom;"`b8??rݻ'g{z]{I }rȅ 9ZZt)E2* 4 E/)Y)*ݥnܜ #`F8_?{;I$XTl'DzPeTxR{LOӧڻ!ɨt7u"Wڛ0PeTao1Q$++DЅ ڟ 5XFepUjNCbQn\^m,'/sG<{>JE{I iA˞O^,!*|[)wCQio1(rY{jJ#L|T8rRk $>hzڧϫ6\JY\&#`F8xY*,~5##K AiwH5B QiO>|Ym￵CrPڵxň2PeTa䣕rY^go㜌yTǏ=sH5B QiƵ{gdxXvwwCPcّxi 5XF&N>hD!`F8ЃEjr9vM?0J7LNeeE˨4й-f_yT{7XETPlm}$ ˨4G*Cdz;R*i Ak5q?)i/ 5XFcܔ(ޓ=`>ҧs Ue$˨4qUrd2=dyY{O*YB Qi66`mffFu`n/⹃_} d"`F8S.Аd2=˗eoO{O@˨4PbfaA{1C؈&h/ 5XF&N>pΞ?Pxfrx8* )9X1T x󲷧"`F8ҍd2=9մ^_ժx8* x+ddYY\^ PVWŹxn\?h 5XF&N>wDd2=~sG{O@C~nk=0j0J]_N5R^ 6P闭sܵƿ#`F8œ'26&I&y ^8Y!W?5+ B$3\@/-6Mkg$X}0%oT;L Z%t8:VZJk.9{g}? g?JɃ r4пmyn3<,ڻA [7>B eFa'+9vL;rXk^C G4OZaofjJ^{1!YV姟P ʌJ&N>r>,Ee~^{U` ,Wqr4PNGgnLL/h%TKKOC!jvV]}T2Ұ>SĹ36&@df+}Hz 5$J;{6䥶LOn8*T%s.\^@j(3* 8w{q.4{1[M8}Zc6* l7w`Q鞍nЙ3B eFa'QϋsvW0[陙 ,.j:c̆@H:9~<նJJdY1wgtxʌJ&N>bpA訴ګجΎ:Xz 5JQ]p{FF aePEC %Ga'p8}U٬'v^t 5J]|{JZOyQ@EY5M| F#\^._^(J<FCc3 * Ė/{|Y{=DfKKONxQ7@u 5$J&N>i{[.]q.Ik `!{/;;_Pi`zZ-IkohlV.JjHM|wOFGŹXSI$P 'Oj: Bx@rN&"n >` !T6q%Y^2nf;;YK`P@Z400o,?t\awݚM`** 8j\yMv`7n^%ϵIB i Pn^7DTݖ"CRDa'mbȈ@(k~jH c_v(J7e݂Z[^ FB ҰkbŋKZ'&B.x֖Z -TP72>;jnkoTkEe}]{+T>4* 8(u9zT2|sVCBnĄw0Z -TВr>w QjW9rljojRGa'e#ϋsfzZ:%3U{j:LC]Ӂ{~]{=tdjc{j* 8(V碌ljoJLL^^1@P@4P}sonO%+,YViښbLd24lŹX37'ݮ~Tzu5. Ik=RDW9q"ѷx/~PJ繜?X{γL U 5T M|\-8eNG7d[[ y|\f$(* ?ho^C*U䥗 >OOn Rz4l\zK2Gݻ3R_ůl3jH&73 ϯ23 >սݔEVP@%QiG*VV{q.ʼtbׯu?P{Y5J崲" ˝;ڋ9Uy.| YVy~:z̫@¨4l#!\9zTV{C*_Ǐ֖l| iT(v[ރϜ twÁ^1+{Y]^5TM|%{V5SS$/x_w WP@Ҩ4Pfy޻}= 9‚n8+lz9ízC Ga')z}^2vM{Coծr_wv[{U;:* G0m%^{Jݮܼ)ǎE9m$-PT6q[$Ĺ(㽜;! Wѣ~KW?>$6#!jbjH4 !ݘ*ikI(JKevH2p=k$잙s׺}.,,^5xrU($!q* q|tN>Ǐ]CUZab_ժeLffFͦ-=5脎*\g<@KyQ?%VoN7KK7~}o:3;fuTxU^DK#Ll>r-47'keLGflL-]':oJuE ~"%*?Wp~Kvuvp3[cJ%QM_2ZabၻweicuBזr%,\4;6хԣG,_izZB`Νp,5F|R,-tA򲥫UY< pdE ޠyP2#zuB˖x1at4SD7g`@ۮC"{-]k~^ܽ|y@e,.ZӑV:!B_K?y '4_?δnˮC/;-[ȝ5u4KdLGPзߺN`g$:ۮ+j - _DWAUsyKhiIOwvOǏbr^c_EnR ck:!YK/.&:zϻ34w.k]$ۙV=4aKjvE5L I9 YFK#Ll>bQtd]C|jZMBC CKTt\d;۫k״:m`\ʊ /F@j,&6ޫ59)c:2WjwuBxͧt)q3M|*j- xtDKe3:O] F[s^7VB8He4#QyY+cҟST.NyҍF3xpoDK>jΟ߫twl(N   ,&6wOʘgq򦥗zu87E ^DG.TR:[[z.uvs,&6At挌Iܜx7-=4|p4oDK^T40c訪Uɽ~Bwo vsawS4d-0ʊκҏ?V֪\vGQhico]c_6OE{C-zGwjhrxUJK|N@01̌M?Z㟩e׿GQhioem+g)믮"wMMu{%oFG< de4#XQ[T(ȘglLx-]?MŢMX5xB7udgy} s.n7Y58MLTҳg)>pi2ZabM2&Ɔl-==(_ă@PVWU(Ŀk52~P:|>%l(W_i|\==]}_Y' de4&'eLfu<\[uba׿ڐ@htl{hh~HhlLw? ^79 YFK#Ll>E2&):,-}j㳵@^7Z> U4XbQ "UK|uML?q~_䤪1iN 7m?X\zh[~B@KK?*Rm/{SrxmI'4z0%Jhkh*6)*)CV $2BH$:y/*'ke[[RJwX,_{m1yoA.T>&i-db y/"K*￷ Ӗ^X;2]YmlT>JhmM~) )?CS洿o}^2ZG'^ElV`^[ʿo1ű 9hi}oغ%Rw>@Z^ښT*Y=xPn]uv]mmjmUS%筏uBFK#|JEu`[Zzq`+F 1Ů Qhi/T*iiIjj1kF:փi; gݿjqb;;Z__kbBP*e e~&/2ZGLFElVlUZzyp|*jHZѕJGuwW 0訆[:}Zd߯uI/_::f~NOIWOyqH&68RI7n(sQ{Zφ Ũ6o p|1*jH Z@~]?oI^zz N@hi$T`mMr.?Bz6&F-_OMYQQ@*w. '2А絻k[\ d4*19qZ[b=Bw/gĥ hipU]bTJW`LO\ d4*V*飏作8]]ذaEK_X*ĢTooњV%uNWnΎ@qH&6⢜>kjJx~KkdmonVh=T*$Dc--955K58~Sd.R: !a.MNN~\_tTJELFTK?~Q@jTO?i`^R45idD۳^xpҰN> UkIi=!~?z5 ޶xQ@jcݼLF?KjieE֫/)2ZOXkkk> U*%jOXuda!rQhi9={ȳD& oT,Z: !a+5440566f} @ʹYWPudyYW_֓@u-jhiuw=x%|}}ZY uBFK\.4D作a?|\֣.¼RmIja54˗T]bs: !Ll>[作mԔEiQcޞ::"I 5 Z]ML9rd2Ȉ.]1pH&6|^٬yi-,X5ZKJp!겞"ZQFK0!y/ 2=} 2Z37'ꑖ]Bz`@h-lOI "5i4@-MLGN9j" fg;WwnݾXYnSgQ13RC*lUhcI%D}L+)a# lpls];z*pfgc(et:4 r\ﱾ* Pd͇v,-ž}QJ{ٮg*}RTU=k[LР aT qZ|U;'Oƞ=QUQJ3533m[௥4x6m;я{8>n܈GAjT~в{ر(Kl@^ZmiT;w_ڵ|9Μ{Oɓq| qԩ8tsg8oW͛ZT 9L' 6Α#SVzzpf&i-L2Si 3l>tei)R8۷btXjXчCh4@f* J$'4d[?wG)mߎuU娪n!~ڭ:9 Jd 5@f*M?|ΝqF( /ԳrAkW4@f* J$'4d!8z4*Ji,,t=-['^]gv %iT 3HN2SiC*ys9q"îoҧOװce:9 Jd 5@f*M?|Hh8({w\?Wz~[ltN. =iT 3HN2SiCZwƱc154uFG<\ 6W<kk- iT 3HN2SiCra=)M]矻hң}:m5}MD<2SiT 9L'ca8 nR9Uu=$J~4@f* J$'4da 1?4uv۷ff+^ #iT 3HN2Siع{7vR: ]ɿVWcjjCsDss 3LjT~0F(UWcffC; ] ;iT 3HN2Siu+fgw]o-TocӦ ɫ6q/9 Jd 5@f*M?|k뱰SSQJgǎx㏮+QUZkL2Si 3l>Lᅬ'R?{RLb0Rcs 3LjT~0VW磔OU\k؇͛c8Rs 3LjT~01騪(3?a3@sa ^%iT 3HN2SiÄ䓨(3=gĽ{]<[J]7W4@f* Pd͇/kWޙ۷{B5TGL2Si 3l>L bj*Ji>++]=qujxL2Si 3l>L7c(3?aדO+}|TF'|0 <2SiT 9L'x(33A ]?jZZ=_ŋu0<2SiT 9L'}QUQJg˖Qabe\]q#k+Wj`yNd4@rB JO6z֭R:8۶s`]+}~\GDUUNMbC3iT 3HN2SiC\UtvŮ cUzm->,}6kFo4@f* Pdb__My.@IJZthBcU^UC^HYkNe0\މs{~pQs/?Cllt4MRm^|1VVbkY f]] iT 3HN2SiC7ݾ(ڌ|\R,r{J/-ȞÇu 3LjTne^^4MRs{.b}qt?ڊsbll^P!?<4@f* Pdth(ٳQD2wwwĞ*0\2SiT 9L&n{;.\(=ׯ>Q˗cddšC`8Nd4@rB JM6ヒ#Gi~gc{qvJxGG\VsL2Si 3l>pWSS4QJ͙kG=_~Çq4@f* J$'4d{ba!Ƣsd>JTę7M~xa: Jd 5@f*M7|/z4QJ͙~}J??Ƿs>W~r!: Jd 5@f*M7|>ݼ'OFD)զ'ƍg1@W'g~?C>s&k?6pL2Si 3l>@nތǣij~z^Y D[槞k?3PqL2Si 3l>7zG)f߾xݸvY챣G5lO 0\2SiT 9L&m^,-xRs8v,ΜoxىH~`: Jd 5@f*M7|!zM=Sh?䀎kzz{\2SiT 9L&<13##QJ_}ͭ[qrV:17߶MӾDžܬ}Cu 3LjTn#_~1>dȑ8~0WQLLĕ+_?u 3LjTn}Qb|FGbcxܹNd4@rB JM6cj*&J1~FFO߯u 3LjTn@-[[qb;D)d~]: Jd 5@f*M7| RCӱU]t4@f* J$'4d<&&&4qbI4@f* PdtRىsiss`\Zt4@f* J$'4d66bz:&J11o۵_@Nd4@rB JM6Hks3cl,J1w߯u 3LjTn@r^~4MbL{ .~7N4@rB JM6 7ntD)f>+?\2SiT 9L& ~?:~;br2R:7ŵk: Jd 5@f*M7|`K,-ʼn1:<4ᇵO?r7uea,Rn X&U$`!6JD*6!X ށw{vif%l{{`dѸln//>I* 'e* PqB PT NTLL4@P4@J 5@J3'(Si8(Si2j2fNPqB Pe* 'e*͜,LLT NT9Y>@J 5@J4@P4KX,Z~'e* PqB P,bXYYT~ \~'e* PqB P,-Ʋ 5@J4@P4˵X,VVV- 5@J4@P4KX,Z~'e* PqB PT NTLL4@P4@J 5@J3'(Si8(Si2j2fNPqB Pe* 'e*͜,LLT NT9Y>@J 5@J4@P4s|2j2(Si8(Side* 'e* PqB PT NTLL4@P4@J 5@J3'(Si8(Si2j2fNPqB Pe* 'e*͜,LLT NT9Y>@J 5@J4@P4s|2j2(Si8(Side* 'e* PqB PT NTLL4@P4@J 5@J3'(Si8(Si2j2fNPqB Pe* 'e*͜,LLT NT9Y>@J 5@J4@P4s|2j2(Si8(Side* 'e* PqB PT NTLL4@P4@J 5@J3'(Si8(Si2j2fNPqB Pe* 'e*͜,LLT NT9Y>@J 5@J4@P4s|2:m XcC@} GqnaB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Siw_yZ>@ NTLLy}q<꺮 @P4@J 5@J?j2(Si8(Siuq?3'e* PqB P<|, @P4@J 5@JT NᏝ: `ֿk2Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. gح:4Ѕ0" !4`2֖J"4b+H%aA\sVm B='(NmӾ߼uqrNss!$Si$SipB L4@8HҌH J$SipB L'L 5@2H J3N6 Jjd* L 5@2fl>@2'T Jjd*8|d* N4@2'TqT P$Sid* N4d4@8HT P$Si$SipB L4@8HҌH J$SipB L'L 5@2H J3N6 Jjd* L 5@2fl>@2'T Jjd*8|d* N4@2'TqT P$Sid* N4d4@8HT P$Si$SipB L4@8HҌH J$SipB L'L͛VSgJ]\7n}&jd* L 5@2fl>@2~p_ul=Z,,ӵV}8 J$SipB L'L뵱QZ]WLꫯjwP$Sid* N4dڪz:{VVzzzŚs7^WPՙ3{/}fGzkݟ~q]Pw|y 5@2H JL&-,,}P驕KKK_ߎן{Ʊc757Ck>]W//<,B L4@8HJOL&333С>|nvO<񗧞{' pL&333}/(>|Z1O}fH9CXm2Cpw}~b ^Z몵qͱc7WVg1Rid* NӇ0vkzZ?_;;}`jM4@8HҌH6Jon\6ꙟ>/_5AT P$Si$p\̝zt7p@4@8HҌH6J_R]WvPC 0 * L 5@2fl>@AVzsZ36˵U` H J3N6 *Yss՚uud}MݾlxH J3N6 *Q]W6Gօ c`H J3N6 ِ*^]W:uvvN?jQid* N4d [[u՚ٷyjajARid* N4d 'OVkA37W]1e^^ݾj0$H J3N6 0*wZsx>]_|Q{uԩl>w1}/}v0B 0T* L 5@2fl>@aTfq>~xNfYSk[Sğ۴sY4AGD/hKW)N)Qi77o|xi۵ǽ B<KK1>u] Λot,.Ƌ;vGv+LjTv2JK8U]S1:G;ŋqz\|13_~ϟo/_͛qR?O}i\…rwcjOnb?mPn* J$'4d6^^ff8|8'?;3Z{/?pSwuFSz/K n@2Si 3|ҷnPTU3snl\|9=*u4-4@rB JN^>@fXoj`z37W>['O6gx8X_/&pjPiT 9Li'/ QQU LwKߧ ++qZ4Ƨcb"&'cz:^[)5jVQiT 9Li'/ 14UuܻW>tbvF3:7nD[zq`mT 3HN2Sil*uU~޽SSlix  5@ 4@f* PdҴ٠Tzq1:fqRcڙ9r$ߏһ|%4@rB JN^>@fQcmvӧ19v`FFg^XN 5@k4@f* PdҴYJ/-PTUca+n7&w336kk75@4@f* PdҴYJߺuU;VJ嬮12J{zvKo IjSiT 9Li'/ ̕s':_-}سgtčYUŽjT 3HN2Si,mޯ-,U2kkccMy'MO>N6aۤ 54@rB JN^>@fi+}tTUc34 j,.QM}'wϜ>GJ/6J 5@f*M;ytuU=ҀX]۷cr2FFCܹ/K&gxE2Si 3|rVΝft4>,}KK1>u̷(8+.RzY9C +* J$'4d~U똝7|nܹŞ=[(e$z)PظLjTv2Y驩O]ݻ={׮ol딝/J6"gxE2Si 3|rVzl,jSw/u:qzϛFŧwҫ&gxE2Si 3|rV63ussO++qTRIff&?/JrWT 3HN2Si,g6Ûg߾8s&)kv5LjTv2KX ωƭ?x]o^O?^4.axM2Si 3|Vz|Ņz+wwHdjnN岪UI_:o[sr|\/<$cp`+ 1`+d`s}gi)qXeEO vT(C=z* C xXi0Xi$ ؘ;kkc왦E>eHH(׍UurYժΛX|LefF/3~wΝ4=n + `C H&\9w> }o*T*X̌ƔJ$$QQ]|^7oj~^ss -,RQ38WXijF2|J7r (C_'֏?/52SRJ-}#tJe4Pe4eVz~^F8/^h}]2 $s'aWBWxgbB?plM3XijF2|J̷8⢢ȿ`EݿVja4XJq 5XJ#h>XfgOHVth653m_e絼VPc2Vc2VD2;+Gr'׮5N87O487B%QݮݷꭝJe4Pe4evVzxX(o*w(!ǒNiimMjg`+ 1`+d`n6O PWM--ifFWjzTRJETZYQ|^.(<KfݣF+ `C H&Ym9瓧OC]RK(1!=өvw32XijF2|J/,ȹS(/ޞ>\/"\dq+ 1`+d`>wNC8ʓ'|*MHDQ/ #Xi0Xi$,O?99wNq|{Lkk*T(hvV33ݏ|\Vz]ժVVT,Z9[:^U.d_?smjqQׯ+ȈR)I9u"ݻu 8 8+ 1`+d`YTO2,SƆU(Mw_LM)V*98f38>S qpVc2VD+:^dn/ ,x\qC￯(kGY[_.$RiXi0Xi$®t&<~—pikKnijJR)E(ҥKz@8 8+ 1`+d`Y~Dr'QV$/  jZXPyv?U?ы?*+sџ3ar5GQ)5l$LQ"qЋ ! 6%";0Ha؜́|ko}kzŏ…8q"VW8p VVbi)`Y]_<s \o4@f*|jW77cy9Rʜݻm F1zۗsD },T_4ۡj4Y/w#r̦[iyo<`TrB P3f>y5җ.EJ͓'e6h8w.xعsMqΟsmRi 5@TԬ|o݊guSA=;i5{/E#iO*'5Si擗P•i"8ujNeuc<< j4YJ?)M4w#@FX]I8w9f_sVTrB P3f>y5+Y'O"I:ǧ9r$þ,+yNЖJTNj'/f%+Dsv cs3>(v4y4qzߟ`f<hK*'5Si擗P>s&Rʟ :gOƥK42{Ο? *yNЖJTNj'/f%+)eΉvUx8NffMsTrB P3f>y5+Y]"Y\G:] .qܼ˙̞O>̔4m4@f*|jVҿ)ewu@՞<՟^}u+;o_ܿ?i24@f*Me-,,x*vܸ)-0_~RW^H3i+vNA*'5Si5 vB EܹH4MF-0^?3Z=};Ƞj4r }[\\3ދZrw̆ F;MռYYw *vNA*'5Si5 vB EH9Fzk+nߎߏrv5*vNA*'5Siz7 ?,kaaVH|iw̆ h?Wv4qr@dPi 5@TԬXWV"m08.^g޸{ؿ]s * P9J3|ΝR`6 [m5GpXԮ9 @PLO^>@Tzc#Rj=KK0K2B=ƛo愷4M\^s<* P9J3|R9tufIv݋GccP24yTrB P3f>y5+Sӧ#sPG̒ C}j4MN[͑#1vjW JTNj'/fe*}`zVV:Z`Lc߾>]s<* P9J3|ݑRY]hY2P~'&ƭV JTNj'/f*q4MzyufC}Vf[͞=qNU+pNM*'5Si擗PH)g]b3Pf[oO?MT9 @6PLO^>@ Tze%Rj=M]0ckf6#mש P4TrB P3f>y5)́S`&uDcbccZԥsI4@f*|juo܈r/ L4Ùn5;w͛ ]LB*'5Si擗P+}l3M}Ts'2si.SJߋUU?uc729VDHmP*^IDH xQE!6"R w(={}><`]KjT:9 ]_RZý/`9I\M%ڭ/8t 5@f*M|̆sE)筷z_Tsz{;^yKWt + @[* PdlJD)]fs߅L?܉_eA8J:HN2Sid6ho܈RÇ.`zN_M1;ģGUiV 5@f*M|3QJY,bw!6sX[Ri嗃@F4Ri 3NN>@fVzc#Ji=/*mr|%b_}͸T 9L٠>}:Ji='N i.=_}&F+C7* PdlJ_wӖ9ǎEt *cm$4@rB JS'' A+}zz>UL[M%/?}:ZKUiPi 3NN>@fV(\*-s8qKs@K + 4@rB JS'' A+}LzΞwӖ9]:yz5={{I[iBjT:9 Z7ߌRZF鯾#G~y{{I^iʩ4@rB JS'' A+s]N?}.u 4qxJ$'4ur2ҋEz_w6Ftco_LuRi 3NN>@fU_.s~ =!gO'4@T 9Lp܌RZϡC\ ɛsi9{6?{kZJ$'4ur2GF)g+nr[i\zܽ;frJ$'4ur2M^k 31oUfO>rM+ PHN2Sid6Po݊R}-`&&8~];IV* PdlJ_t/k 31o}ibkk՛tfOjT:9 T鍍(4M<~fbUwV>{{@fPiSi 3NN>@fUܹ(> e;^Xe&!PT`T 9L@r%Ji=.1ÇXtV7c{@QiRi 3NN>@fUzs3Ji=7n1V4MaŹ|9>{@}fSiYRi 3NN>@fU(~szN߾E b9r${@eTiQi 3NN>@fU(~3{NoDt&VÇ㧟'PU`fT 9L@܌RZ}?|9qHbŹreMuefCjT:9 T}?|9}Nu2w{{@]iSi 3NN>@fU̙(~5<77i\Ϟ߼|ysWCKjT:9 T鍍(~<.wǾst<~< 5@f*M|SQJ =zNi,]ngzܽ;ހ 5@f*M|oG)`>j{N߻/y,DZ\=`vj44@rB JS'' *}Tzv` O]}0/V`BT 9L@>y2Ji=_ZWpCuϲm"Z*iZJZNu$"ăXpB@pM{g7{?:,~kC~8WUd|f=2J * PD YG^Z)՞kZ?<7B>UJ !W >N"SiJ_S=׮>@ 9e^^nr@dU͜R9xN?orL(ǥ}* J'4DQ?8T{>!f>8LjTar"_|S=mqeƀL"Si 2f|:9ڳ9/g4Opf4@d* PD YG)՞Op!MKo 8T 2N"SiJolj8su/^nrL LjTar"9s)>NfTUһLjTar"ҏjz[Ϟ&7ΔYY{{7* J'4DQWWsJΝG&qsF~3B"Si 2f|:9mƯwir7ssһLjTar"*T{>zs_͟|2w潽bSiT 8L&' .*79&sV+t-5ʿRzW@`* J'4DEWVrJMfczsˣQÛȩUzW@T* J'4DErJN+tqmrMJ I"Si 2f|Ⱥ+9sB+t3?ggGMU~*+ LjTar"KK9sj+tcq\Iyg`T 2N"SiJ߸S=}}9}J2ywHT 2N"SiJ//jW_8@xNÇMn)K C"Si 2f|Ⱥ͛9,7'wviʬJD 5@d*09uQŜR[Yo<[qN&qsJһPiT 8L&' .*S=I+t[66rU5o.+4LjTar"oS=}9ݢM.㦪v]E4@d* PD Y~2dvwO8@yNk??xGSU?K (G"Si 2f|Z9&<0K^XϻPJD 5@d*09^$T{N2@?yNwdg'A;ȹ{7PJD 5@d*09^~)՞;9ݝ|v&7볲wwKo 8u* J'4Dz)՞WO2@?yNw&7ב_(t4@d* PD7L־<].\pj}rzN,,|e~Gܻ:rΟ?\z?)RiT 8L)k2̜+jyy+Z\S=/|e~Gtܺ:r*uE"Si 2+mnn+Z\S=oyӱvTU,%T4@d* PDҔ5Lfff\gOsJҥ OH<7;rFY-SiT 8L)n2}y~q k/Y+`9(r X?qM)KN4i)T"^RSH&+ qCcjMH+NbPB#V;;almfHLjs͜7{?SiT 8L&' sJg42b~nU.9}8c* J'4DV;;9Ƴ}e9f΅ ɓ%LjTar"+^)5W9݋O?UF{q~gI"Si 2f|ȊWsJg3yNeo͍6s{3QiT 8L&' ╮R~L=y3WU{ĬɤgC"Si 2f|ȊWsJg3yNkmsj;ΆJD 5@d*09t]+fݓ'6ۉ{'PiT 8L&' ╮R~LѨwb>{'@i* J'4DVuSj<ӯs:ks7{@i* J'4DV;;9Ƴ}e9;ﴹ掦G(LjTar"+^8xF+,&h]ks͹sy=4@d* PD YJomFt4I~6,-4@pB J3LN>@d+Sj@d+Sj<ӯs:}w|Νw 3LjTar"+^՜Rxs:$WU+|A;QiT 8L&' )5+,&\y/΍}@"Si 2f|ȊWz<)5Ѩs:?os8U_)LjTar"+^靝R2blyͭ\NT 2N"Six:x_0tdﷹf'LjTar"+^)5W9hwbaߛSiT 8L&' ╮R~LF\' МJD 5@d*09t]+f ojs}hH"Si 2f|ȊWsJg3yNϋ||Klm !LjTar"+^)5W9=Gr{\6&T 2N"Six:x_0|98m}o85LjTar"+^靝R2b;yimx4}85LjTar"+^8xF+,&yt^6@d+Sjş 5@d*09xSj7_mwa67O44@pB J3LN>@d+_v5m~LeǁB$a  کecc[ZRC BMHV҅Rcy.^|~%9R4?2t_zoJײ6dH7)o'n9?0 +َq.zzzE_๴? E H&N>HPȩ T{N{aײIί;Foˋ58NNǹyM_๴? E H&N>HPȩ V`iϲ3L10f+@q9CCiN4@8$L|L{KgRSH 9v:+)Bί^8c#'? E H&N>HPȩ VvLxADz;;돻Z4]_eXA[\NWWyi? E H&N>HPȩ V~h_+q-YyY=f?{\efz;̾}qFv6=O9 Ј(jF2q@2-͆JEN_>sc9vwׅw8W}siF4GQd4iol6T*rN\Rc%8G a:ldx[CI :OP33l; sCڟhihi$'$҇JE͏ }^yeНɥl"O!齒µk\hDKp5HFK#8 ޵+T*rvl~dho K[ǽXR_LȵRLoD/ƹ( Mc? E H&N>H7oGJܳlql`zsW694@#Z@2ZɴƍRaC#fg>[5X6i*)9>Lq~;ukhN4@8$L|L{Ko*964?2h{z]?9[^XA sc62:jzOs- Q -dd[zPٲ@Nܚ:ZCfÉ퇋wXcܘW_< E H&N>HC"g`Ywݥ-'eN靖Xsc>~sЂ4@#Z@2ZɴR}{#@|3`I/e;_n=Kg+쟜?]f^.>[H3>Q8_5|<xڟhihi$'$ӡRS=vDeۛ=W8>qx'?Y*̔ [ǽwݙKC=׿u+ÇaWW{ÇMHld0LH6iF4GQd4ioiJ [sv_LJg}gK͹ѥWg9p չ7LOH4I4GQd4׬ - tw޲#INw&7z/yN?*UwNRR&_ǹ:k ֞CKp5HFK#8 Y+Z/T*r ?T;aɲ6t{)8_|NpNK_n;gͱ\}kZ:;ɾ2s{.P0= hihi$'$kEK JE'hGr-/^;_YfGbGw۰V{J;'(ʩSqn8`3EKp5HFK#8 Y+ZzPȹpAtf[ӶߩM~L16ZnS:m8GsǙ&S!AH ) "mi*Sx%@Bڬ(ݪ*ZBRF4h1Nl7+OlNyyϝ>w6(h;ahWYDK(j- 7f:ZztT q_ekB.%l=aNom7?pC7(h;Ǐ~{UV4%4Xp;lGF7<^peCtg|qn\A^(?l8ylzn۷/ӧp- xQ`3ZnbtѣR+Pє,:/0<_Lic jtŋQvL=$k[ iiE 6&v>LGK:$8U֊=˾£zf:hʩ ORZPӃvI*JcyKhiE 6&v>LGKJ!:АJ-SG]'.陥JoV7Oeùdx81ӦpO\ZDK(j- 7f:ZzhH q<N=?Д_dKwʵFC: )[G솧Oe:$m}gz11jip- f4hA)D9rD8I>FyR qUp.[fוL)7fuzn9 5-ZnzDeNG9L۹yKZ,GQhi6ccR30R1NGiQR~JzD9LٳGӖG`9lFKM|Bt<[T6@SWL?6Vӕ4*d:dzRjMRm4MOSwC+xfTsoNE9Rgz@% IhiE 6&v>LSK;&8Ωz>[+Nmm7M_%:]7{}CKR~5_3=zA (j;'NHD4$- f4ija)Dy-U4Kegm_WdpAS~݊Իz5ʩ+j@% hiE 6&v>LSK8!8 Q澩x~>~2 ;~24$8 9&=?PW.[.fխo6XMϤX$LLH.Z⋖Q`3ZfrF h;&8vFC+H-l~5_7=Y!VOUrf2l4MQ癝5=P4- f4:M 4ONBDɗ_zVk4^(y~0K׏MO1w~H6B@e2Vi9?oz ii#Z,GQhizzzv5::j3^~r"JT[+(nl6ĵ˪ܭM(vT㵝>q ^hiE 6a\.?]Lt?BDL-'7~鱢seUB4=:~xma3`K@`9lFKM|.d:-˗Uo=?P[M]gkoL5tHJK!JUZi?,.BҀ+uF,h)bBǽNKcH->>K_}u真UjSz9?'v`Zu-=ϖAAKr5hFK#|,޻= fAJTc*tڄB%:}}Uz&?^}zdh./Kl"li4(GQf4Ͳk9kKvx cvYAy rX*= \va;9tHz `mK@@94Ol>hiK[cNlAh7r8cNե#37V=D!.g/lrn̕+cE[@94Ol>hiKYc\2? Ton9a+0p.=79NXC} 'Ia$cB[@94Ol>hiK/,Xc\r߃jYAxN-=O<-L)=Ǐ;^Hl 4hFKr5hFK#|,.1]gѧ_փ0L^ٷ'^dxk%1.=0hiЌ(jЌF>Y-֘um.la1Kϔ o]H (~ߕ>rvR*>p4hFKr5hFK#|,~MkK.]~\YS a WޟYOxN_]*TIԫKoۍ9rDz `- Q-|b@>tm۬1]gVjeq"h |UIo/52$=.c9yRz `- Q-|b@+Xc\2=щϭ8#/)]Pz9ޙNz߫BꏤGUاvp7㏥' - E '64OKOMYc\22щĵz!0g34<^}x\x>g'- E '64OK7TƸ^P27qm5#_r86gs'}yX,=ÎƬIO Z4@94Ol>hַ޻㒩 C axJ7gsIӥln%=7o:^套'- E '64[K_jqogw(YYZ}T~\Pz&1YZ:Mm֘gOvV6rj)#_yĢLxN?s/[!'JCTrv7פ- E '64gK5<\IFR Tz&I<ܙŊ;1WŃclrvoPhiPhi'&1]\i4ve%#LxNw1^q atw-=Rm.=- E '64gK߿oqɝ; 7GfV axJ}uCz&yh.1]磏>>Wv~gR紛_O.!x]wc&'g@3Z@3Zf}n;1]gW ߧ0¨l9)="<|V9md[{oww6 ~^xAz@%Z4@94Nl>hpK6 1@ŗOv3Qx/ң紏&6Kys9͹|Yz@Z4@94Nl>h|K;f9t !Uz.AؒE5>}ZO[LZ[o\ܹ#= - E H'64KϟƸdx8*R>bΖ(9փEm7֥R*S~z{&4hFKr5hFK#|,Ƹdp0Qf{ =s~YVF;>}Xxk#+U遼,-^[?PhiPhi%ҥ51 <Ryq|TKOnBZKVO651~k?\z @Z4@94Nl>h&'NXc\<tR&b~mi:-tld{!_,ץGx C;9)=- E H'64i׭1YZJjO6䫧ei:-Ze~-=e[Hڛ7'- Q-tb@3.lZc\24TQkt>[ka);7!=_v;ғhiЌ(jЌF:TK5%ah{&x{Yd?IOIn釥&T- Q-tb@3lZc\2:3\1i: YlGq.=q[| '= hiPhi s!$~2-=MsM*3}M!ZIs| /JO@3Z@3Zf-hqI>H釥L\Qzt[/E~ӂr99{?21!= hiPhiɶ5%'R rjO6"?-=MsNl |ݺe"̌0@hiЌ(jЌF:lK_dqٳ H =ӓgJnoQLϭ59x$ 0@hiЌ(jЌF:lK51|Rgn1bd㹕( agϏtŞ^HkפDKf4(GQf4҉[1.M@ L6"ds+eQ:xQgw=H6m_XG:愡}Tz )4hFKr5hFK#|LOƸג,"6(̟+=G7/4G $ϭG`{{OssΜH - E H'64o7ߴƸ/iJ&/H%ċ:%&h&7nXc{Txz>+J=ċ:%JO/=7?HOkj:728hk5I@3Z@3Zf-](Xc36{b>lQz"^o{v?Ѝ\ =~4hFKr5hFK#|LCK Yc\r{nL6"OZ]zSbPYdzUz _{v C,=f4hFKr5hFK#|LCKr?.^k}R(v?X+st E/hα5i|j HT'ډhiPhi)i3g1bں0ݤJB XRQUU{)ڋlPR $tQ;*dhJJH o8s!^s~?|?zbK}2in=%i@Tс u {s/wKf.^$V4c@94c&N>hd''1.d|%g=:w RK55enea@3Vc@3VafJVVql9vz{>i5{m JIGR2AZ.)z^۴.o4^7k'XiPXiYg1.)SϢ$KQ.ݣc꠬WxmZm;i?JN+ C '4ӳSS$WmocE.I#=:7˻? GپtVr|V4c@94c&N>hgK%[c.e}%ON}LPi~m =࿪=Z>a@+ 1+0q@3U+}5%~8ЮV7h {+ݣé0ͯ홡MHMG ,.8v|+ C '4Slqɻ~8Ю>߈'eOPk~mg^WrY{n&ܜt uXiЌjЌF88Rv,T'RK|:d+;+Ih4N;Ma@3Vc@3VafVzkƱ5%L$oKAPnU+ƕt֘v| &@++ 1+0q@3m+9#@[;QtPhusq.V}02^t+ C '4Ӷ,,H=&jׇQ%_-HZKܯO#7wPG 4Le&V4c@94c&N>hp1.9wNӁ6ǙQ:vEP.g5΍  O)}+ 1+0q@3+=4dqK=F=k>t(ju|=>qj73:*Jf4(Pf4tb㒞e (IݒK'ϸco ?՝.@zt_ccOviI XiPXi\~kc>Tj%sޙ(K7ΡFasvK>WBnb@3Vc@3Vaf:Wze㞹9VFIr]At5+mj&?f8zrt + C '4S}dq̛oRIå(Irq"R;+;_VkrƱtXiЌjЌF8ڕ~~ee]ݍ-buw_A5IjOƸy90 -J?ìۍ/,VȖz.^^hiЌ(jЌl6ҲGTooXbvuYc# g|FU?Ef {Wѯ !绑!5- Q- Yϟ#-NK <>wϦR<(== bF908-=;^P,u1vji KKS9WHolhiPhif---{DJ >9u} rJQzvWQ?tzY b3:jS)/hiKONZc\iUqh8C>\+xZXݮd#Y%ⴸhw|S_- Q-dft:mqɭ[ңYFS 5VI9v+]NWӓ'6r|yPzhiPhi$'4?ÇG.a0*/I-jr֜lc`,F2׼NZt@94L|ߖ|7S[j5V)-,9F,Irvu?ܹ#hiPhi$'4gf1Ţi>#|Rz|oQc ׳}=t^˾}FKf4(GQf4yǜ:%==mtm&#u1W]kx]X%s-쪻߷H0Z4@94L|떾s~oA9$3>+=;uQcޟw(G&&rV@R- Q-dfǤR3mX1#Kҳc5vvI3cIz8uw?H*Z4@94L|Ƹ1mpJ1&u!'=8{Qc].;^Tͳg[z9wNz $- E H&N>h{KTᅲۉ^aټ;V󽨱sJW9GF KĩKz=.I䡥@3Z@3ZvAKXcaEX0lN_EnksKU%޾7T>z$hiPhi$'4-=5eS)k{>Lz Vݣ 6 vAQc#JksU7wbbKz=]]ZIBKf4(GQf4펖l);麔hX(WUW5-ҬkdhĮ@FI?*Z!PǘFDH_ *YQR$rI쵧+] U6;WxHH3ϠY_` u9^z hiPhiyҧNYcsm4wvɾ(Ix>o/u7,O즥%Ez{Jo`- Q-0q@3oZѰZc;?hSK߼i(ǏKtV$-#+҃%{y}_o/U}wyM5Z4@94&n>hYK[c:JHtWQЧUђgEVf:<"?SoJΜO/2=-@Kf4(GQf4^lF҃%ϊmNUo+y??x |GKf4(GQf4kYkLG3Qͩ+uђEV>~]+X#kw4hFKr5hFK#L|˖~ kLGY^pTϣ$uԝLzveQ~ڰQK}N55Z4@94&n>heK7v`㞳gw\EIҳ%/b~"={|㎾?H- Q-0q@3_[1^prr%iLMњE^q$}K[/r- E 74{~ EIZ6UG;573?HEo7SIO- Q-0q@3[Ѱ/`q̍ ף$-.UG;5ktBEz.z E&&whiЌ(jЌF-}51cc}^lF\]Uݥ5},>@3Z@3Zaf޷,.JO4~%iKv/jloZjw'E&&hiЌ(jЌF-}51ǏKOtt%iG;5Ū[nʺ58DZ{Z4@94&n>hBK Xc@'.ף$-h'ft*=~w_^a;/4hFKr5hFK#L|,kcFFxz#JҲyj]zpBQcϪϹHdZ6ﮙK/- Q-0q@@Zz|8M~%iٜIv)jlT{?fN.ԥﺗ_vٛ^@3Z@3Zaf51;6u;lʤG;5\wxEz&J!=~w=~ls/>z$|AKf4(GQf4ikKFGGv(Ik N8E-9f^TNvٛy% Z4@94&n>hNK߸aqI_][ؙ (Ifd&=8 Vu$})=~wewܛ9wNzxhiPhiynƸ/v|-JҲHv)jl?3GLz+LwGKf4(GQf4͂j>ƸddDzt`gN.ԣ$-Mh-kfOGLtEzl;~ͼhiЌ(jЌFYP-]8ƔNqV؁ w(Ir.=;Z \]d]wwOzq4hFKr5hFK#L|,~ukKN؁z%CWzvZQcJ?4q734d\z e4hFKr5hFK#L|,y㒾>e;resb.=8Z ݩ+ w]z9ߔ\qܟU- Q-0q@Z:m5%;poT?U}*x:`ib L_"T@E!&E scl$4kzߞ+DIϗG[*}I^pswCf9tgг4XF8B Qi/, 9ı_Y%c+GIWG[?/ v}~w{7j;Ok=JeT#`F+/9z%i3v8 0hvQ&K}ߝ?T,`˨4ėXZDZwN8wjY/T$tr7ڋCfk}_]r}O.}&* Qi0PeTa¬ĄwN8rY@{(I;h+P>%ݻ筷O|QiJq,_>Xf wN8}}(I;Nkګ0Cf6>\^{;'~vVAT,`˨4ė[)|>g(IZj4;8]39)GFG`5XF&|,Jg?x;'A_jhi%`g]{wl̽ >(޽{/^C2* jJ#L|`Yȕc|FGfQv:gB{qrѠ%9z{Wݹ#''G`5XF&|,J>s9~\ @+(I;7KڋCfL^pZ^r9L{{* Qi0PeTa޹ך$>da%i鴶:Z X޽._?T,`˨4ėQ>νggQv:_i/5}(~޽j5—'OA2* jJ#L|`VwN>SSg;|%`;j4xUv.jmwG`5XF&|J{;'!$g3шPA!TrOުhmŢc^*iJeT#`F2*SsY^>$̟owG#BfÕ T,`˨4ėQT~`;'w>LJ*Q syшP|Yp_(h/ |qM_iQiJq,_>XFK|n>GY)ni}5}lZ^]Ù3=a˨4G2*0eTwN8~mMVL{}ClZ]o ڻ+2}holhQiJq,_>XF>iu3JRTj4x .Uq̌`˨4G2*0eTʊwN>cc^zRmձFK&er=Ғ`˨4G2*0eTgs‰c_(hquy5JR<ִw+-_nbY{q58WV4XF8B Qi/,-j~d;'9;[}Iu>;^!hREpO,V4<,36}D2* jJ#L|`n}pƴ^:t%i󗯪ڋB&ʂ}li;`˨4G2*0eTg;杓L1$tk/W٭*3?w_ v+u5bWt˦Mfl {kt"[@,n\tkM.]s/p/ r>Or<9=U\WhBA?g=T,`˨4ėQgpnxbOR/#ݱPc[Ckʎ?>`5XF'|J?PpN2i;iO#F#&ΰ=,`5XF\.Q500g6Zzi5jY^܊)ק:,`5XF'|JăP 'llhkll&LŪxP#ϙjFM{q+{W * Qi0PeTq˨9\}h5I}oojB\j7!Ǐ _˗WT,`˨4ėQ>ttπ}Fz U\毴7-~0JeT#`F2*s|Of{7_Jj{dYطOJګ * Qi0PeTq˨tK^y%8'1 b/.&ouTF7g{}JbQ{oA2* jJ#N|`n_S(3 V4 L{j9w[rj/nɓ7XfPiJq,҈_>XF[uhpN>j;^0ۊ#L]pOߨi/nK'T,`˨4ėQVy::s>s$ξJ}5jK⶜=+y{{T,`˨4ėQiWs)F ֵwFF7-嗵T,`˨4ėQiR)8'bQҩZzʢQ#S&_i/nܜ)Y:l`5XF'|JT;8'JE gkIeH{xj9qMp T,`˨4ėQi|?jO}"OW׏F_eEpOߨk/nΫJ>6PiJq,҈_>XFŲ,ZpN>g@|z' wF7k<4]^ܜc$[oi 4XF8B Qiĉ/,һq^(s>$7R=^yqIpڋS*I' T,`˨4ėQ]:r$8'?>5RMR/z{5__ިk/nλJ>a˨4G2*8eTzs Y}D混Is"hEp?gC{qs84F8B Qiĉ/,һkill>i}/VwF*|P{qsxi4XF8B Qiĉ/,һ}(si믵πd^0_=Fۚe[ܞlS{udO0JeT#`Fcn_:wCZf7`[Kٖk+eqlCU |(XcEJ:QҔ!rhqKhE-N`lQSٝz y,by99LLh$l=joB}-d[|f]{q$/3{* Qi0PeTq˨Ay|LI=Rݶ!/!ÕF?/yjimT,`˨4ğQ郲O}DZzRF~\5F)cKMōKKګC˨4G2*8eTMN35="֓oDžPc_C u[lj/nݒګC˨4G2*8eTydYz3IxDPc_Gnw^ܨ;w/x:QiJq,҈>XF\pN8Ohod[B?>AD5^VτWFmobQ|_:QiJq,҈>XFܩS9ܺ:"3q{=Il _}Xjl;e]w6* Qi0PeTq˨{ 8'a+ՒL}XjlҐfG{wff$F2* jJ#N`duYz|h /ꄂΞXhhnGIYJeT#`F2* 9ɤωzzٜ\kBܺleeS{wyGv_7QiJq,҈>XF{^RpCkoZ}G.ߵxcߖݓ{C˨4G2*8eTGN I=j3IlF>B5m=a]{we=67QiJq,҈>XF{\I׵WG|{>IeS{>#xޟLv[/.ohn˒T y:TQiJq,҈>XF{Os¹_{{6fL{GjSvUoݺyPE2* jJ#N`, bpN2a{[L{^6uƏ=->ho^X^4XF8B Qiĉ?,ҽsBpN8#>go'̫kyW{AFo7dtt{8zTj_7TQiJq,҈>XF{ge%8'#GzIR/?>~ #+KC.iɫ}PE2* jJ#N`'s9^{{gt^0hi>5L~.^m]4XF8B Qiĉ?,=53‚v'I`~:SkouX}%3^mj7U{=47TQiJq,҈>XF{ bpN8~K$3F ;_f'T y:PiJq,҈>XF{mb"8' 2wJR/c7ڻ,B/mܛzk#JeT#`F2*kއR)8'7πȔ>%WmoѕܛjC}fdDXi =T,`˨4ğQCPyX ɯCzڷPGjCv%qsG}9K}C2* jJ#N`>SS9 <>^6n7@:fͧ}ܝ_iiȞrY{o`5XF'|Jz=ZpN>g@4n(~PKR/ֳ  هm/{j\*y\z4XF8B Qiĉ?,҇Os)Çg@4.|LR/{m p!~_|YLC2* jJ#N`>4yΞ gd$d1כIe3Rih?hu5M\ll]ҥK7\z4XF8B Qiĉ?,҇O?sQGJcڀuvj9r*ZGUKIeFSNc꯸6.[8tp-7E'nV~~]ii;\ƸoK0tzRDN3PKC Bu&]ߗ>~Q}aML* QiPPfTaͨ i5岝^HvZ.F֗^#:L^ؕ<~!}tyyGܐC@3* jЌJ#L~UkL)k mGq6Aôp+}xipAܐC@3* jЌJ#L~Ė֘\3:*04ʼnԗP?v|v} ywy|\ܐC@3* jЌJ#L`ekLY^^XI8qR>IoB_ꝸ%}bV]K 9T4ͨ4ğQi)/[cro؃5(Nk P//Ѭ5zˣ\Kr4hF@9B Qi?4҂&&1fvVzw+(N?;өWkk* QiPPfTaͨNǞ7DQiЌJr4>hF5xȖ9׀~I9ycKz"~z~}o:mWc.ŋ(* QiPPfTaͨss֘WTK8l43= PmVΛu4>ޑkG(* QiPPfTaͨg5cc;kIyZCzB"Ծ'r^oN&ߵ5Cͨ4(G@3*0fTZs1feEzx83O[Kzwy¶6ryymI4hF@9B Qi?4Ҫ4W1s25>kGq<#77(B> ѳS';ty sCͨ4(G@3*0fTZ%kL;ԌmJqKoP037|I/jٝ>7QiЌJr4>hF2;6fqJŮH?Fq6?Ӓޠ`O֛RhF5׭1fdDzx>mJqrg+A1涜3qkGz'o=Ξ:%}n(@@3* jЌJ#LVntkޕ^.48qR|ڕޠu7{ÿ*ގ:̤Y_z3o9VT4ͨ4ğQi671fhfW}Ւ(vR}ޖ^B;B]8 J9,>gOѕcO;6+=^u=6]I{}ɢoF?7lO- E ҈'64}MkttHπH;y^lIE]F&[Ό|NDJªU~;w hiЌ(jЌF<-]/n߶--ѕzs@toFz(j޿VLOwObatŚLrYPhiPhid2]]]{k+J}5wh:uEcﴵSzD.9$vshDQkg֮kbskhiЌ(j-]jd2uWFreiѢ'@d-j>r\/Hlrqb~޼VpKXZ@m=zTz@ MTli e˶^t{/4o߾-wG|Y7}[zxinU_~yX@-]dwt1cTVHOZ%N#{+IW /&~㓠{+G?2^/^R}ܪ˗Y@-tvvZ2LWWJR_m~s0ZRyc^]ܳLhہsң(BQkg_Yw&/_Hzߕ١- E }_-mg@-Ze2yigo kQʕ3׋<;|8b/&׫>Q[tbBЁhiPhiu?ǏKH7H{4=W ң@QldcwrCQ>oI?7i[ѡ- E ҈'64M&1+="ݙ&sJ" Yjҽhѡ- E ҈'64֘@9}ZzDZLD\DEʕ/g N4_gc[l_yHj- Q-xb@3Z~ v*k$u@zo,WEE5[#-dzahkѡ - E ҈'64ڻZcf{$#&s##edPa|2^Zy4ZZwobVy:~[ЄhiPhiumb&֘0M녒' `fsxyKrYPhiPhiґk 'GH~PJ녒P^z+̝Y\ߛk iGxX~T֭>nCZ4@94Ol>hFKG֘p+= "Jz(/=P-PUsW ooK&ۢm|2'0BLQCZ4@94Ol>hFKGIdׯƄ>ujqSHYlzz2tx(d.ĝyɦ/sϛ1>:TmK@]@94Ol>hFKGŚ[M\yC T3Ɇ %\PITJ,hqBre%tXZA4c/{ͮb|?zށ"9z~y]ʞB0ʮbWdP˂{sbLfS+ȯ1,o3PRZZ- @e4‰*gvVh7ٹSضyDnMIZ*Ѹ9.{,r\m hN}:8⟅_roԔ_%8TFK#x2Z:\.4̓9"J% ݶ1gϗݚɼοKt0z}r9=GѢ~׹u]PU4- @e4‰*mmM'4̓\ {Yt]:gnTvkGlTKT]ݘ|׻*=3OF? =*Ca-Z4('^>idpP$z;bGL?ϻGE]R˥?v%w~ܝl޻9y-XtSG߀_)@q5F8@etH$B<ȁ "SMfVdXG1&ݑ>/,_Kܣw_)AK(jP-ph8sFhuqaPnMt&3/Ë)ߚ"Eaۑ3?+~K^/ejSoDK(jP-ph(Ew4bjJ<td]كo_~^Jq1DPrhͅ=BK~ - @e4‰*C3 M&A@zRf^dH,Rvqcj4'gKke5.Z]mt<>@e4('^>Yi$A@zRjDTe*{ LW>/3iM]WCt}}@+sTFK(jP-phMoA@ؕd&b~'7-7j'U,y VNi;tUG7<=Z2ZGQhi/TFKS4oy ܚ8;f? עΖcK}vhfk9w枤Q*;PTN== -nẲg@+sTFK(jP-ph:}Zh7u13#{ׅb0a~8U٭ɞ@e4('^>rY8!4͛=r-fӲ<2m-9FUu\|u)oI=2/JՖN-iP- @e4‰*̶B<\nLj1&'j3w*5Y]ԖS~LuĆ{7Nv߱;F;vL h|NhiPE *N|P-rO]YNPnM+D SJ&ĢfW<[˂{s<ݕq9gyv\}UXX(nԚshiϞ5b1*{ >@e4('^>uiKʞ 5DfĐ1b^%lבQΩ۹Qk@Zx~sO:q\(,T}=^늽{]d8TFK#x2Z&& M,mfFT3:i7;־Z۹{őo s{N\t37|h97?_\(~2o]痷n黱?;?tXq7hyz,st9`V67yq?~t(mkńth(%t2 hUuCJBH fdMeHQmVvƉM\,h4+y_J=gkk=aWڞ4hFKr5hFKMl>hFK?Ř8y25e{*4|JP6>Ⱦq)wJ͉񥎋6^v_/6Q*yܾ-dM+=iЌ(jЌ|Ќ̈1qfzThvQUn~vj>D~qq~a{kМPf:e{4&- Q- 7-rgmO7}R>~@Ձ#KowK5Aӊ"9qk{@c9 E p[$cؘՄKɶz?.)?^g!8ukuаxNf4(GQf4f4W&#Ok>9?Yz9ᴑnSg1xNf4(GQf4f4~̌x[R)=+V-~ 5畁lDžۋjyp6oÇ'A9 E pIӒL1qSmǬW߽s >/UlI0IxNf4(GQf4f4W_IGg]^r\<7ha$h"<@3Z@3Znb@3Z[03#ğV9}Z<=^K&W ?h6m;2?7򯕊x1y1gmOs4@94&645bL%ٞnõ_[3tadwnnNà- Q- 7-,.JgS%o9g{4;Z4@94&649IĘzyᚓ'c==R.۞͎hiPhihiĮPc꘩)Cۈ;Hzz9ӧGhiЌ(jЌ|ЌF\$'+]]E Glcf^,Q<cbȄ 5!T>H#:jAuA4 ɐI?hX0,2ذrks޹n^qnhLjTv4sfG)#<7VQa6صkhoy0* J$'4d2SiFX2ڳ}{>++Y{`f ^ MWhLjTv4c4Q)/7oJbC~ԞQiT 9Li'J3qh4M23x֕+g!j 3W_՞QiT 9Li'J3Nۣq8}:~x+D 33Z{0ZI2Si 3l>@f*mn/&J@f*M_|M8n 5꧟bϞQk4@rB JN6 3&ػ7Ji8p n߮=?f b0b׮՞Jd 5@f*M;|T.\R}_kj&GE3Jalm՞4@rB JN6 3&8z4&Jpy&Ξ^-Iƾ}*\֞Jd 5@f*M;|T66ĉh(<ȑ{-zBM~oǡC#k A2Si 3l>@f*M~R4MR ۱Yh1&A_}u~ڪ='5LjTv4ߏ˗ؾ=JT;ssqbz%ԌԹs5 s+ǣ4@rB JN6 3 n݊ÇӉ;cmu0i8u*~Zw￯}0 * J$'4d2Sih( <׮վ&P3,~|ebU;xF58$Qs u=B7z>t>}RS@3* jJ#N\>xF~ȈD!XN:M[jZM\.\0۟UU5 NϨ48G3*8qFM=z+W$ lz{cu%B9:֖ffT(3bWؘ~zSi5xF'.<{W l.\j5]BjU岦U,jjJ z7c٫$,AC4xF9B QiĉϨ4gU(i1}.`vvIݾzg|^e&bV * QipPgTq3* U %BKtk]BAeT+U[8[T<Ϩ4gTx?_hjJ٬BkTZvJE;;ZZnn} J*[T((nh>ʊhpdDァTʸ!=H>zC5xF'.<8$xQTZN* QipPgTq3* 'O4:$Qg=_:>^ ~}ժeMOXԔZ`i137ǏhXc* QipPgTq3* ZMd|z8}^fg+y15xF'.>༉pNQipPgTq3* _~ѕ+ lffW١嗺|D>B>7ٕJs<҈QijsGB0wu--t^M}J%ؼ 5.i}]5_U: 5xF'.xFhh}]B~ݻjz']+hiISlVIbvO+8nRZ8Nt* QϨ4gT8{$ l2ksS:w<@ۚĄ40.fZNMJSfJN* jJ#N\>xF+$ xymm3%\^ffgN_/ӚVFzz*fF踪4PipPgTq3* :>ښY`?5<9ml^IIׯ_iJekaAZ\E}>TjuڜTQipPgTq3* 8FG$ ˴1vfO598;fR)PЍʊVWi҃Wy244i8V+Z(?Fc-?:6%z49"!L%.[B3MpƔi4!M>Oh<1ϲ9OzpSkE '&,SU䜭 (Ύ g>_&&HFGJ&yQsOgu,8,NL>XFK5Z]U9xQ?܊R_k|I$dRccUy1֖Rss2Oo<+}VVlS5gwichi0hiҀY9ښ~1u]-.*T+/iቄ2MLhrR٬_ݻ*urr Ne4GQe4‰himn*sF30u}X=R'OT*)W<~$ ml\eNe4GQe4‰hi[rh" iqQ;;V}Wyn67cdfFU"HmS)rZYS--u^BAnP\P`hi0hi@w9:ҕ+r קq]RIf.ZM/^3}m{Iښ~ER`- Q`-pb2ZFͦfg\7%h>67{;DZg2c>Pt>dx: `E '&,)/˾ђfS/^JS,$U6]t}a?`- Q`-pb2ZjGGs]HDJ$Lj|\ }[ϟ>ٳTigGŢr9MO+U&X]L_>LZ-4XFKq5XFK#|z@u ɹ%i_?f)~Q7ogk<Fk`hi0hi@/yL\fpPzU}lC]|^/kfF/jxXѨ}Ebhi0hi@i6LFru w>WVt:2[Z<_X\|>+o?޸DBAL.鴶w4XFKq5XFK#|zأGR9B=ɤS : `E '&,hhoOq9Gș'HhlLZZRBAqC[[V}pX2Z2Ze4*vwDBr:D4XFKxz]_|A9G˜ JijJŢJ%Hu,8,NL>XFKxijJA HgdD::=v X2Z2Ze4hhoOJ9;S.mU 4XFKq5XFK#|4zXJDȈ&'uJ%y: `E '&,z]1 P, ySCUz 4XFKq5XFK#|puiyY٬FGH(sl+֥K|N}5nUqs#(FhkQCp`ZGNp҉q"*BxRRP yI eA,4@J 5@J&(Si_/s|fsׇ>3|{[/端Ν>`mT NT5Y>@JOͽ{st4/fyŹxq\^ߞ78 PqB PҬTؕ;w棏ҥ98^_ fYށ?w?QB Pe* 'e*͚,Ldxc^xa6ùpa^ye\˗ҥy9:75@J4@P4k|2n>xfgvmbnߞo~[_TLLY4sּ޼μ֣ߟ7O͹vm߯ze_O~}}яo ܿj(Si2j2fMPqB Pe* 'e*͚,LLT NT5Y>@J 5@J4@P4k|2j2(Si8(Side* 'e* PqB PҬT NTLLY4@P4@J 5@J&(Si8(Si2j2fMPqB Pe* 'e*͚,LLT NT5Y>@J 5@J4@P4k|2j2(Si8(Side* 'e* PqB PҬT NTLLY4@P4@J 5@J&(Si8(Si2j2fOdy>j2(Si8(Sivk٩] NTLL٭3vܹ] NTLL٭vwfw}x8(Si2j2fOdy>j2(Si8(Side* 'e* PqB PҬT NTLLY4@P4@J 5@J&(Si8(Si2j2fMPqB Pe* 'e*͚,LLT NT5Y>@J 5@J4@P4k|2j2(Si8(Side* 'e* PqB PҬT NTLLY4@P4@J 5@J&(Si8(Si2j2fMPqB Pe* 'e*͚,LLT NT5Y>@J 5@J4@P4k|2j2(Si8(Side* 'e* P+;u@ e!Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(s[' @El:adV#CBS| NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*Ϳ|m8^6(Si2j2㺮~|>}~OLT NT}[x<~}~OLT NTm?j2(Si8(Si]ukq 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,Lcm Pl‘"ubs)qX<'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NT~y?j2(Si8(Siuq?3'e* PqB P<@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,Lةa[-ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. Pqcm Pl‘"ubs)qXP4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@J:'qB Pe* 'e*ͳ>Qu=}OLT NTg}>^ @P4@J 5@Jyu]O/8(Si2j2q}udOLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2jcm#(v,mn"h^EQP?͠O.43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P4o:^/:Si8(Si2j~}/Zk۶8.|7Zkm?qZy~k7_w* 'e* PqB Pү3nY* 'e* PqB Pde* 'e* PqB Pde* 'e* PqB Pde* 'e* PqBN05oD2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\`ֱmM8RXc5`.p3%<j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NT~y?j2(Si8(Siuq?3'e* PqB P<@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqBuPHAϦc<Ğ|2&/*(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*q}>|, @P4@J 5@Js}qu] @P4@J 5@Js}~O8(Si2j2N8(Si2ح`bli+N!:8(Siw98(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pem Pl‘"ubs)qXJT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLy}iY8(Si2j2Y}뺞>_'qB Pe* 'e*ͳ>^g NTLLy}q<꺮 @P4@J 5@J:'qB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6S$ ~ [Qe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge.=v%=jk , kj4RQ \U\D崓 [g✂s8=w<2sχH J&H J$SipB Lp8ysMOO[>@,O 5@2H Jӭp811qS] |pB L4@8Htٳggv_ @8HT P$Si5'&&tjqq~N4@2'T Ý? P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M, Jjd* L 5@2ML 5@2H J&H J$SipB Li$SipB L4@8HҴ4@8HT P$SidT P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M, Jjd* L 5@2ML 5@2H J&H J$SipB Li$SipB L4@8HҴ4@8HT P$SidT P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M, Jjd* L 5@2ML 5@2H J&H J$SipB Li$SipB L4@8HҴ4@8HT P$SidT P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M, Jjd* L 5@2M{𡎎jkZ]OF{ݻWur]ZF74+wWF??SNO~k* N4@2'T6YÇ:: ju>_YX+Wtkvd]Pssuv=|X۵[e-/׵kub]^]v@ 5@2H J&}~]A͍ϕ+ujTzοɚZX~VVɓ:8۫ͺqc2螵ޮ~i o4@8HT P$Sid޼Z\pΞ^LN߈qfݾ] uN--F|Y۵\~=xPu|ݩ4@8HT P$Sid?٧OU-/lGz/jfkiѣ ?\[ͿnlԋݏްRurjJjd* L 5@2M|\o53Ss\ݺUn>5T_KKV_޻Ww~yjcc|wRur J$Sip[/m NFch5w*ָ7E?`6poO E6sߏJէv6pzr =넢&V;rt[tq+￯QRTVSFi̹rYN۪U0482ZGQhi+TjkKժyRҶ={;ZGQhip- e46uFG  hizZR)#mNO{VM{8\FKhipE .LzDׯPP_::y[mifF[[vghipE .e48&Vg yOgF5?TJѨ")ҒM]᠃]U fhHssvfq55S/lK/\E12W_7R.m}}gE .e48&VjsSyGioO?io8=4ёnܜImR*VSFŘJ54hTJ$(WlOuNwb1 !2atlL>\z@~O9@Qhip- e4R6750 #tuipPɤUݼ'O-:8УG}[;1볃JirR٬ffhyAe4Q2Z !m>P{ښn7@K-uU*vb\TѰG3~s2MN* kUDǏ^8m58\FK#XǎwJ !AIHŢ521{^iuG U*+CU~DBקp$tcZ(+<>n+5Z7ؙhml؝]oܜڍ}:7OJ)SGsAYL$b_7nm?9E EKhipE .Lm򏎴)?/khxXɤYe^}DB2-.;g]k 5U++j4T߯>;2!PHѨ^{h~ϝW,srY&&l!JE~dOɳ/ys~4-46f#FHbZ¼==ihip- e4-W*V($;D48a|^sGGG~ܽ5j*UFC.]R*x&O4;lVccS8B!ommiwwpih4Q2ZN+@KK睱P/2ؚM]yrT:lVj5;A vR)ۉ}B!&Ezhih?4QٯdU4F4Q,`F8Mfs8&n t@=s6(Dfg98anάJ%jh)M!ğUxw׏p8i8hi- g4©Jg46n (՝;zPG`wWW*LFEJGs0Ս%TSG!M}:8pt9/k; aCKhiE >N2@6uu ƬvͫY S*_'&qc1 jvorz{'729i1\Bk/<~\7Pmut(S4x\]Y_}eW?hk>]/b.4U}ff쀘̀6jbF~x-~[io‚xno4x'gqE" QOq~U|iB>eקLF\8s5F835= pHD}}{8vvvCAjj)P&w)OVVihH==Fq>_?fzvg4Q3Z*VɤT؅?:Nչl!mjj)P&i3aR)X]cTMBUB\gNg95;&YQok{^s59TJ‚J%?p_ Xye2V &U.g;+CN}O:P|ۚ#/ubep4r=tf|Qņ M/ogd$NSB Jd 5@f*`z藿QUN]tA`?da!wlիG 3LjT/a!^=:ٴ)]$b?8t( vq@ϗG#4@f* Pd }jEUދ  ЌN'Ν2k17W Pd4@rB J3>UU`Zi>rMtbި^8QE2SiT 9L)nOMM}ܬ|}uUr;}G>jT 3HN2Sij֭{ɻ}ᅬjn}6& O"7nOw<{Pd4@rB JSg}DiffՊjh 2-.ƾ}aCs{Uܹ'B Jd 5@f*MYv{ݺuO599y먪&&&矛~'@qq`Z -w)}#4@f* Pdn>n^~EU51/BH~$oVCawFGҥǾB Jd 5@f*`˟ϖ-q|t: / J|UVbw&&bnI2SiT 9LLwN'"Z>p< iq1Nm1ޞ;L2Si 3f0ClUǙ )}r~$wZw{N]ǩSzB Jd 5@f*`??_z窊[ob)`Mؿ?꺏kdwZ+B Jd 5@f*`=?1_UӴZqxA`8z4_缃Pd4@rB J3hb׮먪Ύ1;[kXCD={JB Jd 5@ZN_{֯ucjEUqFGcj*~Q2"5gi)>$d>|8?B Jd 5@B++qXFUߌr}0=ٹ3._N9>"ݎc~۷\C 5@n* J$'ܸ[FUuuvx1^Q'x un7+k!ŷH13V_V/,y.L2Si sbƨ_ҟzO?u|uFFeٳmƖ-{8N;#[$\M*_ݩ[ 5@f* J$'(e3:nۧLOn}7u ?.DӬwi6o3?^5@f* J$'횟t\ysPtm_ `Eҽ{{wOӧ411] 3Ljݽ۷G)+k0iر"uƍh:UPd4@rB ЖoN'Jhھ ҥAOx [$MNVF4M|_2SiT 9hŧFD)m3=]П]bf [$0 &'|>o 3Lj56?|MT7۾ ۍ[Vܸ5-^ڞ7;wrxL2Si`-ݾQJٶ-z;uj7ߌ~/XkH`HܽNy<|XB Jd 5x(ցرcy/-qrtm`("lK3}jjT 3HN;16ԜkbPt.?x&[$0T^N6irΙ 3Ljvl4MRsFG/UMOǶm/z嗶 0lw/=sΟp`L2Si`UMNF)g׶/`v6>`5u7lƍް_kL,`ɓ32׮E 5@f* J$'(LLl 3z5Ʒpy'__ 3LjgQJ}1XO2Six{ߢ;w}6L2Sin7R*ϦMONirF|dO=~wwoL^./x 3Lj}}Ry&NVi7 3x^/$>?@2SiT 9ݻ12Ԝ;'? 'o>@f* OGT^ζmOVjT 3HN1?۷G)զӉ^Wi7 3Xkמxƅ4q̳+4@f* PXD)7ύ4V }-J!EZMi 58B,2P)Z(5e:wRmӜ{V>g^ur2Si}utls&xNd 5v,/G)\ _Nn>@f* ЭhζΑС}>4@f* P(9qbߠLvۙ34lرO<2SiO;Mt0GpPidcpRg;郙TxN 5iС4ur2Siu+f3}0GZQhs 3HNy3&J`^z)~Ǩ4ur2Siq:ujܸ*9 J$'[z\cT:4-/`٢9Mj9 J$'ΞR:3g:Nn>@f* 0~NKs} J4@rB jLME)mi4ur2Si^,.[6o7} >4@rB pzF;W4ur2Si?Mz6վOPiT 9f~˯Rid=u+z w} &4@rB h( qrLzvty'~Ss 3HN>(&Ji5ӱ4ur2Si$>&e۷>LjrssQJۙWwT:4@nҎ`KK} `yNd 5PR`++*M|T 0^{v,,}09 J$'@R˻*M|T  :m_}0 9 J$'@֢3?Lx1 wt6pqL"iT 94lj}w׿SJ$tR m܇ԩ0q<2SiQJ~Tid9[T[|,4@rB Tha!Ji5A\>OUidi qX4M۝w9} `RxNd 5P Ji5'OkU:4@r[[cuLiT 9rB4Mj틍1}JS'7 3Hn3>{;^{t&Οl{4@f* Ph(lYJ$w?O?R;X{='O}<=s 3HNJܾSSQJۙg4ur2Sigf\ }`LjD)mgvvܟL oi`9}`oLj}t0?4/Widm R4vqNG؃<2Six QJY\U:4@rǯO:33qfߧk<2SilQJ9}WidUލ˵wgqJg{<2Silg{~Nn>@f* ܣC4[635׮rP=s 3HN vJLME)ĉ>L{lisgؓ<2SiTw+D)Դ+y<2;=O1F2} F?l;33333z/c쳾US^SƟV-xI~alݿ[`fffff668F8U;^66ctZ_ޕ+Wb+m6z̖ߛo1rY_jk1ryW}wتfS;綶~W}s4G[LNyd9ܺCF+y<2;G#ӼSYo}42;G#뭏Fy'&߹p,:W.~=5f4oxd7si^YxOGy#뭏Fy#o~_ڵLoWi4oxd4oxd4oxdz룑iޜ{1~1>^YxOGy#뭏Fy#<ϟѣ<|ȇy(fo/ɓ1|7<2Yo}42Yo}4hd7 > > >Yo}425G|7<2Yo}42Yo}4hd7 > > >Yo}425G|7<2Yo}42Yo}4hd7 > > >Yo}425G|7<2Yo}42Yo}4hd7 > > >Yo}425G|7<2Yo}42Yo}4hd7 > > >Yo}425G|7<2Yo}42Yo}4hd7\^Ւ>\^r>j_^rzzWK^/YjzWK^/Yjɵ%}^-{dϫ%}^-{Z/|.{Z>\^Ւ>\^ՒkKZrzzWKZrzɵ^]~zɵ%}^-{dϫ%}^-{dϫ%zyZ>yZkQZkKZrzzWKZrzzWK^/Yjɵ%}^-Yjɵ%zv%zyZ>yZ>\^ՒkKZՒkKGkK^/Yjɵ%}^-Yjɵ%}^-{dϫ%zydϫ%z\녏z\^ՒkKZՒkKZrzzWK^/YjzWK^/ ˯^/{dϫ%zydϫ%zyZ>\^Ւ>\^r>jǏ9 Z>\=u%}^-{dyZ>\=u%}^-{c}ׯZrzzWKZ>\^ZrzzWKZ>\^rmxG~n?,|kԒkKZrx^zzWK^,(%zyZZ>\Xrpx|`f `f \>d{3d{3M.X=X=Ã&,,Al`l`K0cxK0cx%1<%1d{3d{3M.X=X=Ã&,,Al`l`K0cxK0cx%1<%1d{3d{3M.X=X=Ã&,,Al`l`K0cxK0cx%1<%1d{3d{3M.X=X=Ã&,,Al`l`K0cxK0cx%1<%1d{3d{3M.X=X=Ã&,,Al`l?ֱilQ EѢ\{lJ WpZ w@1O.8x^9͒=sk;Yǣv>w?___{;Ys}>~p$5zo<#I9pFg${;q轝$5zo!.RsF8WJRv3轝|JIjxFs\)I9HRv+%{;Ij΁C\>p$5zo<#I9pFg${;q轝$5zo!.RsF8WJRv3轝|JIjxFs\)I9HRv+%{;Ij΁C\>p$5zo<#I9pFg${;q轝$5zo!.RsF8WJRv3轝|JIjxFs\)I9HRv+%{;Ij΁C\>p$5zo<#I9pFg${;q轝$5zo!.RsF8WJRv3轝|JIjxFs\)I9?vԖ`Py t@ PNM0Wey挈hg΁x>"};hg΁x>"};hg΁?y;V{9oj9HU13vU5h3vU5h3v|9SU{̼pRU3vu[b endstream endobj 16 0 obj <>/Filter/FlateDecode/Height 3148/Intent/RelativeColorimetric/Length 241733/Name/X/SMask 22 0 R/Subtype/Image/Type/XObject/Width 3148>>stream H ٭;TYKI~l9M.`2i46&[K~u]$MXaI)vem6;kjrV/]~XS;9Q )Lx0:|3LMR)Llڟ]{tWcE}|6}}W3wƟ*o/ 802::BܗL& )[Tpon/翿u|s=2T\ec0؈pxH/LWםa_\^qi6+òObVDԥW>)}{j=rb=zgXg3 իر$U]=+[>ג+6#CKfsvc9.npwӒ+~ws˱؋ffB{{3,gxB:dC 7oƞYh*rKfdvna5ljnnZr~,WbW+Oo l'B:d9w.l赅TbF]*mybs.-ˍl 'wΆސ$N&Jӳa,r-bye-v b-~`_xũjM::6}…أ_|>f~===ݱ>2;ں$akgCmٿr?8 ־Evӧ'vgߋ=>===ݱN:y؃`^[ʕ+|CC#W͖$Ԓ3{<ژ;A/[cco,'IK.{7~n\9ͨsxO|/vi饚-gY[['98{&IB9v'>ﹳNnrDrTvl$ُ^8;:NuDWY:v;EmmmOsq4C΋av[m{Z[C-L(b~#G 󋫱QgkG1X?^+Lޚ-0ry[z<8GYu/r\DiY1sQVXi%*;S̡4H9DXP1.c}qtY{zb$- үr5،F26o2ua)x OIχz2ԙ]gy8ya a\mYP}~@- f4R&y."\kݹKz޸Τl5#֭f4wHIn˂"hiE 6Lld2zdDz*,R +o˧K Q`3Z tIg2Z)cq%=]Lyr2{ W,Kχ f=׋?Ʊ!ʎA(=` |rn9۸`u۲,:Z,GQhi$/" qRRÇC&So6o|;t~,=(R^950u&m-Oݢǡ7{ G߻'= 45u[T_AK(j-dbWAukVpm׮IkS)7rwғA@XѿةZ/W= SȢr5،F2>qB+W:;'gFi/|S9դLK=-{>7? WS[/xcq{@sHr5،F2|TZ z|\Õ86fA4@V,PXi$/9"̖-r ߕג WKB$ѭbk4m7HUx] {+iq9 1`3V˯'uE#l*ʗRȁjt!tWѫϲZ^x=W~0C=2hJ >a`9lJ#xʛ?~,/&w {=;Z9ar 5،F2&?"L_͙|zx~Y2]m+헂})q^+VZtE͚bQm {CAi@ XiC 6cLLL֭T9zT*UфJP;E9xutt6tZNi٬_/=23j]=7Þ+SSlqs!4XH&^=AQ*¸:e'_Y_XLB3߼lj MXZ={ޓrmkq`41`3V}y=q]Q*¤25e*4[:>3/BlW:M'5| ?e~K>ps~ۚ@<oJj+dJ˿|YiQ*¸|h΅唗q<_K]5]J({>z{1?t0ya 3~N`r 5،F2%_$JEו?BtO4md%_ǺI ߮*-P?<| &,9br 5،F2%ߺ%+JE>3]1[<єsJP3 q`J^4ЂuHoo;[ 648+ cf4)/=IErT*KbvגԐ8 V˧٢- ‚ll[bu۟>z90XLw6ԓnΞ)#1a9 _4XH{[$\h!Zy|-|T6bJ]Jide`,]^3]ޮ>{6yLt ><?`r 5،F2%߸!+JEAYX0-z|-? n]BuhN׷n6|=7vaĉ֏7gmQ'ki`=lJ#gfdNQ*hUZr6x~atĐ+eehNT/ob`(f@[Bć4$+ cf4)/aA"K"#חԐ?rwtSGԓ]g2?ftKX_ȡ}I[EGGX4XHxqq]Q* ̌Y|'\~}*3=j bSV\xTQ4~=ͭNrN@2`9lJ#eQ*BsYdBR`⬳VoBV rJL~۷~NuN@Ұ`9lJ#b>QJv;wL׃&*9&&K5=sAM~?U q5Hי͙צ[O D >:Dar 5،F2双HW(97+lL@tJO|NOqҧ3^/VM=C].ˎ_R(1ѡ4$+ cf4)N/g>7]e8wؘ;K*VL5!1!X!1asPi)aH], {g:ҙ霝MEuιs{N'9'OKo=U 7:|ݖoU juV^UccF;Xs|@Kp5HFKOx : RqlNDqSv| C}d8 hihi)/oZTfz=3:!l{8X7Q\:|~q8X1Yγ'u)xbQ'#6 䤭pyy: hihi)/#kCT*ק]m͖2\ dn:і5ե7Ǫka ă7@-wߵpʶǏ9 9CKp5HFKOY|: RiMgf\D \Ql2;NϹd;7[...c2T[ v:om#d_iZ@2Z~/tV*ݹtuN Mw+ 9lJh#\E=:j-Ϳ2/4- Q - ?eOL0J8r)Yņ3S9 ouƢbv7]i.>-m9> hihi)+/|\V*i#s" Ad4\瀧rx=;5)\JEgqק@V@8$LRIV*iHQl2(?pDK(-4T l8U[n\CW_^7+<9 hihiIcT*ק?Pˮ"M'(6?:&my8|lxwˮțTM/ރ~d?4d- Q - ? CCZ)S,lTk80'fuxMxK޶CSOMvv-7W\gumݏ,̡@8$'/^ׇkO}uqu6JO*Aw=׋C#{Ǯ. Oz:+ MQJ嗍]R4s䣥@8$'i/Z)˳ssu6о j?N\ibԝgP\uJYճNaIIz_BqNd4GQd4$߸P+esvׯ^I(z6W͖D[#uݯv)DW}Y/zt0>v,կ8@2Z@2Z~ggu6[u0( r QpGA䴴wʍ#GSҪE$zÆ[xs$@8$'!/5Z);CtJQbuˍ־5_˼56S:+lqQɝ|jpNd4GQd4$=P+egm?$KVV Qt;.ͤM_s!kuP㢞7ۧr7 - Q - ?90Jٙmz] 󜷴X÷}_?U7[E|hhihi˟Jٜz) ?.4]'}٥BTz8Urz_qfg - Q - ?9|0JٙO}y/?mʪ qo nM s:ٰ 4茖Q3ZI˿sGF` xRYD'SG/ߎJ{:RSwE]?\GF9,9 :@s5茖FkON ,Or9v:1˖o>ْ'c34_T((,~t64茖Q3Z)?1!LSF0h W(,[")ճo}"azaAG<泻9[Ѕ¢.֟|4茖Q3Z)ʗ(LSF0t)aHTFT rvv&fE}萯~z)i- @g4ZS/a4T\,[.K9Wp+^@*'OnϞUK~Q3Z)ԗ0 _1M1:Phfb-OOB|q&=Wҋ]ќ2أ+OeZ+UCzyji_@s5茖Fk bna1M16Dh* 1˖O"ZpJR$n9U/PXx\ܑzLd};sK3c𽽛p~w3k%?~̺굚nE}䈯 @tki9tFK5f298h*JmlHWTox}LDFUh='ڻE_dQ hiPE *NA^˾a([ӥC Ōii!8ŕ֚_,TG&}Y3w+C mɕe`о!|ʊOf4(H'ᗟz\ԽbC3P~ EO:f+ǍoynBϸ}헪wX#~5i7 ]bZ4(H'Akhto8$B1cZц-k>>I\J#VVbђ=r{A4B:[_edĢ=7 eEK@j8TFK#^oJ/=KK@:8TFK#^a'Ovs0$KŌi|]Ob'WqkL;W?mty5ʰ3J\\zy9ĥ hiPE *N/|u=P>ۓ!  [S$B~Svd(L!{\~u/,fZƸgmOwoϾ+,'Ǯ-߿XrqVj)js׿ιoOߘND}~1*ŷ {\ZRQ2Z$@nPȘXj$˚i Ƴg͕ǍT޺ssM1ͩ9˥٥[iEk':MMvͧaÁv3@bB4(HN_[.# Ihie}is O.WɋUYGL{qZo[?_4bGUYȕȍ򕟫VjH?}mϳn_~UT޼VQ~PĨgf˞:@q5F:uϞu]}iauh%@~B-FN8O uٟUԹyJN_h6,^- iCK(jP-t˟u]0߽LH뿭eLK i=/5d I,<[ϹVYz7uqϔ Mv){5PB$3mt: qLR6&\2SgjW^iu4&9$sUX}cgH,'\: wAsSO.g]XOƍsž[dH(j3ZѴȑf΄07j4] ~JWZ"Wg⚮L2g_Sj_2Jql:5vϱT\zws+c ٜ^{-׾ɞ{MA,1ždĖ蠥(j3ZѴ뮪"hXJLt+[}|O*y)Ot]U;G͎is*ul:u{pα L:/[G/k=Fm~!>b֮샿ٵ鞧[+W?3O6"Z;O '~@]‚`c4E ~FK#6OtE<x& и)@S\3[z kl⚾̚]7%TgqS4*?}~(5"hiaل{i1[%Dp -eܖ((j3ZڗJ"]iXrՍkzL(3y$"le~mkgsqxÌ}sq9;wǭaC\93v $[d7j~MobN3#ch>+{ nQ={6 - Q@KQg4/\EHGB]~i@6rUc?˅X z?9e ;N"Tlhޑ=]ss{O^'- GKQg4i⪪(ٶu)c!S1MHǔ%@㱟DPꞝŚi TY ov1/{;:d^'- FKQg4i*x>HLr9#Y>>x'5k}H[ikh>ke+9̖Rw^eKr {u"Qo۲u hi9F4otT71MKT}|Ol)U9h"y![?=t,b#\uvZ^름RAA/jvUU|O$d zK@s5-hZ۶k(8\uw^L4] `?Z1~8+F3o-jR=)h>|Eր!(N񝿵U`]!hi1Z|?Mkӧ]EϞI tv6t|ge jqnh&з_08 ke+]Ӗח~h3e`m!hi1Z|?M|GUݫW厅A6biJ>>ײ]zw%8v"{ 0.}mh(^ ٧ hi9F4]UuE<##BrKBiY˞ ~WN\b!\!ޡB6Td3{fnkeP(j3Z?qUtw tr*bܣU^a?LsJ6Cfn/SviЗRM~P'OkMK@(s5-hz;'=V͑ KO\:46ܼk櫲"{L^'k4g0uWO/Ӕ}zx04- >GQ҈^䤫(=WR1MNGOZr淅?Φ%S'o'[쯎zޓ׾5a0Ǯ }zx04- >GQ҈^ӮFUgdσm!)TdxW,Wgs/$UsFۈ۫p>jzZ;O >dE}oe^%d- !CKQg4酗s(= rqStdxqvƇ3sOSrUDs;?Żj1[%~HʊKB24E ~FK#~Ϝ˩S'Aq%a4]8;,{['l:R::iR3M~6uqZĪEq$&T`%-4VJ֩E@p*x㹍3ώdZV޿e7bwK'hh-w5*~̋t0@s5茖_. KdjJ*kN7UT= '|H8U:Yؑ̿r4aN~`nI:QxL\ZUs2s5|E],ʼQ}z4 - @g4̴vz!|UܭDeÙJzOB=GZ+f~5;r}z,tB%ϴ~'I$_ ,e5I([BQ3ZfZO?DvV=G]9lDlg.[U= !'褥J}2=]|dw_tL.3U6e,D~?[l8ѿʍW=B׆&LyA2Eg̻GU eK@h9tFKL͛—%*d޲3tzsOn2<<(D 䄡,?|4_zP4- @g4Լ<3+/XTπ.LѲUգ~Y7ϴEܟ#ʭ/E].=ټ?tʖР@s5茖')/!K|eɲֳ#W= Q',v$ eųxC[o'- @K(j- 35ne]—ܜ=g,gNĝk:ZF(~ыn+ kQ/,Q3@x[Q3Zfz KdnէN]"qDzo\~}o7b}\(K)Ewa-/- !@K(j- 3 }!/tZ顷kN dz @GcăY0og-˝'E],J>ֲu/- !@K(j- 3 K߯TgN 3s5O~X.Mc-o,K&EkKa}ffTlniv4h0Ӌ/B9tHѡ%Z?s[HeOޮZ9O.;wZZM nGK(j- eu!|OTjɴ=Y0l'z8@%xז_{ Uz''e 3tI dHK@@s5茖Qc1_$O+.&RoO-n:{v$cN[Jzh@ 'X t-Iκ9E=>.|hϯT<4t#Z4GQhiehB2o>=:hX}d!b;V28us`?ǕH.'g-?sF#a0Q- ]Q3ZCOFoW=Ø]hiE :a}!$H>=کRO†Dz;c\?6vU\(_5.BK(j- s !rYrX*;^TOi7\VEF>@Lb`K@@s5茖9l~FqaP^WQ$r՛JV51 '!B"UZ\*Bk3KimC"U! U;Sj3ߏ;KG)/T9aG,~o.3_P'Ad|sv ngQAx\F8[6 Z GQhiGkVboGngE,[*#S%;~ih·wȭp͛˛b%/J@h`p5FH8VK*,T}X`F0 ;x/=>++ж4l 4 TiiѮ+=:|2_Z:q%5{&U ``?^+E>m2 SY0^^+Iani0- d4B)T~H^3&%=e h&[:3;f sQ_e7ߔ@8|4^TbS+WW;f#-5p֭|֭zL@}V<)=7F,[0Ε*}f+tcyꖟ4Ek^+@бNhi0E ItWVSSSyQ#rXBȿQˎ_o^P?,D>=yh:XN<.==c`825ڴRkd6=>.=+UXBujQK2`S xE@]}.c:o2鯿@Nhi0E tgVj]٬t:wo/_vZRυK ͖>0;0^/-I_("NLZid\X^vҋ\`2Z GQ9JՐdRzb]:njjRgJ5}+io<]p_?ߨeG򅅪5+s~F7i޹Wƽi0- 岎ǵR5d6Iύ@K&[Ǟ鳿;oqnܜ#LV8^nU 8,HAgBQ/{I& Xd4CijΥKs#tSSӖzz7<|yyN"4'9볼S\ xE@cd+{/Rir^32"}A: &p5[+UsNAN;}{#}5[y7bٍ̮!d).I^0O}ٚhkXQ3i0- VKG6fl|iiۻNIJsefJ%^H/}Yv 9-Oɤ|1 4Q`^HlL:씞NIJ&'BW$4[9_fOhż8VE߾-}: &p5+u< 遍q]Qgi=߽RlN{j>3_>4v"f֭Ky4ګx`>a`8čiU/.JOl}HOd+!'bSfx>7_Z>1;xE@㝛.Y_.JGx`r9 i0- @ /hF0˺kXw }QXvM=rqHᗥ?+pXl/%>``8dMLh<&뺭mo~vHϊ]G,ΙL֕>+ RfE+jf*ҧi3gt,y93 i0- @K/id^dtg磾^.=%:x!oN良CAnUa9HΝ--zq)3i0- @P.~D}qe]d?.>tf2mu[6;V_, BYSU]jlzǗ~y<y|D^N$ayG@)_W0(}SK6  N^^MO?Y`- Q護HVV_dȑxW~t Giul), KK'),r1-{5'<ᆱ}ǜhi0EG:$>1Zx1fȕ}@Kk덟N.cϞ+n;ڧxa'<7hsi(jP48D-Yb7؍([0:q\54Z[XO?Ҏ\ZѾ÷5wI\i12Z@/;{cYbJbF-qɿWnavHl~gim12Z@i:jĈ[F ly 7HSv/_h[p ;y%-4XFKq5(w"Mg`@@'\d-gx'k ZL_ZmNhU>؉J}Ĝhi0E838n cuQ%6asz7- ּS#ڧxDgdD9 `E H~71C~Q zaAM,AKAoVoީ%;s"U!4XFKq5hyȉ$I>t c]Ս0 ZO˱YZ|XNԴZuI!4XFKq5ht"It c]V¨U\7h%Z}~)x-^|щ$O.>Ծ@aNe4GQA't:;]k?DQ؞59ziY GKYVַpoiON'<{8>@[aNe4GQs"Mg~wc(Y ¨%ekd.^K:+κ\Ή$+h02Z@Kwi:>R5$_(}NPѾ@Vhi0Sn\^>«9'*7hi(jPD$~:=#0J ڧ- m>娻mEN$yr97hi(jPN$Id}bJ99uRڧ- }Y?8F]s}oǏ;>@`Ne4GQÇHrqt {N\-a&]Դ- }Yw~ǻiމkeSV]wIgo`- Q!'t~7ijO 3r}Ohi0Ei6^GX}WD'si<4XFKq5s"Mg`@݀~Hzc9ٻűlcNe4GQN'tǵ x>)A% ZC^`WO>{f]]B HLNj64XFKq5DdaAY (q&nV/- =Q"騴}?Qr9'<3Ɯhi0ffH6Xo:(HgJ}hi0ERɷoַꛛs"U3XŜhi0s"MgβO'~,c wh@- }?ޑbmfr>̣H i*4XFKq57Ii(j߉4}p^)a&uq%@rAb,*$JCRHD)dLk7`C"5V6?`ÿX{w'+2gfy~7#AKrV _;g4L>oD}@4hFKr5w8>sA%I.]i4(cE}j5l܆0"+os4@97"pIW]O-}ohiPNJzus;̅;p$(ÜhiPy#;'OpITjۻG L}%wQ˕Se_` #bS|@4hFKr58hDbwFvOgJ5$Ʌj|@Gj#l v2-_׹75eDK}M- QXٳ-`tIʍDA(c6|3Z{tQH8drF>ss s4@9{U#;==iidK0$~@[ԧp|LАhœhiPHܧ.ŕjF4[o- =NQh-2l0ZZ:s F2ժhiPH<4} ͖rFvy|iusT@,\ ..]2"zj0@3ZbшΝWiid>j3#D/- =~QڊD˨. ^~وXffhiPH<-`t 5- =~QכCWWb;㏍}}- QX`Db'vI\E~}c}MhiP.VQWnKvCKeE߯s4@9\ZZ2"ۻJK#S';7E~2V5Z@Z[ԟݯmNraU.%ƌ}>|cNf4(GQK33F$vvKK#S'{~Eԡ@9>UT7)RBXf^SWiЌ(jpH<-Lakۭ ,\To|?:4(gQԵFkزhpwqæV}- QF$v}42}t%# L}F4(gW7noڍNN~գTYZ2i6}4hFKr5tgFOR *6|?F4(g]/vc;f{7sIg}4hFKr5t;/I~^ .[۾@#Z.sӱ7w6ժIQg9 E .MNyӴ42}_]_ "/}R4(~l9tҝz5#4 1@3ZH<;42}#3 ,rka(EKrInجN>WQ EHpKŜhiPzˈOFORwQ+5[@+ZKXԣX\EjMO}- QoٵkFOR 7~8hiP.yQ8a!;yfd_I}!4hFKr548hDb'MK#S')=Q|\pz\Pߐ?FGhy#(/`Uߗp9 E .F$vrohid $-K &F͖PR)Z,7FGivH; 0@3ZA#;ApFO2A;PR)O-)NWRIq#4ccs4@9\zu#;vIZy%9pT@8]߱_qTg\oV1nbL8%en6 ͂ID-%BhBػ_I};3g漣~&zZzL7l:|~gD)gHs4@9TJuZ>qeJF\j>j4(窨~q1͙[ nDLRƜhiP,jF:UZ>qh7_}@5ZsUԝ=3tn%ޤBragLMDT|?@ʘ- QZ͈X4-Ba80Oj4(簨`#ޤ.vhF$Q.^ ibNf4(GQ@*#bRNKP'Ne-# 7o- 9,խΠVV -?̔F$~ 5iЌ(jɓF:7hi ĉWAG+- ʹ-ꗖZ1Ve79yVIc|@j- Q#bhi ĉ#ZAw- ʹ-/Obʃr9qˆ$7Hs4@94;kDFO_ladK-߇Ў+`p#nFFH~t0@3Z KNTQ('6}8hiPyQ?˿|~݈Hs4@9TVii ĉ_]nadWp\E=^my0Ϟ_urI9bDO}?@ - QZ͈X4-Ba81qmhGKri'OYo嫵crS.9~9 E YTuJ:-Ba81~mw>v4(RQ/~c^Wڮɑ%#?p9 E YzU#b4 }Hm5#yp\zElX{b ?/~- QGu(?:_;- ʥWԝ=3Ԏ12rxO^t:fl̈ϵk4hFKr5dibˆXgp Z>Ip7Yv\E3=ojGW6ܞ ˦\6"׾4hFKr5dQ#b GKP' (F| hiP.}8SokOʅ#?4hFKr5d #b4 }ܿoadW} hiP.cmvsfW)wI;w| iЌ(jRbDS*ii $Aftp9@Krug [18Yx+Ô3"31@3Z KNooFOadm>@\6Ehg~pv3||mjIIgH9 E YՌuNhTSf$4 6?{p9W$(YQbln^Pee#(f:/s4@9TJuZ^4C^MOOr l3}8+ˬ7>c9ijʈ$M`Nf4(GQ@N4"AKËCri|m~~p9W$(eQnoŘݜp#"34dDY/s4@943cD30- /FOO!} 4 6/^l>@ eYԛ{O[n~rn]be#4InkAflp9@KnVYqLͩdߛ*j$C1- Ka[6E,#,tVۻZbcsz^׃O>`\sa*\;Wfi+8v3> `- QFO7p%o?U>Cu*5F;V];r3xbNe4GQ@H'O:iQ'մ8υ5go̅9ՔQN$^] <12Z s"yK4J}Ҿ,Jɚڧ0㴊|t%:֎!'?>`- QROߤQ*-,5$͑Lv`bQw[+r"͚!'?>`- QRoNrFO !G'$ͭEXGKqE}o5\ yoDrfveni(jۉxR(I!7o/h:ZS,bsc2c!o6bq;9~\֍9 `E !DqFO ;2%o>8ݢ9[ϱB[q wm)LMN'3cc>i(jix؉xg4J}Rz{qZp`nQc{Y3ə>s,8BVH4yG4ʃ}RW?GI=秴`- Ʃ 9蚼{e6>؉ؘzK~- QN;>FyO }n2JRtk:ZPԃW9 |P9^ܜc'3/`BKq5ccKK<'GI_}8hi0HQt9&u^s"s?FZp_4GQ@`N;O>yFyO T XGKqF:kX e'VN$gԔ #- /Z }w6lNK<'?:%o6&eFKqv˩ʀ"]WWW|!'?v7x0;- >Z Cw-`(Is?o`- ƙ*9GikfH805hi0._v"ީTCK<'/,GI#oqFv`/vj\.@}űɟC4- QX:l4MK<'E%ov}2}8hi0ZQgMu(.]ͦ;Bu"m17k- hEKq5Dae$ gڇ0 g]ښӆ#BwqD3|8v"ٿ@ 쓢ܘ7[jڇ0lo-䘦3_-k?";H[cw3|͖8۽ۉx嗿>}R,Jɚڧ0k|t%5_ؘc'Vzz̶4`E 9lV>}R(I}s}8hi0rQO39J:ә_N\ -,4(jωx禵ag&$ڇ,utϟ1PW̤ BV];m2`E 9l:}8@;NFI꛽`- /t6 xռuiZ8v"mAg8{M'-[faQkڇͱQWsּ Br"m%ݻ - eFKq5wNW׼@ 74kj*Z_ Kͮ3u%ڗ_k?"#GH[~ooi(3Z jՉx'Y}:@#7$͑;%ہ_ǭq\W?\i1ȋ"QcJhbpDŽ44fv-W$rmW\ii!n*EvcCDDTԝ]jY*czgΝA˹p- KEQ_LO_)[ii/w1"O7wܢq5(H|@"ON="g綴g(Zn]+s+-=nW_5"2a{hi-ZGQQ#9/k $;[ j_Yhip\ZzřzJJK{D}>P{ O48G9}Z{n '5۪QsEKRpťzzJg_7WIW_~#b~@ hipE *^{͈Dαcs>ׯnx~5`=;iq>**}^ȷ4- @F$rFF}]hx~`\DKRTԍVds>6z#bjU{ RC48F$r ڣ>ZE~v=;tݱ@z7k;$m#b3gr,]- yCK(jPq@OU, 8ǥ+\6ze#b! yq5h)H?=7?+_&ʿBKRWS_4,Շ͎6Y]5F2ni/UZrQex؈DΉs>նvyizM{|nqi,_i^?涴WIԹsF2)4 JcK@~8֞I5wvRho!48.Ek꽌G҆M0@. 'hipE ZN2"30` сqԚvwǥ-Y+}ۈXfvV{z 48-|bDl2?=:38~ut=>Tjẗ?k/1#bQ̣q5h2F$reсqmlw7 Z^\mDv˯De_מȟ4d- @ȈCb}Fm-+hip\zqW]29^"Q/hDl26=:?hi0ZGQI#9fyY{t N'196]~riM{|q(>۴]3{k[{\jD,==3hi*ZGQ7MƴG}No)|Ahip\6~cupm{$4ŢkOL6ZQ4~SkOĆ$>Wlz~`p- LQY߮DrΜ1"6)LjOIfZ2QktԈEсx7/8h&&L=_Vr69  RQO-4{yl#!oa[A+P+kQ.vs6'ګdheņ䑵3Ǐkxז?8\p5FBA{t`w_|s{WU(ɒy\SWv/i+W$ C[j8\p5Fyсݙ|s{!H_H+wQJY|n/|GFGmJZ۹pA{_~4;ZGQ ZcZڣ(GFr5bYfk+wQ+@vk{dkjJj-姥8QAkSϮkO < ǎ=g?=G+Q,_7gxESIuòݙ[5U2Ojb<[iihG48ܽk1?,/k <#o歷GJł/i`媨˵'DIvnsjO>՞NZ- 5}ek wrSXD{|{W$8.oEIl3-k4gWBK(jpPnmo5[ٿNN~O]#IŁ(ÿh`O尨Go<;S=#C'N]9==4ZGQu{sϝz>=$3V1 irŲ_ gQLf&nnh/Yᳫ0G.hipE .==֘38=_U Xk;'|դCz6LY{ 6 %Ϯf&&<ϖvAK(jp-8uri=_\Q,˗Mp\nm'gID^{MjfhH{z#mih 48ȉYk$ڣeAD,?=>=}mQov f>H{ űmh/"- mQ2Z9Q.0ƴѽsZ%bYn$ '<rM|6߯ko><)|8\FK#?1-NIŲNtK{>弨?]?mqٳڣyKhipE .gXcZ΁sRŲ=>q(O|)=hٺsdž58=: Z\FK(jp-X\ƴ0q=wV X*}kvP?[W#++ڣ^e48ȏ8HrIҭD,3e dGQ7%A1 ?CץKڣ^e48ȕ1-Aڣ{g`z-bqV@Oqu荇53Tڮ.㫧G{t 4Q2ZIn;itōp(ꦥd77_ojo7>nh4Q2Z22bQ}40]XCWJ 8nJl8Qݓ_իW@e48ȕ9k0{\9<jK 86دߨ+T"VD@`Ei (UykP =ƈ%$QUD/Zrb2<8s4Ne ^k3ߏHw秵kic_$ VԔ^>=s4XFKq5XFKC]T~Uޡ0Ia/UD~8͜ {'`E}_wMCAktT@`- Q`- ]RU%`6mXD-4sR@O8fӟn8VcEl&yyug9GKe4GQe4t9rrE{Q%_{DxT@O8A?S-6۝=5+ׅ/ڧhi0hi*J}}}O5kjyۧ j|Dqq@O8Al{`$6۝mF;GyGZO- `E PW*_Ev]roW;~t54SIs GQd#6۝_&92v՝}RZ,8,уffs`lsszA?i0~iمݶv,j79uJ;[4XFKq5XFK7m;e jt-bNJva?(Gzfγ5{-ᳫ;>IDKe4GQe4zӻw΋QEtkDqtsN;lq#un-WyYyS 2Z2Z{۟3l_Q,k dF;jĄٵ- `E Mx֮v‰gQkwC GQ/fz {۷_^wk!Z,8,ћn/v΋7c4(J@j'`EfDUDq%jՇUihi0hisw΋' }'AgHw//7dAktT@`- Q`-޴p~Guym$u(ϱRa?(':e"f_>^iwd-IٵqoBKe4GQe4z _9vz\=bGՖvr'`E*}:%v]}z Whi(jFoya8֭a ųdE;90^V|=s cIׯ>v>=+4XFKq5XFK7=xs^AKe4GQe4z7CC9:vׂ(N3q5[5mvMN \7jZ,8,ћy}z$you3S<(v~QxM⓺iuс2Z2Zq7h;'Wٙˍ Sί2luX*0^W 5gotT>:4XFKq5XFK7=揍yh Sκ?T-(e/CɛW- `E M33> sY?JhwK*AxjC; 'c?(DM6[go6ﴏ- `E M={s#@7Uo AO6x0^Joso;- `E M7}z$co2I$Qmi0䛦l}=w}U*gW- `E 8gAm(V%B -E(h.?BbZ#T[ER-!Ϯw׻뉽%iDy;sGӋ_5FXo{(GT$-^}˾G"'A-+uߍwD|wz4hFJr5hFJ#L/}I:i/Δ$-^hOb?jS7lwq:) A K_ܜ5FXj $-^=Im-= c?j`q9m߭wg 7:) A K_~پ>kFG?PX>^x ~R= c?jZźذq,==) A V^Sa=|h5HAYZ= `?j!\\K߬|ƒkvwn4hFJr5hFJ#L[yYc ݬ'Iӥڦi (GP>W-.V|Ғ:) A _А5FX (Dwi}+Y{#ņ?\[qlM߭) )0m9cݶZL!zPm\)J҂56_۾'A-6v&Zo6|ܜzr)4hFJr5hFJ#L[|Yf#nk(I ։uߣx#Ln߽rYxsu@1R4#@94#Ç1:{k3mf#J҂uFb?j-W\X~G fwV4hFJr5hFJ#L[8ɷ_ݵ6zԍ9|#"[VwN^[/nЊHiPHi^5F^6ϻ3Vv+GIZN.mߓc?"[iH󷛾w["@3R#@3Raz_8kz;cJ+J56_ZmAc?z_mt6,\##["@3R#@3Raz՗5Pݺ`(Iכ3rs4@O@9sMY{ЊHiPHiU_~8ȫϖ],tK4hFJr5hFJ#LN^~j1s;^F<]If{ `;c?j>^lWW}7޽jpw߀>4hFJr5hFJ#L^;#mTIXضO@9ڭKU:zrw JN}) ~Fq]a3ǼZl qm%F JPBh3maWE D[H05@G^=;WK9|?:oGzѹF9 1\qwеeCTڹ{hi(jF9 <}}޹9{VXhV$0Mִ ;q"=ڹ{hi(jF9W|{eca>j"o$`->qJ:` ?Z.,IBS￯hi0hi͟q 7>؞_i5JR>nh #O8ZܾJ lmjtNc܀=4XFKq5XFK'NxghH$7(I+Ifg0wx}iC;Աcڹ{hi(jF9qM܎fnN$,JR >뱟qL.l.ia!50hi0hiSA7i\ <ʂmf-JRݍMΟN׵KJӐgԁڹ{hi(jF9t [`{%R}Yoi حO8Z;;gxU;, |FvtZ,8,QN)\tw,mJӕTnc]X~Q~r3^.,Uj2Z2ZTC\?/7v}9JRɀ݇}ՀUXU;ސ7ҒvnZ,8,QNFww{'‚l"kyuG'B$D֦ɀ݄5R X5؞yT#܀14XFKq5XFK:psEB[eQι c GQD-`Ϝ~C;3gB^O׮i2Z2Zԁ⅏c\"r-ӏ׻4 ]>kquUX2f% CKe4GQe4ʩ37ϼssak/[=c(I7v0. vpI!O܀14XFKq5XFK:sM O>)(u4JJc?("QX/O~].;tvnZ,8,QNwzv433ťC[VZ֢$wz_McquNw%` GQZX &kͅ XBKe4GQe4I_;> V#JR:i ~QjuJy0hi0hiS܎fjy|GQ l},@ GQ^5%4XFKq5XFKo~>\ıNF^~Fq]P5R{Mcq젤NEb9ARE՚u !1AD*!id*5k"E;3{v?ݷ:Guo+W ]! (GW8o>jI;\J7oJ A@3* jЌJ#d[cϞ=8w B/[ kJ~m/\uS12Js54hF@9B Qid5&OUI\1mCz-@x#~p]ݑHz𴌎<{Ozn@ * QiPPfT/j1g[v~pl̢ RMz-@PP'k_5ba"=xZ]H*=7ͨ4(G@3* Yrgq'&1ξ}"c\h/:3_פw: (G.ǑOKAѳ_ͨ4(G@3* YۤyݫU֘XQٱ޳U/:ѥo;# ǿWgOhN54hF@9B Qi*===DK[֘X;Rc_yAa[ kJ/tPP'hc+Dz8*Ԡ5hF!\.ONNY0ou nKmM\(׽ Lo #I5rRMz ^]zn@ * QiPPfT٤?5&9|XplIOnԤ:AONs7ZsMz <PJfT#F6Ϟou]]95k SUi/Dv3RcMzML<|v풞PJfT#F6uŗ_B~y5_mzAUHLWTP;3#^.;5hFMJ~nܐ[3u 8?\YiK$[* Emr储R[^|ՓK (C@3* jЌJ#?v~ؚ\Z09p@2Mͣv#;Ppy H (C@3* jЌJ#osؚ}Xasv]z ]Ti&BfƪoxEzy%'Ȉ܀2T4ͨ4[cO>ok55bϯoJ] "nfxVg1';H (C@3* jЌJ#?y5زa_wrRZ6ͦBV(Ⱦ-;ƶ6vWXZٺh!M}IlIfsֲ 9w|?<^8\sk#J~=9^܀2T4ͨ4T?1mе7֣$3ƳB`nɪ!ܜe4hF@9B Qi9xPzl=J<3P>)ਈ^;6gh屳(}n@* QiPPfTa*5}Ν^]k:/|T4|uU4PjƆu)k;={\^:++5hFݽ8{ZMztm(Ifҫ=+h 'Wmʎw?_>~;t PiЌJr4Sq>Ƹ;H/^^4*@o[iާr|?M 'M95hFƸKͯ4KI?jKzŭ4Pw7ͨ4(G@3*0Ͽ|>qlw@׆%i^^A+ ! ݨ[\WkYKЇJfT#F5}^}Uztm*%Y绵UJu7~9 Z[zuy>,}n@* QiPPfTa*`>'NHMڈ4}& ЭWGw4,廼;Y^M7oHЇJfT#F=ͨ4(G@3*0yv>kI]U*gQ:?̚μ4P?@LͭKoog8>gFFD@3* jЌJ#L>WXc'ҒѥۛQw7̧J6n8_ϞRNͭKo#1̝;GT5hF&QkH/%فyVi~rU*\̶M)I/.nJo#cp!5hF&JƱ5}nޔ=ގa~1=H؁gTv167Q:>g>:ͨ4(G@3*0ONZcgpж;GS$u ޔ>;* !ԏXwm?}Mz1g:bhE@3* jЌJ#L^CC^=ry+JRyᣬHx/+ >!ԏql/\==EI0^xYi ^Ğk[ yǗexXbT4ͨ4?1a5;cWע$uGJIVx(;ӫ Iw|HP,JrT#F<_y>qlw@*(Iu gC}va#l۔jKz'I8\VV(r@?* jЌJ#L ֘\]5НvYn3PVm%g`C\kʎWgΧ;Iw|/}t@`+ @@9B Qi?!kL];ZspjUz4x P;vjד3PNOڐI؛o:>X~[naVJr4~bk_^WQz[z `;+ 3ԿTyzѣs2e65ЂK=I^+ p^)gq=˵.]HkZz@W-.I8+ j{sSyZ?RE|+ c@94cN6ƸNLH@ Һ0P-' 6+s}צoCܲ~QڞLJɻJ=6^ih4(Pf4ɿt)]]vrRZ0R'ny/~6n<Jwr~R}~*ڼ5PiM.*rEOJ@`@94cO~1aBZuʼn[zO?x&Pu;zq繒 j|8R5ϙptvZMvZih?4(Pf4_X6Yci&X᫕(N30Qn*NJYN哱9~4$==/] hvJr 5hJ#LaQkLvhH */(vL.NS]+ }f\gHYF|%rt47Vc@3Va aɚ|>|(M*Eq✍ t4=pSZ3 .R}#,y0,] y Z.i͜׼tKu'5xVc@3Va d;H7Z?7ʼnszH7@B^iC}aj! YnG͓ ÷[jys֧t7>4jЌF?gZc~ܸ!M+I=OVK P4PyRfy0,Rw>:i*]w+ Aa@94c&N1yMS&hj|'9:^n@_C}蟕\Ql8VvI^[dzqMZi + 1+0q_[c2OknDq▽~n@/C]KFw5ѹu V>7FG;~e L4(Pf4IeqO>ok{\DNv$+ y1ԥΕnAkqgzk/]+ b@94c&Nnݲ[cܳiMShjP)l8^vuZǮW_pgAv7Bw+4jЌF8ϻz)Hw@Si'yPKҟڡ.VW??vi=7祋z`l,EԮ4C '%۷[c2epP8Z!cӋߎ¡,?[ri=89q*{?.ni*]•jЌF8/y4~>=-];vʼnC~,+ ʩR_ν_pӥ{eٲxP9U+ x + 1+0q_u5&SzzlJ**z'mT| rlzG ^~\?ػYqSb@94c&Nk?`~ףCK(j- 7q POMLMπ y/L?;CKLؗ [m5O"|TdҢ~|: 6r5،8 BhINN zAO~vU3c3{s MF!g.+0T, _%Z[M?=`3Z,GQhi?/ʮ]g:Ϗ{A'f駇Khi\S)F!TxR~'m i- f4ɿLFB+GwIZ:aZ,Wɢ>?͌,8ӣ~hiQdz .Xf4Xp'K!SLMT~Ϩ I Z,WRn65_qa`9lFKM{joBhLπ;yݜjyX4X2EIPU^]Gs#2M᎖C],L4،Q`3ZnSɆ)z|_^hz ܦw` BfMO'` Ow-̮7'1SulFK(j- t2]YN~s~ko QB*/p}ϛ` B4vp- [֢ndrPy])+Mg>jku.mmoi- fs[UN[].̚56=yl9/әY;'Ck*{M'GM+ !u~us`G~bFx'=夼M&| Z#C Ftn ֽczV T\:N&+/}w^y:ٹ90 BlJM?>b-aQ;'2k"]5'?՞z (insGؼy㷦bulFK(jܖ.}J_GZinQdz qqd&j3 hi~Qg'geExnjv_н#)i- f4WPW'ٳg|;zs^PMOآrjE)̿ͺDJq Y|J?l,iZM4،Q`3Zn+ؿ_ z99iz XH^rreu~XZeQnEiթpܴIjc: 6r5،8 y)n^ܸjY ߈LOxr,p"jy7P]6p8L%߆kHnۦ{/4=k`3Z,GQhi楗Z}y10tqCw~4gz- gQO/Hfo5mmFY(5i- f4Wr&)VnQdz~n Bp!Z,w܌Znl:5zɨhe8thjҽoz Xf4Xp'_٩SRݴsf "C nhiBE78UU+R}6mUIYSwg1= i- f4q򤬩Bh7 TӇ'@`;u_&t6 $W'tRG p4،Q`3Znk CuB=55cklu* LXruDBcPK7k,_c: 6r5،8ySR46BڱLyAZ,7;v}"D*<)ӯ;vhcz`3Z,GQhi$_ 3`yA >hiܭ^Ypm׿tVr–G I]Ky ӓe~0_ԫ Zń *IJHED5*f-oV) !B [cdfߌx= [(.wskt/.`9lJM٣JO>ե`YzO``rcÇǃA:Sy8$-oot!p 4،1`3VnZ)|^v #>nJ7:J7|0lXmv՝srS MpNXiC 6c&^~|S+(^'5T,F N`h>.o ׂAKcu.mIOVr9&{8f4Xp/?ESS:R MXa #U?+ ߮ox$rmIuo_#CN`9lJMtrZ }t<%/ )XXi͑/l Uގ׻wpoۦ 28f4Xp/?uERH>/ZO^oҟ{M}#,}543{wJ\9 6cr 5،xc}V*i|__ ]Zg^9ozJ ⦾4xqë`(4_>yZ]XikW '}`9lJMNAJy@Qlxad%ozJ{|phv*KC+tin`9lJMѾJwޑn(zadXXip.YnUsՅ%ƹs)lݪ'&`9lJM9~\+B &;u #J;+ k<1Z~ җ+Otn^],9 6cr 5،xU*iz{̌t/47G^G qSXiX|ezr$೹rmI:\֛7pstOpNXiC 6c&^~Gű޹S+4As92nۗxad_\vt7V:Owo77NùX7^pdRٽ`i+ cf4ﴩ)Z}Iq͚FfU|t1V:jOY_hJ st%OqNXiC 6c&^8sFV*iZdbBY02ư0YZnnJ@,l.nJƋup?K6+] s8f4Xp/m\J!٬tE/җ+I>+ R_l0q7ȇI2vJPot%`9lJM5sdRIstW}⅑q K ЕXi脸M˾l _VKcCC)gxXqNXiC 6c&^ZuKV*QYM4|慑qNިJ7@Wb_K򳾪l,ݙiH72uOOYZwt%slJj+ 7ZxQ=^8o+ ЕXiHZ&3PGEX^.vvccҕ,slJj+ 7޻je]JpRFf9V|t%V5r|{ qS*^7y;AOq,9 6cr 5،xkRJ%KpdyqS䅆y(nJ@N`SϏqS(^^hO&UW}4،1`3Vnؿ_+4}X{N߬yad/kҟJ@*ե0^.o1>R8ۙpNXiC 6c&^(ҾJu.]=˜F  qSmXiHZf`n{=j L&#{Xi+ cf4˗r}TݫE2X #_I> + IacJf+^706ԯ,AH`9lJM|A[wQgc6sN.h"\ P6QEP[zdm̛l"UP*`qf^!!=slv#~DQ6;wG\+ r㣞I~=ِJΏNpl醴Tu$@8$'n[Z]R Csa|2> U>h+,4peԘKRo]'wf7E-\gU~~(2e4HFKp5HFKO|LsQ6ah\㓝 A`dRq=- պ00 Gliݷ2Z @5hi(jܸa ah]㍣_ON}\O@K@Ul5ت-V"E-Vw85{9MMftHGKd4GQd4ATcדxk&G4l]:{MQ7loE##Hhihi/ CTy0~]Xju`g\hiآ廼:^L*|/m] -Z$@8$'n2Ⱦ}'ơSA-lb,?+rR4/0f~ݻMz*i - Q - ?q6Qd m0R\lXW]hig DBq~i+_E0aF&64z*hi(j2޽'FRC8zEKs˷xEr-\6}.n\- E 7_EF)O_nNr{#(X>ī`ng%6--& MWX@2Z@2Z~ ij2JYԔITSASg C@.Zt~G.fsùAQ;avy^ݻǮZ$@8$'nLSSORV9vޘ,-c>] -'R?#ݝ-'G_O"%y?nE׳- E 7_={RsT_X͡yLJP4uZӼΉS($)V,3gP4HFKp5HFKO|ƌRVr=7_.N~7e&ya<#^N(& FQo學v1^04 - E 7.9bJf$gώ6uM>8RCu9(m&Vr- E 7.hmJ>zo5:EKhiza godxB3.51Z$@8$'n~z(ew]:Enͻ>;$L$4i=!)yĜ8a04_}zBGKd4GQd4ͯ#ǏҧɌA[!u!- g'R<l懤kalEV CzHۂhihi_GElJ#GL6ĺ;JHV>,JHcƷl/zαj3~5s`3V,PXi_~r>KpT+jo $KLJEXi)1vnvoFj~ոOٵ:{+ 6cr 5،F:'WAT']]xAhks-4-,14\ݾC_mukGٶMtI`f4XH'DTZXդk8A-gWV[vؗ/]+gzR+0ԿJ.vyGZ%؄`9lJ#5jstwyYQ^>>JpXj㩣􎗤Z0zPbW}=9)]}Xi+ cf4҉/Z)%]]%o4=3/}|Xहj-W2"WKq(Յ^WѾɺvvԳ=X`9lJ#E_+elVJܵF)KLJ^'w!X^CM_fn}tOcf4XH'|7ܻ}_+e)F^e+LJ k$Ţ0G(Ywj8/W fd^h<(4oiXx1mk{- q5FC08hf;bϏG\֚~Ş 7w I佨m_Vl3##^@7ZGQhi/?aҞwgݏTԴgG/\cjA= 6B.)CfS{OuKhipE .&61\^kYlFI*H!)ݪ,k8F!{ž/&͖BB9-9{>l@rZGQhi/?a^]{z(Iu=;M ߯RHemX6a;'䳥 48_~ fgm[c$Ya/DI*K]47b&~G_䮨'&7ay{ܵ4Q2Zao[cԞk>%,rQ{|t- AiY\f6*_E=6fX~gK#ZGQhi/?Yf1l߮=N^%,㣻hi'0}㥫*n4S JE{O_yii- e4ėb#IjU{z՗[%,hiY }h(J+ۼ_{Ix\4Q2ZaJ-[1kO.DI*˯>Z]DKṕoj~whuul'۶+W~K@hipE .&м5F;Gf!)EI*մRgjliQ.ubq,<Ɂa.4Q2ZaMj%vB-JRYv\BKpUkkoynuڡ!N؞:'͖q5F48hdhH{tm%,4wZLyY{s''m_k3{ڙ= 4!ZGQhi/?@'NXc~]{z,,GI*ˁGWqụ %;״ o[37ۃm%S- x - e4ėzƱ5F={ݞO*Q b͖_.Gk'##6O.48\FK#L|aqlq}gKQ h:[ijsj I:{IW_umXNI2ZGQhi/?XIGݫ'QʲĂ0Z20#g{tbQOO8^tm^.9 .q5Fu5F~}Z=ioNh9u,j6.ՖZګtVQOLo6k6-2ZGQhi/?d;wZc$k$0~_mj/Vn1zUUNl 5y=7{@qNhip٭35Ss-S6UUUhqצR׃* m4EdiJ#I`̅32b{}cϯX#>硨@2ZnwȈV$b{J^o|H - }~[ Ϗ;鸔^Æ'\+a% = - Q - 7廬\־j;lOQOz1ʶ% Z@&qmҐfQJ9 J@8@2Z@2ZnwѣZ)0vm$ebh/OҐZQ?x3Zŋ:r?- - Q - 7;R&9q8;Y8U@KHZgݫ&%Ԕf ϶V,hihi/qSSZ).lOحTv^`l6w3X^ .=@)ի?^f7[+G] Ês$@8$&|R&)lOŅmK Z@j.ވ4ӓ+Ni{Tu/_6֞g|# - Q - 7WR&y-ۣ; ^gj{ BKHGY4;[WI[犺^Æw}zy9a@(i(j򱴤2I_0_#K- i|e{ :Tԋ s^^NjLs$@8$&|48j;٬Tl5/s.FKHd& ,n^ŽNχyvp|Ȁ58@2Z@2ZnGիZ) ˑy퓒 `{OqFnl/aMEg o{:O]s$@8$&|4llhLGw׼ 4KȊasJƯL#㫶7)٢6N>Ȯ}8@2Z@2ZnGSV?n{ngQOzY.G7!Z@}1i4Ʌ~e,1{ 腅v9 E p_>FGRmuh{tg\W,b0DK j,^Z}}&yE=3Ѕ8@2Z@2ZnGV$W%e/R&hi31W/ ?P}u^b/: 4HFKp5HFKM|h#Z曶GwI{GV 4݊ 6Z@fJ37^BE}} o>s$@8$&|JSll BdҶ Z@',{rI3˯Fא!NQ/-i79ȅ ::+ti(jyT9rDG]R B4U=4N8Şl/!E~e뀌thKV - Q - 7cO>2ÇGw̯G^gc{LwRC K}=1ѹ-[qNd4GQd4ė=OhL2:j{tz Bu 4vl5;ȟnm/!YQQs옾[@hihi/j۞1٪ Z@.^4C~]ҵZGW.9 E p_>;}Z+vlN&TZEKHW [qf Š/]2OEQW.9 E p_>{Tfub{t N 4NmoVrwޓ+y>~IʶUdi/_־orq=Ət7i(j_>2̌T 4οm^-$~XG3WTl"NE]a[LmEb - Q - 7c5IΟ={>e3Tq=_ab^|u*XԋICq#qNd4GQd4ėgR&fIsK/$U.=w$Nϕ\%JWZ0\2~͏lin~`3V,PXiV$ҟw"/e+ ~n.O@pxѦti꾾Ԕ~t1h `3V,PXi,/kL24$ngIͪtp@ W=ҧ>O=uvjʅ \nslJj+ 7k>v[Y0IݍK4zmf5.JHP?/y`p85%ҕpNXiC 6c&^>ZdR&?yW 4N˕*]a$_˷k{Rm~zjj;H9 6cr 5،xhabB+eJ\}uq>wYJVrj #'_1;30 4،1`3Vn壅UIuIJF 4|\V~[+k_KGg%V#Nz|_/,H7v9 6cr 5،xhO+elVӡkqphSXiUbLϭKWIYKnmslJj+ 7Z&2IO"鯇{f/H>Xi\ۚst }Tq&о8f4Xp/]2̛oJ={y BcaS]Jˇ֍罞ZVni7?j9vLK79 6cr 5،xhRѾ2V 4˹J\n4V>WsptQGZH(nslJj+ 7򱯡!aΞz|ɂfymfEJ%U繑|i*]%~4ǰtp4،1`3Vnc_KKR&rYՆ ^n.V@?YM2tsK*EM9yRDZtp4،1`3Vn .^J&zhWy/3:Ip+ ldYIJ*-.j7?stp4،1`3Vn Hh ]ZO͕ 4Npnq%."V@]X,y=#J\nJgΘCn`9lJM|P62_[#[K+=؎ЏXiPXi*===D IVYcsq(N|+תM>V_kֻOg=X~ue=wNs4c@94c!kdddB ݞ='tu}/V8ɶzڒ m>9T]Dw;r꤯Hw qNf4(Pf4d垞M?Ƹd.㞿^]3%#'kߌx;jiKF7KSs N_XiPXi+Zc\e]_~=؈3=}`>VYO[%_;?HqNf4(Pf4ğڱ㒩)>.GqtcZfճզtOo=yR6iЌjЌFQqe (N|+VnU2>CtW/vv~=s4c@94c&|lTnq֭ѐ~=3(c%$Xi dS߯tefSD{M˧kפ_XiPXi?^}3gMQxS{d+ kfa=_tCD׻~ig`@iЍjЌF`j㒽{r'nH,Vº,?Y'`pigvViЍjЌFPl8viIxPڲ+Q$Wn6d+ Z8U./\; Ip4hJr 5hJ#Lps5%OOPK$RKUG6@h&K+lF+t,x%kRI8@3Vc@3VaχR+Qxt]G@P4{dMS8@3Vc@3Vaχ4۷[c6_~:bb=ʵjSGְ@8zH֒lo˝ɩSpNf4(Pf4ğg[c6矷i*t<ġ3(N|wlIV\v=].GN'۶u{8@3Vc@3VaχIkK椟H[0^'vKG@ VvrctN'/]piЌjЌF kK>HxfDW_KVġ˞=`n jU>+ 1+0 /Xc6_~7iԈ3c J!,o.V*]덎6?PJ7^3-]@/5st,xæg`@iЌjЌFϭ1~=i~+&QtJٶ{+ggoKȂݯv{Sb@iЌjЌFV8f>q]3brq~MJc zoc7OH)ܯvyf'C qNf4(Pf4ğO[cs8f'+ggoKWV4a{Nxml>N.ίIȈvjЉs4c@94c&|x8f.H fD'm+ dn{^.L;734hJr 5hJ#L=*z+Eh|+^cPi }nk9bHsai08hY5F@2* jJ#АQ~J% n^c\Pz@Q5zEz4r~! ɨ4G@2*l#}|ІzH t\3:t-z @Vs \PxR\utTH ]nlЫHMWWwKkwɨ4HF@8B Qid7qtu,1 =g-h/PthTHk%Rq|jJdT# F6qAyh@2'^H4* Bu-`tGT*^/aJ$ ɨ4G@2*l#^,w\=v':[BrQi NO,EL5KА[e}nс$ 5HFM|kfQrv69[W ^c.^H(* @yH}atFZoPi{@B QiJp$&n>bwQrr،XpyNPi L,E,V\/z&ɨ4HF@8B Qid7{Qrj5 `3{:Qp~Jb#/]/'O?QZ9PdT$ ɨ4$:e1_M4U8?^K * tFtUH1;k>i޽?PdT$ ɨ4$T*F)9zcFU@806YqThDWalZo IkK@2* QiPdTGBR6}]=6d t36Yu{T\?RGW\/}IɄ$ 5HFM|$X4JYΝ;V.OUsA t|Sz-Ǩ4Сkh\o<^"U Ʉ$ 5HFM|$a͜9ak6\W^c_/<* tF%} ]/*33-%Gnp8ɨ4HF@8B Qid7(e3oi*_;xgHY \/ը4Љ>&R9P(4]/*GXIZ35$ 5HFM|$R6? -{}r>xyEp֡@9=u ]/*o[FZgil?PdT$ ɨ4DݽknןN @'1~=zz-Brzb)zkHZͼk5o$ 5HFM|$m.\M|k:V [&Jdt=nG.#U>>aOjJdT# F6q󑴁tu9_hVs 3zdQiSr#9k|zx>==m ɨ4HF@8B Qid7I2JYN_Gd7r=zѤPiSZ޴GU{7m ɨ4HF@8B Qid7Ik4ΝF) C k:/=5~Tf}ryqxњwm5HF@2* jJ#'N,gh#/ƞ ^#sߗcC0z1_,isZ߷~6o5HF@2* jJ#F)qϟ,^\]pq 4v})no/̅iH|`hٳ-B QiJp$&n>@f|(e3]]Xt.^/}q\un휥|IJ(!IBC32ij2 \8$qh;HB)Z#َٷC*mh;C@rt9òR)]u[- ׂ:ꋇe݇h)}::(jhihiD718buOF;3aMK#݉xo - 7u:X}V{[G+W68$@2Z@2ZGsvJzz}4g%ò$1~`MsҀ|39F>5'h)+G o5HFKd4GQd4LS1KK&Gɰl]vhqtDK•k/(wѝÇ0nm5HFKd4GQd4fJ$TI_ѱ9RKObVưlYvӛrgrss!+Wu7EK]WR3ujY(s.Z7rlSc"7媕Lߴ{t}Vڋ 4HFKp5HFK#hTIGGP*+W\+v9eˏy6+?{m3ݕtvw:FDvp>e )wysO{ݟ~?|S~qs.?wO-Rnx6|DOsd0x)o}:O;ϸo'^m7q'OӬ+ssπfIl6,BDgW2;r{u1hkE 3q[RB]Oghi(jF4qE[[` g@E?15,s>k_{ C!ORl;՗Cu$@2Z@2Z͇i֕g@s=.IװlBD~u6s`Ν\k5o&|7^ռ:LNd4HFKp5HFK#¶x<0ͺ>Fnx/'e%gܻ+o^q%|Q}յQ:ՀX@2Z$@8$M|r``uedDteR>f![$;bA& c04HFKd4GQd4]l;hk LS=}}{eUtfPȗk_ (zcU)W-mG34HFKd4GQd4x<0MńN>]ߗr &dkcԹ_K&TOSs &dKәZUUww*~M-q!M: - Q -hC={T̹s`JbqcX6!["!jUۃQZTٛʺo)oa9 4HFKd4GQd4 TLo|TIL16"yrne8XT5[ë6xihihiD7 A?{o~YY0`@lJ(RQ :k撆B{Ic.Bggf5{UU)}|?:By'JhRuqlL׬{lw53-YMĴ3+=OmJ35u$#@2R#@2RˇX7nͬP~GrGiQ]p'VoLt=ʫCbPVj4HFJd4GPd4!R)? C:;rY buQٟʜw{fݮ}9pՎV4mvfip::gom^9䍭FgneN9[ͺAcv/c$7xWBNn?lV\ j4HFJd4GPd49|P#2l-?^/K>Z:9O:kvۘ}|9{k½%olktlϬ{}}5[5?EP'gtͺGƝN/,}rm-JU#ߑuM:ND9g]K̴NLߺ%3'yk|n?Tշ`ӨiHiHiD/tvR[ꃔn<7_*Tqqg΍c%ז=3 Bj +?tOޮ*{ ) A ҈&^>Dy7 Ś=P3-iu~Vx¬kUSCzuEPd4HFJp5HFJ#x7 uFJ 4]_ZGiɩet&Fr;fY #[[FGA )  )hC|Pguw)-Vv3-!޼ݮLȅY'^ !^ ) A ҈&^>)}PLF"nW&Vs7[Gi-c^|V=8uU}p] 'A )  )7hH$|Hso50{.4vel5=JLKWuL9lI0{0eN Be|\}7gA )  )גdKKˮH=~7}P|}vO?cW=6(<c8ݮ>A|PjHiHi6<<+txX[[}P)j٭eۘ3--u[=fe'o~~VpymHijkdeW$?oc4 J$|}FO!][mc=W1jlGrДM9j3cmPT ݫ{{5HFJd4GPd4H&!H!ma(5r$\|eI3F/?̽>}3){j~w~\r;$@2R$#@8$#M|b@J?6} i5;_(>wf<̹fRWӕ$A )  )hCn0 @J[egX15+WuL?̫ ǿt*gΨomm jHijF4!ً~<b>ct|)L16fmuZ33jmݽh jP5HFJd4GPd4._ C?}`gH(]c$3nӚXtXboTۺ{;wvxz5HFJd4GPd4D9yf+{~_J5O$#@2R#@2Rˇ|ou>F`|mcU2|tL: qt76O+jh5WGQ\WJ`PLI/Q8{{M ޽h?{jJeT#`F9qgz矵J4[߿8I]liN_=}.(|;^PeT,`˨4ʉc9:}wT|:%Ag8j<}2e7Ve_u݋fG*J2* Qi0PeTGLO{FC @4^R8éT-퓩iwvvӽw&KCC?2-˨4XF8B Qi72<읓gi]>%Ag5jt\Om‡%`˨4G2*r#_j5|>#*WZZ~J= ga},'q JZ;Sm 5XF2* jJȝWs CljF&jD|}}x-VY^P67„,`5XFQN|ѹs9LNjoJ{gAg4ɷ-3n6dj Yh_(WTXPeT,`˨4ʉО;}!DI=}~9"|◗u&`˨4G2*r#67syX{{kT2Ag2jP|@qF~> %oL2* Qi0PeTG~wN2:5* ɇʵTY~z~ q 5XF2* jJȯOs9qB{ukTO(j[>О8! o6w/7Z΄,`5XFQN|o{$SitJO6( 8`]@Wd_Q{lm0<ǏkM2* Qi0PeTG}wN2SSګݡ߽VQz}_J>N8tvW/;wkjJeT#`F9qkis=А@w42vcIYLZG@yҖ}>޽>DίjM2* Qi0PeTGޝ9㝓ŋګ]ʣZRM(}̼!goi^@OKÇ&`˨4G2*r#獵s C=*TDq&syK4u_`A~ K?T^PeT,`˨4ʉ[^ gtT{{U4uma#w_$ϵOӯ7/ߠAk~ڄ,`5XFQN|АwN8i=RTDI}Ή뫛;ڧ]~@zU heE?}9˨4XF8B Qi7G9LLho^ԪT sw:;ڇ__q[{~]8; 5XF2* jJ(ipFG^JcJ~\wi_LÒw) 5F2* jJ(w ﴷ^JcO] Qzd]vCΎE%kN6* Qi0PeTG1,-0IIk6(sǕ-t+ۺ^̌l`5XFQN|ԔwN8oOTW?/~fHkvӤIMҢ[ wk(R-ؒe\aqf.s!a=Ow97'߳ *&8?0ᴜ埮>,Ϙ8^40`|g"^pB QiJp$7irQf._v: *8<0vm\9\Y>CS绳5HF@2* jJO|F)9s64cn) N:5ׇރW2 N->A:r&yv:B QiJp$7iǦ(w: *r0艂lwQ˫ONgڼk39zu$ 5HF'n>RWR;{۠h;@TQAtW] lle\4B QiJp$7)FOG뽁mPi4٧@gq}M̀q2:[]"ytB QiJp$7)sQf]< Fj)ay|Q~(Y^v}4{eW]aPdT$ ɨ4Gʜ>mr:,TWk&yקS$xq(M\"ͺm?tB QiJp$7)36ft=+@⽢۳<~R$;½nz]]6@@2* QiPdT~#eyl]olAlT0h|qܜ~%YХ7.\aPdT$ ɨ4Gl&5Qz{`3* n̔2: 1cךI^;2?odwt޻ɨ4HF@8B Qi5JYŋ6p+2P5ss\OׯۼݮC@2* QiPdT~#y(e3kBܗ3}: 1/ EJs|pCJ\kζ>u5HF@2* jJO|̌Qfv:#W6d2:`e1S$^ky~u5HF@2* jJO|UgQjb@* !>QǛJ\ۥU-'HK7mswB QiJp$7i58hi׫u4kRFk7|ϩʾ\r ՆvzB QiJp$7i5?oS\ԡҐT0:lԴy\nSs5Kاnct'׫! ɨ4G@2* ?qbFO[)]ljFACХϿ+䟮&Yj>ѹt G\x>ıjJdT# Hn\zu`4>v_]vϽrϵ1Pݝ/*L[3z5HF@2* jJO|ػlT*Qi? wi`SsJ\ny8_ Qc}tz_s7oZ>'O^}3B QiJp$7)vQr]oҐ7@,{bykozz/Kšɢۯ7ް|GF\ɨ4HF@8B Qi C8v}JC6a~h`.w4QpE2;kYzyoF@2* QiPdT~#zzR39z{JCB@{}N~kgN|u$ 5HF'n>Rz{JCJ\;|ý;CBC%M6k:߽z-5HF@2* jJO|F)u=G'St's睱1wı ɨ4G@2* ?qz,^q6E_G/d.^Y5HF@2* jJO|1LN~CL}<8Gڿ#f0dNi// rVqeq]aeVM:EIDgX<ʹ?^y^g '_Ja52"ZU{E"SiT 8L)O JLNޞ4k tgx? u\ËgOW!4@d* PDҔ˧^55UdroOT5Pvg:nEy*sj)J30ni'wڝW6v?pai?X^FF;s\B JD 5@d*M|rhR9>L0==}eЅ{ 8̝v8ÿ3_/r \ᕙͽs 5@d* J'4e)ɓUJ{S0f==?ݡv;Gt-,Īy^۷s\B JD 5@d*M|gUJȑ{S0OzGCN?; x&Wx{PD4@pB JS&/|mRy{S04Vg,m95Z}6=~iqqfؿ>t(/"4@d* PDҔ˧(nRi^/J)'][{/tw˩maĥŅ&Wxv6/"4@d* PDҔ˧47W)՞~Ƚ7Ri``ZMN͛~L"Si 2L^>R=}{oJ`um^//"4@d* PDҔ˧4{T)՞GsMT g6۶޻B JD 5@d*Mvsssǎ{)ʞ=UJg{S*O0=nߞ{>5@d* J'4yͭ_~]Vӹ?twW)՞Y} ;^˽w 2LjT?.-[ UT{&&rM>֭MʿO"SiT 8Lknnn벚ज़R=;wޛR} ;{A"SiT 8LnnnرcZ^>EٷJLLޛR} &w{A"SiT 8L)OiR=vޛR40hr}7}jT 2N"SiS'jd)J&{A"SiT 8L)Oi._R=T* &ڵ{A"SiT 8L)Oi~Jlܘ{oJ`kroȽw 2LjT2y*&{un7}jT 2N"SiSjϭ[H* n]^/}jT 2N"SiS۫jϵkH* כ\mrL"Si 2L^>ڻJ|y)J&wr2jT 2N"SiSjޛ"40ff\}rL"Si 2L^>z*sp)J`|ݿ?jT 2N"SiSުR=o{[7uV[ԝD-RԄR?KF֑ ։"LL^t Rg{{ޤ]sv/F"SiT 8L'ZJ\>zoRRi`gyy&4@d* PDF-yGMJ* L=7w>|2z jT 2N"SirIhg<&%&޽P? 5@d* J'49y$tv-yVWGMJ* L͛=7ҥ{jT 2N"SirIZJIII[_ﹹ7zB JD 5@d*MN^> S-yFMJ* Lܯw L"Si 2&'/>W'&mq>y2zB JD 5@d*MN^> Rz_GN>* L\K=!B JD 5@d*MN^>9-/RGM>* LqϵijT 2N"Sirim<|0zoQi`z[o޻PD4@pB JON뵔740]kk=v{{ލ 2LjT|rq_~9zFB JD 5@d*MN^>9n-y柂L:>9ydꍄ 2LjT|rݭ4G{.-ճѫ7jT 2N"Siri64ϥK&&joԮ޻PD4@pB JONwRz毿FN2* Lvϝw;L"Si 2&'/=矏^dT͞;{t4zvB JD 5@d*MN^>9={Vj)sIFZ]2zvB JD 5@d*MN^>i]\Kil$D-.{jT 2N"SirIk{<{{&{+"4@d* PD<&{轻5@d* J'49y9:7ɨ40E=Gvee] 2LjT|ZJޛdT+Wzk"4@d* PDwo$䜞Ş#1z.B JD 5@d*MN^>iRg)xT] 2LjT|Қj)3L* LÇ=va^PD4@pB JOZ{{ ^&&ge¾{ 5@d* J'49yuxXKi{JYy^PD4@pB JOZ{w$xP/T 8L'ZJ,-ճѫ/52_%^^x-x{3ѐ6 d섦 ȴn.t4 V(JYm&.XQ&4agOydЋ9򼿆-z;@Qhij6rY6+zZ"hrR33rE߇s5F8ʊ֖Z@lo[ޭ7n5oQ(\O:`sZ4'ّ16YZr=:BBKȐE˻ukg4p5 ;yih=g - ~b'!dLjFHhiYn+X.|FKaͦnҥKS.g^/ #i-0q18Z@Vܽksu=zg(j- 'hbr6QtR7oc?3Za#d.ȘĩV]ύbfV_ǙFQhid_|QEoW.kwNhi-,Și4\ύ2}+8ˮ E >d][TjxX}}[wS#?u|FK#L|u8KKFHhiP\qH{{ E >dT{T*-vvo$~YB: >&N>B ces#$4moܧǙp=}(j- vwu.^T ߱{2SS}[* 4F8Y&c'~ ZE8ﻞc5ৃmnjuUN_CKJ%ml\i-0qJE$N54ezRig4O<|?Tq+49NirRWu3Za#dժI)khiL׮OE >8jmߙɟ$T*io/ u|FK#L|ѐ13?znfSQds)n~4P3ZJ~U&_z4F8Y!c筷\ύ|nsO]O|FKfSwT_uCׇz 4F8Y&c'~ Ze4Z-ӧ l76v\r=&ie`@ s}&WNhiU*2&q⧀mn8GOE >}ˊ"˭ΝSq zhwc'!VeLO]CK6h(ÇOE >>:lVb45+WUݸZMŢFGW_|[[]RIgiPpROzwi-0q8Zm8SEQhi'o(,a9{V}VD֖66YJ:}Z7^Me 3Za#dׯ˘YZr=7BBKVnsƹv詢g4ݽ!MU &N>BVɘĉSlW^q=w(j- gE6 pק3gt_?ܓ|/ks@ְNhiU*2&q⧀i;GOE >t({EoO86/T=n>{r3Za#dժI9s#$4?mnܡq]6|FKvxFCQdv'CCpAGfΣG}a`'!1S!iePzQ3Z~Rjv-Z[Ύ/ձWwHˮ_u|FK#L|lnN$Nznzx'^;wt͢ۅrGJZښ3曮: >&N>BVȘęr=7BBKK/ܡ/Eq˙)ʦtEҍPkBMJ .-!.0\1j/V7M&&I_59;3ϙ=Wۖy}瀠^Dz Ǐ۬|ڟ)ҽ|*Ƥ.0'ͻԹsڭ熠Ҁ67-+{RIJDZloKfyoPJ2R~bṻwŘԕP RS_y7@[ A .#}:xjıK%Ô~TdzW^6uFJOL><-Ƥ- RS wR;O5;:`ܼ)Q}6{=ղُ>Pb2R~b7Ęuv) )ͻyvy"e4^O.^YV i;×V)YoJ5xSPb2R~bE1&u]7AJpʙ36{}牠Ҁ'm9qfSuyL%GJfygJe4|xĘԕP RS;O5^+6kuz' 9n}JV}@NHiɇffĘuv) ͣڭ牠ve~fAd]XR:en.ɰ5(ip) ?1ܫ1kjJox?y4O;g5RjjWa(33lɇN)ٳٌ~@ NHiɇ]cRԔv) N<}猠"i6ZK-jjJvv>* }y al,u2R~bŘuv) _}eb&uv9#e404H֤R\JSUH.OJk{[[ ƭ[5bu:bL CcR#m^̤~[2Rݮ,.JX*W.\NG(2<`\{NHiFGŘԵ7@JpA'A`\&v9#e4PjdJEn<{QSΝAVüNHiΜcRם;}4ؼϫ>g5JӑY4UUlJiKŧkܜt N`bLZ^~ "y+J١GPHit~M%,T+7nR|J'699,/K,c4bLtIone|^_|}jp) ˓'2>n|xOJJF12ip) ?1Ғ @Jup A`P&56&q}2R(˵3mMLH}`VJd0H/a1.() @ۼ- APHi}rڙ$όSLJ%qj6lNHicRv) @Q%A`J~QEaS mJRݺ*P4.@H*)T1/,@ Mm2pk=w ᙛ<>^ BFK$Iy]2Ŗv97}N ҈1 vDBQ@hi d}tŖ~V}W< d4kkbLᬮjύ8ln|VC{_(j- o=E_0D9vi-8q‚S8.iύ8T̸|(j- i{[ fx ݖk9۷=҈9#N=7@KPqq IS< d4mtm>c']m1zKolTsoͦdvE F|c '- w]Y\^/BFKڒ$)|t:ګbmW*@B(j҈4bL<7=e<~Q2ZJ'֖zjΑ#rJtѱHKȋ/=c$M6R''.c ўqxk.üQ2ZbmLN((~イwxP4 bL\=7@Ko]V} d4ROnWT{C8 [*y?T*8VT{BE Zc ўqqXA̳=*BFK|${rD7˒!_:U !5F|Ři6Fhi~z._< ӫ d4͛b{rDD>L{7)nܯўxQ@hiĉvwŘ9~\{nāG5ڣk d4'IuK{7,{@{(-҈ 1pFhiܻciO@zGoB$ܺ~KZg==~Q@hiĉrͦS8?=7"@K5`'GE !dt_h/o~_u<ҞJ  f4Y1pFhiu29~;gsS{P2ZrtuXښ19"i==3E Ѣ'.ȵbL?=7"@K_|=* d4P~I7X+++qi'OGrƥ N4v[)ӧFhiut\>yyG{0P2ZΎ4brt?joƥ8҈m1pMZ@ 8̝;Ӈ@>V\ލQK;xi=:0FE '.]  /hύj5?sda d4Pᷴn|X+7nh/ c׮9ŋڣ@ cT!Zq܍bLLOkύX̳=}0(j- /ssgɫʽ{KBsj"DK#N\>c 'I$˴G- >ss.aO'(j- w23h Y\= jZ:djggWcT!ZqFC)_~ўw4 $.߾#mm^&۷CmsOG @H-jH-4µkbL_EK-pX[aqC{0"Ж`d5$F@a~^+`hicXrӕӞW5hk7]@[hQ@"hifgŘɿ&PXr͕9}Z}1|EQhic>?̗_ڃ!(ŋK nQ@ hiĘ+u#v4nv-1T{0GK#M|bL;nĎk]nCi6'E >C67D,2;+_kW^= H;(ln1s;ZYPL^Ҟo5}XՒ^O{$.>8'Oګ^7ZibNG,~_{- ۷.ڡX+=(j- $D,^Pj4ĘʹwO{݈- b˥6 1AQhi@8,25% "qjG V4Jϋ1jiQT鈵.7`VVE >1<djσo8+WG V4J.1nDP̌u6VK}1AQhi$3ӧ :Ѵɓ.gYuQ)j-4ҒS9W*l0ssi|FK#eݮ8QqXZY[Ӟ1]NVIt*(H;(}S9Fhi4.wYc@{P3Z٬2,cܹ="MKol8/CES%Zibe1r_^7FK͛.`~]{Q3Zj X+?= MKzxVWCES%ZibkĘɿ&0gZL=C(j-4ݺUYX&^kǎEuP15ćF@iaA+`rhivez+ck&|FK#Awy?h >4JbL_CK8R'ͦ6v[{`Q3ZyH2̓ښ0H@L-}Y;uJ{0TLE 񡥑&v>PjĘku#j4#_~]{Q3ZItں/<ܿ= SK)SQ@|hiZ-1rF{݈- `~pgi2|FK#)_|Qe'IZq,Zxr9{$oý[^S ) ?qĄ5&q_CJhgf˵U1A YFJ/f7HO(K_wwNI ) jP8@X$+sHi--.Y{Wl)=I# Hi`}>,_|!= ,]tОeHiD*kL*j4.o֞vMzj2R5ȑ} 'trΎtІeHiD1k~^oFJ*^o)=5d) ݚM{>l33ғWR/ƆtІeHi볳|>@cMơ) `uxbuwrrEz%j2RLX|"= <,ϜYpouCwhMYP2S:^<@N_߿I+Jq/{Sң Cӯ=p(MwUqtB`5??/}=wؤ~%8 ީx:(= Ry p~tnCCC8XzG^jMZWҍ{ԞzQ㏟Lcңo'Q,#L>,_-= ?RzjJ=*7/@R~ kL :<77gy]p$ze49}:fK[92"7/@R~b¯!o5\vy⵸(=j5d) M~ApiIz `}).󥗤65hBJO| R.[cי3}C5RSaOpy5=-=v5d) MKI}zH jЄ8@\$gj4u{˓Vx,#Fvf9їێ7m}A 'J֘~t) e˹GVA YFJCTfSz FeJ\ҵ5A j'LLXcW94?AA YFJCTmVToӫWVT5AJO| R,ZcW94ZKa{<  Hi(pV-1[[3mL]}@+* 'N>T1\Ҁ'j5.Pr9&=Oj2R ;?H2w/,72@ R~ekLZZҀj5.oSe4￧ O/)](𿄍t2@ R~jj4ޕ+6\꫶ٔ35d)nW,Z RSSveEuQ) ?qHdI\| 7T#ݾiWA`ץGA YFJmn9/DeJ㝝nbT5AJO| 2>nI\}C5RPlur.OO {H^" HitfӾZpsSzL?tccҭ@ʠ5HiD1krRoFJZAweդGA YFJ{˩å%5yk{t5@R~\j4ҵkv`iY/`WWGA YFJKj|63@kJ}= FkP4kKmlHHi@;wӲ쯿JO7F7tARx0ZSXtOK 1Zt 'N>pŋ֘50`w~ݽUuSFkCLbRgŤVB]."6@XCl2g͙=k??턵aGkTpӑ<5+WY"3*w>Lvw kMvznk*4qJWHQiNG5V7{=뽁P@ܨ4rذimZv[sy[-`4 -Y&!^33֣;* ~^S~b^7oZ G fTen֖6ytk.o+PTiu A^Qi`LLN*?.,U_5ČJc>{ V\YPJx 5@&N>PXX4ʡ+-QifsطԔV:5Wk*4qB!!^Y&Jc} A;>bF1.:X֖6V:5k*4q¥KBuH˝;eoʡ}d=B 1~8[ϭyů 6^C >Pi_J빑* ,|PYyn=<Qia|b@kmEn}|H'(B鵶f=7@qqjɡ|c=<Qiwx-n65wy~znk*4qښPz}Hɍ 1yz8QiįەZM\\\|ƔJiK/Y x 5@&N>PX^J/n "ŋ VGwjFVWz]: CZ͍2yzt5F8@U rzn$J1ڒS4_׷Z 3*ʷb[O kϜQVzt5F8@avVB( 빑* DkcCj5cer1B 1҈?_ׯ[O kePTig%kizn$JveqQLd/7jF~[bNzz`h^+}j7֣@?4 OKם;s#TO?ohs_725ČJ#fdq^+}j[|H'(dPzHrLLh>^fS)!^z֣#TA+y./^;MBP@̨4bh(oe=:PǕ~n~C PiHHlJi7ӱ$C fT1וo￷Jhnw[ H'v%:sztJV67enNL8x^mM bF4/S׳J858@&N>!!hֹs֣# T8bOʧʫ*U}:bF/ɛ7Gyů *C Pi-.Jd=:@#_rj€ ܴ**E fTzM{rgzt:+ ^ 8F8H\!!hÇ֣# T82?/Y" }WwjF7=95e=:P)Ǖs/~QqjpJ#M|$% AGG40R˅ Aٵ$OZo#@ fTqxQwztR+;^ 8F8HPzMMYύdPi`tZj5W@nߖ^z B 1҈Ur\"[[vWGT7S>XΜЄ37''B 9ޞhXq\MPT1qŋ3=m7"?_(4=?>-| {{֟5J#+;;ʗ[qMe 8FL|D69)) <++{#* ]+Ɔ<Z7 므ljFVnм?O(J7dq*8RM ەZM5>,/?\rFI+Jͦ~YqjpJ#&N>j$%ZH4/ͦLMIQ(}w#\jF>:soWJҽ*{Wǡ4b#>vWG$TҒCϟ[P@Ψ4gie:PǕn65+ȊPT1q֕+SZ`4ؐЄzepjF>VW5/cǤ۵^(J7+dq*89IiPiDn͛r&Cmo#P@Ψ4{;g7P&Ǖn65W+ȊPT1q訤4{#*8Z-pAB/XrF?P>M|zuL+}onZ ҈Z-II3wZ`4ޖJEY!N*}g-pjF&nR>P?zuL+}ʯ[ ҈ II3[`4vw(Y֌__YArFqH~zuL+=?ss{@?ǡ4b#5IiT۵^Pi25 pgvVZ-o#P@Ψ4r/EyZqUͭ958@'1j3=m7Y]x[۵85J#|V֫%s\'5+ȊPT1qꪤ4\d7pӑ-9sF‚<~lEpjFzK^]Z^(JW[?1a7sjpJ#&N>bZY˗FǕ\￷958@'={&)ifczuCVK._VԩTd~^ޕv! B 90hh##Zq4wCPT1qн{fvwWG+ ^+]js{@4lݺu넵8vgJgbzoĊ rrㆦޮӧ?3B EFa^< JONjs{@4lZ؍KR}|R.kǙ%M #B EFaeீHxtk* sVkuu| qA !YX>A>DJ%M5hj(2* [++@^V\?+(4GT$ܹc:bEq)x9sFnޔ!PdT]ӼWVsshX |҈'Qؐ4m:bEq|~IǕU<$LOW_IZ@?j(2* [ͦh7tIs_:x 5@'N>B8{{r$&jU cOP@Qiؚ:x 5@'N>ⱻ+!h/WGĨ4#VFCd{kj(2* [Q{yZaPTq#~(!hfszuDJ/mR67ސO@Ȩ4 mn*_?h:NSٱ^: 5A'N>ⱸ(!dAIS1*[_$)dmN"jJk'OFD\VzgGs\ܠ҈'V%sW!*#_DS^\￷B"0yc=k7#~DsƬn\ܠ҈'8uJB<ވQlmIh,-@Ȩ4 g {9rYojzoe *8qM A3g:Fq2}O;XPJ}@\VmݟqjpJ#N|D⭷$ʹ֫#nT:[[R.+w֟ "0t}@\VZzoe *8qӧ%S*IZQi(ܿw{,/CȨ4 hܯj7#Jzoe *8q=I !9c:G&wϜDȨ4 5ܜ@\VzrRs+74G %͔֫#zTR*)w$|EEȨ4 뚷А@\VzfFsϟqjpJ#N|`iIBܜF&SS2ccn[P`J+(_֫yqYſpzoe *8q) A3wZQi#IekeÀb#PdTS>޵^ȋJ_ЍPTq#BIݵ^ѣԔu4pmB EFa?~T+⍆@^\VzvVs_|zoe *8qΎJzuJg([u&'cO'5ӧ5jzo /.+]i.~i7t2F8po%|FodlLٺMBl5y͛$MWrғЍPTqý5 !<)ij:@ћ75 g>nfUqSٰINΩ3ܖ_7n"Ĕ((׍F-$#ɮk>?us|PJ뫯 DO"ey 5@*M7Tgi)z7{6OF TXwkҽ^__jLTnrIojϕ+ѻ9fG'OTnπ7PJnj~Jnx-Uѣ_?0HPdtOnMUws*+SJgLL \J_\ EJ߻WONF"_2Qi'j>Tg׮׋ϩ4xʽ8{6 j6Siks}u5z:_J/.33ѻjLTnrmަF>GTm^I^ݻO?Rj6Si=zTb0~*gO~xn! |h|AtxIk&& +??PJwO 㗬O4u];=`dHF&7i\=^RilEd!mҴ%={w%;%?{\=`dHF&7>O]7FOTa._.I܋s^zHDLiْG{]7a̒UҥŸ}}=z:B JMn>-,4U5򙚊 4Ü=[5@4mpx0f*}dɟ>5`dHF&7Ďkj䳴6Qi9}$q?!h3 .]*|/,DO1KVJߏ 0\P$tOb6U5q#z7l sTIwC:B f*M|MӽØ%dɟ~znᒅ |릪F>ѻafْgnHGLigJSa2UzmO_]0\PtOVTgb&*0^TٳݐPJǏ֭0N*}F?>1zj|Tnrj~ѻU*@%{ݐPJ<0N*}|?>=`[B JMn>)_SMU|梧ëTVVJ732j6Sic7#ѻa2Uzi LG&7~sTtxJ3йs%;t(z7d$mҴǙ3%o׋c%x m)4R.WU*fGKwpnHLi.yσal2U…|y9z72 |RZXh|mtxJ3\IfgwCFB f*M{ll租dٳ%?rnme 5@>*M74?TU؈Ri:t$qѻ!#h3UK/GT'K~j|TnrIif\nB]2j6SiZKETJ~wl+SQi'njoѻa fʭFTVg|]7EOTɒj|Tnrg}O]7^tBjmr*c!mҴʿ0i*^wFOVPtO>}Tgz:z7 luA5@4m[%wߍ 㑦++%DEOVPtO>}Tر0JէTݐPJ6<槦wx3%tn 5@J*M7䳰Tԩ0Jՙ3%;q"z7$%mҴ͡C%y4z:AJ'N4U50J'TݐPJ6 %};z:AJ?{LN/FOIPdtO>33MU|n݊ 4[ݾ]RwCRB f*MܼYK׷nEOIPdtO>uTgu5z7 lVR׋ 5@4mIcc_~YSuqt5@V*M7}8Gؿ\+h m[jLBXȭH#A>H"!0L0s#Bξ:z<9s)ÇuglL:lERUŴ޽{CTy̏כWQ+qzr2C(#Riɧ0++ugr20J}Y꽡DB e*M-/YZCh=Pi43ӺӧS %j.Si:ٳ|37o^FJ//GL: 5@T~r)lBٿ?0J:zo(PtJMSS1gS V@{/:7zu!j4SwީCh=33T-ƴ{CTnx1=kWa 1yb") Siɧ0!WM*͖iL꽡DB e*M7}}{'OR#U@cݩN(JON>YXCh=T---Ŵn߾{CTnz8=Jar'uU#GR0C P6| sLBYZJ7 lie%u 5@45>?v,0RWƍիWN(JON>~\zo@Ç1zs3P2yҏF*JsY[K:pr5@T~r)rB{* U{R j.Si:czu+Y-n歷R0C P<| u{* {R j.Si:c|IatJ-ԫ -PO''œ8QzNL7 2;oN:H֕޷/ܙzo65@T~r)tB9u*0J3Hs"rLUz{(PtJe O#GR#u_{-=zo65@T~r)XBv-0J3wܸz{(PtJeͳ~;0 VA7}OIjzu@ycb̛o^ "]t\7Soۖi77뉉k;6o2izB'':UzR 4/uUtC)T|3^d/JߺymI:@K'T~r)|B뙝M7 Ҽ1k֭ԫC)T[X|73?z{؞L+}h}ԫizB'',.!{`*˭UsRj.SiΝېcsg/_N=@K9?T~r)uga!0Jfgc79zo(PtJ'rɓ?RoR|JXz_Ag4obo^ ]d'J+J?xUgfRo^v|J2?_z_Ag4jm-&},/^ ]da}Wr%7@*wo=s'ej^Qiɧ$utJ3c71zo(PtJ#Gb;h/JK }D+}OIΜCh=KKTa\S9?2&cc13;*sg };Q 5@ߨ4S+WZϥKTaSLH:OL_D_Zo2ӧwzs3D(=$z…N>8s|Qa0Q˗9j.Si>.h)J;762 5@4iر㕤R`[NCh=ͯOҮ]1|>?%]寿ꉉoh)Jy1덍(=ҤuҥWRHgmCh=ͯOҾ}1|1Ǐ멿$]d_UU߽*sg<>ېQzHIkuuuǎ$577_ŪjqbHSiRGSI4utV=H>HыCЀ4Ta ;^gֵޟ3e dz:EYdM:q"&kgǎp~c@ 5@T&ڷ/UpUz۶[矩WAB A*Mr;^q_>1?ͥ>a\ 녛7SFr4H~H}شUz8>zo4(t/6P{p*&=~΍"9Sijf&=@aTc{`4 5@4˧MCQTgS é4kWLOmgO(35zoNdr2&OwSBr4#/\H}؄TΝk89zo5%ݤt/6 EQyS é4[bJ~&'`<B 3ϗex YRWc\F֔PtJM|Zcy9E\zuNꫯBYF};a  g*M=z4ȑgiJWW.`dM 5@74˧5>,E,.^Si"ܺ22kg> dOr4ǿW) 5os:#kJI&_>13za0H: YZ S'wR'9Sin0;wƿz+`CMXw/#kJI&_>15ڕzoؐJǎń' 5@Ts'1_SkD"/`zu5"t/֘EQyM7lHsbڸvvH} țPLi#GǎkDz/zo:4"t/֘ EQyΜI7lHݥK1y\;ロ 1șJ > WV"ޞ=WC2|\(۩ 4v-eL$7g\ 5@T8y2=!Сԫ!PtJM|Zcf&EYL|L$tS#9SiZ_BYFƼT>u*ޝ9zu:j.SiɗOkLM<4uYY ;wtrLL'5@T6y|id䥻~=u?]t/֘EQyV9Sij71|bzpJ R!9SiѣP/uXu[^Tngφ+au۽;5<t/xP{ÆTzcL*:e^M}ȀPLi~7ae%`+}z]{75<t/8}:E噝M7lHݾ}16W>&9Siɑa0H}G敞e[e@{djSiɗOk;LM6Z KKI 5@Ty?Qϧ>#J:svJ7@}25@ǩ4˧5EQyR Ri˗c9lvN}HJrҴ҅ /^L}+=1sO7@}25@ǩ4˧5&&BQTO?M7lHyN^{-Rj4-[F}_}.ڥKO8|FY< 4rd6:{ șJVǠrÇ7kq194˧CQT^/ W 416o>$"9Si?jx×ey3I趜+1ת AsPiɗO;\ܙzoxZgYs~?y șJbG'r1WS PC JM|ܹPg{ó4ە+1|lS^8șJboﲬwoaVz0/sL:@ 5A*_>pD(sHYT/BYTt/L}x g*MݺUKSʶ~yNN:@ 5A*_>0;:zoxXZ SڵHrҴ޿ٯ6(꽡N_uYڵuCC~uଣ: Ծ DkBaCѤM'9m4ڛ If+=35ire6H7qrE<|}n*"}J!9힝ejJ#ׯVY?ϵOj Ti#/s磏 CQ~'Cg&'7B2*D,.Ci7AblVzm-#:{V7@&n>\`FM3MBjJ#Y/#@lF‚8y:GٔcBg7PeTh4ȑ_~ Rb!ؘZڧ 5%*4qiq.TвY\fS{`5XFOiodO?~8G!0jKTi#ΉsR>7vѣRi/ ˨4R"__i0Xj5wO0C xJ#M|q.,,hJCѯJ>pjJ#Aw VfSj?>= P^E&n>03#e>7euU{`5XF\ccڛ v*}vRhZH7q2իU!9^ ˨4T/esS{DZOX?>: P^E&n>p8y=>7U>=}jJ#Y~T~^2UdlLZ-ݳ 5`*4qqq.lokJÂ5>$=gcC{ W,H͛o^2U?݃ 5`*4qfS gϴCad`l4!`F_ ,-i/٩ w*Nݨ4G=B>:)3o B Qi`q17 c'Oj@7*4q_~2ѣ@a_ItIZ-}<jJW\>oxeyY{Ho.fgN E0j@OTi#7ns sҰf}]n?.ph,@G!G/"b>ZMP J#M|DĹ35}n`T}xʊ>jJ/<}ie U űj~4GĹShMLL{}C `^꼺;o\ =wUPJ#M|DZ2ٳ@aV%/<|PeTx}qi4A+}n01!vGBp*4qjU<PiRA5XF="p8y:G1.] pYZv[{ B Qi-)t^>T{8J :xNeTi#8y:G1vwCRsZM{%``,~67TRk/[ko>HiJ#M|Dyq.\}n`TCRߔJ0B QiOz^VVhRt-ox<)h9 QiΊsUs!oR{Y]^ ˨4p[xz_{ J?~~"O xNeTi#\yP4FH.އyΎV@?,@_WƆ25p!;V1@iJ#M|Dq.lmih>ԔJ@?, >8{^#E/ ;&9 Qis? Jc<̃M" 4dh.VT9zHu$j*b2Ng6qpSKmeo},gl'GQhi e"u10 I)-ꮨ޻7@2Z#,Kh8=KűCWLۘݙpV[kV_^+vVGݓowj p@)n~~ޘn^sTFKoMx7.$(OJKwuy_ǏT9 *Ml>#ie^܈Tp^a037ɶ~iRN}]ie磏dύjVӃᩅ'٭#vPSaV([ 3>nn.eLe39;_M15奥_˗e?xiP- enNoӞ<*(,ϳ j҈&6a'4#{nTՖaH S{:Ց|Aw+W{꒸2<,12Z(W22 qd s'AUxJO*҈&6a.4촴Ȟ!w{mψ]kƌФ/U?n;9wwdMM^{cRcu8@e4ukOnI mX]t"iP-hbvBNcZ>[f~|R"=®EhZq+ KN]cb/u4Q>KuDؘ6Zؼ~Sُblk<Ν 9 *Ml>n.ieg^s#$5cFRc\Xx^ :e"%u 8@e4iQ[f>aYeҭs8@e4G8 4|칡?/ 3Iu&m+Wk ݼ饽7Q~ sTFK~۷ej󸮺.+7sTFK#|B칡돖X1$njzVTݻ~ sTFK>Çe~d G|EP2Z#Vvffd Ueך1$%RrkE?ܜu/1}}Ҁ|Չ#Gm~ ϝ|S 8@e4Gص M+;ʞJ:}{0c;J/eVɤu/5^CFGe?Q9 *uï?;:ijghQ[q9[ZTb( iP-hbvд칡VT0ɛdKojTEE{ C{u17'1$iP- T{x2"0-Ɉfk9:D22Z#4K2sC%Go, xN=]3"Ħ^*}cz{e9 */*UPZqZ#G|ŠsTFK#|ÇB·ʞjx\c1qTs5b*nv 3L%׬Lᅯ{ϭdi^$==qd?9 *J;އ$'NpGEZ:aq 8@e4Gݾ-4'{n( q?_kƌ RwjNwd:W#JS-΃k*w߾9_d;vEBl*~67qaPyL+c#bc38i&t`R`O'. LDV,Y֩-Җ=ǗnyϞ3+.n'FH}t{]::D:z4i- ͶE"!a{RIl-mY4N)gchN|А0 ٻW]^_,_̑V-K}wkgrێeJʝd A3xM7&.MutFKHi_MOfU{}{𡔳@Nhi(088x$X|W_0 V}nSTf^R6쪜;OSw.Z31ݧW9uS1Mqau@0.]iÿ'-]*Ixx: :–-[P_5$0]Jl,e_m=$[q~ i- FFFPM5) qU*|u(KYғ<2X~R(WOϾsve٭þ܃q:_ߔ~i]]nJ1ozD?$@g4E2)gâXT=|  O/m>Q.{?D4茖Z [lyC~8{0 I$Tz,eIOe_O~RT#w Y?Q̵JRB"wrE0.~Hhi xo]& m|kkKKR`PnaaappHZ[[y={a8NOs#XV:dR2cd.?.pxlqٗ-R/Ev\^WOcT$茖(k}bbBض ܖd: :ќx8s%1s+k>7ZޒӴ YGo|'n1: :D"!g5|TlDbK۶ع5D 4茖Fs#a8s#@_Tb)KVZRw A?Ȗ.lT?r}eбmHiƌQ: :J%4NT$_Tg(e: :ќxa8s#@&%%2O|K6sEc$#ޜ&>&E4~cffTaҀ,uW=<|HutFK9j0}FPR %%}V ;_Ⱥ@ygeؼߕ+4t~]j25zD 4茖4Q[½/[۶~+8D 4茖Fs#:;a8Ғs#?*oY *BmK7?"]dk:8{Q xjhkfFگKCNR= "utFKץSܻz6%<$Q: :ќx5pR}nϮRǘ2x^V8-tLJL:\;١tZ$.˿.33ATPhk%z<8'>ur;D 4茖Fs#J%anb۪RAiJ[uC+WcbjJ0}Јtˉ> |cq1=z<8$?'O: :ќx/8۶>7wh6KY]U=v-](W\zs"KvΓew-|8sF$?݊*ZP,_>p`Q: :ќxgτa8Nwsgw 1zѹ O?kr~~?%a۫SX򒏾ZU=τ ?'yvJEPu7_ŵkAhҀΝ)gKcϞU=/->: :ќx^aѡg-)+!;gvU?ޖǍe/'Ɍ)j$n ~1/ޢf@K{X$Ҷ|OWT{) d1 2 :2E։Ki# T&TT@YBY:vm8;㳋&>s/}~ߜ~= VWeOnbQttws1i2Z͇::axN[FcX$w"{Tokes0\\TXY=1mqQA}=zQhi@H&Y7S[ҟ~V 4n& 4D-xC]mm0,l[̱}Kg2{a)#X hi7Jax)衼VkD:W=Ǯ-'lt\Ȟs挟wD}= "/E ꢥm:%L3%MFGe۴DgFN@҈'n>ԕN SC˄e΁jM .ĤeW|u˾2S=+MLySlW_ɞEҀND*†2οhZ0rQ(H: QFK#PW:- sOA-%,_^ʞX?W>VjMh{Dkś1MNCKVA7|O=6m_ /]:$uFԕN SǕeKsُAl[ZW[};'_,p0M? = ")E J]MOd2%eÇgц^XX_w|c(O|+9ΧL>a>\i]{@KǽcZ,w˲GD3>Q/a15D- h3JI2)iQ[/o_B?qX hi7:yRXF`%,_z)񽡥_{[M}="nd[>{9 J(j2Z[*Ϊ&b~^y{zfB<)V9#{<P4D-xC]0<e?7X>a>1d?GΔA?GcZ,OW5<⨏i) 2(j2Zg_衬. RIZ_K_C<.@ e4≛uuv SP[e˥Td?g' I* *;cbjJ<bbqQLk0P=^oֹ$bdDT]N@҈'n>! sOA]ŵwO O~Zɞ3ZzScK-VM1] L>y5D- ʃ'm}wȞ\Y;\,GN@҈'n>Եw0 q>ul!a3KZz+O k{ƲÎI}ɮɞ 1>iD {FQ@@ mwNaY"=RnOGN@҈'n>Ե0 Id?7*Xvo/ɞZz՚8ze1-'w^ʞa:8u*Q@׀B( $F+N2 %k'㐘%#N|?_߀s<5d$R,jU,j34M٬ZW./ iv?-[4[q=*8}}uŘv&ۺp6#+hi/H>-vKâ0cKQV(Jsim?1"d._x9R-ۋ4[q?.8k Sgco bKWWMI6M?vob#R.k=,j34uܺ%|JK=*kRIZ,vcV: aƖF41h\}$8j SObod&X.[B]^&dRfavuq]OɦxQ(aQ@o`>Kdn';޺N@ML>W*%8ucos]9tn.:É  N@ML>׃8٩]7L^y~ήִk7ǖdljI%9b#ʺsG\䃲iAݱ }0K<.rℌK>}(6r24$lVs|YOfliD5;+8u;21,k^tP FKPϞI{7͸RXfli[6;o+~>#xYxQ[ fliDƕˉ㘤P.+}(DbJ=@dp0cK#|4fqIFpn/E{އ; 4[䣡ԔvEK1/pk^-t]e gۜjQ9Ȉtuɏ?jcQ@TXS,dצ9ٻǦv1\ ҈&& !qwOnd.Ii^-^6ж_~ziTn Ģ0cKjrR\ڋVNOO&TJ::tN`G}[ N@ML>Z"!8|]7(<,.Zli[~ʭvR82dR.2=jE aƖ``nNum> Y$uK :ԔZ{8Ntvj׍ ~ww1iJkW-] _>Y15e߾ 6HW\\W&'B  T(ȧn\-> gϥT c6+ɑ#-ɻn$﫥E߯ i34GC۳G'pȁƂvkvE"/gU`M.'v|huevV+Ƣ0cKbnNٸ[|(EvvJO<(>,r<{&:*ejJIO9~|EuŒ-hbqg^D䟋%-`Ktm&/svgcq]oMJbQ@X~6z&ym?)'А 7fliD'8i׍ Zc4-e -]kh0` ڝ1q]M9bQ@ÇHX~&Sff`q0cK#|4dR'pҮ+TYFqHE:c -ZMJ'S HUrvYWWv>{|?{2狼K'CLΙ9҈'.v(8FNޜKF~zhzpkc"mjJ fsnۇs _LZzͤNJV3~P2B32ݩǑMoP`3ZAKo>"A::dxX&&hiE 6O\>"PtGGfJ o{jzk_KM'tNfZ&g˦C8.\_KMoP`3Zq r|lS"rٲE>T~Q|84X҈'.QN sgp=ܚ7={hh5-gszW3CwC8=vP<~lz+袨f4J26&CC34X҈'.Q,JԔQ,$\/h6CCK1xYj_T^?sI2 Z5mm.lFKV.'6{Ç#`9lFK#|DݢTܿoznaP.zA}8gz0ҦLΖFX3ˇ q M-5،`|^ YaC6oӧ%>- f4GԽ(8LΖfL&Zڬ%5;saX0BP*ɇ|V}E 6DB>/o!HlYn]߯wqZ,GQhi;tH WMύZ/$\O#n͙=Lquw5Lh|JA5،!Ţ|8Nh5KG\,BiiE 6O\>E9vܨjb%2+?L%-jd:hАhմ}P7lFKlVd2KMg|/ZZ,GQhiܨ '=19[y^2kw/%+Q:ULW_f4}#Gd^ٹS6m Jv>ktMZ,GQhig]-$\O#-grg-mO+ YXTJ竴jGM:P`3Z15%##olڣC-7n- f4GԵRJU:?p=}!-ݣ 'z'Z=M'ٲАLFIS=*oz+TEQhi  ben핃aIX yZ,GQhi۹S Tܨid֜CFKnf~㩬ޕVϖ\dz?45qoSJ&cz+TFQhiX$r<(.ɤc}tuɑ#+?hiE 6O\>G s OOM2ZZ&6jCFGuMULJ:mz+T@Qhiqɬe>듞֕7ŋ ǑTJ;wX40-- f4GԽ(8==FU@6zANgM>Zfw3Թ՚9ysrhR:_*YX0^@QhiLFi9zTygqqʳ,Z,GQhiܨ,W\LFᣥ-w&sOCt>RUJÇf4،Q`3Z#ng.s[ xlz;3gcezZIT8Ӧf4،Q`3Z#Eii1=7*SL^l=t;%Ǥ0T)Mץe{˃߷|bHz|@3Z4@94O\>2`vkLLOKύW9qC_gO-ݾKn%Ͱ!##.oV|ҋE - Q-|~hI+Wƫ:W0i~z4VGO-&͟V:&'z9q}+>;vع9rhiЌ(jЌF>qȀ>kL9"=7^xA4[NTO -ꁿ-8vLV7)[,<^}[*I?5hFKf4(GQf4G5&qKW tHi3cyBP)M7ׂYuڔJһ E - Q- qryppG$N맠͹^:d%'Yrcr^Cz-7ŋһ E - Q- Yrc~?1)hדҳOd9Zz)ԃқaCFG##ҋE - Q- qryppG$NOxO*^&ح)Lm_ʭg]C }EgZبG]:%U@3Z4@94O\>8Iύ5/,xA4;K:Z:},$(s~Sz-lի]Jo(jЌhiPhil$Ξ=sc LOI:Z:ϾyVJ]ĦrvCz-l]^m[34@3Z@3Z#1{X3IuSGK߿{Z8|1*N]h}[/[-4@3Z@3Z#>8sc͟>{aDz8suZبYe{m.X@3Z4@94O\>a`8| =7ʂI)SGK4(o$&g5F-/ۃ]_zvCQf4hFKr5hFK#|dÞ=֘ٶMzn鿰aI:Z5SILo.I10&ŢQ$X@3Z4@94O\>a>kL6G̼IrQz_~X:cY/fn8c͝%4*yr#*c@J@Pe4te"BǏo-6;^f~{;s{w;!׮8y3k<^7hiЌ(jЌF8(jgϤG+DIs3҃w-=K ܬolmK755e+ϧ]NLH/[@Qf4hFKr5hFK#L|‚5'ccң=Q8Z#6޳g5l8ҋGQf4hFKr5hFK#L|[oYc30 =7^Y5[҃w-vj goMt%W4w›ܴCC>avӍhiЌ(jЌF8(}1ToEI]痤/- /NF)rpσJj[)FQf4hFKr5hFK#L|gYc+=75$uEȝ_HT6}vKoE - Q-0qQT*Ւ=xGFIwF/-_51A58Nk>bFzzl&J5hFKf4(GQf4Gi,,Xc|27'=zzW$uE:n=D=;!ժ.J4@3Z@3ZaLv8E鹃(I];,=xhi٦=j˵N6}njJo E - Q-0qQ&}}?.=w]Y5'W/-71J!r0>8f$ɓ[iBQf4hFKr5hFK#L||;q%kzkUz"prQq 靐+Wld`cǤ{QLCz"puF,zܩv)r0?o|^Ɍ|mĿhiЌ(jЌF8(aksN;x5$u͹E6FTFk]z'cbV*>oek>JE - Q-0qQ&pŝS5_|S4<]%. xؾs.br(jЌhiPhi28q鹃?֢$uW҃jX[-ra?vnNz1!5hFKf4(GQf4G|59GJ#W$uW҃:;qO?<ߔ y4o+E - Q-0qQ&NYcZJz"xs7hJڞ4#ql<^(5hFKf4(GQf4Geqܜa}#JR|%=xhi䨶}eꃦZAf+4#omu AQf4hFKr5hFK#L|޽猎JQLCz".떑t~eKz-]4;GM:hiЌ(jЌF8(19qBz ~S5nI^Z\kzܸ\Xږ^ 9yC34d[-:hiЌ(jЌF8(C1Cv`r%JR׼E MKk;!6}^Ҍ>-UQ- E '%oqH=cQf+@KCn=w9ݺNK={ҋu E - Q-0qQ2[csa3%kv4:gbq2ܭK|T>iv^*XgP- E '%34dqξ}smJy@K;-鵐yf$_VE J8gN{&7ȒBZkl 4#%.mRaMDxscn.M9;-,{g{<~us>ЌhiPhi8gxXznoDI-@K- tA[z-cv<9j4@3Z@3Zab=8gpvң%k҃F fl L:?Hbdh~b@3Z4@94&N>1ιzUz]؈5gnoH^Ze7|/ByĄޖ^Q- E '|;u+JRd_I^Z%gcgxzJ̧w^vwWBq?>lNbhiЌ(jЌF8߷8Ivzɾ 4|V̩VCP7lgz㜋X}i3JRL-/- Y[-3[ 0ݮ=yv}]z1w5hFKf4(GQf4GXc})W$uMe!kKk7_qsء!77'cc?vo@3Z4@94&N>^8V_jGI m@KCܓ}7_ӟwBa~Of]\P- E 's59'=wj7$uZ҃;_ޘj4^I\ϤrAQf4hFKr5hFK#L|Tϑ#d_A\3JR׌\kJ^ZJ?DI̡fggWz'%>oNFFl!oCQf4hFKr5hFK#L|Td_A[_5W҃?nt8=sjݕ^ Y]c o ҋ5hFKf4(GQf4GXc})o}"JRd_I^Z/lJ/5vlƱC3ٯ_(jЌhiPhi9qcǤؑf֔ 42t# vy{&+墨@3Z4@94&N>^8gjJznoDI-@KC}w6'bŎZ(ҳgvt9ÇEQf4hFKr5hFK#L|Ť59WR_ڌ5Sm@KCGk;5/lI"u:}^IJE - Q-0qQ=33d_Aʕ{(I]}%=xhiz5wk`6}_V>P- E 's59/KR;JR\XlK^Zmwwou8׮I(jЌhiPhiks;`GoGI+@Kcv"L5ܖ^ ޶G<=vvVz@3Z4@94&N>O19rDz%k/-=ܝw9'Iz-Pu{3c~AQf4hFKr5hFK#L|Tܜ59sF9s%=xhi-7[9?]H¬8y{a}~AQf4hFKr5hFK#L|Tϳ[M]w(tMPT~@J[FQiڅtuUd thAXv8'[:w=>OoF|eqٔW \3ܐhi/[71ntD?=ݖ YX\z,.JCQn4hFKr5hFKO|d59s*5҃-}r _qr?/7Cb<{![ CQf4hFKr5hFKO|dȈ59ܾS=#|!=x/؏Yىqv%<ֻs.5hFKf4(GQf4G&59Ia䚓׫҃-}ڏ{>X7[ҋ!9KKq=s"5hFKf4(GQf4G&=jqܾ:jF[hi_jwOxwSz-$iarqW20`Yl 4@3Z@3Z~#8D\]5W֥ZZsꃆZHj 5hFKf4(GQf4G&=kqΙ3s7 \sˊ@K#j#Wݯy̮4wBj\"0?E - Q- ?qI/Zc3>.=40r@K#3Jю\qG !Ivb"Jr9a@3Z4@94'N>2X8PW70r@"=x/ȒS71_ܐ^ |[=hiЌ(jЌ8Ȥ9ks_AʯsﴤO-n.|};!Iq^Jf@3Z4@94'N>2X8PcGV0rͣ;҃F&}׫O5B}7#;nm3AQf4hFKr5hFKC\T9Ȟ)ks.^c'W0rMSdU~#ƭ3 酐zy}$݁)jЌhiPhi*J}}}DId59 \3XA]qwgw6-靐۷㝒م@3Z4@94!kvv!޳8q##ל&=x}lwS(TV+;!qNRZR- E ҐU*78Wrᇍ \Jzí׿S-靐z:5\>yʨ5hFKf4(GQf4ĕJ{kpp왚8grRzn],#LݪK:~%NtW;!7oyͻShiЌ(jЌ8ȤbBAzn}qkXٔkՌs9to?/{Bz-$=;2|iP- E '47gqN+H)oaW҃i8Y كc)$Y kW픪i(Ƀ6u $v)%EːX'UUJ7eQ7+(gwڤe1KGonQi`~\f"vJqcT*?ӻqcjJdT# HlV+eL=6:W t#냷b?*XT:1(ɓ6T@@2* QiPdT~#^J\cWfArT=Pٝ1hOߞ^5E@2* jJO|$һj L[JO2[hE{PqLhƆNl[%WW@@2* QiPdT~#yG+eSpt\4=w&ScYomХRzz 5HF@2* jJO|$ŋZ)ş+o t\4Os5b٭BSHR6]UN@2* QiPdT~#^Jop=ve.l>xQijgڸuF>qXhͿZˍ4ɨ4HF@8B QiDfRd\cs[An8Wr}s6Ѩ0-U]?24d߿^% ɨ4G@2* ?qH٬Vxs{ltFr%o9* jwOnэ:;rKUO{66]B QiJp$7442s{엳 Lwif[J,mtQ'Qn`ZfQB QiJp$7Z)ş+N02ݫw rTo騿t[~2#Jټ "ɨ4HF@8B QiD:^+eSp̝ L[JMlQ鿖]? TM`/Y\<5HF@2* jJO|$ٳZ)>~r{=#ӝ-G#wNݲiH]-~2y8_֥E@2* QiPdT~#ΝJ7]cg׃02]o9* 4a}s͢$uvBeg~%};uJ!B QiJp$7ק2s{d!#Ӆ_m>xQiȟ~!nѓZ;ycm'{ V+RzbjJdT# H>t}n_t-G j")u7vXڼ܇$ 5HF'n>K+eJ=֙adΞ냷vbQ[x`ct_? 5HF@2* jJO|$Vx/~<@k/[ȝ(rp0czppawO@2* QiPdT~#yRu}n}vN^w}v@3>_0ˑ7~8Y^֩T̈́$ 5HF'n>5\c/adމ냷ߪ?ظ0,ǒ뇃 7Z kkZB QiJp$7sVx.>. tSo* 4oae[ -:sf~8t%uw녅'ɨ4HF@8B QiJ\cf602/7]4p,Vp"5י疪*cpR)=>N@4* QiPdT~#y_Jе?<t_gtT+e\)#}냷lѢ9Jq!++慡֞}P@NdT# ƿحި+_*oX4gP)M,"S! :iZB!TQ8`sE1q6Q7Hș3ٝV {gzޞG+L|59{HjQf|Mz,ʻe! ʦM_=(jІs4@94&^>gNks:_Aʎj|%=xhi<ogV[zEoffxP|5h9 E /gqN+H靨DIꚧW- <:RkǔOl$?+}^iJUڿTz!wpNf4(GQf4G[c R/GIU@Kr3UZ7$=a}i-"7:s<ܛ͛oK/iЌ(jЌFxȟAksXD%JRE@KۗU.Z7?|tb&"gv6+qlgf4hFKr5hFK#L|Ȉ59GJg&+Qʿ҃g?zHɮ3[xZsEt%Ss4@94&^>grW3T5wm@Kkگ(sK+a k>DW~2iЍ(jЌFxȟcǬ1;T(I]S.KZ=C%vHUnH9rk8@7Z@3Za#8!C5=%kz'*҃g\]h%H Izbn-%hh1ksƤ(I]3zyIzҀ O}k׮89-ie <- Q-0?tQfҲU./Gk98Rw7v9-Mso@8@3Z@3Za#FF1;T.֣$umn֚_X^^^Ub纸7qloܐB9 E /38hqΞ=sjZ8_<#4Pm=5OItwwuqK/!hiPhiٹWܩj?Y<#4 9חGܬ5ׅqscܛO9 E /gqN+蛪DIꚾ3BKK]gsM/疤ׅ}nsfteV[I/ahiPhi8DDIS3BKUWs꥛V[z-,84Kқ@8@3Z@3Za#1;T}S(I]j;iNgd㜣GOQK҃g/ꭟWgrW3T5,7- < =Rzt&wX>>'GWNOK/9 E /31aqsia%k Ci-=zVhi1u|vQqI_X]Y^= vV+qloܐ^rs4@94&^>71y 鹃tJ2Z<;4XVcdţGJ/~^iJymã+қ@NqNحߨ3T[RјViJuPL{L2k9B F@I6XP",)]eOWBB[7Y8xw`83ѭf4X/ٴ)VJ;KBF_O- 8g ꮚ,;pc\^X[1!'NhiE 6'^>++Ҋ tɡ7+m ¬AUib0z_\V.n{LHKK\,J: 6r5،xp֭RYTzn/9H7kO- JAUEoE]W1!{H: 6r5،xpñRYPzn/m H7寤O- 9WeKAzʔ_Ξ]0@*Jŗ/K: 6r5،xpϭ[RyU鹽竻A&<3,=xrhiIwJ>+`[//)gl K : 6r5،xpRccvFFBFɂɡ26kw̢֠*JE+9 dBn>8ulFK(j- ?t:VJ;Kퟷ0ɡ6bPէ#{ʘQY6OL >ulFK(j- ?ᤅ c&=ZH7ˏO- 8o݉A>x$}ބS)=2+}0p4،Q`3Z~IJiץ= t;/=xrhi?IVe'NLV44gɏulFK(j- ? bNKbF =94 F:bi82^,I_äE}zlTf ٓ Xf4X/NZ$VJ;寐sA;gO- xZHaߝYMʨm.IElT&:8ulFK(j- ?ᤵkcs{fuO.#Kң'T.c[;UYe8pnZ(} #82IUXi- f4ˇs{f\FEK+c[RYe@x}kڣz2O : 6r5،xpJi;ndPzD(3ߍ`~sV>i= KϞ(Zc/w1*3{Ovco*\dE 98ulFK(j- ?᤮X)tvJGsA楽YFK037?4hǕ7nאݢ^dK̜9p'NhiE 6'^>;RټYznaJ4Zb)nԤlWl#uũɢR?Ldi- f4ˇ֮Κ5sdco!#ݔt+3{וhgUM0M(/έ>lvz3p4،Q`3Z~IR 'gA擻 Ӄо۵ ,hnR=UxQ^3:E]ι7;8slFK(j- ?Çi oa֯L6Z@"^X5U(wtŪ/<ŲAǝ[ 9 6r5،xpB9əFF9}azo*hp"Xʺ鏑v۫sl޽ά`9lFKO|81)r>WAĭEӃ!jo/4ڸqpr6i3$͢K-݉)`3Z,GQhi'K!36fznQ H5_W0RM6_5=xhi)+6Gn?=a\PHQg:fNHv!p 4،Q`3Z~IR~Լwj\-tB9'#jF櫦O-  xZgRLOsnzyYf2:V>Pq 8f4X/N|Y }LW0R͑keӃ`O?V63}h?">p@ٞGpNhiE 6'^> PNocӣ{#a#*O- NՍٚF0pKu2=fi- f4ˇ|S 'OL+ T3\5:*PȈjFddzphi]ѫ5IAU?]~^YK‚ܳG޽'9 6r5،xpH!Rpn=#lq}~%WJOO֟Ks7^f+݄slFK(j- ?q)rLcU0R; %Ӄ@Kp5(%sԖtQON4ۓș9 6r5،xpԔB9gϚC+Aʦ7z],{:.8}}:WO|4`3Z,GQhiWMLH!Rp T?]6=4'Exr4(eJk%~Tf2: tb44nDua3dg_mZ&t4zY"oܦUiZqcZev3|9;Ʉ`90=W_/<ЌjЌF8Ȫ'1?\+EqW2l૥^Ym6&xNf4(Pf4GVoj嗦uxNf4(Pf4Gkq΅ ҽp|'~%]\+ LK7E#@a2USvM-/7 s4c@94c&N>2㜓'{B'9us^V@~qY4];߭Tϔ: y^zV*XiPXi 8Sw[5&B}X CwZIl.y:<@3Vc@3Va#ú19qBw'Qtq4qe4?Y~C;yFFҩ xNf4(Pf4G}59gHd9T..-Fqh$bi#2cǤ{r'(KJ@Mqٟn(x\"'NjVC{>OZFF, 2xNf4(Pf4GuvZcҽs{!ל ]\+ /z/y\%u\^;k|:r xNf4(Pf4Guw[cwTgGqW>ѬDžR'mxͩP6yve%6+ 1+0qa##LOKWϺR'^..:V^SOJdQN-==)WTXiPXi 9Yh1T..twzqIKrej_kS`ʭ =<@3Vc@3Va#8[wֵ8q́ЈR?WŇz|絳)44Vc@3Va#xNY1V5{ Рgv<:iO~(>)~*KJJr 5hJ#L|dۻZc%;?#IwO+ ̯~KsTPW*ͳ16Ma[a@94c&N>ӧ{gȃr'$=m48'~WLt1gT4`Vc@3Va#:;1Ω~f{z11/]z3EgeGLolA#==- 4GQf4t{]ksyGz 8|DkWO- khǾ{Ԕ_Ϫ-yu"H5sO.tRKKz5hFK#H1Y Dk='+A浑(=zhih]Q?>Pk۶ynDl`^X@3Z@3ZG;gə3ң\W\=Q4U|{2cJqύEr9w- Q-l#J%<(=z=ԃ(HgO- v~ORL?|&}j5u)K;ŋ'G- Q-l#6m8gn3AfdEzDwk?wZ%ӴoFԔ0'- Q-l#1;~}DkNO- 3WeK8وV& ҇: E &n>R1پ]z Q9b}\J qls5Zm,}x - Q-l#j5kOffGO7AfzUzD.<Yzڵk6 => iЌ(jЌF6q7ZcsiDkz/O- "닿N-Ϸsv C)NIiЌ(jЌF6q]]|iwDkO- S"ޟ>nݲςԔ+WO4hFKr5hFK#Ȃ^ks;'+A浑(=zhi5tZjzvvHOchiPhid7Ykqi7:5DG+-HϞZdm~`5wϤ۷mgϚ u4@94!P( |>GXcsiR#gO F֏^MϦ : E ҐU(:::։8g+/Q+~TxO7}6!} hu4@94!ĉm޼Yoڢ㜥n[NjArYz䰟h^ksv풞;~jŮy|Iz䰟N=ެ=QZٗQ3 - Q- qBaxxdyn>nFu]af}~JgHUqbƉRRDHT)jAb.UiZCRc&w&΁toiV?=oto\t퓞ۀ3fͶu (e1*tKzfش)ddPkwqNf4(GQf4lχ碳iYc?I~hiPq%*M%b-P?N9s]- Q- a32"= |G_|Ǟ374;'۔ۻ7jd` ,[yohiPhiğ ǃsٻWznWry - z6X||,PPNЅs4@94a>,z58!mB{Xz@K*.=[Ԃ6妦Br;u2>.|s4@94a>, Eg`@znF5'dr%=z@~x?ZJokKoSRnNp- Q- aAKIQHnr.4g_4(tkM6;6ΜI>!#g_4ϖ*csiOXwIseK$ 4FKr5hFK&|qcp.:oKm'dy- jM.oK{ź3y%JcRΧj;0s4@94a>ؽ;8ץ6`sYcx]z@KfWxI% UJ,.j5d[`4hFKr5hFK&|\(= CYcS}"=z;?Dbk冇S. %59 E Ұ?FRp.:o-= wEng9Z[-&!{ҫ><|՝C`4hFKr5hFK&|gOp.:s?QrZ҃- =) Yw^<^^)GԚLLH*iЌ(jЌM0b\tv쐞یSYcsbSz𞣥@NQd;֒ަD&LhiPhiğ#l Egfjd {庋z%|98乣sYcsE{J'ޒiRnLLHiЌ(jЌM0ƍ\td6>6;&҃- ʕv%Q[3dW+5;RΪNFFw` 4hFKr5hFK&|13ή]s[l#}l6z=DKrO+_Nyּq_4.j5z^;0s4@94a>>8~-yR3}B&=hiPiEXʻ֝ѩfrTe'H/ iЌ(jЌM0 Υ(G7g'dk^HO34(^L{:ރR=ۉj- Q- as)ץ6X , ղBKr.ꭵ7>jx?Zs4@94a>E-?rݧҳ - =g c)O['?;^Y-/'W9|Xzz6pNf4(GQf4lχvsܖY2^'hiPÛK79X.>sWWVC&==8@3Z@3Z6ÎW^ EgzZzncmdO[?m]gkR` -ђ6ҪTmꅙT e MDUjuhQ"ȗ^qϐ, ~>><_jyyjgZ;HQ_{M5!v@}}k'v- Q-0#oiɜ9sQԲ;Xԓ_Ue\3B0W; ɉv- Q-0#nɜw=w`[&QdM.NJ۾w^ԿW14dɜasl9A~U={4(wLǯ-޸frjzhD%WnNwн8@3Z@3ZaG81+ԣ8d߳GKrzi5=6.yZsvt(epjewХ8@3Z@3ZaG81+a8$'K@EۿɞǵCX%WVk ;R- Q-0#/lɜAsL8WV|- e-FggWaKSK^@7hiPhi/8{9N;HfKQRo5|- kgyIuC{wړYk:- Q-0#.Xc2|\D}- >s\2yDrhMtiЌ(jЌF 1s﹃Tj$|._S=s͘BjYHn=Ϟ@hiPhi/x-kL>{P]D߳DKrNq3ךW:ZVI"gl&4hFKr5hFK#L|5&sN=wV(NyPLwE벗%ťմs |ڟJ&4hFKr5hFK#L|_[c2gh;w5ATR߳;CKr빸({v}C{]by՚B4hFKr5hFK#L|ǣG֘=wk۹8gw,꧕ec̍okث7n|^rw534{݂s4@94&|\HR=`}V8ɚ+^=34(~Q ;z,xv^m==k7 w8@3Z@3ZaGPz{1/QdMբ@9'E]hBQW.ĭ[Q - Q-0#('NXc2ga8-߳AKr75ٓ}6{INfs4@94&|kLܻ{Fq"+gw\uu|A5VjKS{jff8iЌ(jЌF3g1;[~IO ߳;@Krk'5TZmZ͉zJffg}(hiPhi/Ad6/vc=#s4@94&|9ۥO+Q2vgۢ~NY&'3Xw+/Jnf^y,iЌ(jЌF>kL;l֘=w?,Eq"jgo- u>"{3%'83 88@3Z@3ZaGP^dN{Fq"[%߳:Q/oDߞJdj6\byE{G4hFKr5hFK#L|5&sv~d1yn6|ZPQ) _\Ծ1%̗_^9 E _>2=mɜ_[?qW̻4HԵ[rU7`DJ*Դ \6&d5#7#b`;FB,Lj1pg͞zHwśQl=rgaSz]]91^|U#Z㳌5{p Nf4(GQf4GP9W7F[pYz'_{}2 ǰ2HoTahiPhi$3&sү nck'WQ9V@#-k+]^_k˯v6ݺ峏58nX@3Z@3Za#(Iɜ+hpZ9G[- uQ?,m\.+~+Y#nIOXahiPhi$3&sү6zhiPE]^Q{/`8ug+k蠟p|Nf4(GQf4GP9WРGQlb-x@u#zD9^zz4hFKr5hFK#L|%I1~%oD?7gDKr,?~;jG:^&leI1: E 7AtdĄףzhiPEe0/zëɓ>Y#neE iЌ(jЌF3&sO.WQ{@WK5w6zûxg1k4bhiPhi\ɜ~r[rTߑ>;Z|Q,=ir;ځ!cfg1kͥK^>X@3Z@3Za#(g8c2OznQlO?3Z|Q]~ t?_v`ml|g7kȈ1: E 7Ay gL_A{mFOr]\ْ>A64(TsϧjF=лf2:*} Nf4(GQf4GP1sxޅ(~93,=~64('ROa#]fg݇g=ە$> X@3Z@3Za#(Θϻ:Wb{'ȀDڮs\lέwf}|}6֤xP$TbhiPhi ;c2ghHzn$ΘI6vUQ왟㕺!|M-wr==yy=51: E 7AIgL_Aݵ('8Z-S|X/}>Z3g4hFKr5hFK#L|%I1~NMzg⋊ FKrEm깂SLr}óa|gUkץ@iЌ(jЌFJ8c2' :}mۧץqZ/6|Fؘ϶H>J%PF@94&n>$ΘIZ;gOpZPWy Ki#2.CC> [#ׯKO@ - xZ@3Za#(Iɜ+e]y%}X*y\j5wΖYWK&JZ'Z@3Za#(Iɜ+hvz[])I`?4(gUNJimMMKK>;[#| ==M4E4(GQf4GP&'131!=7ۙr[nHhiPNUQ=u?i~1,{YnfFzzjji.4(GQf4GP134$=7Rl\Qw>.KhiPN[Q>vob5C<7.Ҥ~蠭hiPhiCg8qp :c2g`@znQl+[' (,Tgb!y-蠰M4~d~{:(^s܍i֦12 C#PY0 "m)DhӀP-ܻͮw+My {0OJgVW 5hF!P(ttt588(7Wo5&x ?7ʼn읚>>tzڒؚ}Selv5Ţ(MT#zzzzUkLٽ[zo<(Ngie]OZ˓,buUZΝ.9{VYi&* jЌJCVP!jppPo_ƤݻSy)ݍ?PNm|'7lx}9"=V`4G@3* qBadd7͗p XcROxjc*QͮS% (9杯=ot9P@sT#FQkLٿ_zo<\D33&}P{|-bhJ|֚N[J4͕PiPPfTaGPnݲƤߖi^m޽ QiPNy;_7Haܹ#=i+ ͨ4ė ֘'7Ҙ]GI;^>P?\\_eIz ]p9~\z{ҔWG@9B Qi/AIkL)MܮDq6*MJrC}NN|beUŝW6wyŵy_i5hF&|ZƸL&:Rz|'nsOKJr^gv'_r'~+5E XT#F.kLyHzo\ynUO_T"7:߉nYz w<6I/* ͨ4ėYcRO 7;ty!9 6PiPΗPw(]_ mf\^q30 }B|4Jr4_>B5&H[$L[>| B읜^C+nk@/0QiPPfTaGhƤ+Wӥ(N''G/]r'~*}{+nkƤ@/0QiPPfTaGh1Oo82=gJG/n4mDB|byy]_|ۚ]l!{|4Jr4_>Bs5& I '\\$ˌܬJrK,ީrܿZCnkΞ\ * ͨ4ė8`I=_SQd⏥T(Sw3މG,6GtvBArQ @T#F޲Ƥ֯੤xi4Lʩb)?< ue[ۯ+G[nkl*xQ @T#F7ߴƤ֯+ע88_]YJr~w͊-}\@Ui 5hF&|f^kLi ^;m5snͩ4(WJѬbk.|,x˗]sI_PiPPfTaGhƤFf߮FqerqRkSiPλPO[x!n܉Ň vymM>o\@xWi 5hF&|fhz?/EqevMvL@9C}N5ؚ=ʂGXZrym>>VA@9B Qi/kLZ=Q$||u;SiPP+g[S6{.37'>6* jЌJ#L|֘31!7 \Dffm SiPP.6rqѣ Nw֌ M<4Jr4_>B39iI=_19S$㜿[m϶T7G-mk${)w ɮ4Jr4_>B39iI=_EڙR'+mXJr^zJ0'u#|ns@;x]ixQiPPfTaGh&'1+Hf$3M.NsyJ@9C=r6Dzjv]kewW^lT#a(0{fCEPb|Mm%HTIJ암B?F@SHiҢǒw|wr^u!J3_X=3 + ?qjU+: _v(ΘR/ړzd|qkg;: Mx,/p48j8MJWpOAgυ/ŕd@8z'oލ\7.7/v˯04y v(K+ a@8$c'N>|3:J#GlF?nQ=,-Jp. u;T67='&Ly{PVJp 5HJO|fxX+:%=\=vw+b4P|a|^\n-3o/٭48j8͑#ZtK8şʫ+ 96ԭSn_]nخ2y 21a=8Vc@2V~7ZO­NSʍv.Xiν mwgϚ9tv{po%4Pd4ɇo&'R31a7ۛrD9$}XiνnmJwfb|ρc[ip + 1 + ?qᛙT|SjR|fy%2JpKܴͮ]/.04yqϻڮ W4j8MJW ʳj+ ¹:nlx k5M|,- O4j8MJWSՃ(+r|f`@8 xC77On}qx4Pd4ɇoUTVR9|8Vc@2V~733Zԙ-, 3?xfn)5Ԓ.:Il WJp 5HJO|fjJ+:{CVq7;?4P,w썶C^-W;Vc@2V~7Z2ueAΩ-}~fwl~׃ǎ|XiؿXiXiߌhRm0szF|ꤧՙZ rmS&Ͽ3?o>L|XiؿXiXiߌkRgdvoŗ̑ sKkWXiΓ._oeJڣV$/`K5[dJ>Jp 5HJO|qnHuqIɟm&w1s"]v]Rc,)w*l)XBbm !t Y(w1_qP+ܳ<~<'s9I^᫑Kq=tD3SsuZwJZ2Q3Z:q֘Y^znxzenMDc\qo| Zg)/]+{\-HOK@9|FKC'n>9:soI:};VgNZgYMV _~ie\޽p hiE >7ڌZcRgF;7Dq䶿xRN?\[Op%;>Z2Q3Z:qMhqIH,˿V (nQ~/?;^>(.mo߽6#*L";>Դ4d - g4tC$ƸXq4W Y;RInw*9_.N ?eF@jZQ3Z:q֘Թ~]zndGR;OQtD 5v s+\cetYx{LQ!4xЉ֮ƤΥKs#k\Q٤.}VK:}Igk؇gQm;Ζs5N|(֘9yRznd+SA:,O J];(=[gNK~ǚ5. a#ahy<2- @K(j- PhkL Hύl:dŭSo]>+hvw966>G hiE >7 mlImۤFf\ A:чI]uzfN[GKK.;a3o?\ ږLs5N|(kIW(nuVWE4FnՁ 5s Yl?Zp~BuknOӹwJ6 ]f g0[GK(j- PhkLJύe:= ['*ߒ>.,nWNfx\…r0[GK(j- PhFkLHύeZGT1gG ˜uoUKҳQU\6f^zIFyKhiE >7 mdIO$k(nu9T:Ŵq`RNxy{"=]?a3lKzzs4xЉ1 x6U yjlf5>1,7yCETl,͜;'}9|FKC'n>ھ:캑rm/˷fO φJʽ.=m6i_- >s5N|(oIW^ݩ+S\ 9V86+}bXX_=FoI~W,s| Z|FK(j- Phh:P`6ok%һ?*}n0y dRz{{e?\Hwޑ>9|FKC'n>1 hjQ!$_j"}n$gߟJ~sY 3 Z|FK(j- P(ƤN+mƪs,Qά._+I2ua wgP1KȎ.+|- >s5N|([cRfuO(n[Iu3nέDz{]VR(Hhi- g4tC|:kw(nOv>7dtLG./Ω+SҳSdVc- >s5N|(44dI\NznO|Oi>:dt%ٴeK\07nH"4Q3Z:qP5&uv풞*-n?g ۓ}>=dt]^Xz0tYgzcXدߦ3?`;UQCWi[7ڤJ2?eHSkB!0NZP`JmrHXF788q'gWQpؾϯWzu9HFKp5HFKM|8htT+;##熓^l3'Jubn쭹՚`vV&⳹z1|hihiX&&&%kbpRdӏ=?h~K_ $VޚMЧu`CKd4GQd4rmmm3IJN=+S+45L0a $wWkgލAq7##;4HFKp5HFKî}uvv$jbpI۹MM*/mX9>]f k۶!q7٬3@6Z@2Zvr}V $kbpҫ'_% /+'|vh ܕ>a{5ϛ,9xP/.>\38sI,~}6ASRg]zo j5w[8hihi kb' H^.??4)o98 ]zc /(LgS@2Z@2ZnAccZ؉g_,ml&$uG:z^>A g:FKd4GQd4͇ǵRszZ:W\IeM:/gci'=>,VlyAiaFKd4GQd4͇NJ[|SQ?/m4ЊXu73y'7ް==6Z$@8$&n>jb' H^[]3yƒFZ~Ĕ6mQmO8hihieZ؉Ӎ4$Lx^N?R%'XԇQfflO8hihieZ؉׌^(y~ШYjTТXk:vue==~m׮Q=:0Z$@8$&n>jb' H^Z5=?hH>^(5j0h95ۯ\1{V6+;OPۑ#&kd'lhihi:isIk˩LAi8,m_ܜ%֋DKd4GQd4͇ǵR熓ҷ7TA>@`ÑlYtd20`{zI4HFKp5HFKM|8htT+;##熓ҷ7Shu|{׷[foJׄ>+oiIVS(؞p- E p7JN_Z ωc/<6{V~y쵍lLMٞp- E p7JNdZ5ߞ4i<uzoS6{V~:<ر=~ ϛl9b{z=4HFKp5HFKM|8W+;==熓k30iʪk(t:mLF>| - Q - 7q~TٞNJ/2f7u<ug f/KI52YMO - Q - 7qAT ؞NJl =?0H|X_j|5,/td\BKd4GQd4͇R}$/Ag ҰNTeG,Q׷vl7'ҕΠ@2Z@2ZnAccZ؉|KogOa~o ^jfuN\h3hi(jpV*v=7|KZ 'xx X)m2&KϊǯwLVj:;udhi(joS?LӹkǔQa]͗Hv$P~A7%PmUBڴ"Jt-]p$vLbgW >K_X:< - ?jU+eJR-}vyx m헟Xs=ŋZ$@8$'^>qN,53 $62Qb|Jzv6n]hi(jx̌V8gϺ^ʳyr` 紑Y]Uz׹wM6 - E /*R)\ /.O8,}޵5G7\ϾV0wzzhi(jxV8W@ikvƢ8ʁq\pNioMoB͑EKd4GQd4ˇJgjR-}qw,Z#`6nqn>긞}͑G\O- E /*R)\ /eq?>}J}*G8Msu׳tܙINv==PP4HFKp5HFKO|xIqw=7uKo(%WS iSWn>j}oksgEDKd4GQd4ˇΜJ' _-l{,|lc'ݩ`6mjkg[L2=zzhi(jxV8W@k@D(yF3ő`?✶MbC95^[s==P84HFKp5HFKO|xhnN+e] /eҷD(_R #i ˫v}o++: m$~zzphi(jxP2Nznx)ntv~Px|<qNY=\>Yk3ӮG hihijZ)$_˨O-5(%}s7l6_p=Pm$(Z$@8$'^>紝˻%ףBKd4GQd4ˇj5qww(%6[T紝{_XCo,]>u3ɡCw==P 4HFKp5HFKO|xZJRq=7bK?m O^Z sΗ2?\r=&&ln$(Z$@8$'^><472΅ 熗jno0QmQO_bvf~qzt:: m$ hihiMNj|o?6(1WtRkP ʷv[źهuٙaףEAKd4GQd4ˇJgj҈-(Fˏ 9mvi,;gٜi\O- E /*/uUqf7\r7\H邒Eےtm-ӛ5i5mPW!¨V&ڒ11 :؎_^)R5~Hϑ~Q31!=7W5rb/d봱դ&g[G2`9lFKM|8…@șN2nխ'_|3˃d봱~S>9AO_7<\(=: 4،Q`3ZnAӁRgzĜ>rkcctlCX'Z04d|9#=: 4،Q`3ZnAWJENx HYKOzsVz;82'G7ZH?ZlFK(j- 7᠙@ȹzUzn8ɠk͎/ۃ tLg*_WfmMzt hi- f4ˇ @熓 Z﫞ge1@NTssƿU ;< Lyсf4Xp/*"'<$/jKZjӞ+9z=@NY?+=~OΟ7?''ҏ`9lFKM|8X H-}ߨxBV2 `/fVO:7P0?Tң)GKhiE 6&^>T,JENx H^8y 2u/l4?wmY[H9ZlFK(j- 7b1P*rS@zo qj #X9P6~ޞ5 ң)GKhiE 6&^>T(JEN>/=7cKoz~q~X(5۝$:/ /bYz :2"=7r4،Q`3ZnA33RspR/-'9_{i X|nw&+hGҌ`9lFKM|8@ȹtIzn8kK/=_٥ݤ/Y:Gcݖ} flLzt hi- f4ˇ&'"gbBzn8[oV^ܔ>+Dn:G;ն__jҳwlCC&[hԢf4Xp/z@ Om /=_ܟkR `]2˦Iޓ-4@j`3Z,GQhibTpWtݙ\|3?'x;:[|g҃dld 3>DKhiE 6&^>49(9sI_үܯzJ#x;xoSW-={wΙlܔH'ZlFK(j- 7 "gjJzn8jcĜi2una-?jHklqfhi- f4ˇ"'<$[zA=k/vե/Y:_f;T;M<TR`9lFKM|8ʕ@ O^^oxvGr}7~lgYE8wJO- 6r5،xpLT\*=7%񳭛7`; múmm,9>h/ - 6r5،xpP(9pҗ[>|??YdtߕG9n$_'jC遴f4Xp/*"'<$iKozܜw-}-AmnHz:eHZlFK(j- 7b1P*rS@ν:~V:=}s+ҳ=u4PPKO - 6r5،xpP(9) yO[6=_InNnH_uz~q`~Uz&i%Tf4Xp/*"'<$︥<_əV[ҷ bV쿛'={fgM60/$=:*4،Q`3ZnABTsI-:= +_ޏnVFfx8h6҃'+՟e3qm)[@e`k!mݒKEVŊ&b]d jm3 ӕg/iiKw3sޯ|~𜙛yq5xᡱ11&vNҞ^& Biu[дXr~lqpnU{m(~=:8hip- e4ě1=ﯧ:} mC@3cNȣ-u"6ν75eFfG- .q5xᡡ!1&v: B\Y-oitrvMX\߬njZ_tf/*- .q5|>?>>v}uvv7٬;s3K&T`!C29fV-[ecK@e48Е[ZZS?Řdg~= BT>x`s~=x }fFrY{z2ZGQhi蚜|N޽{?Ř9xP{n/TRAXKn?|}?$B=jC*{جQƴ- .q5|>\.1p;S@}~jZMu^^nkq,lliАj%מp- .訌ȱc29)KK3 E ..Ϗ]_;oSAXKN|}?$pbwО=klVjO8fyY^'yKǑ[woر?o><46&ɓs&TPS_,h<:U0PlVi/ ݻڟҬE ́xY1&v) swXINlZ'|xhvV) ! %g>_>xu:i]k7׏65hipYõt,ׯK&c5D9)?knho>u:iw6.?|={lڬQz{G\EK\hJE{Oi5D,/|u/4ě;s*aL/`Nm6m6(耓hipzK߼)/h}%wޑr_ ĩ5go><ˉ1sh"׾asIu6l6( ڣNe-WOv7RsƆ\l 7*X1‰ cb V%ARb (pFqf76I9g~ސ{~]* aG҈&^>"SttEp&ԏs:S>`u:sٔʛ^\c`@TWDJ͌-,]Ob% 84،F4A{v{ch(ĒGx:OgX.ijy:;MXSS+)_k!G҈&^>"GBO6&35L _=1}3O>T|1L/$)--WDJBNQM2>ImMŋAG҈&^>"h`@$ƺ0ѣX2iP0}7!⋹\Jwkj}+`RT!M yʍU::[Y_<)ymkf1dp*0Pf4= ƺ\,Qφ_=Ӈ|:??ZlJM/tgi}HiY8)ȁ~KWѣ2:*}rssr WIc}{* ulFJ#xq|OMQ:̬e~wk!AeGsӻ9Ӌ땛޹czo>4,il4 &6b1>S*I*%gVP`3RGr8YX0:܎sX2_ :ݧ{jzu{5e{!ft(==⺚ZUٵK&&$-ʛ,.z|A҈&^>"q43;kzuT_6&31xǯHiu:S}=sOL48)`R:vq]MwطO*u8[Ug&q=СNHiD/${>ިfgrdF7? /`!t8Y~3=jzo>4,x\S*5+"21!bETM:$--R[k~o9`ը`3RG427VDZdF7?=~wÏ^"Npl+ML/tczo>4ج)}玴iJZ&:ilDBwޑl"wtZΞW_]-[¾4ו'LUNHiD/.{^{ިNL,bIiu:~N^2쬦xː`Jt('OJ,;wJMMHw$7n>9NHiD/%{Lp6Kft_EREG3z#Ӌ+--I$NHiD/'{z{Mb,YdIiAgrќ4}ueaMHi"/]Z)<658(A/ĉ~x\> | ulFJ#x.qizoTϳ/ƒ }HHiA汼cژʛ^\/`3)}횸#fνICC B'|ulFJ#xnq߳Q%6dF=8-yOs`zq5}4؍F4Mǎ{L*̬q]oGϖB;E6ABYV HȊh+\ZgH@ \[ޑ,iL:sJUz̫HiA{s/n.&#>n) 6`J \p.ZQ?P)GgYcp7nPZZ~T1/}W'?HJl˱WI7^nV##v fIRIPvJ%M7M9.UJ p4،pӧ׎}zOxaTO5c-~(cWUn.SS&#kۥ@JM>ڵVt*6Ο6i) 7q|^~⚞{Fu֕r7IiAb96xU}U2YktHi)g>[GnazXzof4͇ZZ'NޮxaTOCSKIJl˱êWI7^~RA`2jm) 6[#̧ݻR;n|Ҧk{8 6#&n>uU(H [M̿1/?^.,) #Q,o^%x 1Zk56&= }}j˩ nUb4،pV[%7luK/?KJl˱WI7Vt4RlbJJ*ܬT*WT*EukG/?Ko p 4،pֱcWGt߰/jSw䅆LJl˱ WI7VUW[t4Rl< Ǟi5>.O H@i) 7qS'. X^՛վLJlޟ2xd/݋OǷߚ nnFJ͖wߩ\pY^{FG;v==Z i) 7q?W*`yad\rIiAG[/OGo7]@MNJw"fѣfgܹ qѤrgϪY-n`p7:}Z~SaWƽ02'ru6Z' }W'Oٳ&ץ[D`Ŕ~㍖ 7vT.7U4R8e]*8qlFJM|8qK^wqh #j >) #\7xj*SE&'[D`ZJogߟ7uT>w5}R8k];w4:i) 7qᬎK=̽ya}rO`9:,7Q﫦0Lە ) # v o2ZnCJͶon0, P_}%$ԣGS8Zr- qlFJM|8S~ҫ ȬhWR,GPg`o/Oӧ&㫮Q94X]fI|Yz3HnzZޝеw~8 6#&n>ѡ|?qU@Ff<=bSϛL.I !Nqv2lT  j/1NHig;|?qUó9/̪;du?DJl˱WI7={L&]`'S͒ uNPR)x<pf4͇ΜQ^՗w) v#Q,o^%x2`uMNJ!BÆ#Gz'Hùs Y&0NHig |V 7,0=7Ƞ c) #Q,Ϯ^%xN2`uݼ): LOݻ G ;Az]J,f8 6#&n>U,.MZt߰i/_I[4XFĊJ-aa00*Ֆ=wG碣=eHiAmKvwdmiPBJ=^lT*kc NkksQic4،F21H={Tůd~Xu<_V{ER,GPq-~x].Yb`F>:*7oj/Xf4Gbuwٻ*~$K 9/oHJj3(|_nfg%Kl*vR,fkegAccQfzZ : 6#LL>+ɳwӣ7L?]w<_Vs `9ڌ3_o447Go>PXf4Gb۟Nd-T}qik WVT2i)dbXK;ֻA:[Y߬4x>3O`9ڌ#`NX?/c[[4RT*υF3g >PXf4Gb]g51:v|qP?MJj3 ڍmР7E׮+[JNk(^QX}bNHi$ĚzjV7k?s<_V W:) #h n_̌dM n0-wH6a.} X :K>PXf4GԼJY|i=_4X6䭼"e⺒=vbBo8RTLNd]Z--ǀ5N:NsculFJ#|$Ys랽.aPau틾 n!b4X6"?\;&c#@EkdWVOhuNT/0T^NHi$$;uuWUwv07˪n(R,GPQw9']n<.--=Go8R{PlKˌaN>PiXf4Ge2;<{_Z==}Ô`3|QFHiAmxh76ޮ7`) 8!YTѣgVffTi)dbdYaʭ-;/K[,K4X6`:^Y=.mm=Uo8R wOlT*|DTQW@EaH&&IN}_!!~}3xV7) # }ndctdmi0VVzɖR* ƴݹ!2c55Ғ1: 6#LL>kgU Ils j\m`9ڀfqv1d${lsv߀q4'ek]}XϢ{`3R#ɺwVů_=^u<_P՗rKj._^nl``ޭj=쳠`9ڀӷ n庒UvrRo,RXXl&~{A$kkaGG+-NHipGf:tGb[^ˎ  ,GPp|x^p)7^n<^MMUvdDo,Rl&Jث|>O]J: 6#k||ꀪN`T:go_ak;//Am;ٜRn:xZ[%s}f`F}d3|ṣG{0XulFJCW6=Nյgo_a 69Z??.+AI ڽǫU) ,.+LU]]x㍟+luvXf4tWUUP٩o۳*~O utͰan{0H㴨ZdcE21N6IgAudL'k<Ŧ$RhRPU4/f׻^{;is8;V:}Qږn7drں|`:7.ZR07'YKZoxz{ NXulFKøSN!]ݜ|8Phۚ|tn({B]J< X֖^g^7]WWd]X0H- )ؿ_ӳ+NL&L: 6&N>\67޳5sCSc\(ysq~eVWDK(jU{ӒY;1a:7:ZH|/HPe2y(j- 7qJE2:.Ww;1a:7h%ڝΖR`9ZbYp5b:xe- Jj56Қ>BK#YwDX6Vf4ɇys9ӹ{~ ^*Z,GQyjx5[brRƿ\CKO>l#j?}Fↆ's~ttJ5،8p\|o|tn(xB_륢r#9u %vztn u4(l#<^ƴ4wdXp'3ɛwvtn$maK;~P FK(j%ܚ+uͱυ diۿ|FhnVMCQhi Hڅ[j0Z,GQ+ݍ OdKl>o:7:Z4,.JVxzz0;44 ٳf4ɇ&'%WxɼE|z_5- 5l>hXr/si$Kl+54h8~\30whihvMx>MGCQhiMLH[z~t0lr_m|㧁%xN4hx *O.whih(~P`3Znq /;khiEfھ[r4R19)Yb_ qz%YE)- %==܀}(j- 7qBAMF^z~|^FK(d5=ŲRno6LȖiӹO&JO|}uӹP`3Znqoh:7vlivgv0Z,GQ'(lF!?JcH K,hiHVuwKxz{- %Ihggf4ɇ%btn$mRvglQ ::y-a- CҚFKCݻSf4ɇ kwztn$qvg|y];- r[ ~\MȖ|tn u4$hm-d$KHkj?HKCOW̘ Xp'f%3IwnvFK(D,L㓿^3'R%[b}tn u4$h|\flA3 E 6&N>7<,yƿKXw`9]~|v64MT=*YbLRGK@R0l d2ѽ{&- =##zM(j- 7qÇ%Oݷ2 SFK(wn'cHl,/K֏ &- =SS::j::`lFKM|8npP0*wR,~XR{υsʊvj)dbpϟKrYuħ!x~jZ1) #\ muCG]dd# ]]#%=pt@PHi$I޹v߈Iac[vɤ4_HF7A;`3RGJ޹v߈ɭ%HiA-5ݺKQ;K#G4ݝ;#'v9^{X8ڭv f4sGFFL:/B@{4X.߷TMÒSo@) }dv9mhA 6#LL>+yit;/e7 GJ갊5㒛m [-oi&ӣ7$G}}eccIi!`׭ڭ f4%W:/B@{4X?d7QMlV^:z{%GO'0`xX2AkXH&&k#˾qq|Aj=R,GPu(ݼo?i7$kPڭHi[{ӻLJÀ` ##ڭ f4$ܱ1V;f@{4X;ZZe5) ѵJvLfIiP(T\W2ýڭ f4%faHiA]:rTdwminPBJ@t#[vEJÌV 87`lFJ#|`rRuvɅW[# FJ*=|ޘ .ܷU-{w(,Ah(! EqPU0#Xcޮ7`lFJ#|/%ܠ._n1X(:h7R,GP練5zMpn&n^ /[dhipRfd1>tHo5،F21sGnPCCڭ#& EV+`9zgrd[M\kllk ! %GkkU0V2ɥv߀6lFJ#|O *!Ʌa+HiA^y^r// '%B. FJ@Dر'aL0IWm5،F21АvB@o4Xy:> [\.Zgf[QGdhkpRƜ<)TJo@A 6#LL>05%y52:brQua@o4X|NpP<&[;'YY]k! VrlU0G2$A 6#LL>U\WM[GL.iW FJw5C5Nd[_ec$+kcv߀*R"jnl TU0f`@2--}j)dbgI}#&gntݹ6KK}5 U4D!@jk+rU0fvVNg2ڭj)dbؘ C\up2k7R,GPqQQp\sڟetZh" ;w$GSS0fiIN_:H&& K^}#&[5^7R,GP4&_kE%j]] `5Rl ՞OJäz<j "f4nOv߈ɩy5HiA{yp2+Iwٿ2JՠZZ[ũS Iiֶ K5،F21@`tTmo1uDvqö" X $d!آ]$GyB; `!B.ڪm[P)[ѺSL'H",9w<ߏ[gE=e;fO{#pzs}rdYImOixO{H6O?Ӓy>p@o@A &#ML>Y\pw>tŲY~Hi0\dYvob j\uÙZmm"YVٔ_$ dqӿOJ#Hd y.U5F41'pZ:P[ol/Wz) fP_}\4-:~|>>yΞl*E3pf;) Fz`ڭzj0)hbDBfOF([#[6FJԕƱ;KuR> dMjD-GׯK6D庝~FqTg}zj0)hb򁶡! wnNo76Xv5tHi0\%.;jb5>.QTJNl ww RLܜv߀LFJ#|! 7IjɲnkەbO"p \e}׵|wYz>\KvTj ^,!]|FLu&7҈&&h;~\M&^]vvEJ8+kw^.w?ޕ,0C4Z*%YB&&);&q=5F41@ dL޲nE޻Hi0\_u~f)ab>[X>eKTV=`Liɓ=ĉ.>AJ#`ccCPHiD};27|ӹe;֙o%R A}ymL׷aF6O,^9=`KiL*%C_uF$S=27҈&&hK&%/܃^/ZmmwjYP? +1O>e8=+NlU賔 MLHVW#dR2Ǐk !d4Npw]lGP֣Hi0\?Ň1=y=|٫rx\zuvI) `d~9RK%S ,LFJ#|m~^hvϩ*jBG-`}%yACcxXzeGJ)6t RMv߀LFJ#|-pf[AJ#`d`2R>HM&,,^CJO%>^>tl.YJl cJ!iBs4JIY5F41Q#w?{ͲA}0M!p j؝즓զ?h;Luf;$Wx+#.SSUHiL6ՙv߀LFJ#|mK޹[uo5vd :!p_^Շ1uӧE]}=`*CR(%Gv RK&%SJi !d4ޖNK޹^={:|6[-ۑ_ R |P֛zq5ʁiSg,p76&\DmkvX@lbBtFL,LFJ#|m wW33ڭo÷J+/m`8߃Tk\yT=/?[(V?ũ3)tw6[(8RY"^@(+!*ܬ΢AniT]hg@HB"Ⱦuj|Or~7$ttȆщ@áE$G+TW4HBV|RS)S{}uh`dti&V>NKG[ni<4F}{{OF8/D:S[u1NK'. =)- KԡQѥXSC992UHsָܣ5Х ǹ@^O}pToc,>ElP0cc-֭Q6otii \\n@)5]fƠ`0TT$9y߯c-DQO~rsesYh`dti&V> Hcۿ8o48!qv4 u`tO/2i}y? `ɱSj |/0ءĖ3ޓ5'=w3R8 fyk KYYYНr87:0,#Q]8hמ_,N_վ>ҥ15=ms\[긞︶Ҫ_w†""HgQíʺ"$F )q(- 7TT tifٲ>\PЫp@15ٓ]ZbX|Y KG4mqF }/=#]F8SkO]C":tl}Y!nڼ~?p){0Ģ&9:@ /dʌ+NgXǧKC7EE2+yFuѨ҈M|Ol{EnV]:n<xP"0:qۻ/ (-O.mZH}!N{{/~ ĐiJΙnkiШHfb)(tiȬ եѨ҈M|yvF>;dq#fc=]yoyƺ@w`Ň} <\}Y#3aNF R@&j y:_~p`a'˘_OMw(~i;)zxD B@)TBpޜVi5d&K(!׼Y.|,ҡ*'OnKϞ/w%}\qVVT-6[ѥ!;UNzQ4'T>~Z[ګ![$6СJ!Ο. {Y)ßZ \0[2YA"s13Nq[['ݮ`*5v_'}qbɤftioϼ84d*o1=ihz. ndJICxNJ^. ;S{PC$Rd U:ٯE՟I- Sjf픗qALb6g^]jU9ד:Q4'T>~ރngi! tHPX".i}hOr2T zɻx9cg^dq9IK(Sɤr܌јz1riëU3;yetiК,JJT>5KC~B'MxM:d7#:Eo<Ǐnݵ[5aYv9֨ɕ X"IcaML)wmYq._V3TUe^]6?r?s&=Q4'T>@55ڻ3 %'S_x(~ tcݭ'vՂ 1H `hT3O-q'Y]4:CCjf+KT7o:>Q4'T>@}kp!b;cCK_ݼG[Q.Mm p÷OuÜ?iy rh ;sRh&kٍJ'{ֺ9za$t#IrgfqElQIo WLj&/2,. [CxmmJШ ]* X,e2e~ݛ HoHxC@Ω>֓I'>&^ f{nS8wO 6HDŽ<•0',~9)J\߯IIwAЄ(Ռ;c4^"}GQTvrUMaΝ ˢKΞU9;hz. ^II޽#o  -!!-\z9T߭>7##\f/z@@/I|Oh% 69LBNn/!wm}ElQIo W55fRnYtiN,~I@7Ш ]* ̯{+[AAp: 2keյb4E/>;&fWl?߼6#6J'NmHtc.5%{\+w20 "K]_ 5nmtDžlT3@'q'}ElQIo Wi-. ڙRYO:Q4'T>@z^{? ҆׊,!M&[Ƹ޹GbDŽ QFZ?“9~݈rO߼cG,DYR9T9z| $JU;G; r_D7n~=#6J'|H7"I[xԕNdc*m]}Ι_4ݚy%vY= jǽ HX(`rMz;GHԔnYtiNwʢ-/'u=A3tiO|3~0դ :"d tHS_y-zB Wk{ZGry+`NXȟ9)ؙ!sR1[l~I\m&b$Ͻ.(k3b-dً4:xt=P+s3btJ.'l>jM߾$)-Oh};BKpnȪӒ8 ;L&5㮘ͤOp\K6<Ҡz{< 5KC~BwJAbI@I"k #|(a:%/F_2$9l{'V׮?yѵ,1%ǒ9)(_4E/̊B8.1Sw~!z77pT\_j/oBDDi#镩&Md^|nlǼ#~kOfʳ[nXcs_}e(ܜ- 0El 'e Nl{nBQ&&\o%}u ZT_/f{ZԪ aDdצQ.o;"Y-medK߀uܺe{㯣(А- N9|Xp)/-k3iiݻ nBQ&&[ne_na*!Ś7_0FPyT$guYö.o ~wŗϤ'ZS#Pf4cdžddD>/R@yk5N{|w&ͣz](~r6c K^4Ed]\={~0@ѡAw 9G -<9tHpVd_p܌717|$.Ⱦ7*4Ψ $ڞhUl@l__t艫zϴ[X܎uDŵ9rDE}33΁40 W܇7ML>_{7ѣ wQ||dgVwk;'WM&FI}84s2uڳ~޷OdK\2;<@A( Os:ȇ1)}@hixli||SZj[=ITB6[çqɰRuڛ_~qdO'48F|էȇEsn\7ML>u^{sɣG1֩*!-1FǼҡGCi xۊ"Mu- [񵧲ri4gYE nFKÛ|`K~%mm‘JgL*!ϲE6[+3ç?֢=VcG7u(ܜG- _~ff^: W\7ML>{W撊 FyK5_@%^_ԊKbՃ豫FG$9yiOY\Y ׍ (v48nfF|)+{(ZNU}u(jp3Z]ڛK6 WGJn *)tο?a\1nY٣ ӞrNQd?4áC8R)ɬ}u(jp3Z8us쫣0=6P}Uգ,vJ!ׅ'nj$${8u;µ x- 09)UT8aTۚ&(d[w;ZH|8m-.mo_heC+q=bs7Mz](}V^{_5òBnKRKiczo*Y<]=Ze_JdyyfU.IjE+#@Ac.nvu6bON~$chiXmĖÇW M~ܻWhixhxxUSUe[ۣ`Қ4߅Z)>Ō8ׅa1wx{(R4ɱϻSF}(޸I~$Jg^/c.bvI6b~${hiȟ*^\\>FFGhixȲV^{2=-(XL݅cF](<0itIvM8YQ|d{ZԪu!h(g/O-3F6?lÇ,CQ L4kdwz&W#GR@ș\> j}=EeX]M"2'kѣj׹gn.zwod}z晿Ii⬬+0?zu gRfr̙PsTS+R sF… ,&ڹCJٳ%4qc_5NLJL.",. E3^ԵΟow ?zIHiјRO?_J3^/ S/5NLJL.LOSԙw/F(7BzO/Hit /f ~r.~=ԇ: 3)M3|={BQxSR s:Ovj8t(mqZOW6%FȑZm)}](c۳`iIiCv;E̔etRԹYZ N=[q=mԀ￯R~7*v;P+4@Τ4!ZvE3W~=5!2'ng[.4(8_vGz7;[;@94ˇ*ffBQNMHi L,._,fRo l>T\Iy[XeYƦSuNLJL.tBQDΏ?~=u 2'vt(V˗So HJRSCd>zu gRfrPK/gS?: uaf&Yp~ꅁIi;vRڻ7ށ,ݽ[IԐ: 3)M3|h}=e(Jz'2'Glu5:߾|9@R`b˩ 'ׯۯ^jHș\>T75"f2~=y#wy\zW\Uu+@5R !;wRA+k@=94ˇBY RIi X] ׭9p ϧLJ$qXݹz2pL[ ׀zRr&i&Cq\(Y^Nz2&2'U.] e_wFaLN{bMHjmρoNԖ: 3)M3|{BQD_OƤ4@6vLص+bMY/H<0=vJM+LNLJL.Wÿٯ(<^49ӖBktXA(6ƤH*RMkkc5)1IFhڄXf˄ ɤq2f]muz4tMe@H&^>Q E1gkzO4:,yaݺJ,4) !X[S*UkV` b~r@N@Hi$/iEQ) #}^~YoJO޵> EJ@ ^P熇UXo:ᥗwZuBFJ#x_(8@`HiAŢfg5<T[[ 4RQ:MLXozޭ5>-5BH&^>]&(9.YzԿkqQ:|X{oD~1mnZ #4S)MPwDqMBH&^>](9==T@HHi\2zm8Qe2P*cuE`*) s9]Jzs|TʹU1sJ%D447ӧc |XZR*Ud-: !#L| EQI=BBJ@Z;=tsNfxXFk44;w! ˠ6޾2R)mmY4F2:y-EQ;_`|^oݭ+ձcMjս{g 0M–䜇w׭A\33~fyzQ d4I(9T@Hi\ꪺw99[ේ4 }[rz<ݻQ03cТ2RgdDQs_) kTį(Asf[)5]J@rT{io}_Y}4wX.4F2Y_WŜnJ 4zsSSSO™ァbLRhbҞ=|Uq}9occTWZuBFJ#x@]*bGHi\A9 $As:^h4$Y5{@WQ^ M:/4F2򁺺xQQsӏ?Z/k4.ؠ.tJo#M6|d4`S)}E紼lʊϯuolX:4F2Vş>`>LNi߾HhxCŢhJA4W_Jimz1[vo7+ @H&^>Po)Ԕ0EJ@ଂ\֍]٬Nd2jعh5iRg?|NZvo/W: !#a.MNNX]]]|67圢(Rذv';:zt!n /q-,Tjhei/S:霷>٩5Ғ<^ncacz% 12Rr\[[3FGGhMU(\F'u>E+АiutT*BvShiٯRzaazCH}Zƴc$i) [SSSX>5EQ9wz@<uy@) "^DSBa(-%ʋVm`TZ`'@KI$?sNc}Y}N xL7$qlƔF2(mnu8绻@`}=yufguJ~ԫI/#8 6;̔>{VpxjĽYPuӽG1L| b٬W?oD) yL/+QSܬn8a?'xuեǏM/<qlv)}L9|h5 r駦@1L| zrʫQ4XU_tq54S*jjJ7nP0xpit6J֝׸Oa]CLw`34Do{[+ǩ5”jhH9fV]ummioOu`wrmokl|wV͛/iS ji1”JZ_S8֦sϛ^!qlSzmM55aU6AqT*ċUMiSLtISy̘n`Jr9ѡZ_oSss!N*﫦&l|hr&qlƔF29ǩ\WncJ &&եxW]{OR@Ȉ`ʦښRPrr}*Ԏ +Kjyt8 6cJ#AZ[8V[[ 74V~&bj@T`7߄;;ZGww=qt4،)dbfݻ'ǩ._6BƔ̌Z[}zY^-qlgJ/.uCLMMpAϞji ܬ4*A1L|f9NJC LLi|^++j`@ eZZݭacz(4^ZR*zd7Dqy-`34rʫ]4u&'۫nuvMUUؗV,C{߮PhsS==b.^TdaE1L|}:yt S@~]OkbBбcJ|I(/6ҼwL%؊8 6 jJ?xsxu lͥ&3-C N͘H&v>`97K}LFKBUU)V~[WhsS4,)]*TSEDU^Po°bQ_~hn23!N͘H&v>`-Mm Liqw33jkužNklL.#J 24,)LFow7XҒT]KqlƔF2Kq|U*5m hLiGuFGקtZUU~OwkdD.hcC!NB}$׍4{!]B!&]4vwY!49o "N͘H&v>`tZ㫪j ) 98kbB ~OW]4; JW8 6 oJ/,V?{O oZ\ԛo/b㽓Qf^`34csSjjf) HX_W&# _UUYǎOf믦 8 6 uJ/-rCim-50P] ::U<>ӧ5?\O':wNSSQozz&&_{_euu[jk vaD8 6cJ#U8~+ۦ;A@,5]i8T:{VwhcC{{W 8 6 {Jom)6AH`)SqlƔF2ۜ:% Lw 0;WqoJZ{bL89;9HiP-McHb UD#X"Rbw aokk2{^~xHZ{]*21>>|^S靎htT##҉y;O?S7e ~NeTzn#"So4~NeT98Po:AߋAdT/>J.\N:uJvMR}7vwU.+ (B Qi,J~kdaxiJ#8A[[\ ݹ{1JH_"oM],`Y•[zfCI4XFM|E9Ü:{%JHROAVF n˨4X|+MNN@9 Qid'0i9ll^ "S/zR1Z]Uu5XF2_S/$$`F6qvvɹ{%JH֖^}5|^zMMi~^rlG2* yEJz_?G?2*l-/˹e+A4w; 纱6tI &!˨4Xҕ>H'OkNЗ_6<F6qVVr.w} ! S,jmjJev*O}ԶW[HPEM|W.'"Ȉe!T@^RkkkԮBAԔVVT.',`JמwKNhqG,kwҒUz[B Qif5=SSۍa6g3Qid'H["?" OG7Е+V{+ ˨4XfҿV%Ԗ?0<jF6qY[sO{8:* VOO#5=۷up{׎PeT,_jUׯєjyY{{?J#8@ ʹ- Qi)44 tk$3ŢQ,`Y*ZZؘ}3IS{BR@tJ#8@*\36{8"* Puv6~S4ur9 rEF2* ҵ⚶69eU*71) 5dF6qԙsύ㫯t::"]M699moZSM@2* ?ɓ]UsgW7*litkpr9JCRիT4~)4oj~moަ#`ˎMt^]/bQVKwY>wR{ͱ 5KTRK58J% PiX@ݭa?UަjJeǾҵgѽ{}[_ٳRzz-59իcuu)~vP<…?:<5UrHcjH5*l)#\N7o^Jx‚ ZRI) }o',`~jUׯw49絸r @jJ#8@zMNʹH{ 7T?ySa{/ `˨4G2*l鵹)"Mhf2DTPoUv7j]]r.ff|/GԔzoxU*) }U,`5XFM| ծ\sQ'4;{%x * `cCB o`ڴjF2* Qi0PeTRm_A N/* dYjvV\ o^p~_jJeT#`F6qs1Lhab* dݻ/ubUq^kB tƇO =DYS%da@$ I1p"|Hm-:koϡa ?o޿8 3LjT6y݋$J.66jTtj5L۟XY=~5@f* J$'4ma֢any9f{AAuwP|]Lg/,L2Si 3M^>_GE)ܹsǰJCkϼq'4@f* PdҴˇǘL7ȭ[7vLqjoL2Si 3M^>͛gO?=?44bsA{uCjT 3HN2SiܼI?4`u5nt^{-ΞkL2Si 3M^>z2^JmmD{wN\۵Pd4@rB J&/F(Ϳpv%Siӧc2qJܿ_{d 3LjT6y0VGE)nޘNk/iJ(s<7;wj/lPd4@rB J&/F(=Z{FTFfk+xc8?k/lPd4@rB J&/O뢔^wt SiL6iwdL6I2SiT 9LiwL..^=U* r3O^~=aB Jd 5@f*M|h#QJڪ=I* 㰾 =S{͸w 5@f* J$'4mQJ۷/fKڣ01o^ 5@f* J$'4mI~4, se2jT 3HN2SiC;>YyPd4@rB J&/Zsr2u]|e1 PiX8gǫR{O"4@f* PdҴˇ9 pIll3v* d6LJ 㽽ti6رcFMa!|m5LTw^ɓ,B Jd 5@f*M|hfL&QwT1ҐߥKutJllsjT 3HN2SiC֢뢔7ŋnjJCr ҝ7nsjT 3HN2SiC>(J~1RiHk:GK_u1ƋjT 3HN2SiCfX^R￯gtTr,;+zja8L2Si 3M^>] p\P{ϸ4$71 ͝v0L2Si 3M^>0WuQ7g3"* \:X0w… 3LjT6y_._Rwܩg,TR{wN>O?= 3LjT6yC pZ{X42T$޾}/WяPd4@rB J&/i6>Rk$ba0zjT 3HN2Siu։'ڽ{<ԩ(Y%'ZL&u]^@ 3LjTϋe?u)0&j%FO5IbD ~&]oG99ף*$`++믭L2Si 3ׯڙ3gZ,ܹ(e]S'f筯*L2Si 3'Nŋ[D(eڭ 44.Z 5@f* J$'4쬮gN>d}=.Jv|Uc'hKKn}!4@f* Pd 7DE)n, &>BO>jT 3HN2Sif}2.?n}̢Qi[*`Ob 3LjTa܌R*le%ZPTiw7}7N&S'4@f* Pd ѵkQJ]07 >I̅Pd4@rB J3L^>ptgF)vfKJ|ܹ^'qjT 3HN2Si 뺸1 Ba~=|NWɓև1/B Jd 5@f*0y+y(m}"Pi/u Pd4@rB J3L^>J>R*l۷[ߓJLT+hvnØ/L2Si 3f|UmlDE)6Γ'MaF>Z>jT 3HN2Si(Οo}Ln* Guu"vO>i}5@f* J$'43ٳQJml>&1"NAhG2SiT 9L&/8ICiTܬPj}M 5@f* J$'4S~=.Jj.>#+M*ZjT 3HN2SiQʴv)42ũSbux 3LjTaoD)nm%4T'OVݹ*rjT 3HN2Si뢔iwr>&}]}@l[Z_EB Jd 5@f*0y@-EE)ny9Ǥ0?:i:ٳϭ#L2Si 3f|(ºŧ) 3LjTanތRǴJpZvR<{6jT 3HN2Sifw:s1M4ݍu⳿WW[FnB Jd 5@f*0y,<{gD)uvT_5oY]m} 5@f* J$'43QRg]ouJ 7Q5@f* J$'4[QJu]ܻT^}[[k} B2SiT 9L&/?R'͝JK0SuQJ-/nK៌FrSb{m,L2Si 3f|`־6.J˗[3_* hOW Nַh 3LjTa9ce%J>k}4(%`}ۭoc 5@f* J$'4y~Rg7og^Tf4j19[_k?S!ӬAOg-5@ &bDPKa$"ň@n8bn]z^ǟMB Jd 5@f*M?|E:w.J3_|zBacbZFbYB Jd 5@f*M?|R:z2ϟJ?ΟSGcexfB Jd 5@f*M?|[ZR*`˭yT6mlĉuuұuff_ZLjjT 3HN2SiM|uRa&&by2ϓJJ)֙7ZXjT 3HN2Si\]uv2ύJsطB(d,-pz7ƅPd4@rB JO.hh~>.J0 y>TZ]Ç ɓz7ƋPd4@rB JO.h(t];z@?za|QGB Jd 5@f*M?|(t]|aejSizem-NG1 3LjT~r@ssQJyw>4=q~;V[W2 3LjT~r@OG)uf0Tm|z=ƝPd4@rB JO.H8t(J3]WA{ lu&&byzPd4@rB JO.cu5(t]ܾz=SiçZo͘,/^~jT 3HN2Si\TJ3<ӧkuzCzC2SiT 9L'd]ԙ7Z7*XZ]#G=Gڵ'B Jd 5@f*M?| ᅬ J01gTsrYXh!=#4@f* Pdru+R*W_^fTq2ƙ3ucK?B Jd 5@f*M?| [b0R:/뭗yV*ظ{74O?^^jT 3HN2Si}]RaoɳRizFyΏ`ss1ޓjT 3HN2Si]]uΞ2OOi'9r$~Pd4@rB JO.o~>.J:yJ*͈s'r?[J 5@f* J$'4򁑰T7ߌoPiFF|mvt]7|Ym 3LjT~rt).J7o^fT0Ɨ_;ľ}shܹzgPd4@rB JO.!F)Ѹw>d_qLLNFyy?zm7L2Si 3\>0Z66(,-g'*MN++15]W1n??:q"Z #4@f* PdFիQJk϶TlߏopǙkÓ 5@f* J$'4QQJkϓ4\]W8׆m 5@f* J$'4QtVt]Rm>JO$1lw|BrB Jd 5@f*M?|`DZRm.~Jd[I~Iaw 3LjT~rZ] J6Z4wf:T8]/^vM2SiT 9L'KzSic~>m֛jT 3HN2Si#c0RͩS1j wWk>ǃ7$4@f* PdFݯdRmΞm*͋u5Վ˗[okT?-S֪Ԥy/EBSZ#XUZ[4)QPB0a \r5ݓ}g{g#4@f* Pdt&@ssQJ붯*NΝ={j~MQۗ%4@f* Pdt&F:To*θ?fgij~DT9~ۗF2SiT 9L&L磔j}T1 嘙2^|E}A2SiT 9L&LKi:sT m^Gɚˈ?ǟ}G2SiT 9L&Lh(8Ek0[(ѣYO 5@f* J$'4d󁉴GD)uiv.T1͛1;SSվv->m `l 3LjTn[ZRLĕ+-\AymAc|aLOo-poa9q"݋퇀1jT 3HN2Si…(|N_y ѣ45ٳ'c0h`5@f* J$'4dQJ9t(v*+\cǢij3= 3LjTn@:TWw*薗⪿\m?A2SiT 9L&tFF)զi՝8J3Kjn+;}qN5@f* J$'4dj4/c?J3z>|O}hPd4@rB JM6莇ijŝ;=Jr5@ 5@f* J$'4dNq#&J6wǝ;c7ck*({w9~d 3LjT};dc#>$J6M_}U~8w.j뽹}mRjT 3HN2Si[YYٵk[4??Kst 5O ݿ47vyX]mPd4@rB Jnػwoij33Վwn 孥#΁q| 0) 3LjTnuvzQJ9|8~Nғ5lgEa5@f* J$'4dwcz:J?z $,նsx_^/J4Mܸ/vz?́smt3ҶTT6B,s!GE#,u!]i0 c(8stc>/w?Zש0&J⿞ .FG{6}}}{=w> \2SiT 9Li'ffbd$J4M {Bw/.^ÇW^M=zp!j4@f* PdҴXׯHңiڏg7+g|={]ө}"\2SiT 9Li'._^Rz7ŵk{t^`=x44@f* PdҴX[;QJOgh(Μ{j?z_10W4>1Nd4@rB JN6n݊(4gOKOӉxՕ;zl7o>Nd4@rB JN6{?J4MLMݻ>صKYeok \2SiT 9Li'U1:MzΝϟR?u^f` >,:ڧ<iT 3HN2SiysRa^{-*߯}5ťK12RW7ߌiT 3HN2Si|ԙ bqAt~ILN`4M_em}LqL2Si 3l>@ܿGD)5ibޘ}kӉ+Wb||*qj֚4@f* J$'4dzĉ(4MLM|xjKK1=ƍOu?v,:t4@f* J$'4dzh(tSyLssq/Wpl,ffj54@f* PdҴ㏣/J2[āq|ܹSh~x_oϞع3iwǹsP.sL2Si 3l>@-oǞ=4QJٰ!bl,W=N-DZ_sdܺg27}/+D__x?X\2SiT 9Li'P׽{qt E)ub۶ؿ?Sg8x0&'7Cq_jϞ]__Yxlcv>=: Jd 5@f*M;|$Ř(Ŭ/NNd4@rB JN6 N':Ƣwر.@m4@f* PdҴHki)ǿz&WDS{?\2SiT 9Li'ٯ~晿>6og)az<}}ukơCq\ iT 3HN2Sid?v-&'iٴ)˗cqNd4@rB JN6[-Qq_TǾgHBFNbQG eABAi/a ` J.AZ;:Wޟ7"sa-,TW]=+W͛yomN$Sid* N4m|dR靝Z^ssΞ&ߕ4@2H J&Hޮ_9{ڵ:w T Jjd*M, +]U9=33QQOrHT P$Sid~һetusLYѼ@sHT P$Sid~һ]ݸQ]TW/5: L4@8HҴJ\u-y>0 _\4@2'T6Y>@Tzk׫k\Zoׯ}?: L4@8HҴ_֫WT33u9S~mnh4gp T Jjd*M, !Uӧz._^w={ŋY z0?u J$SipB Li$;JR_׽{5;[ɓuqg:w_[jnZ^'Ojgg৹N$Sid* N4m|dG_ɓ{n߮Z\Z_ҥ;sd][>jwo_: L4@8HҴWz8ǏΝ}jekuܿo_..ǿѣݝ?p`hJ$SipB Li$SipB L4@8HҴ4@8HT P$SidT P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M, Jjd* L 5@2ML 5@2H J&H J$SipB Li$SipB L4@8HҴ4@8HT P$SidT P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M, Jjd* L 5@2ML 5@2H J&H J$SipB Li$SipB L4@8HҴ4@8HT P$SidT P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M, Jjd* L 5@2ML 5@2H J&H J$SipB Li$SipB L4@8HL`0xGԩS P$Sid* N45 NLq?'T Jjd*dӧOO1pB L4@8HL`0:1Q~ | P$Sid* Ov렆rګ f,bcNj2{os, ?j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*͗:m XcC@} Gqna,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4~<- 'e* PqB P<8~u]g NTLLyyz | 5@J4@P4Ϻ8G]?j2(Si8(Siw_yZ>@ NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2fN05oD̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥aԡm@EѢݎMmWӋ( 7Ӆ2j2f&(Si8(Si2j2Zy~k7_w* 'e* PqB PүZkmpz>>^km޽}8.Z<{NLT N~V`- KLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLT NT,LLحcۆ E9f;pH]j\fJxPqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@J:'qB Pe* 'e*ͳ>Qu=}OLT NTg}>^ @P4@J 5@Jyu]O/8(Si2j2q}udOLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LL?vAX֯!| RqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>cm Pl‘"ubs)qX@J 5@J4@P4~<- 'e* PqB P<8~u]g NTLLyyz | 5@J4@P4Ϻ8G]?j2(Si8(Siw_yZ>@ NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@Jد{֨8:B?E0DEߢ&VhXh%ba [ZhhA ˲,nνyE3I J$SipB Li$SipB L4@8HҴ4@8HT P$SidT P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M, Jjd* L 5@2ML 5@2H J&H J$SipB Li$SipB L4@8HҴ4@8HT P$SidT P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M, Jjd* L 5@2ML 5@2H J&H J$SipB Li$SipB L4@8HҴ4@8HT P$SidT P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M, Jjd* L 5@2ML 5@2H J&H J$SipB Li$SipB L4@8HҴ4@8HT P$SidT P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M,hz}\?֛7q\l?^NɿY[T P$Sid* N4m|`Y[ϟk4/ƍZZ}jRgN^꺟>{䇌Ÿ?ر'}oG 5@2H J&G:zcĉ:}VVȑڿv:u 98~;w۷x* N4@2'T6Y>׺{.]3grnݪ;w&|n~mQipB L4@8HҴ׽{ul`P]Ԟ=PR;Wss۶}[=4@2H J&6ޗ/u~-.`P]߱'ݻ!q J$SipB LiǏz.\ڱWgq<+@|HT P$Siz7ᵍ5==m:r:]'֭Z]I4Id* L 5@2_hjjjK ZuF`r?|4Id* L 5@2_7oҷoIuF^6/T Jjd*MFԖ^-//}ٳsz;vӧ} H$Sid* N4Fƚ|Wys"Bz&}Ͳl8g< f2sr+z`" e( {aH5(‘LE=q g7@=}}}>(nu^_4@f* Pd4Jt D]GU\^ΝһЋ\2SiT 9Li&<8|8:t}iT 3HN2SiŨ*e֎V iT 3HN2SiOky9ffLώqjM 4@f* Pd4?PTy+\2SiT 9Li&CDTÇcn.K/@rL2Si 3l>x1fgWzsmCbϞؾ=ۿSSo̾}Xz4@f* J$'4du-.ơCQU:{ľ};ch(vر|9~)nl?Dz'qj8-ft4&&e7۶?g_?ز-4@f* Pd4tLEU8~<._޽hJ=z?|\}10u]7O8<OveQ$: Jd 5@f*M3|n݊Ѩ38ħ矷Øx,->qbn8{kEc` gfڟO`ӹNd4@rB JL6|GU;ȑp!JD9˱N;t=w_ziWKǦcb"&=*}^9Nd4@rB JL6ny9>8v튪*0wDž X/_w״JV;++(iT 3HN2SiCc-.ƁQQUfϞ}t*}FfW-O iT 3HN2SiC3;}}QUfl,~wu+jř314T ;uOj(u 3LjTf4QUfǎr%VWKAWٸ׮P % iT 3HN2SiC|mU8v,VVJ?nt۷;TeNd4@rB JL6bq1ǣ:=u寧kJ/,d{pP4@f* J$'4d Ν@LMqNrOUcn.i'_3g:sH%Nd4@rB JL6zbDUuno.=+}FW:[w<Nd4@rB JL6zؗ_F]GUuncick14xr{/Z8\2SiT 9Li&ҥ먪M__͕~^nmº39n: Jd 5@f*M3|IWDUunܣ6k/hr[͛x0YNd4@rB JL6zL:Csh,-~架~0bz:;$ѸwoS iT 3HN2SiC/ص+j˧cj*- u^{}ccؖ'gx8>,VV6iqL2Si 3l>[b߾8|8Ο[]-_ugl,"iT 3HN2SiCs'ǣp־Zi3~(*fgcd$m]Zwv튙t)Z-zD: Jd 5@f*M3|jgF]GUm팍ů~Ԧ|[O>Nlc<(pL2Si 3nݽhUvS= F*}YXtP6(NXs iAeɈ0$zx_*q^{uu={D)ΓOo۵W8>no4qdܽL2Si 3f\>l4M_$M0>:gr2NѨ$$&Jj>+yWV;ϵfb"k/_C 0p* J$'4!+Wg~uZLLD)LĹs7dR陙nu90x} 504@f* Pd ˇ]mۢNi1=ŋ]]\{y`zjRiT 9L& ]QJ'S ٰ~Uzq1y]gz*nܨ<0T 5Ш4@f* Pd ˇlig߾X7cNnxڛP Jd 5@f*0|H̙h(ٱ#.^[;wg;ufXX900 54@f* Pd ˇ<ΜRZ7ߌwk?JƹsN^k<c4?0}5֦4@rB J3L.8}:&Jisvk/ƿe*qX3755/Jk˄`KRiT 9L&LOG)mN;ފ6lJ߹~|d>ss\{y`ْ2T 3HN2SiC]k4QJk,,^lJ/-ɓ19?o7jSiT 9L&]G)ͶmqRh*}n<M[Xq]o/LjTarPlLNF)/hT{+6Jߺ=x^ o '}4@rB J3L.6/Ğ=QJk413S{+1JcȼRܺU{sj~QiT 9L&…RZ}y0+4m>k4PJd 5@f*0|L9=Wފ. 7nĮ]-[oJ́lzA2Si 3f\>l(իcCJ? 7zeȡO2Si 3f\>l(vRڜ/SCik!4@f* Pd ˇM/6MbSٳn9z4joPd4@rB J3L.6QJk41=]{%6J]~h#}{|Ú 3LjTarеwߍRZSj&R[\{|M֭ 5@f* J$'4SNED)ffjR鿙kA=Ҽj,-^HI2SiT 9L&9}:&Jig?5=]{%6J8tHopj*~@2B Jd 5@f*0|q@4MΌ[QJƍ8tWy8r$ΟѨPd4@rB J3L.Zwb4M}W{+*Q|JlȌ85/g%ح׬>T-v`EjX#;ȓNRtd6Z#C$IVR sb ` >z登/w}}_/>ǻϵzsJd 5@f*M?PիQJ bj*ZoE;*qťKqX|O\˗ce)[N2SiT 9L'7*(<w^Tz͘78xxG#Pd4@rB JOn>2;;wF)uԩXZj 016Vanp.Ξ[B2SiT 9L'7(Μ9zP-/ٳu^g_,.x„ 3LjT~rax7n`ԙsZC&*]cD|}'F2SiT 9L'7tJt]RgN+JWg|5;BSjjT 3HN2Si͇a\]ԙGceJ$}y ՞z1^|1[PPd4@rB JOn>lݻuQJٽ;ZD>*$ܿU{ ffZPPd4@rB JOn>lbԙ۷[DJ*\{T{ś֧ M2SiT 9L'76au5RL^TZZ'Mx|e>`B Jd 5@f*M? oTJo/w֧lPd4@rB JOn><ދRLT}MÇ՞С<>L2Si 3|x,.DE)f|u}HOb>]ozٸwY&4@f* Pd7=]TÇ޽0 Tz-,D>'OŋAC;L2Si 3|ؠ(eY#׮^ѡҭ/yUfx8u*>$=j}:5@f* J$'4FLOG)fθu2nku5*x#쉮ӁgRϷ>߄ 3LjT~rR*`n^Qy/GE)ڵ0>Ihm-nތjqfֿk/>1L2Si 3;v<ԉ'ZrFRgffZ/h$8>vaΝ'$4@f* PdҴ?޽{[$2;ARa}2,O[^^7EŐs@LNÇD2SiT 9LiknnnǎO5uĉYOG)ܹ0>11]WC8z4~@?5@f* J$'4MNN|7b0R*ӱzF'ee%> !⣏ZPd4@rB JOn>իQJ9z4VVZÈSqpt]lz|3[lkB Jd 5@f*M?wWDE)fXXhOG?sI0O/L2Si 3|uQJY;oއmAGZ|ii˦g0? PPd4@rB JOn>ȑ(t]|qe.Tz{x ^yNa[l;B Jd 5@f*M?ׯG)u[/6gU0o_ܽ,`jT 3HN2Si͇uKKwo2t]\zfl2V<|OFPd4@rB JOn>;y2Jv..^l ێJoK33c ?q|ܹD` 5@f* J$'4t/v ltkĈ.0$0bl &I8/Ha8~#?7=^sfaSZo1WjT 3HN2SiܥKQJ C|iMS*=݋3gȑX]矏{cDf>[Z? <9 3LjT>|zvBR; 7a~tn݊oӧ7cdjٽ;>8oPd4@rB J'OΟaRfǎ|&5fs3^{mn+qvWĄ 3LjT>| QJl˭7aީ4wV:4pM7Ǐx %L2Si 3O.M&Η_ބ4O 6,.Fǭ_jT 3HN2SiлF)ᇭנ*_r%^}u)bz*w[?!4@f* Pdӛ磔9|tC?͠i͡C1~H@2SiT 9L˧+TΝqnMJΜA٦ag[ 5@f* J$'4}rc2(v.]j =Qiիs3tgOln~hG2SiT 9L˧^Jz :<ȑTnxLZ 4@f* PdӉ>Rjg֛\0M={ĕ+;L2Si 3O.\0FMJFX^A֯Pd4@rB J'bǎ(j!Ξm ]Ri \髙gO>CO2SiT 9LgM&woR;.ބ^4Sq#aAo~PcWB Jd 5@f*M\>9}tLt^k z8,.ƉE`ք 3LjT>|1 QJ=z ͛qL8PƚY\[?̈Pd4@rB J'ϼ܌(jv֛7pj<vFrb}=u 3LjT>|dQJ C\zwSWrWخfi 5@f* J$'4}r̥wމRfܹkJXk޽嬜CʕoN2SiT 9Lg:@*t^8O?=N=KKqdܾ- 5@f* J$'4}r̙ykoTo|ɝ;cGR5KKzJxǏr!66Z?L2Si 3O.yT0ď?^~Gik4ڴVf֯H2SiT 9Lgns CR5g϶^H`cc_7[ L2Si 3O.QJ;z&7bu65I뇀?jT 3HN2SiW0D)ϳV5OTT.b[9߷~#L2Si 3O.Q3 qZ௨4 ?fMu+ZF2SiT 9Lg\L?εJ͛ Ut/~jT 3HN2SiyM&2:z{*MfQV~z+mM2SiT 9LIL?G^Jdr CU>ׯ~z%4@f* PdDs'!Jrbkc~^몶Q6Tk[V,`Ib"AEER( %ra++1Pd4@rB J3L^>3js3>J9hzfڊ;wbq1{ϩSq~ǭ>%4@f* Pd ,L(|y`gT}fs3㥗oZ_E2SiT 9L&/YtjN3*~a>]9t(]W`_jT 3HN2SigܹT߷vLߖj{zi)Z_'4@f* Pd l⋘RRL&׀Si~'^3? 2L2Si 3f|fȽ{uQJ<~z f <#Gj _3oQ+0 3LjTa_}]TB5`TL͘M}9r$=j}fPd4@rB J3L^>3ac#梔y&K*<}gN!f[I+0S 3LjTa E)z =fnݚB{qFln3B2SiT 9L&/+.J~j J3Xq{?=￷> 5@f* J$'4߻F)G׀^T[_)|zOŕ+1> 5@f* J$'4jE)U׀TFqbt]8$4@f* Pd Of+QJܸz q|~jZd 3LjTaҥ(j]kQi/q,//~ jfa!^?h} rjT 3HN2Si'>R1^4/ƅ U9z4~!hM2SiT 9L&/ף뢔spǭ׀j* om-x{Q? 15@f* J$'4ӫF)bu0 * ;n_cx9g 5@f* J$'4Г'QJ?z]ڊ{OI,,[oŧh"=L2Si 3f|:|8J?]OD$6NLeNE3B Jd 5@f*0ydsNR5~zJ[['q`ǥr̙X^ѨE6L2Si 3f|R(\z*iu+>1ӚX_o}G2SiT 9L&/7SCPd4@rB J3L^>IܸTJ`4۷j;Ӛ'bmE 4@f* Pd O7oFE)ga!kPi#qLgZg\"%4@f* Pd Os_~j5`o4gX\—~Οa 3LjTaikm-RkQig<{|=WI^oi} vI2SiT 9L&/NRj_[{F4mEMT3.F[cB Jd 5b^묲Q^ooZh+mj$(Qc`c(-һZTxa6HJ 5B) 3L9g}m7uT~i(v[Iacf&nKjϳ>/￷Pd4@rB JO^>lnDR5Cv|q8QܹX[k}gB Jd 5@f*M?y2?TMjc44w~LM;ijT 3HN2Si˧(j.1`TX__}*WLObC<{F'L2Si 3|FɓRZFB!v-&'jY~37oF{7L2Si 3|Flg'&'ǀQQii{;n݊8~vOxvܸ 3LjT~WVJռn>JC~7ott]펫o[_J5@f* J$'4ͭ\x:z|yR5ǎVc}ȟ>tqH^۷-QjT 3HN2SiZYY9t M͵(e>'ķƫVmX?qjlnJ2SiT 9Li/6118ȦY^n}9O`_8sv j.ffѣ֗r5@f* J$'4m:t腦Z_ݻQJϷ> WD[oŃ/jT 3HN2Si[YYx{uQ/a܌(e3>-}zLOWω|GSI2SiT 9L'/RΝgFTᅬcjw7b}gB Jd 5@f*M?y rR5SS40[[k7O[_;%4@f* PdPEE){?_]m} hG@w/NڏØOzCB Jd 5@f*M?y QJ,->4pPmoBt]~ϥKvL2Si 3|gi)J ZZSi8خ_u99y2~B Jd 5@f*M?y ZR5ǎųg4xsfvic^y%.{B Jd 5@f*M?y ٳQާgTzbs3>0ǟo:9r$fgƍn}GY 5@f* J$'43 ׮E)U'94v|U,,ĩS16VO8]SSϭ/(L2Si 3|ɓ(es|3@* }}.ř3Uu36{l}G 5@f* J$'43XϞɓQg|<66ZPiZØw4%4@f* Pd`]T͝;4/֭XXڝ;yX\?h};-5@f* J$'43@KKQJLM>$q\ծL=2ZB Jd 5@f*M?y rt]ǀdT_ll͛15U5 ckPd4@rB JO^>qvR;W>x,9|x`FO2SiT 9L'/zQJ՜:J{_~⋵ ~ff[0 5@f* J$'4S(vVW[RRi҃q6ur|A<}:@2SiT 9L'/J׮E)Jq>=]?Z(L2Si 3|jk>Tdc@b* Rt]⮟w18B J_o?S/wp5qD(Bhb`(XldK&sCMJS;cs3ۜ>WO z~ 3HN2Sib12ԚO?m{HLfMNƖ-uG."4@f* PdtgRjMUm4>0ן#G" 4@f* PdtgeNRjm4z59{|_D=B Jd 5@f*M7|V`j*z(ּbk Pi`UMOhTUݟ:aC|Y_D B Jd 5@f*M7|V`x8J5O?~k Pi6'cXOgθz/bE 3LjTnr,DRk?^JSo6EU_7 ZqZu mB Jd 5@f*M7|e(;0PTh|>wH },k{,.^l{jT 3HN2SitQJٽ`Ш4dB<@硇Ѹq%4@f* Pdtg)8p J517&0hTHbֺeH\?@2SiT 9L&-Ǟ=QJҥ7@Z33n]GGʕL2Si 3\>r%6nRαcmoIn*RԩwoB Jd 5@f*M7|q\ E)u{bae`040b֨ KݻcnM2SiT 9L&9w.*Ji`h{X*  y?,>qR Pd4@rB JM.kj*fff}``40{/|MǏGB Jd 5@f*M7|ߏMffֶAZX}{N,2wLk 5@f* J$'4cǢfj}`40^~G3:-(4@f* Pdt\CCQJ3spSi`нJTUcOŧ׋3gnB Jd 5@f*M7|L G)̮]mO5୷k쁱TU8q[jT 3HN2Si~?z*Ji`*ֆƞKgojB Jd 5@f*M7|wo{o|QZZ23۶5޸l/ގ 3LjTnr|g3:m/kJkD3ƍq>N 3LjTnrQJo_,, -* I1:U d)15*5@f* J$'4R^~e`Qi` #Gᇛyrz8q- 3LjTnrw|8&F4/ΝͼIn9B^2SiT 9L&e.Dԝ7K-[xr6l+WB Jd 5@f*M7zX>J;=&45/ƍ o#ޜonoެ5* tөS5VYd*n 5@f* J$'4;s}m/C&~v9Szסw^eϯg_}fwv}ٙ_?//_k_Ri>$y>Pd4@rB JM.k^}5*Ji`}ehIo_L\wl;uq>}r]@;" 4B*P + HSKuर Z)Hc@z}۱q ϣDs>;Ң1fŢ޿lެ񗤨@2Z$@8$NPծ2>˗CӅөuGMǩ;%ۧe - R{dGQd4HFKp5HFK#qv]r@2Z$@8$NwV@\WS+?hiX;'Fg&5HFKd4GQd4‰jM!a`Bq:v#t"p'"v,J=Q- Q(<\Q:; l;dH(jhihi7MNjJ5hT_`{4~x*Yq6 v?- +13?tvss/i$@2Z@2ZoUwjJ56==m{4'Sl|Xx,DĵlrR}՟S[&'5HFKd4GQd4‰ߪRͦMOMٞTۥw C}Ȍ\/_w.>rDEIjO\)jhihi7%?j6Ѩ= W\MO%' [SW^v]ГԞ6{&k"L, KWii0bpؾ(>hi(jF8qW1twbHXLL|9Y{45MZTM/WGoH=9t1{%Bvxz`m_&m8y?[Y!`ʡC&Z\WS - E 'n:JI[#ER;D<pJJʁT;_֏{6)hi0\[۝u}@,i(jF8qWtZoؠ2)#E*;]㙡Sy__̩c SF˞$- hUK4@&i(jF8qWrYܩ2.#E];o1_KxEۇBu|dY5G8[Z:wN=OQ@ - Q -pF==Z)wHX^?s4&"2҄'GƤU,˵6DsD XpKR3In鋟d##?9Z}`99DDv5CDD9MDe<5&L<~a۲iX;"'NNCv ڟpĎm2y'oؼuLw^8`j…{#W^YH!"'4DD[xQyoiēѨX;y\buL Ll;3yӡ)ewO+(u4"vM::yk !"'4DD[xQyoiē ٬BbYκu2<,33{h^D?>:Lf*owg/gɮC'^_?/ xDD {]xqN!"/8O%9MD5<5x<>88kkk{xߛ8a׮]7n1AeI~}zSSW<[_@$XCW~q0C\< -B %_nstG }B %'@P-BKF %Cazx F[1Zo/7 ˑkgf:KccO/f: tww FM"il [T<+V6]@exvï+u2{V9C46Yy. """"""""""BFz+XT6MMM|*7׽$[L`Y,=c8GtC?~c.!`jw~oԜO{N[T0W61b>]l}D5}<*pҴ˽݅KfuvW^+V 0^2Zo/%٫Z2Zo/%W=d0^^B9P'ߧe7۷K6))H$ʞ/'MԖV]T'4l >]qz/ \~qU3Cl'%+Z% ^2{CKFd+xU-% ^2Z/Quo,&X*~urnD ^ڟ :KۙSU 8}[d^KfX >ZZcc?ki]\z/W٫Z2Z%W=d^KfzhU-WzN{GGe&9C'KS=\͜R(蝜*|mt:Y-Z2Z%WXL:;{Y=kc֜?Z% ^2{CKFd+xU-% ^2Z/QWkrBbYL0(K$EYonG+:$f_yv wr,r##LMoВz/J{akNXq|ٲf}ɏӽǡ ^2Z%W=d^Kfzhh^В٫Z2Z%|5٬r<)J=_I.t7rg.9quz.7Sx*硯[}rEcВz/d226vs~oN aų ^2Z%W=d^Kfzhh^В٫Z2Z%|^KFd+xU-% ^2{CKFd+xU-% ^2Z/QGd^Kfzhh^В٫Z2Z%W=d^Kfzhh^В٫Z2Z%|^KFd+xU-% ^2{CKFd+xU-%ح YL礛ri>85̫ K5Uw=rͻ|5rͻ|52jw=2jw=2jw=2jd5zW]~ͻ]{]{|5rͻ|5rͻ|5rͻ|52jw=r+}.]\G=_\G=_{]{]{]{|5rͻ敾j_Gy#Fy#F=_\G=_\G=_\G=_{]\J_˯y#׼yW#׼yW#Fy#Fy#Fy#F=_\Gy׼kȼ竑kȼ竑yW#׼yW#׼yW#׼yW#Fy#׼Wk5zd5zdȼ竑kȼ竑kȼ竑kȼ竑yW#׼k^v5zw=2jw=2jd5zd5zd5zdȼ竑k5Uw=rͻ|5rͻ|52jw=2jw=2jw=2jd5zW]~ͻ]{]{|5rͻ|5rͻ|5rͻ|52jw=r+}.]\G=_\G=_{]{]{]{|5rͻ敾j_Gy#Fy#F=_\G=_\G=_\G=_{]\J_˯y#׼yW#׼yW#Fy#Fy#Fy#F=_\Gy׼kȼ竑kȼ竑yW#׼yW#׼yW#׼yW#Fy#׼Wk5zd5zdȼ竑kȼ竑kȼ竑kȼ竑yW#׼k^v5zw=2jw=2jd5zd5zd5zdȼ竑k5Uw=rͻ|5rͻ|52jw=2jw=2jw=2jd5zW]~ͻ]{]{|5rͻ|5rͻ|5rͻ|52jw=r+}.]\G=_\G=_{]{]{]{|5rͻ敾j_Gy#Fy#F=_\G=_\G=_\G=_{]\J_˯y#׼yW#׼yW#Fy#Fy#Fy#F=_\Gy׼kȼ竑kȼ竑yW#׼yW#׼yW#׼yW#Fy#׼Wk5zd5zdȼ竑kȼ竑kȼ竑kȼ竑yW#׼k^v5zw=2jw=2jd5zd5zd5zdȼ竑k5Uw=rͻ|5rͻ|52jw=2jw=2jw=2jd5zW]~ͻ]{]{|5rͻ|5rͻ|5rͻ|52jw=r+}.]\G=_\G=_{]{]{]{|5rͻ敾jׯ?]{qw=2jw=q]{qw=2jw=rmxH__/Ǐ]{qw=2jw=q]{qw=2jw=rmxH_s 5zd5qw=2jw1QFy#FymռyW#׼C˗$Io=$Iҳ I2C$=P3/I^f{Hg$e$Izf._$$I2<$IlI,C\$Iz!IexH$Y|I2C$=$I/=$Iҳ 5s$e$Iz!I^f{Hgj%IlI,C$$I2p$c9H2y%>8R{{$˼wρ)X{=e޻@d,=I2sGJ2yp$c9P#%˼wG{(e޻#X{|HI2sd,=J|>p$c9H2y%>8R{{$˼wρ)X{=e޻@d,=I2sGJ2yp$c9P#%˼wG{(e޻#X{|HI2sd,=J|>p$c9?vā hP h@`iX޳FGZzO!HIj=GZzO!HIj=GZzO!HIj=GZzO!HIj=GZzO!=o-g:~_u]9{~z]5}^u]9pN=0}~뺦Cv]5{p@ @ endstream endobj 17 0 obj <>/Filter/FlateDecode/Height 3148/Intent/RelativeColorimetric/Length 191689/Name/X/SMask 23 0 R/Subtype/Image/Type/XObject/Width 3148>>stream H ٭8:R6"t!M% bmq@'nm-aXiDe.VC?tV,͵%O9rwKÑ< Cb|9.,\S7/];{fz%v(]cu򽴸~j]R\~=\`U3ptC \OvOjP^Oy~PV>W\766JE `Y^'N$SƳR;>S_4ʵ7cxFeˋ+[옏Rx]6Z {R8~<$.߿dۿjjPyrd;V*aF7B4l}=BHfx8N^ FfX#V=?hqllcG~4ҍvD-J4f|<$Is|+kBÝؑnBzjȏFF;y2lo n._I j5vvt+#W76뱃kP\Z^jg (JSSSh__H <01$'IhvƮ.|p;W(7;޸;;ߜ9sfhhӻ>_f(~63lt^~ف=ottodd$vƿBQt^T*|աCIaz{_mP0to= u荛_ƁJo+ٖZ:| oDcO$I=IBy[k=s۹B9|ŎtuS3?t7e[j>|3v|544T*~ gOmz{_~1W(gb7 c}yO|'vz{_ɼ9p`( :ԩSJIZlpp7?;v&_{m;IBM +B9{O+M}NLz9Q+gk ~bؓjiLKt8E >C{:\H30jhNP6G.ֶO+~Ng+K쯷jŧ)ϾҙkkAͶ4:dZ(j8v,$Iƹp!Zo~+d~; %m8SKٷpdXY}`Oih'- 5@'t'o>@u+ :8,t(8 $@ Rd -E 2!T1 Z!D hv׿vmwSd!Μyw=:4z9a߮hwpݱ'Ԃ(o]@sϛ9ram݄[24 O4x(&|͛#ݻA-z9=]noZov\r7]7ah'+ + cg4/|76 1hwpF1Sn7 fDEcQL|na5F狋5\q S*KMXoZGRv` Օ3gd+ + cg4/ YcR㏵;8v 9{M%{N/ګ:-ԯ0L{uSh=JJj+b]33֘T9v65\luJQHsR\ovKY%޺R]Y&'^i@XiC >cQL|ha5&UBcF✿@/?VۥV*Oj-wܴin=.o䀕13Vė{*b vD,(^nyN_Ǻxߒ\uT*wnoiV+ cg4/46 1rv V:D,\_nǥyNo:G/'.7pK0IrMx,J\cs 5F1k׬1iShpwփ(4nǥ|NxCWo蕃3LMi7౔+ p13VėZ>*ghwpQ,7}C35%94Qi3^N{&yu<~9|J@5F0.7(elnM !svIu盙W4a7h7+ p13Vė*UaiwpH3o; B&7fj́K_Tb75*8Jj+ba^]s_ Xֵ(2yN?]io7(m|ܺeb7kLV+ cg4/T5FA;?}z,JQpn(zNƊl^gFrl /$x)Jj+bI+ eyHV鵭tO'T[=uJxEմ OV+ p13VėHWGED,Js $ȵe=kY‚ C-y'Õd13Vė{}k$KKGٛAru( k`\~/ǧͬ 9-GG W9V71{Α#-R%bA̧ K k};?$%>}tvbs 5F1@N9Gֵr#bYj@du >[?o?%А'd13Vė9ܴ}}֘=ggwJł'?np\7Xi@VXiC >cQL|1vYzŲ{cEsޓxn5llLxW.-ig4 4x(&|Ԕ5F?>[KkxDxqmG"r.7MTdGvGի»uJj+b Yck=gfW(}|9}aЄpyz]rW&9uJN|pRY}%wDE^z?]I <\ؕz~|"КXah4_MMIOnZ`Q3ZRyŇot)|1'=;Ts^X|̲'׳JfkW^Y HnZ`Q3ZRynjyxv&=>Ts0hW|\k}lf=aggg- @K(j-tKV8?:-=r}>bX@ڹ|N6:cז\\l[9>\4- g4҉. Z)ttLvK+Qll?|*=;sy[6;?}R[B˺fo˖s5F:qBA+eCnݧAF\?Fg, 9݇K=VٻfoxqK9|FK#R.2N&3X)b%sny%7.̖dxlbݣn)6s=oi渥FhiE >N|pihH+en]c3AOWKçsy>wߵY@l- g4҉.kN&wy&b| هElI6Tu3(ulF꟟<)} BDZI4xH'n>kV8d:2DiZd*+y|:Jn~FCC6۳9===c Ms5F:q~q`2-R "TҳsٕgsQ񪳙=xf6O$H4`3hiE >N|pR꺚R "՚ >pbןsrfk6 %ǏKs- - g4҉.rZ)d2 nK(6NJ҃trhQFrvn޴Y- C}I% 9|FK#R2NGљ MF9}ҝ7ЖP\OnaNڒݻ-ٖ|?Z |hiCK(j-tKC2ζm%DE~ƓgwvȩRo[o٬і!} yQ3ZR{R[W'KA[dƟ+tx*x JfdbB$\Os5F:qaqmԖ~mDE-֤g5^=?R֪T=†ΞahL30 } x4xH'n>iɌ'>*Qlu49l٢Ws!6pC}ڜ[ ZЌQ3Z q::&{ MoG FzO5slX{جF ZЌQ3Z q:;%秃(6k҃>8]!6\ֽ6033~4Q3Zr9q2DTDEnWg'<|NVmڵUslʝ;: mvk=##h?[@K(j-tKCCZ)tu]MdK~9Di՚?^(/%Clng~- XGK(j-tKZ)dlߞ)QlBQzp/oGZtlsx"}Myfңh?o[ii[5ɓlZ\mndeDRZ>7]7ר5.E.h%RV$D̯)8ݞ~=7> <\FK#8aqolgAʵė %/{\'=7s48'N>idD+e _KW83-=xjѴݵ{m׷ߖ@ZGQhi'tV87kٻA[dΪG+oM.m;S{'mV=@9s48'N>RJPalM%^va.^[@g48'N>)Rk[0L)R;YKG -rUxNWEmփ{|az]ztݔܢq5F>q MV8œg-}O - YyN]+vmlIZWܰKO48'N>qq𬥇ׂ06͏?Z/tog)kUTd[_=~,==JK@>8\FK#8GRYKjA槟T ==Y+wog~4!k \>,=:PK@8\FK#8qq{al*=8$e9}Ev5%^ KRI7l4 - e4iTR)d_djJzzݑq5F>q MQ2Nog-?/al,KI{NYhu=e{}kiZGQhi'EZ) M.KIY|NoZpg;r}ץYliZGQhi'ThS(ySAG=N146ǺTj_$- 9AK(jp-|@ƴRYKG MJzpHsמZTq;ԥ7ɓ6Wm;岾zUzoNv[Q2Z4hS,fƦi}%=8$e9=2d/R oKoz]J6m;/_^8\FK#8aqo=khiZ_II~NWEB~5oI/1۶3~Pz oB[GK(jp-|@FFR t4 4?gZr;Gltdsvw&do48'N>1qnx|3cӴENn.ͅș3kر4Q2Z4U*Z) st4 4$ӕ?va!Dҽ{6n"~Pz;AKhipE .O|HSi;YKOnalo5$E'wfؿM!5- q5F>q MQ2N_)ZՕ Ms/҃@%Z7O֤Hs7++қ?Z|EK(jp- q Oݻ9JE+eBaγ>8i\Z!^ -|R^"3]*\LNJo`hi- e4d-,,5::*o?2NOׂ06tMzpHWܙ?lH/}cq&wv/8\FKCӧwI7Jg`giZ_II>|٢)?KbiI67o"wHoO- q5]FGG qq{>y\5c JI>|54]vnlIO?եدר<_d ;Z3uQtSBH*hXv!iJ ]܅֢,!iW"L~81NH2C`{Ӂυ1|w`ʥ`9lJC588Rdf[+Aα? ځ>gץ?_ǹ;? 8V,PXii*c3J_n~EE8s9=Dog!&xd Ι3{+ .ar 5،8b1VJ; tsZY8s9=xbꛆGae%>|"NŕJ3XiC 6c'N>)N&3J?_aސ|NXeWzwFgW?boOƹ]dzZ=}N481`3V~@ΝN7RFi.]Zeޝ'gM$~*]>WWJj+ ?q MñRf[3 ttTޝl!Z\K.Nsu 4X'44+l{+}/Aw X:dr?.>WJj+ ?q MñR Vʷ t*]Z>|lɆыGL{J@cr 5،8O>N7WsA;ŕZ6,v~w{E#pu 4XiC 6c'N>)N&3J tsX.-NO?~e0ɆыGq:Nrtu_ij4X'T,Jigܽ. H707.><}j9usY U&q'J@br 5،8b1VJ;N;KAÇFqtbd Qu!톆Ln$++a{`9lJO|HS>+LfɕR H7nVO ځbo*n6IWÓ.Jj+ ?q MccRJwn޿Z.;yNX)srT)#ݼ{$]vx^\nfֲtv.\llHV+ cf44Rdf\cW0ҍߞY5fM-1yS=]XiC 6c'N>XNOϸ+=eFQW#÷قt7s[ln&ro+ ݅1`3V~@X)N8WAd֐[<|N|jIj]~Q{9ɩStÕ.Jj+ ?q M|v2YWW(3sM8l9|՟fttKKq.gr59"]@g<\i"4X'46+oW0^K-~>G\5X$_ ̮$tϕnJj+ ?q MRٷ+aK-~>[4Xf[<{fr5'~4t V,PXii:}:VJ;A0JawפoӇOrl"ݽ<;+@]i 4X'GR 9WW?H7'f*`+V z]~ybB7xXiC 6c'N>it4VJ;=tuJ tP7x^6[fxt&Ȉtov+`9lJO|HRJo Qjgq&DM ܽkr; tu+ cnFu]a\&:G j 4E( |&1n%BRJ Mc3㱇2qΆ:zYQ- ?@;}5&qwpKQ4C_U>?M/9x#cݿr}[ztsK~4(GQf4ė42bImNvpKlI7Vyu.BUz5M]oJye V:F'B4hFKr5hFKO|NŢ CkL1-]\8H&g;uo䭋bMz ;8r7&ShiЌ(jЌƸOgo\IsJ^zp9v&P Io`^u<̈́^f4hFKr5hFKO|f׮Yc\rД- 捑YtÏpߘ3-ʮP,0tͤ6&4hFKr5hFKO|f CkL=#={ ][8iv ՚siOM!ev9O#@3Z@3Z~$oB5b;,=;n_5y3{FgeWlOˍ~"ss{XGKf4(GQf4ėoIE[k ܝszCCȍen޴ar7dhiPhi/o`Z$=z+u1Dq*xNoP>RU^Ž0tkٹv- Q- ?@Zc\rtp,Dqt.Ukҳ'\P5ĄMu#'NH'4hFKr5hFKO|~ CkLD4ByAzv9&ɇ*Z}lR7S?;@7Z@3Z~YcOzV~!b2+=;~ZeYJVr9|hiЍ(jЌ@ę3cgfoA'M*xgvy{>oիU;8x C[HxhiPhi/DܻgqL:m3Z+ [g)ŷ%Jgےk*wɾ~]z{4hFKr5hFKO| R==DŽdwh(vHlq&=>#9V9MO]{}hiЌ(jЌ@J5=ah>ell-|EJy6'=&CCGGKf4(GQf4ėR>Bٿ_zչ ˹J/].z>- Q- ?1k̋fjJzA坱szkCEJ,=&LjUzto4hFKr5hFKO| TahyoUM^jn%([\Io/+s͛ojFͭFI*ʦv}9},?cUFG%ѣڽ`+ 1`+0q}{io?ך3iHGN|պl_8V-\ڽ`+ 1`+0qY9yEo贷gGI*FS> މV!YMV}r;?;4XJq 5XJ#L|T9yJQrzE> ޡKK=/$wMOJ(b2Vc2Va)뾿;'АtJ+ Mߪ}]1|vo l4XJq 5XJ#L|fn;'L訯=T.i<9՟>[>(6rEr/oOub2Vc2VaY{2gbBwo ILE><9U.􅕆bɽ>_)Je4Pe4Ƽssv% ϟ]|hi[<'}nÇ%Wv_>"V,c8,c&N>5:˜r)6 I rwզl{/.6/$Wva2Vc2VaYŢw.sڿʫѿ=T_ xN쿼$r|bBr;og>@pXijF8`Ȉw.s{wM Ie/-V-;k=o z;Xi0Xif {2XMu9JRAnhwO5<˜bQw7a=JRA'b=e٤ݟ<)[Xi0Xif޹e(I՛ikٞKY__Iıմ+ `C ':v;9/ݻ(I˚vw9sZll۹]I팏kV,c8,c&N>55˜_vnYz% /M!bz v?uJv{ 4XJq 5XJ#L|0TIrvnj||~1JҬ)$FS>9, |ko;w7VeJe4Pe4ϟ>}?N>-|\ݻ}RT_U$w=ov|MoY@Xij={BՑ#G g[ugѣڽQ {@.PMеٯ8+*F1y;klҲA 5RLHcB**+[54Vm!:ۀ+硨ÎVk]$^8oJl/usl*} 4hF@9B QiȚzJZoo=}}1;f4w}$>DM.n=?1޽efzoJfT#宮DH38clcPz^)x~0?^@Cʻu7]^ɶ9#:tT4ͨ4-//_t'+q@g$zf#1rk- vwoǺ9@QiЌJr4H'n>h(ýXpAzͯ)>$s:7b~5:^7P^H.* QiPPfTe>t˘1yGMdTK@s:z;<a&~xۏus&&WJfT#F:q@fɓ?3fv(>tT^^t;һm?^H.* QiPPfT͚>ztd6 ŒncJ]:Qǃ+J~s@BQiЌJr4H'n>h֬^3:ҒVj?ۼ%}TKϏMؘ{ݘQՁ5hFN|ЬY駟>bu <CsExPk'+7b[]|@QiЌJr4H'n>hW1>8\Q:VI6mn@QiЌJr4H'n>hW#Gf34dWWuݺ t*>#TٌwycFG]dvsSz{ q4hF@9B Qi74۫ýXfJ$~cm>JS9J~s-%_Yu{oޔH* QiPPfT*}PW6[3:abVOL=?pޙ:leǭץw76X?/:8T4ͨ4҉=^\n<٬]Y>Ofn8L5t$>Uyl /p|_~Yzu q4hF@9B Qi74{>[.K)NJd.–:ӑ{ƺ[Y}_K+Ѣ5hFN|J=`=b߷t}Vw7=L?VWJfT#F:q@+}oYkAgzZTqةgs_uSz}Uj֭~&UgՁd5hFN|D0WH,Ny~0: qu,yXIᆵ卾|Yzo Y4hF@9B Qi74AWWm6k`nݒ>[l =?p_|&>tPz}.{B@3* jЌJ#ُ+[֘>|(}xT63x t>Pk>*Hox~u齁d5hFN|Ǖ^[D3CCNjng[$|N$Q-a&{ؘ{B@3* jЌJ#OVzdͬʞ/.vt<|j]:1woyMפJfT#F:q@th{z1˞/Fv7 nC;6H,A AVl!:H RBAD (:qb{T"س=wN7r O~p/LN\ͧNJD 5@d*pD*h];773A+ۏV2e{}`n푲\ʽ#)Ws+`4@d* PD '>@d?R߯.͛׸VYWKs q)!/.^{T 2N"Si? tSR=:ZE;dY)V}c)9ݜ?^IfܫLʽ|la4@d* PD '>@d?/E>}>V{{UVisv=s9߭lŇw )\a4@d* PD '>@d?uQ$ի};PAfj=sQ??NI:T 2N"Si? ^CH'v o*a߸{w`nK ;܋`r2R~"LjTJI])9M\mU۹wFZ'!࿜ KT 2N"Si? ^+}P]=Xڇp{ZIYʽ>t&?𩩔KT 2N"Si? ^+}\])sV7Ze0VsD9ݨ럯޽NϜɽ7 LjTJw:uQLY4|y*N݁<`;-]ν{==r#Ja4@d* PD '>@d >r.ᦏY1*^glv݁<6z#s/^ONݯ]4@pB J3%T(zѺn49|n;s9ݴ^_N/^63o>1r#wvJD 5@d*pDP۷HO[e0 KwBnOWͽͼOM\ݯ]4@pB J3%Tz}9qp{\*{Zʽ>tyo3̤\gJD 5@d*pDVym(=VUV sӵܻqyNA1N͕k_rJD 5@d*pDV(z'l(zصܻqyNK-'w;yמIn F"Si 2f8"K/E2~i2ܮmʪ7~?ZMcUy=9rwvJD 5@d*pDVWH7l4r;s9V/f\{b".~"LjT,++h]=xZe0 Kwխz>SS)wq+`4@d* PD '>@dɕ~(Rfy䷱UZe3RVݏt >qnƝS.3g2 H"Si 2f8"KuQBs :J˟s?_\LHե;OO\įqe@* J'4ɟYr뱱(z';M~صܻyNǁtqɔ+RiT 8LN|vRÇyxl4!lnfVm?~ <奄t_ʸDESW4@pB J3ҧNE2 &YnUw#WŌ;>r vƭaШ4@d* PD '>@d;kuQX (?[kUFL7s9=4$t{NƝgfR߹+èQiT 8LON>@dt]E4Ս;ϗ֞ŵܻxNO݄n__q7HϜɸ2LjTDJWEgpxh{ϕܫxNzB/y'΋)|ƕaԨ4@d* PDҌ'' Wzz*i6oBxvU&j^݁@<^B_h#v+.* J'4l٬"}.\Bns*'wWo&Dv3rg\FJD 5@d*xr"++UQϱc~S iʽ;NՁ0{6PLjTDVW_}*ębymʄܻQxNͻvKy˵/ LjTDVWg"q:)72a-usD9=4mnEvhΦ\=k_A* J'4J_^MLTE2u}P,hiӻ{} az|b'ڧO\fdFJD 5@d*xr"җ/WE2u|L<o7Ze\b3@ŵh, /-%޼/fFJD 5@d*xr"ҏ\Ͻ;0=K +, z)>e_A* J'4J@dѣUQ5njʴxNӗ _lnܶj4@pB J3|W?"exk\$ͻ;/9ͽ>zB?VmRn,RiT 8LON>@dVUQ׸H r*Ӧwg;@7K/x+˶gϦ\eYA* J'4l"e]$ޝ4̽>K7l;7r JD 5@d*xr"h?*Y_w(V2a_zWY=q"P LjTVWW|_䤓@'UUQŋş}*g{w{nBYfS#G, #H"Si 2&xY?~L=; I4@d* PDҔ'O Ç۪=]7[:?}Szq^h3ү}Yd۷}RW_-/5* J'4,Cڪ<%{I{wrofB_ZȑvxA;4@pB J3|2Tر:=l~۫wrofB_Z7RllZLjTDSSmUuQK+:ҋyNps3!ïJ-rƍR+ޡ4@pB J3|2T鶪:ϩS%/K/9NH7K-@d*}B[UgnnrjnAŁ<{DΧNܶ\LjTD mUuKFK W:kJ/9=or n {JD 5@d*xr"P˗۪O,ʮ}@ʅe]O"Si 2f<9eٳmUu'GK,^[MyZŁ<>؍}>t(=|ְ4@d* PDҌ'' ~ᅶ:ObXNѫ勺||iPv'Hp{ְ4@d* PDҌ'' vs(ve;:X)8t~GW|jٵS.ɲ[î4@pB J3|2To۪<bXMl/:t~3|ZٵR.g-5z* J'4,Ozs M^s:8Ͼ^v텅ҥ[î4@pB J3|TѶ:_h@yVnΓWK/9AB_weSnWN4@d* PDҌ'' @dy*=;VU|͈6bkuK7K9潴,o/yrvB"Si 2f<9+mUի#(^$L;wr[?$4ҋ~U; LjTv7V݆4uq r]ԬTM>I!q];iڠZP%DRYlv}Y^svy|,Lsh!iw8X@NvCA 4MSrT,`˨4/, Vi6QVךQEO{;;uA'o5>￯rT,`˨4/, V vvm0P{;;R' ZC{<33ڻ!G2* jJ`wNx)9I.@@P''%/n`QiJq,(&|,dǽs+z5qIڛ=@roWP5g%ؘn`QiJq,(&|,dU܉TF5?hEqlh9~CԸכoJַ 9* Qi0PeTėgyNzәnT0b=֞ cNb]P]ӞNǗ˒unNw804XF8B Qi_>Xҝ/s'Lgnw8ܿ/<zJ.-˨4G2*bWRΝΜVKX$]@{8l;LoreG{__ϞiO˨4G2*bWz{ۗJ޹BK}T$d=@roW8ftlL{704XF8B Qi_>XWxpnOכQW;c2t03%>ۺpQcӁG2* jJnsR]~;vw:Ն ??>hO˨4G2*bT*}wn77fo }ʼnί6L|DW[{—֞ ?* Qi0PeTėTwnj‹Q8i #7GԔ xQ{7 T,`˨4/,Ӫ/s'Z-.|ҌDp+ at]/|Ru9A2* jJ2Jonr;w{睐3Eq"-t~!+p󰧻|uU>x; * Qi0PeTėV T ̙=]GqܵvYw:զ ?M=_"|Cm@.PiJq,(&|BmwNxiFq"{=2a!Թ>uRiJeT#`F1eF*nQnZGQ_ȄP[㵆v?7'y=wyA2* jJ2;IW~x$NdNszWM69; * Qi0PeTė޹7;zv8I{w[dTߵ_]~jJzV*ڻ`5XFQL|`JW*޹71z֚Qզp0꼚# oy_{?uJzVڻ`5XFQL|`JyR_]6{IhG{8L u^n ۿ_O%OgtA2* jJ2SIF3z{ u^xE.յZPF2* jJ2k~u\[^=PQo: PRZ]PKjժ쿶ݮt /4XF8B Qi_>Xfғ޹ڻ { P󽮬_ho wy@PiJq,(&|ZsoaA{@z#q P֓#Ar|Ww%@PiJq,(&|c~{0(^s i)FQR:q]eGHY!1m M Rh$h[F.^t\RaϽg+ݲF1UZM}ԉ(ZOn TQiG@F92JV\լw687(Zst?ܳk~l4wJ8B ʨ4ʉ/UVK}oih$?Zh[oP0Pf~hnYouϻhXB@qQi_>(St:ǭw(N<ѳHj[~+x7gfwJ8B ʨ4ʉ/Uzz:u.YQx;\HjG]~Vo=^ݬVwJ8B ʨ4ʉ/Uzq1u.Ӌ\z;":0Z[k=y7+@@4( P2*rej^YI;wv'YoPPdk_|ܵ޾Iy4OJ2* 5(('|P&XCRr_a{ʼnǝj@aC62{]>/fv ӁPiPF@eTė+}X\=ފ^ZXoPPĵ_f;;w:bfjYOB@qQi_>(D\Tw~'wѶ0v{<\z#b9b eTjPFQN|Lj\;yz`/kYB@qQi_>(ٳsOc{^XhGq~xm=@aCx6[}^W D@qQi_>(˩s/U>Z$bz8:_v=mz#/ssֻPiPF@eTė+=?: ݃F'ݷW~u=~c;ϋ93c eTjPFQN|Lz\=+(N(t:_ٹV'y-!aw]f^zT|^W D@qQi_>(T\~t8{dz8bz=Շtszcj53QiPF@eTė++so|zt-k]!6 fw|رӧ}^̷߶ J2* 5(('|P&XW_M}ֻw_lEqy/(` mfRzΜy1O J2* 5(('|P&X驩Թܗ*TomGqqho[oPP~Wa=Iժϋyn ,TQiG@F92JWs/U'Q.iz;zxa#[41bV*ֻPiPF@eTė+]徙݃tъ$ֱR+=>Zñc>/n ,TQiG@F92JϧFz dIsZ@0CĵGKWݞ=:ċ أJ8B ʨ4ʉ/ Vz~>u.5ֻq7fmz;%a{=fwjzVV|ܱJ2* 5(0l6ϝ;Ç@'z\=H˷68K[oC=~~/}ywz}Ѵ׳J2* 5(Ұl6GFF3#I:_޷;$߯ZoC=t*MOWXߛs9>neTjPFal3599ig};k޽|%d|(p Y}.8񝩛k֋`wr@3dAz\"4( P2*l2JyȈKQαO*֋`_o5c7VߖC# J8B ʨ4+=>:=cc{wr':"j}\ fkY-aɓ{=J2* 5(&n>(t:=wz5s&7WP˝+9>^}x. TQiG@F6q@` 9/Eq0wֻ'jq3kٜ/>^^y@@qQid7 Vzb"u{yK+(NfVzwC_gjKPy+ :* ʨ4#J#L3:=omxl19P^@8P˺?] dkN}j}m)Bּ@ϡJ8B ʨ4+=::=GX#~9Sw}\^@8P:~IV>ԩWrcFF* ʨ4#J#L￟:={-T8֋'jMPȍ @1C@qQid7 Vzv6u{{G\k-yf27WJ0ԂVL|j}'Os3=m}PiPF@eTe^\L\.׭Wj=n;@48WƔjHu?q4?RX9TQiG@F6q@f>u{zg2b9ŚiZJ( KeC maJ2* 5(&n>(Ӭ/y{}Q赪iZƍ鋓jm,,\ȃvZZ>Ћ4( P2*l2J8:=GZ#͖8W+֋jF;W ƜY>D7n!ai~jnH@J8B ʨ44+}`8`+Gq;C֋jq/stb}6$y 7I#J2* 5(&n>(Ӭ`;J'3|b8@Q=ʝ/T5.,=hX7y71=J2* 5(&n>(Ӭcsߟj֫wW+QiZī$/NmT*߿h`y)A@qQid7iVzf&u.dnݲ^t%hzq4C`z1͗Oމ'K<@J8B ʨ44+].s֫w۵(N|煩i\I>>߭ԭR i~u@@q?{uqp|MmtGQ!M:@)K@Ӫi u *LC۩S7O4w~=tFxJ5y޻SN8qL xQjY}Enͱ5А{Y{e0PiЌJr4/4S[1Γ|^z9uVҋ6Ԃoxdpk2$4&VG혣G_H_ͨ4(G@3*0@3~3 ҫ|'3*8jC-e_5n+K{}gj7BB@3* jЌJ#L|Lmk5{5yN^YZuCmE633>iC}>fswC@3* jЌJ#L|Ls132"wZ1|=mHPwX3b.<5=3R*}<>o&WH_ͨ4(G@3*0@3͕8O.'wMi=iuw۳~[snUg|k[o/ͨ4(G@3*0@3͕k>-w}Qx̱58NG/}[B=mH|guՁQiЌJr4/4\)kLLH~Ff&bIqhu\~Pގi]0?J JfT#FxJYcy*C1Y!;7C^y~ۚ {79)76* QiPPfTaf+=2bqI-V͡형¦U^- 5hF&^>hҹ5yB68q3͡nzxbu; }||S\iЏJr4/4\Ik>-w \-Fq1ōһp9u}{O˩UZ||S\iЏJr4/4\IkLLH)QxU8궺pWUZ56 K -J@Wͨ44Wzlh##i G\!yrQzq4M>]yqYlC*n`PiPPfTaf+Ycy*'QOפ@s!f˶{ߩH_Y_7>.7* ݅Jr4/4\ikLNJA68q$mHeC^(ێ9=|? 雸{kΓ'ҫa u4(G@3*0@3͕8OTPz8qw*ҋhPﭴa-=}~|P!}ss>^oMSՁSiFT#FxJYcq;g (N\ͲZ9{GжOf&yRؔ>_Q齁RiRT#FxJXc7lJARuN,*͡+˟zfS{n_^sWB{QiPPfTaf+}5gWwQλKҋhP;߯J_7>.:}_ijT#FxJ/-Yc|>~,} ]/Gq:'KҋhPa>]^3gl6]&=}\i4(G@3*0@3͕.m6k~[J_#~sʼn \-J/UC:VK?hͣ`gzڐzNNztiw_+ 5hF&^>h҇YcJ%{7לA;ا}Jr4/4S^!k\$}Qu~t.6WpQ#\/LR x>Z\sVV`?V* jЌJmOTgOqhºI55}HnRu_lߘilEfeݴ6(ѺFp{g5%T`f Nr]l͔Wzx>!ec a1@C:[\ҼA.FFlk8 }gd4(G@3*l͔Wzn鑾!eSqFsm4Dy+3npHߔŋ6V[/L3U5hFM|J5}r9[(Hߐ2s<Q9?ԍ;2ZtfY[zמOwcch\>a(}C|5Qy¬? 꿾ͦ%w>)>ҋ:ǎI_WMSihJT#F6f^Tzd>l`Qy(H^?JUc,}Sb–1~fE@9B Qid_>hK?>ssO0reKkxT_sԆU[zVg>K&F@9B Qid_>hKe{5qHS%ԛ+d-Sm0YXQGC:wOk^ihnT#F6fU]jqOYx>S(:| hq)Hc'lr9KF@9B Qid_>hWϜƸLG){D!#]\@~zbzV/(}ЖN.gϞ>:VJr4&|̻J5&r\^=Mb&#95^@ޅGx`-M/L`N~YD괵qlJ@FPiPPfTėyW{1.sisf&#WһûPW]ZKϑOA[7Q$}MXi* jЌJ#@3*}5e^=Mz>#~Nzwux nEZ??~xUg[*I`sU2Jr4&|̻J_`qwޑ^=MC7KA9LϹYQբ[O m8;w:>^yX5yTi * jЌJ#@3*].[c\Ʊ)J_B}of[ϑѢAmǗ:Ko_* D@9B Qid_>hc{{1.iLFIsҋËP{վ l:KqEmlU}E 4(G@3*l|^=MW0J:OH/./Wryޡ?MK,,K:;4@y 4(G@3*lho;:1A A%Xzq %42eOKCWSUモ^@TU* jЌJ#@3+cI$;lK/g0J:7<^@-JBXɡ0um Qڻ坪N< QiPPfTė[g1.39)zj ( (I/ 萗sR\(m?HU $PiPPfT&&&=/5eWOBFI"-8EC7_-/ͮ]TuE$!^i@ T#W^uqqg5dAP4mbي Hc@c )EEr@ @$R hqf}ӓ*U}wo~zo$_XIoV8sfbŦyi(=8vdbiſ_tyT[o\Ó 0s2Q2Z&&&6I۹s>qNͶ Mu(=8vz9XJYi|s׶[t?+9 GK(jp- Y3337o$_XV8CCs&(Ql(NңhMˋ+-*}Nݮug{DͭڥDz~N@8\FKCӧOt9,'##Z)ܩ՟A[ҳhEݿ{ϕUz7 ]^ĵkP)M9 GK(jp-|˼nq;5?'A[wҳhEǯ{]˓iO.u6J0s2Q2ZyZ)4>a[NjAtEzp-u,:M?SZǺPפ`4d- e4.Ri|*Îޜ4;?*%uе~vǼ@dgs9%޷&Z0Jim$b =;&(c7vE*=Q|n#9+u;)li-;Nqg(y48'N>>tH+e!woσ(gƋ:wk[B<(uo͍&znNzs2Q2Zy҃Z)[Z=Qg%qŮ%BhSki,뚹_\7kr2s2Q2Zy҇kw]G MLԥGFz-g}zZJ˺#Cf}v+HiJgrRzbŦ's҃XŢ'-XkK.ln C=5%lq5F>qe}Z)>,=wW,b$=8UL_k=9E5waWaIﷹVfJsQ2Zo2]qӹ Muaz0G8CsM)!Q (qd_[T+gB!L4RPț"u3gl{p̟R)gvd*8V<4(jЌF1fғ֘9zTzn_~jy+u<6|r8OkߖקJƱ=2 [k؟6Z@3Zė {K>mɝe|y=JҼyaaMzp+{R:z6].`*9 a@94QL|ٰK֘Y&=n7$͛Ӭ#=:Y[;ί:=W޶>ML ǶR wE (&|l[zeo݋,JRܫHEuɏNwZ ՟FƱ 3_T a؟6Z@3Zėң֘YXۗ}4Jr[h@K8aɝǥh/I#ӿgurr{Ԗ>oǏ3fm}sFKr5hFK@ZkL>,=_ϟEIꐟ_^(t3{rtf{G[ۑ^˫,336].ͦJ 9 @94QL|Y-֘UL\kDIZ}kWz|@hyƦNUA_zIi- Q-bh#G1s~}Vn@z|(LrcSz'ߖȈ˽/ql (sFKr5hFK@ZqkLLNJW;+QgY: p鳖!?mV*6]. n< `4(GQf4/4 gg1s{w(Irmk8О9t:ky6]n`*xN@hiPhi_>h@K/.ZcrgaAznJ4J\5eU3#o6+o.ıT^i- Q-bhEkL,,H-7$uKs{Wz| Xt>{S*_~זɷFƱu/_T0 xN@hiPhi_>h@KZcr%[$R)=>n+;̞-͹2>nWVW0$xN@hiPhi_>h@KOMYcrWtF;WPUS7$|)Z͎OdlFCzC%4(jݺ}8OR(m][̕&AP8~PH%%-Jdɺ!IR;M&bw77;ĢEܙ[]cf~;4&N>hAK8aɜ ӝ[Q:KW{+9|eK۪յ2C!ǎFCz9s}9kgߪDIꐳ7jҳ^G5˸9/W 4/l'`sm%|9 @94&N>hAK[c2glLzn9ڈ!_\&nΩ?>7ú6]ˬ}jnNz%snɜ^[Qe/rlv;Yq)$wfvhȥࠝ^ @yE '4OdɓsZ})$i䔱Gy53읬]--}ZiIo#] =j[!9 @94&N>hAK[c2鹥,DIgΥfGz| >˥ېWҫhKo={l!_xE '4d_(I@ΜUwq\ݑf-.ڡ!.i- Q-0q@3Zzx9GHϭK(IR(j_J/>|v6Ĥ65%m*xE '4OdΉs+0y%[,=>gRshiQ;vƱKŃ4x(jЌF8-=>nɜ1X})Q>lKohM+!M~‚sivqQz1~9 @94&N>hAKOMYc2T[(Iݲ;6>_qb?o巨݌c;=-xE '4/]doKϭGB1JՑnks\FƱKoMOKoG<c4(GQf4wWE)nߐ={ĄV0[(jЌF8-}5&sFGdz-JR.tStP)V> t{wfK@^E '4Ϝd΋/JϭI)$i䔟_Pݱ.VnSwz'+3ͧZZ}}.ݾAjI 4- Q-0q@3Z1s\-Y~"=>ū՜zM:]}=qlw[r(jЌF8-hɜ}Vvn;*\|S(3zPԙھ>b8BZK@E '41*=2GP-VHq|3GQMw؁J8TK@E '4dܜ,瞣 hiPhi/dɜ gJ5JRJՑ1Ꝭݝ^n}?yzw@Zr(jЌF8-=|=e4d'KGO{Iαc7T~W5HFL\>HGzK+e2##.dA̶w\?X&'g<0FnѿG `\/ <4xJp$H&.$Z)iowt^ lK.Ju~#k+ahX2J4G@2*d@2?*](h ɗ(6ƣ9ܦQod/\;w{7]/ |4Jp$H&.$o20Ǐ~~G's(ace[M+S[[z7]kiiv},urJiYwdŋAOK\o,UkQ ~z^}5oډ+7^Q+NԸ}/_TJMyŊ=bYO= EBaf~|mu{=ڦյ+W---Xvt򪯯ʟS>QJ[NC÷Qlʬnv7uB=m˖!JayS74Jp$]_5 k@,*],0JM(N|AM*o\/:34X|JW|_f)^ްϕȟ;zUUC@8B Qi$WӧR0GD m&\p&KGs_Tzt%>z6, ~=zxo* ^ ɨ4|klg&]*DL~*芃|R]ّ<l~fk?B̓c`~T|E@8B Qi$y\Z)ٷbD AOzsﳢOO¢ǏPmJ̇]/+* jJ#|J 0JYM_5hQl3]z 1 |zz?-.֓<SV>x0?*  ɨ4ɼVjP߼z ߚJEq`1(=yeSk|zKE|U:R_E;7* jJ#|, JYwcK mf9K؛ʴ͗ʋjo[w\/TQiPdTd tkVj\ C\(튃j>=eS,o28ygT^ܷUu\UWG@8B Qi$%nlJOOAی޹= UOO4ԣ*ٹ8UZiH* jJ#|,9pA+e>mmJ!bi˘%hyӓ/G&u]Uu+S]oS ɨ4U[R|6+KBgwKȪ ٳ: {;37J@PiPdTdt&P+e2{~0nQl1k { &K嶳y?>/.Snu^3#UyeʦU]WER1 ?eUkkPLJ4))6cろBi|s.9諛P//l6aiNo&|Ui 5hF'.4g H?]j&p-|t?_h;C) ֖L}s-瓢J4(G@3* ?q~UkL3:*nJA2Z֥_J&ʵxٵpB}L>97nHo-EQiPPfT~@3+=2bizFG߭/A2}Wju5/vt$Wha'&1MؘcV)b'ҥJ.MW;FrUtzkfIr;==P^ZT#|J=kizN~w;D黺VKXxyd0vX PON&i\ 8T#|J[cwMZN杏ץA Yza(vOjuŴtgzj #:+ A@9B QiKttز-8]T#|J5&dv`r v|>b'sVIz!(ѽʑ?\]Zc2Q|NYz uxϷ=L1RŮ&;.͓WZMzg ̷}sŶ=iH* jЌJO\>hs;;1n&KέQpNTܪեA9{웿~! u0t'l֞@9 QiPPfT~@3+=1aq6&OϬQp~6JUz-7rTN&e, uOB iЏJr4\Jņ5r+z:0gPhgRZܒ Af1 _*4! kfvgXxO4g|>~e}ΙëvggNcΡ+J{sjf-CQ1(mЭ4G@2*ld]ʲ"}t'UbxѰhgQ+u+R.n܋zc?$lcKm24G@2*ld|^YVd-=eڎ??͗ۺekwZX3^i%U.Y{SƟ 5HFM|JOL(ˊlvԽxfڎϘgvM w5)tVܯfF¡޽;$r… ɨ4G@2*ldT:09yeYL.uIKwf1vG.خAW?gn6v,^b@ 5HFM|J?S*]T.,ksͤЌZ7X4l'Y;B.+wexIҥ2Νjv6֕<@2* jJ# ~^{MYVٻW6ҩlNLLUu/=4\cwj7"Iz0O[ s$ ɨ4QVՇ* 97@^1l'?"\gK~`)M{-{]$Cys>5<@2* jJ# )ʲBէͪa;WMfX9euI7֯Soto7XT|]ߺ@4 5HFM|Jʲ̹srn\vbS;Mݻ̜{noԋ>_){QJ,.{ŷ(4HF@8B Qid7$/Q.+ 3[^z͕[K7[ϖr^itt[Oշxf_䎹7mw'M,Խ!- 9 QiPdTɨ) 3{]aˊi7#޹VGvJ.ީoW 0;{Fw~dB]\.LmiE<@2* jJ# ~ eYafxXһŌZhNcNϩU{iU~xfm;WaLu>FɄzd$dbZiJp$&n>HF_XTeEuoevG=ֽ4+{fL Ӻ`cZiJp$&n>HFae[o^w׹xvbިt: }U54)Pi] xNdT# F6q@2*7PYNSiIMϩ?ѽså> 󛳥i @] `nc9&<@2* jJ# ^ҎʲԔw)xǰq­fѽ{ΧF<3O cHNܡզM!C24HF@8B Qid7$K:xPYVyKjF烫 f11dZoutGj}cnQmuqBV.}"_ iJp$&n>HF4:,+ܿ{ CEvvvy]9{/Oh8͏# POOO\0CC.҇4HF@8B Qid7$K*e7udr,8{&{EgT'iZţ?*b ƍ˩hs$ ɨ4QW{{v#SUǰ5i;[Δ>?(uJ57q̀0l9][FBzŭ/@ɨ4G@2*ldTULO+ZrjrR6݌Z?X4lG☻a?P.>WxVupIx֞to6t~qeϯ4kGH7 5HFM|J{ehr9umtvG}pl؎>[>Ө4:{oj>)ơ٭ߦ3?pMv MBЀZD7/@m^KƚAb[~vr`_PbcG/ s|1~P/W|)fP=/R?@39 QiPdTɨ=x,+DCӛ@Qf;kn-fJu;bwkGn_v&2#b#}>ź|zCb5۾]yɨ4G@2*pdTzzze.fz\oMElG洍:TDfp:wh&78_wN->vKw_z{_I_h&C],ݻ5lnNrxNdT# F8q@2*qg(0CC7 z)NElmLz'2ӹ+C\u㱹W'7Gr~RqD}ޞ_1}i'4Dl^s$ ɨ4‰Q<*0O^&4Js_z'0rv/dN-˦tB)ؽ{s$ ɨ4‰QMWgΞ5Ld o 2aήs ilR4 -pAE۫w9hx<@2* jJ# Q,=3=mzPzx`ʍSiKh jV,.jiJp$'n>HF7yeYz&S'f.b;L旟O[+UL*` 5HFN|JqT,,K,/'މlv}?}-nDP*Pyhs$ ɨ4‰Q̨hTYS&Le2SôΞzTzxXCܢɨ4G@2*pdTf*UtvToz_ه_N#ldvK_WH{e^s ja6- iJp$'n>HFpu𠲬sM*EމLDWM;]x̯Z͡%`zzm̀4HF@8B Qi7$TUZʑVۉ0/g㩃^dL9P[}_(M[4 5HFN|JruM/ypOG}^P6UNm@Qҝyɨ4G@2* XO4:qBYV7_y:b;M?֥\.nëP':CCz-h<@2* jJìd2Ҳͨx Eե,T*ezlR+O|S>NMt lP'5ٱCy^&s$ ɨ4fZggc^w(˪qxC}r];`Vs_{vtmĉ؍4mf<֥Sѹo B6jW}V{~[4 5HFaV2liifcvv) 4￯MJOc_ytvMۨS`1nqT+ P/-={gN\iJp$0.Ln>D3gehTMO:+W[;r#dD}ĉOOC&m$WXLC|l@9 QiPdTɨvkk*UaWŢ}c_wgw&'bkQg{<;r B}'zSmW:mdEh`<@2* jJ#  }}ʲLWZ\4[fW oWujatɯ^Z&KKG[p3"40 5HFvص# eBd!3Or(LX RDၵQRM@) i!@xu!͑q 罙3NN>@f*}( zJ@?ݘLf.ޖ4@f* PdҌJ_,^ 䍡~UFn p]yNd 5@f*899?۷fSk C}xI|m%-iT 9L'' 3:;;QJYYV.Cmٖ\g4@rB J3NN>@f*}u΢(lm X߅zHuêܹ7<2Si 3f|TJ=x4[˿ڬ'I^LjTqr2S+urIrfPߺ^)/[Ť޻\4@rB J3NN>@f*}(ܻ{+`~ UF.^ FLjTqr2Sߏ$Ji9PߺR^6 ȝ;qp{+s 3HN2SiL$ߏZ63^ X_BJ74@f* PdҌJ/YrrYZ/z,wyFwq<2Si 3f|Tzc{;jR.5KK1i}4>g)Kchǽ<2Si 3f|T,֢GGZ;>A%VV>74@f* PdҌJw4tF)#ka67>74@f* PdҌJw7F)m櫯>Ceas>74@f* PdҌJw7jf>$zcmYVVJ74@f* PdҌJg0EQJ>II<{{%LjTqr2S$fSk@f*Y[fHoۋ?V9 J$'4dҩ@f*IL&QJ>8^ x㨵>xt{11LjTqr2Sl(ܻ{+M66_CCX$iT 9L'' 3Nh?&(圞 xp+kmy͇ `<2Si 3f|T:?jRt{%u6ìW%iT 9L'' 3,vvby9J,-ŋ~5V^j߾i}Fs 3HN2SiL;?5J,- wmM%oЄUs 3HN2SiL,֢O9>-o4@rB J3NN>@f*}1FQJ8>^˻W4@rB J3NN>@f*}LQJxVpsCi]g54@rB J3NN>@f*}籺$z/7a5~b:[x4@f* PdҌJ_GY{1Yvwc2ixO__ iT 9L''_ߋunjo/9N+0"HѢ ɥd0«bnbhDei5~^<ϛJSٮ⫯&]w 3HN2Sidcjm-&&ĉX_z=s140x#Ew 3HN2Sidkv6Jie&'cy`lFo_ï.5@NNd 5@f*M?|Tz|ݺF)'_0Nn=>_ '2Si 3\>@f*=^{-JikjozC7/y;>={!i; J$'42S鱶A]/ cq' ?#i; J$'42SqwJ5/0&Fط7޸Pd4@rB JO. 3\ JikŮNjzuP4@rB JO. 3VWW(Οo>KKpL2Si 3\>@f*ܺ112O>/w$s|clΘ7 3LjT~r33QkyPO=r/jT 3HN2Sidz9QJSkrܼn݊?ݻ{Jo}Pd4@rB JO. 3ᅬ={Vcy }KKqP9~+4@f* PdLc8'V8{6FŎ ?={<jT 3HN2Sid}s\LM]o-Ө?@.4@f* PdL{Wca%9E ?pAPd4@rB JO. 3~ZvgXYzUs8yGB Jd 5@f*M?|TRZZ/^bLM4N/jT 3HN2SidAOw-lm7c 3LjT~rto}ulŜ? 6{ 3LjT~rt];vD)[1Wv-<^A170?I2SiT 9L'Jj=F)`]o `V+t!Pd4@rB JO. 3fgkW}poQF+?5 Ä 3LjT~r4q@]/ _~Gs޽1roB Jd 5@f*M?|T]vE)`|aKcKK1=ux~Pd4@rB JO. 3Z_ߏRښ?We[bn.ffر8r$3ŋl!4@f* PdLKKq`5qZ ]o1=AL2Si 3\>@f*}GQJ31Dž Œ77={qF 5@f* J$'42SiJ<>K/O?u0cƍ8vl+ٵ+6FVjT 3HN2Sidlʏ?3D)[1\u3cڵ 8gNWjT 3HN2Sid$VVJ?3gĀ)4@f* Pd 'J62S19%,/Ǯ]%oT2SiT 9LN. 3ݾ۶EUKJoy3'j B Jd 5@f*pr4}m[TU9z4=+o]ZGZ}Pd4@rB J3\>@f*MܾFTUə,Ç%ol|< 3LjT2Si֭먪hBtwٽu8ϟxPd4@rB J3\>@f*M--E]GUF#ÇxRn7N*sQn=\2SiT 9L)n4X. -O/F#*uVkVVx2'q^ 5@f* J$'4e-[VT,^ ѣ5۷Ǟ=1;/rt7x0]#Gb~܁qP:VޅP4@rB JSk^/D33ukTUi4bb"qt,./^0XZ3gbn.͘}>C]ǁn#4@f* PdҔnlZQfx' @}QUcFFb׮\;Gl?rmn4իkoz[h4}15/NbjT 3HN2Sik H?ƍ[6ꌌĮ]19ljk3;Rz%ĝ;cy^Pd4@rB J3\>@f*MYN,-dDUm9t(㧟J~9]h4/kq 5@f* J$'4d$7nľ}QUmFGٌ[~YN|ux}9w.|5B Jd 5@f*pr4CD]GUm=jǎ[g~=bllgϖ^b?5@f* J$'4dė_ɓ16uUfx睸p!?.cG-LLf5@f* J$'4d˱cGT&x#?)>.;L2Si 3f8|T h46uf.-E]CV>K2SiT 9LN. 3fc{7x#jN]ǥKV&[\?B Jd 5@f*pr4N'NDUm쳁.ؿ8q@w8B Jd 5@f*pr4իQQUpNg;r%FFʿ V7`B Jd 5@f*pr4r<uU٦{ٌӧј̙7{8t(m+>NV\7B Jd 5@f*pr4q|9HT{JzjT 3HN2SiLd>˗ٌ;̦Oʕxͭ?L]KYl-"*-JǷȢDY%yw: E ?{Q3Csۺ.s$SipB Li$Si~c?V`P]3|ǩzvwjd* L 5@2MLiIL9SӣcǪ3|c 𱆟WփSKP$Sid* N4m|d*M˾|ׯkknݪkjǫ=;?}.\ܬѻ-HT P$SidTag66juڵuB@2n^k>]wk/jd* L 5@2ML}=}ZN`P];ѣzoP$Sid* N4m|d* ț75;[Auout|D4@2'T6Y>@2_˗ܬCy'ʕz>}N#T Jjd*M, JÁ֪&T Jjd*M, JpzB4@2'T6Y>@2YAu]YYo5@2H J&HЋgjl.  HT P$SidT[.Uesիjd* L 5@2ML_{{QKK5=]GT jb._{ݻjd* L 5@2ML!n=|X++PuFݼ{nwknnݟ^>]>7o J$SipB Li$SipB L4@8HҴ4@8HT P$SidT P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M, Jjd* L 5@2ML 5@2H J&H J$SipB Li$SipB L4@8HҴ4@8HT P$SidT P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M, Jjd* L 5@2ML 5@2H J&H J$SipB Li$SipB L4@8HҴ4@8HT P$SidT P$Sid* N4m|d* N4@2'T6Y>@2'T Jjd*M, Jjd* L 5@2ML 5@2H J&H J$SipB Li$SipB LdN t$<ɬ&= Fz/tJ 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTupd'mB Pe* 'e*u]6|| 5@J4@P4x| 5@J4@P4uۤ'e* PqB P<׆8, ?hj2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J[5 ؖ^%V0cCtJ 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Siw98(Si2jA#QAP>%{ɬ?*BjL98꺮g NTLL9>N{ߧ @P4@J 5@Js}qu] @P4@J 5@Js}ߟz, 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde*nFYnXoyQlb֔ZSli)TDA F1qcܹqd4D!9ͽ 7z~g}e}O~ 3LjT:|T 9L2Si 3N6 3HN2SiT 9LLjT 3HN2Sid2Si 3LjT:|T 9L2Si 3N6 3HN2SiT 9LLjT 3HN2Sid2Si 3LjT:|T 9L2Si 3N6 3HN2SiT 9LLjT 3HN2Sid2Sv7{1?WćƝ;q޽\LMDLNƥKqG뱺qۏ&L2Si 3N6 3>ױ[1=/t:qlLMLRܽ[[m?3p@ 3LjT:|T1=MLMF<7L2Si 3N6 3><M6{իag<L2Si 3N6 3>XwŋqL4MeNn7n܈>ۻXXwߍ{._ʕiLzB Jd 5@f*Ml>@f*cm-8~tPd4@rB JS'J?t7o2B Jd 5@f*Ml>@f*c~>Jw:j"4@f* PddO(iX_o2B Jd 5@f*Ml>@f*719Mm A2SiT 9LLNX4MbcPd4@rB JS'JWzED)}UPL2Si 3N6 3M5n}g0 3LjT:|Tvw7itsD2SiT 9LȬJomZLONj/F)x!UySiT 9Li][YYyh|j|1>ǏG)iba!~;S[Jd 5@f*MzȱVuݶ'dw7~)>4^y%J1;Mg'ď?ƣGm= B 0T 3HN2Siucm;qDN|ev;'OF$^񘚊n7._7Ν};cn..\k~;޿] ?_o[b{̀4* J$'4z###Zv>0LO67޽RD@fX魭X\[/Vkwq( C_$HETjxMuDPA"8fh :άg>w=|YM$(fgw?ヒ b~>Οkƍr%ΜgŸtwoKkku]AZjPiT 9L&tUze%NRξ}q~lo׾]X^vǎ<wjQiT 9L&Uzq1&J;1׾.<~\GeB 0@* J$'4d2J?|M$(ݫ}Gz慷?'ƴ`T 3HN2Sid6^Y(JI:ǏԾ<Tզy $4@rB J3L6 F)kNj;;[T`T 3HN2Sidҟ䚦cbiLʭ[ծjj!SiT 9L&YJ߼d7ވGkݽMSڿᡶ8LjTaV|QRyFx};kHmOFpRln>?ԓ6J 5@f*0|rVzi)Rj\ܻ": LjTaeF\Mԙᅬwxgy;ﶿC-Jd 5@f*0|Tzu5iILƙ3qNWiNUx_/Y 5I2Si 3fl>@f*|MLh:x0N7c{ʹ_[[a?`;O?>?LDPߨ4@f* Pd Ȭnس'J}&O?~ t67㧟/۞;mwv~]$xL2Si 3fl>@f* 4QJwo<Ǐ͛};Nط߷NHǎyż|Nd4@rB J3L6 *^\(Jk{/6^iVW8|ǗN =9 Jd 5@f*0|&_h(ٷ/ zf_ov<}HiT 3HN2Sid6Jh2MϞ}vkyxKK 9 Jd 5@f*0|&\酅(iǧO6k:s 3LjTaM4QJ3Ń>;{ex5qBw|Nd4@rB J3L6 IV(y^^<\Rx4@f* Pd lb؈={…V\V.[rz9 Jd 5@f*0|&VW/c{GfBn~7k4@f* J$'4d2Li.Ν ~C?T`4@f* Pd l2>z4JlFx'Owl{Α#O]9 Jd 5@f*0|&P_RS>VVb~Uy5kkOs 3LjTa]8z+J`Ν/;@iwfa!X[}$4@f* Pd ȬJx 4Qʮ NrX]'b4Z#GS4@f* J$'4d2ҿE)v-N|ssSF#?s 3LjTauX͸s'梔ff&^LѨڳk 4@f* Pd ȬJʼn1E)͕+wjgnYff!n\Y(mXhbXm,Y9BЪ B%B=sCc{=Y^.8WcwxNd4@rB J&앾y3(w69yc{+x4@f* PdҴd6c"J?++*˗+_ZF[L2Si 3M. Y*/1D)bky*b@4@f* PdҴd6K\RχҮ̃';}o9 Jd 5@f*M\>@fSWz@fSWzRߟޮ̃wFߋ9 Jd 5@f*M\>@fU ʳt2'VV'W 9yNd4@rB J&tq#J@fqRRg]G%lo/cqY./?4@f* J$'4mr=dGx1.Ju&[( qRC4@f* PdҴd0 Yer`kkq̬uǗxNd4@rB J&ك+׮E)N7Q/+Ң8s^r@<2SiT 9Li8{6J0ϣVz>n{9 Jd 5@f*M\>@fO?rRm~Ej7뱳Js 3LjT6|X7c0Rŋ}/I._y]a+$iT 3HN2Si2JolDE)5o^VmnV>qV[iT 3HN2Si2ҫ(;GG}/I+{+9 Jd 5@f*M\>@fVzqq;kk}oH+dVVފxNd4@rB J&o~ɿg4{Cڶ]Www^xNd4@rB J&o~a)Qw^"VV*d_{+Z9 Jd 5@f*M\>@f'~≿=a)Qq.{=y/,Aߋ iT 3HN2Si2;O8]~n_M={+9 Jd 5@f*M\>@f2??J[JԚO>{12V[iT 3HN2Si2g.%Lo?h._i8:{+9 Jd 5@f*M\>@fᄏ^Rb9{6bk}z;7͟jiT 3HN2Si2{̫W_Qߛ_wk3ɬa0<2SiT 9LiHk{;J[JL7/0۷/yd^z){4@f* J$'4mr9/G)Sr}5t}/<L2Si 3M. ף)ga!^䪧"4&}/4@f* PdҴ$GQ}/M)|NիJ iT 3HN2uZWp ZjJ+"R I  ."D2SPvJ-PltBf6@-/! d:9@ɄY4{χ"Y$y?8監trRGwalt/MY]- 4@d* PDtGggsJfap87UWWKoL"Si 2| USj:7/|b8iT 2N"Si`u5WUN,.ɾ|V8iT 2N"Si(USll^2˲w67Ko(L"Si 2|sJC߼Ǐo<>+s 2LjTnr) a&&VٝUz+F4@d* J'49SUJo-w|EY4@d* PDtP9!̭[7ݽ'&sSUycJ&iT 2N"Si(ŜRk@!!\YX(s 2LjTnrJrUǏKo *ΣGayND4@pB JS\[ZZ]ON:@Rn2SSv{Ki?^9 JD 5@d{+=6Czs)fc~WzȑONksK3kyy%<3~Ôr9~p9~_qu̯Zz233]^o|| 'OI)7_C% GOWԩJoT3---}ڮ''u>FUjG[o-oTzF4@d* J' 08N>@y'TK/`k+OL4k7oށ9 JD 5@d*M79msJgn0:\it7w`xND4@pB JMN>@n)՟ xuLU啕k4@d* J'4iq1Tsfg^Èirv; 6iT 2N"SihӻٳvmLJY흪ʷnބ<"SiT 8L&'M. /\ViʕnTU^[+ QyND4@pB JMN>@rJ^{V~?ONֹw…қ4@d* J'4ŜҁWPۏ?檪s7!$iT 2N"SihӅ 9/u޾VzL"Si 2|6UUNsnެs\5s 2LjTnrZAN쌍='Ի3[[ iT 2N"Sih_/^H<"SiT 8L&'ׯjK/Qaݫ+^-s 2LjTnrrR9zJaq\[+ s 2LjTnrOggsJgrr[;Wn^T4@d* J':x8;L)b7XKb+w(7nw.HECΛR{=w=?|ms\8/"Si)uWU3rڷ'ND4@pB J3N^>@~!7MNܸ/^"SiT 8L'/`=MS:C>S^nv"SiT 8L'/`67sJ+[Tz7nr!w 6LjTqVk)`&<4o W'L"Si 2f|պ{7u&<;Mo6`O_}ubjT 2N"SiX?)`UpVɞR{PD4@pB J3N^> ݹS:|ׁ* xp[ONj_ 2LjTqV<:v>=La\ZZ 4@d* PDҌ*9NLaܾ]i{PD4@pB J3N^>lmʧi￟?SakASPD4@pB J3N^> ipJ0ypyrRT%4@d* PDҌGGirJ%쟏UiGrݫ}{jT 2N"SiX,T2/zJ0 W|YL"Si 2f|xR,XaɤpNoL"Si 2f|<)07,\䳙j55@d* J'4tS*ᄏd<~\g4yg08L"Si 2f|67sJ%sxx* C*i7?a 5@d* J'4t9 0ŢdM䯿% H"SiT 8L'/RظdM%|n&絿5@d* J'4ttr'R}UQrd͵k5@d* J'4t/9⋋WiO?);L"Si 2f|>R4Tᇅ 9>L"SiT 8L'/sJ%ϗ:_O/ z&4@d* PDҌZd/uJC]<[؂5?;wj=jT 2N"Si7rJgc4TdӟZgB JD 5@d*8y]llZ[o]|J6lk}jT 2N"Sib2)˞ď?,wPD4@pB J3N^>@sJ%o 8p3׾=jT 2N"Si(Sj=WJC(kk%[7j_5@d* J'4{ݜRy?lViXԾ=jT 2N"Si(9sfPi(7M/goPD4@pB J3N^>@RN[JC4%WB JD 5@d*8y{/zm* L%WB JD8Gs- MWB nTm qW!7de+#h]'+#nm׋<7W"Si(64S<ǎUXM]LݏjT 2N"Si(v`N VXRnJ>Z9 2LjTfrrN8QaJC@|{{~n6PD4@pB JLn>@Rp fgK>Y^B JD 5@d*M3efgsJ%sV-* 1R~n6PD4@pB JLn>@sJJ-* 18PRg~n6PD4@pB JLn>@'rJgj[Tb:rv啕&4@d* PD4Pfp0TymQiihhB JD 5@d*M3e)Uj[Tb:y7nl(L"Si 2|2g*ն4trILwwjT 2N"Si(sLNf-* 1-/V$O''>D"SiT 8Li&79sx-* a_u 4@d* PD4P`e%bN V[͛%X5W1X7L"Si 2|S*jT"+Lj剉5@d* J'4)xE* ;WuP 2LjTfr *O-Rilq纠OϥKuRB JD 5@d*M3UݸS*={*Ri jZ|b݇PD4@pB JLn>@UJfz.fgsU؄U9SSu 2LjTfr*y Z9 yi:,<=sv"L"Si 2|JΟ)ɓ%T2<=}*jT 2N"Si7T2~XNa~=wwa}jT 2N"Sij733322ֳRnrJ;//l7 j&'> U5@d* J'4V_@hvNd 7~[녕T!4@d* PDklll[vYkmp0T2nj9RB"SiT 8LLWW׶Z B)̱c}?.lœٳPPD4@pB JS7`->4T8..WˋsgOOB JD 5@d*M3kwoNp GS// LpNw>^'K|o^yo\w7ί^8[\nQǢP]/Y3L"Si 2|v-T8{UzKXy'ݯm_|kC/ҝ͚ۅػGg̈́ 2LjTfr~r)Lo._Yzxss۟Kc?{o`~_ecaGgm 2LjTfr~ٳ9yuV|m 1wgY[ؿu?:k#4@d* PD4þ2Z9_v7OO~=}4uV;zu?:k#4@d* PD4sJWڮҡ߽6Ѹso-:TZ}l.1-mDw1V,Wk?gH>:C@2* QiPdT]:(s}.VB0}ԃVt0ӐNFc5HF@2* jJ#x#Gb1P+l~u>bZ>ݛcVL꣥]tUxgIeGG5HF@2* jJ#x&v׃9nڹ;q0C7Ǭ'+ٙBouu)ɃύjJdT# F8}cJ@uqy11-#빜|~brs$ 5HFN|ps挣v*Ts9m۾Ș*Wج+'OIWcۺB@2* QiPdT7RwPgMRFo"e0u'Fnҥ-}bpOOGO! ɨ4G@2*pAG) Tn?~qB0->ٺhm/ӓ:;rY+B QiJp$'^>uDQ962LyZL,t򲟞ݧǮ5HF@2* jJ#xfjQ&&<L{61-ي]lWIʏ}# ɨ4G@2*pQG) @^ ôwwɊgmlLPdT$ ɨ4‰n<Q齻גaZ-^ĴO'f~x9s37rw_-N+̝z?YɞXʜ\?k{M \-q^A_-Iuw;k`B QiJp$'^>pD*ؑ10[[ti+^l=NV{yNt}COU/ut_PdT$ ɨ4‰n<Q=꼘2L5YrZSJ_*Ѳ{MM$n?*7+F76$ 5HFN|p9JypgҾm#IôZe vbUmG/j.r9'KݗjJdT# F8M,(y##AJsa9bZF 歼jm~WW-"fjQhG'N EҒ%B QiJp$'^>rD}1-MvMm_صoldw![<<-PlT$ ɨ4‰n<QifoYĽ?zU߿xw&/ඃSߠ |?OOjJdT# F8ࠣ *IŮ=4LOΥK[oِrT>K>ϷWhvO^^>ݗ =B QiJp$'^>)R'UZoR/Q6ŽLxt"3Mמ^Ti],n$ 5HFa'^>ĩTRu<[oN>=cA1Im1PE%IS9qv# ɨ4G@2* ; V*y*6>Om6"\^\jܧoR%}Tl)xgMo)DDk# ɨ4G@2* ; NJ<ѯrD㬬?;~qSuHj,\+^R'ӔXۊPdT$ ɨ48Z*GT_;q޸Xfy6r56;Gk[]}7My4}t[jJdT# xTJ%W9]}4x~5{ sd]g̿ezEYΟOShMV$ 5HFa'^>q]T T]x~͟8HoL,gqst$vRJiMۊPdT$ ɨ48JJ%W9/o<0=6eJ1Iͦ.qGɨ4HF@8B Qi؉qJ%T~#*"5x~nFxZ!u[SG+M:w.M|i6MJ$ 5HFa'^>q]T TzحYcM.gF_oϘ4\6}t+jJdT# xuRgh(3Pۅx++[aPQ'oYn'n~}i>?LN>}5HF@2* jJN|S.kOQޚ9z6BKfZrGq-/ԷMg@DS,M2$ 5HFa'^>J%W9ґ{O d[ mKXavPtS]]7~+=k! ɨ4G@2* ; NJ<ѯrD#j秞_7B=< }-J%Mv ؄PdT$ ɨ48V*ng7t44ٙ3gt$ 5HFa'^>J%<`y7;_O=M/a38rq]H5[B76t&A;3=mzkXjJdT# xRJ%<`yussl<0n5\_9:ZhlIμ~v< ɨ4G@2* ; NJ<ѯrdsw2?L/aK_r]Ց`nmz4zqT6 5HFa'^>J%W9\;z>^535N>0~~=MvMO1ɡfs@>* QiPdTv@RI+x_J?m秞ޗ<Y.2~4!5Ţr&JdT# xuRgp03X[iwvoV+B;:0Kĉ4-5Ţ^\4!em@ 5HFa'^>q]T vV:8n>^5[mwz?[)=0K.hל:ezCPc*QܿNwlehW Ja-ջq ۫-֟ -?:WS{ھ>I6MieP@2* #2*t`+ǎYcv<*Aitapn!bzq䟋fj;ĄH/ko❴: QipQi[9yy$ߐJr1v/ƛgݚB50 ң_j,T\Fq\FN\>l)k̎gp07Q X<]X-ޛg85S^n߶a(Ҧ/ 5t* .8B .H'.r5fvn.7qޝH8(X^Bwk<W4qgM{6ti i:QipQi[HСސJ^*Q,ׯ7@Kfj=#VndVj9 p^/ 5t"* .8B .H'.ɄTyCJ*]= o߉+h 6ͥWj˗Y~lVkx$%EeTGeTV._gt47# HL%4O&um6+\GRjPT\Fq\FN\>leuՆ5F2%T(M&K+7@biM| &{X^6J%;4$ DIICQipjpF:q[csfHC[XT{_eUlW?+$Pe+4:QipQiw5F8?׽R=Łt>ϊh7XƦhoF7o 5:t_xjhT\Fq\FN\>< CkdjW ege磽*>MszU{vY]٬$P}}QipjpF:qDGZc$v~O]ʃL>"z˟jH6Wme^I^xAݾ;4J5J#|xYkp>O]JAkS25S)Oy~M[<(ӁߡNGeTGeTv;f-}J}Dl.zHQ|0/Iޑ#:ۧn_xjQipQiq5F2ahҳ|D¹>Zw 7s曪* f%izU^2 * .8B .PW(zz{{|؎rن5F2g ?'c߭Q,L>^ZkhoM\Htۿ^%IHouw>/C ޠ2* #2* ]Bk\.cm/zO(ŒojsZC{ O|^AeTGeTN>K۞={ #G1yEBłD 7VdW^~;/yh'uژ~}2 * .8B .PW(zz{{|ئj#g/t-bdχC ~AvN32Y^%:: m:8g^S[B2?ECtC5J6m/FMBӌmMk nS]pmqlS3K"+yuӎJ^ݮ-uC 5ĄJfT#F1qekd.]|.Jl~z%>)F*yN[sm4|B 5hFQL\>8i1|.JgZ7S|(w5:fM䳼l+a7ʊMBS >T4ͨ4W'NXc$*}w$d߷|?z]e*y}NS۷}oB 5hFQL\>y#>rV4^m,_v|oծ?ҺfO-dzU:rD)MM JT4ͨ4WݮT1s󷢩֓4jo\95;/6}_K{e D4(QiЌJr4(&.ΜHfeCqTbs,IsZ7Ҷ͖=:yRsMG VT4ͨ4Ekdfg>Gzfҩ?n}o`8ϵ]{䲼leaveBG VT4ͨ4O1yEPgZ}o55Ë}#W1}2Ejͨ4(G@3*b@AkTn_'4́ |y?/i9u&Ejͨ4(G@3*b@ikWB`Ӗ,嗾7@>~_Ծ#vێI2{Z-z nT4ͨ4s1sWB>I3ٌ|lNW|{3w{\>\3?{B5čJfT#F1q s5yrzi;I3o_#_jT-P@ܨ4hF@9B Qi2ժ5yrz_[\ML0SKmoG d=?R_mC.l"={ B5čJfT#F1q 39iqᯜ^54s΋MoG 7Kpt~:߫ݸaeIRݮ5 =7* QiPPfTŋ癞vJ~%L-}?ޗ`&9,-rYsjͨ4(G@3*b@ffItł5DJfT#F1q s5yrtZKu|pDq_rG=߫53#iWluO*P@4hF@9B Qi2ժ5yrt_[\Mu&8/Hrǔjٿ}߫]Ùt5DJfT#F1q 39iqᯜ]鱹Ffs֚#NYgP99{\?$_oZjͨ4(G@3*b@fz<+'U.SJ߫r$_߭UСQiЌJr4(&.d135p+6HL0OWߎ}x+=rW}[pC E@@3* jЌJ|p<_9 swIΞZ}8Gg塞"K=^}[pC E@@3* jЌJ|V13p+}Zf(}Rr|"wkn4hF@9B Qi2I>rL,4}?E񛿬 Nt{Ji5ʊ$_cc߭U"?v ybE$V&PJl~ú 'MiW:\:{Q6F;퓟m~<ˈdyp=n8HJ'ĉ(jJ;]ڵ畫 '#tk~91~C;I 5@T e* 8HJ'fb*sl4~]ͥػυǻC 65{$54Pi4@ e*M\>@߮lVl]7skw'/s΄L\/R˗c * 2HPLɓ3:ZE&VzejotcoO~Y]lvjf-#j{啐f콓PCRj4yra=J+}V ߛ;:aG9Ͼ? E2PCRj4yraƪ=J+=B]ѫw'SOv5#9~<`={$51Pi4@ e*M\>@ɪ(j@J+}pr.­ػ yN7r%` & * 2HPLɓsvU!35U+MtV w'_s}Aw5}5ܹDC HJ$NRLLD*=jػ#̇]Y\~D `h\)Si 5@T<|`VEQ{j|qV [WcNc!׻5#b?Cy2ѸPdERj4yr D*}R]֝OnաX^A2ѸPdERj4yr=##5>ѸJ}juc/?7ݧ˱ѓ=(X&j4@T qB 2&O. WEQ{FFj|q.ޙn˺sbGn乙3ޚvbcg{PL4.YQi4@ e*M\>@(jϱc5>ѬJY\oˀwY y\Glt, 5@nT e* 8HJ'lh*spO4g>YlˀNg~cޚ؏, 5@nT e* 8HJ'll*s@O4g[~aoSgw0!ﯾ:)iJ)Si 5@T<|8x*367җ>[n˰[^><С1n.~Älcytbo O* 2HPLɓ؍#G=CCS*=|m.wcZxmoξNG[;y/x7)߿Ѩj~>3bkJ)Si 5@T<|8y*{nR_MLeq/c.]^[]RW؏)ȓJL')Siv…(jƯzԈJt/[퐹so=n_o~6VVlI#B -HJ$NRUQԞ^rz.ХػC^2v盳tl綾B"Wׯ~O 5@T e* 8HJ''NTEQ{zoD?b.W3kw^ͭ;5t?_^m|}H44"Ri4@ e*M\>n;VEy^>uc.S3z&?]8N7#qRH4G~ϞkD)Si 5@T<|x[=q\W?_9j['؎.h[TNKUb;~P*EXj݇$*Zų, Y]u%`Ͻ9h?{u.{OW0rqCzq ׾?ץop7IaSIߧE 4hF@9B Qid/x<_t,*AΧU]<֜5/q%O{P@fQiЌJr4&^>$oqZ##yLzw[~o5篯J` 6 sץFC YF@3* jЌJ#xȈ5y_AyΞƞ)V}kݯK_`SS>A;p/FC YF@3* jЌJ#xD`qݵ \U}dzߟ0zCh4loOӞ\./Kߧ]JfT#F6 RY{~~[2?eT4ͨ4IJ)㞯ҿfMzq k;/#}ݾms9}oloK_-JfT#F6 B$Q(Xcgb"+}vFџ7wFcϾ1_ţooK3?Sj8* QiPPfT$J%kqW^ւ0'һG9g[^?Ǐ}ZלWOP@QiЌJr4&^>$Q*YcX{JjF+eŁ#ƼϷК~TzX<qT4ͨ4I 癜{JtX^8b+No5\4/ùs>;}C G@3* jЌJ#x{JyҋG|sh _np'wSj8* QiPPfT$1|͕~#;p\~Ej.FG}r76&w4@@3* jЌJ#xŋi*&͕^j+#9~ؓ^HOe5篯J듻1ӧ9* QiPPfT$1|͕ZH/eM5a+}y],w4@@3* jЌJ#xȈ5yk[a:WҲnG?uH3\;}C 5hFM|HP8D5WJF˻kҋ)wњ5_d|'w.w4@@3* jЌJ#xDdqb1+}jmKzq EK;ϧќ_nI_p>겍)jͨ4(G@3*l@5yŸ竭z##@fm}͹ZZ]sWOP,ݨ4(G@3* q333n3g[`qɸd᫭ \l':WKU9'g<ّ^P]]>GҫImJnT#Ŏ p̌Yc2 \T^h/y| ymtO)^sΞQj5hF!ʕ+'H1ULj?Y u.\J/ZFZ3|&}ך![K_ jC Ttͨ4d-..vtt5<<,gح82 $!i ߚ#A mS۩R^VH R&ۻn[4u=LTst9̥53;kq^WZ=b]ӎ32FUіA>Kw\iٔ6K@7* jЌJC܃nܸ˳uy|V.[cj| ]v#}pTu_gAn0GGЏ4_g'6(vw^K8ku<>t߾UA>;iMg * QiPPfTěyYcW*e}J`D.ܮK0N{I6ōΡ |'}'ٔO>:C HPiЌJr4(&|ctޯ2YK+ ]7}'JߠmԯPT4ͨ478T|Ru/n4w`I{Oo C>sl-}t5hFQL5ySSYWjQo{ܾj]{U3ͨ4(G@3*b_g/Yu@5-ǟJn^g#j@JfT#F1@ժ5yJr-bIƽLJlN]=~l|2&&/Kg * QiPPfTěyTU*YQuǷΡ ܴaSc=d_2^5hFQLGlqb+:AyM'ٕ5֖ CoKċPRT4ͨ47򘛳8VgQm?dQH'c;9ç7?/} / C HQiЌJr4(&|cjޯ2RX6[AǿoHPIͦ]Z>aU xQj@JfT#F1@~J_s+bM%}p@'Gm#JY+}jvxا/J݋PRT4ͨ47(1[X|An]Z,}%R>~&\yqxvGw0ͨ4(G@3*bҽx)}]kפNa)* QiPPfTěyXc7= +f3bnS.uO) N1>ǩ)sSj@JfT#F1@ccJY?|D뮬5> ?tg%ONa)* QiPPfTěyZcUF +=Zu#+u̼ҍ7oU_ܜ) 5 E@3* jЌJx 1kJWX鑕zŮZ>8Ns85KW|83#}nw C HQiЌJr4(&|cz㼩WXzŮ7T N G^>;4hF@9B O?sp JU4DJ8%7YTu\ljs5U:Me)w*ְ,a1NAY˒9s}y~zowifTěej}JxDە>8QYtJ_}+v0.* QiPPfTěe4Eg(v݃SJx|Sݽ-}}8:Zeu7cs'ٮ\>#mQiЌJr4Ҩ&|(V8VQ캟)}p@kMhށ%)dGB[yT4ͨ47ʸpWi6v(vݫ}D}2/4>}aB ȣ5hFQMP5yٯ V߮%A׷͖] zMNhӶBi 5 JfT#F5@oeq^UzvŮۖ>80Wwg'H_K| h@$1B ȣ5hFQMPFfq|kD_I 3wXwVZ78f}ݧ= C;3c/s:mQiЌJr4Ҩ&|(Ѱ8^/|mnŮё>80Z{CX~o/̓'6 }"yrs66s mQiЌJr4Ҩ&|(Ѱ8^/|m~gc'b]hG\M<}֑1ɾ C!}~G@3* jЌJxZ˗>_[g(v]+#M,:ej%}c?i ?PmQiЌJr4Ҩ&|(yk>_[֒ ]J YЎӫCsO'O}Nj@ͨ4(G@3*j2&&1/|mYoQ7Zm{=Ӗ$9N[yT4ͨ478wWi̝vŮZM kM-kksӆO-naA>i 5 JfT#F5@獏}JO(v]+o=>m>-<* QiPPfTěej}JhQ캹m铇_nHWڱ1f\گG@3* jЌJxFzU'[AJH}a6_Szd&&/=mQiЌJr4Ҩ&|( k>UUzQͧ'o}w-}>mZ-|GU=4hF@9B QiTo>q5y E ugŞwݽ|#}>66lijgKK7PzPiЌJr4Ҩ&|(k~UUzn;bޔ=60C;uVk@}ıg~/dT&B A@3* jЌJxIkfg>_U֒ ]ڭmcnr{ <=DIbȈOHwPj@* QiPPfTěeYcwb竪w ]z[kv?Nq-;2lҧWj@* QiPPfTěe [cW}JA.챁w__~dW?|Z- m#|xU5hFQMms㳇J^'b-}+{l9;rzcLE~]B A@3* jЌJx5y##6MJD.}#{l0x|=[bO)jqᓫ 5e7*'hH 4qPCUN.QumQ mb6U]]He 78uɪ]_(8y|J< 5HF'n>X;wN+e<##Gt~Ŀr6z3l3p9SݽkSxҍE@@2* jJO|vVx U\%#Ӊvmo|'o01ǯ]S D5%k 5 JdT# `mbB+e]3 ڲx{煩HwMWsg; 5 JdT# `״Rs*_ad:ܮ -yVG[ZjXJ̌*ad:ܮ E'ٞ]A)ƓG,,** QiPdT~U|)*](ւ02Ū۵~h]/[v\De˺s℃E@@2* jJO|Z)ͦ)*](ւ02jnXl҆/HGaƓՃ^XT T$ ɨ4;VxFFNUO+AΩ۵v?09teҜ>m;t[Q$PiJp$7dZ)3;ET~P trsk},fkn?)mP4HF@8B QiJL`vJ0n^_Z=xF>(^?E3̶&_}@ۊ 5 JdT# `WR63;kvJTAYLx{ڀ'.us/j^?ūZfڑj@'* QiPdT~bQ+e3TΒS陿oad1ַ xdgsZ)?,mb]rB D@2* jJO|x~>yRg2Z)fOS LSQsրGFg5Xi^?Ö;q>rB D@2* jJO|xN7n!rƇʩtnu;^Yo⑶楫%맘*rB D@2* jJO|xŢVCsT:?_ t~I΀o~5fN[o^?Tڇfu{ 5ɨ4G@2* ?qgzpP+|r*ZFsf΀o.nN[3temk{$rxzP:QiJp$7~֩SZngth9wg΀o[;=ZqI++zpp |hj@'* QiPdT~kLF?x`sJOΦÝZx홺]wIssx{P:QiJp$7PJu;kyJ}/ xZsS3kKۮ?"ivVg2vx|W 5ɨ4G@2* ?qVWRΑ#zsr9/T02Ww/6,^k{~Qw-9t 5HF'n>vn޴_@Nss L'Ý?5wg-l{oúЉJdT# 4Ju5/MT|5#y}pg[_|Ńml|BWM.+9t 5HF''',7Rݸvrr霸^v3ೱe7Ӭ=,mt,_GN4nDuq|q'{VmXJXYҖƤ1um)(`6)⏦ɒjmc2Tk0 2ba4LÝ0绹W>OC}QiPdTnr}N3 gh f ;_޲xg+;o|~m 5`7* QiPdTnMNNs ȱcZ)~h7$3noRnFlVæoPÇ{s9ѥ m8FNQiJp$p+uuusjddԾߵkm8C'{5W7)ڶ{sS+_=%KqKJdT# s\n||n/k,腅!zŮpu3gW^N\s rž5}=:yKJdT# F:nR6aضKTz5/-W7(qulAHV(؇:qO[\DH4HF@8B QiO>64ѣmDHn^yW8|u{")v%Y|_/.!$DT$ ɨ4҉'jllh,wRR[k^|`Ko"_"YLƾ؉}lvPQiJp$H'|j,AR鳋^SPm+\Ywq%ކnj@"* QiPdTē5ΝJ,хBR^n^ld-죻\.^vűBB HD@2* jJ#xؘVf?FHg)xAhO:@Lŕ4w *ϯ]JdT# F:@ӧR6{#ҳ 4]\ `O^ʾ]r zDe.0!$ 5HFN<P)ffJO/xAh{WH4|3x\ȭ[-띸֋+$DT$ ɨ4҉'jilϷ!>纫$Z3x˅[A#oL2Ӗ~PQiJp$H'|h78ؑcTz+s翛sy^\ē'Q'n`_*$DT$ ɨ4҉'-/k#҃7b/M7:@}"7p&R9ϲEw/F!$ 5HFN<PmaA+eC:uJ 4]\` <>- 6=PQiJp$H'|Z)<٩{Tl"Wh7b|W׷& Mҫw."!$ 5HFN<PmlL+eN#ҧb/Mwz`}eRw_\o Ǧ}u_!$DT$ ɨ4҉'Vxgt!~#yAhzyv.go7vlBB HD@2* jJ#xk׹| ks^.ru0mXEw\oEwlOj@"* QiPdTēծ^JS"o^ 4ݩ*=a^w3c6/oj' 5 ɨ4G@2*tjZ)t!>yFo:@+l^|Wכ)|e+$DT$ ɨ4҉'?2޹sGH_ϮzAhYwu0Vū]/\ol _^TBB HD@2* jJ#x;h۝GH_F^MWh߮Xݥ?E 3-Mr{衪(UM2imF38]h?-,_2:J=~jp0ٳ_g&E r2rOn>z{TEkZzkfג yp;۷/CQЋșȜș?=XUkZB,#dZ G_lzk|Ro39?̡EKLKdNQLKӟ||*:T<94ehO2-a+"Zb; œ|%wBi#Y5hiii)jiiޱcUQgjyrh_l4ЌLL y7 />Aɘ¿>N^: @/Z s gZ3UQ'ub,CsT+ɴ@S_x'qPL'{9yQK4hi)jiiUQg|yrhVYVi8j\c_OceM^: @/Z s gZo_UkZzth$ўxˈ_?1Νb{%u^4@5@δ4Xot*LL5O-cht+ɴ@Kᏽcj3Dyjp028z-Z: @/Z s gZ74TEp&''9j4A7ވ)nnu: izS9'7kv*9SH9F Inħ6n_Ο#wu O92rOn>@LUپj)F ,%A]xbܐ{uW: izS9'7kb*8R-=pd,Cszji先WͧјA'[: izS9'7kl*[H[zҵF e{un嘇͎'1Nni %_؀Ȝș?]UQgGJ~hjmMBb; "-/WCC1߂;|: 4S9'7ǫ5_h,C?\Qhb{kfKOb۶Nd(: 4@5@δ4:p*J=~;cw߽lPu hi)jiiеo_Uq-=~bYտ/o͵|u/E4@'ϖ+'1߂Nlu 7i62rOn>@hUq-F {lMw 7\N=~oA'u 7i62rOn>@PUq-h|uxB\8J={oA'_>ԯR$_؀Ȝș?kfgə35NJYfᲽɓu=fyʵGڵ+cԳ-ii62rOn>(}{n8Uږ.4eh~nnjVDt2RWckJ==]ؘȜș?k&&HSm{^k4 <7sz*.=|58QO>I}v`cZ s gZ"8{;UږёF MU{j-W:?~(e4S9'7`xU9pީҶF M& g\hNNzH|yҮlLKdNQLKӟ|o?s)m5kG]55ؖ@D*"?U"UY\q l!"i JRHRh98目t?qf/=4̠oaS8;V+%iєj{o=A#݅$ Ӷs9|J#L|&ИYXu+v$w\]/ !Uٮv}VƱ^5o>/Jj+0q71ۣmҟ~,JRA'7fVMxFKKAO4XiC >c&N>J֘9qbW?h٪˒gMrx]hkˎIA&&ÇڟaS|N^13Va@o1:5b+=ڈh~˒YAZ66 ql/_ sB4x'2kkIF[Lkc&N>d|#Ç-ҷ*(I4JplS2/Ժ=RݮıTJj+0qղcc֘™y7^$JҢ9TuZw*,7+r8\{sg@c&N>\bőwZZEǏ5`]mhw›boUh=y9|J#L|H5n*+EI*ͧnrOYmѮ/nrYxY rg@xTXiC >c&N>561sz*+r% *7 (Ym&-Cܔ\{]7g@`TXiC >c&N>Xc$Y\tQOe%i_v{n t˶`"UÚ^? 4 'V%i䃺ztwz?\ V"ݴ](wi?BJj+0q\t\SY鹵(IfjuJV"vaHn|Y $*i@N4x'@Ⱦ#I䨡Jϭ5$- 7۸D?_Uw%8Xxws7@HTXiC >c&N>Zc$)5TYK(I 7쾤*,mkcebB $*i@N4x'@ܱ3=Jb=JҢ9t lukcÎ/?Jj+0qkv#̫:*҇QJM=>gMP|"Mm$D.]nPyNrbs 5F8´iYG=UVzf%irz| Wﶵ%h6 *i@N4x'@m[.[ccJϬ֣$-nāksNO ^9s+ cg4ӧ1ϻ҇.֣$-k_Վ`+M/x \^%kW0<99|J#L|Ʊ5FoqVejEsaM=8t.ڎ V*y54 'Vc&N>Xcc׮ _o=h^9_s ={p&؍~N krNvu4 ?V&n>:2oV'yfmZTGß@r޷;ң@ܯ9|FK#L|sG+ewݮ[zJ+k9 ώ[GG[KWڽ/@ٹ_s5F199[|J/fv|Ў4.7g?6GOY^Z/4hj@ٹ_s5F׷GȈojZ)8]'G/81𕶃xן7- $/g/ߵxb*}ܯ9|FKCiҿrTjs3+Qfx`6niӢ@Y^VԯdĤgrNzGK(j- YFo9JG'͍(N,R{6+v5Jn)+W_ebB P^iZxhNxs5FQk3>.9㖞ʼni}`僅Ed9u*eWQu`Q3ZaG2N -=~ʼni{0ru2rbSz|3:I6Y^>u`Q3ZaG2N -}v'I{0Ųh߼LJ6'0tQ߼+gWN>u`Q3ZaV8W|+Ӥ_=EdE}͋+^Z=u`Q3ZaǙ3Z)3;n (NL~` NqydykvEz|ggm]9~\dPiZPrf-}zʼniN]=VIHޫgyzܜ #4x7@8j5qү9n_81MUރ(Edx-=~O]Էol^T"pN9|FK#L|VRI严[Q&*Tw[EE}Tl,oLPiZsseɓu E߫t1[#//Efl~_kúOBC}He4ÇmR> 'Mt/2˂gsW{y:)[V""=OR+4ԋ1h&&mR> 'Mt/2˂g^^ΞJZED~'xPol1с N6)Rij&SiɗtLe3URVzҠ?T#__Cbݻ> @ |NJNL&_>OY]fY~U>yms͵JZfzDj'g .ԓ1WoTzJ J4P4JM|;fg, C9e.zy:_U>_QZ׽ą+ԩJB)Rij&SiɗtteuғW{y:_U>|r/6җu]q&&*= @ |NJNL&_>ǏY37nԶsJO]"tFt+]Xh~qNݻW\b+= @ |NJNL&_>ϗY3O5eK/%6e^^DJZqy(/^+ѡ>v,(-9 @(h8h2|@|a9>^fY~GM\,"t^}wŀzzDv?{Db#G; @ %~NDNL&_>A/XfYz4zBQij&Siɗt[oY? L\K^^sWV^ hb}86\yjqC}\sg9VwI J4P4JM||̲șMdJ/w{y:'޼[b@zD|F36_ >ߪwP/-EAoWwI J4P4JM|>/,fz*ђ+}Z//BAՋ߉hԜ;c3g*: @ %~NDNL&_>eY3$0q.zy:_UzWџь5nCBo_{wEGhi4@ 5@4r|̲ٿ?ц+=yq3UՋyok?s8aVFQR"SAЋ]859lI-q䥩UHKZ9U]:)7]X8Lۙ|?<30<3'KdV% cC^c; PJjp+ ?qxi)r-ճ7jAfbf֪/Zyfgguޠ$gfЁXN8\JO|B(_ڨgyZ X5TM?kLP?}ȫv7C}Cb; PJjp+ ?qxE)N=QJODj&6j/8a FЙwXN8\JO|[[BlԳ U3vjO[jPf+]А3dnāXN8\JO|ݕB)hgyփ(VbRˡT4ߠ4a(WVL z4@ + ce4G:1J?7(Vkes/*ilW݃u CWXN8\JO|HB9a(Uk UԲ ' *Cv?;;_z=d cq 5Bdil1+b9bB7Ɂ m3>|yl=w9VPXi-)Nfg# Us] ZYcE=?Y5ߗ/Q; ٞ z4s487ͦB(X4[JݪQޯ[ -JsvbjVC 0 z4s487RR̘me'6jAzB7ΡKkU3Ռeu,α8\JO|H],P·me'?Q{5 ْՒ kU3y/FV'^`; + ce4R\d.ޭQܩZ+c+sݕȈcjnX#cq 5B(gjl++][ X5>.[++[{s+%k=~as|&a; + ce4T(PN`>^ X5}Q8xi稝}`gC*PIJsLwN:Jjp+ ?q uB9CCf[_{ 5= xV[$Cϛ-%M 2 u^4Ofz4s487RKKRf`++DF-x٧Hi>ǾzsSUJ37U 8cq 5ّB һ 52\Poz$Z=hnhn_|logX1i@XipC .c'n><)P‚JrŪ9IN=鿦3Jinѡ>sFaJ2:m8rN:Jjp+ ?qʹp`\V7A+fNA~ۆ(zdѡsGaJZͶ K|bq 56>.PNhR.+leOi!T5G)ͯn>7ZP2 uަ$7of\8\JO|hB(gz`V|)b|ZC^^hR;7u3=ԃ:oS̻w VPXim/J!3=mR^+[ Us񞵆SkR; 6u3=ԓ:oS̻w VPXimRLNJAuk Ҧ.^~n^]y w'4487ڊE)r Z镭 U3\oZcIc>6[FC4ػ@1< V,PXi[RsxLD7Fj8gΚ`6^n-V) uwzz$@1< V,PXi[.^JEN6*ZrA>)2]<~~|<iSȑڪaZ.BN~:`/RB} JjW:UnO;' ZilL.Vh̃xˤ3 )lB6|N1`3Vn6٬V*r>82fWBAffR 5E@e~XވIjC-FGk5s7V,PXi۴k"#2fWR 5+0wblP<)k5s7V,PXitwk$)/c|?Z jF W] TcԆKr7>\#Ɵ=`9lJM|ئG+%ŋ1 -o )C\6Pan]FZC'k5sV,PXii$퍿.T-:;k54`74Xp'Y]ՙVJɘذ7z~ e#8rIQaT/P H.Ǔk54`74Xp')$17a/z~5gr`638L6㒋)rrv6<ar 5،8eLF+%IgKVeAԜv1QlT,VԆ:^Lg&W lgs#V,PXi;JIԤjXE2}gMQ-PJ 艉xjXҝKDY,o !Լ U~=͡>qBx1r9j`)K`9lJM|MKVJLFON~  )-cK z5NsSO^^NȒ4`G4Xp'v߯'33vd6?id3t$0?}a!tCkU]LGmuhG%iXiC 6c&N>fjJ+UUY}zU,Y=?R1U;ng*̅O9[&ѽzq1Ѧ` K`9lJM|dRU%W;XҟU˦jpG53ij f¿3=hY%iXiC 6c&N>졷W+C~[X(z~ ȏ'nu3N:dZ4tTD*jixvڦ$M rEFh&k: lzPؾϽyy}c{8\?&>f3pyvue ; )* jЌJO| CkLird=gA |Tv6l>>(2u80e>OLiOQiPPfT~ff19LO}JR%b$M嵺,S)D^:P_ԙ Ψ; x5hF'|V3oWU/w(ջuϪRuj7r{~Jis4(G@3* ?@O[ctWt,Dq~Vjn7j,(UgڕԛntMMPw* jЌJO|S00ssVriإx]A?vR]*KKMǎz}`@i; 8Jr4_>cuՆ5&m4RܫJ 8l&Y3RKuP0ufnnh; 8Jr4_>TŢ5&|UKUnłyod$DQ_A0Q)Dqt><~,UgZNBg76ӃW\4Jr4_>d֘sd_7 3׻%aRo<_mEzoȕJ,5hF'|㏭1' mp 3Ir=|DjtQՆztT<]zoȕJ,5hF'|h}#އtea9bej&U{~x~PONJަ \ R[iͨ4ėbzΝ}J]J(Wt?\m}W6̸rK@=B Qi/;~zFG{ k esok+UY QijCif+X* jЌJO|ݙ3֘3d7=mÇ=NV^[IŲ˝'F tdpA0MLrK@=B Qi/[\Hfi+A!|W=p x,V'T6/JS\ R[iͨ4ė0Ƥ' e3Pv>T͂(V6ԋX ?j+ T# ccjݎ_{[Agm_#ӥGX{3ՆzsS0͹^K@=B Qi/rb̫ڍ7 eKeȏo\?JU UWބU,lnd] $Р6i VdbY:|FI 'DJBB RU\;kL72NCj';3f3L"/ޛ5mu>/yP:dJ4XPͨ4LJ:JI& :Q Z Xde^pP;NT:IubŲ9ui x,V\8V6!t@l4J5،JO|JgVJ>uMW*\Ųyw$5}8YY_7͡~>\ijRM#j;kRR% XdVajj^x;k:T= eLo/+8Vbz˂6Za*͕PiQi:rD+tDlsKOM{up|jg2xy=:j$ bysT,GfT~@tjot=DlX4}:cJzj05*է> 4J4XPͨ4luvj2KV'VrQf;$5}xtYś?CC''ݫt(gWMo/J\0V7/Dm*tf0'* ޢ`9B 672wV*9rJ(Q,_?mz<,V^kIzc'B=10饗LD[T,GfT~@XV*yםA˦jz|eҍu\m0}mTDrlF'n> .0J5;M8WJbł9<2czaLnCQiQiwNRMΝ;W鯮Q,gʦ#˲X= nN0laZ6} nU|CrlF'n>iZf&ݱUKA &j'^*]+~?Pa/R> lŹJW4XPͨ4J{t eE,V\nN?ðimΞ5}؊PiQiݭή]s?H2{J#:;#r?LkeG+ `9B 67ZVӅVJ8ws~t9bmfz|EqZqw:ItOaSO>lJ4XPͨ4aùJ_KrQp"ITQ/zATB`+2;]iި4XPͨ4VJ goz eյX{/N ݻu=l^f+ jJ33: RkR^\Eq KIjPJ6?>o7ߘ:l^uV+* #`3* ?qŞ{N+%uj lŲd3eq~vON'C40`zzֹ[iخ4XPͨ4JɧK'34bb6 X<]Y6}^(UVs}XO\萼JǏ7l^uNW%* #`3* ?qJɧ ebj8V?}C$Oѣ mӕmJ5،JO|h/J55ЈS r>,,ꍢT;{vc$Qg}en[t`[`9B 67(RMMw34[wU\W?\'Ǧu Thp' P]Up\:%ETJ)P'9>'ǯޙ6!|DYObYg\3jqSQO|22=MvZa>^@M^[)TdC{ߖAi'P@K(j-z70);ڛL?q{7AՎg rY;Q3ZEΘ`mMvX NKT|jo |юg rY;Q3Zؘ~ q@Θ39ƎO8)3kKf:}E{AڹA.;k9|FKCW Tj3g1fv/8O4VPq󒸦~AK; /{cXk\v֎(s5@ݻ?ԉDtwرOkq"zztZRYGT;Б#ghdD;:<6eg8ZW19pu{1< N7Peg۲:t]"M] !Yk\v֎(s5F=q7ݮ3F8ׯkBg8 ͞Wuv|wޑ?CQffXk\v֎(s5F=qC挑{tj'%g*/m_~֎/n(>ČP@K(j-z]9czWv]I1ikuK{uh%.Ϛ%AGic rY;Q3Z?3F2{w+i'92^@eˍ~i;ZԎ/H }3gf笵A.;k9|FK৏?vH7\I:<S#Ԏ/&gEnvV{ g rY;Q3Z?]1=ρѥ_q"8_^@5ݼ!n=S%>T=4Q>\{f rY;Q3Zo>y]]M48E%TgZvj}[;޽g2Pd rY;Q3Zo8c$svt+qRf+]%Tuq5_b|\ =4i P@K(j-zMgdNҎ^¾?,q"ɒ&SY5֎/H=8.hoƬA.;k9|FK(z]ʊvt/ڛϜNX8iw[{ۿ,ɪLمFFz~=GjƬA.;koT?*Qڗ>g3B38IC5=&`ap]F@"%U; `3fˌ/s"ȓDh0kGrހ(jp- ?qe=7g;?=R ^+ko5/)W{|8٬ژ5x,ϷKTq58ಎZҞ]hl̆&ZK6kKͺ=%8\FKO|pYw?ieo^cWv~PXL^+i/$E>8MU*ϷKTq58w9e̪16MjoyDq/i/_^5R{ϖVǗ(|>߶.PQ2Z~˒f޾_ym&D809@{ gge4x={Z}$r9*yNKTq58ತ|r1ԔJ1~k)4yPY^@kp$kl 4 ( m=:/%uɷ8*48'\[c0[m/> 8M}2RY&OkbBxkKk5ɷ8*48'\[駗uIڡ!jvAȿ{h)k={Z 6>kKk5ɷ8*48'\m5+ahwJ&tD[*ګhSjJZx=~Z/ zेD= - e4=l'1l^m.(N*jjHXM算gOk>ɽKst"PQ2Z~6t.7mczz׫}qM ɗ .:8\Ԟ=G%Ng9|kBK(jp- ?qe[΄5ް6'A̫s{h V:]tюreU{T$7ξ}st= - e4}/^ah[Y;=dm&ATXLߺW@88<'˓ڳ23#qv֞PQ2Z~~cc6-d>j1<{^@d]yHv-,h ??|NAK(jp- ?qe?ql-ss[n•2QȥE%ʪDA%=VZZ?_\7sϏ>q58G+1uHo~AW(W"(뢁keSy5u34=7<9 PGK(jp- ?qeny{5&mЎ't({tN{-eEt`={*o!nמ袥q58ZZ9֘ٳǞ>mggDe>;D8}q_{ hFBO֛oJ.CZ-48'\VcK߼i_|S򊝙iU2QSE%g~_Y&n٩=7q58[R'NXc0## RD8}%%4C:՞]nxXrmTsx48'\ٖ-## XQX^ 8Mv[%=4ޓ pGPA(NzL{|;w7<4hipE .'N>l-]؎kL}vj[uQ&;-\@Kyo*hZI{|lVrk 3}NQ2Z~-==mSrRy[+}qJ{_EU4='r{JcǴs048'\&k'1uKOc]1  WД+l~궠y̙rݒ;xF4- e4ZTvYcꖁǺeZ(NW|֊zы)~nݽV B/\z5l-ì[&6FbԙXXA ShG11D[Ət1MIIN>IV#B8$Wkޜxoay֚_ ĉP04 T#F1fJ5&c;>oKW3+;.$uO -Uh>!H.'B@PiPPfTė+]8d6أ(I3Bo`+y}69v,9 5hFQL|Kd9F(I3KweSyoh*Bݒ3s5hFQL|Ke֘f=-əid2C/`kXO,Nr >Pr 9 Jr4(&|̱7o8d623$dv~VV79.ٱjH4(G@3*b+}mjd6j[fiAu[FYL-ݫa=яeyT^}tEC@9B Qi_>hIѣ61˙nQ:kgˡ]}y&;K!GΞ }nEs 5hFQL|Y^Xv^ktueGw':WqZ.M-j6gt%%HKKs( QiPPfTė71ٵ+Sxwo[JQ:ί^j :v_)B C@axNB@9B Qi_>hҵmkӬ݉(IjUU]ܓuL-'O w}y@<=ͨ4/4W  exx)JRٖRU(Udp{.7n~=45hFQL|J Xc$o_(IsgЫШ>Կ=Yd~sy=$l f[^@x}NQiPPfTėtk5F2Jg7g$uŕЫPgC%Aa P[Y;9zsJr4(&|wGG1,~~]q|QyQ[ ]6Wyi y5ql\ 9 pA@9B Qi_>hmjƼd~nW$u7fj7ɆPݒgJ\"vx845hFQL|YniƼtt8wמGI8WsȆP$O{{uvJcwРrxNĨ4(G@3*br֘מfgnayuw9JR9us&*ruEЫMNڦ&UR?V Fs F@9B Qi_>hC;;1yqwiy{o%s`x**TڪUeNW;}ZxG^@#9 ͨ4/4ˡ==98y7%^@xCŲ )yz{6Лh89<bT#F1f9Tzd#G|(T}> 6m`JГߍ͆^ؘ6Y&;>z%4@Jr4(&|,JXcsT|ʻVjےRӛ,@HC)AO>>^@c9 ͨ4/4˧]]}<(Igjm9L bЫz6Yj5&H>i 5hFQL|Y>~4ql<Σ$u3dsT%1ЫdBYkh <2T#F1fU4qlGGЗOEI>WsWPr"+jm\ML/kh =T#F1fUo1vr}9(Ig^5*ãYF>}y&v@9 ͨ4/4˳{Xc\٭:;Tx.9ݔH;vV!&43&` liJeڸ͸jқHÅ[{Fby|>+_!s}ΩTϘƟI kCkI X;hY>{E@9B Qi4'|,J;cNTJd~1l& Lm{_WIae4,ͨ4_>heWW]:cιs3-+.?6=ͪ_=/Jo^J>:FsWT#Fs2tw3&<12\iAw~4hf֥C}҂G=/Js+O!d 5hFќ@+m1q>iZn] "̺6cp쑎#dwIĄU2:*}t !4`O4(G@3*ėe_1q;R6hf֥C==эѢ.i(]\%/(}t !4`4(G@3*ėTw>0æ|)ƜA;5. t_4dwIO#ǎI@CyNvJr4hN|Hu3&քlΛF6=[>@v z/ͪ:i8r>7 5hFќ@3J_w̎KMddYziA\|T%%>7ѣݠͨ4_>h&X7]:cb ; L6RQ+EVLm qQshiE@9B Qi4'|LֺgL7d|TAdH/ yBP|zo]p|444(G@3*ėiԔ3&֜:%rd7# LnH/ aB%JL~U%=Qn@4<PiPPfT͉/4SRC1T:{fJm6s~~ HRPwK{W꟒4`GT#B000F@-%agL:{2~D6yōJUz!D‚.yycdD꟒4`GT#BҲOToox Cg>-u\~:h(K>R+O{wIOOq?%i4(G@3* YCCCuttH Gytw;c'3O=D6DHo BE8 _; yNͨ4d }z{{#Ou3<~bnn gUm$VQW}.<QiPPfT jooTO&&1* qkv ?/Vh׮0tx+rYz$ܚx 15_Io Z:]*)xָpAꟶ4QiPPfT͉/4SX)9y;$OZ"L~UZG(JFG}s ͨ4_>hvwI輼D6tRZ.,_/Μ>79 5hFќ@3.]:cgǥ׈mviuQ2ۏ7*UYP-WgL Cw&oF6Hh]N1@y*Kz& bR8* jЌJ9fj+}3&9vLz$.m>;D6Nv1y-WvIOWq?iͨ4_>hҥ CgL3ov7P̑"F@~QX$2R*)=*-NZ"RHH!*9j#ޝM>Ҟ/}s~tWf>3I[Q5iC:ɀ>ppIe).Os`iiPhiinikLst|pw3Ӽ-@~ހ~cp?Je)NrAK4?4(GQf44tj0ͦtd={Fy_Ӯt&?c@QO;He)NOs@Kr5hFK#L|LyKߺea7ԣ8e̥Zҙ 2W~T$PH? p4(GQf4R3LNJlB-\ֺYO: (זNяRYS.ss?i- Q-0@3/ZzuNNZcܧTt\i^f֓`ŚÑ\R3g\n`H^< X4(GQf4|iu{5}34ޖt (kKu,řq!0E ;4󨥻]{5qNPF6qi.%@ۚaLRYsհ ɣ4(jЌFw-yeJ[z'm@Ӏ~R᤿s}M(Jea~^zsBKr5hFK#L|̻n1sz>iFq:ӕ'ϤEÚIڑR$q*uwi - Q-0@3[zj2K/Hfʷm4m^8]q%I\JEzsAKr5hFK#L|ǖV1.31a[-R#\&yzyNEitOYS. ss?Z@3ZabfcsGzE6ﺐFq>sn֓`Ǣ]h!8.̌4(jЌF-y-gQ57ַ:=L@v*u|oK0Kq\.ǥ > 4(GQf4m1J^^z?~+Eq˼X_w3A۩ C}I[0Kqu!E ;41.ث6i^-L@v*7?:Y35r#?.n9 !@94&v>hoK5eY&Xb+Ӽҁ@TԿX9lӧ]nYui- Q-0@3[:쫯Zc\}Տw78k~})Qߢndx4ɦ)JrK}N@hiPhiy9|Xz飒쩛Q5WlIgӷj9}l$uPH~Nأ@94&v>huKXc#ՏJyo2Gq$[YO:E}jC6Kq.T ^?`E ;4m[*Yc\AeFfgi^sn֓oQ}}!8]07'n9 c(jЌF-9q6F(Ns, }}jC6KqΜq!FKr5hFK#L|kgܑ0*vv/QL\ֻұ׷]m8ۃWY33r lC9 ㍖(jЌF֘[JF6qi^+NWmK\ߢ>xpf]mf)ٳ. i 0hiPhiAK_`vJ%{tW֣8q~ՒE=N߯F)PR1xN@94&v>h6-lR3l50#z>iFq,=z& [}\9Փ+Y$._H9 c(jЌFxԔ5&)͛aF⃭(NsJguٔNS$'uq`zQJEcR^(lmrQPl41ݚ*BZS Ц#[p^쮳xd%$n<{y~zowu^iѸd\nW45hF&N>hVJ/,8SV 靀z1smK5mzTr ؘwȿb<4(G@3*0q@Tzrg؞<)OV_iDIq^?#P(/My2K/3##.nW45hF&N>hVJ5ıxQzw%yTm&P/s+դW顡!J7+sJr4'4+Roݲx8.I=j~զf@jsҐ^vrI}WAEzN@PiPPfTafА5ı^)+2Yù{.xHCnnW4 5hF&N>hVJ/,8x}VYi<]Ґ ȷB=uvUzht%## ͨ4͊Wsl[cM]\*+:gQ Fz3 Ǟ kpd.I/J.nW4 5hF&N>hVJ=k1歷WѹFo"v-WυOKpe=zRq{,i( * jЌJ#L|Ь^XoSJ雭$˓չZ@.=ߜYޣ* bͨ4͊]O?۷[cwH/kwۛ&Qb[z-@Fұ 2R*{|\_iPJr4'4.8ݻpv;JRHz, l`{4ґ #Ke<@3* jЌJ#L|ЌJw]`1>geEz+ hFIqkkkb ܠ7N-KoJťw?5hF&N>hFck9qBz%!'ojfκVݺ덫8rqt+;EQ$VcIc7y 8@дMv"ˆ %qΌǞgwzզsk Ӻk=:6J'88.]==-7s4@94L\>hFKj^h|u&&ȹpϔ k& 1ޖ󏶤?PgθtuWiЌ(jЌF2q- ;1a4GJUR0nHgm3NGz59_@D<@3Z@3ZfjZc"̓1D;SnyAdnե3K~/mJ^}եxNf4(GQf4h}Π\0 nԤgSF#u)?- Q-d@3Z;\j}8߮HgP`f ¸fZHgz9|3uoGz}KQg{<@3Z@3Zfw[\oqt޹#Aq͏WْVnT]F.٬iЌ(jЌF2q-߷Iʊtr /|[Kgz1ǯ;˘ui?- Q-d@3Zz?>oqA{t~L%/㚑|yڒ5Ն2NrI?- Q-d@3ZzD|^:ata ¸&RAw"H'1:'NH hiPhi$t5&={V:T0ɕת-X@hFK/[cb߷alon֥~z|fTH'4;R33{<@3Z@3ZfAkL at(TzqԵjՑ<7{Q>RC:\ΥY?- Q-d@3Z,.ZcM0:v*'zt81z_*w:  .UDs4@94!X,͝;XCCC\>q-.Z߷DLF:L͇^tvG:??ʸ_/>J/y*pAzo4hFKr5hFKCVX8$j||\xo#G11l$[0ٿcG:=(w^ޓN \+4hFKr5hFKC!i#xYY5}|V14mw~va/kՖtDl{tΜqI?- Q- Ybq``qOt>t}nս ŤR~!oɗ[m*KOOK hiPhi+sssj>beZcgTXnxAأHGעػZ<٬iЌ(jЌF2q-эY]w륻w#rye;=WCh .%{<@3Z@3Zftt}kˌIoZTa ^L*3t_UZOG.oHPdpХM?- Q-d@3Z:ccKޮWnw:\G( ¿[!X_wߑ hiPhi$ұh61sU[G^bFJGDtE|ӥ~^zo?<@3Z@3Zft\&&1'۫z*(yA<1Ov7 ?UU}/**RlUDʈ@/H"!$^Um:K>l/11G]Q"*("rvŻ=uw@2* jJO\>HF-:|(OVZ$&}G>{{ǫ8d 5HF'.$ݸa}FF\/-NhƮnY6um#YiCj Twh>@2* jJO\>HF0J8ahff\/cWA\z?dӃz'(=4zqΝ뱺W |NdT# |J5[?wFJONbrbȎv̛|ؿ'ܻcuuiJp$Qi^z(k̸^#=?hNb~wnm}zEdX/ Eڼr諾ts$ ɨ4dT:M`;7I\Q?Qa~HF;1B X}iJp$Q$@2* jJO\>HFR>T)ef|+ ?H.6\X*{8'/v:=z B@2* jJO\>HFsQ ˤ͝R5tzu"GO<+ CtBT47!T$ ɨ4dT:Q,Lg]/BcW"kD-A7ApBzc/zB@2* jJO\>HFU.04JYJI[c+AO.UzC3ذrc7+oHu䈝޿zB@2* jJO\>HF6=m(eg]BvZ$WV[>~&r򤝊Mdɨ4G@2* ?q gѣtR A+zp1frQZ ݻP04edɨ4G@2* ?q ssF)kouRN(Gpc+Um:$C阽{sh2JpT# |J)F);g]6]"^;7Ek'W>|Cֲed4G@2* ?q ISS& RvfQWJ3o:#3VzWS6,O.Yi?>i;zedϕ4G@2* ?q assF)k/\6z3xz5 98W׻"qv/ĕPTJ*]/ 45HF'.$;ojʄQ:ztj?Y߯Nh~AeayHR͌/5y! zHzm 4G@2* ?q v)F) Z>i?7w.:][¾w$_|Pq;oy45HF'.$Ү\l 0'nUώNh)UoW[5ׇ>Zx!OݻMz~T# |J;駦P0JY04.'͚ᙵ M\p%t*vocayPf*?zT;u`Ϝ=cڔR$0]2&Uf)`[kV1*Mqcz/^{/sRUUxvΙ9OW{!3* 3@gTZe)D4crnN> 7x3u-S{PU"zBO" /63{ӣLbf )4hPΨ4QimK!"~z{]hyvh*W{s+_t=L=|g×է`3+ IA@stFa&^>J`nNvuI!"nY'ᚁuy"qC2Zj-dg^W+w⣟/{PP?`f )4hPΨ4QiH!" ՛F vtzWw,m_MCY4> Uy̬4$jx3*Y)D4zq*ǵ:<& |^7h8u*LTy̬4$jx3*ZMڶ"kkIR㗣yq;=uw%R)<;ae;YsOhftWJ@RPiQi:BD3Bu1/ 7N|ulçue'43G^ ffVJ5JL|֐ʮ.)D4yIf MeWֵ8F {RRT*`n98Ti u__>7YiH * #3* 3@gTZOҶ̹sI+{syqc)RSމWFVŰWuug63ԧO)ީS JuRNMҫǵb1J'"\z؛[dȤVn4Ond}Yj'>:cF̬4$jx3* .I!BΞ=T/vf?mXd>r㏫Pɯ62 bCv ѺsTy 4$jx3* ܿ_ r쑃XTF /W,U8=vY¿kmTۍjU ^y4$jx3*,kkҶ;'۷7IGUqϏܞw~CtzuhϨoz/N/hH]W<}5ǐJ@BQiQi:҉sbcrvV&ozj2GTJ[-|5fh>VoԛA 깹viqW PiH.* #3* 3@gT:qUiRY'VKc3ŌŹ[-7FL?n3YeqчضNw4RI>̓J@QiQi:It"^'ժۭG3Eg9V# G_m -_ շ_Zo}#^xUC",h|zFJq 4hPΨ4Q$mK!OMM^ jb7JgȈ"9~\ƱMyϹ]?zXk uҙӧSW 3`* #3* ;q@gT:*8R4wToey1g׼_q-5T߈0,wrFX̰Ja4hPΨ4QLtI ,,V˕D9c7"&:)LWTi0j3*ia( )DJgҒt)DsGU~)zaLzo+OcBۛr% 4J5JN|6Ғ,iN SpQ/2Ma6ŌPolHI3SӒrfTLE@stFa'n>J! Аt)D:S,^ ?Ww1wvm%VIPϧd{fTLE@stFa'n>JR##] qIR%ޑwz#J9c5G'|zXkfF!^Qz7fTLE@stFa'n>JZqezD#|=]/5e|@EJV, tcFTT4G@gTvΨVVSRѣToՐw޺M)z3Ju_ŋK>{zx 3* 9B :Ұ7tF DzX#8М;'WWU/;~]/ǸK[gIk1AWz]̨4J5JN|6^(88eЄέ'rtk^εhѭ'VCwHl%>.>7ŌJ4hPΨ4Qiű,:FkͩTTb@`T4G@gTvΨ VVH!ҙBA~ꕰ^luφ93f:W[ կꞞVjss@ 4J5JN|"qyВf}ws+^w~>៺ r!OCRݭЄWF@stFa'n>J[ZmmRq窷BzK|}׼lg/ןqeݨPϷؙG&d`6* #3* ;q@gTŢ"9wNJ8Lxaup|f6NL]Si쭰{6虋s´:>t ?w.|WNCr|TJ٨4hPΨ4Qi{Dt)D'Z㻵6˯Mmc~|*Rm园^DqgMC}rrE Y4J5JN|"qz+tYuQ}thB+ f9B :Ұ7tFyqie=}}-%TJ٨4hPΨ4Qi,-IǑB6VVTo->s=МWF@stFa'n>J[haA RԦWJ2(j1,_|МLWG@stFa'n>JoJ!R(R`:`IbUpڿe=0E44xiQX/@,a.E 8 !< wsֳݟa?'Z= # 5@f*Msŋ,ɘݼ++QJyk~='[/pdC4x4@rB Jd29v MxF2,-ne95P_]7SRNn 5@f*M[| x S~}4KK{{ΰB}vtݬ=Y_o c 5@f*M[رc/4o1'ag'~;.JuΜ;wZϑzkNFΝk # 5@f*Msŋ, 'ND)fu5Ο+ %?}_' |z#JIjTqr2Sif2RͩSz+Aڵ88h 5@f*894tLRs.._n VP_k^OY44@rB J3NN>@f*?=x]Ԝ~U`wJ"yFNjTqr2Si(t]ܻz1̡8yf(J(sPi 3f|T':8ǣޫW^i\iT 9L'' 3\T֋Ф gUWxvi+ @4@zB J3NN>@f*ͿߏR*꯿Yim\iAjTqr2Si(ƣGAI7eaSO* PdҌJFG)_Z/-5˰w^ `* _4@rB J3NN>@f*mnFE)57[o*{{R'v RUQi 3f|Tks3>J9{{Hꝝx:&V{T@f*Dž qx2}y^p3\sԼ`<2Si 3f|TFE)ԩnd$ԗ/׼-s 3HN2SiLZRs>]kP_]WFR,LjTqr2SifAt]Rs?xR ֭w_-yNd 5@f*894ULN)ҥ֋A V}[s^<2Si 3f|T*s\^ZXby}},@4@rB J3NN>@f*M-.D)sոzbB}v}͛un.0 4@rB J3NN>@f*M-uQ\f?zChdzڕ+Rt<2Si 3f|TΞR5]}zChaޡެƍ 4@f* PdҌJSÇQʼ޽K5;;T󞮭ݻu 5iT 9L'' 3(e^˭7k֪]ύݭu9 J$'4dT}kNKUalmŧkչ+0H4nXYn?]unB)I6h`Dbd$AABDN tn"fa0H"sԳχu90z@f*M{]?-[Oė_CŋGm[+/ܹV4@rB JM. 3m4QĉA(_l<wͭ|wf>uj8@^4@rB JM. 3f8VVWiϡC^t^Z[533CLjTnr4'd2ٺ5NKjP9M3/k3$9 J$'42Siر#Jlqt78ׯ࿦ f星C9 J$'42SijY[Çfj*k/ Acib~4@f* PdtLOibz:\$깹ZqKd9 J$'42Si(ݙ{P=MsǬպ?@:4@rB JM. 3&gRڝ'G^^O;f󜛫C9 J$'42Si򘛋RZ>* M*V?415˵4@rB JM. 3&8|8Jiq&&ba cͶ-zsgLOl\Z{a9 J$'42Si(i8~<.]'zy'>8v,cu#s 3HN2Sid7;M;۷t>~6s)@|Sں5>~XLjTnr4#ܹ!T,/ޙNoWc׮O1?7;4@rB JM. 3fT,-kE)C7ވ?68[oZƗ4@f* PdtL-qd8Q0fXY6chVwj0<2Si 3\>@f*8s&^z)&Jiqz8~?wcϞرӝ ;iT 9L&J3]={ibf_qKG/wiT 9L&J36iĉK2._={=λkt4@f* PdtL'_|;E_{OFLgyl7iT 9L&J3f~!z(ř{2 ~5yk9xNd 5@f*M7|TQJ4׵$~?q'yj3<2Si 3\>@f*Xx1&&i{dW'iT 9L&J3׋RZ{O?ŋ/{us++.LjTnr4c…h[7U[(NLݪ%|F mJPj ȇHpIQ6\GONNbY7QT(vv?OրA.~y(Vp^|1J-.tFO.RׯW}"59 J$'4d2Siַ((ҥj\LMoҧׯW}49 J$'4d2SiֽꊢXѸx1?ltLL@twF-}[>#ZLjTz4upVeEzkWܸQ*ٟ%s;DQԘ4@f* PdԓLf3cl,lX)ش)bx8FG8>Ξb|W;w`:z9~<8w.>:iʕ]`ؽ;Vi[v2s 3HN2Sidb>E/{/>ԩز}Ĕ}vgWY+4@rB JSO6 3۷?bmL__~FYMVTlVm>bn8qB 4@f* PdԓLg?ǎEQKѨskbf&^}5{ss/?Pd4@rB JSO6 3_;s&bNOO}W}9ZqJ7FYVA9<_}5@f* J$'4d2SixHŚ{ca꣬NX_cc߾x8w.jT 3HN2Sid{(Ôe͛Uj4bb핟R.%}Pd4@rB JSO6 3;p b̞=qFg܉W^8;v_/ӄ 3LjTz4ޝ;QQjNV]1f쥗ϟ 3LjTz4ף,(ƵkUr[\vjv2Nf/~Pd4@rB JSO6 3Gs'Xo 1<ǏDơCq؟ј߷}{twWK替B Jd 5@f*M=|TՊ( c?7ƾ}qBܼ (4@f* PdTn~~~rrc>'16[DQtuEg1.\~XjT 3HN2Si5??aÆ*522R1'ݽǎEQZXF&4@f* PdT>xjU}B EYFQMVcDŽ 3LjTjoذJT} ,V+._7ߌcgh(vM(:mwwȑx1.L2Si 3r󓓓o V㭷bl,w8~$@f* kqb_vXũ0 ة`+m|y  Z#iޏ}vmܹ^^ñٟj2(Si8(Sif|2:?_~qwx>/(Si2j2f&(Si8%ޭ{ֶw溼<[kB Pe* 'e*LPpz./kۦ~c e* PqB Pde* '˗ڶۭ/P4@J 5@J34k[6j2(Si8(Sif|2wu޾][ֶݸ~^Zñ? e* PqB Pde* |޼Yk_'O֋o?>~a}z 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J7v6b hQn&YEAs  5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@J34@P4@J 5@Jvkqnu}^}u~qB Pe* 'e?+^0kqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB P_ 00_dp23j2f\ Ψ\̥̥٤|23j2(si8(si6)̥̥\ Ψ\M(si8(si23j2f\ Ψ\̥̥٤|23j2(si8(si6)̥̥\ Ψ\M(si8(si23j2f\ Ψ\̥̥٤|23j2(si8(si6)̥̥\ Ψ\M(si8(si23j2f\ Ψ\̥̥٤|23j2(si8(si6)̥̥\ Ψ\M(si8(si23j2f\ Ψ\̥̥٤|23j2(si8(si6)̥̥\ Ψ\M(si8(si23j2f\ Ψ\̥̥٤|23j2(si8(si6)̥̥\ Ψ\M(si8(si23j2f\ Ψ\̥̥٤|23j2(si8(si6)̥̥\ Ψ\M(si8(si23j2f\ Ψ\̥̥٤|23j2(si8(si6)̥̥\ Ψ\M(si8(si23j2f\ Ψ\̥̥٤|23j2(si8(si6)̥̥\ Ψ\M(si8(si23j2f\ Ψ\̥̥٤|23j2(si8(si6)̥̥\ Ψ\M(si8(si23j2f\ Ψ\̥̥٤|23j2(si8(si6)̥̥\ Ψ\M(si8(si23j2f\ Ψ\̥̥٤|23j2(si8(si6)̥̥\ Ψ\M(si8(si23j2f\ Ψ\̥̥٤|23j2(si8(si6)̥̥\ Ψ\M(si8(si23j2滻{ֱmM8RXc5`.p3%<߿_'qB Pe* 'e*ͳ>Qu=}OLT NT~y?j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLdeֱmM8RXc5`.p3%<Wi8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Siw_yZ>@ NTLLy}q<꺮 @P4@J 5@J?j2(Si8(Siuq?3'e* PqB P<|, @P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde*  _CA8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si2n(A ʳ IxYM0{^MiLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*Ϳ|m8^6(Si2j2㺮~|>}~OLT NT}[x<~}~OLT NTm?j2(Si8(Si]ukq 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT:m XcC@} GqnaqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NT~y?j2(Si8(Siuq?3'e* PqB P<@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NcHo· "P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@Kč:m XcC@} GqnaB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLy}iY8(Si2j2Y}뺞>_'qB Pe* 'e*ͳ>^g NTLLy}q<꺮 @P4@J 5@J:'qB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NᏝ:(ZT۱} jzqEAQF4>yPe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*LPqB Pe* 'e*ۭ׾oT NTLg_ ڶ8 |>=|qZ۶{q\py{J 5@J4@P{ [>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J 5@J4@P43Y>@J ;u@ e\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥⌚[Ƕ @rv6Hb1Հ͔8,(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NT~y?j2(Si8(Siuq?3'e* PqB P<@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'ֱmM8bXc5`.p3%</Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB P<~|, @P4@J 5@JyyO/8(Si2j2Yi3'e* PqB P<8~ug NTLLy}u:z~8~gIQk*E9lSn6-\i E[Qu`0M< A'As^<Ȏ<{6 -@*nܻ˱KKqV|G/~G_kb~~#^ae%>4nys]jjT 3HN2SidPWqzLNHr֦ibv6=̄ 3LjTv4ID)m٩}I2SiT 9Li'JCD)˗ۭ}F2SiT 9Li'J)ci)Jit:q~k*B Jd 5@f*M;|TN/ą QJۧibse L2Si 3l>@f* ۍދRiڷ2$ 3LjTv4؈h(mj_ϐjT 3HN2Sidpcs3ǣiW5  3LjTv4Gb~>&J14wԾ 3LjTv4h(żܾ=8@^D2SiT 9Li'JFoD)ovJ2SiT 9Li'Jkݍ~=bd$J16MY;G2SiT 9Li'JKÇK?k}B Jd 5@f*M;|T|WD\Nbhlܹ~ͨD2SiT 9Li'JVLMED)&LLf<}Z{WNPd4@rB JN6 3cy9.^N'J11ow 5@f* J$'4d2SiZۍh( lloާ$4@f* PdҴLi~?>(&JI:Gml,^7XZX^[ru5O^kbnn#^?2RĎޭ!4@f* PdҴLiX\RO?vөszMssY#8nB Jd 5@f*M;|Tx :(%,,DW4ՎGw}5@f* J$'4d2SiZh(%t:Y?$&PX(38s^|9(4MLMիO<3sk᛾Bb^jT 3HN2SiddKKqL;{}6ffo7ѣ?Gsܺ/q8lll^w5@f* J$'42Sir܌0&J0$Ν8>۵WO 3LjT~r4 -.FD)ujnݾ]{#4@f* PdLIe4gj3;[' @Ľ{WB Jd 5@f*M?|T^5jT 3HN2SidԵ{&>mavw3oYm5L2Si 3\>@f*ME{{13uڛӍ8uyã?L2Si 3\>@f*MEou._kӥxOhv6Fq/%4@f* PdLƍ(e|4gwf\܉[ձ#4@f* PdLh(eLsBޙ܌W_̮]1"4@f* PdLǏc~>JjN^W^0.]ݭ3|xjئc}}[5@f* J$'42Siobr2Jig&>Μ0?>'OjoHb{1v᧟vrL2Si 3\>@f*xlnQJ 3qjn Z[vNin,4@f* PdL[b0RZGj_܃11Av>X2SiT 9L'Jө(ΞRZJ kk1yӱk 3LjT~r4Y^RZ joQq~y0׮uTL2Si 3\>@f*MGލRZR{+7<уY]B Jd 5@f*M?|T.F4QJP{+nJ''c{G 5@f* J$'42Si0F)mWzhnuv6[~Pd4@rB JO. 3u;;QJsRފ#ma!oyB Jd 5@f*M?|TE)ɓ[{%z`c#ffZS`[ 3LjT~r4(iX_~AkW@f*M[ߏ Jig&>JN\%ӾG2SiT 9L'Jӊ/Rڙ_Ws=;;OL2Si 3\>@f*h(9q"VVjrþp!@f*>}ԙ[Zĉj ̦.4@f* Pd Lٔ$x#J6k6vL2Si 3fl>@f*ƭDG)զ֧qV6jL2Si 3fl>@f*FE)f[ 6j`2{ 3LjTa41DE)5֧;r//oB Jd 5@f*0|Tjqr#V;Wݻ7 5@f* J$'4d2Sik:RMǕ+L WnuB Jd 5@f*0|T:x0J6.>Tgs݅C6"L2Si 3fl>@f*͟;y2J3].>T4ץ~}CojT 3HN2Sidԙg[ j]6L2Si 3fl>@f*CݸG)ufa!~ɘNcϞ-^jT 3HN2Si?]vi>]}ԙ}I-^ݻjT 3HN2Si۷oh4j3'뢔:sX>ឫW 3{OΝ,t 3LjTO׮]l>@ZOo뢔 +qzSwT4e@f*=pIjRm[ jަt] 5@j* J$'4d2S![YRi7o>5/ԽkwH4@f* Pd Lku5.J6]TڻּVwga_B iT 9L&Jd]T.\h}*H`:yUr9 J$'4d2Saj?HơC5ٱ 4@f* Pd Lh:RۭL&5ol^zi" LjTa^Rg|VW]c9H4@f* Pd L(Μ80J} jl|Nd 5@f*0|TzPb߾(eև&x 7޼? 4@rB J3L6 3>R松n}xvcZGZLjTap<;}W> 9k>4WFdobN&zs 3HN2Sidңw\2<\s5`t.]I|]4@f* PdLm:aR{{׀1ߟz~YMjT>9}i2Ӝ;zYor^o4@rB J'' 3(~&i?tCgb}&LjT>9cR?~z774@f* PdLG…(~ЁO>ޛats 3HN2SidcTZ3]7[/%iT 9L铓JQJN^?fo2LjT>9(ݽTRLlo0gu2LjT>9(D)Osj C7GzxNd 5@f*M|Tz|>w[oiT 9L铓JfL&QJb5->ks 3HN2Sidң QJys|4.'4@rB J'' 3XXRfkX_aˋ4@f* PdLGc2RfkY_aѷo^4@rB J'' 3wׯ0D)ZM?_yts 3HN2Sids(f298/9 J$'4}r2SIr뭗Wk.0~O4@f* PdLٳQ 0neʫ}rO4@f* PdLt|Ees^qWVZ:@<2Si 3ON>@f*=^RN`.^l >۽9 J$'4}r2S94/^x>;~L4@f* PdLRR?/x8/pO&1txNd 5@f*M|TzݹTd7nxhvoltxNd 5@f*M|TzG)ŻqO4@f* PdLa,.F)5Q~+ <2Si 3ON>@f*=w{/Ja_<8?_.n;iT 9L铓Jϑx(f>@8?ؙG`<2Si 3ON>@f*=/vv⥗}@8:R+.b^`<2Si 3ON>@f*t.db5Zǡ~꩝VFs 3HN2Sidҙ3D)j'Vw_y9 J$'4}r2S~-VWc+WZ:㏿]wJ2`<2Si 3ON>@f*Ѝ1D)'9i뭀Zǡ>uϥ^WkZ0^4@rB J'' 3?٭*3~6eK MI0C@gӡun*TTBHF&7JzČ9ӧ- :7T(so,Plۖ{LjTz"SPRʙOʽWC}k}w9"Si 2|T:GIEQ Xzժ ]t?u:QiT 8L'/ 2cr2e**gǎ[ P_Qw58s&=9 J'4Dqv)|C餲W?}i?4@d* PDԓJgsg*.wիf.o':|ǭoN@d*4MeY&u:̥c/>v_n/s-޷Ok?9 J'4DKJey}s=?9lެzqtןӝܟt/P[WM[˲LjTz"S%ys*ps=yG]/~tN}{[hTЖR4@d* PDԓJ/v;EeaC} wf7qa\G|g /k,f9 J'4DҋSQT3F:u*>s>s}͖j~sr3̈́zT ̙3K@/pND 5@d*M=yIEQ͔e:x0>ήV-ss[Zn2ԟ}sAٷo)iT 8L'/ 2^<VLEQ އ뜟`gkwΪGT{{[~n>iӦ;s=K@pND 5@d*M=y"IF*jfϞ_ޏ/l:8QkLW΍27|PΦۻLMY w8"Si 2&'N޽ɥ>Y loONHإV4[}Y5~/Sc3s@޶߿4@d* PDuĉ[nYmٲ%qTСT(5ktjoonFqPy瘍:8\&2Q5RVDgI| `/d!-&$Us1:{]VU*)yBZ9s׹V%f|T̓#!?2:<@2* jJCt۹sc|x\?cY=+E޵gFS0M,|4_,UPB^o_@ɨ4G@2* VVVlV=O|TneedRJvI véW J]['U xNdT# v+++O]{uuuq@,'>RXӽO=m\&f;c{RpuAzzK|:;9 QiPdTɨ_&&i0W'&*1;eΫ2 gXzT??5_Y(Z82ﻔ?q|Y3rl~Kw*B  iJp$҈&n>HF[˩Çe)luzztl7lG˜gS;~p|p(?8;t9\_.tW~ZpǗ*_=Ni|sq/! n! 5HFM|JqT,e>Lw?ֽR-<OqIٱ[ll^,vOdζSki9==^Zthp@ɨ4G@2*hdTڳWe)g?5;{*U拆ORC_n<܆R1zc=<ȑV9 QiPdTɨqeL_׽R6{3haB6tK[|T;uny|tCyc^tHp@ɨ4G@2*hdTڃ^eLԞzU\O/Wu1;5X}m9~K!s$ ɨ4Q55Lӟ,5?{7=1lӑp~}p{{@w+'}5{6/iڷ/U xNdT# F4q@2*RTK:; iJp$҈&n>HF_А2MDƷO7߽1l=SMg}Rӽ~=tog7uo ϡ^_ب9 QiPdTɨ SϜ<\W>ܽ11gR.f߮u{RxVßKFSA>PҽnPZ u<%S!s$ ɨ4Q19,K[\ֽOx=vg2{W{X|нZ uOR<*B<@2* jJ# fgi3׽O, zg6܆m_)J|'~]OkY+ZB4HF@8B QiD7$? eY4}'܆͵a;NvKՆu_Uͣ;5_٩> 瓿}VB}d-. iJp$҈&n>HFTX~]>a0k"mNsGmeE|3iЌJr4Q^ƈĄv]k)W(eS_zKnϞïM?h^ zq^ s4ͨ4fTEk8`M+vy9]=.~*%Ҷ͞HOHf5hF&.4 ҏJ#3ql]nfyčFK+6;?o]oDBcʊrPx?@9* jЌJ#L\>hrm;6f8WzFs|k%_77]mImֽf5hF&.4 'NXcf~>a\MDxJI;[ݞ՟vFg?lpf5hF&.4 ғTۮ_w$m^7=- 45hF&.4 61S]㩅nFLhw{>:'LzG6vqa>(4(G@3*0qY~#6wS{j%ۅmכANo; [nf&ǏmսW^Y <s Jr4VEYxj*%i$:j6Sk =hk=x*abgbͨ4fAUVYcRׯS3Vluz3Ȼ^ J^xr#׮8| 45hF&.4 ҋRѣ^w껥j%6ݞ͐kdoæ뵾&P0ǏK}^8i("* jЌJ#L\>hH''12^}TMDlJI6yz-Z;I?kt\zddƱ]Y(@PPT#F|JW_LbWV\㯙Zܼt6{z- ]lt{J>sf$9"!PT?Ш4(G@3*0qߕql߹z>$hw{ %~E.5]/Vzq?o߀atI[<~N4(G@3*0qq#6N_{j%22$ .ZjJS~0)P><`'&Ŀ4Jr4yY9kLLnJJI čvz'{[RG՟c=o=`(/ * jЌJ#L\>h_ggm[cdl^S3VRm Aʤur|\[x{NO4(G@3*0qg^[qlZ^v껥j%23Sk^ꬮwF5n¶]u9`9(Ϟ* jЌJ#L\>hY_#3qlgg]{R5z!(37B[[y~;9P$=3T#F|ݺ0gκB@ȋ 58Qf pdQIS/J[ k۽~5m:sgwѹѣ O+Oo801-vm?VG'[FN +O!ԍFT..fħi5HFQL\>HMmwV/mG_TkooȥFnnzl,I0Ohp7%* jJ|̛JV]ۏ_VAjcMpI߿Nx#fmu; 'ih#p7%* jJ|̏J;23ׯ~.Adlftm N:oDvkcfƍ67; ɨ4FgnkMpVop`Q#5Ѭnv>Ä[[-w;/Hx;  ɨ4\tP+jo%YYjQlpgS_wd)?:eNOh/i5HFQL\>HzϜJ ooJ8L샮gcՖ˜^dmn~T9T[ rwF@8B Qi^_J%>]v+b3ص,xeqT1s,zn[TEK/F#@"oT# F1q ӕ_+|ΜF*qjcYЅMS'Voݪyz߾T]NLwYQiPdTdNWqT9v> Nֱ,xkx]WWgOL'zz:5@{T# F1q ^^aJ2zm|tbD}е&xsFFKv;yZW3pwJp$(&.$sүJ8ѩAŮ7~Gc[u20Pf>=a/]zYi(* jJ|JOMiΡCNs}=bsޱ,;S{MFC?\>3/g/X45HFQL\>Hb T;ZooD)EjcY(?-oT&8^~3[rEa>w>aei(* jJ|J=J8oe{{L(Eq`n?wl? U[5Lc.f%%/3sp>+.N@qPiPdTdUJ%E(68l Voh?7 ne+ԓzdP5͹i(* jJ|̹JV*m? #8M)jN}ݱ,_jۿVJC}D>=.5ʹi(* jJ|̭J: R R/\f3b3:\ll? R3f}@>>skȕ[P4T# F1q C^Xлwkښ7rŁ91l? x{{|md^]rwr45HFQL\>HJu{V*9b 7vF* MMts4y7ob=Գ: SX4࿠ ɨ4ɜ;\JUp\>iQlj*6l NHyJ\CB]KU^5AB?Jp$(&.$_ZTḛG* M7??Nf! #g sB* 4G@2*b@2ᕞaJ5/۶_oQlpF';g?VLR| u0]"gPiPdTd+hrY+v^}K\v/[(M/zVzûMyxi>x0I7dCZO ɨ4$WRfiKAdrM~QeP}1 1M MvV*叜 6iRuӲ  lCХUM6ƎcؙHU lg}=O-{Ӗ}t培] ti~0)v]],>:Jv ɨ47$[JEV*MV=h:Jv ɨ47$[tZ+i\W5b|SsR=h ו!_ Z}Pv,Rm ݨ4G@2*xVaT|]R%Ix^0fK盭>TZu Gm@ZQiPdTěɬ?hJdRn%<11;߶`R'Q援DZՐ>r U5HFO JJl{c|ش L RkC}h>7G`PiPdTěIի:Jd{VpH&WhJlwnW32JB@۝Y,& /l=D0[dVJp$Ұ.͎Y ULjw[L&R!'?1ey$'ԻZPӶ ɬ4`5HFaW6gU*g=#T# ]loUT'>uJ߯:>{w[)n;oj&˶w8p6UJdRG/o>=#T# ulv||l} :֮23.t]o_x/_mXsF%^!׮EĄ ɨ47$RyLjLNؙw;[s<Ԍ]+ [T7o>BtD-y&c{0Af;4G@2*x:_yZ)K8x/Ar盚ra{-?B_szHFȈ^[D#M@HJ :J>xL|S۶[/*M.Ub?s9 w]}M h* jJ#x@W:Jss>u/X^?s:x] ɅW?<%N?n337$W@@8B Qio>HJJuR&Գm=rZ{t|S*)Op9],y^B\i5HFO Y'+}V<֟9op>X,^  QRtLA`{hJ@QiPdTěuҕ޿_+efxC;l`xIx7+$*l=Ld\./ }]Gx 4G@2*x:S УZ)3sDSr0цg|^~f\.\gNv]3 H~ Ψ4G@2*x:PU Z)33HJ_Iq]}3O.78mۛah7.Ru)3?v&Њn45HFO Y[+}v]i×Zt<[qu*@BB Cn#͞]RiS%%m86-(c6%q]b6`BIj3vSٻgw>`AU6Mogvfn/}Nf>].oM'\rpt)ɥgСu=_,N s hiE 6M|YZznNrR=WMU>WPjuJ[(g:]ʮ. ?z9;f:ઑInɿN\.i s khiE 6M|Y3ZzzZ>"ttei5[ѯ ^ꝑN8V]XLrW>7˗'aε4d - f46<^>Btt(ҕe >zi?N0 ph3e&N'z3bK@v`9lFK#8`3--$B?7h yp0N]/&C-:=?/}T ص@miZ,GQhid'l/]BD-ʿ^lt2u{q3,IK/.\N y|_~Qⶂk^j-(XMx7_8:g[P,th@ul4X&N>,IKJ!4&eu^._yurt8e|m5 i_70Ѐ$4hiE 6M|rK:g/^l^VP"//Y1hq}o\Ҷ 7:ק(th: H- f46Sn sd>߼n;yu fL2'#$W{^ww>vL]5uZ,GQhid'lҥ|!)yEY65Î^YP>_Y4Ȋ/^+_ؘS?NAK(j-lZI)ojD\PtݚNd;w6=:]*IWyx@i@:hiE 6M|BKKߗBGjSjl6z Vkuɀz=o}u[~kyӟ_FaQ`3Z)twBfGtՅ ^m:يX@llu oGw՟_NRCK(j-lt,}_ a7SZ]|u Bjt2Z~#]^xi uu?æXu&Z,GQhid'lzK ar99:B>7?{{ Bjn:=vaI:?_Qw27@u&Z,GQhid'l^ t~Z̤=͝ ^_Kc?.*z{=]]V3%: H- f46I!gnyꔌb9il@:gVt,p쏫hxYs,LωNDK(j-ltg"Z \uin:{[owT2 GUR]ir5،F6qfZPB̑#q՟g+mA零 pd:9quUOFG_Ϗ˾>E#Z)r5،F6qfZzxX 2wMSsD^ꚇEMӱ|JM8-oNO,}_lĄTsQ`3ZjgBĞY=7Vw F^ꚟ~Z!ǖ/{5ӟ*}ĄT2/: H- f46ke)={1Ssolt&1J[ހ}V6L'g~^;r__wQ\w(\DMsQ)hl@9BR)pAAHՀ(D 6 [DyU5v:׻k/{:eCLs~\Mu(N+{?܌_?m:&kenV4XiPXid'4k~wƸĉyb _QbU;pQ57 ٳ6sPJ$ @5+ 1+lfMĄ Ck#'Vz^ 8^ݞ3 ?rSҕdXiVc@3V͚\kK[ {DqZvyt'^~Rn^}}6 /eV+Ȫ&4(Pf45 CkK[\H [ t')\XDqQ>tYs jЌF6q@fVzkKvz |i%\7+Hbㅡ m;/ahȤf)4(Pf4J=jq̩S/Ts trFU};>]m.~Ѭ^ {~9 Jr 5hJ#8W/1l I/]48^. }s-Ceq(6 ݯym2i,Vc@3Vҥ}%kc:2>U48ow x\N޼GWp2##edCq4(Pf4 v.k{FGkiqeٟ?򗾞.1Z7}1:DqQ8w{;K C{tYs+ 1+lfkto5=aheZ*Y 8l̏Oդ x~2?;^nT͛^ KzN4`@94cM|{Wz`W_mɛw(N%W'k҅Bvs1n|s͛? 39 PjЌF6q@WQ>,]L8RHg~|&]@2R  iHn$kh6[*Iw >zC &N>hvJ0x%J%b(N%9/@K~2+]"=yHw =? + 1+lf+Wz\7ސn%jZ%Tt=_E)񽏆;ȀVa@94cM|lJwXτn%d?܌t2-/v-+#E))ҙ35Va@94cM|lyzGahȈt%9ַ ([fT=g75)8sVJ'khkD[sC &N>h>;d́},ݧnQTwBgI~:Z7;!1s:*4(Pf4-ƍXJ =j^  m3)cND uu=-Y&s:*4(Pf4-3ϼ`I'A{f`~|&]"Ŏ(* ZCD lz]RIalL v^n+ 1+lfK+s9tH_Dg6 N֤P'sg[nc/儡n,=$? + 1+lf2?zcs 5\ 3tJ=I*n޻ZN.goݒn$u$? + 1+lf2_1-n;П3@Y(/:V+st%yN'-9UXiPXid'4{ϘXlj }>Dg\JZqg%.Ճ)h#J'-9UXiPXid'4۵1-׮I(uqڨNۄ)ƁһȎ(P*DD㵍F )]Pk#&*h"IiIS5iPmD뽝jU&;ytsK6/uK:ׅnxj²T\QżVt )^ - e4tvc^]򎱢I'$W޴DQ8WL&εr{N:tU[z*48Љ.fcl#,+?>{$=Q$@ ~N?i;3Q9Ĺ' E-]^ - e4t:;gQm,{$-#'sh ˟ܺ7aLt8>u\*@Z,t(-`ZGQhie2cl[oF.IǪ8wY8ҫHZZz*48Љ1%||uMZ?2$>EĹ^@*|q5N|p5&r{K虼AɾV%s:{ K婧\g{J G8\FKC'N>8k`yn?IrE:t+3O$phsJ G8\FKC'N>8kpy§T)-V'Ğ;K9/>|j nNC; Ĺ@*|YK\@K(jp- 8\y§TgHEZ/; \utLl- GK(jp- 8AkL ң8dF8kbyǥn;K}exbi"@˻/b7U8;Ɗ諾{h/K ݷhipE .]S(h^l__"ͣ-y}=p16OI/T8w9qKϑ^-2yӭ=z/v_3pdC-+޵1n\\RNۑ달-o^YZZ:eT*m달*–+{y}y"7W-o^_dmy"lO QB۸1o:Sҋ7Aͦ'˦]Yw<+~R=v2ƍ~!uFGGO6ncNMı= (+q Nz}%n4h͛7[* mmmI6h:Sҋ7z~cһ諏|SݓZ`-|Jzqp]OOB044Guvv.: -o^_dmy"ʛ˝3F7OW>9ooO;7nMsixyȚ7y4G>ϕ+vzF=#~Ó^􉫟?>y&y5ZG5oy5ZG5oyO#[Fּ֧5oy5ZG5oyO#[Fּ֧5oy5ZG5oyO#[Fּ֧5oy5ZG5oyO#[Fּ֧5oy5ZG5oyO#[Fּ֧5oy5ZG5oyO#[Fּ֧5oy5ZG5oyO#[Fּ֧5oy5ZG_x?EQ5o=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>=$i FxГI@b=Y>~~8YUǼwpy~B,H~x^u~8YUe޻wzp˼w!p˼ww]GUX|HU5y~U5y~B,8RUe޻xFUe޻߁TUcwQUcw #UXgTX|HU5y~U5y~B,8RUe޻xFUe޻߁TUcwQUcw #UXgTX|HU5y~]:6u-(Ԁ< `8#Xv`p$#I-s9{$t{:`$΁C<RZzO쑤9pWJRK={:|JIj=GZzO!\)I-sHRK8+%tIj=x>p$#I-s9{$t{:`$΁C<RZzO쑤9pWJRK={:|JIj=GZzO!\)I-sHRK8+%tIj=x>p$#I-s9{$t{:`$΁C<RZzO쑤9pWJRK={:|JIj=GZzO!\)I-sHRK8+%tIj=x>p$#I-sg:`[|s~y=~>/Filter/FlateDecode/Height 3148/Intent/RelativeColorimetric/Length 196349/Name/X/SMask 24 0 R/Subtype/Image/Type/XObject/Width 3148>>stream H ٭ר;G e-׋ Y{UB[d.̶]ծ{26X\j8JieSxI3滟!mm~I{wyx?I|xsЦ0;y'̄s~}-XYrq.5xjR{څd߉]EE.؝BC|!g?e~gB=}VWjz,Sus/d~>LOgɓw lO|J$_0;erRehk5f7B9{uqe5v-07-ʖ*` CC!Iw*];[iY]k,׮_#yhp0\+BKK$gwW i!34}ؕi?}$߸qmv`~><ӧC4؍;Vj!m"'q+vkZ*PoB?_oTn DFFB4~qf!6'^՗WcE+jZ޸e2<eXRLNN`덍.}=zX,9r$vIlߎ]/j9?8םN4|seڎ;c:RLNN`۷oc {WBɱcgb$LO?-|9N3+ 5@;?יq<#[xFHPbl ]!ln g&lEwhRt%Vmzfq3sgADm{ViAC].ۓ'Ӵf< + 1+t@3V:^g\WOR==?k^Hs8\PovCpvg0g@s4c@94cN\>hJǫ#ӧ'ǩU~xR+D9q-_ MPpv' + 1+t@3V:FŢ5F~'ēQ2xpѣWt 9^^͋> + 1+t@3V:F5F˗]WOomy콒(lj~Y,;r:[2ޡ^.]j,/v4hJr 5hJ#|ЌҒ5F[\Obe;4`e#Խ~)316wmg|vkWVby$+ 1+t@3V:aJ%`uĹM/j*?qՋ}GG哵lNME4hJr 5hJ#|ЌV٬5F!`U+ }P [3;*'X5c?;Q,u XiPXiMMYcϏ=?g 1jF Q@n>ٌުC=?/fJ, XiPXiѽ5F۫WlwG_)om&>y4:sj4hJr 5hJ#|Ќ#ɕ+'%d^ /@"#(e4: $+ 1+t@3V:BfIE퓠#x05`ǚrUq pdd$R0|Nf4(Pf4҉X&'1 SU=?۫#†}oJ~r"kԡ~ OW-4hJr 5hJ#|Ќhp#ɋ'g%u}$bޑ\/lEPC\o/H >@3Vc@3Vft I\WOjy>|EvG& ~f5Kw-o XiPXiQ:eO]WO﫞ڕ`Uu}/T3~^v}=_ w-i m/ccͨ9 C H'.4cnܰO'EW뮻,'oey8}}YIg-eXiPXi2A`Yk$=='xO&m5\G uM^?ݲȈpvkJ9 C H'.4ceΜ'U[tlb"ù0]-qe]ts4c@94cN\>hJ ,-Yc䙘p>z~ ˓hs_|/Vx^(+73ӂ+ 1+t@3VZk<[z%Y";;_uj{z+eXiPXiUl#А杢LV\GZLlӝr2ˇn'gZ5M1>@3Vc@3Vc~8QO\gQ*ژYS Ay2hs$I`h*uBW@ڎcߓs~9':/`-ԔwN0wh/`B5Ł(Q_~RՎlNvMdJQ~^yݭq_gXs,8,N\>XFK'uwNӧ7瓅 e[33_GۘWjVQ_,rLۆ5<2Z2ZetR9I-փ(ge F[lnsji?Uk%lm^s,8,N\>XFK'uwN7G7o/KAK[Ե7@JM\ 'o\ZvS~>4HQ_$l.;4XFKq5XFK#|n9I<ݰ/V(ef=>k%7}А sCxNe4GQe4҉hXFKnn\ܶ:X[eفYɑo^Y.kI*)kos,8,N\>XFKC$ڣVփ($<UzsC'y=),m<2Z2ZetƼsܻ=a+A rzI{v V:kߘho̧0vzff9 `E H'.,[40KN_in/'(A+y7&oWY->XR9tȗki(jF:q`-݊rKwݰ_(7SEفm9v$;SI{ H1V^DxNe4GQe4҉hVz$pA{t(dlvY{v`ߘS7iL任=?^DxNe4GQe4҉hV;K0V_ XL6^|\خ/T2O)+5_gIz)gjhi0hiҭxu\ݫ=a{F A 7=;3/Ⱦz>P7ߔTeSFGxNe4GQe4҉h--,x$"ѭ*=~D,[jGV!4%'f> _M `- Q`-t2ZzK/z$sѭ:yQł;gbvE-l[e٘^5 `- Q`-t2ZzKoKN=U~u_q8 ӵN˺9XaB2Rl$A izF%KXR eݔ74ĵIc0|E _5#Ks=}-yA萏&=;`-tIduc.ْ;ws4@94O|-B֘IVR ¨IaiuKzvwd6Et7y.ٜÇm" - Q-xhJ1sZU7 "Wc%فWZ"Qg,>ے޾m}ߥ9srxNf4(GQf4/4W*Yc\20 =V_oxAswg^UhUv:gs._^^iЌ(jЌF<fykK._] xA萹J]zv:Zrwv]z]##ٜ[9 E ҈'|Ќ_&c߷Z s(=8pޟ^v8$\Mz]ϻThKy5`_<@3Z@3ZėV[c"_zt-/ǻϤgB}ۦ\r;漞 ήKoc76K6g7xNf4(GQf4/419iqĄZ]r Bդg\e3u9$֤uFzz'қ@<@3Z@3ZėƸdaAztNߪxA5 \mK.cJoc>XiЌ(jЌF<f>z{1s܊Q;V8hҒDΖ6.u߷%J<@3Z@3Zėݔ9#=b?P0jNNU6%iIX-g:j#;@'<@3Z@3ZėrLLHʖYQ߶reiΥUUӧ6vսd2;@'<@3Z@3Zėݼ5%ZC[ڔS^JnH2~(G~ث{鱥І4hFKr5hFK#@3ZAkLRs+64U0j耨Ӓ#㥕-K6rІ4hFKr5hFK#@3ZS130 =bre/o$=8 Χ%7+ҫy.~[K9 E ҈'|ЌIkL KϭafEzp@N9؜>|>lEz;9i}ߥ`I/9 E ҈'|ЌqkLLOKϭ⳺bUzv@^Q䗧ݎ%Cymu iЌ(jЌF<ft7[c"oY|%=; Q?/Xt;5͛]jv';?85%|4hFKr5hFK#@3Zj㒅ѵl ¨GEyE=׳O%lx.=q±i- Q-xh1.ץG*5Z0jޟ~*=8 6.՜זײӎMLFziЌ(jЌF<ftGYc"Ozn7 t'쀼bs^ժ}MmPvhiPhi_>hFKwXc"q鹵D B<ԥgu,ꡩej$-T]m`luJ4- Q-xhvժ5%*U7 tGz~}eyc83W\mrұozUp|s4@94!P( `R)|PI|'GWƃ5/kKҳ*t+7Yj#jRmlXwܽ#5>9 E ҐU(:A?9Oڽ5%Iҹ;O t٩e)+_Ws'uNvFsT@94!ŋIKsx;u٭ߦ;wܰU:YHkJ*̓% <@C4͏zi1eU5T"Ciڱv㘜ʒms|~F|tf]W)=_" *">ԇvW-N.ש6s3 + 1 + 8;]ӉZ)ㄡ.\Wi$["vo +֙-U|j1wxNh4Pd4[^^|_khhb>tV8î{K+Qlu5v]샊-@&L,.0f8w<@2Vc@2V~dt!q|uoƮ(6ͩE)ꩻ֙c}۷m5Nk<@2Vc@2V~dt8Jdfuu,Ql?^r]ˡ>6[k~~]trY_wxNd4Pd4X6whl˹.ՙ MsU)x>1kIqrwxNd4Pd4X6V8-BŦ8 EC}qufiַks7zmUw9 C '$cۼV8|ື`G>4kR ܃ōkٍ|گzmnv# + 1 + ?q@2VUg. MV.Ha:_~u0csZRU=:jƍ<|;XiXiҭR6Y]u]] -RHJ7dZ)$.F A.>shq7dV{#Gl.GxNd4Pd4XlV+eWKS MZs]e?OK׳--LN$.)XiXi ٬V8ɯg 2ź,4ԟ<,$wm:I|Mx4HJp 5HJO|nfRI~R<nFqa3͛+*.M 6\E$ A(jYcR@/TTmZ6M@d\>]iіsyy=8ڳ- ?64R->gӜ:UdS%4(c@C Xi/ҩz:ߴ{Qx$tq@NC}~Xޠ׳ժ\*)s e4ʉX59Zy'_k.u{;ݎǵmguk De4c@+r2V:u59.-lF' ]Po{qͷ^lWT|}lWLM%4(c@C Xi/ҩksΝ [Fq⚱z+tq@NCdՆfK]>g,,@9 XiP2Vet1ksB6Ԏ5^o.)fo~q9q;nv=>Oj<(&s e4ʉX59cc{ f'Wk.)lxm8n};zfg}F;ö-&Rs e4ʉX59-lʼnk^k.)l̝N~JgS@)9 XiP2Vetjbн.8q͏Zrꏿ,#q˵a!rF15 ?>@+ jPJxNMO[csD(N\st8 ȡxo_Y*q5 ?>@+ jPJxN]hq{ َ5>[]SP݋C^˻dښnj~|N2V1F9@+8V [o:QW[r꩛mL|o'OLwJ60e4c@+r2V:U[c^gF+9uݼ{>}jUrj ?>@+ jPJxN158q7^“ Cr32xEwѼ ~|N2V1F9@+׭1 (NȻ !4(c@C Xi/ҩz7^Fq8(P>ۉ9g?m3T*b|N2V1F9@+׭1 (N\sp8(PV3z./xJ~I '>@+ jPJxN[cSjF'9 ]Pv[9`F4_P%OSػw `9 XiP2Veteks.] [ʼnk,C=xqу{񢷓wE%RG`_i e4ʉX̌59΅N'9]P0e.Jg̳(cSǎYc35+(N\3]P$2ԗq׃z%Ϟt:yw0lDV+V1F9@+8gl,toU?YiGq#˭E"C۱jMn%[-[y[r-`4`W4c@+r2V:5:jq{XjGq⚉v"~y97<;\Z/גWy rm`4XiP2VetjbнU[QERC=ub={|&=ӹ0V V1F9@+8ĉнUYnEqɥV"~zrm8;3i{/jJ e4ʉXŋ?3wV8q۫Ԇ_O_z٩ת;Jsجq8u[/S7NޫMh\څhMnl)Sܹ76;p|y o>w﷟?uzaԦrz1$ݨ4G@2*8@2*]iRk6}-;$+L ߇ []x`sl^.M`6cF`5* jJ#N|JW\+e+f}8 PgN/vuarKKNO0nVP ɨ4ɨt%ϵR+žZIVD2C[?zE;xP0>dVP ɨ4ɨt%ϵR+žZIVDbC}yy^ڽg߹pb¦.]r}!M@(Pfůߟ- _KK * Ѣ ɨ4ɨt1͚Mߧtldv}HDgW_ګ݁&&,#_-Mܜ-J@4G@2*8@2*]9qB+e7}Hד0}HJZ;t|趇uZvZ-J@4G@2*8@2*]y Ξ}HIVlD_lZwo꣍yZv^UWW(8QiPdTqdTrVfӾO$+LwVD#SG]fݛttRi5HF'^>HF+Vf/>]'Yau߇v-~#Um[[Y: !* jJ#N|JJ}H&Ya$ (ԏz;/GVuw\k6.N*  ɨ4ɨtmfF+e<}H:IVyp@B/7-~#ۊB76߽)XXPiPdTqdTZ)_^Itw}8 QpZ`dud<}8 Q>A"ʍ`y6n;9 @B4ăJp$҈/$ҵHFky2^F< `t@@C3<|cWj+k]u}6/o 'a8zor65e67scxPi5HFVZ:T\vxΞJΎ W LoNz8 Z!{qN66td*v~T|E@8B Qi5??̵SNoOROkl]ӅޯGwOڴos9mS'wzNt ?* ɨ4ܪV]]]ǜ*ˮoVta.T LoNz8 7~_-ޟ^4om iMKT# sjuffWoo//'hlnlta+qF7t'v=ʧP.oY}[ K_>|4Jp$(&^>HFSqK%]z0cAu| O6CQ:a'ܹ>UC@8B Qi/$>2]fj%r=ʳP,oY$}?o'TҭV~t* ɨ4Q=Jw LPz'}gE66I:gPiPdTɨA?2g]^adzkM MJom9c׭V~H_'T# F1@2*}PVtIhadzɯ\2,B\b-U##_FJ74G@2*bdTVK+es, _ehߟW.,i鼬4xJp$(&^>HFJݒ|]3#lz8 H{6zh1 O@FGXZi5HFQL|J242O]'A޵o]5ԏ;hVVWm>5y ?PiPdTɨ!Vw[402WBꝽ6-rѾ^據M]*|77"J4G@2*bdT) -J=#K~z8 ǡ[}g1i|+о>j1 hW<@@8B Qi/$҇LNjTۮ1&VByWHOzB|wvHqT# F1@2*}{ilnyt1}X.ߏ]8ԻƹHb-2_u ]fhW<@@8B Qi/$҇\W]OcrM4\;ԗH#͍.J=#K~z8 ߡ5[g^V櫞=ӥ J@ ɨ4QCvwR6wbL602jp@(C]yڴFzky DE4t.* jJx >jrR+e|Ӯw1u##ӻUp@"_E7޳h7I6߂wbUJ@ ɨ4Q>H+e|~zFF7Rw= >eljOG E@8B Qi/$G-.joan1.݋02?>v= w^wnZԣ}a^oe;icC|қv RiPT# F1@2*}ҒV_8#lP ݟ^Y#w3T|һr%E)NQiPdTɨQKKZ)K~sK[Az8 TB= Hޚ^Wm> |q Ui8T# F1@Wq\gQ[l7c9J+V"!qD /r,GK,ɎV-vI n#j FԩkήvWj-iCJs|? סJ%ke_!JH *^OC{,|Re}ޅN,|u49T#F@3*ݭT8_2n$uU^z[\lnw finu9t pPiPPfTaͨtR|W,nEIzgץzvvգ$/zjhinls(Zhͨ4ğQnssuKz~% ީI 0ԏQf*^}fg @+ G5hF&|ЌJwr|}$[r#JR;&=+P1Fjذq:䷴T"ZYi8*4(G@3*0fTŋ˾BF7YnH 3Ok}1/)|_g _@0+ G5hF&|ЌJw8Аn&ˍ(I]o|.=+PO$?7 c"P!J@@9B Qi?4Ν8߉һuXiDIzp@`C9v͹'UŤ)blHͨ4ğQn##V+0\z깇M+|ǞD~}V"B4G@9B Qi?4>st&ˍ(I]oܐr7;ǮU<^L:{ҥ^, ,J~T#F@3*]k],=]ɕF7E]z8Wo^xT%/zM7"^, ,JrT#F@3*msst#JRכ(7zN_RVvڝ46=ӧ @^4(G@3*0fT@gZcopPzFw^]z8udۿŞq7"VH5hF&|ЌJhf|OKV/7$u;5^<’O~ы=ijɓ^, JfT#F@3*}G1wnV$u3U^z{%Vbҽ{6}^^ JfT#F@3*}jstin$uU^:3PhKvѤAgOz4* QiPPfTaͨmkϭIOWW+Q^k#=PPgmdwfG^y&~Gs5hF&|ЌJ71Wһ83_kWz8iKv3xы=<b1T4ͨ4ğQü5>XzkQލ?mJ"ԹG[s뻅Y[y&c7 JfT#F@3*}ak] [K(I]op@)B7xVVٍ>* QiPPfTaͨaǭ1wn&ʍ(I]o|.=PPߨx%^|^*A@3* jЌJ#L>5ӥ]e#JR˾(EWK~7 32RwzsȠ5hF&|ЌJTҒti/ף$uuRzG^{cZ˗=_z9dPiЌJr4>hFS88ti+(I]o\(Ev;}yٿ4Y\y&ٳbA@3* jЌJ#L~S17:*[r=JR˾(E_5zQ~zcM>/E~vgEPiЌJr4>hF_cj|һ܈[nH"ԯJ7}ٿw}^r9PiЌJr4>hF_ca|ݖ.(I]onMz8/ShxD&ߪ;Eyx>=٫3lLKD " QDĨ/ 2N"Si&J(ܩSgrRᄋs\vAd/w|==1.n*LjTD۴.;v,U =V ohuwm{vhXƻyT 2N"Si&Jo۶(ܻrRoUPԹ~hrgn9Ƿ{x7JD 5@d*d"S[E<{wV);!(Y 5Û*﯏wC5_VVƻIT 2N"Si&JHCrO.w*x5pJVSY?4=++t_=x7JD 5@d*d"S=p]wPYjRoUP= cƾ&ۺu싀A"Si 2f2y"x ^tSV7*pJIu?U^h}vxtMMk] * J'4Lw`]ɷkWY=jR﹏Wsz͂3 9y_cw싀֩4@d* PDL&/ 2^uQ$֭wg+J#A nyAsw⵱y&?[\"]* J'4LuQ$L瞞,w*_A qj oBIO=߱v mڢ4@pB J3|Tz}gE&|.:ez{zCPBnVKǾ߯ooޛo}LjTDڴ.{ܻ{)ԛ== }ս6?Ƥӧ& 6v4@pB J3|TzC;vE|Gޝ|SV7{{8%ԣwנn׮6F4@pB J3|TzCE|ޝϞ^Ro[!(6(fwۘM~k7=]t4@d* PDL&/ 2OE|wޝ=ot;ezǻCPB=_ >*o1i۶&oc0f* J'4L7{uQ$\FSVwkszD/} >{mLz&;|Q4@d* PDL&/ 2R]ɷeK]u*vA oLgxOژZOO7 onQ4@d* PDL&/ 2L]wJݙ@d*=;H/Ƚ;)rztKק3heRU33M~";wU4@d* PDL&/ 2\]wgљ:ez-A u'$hpZ4iaOdx|(`lT 2N"Si&Jbv.۽;LN-]Ur=$gz S߷wGC"Si 2f2y(fgHsΤNY5?Ƚ"T]h}tUOIm44hF@9B Qi+ ccc6V[[_>: XcwB(N\wav]p@#BOҭnjq)9@G@3* jЌJCVPhjj:#jppP8'u|㼏>[HL)ם)IhD= }Qt_ojwr>ImX tOT4ͨ4d]~v?~ix^黅tΔ8q[%oyT(]B9a>UJ%܁QiЌJr4ҐU(Έ3I>㼞黅)Eq7o4"v<*gY{Y9tӧ>ɱ]:>4hF@9B Qi+ ccc6V[[_>:[cj+%=Wuo4"~>!JNff|cppC@3* jЌJ#@3*]UkϞ<>]_nDq⺷gץ4"~Cxr%m==oMM;* QiPPfTėQXcwʼn.̖4"rk-obs97rԋJfT#F6fT~獎J-O=u=Fl{Vy7z{^T4ͨ4/48ohHn ߮EqFf1,W$4* QiPPfTėQ [c72"}խJ';;HhDOe֝/=}^z F@3* jЌJ#@3*]+W1[(Nd_UpU*%ǥp ͨ4(G@3*lͨtFF1黅Oy?lV!'4GjW.NG'PiЌJr4&|ЌJoh^黅O8qݷ{҇_X(Rk=|h[Z|t}}a4hF@9B Qid_>hF7:jqw Η8q݃҇+XRx©)'4hF@9B Qid_>hFw5y--R>]BoQn҇S13(U }^yervn.^JfT#F6fT~++=y"}ޅr';7&}8>}ѥtn m.TWF@@3* jЌJ#@3*i%tKQxluk_v@B}ZlRuf,xE.Ф{x* QiPPfTėQi']]],}ΙR'z[v@B}.̮Kw7pa_CSӧ T4ͨ4/4N1kk[›(N<6Ն.=_Mm'<4]@QiЌJr4&|ЌJ;Ckr9[.Kp} (N<6p7{,Gk~u9N+텾Ia+8JfT#F6fTɽ{ҧ7v' ]v߳N.έprIAA@3* jЌJ#@3*d{r獎Jp8ؕoHBOWN^um~ wv<ߚt}}Apͨ4(G@3*lͨ7ް8wd1w҇SwκGj`'>oMmrͨ4(G@3*lͨ޳8Cn (N\7p,}8 >u+{;ש_,Tؖ& HT4ͨ4/4Үfg1>ݕ>8qŹu]u7v<܍b.\\siJfT#F6ff~۬8OV&Z-&(:iH\$KJ~%(icvI̓|~{k#P66s{(tut+I|%pB#o~R4sO gg/NyGa `5XF'|J <}ޭn;IR-G( 2վ8{Tg#;* Qi0PeTq˨޹{w[]O,j2 =P'{Lo`pvVtnhHg#;* Qi0PeTq˨Ԕw. ޭ\;HLp:AYVھFu_,Jݸ˨4G2*8eTZ`e;''OBOl$VjB{RM}Wgؘi_Ig&/* Qi0PeTq˨9 rfy{*g}'fK: 76| |w+:3xQiJq,҈_>XFu_,z$W*^kpY޻z8`jߏw>:K@4XF8B Qiĉ/,2gz$7=zJfy0S =0P-A[;;uW:KQiJq,҈_>XFe^;'u ̗4VזJZĄL FT,`˨4ėQiInh(t]/-T4j-v BkF/-bCXUP>=[XY DJeT#`F2*-swNrg΄kjfz;`Vpz"U§sŢP DJeT#`F2*-Sy$W(f3zE֒4fZX0U7Z:#LR .T,`˨4ėQigs[[ =]QK$z;`VlyA:?o\Z>=+|6˨4G2*8eTZlu;'uY{yz8`qOXuno;j;OԖ`5XF'|JwX+WBZ=IwrZVSÛs קscc:3PiJq,҈_>XFqw.ޭIY;6XAոWuקs3@,4XF8B Qiĉ/,ݸz;Ν [Afo@\dK֫+ slbA2* jJ#N|`̌w.bMfISm@̯z^3u{۟9#ywF T,`˨4ėQnCgQF2* jJ#N|`ŋ9ݼzn%i&j fݑ} fKiݻg}48ڨ4XF8B Qiĉ/,]z ] =]$ݭہu(Vejg?uF6XD+2* Qi0PeTq˨t_In|FWl2* Qic~88Hu0 (pAMPnTJNSLD(P^H_"1̮wmv`d$KGv9B Qi>xF_Jl4bo|zKI q{z;`PӪ][sO$/Qq{ Ϩ48G3*zϨ۽;Pޭyw#I3MYojC^.kֽ{uIgg'ynqQg#04xF9B Qi>xF_D <͋$e1Bml[ЮqGǏKfguJgT#F=gTMO$h=]4+{gc/&ٙe5xFQO~} 1ݹc=]ש$/nk~kYmCR * QipPgTğQJC(}ֻu]yKҬq!7Ω`}8Qy1*.M6JgT#F=gT}C(}gZֵ'i&kKڃRV;j#[8<,yy64T<Ϩ4?<ҕ!uq!KKډS-A|So=*5xFQO1=yb=];WI|z:`P;` gߣÇ6JgT#F=gTV Arij=]7$^Yoj'> 6t댼ySF`PiJs<Ҩ'|JWcotz.'i&wd0C_+ٶ^/615xFQOʑ#1hNz4]Ն|vb᪸`{$:B3* jJ3*]?!HnnzPLLp3{ډC|m?vuv>z$|vMg#0P4xF9B Qi>xFrF Ar[Ol;I3Ѷ ~#+Xq#-' 5xFQOJCɓu=Zf1ٲ ~,MYĊkn윜>I;vĵ55xFQOЁ17>n[ݮVf{[o jWwAOgd ɓT:A3* jJ3*]Bۿz&i&Zo jojIScc'c6JgT#F=gTBϟJps麺kCi3Kڛ=[}- ѐJWL`PiJs<Ҩ'|JW뭷bF4\{uz;P;42w|SoؘI*95xFQO1wnuZoj."t%WyI*шO=* QipPgTğQj=C(}[Vm YRcFz<;wJ^NP l{T<Ϩ4?<:}:PXOWkY mڧ$b91!y\ lcT<Ϩ4?<欧;5ILp *Bәo79?/|ySs)QiJs<Ҩ'|JWb;z?&i&/OS{}<‡F3* jJ3*]~? '[y1fImPE}` _vNL={6Ϩ48G3*zϨt!q/4+{o^l=ڧVoCP;rsiI*mL`5xFQOL gNf?/z[KMYĊ{bCmsY6F3* Wv7ŵ*Hgm $AIr @(%"U@ ƁŀViŪ.mj ;өzU5GG|Z=gͨ4ʉ/4{3kLi*=ݻ;?8q#7Ze;v.Sv65hFQN|.̌5&nFIIJ<jN9˻>.,gA5hF!l.//WV}Rwߵ侵5(Nnn#PЭ`M_mzÔ] JfT#f955OT^7^"?n}/JQ'N'Zǂ7b;/Eݶ.oӛo46ͨ4(G@3* YW\'СC+}RzN-!ZQ8\@z>lu+Xv_}5bM=xs&* QiPPfT>Qz]xOp5&IrN/[\ߖ@5+N]S\ަL |6em#* QiPPfTėQ邜:e}o![+(N=H"AXuرFηryΞ ͨ4(G@3*rͨtA.\jzӅ8~KoEF㉷ϻhFs5&9"[N0{KBr|5Y6u@4hF@9B Qi_>hFhXcrMSB/v+q9jGz>PB?"מ"vTm/* QiPPfTėQ<}jqMr(NnDz>PBtb+q-b8MA5hFQN|.̌5&Hn>H Aòp[>"0ew옇u@4hF@9B Qi_>hF 5;k}һEծ8qַ ayn[\Yx۔]g * QiPPfTėQB:e}nQ 8q8yKz;PBtb_n9DնGM5~5hFQN|.ԅ ֘WVKzxR]#ozn{O=;mPiЌJr4('|ЌJ=k].=]j'v`ElüuǷaPiЌJr4('|ЌJjgV֘E=8q]#yk+N{Fümʮ0 ͨ4(G@3*rͨt侣GwK3WQ[/Ӊv`ͭv"]wa۔7xXJfT#F9fThO[cr4.~;_KoC}ü-[>yzMNJ[JO/⍥NNo͖LhfaecR^zo.;Sަ{6QiT 8LM|TRʕӋZh}uoq|XOBRO$Dl[yf4@pB J3|tMU }'N]ڞNNW>Sz;'nM(؎ӳy}u۴vW4@pB J3|t6U58Pzwi} ȱVKχu#-|/`cO癷lۖ<9g JD 5@d*hD>TзeK3^`yt['o?藞F[ C?S''S<5T 2N"SiF/ 2ڵRoJO/mŹNN GJχ!-ubZ^_̳…O vPiT 8LM|T:RWKO/nvSꖺ!)_dח_&>O۷4@pB J3|t?Tзukݥ VGN7{K+n]gg [̑fӦil0A"Si 2f4"S§N|y&@hLjTLػ{nv{|xPBjo$wۿ?yڱ#@hLjTL8|ě+V9Vw)l𠄺]KhL?s&mzfy9FN"Si 2f4"S\t{\H;pt!mRʹ"RiT 8LM|T:Rnbt['wKχB{=%\iS3 4@d* PDҌ&_>@d*֭MU }ccM_zz OtuvvH!O\ΑSS)}]ΙJD 5@d*hDTUʝ;Wzz ޝt봻Cd*ț7#Gr΄pT 2N"SiF/ 2ᦪRKO⍥NN?N04~|/!Y2ܼ9yڱ#LE"Si 2f4"S.]j*(==u'izZ!dMLf91B}yJD 5@d*hD--5Ur>[zzNtu}a8Bxل^:7y^(J_G9^I0+@hpYiĬȅ1. B1ڦjM5`Lβ˞N,{1ϓ+$IN_ 3HN2SiƓ/ 319TU;p zwg>Ytb|hGGԅł^=ڰ{ub]6䱐Jd 5@f*xd!z7ml֝[N?z̾{ Vsyyff<PiT 9LO|T:MUݙ@f*ƍZddJ[Kۡ =PЫ~6G@f*ejѻ9Nn{֋-h_ zuՐ;w0zz2toJGՅXd/|7?04@f* PdҌ'_>@f*رJn߾L_Zt^ hml=:V[ |p;^4@rB J3|t+W*=6'#crWP7OOSaT 3HN2SiƓ/ 3MUޝ̞7;ݺzVv؜P'TP'޺yvz0l* J$'4ɗJǺ~71ѬGO;n]pzdpTV7;VN=Ld6LjTLmTU|moˉz姍 s*pѣ%ÁaT 3HN2SiƓ/ 3{wSUɜ_t?EoMȘ_-W/y'ð4@f* PdҌ'_>@f*n߾ZsENfN.Cv؄PՂL ~Gjj*p2 Jd 5@f*xdoMOG灳nvEMȘ_-Wo(y&''ð4@f* PdҌ'_>@f*nzַwo|^hӭ Do17ZШbgoVNaxT 3HN2SiƓ/ 373TU|vN.3Doq㕂Fj{Kީ] ã4@rB J3|tgm.zz2':ݺFGs-4j33%ԹsaxT 3HN2SiƓ/ 3MU܅ yb[]znzd[sfCJ#GbW4@f* PdҌ'_>@f*ne۳'zz>,uuz^߈NGFYcg=ZHG2Si 3f<2S []̹Oowu]Eo_%#_n5?7" %/DG?uZ}qcch-UC5BL2;-cƪ4Z c -(aVV&;bI$/^|^_T 8Ln~~̙3A_>@X?OHkrOr,ݛ+ÏژQZƮ.eykϸvJD 5@d*M^vz&Zj߾(z7==hÏXZHT/2^YIy:WQiT 8Lܹss3q`U=Xj4^t+pQB]'5p!sHyN̻vJD 5@d*M^vz& Nʽ;4eg\n3vؚPFB:7xq!єGjl,j!* J'4ϟ9s杝588'A|QU=߾}U{z03_6ewք65vu1^JyFF4@pB Jӟ|twVErnFY&[xyONPyWQiT 8LO|T:(zKrt,{_l[{=zjd$n* J'4ɗJ14TE79{w@d*LU)7sr,nF7Vۿ5><:{7l?LjTLCs*;{6xQY&S6N\[JեûFFRs4@pB Jӟ|t4WE<{w<Ս=Ͳt_/xR+H_uH4<{7l?LjTLۻZ^== fp>\̽'ԵVB:=SίT 2N"Si/ 2תH˗sOgFL 9zV]ǎMùwSiT 8LO|T:?"FFrO5eMX=xb+!GgsMyϽJD 5@d*MDѬTErUV,wOfMϭ]B]Z !3=SKr4@pB Jӟ|t@vwoU)77{}<',f uMѡßMy:SiT 8LO|T:ɪ(Rn|bG{ņBX*$<* Qi0PeTqeTڬe䆇ۓӵ$ٝm GK*ʞǪU'+QiJq,҈/,fZ1\W*{74K[ގʮ,A[;$Y@QiJq,҈/,ҖwNro=ݞoV4|DP A|Ju&'%ߣ @QiJq,҈/,Җ--yWi$wMn^U*hlL{7}T,`˨4˨e/s^offXގ}uKS FG%rY{7}T,`˨4˨qǏ{$7>=ݞ74K:j5B_a]PÒȈn4XF8B QiĉQiΞI\֞nґ,I;gn^hoGuJ5AyM%_ t˨4G2*82*mwNrCCM*Mג4{;/B"IY.|wG2* jJ#N|Jlz$+MzZfXގx-}Ւe|e@QiJq,҈/,?}kOF)Bܭioߗ|*@QiJq,҈/,}wNrjO7Mג4{;)BS ApmM{&'%_> t˨4G2*82*m߃9}t&7#R:h/] s'IDڻ`5XF'^>XF ޹ofF{Iy៝'i镦k?9B#S5Apfo5?Z|ڿz˨4G2*82*q\{ڻ:wc3I3vĈPkek_V=OV%_G2* jJ#N|J%\\{IILp# #B592V%_G2* jJ#N|J-V{IygIuz}ix=!*_iR\]{!Ug+QiJq,҈/,A׽sxQ{Unl&i&O׵#::Py6Utfdժ34XF8B QiĉQP x:mv4\_w=מ@϶3goho?ܜ34;>* Qi0PeTqeT:'Oz:VB-I3B5YdCLNJ>Cڻ`5XF'^>XFC1>J%=ݪ3KkI+#":DEyIaҬ=346>* Qi0PeTqeT:/{$=ݪk_=JLvԞ)WntT *wG2* jJ#N|JInlL{Uy9%޽=!)N ٝm|ڿz˨4G2*82*\ڻ {Zf;6SގϛP |wG2* jJ#N|JRICV՛}i\{>bAòw^:qB t˨4G2*82*%\ўnاI G B*GS{ST.kJeT#`Fx`HK%\k [.,koG,u@rG_Wh:sFTwG2* jJ#N|J)מnFf[B_ǿM]Wh7NPTJCJYDNh-҄uiHlkiʪPlq$NlzP hs{ߏJ}h|,IgVO,9JeT#`F6q2*, 9Ɍjn¿60LPzTkj#Iq,&+DzK26&y}R{oţ`5XFM|J'Ky\ﷶ\o(赊H?BVtg pYZx4XF8B Qid7,҉3<읓ګ6q)#-rھ˗7]hS,j xT,`˨4Q9s;'w^ݰ_|^ H6V^)G;ucMܐVM{VOOɀ* Qi0PeT˨t|wN2jnfF9~mU{}6tgu}= 4XF8B Qid7,҉syH{{V.Ѽ4]iO4#Ԗk}ztgl~U{_>7 * Qi0PeT˨t{$ګ6>_ H6wGjF?љ\!~} GgtT{o T,`˨4Q$*s9rD{uÊݾB)#|>ҌPUnɢd>}r9~\{o T,`˨4QIZ^ݰ+la$\-Zڬ UY431_m66/Ą@,4XF8B Qid7, uwN233ګrFuݑZڦ,Tz>s8ګ`5XFM|J'Ty\syy+#\Em:r"Ewn}}59)yn:s@,4XF8B Qid7,5A^]tZ^˨4G2*leT:~; fS{u&A fH'Bmي, KzK=<7j ąJeT#`F6q2*\9<|ms70̾F>RP[smY%s z CՁPiJq,&n>XFspA{u- @4gi"Ԧl_,ѝզ!zpyP{u .T,`˨4QDۿ;8y|R H0BZS{} 6uY zsMZ̠`5XFM|J'ڱc޹gphn۵zF96[^iCǡ;Kmh7'OJQiJq,&n>XFmr;'wWB)nOT!F,w %i7oigK^SbD2* jJ#`NydW7B5#HBmbqgJ,t&aI䕹tI{o FT,`˨4QDIfhV QJfr}VAN.D;Y(|eWbD2* jJ#`N1dZ{u~sl4Gzj]K<_qMa(y_yljĈJeT#`F6q2*twz$sm4 LY{}VtuYNO"꫒״E2* jJ#`Ns=O_Y^ݼAʮH Bef..s[GX\<.^˨4G2*leT:s^ݼV.)k *-mʾJ>țo w^˨4G2*leT:s©մ7\5#٬mGk[ihF^—enN{{ ^T,`˨4=xГ;_<N?78p 7u] H6':~?emٳҙދ_N@~d~~0QiPSՋH"] PPkj#qS-ibZm+R08%@ԀPbwl3axNGh\;~?zxa`C ==r\[[ q֬9/Ⱥuw{> Xa+7}g?}U˞LfB;&:xKb9eYs{(dhS+W=F+}5kFeoOR;&rmmmw,yYyvy|At+↳OЮ`⻫_*6>cdʺuvwMeaÆo~J'Fgg9/HWW^׮o]Ǿ eiK0V_Okquuʖ-c4XJq 5XJ@:o;7b7s\޼Q,ȟ/hwGcǑѢ30Q`zk2>Je4Pe4҉҉Q.{/?Qh5hq 28p(J{6x}&<%aUV,c8,cN|Nmۼstv=wl:bAF'+%5U)Ⱦo&{ڧi;%Oڽ%4XJq 5XJ#`+$9aΜnoގw(Ĵvw6zTklP^i?]*i9na(yGnծ(a2Vc2VXٺ;'IoVvߥ e)U룅1Kxn?r嗅H_vu@ + `C H'n>XJ'ؘwN?no̽ e-iG cvyק y\a(|Dvn(a2Vc2VXٲ;'=1D zkZ;ZCD2۞|ߖ7L##gJXijF:q2V:yΝ sv{.}^ X՚v}*YR}ߖL6=}fڵK|n(a2Vc2VX)}wwN0׮iSA =hU uS\QɈ>r+hW`+ 1`+tet"楗6A)bAzOLkwGbcї@|# _jW`+ 1`+tet"r9y V_d j8(.U%1ԏXJ'9IЗJm~D iwGaXzn&+6Scڧ\'O ߋzXijF:q2V:‡wNQx6bA?>J`^a.&l|jYKecQv{@+ `C H'n>XJ'ۑ#9IHmyAp2Q\2zgw_q96}0}֥RNcQO}@+ `C H'n>XJ'^wwlڤۼ-'oQ,[POqۑBF.>>hui*۶i `2Vc2VX;t;pm{{A 7rG;Z CKpiGFK5._<_׮i `2Vc2VXĻ|;'vu۪5v0SbMOv >^jw9> Аv{V,c8,cN|NrwtxN_vunFqq{& f 6QL!FnS $Eǀ/lC BE @p6R)̬gg]zvOWreUyf H<77:gHˋ(\ ߹Թqͦ<撎 ٷ4GKp5HFKNl>HFK`MeRHky!`.LiݲWɍ˦u:;u^ܼizt@ k[(j|Awrݦ{ūTH XO ܯWIcιs:oFvRժ1,liHZ@2Zvb@2Z\W'ϟ]|DّVr>><]Ẃ`n:ׯtZgzz@Z(j|Ąr]d2GoE]^_[B>UVBb:ίEϰ|_ӚFL[(j|AiMF;ͧBHV-긮ht.e5.k[$9~\祰(2}@Vmih 4GQd4d%zz$ M. YMW ّ -VԕY*͆ܝטKҳÀFӚ/Fz{MZZ - Q - ; -m9:| ,kD`zv$Cku\WOR^Vʼ|4j3Ξ|#l}iVEKp5HFKNl>HFK[buU)m:'N]+/;lynz|$@:fJ-euokOvE?1Q::t^Tql 0nihy4GQd4d=Ut4=xz} qatl!<0tMǃC`x`VjtMVM`& 6#f4GQd4d=6;U]KMώU+xfٍWC`ϥ`PVo,oǂo|΢Hut 6b HFK[]n5=wLHd`zvH^V/WS||\? FVvyyi>6dzD:d2H4HFKp5HFKNl>HFK[!Mg.U]ŚIy~Tr}_ŇSN忎dr=ཉm] qFM?4qXuwfΟ7}@0>@2Z@2Zvb@2Z*'O*ѓk"xF./EdTv'{nI4:Y9uhihi؉hi*ӦGOkkw:4=;Dȕjw]Z~pVolˮ\]E(ԃMٽ[E39 E ҰV)ꤣCEŋjPfW?}Rĵ{AۈX؃i~҅l>  - Q - ; -mGmӣ'AlxFn=Z3=;HZ~Xw g@2Z@2Zvb@2Z6uurѓ`fxF'ӳʕk /$P&x^M?$9{V7s3I4HFKp5HFKNl>HFK[w6tZEūTjwъqO&dv 릟dTϒ͚>|Nd4GQd4dEӣ'ᩜYy~˔>pa+L?Y^Mc 4HFKp5HFKNl>HFK[C:ٻIx[wQ]WeNhq1 $aZTKHPRU9 al>5-E!Ix9GT#Ift3wk{-t؞WK[fl6ă}3 Fۮ]=߈9"i(j|vP[R&mO/^Xׯǃt W^=>v܀Y9jWa7y: :hihihi7>2ѣd>)۞ºY; `D.1S^,^Ceg4HFKp5HFKM\>HFK5In=zL=;X͔ߙm86ۻki󃞱̍GKհn{{-hdİ jhihihi7U*Z)x.mO/^eYAlJ۞MJy]M2=cٽ܁d_̌0ժgQ4HFKp5HFKM\>HFK;S+eDQ5AC۳ -Ͷzi7Nggo]SkuۋrH>{z EgD - Q - 7q -CR&=z~VA3?n͘5F2{.d(͔gsjXׅ>rİ hihihigMNjLeVmO/^ZA6ú?kDzfxm4sb؍Ÿo.nߚ??‡8QN0Fl,>@2Z@2Zn@2ZYR&yQq*|urB%dPzDЧ -jrJdQP xɤy727g@d9 E p.۷O+exQwڞeV?zpltf:s!{`2{1wrrҷ˶MM6w - Q - 7q -oJdۣGA2UYK˶|85^:5wpGWa5%TJwt6y#K(s$@8$&.${V$O]rČ;^͖^x2P<᫿6_FC*;; ;ö_D - Q - 7q -׵R&pQ7A8=j݉^1N/wKXz:E15;: |u}K裥@2Z@2Zn@2Zq z&T=z|<]S6g?y(j1>=Ϥd`K@Kd4GQd4d4R&dl oOlZW f+3Ȇ{\y'Z"=ϰWWWZ$@8$&.$1>2Аѣ*,w&smj6;f?l5 y:]]3ۏZ- E pҘJQP\Zn bIv,xf<\ MGQDB{ac-hihihiJ$=zKb~`tP m邚[R5V$ zMqۏZ - E pXqV$ѣqy㷸4糳ِ5ǵl߮UZ - E pXqV$: mO/c~`ͧaki}0m`υW;75eX?? - Q - 7q -V0wڞ> <,w]=~kyZUCit0heTe0<=6f=@+@2Z@2Zn@2Z/V$="db~`ggoAw/M[l' u2}M;SSZͨ4(G@3*dͨ4mu5eҧbi= tٿ>>~- [RGtfB@A]gf4* QiPPfTėQi kN>zLlb Bu]*ҧo 7Jn?Ke‹KuT*vpcNlVJ@5hFL|ܱƸ[1qa B},}؛/2OPw?? NeT4ͨ4/4x֘vyY14~mv1=~˅=8zL6ڃs;+Ǐsksohß  {c{Ȉŀ$5hFL|F.kL;tHE/vr)}ڍ֞&Ƿ -iaKoQ C@3* jЌJ#@3**O[c\cb%/vےc#|Z9Pr{غKe[Jw"-UN;uuvlVz@QiЌJr4円쭮.|POPukˮ]>z|/vQYJ̗RakM}&}긫Tٳ]vfo$ͨ4(G@3* Y\m>gOP+5{A[>F Ukwy(} Ա}5doo$ͨ4(G@3* Yϟ'xW_4_>w2yAمu/u=k7eQNCcXgZwN_$* QiPPfTr\[[>Q}}}x~kL>wR BhQܜ[Ks|ڥ2џrkwzb^b]B 4hF@9B QirCCCgVWW_>'kr:;m"}x>zU*Ϯ1̗TP8Н޻'}UE@3* jЌJ#@3*?Ƹ}G~4_]ߔnްj GT0oi}1;߹s\-PiЌJr4H&|ЌJNkLӻtIܱۼTAn̕vzUKe™#MNZwifS;xfWPJfT#F2fTZc;H;VE%/җ13_JeݼދYSCZ9{K-ɓ6 o * QiPPfTėQi4r5K;nxA輞 .;ݼ[.|TN[!:ݽkOf\04hF@9B Qi$_>hFo[cc t'VofKn^j;mPR,ڋ#.tK4hF@9B Qi$_>hFȻZcci_ t>ZZِ4r}ڵؗE;mP+).mt۱cvnNC@3* jЌJ#@3*F1MﭷO7]y?,}n3WZҺv_o?sjyj5!GҴ {cC R+Rٽqu1fnn/}~ߙMm04$mm:U㏦ PijF6fTj޽ݴ^v<_{'FC7=+%fMߩڠ8efmojAfT,GfTQi,Wy;v>wӺ35xr^`u18%3K։`ќ;ՆPQ*Ɂ:%ⷆL_@4،J5،J#x`3* R5Mћ־Ke󵷡?0,Ĝ;ՌP7Xɧ4P{[ʽ{o@ QiQid/lFIQJg>zӚ^pyjiGsP7LɱcޮY?9"/@QiQid/lFuD74d7OL_"Mń FϚ&BtwD/xHJͨ4XPͨ46XΝTCnf~ / 3kWwVdZu]=|s4Z|]:fGfT,GfTQi`>Qut>wOj.yKvWwVdZzk~.֯G\6 Jͨ4XPͨ46XâTs] Gorݗˎ'#OM_BG?_5̚VR:]Wޮӷ۸Q%L`3* #`3*lͨ4Vp(AGorNOMߣEt+/['GsoBrYzzM3k rD4،J5،J#x`3*(U>ћ_;x~LcuqU.T/o`tbAűrz,)t#Wy ?O?k~i" CKR{/GJͨ4XPͨ46XٹsΞ<1}Oc7/ EN!{v}߇2BD(.IWfq)M&BfT,GfTQiljJ릏*m_*qeȵtn~b~#ԋHJzzdvq].{KYJͨ4XPͨ46XUG(U[E\΁ I%.N;= !4XJ5،J#x`3*U:$Jռn!O*x),W]W}pouWŅFߪQ0~ٺU?ӦYihT,GfTQijhHyǦB.ߙq"ӿ 2RihRT,GfTQiXt{飷#*秸},s<ͥzW7~r;vd4r'R.e,ڕfGrlFM|ƛjJb%ʦT+qNCW )ߌYXP._^ٳG֯i}DztjbCrlFM|ƛt60`-g+W )˧oFczЭhߥ򮳥C-Mŵu:ؒύkPDZܸ!+#[/SSFUQiQid/lF&z{E)}飷 ?m:8gڝTk%&(qЂ*Dv4kiA&- te %Sj\G<>9ʅQf['/n{{wu}ܟC-_D -~tm|Y&'孷,3j@] 2]ixT#F']cl\vv.9olq]xVv}d4Q$p5=*R>AJ'4(G@3* ?q@3*Nb ^}p-?jȓyBd;P_*e7\͡C$qdM+ ͨ4ͨ4:wz@v.{~R>Ks+u}.e+/3޾E1U'&duXJo4(G@3* ?q@3*U*b|ڕF.rF?yM-q}e(_}%e+?A R>5J4(G@3* ?q@3*1633zAB ɮ!~P$,C9qB=s}jB&* ޢͨ4ͨ4:W,1gjHvx wU͡n6 9r&}1E"`h4Jr474bL9~ޘȅQmgP?}*gʾ}6YJr挬R>)NgF@9B QiQitĘ36zo\Fe#FY|%p5FC\bѦ={ddD&'enNj5'Gz* x5hF'n>hFѹŘS*3Q#9XͅQ&FWkmׇPDZLL32"H?4T}4(G@3* ?q@3*ݿ/Ƥb^۳ҥ8F_G?]v\jC} 6ϿGS*IJ$p^iͨ4ͨ4:bjWUFBcG5)܆u ˷yƱcg$}>!|NfT#FD;w\Kq.Lη]gC} ̌4)>@3* jЌJO|ЌJ#ŘS.{sp#Fn'_~zz<2UPyݚ!9wNol9 QiPPfT~fT>,Ɔս^R˅݋jk1dRC$rcrܹj ЏiЌJr474He|\>r:uzmq.0J4~͋Oϰ>ݖS,_ R.˻ŋR'@79 QiPPfT~fT<)Ą񚸹0+;bׯ~Ѫv\g<},y)q}G? ziЌJr474Hi1f\]XmCsϋ0daTM-\i<]׿f-׮I`SM$˲ջ4hF@9B QiQi2?/ȈՑF8F6~o>ll }u-/A`SV/~4hF@9B QiQiRK1׫JckwauVrfz):ԏ6: 1>@3* jЌJO|ЌJ#a1&9zo zE)mu9qBֺ;4hF@9B QiQiuzu7Y= ښ@3* jЌJO|ЌJ#(cROzo  Ɍܜj?~M>@3* jЌJO|ЌJ#fSv@6u7ԳON$++$]|NfT#߱[?qUo_Ty7bBm,P\(M(BŊ;w)Aǁ8ds~><;3D8{6z~N*_{N/w %4@pB JON>@d*M՜RjDB}n^\,gy9nc<"Si 2|ToSj=?T{MMSrmV?t4@d* PDJS`c#z3ԿKq#v:s 2N"SiL)Sj=|R{M|BɅ>_}uJ{iT 8L'' 2oZ^7tzkNt M4@pB JON>@d*M7)W@P\)4Oo9 J'4Dt)z_B%t\?Սt4@d* PDJSRY[n覂P߽;֭|pp$iT 8L'' 2ZN\\{MmCA^\,jwo*iT 8L'' 2+9ֳV{MmC]vC?{{3"@yND 5@d*M?9466rJgPU%7M }j?2d{9 J'4Dz5z_ZKS4l<"Si 2|TׯZVuC7={n>5MY <"Si 2|T9ֳS{M꽽|B<:_g9LjT~r"Si 93 (쳒yt `^xND 5@d*M?94ÜRxPF%lox[ss 2N"SiL)0Z+zeVεk`4@pB JON>@d*MݜRuoJ?=4@d* PDJSOsJgs͒x8M߯-99 J'4D補RynK.ޮ-99 J'4DxRWCM ^\km `NxND 5@d*Muh0|<[KKKN>@X')pX{AGr^ܻWq[ss 2N"SiF gZ__7 ܾS*KP7q2p"<"Si 27nܹs}BMSj=tlr5?-99 J'4uF3Ux e^y%z\ncC}v<;w `~xND 5@d*Muh0|<[KKKN>@X'Y[)ުn㼲Rr'k `^xND 5@d*M?94e{/z66j:ߡsLjT~r"Si\Sj=㯀 yeN楗j`xND 5@d*M?94e_)z*ԟ^r&4k`xND 5@d*M?94evwsJggڵ)}yڛ;4@pB JON>@d*M0z_m  d.^y9 J'4DҔsJga{7g^#iT 8L'' 2pSj=㯀C d64@d* PDJSfw7zvvj:h^?Ak8ZES(4FhlQIH!$l bGwJA`yAr gY .3?ҭWY<4@8HҌHҴ9:̞{4U.j4@2'T19T63}5pVsj}?\^T P$Si$Siܾ]K=W\?4@2'T19T6[K= 護p?.5id* N4cr4mj)gsp]lny\vT P$Si$Siܾ]K=W,}rVV\vT P$Si$SiRf0V][q9 L 5@2fLN>@2N-elo.?kk-wm4@2'T19T6{{3}<Z.j==<4@8HҌHҴݭ̞+mo\in:0<4@8HҌHҴY,j)g xNW[.4_{{axN$SipB LListTK=Zn4׮ s Jjd*͘|d*MZ997\ܲi>#H J3&' JZ왾kܲi<:H<4@8HҌHҴ9=̞{Q7{0id* N4cr4mj)pAvޫ s Jjd*͘|d*MZ왾-k_O`0T P$Si$SiRfy~Msp{uxN$SipB LLiWK=W--k5_}{{xN$SipB LLiSK=۽x-k+Wr{{xN$SipB LLiWK=W\i67{0$id* N4cr4mvwk)g xf s Jjd*͘|d*MŢ2{7d;>nYӬ=<4@8HҌHҴ̞߯{C7hYӬ^`TT P$Si$Si|Q-e,`?rVs|{{QyN$SipB LLiXRfݽrVsv{{QyN$SipB LLi'ٳ{oH\k5F9 L 5@2fLN>@2_Rf͛Tܩs9 L 5@2fLN>@2ͯRfϵkT-wj7z06id* N4cr4ͮ\̞ސo[njcH J3&' JZ{C_oMlls Jjd*͘|d*MZ997󖫴/=<4@8HҌH4u2{z I?kk-Wi^gg`xT P$Si$Si-ٳ{oHrV <4@8HҌH4Z{COZ=Z<4@8HҌH4̞߯{CZ.j_il* N4cr4nݪ̞;wz 1[.jֱU?j M,md` ¹&8E(sg5QBB-8 b`6+Űh Fܜ}1(Ny~ s>u Jjd*M|d*Mk)gc>oyD租>=N$SipB L铛Lii-eޝw͛S?X4@8HHҴZJ|G-h6?8u Jjd*M|d*Mwk)g6OL}t-Ϧ>7aH J'7 Jf_ZlVmid* N4}r4mn߮ߟcg>8X4@8HHҴ98+`u6kyDotpu Jjd*M|d*MZ9:ܐ[^0oxpu Jjd*M|d*MZ|~pu Jjd*M|d*MZ9:ܐa>oyAü޿>;X4@8HHҴ98>7diyA@2bQK=WՖ j4id* N4}r4mZ?ny><[[ iT P$Si$SiRF_}|^yPN$SipB L铛Li\RF-gs{dH J'7 Jf+`oll<j@id* N4}r4mZnjy>/OdH J'7 Jf2zvw>7ny>/wdH J'7 Jf+ՖsdH J'7 Jf+Y)dH J'7 JZ}e۹rgdH J'7 Jࠖ2zݛ0?ny;?5@&4@2'T>T6ǵst4ajex$T P$Si$SiڜRFt[ΥK5@&4@2'T>T63|sB : L 5@2On>@2q-eM}n|v66-T P$Si$SiRFSvF۹|[dH J'7 JΝZ]v.]F2Y4@8HHҴ۫+Y楗 5@&4@2'T?V}rb=֭Zٙ03ŋW u Jjd*sj}}}K|9ڼn-eL}nbpf]jLid* N4=|pWׯ_p6{{3|=qlm"T P$Si[Vk]S~αf+ٵk-筷#T P$SiZakk~BZݝ0W3͛ u Jjd*M|d*M岖2z[''-f>:jXid* N4}r4mZnV}q3@2\SJ=td; 5@2H JO^>@2Ε+M)ҥ  5rPHT P$SiHԹp)v}o>Y8 B L4@8HLsXSJ|{]X,/B L4@8HL M)gn?^,Ojd* L 5@2|d*MYX0q524? T Jjd*M?yT M)53v}u7߬Y J$SipB L'/ JSan) haΞٗw=A4@2'T~4^mJi=Gv}o5r B L4@8HLM)ga{CkovOjd* L 5@2|d*MզsF.LMˣG'5@2H JO^>@2pؔz_A,x66vjd* L 5@2|d*M)بY"T Jjd*M?yT aSJ}5rC J$SipB L'/ JS㏛RZJwfYNsP$Sid* N4$Si*,.60qoQ,33{jd* L 5@2|d*M_oJi=]&k{ j=5@2H JO^>@2f0hJi=ss]_&Ok6e@2wiJd9R,7o9G4@2'T~4m4:L֑#˲HT P$SiHҴuTSJ9|{S^yh{Ϯ}lh;Oz4zرeyjd* L 5@2|d*M[O7Sxsm~nLϟ.~?n^sGW[335r5@2H JO^>@2KRZ]{o,TO럵,5@2H JO^>@2ֳGgn.߯ozfYs J$SipB L'/ JjSJYY~>:~9W6w[eys J$SipB L'/ Jpؔz_QaOX^7;up\QM6MhE\TJ4Hj4Kĺd76WAnUi .Ҭx~jddƻ=>gto{f,~e)Xn:B JD 5@d*M=4EZy:kNw_ƭoͶi^J,/qL"Si 2|TZ@d*MQǏIRxwH+viBg݉e^ʁjT 2N"SiL)ȑ'IᙘzU{n#yh&t}3ϔy)_}PD4@pB JSOn>@d*MQIRxzߕx}f.|Vge2/e߾K 5@d* J'4Duh$嗫wuXv#F=ci6qvi/tn噳K{ɝ?v Gy)XJ"SiT 8L'7 2@d*MQV$rc}lfO,}]-t6',h?c3g;\lXJ"SiT 8L'7 2V+OUݼm}Lf#3]{w~}rs{s#'KA2ė"4@d* PDԓJST'IVN~mو湷6zW?\6 5@d* J'4DjIRxHQgqsc]l56쭾vquqR 2LjTzr"Sij$)<_޻H +7;mv~d{n^n 5@d* J'4DjIRx3iplo|Hְ6|wv_PD4@pB JSOn>@d*MQssyf}LH9釫Vu?Vrʝ8Q楜:5`)L"Si 2|T$)[Gߺcil pNG>ǎ|)SSVjT 2N"SiL)dj*O2o_[w6f-U:w؟nG&|)VjT 2N"SiL)$)3/TG [VglO5[?XھvklcJ 5@d* Jݺ8GԹFEҌ fECx(8C.1=1ġٖ2cp>)z{IrϹ^?w>ޞ;u庾mpB J3|T6]k_ᱼR 5@d* J'4LɁe<=z^/wmEbf>%4@d* PD &7 2{++eUKOך}zսߘזRcs=hrzO 5@d* J'4LLeUNi-s~uԟI.}\skvXn)L"Si 2f042zzF^ԙz1quQJ2?_lB 5@d* J'4LDe=??pu',So^u CyZz*ec:jT 2N"SiJӽg-yufz{bΙL\]JMqZDzo_ 5@d* J'4L#Y9zpӥF^Ԝ/fRnί=8VL\OM1>^8kB JD 5@d*`r"SijYVe^|1k+ۍךRcRc/)^~c9xׄ 2LjTDt7,2?;Nufhv}l7_pܼz3UÝ&4@d* PD$7==}[kxx't,yo/Kgem}(/˩qv0^O~;v{9tׄ 2LjTm@RǏO} 'ti߾2z;R+K3N-VݍG?WR/ώ^FG;M"SiT 8LI̙3gϞ}BFF,y?|ȋs蝹zMlxV.:*':M"SiT 8LIkzzz۶m$u}BFF,yMz.mg ԛ:O;_^vUƯ:jT 2N"Si>}ɭ5<<42RfYsHupF^T+7Ėzr.VSo^FG;M"SiT 8LLn>@d*Mv,9s&ZY[yQyNy1&RΉ:7z} UwPD4@pB J3|TnΖYVe"ҫzۍ<zM$[u-x1ĉ*;M"SiT 8LLn>@d*M7>̲gβNJ_[nEʋg5&6Tƚ3 Ks<_jT 2N"SiJӍ˗,yMJnί F^T[7?|S^jALNVy2H"SiT 8LLn>@d*M7N*^.5.So"]upԛkrʓUGB JD 5@d*`r"Sie<{;%2fMGExoϽwsVYkgg?b;l*<ͽwR^_ $4@d* PDL&7 2fMEx{7]\*VҼty9ѧҎtu{tտH"SiT 8LLn>@d*͚F:vQ ׏3iܻ۷j 2LjTDҬݮߟ{&?o8iU^?o/Q՛iǻD^?޽)fzzׄ 2LjTD wX]gƺɽh{ULv{))}7ۃ&4@d* PDL&7 2fh<[{dg*ͽuv;.=ũS)gϞ_jT 2N"Si&J3\]E9|8#{\fA/c?WRϹZx{~1 PD4@pB J3|To\{ܼ*s?fv|>v~Z̽{cn<[M"SiT 8LLn>@d*p7Exnνh\oU¼|z{1Ýn_޽ٔ:ހ 5@d* J'4L޽(ϦMu{>*V|pQO_o8I8OT˫@d*33uQ47̽Z=|:^ܳzROc3n[)o|J"SiT 8LLn>@d*7ExͽZڗJWs?v_J<޽RG PD4@pB J3|T.9>C=\Z*Vto90~vڃ~ؿ?>` 2LjTD<ۭ"e2CUUV ܻCA?r>3gR>%4@d* PDL&7 2yE2ׯ^n_nUOr]cswɅ )h'4@d* PDL&7 2ye~cJǔ*Z I Ȉ$R/D) HJTzIk*Rr<@l\ӑ,l`~٫z=GK{bٺ^\̽`GuZe6^92R&HY->?8wj#L"Si 2|Tvﮋb˽`;#eJ}sCܻonf&H"SiT 8Li&7 2fzvʽ`>*mnsӿv('nϽffRQ鬒 2LjTfr"SiiHν VFʪ4?^y]l¹8{̤W 5@d* J'4DҬsj])s\B;r;y'\vLs/ɔw41WB JD 5@d*M34[3:Zw:W`\fJw~p4[>͙3)O>jT 2N"SiLyB]){wXZ^)g[e0R?-WB JD 5@d*M34Ot.x1\fUV 3Jᅳ 4܋oСt`_ 5@d* J'4DkU?޽)vNͫ܋obj#L"Si 2|TWгsg~*i/vs>O8܋obϞj#L"Si 2|TmVsHh/>)|; rƽ3RV Wr,{W 5@d* J'4DҬs.̽W{*9{s1 rۥc퇹wCR^Ӿ}}~%4@d* PD4Jjz.ܫVY%ǹwoG+i?{g9y25F_ 5@d* J'4DҬzݺ([n7^wZ+޽q& 'vşORPD4@pB JLn>@d*ͪ(={r=JK_?Ƚ{||s1~qy3AV_ 5@d* J'4DҬ:q.wrϣHY7Ηwٿ,}OyP{PD4@pB JLn>@d*ͪ3gzNνw?׾[jUl];MM8×;wݔ56WB JD 5@d*M34&'z&&rϱVY%ܻ̑7/ϵՙ܋ U+iWrPo_$׎vşel,Mݽ?B JD 5@d*M34b9q"\Af\ݛkń#{\;ϲʛ~} 2LjTfr"SiVE1{W?kU{n9u^7FVݕܫvHʛzjT 2N"SiLyb~.9u*k=|\Z36ν{m9;pp˹75:Z߾?B JD 5@d*M34O\PELM^}k.*a.|{{ypp{ɓk#4@d* PD4JĩSuQ =lzVY%̏woN:r$Y5jT 2N"SiLyb|.祗r[e5l];o^$+Sq.Yf5jT 2N"SiLy(ÇsVY ;tr/N{ gGUw%~ʳkPD4@pB JLn>@d*ǎE1慏V9Lc1ԗzpv^ν{/@d*=WEx{.ރZ]6WGpsWr/>Ν)/kjj#B JD 5@d*xr"Si9p*sh]\i˦܋aϻ݄zo9#j˚PD4@pB J3|T{&&h<{A/ZL[ʽ8j =/_NyYO=5L"Si 2f<4>d B JD 5@d*xr"SijUQ4{oѻ}.K+wgܥs(9:^~y B JD 5@d*MvNvjSSUQ4r;_eœ{w~pG>\νH)/5@d* J'4yu:m۶=L?Bmz*35{-~j [{w-('-^|{Sמ=_jT 2N"Si:qܹ3?63SE9r$[p.oO,^e{vJy_[kjT 2N"Sit:۶m{ 3TExrzvt.r/~p|ܻ)k/5@d* J'4u:ǏڱcO:TE㙚ʽOe{qΗk GY7s>tڷo B JD 5@d*xr"SijUQ4WqL\e9rŹ_݄gܻ7?PD4@pB J3|TѣUQ4WqB> * iu&JL%`DH+jQYPV44&nǁcg=⻛Ħ\"SiT 8L&7 2uxN_Ep򨪛Fdcm/Cw75=O 5@d* J'4DҴffrJgzwOlb"on|.4@d* PD JӚ)u{FU7]᥍ҋo{+ҋjT 2N"SiLi=lNϗ:OJ/^97ǥի}X;; 5@d* J'4DҴN)uWuuNu/qSWƥݭ[yb+[X\"SiT 8L&7 2uTN_EpfU7],8{9=ؕqjr+;}z[L"Si 2f|Tٳ9˥ĵͪnε.8{o8'Fxe|+4@d* PD JZ^)u{1θsߖ^_8WF˗2L"Si 2f|TjN_E0yyTMJ/^्ҋyeB JD 5@d*04՜RinΗ7K/^6qlPz9L"SiT 8L&7 2S@d*Mky9yJ7:.^M^8ܿ}]w}^ηB JD 5@d*04gsJWJ_}WM92*8{n^|wgye|+4@d* PD JzRy{?[M9ָoq}^|w }^DjT 2N"SiLi:ls~:QzqwtupK/>UM"Si 2f|T9~UcolTuu^zqʨ^^|wWye,. 5@h* J'4DҴffrJgz9QMyzߡCo^|wn剉>maABSiT 8L&7 257S@d*Mkn.yffJˣnΑQo{kq*8͟n8_wutvP4@pB J3Ln>@d*M…Ry{|}~Uzqw>{᣸ 5@h* J'4DҴ>$y{9/_ߪ_^{L69)4@d* PD JӺq#g o|}~Uxowkk}^فܹ 5@X~"Si 2f|T9>sF͗oUuuگ =/z>3gV ,4@pB J3Ln>@d*͏)u>+nNUό>@6;W4@d* PD JcrJ |}~Uxo}yGyhG~.vŮUAbpvKVgj:Iڄ 3{MiF'*MS(ӛZqQE̙qݰϙoK.֏aNDSiiLK8~JխT]k][|.{5@Xii5@dZ~r"4ZO}*;*Q9|~3snȰr^|'s_Q; NQD'7 2-M̙*st?\f;,'xCw5@Lii5@dZ~r"4ZO}*߼Wq?tX;OG]Z=7}E 4@dZ 8E |ȴ4*S(Qɥ̹9_urnS~{vг &iȴ4@p 2-M?iiUJ>|Us߅q{{8z[75@Lii5@dZ~r"4*s\~Ssxu3sn`a8y[bLK"1V)̱[͍əjaXZ*j|")jȴ4DiW)TvE90׿)6[|.omn]E 4@dZ 8E |ȴ4*SfQǻÍO>r6;w 2- LKOn>@dZpXzr箪_W3pcfSO]S1NDSiiLK ZϓO]Unl|eL1TStyko+j|")jȴ4DiT)Tv.\٫{6{{O1tyk33W5@Lii5@dZ~r"4ZO}*Swrv~nLq =gO1vyk7;E 4@dZ 8E |ȴ4*SKE9j;.$}{ZϙDp:w 2- LKOn>@dZƙ3UJܹKE9j;^$~Z٧ + &iȴ4@p 2-M?iiKKUJ>ݑ(GmdkkOξbLK"PzSrv~VL]Zυ>b67wMQ; NQD'7 2-M*3?;wU(Gmp+wp&9eE7rgbe[}[Q; NQD'7 2-Mĉ*3?;wU=~i(GmrgG^o>`\Q1NDSiiLKXXRj=~^QqLW;wrnu[ &iȴ4@p 2-M?iiUJ>ݵ,Q۹8wp&yqrn0ff(j|")jȴ4Di UJܹܹ?_VLqsny[}KQ; NQD'7 2-Mc8ح߼2Ƙ^m&]sXb8 *diK6-3?Z6~ō9-@f k;v|X3\*<~"E'&usgv6wY8sY9;:_d™r|)wmheE 4@dZ 8E ?|ȴ4})*MQ p\탳+єV5@Lii5@dZd"Ҭkʲ}AdQm矋+N$hgVރV5@Lii5@dZd"Ҭnʲڕ;7?UTuyGWN|p>;xOS1E 4@dZ 8E ?|ȴ4l=ccs_0r`>y# $ U1yNDSiiLKjb)ֳm[X*wsgm,'Oޓ锻60pXQ9 NQDO6 2-ͪ,[54++7ȁη^m?rb1wͥܵMv+j<")jȴ4DYo_S)曹7͝O-Uv?p#r\E۸qFQ9 NQDn~~~ff5<<lZUwPY6 s뭯~sQ s;ׄޓm^Kh5@Lii5@dn XWTM<;߸EU''rgg H8+z6w IhGrO5ݛ{nWY6mg˖rK_jQSTurgg CGi^y3se tu57lؐ{ev;Ƕ͢'eg6d=p2w^MO\Ê &iȴ4@p 2-Mii&'l="{EUk:;8S GRJhG5@Lii5@dZd"tMO7ezv̝WN|XTuٺ]Ʉ|ؙ{5>rц^V1yNDSiiLK57הe뙝͝3犪Nغ'X8;xFGS.ZQW1yNDSiiLK57הe뙝͝MQ ɳsɉ啄C; E12rъ⸢s 2- LKӟl>@dZ,[Ϯ]sbxvK{L!?;x )mh蘢s 2- LKӟl>@dZ,[O n?;8L={:o~l1w.QE 4@dZ 8E ?|ȴ4]MYWA x[Nh5@Lii5@dZd"tMN6ez:_qon;-%ɄCr-ͥ\Mv+j<")jȴ4Dڹ)s=sb墪r碷O$`g~L-ͥ\g5@Lii5@dZd"tٔeܹ?qSKEUуKsѓy?;[Nh5@Lii5@dZd"tMM5ez:_-Uvn;;8M=r[]ɔ68xDQ9 NQDO6 2-MDSU-Uvnط;8\Lh[bLK"'kǎ,[٭=; B&-؈"("hWvN"I6Kc&`A :&إ/JŜ\oχv3_JQ]ȱzs+wu 'xxzΦ\K &iȬ4@p 2+M?"ҌRSsP3wy|2ݝ/|ga)Ne-wn61hbJg"? 2+/7e9WA\[,:!{G'ÍŻ9y2yP9 PDf'>@dV,;*oTTux=wqk+ gfs+w61hbJg"? 2+LS~SgEUẃ3i\YK8N]E|P9 PDf'>@dV)yܽ^/k9^on{/&s;;|8}P9 PDf'>@dV,;gn.w/^TuB6rwgnr=|E+ 5@LYi 5@dV~Dfoʲsrk+EU'' ;;x0dž &iȬ4@p 2+M?"Ҍ MYvѣ{7E9?xk%w^R8ݽÇS.W 5@LYi 5@dV~DfmʲsگBy차y{n'Z7[ݽ69yP9 PDf'>@dV,;*CoU5-.k_K86ݽ ML,j<"jȬ4J363Ӕe_pes] NSϧ\s 2+ JO|Ȭ4cG6e9W][,:!WG杇KOh;vP9 PDf'>@dV)yܽX]Ts{wΫWo"ML,j<"jȬ4J3vPS33]@dVm7e]Tu<}n9w޹p• )mbbP9 PDf'>@dVmG4e9SSRwYZSTu@dVmMYv}{E977r%Sg/ڄ61hbJg"? 2+Ͷ,;rg?xln5S'ͻ~_LkvkbJg"? 2+Ͷ)i驳EUw͏^]G>3jps+wo_]۵}C 4@dV 8C Yi7e9ss{ÁaQ]{ZyjFfj*= 5@LYi 5@dV~Dfv\S~ӓgKSK gf{S.Z;~jbJg"? 2+Ͷ,;gn.w{ޅ墪^{/|xVf9wrHEk; 5@LYi 5@dV~Df64e9G}?jQ {_7LO\G0ayNDf3YiɟflS~wNVswf|ͥ[[ߗg ,iȬ4@p 2+M?"lnʲsگš:1,k.QѴ7rw_AE{晿j<"jȬ4JvG9HkxQ#VD j#t&6#(u܂^LMKB4%E$D<`aeNNmy|M^9=UQ4N*O/eB~;liv.u>{oєg5@X~")jȴ4LK3>^Eޝ{VL۟-}Mv.wV&'S֭5@X~")jȴ4LK31QEԫZZ?i˦Bهo&JN瞽Kyh6]RaLK"Ҍ&7 2-M޽UQ4N*'͵e\h˦Y\}H}|n)DNgqeNei%E iȴ4@p 2-hr"WE8w:~f]&jهӮN䡣gCRږ-_(jNDSiiFgb*ƩWEvZ]&gBkꁷ:i'rϋW_Myh۶WaLK"Ҍ&7 2-M޽UQ4N*el;1{!++ gnS5@X~")jȴ4LKӳo_US n;v49YY}شpu6垽o^x!mxYQw 2- LK3|ȴ4=UQ4&]m˄ܳI;sggIyh[WaLK"Ҍ&7 2-MtU35{oneB~kg*g.J;Ǐ垽lIyh;v|; NQDMn>@dZ(^J.rnة?rO>8; NQDMn>@dZ(gj*w{'Z2!rه}IGpnʕWaC+)jNDSiiFgr*9t(wVLȖܳ]M;ZR^ٓO*jд4@dZ 8E f4iiz﯊qUa[vs>𾼺u>{~:p m߮Bii5@dZDٻ*ƩW O_o˄ܳm?O;KcWiiȴ4@p 2-hr"LLTE8pJ]&x{vuI;_穓R^/+jд4@dZ 8E f4iizǫhݻs}wֺovZ2!K:gnNHybu_Q")jȴ4LK31QEԫf[2!ߙ=rڞJ7K/<:MKDSiiFgϞ(^5(;jI\],v~sA>ԩИw [;)?rJTIO ڟ7p7YHtgϺ<.$wQ- E Ґu#N<)} }?U*Ƹ_zo=?p=\*;^=?dUzVxeu 5hFKf4(GQf4deٶ#'fgCc\24$xU=?pKjz =G+ܺz{@3Z4@94L|ЌuBhLttc+k~E E͓08l&&@3Z4@94L|Ќ1shFKú|94&r +;sJ-2Aw%Npy\O[hiЌ(jЌF2q@3ZdhLLMIq޿_9>^-kC4r}<ꙞߐEVV\^[hiЌ(jЌF2q@3ZV&9CTAMZ+j.߭I:,}P- E H&n>hFKdBc"~uwA )H,Z,b/&=JKMMju:5hFKf4(GQf4Ұ2Иȱ_&͝x =Gfcgkң˺x:5hFKf4(GQf4Ұ&'Cc"gbBzߍ3[ fFs4כ捛J&=Muv?<E - Q-df4Иw7wGiTA#صwUiZmaY\hiЌ(jЌF2q@3Z@hLد;< n>.GiBN\< ՛o<+Ǐ.EQf4hFKr5hFK#- ?4&rWKWr_.G因lFPE@vt<=hiЌ(jЌF2q@3ZVwwhLn;+KeQ\<ݮw}6L*՚@ff\ޔ?g54@3Z@3ZhiX==1NKin^^ fs%=M4s\mR~O*8wMټsV@3Z4@94L|Ќۡ1c:Ǯڛ3ޚ-YKkv~ֿ/'..<<>Տ;iduTw\S"SiT 8L&7 201'ISRϬ7^XhW{ܙۏN=޺8ߧO=5=jT 2N"SiL)I:Tٵ-Zoi3?9/'sd~3CqNwis16uuzF,CCݼ]PD4@pB JSMn>@d*M@d*Ma߾վZ)# >s/.4@d* PDTJSȓ)~E>/OiV+{~zsϻ#϶*+txqL"Si 2|TD$O+^X{7kiv/g/ޞzkefnQ1/.4@d* PDTJSϓ+{nni}-Y-H?뛋+ezj4yDlPD4@pB JSMn>@d*Mad$OС)מ93]K~&͵O#ڳ{-.4@d* PDTJS8x0OT=j?xv^0?V*dح<T-'R,Ljw4b38 K5l$KѲlC@e,^u7y}!{y?%{H_.T Jjd*tv;=͓?_wq?O'|]9<< 5@2H J3O^>@2Z_Ji)⋞ :s/T Jjd* 5@2H J3O^>@2vm*g<}u޳>;;G~HT P$SiHT<37o:xӣ~P$Sid* N4$SigJiWG_Ͻ{G~HT P$SiHHT P$SiH<:<[[ ݺճ;O7!T Jjd*@2_Ji}oʕݹtHT P$SiHTS)=-= G5@2H J3O^>@2ǩyha{vҥ# J$SipB L'/ JSݽ;<++ {gl8B4@2'Ty4ՇN4 /7x饞n8B4@2'Ty4TJ{Cm8B4@2'Ty4r9<΍7vpг;uk8E4@2'Ty4b1@2ۛJi)~ٚ:}|P$Sid* N4$Si機랭AYB L4@8H̓LR~ fz{jd* L 5@2f|d*M7@2ٙJi}odY:= 5@2H J3O^>@2ܜJi7}o_zsM=' 5@2H J3'Nx~BuTJ󬭍7g=RguDHT P$Si?v3Cmll1~?:{v*y`]ٗ:۝' 5@2H J3ןԩS OΟJisFFۗ:wt(e~Z뮶8;k$M4 Ʀ)HbiB_XmAgN8"0Yi!"J@{wxvga?k~ׇL4@8Hu~~~֭t'R枽{CdR(T Jjd*MwϞ=r{>af2zj/ 5@2H J3&/ J3WK{=7r/Q4@2'T1yT;wj)sӧ{XfyG J$SipB LLY[=}{oXcEG J$SipB LLEa?n9:T4@2'T1yT~=u::,ݝ;-} 5@2H J3&/ Jgoްtue^2^:r2;; [@4@2'T1yTz4]KiO?:]@24RZɓޫC'-'wk5@2H J3&/ J_j)-Xׯ{oܸr5!T Jjd*͘|d*=O>G^:ƫy7jd* L 5@2fL^>@2Eq2{{ƫy7jd* L 5@2fL^>@2'zq{{Y,o"T Jjd*͘|d*=?r{up~HT P$Si$Suj)-Ewmw~HT P$Si$Sw^-ebr8~{5@2H J3&/ JoͦNS-e~zx8Ϟ]2B L4@8HҌH/k)-spP//{osr8B L4@8HҌH[NS-e~qβP$Sid* N4cZJ=tZΝ;,#T Jjd*͘|d*6SKi-s|<2B L4@8HҌHk)sz{{ZngYF4@2'T1yTz+m6ZJLS?--sv62B L4@8HҌH[8Ujzy9>B L4@8HҌHgoUKii/_Z֭jd* L 5@2fL^>@2>RC>k9ݹjd* L 5@2fL^>@22uj)UeϵP$Sid* N4cZJ|i!rrAs#T Jjd*͘|d*M4RZ| rrDwεP$Sid* N4c69<4Ç|rD͵P$Sid* N4cX4RZ7f ~\5@2H J3&/ JoZJ㜞\5@2H J3&/ JoO4RZͺ^oϸP$Sid* N4cv۫4W_SϸP$Sid* N4c89ϫW3$T Jjd*͘|d*}ݽxQ8wsxrJՌ+ 5@2H J3&/ J_wU-}?ax唾bƕ J$SipB LL~0u5̸P$Sid* N4cv^-}?k:;q+HT P$Si$S:MY.{yzy9VB L4@8HҌHQ-}zYZiooޭ J$SipB LLO4RozD::j9J4@2'T1yT::4;ׯ{Dmyjd* L 5@2fL^>@2~> brSϞͻP$Sid* N4csqQoݪ4QTuMMSw1[7uUm?T,mN[Q[M bZD)hT PuLБpZ Az2;|CouT Jjd*4yTzt67k)g6/vvZ}0HT P$SiHu647}-kuұ&T Jjd*4yTz\Ο{_;ײVW`B L4@8HLLGd{~^y ؓ'u&T Jjd*Mwbkkas/ 'cQ-:cM4@2'Tʉ666zx'c/.\h٬٬ױ&T Jjd*M_o>۹szx'WgZJ9w}?+v 5@2H JbXYY9F?OdeJi?wdz!jd* L 5@2bް|e=}x.^}q>| J$SipB L&/ Jܬ~}wJrfuoo J$SipB L&/ JݭY-R 4P$Sid* N4$Sdu}xfocֲbo4P$Sid* N4$Sd_Ki?wǍ+v@ 5@2H J3M^>@2SKi?/0?زbNÁ&jd* L 5@2f|d*ѣZKi?#W-+vp 5@2H J3M^>@2ksf xܺղeCR4@2'TitZJ9u.qJˢ}p 5@2H J3M^>@2]Ki?7ojˢp 5@2H J3M^>@2⋵04. 7P$Sid* N4$S4]gZJz`T>eN )T Jjd*4yT:ͭ[3Q[v̙Ajd* L 5@2f|d*ekk׽/rpиkg:P$Sid* N4$S(۵sFalqݞyf9 J$SipB L&/ JX.Z-}xp06ׯ7ns 5@2H J3M^>@2;sNa^~q_tNHT P$SiH!ݫ:q>tNHT P$SiH!.^4W_==A]]mٸgU4@2'TitǏlVKi9G}~q~Q J$SipB L&/ J'xZJ==ݻ-ZU4@2'Titwe=yr>|q]aTHT P$SiHmoRѷ@kZ;*T Jjd*4yT絔smVo:*T Jjd*4yT7j)ڵhgsi J$SipB L&/ Jwga h}IwV4@2'Tit/;;u64 z_hgL+T Jjd*4yTlVKi?0ZO4.K}jd* L٩:6uJUQj &iCiB݈;s%DJp}d9s]{N4ct|PKi?GG/ӧwxg`HT P$Si$SYw޽{B L4@8HҌHW?4Ri;5߸}y J$SipB LLխZJܬyk5wxز}7ntX4@2'T1yT*ݿ_KY@2^o,u{˓'-=gjd* L 5@2fL^>@2^wީi^kYƏ>9P$Sid* N4ck-LS}`|a>Y4@2'T1yTzu>~?}XGoѲGG=gjd* L 5@2fL^>@2^/4RÇ/?Wc 5@2H J3&/ Jq-|e],z_?4nYϱ J$SipB LLWa>s?Ve+gX[4@2'T1yTzk)_zOkwe+B L4@8HҌHҗ:Mu}X_-jd* L 5@2fL^>@2t;;aaf-yrylHT P$Si$SYZJy`}7.YɅ J$SipB LL/|^j){_ibnlŢB L4@8HҌHҗ+LS}XkGG-{nȦT P$Si$SY-j-{nȦT P$Si$SKu{xf:s 5@6H J3&/ J_>z_pNz[4@2'T1yTzywi/{pvz[4@2'T1yTzI''^;vw[6tB M4@8HҌH8?TKi?>} v˒[4@2'T1yTzw c6kYғs 5@6H J3&/ J7{񢖲Թu.c8?oӳޣ 5@6H J3&/ J7ZJy_8=mӍX]4@2'T1yT͛Ͻ/#9:jӭs&T Jjd*͘|d*7k)`[Vugܯ 5@2H J3&/ JZJ e[o=kB L4@8HҌHmx{O9>nW_%jd* Lnf}q<߱ݏ֦["US%6mSY!zTRZmA)J %jqJ׋4p}y 5@2f|d*Ν:5UKiѨ`x.\h9{E4@2'Tat4ýA:w`ϞHT P$SiH ffj)sza>`zE4@2'TaZJ,-w[nv~[ J$SipB L&/ J?Cj)-o_{oC-g_%jd* L 5@2f|d*L66hTKi˗{ovPپFキ5@2H J3L^>@2~&NRZf޺{{ٖ=x[ J$SipB L&/ J?_O }--\"T Jjd*0yTz\4իa⋖=p[ J$SipB L&/ Jѣ9pǽa[]m9(x J$SipB L&/ Jzj)-駽j }e J$SipB Lneeeyykrr@2αc[ĉ^\켶P$Sid* N4$SǺsF=maHT P$SiHҿx8kk??7ݽvxǎjd* i:8g^)=i)!A(LPnT5+¶^^AJ:Q6U(Yd +k㋃}WIS)>}|?z~BBz9_HF@8B QiQQڴR&k{{lapww˝+韌&=?hڧîԙTtdo13u'+li=0ɨ4HF@8B QiQZ)Y\=?bi^׷ӯ] %=?t^ EGwc„$ 5HF&n>HFR)HhL٬_Ŏ[s|.|me;jJdT#  .Ja$7fC$ϖ2~_Ir{C;jJdT#  cHhL 勥/w>ƶVS'ܬc ɨ4HF@8B QiQ'R&ޮx1pw}:^F'3+ѓLl5 [% ɨ4G@2* 7q@2+DB+e2ss ΫIt|QX-J77HxR&^ rq|i$/n?^OZx@8* QiPdTndWiTm{o &(O{r@>* QiPdTndVzoO+e2g^mqIz~P9<6}مh~uk}7ӧ忿~)ʈŞorpa34T= 5* QiPdTndV ɜ?o{u=̈́fL&{F6K/d!.m~_/vN^NKl f* u/׉a Q= 5* QiPdTndVR&'Wwݨi$ZLdro{/w^鷷rG&`˿S4AFK:j T$ ɨ4ɜ3Z)dl/4<:T\ճ|jCJT4MH֠<XP@] 5HF&n>HlROg$SIz~PQ|F[ˣ՝Mjp0~:j T$ ɨ4ɜtKVcvFϯּ2S.o뀏BLSJlR(mm&A8ުol.PiJp$p7$sқZ)Y_Kv=?vپSCy;љ̫cw qY3lVw=7C JdT#  ^XJU<--:m'⡑1[Gnϥs`j:W}DHd`zz7C Jdgn0gH 88IQ,E)MZD$Z,"8"DA@(&@!^dv۾aOWZr͇jό<3 {ͨ4ZcS k'*/$.?~rEiCw⚞P@^PiЌJr4/4۶YcАq|npŤ%}n4~!YO)>w.}?ufgm>[ 5ͨ4(G@3* ?@3+]0tO>>S 84a;RtvFMrR߿V0#T4ͨ4z&0#T4ͨ4<;Xc^ZMElJřT>{.}<,7fq盹F%}9ENvTrJfT#xon4lZc[oI 8%Xי} Tj//.XTG-/T4ͨ4|5eccG/&Ag}斒?gw(}3-l:Ç?o|5hF'^>h[Ƹ3AgתҷYs]sX䭺ʹ8x1mj$j* QiPPfT~fUzkL>wRDiT>s&}u ATNV؍Th4m.lb"j* QiPPfT~f^UZƸlnڎ33AܦlS*AywyOjG'j7S\78a 5ͨ4(G@3* ?@3*WI 8>0"cjyܱɪTعӱU*YīP@PiЌJr4/4{Zc\6;+}?U 8>0'} aKIkߥqNݪI_Kh,OU w4hF@9B QiyU޳t͛]\jiy±ɴs D^$ëP@PiЌJr4/4֘.fO)"=[O=_ޑݼ^rJfT#xW޸FG]DIT(N3wjP_utalI_KRK7 CٜP@PiЌJr4/4ҿjqG/\ 8͢UK(ORoj+ӳMk9z1mߞ 5ͨ4(G@3* ?@3*}5MΑ lyK6Uin<^IWnCT>{.}-6 ]ّ#P@QiЌJr4/4oazo)}9c#4<\^JZn/gR~U;{.}-;wԣ0O=?<5hF'^>hIU֘74$}bix6=a)i\.?MZnv~;< 5ͨ4(G@3* ?@3O*=>nq޽G/?|1Dq%rR~)'$?uOB 9E@3* jЌJO|̓J5eK@ lRҒGWS~)œӋwZocC:۱&{j)* QiPPfT~fT1]/ m&}HZv ֿW#7k)?=jHi]ϻ4d.^tuOB 9E@3* jЌJO|̓Jez.Aϥ/oǿO'ߕGoեﴮ\2>[9'5hF'^>hIwtO?>wQTj/6/Q DwV=_Ji<}jХ$;p= 5ͨ4(G@3* ?@3O*c5]*}xLivNM1vojoxu)=x򻞄rJfT#x'tnDyqgir&E /5Fq (VYLX?FfvW":0 gijLL=ye']N^¨?,ؾD|q6D6lf6ѣ&1y.]ROB 5HF'|̇JZ)MO>>(a].ھD=[:Rh<_*&gmitw&>}5JdT# x@2*==2Yj莛*.(hb[G{$?fNl_hLNLư*/ }wQiJp$o>HCI+{;v>adT6]}_homf?nR9+W:B 5HF'|̇J:]lqŧ+0 l_ #7J<ڝ#+uwIXjե!.* QiPdT~|hbwbF=?[]}o\[naKOoL²a{wjpɨ4G@2* ?d>TzpP+{}}f02藹ɥt6oj3s˶/3iˆe2|wQiJp$Ұ. \ OJ޽hFAh37Joࣉ?ڥEj{t&c [^E>E@2* jJî\.ֶŪ:>>ٳG+{kc~>ٶ*U7T%}o \oI^/B 5HFa:;;mdnT.(0lk|۰ZnR]C]T$ ɨ4rmmm[o={RW0s|FfSyLJ>ܰt6?pZ/M S[\!.* QiPdTrc7IoV*yݴ( wۢ7#7Kqh &?߇P4HF@8B Qi7$Z#vӱo02B3vl˶/ZǏt~O7pB 5HF'|̇JjbEvtFAhou`4?{kZZ==&ߥK?܇P4HF@8B Qi7$kbobsA-'gmLk;УGݤ6uC]T$ ɨ4ěPTrJu5FN\_}4p^9Ə~X}+ɘg>d!.* QiPdT~|[oiboz]ŝrFf->>{t6͒;Е+ݤ9Ǐ}wQiJp$o>HJJZ)˶ sA,jxs[GfϷY}zHiX?ćF@2* jJO Y+EZ)!3 v*/q:F /Zժ>t0>ćF@2* jJO Y+ib]S((7OD KW5<`?4OvbC N 5HF'|,~]+{>kn/adWm(=m P;;MTmtd4* jJO Y+}V*l5] .F+ώ.-=<<|8y҇[cRgdDzXh(v۟פ}s:vŵk.]]Au:~s2(jЌF|>z:ݯK\-ZQm9;튯r)4d- Q-0q-}5&u{Oz,hn$rĽҽ%lPN]ik ;7' N@E yYcRY鹳2ۊ9 0H]=lIuj%.3ccٔs2(jЌF|ƤN$=w|pʼn[V9DLkJ4xgθR|2i4(GQf4f޷tlIWYQim]z| ^ObxԖ^k.3.H9 FKr5hFK#L\>h}K֘~{(N靗c\vۧ:y%րݾmyjښyL@94&.4ekLtB3 kQ8d_ٔVr}2q)րݼi vښe l? hiPhiͼor:ݯf'~*=;vݳߌ.dxԖ^k?RP[39) 4d- Q-0q-].[cRX$m~}*=8ޜ͡b#>Ϧw;w.5jy&*i4(GQf4f޷tlIWcym3KF=]KϼXِ^k {KSm) 4d- Q-0q-].[cRf'~*=;޴7v0=cW1ז^k>ȥ^ؘ}Hz i4Z@3Za@3[z|:ܺEq6Cq)=;dk:L^\\hK5H=zԥ^M`'&l# 4d- Q-0q-}5&uΞ[(Fq6K5!雧CE.:5Ӓ^kh}KXcR˟Eq6:_Tf[W?egSzt)y]ew? hiPhiͼoS1sZ՚8緗g._ε]_Xl0r鮞^s2(jЌF|.1sZ]yЊ!,=;ԩ:S,.4֥۩ywޱ>/i4(GQf4f޷ZcRq鹵ʼnCZҳCl'W=lI/S'NW\. 4d- Q-0q-=7gI1UZݰbũ3|qQzv\~I|ߒ^nGl`[oץOyL@94&.4󾥓:{Jϭ(NRiI.?hV uv- T9 FKr5hFK#L\>h}K7ң78qȋFGzvhwin'JյΦr;rZ6z<|( 4d- Q-0qY-w5&u~Qzn}m)yȆhy珷қ'|gςCm# x'4d- Q-0qY-=6fI9\$mN]K,瓶pi}[Φb;~?fie;!<[M^gX!Mǩ6PBNBj%H`0IXȘAmeQJB;珃m|5J9$9~{z'e]@8$&.$ {zRƙq=<{(6Żˮg /N-A^,kxނE} E }}Z)LO[S"Ore׳K#wSV' ?-wz`;tZi} E ᆱ2빅Fqb=CsO=O _]+3+73ljm}2]^ ZBi- Q -0q Y-}V8疤XFqby׳o>ZM ٝ_o73RM.\ 9 @8$&.$ {{RƩ}5ʼnEdzgϯqN(U5eӢ>wΦ߯. 9 @8$&.$ RƩ}5n,Dqbn\ώV0qo%aO?,^nku)kBxNhihiBhRƩ}5sQXڿV\ώ1[(wYak䇊 rۘoNi- Q -0q Y-ݭ2N+y3"rh))hy5{os ~ۘtZOMsEKp5HFK#L\>HBKV8疤{<ʼni\˛l&xPt&̌Mm6왫c!<_4GQd4d!tV8'N[_Eqb#y׃e`q[&'Wf]/WqQwvTܦu-4(jF|,>sF+e?t=$'Qf/׃eUct,L*N{_T-'+BxNhihiBhQqFF\-ɡ\'E׃=ɗ44gqdrzlYgtڦ6]"x,4(jF|,dRƩ}5Qffzp+dXT]fz`@6]1'N~/Z@2Za@Z:JJ8W\7,8?,Kln|n~ 9 @8$&.$ 3qj_ʋ(N,RX}zvaP>HBK:2N+B'yJؽԐ6][Ǻ''mo}i}m 4(jF|,Jqsqt*ʼnirGОoe|:/.*E=2bSudtCBxNhihiBhcǴRu==WsQXML‛ρه-XoӁuԥ|sEKp5HFK#L\>HBK=2N{轚49׃Vra⌛L*N.]޹_ oM I[BxNhihiBh>qiϻ]#rQ|Xbo>[ڡ_o߶ԏo~/Z@2Za@ZR6p= =(NL=s=8P﫹r,ɜtR{z,.mm㏷w?[i- Q -0q Y-=9ɓGD.t\lby5n2'μ-E=;kلN[wEXi- Q -0q Y-[wQw4VpE*jD 9N 1mlBob Q%*9k̛VPS5 $u" gm7,]L1xws:ߏ |̣J筷aH6bl=.̭4=Ŝũ2NOfjXVC=8hsUg25`>< XipC .c'N>̓޸Q+eV](HWwNQl򧤋鿜8Uf̕[5613;w@ybq 582OVQM>Tv_Ql]& 8gl<1Mnz=k8ׯ[:[9 Jjp+ ?qet>IIWw|Ŧ\.,>-QEP{0'n.pxϟ4$+ ce4҃Z)ㄡdKZ4OIu!XsZѺ^=1IaNIH0D48'\JjlrtuiCW A) 8?3Y^u2v4Էn6a$:$bq 582VXkhctuiW ArA8`,_=ځ13_M̘P f5ls12V~˼Zq:;{K})Div]IƓ'̅tѨL]T{lc%aj[ ī4$+ ce4y۷kf.A)b]`_0榪р>rf+ C}T=z@xaq 582VzxX+e76 4Jj85K+`ZWӡ1C=2b:Uyaq 5vM:݇:KR_txһv (-yU^ 4k߿!]}cqL ugu|__7pWiHVP_tss3'WҦyϤKZ_(6KnIj~lqҕwjb$+Y?Pc]]]Oh_J)m+#]\ҲQlg4KwjGM?~au'/'+ސqy}#Yɲe'Ɩ/_!*N777KP+VU)mżu8b8˷Jd~r -?LHw/-܋fuZNe9R!= YXipC .c'N>ÕnoJ'-mh,bl:=!]O[\9Vz?==6;Y޽ 9 Jjp+ ?qetV8aZC|Di'uE1Z̩ܯ|E:TVR^ZiHVPXi.pGGR6ٻWwJAfñq@#duZe9Ϟ;ט 4$+ ce4yŢnmJ[ MǤ rz~K&ؔ>5,9 Jjp+ ?qe~t[V8ҽf(tuQOݔ%u$SDC6kY֭, 2|N@R8\JO|p+ݭ2N{to9ӳ:bf 񿋪?cw_o/a|̽|N@`@94c&N>hJ:di8ժt,FIh: ־y3~>,̭?x8}N@S`@94c&N>hJ{/}XXw+s_s+ 1+0q@`W71ܻ绺'go$OUZy%ڝZVs Yf.V:. 9 MjЌF8Y+I|Wdx% fC{;]r g s{Jr 5hJ#L|,ؕck0>W7Z4jhJW61 nɯ?H}t9YIpTe󟲜(*44Vc@3Vaf!tW5Fb,V6|wjcpAvvg?U{z˹=O 9 C '4 y1<][އ_W$d.3>m+W5 Ǔp XiPXiҝI&&|W^kIҨ~;߿ nӏehcx+ 1+0q@W%k${b@wq@Jk_jϴ Κc~+ 1+0q@WzyƱ5-}ad% 3fٵڑ4k=~\ik tEwu+Q 2p;TV/n֎qښ}-.@^xNf4(Pf4X k$⻺'//DIh:..vNYpvghyCǏ;n 9 C '4cۭ1 'm軺^TʆjekGnwqsيsxNf4(Pf4X~k$hj\W/J=}静U+Z.9 C '4c릦1ZVkퟏe51XܯU_:pYm&4hJr 5hJ#L|Ќ2f}8:PѼŁ&0S\ok~NK^_qӹgvMMiЌjЌF8+饗1<黺/^]hJo:}#L份s]7Q գU݁ɷU-ۑ$}XXwPxlLܽ#4hJr 5hJ#L|Ќt5F+W|w$݁UEۑBV˽m8iG-r/ y9 C '4c7 [c޹kQR(gMܵxʇ3gl<hB<@3Vc@3VafR#̑#vmUZhIH>L.ͭ]unN>ͻ#?+ 1+0q@3Vz[c(I9|i>n4}yŒmϱjw nft4xNf4(Pf4X-OZc޹FI*'O].̉oV~?Z̻G!Lg 4hJr 5hJ#L|?uqOۃsLmPaQZe!n`l"74E!mu*nS-lM[L2(%q׎gF"+&瞯u/}\霏ft1֘=wuF(@'iK]Au۔SmxC9uG8H<@3Vc@3VXMNHG%bYuꗺ7=~Quڶ9a(ҍJN;A9 C &N>hJor5F]=uz.QnLW}:P$Y ta(V.]rZiЌjЌF6q@3Vzj;fs}WV1bA>(t2ҵ'78|dH7r5s4c@94cM|Ќ~^5FSA r8_XKaPJdWo#=cEĞ?/V.]rZ iЌjЌF6q@3Vya|OOG(䳇+1]ݻ|xiRɞ:%0}  + 1+lf?s߫Q,E݁ΰP^]VX\;mQzhQpbi3o+ 1+lf.^3:}zo(de݁_aА;KIa$Emf|a=?+ 1+lf&&1 nւ(Dwwl3ԣ_Ue= C6ӂ/<@3Vc@3VX-azz|O]Ұ # kC}mթOrE>͜> iЌjЌF6q@3VEΜHZ>ug>*Q,_hP?Z\ Inߦr5WK8]]Xp4hJr 5hJ#8+"0Hrrł}Pnǡ/E7? ᢶ24 iЌjЌF6q@3Vz7oZc$ C;7}V67ўw}@ {UܔFTzQm]5+ 1+lf^}#ɹs.Q,o\PmC{Kxson݇\ \V>uW xNf4(Pf4HP>]SV(H\]kCd)E5bp!qleؘb<@3Vc@3VXݿo ӕ4|DDSv?ԟ&Mݷܾ-վ>$iЌjЌF6q@3Vz{=v#;RłJw}@= Udp#BesyG8κB<@3Vc@3VXZc$]=u,Q,K:W*ʯ}N':8XiPXid'4cw[IVۧ+iCCqIr(_(}`}wIv7Oe + 1+lfǭ1LOns(-h$굤ɢ2r񓒣/J-~G@4hJr 5hJ#8+r#L>}+ /ԑ r\__V*>jpPahgf + 1+lfn[c$]݇? ezow}@P<]_VrQ<Y6+.iЌjЌF6q@3Vz7L,Q,;%]3ԵFHA|[9=4ƄLo=F s4c@94cM|ЌޥZ͆5fij~wn6u^q9uiύeAUKUMbE iD%[2UF+`S (Uhik;c;$v̓%+$Os$_lcS{u$D p.-珟\Qﵰ`$ȡCkfs4@94ў@3ZzH{t=(Q,H*]*oP>:ǭfW{ua6r`8@3Z@3Z/4wyk0o>qZ*Q,H4[=>HEpa#%z/nWCy622v"5iЌ(jЌF{hk0e $j.bAplNɼ=+;\-j3']hiPhi'|Ќ޹ aΜ@~uD,C_}hᤨ.WRi{|!n/f>D;- Q-ėһy}/ eye([x{@WE=z(~[UW0lZ“'&hiPhi'|ЌޕEa!YsAr+TpXԿȋWk^m gpNf4(GQf4_>hFKyzɚ[X|zPIOrkF\-XwlKݻ'hiPhi'|ЌޭekLKB[9JŲmQ|U?ɭLǏ~8YСV1[:vs4@94ў@3ZZw1;{dUjp.bYoyQ|UNEYlx^k}yRsㆫq`8@3Z@3Z/4؆5FlrŲ|,[^j/zP92?f>^v2OgڮRDr- Q-ė233yN@*WGrA2EO{W#wJfW45Rsq8@3Z@3Z/4}#LE $ڃrŲ o/mU6GHccvmq%8@3Z@3Z/4 k7}/j eycz7{Z՚+Nv' 9 E hO|-݊Yk<۫AT^Zl+ϳTW\al`~qpNf4(GQf4d2×jq#˾OVi}3H|o@Q+y6dHO0l='O:/iЌ(jЌ_LcWsOZh#Iw-|/Sח('Czòy6P:ipPخdqNf4(GQf4ہ| p1|tD + 7 ȥ.ښ=|X^LL89 E +tttj``xIJ%k0ahy $JA˒J %Vkቼ}5\t떼`9s0-iЌ(jЌwLfppRzzz@-'Ns; XHZE8[L g#_܎'/#GhiPhi'|Ќv"vmzC%Ł4J'ϳtO겥Y`- Q-ėҮ>mfl;qm)bYg|$*ω_h=ChFK;t5F}O\ XcSyRS_]v5 CIj iЌ(jЌF{hiJ%mq[^ Y+Cq 5 Uԃ/_h#t٭8+8 I@uM  H"/6ơ `bRJ>P2Nmf׻vY{=ۍ7zc59G,m'O {'s4ͨ4ėQiǭ1™}^~=Wnl|_c~,~Rṷ[^j x?@3* jЌJ#L|vkm#GmbU=IIח/1Yδ,h؃c[*9iЌJr4_>hF{)kp|o_jQ7|_tPmlx9qjo9 QiPPfTaͨs/ZcvqŪԷ{&(wMG7y^h{zt9Y)y`ۓ$6s5hF&|ЌJ;WZc32|=JR.^^:0!9v/srWm?@3* jЌJ#L|akp~ (Ir@yy^hgNX˿I0vfpV*wx4ͨ4ėQnX^ 齍(IsB@i<3 y]w!{v]! 7T#F@3*%ccJ(j)n|_tPL?ȹ\L?x@T4(G@3*0fTK {5F8(w(I3/EO|L9S=0~]ʹƵk>2N0D@9B Qi/433cܜ (Ies\%k>UlqGN;ɕk ı{7:GPiPPfTaͨtW YcgZnEI*n mZڞcϹC;O>)tW.mF@9B Qi/4]u玍ckp}Pg.W$ͳB[W7ZQR?p5 vKJvͨ4ėQn'gQg}P?7UTvʿАPtgCNsBQL]JgT#F@3*]ZƱ5F8ǎ,}C^يT6xwcjCڞ?}pTv Dj+ T#F@3*]_g|{~%l>{}%͡ݍ5S\ZnXXGl{, 4+ ͨ4ėQbckpvq Ś+5$9[>}Pg-{BEZo.mڤVǏ3۞_v h4Jr4_>hF ;>p\FI*jQo=ҧWnl^UڅJ@4(G@3*0fTH}};b}|w#JR7[}P\ͥM˼X%xV}_8'B=|*~_M3nwJ@4(G@3*0fT`61}C*'IS} =ꙅ ;=tZng7m]~'* ͨ4ėQ=kO27+(Is Dvz?843t}lOTE@9B Qi/4^Yc3=-նzrIo2GP0?$;\&O*+zFRi5hF&SQ\W̱+wVƖK!?"! Q$Z) [ E$/4)X޵gv$=sy]y$V_| 酅7়TJp$(&|JrV|>:1Ux6m_QJ?i-h$lwJ%=3FܔJ@QiPdTėQi[k '‚2h| BX݌: (ܨFZg_LZpP* D@8B Qi_>HF-pA+e>:lߐmxAh<6m_Q_4$;/T9>QfTү^P@T# F1dTڮa|uha4|Ql_WXnTY_׾(lA4 5HFQL| kqQ+he7de# Bt޺Z}`"_~ˆ#ݞZT9q"ifѣT6|UJp$(&|J[wV||_23i`r42aKDݞRJ@PiPdTėQiАV|}Cj7zFd`on\2whO)SSXi(* jJ@2*-{ZD37g wej`orꋳk} j<o6RI/-GPT# F1dTZ#GRs"7d |~Z޲} \+SU*k;i-;WZ [i(* jJ@2*-ē'Rs2tQ Bl`r}~J4DN;wR @<* jJ@2*-Z)}o7j^Neec`rꨣ?YIZsԟ}(ɽv-ŽX+ Σ ɨ4/$r<K%8` UW/ͦ<۴}[yVgŪkgq+ݕŶ;qn@+ n ɨ4/$ҢLNj‚2t}ٌ\^-Bb%5|a]ij*ioytKTF@8B Qi_>HFs > CQGub B *oپ7B}UڝktR^O}/9FUT# F1dTZ(j̧V}C[lޚ\>+nzu?X/TԷ:u*Qo)S_ @θQip5HFQL| sZ)KdzAh697_k Cܬ{A7 ڟci3,B\ҚVjnŝM$xqp NTJ$*7P I 2.1Wgyf9sZ LJj]VP6{8JͦyoO |5rP T#  ֻwk ' Ӯϐ/t(6?_Yq>lE u{C57ۛ4y] |;P T#  ΅JOoq}Ql0Jʦg(pa`Ḱi5o)p4G@2* ?q@2* ժV*ռ3d  PPf`{SW|Yi۟߹pa  ɨ4ɨt^V*\ $RT hjw]`+fy_>&wkP_4RJ@PiPdT~dT:/*Tye$ \PC=9k`3|(v{-,0L޽/@bWJp$7$yl0J(r}L[(7'RP[pnڙ[v.ӆ?|;RwT#  ΑJ0ԋ?~Dٌ]v>‡Wm}N\o |kמ3e{ _i5* jJO|JҒCTw}Lwr8"|ůvkJQ˃ssi۟|45HF'n>HFefFV*|cdOWV(677\|ϓPݚYѣiۛ pϓJ@NQiPdT~dT:wfgujgtTw:azw\!'< u{[2}ەM>|\8I 4G@2* ?q@2*G \Jɓϐ_^xD̲}ovk^][{S7336V?< ɨ4ɨtN-,hҒ3Wom80v} B&7۟}hiE].jؘNKpƟJ@QiPdT~dT:JϾ}~(by>W?Ϟu{0L3gm * C@8B QiQ\JϩS`_DM' [kis8Z\%].ǰdϷJ@PiPdT~dT:׾R+e>aHF7R31[JD3qn ;?C}s̞ IzIM{n 3~VJp$7$yǺ\JN;w\CQl<kކRdl3z/7o+ @@8B QiQ8{V+e>`_?Dϡ9lr?ֲ[wLj2s@>* jJO|JÁZ) Cl>}8b \RvX]ۛ={tbwAY 5HF'n>HF^/2c\ 7(6;ˉ/C}ƚfg۟S. >W ɨ4Vek׮]|'172g f/C|Y2}im[ahޔ˽[@|4G@8B QiUVv85553HZ) Cl>@&^8^`JQmu>BXn_t^7m΅ bT4ͨ4ėQz=kp;9UT0p{}PI}2-8pk˞8!/pwͨ4(G@3*0fT:Unܻ(IesꃊB}CCEmዥzwض6yܮ4hF@9B Qi/496>nȈ۪5~~%l&櫾/@(ycKNMz;D@3* jЌJ#L|αj>lN?}cDI*BRvPЙď_Sfzɮ.y]oe4hF@9B Qi/4;ı}K QoPVuy5[u{;=zAA@3* jЌJ#L|ηJƱ5F>͟OL>ÙzQ)o>GCCow\/KzA-@@3* jЌJ#L|νAkLc g$ϯg+/@j{xTopi黄;0v=-A@3* jЌJ#L|ν4ql4pTl(~~ђ6]ok[,^@VT4ͨ4ėQXc΍pj-o@\+$,Ont[2wrvZJfT#F@3*3g1pf(I3r~e#RvdE@3* jЌJ#L|=zi}άoB)JRJo|"?6t}h* QiPPfTaͨt8>i..>Ù?ێT<.n4||"?B{OW~OYx_|jZJfT#F@3*^kLy7D9JR:W}PDm.n;uJXNȎJfT#F@3*%֘L3? g$2UG A, IQxTvv +* QiPPfTaͨth^qlOg}o>DI*B.O%mɩU] * QiPPfTaͨtfg1978x/J,#7-w]!QiЌJr4_>hF'ı} OW$2jB}p w җ?]v^_mmy.JfT#F@3*1}3P%Z}rP?_Nﭕ]>-QiЌJr4_>hFCmOg،4L=3[~WrٳT!* QiPPfTaͨtȾ#at棵(ISH+5G '꟩v-67Gu5hF&|ЌJ#ۻUkt0gލuƢNdPQ+֩Dօ1Xu4-U:ubL$~.ݝ"Y`a4gJhE(wu垚rk5{T$ ɨ4/$f(e9w>uF#pj /IoK{ t(* QiPdTėQi,4iN=JtOi;xƒm뗛o5T8V4HF@8B Qid_>HF(e9ӡ,+DZ m^|fJ^wy1* QiPdTėQi(e9]]fm->-nFzt6Bmt.>jxmon>̫ t* QiPdTėQiP۹ g5V(ZvKSs}uШ4HF@8B Qid_>HF̌Q~FFB(.[Gj;K5g|9m{\ozɨ4G@2*lɨ42ql߮Qb?DܩP)o\\Y[ϱs t* QiPdTėQi|E>{(ю3\ }:3]r|7X݁8* QiPdTėQi|\6]]F) }OީGv\Roq'<ڿ g;osni5@@2* jJ#@2*77g|<|ƖjQ]N;0Kv`o=ꎏ[ AQiJp$&|J[z(e?Ιf3 >~c=J菕Gjkܰӛ%\o7o/E@2* jJ#@2*o)MwQ~}7 >kywjG[s|?][ϥN AQiJp$&|Jn4J9͵koi^=Jwcjw?K47mTwy^JdT# F6dTߕıygxM(ю?l>P}.g ޾񆿽ɨ4G@2*lɨ4}F) }7+ODGЧ#QNO_k.){x>* QiPdTėQiEkf` 47uzOtM,\lyoKcT$ ɨ4/$̌Qu gx3\>VS >BiL_U}cfujC@2* jJ#@2*ʕ74zhljG z+)Pin4HF@8B Qid_>HF?M>o'z3|]Gv+r#wk]Zm[leũ;XT$ ɨ4/$x>2qlWCR-J|p;PF_fK^w^WlT$ ɨ4/$8 ܾF?ߌ2'NJV; 'UZkx|}{ɨ4G@2*lɨ4hP~zzL~Fhz# \olL[vh^D@2* jJ#@2*JSm˗CY3mׅ(.3C=/۽e]hW_g 5HFM| fj* I#J`;P{u8Rhmimئg[ 4HF@8B Qid_>HFq(֭7xO7D zQ#PsjhN?{uQݺJ8zФY"-4#!1񮉭m:DQ P_rZQa4v C2Kpp`LHZI֓1{C!CPiЌJr4('|ЌJYYxMG }FI3o3/C-+n½nG4vaAz/QiЌJr4('|ЌJ+ktt~}?Zg ZNmg-^;Wn}}._t)5hFQN|131 I^H%X} #ԢTܞ}KZDp* QiPPfTėQi8Vmw5kV*/tY3JR>jQSϷf痙b7niѥJfT#F9fTn1vr2%>[kOAHZZ<6JM>~,CPiЌJr4('|ЌJŋ֘fb"%bͽxh5JRjinڮVQ4hF@9B Qi_>hFZ]]߉c[>FFt-5PK_q~B[5-O -T4ͨ4ʉ/45&c1'nEIˌC_־2jsOhwujFA@3* jЌJ@3* O|`aN }i2ٳhp~C35߱Gz]h)QiЌJr4('|ЌJ˗619HcL<ي4~{P,B]_ίֆV'Nu|\h)QiЌJr4('|ЌJ61GB#[mI13נP}$߹Ξu/jOّX AT4ͨ4ʉ/4֘6y} y#|P֝_l]b/*ݻK8JfT#F9fTyyvtXc|C_"i~e fQz{kנ \7Z^9볭pͨ4(G@3*rͨ4rpK$ͯdQzιo7BʚJ'NxtvVb)o5hFQN|F=0/4|;JR>E ԅFV>ͼ} d"y'+k[]ӧ%6;* QiPPfTėQiwؗ/C#fd%/6CAHi><׿ ٳ!QiЌJr4('|ЌJC֘&7߄>F̗[QOeH!z})Ԕ{ER~C@3* jЌJ@3* QNYcr8w>F?Q\=)AuxZVWҥW?T4ͨ4ʉ/4bü9?kޓ}Poq-s~[}WB%@@5* jЌJ@3* i80== }(I2_} rF3A1FF1XcČXڒnkB/v\᥇+W?{zl%PjT4ͨ4ZXX8r[A;w. }|5&c;91FI?dž~cBЙu79 +WʋJfT#FXoez>9fi4K`Cb JBh@Ml"8[ƒ1 ՌY{k{nߙ{t^Yex `t:AT>SǎBQ}4p} A>ZJ04g.. ɨ4G@2* N8>NZZŢV* C=6;ƫA2cs- ڭ/&fص.\ϣG-xJdT# sgϞlgX}63gP/.ǎ/[8 +BV44~qVR~X ɨ4G@2* ?dT;ojJZ]cͷ{I$] BVcsP6|[L#* QiPdT~ɨ4xT 5HF'|JÕ4էOkN^Yq}5,(>ѭS`P;PQ0}}ZthXRR4HF@8B Qi/$pkxXV*;%֌͵(>ՖS`PKp;zno Y,IrB@2* jJO| sOk;{\_bxu= LVSקw̞ޯJټs^G4HF@8B Qi/$p.Muat;1DqIҮK}Z}͞޳Fjo 94do)/T$ ɨ4ėQiHP+~Rq}csAg?NFirsbԲJdT# @2* !]aazSǎ7ւ(8Chln=\HҮ.\0ʊŭPiJp$_>HF!Z|& {,H L!JO6j9 UT[ ɨ4G@2* ?dTLNj033Y#[(|xl_=Cmz˰|A@2* jJO| 4Z|& {, 3N}}xUZJuѵݡC * QiPdT~ɨ4J3a\cfYTxUZV{`ʷSH&/PiJp$_>HF!PJ3a]d sIu}^ Jѽybo H ɨ4G@2* ?dT2ݼmP̸>)oiWﻴDj>PrIѵ[o 98hi)T$ ɨ4ėQiuV* C]>)oW^qN!m>?PKwq]׺}0go) T$ ɨ4ėQiUbQ+ۄs}U*VƳ~v}~-w7mua{MS{{ɨ4G@2* ?dT}CTnEW #jin!J [maƅ{{ɨ4G@2* ?dTML0J6>)oiWrƳL?t}'B-PEGp{?n3g,nzT$ ɨ4ėQiW#GRݻOۓմP(ӌk?P tN=mc*oo)` 5HF'|Ju.R9:M]ߓ?Dq⻖;@Ns~bZQiJp$_>HFzJ0;\DPN5RקL#ԍխ>İ}du/`7 5HF'|J3;ET9p@cru 3j|4xboVrżKKVWv-* QiPdT~ɨ4^G: RY#O}}ASB-M'v7 9ҨT0`+r-UFe֘V$ bIU.JCE;P2^_TR+3G9O]4I2Oؘ2 5HF&|JtklgOn}L~^߈rƮoPvfw'qk^@iQiJp$_>HFQ\ss:RS$mgߩQb;_6OXņ;=ry/^tPZT$ ɨ4ėQiZX+e;ǎ]^srի-W[l|0,sPNT$ ɨ4ėQi]X+e;$?u${Oj&6XRo[cNO ('* QiPdTaɨ4JT35}d#JR9vy=>BŚ}5~b?t KX'O ɨ4G@2*0dT028 /ڮjDIj/jzafľsy OԝՀ 5HF&|J>\+ıs1Y^ۭ(1b>ZϵمzA3ĄՀ 5HF&|J4FGR9L}L~޹%ti Ԣ=ʌWn 62b˗ݭ ɨ4G@2*0dTX+TO|ߓ`XIbjn>"tZMץKV%/~W_T$ ɨ4ėQiɭ[:R‚{r|+JRAA#Cu`2mڲ3VJJdT# F@2*ySWZ&{򐶳JFVX^#\Zkvٳl6mɨ4G@2*0dTJ0ժk(ImSi@joeQqUjfzel289h5<4HF@8B Qi/$(,ᆱa|19ɭ(ImL7#D&ؙ̟fgxՀ 5HF&|JĦR9L<%L,mfCߗPB?4~Y$v{mƱtܭɨ4G@2*0dTQ+e;/|_?}'JRmwPŹ/_ qPT$ ɨ4ėQi['RSY(I-vhv*5g|n_|cfsPxT$ ɨ4ėQi޳gZJNYXn%I#׮SB oMn33OՀb 5HF&|J#ׯ8J>ډ+QZN%IWO .vxBYɎ6?PiJp$_>HFETsK=TFsSBAfo7uaX/,(** QiPdTaɨ4QRK]}ԍ~ޫ}B],;J0{Sw[0}?+EE@2* jJ#L| FP=qStڥ(I)G ك:| -F@2* jJ#L| FhJ·>#˝(I-燗%eG cޫvU D@2* jJ#L| FǵRVst|ڧ(I-7wھ(9B]8P0{P$]]8-ӯb^iwEE@2* jJ#L| F66Rs3r;QZν}w.k-u;gqD@2* jJ#L| FzK+e5q?96$m4;{(-B]D_ڼNლ5OJdT# F@2*0cTzy%y͆ZQksl"E +jand{ ;k܂!-(.!D!7K٨u8N-'JQ]6 쮍xoEM̽s̼8Gmp{QԽՀL 5HFQL|J]ӾC‚K׽ >p}G>:=n~iwӹsGQiJp$(&^>HFQd33RJYMo\_察yAh9c;rPgTutfz ]] * QiPdTɨ4 . uVj*}KvSvoyCzk+Xn}ߤxǏw{5 c4HF@8B Qi/$@JK[q)=)Ww]+:ӎ6 f a2JdT# F1@2* ~]+e;gg]_bm^ZNZ ԙv'Ha%ܝ?v@fPiJp$(&^>HF il'/6M/gN YW ~Pb1l]̠ 5HFQL|JY^־]_mzAh?cSPg~n/hغJdT# F1@2* |綾R LkqGњS +Ͷk2Pgݯ~SVnoi޺2JdT# F1@2* |#]hlaח$am{^ZΑцS2Pgu+iY;84HF@8B Qi/$CT3?$,>-WC/e)F73OJݞ=ӕyFF T$ ɨ4QiLMiJYM_cח$ad>z3l>%u]bokYna!Ѩ4HF@8B Qi/$\$7~["Y-_S §;n}߼u}}hT$ ɨ4QitoV||_3p]^-F$Bu{~6|ܽ 5HFQL|JҒJϩSoHҶILA!9pdikl#HU.\HaM@(* QiPdTɨ4#j5Z)s \JAYՆSPw"/z:9cպLgS@* QiPdTɨ4R :]ߐ+;j B˹p)Cs hrbΆ|cպTj:PiJp$(&^>HF߯2K\gj Bڌ;/B'' mxUWR[JdT# F1@2* Ru7$ʮɿZBmR ¸҆am,sE)m A@2* jJx bs(e>\ߐ˷6 rck ԹQ vRpvVUFFR[JdT# F1@2* PV|z{‚st͜#2PƱ1q'%Z78ުT$ ɨ4QiRVS7]r5˖;PƯ>h}76S[2sV[_OmY@* QiPdTɨ4ppOkl)$L.m{Ah3 ԹqvzT_oĩ+7<ڦT$ ɨ4Qi?־JEOO>& SfJA8^\!΍?0,''\VTf;tHG|k ɨ4G@2*bdTx./k33I'_ ܘk_ݽ45O믧)ɨ4G@2*bdTx^Z'I…M/mWmwEs#+YKJs8G'n|ښMSkL9~\@4,Z/}J|~L.{ysvV+* QiPPfTj__!Qccc WpsMSkLܔ>&?w*Yͅ=C#B{~{F.׊6^- JfT#CFFF SKݗ$=/PPm:{F>ؽoPiЌJr4ҐUVo'%;0`[җ[jILDSt!=7Su7rlyv:v:b5hF!Z0_>xݻg2dOREuO@*Yڋwܷ۷#/ F@3* jЌJ@3* [YCC9}ZpfW,ٕ)ZꞴ_q}~MSǾ9b;QQiЌJr4('|ЌJA,/ہkJ?OI;7WOQP6ݞɯ=wνoJfT#F9fTei>OKT]|rymm`6JfT#F9fTnt>G؟~!?w*Yͩ-;s{D~m=+5]T4ͨ4ʉ/4@pIS;?/}F ǯ7,J_g[I_ܞZ'ss}ko tͨ4(G@3*rͨ4 oe4g?'Lۖ>E mgn|vl5hFQN|]kLuKfW,ڏ]Sd6TNϜ-(/t ͨ4(G@3*rͨ4 EaGF1ffFfWI{kWž%uokU& 7vpзlG]A@3* jЌJ@3* tɅ ֘5cBeD-rߖCy-Qz{/‹aⶰw <* QiPPfTėQiKM֘swnݒ'ND-rȿ+}Gl=jV\ŕm/_oYJfT#F9fTQkL';IӍ;wDEgn/|Kj-M@T4ͨ4ʉ/4@4Ƅ?uI!-,?Q2X=#u; nccRaPiЌJr4('|ЌJ]h 6ij?>[sk延8|~5b;~4hF@9B Qi_>hFn[\֘0s=!η,J#}G$$nIsWp P?E@3* jЌJ@3* DaxfZo"O2Ioܓ>%B][-vn7k<B@3* jЌJ@3* >Çm%}o'Y9kt}SPǯ?wyc d~e=pG@3* jЌJ@3* 45e 0#}IWk'Y9YK_e<~px'0gJlE"CTB(H*#ܤ)e?V@bFH\x̮:R"Ԏ{uWHg%gc߬uvjUvͨ4(G@3*0q~`Ţck\,I.}Rs+@pE64$JfT#F|ЌJ?71-MpJsӺǕwӭq ^Yy*wT4ͨ4fT15e8oKoj+V$7oWWyVu8V2Ғ~7ɓ^Y;wNz`4hF@9B Qiͨ4 elƱ5k6atTzo*:(񝟏/KL꠸} W~̾WӆwJfT#F|ЌJl[cfFF7vF돪ҫP?T.IoWJfT#F|ЌJ1v~^zoG(IokҫPgl+ߤٴ]]M;sFz`/4hF@9B Qiͨ4 XNOYG9JR9<\^%g:(};Ҭ-߫i F@3* jЌJ#L\>hF Ο̌>(I*y"A}p;/u}iu F@3* jЌJ#L\>hF U{5kmIomb%[#O:(_ξ/oĄWӊEݡ5hF&.4ҀwXc|gpPz<|fGF\y.Gnuhßf;;݃vnNz`4hF@9B Qiͨ4GO5kI(I}&I/BWξd]O{m;fLz`'T4ͨ4fTcaƱ5kl)I~{g5JR1ץklCO};;5hF&.4Ҁ*g5.F% |\^":4n7˛Uo)ߦ].4hF@9B Qiͨ4䤍ck\$FEI<KP֎Ϳ۷07$Jkۣ5hF&.4ҀBӶPx͵kkgQ:oT :@+╊÷˾A;{Vz`{T4ͨ4fTizƱ5k&'PmO}E4tpӷC=^ͨ4(G@3*0qxM`61ۈy^\iKx!vj&mPiЌJr4Qi@nk׼yF$u_}T oE:duPiЌJr4Qi@>εkk'(IguΌ/;÷eqj!* QiPPfTa@3* (c[*IjDIhDI3mH/P_ywY;م JfT#F|ЌJMM8xW_Im-krs IԒcuf>q8Ҭ-l#fT4ͨ4fTFF1^syxk5JR9r"Ğ0UnGy%d=q½fNI/lF@3* jЌJ#L\>hFbx5;x?Y?ПFn&`=?XvYdؽf JfT#F|ЌJHo5}Nkk;x;w}%JR)QiI:X?r]%J_{ [*I/|JfT#F|ЌJښƸO(uQ5Y[z]#e~!H`,AD*Dʍԧ$4_J @\ JP$3c.ATI~ZsֺeyxhN{i4 ޭ4XF8B Qiĉ˨4]fg}wN8·,"ZyYvޕ+R*kV~˨4G2*8q`ĄwN>CC脓IWMw>q45;vLST,`˨4eTF9:ؕz!ӗ[(l:Z/XF.cwN>(lh,JsY@c\Sڋ޽MLhoPiJq,҈QiKU*>MsS7tR_'\M@cNj5Uo)k/ y.ٛo~G2* jJ#N\>XF5= +W $ų\~o!1zoQpڋ䤼cWjoQiJq,҈Qi㝓ϦM\~C'vdx~7Y],ڏU:fK^3k/jCCŽ jQiJq,҈Qi~F|FF|Qh?#Rhd+{~IPǬ\t}uƧcGjoQiJq,҈Qix LMsy?~F_9QNXFg޹~Fz<ɂf;~B#s*;ڻOSazK{{ĊJeT#`F|Jd>\|380Y{hjkG:r˂}Ğ=v hXQiJq,҈Qi'h?#XܗI?W~Ǐu|ՔxE{wr٧0_˨4G2*8q`zL7oϋBFIL__X? ԑ[,ڲ,k.}0_gh(QiJq,҈Qi\suK zhdA ﶴB#s6^^\hjJخw^Q`5XF'.,@O:~;'ވ_(Y3_}ƶOUŅuv˨4G2*8q`zRQ-[sy%_in5< FX=xo!׃ګ#>T,`˨4eTU>Ms™~@<O}[$ ×yBM˂s%Ń K•^`5XF'.,@{ud_}809r7'X3* Ń=+lW:"C2* jJ#N\>XFwwN8iǵ!r_'×ssBz-;GKm݃?$HݻWGd4XFnFu]Q\wH Nd1 ]XR:NP, V АilKU^e}VG֚G˯#M\>hF{ͦNgo>_N<|:S߰ qO[aW*x!ںկIK4hF@9B QifT \P 1VhdQf~u}c&ݛ_8ў3U#8t(Z_|!:,5hFaQiJ;Wh{O \dy~jo΄ڸ箳ҋGpd'JfT#M\>hF#v7D2}dy]߀ q'nsE#h6}_7* QiPPfT*G}1:+4Ւ~F$Bs47^ڸKs*xɺxQzuA@3* jЌJCVR$jxxXk'O4'skn|!vjMҋqF`^fPiЌJr4Ґ5>>IZOOxO;s&MK?#:G,/8'6'CrhojxXzuA@3* jЌJCVR$jxxXk'ss>MsϷZ/$ˋǷk-I-nrDUzh> $V{ * QiPPfT*G}rOS\~FTfI;6$Ԗ6>^X=KBJg0JfT#M\>hFk.^i ._H?#FLՎlkvMzhՐRH 34hF@9B QifT0M ]|.&fI{jݍP[ŀ;ܜKһfSzo@@3* jЌJ&.4ҀM7oz oԗ$ˋХj;bڲㅀ#|TUzvݻ{* QiPPfT6q)76zŧt~u-VڬjyTz iѣ{* QiPPfT6q,΅O97vJgs~e%BmGahi]zC50 7l5hFaQiY\ٻW 5۽$ˣzY\/V[zCsްJfT#M\>hF;>iU7hF޹y]`n9dy2x oj1?iI^4 S)7 5hFaQi/4~n\\&\,X~XPto~}sЙrhF޹ٿ_[imdy9.@U>}W/PHPiЌJr4Ұͨ4m )dy9vk}:6ezhuM~U~AY ҁ{* QiPPfT6qӧsQ Xk_{dy^?P"->JfT#M\>hFA7)c-(e,hj;78ɪ JtXHPiЌJr4Ұͨ434+4bWS'j;6Ӄuhj*$G{* [oTo֗~1#DP"!cb06(.m *M\fU m^ًkC3* jЌJO|ЌJֺJ~ޡHc63EH̓Էhyȑ49>7<@@3* jЌJO|ЌJx3&LM$^0D6 9B폕iOd-4->7<@@3* jЌJO|ЌJZ4v[zœFq|Wѫ7g w҄_E5hF'n>hFȈ3&M5 c||gC̚q;JoPNSgJfT#"wd W_IoR NkɿPNwd5|oIz2ܙ&A (ͨ4(G@3* ?q@3* %fg1Yϝ=+I=$lٳ7sCKcG K5hF'n>hF܆ ΘS3g7)L;n;] "[h6y IoP4>7<@@3* jЌJO|ЌJx'19L<^0rj'ON^uoe!KҔgFs<@3* jЌJO|ЌJx$q3&^Hy#0a['=iD5ݰ%NF (iЌJr474޽ΘRqnI/SכAdѷW!Խa=Ysbl:^ޣ^ #6~EzQtbٯ/4W)`|xNfT#Οw}}Θv[X^xW/"[Єc?k r#g=_4ٽ[u<@3* jЌJO|ЌJxussuޤIM^m`<"[xx fo,u04&8~(}n:5hF'n>hFfӍ8cΥKқA=:S "[]=J/W_|ŘQ[z6̌xNfT#m3&Ӭ[uMJD1Of^XJ/:Y>wҫY*Mmߗ>7ziЌJr474wd]w(VBgEdNTwYҬ7_n62tRqI"}t:5hF'n>hFy3&M5J뛋a-an=Ywbo|-4Y^iЌJr474Rsdw&%d eMWߗqj>K $)̖-xNfT#Ԕ3&c\H/SZkgȖ6'|`\3Q^H؎iu5hF'n>hFd0]eu MSjsYzwY7Yw;k N!s<@3* jЌJO|ЌJn.gLS')׵8l/>m,uMo¼?ZmKSۥ ͨ4(G@3* ?q@3* zݭ_gΟާ\wȖ?P|fc+S&LaO_kJ[oK9 QiPPfT~fT@.fg1L=ާ\'7Ȋq;zjsyˉZ_gՎfZ ѣxNfT#QgL>i2;~Fqv7HF.V*镌<:WЬr Oܨ<[P/[?>^.;fzQ RÇMv9 QiPdTvdT@.]V*y-n^ɜq~᧯8ד9GّLaV`a{G~ØM?^W HMv9 QiPdTvdT@D֭Zp1MCKړR I߫\\s0?Zj[ sxNdT#  TJ'Z!]DŽo9W{dnhq=ɳLvbiu0))Mޮ_[\IhU;s_`= 5HFa'n>HFDc=0 a6oֳ6RoP[; O*z+h֍Gn~lknw{1KԝHB~Dž/>`df_䢿a 5HFa'n>HF@7mJ3vMC%ԧoVbnq:dvܫ C[֏gv0G7?i>)jw/5:Swjg#žR:y:qr3旙ӓG|wtPlfܰiJp$Ұ7$zt< mvRkBq~ƳW.懦ly̻ʽB+݁A10`ܰiJp$Ұ7$zffFZ_{5hz}POk;j,s=7nV{ssCCA08hܰiJp$Ұ7$z9kœ06X=[ɉzIzjǎ eؾa 5HFa'n>HFԔǵR!ٳ3ܝ]UcY3[Qܐ@&kܰiJp$Ұ7$zolL+/L/PB]Yr,9.Ӊ޶Tno{+uk&>7s$ ɨ4ɨ4#ITȳy魢b._TD??ϖNX7ZD ͙>7s$ ɨ4ɨ4SJ9NLoClwPbc} AjHva 5HFa'n>HFlTsnMHC]jt&> [=u\ e߭3,ҁML69 QiPdTvdTA^^+9Mӻ7:jzL^a-N/>7ls$ ɨ4ɨ4=V*ٷOWw IC4&|9ٝ|+6A {s&<@2* jJN|J0.V*ӏ- FB]jt޽Vޖ%Ndq=[g|*wFůvzf͚ oiܰ iJp$Ұ7$$dt" P[; O*}ofYn';[uup1фf$'>Xj$|Р(0:6ԹLF RvC,s:1ġ slލ`mDo{{N+Aܞ^HuH}t$y ȜPL&7 g* dV1éכB=ޘ~}vF:vժ670zO/5>5}fwO?AW'6cpc5g&Ss}֥ށQi4@ g*M59Si`QChl''S51 ":zGrj4Lbr2nChYOHj*VE1'gO$șJdNrT316NggfU/!TnۖzJrj4LEg߾B{;SHFcNov͚89zJrj4 ܹ͟z;btッE 3oFE/j`Ӧ?l| .șJdNrvig.]-X-isǖ,2P~7>Pf}}}ݻS_|7W_.b[gѫN]ܮazMSK\PfҥKS}7W\펎<˖$PZ\Öu>>\___744sVWW7\J%{!MQ MPSzV 6yǧT g* 9٥6B5v7 [* Bgl.^BM5[Z|O* 7ȜPL&7 g* In!qn-ւ.%Ԕ/">=4@T sB 3|4P>Ǣ!qzz#^_urm>@T g* 9șJSMn>@T(Z-}w,BgŊcG9Si 5@Tjrr@97nECh^x"e ͸vm7"șJdNrT3JٌqBgx<_)o?pJL2'9SișJq@!w"?jJW E* 3ȜPL&7 g* Tɓ')vf|^y3i:zJL2'9SișJUh!w"_GFBMɌώ.9Si 5@Tjrr@58"ټ9BMMmؐz2șJdNrT3*O1OQė^jBMs}P=z2șJdNrT3ٌbUp/貫]KE3b٨asaPI+`g1P$@!a(č0l|sq<̚>3ὝzR4Mn!7)ݼY{#LjT~44Qʖ 6xB͎qf?#GjPiT 9L'J,/di⫯لҥhM}A?_]=C2Si 3l>@f* (Qʖ^ `Mg|S{ +* J$'4d2Siut4Mm8w.n~# 5|ՙ3ǀPiT 9L'JGF);zj>w߭=ܟJd 5@f*M?|T^ׯt4M2Ӷ1;#l_aLMm똜ړ4@f* PdL֭س'Jٷ/~Ϗ!l_w\{ T 3HN2SidO{Q8΁uf:uj4@rB JO6 3xHo_D2Ӷqp;7f{Gn>7j: J$'4d2SiG[QXO}׮Džmay9fgfju 3HN2Sid07My7:ڶ/Ԟ4@f* PdL6RzzjR{r/fG35\2Si 3l>@f* kkqh241=7nԞhy9ڶ%=<4iT 9L'JlѶQXoZ߆Øf&.\=< iT 9L'Jth(eWjOn]ŋG: J$'4d2Si,.FD)ɓZKNuƣgv0\2Si 3l>@f* Сh(ڙoĉζk: J$'4d2SinL4MR/ny9:[k: J$'4d2Si0ٳq`9qVwNt|mg:1GrLjT~4Z[ؿ?Js&7jv{Պm,- 6u 3HN2SidqJ9MG~ l.]7saH94@rB JO6 3h(yxXY`x1m|`\2Si 3l>@f* 0f13MT>O?DZcABzgvqZ푠 4@rB JO6 3b0gؽ;J&y97o~;$sv;vwIڷߎSAG\2Si 3l>@f* PZ,,QJ_ 9\/v}A푠S4@rB JO6 3Hʕس'JIt{.Nگz>,vr=tu 3HN2SidED)t,-~5?Ǿ}/D : J$'4d2Sil_Ci\gf&^vO>~6j[u 3HN2Sid9[:M:qtܼY5VVw6M^X=l iT 9L'Jd6Ğ=,N)LLħ}Bv0.~UF9?_{B24@rB JO6 3Hn]rHxc}uuq[,qsj:Ǽyv*{d̔Xu2Nz R m dl ExC9S}~ǃ72~>o|VVrbcc}9 PJ'4d*Si~ smri3s^ۇȿЪ/sm' iT8L&PJ{^^ٺ5M32#G2;צ- ӌuz˶֊4@e* PPTtLy3GKڕ+Wڟe-/gv6gllolXC4@qB PJM62(zn.^/M3<={ǵ<r +m9-iT8L&PJBA^=Mg34mr`Nݻkski)}Lks2(N*SiTPsP/gݺlۖ#G23>qZvj7oέ[ms2(N*SiTP?~/oglؐ2:'sznWON֭:[>^.iT8L&PJB=?og˖4Mϋ/f۶̥Kٷ/i3iS*k7JUPi2l>@e* P\P?~W{w ٶw MJ (N*SiTRfg3=C25;3:17{Ν PJtJ'4d*Si1 t)4?嶗V?V;T8L&PJס~0|}2<1Uf˖dnוx* PPTtLP?~W311H{/mo 4Ri2l>@e* P܀zi)ygx8McV}zܙm_? 4Qi2l>@e* P`zn.gؑ4yf34ɜ9Ŷ`Wߩ4@qB PJM62(S|aFG4/gz:WdenTJ'4d*Siꕕ\7޽ٳ'wg|,m_tL7+ /T8L&PJ'Կ~_g4Mקˆ 9y2}1U*v`53Eε0͢ՅƴX,*@A]=x ΦPڕō7RdSZjsdl(Si8(Side* 'x[gO>[[㣏jN~wqte* 'e*͜,Lcoo\4Vu e* 'e*͜,Lxjøzu??VK"TLL4@P_qvmln*z??.__]ȀFT NT9Y>@J qx8z\>^juFָre쌛7]7nq88GGK 74@J 5@J3'(Si8>3NjW_/n߾=|?O?y2>~Ó;ww䆇߽|/_7oe* 'e*iYOLT NTe덍s]8 @P4@J 5@JG[څ >N|'e* PqB P,k^oll[)OLT NTŭgkss< 5@J4@P4s|2j2(Si8(Side* 'e* PqB PT NTLL4@P4@J 5@J3'(Si8(Si2j2fNPqB Pe* 'e*͜,LLT NT9Y>@J 5@J4@P4s|2j2(Si8(Side* 'e* PqB PT NTLL4@P4@J 5@J3'(Si8(Si2j2fNPqB Pe* 'e*͜,LLT NT9Y>@J 5@J4@P4s|2j2(Si8(Side* 'e* PqB PT NTLL4@P4@J 5@J3'(Si8(Si2j2fNPqB Pe* 'e*͜,LLT NT9Y>@J 5@J4@P4s|2j2(Si8(Side* 'e* PqB PT NTLL4@P4@J 5@J3'(Si8(Si2j2fNPqB Pe* 'e*͜,LLT NT9Y>@J 5@J4@P4s|2j2(Si8(Side* 'e*ul0A(l`+X L T NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*~߿_'qB Pe* 'e*ͳ>Qu=}OLT NT~y?j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4N05oD\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\OgDѠ<΀y9aPT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB P<׆8, ?hj2(Si8(Si>I NTLLx߷U NTLL~&=_/8(Si2j2u]y6aY/ @P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,حZG |6K1$Y 6})UV)PqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NT|>eY8(Si2j2N8(Si2j28~>?'qB Pe* 'e*Y}?Qu>?'qB n00c[N{XvRl )e* PqB P{sd'qB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLֱmM8RXc5`.p3%<j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2q}udOLT NTg}ϣz | 5@J4@P4|>?O{^O/8(Si2j2Y}뺞>_'qB Pe* 'e*~߿@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* P;u@ e3j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\ Ψ\̥̥|23j2(si8(si>)̥̥\ Ψ\O(si8(si23j2\SQE v;7d]M/΢(( 蟃f'Oj2(Si8(Sif|2j2(Si8(Sinu}^}u~qB Pe* 'e?+^pֶmq\po< ڶ8ۭ׾oT NTLg_ fxT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLT NTLLʾحcۆ E9f;pH]j\fJxqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4~<- 'e* PqB P<8~u]g NTLLyyz | 5@J4@P4Ϻ8G]?j2(Si8(Siw_yZ>@ NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JTةa[-qF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. ge.'4@Q4@K5@KIe. ge. PqF P|R>@K5@K4@Q4PqF Pe. :m XcC@} Gqna 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2q}udOLT NTg}ϣz | 5@J4@P4|>?O{^O/8(Si2j2Y}뺞>_'qB Pe* 'e*~߿@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8cm Pl‘"ubs)qX<@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8(Si6Y>@J 5@J4@P4,LLT NT~y?j2(Si8(Siuq?3'e* PqB P<@J 5@J4@P4,LLT NTMPqB Pe* 'e*&(Si8(Si2j2f4@P4@J 5@JT NTLLde* 'e* PqB Pl|2j2(Si8ةbaLlU<.PJKIe. ge. PqF PlR>@K5@K4@Q4PqF Pe. ge.&4@Q4@K5@KIe. ge. PqF PlR>@K5@K4@Q4PqF Pe. ge.&4@Q4@K5@KIe. ge. PqF PlR>@K5@K4@Q4PqF Pe. ge.&4@Q4@K5@KIe. ge. PqF PlR>@K5@K4@Q4PqF Pe. ge.&4@Q4@K5@KIe. ge. PqF PlR>@K5@K4@Q4PqF Pe. ge.&4@Q4@K5@KIe. ge. PqF PlR>@K5@K4@Q4PqF Pe. ge.&4@Q4@K5@KIe. ge. PqF PlR>@K5@K4@Q4PqF Pe. ge.&4@Q4@K5@KIe. ge. PqF PlR>@K5@K4@Q4PqF Pe. ge.&4@Q4@K5@KIe. ge. PqF PlR>@K5@K4@Q4PqF Pe. ge.&4@Q4@K5@KIe. ge. PqF PlR>@K5@K4@Q4PqF Pe. ge.&4@Q4@K5@KIe. ge. PqF PlR>@K5@K4@Q4PqF Pe. ge.&4@Q4@K5@KIe. ge. PqF PlR>@K5@K4@Q4PqF Pe. ge.&4@Q4@K5@KIe. ge. PqF PlR>@K5@K4@Q4PqF Pe. ge.&4@Q4@K5@KIe. 8GymJhʏ2Z ƚV%1 c^xq4B fӸ,?䄘23=|3ٸp!^XZӋsӉGcj*Wo~~]K_[DZ^_J2SiT 9Li'J_ѣs'.^阜(4MLLqjq1j'4@f* PdҴL{4VW7cz:&'cx8Jtb~>>$j#4@f* PdҴLlmjQ.xO^1C2SiT 9Li'Jck+VVbr2Js@\_|FW{5@n* J$'42Sixcv6&JiGŋ[[F[ 5@f* J$'42Si-\4Mb~=>lZF2SiT 9Li'J܌8|8J19~T!4@f* PdҴLލN'&J1?EMN۱QvB Jd 5@f*M;|T{$nތN'FFԩXYj?]J2SiT 9Li'JBgQ+g߾8u*nތwL2Si 3\>@f*MJ1;=jT 3HN2SidnG)LNƷ>A&4@f* PdTvY. -OحލN'&J1)رܬ}H2SiT 9Lٳ祪fffjg~.q`b2PLLիOoep5@f* J$'4u}/666V{ <vRLIMLf5@f* J$'4uu={TL5 O67CCQy's5@f* J$'4u݅wvHFnD)ygh(ǣӉڵX^r%Ν'ј˗cq_ٳ1?{ťK13CbxG~ٻ7nތPd4@rB JN. 3f@=y334QJt…u+֢iWv9qd814T?ϙr%66vz] 5@f* J$'42Si14}bf&׫Z[~ssqH ޯӱ^{S5@f* J$'42Siˏ?lR&7bcRG֭طVs7/ 3LjTvr4׋;wb(뱱Q{#Ǐ/?ܟxRjT 3HN2Sid ヒǣ3=|^u숵>ڄ 3LjTvr4ɭDZc4QJw.jڊ7blsPܿ_{5@f* J$'42Siz8:(8wVĩS1:ZY4M\6ZH2SiT 9Li'JӧFD)j/"NX\c*<+qB Jd 5@f*M;|Ti'㣏bc ?JN?W_wPd4@rB JN. 3&^/._SU}ud6,)HQͥ`h0( %8211o(kuw^/~]ʄޙ3o/?nތ`r_񛛋{j_>B Jd 5@f*M?Y>@f*Mt2wB|}F>.<i&ow++/Pd4@rB JOJN\Mt2?o>by9Ο`_]Y}vDŽ 3LjT~|T>7ވR&NO>7Nܺ_}U. 5@f* J$'4d4`t^=.Fҝ;1='nX\}jg 3LjT~|T*<7ߌR}SSNktG[5@f* J$'4d46ŭ[qdk۫}-6"~^}gۄ 3LjT~|TI瘛R}]Tlo/> g6־=B Jd 5@f*M?Y>@f*dk\MtΝڧr8qlc GD2SiT 9L'L T\O)-/w;A2SiT 9L'Lr{kɳ籰P&4@f* Pddtڵh(7js{_ 4@f* Pddtڵ(73a#iVuW^yGPd4@rB JOJӑ(g/?sslibiyD2SiT 9L'Li~\Mt^}5ޭ}$xN3;۵{JB Jd 5@f*M?Y>@f*M~%ΝRz/A#q:YQjPd4@rB JOJӢ7N`o׾[_jQo;4L2Si 3, 3[[1;t.^{jI%kk4j׾p 3LjT~|T緾Mtz+vvj_Hmlԩ۫}!5@f* J$'4d4i}=JvHc8sڟLln־5@f* J$'4d4c{;(7=wԾ6Nlyo _Q۞L2SiT 9L'Lyfqt曚2ѨU)[[qt;lXY}_5@f* J$'4d4ʕh(7'q4˭MڇPd4@rB JOJT8{6Ji]Z*7yDԾ5@f* J$'4d44QJkok Xqq?/L2Si 3, 3nߎRZ{_qU#19wߍѨUjT 3HN2Si2Sic8RZ{gf8vC=q͡~q 4@f* Pddl bq1F'qL=|hcmu\}P4@rB JOJVVvLc{866Z[㷸X"L2Si 3, 3mmED)-wމkk[\yPd4@rB JOJNUlSg(D Z1ERA QQQQbM[$R}RBI PGz=|5gϐ5X^RǾ ݍ'f{ƍ"4@f* Pdd 0kkc߄^]0k<{ƹPd4@rB J'Jw>(J`VWc62t̙ayee+5@f* J$'4}4Ϣ(u{,Ǿ ݻ?^zi}#_2SiT 9LLoQSkܹ3e_.^`~8>Pd4@rB J'JލRZָ~}{vgc=Pd4@rB J'JgY|T?ܾI4c_4ZW}>kkt`L2Si 3O6 3tO<4M3M}]~>Wi 3LjT>|T,.\R⋱oK۸< 5@f* J$'4}4sc_|i72=Pd4@rB J'JQk4kkc_rlg2o9C 5@f* J$'4}t|3JiW^lBvw^G66B Jd 5@f*Ml>@f*ݳO?RZԩ&૯G׏B Jd 5@f*Ml>@f*ݭ5Ji/ܹ3Mه?ƍ'4@f* Pddz(u^0^|j&4@f* Pdd}(u 'b>jT 3HN2Sid2Sf4͹sqp0M`P>iN3 3LjT>|TC׮E)M/c_tKKpΞTB Jd 5@f*Ml>@f*ݛ_(iƾw s$L2Si 3O6 3G)M{cFRstfG2SiT 9LL[QJ|T~=jR)=L˺y(4@f* Pdd'^L&QSkܽ;5 ݦ5ۭPd4@rB J'JHgD)Msw>}M&q|N2SiTح+3I?55,/BjMͮKE%n(еV"-F]$]VG OдbTȌu9s]CsLjTu:Xn>@XO9Ju»vPD4@pB JSNzU5p'sQφ ׫^SuV׮뷄 2LjTz߿U6nXk*O̶m9J39Y!|E>s?$4@d* PDԫ^zU~ \ 9r$Ti6lȽ^ǀ8{6Eե{kPD4@pB JSN3>>kxx8}:]S4 4T߻Ư5@d* J'4D҃aR@@d*trJ(u//QjT 2N"SiLnΜR)|Dǀ;~*U_և 5@d* J'4Dҍ*ͺuyfc@8u* _ƕ]\' 5@d* J'4Dҍs9S> wkז_m۾B JD 5@d*M;tmޜS*?}8W(LL"Si 2|TsJg׮g/fQw 2LjTvr"SZ^##9uk> ~?oT~=UjT 2N"SiLjޜRW`MMЕyꩫ&4@d* PDҴJ7K/ϡCu]l'OiB JD 5@d*M;tcVuGyPD4@pB JNn>@d*,yڜRy뭺׭ݗ{ˏjT 2N"SiLsJgӦ\5v쨴+cwV"SiT 8Li'7 2n~? Dg6yJ {ejT 2N"SiLsJܹm2?_ug-aLjTvr"SXZ9cGgW( 7,1LjTvr"S8v,T~ٳuէ˯L^=ownyۏ̏7_8;8yԅ8dwpw}\bGd336s뭟5@L>"Si 2|TeKNE>~3Pї{~80fbGgUTxV4@d* PDҴJ7TNLL}=o.n?ruݟ[XЁ59=. E-^[nxժ 5@4>"Si 2|T:~?qGNS>r+5NKuA137o.W榛F 4@pB JNn>@d*hNuW^Z\Gί 8jns#^:u\b/|yen'\4@d* PDҴJwPN~[,_,ίm֤s?‘w{翸Tlqc[ iT 8Li'7 2lf&EN-.tuٔrNf4(Pf4XiUƸMtkc4D1ِ:z9mHWi9"]hJQ08 {t U問'r;Ǘv-~x.#NxM q.: C '4c8&t66Q![>9?UgT|b8 xl\Z߷a>Ϳ{%+ 1+ ?q@3VZ߶8fjJ׷ß(J87YT1m66Z֘z_;o#tvam#{ Gn%+ 1+ ?q@3VZ4;vXc\kk5?+Aor:N+'f}PNgVΖ1֏'ic3Kxq+ 1+ ?q@3VZYkc}:}%d^+ʩt+'$](q&uj=DݪTvf޺%hJ+kq6M}`D-L&wʍ' 5?-ԏ\,oj3y:M,)gC 6 Qv++5'\@3Vc@3V~f7n0ƸpiR9%Ň.URf0ʎ'7ɡCkÇ;ONf4(Pf4Xi zz1.ٻW曆A((R*]z߹BeOGgZڐrqlq32"]u4c@94c'N>hJ8E_vn:FsA"?E-7Lڰ^'-C-ybOglj܍5-7=> 9sF4hJr 5hJO|Ќu CkKmtr˃qm|zܩ -ӬviaeϟZH&G.W\sݖLOKpXiPXiҲ8O׷+AoxN-]P.y_9kœ|"jCn ݳ}eV(iЌjЌ8+-Tahqؘt6j& +Cԍ!MBeeß7k][hq}']iЌjЌ8+-hp0I"]]/V_QyB1ԥI+iح(;TnDݬYJ_|*TBAV"!T(*,l-/@QE oS0$-dvYvwfOWr:kfs gDLO.8rhJ]7J,mE(]4hJr 5hJ#+-hp;>)n>o)x~U2T(]K[ƋfWźt24>9p@$iЌjЌF:q@3VZԔ51٬}P@"ܘm)x~a.>khD%yE tuǞ6碕~h<@3Vc@3VXi)<(pZOA|IR/82];b&';@rXiPXi74cEݺ㒾>[Kk"Mat-L?{{\H^k_}ub,f.\<@3Vc@3VXigZcs߾Okc8N ̝t;qEsXm&7yJ <@3Vc@3VXn8鯏t  mR᛹HNme~kry1im]XiPXi74c^FC@sGFW"9ٶd‰UrmY~hx9 C H'n>hJbf|t_Jt$v~͊tgzP<>/36&Ub4hJr 5hJ#+v8O>zrwrYd5ySr{Pfwf1vjJiЌjЌF:q@3Vz]Ƹ7l$] n…n.!x{v+55OT6ttmiݢ35f?C9\f<@3Vc@3VX35eq̡C_7s6=?pΖcz).fKNurmiݥ֍/?{blbך@Xik?J,ei/s:+1)^nBʠi3NtM6T]pg⶞ ˙կ|Kukz&$@>>o>Ĺs r~3os r~{Ą$٣f?kReU4uԍڙP4?mntpΗguվɜs.Bw9997vιAίcwιAίtjw$Ϝ:U韵,:7[5rk/-8 NQ^ 99lFF4?sEN; W9~_=Z:i&ݫ}B/Xw9s9s97(m۶MPыsι $jw^yΦM_)^['JF~m)'}o~-F6[_/Q7y7C颏s9s9snP:x\Ɋqccc~_qz[i loC0I>qOBR8_}.DmTḺ^jr_[o}{oyG#Ӽ4oG7|42[ lohd#?9F鶣6LG7|!?|rYIƌj~'!\]fKF[sbN+^[_M/hs7I7*ݫ>p6R'W|J{Q:##=y6W:|42+4xd{G#Ӽ lohdW<2\mi^4xd{7 J6Z1 W\Tkl|\JѧN+^-_6#k lx|hb6JFy#>lohdW<ᣑ LGyˢm>+loFׁJ 1 W+{7KF&tQGZ+^-w^+ nK{h|l-J_*6thdW<ᣑi^Fy#>4xd׹,Ӽi^JȈ{u]fK~Ɲ8W;}L=}Cvmܺ;X߾ѧEgOW:|42+4xd{G#Ӽ lohdW<2\mi^4xd{gڿ_IuZ#?-_6_4}.buMo:4xd׹,Ӽi^(r]|~]+ܖ-׶O|^⭻}^Ex[V~[o/ݸ`ybݽEMO]W57וcv-thdW<ᣑi^Fy#>4xd׹,Ӽi^Fy#>4xd{G#Ӽ LG7|4ᣑi^4sYͧy#Ӽ LG7|4ᣑi^Fy#>lohd{G#Ӽi^hOGy#>lohd{G#Ӽ LG7|42+Fy#Ӽe6LG7|42+Fy#>lohdW<ᣑ LGyˢm>+lohdW<ᣑ LG7|42+4xd{G#>L:E|W<2+4xd{G#>lohdW<ᣑi^F7|42+u.4xdW<ᣑi^F7|42+4xd{G#Ӽ lohdW<2\mi^4xd{G#Ӽ lohdW<ᣑi^Fy#>4xd׹,Ӽi^Fy#>4xd{G#Ӽ LG7|4ᣑi^4sYͧy#Ӽ LG7|4ᣑi^Fy#>lohd{G#Ӽi^hOGy#>lohd{G#Ӽ LG7|42+Fy#Ӽe6LG7|42+Fy#>lohdW<ᣑ LGyˢm>+lohdW<ᣑ LG7|42+4xd{G#>L:E|W<2+4xd{G#>lohdW<[a1- 7Rz3jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj_^rwzzϫ%zZjɵ%=\^jɵ%=Zrwzɵ^xj?gC-;dՒkc{\W^jɵ%ՒkK{^-;u%=\^rmxS_~PKN/YyZzZrwzɆyZWKq]wzzϫ%z\/·O-;dՒky%=\XQPKN/YyZq^wzzϫ%z'0.e{k `1&XcxM6Ã&l=54|`1<Ml`l=5M.d{k `1&XcxM6Ã&l=54|`1<Ml`l=5M.d{k `1&XcxM6Ã&l=54|`1<Ml`l=5M.d{k `1&XcxMaMc5̅ ' ='R@x|`g|`q<I03Y>08$x,{c`q|`L=1I0&ǃd$x|`g|`]YǣvrvfIu`w]Y::o.~x|}}^:͒y |`{^E%v~zm.u`WJRG:HRG:0+%vg$vby3y |JI]I]X>p$utޮ$utޮC,R::oxF::oׁ!\)I<#Iuu`WJRG:HRG:0+%vg$vby3y |JI]I]X>p$utޮ$utޮC,R::oxF::oׁ!\)I<#Iuu`WJRG:HRG:0+%vg$vby3y |JI]I]X>p$utޮ$utޮC,R::oxF::oׁ!\)I<#Iuu`WJRG:HRG:0+%vg$vby3y |JI]I]X>p$utޮ$utޮC,R.@ CA,J̅. I9% ?h2wuI2wuOJҖsHҖs%|R]G]/|e=ex-sW쑤-sWK<$m:`$m:^'%i9{$i9>)I[#I[΁x>II2wuI2wu\U}m:^28s8{uc<[kqޫscZ;^c<{i>/Filter/FlateDecode/Height 3148/Intent/RelativeColorimetric/Length 364012/Name/X/SMask 25 0 R/Subtype/Image/Type/XObject/Width 3148>>stream H ٭ת; ,0{1jVI;[43lAU]iazztiV`j^l/l=ˡ#+EO41'GO~|vdcmg\/=1oIN._XY+6]^{ֲZǧaj*LOF# ޻q#LN_ϫWCu?|qjyڝ_xTﮞ\JOwfx_&&BH\OO8w.jYժwV_Z!ѻoxfo+}e93Ik~{fl`__(2Rיu.~T˸`+6\wϵ"o ==!I33U#[ƍ -CY受62]j[beRz=$>jlj DVltHwfn/gP +V6~]g*-,Gp!$&nb"r [l pt4#6_4A%6XY\X=?q;fJ I ZFRzz6C5r!ݼFH\. S?<!…$)ob"B @<4C>r8j+ϗc$syK3yZ4@KuWYBhb|oW;%O6aXېe&&}@ʴ4@jᵾ.Bo|/Дem!@<4m[#6tbDF4@ʴ4y) :2XTuum'\Zjmt[O9 ~SS1vךc 1"p#s eZ<|iiuך':EUę!})ː{"1|u݃6nGX ۏiiiR4rQasr>B>j2#ĜkWݙ31§a/,ƈuiiiRΧZMYn so̿ۺ5R/})"3RɓHH'+EUݫ,GHcGS{ sh\ R؄/,ƈiiiRR6EUܽu"{衦,7|͉`N Y70# ;&t<#"3RɓHHGEUݛvk2?l;@ 4ػ3gb$N؄殬ňgiiiR7Ŀ-Zfg ={9 dhz:|HxR؄3o.ňgiiiRdQawtzxMY\ZgNv;-1.,O_Ϙ)LK$Яo::[Tu=9w~j,orh1@N \CC>096x,FJ =s eZ<|iiUv#/ͷ,olh1@^mC`.u'o7RJ)LK$Wr[^Ǜ rDbNھ=dK/-sݵx9rfNLK'2- ^9r7BQawoWڋДe^.Hi [O,ۍʵ}H)fNLK'2- ?Uv#/ͷpϞ,Cnx\1@CFn}a]4^P\)LK$no7=IQwSs+ݵ6er77n{b0w_<{6^ƒн/(@iiiREQCEU˭|啦,CVsΜr66O̷8;KdɜH&O> eZ quĹn쵅s7e;{\2ML,x {vM=6/+@iiiRw}Q?lQwׯ\[k5XS'[ :sTi{9gfm^"i sCC!#"[o[z'.MޝȜ9 2-M|>@ʴ4@n.^,:_^N)ːzP3̍,]"&t|1RɓHHE}vv갻^,7|<^"֙@vY[Xڷn E5#.@~iiiRwsQwךcsEU\+E,CԩB˜2wo0r=/z/nBʪ{kH 04@δ4LKdEߨ[eUDީNo}ccuu"@B4p^nlW:q+_n$ <4@δ4LKd~EOWRDCѝ:"@B4#nЭa<1@Ø943- JQVqdȣ^\ӛy.iW#+$vwKm|܊>|<1@Ø943- FQVwiwCѵ+)$aN ǓgKMV9HIiiișE}`[UyO?C80\/I-}˕ =rMbNLKL^>@δ4@(kEYE_?\n!fgG s`…7><=[Q*vB$ $4@δ4LKdne}"SO!~?E43*fۗ E.36=`[]M~-YYoiC49 3-M3y9٢>խnZ:T{++)9 i|@δ4@YVY-(_?HB}}h#`Nlz՘n SlK?{a1vB/6Fhs gZfr2߽VYQOn˗v!^x!]426n؛Jg[뽸<ϖFhs gZfr27TQeq>/NCvv-i:x4Ͷ Smщcg: 49 3-M3y9+*z:;v,]41nYzv՝NHiٕ<'4@943- azEYEwI"ݮdNKcܹTҽFSEhs gZfr27lQ3EYݥ_CgFdNK'~?ImB􄾼$:@3943- azdU17ntnbĉ"zcov6ImK<ǧDhs gZfr2QOeqꬬ'Çbn"?uD{$yҿ=7w$=@943- ]kUug>_I;׮vB--%Üヒ\z;}zys7qypFiiiș\\QO_,*~w~1 YzwЈ zpqx&0ri&/ gZ sENQVU#uCߑ#Ƀ ˜j{wۼGfؖF̄޼:`NLKL^>@δ4@梋YUw6MM!Rh1vXu?$öJ܄\l,:@3943- 袾/*➽w6]Ts3e^{0(^s PC:L)L["QU j5/ғK@J/0ӖD2@#%8NBU@p|?YzŽ: /LLXۤݔFTv ip)dHipIP{A?1P^T34^64^^\ SYٲ:$u\FJ#x2Rgԧ ̙Řّjaj4*9~XڒUO^Pe4.#q&AytQ̌VJ2gr9 iU,-YXCҿ^,-M2R8ӺyZ1Rfuv*4̌i ;R(5"l *VdNHi$/\FJLzcxJ1UWjs钎VQ~ʷ`8ͪEQtuH4F2e480,yA(8.Z)Ǻ: M<~}_LV弸H˲ ip)dHipaP/#o$G8nZ)q=huSW.}$o?x*kэ@H&^>ǙO ٴ~ю R35߂74쩯O^n0aJ*t}fn=$u\FJ#x2RgԕZ*=ѼYE;>JYv=P`O }0%kэye4_6:u\FJ#x2Rg%W L*Kv/GRza!4bpPk& "ݘEQe4.#qVz͟,۽R歷N@+5tɿkҗQYܖݎ: .#L|p) S%/sp4l,^lVVtvN@5oiIQ֩Iޙ?nGH&^> U/esΪŋ^RF3>;4a[G7WE>fJQe4.#q:}`R#ڶvUL)9u*`wih]:-y/ZIѼHX7@WNHi$/\FJ,5/e͒^ORFs~;к%/VJ>!.S ը2R8AUK'm2~ǽ <: vMQ$Ŕ[E\7Y04t14F2e48nP)yA(߯[jUVJ>Ž#<: ;aGG_ʊt*J[_DH&^> r @2W V.jnmM hÎih] xO h7>~ }׋_DH&^>YYP0 ,o/0VJ2}~E8!xsSO]:_.C\.7<d|_#N@[66>ε8R:锨HV]: .#q\nxxNy, 8.lZIpgGIGv ;Z{ߊ)$.nZu\FJ#x2RSPG5 BO:MV٭(3l3$ H^ji*!`cBC8JZ"9$!r&:;z'Y 2/윳9Kם}>ݺUk$@`N@n"u_ZV3zYg9 /4@9wE=(Ie1xC5F?sn7ܵxKek%^[s4&^>hFKr:k?5F0]Z/m[c$i6= tivM8ܵb.;%^[s4&^>hFKrN7މT_}X1[Iff hiyE۳qҿ _̷=(4hFK#L|ЌjǜEI*Yq;3ٖ.r-9 /4@9E6F$~q{656fs p1@Z [zl%Eb~l-iЌFx- y(#YTYqq18@Ș 68(xǏ?_nvީ$5ٖ.'O9 /4@9E֣$.NOmwtwp1@lxX2ı -w.ҕ$K}iP9 /4@9?E=0QTS G'kLyY?syG26c&;YwqliЌFx- )kW$2.t]1\:bNŋ,{_i ٖiN'鍅as4&^>hFKrފzzhU\ndvn{8@ lX;yeD272>rtǜhirTFҬ 5F߷y@bN@/oGo% $]^8 y&'] Di70`a߬ȶt+7Vj1@3Zaf4(糨?%,g>o9w5?FaN@^zI>Μyؗ=d]wFiЌFx- y.F(do8/>@Xлi^je-mٖ.reBiЌFx- y._\XTmvqzҒckLOVmLaaN@)^~Y>lg3'j9]=-s4&^>hFKrqw(ϊ^yk^{œR\{?뿥 EBP9 /4@9E}(IM׷eckLO)t~)P0,v&&6lK$\p$hi^\TZՎm[cz39 e9vWL鿥V^~Hɺ#@4hFK#L|ЌRԇ5$d+λpƱ5F= i(K46x}i}n"$4`Nf4hiP/EQ {"sKZS6t)'sJt|7^_ZZeD72>s'hhi\,JRA_\85e99 %yqOotgWK;-]й;-0@3ZWQ|'JRALdގ<~#Аsoxb1\g^]~~Zj9ɚ;-0@3ZWQ_oGI*u?G=z#쬟3<ɘPߖ"nS}loVsBT#4hFK#L|ЌUyƧjQ {e;8#[Uq?>9)Lk5T(X5̸ R괠HAƘfM0PlvϏsv!ӽg5hi/4@9E=y=Ytvgm{z1´Z.4잙|ye[';Ǽ5hi/4@9E]mu8oԣG1|K9 'olltms:`p{QF1@3Z^fjQ2:Ek0Ǐ;;@h4a~lKMV .i(joQL|ЌuՉDC_6ݙ\H2hFKrzL=YWMI^ٍB lCCOZZLMGfn75hi/4@9 EEq"_ԝYr#ILAonNKKO7sv푯%E x*ZhiPNIQ_hDq"Hi<;HFAQ}$/oe%-~Kt#5hi/4@9%E$כ.O8_}FP8 {|Gf-]W`W1@3ZhiPNOQ^^DUw;fq>¡ `~+xyZVm<]}rUiЌF1@3ZSԷV(Nd_Ny5fuv iiXHv^z錒>z!/\mnl=v s4QL|ЌTgQrBّ|cq*enU- l5T7x%iЌF1@3ZSUԧoFq"b9ri#ɵknU- n4tTUKɽ}iЌF1@3ZSUԭNirʼn,I3ss5F7P]$xOr)alJjeiЌF1@3ZVkY)N"Q>͑Yc$C7PmlrY34/ȗuٖ48Ühi/4@9El#ALf..H28<!QÇo;{<2`m)t9 0@3ZhiPNaQZI87\x5FJfCaK@j&y۹~7<9saNf4΢;[D7\H29@nv7X|dK[MiЌF1@3ZYԟhFq"Î x#Ib :[65%y9q<9,$k-bf4([xŒ|z…k0VB l}$_zyND[:_}]Ühi/4@9Ez' L\cq77xmiX}K/ovBC6/`Nf4ڢ~ʼn jQk<nS73;s:s5@0@3ZhiPNsQj'gMO[c)|^]cRwx9m{9 _Q]g?T|;Uiε+A-Iq"@P" bI L]4ʴDJ͔wƞgl^z ӻÃf4hiPNsQW,z5֘_xHp :^y'NK6ZgOjx-8@3Z\ԝ^r-r=nAik@whk6m:|~Vg$?7}s4'^>hFKrʋzji+r?r;4dؘv$*- G@K4ժO(/ tq,G}gzs4'^>hFKrʋz[+~9Hl.]r@4mOڡAޙ3>?a-]郛3= 9 ҈/4@9E]d+r]&V$- Gۧg 2k4|~oܖhv}0@3Zqf4(I\p'nv:vr#rMRpݸ1+nagnϞ\uqÜhiĉ~>[K\p[݄;4dꪛ  -rs/ןtqj-8@3Z \n$Y.ZB..Zcwv Zbp|饩V=[E]F TiЌFx- QxI\p.sNLXc7;2,0];>._zgx]٢.m@9 ҈/4@ ۳dyg*59?ij^je^ O 4 _Huq'?BĜhiĉ\(Eג,JYleJ#)a H|]9|֦`Q߾D-8@3Z Zn$Y.?v)kmyJK@$39?ג-.|D-8@3Z W%Y.NeԯMahJK@$M̛lQw|V@-8@3Z [$%Y.ێNMYc;P-xp楩mlQg@-8@3Z Gn&Y.8Svz.>}j1uv4DXzi*\z+uq]~iЌFx- T7WI/[c8,jiǵk™e[;s%ww|0@3Zqf4(PQw{6rٕڷ?tH-IPK@TFF$3otwB]6Ǯ}g0@3Zqf4(VQO4,ݛ[>zd  ¥w֮-z{?rQef#IhhK@$FG/fg=//nGZ9?_iЌ_J%FFF|?>-+$74_k\F-bΝsF4ٗ-ԮW,Ywg}gz84hov7U.]oE3Au$$;*HQVJj*6qDA!CTj9saN3({?vuF[K_[lW7>Z{?TvGeC1{91hԺ- yPogIdKqvq'<+՝g2`- &&&N8Ν;ykݢ%&EgQ{#WQ4AnZ<[t&՟[Ŝhi/4@-RT|]C΢V* vlYRnK@4Z駷^|~ōۤc0|1@3ZhiP(IwTu#8ΒХ[Q4!{wQ=r.4hFK#x- ʵtQߞYjKHzuur#8P[O=scjBf~oA<řGޢ-|f4(E;0JR}2jg5F~qlq ޽63>eG&o~TƜhi/4@V/깥ڎb˨oai^ze^*zK@~{45ؖJ޾Y٨ngSޢژ-|f4(@Q_5%E91.#/olv>[mQݸZœhi/4@0WTpN.: Y.[cǝB- z_yǶX9/ Fuzzk`Nf4\E}%2端Zcv[ 0ZBdK-{dydT%o`5iЌF>@3Z +QniYI֘gyFK@Vm>hj{/:qyVc VÜhi/4@0@3Z jmI1J/T\.m[cWm>5wkiFZ:cQt*Սby~gzs4O|Ќ+w$/޿#ӧHx- !`KpkVL67rhi/4@zߏ$YxrƱ5FxzI ZB2p5oqA6Z-|f4(^Q/,()FI{T:PkKd±wY^L]bszǜhi/4@ zٙ(I e_HPժ~rA4c-w횫YL;d=4hFK#x- YW.DI*/enܭ[^"p!Ȗ`lmB^Vw9ނr9 '^>hFKruYkKdCk 4aS-%{rM[m+b-90@3ZhiP.Ԣ>~a{쌯۶Yc6}wjWd?P[°,c;2V;&_c(HlBݸ@Wȑ&RjB5NDI\UЊ6|@D$&v0 ndYtߙߣuwmaws4'^>hFKre-AN!g5F*^+kK@9ү.\zVʊ/_wӺ߯- ?@3Z+kQ'^X X BH24TȽrW֖r詥ggKooΞuexx]Nv71@3Z~f4(W>3]X3<5efq- %SKZ6 co7b=)^ZzZƜhi\zja+bY~At yc# o%ni(^[zdD>v[lOv*u lcNf4hiPEjw*QHB>u#IV- %kKjU8fnx]w?.ncNf4hiPE}Z=bY*z۷1̸@-} C{_|9oF;vws4'^>hFKr.긙T8gBH曅 Gniw ½_z5׏_n]%-4hFKO|ЌJ_箯Q,K%[;o#k$ҷ45qK߸aUM>'=&\,hbNf4hiPEdŁ4#3 7ZZ3g _oikiZza<(|{slN_syf`>jp7/1@3Z~f4(CQ_mQ,΃F'1=ghCK@J 6 %ooVW_+475v - ?@3Z󡨗7ڕh5bYL=kL9|CK@J+Y}{35gq~Fws4'^>hFKrufYvsj9ͦKȓ>[-ۛ7/)v7Y|œhi?E}ZŲ ^^K:>~s^{rOK@?ʤ_yEv~S},Txy=)z~`Nf4hiPΟD8m9>xd#Kȟ~IKDZ}9fh(o4cW]iЌx- yUCS e^5v\^;:j]^ G^4ZzfF>^x!5~fR(;4hFKO|Ќ*Ie<"au׾5F!ȑW- }'Öa(~_%IVԳv͙zas4'^>hFKrD8mg5Fsv)_m7ΝLF[[iv7߯ƜhioEp# XCjN30`ٱ[K@ɼ%ر9l]v9 /4@9T#bq.oղahgbͥraK@ɼONZo?ʋ9 /4@9zy=Dq MK뉛S_z#Ojss)xG2oQoWդSʊ9 /4@9?xD8ܹb#ѣvsͱrgK@ȼyG>ΟOSfcePFiЌx- YԭvW(fuɎSgg126R_dssvq1 7v%֓?@0@3Z~f4(mQ}$bq>o:;121X/d6 ĉ'|3>YP:iЌx- \G'ׂ(䚳; Xc C^Y@h$aNf4ՙqhFKr;l&w|,9Z4kuK|utlEuͲxc'8Ƙ-lf4(GQ8Y BY_;1ahiЬ-}|%yͦ_T+]KR1@3ZhiP1yo Bq>tym[߷cY[RZUʍ$(N#+4hFK#x- Q;6ꁡ /U5FW_uz*1Z4sg'_[qT}+q߮s4M|Ќ(gQPXo$c~D>jywgk_ j=1@3ZhiP~V! ^ [au>./ DKfnZz|\>V_-gv-s4M|Ќ(ꟙyA(ι/."i]^ @͜;'_-;yoUY7~XK#4hFK#x- QԿ=RPkG.x#I_3T#Wիy=o\_Xm9 &^>hFKr/=ozAHcgF}kL9yٍhieKd$Y_Z#3R_0@3ZhiPU/ ɒk1uƱ3H>}Zvvi7$.m s4M|Ќ(_d9'Om;v~#⢳^Z/~}2?UI 4hFK#x- QԻ\Yuymg5ܹF4h澥{Ov6jՍj}0@3ZhiPVk8,'&.={Sw\@ܷt"Y} go,I>UI 4hFK#x- Q{^r  ѶS/^p@?Z4Kϝ 9s/j!N ?@{`Nf4EE/eikL9vفhi,.lGd}Lދ3;B_=0@3ZhiP^rtW9;k;o]@joi _ngg^/$cw@`Nf4EE/eyB#HY-=<,~o>ty=2*_I?viЌF6@3Z @C#EgwvuYc$3ԇmA{5Ǘja9/$O1@3ZhiP~WfV #7GZc9{nn9@}hi,ݖc!cw5NRZN ƜhinnnҥKq|P}QX BArCJ7ް6vq&Y-}٭׸4T_8#<'/6iRm]H6 i<&vmMVwmtW0e7n=34d<ɲ3ܓ< z;p=~W/Z%ə7,~ռ5V~Ů#^ r X X?LV4pQFG?4h}y6ֽ%}rzyj@ 4=ۉ'| -O@9zjK eY^8솷nYc:a?4h}/\^}6UYI4}^އ+ bWW| -O@9z?Q,7îWYc WvSJfW-ɗϻ/JmFKյPPZ`]Xyǭ|Pcnrf%bYި8h[c ccV4ҵ Cɽ78l+q5v7,~5VėCwIBDTJ~ s0vV4Ӱҽc9/e[1,xY40fXid_>hJr Q,:h85e9}A_m~ɱcKVN~4/>>4 5VėC/$Ł(bMB5 V4ӰғcS/}[y c;MᛪPGPaM|+ 151D .k 7%/^ah4岛b@3 +]wm{Kc{3u/4J#@3Vc~?^XW~݆5 + )Y^\zo+յ\ڛ9q dbM|+ 1gׂ(wW.{~s˾vJfJVzdDrhJr LX9bA _/95e(33.؎͔_Jμ0岯ʭT.K.4|J+VėC-sKARy]+ )Y8^z*=kj hdbM|+ 12=^X7*.&}Uk{òҿu/J#@3Vc;1pD,/M̻/a_w+ Z%7^w-ob=WiMz8j۰&|ЌN$Ł4?^wik$}}`@5U+k3ojo6{;6|O +lXiPПn? XWIuk׬1twru[4hj?\x9co6 4o[]O +lXiPPX/9.n#ԔXiPMJwrEmvX)i~T 5`VėCݹ A˒+Y;.<8h$YJfVzxXx楹}w>vY|op xmJ#@3Vc;t1 q Dqyk08. d+ i[g^'O|?ՍN7Uhjo&|Ќǿ> X\/n8.[c$yEMc@3+}K˾77psA|oɺCPF6f4(PF.i޻ Ck$|,i4hpx)|?Nj {{CPݺ81QTY vQAJJJIQSDטֱHVp\7USڔֳu0zۭ9޹O+]uPiQiPPw˛3kQDoeW_Vղ;w7\|ow+m/PC&~>hF@9B-鳢/iDI*'m ߼iαcE@3>sF~6}?`{+x3W4ͨ4(Ggy95tmeukp Jf:+=3#:sM= >t Fuw̢$ôx3g1u@4h7^FKo-|S:C xJ#L|ЌJr>O;JR7MXcSم+JμS|?`G'tRj?4S(Ie>+\n8ȧ.,\V:oΉ߰?_X*P@3* {KH4;w1Z޽xk T4\O?q,FF|?`{Ŗ5dvg>jFuNϮEI*xrj8w>@84hҳZ-o=۝{}(5J#L|ЌJr o;JR NMYc;ql/Jf+{s%E~R图_QiQiPP+Q U?nı]^v;4hynuuww42ݔ۝P@Ȩ4ͨ4(GK26,JRdyx'O1]QNjJfOzݶ۾㵍!4[JE&~>hF@9B]fߥ4J$szӅi42* UynXxݼ{M,{3=~{}.T",*0@3* (I֘ιs^vzͪRӧɓW᫫ ?'7ǪjFuyQfi~'Ol[c56,* Ui*<:ښw!??{}J LTafT#ԥϢ$̕gfl[c5ׯ{MT4POv|{ݜjNrU( *0@3* Rz9zm5f_ss?Jfw}?lN X>rU( *0@3* R5[Q拕 _k߻gk5k|.^;k4hVJuWMkc_5Ww_D 5J#L|ЌJrl'(Isκǵım4<* UgJ{5ݙ_ l 5J#L|ЌJrlG+JRFҒgd@Y*==-9L-=ܝox=ZPiQiPPزX%`?o]~~#> 4hVJH.Zw.D ZPiQiPP;pz]nݾ5F8>* U/}o4e'wg\|, 5J#L|ЌJrځ/V6$ͿW =p#9G@UzhHr]{=K“3V7|@)*j FGFI*s^nNEJfXe'wgOfPʅB&~>hF@9Bƕyog`.,~PYT4\%޳CL{}WP@P4ͨ4(GX~Z%i/i4o^^`]\4hVJ Inc|gy)8_ͅ{} 5J#L|ЌJrڙ/5$6m[cS۷}? * UCCCQ{dWw}<+|o*j Fc~WuvHyA 4#&mPAĴ>I&  *o6uPU`cƱ/wن]}l圛}sG_Jq>)&i&?lju:ni? ˂;yR{vY_ǖ,P@T4ğQi0P7Idr;ׅ}* W%۱c{cc^ݧg״eB'|JqL}UOL0f.͒f^M ޹.̹sBB**>^O*;Y^@7j F2* tF9I3wk;|;ׅ)Je!VQ{Vxx*jB 5ăJ#N`AZbf95Y\ftT@04Xb~[r}mZ~[|r/nkkB 5ăJ#N`Y'S7tG>u4'N>Bؘx{TQvoݬhkB 5ăJ#N`YIL<Ӻ ի޹NgyY@4Xboߖ\n^Mݚ^Y^@wjF2* Wl*%i&bwN>oB@+x{T{6^ݹQ=0W^@wjF2* jwo&i&=~--^|V yT, P\nګ\Y|r?4!A'|JqZ$d3ٚ/-/^p|6* Z'%{u+'7NjF2* j-fa`riV~~KKK;'~`r׵Wo͊.>liS"A'|JqZѝGIY\wN833 `Y|Yxݺz{[|rLHPiĉ?,`7`^j[-?N>WVXE@+ <{O{ucWKES'7@C ҈>XF8Bޓ$d3ogpPUT, ›YE'HHPiĉ?,`VT)I3zS{=9R~`­m vKXji\Piĉ?,`V7e=I3ټyE{=9LLh?0JeVzzZrFC{u'/_^\Piĉ?,`VʥY"\Zm_RypΝ~`­g›cEJɝyC 5ĀJ#N`gIfuwN8~{[=T, ==Ozc">>_^PСCJ#N`6rYJ{ 9@{L߯NWƊ-K77'PG'|JqڎV+7ZLL0ok‚wN2ׯkC+=2"֮\޻3'+c{{w׵жC F2* jS~^JeAWɩv^3׾~!?#hOСCJ#N`5gI {uI_{u?oS?;=7)&@0ڵK J ^SĨn+GDCNT~QH׎ǎ3wEBMGEXzNtձJe]^k7nh?5FFto7'3>]/ѡQit'|Jqښr(I-= MfPi+}T{-lpfIvr7gE::<*ėQi0P[S]of"%`b`;'^wjJe]rDZZT_ߚ'z4.Ku 5JC].;,0P(IsVY[=N6 `YWzhHxMOk?eǮNlA^VF+R522ol}jfST0۷z;'^6* uzoii?eZMeWws_KP@ب4tMNN600ol}j IQ 5oV}{Z5UT,J>\h}}~)ѽnoP@ب4tr]FFF -O8BmS|*%`>*40ki_JeTzxXx]kNJNgvY{/@ `Trϗfqqڦ?_.FI*w+41ku/,ho(`Y^hOo}"3Ix 0*ėQi0Pt߫Q㥺ϔJ޹6̛ojo(`Y|Kγ毖_߲r^Ţ^ P@4_>XF8BmSu%x|Çsm@0*=4$5*^0 Qit'|Jqڸ߬FI*_hoܜfs_{`gQi,J>Y󇥒~RQL HT݉/,`b lufs^YT, ң ׷÷O3ҫ;Jucg7 )*ėQi0PWlN$͝G5 77{{s9}Z{`Qi,J -]h {NER mj Fw˨4G;Bs1JRd6s‰c`Y`T|6+?J%صݜ״yCѝ2* NZ&I#Ѽ1?;'!A*=6&?Ν~};k«{ϹzC{[j Fw˨4G;ȁ(I{"-ѣ9 «tXx kM__]۪l^ $T݉/,` ֢$s9{V{գ`Y>rDxۧ6Y^B C N|`ugB$uoc^p}WG +](o~geWws`S`Pit'|Jqv%JR8_~6>;'{_zT, ϳ'O&gWws+koPC aN|`ug72IIXycdz{96* Zsۤy6O4/u% Ph7Jk~'Ki1<|óKWԗ[/NQw]LYP#DEjV۴IkL39 wc5(AQ28TT:3KsK_|٧8Z8괌; d@s @eQmi R)A٣ϑQ;qG բm9=FȨ<\M96 ZgWpn9G_·NߜJz\R[se|?jCK#2ZGQWY/n$t6=_aTi"uFK"Ggd9%Ve$\@4XңB׼{as;hA&ccNx[a\.7<_]4≛*@qu5\B72ݚ719Rm9{0ZTᖞ„{]d|~++uFV D4$ZTᖶVd73٣Oacma޽l{Cqȃm ?1Ɏv wTuu]Vàw)EwO|P- ԅn{Ç$ VVdOT - *vK74fO˞n|&u_>w.j@qvSh~>wg O-O|P- ZJFB(_BPWhHN==P14,-'"YK˭yۺh][eh5u>t])]揮XMCvA}h>{=w?J/EK#2ZGQWNB7Rmz7h`yAKʢғ"[Yc//֓B[|y;'@E ԣ՟fOMO8GƜ!{G)h2fwbY|whi7TFK(zB72ݚ7q\i==P4,-"R ‹wx+>_.j@YTZq$o9^6t!Z8![4M0{'@ȷt]bm)M;̱1wo &"_[ 7s5o"Q!׷jNs|IO|P- WsnB7⬖d 4M0T- *|K75leݲ简‹wYvo &"_[Y/΃H^s[O|P- ZvԍPzD[[i e(7ZT>p@d+km=weɈ-aڲb*E TZ >)HnY]/ FK#2ZGQWa;iȞ}A*h`|^@eoQܕ}۽Ye5P!V4CvR#՞{opi4≛*@qu[xVL@ڲgHi9wN@eoEoEUB^lq(_,<\mgՈw$Z1/ʺErF4>P>4,-$+-;;xNR7^d='b'E rvëNR#Ox1&ckwFG=>Gx(jY;q:DXe.KGiUvϩSL'^4+gm)JsS҇.ZTwCQW4 g.|bn >ZPWE YLg_ɱc zeCK-\Z[dخn(p(F*c3.2ˇgߧ"7gY61ro?+cUm\uVOH[zڸޗO[꾫›;>ZP0=$*+1M46R/lhi?㡥'&Xa69E=ǾbyQ `fN3J(H_iobںȌҏ\JPȋAӌeo+'|?CK:̼.&VE&I. P/t5Mgj\!(I~ؙ)U7|xJzz>l4 '>m=rU$ɐdW1<cڨ(ZxhitjjXa8;8b9}S <5(ʋ:+z\FcY)?9I35 *Qo&.n?o~Xsd{~ݑ9"|E/"IZ㯢<N==@~IKZ[|bWEY)O㤨߉t5˦nI\F$ީ#?>I,97N ,zkeV|"TOA`I8h~IK=x eѽefEzIQB9[BQoHYz-La`z >y}{s+_QoZȟ@uLdP龣9T+"|E$-cj7;ePy'v%]]BK'-=S-#4W dvX4;Xc#~Kg/#zAIQϤB˘*KĐnad ԫvf<9ep z2M^ s(9C2RϾA`I8L~OK2^ffG-""%MMgmE?E z?V?@fct`Lp?|K53[PNQ9q%MCk>!spuqm\=;c2x>xHCQ^Iًc#,9zt&hi?㧥fR^{GKrԨWX5fhf)pgBW 2)m=h%U]Գ6eVʯO#M_443'9ul^Fu z:ǩG`3~Zzl齗ԭP7q99O`⧨+:GlBEy{z>ťC%exlziW%@D+PTaxUGă4poL~OḰWę[:%u$?E z:TȄ.Q)fwj_^>uo!z o:/_Y6ZHCQWSlg/Jc#%gN>t&v$zOHl<|^@qUx9>6)&HrTS/|gQ/t5vcu ueYKCVAcHO㮦/-=:- A~HeߢQޔPëHH5X?o(2ɋS*GgEYsqՕaߤ lBj3Ϝ7dm@ GQOibIz]MSҒ4YZwװcǤGoWWj #} lV{Vpz#WLhћf5,ګz>;O-Sb;3MW F"K@ GQҡYjK GK@EU+=zΖiUKFA@DJCsR7DՕBɑ>%ۓgh -m|k|1"SPH8:KW6x:jJ GK@EmSYön^]z| l"Xd9QVj'O?ofEb9 6nWzFAL@J+zoG_yjI*\" (1Ԟ9L;y4G; "a^nߖLgVq/ IKz| T"XwxZBX<5p)g*GDy7gϟR{3Ų#}1em)O$kK68" (갺r \M~hi*kGGo{*6Ɓ6F8 :lIbǥWW:/NyʇPy_471=~`+ҿH8:eSiGMϘ.={} NWkң>dlY5ǏoU@xD^^"sZ!ok{HF%=/x_M›wMD GQC9ܩH^G| "[QW7cHGmͲW7H4[,IQ➿|g>N?z%Vh">[~w2ٌHb "W$EbS [f(K^_Wi38(=7- A͖>rDe yӷPLVmq!!͢F2V+wG5WY8/:~eO& %Gz(~߼5ٌ`bbJ+1ݬbMv5w| Ȣҏaռ-j۸7eB"Evto:+_5ro9v4Z_~'7#N7N0kUG~W|g.hiȶ;lb<~,=} Uƽܚ#=>-jϿ[Hnȼ)}8Z̗̗^} 4)oWm_)C!=x}==Nw܀O4Yd[]Moc)l"'=>-jeQ#zYp@4'Ze9p)=y.nl97 ~GQ'oL҃׷ki-=7- AUYƼl-cLWXȽ⩥-=>\h Cs5Q#[G)Kd҈_~,$9g,;I8<{ݬ'b?m“ՉeiIz(,$n[ċ4qK( 5ռhiD_(9CskSdۨ>4WHf˶Ӽ@QԡsRsgɒ^r5w "ҺnެytW}Dho/jM2_(_ 5?҇T҈+-w)wJ+ӑH~.sJ~hp~rPr/'puN ?=/=x}w;s~d{c^\ۖdvj@3Wc ŻFbMSpe8QQnPK+Vlu]״Y7&6AMBk7֕]3Ui#E\f`.0e P9e8ϙ9W>N||?wV/}֯-#FL6_'o~GQW/ |gǏۚVt(- ^FK>pXzz\u;z:&-2FQ#&'n7`eO%y#^5IM0rlr?é'2=؄[4i|+ ܋Z?`޽5>dd'cV[ Mw6;kkJ&&Gh邛7WF;EV2V|=MÆ@!nQRߐ JVd@ 'e128:f&*9q ſ}2W'GO([+ !=Z[ӊN[c4x-]*+Y!7nHO?6܋K%B 'J?gYhV*Be蜲p:9;1d&{o幕q)('qu{*lۚVtjkhTztZ^ӣrZT>P~(j>_|K (Z$n[W?J~=U@jсq#s 8V̌i*p/ׅÊ+YmӻLTa3_O˨!=>P~(jH -kro s c%FKß|#XuI/ ;}X# +s%7QSaϫ;3 [Tңevŭy˴fk' E wVkm5Ձäң!.wwwsWCCVsxe9+<ɨ>JJHSiECznZpJVHKk2ټBQ}croƿ_ ZpUU>Q]]]B:8ءa`)/W#hFS'qo,Kȱcvghi2ZzҒ][讻0WX72$%}PpX(ߚӳT&/},`Ґ׷OZSS'ś^g`qh0\M?hHHgiEEznZ~]WVVH8,="luF G҇E wYX /?JJ p- *7?Ώz`s2:J$r @ʺ(j?x)lՁH6/=OۚVtYhi2Zu*[Y!ңK蛋+yА>P(j`t>QJߔ!cH p - 7rvh>yjаvP/mXyi4SJjiHOT/w62bkJGhM}We+s鹅4  +F.ޏK(5T6ofy7e)wW?UꛟC\аY˱S6- !KaxВ|M]]BAzt`54茖'*W_I-gyVaQscIZQseo%6[.3@9: ]V#ök21JfgGVCKhJ_56J-АʕO苢Fm ͤ2u|NL$ZWɗfپIa.lyvF a𫣥@su@|~=9a4!=a[zt`54茖֓! }QԨiGW9<+}&@-`|"?>}{4h޸qɬ+[;>N:v(-Qqn,0|\f鹁3ZR,y]TeKa]/'-,OhF<)rȣL w?;3F2k$޹>6?iZ@su@D~tKkuk =7ZtFKhnl~E'Sac/%}@S5jbr]X+30H -`o ԍDO'I_]*ؾkqU Q3(=?_60|5Mсhi-U3/#= MRE:~ugY3L|7YJ#^0zϾMO4_"Z4GQą{K pk54JQсhi-/P\FFGr Z:NifL]86>>ZV2[I7&>pʑ+|"/P͇QqJzm0Tr@U4茖^ѭ[YK^' 13 PXj'\cϳgBK#B)^g2 |.kX+Z4GQն_}hhp wZZ@gr9޽ңk½%qGz|@;5=˅T y ?NK -`o.;S+>뽋\6,uݽԿy hQqbV{|')='O;sU3Z]T3/_K.-+mA$.=>jeCa6&nf2r>]j[w15O^Ox+J2[~^hiEǮ >;I TEKhwTY̼H>XRX˙z E C3io{̧ g4EK#[Ij48>>bo4k?ldBAlP~hiEq煼>?=+=7P- :%SY̼<(=RR^΁P>~ ͤxŴ\\wL-{0=2l+͉K/^p4hfimmu w_:@gtǎf^^]P˹4#=><˅T2&n֖+C{.흦7abZ.I?T`C9:^,؝;ޯ3Z7Tv3/GJTQa/gǥx*W> kh. +voEodl4;SԍֶZ20*'D BK( %uw)=?mma+@g4茖"wU3W7×;FN(غN:6Zxϙw{Կd^87&z'd(D_ - 5[a_(ܟv0|y鹁hi-]ݾ}*뙗HDzt D'S ;|9ӅeZB=3\rl4S?=};Q6klpFWɂjQAp`VXP?Z҃;]]sU3Z6ˁңkv7mJg4@QD~o4eBaγ̈́F0qKvȰ~-I68z̓#Oҙ<_ hiE/[ {a[zp]/}zV̌82l+ov{Q<U| [|NL&CK#XQN'wΈYdtٚXZ4GQAӠܟV0|3ZtFKW׫lh^N^c0%9UUĤfJmArq6ZDkD(ި[Ιϙ9{6$||~=J?FQ\1[K9$/&`N>L*t/6Εe@9: +o҇{sc3ZtFKo1/R K~9.-@E_2YDum2o6%Z/U+η$"FfEc(!ohiE[M+UI0<+@g4茖ЫW* m)k{-1_&H]q^ZW2#&`N ;.a-~St"9 9:LYasSYpΝs sΞX- :֦2459ۤ{W+Ȗֹ{uenN%5JMʖo@su<*q=t sΜX- :172Җrzx80sv,%@ EUߧkiU{~'~)&o4,.TP@suZRaa%>X- :..x\z <|Sxm G2(j4:SҵH?hi|k.U:2Fl_Ldҟ?4h6l?o*l?&o1 9qBn`]4茖ңG*;m)u0sv,%@Ee^"5Of-p●z3َǷFM6O.ñĭg]9:ؾ}S[oo&p?>X- :ڪ2ܸ/^/HDoR#5|<6rʍyAK#r\^K_=Lƽ_"hiElc 1Jc*>X- :70bah:P\ᙚsUƞ-p●FJ_Le;Jo6}EKkHUx)Z4GQXTDdP>ߛӧ&4OEKhΎ*M[8wsQa/ F1<9Weh:+ Phi|%]9t%q#)_K*ҟ BK(ͩ֡ힵ;9w@g'Ǐ 67o8j#MSȖ4Erw"*|dFA@'~AѮ}Q_c2-bLhZ4GQXb9紵I lҞXԤLLH_ v$2r曔 Z se\2( hi|hhWƟ^]VL*_l2Z4GQ؞>Sa"n?oVvr s>\n`#4茖)憯R_Ν_4EZCәHT*W7RE" hi|)]fzL_FT]D,@4h*+S(-?3!}wu snߖ- :JT6{bQzm m*S).Z|Y@P!dW7KrUvgQA@'~_TdO|@|yfUr8j?QAuǬ <3v C%OJl Ą:97hR@Pa&e}ɪ!Wԍ􃀀N'e_y4Ϸo$ AK(jML,}gJIӁ3ZZ{ˍR"[(L4E*fs[5u4_2vEM@'~ԬLyd6e˯c~?5@su ʎlK߮bv1 ٹSn 4茖V`ξ}X^'\MmDKҏꎢ ZZqMI,J;Z/z?q[)+cK!lV4h=J߮0$Wtg;|Is{?^(9:ɟS*p s- :LO77;wJ2j9lY@}Qԁ2YoX20+, ,hi|B`UK"]FV,i9:x^lג]E:J>- :ضҢ8fgL_,J/:b3-Q\Hٯ(+ x$4%Ǖ6Uߑ&PFMkC!EyaB̮3ݖm̜~tޮO[\k HR+goqc\~˔cOZ2WJ冧Hi0A=x}aC{w߲$;ګ`2RZ㏅nlL{u]ߙ:'zTeI~Ϛŕɀd!L|$ǣuɘ;xiԭJifn*nwgTחx]߲$37:) &#ŖnxX{u\]/OEP;눣Y3{}2 qHi$7ISnxZڔgTF00) #ɓb+%m\>oYqՁHi0)-m Nkn_^*J_vڗ z|\ۜ$^U>D4dr*coqIMF7\`8zZG{}| =vi CJH(:}Lↆ6RNMز@ffYu҃ɀ"L|$U-4%|>ͷ? BJQiSZ܉+'-+t~RLFJG1>.iqCC{S!`Mz[{}WzeA}WڇF2qg LO0?[WHi0A=0V#7O 4:[V9zT{o RLFJG,iq;vf䍲@ԃaJ\9T>h4Z˛S=[^_| =٬@04h6I[[H>Lz[@O`NuSFo]&ުhH:RB}~3؋_8{ W@) #ƞYyدUVw-+jCJH%Mu`A"8 ZuIl]fM P|oh?oc ԃ6OڲÇe}^=*r/jm*n|K@břet=RX+o+ IBI`8z0,=iʺYj"x^_u߲B@`4(ti ѵ]Й}y}I[hϚT&wvUpF2qj-oNa/]O#p`QU쭊z]$rGhmZ#{tΓ }a<Ǻp^[?Hi$7٨{|U:ٓpR+r!R GP'$:ak/UZVf#dtD˒.72߯ Og8kXen5%MsbCJ#@Nwu~hЋpL- ն@O`8zYհ*ioYeHi0)HjnZKtdL(kAGN߮/$`(Rb}矯zS L kEWK f4w[ [Vn>jhնme#dtt鴤έjmswBgR }<[Wٔ߭h3H&n>G뭃S=h'|M(4woekD׏߲$So`2R:%unvV{o5]o-{&tf! Wnx^+2¼>;gG-#膔F2qؕԍSTZeٕuVg@.}JAJ#@lԽ^{T2SA`8ϋ.kȈoY'<(itcc{h2—Bg-Oă6Ps~oWO RzNݪX'.j`8-ԣ7D5<[VI dttJݮ]{~.~,4i Ԧm-FS+vK"L|j?Vi|[kj`8OZ^zƎR ն!J} =;wj AJHzK:8ګ/WvS{WJ'b@PeNUJAbO R^$=Wi }ͯ:-Hi0Aݧ޿RҬ~r.} z^}U{o RLFJGO7! h(X<<1`#c jhM̓6b ` 0TFP@hlz4*E);sfߏ 9Ww:T6B9"ݺ쿑T~2hxVz.#j" \MHO 2RHVoZv4 >X@J~ed,TZ0 U*eVVn֭n/#;yRe+ԇJU "v7zkr҂ΤT(M|@J:?Б>)j` Al<ޙ>т}3>Б,|"QG|۟])҂eG#Hi8_n>lkq C8M]\uu}e#UExVǷDPHjN4մTU"I'Hi&n>)ohGJ>}[xа/՝1˗nΜ/#q^7wt߾Rq@=">vGb0fŜZNrCp)<(ɷ=h3Yh &}r!4xAټTΦ4gK 0u]>n/#bҭG!0E)q^Jz@A]lѧ3[j2 =4ǐ(M|:ӫG5ўxVzz) GPE코~u5oNKXDJҎfUVBݿ/ݺ_P~Jn_*PAPϝ'5E`r(I8Fi}80s>ɺ+#}a~O#ټٻu˵qt߀u4x)ŋU˗#l<(^KO H I"QO},=qy1~Te4xAeۣ۶uH (!HilݪLl\f(?.e\zZMOn !. 5666+<]v6mqnٱWzRAJԞa Ϣƛs8uj͟? 8/#RS7ﻪ,ݾxh>njێ{nk)aV>/}bJ>BPYYُ13ߞpUwMs܈ߜW6㑯I⼙3iO$8^nĈ2]+xحޱsI1&VF~+\ޙ'n:;I}V3uGk&JQ #gNi**JwW6Sa+ԩ{LA}1lܼMtv{MʱDN#}$$-\ ʤ>I[n]7jkҽ*Hi2RYK>PX,I7KR{k>ްS}`K~֌`;/abJ>@i(vn>0,זY-'bm`Nzე#f1+.QsE*eVVRtRvVwʚW]-ݷ?H(8nw̮9TΖWq 1>Hi&n>0No7uqdЌ@M%"\b T5FTV,"C0%6R!i=(Mz18;3Yev+%9{f3ߏ_~9sy)K蝀ё/טي(q|9,nPEJHizKe[^;JCql(>Rrǯ=YvNNА*LAJ;q.1O\{ܩGJjC n ̺1Gz8YJ].:mۦ}t?yLAw`9ͩ5MX;c 6 tsJq?t\Leou46վSŞ-ԥڵervTI"dvw{}Ӽ_Ϩ>=xttgPr)Gk#Yt OPݙ'BjU6U|SΙs) #eĭR@zݸYJ#:RLFJksʾ78(wjW{zvۂ:6oծ GjS0Z4#N>еq7ɵ|gbCz!p9iGע2z;(FNdY*ut@Hi0)ݎ*}VQz}l9ҽ+=Ax)dn:QBO 'JNby&?uYz4!pwUY=kUu`dYym dv*^_tiOҽ/ A3֌,. + ) '_i꒗E}Hi0A-7|ɵVe)V_t@{Hi0)޽[‚t5~ eIw:;͡?3Y+6圙Jؔ"ҦSxN>M>2vbKuFX!dv[ٳҭn//ѩA\oN=,pSҪSSx1N>ʗ]$Xh4N[UNА)^E^@{Hi0)]m"zyQ{>JDu-lN>(Rjͨb1ҭRX N>{?_ZMn:>Yb6R GP'izw ͲLȲڪ/FJH8l◴=Hf.՚/IATC7jVWm?[\}:tRJ+L ~b[ #pubЁ1ٸQeۿ_41=Lzy'hHUnU-]A6}k\κ3ֿ+]8Դ=$Xu7_;i4ÜW_wJ osUE^Z`2R:&cc*{`kD//=XN{-EA=׍9jwP^b(=74hG،^/&ph։okHi0A_Ja[],c%d~>,K~Az@+RLFJdhHe|El}DzȅǕ|Hi0AܝBcp22ϲK!d>*/C|Y*/5/$^aTP;~[|^;Ή\PވQ) /@0e'5- +Վ%ׄoqgu\Mح_ϲklL{@'RLFJ۫2^M5W^2*_ͪ*GcTJz6k@ ң+"pu?z{zׯ]&mYJtf4֧CqxtAݜ]nxɜ>7YP>VT`b&V œė x=CQիF6YJOfHi0A]'iL\-靂|,K&&4#d>G< ~9YJm?xɐg${1;|qZ`8'JlST˵oG44Yb57{κyHi0)O[pڎc{^2!ONJ>\+3qMgqxA*vKDNm黙xA6|PR;D+dʎi4&|xvYjP44<[GJ}ywG쾛y)^8YzR3`2RZ>}חBuCVXyv'{^ ɹrST-[w3dhL|+|{tܯ';9]ץHi0Ac}|=@b6^Þeמ= d>'O< ]vyq _=Xh|㳳RH+59ė@.IXؙ֩[\ɕ^"p }ts}IIzJS^kgY{J=J<|XsRZmF ꡩ|(j%euǯ/64_>Mϗw $|Ygju:ƲWz`8zQ~|=x;t1q3!,Kz{gBJHi}T^{J]wFjPtwꡩکyj=hL| ۯզ Eb=v\5xPJ[ykڎJj7;XL|UZh_+ꑨ-c|5pܠ$@s GEQ;K6=Y {E*%LӇڱC0@Qtd6]TGr3 {G҅W>jt\i$'@}5#QAk%{܀4h.A=tN֓UmaթSBH#}ݭ8˽6ȩINPFFnYg!u'+~<g Nx Yݧ'oVUO5kiST.) QGJjS8cqŪ9'ڵh!uY7,PǧA:cF2qãR{,ox~ yv\4h.A}I|hwhG&{ނ꡵39)R)aTOyt%UGro_UD !pYxNިhu'֡/*,"22ߎ~MDJԳѼՙ'6R)17z@4 )g$Wǁխ\]ޑhA'7krRudK3 7:d[Nن>^}R4Q ّ+eR=.\ORT(!rgqMޑhux:2֗uaF2qĘ]k}p4Y.-G @s Jb8ξW$6mCRb|\<:Ii%R:h[,w;}dɼ2ن =g uifߖ ZXL|W'FsKl}}.<) AP/ᩪ9`s-7UCiP6[T(#+CޭZ9(w$WpA}Kupc?EH&N>U[; o&hdٞozۤ4h.AmZ}W» RqUϭb0MoVU#ksc\QyIuH\AX5ǬD4 Q*uë2f?)90) hPg+O FwɞSS=w4l&LSuvJsMiHR:ho%L <*9rΏn PPm5;>W3]H&N>ᩪ9hyyFy]JJԧnU;2wF:iT=w8x]ajfqImD1 9H-OܫjۺޑPu﹂ܷXGs~u:dHJ=8Q62)e[5IJOJЮG_.ٵ깣P4=UO(TO$Z) ICJeV3wroFAl]CX,#m=7}upjk)˫ʗ<>W=R4;2!k`vx玌ii0MO-G$fLt*T_+zaY =WTC׫x`F2qI'/uxlϷ#@su(/;bte'?zp1<,V֭adt{b94XV{j]YP;UO`޹X4K?+漼|-c#HiОAv+!_N/9%LӇ{W0tNi)Ų+gj.˫IoP-##sk1Ḿ:d*u*+\H[}W}HiЙtq}Bx"7[h;bFGE*%LӇ3H CC5$\]knoPD^//C@lN#8}W\sX?~#R:=tONWן4mvU?k<0MjZ˩ЕV) x)eketMuHzfM/{~ :dtic 湞?^od[o.PF7UiΞU=1MRA۳Gf|M}\] }w$_A8Ա_,s]x`F2q9SzN۹jK?o:#7~Fq]҇YѬ`&F NM8*+Tm^klbc TET5Jpښ zxggv# wfݝ~t9WGg)̨O/}SqZmy"Ol&l[wI@k) xtd6 tv%1 8ѝ;"ǯAsD?;`F4*fd.ȼG,9tuXm~ u*NX?Co]I_0|7t47S1v䒙N=zd8\ם;ŗA=5rtNߺ XMt>H0K]r10g7J*kvbvdFQRVc8ضMoK) X t$aݩٛ%l+.2(ˠ2kE@hN#|f;ӥga࠰m%-%) SZ{e={tZ#&ye5#* CW:It5* BuD@r}|,!yWNZCK@8NfJZ>?=UɗTŋba>DG]Ђ0ؿ_ftFrsYݹ#*|ޑk W4R}9Y%bqMCK@Nf#Y-֜UM`bbBtv 'z{E:*5;bJ+pᇺe#b]wAXV85] ( iD<,8Z^;Kd]],V_×uRk|6[ٞb? S\Y"PGvaٶu,_4 LiIthHw`7tIwAmvchQӈ&:JC1 V% !5S1n̨?}Xm2QN>a~F<.u8/S42+~Z|k2;wDܠ>v(n- BuD.3 vwʊɞ{?o=;ZjR>6S}9' `=, Ą0 tNiJLiFGeQWPK9ncԝ;"AnPw$Mv@+0aF4U~0#}yX"=x4tڛicӼQ>Q"s€PXǔV Etc3en@XmN'1<ڍ& +:h&$?a(sk %p4 w[fq`dD0|]m NiLiYG?HwޑQcWޗWu\ɵW] 4a꽓7x^,,u?]K m95]*UrE0|ڀ) Ј){l̎qɃu[;rFHi( ƒuD@qO[lL?9ngu_-^Ȩё4yqy& ]"ϛfVOf#ue 5qcԝ;oKyf^U@N#|hZF'a(kO~hϬպD2XH.NC㈣Ga'N.gt?V`~wu1{/NNjuݹ#V5rL'hVME&nvvȑ#RN~6X{r硗89]/5}@F~&:Ϙr JE8 #B \LNLivK՝wܜ宿=~67q]PLtӏw 0+S1h  if0OHT6)jqh1XZVݙN3!ZWsUkhP|d'-Wuj-,,QsZOφdDͫ~h]x?O=+e,[ҒرCh+ǏUWt/`J{`vyLjLJHB7kӇ?-OtM^: רѡ/~,k?eU[K@ l1X7BIg eL\V6eE8,4͕p~"?:: n%7؞թO織%oP;A7nsO+U~: (uaxw'Ū}/I鳱<+c} P\S /y7W@b_1)ѨزEh[kT wvק:8#{&U[u:ul6p1ݢ@ 4[XX8sIom޼~rq'guEoesU;B-fK{Fh ȭ':nT?WEե: P)>5Uz\~P>ϛӇo9 $eE'&:ZKtj>! C 2%+vlEcPҳ1[Otg-& "Vl${O,-.𻗮nT58VzT,{mDH9_74̔l/+?aF0O3rItO˹OW\́K7&;cPm`$ϙ_^B܊-[uuP: P)wߕWmSwPu_J˝V>AJ]N#|he MiXk6  -͚7OUG ݃HvMFUi'D8,4͕p~c"V]'$ 1vק:zB7WeßԱ\: ﴽN#|herS:SOʭJ]/ Q*JlprzGCr5v 3gK5ՏgOEOhob.u e։ yѫYFVuzXJo!q93&:Zjtlp3-( X'vES# CɵĦO'|A7k_ѷY1=-z{Eg4#ǎլ1ΧJdXn8XC/_Uu"4XռuD@+[~ K5А|پTo={3Hbwܘ}RlO_b~iE8,:;j4=LiE2)(5;'g*>A}NNcwFSޗ>:`5kJ?Zn=7|zǥ~(s#vF 90ѣ"QttT [inYbTl3%FVue]c"iS:I~mDl(Քb-6W8z5srz.ᑤc $BE["]JEu@5w4SmǏǎ;,[Kݹ@SBġ\Mhoi  R]9i@1;2)uvŇ5:wʃzGTn攔>:`4U{SSIuƎ˕f {ޏ2]sAwǔ $MYSށp4e/i@S0#:ZwY;6&TYaPŚ\:qo"i)]\JuqYjna9_lפ9Zqw))#:_05oy UbJWuށgbY]iYuY.6rz&:ZSzSS?BL7ffIqԮ12i $v]HTlտTD4O]ܹr/`HcJWf=tHup:n.++ HRKGfaF0ʼriC})-\*@+x<,Ϲicw_t}lLtMsoJ{їM#UL;ˋcD!QU [ ]/65 B8&B18egv}xOG !3WKMfʞॸ7 ^ηzxzݘjۯ ǿr359)~[OkOrϋmKmm~ϔOR<5/M=Nݦڎ LQx3Sn8(nJ/H코.緜Jq8h9Ēyg W1N+tغUD0(m.r?4`HiO HSNEO uGmֺڎ LQx3U):7UYfJNŷ738P 0hT$;0o4茔T[k:r'hAeuNIuOӨN|Йڔr޷_diZ7,['rf6H?f9b/M-4=TXr@bɩrFaZ_t4!@ge&z#jܴ#$%Rw{n-JnBqՉ:!.T3yBVIk@i=C\29nwCPWRIDB45hT/s"@gZZd͛U*+FSQ}|wzroA/nBqՉ:$Ojb,s֦LqVU@(ʕRח7LUw\g7O:p!{ozh$CT׮GEshl-6.q Ҟ}8Q7ۏF0x4yiV 4/tOJ'A[zO]XAa@o ͧ=`TM=M/fwOPĄhmN,Y"Qajjj˗ERRtFJ{*{zT}nZn]~(GzQVmTTwa8ғSS|jE_j2SV(3m8l>vyA,"3 /) :#=!3ءxŠé_{UN>;aPr- ;՝@1N:@gڦ*h)Y k2SV(vyۻ0Ucm=35x9v hiѨ0 ŵqW}<@JHiO nrOMAw> Qx3SvYwԖ^oQfUw P2 j-9`wk7ARI PY ".xҞjnݸKkD}G=z tkSQ4/t!{Ucݴ˪0t쀇[P2W\J;~@Ii0 mT_3RS--2CVM,)QSώ`{ԯ ɽ@.nBqՉ: JJ8+WyeVuJ-7 ^~eNZ{$SG%rxua*k^8/Hi)v9TO<[KU807_kbߟ٪;0cFu΂Cch%Χ|8۝4`{eV ɆHj˩-+upXXR} BJHiO%3*>795\lZ`n8UV4/tg7LKszSWTw gt&{7ScV٩VhbB0 ST_3RS2֭ύgX՟%%o3NM[HB0D Rq5dBhڦZ'&@QL <;;"% x83s=Z{9%ّa@Qoz?,K9sfb 2[Z5+qK@.ެ%=؃~Tyttl1j ~/9EݸVrܩnߖ O- iFK'j^7s_xϿ^\O/WuU[>^Ͼ^r4@e1]?{וuS jM{0/(nN{f·M_]Y%}nQ?V۷+Ύ- 4uQhύis$ڴE<-@񜆙|HLtgO5|E@"j?G;¨;U6l?:_+ ~͓NNTq$۫NTa(}ft^ccsܹzzեGq.^e xNLl>YZ̿j٥jK[j˕S侚ދph71_䠨7_9pW׮8hiH3Z:9ŢChæ=YN^ GVYn)5Osfb Ũag>Q^?KKWX֘_(qK^-E$P}񅚚RGn8ٷOݽ+})R43=޴IűY ,ӈjSz|d޲tYz|0i4SKmV8'OǠ7~ Z4M } kc<oʷy*5ԅ 1kVSTI1 Ch=핞s7hX++#K^6Y#𜆙|HtG?{70GuSԚ>$]<*u*6K#*MȪψ"uVrTdu:sFH+sZNN_{鹱{χisȌzkO#@ͩ(YL߯>|XznMoFJώ (.ŶւsAxNLl>Y[zRvK%}#Ԛ-rS9P#]ԝ;ҷ utry~ 0yr=0R[#vK~)=>4@徥Q{ܷ\/8SMS?a ͷ]oLR,}J#䵨X*d&5;$trtB&D[\O#}Yz|ZѲV7> 𜆙|H3CZzRvK%_n?>"7v 'T ˢCurZX˖ܠs;WȊpr=خwܐ5qZ4@wƋz _mJN, 6vß.ܨ-)E}Q#TI_K@ysc\X\O/;#&|{>sfb Lk+ՎArɳC7W!azs.ݶ 铙+OEjrRuv*{}7l<4-QАXV,NҔ>ҨRoi/b]z|0i43o=eʖ!}Jw6|goԤej68b)Ԕ-ȝܴ4-79 R]mڮgfx"}U`0iffKCK%-^H&\eccЛrEXAQWUG&T(}(- 9FK'筷t^ǎIύ=ZCK#6z~VLsfb Ln++Ye0zؔ>% rr;t5luW7+ǑIOr]EȯL4-7yIύ(F {г\j,=>Rǯ6֩`)=>4@wFyVvE & LԪ (HCPKR7JK e=~=3)>{}5|/_}xRG,0^l6_LݯJw:tQ+?@'ueקi_]ni =;w\郃 }MAV2j |DEq呌 8OL>D[bWJ9l=,-:+]L[uUJ@E}N& }}@lt`K۳uɹ~r(3൒!w2.AjfxASӈ'&-؝L}){7Q/6Mӻ\Anu֢}=D[){IxBaɗʱJ[tY:eQySoެ]7$W߿/NOliKM7|Oeٜ sU)jH7F<1el*;DJKW519WJtHwwk /mztT cK[2>nro,nY O9 ќw@|qN#|2;>UvϷ>e*xH-{z:Lj )7Y"OaK[ka#nzX)x&Ys, '0fJ7XF<1el/{/OΖ\m?\ȢuK]]7lؠgf+Ȗ<[ڒ;Lޓ~7Zp)|}U4].bs@_,ji){IxيtWt_[W5?¢ɤvPsD DaK-mIoɅ+tr5xrdd+ y%wӈ'&-*`ZՌ.JEg{m?_UJu_N&놗n==~Q0!/d~;`@h rl,|ݕ̸G3j s@_\W'eBKEn->idt*E}vPgV*`s-mАɩ?8(n&Hx1J|Ub>0L^nFL1elY\nKwEX":_\N&놗ufEh4D[ڒkIwe;O}Ӳu,WiQƖ606[IYL"99].h=m}N1ZFjQzz!%ԗ.Vچs-m&73F?ORmH7@Hՠ+e>*sUG8OL>D[|LY,W鮈cSև%X1EN 놔}? ڌs-mF;;q67f~>pN#|2t{_r<[IxjE_+06R&hE]7uqqBUJV{UUԋ^,msIJy I Y4R&T3Clm"-!F!%T)1gXzݳ;]d)"x̙qsyF֭So<ɤv|46Gs }TR# !ˋuÔ;x)<ў2Zڄbt\ЍRذ*LzP%DūԸ(+Rݫ@4;tTCxNhȕJ۶Q[?mS^݊f~547\FK'tdRS)OZ$VlV(1fZk:~\ˑL .9 .#:=:+ڞF\w%췿#\s퉛.*.wMo{D ڢuKmڤ|`3IUFґ{-τۣ#jaCp( $,.mUjue5R~ E 91I=4L_ ź]-gr-ފc9K uV/|TjrRUi<etz{u>֯=7=WԈ^=;"wٟQ hO|p-]4;srh{ -^Nm/ȴXӪW}SiZ5=4: [ڞflR#GgG f7F{h،ݚ!3'n^*L+w`x6lȴR*To0Ol+ip- t^{0cBzZtj{|Dfh^,;?)E n9q:{{>1!;fBC̵rkf9o>^}YFR64V6oaL'F^9=;Zw`)k)jpi'n>,-xBH=6l帟%[:@5 fJV2Z:Z'NƜ N߁(E 9VTj#Ht6ݕ5yud[9?}8u2'rrυB~n{c|Zlf0: &xlxNh?1:j{t6(Lie$U=>Z2twͼ(jp- tGG*lO}J񻋏aw\.3^!ksF'֝@8 &~FZr_u+~MzX7'i?@LFK#dtQ2A Oߩ̕E=<[ZmG@8 &#btvJ/^;dP] a3)j0-du)=K9+wR;'=b|QsCvinGhǑi0-k5<^:5pkRNP^;lSIQhi$_>;SZ.7+xc܍ï=nMI)aMIgEJFm[GtZkߗi0-l6ucjS,cni&|ƝJ*.$/E &L|`2Z~l[ʉ%Eb9y,=3Wo׶gm[GtZ_$=?`2Z:{q)nHh[ /OK'lsrˏd4/LFK5#s-Đ-^i&=t}UOHρXΐmhN!pґX6ȥSzݐiK9*r).d¢Od4/LFK7'g)'H&|0-0zG)Zʉ!NnNNUkCs!|*zUQMmG}T@8NhـWqCȑorzYzX\[lOe Id4/LFK7\yvc8qWorVzÿ[e9lVv9xPW*S@c8 &{ WիK/BnU,'׎EmB>y)j0-dҍǛلq,Om>}ޱCv45/о/=$ i0-{ܸ!n`CORr3'p/=ˇCeE 7koz~=/gVani۶YGz^k޷OF իt(ё#fpD.+e  sJ2 3 ŋѥY"X.~O>gC]]Lra>SG$E-y]Դnpo bz~c8a˶eD^ Ν=H=^+ap2tijjD'uLr $x?]۵&b?F kU2I==cQu5UV,LV)/7Hғ['ro+ju {u0֭7qW zxE+1=zJRTd7[O: w۸e%mo`{1qХGGJSw ?P8uuѶmLk Jqan,SUiN8t0ѡCt:?;F==KVHx/߾󴫒“m_fkTOs J|-@{1qХy]78ƌnH*/q:rb*[FAh(A:s/SI:|!:qbo`Ξ{^lF2mDR&ý#W$PLo+ڹuw󋇿=v.׺Q] ԝJq/0N8"O:I:4IQͶI];.pRorIVhb13gڻw);wRC:p15(UZwA-+&MG+|mOBRTTtſ77|!P(cƾYO j%^0"Yg^ i'CyTUq N$E-6z܅}ZD猂Ѩ.,Ps356'2 EelD;bvX{Hpa,iW%9:7}YXN>9Y%xx~*G1 jlgݲ{1i'Cˑ,V|>IBqIQ?.EhyNCR5Xdt .D"ܿkѻc6p{HM JΈY$6Qxi<1_el,Ygϸap2tia##JIjBqIQ?.-Ѳh좕Ш@L6KׯӞ=TQ!8 `M$Y^`rteH!?N؊~33)o/8Y0h(;0X4K ki|sNt5!)js='p@˳aQ@?ݻIgD"?kQ{TW~8^`GSIIQIN3 |? s~zf|#z#7Ti7&܇sɲ-Cla1o`p2ti1l3,YIQM8wpeb^t~'jbhB33(TW'> 1_5,Wi1miG)/^`5IQwjiYꙑEܻ ۥ hKQݥh_놩kp3FlDX^DP ADdāa`|TVjEGJ&$B4y;u=$ǁY=瀘4KEA0)IQUwb(SWF q.Z߃) 'JuuTZʾ@DӼW!Qr:?PfnYU55i({LS$dЯ_z"zJȩ'O2ݎVVRO@XN ]AK ]Ճx:h.܏1Lʚ=Z14j<ӧt:ֲoHy9E"%I&'nXe)L%%t8E 8EBVE_=cTOY=ΝL>:_z`81yȂhN rN3!IQ-?F4-bgFB!Rh"C!S]M!]}h<ҼK/Dcuv [5HӧdͣEJ42B퇾>jo':;`OTUϞǩMpZ/fDL. @(8?|-[w쥻[#"!~[H,HZ$YNy:p~V{Q ]@d҆G˗yW&%EeL(ɻBsnm.ǢgL4j%45E.C'[I49I1ss42B~nnt. 'O>dSCZm$ٷTXS$^*M  JZ~ԩ]@d"C6f<8DO7b8Kk/(c &酡Q%1jȈhٵ|>z4W y{c17MLn?eI IZ0;tP[y"A+Х8lk/Ae-QVhn؟bo^|4X_ J*TJ}!rx-qQ].J$ֹ,5ХD.89wh!ޅȯ{<"ѨMOELJ.H3r|%Х8~QUEƍ1;O _ē󉓿J|!IQVL*{P@$duwo+Q ]@d~ٻw,Jj4[Tw,JF~u o; hPqgjh Yf"ٺ粒9J$x<. ʼnjjwQ&&rvah6BXR2 O¹10ѦoF 2tiKYeL  &b2d&]{;Smg:G"u~Duq3jI"bG)ⷪ1э+"RVUe4ZՀ흁ad OgҦn939+F9sA ?Y\!ij[g+O)og(RkpX+`֛xv6kOSK CMOg|9A &#dGyRSsnv{,wz8_5!Ų򚪔rKG8sG4IOYz<{VGhOi ⩥.TGgBmp{MÉ^ҽ8.s۬xz?A &#d'L};r!\?t7IR >/E薠 e5R)l]w⺺&CNРl*rܼ)? 鴮@/._}pd$4sDjŇ$3}CsOwe;\WN~xG>APHi0)2%墨Np=qBI[bO4LPûR)uKoWBR]-KO$F0uGQikillnۦ-+* f;4%z7 @9y]O'j0) &#WY9sFw#ɐZ;nc=ϫwFʲ'O#OK{#uuR_N}F0y;eٳwHDt`JJ.]WZ*ǿBPHi0)Ǐ2eez(\;q/y4|LaWT6A OHedD *-9uJ._hO#OK{D"{˱cٿO$tj14ɻ'lLv6,KtonJFOHee–}/зj0) &#Ԥ}[w97d;V˺[lyW.r5LLJgeMUuK$}vMR)ݿ-lR_Ѩi_/:{) QާJ*`2RLFJH"սxЖNι&t7W-(*yffYY̲,lGٳrDٺxQZ[e)/ cO[dlL>W$Aё&ߜGdv [oR0׼'.A &#d?{Û{c!ɵzS7]ĂƮy>0P_,Nm*,㲸{k4O'?b)˒i+_~JilO삗XnA &#dffOLMY;gBk5 't7nvuXвFN:ٵgtt$ ABJ#|v]WΜQUSe/4lr(A &#d"gEfCk+qsO,(l=ҵ F%VQ2:*ɤAP&_bOy×) իܮv5ҫX[\\WY َBzIw&XPunt^Bj vX*-Vi*Q 7Խ`>ה;y:˒ws.A &#djpAw(TxJwfC#IwYZjhw玔BUUضb3R?1!p#4VUUnt9`2RztZ,K93;{䛥 ^M ݽXJa׬mݱzCPC/V},"սZHiOÇy sFݫGNi(m |`2Rz7ԟ3{NYO\wHYjP5Ď=ӽ& H8>/˒{F0 ePq]:{|) 8^:;?MPHi0)ѣϙkhzZwDvr-˺{ΏŸ~'RהEPihSTȥK23{# LA8##c ^* BJ@]wꔸ j0) &#WU|>uBBv{}n<^н(IٵKqS55r䈔F0;emlkӽN<ޭ~klEO`2RLFJ'dRw䛥 ^Zw N,1MP}zF1B媪qq]݋ҿ_?Q]y(fw(hh*mHaڅ\H-"Hclf-k["q;0upvBU;Ü+_|NV}hkS=X[;!cUKgo55"T5ݻ'ih}tھ:>/I\Y;ݱ~xLKAqqZvˏDS*B|Tw<–BuuI2iտNQhi0-%Jkt%R%ﶿs\ybf~}5v7Ǒ\rsbfFwr@- ;YmQW'\7x萘֝ @  OA jj$on_~(j0- &|u7D@X~|x<\}ݓ/OPY˺}EuuPb>D=+E<;9ZvߔNYqjki+2i 4d78(ygڸd4$OҒZ]E<9{sAwڙ(=Z֝(jҒ믠]]brRӺaa'=13|nNw{- YLLǑ](j0- &3|_&3T]G<97a6Z+dd;;sF8sݙba'ܹ=3;zpPw {- ;ۍUmj*cP`2ZLFKg47?j2s(9#_;E74\^/s-N Eݾ-*+^>8 N ZvI<.\7e3 Z>jtTV_/ P`2ZLFKRJ (9Fϗ&g/Sr?K{;Y5۫\~f]hi؉/?#G٪ rhiJٵk`2Z5?Zxܘ\}bdz_;e~yҝ,7@\'ܜa',Z[Y#nDKUg/_vLFK,oI8̿P)|u=dkq_#byQC݋1e8 u4a',\<9H=p[Y]]硨d4斞J^P#/1 +kWBԏsʽXߣeesQCp]es.^>4DюvIf-gO֝t А꭬#P`2ZLfmKOLUzԴ΀vJ%­ztmyL|OWu,E E/NPt9qDon46EѲ}Vjii)̅<'fd5ңq^455"%-Vyt_ҫdp\|={INY0;nrN]֝0-MluA?q|?Eޮ; lb~XccGd4–wO8ҋ&3c_"/1u]㕊Nyʚ2,,j(U]suE93FYEo6om-k@avJ1!`2Z7$*/:;pN"r˴ [9-N)϶/n,s옘0 --hs{7<|; =2ykX:74(j0- &[[3[ݭ;pI*rS70сy9ݱx;ۊN a4mm"ԝ0 - ;KQ_ nhНBK +ys14TSQ`2ZLfUK//oJ3'НvH~ēSvuŤ3朓7,Sɓp6݇o{ztDKN|3Y- [$o_#<(֩(j0- &%391`󣉈ˍ_z;ejL:]>[cXUPtT9rD 5;+WZCC3;hi$y+(j0- &iqsfk\W~; l*wOr.;kG҉}1Xם6$5qDW`hi؉/_B*%K;hiؔUU\2*.(j0- &GFd2͛c>wϗrϏi o+:%4Gu =E  &M}̌`hi؉/_Z{^ni}t{- NuBqFQhi0%-JÇ%3[38;*{~Dv~Duq3gn%)j5~IK[Iw`2 b/Zm㴊, ) ;F2g.aAs̜sy:%2[;Q7 `dDաCuA :#@gOޓ|xu5nevP;rGF '81V<|`3ۜ}s s̹2 ]&b1窧8><)R7  ny52Ҍj) : wJ?x ,K-c(T|v $&_Uf wPc__jVQ. >Rft `+Hi%s׊D.׌ j) : qJj Rv"ɫŠC8uMתB8>N&U HiK%Z7CtFJš㢵U!RI SXmDnYW#AKHU= 4$7[4<(ylR5茔2Ek+fT娝؎9ǹ)U՟^P5jLZjǏUO) 3q}ySrwtn@L65%,KTjR5茔/;vb;/sgTrԨ S!BJL|\Wrl) d'NܲڵyM3Rt%yUCz `3{턾N]+^,QN{m]yrrRT@0'߿ݻec4cU*²dnY^uw7OtFJ”ңեz`3ӥm=NmE{ʪ?.ԨӧYmk+V=.4ds4c\Vkpy}3RtUYxL0PV{0U5ÇtZH@0'߿dRf) X~(sʲDԼ> j) : GJho|]Tl/ 'bz1{sΜj'A wgV"!&'U) 3qKd+) XN\nj5茔#Iɗ˺,j1]ZnO#z9{[+AZU*bly"a&NZ~"q+eIPHiYRCɼ\6֙3<]ړEl'X/^۳Gܼ)\W0@0'߿TJf{Mu}3Rt.E<.lXOm=N@EwJU,ԨztKͲrY0Hi_*%_HiJ$dX~> j) : tJ8{VͲ,K g=rq^)SI߽&&&TO8R2[l`V+֯6OtFJҟ|"`YW--"Q= PWÅ#W FlGz-˅՟'xԨɍ"T8R2l`JE~l[%@g4,)}Ⴐ,7˫jiIqp!j;w>3܊/l jo׼abB$aHi_o̮tIu`YWV j) : hJӒ"2ՓM"^ؓGm'Ҙ9;p)O׊ɟa*8湍)LK/JCZ~1" U0S64bbK5JuÒʗrﹷs~/L΁9o4Iꓤ[ړ!'z{%IW `) kk9kek%_\Ԟh_\vrmtn\v3?kigY?pʝV?֚ړȤ}}yZJ%= Rqϩ^jn@Hiqz}}oB5XFJe!ؘ䩲WjSݟ9'.r@Ȥs=+W'DJ#N|9?/\Gh 48JrYU,#R^SI1 =[^kUo6DJ#N|9uw 7oj 48+ZY`) ҧOK)[1 )5ɼKq}<@Hiĉ/?Mp_=%J%V jJJ;'y<}=dVP#jh[y҈_~g7sV@HiqڻWrb `) ҕPrk tKPe4Xf'/]I!OW?Wd'`K\}= #'LZx  ɹ5<-A `^[I"y<]~qQk(FV , hhO`[4ė ) B##sk~n j,t<@$*CNȪVRޥ{o6'"4ė޵kc`uU{a"Dh~ɹק-A `zJ_$gիvzPCȑڻj RqO^==KS{"D_rqtKPe4X|㇆$չslڄs:8UI@J#N|):%^}U{"Dh`@rq ,#2VwNx^wh7ܸQ^Ҟ@:4ėrgԔEJȈ閠Hi)==DئvmpNR)f9A{҈_ 5\uT3) B.^{M[,#6̌ºvm5ӡT|ggK͹@(Hiĉ/u k d48!9~[[,#v͛9CcѮ@tZ;.I XjE99= ,Hiĉ/{33y%>]tKPe4XֶuwtH^Wju}z Xj==~iI{҈_6VVC="45%ZKA `Y{RR/,ybl_j6nn61 adGJ#N|x\'A77g_qm_|p9Ͷ$c.M] Zb[c[)ΆXQVvi*%5l!ބpG 9g5{a2aoHi CJA .#eN}c1}+ds3s.k4dp0K\֞-R~?ϝ;q[j<6+ \FJzһ27gf nEv \j4ړEJO)c tgHi CJA .#e=JJEM•ImuYv2W$b 'N?ZZ nҞ@&<6+ \FJO]yMt@>G'ig~WԔ!'NU* xvn jp) .K0mYYyGtAvn2Wۃړ8D=1d) C~h>@g5%?$##6.1R&87 괛OjT) ?qbv6n1X[Ӟ@<4?oN-A .#eSViCkbB~-?P nժ@JOgZq[Ғ ࡙6<[\FJ29)ؼ\rFF@vM%B-R~?ccP{BJ6MivKPHipuJͫ5<,׮Iӻ?P]3?m$8*bu_@LI@'oϾ-(<x+ mY2RzjoO^E)š['tM @'Ύx+Wl'(lFCRΞrYN1)iBA]NG@ߢN7 R~}=(|Ni>[^ihG*l`m_UYXIl2F@#@NJ|H{ ^?:r䈟'ՒGŋffl1q[%e4v[j5tIEBO @N|217H ) ]z}``UrY3'f['45eY._N{5j4deEPc,{#+%t)du:24=_|= еBFP*i~iiom),7dgG@Pӱ== tU^QU.?C 1ƾ$D}H{ޠөSUmn.2Rj4d}<>?_8qhR44"` \BB:+ ݄S5cZ06IL!1yfwTDε9C[_}D30 #NP&`fO$tow4[XX8sIb1۾^O=OlB?j~a~`n÷V'~\~)]X~ULFJ\$GȞ=*lqdzZY@@Q}p׫0DBt a'۾_{T|c[J>(ll^}T辱X&=-f7tr9Ū64`2Rm I&elLZZu Hg<} V<݆$ ) ;VRu/24P=M1\w.r?t>9>xmyڝ'oS%ڪ&'~OLFJBAnܐǥWM"]C8IWLLH*7NWk1DB!a'|^>\*8Rw`R#d4-^モ~+imٽ[::]oW)ܜ Eu:~AaOSw`Rvu/V4|[CfWuGp*j0) 벸(o:$Jv7od2N/P+5Wgcr`Rv˿pAG-tt^lHi+xSC&[+MJs+=3LFJBAnܐAٿ_ZZ$V)6ώӻrE.}oHi0u^z^1Hi)_ӧBlRw`4ōDžskt.uQԼx\A &#TP6+SSܬRS/SdnN^["pu=^\H?Hi)_~s04{v |JfskD.d/}H-W)o|FPHi.˗Q~9qBFGK1R={$UivN,&IW| <{ϜVK1k0 ) ;_ZT%׽;5M!7m}^z](Qo{`2RH&KG2Ͳwtwrd2[8yR GPWleTJ&LBJN.OȺ`8"iq aHi)_~6*DҀlMԹt^K Wzg5_ I&elLvPiHkĄ,.JXɟ[9TJ& CJNt/Ni`>}H&kt\[ɽ}k*j0) $Y6DTJm8ӒHOzHi0AJb~5߼{!a~{*  ) l_ ZF3Z(>˚ԤRJOҀ?qbil&r,-`8ڻS*pG^Hi)_~ݭ{IPSؒoG!7 ݇Z:;UZ޽~'A &#̈TJ{t>MMr$kHi0AQzF=]^Hi)_~"08Rw2-)llnzrA:735*Eu~OLFJvJ&EL0)Ԕd2)R GP{T:3v"{#a}Ţ٣^GnԽ,x) lIqS̭tylx\˕A &# 29)*528*==21!R,~^ݺ\8g.tA R_U۴'&G֪k(GςE=6F=un]5=Uvyfwgf?gkǏ_ +JHiTꅡ0xMRXklBs'Stn%Z=gn^36W2 A &#*11!mmbY*2SxbےJzލ~5rEGJ:Ew CsMKi`YzSnv>'?x>-,ק¿2ʼד&L4# dR>0LFJyreTLj͚5!~*}}NnJCJje~r)7P_})b) h";~iv8=1;o^7.V/o-3dR>0LFJ\ {J}Jc~l$;v28(oE ) #~4Si,pO@N|tMw[\é28w׋dR>0LFJ-"6ȺurJK X֋nTJ=YM`8ZY"?9{{!AJ:ER, YJ\W'QJiobSщ[YqlKth]2R A &#,BihٶMZ[Q륮N ioeT) #tuCto >;-ThՑ>_}r\.QB ѩS*?= j0) Q_*UдihkYdFٺUoTJޕ dt?nHi0Ae,P[+AJ:EͿ}[0MfguoJ|&f;e{x[ӹm˵pYe#GTz޽AIPHi ,yihP)&ʕmtvАܽ"EJr,:3,4SdΐJ!2) 5NY&ނrrVKx< *.zOLFJ&s]9wN V0=*~!DJC_"}P!Q~-K0l*xh4PnO;]_Ίc|QvNa{`2R0Ą)=S[+GӒ~!GJe)?t lHiTh_|~YnHi ۉsr_|ũwb>Slw{'A &# J<F9p@!ٷEܿ_e|\4 M|?% j) Dm),o%:c_4I؏]u+"Qb6<=ZLSoNxj%;vd*sfVH^:݆5،*5gϚ^S_oGJ2_2/\NQP R,GP3MMr⏔FuڐJioӔ0p0sB#K<&=ONsMNF!A 6#20;wJzZIqLk4;vАd_"4XoכlVGJ:7# ۷koňcJNzp0mFP{YM(Li;iE!A 6#r4#)ig.s崟%BJ7PTR)v_D0>}#v) $S ϻf>׾#aaydȎ72݆5،J8>2iR#rky^b37}@J:oow]".3 3,hQ'!ٻW.\nClFJ%45e$L6z{dGy`9CNT R)^_ @@g녙(C>ȭQؽ[ې@Ida8bV~e~3>@Rې@H3uuJ&Z3<}3"DJں5T>@!Qbͅ .iŋQJ'/(_w2YjQv6ImHPHi@̞=q$eL$zb8~,hyx9#%+ j) edļ} =j?־HiABc*)/a_/ c~YEJ&p%H83#{i8־\N46$f4zNRO?> rIl_^?:3 k)[ոރ}DYܸ!imHPHi`FFڵUlIuKT؄ԯzUX^@"QbwtkCaC{{!) ɝ?'[Xk_0=f/(qIlnnClFJq횩Eڧ24X~U2)lAP&4_͛ΰ<ko؟@tdl?7#~wyy J/@ߏhClFJo/[1lVNXԯjkt#GPHiT'˿|7PfyJ>Mljt W~ۗ7^ɪ`:ц5،֭N?wuq#a1R,GP ګ\4_~a#Yg(А) 7$+O<Ѿ@׷Ry JARGhcaJ ~XP6f׫QMoUOi_GJ:aB`3R[]5J5{aH R,GPǮ_Wv4dۗm!7@ؖ@c#W6 ?ת[gkƴ=94G.' GPHi,LoG5{ҒaHR,GPƄixX{uiGJM}##ªPlKiͨ==Ѽ9W^Rgn<=i<ٙ}@3 Hja.z5،yIj0Y^־ BJ(2 S\`WpU_~b2aUt*Ǝ\P6;[jvƳm 1I3 lFJY&sUHR,GP߹#Nio Hiɪ/jJ^zzL>4U) 4QlzJ[mm?K۞8!)APHi\6IԫUH#R,GPOO S_@JM|QdUͽ{n'lv׷ZNTk_%ل#f4E%U)R4X>p@ؠ<^Hiɞ/qQW\v=) 4Pjd\^,,oɞ7٥+ل#f4G}sIH/R,xP/- ToxJY|ª͚JEqqE4@V B,Uo E }^uK*bd`3Rv;tOOB`9ǃ:o^Oi8˒/aOY`Y@cs%/մo-{ߟ-*5،S8tʊIH;R,rPom UgTS.km Βl&oniJx({>K*bd`3RN9|XҚ~;oe~A˹_}%Rgh.4\f×}aURYbCJ\P0A~+9{ڻ|^ggZpDS$0ssZվ r.ɓB:gp&, {7 9) 4'C%[V^{%9z5، e32"K/LY[>!r.u_PutOW S.S$%> ROi+^fecG{ӻPJڻ?.)APHi鑔 E=4Xf%唆tG$ IfOO^ ?V^%3كdzBǎIbd`3R)EEH 34dU{$R,lPZ55:8ҰGP8N/fFX9zDQ@'صM/es~KjS7c%]1Kh=lFJ#VW2}\EJ KjeE{u.q6aBֶGhWwu KB<ׯ',(Zʑ7zd.oa˲g;մt\.j)T|d2YZҾ#rࠤVut(^KMiXbzzz$OVKJB~\I{}AI]ZH04t0ժIp) s3^X^cLiXP(LLLKVgg֗$a _G{'{6 Qhh`H M+CU+~Ą@INHQڢԮ%7v8׾sg2 []sϱsr e&uDFO}kv䈤.:R<5-+EϚ?W}- 3sQwu U2::Ø/aaIhm 3&D?&e &ke޲GEk'ixHX34=k::T`K \_~),WXy0[{%޽0cJh኿-aG,'37#GR~Yu4<R<5-Fr=ub=u_uv<ni PŠIRZZBOՈe &jK:~AQv Ǻⱨ@gli4ŠIR: [4gڢ.jaAuz1mKU^⢰$ܽZFP~ %e gUp6-쵩?Aili )tƖF4λ> oliМizzZد |_uz1mKU^DI` tUz#bقZÕ .*_XZʄY34xΞU}1liМi)aŚTL@挤$tw@?np{%bقyeQxk.*sn>:~ IoRX34|- 3mQwuIZV,Ӫ0i[RӧC Z@+~9hNG,[0׿(߀ړ::&k{:޿F65-0<,)BOPP,> T+l~:xݫ|;2M'oz#s O\͛^D1sT>z?ݟWe_z_uOliАiuz>IڳGun2mKUJ^kA,& 33]O"-pUo@ ߮ndǐ]_7:޺F65-zgA,&)B9W} 㭕,ړ!ywG}3ٓ7fd.wjvL8;.fN8WL׳gr|I=@2N~kn㪣0Q[x$,iչ? w̉X`~ 3i٥okנKRy'l,j[]҂MDٶ3`,yB&{js"u%sh90i>ޞ|)4N;2Gwf'oz#s \Ԭ7r{+Lw^Ϟ˥% *Uo6'TG`*4H/1aILB@J˖ͽEGy٥'k-adcQҨkU'(R˒._r[;K?Иfp*~9֬7|'?2;5Mg{ܾoxoG+l~&S2Nww KLeԖ  A,&, {lu:H|X`\p+W,G^_/Y*i}}adcQҨkmm T_ y?qlX!lO{.wO~3req7T)9uPb1ar]ʜ- <.?=-l9xpv'Gl ɩړ«roUu:|X0@gli/ϓG33z)u/>iMmKHJ>lOͣND on;w/~yliaUG`0s4_ɓ’PNڡ@;S̷:{5 ^Tg߬.I{-s Ig}YG+N;r'U?M0N?.]n`liq!G%2.lu:x.Xv}(:x$1ξY}}X@gliԯ6I_~yB\z[M1a<9|rߚ.}_/~bN޽[Rv E̜- <.&) qݭNڡ@WeGjLneWp;ͣus;X@gliԩ ʴx%?zݖ|^1LԲےkE-0!u:VcTG`6C4_KJBe:@ɻRav ~Yu0@gliԩAIoNgȬyфÊa_v]ͯT?m̐:=>.]cc0![xB/yYXh) 4іt"-?̩n삾lξ)Y@gliԣyIN,RlF0}?ٯ6;iyXkdk`!4k塑3`6RY:MW5lUigٷ< W|sGS<ȚH:I]=:M- 7?;e O Ur>Ie:=(wSh`|Cڿr5aK瘦U_Oi>r?LгhT&S9НhRqC]s}6J:|{n [`'os( i$RMr.$NT_Ʌ iXn- K=[ǹ,k=W^T&(yWIOs*7<x uһΞ'Ȗɛ_SC) PYp5`g>'Ʉ~=@'U薳yaQ4x,[UUS ~̞ A$׍mx\E:@^]]s8v3JCYdBMdh^ԝo6g0F 915aKγO@TBߒPVı薃S؊alnǎQgq dKl͏( Tp;`W7$粒g_lNx{ݍRj+`Q4xZs n" KrxY3WN&}={=:O- PʱNii OI2-__,y/%'du-=.FG)M [=N)e2rb6,j7Ö<,XSXOfD~oHiP;fSƿ=[Ũ-2ss>ڽtx6e_pb7uzb?#kGUآY q Ɩ(U֛jn`!+q&}y7= VI8LE ffbUUQJVB3;1Fګf@iEwj,prmKj㵋wi~uW^څ=7^a|SR)<@P9Id}]V{Dy}rw ?@ )Ev5g&WNaXzdDĜ@]Rب{7$`}]\~^( S0OڻKE6aM7w萤R:Oy?#[ǎI̓>@Lݨ~< {bdl+#;Ukf]-nK$NZ/UQaIsuQHi`.[$`}[@Oj#n1Ѽw>ZQ-յwÒV<o JlGeYyϋrWsЗ3!3a,.BPKؘ6?qBR gb­- 'ԍJ0esnM{}kMnE{MKZؘg4|ORoI$Zko _>M0|2˕ZCBJ?jyfgIkz/(u:-d6ͯV[vI*3w\€~3Lf^왜 }iIL؍?#O)6cB}t>. {J,ڇ)R]jcFerL/Ⓑif7d$y E!q$}`}ƕ $'޳gr1L_*;~ Jgd$y5) rEm^=̲&/ܩ`)U?{r>Oήi AHZBJu/cz7i S0](h|}&{K%[{2ItA ~FJß&'%fښA͕QIhM?-W RFkە¶ ۟_QE!3I1suQHi`#o‚ ի T'Z0esZY{}\k&%/ӒnJyA ~FJß^myG{ϋ_:[xӗ%k7HHi9»_-|^P(6 @. AHBJ~$e{[B~M\- S0q\*5;?\^^qI<~܋j3R>$)6|_iz .whk5xHi߭$n打[UCBPӒbJi Hi`#wo~(iGB~1˳y }YIS{FG%y5) gW՞׵Tlij-RBPK{@4RݛH3;vEWB?F0Ecյ/\U~|##<X8sg˶ٚZI~liv_ݫi4Hi]zsz28[6/ kzaE:~-I7;tH{oFJ{%M9h~/MX`yQ{wRɖC/k+HSM=@PAIqf~~u&+[ޤyzenj4Hip|k_̓^h@Բz6<7D#ܽ;vH37or 42Wf7r;5, }tV{64a/v#Him Iqo߮$;[ )CZ8%-ϪAlUg$l`@{oFJxZ f[t-N\hҁpJܬ<$)e&츣9)&˧ {5|awPOMI?Oj/؝FzܑԀHdlC?At_M^</ϒRj0) sg\'hūwhe~s]y ;Wsf:XԾ;w$iWNi`#A&)`! X2丕̢(g~VX{YHf>_j0) sILW6'?]>ob[,gjs|AI=^;9"igx X~/G97 ڋS6''kA &#aS$ew6ъF|9[iݩxPz>pzA8Òzv) l$7Yn13q186g=^|==94Tj0) stwKLoަjN z?j\оqv/v\Ly,86~^ɓU`2RطOdyT{u<.l9Wq];\ϵǹе?e/1رyۛtaۅiNfFsa'Od.gfD,{%ln`S(7lLR9~I gn.k6Tq+]ZJ?#ߘd`2R&._^ 9Y];o}(xERz\'rGS?e<Y--zʨ?p@Rv uX2丕NHR{qc҂ڻr오sF"˞Wj0) '1۷/g2ګz[6vŽ$Q> ⣯>uxN8ru{i +X@տIjA_6N麒^ǰG<2")`! `@<丕Α2ڋO{,*Ӓυ ]0AskmBXTeK&uoL䵯:H醒-{-U];絏eqP_(ih{ 4PFopt'Rq3`N{wKI#nIh/^IR;{{kA &#u%Ɵյyǖs̢5X)h ^tuɄ v8c1IC aqJeTHjP'w>丂_S`B{R]]Qۭj0) u.)0ګk8'z?$OH{ U{ YԱ82;;%5`r2SB߾ 9nc08*, ?^Q{$3YnEPHiF%U{omŸĮOA9ٯק3Ʉ]:әxxm2QDT,H@\:4؊)n$tQwXg u]9~?gy~HYC&7h4wj_x:4)p4/2I F_)A8mkS/`X [6s03$Ӝv"Hi۰A^*+sSƖ;t*x7m<~rFsǨex8C!II3pJI=tk8<~G N _\,Gcڋ?#4Os܊7#kpP^_^]_="3''}-D)Z:Gm'-ڗ$%| ) $a?wN8<~Gv`:cڻÚ g{/Z8x%sW"HijjTs"EH1}fƕ{Q;?/u;}PHŖ=<@6C$`'NQ9 VgU]OlB{uXW~X{xŒY^J5) ]IKad,w$uzrG`Hiε?/qmD8`pPBf>o*%%ND?Vwu@{qXOK/]I=DPU\,.S)1*h3O4Enm˶p77u($iSNi _~a|O/`Έl׹~Ӆ~9");A nFJC׊R^HR3>[`+cڷ󖇃^<@v.I095C!1a sڋǫjW"Hi(D$ŜgWW}* ej4&oE4? Nˣ |xe :N@%=m~`4p8ͭ/gwVP~uc'V= <;,[oUUi/|O9A nFJCю7ŜwױG9UTh_Hi$ttaāpVT}2}0x8=mAg3S$0pzzzڼh@: P{qH,,,x K/k//#㺠fd|8H9zK~~,-m ^{S%4o?}W .q,8$f͚I`ntoߚ܇yK{quG_:k/{aeyAA{qr-V[23ok/keuzX}v"^{-([KPՖ,1JJJ&9~UTT4lAl/nﱓ@rK VX}UW۴k A,,qn%܌͛Mڵk'_@PV&7PȑҘܪNqJ$?}0x8ׯTu뺴Li@j0vٗeWԴ;v x8; VcT{qH]ҋڋNjD$sٲX̩jp3R>T[{Ε]49c GJcZ"cKd4jo &oA][+j55{ Ni __/|d,558g/`X^"\_k/@A;A nFJC޽b>RrgXɌy}Hi^Kd,;m315u==c$U| ) $!7n7i W{qojtк:!Hi(*/a r;ا}l!aɥ{#vp{D8<ԡO{x8$d_~4:YP sO+au.h/Ɩ_y l"ieeNCPPgOtq#` ) ^/[Cn$U| ) $!Rߜ?v R< V'!! xvЈMhߗsj܌ IiJt|"zA}ϓG.R ؉$S{kX8u<ԡO{x8$d_#_\558d_:ۢڋC.'-x{Ƶm;A nFJCRQ\ilE_lBFJCѓI25$U| ) $!KK% &!{}_Qw̋!`4bMOI"DXul$& "v N ӑ\rGmg_ܰϾOyyfw^ |qgM{q8 x'-k/}CC"kkAIi1Usvp(oh߾[{r(N?\]־!K9pJdo޽O]V's^w*. KſofFRD{zlCP@P{"7I<˷Vodhbs0wnq~}9 jߗT5s "ɧbUAp xֵWG $xKڋ߽{"c}j2R$exX{T|UA5}8|X^!Ѻ>QY)?4?/ֵhs8}_R)S {%;w^D? S_r^w\^-9QY_x[Jʊej2RderR{TYTS3?+.ThĐH?[Jt)s~]r&)=S x%[ah6 l8|间GK~}s?qE{&z{%uo,CP@r}[{u4ڼ_5$R , M煙VB:IU{U4A=+wvZ ~{嗴GKF>GeśI+e4LMIJGG# Wk^jS a]{{$FoڎKeiU ^I[pJo~>/'WSĝ.8ZrBY)śѣG,CP@2<,+;wj}̟] #[ōgN-BfyRy=k_HA쳒fN@v8@o~6o|R ~vJ9/;; %ђ%s7o!I,CP@bܩ}ae(O0BJÒ7O33OWniC~@z;$m͜p8q+W$}3Gpp 6:SyAe8Zⅲ̖obdDRG)j2RZ%uګ[۫RjfEݑ|ٓm5ذ{GKgݜ^BAHGG,CP@Pm jmժ.i+Hi,|6'[о`AfN@v8@XoȈoOҹ ~v) \vE{qŲ๛Sڋ7Fee瞓4|^{o: hf|{U{wXAJ#5'Weyř58Ծ/jd) D/mtns^wqk+~M KJi{{b65d) E/$i,imYQ3[F> 7jz9uM~K9pJbCC/=\D?AV69/\%-V<Wo"R3/CP@Pt오=5=%?/i[HilfMD˷V$}IU3 ;Ni B7pPt qs0 ګ5ז}MI~ I]ێ63׳HR EYEI˷V$}IU3 ;Ni B7>p0'HWsk9/;N.h/Vv"xG.oyI)5' A YFJCѱc{1eMENuv^R/ú8Ծ/jd) Dx7? ۷K|jOϫ9/;Ϟ^^:x,xM4%th(ej2R%uuQ3%a) EaQQ2&{ůִ$}IU3 ;Ni WH>fFFR ~_yA2C<p8eo}ujO`Vd6ξA_{q )ŷ)i'N߄,i,{5ÊsrF{ws42vp4#ˮp0=cA|@ZIO {8@26ɷ)ʣ'0+1y~9a@bZr;{VNoBPHi:qBXZ[6^^B9mkA4U4JNT~M@YIOp8eNIǏGypfOb_|>^Jnb&5،VIc9vL{oZ'$-4'Kڻ#aoe Vr^zDBڴ-Ni DogIQD?Ygnb_O_n?xJ{RvMj) ]풺rF}zm^Bɭlhw&/E!V\˒K$=mhH{oBIQD?Y٘W:mYa@b*WUI Ȉ5j) ]}}L V9A =268@JcW˷s̹adRR҂47uuJ4 j:JL^{qpƼc )g^u󦤮콘'ڋ# 4v?c%> Ig {9ɤO=Ni D9o}0C?Y31ϯt-j/n^pCVIA4A 6#Pܿ_XW7$.q/nhHEn|,rf×olN&%%-x pJ!ygf$b1k'0k@:΋̚0JFp{ݒcx lFJC]Kim_ZT#csڋ#"4vϖ^Zk%gWolN&%%-x pJ!y%'#> 8~Rb+_^&|({z5j) uӒ˗ګpoA:8"BJcIך ??:4)) (|*'0hr+68 x/ nշႤ^PJK0WhnEA 8"BJcj JNC2:_>?u2)ihS`SQΛC?=QA{7J0e]h/KQ k`3R68~\RZ6vNBo~_^!y.+ɧKڇN&% -x pJ!J+џ\C?AOfc_霸^ nڼa:;%5، %%ouW2[R]*$JΗڇN&%,x pJ!J㒯|0BO`Й[W:gi/S?9^ *h0?5XF-ƽ,BWX>rPJȈ) (wwKEp]y~ ڋÀ3y'rڋ`fgMAPHi`uuZRZΝ^}gYT ) gk9Aϯ,pP cNi D7E򕯫( :'J盼0 1~b:xTJRS4A 6#a#G$1w洨Lk/p҂ /n k'nlԳ` SQׂ#D?AӹW:SڋÀ#g/FTL@PHiXARZ{gJ*辡) W[of23K'{#I=;p@{oB|%_l+)űSo7c^on4N;`3R8zTRZjkޙK OTW?s(vWm"b (MV٤xAg VTk]C]ݤ n t aO45F.'sIs9)i/pչۋ\g~xFoHٖ-{3Ni`_~gf? 8~^dͼmA{HjjH2R JJ֭{GhQPA_;[^!/2$S},Am^~pJ<D?E\x~9z8z͌MVwp萤osFBIJbQ{J j~8CJm3WOIΌ[>޵KX 74/qXGO`7;UUŲ[/ijH2R17'-fuEnF:Oug)aC3S,jo OiBA_燝ڋ#ݗ /Z^|CN4U+jH2Rɱ,-fW-,-H6Rd9yELpSKX^@!~e? 8~K;W+ڋ#Má/tM{ 9rDTl@P@HvIu;EnFTDegԅik[@!~'OJ^'? 8~Z;#ڋCnR\ڻoH܁$#(vI˅ {| -4Rn,0_:4ږ-f[{{閆^>,y? 8~[f+ үڻCn_=WWߘG%MmXA IFJ#Qz{%եC{-t,-Ҁ2'd),JIPgd@$~==7;'elʰ__^t_, }٢uA IFJ#Qe~^{v_Ѧi 6͇_>TJOJ 潽D?-~ aJ{q]$t3=wa`@RVﷶA IFJ#Q%̎ګRYB/i/̮l>Sh9rmALhb AaU{2?}铪 <ǎpfSij *UA/ff^HT4TK\.'jDU{qȽ[///==~IY5$#4{H)LJ"RY{qč32:Hٯ&,|C5 @V6NDڮ6u %v-b[*e%Qǎcc ޒ%{Gsx?#3˯ 'Oτ)jA[ªV b@M/q$y : rJ>tΡy!2ڋ{j A 6#aG$ŋګïeA618FJ/1. ElUτ'jAmZ<.lkf" KRi;7OZG?AP_\%]c^BS7wgpPRV?(j) )i/}yOPD׏i/ ^]tޫh +Mڔ.AU͆ bQ$) TGr (SX;{K7nAvY{wR)IYllFJBǏKK~d?uQ:EJ $]>VuTݾ]j38}QM|#SOsX;ݓY!4v(x;z}R/5،%eƪi>~8BEJH*B,h+I4UI[{6Li8<hA}6K~<8޾ x{rڋ^V j) ^ݏs::GHiI?g׉r}  DBX̼"#)k;7OZG?APvMfcI}^B- f4,T*U׭S.0!qz^PG8BEJ+,U k+Cd:VQȦ4"8<hALebIsiA{qH,xf<ݷAIY=z4j) ;uuI ޽{EVPGo=\^"_^ ]NEarP'VxzD@SQO$xG6D?AP^%]3r8$v863ww%e<lFJNlڤ{r::u) \/|qEQj<.l>rJ#~GJÇ? ! h%]Y+W޿%e<lFJN| )0fWoڞYA#=r%8BEJ2c7 ;[E}X,A'V\N]S6HCCC_~oN$ OocI=z߹Ly%$eTܠ`3Rv3M3/h;^" bfUKE< ffhH]SիWx~;$wWW?!! ΥX;3ڋCH^}wxMIY llFJN^i߄n?HĐ@+\^$m?+,Uвfff;RNVk3?Z]h~IYM$[ҰV\%5̵k7a亰ڻ#<4Rw!'Kg i k>PXho}҈_~*%? ! 1zK~gzQ{qԜ]vRJ݁-@PHiI1٩z-x^j&ERJiȜ,x3^EHA]S*Uqas33=}mF45Gr_ GcI^ܙ- ^mڻˍHoA 6#aԘܸ}^=!S9Rнߖ} X~[:;#Rw}m~@ \Œ;^>h3}_fw}[RVn llFJr}}&cZ.koH錠:^!`ۂ x_4,ig߯ffpP)hj;6OZG?A <%]LV{qPZk3v/Hʪ flFJr_-l2f&&od߅A5618CJ;v ޺~t.S|} (#_O+W҈_@8g.sUb""m^xM6Q4F+w*VQ 7;+΍ 0WL>Qv P: \t9Nӥ(•iSMb~Y{}IYu_Y?#sN:{zZ-E1';{bڋ;4~N wi[Y{~Wίg4o>IMk[z4ꨡ8CJd2T@AFO97(#4*S7pPv P: \t9gߧG]Y#ͽd/Ձz;NPo4>`sfzYVPڻ#4}2َIY7S@ Ae %7gΜ߼Ѿ@Y Q}} ޟe~Wo"F`N{qjlrQmZYKv~;NPT%e&7 pz-izcer3%5sfJ 7ih'&/|4*S79/?Bؙ0G%ؙo~풾:A ~FJ#%efe.[.zkbQ{qx

2̌1Fe9"(@t;N(ѫI#vڻQI_mks j3R.4~zc^!/} ̎WSz3SSf::X4*S7UQ6MrC?A]K"F6^vMgLzqYCIY=q_'HiiV6^STwڋ#4%+k_M bytƧ2#:: @ QN ?ʃe~J"FsVJ{qdlrQ|iNjIYmks j3Rrㆤ&Euv]0M^!%Eɼf;  îwWDJ2}^~?kOP=f(b;Wk/$יGfw~?#,Mn۵XpBTwvǴGHi{Shɼ.<} AkpX^VaK)ʔ͟~ڼ Bؙ0G~UѢ3U#Y^5'OJjk;NP/pXmrLjZσ9AYeXY RP- ⣴5^u^%ڦ} "Q y%_=>%r(b;UQj|9:+x4]kS$eٝ_'Hi޽nW~mL^ Vgyz}A]{ZyFe*͏F%={<>%O"FSkj/2upssߋyIY=xН_'Hiࠤ㏵_SWh//ҀWɥPT:"A]1;W8g-K ACJ2?{&y| ! J~<1}ڋ#:S{cewӃίg4ha%ņI.=^^ EiA>o8;b_e¶ wf|\ACJ2曦sLz|  JYCC0m#|n.yueܞ䤤չ5):qBRo tZ{վTֳSڋ 4ݔ 7TF .ʵko˘9wFe*ͷ,xbkOPk11s)ݑW?3wY2),i7%j3Revm<|jCOЕ) ;{gVNU4vgbA .ԔАFe*͗}GG<Pէڻc+fzJd?i~?#\zLg꫍OeӰʰb-RiAPo2އi&ZEΙ)TC^~RN"FS1ڻc+'֑ۢARVO ?dA9EQD7A/*z9uoSd̔l)-ss Eۧy+ϯL>5CPܹ#iqޮ=AJ1wtH>{zy tv:1+%>[@= ј|$_að-k h'cy\+.âSV:WԾ-]&HiԵl^VRr Þ~헒w,8\GJ~3>k:Yqb4kjbWJZ܇ٽU>Fc*͏Dž_g~ PĬtNXǺ8#]svt j3RnVIqe՗鸜I:R_͇+'s*X>o-N_](hHi42dR->|k h'3 EJgHB{q|κ3 cu櫘wQ[nV&HiԻC$%Ǚo^}+l>?8\GJtabN%9f>ru5>&+roo4So~K)@}} EJgXQ:W WLgެںUTA ~FJ].)9δhk)A]p) օ WɜA"H؆!rfpP >FJ1/<)@y ELܘ+:챆#|Q{}wm.i۶ j3R. CsJ_y.R^嚢,?߹"}$*]")rM<}"ј|y f߭=EL>^:c]&v4Վ4A ~FJ#d=ǙQ՗\z2'mwHi's1K៌uabN T.a ~T DJ1KGzv BS6ɹw룴{/ŏ5SZ{}H5iF~-9twk$/E=6Pob*^r?hsa܇im K)T+:RdBS6OYcE$Ovf$M?MPIٴI{e/ 셉9"R 㓹 /9k 5k}4ѨFc*|sOP3]hpv_Ij_~#/~{adDTk5)`Tg~]{%~ٮ"R?'s\uMLMن!sCK )T@~K"xf/@iɟ3kA{}/㒦Uj3Rp83:Bn>i AK{wÌ KNs̺&}BP͛a݇ٸN$/'4So{g@OPܻp I[_>%<3Ǻ%Mg4! Cvl^}WNS˱;$tVŬɜA2$uٳ./4SoӒSD?Af֞N"x/%@ qDd x$4U篪GP;$mǙǏW_ra"#3ڻ-4Pw}+ O'j/ k+6۫} ј$~N7~ˆf("pz5}JVX;N<.i_U?#ccLk](ho^:_ jIRGC20_a9u9",u˧[ @J1J{v _tQ&1G;PjT^㒦Uj3RHkH 3'Nhod鄠֮:i E RS?5E-A÷gŠ.a[>Gj_Hi4nGͳS 'PĬr@ f.N7xhdDTk5) img ~Z{sFVn| 5>kYTt}?}J#ݐJ6{Kh#ј{{%_5kBk h'XIPl(bV9`"9Nj߲xj`@TOg4GRx]{۶ڻ4P&1KNύ|}>FPS0nq6m>6R79Gvrҳk h'(MjaH"1;/浯A ܻpTXA+_(j}$5?MPuĝLPg YAV@PѪFKRfM<HZϞ^}PA>d,[ O6|~r~{ ) NP Hh-+͆}|RC7*[{i(KI{'u匎>_YΜ95RXmA??2yNJsX|?UΕn z_fHipM3|>JY~:*4zHi3%{ѩ,dw +z[wVHipz˞U6a#ĭ_u.f2Gmm|;!atil4*(*n{D>;X) hMϝTN/po!+f~Jowks) TҝJy8a*~kb|ˈ){-(ɛ\9WeLnSSjN{ߎfHipX̨%6s^0- Zր3? ΂ppT#d;iNqSU̩7&Hipn㵣ÞUL½W{,\JroR˸✔n_}E|ߎfHip~b1d0ĺ{ bHi'a>[i _tr; Q^ii14{ w*Ο<[gB?qKÒG[># rP\lY/h08uQ -v5@5CJ#57ˏ9ܧ7iZCJ8"-7hk ݭ͙3sCJ;tyCyi*~Z\{D qO*udB!_o$ϣQ}>#afHipc>v0_I(/2B\I2,ph,Hw+knUV3%5vHipRZʃ3Vp  7gZ|4ý(eWk˺s@ xP js5ߎfHip6JY_y.N2,pWٚ%7_|^˥Զ駲LMqBJ;z8@yڰ }p$-,%K+r˨4,7 '#k&zw:ufշ㐼g̿=w/ļ/ +LǸ5 zx돏<ҸׅM, S j `ͷpA *Hiph6ۜ7_iWr[;!573kN<Ϙ^lw*?z`UUp*'՗>*뿗(>i׀4,+S'#rCP{=C c\i(òy]iv+qyb_JlG{򃷿+ 95Ͻ=KDDs (%$(48ݔ >"5@|b`54h|p4ͽ >_Y"f2ܛ]NǏPp;Ibe5N}TԖ1Þ>iϐ|hBP+b]?<2vNB_JziW{SlM|9=E!.^Ts$Z=Q8 BJ8۹ jk f׮>_/ JO&>ROah?-3ɖQO=gHWC>W'5 g/Nk#K*uU{/ļ7T¡Iv?YBvj~xfHipD(-h"f4;۹RHi$97h{-AP/(s ` 4Sw6l4VL0'C1yk 0Οͫo= 20&_wSg Qک)KE!:;)-h|SZdsn00DZo6'kٳvvLme_XS׍p/U,cDI[ހY(D,IjgŌZJ8l?Q5$۹:HiXP AEuL ܋E&c|>cj{04Sw`5 8?!Of 4D_趈½`RMvHT348GBvWy9vtR=;PRf eu(}jW˹sR{~Ss|;^$R tD'r((,?ĝ/_K95@XPRU;Y 2(ګr"nl6f >gɾ_3%yLÂ<_ϞqU0=xWWZ45qv”w"e#^ TZ>xOL̂'G_͞ }xJK^?ww'ӚoNj$aJKÔuh-l?YTͼLYJvH84PGe52Y X9K0`Mt:K͖sw[7=#-- 0̜&6L+3jAOxq$qq*+2%kЎwse)=}ښoNj$aJ -/>e;2YyàLې80 ]礉w[Mw`)Lip'3'aiS+dtq2JkLi=/yq(ҾaezQl0S;޽mk/N) t8e;2r,g ɢ!ׇg`4B׷+ ;smmb7=#~i u0̜c(6;IK=c> đuc@4Gr#4$D#L3އ+_1"b| {maz'l1 %[.q)Kӧ|;^$ S)}>ʂdգG~3I[n”u}B 6(fAL{P6՜9]=XS+mS+JW暣72uam}WUNJYUq1e[))ړEƳ߿Ku ;sP#H%*[IWQQàv);V%[ 8Pf]rҒ5E0ڈ;Ru~[ mO?ʰ &`J#nw[3MN7q7w2s)Wɓ6`9EMg?MTwi_L?Sמ&T $%߁Nɖ^e%69pI'jzE]h^VZ/){?Ϫ`y`A1{.;e#5iI'Ô׺v#fdLؓk[`4lD+_MyFxCNMq`P;֮]M,) dwuQΏ?ˤLjWx ֐T+U>0(}q?~~"SS'e^[I0?"w^_ g&閨O􊺰~YY.rw2(Cv9]MMQ6҆ $aJk WWS֤|@Z\$HiTӧ%kҫu옂&ۙ$t HikaSwRa|- mz5>zΐҨNNn99>@Fe4k+zE}#q/8龉\6_Vj,g! TSd=xеHҨf5iYiwu9PV1Hik?ŧ:72_(g ϦHѦZ) xKK'ު);4][W?(}cépZ?96Ko<=7 `Mz'r?ܮJkhZ\$HiTl %ҫܬwě屌!EJobeJe6^$b=xz R4Ԋ6mzC'NT֭ȑx:z<$F"$*_}G_A/LկH9q2}jlI3RUqɦ^/7= ۅ4J=״jcbY>Tk ^1P +m{>YYW3Si8Uסܸz\ۻ_Ŕf?mGWBz}jjSn" ~FJMO[dYzvJnF 7V{y.{. ??6͕C8%&}Y?Z5) ؆pX2Z}}<)մ ]i#=z OUib=z"Q~ɤljZiT#=[zݓw^>?rO!0#ˊь).j?}JDY m7/ )R_ >)VVMLʫwv-̌ITFurINɝ;]@1Si8UסܻzSM<ʗ5M~l ۻtA\ݮn<NSn!Hi`ĄH:|w]Oh&"4ge'ŪU:;6W=gMoΞU=JҨNο'e:46i>nJܻzScڞLz\'4ʲ`^updr A ~FJ,NV6iq [I="4ݛ+UynGa޶mV*zkFJ:9ذzqdȽ7>):3 ʫ=Ο,Z5) ,in@_RKﻙWT MNL~AP;ZjkS=5#Q!<%c1קE gLLM7\zTI =5 eoo14ɛ{N"Z5) ,JIv:|?]-N) -X.~Q=/ԁ34hٳJU`mHiT'W{%dCiݟ4OZݼz\+\٭~l;tAD"j?VjnOuU(xڭQ4ߊiuڮҞʑ\C*<2V]Tz, "gիg64+_}NtiL`38m7VLH4ϵe~/O 6ImJn<zz$[[j3RXiv %b} vmiu) ]vVuwT"jbª{ѨNҨN|uw)3]M/w݉_?.Jz+ l9$ރSvtA ~FJs %K]v!XȼB4J_HUw"z,eQgױc4+_~`KݝEtm,+rYw=N|o'@ <2aFu`-~?7qa3+C'&ĸ`B4e F\3&MTZݬ,yO<`^+}?hve g4*GHJ47Oj6$j4 D-uWTP#edKǻ&M :ߗ=o)Ƥ߳Gr?Y(|G'=WS"1Jm=`WXc?Aq&.˟Dhz`CI ~ A ~FJ85?;wjݶ|BVz!uWTP;KcDhLA'{֙hLW䤺]eH2d˙c)BjM Jq玤G-L,oD(?M,7Wҷ+*AJSһ%y.р At&{O>ehLޏ+< b̚!KQj$~{2J?- 3Yӻ ݭl8nKJZr!)jf{=LI/\"{6Hi4&U_~ÒCi+Oʼ=l=5ϛb[.$"Dh}}7ҲPzvL۶I*hwj3RX^OJOKkV/$ڛ!Kߢ) @cd3c@Zu s-j4/֦(őlԺH|Y=dw9qMD?+IY:^>u}xQZZܩ) 4/Ur9: s.%CރFt|d~tLezJS>TPWg4\ %mj~֮um[߶|闃y{rJVEHiڌO҉xEPׇB٩()Ƥޮ(j˲S:yV~}>qAMvΌ %mz 9xPRA?D5) VOM-ZmI3ZwEHi:lHz,Ι>uhm:3XFcRo";;UzDjaKOx֍g?-8%cAv ~e^Pu7G>%Hi4&_~oNܶMQ-|q9| )ziCvhO'_L/$,ޯT!Hi/K ¬Z~mE₎=?FEHiȢiޛʛ>Pmu#Ȉcx)Ƥ߿_r!vw: jMZm5O<~:>2a?I:H'@ٮ)Ӌɮ] gj3R(ӹsn8,U 3:ic//jZe qjܮ*y~b7Lz~}Ue.>~lCJ1)\]]@ B^v:۹叱cl;_4/ d{JAe8lw萤V-L8쎎37Wt셉ܷulL].4 M^ةYLN>+l=o6lpIFcR反InwUusJ E9m<3/[ﵔŃCRA#e g4P>v׮4 [tBRPgǥQRAь%P{A]gj7æg4/#Uޮ(*ɗ~7zH#mo<辘oleی݃d*ITA ~FJ9sFҬpؽ}{F3NӀi{zȪ~() Ͼ](KgӨGPןO?57>hL |ކ4^#7WWY!E m8+8% F'{d͙=0%峹Ye$Hi") }}5_uૌl{4 :4?w#%S͕oOA]ut<#ј~# -KiKɐZM[ldo3~k)A~U@P@6oE۷|aKз97r()  Ni년NY4蓔c@*u)s{{>RJ[{pjJQ\jZJv8Me٢G'@puOez 9tHR>7oVA ~FJD$jݵ]?΅*޴F~AJD>)KTiT"Zm7} hLjN%x󦒣X,+n xbozΎgW˧'@pEbl|rAsj3RT:Òt~D}q7kI]iVҥ)@DK0tdb-+nZ[]/6} ݓucZ9{_y~|;W)AV3 CJʑNY9P>&u Z[{~{Jn;|sEӣLKpR~Y^z&OwB赼]r|܁0#.IŪ;[]rq2ev3) TN^++ïJ4 Ȉ75eHiIgd^z隶c#f7Vei YK>DPV۷7ZTo|I_/[xj9 Z _zio. @?5q ̖XܐAIc;f4 se՝.nAS4Td1//_~]@JХgW#kK5A?u6#H?^1ک~A aFJx$رCR~:mmf{>R~7tO4> '<9o&:Ϥ,˶O QIPw^%©~A aFJѨ}M k#rf|9wOL[7A;$e0~kZ^3ۋd|\R5t@P@Ҁ^r.)`G]TEbj"Ҳ:RCf -_W}W#txJ*a>!'C_~<l,lۦkI\_zZcH}V}V pŜ =k{qKؘj3RЮWR|3V.~9~hv3JgIuSw.+>+ڻWRԴo}^ 's_ɓjplQ㻩$~s"y7^}PA?ܵ\VWwАg܁0#%L.?, 귚Ͱ:RsHnUmi-V>5W) ?7`O]WUbZz{"uz^l:]g_iDP@ҀvwH 9wbZHB_IՏa) EƩ;m%-TmiU϶oV۫ '_~. o@5]psMofxq&O'@?ܵ|VWwIod_iDP@Ҁvryim ~n_d \ͅHi:݂Y9Fo5GؘEA&c{{4d˿|YxٷO:Kn͗[F^r8LX~kbNч^%HJF5) {=={ .v_EAWDZX) i+yٽSw~{"uY^FPPQa囘=R~ dFf-H//m@?5z HO08():w  Hi~I{1ŖHl \Md8,TMՑ\;kRO!juv ^_?/ o_OQwͥg1*CRoj4fj&El% .Aj MꍠVѩ]`/.{z0VY~99k.}/n,]0WA ^FJNtpp])A qz48݂4 >!56^RΗ*y̡/ol0_u~ _ӽbziJ!Z!a婭}ϋnOmY,9*!Ñsgy}jl({Ѩ}*RΗ,OsCK^<]R2%'^H B)ԽJ+j2RpȾ}:w,_~^-9* r\JvT'԰}]@'׾mۄaXs{b?65g̋Œ  ó$KW e4/,Ð4wj#)AgPҩP) 0R ݦ4uߘBIj| :Rڗ?0  cWT="f^,i~zf^szHxt˃U@PҀs.\ CRZ,Q˓ʭ8* S *͑+zEPyyؘ߳FJ#\򗗭hTx 66:gneT=|{̩e^e1<#;hz|Aqjݫ@p'7|Ӵ Cx:G^=O'mK |c{qKIlnVA ^FJN CRV'nTړE۠2R@ =|$*g!a{ھH>P4/Mx55YŢ\(z> ԣoSP4/?߀SSNomAN'1p/4p#e~~NU64܁/#dVm9a w73*ne2R@>t oufh")jU^ʑ'ݻ7`g 󣼒GP:4p Ke~}#|^5x) I%{k zLJJDT{>llek8%*Gy׎@Pc_M} Hi_e0)FXb%ǀ['@|g >cN&)[/#ݾmm ihNړEA/χg*W;Hiuz4~(ߓƚ::*{|@P']_̌e޵=Y򝲱,t3Wu/R)[/#-&&ZII+Oe%+ڝr+*"rTcJs/sŧA5eV}e)pGo7wTJu$yDfithZMI A ^FJLNZ!i>x[*o tKx=3zM/ZF%¦WF8ǐk|qcdV!6 ^d~C{qhife z8G񚿣 nmZP AAL"\|a`ǡ\HUSZsI-"`Ż4.Ja=[vgsP`3ZPNpg,8ȗ4x - >,ʄrFRx\۾]xo-`R|[Z/]ϘOҋkZ;]^! `ܭhGmm{c(j- (ii>̯%7? Z>,DjqJne(jTcϟHKrdkFK#!ۻsL 2^@ p\Y?M/jg{)5،9KN5 azei - 8*p>9,%E*2F0)|bXx]˗oƒO5'ưuP}dׁ?Lf4ɩO,f8P~/i - -'S'ԟQѣcϟus4IlsR`MήqjQ v|R;xN @Qhi@׳gS͟˗͇inr>5o> ~DK+VՊ,Eq/{j?Phi?3#z^a⯏[v|h>6EꏧeP`3ZP"'y, nrv 'ͧhimǂ E]Ò{ϟ6@LozMM73alu0!I?~h>6"ۼvvEK)5، J#GIYϴN- |?![XUf@ba(jȈKN>Wg4Il==]@Ffs LqlvѨe E 6uׯK>\|t,;ˣrӀx,d;lߞ[) EU#vt&7?n=NZ@mʶ#r6V[Ų'2mJHWP`3ZPZgniH __H4GK@IV _ʼ/2EUySx;g4Ɇ7^Ejܞn=lhiF4)ܐP`3ZPW(x`;~KVp+I`:g|>m_e;(j۾];:Phi o~4*zKxV̕ ȿ2~Xh? vIܐ'O @QhiwK6 afU͙Ox4\h@O?q굷 O9@ݢL6ϟ{pkW*VpbŴv|X`lYBqnǏKHWP`3ZAk`aJne`BpNOx4bHRV*MO OuF0Y#\|KsVp܊''%- - Rx\nNx5،l%9 l|]cIYeis+ީ`8WG)j^ ?G;=Phib![go6~?'Hv&Kat6jINVc(j- 4Ѩ<ǯ9ܟyiZ ʶXI}㟣Q&71O4tb͛7oRѡɤp-O8ݸxIŶDXю[pIDJ}n%cc5،lP*yf(8i̘Ol4\HvY98q?[5jr֎'Z6ikjjR D"^2OJ_12ӎp`/7nN{5،,.Ddpb ~DɭNl4|zk^;;}l$d_5=-f4`.ٶk纆Ì.=)Q5pWѪO?1~/QԨ]s@F0d>'Oj?EC}r~Iyvjmrh˭_dOvPG۔Ng bGv) o jЌ) )m7L@Ṽ:up+Ɣ#F'˿;5Ƞƪ|0:du ӈ&7jʯnj:e Beik"1\>Q8`A>*[WIbabwaK&mw qѤ{kp hƁ쁰?Ulw4Oi2C9hn\dR_͘ҀBV͛BX'E?d^ɲ>") /IvnOC3L%l °wցP!N#tگ}DI~~1&}\M MA)jibu$ASPhpPޖd3f<s&*4T([sԖA1aҫeAF4p8~"asGAm/nJVl_<,]G%A3_gPfLi@rwI~Vۇ5Ƨ/) /ěyCcE'vo) {nn4I/[{Z3 zV+SX۽+)`PfLi@vI~[ݻuR\$:5GT1;eL ->T&ۭAF4_"܃ڻ o}{\; ŔZN+OWC_͘ҀN8W?`spr3Ec}DS^t=x0odЫXW N#Bq=md.ؘ3 6IW: ŔZE+#',]VI>ܿSPq$)Z۷drƋyPILixn>(ve+UsIl z[B8h ͿtIjg$۵8T ˔*;M VFPݷgmQs$65:4cJ}$-UNگd<O?y4b[Upo?*>ƼzP=iDSXn~74Wa޵}uNgO3ơZX4U`ev9gw~[3u5hƔ4+[%AZRf:7U6D$1gŋz#ᎤJ<߸Q=iDSn `mk]]+ ۍCMi+wZN2v p5hƔyS䖪X'[fd=o'4D+}௾xP}&h!yg2#N#Bt \mkW٫^Y۽CMi+gN29*קY |A 1dYn23md=iR S,Ijx=U9g:Wc^{ӈpC0-[bFݛ*˒Y۽CpMi+_FP2 W$a3_gPfLi@}ǑĹjiUbqWуcLÔF'˵ {)>t] 3A.aҫ+ӈv6>֖,Ȣ{v!Vc('5lbw][?QgWCvM3 uQBEt͚D]xQQA5VHemjSV _~I&d>7朏2E 6cK򑈤mh2ƫLP8'M)li; x> [dJI -Ũ(M~A߰Ax Y>Nk918!9찝[8| igK4*)ᯌ`QҀC%nj1^LZz8eb/Ӂ@^cKU.cLzr?=~lq䈤بu/=5,Lk3 Ar>pwKxԜ|svvD65،- 8$pi1FƂvIK/LPd߱66E|ee2HD_-{O(MN͒kXN 3zvv8- w%dͩvpD*5،- 8$$.O '9|{\ p)e8`[rq5\0g+45 ޾}[QQ?^D"_~~wIY|Z;;NOȎb--]]fE 6cKnk ǘ_ߝN54Xkh8Cx wh?ߗ4p"vzJi&׿={06i?꘬g紳oi{82#;"{-&w5،- e6I3iYQ@bK̔U| WUI^8;vhDFir^:8ngZNǵ oi˛x\pGIMiǷ޽jY`34H$ɘS{>)+Sx- k=|?*;iAYK\\GFiߵKxಭ)A}4n`KXޗ=I qؾ];lƖ$u|0FgdE=Y|Ė˅7ֈ)o M²ٳPQ㲮^ߛ4Gli\aQO 9gUG|eNYP akiN؇:Ǘ bq~?-h;?4e\הfeN;jk%﫯;lƖr| =IqW[,W\ԟF|̪pNeP",{[hGCFiom hnjco4e~G S! WWgY`34|$"v?d ipz- {sQ29n>~t$¾W]uɛ/?&"?: 8c|%nfKXF݅Sv,ӎovIkh0,j[pNXծ0t?pv [,`Q Vu);;pR}Q[+izk@;:`4JO_ے47kwuLP8niKXpjOIaZ֎o>Iۻ̿fli9D>p0&3='.ꕧ- [̬ˎj? ΞWN4yo*4/liRiq\<FR X:ߗ,2jNz1%'' miKYەLkJZ_+#X`34%zEt=ZzW$G`eu>.YBѣqvn2i&/Ze,N[hRP7xUQV;hTR_G K ^$Zp## =׳*7%e/dR;:`4J_Ȉ2U7qAi7xUx>?_S4*{ᯌ`QҀVtW$̥NʊzD"59"˽sQi\v"̗= bNovt&i&_K>_ pL O%niobJpV©,J^+#X`34͛%/͇IdEE=}i|˽Ϣ{Vv".fiYN ؄:89}}ozM z٤vp8- `WJaF3v|5ݒeY`34FI 'ϳ3.+0 li{.;/rCY#?렫As6N4yA~&},NEEsgnu}q,vnl cVe1֔h3l B* ӚX񡝘C4]vv6wvGۙz˞~u=#2xKzşsw9qB3,j[nI &pCYYQ?(S2.ryi ԭB^]#lzkPO?{9Dπź'ryyA;8"4W^7e鬫]MoelƖ I g>yF/ Zz8;G24XݹLWs.)uu浵iGAF<N_`#=9Ȩ- UF2ϝ+u$,j[W%/\dZ&4Xu̓MΥ? GR ^]KKk@F<_(x7 d8Ok?JNxV;8"4W},8.lt5tuI ^G_gQ@tHj^8#u9++cpcK44ؠIXFGvN#DVιsπ{"- %naK0XԎS:::lƖ"I +M˗SiYQsI &n6)y%'[<Ɩˉuu8#|{ԭ ;^gvtiSLyqrڴ_MvpDFL4_ܗp״_PS^nY`34PΜp y/8㊻ߖL84XE0]jL e8$AO%ZZ$ov܀ӈ|׮y#9/K`/ jyԢvpDF|4J׿/᤾X~AM<()uɤ_gQ@}x=I߫˗Mo%i- rQ)/f8O%TDs]ӈX}ccHne45y٬K`䕜L洃#2bTť59bY`34Peo6I q gue(n2Mdr/!W|1W04XwEӈ}}9\s3` B~`<- 4/5҂+OOί׵_P;FGf~E 6cKucfFR*qǏy"tOdE24XEhԐ_p&6V;rY;=:x\V͛πϺ6dN;8"#[@䭂gkgI6,j['W9&+ .LMliE=zLcj~-}lP,z#v33miSCF"PHH(L|(`1I 8 ! J0꘬va;tՊ<ھktW0_VIyknVE &cKU=I fVuUy86vzngUli0\xG|730S zٶmӺPO|73]D.y)#hOJ–X{j{g_vIykkSE &cKm6I 9 YcVBp-e? &ѓzd^ {PO|EGOg0] VŴu?;8* [@@vtGw'inO¢v cYNJXfe=ѓrWli0\zqi<=64ڹS^N֝Ё:x/rN~=,odD3XFP- 0|ԢCRڔ`Q@uTڥ8ϩ;Yqc﹝Upa/?XKʃA佮{LQO|I Ʋgu?Q9|C3)κSt?"mmܬ,LƖH`*, ic4`R!`DNv:xz- Q.ut~94/T*YVY7LM~ "q۬oJ–PapNpw{4H&%EY5- TvI,t- KS:Cwss,j0[zӞeI a0ɤ<- fQaЖ]`R!xRG34@ӈ';=!4/\ۺU~@go *y)#ٝiQI^g4-8@b"*-,{̌,j0[45ySSjLg܄['+jr- xQosC"m,lt--N#SϲtfXFб- UJ}-A4~b7JJڏ?,j0[k%t,;wNM΋iqc}!&`#;`NEaqC^qiRu1ŗ ~;Z:cc_pr^P;/Ү`Kxk7(݂6>毳dli V{OR _FFeqcNVA㱥pZGPndDvuzMNNԬѪKh,qo:M0_@[,j0[iϲ$0Ƙʺ^y]_{j-- ӻxvN|C2dgVlV^Gwz |iu55447u{ԟ>y1-h; C?:}bVpM=Iu?\bܬ毳dli .],K_;tyuݟSK*+bK.'|W~CI}ˡUC];:>4YUWWiQxLnDugq7?AVV!EMhL6kE~ʪ_{XLxO~ 9rmAХ^C?N'i$܂#ikݻ|,i릻2+է~qV"r6ui ğ&*#)ako^ ) T|=qlV0mWХO\^CJx'.J9SKZY[`3R opЋ$]4f$'N} QXU|>TnqIi勵 OΝګÄE8"AsTỮ 䦧% j) 3q$m} !nU=U@J \-αt[[`'R~by=*R(Mi<,j?@j~^Rɪ|J.]G''ݟ)c؁U=OyG@M_m) T BrRsG{u翧zŔR@Y\[^_ZR^4ilFJXORMhJV׋246R,gaP?/?~v}@,Li,;:O ʳWڋ#bHi('P߮BMMJ6=m5،֕+Ąf-º^Q-o#rv/nKНn7nH*ܞ={!3hpPrUqofF{{pp"#h_i/!#OULA{H>MPHik=y")877gl;d6HiA]7vL1$d-. Ձ0Y@a_] W2ڋ#bHiׂHg׹]]2d5،V.b&7O?M,o#r|UO<1mMi?eOWdmJU%W8CCTEAmj/! rE%4 jSnؐᅲ%f[MW̊.Sr+b](a&L2-k 4%õ@%c,lݩf4GϜyw) $cڜtX3 o)c}h  ԹlVjrV{"s,Kxض’ҀY|DžR3,.8=8„7U:ǒsevVxٶd4=XtBX3*/7%5 QPoOɖiF浇*vowjw D) 7kdD^pl[{m$7sDZq ) ?x+Vy9VW(YO% Hi5=*< ucƚC}M4f|4\T1&]ZdQ{e /.(x<(\yS{mDFp'Lk70!x`a- cI=F%wy(A AFJ!w$d5dsƚh:R.\AٔlVjxR{b^vviJi^qm|vv:=?=i&4#z+YK⣂`Wz(A AFJi::g t2eφ㩹Eh  ԱJҺz^{2=-?v0-\) ógڵ%{OTFp!MGLEڪDn=*$ױc>JP@ju$7䲊F 4[g"mHilVd.iz{7?hwuklL{ԡg"-_i70!R(6%R/eXEw:pG j2RܐʲAl<_M3 cPVOܸ!ن cJi|ZXMdFpnaBJ0i&ZZOb C'QdRrCViOOećzd(:c4) ƠKNiJV=Olپ]xjwƔ-WwX͑+Yys!m$4\/wr^[wC`E|"Nn0') }:%\n8=jbWڍ#LHi~[ ) ۷Oxt}5) ~'O ɥuf5Q؆@J@:1ob}(jρ޼^k6ix~.Yo5LW+&4?u#q+Wd(}=D£k6G j2R@C>TxOVkˋuNO4 ) ~.F^SaZoۅ7hdx~q,Kdׯwl[{2#8_i70!w-Vc7jOPř3£k:EP@G“\zxկ>g  Z nlU ^CZ ^~;Xp޾=VvJVp\h70!gxR>nlVxqu5) Q NO0CG[ ?R5M[O% v @xͱypء:VvvNpk70!BEV3 T!<~ #򫲽L7N||L># Z#.D*h*yDz7kw) 4g[F0ڍ#LHi2ryJ*]Ӓ/d4^~=n 3ӇHi zڪk_xiwx2) 4٬cY%{vXATFp naBJիt'цwYgA{R)Vo5) @yDz$W'fVd("Y4ӊoHi lqMTU:|)=xBx54=Yˤ4^~tw Cڭc=i%Jq ) o#wruVф]Gv]n=~j2R7KN׍5۩VwkxX+  Z)~Uz[U/9tl[{VJi~y@d[ '33vR@j,)h:t)r;%vls5) e~8c?H"XW|PumM bJV+Mj6!sKG@sgy*ss>%qQ/Nvm@J@UYPfUڛ~𡤰=, Rc߯7^ I>MF{qTR@SH4WFg_ڡCexyEP@TSLv5-.iۘFJ@UYP;wKOa=~Mk?U[ra+tfG%!jZpԊ&2 Vx@Rs|yEP@GIll4Cluoq`rHi G|DzUD~Vt>T_J)yݱC{oጠ{J{qTR@0L Zi\Jj`VI򦣣" Hi~ +&o?M(RB*i?uwRXͶ]ֶcǴ|ʔŗ:ɅZ^K G%!杋 ]+t^+HJ7{C5) \έTJr''MnrzZ\#crsHi \Ba}k?J:[qqLi`]|kj~k9|=#(޿^nZiv~~ n.]uuvj3RO J\#l'!-)ۘCJ@UkP3UfsO)h+ ;7￯= U) _~׮.7{$4s hwmd^+=+]ތ+5) fa&7XOWcz6rU]J93/j fYkoTqJyݻW{o68* ) HSVw.&杂#^.o>_! Hi><(ޜ9cxƾ5 4\9G`ymkn^/?`Ineګ%3:^،)Zi[>ڏXafIڵ  Hi>}O]h;71'.oLnc) !WARR|X'G\έ6Z@ũ^/?` k{xkiAmKh/JBJຕfS46vBSzݿџ  Hi> dq ﳥ'!gF o) !WA8DW8L:g`6ym(_u4*|Vrs9RpFPz߈(8R@0-8piHi?VA aFJɶ]VJon] qQDc6rUԽwma-ΉYG)ys;qB{{|Uvz34=V߱D^{wT R@𜂻BBvsᮭ%/˫؆~0#&ޜ9cr쳅0erHiZmIa-N][x1agkn^(_-42r͑#c'Gx;=;*) @x2/qʼntƞfG,fի}C?AP@zy,wr>H(̳m! j!O#út^G;Ķm6qT ) /?x Νګ%o}4Q1HiZL n\i\Jj`I{zY#j3R_-im5̓l>/&nHkqƜ3\[=}:PIi`MM o+5HkiQ1HiZRH4.8sOh|ܵ,a[f4SO\/~`(mrHi ، ki~LN kkFRX/_ѣXjZuv=8*) @Y+//Xr䈰z;' Hi:%lϛ\pF<w &7`VvXO][Xk}@j'UdeIkcXͬ.8*) @WPJp_CIc?NP@ mwVa)q-33Wx󜰨wݱ) !WSA}ִ찖&O߁EР7PJi/_KKz32:yFPtڋbt%셺'z{FKv2A aFJ0_*Kerܚ7:c#or)RB)WҲZ=a[KRS) kmtZ{{<-hڋb ]q&_*]eŒ`mbY>c$셈<93W0) !WkA]֛21}@9j-"|-[W'GhoN *YQ1Hi꜂ޥ?O_CRvX/f4ZZ$r|ed:8M` [ v-K]Hmv` lnFuźef`.#e7 xe3yޯ_grs>}qQT>=HiA}!mÅ kp0×Mr^{ ڋalp;[ܻxްt&LPHixNgÓqQfJR4X͠>]1yk<.IOkmxn4Or^^8 l\%f4Y-yfv6e:-=?P4X>C¶gÊ3V,{{iol) _hFFB(+,k@JGtDW/c뛉 aeE˗fHiAFy.VᤧO%jg"&|,-ݻ=w tcڋ1lsj 8|>? +ˏ W4 yJm!aQ#6[CJΏ$6c_,i?Q{Z4oHi/.X1$?ќ{5I7p_m._vV*Wdm7ڻv4}1Dpc(jԭ{kA 6#Y{gFD>I]?x>-kp$G6k+ڏpQ_yfjJ On5EueaPf.U*_ IԀh4F1!P)K,' ")5)ɈL"U~_}h+CRSijڮ0_n2gZaM$TooΈ6 @J_.Ny{xA?hu|kgL;S^;Ogr_%R4GP ;TvF=J~qb1Dz͝ ##\(jmmmWee%_n^STn cZS8tG?P_M є )[Gj) g {;T &WdHiAD;`alA;sf.o#V(*++[Tcc-ZuR?EPHip,K^5/JY;橥9IfsE_Trgi69|X^ٸQRӹsz92++}RwHi%$Dp4_ax\޵ w"@g4%zz=Ӳ?X|q"@s2ݞx ˪~YgKܙT7R<ֽUJ .x:êMM®8==~TٺU37mrl+w`KW?]s%R4GP/_Moˑ-ЃwQ^P <;v^T։n9S8FJ(-Ʌ׾~:Xn3R*z+V]7Xy:9;RÎe 0_'ʱmێW:4FJ(9gGӂt~Ifs>'[SWGPHi }񅧪92"[}yuc]1UeHiAZΎ=œV :%/ll4ėfITIV;EJ(E}R87fYFX cYΡCjuB?jVW;h񷚝pSWwp(ː9u=YwmӶEDzm>l4ėXLxR\Q\@W eT}JΕEg0ﷇÞSSNEqfjuZ[xmk3⢾8>SMHiA-p~`㝭~Y5rQ`4ėI=rDަZ?ͨ^"'WG0͗ٳ_RgÆA ڢNPIOUӝt6hs|8qR4GP˴~?390˦M¶ga0Rf\0(}zoS9Q8EJ(i73xr"c yqƲroDV*Ey,W_Җ^NJj]1w|B#,oka*RfАZ^H:1m"qtg?Kf2ζmUw A zNP=0=\y/ꮨ5HiA-v{r>Ⱥ|6sxR4GP{/Ȯy0SQ!j###0_$t{:HfgS g_t-;|MPntp挧YrȋӶlR4GP{1\(ozgp%ijW5kyHi/_[ iwՍT{6.koTQ}tgu[xx|ΟU?Xػ { ,u&ADz])o54h4ȺwbjSUpU!a&|!< X.4}|YD M5) #xgn?7Yeq37}, *`uv:¬_vvtij+m)ۢ+RAQZCi$M$w7;Y쀥ro~5yΙsgd{_?ֆl'^t^o*Rn}8- jQ# e'2tktQ6mG/8 qqseA]48E&>.ugSbd{/*t1 4w߱cZP=gJuzzvp[@b}xw MLyV {<(4 j6 Fs:Aw8Z|Ҹ3S NWicliᄀ!KzЬ,;Ö:_euFhZ+> V8 5*Gͧ2XeSL._lipz 9mUCxapPZ쳶ǀ/}Ţ =rXGOm簥$taIvU*q.2g2`utV,L5NP?s/q,54]wsjG cxRъjv$[~巅7v^|2/˨?#۽-liI72kOצMV3 A8(Ԏ{{Fҟ8[Ǣ^[ϏwY#* ʣZoWItliYZ=du+*~- IƳ}\Vܝ>s9N Wn0`4=@5|`cR*#ÓU}- cQJ}Ɲ7-mϑ|JQ= - ?Ȉ  ݽu% OnaKH>eOFG/8 YmƆ'┾>2U}oq,5w6mᅱ1aT6nT٬IhliF^}UxCiu,u۽!liGsyw=Nn0 aڽhkE#Gisjlc}WJ⠾>2U}q,jz,l>b{/ Vo{ $[~巑(NU*3c_exvp[@"W2%׌WU:-L_٬+#NpY {yvFeK+lipڐ~Zf_+ WtZZm{ $[~巗]7Q{&_Ds{Cj"[;P7\6Ly0z n 24'[o͊NVW8!QCm9<'\Bz1I`lbKOr =g6 r醞\l"[VrhRIӒܵu+#Np܉׻mУ:{_aKXLRZ63KJYAm$bKOr fmdҭE۽li6us٬S%M>,^[8 q¨ߛmHA'Ǖʄ?[Ǣ6*ł=DZM{̌橽3_=/U]]g@Ⱕ'^~ٷOmR#TwT%li>|Z~̵75%^o"V@]iuբNJol~Oq,j}gi}Fv#c[ H4o;*hw|gxVK˶{<٬}#F۲ESE8.Ν* NJo8CTwV~˓[\b{$ [~巣g֭g*\\vp['Pv4Ju͵Zk~ϛp_icyh}F3{?[Ǣ~M':w+K sy裪P=- ?Z74=7}O(zZD([GN]+ .fZ+͛ĄFJE4,TJ.f.2u:%] 58hACr믛mo*:)Ye̖DZm3狒!|wZ-˗mπ`KOtZx=oWQd{o|U%33{}li^yylV*^maZVjpim!S~):;jۑ#/cKL|աYtnL-1 [u,=|l. ˒l_cF(NWOr+dZ%4T8.(Y;Z+~Ik|g++bKL|adDz&㽡tЃ- d*8ǯ/mvVXu# Gi^tޏ-ё9?VȁzWo2[*uZ3߮(ٿ|~]uvlVMli/:d2^tNoR'_Gs9/li&5A#1Wnh"!::$ XXu# : yǁiOS!zoE֫fJΞS>v~<- 3W%fg&NHwQ[F3ҧ8: nfEc\+ϞLGQO_dnL_9{n(v/ŖD/OTZ#LzfYb`@35li/j]s0O>zXKRۘ䉃\iU#T2݄=~nJˠNWgUlE/0Eٳo7#0_~5I&e_̆~1 'T̪Lɽg9jO}O,/8gӢ~@##NesQTQzW]ݞS<2}֧vdzFH$e)ն@@d/`KL|U]h~#RD[.ue–}.rF9}{ũ0/>VCCNCQT{7X]NWƳ*a:=SS/`KL|U&%1c U_r`K"AjOyG ԺsctE'ck&_KDOO4aۧR;gubGԀ8B&G!pria'^~$߯4ڷe穢 84|Izqy_ZWyS&X8 zz ^ݫɠ:guRA q:2!xEhz+\\W?ǖxT*+W'NwA{t[pTü9g!쨙Lj$W^>_F3 {YVhhiK Ұ/?v?r]1,p{zft [jtڗROO/iu4`^m:|8Vgq.]1CLɔ%561czGQH[D=x`z[vG^"Ewӫ&cX 1X27U6=jM{ZV.0wQ<) f^}!N>j_Tӥ֔0/oKAqzA z2˗9K}o!Öx6zUz7p˜v۵4ɻ%]'jƢni3Q6!N+Wrvju(S]}|8P=^%|T((!uua–x8sFz42=ތg,-[2=ǖy=}LgW`/-{)lB`+WJe::lA^[l0 qz'2EsDܦMMO`KN|{:%| Ӹv]w.m}- ȕbqK:bGZY f7 &q%R)u(^Vkj5=`+R[qz|iCD˗5UA8a'^UCL`TNAb[@^ήҵ|N{Qߺ% fR)A`j(dV?&GX\|D^X\ /Ĵ!"чնm'A8a'^Uq۷g@S߸vtZc3'aٴ1]-ɢ޲E?yݭ5l{O2jlTRMv=gEk R*e)y=fzK$HZ2 Ұ/6u/֭@*?GW'!+Ii&K|KGFŋ?`ivPkL ӿq}T݈ PX#Ӧ D!Zͦ'Aa'^/lǭz 4 9:v77Cd.,@`BAء3U6z]l~HwOXcYgޟ8QIuFӊ:%+ޘo1TQ3 QNFqc:VcQ%"Yx8y}?x}',۝V|CGj{}'-وq(OW5opXe;;[/;;u0/X@wf?ϑ:pGp[7d INsﻵ H]/@"#Nƍ9ReֺߛgJz=vE0q:~'5aE!m3@+47Vor.Dtwoo:%WvcPbK\c}!U-8񲏻ϞU fU],bA3u˽lKdتi$qG:$WxXFy%4k- 3MVZx.oݺz"*Tޡ! ŖW\o_\?un->;7W1EB4D"UҜ9Re77[tK%7[îJtUuag)KjjtM0/d͊rrݭF$:uu@aK[.Ϩ Iꁿ]ݾ)ޙ$0Q$HrX=oG}ߔKj89u x4I.ӷxgʼVI\xhzUM 0y{ D$lC@+Vj_`3YuO`ٿ;"SS'`HArUJ"/zKJzw$=_A/Z@|IOor5gM}:I;}ab@xXua3wJYZ9@TZH|&HeV[o=ޜ@r (&GWh}g^7mzY<{A%%E#ɾ!CfzzGNMi&@3:w"-r6SAA ݂` E_g@ŋ;ϥS˖tO`E[ZTqJP/, 4Ijz:$Qf WCXן,BS$bKo.U>d\ ƶ>Uu!PRRӯzuڀ7\sʡ^3'"ɟ}úkcKO|[bQ߿o[4E `ou3gVWyn; EӉdUmXrUsC}ú0ŋ,'ǎDtwŖxp*ˑڱC;!tOƖ;\ؚ23ËEi(]l qz;!OnzYvE0q:D2DWb!Lrb6sGw_liG[mY)gu`Bl>{4x'Q~Uck1Mu8l'Qu䈋@ Nܺe^- v{zc%%Y}~Uzz`6t9pGrU}Um;#0BKmY*٬Tw_li'Nh _DЏ- ީmz"5^,ᄈ-KҢj4%y>-6,BWw #N'MKú'0ҥ*,7:[f#jVs-nl=֝D?Ч{4x|ɳ3Xuuvv(E+t;|5c'C>Y\<%8>9V>E~=Yi10/Q]]ҥs taȰ?RPɐ!0VlisW5JJvp3۲D9ͩ{&44EK(gcNv ; 0q:!EmvZrKF(.V fe?x{4Gŋ[ ?+Oө{[kŁ&+* CZnw DD1:yҶ,5-Uko2vsIszr}NX4Njr[+ul}Z[r9A8N B 3juXՖnuzG8a{礏ၼD"!̺tuNR%uOu/JObI{)ǖu34YbJW_紺:qJ FA|+L?Wung8a/J_X2`=A57˧2{- 39>O_LF0QaϴtkI+Ö4^|V9rC_T' GP˗UsfSS?W햾h1+u^A51݌%suu-,K>! 䝨cKL|xQs|=I=ȕg~iFx 4)W,iOBZQV\$U=^- ZtUkZυG² lsz{t"N@.\P55u[r[{d^=W8yO_X*p=D, W,nj[ٹbYe@ qdpV ޽@0_>^kdD*Q3J@! 4uU~i.r9aYJ!r0:m g` sd^+[z8VCH#N"7SodeCD\wj*ݻ@0_>bxX$w/k}>=%A+ۮ!<4hQ~ 8 Vo MІ8 E"@´,׷O&񔭒7sŲ"NÞic1 TSپ}g@0_>5Y[+y /SԯX~8`KvRLVn!ijxqTd2>iYUԖqՏ\˿&.9s^<%I7sŲ!".j*=Ŗv²$foptT! 4lgFT/_Tv)ޛjd$@4(\l**!58 eLÓ/+S\N z8R74Jeϔ"١C@@0_>GӲD_9EЕ{,cKΗ) [3#!Yχ|`Tkkx !N@PTM,alqո~Vq@f::8+}CnpCعS)8{- 3ZضMn&"=N/{)lip߂څ]x*BMQ_/AXiR+?'^~fH[cU뱤=>U "NiX|–'"Qfg24ė ǎ)ͦ&!T?v'+_l6i6}Йf ZϊZ}m͌ TE ")+FBsa kf2qM<~$ΦtQC=E NSWίY.Vζyx 7پj 7w{kuZcE/o44ė )`\0"BZ4۱ :Gl0t眜Tl^iHfmnָ]WHQmv NTat|[('L?jҰ_>d2JGA`Gj]#ƖZMgUl0pnYkSj[cuKk@Ј: :,-CJf8v{zIׯF ͞T+wCϛo?/cmmC [vˇ#40kx"BI]X~gMO ǑH񟽦a'|vMn'`t ط a4\mQ?%ҏOdY_={:[mn՗"FU04$'bvVWeŮH??uXNc[~=#= ˦_`>(oFK\MS׬G؂- 1z(`e>sF,E} iXeTp>yŢHlAFMї7"'ٻv4RҰ_>"wӦ`R]~.M liόl0Ҋ##"Rmn ѠN*}mjϬMOOdF?Q8u53KrGrK~t|[ btz-*=pcSR,$O@PQ9y퇊(Esd:qtz uN*w3"GJ&9a'|D%gm<0; Lhl>G5Ջ- 1LntjQklVRJͭ[k@PB#r9ՒY?}›+cJ]=+'8N^yH39=c:=[vG3ZfWsӒ ح,CM Xj+Z kILH4֊0<>li[WڵZb0בydf^w eWίs> 4r=.;3)ӽ[YB!3c+Ұ/:LM gfgM`iT5- >^J(Yݑ\JJ q PH)gKW^fU޾j94qo>#;qӽ[Ey:tM&Ma'^>49^~@jnvs93X,을!j[|zQJΖjqJبޒI}qzݿ_)gz;&ei#_tEswo$}X]uAy2=*Ɩx$pԫ3X \ B#czĖdQRw֫@wy}LN*%!}qsC)jȎgӽ[I)}aKN|sݷ]Z2=55Y(-WX"S0=G bKU}xj:kQyr;uJkk D?ܳgQs߾Ч}QIE³)<4bw\$^^P4ˇ>#rC[[M`oo8\Z!j[|E^+*K<55 ? Okl,둧t/Oh!N}قʎfUHsWLπ a'^>PgF<]u9j [|Eh\i>Gchm $+¨۫O*)="@.Iӽ[]ʵlz| [vC%7Tbz k|3&̥ DWLQSs/jGzqmjJkk A_yB5[ZvaR%_j87˿;{ W:;MπaKN|61t@NǰRbNK1s4ܖux.xgKKN40 l}/ N|0m.-i?ߨd]= Y]@A/* c{0w*t_2=6ŖxAU(>x`z ;Φ{- >E=H>LIlqMI-GUFZQGv+_%{UV`Sli؉|Yz SSǰlJMU!OLQ#sEB'*]zyS6[EI&PH6tRK莌%7 UAF?LltvIÇѫT14Gtv*R fwEeT!j[|NgrS7ZraT;yRk_eiNajhHoo>aJ__''@Ul Ndӽ[s7>`cli؉7T/2t&MQ sE=+zlk0 j 8 >42"m?1m#Nc_\[d`w먤F77=6x -W(./o'dT蟯=s*S_Y4%yZ{\__5iy*r5O}ꏌF@?461$%;NF_~)O_ӦҰ/ՔϻGohLObDeRM㱥up\|g\^1Q̌<&Z- N?8 O^m}?QЌ8MĒ>bt6Z\tAaji1=6x~8' x`z- >o?S:z1'sG'#N?:%rEVu=򔾾/il4#Ncs]]赸h{|[v7\ǰFYF-Չq;[|NqQ׊{;7t9|X)?ZJFFWWӴ8+z\ײ|-fw9>߯/4S"5ڴ7KRE7 D׊۷QG<}㦻{Ұ/FohLa+IqL*y;[|N}Q?JYNN>{6o *G:~\)g64&]d@O4*ho Ncsb[x(Lo9y2=Öx0el +/Ma7YL-U;284=ĎĖS_Թ|G~dK}ouGKZ^Riy/+Ur;sf)W_v';err_iPF&&yAQPYPz^^5gbjugXvX ;7uf*{f!|'ԭ@0XQå>gNujlVcTGli_>['^߯ Ycʚjy.}o~Ö_xd<\xj1 ghhP4謵v9m6Emnf!74V4ؒǦ!#^%'|L:fbBBcYS-O|W5- eQg,;tdKxltSO+a8ϟ BwqcQ3hl.yQﺟ((:E'":toB1 IjiQKN|P.~@4x k [4עȖ_#3>u횼UN[*iYiKNƍ :T@iΊ[]fnf!4re\vlCjNIھ]un,F8COKiiV>L^숨V΃YXK9Du.~9Jq0m<Q@g-{'%ٱ7 [PQI[vo tmڤ:7`K#BArLKԤ:}jRVV5gliМz,7ȖƄ_+r C^J{.XutVyH@3Po8PP uUڛ\ϿɩRtML7N|ā{jeN& hNݝR5- wQaz\utT`K#s$'4(5P_>%c73)ZcKj{=CO >)mgnygE(XuthK{;s^z|"+x@Fv^?5UvajmU'|h%TGg⫮fG"ZcKjOߛrd#䴿JiyakjE"XuttK{fiڂH>g?6tuwAdӨޑrjAu0:qBص Tkli_>R(86 jiLSBflDZ+w- 颶ΡLzMUvB-2ea8DޝXy RiTo09-򪳇ѵkHNP.Jutt V,ˇVW՝/Pw^V\˳#+ h֋0_v1Fщy߃={?2et%왥9w.۴uwNݝ "+HQQ\Qv ^W=e®֦:=^cKCT*~uJ,Dut-}劼g~I@y..oi6ziެ_ȨR٬c*SV*Z~:<8%<婯AZ k5:Y↳ZkjwZ$7P@gožtwsv1iJŬfTfaJ$TG+li(J:::N+C7“Z3gT!|ruUwʉtx9ڡ['LyZ>E"xut-}g~qLZ^;&hbunQ<._֭={TG+li_>446i~F &rvQ34Öǧ"죱9SY{X: :{=~?v^z~>P4VW#':xxV4d[ė=ݺ8gfE|heDŇCg`ө4 4Fh,ׁꊨ_s~]rwa]}`;s[:}FfaK\ԭn#?cڽ[~8 4[IX5Bm"}]Өɛ9uniG[ˇ|`NOkJJ싹16pq.WudOw|qi0;w {h&RܢBnx34*2dGӂvv{ VsyǖaqFm ]:Ō.͚tnQ`Kb^·9\䩎ȳ+`r59<SI;>7NR?閜yHjTp~>4NkQal˅Ly$=mhSJi0Y9[zdD3׮=/,Uo&LQ/|:^CF. In;wJW0ƖQ>Tx[fhHV3PSy]1<eli0֢d!-FgdDR|ϋ0D<`?5˒^m"TQo҉NR? ]nWkf[- ;*rk0o'&`gdmt~&4NqQ0y@Ӯ]0DyN3_|2Zz(AFbmBrhgZи%+[[- ;Z olۦ+Δ͖Κ;4pa.ObdayNRb i0Y[Q3|JCuҚp"-}mYkm4`vԎn14ėjN#Lߡ- S_ sa7FҥP=-HK[en|^X/7m5핬;ҳEu]x*{'h[vGuI&}Ǒ_}`[kY{";4΄E}^>̅ \ z/oRnl^b~`$vNCmڮWԎ߼YX aKN|:.#ksf[:Fڏ[ gȢ>0&s1%t*K9#7jʋzgr4NC͜=H`vNo4ėjt:-L ;bŖϊ!/l˅L>[VZg Uݲ9׼ѣL!LQo~{Q!0d'vv_W']?GҰ_> ߯ncnFTn_LMgap,m2.lrr QXJqY- x]E[uyl=uNCjsvz˰a'|TGA;vcVPnKgɔW~F\`8sWH1&&|im  Ux^6YdzV,E̖3S{=y;w߯2li؉/kymi u>pF-곷œךD2[ 9q$=tNvFmi mJC>rF\Էeu2]p(ˎ`6mҎn4ė.9_ߓTҹ168p-[OMiBǝ9wPu@G`EڍVeVXZ+ Vݶ;V[/T*4'$9P8if2Sr9y ̙})缶 Y)ϲ$UxtKi@RS^* xo[\me-w%7LDLט#wՋYNһVIHi/52y 饚+nl8R4[P/.fտ_d="[J͒VJcz: cMF.UnRfGx9^zui0%h.Eݟ1G : ME/gT/UHDX~[ a&|Ңz{qs^녔ϣwiytʖ]պ>y:ysǃ\!4Oi0,N'wkJ̮D$-0# Q!pnVp/U/E{ @JL|;,Kx^R"$0 璪0R4P^Hy2Ogg0) &tCOF"V5%Xujz쩌NP1-nQ8^43Yz56^4ė*,U=VYm[<_O=S 9:͂^rs.32"mmm.4LҧO +G{L+>+\H~*Gku|^khjF{Ql۳,ygvuU? oaͺ9o) ?s5e֮N,-k[SS0) &̌R~^#^.ZXQՌ: ]ͨ^kcIjjRHi/աMr^sП|Gͅ"[S֓_L4*l۶S"X͒JuzЮxY]kQՌ: R803#]zo0_>C2)9ٻWx철&arYN#AJBԉy&&?n6efYڶLcMMJ9>^M;n9E}S=,ub҂JX[$"]v4ė)9q%M)A.̟?˨~A0Hi\XrkM̞vܠ,KjKJIC$}ҟ+T9]T@բNC,z%#8jT/56Jz׷ߪ޻ڑ0_>F:-9U=^w_\ Sӓ%Տ) QPoK?;.s#(@ٳ>{* ļ[[FQ%~[QՉ: QQ8ֶotLJBKz󹠖9^R؎ 0ER TfJH*e~~*˻72ySU: R8vt/ՙqm:Dq,eqAl&[ 8~uAMպqP;_aݛf21|=!_99'|nhli/ٓ'u$ !{OP'\ս}]TK`G hPwFcK#x0ŋ#c$\PԚIt!ǖ*Ed#n)IZ 7>ז$,-K@^L!i\ER 8 ;i9s?qoxXzJwbK#x0L&#ޮ{'W([0\kqCȱnQߞyJ圚I`sĄ4-ϒHYsٱEqVoPF-6q/saajnݽ&^>sȺ9=3bE+?/Wu!Ė*E}ђ:"HDsR)%-04-"LuujQci^yVi>{F!NC⓬{IwPs0tPli/晙Stw zB˵߲gaK@>s?-]k{8xPَur9-0O4-]v?_cS{Dͭ>sl{ - dKV)jqO0u90qb'WHZwL}0tΫW7[ˇ?Y=6K"qBхxA;Ɩ*Ednaxc[Q%wK@ҍ<֦pA=|)Z=C!:\ ݍc3/ C[ͺ7[ˇG6vIc=sB(j Rq1v- U׋_~Xݣ<(xFaZ>U3zKTmO?NR<u 8 'n ql&saar+=q&^>Lu WVѢ!v- U׋p-ϝʺ{W@`R5zi;!q/%q^Diݍc  W}cۺ0[ˇ::G#[բٸNft-lir,^N+^~aZ{ΜQ0[ vK:$N)e|pKVwC148uRpZS:;%TCC7[ˇ =6uJ\+IJ!Ɩ*gƢnNC ~x\Y2mc lirf,޾Ƴ^3[b1TjА$C (eXr >/Ef3qlKk$zɒMT`K#x0ؘ9H reE㺇[1TN|O|ƶRdJ`c4I햎$T8*]\EHZpNu7mDrutli/Ƴm'^uwMg {zvߪ؏Ysl- UΤEՄ옾wѲjz8}ZJե 0iKynXL OUg^Y{,s4hN )ݍc_ӣ{cK#xnyml:reAH~^msl- UΤEaFIs0jpPI# aҖұ$=FJFu 8k9 q^I )ݍcΟrN|-`#&'ղtwrre&{ k/ǥԚIJ9[nR0jА$:+eM %w{tgьZu~8+ ۷ugli/$<ݺ[Vs *WkX[a{|I|Ln&U15%Lnq~MU/c8Qٿcnfn @  nc6+UHT*Q7nԪHWݦ!!Tafa{ٝEι_8{3ܜ`mi[믅132ͦ,z0=ETuh746 X"_ǰ[ėֺ:׫,rZFC[|.`:jLzL_.-ePMM`mi[at<}4[,a8=űk)꼒n%x̉FXcX-pGH9ܩ:ͽg+{JN*ili-{zf*cLƩb%z`mi[Aanli12麕uWCq^'}JqfpP6V,='|Gyء7YTFU?מ-s[ J[ V$ftg07cdsd2)Nn Lg'` 4hKv(YG0k`@{;N|JUu-ryAC- >E]]zcٵ62gI~+æ`@ni [zhHkjLuVsVՙ/hix>))Ql֩&B<='|Ǿ}ZU7J$&Ū:gx[|.ʹLEPMM`@ni [:r"In72͖AݺsV{v NËcR#y58$fghT US='|GVUi=(K- >Ez^N$p"IsknS]X 4-]]-ɍ ߼VP<מ vZpoeА$*u2KǖF8#<^lVub>]Oɱyc=ZXsA]Ë^tT'~*p8Np4-=1! ߬ф~,@ǮJRqJX[ėPF%WufFoh 9B.=為_<S.<\6$uK@0nZoV[bq X8 /Ǔ >8riH38##FV%qnuY'_i׈e4!MWK[ڭۆ-pGܸ!9}Cd>+)9?oli`/G^.[}wF:rE܊FgόJ`ҵ83c:?z%\^{>F%XRqx:HV,ݽU'|FN.:DN":qsIw4\=.ihH'Wf#-R4n3tC$1sqqb% q^%}JqPW'dn56jn4‰/:咓OڭCAXgK~Q_y>` 7EWY#]O4Xm3t{$.^ljF'TN{>EIarn=*dnE"Çۃ-pG|66j 竂F- >E=0=󹼙6jj$)PԔ6% [[Md&v_ԞOűk)U꼚n|$I$[ėihHIU]\7VYJli,I腇Fz#IX}}ꪑ^X#$[,[E?5KVfe]{~Dӂ}+8 X]uQI*+N6= P733֪G ѣڭCib FvAy \xɤ/aX{`lifl&IJt˥,TF{~DǮ'JRq.Ies'Ӟ533m۶Ti ;~\~Oq!50,oT׭wN> Ϣ^o聱)ncE"ΥK`liflzIDt ?eqݭEq^''}JqN$" fҞuڵKg6jwrY_أ-n|>Esq=5l։DAncgxOB:={\Ll;&Vsy q^%'}JqanJ8Q}ivDԬYR-V|S VƠӺ..ť 14d27{uz;됓~5==cǎ_7[]=OxI /Bq}QO*M?9{i ^!] @{^ꕑ 9D҇KaSȉX:02{J{q'fskXK.v͗47/͛#bmn3wܙ~s*O. ‚y"W1A'9DǎIaS[ÁEY]CFdXV{q"fywiHi/J&D%mk\ Ju4~XZ¤4XΩήՄor!a00`/R(RiI3PƟǨq^{qyzV>ob%Rnˇڄg3}8Bն%r07WKw8tHX~:`5R(RWR \Xo2>PKctv48 kmԳ9^5DJM|pS2{kopfSŚZoN7{^mIikA=-voEbN DOJjFnčs,>PF띔udaIZj}Hi/:wNxC[[WGh7- uR&r707tj~5## \45LiBHYI-3p[_]NW^~N#ؕ y')i!7 ) 7Y٬iX[䲠]oNM‹Uؓ˹# m2V&suX͔"N07|[N{dveM X: TaMvNhH KZx??&6!&|]xCB{upqNֱ7fDi=%IiA]YU#k 挏Li*"J:I-7|+ Nu=C)7`4ĮO /QӜJOULC_*i5Hi/.z?&_93zCR,lP? >\KZTXLXihxGlWΦ4l tc>{fV(ku}c#i: 3viM{wDS*M5AJM|pY%<.hofSŚnIޜ|`97Rx&SS~cgw`SQJ77K:ؘۢvZ\7w"Q!>,9CMh/h풪V1؁ʮ_ko>$hڛSӕI[˹ԳbM:h]^w]XEҭNxb!WM›lI=hNC,~/#8=ͷRڋ#r鴿wULOXḑli&;9{#ruݴ2̩S^yWf`S,QJI Ӧokyq]ߘR/@ubdw'⨆?~m4ėǕJ Og,mk[xrEP˧s,n4X׏ahjy27nK=jpp<r6z]4vB剜t=k/*#FJM|@<.Ð7}|zFҽIiAzL,$`Gn.*,uovHiYD)} ~[̊sb8P!N+QUAj[e4ė.^Φ&a΁?/ *wv'3%[`9:n[x:y9QZ7 {]0'O\ HiYD)!|b6:35`v%: ^UU*H[<{zHi/~}nս~Hk]>;HiA8v+%>}_.+)uhvHiYD)*--oZmwB\Sko@ub{ ~8mnΏ$ms~=4ėlpAx:ggW9S˂]1NJBT# /](#fb:~;%kanNx7{zWQ$(sy"gjR,GPoHF|7wy\낉qPFJ"Jx\_mooJ%NCs `msBA4p_>iN<|X{oUZ^K w |7) SwMER U;$pC"luN+9^mzUzI f/3d2"<~~~vfy>zCvX<>RM6q)qÖi,)~ލ.;̠NC;\R T>mL`K#C$G3IѡӌvVÖ˱މ,s7G ,-Iz]yǛR1li-=8(iNz~Huъk:>k^ٔ0}I+x߱L@Y_nNOf&U0iPg4XE]vVәxnVڷOX6qG`[liKGz~G3i%棹0%-<ښo[ğb£y约CYAwǒu`KXe:?/++vikSli-=1!~W璂M4v 'fd>k:8 L@ښ8£`:=4ߞד- cQWͅ:R*䤰Uγg0- 6Ӵ'&$ůT@ ʺu2KiWvk~LLga+r1 >bK#J‹n::4pޱeY liӌNs4O]Ϩ {]|8`K4m I+= yYWo$ܢEBNphvܼ)r3>n–F0<K2T1*^;J/ ˱Lkt.9zTX⹮<ǖiѨE"ouk8!t|NC棹4G:W.]2 `K#*‹嗦C&h5x,Ζ˱khyUI<Vܸ*`3M[zpPT?uO: ٔZ1_R*q2L@kׄ ѡݜWMs4j4XE]kP?,o&'5ff<imU74LӖ해SqJZ\=b:>P!tҦ"]]FW5Ӧ?C34?-9{Fngj^4XEJ:.g2 J] (Wli-#|ݪ޿\&i : מ g<7Y\4qonĖF0_x+ ѡӧW3Z^9+lliu9Cfy oc4LӖ>rDS`Pl˻B u2dwWӦ.ǏKJ]8/ц-`jute$b::tZw{"IA3lr,M4G뺛[U]/v8w8|–i--ޮ;ÑE3): XZp_JO^SUMg/ц-`jdA=N̫+`9&n=s1‰WaXL6&=S`3[:n%1Y1,,'M4d:fSRztpX=I$Lli>POx"4M3'(U32`9>b6޽š1G@;4Lǖ6~%IΉk:>?P!u9-8.]UЃ-`jMN OdS约CֱWʻ`9t#[ϹlTa+O*0`3[_X&&i&eE}@ٔtRR‚Wݻ\ghF02qWCRv?pba1wr,e׋ Cz.ּ9yRmzf:'H:^kH˲tvQ!K .Kltpk}ۿ_R8P-`^iiIx"LG_wr^5oI,,7y [,Ǣ~xHRq$lzT^li-}+ytުwRЎ: +Ռ I^y\g(ŖF0*g:7|tvNPԫ1׽- cQo̽5gEyb1IۘÇf[lcKG7>;R2QӮNCmzEpYF泦vssH^yLRli>: yQ\Zkg4XEEfWrq^y%M4(SS?B7uWT jvnV"ˮE.cc2uxD9!!bHIFy Cgx/1ϼѨ_ٖ [i^ YׯKݭ}s&^>6==vtClWݒ_o}4zZy'yZ$Mϲ\΋8<?bJG~dG&dEV;^ԎCiȬ;o J:p玤-?w0)`o 7ckvt[OlU^k) >Ǡ^\n /=ɓgϼLi3/t4*)xWAviAK_:7L eӗ1$.|c aJ#x olZxi?/3%il?ެyv풔p؋,<?bJwvJ ^GT |UDW\^OP!|uFJQy˒tٺITcJ#x$;]ѡX*b :;~Ô?Ngx^.͆YXp6na6g^LpX3o儸ϼk`u3=?5I[~P4,F34Yf j|-'[R2!N,,{9qx1ϼ{Jzݞ=F~ ?_u 0: CW=r/NtuiA)`+B,'N=&6ق&_䜛YoOi7qN\sya^Ompp1ϼ^~%[:lYW??yi4\N?'RrΎX8匏k_C)`+^P54؂2_䜛:4uZ`" Iwb`xSex1ϼ ^o_ dE3yi H}o\;8*6ȔF0򁕥xvzh;&k ^GiObUd/f$²k cJy1cnjZCLeF@]o\G~-)cYΓ'w(S~Tsp!n,,h ߥ} h_2x!t2yyaI٫1yLi3/Ӓ^b׈iYQhg`u519~mF;8*ΝX8h_tLi/Q/^8%\-ffg/괘nbsl~\l1ϼҝRa׈xVޝ04~f HvpT Dz$UpP"4 Ν-IA/zB^i__i}rbÔ0鴰MNL<4S::+,cZP*ai*ZlɤcY…xvzÅZmY|xqz2Ӿ:-pmh?e ٺU?6yLi3/t4*)uWX9YK9Iijh<#XOѱV| ΍(SVQ DB;=o#"=֩SwN\z-izg<4S::+,hbAV/|7Iiwx^>.ŵcH&m$pTW;V)`t|!;14f JΙI;@Q˱7^ NM&s/lzϟ<4S:4:+,םJB;;(gwfe kʭ[BX8{h_`՘&^>Jx&6ق?Nc, L9p@XME`S̋)J^S5-盿0:Rt絃ct¥cYX4ޑ#e-Q 7~Duq6^4Z4JWD?Qbum/i-8P@ѺۚukQD+Q s09{d ]e~_ynϘSy۱CUcKyB>\,M2iIoZv;R@OKbʚ=ÛN|xFIpfF 𓞡,V{.&Ec@Kge/Wuz{Ky(bli3/ѣ,w䈒ʋ-nRMDqK/ʮƻ1Adζmd\55gx4‰Gt ;:tʼbʒk3TVX"i%F܆V;y륒Rb^4ضFĖ?bKK\]MY̔E;s{qk]- ݽ#nߖ$2 gdD N|`MqB~ ?X[cZMYmEZ}2 Nu/-;|<]Seg^lIs v!!臯io_Rv5{G55Ir߯{'^>V==SkKw'e1SWic@(_á% c[N [̋-w$*x4_ݽIݽP8U_]#;ldDWVǖF8#Gw±m×&b'j9c@j<#;y ̨꡻[M|- ~Ŗ:%Ҳ|AF6'dWg(wÒ|\n-4‰ROؘWw'ZMٯSV.{22B37>SFu0eNoF(?bKKR޽J>4EY8Hi3j$3{GMLHʺvM `K#xw `,u؏Yٯ=1>=qZtv1*w{xD0)U([̋-,puuJ>@F)e1n i߿­wc \UUeu'^> VQ!Ѩo}ioiwޝ=qZgǮ%_TFM$-׾}P*4[$-U:y,OlݽP8"}yCx/{G(㒈N=밥N|@,r':i1e Ԗd*{8Zc\DzU19$-='g^l6I~C%Y[ί?;(W5e9#,%)q =+'^> v^u^|ڕ((PnZp(i嚮6Z]a/g^l%᭪Jǃic)8(-XdfQwc$Aqnu,K ƖF8oݻ=փs?? 'ߧ bA|EUmXS]- {nԨj@Ig^lυͶ|?y(@F1wO .[zuilfť:~\ƖF81r Cx>=։c_u՘BԞxX=q [:ePFaׯ [N"Bli3/e J@iA2/87Z,}m;UU¸Ta4‰Alh: w3? U53={i/e׭?Zas%`Ky++%mdDxVΟ$r{P*4ި/);U] ;{ےzzt?li/(cYzWKp]="oi/X|ܵ;GaϭhԱm`Ky쑄UDzQ݊ݙ;RQn[3Gx55Irs-p%jh^Nݭc=Xw)z?1G9-;m| Þ[j{fli3tC$8dd^ן8RQ؅{sVYL/n52"+ܙ=[aJ40 <۷nmtD@mh+GzgdwmgN&&FX34G[Ir;vLhG o]L-na71!I+0<[=~ԩS_6oJtuwn|4+՟;5Ep*n mgwZi; QI ZjmhwvuM!rvøx8~+s;΀!{;.z Շ}޿hü?< u`Kٴ}>Im;tHoB#f>H}3$4oۡ))uLSR_nG`KCp8\WWV]]]4>.zztGOrbύQf?jH k?7o^:.O{liҪKP$_Kpd)QaN&?/TjN)){I&lip3t{|~s_%ͼ)PDm 8?##<^i ϖvpKg566&yGwnZg@(?) U1%_WuI+ͥKX4M[CR|>U9NJցBQwt@ƊN^\ 9}Rw|MÒmҨM|./`PwtۺtoH+?wiƙ@5Nۭ\TvRKtw +ߡCʳX4M[O$+u Qkmc4m_tV˙{H:difgfK6Jb[AnMڜ.aQvqRvywFyyTݻg&lip3to}ߴ~w@Dwpri!/ l$tX˗YPHOf4j_>Js֫7#b-](?4V3<@MiYg@rshGc$Ϛtڎ8*`KٴAI[ TuRLP=XjIwvBi~BpE HkZ[BAC`4j_>tIwtxKHͶpھ@5N;`hLpm DⅰvP[̦- IښW([sǔxCYCvl2٢@F&-ėrki1 VNg _efO(:t^:i\{YbtFIv͎,*`KٴC!I[ ?jqQ[S‹<(ikH˖FmTLWxí6'gr[ cI$ b%مuy:;%}ߎ,*`KٴAI[ T]2Z<;;!4Ò[F"[}`Mܑ4Ik\li&|@#G5|;=\i[tV8)Cv QmeLG J^K *cKٴ{{%mUf\DPFu DƲ. Ҽ{UP0w풔Ik&&N˖Fmzx˗Q/>N_eǸ@աN;c m,<̍²Oʳ- nfӖSI[ {t򝁨(Y(=<:Kʤ59-ė!#>)Aʌ>5:/%a>P[̦--j_KBN`/Kʤ5^iFeK6jML/8|nx~ DV`U uBq݄0Y_O[̦-}Y:h:H^wpiX`/Ѩ*9-ėN ‹Ϛ^(5y81:x<:iǼ{^x51ٳGXBy尥lGHzZWvD|QRwpiX_.<}`B!If^GsQ>PxYcL>Ħ-w?ᑾJأP-ӎx|Av=YWB6L[כj(- nfӖ>zT::T&:t?݊@:I_ OHJ5dK6]"J >ľ-tfˀm2 CQ3$#z, s|f:6Ulݒs>ryHPkܽ`/t$-> }R8gfh@ "P,bTbJ (vmMc;!&44mY_vo^`hg;|?:\inuIRėhW*=_uo<FSZPuP^:M)wqQefW:Wh\fhH^|AJ4D>uJX\W %A!78 tϖR WyۇoVʧO[F<&;&n )=`GK'roM D+;i*{jIx%RPJ Z_ ۋNliEWί>P?%Ii_>`B&l"¿e!r"Yk7:bt+ٻ[:^(3l8zvꔮٳE_ƛi_gt<ݙ.4u/w%r钤Oii |?%Ii_>`H8:ׯ>" ],x7ͅ_13Du:d;2%<|Xo٣!  ̥n֦qFٲԌ:C˂a{3+LN$)x̹v-p ~30ST޹90q76EE_|+%Rn[Ѹo˛j{HF^DJ@KG%I+4]}^@ͨqsu$y)> J…6$O|Q:G>l 9 +kyŬΖnwq` u:|[pV&sƍ(3Ŭ] e`NP^@ͨӱtQkgU /%RΝAƆ4/0ۅ7`u\`FY䷹_ gu:|o%Gd:_y7'?g^ϕC;:m$[ָl8u=5734D2+ǙeU:8PctSkg̳}@ $RMkk҈'|4 mހjn}-)=`Yˣ槓H'4be%Wvg.328Hi2s)+ie==Whd7/ȪɑEۻ u:/R}4fllrR*#O|@>P~p`ݔXN$]]չ}>9i[z<53]+z|9/R\Jr%dWhdr%!-dm670,N"NϕmЯER,մߍF<!GxQu]g%SzvܛYљbgul劕_tkÂ}eff/H3'dWXAW8Pɼ _5}cFKeu=3)xqTj$")}it鍤m4HPK;h}NX# ̥t[_a=|Cgگ^@- $_5W=Ly4ؼY-9bv7Rė#GxQ}3]hJ_=j&xxE'chPI$%wS"+)G}OMG# ̥2~u1"j2eۻu!Mgo]b|4?Ml 0k~IT8A.gp1Rėfd]&ը 1-D*}IN j+&}OА" ̥&Wh|:]A48PL\9{k)Q{zjREttw\F<a G~fE-.zT͋nvy@.jA7..ᬡeOꊏZ #R\J8!ibWXW2~Ԁ:Hn?,l UӔJ>.>q$R͞=#O|@Ξ^j:;moE0'< 5-dcP:VJ>;%>qSs萡8" ̥t[_a e=7^@ Ӎʿ:'9W*>Ç%:"O|@HD6c70gn+->sBJ@KvI;}Z %A od{q5N>{oJ뙏>`KfuDJ#y^8KwlopE9J}/;K5rPDq%H$]H=c3}Oͱcb(3v{w^د(4DqwZIQDC$$%UE.@ȅE\ddz&LoSʲ+3>kL5y >+HN7~ifA=R)'LwnU)pعSx cۺ*J[ >ݼ@uau̒;S9u[^Sp!ԥtwOr/g 2PtDK7vmvQ쑔k!NO/Qc"\)>~q (ƛ| t',u[bN4*|Հ!ԥtGOrϧ }J@GbpRL4sQItg:'xRě"tU.?|/u *6{ nWb/}ϝIu{!BJK.IsBZϦ }J@R-{p2[u2W8oںO g.O{ː'|@i ~ձVTV.>\lJn3 J;xPX) ~.O?p>o)݋uXK\ ݰu۷%=serRěh$?ֽ:VKR❼M<>L jM='n6L*]Xt$}E^@XgRzpPR<\|/gKi݋ufSK[F-AW9Syge&I\z6!NFp^ݫc./Grr%pAmŒ+WRѣʗ( RL]JJ+~LںP?~>-aLtG%UsevlRěh:Ѩѽ=VESʗ933Ġ61KvьLJ6{@JK$<\|/g}J@bٹroa)KĆnغ m;Ѩm-RěϽ=׽= nJgSTQł| h>:RX44+gR[RܧPӂKh\Y7X}nZ[%mse:;YF8z9#7ntEbN/jN> X0Ų?.e^돩ޭCT?SҲ>ʵM u/ iK]gqAފ';49bN}p.O4<|4‰7+xv/bNB.[)=zꃫ7vmvQjIȮm~o};"ԥtGnO*ŻlJ*EV$T+|~~k !RgWbYիڹ<]]uRěhgN4*ghH11)=z+賫7vmvQ? jc>/Τ.]ks-JLCJKNIrBU^?K^@Kc?vKJ䧷O ΝiRěA[[hԹsG1I)~1E'<gL j3G^v~$tZʸ gR]Ҳ<\|s颬x|?{wN{V'.MRP,aC I;۷Iio>ssN}\FP}xͰrmWb7mӂb9"Y)[,=?0 ) ~.;;%} -kݿ$tRZXҡⲴT7=Yݿ `|^džnغ jldʉv-OsMsgRCRܧP)A˺WP1tK婹Bu AH7/m&)[wIio>ccWscS{]|wAiAhňZY7PܜeoyQ'W,`RL]JwuI**z6%܍Cj+7oQCf42뺐Lj۸d`޸ Wa"= +-3].)]Rě|~xÙ} xx"Y]oٯ&;f N$4kAhKVR@0!(q %/*+͒iVрE/g;>;vξ]DŽ*}_>4+Aj/ o[S朖sAJ@yVS']\!F5A>0^ To_K@U3iͮ rYR>1 G%O@м|<{pIS0wђZ[T:n7ewJdq3r0 U  ȼKiIf]\!N|\k`uv׼evY:Y\yP3T~@|ZS.;z.)x2^СSD@S:U˭dɝ G*ݤN_jxԔJ9{|כGJ@y.HʕWxvVmzq6ļN/;*S;// ϵ5GyJ#xs\Oc Oo[uxm*nDfx }o`ԹEJ@yҳrͺB.(cU/ѻz5jN9:_:}mE UGaJ&o>T*|jV} 8]];P} |U|PaE3r|1R̻~I:uI>^ jKZ~a*Z͞_IGUJk6|jT$s%>& FbaE~U7}XraL=gf|+R̻4c\\!^jUՋ!u5goSL ¼vE[)t7ߔϳg=4) /| Or!>9/p&>)ٽd֗unUsϞN^*?Hi2RzI:roxIPG5Ջ!uwn7w_$GYZi_>!y옣F8‚B|jF1@Rzy~WRCB:t^*Gbg^pgY dHi2RZӄjḽ!鿭 ӭ|?[Nd$!|~5Q:0_=xX7T[oIȈF,gěN|rU-W dM]D_܂:\ ̈́k%mջwTQ;pe0! aJ_v brnY#ٲ9YS/4G)=6&RY*B\ vrhTPv|W[Εyeѷ ࠤZDS2$7IjU ϔέ6 Lfkme pLY|:iU_W>k.^mY 4Hi2RIw08Sk^=aF\HII/VU6Ulx%4) 8ǛB`!Ą@*)[m>Gh2S\^k>ȊmP?l/W\5y߳ftep  hsP %ʦ 5~n ) AQJ>,Rn=?V Y{C roty(_y\IKgdvSpd>I^?4) x7C5HSzy~µӫ[ baq__{/U\my߳C?B ((ƗjzW fM\$ˢ O տ%LMI*53!hGkn5u}J̸Hn joCw񢟛!@J@yGHzWxF;˂RmzqN7:sK $Ws0zjKk4TJB TJ7$9qB\vCM)uXjFBzwi~z @БdceJw`[tk7uCߞ-%%Yd8-k37uUݒ'!R.|4׮>l"ɭ6]=Gukһzs\,{N)t4G)}D<#.{S嵶ئN7ڽ?zH2Glϖ^_:$-Ԛz]D) (ěλ Hk7Tvҏeo6]'K. C;c'O+_>@pdAen=?޸ t"]l{w`u;͸/+ՋB{w{RNBCA- ChQWj*! InQ)PY!buJ@$;vƞng̘G[3<ܾLCQ>}3'g,|xV&PgDž+@ۛ7 oIg7T#W4]t73=:\ZҲ[A {|/P4G)}挤A9B%Kuz$ Ko3Nl8 FռwMCF.Ţ*)ǎ W:`hlLrELcπʐO̹>U @;iʮxJ7K>vVyۿEJ@ygH+T[}(rlI=R}n}9oҜ5[@ho-[y@a?R} T~ZϤtNA.E/>_ Hi2RWҝzzZ MХw@mi׈!ګ2X?mxXRDwOGu8| Νޒ+!ip:j\s++ 1d.7tVk*{&Ṛ>zTҝ>ܭ\Q֥ɪ; W*۷lI]! g@SP~IRD,Q7b޴IxQL4j߽$X)jkW/D4G)}䈤89 u^ʊŒ%Vyvm4ԭˢCl:w_7:Ţ$颱d94p@xutHn'Uk"05WХzZVAF; MڧjjzѨ}[ (%^[荧n" H\ [{>siJ>UmImiQ7/ӴQE?$x>RzmSs:5deI AFw8=eչ9U?  ) AQJ>,iMίYY*|c<& Utz`=cHԽ?thִNK&_7vEܹ$x ]-D}:j3:v!`ձZ^4/'Ṛ>tHRpk4Y$$ٙقzaPSsk7ztYD(;S;ޛ9Po.L__kyT %uֽT,ST'Q]zn-Ka,J|_kguH}̋o]#ϻ=vֲ4Qw ) AQJ>,Kί#<7SBY=bM\fK[oHHADwӗg+ .*iB]]]ڪ1څ v4*.Wϧ> ~R#qͭ׏kT @8!_.^x,ܭe۶Zw54G)},9RDԜyGW}r+A?io>Yߙ5bOBIRhm۫^ȣ: T(L[b@y;\OА)j,7w|:ӐЮ,> k׈!&o|{.={|5) AQJ;GДvvk:|F=XvCrW@&Ou:}KEYxb:h[Vu yT%Ɏ/›ԁ&ɍ9?$x*ByyCe>#kh:' e#=g2 6DJ@y| Iv~vIMܜ{nORs[g׫}o2nFxI J333-Q7vK\6Hj'*}hU @\ rJÙLMϙ7DJ@yKjn_o,:3xȕT %{vK o5vdN7$4?i>p~*~`:LWWu yT(7W4U2'&kV5d egPuȕC65) AQJIjG~}Nޙ2To=:{+Ň26W:h`l*~fI#Ū[ţ: o>Pg%S}BJ1^lH5,gDuՐ^ Wfp*eG557׀J4G)g&}[וEY[v&~M/>r/gwo]Z1dAZ|~~5a_b@*vdr: $۲ؙX[uꨠppdjK^{8y~Y N~pzG.TJWKbKdQ}wPW?݌Nή,F7?~H3F6NPp8|WڿteL*}x Sz.~$s~<2Lc`P@YBxH륗!0p2ASґ?k}d \ьVCZQLKWԺvxĊ^Rvt+%.v@~:TN/D؊lJ"m^2~y~2{MEHm~?J[K QgϲXEPp8|W#>k~X$S.y>8 s"hמxĦWSõkN&bJ'Ď4?o0zG)p9po^R+}W: *E~."6kGG#>|YG9Я[lNή< Q0+Гɿ܊5 j'Y֭Qϳ6 m2GXg*>¿戥#UDipK|@=)m'{|9WX.-ނCߧ= Li'10lY=b)TA{ af{Z!WzÐv( {T/5Q^ Ny'~RU;Ԋ矪]A@)//a(WRB)'Of: |.v\K(Ľ{]&^$ '٘:; dqہ9¸k”p2S=J;*/eqW.![~.Ž}⹖^wAK_٭Tc۱*5Mu5d: |.f j89SV/W>,{| Nǹ0ݡ}2F} jkۊz)Mpk9) d"t @iGUU,*e=*! ɽ{U"m~DmD+ ҄ vynqJ/=y2%Dip7)Z**2K}xY$>p v+䇠_cye%yƍ4ҧOSQm-G,e' =R9`РAL^{G*Kϝb up027t-_|})m+~lLDXRYN\;?u5@`J8)LE,qZ1dZso6BnP+_佔v.D ; vue: |DyCi)SZO7gdԮO%[1mm2rSDLFJ)eqv(b|~<ʽwLwoA3>*Y07@εQziVXDp>|׋D(o ϐ0܏{|ݫZ4OAH~5mRbz 6#N&bJ76RJQ}-ē4+q{@!ŌV_='G92NǵU )ر,Q7KyF18>lL_$ 0]ړ$y.&Λ1m4uuRt-DJkw{"?W!YOirٕ؊}K˳XBDp>||DyFMqq0ӻzO1>i2 w0]#6 $);^II&8@.`J8)][K)EO֒+qmD>dG<_wCZvt!}J/2?%Di).&ٻ7Jq$`JfKBٙ'va<5Ɲ9øq0LĔnh4z[isGB 9cu#yݽjnnp_aD(ʗ_nt upD_%}7/r#`Jƍgm'٘t0aP3<~:ŵs]T 6 4'NPPK-oyǣ2le1ir6jVOW|H䷗sᯛjƵU eb^ -!N8n>@8p cLyUO1ǣ)>A21?:3O7z{ 4ҭ.t-omsF [wE>lW?$ 5t){vbls*~B/~+iZJ5а: |cn.jg4Ճ j}@SCJzb:w 0!Ԩ+:PO*"t }JB6!Ma@w}SlovKKԛ R}J/pd&_ AR O>ܺZd{nM[ԛR;:x9(-JZP-jy1g~ۘBxvKxUjt4RO؜ֈDLxRkD6by-fU%[AB U>R O>ی0L)Cש7q4ߥ<~e@P;ґódTǎŬvT RΪ(K 2?rl/rz@KHY˘g&}әɗiZ[Yک9==/w“B|p4Ǫ//֨Ԏ41}LتjxV; ) `gHhr\/L,% as0 /Qóo'y!(}eH]~[M}@0(SLizÃ: `Qw7K;5O+_) 'z{_s".&t/[i3SSآ ᱻo!<>Hi;FJG,ͯhloPKv0_+$?F7ZRS疵ܥ;דē{#a@j Cbx`LE"/w? I)s=: `ի,Ԝ#G*_) '4سZ>ԛ8Rl_P>lgl.|s|ʽ?$^/Ro*%[\]W4՝1eϰZ1`Ln;mNsX:0"ɾavݡr"863ϼIDHU U8R O>k ,oٵz CJ[JC/p֩nN\)T%<>gHi;FJ,'5iQ*1^sfm~wz?\׋ԻV_(ܲ6t'sFШgX>ŔQZF3jx3zvz[=OJ_)7ZXN빂B1RHip'<n61V}eޥ^ѐv i_5uaez-A`_Ɩc2c1K34vnvVp?k^2|sezxGY;[q|CìC.`)rw“r/֭ij2tz BJGxV^A8 8@P;+z"C5_=|(d?O{|nvVb)?\f/*Sj)Y 0ي}E^/Qo 4>KG}eNxZ>}};8RV^=~g_wvhTa ȃ,ٍ^<4U#Yѣ\ƌMשּjz9xPd騡P"@.g[}5 )m74 yשwK6|-;f|5nޤ24qO\>lkRP`)6i;|tEZ%ꭀ4'Ntӧ+\) 'LzD!m(/^3@ !M/;ElOSTAJkOG/1WZZLϭB\|9KG=peNx`ӽ{ݚNCשp=izVxU~d֩ϾjiHi;1v3gy-Q:9C^$.+?R/P8{66eNx`ɓ,oqvxo?[^X o|.˖c27[-x$ {JcŬy-59fGe+wvkµ,6` \1.w“[ [>΂ѹ/p02Ofj:u~Aod2k]FHi;_|v̲N[򚡗A~k zc)ҩ@busvEJ;rG0d5pT=c8v\+rUm<ӓZ^ ӹ8 !ބ$'ߙg}5wv糟XuL2u}Չ?joh) ^f<ϝ'&Wd0'@ɕ'[Sw˫9C`ݒ]47VpX:DB$;) Y:3iAZDohWNU ˌ+s|wqYu&bO'VO">MX,fs'PVIS*wMRě`XL6e_K,FOWmA뢎 z}証׵ioT/3ұ ^dvcM,UX `Q"4r오vw&)`Ν|glV$GJX*d9!62SVy|iM{uR@Hi2)Iڎ8yYu7_$GڈnXJ(4'igϖ&)`PTOSm,KGJS+'dF_fu@\XXJ{MFW_fWHi2)IڎNֈ:;?p2ٜ PDnLEC`ŋzBk&|EeNv۸lTt] Y9żA,?k-xF79: EJOXLRu_Dp\iy("^>NB44'iIJ#xH|pͭ['3Rڏ&f3uQ'dFPA1뼝w$sހ) ^f%mڪ} "T:dF&bϤ8:8n|,_}ѣ.ب7 EJO>I9{;{ݓʺs`U6}wO6`Q{}uL9yRT_AJ#x曚$mIe]QtZ@ cy5Wc9 Қ>D&'WDHi2)}ℤ?^n9A-̟>[B(<>: J&)`F?%_ޭo1K! YvSugA(me~yDJ_OFeW?u>]>ԁY}]2)rI) ^f<[[%%;{ZXw-hNޞ=^AS%Mȑr$LuRzgIEe)DPJ6ڻoڳGFFW*GJO$%w v&}tp$.x?:ڋO`JW66&)`"w>}!wL] Y㣔#)Jۇ>Kh/[XN^) ^f<[Z$%;{׽A}-LC>{eNX;{ : 9#ixQ47@E>H ޘdR BJ$3ڈl|F>8^|ӭ[Ԥ:P9RxJKJNsswZ~>y#xCc)'i0exXTݹ|5Iio>d2NW0gRz?Y3i ̈́  ^|[aIϧR"ˌɓV=Awݘ k'@I/dܪ4K;N&)`PD"(֦}_!we]QtZ@@Asּ ^^5"76:P!RxJKNKKwo&ݵ0qQŇy;^B쑔Վ$L?·Ò;9)#]Y:3iFP,9շxLX,K{uB4x~PpM'Vk*/gժ P/. +3i0QIYmn.yARě@]!.ȈAJTM,FOWA4YY\?Ofw{IZܻj T/3SSP 룜\ɶ^kNACCo_ &|2%xyY>AJ`cٯ(<咑RJVԪIOx%DD]j50=kkff,ˮ scH*{?g|μ?k^ ?02?8v;+E.!PGHif 'v+.5}e]mc _ {Gu: ݹ#i ) 7tI-^ߵPH0Fج{1#Hy_15%lq=~=P1RlVnm4#79Ae]XÉYýtǮ%u J$M5lIi7@5>@9XnxӅ0Fof8vT,U⺻*FJj۶IԔ[c4+NZ/grEQg`P$iܿ_4ě*/E##g)킉bK_#38>A#S|}!Jk:AJjns횑ۢWvw@J{q4u޼Yj4ěJ]]u3Xvt'L8vPڂpn JKګ1y;sF{{24ج)%6O-n>Xx3aѶΊrC58uCIY=uHi7@F9~yHiwxPH.,jpATnQ7wŋ֦=PRlV>p@m3rs[g>Y 3Q`VgnRj4ěJ|/yѹs')픡\L}  P{Wr;MNj) 6EJ9bV(,FMƓʕϖJKګQ%elHi7@|WGFObR5C ?LAsliI<j7mOlI{W:$/o;vDŢ`ZtgĿjweM}(;*rnOi/D>DRVI&\xTeyŬ_MOk2&oih|6d|]<3y;}`-4ج)-i5.eeM.hT|ۇ3ڋ.QQIY2W#&|+ѡ}ːn. ?~OO48MΧe|_Ow_ixX83}HiY-RaI9tPPS Q_q祬Ki0knNRV(s5Rn`{W06!51Sl ~Pi^4@##ݴYY&ミ޽͛m.7"fH.I4rs} Q?^u: m {) 70"Z[%ݭ}..4 ?~<}ani^[ϥw/#}#fH}$}f^#7>sڻRm_i/Dd}̥Hi7)ccI˫gjJ0 wA!Fo ڧAمEYE{|U-.{g^"#7W6W\jCAGm\aQ{}Tj]3Q`ѣe.EJM v-Z^i^1i4%YOO4 Y;Ғ4 /۶m^"ݻ\Yﭜ>yR<&?(-iDNO?-s)Rn`D۷K+U؁F ?~Z ڧ Adi_޽L&jm77{^ `Z32s+)YAQ9# Q`ٳ:0PR4ěR):yR~y?ObRNߘKAOO4YHſϴw/odvrHiY-RzrRdڌ\ vj:qrV7GNqɤƿZxHys3X 㹄&i }q.0!|m٢=P) 6EJ?z$,3`8-쾐oayɃ2SuK&%e5j4ěvnތ jm?$OT*ڴI!fH|^Xf=2r MoKgǜx ; GNqɤƿZxۑI>˳gXahr>F/jhv {'ڋɕ+v*4جF)qܽk &tyrE:.fO9Wi0.Wpo>Z}zy-z5wgWwGed*8: վ)`۷% Kxbm4Ff#Afk57k) ^PJ8 1]]v_Au_BK$ EQY[Wi/NΝ՝;_S47;Z[%9rD{{=4~όEl}|}  ;z-#Hɴw~)6LF{{94xC)*1vmRjͩ68|gnNJ'xPİe>)Adp944ksHi2RIavԚx";*oEWi]GZ3<\S4t񪪪-ڴ d ִjo~Wx  } 6 mѤrㆰuvj</s(t&㢠ZvQ(joʵϓ+4IIY"… [i~E^> ^뻙D(bl~z} o`R{ J55ګ!JC$ƺʏﲠZS?R2媩8: Ukx<^UUEU[[nvۚn5OӳO"i!l[4)HڋoTK34xC),)0MMvUߤԚC46_><ɴ+4.+Òo_OP{zzpWmm-o> JkSSSf: 6ޣ0O AdM b~$F}]: ) ^PJ/)0MMvUb FjY!Qݗ<%WipB]8P;472R8,pMw\GJcgWM"gNV4oAv_K{yA{儝aՁgHi2R]R`(ܟ4Rk+EQGq/X{wupℤHiTϫa Mg E~@PWUJ{ I ێ{ϐe#c];A~dA{wH Og(WoQ CC)`GJ۽6w 3FBÖ9}s1_(j::Z?xv6^x/s(%)UAGڻCs2-xۢIcipB,&UeHio>ɾ32}8~}11l1si}  Ѻu x&'-ՁHi2RzhH^Qw:NQ(jcrJ{quIuURě@޽ڼ~)>[Hit̄"P|01>]uȢP^}R8,)lghF'WIio>]f Rb_gi/T8Yh/^FI[۹S{o)R̡$źwp!!}-i/є[Wi/Nꫤ473g$_>+Hil_XE dZ@u !HԹLA{ LĽ) PJ IK4j]AWwPUSڋǨXLWʐ&|Z֭+oRta>9u}tiAڋW4U%R͡T?.ZQk2!>EOK>~I #Ibe E f~NL KgW'Hڞ={4xC)%.UR{1)(7 E!?2~zF{quIuURě@Q"!??gp)=.ӗE {טY>!u^5YzAN{ JzZ8\2Mx4xC)!.U>/" A9rw?^>F'Hj4Z;47Vw|}DJ?̭"]V15}&+;8f +s k#JNIoK-ԚC$xڋǨzI_?ՙqˊ,ڸBV[4:YU۸F6]dXp`$&A~;3s_y~=|·S- 753S(/|?`- S>3|SgK?lYH?9+hѦѴvYYp- Qf;:$/W+4<Ó9;}++x73ci0.-Kjs&|N)j߀M4 |M-ije{QԎTh`J;UUIvZ]vn8(]]bBh'r2^1ƜFG%c5<)Zn~(R;M4̚־ FN=(j>/)՝V[+iU.ZRKwvJvKU_ R/~+k<*14-9xpOpo>(XZ*45 ᙙѾkhi|u.FNO DQ;fhVPՃ)dݫΣ ,twd'LEb ЊP}<#xUci0S8V[Z- 7O ;w ?_}Z6N}Mxs/9+̓7w$#^;7GK@YjQn +p W(^wVVܻjG1'cOpo>xQYoh(aϹ:_ܝϯivߤs;|z{%#m~p- QfBydtw``z( cNq.Y ?EKM"BeH;4bMg^iPj㚿%dݫΣ tudtv`Q**yzE3/x73ci0ndDT6)Zn)mm/{xFK6|MCөܪ=%EQ;YA[NMhߴυ#-׎eZ1n9~`&,[vtjZۮe#Ƙ`\2)YOpo>HzUeOEE!No-lMmg-kP:v5iKK‘vt( vKO]~(.X;ϧulN;8b9 %^&Zn)\\qؘvz hiƧ?d^|S!9<׾-(j LVKTUIڹ6Z^KHv}`jGQK>hgG1dRTëDKMEqOcc!No-dOAM2mQ.KVe _ӎ.$Yhokhi2{-LJvKxU,LЋ(#?d} 1Ɯ .UZn5SSsvzhiʎ ϧ?do vٿb.,g_~n Аd `־@B'-kGQN{x^̯jgG1dRTëDKM"a=qB[«Ă`n?״8>\IkG1dRTëDKM"hiPS#ćgxX;Q4TLMl5;̣]l C>@ A tgdWE_Ь`Xoe>J;89 I?EKM'><эqB2Zv*S`V\Hi㒧^Ɯ%Ka&|$87 &9Q @d6&nڐ1eL186"&A05];úS'Uy={sስ5HlohER:x[̳;6֬W4,.$%=ˊ)ǂ ՚up(x[GgcN{%3W7- ?p+?1a[- I#Dg\yf}sE- ^uCK0uteŢp(wl)Lбup(ݟ<7n֭1@ /Hf&'|Κ|ggsᚙ;\ *kZ AQ|&뺤e=.HYzW4,Ӗ޹S2ZtS(;z-up(!y#7bliU.K6jzff6- ?pVJ鯺 - -~rA~f4o(j?њ^+[oW+Yhbed)\7U\YGgcNw%5=˛\x8+ %_W݄qs\ޮ'-~ O7ZT:% -=ŢutxeÒ2:B٫zN:8|"x'n֭1@W ٨}}Ihi7POMhifOϮ3<9EQ߂O,.JZzΟ/L[$7uS(V+'s%?Y7!4lͯFKO}nBKq_=Y=]|X_?Q~_U ͍%#::DK2mߖ,'uS(6Uup(xnZY^Ɯ]vI63_x8+ %W݄+^\ J7^P_yj\Аdo?4,Ӗ̕Q^:8c e9 E@MGm~AZ~0|_uZa-i/Ź b}m$(G:K$#-=Z\iKrn M&P0ySw-[GcNBA2P'| Cɇ>sA ,·9`KdMPeMEI:LLXGhipY-}dݫBӛ:Ǫup(-+hlL2P6d o>g[gunU4:\eq>|=?_*5-iunea(+۷o$n5Głzj:8Y +5xiPK'|Κ|{{7J%zhit WzR.]Ҳ=PԾY]oJb]ӑ#6>net(+Y^ fXB`zM64(#G - ?pɓo}z롥щwϕsA~^8[ۣ7X5+5FF$#mx:7CK˲n;$evV=k`.t Тyv1@Q>/Y[^x8klLO\5ME@WFb}PԾ߈euf:H ಬ[z>b9~\=!zZ:8\<:8:s:$YǎmyAZ~|^Out=4: \M͞eYq]}b]luneү.Y,qBMB_YӒ!<}9 ZdOyo>gMLHF[]o -ƹ 6zR}:1H۾}#I34,,q :ł!:8U]}&x]]iǒi-IKOU(?ZGCK;{D 8iYFQ{'V+e - .˺Og?'nCt|)v5eC~ְΎǜ-Kizpko>gUut=4ƹ{\eqv--׭4dMu:bQ233ceYt +tV]0D?[Gk!O{f9 *^4MOeii7%YzhitWrA)Dg*۴?xJImu )iֹZ\uK?/+At -Ƃ-:8ujUvd݀9 *\8C'|.|:Z]X_B5DYc7Ӗ-;??Z/ |:7 :j-:8ڵbU\ZG7`NI.M?tYZ~0|_u Z]k* R?/؅Gܲ}=60 ɢn!\(Bky:r?iE:-٥MMʛnKKNu%}*c0اu ՚%5qe]X(jǏȈd}vnX$i\lYBpVAE?}^;8j ~a4"MnKKNu%}*c0ݧvz)'dI|EmϾ)iyvHKvڹsڹaZ,>qB2W3<z}UlQ^I;8%OEE;8LP JFi:mii؉7@_e ZƻtRKQԖ辴,뢶vHvɓڹaZ,ꖾrE2WN%osvpR^UƠa9K)Nj_(j?LFQWiVk#NKvZ{vnX$!X,b\],R*쟈vp9 ݽ+Yδ4ě \W2- {,_\N9^g~Q`,sv:sv JvZCF6 bhg%ez:,A] vp2z([a4wdu73- ;HqGyᡥaGLRݗ3Q[{Q7*:˖#4=-iyL;:lBK@33:6_ͼvprF^N紃i\ި,RlrsZvd~OvҰWźQ/|jPƻsZgr٣(iҎd13Qd |A0J3_#r}TV;8 %s?ݛߜx$ٞ=~[vҰ+NfSi=~Q~86+W#$jvn؄$O̕(w=/UHLNj!ȈdoNKNY2- Uk#(/ܳ?(7BAQƖUslbA+jvn؄$$s7,A\]R*ufYi!?,siR4ě ZZ$~*cbB?Ld$vW݊v8JZ&6 bhӧ%s(w-/إUHlNi!?,sȑ-ݜx$O{vҀGѥ~>(j?=l{ܜ^jgCcdMLhMhiHZe\"KP ]@J쿸`N@@9:3Ұo>$|?@;wxhilB?}ŵa vkub*֎ENϓ'aZ,~B2Wԉ/ȾٜwC0 F}lK7a'|I69)OLh- oVw8^*2}pخ(jSjLdebN;~\W6U - IOK76JFKQ_Lӣ7H˔_Ʌvp9 A,.JhCFҰo>$s]߿4_{:rpώQo|Xi?!T'oĕ'ahHڴs24$Y<-!-Q#WW䭳Kvp9 AI[?- ;H2ו|AK^뻞O9^lEPFzIv-U5'C:-ihehiHxZAh9w.8r ui\Zp<; i)ii؉7@_e Z>(9^*saIᰝP)ޝ\Hܲ$촁ܰ - IOKwuIFKDqf. .dC{:`N@d>Ұo>$s]߿4s)xQO~8ly_MOӧ%;mdD;7,CK@]]ő[W5⻲G￑s0 #G$Cޟx$JUƠ7~r(Nϕe@Qf렭RZ{19uJN dtWdttD'_- u:(ŝ{E0s ўޟx$JUƠMMr(Nϕ6@Qd^7:rNDK@GJF޽ yjIQ/,C_o?(mTj%]ccT kj4{֗rpJiC8.wmp0+`3x;R(ʋ{vf x1s43٨;=8Jul;WY))uus)pd䯿sU 55i~R=!Rp!KZc4*O4?)))-y4NA6v j޿i?0iQ: v횤:g߾ނF8f_TJ{n}=bAô\>IoZ{9A]2ƞm]K*4*O4?)HJ˪U9h"]hh2+xc{wQ u:'-Hio> [^׿M{n@^:nNĒazVWߴf.d4^/$+gwWC߯=7B -+*$׻pqTT.j֌I x: 2322׻PN7wGuڳHʦ6=;ҩ.qJ,337koڴmЫ=8… -Wm۾n$ceuM]!IS()iٱ㪠:fhwnJ;Jeee`Yž֞W_ov3L8Zx'MM(Dn zZ$rM{p:߾=?/(o"ȟӂǽcw\?;ew9_~8P/,+Kfg{ aZ'~E{띧б|E"7tFoY:Wi%G cb>A\+&cMMMW:.++sDg?^$raZoOkp/*ߔŋ/kBgѢˢrE{[( .j%G3ǽh`ފ3iw9wt񐿪}|w#(ٰW{vא@6mzb[ؽ}BPnfFioc벞mۗڳ#\Hi2RzӦ޲qFn+ ZbS.o%: {Olr3}7ppv|d\=4/u Yђ=sgҞ^ @PgG IG/7БH{Z6=:B -OT&QAezvD{pmpϴgGIN@G|:ѣnDJ#xTUi*Rpԋٺ ix֧? vd!!PfioffIO֞CJ@JKCw tDZdH{p_=Hy+*rvIio>J$]EJ:taZ->{FtOfZ{ 5ՒsR̷N$$%n"FuyK֞y:vYeGN@}|nܘHio>J$ҀG rĒ֙;ڛAA]z23dj%%9'Nh! |KzIun" YwgG~6<+cڃP@ x<'|JI:sU)!/Ҩaf rtޚ bԓ)o-(50fk[RҜ۫=:‡ - IuY*geFmY}gsّ٥IɃ`J{v4<() y߈F8TJJ ) xܽɨ5Lݳssozis{::$%2g) A[Jڋsz{JMReok<Npei8yR<)pX8WRNOf5k'̞5CP3w& 7e؞DU"!)iwkύP" |KLF^PBuF vaェ\>)uR)It)pXu #Odf[i~:nNj/E¿I񈭽*II;~\{n) AgJ%q{BPbmY1g:OygڃQ@C<)pX8WRZOf5k'jZx8@P k܎&]OtOh,44|%RϔCIt(iY}8B{vԋY#>ukR{v 48 i%N+tRBJ>,k Kf`[kgYmutHsGG(d~t}TTlӹ68RVe=ӞsykBohώD>4={)pX,mmsytԴ O,iuMk/owd4G}\<.ih9DJ8gaRh- AȠt0$/D%R2IN R-8Xٽ;8X9;ӟrfwoy 5͓'%q`Tޯ״GḘ o])mkZDjmn kg"M|''Oj+RF̲}+!@n6?}}uIgWڧ1HWyJi"d!ŋAUAmh/M/n~|}^{w&4TehHR8>Y%\N{uD) & 9?\d.^ z~>'(Ɍ;//ڻ6Q*ݒM y)h`VI W4.I;f? f~C٦Q̲*ftvj#d! &s\{U-PߎnK~qG͢N@U Ilm>F40SS_/i##ګL0ȍYv^r".rCyiI7}a4,4zIovi[{uɯ״G͢N@ŝzI>F40x"Cc.i,\~s[|# Q޹`~b&&32nаS*i#d!gI̱cA%ﲤ>QL7;v8ju*,i4/%5qT^W4`[>1e;^ɭ,k [SYdr^[}'z{#Hi0Y)}tvEۤ.ni/EKfcN$|")h`QI8~\{oҀi6;˸,߉[礿g֕uGo{2To97/^HLss{If]PtgRtM#xֶYi訤mȟHJ#_.]o4`a'fپOԳǏF`SF#WxOq]{qɭ6^: klTYIiD_>Hj7KKګL1h[vχ{]jt-g.aU4,Vߟ/ڋM>[#׳ڋQBIz7KK҈&|JMuW) ƃe1q>7.]!uk7Of'$ݬY{oD) & ?{{%…VNP,Q{ p5-xoi/ZF 57Kz7+()h`g%5E{Ҁ7쀦zfe}J_uF~_EQds]I7K{uD) & ?$ԩV;W$ClS{q^UYc|N{w24T"LosIiD_>uwK@G Jn+1Yv@O:c ڧ(q>}ysF0PS tvjRxi=8Yv@sjv=}JACc\tĵ]Gyק:"}$4_hGP=h/;5.Q(kZFJttHJ7g鹤4/iya8zT{%|bf-fMxዢ)?@erl@*rvnА-4_WWA~8^e<#x~?7Qq3s FXÌ3ʌ)HZ\[2q#TL9Ol,I6&VEwd;yO^Z~P: Nj/JJ}.)x0쬰 @J(=%|vm݇upk}Jj&.t7|򉰛to#dȈҨ 1IU^}4{qn|ݥp< -[$LWHi0[)=2"i5)Tܥ gBUS&mn{wDu~ࠤayu~4)x0oKƍ) _Փv>a;As7wͫ7ۺ;u}on,OY.=^Y#fչ}[) f ?%F=ej-k35ݻq%A݋#l}'j,ϯIi7iu RuNMN"V[#uW\)E2圜~[A{ϵkbݫ?#d[oIzL%gʺ#J5ȿ*wGQFG%R͖-]tR`LFR&&t RRNiw+-z ^kpuWIeu\WHi0Y)}ۼnIg ~[Xf'{ӹxgQ>4wbr+.j;um()f{oRL~Jg2nNė/J ;?r?bW*ݻ# Iu:F O|f%}@=I4=_^K9 ;ynJ}"ԅTr|?25G^x٬ۨT]l]Q׽;tA#p<{qua6ITYF77G A\L)iC5O{X25ss dt6+6)cmUge݋f/%yyy{wu~X.فFa;zOO&xZKWғg7ۙ9oB骯.V+71!cKieHi0Y)}:jBgne{wdp$O\@:~\*&4≛4K*C) DSϸ 1a3+ۺ^BP?Mv>; ) & ?V|YyNywGF!~w: OrΚ5V4 ]ۄFIٳ'K"ҽxܝ.{ 0^ۺGlP1SS>p n.CJ#Lsء{`@ ՛}%lIŭlqϳ;vrmmߝ :d1*n/,4u q-eun}QMi Ȉ䨧LLIP7Ot/w{Oߓ M^1B#K38eHi7id@=I4[٫{i)wjKYJN-XњQ~6~GKZʞNo vǘzv}(ȞZ͂١4~eG366V\>+ѣVɕ+^bqmiM[:T03K댩zv}mYU"Kg^0ozڍF%e۾Ė8¦NRT4fjD:BmFmϬ;c>skF`\re'9j7_Zk?˯] ۻ듋bYqNݩ#s gsڐ.oQm =Ǔsԥob]Jlۦzzfo&I UɬU{wP=ew3gv0ohH$5[zXL>X`Kx~*0e}*B|v!ܐʮn2b}Grџ{eln6j{/V=x+w9տ3]45I X%7nx94Y[IIin`90dZΨ]G=dkYKu9"i^._k$467K·ߪliU-J~E[&H5}Jޜ*midlLҾ*y=qTrit*%)< gN˺C:1dԘzvh: ֯4իbѯ'@8!xP=?Pa|J~YK: d*i4fտ'x+0/WN@%ǻ*UDڞ-_/sץ< AN@EF&oS'N>Pf% eli]j8gEiB]j{7vafonI 5>zv|:= ճCGiH/]]>NŖ8Be|\U4OehDiBœ5gOߍiIϮ]ox4Y[:tF[e5UYٓ#4T?.ѨkY>NŖ8BSR6nT=o)W̪D:BHȲ׸p;Ph6IϽ{ox4Y[II9q"+[3Z0]#LLޞmyw ihhu- =q}}ÖV;SM_b./D%Y$ْ~87@0 ~K=*=UB݀)RYՃkdkwVogPQS#~Tli艓 T6l:s- 'bOSu抶L$&9d$4>IdZ׶UfoC$ǻjQizt=%?LJPQ]-O;[zBA;zt߰)̪D:B#fPtQa2<7C0 ~K>,i>UBIsgBwt} P㏒}cKCO|/, G [@`fKke[&Hć,shN./;wŢ u,-}460۱U6wjV=2d/V7 gٽ[!]w04գ- xNٽ%I"IQQ}*55elLN@b鬠7Uw3׫GVP: Fuﳱ'N>Jš5vĖl;닓{Z~skQFiB^sVmbF%ƍjXP ̂xW-;Ϙ&5Stʪg_J޳dTQ5IR_lli艓 $FF%!W=fz|/3-|8d[~>GUaLy՗6θ dPBbvT$hHH6$G\=aCrӥ"orO|?sfzydMܚXa"8[y <(]yMJPft*%?ɤhʅ^~ jDi449")iox64’04V C ruv:4Smsm ?=ÊMN KLOkX 4޳G^x@ojgrgݓ^W;;": @ft҈&n>Ά!W[pj|~߈yХp֟}Xa쟵^w9kb,i*<  IZz+Dmm d Zy_ kҒOvjp&+";vvDu@Aa@Xx<4†Ԥ|☷ok mc/'?I {N8{pә,i_ KWipjJ QfJZPche>޾5-v}UF/uiJIcCxliD7 {꒠- +-_W4}/^hٞ)9q?|{~ Wn:n6^ÿO g;-'˿o>q/_:_[~ByaKk=XҎNBAX %dK#gvcKX԰Mֆ}@- 63Eas@Ҏl\?Ў_mswfivႰ:޺e(![n|\XҎ^ylirIز1Rliʖ޴IRL(.,դh~<]yu@%[KȖF4qK$%4+- cQNŠkbKTt"!iDfҕͮ\,v*ē}Y^l@YwJJci5-ha<. vcKX԰бc~>`3-JI[oIW6?K;v*p|bV;>u@dm.)7-hеo$Rэ`KX԰࠰\=v0<4LeK+)E/l&]9m89K;jgd4ypX: nܐ4qs9҈&n>Eb KԔvz#`958rعzUHaKTtKIWN>-W`imoj~DM;vHcidKC]&xìZn>-’PjA XE cQ<cKTt2)EMMfҕSan&Dp:e4Og?N ϓ9phT4te25kxxy2aKTt*%)HɤtK;i:ig_z^vnf?N˗%]qyLeKC]&xìZn>+, ]] X԰flNMi(4LeK77K:R2i&]uÏ`I;t;ȞyiZC5--<ӲM|ZnFUfq3d;P D[(Nb5mu+eUZHVFtzg66Z`Zs~:9Oo>LN Ǩ8.֪5͚0>xHipJJJjR\O'~~Ks,{p/O~: Qnޔm/LJ#hٷO6m2QE48%-UkL} 2>tHҔ_yLQ{`!vu@(L&0)d"֭ӣ]48kLwS>퇔,9bgyA(TtgDQ-.kE2oSؙF2Pq'<]48;w̡CBfN>hR\㒾46fgf`_~{+EԈ{>iq%Τ4/'=!^.RGPþ&5DJTR:TW-_3O  Q]{1~*{xմ: !EjkH&|*o`ګEJj4;kzz$%깳m{퓀&#e*)IS+y/%[O G:VG1IE\7&L|~]zzW԰# ͞=%ٲTWGJTR:tW.s`: ڻ=^8+NHjl$(RۜF2/V)խ#q5,xѤDB‘2t1;5׫^h_(˞7=k<u@|W_inNJ#X67g|_::Lu48F};5>SiXAJTRzxXR]-.SA&GN{6\Q{}I%0NSi.OJ#X‘#ګk q5jv֤`l!e*)=4$O%/eN=[LiY{}[;%pe>PyRėEyU|Y{{ 48F7E͚(Ҿ ࠤAſj7k^S CyY&Pߗ4Õ}S*)OJ#t*fqQ{{ 48FDy]aqju@;{ok@J#48( ٬JHipA&۫}`) .SIlVRltǿxA(WO+Ku \OIt:ܜ}I-\YHi$_>vV\N{u%48F3LN +S}33}`) .SI~IzM;5“ 3~}sN\\M{}`ij`@ WgxXH&|6utHJE{u%48K?AeZw&&o#e*)+Q==vyDXYk_eupu@[ZX0/+yVo)d`M"l RGP:u25oNLhh e*)/iS==vana95zp}Cn/9r>>442")3<}/Hi$_>kΟQ8/ۦWXϮ]ffF<@ ) .SI!Idlgt B٤VXӾseK>zR^Xu@[))d`¶k>4{6͚>PEJTR)I볳=;>-zA(yPiJgB~nߖٷO_!L|d$mS{oU48Q.!x" m4L%VRvﶳ=H% Xe Nh?ǏKʤf~^_!L|AU82ahTug35ej5 72sGRv찳U.=P6OkQ]M+{LA{}`ٶMW~F2# abB{uU48R(Ig|_XZ>p ) .SI鸏ɊVYОRϧB/'Ӊ.=?~X^(4635%=3Hi$_>;._v|^{uU48̘a>p) .SI(֭B΂V_zA(?ˑ:,Du.Du Nh3]]*}մ)d`ljgn:8}qP"b)U˾61Hc*.k UJh OS̑{l>\p~r;'$Q{om4X[fh8 9fvVNJ4L+$kn.|/^W/xbYhC^u@5\H'|ؽ[[) #fW[PWG#fZ)55ۂ;q=׾ nœCXv%BiUcaAKn@W!N|b6\6R,GPu1{ +Ps S`3#I:>c(Ը^F:5G_>">s7+~e PTVI,?ho4҉/@ ۅaaA{um4X[\4{g~}-`7Rl~(^-]'3'SKħjz PTI+M]x Rė`]& &FJjUsT:;w\N`z4L+O>mͯ2f-6jBKw$u@uhmԿ~4҉/̮]ѡHiA3 ;`jǩ@`3޻WR:;c[P뉧a$}AƖOM QTUI{9)t׆-@Jj]jjk坧q31}34L+%%utd\O<#7} ݼ//$_K_iLhz4҉/9sF^X3T4Y훁 fZ)"aMM-c|e\_*hUlYyB@: %~>Hi_>-yq䵡|^ `9:FGCJ,.j $ ) 6J={$M5OH6_>bKa^̊u@]")~/cވF:"==jCGv rujml> v*fo7 DJʹRGmA5i;q= _>"z aޤGBiI+)~y=߆F: O;Ci<о4XN|LMc̎aN8 оH&RlҮ+ie|ۂf 5 1Y>"JfH6̃|wiCh33r&'xRė`+tw Xif|:d;*9NOվH2Rlҗ.IYl *k;q0sW_ _  Ǘ/BNHO?45io_Rė roG^]\Ծ4Xn /Tס}@`34T(d\/䜝~}G]_5w>: %4c<> 4҉/@䆆䵡8؄ja 4q36}?P-HiVJ߻')i-JBŻϴevaM ,4T ko_Rė Zo㏵ ) #@>o~|7]]l./3!jPEHiVJ{Ŷ>o=qL62\/P{li@Xi lGRѡ}Hi_>h<) ٱìj`R,GP'WWMOqy{dMo5٬Ui k[@ǩI?z!h_iR\aѰOkD: B35}Hi_>y]ym|Y`9:q;gM]D5 ) 6SLiYy[ZsG} ?&}S*S?/gQNH"7۷ ^W FJ#Dυ8mm[ ٷ8D8;w~2A(@#f)(pŹ\aQ/F0'nהZ{{} 4$*ƕ+AJ#Diygp3?}HiAn?D;HRl7=Vϸ^=w+}۝?@dc8W}@%Hi_>H;Cq:;) #m˙o5w+JmfgHRlҽ.79玶g\/))kdnPř ڧNHI+"N|[X0# f7؊v*P$9tk >4L1$n|<-rz"7|k^-_جY ?jD: Yy8WWV)t^w0o) S?pM8JC$bD0V͗qR KƘ88Btw2um|vo?}>+y+0AmŲ<'i*RL1UzAhW1c~,E O|F.*o}vҽƑ҈&|bYꝡQ 7Ԇ(%!I&kI5v ) &ӘMM*.rGʕƑ\v|c/>>f: \R)>Ӻ8Rě>N:`8ZBAΝ={M=*ͱcR.~L@`2)L* 4O Ot[ȯ<}Ӛ?,{?grE%@PۊϝCtoF4(R R(>l4"N,Rqw;uJc@J4tKbK\8,Ņy}0wm .j8]Z=4ٹSK{{%47o+9tH#pu<|(JwGА/͞G˺#dSmjM 4,lv-鹙-My/u@X<| o҈&|^ޭfu`5$%) #_?ݻr HWHkR+sm24WCJJ xMUَS?*-\ȑoZu|A`qR>R.>Rě@͑#to4.RA} ,gtuɶmLweIGLM%H4ޔNU WxޙrlR\w'pϥ: plݪRQxCJ#x(R, Z+"pԹܹ#WȈ<(N<.--*mmmtu,,alP4)NDŘ>#{<9w÷B: p~DzdfFސ҈&| _3 >THi0\ u$_}}萭[7?DBI^{,j@ 40)N4FdcNsSOV*W',6w7 ?@Xi&s:l}W҈&|$u*4.A~ϞKԿ53nioRIooaLi)NTG?,lv1pviҵ{+K(W',6 窱R`0uffIJTܳ}g47LNJ*^::t64.,A],J&#CC֦ٺUt<&,) Ѥ7i~bv8-+X~ M^ݙ3H˒Y7 ) 39g-mmR_ijG)NH_^N/|\Q)Rr(@J#xiikSo C( pF=+{J{44xpRrz+1*/Лǎ :;ZP6T4N0J{6/>'47uXN"!KBibQ2-[~k~>3:O@') x )cJܾ=5Ci&d˩ls:Ot?T@43%*En}yGJ%F4x{sK‰i jǑ#G%xܟ/uΝ25 i0ޔ޼YU67f],Z}L~6iR)r3>҈&|/q=YX}L8`XLFl[I>5?nimnEMi^/'3 cAEF() oYHSM c ͢FZmJ)fB|i33~'w也9~= E2w_-LJ[57Hi_>'l:M) +iP۶H46JeeqeOMH,&S_@YNtSM۬~0uMvy͞RʨL37mF0xD}&&)[4A,28(Ͳo_ ́22"Wi0nJwwz|Lzq\2e/k_: (ɤTWp[SS@&|or},kuR :iK^9|X8/o&W3r͖GPƨ`2ݔs?=>d7sEM3jxIo5%?@&|HU}::)g4mzmMI>6Daail1c9vLqT@NtSzqM;mo~sP6v O: ϻ)o^Hi_>׺rpXl[{rFJԎ#21!bYyU55522"wJ6({i0nJ/-MMӇVV׏̮>վ,im ݔ%@J#VggAU!?ڛ9R =?vMFG7ѽ{gV9qB.\]uLҶz> ݐCQۨ: n[~rܗHi_>W}]AUak,Kff7)4keEe߾'ᄏk׋] =3{Hg|\,wښ `2ݔvU6< Em3&qLD`oqY۶Ʋ#JF0xUooAm!7uuk) fuin*D"$GHG:$ ߶61YZڼFuLn2I}t(jϵo0zP@:-ڶ5_|Cɐ&|/YZ**29)٬~AJ9~UFG%),멬eͩIXLܑeIBtmV'h"=g?|7<6c=A G)l萬_{Rė%MMB],.j//4mxQݿe:ɉ2:*/K,&J&c: &SO&7=yqr+]ҩ<1x5py&1P6ԃ@]䦭姲Rw(%Rė`aUFi|-ɤKKDz˒Vd(4L=?MguBՁT"璻]>d7WʏzP2r3=C&|yU/9\ ==AobYL8,!]]+'ǑRڿuLn' pD齜=EQq淯2 %2MUO}d2;)`{准 --jG4xcyYŲ z ͟܂22"8@Qd)T>I?s7W̮XcP~uv&-geu]5JsGJC]<[UUU|@9;VhU^ç'k$.)4vr ȹsHh5x: &SO7aOXY[zoRG?OֵzP +WTTPӣ} LJWWA=!7ioS(BB&UqYZlV@uLnv]'A rӶ& A@JCmHDx}I&E?*ShTUə3h_+: &SO7ŻL]]nJZ~ ) ]xbkŲ * [#2E?ddhjiiS= #Qd)ই{RСhmM,MIۚ>0R δT(mIjDm#L"Ob*ICCL2uN;0}Ngdvo],Ą,.J : ̌~>=N@zPЛolh~]"&N>JE_U=Oޑz]X2HRItI~EZ--iL=}w :ԃ@}6eF8@hJ%7) 27'= U9'2>./ʯJc@Ne)>;|B=|ֳvv}GJ#L| (rN&& )  |Y^z᝕bQe|\մ&5iL=gO@5|zvHi\ v0a Ȉ8٭]|K@xX2c%? Bszڭk &N>U`[9'׮i RJ*wE25%++rZڿu,SO8Y A (nѣڭ+!&N>FCӧ=:~\' ) t8eTu|`4Xq H@5p$+s>YRwjwF8@N>-$!`7~!nuZ5FJe)}sw :ԃ@ |^}U{=4rZ kvVMIDJIepi4 jSznQt5@V֮絻CJ#L| eŠ]ji*RzuK 7]:p@A `zJ9@pN<@=`cg%zHi?Z ՞!l4&z4z 2R,SOS< f@zPA蹒%U(H=Ra9%AR'OjJHiؐr9׻'Ryj,atTY7 A g rY{m4Ĺ?jTTJ{BA{OjHiBJarRY7 A |vrNnC)0q򁜹rᵞr18vL{  uı`) YHs|33*@YjSH`rN>T{ Hiɝ;ibp$) pW>R^m=^O!A `^\yG,,4 f!O쳀u9yl &N>'R]=BVJep,dxXϠI,#2 )>+3֩  &N>}j%hב#cHiڒ U*ff}`) YH8yS$_@,5پ:lj`)0q|x@SmԞFJP*'Ndpm+Yʸ[,#2 )>+'>Ww 'ȇ[AR_}=v oŹ .mU(ڞ4LPe4Xf!}|!rѐ!իS Ɛ'Z-JO'r87g,#2 )>O+ss>{WM!&N>U*R,Z ړ1HiV%2ԶU7m,#2 )XXPiBPȇ;w9S/j`)0qUT@~[Ma4pdpm,#2 )}+Yf,5|Y:55=I4eq.>Юdh4qFZZ j,CcbBYc:8|q2d) iTEEJL mab:TJ*Dzܸm_:osqŵ_]]^A%Rė1F=ꮀf4$T^=T q4OPf4h!s9H7 A LO\\2~ZH&|G@U"= ^ׯ`5W_曘'@3R4ӐI!k\.FHw)dSXc܏G@Jh{-XjkcퟠHiLCJ/wG6+,MCPhϻ\\auvjU{Hi$_>;w/GCJho-Xj: {4#@3 )ͺ>z{Eijq95?/ݽn4/Ng1ШtږchHimPTԥ֨.[LAPf4h!s9H7 A wo[a u#L|GU>2x 4‚$82R@*s-Xjac!@3R4Ӑҗ/A_i!x-lW˹tH&|6q<Oz) -=ybS,Ӓ) iHW]!n4 qW.VXgJRėxm*x41vmMz) ̼GїZc-,CPf4h!]syMo2HiX-XjڒjЌ4tpx<{&,MCP׍.VXح-}@J#͂f@suvڧOR@;jRKm,=I4#@3 )*i!xj}j;Hw Rėht>9[IOW4.K-IA xJWuI 9ZaJw Rėu5دO>`IqA xJHੵ5+++W)d {?P/^HσHia}uamMzCjЌS3I& C<x]F F2ll Wѐ@l6F3NMIOSjЌScŋw 2ăj5k˕V.g@zH&|@yJ9kk#!R@wK-g) ;.o;A GˉըyBJ#=1{@OGBd4߭T*F /y5hFJf)} %S!|44rbNz]{H&|@bѦRKp 46::ҒHiL<{z\)o C<(u9c}CJ#%^u>.=Z Ñ61viIz!@3R4O.wJgg ࣞ+RIuߐH&|@JȈץA5:uݼ)=) tO;;N@xPQ&rb9#ݷHi$_>Ą˺?\oKOV#x*DkG@Pf4h&٬;%S!|K'V_t"L|٬˺?P##cҲJݩ澿<WV_/7*A=ؓnPgqu Jq45hFJf)˹ nxe71S1p2HPqogJK҅_:5Vly1VLOIrWzn M[&''924#@3v{)j>wĚC4/57gq81t jc>=}j1V}P_8)M#-FJOr5hFJf)]9>X67cpNppˉF2]|sRvfFz $R:zf|XQC[ӥjhB9uғA lJon:Y~Duq3&n{EБe]IZvWEE* lCH-Xu[Z3pMQ@̽9wWy|n'14$:+VP)RDͩDB=|( |FJk{s[}N6FsJ*ʲk:xPT`2ٔ{W1@4 ɤΖU+TF4q )RbQְZTω!:9}3P=kڽ[={&Lj0) &Mu-$NАLlYBHiD7jn֙/U{t' )];NY5\Lߚ_~=kf`2RL&mm:ϖ_@tNАLlYBHiD7ƃ]goXwHoҟn>מ|nM[u˳vt3j0) &LyeY:/<&c_g˺|Y!DJ#T{,a%uBPHe f޽XMT"]7h+EPHi0`J:x Xhhmٲ 4jlL:| "73ml&ke ޓ'5R/Lj0) &J\NrR`y*ʲt#GB4glLgR) RUruJe֤4{0aNCPHi0TJ_~I;&cPIE[!DJ#OT<9ǷN,R%S^4 cSk0#عڡfYjtT`2RL&)? RXTWs:zT!DJ#O5eY,Rg|VlNt곿奿:b?SI6@PHi0TJۧ `i\>z҈&n>ei-jtT1.aqL"Vפ??kתhjfF`2RL&Ү42/sF04Jj.Z|"}"M|| HoWTvY/lPP^HLFJDRzzZ-JsF04JMNj.Z| }"M|sSS{~]+rJ%3N֏?qfYjfFOE9|4L$42vs@04JuvN飇)h*TSެ,KJw9MWwcC%2nI~< vt^lP@(`S}ͷL#"uN]k~s)hW:{,5<,DE- ko>OlǨz|ߎkm$ے4^Lo; __riϵV jA BJɂOnL*,4ZMM!Rr,YǏk-LĤk@Re(6X)ٱs/׾~t_<|qHB#K `3CCU k j#RLpJ#ϙ>ux\g*64TuɓʲtfutW0CRYrs%zw0=w ŧ9g::z404=~zӇ)hqu,j54TJ1VS|vޯK%g.VWE;uvj.&"dawt'~ՠ@JKYĄӱNsU>=)ho.TUPް&&j/nD.f;Wj6.zWѬtC<s;vtZ?^P@-!dDB9بE!: @s; 6GJ#SDxo'+՟; ~#U/ R]7m4uz"~v*vLDXadbZE{{W\?s6rY=X̱~>j sn }Beɬvwu_F& 'd2i`<(I jp ) 6MJWs X)U2-矫\NXd:;;CCC_>>r$^nݒv;~ߧ\ëyF^i秂t K; KA !f5H'hr0: @ְ֭jhPҝXƢL&bŊbiϞ=edD55揄;Oέ&>\6=頓e6j%A #ftQS}yx@TNbv6Jfm"ݏ}Hi_>csv355%*#)=_H=0˞Unр7gno#3g˾"ФkjR=Pt—==5 u@@;v,ߗ24/X۫IsU}"j"҃cŕ]~ e[4%>>8uLaWX"4,ni im5x0iJ-foٳXF<:xx}W57_~nŔ4^Lxل盭U'gt1w!Og^IzP%nzUvE1 >HiYH)*T': _XF<#榦Ժuf!U*Ih\J_2eo{r#tow-ܘ>;}{y+݀5 ) 6 )ϟ$j`A X, m֬24/qvLR%>eJѹ-U\jϥLOzt74,nmxS Xj%m?&4/1T,ժU&kKx1yjaՉ||"'}p?۾]! j!RlFJOL?j2rp4TCV { )xG| 5yJ&MV}PtpBTRL1kOgmHSoNWH7 $*A DJHG55*: |^ڥUO )xˇ&'շߪ6JOdRutBAg8$)?:|~|Ey1wQ}wlڤ?Ϝ>H5) 63J55W}p 40J/5wjRje5>E~҈'|8izZ {՚5#ֺu#S\ _gjܿ zwT.nwPkN6飋? Hi|46R)kXg>ԤZ[j`@ҍ)xˇc&&ԶmfWwtp)}}e'77 = (.T^VnNKל*>(˃bOk55Gqp4r*\ޖܶM=z$^M҈'|WRҢݓ9o?,<'<3U埽SI̶޽{.}v8YsJ]A ffSzdDQSw4afޮYCFJ#ᆉ ~}sqsGsڔʮlԪ'%$e:/+GiTJҧfmP) v3ң'z x۱Nۇ>CCJ#uj'*VCC\n1`gJޝKxjPI^˹zsA6W@ܰA3HiUj : TWp^n54/3=ՁUӵ}oV2::T } SzpX Cs\n2E;wgGޭ?ۥOo IQƩ+lwfo(bYetRL@t6tF݀(h-"RZkKqڛ`H!ͶZ-sn38&zÙy{?j-m[P9U>/ᰫAneY222 L|D^to{W. `LKŠ^;+MOft7d} mM^;|,+oSt7`ӂ2RL>_+_4N%o *4rD\r˪˗uw[j4_}[Ų^>\NF xJ|aP.Iz5yy 9rLu7` RL2ϝrq@`Pn^.)Rɇi9vL֯v{SK{;HFP.Iۋc*;9ҽpXg\ RL&/^Rμ25qm+P e )`4KO׋eywNԽ)0sR2%Y¼~Fu/~U(HM833ב`2唶m,̋rw4$> DHi'Hik edD I7U1;TJ |vlJW_}~Enܨ{0$)t4yjkTiغ4ku)`CBAQikZJ^-?{x&;*Eii/v^J+jө9 _57+^%?{0!oBJR:*>I2իe|q7l4ݲ)`K/˦M uukR%w,࿴lzaEod_H^8|Ν}vQ^I5-Hi0ZJ;T{ȼ\k(-ksP xJ0-Vx\w.&N>YmwO]C]֭y}ټYvehwݻYV.~VG9ߞ8!ȎeHcXI֮۷uTўkB1u%Nzxߙ/(loU]XԽts;]Νij[`2fV-rE"n*4/e`[n57ѣ27#L e|\v풮.hX7KSTWk)̬Zپ]l[O zSе_B1e'=x7 Ku0`2RLCCo_˲rwql[6lp;)ڵނ L|Cd22:*;wJWl.,ǎou󓒞D]ZZqc׭[e^|8v_55VdR @cJȆb˪MLѕSOB1}]Գ5W s K^8;y`2RLܔ޻W-Tu "og.^5irtvʆ ( VU::ʶm28(F0q=ٳ#RS'[V™݇X-)=xaEz͂+IHJa &u/1=-~:7)^8 &#dJӧ2NUWK l?ffy~.,^:|}8 &#dKO鑑{D-KQXC qLFJɖҭ'ㅿKUڡTAK8 /$v54V%kR/)EVeJמ l7U;<[,:+ޟ ;9?{Nu>ݫ74-%NT]dzr~>Vā+əgguԙjkgnn !)FAaJΥ"KAD;2]w)L ,7!1bNv}yr3 D<Ͻi#7oM]ݻgѥpQ++41ANщHMMZ**,oNM x_R.ɯHb$>e1H'3c.F <||sW/*"C:O1ٌvI d:3dESӑxd9>_64=ZǭZ/48H&':;i`@g6蠮_/ Qoɑ#TYIy1^/߯]`a; 9#뒬LS*t?0.D|73]5NtiK b$GݻNsaM^ZM$+FR [T쟌}_nέ w;4ȶN0[9_d`VL-E菰o]Ki;A6]Gf#\~>$'J2p.8 ikT^nt-^/‚@tip&BϓXgEܷĝ$+sn6nzaNyQ w :҅gqХD.=4=b\pdŮ?䟊Nލ'RG8 .&ٻ7܁. HPKow\ hymqs+{'ALUR @ "Wb}$ʙkV+OOkA5;],m`4ȶ׮?dv˼+6CsO%YqFB@A(Ž`si:sF ~y+3^X)A*,A(( :|ڨFFhlKPSi)O__jnJ*)Iu5>}^jm#GƍiQ/z KO5IVRܒ !W_ӏqW/-eeT[Ks?ya%+W1$px*|vcpÇpWk`4^ǎ?dfL|aIVϾ]`ONVVQӦh~{L@v?\hTWSi)PEGo¹sӧ>XO)~E ߯Kb$;x5?.Du}]}>Q)ХD.ۭIUA΍]"9>#Op_ `?y,WFn 8 6?N55TQAeeTTdt'ro1FF(Q{N{vԾ0uwSkf!:x~hiN 6?9yR~m?qt3}xF=L]w)6;T`Q ꨰЀʛA0,ݻ&xѩ5z)>c%ŔЙ3㏔Ns *sOsIV &07eiCaWA K6j0ٯ&4` B"*(cT_ j׺P VT:*dsLCL>}6~{&{?G`7[m-ݾM;-2ee6늪D~|=ۺ#+]8xHybܥ5H[vVLUR̀[fmϾq2Ԯ;BA)iN}XvaXG0NFT_O |rF\> {&'?G>ٻ:y)~P$nU_.j 7*>й E2ċ- Acc"ʚypK#ILe(O=f#f:h.~?KnlnO2 `_9CpJ&插GS}=}ut9Bt(57SK뗧NQg'ұc45Q8L33da"eo{bbTzGCOm%3ܵ'R8wE - CC n(;+ /DUUݐ-RB e]2bYt.֮=]=K8wN2M:|{un0;_ʲZr (PH׹@[OU˦vxDSKbnbvv]dĆyQpK#Op=YP?rjSyMsw#Ĥ@o<0NxS,F==T]߰_:pF2]+ޜO{bDt9{Gt$ ҉~f lΟ*+seN׿-5WRly̐eq ln(& ':gEځ< ͋[iR0(J @wp7.:7PTvܭH[Z91jSpBcf:}6^[Mxx[Z>XJƫm G?.MOSiiᮻa2ݣ`Pd1Yǹ OД݊S˙d9]A埭[fn8a̚Zq6 GC()A%Hi4΂ %DP1'ۻsˋi;9wG׻̽::A(?R: &cJ#`2)=]n\ьsڹݾkU|ZiIa|l;vv쐮 Nɘ brR n) $t+W]\.%\qC{uLƔF6qdSz1r\+Zk ݞnU!l&e۱mt]uLƔMMG~~5;+Rj szU[{/Ur֓C)=:uLƔF6qdzSzrs\K7Ѧ\3\V4b)ҥw!i0St|0/JtRr܄ەt \7tHwb1M|0ޔ^5RW;O+AGB,}CEC\w$]8$ML(ҥw!i0SRךϐŲatKH rJw"gZ[1%ѓs5)`24&ӘժtpOGJђtᐴgm|t]uLƔt~E+k97T.ҭq?{ʶӳtXz`24&;6{ h&Wp)-iꑢtᐴem9#]zb1 A֮|0 )`!Wp-'Qz @gVؗFLy馱XdLid7LkJZ=RW;U ѭ-iePQpHڰAvjnN.: &cJ@ Ra2>.Rtrs\+q&UnPՅo+KdhiH7%: &cJ#`XSY150i.+f]l;vN`24tM&&[B-M7jҭXk sK_\YޒnKuLƔF6qdѧk9Bj}!?ށ^y^vW;;wJݝXdLi P_|hB͞k9IŲt+]llo-ޖSJKi$: &cJ#`SگV.Zw эߩҵCFl['ҥw'i0S:djJcܼl['KޝXdLiӧUocSSҍ!E3Zɒ+MVՅ{s} bpZ ;i0SET7I}%q_dߛQ;o@: &cJPΣ}n"Rjd9nŒݮKAw%?7zJXdLid7L)}5qdP鷆.?X;ܷkݻm·JݵXdLiXZW|^6))ժ bYWtp1DɚOO#i0SfODтHk@Q|zKvm e۱st]uLƔ%tynɲe^{m9S:S͞k975PWʽRKx.QsUޒn/: &cJ#`Sz)r$Y3V q}CEGnդkGxP{bttR鞟cRWNZ^"[a]1.[5،T*ӳm%IN>XAc̲XF!\ fnV̾?k9&9yRzVClFK@E=8I7Ūk];~{v*tLQ`3ZRTOOL&9`O_]p|e[3`nxhet۷k׭;CCs8`3Z56=PWӥJcqp-SN1MOOfK`yʋo6ueg7W,4E 6O|}-=_nO;2oFr !B%aFs۵֝kפnq\f4|߅ Lg > -yAU+3K`b\"W1|uҡZf4≓6ciғٲBkh$|UXH&su]-4،LL L5 CKG:2N?#j0xG=*E 6O|w[rLX^z4dl| ],J&zYuCzulFKwMLdP{웖O~8ۇҫa>Y2> Ŋhq&ٽ[zulFK]:4|5ӧO7-UAU??s|ebUz;~7 ԞKEu҈'N>웖yqWƙʗWA#m95; gGSv]譏4، Їk3|2ԘN}jݳQwn; w^aegF!OB4 E 6O|ݖvzn82@_,9O>]$INhie}ްPKl7nIKGҮќ08 kAߏvtSZ}JM5،Fl¸+lUWNExFzv4Xgv]LMI \f4SJ٣=QPov֓ G_IW2e=\.ɪ6.ҋFE 6O|+-Wfr$e?mv0|<#=>fvV{vݺSңGi- zK_o77^|秥׌㫐ybQz5<3K>0+d>Uwmy5،F- ;@zH:P-ze_)[҃&E 6ѝ|Sriļ) Y~>:܃Pzvvk#i- ;wl7HOht}NJ㩘w9`z3ym>RugAQhit'6,$ )3?_ '@ԛahOə% ٳu#iw4،t:5͒驩MGK'ڕ5S1{"BQ`3|Z!!u@Qhit'6,%Sf/|tԖqx[6^(J?qj׍'ߝ"`3Z@r>tHg&Ykj3xʉaz!= l_c.+eTgE 6ѝ|̒)d<5В*[1Ư068]7r~wpNhi U*;LN}dԩNIK'_k OooG}7o }(=(j-UP;[tX)9 6جZׯ878$սzFd%)'^Vʋ-QTwB%|G&+ҳڂNl>XtX)êJOaf1]HOk׍Sߝ"`3Z%u}޻Wq{e''u!-s ;ˏң %.USfYB ` 3dH- vtH?=E8f4A޷Og&G{< O* ֶ}S;R7C遐B~|[tH*Nl>ؠDY&g`KG/H?ьi׍5kߝ.`3ZYgɭޖrUOzhikc-wsGW ||P>ePe4YruUcXF #Me*aٙTG(Ӭ;BxN@BMMT::ԝ;ҷ tD=re9ϯJ1u?otY?ޘO5D-xb@օJe%*=>"j.'tjjQz|,2ͺ38(=wk9 QFKk< )ϓ塥G/ 6oLeJw~x1'~}Lo5 hi<1,[#&]i'5Wk'V8tHf9p@zsS}*֩[--_ʯr <pŊ ɇODVړ>e(j2Zۙr² #fVtgR*Ӭ;BxN@g۪KTv~$}h`f IeS(Ol>(,TW<٫ɿ?M#9'=;w2ͺ#=wk9 QFKАͪz-:O`}}[RAKgY>0w nL}ߖO,]w~ scW ҧ E QFK#|_++,;]H٬ަ8#=;{2ͺ-=wk9 QFKX5=T۷kuAe~joWj.58GvDK"SL^/$f8ltSM)xՁ wu&T>rQe4ƻ}?ٻl9<۴Z=Mi֝n-< hi/P*ӧ:`٩b#V*Wo F]òq1S@WE>t.~_>Pe4{t?{kEL DuHEYL8!=wk9 QFKxTJ٣6jbBݽ+}rhصonuW;efHʏ ҷcJ!cMGDQ@҈'6T&^IXNJMf޾b|\2Mܺ%=zk9 QFK7UOJ&5Ae^57'}@KX*O߻Op ˎHVg_! HW}5 ˩GAQ@҈'6l?{]fG!SN6/=>kbBfikS/=zk9 QFKxںU `Iե椯#2hTΟ-~enTS֓ w6(6޽,*њ, yBҧE QFK#|hWN|Ez|4ߜmK*==c~euCzsOj6L<L>8Y눘\?wW?ͼq0w nU{Ca,G[iOu[Q@sOl>4WKYݘdzuw+Ӭ;;wJrxN@@Rj7sR#ZS9jmSO[O[&Ϊ~ǰ 2v/O)a9Ǯ4ԒE -F<H'z>/:㣉:{xwUYwz{n9< hi u^]]*}-mSMv}t׏:ò[/;ec>3)E F<0_l?NKc9.vtїp2ͺs-4D- *y-U(}t-S.;ӫò[>.H_< Tv J:/I?o? R_D}QMߴU/YĬ (6Ƥ܂;@PHh1 $8:Ar0 A)ubwggW."Ţ{vfZ|W֑Ұ{u>>;:|XhZޕ8 NFJeoqQ Wf6vq"\}uXR;Gw~ @I[ 0n<7_HiEpIHiXtD뇂fViy>wa'#69)dbkϢ4ٚF"q-Rӯo<|mWx/_a$??`'#Nt>[+RV1VV}|Oƶ8GJZ~.̪>>E]Ǐ>wa'#2I.m-:q옘wTJ)#yȌ|;w!Hi=|(z-ZqꔘKK4U?2ҔNw/HTp~ ] l -݌)48) w>UgBVJJ'#r=YW}v̊΀w#ҰɣϹG)LJhkwԨ>w9"Hit]*ᶐڼYΪ[YqNZfUۇ#Q#dޙZ陉Ta(Yi #_48) w%7ʮ@x5Ұ\V}vviy]jp2Rp)Q]-3X{ _'s}]2{hyTϿ_1j*6SfV`jP퓕hҖ0a'#Nt>Fwҷ.Ri6Zo3vo-4-jmU}rDPҀcMM Wf-}Wb/&fV\Y?K<>>}pq9jJLt^Or X̊ͽBz{6JJ>wI.>۵ M˻rjp2Rp an8Q4UUUY kAiX1H vllc /F3^@IiTԥYBuBJ.W(;fzZʌ+hT y'ҺVT摱P՟HNٵ){ 3N'^>n $4)p@y55OFJrv簩VrBg4"`媱Q<|΁ Y1ERyLRj~nvζ՟@x};lHi/(‰kf)`;HJr֭H,adi%+A ~FJ~g"_K͛ESϟppKܮaSnTRv}]S1\H=aAW\xEv"gYMǒց62EսN:-Qi%Wkփ?#/e2]L˯fWn9~m."VuGީe|sN2֍cWv8 ~FJCx.8g4ZZ}}ҽó"'3Kn] W'LQu*4M,KuADP@MLhTr:]cƄma=FM5BiO4 %}`; luL9tM0NP+WUUQEgUyܒ[#).r2 BJ%ͪ=\Vr}?#z\l(3.YSShXjkK&_Ta [Jzm'yOn2) %x[[ o`% =g>&^rmn;\ͪ(*ǶŎ2sUS#T_/yvF嶿2V=QkmAJrɔqO[o%od^#R1dʭX? r\;j3R>tɪSSPfxNSod3") Ffy|oOt=N|Xkrҋ1sIixyܒ{6T"BJ.W~Fqqz׫7,iAL%jR\ 7J[v6BSjB Mi  ;ݝө"5-~av3:iymLS~EbvVق(YQ5ewc4YZ)%a+JJUͻ44‰Ҳ˵]z$|q R-HDٚ Ms]ί 5) 4C:-:;e:+D ̔E,20wFuxJQ/Fal 4‰z+z z\2nɿdU=,~(βDoL;~EGg)k7XsvHJwzU5n(IͱL._U)i7 +BJxT{&R45:zEP@Ý<)Ӌ_Ѩ8tH%_?<#75&SuIJ@ ]Ԥxf,Ti7$$f3QݲZF땪.q꽇Ą4 @P@c hT]?T,@BL$zkT9+lUݒ@ɼuQNh.Ui7$2\ Pbט!q#C|VP溜_j3RhA.tڿ_<}`Ack.s=yͱdٻyPsgR,gro<#Ʃ9EHF8qRՎx:fkPⷷrrBYC!FGU;j3Rh'Oʴk Ye8{8hjr;'Ie{V6[4FfU F8q_x&"Y]S˫{(  Ms]}}P5) xNsڹS0T*(y{*߼5i>xQlO'BM3CuK.U &i7\IM1.K./GJCmú gPP8vLhr~f Hiy!|612"iG HF3w ݐ#-1Zdo93K5vWN^قHi %_j|G Ms]ί 5) H,Hmd:ϕ-YG xJbdR{Υ枕{RZjV?_/WLF8q~/VՌIi2"wϏ^K{>,4u9B3g4 gqQtvk5#El"RÚtE,YvCJ@|}h;Z9ؑkXS%`ãF8q~{'M-zƐHiR[mTo?溺T;j3Rphki8WvH/ۉ{̌&]o8K7P4(Q3MCz+ߔb>IUU hN|Qyn>.I,JJCwRreSQik(ܚѨLVΪ>gj*?μTԣd#@fueeuO 4‰u6l-JJC%|$,۪dǏ Ms]Ѩu["\y?MDV㪏-\22;ΥN-yk-8;ƙ|V=`#F8qj$&?}z'/.) >,IE ؘA ~FJ<(gZwJE6⦘8&W=q/ۭ<&) <C<|}^Ȑ*WS1`cF8qG^3(9Pb;˩i MUo=j3RÇMZ1G3r\9s߉|naIi9VD+t,T ;i7BDuє^ZSik㏺\{4۫zADP@0WhT>X00zwxT2 t+ߣUkEsvcN#>{&Rf1})kINJC-nI^rMGh:vL?#:ݸ!^ZѨP}ָ.7\^Ii3}iU+תqbv{N#;y/#ؙ^V'\ɲ'Ms]D5) #2ʊFE_l@ i=aM^ru3YU}nRяӮӛ^z:N#ҥ'DHi(Y_OQwLIh``f/uF b;M6BiMF:"Z#z}n{tχc޿~^fFva6x]huDޖj租dgM Zb_1_msRWիde3F}xAWҒ L<M|3,Y@JCwsb X{h :dF5kNu,K$GXwM="K@W?m̫ՂPmЃ֨gFIOF4.=ճ[ib6HiےAߋ{SMs]]]#TFJk;p@UZZiclbe^N;'^ T;qZʞ{U4(Ah9 ^[.&&J> iD_>ԚKzڪg tBJC]iѫ)ٽVgiWA *#Xsȓri$' |TfY[pm2^-ز~RΠ~*IƂV_I=}@.ӈ&|Y26'PYhMn<q4uU #@e4D9p@=::˒=FS1T=5|?+{u!@qPmЃj},'ˮD<M|V5ˢW͐Püqx8o=::Ms]տjP) Ԛv>H1vv,^01o٤w_/̒׋ʼnyke3W[si#g\<M|L`RҮx ) E̼NgMٽÎCdF5tE^jfF$ʳ+ɩ%Pǯ|Yzz+\*\Fɧ9hԹ4RJLD4{G\#TFJy㴷!k^aC`(O+AJj#WփW72*`-<M|vѤ-PG\';jP) brily@VscQXXr*s: T9~-]e-yԖ]0>dp?VE4/~`jْb=]PǯDH\XvEv!tiѱm٭A *#Wx\bMLȞGUf|r*AI~{)ja?IiPAüuo`kpb xN#ņh~Hic`Rh(v4Mfge:5 QX[--eI=<ZVÄʲ) )W`kKqV,>Y<M|0 WZtP'zZv!47hHn=tjP) <(n\dϣ|CȢ$PC-{f|xr!;t%Y۹ 0<M|"nQmeWh:VE4u@"nG\WgC҈tډE+֭QLu99ےd*X=HiP\A:mlƂOk+֓LXc:iD_>(i%;7OPǣIcrChG\;tjP)y1XsyTbSbۊu'FdO RXPJ۹!#>}~چ3xN#Dأ'$/iٽ_8vw2R!bx޹7[l0Ė#v1,ɞ/4(.~TFӃgUS>0_(Usė =z]0,ǕR{9Ch}'%FGMs]MMmn=\jP)kny1.x=2kM\CHv OZ') ԅRe|# >L9y@ iD_>i}ˢP2|Qva37hH=.p!@e4cjjrF$x* b +֭﹔5K ) ԭ}VCƳd$nd5?6x㴍&j1K56:d.5FֱcN.'{ e ϋBgSߦ|Y!@q*\_R~kT됑Rf@DtΫ&֭Hnuqό萬[Z:e:.R001ؖ!I%؉L`0Zj%Yj8NZd['޳gyjyЍ{[S(פ7kp+ݷYj)Py(.ԪUKK#jK2Hn4hNvgk'V-"׫D*sz>_j'vS_yMk m虔"vkN{7e5\}҈L&L&UiS3䏟Ψm@˩D*s)e9 zyrӺsz3_J՘~hHÔڀ *~uD=Yv{7ݡe5\{HmtFJ#nUy%ڵJO+g9oߟJO)i~^qvl>ji{pX@Kqo2W]v¬\nm͓А/j7ȝIo? -:rDo3R1qi0V:M(m=ˬ}Wf*sU9޿*;>ɵ{]57[IbMZl+&$r;'\̩]tF9r$ABPHi[o<*@'.}gH#wSjE%t*e[^^>1T~w=܅m.)]e{7ʮ]e5\sB3RqS*ɤqm@>wՖeֻUAuAJԷT;-?L߽WYRhN>#M&3g.Rz*B{"q 5ZV5+4A :#7*J&56%ke}છ- ) bPKZA_:'eKS8̓54wC "3څ(JnݻCj~&"@g4f|uwKw/jvqEʂd%RW]H#R4ѠroN೾dm<;=J") B|&g/&#JRڅZ?t8z4aBPHi7ߨ<kưR@mfZOW) tP7W}U"FNi@'p6тd` 8) mAծdY}Cӡe5\}҈7Tyם;˹`6,Y[HiМA}Il+TG=,=:Ù@8T 'ZHiw.Y Np9#ݷYj)qCe8_o!ݽG*K=:Y.HiМIA-\u_<"iyң0I) ,'@t}v{%Iih~P\s 7ce5\KmtFJ#&\7\Ne8_J 䛩ʓFxm>E) 3/r7VzWT =73rpDQn;֭R{{(vs0) , B2LG[n$R?!ߕ. YMZVÕLt!@g4`hHMPHۃ.[mY~6#=YĐ9ڝ3k{^c_[oځ6,EJCsjnבR}$ݺAj) MMɤp֯}_z,Y<#=Y8Rv+ϭMfC0DR|۞b_R5gHi诣QnT)Ԥ{вTj~ BPHio|?.=@<,Yݷ<"$kӭx!ԫO;]<H bVէ[JAJC$v'ҽGdhY Wgt!@g4V((qgh\ezS,Hi\:+ZX g*V) ,v/{}c顟.-ݻHw}7p#ݷAj) <jhnWmsW}dYzh#@s j/zHep)73H z'>Zꖷ&gwX nGJvG'GޡCe5\| ݷAj) uv<+ >]oGj;s+ʼw=҃E) sP{Ԩɦ*{HY&=7(sJ#8t01U~}p:ն}u]"=ٯ&3xs!a Lӡ44-  LZL  !%n06ޕdI+V3a(6Z~b>;A B]s׆;7Pdy@KFRDK9ckZ>wPe4/U-}zWXU=%xU7Jj/ggʛϥQOkkT"=7ND*HE.] H$wÔ~BK/6'RTI>vi :i"FPuw,YNptyuvIyKSz(=yY^b|uu =Vq\;HLoQ?J<4Q4‰7;JVpmϋO14b\}SW< Ӓ5]+}hiύ*߫λ8|17]ȳXDKQϔ7gtP'|N3T$Hl*~;gUEhi )߳mMSĄу/0lv풞a%x+7]ݧEahQ?ѓͱF8pN*_iזeK"5f"Z>xWND4;'}hi̞=߫JdnZȳLAFKQ E{,$'2F8p Hܽ~nZ;/^iiHɪ,*%5M%7J=((j2ZAbv4ͦ.=n\G͵g 8Z<^>lR'y9W F8hLrMo8 ݝemNGoe 3K>- ~1-[lMk8ѨNK=(j2ZA20O?Ib;|g >Z<^(5,Kznhio>%ϔ #.uN}.H?/iEU.]5M%==GFݫf2_gpҁȼ74-=P(quCwlқO$'sCK#x,EN.ֺ`~{e:SH?&;g䔿'/%ðQ[ή]GF^ͦ.^"=>-*_CW Zd츜*s@K#xqpsQTI8V,#YժU5͛5x-TWIcһ*yy''=PqfIb=+H m4‰7@C=<6lN~Sq- ?iF틎KAmMk86I;(j2ZH{>nsvZ$=PqRfed3ɉ%=7'|1S}`nLvno_iiU4Ծт}mMk8F`ڥղmYҧwࣼڽcnʕj7i~.լeDbS{IOjPNY6i\</Yiiԑg?)}v_J$lMk8F0Xbʾ|mҧwx\:SݧEiBe\_ߗ\겸iKzn΢NoYȺ^T"HFKç,+/җnrִf/ n,{-}t'K*_:^YKz(3ʎKRwEfs"dYzhNN5&Yg}qchUZ_CIݗ-5H(j2Z}ʦWK"!}t{VPn.YUQB+V̶v-uYd>~$=4棥NPۮ.qee٩%<SߒHIݗ::lMk8?$}nhi@.gG*^i;#vj׍Wz!eU' =Z/[7ivy=Fl>ղzuRmpKGCңyqJ +EAiZ(;%J\!!!T f !`H1I P $R {٬wvPAώ3輰_X>gs"]W mꦫ!=7 MܯP\җ|wH?VefQSIX6;ҠtZ*+;gV5jtx)yرH>"^[_x~]DzTƤk/9ï F+m֬Yc.xыc^XEb.ϏFJ?M~C-gTVaX UQqYwrYCiQR3,l"GMH `XHix/&3+&}ߔz"]aoDL tXUUa]ҭ댠'#U\ݹ#ݺ}ɌOZ'ңq48Aݫkuh5wo/fJ Hix/p=\.m?v?G"ܟz#kQh2k|uFP]wv7ot߶S>(֪xRvؽїᗯٿD,JHix/p#|-[zOM^p )=N.\ #zuuFP]CvetISŃ"*=#Ť(ߪlo쉅3ңxR\BnjoDs ) 0֬=A`x"&=NA0T*n][58) -Z=*ݷ}:'OHip8ځ sewIv#Hix/p%VwwK&S];vO9d0M0TUֵEPZ0].ݺMrP>%r۸%48AX_F}IjU;T<4?Hix/ptv"l4) ר+G=1u`ey}k'#gUkpPul&|D/fVzRv`2`}I|=iv-@) o.@`.$gRq`!s3jJOe,Ȼl[[58) ެ^}$LnQ r3@0FJ4KTޠkrD*+ !M|nE͑]>ꉅ3ҳz ) 73 I@W[wUUYtz"Hi諯ם:%ݺ̬S=rx6Hip8ZG|HDm*6JCHix/p/ Ln jj:')VS4\;ELrh6l Cn]O58) }+.utv>|8lI"j}݊| U=HHix/]ۙȭxX"һHiL0ܢJOHOC,P[A NFJC_slt}d޾`t.RPzZU`- p9Ref'#v\HJOu4gkߌ8]"aUUYw\)ݺjp2R1Ce>]o;YP;:'GHip8MYHm*j\Hp'R4u#78r9pR BM=u'ٖa]˗K'fPr/  sC}䁔#ݤs?90]`dB Hg3}A3!):M- ؆ iR@hxʸ1ʒVݪCRr~?s^wlve-yi=Z!U H)l6*- gcj@Jc(Z'^#.O癜N5v4^; Ūպ ) #L+}i˔+ZL"/ Rۦw^;ڧ?J~#^^>NH癘N5^yE_{ᄉx+x&t݇ ) #3?5 VZӭmgڟ4XdϻHi ^#k7;'0Z8N{ۉҰTl.itOj޷-3aϜ;zFJ!6w;$+閷/ڟ)l` ykH|Hi r#M>VWy^~9o;LFJRϞI0Թ/{#=#pp+77?sL^﮶`+R0s1eỐb~˙qkmqz5-DPHiX I޻ovNFh) #ovN\ovT`raQސ&n>`n`z;;>)wmr2q]-DPHiXXtǵ`k R GPgGc3>~ree,wZ "XF6qTý o#19u\h\ǎ%|"d4,ս.7;wJˁu>$Hi0A5kPI+Y*?q'KչۍF;$Hid70Vi9# Z;|kv6qgfF{o `2RzMI3PnD[ w^k"4ΦVO)9ʺY7' EJ#89y>6wRC 8gPZZJ9zT{o `2RtǏDɗ> 5ׇ) #3ny{bA^Rr=&n>`jgD k74dhoyB5VW%E;AԷ('}L}`8]0>w1> [Z'_'LAJ#Q.>h nh4c=q=x>u oiMPX=hw %I4b :j42;N{⬻>vJ9p@{o`2R6%-nbB{oC`˔[hr4ɒ4gn~zn3ؤ"[Hid70A'{{ohh "8_7юD,APHiX筷Z^]dOVUBݑR GP tۆAJ#ˏZBl Țs^?axz]fKG8nioo LFJ:GH۾}{xA''cڻ#4FV zN{Q[/F6qGtر?XXRY'sJ5>A.]JG8 d4sԓS) ogA@PHiNgJm[ɾѤZһ4h܊`eZl=_M )pTp#IJs7Hi/kG=TtFJ#X\W=}*z eψ_&woHiAFX^+~xQM!M7NI;)pyگkȊSBF8sR9!a+}^LSeZ[UGPHim+6Ǒ^v7R^zwhSr B؜MyH][ȥeoF89?Y݊AhR5lS9$Md z8Ѩ#@g4eiI!jm5Jߐ9-V_eڇjͰɳl&YlHi/h❞U>.}FRʾi5^Wg*s#@g4edDutH*m%[zqhlrQm^>ԗ+nE!Hi/hS3b՝vEjS嵢rZJ_;wPo}Ɉ$,J߄"r^WallxmmiS%φp!N|qߚT7Hijڭ'69}3MŤWA :# b[;yRzڭx$;DJjbc(϶Hj-gY;WxHi/hئb^& 7zsQN]<{晦ʜ;'j)Wlk##ҫnl!["[^"@s5Q큷O;ۣ5Hil<,GJ#x@# Fķ {U 2HiΕ[HTc b?ع3͚Szo3RrJUښ;v{]HiA o>52jcDo^t^f_[)p_جgƆ"33zthR]g*(j)Qi{+I* VCJjPShR|ޝLH?!F8/},9Y  u7‰iGI1tFJ#@z{Uzѣ{nTUi]>#@s5x_l쿖4jo?WӮC'^>ࣹئDJy4L=w4Y=TϥA :# *%O‹ZK^zwl*벭6m>z[ȥeO!N|/}>Z UݿnH!/LSqA :# *%Oz}6Uһg4hF@=ZRsʎ9hvT_?Hi/bnE&h^9rө'Z[lh>3Mimb1DPHiȉ*%W:h)![zqf\mH|180yYt+"N|~c y?{K$bo.HiDm}GȋżV4U!DPHiHOJCUZlFzwWZ֙xV?$CJ#x@buR^&h~rΌ;%#x8뇠^zV`݃Z/H9[I)HJ]Tq:3[)pXxQlOkۼM ) $I =y♦LOKotFJ#@ΞUg{dJl";GJjl=E2;NKu#bd)IN#N|@lKovHi5n5dדkiWyo噦HtFJ#@.]Rg/J]IoZҋ!HiAΕ'6Z UiX?/e 4‰[XBz݊M) dI_ ot3M^]?5茔F=RN}q<̞$JM+TF-dSǗE4*P[5Ѣ{p{Ngl1xgc޿׾Vz*Y ~xTzq) #;s?{|.؎j*TVi G?M8'\(fj) 9zT-{ƣ ~ R4GPϒ5hU]b5@odptdѶE释#O|*˙sHi#T9˟ˋD\PV5CPHixHWJ7+[L-G]9xi)}AK0Hk8wY'j?q _j%B4\"w{kUO0ڼ~nvXM: }%8ꅔO9GٽQfl7ۦbG.;g3sТ-FJß@% !o uyA9x3%Y0TfdDzu3RӣRʿ{2^BJj`Rv^IYLz#±G5$hQ)R^\QjWrgg,(IfYn0F"Nj) V)fI]?H*TɘR4GP{tF23B-Bd\gS~X) 뛺g׶\>7ҿ^_ޞ=aT=kҫkGUYS8r9?I/z!@s5&[(-?[M*_7n(bgD$t?4sТ-}&x ) )ei‘>.0TfzZzum3Rrb13M+vb>ۏ]IH/z!@s5Aϒ_+t`m'k_&G O|,?[k{[!z* |5 ^]5茔Ê,^bR(= )Q/4hj23!Sk8H8;R^5JNL$Rx-.n$NK@R6aT=mmҫkXL;&zņm>t׍}s#@s5Ps]&o<k8["G.$:f⿛M5] }?q󁟚=g~>*1<|okUOc8ҫ끠]TY[^LK/z!@s5P?Bi^lbYK$?"b_o>+H?͉?qsLm_#JXv1Ч-cQHp CeVVWA :#-;]Ǒ^2|R#R4GPoFz4lkyk5lh\bNI"O|o҆Zǖl3HiB~H\/=K@L>aT=33ҫ끠pXguUzPf"WuAJj sJ gMi3ODO'oW^yEHi7xGڽТ-}&x) Tճu@=[Ƣ?w [5茔<s阉%[zw) #)N]!z!_?oq|gz{ y$zj|\+?DJßKH;}?+} l4PFrkUϾ}HtFJsTٹs{WkI~|.);ꂔԀ8䆿Io0Պ@_dub>9x;=}Η%14_J ;lK) T.)6-~ -/2 @g4<[uvJ] fԺzL\zw) #} vwp qCzu 3R3:]Ǒ^B)T;ĥwG]9cpS%G,ѱ}lK I[vQ R͇=C5{2X>6RJ$6+x{kUɓ{kwUZYy?^2 -g!%8ꂔԀ'XvܧR [ e'ok=L6]w!\"Ba(L 8R)Ln )P%&u.^YVt7Tz~?ss3saGFQs )`#Ȇ[!/nvEx) T*hUۣ d\hZ.ݷe4|0TR J^*z%8j#߱آ5b*lHs82(HbU!L|La程]-fτDJ դzKs4M=n]A ^FJÏoWa3UXѣ YQ4xA Ʀ3tw:u;Pҟ1jME[FvSw ) qxB}uttp4^]}u'.}&4,@B`'SC["hJ=*ݺ4ۧuvJ] +\n5AJ@\d2Tzq k(4d񦦦-gjnOY']s^sgB#c?j>VG*N龥e4Ge++rte8s'fZq) GP9>:y3K:Prj$Z]c;-w4d n%zl;\> &W(Օ=Id7Qo۶9VqI-/#G*[Y[/Cx.II7 jERg2|KT;n>hy(JhAJCV<ojj"*KVv̝lIVXh|'/]&?ê ꭣ4ZYn]A ^FJÏΞU>D2^Fa9?8n5AJ@p [/92.ݺ(]8!z), Q4xA K;]aB"ztr%cK@47,r{fNFX R7+jFׯ'˗MS{#HiQ.:$zV2fvŐn5AJ k|@*I|46iHi7-}';y(}2) TiGgRU2hb!Hi*+ٮ]}e@WXstp) GPB>dԭ1ceky] )`棁}r}<KFAdRrNz4;R.I./#SϟdmmmK^cft%/8GJiB㳩3gR{!]ao*} OBJ#hHyxNk҇C@>cÙtuui*h"le? wN >R<n>Ft!{FJƨf#JٵԤ4Ɠ\F<>\}R?n.]r4M>@u!5x) UYΟ ǒ kyw̔n#j+WK#sw3'͖ qE.oz4f-fg\4Rp˱))$~\ݔn~qGKץ@PpXe;|X2I*1Cq#XN VtrCLj*7j>)`1\Z%ч҇CҀ[6<\3ۯGT)%e4y}l^UsDn#j+WK#sw3-ScԌ.d_lBJ#h_LA)}8) +f*W'O;XoJw_w5x) UY{뫴_1Hi8;f*2DBcKp?ҀFʣa߄)~8mmԱcA ^FJÿ޾Uǖ[/Cs E2R<#V8ḏCөe@![=KPΑIi7^=n>8ދ,}8_HiEyR?,=OP?8ReIw__5x) _koW.ÎQCa'cAq#]Pu~VDgn8Uy7*OhYaBÒ ,R 2 JJ kl'^?a0& I":~M!d3?4i7"ϼtv4MA AFJE"*ءC}Ŕ@>8Fy  j$U.Ǯf36Vk{.%ODJ=qt*ËgoS@) 061lHl MSEP@hjv c}TJa ?v5-8\FJ@ZJ֊-|$_6?+ԗc?=|R퉛2<_X+)}8)Hiu=2ʏb,ݾMS;wA AFJE"*خ]}|hRq#b^6 mXgIi'n>ȩs=OGJ˗l{:-ݾ>taGTq}DP@hj*Ν}4?aҭU4A %֟?OnCQ]asB}gK4 e;}"7 ?"R)dE}R=ʖ-Tzx:Ea2< [$v~")ݾi'v4M A AFJb*c֭eI<4~VNw# zjFm~s3KxXn~`Ԗ!}t̗l pW?wČ}ԭ->ݽ/QOBwM-Hx# j=;/gB0jWa=fҧֆ-Ԏrۢtٽ4zmֽGP@hv.`K]bVſ\.Iwp5e;}W7V^U c%/gG=bM-TlT~Y6K>s4M"ֽGP@hv*3ث:%zNF})R5b5E6ܯ4^]l_hȷムH̸U!UJM&_cf-ccƿVEMwodOr MSGA AFJ tuUGq=ؖn.  jpj]0wO$U7 Z4Rч/KzߨHA/٧n6 xxGeKh[$=S5w#tu9Rҭ{ #^{Me>/(N tp) GPޙA]mZkM}]>1Аؼsi؂iU#XjW+QooΑW? 4-ڃTfۇI$p4Mnc5)g }ݢ~FVw# Im͛grygKi@?47WsUR;3!\t*ˆV sUL^>ٳ4J[A AFJtw `ᰓJ^bЯ+ ]S-=b ROfؕLh Quy(}D!K+en83].KO3[W2~\nd -AjdE!pi*ut^" HiW[OxRae !8\@J@GYrz}tkski,}8!ŊeHwPP4=f3WsU^iE^Ā"k7> M[s=*ݺj2R-OTZutH^7jCМ);o9*/}q'($/Kb -vj]Z,uroYBe@pU@2=sdfz]R!;O97 g WOkөK X䌳!:0n;)Ye0]#iBIz@ GxmԘL*ҋmè6o;J5茔F A"2utTFy*K5!@s5(kswgSsWz@ ÖP:q~Γ'`c N)m vDo^A=?Je2ҭG҈;gG[ '>),&4hqrޑS}+=ߗvt@m~]fU@kKSWܻvYznЙ̓u?-{KwҫW$POG,>Sz C[ A :#cc3XX/jjQy-VWu4hM8Ek>Wm+]nAqο32~lk*қ# շ>=!p<L yOz WJk͕W\.0 :qB3RP((`aJwB_>r͕^ԑ9YwcO7KҝW(Owx}½^9%GكCֆlC+]#th2#~=lF&wdj)hoW~;w_1[yìtPGJjАSO_q82䌓[H7Dsbὅ^E=e/!k簽g;jQen. U[ KN>?,":ԯo "F,wdj)ؘ  1,H? aK}#@s5쵿*q[Ħ;9\|鎀z|_>ܱ޽TِLŠ0wX\ron-"/u$1_^mFGeGzo:+QNGnt40 *[A :#'ǎ)aa Jw}cnt/=T9tFJc}z<⛟=fC2j55.n3\tr&7S|Ǡy ٖtW.5v?j5 @ĶAKH݊tњ Cnߖn=5茔Fܼ8Ԥ0rF <ۇ"R4GPHiO+_viߘݐLžsfaŅEfy -,Vz@/wŊ>|.7^[D!~6o :wNh3R1kci誫6O.HE4hXV=J0t}jHUmHmOvXVqܗwwB?IۅKM]曟ŊnbO)/(_ \GQut @g4bfhHe [ǥDOrҍC) #@g4֧?Nc6$Srfˠ߷&cV}hn=yws^#}չb%~=kψ<ߺU6ubrc|nܒn?ZaT]K tFJ#fJ PĖkhHz tb^atʔnHiA :#>)Bm Um={*}3bMG/ʼr_ʆon{yBlЙ́q{v븽o9lqx"Nя? '-uv?Wn?BӁaT]MMItFJ#~PĖ+װ w;HiA :#>{~pks5b5$SjL&9/1g]Km%~&0 s#@PHiϽ{rIae yOmu{ R4GPHiO:s5w՘L5PTfJ 6'+6.+J45Qum&zj)XjmUĖ+i51W?J74hXj~sKG2MdYIm~~Xb>d(qo}n?B[Qu%iJ^k5茔F,ϫLb?dRz +:`);-ơ3RS'?T~.<`m4)Z^1|JśSW;?oW?.M"B 4J TT B-$!$\ĥ lJrYPxfۉYeҪ!dDJGy =l5FTMM .cii}wkuvurdW(@q5V_/\bE4tpOw݀`?;t-#r?'{O7 |FQhiDؑ#r x Wl${vԍQ2ZzZ[</I @\7(/DWo"9xPa@e4"PW 3rjFl:Ȟu@q5d|]RT̴H7MvW"Pt#Oᅿ/>AFG}ɷ=l5F={77 neA}Zo;_=>CK(jP- =p|%da9;fZ$JYۗ:q+.T+ Thiȃ2eه!~=z(jP-K&Kj}NV- @e4-V{f:bEViֱ^T{PL72>Am ˞;l56mʖ38({Z:&\{T*{zԃQ2ZzRUF﹒ّpR1"!=\,rKZx7يC732"{Q2Z:ʖ!{ZfJ‹W%4(*oϋ?~yΎQ!q|zioQ]Ⱦ)@"l#='٩Saԝ5E *BAd+[Nso۲PˆA[lޕtdώ:8TFKCO{kΤm:lwZ1g㐽׊S=᜺| /}Hʕ@J]oA!tousDWbeO_/r‹P=>>- @e4ɛ_X>n?/L:kIJyWxD+X-yL_}0<FټYa@e44aY~snd.\}?񊕸}'{||,ZGQhiI*tan<`S@jÙT̴{Җt,M+U59Hd"4G!7od*TFKCセYYײcۺ?ﳢuG- @e4͖/^ wx::fKLKì6 ǜ\Hf+?@k4c7FO 0DL=T5V׳٣23W޺dBK(jP- =qUziqȯ^{|i7/;[F v̴Vu>3 =W3J^y\hi@5vo |I[CEQhihSZlEnk.S=>>Q2Zz7W^'>-7ޙt:'=һn{iOƜa{m*fZ+sQ=鶍;mIwgݑqMgKu]4Lte 4a$=zx(jP- |zWGA^xޙpd@q5++VKw^RzTzT|u970v&毹c71'Zʋ - (ʕVOa)"Ԕo"=zx(jP- ܼ)55$X?_Sn"ZGQhi艛*5]3- ,>A8loj =<5n z,ș3s޺O@K(jP- =q@e4BܴbB-{д!TJ!@e44%7^9+uU{8TFKCO|P- -3-M]?;v!n٣zdvVۺ${|- @e4ҀrT̴rVV C$MMɞ> 57٣lkDV [Fl}hiPE *'n>l̴ʕo'Ӈ޽˗-;ȣN4(7TFKq33-ݺ8GsɃP jڀTJAYƉUa51۵R,V Q,-wO;!L#Q{pτ3 \p]nh}z$ͦQ`-bc68=ZꏖK;bk8,QL|{ )E;s9=}f5XFKڕ+ӯe՝TS{|(jF12ZoV3bYv״_0I~Xj/ E (wʅ6=Kn[_owf Z2ZhiKQHs㏽s iO E (Zo^%NUWc 4GQe4@.r&bY6$-2k6}z$I?^ ,Qd/0baF;Yj> sۧ=}5XFKΝgpA{6WwojoUhi0hi/,[hyDlioI2ZXa(О' ccڛ<%GWw֖hi0hi/,ӿQ,ΝD{M띓5(jY{&Ϝ,Ws5 +Z2Zhi GꏖKQHc:3$ڣKQ`- s'Ԟ^hi {<{9&T'Ww377S4GQe4ԕ呑O_|0ȗx.)E eC АwN G2ZHű<{!##ڛ#fS4GQe4t宮 *'@ X?|-7jr;'ɾ}ڣP`- k#y6o^Mj۝hhi0hi:~m?` :[ X37g$~&\whi๋}JI?׵hʒ4GQe4t宮 *'@ eq㹅Y}wN+WGE @}ON[ɱc;{*OO5g4GQe4ԕ呑O_|0ȩmkArrC{.]I28=z(j^0={{Z-[|hTSvrokώ'hi0hi/,H(U&d;qүffE n==Sm%}@Ŗ8Wブ(jF12Zȯ?Nԃ(eD]{Ir2ZXTKc?魳5=v젥:,QL|\.A$LNz$9xP{Q`- ;Z_o4o3~)>[M}qhi0hi/,\;raŲC3I8k!,ϒSm%.iO&iғO - Q`-be4ks -wD 'IK{lu>ҞC5XFK{k-͎>Ioɽ|M{8,QL|̍fŲy39|;qүhinߖ\k+ԞK%}FKq5XFKx`- Bc  OTϵ7;|;qԞC5XFKk`K;ڣk.;7$9s(jF12Zx l9WXC88swhiվJrd|\{6,ϋO|P{⢥8,QL|^'A̒B{:ΎswhifK^֛*{EKq5 uu`ϜZܤQ%Q$+28"$J9NH-֒ :htz1r 2B􁙃s<鼮t4Qi/,@$[i'† .\JŧyjJǺxQrbS|r^?PT#`F2* B#7SHy$z,VV74x{ONrrv_"* jJ#L|`Qc't>5dffWσPeTbhHxvҽ3wZ/5XF&|J83uzzsgbB{<5XF,$7]oO|^?DT#`F2* F{wwʼn`Jqh@Y\;B Qi fӗ˒;׵LťNPi0PeTa˨4P$7lGq"O[K\jJ ϶||`˨4ėQi`FQl]{wdWόPeThm͗mdħ9s.;_{!O5XF&|J(NdS]^?F;'^=3B Qi 9֝E9ɽ~X4G2*0eT(˵(N/ڻK{rϹs{gF2* 22"ܺSjU{C?ݐܕzIG{Pi0PeTa˨4PXFi(BC{siWφPeTklLxuWYy&;s/5XF&|J旛Q&Jg};'ճ!`{?G7h T#`F2* RDí=_w6,@^oUgxi%MJq,_>XFj3=s?;B Qi@`bBrr٫ڻ{%ѽ}0[o5XF&|JEu}',\={gC2* ,.J#S.凜)>SGo(:* jJ#L|` (N30W=7sקjJ;;RoG\?d+=5%JM`˨4ėQi8ͣ]sx;'U3 `dzKx^S~ȕ'=Q~CQi0PeTa˨4P`TŒyj]{m_xrjJ2%s[ƿܔ?[S~@Qi0PeTa˨4PlֈD6]^?\y]3 `ľ֗˒t@]Nl]|u`˨4ėQi{'=d6<=ow,I|/%WܑՔ-3{`˨4ėQi^\D6o=^?!\>B Qi}"9h?hɯ6/,* jJ#L|` ۭ(NdSj a\;B QiU#W|}6;jr]y`˨4ėQiڻ{Q쵆 2a3 `{|o;%7x?I]|u7t/&* jJ#L|`B04ʼnxZO;/8;xrjJKeE?~zyK|r/nk_LT#`F2* _RDҙ~sg`@{ 5XFMEw0+hw'?hFV91hF0 Ԣ$͑ʿV3/THi߫@@3* !i?;6s{څQ= 5hF&|ЌJaw(I30S?ny)m{jЌJɓi|+dK׻5hF&|ЌJajmDI*ڶGt5F2.^}74A++no7_T#F@3* kQgt5F87o54Ҁn8x;%/UdvVwh~QiPPfTaͨ4(Isf z'۾5hF7<Ţۙs眮kM5hF&|ЌJGF([c?~Z-Soxͨ4‚x;Syu} =o[44(G@3*0fTٹ[(Iu/ix#!xͨ4‚-33Nw>3#?l854(G@3*0fTYMD8왍ckp:V}%B Qi{7^w>׶vD5k;64(G@3*0fTg߶$ͯt5F>D@3* W.8yzu=vz|ͨ4ėQi}ۊT6{M{5F8ͨ4caPtM]HgN* jЌJ#L|1p-JRL7}SjXժPfTejJ~͹dU|o)\#T#F@3* +FI*BR~em[cS.~O5hF>Xx捍^NmmyA@9B Qi/4F|%lfjEkp{fjЍJuN>əwUۅ"f7 * jЌJ#L|fm/]8g~5F%7^>\\trM|lsJr4_>hFtemW$ /m[c$38{{B Qi70zմvgfV\o T#F@3* `ZS{qlyju4Ҁ_=zTx5Mj<_oͨ4ėQi;f֢$/Yɔ˞7'y׮yTU|r_sƇ5hF&|ЌJj٭<?w!͹ jIkD%)1V4ɊVKjvvcnIS#{a b, ZC8s3W_!ϝ<ā4ʝ;I{ss4cy%񽝉fgʉiJr 5hJ9@3Vz]sAsATj_pYjЌySrejCcXC4c@94cќx+ `x>Dq_/ki8ahK%jЌV6WOg3d'v鲇ҩJr 5hJ9@3V&n>x'5FqjЌ4y\K}ƩJr 5hJ9@3V&L;H}-TINYXi@iWOڟv]wiJr 5hJ9@3V/Qt[c>;3+ (#9ֲo--/.gkCdi4c@94cќx+ ER& x-T}1 'I3C Ҁ{[9-9^kC hN|Ќ_A$ޝ[H233C Ҁ| G6Iܵ͗A}򫲻)Jr 5hJ9@3V)Q,_>/-6 1 ojЌGə>N _"]SjЌFsf4?SDq Mk*˾?b ֘' 3+ Ko}FGnX-:-Z4(Pf4/4c›sA ` ֘s 5hJ|۔ ^(kf4(Pf4/4cB:0.40Ţ 5hJT*gt9sٱ}yw-SjЌFsf4WZX#ի~ 3+ h+<' ;*|'K;>*-9jZ4(Pf4/4c A6R] mm֘~2+ h6 %ަ. [cEӌjЌFsf4jŲ\W]#G1 'ӖXi@%ދ C;=m]f4(Pf4rf|P656D lj=ji8ahK%mjЌtY='ߦ9 ]߾ybjC +˵񪯯؀6#W X|ߠ#ؘ 5hJj OM)vԂnP~iJr 5hJï=pئkCA ⹅e_cǬ1?-C Ҁfn0~s_љ{ڮWL-Vc@3V~r=^pؾ e9u>#IW 5hJ].hJhHA$Ll/ahyUjЌbzZ~rJ>[_GZ + 1+XiQ,Ήʾ1}]O4cX=ߗ_+s$M Vc@3V͉])Q,+`Uw5F{m'C @ttHng5|ߚZLVUMVc@3V͉fIf0"qf|=y#;8Pf4.CCw oTuU=VoߏT?sxqf#- E. 6!R* XڒjQD=;˲˲abHzًwfy|s7<'4L]>W֚5<N"Si&JyW>Tuv?ae%u(gS"Si//g~W6zm>_z]Si 2f2y47;e=SeMoOس'Et/)44=s:螿}?șm3;N"Si&Jnݝ*DOt*ٹsK 5@d* cg˖oFnnu3F LjTD uSVgVsRQ 4|0  2kWFs_tuRi 2f2y40j~hD^k+NHE?6'43#J'4L[d^\n#/ȟ{GPD0v}7{䑴>9ș}f IjTDB{xvqeOuk*9vlT 5@d* cgy9;pUWҾvntxT 8LL^>@d* ^K:e=/_h#ME9ʕ,&4-[O~U}}{3{[sJ'4L~~ujmHȟ;GPD0N?zmrf/ܾƑ4@pB J3|T/v*{vi~>@ +LauFg]7N"Si&JChSVy3UVmAzTsWjT޽'ѣMo37MJ'4L!nnu:wTUME97JB JØtɷ~OjL[躑4@pB J3|TU\QSQG yLa|Jwxn;9}c[MJ'4LZ^]ՑNYͶ7m/{.El>e 2񵴔֭<ӥKn[-S7{Zơ 5@d*d"Si`}}SVw6nLE90jT'֭iimO~}cJ 5@d*d"Si`w*o~}W)}a*yan"4<75k * PDL&/ 2Fϫʞg~/(rfӦTC[C"SiwOthk5@d* tFݩ3j 5@d*d"Si`Dݨ;3U̜?"mڔ"gvB Jø[Xȼ7۶5{o'zJ'4Lnt*{vk ҡC(2ʕ 4<?MmWlٵv @jTDݺ;UVhR"gvB Jয়tw}4us zk>|_5jT 8LL^>@d* 3ʞW'LE9CX@"Six0:ݟ^hp/n rc8#uL4@pB J3|Tj*g;e7şf뵖?…TsjT_}VSMfpoq#)* PDL&/ 2Fϟ,u*{{/H="gyf.4<0ӶmWvӕ+ m 7K/4hT 8LL^>@d* 4`ñ~桙ϫk(rfӦ!PD |9MOg~gV-{|c7CjTD@TYunXU^3Ϙ=Z"BMA0 Əh(2ҋVujc0@1Uyϓu{^o~Y7S7,ga)˦(Ra.41Ǐ'^}ٖV=|n>^niѬT 8L&/ 2ڱLHGPDҰlܘx}=G75;hoLT 8L&/ 2194U7s?Eʬ_ C}Z"SiX{.^l2[ooK3K!ngOζk&* PDtJy뽪b2eKS)oPjT֤;ټUؗZ]u* PDtJ~{W̦3{MQ$xw 25Lk={H 5@d* k`Ь[rm災T 8L&/ 2ڷ{U=/M/e(R>*4m\}e\OI>G:ׁT 8L&/ 2ڷt񷦳l>?ߔeS۳gB J61xm9i{V4@pB JM^>@d* dqW'd|(gl9{(4m _o W_Y6ssmo{ׇ9gnm{է 5@d*M7y4ˑO{U<3=9ٌ6E>+?PDҰmْx=3 q`?{rWJ'4D@F?:<իyY>u)˦(' 25o{oϞ :1|]Ts K&N"SiL.,T^UNR_}),Sӷ 25{'3l[OƧ3,T 8L&/ 2n:y6=eY),/ 25oq-hlg9gnͰQi 2|Tn^U' ڇ7E1y 5@d* ]}{w|uu}y^* PDtJ}~uq{7ŰS=>$4t_${/ggN&_ێYzu4@pB JM^>@d* D^Uͺ7~5@d* #)ކ `a#'_{^* PDtJL-T^U߯,fYѦ({L#mK<Ν˰# KN"SiL n:m~ǹ\k<ٔeSPD{${;wY&_?CSi 2|T㇇zU0?wnOhʲ)ټ/4tx7;aɹ+w3, T 8L&/ 2HU淟ʸ3hS)36 B JCG%{+ Ny~T 8L&/ 2Bytf@=XιDcMQ̅ B JCwlߞx썍5yv~ioOASi 2|T;NޝͻDSMQm+4tǧ\z_O<iٖ~pT 8L&/ 2y^U'MʝoEB JClܘxesJigl@4@pB JM^>@d* Ds NG.3MQ̮]B JC@3ZBqŲ{e*>JnB#4}7)jЌC±7:\tٴ~TCܞ@94O|ЌrŲSog|hi {yW;vH:oZ- Q-|f4~{DmJ$6 1»~R- Pa7oB.,x@3ZZ*Qfk_~hi Ʋgs&>vwhiPhi/4h6rD^/$TlZc糳}hi *~ݻ.pi=$[? S4(GQf44+( X|;/V}d0Q- og{;v8 xI^0dm(jPlj*[$qÖxWO}^wwhiPhi/4R-bJ~5&} bNy6 Sf=S7OZ@3ZhirŲ{X\_zI^Yc{ݦ@-4swg{N!շJ-Y{(jЌF>@3Z@_f;t51n 5ĜrTaim4p٨Ӭ@Kr5hFK#x- _CD솢RK8aht/.E :1\uݹ4/UĻf͌(jЌF>@3Z@H(Q,wU}%3(jЉ9 `ŋN>HQbihiPhi/4wA|nΆ5F~/w-c/IlQEImT E X,NNNqkxxjOQ,ɛ-1۴)xmgqQ>ffF--ţzof͆(jЌ_bqpppq?` r=4~r"iw}_\5Fx/ E 0up:+5٨\u hiPhi5===Ȉ@9|m9bݸk|po~ۿ_xu[E~Κ- Q- W}t< Xp?oz#Ѳ ;wNj5iGNz(Y*EKr5hFKûb899yĭa^>>Џ_[XvFo)kj507;:E}j:- Q-|f4~T}@tG7|0ofo|iOصK8&&\GM JGq}:- Q-|f4>b5b L]wobsxziO(3oiÏ٨>eCGKr5hFK#x- O-~ Xv7|d knsӶm.\GdL'ծϏ(jЌF>@3Z@zd9bS;HP0@δ40* Ey7~?m|F3;_zuk K{|~l})7BKdNQLKL^>@δ40ʪ{0ThCQDދ/&t4}4~ɓE//Fhi)jiișF}*?ڝ_XN~׮PwpfN?φZzN|#1z`5K9ע2ri&/ gZ*\NNHi`=zjc׫)6nNO\YSčS943- 屲j qH~>PnwIi`=na5E}͸-`맥2ri&/ gZ%ޚmU/fR߻7P鄫WSh(sXÇ{oQGX[uD- 9E 3-M3y9(_+&f E1ޝ*>@Cm6kÕ+u|vr.rKlKEKdNQLKL^>@δ40b?j R?y2ŰwZMdNwKo:r^.nl릥2ri&/ gZ=Nε*^z?b{Մǜ6d׮^]#/ߜ>LHKdNQLKL^>@δ40znU;XI~j*t:(G`,?@Ә|Uh{u|r?rKMHKdNQLKL^>@δ40Bn% lhCQ߹s 49 lC-={_ZP7nKt5?Z s gZfrQ[ewOͤ T(ۼ9,.0/6m)7"D-4@5@δ4LKj~asxUVq׻6c(h s'_z~ZG?f^uD\- 9E 3-M3y9{~'K/?4C9l#`e,vK8w력2ri&/ gZm[Nδ*vI=,.͛CQ߻QgN&&g| wwȷZ s gZfrZeq+CQ_]K#͜Dμ:]z1nKߦS4@5@δ4LK#ӭ~,}O?F9 '#7޾}5%|pL4@5@δ4LK#GVYEo۹BQkCF9 "7ح; 3Iiو@iR-jߢk1=D[T@mm+RJ(ș}eaNWB3@δ40{SՍ^f/]vg~B/:^}0in7IKWZoxH_Ox]Z s gZfr&ɢ"ܰQEQu5]4Ч;x%JTܖn+R^Ȝș|ii 񥢬"nago{!tCnӦa2>8}7QSKq[z~Bנ2ri&/ gZhn^SU}pvq7unw?0ikl_Lp-^+hi)jiișצ6=)[nBw 'F9 c#KŸ-|Oq6]4@5@δ4LK q|QVq;vl0i1oںM_OmVY}>07ii)jiișba]em925_/gu7|=7?e4п'b}q1~Ȝș|ii9.*f/]Vo!_?#Μ713oǎt!Vىӻϥ5Z s gZfr8;mUu{~qXUSsQfNaCkN']ȭMmwzr)]֯hi)jiiș7/v[E]Uu1nן~:Y406EnLrbJ+jK_M&eȜș|iiQ>@δ44,*~P,{CNg(?0i` x9wfO̖zϥ%- 9E 3-M3y9@Ӽtb(k̥^+"o|<2sݎx[$=ۙY4@5@δ4LKMk",ުCH̜eȁ76VOL9uJ+jK/_{_']/ii)jiiș&mGӧ]Ynn!ܭ~9bNr|;|8iU7KUKdNQLKL^>@δ4@Neqktҧ΢޼!O#˜'#ƍu.g5mE>]P- =E 3-M3y9@u{uQVqwˉ~gQ;WyccS`dv{、Q7277NSKdNQLKL^>@δ4L?yu(o&QU[ywY' QeNcG۰M?/YL4@5@δ4LKtv[UܽQUUUusgʟY40XO\Xb\JRKdOQLKL^>@δ4Xa_(71w,uz:;|8O,sOnw?lZ { gZfrLQVq3r^Cv>s&&scx{&l7nK`Ogr/MH- 9E 3-M3y9@crbQVwZL:E==]mݚ'F9 Bvm_oDQzy*nKԥ4 4@5@δ4LK51-*HEm[B_w|M4zߍ)r-,4Cri&/ gZh_**OE}L=6V;v$ eN7xn;w:ߟKOKdNQLKL^>@δ4dZeUtW;-#GNg`djv뱱~7^]8Q˅-aK0\ gZfrş.e}ZCQU??0i`y^m^H>cf2y1z?V+wEgt$ ~28Qiy;wV7߷4bL^>@̴4GZ,mGZf>~H۴t*dNz"M7ff*y-Z,[P1L&/ fZ`ݩ,o,_ܨ.ۺ,$#Ɩ9 Tw4 x7Wpz?|KGf2y17m;jdyJuUgiZ$I }x2?87=]Go,~ fZLK|Bn{yH۹W4P7^]y|1tKJD[)jii&3- idy؝:׭(z)ҴHǵ`<@=zbv6p8QGWOo鏾VQ*- 9E 3-dbW[,^kU))$zO4P"MCށ5% ҳG*"bL^>@̴45SYs^*ҴHۻ[4P[CޣoÆt#[Xگ"f2y1бF܃GZU +$ ;eNu:t(p5%|8tKhod!&m+dwEWG-sٙ3!opO=US?6 "bL^>@̴4zR#?%&H;y/g4Pn뮐ťKu$\΍hi)jii&3- ˽FCZ%&~H- ƙ9 osgM {s)xK?RI4@5@̴4!z}aroIx_|Q3s޽/M:^lC-]DKDNQLK3rfsnnzmٲ}CίtG[e֊4-$fgqfN{7^)s\҃;tSV - 9E 3-h5 61RvoOn\idyMe~),;$ 4-R`@Mw5\O.mËeS1ҌQ}_/aȢ>}H;z/g40O>Ov†T/]QJ- 9E 3-h5 61RvoOnmV#/+$>>3tH5៽2Kɠ"bf977|lD>';,߼>E}P$!}Ɯ9 ʳn:USv9lHy`aZZ n fZLKZodyMe VzC֊4-dwEocΜFey9dݼ{)򼎐+WS[i@KDNQLK3|iiбF֐^JQo^$I]8d|1gN#gO#v!j+lHOVzCf2y1?js0^JQ9S$I}0Ɵ9 ]tN~5ki)jii&3- en(8MDJ R|[6BbBԤV (b$5[[l#&jsvYv]8{vr};ו}xYQfˑvo9zTAysϡC@'tg^ W`Ί酥aKi jIiHG{~i`9kգ <x /hu.\t[Wj?3"=/ҕHH|Ii>ײog{ cǪ<x6mzA#5yz/l/`Hs[)42) Ч?̊UP9SydΝ Xi;r$Xnz|poJi jIiH>exo,**#}{x'NwBjޭ59wc/[':R q eRfR&7XQfyqr.tAeK瑹xq: `Ϟ`y|k"}i[*'R&i&/ eR` 5el6laP]ydvf-zN)h Mٸ#_靯ubK4@5@ʤ4LJ SYQtz*σs0-uHoǛjUxCo΄ˁR q eRfR&波Ͷ`FԧOWym۪^o: Պ{w~z.O=('R&i&/ eR WG;YQ5 ^XZ*σs0'uHѣws6o{LZXQ~s7:) 8A 2)M3y),fE֟n,kAUժz: }oe6l?;)42) p;+<ǫ<ɓß~@}orv %'R&i&/ eR fza)+w碑wUyV|y+ uH|cGR}; MڽvIi jIiHur:+ϖ:zb3+uHVY~ۮ7f-_HH|IiKW{cEEgN?[견Z*σHXi e<{uRHx}HH|Iia<ѵ(c3Vsۮ)<>MR79YmOs5\g/EJ$NPLJL^>@ʤ4094el~ܭE$'R&i&/ eR`x}el{kfԗ.UVٹF{ڣNp!Xm><k94@5@ʤ4LJou͗U\wP8Qyp>d14nڸ1X.^br.ܢ?/HH|Iiel~zg?߁޹LLqZNKc-zm/'R&i&/ eR`Tv1el^ށ⋪ժ|Yjv uHOG9{EVHH|IiQt7VYh?ޙ<2NtڠN{`[]^^U9rf~Ki jIiHjV+ʹTy{k`mPuU,{+{_X,'R&i&/ eR`]fE?LP/,T6Uy>lREk: O<iz7gj~-ګ݋]?΋]?nT53DFI`(mj>LjMJ *ČҨ!ÞosX[QUH9 tȥ_2#&EkS)&? eZ`}{E\`mE}LBLN(ԙ@ط/r쭤j:nBxVK$NQLKӛ|iiZ".;~ڊ,Cɞ=:scrq[qzѩ}ji)jiiz2- yu&ˋ|1},ꡡ2ukG$͜Ν1co5NE}HB/''> E4Ѝ/f͎t^SS=RM~>@ʴ4@uOgyh^[n?RsQaBL4@7裲?r桇j1y5O_[HH7)9~#ˋBHEle'> E4Х7f]ZN\&zBd+k_S)&? eZ:徼Ȣ#megNH9 tr` f`%l܄ngnay)- 8E 2-MoR*,/"җ KQԏ=Vq}cN٘w]>`j, է4@5@ʴ4HTc//^-޷ uW $ǜ1omFF*9|7WrǑw4@5@ʴ4Hڞgy;N?FQ[H9 t#_;7WrUkvj:nEgdr- 8E 2-MoR6ܗOfyz2;Wui1nl##o%6Uug&JN\lS)&? eZ81EDe~28Pui1 `|\vǑ} Z q eZLKFq7k.gb#5\syY^ub䊾bkS)&? eZk}EGuEl!ddbNOGX  HH7)yv6ˋfj.,C8[s@Bi`hbJ>«9=79_ji)jiiz2- PV_^dq9Tt-u!tժ@TF}{<“oM_HH7),/r˖5@Bǹr`N1 ĉj~j&nB- 8E 2-MoRjsib1ˋv:Xm$6'c^o&i- 8E 2-MoR4tl*ˋ[,:ιssH~;fT~&VNii)&? eZN/w5ˋruѣe祗j; 4|y/[j{_M]OeNLKӛ|ii:5]F,_|j;7:޽sHrp0fB/MjZ Y4@ʴ4Hdyǟ=Y۝.!t-[j; 4 nj|eW8GIeVZW fq"}n&#hiX LlAKǙ6')jm4VanpuBcmong+r>|CCW 'c+ ŕFxD&=RPЍ iyy. LKW&4+ x24wbDtDw?kZ۳PJ˗-NАIlbMYnw׷qAipW2e\iE fww-եJ=Qxaؚ 4;sk~w+ N˸Ґ.J@.PQl0Q;Kn߮J=^\ : 3.4֌d۞f:W 4+ x24䢶| 湷,Y,jLfb΂?4TP0,WMSlGq!/\ƕ N/Ql0QP[aOVdҒ iy٩lwV1 v!Qe\iq /|X lƯU,l842'-,NONxf=ƜYaT{\|?@ipW2e\i ӥ E gi4igoΛUmX34+ x24h(捿T-l832BA߾maGuv2i6vrfV~ncEPe\iq _# `O766J޽66QjdĤmۦwKjwZγX34+ x24kDܘ]aE _9x: WN67m78`ܢ N˸Ґ.J@ޜ`^YŋZ)Ù#: WnֿW^[Ud4ml _24d˸>Ql0wꍦ k5ק2{-,N&XjU ݚC2_ipW2e\i];;D[ΒZ))ungGuv2lgXoE ݚ>T߂: .JC&^>+ .8ze9by;뺫K+e233vvPxAӣכn7Эzpo5-ߊ: .JC&^>+ .1D.Yq Qx _266lܢ _%24d˸ALjΆJ]lNXR L_n42߰ݓsf-:gǕϛo ?4+r\*Bd˗:6߿wxx8EYZP^dQy^PWʋL^?KA̎ kKVJ́SkW|GZP^diyCaiQo";kVf%9ݚX2E&ߨޓ7YZPX^W\嶶yXDC׭-;aè%_I p%ݚwYxܹS#Wy8w\uR:5~ig`6VJsk|o7YZP^dzOZdiyCy^˴^ "̋GZ[E&E&E7y_5 CE|iyjy=i"' % ӣJ1ŢV~$-YZ^-/2y'-Z^dIKuiEzw*7n=E&E&EWˋ,-/"K˫EWˋL^I,-s~1sS F>w] o^y7n䡇r-=ڵ ixd{^̙/}||ݐWy7Y#[Fּ{Wϝ˕+_=O|E9[)IקO#[FּȚw#m7Y#[FּƵu?z+o|7䓹ワ9?Ͻ橧>7yG7Y#[Fּ{r{o'|~w~oҵn{?{/\y[<64iyȚ7Yu-_#kxyȚ7y޹qO~=?߽yڇb7nҥb}>濦byO#kx'|?7෹ަ>Ӈyg_?w<އn{t}y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#m7Y#[Fּ֧O#kxyȚ7y4G>yO#kxyȚ7y4idy:Җy5oyO#kxy֧5o<]H[Gּ֧5oyO#[FּȚw#mϟ裏q4G>yG{7y4Gţ>yO#kўG>y㑵ZG/_|w`㎋/q4G>yG{7y4Gţ>yO#k޿٭a EK{ν +W9g.vdn}-<࿆?<;t;۽Oݻn'wW{l۽Oݻn'wiv}u;۽c{}u;۽O<di FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@b=AO$i FxId@k9Ϊ/<~|V?YU^| =z]׵9Ϊ~x^u~:9b@}y^׵!:9QU4W?B,RU^ߨc߫!li|~oT1ρTU4W?7@[c߫UuL{s -U1cM] 5 O6/)?X6ѽsHRK8+%tIj=x>p$#I-s9{$t{:`$΁C<RZzO쑤9pWJRK={:|JIj=GZzO!\)I-sHRK8+%tIj=x>p$#I-s9{$t{:`$΁C<RZzO쑤9pWJRK={:|JIj=GZzO!\)I-sHRK8+%tIj=x>p$#I-s9{$t{:`$΁C<RZzO쑤9pWJRK={:|JIj=GZzO!\)I-sHRK8+%tIj=x>p$#I-s9{$t{:`$΁C<RZzO쑤9pWJRK={:|JIj=GZzO!?t﷖3L!~_<9{~]Uy=~>/Filter/FlateDecode/Height 3148/Intent/RelativeColorimetric/Length 9853/Name/X/Subtype/Image/Type/XObject/Width 3148>>stream H ك FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa  Ou-I endstream endobj 24 0 obj <>/Filter/FlateDecode/Height 3148/Intent/RelativeColorimetric/Length 9853/Name/X/Subtype/Image/Type/XObject/Width 3148>>stream H ك FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa  Ou-I endstream endobj 23 0 obj <>/Filter/FlateDecode/Height 3148/Intent/RelativeColorimetric/Length 9853/Name/X/Subtype/Image/Type/XObject/Width 3148>>stream H ك FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa  Ou-I endstream endobj 22 0 obj <>/Filter/FlateDecode/Height 3148/Intent/RelativeColorimetric/Length 9853/Name/X/Subtype/Image/Type/XObject/Width 3148>>stream H ك FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa  Ou-I endstream endobj 21 0 obj <>/Filter/FlateDecode/Height 3148/Intent/RelativeColorimetric/Length 9853/Name/X/Subtype/Image/Type/XObject/Width 3148>>stream H ك FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa  Ou-I endstream endobj 20 0 obj <>/Filter/FlateDecode/Height 3148/Intent/RelativeColorimetric/Length 9853/Name/X/Subtype/Image/Type/XObject/Width 3148>>stream H ك FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa_AUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU=8mUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU@TUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU؃ FPUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUa  Ou-I endstream endobj 5 0 obj <> endobj 26 0 obj [/View/Design] endobj 27 0 obj <>>> endobj 11 0 obj <> endobj 12 0 obj <> endobj 13 0 obj <> endobj 30 0 obj <> endobj 31 0 obj <>stream H Tgazљ񈫮⁢F%Qc DP FQo-1Q[1^q}ۗg ݧqӧvKxd\D¾ȓr#'&mk  N7>w4=u|ZDmdT…gXvZ䁪c}K۟_ nhl|d7{ELNp?Bn򘈸]mr 1?>ir0y¸>  )Qk&]~-x: b܉}{v%;Kue\TPxU~Cݴsok򿪇0 , ?x@h.ͧL@X֛Uם=ҽ4GOsNtrs[dRi4P,%I{l@RKL-Un$7m@Y">\cF^!d&`qxX,5,~R%a= (x*ފRG P*͕@%V$+s"%S٪VJrNS+ kGk5mmopR#~h],u:˿ &l DJɜZKUeln._K1Xf S$K!RG.C~)G"ݔ^Hd8KSu%E(R#>恜KJjK-#pr.p d([*r.86\1KxDg@ъs rtrt)]\wx(\D. u5M(xo5FgKbJ֗<MZ7u:j V >ZkڧY\pI.~{kS񤇕}@$)YZc ER5y "X;U& {3{-hkmkakfkbojۼm>QKTMvU9Qz['5XvPTjVMnO4l]#mVidV׼pK wnlr/ bK4|‹|8Ok\"PE ; d%B*܇ٰJ rh"xX sV^KX[46! pyxp x .APC 02 B0a"L &T@|  4~΄Ga*.E 0{(C7ԣN\+q DVkp-׸܈p3np+nw.܍{ \ƹ8>܏ Vx=zA1?a'|Q^KXupe:FW:Atr3KggA_H 2]t RF72Iv*bEݥ{tF!cSzFN/^zKAɀ!1t̍Rh!Hh1-TZJii9V3=Uf<'ƼXuj̇Z̏fudff ^kxo*.+ aXwփ}z^4}g_b1X|-ߊDX*D K 42Caaaaa!Ð06 bِ0]U[3 %t'%!t*TE!:.1@B^BU B =ޝup:3{^a[:UoSһWӿ_oz>C>c8 Hi>O3>?y/p.% ኾ/+o }Gՙ6ֶmvm~jln{ UD*eFQfkƙf6$3L1S4303MebM-Y93P=m/~n_>.ծo9$8bc9aIsJ9kpWxc|O2>_k|oX;ay1i2[򣜔)rSK(+P~*BTPQzT\#*( ĪTJS`*KR9; eqwTBUJTPUF)Œx4FhCci MiMf)4k6es\p^ǁ pAI\{\\Kr).A\,_ _/w6{;fqyiht[NbcR,|#sdbR"ɆPlF0he-2)L*#e (O*gJNN(Cv[GJ+!YLPjTQjJzWVP$Fo?yf0 u'v(sT ew$LCsb $lK`UxƴT~T@==uB*ɚt"e'@EpDmH~8P'Jo5ʝ"+(S9CVKe Aul6Xd yt 6G2)'t/u{wى}v}&8ljG[@HJQ3'DCU&NlZim9 @ײnLLTM M ViiK h*ItҴ׻{|> .*7{Y*g1A[֐Kh?bFa\1`VVԍ&I> /c)t;dLA&Npc@n;."[ yd!+v ;r8\61d3 nDd"YKQtf~=m&-rExyW=miI]PbAY$Ku5UwEE0 QSL%×6Xzu3!  D6.I -59KhYbQ psS$r"e@o(Iɘ*}R`dFH1hd3Ot/cD舥 e,V @ne,+q XW s)ʨRzbFC`0c@"S-&G+R Z0Ag .jHrQ)tI?pZ-١ښ0$C7}z㇉ӥ5Ĩ$dJ2?Tڰ_篣oJ(VC=57쟨Ԥʅ榌(z3c%9]*SwÜ;1``H%IBtf; $QnCuxI ԿJf$W(I10҆KP\Q$qeoonz2Kʘ(AC0,2Ѭ1 $ǑWISͥYMf94Vp(#Tn}sXQ2pPށ3ݴ+;t3QM0d"LA H:gLDz#˛ ↘^]lY?eQa34ԅ LMnYþqEi}(?4H'WXz6FX1ug|d #E#pጦfzB@LGk3_-PSc,ndY*͜ bptBx * O;0->fi^h0b@3Hb/.ol UqY6}l6G@DG!:*ZjuXC|ghsUWN{bVA%C~V~[6MNjoߔ8ug E"Sΐ?uC9C VJA)"!XX7)9\ڂ_lͽܯ?x/sg}rk߿G\߭fn}zq?x ~!xt\ V,!2 a3|p2b,?\1 yQZIM]Z4dhB~<&K c1lte{XPQD-E+ 0m !2\>mSɓNAdJϵG*%ަ.s~mwli7J;)*SVjijT&Kb)hwc*gigWd/:v%DeL!JNs8N{{m!)^ " 925q֢`.nv;VJy9NYk`{`OYemV|eHy AF&9o^[wsK5+|[vto p[%ڵK# m#)Scrm]lк/>^M5Imsau! ~pFxS $0'3d;iĈ3q|#k! DL!dYB{%fدP,GV_Hݫz`{Dmxݿ=Ove ȏ wzб%NWhiD 398{owp v 3Y\J*'~w(.I9TDR e0\Y..= ;\$;H4}_wdO M1CAvu}JϪzﺰƬ$mLj_E#Xm+4GwFO/@B{y\P i:Ýڛ%n&i2Cks#D3$+oAyvӁPfH21#CB5 JN(Ys6>vD<.%toY]|!HXJ&zDdJPv}o3 (-k^1d9F*J!Di@tw_3~PFё|wJ6j#^{)z1 )~:(469/֗Emvl XX}yh4F:^uʱR7.>#X;8{ C)A}bBmFLGt%\O K#A Zo+KD-=#30 wk_@fy5FaGk! bZ3U*W[RCGgdUM2 DzzKwpgɒγɣFs|SV.h}+?Hj^PU%J;A))ˣ/jO 3U>NuF?*N`|`4Ψ} y|/Gٲc|,8_A%2 19xD{;xEՁ6z*zAz{΁;Ow㼮+owi'o7v˟y°Dq+Vz ~n:<PA˭ߠ -3756ѯD:~b-@=\PB`@y6Nljc*ߜX8% K8ޅ"9_PAĪ}{pmK} }C::4GO8'78;9'l` oѿRDT4ئ$ar.釆Fn %9-Hy~**Q ZD- 5`3EY)zÖu%eqJY3k:̵YhxG!??܅m?;/[U[<ߟ55uN" yEqoj`6ƒe8뤙CwQTl6iѽW:jӡZqxɮ=Uz: ߸~3lW9U~rmK^2VcDYzu\5QVT"7Yz+kgXi9JXcͿ;;Tc~֗3a:/aN4]0]NSc퓗hш>@Ya]5 iNW5qcS[!ڊqn9]EZ? 똪וoT n=8Ϩ(_f3ic\,t7 |D5j|`R}Z*oRl*H=ֺ1,[=cg6_QQ>wJ)WGВI:pe:c(J^b>tx!`)=^K;/(ZzC'#=ޒǠ e(wMCT/njZu,H7 uy_ Y=8Ol>G9EagU@G7)UO/\${{}itHI]l3]l,[Z *h)h4|JyA? UUǿ{^21`@EgI"& J(0K1Vcq$ EQ003؊gVQJ}L?m(㜳+cSǼ@JhfPv#WS97m \'rh86DS!e@B>v83Iͧ{`!mvt04cۇ隣/y~I9>#pw$Ӡ !^G/mgL6vYmck": {ԇsR[["p6<5Ҡ[yxw V#ꁭrkNie'o\5Ute/Ҧ8G+ا:RI+7i,q$~ظE>FRoكcm;[ (k<^]&ly֕a=`DPOR66}ƍ[<ЌQZݴBLqLgx9}v7޼ˋ7wf;!5aފEɹcq }Zz!}7SQEeI~ܪ:j}1MUqő~ _*㯁HJ)F+;ζy,`hF&&mT9p/:pݫo0FtٸP8W"ϭkzH sALfjy5h"GF݈GvG?9(3SZ'%+@JBlIuDog@Sρ[ic{ $}>^܂A`yhPMlYA|aA=u az-`IV$(W>5S+Ṇz-ͣIP(̣~ON[߰$(?̣}>% Oie'Ay`z,Z}e;hy@&1 :zQڃ _i|@͕U4AOr.O(nLJhԅ4/x~(!Ɣ nGͤ o =oO8#}"g^2@&ObЬ>q `y\D! f77=cB]fSzFfg'I޼rV 4t@~2etgHil) ޲g4KR> %KTshy:s -,OٗcEgy;q&.G3TmI]38\F]7RL{̅+R_kG9nK̖ۖn[t1;SsL-RRجn:3_^>GMFK;245r#;or\.H[-'Ew~tO{2+MVnvN|9^YGAwoH]EW_;7HTԁƎɌF9Ec! * t/Rso5~Fq,;bj3:`na׷dq/D^l `vz@Bi%ݪRHׄ+gT>VjQU9}끺#j"LmD%.{s\uݻ,$.?y8 `-ֹv )}"VsZkZޟ/DG]?qvP?AmnZ~7s!J˿ucpGs8p8p8p8p8p3F"|TOI.DiR%q 5ZȺl[u,f.)vmao\^}lیaVhma.߶m7E|utt QhНSt\FZe` G<)uhi: v4*tC`6N&%'de!pAg(bizߘȚ~%u5r zA\u7֬`]C ޙN'tx:&ө:ydDIΎ=DDb#ł͙d|l|$9wAQ=g3ıx樞~NBO,ĐޛgOg4Z2`z,$uEn)+J 2#ɾGGd3[Ec]enSwڈ(S25[: lIyLe5@v'_afzgHKZڻ wa/̆vY~`? -) 0ppa 몬n޵*CeW 0&oBNq"R.wjnbv^3R2,eevM1W|_z)RvIRٯp{Mv3RN580glyYq+4=V}/:x-PhM yІ X5HJ?yf/E .1v-d[.\Syg^</(,#?'w)Y[\SXY?텛nNU~㝪Y_ϳin{<{OXZæ{D\iŢXCO ޴PyQX(&y.fxuK~o{OB:mM,f\ `2H TsI_K g> endobj 32 0 obj <>stream H XTϙVqyo$(U6D"⚨AK n+*+ 7eaܗX?S;;Gӯ_~s{^@p4 bĨ>nf)*&):7C?*iX@R$U XSiJO|FOY `RxlaI'{it=19&Tg;[IR<>xiztRlهeoX\$JBARfƦ Ylp.lA(]xsp+7 ̞K*Է@e( ll]Pf_ xf`Йcvg"hK^~xN.:{tūk=zԢzȺ߇& 0ۯC~6p!Ca?1Q>3v aRظ)S%&MON1sV9s_ŗ -No_/Yo2e-_mU׬Y~Fؼeܼ;v*(ܽg/WTo9zҲO9 *W^X}jpp[(h۪`bFplneqyU ʏ s5qI=HI6e*A5MuNU7P=E8T ?Lj BX!֋zZl:JZI' "JCH)YZ,jM'Fizk>ьDj5k5ZZOmw@;\Vxykd&w=eOCD9MN3,y'ɇR\!_ɷǺ]n.JM%%Uн@cQX-!P@A3:WjF1V"TnΨs5܏|>V 5̨ICaPPAUA*Jp1D1M<&V ]FɃQe~l)Z6jQqZv;5wFVF-J; "کe˹vjՌ-F;X]ʨyH,}0`0Kjlm&٩|TΣL2n+AkeS0Ke8y1cVfOs'bv6;J33gVi Zt{/_ M+L+ s9|2.F/ DÌF0PC!h72h = oқOr} w}ZF~ttX!ܬܤܨnB]ֺ<i=؉gĆ0 ̮.La)evpLkX A"O_VWa@6Lj p% W A-\S Vuzg`o 4HD 3 f, 0S `>| K(Xgb-aKx[ږemMly$qRTIa9)䴜rN(}=r{➺hUQlE[&j+4ۑvmرvo'؉vlةvngؙvͱ@p yv]_[lإS7wYp88 Nv~aKҮWvڮuv %%^JIi)#e%A$ $KFfErAd5FԘP jFͩVԚP[jGuNԙPWFݩ^>72G*KKTRM2\rMKuɒ4tA3ilCsiͧ -E4( ꦺncꎺ\JWz A4DPUQ(!@,AQUAqUMeB ( P JC( 37TuT  R *CKԔrL )6m UdBuȂ 5EVpFG1Q0XxFi]^G~:@#tq:A'3ty@]t I6ݡtS.zH`L,Bc1S,Ű8X1`IgF6l9da4B\c$E8(\Kr<\r'r9.I\!j's reNtXpUƙ\gsM~kqm~dLuE7FܘMYF)0*Q͹Vܚp[nwNܙpWF E Gc;܋_܇ 5~ Mm~}ăyLi0fL90\`>,O`!,ŰPɕ/ ܅{pr!`m|򕬑|y,O#ȇBҠ57sMT'HbcW5.ʰ8܋smOE35MXY'eEڥ<;rB%Kw=Zcb}J "-~~No#2saY,f |QBՍ g6pbnW;Ž;aHbX$b%  K$S:x9AfI-˕yQ^Tj}>9l߱mB7"B{}; COy8LTxx^Lk台~V |YYQJY%-Sz/S(KXIʖWlΈ#ޤ9f??K"|XEJb/+#tK U,K$|h6=]Q+}˥t^ ~ǛGEn"V"v#tVDU*X#N#ViR\wR<VJ7߅WO;} ~`(C ș\TCAz~BAM8w[拉J2!o*|vK^syZ̵}DO1fl=Jr|3>A:L+埨f[?ݷ:}U~.̠hzQh~]݃=6iw 5 k|J>u,̢; gMS&O͛ɞxײ2o&74.#=͕:6eQ##;%mQN@ FT#+b,mע(**Cj$^MZӇ̩R7G h]<y[Vq,.? h\%"j>ب"%mïjs 85"xj SB&ek%#M+f`@XX daoK:bc'^a ߰LJQ-K餺'^ֆ  [c`#]_e(e6CWjeuE5~Tu[p}- F #Vo CJUA X%e1L+elMnPjw{zy^ --6տHiC5ޜ6>ö% nIe֌.Q15Y<җ~aVF=v|jo(NMկ]thIĖJhdjߐ ζ bcO1Ǣx~7NiN¶p$6xK1֕*eo'l麡I4nhG4 F5;:ИoCЧ/JkBj@۶jHO7뗌q-@Y;Pʄ -N{P/ajpFliZ⟯O  ^.0a\U5*VUdfivYO8d~WԟR1_gӛ4iSӏNylKY>6XkeM訓Hm seH ޽{8U|N!ڃ8C;ed,X~IHx h;«a`a %&0mJjbcSܔiL2ɔft0 X'I~[Ryr>RHKh6&FV.ŐNx.fb[i6r5(Ӷzb@jɵBo?(әngAnSJI&-i[bn+扛j!^U3.2ǶP~xm]qm^Yl_0u?nufϴHT02Hb+t#*B陠>_bX:"Mi&Yj,>P $G]mE t|kǵ[om?rԎNc~\,yfŹč|>7?=zha?E"4**XNrBϞaa 6^} a$pWEsWs9vYuSwMDĩ9MD5"x7}L %VќoF--$$t𼮾ξ?[g(ﭠpۜ( * 3kBž*f#UUV}Vg0Q)ʆ4`]3ŰXfCRQ e.k3h_[X.Fۚ""|A[MO@xN,}.HKjCp|RW8mg5gOv>cl z659߷f- z%NJ*ULB&P ?ݗ 0L֩R۬*3FfLP,x>얧CFVe"Lh:'ҨaҶfJw7M^892mm8O0% !i,' xx]o_P~OcGVXu{foLqx{V^409Gt=+}0[OAsKw Mۋe2۰ $!#PWb;}";g8 QYIRiY 1nd)Eb1}lR0,r,16Kr))EY9%7ŧ!٬O vI6Px^7. CpV?rm~l):hq!?~l@3(@YjM]iPgeARjYSWEV\ha?Ο̞K>=Ц}n7`r{H<~ssqwvOvwq+ZՈ-E`c8JLfju.QgTh uP<Bqx aԏ"6l t!Fnx5ɡҜ $Ƨ^cY1 ]t[fsxzj#)MTY,.~E;6 ȅ,v@Z`_&-F,ԁְ2~GzE#eR)ǦV5Һ5tP;]; mрHn6YNﷀL3OƣmwWK' kpEsC0՝=̟zY5jA0TOETH rcc*B]Pa_yN ryֈvCwʯ?,YIͲP[VZrS&lRH$dw3A.SwBif#tZFvFqѹ3wvvfvvci&e5Cxca61 qcCDIЦBJ[5U1( .qh$?JvɣŪ@]cu;W3|;#ސR\0RA .^y;?;/Tup}>u3Ie{*|0~ ~)+xr_J؄G`8P!d1b %PBle"*^ؤhIA*b#84 kd,7P|i]K`f12@To^OCTtOvx )!D;^FBWg>!α6- B5 3oRہ Ķ24]PAf㙃o创^@3Q`|ƟrISF -W$KJiƥ`RRT +Y5LP.*NrFH& ]x>V>]x}~ҽW{+޻ E޵ 灳\g!YDGS7HMjA gJ>7np8FU\J?'ͱ ݮݡaq8pxUoX&2F MΉ'bIc>d;x9v ޗуBp_HթӲ]1b6DtY>Јmb[,8i1J S%# L͚TfY~[y&3ܚ) D7jL!z11b`Iɤ2lﳟ&/^_Wzf9_5WM$!csnq+ np1Z/ 0r7G ˻83I֥KB5_ooq50Rd+ #m'mHlE/ʔW&J_ UTf [8z> Ճ(1bt,j闱0 hGx&?"{,vC80$ \fj>ȏYo?2Iw\exSa5uT~_:ޔ>wuT#?FըZ19(x^cPDltD"=ĊXwf/HAI8^fùq9rTHt?Y5tJ-jnM$+'>_TVJhf1âb1ܘm?y uOkZ㗴G,7C<.8T΢!DIәP$,|0+U+ZԳȵؽƵֽٵβ*UYj5ւzy9kUYnV7f)R]NZ-yI rͣT1L1ı B\Q0C.(^p i@B NW0%M/Np~ $_{S 'BE{U B0V䤎327M(dyurQިR[+IBAt3Ȼ'֞[<{d]#_<)%ƅ.6N R9a_c`5Iv%E;ϔ%$ۓpU|ixi|{g}x}ʚMҁ@ir4iM U*.e^l.p« hW#LszmFHaсH-R< pkok &RPZ`kϐ@XO B!t!Bm2,:' #X!s(1[8?Q{ѬO< )"XL|1(BJjJk:po(+<3w;;|w۱6NnpJ똸ر!U 0_@HȏDP~*bRԡTDjJ%j 7{g*y3޼}O]yJ}cwܴdSN};s&~r}bnx*dϭֱ2.-ڸ&# >]|cQ>ByшuU?Ƙ{BqyPp>E |fhF3]h`EIH4Xswt ⅐ȃ=G?8b.9o&eBxiB˰wpQtmaa=D_xN{C#O0Q;D!D4w ]K쒺||K{^7Nȉx,Ǔ6ŞDK/&_i1t4q,98H2dwN eBlZp0-Ei!6-L}akřN>Q.QΊ 9!Yp43k+̓槦G6Ku5+1<)pglc˘ `Đ?15qUWњ"R.r30op֙pXba+fz0]˖WGjs5{Wfa+[e*VX,=\%# :UXQadk%Đs&R A `#"1yyrMY>3vQ9z ,jiޟ8@C~M' u }ġ͎oړD\qU]qyH Io҂$~ dBB%J)'@1$ڭ7r&OTtCc.s`\ZgߕZ_C-fWж|zJTv]xO{beڇ,ږ,I5X|ƲpNcu:w.+k[7'Qkہ=$# pMŷN`2p-nL1Xթc1ErE e˧fiU^8Œ?Bqi%rUiJfTO"ڎILXWG؊-dUB kwO:(@O#q.}H.ؘ VQvK"j te,5B٬cʐH<_.P P"c /\%,Ey۶a@$[G[g4nVpF7K,fX(6AwUjp`U5\S)RQШa5Q^L}ynI.>kպɞc-lu{G.6e#zt[#-Ed'fuʺj,SaXfn6IelȑdMZaW/%Ą5H CԒzsC; {pgoݿpo_ۯoT>PߢP kyt1.%3$Z$`.YUV_5ꇎ,ɪT.RHT׀- +aR&=#.lYjY F<[!hˎH5R4% f UˠEWS | 7L L+; BplTF @@p]|m`k4uS7X9lcF3fhayHP臞`Q~4 ?PnqrGWSђ5b5Uo+Xh\%'=5пۓ;ژ_!& +䦯ϑ [K`>[@AwNٮWL9E>C˹C"ݎA HW=>Nu%h}j{ʫ ᮣ<`F6ּ9aaUhAu`]M^"P<0> y&߄ܗ{pU=gs <abѤG "P5c[_u,Fcd0BBKZSMNCk*2S-t0x=AhkX{Z{2o1gd[ `2}cAUQA=a`*mB.d'ϸ~> dx/I4C=ԝYΥHY:YtͭwJ}&be?}O2wVzYC-ojx5~\>EvQ_6N<&mաWD٢ELY'a)t w8w ric?2r*1^H6%$aLsiJx^C'^oq$)+ҿ]l953 `?+N$'rAi1(f N(KJ.ENo+/Oq@ myŭ%)x3Q.NT&sNZaPwc>#Чz>`wCdw m~ Fʔ~y^gObyY/ls =$ڿGq#5i9mRg3~q U!9 '&KldߏԙAKOE4.<ꍐa<` yb_,9wbw]x'z|,g*#`ĞH7 ݕYsQToQ/|)Am^% R=+݇gD 7?Ot:khBǖQPaݒgG[oH-xjas9r' )Oz=½/0n¸6_;_ĦjbX4 Q:p˱Qtʱa8Uzr8JYjxLjh񈓬'%ma%|eF,~u zHdO\Z+0l[V},;# V$hY,2Œv!w3͔9uYcvrMWnc;-ܪȫdj̑北f~ҏ'7Dr[?l~vA;. V1쪈3E_1}ѵUHg2N52;S2ͩ|սEƮb(L`)? 5%S̽~Y gRC9_{:;5 q2حΣXo1ح"N.lwW2.&{=O;+/7͎{HQs%v|[~ 9)+#pqdyrȞ9C;?|E?deZaܤ0q9cܤ_۫me̒kժ>8O 19*"Fk_.zwkHH(:=:\~LGᢈlۢXr>Is?:hJ :$:9G,9; HmdArws"ͧ M))º;m? fMOoȇ'^ϛ W}=2`qL? ׁ kZy~|Dž25 ?C\0G^h);fzo[8s-03sԔi϶~ پl˺"O_v|3Z¼['d!3 8HĿO6ڠ@"we^! OE9-mbl;9/6G^BN 1'Ojp}Ix.X/9BNӟU|7I"YV6u@;r{uX]q!=Zw }[{zBOq``CA/@ Vж0e$y;yp~OԈ8sG2lߙ!Jj}nClfӪ _]v0?:k}CYW߹fVp])33~gvl%H|!5l"M0K!q~ĜG_L^&U rho29#giOKȇ4wnԁ2N5'c~d5˝!6h 7eg1k|c?NqEdm7K]F( ,Zmm)Y*#ʫSd/#ylxM`-7׍eL `Wې㗂RaF)ya_Кe6zMmg4w!>a/[eu?{ەmFL-]mdʥ8FPlX72H16' .]f~ QJ9޾mM>y{s9=@,^_XTZ&(}e_I_R~=3qx^#oPux +l`m8qVV#4Sՠ--;` U~.8m31H}x}M,~+0<\k?3<ʹk+j*e^s2]9MuS;A*4~=b]52?;@Q&T*Na 4zK3wyyP1B_S`?TG:$D@=0G 1@4t?e]8c]ڲ~ӏ.r?(0TR#Uy]q?(fAaֹ {l?(cH`}??N? l/ A P`7J;;G4ѠVmcGUgjosl08}smuc(O L}[ ;xc6xG/s>Jbm&"Y2%WI}m~/@<Ԇlwi*k=6~MұyVu>{Ew+~}Z Kݩ,!4guyVuݟ2e^- w$|+ qvE8?G;6̏`O(Kv+"bM~% zy1 B^6PZsa@e0EF!oݽus;y/_ZZzͻ'3yxaz7GrI u5(h'4 J>E'ܦ<),2H4q)sGu;^` ÕCƂZƱy8TUjM I+xWjBL\ckf~7u@G`&mu Kmֱ)bTyb\^5<:(u5~YB l{ay/MamzAl"RiI:Ŵ֪:Dr!pc}/LjaF;ڭoi"7 { u_Ͱ/rkiYG%;9( xsa<|J/%{ r*Dw:k 6% g.ߢ2!|gfb֬>kR)RbZ6ϑ9v U:P1Pؐ6U Wvoi-bW׊[|bTRn{݊{mLxIznab &Mu2chs U{׳3F2F!y5unm ~6FϘz΄o>j+kRVI0؄H;3g{%3PpTU`5()±q*֥f.?2hE}'s{{38ߦSe΀{McqWU Ic9#1F:D(l\f8.cR?L^xP3_/Sq\7sb{en⤌.gbZ_zIkf=پtnӬt?;oӷ칔wJ9޳I|y'>aj)XmT{kONIvBi^seȻdq~'Ow?.5&Zhy?8*NLE\}<{{"jƒ(2gV%р~ ۲;Wb-ȿLTU1s/eukl {f 85/B;$ %B I`1KILb!uࢭRQW:mL[P?L{bN@ SnͺI-aХa9Jh5äiϋ=5(3ݡ''h?eRNːOaQiElYdfV*`\lA|$[Ob=%1b.fs1~8+hOb s؊'ῡH#?ނ)b4 ɖ F{T*jQ nvY>q!(+Q o'bt E:*Gۇ,L̮Q7̲3'Gr "@5!W+Ե/i-ZpD%h;ccp"Ղ##ZWp"uE㑡]PG|^&ka-1<?|ZtTKo4 i݉p"ΣCظCe\M&ƣxz?`V>}_?{r ʬkzGRRUe--MzeRlPi*UnP4|j1p  +n;aO\sEU X\q%5\Fx8Z L)`:HVJIX{IYRGG2 gӾ'dJ(dzY٣͵Yf}ub|b,| _1R颲 k%=9BL ÃT3/ _"R 0UP %0>{t/=mS`\Kq9ML9lmX'K|H+&[N&>֛~ -~ Kc~F^_.PkrAIY.(*wDyq(HdͣjZ)MiU/d|::VD7$p`@ up@t;4i~=iVT*o _MU @ "U]f|{@`XLE - $} ;N@MLiSRaQnj֞@%hh Rm'sm|`bMbEMU/s\$xgﴝC;>W,y(5;m(=Y6_+/ ox!!(J4;rғ e\ɉªf&&Tmq)1!6> endobj 33 0 obj <>stream HV{PTs]Y, zEA!.B@Lw՘]^.D A jԚ:Ft)g&j[INֆ39w}`s SR9 =|ŕW} )7%s oIYOSxʲ5`@dÆ@-79@= =2PYSL`!"<(a1(GTb) rTϠ+PXjt,`-a=؀bMl-؆|+߆w؃e{Nwc^~TF^!Mo(1tįp $)4,<.=\p >>\5?NB!uL I'PU]U}}"RN\?5-Nތ]D;rXBB{ 62BTL.{)Э;Yhb6mZa2!5Y\h^ LK&[ĵ]gt9u{) #HC -2Gl(nsblcl69l.+cl{Fߜ #yÇB^+yx!IxL/pY#%q8X)QwxE')R4GzBj6JBtAlZmj2n1+bYD#U9$Ɋ5(ac'L>A_"zlU@OL_&f!ANYC_4:Q<|XXK̐o7:*OI`w)>YSQJNNn+~r{9|L{cTgF:(+pn$3H.EV89{h٩xem~Ze 8ed]|NJ :Áh=&=¥)N8=|ozGl/qbSdSȁ"/߫r5Fq1>|i\6UnM9aӧ[F eJ{=*[ BX -U\W!JV\xq.p{bloNۓ'Oteuxڰh#ć4%')SC)MC82f9ᙡrҌ`S%[_m(p*mq|Y^S7+r6=&6^ZuA~E uuۊANY=VU#1"ݞÌ5yCL[3ZDv]jN:d;9k)q9(sKr 16cҠ7,OxNtx.Kީ'E#y^Pѝ@ q<('ߣ68UKU v=j'륨w\_nƜJ'bB8K!`0l)V3=C _u8! kp[ 5ܪX Wt"IGQ!L?Ó{3l0 1oLi*fP۔#<no'|h^%GxW~3S /s!mCxm^˳%ae4Ew=Sx&COaB,JQU 8aSвaLE44c< Yi- Oa^1m&u[n쇿hA~AVUop.[.լz?QZe-iwz<=NP2„Չ.+p0 ĄڸL:vWFIcinlchvNڇ?m pqINl=2&ND ,rVBz\V'JGμ):d6. U/ Jh̪*Mg;'Wk^N^@ȌU; Alq.ˊ.gx0Ґ5oVDjAfձ{x,zӦ%ex6c 2. L;f:W|HUm?rD"#:X;GG(D()Ws% ppj*Q@fYVbcy)Au;FoP=Og(NYkTp;/av3$p#A#2eHC o]Q;rE%Jq0 JkGD^M}״${q/yqʹ/1C_Nj}1\?9?)^43څsN2ΏӍta:x3ʸ]+]}>A|B{.h"'b2S\ԣL6aE ߴ?d2-\K_ędZ*%GTW'BsY69$*W@a/CTW8<r8C,઄Ϋ@AV> $VmxؘWG`bg1 X/jf9'U2GM˥#xdvG>=1pO `cl= ;x{9Iri [3ݪ\]S@<" =P&K =4{1FYͭ6x vhV / AAet|04fU*F"Ah;vM+)eH)ǡp 5"@Y'nӯ-H!akhSQџƺF>wmkn{÷.|{ ]oCg)|D+ɍzaI{>PN7 f~ GA` =#*µ1 h-31kcyquTFsއfA{ r 4,̌ W+F1 27y?x=u(߿ꦵWn㓌S(.|;3ъչpKb՝Z@n/r%ג nCEZ&veJм݊*UaJǒX8ʳIzW{at%nÔj[JdG@L^ [` 'F&r#(1Ƴ;kt6x65;3kj"QXR/Pgb* E-fx"A'4I|sHjE' qش5nl]f[KV,}w_ mFAT{5Aޫϕ= C"|.=K?:t(-햆pts CmnQ"@T|CƋhW#*$1AftZ!8ѩge711Y#N3{>ca<A<jm j'6҄H 1ꫢm^/ۗU&z xW|6?Ͽ 7΅}ܽ/=>|p\(PRyБFeeRg֝SADb;=]d4t(JR~ !F6C.-VEC8iQM̆(%^NjΐXPE!U67i'9ز: 2voћm%X($xݫ (`k\#(-`.PnS621B6]Cjk |l(6-i ]D4ey*.\mgU_P6lQDKmHЌ51R-hdZ,A4m&TJ혎t&mcLItBi3a{?|?9 ,ǃ{î2o9F`G7 Z A&l l>h~`sYgJJ>Z(vDfnU,)D= p *GGcrƓ%7ߋu:R]$Z!Fa^fқ969Cl R (H|GH,M TQ֛ZLW~ PBw" GHx8<PkDS;w 5ysXgl2vu&<(X~w .qo䙭cl`EepJ.#߱?M.\TH/ (7&vy,v"(hYlRT|7-%tCV59 !lDłzzFYE  HtCA{i ![4x|d==?y̤~jƷGgFR%Se=G.<Ԛ(zE𐰸gxK%ϔ'M@H^Dy[i K=\C۬4hՁCpMEG&x뉶ƒcmx3ֆ~LWm<1xgSiNmm衄1eSòh%f0k"5CQ:0e+o=Gݻr2Mb6M  iK5m}p5آ,mҞ`kU,r0\1u +]h8˴̥!ʳB|w?z (yseyVUA {JuҢJyNq+-qzƴ !e~kq1Q]!rȠ A@o߲r/ @d5c!Gc+4h뗴g us+^( 6WbJUN0U÷Ъ-Ý_hXI8u۫ {]'<5lxu3ދ]M*4$V(l3{&D$<+!0dy!\3 br̸;hT)e6a:Ft|ښғYsTKV] -9ܕn)#2 .\ rD=&לCquH9] PDط|M1qq\`baR[yK\\"KZ|p1acx'~@z㍝]/O1DnTbWqW9~< z`]70lMflX;]%!1ˠF9=Ҧ-Rb2X9p ˅vG0 w7".@fg@t-Ee+2 L6WXuQʭRŹS:Ƌ,|@خ]ҟspSVM7۫-~ ub dﴩ{n*2MFv7pn[ .U5?EO!,r9.YRRR[T`Gow>1ޕrDM ?B#|} Ͻ"g!}lI4'􇠿D. A[@~<$>{:tQw, d 9'̾C Tǿ3sg!+3"Y%< ,!@JeQe8ՔڇDhhKXZ[+Xo߹.O'G3XFN03WN G{e 8[NGyJ{{ܜLoe_T@olXR/Ór_"h]||9&s4\Wx;B_bs7rJ\n_}gY`7k~aawu.KjٛswCxt;n5&+|=qw cUUF9*π:GV϶V;`, Vһ w]_+:NvF`#Sخ_g,g V o~sovV}զqX㓹f68?ygOx<*T.BEė2#t} "NJf)Z)rX8|,T[7E[aRRӳ \os.1qw|ܽRJߧ̟Z*s]+sΒiVVV$9}*&jkRkG%umG۪֥ق6j]arʸݬZ.v8%O:{5jj;{jGoa 0qLIRWjL#~ N~U4e_ל&M?lՑg TZgrIuF7iRW5Y\kfh41M7i[X[BsX߭Ay?uz{jsf9g-Xޣ6v)Ann_P(8i]{4=qnje3ho<L6K%*[:FʨS?61OZv<8 vZ"m.xXEse+6F5IN/o?~N_۹sEZѷ]k,HX|SEyy|~;BxEhL7n9ӧK.X߬E iik; \źo:$A>kf<'kAmtu> /C?O y }e;̻vo pǹ4 Ċ,kl"Sc6Pgk^m!z 6Α7CJk8\q3>D&{GȭHwduėd(eS-22sJ]Bk0vdx dɠ2bp|j.Y[d(zX=ֆpF%c1o'_X1Z2⹈+/Ṷ̀Dֲu|3v׹Q&+3Rz0z&$>}snv_2`LWГ羰+}weye{v~0(Fp4w v=(񑙦V͗x=ѱrhZ$48( ƔF G_Xۿ$Rn54[@X{="JP.[cpZB#`xԢ"< 92 Lx+l2qAD3/μ89c.)8ǂ?xrR#]{ Ν"]9=IAuO* }ԋ 'O '?| @R{Rݐ j~%n̆dWl[cμ~p+4Vru[ia ˀhPnH3^? Ë>IYfdF^`Θ|G[_ftįC<ßm>iŔOKm8 1|1'7&ؘ@A es~hɘ@ǁn5vkL&t36M߃仁ijk\r{Atr:ט8XπeBl^/ؘ[!Է5M8j& !4ChY[t4I׃T(a-{X~3&|ܧB&߻=fdH?Gr~}nX &+c/1:yuAw+`]Cz~α| |v)"$ggYualW=6K3gZ(my8L<$ѯOeLYdzi>"R+>3c(ӮԳ+X+$ۺүx>2Ε{ k^C1bd(U)2^\ԵιYw8n=)V"A" N+ٜ"m;pob4˜W_L} p sn>uxia4Տ.GT*D"8+|Mj`R ¤\B^6~a%)IR0Msp*3nQ5hM* ͡tc9b%˅I]0֘1gU3h~~cy\_85[4CGCUEZRUt_U_kW|ggy > endobj 6 0 obj [5 0 R] endobj 34 0 obj <> endobj xref 0 35 0000000000 65535 f 0000000016 00000 n 0000000144 00000 n 0000044876 00000 n 0000000000 00000 f 0001667515 00000 n 0001717801 00000 n 0000044927 00000 n 0000045335 00000 n 0000046037 00000 n 0001717688 00000 n 0001667701 00000 n 0001668112 00000 n 0001668491 00000 n 0000046101 00000 n 0000376745 00000 n 0000612028 00000 n 0000854028 00000 n 0001045984 00000 n 0001242600 00000 n 0001657409 00000 n 0001647303 00000 n 0001637197 00000 n 0001627091 00000 n 0001616985 00000 n 0001606879 00000 n 0001667585 00000 n 0001667616 00000 n 0001703709 00000 n 0001682540 00000 n 0001668835 00000 n 0001669089 00000 n 0001682787 00000 n 0001703962 00000 n 0001717824 00000 n trailer <<2D8F627BC95D422DB430B738A111F8A5>]>> startxref 1718002 %%EOF king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama8000/glycine.ndft0000644000000000000000000037516711744305674025733 0ustar rootrootGly (sym), 70%, B<3044C4C4>/>>>>Օ>ǟ>|>K><>^R>f8@>?6> -0=ᇕ==K=k=ti=R=,f= 1]E;!Sr;:4l::::':~:`4:L:C`:-![:&b:$:V:V:V:$:$":$":(':-![:6:<ޒ:C`:C`:E:H:H:H:H:C`:C`:<ޒ:::-![:('::&": :h9U99)9b9d$99h9{m9{m9{m9{m9h9h9h9h9h9h9h9h999d$9X9`9]9֜9m: :V:&b:1:C`:H:L:Q:U1:^:eWh:l6:nU:nU:i֜:`4:\X:SZ:L:J\/:H:C`:<ޒ:1:-![:(':&b:$":&b:*:::C`:L:c:)Q:':d$:]::; ;'Z;F;|:;;PC;; <<ܗ<30>M;l>q|>2>Q>\>A>ͱx>H">{>#>>|>~>yM>O>>}> >_>S>>)>\>.>K]=l===V=b=>sJ=dWA>0 >^p>>V>~*>>أ>H>>Zx>=><>^>> >׋>>>6j>b=><>RJ>u$\>Qe0>_R==Ve=1h=3=t=T_i=0 =V<6< z<5t>Jw*>rB>&><>>7>os>/>a>p>|>>p>:*>>j*>?n> >Qc>uW>>RG>g3>@> =߂p==V=\=g=F=$=<`G>1>a> A>>>*>M>_>ث>>>>y>>֗$>ș>/>n>}f>#>F>>x>VW>#l==[====^=<<=_R=2;w;aY;Z<<$<>?=͗=qq>>KO>s>n>>O >CC>q>t>׭>ߡ>->t>T0>>(>;>>>> >uy>c>dE>=L> J=b=4=Y<==u=V=5G=K>+>[?>U)>g>j>p8>k>œ>ͅ>>>ު>>,>>˹> > 7>#>u>>n>rK>MX>p==0=N=6=a=n(=PC#=0=<<<<&"_>>Z>d >->>&>v)>Y>>`>.>u>`>ا>Qq>w>=>r*>>>U>=>>~">\>08>3=(.==ʠ===h =K=-8=S; ;h:8:x::![:&"::pk:L:?,:&b::h99]99X99gS9h9{m9{m9{m9{m9{m9{m9r9i֜9i֜9`49W9W9W9W9W9Nc9Nc9E9<ޒ9Nc9Nc9W9W9W9`49{m9{m99d$9X9`9]9c9U:h: :V:(':<ޒ:H:Nc:l6:I:':X:Ý`::T9;;o;"s?;-B;8_^;=_;?,;?;?,;=_;;;8_^;4p;.;*;%Ҧ; 3;t;e; gS;h:T9::zd:,:::'::R::: :V:\::6;;;:;`HM;NH;B;4;< ۙ<<7wN>IW]>j>ݮ> 1>>x>(>4>>@>0>><>5>a>٘>p>><>>>h>FK'>I=H=a==E==~=c=H=, =iCE;m;;;K|;< `&%>RL>oV#>>X>>>>>F>bm>½>>s%>ɨN>>.>>>)>>>rB>Uz>,c>D='=Ş=ٺ=Z=M=x=__=D,=*H=^;e;::֜:zd:::V:U::U:V:A(:::; ;$;C z;wT9;#;PC;kI;< ?-9H{>4>Z>sI>>p>>>@>>d>>;>s>>F>>>.>>dn>x Y>_t>C>n==B=====ti=\=AB=(,=^<,<w<&<8E;7?;*;d$;e;:T9:7:̛:)::V::::\:̛::2;vn;(@;D-;z;U ;6;Ћ;̬< ;<$>@xo>`>w >y>>o8>>>BH>C>@>>r(>k> >>\>>f>~>g>P>39>~==<={==%=w=o=X==d=':f=U<1<[<}<)<}_'Kf>HPK>e>y>'>->>3>Q >0>>|>V>B >/>8>>4>>>nA>Y4>C>$> v=^=== =8= =i=S=;.=&=-=DL<<>>>N7@>h)(>z">b>͡>2>$7>>$>R>?>F>Τ>0>b>2>C>r>uy>` >K>5*>Q>==8=P=<==|D=cݫ=N=8j=%==<{b<¤<;ƺ;h:8::}:`:::::X:;;V;/`;K{;)Q;;G;$;Z<|<5G<^<1]<)$s>R>j>{>pO>|]>h>}>g>_>>/>X>>&>.>>[>z(9>f!>R6>?a>&*W>=s=)x=q==-==u=_Ux=IC=6 =%'==E<䀹;v;;ņ;;I;X;;; ;X9;;w;`HM;Q;C`;8_^;&b;V;:T9:7:̛::`:`:_^:\/::T9;;;6;Rʰ;x;[;w;x<@<D<>E(V>Tx$>l!t>}"r>>P>&J>o>(>mK>hQ>Tg>fd>>]>>P>{*>i]2>Wŏ>E>0l>l}> r<>.n >V[>m>[M>O>4>>u>I>z>V>o>3>P>>>>h>YQI>HPK>6i>!u,>>D=P===K=ށ=Ro=l=Y}=G_=6=('=$==<䀹<׵<۰<<j>3>W>oo>o>ڡ>>>`E>>C\>?> >p*>>:>>x}>W[>Gs>6&>"FG>>c=9==ɱM=t=Au=;==k,`=Z4a=J85=:N=-NS= =+= <:<"<^E;+q;t; ::U::x::6:2;ƺ;'Z;D-G;w;=;;K|;<*N<..Q>;e>VI>i^>zU1>>>>< >?>>>LU>ie>xo>os^>c{>V>7u>!>u&>%'=9==e==K$=S%====o=`9=Tzd=F=8G=,c= =ڧ= 5<dl>ob>>G>S>cV>qV>}>">>.x>>=>*>>y>p>e>Y>I>- >Q> >O===,Z=Ω=K$=`===R=vsa=g=[#=Ni=?=2a=%=t=={<|<{b<<<>+>B>Mhd>UD>\h>fk>qh>z]>y#>>$>}ؒ>w>n6V>eC,>[|>M͓>=-D>$]>8> >N=L=mD==XZ=4[=ww==eo==s=}5=l=_Lz=P=@=0=#9=W= =!<0?<頦E;_g;';e;;;i<X<1<..=KX=g=/m==L==#>Ȫ>/p>BR>J#>O1>VkL>_B>i>sח>zT>~7>}Q>x>pT6>g>_B>U(>IL>9M>",>> >> ===Vp==R=c==7,==ec=xP =h\=ZF]=Je-=8T=*6=B=0==VI<%Q<*<~<³aM=5}=,@="4J=G=Ž=+@<<<ڗO<~>.Ñ>@>G>K>RP>[O>e>os^>v>x7>v>p>h>`>Y >O>E`>5Y>!l.>6> >> =<= =K5=ݳB=}F=W==G=,==]=tW=cԬ=TT=B=2fl=$= = p=FR<*Q<L<~<_;Z;Mw;7; ;Ћ;;;;;;^;@;p;ZL;M;Fl;@=;=_;=_;B};L;g;E;$;;ԡ;i< ?-<+)Z+>)V>;C>CN>G>NE>W>a>j>po1>qV>m(>fe8>^L>XN>Qw->I>@A>1~> Y>>2U>*>=4==uK=(=֍=m==_== =u=VI=ol=_o=N=<=-NS===5:>">3>B3`>H}>Q>[>cO>gZ>fG>`>Yz>R?I>LM>G`>B>9>->P>Bg>x> >=>h=H=`===B+=K$=d=u==2=X={x=i=Yz=G=6 ='k== =I<<=mk==I=8$=n=Ŵ=ps=u>>q>+>3f>9>@e>H{>QX>Xe3>Z?>Wp>P >H>B>?6>< >: >3>)>W>N>l> :[>2R>)>=t=:0=ߘ=#=ph=)=R=|==o===u\=cݫ=Rӯ=?=/r==A=<`;;u:;![;NH;g;=_;"s?;ƺ;::4l:k::7::ޘ::֜:4l;;;+q;H{;~;l};G;W;<J<..=|QW=d=D=v= ===-;==ж=e=,=wf=zH=~=DL=qT=`@=M+=5G=J=w<'6;d;&;G;![;2;I;:;;z;p;i֜;g;h;ou;{m;;;;;Q;;w5<x<$<<>/ >$>'>-]>0>5 ><ޒ>D>Hn>Hm>DL>;>2ԙ>-F>->/>1>.r>'k> e>Յ>>+> LX>VL>=ŝ=)+=e=Դ=Ǖ=/1=T=G==%=f=DL=m=]=J=7o=(@== =<8 5>>$.1>*>,B>,%>-G>/%>2Q>51>2(>)8> >0>o>!U>$>)J>*'">&{H>$d'>r>>b> x>!>~==r= = ====4==%==x=fS;=UR>=Aұ=0Ѵ=!Au=w= >=@<{<㹱<בE<+<<E;F;d;B;;|:;Q;?,;5;+q;# ;DW;#;o;;V;;'Z;:;Nc;}!;|;B;n;< G<%="i=߂p=$= =%=Um=FR=l6==E=.=ڡ=rr=Y=:=qO=_G<< <

6=]=w9>=k=?={K=={ =>W>_>#T>/Q8>3>2>/H:>*>'G>$_> r>OC> >d>3>>Bg>;>#>'>'>+>)>$]>>>> >1=p,=졞=$=Ѹa=O=4U=[=E=W===`?=r=`==Nf=;=,v=== K=1< >>>>q> >R=====㹱=kO====G?==R=g=IiZ=(@=z>b>/ >9><>; >6y>/F>&>Rz>>MP>[>u!>H> f>>Iy>P>&@>+">6E>6Q;>1>(m>U >3>> >A===ڲJ=φE=C=x=====u$=,=m=]o=KO=9@6=+˘=== 5=2<\<6<)<ہ&<ֹ< <qG>!~*>;L>Fx>H>E>/>#o>i>> ?->p=f====== =w/=V=2Kq=V<{b<^<<[9<0<*N;R;R>;;I;$;:;}!;_g;L;A];:;6;5;8D;>E;H{;Y;z#;G;L;u;v;W;U<_<O<..p>>'>6\>>ڸ>A>@>4U>(/{>>I>O>===>gP> Y>S>>(>20v>@>@b><>4Y>)u>"A>>X>v> ==|=ݏI==\=ө==i="=L=n=~=l5=\ =K =:=-E=!}== ="B=>< F<䀹<<^w>8>R>`\>gg>i>hN>d.>^C)>X>Rp>K>B>6:>!> ȧ=7=u=6@=1==bQ=;=9i UV>>+>8.>>A>A:>A>>>7w>*VZ>s>>1Z==n=#>> ۙ>g> >/:>:>H>Hn>E@>?K$>7>1F>,>&C>>ϼ> :[>=[H=璃=^w=˨=ʱ=a=<=J==қ=~Z=l^*=]=Mj==S}=0w=$==-= E=%=[<,<<(<<@A< <³<Z=^׎=z}==K=U=>>F>b>t>}>e>Q>H>>e>O>~j>yK>rB>h>Yw>B>&$=i=OV=C= =nL=D2=b<;< y< <; <\X<{<2Z<n<<1=(=)=A=]B=w0?==;==Ȱ== d>] >>*?>4<>:GG>=Q>>>"Y>6`>)>>f >:=]= =>> >f>&>7>B>P>R1>O7>Jr>F>C>A>>ڸ>9#>0n>!>\> '>ۗ=T=== ===nm==%=~=m=^=OGP=?=3L=(Q5==(=a= h=xZ+>J>m*>>@M>>>>>O>>l>>V>l>k>>>o?>O@>=T3== =z=M= <<<VI>V>7>&>.>2>5ya>6j>6Z9>2 =>'{>>> ==#=$>>Ҟ>>2S>B>K>[>\j>[>X^t>UO>SƄ>SJ>R8>O>Jt>B>7r>(>>%>=+=~=o#=Փ===w=>5=~u=m =^=O5S=@4=5G=+="*=^== B=8k d>D$>o>>b4>`J>*>s>>\>>,>`>;>H>>>8L>>zb>M> e==K==U K=$s< <=<>>U>"->&rJ>(]>*>.(l>/>->&>xa>{>>a=b>> k>8!>-A۰>Nfw>W>>h>j;>ia>g>e>dPW>dPW>cˮ>b)x>_>[2t>U(>NE>DL>4>G<> "= ====[+=_===y=h=ZN=L=? /=5P=+=!b==.{= =<ި2>h >>.>H>|>L>>##>>>y>#>>i>W >G>>k>c>r>2a=Fc===Yz=% i>>>!>">%*>([>,>- >)M >!>@>8>;>c> >f>',>?ߊ>P{Y>\>dGX>yW>{<>{>y>xZ>wl>v >u6>u>r>oS>lU+>g>_>S"a>?H>Y>u=6==ƙ=-A=O=) =?=%w=qT=`-=S=FH=:W=/=%'=ܗ=%= =>[O>>>9L>U>Ԧ<>ئg>֯>Ҽ>>\>>Ba>,>V)>W>%>d>>>v>R^=_=[1=^=[!=$<|<$<<^<4<1<d;;,;Q;;2;Y;C z;3);$;$;t;;$;5;F;l;;q;nj;8<a<-5 >A>g>>"6>%>*߁>/>1I>0l>*}>"7>>`>Y>z>%>=\|>P >`U>l}>t>z>p>/E>DO>YX>>>Vs>>Z>>>>~hx>v>ij>VF>:bB>>f== == ====uA=c_=U%F=F=:< =.=#=G=D= b>K8>>m> >лn>>O>zJ>y>u>b>K=?\e? #???? S>>>L>>b?> %z=ww=-=YS=!{>l>r> t>%]>+c>2œ>7>: >:v>8>3I>*O>#>#>+D>=$>PEc>bH>r>f>$/>>>:6>>> >P>ri>>K>q>>+k>>}je>h->M>&[>D=f=3i=U=S=B=w= =t3=`<=P=A'=4g=(,=?== o=1<8;I>w6>> >҆>C?? *? v? ? ?'?!?2?=C?z?;?I?,? U>M>Z>S>g> Z==>=Sς=q<:0<-<3>,>->#>,h>5>;?>@>Cr>D,>D0>BR>=>:>=ww>E>R3>b>u>^R>}><>Ў><>DZ>E>h)>j>>>>ZV>i>>>]`> >v>Z>6p>==4=ę4====e=l=X`=E=5=)=G=*=+F>l

>>ҭv>F?v??Ű?M?ud??U?i?h?7,?W??w~?to?i>t>ï]>i>a>===J=J'=Q<,`< 4>k>>'Z>3b@>;>BiW>FO>J(x>LK>MP>N>M>N>S>>[>gg>x>*>>8!>>->>{>5>~>\K>Q>s>ԓ>Ѯ>j>F>!+>\>>:>ajZ>=H=u=Ѻ==_=k=xP =_\=I#2]>b4>>>>? ^?? ?Y??0C?6??!?%?'O?)?'8?"??Ű>>><>O@==$=xG=?B&=EӐ>Dz>v!>(Z>5 4>=ܥ>Dl<>I>O[>Sl>W:(>Z>]>bH>i|>s>x>n>$5>>*>2>>S>?>>>f>>>:>=>9>x> >b>>>`>7Y> P2=rc=%=#K=E==6=ev=K=3L==dq=<\<ݫ>]>t>]>ȝ>? ڏ??6???0?"^?%y?*?/?2a?4Fw?3?-?$X??2>\=>1>Q'>$=ʨ=n=g=6L=Q<=VL>&">>'e>3f><>Dx>K2>S>Z>a>gܶ>n9>wd>>e>G>O>>q>g>>O>G>>_>>_f>>P>h7>>>>">) >N>g>y[>V>!ܚ=f=ܭ=V_==.=R=fe8=L=0w==s<<"Y|>Y~A> >p>>n? A?$r?d?? q?%h?)?-V2?3?:?Ao?D[?B`X?:?0x?#?a? ^>!>/&>aR==;=T=Xâ=.n = <<- >u&>>&>1>Eu>N>Y>c@G>mg{>x0>>U>2U>>0>>wq>>>ɨN>>7>A>=>Y>b#>>ŧ>>>>>>G>g>=N>=۩==]=2=~.=b?=F=+=<<ޘ<Ź<|<, >P>E>>>Zu?1?Z?>??$?)?/@?5?<:o?E#{?M?Qc?Q/9?JX?<%?,y??M>>g>>= ==o~=G =$= =W<<< h> >>>'U>3>?,>IC >U>a>oZ>}ƕ>S>ڤ>P>>B>=>>2>s>>J>>>n>>X>>ڏp>A6>>ۅ>|>}5>,>'>n>GV> =ܳ=WW===ti=Xޝ=;=!Au= < >E!>~>g> >?}?%?@? Q?(K?.+?5ȣ?=[?EL?M?Sԑ?Xk?YNy?U?I?4?$?&? l>о>>H==b=|6\=U4=35== =&<mj>> <>$v$>0M ><6>F>Rj>_>n~I>2>}>u>>e>>>>>*>>V>n>F>> >,e>E>>ݗ'>Ϫ>2>bj>>V>>pDy>GC>O=ΐ=h = ==gO=J;=,f=>@$>xG>>mV> ?L???"/?,&?5T??=?H?P^?U`K?Y;?]D?_aF?\3?R?=l?)N(?? >/>">d =t=T=Ը=W=7== =*)>>">2;>?K$>Ik>TK,>_>o>4>K>A>r>>|>E0>R5>J>>>$>.(>*??d?|E>b>0>>D>>1>}>` >5>m>Ar>DO=;=f=T=z#=X=7l==76=_Lz=y===G=v8>H>G >yB>>> V?n?).?l?#6?.?:b?F\?P?X?]?a?cp?d'N?aF?XI?E)?,T?Ο?>:0>6>x5>=M=-=R=1== h=<<< <0?== ;==*=7o=Ce=K{=MĔ=J=B=6=)== h<<J>>>1V\>B>O>Z>d>r>=>>>9>>>y>jy>%>>>A>?*?\?/??>l>)>D!>w>]I>>>] >g >4L=C=7=ۥ=( =hw=E=$= ' >K{>'>>>٧?\??[?#?/%?i@>|>~>4=d|=2=Jn+=%=;=&=Y|=r{={=g=#=͓=bV> #:>"s>@d>RA>_>l>zR>1>>ي>>#>=T>>A>ܒU>e>?7?:??n:?d?P?k}>> >>>g>{ >>g>[>=l==;=}=TMl=-NS=6< >O@>>@+>.>ҽ?i?O?s?#v?.?;?HG?Q~?W?^4?d?g?hOa?e?]?I?-L??.>{>>uA>;=K=uu=>A=fa=DL<%<ƄH>0h>N0>a>s{g>>>@>>q>j>O>ܭ>>i>>"?{?"? w? q? ? ֊?>>>>m^>3>\>>x<>K> =r^=3=6=g=9=!<䀹<Ľ-<5<;+q;=_;Rʰ;}!;;s;D;2q;u<E<\<(6:<;T>[hj>h>>8>4??{?7?%?0?<?G?PIR?UF?[F ?`7?c?c'?a ?X0\?Df ?*%?[? ֠>n.>>\f}===e*p=-B=X9<92<<8<>?De>\,>sI>>>j>M>I>LD>>a>>>4?[?-? ? !? 7? S? }??M>(>X>ӟ+><>W>>>0e>d>+==p=>=M=S="9;;;jf;=_;q;:8:x:̛:Ľ-:=:_:_:]::̛:zd::8;h;e;*Q;E;w;;B;;<X<P;>r>q>s>>? q??H?&?3?@"?G?MO?R?Wg ?\?^?]?X?M$>U>+R-=Ň=`=L=<< 7'>!d>L>j S>/>>:9>?>@> >I>7>힑>j??N?l? k? ? U? ? ,?#?>7>W>YA>>bZ>q>D>qG=Ң8===ga =7= b<0<Sl>b]>HV>:>>{b?J?Yp?k?-?'"?3?B?J?M=?M^?P ?T?W~+?Vr?Ok?='?+m?;?X>>>x9>=K=p_t=.c>9j>\K>z%>>{>>>ƅ>a>>Q|>?5?? }}? ? g? +? ? ?߆>NJ>X>T>>ժ>tr>HU> ;===r=s@=Gԡ=<<6:9\>>s>.o?#"? 9?,?c???'?2 ???I}?MRx?KT?H?Ik?KO?Iu'?@b?1?$?? lx>W:>>SH=˨=.=NB~=<9<>8K!>Ur>o>$>>R>!6>ǒM>ϭ>K>?{??@? ? ? +? 4?{(?*>;U>ꕺ>ۏ>4>>xM>H> =ԧ=̏=/ =s=J=<|_SXW>>;E? ??E?#uA?$?%?(?+s?2L?:?D ?I?HT;?D?@?=5?8g?1\?(@?A??> >,>Z=V=tr=*6&">4F>O{>b>t>r>Z~>>6>g>ض$>>-2?2d?\?? )? ? w?W?g>>>Ě>>->%>M> ́=Ml=?=h=k@=Cyg=b<<<<ɝ<<<;G;q8;"s?:::̛:V:h:\X:H:-![:V: '9U9]9`9X9d$999h9{m9{m9h999X9)99U:h:&":*:J\/:y:DW:;ƺ;?;m;_^;K<)V>F>?{?$Ɔ?@6?V=T?Aұ?Bb?@?;?6h?0w4?) ? ?\?a>>>p=5^='l=Q= x< >;O>[hj>qT>>f >>2>O>k>;>Y'>K>|7?2?z? .x? +?k?c?>>>)>">)>j>->}=e=c==f%=:=<*>Q>z??-;6?_\?lH=?o9x?nlL?k&?c5?Sd?D?=v?; ?;?:?6?1%?,K?$5?j?L?>ß>3>S@==8k=2[<<8<-H;[;';m;5;o;::t::T9:4l:::4l:;I;X9; ;;t;$;;t;o; ;;;;)Q:::i:x:̛:_^:b:V:V:::6;;+q;Y;U ;nj< ۙi>U]|>x>>> >:d>>K>>O>>t>?~G????Q>>A>S>ۙ>T>>>d>}>T>A=%|=iF=;[=%|P>zR>/? Ul?%?_l?o?w v?y?v?o?i8?\X?K?> ?7S?4?1-T?,?'*? #??4l>>V>y>0=S+=u =qO<5Ƹ>R>.u>>w>F>>>Y>>_>>>rl??zm?E?>e>f>>Ԯ>į>v>5>V>uZR>I>M=]==7Q= <ہ&3b@>'>?N?B3`?lnw?w$q?~??y?qAl?j:?\N?J,?:=?2c ?,ҩ?'s?!D???.e>g(>H>q>==a= K<<7w;4;IH:8:V:wT9:L:E:A]:<ޒ:C`:C`:C`:C`:C`:<ޒ:<ޒ:::<ޒ:<ޒ:A]:<ޒ:::-![:: :h9֜9]9b9d$9h9{m9h999d$9X9b9)9]9U::$:C`:wT9:d$:;;v4l;<nD>q>C5>>>>>ݘG>,>h># >>F>u?4?">>r>>?>Q>> >->j>8Č>==VZ=2=fe8< <V,W>>.??U]?o=?y?P?~)?vL?nuK?fq?R)??\?2{?*Y?"M?@h?ӫ??>z>>l==2Z=M<<$<=; ;ƺ:'::: 9T99U9U9U99T9:)Q:h:)Q9T9999U9U9U9U9֜99]9b99W9!X8m8֜8֜8֜8֜8֜8֜8֜8֜8֜8m9!X9W9{m9X9: ':-![:Ze:&":֜;-B; ;->>A>>מ6>>/>e>N>&>>7>t>I>>ل>U>>E >Ͳ>B>->">]>&<=mD=,O=?=R=\ =/i=|2<=< f;K|;>;Rʰ;o::':C`: gS9`9W8m8֜8֜88X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8888888֜8֜8֜8֜8֜8֜8m9Nc99c:&":L:&":4l;>E; <cY>H?J{?A ?TO?m?uf ?x?v;?o+?hЫ?Q?8z?,c?%h?~? S?R?k>%I> =>>3 ="==2a#l>G>]>2>B>?D?@_??(F>>>>>*j>Tx>z.>o:>>ps>Gj>=Y=u4=G9=w)=L=!eo<<<0;;u;.;:::H: 9)9W8m8֜8֜88X8X8X88{m8W8W8W8{m8{m88X8X8X8X8X8X8X8X8X8X8X8X8)888֜8֜8֜8֜8֜99W9`::A]::;3PC;e<`aR>>?}???h?m?n ?k?crN?Ca?+?!?.?j??1>f>Z>d>V,W=t==_`=<^ m>qv>> >> ?D?H>?Ow>U>U>>0>k>œ>>Jk>i>0_=&=C='==i=>B=4O>>ۺ|?g?$eG?@?T?T?A?+??ŝ? ?15?>ߔm>Y>>gZ>=d={t=-8<:}<4?<ѩ; ;q:gS:V9{m8֜8֜8֜88888֜8֜8֜8֜8֜8֜8֜8֜8֜8֜8֜8֜8֜8֜8֜8֜888X8X8X88{m8W8W8W8{m88X8X8X8X88֜8֜8֜8֜99{m9]:V:pk:;K{;+<30N>{>8>K>>}> >> >Ԯ>ub>>j>Ɛ>iY>1&=H=A.=G=}=V=.e"= 0#<>dD>o>?}?r?!?E?2?B?Ƹ>9>>>+>->h>9f=i=\=?1<-]< `>m>V>h>ڻ> S>&>T(>>>ܗ>M>c>- ===fa=o ==g=fa<<<Qk> y>Fz>b>N? >4>K>˺>>H>>y>E==iT=s=Gz=<

l}>>>U>>J>9>>[">=x=E=z=r=== <԰[N>J>*|>t>R>_*>>d>_,>1><=̩F==h=Hm= ɝ<| >I1#>h+h>v/>t`>c>C̘>?=h=L==C=qIK=@=l<Ӣ<>?Q>Nf>G>*>=l==<==_k=/=<->p==$=H7=yP=d=6Ӥ= p<Ո4<&<

;::<ޒ9U9{m8m8֜8֜8X8X8X88{m8W77777883)8W8W8W8W8W8W83)8777777788W8W8{m88X8X8X8X88֜8֜99::L:];3PC;<<]Tp>==4=L==j]=+;<㹱<`E<-![; ;V::Ze:9d$98֜8֜88X8X8X88W8W777778W8W8W8{m8{m8{m8{m8{m8{m8{m8W8W8W8W8W83)83)83)8W8W8W8{m88X8X8X88֜8֜99d$::Nc:=;$";<8k>*>G>Nf>?Q>= =|=+F=pa=?K$= <¤<<;;_(;::C`9998֜8֜8֜88X8X8X8X8X88{m8{m8W8W8W87777777788W8W8{m888X8X8X8X8X8X888֜9*9d$: ':L:;;L;X;x<e?>C̘>c>t`>v/>h+h>I1#> =PN=-=d= <³<>1>_,>d>>_*>R>t>*|>J>N=Z=̕=d=g=,I>[">>9>J>>U>>>l}>E>y>>H>>˺>K>4? >N>b>Fz> y>Qk=˴==/m=H~= <- >c>M>ܗ>>>T(>&> S>ڻ>h>V>m> `==zŝ=&~<9f>h>->+>>>9?Ƹ?B?2?E?!?r?}>>o>dD>#<=̠H==]=v<1&>iY>Ɛ>j>>ub>Ԯ> >> >}>>K>8>{>N=ᴍ=G=P=>gZ>>Y>ߔm??15? ?ŝ??+?A?T?T?@?$eG?g>ۺ|>>O=d@=Ë=h = <B=i=='=C=&>0_>i>Jk>>œ>k>0>>U>U?Ow?H>?D> >> >>qv> m==r ="4J<ˍV,W>d>Z>f?1??j?.?!?+?Ca?crN?k?n ?m?h???}>>>aR===jv=<Ȭ{>Gj>ps>>o:>z.>Tx>*j>>>>?(F??@_?D>>B>2>]>G>#l=u:=O==t<<<<&z;;Rʰ:2::L:$9U9`9{m9*8m8֜8֜8֜8֜8֜88X8X8X8X8X88֜8֜8֜8֜99*9W9`49{m9{m9{m9h9h9gS9gS9gS9gS9h9{m9{m9`49W9W9W9W9h9Z:H:;}!;!3 >> =>%I?k?R? S?~?%h?,c?8z?Q?hЫ?o+?v;?x?uf ?m?TO?A ?J{>H>cY==Ո=d{=Ә<ī0E:4l:&":L:&"9c99Nc8m8֜8֜8֜8֜8֜8֜8888888X8X8X8X8X8X8X8X8X8X8X8X8X8X8X8X88֜8֜8m9W9`: gS:C`:':;o;Rʰ;>;K|< f<==|2=/i=\ =R=?=,O=mD>&<>]>">->B>Ͳ>E >>U>ل>>I>t>>7>&>N>e>/>>מ6>>A>>-=5= =T_= B<l>>z???ӫ?@h?"M?*Y?2{??\?R)?fq?nuK?vL?~)?P?y?o=?U]?>.>>V,W=k==Yz=<|I>8Č>j>-> >>Q>?>>r>?"?4>u>F>># >h>,>ݘG>>>>>C5>q>D=ϳ===_o=<>q>H>g(?.e???!D?'s?,ҩ?2c ?:=?J,?\N?j:?qAl?y??~?w$q?lnw?B3`?N>>'>3b@==:=IC= oM>I>uZR>V>5>v>į>Ԯ>>f>e??E?zm?>rl>>>_>>Y>>>F>w>>.u>R>Ƹ===`U=7,0>y>V>?4l?? #?'*?,?1-T?4?7S?> ?K?\X?i8?o?v?y?w v?o?_l?%? Ul>/>zR>P==}D,=7$= )<6A>T>}>d>>>T>ۙ>S>A>?Q????~G>>t>>O>>K>>:d> >>>x>U]|>i=)x='%=E=XW=tS@>3>ß??L?j?$5?,K?1%?6?:?;?; ?=v?D?Sd?c5?k&?nlL?o9x?lH=?_\?-;6?>z>Q><*=~==b=&~<{<<}>->j>)>">)>>??c?k? +? .x?z?2>|7>K>Y'>;>k>O>2>>f >>qT>[hj>;O>=ǁ=N==}M*=IB=y<۷p>>?a?\? ?) ?0w4?6h?;?@?Bb?Aұ?>=T?9&?8?>F>V=T3=1h=~?=G =<<- ́>M>%>->>Ě>>?g?W? w? ? )??\?2d>-2>>ض$>g>6>>Z~>r>t>b>O{>4F>&"=[=2=M=:=j=cԬ=8)g=ϹZ>,> ???A?(@?1\?8g?=5?@?D?HT;?I?D ?:?2L?+s?(?%?$?#uA?E?? >;E>>SXW=C=%=A=Yw=,I=K >H>xM>>4>ۏ>ꕺ>;U?*?{(? 4? +? ? ?@??{>>K>ϭ>ǒM>!6>R>>$>o>Ur>8K!>=l=ۻ=U==F=+=mk=M=)=<ٛ|<_SH>>W:? lx??$?1?@b?Iu'?KO?Ik?H?KT?MRx?I}???2 ?'???c?,? 9?#">.o>s>>9\==H=+=`-R=7=<3! ;>HU>tr>ժ>>T>X>NJ?߆? ? ? +? g? ? }}??5>>Q|>>a>ƅ>>>{>>z%>\K>9j>c=R= ==]h==7=m}=U.=8C=6=٪>x9>>?X?;?+m?='?Ok?Vr?W~+?T?P ?M^?M=?J?B?3?'"?-?k?Yp?J>{b>>:>HV>b]>Sl===J=_`=;%=e= <<#qG>D>q>bZ>>YA>W>7??#? ,? ? U? ? k?l?N?>j>힑>7>I> >@>?>:9>>/>j S>L>!d>'=ޝ= ===mj=l =X*=A=,[~==@<<+R->U>$?Q?q?%n?7U}?M>>s>q>r>;===R=E=_g=;==P<=p=>+>d>0e>>>W><>ӟ+>X>(?M? }?? S? 7? !? ?-?[>4>>>a>>LD>I>M>j>>>sI>\,>?De>======t=^=J/7=6=$=&"=I<\f}>>n.? ֠?[?*%?Df ?X0\?a ?c'?c?`7?[F ?UF?PIR?G?<?0?%?7?{?>4>8>>h>[hj>T=盁='*=W=o=d=?]!= W=4<鎩<Ⱦx<;V;U; ; ; ; ; ;;#;&s;=_;[;G;;;Wh< '<& >K>x<>>\>3>m^>>>?? ֊? ? q? w?"?{>">>i>>ܭ>O>j>q>>@>>>s{g>a>N0>0h>H=uK=΅==:=4=o=XN=BP=1"= =EI=ЫA=uu=K>;>uA>>{?.??-L?I?]?e?hOa?g?d?^4?W?Q~?HG?;?.?#v?s?O?i>ҽ>.>@+>>O@> =9====m=IF=':f= E>[>g>>{ >g>>> >?k}?P?d?n:??:?7>>e>ܒU>A>>=T>#>>ي>>1>zR>l>_>RA>@d>"s> #:=bV=͓=#=g={=r{=Y|=B>=0=!Jt=r=+<<<4>~>|>i@? ?+?.]C?H?[?e?hm?h%9?e?`?Y}!?R0?I-4?٧>>>'>K{> ==N=<==uS=U)=2^=e< V>>>yB>G >H=v8=G===y=_Lz=>6= =E<`<0)<0<<rDO>Ar>m>5>` >}>1>>D>>0>b?|E?d?>*>.(>$>>>J>R5>E0>|>>r>A>K>4>o>_>TK,>Ik>?K$>2;>">>)=x=2= =C== |=g4=PC#=;%=+Ԗ=z== e=.<4l<<d >">/? ??)N(?=l?R?\3?_aF?]D?Y;?U`K?P^?H??=?5T?,&?"/???L> >mV>>xG>@$>=====zY=bQ=Hy=+z=DO>GC>pDy>>V>>bj>2>Ϫ>ݗ'>>E>,e> >>F>n>V>>*>>>>>e>>u>}>2>n~I>_>Rj>F><6>0M >$v$> <>>mj==@=U=`===pl=Yw=CU=3L=%==%|==/<W<H>>о? l?&?$?4?I?U?YNy?Xk?Sԑ?M?EL?=[?5ȣ?.+?(K? Q?@?%?}>> >g>~>E!>=2====vFi=`4=JS0=0 =n >GV>n>'>,>}5>|>ۅ>>A6>ڏp>>X>>n>>>J>>s>2>>=>B>>P>ڤ>S>}ƕ>oZ>a>U>IC >?,>3>'U>>> > h==A9=L==ж==zG=b6=NK|=;@=,v=[="= =<>>g>?M??,y?<%?JX?Q/9?Qc?M?E#{?<:o?5?/@?)?$??>?Z?1>Zu>>>E>P> =V=E==E=phs=]9=F=/==[<ݮ>=N>g>G>>>>>>ŧ>>b#>Y>=>A>7>>ɨN>>>wq>>0>>2U>U>>x0>mg{>c@G>Y>N>Eu>1>&>>u&> ===ر=H=t===M=l12=X3=CZ=2Y=$===Jh<8<:}aR>/&>!? ^?a?#?0x?:?B`X?D[?Ao?:?3?-V2?)?%h? q??d?$r? A>n>>p> >Y~A>|====N=nC=X՟=A=-]=P8=<2$<"Y<4L<1<1|<5<=J!ܚ>V>y[>g>N>) >">>>>h7>P>>_f>_>>>G>O>>g>q>>O>G>e>>wd>n9>gܶ>a>Z>S>K2>Dx><>3f>'e>>&">VL=R==d=I:=V =y[= =m=uz=`:=L=7o=(~-=L==<[<<]$>Q'>1>\=?2??$X?-?3?4Fw?2a?/?*?%y?"^?0???6?? ڏ>>ȝ>]>t>]>=c=F=A=t=sR=Yo=@+=*="=<W< P2>7Y>`>>>b> >x>9>=>:>>>f>>>?>S>>2>*>>$5>n>x>s>i|>bH>]>Z>W:(>Sl>O[>I>Dl<>=ܥ>5 4>(Z>v!>Dz>Ӑ=w=^=$=nj=h=Z=?=C=~=g=Q=;=*6== =VI<<ϡ@O@><>>?Ű??"?'8?)?'O?%?!??6?0C??Y? ?? ^>>>>>b4>#2]=W=.===}=`-R=DJ=+V=w=7!<ݜ<4U>ajZ>:>>\>!+>F>j>Ѯ>ԓ>s>Q>\K>~>5>{>>->>8!>>*>x>gg>[>S>>N>M>N>MP>LK>J(x>FO>BiW>;>3b@>'Z>>k> 4==*= =ǵ'=z=R=a=z==jk=TW=<=)=I=<̬=>a>i>ï]>t?i?to?w~??W?7,?h?i?U??ud?M?Ű??v>F>ҭv>>>l

+F=(=O=n ===ga =KX=.=s=<<<<>6p>Z>v> >]`>>>i>ZV>>>>j>h)>E>DZ><>Ў><>}>^R>u>b>R3>E>=ww>:>=>BR>D0>D,>Cr>@>;?>5>,h>#>->,>3==3=D=¤=====> Z>g>S>Z>M? U?,?I?;?z?=C?2?!?'? ? ? v? *?>C>҆> >>w6>;I=.=kI==q={=nC=Q=33==[<D>&[>M>h->}je>>+k>>q>K>>ri>P> >>>:6>>>$/>f>r>bH>PEc>=$>+D>#>#>*O>3I>8>:v>: >7>2œ>+c>%]> t>r>l>==!=#=D=@6=H=v!=I#=DL=f%=Ni=4== h<̬ %z>b?>>L>>? S???? #?\e>K=>b>u>y>zJ>O>>лn> >m>>K8> b==r=!==s=V=7$=_R=nbf>>:bB>VF>ij>v>~hx>>>>Z>>Vs>>>YX>DO>/E>p>z>t>l}>`U>P >=\|>%>z>Y>`>>"7>*}>0l>1I>/>*߁>%>"6>>g>A> ==X====Ce=b=5=w$=_g=E2=,==<%R^>v>>>d>%>W>V)>,>Ba>>\>>Ҽ>֯>ئg>Ԧ<>U>9L>>>[O>=N===ƺ=yB=\s=;=q=u>Y>?H>S"a>_>g>lU+>oS>r>u>u6>v >wl>xZ>y>{>{<>yW>dGX>\>P{Y>?ߊ>',>f> >c>;>8>@>!>)M >- >,>([>%*>">!>>> i====Օ=}=4==3=_=k==TVj=8qZ= = m<4<Ƅ<<;<<`4<;<<`;ps;j;;;S~;:;$";V; ;; ;U;;+q;?,;V;;U ;;c;<E<2c<_(<8<2a>r>c>k>>G>W >i>>#>y>>>##>>L>|>H>.>>h >2=?=S0=;=%=m=cV=C{=#= < ">G<>4>DL>NE>U(>[2t>_>b)x>cˮ>dPW>dPW>e>g>ia>j;>h>W>>Nfw>A۰>-8!> k>=b>a>>{>xa>&>->/>.(l>*>(]>&rJ>"->U>>=|=?=XO=C==Y=vT=^=D/=+==MJ< e>M>zb>>8L>>>H>;>`>,>>\>>s>*>`J>b4>>o>D$> d====s=m-=N=,s=5=w===Փ=o#=~=+>>%>>(>7r>B>Jt>O>R8>SJ>SƄ>UO>X^t>[>\j>[>K>B>2S>>Ҟ>=$=#=> >>>'{>2 =>6Z9>6j>5ya>2>.>&>7>V>VI=ç==h\=b===h\=O5=5}=v!=>O@>o?>>>k>l>V>>l>>O>>>>>@M>>m*>J>Z+={==T=ӓ=u}=X=5=n<4lۗ> '>\>!>0n>9#>>ڸ>A>C>F>Jr>O7>R1>P>B>7>&>f> >== =]>:>f >>)>6`>>"Y>=Q>>:GG>4<>*?>>] = d==Ȱ==;==w0?=]B=A=)=(<1<<n<2Z<{<\X<; < < y;;R>;Q;;.{;w;NK|;:;(@;;;V;U;V; Ë;/`;@=;Xi;2;;![;ƴ;< <2xi&$>B>Yw>h>rB>yK>~j>O>e>>H>Q>e>}>t>b>F>==U=K==z}=^׎=>Z==D<~> :[>ϼ>>&C>,>1F>7>?K$>E@>Hn>H>:>/:> >g> ۙ>=#=n=>1Z>>s>*VZ>7w>>>A>A:>>A>8.>+>> UV=e=ۻ=p=%=w=A=m=S|=7y=.= ȧ>!>6:>B>K>Rp>X>^C)>d.>hN>i>gg>`\>R>8>=T3====z5=_`=B=%K=<0<<="B= ==!}=-E=:=K =\ =l5=~=n=L="=i==ө=\==ݏI=|=> >v>X>>"A>)u>4Y><>@b>@>20v>(>>S> Y>gP===>>O>I>>(/{>4U>@>A>>ڸ>6\>'>>p==u=====gO=M=0=P8=:<׵<3E;8D;5;6;:;A];L;_g;}!;:;$;I;;R>;R<*N<0<[9<<^<{b=V=2Kq=V=w/= ======f>p> ?->>i>#o>/>E>H>Fx>;L>!~*>qG=d@=Tu== =un=[f*=?=%= =<\<<A> >>3>U >(m>1>6Q;>6E>+">&@>P>Iy>> f>H>u!>[>MP>>Rz>&>/F>6y>; ><>9>/ >b>z==(=˭s=Y=]==~?=b?=F=*=Ž<.<¤< <4?R> >q>>>> =1=ى== =k-=m=R=7w= އ= k1> >>>>$]>)>+>'>'>#>;>Bg>>3>d> >OC> r>$_>'G>*>/H:>2>3>/Q8>#T>_>W=={ =={K=?=k=w9>=]=>6=#T=====FX=C=6==f8@=H7=-E=U =]E=w=!Au=0Ѵ=Aұ=UR>=fS;=x==%==4==== = =r=>~>!> x>b>>r>$d'>&{H>*'">)J>$>!U>o>0> >)8>2(>51>2Q>/%>-G>,%>,B>*>$.1>> 5="o===gd=`=%=/m=nӺ=TN=5==W<>VL> LX>+>>Յ> e>'k>.r>1>/>->-F>2ԙ>;>DL>Hm>Hn>D><ޒ>5 >0>-]>'>$>/ >=N=:%=?==~z=Z(=|G=b=G=* = ;;<MJ< ۙ< <+)=7z==<8<<< ^<q<)V<8_^>)>2R> :[>l>N>W>)>3>: >< >?6>B>H>P >Wp>Z?>Xe3>QX>H{>@e>9>3f>+>q>=u=ps=Ŵ=n=8$=I==mk=UR>=7=Ә=<վ+<>*>2U>> Y>1~>@A>I>Qw->XN>^L>fe8>m(>qV>po1>j>a>W>NE>G>CN>;C>)V>Z+==ؖ=iT===2O=f8@=MĔ=2~=]c<`<ѼFR >> >6>!l.>5Y>E`>O>Y >`>h>p>v>x7>v>os^>e>[O>RP>K>G>@>.Ñ>~=p=i=R3=W=5=s=Y/=aM=GV=Mߏ=Q=S?=R(=NK|=F=:< =*=0k=<92 >> >>",>9M>IL>U(>_B>g>pT6>x>}Q>~7>zT>sח>i>_B>VkL>O1>J#>BR>/p>Ȫ=#==L==/m=g=KX=->=8<<<p<E;"s?;:k::V:R:pk:L:C`:8_^:-![:(':(':(':(':*:-![:3):<ޒ:E:Nc:pk:':A(:;X9;!Sr;?;g;m;;;;A;k<8k<<$<:N> >8>$]>=-D>M͓>[|>eC,>n6V>w>}ؒ>$>>y#>z]>qh>fk>\h>UD>Mhd>B>+>==Lt====]=<==nb<< %w> 4>I&>&}>BB>R4>_>j> >s>|>m>j>W>>4>| >q9>fp>\xz>Q>A}A>% > k= ==P=^=tE=P=.=U< <Ȭ{< <,O> >Q>- >I>Y>e>p>y>>*>=>>.x>>">}>qV>cV>S>>G>ob>dl=(.=ww=e=f[=f(=A= <=ec<<<%'>u&>!>7u>V>c{>os^>xo>ie>LU>>>?>< >>>>zU1>i^>VI>;e>Q=3=C#==}0=~=Y&=3b@=<<ʒ%<0<EE;Q;ou;Ы;;]c;;B;;ȵ;;_;;ޘ;<< <-EU;P>> e>4>F9*>e>s<>~j>:> >k->%R>] >f>>] >>>>»>mh>X >7e> X=\=P=$=ӓ=n=J\/='m= 0c>>"FG>6&>Gs>W[>x}>>:>>p*> >?>C\>>`E>>>ڡ>o>oo>W>3>j=ҽ=h\=VT=ED=`:=;==;N<^<-<D>>!u,>6i>HPK>YQI>h>>>>P>3>o>V>z>I>u>>4>O>[M>m>V[>.n >r<=hg=r=X=x=UI?=0=EI<<³<<~ l}>0l>E>Wŏ>i]2>{*>P>>]>>fd>Tg>hQ>mK>(>o>&J>P>>}"r>l!t>Tx$>(V==Ͳ=; =i=nU=JS0='Ce= <*< <E<D<@;x;w;[;x;Rʰ;6;;:T9::\/:_^:`:`::̛:7:T9;;V;&b;8_^;C`;Q;`HM;w;;X9; ;;;X;I;;ņ;;v<><O< <\<D>&*W>?a>R6>f!>z(9>[>>.>&>>X>/>>_>g>}>h>|]>pO>{>j>R>$s== ==n=eWh=?==2;,u;<ޒ;G;SZ;c;wT9;»;R;gS;;;U ;X;u;;5;zd;;Mw;#<1<<<<<`<<m;z;;;ޘ;S;;u;|;{m;C`;d$;:zd:::`4:J\/:::&b:V: :h99U99]9)9b9X99h9{m9W9W9*9!X98m8m8֜8֜8֜8֜8֜8֜8֜8֜8m993)9{m9X9:h:V:8_^:L:y:U::;;;+q;F;u;NH; ;l;92;y< <<,m{>Q>5*>K>` >uy>r>C>2>b>0>Τ>F>?>R>$>>$7>2>͡>b>z">h)(>N7@>>>==f=7=W=^#=61=Ȫ v>$>C>Y4>nA>>>4>>8>/>B >V>|>>0>Q >3>>->'>y>e>HPK>Kf==d=C=|:=TS=-3X= 8<[<<#~>39>P>g>~>f>>\>> >k>r(>>@>C>BH>>>o8>>y>w >`>@xo>=ނ=)=O@=s=K=#=*<<`E;Fl;M;V*;]x;kP;z#;;X9;^;;l}; ; ;; ;L;n;,;{m;]x;K{;?;4p;$";V;:T9::}:V::nU:J\/:6:: :h9U99]9`9X9d$99h9{m9r9`49W9W9Nc9*9*9!X9!X99998m8m8m8m8m8m999!X9*9W9{m99)9֜::$:<ޒ:L:u::$:]:ޘ:4l;;V;(@;=_;X;`;L;;Um;<MJ<*N<'Mn>C>_t>x Y>dn>>.>>>F>>s>;>>d>>@>>>p>>sI>Z>4>H{=@A=N= =l5=@=p<9;(@;20v;:;?;E;K{;Rʰ;ZL;d7;q8;|:;;X9;G;m;;;z;^;IH;:;(@;t; ;:8:x::![:E::pk:L:A]:(':&":9U9c9]9`9b9d$99{m9{m9i֜9W9W9W9Nc9Nc9*9*9*9*9!X9!X9!X9!X9!X9!X9!X9!X9!X9!X9!X9*9*9Nc9W9r9h9X9]9U: ::<ޒ:L:pk::V:_^:zd:6;I; ;$;/`;D-G;h&;G;j;j;՚1;< ?-D>,c>Uz>rB>>>)>>>.>>ɨN>s%>>½>bm>F>>>>X>>>oV#>RL>&%==a===f%=:=S<ӺE; Ë;:::_:&:e:G:':'::::=:՚1:6:;;;t;"s?;*;0;8_^;=_;@=;D-;IH;OkI;U K;[92;_(;`HM;_g;Y;Nc;C`;7?;$";;::߸g:::&"::y:`4:L:C`:-![:V: 9T99֜99)9b9X99h9{m9i֜9`49W9W9Nc9Nc9<ޒ9<ޒ93)9*9*9<ޒ9<ޒ9E9Nc9Nc9Nc9Nc9Nc9Nc9W9W9W9W9`49i֜9{m9h9d$9`99: :$":<ޒ:L:pk::::̛:Wh:T9;;;$;;;Rʰ;;;6;Γp;8< fI>FK'>h>>><>>p>٘>a>5><>>0>@>>4>(>x>> 1>ݮ>j>IW]>N=@=v==C=c=6Ӥ=%|<<@<<_G;4p;J\/;{m;I;;;8< ?-<$"3>08>\>~">>=>U>>>r*>=>w>Qq>ا>`>u>.>`>>Y>v)>&>>->d >>Z>_=p=="==`2=41= p>MX>rK>n>>u>#> 7> >˹>>,>>ު>>>ͅ>œ>k>p8>j>g>U)>[?>+>=ۓ#=z=q==]=0Ѵ= N<ݜ J>=L>dE>c>uy> >>>>;>(>>T0>t>->ߡ>׭>t>q>CC>O >>n>s>KO>=qq=͗=>==~=V=+M=0<?<$<;Z;aY;w;>;|:;D-G;"s?;::zd::V:':h:u:`4:\X:U1:\X:eWh:u:)Q:: :V:![:_:̛:ֹ:::k::4l:T9::::T9::6::zd:}:![:::wT9:SZ:C`:(':V: 9m9U9c99ޒ9`99X9d$999{m9{m9i֜9`49W9W9W9W9W9W9`49{m9{m99d$9X9`9)9_^9]9]9999c9c9c9c9c9c9c9c9c9c9֜9U:h: :V:(':A]:L:`4:)Q:':#:_^:zd:i:2; ; 3;:;Xi;R;3;j;?<7<<0\#l>VW>x>>F>#>}f>n>/>ș>֗$>>y>>>>ث>_>M>*>>> A>a>1>G=G= =v=ԋ=r=Ka=!e=DL >@>g3>RG>>uW>Qc> >?n>j*>>:*>p>>|>p>a>/>os>7>><>&>rB>Jw*>t==a=c== =dm=<=a<<|I< _R>Qe0>u$\>RJ><>b=>6j>>>׋> >>^><>=>Zx>>H>أ>>~*>V>>^p>0 >WA=jW=+===x=T[=,=sJ=b=V===l>K]>.>\>)>>S>_> >}>>O>yM>~>|>>#>{>H">ͱx>A>\>Q>2>q|>M;l>==&8= = ==e3n=?x=L<&<Ȭ{<5<{E;i֜;NH;;;< <e<, -0>?6>f8@>^R><>K>|>ǟ>Օ>>>>/king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rama8000/transpro.ndft0000644000000000000000000037516711744305674026151 0ustar rootroottrans Pro, 70%, B<3044C4C4<7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U8=7U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U8=8=8=8=8888848U848888=7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7U8=8=8=8|U8888888888888=8=8=8=8888|U8=7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U8=8|U8888U8U8U8U94949494949494948U8U8U88=7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U8=8=888888U8U8U8U8U8U8U8U8U8U8U8U8U8U8U8U8U8U88U8U8U8U888|U8=7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U8=8=888U8U8U8U94999-9-9-9=9=9=9=9-9-9-99948U8U88=7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U8=8|U888U8U8U8U8U94949494949494999999999949494949994948U8U8U88|U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U8=88U8U8U949499-9-9=9=9=9]49]49]49]49]49]49]49Mg9=9=9=9-9948U8U87U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U8=8=888U8U9494999999-9-9-9-9-9-9=9=9=9=9=9=9=9=9=9=9-9-9-9=9=9=9-99948U8U88=7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U888U8U94999-9=9=9]49]49]49|U9M999949M9|U9mo9]49]49]49Mg9=9=9948U8U8|U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U8=8=8=8|U88888U8U949499-9-9=9=9=9=9=9=9=9=9=9=9Mg9]49]49]49]49]49]49]49]49]49]49Mg9=9=9]49]49Mg9=9=9=9-9948U887U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U88U8U9499-9=9=9]49]49|U999h9h9M9M9M9M99h9h9999M9mo9]49]49=9=9948U88=7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U8=8=88888U8U8U8U8U8U8U8U94999=9=9=9]49]49]49]49]49]49]49]49]49]49]49mo9mo9|U9M9M9499949M9M9|U9mo9]49949mo9]49]49Mg9=9=9-948U8U88=7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U8=88U8U9499=9=9]49mo999M99g94949494949494949g9Ł29M99h999M9]49]49=9-98U848|U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U8=8=888U8U8U8U8U94949494949494999-9=9=9]49]49]49mo9M949999999999h9h9h9M9M9M9M9M99h9h999M9h99949mo9]49]49=9-9948U8U88=7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U8=88U9499-9=9]49|U99h9Ł2949499:M:'I::::'I:M9U9o9494949g99999|U9]49=9=9948U88=7U7U7U7U7U7U7U7U8=8=8=888888U8U8U9494949999-9-9-9-9-9-9-9=9=9]49]49mo94999h9h9h99M9M9M99Ł29g9g94949494949494949494949g9Ł294949Ł29M9h999mo9]49Mg9=9-98U8U888=7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U7U888U9499=9]49]499h9Ł2949:Zd: :%h:A:Mg:QZ:]4:]4:]4:QZ:Itk:5M:::M99494949Ł29999]49]49=9-948U8888|U8|U8|U888888U8U8U8U8U8U9494999-9-9=9=9=9=9=9=9=9=9=9Mg9]49]49|U999h9M99Ł29g9N9494949494999U:M:4:: : : : : :: @:Zd9o94:Zd994949g9M9h99M9]49]49=9-9948U8U888=7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U7U7U8=888U9499-9=9]49M99949:M::Itk:]4:p:M:@:'I: ::'I:'I:@:|U:e:QZ:=::'I:Zd9949N99h99mo9]49=9-9948U8U8U8U8U8U8U8U8U949494949999-9-9=9=9=9Mg9]49]49]49]49]49]49]49]49]49]49499h9M9Ł2949494949999U:M::::1:Itk:Itk:QZ:]4:a':a':a':a':]4:UN:Itk:5M:::1: :M994949Ł29M999mo9]49=9=994948U8U888=7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U7U8=8=8888U8U9499=9Mg9]499h9g94:Zd::Itk:a':M:'I::M:n:Z:AQ:::G:g::w::@:p:]4:Itk:::Zd9949g9M99M9]49Mg9=9-9949494949999-9-9=9=9=9=9=9=9=9=9]49]49]49]49mo9|U9M9M9M9M9M94999h99494949:Zd: @:: ::1:Itk:QZ:]4:e:t:T:G::4:'I:::X: ::'I:-:M:t:a':QZ:p:QZ:5M::M9949N9M9h99|U9]49=9=9-9948U8U888=7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U8=8=8888U8U8U9499-9=9]49mo99M949::5M:]4:M::M:Z:; @;;%h;-;-;$;; @:o:Z:M: :@:p:]4:Itk::'I9949499h99|U9]49Mg9=9=9=9=9=9=9=9Mg9]49]49]49]49]49]49]49]49]49mo9|U9499999999h9h9h9M9g94949: @: :%h:5M:Itk:QZ:]4:e:t:M:-::.:::n:Z:AQ:.':.':':.':AQ:g:tk:M:: :M:X:@:p:YAQ:5M: :Zd94949Ł29h99|U9]49Mg9=9-994948U8U88|U8=7U7U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U7U8=88848U8U8U94999=9=9]49|U9994:Zd::QZ:|U::#:.';M;$;B;^1X;m>;;];;rE;e;QZ;3;Q::g:w: :M:e:QZ:5M::M9949499h999M9mo9mo9mo9mo9M9999999999999h9h9M999Ł29g9g9g9g9g94949:Zd::)ڡ:Itk:]4:e:t:M:4: :::z:Z::U; @;;";-;0E;0E;0E;.ʩ;+>;";;-;P:6:Z:M:.':::@:p:QZ:)ڡ:'I9949g9h99M9]49]49=9=99948U8U888=7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7|U7|U7U7U7U7U7U7U7U7U7U7U7U8=8|U888U8U9494999-9=9]49]499h9g9::Itk:mo:'I::.';0;6;_.';g;;M;;ߩ;ds;h;;;;~;WG;1;4:':Ł2::-:|U:a':QZ:5M:::Zd9o9494949g9999g9N94949494949N9g9g9N9N9N9494949494949494999o9:M:::Itk:UN:mo:M:-::ڡ::n:AQ:6;M;;0E;B;VJ;e;qw;;T;g;g;Zd;;u;m>;g;]4;Jq:;6;';M;, ;M:::M::M:]4:5M:9949g9h99M9]49]49=9=99948U8U888=8=7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U8=888U8U949499-9-9=9=9]49mo99M949U:%h:]4:@:w:AQ;4;=;mo;;%;< <<+<.u<'< < y;fI;M;2;'I;m>;Dd; ::Z:::4:|U:i6:]4:QZ:Itk:Itk:5M:1:: ::'I:: ::%h:1:-:::: @:Zd:Zd:Zd:Zd:Zd:Zd:M:4:'I::: : ::%h:5M:Itk:]4:i6:M:'I::M:n:.':; @;;/w;Dd;`*;zԸ;D;;LA;%;tk;^;E;W;E;ߩ;;*;%;;b;;Jk;mo;Lj;u;Gz;::n:.:@:e:Itk:9949Ł29h99|U9]49]49=9=9948U8U8U888=8=7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U8=888U8U9499-9-9=9=9]49]4949994:'I:Itk:x:X:g;M;5M;k;;<.<*o<;';M:6:T{:g:n:g:::6:;M; @;0;0;0;4;0;;;;'; ;Zd:.':n::::'I:'I:-:4:@:@:4:4:-:'I:::w::g:6; @;";?\;Z>;rE;Jk;;Os;\;۹U<.<V<@Q;;G:;mo;Lj;/w;Q;P:::AQ:Z:g:n:n:n:g:T{:.':6;];0;";=;[:;wM;;i; .;4;_< <<Ç<<<;/w:::@:]4::Zd949g9M999]49]49=9=994948U8U8U8888|U8=8=7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U8=88U8U9499=9=9]49]49|U999M9g94:M:1:e: :AQ;4;š;J<X<\#<=1=L=>[=]=t=9G==|=l =St=49=<&;}#;6;E;;E;;.<< <<<]<{S=`<0T<͇?<ޯ<{=M =n] =P==9=2==*O==fV=?\=<< <> x>>LY>>L> 1>!> >>`>!== ===y=a^=B= y<58<<8,Q;d;~;Jq:;P::T:Itk:'I949499h99mo9]49=9=994948U8U8U8U8888888|U8=8=8=8=8=8=8=8=8=8=8=7U7U7U7U8=88U9499=9=9]49M99M9g949: :Itk:i6:'I:n;*{;^1X;< >y> =M==ʼn=+P=xO=TJ=$2=b<ʐ<]<Έ<<-"=-U=;=a==d=כ=Օ=P===d=%=W=, = @>9>Z>(W>2>;>B;>Jl>Q>U>K>UX>RwF>JM>=oL>+]>5= =D==M=O=}<Σ< <8,Q;d;~;Jq:;Zd:w:|U:=:M949N9M999]49]49=9=9948U8U8U8U8U8888888888888|U8=8=8=8=8=8=8=8=8=8848U949-9=9]49|U99M9N94:M:)ڡ:UN:|U:X:T{;;u;tk<&6+>>A>L>L>}>ٌ='=g==w0=;V=D<ޯ< <>խ>'#i>5A>D>T>dU|>rR>3>7">>>)>>{>g>LO0>/>5= =>==L=w<>>>+>3Ɗ>8R>8>/>>9=E= =(=X=3<=q<<}/y>#>. >A>S{>f?>zq>>>>pE>A>C>CN>">>{>e>?C>ed==x=S=:ӻ=>&>;>K>VM>\v>[H>R`>@2]>&J(>,=&l=w=u}=-@<;k;k;qw;g;;/;.<~ ?(>$h?>=cr>Xw>s\>>>>/><>>Lj>9>ۙ>C>t`>.>d_>>u>q>Dp>ZL====xO=L<1t>+a>A>Y>qQ>#>y>eP>{>l>L}>(;>2=ɳ=,=F=`;B;Gz;[:;u;=;;J< ? >%t>C$>eu>T>U>>"> >>>*??y?m>>>s3>>>n9~><>=F==m! 9G> >>L>X,>o&>MR>Z>t>?>i>3>>~e1>Q>#===i7=\<,;XD;v;;;<\v<˭<<<[<<>>?5>e:>֦>V>N>Ȭ>>0? L???"Q? D?^k? >>Ԑ> S>ۦ>\>*/>f==ǂ==AN<!G>Q>~>>>O>>E>|&>>ʒ>>_>{>H7>=ٯ=G=/D<أP<FX< ;od;]4;::G:n:::z:n:g:N:.':;M;;0E;Gz;k;G:;Os;W<`<<4xK;W;#;\:;Q;;0;'I;#;9;E;\<>4>Zi>&> > >i>"??̎?*?6f?<?;DO?2?"Č?j>>Ɋ%>ځ>} >A>O=߼[==`(=j>Q>>F>>4>3>*>??S?>(>1p>w>pg>1z=FX= 4=\g"=a<<;';Dd;Zd:tk::'I:@:M:@:4:'I:::ڡ:M:z:Z:;];$;-;Jq:;k;M;;ʩ;;h;w;Ç;";;b;;*{;Jk;}#;j ;[:;P^;Dd;Dd;Gz;WG;e;;'I;;+<$4>$f>I,>w >>>ܮ<>s?u?$N?9h?KT?S߸?S_?K1?:j?#}7? cg>5>4>>VM>" =%==vK= <͇?<sC;6;_.';Q:Z::p:1:Zd949M99M9]49Mg9=9-9948U88=8=7U7U7U7U7U7U7U7U7U7U7U7U7U8=8=8=8=8=8=8=8=8=8=8=888U8U99-9=9mo9h94:Zd:Itk:'I:.';Lj;B<<$<=W7=>&H><#}>)N>R>?PX?f?A?ӣ?Li?m?$) ?#?*>̆>->|>Kj>,=F===S0>3=>`6>&>>ג?F?Y??/Q?F=?X?c>?fc?_?M?42?D>">hG>X>iw>-7>=C=Ge=)<أP<0;;Dd;]:M:@:]4:9949M99mo9]49=9=9948U887U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U7U8=8=8=8=8=8=888U9499=9]4999::t:;&6;M<-< =c=aՑ=%> Z>WN>L>)'?u?/?B ?E?@m?=s??="E?=s?:׮?.>n?{>t>>g>b2= 5=V=*9n<6DG>Dx>z}>F>u>ܞ?ק?5?RJ?f?p?s8V?m?^?CѦ?"L?>">Sr>sT>4H>=n4=/=-_@ >\">C>3f?$5?L?e>?m?hI?_?W`d?N?C)?3s?VY>`>|>+s>(=ߜ=p=,3 $~>V>w>l>q?&?0?RD?nQ1?~g?Cb?xb?ia*?PLI?+?> _>>r$>3 >=ī=M=)G>Y>i?(?Y"?u)?~f.?|{a?r?e?VzL?B4?*?'>>_>J>.D[="=,)=&< .<]%;;a'::@:Itk:M949g9M9M9h9h9M9M9Ł29g94949499o9:Zd:Zd: @:: ::::: ::'I:M:Zd9U9999:Zd:M:'I: ::1:Itk:UN:p:@::g; @;QZ;;Yd>-7>hX>@>? ?"&?E?c?z??}S?l(.?Sz?0? k>#>W>k>+U===y=< k>>k?P?Lc?ra?~?|Q?rR?c c?O?6Ԩ?+!>>Y>u>g>"= ==#<<55;);Nds:AQ:M:19o9g9h999494999999h99M99g9g9494949494949494949494949N9g9Ł29999Ł29g949494949:Zd: :1:QZ:x::Z;";.;۹U7>4 >vW>>? ?.?L?cE?ph?p?a?F9?%.??>ώ>>^>!-=O==b_= A<ʩ9p9>PL>?#)F?T?n\?p?c?P ?9? E?>> @>A><;1>=Pt=g=c<š<.;G:;:M:mo: 949M99mo9]49]49]49]49]49]49]49]49mo9|U9M99999h9h9h9h9M9M99h9h9h9h99999999999h9M99g949:Zd: :Itk:t:ڡ;Zd;a';tk#>5A>zQ>>^O??+$v?@1?Kf?L?@N?(6? Z >><>>KB>Ϡ= _=ެ=<C0>DG>e????N]?GL?3?M?q>/>Ba>t>M>qi=s=@=* < .-+>n5>> ?? 2???"?=J>ݮ>U>>`r>),==h~=k=`<|>v?t?+?!|?>>>e>eX>>L>=4==M:::QZ:'I949M99]49=9-999999-9-9-9-9-9-9=9=9=9=9=9Mg9]49]49]49]49]49]49Mg9=9=9=9=9=9=9-9-9-9-9=9=9=9]49]49mo9499h9949::p:;-;<`n>O>f>J>ˁ>(>V>ڶ>;P>6h>6>P>!T=ɠ=_={=-ݧ&>l>GM>>f>'>m>B">f>E6%>=s=b=bc= y<<%);#;":w:a':94999]49=9-94948U8U949494949494949999999-9-9=9=9=9=9=9=9-9-9-999994949494999-9=9=9]49]49|U99h9Ł294: @:]4:;-;g;l%[>Ry>~>O@>>@>U >l>?˩>4=E==z=, <:@<<.ʩ;;_.';M:M:M:5M99h9]497U7|U7|U7|U7|U7|U7|U7U7U7U7U7U7U7U7U88U99=9]499M94::]4:;P;mo;ܶ#W>3 >a>v>a]>~0>] >5> \=F=.=^&=}<(<_mZ;ٿ;c!`::@:)ڡ94999mo9Mg9-948U888888U8U8U8U8U8U8U8U8U8U9494949999999949494948U8U8U8U8U8U8U8U94999-9=9Mg9]49|U99M949:Itk:-:6;[:;'<6O<_< ===:s==*G>>+]>9D>;N/>0>ZL>K=L=B=[=; @;m>;J:>=N>!!> >Ǻ=F=/=Y=M?= vu<[:|U:19949M99]4987U7|U7|U7|U7U7U7U7U8949-9Mg9mo99g9::e:h;P;[:;LA< ;.';;Dd::X:a':99g9h949]49=948=7U7|U7|U7|U7U7U7U8949-9Mg9mo99g9::a': :6;A;;۹U<*o<{Sh7h77m 7]>h7=57]>h7m 7|ٜ7!4777՛7՛7՛7՛7՛7W7>h7 88-՛8E8YK8x58MN88h8՛858}h8W8>h8>h8>h8>h8>h8QO8j8ǃ8ÐN88N8888-8G8f8t8UW8Qd58I}h8E8E8I}h8Qd58UW8i8t8|ٜ8`48Y8Y8|ٜ8t8UW8I}h818!47%57W7h7՛77!47!47:h7!47՛7h7%58`48)585h8I}h8I}h8Qd58]>h8x58488}h8O9c[9MN94999!4949 =9 =9:h99 96B9Mp9kO9~O9:h9u9999+99":Pt:{:"A:.u:<[:M;:_wR:p:~T: :i::i:v:^:ܿ;;';W߉;`B;X;AJ;썕<S<s<6h7>h7%57%57%57ٜ88)585h8Qd58m 8Y84888}h8>h88858ٜ8O8ٜ8ٜ85888O88%58>h8>h8d58ÐN8µ88848S8`48x58t8t8x58Y8G848888888848Y8x58UW8E8-՛8%8`47 7%57%57%57 8818I}h8i8Y8:h88888ÐN8>h859S99 91999A9F9G9G9F9F9I}h9Qd59m 9V9N9M9n9H9}::Pt: !:':$4Q:=c:X_:n:}X ::':ئ::U::٩::X;;;,:;T+;;;j0;Iu<<=<;><_(N<~<~< <>< h898)57 7%57>h7>h7%57%57ٜ8-8%8)58-՛818185h8E8Qd58YK8t8Y848h88QO8O89c[9MN9 =949*9'909:h9 @9MN9MN9V9]9c[9c[8O8ٜ888>h8}h88888!48!4888858p8>h8>h888>h8D8d58ÐN888848MN8`48x58t8i8YK8UW8i8x58G888W8858O9c[9MN949 (9$93µ9A9Mp9d(\9s9x59f9{9Pt9Ȕ9H949N9]{9H9::.:CN:Q:W:Y8:ar:lN_:|ٜ::h:v::p:^:.; ;e;)g;7';Ag2;I;R;d;U';?C;6;޹<(<<-&h888:h8x58UW898-՛8)58)58-՛818E8Qd58UW8i8t8x58`48Y8MN8@8!4888ÐN88859]9 =999 9&9([9)59)59([9&9 9 999 (9N9u99'9:h9 C9V9c[858h888QO8}h8ÐN8}h8K888ٜ9c[9c[9]9]9c[9c[8O885888%58>h8QO8}h8ÐN888ÐN8QO88O9 @9N9 9,96B999A9I}h9Qd59b.9s9~O9J(909 (99՛99U999A9q<:4:(%:R!:r::]D:|:1+::::}h:=;0;:;,;Ai;ZwD;t;;Ȣ;p8;]R;;M;;<E<_<7;9$9!49S8O8O8QO888848:h8'8888ÐN8QO8%58 858ٜ9c[9c[9MN97A9 (9([96B9F9Mp9[D9d(\9i9m 9ph9qB9ph9m 9i9e%59a19ZG9VTu9Qd59Nm9Mp9Mp9Mp9Mp9Mp9Mp9Mp9Mp9I}h9F9<[96B9-՛9&9 9 9&9,93µ96B9:9?9A9A9G9Kw9Nm9XN(9a19e%59f"9f"9f"9f"9g9i9kO9qB9s9x59.94999P999s9H9(9X :>: X:q::"y:0:I}h:e%5:za|::!P:v:=:F:j;;-;<_;Y;l};t;uan;y ;+;;;;I;Q;;@;_<l<{F<#V<27~z=\|=k=9== =pd=$=ߨ=0=A=n=vD=Q.=-=5H=1<|.h8}h8588ÐN8d58888ٜ9c[9 J(949u9 (9 9#9*96B9G9VTu9kO9x59T9C99494999:h9!9G9Pt9V99{9x59w\9v9w\9x59x59{99999{9v9qB9d(\9WQO9Mp9Ls9Mp9Oj9XN(9a19f"9kO9s9t9y9{9C9-999|9999P99A"9:999"9N(9:]:sQ: (:&q:5h:Cυ:Q$:W:[:^:bm:hZ:o":|ٜ::h:':n:|;;f;Z;$;:> ;Y;;;Y;!k;;;թ;;";);<;Ώ<<?(<&<&<:uX(>J>">$t>>L= =N==>^=^=`=4-=G< > >3t>Hĵ>Tu>Q,>AXb>,Z>=w==1z=)=v>=T=)=po<̽ < >"j>9>P&>jv>>iU>3>l`&>OV>/>+G=/=Ǟ===nJ =>E=:Z:p:J:j:0;`B;c;'O;7;BT>;G;E;@;=4;=T1;FD;^;ֺ;K;;T#;Wr;.r;rv;ߗ;-*;\< <<<*xV<9d ġ>>!M>2T>Km>g>>>W>`>i>>oƎ>G >"A>.=ܰ=wt==}=N=$=g<Ι<h9VTu9Oj9Nm9Qd59XN(9c+9m 9u9}u9]9Pt9!9999m;999}::$:91b:Lb:W:] :] :X_:S:JzB:>`:3DH:*:$:!h::{:K::K:::!=:$4Q:([:0:7R:>!:Bu:A:2:(@::"E;`4;d; *; vj; <; vj; ; ; vj; `; ;;0];GH;]l;t0;l;|;;y;;;;;$[;;;V;;;%<o5< < ġ<<%pa<8w=4{= =5=O%^=j==m=C=հ=\> >c>*Q>7 9>D>V>of>)>f>>`>>n">Q>yt>UT>/a>@==1= ==T\=.=P=a:mɥ:k:kQ:k:n:r:{:]:!::::A=:?:;;"y;2';?;H;Ma;N;NC;Mj;I>2;Cυ;@;?;BDq;I;U;f;}H;;;X;;;H;Rn;;v;/;e;:;;w7;><;<1<8<@<j<< H<,&>>&>7<>E>U>iA>}>>IR>>{c>ʗ>ʧ>lC>>3#>Y>5>P=G==e=~=U=3=]t<x<;k>>'5>;>M>^2>q>I>G>U>>V>>q>я>">j>b>Qu~>/R>@#==úI==vTg=Ra=5&G=W=4<_< <#;-`;<<<< v<.K<;h>>&>9ԙ>O7>c^>rQ>>>g>>>B>v>܀>>>`>u~>B@>##> t=,=8=߉=k=K=2t=M=7;;; ; ;D;ͷ;;3;;;?;ƚ;f!;̾;;#;‹;;J;݅;f!<W<0< < ,&< K< <S</h<8<D<W<1<X<h_<$0<2c>c>*f>:>Lt>a5>uX>J >/>v>>>LG>ش>|>>˖>>\9>j&>8/Y>=X===#=c=D=.=uf=0<<6<!:Bu:Lb:^:t: :W:ն:4::B;"; T;|;;i;;'t;4:::p::: z::!: :Ϡ:޹:%l;y;!=;3µ;@;F<;F<;C;By;C;G;Mn;Tz];`4;sƌ;;;;;-;0;.;g<7&<Ȣ<YQ< >=>/>C >T>bJP>s>?>B>>S>>>͝>ܔf>lC> >ƒ>(>>]B>.> =<===$b=^h=>-|=(t==<~^:;]:U::;f;;&=;A';\2;tf;;n;;P;J;n;;;;kx;#;;-;V;Q<0< <W<<)<6v<@B<9 <3 <1E<4X<;#.<@˄<A= >rn>0(>DR>[>nr>z>;>F>w>q>5>>e>օy>ޤ3>{>v>>>h>N>#->==V=="=Y=8t="SO=z <<8 r>>3:>E4S>Z[>sŐ>>b>:>H>`>>k>> >}>⣳>i>18>>r>r>A>c ====[=y=R=1= = "v k>>1e>H>^9 >w>I>Y> >l>>}(>#b>d>λ>>:>-+>܁>&>V>2>lz>=xU=d=]Y=n=n=H6{=*=b=<߼u<Z=&w=!>=3=Cx=St=i=\=\D=;=+=> (>>/>F9S>`x>{]> >&>\`>>3> > >š?>> >w>=>/> U>>7>n'><>8==G===d=@9=#ԃ= i<"8:w:Ҁ:ڦ::ߖ: :":::T:0:qW; vj; ;';9!;J;ZwD;h/;uA;>;;e;E;2;;}?;E;;AJ;;;U;;G;?C;h_;u;3;;֫`;<;qW<l<o^<۱<n<$Y>>6>K֫>d>>F>R>(D> >C>J> >f>>5>>;8>n>>>ϔ>>6>k >>Q >6="=A=V=E=^=:P=p=I[h:':ܧ:>;W;;;;*; ;G;;#I;4;G;X0;h3;wj;;$2;;`;Mi;K;pa;;ʊ;݅;;J;};;א;ɝ;;}?;;_L;r[;};?;%y< {<<$<2]P>>4V>O3>i5@>>!>O+>I>N>>҃>6>>2>P>>-C??>[>> >i>b>d>>=>HF=D =x===Z=5=,O===|===]= a=l= f=n=[== =9=s(<<̇<<c>>2j>K 1>gh>m>V>S>k>ǭp>*=> >U>>q>>I?J???>T>۞>>|>g>^*>9.k> =O=d'==>=Um=0j`=<}<[!>/Y>Gs>bn>6>5F>>v>k>L>{>h[>E>>?3?p?s?n?ޠ>>>l;>Ժ>$>>WJ>2'> =D,=J='= =O=+hX=$=E[=N(=U=V ^=Qb;=L=I,=I4Q=K>=I=BO=9=-g=#d=d=S= 8=<<< >"ǝ>> )>[Q>xĠ>l>>J>ԏ>ᡊ>F>n>2>??? ?y?;8?+>r>>"0>ƃ>>r>w4>J^>(3> ==w=A= +=G=%^= =2Ҳ=)8R==`]=q>P>/=`>N>p>\> >b>Р>w>~>S>???4?߮?|?G??q>>>H>>v>>a>9^>d>ֺ=ݺ]=Շ=W=uq<==` ===2l=#ϓ=g= R>"$>=U>]U >Y>>>{>ܮ>??????ۺ? ?9`?\?<>>>h>Ђe>iQ>>|>O~>(> ==o=̦=v=y=f=2==<*<~lZqT>0S>KR>kq>>>O{>,>(> ???? ? E?,???>'>>/>ޝi>Φs>G>_>>nq>A> >q^=ؾ=Q=&==U=(=bW<><<Â;7;1*;*A;();*s;0Z;7G|;<_;B;G;L;R{;Z;e;rz;%;;;$;;;8;H;a;׀;֣y;7;;D;E; ;< U< <8 ͔>$>=0c>X>zs>ܿ>P>CP>d>?t? -? 5? ? ? (?A?6>C>W>>v>ε>>G>>>Y>3 >==_=u==i=E&@=7:= h<<"q<=;Y;|;AX;j";?;a;z"E;hZ;_V;[;X;Tz];M7;C;;Z~;3;0;1;7;?];Ez4;KJ;P;Tz];Zs;b̰;n;|;r;f;$M;R7;\;C;;6K;J;;4; 1; ;E;ڄ;º; ;3< <$ga>-r>G!/>d7>> 3>q>Ӡ>s??@? M? pl? Y? m? o?~>D>>q>߆>+<>8>>N>>e>B>">Z=`==%=F=X_=8ɬ=!=?=<<<=[;O+K;C;;;6;7';<7;C;K7;Q;Vt;Z;`D;iW;u;;;M\;T;7];?;j;<Ӿ<ڃ<<z>7>@>8>=w{== =u=@=o; =K=.=h=l> >G>56>O>o>e>>,>ޓI>?C? J?M ?? d? ˺?8>0)>1>>&>>ǥ*>>>>|>VY>41>=9=lj=80==t=M=/=,<<܌<k>k>>\o> >>A>>>c> ==el==f!=c5=o:=Eij="v=<_<<<"S>(p>B1.>^>{>U>>i>?? ??\?? O?mx?>2>쯩>>ڐ>Ͼ>>>;>s>m[>M>,y> ==Ǜ=B=9=m=GUI=)j=U<,<ԂD<;P;E;[;7;y ;w[!;t;o%P;e ;ZwD;N;B;<7;:;=5;Ez4;Mn;T;Y;_g;e;ng;y;=s;;;E;;;;;;;M;;R; ;e;;ڎ;<<(S-=[>Ӵ>}> >7>L >>#,>'^>,>0ϝ>.>$> >+|=?2=œ===h=9?5=h<>2F>Q}e>p>>Z?>65>n>?? ???k+? E?k?>5>k>ڶ;>*^>D>z>>3>v8>Z #>A>&>=#;==J=j=i=E=&=3 ;7v;; z;@;H;O!;V?;[T;bND;j;u;;;;z;l;i;[;c;!y;s;;!;;!; ;s; g;&<<(>d>> > z> }> \,>bH>e >>#wl>.&Z>8 R>>އ>A0>F>JK>D">4>"]0> ==̆;===Y)=(=<9;<K>aU>9>[j}>~>>P>в>R >>}? ?{??2? 0? ?N>>eS>3>>>B>e>H>>a9>Hn>3>8>==0===f^O=C='^:=Q<0<[c> > >>[>m>(>N> >(>/>; >L>[o>b >bX>b9>`r>U>A>-G!><== =sw=^;=F=<<$ T>&>Aĉ>_;Q>#G>>R>V>>?`? p?p[? ۶? ?M>>+>#>>>>\>?> >oJ>Q%>9>&>;=w6=ɞ==:==ew=D=*==~<<E<`;~d;;;2;;;}$;G|;!;8;rM;\N;;I<sQ<%!]<@pP> 2>>{>~>>>">&->6If>EK >O>]>tN>U>:>>R>r+>c>M_>6<>t=M==B=vV=7ߗ= u=<9>0{>L,>e>>Y>O>>`J>?? xd? ?5? "?L>>㫊>ջ>>>ؤ>>پ>w>[ >CiK>/e>k> ;==2=r=,=my=fp=H=/= [=J;1j;%;i; ;;!;';/P;6x;?;I;T+Y;\;cj;f";g};jK;sV;c[;;';~;_;;/;$;B;9;;3< H<<8^> >l>>>!{>'>/R><;>Rw >g>v<>^>Ԍ>[>W5>>>>qH>WԬ>:l>q=p===gY=+Y=>6V}>T >ns >=>6>s>Á?>.>~??? q*? 4?W>u><>׆e>&~>L>F> >`>A>m>O>9>*U>t>u==@=|=z=i=g8=LF=3=F=<+<;4<<} ;p\;n;h;]^;N;:;(;a;; |; ;I;;J;$D;-;7;B$;KW;Q;S;T;W!;] ;l;;,&;[;͋;;;~;w;;>v;<ڻ<̱=S=i==Ɏ==}5===:>i>\o>> >>>">,O>:>HW>Z2>s~>s>[>MF>8>{>B>)> >>#P>Z>6>`-=s=4=o=Q:==>5>U8?>q>f>o>GH>g>?J?y? ]?0?Vd>n>O>΋>B)>>>>v>z>a >FG>3o>%>k9>K==̝q=T===ff=K"=44J==5<۟<f> `> M>N>> >&V>.N>=B>N{>_>tIk>^>ɪ>>\>}>k>2>>>|>>P>(K>= ==k7=5= <ٔ>H>4>P>lf>>ag>>>Y>ή?>0?>)/>>>X>A>>_L> >8>kml>Sn>?1>0U>"հ>=Z==(U==E==f$=K3=4 = |.=$ ~>j>>89>$%>-5>4g>M>_I>rp>>>ƣ>>ȡ'>ҟH>> >e>(>_>J>pi>:>$ =f=E=5=Fz=<+K< <?>%>;>U*>lz>l>ň>r>>>2>>>>u>>H>>̊>>>'>=>b>y>dpv>K>:>.>>[==m=ם\=i=a=b=kp$=Oi=8]=(=Љ:}:; ::.;::7::֓:-:$;; y; -;;Mi;C;m ;(;:;R1;i;3;;c;/;;;;r;Á< 11o>'>>Fz>(tD>3F>=;>Dh>Md>`~ >{A>>>>E>>>m:>@>㮠>Yi>>>Tq>"=K=–k=fJ=YD=%0.==Z>/ >E֎>_v>px>>>~>>ē>&>*>O>>Na>>C>`>>k>rQ>>P>o>[.|>D>4L>*Ke>Y> >===k=ny=d=F=x=\P_=C=4=\<<һz>l>2>>(^>4>CP>Y>gV8>d>j>>~>ظ>>|??*>'>݈|>ɉ> z>q>7j> A=C= =i%s=.[=U<͜D<<<\ <;<<փ<ޖ yz>.>GO>_I>oR>zm>|>>m>Ě>}>ҀK>X>,>>S8>><.>]>#>U>>zH >emO>N:>:>-)>$>3>>=y=!=nu==N=g=kp=Pq<=?==$= :+0:p:+K:א:-:a|; T;@;7F;Q;l;+;$;5;C;;0;i<,<%j2> 6>>"S>*:>3>AXb>R(>dy>t4>V>>R+>@>Q>?r? ? ?>)>r8>>x>LkQ>= ={]=sM=4/= <~C<<6S<3g<2M<4 <9j> >,o>B>W>i>|h>/>>>-O>þ<>ɏ/>Є>T>(>m>>Q>>V>X>9>tn>^r>H%>6}>-(>$>>> ;>==ՕW=Ж==j=w =\ 6=KK=2=,=f<7 I>>>$o>0>:A>@T>L>aq>z> >ݬ>]> >?#? ^u??C??:>>[>e\>a[>#=/#=j=z=8= H<>A==L3=e:====p=ȳ=Ӥ>,>9>/[>AJ>Q^ >f&>˾>G>p(>Ѽ>}U>R>\V>g!>g>ă>I>>U> >>>|ތ>mb>\e>N\>Bjx>6^c>)S>>> S>+==_0=V="=N=~g=dT=[+=D=+=U<4 >> h>(>4<>A>K>R>\>r>_4>t>r>>?8?OE?v?*x?5? ?z>I>et>y>7|S=P=#=v P=6S= Y<Ҥ8 5>!|}>3qx>A#>O/~>d>#>>>ל>!.>~>t>C>>>>C>i>>>##>Z>og>agd>YW>QR>B>3|>'E>W><>  >2G=P==w=[==o=oj=[F=?=n< <.<҃!>[>@>*M>1f>;>J=>X>cq>h?>ra>KU>,~>U>>?u?s!?"??9??>5>>v>GS>k=M=| =4 =+ ї> 1]>38/>@ty>Kn>]el>v>m>X>>*h>Q>~>+>>>>>>|z>.>m> >>{q>pF>f>Z>JS>=g>6>,\>!\>> %=@=z =e=^=t==O=sl=TD=-&=w<<&>>$r>7{>C>J >U#>ds>p>z>V>D>,>K>)>=?s?9??R?,1?P? >>n>ʘ>'>V6>#=h=;=4B=L<<<~`>e>,s>:>C;>Q4>e5B>vb>4>>N>>>><>-r>>+[>">>k>>>4>`>r>0>`*>P=>H>C-><>1Wl>%>|>6 =ͭ==`=±=== =dd=7Ժ= <ǭ1<<09;;i;;2:::M:':]:uq<:gU:Qk:7R:"::49q<9j9999.999j9Gn9.99(\9\:Pt:sQ:]D:!=:)$:=5:W:r:i:W:$:;Pg;a;@:;t4;;;W<MN<-n>>&5m>>@>VZb>cg>g>r>>܅>Hj>>ʨ>m>N>? ?{????? >{>>a>j R>!1=&=c=0;<; >>-6>7 B>E>X%>g4>r> >/>κ>k>>>!>p>*=>!>d>> >>2>>z>k>^>Uټ>P>L\>D>7 >&q.>==ޅV=[=)===9=f*=6]g=<->,>D>_S>{>q>l>z>>4>'>q>+>>?x?d1??RW?I?I?M?>ף>>q>,o===/T<[X >>++[><>OS>]1>fw>t>`b>C>j>>'>=>>N>8>>>b>l>w>o>7>>w>lZ>dB>_->Yx>L>;>(k!>Kp=9=ԛ=h==XG=c=S=$<%^h9Ŋ9Gn999{9r9Qd59A96B96B96B9A9I}h9YK9kO9x59{9:h999f999H::D:<[:b:~T::Gn:ϻ;:h;A';c[;pT;<<.){>0>OL>o>>->~>>u>X>>`Y>Ǣs>>?Z??e?H?X?6??>v>Z>{+8>5$M=I==2< <( >IC>.>AL>Ol>YrE>k>;>L> >N^>>>>H>=>>>p>%>X>:>>>>=A>C!>>z7>q>bj+>O'>8N>>= =C=7=<=[R=0= <<<%;e;Ȣ;-'::p:^;B:-e:9(99=9999v9b.9I}h96B9 949MN9S9 C9*9 (9&949>9I}h9UW9d(\9s99n99f991::+E:SU:t:Y::m;&=;i;;b<c<, g>.>XT>8%>>>o>g>E>l>~l>>>̐>G?W?Y?o?????A>ۏ> >>=:>=g=A?<<>!D>+F><{%>IBd>\e>y>>v>>>k>>@>^>S>>>>,x>>հ>v>>M>)>>׷>t>^I>A_>" >TI===v=Vt=,= ~<<;};Mn:5::X:D9B9n9]{9.9J(9x59d(\9Mp9<[9,9N9V8 8p88h8ÐN8W88ٜ9]9 =999([96B9D(9Pg[9kO9999Ȁ9X :!h:I:r;x::Ƞ*; ;Mn;h6;;e<$L' >`L+>>_>S???I?u?w? ? {y? ??ŀ? ? B?i????? k->>K>@>C>C==[=<<>T;w;;RQA;c:m::B:1F::3:TZ:;=;/;\A;MN;;;]<8}=n#====Q=>>(I>9>N5>j`>G>i>W>߷>ü>>x>J|>̄a>ϡs>9>#y>h>>V->>j>>a>,>ǧ>5>g>CL>b=Ò=̅=X}=>=%/=hK<<x>Z%>Wc>W?fK??W?e?I?( ?d??Q?p?!?i?N#?!B?Sr?d??ɼ?$>x>j>S>l=7=g~=L<= <{>'>>M>Z>y>M>>>n>>ӗ>>$l>C7>5>a>ҽH>ĥ>Ʃm>+?>\>>_>>Â>>i:>AH>X==R=r=U<h8N8-8x58I}h8)58`47 8`48)585h8Qd58i8x58Y8:h888819f909([9G9s999h:"::Y8:`P:( ;;T;;3< eKڞ>>֦?.? o?%?*?+?*Z?'?$_? ???u???m???g?(/>>W>n6>b=I=p=t<[:Bu:$::S: X:(f:6B:CN:P(%:c:xg:':j:5;;93;^;`4;);u;# ;ѣk; <<-<-u<<V>*g>Fz>g>#>>>u>מ>>:1>R>N>l>>OM>߄ >>kN>83>>>Ƒ>W>k>a>'>7L> =ˀ=Y=V="8'k>{)? 1?p?%?0U?70?: ?: 1?8"?3"?,9?%-?">3???? /? f? ?U ?uv?]>R>]>0h=5=~e=`V>1d>W3>m>0>!>E>S>>TV??}?i?Y>:>{>Y>&>Ӵ>lj>_>P)>;>y;>N$R>"F=y=KX=a2=! l<c<^<K;;;0M:^:ph:S99|99d(\9I}h919N9c[88ÐN88MN8i8=587%57՛7!47m 7=57=57=57=57m 7:h77՛7W7>h7%58`48)58E8i8@8h859N9D(9x599:D:_8::a;P;j;H;59<;R<=F=w=>jl!>??*w?7|?A7?H?K,?HD?C]?:V?1T?+s?')?$#?#J?$E ?$(?#}9?";?:!?.?t>`g>Bo=Gg==<>h)>!6\>K>m>>>)>'?3?? ? D? x? $?s>T>,>B>v+>M>5>>9>W>,G>==o="q<<]< ;r2;}w; H:1:H9(99.9`49A9)59N9Y8O8ÐN88S8i8=58%7%57h7!47]>h7=576>h6>h6>h6>h7:h7=57=57=57|ٜ77՛7h7>h7 8)58Qd58MN88O9$9VTu99::E :D:s; ;[L;';f!<'"y>=?ҍ?*Ő?:o?Jv?W"?_?^ß?U?J-??e?6pj?/?+V?)/ ?(?(?( ?%B?"m|?b?>ݱ>D=&=wx=<;Z=9 =`=!>I>Bq>{>P[>>4t>3^????Z?L?? ?2>-c>>ˮ>>Lz>yt>U >)>=Q=r%=!T|<h7=56>h65656565656565656>h6>h77=57]>h7|ٜ77՛7>h8!48I}h8G8}h9MN96B9s9A91:)$:r:;c;O!;S;=q>\?ƻ?$?81r?JgN?_?p?u0;?m\?\?L@?@?8b?2?/nc?->?+?*?(f?#Z?A?7>?>;N=ʐ{=V1<<<&;;v:%l:0:!h9B9v9A9([9 99 9 9$9)59/N9293µ929196B9A9VTu9s9]9n9n99}u9t9w\9{999N99(9^U9H9Tu9a9h:{:<[:jT:cv:; ;Q;-;!<<`P 8>;>p>w> >?? ??O???? ?O>>޼>> >v,(>Ht>=K=$=j=6<яh7՛7!47=576>h656565656666565656565656>h6>h77=57]>h77W8-8Qd58!48%59N9Ls9C9{:;:\::;>; ;??/l:?Cx?Y?qק??~?o9?Z?I??>?8j?4sB?0?.q?,(%?(Z?#0?? }3>0>#I=`=5<2<>f>#>>z?  ? ?׀?X?ܟ?a?WZ?N>>>o>>k>8 > ===R=W<uh8848Y8t8Qd585h87%57Ŋ77m 7=57:h6565656666666666656565656565656ٜ7=57!47W8)58ph88O9/N9s99(::mr:]:";';;>º? O=?6?J?b?wLQ?~?t?a[;?OF?Av?9G?4?1+?.?*r?&B?!?4>w>>w==q<7<@P;;lg:8:z:"A959{93µ858888888888888848@8@84888՛858848G8G848h8ÐN88O9]9V9Y9c[9c[9MN9 9D(9t99: ^:S:m;;@;^;dC< 'x(>b>I>>t?|&?? ??`?r?>>k%>m>>X@>(S-=n= x=;Z=65=S<5<\1< ~; ;l^,;:n99\A948}h8!48x58Qd585h8)58`47%57W7՛7:h7=57=56>h656566666|ٜ6=56=56=56|ٜ6|ٜ6666666656565656>h7=577%5818Y8w9'9I}h9Ȕ9{:؋:he:; `P;;VS^>P?"*?85?K?^%?j[?j?]?N?B2?9I?3L?/?+K?&n8?!??E> =>VNI=k=Xx<<4_<X;`;=T1:1F:=$9}h9Pt9;9MN88Y8a18UW8UW8UW8]>h8i8t8t8t8m 8a18Qd58I}h8=585h8181818-՛8-՛8-՛8)58%8S8:h8)585h8a18Y84888h8888}h859!496B9f"99>h:O+K:Zp;4X;!B;L<;<<_=+@=/=ϻ>Z>_;Q>> >O??)\??? {>D>W>>>lB>=>y=ҡ=E=\|=H<<<7;;H;Mj:ߖ:99F8O8-8Qd58-՛7ٜ7%57W7h7՛7!47]>h7=56ٜ65656566666|ٜ6=56=56=56=56=56=56=56=56|ٜ6666666665656>h7Mp7՛7ٜ8Qd588ٜ9-՛9n9y9(::::4;h3;<]ļ>βm?!X?5"?El?QE?UP?P+?F?=?5B?/?*?%y?!$e??>>+ >"S=X}=(<<h7W7h7՛7՛777!477՛7W7 8)585h8I}h8UW8]>h8i8t8|ٜ8MN88859 9e%59: ^:xg:;l;`< d>SxT>8>>~? ??? >W>6>z>>K>!"==xR={d=6=G#<h8i7ٜ7W7՛77!47|ٜ7=57=56>h65656566666|ٜ6=56=56=56=56=56=56=56=56=56=56=56=56=56|ٜ6666666656577:h7W818Y8W9u9Ls9G9$:f:i:;H;׀ >#0?#K?-?9?@?@H?;e?5 s?/?)?#?G(?[?S>> _>0F==n=wh7W7W7W7W7>h7>h7>h7>h7W7W7h7՛7՛7՛77!47|ٜ7]>h7=57=57:h6>h6ٜ77=57|ٜ77h7>h7%58S8)58-՛85h8E8Qd58t8G88O96B9{9:H:;'O;;Z<@<C<=Cr==ƚ>>I$>F>[>z8>f>>Q>|d>B>>\)\>(==u=[=Dn= ߉<4<,<66;;;&=::'K:(f9Ȁ9MN8>h8]>h7%57!47m 7]>h7=57=56>h65656566666|ٜ6=56=56=56=56=56=56=55ٜ5ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56=56|ٜ6|ٜ66666656>h7=57՛8`48i859]96B9u99B:EJ:s;;O; >N?o?!q@?+?/>?-B?)O?$c? +?e?ƥ>>i>m(>/='=c=h7h7՛77!47|ٜ7!47!4777!47!47|ٜ7m 7]>h7=57=57=57=57:h6>h656565656565657:h7=57|ٜ77՛7W7%57 8`48)5818I}h8t8!48>h9 (9d(\9՛: !:˻:L;s;<V<!M>e%t>>ۤ>I>'~>P>>o>:ן> (==+=MEY=h656565666|ٜ6=56=56=56=56=56=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56=56=56|ٜ6|ٜ66665657=57!47%58I}h8859([9d(\9u9G:7:`;<[;aG>L????B??Dc? >ؾ>+>kC>*= ==)<<}4z<);2;&:s:Qk999f"95h9 =8888i8-՛7%57՛7!47]>h7=57=57=57=57=57=57=57=57=57=57:h6ٜ6>h6>h65656565656666665656>h7=57]>h7:h7՛7h7W7%578818Qd58Y859 @9I}h99d:he:];7;<*@;>5iq>j]>>zL>>bB*>;ܟ>$=<= /=`>=5< <6h7>h7]>h656565656666=56=56=56=56=55ٜ5ٜ5|ٜ5ٜ5ٜ6=56=56=56=56=56=56=56|ٜ6666656>h7|ٜ7W85h8!489 9]>h99N(:?:!k;GP;IZ>_i?>>[>/5>է]>>(>[>B>=Ѝ= =12<h6>h6>h6>h6>h6>h6565656565656565656566666666665656>h7=57=57|ٜ77՛7W7%57ٜ8)58E8x589c[96B9]9:91b:۱; ;;<6<<=0,&==ũ> Y>.{K>B\d>?1?>(> =]==t6)=.I+<^<<^C)<h;٩;G;;:g[:s8R:p+99x59G9#9c[88UW7:h6566666=56=56=55ٜ5ٜ6=56=56=56=56=56=56=56=56|ٜ666656>h7]>h7Ŋ81848h9"A9a19u91:O:.;;P;Z<<- @>: >]f>bD>TDI>B>=8=C=zdr=0Eh8N8G8YK8-՛7%57՛7]>h7:h6565656565656565656565656666666666|ٜ6|ٜ6|ٜ6|ٜ66665656>h7=57=57|ٜ77՛7W7%58S85h8t8859)59s9:u:w%:ֳG;`;<pFh7՛7=56>h65666666666666666666|ٜ6=56=56=56=56=56=56=56|ٜ666565656>h7=57=57|ٜ77՛7W7 818i889 9d(\9:k:Yo:;1j;t<Yh777:h655ٜ5ٜ6=56=56=56=56=56=56|ٜ66665657=57h818489([9n9::he:J;J; <nh7:h7=57Mp7|ٜ77h7%58-՛8i88O9 9WQO9{9>h:?]:; ;";r< Ph77=57]>h7!47h7%58-՛8t88O99Mp99zB:(f::;aa8;`<(h99s9-՛8588E7Ŋ765ٜ5ٜ5ٜ6=56=56=56=56=566665657=57՛8)58G89&9s9]{: ^:e:;;P;7<\A<(h6566=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=55ٜ5ٜ6=56=56|ٜ6665656>h6ٜ7=57=57:h7՛7%5818t88 9 (9Mp9Ȕ9:S:r:ɼ;3s;|;m<h<*Zh8848`48e%58I}h818)57ٜ7>h7՛7m 7:h65666=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=55ٜ5ٜ6=56=566665656>h77=57S7h7%5818x5889 (9JzB99:: ~:^:>;'t;fM;G8;_u;< <<<<; ;K;n8D;ʼn::mo:i999F9N858h8i8)57W7=5656=55ٜ5ٜ6=56=56=566665656>h7=57՛8%8Y8>h9 9d(\9A9:@: :N ;J;cK;E;;;:;n;;R;_W;"A:M:j:mɥ:>9:9f"9 =8ÐN848t8Qd585h8)57ٜ7%57h77m 7656566=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=55ٜ5ٜ6=56=5666565656ٜ7=57|ٜ7h7%585h8x5889 (9I}h999:@:]):ۃ;);s;x;C;`; ; ;;C;M ; :::89(9!9f"9,9c[8ÐN8S817%57՛7=56566=55ٜ5ٜ6=56=56=5666565657:h7Mp7՛88`48W9 (9YK99:&q:p: :T;;H.;l^,;}w;{];g.;BT>;]7:z]::lN_: @9.9MN9@9c[88S8Qd58187%57W7՛7|ٜ7=57:h656566|ٜ6=56=55ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56=56=56=56=56=56=55ٜ6=56=56|ٜ6665656>h7=57:h7h7 85h8f85859 (9G9y99:"y:mɥ:5:.;"*;O!;n(w;y;n;O ; :H:c::Lb: !99V9D(9!4888i8%7W77=56566=55ٜ5ٜ6=56=566665656>h7=57m 7՛88x58}h9'9Mp9:h9:vx:L4:::d5:O;;f;:a|:TZ:|:r:/9"99e%59 8 88`48I}h87%57W7՛7|ٜ7=56>h656566|ٜ6=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56=55ٜ5ٜ6=56=56665656>h7=57!47h7ٜ8E8Y8859 (9A9s99.:MN:@:}u:::qW; T; ;Pg:o::k:Q:`k9zB9!49YK9 85858|ٜ85h7%57h7!47=56>h6566=55ٜ6=56=56=56665656>h7=57=57:h7h88t89 J(9?9)991:!h:SU:za|:'::$:v:j:7A:p::mr:MN99Ȕ9Kw9u8888x58977h77m 7=56>h656566|ٜ6=56=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56=566656>h7=57!47W8:h8Qd58G88ٜ9 (9<[9e%59C99K:$:E:ttb:p+:::!k:؋::TZ:D9K99w\999MN8}h8@8I}h8`47W7՛7:h7=56>h6566=55ٜ6=56=56|ٜ6665657:h7=57m 77Ŋ88ph859c[9-՛9f"9'9[9n: !:@:\A:k:p:i:R!:):999d(\919]8ǃ8-8m 817%57՛7]>h76>h6565666=56=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56=566656>h7=577>h8)58YK848}h9c[9 (979XN(9}u9.9B9ݼ:a:.:O:e%5:i:_wR:D^:!h9}9B99a19-՛9c[88S8E77W7՛7|ٜ7=56>h6566=55ٜ5ٜ6=56=56665656>h7=57]>h7:h7՛7W88YK88h9 (9I}h9y99[91: ^:Z: @: (:9O9$9u9s9;9'888Y8Qd58)57>h7!47=56>h6565666|ٜ6=56=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5|ٜ5ٜ6=566656>h7]>h7՛7%58-՛8ph88QO9c[9 (96B9Mp9s9Pt99A"9m9}: 8:i:K: C9(99A99Oj9'9c[88Y8E7 7h77m 7=5656566=56=55ٜ6=56=56665657:h7=57m 77՛7W8S8Qd5848d59MN9*9Oj9}u9{99[9H9"9{9N99x59I}h98588Y8Qd58)57%57՛7m 7:h65656666=56=56=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56|ٜ6657:h7m 7h7 85h8x588>h9]9 (95h9I}h9c+9x59Ȕ99m;9Gn9[9{9[99h9!9p9CN98588x585h7%57h7!47]>h7=5656566|ٜ6=56=56=56|ٜ665656>h7=57Mp7|ٜ77h7>h7ٜ8=58`4889090(9Ls9n99:h94999s9Ls9&9c[88`48=58`47W77]>h7-՛65656666=56=56=56=56=55ٜ5|ٜ5ٜ6=56|ٜ6657=57:h7W8`48E8`48889]9 (929F9VTu9kO9x59]9Ȕ99-949!99l(9Ls9/N97A888i8)57%57՛7!47=57656566|ٜ6=55ٜ6=56=56665656ٜ7=57]>h7!47՛7h7>h7 818i848ÐN859:h9#96B9H9Mp9Qd59Ls9?9&9 J(8D848I}h7%57՛7m 7-՛65656666|ٜ6=56=56=56=55ٜ5ٜ6=566657=577W88Qd58Y8889c[9N9,9>9Mp9ZG9g9s9t9u9s9kO9[D9I}h96B9 (9c[8}h848Qd58S7W7՛7|ٜ7=57:h6565666=55ٜ5ٜ6=56=566656577=57m 7!47՛7h7W7%58%8I}h8x588ÐN8O9c[9 =99 (9N97A9c[8>h88i87՛7=56565666|ٜ6=56=56=56=56=55ٜ5ٜ6=56656>h7=57՛7%58)58Qd58MN88>h9c[9!49$96B9E9Mp9VTu9[D9\A9XN(9Nm9H979&908588G8E7 7h77m 7=57:h656566|ٜ6=55ٜ5ٜ6=56|ٜ665656>h7=57=57|ٜ77՛7h7W7%58`48-՛8Qd58|ٜ8-88ÐN8>h8%5888QO888x5817>h7m 6566|ٜ6=56=55ٜ5ٜ5ٜ5ٜ6=56656>h7m 7՛7%58-՛8UW8MN88QO8ٜ9 =99*96B9A9G9I}h9I}h9CN999-՛99 J(888S8=57%57՛7|ٜ7Mp7=56>h656566|ٜ6=55ٜ5ٜ6=56|ٜ665656>h7=57Mp7|ٜ77՛7h7W7>h7%58S8-՛8I}h8i8`48@8!48848Y8i85h7%57՛7-՛656=55ٜ6=56|ٜ66577|ٜ7h7 818UW8S88}h89Y9!49 9)593µ96B96B93µ9,9 99]88՛8Y8E7%57՛7m 7=57:h6>h656566|ٜ6=55|ٜ5ٜ6=56665656>h7=57]>h7|ٜ77՛7h7W7W7>h7%57ٜ8%818E8Qd58Qd58Qd58E8-՛77h7m 6>h66=55ٜ6=5665657=57!47W7ٜ818UW8Y88818ٜ9MN9!499 9"A9 9 9u9 @8O8>h88S8I}h7 7՛7]>h7=56>h6565666=56=55ٜ6=56=56665656>h7=57]>h7|ٜ77՛7՛7h7W7W7>h7%57%57 7ٜ8`48`47 7%57Ŋ77=56566=56=566656>h7Mp77W8`4818UW8`48!488d588O9V9 =909'949 @9c[858QO88G8Qd58 G7h7m 7:h656565666=56=55ٜ6=56=56665656>h7=57=57|ٜ7!47՛7՛7h7h7Ŋ7W7W7W7W7W7h7h7՛7!47Mp6ٜ6566=55ٜ5ٜ6=566656>h7=57|ٜ7՛7%58!485h8Qd58x58@888W8858O9c[9c[8O8588}h88G8UW8%7W7|ٜ7:h65656666=56=55ٜ6=56=56665656>h7=57=57m 7!477՛7՛7h7h7h7՛7՛7՛77!47|ٜ7=57=5656566=56=55ٜ6=566656>h7=57]>h77h7%5885h8Qd58t8S8!4888}h8K888%58+8>h8}h888Y8UW8)57W7:h7:h6565666|ٜ6=56=55ٜ6=56=56665656>h7-՛7=57]>h7|ٜ7!477՛7՛7՛7՛7՛77!47|ٜ7]>h7=56ٜ6565666=55ٜ6=56=566656>h7=57m 77h7>h7 8)585h8Qd58i8f8G8!4888N888888:h8x58Mp8)57W7!4765666|ٜ6=56=55ٜ6=56=56|ٜ6665656>h77=57Mp7m 7:h7!4777777!47|ٜ7]>h7=57:h6565666=56=56=56=566656>h7=57|ٜ7՛7h7>h7%58!48-՛898Qd58e%58t8`48MN8:h8'8N88848G8|ٜ8]>h85h8S7W7!4765666=56=55ٜ6=56=56|ٜ666565656>h7:h7=57=57]>h7m 7|ٜ7!47!47!47!47|ٜ7m 7Mp7=576>h656566|ٜ6=55ٜ5ٜ6=56=56656577]>h77h7>h7%57ٜ8%8-՛85h8E8Qd58UW8i8t8x58|ٜ8`48`48f8x58ph8UW8=58)57%57h7|ٜ7:h6566|ٜ6=56=56=56=56|ٜ6666565656>h7:h7=57=57=57]>h7]>h7m 7m 7m 7m 7]>h7=57=576>h6565666=56=55ٜ6=56=56|ٜ6656>h7=57|ٜ7՛7W7%58S8)58185h898I}h8I}h8Qd58UW8UW8YK8]>h8]>h8YK8UW8Qd58I}h85h8)577>h7՛7]>h6>h6566=56=55ٜ6=56=56665656565656>h6>h7:h7=57=57=57=57=57=57=57=57=57=57=57:h6>h6565666=56=55ٜ6=56=56|ٜ66656ٜ7]>h77Ŋ7%58S8)585h8I}h8Qd58UW8UW8UW8UW8UW8Qd58Qd58Qd58I}h8I}h89818-՛87 7>h7h7!47=56>h6566=56=56=56=5666565656>h6>h6ٜ7:h7:h7:h77=57=57=57=57=57=57=57=57=57:h6>h6>h6565666|ٜ6=55ٜ6=56=56|ٜ66656>h7=57!47h7%58`48-՛898Qd58]>h8t8x58x58x58t8t8i8UW8Qd58E85h818)58!47 7%57Ŋ7՛7|ٜ7=56>h6566=55ٜ6=56=56665656ٜ7=57=57Mp7]>h7]>h7Mp7=57=57=57=57=57=57=5777:h6>h6>h6>h6565656666=56=55|ٜ6=56=56665657=57|ٜ7՛7>h8`4818I}h8UW8t8f8Y8MN8G8G8G8Y8f8t8]>h8Qd5898-՛877%57W7՛77]>h7=5656566=56=55ٜ6=56|ٜ6656>h7=57]>h7:h77՛7՛7՛7՛77!47|ٜ7]>h7=57=57=577:h6>h6>h65656565656666=56=56=56=5665657:h7]>h77W8`4818Qd58t8`48G84888888N848G8`48i8Qd585h8)57ٜ7%57Ŋ7՛7!47=57656566=56=55ٜ6=5665657=57m 77h7W7%57%57%57%57>h7W7h7՛77|ٜ7=57=57=56ٜ6>h65656565656666=56=55ٜ6=56=5665657=57|ٜ7h7%5818UW8`484888՛888h88՛8888-8S8x58UW85h8%7%57W7՛7:h7=57:h656566|ٜ6=55ٜ6=56=56656>h7Mp77W7%58:h8)58181818-՛8)58 G7 7>h7h7՛7|ٜ7]>h7=57:h6>h65656566666=56=55ٜ5ٜ6=5665657=57!47W8S8I}h8f888>h8888 88>h8W8}h8ÐN8888:h8`48]>h85h87%57h7!47Mp76565666=55ٜ5ٜ6=56=56=566577|ٜ7h7%58)585h8Qd58i8t8x58t8i8UW8I}h8187%57W7՛7:h7Mp7=56>h6565656666=56=56=56=5666577|ٜ7W88Qd58@889V9!49 (99 (9'9MN9c[88%58K8}h8888Y8i8987>h7՛7|ٜ7=56>h65666=56=55ٜ6=56=56=566657=577W88E8i8Y84888888@8`48i8I}h8-՛7ٜ7W7՛7|ٜ7=57:h656565666|ٜ6=56=55ٜ6=56=56656>h7]>h7h8`48Qd588>h9MN9 979I}h9Mp9Mp9I}h9;9)59N9MN8ٜ88>h8ÐN8՛88G8t8E87>h7՛7]>h76565666=56=55ٜ6=56=56=566657=57՛7%585h8t84888]8>h88888>h8d5888!48`48]>h85h8S7W7՛7|ٜ7=56>h6565666=56=56=55ٜ6=56656>h7=57՛7%58I}h889 (9?9a19x59.9Ȕ9Pt99s9S]999 9 @8ٜ88W888@8t8E87>h77=56ٜ656566|ٜ6=55ٜ5ٜ6=56=56=56665657=57h8 G8UW8488%58ٜ9Y9 @9 =9 =9 @9MN9c[85888ÐN88G8t898S7W77]>h7=56565666|ٜ6=55ٜ5ٜ6=56656>h7=57!47>h898859([9ZG9Pt9!9N99999!49ޡ9d(\9?9 9MN858>h8ÐN8848t8E87W77=56>h65666|ٜ6=55ٜ5ٜ6=56=56|ٜ66656>h7m 7W8-՛8f8՛8h9 J(9 (9([93µ97999795h9*9 9u9MN858QO8848t85h7ٜ7W77=56ٜ656566|ٜ6=55ٜ5ٜ6=56=56|ٜ6656ٜ7=577W818'8O96B9x59m;99O:vx:: n999.;9|9Pt9a196B9N9c[88w8848x58E8:h7W7!47=56565666=56=55ٜ6=56=56|ٜ6665657=577%58E8!4889 @9&9A9Ra9f"9s9u9u9s9f"9VTu9I}h979&9'8O8>h88:h8i817 7h7|ٜ7=56>h65666=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56=56|ٜ66656>h7=57m 7՛7>h8)58G9c[9H949Ȁ:;:<':[D:i:f|:Ra:2Gn:999h99Nm9)59 @858QO8՛8-8x58E8S7W7:h7=56565666=56=56=55ٜ6=56=566656>h7=57:h7Ŋ88i89f9 9G9m 99!499m;99A999S9u9]>h9G9/N98O8K88MN8UW8)57%57՛7]>h7656566=56=55ٜ5ٜ5ٜ6=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56|ٜ6665657-՛7]>h7!47՛7>h88E849 C9f"9J:a:VTu::h:Gn:$:5:y:w%:O+K:!h99[99s9<[9N9c[888h8!48x5898`47p7|ٜ7=56565666=56=56=55ٜ6=56=56|ٜ665657=57!47W8`48I}h8@8QO94979f"9:h9[99H9h99h9A99999`49i9I}h9-՛9-858}h88|ٜ8E8`47W7!47=56>h65666=55ٜ5ٜ5ٜ6=56=56=56=56=56=56=56=56=56=56=56=56=56=56|ٜ6|ٜ6|ٜ666665656>h7=57|ٜ7՛7%58`4818UW8:h8}h999N(:Ls:ʼn:N ;0;sm;!;";: :>: :O:9H99{9Mp9&9MN8 888x58=58`47W7!47=56565666|ٜ6=56=56=55ٜ5ٜ5ٜ6=56=56|ٜ66657:h7|ٜ7W8`4898|ٜ8859 9Ls9f99m: ^:"y:7R:CN:EJ:;:)$:9O9m9999i9F9&9 C8O88:h8a18-՛7%57՛7m 7=5656566=55ٜ5ٜ5ٜ6=56=56=56=56=56=56=56=56=56|ٜ6|ٜ666666666565656ٜ7=57:h7h7%5818i8489c[9%9a19:.:|e:J;!;h;H;;L;,;_;([:::z:::d95909d(\96B9$[858}h88f8E8S7W7!47=56>h6565666=56=56=55ٜ5|ٜ6=56=56=56=5666665656>h7=57՛7 898t88W9MN919a199.;:S:84:i:C:=:q::l:uq<:ZH:3:9߶999]9`49999c[8>h88`48E8`47W7!47=56>h6566=56=55ٜ5ٜ6=56=56=56=56=56=56=56=56|ٜ6666666656565656>h6ٜ7=57m 77W88]>h88>h9 J(95h9s9N:`k:q>:;T;w;c;3@;0k;[/;I;G;;;0M::c:faE:9Z99t9A99c[8>h88Y8I}h8!h7>h7՛7]>h76565666|ٜ6=56=56=55ٜ5ٜ66656565656>h6>h7=57=57!47>h8-՛8t88ÐN8ٜ99I}h9{9pa9>h:)$:q>:f:7:ܿ:ɥ::T:1:Gn:i:ttb:H:e9+999x59Mp90(90858848]>h8)57%57՛7m 7:h6566|ٜ6=55ٜ6=56=56=56=56=56=56=56|ٜ6666666565656>h6>h7:h7=57=57]>h7!47՛7W8)58x58ÐN949>9)91b:::;/;;E;KT<_<7Och6565666=56=56=56=55ٜ6=56=56=5656>h7=57=57]>h7|ٜ77՛7h7%58-՛8i88W9f9N9;9qB99:Z:a1:}:e;;1:;L;Wϻ;SN;>s;":;f:Ϡ:W:}:KR:9G9W.99f"9A9 9S8888|ٜ85h7 7h7:h7=5656566=55ٜ5ٜ5ٜ6=56=56=56=56=56=56|ٜ666666565656ٜ7=57=57]>h7|ٜ7!477՛7h7>h8!h8t8>h93µ9{9s:8:G:(;[; ;-7<Kh7՛7m 7=565656666=56=56=56=55ٜ5ٜ6=56|ٜ6657]>h7!47՛7Ŋ7>h7 8818I}h8f88>h9Y9 9A9kO99“u:a:S:Z:Ϡ;C;S;i;0;;;@;H;}X ;Il;f:W:P:xg:@: X9"99}u9Oj92988ÐN8@8Qd58%7>h77=56>h6566=56=55ٜ5ٜ6=56=56=56=56=56=56=56|ٜ66666565656>h7=57]>h7!47՛7՛7h7Ŋ7W7%58%8Qd58489F95:'j::;P;:;َ<:yL<ʎ<<<"== ~=t< #h88t817%57՛7|ٜ76566|ٜ6=56=56=55ٜ5ٜ6=56=56=56=56=56=56=56=56=56=56=56=56|ٜ6666565656ٜ7=57:h7՛7W7>h7%57%57 8)58ph89c[96B99H:i:TZ;@;T;= %<6<-h656566666=56=56=56=55ٜ5ٜ6=56=56=56=56=566657:h7]>h785h8YK8`48-88W89MN9 9;9]>h999.: 8:GD~:0:}M;;B;0;:;<,<<-r<6><1<"W< t;<;h;;]:;:m:|:hZ:%1+9U9]{99XN(96B9858µ8S8I}h87W77=56>h65666|ٜ6=56=56=56=56=56=56|ٜ66666666666666666665656>h77=57!47h7>h7 8 G8)585h8|ٜ8ÐN949I}h99Tu:CQ:&;@;;W<=k=C==8=b==K]=kH<ܰ.<@h88MN8i8987>h7՛7|ٜ7=56>h6565656666|ٜ6=56=56=56=55ٜ5ٜ6=56=56=56=56|ٜ666656ٜ7]>h7՛7>h8!48!488QO859 C9949Mp9t9499j: X:;:w%::X;.;t0;h_;J<F<*<=x<_<~<]<~P<_c<;Z~<H;4;v;";X};:Ƞ*:vx:ZG:9Z9y9x59I}h9$9Y8W88ph8177W7՛7m 7=56>h656565656565656>h6>h77=57=57=57=57=57=57=57=576>h6565666665657:h7=57|ٜ7՛7W7%58`48)585h8x58}h9N9b.9A::Y8:ZU;;;ۻ;<9>51>$ Q>T>===y0I=/S<<<[< ;(;c ;::r;x:%1+9b9]{9Pt9`4999 (9f8p88Y8]>h85h8:h7>h7՛7|ٜ7=57:h6>h6565656666|ٜ6=56=56=56=56=55ٜ5ٜ6=56=56=56|ٜ66665656>h7=57|ٜ7՛7%58)58Qd58|ٜ89V9N9/N9F9a19~O9T9B9%5:Z:BT>:p:{:p; -;J;ޯ;;-<p<&iHh85h8%7 7%57W7h7՛7!47!47!477՛7h7>h7%57 7ٜ8S88888S7 7%57h77=57:h65656>h7=57|ٜ7՛7h7>h7%58S8)585h8a189 @9YK9::f|:g ;pF;;<7j >;_n>^>jć>c}>NN>->a==ܓ=Bբ= <*h6565656666|ٜ6=56=56=56=56=56|ٜ66665656>h7=57]>h77W88E8x58488d59([9;9Qd59s9J(99+9 :D:KR:r:-::܌;;VD;cv;xV;١<eh88@8f8ph8YK8Qd58I}h8=585h85h85h898I}h8UW8t8x58Y8488888888@8`48]>h85h87%57W7h7W7%58:h81898Qd58i8f848N8596B9:h9:SU:Jy;Ȣ;;³<r)Ty>a+>p>>(>V>b0c>8)> =Ѹ=<=JN=H<h65656565666666565656>h6ٜ7=57]>h7!47h7 85h8x58889f9 =9 (9qB99'9c99B:D:KR:u2:$:$:z];;();Y;ޯ; 5; ;<<.W9N8O8>h8ÐN888888888N88ǃ8QO888 8ٜ9]9 =9u9 (99 (9!49 J(9c[88>h888S8t8e%58i8`48:h888}h89]99A9x59B:(%:Z:m;T;B< 7b>:>qO>>>`>>v>:>X>*m>Ls=m>=Խ=B`= (3<<d<.K;; ;{^U;+}:}:s:r;x:1:999~O9Oj919'8ٜ8>h888Y8i8E8)58`47%57W7՛7!47m 7=57=57:h6>h6>h6>h6>h6ٜ7=57=57m 7!47՛7W7%58`48-՛8]>h848ÐN859 =9 929A9Kw9XN(99+9:V:!h:HAX:ph:I:Gn:a:;;2W<;Z8;#;;k;՞;Vo<e<)ph9p9t9u9s9g9WQO9G96B9&9u9MN858%58D8889c[9 @9 (90(9I}h9s9;9:V:`t,:U;0}$;sQ;D<)p{>E>rs>a> >(g>u>ׄ>lC>>}>=ߘh=&=t=/=~5<[;xH-;Xi;J;u=;͘Q;4<<<)(> v>C>g>T>#> >>j%>`Q[><>1=sl=P==H1=0<<*9*9949c[88D8888S8t8Qd585h8)588`48`48:h8)5818E8UW8t8G888>h8ٜ909)59I}h9s99h99“u9;99H9:O:a1:r:d: (::a:qW;;.u;D.V;W;kaS;3;P;;;C;-;; <<:u<#v<8^>!'>< >Vp>iO.>t>|;>v=>]>;>>0=t=^=o=?=<<:]:W:"A9B9+999l(9VTu9H9990(9 99MN8ٜ88p8՛88:h8Y8x58t8t8|ٜ8S8-888QO89S9N9-՛9H9l(9n9j99(:: X:+E:6B:;:>:D(::i:::ҫ:ۃ;;;,;Bd ;Tz];`;l^,;x;w;;;JP;;; ;B;\N;NQ;*< </h<p8</<l;i;̾;; ;;pd;0M:::˻:ar:)5:999{9m 9[D9YK9d(\9s994999A: X:$:?:V?:ju:r:{:=s::p+:`k:v::JC: :}X :kQ:O+K:([::h99Ŋ9959[9(9.9A:4:7v:m :1:a*;1;f;8<e<^r!>P>-C>@k>L>Ka>Co>->`\=`#='=~=w =@=="<ٵ<)_<*-h8}h858858w8889c[9 =9919F9a19)9u99+:m:.u:Qk:jT:x(:::i:J(::5:{:+0:ϊ:r:ٜ;; ;4`;Fn;RE;X0;[T;]N6;`;d8);h;l;q;v;;;N;:u;;6;;Y ;;8;;[;k;;g;2';:F::r:GH: (9(9+99J(9x59t9x59]9499+91:i:;:i::J^:8:1}:::m:8m;Y;`B;;:(w:m:]:c:I:vn:W:2:n: X:.:d:4:!h:BT>:p:=:ɼ;;l;C<<6> ,>l>!i>(f1>'3>f> 7=Q=:=&==cM=6y=;w;Y;w;]p;=Dc; :.:.;:JC:s8R:O+K:$:V9m99 (9n9{9{9!9.959Ŋ9j:"y:W:k:j::d;;' C;9;GT;Ue;] ;c!;dG;_g;SU;?];%; =:u:G:::uq<:d:T:Q:V?:hZ:}X :1:;;C;ӯ;G<lE<[x<<9H=|=PmH=ˋ=9n=`=*=q=7>>>-=_=v_=H== o=s"=G=!Y=<<<=w ==t=F="z=I<Fh9Z9ǃ9.;9]{9999t9kO9d(\9c+9h9t9)9Ȕ9'99T99H::%:S]:xg::g :.r: ; *;; !;&;([;$Œ;M;;:u; i:):ܧ:.:q :썕::w:[::b::We::@:|::sw:he:W:Oj:Lb:S]:f|:y:S:q:]:`:$:v:ئ::h:xg:^:<:"y: X9(99:9m;9{9:h9Ȕ99'9A9h9::=5:vL:P:;$[;H;z;|;r;;,;!;:;;;;;U^;`B;fq;=Dc;G*;'K::4:4::Ʀv:; y;1;o";G;ɝ<<4 <<<,=p=D)=tpo=F=FV======E=wu=b=KU=/ =<<^<:$:K:m:: J(9O9"9m9[9999=9J(9G999A9՛9.;9}h9":c[:Z:2:\::J^:mr:ڦ;s(;q;%;3µ;>;BF;B;;O;/;!1;=;Y:(:":(%::Ĭ:::C:c::c:::p:ZH:Fn:1:"y::99H9":k:S:28:Qd5:f|:mK8:mɥ:f|:TZ:>`:%1+:9^U9H9H9:99949Ȕ9V99!99j9+9<::R!:d:ն:O;0;kaS;l;;;ȷ;טl;; M;ԉ;;( ;;m-;vx;y;Oj;(); |:ܧ:Z::܌;$2; ;SN;a;r ; Z<]7;١;AX;!;x;;;t;L$;(;;F:}:M; |;)S;Z;;µ;0^<=.[=G=<B:s:؋::4:::9:-:5::p:M:z :M:i:: :yd:he:Ra:Bҫ:8s:4A":4X:7R:8:84:4A":+E:"y:f:9(9d59ÐN9+9.;999N(9H:::n:([:@:ZH:ur::W.:Z:m; ;i;0M;?];I;N;Ma;E:;9!;(;:޹::]{:$[::t:e:Qk::mr:&.:`k:S99s9[9(9j99499x59kO9`49b.9r9~O9:h9 (9j9u99M99m;99;9n9{9{9u9s9kO9f"9f"9kO9s9)9:h99Gn9::I:`4:c:%l;/P;k;;;';b;x;ܘy;ۛ;a;Ǔ;;;';H;Z;4p;m;::j:%;;@;L$;;1;oy<gw<88{; ;wَ;P;+w;sQ:::Z:Q;ۈ;();b;;;y>h;G;@z&;j;;Z;;;;;/;lg;NN ;*; ::a:F::³:e;_;)$;j%C;e; <>@<&ǐ<`U:m:D:%pa:/:8:Cυ:R!:dg:sw::`k:D-::D~:΍C:d5:΍C::'::::h:}:f|9B999n9s9Qd59@929&9 9 (9$[9 =9S9c[8O858O8%58>h8QO8j8ÐN8ÐN8ÐN8ÐN8d58>h8O859c[9Y9MN9MN9S9c[9c[8O8858ٜ9c[9]9 J(909 (9$93µ9Bu9Ra9kO99'99:!|:R{:z::::gw: :ߖ:?:Ƞ*:Zp:v:Z:{:j:YK:R!:SU:e%5:{^U:V:; =;I;; ;8)< BAh8888888>h8W8w8}h8}h8d58>h818 859c[9 @99 919<[9Ls9a19x59!499߶:m:.:O:i:t:za|:xg:rz:f|:R!:91b:$4Q:K: J(:k:::"y:L4:z:5:';' C;kaS; ;WJ;ԗ<c[<&<o<<W< ;); ;@;D;;H;@::: :|:r:W:0(:;9O9999v9VTu9;9$9$[9V8ٜ8O8>h8K8>h888ٜ9c[9Y9 @9u9$96B9I}h9YK9m 9x59ޡ9Ȕ949u9pa9J99m9"9:S: n: n:9X 9(9G99Ɔ9ÐN9H9m9ݼ9:.: :':S: @:"A:)5:84:Jx:ZH:kQ:uq<:~T:$$:F:x(:l:X_:@:%pa:49"99kO9I}h9/N9N9V858%58>h8QO8d58}h8ÐN88888'8:h8G8MN8Y8`48|ٜ8x58t8t8|ٜ8Y8@8!48888888888888588ÐN8D8859c[9 =9u9 9([96B9I}h9f"9T99J9Ŋ9G9}:$$:99H9}h99N9f9j99N9!9ݼ::N.r:T:;;6;rـ;;;);;ӕ8;܈;%;zO;U;[;;b̰;([:a|::-::i:G:'j:K9d9s999{9f"9G90(9 (9V85888}h8h88h888h888՛888d589c[949 919<[9I}h9XN(9f"9v9{9499u99"9]9G9H9ϻ9m9H9[9:99N9Gn9.;9Ŋ9j9ݼ9"9d::V:: X::D:'j:5:CQ:Lb:Q$:N.r:Bҫ:0:D:9A9+9|9Pt929 (9Y8 8}h8888888848G8Y8|ٜ8t8t8i8]>h8UW8Qd58Qd58I}h8I}h8I}h8Mp8UW8e%58t8x58`48Y8MN8MN8S8Y8Y8Y8Y8Y8MN8G8488888}h8>h8O858O9c[9 @9N9)59?9Ra9kO9x59T9Ȕ9G9Pt99w\9s9l(9m 9s9x59Y9'9՛9QO::[:S: ;.;.$;Z;~O;{*;~;`;;MN;r;G;p8:ߖ:&::^;B:7:D: ^999:99:h9w\9YK9A9'9!49c[88ÐN88!48G8Y8`48`48f8|ٜ8x58x58x58x58x58|ٜ8Y8488}h89c[9499)5989I}h9YK9s9ޡ9499j9u99h99N95999 (9N999]{99[9č(99s9m9d59Tu9H9U95:MN::$::': X9^U9N(9[999s9Ls9MN858]88N8MN8`48|ٜ8x58x58x58t8i8]>h8Qd58I}h8I}h8=585h85h81818-՛8)58)58)58-՛8185h898I}h8Qd58Qd58UW8YK8]>h8]>h8]>h8]>h8]>h8YK8YK8]>h8i8t8x58f8Y8@8888N888Ŋ88859MN9N9 9)59/N9/N9/N9-՛9.u9-՛90(96B9>9I}h9YK9u99u9+:$:f|:3::;;"A;1j;7;3T;&q;v:u:p:c:t:=k:K99m9+959 (9H9x59a19H9299 @8ٜ88888Y8t8UW8I}h8I}h8E8E8985h8181818-՛8-՛8-՛818E8i8Y888889MN9u9$96B9I}h9[D9s9)9J(9999!49;99Ȕ9.9]9{99!9-9u99m;999]{9]{99P9Gn9999m9d59999A99w\9S]96B98>h888MN8t8UW8Qd58I}h8I}h8E8985h81818-՛8)58)58!h88S8`47ٜ7 7 7 7 7ٜ8`48!48%8)58-՛818185h85h85h85h85h81818181818185h85h898I}h8Qd58i8t8|ٜ8`48`48`48Y84888j8>h88859f9c[9Pt9 =99 9/N9?9Qd59u9-9B9:(%:a<:T:W:::Ӽ:a:ʙ:C:i::k:5:MN99u99:h9)9r9VTu9D(929 9 =8O88p8՛88Y8i8E8-՛8)588S8`47ٜ7 7%57%57%57%57%57%57%57%57 8!h85h8i8MN888+8O9 @9 (9)5999I}h9WQO9f"9s9t9v9v9t9s9g9d(\9c+9d(\9f"9s9v9}u9ޡ9Pt9Ȕ9n9H9C9C9999.999999Pt9u9XN(9>9$97A8ٜ88:h8x58UW8E818)588-8`47ٜ7ٜ7 7 7%57%57%57%57%57>h7>h7>h7W7W7W7W7>h7>h7%57%57 77ٜ8`48 G8!48!48:h8`47ٜ77 7%57%57%57%57%57%57%57ٜ8!48)58-՛8-՛818-՛81818I}h8YK8x58MN8!48888p8>h88O9MN9u9&999Oj9w\99+9n:!h:I:kO:~T:p:G:p:F:ph:T:+E:99j99x59`49H95h9 9!49Pt858>h8888G8|ٜ8YK898)57ٜ7%57>h7W7W7Ŋ7h7h7՛7՛7՛7՛7՛7՛7՛7h7h7>h7ٜ8-՛8Qd58f8!488W89]9*9 9*96B9@9G9I}h9Kw9I}h9I}h9G9Bu9A9?9A9D(9I}h9Ls9Oj9XN(9]>h9b.9d(\9f"9f"9f"9f"9kO9qB9s9u9w\9u9qB9a19Mp9:9&9'9c[8%588Y8m 8I}h818!h77%57>h7W7W7W7Ŋ7Ŋ7Ŋ7Ŋ7Ŋ7h7h7h7՛7՛7՛7՛7՛7՛7՛7՛7h7h7Ŋ7W7W7>h7>h7>h7>h7>h7>h7>h7W7W7h7՛7՛7՛77777՛7՛7h7h7W7W7W7W7>h7%57ٜ8)585h8Qd58t8Y8@8888W8 9c[949 96B9Oj9x599:9D: ~:"::3DH:Bҫ:EJ:?:/P:n:9p9949w\9VTu999 9 G858>h8ÐN888G8`48t8UW8I}h8187%57>h7p7՛7՛7՛77!47|ٜ7m 7m 7m 7m 7|ٜ7|ٜ7|ٜ7!47!477h7>h78-՛8Qd58x58488ÐN8%58ٜ9S949N9 9$9'9([9([9&9$9 9 9 9 9"A9&9)59/N93µ96B97999;9<[9@9A9A9CN9E9E9A9<[96B9)599 =8O8%588h848UW8=58-՛8`47%57W7h7՛777!47!47!47!47!47!47!47!47!47!47!47S7|ٜ7|ٜ7|ٜ7|ٜ7|ٜ7!47!4777՛7՛7՛7՛7՛7՛7՛7՛777!47m 7Mp7=57=57=577-՛7=57=57=57=57=57]>h7]>h7m 7|ٜ7!47՛7W7%58!48-՛8E8UW8x58MN8N88ÐN888ٜ9 =9 96B9Mp9s9:h9m;99j9U99d9h9G9999z9YK9<[9 9 J(88ÐN88G8x58e%58Qd58E85h8-՛87 7%57W7՛77!47:h7|ٜ7]>h7=57=57=57=57=57=57=57=57=57=57Mp7m 7:h77h7>h8`4818Qd58x58@88h8d58859c[9]9MN9 J(9 @9 @9 G9MN9MN9S9V9S9MN9MN9 @9:h909!49u9 (999 9 9 9 9 9 9 (99 @9c[88QO888@8`48t818%7 7>h7Ŋ7՛7!47|ٜ7]>h7=57=57=57=57=57=57=57=57=57=57=57=57=57=57=57=57=57=57=57=57=57]>h7m 7m 7|ٜ7|ٜ7|ٜ7|ٜ7m 7m 7]>h7=57=576>h656565656565656565656565656>h7:h7=57|ٜ77h7>h7 8)585h8UW8|ٜ8:h888>h859 J(9 (90(9F9a19y9:h99A9j999{9G9x59[D9A9)59$[8O8QO8h8Y8]>h85h8)587ٜ7%57%57>h7W7՛77!47m 7Mp7=57=57=576ٜ6>h6>h6565656>h6>h6>h7:h7=57=57]>h7!47՛7W7%58818Qd58t8Y8'888ÐN8QO8>h8%588888888%58%58%58%588 885858O9c[9c[9c[9c[9`49c[9c[8O8588QO88848Y8t8a18Qd58E7ٜ7%57W7h77|ٜ7]>h7=576ٜ6>h6>h6>h6>h6>h6ٜ7:h7:h77:h7:h6ٜ6>h6>h6>h6>h6>h6>h6>h6>h6>h7:h77-՛7=57=57-՛77:h6>h6>h6565656666666|ٜ6|ٜ666666565656>h7=57m 77՛7>h7ٜ818Qd58x58G888>h859V9!49 93µ9F9Ra9e%59s9s9s9kO9]>h9Ls9;9)59u9Y8O8588x58I}h8%7%57W7h7՛7՛77:h7m 7=57=57=57:h6ٜ6>h6>h6>h65656565656565656565656>h77=57m 77՛7W7%58!h818I}h8e%58x58Y8488888՛8N888888՛88888՛88858ÐN8}h8d58W8QO8W8d58}h88՛88!48S8t8YK8I}h89818-՛8%7>h7W7՛77m 7=57-՛6>h65656565656565656565656565656565656565656565656565656565656565656566666|ٜ6=56=56=56=56=56=56=56=56=56=5666665656>h7=57m 7՛7W7ٜ818UW8`4848h88QO8O8O9S909 (9 9)59193µ929,9$9 (97A9c[88W88:h8ph85h7ٜ7W7՛7!47|ٜ7=57=576>h6>h6565656565656565656666666656565656>h7=57=57|ٜ77h7>h7 881898Qd58]>h8t8x58Y8MN8G8@8484848484848:h8@8G8MN8MN8G8G8@84848'88888!4848G8Y8t8YK8I}h85h8-՛8%88`47 7%57h7՛7!47]>h7=56>h656565666666656565656565656566666666666666666666|ٜ6=56=56=56=55ٜ5ٜ5ٜ6=56=56=5666665657=57|ٜ7՛7%58)58I}h8t8G8888}h8>h8858ٜ9c[9c[9]9]9c[9c[858 8>h8ǃ888Y8]>h817 7W77m 7=57:h6>h6565656565656565666666666666666565656>h7=57]>h7:h7՛7h7>h7%58:h8)58185h8I}h8Qd58UW8e%58i8t8t8t8t8t8t8t8m 8i8]>h8UW8UW8UW8UW8UW8YK8]>h8a18i8i8i8i8]>h8UW8Qd58A818)587ٜ7 7%57%57%57>h7W7!47|ٜ7=57=56>h65656666666666666666666|ٜ6|ٜ6=56=56=56=56=56=56=56=56=56|ٜ6|ٜ6=56=56=56=56=56=56=55ٜ5ٜ6=56=56=56|ٜ6665657:h7m 7՛7%58)58I}h8ph8Y8-88888ÐN8}h8]8QO8QO8QO8j8ÐN88՛88848Y8i8I}h8)57%57Ŋ77]>h7=56>h6565666666666666|ٜ6|ٜ6=56=56=56=56=56|ٜ66666565657:h7=57]>h7!47՛7h7W7%57 8:h8%8)5818185h8=58E8I}h8I}h8E8E8=58985h85h818-՛8)58)58)58)58)58)58-՛8-՛8-՛8-՛8)58)58%8 G77%57%57>h7W7W7W7Ŋ7h7՛7՛7]>h7=57:h656565666|ٜ6=56=56=56=56=56=56|ٜ6|ٜ6666|ٜ6|ٜ6=56=56=56=56=56=56=56=56=55ٜ5ٜ6=56=56=56=56=56=56=56=55ٜ5ٜ5ٜ6=56=56=566656577|ٜ7h7%58)58I}h8t8Y848888՛8N8N8՛88888848MN8`48t8UW8E8-՛8`47%57h7!47=5765656666|ٜ6=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56|ٜ66665656>h7:h7=57]>h7:h77՛7p7>h7%57%57 7ٜ8 G88%8)58)58)58)58%88!48`47ٜ7 7%57%57%57>h7>h7%57%57%57%57%57%57%57%57>h7W7Ŋ7h7՛7՛7՛7՛7՛7՛77!47|ٜ7-՛6>h65656666=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=55ٜ5ٜ5ٜ6=56=56=566656>h7=577>h885h8]>h8f8G8N8888588888848G8`48t8YK8I}h85h8)57ٜ7%57Ŋ7՛7|ٜ7=57:h65656666=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56=56|ٜ6666565656ٜ7=57=57|ٜ7!47՛7՛7h7W7W7>h7%57%57%57%57%57%57%57%57%57>h7>h7W7W7h7h7՛7՛7՛7՛7՛7՛7՛7՛7՛7՛7՛7՛777!47!47!47:h7|ٜ7|ٜ7|ٜ7m 7Mp7=56>h6565666|ٜ6=56=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56=56=566657=57:h7W7ٜ85h8UW8|ٜ8G88888858888N8@8Y8x58e%58I}h818)577%57Ŋ7՛7!47]>h7=56ٜ656565666=56=56=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56=56=56=56=56=56|ٜ6666565656>h7=57=57]>h7|ٜ7!477՛7՛7՛7h7h7h7Ŋ7Ŋ7Ŋ7h7h7h7՛7՛7՛777!47!47:h7:h7:h7!47!47!47!47!47S7|ٜ7|ٜ7m 7m 7]>h7]>h7]>h7=57=57=57=57=57=56>h6565666|ٜ6=56=56=55ٜ5ٜ6=56|ٜ6656>h7m 7h7 818YK8`484888՛888h8՛88h8848S8x58]>h8I}h8187%57W7՛7!47m 7=57=56>h656565666=56=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56|ٜ6666565656>h6ٜ7=57=57]>h7m 7|ٜ7!47!477777777777!47!47|ٜ7|ٜ7m 7m 7m 7m 7m 7m 7m 7]>h7]>h7]>h7=57=57=57=57=57=57=57=57=57=57-՛7:h6>h6>h6565666|ٜ6=56=56=55|ٜ5ٜ6=56656>h7]>h7՛7%5818]>h8Y888h8ÐN8}h8}h8ǃ8ÐN88888:h8Y8t8Qd585h87%57W7՛7|ٜ7Mp7=57:h6>h6565656666=56=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56=566666565656>h6ٜ7=57=57=57]>h7]>h7m 7m 7|ٜ7|ٜ7|ٜ7|ٜ7|ٜ7|ٜ7|ٜ7|ٜ7m 7m 7m 7]>h7]>h7]>h7]>h7]>h7Mp7Mp7=57=57=57=57=57=57=57=577:h7:h6ٜ6>h6>h6>h6>h6565656666=56=56=55ٜ6=56=56657=57՛7%5818YK8Y888ÐN8QO8>h88888>h8d58ÐN8՛888G8`48i8I}h8-՛7ٜ7>h7՛7!47]>h7=57:h6>h6565656666|ٜ6=56=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56|ٜ666656565656>h6ٜ77=57=57=57=57=57=57=57Mp7]>h7]>h7]>h7]>h7]>h7]>h7]>h7]>h7Mp7=57=57=57=57=57=57=57=57=57=57=577:h6ٜ6>h6>h6>h6>h656565656565666=56=56=55ٜ6=56656ٜ7!47>h8)58UW8Y88h8d5818 88888>h8}h8888G8x58YK898)57%57W7՛7|ٜ7=57-՛6>h656565656666=56=56=56=55ٜ5|ٜ5ٜ5ٜ6=56=56=56=56=56=56|ٜ666656565656>h6>h7:h7=57=57=57=57=57=57=57=57=57=57Mp7Mp7Mp7Mp7=57=57=57=57=57=57=57=57=57=57=57=577:h6>h6>h6>h65656565656565666|ٜ6=56=56=55ٜ6=56657Mp7h88Qd58Y888QO8O858O9c[9c[8ٜ8588QO888!48Y8t8Qd585h87%57h77m 7=57:h6>h6565656666|ٜ6=56=56=55ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56666656565656>h6>h7:h77=57=57=57=57=57=57=57=57Mp7Mp7Mp7=57=57=57=57=57=57=57=57=57=57=57=57=57-՛7:h6>h6>h6>h65656565656666|ٜ6=56=56=55ٜ5ٜ6=5657:h77%585h8x5888QO88O9c[9S9MN9V9c[8O88>h8ÐN88'8Y8i8I}h8-՛8`47>h7h7!47]>h7=57:h6>h6565656666=56=56=56=55ٜ5ٜ5ٜ6=56=56=56=56|ٜ666656565656>h6>h7:h77=57=57=57=57=57=57=57Mp7Mp7Mp7=57=57=57=57=57=57=57=57=57=57=57=57=57=57=576>h6>h656565656566666=56=56=55ٜ6=56657=57h88UW8G88d58 8O9V9 @9 =9 =9 @9MN9c[85818ÐN8848f8YK8=58)57 7W7՛7!47]>h7=57:h6>h656565666|ٜ6=56=56=55ٜ5ٜ5ٜ6=56=56=56|ٜ666656565656>h6>h7:h7=57=57=57=57=57=57=57=57Mp7Mp7Mp7Mp7Mp7]>h7]>h7]>h7]>h7]>h7]>h7]>h7]>h7]>h7Mp7=57=57=57-՛6ٜ6>h6565656566666=56=56=55ٜ6=566>h7|ٜ7>h818t888189Y9 @909!49$[949 @9`4858%58ÐN8848x58Qd585h87%57W7՛7!47]>h7=57:h6>h656565666|ٜ6=56=55ٜ5|ٜ5ٜ6=56=56=5666656565656>h6>h6ٜ77=57=57=57=57=57=57=57=57Mp7]>h7]>h7]>h7]>h7]>h7m 7m 7|ٜ7|ٜ7|ٜ7|ٜ7|ٜ7m 7m 7]>h7=57=57=576>h6565656566666=56=56=55ٜ6=56|ٜ657:h77 8E8Y88}h8 9c[9MN9499u99'9 =9Y88%58ÐN8h8G8t8I}h8-՛8`47%57Ŋ7՛7:h7]>h7=576>h656565666=56=56=55ٜ6=56=56=56|ٜ666656565656>h6>h7:h7=57=57=57=57=57=57=57=57Mp7]>h7]>h7]>h7m 7m 7|ٜ7|ٜ7:h7!47!47!47!47!47!47|ٜ7|ٜ7]>h7=57=57=57:h6>h65656565666|ٜ6=56=55ٜ6=56657=57՛8`48Qd58MN88W89c[9 @9$[9u9N9u9'9 =9]8588888S8i8E8)577>h7h7՛7:h7]>h7=57-՛6>h656565666=56=55ٜ5ٜ6=56=56=5666656565656>h6>h7:h77=57=57=57=57=57=57=57=57]>h7]>h7m 7|ٜ7|ٜ7:h7!47!4777777777!47|ٜ7m 7=57=576>h65656565666=56=56=56=56=56657=57h8!48Qd58G88QO89c[9 @9'99u9909 J(9c[88>h888`48UW85h8!h7%57W7h77:h7]>h7=57=56>h656565666=56=55ٜ6=56=56=5666656565656>h6>h6ٜ77=57=57=57=57=57=57=57=57]>h7]>h7m 7|ٜ7:h7!4777՛7՛7՛7՛7՛7՛7՛7՛7՛77!47|ٜ7m 7=57=56>h6565656666=56=55ٜ5ٜ6=56|ٜ6657=57h88Qd58MN88d589c[9MN97A9'9!49-9 =9V8O88p8848x58Mp818S7%57W7՛77:h7]>h7=57=57:h6>h6565666=56=56=56=56=5666656565656>h6>h6>h7:h77=57=57=57=57=57=57=57]>h7m 7|ٜ7|ٜ7!4777՛7՛7h7h7h7Ŋ7W7W7Ŋ7h7h7՛77!47|ٜ7Mp7=56>h6>h6565666|ٜ6=56=55ٜ6=56=5665657Mp7h8S8I}h8Y88ÐN88ٜ9]9MN9 =9 =9 @9S9c[88>h888MN8i898)577%57W7՛77:h7m 7=57=57:h6>h6565666=56=56=56=56=5666656565656>h6>h6>h7:h77=57=57=57=57=57=57=57]>h7m 7|ٜ7!47!477՛7՛7h7Ŋ7W7W7>h7>h7>h7>h7>h7W7W7h7՛77|ٜ7]>h7=57=56>h6565666=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56=56=56|ٜ6656>h7=57՛7 898x5888QO88ٜ9c[9Y9V9c[9f858%58}h8848x58Qd58187%57>h7h7՛77:h7m 7=57=57:h6>h6565666=55ٜ6=56=56=5666656565656>h6>h6ٜ7:h77-՛7=57=57=57=57=57=57]>h7m 7|ٜ7!4777՛7h7Ŋ7W7>h7%57%57%57%57%57%57%57%57>h7W7h77:h7]>h7=57=56>h6565666=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56=56=56=566656>h7=57՛7%5818i8G888>h8O858ٜ8ٜ858818}h8՛88Y8e%5898)577%57W7h7՛77:h7m 7Mp7=57:h6>h656566|ٜ6=55ٜ6=56=56=5666656565656>h6>h7:h777=57=57=57=57=57=57=57Mp7]>h7|ٜ7!477՛7՛7h7W7>h7%57%57 7ٜ8`48`48`47ٜ7 7%57%57W7h7՛7:h7|ٜ7=57:h6565666|ٜ6=55ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56=56=56=56=56=56=56665656>h7=577W8%8I}h8x5848858W8888888QO8ÐN888G8t8I}h8-՛8S7%57W7Ŋ7՛7՛77:h7m 7=57=57:h65656566|ٜ6=55ٜ6=56=56|ٜ66656565656>h6>h6ٜ7:h77=57=57=57=57=57=57=57=57=57]>h7|ٜ7!477՛7՛7Ŋ7W7%57%57ٜ8:h88)58)58)58)588`47 7%57W7h777m 7=56>h6565666=56=55ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56=56=56=56=56=56=566665656ٜ7=57!47Ŋ7 818YK8`48'8h8N858ÐN8ÐN8ÐN8h888G8t8Qd58187 7>h7W7h7՛77!47|ٜ7m 7=57=56>h6565666=56=55ٜ6=56=5666656565656>h6ٜ77=57=57=57=57=57=57=57=57=57=57=57]>h7m 7!477՛7h7W7%57%57ٜ88)58-՛8185h85h81818)587ٜ7%57W7՛7՛7!47]>h7=56>h6565666=56=55ٜ5ٜ5ٜ6=56=56=56=56=56=56=56=56=56=56|ٜ66665656>h7=57Mp7!47h7%58%8=58i8`48:h888888848Y8t8Qd585h8)577%57W7h7՛7՛77!47|ٜ7]>h7=57=56>h6565666=56=55ٜ6=56=56666565656>h7:h7-՛7=57=57=57=57=57=57=57=57=57=57=57=57]>h7|ٜ7!477՛7W7>h7%58`48)58185h8E8I}h8Qd58Qd58Qd58I}h8=5818)58`47%57W7W7՛7!47m 7=56>h6565666=56=56=55ٜ5ٜ6=56=56=56=56=56=56=56=56=56=56|ٜ66665656>h77=57m 77՛7>h7ٜ8-՛8I}h8a18x58Y8G8@8@8G8Y8x58i8Qd585h8)58`47%57>h7W7h7՛7՛77!47m 7Mp7=57:h6>h656566|ٜ6=55ٜ6=56=56|ٜ666565656>h7:h7=57=57=57=57Mp7=57=57=57=57=57=57=57=57]>h7m 7!477՛7W7>h7%58!48-՛85h8I}h8UW8i8t8x58x58x58t8a18Qd5898-՛8-7%58`47%57Ŋ7՛7|ٜ7=56>h65656666=56=56=55ٜ5ٜ6=56=56=56=56=56=56=56=56|ٜ6666565656>h7=57=57m 7!47՛7h7>h7%58818E8Qd58i8t8x58x58t8i8UW8I}h85h8)58S7%57%57W7h7՛7՛77!47|ٜ7]>h7=57=56>h6565666=56=55ٜ6=56=566665656>h7:h7=57=57]>h7m 7|ٜ7|ٜ7|ٜ7|ٜ7m 7m 7]>h7]>h7]>h7m 7|ٜ7!47՛7h7W7%57ٜ8)585h8I}h8]>h8x58Y8G848!48!4848@8S8f8m 8Qd585h8)58I}h8-՛8`47%57h77]>h7=56>h65656666=56=56=55ٜ5ٜ6=56=56=56=56=56=56=56=56|ٜ66665656>h77=57]>h7:h77՛7h7W7%57 8S8)581898I}h8Qd58Qd58Qd58Qd58I}h89818)58!47 7%57>h7W7h7՛7՛77:h7m 7Mp7=576>h6565666=56=56=56=56|ٜ6665656>h7:h7=57]>h7|ٜ7!4777՛7՛7777!47!47!477՛7h7W7%57ٜ8%818I}h8e%58|ٜ8G8!4888h8888՛8888G8|ٜ8]>h8@8|ٜ8YK85h87%57h77]>h7=56>h65656666=56=56=55ٜ6=56=56=56=56=56=56=56=56|ٜ666665656>h7=57]>h7|ٜ77՛7h7W7>h7%57 8`488)58)58185h85h898985h85h818)587ٜ7%57%57W7p7h7՛77!47|ٜ7]>h7=57=56ٜ65656566|ٜ6=55ٜ5ٜ6=56=5666565657:h7=57]>h7!477՛7h7W7W7W7W7W7h7h7Ŋ7W7>h7%5788-՛85h8I}h8i8f8@8888QO8%58 888 88%58>h8d58888W888@8t8I}h8-՛7 7W77m 7=56>h656565666=56=56=55ٜ6=56=56=56=56=56=56=56|ٜ6|ٜ66665656577=57|ٜ77՛7h7W7%57%57 8`488%8)58)58-՛8-՛81818181818-՛8)58!h8`47 7%57>h7W7h7՛7՛77!47m 7]>h7=57=56>h6565666=56=55ٜ5ٜ6=56=56|ٜ6665656>h7=57m 77՛7W7>h7%57 7 77 7 7 7 8`488-՛85h8I}h8UW8ph8`48G8888d588ٜ9]9 @97A90949:h9 =9 @9MN9Y9c[8589 @9c[88>h888`48UW817ٜ7W7՛7|ٜ7=57:h656565666=56=56=55ٜ5ٜ6=56=56=56=56=56=56|ٜ6666665656>h7=57=57:h7՛7h7W7%57%57ٜ8!48%8)58-՛818181818181818181818-՛8)587ٜ7%57%57>h7W7h7՛7՛77|ٜ7m 7=57=57:h6>h6565666=56=55ٜ5ٜ6=56=56=56665656>h7=57m 77h7>h7 8 G8)58-՛8181818185h898I}h8YK8t8Y8G8888}h8>h8 8ٜ9S9!49 9*93µ96B96B96B96B9290(9-՛9)59&9 9u96B9)59949c[88ÐN88Y8YK818`47>h7՛7!47=57=56>h6565666=56=56=56=55ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56|ٜ66666665656>h7=57]>h7!47՛7W7%57 8`48%8)5818185h898=58E8A8985h85h85h85h81818)58)58!47ٜ7%57%57W7Ŋ7h7՛77!47|ٜ7m 7=57=57:h6>h6565666=56=55ٜ5ٜ5ٜ5ٜ5ٜ5ٜ6=56=56=56=56=56=56=56=56=56|ٜ6665657=57m 7՛7W7%588-՛85h8I}h8UW8]>h8i8m 8t8x58Y8G888h8}h8>h89f9MN97A9N9 929A9Oj9d(\9n9s9s9n9f"9d(\9a19`49]>h9XN(9Mp9F9u9b.9Mp9;9)59u9]8O8ÐN88Y8UW818`47>h7՛7!47]>h7-՛65656666|ٜ6=56=56=56=56=56=56=56=56=56=56=56|ٜ666666665656>h7=57]>h7!47՛7W7%57ٜ8%8-՛81898I}h8I}h8Qd58Qd58Qd58Qd58Qd58Qd58I}h8E8985h85h818-՛8)58!477%57>h7W7h7՛7՛77!47|ٜ7m 7Mp7=576>h6565666|ٜ6=56=55ٜ5ٜ6=56=56=56=56=56=56=56=56=56=56|ٜ6|ٜ6|ٜ6|ٜ6|ٜ6|ٜ66665657=57m 7՛7>h8`48-՛8I}h8YK8t8`48S8G848!4888N8ÐN8>h88O9S9099&92999F9Nm9f"9{9!9{99999999$[9'949!9]9f9.9˻9v9YK9A9)59!49c[8888'8x58Qd58-՛7 7W7՛7!47=56ٜ656566666|ٜ6=56=56=56=56=56=56|ٜ6666666665656>h7=57]>h7!47՛7W7%58 G8)5818E8I}h8Qd58YK8i8i8i8m 8i8i8]>h8UW8Qd58I}h8E85h818-՛8)58!47ٜ7%57>h7W7h7՛7՛777!47|ٜ7m 7=57=576>h6565666|ٜ6=56=55ٜ5ٜ6=56=56=56=56|ٜ66666666565656565666665657=57|ٜ7՛7%58%8=58]>h8f8G88h85888}h8QO8859c[9 @9u9 90(9;9I}h9WQO9d(\9qB9x59999[9999)999D9QO99Tu9j9H9:$$99999v9Ra999 9 @858d588@8t8E8)57%57W77m 7=56>h656565666666|ٜ6|ٜ6666666656565656577=57!47՛7W7%58-8-՛85h8I}h8UW8i8t8x58x58f8`48`48|ٜ8x58t8i8]>h8Qd58I}h8E85h818)587ٜ7%57%57W7Ŋ7h7՛7՛7՛777!47|ٜ7m 7=57=57:h6>h6565666=56=56=55ٜ5ٜ6=56=56|ٜ66666656565656>h77=57=57=57=57=56ٜ6>h6>h6>h7:h7=57:h7h7%58-՛8Qd58|ٜ848h88d5888 858ٜ9c[9S9:h9N9$93µ9A9Mp9b.9t99Ȕ9999N9"9h:-:'j:@U:O:T:R{:L+:Cυ:Bҫ:Bu:>!:2:#:K:J:*!k:99[99.9e%59F9,99c[88ÐN88Y8YK85h87%57h7!47]>h7=56>h65656565666666666565656565656>h7:h7=57|ٜ7՛7W7%58S8)585h8I}h8YK8t8x58`48Y8MN8G8G8G8MN8Y8Y8|ٜ8t8i8UW8Qd58I}h85h818)58 G7 7%57>h7W7W7h7h7h7՛7՛7՛7՛77!47|ٜ7]>h7=576>h6565666|ٜ6=56=56=55ٜ5ٜ6=56=56|ٜ6665656565656>h77=57|ٜ77h7W7W7W7W7h7՛77!47!477՛7>h8S898t8@88ÐN8%5859]9 =99 (9 9$9-՛96B9D(9Nm9d(\9t9]94999J999m9j:u:9:] :w%: :۱::j:::::GS:c:Z:}:g^::z"E:] :1J:9Z9]{9:h9s9Mp96B9 9:h9f8888!48`48Qd5818`47>h7՛7!47]>h7=56ٜ65656565656656565656565656>h6>h6>h77=57m 77h7>h7ٜ8)585h8I}h8]>h8t8`48Y8G84848!4888!4848@8G8Y8|ٜ8t8i8UW8I}h89818)58`47 7%57%57>h7>h7W7W7W7W7W7W7W7W7h7՛77|ٜ7Mp7=56>h65656666|ٜ6=56=56=56=56|ٜ66565656>h6ٜ7-՛7=57=57|ٜ7՛7W7%588185h8E8E85h818%7ٜ7 7 8`48)58=58ph8@88d589c[9499([96B9A9H9Mp9VTu9d(\9s9x59Pt999u959s9ݼ9B:: ~: !:@:i:T::::; ;;-f;9;:;0=;u;:-:>::Z:|::ZG:#7x9썕99;9x59^;B9G93µ9 948O8>h8՛8!48|ٜ8Qd58-՛7ٜ7>h7՛77m 7=57:h6>h6565656565656>h6>h7:h77=57=57=57=57m 77՛7W7%58818I}h8UW8t8`48G848888888888N848G8Y8`48t8i8Qd58E818)588`47 7 7%57%57%57 77ٜ8`48S8S7ٜ7 7%57W7՛7!47m 7=56ٜ65656565666665656>h7=57=57m 7:h7!47՛7h7%58!485h8UW8x58G8488!4848MN8f8t8i8i8x58G88ÐN8O9c[909 90(9;9I}h9YK9kO9x59]9H9;9u9999Ɔ9>h:c[:: :'j:2Gn:@:S]:p:!::ϻ;ۈ;$s;D;fM;!;R7;;;OU;;s;c[;J;|;`T;*19;w::|:ttb:4:'K9+99˻9v9b.9Ls999&908O8>h88@8t8I}h8-՛7ٜ7>h7h77m 7=576>h6>h6ٜ77=57=57=57]>h7]>h7m 7m 7|ٜ7!477h7W7%58:h8-՛8E8UW8t8Y8:h8888՛8h8888888888848G8Y8x58i8Qd58E818-՛8)58%8)58)58)58-՛8185h8=58I}h8I}h8I}h85h818%7 7>h7h77|ٜ7Mp7=57=57:h6>h6>h6>h6ٜ7=57m 77՛7W7>h7%57%57 8)58E8t8G888d58>h8%58%58>h8d58ÐN888ÐN8>h859MN9 (9/N9A9Mp9c+9s9z99499]{99n99>h9H:ޡ:i:#7x:7R:L+:[:j:ttb::MN:J^:.;:>;$;F;wَ;);;U;-<</<K<2<;;;4;s;king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/Ramalyze.help0000644000000000000000000000311411744305700024574 0ustar rootroot USAGE ramalyze [mode] [infile [outfile]] MODE defaults to '-pdf' but can be any one of the following: -pdf Creates a PDF document that shows all six Ramachandran plots on one page, with outliers labeled and with summary statistics. For x-ray files with alternate conformations, any residue with alternate backbone conformers is analyzed multiple times and counts multiple times in the statistics. All others are analyzed once. For NMR files, the first page will show all model superimposed, and subsequent pages show individual models. -raw Analysis is similar to -pdf, but instead of creating a PDF, the following is sent to standard output in colon-delimited format: phi and psi values, Ramachandran evaluation, and category. -kinplot Analysis is similar to -pdf, but the output is a 2D kinemage instead of a PDF. -kinmarkup Outputs 3D kinemage markups centered at the C-alphas of Ramachandran outliers. If multiple models are present, e.g. in an NMR structure, only the first one is used. [other MODEs may be available in the future] INFILE is a PDB-format file containing one or more models. If it is omitted, a PDB file will be read from standard input. OUTFILE is a destination file for the output. It will be overwritten if it already exists. If OUTFILE is omitted, results will be sent to standard output. king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rota/0000755000000000000000000000000011677361404023114 5ustar rootrootking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rota/asn.ndft0000644000000000000000000005046211531212716024547 0ustar rootrootTop500 Asn B<40CCHH9p:4:49p:49:4:4:p:p::::::::p9p:49p:4:p::::::4:p:p:::::::;;%;%;%;;::::p:p:::::p:p:p:p:p::::;;;::::p:4:p:p:p;C;%;%;%;%;p;;;;;;;;;;;R;:::4:4:::::::::::;;C;;;;;;;4:::::;;C;;;<;;ـ;ʀ;<<<4L>>!>#>><> H>ԕ>>>>=@=8=Ȓ=X=+=<ـ<` >.>`>F>>ܜ>l>tt>s>q>j>`L>N>4>,===P=e=?@=`< X> > Њ=x==>L>7>u>>Ɣ>ڬ>>">>>>>H>>>6>j>~>h>G8>"0=`=H=8=h=A <@<@<@;::4:p::::;%;C;a;;;;;<@>'X>7>?|>B>H(>I>V>j>V>Ƞ>>R??b?ԕ?>r> >h>>ڏ>z>>z>kP>U>5h>l==8==m0=<@ Њ>p>2\>F>R>g>>>>>^?a? g?<>?? ?ƅ>>>4>u(>XT>D,>>ȿ>@0>A>9ܺ>( >==X=`= =)< >̝>,D>

Z4>>> >t>?^??1>.>ǰ>>\>>v>1>`=(===>؂>>ȃ=====m0=Й<<7;ʀ::4:4:4:4:4:4:49p:4:4:4:p:p:::::::;;;<,<<< =.`=l@=8=H=@==@>L># >P>>>>d>Մ>V>p>kP>kP>j$>P>$==@==a=Kp=V=} ==8===@=P==@0<<< ;:9p:4:4:4:4:4:49p:4:4:4:4:p:p::;%;;<;<<<ـ=0=@0=a= =X===`>>'X>M>ud>>> >} =h==H== ==`<<<<< <`<@=.`=T=c=l@=Zp==`<<`<0@;ـ;:p:4:4:49p:4::;C;;>Ԇ=0==<<<<!> > >l>l>L==ި=X=(==>ȃ==X===G<`<<%;;;%:::p:4:p:p:;;;<>"0>"0>=@=X=8=h=X=@0=?@=?@=+=Й=$=C=} =8==> H>>ȡ>>>n>h>cX>W(>L`>F>S,>y>̎>ڏ>x4>7>؂===6з<$>6>`>{>~>j>F>'X> H==X=h=(=(==P=ְ=>>@0>} >H>h>v>>>@>>z>><>ڭ>>z>Z>ш>ͪ>:>r>7=@==X<@Ȓ>5h>a>Ԇ>>X>>">g>FH>,>!>(>IT>p>2>>p>^> >>l?p? ??A>>>>0>Z?׃>Z>>??>>z>>S>=@=]@<P>>9>[`>>>|>>v>~>j$>V8>P>j$>>X>>>\>>H? ϋ??"ƣ?' ?~?A?׃>\???4?#?!֢?R?Ϛ?? ϋ>>Ȃ>Λ>FH==8=X<@$>>.`>@0>P>_\>i>kP>j$>a>V>X>x>>>Z>B>ۜ>? ܍???%>v>? ?U?)8?,?+?(H??>j>Ŕ>>h>Й=0==?@<L>>&>/>2>/>2 >M>R>>>>V>ފ>?|?y? ? ?>>4><>b???#? ?? d>f>>>Cx>=X==e= <@> >BL>b>{@>ڏ>L>X>>>,>:>>v>6>>> ??׃>B>H>4>>j$>x=P=X=Й=l@=3<<<;;;;::::::;;%;C;;;;;;;<@ >,>P >b>`>^0>d >h>`>+T>Z4>> >>>̬>>~>7====l@=O0=,=p<`<<;ـ;a:::::::;;%;4;C;R;a;;;;;< L>>Ȓ>> =p=ˆ=> >?>Z4>^0>JD>(>=`==G=)=Й= Њ<<@<>L>*d>>>F>E>=`>8>>P>7>H>4>.د=0=h=(=a=10=P<ـ<נ<===+=.`=3=?@=F=Zp=|0===X= =d=@0=P<ʀ< <<< <`<<<`< <{@+>QL>e>e>X>P>`L> >4>,>>̺>^> >Ƞ>>>>J>>>>P>=H==C=<<= =# =?@=P =Zp=l@====x===(=p====Zp=,=0===Й=0=< <@<<`N>X>>>>>>>|>^???"?,˭?/?2?5w?4?,? ێ?>ܺ>p>=ˆ==@0=<`<===`=X=~====ݸ> 8>!>.>1>,D>$>>==0=====P=Zp=?@=<<<"l>>̺>.? ?5? :? :??(?4?9?B?I?T:?]?d?Z?GG?2?>>k> =0=e=+=P<< =`=I=v===X=P>>8>[>{>\>\>>xp>g>I>*> =@=====]@=3=`<@< <>>??*?-%?-a?/#?4?=?E?O?[?g?t8?~??tt?V?88>>>,==h=3<<<Ƞ<==O0= =P==ݸ> >*ܫ>UH>ƅ>ܜ>>>>>X>\>d>8>@==P=`==kP=10<<<<;< ;;< <@?>j??'X?1?5?7f?;ڼ?C?L~?WU?aZ?k?q,?uF?y?xa?h?I?.>P>*=ˆ=@=%<`<<< < =p=C= = = => >( >UH>>>>>>>>ڏ>qh>B>(>====X=0<<(>֢>@??-%?3j?79?>?G?Ri?Y?^0?`?]?WF?S?K???->====`< < << <<@< < =.`=c==0=p=>>4x>n >h>8>z>>>>x>M>'X>==`==h= P<<@p>t8>T>,?A??+E?4???F9?Hd?G ?CZ?:?2 ?$[?>>ҵ>k=P<<<>(>\>>~>‰>p>H>( > t==`=h=(=V=p<>l>>4>z>?R?%K?.?-?!?R>B>¦>H>`>"=ި=Ȓ<0@<@< < < < < < <>!>,D>!>=P==P==`=?@=p<<<,;;;;::::;;;;;C;;>8>YD>Ԇ>>n>T>>>q>I>@=@=X=V< <;;;;;ʀ;ـ;;;<@<%L> >T==H=h= =X= <<<%;p:d:Y:Y;Zd<~;~ʜ:Y:Y:Y:Zd:p;K<><#d;d:d:d;~ʜ;~ʜ:d:Y:Y:Y:Y:d:d:d:d:Y:Y:d;~;d;d;~ʜ:d:Zd:Y:Y:Zd:ʜ;K<~<~;K:ʜ:p:Zd:Y:Y:d;5p;p;K;Zd:d:Zd:Y:Y:Y:p:d:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y:Zd:Y:Y:Zd:Y9Y:Zd:d:d:d:Y:Y;Y;K;K;Zd:d:Zd;~ʜ;~ ;~ ;~:d:Y:ʜ;;:ʜ:Zd:Y:d:d:Y:Y:Y:Y:Y:d:ʜ:ʜ:d:Zd:Y:Zd:d;5p;Zd:ʜ:d:Y:Y9Y:Zd:d:d:d:Zd:Y9Y:Y:Y:Y:Zd:Zd:Y:Zd:d:ʜ:d:Y:Zd:d:ʜ:d:Zd:Zd:d:Zd:Y:Y:Y:Y:Y:Zd:Y:Y:d:d:d:p:Y:d:ʜ:ʜ:d:Y:Zd:d:d:d:Y:Y:Y9Y:Y:Y:d:d:d:Y:Y;#d;Y;Zd:d:d;Zd;1{;~:d:Y:Y:d;5p:ʜ:d:Y:Zd:Zd:Y:Y:Y:d:ʜ:d:Zd:d;l;K;~:d:d;~;d;p:d9Y:Zd:ʜ;~ʜ;5p:d:Zd:d:Zd:Y:d:d:Y:Zd:ʜ;Zd;Y:p:Zd;Y;~;5p:d:Y:d:ʜ:d:Zd:Y:Zd:Y:Y9Y:Zd:d:Zd:Zd:d:p:Y:Y:Zd:Y:Y:Y:Y:Y:Y:Zd:Y:d;Zd:ʜ:Y:Y;~ʜ;;K:d9Y;5p;~ ;K:d:d;5p;Y:Zd:Y:Y:Y:Y:Zd;5p;~:d:Y:ʜ<><%<ܪ<8r;~ʜ:d;K<;~:Zd;K<=C=K =u)<1{<:2;K:Zd:Y:d;Y;Y:d:Zd:Y:Y:Y;Zd<>;~ʜ:Y:p;5p;1{;Y:ʜ:Zd9Y:Zd:p:d;Y;d;~ ;~:d:p;Y;~;5p:d:Y:Y:Zd:p:Y:p:d:d:p:Y:d:d:Zd:Y:Y:Y:Zd:Y:Y:Zd:Zd:Y:Y:Y:Y:Zd:Zd:Y:p:Zd:Zd:d:p:Y:Zd;Y;~;#d:Y:Y:d;Y:d:Y:d;d<~;~ ;Y:Y:d;K;;~ʜ:Zd:ʜ;<,<>;:Zd:Y;Y<(X'<є<:2;5p:d:d;d<ܪ=Q=7!=c~ =rG=QK<$T;~:Y<:2<=Q<ӑb;~ :Y;~ʜ:d:d:p:d;<^W=%=7!=2<$T<~9Y:Zd<%<>;;d;d;K;d;~ <^I;<<2= f=D== ==5p:ʜ:Y:Y:ʜ;~;Zd:d9Y:Y:Y:Zd:d:Y:Y:Zd:d:d:Y:Y:d;Y:d:Y:Y:Zd:Y:Y:d;K;;d:d:d;Y;Zd:ʜ:d:Y:p:d:d:d;~ ;;5p:d:Y:Y:Y:Y:Y:Y:d:d:ʜ;Y;Zd;K;~ ;d;~ʜ:d:Y:Y:Zd:d:d;~ʜ;d;d;K;5p:Y:Zd:d;l;1{;;Y:Y:Y:d:ʜ:ʜ:d:Y:Y:Y:Y9Y:Y:Zd:Y:Zd:d:d:Y:Y:d;~;:d:Y:d;Zd;Y:Zd9Y:ʜ<~<1q;:d:Y9Y:Y;Y<< <;~:d:ʜ;~ :d:Y<5p=[=8D=0N|<ܪ<(X';Zd;~ʜ<><=Q=7!=<є="4<;Zd:Y:d;5p;Zd< <ܪ=>=[<;d;d:d:Y;<(X'<%;5p:Y:Y:d;Y;~ʜ;Zd:ʜ:d:Y:Y:Zd;<:2<5<;~:d:Y:Y;Y<~<:2<%;Y:d:d;;;d:ʜ:Y:Zd:d:d:Y:Y:Y9Y:Y:Y:Y:Y:Y9Y:Y:p:d:p:Y:Y:Zd:d;Y;Y:d:Y:Y:d;Y;Y:d:Y:Y:Y:d:Y:Y:Zd:Zd:Y:d:ʜ:d:Zd:Y:d:ʜ:ʜ:d9Y:Y:d:d:Zd:Y:Y:Zd:d:Zd:Y:d;Y:d:Zd:Y:d;5p:ʜ:Y9Y:d:d:d:Y:Y:Y:Y:Zd:Y:p:d:d:Y:Y:d:d:d:Y:Zd:d:Zd:Y:Y:Y:Y:Y:Y:Zd:Y:d;~;Y:Y:Y;Y<~;~ :d:Y;~< ;:ʜ:d;;~ʜ:d:Zd:Y:Y:d:Zd:d<~<>;d:d:Y;<<1{=8r=<;K:Y:Y:Y<<2=~=~<є<~:d:Zd:Y:d<,<2<:ʜ9Y:d;<~;:ʜ:Y:Zd:ʜ:ʜ:Y:Y:Y:Y:Y:Y:Y:Zd:d:Zd:Zd:d:ʜ:d:Y:Zd:ʜ:ʜ:d:Y:Y:d:d:Zd:Y:Y:Y:Y:d:Zd:Y:Y:Y:Y:Y:Y:d:d:Y:Zd:d:d:Y:Y:Y:Y:Y:Y:Zd:d:d:Zd:d:ʜ:ʜ:d:Y:d:d:Y:Y:Zd:Zd:Y:Zd:d:Zd:d;l;1{;5p:Y:Y;5p<<%;~ :d:Y;Zd<Y<(X';:d9Y:ʜ;d;;~:p:Y:Y:d:d:p:d;Zd:d:Y:Y:d:p:Y:ʜ;K:Zd:d;;~ ;:d:Zd;5p;<;5p9Y:Y:Zd:Y:Y:Y:Y:d;Y:ʜ:Y:Y:Y:Y:Y:Y9Y:Y:Y9Y:Y:Y:Zd:d:d:Zd:Zd;#d;~ʜ:d:Zd:Y:d;d<%<~;5p:Y:Zd:Y:Y:d:ʜ:Y:d:ʜ:p:Y<Y="4=z==8r=V<엑<(X'<~:d:p:d:d:Y:Y:d;Zd;l:d:Zd:Zd9Y:Y:Zd9Y:Y:d;~ʜ;~:d:Y;Zd<<(X'<;Y:Y:d;~ ;K:Zd:p:ʜ;5p:d:d<(X'<<ܪ<^W==){X<~ ;~ < =Sb==A>=د= G=V=D=a7==%=SR=?==l<:d;~ <==Mn=a7=2<^I:Y;d=Jw==$T>b=O=M"=Sb=D=V=p#=f==4=%=Rn1<:d:Y<(X'=Q=[=l=8D<<%;Y:Zd:Zd;Y;d;~ ;~ʜ:Zd:Y;<~<%<~;d;~:ʜ:Zd:Y:Y:Zd:Y:ʜ;~;~ʜ:ʜ:Zd:Zd:d:d:Zd:Y:Y:Y:Y:Y:Y:Zd:Y9Y:Zd:d:d:Y:Y;Zd;1{;l:d9Y:Y:d;#d:ʜ:Zd:Y;;~ :d:Y:d<(X';;K;d<><=@=Mn=V=7!<$T<:d:Y;5p<<^I<:2;;;K;<><;5p:Y:Zd:ʜ;~;K;d;~ < <~;K:ʜ:Zd:Y:d:ʜ;~;K;d;~ ;~ ;:d:Y:Y:d;l<<><><;K;Y:Y:Zd:d:Zd:Y:d:ʜ:d:p:Zd:p:d;;~ <~<є<ܪo>`=-==[=\=[===V==AU= =;c<~:Zd:d,SR>7>=1{= =[==!=ܪ>E> >=Y=<;Y;~ ===N|=є=v=l(>3>'=6P=y=8r=)=+K=O=$T>==;&={a =@=y=!= =?=|;<:Y<%=em=є=r>===QK=QK=h =3==h= ==M"=$<Y:d;d<==l=>= ==E=bZ=H1{=<%:d:d= f=H1{=\=8D<:d:d<5p<2;~ :d:Y:Y:Y:Y:Zd:Y:d<<=7!=8D=<;~ʜ:Zd:Y:Y:Y:Y;5p<(X'<^W<>;Y:Y:d;Y;~ ;Y:p:Y;K<^I;K:Zd:Y:d;d;d:ʜ:Zd:Y:d;Y<%<%;H1{9Y:d<1q<<ܪ=8D=|;= =f=[<7;~:d="4=V==E= =/+Kr>t>E==f=p#==h=y6> y>'> 5=s=5 y>=c,>K >/t==HM= ==O>>>.P>$\>=?=8D=엑==7!;~:Y=~=0!> >:>IT>.P=V== =^=|>?>J>* >!>8r=!=B y===h=A^W;d>"=={X=h =h =[== =엑>8r>|=O= = ;5p:Zd:Zd;Y;Zd:ʜ;5p=[=QK=P'=h ==H=8r=m=5p:ʜ:Y;d<<>:d:d;l;K;1{;~ʜ;~;d<><^I<<2=){X=bZ==sj=8D= f=bZ=B=m=< :Y<=|;=;&>> =B====K =[==AU>o>%>Ǡ=O=y<$T<~<,=[=y==AU===Q;#d:Y<===~>* >9>A =O===f= >|>ҥ>/+K>(> |i=2=Zd>pS> =Y=h <:2<$T=a=>* >9>=O=y====B>>.>*> /= =rG==~==ǟ> >n>==|;E> =鿗=d=Rn1=E=z==a= => > f=V=Ə==<%Ǡ====;:ʜ;K:d:Y:d<~<<̾>;~ <<:2<~ =Zd=M"=a= =h =D===7!=<5p:d:Y;~;;Zd:d:p:Zd:Y:p:ʜ:d:Y:Y;~<8r:d;Y<=){X=Jw=7!<;;=0N|=pS=D==\=Sb=h ==LZ>`y=ܪ=@=:2=2=h =f= => >o=د=@=7! f>K==P'<5p=kt`==G>=B=d=A^W=5p=bZ===A>,\> =-==V<=<==em=h>E>pS> 12=|=h <~<^I;:Zd;K<==V===p#==޻=v===k}=QK<1{;:ʜ<=8r=u);:Y:Y:Zd:Zd;~<8r<%<2<>;5p:d:d;~ :Y:d<5p<$T=l=v===l<$T;5p:p===%=V=<>;~ ;K<ܪ=HM="4=8r<<~:ʜ:Y:Y:Y;d<<=:d:Y:Zd;~<;;;K<1q;d;~;p;~ ;~ <;5p:Y:Y;p<%<%;d;~ <~;#d:p:d:d:Y:Zd:Y:Zd:d:d:Y:Y:Zd:d:d:d:d:d:d:Y:Y:p:ʜ;;K;;Y:d:Y:Y:Zd:ʜ;K;~ ;p:d:Y:Zd;Y;~ʜ:ʜ:Zd:Y:Zd:Y:Y:Zd:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:d:d:p:Y:Y:Zd:d:Y:Y:Y9Y:Y:Y:Y:Y:Zd:Y:Y:Y9Y:Y:Y9Y:Y:d:Y:Y:d:d:Y:Y:Y:Y:ʜ;~ʜ:ʜ:Y:d<%<є<ܪ<;d:Y;#d<2=){X=8D=@<$T==~<<$T=.=8D=+<ܪ<~:d:Y:Y;Y;Zd:d:Y:Y:Y;Y;K;~ʜ:d:Y9Y:Y:Zd:d:Zd:Y:d;Y:d:Y:Zd:ʜ;~ʜ:ʜ:Zd:Y:d:ʜ:d:Y:Y:Y:Y:Y:Zd:Y:Y9Y:Y:Y9Y:Y:ʜ;~ <~;:Zd:Y;~ʜ<^I<є;~ :Zd:d<~<5p;:d:Y;<~;:Y:Y:Zd;5p;K<<~;K:d9Y:Y;~;~ ;5p:Y:Y:d:d:d:d:p:d:d:Y:Y:Y:Y:Y:Zd;#d;;5p:Zd9Y:ʜ;~ <~;:Zd:Y:ʜ;d;~ ;5p:Y:Y:Zd:Y:Y:ʜ:ʜ:Zd:Y:d:d:p:Y:d;Y;Y:d:Y:d:ʜ:ʜ:d:Y:p:p:Y:Y:Y:Y:Zd:ʜ;5p:d:Zd:Y;Zd< <(X'<:ʜ9Y:d<~<;Zd:Y:ʜ<ä===[=4?<~<;:d:Zd:ʜ:ʜ:Zd:d<(X';1{:Y:Y:d;l;p;~ʜ:d:Zd:d:d:Y:Zd:ʜ;;;Y:Zd:Y:ʜ;~ʜ;~ʜ:d:Y:Y:d:d:Zd:Y:Y:Zd:p:Zd:Y:d;K;ʜ;K:d:d<~<<^I;Zd:Y:Y:Y:Y;5p:Zd;=[=Y> >%==v=p#=P'=\=p#=[=pS=f=y==<8r:d;Zd<=Y= a<;5p;d=V=>> = =X'=kt`=QK=V=`y=p#= =y={a =){X<ܪ<>:d:Y:d;<<>=B=2=5p=[<^I;Zd:ʜ;5p:d9Y:Zd:d:d:d;Zd;K;<~<(X'< <^W< ;d;Zd:d9Y:Y:d;Y<> l>9>E>([=Z=k= =9==>|> l==;&=u<;Y;Zd,>g0j>wx>S.>)=={X=q= u=>>J>=2==[;(>b>pI>L,>`=2={X==̾=>>> l=i[=`<;K>-O>8>= u=޻=f= =a=?==ӑb=|=d=8D<:2:ʜ<>="4=[===\=V<^I;Y='4=q==˛ ={X=V="4="4=(X'=5p=IT=em=rG=V=[<%:Y:ʜ<~;5p:Y:Y:Zd:d:ʜ;Zd;~ʜ:ʜ:Zd:d<(X'<1q<<==[<엑<;~ ;<><є=/+K=h ==p#=8Dz>&Z> y===H=8r=-=Y=>>> |i=O=<є;5p;K<ä=QK==a=5=){X;K;~=C=йh>:Bf>}l>>n>$=D=l=D>>n>;/>G>=>==n<1{<ܪ=V==I==AU=d<=:Y;=> l>j>>H> G>U>u=̾>=V>Y>5$ >U>hg>`>9>=k=.=8D==7>>n>%=s=em;;1{=>>gy6> >R>K>Rn1>=O=y> >,>Jw>`>Y!>8i>E=k=5p=Mn=Ə=>>,>=2=<%:Y=7!=˛ >3&v>q>>aB>= =I=c=_> l> >3&v>/>)==l<=){X=.=O>Ǡ>>~= =V;d>===q$T=p#==H=pS== =AU==+K=`y|==O==<є<;1{:ʜ<~<~ =8D=H1{=,==,==8D<;K:ʜ<~=[=Rn1=kt`=E<ܪ;Y;K=Y=B={X=D=h==є=,==ǟ=SR=sj=~:ʜ;5p<=+=n==H=`y=[<(X';~;d<><ܪ=bZ=={X=q=8r=h =h =bZ=7!<;Y;d<$T=p#=d==a=h =8r=P'=Ə=O=_=O===d=a=[=/+K<5p:Y;K==8r==2=q=f=8D<=<~ ="4=8r==o>b=t`= u=D=q= =)=C<:Zd:ʜ<2=em=k==^=8r=8D= f=~=5p=~===#=AU==^=a===+<:2:Y:Y;~ ==[==sj=B=Y<$T=="4=^I=k}=h=={X==\=V=Mn="4<:ʜ:Y;~;d:d9Y:Zd:d;Zd;~ <5p<8r,>:>d== u=y= ==y>>(>2ݪ>%>:=q=5p<^IM>>>7>=c,=V=c,=>>:2>`>sN>j>A#> y={X=@;&=8D==>J>+x> G=y=<%<:2=M">>|>n>1{>q>ycu>P=2>E>([>T_>d>> >lN>.=AU= ==|>>F~>^_>Ix>=p<:Y<%=>'>d>>ŢM>uM>we>HM=y6>>">M>|;o>w>f>nLZ>2ݪ=B=pS=޻=د>">U>kt`>Y!>%-=^W=Y:Y:ʜ=V=y6>GJ>>>:>:Bf=-==׌>>)$>MO>h3>g0j>F3>r==sj==2>`>9>K u>=c,>={X&>4s>=|==3==?=AU>[>J>J>`y=h=em= = a==є=> >|==C;p:p<2=`y=pS==p#=~<<+K<~ =@=Rn1=[==pS=n=~<8r;;<є=8D=}l=y=z==޻;d:Y;;Zd:ʜ;Zd;~ <%;;5p:Y:d >>%=e=2={a =a7=p#=Jw>>J>r===rG<<~:ʜ?>>==O=a=<є<;~:Zd;K==V=q$T=QK<~ ;Zd:Y<5p=2==Ə=E=E=+K===c,==Y=E<%< :p:Y<b=엑=,=h=={X= =8D f>%>~=y6=|==!=a=V<:d:ʜ<=Sb==X'=k====HM==A^W=k}=>>> 12==O=D=v=^=y=8D<1{<^W<< :d:Y:Y:d:d;Y;<~>&> =={a ==^=O>Ǡ> >.P> k>=H=q=:29h>d>u)>{>>.=s=?=s> >5$ >]<>t>lN>EM>u)==em=Rn1==>,>@>2ݪ>= G<2;=l> l>k->>>>fV> =i[=~>n>Qܙ>>}>V>>wx>9==d==>,>c5?>{>jQ0>3oB=ϖ7=7!:d;d=[> l>j>/>!>4>g0j>Y=ۇ=>ҥ>Mn>>!>M">~9>@>=={X=>9>q$T>>zr>?=y6=Jw;Y:d=C=йh>8>}> a>x@D>2ݪ===O>>,>W>v{>w>X>%-=د==M"=O>n>T">k+>Y!>&Z==k}:Zd<=3=<>>)$>%== ===I=7>Y>(>+0!>M"=AU=pS=H1{=== =ϖ7>%>"_h>pS=׌=q$T<%:p<=V=u)==z==Q<:2;K:Zd;~ >pS>%=B=2={a >)> G>==2=rG<$T;:d> |i>b=йh=d==<;Y;K=~=\=y=V=;K:Y<>=Jw=)==I==I===|== G=Sb<;~ :Y:Y==`y={a =\=> >===E=Ə=f=7!o===~=[>9>M >5=B=d=3=X'=Դ>>4?>F~>A#>"_h=-=a=C=7!==_>>4?>&Z== <:p=8D=ǟ>,>o&>>n>+0!=ܙ==;&=>, >Y!>vG>t>Sb>="=pS= =1{>>Vi[>nLZ>`y>+x=Y=0N|:d:Zd=8D=1{>-O>o&> >nLZ>.P=ܪ=+K==>,>[Ѓ>{>|;o>_>,=Q0=X'=d=>-O>fV>~>nLZ>8i=ܪ==;#d<==X'> |i>Rn1>:>Ǡ=?=޻=X'=>`>96>Vi[>Y!>?Z>pS=,=pS= =>'>F~>`>O>ҥ==~:Y<~=Jw==->b=ܪ=d=T=8D=YAU===B>>J>o=,=޻=Rn1=8D=~ʜ=>Ǡ>> =ǟ=X%;<1q= a=em=p#=:2<2<~<%<<$T=@;&==d== =Sb=HM<<5p==йh=d==:Zd;Y<ӑb=8D=V=8D=Q=l=I=є==%==H=p#=Rn1= a8r===8D< >t> /=ǟ=B=D=wx={X=>Y>&>%>=׌=k=^I=T= = >">9>.P>=HM<^W:Y==O>u)>n>Y=O=5=Rn1={a ={X=߂>pS>.>1(>f=j=?===>`y>3&v>GW>;/>={X<7:Y;d=@;&==m>=y=X'=V=+=@;&= =c,=A>'>J> y==-=p#=bZ==>E>/>"=o=f<;Y:Zd:d;K= a=p#= = =3= =a==p={X=[=+;:d:Zd:Y:Y;5p<#d<ܪ=+=A^W=Sb=@;&=@<;~:Zd:Zd;5p;<~;~:Y:Y:p:Zd:Y:Y:d:d:p:Y:Y:Y:Zd:d;~ʜ;d;ʜ;~ ;~ʜ:Y:Y;Zd<~<Y;;d<><8r<^W<ܪ<<8r<@< ;K:d:Y:Y9Y:Y:Zd:d:d:d:p:Y:Y:d:Zd9Y:Zd;Y;5p:p:Zd;#d;~;Y:d:d:Y:Zd:Zd:Zd:d;~ <%;d;1{;~;<5p<ܪ= a=2= f:ʜ:Y:ʜ;:d:d<%<;d:Zd;= f=V=n=QK=Q:ʜ:Zd;~ʜ;#d:Y<~<ܪ=){X=7!='4=8r=l= G=={X=M"=X%<<5p;~ ;Zd;Y;5p;Zd;Zd:d:Y;Zd;~;5p:d:Zd:Y:p:d:Y:d:d:Y;d<>;~ :ʜ:d;<:2;:d:Y:Zd:Zd:Y:d;~ʜ;~:d:Y:d:d:Y:Y:Y:p:d:d:p:Zd:d:d:Zd:Y:Zd:Zd9Y:Y:Zd:ʜ;Zd:ʜ:Zd:Zd;Y<>:ʜ;~ʜ;Zd;5p;Y;Y:Y;Y;;5p;~ʜ;<<є=Y="4<$T;~ʜ<5p=n=>>%7a> 12===\=u=.=^=D=?==~=~;~ :p:Zd;~ʜ >?>KRA>.=t`=d=3= =a=E= =O==k=8D f>:>F|>)2=B=a=3=f=M"====!=/=){X<>:d;Zd=rG=O>`>=j={X=n=V=[=`y=p#=B=y==5p<;5p:Y;Y<(X'< =E=Jw=:2=.<;:ʜ:Zd:Zd;d<2=Y=(X'=8r<1q=H1{=+<ܪ= f=[">0>= === G==I>>Ǡ=j==z=<;Zd;~ʜ@̾><>>vG>, =O==;&=鿗>Y>* >5$ >,> ==Rn1 >q$T>`>>A >Y!>= u=F+>E>n>J>E>%7a=y6=y= f====LZ>|=B=<=:Y;~=u> >n>^2>q> G>U>B=˛ ==>>2ݪ>A#>=c,>=ܪ=[=~=.= = u>> y==!=5p:ʜ:Zd=7!=O>8i>zr>>>fV>@=Y=E===y6> >J>=={X=2<><==u=!=7==AU==;Y<^I==Դ>>C>?=SR={a =l=p#==)=4=?==~=< :ʜ<>=@====k=V<:p;Y;5p<~<=u)='4=[=(X'==pS=@==I=J=ܪ=ϖ7==~="4<=;~ :Y:Zd<=U===I==2=˛ =AU=,=N|==HM<є==0N|=Qb==D=!==v==V<:d;=%==c=,=̾=d=h =*=HM=8D=f==y6=#=د===a==~=8D<:2<:d:Y:ʜ;~ ;K:Y;d= f=M"=Y=йh=I=rG=5p=H1{=y===A==_==L>$>dXp>z=>WX>)=={X=>K>q>9>C>9>=,=l>^>f>RA>>{>>HM=>|>">Ix>pۈ>:>>X>@=;&=p#=`y=d=鿗>HM>&>pS="=bZ:ʜA>{X>>j>ݩ>_h>BS> l>)>79>e{>>>>~ʜ>==G=k=k}=йh>z>E>X>EM>M"=<?>>7>nU>ۇ>8>A> >Y>0H>\>^>K>o>~9>===d=-=V>$>R>g0j>U> =2>d>&v>8>0!>o&>=V=>Y>2ݪ>X>q>pۈ>Qܙ>z=̾==H=y=>Y>9>H>:Bf> =X'<2=8r=?> G>V(>hS>C>=?=^=v=;&=m> y>ҥ>ҥ>==a7=B=+= =Y>>Q>=c=K ;~ :d=~= ==̾=9=Jw==Q=HM=7!=[=8r==M"=h <=<1q;~ʜ<~<==X%= ==3=5p<1q:Y:Zd<%<:d:Y:Y:Y:d;5p;K;d;l:ʜ:Zd:Y;5p<5p:ʜ:Zd:d:Zd9Y:Y:p:d:Y:d;~ >?=AU=0!=`y >>>K==B=Y>)>z>=A=c==H=Y>==̾>=9=Mn<ܪ<(X';p<=====}l=%;Zd;d=Y=8r= ==2==h===v= =D<엑;5p:Y:Y:d;5p;5p:d:Zd:Y:Y:Y:Zd:Y:Y:Y:Zd:p:d:p:Y:d;;;~ ;#d:Y:Y:d:ʜ;5p;K<1q<ܪ=2=8D=HM<5;~:ʜ;K<>݅L> >>5$ >>.>-O>\>7>q>>>U>=̾=2>>A>{>>>>F3=#=E:d:Zd=*=|>2ݪ>w>6>l>'Ə=i[==6P=>M">9>Vi[>X>=>,\==B=[=D> l>2ݪ>D>7> =9<;~ʜ=2=^=ܪ== =y=C=8D=QK={a =a==ۇ=I==y=+===q==c,=<>>>)>b=== a<==8r=X%<$T;#d:d<ܪ==!=AU==>E>%>%7a>1y>,>޻=~ =k=:2 >`>)>t>-O>5>.P>޻==a=8D<2>> l> >>> >pS==є==Y:d<є=h =X'==i[=AU=׌=ܪ=y6=-==?=[=*<;1{:Y;d= =]=rG=Jw8r>$>.>$1>u)=~=B="==y=u);9Y<%=8D=^=O=m===f=V=Mn=y=׌>Cw>C>96>n> 5==y6=Y==/+K<~;d="4=%=̾="=,== =h =h =pS=AU>J>8D><>.>=~=ܪ=O=D=5=Y;K:d'>>Ǡ=د==X'=d==8D=="4=Q<ܪ l> >K==l#9>i->>}>d>C=є={X=D>Ǡ>.>Qܙ>f>`]F>:Bf>o==V=8D=[=˛ >`>n>r=йh=kt`;<>=)>E>Y8>̾>j>>Ǡ>&Z=> >1y>hg>>c>̚>>Q4> /===鿗>2ݪ>k+>>pI>9=AU=2:pC>uM>>;o>>q>Y!>>>Ix> >.>S>>S>a>79==B>>>j>E>> >sj>"= ;d<=p>B>R>b> >b>q>]<>>n>IT>>SR>O>I>q>4>>=>=~>,>{>>c>p>V>>&=><~;~ = >>^>.>j>db>>0H>> >,>av>>>U>ذ>k->%=m=">pS>\>,\>>o>f 9>=;5p:Y=%=2>$>f 9>~9>aB>"=د===> G>EM>hg>l]>U>&*=7==Cw=ǟ>J>H>b>Qܙ>d==h<7;5p=$=a='=g=6P==E=7!=K == =йh>?>B=y6=&v=rG=/+K=u)====,=鿗=йh=>)>=A=;&=[=@>%>%>1q>+>=y=:=8DK> >`>r>d=>/+K>8D>.>pS=B=@=7!> Y8> y>>>!>>|===~<:2;d<$T=|;=\===Rn1:Y;Zd<^W=[=HM=Ə==h =%?>>>* >@> l==O=={X=p#<ܪ:ʜ;K<;==SR==E=)=[=2=8D=[=O>>8i>?>2ݪ>">|=<=s=!=[=~;p;~<ܪ=l=d===Y=h =C=V=/=ϖ7>pS>3>9>)$> =y6=˛ =c,=Ə=p#%>pS>u=O== G= =l=%<:2:Y9Y;Y%7a>9>"=_=)==d=O> |i>(>:Bf>5$ >pS="=/=8D=%=[=>>r>o=;&=Mn;~ :d=QK=>E> a><>.>GW=e=є=йh> >;/>o&>4>;>k+>3&v===a=>">\>w>fV>/= u=){X:d;~=3>>|>$ >D>n><>([=o>>%>av>%>>V>m>g>$1=2=йh>>]<>>>ذ>iv>)=l;~ ;~=>Y>|;o>s>U>>>.=>`y>(>c5?>!>S>~>A >uhK>1y=x=鿗> a>n>A >>̚>{>>d==pS<~:p=K =B>F3>>?>>R> =,=ܪ>>?>z=>>G>;>Y!>=ܪ=̾>> >OMk>4>>`>[>Ǡ=p#;5p.>A>/+K>|==M"=a= >>.>MO>V>B>=ܪ=^=HM=2>>>=>V>F3>pS=<є:Y:ʜ:Zd;Y<~<:2;d:d:d;Y;H1{:d:Y:d:ʜ:ʜ:d:Y:Y;5p;~ʜ;Y:ʜ;K >%>)=A=c,==H=u)<8r >>>>b===B> y>>8r=AU=4=H1{:ʜ<%=kt`=d=!=c=c==D=i[=د==-=`yM">> =ܪ=D=^=pS=p#=HM<:2:Y:Y;d<~<:2<=B=7!== G=a=8r=2">96>&Z=o=f=h =y=h=>n>8i>8D> ====h =k=엑>(>=c,>2E>=HMpS>T_>o&>Y!> =,=={X=AU>>F~>i->lN>T">(==l=SR=>+x>c>~9>n>8i=AU=7!:d<==E>%>V>pۈ>^>&=׌=d==_>f>Mn>q>{>>d>96> Y8= ==>9>v{>3>\5>F3=#=Mn:ʜ,SR>@>0>=?=5=M"=>>2ݪ>R>[Ѓ>H>&==!=v=">n>WC>o&>`>,=|=%:Zd;Y=(X'=9=Դ=#=Դ==bZ=5p=;c===>> >=o==y=rG==O>)>&>J=ܪ=rG<~;1{<==QK=l=E< <:2<><~;d;#d:d:Y:Y:Zd:d:Zd:d<<<<<<<є<< ;~ʜ;Y<(X';K;Zd;K=~<^W<=B=5p=7!=~<;ʜ:ʜ:Y:Y:Y:Y:p;Y;d;~ ;~ ;~:d:Zd:Y:Y:Y:Zd:p:Zd:Y;Zd;;~ :ʜ:Y:Y;K=a=7!<ܪ=k}=l==O=>|=鿗=^W==i-=V= =Y> /> >=AU=p#<%:d=u)== u=鿗===H1{=B= a=rG=v=_> l>u)>o=I==3==d=y>>2ݪ>%==y:Y<2=rG====="4==˛ ===h =y=̾>>>.=˛ =Zd;K;<==V={a =YAU=~=QK=H1{=O=m=[=l=p#=5p<є;d:Y:Y;:d:Y:d;d<= f=8D=`y=`y=<є="4<$T<><~;~ʜ:d:d;5p;d<~;d;Y:Zd:Y:d:d:ʜ:d:Zd:Y:Zd:Y:Zd:d:d:d:d:p:Zd:Zd:Zd:Zd:Y:Y:Y:d;Y;l;Zd;Zd;5p;Zd;5p:ʜ;5p;d< ;d:d:d;l;1{;K;d;d;d;K;~ʜ;K<(X'<~;5p9Y:Zd:ʜ:d:Y:Y:Y:Zd:Zd:Y:Y:d;;K:ʜ:Y:d<><>;;5p:d:Y:Zd:Y9Y:Y:Zd:d:ʜ:ʜ:p:Zd;~<<~;K:ʜ:Y:Y:Zd:Y:Y:Y:Y:d;Y:ʜ:d:d:ʜ;Y:d:Zd:Y:Y:Y:Y:Y:d:d:Y:Y:Y:d;d<%;~ :d;;K;5p;5p;;d;~ ;~:Y:d;p;Y;#d;Y;d;d;~ʜ:Y:d=8r=QK===sj=8D<^W;~ :ʜ:d:Y:Y:Y:Zd:Y:Y:ʜ<>=/+K=|;===k}=}l=+<$T<:2;~ ;K;l;~;d;;;:d:d<><%=7!=h =|;=h =2<<>;d;d;H1{;~ʜ;K;~ ;;:d:d;~ <=="4=.<^W<(X';;5p:ʜ:d:d:ʜ;5p;Zd:d:Y:Y;l<<~;:d:Zd:Y:Y:Y:Y:Y:Y:d:d:d:d;~;d;~ʜ:d:d;d< ;~ ;Y:Y:Y:Y:Zd:Y:d;K<;d;Y:Zd:Y:Y:Zd:Y:Y:Y:d:d:Y:Y:ʜ;Zd;Y:d:Y:Y:Y:Zd:Y9Y:Y:p:d:d:Y:Y:Y:Y:Y:Y:Y:Y:Zd9Y:d:d:d:Y:d;:d:d<%<ä=HM=2=(X'<7<:2:d:Y:Y9Y:Y;~<8r=[=8D=Sb=Jw="4:d:Zd;K< ;K:ʜ;5p<%;:ʜ:Y:Zd:p:Zd:d;;:d:Y:Y:Zd:ʜ;5p:d:Y:Y:Y:Y:Zd:Zd9Y:Y:Y:Y:d:d:d:Y:Y:ʜ;~ <~;K:d:Y:d;~ :d:Y:Y:Y:Zd:d:ʜ:d:d;<<5p;d:p:Y;K:d:Zd:d;5p:ʜ:Zd;~<є=Y=(X'=[;l;l;~;~ʜ;1{<:2:ʜ:p= f===\=QK="4+0!>8D>=Y==a7=~ʜ=޻=0!==D=є=f=8D>V >f 9>A>=4=y=u)=d=!=O==د==rG<%<~;~ <=,=n==P'<:d:Y<ܪ={X>>Ph>`>;c===y= =%={X=c,=O=|={X=`y<;d;ҥ>* > f=={a =a7=bZ=em=sj= = G=)=`y<~ ;~ :d;Zd;~:d:Y:Y:Zd:Zd:Y:d;5p;p;1{;#d:Zd:Y:d;5p<,<=8r=~<ܪ=9==/=8D<==[=C=5=SR=c=={X={a >8D>EM>* == == =є=-> >Y> l=AU=HM=Y<(X'< X>P>^2>0>A=Z===LZ>>3&v>A#><>d==߂=f=Y<==A^W=k}=̾=O=D=rG<(X';==H> G>6>>>D>y>=ϖ7=ܪ>>'Ə>F~>_>Y!>9> l==Mn=A^W=)= u>> =A==){X:p;~ =B>">B> k> >>rQ>)="=AU>b>t>=c,>Tk>R>5$ >=X'=H1{=Rn1=9=>`>> 12==T;p:d=A^W=>Mn>>>>6=ۇ=h== u=>>&Z>%> = =p#=B="4=3==>o===8D;d([>4I>=]=f==~ʜ==HM=E==;&=d=P'<;d<<є<;~ ;1{<=5p={a ==p#="4<(X':Zd:YK=鿗=c= =@;&=*=E=@=AU> l>`>E=ܪ==c=={X=}l=;l;~ =8D==K=-=ۇ=D=y=IT=5p=QK= G='>`y>~=o=Y==={X==\<:ʜ:Zd;~ʜ:Y:Y:d;K<1q9>>,\>z=>+==v=1{>>%7a>A#>S.>Jw>,===+=~=D==ǟ=AU=;&=< ,>>K>|>uq>%>.=>>(>U>>>>qm >7=Q0=k}=5=>`y>(>8D>&=o=;<є=>Y!><[>Az?>E>>`>%>J>;c>n>o>3>}>>ZR>r=c=p=>,SR>Y!>nLZ>\O>&Z=<ܪXf>>~?NF>>i7>_˭>>>8D>i->>c>7a>,\>Zd>=̾=>|>79>i->~9>k->5l=K=@:Y< =>'Ə>M">/>O>Z>d>, =>|>>;/>iv>>>k->4I=鿗=d=d=ܪ>d=>Jw>av>N>A =<$T:Y:Y=@=>0>t>>fV>ҥ=ǟ=E=!=|=>>0>3&v>=_=u)=8D=H1{= =AU>,\>ҥ>%=ϖ7=p#<(X':ʜ="4=a==B===8D=/+K=/+K=A^W=l=u)= ==/=8D<:2<~;p:d:Y:Zd;Zd<:2<>=ܪ==l=>J>>|==f=(X'<> |i>>>V=\5=̾=3=){X<`y>=A==^=bZ=B=~=Rn1={a ==u=p#=p#=`y=5p<$T:Zd:Y;Y<:2=8r=Jw=\=5p<;K;Y<~<(X'<=5p== =}l=K =8D=C=K =+<1{;K;K=u)=y==є=v==<є<є<$T=h =!==j=߂===N|==k}=`y=bZ=h=鿗=A=V=h=l=:2=+=`y=>^>!>+>> 12=o=y=AU==pS=2<:Yb> 12>=йh=4={a =bZ=.=د> G>:Bf>@>5$ >>==鿗=˛ =d=@;&<:2<%=QK==->==O=Ə==rG==׌>>5$ >9>* >==AU=O===,<~:d<ܪ=8r=l=Y==v=y=h =em=[=!=>)>>`y=,===d= =Jw<є:d:ʜ>u)==d=Rn1=h =k= u>>>A >=={X=7!<=5p=8r=޻==@;~:ʜ=;c=B>Rn1>m>~>)>G=鿗==y>V>=c,>em>|>y>Sb>f=Y==\==ϖ7>`>t>=D=V;5p<8r={X>@̾>R>.>r>Re>S>M> >pS>?>y >>q>{>>g0j>@=˛ ==>2ݪ>fV>|;o>i>2ݪ=,= vG>ֲ(?Ǡ??l>װ>>-O>.>ZR>>n>>)> k> a>BS>=LZ> >g0j>m>7a> G>kt`>r=:d<$T=s>sN>Դ?m?O?% >ֲ(>>/>.>X%>`>$ >>Mk>>P>GJ> y>b>,>v{>>r>8>{>>=u);Zd=c,>><>L> >V>QK>>pS>7!>j>N>>MG>>q>+0!=-=AU>'>W>V>>>_> V=l:d:Zd=8D=I>IT>->?>>EM>b=D=ϖ7=x>>GW>k->pI>Y!>(=_=d=@=ǟ>>E>[>IT>=l<%;Y===D>|> =))=SR=}l=a7=h =;={X=,=B>`y=Z==`y= 5=8r=Sb== u==O=<;:d:d<޻=Y="4<~ <ܪ="4=+=8rǠ>޻>r>=Y= =2`y>Ǡ>޻>'Ə>2ݪ>,>pS=y6==QK=>>>J>n>/+K>79>.>pS=V==P' f> >Q>>>n>>b=̾=f=+;d<~<~;d:ʜ9Y9Y;K<є=*=8D= 5o>u)>>=7= =2=D=d=h <ܪ:ʜ<%=@;&= =Դ= =ܙ===8D=8D=B=O>k}>:Bf>B8>8>> l==-=1{= =8D<%9Y==1{=d==|;={X>|>4I>Vi[>^}>M>3oB>>=e=د={X=QK>0>N>U>B>&> |i=o=߂= =k}=8D<1q:d%>,SR>.>===?=v=HM=\<ܪ;5p;Zd<є=:2=p#=rG=V=8D=7!=K =p#= G==B=s=c,= =H1{=8D=7!=YK="=pS===K ===$T>>J>=y6=4=8D:Y=2= u><>>>8r>;c=ܪ=l=s> >79>`>{>y >U>n=s= =rG=a=鿗>n>5$ >%==3<:2<(X'=:>/>?>Ѓ>>O>`>A> l>>9>t>>s>$ >?>pI>* ==|> l>F|>|>%> >Mn=A=QK:d`>ǟ?b? f?I>̙>}>+0!>)$>V(>>>">֎>X>k}>U>pS>~>6G<>>>db>*>6>.P=d;~ <+K=̾>_>}?M? ?>}>̙>>.>+>V>>>Վ>d>ơ>es>`y>q>%>A> >p> >c>NX>:Bf=<%< =Cw>.P>>)>>װ>_h>K>r>>8D>pI>?>ן>> >q>@> =A>* >tE>a>q>->~9>n=M";l:Y=){X=O>;/>:>o>:>A#>E=Y=O>b>(>Y!>~>:>pI>?Z> l=c,=?=2>,SR>av>{>>iv>2ݪ=O=Y;Zd=7!==N> ===`y=`y=h = =!=鿗>>> |i=O==T=8D=h ==鿗>==="4:d:d>)>=A==f=/+K<ܪ<7=C= =X'=X'= =7!;ʜ;Zd=k}= ===A>>o>>([>2L>+>=2=d=K =B=[=l={X= =Y=I=<є< =<є=4=AU>>>>>!>1y>8i>/+K>pS=m=d=E<$T<$T=h =v= u=ϖ7=2=y<$T<~=8D=d=ϖ7=l> 12> >>>n>$1>>===q;Y:Y:Zd`y> >|=i[===X'= =8DpS>8D>?>3&v>">b=~ =ϖ7=D==u);K;d= a=M"==,==X'==H=V=l=^=A>0H>R>Zd>G>.>==<==%=0N|<%;==[===?===p#=8r=>K>.>K >R>?>n>=_=,=p==HM;~ :d>* >,>=LZ=2={X=a=[=8D<:d:ʜ:d:d;l;Y:Y:d<%=m=\=E==QK>A^W>\>BS> f=v=f={X=AU>Y>6G<>K>Ix>/>=!==QK=l=O>r>([>=_=}l<#d:d=`y=A>d<>c>>~>o&>'='=_>>GJ>b>> G>8r>Rn1>pS=O==j>9>vG>3>~>D=))=A^W:d;1{=M">"4>V>N>1>ܙ>A >C> |i> l>/>o&> >>> >>A> y=>*U>wx>̚>>>I>&= G;;1{=M">">)>͘>Xp>Ѹ3>q>G> > >3oB>t>>>8>y>.>MO>pS> >8D>:>O>>s>f>3oB={X<~:d=`y>b>d<>^2>>4>y >&==LZ>J>Mn>4>̚>2>g>yA>8D>>=>>hg>>2>?>sj>=5;Y<є=d>w>F~>av>K > G=ϖ7={X==>%>?>fV>oW>`>7!>=c,=+K=>n>U>n>^}>)2=;&<:Zd<~ =3=c,="==޻=QK=.=5p=kt`=\=s>`y> y>|= u= G=h =7!=B=q==j=ܪ=k=:Y:Y;<є<<є<>;5p:ʜ;5p;d=B= a;d:ʜ===N|=ǟ=׌=ܪ==l>>>)=== ="4<<ܪ=V=k==={X=kt`E> Tc>z>n>>b=̾= =޻<>`>Y>=ܪ={X=U<^W<~<~=q=y===d=em<8r:ʜ<ܪ=l=d=h=̾===O=ܪ=ܪ==^=h <ܪ;~ :d:Zd<ܪ=8r<;d:Y;~=y=,=v==8r=p#=8D<ä;:Zd<>=~=QK=l=QK=Q<>n>==Y==X'=5=7!<:p:dr>2ݪ>9>* > =I==p==QK<є:ʜ:d%>.>3>n>=T=?===8D.>Y=x==pS==em=5p<~:d:Y9Y:Y;5p;K;d;~:d:Y:Zd:ʜ;#d:ʜ:d:Y:d;l;5p:d:Zd:Y:Zd:d;< <є<<%;~:d;~ <ܪ=5p=8D=Y<8r;~ <:d;Zd=(X'= ="==ܪ==;c= f=GJ=Y==Z>E>===}l=2<=$=/= u=LZ=AU=d=%:d<=%>E>=>Y!>EM>%=h=[=pS=>>0N|>K >R%e>:>=د==.=!> y>=c,>W>F~>=E<ܪ=~=c>,>we> a>>?==q==->%>\>> >t>EM>=i[= >=H>?Z>~9>v^>>M===Rn1:d= f=>.>ycu>`>K>C>=h==>,>d<>6>`>>V> =엑=AU>`>Ph>j>E>v^>_> =p#:ʜ 12>D6P>a7>Mn>q==d==O>r>C>k->z=>i->@>%="==>5l>n>>y >>==~ =7!:Y;5p=7!==~> >== =YAU=[==D> 12>+0!>7!>,>=йh=4=`=X'=>#9>9>,=A= <>;d=޻=rG=y=}l=7!<1{;~ <~=~={a = =d=y=7!<:d<2=V=HM=v==!== =йh=i[= ==em<ܪ;~ :d:d;~ <%<="4=y=Y=>u=-==%=B=`y=(X'<;~:Y;5p<(X'<~;~ <:2<є=k}=kt`=^=̾=6P===0N|=<є<<====p#=p#=:2<%<#d;~:d:Y:Zd:ʜ;<%;~ ;~ʜ:d9Y:Y:d:d:Y;1{<$T===V=8D<є;~ ;~ʜ<5p<==8D=V=h =bZ=C='4<ܪ|=t`=="4:ʜ:d="4==V>o===n=Y=1q==I=t`>u)>HM>===M"=8r=d=y6>n>8D>+x=l= 12>=̾==/+K=7!=[=2>b>>(>n> l=O=Ə==p>>0>EM>9> y=d<5:Y<%==c,==D=d=QK= 5= f=`y={X=> y>J>%=== G=3=k=AU>>,>d==g=;;K=HM=|;=Y=[=<є:Y:Y:Y:Y:ʜ<~<^I;Y:Zd:Y:p:d:d:d:Y:Y:d;d;~:Zd:Zd:d:d:Zd:Y:Y:Zd;Y;<= =<є=E=){X;K:ʜ:Zd:Y:Y:d;~<%<~;ʜ<~;d;5p:d:Zd:Y:Zd:d:d:Y:Y;~ =8D=<=Q=+=<~:Y:Zd:Zd:d;~<Y;:ʜ:Y:Y:d:ʜ;Y;Zd;;d<%;1{:d:Y:Y:d;Y;~;;Zd:d:Y:Y:Y:Y:Y:Y:Y:d:d:d:Y:Y:Y:Y:Y:d;Zd;~;~;~ʜ;Zd;Y:ʜ:d:Y:Zd:Zd:Y:Y:ʜ;K;ʜ<%<(X'<><%;;;~ʜ;d<~;d:d9Y:Zd:Y:Y;Y;~ <>;K;~;d<~;~ :d:Y:d:ʜ;Zd;;K;K;l:d:Zd:p:Y:Y:Y:Y:Y9Y9Y:p:d:ʜ:d9Y:Zd;Y;K;~ ;~:d:Y:ʜ;1{<~<~;d:d9Y:Zd:d:ʜ;;~ ;ʜ;~ ;Y:d9Y:Zd:d;Zd;;K;d;;5p:d:Y:Zd:ʜ;~ʜ;;~;5p:d:Y:Y:d:ʜ:ʜ:d:Y9Y:Zd:Zd:Y:Y:Y:Zd:Zd:Y:Y:Y:Y9Y9Y:Y:Y:Y:Y:Y:Y:Y:d:d:p:Zd:Y:Y:Y:Y:Zd:d:d:d:d:d:d:d:p:Y:Zd:d:d:d:d:d:d:d:d:Zd:Y:Y:Zd:Y:Zd:Zd:Y:d:p:Zd:Y9Y9Y:Zd:Zd:Y:d:ʜ:ʜ:d9Y:Y:d;Zd;l:ʜ:Y:Zd:d;Y;#d:d:Y:Y:Zd:d:d:d:Y:Y:Y:Y9Y9Y:Y:Y:Y:Zd:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Zd:Zd:Y:Y:Y:Y:Y:Y9Y:Zd:Zd:Y:d:p:Y:Y:Zd:Zd:Y:Zd:Y:Y:Zd:Y:Y:Y9Y:Y:d:d:d:Y:Zd:ʜ;5p:ʜ:Zd:Y:d:ʜ:d:Y:Y:Zd:Y:Y:Y:Zd:d:d:Y:p:ʜ;Y:d:Zd:d:d:Zd:Y:Y:Y:Y:Y:Y:Zd:Zd:Y:Y:Y:Zd:Y:Y:d;Zd;~:ʜ:Y:ʜ;d;;:d:d;K;d;l:Y:Zd:d:ʜ:d9Y9Y:Zd:Y:Y:d:ʜ;Y:d:d;Zd;l:d:Y:Y:p:ʜ:ʜ:d:Y:Y:Y:Y:Zd9Y:Zd:Y:Y:Y:p:d:Zd:d;Y;K;5p:Zd:Y;5p;<~;K:d9Y:ʜ;d;;:d:Zd:ʜ;5p:d:Y:Y:Y:Y:Y:Zd:d:d:Zd:Y:ʜ:ʜ:d:Y:d:d:Zd:Y:Y:Y:Zd9Y:Zd:ʜ;5p:d:Y:d;;K;5p:Zd:d;~ʜ;d;Y:Y:Y:d:d:Y:Y:Y:Zd:Zd9Y:Y:Y:Y:Zd:Y:Y:d:d:Zd:Y:d:Y:Y9Y:Zd:d:d:d;~;5p:Zd:d;~;5p:Zd:Y:d:d:Y:Y:Y:Zd:Zd:Y:d;~ ;;~ʜ:Zd:Y;~ ;~ :p:ʜ;;5p:ʜ;#d;K<<~;K:d:d<%<==K =rG=n==<$T;K;~;Zd;K<~<1q<:2<~:ʜ:d;<^W=2=l==n=8D;Zd;Zd;Y:ʜ;Zd;d<~<%;d:d:Y:d<%<:d:Y:Y;Zd:p:Y9Y:Zd:d:p:d;d;1{:Y:Y:Zd:d:p:Zd:ʜ:d:Y:Y:Y9Y:Y:Y:Zd:d:d:Y:Y:d:Y:Y:Y:d;K<%<%;d:d;Zd=C=={X=[= f< :d:d;Zd;d<%;K:d;Zd<~:ʜ:Y:d:d:Y9Y:Y:Y:d:Zd:Zd;~ <є= f=Q<<%;K:Zd:Y:Y:d:d:d:Zd:Y:d:d:d:Zd:d:d:d:Y:Y:d:p:Y:Zd:Zd:Y:Y:Zd:d:d:d:d:Zd:Y:d;Y;p;K;~:d:Y:Y:Y:Y:Y:d;5p<%%>t>==8D='4=@;&=kt`=y=^=={X=f=/+K>9>F|>'Ə=O==V=kt`==H====є==`y>7!>A^W> =ǟ==`y=h =p#=~=d==I==D<;d;1{Ǡ>=V=޻=8D=/+K=/+K=,=7!=`y=={a =<є<$T=8D=Sb=7!<;d:Y:Y<=V=HM=a=sj=8r<@>,>Y=D=V=D={a =d==g=A=o=Y= =<5p;<5p;/>>,\>we>&Z==%=4==A>>,>+x>%=ϖ7=l=Y<ܪ=){X=B==D=d=Mn;;Zd=Jw>8r>nLZ>>">?>Y!====> >.>C>C>+>?=Ə=H1{=5p==!=y6===d=B:Zd;5p=QK>>k->8>t>>U=N===s>>$1>;c>=c,>$1==a=@;&=8D=f=̾=A> ===5p;Zd:Y=Y=>6G<>{>>6>hg>C=2=d=d=v=Y=G>%>r=G=D=`y<==h =SR==t`=ϖ7==k};p<%=a7=D>%>==X'=h =Rn1=D=Rn1=p#=޻==SR= =8D<;~ʜ<~<==c~ =%==M"=L>=+=[=h =bZ=Zd=bZ=Rn1=+<^I;5p;Y<==}l=^=v=HM=L>=V==2=N=߂=D=~=8D=@=7!=y==>=-=̾=v=v=v=@=l<=;~ʜ;p=2=d=,==йh=I=l===,=8D=y=;&=엑===E==k}=k}=f=Jw<^W:ʜ:Y >f 9>}>\>r=X'= ==د> />, >9> =g==/+K<==2=3==^W==l>^>>Mk> k>\5>pS=|=ܪ>.>8>c5?>>>av>--=s=HM==H=Ə=->>&>pS="=h ;Y>=> >x>B>5?>Z>C=>|>n>Mn>>k}>z>>K> == =>>F|>Z>GJ>=<=c,>2>>E>7>/>C>=H>>>GJ>}>M">>E>Jw> ==E=V>%->U>j>X>#d=c<7;l=q$T>%>b>> >q>y >=AU=>K> a>Jw>n>sj>X>&Z==k}=M"=>`>9>Jw>;/> =^<:Y<ӑb={X>>Y!>l]>ID> y=D=k=>=SR= u>>z>>> =˛ =~=){X=+==c,=> Tc>b==A^W<~:Zd<ܪ=8r=D==4=h =){X=~<== f=0N|=h =u)=%=|;="4;~ :ʜ:Y:Zd:ʜ;Zd;Y:d:Zd:Y:Y;K;:ʜ:d:d:d:p:Y9Y:Y:Zd:Zd;Zd=x=׌==h ==e=={X=h =8r;=+=)==̾>==O=s=ܪ=y=s== =<є<<>;p<>=E=y=M"=}l=Y;5p:ʜ<2=QK==Ə={X==={X=Ə==rG=7!<ܪ<Y;K:d:Y:Y:d:d:Zd:d;;l:Zd:Y:d:ʜ:d:ʜ;1{<;~ ;Zd;Y;K<~<;~ʜ:Zd<~<====Mn="4<^W;d;~ʜ= f=3=E==4=n=<<<ܪ=QK==O==|==a=d=d= =QK<1{:ʜ>d=>%=~=йh= u=|==y=){X<Ǡ=A=˛ =d=p#=[=f= u>)>0H>79>'Ə> ==="=c,=HM=8D<,;=H1{=E=B=A=LZ=J=\==p#== u>>+>/+K>f>======"4<~:d V> y=엑=h=%=.===H=8D<:ʜ:d<=8D=p#=rG=V=7!=.=7!===p#=f=I=q= =2:ʜ;E> y>=ۇ=d=8D9>>o>>}>3oB=|=d=c=>$\>G>dXp>b>C>pS==`y=P'= =>>>|==8D:ʜ;= >+0!>>ֲ(>>F+>Cw>8D=LZ>K>$>X>3>>;>.>Z>=1{=I=>">R>i->V>!=2<ܪY!>8>m? Y8>_>Y>nLZ>>pS><>{>>̚>db>>0!>:>;c>=Z>>U>Y8>ذ>>X>>=V:YX>_>>?l>>6P>o&>C>>:Bf>x@D>>>>SR>7=>>]>=LZ>t>av>)>>K>hg>Y={a :d;d= >'Ə>K>p> 9>Ϻ>z><>>`y>>Jw><>BB>`>>c>n== u>>A>}^>.>=H>G==;c:Y=8r=̾>5$ >}8>>z=>3oB=y6==h=> |i>2E>R>[Ѓ>F3>=O== =>>2ݪ>EM>8i> =a<8r:d=u)=d===ϖ7=a=l===8D=Sb=f==i[=V= u=a=H1{<7<1{=/+K=~=l=Y=D=<^I;d:Y;Zd`>%>)=\5= = =5p<ܪ<ܪ=QK=@=h=2==h >`y>B> 12>pS>>M"=== =5p<̾><=Jw=k=c===sj<:d?>o> >|=i[= =p#= 5==ǟ==v=0!=pS=V)>2ݪ>9>,>%====2=)=2<Y<:2=\=!=y6=9=엑= =f={a =|;=4=>,>K u>T">A#>%-> ==m=|=k=A^W*>F|>ID>9>"=N=׌=,=D= =1q<>:d=̾>> >#d>%>Y===d=a=f=Jw;~:Y:ʜ;;<<><=7!={a = =y=p#=2>=Դ=d=A^W<є<%<8r=(X'==pS=[=2<><7=l>&^>pI>Y8>pI>* ==k}=?=엑>>E>c5?>d>F|>=O=/=kt`=)=">>%7a>=ܪ={a <%;Zd=>>>1{>> >>0H=Q0=>d=>Vi[>2g>^2>`>M">f>$=߂==>96>o&>>wx>==2=5p:Y<1q=0!>EM>s>$T?O{>j>/>f>>)>9>{>~>8> >$ >v^>K >)>b>(>oW>>>4>{>>q= :ʜ<5p={X>D6P>&v>#?I>>?>j>>pS>:Bf>|;o>>6P>>6>޻>U>"> l>2ݪ>~>>6>>B>+=a;~ʜ;l=>>X>>ٮ>I>M">>|>d=>UF+>>Z>O> >|;o>8i>=鿗>>_>>̚>k}>i->%=|;:d(>n>^>oW>3&v=LZ==D=AU>%>?>f>q$T>`>5$ >K=D==ǟ>>IT>c>S.>n=h l==;&=y=;c= a=<є=pS=ǟ=y6=O=%<$T:Zd:Y< <ܪ=~<$T<5;~ ;~ʜ;5p;<~;5p:Y:Zd;>>%=e=̾=f=0N|K>>> >>>pS=\5==y=.=D=[`y> 12> >=AU=0!=jQ0=;l:ʜ:d:Y:d;5p<^I=+===8r=E="4="4="4<7==={X=k===/+KY>1(>96>* > ==˛ =̾=0!=|;=8r;;d==/==J=є=d={a =QK=p#=4=~>,>ID>R>?> >`y=I=O=D=f="4<~;Zd<$T==v=є==d=8r=p#=l=+K=e>*U>F|>ID>8i>pS=Q0=1{=c=X'={a =~;d:Zd<:2=){X====8r=em=]=}l=k=O> >$1>&Z>Y=ܪ==%= =q$T=+K >޻>>D>fV>==O>>8D>rQ>M">BB>>k+>.>=I>>R>3>>,\>_> 5=h :Zd5$ >KRA>;/>=ä=f===>+x>Mn>^>Mn>+==h==є>`>=>WX>F|>pS=<==O=Ə=`y=8r> >b="={X=`y<$T,>EM>7!>8r={X=em={a ={X=B>z>9>@̾>1y>u)===3=X'=>/>EY>96> y=\">`>>k->2ݪ=B=k=k=Y>>B>k->ycu>f>=c,>=ϖ7==->0>jQ0>a>t><є=7=5p:Y G>aB>>n>7!=o={X=^=O>pS>IT>vG>a>uhK>Jw> G== u>|>=c,>{>>U>>G==B:Y<(X'=8r=$T>3&v>KRA>=c,>r=== =D>b>/+K>V(>fV>Y!>8D> 12=,=h=>">X>pۈ>b>.P=|=8r:Y=8r=k}=AU>K=Q0==[=@;&=7!=|;=?=>>&*>>=|=k=[==O>%>%7a>=AU=n;Y:ʜ<ܪ=QK=}l=l=/+K<є<^I=Q=|;=q=d=3=/+K;~ :Y;Zd:p:ʜ;K:Zd:Y:Y:Y:d<><<<5p;d;~ʜ:ʜ:Zd:Zd:d:d:Y9Y:Y:d<(X'='4=~ʜ= ==;c=~<ܪ|=y===h =A^W=Q;Zd:Zd:Y:Y:Y:Zd:p:Zd:Y:d;~;:d:Y:Y;Y<%<<%;K:d:Y:Y:d:d:Y:d> >Ǡ=V=!==sj= =˛ >%>%>=I=z=;d:Y< =.=O==y6==p#=Q=~=Zd=X'=I> >>>=|=d= =d=m>>4s>'Ə==f<% > =鿗===|;=y=>>> ==QK;5p:ʜ<ܪ=V=B={a =7!;:d:Y:Y:Zd:ʜ;<><ܪ=Y<7<:Y< <엑="4=~=B=5p=){X;~:Y:Zd;~ <(X';d:d:Y:Y:p:d:Y:Y:Y:Zd:Zd:Zd:ʜ;5p:ʜ:Zd:d;~;~ ;d;Zd:d:Y:Y:d;K<Y<%;;p:d:Y:Y:Y:p:d:d;Y;Zd;K< <5p<5p<>;~ ;5p:p:Zd:d;#d:ʜ:Y:Zd;Y;;d<%;d:ʜ:Y:Y:ʜ;~ <%<%<~;~:d9Y:Y:d:ʜ;H1{;5p:ʜ:d:Y:Y:Y:Y:Y:Y:Y:Y:Zd:d:ʜ:d:d:Zd:Y:Y:Y:d;~ʜ;p;p;;Y;Zd:ʜ:d:Zd:Y:ʜ;K<<;~ :d:Y;5p;< ;K:d:d;5p;~ʜ:ʜ:Y:Y:Y9Y:Y:ʜ:ʜ:d:Y;Y;d;d;Zd:Zd:d;~ʜ;<;:d:Y:Y:Zd:d;5p;1{;K;#d:Zd:Y:d:d:d:d:d:d:d:Zd9Y:d:ʜ:ʜ:d:Y:Y:d:d:Zd:Y:Y:Y:d:d:d9Y:ʜ;d;;:d:Zd;<><:2<:ʜ:Y;~ʜ<%<>;~ :d:d;~;p;Y:Y:Y:Zd:Y:Y:d:d:Zd:d;~;~:ʜ:Y:Y:ʜ;K;K;5p:Zd:Zd:d;Zd;~ʜ:d:Y:Y:Zd:Zd:Y:Y:Y:p:d:Y:Y:Y:Y:Y9Y:Zd:Y:Y:d:Y:d;~ʜ;d;Y:Y:Y;Y;~ <~;p:d:ʜ;d;~ ;~:Y:Zd:ʜ;Y:d:Y:Y:Y:Y:d:d:Zd:Zd:d:d:Y:Y:d:d:Y:Y:d:Y:Y:d:ʜ:d:Y:d:d:p:Y:Zd9Y:Zd:d:Y:d:ʜ:d9Y:d:ʜ:d:Y:Y:p:Y:Y:Y:Y:Zd:Zd:Y:Y:Y9Y:Y:Y:p;5p;;Zd:p:Y;Y<~<>:ʜ:Y:Y:Y:d;Y:d9Y:Y:ʜ;K;d:ʜ9Y9Y:Y:Y:Y:Y:Y:Zd:d:d:p9Y:Y:Y:d;5p;5p:d:Zd:Y:Y:Zd9Y:Zd:d:d:d:Y:Y:Y:Zd:Y:Y:Y:Y:Y:Y:Y:Y:ʜ;d<%<~;Zd:Y:Y;Zd:ʜ:Y:Y:Y:Y:d;Zd;~:ʜ:Y:Y:ʜ;d<~;;Y:Y:Y:Zd:Y:Zd:d:Y:Y:Zd:d:d:Y:Y:Y:d:d:Y:Y:Y:Zd:Zd:Y:p:p:Y:Y:Zd:Zd:Y:Y:Y:Y:Zd;~ʜ<<%;d:d:Zd;K<ܪ<(X':d:Zd:Y:Zd:Zd:d;5p;K;~ ;~:p:d<~<><ä<2;p:d:p:Y:Y:Y;5p:Zd:Y:Y:Y:Zd:ʜ;1{;Zd:Zd9Y:Zd:ʜ:ʜ:d:d=p#=!==9=.=,=sj<7<^W<7=[=.=bZ=B=8r=]= 5:d:d;~ <8r<є<<%:ʜ;K<%=2=8D=<5p;Y:d:d:d:d:d;5p;Zd:d:Y:d;K<%<Y;:d:Y;Zd<%<>;:Y:Y:Y:d:Zd:Y:Y:Y:Y:Zd:Y:Y:Zd:Y:Y:d:d:p:Y:p:ʜ;Zd:ʜ:Y:Y;5p;K;Y:d9Y:Y:d;1{<~<~;:d:d:ʜ:ʜ;p<%<:d:Y:d;d;d:d;5p<(X'<<;:Y:Y;d<~;~ʜ;~ʜ<%:d:ʜ<=$===5p<$T<^I< ;;~;5p;~ 2ݪ>A^W>#d=|=V=4?=H1{=={X=O===K==D!>d>z=>U> 12=k}=q$T={a =Y==t`> >=A=є=|;=[<2=Y=rG===a=O<5p:Yn>`>t>OMk> l=a=== ==>>Ǡ=t`==h <<2='4=8r==є==n*>8i>HM=={a =V=H1{=V=B==̾==q==H=~<1q;~ :ʜ:p:Zd:Zd:Y:Zd:d:d:d:ʜ:d9Y:Zd:d:d;5p<:2<^W<<=/+K=@;&=+<$THM>*>=p=@;&="4=Rn1=M"==o> Y8> |i=))==l8D>>}>%>{a >, ==5=%=2=l>">=c,>@̾>,>==kt`=2=h = ==="=a=8r:Y:ʜ=@;&>K>k+>~>C>>av>b=q=E=">>:>^}>c>HzG>=i[=M"=sj=9=>>"4>=K=l;1{:d=@;&=ʜ>i->/>!>>`>E=h=p=O> f>5$ >W>_˭>F3>=O=`==X'=t`>A >.>= =B<%:Y<==c>3&v>{>>>pI>'Ə=|=d==v=">.>,>2ݪ> ==^=Sb=<є=f=>>>Ǡ==QK;;K=H1{=>%>>>o=!==V===QK=8r==,=د===+<<="4==v=c,=q=u<;5p;d= f=h ==QK= 5<%<%;~;5p;K<(X'<~ʜ;5p:Y;d |i>w=x==={X={X==kt`=;p;l=k}=M"=c,=O== ==H1{===em=9=i[>> l=-=h=HM=M"==l=Jw<;Zd:Y=q=|;=8D=9h=Jw=8D=<5p:p:Y<%<==5p=7!="4=~=~=~=~="4=V=={a =7!<^I;~:Zd9Y:ʜ;;~;~;Zd;~ʜ<%<ä="4=:2=A^W=/+K<$T<>:d;==o>3oB>GW>/t=Z===={a ==m>%>(X'>+0!>=y6=d=D==5p= ==O=2=f<ܪ:Zd:Zd=$=>R>!|>0!>>R=LZ=4==>">GJ>k->pۈ>Y!>,==4==X'=LZ>>>0H>n=t`=<%;Zd=n>>>X>Վ>;&>7>$1=O= u>E>2ݪ>k+> >s>I>OMk>M"=ǟ=q=i[>>O>fV>U> a=2<ܪ;Zd=n>r>8r>`>ӵ><[>>(=ۇ=ϖ7>>/t>hg>|i>[>a>Qܙ>'=˛ =!=B>)2>\>sN>bZ>.P=1{=B:Zd="4=ܪ>Ns>>>!>Sb>=є=D='>w>b>n>Y!>.=o=SR==>.>=`>R>A>=0!/>A>,==0!=3=|;= =!=LZ>'>d=>%== G=E=5p={a =9=B>w>==8D;<#d=:2=pS=X'=)=\=q<ܪ<<є= f=V= =@=y=C;:d:Y:Y:ʜ<~;d:ʜ:Y:Y:d:d:d:Y:d;Zd;d;Zd:d:Y:Y;~ʜ<><5p;~ :ʜ:d:Zd:Zd:p:d:Y:Y:Y:Y:Zd;d<<=<$T<<~;5p;Y;~<<(X'<(X';:ʜ:Y:Y;~;~ :d:Y:d;d< ;~9Y:Y:Y:d:ʜ;Zd;K;d;1{:d:Y:Y:Y:d:d:p:d;5p;Y:d:d:ʜ;5p;5p:d9Y;1{ >r>=== ={X=pS=^I<7;Zd<~=5p=@====Ə=sj===K =l=̾> |i>%7a>+>===!=?=d=rG=~;d;~ʜ=~=3=!==c,=^==`y=l==>~>n>$1>=I=I==d=/=V<7;Y:Y<5p=2=l=>==[=`y=Mn=`y=={X=د>>=AU==p#=`y=em=D= f<:Y:Y:Zd;Y;K;K;;~;;p;~ʜ:d:Y:d:d:d:ʜ;<~<%;;5p:Zd:ʜ;Zd:ʜ:ʜ:d:ʜ;1{">:Bf>$1===7!=h =4=ۇ>`>&Z>, >== =bZ= a=E=d=د===X'=.;5p=[=ǟ>@>0>>->G=))=d==>>H1{>oW>z=>aB>7!>=!= G=D> >8>IT>;/>={Xo>z=>?>Sv>jl>:>"=O=Y>|>4s>pI>>>>`>"=V==>79>m))>E>u>=c,=2=1q:d=QK>>y>t>Ȟ>:>>)2=ܪ=O>`y>5$ >pۈ>>>>fV>(==˛ >`y>?>{>>>I>GW==;c:Y:Y=[=ǟ>?>X>>w>Q4> l=є==׌>'>GJ>tE>K>o&>B> /=Y=I=>"4>Y!>pI>av>-v=|<ʜ;=h =_>%>;e>*=x=E=f=|;=޻=>>&>3&v>'4>===l= =O>%>%7a>==p#;K<%=8D=)={X==rG=.<<^I;:ʜ:Zd:Y:Y:p< <є<$T<%<<~:d:Y:d:d:p:Y;Zd<~<>;d:d:d;=2=޻==Y=!=/=h =\=V=5p />>B=O= = ===7!<:d;~<엑=l=k=v=d==8D=(X'=C=5=> y>'Ə>,>"===0!== =Mn f>"_h>&Z>)=I=v=k}=)=}l=7!>=I=X'=kt`=H1{=A^W=*;:Zd:d;5p;d<(X'==4=8D> ===M"=A^W<$T="4=y==_=,= ="4:ʜ f>L,>k->V(>=={a =`y==LZ>&>GJ>R>A>ҥ=y6={X=y=Ə=e>,>@>4I> l=d<<=>8D>> G>|i>J>|==4=˛ >>Jw>y>z>r>GJ>'="=h=I>+>aB>{>>k+>6=د='4<$T=c,>8>_C>>>OMk> l=!==йh>%>OMk>}8>6>|;o>Rn1>C=B==>7!>nLZ>>y >?=g=5p`>Mn>m))>ZR>&=ܪ=d=޻=D>?>/t>X>i->[>79>==v=|>J>K u>fV>V(>"_h=c<ܪ:d=@=0!=>Y>=D=%=`y===sj==g>޻>"_h> G=9==y=l=B=>Ǡ>>w=D=V;Y;Zd<==em=3==H=H1{=<><^I<8r=%=p#=d=l==y==<=<8r:ʜ:Y:Zd:Y:Zd:Zd:Y:d<~;~ :Y:Y:Y:d:ʜ;Zd;~ <><~;5p9Y:Y:d:ʜ:d:Y;K`>r>=H=ä==8r=rG=@;&<=<%:Y9Y;K<=@=8D=7!=Q<$T= f=8D=|;=+K=-> >`====h =Rn1=+<;~ :Y;d:d:Y:d;<< l===Zd<엑=B=V=a=O>>>=ܪ=v==H===bZ=?=>)> l=Y=a7;~ ;~ʜ=IT=|>>79>(===Mn=D=5=̾> >,>:Bf>2E>===.={X=\5>/+K>C>8i> y=<;=Mn=,>A >96>+>==l=V=.=T>u)>5>E>>=LZ=D==D> >:Bf>Qܙ>A>=v<:d=Q=Ə=G>Y>Ǡ=O=޻=E=0N|=p#=q=>>,>&Z> =O=^=y= =7>t>2ݪ>%-=$T=5<~<1q=;c==?==f=8D;~ʜ:d:ʜ<;~<~=[:d:d<:d:Y:Y:Y:Zd:d:d:ʜ;~ʜ;1{;#d:Y:Y:Y:Y:Y:Y:Y:d;~;K;~ ;d;Zd:Zd:Y:Zd:ʜ<5p<=V==Y=~ =߂==d=|;=A^W=QK====-==(X':d;l;d<^I=2=f=l==J=I=u)=c~ =+=){X=}l=!=,=є=3<1{:Y<><==5p=+<ܪ<%:ʜ:Y:ʜ<=5p=|;=pS=M"==Mn=@<<(X';~ :ʜ:d;K< ;ʜ;5p9Y;Y< ;d;5p:ʜ;5p< <Y;~:Zd:Y:Y:Zd:Y:d;Y;d;K;5p:d:Y:Y:d<~<2<$T<< <5p;~ :ʜ:Zd:Y:Y:d;~ʜ<5p<ܪ=3=<є="4<~:ʜ:d<~<8r=%=;c=){X<~;K;Y:d:Zd9Y:d:ʜ:d:Y:Y:Y:d;~<~<(X'<;~ ;5p:Zd:Zd:Y:Y:d;~ʜ;d;1{;Y:Zd:Zd:d:d:Y9Y:Y:Y:Zd:d:ʜ:d:Y:p:ʜ;Zd;~ʜ:ʜ:Zd:Zd:d:ʜ;Y;Y:d:Y:Y:Zd:Zd:Zd:Zd:Y9Y:Y:d:d:d:Zd:Y9Y:d:ʜ;5p;Y:ʜ:ʜ:d:d:Zd:Y9Y:d;5p;~;;d;~ ;d;~:ʜ:Y:d;Y;~;K<~<%<%;;Zd:d:Y:Y:d:ʜ;5p;1{;~ ;;K;Y:Zd:Y:Y:Y:d:d:ʜ:d:Zd:Y:Y:Y:d:d:Y:Y:d:ʜ:d:Y:p:d:ʜ:d:Zd:Y:d:ʜ:ʜ:d:Y:Y:Y:Zd:d:d:d:p:Y:Zd:d:d:p:Zd:Zd:Y:Y:Y:p:Zd:Y:Y:Y9Y9Y9Y:Zd:Y:Zd:Y:Y:Y:Y9Y:Y:d:d:d:Y:Y:Zd:Zd:Zd9Y:Y:Zd:d:d:d:d:d:Y:Zd:Y:Y:Zd:Zd:Zd:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Zd:Zd:Y:Y9Y:Y:Y9Y:Y:Y:Y:Zd:Zd:Zd:Y:Y:Y:Y:Y:d:Y:Y:Y:Zd:Y:Y:Y9Y9Y:Y:Y:Y:d:Zd:Y:Y:d:Zd:Y:Y:Y:Zd:Y:Y:d:ʜ:d:Zd:Y:Y:d:ʜ:d:Zd:Y:d:Y:Y9Y:Y:Y:Y:Y:Y:Y:Y:d:d:Y:Y:d;5p;#d:d:p:d:d:Zd:Y:d:d:d:Zd:Zd:ʜ;Zd;5p:d:Y:Zd:Y:Y:Zd:ʜ;~;~ʜ:d:Y:Y:d;Y:ʜ:d:Y:Y:Y:Y9Y:Y:d:d:d:Y:Zd:ʜ;5p:d:Zd:Zd:d:ʜ:d:Y:Zd:Zd:Y:Zd:d:d:Y:Y:ʜ;p;K;Y:Y:Y:d;Zd;d;~ ;~ʜ:Zd:Y:d:d:d:ʜ;5p;Y;:ʜ:Y:Y:ʜ;~;~;Y:d:d:d:d:Zd:Zd;5p;K;K;Y:d:Y:Y:ʜ;~;~ʜ:d:Y:Zd:d:d:Zd:Zd:p:Y:d;~ʜ;:ʜ:Y9Y:ʜ;~ <;:d:ʜ;K;~ ;~ʜ:Y:Zd:ʜ;Y:d:Y:Y:Y:p:ʜ;Y:d:Zd;5p;~ ;~ ;~ʜ:Y:Y:d;<~<~;1{:d:Y:d:d:d:ʜ;~;d;d;Zd:Zd:Y:d;Zd;5p:ʜ:d:d:d:d:p:Y:ʜ;;~:ʜ:Y:Y:Y:d;5p;5p:d:Y:Y:d:d:Y:Y:d:d:Zd:d;;K;5p:Zd:Y;5p<<%;d:d:Y;Y;~ <~;:d:Y;Y;Zd:d:Y:Y:Y:Zd:d:d:Zd:Y:d;;p:ʜ:Y:Zd;Y;d;d;Zd:Zd:Y:Y:Y:p:ʜ;~;~:ʜ:Y:Zd:d:d:Zd:Zd:Y:d:d:Y:Y:d:d:Zd9Y:Zd:d:d:Y:Y:Y:Y:Zd:Y:Y;Y;Zd:d:Y:d;1{;d;Zd:Zd:d;~;K;#d:Y:Y:d:d:p:Y:Y:Y:d:d:Zd:Zd:d:ʜ:p:Y:d:d:Zd9Y:Y9Y:Y:Zd:Y:Y:d:d:Zd9Y:p:d:Zd9Y:Y:Y:Zd:Y:Y:Y:d:Y:Y:Y:Y:Zd:Zd:d:Zd:d;Zd;d;1{:d:Y:Zd:Y:d;d<<%;K:Y:Y:d:d:Y:d;K<~<%;d:d:Y:d:d:Y:Y:ʜ;p;d;:d:Y:Zd:Y:Y:d;Y:d:Y9Y:Y:Y:Y:Y:d;~;K;Zd:Y:d;d<<<;5p:Y:Y:Zd:Y:Y;H1{;<~;K:d:Y:d:ʜ:d:Y:Y:Y:d;~ʜ;l:d:d;d<:2<:d:d<~<8r<;Zd9Y:Y:Y:Y;K;~:Y;1{<$T=QK=f='4= =8D=@;&=.<;d:Y:Y:ʜ<%<=5p=B;d:d:Zd;d=:2=)=d==~<>;d<><ܪ=:2=[==d=Y=`y<=< :d:d<(X':Y;Zd=7!=!>>== =@<<=.=l=="=Z=O={X=a7<ܪ<(X'<>=+=wx=f=sj=@;d<(X'==H=LZ>/>A#>([=K=z==+="4=Sb== u=l>Ǡ====k}=}l=엑>.>?>$== =;c=0N|=QK=)=;&=>===}l=B<===+K=;&==|;<є:p;Zd=*=I>|>=))==Rn1= a==u)=QK=޻=!=;&=I=3= a=4?= =f=8r=5p<ӑb="4=~=[="4=8D=7!=u);5p:Y:Y;~<>=B=V=|;=em=u);;K=`y=йh>>3>==h =8r=Y=h = =I> 12>> l=د=:==<$T=,=y==O== w>Mn>i>Luq>`={X=a7=QK=f=>>&Z>1y>#9>==|;=8D=z==D=> y=l==B;~ʜ<=%> >K>hg>K u>=E=|;=a7=f=>>"4>/+K> >`y=D=rG====>`y>r>==Rn1;p;d=QK=O>C>0H>z=F+=M"=V=7!=QK==>b> 12>b=|= =){X=B=@;&= G=O==AU=d=޻:ʜ:Zd<:2;p:p;5p;p;~ ;<~<(X'<1q;~ :d9Y9Y:Y9Y:Zd:d:Zd:Y:Zd:Y:Y;Zd<;~ʜ;5p;1{;~ ;d;Y:Y:d==< ;K)>* >'=|=n==~=bZ={X=I> >>`== =bZ=HM=C=d=AU==I=0!=7!;~<:2=3>E>@̾>^>EM> =v=`y=Mn=f=;&> f>.P>:Bf>/t>u)=˛ =)=h = =O>)>">J==<>E>@>\>F3>%=9=}l=^I=y=> >.>;c>1y>%=,=M"=rG=޻=ܪ>">,>d==Q0=l<>;K=:2=>>*>k}===[=7!=[=d=i[> >>%=鿗={X=bZ=8D=kt`=p=e>>:=є=C;5p:Y;:d<~<=8r=޻=Q<%<(X':p:d;<<8r;:Y:ʜ<%=Mn=u=QK<엑;~ :d;~ʜ Tc>%7a>pS=ӑb=3=$=Q=Rn1=9=_>%>n>=l=2==Rn1=}l=;&> |i>z>=йh=rG<%;l=3=>`>&Z>=I===="4=V==~ >'>$>>== =h ==T>u)>!>==}l<~:db=Q0=!==){X >==d=bZ=7!=Rn1=X'=->===7!:d;~ ===q=M"=kt`=@;K;Y:Y:d:d:Y:d;~ <5p<(X';d:d:d;;ʜ:ʜ:Y:Y:Zd;#d<2;Y:ʜ<^I=Q=[===d= =Rn1;<<ܪ<^W<(X':d:Y;K<ܪ=[="4='4=[<;d:Zd:Y:d<%<~<є<;d;Y:Y9Y:Zd:d:d:ʜ;~;<(X'< <$T=7!=em=h =7!;~:Zd:d;<<ܪ= f= a=[= f=QK===bZ=5p<$T<%;Y:Y:d:d:Y:Zd;Zd;~ ;;K;5p:d:Y;#d;p;:ʜ9Y:ʜ<~;;p:ʜ:p:Y:Y:Zd:p:d:ʜ;d<1q<5p;~ ;Zd:d:Y9Y:Y:Zd:Zd:d:d;Y;;l:d:Zd:Y9Y:Y:Y:Y9Y:Y:d:d:d:p:Y:Y:ʜ;~ʜ;;1{;~ʜ:d:Y:Y:Y:Zd:Y:d:d:Y:d;l;~ <>;~ :d:d;;d;l:Zd:p:d:Zd:d:d:d9Y:Zd;5p;K;~:d:Zd;~ʜ;;~ ;~ʜ:Zd9Y:ʜ;K;~ ;~:Y:Zd;Y;l:d:Y:Y:Zd:Y:Y:Zd:Zd:Y:Y:d:d:Zd:Y:d:d:Y:Y:Zd:Y:Y:Y:p:d:Y:Y:Zd:Y:Y:Y:Y9Y:d;Y:d:Y9Y:d;K;;~ʜ:Y:Y:Y:Y:Y:d;K;;Zd:Y9Y:Y:Y:ʜ:ʜ:p:Y:Y9Y:Y:Y:Y:Y:Y9Y9Y9Y:Y:d;5p:ʜ:Y:Y:Y:Y:Zd;d<5p<(X';~:Y:Zd:Y:Y;d:Zd:d;~ʜ<><<:d:d:ʜ:d:Y:d<8r=Q="4:p:Zd:ʜ<=2==޻=rG=;:d:d;K:Zd:Y<%=+=8r=Y=p#= f<>:ʜ:ʜ;:d;Zd<є=7!=QK=,;~:Y:Y;<%<2<:Zd:Y:Y:Zd:p:ʜ;Y:d:Y:p<:2;K;5p;Y:d:d;d<~;d;Zd;5p;~ <%;~ ;Zd:d:ʜ;5p:ʜ:Y:Y;;;p:d:d;Zd;K;d;d;d;:d:Zd:d;Zd:ʜ:Zd:Y:d:ʜ:ʜ:ʜ:d:Zd:Y:Y:p:Zd9Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Zd:Y:Y:d;l;~:ʜ:Zd:Y:Zd:Y:d;~ :ʜ:Y;Y;K;:d:Y:ʜ;;Zd:d9Y:Y:Zd:d:Y:Y:d:d:p9Y:Zd:d:ʜ:p:Y:Y:Y:d:ʜ:ʜ:Y:Y:d:ʜ:d:Y:d;;;~ ;Zd:d:d;;~ ;1{:d9Y:p;5p;d;~ ;Y:Y:Y;K<$T=>=HM<<~:d:d:d:d:ʜ<%<<;~ ;~ ;~ <:2<Y;:Zd;;K<5p<$T=V==={X==,;K;~ ;<%<8r<==5p=7!<=<>;Zd;K;d;:d:d<%:Y:d<><<<>:d:Y<~<ܪ=Q<$T:d:d<==:2=h =l=8D<ܪ;d:Y:d<=(X'=Sb=Jw=~<~;5p<=A^W=p#=V=[<>:d:Zd;Y;~:Y:d<<:2<%;5p:Y:Y:Y:d;d< ;d:d:Y:d;~ʜ;~:ʜ:Y:d;Zd;l:ʜ:d;5p;~ ;ʜ;Y:Y:d;1{<>;~:ʜ;ʜ<5p<5p<%<%< <$T;~ʜ:Y:p;Y;~ʜ;l;5p:ʜ:d:d:d:Zd9Y:Y:d:Zd:Y:Y:Y:Y:Y:d;Zd;l:d:Y;5p<%:d:ʜ:d:Y;p<==/+K=7!=Y<;K:Zd:d<>=[=:2=8D<7;1{:Y;d;Zd:Y:Y:ʜ;Zd:Y:ʜ;d<~;K:d:Zd:d:d:Zd:Y:Zd:Zd:Zd:d;l;~ʜ:d:Y:Y:d;;K;5p:Y:Zd:ʜ;5p:ʜ:d;Y;l;#d:d:Zd;Y;d<~;K:d:d;~ʜ;;~ʜ;Zd;p;K;~:d:Y:d;~;K;~:Zd:Y:ʜ;#d;Y;Y;~;;5p:p:Y:Y:d:Y:Y:Zd:Zd:p:d:d:Zd:Y:Y:Zd:Zd:Y:Y:Y:Y:Zd:Zd:Zd:d:ʜ;d;:ʜ:d:Y9Y:Zd:d:d:d:d:ʜ;~;~ ;K:d:Y9Y:p:d:d:d:d:d:d:ʜ:d:Y:Zd:Zd:Y9Y:Y:Y:Y:d:ʜ:d:Zd:Y9Y:d;~ʜ;d;K;H1{:p:Y;Y;Zd:p:Zd:ʜ:d:Zd:Y:ʜ;K<%<><;Zd:Zd:ʜ<~<;Zd:ʜ;p;Y:d:Y:d;K<~<%<~;:d:Y:d<~<Y;#d:d;~ʜ;Zd:d:Zd:d;5p;l;~ʜ;5p:d:Y:d:ʜ:Y:Y:Y:Zd:Y:Zd:Zd:Y:d;Y:d:Y:d;d<%;~ :d;Y<%;Zd:ʜ<<><:ʜ:p;Zd;1{;Zd:Y:Y:d:d:Zd:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:p:d:Y:Y:Y:Zd:Zd:Zd:Y:Y:Zd:Y:Y:Y:Zd:Y9Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:Y:ʜ;~;Y:Zd:Y;~;d;:d:Y;Y;;Zd:p:Zd:d:d:Y:Y:Y:Y:Y:Zd:Y:Y:Y:Y:Y:Y:Y:Y:Y:Zd:d:d:Y:Y:d:d:Zd:Y:d:d:Y:Y:Y:Zd:Zd9Y:Y:Y:p:Y9Y:Zd:Y:Y:Y:Y:Y:p:d:d:Y:Y:Y:d;Y:ʜ:d:Y:d:d:Zd:Y:Y9Y:Y:Y:p:Y:Y:d:d:Zd:Y:Y:Y:Zd:Y:Y:Zd:d:d:Zd9Y:d:ʜ:d:Y:Zd:d:d:Zd:Y:Y:Y9Y:Y:Zd9Y:Zd:Y:Y:Y:Y:Y:Y:Y:Zd:Zd9Y:Y:Y:Y:Y9Y:Y9Y:Y:Y:Zd:Y:Y:Zd:Y:Y:Y:Y:Y:Y:Zd:Zd:p:Zd9Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:Zd:Y:Zd:Y:Y:Y:Zd:Y:Y:Y:d:ʜ:d:Y:ʜ;#d:d9Y:p:d:Zd9Y:Y:Y:Y:Zd:Y:Y:Y:p:d:Y:Zd:ʜ;5p:d:Y:Zd;Y;~ʜ:ʜ:Y:Y:d:d:p9Y9Y:Y:Zd:Y:Zd:d:Zd:Zd:Zd:Y9Y:Y:Y:Y:d:d:Y:Y:d:d:d:Zd:p:Y:Y:Y:Y:Zd:Y:Y:Zd:Zd:Y9Y:Y:Y:Y:Y:Y:Y:Y:Zd:d:p:d:d:d:Zd:d:Zd9Y:Y:Y:Y:Y:Y:Y:Y:Y:Zd9Y:Y:Y:Y:Y:d:ʜ:d:Y:Y:Y:Y:Y;Zd;d;:d:Y:Y:Zd;~;;K:d:Y:ʜ;~;#d:Zd:Y:d:Zd:Y9Y9Y:p:d:Zd:Y:d:d:Zd:Y:Y:Y:Y:d:d:Y:Zd:ʜ;Y:d:Y:Y:d:ʜ:d:Y:Zd:Zd:Y:Y:Y:Y:d;5p:d:Y:Zd;~ʜ;d;:d:Zd;5p;~ ;d:ʜ:Y:Y:Y:Zd:p;#d;~ʜ:ʜ:Y:Y9Y:ʜ;Y;Zd:Y:Y:d:d:d:Zd:Y:p;K<%;:ʜ:Y:Zd:Zd:Y:Y:d;d<><:ʜ:Y:Y:Y:Y:Y:Y:Zd;Zd;d;~:d:Y:Zd:Zd:Y:Zd:d:p:Y:Zd:Y9Y9Y:Y:Zd:Y:Zd:d:d:d:Y:d;#d:d:Y:ʜ;p;Y:ʜ:Y:Y:Y:d;<%;1{:Y:Zd;Zd;d;1{:d9Y:Zd:Zd:d;<>;K:Zd:Y:d;5p:d:Y:Y;#d;~:d9Y:Y:Y:Y:Y:Zd:d:Zd:d;Zd;;Zd:d:ʜ;K;;K:d:Y9Y:Y:Y:d;;d;~:d:Y:Y:Y:d:ʜ:d:Y:Y:d:d:p:d;K<;1{:d:Y:ʜ<%:d:Y;Zd;1{:p:d;;K:d:Y;Y;;#d:Y:ʜ;<:2<(X';1{:Zd:ʜ<~<%;l:p;;;K:d:d;~ʜ;~ ;d:d:d;d;~ :ʜ:Zd;Y;1{;~ʜ:p9Y:Zd:Y:Y:Y:Y:Y:d:Y:Y:Zd:d:d:Y:d;5p:ʜ:Zd:d:ʜ:d:Y:Y:Y:Y9Y:Y:Y:Y:Y:Zd:Zd:Zd:d:d:Y:Y:Y:Zd:Zd:Y:Y:p:p:Y:Y:d;5p;5p:d:Y:Y:Zd:d:d:p:Y:Y:Y:Y:Y:d:ʜ:ʜ:p:Y:Y:p:d:Y:Y:Y:Zd:Y:Y:Y:Y:Y:Y:p:d:Zd:Y:Y:Zd:Y9Y:Y:Y:Zd:Y:Zd:Y:Y:Y:d:Y:Y:Zd:Zd:Y9Y:Y:Y:Y:d:d:Zd:d;Y:ʜ:d:Zd:p9Y:Y:Y:Y:d;Y:ʜ:Y:d:ʜ:Zd:Zd:d:d:Zd:Y:Zd:Y:Zd:d:Y:Y:d:Zd:Y:Zd:Y:Y:d;Zd:ʜ:Y:Zd;Zd;K;~ʜ:p:Y:ʜ;~ʜ:ʜ:Y:Y:d:Zd:Y:Y:Y:Y9Y:Y:Zd:Y:Y:d;5p:d:Y:Zd;5p;1{;Zd:Zd:Y:ʜ;Zd:ʜ:Y:Y:Y:Y:Y:d:Zd:p:d:d:Zd:d:Zd:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y:Zd:d:p:Y:Zd:d:p:Y:Y:Zd:Y:Y9Y:Y:d:p:Y:Y:d:ʜ:d:Zd:Y:d;Y:ʜ:Zd:Y:d:d:Y:Y:Y:Y:Y:Y:Y:Y:p:d:d:Y:Zd:d;Y:ʜ:Y:Zd:d;Y:ʜ:Y:Y:d:d:d:Y:Y:Y:Y:Zd:Y:Zd:d:p:Y:Y:Y:Y:Y:Y:Y:Zd:Y:Y:d:d:d:Y:Y:d:d:d:Y:Y:Zd:Zd:Zd:d:Zd:d;Y:d:Zd:d:Zd:Y:Y:Y:Y9Y:Y9Y:Zd:d:Zd:Y:Zd:Y9Y:Y:Y:Y:Y:Y:Y:Y:Y:d:d:Y:d:d:d:Y:Zd:d:Y9Y9Y:Y:Y:Y:Zd:Zd:Y:d:ʜ:ʜ:Y:Zd;5p;K;~ʜ:d:d;~;d;~:d:d;5p;~:ʜ:Y:Y:d:d:Zd:Y:Y:Y:Y9Y:Zd:Zd:Y:Y:d;5p:ʜ:Y:d;p;;K:d:Y:ʜ;~ < ;d:d:d;K;~ ;~:p:Zd:ʜ:ʜ:d:Y:Y:Y9Y:d:d:d:Y:d;Zd;K;Zd:p9Y:d;K;~ ;:d:d;;K;5p:Zd:Zd:d:ʜ:d:Y:Y9Y:Y:d:d:p:Zd:ʜ;Y:d:Y:Zd:d:ʜ:d:Y:Y:Zd:Zd:Y:Y:Y:Zd:Y:Y:Y:Y:d;#d:d:Y:Y:Y:Zd;Y;;5p:Zd:Y:d;5p:ʜ:Y:Y:Zd:Y9Y:Y:Zd:Y:Y:Y:Y:Y:Zd:Y:d;5p:d:Y:d;K<~;~ :d:ʜ<~<5p<Y;5p9Y:Y9Y:d;d< ;~ :d:Y:Y:Y:d;5p:ʜ:Y:Y:Y:Y:Y:Y:Y:Zd:d:Zd:Y:Zd:Zd:Y:Y:Y:Y:Y:Y:Zd:d:Y9Y:d:d:Zd:Y:d;5p:d:Y:Y:d:d:Zd:Zd:d:Zd:Y:ʜ;5p:d:Y:Y:Zd:Y:Y;5p;K;l:Zd:Zd:d:Zd:d<<5p<%;5p9Y:Y:Y;5p<><:ʜ9Y:Zd:d:ʜ:ʜ:d:Y:d;;;K:d:Zd:d;Zd;~:ʜ:Zd:d:ʜ:d:Y:d;5p;Zd:ʜ:Zd:Y:d:d:d:Y:Y:Y:Y:Y:Y:Zd:d:Y:Y9Y:Zd:Zd:Y9Y:Y:Zd:Y:Y:Y:d:Zd9Y:Y:Y:Zd:d;Zd;Y:p:d:d:d:d:Y:Y:Y:Y:ʜ;p;K;~ʜ:d:Y:ʜ;~;p;Zd:d:Y;5p;K;:ʜ:Zd:Y:d;;d;Y:d:p:ʜ:d:Zd:Y;Y;~ʜ:ʜ:Zd:Zd:d:Zd:d:d:Zd:Y:p:Y:Zd;Y;~:d:Y:Y:Y:d;5p:d:Zd:Zd:ʜ;~ʜ:ʜ:Y:Y:d:Zd:Y:d;5p:d:Y:Zd:d:d:Y:Zd:ʜ:d:Zd:d:Zd:Y:Y:Y:Y:d;5p:ʜ:Y:Y:Y:Y:Zd:Zd:Zd:Y:Y:d;5p:ʜ:Y:Y:Zd:d:ʜ:ʜ:d:Y:d:d:d:Zd:d;Zd;~;Y:Zd:Y9Y:d;5p;l:ʜ:Zd:Y:d:d:d:Y:Y:Y:Y9Y:Zd:p:Y:Y:d:ʜ:d:Y9Y:Y:Y:d:d:Y:Y:Y:Y:Zd:Y:Y:Y:Y:Y:Y:Y:Y:Zd:Y:Y:d:d:d:Zd:Y:d:ʜ:d:d:Y:Y:Y:Zd:Y:Y;Y;p;p;5p:p:Y:ʜ;Y;1{;~ʜ:d:Y:Zd;l;d;1{:ʜ:Y:Y:d;;d;:d9Y:d;Y:ʜ:Zd:p;#d;~;Y:Y:Y9Y:Zd:d:Zd:Y:Y:Y:d:Zd:Y:Y:Y:Zd:d:Zd:Y:Zd:Y:Y:Y9Y9Y9Y9Y9Y9Y:Y:Zd:p:d:Zd:Zd:d:ʜ:d:Y:Y:d:d:d:Y:Zd:Y:Zd:Y:Y:Zd:d:Zd:Zd:p:Y:Y:Y:Y:Y:Y:Zd:p:p:Zd:Y:d:d:d:d:d:ʜ;Y:d:Zd:Y:d;5p:ʜ:p:Y:ʜ;Zd:ʜ:Y:Zd:d:p:Y:d:ʜ:d:Y:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y9Y:Y:Zd:Y:Y:Y:Y:Zd:Y:Y:Y9Y:Y:Y:Y:d:d:Zd:Y:ʜ:ʜ:p:Zd:p:Y:Y:Y:Y:Y:p;~;1{:ʜ:Zd:d:Y:Y;1{<%<ӑb<~:d;~ʜ;~:d:Zd9Y:Y:d:ʜ:d:d<=){X=/+K:ʜ:Zd;Zd<(X'<%;:d:Zd:Y:p;1{<><:2;~ :p;K=8r=bZ=p#="4;:ʜ;d< ;;Zd:d:d:d:Zd:Y:d;1{<%<>;1{:Zd:Y<~;K:Zd:Y:d;K;;1{:d:Zd;~ < <+K<<<;:d:d;<1q;:d:Y:ʜ;K<%<5p<%;~:Zd:Zd:d:Zd:Y:Zd:Y:d:d:d:Zd9Y:Y9Y:Y:Y:Y:Y:p:d:d:Y:Y:d:ʜ:d:Zd:Zd:d:ʜ:d:Zd:Y:Y:Y9Y:d:d:d:d:Y:d<%< <%;Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Y:Y:Y:Y:Zd:Zd:Y:Y:Y:Y:d:d:d:Zd:Y:Zd:Zd:Zd:Y:Y:Y:Y:d;~ʜ;l:d:Zd:Y:Zd:Zd:Zd:Y:d;;;d:ʜ:Zd:d;K<~;d:d9Y:d;l;1{;5p:Zd:Y:d:d:Zd9Y:Zd:Y:Y;Zd;d;~ʜ:Zd:d;~ <5p<~:d:Zd;;ʜ;K:d:Zd:d:Y:Y:Y:Y:Y:Y:Zd:Y:d;Y;Y:d:Y:d;K< <;Zd:Zd:Y;~ʜ<5p:p;Y<%<<%<<ä<^W<:2:ʜ:d;K<;~ <><^W=%=<:ʜ:Y:d;<;~ ;5p;5p<5p<ܪ<ʜ<;1{;~ʜ<:2<;K:Y:Y:d:ʜ:d:Y:Y:Zd:d;d;Zd:Zd:Zd;<= f=HM<2;~:Y:ʜ;d;;~ʜ:d:Y:d;1{;d;Zd:ʜ;d< ;;~ <%<8r<%<ӑb:d:ʜ=<=<%;1{;~ʜ<:2<%<=<2;d:ʜ<<><%<<><1q;~ <^I<є<7<;~:Zd;l;K;~ʜ:ʜ:ʜ;5p;5p:d:Y:d;Y<>:d:Y:Y:Y:Y:Zd:p:d:d;5p;l:ʜ:d:d;;~ ;p:d:Y:d;Y;5p:ʜ:d:Zd:Y:Y:d:ʜ:d:Y:Y:d;Y;K;Zd:d:Y:Y9Y:d;~;p;5p:p:Zd:d:ʜ:d:Y:Zd:p:d:d:p:Y:Y9Y:d;5p;~ <><:2;d:d:Zd;K<5p<;Y:Y:Zd:d:d:p:Y:Y:d;~ :d:ʜ<5=u)=5p=,=[;d;d<5p:d;Zd<=Y=.=k};~ʜ;K<(X';l:Y:d<%;~ <(X'<<<<:2<1q<%;~:Zd:Y:d;Y:d:Y:Y;d:Y:ʜ;~ ;l:Y;d<ä==*=B:ʜ:Y:d:d:Y9Y;~ʜ;d:p;Zd:d;K<%=Y<ܪ;K<:Y:d<ä=B===n=HM<Y:Y:Y<:2= a=Jw=5p l>=t`=<%;~<=bZ=={X===+<<^I<:2<><=%=V=n=K <ܪ:ʜ:Zd==?>Ǡ>"=B=y:d<>=bZ==AU==8D;:ʜ:d;d= f=rG=/==@;1{:ʜ<=8D=|;=l=n="4b>=,=em;~ :d<^I=+=|;=޻=޻={a =(X'&Z>4s>)={X<2<#d=B=u=====Jw< &Z>8i>=E<7 |i==<1q;~:d:Y:Y:Zd:d:d:Zd:Zd;Zd<5p=+=[=@=/=B< :d:Zd;~J>!>`y=k}J>">=:<є;=E="4<%< ;d;Zd:d:d:d:ʜ;~;d;K;#d:Zd:p;5p;~;5p:d:d:Zd:Y:Y:p:d;Zd;Zd:d:Y9Y:Y:Zd:Y:Y:Y:Y:ʜ<~:d:Y:Y:Zd:d;d< <==u)<=<2="4=E=V=8D=8r;5p:Y:Y:ʜ;~ ;~ :ʜ;1{=Q=f=I=?=f<엑:d:Zd;~ =2==O=AU=N|=:2;~ :Zd;Zd<8r<=="4='4<=<8r;;K;~ <;d;~;p;~ <5p<:d:ʜ<5p<ä<ܪ;1{:d:Y;~;Zd:Y:Zd;Zd;d;;5p;K<1q<~;1{:d:Y:Y:d;K==:2=8D<ܪ;Y:Y:ʜ;1{;1{:ʜ:Y:Y:d;~ʜ;;d:d:ʜ<=7!=q$T=q$T=(X'<~:Y:d;<~<%;:d:Y:Y:Zd:d;p<1q:ʜ:Y:Y:Y:Y:d<1q:d:d<~< ;~ :d:Y:d:d:p:Y:Y9Y:ʜ;1{;~:Zd:Y:Y:Y:d;K<><~:d:Y:Y:Y:Y:Y:d:d:d:Y:d;~;~ ;Y:Y:Y:Y:Y:Y:Y:d:d:d:Y:Zd:d:Zd:Y:Zd:Y:Y:Zd:Zd:Y:Y:Y:Y:Zd:d:d:d:p:Zd:Y:Y:Y:Y:Zd:Y:d:d:d:Zd:Zd:Zd:Zd9Y:Y:Y:Zd:Zd:Y:Y:Y:Y9Y:Zd:p:Zd:Y:Y;Y;K;p:ʜ:Y:Y;~;Y:Y:Y:d:d:d;Zd<%<>< :d9Y:Zd:d:d;d;~:ʜ;5p;;~:ʜ:d:Zd:Y:Y:p:d:Y9Y:Zd;Zd< <5p< ;d;d<%<5p<%;1{:d:Y:Y:d;~;K;1{;K<%<#d<(X'<%;K:d:p:d;5p<><%=3==="4<;Zd:Zd:Zd:p:ʜ;d<:2:ʜ:Zd:d:ʜ;<=[=<$T<^I;:ʜ;Y;Y;Y;<%<Y;d;#d:ʜ;Y;ʜ<>:ʜ:Y:Y:d;~ ;d;5p;5p;Y< <<ܪ;~ ;~ʜ;Zd;Zd;<(X'<^I<%;Zd:d:Y:Y:d;d<%;:Zd;5p;K;;5p;l;K;d;d<;;~:d:Zd:Y:d:Y:Y:d:d:Zd:Y:Zd:d:p:Y:Y:Y;d<;K:Zd:Y:d;l:ʜ:Y:Zd<~<~;Y:Y:d;Y;~ʜ:d:Zd:d:Y:Y:Y:d<%<7= a=~<=+=|;=)= =X%=Q<2<%<=޻=\=p#=;c<9Y;l<%;Zd:ʜ<%<:Y:Zd< <^I:Zd:Y:ʜ<:2<엑="4=2=2=$=~=HM===bZ=YAU="4b=$T==k}=[=u)=$=3=O> >==@b>=ܙ=~;;p;Zd;K<~<;5p:Y:Y:d;~;~ ;K:d:Zd<Y<2=8r="4=+=){X='4=7!===+=[=E=`y=D=(X'=[<;E>|=c,=\<>:Y:ʜ=7!=d=->w> l==V<~:Zd;p<=8D=y==|==== G=D=O=T=4=D<%:Zd;;d:d:d;5p;~;5p:ʜ:d:Y:Y:Y:Zd:d:Zd:d;5p;Y;Zd:d:Y;5p;d<><;l:Y:d:Zd9Y:Y:p:p:Zd:Y:Zd;Y<1q<$T=*=+=[<%u)> f=I=E=="4="4=3=ϖ7> >r==pS=D==s==~=7!="4=E=)=>>,>%7a> =i[={X=q$T=p#=E>o>/>7!>r=<=:Y:Y<:2=<є==ǟ=p={a = a=[=8D=y=̾>|>>==,=X'==H===\5>"4>(>=d<<;5p:dE==K={X=em=+=5p=bZ=d=ä=O=l=em<:2;d=0N|=a=O=-=V=K=O=ܪ=A>==йh=SR=rG=8D=5p=[=>=ä=йh=!=l=q<$T=Y=h =a= =.=+;~ :d<=Mn= ==pS==H=YAU=Mn=Rn1=V=P'=8D="4==Q=+=~<=z==є=鿗=~ =0!=5p;K:Y:d<%;~==E=/+K;d:Zd;Zd<ܪ=A^W=3=f===h =`y=rG=p#=8D<%=>=+=HM<2;~ :Y:Zd;d >o===u)=8D=/+K=l=Y>>>=O=sj<%:d>%>!>.=-=!==}l=v=\5>!>%7a>E= G< 9Y:Zd>`>`y==l= =l=v=>J>z=))=<1q;~ʜ:d:Y:Y9Y:Zd;~<%:Y;~ =8D===-==O==O===7=̾= G=`y=7!=+=U==є=|=v=V<><><:2<>;~ʜ:Y:d;Y:d:Y:d;1{;d;5p:d:Y:Y:Zd:d:Zd:d;~ʜ;5p:Zd:Y9Y:Y:ʜ;~ʜ:ʜ:Y;Y<<%<%;1{:Y:Y:d:d:ʜ;K:p;Y<%<~:d:Y;5p<>=V=HM={X=d=)====?=^=5=;c:d;~ʜ=A^W=pS=SR==[=@;&=,=7!=8D=~;Zd:Y:Y:d<~<8r<2<є<%<=<;<ܪ<<^I<<=="4=<5p:Zd:Zd:d:p:d;Y;Zd;5p;Y;l;K;d;Y;Zd;d< <5p;~ :d:Y:Zd:Zd:Y:Y:Y:Y:Y:Y:Zd;#d<~;d:ʜ9Y:d;Zd;1{;5p:Zd:d<%;~ʜ:ʜ<~<%=.=7!= f<:ʜ:Y<%=u)=em==H=rG=U=:2=7!=<є=;c=@;5p:Y:Y<=/+K=E=7!;d:d9Y:d:ʜ:d:Y:Y;Y;;d<%<5p<5p;~ :ʜ:p;5p<~<1q;d:p:Y:Zd:Y:Y:d:d:d:d:d:d:Y:Zd:d;;d;5p:Y9Y:Zd:p:Y:Y:ʜ;~;5p:Zd:Y:d;~ :ʜ:Y:Y:Y:Y:d;Y;~ <:2<<<%:d:d;;d;Y:Y:Y:Y:Y:d:Y:Y;~ ="4=}l=== =Mn<:Y:Y;K:p:Y<=7!=h =A^W<+K:Zd<%=8r===QK=2==̾==7!<,:Zd|>`=y=kt`;K;~ ="4==;&=ܙ= u=={a =[<><%6>Mn>0= u=<={a =̾=>Ǡ==D=k}===<ܪ<==QK= =a= ==<(X':Zd=A^W=y6>;/>[>=c,=y6=8D<$T== =>=$T==)===޻= y>* >r=?=;Zd9Y;='4= =4===<~:p:Y:Y>> 12=O=m;~ :Y<(X'=H1{={X=>>=엑=2=<$T;d:d:d=@==>>o=1{=l<>:ʜ<^W=|;==> y> /=l=ǟ=޻=){X?>b=B==3="4;~ ;Zd:d:Y<~=8r=B=;c:ʜ<=^>r>MO>b>=c,=="4= 5=5=˛ >>> =o=D={a =$A>x>?>>.P=a=l=>8r>&>3&v>* >="=k}=V=8D=8D=kt`==Y="==%=Q:Y<1{=>C>>~>%>=c,=p==D>8r>$1>/>"> |i= u==h =Jw=H1{=rG=4=|=Դ==pS=~:Zd;p=>Y>d<>>i->pS= =:2=/=O>`y> f>K=̾>=d=q$T=D=2='4=8D=[={X=I=d=bZ<<:2==))>>b=d=B:d:d;p<8r===H1{;K:ʜ<7==I=O=AU= =a==<;Y:Y;Y=H1{=̾> 12>A >޻=s=f<5:ʜ l> 12=B=ä= =@o>J>%=_=f<<=B== >>>>=йh=== l>Ǡ=LZ=;&=M"=8D<;1{:Zd;5p=8r=}l==)=V<;K;d<^W=D=pS=h=T=ǟ=!==`y=;K:d:Y:Zd:d:ʜ;5p;Zd:ʜ:d:Y:d;5p;Y:ʜ:d:Zd:Y;~<%;~ :d9Y;Zd`>=V==H=%===˛ =O== =5p=J>0H>oW>>[>>=h =8D==ܪ>`>>P>==y=8D=Y="4=Sb===6P=!=>e{>4>%@>>EM==y=;&> >.>:>3&v>"=鿗={X=q$T=QK=bZ= ==V==AU={X=5p:ʜ:d=8D=G>hg>>?>8>W=O=pS=^W> 12>, >8D>-v>r=_=X'==h =p#=)=є=g==AU={X=3:d:Y0>`y>G>a>,=X'=h =Cw=i[>Ǡ>>o=_=q==bZ=C=B=p#=d==|==r>.>==5p<2="4= ={X=I={X= =[=/+K=Y<>;d;Y:d:d:ʜ:ʜ:d:Y:Y;#d;K;5p;Y;d<5p:Y:d >=1{={a 5>=Y=|;<< <$T=p#=?=y6>>>=t`=є= =2<;:Zd:Zd<===i[=˛ ==;c:d:Zd<;Zd:d:d;> f="=u$1>\>k+>A==H1{=Y={a =h=>8r>`y=߂==h = fPh>>?>>*U=d=m==V>)> >>=Y= =E=7!=Mn=3=!=AU==1{==Q:d;1{===m>Q4>>c>>7!==}l==߂>>>)=x== =\=H1{=`y= ==ܪ==D== 5:p:d>g>K>`>`==8D={a ===))=I==k}=kt`=;c=3=8D=kt`=a==є={X=h ===~<=/+K=Y< ;Y:Zd:d<%<<%;d;:d:Zd:Y:Y:Y:Y:Y:d<><ܪ="4=*=8r<;:ʜ:Y:Y;5p;~ ;d:ʜ:d<~=(X'=Jw=7!<5p<<$T=+=X%=rG=p#=V=.<ܪn>(>o=d<=f=:=p=!=d=bZJ>ID>Y!>5$ ="=8D<ܪ===޻=c=йh=O=h=f=/+K>ID>^}>9==D<===)== u=Y==[=5p<;==(X'=bZ==I=!=k=K <5p:dz>+> =0!=u)<%;;5p:ʜ;Y;5p:ʜ:Zd:Y:d;~<5p;~ :d:d;Zd<~;d;5p:d:d:d:d:d:Y:d;5p;~ʜ:ʜ:Zd:Y:Y;Zd="4=kt`=l=){X<(X':Y:d<><<1{;~ʜ9Y;d==/=h===%;Zd:Y:d;5p:Y:d:ʜ:ʜ;p;d:d:Y:d:d:Y:Y:Zd;5p<:2<~;~:d:Zd:Zd:d;~ʜ;d;;:Y:d<%<==7!=7!<ܪ;~9Y:d<~;:ʜ:ʜ;K<>;K;Y:ʜ;d<5p<<~:p:Y;Y<~<~;Zd:d:ʜ;Y:ʜ:d:Y:Zd;5p;d;;d;Zd:d:Y:d:d:d:Y:Y:p:p:Zd:Y9Y:Zd:Zd:Y:d;5p;Y:d9Y:d;l;K;K;Y:p:Y:d;Zd;1{;1{;5p:d:Y:Y:Y:Zd:d:ʜ;Y:d:d:Zd:Y:Y:Y:Y:Y:Zd:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:Y:ʜ;;Y:Y:Zd:d:Y9Y9Y:d;p;;:Zd:p;Zd;1{;5p:d:Y:d:ʜ;Y:d:p:Y:Y:d;Zd;p;5p:Zd:Y:ʜ;d<%;;K;d<%<5<>;Zd:d:d:Zd:d;<:Zd:Y:d:ʜ;K<:2<:2<>;d;~ʜ;~ʜ;<5p<:2;K9Y:d<<<ܪ<1{<;d;~ʜ;Y:d:Y:Y:d;Zd;:d:ʜ;~ <<%<%==8D=E=3<;<~;Y:d:Y:d;5p;d<%<;d:d:Zd:Y:Y:Zd9Y:Y:d:Zd:Y:Y:Y:Y9Y:d:ʜ:Y:d:ʜ:d:Y;d<<2=Q=~=q=D=f=[< <><<ܪ= f= f<%<<8r<%=@=+=<(X':Y:d<>:d;1{<%=$=7!=Sb=|;= =%=d=d=.=`y=[;;~ ;:Zd:d<2={a ==2=4=[ />pS=~=X'="4;K:ʜ >;c>A>q==K >C >GJ> =6P=Jwu> y>Ǡ==|=O=LZ>b=-==8D;~:ʜ<n>!>b=="4J>3&v>+0!> Y8=̾=B=/+K===->|>,>8D>=;&=;c;~ =`y===c==<є=5p=h =4>K>7>U>H>%7a=o===y=O>&>Z>h3>?==|;=V=D==h==4?="4=\=a=߂>!><є>6G<>pS=V=v=f=Y=,>>MO>ZR>5$ =s=bZ< ;Zd<=rG=M"==+<<є=HM=l=9=O==鿗= u==3=bZ=kt`= G="> y>)==k}<~ :d;5p<>;~ ;d<:2<ܪ=4?=\=sj={a =n=QK=){X=;~ ;#d:p:Zd:Zd:Y:Y:ʜ;d<5p`y> y> Y8=t`=h==H="4=~===pS=;&=O=D=q$TE>)>">.>$> =ӑb==K =8D==D=> =LZ=Ə<엑;~ =E=h=e> y> l>|>>%> >)2>>=J==D=8D={a =!=>=A=SR<=:Y;d=5p={X=ܪ==g==O=~ ===-===`y=HM==2=y==ܪ===f==5= =3={a =QK=(X'%>B>J/>&=˛ =U==c=c,===-==h H1{>:>j>[>=[<7= f==H=> f>* >=c,>>]>* > >o>%>#d> G==:<ܪ:Zd;<5=8r=> y>Y!>.>>g0j> y=<==+==->n>A#>[Ѓ>[Ѓ>A> >>)2>4s>)2>=Ə9>i->n>;c==[Y>.P>A>@̾>+>> 5>>n>pS=~ = pS>pS==/<ܪ;d|>=<====V=O=d=2;~ :Y:Y:d;d<ܪ=em=M"= =Sb;~ :d:Y:Y;Zd<(X'< >96>/>`=1{=f=*=5p=k}=#>!>,>`=!= a;Y:ʜ=={X> 12>">`==޻===ܪ>5$ >|;o>>w>f>* ==Ə= >E>K >4>)>n>J==c,>Zd>=c,>=q=k=D> l>X>>!>r>P>W>=ܪ=_>* >I>q>c,>>C=є96>T">8D====>>D6P>>>=l>_C>Mn>=~ =y6>([>{>>U>!>>:=!<:Y:Zdr=B={X=bZ=QK=y=> l>9h>V(>Mn>79>= =h==A>8D>n>{>MO>b=p#;~ ;Y<%;~ ;~:d:Y:Y:ʜ;K;d;Zd:ʜ;5p;~ >>>>n>4?>=c,>7!>=LZ= =m=f=HM=O> />E>==HM:Zd%>8i>7!>.>4s>F~>`>jd>]<>;>%=˛ ==M"=> Y8>9>Mn>8i==sj;Zd:Y==SR> Tc>9>KRA>GJ>:>:Bf>K u>aB>i->Y!>8i>`= u=a=HM=2> >A#>`>F~>~=8r;K:Y<ܪ=Cw==>(>9>5$ >$> >+x>96>:Bf>,>=ܪ={X==sj=k}=>>>:2>)$=ۇ=Jw:ʜ<>=U==LZ>>=m=s=׌=B=ܪ=Y==f=V=$<;="4=~=є=y=|=8r;~ʜ;5p<(X'<$T= a=O= =;~;Y%>[Ѓ>b>5$ ==V<8r<2=:2=%=|>`y> G> >)=-=ܪ>b>,\> =B=%<$T:Y:Y;~<:2<ܪ=HM>Y>j>><>wx>=y=8r=4?=M"=_>q>L,>q>{>>a7>96>&>4s>@̾>9>pS=;&=8D:ʜ:Zd<~<="4=>"_h>>$>,>>=޻=%=H1{=0!>8r>9>o&>v^>!>>Xf>?>GJ>T">F3>>= u=C;Zd:Zd;~ >[Ѓ>w>>`>=t<ܪ=/+K= G=o>* >X%>}^>a>jQ0>A^W>/>8D>=c,>1y> y==:ʜ:ʜ< <>===2>%>6>79> y==8r<~<є=QK==Q0>>,SR>1y>n> |i=l>>> Y8==є=p#< :d:d;Y<%== =+K={X=<=;~:p;~ʜ<8r=+=|;=a=?==!={X=k=a= G=3=H1{<1{;~:Zd:Y;ʜ<;d:d:Y9Y:Zd:d:d:Y:Y:Y;Y<5p<$T=2=8D=Y />EM>fV>[Ѓ>7> =є=`y==>>A>Ix>(=O=7!:ʜ<>=[=LZ>@̾>av>F|>.=^W==>>aB><>/>!>>b>>=I=i[>n>vG>7a>N|>P>5$ =v%>~9>!>>79=鿗==>.P>>̾>Z>^{>`>[>M>J>%>MO> >Դ>>>k-=ܪ<$T:Y<>=)>>>ycu>v^>{>>.P=i[=h=AU>"4>ycu>MG>L6>Ηm>t> >M>>pS>MO>BB>йh>^{>>fV=K0>Jw>2ݪ=엑= =y=v=o>.>j>3>Y8>uhK>Mn>==> >fV>>9>F>!=޻<<%=7!=Ə==v=h =Q=Y=\=޻==鿗>>>K=y6=є==d=є=9>>n=l=%<:Y:d<~;K:Y:d<~`y==i[={X=QK<==Y=bZ== =O==kt` y>> G>%> >2ݪ>F3>OMk>C>([>==[==N|=G>!>2ݪ>= u==:ʜ:Zd=HM=h>pS>A#>Xf>U>GJ>ID>b>{>>>qm >K u>n=V=q==AU>>>Xf>q$T>X>)=M"<>:ʜ===O>)2>Y!>pI>lN>[Ѓ>Y!>k->>F>tE>K u>>=-=!=!=>(>i->>q$T>%=>F|>_>Y!>EM>>]>G>X>Y!>F3>%>b==k= G=2> >EM>i->S.>=y<>:Y>$>n>r> Y8> >u)> =e= u=4=8r=V=8D=h =>K>> =D="4:d;5p==B==c=={X=%=)= ==X%=2=Q<$T>F~>H>t==){X<><= a==!=>t>+x>===\5> > 12=I==:Zd:d;~ o>^}>>M">`>K=em<є===ä>'>K u>{>>^>tE>F3>.>7!>@̾>8i>pS==B;Y;~ G>y >^2>->{>> ={a <엑=3==))>4I>q>l>>>>k->ID>K >T">EY>>=O=U;p;Zd<5p<ܪ= > l>V>3>>Sb=鿗=QK<=޻=l=׌>#9>\>^>v^>>}>WX>:Bf>:2>=c,>/> y==+;5p:d;1{<:2=){X=> >2E>0>=HM<ܪ;<=5p==I>HM>8>C>7>> l>Ǡ>==c=sj<<=@=0N|=Y<;Zd:ʜ<5p<>:Bf>Y!>R>4s> =J= =[=> 12>2ݪ>8i>'=<:Y:YA>e{>K u>=ǟ==^W> Tc>V>o>q>O>N>g0j>)$=))=ۇ>>em>K><>~>ҥ= ;d:Zd<є=@>$>~9>o>><=N= =>+>>>ճ]>ֲ(>db>pS>Xf>f>>F3>pS>>ܙ>>SH=2d=>x@D>,\>}8>4?=Z==AU>n>k->>6P>I>q>,\>W>n>>GW>V>6P>4>>QK=;d=<є=">1(>M>79=B== ==))>(>\>><>w>WC>&Z>|=>n>`y>>>we>޻=;5p<%=8D={X=|=p=rG=Y==]===ܪ=>b>=== ==^W>`y>t>=~= <^I;~ :ʜ:d:d:Zd:Y:d;Zd;d;;d;Y;Zd:d:Y:Y:p:d:d:ʜ;~;<%;d:d:Y:Y:Y:d:d9Y:d<5p<<엑==/+K=7!=8D=D=B=(X'<;5p:d;~ʜ>>>w>r>$\>79>;e>/>=߂=d=p#==H={X=V>>!> ==.:ʜ:Zd= a=>%>:>Mn>IT>?>@̾>U>iv>n>^}>9>Y=O=4= =>J>GJ>`>F3>=~<1q:d=@;&=O>$1>S.>j>f 9>U>R>b>rQ>vG>aB>=c,>===I=ܪ>n>[>{>d<>=@<5:d=.=2>>C >Y!>U>B>=`>D>OMk>Mn>:>==D===> Y8>=>`>ID> = >&>">pS> y> y>> 12===a==O=5p=n=>|>> ==7!:ʜ;Zd====Y= =p=^=d= G=y=h =5p= f<ܪ=u)=sj=pS=[="4;d:ʜ%>%=i[=|>)> l===,=B=ܪ=h={a <:d;~ʜ=$=>&*>Y!>WX>>=<=;ʜ$>Rn1>hg>Y!>1(>'>J>n>==X'=Y:Zd:Y;#d<>=V=V>=>v{>sj>6G<=]=<5p<=8D=0!> >F|>{>>7>\5>T">2ݪ>/>2ݪ>$>=E='4:d:Y;Y< =7!=Y>%>R>Pp>z={X=H>8D>f 9>{>>k->C[>$>>>t>u)=߂=<$T:d:p:ʜ l>==Mn<>:ʜ;Kb> >3&v>+0!>Y==I="=^W=a=8D<%:Y:dE>>> Y8=I=SR=m=Rn1=.=J=x=r=;&=QK;K<~=){X=!>>/>>= =4=y=d=йh>>R>we>y >_>8> ==I=<>([>R>WX>,SR= <=:Y:Y<^I=h =LZ>?Z>b>ID>===>E>;/>{>G>>V>hg>/>|=->>W>X>>f> l=V:d<(X'=Zd=2>9>Y>C> =D==?=N>.>e{>[> a>z>b>.>=>>Y!>5>>i-> Y8=V:d:ʜ<==d>>> y=c,==[=y==>>4I>=c,>;/>*>o== u=e>,>S.>Y!>,=;&<엑:Y;~ʜ<%;~ ;Y:d:d:d:p:Y:Zd:d:d:d:p:p:Y:Y:d;5p;5p:d:d;~ʜ;:d;d<=H1{=p#={a == =9={X={X= G=|;=HM<:2<~=2=߂="=߂=l> > >?=O==P'='4=8D=8r=D=~ == u=y<1{:d<==g>>%7a> >%>>)2>8>96>(> =O==|;=[=SR=鿗>>'Ə>%=^W=8D;d:Y<;=SR>>,>=c,>9h>,>+>79>A>@;&>.>=׌=Ə=5=y=?=A>(>* =m=l<>:Zd<%= G=j> a>4s>/> >>n>* >$>)=鿗=!=/=h =`y=%=">>,SR>==[;~ <1q=V==> y> =x=y6=y6=-=ܪ=c,==n=:2=~<2=(X'====AU= G=:d:d<=`y=k=q=v=a==y==em=5p<=<<7=~<<<>=m===q$T<ܪ;Y:Y;Zd<%={a =E=Y=c=a=8r====m=:ʜ;d=QK=c====8D;~ :Y:Zd;~<є=3=">)>&^>>b=,=D==6P==Jw<%:YY> =6P=QK<%:Y:d<~="4=> l>2ݪ>F|>=>A =\5==))=د=E=bZK>%>9>2ݪ>'==i[=,=2==7!<~:d<1{==Ə=9=`y l>==!=a=y={a =7!E> |i>=B==8r=bZ=y=є===X'=u):d;Zd<=~=йh>`y=엑==h =8D=em=a=O> l> >(>!>`=ܪ==q=p=>J>==p#;d:ʜ>J>J> f==?=Ə=>b>t>i=y6={a ;~ :Y<=q= =v==V<ܪ<ä=Y=bZ=)=0!== u=׌=D==pS= =a= u=B==!=0N|:ʜ:Y;d<^I<<<$T=2=^I=n=`y=3<%<~:d:Zd:d<><7=$="4=2== =y=y=:=I=є==d=p#=Y<<>==,=m===O=X'=m="4=N==g=B>>|==N|==9h=[==V=Ə=O==1{=/<=;Y;K=/+K=X'=ܪ=j==AU="==V=AU=2=M"=Rn1="4<^W=){X=p#=f=.;:Y=%=9=,=V==h= =bZ=;c=+<ܪ;~ :Y:ʜ<=8r<=<^I:d<5p=V=a=={X=y=D<=:ʜ:d;Y=Y=YAU=l=D<;:Y;1{=~=p#= =y=[=3= =M"==H1{<ܪ<1q:ʜ:Y;Y<є=4?=Jw=7!<%;d:Y:d;~:d:p:Y:Y;~ʜ<5p<(X';~:Y:d<7=QK=h =QK=%<<~;~ʜ:ʜ:p:Y;5p<~<~;5p:Y:Y<1{=A^W=`y=D=~<5p<;5p:Y:Y:d:d:Y:d;5p;5p:d:Y:d;Y;1{<%;;5p;5p;d;~ ;Y:Y:Y:ʜ:ʜ:Zd:Y:d:ʜ;5p;1{;~ <%<>;;~;d<<>;K:Zd:Zd:Zd:Y:Y:Y:Y:Y:d:ʜ;#d:ʜ;<~<~;Y:Y:Y:Y:d:d:ʜ:Y9Y:d;Y;:ʜ9Y:Y;1{< <<̾>:Zd:Y:d;Zd;Y:Y:Zd:ʜ;~ <<==/+K===7!=<%;p:d:Y:p:Zd:Y:Y:d;Zd;d<~<:d:d<== a=B<~:d:d<=='4<ܪ<%:d9Y:Y:Zd:d:Y:Y;Y<<~;Y:Y:Y:Y:d;1{:ʜ:d;p;d;Y:Y:d;5p 12>%7a> =0!== =u)=1qr>3&v>t==$<=p#=̾=>=o=c=f=.<7<є ==<~ <(X'=(X'= = =O== =8D<%<2 >E=̾=QK;Y:d<=8r=D="=ܪ==a=8D:d:Y:d=H1{=|>>"4>=鿗=f<(X':Zd y> /=l=Y= = f;:ʜ:Y:d=7!=c,> f>@>=y=~<^I;~<$T=f=1{>>>>> l=i[=k=8D > ==ä=޻=0N|<:2:d:Zd;5p:Y9Y:Y:Y:Zd:Y:Y:Y9Y:Y:d;5p:d:Y:Zd;~ʜ< <%;d;#d:d:Zd:Y:Y;d >Ph>k->G==Jw=7!=0!>>!>2ݪ>, >%=i[==H1{="4=~='4={a =4=={X=}l@̾>>>'>A=c=M"=>:>F|>WC>IT>,>`y=!==H=Rn1===h =d=|=AU=1{=d=){X:dF~>>s>>X=ܪ=d=I>!>EM>SH>EM>&*=B=?=8r=bZ=K =p#===ۇ=1{==$:d:d=l>pS>t>%>>}>1y=!={a =?>>n>+>>=H=є= =`y=:2=(X'=8D=8r=0!=D={X={a <2;=~>8r>)2>P==A^W<=C=^= u=ӑb=̾==bZ="4=<ӑb<<ܪ=7!=:2=޻<є<%;~ʜ:d:Y:Y<~<1{= 5=B<;d:d:Y9Y:Y:Y:Y;t>2ݪ>(>=a<:Zd<>=C==m>~> f==;&=8r=8r<;~ʜ:d<:2=%>>8D>K u>A^W>z=c,=%< =޻=f=>>.>/>==l=h <%<,;~ʜ:Y<%= >|>2L>F3>=c,>=2=){X<=Mn=p>>+0!>?>=>* >Ǡ==l=Q > >J=))=<=<2=QK=q=>n>5$ >2ݪ>C====B<1q:ʜ<~=V=N|=D=;&=%=){X<^IK>w> y===pS==<є=.>=c,>=q 12>>z>~=˛ =pS=K =@<==HM=`y=%=X'==\<>:Y:Zd=7!=>Y>q>{>>C==a=->*>R>f 9>]<>=>'=O=%=q$T=h =3==I==I=E=D;p:d={a >>pS>G`>+>Ҷ>%>=د>pS>M>{>6>>_˭>.P==&v=M"==0!=> 12>> Y8=ϖ7=[ G>E>ݩ>N>7><>/+K=鿗>>Luq>y >:>{>WX>([=o===޻==B> >'> |i=ϖ7=[n>jl>&>>I> =є=>)$>H>W>G>,>===~=|;=)=є=鿗=x=B=q=A^W;~ʜ:ʜ=:2>b>X>>hg>f=X'=a7=HM=">> >==X'==V=7!= a=5p==d===V<~ʜ:Y<= ===h <1{<;K;#d:p:Y:Y:Zd:Y:Y:Y:Y:d;p<~<;l:d:Y:Y:Y;~ <2=8r=B<<>;K:ʜ:p:Y:Y:Y:Y:Zd<~<=A^W=p#=n=9h<^I===H1{;K:Zd=A^W=k}=h==+K=[=Y<%:d:Zd<~= =o>(>;c>2ݪ> =%>>= u=)=){X<8r;:ʜ<>=4>Y>A^W>Y!>M >%==D<=8D= =>&>=c,>=c,>(>=є==Q y>=`>T">GW>!=O=V=8r=p#=>Y>9>Qܙ>OMk>79>Y=O=޻=5p>.P>%>=0!=3=[=rG=> 12>0>C>A>* >8r==y=*<>;:Y<==c,=_== =Mn<є<є=@;&=d=> >i>>`y=D==[<~ <%:d<Y=u)=H1{=@;&=~>K u>]<>7=O=7!=8D=a=<>>%>$1>%=I==h =5p=(X'=D=3=v===u)>|>s>ŢM>0!>_˭=ܪ=q=A>2ݪ>[>nLZ>g0j>GW>===~=l=d=̾>>|> 5=G==h <~<%=>9>{X>Q0> >T>>/t=>>WX>> a>q>i->8i>>==d==̾>>>$\>=-=9>~>"?O{>>uM>@̾>b>>U>\5>>>av>2>==4={X=ä>:>>&Z>%=鿗= >3>v>|>*:>>=O>|>.>Pp>_>R>5$ > =O=X'=M"===ܪ>Ǡ>`>b=̾=h <~=5>>vG>>~ʜ>.=D==H=d=ܪ> |i>Y> l=s==.=rG=QK=;c=em= G==̾=N|=}l;1{:ʜ:d:d:d:Zd:Zd;Zd;:Y:Zd:Zd:Y:Y:ʜ:ʜ:Y:ʜ;K;d:d:Y:Y:d:d:dpS>* > ==a>Ǡ=LZ==[=Y|>/>C>:Bf>'==8D<=+= =y6>>0H>0>z=o=q=h =,SR>?>8D>r=c,=Jw<==`y=D>>.>A>@>)2>=є=[='4<;K:Y;5p=<є=> |i>>pS=t`=a=){X==em=l>b>">7>4s>z=))=I=}l=HMb> > =y6=D= ==<$T<^W<:Y:Y<7={X> >F|>!==){X=Y=8r==> >`=A=;&=5=8D=~= f=8D====a=[o>g>>O>J>=c,===O>J>:2>K u>F|>0> 12==f=jQ0={a ===>|=y6=E=@;&;p+>ذ>ܙ> >>>u)=|>>8i>`>oW>i->IT>n==X'=u)===>>> /==8r* >>ي!>))>j>M">@=йh>>6G<>[>k+>aB>B>z=ܪ={X=%=k=c,==>>>=F+=8r=B>oW>L> >q>m))=G=E=>%>2E>=`>5l>==!=޻= =3==>>o==l=B;p:po>R>qm >V(> =pS=K ==D=߂===ä=d==Rn1=7!=7!=`y=HM=l=h==`y="4=%=h=4=V<<%<=@=bZ={a =p#=QK=*<=<:Y:d;;K:d:Y9Y:p;<(X'<=5p=|;=={X={X=%=p#=8D=<$T<B>pS> /==<=<> Y8> l===='4<>;K:p;5p=8D=D>>%> 12=د=M"=Y<=$= =D>>>pS>|=6P=pS=;c > l=V===7!<;K:Zd:ʜ<==q$T=޻= =bZ=[:d={a =O> >%== <є*>b>pI>GJ=j=rG=7!= ==9>>===8r=+=Q=3=rG===Y=?=<є:Zd9Y<=bZ=>V>pS>_h>Y8>0H=+K=[==>>+>([>==d=em=E=n= G====AU=="4:ʜ:Y<5p=V=엑>V(>>}>>:Bf=h=y=E=>HM>&>:> =׌=a=n=V={a =d= u====ܪ=4=$:ʜ;d=%=q>">k->>c5?>)=M"=U=y=c,=LZ>:>?=ܪ===H1{=8D=Rn1==E=˛ ===8r<1{:Zd:p>>|==$<=8r=n=@= =X'=M"=em=(X'<=<%<==/+K=p#= =/=p#=;Y:Y;K<1{<є;~ ;5p:d:Y:ʜ==8r<%;d;5p:p:d:ʜ;Y:d:Zd:Y:Y9Y9Y:d:ʜ:d:Y:Y:Y:p<=Y="4<%<:Zd:Zd;~ <<> l=i[=~<=޻=QK=|;==K <є:d;5p<=u)=o>#d>.> =v=Q<5= a== =̾= =E=[='4n>.P>`=v=u)b=,=|;;Zd:Y:d;Zd;<(X'<;d;K<<<:d:Y:d;5p;d;~:d:Y;~ʜ;~ :ʜ:Y:ʜ;~ <,<%;Zd:Y:Y:d;~;1{;~;~;~ʜ;5p;Y;l;d< <><~;5p9Y:Y:Y:Zd:Zd:Y:Y:Zd:p:d;5p;K;:d:Y:d:d:Y:Y:ʜ;K;:d9Y:Y:Y:Y:Y:Y:d;5p<~<^I;:ʜ;Y;K;~ ;~ ;K:d:Y:d:d:ʜ;K;p:Y:Y:Zd:ʜ;~ <%<~;:d9Y:Y:d:d:d:Y:Y:p:Y9Y:Y:Y;5p;1{;5p:Y:Y;Y;~ <%;ʜ;Zd:d:Y:Zd:Zd:Y:ʜ<~<(X';d:d:Y;<$T=@="4=~<<5p;K;K<<~;~ ;Zd:Zd:Y:d;Zd;Zd:d9Y;Zd<;:d:Zd:Y:Y:Y:Y:Y:Zd:d:d:Y:Y:d;Y:ʜ:Zd:Y:ʜ;d< ;;l:Y:Y:d;d<5p;~:ʜ:d:d:d:d:Y:d;K<1q;d:ʜ:Zd:Y:Y:Y:d:p:Zd:Zd:d:d:Y:Zd;Zd;d;K:ʜ:Y;Zd< =5=+<%:Zd:Zd;1{:Y:Y:ʜ<2=p#==c={X=q$T=<:2<~;d;~;5p:ʜ:d:Zd:d;Y<~;:d:p;~;~ ;~ ;K;d;d;~ʜ:d:Y:Y:d:ʜ:d:d:d:Y:Y:Zd:p:Zd9Y:Y:d:d:Y:d<><є<ӑb<<є<엑= f=Y=8r<<ä>t>6=h=;c<:2;~ʜ Y8>:>F~>* =_={a <є>@>Ix>, ==<> >8r=="=I==G=AU==HM:d9Y:d;Zd<є=3=>>#d> =h=`y<~:p:Y:Y;Y;~ʜ:ʜ:Y:d>&Z>n>E===,=7!=޻=I>>>b==/+K<~:Y;K=5p=f=I= G=V=Q=8r=B== >(>D6P>=c,>=s=={a ==̾>>=c,>GJ>&Z==kt`<^I:Zd;K=/+K===%=E=B>5$ >.>%=AU=^==[=>>7!>=>= u=]<5p:Y:d<=:2=h =;cE="==;Zd:d;d<(X'<~;K;5p;Zd;~ <= a=em=~=f=}l=Rn1=;d:ʜ:Y:Y;~ʜ<<~;K:d:Y:Zd:Zd9Y:d;~ o=LZ=<7:Y:d=HM=="=-=i[=;&=c,=йh==m=̾>==B=7!<엑<ܪ=Q=rG=?=O=={a <(X'<><~;d;~;5p:ʜ:d:Y9Y:Y:d;Y:d:Y:Zd;5p;:ʜ:Y:Y:Y:ʜ;l:d:Y:Y:ʜ;~ʜ:ʜ:Zd:dr>n> =2=Jw4s>t>>[>%=k=@<==V=+K=>>!>:>==>> 12=9==p# >pI>c>R>>:Bf==V=Rn1=^>>2ݪ>V(>jQ0>f 9>GW>-v>)$>6>:Bf>+>8r=<ܪ:ʜ;~ <2=>J>~>S>k>">A=Y=bZ=p#=>>GJ>oW>F>~>av>@̾>:Bf>F|>Jw>9>u)=N|<=:Y:d;K<=8r>>UF+> a>N>v{>n==8D=P'=>Ǡ>7!>W>h3>a7>D6P>,>* >6>9>([=e=pS >5$ >=c,>= u=n>>>">o==>~> l===7!;~ :d:Y:Y;1{=~=f=?=D=a=Rn1<;ʜ<~<є=D=/=X'=SR=Ə=Cw=pS= G==d=[=){X<5p:d:d:d:Y:d<ܪ=|;=="=O==em<є;~ <%|>79>R>F~>"4=y6====P'=SR>o>2ݪ><є> G==C<~:Y:d=(X'=;&>Cw>4I>z=O==u)=SR=e>IT>>x>d>>=>=!=2>޻>f>>>l>.P=E l>R>mq>K u> =i= =|>>x@D>>>,>>q$T>([==l>=>pS>I>Վ>s>b=߂=5p;5p;~ =rG>>>K >hg>EM>E==d=>>f>~>>a>>k+>)2=x>>=`>v^>ˉ>L6>+K>\=ܪ=+:ʜ:d=Y=>>#d> f==t=l=k="> a>b>>~>Y!>.>`y=Y= u>u)>QK>3>J>t>=do>=y6=ä=d=8r=8r=^=AU> y>%=t`=@=:ʜ:Zd;~ʜ;~ ;d;Y:ʜ;~ʜ<%<є='4=Sb=l=l=a7===޻<%;K:d:Y:Zd:d:p:d:ʜ;K<%;~ :ʜ:Y:d;<<;K;~ʜ;<><<(X')>>=>R>Mn>C>GW>`>z=>>vG>R%e>"_h=-=v==̾>z>Z>|;o>f>=d<:Zd= a= >$>U>j>d<>Sb>QK>d>{>>>nLZ>GJ>z==0!=k=|>!>k->2g>}l>1(=>@>T">Jw>9>2ݪ>=c,>J>K>;c>=Q0=E= =8r={X>^>D>k->X>= <~<1q={a =O> >">%>b=t`=>===!=.=`y=.="4=Jw=d=o>>~==~:d:Zd<=bZ=:={X==8r=l=l=em=B=@<엑<^W;;d;~;Zd:d:d:d:ʜ:d:Y9Y:Zd:d:Zd:Zd:Y:Y:Y:Zd:Y:Zd:d:Y:Zd;~;;K:d:Y:d;~ʜ;;5p:d:p:d:d:Y:d<=+=A^W=.<є;:Y:Zd:d;5p<%<> >D6P>Tk>3oB=鿗=B=-===йh=V=ۇ=l=h <8r:Zd:ʜ<>=>Y>|;o>O>!>l>?==h =^I==>.P>WX>t>uhK>ZR>5$ >(>79>?>5l>)==+:d:Y;Y<~=[=̾>KRA>pw>>>>>=%=f=y6>79>y > >p>p>>_C>m))>we>~>m))>===sj;p:Y;av>Z>B?->>f> /=d=0!>>Mn>>>>n>!>y> >3>.>d>Jw>=B;:Y;Zd<5p= a=̾>?`>>װ>A>/>i== =HM=>=c,>~>4>6>i7>>4>t>{>>~>i->6=s=V;:Y:Y;Y<=B>|>L>>3>>m))>={X=5p=O=p> y>:Bf>av>{>{>>`y>>]>5$ >;/>=c,>+0!>K=a=;~ :d:Y:Y:ʜ[> ==a="4<1q< =8D=d=O=>>=o=ܪ=ۇ=y===3=% 12>n>J=A=D=h |=O=3<^W:ʜ;Zd=){X=>Cw>5>d==_=v=9=E>>L>>%>U>>E>@;&>==>Ǡ>R>>>u> G=q<:Y:Y<2=>;>>_h>.>C>=<>>GW>> ?O{?>_>c>Z>>">b>s>>d>>3>=D;5p:Zd=$=>ycu>C>Ηm>!>{>>>`y>z>sj>Sv?\?HM??B>4>>J>F~>)>???>>4s=y;엑:Y= a=y6>qm >>>D>pI>=>pS>f>>?O?O??>,>>OMk>Ix>>⣧?ғ?I?t>6>3&v=f;~ <>=d>.>z>N>~>,=O==->.>:>>ݩ><>;&>>_>'4>">aB>0!> >j>ܙ>>`y=8D:d:Y<=={X>> G>==l=em== u>)>@̾>^>\O>F~>,SR>=O=O>Ǡ>=c,>u~>=H>WX> l=8r<1q:Y<#d=~=7!=Y>S.>>>=>MG>vG==k}:Y:Y="4=> G>IT>av>[>C>8i>;e>A#>=c,>* > |i=O={X= =5=v> >Q4>|;o>k+>"=d<^I;=D=E=t`>:==߂=Y= === G={a ===(X'=<̾>=Q==̾==ۇ=<ܪ:Y;d<==Jw=em=Mn=2=HM=Q<$T<<(X';K;~ ;~ ;~ʜ:d:d;~>Y>gy6>=c,==8r<=b>>>`=V=i[=$T> l>>=F+=)<:p:Y:d<:2=>([>>ɝx>K>V>N=T=sj=|;=> >C>>z>es>V>f 9>G>U>av>Vi[>/=y6=p#;K:ʜ<~=*=<>t>?9? X>N>&Q>==>E>Ix>%>^W>B> >Mk>R>N>!>k}>12>aB>=d>>Y8>-??>m>>=I=>J>j>)>ܪ>d>_>.>I>SR>~>~>z>pI>#d=k->y>h?D>Z>d> 12==> >X>>1{>->*_>i[>$ >A >>ذ>4>WX>`=޻t>d>MG>6>!>7=c=`y=y=ǟ>>>Z>>->>G>|;o>aB>aB>`>GJ>z=̾=@;&K>* >2E>,\==D<8r<ӑb=kt`=9=>J>.>1(>"_h>%> > l>E=_={X=QK<є<~;~:d:Zd;;)$>@̾>9>i==d=QK=C==߂>>== l>T>u~>Y!>f=_==د>n>|;o>J>L6>uq> >{>>.P=LZ=I>$\>{>>>s>M">8=<2:d:ʜ=+=))>x>>ѓ>/>:>.P> >n>y > ?K??? >Դ>)>Jw>?>6> ??>>>d==h ;#d;p=p#> a>>-><>v>{X>Qܙ> >=c,>k}>&?E?*V?+x?.?d>a>:>{>>D?r?"?)i%?z>v>X=d;d;5p=h >t><>>e>>^2>F3>J>79>`>5??V?$?&?>>>a>q>~>I?r?"M5?)?{F>6u>Zd=;~ :Y=u)=">fV>>6P>S>k+>Y=鿗>>Tk>c>Ţ?O{?>> >pS>WX>Ns>f>F+??>> >>"=h :ʜ;=H1{=<>96>T_>8i==d=pS=h>>5$ >m>>v^>:>fV>2ݪ> >Ǡ>.>rQ>;>,>v^>3oB={X<8r:ʜ<%=n=޻=="4<є<==@;&=8r={X=ä=йh=ϖ7=F+=|===y=X'=,==A==p#<:d:Y;d<$T=Rn1=8r=/=@={X=E=2===?= =,<< =8r=em=%=d=f=+;~ :Y<:2=em=>>r>>>f>/>A>ID>@̾>&>=!==H={a ==鿗>n>1y>=O=Jw;Zd;5p=QK=ܪ>1(>aB>z=>x@D>l>q$T>~>ذ>A >)>uhK>?> = u=>`y>EY>Y8>q>`>D6P=ä<ܪ:Yt>n>>S> >>>>,>^>X>>>hg>,>E>?>.> >>ބ>N>޻>"=V:d.>>>;&>+>MG>>jl>¥>>=>K>g0j>,>o> l>9>l>>~>d>>5=;Zd<^I=9>>t>>J>O>>>>~>`>HM>u>=c,>=m=>n>>ˉ>~ >)>BB>"=h :d;5p=V=ܪ>8>oW>q>E>nLZ>av>b>h3>aB>F~>!=~=;&={X={X=i[>/>>>G>V =AU=8r:Y)>$1> >>o>`y>=Q0=6P=d={a =Rn1=5p=@=V=E> l>(>==V;Y:Y<~:d<>=Sb==I= =U<є;:d;~ >B>ID>"_h=J=Rn1%>C>Y=g=йh=엑>>`y=ܙ=M"Cw>>=>>D>5$ ==@;&=V=d=>8D>{>>>̚>M">nLZ>M>U>`>T_>.=-={a ;d:Zd;l==>l>N?I?>7>^=~=y==y6>;c>>;&> >))>ۇ>!>BB>HM>k}>>aB>z=<:d;=8D=\5>> ? Tc?>~>>=9=0!> |i>[Ѓ>><>?NF>i>$/>> >*>ذ>pI>%=Ik->>?=H>O>=\5=)=a=>Ix>>w>(>~>1>#>>>ذ>>WX>Y=q<:p:Y:ʜC>|>q>jl>P>/+K=?=D=bZ=>޻>W>v^> P>>>3>nLZ>f>`y>F3>z=6P=QK?>+x>0H> =p=5pf>8i>A>79>n>)> >=ܪ=SR=V<>4s>.P>=y6={X=h =V==ϖ7>o> f=׌=[ |i>U>w>_>"_h=g==AU>>m))>>8>$>>{a >3=A=Z>>hS>>;>I>n=HMt>6>of>> >4s>`>>nLZ>>?\?Y?z>Ԑ,>K>Qܙ>=>d> >ʜ?7=>N>k}> 12=5p:d;~ =p#>@>>x>>鿗>S>Y!>$1>:2>>6u?<%?$?'G*?z>>U>>z=>U>?v?#^2?>L6>A^W=l:d;=em>HM>f>6u>g>>>MO> G>4s>7=>k? ?d=?"h?>>>8>3>>,>;?@?$o0?K>Դ>F~=y:ʜ:Zd=Q=O>av>x>]!>SR>o&>P=엑> >IT>E>G`>{>ʜ>>>!|>^}>S.>>?G? 4>>>J=;c:Y;=D=߂>8>U>:Bf>b=0!=k}=!=j>* >[>\5>6>>k+>8i>> y>2ݪ>sj> >{X>>.=Ǡ> l=йh=|;<^I:Zd:Y:d:d:Y:Y;5p;d:d:Y;d<ܪ===n== ====q={X=%=V<<><(X' > y> |i>>n>2ݪ>8D>+x>u)== G=V=em=a=ܪ>> a> =2=8D;~;Y=V=د>* >WC>l>i>`>d>|;o>>->z>[Ѓ>,=B==є=x>9>{a >,\>>3=!<ܪ:d%>f 9>!>c>_h>ذ>ذ>/>L>I>/>4>Tk>@==B>'Ə>|;o>>>̾>>`=QK;5p(>~>~>4>!> >`>*>h>6>>>WC>n=ʜ>o>5$ >w>+p>N>_>>.P=B;pJ>m))>>,> >>G>BB>>q> a>hg>3&v>o==鿗>>z=>4>cQ>>N>n={a ;Y;5p=Mn=AU>5$ >mq>>>oW>c5?>b>e{>[>@̾>=鿗====i[>.>>q>pS>U=V=@:Y>)$>* >>> 5>o==J=k=rG=Jw=$= f=\=!> >,>!=y6={a ;~:Y<^I=E=pS={X={X=a=.=f=|;=C=8r< <%;~ :ʜ:Y:ʜ<~;5p:Y:d<2=H1{=n=Jw<=<%:Y:Y:d;~ <=Q=7!=2=HM<7 >=_=.<~ ;d;~b===I=є=O=̾>=E=m< :Y=(X'=~ >OMk> >`>X==kt`<є l>A>w>7=>{>>K u>/+K>4s>:>1(>==:2:d:Y<>=d>8D>>>Ѹ3>Վ>~>=c,={X=2=H1{=> >Y!>>>*:>>d=>E>|;o>}8>j>=c,>|=f<%:dT_>!>>LZ>;&>^}==QK=n=>*>>:>>*_><>>>%>.>}8>Jw> 12=:Bf>>>йh>!>3>A=!=8D=V=>@>o&>^>ͽ>۬>̙>T>>>~9>d>7!==<(X';5p=B=o>O>3>>Y>=<%=~==>/+K>l]>)>q>>y>Sb>F3>;>%>|=="4;K;=\=6P>> |i=ӑb=[8r>">0H>* >pS>B=鿗=йh=h= =){X<5p:d;<ܪ=8D=8D< ;~ʜ:ʜ;5p<<=޻=<є=QK=:2=~ >=c,>.>|=={X==->,>g> >6>pI>C>Y=˛ == >(>S.>Y!>,=Y=@;5p9Y:ʜ==>8D>{4>̚>>U>)=g>>79> >c>>4 > >>o&>,>>BS>v^>=>D>c>BS=l>s>+p>h>>0>~>J>X>>6u?G?>F>ܙ>A >\>F~>>'>C?>⣧>=f 9>~>1{>n >~>([=l>Y>Jw>ذ>c>G?>H>)>>av>Pp>>>?w>->M">>= f9Y9Y<= G>#d>~9>>>:==;&=_>>Y!>NX>&v>>n><>q>8>.>_˭>>˿s>e>p>`=Y<:d[>n>`=Y=3={a ===>HM>0H>?Z>F~>9>pS== >)>C[>o&>{>>K =x=K ;Y:dǠ> l==Y==8D=[="4=p#=E=_=o=,=/<$T:ʜ:Zd=Q=N|>>)$>9>8D>/>5$ >F3>Y!>ZR>EM>"==l=u)= =>,\>Qܙ>:Bf>=38>jQ0>d>|;o>nLZ>o&>>}>>>{a >Ns>n=鿗=c=ǟ>>A>_C>>>D6P=,=:ʜ;~ =f>>Mn>>N>)>6>> a>'>)>I>W>%==|=د>%>Xf>>p>>nLZ>`y=D;#d;~ʜ=h =#>@̾>|;o>>>h>wx>|;o>>{>>`y>6G<> f=O=I=2=>A>d>Ə>es>b=A=;c:d:Zd=B=?>޻>EM>`>^}>Jw>?`>=>=>5$ >=o=D=%=y=|;=> 5>H>qm >fV>+0!=2Y>r> ==엑=V=D={X={a =5p=8r >:=c=:2:d;~ =(X'==HM=HM= =B=|;=a7=2<<>;Zd:d:Y:Y<~:d:d<~!>"==/<є;5p:ʜ<#d= a=\=>%>:Bf>0H>=))==l=t`=є=<8r:Y=Y=йh>=c,>{>>{>>;c= u=5p<><1q= f=9> >GW>d>P>~>av>9>5$ >4s>#9>`y=N|=HM:Zd:d=D>b>^}>)>)>[Ѓ==Rn1+>pI>> >;>9>]<>Mn>F~>5$ >==7!:ʜ:d='4=_>A#>}l>}8>@=i[=8D<:2n>aB>->q>m>{>>Mn>>=>5p>n=x={X=Q:db>)2>(>K=pS<2;Zd;K<==~ >&Z>N*:>em>Z>;>A >`>==q=\~>`y=m=^W={X=)=p#=*;Zd:Y:Y:p;~>> =o=h= =sj==;&==ܪ=4=;Zd:Y:>=c,>.>|=D=>={X=>J>D6P>iv>t>i->GJ>=_==Q0>$1>IT>K>=<є:Y:Zd<>=B>u>MO>o&>Z>!==?=>:>79>n>>>&Q>~>C>r>>n>Z>>O>f>=QK:d:YF3>i->S.>=˛ ={X==>* >Z>E>>v^>|;o>EM>> y>, >gy6>)> G>u~>)=p#;Y;l=HM=>>, >z=ܪ=HM===c,=>>4s>F~>Q>@̾>==鿗>u)>@>k->pI>A=y6=5p:d;d=(X'=%=={X=z== f=~=8D=u=pS=0!=2=йh=-=y=={X==є>K>J>=엑=y<:2<:2<%;K;Zd;1{<><><<(X';5p:Y:Y:Zd:Y:d:d:Zd:Y:Y:d:Y:d;Zd;K;:ʜ:Zd:Y:Zd:Y:Y:d;5p;d<8r==/+K=7!=(X' |i>>Y=A=̾=/=?=$=8D=8r==LZ>==k=%;K:Y<2=k}=>>,>+>"_h>&Z>5$ >=>:>%7a>=є=)={a =[=I=A>%>9>&Z=-==H >8i>IT>F~>:Bf>C>K u>EM>.> =|=d=[= =є> y>=c,>Y!>F~>)=-<2:d8r>2ݪ>F3>BS>8D>0H>5$ >8i>.>pS=m==f=V=bZ=Ə=>0H>Luq>@>=d<:Y;d=YAU=ǟ> >n>n>'> y> f> 5=B= u=@=a7=+<%K>z>r==kt`;~ :Y;d:Y:Y;~<~;d:ʜ:d:d:d:Y:Y:d:d:Zd:Y:Zd:Zd:Y9Y;dpS>(>>>B=йh==̾=&v=f=޻;Y<=l=O> l>=̾=X%.>6G<>G>@̾> >=Q0===Cw=7!;K;d=C===鿗=+K=7!;~ :ʜ=Q=?> l>,>=c,>7>z==AU= =+K=[=Q;l:Zd<={a =X'=d=h `y>> =g=2=d=3=h ="4:Y:d:d<=em=?===pS=E=@=5p=rG=a=є=߂>|>o=G=Y={X=k}== u==Q0=v="4:d:d== u====I> l>=̾=P';~;~<==y=k}= =E<%<<ܪ=+=V=~ʜ=pS==є=={X=M"=f=k}=̾=-=_=v=2;5p;~<є=HM=~<=V=Jw=7!=0N|=U= =^=d=kt`<:Y:Zd:ʜ:ʜ:Zd:d;~;K;d;d<~<(X'<^I?>B=~=ǟ=޻=8D<=.<(X'<5p;엑:d:Y:ʜ:ʜ:Y:Y:d:Zd:Y:d:d:Y:Y:Y:Zd:p:Zd;5p<:2:Y<7= =h=ä== =l=8D==~==HM==7!;d:Zd;K<<<^I;l:Y:Zd:Y:Y:Y:Zd:d:Y:Y9Y:Y:Zd:d:p:Zd:Y:Y:d;~ʜ;~;#d:ʜ:d:Y9Y:Y:Y:Y:d;K<~<~;1{;5p:d:d:Y:Y:Y:Y:Zd:d;d<%<~;Y:d:d:p:Y:Y9Y:Zd;5p;1{;~:d:Y:Y:Y:d:Y9Y:Y:Y:d;5p;5p:ʜ:Y:Y:d;d<==:2=sj===Jw<;~:d;Y;d;:d:d;K<;Y:d;Zd;#d:Y:Y:d:d:Y:Y:Y:Zd:d:d:Zd:d:ʜ:ʜ:d:Y:Y:d:ʜ:ʜ:d:Y:Zd:ʜ;Y:d:Zd:Zd;Zd;d;:d:Y:Y:Y:Y:d;Zd<%:Zd:Zd<(X'=<~:Y:d;~ :d:Zd:d:d:ʜ;d:ʜ:d:d:d:ʜ;~ =='4=Q<%<є=q=;c=@;&=*<^W;d:Zd:ʜ;5p:Y:Y:Zd:Y:Y:Zd:Y:Y:Zd:d:d:Y:Y:d;Y;#d:d:Y:Y:d;Y;Y:d:Y:Y:d:d:d:Zd:Y:d:d:Zd:Y:ʜ;Zd:ʜ:Y9Y:d;;d;Zd:Y9Y:d;K;;~:Zd:Y;Y;Y;Y:Y:Y:p:Zd:Y:Zd:Y:d;#d:ʜ:Y:Y:Zd:Y:Zd:ʜ;Y:d:p:d;K:Zd:Zd:d:ʜ:ʜ;~ʜ<><2=[=Y;;Y:Y:Y;~ <:2<:d:Y;1{;Zd:Y;5p<:2;:d9Y;5p;:ʜ:d;~ <>;~ :ʜ:Zd:ʜ;~ʜ:ʜ:Y:Y:Y:Y:Zd;<^I<~:Zd:ʜ;<;K:Y<= f=7!=k}<8r<^I;~:Y<%=A^W= ==H=.;:Y=̾>==HM=E<8r:p;p<$T=7!='4<;5p:Y;<=QK= =d== =`y=8r;~ :d:d:Y:d<%<2=.=(X'=$=. =엑= <<8r=h ==~> 12>=AU==Mn<$T<7=D=p#=^I= f;~ :Zd=,=йh>2ݪ>Sb>:==rG=2==>t>,>!>==~=+<==>f 9>Mn> =pS=E={X==>>+0!>d=>=2=B=/+K=[<ܪ=:>r>8i>)$=B=z==~==Y>K> l=== =8D<=<є<8r<=~=QK=q$T=YAU=8r;p<ܪ=q$T==v=HM=V=;Y:d:ʜ:d:Zd:d:d:Y:Zd:Y:Y<%<<;~ :Y<== =~ =ϖ7=d= 5:d;1{=~=sj=k}=9= =@;&<:ʜ:Y:Y:ʜ=Rn1= u>%>%7a> G== <(X':Y;K=$==ǟ=엑==i[=SR=`y<;d;~ʜ:d;=l=G>+0!>=>5$ > =<;1{<ܪ=3=,> V>@>> =د==;c<<%;l:Y;K=|;=->">96>.> Y8={X G>/>.>HM=엑==h <%<;Zd9Y:Zd==I>|>> y=O=|;<>%->"> /==4=V===د===%<%:d:p`y>r=LZ=E>'>=9==5=8D=Q&*>{>>,\>{>>$\=X'= =AU> a>G>_>V>9>`== =`y=<є=Rn1=M"==˛ =;&=="4;5p==ܪ>i->MG> >>y > l=1{>>F|>t>>|;o>Y!>([=={X=[=rG=5=D==A=鿗==a7<~<ܪ=>t>>ֲ(>6P>3>=ۇ>)>F~>q>>}>we>R> ==4==sj=y==->K=Q0==`y<;~ =k>=c,>>s>c>f>=p=->$>F3>S.>F3>(=A=D=5=h =E=a7=:=^W===k}="4:ʜ1(>Y>GJ> =k=Jw=`=O>B> 12>b= u=>=em=5p= ;K=Jw=d==K ;d;~ʜ;p<%<8r<<~ =5p=P'=@;&=~<1q:d9Y:Y:ʜ;l;Zd:d:Zd:d< >> 12=O=p#<:Y<5=Zd=== =I=l=%<:2;~ʜ:ʜ:Y<:2=> l>9>MO>A#>z=c,=Q;~<={a =>>>t> 12=ϖ7==8D<2>>U>l>`>5$ =g=\<є=H1{=!> >5$ >M >K u>4I> =ä=y=*<1{:ʜ<=E>>M>f>ZR>0H=B=jQ0=HM=B=K>ҥ>Ix>fV>c5?>C>=AU=a=@;&<ܪ(>;/>4I>`==8D=%=8r=>>A#>Y!>V(>96>`=1{=޻=7!<;~ :Zdt>.>*U>==X'=h <~ <Y:d<5p=(X'=`y=QK=Q<^I;<><==l==˛ =_="=h=޻=V<=<%:d9Y:d;Y:d:Zd:Y:d<=X%=Jw=/+K<=<8r;K:p:Y:d;5p;d;Y;Zd;~;~:ʜ:Y:Y:Y9Y:Y:d:d:d:d:ʜ;Y:ʜ:d;Y<:2 >H>av>=c,=7=V=a7=h> Y8>.>A#>?>* >8r=є= =`y=;c=Jw=====<=:d:d=V>o>|;o>6>N>!>u~>=˛ >pS>OMk>\5> >>k->:Bf>Ǡ=c== =d= u>b> 12>|=|=5$ >>ۈ?>FO>t>Ix>%>:Bf>{>>>Z>a>>WX>f=AU=q={X==9>>&>==d<ܪ;Y=3>8i>">? 7>6>>b>><є>{>>>^2>BB>>OMk>%="=E= =̾>>>)2>==d<ܪ:Y=2> >[>X>>B>c>=H>>Mn>wx>>{>>WX>([=G=!===X'=د>Ǡ>>=D==H$>B>>)>KRA=2==> f>&*>0H>&Z> =йh=4=8r=`y=8D=V=HM==ä=!=f=:d;~=7!=|>o==v=E<$T=.=3==D={X=f=Sb="4={X>)>C>ZR>M>$=O=8D<><= =AU>pS>.>.>==4=V<=,>b>{>>mq>?>b=[=Q=p#=>>GW>fV>d>EM>===B=&Z>\>t>i->2L>c>~>{>Zd>(== =em=u)B>5$ >GW>?>z=|=i-=:2==LZ>,>Y!>rG>n>Jw>=د=d=QK<$T<5p:d:Zd<==d=y6>o>b=Y=B= f=.=|;=ä> >1(>A>=c,>n=LZ=q=|;=%<ܪ===sj==l===.)2>k+>>Y!>>=8r=B=>Y>8D>Ix>GJ>3oB>`= u==sj=bZ={a =d=;&=O=;&==;5p;d=y>n>)>N>>y>~>=_>>Y!>>)>.>vG>D6P>=|=X'=d=h=t`>Y>>`=ܪ= <R> ?b? ?P>8>`y> G>A#>b><>x>>>b>&Z=-===ܪ>Y>.>8i>*U>o=q= 5:YV>?s??>of>u~>&>C>M>A >>>>[>:=V===_>>2E>:Bf>,> l=E=.:Y;K={a >"_h>8>b?M>&>q>IT> >!>U>~9>Ǡ>I>av>2ݪ>=̾={X==є=a >J>:>=7==>>*><>_==q=,>>,>8D>.>'=y6=?==u=bZ= =="=B=D=:=(X';Zd:Y%> 12=2=em=Y=8D=/===D=d==H=A^W=@<ܪ<<%=2=c~ =p#=P'<$T;d:Y;d<<<ܪ=@;&=l=\==SR=޻=]=Q<1{<~ʜ >E= =n>2ݪ>EY>:Bf>=2=2<<%== u> >#9>$\>=йh==;c<ܪ>M >em>Y!>/+K=V={a ==em=>)>?>Zd>X>:Bf>`==f=7!>GJ>`>T_>,=~ =8r=7!=u)=V>* >Y!>tE>o&>MO>="==QK<ʜ<^I:ʜ<%=B=鿗>"_h>8i>/> ==[=5p=)=B>">Mn>hS>aB>?>Y=ä=/=:2>&*>8i>2ݪ>V=د=k=`y=8r<~;~:d:Zd:d:d:Y:ʜ=~=޻=̾=Y=d=4?<(X'<%<==p#=\==== =IT=޻<<<<$T=$=8D="4>U>em>=c,=y=h =`y==>z>.>.>====QK=D=l==D=^W=?=[< :d;=>>>i7>/>O>f=o=є>>9>c>z=>sj>X>.P==q=޻=pS=q=I> >%>=|=z==>O>엑>>>>8D>=H>&>`>o>>v^>z=>F|>Y=J=v=E=O> 12>&Z>.>==<ӑb:Zd<8r=>=>J>j?r>FO>D>F~> |i>([>^>>>>q$T>@> =Y==I=">`>+x>2ݪ> =x=d> a>> >p>NX>#d=I> l>6G<>Y!>jQ0>b>C>=Z=+K==f==>>J> 12=O==H<^I:d<%= G>!<7>{>>V>|>5$ ==Y==>%>>>= u=d==V=Rn1=B==,="=c,= =8r:ʜ:d<$T=*=+=Q<%;d;5p;Zd:ʜ:p:Y:ʜ<><==`y=pS={X==a=B=QK=5p= <є;5p:Y:ʜ<%;5p;~<~;:Y:Zd:d:d:d:Y:d<%<>> /=׌= <7;K|>=ܪ={X=h <=ҥ>2E>([>=+K=7!">/>.P>=AU=k}=D< <^I;~:Y<==>>.P>$1>E=N|=;c<$T=X%=D>>.>BS>?>"_h=o={X=em= f >>=O=.="4<==bZ=!>>%->96>3oB>pS=د==Mn>> l=ܪ==em=޻<8r;~:Y:ʜi>!>E=\=;c>~>>iv>=a==l=>>2E>1(>===rG=D=`y= =!=د==T==u):ʜ:Y<(X'=p#> >o&>>>>S.=ۇ==ܪ>>=>Qܙ>M>8i>%=|=M"=}l=y=v=_> l> /=A=2=V;:Zd8r>qm >uM>>$>b=))==>>K >GW>4> ==޻== ==y6> y>Y>|=c,=[<:Y<~=.=;&>:Bf>j>@>6>6G<==)==>">'4>">Y=I=4==`y=rG===엑===d="4;5p:d< =QK=>@>8D>=,=h ="4=\===AU=Դ=]=q=f=.=~=HM=QK= ={X==pS=<є=h =B==h =7!<7;< <8r<$T=@=@<ܪ<%:Zd:Zd:d:d:p:Y:Y:d<<==޻<<2="4=h =u)=d==pS={a =K =7!=Y< <==HM=/+K=/+K=u)K==˛ ==D<ܪ<%:ʜ9Y<%=:2=pS==^=B=+;:d:Y:Zd:d:d:Zd:Y:d;Y:ʜ:d:Y:Y:Y:Zd;K<%;~ :d:Y:d:d:Zd:ʜ<ä=7!=C="4<;l:Y:ʜ)>"==a=Y<=$=B==ǟ=O=2=Q=7!>o>8i>D6P>#9=|=Mn=Y=l={X=йh==B=_==h =Y<==,=rG=k=D===V>79>F3>(=˛ =Mn==p#={X=s=o=G=AU==i-=q=~=7!==^=2=є={X=a7~>=x== f;:d:Zd:Y:Y:Y:Y:d<~<2<8r<:2<~;d;K<5p=2="4<$T<%<~;;K<~<7=7!=8D<ʜ<%:d:Y;<ܪ===sj==bZ=$<;;K;~ ;p;<~:ʜ:Y:Y:d:ʜ:d:Y:Zd;5p<~;K:d:Y:Y:d;Zd;~;1{<<5p<^I<~;:d:Zd:Y:d;5p;l:ʜ:Y:Y:Y:Y:Y:Y:Y:Y:Y:d:Y:Zd;~;~ ;:Y:Y:d:ʜ:d:Y;5p;l:ʜ<>;5p;5p;;K;p;Y:Zd:d<:ʜ:p;<є=<є;~ :Y:Zd:d;<><<<<%<%<%<%<><(X'<%;d;K<~<< <^I<:2<5p<5p<%;~ ;;Zd:ʜ:Zd:Y:d<~=_=="4<#d;~==d=7!<1q<~;;d;<%<(X'<%;d;1{<%<;K;~;d<є<ܪ<;p:d<~<<є< ;d:Zd:Y9Y:d=-=Ə=+< :ʜ;<ܪ====޻=Cw=%=f=|;={a =n=B=[<%:Y:Zd:d<=%> |i>?>Qܙ>79=B=yb=B== u=D=K=йh== =[:d:Zd:d;#d==6P>79>z=>^>f 9>f=v=7!=={a =Y>.>*>5$ >-O>> 12> >pS>'>E=;&=[;~ :Y:d;~=/+K=O>=c,>\5>X>k->n====7!==V>>>=c,>F|>=`>'Ə>>>&Z>&Z>)=Դ={a <>9Y:Zd;5p=8r=>>Q4>av>@>B=k}=){X=#d=5=O>>* >/>$\>%> > >>>==QK;K:Zdu>===P'<<<>>)=엑==Mn<<==bZ==I=-=c,==H<ܪ;:Y >EM>g>]<>79>=?==8r=˛ >>F3>Q4>,=AU=p#>%=={X=l=h =HM=">+>q$T>v^>6>`>&===> l>F3>\5>4>b>%=9<ܪ:ʜ:Y<ܪ==B> /=-==V=V=M"=,>n>c>>~9>U> =V=q=!>o>A>ycu>E>\>=a<%:d<%=Mn==є=d=QK= =Q=V=-=鿗>">=c,>8i>==!= =u)=Y>Y>4s>;c>f=,=em<:2:Y<~<7=<%<<><=5p=y=D=,=1{==HM=X%=@=Y=V==D=2=d=V<8r:d:Y:Y:Y9Y:Y:d;~ <=u)=8D=8D="4<ܪ;~ :Zd;Y<2===p#=rG=B==v==O=i[=Y===7!<=<ä=Q=n=y=p#=:d:dǠ>>!>d=> /=_={X=wx=8D=@;&==>`y=y6=a<ܪ<~=|;=AU>>n>E>Y>pS>(>:Bf>A>9>d===!==em=8r=O>f>96>(=y=V;Y&*>5$ >,>>>* >9>=c,>0>)=<=X'=|;=bZ=y=ܪ>* >G>9=x=u;K< ==B>>!>>8r=\5> 12>>>=ϖ7=4=rG=8D=7!=c~ =!> 12>)$>=D=8D;5p:d=u)=d==Z= u=+K=====)=l=7!=<2<%;~ ;~ʜ;~ʜ; >A>U>96=l= = f<є="4===V>b>b=V=|=;&==O=є==7!<:Zd:d;K=V>B>m))>[>y>>F~=={a =a7=d=A>/t>T>i->d>GJ>+>$>/>2ݪ> a==<ܪ:Y:Y:d;Y8i>̚>ۇ> >I>F> =d=a=~ >5$ >uhK>G>~>^2>v^>pI>av>k->nLZ>X>* =s=8D:d:d;l<^W=l>D>SR> >j>H>12>=SR=>B>Ix>3>>>:>>Ǡ>{>>>>mq>96==QK;5p:Zd;Y>$>>Z>I>&v>j>==Cw=>:Bf>ycu>k}>>> a>rQ>f>o&>pI>X>%7a=Y=5p;~:Y:Zd;d=8D='>6G<>ycu> >f 9> G==@;&=V=?> l>7!>V(>dXp>[>A#>0>/>8i>79>>= = <̾>;K:ʜ:Y:Y<=QK=!=>=y=4=8D<8r<<Y<;~ ;K;l:d:d;~;K;l:Y:Y;Y;<%;~ :ʜ:Y:Y;K> |i=ܪ=d=5p<<2=7!=HM=;&=Y={X=V<;Zd9Y:Zd<;={X>>>b==/== =ܪ>2ݪ>ycu>>Y8>`>"=ܙ===>2ݪ>j>y>H=x=8r<~ʜ:d<(X'=k}>>k->:>em>t="=̾=<>.>->˿s>b>>]>Y8>9h>>>>EM>z>>>>hg=I=8D;~<ܪ= u>R>BB>O>>GW>=s> f>U>D>j? 7?~>))>&v>o&>-v>.>{>|>?Ip>>q>z==H<~<%=Y>Mn>> >O>@̾==i[>Ǡ>K u>>b?NF?z> >uM>q$T>1(>2E>{>>¥>?\>(>>=<~< = >>^I>we>Qܙ> =q={X=K>t>o&> >>}>>d>=c,> Tc> >C>>Z>k>n >bZ=g=7!;5p<2=/==9=O=y=8D=:2=3=> 12>8i>Qܙ>Luq>79>pS==E=E=<>!>Mn>\O>8D=t`={a :Y;K<;Y:Y:Y:d:d:p:ʜ|>Y> >.>,>"==!==E=`y==> =={X=8r:Y:Y<%={X> >8D>GJ>D6P>=c,>D>]>w>>}>x@D>Vi[>)$=N=!=Cw=>>[>~9>i->"_h=<:2:ʜ=V=>BS>{>>>^>{>>{>>>>?>޻>wx>?>`=O==>Qܙ>BB> k>{X>nLZ==u);5p==H> y>Y!>>E>>4>:>w>>>P>m))>8> l=O=> l>f 9>v>>`>;> /=7!:Zd:d=YAU=>EM>~9>f>8r>pۈ>fV>nLZ>}8>}>f 9>:2>=йh===>A>l>>>lN=o=u):Zd<ܪ=>%>=c,>Mn>EM>.>n>$>+0!>">`=߂=E= =rG=rG==A>C[>o&>`>=<~:ʜ9Y:d<~;~:p:d<%<8r< Y8=t`==8D< << =Q=V= ==0!=4==[=[= =f=em=~;~ :Y:d==>=c,>:>,\>pI> =E=P'=5p==>>&Z>9>9>&Z> l>b> y>> y=ܪ=)<7:Zd:Y:d<:2=d>=>>v>FO>j> >`=Ə=d=>0H>q$T>>~>~>>}8>b>k->sN>aB>7!==m;p:d;Y=%=엑>4>M??!|?Ip>>A^W=йh=O>n>w>R>cQ>>FO><>c>c>9>/>">l> =-Ǡ>G>>U==鿗>8>>8>"?M?_C>j>.>/>!>n>->~>,=N|{>_? ?V?>y>9=ܙ=йh>*>~>q>ݩ>L>i>>;&> >>>N>f>=">>>i[>s>hg>=H=a==A>>]>~>=l>>t><>~>y >{>z=>^>)$=O=V 12>>=>Ph>2ݪ=o=޻=޻=){X=%=_>J>2ݪ>?Z>=c,>.>ҥ>>@>%>==h <$T<;5p:Y;~ʜ<>9>Tk>GW>(===V=QK=d=))>>">=SR=+<>:d>iv>>hg>#d=鿗=,=Q0>.>V>J>Ţ>>>[>8D==G>4>j>f>I>/>Ix==Y;~ʜ:d==> >|i>D>>W>>3&v>>.>>^{??!i?!`?b>1>A >Xf>Mn>%>d??? 7>`>79=Y<>9Y;Zd= >:Bf>$ >~?>>>Y!>,>K u>?O{?$?8 k?8i?'k? 7>v> a>7=>U?.?+0!?5p?$>>{>=<:Y;Y=5>8D>>j?>p>S>M>$>F|>k>b@?c?1F?3J?$8?6>,>P>3>S?@?+ ?6"?%a>>~9=>I>`>l>6>y >J>b> >oo>;&>6???B>>>fV>^}>!|>1?NX?E? V>6P>@= G<%;~ => |i>QK>k+>F~>==\=D>M">W>%> >>>~9>@;&>%> />9>B>>ŢM>->Q4=O=Y:d;1{="4=)=0!=/=8D<=Q=Rn1=%=|=> 12> 5>=~ =h=޻=y=SR=ܪ> 12>=-=<;;5p:Zd:d:d:Y:ʜ;pS>&Z>%>">.>A#>Y!>em>Z>=c,>=׌=k==X'>>79>Q4><>==H;d;~ =p#>?>F~>~9>x>>z>>%>`>S>`>>S.>Cw=m=,> y>av>c>'>{>y >`y=+:Zd<=?>2ݪ>7=>O>>>>>db>uq>q>X>>ycu>8i> >>=c,>>1?d>N>h>F3=;Y<= >C>G>>H>ϖ7>U>/>6P>p>of>;&>a>rG>6>>.>Mn>&v>? ?\>>hg=<~1y>3>&v>O>;&>*>~>z#>&v>q><>>D>pS==x>5>> ?s>>>OMk=;d:ʜ=l=>Luq>t>m>O>d>n>oW>v{>m))>QK>(>b=Y=I=!=>Rn1>f>ŢM>>_C> =:2:d<8r= =LZ>!>5$ >.>> > |i>~==J=-==h =Jw=A^W=8r=s>'Ə>M >A>Ǡ=y<>:Y<<5<:2;~<~ʜ;K:d:Y:ʜ<~K> =o==8DXf>>;>a>* =?=[=H1{= =̾>>'>=>]<>av>H>%>>n>.>%>o=?=.:ʜ:pb>9?? 7>]>!|>=N|=+K=>A>> k>F+>e>8>`>>>v^>:>W>)= G%>$? E?&H_?*V?>Ѓ>Z=y6=g>4s>>1{>??>?:>v>̙>U>;&>{>{4>==ǟ<=:Y:d;~ =rG>(>??0#>w>>u>K u>>>B? D??f?%?vL>>ٮ>H>>ذ>K u=AU=HM:d:Zd;K=QK>r>??"q?'\?8>j>Y!==>=>r>9?b?=Z?ͽ?Ǡ>#>Վ>/>>+K>>79=;&=~;K:Y:dRn1>c>?>ݩ>`>=D=!>>ZR>ذ>Z>Z>T>йh>&v>>E>޻>K>F|>= <7<%:ʜ;5p=(X'=ǟ>4I>z>^>`>pS=N|=A^W=Mn=v>`y>2E>Y!>vG>{>>em>H>=c,>:Bf>3&v>=y=޻=*<5p;d:d:p<<<~:ʜ:dK>>=Y==f={X=O>n>^>|>sj>MO>=ϖ7===>Y>:Bf>A>==H1{K >>uM>>Z>HM>=H>Y>U>>??NF>Re>y>nLZ>&Z>z>Vi[>><>>I>vG=-=7!;~ :Y;d=5>8D>J>~?9>i> k>g0j>5p>O>~>h?"M5?5p?7jl?%`? >Q >V>~>??$8?+0!?>x>_= nLZ>\?=Z?1D?b>5?>`>Qܙ>vG>w?9?8 k?Lr?M;???!*>>!>2>鿗?!`?B"?Je?9?>A =y6<^W:Y<:2=q>j>`??3?.>`>6>GJ>nLZ>̾?d+?1q?GiI?J?< b?,o>A>e>>?"M5?B?K@?;?NX>=<:Y:ʜ=}l>+>>N>ʜ>鿗>~>GW>t>=c,>Y>?)?%?(??>Mk>o>V>a? ?'Ə?0`?!`>$T>t=27>j>>B>79=Z==>2ݪ>>{>Ѹ3>>Sv>{X>|>;/>5l>k+>>>~>ֲ(>3> =A^W:d޻>&>,>+>==є=D=B>z>?>IT>* =O=D;~ :Y;K<(X'<%;;1{;d:d:Y:Zd:d:d:Y:Zd;~ʜ;K;~<є=X%=k}==D=є=T=ܪ==x=="==p#=8r<ä="4=~==̾>=D={a 6>.>>]>=c,>9>@>WX>n>wx>i->E>===HM=]>pS>Qܙ>o&>Y!>=:<:Zd>em>)>;>=l>G>ذ>)> k>/>,>>b>([=G=엑>$>z>>b>̙>V>=h ;~:Y= 5=F+>K u>>>>ճ]>Sv>I>H>> >ܙ>>6>GJ>Cw>z>av>?vL?b? >d>oW=!aB>R>ۇ>q>>_>ֲ(>> >x>G`>D>>GW>n>(>ycu>ӵ? ??>~>,\=ܪJw>>͘>>ݩ>>7>J>˿s>1{>s>M">`>* > >J>\>?NF??>->F= u'>o&><>pw>,>ҥ>)>[>>{4>t>C>pS=g=D=AU>>z>>))>4 >>:Bf=M";Zd:Y%>BS>]<>Y!>D>5>.>+>>==a==sj=|;=> />Z> >~9>9=<ܪ:d<~ ===O='==?=SR===8D<$T<2<%=:ʜ<+K=M"==t`==y=YF3>>)>g0j>==2=(X'=p#=>>1y>U>`>K u>(>> >+>"_h>==.:ʜ<%=>Y> >7?r>>6>`y==f=د>1y>>&v>!><>D>~>`>V>`>z>V(>r=>)?Zn?$?'?K>>B=1{=O>!>d>̾>cu?v^?W? }>#>Ѹ3>>Z>>>>==O=~:Y:Y;Y=`y>* >`?M"?.N?3C?>->c5?=t`=t`>;/>K>ܪ? 4?f???9>M><>l>>G>M ==*:d:d=8D>>?t?"?&#?>*:>ID==ܪ>1(>>RA?I???@>>ݩ>ͽ>>>[>8==;~:Y<=>Y!>'>?vL>O>3>%=SR=0!>>Mn>&Q>J>v>Y>_>>/>BB>޻>>F|>B=)<ܪ;d:p:d== u>:>>>`]F>={X=7!=8D=d=o>.>\>> >z=>[>F3>=c,>2ݪ>===(X'<=[=A^W=em=QK=k}<<5p<~;Y;~ =/+K=>>>Ǡ=,={X=d==>pS>H>hg>b>C>====c>>* >.P> ==(X'HzG>>>>`>>>u)>IT>>e>F>b@>\>*>t>+>J>G>>,>ٮ>>\= u=u);~ :Zd<%=f>2ݪ>J>j?:>E>>k->8D>IT>>m ??,e?0?"q?>)>`>{>S>?w?%?J>ճ]>GJ=pS<~:Yhg>><>>S.>o&>a? ?.?EƳ?H?;Sd?P> >e>}>\?v?;?D?2? !j>=O<^Ib>؋W? ?"? >>>GW>h3>??) Y?@(?D?8 k??>;>>R>S??=P?FK?6? 0>=">c>d> >->3>Ns>t>96>6>? E???#??:>H>z> a>.? ?$1?+T?.>b>j=q<~<>={X>2ݪ>>>B>:Bf=LZ=Y=))>(>k->>U>Mk>|>0!>>}>A^W>:Bf>nLZ>R>5?>>Ғ>l>o=7!:d:Y~>>">* >Cw== =c,=>$>G>U>2ݪ=<=Jw;K:d<%<>>"_h>4?>3&v>.>4I>F3>Y!>`>M>.P>Ǡ==/= => >?>Z>D> V=)<:d:Y%>X>3>>>.>`>A >U>SR>?>>ID>J==>>t>{>̙>c,>^>=`y;:d= 5=O>A>M">c,>Mk>̙>;&>+>ɝx>!>Դ>¥>>z=>9>)>>Xf>q>i? E?>͘>bZ=&vXf>>> >m>>Mk>D>ݩ>ۇ>I>>{>;/>>&>nLZ>ɝx?l??<%>))>j=ܪ<2:dC>>U><>@ >Sv>`>̾>6P>>>X>R>>>o>pS>WC>!>]j?? >\>=йh<:Y;~ =y>Y>k->es>MG>>?>r>>v^> >k->=`>===">>>6P>->ި}>>=c,=d;l<7=v>%>C>`>`>MO>=c,>5$ >/> >====bZ=p#=v>>\>>>==i[=[:Y<==u)=ä=~ =鿗=AU===q=)=QK=Y>GW>O>!=Y=Jw<`y>$>5>*U> =>> f>8r==pS'Ə>ذ>>>>>==D=IT=Jw===>D6P>X>R>>S>>mq>j>n>\>3oB==;db>6u? ??>>G> =޻==y6>EM>ذ>I>Az?I>i>G`>s>}>^2>M">j>n=E<=[>>>F??1D?@>q>%7a==> >j>&v>? 4?(?9>">'>>p>>}l>.=c,<$T:Zd_C>5?? ?>E>A >%==>B>[>/>˭??l?M>6u>^W>q>~>>f 9> G=1(>g>N>Վ>SR>T"=د=p#=p#=̾>!>oo>8>>$/>|>>v^>:>y>X>* ==p#>M>Xf>0H=I=p# 12>9>^>k->av>F|>2ݪ>%7a>>b==}l<ܪ;K:d:Zd<5p;K:d:Y;K >n>d=>Y=-=N|=~=sj===-=V=E=H1{>f 9>F>l>1(>b==鿗>>_˭>>>4>`>>B> =G>>X>12>'>k-> =>I>U>ۇ>~>P>@>>$\>i->L>"? ?>?>D>~>f 9>HzG>>;&>Az?NF>x>>`y=+;Y<%=B>* >&>'?>nU>p>i->/+K>=>>h&? Tc?!?&Z?f?>Վ>G>:>>d??"q?r>j>A=:ʜ;d=rG>">>>ʜ>N>J>`>%>9>:>uq?Ip?f?"M5?E?t>C>g>>GѸ>Rn1=pS;Y:d="4=V>o&>>̙>!>d>* >|>r>IT>!>ͽ>~?>e><>x>x>hg>G>װ?% ?v^>;o>>*U=h :d;=l>K>F|>g0j>ID>r===c,=>* >X>>>M">:>R%e>!<7>C>F3>4>*>.><>K =̾<2:Y;d=.=a====H=$=+=`y=y={X=="=Q0>=G=1{=SR={X=˛ > >+>/>Y=l=Y;Y:p;d< ;~:Y9Y:Zd:d;K l> Y8>8r> y>z>)$>* >==c=l=Jw=U=pS=i[>)> a>==a7+>Xf>l]>i->^>`>t>E>:>nLZ>C>=ܪ=?=2=>9>~>I>:>@=˛ =$;~ :d<8r={X>z>i>k}>>d> G>k}>5>>>ذ>wx>=>==l>-O>z>>݅L>Ϻ>ذ>([=f,>>,>>>>>{X>*>>{>>~9>BS>=> f>=>>ܪ>>#> k>Mn=qt>{>>`>4>:>> >>>y>^>Y!>%=A=%=>,>>ͽ>>T>uM>F~=<%:Y:d=A^W=y6>A#>K>pS>)>>x>pI>mq>`y>=>pS=ܪ=p=a==>G>ذ>i7>J>I>=:d= =>* >A>C>8D>&*>>>Ǡ="=d=kt`=8D= f=HM=[=>0H>W>Mn>f== =#d>&Z>"==^<=:Y;Y=>n>x>>>!>+x==%==}l=Q0>@̾>Y8>><[>=>K>ycu>k->g0j>N*:>%==bZ;5p;~ =a><є>>ֲ(>cQ>>H==7!=,=d>>i->c>+p>݅L>ܙ>&v>pS>>d>f 9>6G<==;ʜ;Zd=3>)2>[>>6P>>8D=N|=@=@=> y>[Ѓ>>>>>~>3>|;o>lN>Mn>"=ӑb=bZ;d:Y=Q=AU>A>~>>Mn=e=rG<"4>`>3>G>,\>vG>Rn1>@̾>2ݪ>=-=<;:d;Zd=@;&=>|>=O=>!>/>+0!>>o=))=O==8r= 5;K;Zd<=/+K=7!<7;d:Y:d<< =em=a=v=v==)=q$T=8D<=<2<ܪ<<:2;Y:d:ʜ;~ <:2:ʜ:d:Y>Cw>="==pS=a==>d=>9>@̾>:Bf> ==={X==B>J>'=ܪ=rG>`>>j>/==1{=i[> >A^W>~>>>>>OMk>>Ǡ>>Y!>3>%>hg>o=c~ ;K:Y:ʜ= f=>=c,>P>>o>Z>pS= ==>(>j>>W>j>>t>6>C>1y>WC>%>[>L6>>O=8D>>;>>S.>=AU=o>n>]<>>e>̙>1{>J>3>H1{>9>f>>N>ܪ>4>g0j=O<2<(X'=|;>>J>mq>V(>='==є=>!>O>}l>>m>Y8>Y!>([>q>C>>{X>s>N>==E8r==h=~ʜ=`y=B=d==2>o>>,>$1> l=ܪ=>>5>[>b>;c=鿗=P';~ʜ:Y >E>">>>* >5$ >2E> G=o==3=n==H==>n>2ݪ>n=<=<;~ʜ:Zd:d=5p=>>G>`>]<>Ph>N>^}>h3>b>F~> =鿗=!=\==y6>(>dXp>E>sj>2ݪ=Y= a;d:p:d===ܪ>7!>m))>:>I>t>lN>t>z>oo>R>(==;&==>|>>=>8r>=l>%>\>b=U;d:Y:Y=%=T>.>hg>I>>nLZ>b>b>b>V(>8i>=O=0!=)=d=I>2L>|>ذ>>Xf>b=QK;Y |i>:>V(>V(>F3>96>2L>.>>===bZ=/+K=<є=9>b>?>f>^>*=<ʜ:Y:d='4=q=>%>> ==-=ܪ===H1{<ܪ >=Y=\;Y;~ =+=f=={X=a= =={a =@;&<7;:Y:Y >=йh=h==p=Ə=~ʜo>2ݪ>3&v>o=d=Y;1{:d;~ =@;&=Y>>BS>Y!>Mn>.>Y> 12>=Q0=D=em<%:Yn>Pp>Q4> =!=+;~ :ʜ<= >|>9>j>>}>ycu>R>/>!>J>==8r<8r<=X'>u)>:Bf>9> =^=;l:d2ݪ>]<>sj>i>F~>)$>> =))=!=em l>(>8D>/>HM>=B==0!=|;<=;Y:Y<~=+=|;={a =+<:2:Zd:Zd<%=5p==Y== u=h=\=~=V="4<;Zd:Y;Y<~<~:ʜ:Y;Y<="4=H1{=|;=%={X=0!=a=B=T=7!===l==bZ<7;Zd;d=~=y=ǟ=엑=د={X=sj=P'=V=~=Ə=|=> >u)>`y=O=q=9=0!=1{==B=Ə=޻:d;="4={X>?>J> f= u==|;====>>/>9>,> f=ܪ=ǟ=ܪ>>,>,>=pS<^I;~ʜ=B=9=>)>=Y= =h ={a =a=2=y6>>)2>79>-v> =V=ӑb=>>>=>?`>=p<ܪ:Y:Y f>o=s=̾==O> >(>([>8r=\=H1{=={a =2<є9Y:Y;d<`y>8r>> l>%>J>u)=엑==p#=7!=){X=8D==H==> l==?==<1q:d;5p=E= > >n>!>> G>>>!>">K=h=B=C=2=;c= = u> >">=ܪ= />">$>f>>pS>> |i=ܪ=d=V=8r>>'=ܪ=<^I:Zd:Y |i> >=N=鿗=<=ǟ==V<%<%;~;K==~=̾=鿗=B=+K=8D;K<%=H1{=== =={X=d===7!<>:ʜ:ʜ<=V=y=5==<~;Zd:d:d:d:Y:Y:Y:Y:Zd;1{<><%;1{:d:Y:d;Y;#d;l;Y:d:Zd9Y:ʜ:d:Y:d;5p;K<(X'<<ܪ=<$T<;#d:Zd:Y:ʜ;~ʜ;Zd:d:Y:d;K<1q;:d:Zd:Y:Y:p:d:d:Zd:p:Y:Y:Y:ʜ;K;K;5p:d:Y:Y:Y:Y:Y:Y:Y;Y<%<~;d:ʜ:Y:p;K<^I<<>;d:ʜ:Y:Y:d;~;l:d:Y:d;~<~;d;;d;~ ;~:Zd9Y:Y:Y:Y:Y:Zd:Y:Zd:Y:Y:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:Y:p:Zd:Y:Y:ʜ;;K;p;~;Y:d:Y:Zd:Y:d;~<><;:d:Zd:d;5p;5p;K<(X'<~;:d:Y:d;5p;Y;l;<^I;d;~ʜ;Zd:ʜ:Zd9Y:Y:Y:Y:d;Y;;d;Y:Zd:Y:Y:Y:Zd:d:Zd:Y:Y:Y:d:ʜ:d:Y:d;~ <><(X';:ʜ:Y:Y:d;d<><===~<є<%:d:Y:Y:Y:ʜ;~ <:d:Y:Y:ʜ;~ʜ;#d:Zd:Y;="4=p#=l=|;=5p<^I<(X';~ʜ:Y:p:d;5p;d:d:Y:Y<%:Y;~ʜ<><ܪ=~<$T<^I:d:Y:d;Y;~:d:Y;5p;d;d:d:Y:Y:Y:d:d:Zd:d:ʜ:ʜ:d:Y:Y:d:ʜ:ʜ:d:Y:d;Y;Y:d:Zd:d;~;~ ;d:d:Y:d;Y<:2='4=Jw=V=8D=B<;~ :ʜ:Y:Y<,='4=q$T=l=wx=.<1q:p:d:ʜ<:Y:Y:Y:Y:d;p:d:d;5p;l:d:Y:ʜ<(X'=~=7!=%=[==<=;:d:d:Zd:d:ʜ;5p:ʜ:Zd:Y:d:Y:Zd:Zd:Y;K<<ܪ<ä;Y:d:Zd:d;Zd<:d:d:d:Y<2=f=Y==n1=d=Y:d:Y<>='4=y==n=O==pS=;c<8r:ʜ:d:Y;d=5p=HM=q==bZ<5:Zd:Zd=m=pS= > =Z=0!=bZ=8r<<5p'4>F~>5$ ==f=@;&=4=>>.P>&Z> y=T= =5p<<2<^W=/+K==)=f=A^W5$ >ZR>GJ> /=^=`y=0!=> >,>">[==f=0N|<=<є<%=7!==M"=f=A^W >2L>%7a=-=y=$==|>|> 12>|=w=HM=B:ʜ:d:d:Y;5p=Mn=|>> >=V=<#d:Zd;K=Q=y=є=_== ==@;&<2<%<~;~ʜ:Y<~=[=o>'Ə>:Bf>0> ={X<^W;K<ܪ=B=>~>>z>8r=Y=u)=7!<<^I;:p;~ =|;=V>n>5$ >+x>=\<%>1(>.>=ܪ==V>Ǡ=D=m'>([>"_h> f=˛ ==@;&E=A=O=^=m<=;:d:d=u)=p#==^=a=[=Jw<=< :Zd:d;~ <8r<ܪ<7==[<%<$T=}l=>`y>pS>pS>==u)=P'="4pS>f>_C>k+>f==M"=AU>n>G>`>Y!>;/>%=˛ =M"=em=:2=A^W=====)=;l<є=>U>8>c,>0!>n> |i=O>u)>F3>t>_C>~>^}>,==SR=8r=h ==v=د=LZ=_=?=V<%av>+K>->e>:>=Z>r>F|>q>|>{>>X%>&=鿗=X'=8r=h ==E=ܪ==߂=p=V< ;=/>/>>$>A >`>==>$>F|>U>IT>,>==3=^I=8D=H1{=)==ǟ=2=޻= a;Y<@=?>&^>OMk>A#> ={X=`y=M"=s>> >u=йh==l=,<=<=8r=Mn=rG=kt`=5p<2;ʜ;~ʜ:d:d:d:d:ʜ:d:p9Y:d<^I=Y=Rn1=rG=h =2<~:ʜ:Y:Y:d:Y:ʜ=[=B=a=u)=<єK>%>Ǡ==h <~:Y:po>7>H>=>==~;1{>>>= =f=3<%ҥ>R>i->\>0H=I=Rn1<^W=H1{=!> >9>S.>Ph>3oB>o==8r=/+K<<;1{<^W=E>>ID>b>V>,==`y==8r=׌>">S.>n>i>F|>pS=˛ =pS=@;&<=%7a>9>/> f==2=Y=~=׌>>>IT>c~ >^}>;> =c,=f=0N|<2<%:d:Zd<= =,=LZ=I==E>%7a>7>0>r=ܙ==QK<<~:d:Zd="4=V=C<=<>;Zd< <$T=q$T=&v=i[=鿗=ܪ=h= ==;~ʜ:Zd:Zd;K<=~=HM<79>J>.=O=a7=f=!>>,>A>@>, >o==޻=l=?===}l=d=I={X=<엑:ʜ:Zd=.=鿗>d<>V>>>f>K=O>>M>~9>>4>nLZ>=c,> f=̾=@=y===o>B===rGn>d=>>> >V>C>r>:Bf>zr>y>~>>f>[Ѓ>n==+K==9=))>> >=鿗=Cw<ܪ:d=kt`>$>~>q?s>E>4>[>>=c,>z=>ذ>8>q>~>U>i=د=v=d=D=$T>J> >pS=t`=><ܪ=Q=>>Sv>x> >>9>>Cw>M>x@D>:>~9>]<>,=A=!====˛ >> 12>?= =|;>ycu>K>|i>F|=-={X=6P> 12>(>2ݪ>, >Y=ܪ={X==P'=+=== =?=c,==~=:d;5p=){X=2>?=LZ=q=`y=Q=7!=y==2=E=޻=h =){X;K:ʜ:d:Y:Y;~<є=5p=V=QK=+<ܪ<<(X';d:ʜ:Y:Zd:Zd:Y9Y;Y=u)=p#==={X=M"=Zd= <,;<~ > G>Y=AU=8r%>A#>Xf>IT>n=T=7!<(X'<= =_>z>4s>3&v>== G=H1{=~<ܪ,>a7>x>j>;/===H= f={a =O> a>Tk>oo>l]>IT>HM= u==H1{=%<1{;=~=̾>&>ZR>pI>f 9>9===;c=a=9>:>oW>6>:>b>+0!==d=bZ= a<є;~ :>2ݪ>F3>;/>=̾=`y=8D==>8D>i->>{>V >=O==IT<===;&={a <;=~=B=O>J>=c,>Q4>GW>(==Ə=h =~ >=O==QK<=:ʜ:Y:Y:Y<<ܪ=+=7!= a>R>i->C=o===>`>5$ >G>GJ>4?>u)=O=k==bZ=l=%=D==h= = f;5p;Y=h > >I>c,>>>{> =>>WC>E>%>>z=>F~>r= u={X=a=N|=ܪ> |i>r> l==l:Bf>D>N?qv>~>!>S.>>@̾>>?>x>~>>gy6>*U===p=O> |i>&>0H>">={X=8r:Y<~=>=>> ? ?>2>j>%7a>B>~>>>^2>>`>$= ==l=O> >+0!>4I>%>==~:Y;Y=Rn1>>&Q>ۇ>>>}>C> f>!>Tk>~9>>:>g0j>8D>~=̾=\= G=p=>r>i>`== ,>Y8>^2>>T_==?=O>>.P>9>4s>z==h=.=h =Jw=sj= =˛ =AU= =k}=$;~ Tc>:==p#=){X=D=޻==Y=;&=SR=y=QK=%<,;~:d:d;d 12>|=;&=h B>2E>C>96>%=h=+<<ܪ==F+>pS>.P>,>)=O= =7!>KRA>b>V>,==p#==p#=D>>K >i->f 9>A>Y=є==7!=B<;J>F~>^}>Qܙ>* =ܪ==7!==N>79>i>>~>Y!>:==`=Jw=~!>79>,> |i==QK=2==>2ݪ>av>{>>qm >ID>pS=;&=8r=7!<<>:d:d<=Y= u=엑=_=?=h <<==|;=ǟ>%>8D>GJ>?Z> =_=pS=A^WE===3=/+K |i>;/>J/>*U==\=`y={X=t`>J>,>.P>=~==~=V=A^W=`y= =v=h= ={a <ӑb:d;Zd=QK>|>h3>Z>>8>S.==2>>79>`>wx>t>Y!>/=l=I=M"=.==йh>> f=A==h <:2<%= >([>BB>=>#>@ > G>-v=>$1>\>^>M">P>|;o>IT>=D={X={X=>> >([>"=엑=<1{:Y<(X'=y>(>>Ţ>F>T>>=c,>o>%>[>:>> a>x@D>EY>=|={X= =|>Ǡ>">,SR>==<;d=H1{=>{>>>>֍>8>4>t=> l>5>Z>k->f>H> =鿗====N|=y6> >>=ǟ=|;<^I:Zd`>c5?>B>p>+x=^W=M"=q=LZ>>n>> =i[={X==H=D=8D=q$T===O==y=8r:ʜ:Zd==h ===q=\==X%=7!=Q<^W<8r<="4=Mn=h =h =8D:Y:d<~;Zd:Y:Zd:ʜ:d:Zd:d;Zd;l:d:Zd:Zd:d:d:Y:d<є<$T<̾>o>pS> ==5<ܪ;1{ > 12=y6={X=QK<7;5p >1(>&>`y==/+K(>=>:2>A =I=M"=8D<~ z>-O>">==7!<7=kt`= >>>=>W>QK>/====Mn=8r y>= u=y=Q<7=p#=>Y>8i>Ix>C>"=m=)=7!<ܪ<,:ʜr>n>HM== =H1{<$T;Y:Y:Y:Zd:Zd:Y:Zd:d;<%=$="4<$T l>=<=M"=Y<==Sb=a==g==AU==sj=*<=<~ ="4=Rn1=B= =sj=%<:d<==>%7a>d>ycu>R%e>8r=M"==H==> G>/t>1(>=e=E=u=@;&=QK=8r== u=i[=̾=u)=:d;d=;c=鿗>U>>V>)>@=̾>={X=>">QK>O>:>޻=,=M"=p#==-=ϖ7>=H>~=o=!=H1{;~ :Y<~=8D=>W>>q>>Mn=I==ܪ>">;c>M>K u>8i>)=ǟ=M"=sj=8r={X=>> 12=~==Rn1;;=[={X>">t>x>we>'Ə=D==!=>E>* >)2>=t`==}l=Mn=\==є=s==O=a="4;5p:Zd<:2=3=> 5>">=;&=h =+=h ={X=˛ ==~ = u={X=sj=/+K<~ <==<є=====;c<^I:Y:Y;K<2=8D=l=V=u)<==Rn1= =d====V=8D=%<ܪ<<ӑb<<$T<є<5p;Y:d;<=Y=\= =a=d=)=rG=A^W=+=[<<ܪ=8r="4='4= f;K:d:Y:Y:Y:ʜ==8D=K =5p=V<ܪ<%;5p:d;Y==pS=ä=ܪ=,==H1{b=e=,=M"=$<;~ ;Y:Y:d=[=.===1{==K <ܪ=~ʜ=;&>=H>%> ==d=7!<<~:ʜ:Y9Y l>b= u=y=Y=7!=)==Y==)=+<;d:d:d;~;K;Y;5p;Y;Y;Zd<^I=HM=Rn1=Zd=7!<̾><~;Y:Y:Y:Y:Y:Y:d;~ ;d;Y:Zd:Y9Y:d;~ <1q<~;Y:Y:Y:d:Zd:d<=+=:2= a<;K:Y:db>o=׌= = f<є=){X==H=0!==O==)=8D<̾><8r<є='4=a7==y=l=;~:ʜ<8r=8r=y6> >.>Y=D=;c=%=n=X'=O====E=l=u);5p<=sj=> >/>==;c=HM=q$T={X=s==A=Z==p#=k}<7= a=m= ==h=d=V`y=AU= =<=8D= =?=ǟ=O=c=HM=E<~ <<$T=@;&=[=:==[='4<:ʜ<<Y;1{;~;d;K;5p:Y:Zd:ʜ;~ =L>=[=Jw=5p=@=<є:d:Zd;5p;1{;Zd:d:Y;Zd<=2=A^W=.:d:ʜ:d:Y;K<1q;~ ;Y:Y;5p<(X';~ :d:d;5p:ʜ:Zd:Y:Y:Y:d:p:Y:Zd:Zd:Y:Zd;Zd<~<(X';ʜ:ʜ:Y:p;~ʜ;~:ʜ:Y:Y;1{;;Y:Y:Y9Y:Y;Zd<;~:d9Y:d;Zd;l;Y;#d;Zd;5p:ʜ:d;Zd<(X'=[=L>=l=em=8D<;;Zd:Y:Y:ʜ;d;;p:d:d;:d:d;d<5p;d:ʜ:Y:Y:Y:Y:Y:p:ʜ:ʜ:Zd:Y:ʜ;~;Zd:d:Y9Y:d:d:Zd:Y:Y:Zd:Y:Y:Zd:Y:d:d:Y:Y:d;~ʜ;:ʜ:Y;l<%=޻=q$T=pS==[=D<<;K<>:d:Zd:Y:p<2=[=  l=t`==3 l=={X=8D<8r<1q<ܪ=Rn1==D=є=!==0!=?=c,=є=X'=f:Y<%=@=sj=f=z==+<<~<~;~ ;Y:p:Y:Y:Zd:Y:p;~;;K:d:d;~ʜ;~ ;~ ;~:d:Zd:ʜ;;1{;5p:Zd:Y:d;~ʜ;:ʜ:Y:ʜ<<~;Zd:Y:Y:d;K;K;#d:Zd:Y<~=B=B=L>=@=+= ===M"=:2<>;K;1{<><ܪ=+=5p=[<8r;:Zd;l=޻=y===鿗==.=+< f>Ǡ=I={X=`y=Q=[=p#=p=Դ===|;==йh==Zd=u)=~=l=q=O=O=I={a <ܪ;Zd:Zd;d< ;K;Y:d:d<~=~=rG=0!=;&=c==z==HM;~:Y:Zd;5p;d;<%;:ʜ;~ʜ;K;5p:Y:Zd=V=9===`y= =SR=!=N|=k=l=E<=:ʜ:Y:Y:d 12=$T==7! >F3>[>?>=%=HM<ܪ=7!=d=AU>>u)> f=$T=ܪ=ܪ=2=߂===;5p:Zd:d;Y=Q= >:Bf>>w>t>* ==U=8D==߂>@>;/>F3><>&*>%>>:>>> =˛ =sj<1q:Y:d;5p=$=O>A>B>M">|;o>0=;&=em=\={X>>1y>Qܙ>\>Mn>8D>)$>,>6G<>5$ >t= = <9Y:Y:ʜ<=>>Y!>o&>Q>%={X=8D=@;&=a=鿗>>9>@̾>6G<>:>>A >)$>([>Y=s={a <:2:Zd<(X'=T=> l>>=2=`y<ܪ==l=v=ܪ>>==B==>|>=i[=a=@;Zd:Y9Y:p<8r=:2=f=HM=~=:2<<%<(X'<%=9h=|;=Y=Y==8r=3=HM=^=d=B=HM;d:p:d:d:Y:d<(X'<є<ܪ<ä<:2<~;Y:Y:Y:Zd:Y:Y:Y:d:d:d9Y9Y:d:d:d:p;Y<%<>;:ʜ:Zd:ʜ;Y:p:Zd:Zd:Y:p;K f> >%==?=`y=[= 5=sj=h=7=V==z=J>T">t>i->@>w=є=y= =د>q>F3>OMk>+=i[=p#pS>&> 12===[= =>;c>>>޻>q$T>79=r=!=>>HzG>>3>f 9>=d%> >=q={a =}l=X'=>7!>{>M">w>k->5$ >b=h=2>`>F|>}8>6>b>M"=^<:d<5==ä=ܪ=!=n="4=2=~ʜ=> >:2>V>Pp>2> = =)=pS=ܙ>>;c>C>%=AU=z=>'>@>>o="==p#=8D=7!==y6> ===[:Y<:2= =>ҥ>,SR>n>>pS>(>9>>=>4I>===l=em=8r=AU>,SR>J/>;c>=;~ <=4> f>4>?Z>5l> a>f>,SR>9>;>+> y=йh===h =M"=>=c,>f 9>Tk>r=">/>!> >>`>>r>K=ǟ=d=rG=B===}l=1{>n>C>8D=={a <~:d=){X=======D==v=/=h =7!= f<==Jw=8D;Y:Y:d<~ >GJ>`y>@̾>==+<==8D=a=>8r>> ===˛ =йh=i[==f=8D<~:Y:d;1{=Jw>^>t>SR>>a>W==y==p> >@̾>kt`>~9>wx>Y!>9>0H>9>:>* >=4<=:Y9Y:Y:d<5p= G>:Bf>V>睜>j>F+>>=?=q>b>F3>q>>>q>BB>a>qm >{>|;o>d>0=ܪ=QK;Y:Zd:d<=SR>F|>>FO?vL>|>BB>,=^W=;&>>`>ذ>h>Sv>ŢM>uM>>j>w>>{>@̾==n;d:Y:d<5p=Y>%7a>>Ѹ3>s>>=H>޻==I> l>K u>4>>>O>>>{>a>I>g0j>/=i[=QK;:Zd:Y;l=2=,>:Bf>_C>>}>/= u={a = =|>P>F|>j>y >nLZ>V(>A>A>G>F|>.>K=k=~<~;Zd:Y:Y<>=Mn=!=A>=l=h=em<==sj=?=>> 5>===>b==,=='4<>;l:Zd:Y:d;K;;p:d:d;d%> f=_==;c޻>&^>=,=d===>9>>o>w>i->,=V=Ə==LZ>2ݪ>f>pۈ>C==5$ >|>%>y >,==йh=A>:2>k}>G`>">q> >'>GW> >w>H1{>>ͽ><>c>i-=_=8D;=%=>k-> >db>>ZR> =>>f>a> ???w>>^W>E>:Bf>9>d>?b? |i>E>^2> =<%==엑>h3>3>h>d=>R>=t`>>b>!>ֲ? ? >~>;&>^>>=>;/>>U?b? >~>>$=y<>, >x@D>Y8>hg>P==h=LZ>3oB>>c>ٮ>e>c,>)>S.>">'>J>k}>+p>>>qm =l=P';~:Zd= =v>u>r=o=a=V=YAU==>!>R>o&>nLZ>R>,>==!=>.P>_>mq>F~>u= <:Zd:Y<ܪ=8r<$T<<%:ʜ:Y:Y:Y:Y:Y;1{<2=2=V=em=l==H=.= G=0!== ==V=B<<,<=){X=Sb=8D>>* >%>r====;c=E=X'=G>'>Ǡ=!=HM:Zd:p= 5=h>J>A#>S.>J>A>EM>\>t>~9>o&>K > ==?=HM=h>@>k->x>>8D=<;Zd={a >>Q>_C>%>>>}>~9>3>ذ>BB>>n>9> =O=>`y>bZ> >uq><[>4>=C:d;~= >>i->m>^2>>v^>4>v^>>BB>x>f>0>=O=ǟ>%>}>U>m>X>?>(=rG;5p:d=p#>>U>}>>v^>~9>n>sj>~>{>av>6G<> =O==!>K>^}> >N>>>=Mn:ʜ@>Luq>`>UF+>9>* >+>.>$> =AU====l=E>M">hg>>>=c,=c,<ܪ:Zd:ʜ=0N|=q=엑>`y=LZ=˛ ====q=sj===2=+=HM=Y=8D=HM=B>>=D=5p;;5p<ӑb=9h=V=;c=k}=<=;Y:d:d;Y:d:Y; =$T===<2A>>ذ>~9>,==m=K = =>>9>ID>G>4s>> Y8>%>">`==޻<7:Zd:Y:d<~=Cw>A>!>>>y>>@=!=N|=~>@>>>a>>>Y8>pۈ>z=>~9>j>9==sj;d:Zd:d<7=V>->??!*?b>ϖ7>Z==鿗>2E>q>>b>>6>>>L>>,>q>t>"=>d=??#1?)$?!|>>q$T> >8r>GW>>I>m? ? ? >Z>w>[>̾>>>2ݪ=hF>s+?&Q?C? 4>I>U=l=>:2>>_>N?P?>}>q>)>>>t><>pI>q={X<;~:Y:Y<5p=pS>&>v>Ѹ>b>Ȟ>:>J==h>.>R>/>O>U>X>SR>N>3>|i>>l]>4s=߂=sj<є<;5p9Y:d<엑=^>>Pp>i->GW> /==H1{=V==9>([>A>R>K><>/>.>/>(>,\=̾>=[=u)<==n=d=D==h=h==2=D={X=3=7!<^W<=u)= a="4=$=&=@=[<>;Zd:d<~;K:d:Y:Y;d;5p:Zd~>:Bf>T">G>* == =rG=l=4=->'>"==d=+0>~>>ycu>0H=;=_>b>79>>Sv>Re>>U>>C >Ǡ>`y>79>Ǡ>>W>c>GW=̾="4;~ :Y:d=h >>>>װ>>Ѹ3>!>=c,>ҥ>9>>3??$?%I?J>nU>{X>hg>Y!>E>??v? d>>:2=k}Q>6P?b? g> >є>f>8i>^}>J??(&??,w?+'>ۇ>z>->I??.?9U?(&?->=˛ <ä:Y;~ʜ=d>Luq>̾>? !j>> k>^}>2L>Y!>?)?$?8?:?*V?b><>A >NX> ??0H?; ?*#?O{>j=AU<%:Y:Zd=`y>>>>⣧>I>>>#d> >0>:>Ϻ??ذ?v?Q>(>q>{>>j><>"?HM? 8?Y>Ҷ>Tk= >j>I>_>r=2=I=s>* >pI>̚>>6P>&v>>X%>d=>>A>->U>Դ>p>i-==8D:ʜ<1q=]=E=={X=f="4=+=p#=v=엑>>">%>z>= u=k= =?=>z>$1> =l=/+K;d:Y:ʜ;;;~ʜ;K="4="4=@=$=4?=4?=Qn>/>,>&>/+K>A#>WX>`>U>8D>%=ϖ7===9>|>>=>av>Mn>%=)<5p:Y<(X'=> f>U>>pS>>>6>N>/>{X>es>|>Ix>%=I=ǟ> >n>t>Ѹ3>Z>.>J=V;5p=c,>P>>1{>6P>ן>t>c,>v>͘>>A >n>3&v> 12>>F3>,>C? {4?>ѓ>hg=<:2:Y<7=йh>R>>,>`>>/>̾>W>L6>Mk>>>k+>0>`>)>`y>?;??ͽ>(>Y8=O=c,>!>a>Mk>w>6>>>>J>@>{>>=>%=>>EM>q>? h>ݩ>z==є<^I:ʜ={a > >^}>>>>7>{>>y >{>>n>Mn>"===D=̾> >q>c,>6u>X>>.=8r;~<5=k}>u>1y>A>(>>%> =e=D=\=8r=sj=h =l=d>>GW>ycu>k->+=<1{:Y:Y;K;d;~ :Y:Y:Y:Y:Y:Y:Y;K<8r<2<<#d;#d:p:d:d:p:Zd;<%< ;1{:d:Zd;~ʜ>)=B=SR=@;&<%=8D=y=E====4==={X==3=2<:2:Y:Y=B=s>b>̚>>>79==|;=h ==y6>&Z>R>o&>pI>Y!>2ݪ>f>(>3&v>* > l=p=+:ʜ:Y<(X'=>m))> >{X>,=;&=> 5>Vi[>E>W>5?>0j>N>>>M">>j>[>=a<^I:Y:d='4>)>=?s?-?4 ?"h>ܽ>z=>>>BS>ذ>h&???? 4>j>>ͽ>Sv> k>>A=O=8r:Y:Y:d=Rn1>+0!>-??94?@MY?+ ?>->J>>`>R>LZ?Y? O?"??% >j>y6>_>y>q>S.=V=){X:ʜ:d=5p>r>,? .?*V?1{?u;>q>{>>Y> 12>Q4>>ݩ?Zn???>a >>װ>q>h>`>=c,= u="4;:Zd9Y_>̙?M? >>/>4s==O>>>nLZ>7a>Ѹ3>(>">>_>S>`>>>S.> 12= G=A^W>f> G>~>0=,===̾>%>A>k->>q>we>^}>Rn1>M >C>)$==^=8D<1{<><;l:ʜ;~<(X'<8ru)> >u)=د=={X=!=>:>Z>{>>q>Ns> =AU=Ə=a=Y> >3oB>9>==Mn<^W<%:d:Zd="4=>b>>>^2>f>n> >>Zd>SR>*_?t?\>&>>~>1(>!>X>->ݩ>))>w>z==t`=H1{ID>?? D>>;&>oW>=>[Ѓ>R?z?$/?8?;w?*V?>>m>>6?:?&?/?m>(>i-=D>(?? a?&Q>N>%>_>z>$/??< b?OMk?Q8?F!?'?E>>y>(?$o0?F3?M;???>X'>|=8r:Zd<^I=Y>>}>?J??> >,\>WC>>̙??7?L?O?C?&+?>U>!>#?&Z?GI?Oq?B8?}>r> 12=Q:Y;Zd=pS>?Z>i7>F? >j>>W>+0!>N>q>?~?+ ?0?$?@>v>4>!>I???,A?7?'Ə>h>4=dM >> >)>EM=A=د> >E>>>>>>>> a>K u>=c,>w>4>?s>d>>n=;~:Y<ܪ==> 12=鿗={X=p#=kt`=pS=ǟ> y>,>?Z>IT>EY>/> =˛ =2=LZ>(>Vi[>g0j>C[>b=%>9>G>D6P>A>X>lN>q>b>=>=AU=d==>>_>>o&>,=I<%;Y:Y:Y<є= > a>pI>>V>`>BB>>>!>> > a>ZR>!=G=鿗>(> a>q>LZ>Z>3>79= <>:d:Y='4=>Y!>c>Mk>B>>йh>˛ >!>v>7>>T>a>A>>>l]>͘? ??>>w=o&> k> >~>FO>S>>\>->1>j>SR>>BS>>>,>t>-??([?#'?l>U> y=8r:d<==AU>Y> >AU>*_>Re>׌>w> >>ǟ>MG>v^>X>$> >@>oW>F+?b? 8?f?>?>`y<ܪ:Zd;=k}>n>d>>^>4>}> G>>>f>pI>?>%=2=O=鿗>.>>?<>m>>c5?=<%==h>ҥ>UF+>n>j>T">?>8>1(> >E==:=y=B= = >(>>>E>b==8D:Zd:d=[== u=-=鿗=د==D=SR=y=@;&=~<ܪ<7 l>`y==C;~ʜ:p;;l<=.=bZ==E=!===5= ==9=l=*<(X':Y:Y<%=O>T">k}>>|;o>f={X=Sb=;c==6P>>@̾>f 9>l]>X>3oB>>%>/>&>==){X:ʜ<~=>i->h&?9? >j>>==SR=LZ>A>w>>\>3>l>q>ذ>޻>&Q>6>Y!>M"=d>?u)?+ ?1MG?d=>x>c5?==>2ݪ>>N??K?HM?>>>q>ɝx>">>A== f:Zd:Zd=H1{>0>??8?>?)>^>:> >>K>9>v??!?$?C? >>1>;J>I>A >T"=鿗=2:ʜ:Y=){X>J>?Q?*?0r??>鿗>o&>>=>@>k}>X?n??Tu?_U?>>۬>Mk>jl>.>=c,=O="4;K:Yk->?? U>j>̚>.==>>b>>ܙ>Q>F>b>v>&v>><>7>R> =aNs>)>>>/=Y=n=h => l>=`>lN>3>>>k->Y!>Ph>A>(=B={X=7!<<%;5p:Y;~=Q=M"=˛ =-=,=HM=$<>|>=H=l=LZ==;&=d=p#=~;5p:ʜ;~ <><~;Y:Y;~ʜ=QK=̾>>!<7>Y=ܪ=?==D=n1>>EM>aB>`y>C>Cw=ܪ==\=̾>>!>%7a>=^=7!<є<1q:ʜ:d=5p=I>]L>> k>̚>i->#d> 12>J>Mn>ҥ>T>s>>3>>>}>5$ >n>KRA>>n>݅L>>bZ==7!<^I:ʜ<>= >C>db>;? 3>>>t>>]>U>>i?@?0?4I?&? a>܆>ذ>z>?I? 8?(׍?>\>WX=0!~9>b??*_>G>_>|;o>Y?]?2^D?IBx?MO?A?%-?>I>J> ?P??Z?H?8?b>?=LZ<ܪ:Zdz=>x?_U?A ?>>%>V(>wx>]? i?,?EƳ?J?>)?%?>,>n>(?"g?C?L??<.?>>u96>&v>E?E>H>L>[>* >F|>)>?)?$J?)?!r? >|>>%>J? g?)W?3C?$\>d>_C=<8r<=̾>F|>>>>GJ>=AU>>9>>P>>5?>ڈ>^>>R>BS>|;o>>?b>3>@>:={a ;5p:Zd<%=a=o> ==?==p#=M"==A>J>/>=>A>2E> ==6P>|>3&v>av>q>OMk> =5<:29Y:Y;1{=AU=׌=|=I= =7!< |i>.P>=`>9>1y>79>F~>Y!>\>GW>(>u=c,= =3=D>>Ix>m>Z>C={X<;d:d:Y:Y<2=X'>>d<>%>a>>>%>q> >>>|;o>E>=I=m> a>>X>v>H>>* =fM>@>I>؋W>>I>ˉ>->!>>>>oW>5$ >Y>i>c5?>^W???v^> >=د<ܪ;p:Zd:Y=.=LZ>em>q>>I>q>^{>F+>ي!>_>#>¥>>sj>8>>,>>?V?#K???>^2> 12=Q;Zd:Y<엑=̾>>Q>>Դ>Re>>k>W>}>J>^>~>t>Ix>> l>>j>͘? U? s?G>=>><:d;~ =Y>>|;o>>>4>>>>)>6>i->9> 12=AU=Y=<>,>&Q>^{?>x>ŢM>em=<><==D>>V(>rQ>pI>^I>GW>=c,>7!>"_h>B=̾=%==kt`=8r=>* >>>>f>o=QK:Y:d==d=AU>K>==AU=|==Cw=\=~<> 12= u=c~ ;~ʜ:d;Y:Zd;5p<%>]<>g0j>6G<=ܪ=u=8r<2==[=1{>w>.>:>/t>)>b>~>`>Ǡ=׌=޻<%:Y;Zd=y>5>~>8> >?>_=ӑb==H=n={X> >V >>>;&>&v>pS>{>>vG>x@D>b>7!==;dv^>FO?8??(>O>%=E=>=H>WC>̚>`?d?>>ݩ>a>q>0!>>o&>$\=w>??!?%m?)>uq>EM=D=>z>{>>??^ ? B0>x>>Sv>`>2>z>4I=<=:Y<1{=>V>E??{F?>ן>8D=̾=>r>lN>J>b? ? ?M>N>O>>>E>>nLZ>n=I<ܪ:d;d=q>A#> P> >q>I>{>>=%= =>2ݪ>d>>Е>ܪ>N>&v>>>>g0j>3oB=g=,>k->{>>Ns> ==u)=Q==˛ >>F3>i->wx>k->U>@>6G<>&> =O=f<$T;~ :d:Y:d<є=p#====QK< :ʜ;~<%;Zd:Zd:Y:Zd;l<><~ʜ<2<ä<<<>;K:Y<>=8D=d=ۇ=e=B=!=pS= ===O> l>>">`=== =[= G===F+=X'=C<ӑb%7a>q>>vG>8D>Ǡ=m=>>\b>o>s>>U>f>K>>>C>X>.>ذ>t>r=/<%<%:d;=p#>Y>>>|>ͽ>>F|>d=>,>k->t>? b??Ǡ>+>D>rQ>S.>:>W>ʜ?:>#>>%=`y<~:Zd<#d=)>:Bf>>{?q>{>db>o&>8D>F~>,\>܆?>?$?*#?!`? >5?>>>$ ?b?P?'Ə?>>Z=<Y9Y;=f>7!>y>E?_C>N>!>hg>/+K>A>>c? 4? 8?')?P? B0>T>Z>>? ?#1?+BT?w>*_>o&=D< :d=8D>>a>ˉ>X>_>~>2ݪ> >t>X>>X?? }?r>s+>e>B>sN>>>V?w??Zn>8>F3=;<>= >%>[>z=>[Ѓ>ҥ="=!=˛ > 12>8D>jd>>;>c>!>g0j>.>%7a>R>pS>>p>$ >n=="4:p9Y<5p=bZ=D=йh===P'=8D=l=HM=h=i[=j> >> y=7===AU>J>=c,>GW>,=ܪ=V;~ ;Y<2=8r=$=:2=V=h =n=Sb=){X<ܪ<^W="4=u=k=d=8r="4<2=~=%=[<ܪE>> > l> >f>* >([>pS=o==y=QK=K ==ܪ>">/t>n=Z=[4I>c5?>y >oW>c5?>c5?>vG><>>i>=>===>>C> a>}>BB>`==QK">wx>>MG>0!>>>>^2> >~>pS>o&>9> =->>7!>>H>FO>v>>F3=SR<+K;K:p<є=h>79>`>>Q > >6>J>&v>">uM>E>y>=c,>Y=x>>K u> >? 7?E>H>uhK=<;5p:Y<:2=d>(>t>D>W>8>&v>`>^2>4>z><>T">n==ܪ>b>;c>?>3?NF>>->n=йhRn1>/>> >,\>>{>>q>`>=c,>r=i[=?=d=D> >hg>r>l>,>>9=4;1{<8r=>o>9>U>WX>F3>4I>&>@> 12=د=d=h =7!=u)=5p=@>>M>{>t>:=ܪ=@:Y<$T= = =g=o=Z= u=c=q=`=D<1{;d;Y:d:db>=O= = f<%:d;~GJ>~>>Y>=3=8r>8D>g0j>}8>o&>GW>,>.>.P>@==<=:Y;K=Y>3&v>q>Е>)>0!>Ix==V=.=)>>KRA>>$ >6P>>A >>y >pI>X%>+=I=h ;l<(X'=E>R> k>N>$T>1{>q==sj=V=!>n>vG>0!>ӵ>>>>A >>4>nLZ>;c=G=<~;d=q>;/>d>ֲ(>`>>[Ѓ=Դ=Zd=A^W=E>>i->=l>ŢM>k>Sv>>V>>{>[>,SR==p#;:Zd=5p=>\>M">>t>J=a=<==8r=>/>k+>>>o>>`>Qܙ>?>%=x==.:ʜ;~ =h =i[>pS>f==d=8r;d;ʜ<===H=Y> />* >5$ >/>n>r>=t`==M"="4;d:Y;d==P'=]='4<^I:d;~;~ʜ:Y:d;~;d;Zd:Zd:Zd;Y;~;Y;~ʜ;~ʜ;~ʜ:ʜ:Zd:Zd:Zd:Y:Zd:p:Y;=߂=E=9={X==LZ>">2ݪ>=>=c,>%-=l==?==A>J>=s=[>l]>>pۈ>6G<>`y=йh=I>>?`>|;o>>z#>`>>^>n>>%>`>P>>z=>=yID>>,>>aB>=>>,>k->>w>ܪ>i[>>NX>Qܙ>:Bf>`>q>9>_>>k+=ܪ=B:Zd:d=8r=̾>EM>>z#>k}>[>=V=A>&Z>av>>#> >G`>>>Y!>C>pۈ> >`>N>̙><>='4:Zd%>]<>|;o>aB>([=2=D=Y>>* >Y!>7=>>̚>>lN>3&v>)2>Ph>,\>>I>$>`]F=AU<$T:Y:d<$T=^=>%>>=1{==q$T=f=0!=˛ =>r>.P>=c,>79>޻=t`=>>C[>q>\5>Z>Y= <%:d<є=`y= =[==<ܪ<==7!=`y=B=M"=X'=?==HM==u=d=">> |i=_=޻<$T:ʜ:Y;5p< <:ʜ:Y:d;d<^I:d:d;~;d;~ <~<~;d;5p:p;Y>">n>>>+0!>5$ >/>=鿗=l= == =E>|>.P>C>79>=><<%:ʜ:Zd;Y=8D= u>&>Xf>n>i->Y!>Vi[>`>h3>a7>C>z=V== ==>79>}>K>>Mn=LZ=QKA^W>~9>v^>f>>w>z=>{>>nLZ>N>"===?=> y>T"> G>!>SR>~ʜ>=f<:2:d9Y:Y=(X'=AU>;c>{>>>d>>o&>iv>f 9>V(>79> =˛ == G=v=>F|>%>~>>{>E=f;:Y<={X>pS>K u>k+>k->Y!>EM>9>3&v> >B== =bZ=8D=^I=>>^>>>F3==A^W:d;5p=C=̾> >">(>t> =r=-=Y=a=Rn1<%<(X';K<~=){X={X>`y>">==>=ǟ==Y<:Y:d<8r=p#==G> l>=йh=c,=є===8r<ʜ:d:Y<ܪ=I> G>K u>OMk>n=c=V>EM>[Ѓ>Q4>1(>P>>=B=c=p#<(X':p=@=йh>8i>o&>rG>=c,=ܪ=m<;<ܪ=:> l>=>n>>{>>WX>8i>.>$>="=y<:Y<7=є>&>WX>Y!>+0!=Y=C<5p;1{<ܪ=>>8i>av>we>l]>K >2ݪ>%>>`y=;&=rG>'=B=3<^W:d:d >, >9>2ݪ>t> y=l=I=2=f= f;5p:Y==?=a=B=A^W<:2 >)> l=ܪ===!=ϖ7=N=o==8D;~ :Y<(X'=8D=!> l>ҥ>=׌=d=l=5={X= =>J>4s>@̾>79>=Q0=د=>>96>;/>pS=<엑:Zd;K="4=>u>z> ="=q=}l=B=d=є=g>%>/>A^W>:Bf>==m>>,>Pp>W>0H="=7!:d:Zd<== =鿗=AU==p#=8D=H1{={a =%=E=ӑb>>>r==,==>>9>=`>=̾=q:d:ʜ<ܪ=rG=HM=u)=YAU=<<%=Y=7!=^I=====4==f=X'=i[>>>="=5<~;~:d:Y:Y;1{<=k}=8D=7!=Y<ä<(X';Zd:d:Y:Y:d;K<~ʜ<̾><ä=B=鿗==D==/+K=8r=[=Y===޻==,== =Y<>:ʜ:Zd;5p=2=E=>`>> y> >)>>=Q0=={a =IT=D=V= =Y>Ǡ>> =,=u<;l:Zd;~=bZ=د>E>2E>3&v>+0!>#9>">"4>J>?=h=~=Zd=K =h =9=m>>96>.>=d<$T;~ʜ:Y;Y=V=AU>t>7>9>/>#d>f>HM> y=_==`y=){X=u)=5p=y=s>>4s>,>=-<~ :ʜ:p="4=!>>> >J> >b=o=s={X=em<~ <:2; f>Ǡ=O=< ;~;~ <<2<< :ʜ:Y:Y;K=bZ=D=2=~=N==߂=i[=;&==8D<ܪ=H1{=y=d==h <엑;K:Y<~=Mn==O=I=i[===E=>=h <ܪ;~ʜ:p<~<ܪ=9h=n=m=5p<;Zd;5p=~=[={X==d=y=|;=p#=E= f=B=E="4<ܪ<<<$T;5p:Y:Zd<>=%=p#==N|= =йh=̾>=!=3=Q<~;5p;K<<%;Y:Y:Y:Zd:ʜ;Y:Y:Y:Y:Y:Y:d:d:Zd:Zd:d:ʜ:ʜ:Y:Y:p:d:d:d:Y:Y:Zd:Zd:Zd9Y:Y:Zd:d:d:d:Y:d;<~<Y<;~ ;K:ʜ:Y:Y:d:d:d;Zd< <8r<<^W<<8r;;Zd:d:d:d:Y:Y:d;Zd;Y:Zd9Y:p:d:Y:Y;Y;~ʜ;Y:Y:Y;5p<>=p=[=Y< :d:d:ʜ;d<^I<><= f=+=8D=){X<<;;Y:Y:Y:Y:Y:Zd:d:ʜ;K=~<8r;~ ;~;5p:d:Y:Y:ʜ;~;#d:Zd:Y;;Y;Y:d:d;<<~ <є<~:Y:Zd;~ <8r<=8D===h=Y==== a:d<><$T=P'= === =c,==8r=<%:Zd:Y;~ ==Rn1=rG=bZ=@<#d9Y;Zd<8r=1q<<^I;K;~ʜ;Y:d:Y:d;d<(X'<:d:Zd;K=Rn1=[=%===:2<ܪ<5p;d;Zd:d;~ʜ;;Zd=a= =h ="4<є;5p:Y:Y:Y:p:p:Y:Zd:d:p:Y9Y:d;Y:ʜ:Y:Y:ʜ;<>;~ :d:Zd:d;Zd<><==Q<$T:ʜ;K=){X=y=d==9h<%:d<1q<==7!==='4<;~:Y:Y:Zd9Y<ܪ=k}= f<;lw>==V=8r=q$T==G> > l=={X=`y<엑f>r=йh= ="4=}l==9> >>=׌==T==?=7!;5p:d<%===pS====O<ܪ<;~ <;~:Zd;Zd=A^W=> l>">`=йh=q$T<~:db=A=O==D<ܪ<^I`y>> |i=D=h <Y;~<%=~ʜ=>E>pS>%=LZ=+K=n=~;1{:Zd:Y<=f==Z=O=a=Q;~;`> 5===[<$T<%;~ʜ:d;Zd<7=bZ==rG=Y;:Zd:d;l:d:p;Y;~ ;d:ʜ:Y<8r=8r=5p=*<1{;K:ʜ=8D=Y>n>;c>&Z=ܪ=l=]= =B>:>5l>4> G=鿗=SR=p#=2=<=8D=l==M"=X%<2:d;K=l>)>hS>l>w>/t=O=4=ܪ>>>F3>Y!>U>9>w=6P=y=Jw=){X=2===== =%;Zd;~ʜ=[> G>ycu>o>l>D6P=LZ=I=> >EM>WX>QK>5$ > f=̾=~=B="4=5p=[=q==!= =HM;Zd:Y=(X'=g>GJ>t>em>(=,=M"=h>>!>/t>)$>==a=QK=@<ܪ<==Rn1=)===em<є:p;~ʜ=`y=ܪ>> =O==,=\={X=O=I==E=l=7!<ܪ;:d:Y:Y:Y:Zd:ʜ:d:Zd:YpS>(>=t`= :>="==8D<ܪ>/>A#>79>`=+K<=<>=u)=k}=))> >9>6G<>P==Y=;c=<ܪ+x>1y> f=SR=[>;c>T">Luq>,=j=4=`y=u)o>P> ="= Tc>79>H>B>!===E<7r> >==q=bZ= y==)=="4==Y>>>> f="==z==<є= f<==.=l=3==7!>l>~>o&>"=2==m>$>Luq>em>aB>F|>t=I=^==V=`y=pS=2=̾>=̾==/+K;K==йh>\O>~>;&>,>t>%=I>޻>HzG>y >4>>j>9>== =|;=y==鿗>b==2=mh3>&v>>c,>~>$=>>IT>vG>t>>f 9>5$ >=!=y=u= =c=o>==є=p#7>O>SR>>f> =ǟ=N>(>HzG>[>U>9>%=O==h ===em===ܪ=D=d=8D;d:Y<$T=c,>,>V >GJ>==8r=k=>o>)> /=== =Jw=~<2<$T=QK=y== =E<>;~ :ʜ:Y:Y;Y!>5$ >(>=9Ǡ>@>>=!=em=~<ܪ<1{>=c,>Ph>B>E==4?<=A^W=h>>=>Y!>Tk>2ݪ>b==V="4=B f>8i>IT>=>==8D<==8r=>+>[Ѓ>vG>n>GJ>%==rG=2<=<;K<5p=q$T=йh>>%7a>z==HM=Q<===_>([>U>k->d<>=c,>Ǡ==`y=Y<<%:d:d |i>.>=>7!>=J===8r=5p="4<2;d:ʜ;d%=V==8r=Rn1=+=){X=V=y=f=/=K 4s>:>k}>F>2ݪ=6P==>, >Tk>k->i>O>&Z=o==5=rG=l===-==0!=@;&;:d=;c=B>vG> k>j>/>>"=> G>Pp>~9>x>3>sj>A^W> == G= =^=ܙ>>u)>>=,=8r>ˉ>>/>[>,>?>@>O>|;o>|i> >n>=c,> f=;&== =Ə=ۇ> >> l=O=<9Y<ܪ=>IT>d=>>$>qm >r=ϖ7>b>,>Ph>b>^}>A#> G=߂=Ə==h =y==鿗=A=V=l=V<%;5p=7!=AU>;/>f 9>U>z=?= =X'=_> >>pS>=,=9=m='4<==,=B=X'=E=\=p#<ܪ<޻<>;:d:Zd:Y:Zd:Y:Y;Zd<$T;~:Zd:Y;Y:ʜ:Zd9Y:Y:d;~ <<ä<1{<8r;1{:Y:ʜ;~ <(X'<%;~ʜ:Zd:d<~>#9>== <̾>;Zd>>J=ʜ==QK<7<є:d`y>.>=>3oB> =E=+<8r=:2=D>>V(>Ph>/t=~=:=8D= 5<ܪ<;~ʜ<^W==A>* >:Bf>/t> 5==7!<$T==ܪ>)$>Y!>pۈ>kt`>C> ==Rn1=k}<%o>J> =׌= =[%->Qܙ>h3>`>9>=d=8Do>, >:Bf>2E>==`y<$T:ʜ:Y:Y:Zd:Y:Y:Y9Y:Y:ʜ|> 12=I= =Y="4={a ==I>> f===M"=\=0N|=~=HM=H1{==H= ==H=+<5p:Y:Y<=>>fV>>_>%==޻=ǟ>`>2ݪ>F3>F~>5$ >Y= u=޻=kt`=V=={X=1{=AU==="4;Zd:d=0N|=>V(>?>t>?>X%==>=H>0H>X>nLZ>l]>U>+x===l=B=a=˛ >b> l==є=h <(X':d=2=AU>\>>^>$>k-> Y8=D>>1(>WX>lN>jQ0>Ph>'Ə==0!=~=B=d=>> ==̾=n<:2:Y<%=>*>>>>A#=~ ==O>%>2ݪ>A^W>?>,> = ==bZ=Rn1===߂==F+=X'=8D;K;Y="4=?>J>8i>* =))==em=5==))>>:=y6==u)=QK=B<ܪ=/+K==d= ==V<:Zd:ʜ<=C=f==H1{=[<^W=Q="4<=<ܪ=5p=h =8r=B=[=@<ä<ܪ=޻=k}<$T:p:Y:ʜ;d<><>;1{:d:Y;<b=A= u= =~>> |i=O=[<%<~>2ݪ>.>u)==em<ܪ<>>= u=~<7 y>5$ >G>A> === l>.>?>8i>pS=Y=a7 12>> =ܪ=u)<=<:2;~ʜ:Zd;5p<5p<f>,SR>=!=Jw=8D==h=-> l>w>|== =8D=B=[=8D===v= G=Rn1Y>Ph>i>GW>u=pS==v=->>(>, >i===h =+=7!={a = =T="==.=B:d:d<^W=>>V(>rQ>V(>`=d=[=+K=엑>pS>([>*U>E===l=/+K=8D==='=ܪ=ä==Q:ʜ:Zd"4>=>* =_=[=V= ==> > =l=Y=M"=D=[=Q=\= G=h=є==rG<^W:Zd:d<=QK== u==[=$<$T=1q=[==;&===޻=Rn1<=<%;~ʜ:p:Y:Y:Y9Y:d<~<=Jw=}l==H=l=C="4<=<^I<<<<=Y= f===rG===?=;&=I=l<=;Y:p:Zd:d:d:d:d:d:Zd:d<%==@;&=QK=+<;Y:Y:d;;K:d:Y:Y;~;~ ;1{:d:Zd=$=h =y= ==:2;~ ;Y:Y9Y:d;5p<%<̾>=$=5p=@<$T<8r;:Y:d<<%;#d:Y:Y:Y:d;~ ;~:Y:d;Y;Y:Y:Y:Y:Y:p:ʜ;5p:d:Y:ʜ;<%;K:d:Y:Y;~:ʜ:Y:Y;<ܪ=5p===){X<1{<:Zd;~<2="4=7!=HM:ʜ:p;d<ӑb===|;=B=em="4<1{=<;<;d:Y:Y:Zd:Y:Y;<%;~ ;l:d:Y;Y<#d;1{;Y;5p:d:Y:Zd:p:Y:Zd:Y9Y:d;~ʜ;p:ʜ:Zd:Y:Zd:p:Y:Y:Zd:Zd:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Zd:Zd:Y:d;Y:d:Y:d;<>;:d:d:d:Y;Y;Y;<^W=(X'=;c=7!=~;:Y:Y;Y;K;p:d:Y:d:d:d:Y:Zd:d:d:Y:Y:Y:Zd:d:d:d:d:d:Y:Y:d;~ʜ;1{;Y;l;Y:p:ʜ<~<:2;Zd:Zd9Y:Y:Y:Y;<^I<~;5p:Y:Y:p:Y:d:d:d:Y:Y:Y:Y:Zd:p:Y:p:Y:p;5p;;~:d:ʜ;~ ;;l:Zd9Y:ʜ<%;~ <<2=8D=sj=h =Y;~ :d<$T=`y=u=D=Y=){X=V=h =Jw=@<~;~;Zd;H1{:d:d:d;~ʜ<><8r<2<>;:Zd:Zd;d:d:Y:Zd<>=B=Jw=l=K <;~ :Y:Y:ʜ<1q<^W=Q=+=8D=.<=<><>;d;5p:Y:Y;K >6>>=AU=|;>R>i->Jw>.=d===5p=l=> y>%>.>$\>%>Ǡ> f>Y>`=G==QK<9Y:Zd:d>Y!>oW>T_>=SR=Rn1=Sb=9=g>>8i>>]>4?>n>>>$>!> =D={a />D6P>/+K===7!=A^W==йh> > >'Ə>> > 5>Y>z>%>=c=`y<~;Zd=~=pS=ϖ7==i[=k=7!;~:d:d;Y<~;~ :d:Zd:Zd9Y:Y:d;d;Zd9Y:ʜ<^I<ܪ<ܪ==|=Y="4<2<^W=8D=%=?=q= =2`y>1y>GJ>=>==k=a7=em=I=\5>J>=={X=5p<~:Y===l> =y6==h =l=k}=F+>"_h>\>{>>o&>GW>HM=O=HM==y6>"4>F|>Ph>.=I==H<8r:Yo=AU=pS=Mn=YAU==د>!>X%>u>l]>F~>="=HM=k}=>!>F3>Q>0H=y6= |>(>:>79>== =`y=\=q=>J>>=?==<9Y<#d<8r l>%>==#> >>P> ==!==H1{=+=H1{=q> />.>>=د=`y;K<==鿗> G>&>>>> >>pS>=O=4={a ===7!=p#=Y> >EY>96==8r<5p;5p=f=O> >> =y6=йh=g==V==f=p#=8D=k}==U=> y>-v>n=AU=em<~<8r;:ʜ:Zd:ʜA>>y><>5l=Y==h ==>,>K >[>R%e>9>n>>!>"4>Y=i[=y>t>>p>>q> |i=X'==>2ݪ>m>P>>>>av>WX>`>`>F3>=2=.:d:Y:Y;~ =sj>z>>>x>8>z>=!=D>>F~>>>R>}>M">~9>sN>|;o>{a >_>)2=O=H1{;Zd:Y;~=C=>l>>`>7a>av>=X'==>8i>oW>>>M">>i->d>lN>jQ0>K u>"=c=7!;Y:Y:dY>WC>q>V>J=h=l=8r=є> >1y>Ix>T">GJ>7>.>1(>8i>5$ > G=_= <ܪ;:d:Y;~= = =ä==O=k=;c;K;~:d:Y;~<=HM=/+K="4<ܪ<~;~ ;~ <>;~ʜ:Y:Zd;~<%<%;:p:Y:Y:Zd:Zd9Y:Y:d;5p:d:Y9Y;5p;Y:d;~ʜ> ==D= =8r==|>>IT>g>[Ѓ>8D> l==y=l=c,> l>*>.> 12=N|=8D<,:d<~=:>z>^}>pۈ>M>=T==_>n>t> >Z>>>nLZ>* =t`=V>$1>i->>>|i>.P=N|=8r:ʜ<ӑb=O>GW>>q>>5==d> >F~>A >ֲ(>j>>$/>>`>>J>R>BB>>2>6P>x@D==Sb;~<ܪ= u>F3>.>BB>>/=߂=O> >GJ>y>&>&>&>ܙ>_h>fV>!>>T_>>!> >U>\5>8r=em;<>=pS>)>SH>g0j>A=={X=4=د>$1>k->?>>jl>a>z=>8i>|=>(>o&>>L>K>C =̾>='4:d:Y>=c,>U>S.>:>=ܪ=k= =̾> />3&v>=> ==h <(X'9Y< <ܪ<==2=Mn=QK=C=Mn=h =u==[==Sb=HM>>?=_==y=:2=[<=n=;&==AU=%<1{:Zd:Y`y>)$>5l>,>n>#d>7>F~>L,>=>n=== =n=`=>EM>n>^}>C=d8D>hg>z=>n>Y!>U>d<>x@D>{>>e{>:>==0!=d=O>=c,>޻>&v>>m))=B=5p:d:d=h >>K u>I>.>^>oW>dXp>lN>{>>{>>`>5$ > l=˛ ==+K=>Y!>$>̙>̾>>=`y;Zd=7!=>:>oW>I>wx>Y!>F~>IT>Sb>K u>2ݪ> =O=0!==d=د>@;&>ذ>h>>{>>8r=;c:ʜ >5>BS>8i> > >`>>u=={X=[=l=V=l=d>>M>}8>o&>.P=l<ӑb:Zd:Y<엑=޻=1{=ܪ=|=q=d= =pS=z==5p=[=~=HM= =[=8D==s>==N|=/+K;K:Y%>`>vG>Sb>`=-=Sb=7!=z==>B> >.>* >pS==-=>=Q0=h=p#<:Y;5p=V>pS>>s>_>^>y>~=X'=d=AU>+>iv>>>?>3>f>Pp>Y!>_>GJ>=Y==:d:Y:Y<5p=>`>Ҷ? Y8?>^>D>=c,==">>nLZ>->̙> >7>>U>>>z>>R> = <>:Y:Yy >??V? 7>ŢM>V =l=>5p>>>>g>>6u>¥>r>>S>E>hg>=d={X>N>ǟ?NF? >}>S>==鿗=Z>* >zr>V>9>2>~ >+p>ݪ>^2>̚>>V>R> l=u)<:ʜ;Y=QK=>wx>!>U>0!>g0j> |i=q=>>vG>&Q>^2>>>~ʜ>uhK>y >pۈ>R>f==Rn1<;d:d:Y<8r={a =>* >A>,=~=9=:2=V=X'=s>>* >2ݪ>,>n>t>> >>b==l<7<%<><>;d:d:Zd;1{<:ʜ:d<~`>n>=== =C=@;&=B=q=O= u=X'=`y<>W>k->IT>)="=6P=I>>aB>>>D>K>b>n=_=йh>%>K>q>%>l>%=<$T;d:Y=8D> >~>!>U>>nLZ>n> >$>l>>??>;>/>>A>5$ >o&>>E?>->N>=|;< :Y:d=y>4s>> 9>E>O>>@>"_h>EM>>d??%-?')?3>>>~>k-> >Q?k}?!?W>Դ>Q=+K2>c>⣧>>>">9>>D6P>pS>?O?#3?%?G>;o>>:>pI>̚>C??$8?>ܪ>`]F=<8r:Y=8D>>vG>MG>̾>>_> y=> >k->q>?pA?9>cu>q>ذ>W>A>>ơ?b? >F>S>3&v=<~<~= > |i>F~>\>:Bf=={X=d=O>>Y!>V>>}>z>{>><є> l=o>n>fV>BB>.>M">A=,=%:d<~=== G==)=D=8r=Q=V==ܪ> >pS>J> ==!=8r=YAU= ==A>Ǡ== = f;Zd9Y:ʜ;K;<~<><<==+=Rn1=rG=rG=`y=7!;~ʜ:p:Y:d:d:Y;~ʜ<2===[===M"=@=0!==?=E==[=8D<1{<:2<~<є=\= ==%;d:Y:d<2=~=> y>>Y> f>%>!>1(>5$ >)$>=B=SR=p#=8D=h =ä>f><є>/=$T={a <Y:Zd;~ =h =>:Bf>k+>}>tE>c>c>wx>>>Y8>{>>Mn>n===X'=ܪ>E>>jl>0!>u~>=:2;~:Y&>{>>>uM>>>>q>&>V>E>vG>=c,>`=<=ܪ>$>޻>ݩ>>j>>K u=8i>.>$ >>a>R>>~>>0!>>rQ>9> =-=>=`>T>g? ?~>>t=<>:Y;d=>%>>|>jl>L><>)>%>pS>v^>y >E>==˛ =y>,>>Re??M>w>av=I:Y=8D=鿗>A#>}8> >>nLZ>V>Rn1>OMk>A>%7a=A=c=X'=a=v=>X>1V>N>|>%>>=rG;~ʜ<=}l=y>>,>$>%>E==y6=|==sj=QK=QK=B=Sb==LZ>96>d>Y!>ҥ=<2:Y<>=7!= =a=HM==y=l=Jw=Y<2ݪ>> a>i->={X=h =H1{=8r=6P>u)>3>F3>EM>2ݪ>r>> Tc>> =AU=M"<ܪ:Zd;~ʜ=5>:Bf>p> ?M>~>>=?=v=엑>:Bf>|>>>>x>>z=>{>>k+>9==|;;d:Y<=ܪ>>;? >?$8?$>I>X==->.>:>?>N??`y>j>c>>s>L>a>vG>%7a=q>? h?(|?.?>>y >>o>F~>z>H?b?>?a?>LZ>>̙>ǟ>L>;>5$ =;&<$T:d:Y<є=ܪ>>Az?v?"(?s>>av>Ǡ>>:> a>8>"?9?Ip>>_>U>;&>>>vG>"=2ݪ>{X>O>{>X>>"=ǟ=>Y>U>v^>t>,>>/>c>K>!>.>u~>96=엑=8r<є<:d:Zd<ܪ=>>hS>>_˭>=c=l=p#=!>`y>+>G>^>_>N>A>=c,>:Bf>1(>'=AU=u)=%<8r<>;~:Zd:ʜ;l;Y<(X'<5<><1q;~ :d:Zd:ʜ<%~=엑== G=޻=d==~>#9>96>4s> G=))==y==Ə=O===A==l=(X'<2<>:d<ܪ=ä>=>:>ذ>>:Bf>Ǡ=o> l>4s>>6>د>Ѹ>>!>QK>>>.>w>>!>G>9h==/+K:d:d=l>.>_h>B>FO>۬>f>F~>(>@̾>>O?? O?"?J>B>!>z=>]<>%>6u??"?>>8i=< :d;=l>a7>ͽ???O{>~>tE>A>hg>MG?s?$o0?9U?=,?.N?\>b>[>)>¥?S-?,A?7?'Ə>ʜ>B=AU<%:Y;~ =I>^}>˛ ?:?.?>}>#>lN>=c,>f>O>h?!?6Yo?:?,ҷ?>M>>ذ>D?s?0`?;Sd?*?E>,\=))<ܪ:Y:d=>&>BB>d>N>of>O>5$ >%>4>̙?(?~??q><>6P>7>u>̚>??"g?><>hg=̾1y>~9>w>pۈ>%7a=i[==x>5$ >y>>U>͘>ˉ>^2>t>2L>@>Ix>G>͘>>>|> /=a7:ʜ:Y<= =O=t`=D=HM=T=IT==?>|>>/+K>79>0>=o==k}=c,> >2ݪ>A^W>)$==h <~;Y;~ʜ:Zd:Zd<~=8r=p#= G={X=0!= ======{X=l=5p<<%<>=#d=)==4=`y<;Y:Zd;=Y==l>n>.>([>>>$>7!>B>C>5p>J====Rn1==o>9>^_>MO>=a<2;:d:Y<=> >Tk>u>>0>>}>>V>G>k}>~>`>.P>==c>o>j>s>!>y>M">n==>,\>!>ǟ>^W>t>>s>>c>>;>O>=G>`y>EM>>?v^? E>݅L>{>=ǟR>4>+p>;J>>y>a>>Y>>U>4>Mn>@>8r>)>em>ͽ? ??>> G===:ʜ=>K>^W>H>λ>>>0!>S>8>>av>+>=鿗>Ǡ>QK>=?B??V>nU>= >c>K>>>)>a>|;o>wx>f 9>A^W>===I=|>>[>&>ֲ>(>>R%e=v<~<=d> y>;c>R>Mn>:>(>t>>=D= G=rG=h =V=z==h>>l]>M">.>R=鿗=+:Zd:Y=c,=N|==M"=em=Y<є==!=:2;~:Y<(X'<7= f=~<=<엑<7)2>q>>}>R>B==H1{=+=V==B>n>8i>;c>,>%>|> |i>)> |i=i[=M":Bf>&v>o>d>G`>|>==k}=˛ >([>n>?>>>>[>{>>{>>|;o>hg>8=$T=|;;dM">_??"M5?b> >F|==O>>t>MG>S??>{>B>a>>H>q>t>%7a=I<:Y:Y<=> >0!? ?(?-R?f>T>kt`>`y=>7>w>Sv>l?b?(? |i>E>>>ŢM>~> >5l=&Q> ?@?"M5?>Ηm>X==y6>,><>>'?? ?b>x>͘>U>i7>>tֲ>"_h=?@>ݪ>Y>Ч>>v^>==?>8r>F|>Y8>q>s>j>3>>>o>d>q$T>8i=LZ=8r<;p:Zd:Y,>vG> >dXp>A ==V=QK={X=#>$1>GW>b>i>^}>K u>A>;>/>=AU=Y=[:ʜ:Y:Zd;d<=Y=7!=A^W=Rn1=h =m=^I=8D=:ʜ;~ =7!==o>==2=>==\=h=B>%>!>:>%===u)= == =V=I==p#=k}<9>:>o>d>:Bf> V=>8r>+0!>o&>7a>ŢM>>">)>S.>>>$>f>>>3>+x=q=){X'Ə>>ܪ>K%>X>>GW>'Ə>:Bf>I>1{?r??v?>E>C>{>Y!>>D? 7??=H>t>.=HMW> ?)? b?b>Z>t>@̾>_>>j??0?6"?)?>>>>c,? !j?(X'?1?#9>>=O<є:Zd;ʜ= >T">}?? U>>>m))>:>[Ѓ>>LZ?k}?,A?3C?(?K>&>R>k}>W?.?+?7jl?'Ə?>U= <ä:d=rG>A >HM>Դ>->>>8D>>5$ >{>>hK?b?[?,\>s>J>U>x>^2>"?? =l?<%>ٮ>g0j=+>x@D>|i>nLZ>(=_==LZ>([>`>>q>_>/>>ycu>79>">Rn1>y>>>2>u>Y=bZ:ʜ:Zd<2= =O=LZ=ϖ7=d=em=K =8r==> >>+x>,>Cw==h== u>'>?>Qܙ>8D==|;<%:Y;p<+K=[=8r<^W<8r<>< =$=H1{=n=[= = ={a =5p<2pS> a>>pS>J>* >5$ >2ݪ>n>8r=˛ =k=a7=;c= =>+x>H>=c,> =>F|>{>>Y8><>t>q>I>V>3>vG>GW>=-=h=>>Z>`>ǟ>c>6>=<;d:d:Y<$T=2>5$ >~>>>h>U>c> >&v>>>y>=>Y=>=H>=>~>"? ?r>ܙ>nLZ=<~ ;~ :d<$T=1{>F|>BB>I>؋W>>> k>h>db>>?>|;o>@;&>>?>Y>^>Z?Zn??>>=a =~;:Y<=>8D>%>=>йh>̙>>T>>>>>U>n=A=߂>>>J>!?b??>> =<ܪ:d:ʜ=p#>Ǡ>`>o>>/>>>|>u>av>Y=ܙ== =>>>̙>">+>p>U=!<% >=>Y!>Y!>F3>2ݪ>%7a>z>o=̾>=k}=h =E=7!=\=> G>m))>M">`>W==8D:Y:Zd<== ==m=鿗=AU===^==+<<><><%<>= =M"=i[>~>`y=̾=Sb;~ʜ:d<=$===C=8D=/+K="46>?>J=;&=h =8r<<̾>=Rn1==y>o>`>=B=,=AU=g=AU=I=em>Y8>> >>?Z===Rn1= =->2ݪ>m))>P>>.>nLZ>Qܙ>Q4>S.>?>=Y=8D:dk->$/?9? >(>>pS===ܪ>8i>> k>ܪ>S>׌>6><>ذ>!>>KRA> =M"<(X'<=>>(??L?D>s>5$ =;&=?>~>Y!><>j>?>}>E>װ>>H>>V>b>=X'<:YuhK>׌?n? >>̚>)$=h=SR>>K u>޻>ŢM>Q0>FO>x> >>>BB>8r>N*:> =">>1{>c>J>b=j= ==> G>\>->T>p> >>:>|;o>k->Jw>C=Y=H1{<~:YY>IT>[>9=N= =B>)$>?>GW>C>8D>-v>">pS===h <~<(X';:d<~=){X=M"=;&=O==a=}l=rG=8r===="="=|==y=l=bZ===Ə==h =Q<1{ f>F3>`y>C>== =K>>* >Y!>>:>d>\>&==د=>)2>UF+>av>96=I=sjgy6>>>~>l>%-> |i>pS>A>7>>3>#>1>>)>Jw>0>V(>f>I>Ţ>S>vG=G=QK<>:d;K=|;>t>%>F+>>>G>E>>/>m))>J>? ?? d>~>̾>>g>)>d? h?_U?r>h>:= G<>:Y;5p=l>J>V>>3>Ηm>M">>=>HM>-O>j>>? E?%? U>>3>{4>q>>x?u)?? >0E>Qܙ=<~:Y=HM=I>\><7>$ >q>^}>'=> >=c,>~>uM>>>x>͘><>d>ID>>;&>B?:>&>>2ݪ= ;~;~ =|;=>9>OMk>8i>[==d==>n>C>n>>>{>F|>pS> l>/>ycu>d>n >>V(==u):Y<>=K =X'=є==3=7!=%=C=f====~>== = G=y=>>&Z>3&v>=ǟ=C;d;Y<<<1q;~ʜ:Zd:Zd;Zd;~ <8r> >o==c,=k}=`y="4=8r=Sb=D>>> =1{={a <<>;Zd:p9Y<~=H1{=Y> G>C>V(>M >?>=>M >Y!>Tk>:Bf>pS=m===@=ϖ7>&>oW>O>6>F3=ܪ=A^W<>;~ :d:Y >X>V>y>޻>[>I>> >>k->=c,>%=߂==йh>z>y>>`>Ҷ>q>5$ =k<^W;:d:Y>z=>8>>>>>K>>>vG>C>=鿗=O=>2ݪ>>`>>~>̾>av= )>m))>?>>R>>>3>[>{>>Vi[>([==1{==">%>>Ҷ>~>>>^=:Bf>{>>>`>>hg>X>Mn>:Bf>"==v=Y=B=@=>Ph>>U>?>v^>,=;K<:2==LZ>(>A>C>6G<>n>)>o=~ =q=u="4<ܪ<==y=>=c,>i->c5?>/t=,=Q:Y<ܪ= =h=i[=_=O==v=>={a = a, >hg>o&>==y6==Y<<ܪ=|;=D>%>4I>C>9>>>%>)>=ǟ=8r<;~=u>m>>=>>N>79==[=@={a =ܙ>* >f>v^>>'>{>[Ѓ>V>Ph>9>u)==+:d;=%>5l>ҥ>>%>>Y!=i[=sj===d>Ǡ>K u>|i>S>f>>!|>a>zr>l]>Pp> =O=QK;Zd;~==H> > >db>6P>>>EM=ǟ=V=5p=a>>A>>=l> P>>v^>z=>m))>_>@>==7!;Y:Y=8r=s>=>~9>B>Zd> y=M"<=<ܪ=l=̾>>A>h3>{>>oW>WX>B>9>,>=i[=3> =ܪ= <$T;K;d<ܪ=h =E=-> 12>r>Y> 5>`y=LZ=K=?=|;<%:d;~<є=+=7!<=<>:d;~ʜ<= a=`y=l===a==l=V=Y:d:d;5p:ʜ:Zd:Y;5p<<(X'< <^W<ܪ<==2=޻=~=u)={X=2=AU=A> y>`===ǟ=0!=@={X==V=B=I=V<є<>;~:Zd:d<$T=>>>@̾>Y!>@̾>%==D=̾=>pS>;c>b>{>d>hg>7!> Y8=> l>4s>c5?>pI>F~=A={a * >wx> >vG>6>=O=_>%>:Bf>qm >>0!>>A >pۈ>2ݪ>t>9>~>>!>>F~=ä=B:d:Y%>q>7>p>2ݪ=B=ä=AU>>79>k->o>>uM>>z=>8i>%>GW>.>>y>SR>f 9=-= a:Zd<%={a =>8i>OMk>9> =̾=d=?=>`>/+K>WX>{>>^>{>GW>HM> >.>q$T>?>z#>V>F3=ǟpS>#9>>==2=鿗>(>U>b>BS>=8r<%:d;K:d:Y:d;K > Y8>>`y> >>`=o==)=m=Sb=V=޻=AU>>.P> =))=<=<:2;~:d:d<==+K>Y>=c,>R>IT>;c>79>;c>?Z>8i>@=LZ=h=k=)==O>d=>`>:>zr>:=AU=Jw,>c5?>}8>x@D>c5?>Vi[>S.>R>C>(>K==X'=={X=LZ>:>6>c>>j> =[(>aB>~>|;o>g0j>R>GJ>A>1y>r=׌={X= ===د>3oB>|> >>i->u)=[<5p:Yo>:>X>Y!>F|>2ݪ>!>>=O==V="4=B=2=k>>GW>rQ>l]>9=B=@;&;5p:ʜ=8D=!>`y>z>q>>b=_=1{==B= a<:2;Y:d;K== G=엑>pS>== =/+K=M"=!=̾=i=-==d=d= =C Y8>5$ >96>u)==em<;~ < =5p=v=>>*>n> f=A===O=d=5p;:Zd<==>!>T_>X>+0!=˛ =rG<^W<~<==H=AU>i>=c,>Ns>F3>.P>>>==!=[<%:Y)>=>A>==H1{>5>C>=c,>(>%>%>=߂==8D;d;K=H1{=;&>>=|=|;<ä;Y:d<:2=8D=X'=2> >r> >=o==Y={X=em<:Zd:Y<%=+=|;=|;=7!<~:d:ʜ<=7!===SR={X=4=d=.=p#=*=鿗=D=[=V=h = =\=h=> 12>>=N=ǟ=2=ǟ=x>>>b=<ܪ:p;l=[==ܪ>|=鿗=i=8r=Jw=\=3=d=D=_> >>z>=H=O==AU>>2ݪ>9>z=̾=$:d:Y>>>&Z> y=I=~:d:d<є=V=3==<є<%<^I;d:ʜ:d;Zd<^I<ܪ=<ܪ<8r;K:Y:Y:ʜ;Zd;;~:ʜ:Zd:Y;K;d:ʜ:Zd9Y;Y<~<5p<>;d:d:Zd;Zdb==LZ===y6=c=y===+=7!===}l=!=LZ> l=A=c=p# y> >">">> > |i==D=pS=Sb=5p=7!=IT= = u>>%>A ==f=[;:d:d=;c=>%>,SR>.>!>> >=m=D==, >">==d=~;d:Zd:Zd=k}=>?>>t>r>=m=O=!= =7!< ;K;p<:2=Q= = u==B==<%<^W;~:Zd:Y<~=/+K=)=E=D==k=%= ===<ä;5p:d<=em= G= G=z=="4;K:Zd:Y:Y:Y:Y:Y:Y:d:Zd:Y9Y:d;Y;#d:d:d<~<8r<<<ܪ=em= =+K=D=2=̾=c,==l="4<<^W='4=V=`y=7!<:2;1{:d:Y:Y:Y:Zd:Y:Zd;Y;d;;#d:Zd:d;~ ;~:d:Y:Zd:Zd:Y:Y:p:d:d;Y<#d< <є<ܪ<%<<5p;l:Zd:p==8r={X=!=!===pS==H=8D;~ʜ:Y<=D=~= =[=p#=[==="4<є;1{:Zd:ʜ;d;;:d:ʜ<%;l:d:d:d:d:Y:Y:Y:Y:Y;;5p:Y:Y:d:Y:Y:p:d:d:Y:Y:p;~<#d;~:p:Y:Zd:ʜ;~ʜ;K<(X'<<7=<ܪ<1q<8r<%=u)=(X'=@=[=~=Rn1=p#=V=u)<~:Zd<=%=7!=){X=.<;d:Y:Y;Zd<><(X'<%;d:d:Zd:d:p:Y:Y:Y9Y:Zd:Zd:Zd:ʜ;l;Y:d:Zd:Zd:d:d:Zd9Y:Y:Y:Y;5p<<5<<=u)=7!=8D="4<ܪ<><%;d:d:d;~;;:Zd:ʜ<<~<1{=QK= = =.=Rn1<:Y:Zd;Y<:2<1q;d:d:Y;Y;;K:d:Y:Y:Y:d;5p:d:Y:Y:d;K;~ :Y:d;;엑< <^I<%=+=QK=V=9h=~<:d;<~<7="4=){X= <%:ʜ:Zd:d:d:Y:Y:p:Zd9Y:d;d<%;~ :d:Y:d:d:p:Y;Y;<%;K:d:d;~ <^I<>;5p:d;Y;5p;~ʜ;~ʜ:d:Y:Y:Y:Y:d:ʜ:d:Zd:Y:Zd9Y:Zd;Zd<%<<%:d:Y:d;1{;d;~;5p;~;d;;K:ʜ:ʜ<%<<엑<ܪ=[<ܪ;~ :p:Y:Zd:Y:Y<~<="4=<>:Y:Y;#d<~<(X';:d:Y:d<=7!=[=8D<:d:p;d<8r< <=<є<%:d:Y:Y:d< =*=GJ=){X<ܪ=Y=Q<ܪ<^I:ʜ:Y:d:d:Zd:d;Y<1q;~:Zd:Y<=bZ== =H1{<<~<=Rn1=k}=N|= = =@;&<;~ :ʜ:Y:Zd;~:ʜ:ʜ<~<7=Mn=l= =p#=0N|<ܪ<8r<~:ʜ:p:d<~> l=^W==7!==c,=> > =LZ=D==H=<<:2>">=I=%=H1{=[==A> > 12=鿗==~ʜ=u)<<(X'B=r===$=IT=d=Y=ܪ=== =8D<^W<>;~;~ <=@=8D=2;:d:Y:d:Y:Zd:d:d:d:d:Zd:Y9Y:Y:p:d:p:Y:Y:ʜ;~;5p:d:Y:d;d<1q< ;5p:Zd:Y:d<><=LZ=E=5p;~:Y< =8D==m>>=H=˛ =y= f< 12>@>J==^=8D<2o>J>==="4< <~;p:d;1{<1{=8D=^I=8D<є;Zd:Y:p<ܪ=Jw=pS=!== =[=A^W=Y<ä<(X';~ <5p<=~<==A==V=7!=8r=;&=>%>>E=Y=pS=QK=u)<є<==h =l=}l=5p3oB>SH>=>Ǡ=v==?=9>n>4s>5$ >q=G=E=rG=+<==~=`y===d=rG<ܪ:d:d=L>=鿗>?>fV>T">=^W=޻=D>|>n>2ݪ>2>==q=n="4<7= f=l=d==4=|;<7:d<ܪ=E>>;/>2E>=v={a =pS= u>>u)>`==;&=/=8D<^IE>Y>=̾=X%<5p:dY>%7a>>==8D<2 >|=c=V|>+>=>8>pS==h <7&>8i>/+K> ==H1{=Q=h =8r=h =u)<%:d;5p<%=B=|>>%> l=O=3 12> > =!=em=E=/=|>>pS>> =K=d=em=(X'<$T==D=5= G= =H1{==ʜ>C>em>J> =N|=/=>E>#d>96>9>&Z>E==[=8D==8D=3==c,=l=5=8r:ʜ<~=>B>Pp>vG>`>>===є>>$\>8D>8D>"4>==8r=7!=Y=8D=`=D==h= =.:ʜ:d=){X=>$>F~>9>o==B==s>>>>=O==`y=~<=u)=p#=a=0!=a=h <2:Y;d=7!=&v=m=AU={X=h =.=8D==q====)=X%=[;d:d:Y:Y:Zd:d;d<%;d:d:Y;Y;K;~ʜ:d:Zd:d:d:Y:Y:Y:Y;H1{;p:Zd<%=QK=?=))>=LZ=?=D<:2:ʜ>([> >==4?<<b=-=q=D>,>?>96>pS= =Vb>'Ə>8i>/+K> =D=7!=~=Rn1=p#=Rn1=8r<%:d;Zd<ܪ==ǟ>>%>~=O=B;~ʜ:d:Zd:d:ʜ:d:Y:Zd=_=޻=2=$=h =^= u=>b==D=8r=7!<$T<2<$T=:2==H= ==.<(X'<%=h =د>%7a>=c,>([=ܪ=3=h =f=O>>>t>`=ܪ=d=^I=Y==5p= =0!=!={X=sj,>G>5l== G={a =k=> l>">Cw> =ܪ==bZ=Q<==8D= =E==v=<ܪ:d:d= f=\>E>>%=ǟ=[=QK=|;=q=ܪ=B>K=m== =;c<%=u)=7!=2=<7<<>;p:d:Y:Zd;1{;p:d:d:d:d:Y9Y:p;~ <ӑb=7!=`y=^I=:2=Q<:d:Zd:Zd:Y:d<1{=bZ=={X=pS=Jw`> |i=AU= <;d;~ ;1{:d;=HM=y=?=̾=I=8r=8r;~ ;Zd<=[=">%>">===[;~ ;1{;Zd:d:d<2=QK= = G=y==<;~ʜ;~ʜ<ܪ=8r=O> y>z>%=Z=)<;Zd:d:Zd;~<;;~;l:ʜ:Zd:Y<~=~=[=l=8D<$T=8D==k=v=d=rG=@=.<:d;Zd= f=k}=ϖ7=Q0=Y= =HM<;=8D=~==="= =a=QK<$T:d:Y:d:ʜ:Y;K=[= =ä==AU=q=QK<~:Zd:Y;K=޻=h =sj=C<ܪ<%;K<(X'<=0N|=kt`==em="4<ܪ<~:Y:Y;d<7=<є=Rn1=+<^W=8r=[<є<:Y:Y:Y:Y:Zd:d:ʜ<~<2=@=B=P'=7!<$T<5p:d9Y:ʜ<~<^I;K:Zd;~ʜ<5p;~ :d9Y;~ ;Y:Y:d< <є=Y="4<=;~ :d:d;1{<%<%;K:d:Y:ʜ;K;~ ;:d:Y:Zd;5p;;#d:d:Zd:Y:Zd;Y;~ ;:d:Y:Y:ʜ<%;~:d9Y:Y:Zd:Y;Y<^I<<~;5p:Y:Y:ʜ;;5p:Zd:d:ʜ:d:Y:d;Zd;Y:Y:Y:d:d:Y9Y:d:ʜ:d:Y:Y;d;5p:Y:Zd;~ʜ:d:Zd:d:d:Y:d;;K:Zd:Zd;5p;1{;~:d:d:ʜ:ʜ:Zd:Y:Y:d:Y:Y:Y:Y:d:ʜ:d:Zd:d;<#d<~;Zd:Zd:Y;K<:ʜ:Zd;~<5=='4=*=<~ =(X'=*=:ʜ;Y<^I;K:Y:ʜ;d;~ ;H1{:Zd:Y;#d<%< =8r<<%;5p:Zd:Y;<є=2=QK=7!<;d:Y:Zd;~ <^W=.=Sb=`y=Rn1=;c=){X= f<7:ʜ:Y;K<~;K:d:Zd:d:d:Zd:Y:Y:d:Zd:Y:d:d:d:Y:Zd:Y:Y:d:d:d:p:Y:Y:Y:Y:ʜ;5p:ʜ:Zd:d;Y:ʜ:ʜ;Y;Y;d<<%<~;;:d:Y:d;~ <%;~ ;d<:2=A=ǟ=.=){XpS>&>t>`y=є=="4=.===x==˛ =)=Q;<=8D=%==~=(X'>%>>>= =8r=@=#d=޻=O=A=\5=ϖ7==%;Y:d<=8D=L>=%E==O=d==<<%;~ ;5p:Y:d< <8r=HM=p#== =:2<^I:Zd;5p<>;;~ <є<=<ܪ<5p:d:Y:Y:Y:d;~ :d:Zd:d<~.P>A#>,SR=-= =7!=*=p#=?=엑>`>>>?=m=2=엑=鿗=ǟ=k}=2;:Zd<=4>!>k->>f>>===H==q>?>+0!>F3>Q4>EY>0>n>n>(>&>=O=[<:Zd<^W=>.P>{>->y >.= u= =pS=|>)>=>_>hg>[>C>79>8D>=>:>!=))=<ܪ:Y:Y y>OMk>m))>R>M"=D=|;= =;&>o>-O>EY>Ix>=>.>([>,>4s>/>pS=AU=f<:Y;Y=$={X=r>'>o==|;=/+K=bZ=d=ǟ=G> y> y>==>> 12>o=I=X'=8D<%:Zd:Y<~=Q=h =5==5p<1{==5p=4?=[<><=5p=8r==.=V<;K;Y;d>>o=د==V=>="4=p#={X==2==DY>@>>=2= ==X'=>n>S.>lN>aB>=>=O==pS=O>u)>/t>7>=;&=V<1q:Y;p=8r>:>:>Ix>,=V=X'==|>Y>M>~>BB>>>G>)=|=c,> |i>o&>b>[Ѓ>Y=k|>9>F~>(===Cw=|>޻>R%e>6>BB>D>E>Qܙ>"=,=> 12>@>x>>g0j>=0!<7:Zd:d=5p=h>~>r=LZ=d=Rn1=em==>-O>X>oW>m))>Q4>* ==4=޻=>>?>Mn>3&v=$T=l >J>>`y=O==7!=[=l==i[=~ ==f<:d:d;엑< ;K;Zd;Zd;<1q<><<є<$T<$T l>o====h ="4<$T==pS=>>===;K<= G>b>%7a>1(>%>'>%>>,SR>(>r=g==3=QK===[=鿗>>=>kt`>]<>f=X'<2:Zd<є=>%>:>GW>=`>([>>%>.>([>== =[=]=h =d> />av>|i>I>:Bf=^W=8r:d<:2=>E>.>:>/>P> l> />Y>=AU={X==H=V=8D=QK=>b>IT>{>>l]>+=p<ܪ:Zd:d=7!=D=B> |i=a ==;&==c={X==7!=޻=Q==Y=h => >/>&^=鿗={a <5p;d=+=[=޻=8r=`y=Rn1=V===~<8r<<^W<<>;Y:Zd:Y:Y;Zdo>J>>=D=bZ=u)<$T="4=B==i[=V=ܪ=Y=!==?=!==|;=;Y:Y.>|;o>>nLZ>n===H=q$T=d=Q0>">A>Pp>GW>4s>>pS>> > Tc==f<:d=3>|>}l>f>˿s>v>f 9>=={X=2>,>f>>k}>M">I>bZ>V(>^}>_>A>==5p:d:d=QK>Y>>N>v>9>>'=є=c>>C>I>?>x>>N>I>we>}>{>>[Ѓ>%=O=Rn1;~:d=+=鿗>lN>{>¥>~>av>Ǡ=I=!=>79>l]>w>!|>>:>o&>i->nLZ>j>H>J==8D;9Y:Y>Z>z=>ZR>=̾=8r==> >/>GW>R>GW>:2>5$ >6>9>5$ >k}=ܪ= <$T;~:d;Y<$T=[==Q0=׌=Ə=QK<;=2=l==O=m=V=AU=i[=߂=-=-=ܪ=== f<>;Zd:ʜ:Y;5p;<~<=*=QK=em=bZ=V=a7=q$T={a ={a =h =7!;;~<~ />J>E=;&== =Ə=˛ > >8i>L,>EM>,SR>==pS=u)=D=>>J=o=\=7!* >k->\5>Z>=׌=|=>$>k+>?>jl>!>>w>5$ >|=y6> G>X%>v^>>>}>&Z=I=Q;Y=Y=->Y!> G>~>w>A>E=t`>M">Mn>ذ>̙>*_>'>Վ>2>q$T>,>>G>pS>RA>ބ>Z>w>=a7;Zd=@=y6>WX>ذ>>y>=c,=B=>>Sb>>>t`>LZ>B>,>{>2ݪ>A >N>E>Ҷ>3>Sv>:>=sj;~ʜ">f>{>>T_>`=2==o>0>qm >>jl>?>$>j>ID>=B>([>o&>c>!>?>Tk=-=8D:d:d=2=I>|> =鿗=-=V=Zd==->n>EM>^}>`>Jw>,>b=?==>%>;/>Ns>6==f=7!=d=Y=йh= u=̾=1{==o===h=%=QK<=>(>5$ >,> >>.>:Bf>96>%>=D=>=em=D=3=>D6P>oW>b>"=<ܪ;#d:Y:ʜ=QK=>79>f>x>k->W>Mn>Z>hg>c~ >GJ>==h=pS=%=,>?>ذ>h>O>{> =Zd;~ :Y:d=l>>IT>b>w>q>oW>aB>f>n>f>F|>==D=9==>c5?>t>X>>!|>&Z=[<~:Y:Y=8D=s>:Bf>q$T>>{>`>IT>G>Ix>>=> ==!=f= =d=g>Q4>>ɝx>;&> a> G=p#;K<=d> >96>G>@>,>>)>>?=ǟ==kt`=V=H1{=p#=>J>j>%>|i>IT=AU=Q:d:Y=8r=f==엑=y=|=D==d==8D>!> G=ܪ=l<>:d<(X';d;>.P>%=={a =/+K= f=+=~=є=g===AU=;&=D==ǟ=2=%=/+K;d:Y<=ϖ7>V(>>0!>.>7!=|= =={X>>3>[>pI>nLZ>WX>9>, >2>8D>$=A=Ə=:Y:ʜ=|;>*>`> >E>$/>:>==l=>>>p>p>>>{>~9>~9>b>.=_=em;~;1{=pS>C[>c,>;o?>N>?>.=йh=D>%>Y!>>6>Mk>j>.>^2>o>>>~9>@̾=x=8r<%;Zd={a >([>4>Ţ>FO>Ҷ>>n=|=̾> f>H>[>~>>db>>K>V>2g>>k->1y=I=m<%:Zd:Zd=~=|>IT>K>~>.>@̾=鿗==f=i[>J>F~>m))>>d>nLZ>^}>WX>Xf>OMk>2ݪ>={X="4;:d;~ =8D=D> >!>%=O=3= a=7!= =є=엑> >> > y> > /> 12>|=K=d=8D;Y;Y;#d:d:Y:d;K<%<~;~:d:Y:Y:ʜ<%<;d;5p;#d;Y;~ ;d;Y:Y:Y;Zd;ʜ;:ʜ:Zd<><ܪ=Y=[<%;~:Y:Y<^I=bZ={X=h={X=[=Mn===V=~=d=2=1{=c,={X=8r=B=){X=5p=QK={a ==|;=D=<ä1(>>=>$1=LZ====>">R>o&>nLZ>V(>.>=H===AU>%>7!>?>f=|=rG<%;~ :Y= f=߂>Rn1>pS>̚>|i>@̾>o=G>>=>6>h>>ބ>1{>>i->&>%>9>>G<>1{>{X>WX=7=QK<:Y:Zd=bZ>޻>7=>]>9>s>vG>">u)>.>n>r>?q? >>ճ]>>Z>=c,>rQ>>g?'u>&>;>* =HM<%:Zd=em>>>>͘>D>q>> >.>pI>O>v?K? ?~>>^2>c5?>D>}l>?M? >F>uM>:Bf=4<%=Y=AU>Jw>> >7=>9=G=ۇ>`>GJ>7>>C>6u>H>q>>:Bf>n>N>BB>!>b>λ>>=[;~;~ =z==y6>)2>9>=i[==/=> l>6G<>_˭>~9>>}^>ZR>(==>>=c,>|;o>w>we>.P=є<$T:Y<%=8D=.=\=.=QK=[==K =pS==y6=>E====h =5p=l=v=I=~=i[==:d:Y;d<><8r`y> |i>=鿗==d=em=8r<=[=pS=g>>Ǡ==O>?>MO>D>9h>8D>C>N*:>IT>5l>%=d===m= >pS>k->>;>D==5p<>:ʜ:Y<%=>o>Mn>F>v^>Y8>z=>o&>z=>b>{>_>0>=1{={X=>>hg>>ۇ>йh>>,=.<:ʜ:Y<~=޻>pS>i->">c>d=>->:>B>Ǡ>>`>/>`y=D=l=>">>i[>>m >>R=o>X>.>@>G> >t>n>m))>]<>:>`=O=q==>Y>> >&> >q>F~=<:2:Y=8r=c,>#d>Y!>q$T>k->T">=c,>5$ >.P> G===y=|;=l= =AU>=`>pS>!>r>b>=`y;5p;=K =;&> l>">> |i=o=ܪ=1{==|;=*<ʜ<=<== a= =m>,>R>IT>J=X'<5p<>;d;~ʜ;~ :d:Y;K<%<~;5p:Zd:Y:d:d:d:Y:Y:ʜ:ʜ:d:Y:Y:Y:Zd:Zd:d;d<~;K:d:d;~ʜ;<%<;;Zd;~;K;~ʜ:d:Zd<=8D=h =QK=>r>>>==h =HM<ܪ<엑=QK==Y=د===?==!=;&=!=Y='4;K:Y=[=د>V(>>>B>)$===bZ= =AU>>>F~>b>fV>R>8i>(>.P>3&v>:==<$T:Zd;~=>2ݪ>> >FO>N>>}> 12=v=d=">*>k->ذ>MG>>c> a>{>{>>{>>`>,==`y;~<=>Q>>?\>>>$==D>>F3>j>q>>Ѹ3>X>}>G>޻>>{>>?==B< ;K=f>8D>>d>~>>3> G==q=>:Bf>}^>k>>>q>BB>`>>>i->0N|==h <:Y:p==m>_> >>>A=2= ==> >=c,>f>>}>u>{>>f>\>Xf>K >1(>={X=Y;1{:Zd<=Mn= u>>.>P=йh= == f=|;==y> Y8>>'>>>Y> >b=йh=d=7!<5p:ʜ:p9Y<<==Mn=rG=`y=%+>9>n===v==鿗>>96>S.>Y!>H>, >==D=йh> >+>5$ >=̾=p#<~ <:d:Y=@=د>GW>->q>[>=>o=o> 12>4I>qm >8>Y>>>?>j>(>Y>2ݪ>{>SR>a><7>OMk==P'<>:Zd:d=\>`>d>i7>/>N|>q>"> >$>^}>>Վ>??>hK>$/>d=>\><>mq>Hq>"?b>->>([=<(X':p=V> >~>!>1{>>nLZ> > |i>$1>`>A >$/>F?>>؋W>c>f 9>E>{>;&>r?Zn>E>>:Bf=^<%=~=O>C>>E>>8i==د>Ǡ>9>vG>>6P>H>,>J>E><є>!>Qܙ>>G`>v>N>`>=l;~;d=n=߂>#d>7!>@=_=k= ==x>">D>f>zr>u>Y!>+x== u>>D6P>>V>>79= <=:Zd<%=8D== ==h =Y<=:2=y=I=O=V===i[= =p#=8D==c=> =G= =HM:ʜ:d<><1q<%;:Zd:Zd:ʜ;l;Zd:d:Y:Y;~ʜ;Y:Y:Y<~="4=^I=Rn1=u)=A=h=V<<~;Y:Zd;K=2=h>>5$ >@̾>:Bf>/t>.P>9>@;&>9>">==a=p#=em={X>`>Z>_C>{a >9=T=7!BS>{>>4>|>nLZ>f>m))>t>i>IT>n=o=c=d==A>\>0!>)>J>V>%= >`>%>>g>>>>>q>QK>!=o=̾==;&>J>:>͘>$T>b>?>L>=<;5p:Y;Y=l>|>R>|i>>">>t>lN>hg>T_>2ݪ>=={X=Cw=>>z=>8>v>B>SR>F~={X<^I:Zd==2>!>Y!>vG>p>[>>A>8i>/t>===[=h =Rn1=[=i[>:>+'>n >R>>=p#;Zd;~ =[=Y> >">"4>>=엑="=?==H='4<ä.P>T_>Luq>=q<2;l:Y:d:d:Zd:Y;~ʜ:d:Y:Y:Y:Y:Y:p:Zd:Zd:d:d:Y:d:d:d:Y:Y:d:d:Zd:p:d:d:Y9Y;<%=޻= f<̾><5p:ʜ:Y:Y:Zd;Y<%<5<,>nLZ>|;o>Jw>|=@=E=.=.=pS=>)>* >0>&>> >>r>=Y=>>>ŢM>>F~=Դ=3=\==>1y>em>>v^>>iv>U>T">Qܙ>:Bf>=h="4:d;d=y>1y><>׌>>c,>nLZ>=H==B=>>R>:>^2>S>>>}>y>n>R> =˛ =E;~ʜ;Zd=l>f>>^W>>U>[=o=y={a => />EM>{>N>?>><>q>k->av>B>=2=2;5p:Y>>jQ0>Cw====5p=M"=>pS>:>Vi[>a7>X>GJ>=>9>.>pS=AU=3b>.==X'=8D:>>E>=#=AU=h=B<ܪ;Y:Y;~ʜ<2=$=8D=HM=V=2>> Tc=N===y=k==йh=> |i>%>u)=x=|== G==D=G=A= u= =.<;ʜ:d:YpS>Tk>j>IT>=د==> >, >V(>~9>>~>n>9> Y8=鿗> 12>uhK>>c5?>={X=Q;d:Zd:Zd=k}=,>?>4>E>>:>B=_>=H>* >Y!>>>;&>c>8>y >3oB>>:>q>!>zG>R>hg==U;1{:Y=~=ǟ>=c,> >G>>9>|=i[>K>+0!>Y!>>MG>8>>{X>>:Bf>n>GW>pS>I>d>'>>=n;Zd<8r=@>%>Mn>fV>F~>%=|=q=O> >/>Y!>E>>G>7=>R>J>>+>ycu>> k>_h>a7==8D:d:d="4==> ====V=y=2=-> f>n>5$ >9>+0!> l===>$>Y!>nLZ>T">=k<8r9Y;~ʜ==p#= ==H=8D 12>>%> |i> |i>)>J>====q$T=8D=7!=f=ܪ>"4>B>9> l=d=z>F~>[Ѓ>Sb>@̾>9>=>A>8>===@=[= =˛ >* >}>>M">Y!==em<;d:d:ʜ=;c=AU>5$ >l]>F>~9>g0j>V(>S.>Qܙ>A>"===d=.=d=>Ix>A >]>n>Zn>n= <;Zd:Zd:Zd=@=ǟ>.>h3>>~>hS>OMk>EM>=>-v> = u===rG=Y=>A>>jl>q>>>= :Y ><>X>Xf>B>,>q>=\5=;&=y===!=8r=8D=>pS>b>>[>OMk=~=K ;5p;~ʜ=8D=p>K>>> y=LZ==c,=a=X%<$T<%;Y;~<>=7!=> f>+>&Z>b=HM<8r<^I=B=M"=v===`==\=k}<%=~=[<$T=q$T=AU>>=A= =`y< <:2<%<=sj=SR=Y=йh=|==!===+K=B=B;Y:Zd= = >0>lN>we>F3===2`>+x>96>0H>@>>>>|=є=mMn>>)>k->V={X=:2<==Mn=>>0H>Qܙ>aB>Y!>A>7!>4I>,>pS==y<:Y:Zd= 5=O>:2>z=>|>Vi[> l== a<ܪ=QK=q>>* >EM>U>K >:Bf>1(>,>!> =ǟ={a +>4I>)==D< =H>>@>z>)> /> l=B=O==;5p:Zd<=h =4== =*<%;K:d:Y:d:d:Zd:Zd:ʜ;Y:d:Y9Y:Y:Y:Zd:Zd:Y;Zd;K:ʜ:Zd:Y:Zd:Y:Zd;Y;Zd:d9Y:ʜ 12=G== =sj= ==;&=йh=G> />pS> y==={X=D=<> y>==4=+<>:dd=>1(> G=-====˛ =>`>+x>BS>Ph>A^W>=t`=s=#>#d>R>dXp>C>>=y=kt`=د>@>/>=-= =y== u=>u)>.>HzG>Y!>ID>#9=G=AU>>9>nLZ>I>c5?>f=<:Y;Y="4==> 12=B=є=3=T=B==|=m> |i>!>/t>%>==D=<> >R>f 9>F~> = Y>f>Ǡ=!=){X;Y:Y<~==5p=$<^W;~ :ʜ;~ :Y:Zd:ʜ:ʜ:p:Y:d;5p;~ ={a =y=y=}l=QK= a<<%;d;1{<5p=Y=p#= = =H1{<$T l>>>Ǡ>|>>==T=a=p#=Jw=8D=C=)=>t>96>.>=\=@* >=c,>:Bf>* >>pS>)>8r=Դ=\={a =Rn1=A^W=`y= >>>]>f 9>[>* =D=C,>C>A>1(>>%> Y8=엑==V=== a=Q=7!=f>b>:>av>ZR>, =O=A^W<(X':d;~=QK=|>%>+>,>>o====f=5p<<><%<=P'=c,>%>1y>.> V==~;~ʜ9Y:Zd<=)=̾>=>b=====z=="4Y>r====<;d;=u)= ==s==-="=O=O==0!=h <є:Zd<=QK=>|>E= u=f=%<>;5p<~=@= =є===="=O=T=c==K :d:Zd;~<̾>=Y="4<$T;d:ʜ:Y:Y:Zd:d;1{;~:d:Y:d<:2=Q=D=bZ=l==y=f=z==8D<7?=g=s=Y=c,==3=7! f> />|=_=Y==d=sj=@<><><^I<='4= ==鿗=V==|;<$T< :d<^W= =O>K>:=엑=ǟ=N|=k=8r=8D<;Y:d:d;K<=8D=%=h==k=D<;K:Y<5p=H1{===ǟ=h=:==a7=0N|<2;:d<5p=Q=[=p#==<%<Y:d:ʜ:d:Y:Y:ʜ;~ <5p<<==+=;c=8D=<$T<<(X';5p:Zd:Y:Y:Y:d:ʜ;l;5p:d:Y:d;~ ;K;~ ;~ ;5p:d:Y9Y<5p="4=rG= =/=)==/={a =/+K< ;K:d:d<;~ʜ:ʜ;d<5p<<:Zd:Y:d:d:d:ʜ;d<;5p:Zd;~ =~=`y=5===d==[==<;Y:Y:p:d:ʜ;d<><~;;K:d:Y:Zd:Y:d;~;K;#d:Zd:Y:Y:d;5p<~<8r;d;K;~ <%<%;:Y:Y:d:d;K;Zd:Y:d;p;<Y=2=5p=*=.<%<~;5p9Y:Y:Y:Y:Y:Y9Y:Zd:d:Zd:Y:Y:d;Y;Y:d:Zd;Y;d<~;d;Zd;5p;d<~<~;~:Zd:Y:p:d:ʜ;~ <5<;K=h ==em=< :ʜ<(X'<=+=P'=em=bZ=@;&=u);ʜ;d;5p;~ <%=5p=E=5p<;~:Y;l<,<< =<=<^W<1q;~ʜ:d:ʜ:d:Zd:Y;~ <;~:d:Y:Y:Y;H1{;~ʜ:Y:Y:Zd:d;~<~;~;Zd<(X'<ä<$T<є<~:Y:Y:Y:Zd:d:d:Y:Y:ʜ;Zd:ʜ:Y:Zd:Zd:Y:d;Y;K;5p:Zd:Y;~ʜ<(X'<^I<(X';ʜ;K;5p:Zd:Y;1{<~< <<><~;Zd;5p<:2<ܪ=4?=A^W=+;;Y;d;~ :d:Y:d;Y:d:Zd:Y:d:d:d:Y:Zd:Zd:Y:Zd:d:d:Zd:Zd:d:d:Y:Y:p:d:Y9Y:Y9Y:Zd:d:Y:Y:Zd:Y9Y:d:ʜ:d:Y:Zd:Y:Y:Zd:d:Y:Y:Y:Y:Y:Y:Y:Y:Y:d;Y:ʜ:Y:Y:ʜ;~;5p:d:p:d:d:Y:Zd:d:Zd:Zd;5p;p:d:Y:Zd:Y:Zd;Y;~ʜ:d:Zd:d:ʜ:d:Y:Y:Zd:Zd:Y:d:d:d:Y:Y:Y9Y:Y:Y:Y:Y:d:d9Y:d;~ <1q<>;:ʜ:Y:Y:Y:Zd:Y;~ʜ;K:p:Y:p;<;Y:Y:d<<1{<ʜ<<~ =Q<ܪ=8r<~;:ʜ:d:Y:Y:p:Y:Y;<<$T<<>;Y:d;5p=(X'=bZ=U=u)<8r<1{=+=@;&==="4<̾><:d:d;K<%<:ʜ:d<~<:2<~;p;l;~<~;d:d:Y:d:d:Y:Zd:Y:d;~ ;Y:Y:Y:d;~ʜ;#d:Y;#d<2=8D=`y=:2<7<:2<~:ʜ:Y:d:Zd<%<ä<~ <2;Y:d;K<~;~ :d:Y:d:d:ʜ;Y;d;d;d<~<%;;~ʜ:d:Y:Y9Y:d;Y;Zd;Zd;5p:ʜ:p:Y:d;Y;~ʜ;~ʜ:ʜ:d:Y:Y:ʜ;~;1{;Zd:d:Zd:Y9Y:d;Y;~ ;d:d:p:Y:Y:Zd;~ʜ;~ ;K:d:Y9Y9Y:ʜ;~;Y:Y:Zd:d:Y:Y:Y;~=f=O==د={X=5p;d:p:Y:Zd:d<~:p<5p==/+K;:d;5p;5p:d:Zd<=8D=|;=~=bZ<=;K9Y;K=+=X'=>===X%<~:d:d:d:Zd:Y<%;;K:ʜ:Zd:Y:Zd:ʜ;~ʜ:ʜ:Zd:Y;~ <7=<є=V=/+K<1{<>;<%<~==8D=Rn1===Q;l:d:ʜ<<="4=}l=/=|;=$<є<<=Q=V=l=޻=f=V=u)<8r;d;Y;~ <+K==0N|=Y<8r:d;ʜ= f=rG== =7!<7<2<="4=kt`= ==/=h =*<ܪ=){X=8D="4<8r<$T=){X=8D=4?=Y;d:d:Y:p;Zd<>=$<8r:ʜ:Y=QK=Ə====:ʜ:Y:Zd:Y:Y<(X'=[=;c=C= a;d:d:Zd:ʜ;<~<8r<8r:ʜ:Y:ʜ="4=l==d=sj<%;~:Zd:d;K;~ ;Zd:d:Y:Y:Zd;Y<#d<2<ܪ<<:2;Y:Y9Y;5p<;1{:Y:Y:d;~<(X'<=޻;~ :d:Y:d;Y:d:Y:Zd;Y;d;;:p:Y:Zd:Y:Zd:ʜ;;p:ʜ:Y:Y:d;l;Zd:d:Y:Y:d;Y;Y:d:Y:Zd:d:d:d:Y:Zd:Y:p:d:d9Y:Zd;~;~ ;:d:ʜ<%;~:Y;Zd<5p;K:Zd:d;<1q<%;Zd:Y:Y:Y:d;l;Y:Zd:Y:Y:Y:d;5p:d:Y:Y;1{;p:Y;~<<ܪ:d:Y:ʜ;~ʜ;~ʜ;K<>;:ʜ9Y;5p<^I<ܪ=@=){X=u)<2;~ :Y:Zd:d:Zd:Y:d;1{<<;=){X=5p= a<ܪ<5p:d:Y:Zd:Y:d;~;K<~;5p:Y:Zd;<><<~<><ܪ=.=A^W=E=7!= f<:2;d:d9Y:d;Y;5p:d:Y:Zd:Y:Y:Y:d:Zd:d;Y;5p:d:Zd:d;~ʜ;~;Y:p:d;Y;5p:d:Y:Y:d:d:d:Y:Zd:Y:d:p:Zd:Y:Zd:d:d:d:ʜ;~ <><5p<%;K:d:Y:d;Y:d:ʜ<<<%<%;Y:d;K;;:d:Y:d;d<^W<$T<2<>;Y:Y;Y<<^W<:Zd:d<<<<~;d;~:d:Zd:Y9Y:Zd<><ܪ=[<$T<ܪ=8r="4=.=%<=[<7<1q:d:Y:Zd:Y:Y:d;Zd;5p:p9Y:d:ʜ;Y:d:d:ʜ;K<;p:d:d;~;:ʜ:Y:Y:Zd:Y9Y;Y;d;d:d:Y;Y;K;p:d:d<<:2<%;5p:Y:Zd:d:Y:Y:Zd:ʜ<%|=߂=^=Rn1=@=.=em=a=є=i[=I==|= =1{=O=|=v={a <ܪ:d:d<==a=-> l=o==h =7!=V= ==i[==j=y6=د==V=엑=== =Y;Zd:Y<=rG=h==̾=/=8D=$=V=.==6P=ϖ7=O==c==O=d==p=<:ʜ;l<ܪ=QK=|;=h =q<7=Mn= =a= =QK%>t>==c=[=){X=4?= =̾=V=鿗=1{=޻= f;H1{P>"> G>=,=Y=+=(X'= ==LZ=B=د=d="4;~ʜ<~="4=rG=[=QK<̾><:2<=7!=%==x>>K=ܪ=+K=h ;~ ;Zd;Y;Y;d;p:d:Y<<<ܪ<%<<;Zd:Zd:d=V=9=<=׌=d="4;p:Y=~= =O=y=йh=є== =Y=D=HM=a7=/+K<$T Tc>=є=D;<1{=3==,==v=X'=={X=޻=[=YE==?=2;Y;K=#d=B=)==p#=l=q$T=`y=){X<<5p<(X'<><%<(X'<2<ӑb;d;~ʜ;Y< ;1{:Y:Y:p:Zd:Y:Zd;1{<<%;Zd9Y:d;d<%<;#d:Y:Y:d:ʜ:d:Zd:ʜ;ʜ;d:d:Zd:Y;1{<%<ܪ8r=y6={X=`y="4==8D=== u=ӑb= u==D=D=c=2=4=p#<ܪ:Y;~=]=I>+0!>=>&^=V==em=h ==̾>>>E>%>>b>> l>>=I= =E<~;d={a =B>;c>U>:Bf>E=====B>>* >.>#9>P>>>>>==m>5$ >n=7==h =8r=0!=ӑb>o>>J>,\> l> >`>>`=엑=q=QK<(X':Zd;K:d:Y;l=$= =k= =Rn1=Q<$T="4=h ===c,=?==V=u)<%==8D=p#=y=5=h ==H==d=h =em=)=є=B>>(>> y=ܪ=0!={a ={a ==O=>`y=ۇ==2;;Zd=V="> G>(> ==y= ==>%>IT>av>^_>EM>!=LZ==a=O>>4>@;&>(=鿗=5>&Z> 12=2=8r=l=!>|>.P>R>k+>i>R>.>|===ܙ>J>=>Ph>8i>u=<9Y:d= a==߂=j=D= =4?=<є=%=">%>0H>?Z>=>.P>=̾>= =p#=0!=>>)$>pS==sj<><%=+=}l=5=h =<2=%=K =|;=3=8r=l=7!<;Y:ʜ<%<=[=HM<:d:d;Ko>)> >>>Ǡ> 12>=׌=0!==8D<7<===>>=>6>=pS>(>n>%> l> >`>E=йh=d=q$T=8D=8r=Y=8r=y6>:Bf>f>[Ѓ>n=<=;Y;d=p#=O>>t>>====={X=n=7!=Y<ܪ= f=l=>/t>X>M>J=4<:Y:Y===O=y6=ܪ=ä=D=?={X=y=;c<ܪ<> >m=AU=`y<~;p=B=h =8r={a =\=Rn1=Rn1=7!<:2< :ʜ:Y:Y:ʜ;dQ>>===8D='4=8D===ܪ=V=AU=˛ =̾==,=O== =Q:ʜ<5p=>>X>n>GW> ===q$T=޻= u> >%>.>* >t>)>>>>E=̾=rG*U>x>3>i->d=== = ==>">>=>H>E>96>.P>,>2ݪ>/>pS== <2:Yu)>U>n>K u>u)===l=N|=y6>>/>8D>2E>)$>">$1>* >$1> 12=|=}l>z> f=Y=[=7!=QK=Y=D=ܪ=>|==>?>`y>==,=k}=){X;~ <~=u)=n==5=@;&<1{:Zd:Y:Y:Y:Y:d;~ʜ;K;K;1{;K;d<~<1q<>;p:Y:Y:Y:Y:p:Zd:Y:d:ʜ:ʜ:d:Y:Y:p:d:d:Y:Y:Y:d;~ <:2<>;1{:d:d:d;~;ʜ<%<;5p:Y:Y:d:d:d:Y:Zd:d:d:Zd:d;d;5p:d>!> |i=̾=M"= =E=I>>,>=c,>;/>.>)=I=SR=9=̾=ʜ>>&Z>u)=D={a 12>@̾>Q4>2L===0!=s>>9>d<>>}>>vG>OMk>=_= >b>0>c5?>zr>Y!>=l=8r:p f>@>Q4>2ݪ=G=v=X'=>>@;&>k->>/>>^}>)$=鿗=|>8r>:>vG>j>pI>-v==%:Y;d=em=,>> > |i====H=E=>">A#>[>b>T">79> =c=^=s>>GW>`>GJ>r=SR<1{:Y:Y<={a =v==4=bZ<==l==ܪ>B>>r> =-=E=n=8D===A> ==h=:2;:Zd<$T=8D=z==M"==a=pS=sj=<;d;Zd:d:Y;<ܪ=a7=޻=\=={X=v=p==4= =h =){X> /=˛ =rG>+x>&Z>>>i>>r=== =Sb=Q=8r==H=->;/>i->`y>$1==){X<5p:d<~ = > >4I>C>=c,>/t>">">">pS==l=l=V=){X=8D=4>%>f 9>`>:>GW=I=8D<%:Zd+0!>;c>79>%>>r>`=e==y=Mn=/+K=~=7!=Ə> >Y!>q>>@;&=йh=;Zd;=C=>`y>r>Y>E=y6=ۇ=1{==|;=k}<ӑb<<$>G>A^W>Y=@<8r:Y:Y> G>|=={a =+===Rn1===|=;&======I=;<=:ʜ<=4>C>_>o&>F3>8r={X=h =D=rG=E=G>pS> a>n>">> >>>K=є=h <:2:Y<%=c>8D>d> a>j>f=c,==m==">>2ݪ>@̾>A#>9>.P>* >.>,>=%=3<:Y<=4>>>c>y >R>%==h =bZ= G=,> f>%>2ݪ>3oB>-O>&>$>'4>:> |i=Y=rG޻>'Ə>%=1{==HM="4={a ={X=˛ =>>>`y>>>=N= u=HM=;:Y<:2=/+K=l=k=u)=H1{<^W<%<^I=B=QK=[===X'==I=?=N|=d=8r=(X'<%:Y:Y;~<:2;~ʜ:Zd:Y:Zd;~<(X';~ :d:Y:Y:d:d:p:p;Y;Zd:d;~<є=4?=Mn=7!<ܪ=<є<%;;K;Y:Y:d<2==?==SR==7!=+=a7=u)=^===v===p#=@;&=A^W=l=y=9=d= =QKY>Cw>>=;&==f==ӑb>>pS>&>,SR>#d>=y=+K=d=є=>>#d>u)=D=|;<:d<^I=)>>9>GJ>,==E=X'=ǟ>Ǡ>(>F~>f>q>k+>K u>=Z==G>.>`>we>Y>=!=.:d>>9>GW>.====|> 12>.P>N>oW>>z=>Y!>* =엑=ǟ>>:>w>3>uhK>1(==q:d;d=\=1{>Y>> l=̾=l=={X=>)>,>BS>QK>IT>4s> f=;&=X'=ϖ7>@>O>i->Qܙ>=q> |i>8r=g=?=sj=@;&=l=> l>> Y8=̾=K ;K:p<#d;K:d:d;d=A^W={X=O=B=V=I=Z=엑=t`=AU===h =Q y>>==rG<>">n>J>%>>> l=I==8r===<===>3&v>[Ѓ>SH>t=!=.B>.>?>;e>.P>n>>>.=Z={X=|;=A^W=HM=7!=X'> >[Ѓ>6>>BS==;c* >=c,>9>* >>> ==2=8r=8D=Y<$T=+=^> 12>Tk>>{>==i[=){X;;d=P'=c,>Ǡ>z>> y=G=m=O==sj=.">GJ>A>)=<:Y:Zd<2=q$T=q=ǟ=ǟ=={X===7!<;:d:ʜ:ʜ;K==`=˛ ==鿗=q=5p;Zd:ʜ<;5p:Zd:Zd:Y:Y:Y:Y:d:ʜ:ʜ:d;5p<7=H1{=h =QK="4;Y:d:d;~ >79>@̾>=ϖ7=y=5p<$T= 5=l=+K=׌=엑==))=V=m==o=,= G=$;9Y<^W=>>W>e{>=c,=A=@=:2=Y=Jw= =">Ǡ>pS>z>>%>>)>==?=Jw<~ f>?>L,>-v=2=y="4=8r=QK=a=O>>`>>%>`> >.>Ǡ=B=Ə=5p;K;~ʜ=+=E=> =y6=d=8D=HM={a =Ə=="=ܪ=I=y=I=_=O=+K=n<:d<= f=a7==V=8r<:2;~ :d:Y:d;K<~<~;~:d:Y:Y9Y:Y:ʜ;Y:d:Y;~ <^W="4=7!=HM y>>:==f=|;=d= u=> |i>>(>+>=j=h=X'= >o>/t>?>,==y<:Zd;~ =T= > >">=̾=f=sj=d=O=A>>$1>5>8i>([>u=c={X=,>pS>D>ZR>BS> =d<є:Y:d=%=d=AU=="=d=QK=7!==H=E=йh=LZ> >>> f=Դ=a=[=>K>,>>=>,==<^I<(X'=8D=/=d= =A^Wb=I=d= f:d9Y;~ <^W=~<$T:d:Y;5p<~<%;d:d:Y:d;Zd;d;1{;5p:ʜ:d:d:Y:d:Y:Y:Zd:d:Y:Y:Y:ʜ;~ <<(X';~:Zd:dE>==g=Q0=y6=O=q==@;&=[< >#d>f=鿗==QY>">n>)>>E=e==I==7!=[<<ʜ=3=Z>* >K u>EM>J=?=+<:2:d9Y<~=h =,>%>'Ə>%>'>==V=;&===<&>G>C>=I=;K:Y;5p=){X=0!=o>.>`>=AU=Y=l= =8D=7!=>`y>d=>=t`= =Rn1={X==̾=HM=;Zd;5p<2=2=\=`y=@;&=(X'=8r=kt`=O>>'==Ə=QK<ܪ<^I<8r=(X'=l===ǟ=Y=6P==T==X'=bZ<:Y;d=;c==A>=йh=)=+ |i=o={X="4;5p<~ =QK=)== =+;~ :Zd;K<:2<%;Y:Y;Zd<>;Y:Y:d;K<~;;p:d:Y:Zd:ʜ;1{<~<^I<%=%=.=/+K=<b==;&=<$T<>:d:Y<==>>=-=|=D=X'==:2<%<%;K;~ =A=6P==H=3=.=+K=I=d=8r=T=+<:2;5p:d;~ <<<%<8r<~:ʜ:Y;~ <2=~=Q<ܪ;~:Zd:Y;<%;~ʜ:Y:Zd:d:d:Y:Y:Y;5p<%;d:Y9Y:Y:d;p<><:2<~;:ʜ:d:d:Zd:Y;Y;~ʜ:d:Y:d;Zd;d;;d;Zd:d:Y:Zd:p:Y:Y:Y:d:ʜ:d:d:Zd:Y:Y:Y:Y:Y:Y9Y:Y:Y:Zd:Zd9Y:Y:d:d:Zd:Y:p:d:Y:Y:d:d:Y:Y:ʜ;1{;1{:ʜ:Y:Y:Zd:Zd:Y:Y:ʜ<~==sj=P'=5p=~;Zd:Zd;~:Y9Y;Y;~ <~;d:d:d;<%;K:d:d:d:d:Y9Y:d:d:d:Y:Y:Y:d:p:Y:Y:Y:Y;Y;~;5p:d:d:Y:Y:Zd;Zd;K;~:ʜ:d:d:Zd9Y:d;Zd:ʜ:d:Y:Zd:Y:Y:Y:Zd9Y:Zd:p:Y:Y:d:d:Y:Y:d;5p;Zd:d:Y:d:ʜ;;:d:Y;#d<~<;1{:d:d;~ <><><><%;~ :ʜ:d;Zd;Zd;Y;;Zd:d:Y:Y:Y:Y:Y9Y:Y:p:ʜ:ʜ:Y:Zd:d:ʜ:d:Y:d;~ʜ;;;Zd:Y:Y:d;p<%<(X';;~ʜ;5p;K<><>;K:p:Y:Zd:d;;5p:Y:Zd:Y:Zd:Y:d:d:Zd:Y:Zd:Y:Zd:Y:Y:d;d<;Y:d:Y:Y:d;K;~ʜ;5p<^W;d:d:Zd:Zd:d:d:Y:Zd;#d;p;5p:Y:Y:Y:Zd:Zd:Y:d;d;;~:d:Y:Zd;1{<^I<%<(X'< <~;d:d:Y;Zd<5p<<2<<%:d:ʜ<~<<5<^W='4=7!=HM;#d:Zd:d:d:Y:Zd:Y:Y:d;;;K:d:p:d:ʜ:ʜ:d:Zd:Zd:d:Y:ʜ<%<5;d:ʜ:Y:Y:ʜ;~ʜ;Y:Zd:d<~<;K:ʜ:d:d:d;Zd<;d:d:d;K<%<>;K:d:d:ʜ;5p:ʜ:d:d:ʜ:d:ʜ;:Zd;Y;d;Y:Zd:Zd< ;~:Zd:Y:Y:Y:Y;l;~ ;;p:d9Y:d;d<~;;5p:Y:Y:Zd:Y:d;5p;1{;p;#d:Zd:Y:d;5p;Y:p:Y:d:d:ʜ;Zd;~ʜ;5p:d:Y:Y:ʜ;~ʜ;K;K;~:ʜ:Zd:d;Y;K<;;:ʜ:Zd:Zd:d;~ʜ;K;K;~ʜ:d:Zd9Y:Zd:d:d:d:d:Y:Y:Y:Y:Y:Y:Y:Y:Y9Y:Y:Zd:Y:Y:Zd:Y:Y9Y:Y:d:d:Y9Y;p<%<>;5p:Y;p;~:Y:d;5p:ʜ:Zd:Y:Y:d;~ <%;;Y:Y:ʜ<:2<є<ܪ<^W<8r<8r;K:d:p:ʜ:d:p:Zd:d:d9Y:Y:d;K;~ ;~:d:Y:Y:d;d<є=[==Q<ܪ<^I;~ʜ:Y:d;<(X'<~;l:d:Y:Y;5p;<^I<>;~ʜ;5p<#d<%:ʜ:Y:Y:d:ʜ;~ʜ;:ʜ:Y:d:d:d:Zd:d:d:d:Zd:Y:Y:Y:Y:Y;~ʜ;~ ;;Y:d:Y9Y;Y<%;~:Y:Y;~<^I;:d:Y:d;;p:d:Y;5p;;d:ʜ:Y:Y;Y;K;~ <>;K;Y:Y:Zd;~;;p:d:Zd:Zd:d;Y;K;d;Zd:d:d:Zd:Y9Y:d;Y:d:Y:Y:Y:Y:Y:Y:Zd:Y:d:ʜ:ʜ:Zd9Y:d;K<~;d:ʜ:Y:Zd:d:d:Y:Y:ʜ;d:d:Y:Zd;d<%;d;~;~ ;Zd9Y:Y:d;Zd;Zd;#d;~ʜ;;d<~<%;K:d:Y:Zd:Y:Y:Y;5p<=8r=[<ܪ<;~ :d:d<1q:d:d<^I=Y=7!=7!=7!===H1{=8D= 5<<>;~ ;Y:Y:Zd;Zd<=7!=bZ=Jw<~ ;~ :Y;5p:d:d< =*=QK=== f<<<5<$T=+=A^W=D=D=E=D=:2=;c=V=h =V=+<;~:Y:d:d:d:Zd:p;~ʜ<><:d:Y:Y:d;~ <=7!=em=q$T=QK=;~ ;~<;=^I=sj=D<%<(X'<%=8r=<^W<^I<;l:d:Y;~ʜ< ==$=+=HM= f=8D=E=IT=7!=.==7!=HM<8r:ʜ:Y:Y:Y:Y:Zd:Zd:Y:d:Y:Y:d;~ <#d;:ʜ:Y:d:d:Y:Y:Y:Y:d:d:Y:Y:Y:Zd:d:d:p:Y:Zd;Y;~;Zd:d:Y:Y:p:d;Zd;p;K;d;Y:d:Y;5p=Sb=A^W=@:Y:ʜ<="4=C=8D<<>;1{:d:Y:Zd:d;Y;K;~ ;d;;:d;5p<$T=Rn1=y=em=2<:Y:Y<8r=V=d===rG=Y<̾><ܪ=.=8D=p#= ==f==={X====k}<%:Y;~<ܪ=8D=`y=IT=~<^I<2=~=8D=bZ=}l==8r=3= =y==;c<2;H1{;Zd<(X'<5p=V= G={X= =7!<=-==X'=7!;K<%="4=rG=8r=V<7;~ ;Y:Y:d;p;;;1{;Y;K;d;d;~ ;K:d:Y:Y:Zd;K;;;5p:d:Y9Y:d<~<<<ܪ<ܪ;:p:ʜ<#d:ʜ:d;#d;~ʜ;Zd:d:Y:Y;Zd:d:Y:Y:Y:d<=bZ={X=є==[=;~;~<2=5p=[=[=H1{=8D=@<+K;~9Y;~ʜ<ܪ=V==h =Q< ;Zd<5p<8r;d:d:ʜ=8r=~=em=y=)=)=)= ==@;&<ܪ<="4=|;={X==E=B<~ :d;~<ܪ=8D=QK=+<%:ʜ;<ä=:2={a =8r=8r=`y={a =`y=%<%<%=H1{=Y=X'==V:d:Y;<^W=){X===+<:d:Zd:d:d:Y:Zd;~<(X'=8r=:2=D=+<<><:d:Y;=8r=h = == =d==/=l=0N|<%<%:d:Y:p<~=== G==|;=+<<%:d:Y<%;~ʜ:Y:Y:Zd:Y9Y:Zd:Y:Y:d;d<~;;~:d:Y;~ :d9Y:Y:Y:Zd;5p;d;K:ʜ9Y:Zd:d:Zd:Y:Y:Zd:Y:Y:Y:d;~;d;1{:d:Zd:d:d:Y:Y;Zd<5p<<><%:d:Y;Y;K;:ʜ:Y:Y:Y:Y:Y:Y:Y;K;;<~;~ ;5p:ʜ;Zd;~ =~="4<< :Y:Zd<~<@<<<==Jw=|;=}l=QK=~=~=@;&=P'=){X<;~ :d:d<8r="4=V=]=8D=~<2<%:d:d<~;d:Zd:Zd:Y:Y:Y:Zd:Y:ʜ<~<^I<^I;:p:Zd:ʜ:ʜ:d:d:ʜ;5p:ʜ:Zd:Y:Y:d:p:Y:Zd;<><5p;d:Zd:p;5p;Zd;Y:ʜ;~;~ʜ:d:Y:Y:d:ʜ:d:p;Zd;~:ʜ:Y:d:d:d:d;5p:d:Y:Zd:Zd:Y:Y9Y:Y:Y:d:Y:Y:Y9Y:Y:Y:Y:d:d:Zd:Y:Y:Zd;5p;d;d;Zd:Zd:Y:Y:Y:Zd;5p<<:2<ܪ<$T;5p9Y:Y<^I=7!=}l=8r=h =7!=~<є<1q:ʜ:Y:Zd:d;5p;~ ;5p;<ܪ=+=/+K=8r<~;1{:d:Zd;K<1q<1q;d;Y:d:Y:d:d:Y:Zd:d:Zd:d;5p;Zd:d:Y:Zd;5p;1{;:ʜ:Y:Y:Y:Y:Zd;Y;l;Y:d:Zd:d:Y:Y:Y:Zd9Y:Zd:Zd:Y:Zd:d:Y:Y:Y:Zd:Zd:Y9Y:Y:Y:Y:Y:Y:Y:d:ʜ:d:Zd:ʜ;l;Y:Zd:Y:d;Zd;Y:Zd:Zd:d:d:Y:Y:Y:Y:d:d:Y:Y:d:ʜ;Zd;5p:d:Y:Zd:Y:Y:p;K<><(X'<><><~;Zd:Zd:Zd:ʜ;5p:d:Zd:Y:Zd:d:ʜ:d:Y:Zd<><ܪ=8r<7<2<;~ʜ:Y9Y:Y:d;<%;5p:Y9Y:Zd:Zd:Y:Y:d:d;Y;;d;Y:d:Y:Y:Y:Y:Zd:Y:Zd:d:Zd:Y:Y:Y:d:ʜ:d:ʜ;Zd;5p:d:Zd:d:d;~ʜ;K;K:ʜ:Y:Y:d;5p;5p:d:Y:Y:Y:Y:Zd:d:d:Zd:d;5p;5p:d:Y:Y:d:Zd:d;Zd;Zd:d9Y:Y:Y:d;~;d;~ʜ:d:Zd:d;~ʜ;Zd:d9Y:Y;Y;:d:Y;Zd<~<(X'<;#d:d:d;5p:ʜ:Zd:d;<(X';d:Y:Y:d;Zd<<>;~ ;Y:d:d:ʜ:d:Y:d;d<%;p:Y:Y:d;5p;~:ʜ:Zd:Y:Zd:d:d:Y:d:ʜ:p9Y:Y9Y:Y:p:d:d:Y:d:p:Y:d;Y;5p;1{;;~ ;Y:p:ʜ;Zd;<5p<>;:Y:Zd:d;~;;~ :ʜ:Y:d:p:Y:Y:Y:Y:d:d:Y:Y:Zd:Y:d;Y:ʜ:Zd:Y:d:d:Zd:Zd:ʜ;5p:d:Y:p:ʜ;K;~:d:Zd:ʜ<%;~ :Zd:Y:d;;d;~ʜ:ʜ:ʜ;~;~ ;K:ʜ:d;d<@<2<~;5p:Y:Y:p:d;~;d;:d9Y:Y:Zd:Y:Zd:Y:p:Zd:Y:d;5p:d:Zd:Y:Y:Y:Zd:ʜ;~;5p:d:Zd;~ʜ;K:Y9Y:d;~;d;:d:d;:d9Y:d;d<~;~ :ʜ:d;Zd<#d;:ʜ:Y:Zd:d:d:Y:Y:Y:Y:Zd:d:ʜ:d:Zd:Y:d:d:Zd:d;;~:d:Y:Y:p:d:Zd:Y:Zd:Y:d;5p;Zd:d:Zd9Y:Y:Y:Y:Zd:Y:Zd:d:Zd:Y9Y:Y:Zd:Y:Y:Zd:d:d:Zd:Y:d:d:Zd:Y:Zd:Y:d;p;;~:Y:d<%<+K<ܪ<+K;d:Y;l<8r=8r="4=~:ʜ:Y:Y;K<:2;5p:Y:d;1{;d;5p:Y:Y:Y:Y:Zd:Y:Y:Y:Y:Zd:d:Y:Y:Y:Y:Y:Zd:Zd:d:d:d:Y:Y:Zd:Zd:Y:p:Zd:Zd:p:d;~;~ ;d;Zd:Zd:Zd:d:Zd:Y:d;K< < ;K:d:Zd:d:Y:Zd;Zd;~ ;;~:p:Y:d:Y:d;Y;Y:d:Y:Y:Y:Y:Y9Y:Zd:Zd:Y:Zd:Zd:Y9Y:Y9Y:Y:Y:d:d:Y:Y:d:d:Y:Y:d:Zd9Y:Y:d;5p;~ʜ:ʜ:Y:d;<%<(X';:ʜ:Y:ʜ;~:ʜ:ʜ;Y<%;5p:Y;d<8r<<<2<<~:d:d;~ <><~;~ <~:d:d<5p<%<ʜ<%<<:2<^I<<<;:Zd;1{<^I<(X';~:Zd:d;K<~;d:d9Y:Zd:d:p9Y:Y:d:d:d:Zd:Y:d;~ <:2= <ӑb;d:ʜ:Y:Y:Zd:Zd:Y:Y:Zd:d;Zd<%<<1{;K:d:Y:ʜ;~ʜ;Zd:d:Zd:Y:d;1{;<~<^I< :ʜ:Y:d:d;5p;K;;~ ;K:ʜ:Y:Zd;5p;K;p:ʜ:Y:Y:d;5p;~ʜ;Y:ʜ;#d;Y:ʜ:d:Zd:Y:Y:Y:ʜ;<:2<%;1{;Y:p:d<Y<;d:d;Y;~ <~;~ ;~:d:d;K<><<ܪ=3=A^W=Mn=7!=Y=8r<=<ܪ==){X=Q<<^I;K:Y:Y;Y<^I=U=;c= a<=<ܪ;d:d:Y;~ʜ;Y;5p;~;~ʜ:d:Y:Y:d:ʜ:d:Y:Y:d:d:Y:Y:Y:Y:Zd:d:p:Zd:Y:d:d:ʜ;5p;K;K:ʜ:Y:Zd:ʜ;~ʜ;Y:Zd:d;;d;;Y:ʜ;Zd<~<8r<є<ܪ;K:d:Y9Y:Y:ʜ<~<<є<%=="4=B=Rn1=;c=HM<є<1q;Zd:Y:d:ʜ:ʜ:d:d< <ܪ=8D=h =|;=q$T=Mn=<^W<:2:ʜ:Y;K<< << <~;Y:Y:Zd<~<ä<ʜ<$T<2;K:Y;~ =޻===?=~<%:Y:d;~ ;;5p:Y:d<<8r<:2;~ ;l:Y:Y:Zd:d:d:Y:Zd;#d<~:d:d===GJ=@;&=8D=.<;Y:Y:d:Zd:d<~<:d:Y;~<(X'<:d9Y:d<(X';K:d:Y:d:ʜ:d:Zd:d;<ܪ= <=<є:d:Zd;K<5p<1q;K:Zd:Y;<><(X'<;~ʜ:Zd:Zd:Zd:Y:d:d:Zd:p;5p;d;:ʜ:Zd:Y:Y:Zd;<~<%;ʜ;~:d:Y:Y:Zd:d;Y;d;~ ;~ ;Y:Y:d;d<><%;~ ;Zd:d:Y9Y:Y:d;Zd<;Y:Y:Y:Y:Y:Zd;~ʜ<%;Zd:Y:Y;Y<<ܪ=){X=:2=C=8D=Y<^W<>:ʜ9Y:Zd;Zd;;5p:ʜ:d:Y:ʜ;Zd:ʜ:Y:Y:ʜ<~<1q;ʜ;#d:d:Zd:Y:ʜ;l:ʜ:Y:p;5p;Y:ʜ:Zd:Y:p:d:d:Y9Y:Y:Zd:Y:Y:Y:Y:Y:Zd:Y:Y:Zd:Y:Y9Y:Y:Zd:Y:Y:Y:Y:Y:Y9Y:Y:Zd:Zd:d:d:Y:Y:p:ʜ;#d:d:Zd:d:d:Zd:Y:Y:Y:Y:Zd:ʜ;Y:d:Y:Y;#d;~ <~;Y:Zd:Y:Y:Y:Y:Y:p;Y<<:2;~ :d:Y:Zd:Zd:Y:Zd;Y;~ <~;~:Y:Y:Y:Y:d:d:Zd:Y:Y9Y:Y:Y:Y:Y:Zd:Zd:Y:d;K;~ ;Zd:Y:Y:Y:Y:Y:Y:d;d:d:Y:Y:p;Zd;:ʜ9Y:Y:Y9Y:Y:p:Y:Y:p:Y:Y:Y:Zd9Y:d;;K;#d:Y:Y:Y:Y;~<1q<~:d:Y:Y:Zd;K<%;~ :d:Zd:d:d:ʜ;5p;l;Y:p:Y:Y9Y:Y:Y:d:d:Y:Zd:d:Zd:Y:d;K;;~ ;Zd:d:Y:Zd;Y;~;Y:Y:Y;~<><;Y:d:Y:d;Y;d;:d:Y:Zd;5p<<:2<(X';~ ;Y:ʜ:Y9Y:Y:p;Zd;p;~ʜ:d:Y:Y:d;5p;Y:d:d:Y:Y:Y:d:d:d:Zd:Zd:d:d;~ʜ;K;1{;Y:Y:Zd:ʜ;Y< ;~ʜ:Y:d:ʜ:ʜ:Y:Y:Y:p:Y:d;K<~;d;5p:p:Y:d:d:d:Y:Zd;~ <<엑<7:d:Y:d;d;1{:ʜ:d:d:d:p:ʜ;<%<~;;1{<5p<^W="4=7!='4<7<<^W;d:ʜ:d:Zd:Y:Y:Y:Zd<<Y;;5p:Y:Zd;Y;~;l:d:d;K<><<<ӑb<;d:Zd:Y;Zd<~<>;K:Y:Zd:Zd:Y:Y:Zd:Zd:d;~;d;;l:ʜ:d:d:d:Zd;K<5p<%<%<5p;~ ;5p;Zd;d<%<Y;K:d:d=8r=A^W=V=8D<ܪ;:d:d:d:Zd<%<7=.=8D=><:ʜ:Y;~<^I<є<~;~;Y;~;d<%<><~;Zd:Y;Y<>;Y:Y:d;~ < :ʜ:Zd<~<1{=8r<<<<<<$T<ä<5p:ʜ:Y;d:ʜ:d< <;=V=[= ==8D;Y:Zd:d< <8r;Y9Y:d;d<5p="4<=;5p:Y9Y:Y:Zd:p:ʜ;d;#d:Zd:Zd:d:ʜ:d:Y:d;K<1q;Y:Y;d<8r<<;#d:d;5p;Y:Y;Y<%=*=;c=E=Rn1=f=n=X%='4<ӑb<;:ʜ:Zd:Y:d;~<><><(X';d:d:Zd:Y:Zd:ʜ;Y:d:Y:ʜ;;~ʜ:Y:Y:Y:Y:ʜ;~ <5p<%;5p:Y:Y:Y:d:ʜ;~;K;K;d<2<2<;~ ;d:d:Y;5p;:ʜ:Zd:Y;p<>;~;~ʜ;d=V=B=HM=a=/=a7=u)<<%<<~ʜ;;5p:Y:Zd;<1{=/+K=QK=Mn=/+K<ܪ<:2;d:ʜ:Y:Zd;<ܪ=8D=]=YAU=8D=<<;~ʜ:d9Y:Y:Zd:Zd:Y:Zd;~ ;~ ;d;:d:Y;#d;d;d;<:2==QK={a ==h =8D= f<ܪ;Y:d:d:ʜ;K< ==8D=/+K<=;d:ʜ:d:Y:Zd:Y:ʜ;~ʜ:d:Y:Zd:d:d:d9Y:Y:Zd:Y:Zd:d:Zd9Y:Zd:d:d:d:Zd:Zd;Zd;;;:ʜ:Y:Zd:d;l;~ ;;K;Zd:d:Y:Zd;~<%;d;~ʜ;1{;;d:ʜ:Y:Y9Y:d:d:Zd:Y:d;#d:ʜ:Y:Zd:d:ʜ:Y9Y:Y:Y:Y:d:ʜ:ʜ:d:d;K<(X'<(X';K:Y:d;~ʜ;~ ;~ ;<%:d:d<:ʜ;Y<="4=V=|;=8r=|;=bZ=H1{=5p=<7=*=7!=+=[<ä<;~ʜ:Y:Y;d<8r<1{<ܪ=){X=HM<ܪ;~ʜ:ʜ:ʜ;Zd<<<7<엑<8r;5p:Y;Zd;~ʜ:ʜ:ʜ;~<<== 5<ä;~ :Y:Y;5p;~ <%<Y;d;d<><;~ʜ:Y:Y:Zd:Zd:p<~<<1{<2=h =rG=p#=]=8D=Y<;~ʜ:Y;K=%=Jw=p#=|;=}l=sj=h =Jw="4<;5p:Y:p;d<ä=C=pS=={X==k}:d:Y:p:d:d:d:Y:Zd;1{<=[=7!=8D='4<ܪ='4;5p:ʜ<><ܪ=A^W=}l={a =A^W<%="4=;c=IT=D=7!=޻<%;5p:Y;l;5p:Y:Y:d:d:Y:Y:Y:Y:d;~;K;Y:Y:Zd;~ʜ<~<%;K:d:Zd;Zd;~ ;~ ;Zd:Zd9Y:Y:d:d:d:Y:Y:Zd:Y:Y:d:Y:Zd:ʜ;Y:d:Zd:ʜ;Y:d:Y:p:d:Y:Zd:Zd:Y:d:d:Y:Y:Zd:Zd9Y:Y:d:d:Zd:d;Y;Y;~;5p:ʜ:Zd:Zd:d:ʜ:d:Y;Y<>< <;Zd:Y:Y:Y;<~<Y;1{:d:Y:Zd:d:d:Zd:Y:Y:Y:d:d:Y:Y:Y:d:d:p:Y:Y:Y:Y:Y:Zd:Y9Y:Y:Y:Y:d:Y:Y:Y:Y:Y:Zd9Y:Y:Y:Y:Y:Y:Y9Y:Y:d:d:Y9Y:Zd:d:d:Zd:Y:Y:d;1{;~ ;~:Zd:Y:d:d:d:d:Y:Zd;Zd<<;~ :d:Zd:d:d:Y:Y;Y;K;~ ;~:Zd:Y:Y:Y:Zd:d:d:Zd:Y:Y:Y:d:d:Y:Y:Y:d;Y:ʜ:Zd:Y:d:d9Y:Y:Zd:Y:Y:Y:d:d:d:Zd:Y:Y:Zd:Y:Y:ʜ;d<~;p:Zd:Y:ʜ;~;K;p:ʜ:d:d:d:d:Zd:d<~<<~;:d:Zd:Y;#d<(X';d:d:Y;~ʜ<=[=HM<$T<:2:p:Y:d;K<~;;H1{:Zd:d:ʜ:Y:Zd;< <~;~:Zd:p:d:Y:Y:Y9Y:Zd:ʜ;~ʜ:ʜ:Zd:ʜ;~ < ;~ ;l:d:Y:Y;Y<<><~;K;Y:p:Y:d;p;~ ;K;5p:d:Zd:Y9Y:d:d:d:Y:Y:d:d:Y:Zd;Zd<~<>;;Y9Y:Y:Y:Y:Y;#d:d:p;5p;;l:d:Y:Y;d<(X'<(X'<%;d;Y:Y:Y;Zd<~<:2<^I;d:d:d;K<~<%<(X'<(X'< ;K:d:Y:d:ʜ:ʜ;Y;5p;5p:ʜ:Zd:Y:Y:Y:Zd:ʜ;5p;Y:d9Y:Y:d<~<8r<;Y:Y:ʜ;<><~;~:ʜ;~<8r==Sb=m=bZ=8D=B<<%:ʜ:Zd:Y:Y:d:Y:Y:Y;~ʜ<><~;~;1{<~:p:Zd:d;Y;d<;~ʜ:Y:Y:d:ʜ:d:Zd:Zd:p:Zd:d;~ <(X'<;~ :ʜ:Zd:Y:Zd:Y:d<,<~;Y;Zd;d<^I<;:d:Y:d:Zd9Y:Y;~<==[=.=9= G=l=[=8D=+=Q<2<%;Zd:d:d:Y:ʜ< :d:d;p;;~ ;<%<:2<5p;K:Y:p;5p;Y;5p:d:d:ʜ:ʜ:d:Y:Zd:Y:Y:Zd:d:d:Zd:Y;K<^I<8r;K:d:p;;~ ;d;K<(X'<;ʜ<><1q;d:p9Y:p< <%<%;p:Zd:ʜ<^W==.=/+K="4=%=u)=Q=8r<ܪ<2<<%;Y:Zd;~ <~ =Q;~:Zd:d<==Y<=<>;~ ;Y:Y:p:Zd:d;5p;Zd:ʜ:Zd:Y;<=<ӑb<%:Zd:Y:ʜ;l:ʜ:Zd9Y:Y:d<;5p:Y:ʜ;~ʜ:d:Y:Y:Y:Y:Y9Y:Y:Zd:Zd:Y:Zd:ʜ;~ʜ;~ʜ:ʜ:Zd:d;d<%<~;d:d:d<~<5p<%;:Y9Y:p;;;K:d:Y:Y:d:d:Y:Y:Y:ʜ;Y:d:Y:Y:d;Zd;~;5p:d:Y:Y;K<= a=:2=QK=D=.=<,;~ ;K;K;d;K;#d:Zd:d;Y;~ ;d;Y:Y:Zd:d:d:d:d:Y:Y:Zd:Y:Zd:d;Zd:ʜ:Zd9Y9Y:Zd:ʜ;p;~ ;:d:d:ʜ:d:Zd:Y:d:d;Zd;K<~<><~:ʜ;Zd<:2<><:2< <<%<<(X'<%;d:Zd:Y:ʜ;~ ;d:ʜ:Y:d;d==k}=%=3=V=u)<^I;Zd:p:Y:Y;Zd<5p<8r<=Q=A^W=kt`=|;=l=3=B=rG=V=8D=k}<є;d:Y<=h ==v= =7!;K:d:Y:d;Y;~ ;l:d:Zd:Y:d;K<%<><~;d;~ <:2=A=,=a=C=8D=.;K:ʜ:Y:ʜ;~:ʜ:d;==QK<7<:2;~;Y;<=8r=Y<<:d:Y;K<%:ʜ:Y:Y:ʜ<~<(X';~ :d:Y:Y:Y:Zd:d<%<5<<= f=k}=(X'=+=3=.="4=<8r:ʜ:d=AU=HM=7!<;=HM=V=޻=D="===׌==HM=y=}l=E>=ܪ= G=8D=~=3=|;={X=O>b>)>>`y=T={X=HM=5=\<=;:d<ä==H=!= =0!=p#=Q<7=$=rG=^= u=> >Y>=H=˛ ====H=C<ܪ;~ :Y;=8r=QK=h =B=<<="4=bZ== ==Mn=~<="4=. >,>6G<>">==[=5p=Y=8D=5=q=i==D<5p:d=8r=v=j>=엑=J=2==i[=9>&Z>OMk>[Ѓ>C> =-==[=p#= =̾=> l=y6=\=;Y:d>8i>EM>9>=V=SR==|;=%=˛ >o>>=!=A^W^>%>=o=?==;c=7!=l==AU==i[=d=7!<^I:d;d<~ʜ<ܪ= a=V==f===!=̾== G=K <ܪ<~;~ <:2<<<є<>;Y:Y:Y<>=Q=h =.=d=Ə=v=є=AU=LZ=7=?=p#= <8r>>(>==.=%<2=^=^=I=ܪ>`>* >4s>#d==y< >>==H1{<5<~;~ <=*=B==8r="4 > G>`y=&v=em= f=[=:2=y=D=y6> > f=LZ=2=d=M"==bZ=;~ʜ;~ʜ=5p=2> > G>==bZ= f=޻=`y=d=йh> y>"_h>$>Y=Z=={X=a=8r=/+K<5p:Y:d==޻=O=7==~=@o>@>n>u)=鿗=є={X===*<^I:p:Y>o=B=ϖ7=E=pS==H=Mn<=<(X':Y:ʜ<:2 l>|=O==8D)2>Mn>X>A^W>= =SR=8r=a7=|;={X==2==f<$T:d;Zd<$T= =>r>>=))=y6=B>>J/>|;o>>m))>A>)=AU=I=d=?=LZ>d=>.>'=|=h =A=~ =I=$T>>9>c5?>oW>av>%=د==X'=>?>+0!>:>#d=7=<ܪ:d:p;d<2=QK=a=D=h=!=c=,=V> |i>n>0H>.>pS=I= =y==.=>8r>pS>o=̾=rG<ܪ:d:Y:ʜ<><==8D=l= ==?===йh=-=m=є=y=7!==|;=k=+K======5p<;Y:d:d;~="4===k}=[=C;K;1{;~ <<%> |i=B==sj=u)<=~=$=B=|==m=E=\>f>7>>=>.P=A=HM=#d=~=){X=[=>%>(>=Դ=B<ܪ;d:Y:d<1{====m=Դ=>o>(>BS>K >8>B== fz>.>=O=m<;Zd:d<=f==c,==?=&v=ӑb> f> >)$>= u=]< l= = =~;K:Zd:Y<~=[=bZ==l=rG=a7=8r==,==D=rG<<~;<(X'<==h ==d==8r;:Y:d<%=5p=QK=5p<ܪ<:2;5p:Zd:Y;Y<~<=I=d=Rn1<$T<=8r=V==D=j=A=ܪ=!==8r=l=:2=ܪ=a=H1{< >>Ǡ=ܪ==\=)=sj=><>:Y:ʜ<ܪ==!===bZ<=)>pS> =V=c,=X'=޻={a ='4>79>>=>5$ >=I=0!=5=h ={a =k==i[=c=5=B;5p;Zd 12>> y=鿗="=_> |i>9>av>k+>^>:>Y=ܪ=D=X'==B>>* >)=Y=rG< :Y;#d<>=B==> 12>=<=O=ۇ>>>,>Mn>]<>U>8i>Y====D=#>">8i>!=7=y<$T:d:d;d<1{=QK=^===D=D=c=>>HM>([>'Ə>%=߂== =8r= ==B>Y>=;&={a <7;5p:Zd;Zd=Y=p#= G={X=^=޻=~=[=[=q$T=5p >$>J=_= >>>$>%=Y=h =B==Jw=޻>>D6P>av>EM> =4=%;~ :Zd:ʜ==`= u==A=V=AU=G>>,>1y>z=s=em<$T=~=QK=d> />R>n>ID> = G<엑;~9Y:ʜ>=N={X="4,>=>n=O=QK<>:Zd:d=޻=8D===.=B<(X';Y:d:Y:Y;d<ܪ=\=B=h =+<;~ :d:ʜ;~ =HM=sj==\==={a =K =/+K<ܪ;:p:Y:d;Y:d:Zd:Y:Zd:Y:p<><%<8r=Y=A^W=8D==/+K=M"=2=|=D=%==H=8r=޻=h=>K==Դ=0!==T=8D=:2=`y=3=f= =Rn1<:d:dr>@>z> l=Դ===3= ={X=˛ ====8D<~:d<^I=2=/=ä=V==?= G===鿗> Tc>>HM> l=AU=E== =%=I=I>==D=`y< :d:Y;<2=8D= =={X==8r=l=a=2==N=j=د=E==a7=QK=h =y=q=˛ = =a=:2< :ʜ:Y:Y;Zd=d=a==5p<<1q<= f=V=p> >!>pS==y<ܪ;Zd:Zd=c,>\>A> 12=d=~;~:d<^W=q$T=?=йh=AU=Y=D==i[=-===<$T<8r<ܪ===@>Ǡ>L>>m))>ID> 12=<ܪ:d:d,>A>$=O=V<>:Y:d<<;=;c=`y=a7=Jw=/+K=8r<2<~:p:Y:d;Y:d:Zd:d<><<ܪ<ܪ<1q;d:d:Y;Y;Zd:ʜ:d:Zd:Y:d<>;Y;~ʜ;K;K:ʜ:Zd:Y:Y;Zd<=B=~<ܪ<5<><~;<^I==7!=7!<=;l:Y:d<=8D=rG==`y="4<ܪ<$T=8D=h =a7=(X'<=Mn=0!>>z> =J=p#<:p:Y<~=Y=sj=HM=d=HM=3== ===U 12>$1>%==a7 f==d= a;9Y;~ <==Rn1==3==V=/+K=HM=~:ʜ:d<<==~<<:d:Y;~<~<~;~:Y:Zd;l<>:ʜ:Y:Y:Y:d;5p;p;d;:d:Y:p:d:Zd:Y:Y:d:ʜ;l;5p:d:Y:Y:Y:Zd:d:Y:p:d:Y:Zd:ʜ:ʜ:Zd:Y:d:Zd:Y:Y:d;d<<<<<~;~:d:Y:d;~ :d:d<><<8r;Y9Y;5p<>;Y:Y:Zd;1{<:2;K:ʜ:Zd:Zd;~ <%=A^W=n=GJ<%;Y;l;d:Y9Y:Y:Y:Y:Y:Zd;5p;Y:Y:Y:Y:d;1{;K:d:Y:Y:Y:p;Zd;K;Zd:p9Y:Zd:ʜ;p;K;Zd:d:Zd:ʜ;K;~ ;p:d:Y:Y:d;5p;Y;Zd:d:Y:Y:Y:d:d:Y:Y:Y:Y:d:ʜ:d:d;K<~<~;~ :ʜ:Y:d;#d:d:Y:p;=Q="4<7==:2=(X'<5:Y:ʜ:Y;#d<><<$T=<=<є<5p;l:d:Y:Y9Y:Y;K:d:Zd;~ <7===p#==}l=V=HM=5p<:d:Y;~ :p;;1{:p:Y;;d;Y:d:Y:p<%;p:Zd:Y;K<8r:d;Y<:2:p:Y:Zd:Y;Zd<= 5="4=Y<<(X':d:Y:Y:Zd<<(X'<><~;p:ʜ:Y:d;Y;~ ;~ ;~ ;K;~ʜ:ʜ:Zd9Y:d:d:d:d:d:d:Y:Y9Y:Y:d:Zd:Zd;p<><^I='4==d==4=u)=h =/+K<(X'<%=8D={a =3=8r=c~ =2<=<< ;K;l;~;d;K;Y:Y:d;p<~<><;;5p;~ <<$T=Q=8r<1q<;~ :d:Y:p:d:p:Y:Y:d;Y;<1q<~<5p<7=h =a=!==v=.=V=@<%<%;Y:Zd:d:Y:Y9Y:Zd;Zd<%<>:d:p;5p;Y;l:d:Zd:d:ʜ;d;~ʜ:Y:Y:d:d:d:Zd:p:ʜ:ʜ;~<<(X';p:d:Y<<5<<<==D=`=I======u)=y=sj=H1{="4<1q;:ʜ:Y:Zd:Y:Zd:Y:d;d;;p<~<:ʜ9Y:Y:Y:Y:Zd;~<=Y=5p="4<~;Zd9Y:Y:d;d<~<%<~;l:Y:Zd;Y;~ <:2<;5p:Zd;Y;d;~:ʜ:Zd:Y<%;p;Y;1{<#d:Zd:Zd;5p<~<~;;~ʜ:Y:d;~ <^I<%;:d;Y<="4=7!=<1q<;d<~<%;:Y:Zd<~;;:d:ʜ;1{;~:d:Y:Y:ʜ<Y<>=`y=l=p#={a =p#=QK= a<2<%:d:d<^I<$T=8r<ܪ= <$T<^W==@;&===^=X'={X=^===5=\=Y:d;#d<^I<:2;~ :ʜ:d:d:d:d:d:d:Y:Y:ʜ;5p:ʜ:d:Y:Y:Zd:Y:Y:ʜ;~;Y:d:d:d:ʜ:d:d:d:d:d9Y:d<=+=$==~<1{;9Y:Y:Zd:ʜ:d:Zd;<5p<><%:Y;> > =9=йh==={a =.E>=-=є=a===<ܪ;~ :d<=B=*=8D=C=E=D=D=K =YAU=`y=H1{=@<2< :d:Y;5p<:2<<ܪ< <><">d==엑=d=wx==a==>>>=ä=y=@=>%>:>8D> /=є=%=d==ϖ7>Ǡ>(>1(>===h ==Y=wx={X=6P==4=8D;p;d={a =o>n> ==D=u)===ǟ=>> >)=엑=E=h =.='4==I="===l:d;l<=8r=Y<=<5p<#d;d;5p:d:Y9Y:d<><<<엑<ܪ=~=7!=<є="4<^W<1q;~:d:Zd:Zd:d;5p:ʜ:Zd:d;K;~;5p;d:d:Zd;d<2<$T<1{<>:Zd:Y;K<<;~ 9Y:du)>ҥ>=p=kt`=8D=Mn= = =1{=>>%>==˛ =2={X==+;<5p=5>>A>[>=c,>=H=^=[=u)=N|=>.>79>R>R>9>=G=<==4=`yǠ>GJ>fV>G> ===^=>K>">Qܙ>pۈ>oW>Qܙ>([>== u==h t>6G<>n=Z=\==d==> G>?>[>[>?>J==˛ =D=޻=8D<:2:Y:Yr>#9>&>M"====y=Jw;Zd:Zd:Y:ʜ;~;d<%<<%<>;;K&>$1>b==d={X==>>=c,>B>)$=A=q=`yD6P>~9>{a >GJ>Y==> Tc>3&v>{>̚>~>~>GJ> =;&=)=3==t`>Y>r==d<%:Y:Y= 5=G>`]F>>>lN>1q>M">޻>(>V>Cw>O>Sv>{X>vG>/=9===->%7a>Ix>R%e>/+K=-=h ;~ <2=̾>9>q$T>y >SH>&Z> >u)>">F|>;> >D>>i>.P>K==c,=>-O>W>`>E=y<8r;=H1{=>pS>n>`=o="=>>J>9>Z>i->WX>1(>==Cw= G=> f>/>8i>n==u<>:Y;~ =HM=|;=޻=pS=M"= =I=ä=O=_=e>8r>b=׌=4=`y="4=2={a =I=Z=N=Դ=="4<:Zd;~<(X'<=k}=n== ={X==%=pS=f=Sb<7;;~ʜ<>>@>1(>-O> f==Jw=B<%<ܪ=%=l=u)=f=@;&<:d;~ʜ=~=B==q==_>%>:Bf>f>|;o>n>9=y6=n=~<=Y=em=0!===f=8r;~;~ =0N|=u)=v=p==V>i>Jw>{>3>|;o>?=鿗=bZ<ܪ<ܪ="4==H=h=s== =[;Zd;Zd==l= ===D=>* >ID>[Ѓ>F~>==){X=H> l==?=Sb;Zd:Y:d;~ʜ;;1{;;~ʜ:Zd:Y:Y:Y:Y:p:ʜ:ʜ:d:Y:p:d:Y:d;~;:d:Y;Y<(X';:d:d;~<#d<<<$T= f=5p=K =\=`y==<ʜ;~ ;5p=u)=v=~> l=I==2<ܪ>Z>vG>V(>Y=q={a =l=`=2=e>*U>F~>GW>1y>%=== u=={a <:ZdGW>N>.>ذ>J==SR=d=є>`y>7>{>G>K>~9>GW> >Y>=ܪ=^=+:d:Y<ܪ=O>M >BB>>>Y!>`y=!==K>pS>S.>޻>>,>M">f 9>5p> >)=$T=q=;c;Y<=^>n>oo>>z=>.==d=d=|>>C>>>>:>R>(>r>o=ܪ=='4;K;~=;c=є>w>"_h>%==/=a7=u==ܪ>P>?Z>`>aB>GJ>">=m=,==h <̾>;Zd:YY>޻> l=m=є=^= =V:p:ʜ<> f>%>= = =Y<~;pz>R%e>W>79>==> >0N|>x>>8>^>EM> y=є= ={a ==Y==r=O=3<:Y:Y=%>>pI>^2> >>aB>;/>8>L,>12>ܙ>?=H>>8>a7>"_h=a =~ > >=>pI>{>>K u>=V<:2:d=@;&>>6>>I>J>X>f>`>{>>{>F?K?HM? >N>v^>Qܙ>([>z>?>7=>&v>db>>A#= u="4:d:d=8r=>_>> >BB>d>av>_>y>`>?m? U>>6P>>QK>* >>E>>c,>T>`>Xf= =QK;d:Y<%=n=>9>U>M>=c,>1y>7!>GJ>o&>@>>I>s>v^>W>$>=>E>\>)>>:>8i=|=B;:Zd<%=,==;&===> l>>q>2>EM>Tk>L,>2E>~=̾=d==>>/>=c,>,SR==`=~:ʜ:d< l>pS>r=鿗=^=QK=){X="4="4=Jw=HM==4=n<ܪ;l> 12>>.P>Qܙ>{>>I>IT>=%=`y=V={a => >n>=1{=emz>#d>&Z>9>f>ذ>>j>> a>,==sj=}l={X> >Ix>a7>@>o=<:d;5p=8D=> f>%>,SR>)2>=c,>vG>~>&>6u>̙>m>2E==kt`==H=D>>Y>nLZ>G> =޻<:p:d=@={X=엑> >> >J>H>>>s>>i-> f= =7!=X%=d=G>1(>>=>:=ϖ7=V;~ :Y&Z>F3>Rn1>;/> 12==){X<ӑb=8r=h ={X====|;<5p;d:p:Y:Y;Y<(X':ʜ:Y:d;~%> > f==em<<<=A^W= ==I=-=O=h===pS=p#=:ʜ:Y/>~9>>}^>.P= u=3=bZ=l=D>u>9>_>`>A#>ҥ>^=t`=i[==3<ܪ:Y:Yi>J>Sv>n >pI> =h=d=h>E>EY>>w>0!>>c>8>!>=x==QK;K:Zd=Q=>nLZ>!>H>c,>~9>'===,>HM>hg>U>˿s>Ȟ>2>>R>9>*U>= u={a :>w>~>M">F|===HM=;&>Y>U>!|>>=>D>pI>C>/>>>=є=em$>;c>&Z=鿗=HM=C=P'==>n>V>~9>~>b>:>> ===O==){X<%9Y:d l>t>"_h>>8r=I=== =8D<;Y:Y:Y;~8r>&Z>/>==v=Rn1<ܪ<>W>l>Y!>8D>">>Cw>Ix>'>db>>c>ycu>3>K=c,={X==G>i>!>8r==$;Y:d=%=>k->0!>>>,\>k->X%>n>>j?O??>$/>k}>Y!>(>pS>0N|>pI>_h>>V>/+K=p<;:Y;Zd=8D> >_C>W>v>Ҷ>D>pS>6>!|>C?b?&?+ ?A ?>8> >Y!>F|>pI>D>엑>>X>_C>o=sj;:ʜ==s>WC>~>ŢM>'>>V>7> G>?Zn??"g?Q>{>a>V>^>IT>{>>>g?t>>>z==V=鿗>@̾>vG>>ycu>h3>c>u~>> >>E>n>+>>[>1y> >A>v^>|>ۇ>/>vG>o=<2:Y:d<~="4==-> />>>>*U>2ݪ>A>`>{>>7=>ͫ>fV>5$ >Ǡ===>&Z>`>z=>`>=h=K =,=l=!=>o>`> y>o> >Y>.==l==8D=$=H1{= =O==ܪ={X=K K> 5> y> l>> a>-O>!===p#=QK=[=~ʜ=h> Y8>@>`=ǟ=h >#d>4I>7!>;c>R%e>{>>ذ>8>m>`> =0!= =%= >0>\5>u)>vG>+x==HM;~ʜ<%==o>2ݪ>U>`>[Ѓ>g>>!>߂>>d>>w>~9>>>Ҷ>E>c5?=o=A^W;d l>@̾>d<>i->`>l]>K>I>">>> >D6P=s=9=>> a>Ѹ3>d>8>l]=LZ=8D;l,SR>F~>F|>9>A>vG>^2>>Ҷ>>>==l= >>i->>8>@>:= /> f==>">F|>k->u>Y!>n=c=em==={a =2>>Mn>bZ>5==:2;Zd:Y<5p=/+K==k=k}=l=rG=5=?==V==f=Jw<=<̾>==`y=Ə=ǟ=˛ =\=0N|;K:d;<<<~<><ä=Q=.<ܪ|>%=B==V<1{<>>f 9>>}>d>=c=p#=/+K=C=pS=ܪ>">BS>D6P>/+K>=엑=O===h Qܙ>es>>>>WC==4=8r==د>.>~9>>>a>R>.P>k}> ==SR=8D;1{:p<엑=йh>X%>>]>>`>=0!=/=>E>Ph>g>> k>BB>t>G>5$ > >o=̾=m*U>{>!>>.=˛ ==p#==>A> >>>v^>f 9>@;&>.P>>==bZ>&*>Y= =rG=[=Q=p#=>%>F~>nLZ>oW>U>5$ >> =B= u=k}=+<%:Y:d:Zd:d>>Y>`y=B==I=pS=B<;Y9Y:Zd:d:d:Y;5p=~=<є=8D=8rY>f>===`y=Y;;=h =LZ>8i>ZR>WC>9>pS>> 12>2ݪ>{> >>&Q>q>8D>>= u===m>)>>|=0!=+;~:d;>%>N|>0!>)>k->IT>Xf>N>X??>>N>BB>d<>2ݪ>t>.>j>>>>2ݪ=!= f:p;5p==˛ >Tk> >ܙ>>p>>>12>?O{??,o?R>_>y>o>fV>Mn>nLZ>uM>LZ?b>>V> y=<(X':ʜ<ܪ=X'>,>>/>;&>uM>K>>>X>s?%??>>{>|>o>i>R>x>>? >E><> =<%:p:Y< =7!=c>/>q>B>>nLZ>`>j>>>`>+>8>̾>>i>* >A#>w>w>0j>1{>>`=.<$T;5p:Y:d<~=%=d=>pS> >&>)2>,SR>:Bf>Y!>y> > >nLZ>?>r= =̾>=g>#9>av>>j>&Z=є=[> f>o>8r> f>>)=l==pS=V=5p=E=pS=Y==AU=^=Sb<;:ʜ:Zd;Y= 5= ==y6===6P=SR===K <%<==5p=}l=v===.=%;~<%=;c=4=>> /> >8r>>%>HM> 12=O==V=V=q$T= G=>8i>Qܙ>:2>o=:<:d;Y=+=D> >0N|>=`>:Bf>:Bf>E>f 9>u>.>|;o>;/=-=k=M"={X=A>i->>6P>}>_==K ;K9Y<^I= >:>?>fV>lN>b>c>a>c>~>Ѹ3>?>>d==є={X=D>79>S>e? >ܽ>>=B<~:Y<2=>>R>wx>z=>hg>i->f>s>>Ţ>,>%>(=;&==ۇ>G>ˉ? {4??>>n=}l;1{:Y<=>Ǡ>;/>[Ѓ>Y!>B>?Z>g0j>޻>q>4>>hg> l=X'==Y>.>c>C?Ǡ>v>>==+:d9Y<%=V=> f>> G>Ǡ=A>%>8>U>[Ѓ>@> ==l=kt`= G=>K u>BB>uM>3>@= <1q;Y<=`y===l=q=l=3===J== =C=@=Y=7!=pS=׌>r>==f<:Y:Y;l<=[=+='4<=<(X'<%;~ ;Zd:Y:Y:Y:d:Y:Y:Y:d;<%<>;~ :ʜ:Zd:d:Zd:p;Y;Zd:d:Y:d;;K;~:d:Y:p:d;5p;Y;~ʜ:ʜ:Y:Y;d<=Y=<<~:d:ʜ<%f>2ݪ> G==/=%<<2=8D=a=I> y> /=l=йh=!=a=8r=QK<;:Y<:2=8r>>V>rQ>Tk>%==`y=@=A^W=@=>8D>ZR>Zd>@̾>n> l=t`=1{={X=q$TpS>`>}8>^>==h =7!=q$T=>J>`y>>:>gy6>=c,>">Y=B=|=="4;:Y0>EY>+x=y=y="4=~=a7=>%>Ph>{>>{>>[>8i>> ==6P=޻="4;~ :Zd:Y:Y;p==f=O====H=<:2>:2>>)>.>HM>>= =|={X=p#<ܪ;~ʜ:Y:d:d:Y:Zd<%=~=O=QK=%|=j=I===k}={a =Y<%:d:Y:d;Y:d:Zd:Y;<%<~;~ʜ:Zd:p<1q= a=}l=a=X'=\=pS=8r=l=Jw=~<:d:Y:ʜ:ʜ:d:Zd:Y:p:Y:Y:Y;~ʜ<8r==,=5p=$=~=8r=8r;Y:Y:Y:ʜ<<$T[>)2>,>=B=c==B>>C>Tk>Mn>8D>`=s=I=== =Y===<7:ʜ:Yb>M >>>h3>8i>pS>'>C[>> >$ >>E>o&>9>P>> >, >`>z=>R>Ǡ=%<є:Y:d<ä=>%>q>>Z>)>k+>?`>A#>>}>p>Ѹ>->>Y>?>pۈ>C>/>:Bf>{>>>/> >Vi[=߂=P';~ :pV >>A >>k->F|>IT>>q>c>>ܪ>¥>q>u~>GJ>3>@̾>q>8>>̾>vG>=<:d:Y;K=Y=> |i>F|>`>W>>=>, >+>MO>I>BB>{X>>k}>vG>D> >> G>R>G>y>BB>Qܙ=鿗=sj<^W;K:d:Zd;~ <;==O>> l>>E>|> >">=c,>Q>WX>A>>== ===x>,>IT>:>=\=7!<<;Y:Zd:d;K:ʜ:Zd;d:Y;~ ==rG=Ə===d=8r=m=h =C=[<>=+;p;=Q=[=D=د=y6=~ ==Y=,=ϖ7===QK=q=.=V=pS=>5>Pp>;/> |i=d)>t>">pS>>">8i>=>+x=A={X=sj==:=鿗>`]F>>U>~>_=o==;~<~=bZ=i[>">BS>F~>9>4s>A>b>>|i>q>2L=i[==pS=2>+>Z>{? >R>>=}l;d:Y79>WC>V(>?Z>8i>K >wx>r>y>_C>>==<= ==ǟ>?>`? /?C?Ǡ> P> =z=;Zd:Y<^I=B=->%>@>=c,>'Ə> G>,>N>o&>y>Y!>A =c,=l=5=>'Ə>>a ? x>>`=A=,:p<~=7!=E=>> 12==s=ܪ>u>J>J>o=̾= =H1{=Sb=)=엑>QK>^2>>m>+=%<^I;Y<=L>=k}=q==M"=sj=h =|;= =M"=B=Jw=@=~==.=M"=ܪ>f>,> |i=<ܪ:d:Y;~ʜ;;Y:Zd:Y;Y;K;~ ;d;~ ;~ ;~ ;~:d:Zd:Y:Y:d:Zd:Y:Y:d;5p;~;Y:d:Y:Y:Y:Y:Y:d;5p;5p:d:Y:Y:Y;o> V==йh=h==p#=(X'=ܪ= =8D<~<%<=`y=> |i>%7a>)$>>=ܪ=?==l=Q<%:Y;~=~= ==̾>==bZ<%;;~ <=V=9>>n>&Z>>==c,=d=rG=HM<#d:Zd:Zd:Y:d<^I=2=}l==;c<;Y:d:d<(X'=q= = u>|> l>K=߂=̾={X=3=Jw<ܪ;d:Y:Y:d:d:Y:d<%<<;d:p:Y:d:d:Y:d;Y:d:Zd:Y:p:Zd:d<5p<%<><~;Y:Y:Y<%=:2={X=̾>===f=L>=8D=Sb=)==߂==,={X==|;=f=QK=D=X%=m=V=Y<%:Y;5p=~=9=B> >(>Y=i[={X=a=>:> >1y>5$ >* > == u====>K==^=7!;d;~ =7!=l>>D6P>OMk>8i>`==6P>>3&v>U>f>i>Z>9>>==>>8D>OMk>79==%>96>GJ>79>Y==O> >6G<>V(>i->m))>`>=>d=> l=A>|> G>KRA>n>T">==;~ :d:d<=Sb=I>E>>`=g=є=h=ܪ>u)>,>=c,>C>8i>>?=йh=|=йh=;>%>A#>3oB>|= G=Y>Ǡ==ä=d=~=8r=y=^= ==د=^=@;&<^W<;K;5p:d:ʜ;Y:Y:Y:Y:Y:ʜ>t>)=i[=>j>4>o&>&Z=D<:d:d|>8r==-=>Ǡ>pS>HM>o=D=`=H1{=QK= =_>_>J>of>&v>`=B=(X':d;5p==X'=>)>)>E=>=H>>%>([>r=i[==Rn1=Rn1=޻>>~>Դ>N>'>vG=-="4:Y;~=޻=d=B>[>8r=g='==x> > /==h==H=7!=8D==>`>>>I>Mn=pS>iv> >]<>=h <%:Y<>=Q=l=y=f=p#=;c=$= a=+=){X=~=ӑb=<є:d:d<(X'<ܪ==q<=<;~ ;Zd;Y:d;Y;K;;d;1{;d:d:Y;1{:ʜ:Y9Y:d<~:ʜ:Y:d:d:Y:Y:d;~ ;Y:Y:Y:Y:Y:d;K;< <:2:Y<5p=5p==̾=̾>=D=;=+=B=D==D=;&=̾=h=4==HM==a=k}==v=^=}l=h =4=̾=O=O=̾=v=k}=޻=@==^=?===u)=;~ :Zd:Y:ʜ<=;c= =4=a=rG="4=~=K =/==== = =n=bZ=}l=l= =a===p#<7<~;5p:d:Y;Zd<5p<:2<є=/+K=a=-> >=є=Mn;:dn>A#>.= =rG<5p;p=8r=q$T==d=k}===I==={X=B=(X':Bf>d>BS==rG<>;d==|;==f==f=)= G==d=y=Mn* >G>,=O=;c;d;<ܪ=QK===p#=Sb=D=D=L>===<<>;; =m= 9Y:ʜ<:2<5p;d:Y:Y:d;~;K;K;d<%;~ʜ:d:d:d:d<%<<^I==[<=<엑<+K<~:d9Y:d;~ <%=q=1q="4<7<:2:ʜ:Y:Y=Zd=K =$<^W=B=k}=2=@;&=Rn1=`y=QK=(X':Y;~<><ʜ=HM==<^W<<^I;~ :d:Y:Zd;Y;:d:Y:Y:Y:d:Y:Y:Y:d:d:Y:Zd:ʜ;Y:d:Y:Y:ʜ:ʜ:d:Y9Y:d:d:Y:Zd:d:d:Zd:Zd;<(X'<:2;K:Y9Y:Y:Y;~:ʜ:Y:Zd:ʜ;ʜ<~ʜ<<;d:p:Y:Zd:p:d;~<%<>;d:d:Y:Zd:d;5p;~;Y:d:Y:Y:d;5p;#d:d:Zd:Y9Y:Zd:ʜ;5p;Y:d:d:d:d:Y:d;Y;Zd;#d:ʜ:ʜ;#d;Y:p:Y:d;5p;l;5p;Y;Zd;~;~ʜ:d:Y:d:ʜ:ʜ:d:ʜ;5p;p;:d:Y:d:d:Y:d;Y;K;K:ʜ:Y:Y:Y:p:Y:Y:ʜ;Y;Y:Zd:Y:ʜ;d;ʜ;~:d:Y:Y:d;~;Y;5p:d:Y:Y:ʜ<<(X';d:d:Y:d;<;d;Zd;5p;5p:d:ʜ;K<<~;d;l:d:ʜ;d<^I<><;;Y;~ <:2<>;K:d:d;~;~ʜ:d:d;<(X':ʜ;5p<%<~:ʜ:Zd;1{;Zd:Y:ʜ;~ ;p:d:Y:d;5p;Y:ʜ:Zd:Y;p<>:ʜ:Y:Y:Zd:Zd:d;Zd;<1q<(X';:d:Y:Y:Zd;Y;<><;~ʜ:p:Y:Y:ʜ;1{< <~;5p:Zd:Y;~ʜ<%<5p;~ :p:Y;d;:d:d;~<(X'<<:2;Zd:Zd:ʜ;K<%=n==˛ =!=em<^I;K<="4=C=V=QK=E=8D=%<1{;:d:Y:d;~;p;Y:Y:d<< >`==%9Y;=Q=y=l==\=em=u)=HM=h ={X=,=2=엑=-= u=d=`y<=z>@=i[=+:Y:d<8r=;c==={a =8D=k}=5p=u==^W= u=|=={X=sj=HM=$==ܪ=I=9<:d<5p<ܪ=~<$T<ӑb<7==QK=l===f=n=7!<+K<==%="4=  l==X'=:Zd:d<8r=$=n=u)=9=Ə=SR====A^W<=<<< f> >)=̾=+:d:p>> =!=u):d;l;:Zd:p<~<=8r<$T<;d:d:Zd:ʜ;;K;~:d:Y:Y:Y:Y:d<~;~ʜ:Y:Y:d;1{;p:d:Zd;K<=Jw=`y=/+K<8r:d:d<^I= f=;c=Rn1=\=K =$<2<~<~">%==+:d:Zd<(X'=@;&==د=B==8r=<2=:2=9=˛ =>o> >=O=a=bZ==׌>9>y>r>%=pS;K:Y<>=8D=X'=O=AU=2==){X="4===鿗>o>>> y=AU=d=h ==>EY>6>6>:Bf=4;d;l<%=p#=d===V="4=7!=8r=!==o=ʜ>b=V=?=sj=){X===I>r>F3>F|> Y8=bZ:Zd:Y;~ʜ<=k}=7!=(X'<=<~ ==^I=޻=v=?==Ə=/=D<1{<:2;K;Zd:d:Zd:d<>u)>* >==H1{:ʜ:d<=/+K==d=?==D=ܙ= u==f===Y<=,>IT>=c,>=;K:p"_h>A>8D==l;~ʜ;~ʜ<= a=]=8r==k}=HM=l=Mn=<< <8r%>o==:d:d<%;Y:Zd:Y:d;;~ʜ:d;~ )>8D>* =AU=Mn;:Zd<(X'=8D=X'=K=_==<$To>u)> |i=_={X=8r={X> >_˭>>X>9=>pS>>=LZ=+K=f=N|>>m))>d=>>OMk=h<(X';Zd<2=a7=={X==`y= a="4=p#=0!=O=))>:> =A==y=U=3=I>5$ >j>f 9>=:ʜ;Y<ܪ=%=7!=;c=5p=޻;:ʜ:Y:Y:ʜ<8r=.=[=@;&<є:d:ʜ<^I=[=GJ={a =V==k}=M"=|;=8D<$T>,SR>n==V;Zd:Zd<(X'= =h =k}=?= ="=B==є==U="4.>S.>GJ>,\=y;~ :Y;)$>M>C> =l;K:d<(X'<==Jw=B===X'==sj="4<є G>r=Y=5p:d:Zd;d;ʜ:d:p;<=u)='4<<Y:Y:Zd;=@;&=y=pS=rG=;~:d<=7!=p#=M"=4=-=f=K =(X'=bZ=I>b>> |i=?='4:ʜ:Y;K<==H==D=a=H1{< ;=>hg>V>`=;;~<%=rG===>=\=;=1{=%=u=X'>8r>H>{>>k-> = ;K:Y<>=HM=p#=3={a =8D<=<=+=B={X=;&=׌==={X=h =8D==T>t>@̾>79==H1{:p:Zd;K<<==~;:d;Zd<=C==?={X=h < :Zd:d<:2=~=bZ= =d=v=?=v=޻=`y=Q<<5p;~ =~ > y>==0N|;Y:d>0>* ==jQ0;:p<(X'=~=bZ=M"=0!=h=є=!=Cw=`y=< y>.>'Ə==bZ;l:ʜ<^I=Q=V=[=pS==3=QK<$T<:2<~;~ ;;5p==+K=~:d:Y;ʜ<є=HM=7!=5p=[;:Zd:d<1q<є<^W:Y:d<:2 y=j=d<ܪ:Zd:Y;d<엑=H1{=h =H1{=[J> l=<7:Y:d<(X'<$T="4="4<><%;;<(X';Y;5p<==QK=p#=8D<:p:Y;~;Y:Y:Y;Y<є<ܪ<8r:ʜ:d;;d;:ʜ:d:d;Zd;Zd:d:Y;5p<~< ;l9Y:Y:d:ʜ:d:Y:Y:d:Y:Y:Zd:Y:Y:Y:ʜ;d;~:d:Y;<1q<(X';d:ʜ:p:Y:Y;~ ;l;Y;;~ ;Y:Y:d;ʜ<%;5p9Y:Zd:d:d:Y:Y:d:d:Y:Y:d;Y:ʜ:Y:Y:ʜ;K;:d:d;~;~:d:Y:d:d:Y:Y:Y:Y:d;1{;;1{:d:Zd;K<~:Y:Zd;d<==8D=Jw=8D=~;~ :d:d<%;Y:Zd:Y9Y:d<^I=Q=QK=l=bZ=7!<$T<%;~ ;d<^I<$T=2=A^W=8D=Y<ä;p;l;;~ʜ:d9Y:p<%;Y:ʜ:Y:Y:Y:d;1{;d;~;Zd<<7=a7=====p#=,8r>=G=O==y=rG=E="4>E=LZ= u=SR= ={a =V=7!=Q<ܪ<є=7!="4<=<1{<~;p;~ ;;1{;5p:ʜ;Y;l;Zd:d:Y:Zd:d:d:d:d:Zd:Zd:Y:Y:Y:Y9Y9Y9Y:Zd:d:Zd:d;l;1{;~:d:Zd:d:d:Y:Zd;Zd<~<(X'<%;:p:d;1{<%<Y;~:Y:Y;<(X'<^I>==1{=== =p#=;c=Y<<<>;~ʜ:Y:Y;Zd<~<(X'<%<Y<%<#d<<==C={a ==H=n=@;&="4="4="4=@=Q<1{=<7<8r<>;< <(X'<%;;d;:ʜ:Y:Y:ʜ;d;~ ;~ʜ:Y:Y:Zd:Y:Y:Y:d:ʜ:d:Zd:Y:Y:Y:d;Y;~ ;K:ʜ:Zd:Y:Y:d:ʜ;Zd:ʜ:Zd:Y:ʜ;d<%<~;~ʜ:p:Y:d:d:ʜ;~;<%<;#d:Y:d;1{;;~ ;Zd:Y:Y:d;;K;K;;Y:Y:Y:d:ʜ:d:p:d;Y;~;Zd;5p;d;;K;Zd:d:Y:Y:Y:d;~<~<%<~<~<5p<="4=QK=a7=QK=7!= a=~<=<:2<%< =@=8D=E=D=;c=8D=@;&=H1{=@;&=2=%<ܪ<<<;=~<=<є<%;:Zd;l<(X';d;l;~ʜ;1{;d<%<~;:ʜ:d:ʜ:ʜ;d<=8r=>=.<%<2;ʜ;K<:2;Zd:Zd:Zd:Zd:Y:ʜ<=%=/+K=Q<2<ܪ<~ :ʜ:d;d<:2< <<$T<ӑb=,=8D=@<>;Y:Y;H1{<є<1{<5p;K:Zd:Y;l;K;Zd:Zd:Y:d:d:Y:Zd:p:Y:Y:d:ʜ:p9Y:d;Zd;d<~;d:d:Zd:d:d:d;<~<%<%<>:Y:d<$T;;Zd;;ʜ;~ ;K;K;1{:ʜ:Y9Y:Zd:Zd:Y<ܪ= ==p=~=J>=د= =5p===rG=f=Cw=&v=2=v==Y >4s>.>8r=+K=p#=|;=={X==V=o==N|=l<@>i===z===޻=^==ӑb==йh==rG<><%<= =Q<ä;~ :Y:Y;K<%<~;~:Zd:Zd;Y;d;;d;Zd;;;d:d:Y:d:Y9Y:p;5p;~:ʜ:Zd:Y:Y:Zd:ʜ;Zd;Y:d:d:Zd:Zd:ʜ;~;d;~ ;;d;Zd:d:Zd:Y:ʜ;~ :Zd:d<<< ;:Zd:d;<1q<:d:Zd:Zd:Y:Zd:Y:Y:d;d<<5p;:d:Y:Y:Y:Zd:Y:Zd:d<~<<<~ <ä<(X':d:d<> y==X'=h =QK=h = =q=йh>>>A >>==׌=h=޻=:2.P>EM>/======>>=>_:>`>F~>*U>Y=A=йh==bZ<8r;~=h =>8D>U>=> l=h={X=!=s>8r>, >Y!>{>>{>>^I>79>=A=йh==Sb%>,>=V=={X=!=O>?>n>C>`>a7>F3>">?=ϖ7==5=Q;~ʜ<~=Jw==D=̾== =)=d==˛ =>r>#9>$\>=엑==a=sj=HM<(X':Zd:Zd<>=~=D=^I=V=[=n=B= =k}={X==̾>=O==9=|;=8D=.<ܪ<$T<$T<7<%>EY>=>=h= =pS==O> 12>+>/t>pS=׌= =(X' f>o&>ذ>)>^}>r==y>>>* >kt`>>ذ>{>>96==X'=p#=}l==> l>B=̾>==H<~:d=h >n>l>S>>I>5l> /> 12>>>KRA>>G<>>BB>aB>C=i[===Z>t>:Bf>9h>pS==HM:Y:Y=2>>>i->pS>NX>kt`>,> Y8>>>?>><>c>.>U>=׌={X==->$1>D6P>C>!="=D;5p<^I=Cw>r>?>A>$1>b=O=ܙ=l>%>2ݪ>Mn>W>A>f=y6={X==y=2>8r>">&> y==+;l:Y<=8r==Y=D=d=%===c=|=AU====.=2<ܪ="4=|;=E=Դ===q$T;~ ;1{<~<8r<1{<<Y:Zd:Y<(X'<ܪ=){X=]=`=?=>>>==-="4<!>IT>c~ >W>*U="=P'>5$ >aB>y >em>.=AU=P'=N|=4={a <7:d;K<2=Q=+=V= G=ӑb>>4s>@>0>[==%<><:2;Zd:Y:d;;d;~ʜ:Zd:Y:Y:d;Zd;Zd:d:Y;d<8r >>B=I=h =.=2=bZ=M"=D=鿗>>pS> />`y=o=ܪ= =4=a7<8r:Y,>|;o>)>\5>1(=n1=d=d=D=鿗>%>f 9>Y8>f>vG>Jw>.>> ===/+K:d:Y= =t`>i->J>Mk>>d>==O=>$>oW>0!>,>>y>>^>=c,>+> ==h ;d9Y=Q=>sj>c,><>w>->.==-> >=c,>>6P>T> >2>>n>G>5$ >pS=O=h ;~ @̾>k}>>->k->=ܪ=>>5l>|;o>,>>,>>>R>4s>n>E=?=5p;~;~ʜ=V=<>5l>WX>F|>'=˛ ==?=йh>`>=c,>pI> a> a>vG>C>>=-=h=p#<:d:Y)>&>* >=G=={X= =K <;K:Y:d<5p<ܪ="4=2=+=k}=k}=.===f=y={X====u)=h =5p:ʜ:Y:d;K<:2<5p;d:Y:Y===ܪ>>%=== =M"={X= u> 5>,>0H>=O= = a y>z=>`>q>t>,> y> > >W>>->Mk>V>j>z=˛ ===;&>>>=o=Cw<;~=SR>`y>>>>>3>X%>U>t>MG> ?L?x?[>5>}8>2ݪ> 12>~>,>i->v^>>c>)=/;~ <=>{>"?-?=H> 9> >u>|>E>۬??+0!?0?w>m >>b>7!>2ݪ>g>d>>H>>R=F+=8r:Y;K=k>R%e>>S>N>N>>>>>K>Mk? ?!`?%?>S>>aB>8i>5$ >n>0!>e>\>!>gy6==8D;Y:Zd=޻=>`>K> >V>g0j>K u>R>n>%>}>N> >>~>k->2ݪ>%> >;>B>0!>>)>C=йh=.;Zd;Y=5p=> |i>J>> f>Ǡ>>(>8i>Pp>l]>{>>jQ0>?>%=йh==q=m>&>Pp>Y!><є>=M"<%:Y:d<5=,=h =[==h=i[=鿗=g=ܪ=AU=Z=ܪ==f=.<=="4=p#=+K=AU=-=ǟ= =;~ʜ:Y;~ʜ< =7!= =I=2=l=Cw=~ʜ=V=2<ä;d:Y:Zd;K<==7!=8D=[<1q:p;~==q$T===u)=h =(X'<%<5p:d:Y:d;~ʜ;~ʜ:ʜ:Zd;l<ܪ=Jw==H=~=q$T=;c==<^W<5p;Zd:d:d:d:ʜ:ʜ:d:d:p:Y:Y;=8r=a7= =%=y=8r=y= G=k=8r=+>J>0H>0>=2=`y=HM=[=Q=8D==Y=[=7!> G>=>t>>&v>^>~9>$=+K=QK=C=p#=Ə=ܪ=A=~ = =2;K:Y />">#d>E><>f>&?>>!>\=y={a =z==d=y6> >2ݪ>t=B=%>n>)2>MO>>̙?d? >>^W>b=g={a ==H=q>>2E>@̾>* == 8r> l>+0!>k+>[>Դ>x>Mk>pS>2ݪ=h=E=`y=d=<>pS>"4>=˛ =h <%;= a=;=={X==O>>A#>lN>|>bZ>* =O=]:Zd9Y;p<>X>u~>W>)=p=p#=O=|;=X'=y6>%>H>Rn1>=>%>r>==6P==:Y:d=$>o>>}>6u>̙> a>%7a=K==O>%>av>/> >Sv>N|>>em>EM>2ݪ>="=8r<,:d=|;>79>?>}??m>̾>>jQ0>=e>%>Ph>0!>m ? ? >>ǟ>@>>fV>=> /=v<엑:d=[>;c>?m?HM?Q>`>d>#d> 12>&Z>pI>J???I?Zn><>,>>{>>Q4>k}=9= f:Y:Y=IT>>>-?NF>B>i7>^_>%=A>@>bZ>L>hK? ? >>ơ>BB>>f>>=> =d5$ >>U>A >aB>=|=c=>0H>z=>uM>p>Mk>D>>`>A>0H>Y==\> /=Դ==p#===I>z>C>d>f>Mn>,> =j=AU=I=n<;~:Y<~<7===f=bZ=8D=8r<$T=Q=8D=}l=0!=O===AU===y=h =$<;~:Y:d;K<:2<:Y;Y<==[>GJ>K u>,>=ܪ==>d=>_>`>>q>/+K=Q0==Mn=7!=~ʜ==Y=Y=X'=A^W<%:d=rG>1y>>L6>>p>>V >ID>i>)>C??HM?B>2>>4s> l=B>>GW>z=>~9>H1{=l=u;K<^I=>3>+??I?Zn>#> >>c?9?.?K ?P:??Z?D>_>>f 9>Y!>>¥>?>i[>~9==5p:Zd<є=>@>ʜ??%a?>>Վ>->N?vp?Ix?^I?c??V?3A?% >̾>pS>>є??!5?(?K>ŢM>:=<5p~>???]>j>!>*:>M??B]!?XV?]L?P?,w?>]>m>NX>?:?'Ə?1?.>>U=&v<;Y=H1{>>V>I>I>Ҷ>4>{X>{X>>E??.?65 ?&? E>>&Q>m))>fV>y>B?@?HM?:>&v>96=<ܪ:Y;~ =V=߂>/>Tk>[>[>]>h3>~9>޻>&v>4><> >>vG>9>pS>>96>:>{>Z>c>a7==rG=;&=엑>>#d>.>.>.>96>A^W>=c,>"===.= =?>>* >8D>%7a=t`=y<ܪ:d:d|> Y8>|=ۇ===\=|;=:d:Y:ʜ<~=5p==6P=V=鿗=AU= u=Դ=Q0=-=є=3=5p=Y=Q=@=:2=rG==p#=@<>:Y< =QK=?=>r>>>+>8D>Qܙ>x>|i>:>T"> y={X=|;=q$T=y=c,>Ǡ>>o==;c<:ʜ=8D=>>A^W>V>av>y>z>/>?Zn> >ŢM>pI>=0!={X=ۇ>8D>d>v^>o&>%=p<$T:d`>Q4>}8>l>w>>$/? ?&Z?1?%?>>1y=ǟ=D>t>>>H>MG>av==;c;Y<=>@>c5?>Ǡ>v^>>> ??/~?;Sd?,ҷ? >{>8D=O=ܪ>.>pS>)>+>8>o&>?=Jw;Y 12>F3>k->pۈ>o&>>c,>??"q?>鿗>>==>>w>t>5>q>C= u=%:Zd;Zd===> >"_h>#d>f>1(>i-> >W>ӵ>/>>&^=2=8r=k}=i[>"_h>[>k->?Z==[<5p:Y<%=8D=M"=====O> y>([>/>>===D=%=3=3==~ =鿗==<2:Y:Y;~={X>/t>~>M">>4s="=5=D=bZ==~>8D>av>hg>R%e>5$ >> 12==,== 5:Y:d=8D>t>Cw>1>ʜ>))>{X>A=LZ==ǟ>J>{>>>s>m> >c>>]<>A#>"=LZ=pS<;5p=pS>U>ӑb?Y? 8?~>엑>4>%7a>>r>aB>[?;?U?C? |i>⣧>>G>I>WX>n= =.:Zd;~ʜ=d>_>??'Ə?,o>b@>K>6G<>`>+><>?HM?*#?)?K>>Q > >>o&>2ݪ==K ;Y:ʜ=>2E>?r?&Q? >h&>{>>>K>n>t>͘? ?u;?vp? >T>>>6>av>$=̾=8D;l:Y=Q=AU>W>U>Q >c>a>%7a=s=h=>:Bf>`>L6>E>Q>Ѹ3>`>^>k->S.>0N|=B=޻P>4I>$\===]=`y=9=t`>)2>`>^>7=>m))>EM>*>HM> =ܪ==.<1q:Y:p<^I="4=l=8r=rG=8D<ܪ< l> f==ܪ====n=[<>:d:d<~< <є:ʜ:d:Y:d;~ʜ;K:ʜ;=:2=d=h=E==q$T=h ==u)=!=V=x=_=q=h <^W;~ʜ:d;~ <="4=+=pS>R>f 9>M>+0!> y=l> 12>5$ >>`>>>]<>=O=Cw=[=a=;&=-=LZ==,>>>K%>>0!>>n>>6P? |i?#'?(X'?>{>L>t>8D>!>;>{>>~>D>f>&Z=<<=,>^>"?{F?$b? ?>C>8>??C?Zd?`8?UŐ?65 ? >N>>>>}??#?Q>6>&Z=8r;d<7=>E??(?7jl?--?HM?I>j? j6?2pw?Y!?l]?r?j,?Q&?%>b@>>>*_? O?F3?O?<?l>I==<>=2>wx>*_? ?*#?%??>? ?/O?U3?i?n&?fV?M?#>F>ŢM>a>FO?%?M+p?U)?Fj?V>==:2;Y;~=H1{> >P>x?>}>>))>O>!>s+?Y?0{?Kv?Q&?GD?(?>v>>>k}>J? ?0??'?+ >A>\5=׌=A^W;d:Y;ʜ=Mn=I>A>>`>)>V>o><>c,>T?s? E?=H>>S>~9>HzG>k->J>(?>+>c>+0!={X=Y;p:Y:ʜ=H>q>96>GW>OMk>Rn1>Zd>lN>~9>|;o>_>.P>b=Y==_>"4>Vi[>n>[>=h=;c:d:Y;5p<ܪ==>>>>!>>==Z=AU=D=3=;c=8r<;=7!=l==Y=D=8r=;:Y;K=,=d=ܪ>^> l=~=˛ =4=8r=QK=<>:ʜ;5p<|=߂=h==f=p#=5p<єo>pS>> y>|>E> f>=O=HM=V=<є=A^W=h = G=D==˛ =޻= f;Zd:d<==d>|>.>D6P>Mn>Vi[>`>|;o>o>9>>j>==a=\=ǟ>&Z>n>>f>ҥ= >V>_C>>>A >>N? ?I? >_>[>E=s=y>6G<>> >>>>=h ;:Zd=HM=>EM>v^>>>e>Sv>}?x?6k?Aݼ?4%@?W>)>G>>>>N?w?) Y?>ͽ>GJ=d<>:d=A^W=>Y>>h>>#>c??#?A?J?=c,?>w>Tk> y>">޻??,?m>T"=X'<>:d=0N|=_>A>7>>`>_h>J>6u?b?(Z?1?$o0?>4>1y=$T>>|>?o?+ ?[>>+=;~:Y<=d> />EM>g0j>fV>Vi[>a7>P>>鿗>>ܪ>>EM=t`==>0>I>>>I>`=w=B:Y;Y=HM=d=>`y=A=_=_>>+>F|>Qܙ>=>V== ==pS=O>>MO>^>0=˛ =8D;~ʜ:Y;K<<<=;Y:Y:ʜ;K;~ ;~:d:p:ʜ<Y@>jQ0>B>l]>'Ə=ǟ={a =HM===O>d=>C>IT>9> > f=='=I=}l<2:Y:d=u)> > >Ғ>>ۇ>z>2ݪ==d={X>>^I>>͘>)>>>l>Ix>2ݪ>==8rA^W>8? Y8?G??>ي!>uhK>r=AU=~>F|>'>?V?(?>$/>>v^>vG>G>pS== a:Zd;~=>ID>N?b??[>Q0>_C>n=>r>l>Ҷ?(?#1?#?&>'>ˉ>c> a>f>* =,=H1{;Zd;5p=p#>%>^>? ?y>]!>`y> ="> y>_>;&? ?z?}?>O>L> G>:>Z> ==8D;:d= 5=O>HzG>es>>{X>j>=?==s>(>> >]>O>/>>>a>k+>Pp>.P===:ʜ:Y:Y<%=Sb=>>%>'=O=~=@="4==˛ > G>Xf>I>>f>A>+>> f==d=7!^> l==I= =?=d==HM<(X':d:Zd:Zd:Y:d;9>W>Jw>,> l=-=#>>Y!>|i>M">>Y!>!=_=v=pS=k}=?=йh=ܪ=={a <2:d:ʜ=D>o>|>5>7>$/>R>_C>av>n>U>E?`??>>$T> k>a>B>+>9>q$T>c>t>v^>* =<2:YR%e>j????k}?<>B>>+p? {4?1̬?NN?V2?M;?0?Q>>^2>>x>ֲ??&?̈>>,=f<><=2>l]>q??0{?+?z?>?y?'k?N:?d?k?d?N?(3?r>Ϻ>>?!`?H?RI?BS?>=ϖ7=:dA^W>s??&?%7a?[?(>~? ?&+?L?aI?h?aB?Mb ?'k?NF>ܙ>6P>j?'Ə?O7?Y!?M ?Cw>c>=H=X%<~:Y;5p=*=ܪ>u~>I>ʜ?NF>>6u>H>x? 3?(3?B]!?K ?C?*C? >O>S>?>I?ғ?6n?FF?4?\>==f=c,>^>>>>>> k>_>? ?NF>+>>12>^_>F|>o&>ݪ>? h>d>J>9h==8D >+x>?>Ix>Ix>Jw>X>nLZ>>^>nLZ>>=>%=߂=Y=g>&>^>~>k->+0!==V<ä< ;5p:Zd;~=u)= =O> >t>n>>==o=鿗=ǟ=={a =7!= a=8D=l=D=˛ =2=5=Y> l====[=`y= a<>;~ ;ʜB>= ====em="4`>>>.===x==!=[=L>=C=V=y=> Y8>> = =Zd<~:ʜ=%=> 12>9>OMk>V(>X>Y!>j>> a>I>GJ>=!==?=>Y!>>>>Mn=ۇ="4:d:Y<=->z>g0j>>y>!|>BB>MG>׌>>?>>;&>hg> =ܪ>>d<>H??S?? U>'>?=;:d=5p=Q0>V>>>8>;&>I>?Q?&Z?/=~?$8?NF>>8i> >.P>V?"?BS?Oq?:=1{ >lN>>W>uq>1{>>}??0N|?:T?+? >&v>BS>>@;&>U?%?SZ?^q?O7?4>[=OV>K>MG>&v>2>>!?D?C?#3?I>N>>)$>>2E>{X??H?T_?B܇?Ǡ>l={X<:d<==D>>Z>|>{>>c5?>av>~>O>йh>O>Z>>8i=t`=O> >c>?HM?%?>>,>==:d:Y<(X'=C=h>|>>==鿗>>n>96>@̾>1(> f=̾== G=>>T">E>0!>>z=3<:2:d%7a>=c,>* ==d=+> >u==={X=)=h =8r;1{:Zd<=>EM>N>>E>U>==Mn=`y=l>>iv>>,\>}^>U>2ݪ>>=йh=k='4;Zd:d='4> l>3>of>LZ>>K>.P=,==E>>{>>>>T>I>q>~>_>>=> G==yr>&Q>˭><>Q0>>9=d=v=O>/>> ?E?`y>Re>>>>`>6G<>E==8r:d:ʜ=5p=>oW>>h&>U>E>=h=HM= >&Z>->Վ>F>}>׌>{X>>uhK>V >.== G=:d:Y:Zd G>aB>I>i-> ==em====>Jw>>>jl>A >{>>W>@;&>* > =̾=p#<(X' >'Ə>"4> l= u==X'=̾> l>.>?>=c,>&*>|==k=={a =8r=HM=d=f=7!4s>f> >`>4>Mn>&>#d>Y!>>I>ֲ(>p>ן>P>X>* >r>r>0H>d>{>>M=G=}l y> a>߂??>> >3>>ŢM?<??&+?!5?u)>> k>>qm >E>>b@? 7>K%>>o=bZ;~ <%=l>>3???%?9>`>>ŢM>??; ?HU?B?+0!?>->s><>h?NF?(?7?%a>))>]<=>>(??O?)>>>p?I?,o?8?F3?A?*?>1>>c>]!? ?2?C?1(?>z=AU=9h<(X':d:d<%=>5$ >̚>%>T>Դ>>>SR>F+?O{??"h?o?b>$T>=>>:>>v??)D?C>{>hS=̾>=Jw<;~ :d:Y:ʜ<==d>>bZ>>>{>>k->i-><>4>;&>Դ>)>>ҥ>tE>BS>.P>C>j> >v>Ҷ>>=d=/+K<<;5p:Y:p)> >([>#d> >)2>=>W>`>Ix>([>E=|== >>2ݪ>R>BS> y==8DE>8r==F+=Y=1{=Y=l=޻=bZ=){X==(X'=em=a===X%<ܪ;d;Zd:d;d= a====I=ǟ==3=em=8D=8r<8r<<~>=LZ=O=6P=== =E=(X'=(X'===f=> f>ҥ>%=n=p#<>:d>/>4s>4s>.>/t>C>5$ > =̾=HM=)=X'=엑>S.>>&v>>Q4=="4:d9Y<(X'=>?>A>q$T>~>y >x@D>>k}>>>>{>>!=AU==엑>WX>͘?b? >? >;&>>==pS;p:Y<;=^W>8D>E>>>?>es>q>>?NF>j>>_>`=>>>??DO?QK?A? >=<>:d=7!=y6>K u>%>>N|>>8>>1?Ip?.?>U>pۈ>J>>5$ >??&+?V2?av?S?A >N=O<5p:ʜ=+=Դ>:>I>E>>12>:>?>ơ>b>FO>`>c>M > Y8=LZ>(>Z??Mtz==0!;d:d<=d> >@>`>[>A#>96>K>y>Y>ذ>>Mn> =ǟ=>E>a7>~?S??+ ?HM>>J=E:d:Y<(X'=2={X=V>>K=ۇ=Y=O=엑>Ǡ>`>=йh== =Y=>:>[Ѓ>>>N>-O=pS> y=i[={a <;~ʜ:Zd:p;5p;p;Zd:Y:Zd:d;5p;Zd:ʜ:Zd:Y;~;~:d:Y$1>;/>(=o=k=){X>n>">>=ܪ===l= f;:Y<= G>>hg>:>i>!=^W=em= f=:2=>>Y!>I>>g0j>@̾>%->`=-=h=<=:ʜ:d<7=>*>{>>P>{>.=ä=l=/+K=|;=йh>8i>q>c>^2> >dXp>A>+0!>`=ܪ=d=5p;:p>Rn1>l>Ns> /=d=0N|= f=p#=1{>.>~>A >BB>>Z>:Bf>"_h> ="==.<~:Y:Y:Y;=C=> f>>={X=+|>?>i>k->Mn>.>>=׌==sj<~ ;:p:Zd9Y:Zd<(X'=5p== =V<;p:ʜ;Y>> y==O===p#=~<~:p9Y:Zd:d:d:Y:Y;Zd;ʜ;;5p:Y:d<:2=){X=y=E==E=k==h =8D<7;d:Zd:Y:d:d:Y:Y9Y:Zd:Y:Y9Y;5p&Z>M>Jw>)$====|>%>8i>K >Y!>MO>.P> f=LZ="==D= =A=йh=)=~;Zd:Y<=^>!><>>>>MO>>%>=>>8>:>+>q>!>i>A^W>/+K>,>HzG>u>!|>~9>n={X<:d:d=~=>?Z>>j>!>p>4>T">K>B>>O>>>S>8>y>x@D>_>f 9> G>د>j> >>o=p#, >pS>}>>$ >w>c5?>`>.>>˭>~>d>d>>es>}8>d>oW>>LZ?>$T>>"_h=<~ ;~ :d:Y<~=Mn=i[>GW>V>>>i->C>;/>av>>>ŢM>RA>c,><>}l>R><>GW>7=>Z> >>>== 5HM>3&v>2ݪ>">)> >'>3oB>Y!>y ><>we>Pp>* > =A> 5>,>i->|i>|>4s= =U<;<<5p;~:Zd:Y;~ == =h=1{="==O=,=O=> >> Y8=_=!== =pS=!=_>=LZ==@;&<$T<><%;;p:d:d<=5p==k}= G=y=l=B=+=<<Y;p;p;d<%<=){X=:2=*<є=8D=8r=%= =Jw<:d9Y:Y<~=B=rG==!=D==^==9= =O=[<<==V=Ə=ܪ>|==h=Jw;~ ;K=Y===I=====>?==c,= =\=QK={a =>P>`>>e{> a=I<1{:Y:d<$T=f=>q>+x>'4>([>+>5p>F~>N>=c,>="===?>'>>b>e>ۇ>f>=B:d<~=l=y6>1(>WX>_>Mn>H>Xf>t> a>!>z>HzG> =Y=!=7>Y!>߂? 8?0?vp>h&>C=/:ʜ:Y<=> 5>F3>k->nLZ>Z>R>d>>>8>%>]>%=i[=є>b>}l?<?8D?Iy?5Hq>>Y=;Y:Y<8r= >>6G<>U>T">=c,>5>BS>e{>E>Y8>uhK>=>o= =l=#>f 9>H?*?=>?(!>⣧>9={a :d:Y<(X'=Jw=є>Ǡ>Cw>J> l>|> l>HM>.>4s>#d>B=̾=f=pS=c>"><7> ? a>j>.=-= f:Zd;Y<=i-={X=2=h=4==Cw===D=+K==rG=K =QK=|;=>%>ycu> a>f> l=p#<1q:Zd;d=<$T=5p=h =h =<є="4=.=7!=2=[!>">8r==[=`y=/===>>>pS>=o=V=AU=O=D=O=_=|==>;;1{=,=!> G>IT>Qܙ>0>=D=d=D>`>+0!>=c,>G>F|>4>>u)> >~>>* >=c,>* = =3<:d;Zd=HM=Ə>Y>BS>N>79> y=Y=?=_>P>5>IT>Y!>T">;e>n>Y> 12> >>D6P>b>IT>`==~<:ʜ:Y:Zdu)>n>=엑==4==>J>0>;/>5l>@>8r=-=2=> >+>B>5$ >K==8r==O=q==^==c,=>?= =X'=7!<^W > G>>)=o==B=\=[=,>G>>of>L>WX=ǟ8r>pS>%>+x>Cw>?=2=3=em= =))>y>۬>>>|;o=ܪ<$T:Y:d`y>>> =ۇ={X=p#=H1{=[=ܪ>f 9>ǟ>->}>`=є<2:d>~>ذ>y >=[<=H1{=>o> G>b= =8r;#d:Zd;1{<8r<ܪ<~ <є;Y:Zd;#d<="4=QK=bZ=V=/+K<:d;<2= a=.=<;d:d:Y:Y;Y<^W=Mn=y===y=em=8r;d:Y<~<$T=7!=8D<$T<%:d:Zd:Zd;5p;~ :d:Y:ʜ<Y:d9Y:Y:Zd;~ʜ<%<=Q=D=[=A^W=.<(X':d:Y<%<==+="4<$T<:d:Y:Y:Zd=%=sj=޻=)=rG=*<==){X=h =)==d= =bZ=E=a7=8r= = ==)==*<^I;l:d:d:d:Y:d<<2<<>:ʜ:Zd:d:ʜ;#d:ʜ:Y:Y;5p;~;5p:d:p;Zd<>;~ ;Zd:d:Y:d;1{<~;d:d:Y:ʜ<(X'<є<<~ ;Zd:d:Y:ʜ<=5p=a7=QK=;d:d;d===a==Vz> Y8==~:ʜ:Y;~ <ܪ=.===V=q$T=y==f= G=3=H1{<7<><<>='4=k}=G>>K=<:d:Y;p<=[=@=){X=/+K=8D=:2=8D=/+K<ʜ<>;~ :ʜ;Zd<<ܪ=f=D==h=h <:Zd:d<%<<ä<^W<<~;Y:Zd:Zd:Y:Y:Zd:Y:Y:d;#d;Zd:ʜ:Zd:Y;Y;K;d;~:d:Zd:ʜ;5p:d:Y:d;;~ ;d;l:d:d;<<ܪ;<><<7<$T<є=Y=/+K="4<=<2<8r<Y:d:ʜ:d:Y;5p<5p<ܪ=.=@;&="4;:d:Y;Y;~ ;~ ;~:d:Zd:Zd:Zd:d;Y;;;~:ʜ:Y:Y;Zd<;ʜ;l:Zd:Zd;5p;;;;K;~ <~<;1{;~ʜ;~ʜ;~ʜ:ʜ:Y:d;~;~:d:Y:d;K<<;d;;d;~:ʜ:Y:Y:Zd:d:Zd:Y:p:d:Y:Zd;Zd;1{;;l;Y;#d:ʜ:Y:Y:Y:Zd:d:d:d:d:d:d:Y:Y:d:d:d:Y:d:ʜ:d:d:p:Zd:Zd:Y:Zd:ʜ;Zd;5p:ʜ;Y;~;1{;~:d:d;Y<;~ ;K;~ <;Zd:d:Zd;K<%;d;K;K:d;p<8r<ܪ==<$T<>;l:d;엑<<ܪ=B=HM=$=){X=$=3=8D=7!= f<8r;1{:d:d:p:ʜ;~;~ ;~ :d:Zd;~;~ :d:Y:p:Y:p;K<ä=Q=*=){X=~;Zd:d;d:d:Zd:d;5p;Zd;~;~;5p:ʜ:Y:Y:d:Y:Y;#d;K;Y:d9Y:Y:Y:Zd:d:d:d:Y:d;l;Zd:d:Zd:Zd:d:ʜ:ʜ:Zd:Y:Zd:Y:d:d:d:Y:d:ʜ:d:Zd:Zd:d:d:d:Y:ʜ;l:d:Zd;Zd<><ܪ=&=5p="4;Y:d:Y:Y;Y<7=;c=L>='4<;;Y<1q= =em=f= =8r=em=5p<=<:d<^I=8r=8D=QK=h =}l==p#====8r=8r;5p:ʜ<;Zd:Zd:Y;K<="4=GJ=A^W=8r;:Y:d;5p;Y:d:Y;~<(X'<%:ʜ:Y;d:d:Y:ʜ<(X'<~;~ ;~ ;1{;~ 12>>==#d:p:d<=7!==k}={X=l=c= ==4={a =$<$T<===8D=y=V>%>=c,>,=y6=Jw:ʜ:p>7>$1=׌=7!:ʜ;~<="4=Rn1=m=|;=B=B=em=+<2<1q<%<:2<==Rn1=N|=$T> y==<ä:Y;Y:d:Y:d;Ǡ> ===+<==bZ=E=> Y8>J>>)==D=[==Y>96>~ʜ>d>6G<=En>&Z>u)=J=[=sj=v=> G>3oB>F3>K u>=>=y6==!>d=>pS>h&><>q>pS="4:ʜ<==k=>>n> = u=@=d=O>`>.>A>U>Y!>GJ>$1==E=>&^>>O>$T>n >, =2:Zd >$>1(>9>:Bf>+0!>o== = =LZ>d>~>h>w=<;Y`y>8r>b==AU= =em= =B==ܪ>$1>0H>?=em:d:d;1{<>:d y>!>޻=,=H1{:d;~o>=鿗== =bZ=H1{=QK=h =>O>K >nLZ>`y>=d>u)>`=B==={a =em=m=[=6P>*U>t>>7=>A^W=<;Zd<ӑb=P'=)=E=ä=ܪ=>=l=د==[=]=QK=`y=|;=>n>k-> >>:=5$ >Vi[>EM> 5=|;;K:Zd;<=+=P'=kt`==H==H=`y=><=[=8D=;c=5p=% l>2ݪ>* =߂=h ;;Y!>* >%=ä=bZ=k}==c,>|>>5l>>]>8D>=鿗=!=,>8i>>׌>F+>> =/+K:Y;~ =5p=>>=c,>C>,==k=l=>o>.>Ns>o&>}>o&>IT>E=>M">j>"??>$T>l=pS:d;d=.=>%>8D>=c,>([=G===߂>>@̾>c5?>>:>~>V(>n=B>i>>?!5?#?> =-:d:ʜu)>>=Y=4=I=V>>8i>M>f 9>l>]<>6>8r=|=엑>Vi[>I?s? G>$/>IT=`y9Y:Y;d<==8r====y====>)> G>!>$>=t`= =}l= =>F3>`>!>R=<:2:Y;#d<1q<ӑb= f=.=[=.=h =.=====X'=M"=P'&>pS=o=D=޻=}l=p#=3= u>.>{>>>T_=AU<$T;=Q={a ==O=B>>">4s>5>"_h>=Y== ==>=LZ>Mn>BB>db>>> /=$;~ʜo>HM>'Ə>([>V==h==l===_>E>>h>q>d> l=Y:Zd<:2=Q=p#=a=h=s=))>==د==3=h =V=Mn=[=0!>pS>g0j>>q>A=< :Zd<~<ܪ=<є={a === =a==7!=<=<=<<ܪ=8D=>>>$>=йh==;Y:d<<^W=Y=2=2=[="4=[=QK=;K:Y:Y:d;Y;K;Zd:d;~ʜ=/+K===E=5=:ʜ:Zd;~ʜ= =bZ=*<%<~:d:ʜ<#d<2<==<є<~:Y:d<ӑb<=<7;:Y:Zd;~ʜ<<=="4=8D=8D=[:Y:Zd;=+=^="==̾=B<2;~(>Pp>?=A=">+0!>)=Y=`y==bZ=I=))>>4I>A^W>"===A>`]F>>N>x>>=E:d;~ =/+K=c>>=>EM>.P== ={a ==>$>ID>pI>I>{>>W>%> l>2ݪ>8?NF?!`? 8>>{>=d;Zd;d='4=9>%>8i>?>*===d=O>%>9>aB>>.>>>d>.>>9> ? 4?) Y?)i%? G>v^=N|;Y:d<2==>u)>"> l=D=d=X'=>>/>Luq>j>x@D>k+>C>r=y6>)>d>B?,\?u)>ߧG>Y!==H:Y;1{<7===c=E===u)==y6> y>E>* >/>">==pS=I>%>m))>>c>hg=;d;Zd;Y:d:Y;5p<=< <:2:d:Y;Y|>^=t`=c,=޻=`y=7!="4=4?=l=AU>&*>GW>@> =%<:2;5p<ä=Mn=HM=є=>Ǡ>>.P>1(> >==@=}l=f==>,>>>>f 9== f;l<ܪ=`y==̾>>>>.>@̾>C>4I>)=AU==/==%=Q0>SH>c>y>8>>=C:Y:d<=:2=M"=;&=>`>%>8D>96>&>o=ǟ==5={a = =I>K >̚>>X>,\>=8D:Y;d<ܪ=V= G==I>>Y>=A= =={a =\=@;&=Jw=> G>wx>>>Z=߂<ӑb;Zd=8r=<ܪ >5$ >.==p#;K:Y;~ ;d;d;d;~:d;Y< =rG==.=:2<%;K:d:Y;K:Y:d<>:d;=QK={X=ä===E;;<~<2="4=;c=+>+>%==K ;~ :d<%={a =˛ > l>=={X=(X'<^I==[=D=g>>n>> f=O=E=V>A^W>>^>'>i-=AU=Y:Y;5p<~ =q=x> >*>=,=|;=2==>E>&Z>GJ>]<>Xf>:Bf>=>n>>˭?:?M>U>7!=l:d:d<=޻=>i>$1>Y=O= =sj=^=>>:>^}>oo>jd>F|>=>(>M">N??>װ>Luq=:d:Y<1q=H1{==))>=y6=l==B={X=I>`>,>F3>V(>KRA>,>K= u>>>av>h>(>>~>>=0N|:d<^I=8D=.=^=a=B=[=bZ= =h=ܪ=\5>>>`=_===X'>`y>IT>K>{>3oB=<:Y;Zd<~;~ ;d;1{;~ʜ:ʜ:d:Y:d<%<<8r;~ :d:Y;Zd;d;<5p=q==X'=d=f8r>%7a>>=-=|;<%:Y<~==n={X=1{=> >C> >Y=-=q=B=@;&=+=B=d> >WX>>a>B=,<ܪ:Y:Y<%=޻=8r=D=B> Y8>n>3&v>5l>$1>>==pS=h =A^W=h =c>.>3>,>{X>{>> f=+:Y;1{<=l==>>J>+x>,SR>===f=`y=8D=Rn1=h>,>3>>V>{>> |i="4:Y:Zd<(X'=%===,=>>>=g=!=8r=E=.=~=[=5>b>T">B>>?=<:Y;<$T=P'=f=4=q={X=y=:2<ܪ G>==Jw;:ʜ8D>Vi[>===p#<~:Y<%=8D==ܪ==D=M"=%>>޻=9=c==>3&v>>8>>F3=>* >$> 12=|=v=<>:Bf>->D>~>`=O<:d |i>pS>u)= ={X= =D>%>]L>>~>1q=X';:ʜ;K:ʜ:Zd:Y:ʜ<="4=QK=H1{=<~:Y:d<:2=Y=`y=8r=)=@==y=]=Y >2ݪ>/+K>|=yǠ>o====8D<$T<<$T==߂>8>i->d<>+x=<;d=B=}l=0!=ǟ=t`>>b=_=q=p#="49>k+>fV>+=?<:Y >6>1y>b=<~:Y<1q==A^W=z==8r=n=2<;d;~ʜ;Y:d:Y:ʜ=@==ä=̾=y<%:d:Zd;K<^I:Y:d<< <>:ʜ:Y<><<<%:Y:Y:ʜ<Yo=-=pS)>`y=X'=~<^I:ʜ:Y:d;Zd;;~ʜ:d:Zd:Zd:d:d:Zd:d;K<;~:Y:Y:Zd:Y:Y:Zd:Y:d;d;Y:d:d:p:d:p:Zd:d<>;K:ʜ:Y;Zd<2=7!=h =`y=q;#d:Y:Zd;~ <1q;:ʜ9Y:ʜ<~:d9Y;~<^I<%:d:Zd;K<%<Y;~:Y:Y:d:d:Y:Y:d;Y;#d:d:d;ʜ<$T<5p<>;K:d:Zd<~<<%;;d;~ < <~;Y:Y:Y:d;~ʜ;~;~;~;d< <>;Zd:d:d:d:d:Y:Y:d:ʜ:ʜ:Y:Y:Y:Y:Y:Zd:Y:Zd:d;Zd;p;~ʜ:d9Y:Y:Y;5p<~<(X'<%;d:p:Zd:ʜ:ʜ:d:Y:Zd;<><^I;Y:Zd:Y:Zd:Y:Zd:d:d:Y;Y<2<===Q=C=u)==ǟ=D==d=|;=H1{=8D=*= f<7<^W<є<;:d:p;5p;K;d;d;d<%<<ܪ;5p:Y;K;K:d:Y;< <:d:Y:d;5p;Y:d:Y:ʜ<~<^I<^I<:d:Zd;5p;d;~ ;5p:Y:Y:d:d:d:Y:Zd;5p;d;~ ;K;5p:d:Y:Zd:Zd:Y:d:ʜ:ʜ:d:d:d;K;d;Zd:d:Y:d:d:Zd:Y:ʜ<%;~ :d:d;;~ ;~:d:Y:Y:d:d:Zd:Y;1{;1{:ʜ:Y:Zd:Zd:Zd:Y:ʜ<><8r<ܪ= f=Q<ܪ<1q:Y:d;~ <5p<:2<%;d;5p:d:ʜ;K<<;~ʜ;~ <;5p:Y:d;~ <%<~;5p:Y:Y:Zd:Y:Zd;5p;d;K:ʜ:Y:Y:Zd:Y:Zd:d:d:Zd9Y:Y:Y:Y:Zd:d:d:Y9Y:Zd:d:Y:Zd:d;<%<:2<~;K:d:Y:Y:Zd9Y:Y:d;K<>;~ ;d<~<;;1{<%;K:d:Y;~<~<#d<>;K:d:Zd<2=rG=X'==rG=< >%> 12>=2===l<ܪ;Y<%=Sb==O=є=.=a7=h == G==I> 12>ҥ>">J>=y=c==P'?>u)>r> l=-=̾=d=h E=~=!=]==Y=@;&=n=f=f=d= =7!%7a>Mn>EY>===[===> >`===kt`=8r<є=%=kt`=޻=9= =A^W<>:Y=~=>>=>o&>gy6>1y==4={X==Z>%>.>2ݪ>t==d=QK=u)=K ===O==޻=~:p<ä=!>&Z>Tk>Mn>"=I={X={X==د>>t> >%=_==QK=~=H1{=f==ۇ=̾>==/+K;5p;p=V=ϖ7>>%=LZ== = =k===O=I===sj<==Jw= G=X'=`=h =D=GJ=H1{=QK=V={a =y=y=h =;;Zd<є<ʜ=޻=@=Q<є< :ʜ:Y:Y;Zd<~;~ :d:Y;5p"4>;/>&=2===3==̾>8r>4I>V>`>K u>5$ >q>w==;&=5>j>3>z=>2E==I=h=O> l>>=>>d=>4>`>i->@>(>)=y6=d=@:d<~=>n>{>ذ>>GJ>b=6P= u=))>t>]<>G>s>>?>{>>GJ>+>===8r:Zd:d=bZ=A>K u>vG>f>,SR=V=c=ä=Z>pS>IT>_C>ҥ>d=>3>^}>.>%=x=̾=rG>u)=ܪ==={X==V>%>=>[>]<>C>n== u=v=sj<ܪ:ʜ:d>u=-=;&=={a =){X<8r;Y:ʜ<1q<(X'<%;~ ;d;<:2WX>o>d>@=N==є=Z>>ID>~9>>Y!>==B=8D=V=HM==د=˛ ==){X:Zd;~=>EY>>̙>J>>GJ>>>0>n>R>ڭR>^{>>d>,=~ =?==B>&>>]>9>=p<ܪ<~=?>b>/>>v>=>ycu>?>:>WX>&Q>c>6?><>>Y!>pS=Q0=>&>av>B>z>K u>=p#:ʜ;~=Y>>=>_h>>>>k->;c>9>V(>>;&>+>">ѓ>E>Q>==>+>k->`> a>_>,\= <~:Y= f=>Mn>>>>av>1(>r>pS>0H>OMk>I>@>f>>Y!>A ==!=>~>=c,>f 9>d>9==q$T<~:ʜ=8D=>> =9===O=LZ>>>f>"4>HM===8r=A^W={a ==>>==^=:ʜ:d<=D=p#=p#=l=B===a=M"=.=M"= =l=<;~:p9Y:Y:d<:2<7="4=.=.=7!=:2=8D=~<^I;l:d:d:Y:d;~;~ ;1{:d:ʜb>%7a>OMk>m))>b>5$ =7=`y<<<==K =3==M"=V<:d:Zd|>6G<>z=>->>S>{>ҥ= <===E===O===*;p:d Y8>C >>ן>>4>w>"==[=Q=h =4=O=鿗=AU==@;&<:Y<^I=,=l=8r=a=AU>n>_>`>A >>GW=G=<2<=+=B=c>>n>*U>==%<=;~ <5p=8r=p#=f=Ə==em<є:Zd:d:ʜ;:d:Y:Zd;Y<5p;K:p:Y:ʜ;<%<="4=QK=l=p#=QK=Q<>:Y=~=@;&==d=!==Y====y=,;~ <%={a =>6G<>M>6G<=j=d=h =^I=8r={X=->&>K >Y!>G>4?> >)>=O==@:d:Y<==ܪ>_>T>>">{>>=˛ =;&=i[>)>b>>y>>">޻>pI>Q>:Bf>=i[=8rJ>q>M?s>>>`>%>E>>S.>U>&? |i? {4>e>->>:>i->>]> 12=4<ӑb:Y=QK>n>>??7=>of>~9>%>%>.>v{>ģ?r??6?Ip>ݩ>uM>->x@D>Ix>r= <%=.=A>>>Վ>G>N>ݪ>`>> l>$\>gy6>(>"? ? |i>>>E>{>>^}>6==y!>I>>J>bZ>J=ܪ=s>|>3>zr>$>D>ɝx>>6>Vi[>8D>!>=="4;K:Y<=pS=鿗>r>w=I=SR= ===>J>=>[>]<>C> =x=F+==)=+<>:Zd;5p<>=+=\=n=Rn1=){X="4=8D=QK=u=>=c=i[=AU=̾=^==Zd="4<;:p:Y:ʜ<~=SR>%>X>Sb>#9=7=h==F+>`>C>we>~9>Tk>=є=|;="4=){X==v==2==$:ʜ;5p=>K u>{>ܪ>>>k->8i>79>T">%>˭?Ǡ? >FO>0!>Y!>)=_=ܪ>`>9>[>Xf>* =O=.:Y<2>>>d??J?I>8>NX>`>>j?#f??Z?EM?0H? >>u>?Z>>=>vG>0!>j>> >G=<=8r>>$ ?:? t?#1?M">>>l>??+>?>wx>{>>2>?Q?>G> G>r=Mn:d!|>?V?HM? G>^{>e>ן>D??3C?OMk?S.?Ek?>>>z=>~9>~>j?&Q??_C>0!>&Z=B;d;~ʜ=f>:Bf>> >v>y>7a>)>>T>_? ?#?(?>E>U>p>EM>F|>7>I>F?>;J>f>Y=n<~<^I=f>>K u>`>S.>@̾><>G>f 9>>>>W>&v>|i>GW>pS=o=>)$>o&>>>>7!=="4;Y< =8D=޻=E== u=鿗>Ǡ>)>>%>">n>z>b=2==YAU=|;=v=$T>J> > =c,=D<%:Y;==em |i>f>9>c5?>I>{>ID>B=M"=5p="4=<є== ==={a <:d > >/>Q4>^>>"?D>>>k-=~=y==-=y>>* >pS=د=|;>=c,>M>`>j>'?E?"q?-??#1?z>>* ===׌>#9>^>o&>Mn>=I=:Zd;5p=Sb=i[>&>Ix>Y!>i->>Mk?.?*?82?*V? > >0==E=>79>t>:>b>"4=̾="4:d:d=+=> />.>7!>=c,>k-> >???ͽ>Z>> /=d==ܪ> >Q4>bZ>C>=<;:Y>Mn>>>y>>{>>=q=V=p#==g>%>> y=ǟ=rG<:2:Y<(X'=Q=H1{=YAU=h = =h=>>t>Y=߂==&`y>=e=Q0=׌==4=\<^I<=>=c,>Q>~>&Q>K u==4==%=|>!>nLZ>m>@> a>n>K >79>!>==bZ;:d=h >.P>uM> ??9>w>i->%=>`y>?Z>8>s+? E? >b@>p>V> a>rQ>GW>=D=u);l={X>nLZ>??0?(3?9>SR>K u> >9>>"???2^D?3J?#3?9>>db>>>M>===a7:d;~ʜ=E>|;o>??'}?9?1?r>^W>hS>6G<>V>$? ?+ ?BS?C?.?>L>ͽ>P>w>Mn=\5=p#;~ʜ:d= >H>F+?\?&? O?b>)>Q4>(>IT>BB>B?!?5?5 ?"g?Ip>>4> >d>;c=ܪ=C;~ʜ==>d>'>i>b>{>`>=A>>>i->t>{?-?.>F> ><7> >n>C> y=k<$T:d<~=h =>=c,>i->^>+0!=엑===ǟ>>K u>;>9>^2> >b>9h>%7a>==="4<%9Y:ZdE>pS>>~=ܪ=2=SR=pS=em<=<%:d:d<~<> =鿗==kt`<2;5p:dY!>>M">nLZ>5$ >)> y>>T">A > >of>y>y >$\=ۇ==k}=є=>>.=y=pS>:? 7? a>>>>v^>9>A >x?A ?9z5?@?-? >;&>|;o>=>4I>Z>&Q>>ơ>y>5$ = +x> ??2?:?*V? .>>װ>?) Y?U3?j,?o&?e?H?I>i[><>E>J??%?+?I>8>.={a :ʜ:Y=U>A>?"q?C?K ???"? ?<??F?h?x?{*q?v?_p?0{?b>v>-??*?N:?U)?D? b>7==ҥ>??4s?@(?5p?es? ? ??D6P?e?w/G?yA?sN?\?-->>>Mk??1q?T,?\+?M+p?YJ>A =鿗=@:p<:2=I>g0j>Ѹ3? E??]>;>>b?z?"M5?H1{?]?cq?Yw?;?Q>Е>>7a>??E=="4:d:Y9>Y8>̚>8> >>̚>Hq>e?y??}>">>}>Mn>IT>4>0E?I? >B>~>0H=d<ܪ:p:Y`>#d>:Bf>K >[>bZ>nLZ>:>P>>i->/+K>b=1{= u>>=c,>qm >>k->* ==1q;K:ʜ>z>===ۇ==E=~ʜ=){X=~="4=p#=0!=йh=~ =Y= =;Zd:Y;~ =Y= =̾=-==ܪ==M"=n=2<% >> y> >>#d> >==bZ=+=(X'=8D=sj=a===Mn<8r:d:d >:>GW>Y!>u>N>.>Ҷ>I>>EM=ܪ=HM= =>=H>2ݪ>C>+x=-=|;>IT>~> a>o>2>!? ?&?2?(3? >&v>?=ܪ=O>pS>t>P>;&>>R=B=2:ʜ:Y<7= >:Bf>4>>G<>;&>b? ?1?Ph?Ye?P^i?,>m >~>)> 12>V >!>? }>M>G> =[<~:Y==_>K u>&Q>n >>>x?_U?>>>>n>? /?}?NF>>,=pS<(X'5>>>>)>>ʜ?%?E}?N?B?.>j>^}> l> />R>s>?> >3>%==H;d<%==>79>X>\>Y!>u>X'> ? d??Zn>>y>%==K>z>i>c>n >v^>79=="4:p:Zd<+K==є=Z=B=AU=>J>F3>nLZ>}8>f>5$ =G=== =̾>o>(>0>)==V;:Y<<$T=3=8D=7!=5p=E={a =Cw==SR=.=QK=>=8r==U=/===[="4;~ :d;l;K;K;Zd:d:d;<1q>#d>Y=Y==[>)>Y>o==i[=̾==VbZ>S>U>=>{>>=2=y= =O>5$ >l> >y>a>>>d<>E>.>u)=,=z=<>:ʜ=5>K u>Ηm?b?P?>엑>X>$=>8r>T">??D??C? >->>_h>4>_>%-= u=8D:Zd;d=Y>??0?C?:?>Sv>f>, >A^W>?Ip?.P?FF?G2?3?>^>T>!>M">X> =f;~ <~=>E?*?: ?K ?D?#3>>>@̾>d>;&?N?@?Rn1?S?C?$o0? >M>Sv>c>n>=<^I;K=E>vG>e?'Y]?94?1?$>^W>i->3&v>X>MG? ?5Z?Je?J/?6n?>ʜ>O>c>>^> l=3>>i? B0?>>~>%>B>* >>!?b?"?"?\>q>8>>>k->, =ä=:2;dM">i->v^>u>F3>=!=d=ϖ7>:>j>*> >1{>0!>6>av>IT>8D>=̾>=p#<:d:d<є=h =0!=6P=є==V==.=em= =->J>1y>3oB>>==O== G=E:d:Zd:Y;K<8r>([>Y== G=/+K`>>V>V>f 9>7!>!>1y>n>$ >>&>ֲ(>4>_˭> G=_= =7>`>.>3oB> =?=.:ʜ< =1{>d>鿗?? ?\>>!>4>!?|?+ ?K?Qf?G?%`>>L>~9>em>[>;&>F?y>>z==د=Q:Y:Y=A^W>&*>D?w?A?L?B?%7a? > ??=+?c# ?vB?yA?u1?_?6k?9>H>ŢM>j?$J?H?Qg?=?Ip>q==c,> ?*?P'?Y?S/?=c,?#'?z?-?Wh&?uC?~o??}8?s4?Q8?!>g>F??M ?hAg?nY?bt?6">U> =8D:d:Y=7!>z>̾?w?EƳ?Q]3?M?8?#1??0{?VD?s|?}p?%?}?q?P? =l?>? ?Qof?m;\?t{?i?B܇> >&*=|;<%fV>?z?*#?(3??ғ? {4??:?[?o8?uC?n^?Y?1MG?;>Ѹ>ճ]?m?9z5?\?e?Y?*C>6P>J=C>;>̙>׌>c>N>>D?NF? >?56>??'?5p?>>ן>w> >t>g?%?2?">o>z==AU=P'<5p:d:Zd<>=sj=йh>i>=c,>[>qm >M>> a>>s>ŢM>U>>{>>9>)> >.P>t>7a>?>)>k+>=>5$ >9>.>>r>>>=Y=Cw={a =p#== u>o>'> l=;&=\< ;Y:Y:d<=em=!=>%>pS>Ǡ===@=8r=;c<,\>Y>=s==Ə=)=\=8r<<>$1>3oB>7!>.>* >1(>=c,>8D>%===h =kt`= =2>|>===*;K:Y;d=K =O>, >av>{>>>Y8>ذ>>܆>>>,>^}>==c,>8r>Y!>es>,>M">A=|=:d:Y;/>d>J>=>¥>Ѹ3>e??6n?B ?7m?>>]<> >>o&>Վ??x? >4>9=/;:ʜ=h >u)>~>>~>>$T?+??C7?[u?c~ ?Z?l>96>EM>&v??BS?N:?;c?>=1{<;~ʜ=f>!> a>1{>,>j>x?Zn?$o0?L?b?iv?`E?D? 0>>F3>]>͘?&?S/?]?N:?>=ۇr>{>>&v>йh>%>ۇ>M??6:?Q?Y?O?*>K%>:>2ݪ>IT>?2z?IBx?S?B]!?m>oW=7!>~>k}>D>>q>,?<??$o0?>'>k}>7!>o>ҥ>x@D>>={a ;K<~=\=ǟ>)>,SR>)$> G>n>@>t>)>BB>f>ZR>HM=˛ =h=O>>`>>S>6>#9=<є:p<>="4====y== =k=h=D=Y=q= =z==p#==4=i[>8r>o=йh=3<^W:Y:Zd;8r>E> ==<=<~;db=엑=O=!==B="4;K<=;&>Ph>o>4>~>i>==h =a7=I>>oW>>>->u>Ph>4?>E==D=K ;K:d=p#><>;&?Ǡ?~?v^>ܪ>}>=O=>;> >{?s?V?NF>۬>=>k}>}^>K >=2="4:Y;d=h>_C??)?;?2x?&> k>OMk>>,SR>M">?'(?>??Z?+?Y>N>>+K>>ID>=B;<%=1{>?9?2^D?E5?uq>i->,>HzG>L?s?9?NN?Nm?=>?3>Z>q>d<>=%k->?!*?2E?)? h>>Ns>@>@>c?~?/=~?E?EƳ?1?&Q>>Z> k>pS>WC>=f>>?> >>g0j>%=I>pS>nLZ>͘? 0?c?? >鿗>=>c>w>hg>(=6P=C<~< =Cw>>a7> >z=>8D=g=a=8r=>)>aB>>1{>J>V>^>aB>K u>8D>pS=O={a <є:d:dpS>4s>79> > f=LZ===9=QK<2;~:ʜo>>o=i[=k=E<$T<>>Y>i->4s>> G>G>G>#>>¥>q>i->([==O=د>:>">,> f==+;5pOMk>/? ?I?@>>ן>y>c>??9?Fj?ʜ>>3>lN>_C>db>F?>Z>>}=ۇ=k}:d="4>B>c?(?7?GiI?@?'}? U>{?~?.L?W?n?u?p?\?8{j?v^>\>/>FO?$?K ?S?C?.>>}=I<9Y:Zd==>pS>]??J/?V?R?@?%7a?"?'\?N:?m\?{s=?~?|;o?qm ?S?'k?% > ??N?ju?r?f?>O>>=QK;K:Y=Q=>?V?>?P'?Mn?=c,?&?A ?+0!?O?l`?{ ?}?{?p"?R?'?:?I? O?S?p#?w ?mM?K u>C>8= <:d<%=>=>Ηm?\?)?+ ?!?r? V?HM?2?T_?i?q?k?YT?8 k?\>b>? !j?=`?`F?id?^?4n >X>)2=M"<ܪ;d:Y:Y<=X'>7>>F+>x>>X>><>\5?3?.L?;c?5l?!*?>Sv>es>>!?)?*1V?;Sd?*V?b>f==u, >Qܙ>m))>~>E>>>>s>D>,>s>12>R>%7a>'>7>|;o>>̙>>I>Y=HM=HME>"_h>8D>9>,>E>>#9>&Z>pS=LZ=2=%=3=d=> />>>=˛ =rG<ܪ<5p;:d:Y;Yb>'>P> l==D==޻=p#=2<엑<%`y>pS>>=د=!={X=Y=V=u)<%<ܪ=B=5p==9=0!=k}=U<:d:d<=]=c,> />.>;e>:>1y>%->%>,> =A=q=~={a =8r={X=LZ>)$>&=~ =rG<>:Y<%=em=Z>9>pI>>;>>)>7a>>4>>N>@===i[>">w>s>x>W>~>>=7!:d:d==">IT>ذ>/>1{>y>Ϻ>M??%?/}?%?Ip>L>GW>r>+0!>??0?@$?+0!>~>oo=D<%;~=>t>>I>O>E>C??\?5$ ?O7?WzY?N`?+ >j>4>=c,>i-> 9?8 k?`E?j,?]?>E<1{;=a>2ݪ>y>Վ>E>_>? ?A??N?WC?^}?Uj?4r?>>Mn>`y??Mo?n?vT?k?B8>Ϻ>.=:Y;~ =>!>j>>>>6u>? ?(?F!?M;?B]!?d=><>}>=c,>q$T>'?B8?gB?pnU?d!?2>D=鿗<1{;Zd===鿗>GW>/>->Z>BB>?>;&>FO?v^?I? >>w>7!>pS>=c,>?_U?C?Pp?ZR=<%:Zd$>=>:>*>&Z>=c,>f 9>:>0>>OMk>==йh>K>=`>@>->>F+>oW="=.:Y;Zd<=V==q=v====d=?===I= G=.=Y=a=> 12>5$ >=>J=h="4:d:ʜ;~ :Zd:ʜ<~;~ʜ:Y:d;1{<1q<<<1{:ʜ;~ <ܪ="4="4=8r<>;~;~<^I>c>ͫ>n>-O===<$T=l=йh>%>Mn>Y!>G>6G<> G>=د=?=|;>|i>H>">_>q>:Bf=AU==d>>nLZ>6>D>Ţ> >c>7=>fV>A^W>=߂=fA>W? {4? ?Y>6u>K>=ϖ7=>Vi[>Z? ?S????w>*_>ˉ>d>Y8>Y!> ==8D:d;=a>WC>ֲ(?̈?#1?U> >>'4=>'>I>b??.?/=~?d=?NF>>>?>z=>6G<==h ;d;p=y>79>=?+?? >Դ>vG>r=>>vG>O??&+?&Z?>>>>>lN>,=,=V;:d=,=>i->q>L6>>>"==d=Դ>8D> >Re?ި?>b>>ذ>:>fV>:>=\=%;~9Y<~={a =o>1y>H>8i>`y=d===+=[=">3&v>z>><>6>]<>=c,>*>޻=LZ===:ʜ:Y:Y:Y;K;l:ʜ;~ʜ<~;d;Y;Y;1{;~:Y:Y<~=:2=d===a=h =8D=+=:2==D=O=D=q=[=:2=.=[>8r>IT>o&>f 9>9> =i[=O>|>7>k->|>z>k+>;> f=د====7==Y=8r<ܪ:d;Zd=em> >>ճ]>~>(>6P>v^>`>^}>G>O?s?"?s?b>H>d=>l>H>QK>B>>>^>A=<%:ZdY>ݩ?"?)?&?V>))>8>˿s?:?(E?IBx?UŐ?Q8?=^?>>S>>ˉ??*V?8?%>Re>GW=pS~9>_?*#??Z?>a?*#?+'> ??$\?K?cq?m\?j,?Y!?:?>$T>Ѓ?>}?/K?V2?`&?S?#>R==7!;d:Y\>v?!?8D?8?(׍?q?NF? x?'Ə?Lc>?cr?l]?i?Y?;c?>E>Z?Ip?9z5?]?gT?\+?0{>> G=~ʜ<;:Zd9Y;Y=QK> 12>>F??i?b>>v>E??+R?IE?T_?QK?@?!*?>йh>+> ? 8?KѦ?WC?K ?q>$ >%=~<=>>">>8>>>2>6P>K%? U??6? !j> >pw>V>wx>M">T?%?"h?>B>lN=йh=h =J>:2>N>Y!>ZR>QK>QK>em>o>?>>k}>t>>=>pS>>>S.>>0!>q>_˭==8r= a<є >J>J>`>K>b> >%>==?= == ==> Y8====;d:ʜ:d?=y=c,==pS==h =7!=<7b>|=m=={X==B=;c==2=d=->> >n>pS> l>^>===/=l=bZ=z===LZ>(>=c,>* ==8r<:2:Y:Y;p=.=>J>Ix>b>d>f 9>f>n><> >|>KRA> Tc=|=!=|>>4>>>|>~>=7!:d:Y<1{=>,>>>>>}>:>i[>g?<>~>>qm >t>`y>@>?r?2E?C?->e>o&=I;d:ʜ=Jw>>n> P>)>׌>ӵ>Վ>?.?#1?+0!?!5?>>O>&Z>Y!>ݩ?8?b?ls+?`]F?/t> k>K<>;=>">>?>ܪ>5?>`>>b@?N?,Q?7?*#? U>a>e{>8D>y?M?O)?qm ?x@D?n&?GI>> <ܪ;K=rG> />nLZ>&>~>0E>>>Ѓ?w?z?!`?>$T>>L,>,>hg>(?F3?j?s|?h?:>=엑2E>vB>P>>a>|>>%@>H>>v>q>Y!>> y>8D>7a?Z?J ?U)?E5? D>k-=;~ :Y<8r=p#=O>%>(>%>> >>.>C>OMk>C>$1=A=˛ =ǟ=G>9>c>E?l>v>=y6=Q:Y;~ʜ<=A^W= =d=k==3=~=l=M"=4={X= = =f=y=HM=є> 12>>)>Ph>+0!==+:ʜ:Y;#d< <%;K;<(X'<==){X=5p=0N|=3=Jw=sj=y=8r=;c<>;;5p:Zd:d>> y=,= =Y;~ ;Zdҥ>o&>>{>>5$ =ܪ==.=(X'=k> f>L,>{>>~9>f>F|>+>=y6=h=<7:d:ʜ="4=7>f 9>>y>p>|;o>pS==p#=%>>b>S>s>j>p>NX>pI>QK>.> l==h >~9>>b>1{>> k=!= =!>n>w>H>~>~>AU>> >q>ID>n=I=y<:Zd:ʜ=/+K=g>]<>4>?>>m))> |i=a==E>>t>D>N>->uq>_h>z>f 9>@>=йh=B<^W:d:Zd<=d>">Y!>t>[>"==;c=/+K=3=Z>F|>>>&v>>sN>ID>2L>pS=엑={X=<є2E>Y!>Y!>=c,>>[=y==a=P'<;Zd:Y:Y:d<%<ܪ=<<:d:Zd:d;~ <ܪ=sj==g=o=i[==d=~=V=YC>UF+>>}>>>1{>e>BB>wx>F~>3oB>GW> >`>D>ͽ>v^>==7!<7<8r;~ :d:d >>pS>>o>:> f>(>GW>Y!>Ix>,> =د=|=_>u)>:Bf>Y!>GW>w=a=7!=<2>pS> =|=`y;:p<^I=V=h>|>pS>t>n>> >+0!>/>%> ==d=`=d=m>A#>>>,\>@̾=ǟ* >V >c>_>_>hg>{>>.>%>j>Z>A =V=Y=g>GW>U?,\?n?@>>2ݪ={a :d:Y<=Ə>>i>v^>o>.>>>>->֍>O>ذ>Pp>M"=A>@>?&Q?J/?W '?H1{?u)>_C=;p:d==>5$ >d>BB>c>m>%>>>^{>b>>~>em>"_h> f>5$ >??+?\?g?Z?&>=|<~:d<==>%7a>i->3>>~>vG>[>^2>'>1{>!>v^>K u>J>`y>-O>S?#3?T?`?Rn1?v>=;d:Y<=y=>, >F|>F|>79>/+K>X>y>b>pI>F3>=-=йh> f>lN>"?(?:?%>>6G<={a :d<=Y==Y==s=O=˛ ==y6>> >=V===d=h> y>q>>O>p>Q4=<2:d<>V>%>o=\<=:d:d;K<~;Zd:Y:Y;5p;K;p:d:p:ʜ;~ʜ;Zd:ʜ:Zd;Y<#d;5p9Y:Y:ʜ;d<~<;:d:Y;<^W="4=5p=@<ä;~ :Zd;5pE=-==X%<1{;p;K=H==׌===QK<<%:Zd:Y%7a>:Bf>&=~ =<=)$>GJ>GW>5>Cw> =i[={X={a =Q<~:Y<=/>E>:Bf>OMk>8=~=V=<2=8D=q>)>R>{>{>]<>8i>z>|===@;&&*>8D>@=D=QK<є<ä=E=>>Mn>z=>ycu>X%>1y>=LZ=є=pS=8D<:ʜ;=[==I==Y=sj<<%!>D>EM>,> 12=~ ==%=a7=<(X':d:Y;<^W=B=V=Q;ʜ:d:d;Y<>=*= =O>`y>=V=]==rG=7!<ܪ<%:ʜ:Zd:d:d:Y:Y:ʜ<5p=޻==d={X=k}={a =8D<pS>%==d=U=(X'=Jw==˛ =>>==AU=йh==l=4=d== =:2B>x@D>u>C> =є=^=6P> >2E>Ix>b>c>K >1y>n>pS> >)>* >9>n=O=h r>t> >;>w>=> =鿗>޻>EM>p> a>q>@>j>f 9>F~>9>8i>Tk>X> >Y8>4s=="4;K:Zd<=m>o>hg>>>>Mn>> Y8>$1>V>|>E>{X>>,\>m))>Jw>=c,>B>n>>>~>^}=y6=V<>;d:ʜ:Y:d=Y=D>&>b>t>_>5$ > /=> >1(>[Ѓ>>`>>nLZ>F3>+>n>,>Q4>3>_h>)>GW="=QK<ܪ>z>J>E===̾=->>8D>F|>=c,>$1> l=V=߂=~>)>96>Sb>A^W> l=޻="4<<@<:2;d:Zd;~==l====k}=5==%=D=i[=-=== =y= =%=SR==n1=є==<;:Y:Y;:Zd:d<%<$T=8D=h == =d=SR={X=%=l=$>2ݪ> a=V={a ;~ :Y;d="4=pS=Y=߂=>> y>>&>.P>$> 12=O=d=8r=)=йh>:Bf>>D>z>A^W=c%>z>>f>+>=c,>V(>`y>Q4>/>8r=̾==h>pS>G>>BB> |i=@:Y;5p="4=q>8r>">* > >"_h>3oB>IT>hg>oo>av>:>=O==>3oB>ŢM??*g?}>6P> a==:Y;~="4={X=o>%>pS> >Y>q>4s>IT>T>F3>'Ə>|==-=>* >!?u)?"h?v^>L>u)=0N|:Y:ʜ<^W={a =?=O=s=1{=s=y6>K> >'>=o==pS=8r=\>>t>̙>>0E>f 9=<^W:Zd<~<==V==8r==8r= ==== G=3=`y=7!=7!=Sb=d>>IT>i>A=y6=X%;K:d;d<<$T<=<:2:ʜ:Zd:d;5p:ʜ:Zd:Y:d;~ʜ;Y;p;Y;5p:d:Y:Zd:d:d:p:Y:d:d:Y:ʜ;<%;~ ;Y:Zd:Zd;Y;1{;:ʜ:Zd;Y;Y;1{<%===bZ=A^W=Q<;d:d:Y:d<=== =pS=%=y=h =~<~:Y:d<7===%=Y=엑=o=ϖ7=q=3=8D<==Y==|;=y=y={a =8D<==t`==8r=A^W=z== ====엑="==Y=O=i[===\5=߂=d='4<~:d:p:Y;l=/=~<5p;K;~:ʜ:Zd;=={a =>=d=y=QK=(X'=7!=em=Y==I==[=em=p#==.=k}=-=4= =.<8r< ;~ ;~ ;~:d;5p<=q=8D=0N|<$T<;l;Zd;p;K;~ʜ:d:Y;Zd<>K=LZ=Y=k}=QK=Y=){X==H=;&>HM>=c,>* =ϖ7=7!:ʜ:ZdE=G=|= G=QK="4=8D=)=))>F~>{>>V(>|=Zd;Y:pEM>o&>IT=LZ=Mn;Y:Y;d<=k}=5p=C=l=3=/==u)=B=QK=Q>.P>Y==Q:d:d;~ <5<2<%;Zd:Y:Y;~<%<(X'<;~:d:Zd<~<ä=~= 5;d:ʜ:Zd:Y;<ӑb=+=B=@;&=HM<8r:ʜ:p<<<є<^W=q=QK=n=l=Rn1=){X<є;~ :d;Y<+K<:d:Y:Y:Y:d;<~< <#d:Y;Y<5=%=P'=`y=Rn1=7!="4='4=:2=h =|;=f=+<ܪ<;:ʜ:Y:Y:Y:Y:ʜ;d<~;~ ;;d;<%;;Zd:d:Y:Y:Y:d:d:Y:Y:p:d:ʜ;d<=Mn=l=%=f=%==8D<2<~;~ <~<=5p=}l=5=h <:ʜ;5p<(X'<:ʜ:Y;K<=B=+=+< ;:Zd:Zd:Y:d;;5p:Zd:d:d:d9Y9Y:Y:Zd:Y:Zd:d:ʜ:d:Y:Zd:d:Y:d;Zd;Y;5p:Y:ʜ;K;~ ;~ʜ:Y:Y:ʜ;~;Y;#d:Zd:ʜ<(X'<<><<ܪ<ܪ<<є;~:Y:Y;Zd;~ʜ:d:Y;Y<%<=;K;~:d:d:Y:d<<є=u)=;c=`y=em=V=QK=B=8D=޻<<~;5p:d:d:ʜ;Y;~ ;~ :d:Y;p<8r=[=5p=8D="4<ܪ<<엑=~<=;#d:p:Y:Y:Y;K<^I<ܪ=$===B=2<=<5p<;Y:Y:Zd<%<7=7!=QK=8D<7;1{:Y:p:Zd:Y:ʜ<><<є<(X';;;K;K;K;d;K;~ʜ:d:ʜ<<<=l====c,=?= G={a =8D=<1{==Rn1=q$T=(X';K;Y=~=3=I=={X==5p=/+K=q$T= =O=엑===ܙ==.=Mn=Q=~=n=2=йh=-<7:ʜ<====!={X= =|;=8r=d==t`>>==йh=N|=l=7!<~ |i>P>8r=<ܪ:ʜ<5="4=Rn1={a =3=pS==y=`y= fo>=ʜ=^;~ <(X'<ä="4=8D=){X<^W;Zd<#d=D=d=2==k}=;c<є:d:d;5p:ʜ:Zd:Zd;~ > 5=g=^=7!=Q=|;==>>z>@>==c,= =Zd=> f>H>V>=;:d<~ = =>E>n> =D=Y= =>=H>n>7!>C>F~>:Bf> G====y6>f 9>q>?>j> l<:d<ܪ==y6>>z> ===D=V>>4s>BS>Mn>Ph>?>A =V==HM=o>y >Y>Ғ>q>=@:Y޻>,>4s>6G<>2ݪ>n>==5=\=SR>1(>->?>k-=m > V>|=엑=,=\=bZ=8r>=Z=V:ʜ:Zd;Zd<5p;~ ;Zd:d:Y:d<(X'<==#d=5p=5p=<ܪo>> =c,=+:Zd:d>=߂=?=8r=QK=IT=bZ==>>C>av>Mn>r=.;K:ʜ<ä=QK====ܪ=>o>=鿗==y=`y=\={a =M"=O>(>i->^>we>1(=<%:d<=5p===?==ۇ=엑=g=|=d=m=:2=A^W=h = =Y>n>aB>>n>)2=d;~ ;K2E>G>8D==V:d;~ʜ<==.=H1{=h =l=D=~<%:Zd<==2=ܪ=AU=?=em>=йh=='4<>`y=ܪ={X=[=@<7<є;~ <><^I<>:ʜ:Y<=em=d=v=d=3=h =7!<%> 12=-=d=[<~=7!==Y=o> l>> l=V=I==V={X>%>EM>BS> f=y<%;5p="4=>pS>;/>A>+x=o=)=h ==> >=c,>X>c5?>YAU>9> =O=">@̾>D>i>> k>1y=`y:Zd<%=`y=I>/>Y!>av>F3>==!=o>&>Mn>t> >M">>k->3oB> 5> G>޻??(&?+ ? >=̾;Zd<Y=V=>(>OMk>Y!>@̾>M"=ܪ=ܪ>%>=c,>f>:>N>>)>t>9> >n>@??2?7jl?>D=ܪ;~ʜ;~=Q={X>E>%>/+K>C==O=>>:Bf>Z>pI>>9>ycu>M>==>a7>5???>>t=-:d:p<5p=7!=d= u====E= u=9>>1y>9>:Bf>+> 5==޻=/=I>Y>x>6> ><=:d;d<="4=8D=5p=<є==d==AU=-=B=,==v=B="4<<1{=8D=d===h=+:Zd:Y:Y:Y:Y:Y:Y:ʜ;~<%<7=C=sj=B=|;=Mn= 5<ʜ=;~ʜ:d:Y:Y:d:p:Y:Zd:Y:Zd;~ʜ<><,;;K>>)>=O==B=l=q$T=8r=D>`>C>d>V(>={X >!>5$ >8i>)2> =O===k}=>b>Jw>[>0!>_h>lN==HM<%='4==?=Դ>>>.>@>C>5$ >=~ ==={X=]>>pI>r>9>ŢM>)>t=;c;p<==l==ä=t`> y>n>2ݪ>5$ >">8r= u==a=d=D> y>i->S>˛ >̾>`>pS=){X:Zd > V=LZ=c,= G=B=|;==޻=s>3oB>E><>%>W=O<:d<><==D={a =޻= =p== =V=(X'=HM=@=(X'=7!=8r=йh>>>=c,>/=엑=T;Zd:d<<%<+K===M"= ==8D<>:Y;5p<%<:2<;:d:Y:Y:Y;l`y>=,=5:Y:p=+=D>>>>K==Mn<є<^I<<%=){X=C=E=+=[==~=[<ܪ<5p:Zd:Zd=$=>`y>> G>o=Y==/+K<7> ===`=V=Yn>(>Y==P'<ܪ=L>=X'=AU> l>>,>&Z>=AU=X'=>J>|;o>2>d>Y!=O=:Y<~=V=V>5$ >`>i->Ix>M"=!=f=>>1(>Z>>>>g>3>`>.>9?s?%?%`?:>>=I;~ :Y<5= > f>Q4>>^>l>2ݪ=t`=Y>>79>hg>>>>>o>f>;e>v{>N?0?QK?R?5$ >T><>:Y<=>>GJ>x@D>>f>2E>|=o>f>Mn>>>G<>;&>ן>>oo>A>~9>?:Bf?XV?Z?AW>>>/+Kҥ>F3>R%e>;c>=鿗=>t>G>q>>>2>c>^>K u> >D>?d=?C?FK?%`>̙>E<:d Y8=G=Y==ϖ7>>(>B>WX>i->m>_>9> f=O=V>F|>>??% >>OMk=|;:Y:Y;#d=u)=em==H=rG=em=8r=d==>>8r>>=t`==[===a7=>Ǡ>:>D6P>=;~ 9Y:Y:Y:Zd:d;Zd;~ <(X'|>J>%=йh=h ;d:Y;=~=y===>`y>J>.P>4s>%> =O={X= =3==O>(>nLZ>>Y8>ID==u):Y >(>EM>`>g0j>V>4I> =AU=D=v=^W>>y >>O>>`>5$ =:Zd%>8D>Y!>v{>{>i>BS>J=o=Y=2=>/>ذ>8?>?> >bZ=:d;~ = f==I=B> >,>ID>fV>k->X>5$ > Tc==c==O>(>޻>`>>>>]<=k}:Zd:d Y8>!>79>9>(> V=ϖ7=E=k=%=X'=\5>av>+K>H>˿s>ذ>#9==:Y:d<:2==m=%=!=K=엑=鿗= u=4==em=V=K =Jw=k}>^>M>~9>q>/=<^I;Y< = f=E={a =[=q$T=7!<7<<;p:d:Y:d:d:Zd;l<<=<7=l=D=8r>z>=\5=I=8D<ܪ=7!=em=p#=V=/+K=B>>>f>Ǡ===Q l> y=j=c,=f=8D<7:d:Y;l=/+K=a=6P=s==d==8D<%<5p<%=/+K=QK=QK=2 a>*>)=J=X%b>>,SR>* >=I==,>8D>!>>t>i-=="4:d<%=YAU=y6>8D>c5?>k->Mn>=D=8r==>(>V >> a>7>o&>f>IT>??+?+ ? 7>V=<>:Y< = > >T">|>4>oo>6G<==c=>+>_˭>`>0!>4>>>t>Pp>u)?b?:?V֎?V?9 >>>Ix>{>E>k->5l>?=߂>)>A>y>@>6>W>'>>d>Z>K?m?C ?]N?]~?DO?vL>4I<ӑb;~ =8D=|>n>H>W>@̾>=s=B>)>=c,>j>>7a>*>>>_>8D>i->ܪ?')?Je?K@?)>ܙ> |i<>:d> >b= u=!=̾=>t>:2>V>nLZ>{>>mq>GW>=> >o&>j? ? />M>[= :Zd:d<5p=Y=l=f==q$T={a =.===$T>E> > >E=O=HM=l= =йh>$1>Y!>\>%7a=<(X':Y:Zd:d;Zd<%;~ ;l:ʜ:d9Y:Y;~ʜJ>M"=ܪ=|;<(X'9Y:Y;K<7=`y= G==_>>n>8>=>2ݪ>pS==?==8r= =>"_h>rQ>G>)>Z==5p:d9Y<~=HM= =h=->>0H>U>q>{>j>C>J=鿗== =>%>{>8>d>Xp>q>GJ=:ʜ<=HM=~=є=G>@>B>n>6>/>>Y!>*>`y=,==йh>/><>]? 4?>>~9=̾;~ʜ;5p<ܪ=h ==y6>V>9>b>~><>q$T>H>A =o==&v=1{>*U>>N?Ǡ?9>d>{>=;Y:Y<%=Y=8r=h=鿗>>6G<>J>Q4>=>=o===M"=d>>n>>y6>>x>=c,=:d:Y;~ ==l===> l> ==є=pS={a =bZ=C=8D=k}> 12>b>`>Y8>GJ=,<є:Y:d>=ϖ7= <%;5p:d:p;Y<=$=V=l=`y=7!<= l>Ǡ=I=\=/+K<~:d9Y:d;<=B<=<<@<5p:ʜ:Y:d;5p;5p:d:d:Zd:d<%<ܪ=*=Sb={a =sj==<ܪ l>u)===+<><=V==^W=$T> 12> y====2>@>pI>M">:>-O={X>C >J>3oB>|==8D==>>,>S.>k->jd>MO> a> l>3oB>=l>i?_U?,\>Վ>E=f;~<=a7= >7>c~ >l]>R%e>Cw==%=2>Ǡ>6G<>iv>v^>?>BB>7=>V(>9h>z>6u?"h??'?=c,?z>2=د/>[>g0j>M >=O==Z>t>ID>d>A >0!>*>>c>A#>I>*_?(׍?Hh?GI?$\>̾=x Y8>/>:2>* >E=c,=D=s>J>@>l>f>ذ>M">{>C>">M>A1?b?,.?+? U>=;~ʜ;d=/+K=4=AU=#==D=@=k=є=B>>4s>K u>Y>R%e>2>=O>b>R>v>>~ >^2>#9=B:Y:Y;~<^W=;c=rG={a =a7=Jw=`y=l={X=;&=йh= ==I=p=|;=D=B=ä>r>8D>5$ >=y;:Zd:d<~:Y:d>%>.>n>Ǡ=O=9=p#=Mn=bZ=>b>GJ>{>we>:=s="4:d:ʜ<===a=,>>:>D6P>b>k+>Y!>79> =O=-= ==V>OMk>>>Sv>>0H=3;l:d<=E=X'=>>79>`>~>>r>IT>=V==a=+K>`>>Ҷ>>~>O>bZ=E;:Y<(X'=*=%=O> l>.>V(>q>z=>f 9>=>%=йh==pS={X> >>$/>>~>>av=;Zd:d >-v>A^W>EM>6G<>=AU={X=y=p#==ϖ7>K>}>Mk>>>+=kt`:d:d< =;c= ==~ >|>=~ =?=B=Jw=5p=Q<$T=l=>D6P>{>>sj>4?=<:Y:Y<~<7=:2=|;= =l=Sb=:d:Y;K<><ܪ<~;#d:Y:d;~;;d:ʜ:Y:Y:Y:Y;d>%>=!=+;l:d<=="> >>b=l=8D<^I<ܪ=p#= =AU> y>>n> /==D=#>F3>m>>>U=<7:Y:ʜ<7=d>>&*>/>=ܪ=l=(X'=h =I=LZ>A >A>Z>ZR>>]>'=A>(>`>?>>>%=QK:d:dn>+>%=I=pS=h ==O> y>3oB>Y!>o&>m>Mn>n>o>0H>N>v? f?> >=c,=n:d<%=Sb=2=x> =~=є=y=rG==˛ >>%7a>C>X%>R>5l> =ܪ> >hg>i7>3>˭>BB>"=/+K:Y:Y>i>޻===u)=> >Pp>d>we>0=<^I:Y;~ <ӑb=+=8D=0N|=Q=B="4=Sb=8r=pS=={X==`y< <2=+= =6P=LZ= =v="4:d:Zd;~<%=8r==Ə={X=B=;p:d<==h ==?=O=o=x=g===V=~`y>(>&===%<є:Zd:ʜJ>/>5l>&Z> =˛ =HM=Sb=+===f> l>^>.>>R==7!:d:ʜ<=l==~ >%>2ݪ>G>Mn>=c,>=m={X={a =D=bZ=>2ݪ>%>>>Y8>=l:d:Zd y>,>@>C>4s>)=O==h =8D=QK=h>5$ >M">>!>3>z=`y:d;Zd<$T=|;==ܪ> >z>> y=׌=a=a7=2=B==> 5>f 9>)>v^>U=I=8r:Y;~<7=U=M"===̾==|;=<^W;d<є=>>,>(=엑=p#< :ʜ=<ʜ;Y9Y:Y:d:p:Y:d;l;K;K;#d:Zd:d:ʜ:d:Zd:Y:Y:Y:Y:d:d:d:d;1{<5p<:2;p:Y:p:ʜ;~ʜ;Zd:d9Y:Y:d:ʜ;5p:d:d<~<$T=@;&=V=*:Y:pK>==<:Y;1{=u)===˛ ==}l<~ ;d<(X'=$==4=D==t`=Y===>B>;/>Z>A^W=B=Rn1;p;Zd==y====l="4 l>=={X= =?> f>GJ>nLZ>Y!>O=}l;d:Y>=c,>.=g=Jw;Zd:d>)=د=}l>C>A^W>Y=d>F~>C>Y=@>pS=O=V;d:Y;:Zd:Y;5p<<5p< ;:ʜ:ʜ;5p<><^W<7:ʜ:d<~<^W==5p=7!=@<;d:ʜ;<^W=8D=`y=8D<~;Y:p;p<~;~ :ʜ9Y:d;Y:ʜ:Y:Y:Zd:Zd:Zd;Y;~ <;1{:d:d<~<%;:d:d;K<><=8D=y=I==Y=h==bZ=2=@:ʜ:Zd;d<^I<5p;;~ <~<5p<>;:Y:Y:d:ʜ;Y:ʜ;~ʜ<~<><1q<^I< ;~:Zd:Y:p:ʜ:ʜ:d:ʜ;~;K;~:d:Y:d:d:Y:d;K<~;;Zd:Zd9Y:Zd;K<~;1{:d:Y:d:d:d:Zd:Y:Zd;~<<=="4="4=%=u)= a=A^W=[=4=?==k}={a =H1{=A^W=A^W=5p= a=~<<:ʜ:Y:Zd:Zd:Y:Y:Zd:d;Zd;Y:ʜ:Y:Zd;Y;~;;~ < <~;K:ʜ:Y:Y9Y:Y:Zd:Y:Y;5p;1{;Y:d:Y:Y;#d<~;5p9Y:p:d:d:d:d:Y:p:d:d;5p;K;K;~:ʜ:Zd:Y:Y:d;l;<~;;~ ;d;~ <(X'<<5p<%;K:d:Y:Y:Y:Y:Y:Y:Y:Y:Y:Y:d:d:Y:d:d:Zd:Zd;Zd;d;K:ʜ:Y:d;~ <~;~:Zd:d;K<~<~;~:Y:Y:d;=Y="4<=;p:ʜ:d:d:ʜ:d:Y9Y:d<~<~:d:ʜ<%<<<%:ʜ:d;K;d;5p:Zd:Y;5p<~<~;5p:d;5p<<<ܪ<$T<ܪ<<2=%=;c=A^W=(X'<;Y:d;~ʜ;~;#d;Y;Y;d;~ <#d<=Y=8D=;c="4<;Y:Y;Zd;K;p;Zd;Y:ʜ:d;~<^I<$T="4=.= 5<5:ʜ:Y;Y;p;:ʜ:Y:Y:Y:d;d;;Y;~ <~<;Zd:Zd:Y;d;~ ;;5p;K;~ ;1{<%<є=HM===p#=y=== =8r==<̾>;K:Y;5p< <>:Zd9Y:d;5p;Zd:d:Y:Y:d;=8D<=8r="4=2=5p=;c=Rn1=8D<$T<u)>>Y>=o=O==|;<;5p;~ =@;&==s==pS=V=Jw=V=B={X=йh> f>">+>ҥ> =LZ=|=^=bZ>>`== u= ==~;~;~)$>=-==\="4=h =X'=O=鿗="==0N|;~ʜ;K=em=AU>>pS==p=M"=pS====د===N|={a =8r> =9==p#;Y:Zd:Y:Y:Y:d;K>>=H==AU===E>;c>* ==k==8r=pS=>>>9>b>o&>]>@>* >>= u==~:d<=5>>k->>I>>>C>>U>*>BB>|;o>Ph>5l>>=9=v=/+K:ʜ;d= >>d> >>Y!> =T=ǟ=y6>>f 9>>X>6P>S>Y8>ZR>:Bf>#9>E==:d:d=QK=ʜ>T_>|>y >;c=A===AU>>R%e> a>> >N>n>;/>> y=ӑb=<:Y!>====a==>>E>g0j>iv>Q4>+>=<==3=;Y:d<=V=޻= G=~=Sb=D=V=p#= =?=s>>Ǡ=LZ=Y== =7!;;d<<%<7<8r;K;Zd;d<<:2<<==u)<$T[>j>I>@̾===c=V>pS>Mn>d>>aB>$1=O= =[=|;=X'=̾>=y6=={X=2:Zd;~ =->ID> >&>Sv>>ID>> G>5$ >q>q>>x>Z>}>5=== u> >5$ >M>D6P>pS=p<%<:2=2>k+>#>->x>>~9>C>A^W>av>>ڈ?E? >%>,>fV>ҥ=l>o>8D>t>M">[>]<>B=l:d;d=>>F~>>ѓ>)>>s!>B>A>c5?>>˿s>hK>>5?>>^}>=> l>;c>>?>?>rG>=y;:Y="4=>Y!>f>>i>8D>J>>>;c>`> a> >>es>j>&Z==c=O>pS>OMk>{>>{>>F~==p#;;Zd=Mn=˛ >`>pS>>=ܪ=J=>K> >J>*>2ݪ>$>=^W=f=QK=l=>>>q>b=X'=:ʜ;Y<$T=bZ=B=={a =8r== ==pS=Y===p#=%<5p<>>`y=̾>==H<;K;l;d<= f=2="4<;~ʜ;Zd<^W=5p=l==|> >:Bf>o&>7>>F|=B=p#<> |i>F~>`>+>)>}>>/==~<==QK=:===O=4=8D;~ :Y<2=h ==v= >%>Xf> >p> >H>>6G<=D="4=={a =?=7>K=엑=h=\<1q<5p=){X=p#==\= >/>{>>8>>_h>f> =)<===h =SR=йh=-=i[==B<:Zd<~<2==5p=y=,>%>79>A>/>`y=Ə=<%=8r=<^W<#d:d:ʜ<~<%;:d:Y:d;~<5p<=/+K=\=p#=n=Jw=[<%<:2=3===8r=7!<<~;K.>IT>5$ =A=Ə=kt`=Sb=sj=\=>/>]<>k->]<>C>.>C> 12=ܪ=d=1q;5p<ܪ= u>Y!> >̙>db>E>n="=^W=K>M">nLZ>y>d>\>y>c>q>f>IT>&Z=鿗= r> >? ?y>w>t>>o>">^}>ן>??\?q>7>>>~>R>=?=:Y=8D>@>?b?'?.>Z>`>5>>2L>>H? Tc? 8?!5?Y>>6P>>>a7> ==9Y<$T=> >\?s>s>}>{>(> >* >q$T>??9?^ ?`y>>0!>>t>F|> =@*U>f>N|>>~>/==AU>>9>>h>M>M>>#>k->GJ>3&v>u)=c=7!;~ :Zd">n>==k}=%==>t>GJ>i>k+>Q4>){X>=y6=|=9=8D<:2<>< <=.=;c=8D=~<(X':Y<=?>+x>]<>V>$=I=?==> Tc>A^W>vG>d>[> G=Y=l=8D=Jw=.==,= =d=7!;~ʜ;d={X>U>n>5?>>D>o&>9>7>Tk>m>^{? 3?>>jl>i-> G==>>GJ>lN>hg>2ݪ=K=0N|:Y<>`>~???3?t>0E>>>>g?%-?DO?K?94?(>/>>K u>Mn>q>>Re>]>c>W=c,%>=? B0?%?(3?>j>6P>^>?I?B?[u?aD?T_?.N>b@>$>z>4>6>??R ?7=>2>=C:d Y8>;>;o?"??ғ>b>|>8>|?K?C>)>:>5>?<?m?&l?O>`>/+K=;d;K=k>GJ>,>6u>N>Դ>*>>>>'??.P?8 k?(X'?n>>>R>Y!>>ܪ??Q>L>>=rG<~<=q>">^}>o&>b>K >GW>X>vG>>~>c>>>es>]<>n>b>>:>_C>S>:>ذ>C=D=$;Zd 12>>J>z>([>3oB>,> =Y=/=m=f=>Ǡ>(>/>pS=|=QK<(X':ʜ={a =[;~ :Y:d<1q= f=bZ= =pS=l=V= a<^W<~:Zd:d;d<^I y>&*>HzG>~9>pS>w>_˭>=="4=[=7!=B====<ܪ:d:Y<=3=AU>%>$>7!>^>NX>??\?Zn>Վ>> l=={a =Ə=鿗>@>,>"=߂=<59Y:d=7!=>A >EM>Xf>k->>'??,?:?.uM?ғ>:>;e===~ >+>bZ>vG>V(>t=c="4:d:ʜ=QK=ܪ>.>U>c>v{>A >v??7?DH?7?R>>C='=>>=>}l>|i>n>.=йh=;c;Y:Zd=$=>r>5l>=c,>GJ>|>?+?>?)i%??>{>o>>=h=I=>,>`>p>UF+>f==*:d<5p=bZ=D=Z==B>n>`>>N>7>ɝx>v^>1(=6P==3=>|>n>.> G=2= u> >.P> =={X=:2<ܪ=Q=p#={X==O== =~:d:Zd;l<~<5p<ܪ=Bu)>%> >|=V=D=SR=h <>7> a>>ذ>R>=v=f=M"=T>-O>>>>?>>>f>GW>0H>%=˛ ={a %>uM??NX? >Վ>z>z=>>K u>D>;o?^ ?? 7>->;&>>o>^> ==2:Y;Y=k>lN>?$8?6n?.N?b>c,>`>,>A>???(3??'?Ap?.>?>>k>D>v^>R%e>E=|;;~;5p={X>~?b?+?Ap?94?x>)>>A>c5?>4??8?M?N?=>?m? >T>ˉ>es>c> =l;:d=8r>OMk>D?Tu?.N?(&? d>>k->8>Y!>?s?+T?B?BS?.,?>C>>{>->M==bZ;K=~=A>>?NF>_>y>>}>.> >+>{>>I?Ip???Ǡ>\>>ذ>a>Xf>==~:ʜ;ʜ=h =A>R>>~>F~>=T=E=">t>^I>ذ>!>:>@>wx>GW>4I> a>=I=7!<>:Y:Y l>> > =y=є== =t=u):d:d;d<<%<~;Y:Zd:Y<<2=8r=E> f=y6==lb>>y>vG>8D>Y> >E>Mn>y>>>>>/t=鿗=E= =O>u>>=LZ=7>b?Q?V?P>7>)>4>?>x??>6>J>?Z>l>̚>>װ>)>=c,=SR96>$/?BB?9?A?1?>LZ>^{??+ ?XV?n'?t?k?Q? a> >U>Z>ֲ(?=Z?/?8?!>j>6G<=rG:ʜ:Zd=|;>SH>?(&?J ?P?F?(׍?b? kk?vp?K ?l?{*q?}?z=?h?>? |i>f>ڈ? !j?7F?WC?^q?NN?}>޻=ǟ0>̾>?1D?<.?H ?=?$o0?O? b?!?J?ka?zs?|n?y??f?۬>^{?-?>+^?]N?e2?V2?$J>==:d< =,>|;o>5??`???HM?>B>}? ?*#?Ph?fk?l?eE?L?f>5?>L>$ >$T?$?J/?Rn1?B?)>=<=){X;5p:Y=(X'=ܪ>OMk>>>s>S> >J> >*_??%-?/=~?%? >̙>>`y>`y>D>7??{F? >>?=SR<$T:d:d<===i[> 12>>/+K>A>U>f 9>o&>a>>>;>:>A> ==߂>>U>j>>:>:Bf=D=8D<~:Y<~<7=B= ==>Y>> y=LZ=y=-=I==f=8D=+=;c=f=c=))=l=ܪ=f=;d:Y;Y~>`> >u)>f>0H>.P> ==X%= =[=*=h =HM=Ə=M"=A^W([>?>K >`>>}>9>q>v>M>U>X=Q0=%=5=E>b>.>=>%7a=~ =~ʜ 12>U>t>޻>>n >Xp??1(???3oB?!>J>Sb==">>pI>>a> >O==;c;5p:Y<$T=ǟ>A^W>>>>v>??,\>">>Y!>>l? >K%>E>"=):Y=HM=m>Vi[>BB>db>Ȟ>_>FO?v?F~?_:?g7?^J?BU? >z>2ݪ>&*>vG>Վ??f?n>>5l=Ə<<~ =>:>;>8>T>&v>Ηm?l?.L?N->{>>> G>`>є?O{?w>#>&Q>n=pS?>=`>b>hg>f>z>l>B?I?>?(> >>&*=B=o>* >{>y>>>H=s=Mn;5p:Y>%7a>V(>>.>~9>EM> =p=޻=^=">޻>:Bf>C>([= = f>n>= u=3=YY> >!>> l=鿗=˛ ==l<9Y<^W= u>]L>R>>>> =ä=.=)=ܪ>C>>`>1{>p>>>`>>=>@=I=f<8r:d=`y>GJ>Ҷ??$o0? s>F>G>2ݪ>> >hg>9?b?%m?'?3?b><>>>v{>79=߂=V:ʜ;K=>)? U?7?J/?B܇?!5>ݩ>}8>9h>Rn1>?r?>̙>c>n>HM=?݅?B&?Q8?L?+BT> >>V >y>Վ?"̚?L?\?]*M?Pj?2^D?HM?+>>p>a>&Z={X>}??.L?Cn?M>>GJ>k->J?3?BS?S?T_?F?&l? B0>#>Mk>>qm >=HM<8r:d=V>!>J?r?HM?Y>N>>A>>9>>\? ?/O?.??>۬>f><>>:=AU=Sb<~#d>:>~><>n>%7a=Z=h=鿗>2L>:>'><>Z>U>>{>>`y>F3>$=B=<є:d:d<=rG===Q0==%=QK=H1{==!=A>&>B>C>,> ==AU=6P=4=`y<ܪ;~ :Y:ʜ<$T=Y<==鿗==k}=y=M"=N|=->">"_h>`==a=8D>nLZ>|>s>>j>7!>n>.P>hg>J><>>6u>,>n>&=="=>>:Bf>@;&>%==8D;Y0>~??#?>>>>4??--?N:?W?Oq?/J?>>>u~>M">?9? >))>=_=~:Y:Y=kt`>8i>?%?H?Q?J ?+0!?b?z?K?Aݼ?g ?xC?|?y,?hAg?BS?a>v>H?b?,?Q8?YT?I0E?>=R%e>FO?4?V2?_G?Y?FXL?(?P?4%@?[?xC????x?[u?* ??r?#'?T_?n?uhK?j>?BS><>)=7!:ʜ:Y=em>/>F+?&?M;?X?Tk?BS?*g?$\?8?[Ѓ?wx?%??nh?xw?[cQ?)? Y8?Ip?(3?ZR?t2?x?q6?Mn>>4I=<5p:Y|>{?$8?5=?2^D?$8???"4?D?d!?v?z+?wx?em?B]!?%>+>?)?F~?e:?mq?a?8>ۇ>$1=lg0j>4>>))>T>_>ݩ>K%? b?)i%?F!?O7?Hh?,A?9>>>J>I? x?2?B ?0 =엑=\`y>5$ >T_>lN>d>~>.>k}>v>Ηm>x>>>v^>MO>>>J>C>>>X>̾>:>=)<;K:Zd:Y<>=@=l=2=>>2ݪ>7>* >>>$>([>%=_=SR=y=y=q=>J>* >z=׌=|;<2;Y:Y:d<<7=m=&v=g> > ===˛ ===8r== > f===E== =V=<>< >$>2ݪ>5$ >0>.>9>G>BS>=|=3=V=V=[=D=#>>==d=Q;Zd:p<>=V=د>2ݪ>j>I>8r>`>>U>M?>E>^W>t> ==c>>R>>~>12>9=c,D6P>޻>i7>W>̙>`?O{?#9?Aˉ?L?B? 8>7>vG>>z>nLZ>c?\? ? E>:>5$ = <%;5p=p#>pS>t>8> >N>? 4?$\?Lc>?bt?j,?a?G?Y>$>K u>R>=?6?Ek?P?>?>a=̾><;l= >)$>!>L6>m > ?O{?_?+0!?R?i ?o]X?g5?N`?~>n>`>k->l?*#?V?`?Q?v>k}=鿗=8r:Y:ʜ={a >>|>>ڭR>5?>3>F??@?Y?a?W%?8i7?> G>GW>]<>??M;?XW?G?.>=O<ܪ9Y:Zd=Q=O>:>> >4>?>{X>AU? 1?%?.P?"?I> >Ph>z>/>>b?'>2L=pS<5p;~ =V=T>pS>2ݪ>2E>%>.>Mn>>>S>>pۈ>.=LZ=O=))>%>pI> >^>>:Bf=̾=Y:Zd:Zd<~=Y={a =HM==M"==a==;&=i[==c=:=y=3=޻=D=>r>P=e=0!= a:d:Y;Zd<1q<`y>> ==3=[<(X';~ >r> y=LZ=Y=N|= =7!<(X'<5=2>Ns>>;&>O>we>=h=rG=p#=>/> >>>>v^>q>Mn>.> =|=p#<(X':d=p#><>I? ???%>N>f>$\=߂=>O>?Ǡ?R ?!?NX>~>&>>%>f>*=O=<є:d;d=>3??0?D?;?>>i->%7a>;c>~? ?5=?Lc>?M?>|>A >b>Y=M"=O>D?b?;0?M=?FK?%7a>x>>?>`> ??HH?XV?Y?L>?,?>>Ѓ>N|>{>n=X'<;=!>}8> ?)?=,?6?N>>o&>5>W>??>?Qg?Q8?BJ?#? j6>>>c>k->=<:d=n>%>>?? >^{>2g>0H>Ǡ>([>j>??,A?+?C?>X>h>?>}8>9=AU=`y<><8r=>)$>I>>>aB>=|==O>%>>X>>>>>|;o>av>F|>$1=~ =<ܪ:d:Zd+>Ix>KRA>3&v>r==_=|={X=h <$T<~:Y:ʜ|>`>="==V=8rM>k}>>>n>5$ >޻>>A^W>%>>>N>{X>z>4?>=I=->`>2E>:Bf>pS=h=8D;~g>>>?>~>Q0?S??>\?Mo?G2?+0!? >̙>>|;o>>̙?9?>j>`=y6=:d=:2>'>?{F?B8?O?If?.?NX?M? ?2?\b?sj?y??v?e?DO?HM>q>X??-?S/?\?M;?">v^=<:Y:Y=h >+>Վ?)?QK?]K?Z?I?+?R ?,A?R?r?}8?ۚ?~ʜ?x?]> =QK;=7!>Y>6?R ?Iw?W%?U)?GI?.L?$J?3?T?s?}?g?~i?wx?]?2E?? ?)V?\M?v0|?zs?t{?S.?&?>F~=<2:ʜd>?!i?6:?8 k?*g????=,?]?r?x?v ?fl?GiI?>e>'??J/?h?qm ?gB?B >LZ>9= G<=;:Zd:Y=Q=D>_>>K%>a > >d>\>엑? 7?%?@$?M?Hh?1?+'>_>S><>,??9?IE?9g?><>=B< <~:d:Y<ܪ=@> >GW>nLZ>>X> a>>V>>>d>t`>N>>k->7!>([>Ns>>˿s>d>Վ>G>%7a==,< ;K:d:Y<=+=@=> >$>79>8D>(>%>f>2ݪ>9>)$> Y8=O={X=k=>K>#9>9>+==y=8r<^I;:d:Y:d<%=~=8r==>`>Y>|=O=I=Ə===Mn=@= f=u)=2=p#= G== =7!= f==;&=x>>u)>|=O=p=X'=)=`y=@<7u)>/>:>:Bf>2ݪ>* >,>7!>.> ==y={a ==d=s>f>.>J=D=QK;~ :dA>{>{4>>P>>J>>4 >C>)>Xf>= u=د>n>>I>:>a>pI==$:d:ʜ="4=I>V(>a>}>ѓ>c>O>{?I?.?;Sd?0?%>1{>d>>2ݪ>ذ?9?2E?B?,.>i>i-=+K<5p;K=>$1>)>L6>j>m??7=?f?>a?WC?_?VD?8 k?>>R>u>-?:?b ?l,?_?.>!>|<:Y;=d>9>k>>?E?9? ?#?H1{?^q?e?]*M?A'? B0>0!>iv>x?9?Pp?qm ?x?n?F>T>= a:Y;d=)>(>>ɝx>v>&>>?s?1?M?U)?L>?(>N>pS>WX>>{?GiI?jЕ?s4?gi?9>>=8r:Y;Y=;c=LZ>Pp>M">>MG>}> >?d?"? 8?8>K%>>T">,SR>Ph>q?2z?J?UŐ?D? >q=D+0!>F3>F3>7>5>K >v{>>>>j>/>B=>u)>M >{X>}?:>d>6>b=<є:d:ʜ>B>R>.P=AU=V;Zd:d<(X'<2=8r=){X=8D=H1{=P'=V=p#=/=d= G=p#<ܪ:d:Y;Zd<%HM>l]>f>}8>:Bf=-=f=Y=Y==>;/>n>{>>k->V>96>z=9=|==~:d:Zd=,> y>>\>l>&>O>Mn=o==>>j>H>?M>鿗>;&>>>>`>2E>b=a<ܪ;d=>O>Դ?(?#?>}>N>,=t`> y>sj>]F??*?+R??E>ߧG>+>?>u>2ݪ=AU=V;~ʜ< =SR>i->-??,?%?\> >@̾> >)$>ذ?I?(??'?@?,ҷ?_U>>F+>s>>GW=x=<>;K=k}>G> ? ?R ?>$T>o>/>> >P>}?"(?6Yo?6n?$? >3>ǟ>3>E>=c,=y6=p#<>:d=8D> 12>:>>>߂>`>H=B==>U>???!?<>؋W>~>G>~>Mn>==.;K<~=y> >Qܙ>t>c>(=йh= =h ==>Rn1>A >>>>|;o>R>:Bf>!>=D=V<%:d<~=8D=k==N|= =(X'<<=Q={a =6P>r>4s>79>ҥ>=AU=={X=l=2<~;~;d<5p<=5p=3={X===p#=7!=Q=Rn1=SR=|=;&=9=em=7!= a=5p={a ===ä===A^W=<^W>`>I>pۈ>?> y=йh=ǟ=>/>hg>u>>z=>GJ>pS=鿗==!=1{=>8r=AU=Y<=:d;K=B>>q>-?>m>of>N>hg>a7>N>Ѹ? 7??? > >0!>~9>Xf>`>M">RA>>i7>Tk=!<ܪ:Zd<2=|>{>>E?#'?5Z?0?v>>>!?йh>>ѓ?(?6n?D?/K>>^=<8r:Y<==->l? ?7jl?K?H?5Hq??D? ?) Y?Q8?k.?uC?rP?dF=?HC?P>6>b? 5?<?^?g?[Ѓ?->̾>=8D<~:Ya?b?,?D?E"?3?f? ?R?.,?S?k?uJ?s4?eE?J?!`?>?s?FF?f1?np?e ?>O>1>* =8r+> k? ?"?%-?? Y8>?O{??9z5?U3?a?^I?O?-? f>6u>N>d?+?U|?`oy?UŐ?)>v>n= = 55$ >>ѓ> >؋W>1{>6>6>Դ???(&?([?3>_>ŢM>>Y8>~>?,o?.L?#'>e>= ={a =~7!>X>i->m))>i>]<>[Ѓ>t>z>!>>,>>V(>&>pS>5$ >we>$>I> k>> /==2<ä<:2;~ʜ;Zd=~===>>>%> y=x>>J>">HM>=Y==HM=0!=>>n>)=Y=h <=<><%;:d:Y;d<7=kt`={X=O===F+=D=d=Cw=)==\=2=@=%=){X=Zd= =k}=8r=*pS>n>>pS> y> |i> >==d==l={a ==Z>>.>=ϖ7=];~ :p<=7!=̾>!>V(>k->k->l>o&>}l>.>>%>fV>==c= u>z>I>S>~>=>o&=o=Y:d:d5>6>$>$ >q>L>U>C>V>4I>>&Z>,\??3]?E"?0F>hg=Ə;d;Y=V> 12>{>>n>@ >5?>>5?>=?\?+T?7jl?*? ,>I>o&>:Bf>f>⣧?=<;=[>>>}>x>q>b>]?D?vp?88?B?5p?>%>_C>Mn>:?_C?RI?s?yQB?qR?L>Ţ>%=;p={a >%>z=>q>Mk>G`>Q >̾>>v? d?"q?*U? =l?NF>>oW>BS>{>>e?K?m?vT?k`?B>͘>E<ܪ:ʜ=$=O>8D>~>ذ>E>w>3>A >;&>Ţ>ܽ>߂>>}8>8i>>GW>D??Oq?Z?Lc>?>=<>:ZdpS>/+K>/>n>>+0!>=>WC>em>\>=c,>pS=G=g> 12>HzG>D?=H?O>>K>Ǡ=8D:Zd;Y>Ns>em>;c=y6=^I;5p:ʜ<5p<ܪ=u)=Y<=<^W >&>J=Z=="4<%;~ <= =s>>>>=2==)=V<$T;:Y<=>.>>BB> a>ID==.=){X=H1{=!> >o&>o>>4>k->G>,> y=ϖ7==@;#d:ʜ=8D>|>~9>̾>߂>ͽ>!>/=̾=5=>pS>:>0E>q>ܽ>ճ]>O>>rG>HzG>=AU=~<;=h >>>ճ]>j><>~>A=׌=^=O>:Bf>}>"? ? 4>{>->c>>jQ0>8D>|=a<;:d;Y=A^W> l>|;o>>؋W>1{>>,=;&= =J>5>>鿗?_C?D>N>>>|>[Ѓ>.P=o=M"<:d:Zd4s>~>!>^>A=Z==h =d> |i>lN>D>$/>>>v^>g>F|>)$>==V<>:p:ʜ=Q=h> >> 12==V<7<ܪ=<є=4> >Rn1>~9>}8>ZR>0>r=N=O={X=em> =))=^W==8r=QK= ;~ʜ:d:d:Y9Y:Zd;Zd<%;:p:Y;~7!>v^>,>~>>4s>=~ > >EY>~>>H>>y>_>79>q>r>%7a>Luq>e{>==-=em<%:ʜ=[>u)>o>3? ?E>B>>k->[Ѓ>f>>E?Q?&Q? >>db>)>{>>>}>P>'?>>w===;d;~=>.>:?q?v?BB? E>ۇ>>>)?? a?5?8?*g?q>&>db>/>jl>?%?3]?$>q>`=SR<$T;~:Y:d=`y>>}?d??z? >1>4>6>^{? 5?%-?:?=>?-?>j>8>.>ŢM? ?1;?B?2L?> =׌=;c< ;p:Y:Y<%=>em>U>N> >->U>d>>>?S-??";??->>8>>~>K%? s?+ ? 8>#>~='=V<7Q4>>?>G>q>lN>Y!>f 9>`>h>۬>T>j>q>X>^>EY>d> >O>d>u>~>2ݪ=^=A^W<$T> >+>&*>> >>>7!>av>v{>h3>B>==Z>>,>`>>nLZ>* =!=Mn= f;d:ʜ:d |i==l=7!;~ʜ:Y:d l>>">%>%>+x>5l>=c,>8D>==l=>=Ə=>:>4> >>3oB=<:Y:Y;~ =V=>4s>b>pۈ>k->j>v{> > G>8>E>x@D>79>==B>IT>ˉ??!?>>>*U=V:d:Zd<=>([>wx>>>>>m>;>є>>->ي!>>qm >.>>,>?}?M?Y!?K ?!>7==;d:d=[= u>=c,>4>/> >>?> >>(>>>>^>?> >EM>J?1?`8?k.?^?+x>{X=̾><%:d==>,>tE>>o>3>>M">y>Ηm>>RA>[>pI>4?>P>=>?(׍?Y?ein?W?#'>D=̾;:Zd<>=/=>1y>Q4>Tk>C>=c,>Mn>m))>4>>4>f>7!> =B>>>6?0{?C?->nU>GW=/:d;d=Q=޻=|=t`==߂=y6=>>>%>f>> =B==h=O>J>>>>ɝx>i-=ϖ7<$T:d<~< =D=p#=q$T=n=n=p#=l=p#=8r=y=~=={a ={a = =4=߂>n>5$ >=h="4:d:Y;d;:ʜ;~<><<==Q= f=~=+=Sb=p#=h =.<<>P> ==|;<ܪ;<>=1q= =#>)>'> />|=ܪ=?=8r=.<:d:Y8r>?>ZR>C> y=4="4<="4=-> |i>EM>k->k->S.>79>>===8D<^I:Y:d<ܪ={X> G>[Ѓ>vG>^}>=q=5p=~=kt`=|>,>z=>>N>>U>2ݪ>pS=-=I=l<%:ʜ:p<=pS> />F3>^>C >Ǡ=pS=@=HM={a =Y>+0!>vG>>V>{>>IT>([> 12=AU=0!=]<;Zd;~ =0N|=є> >z>8r==(X'<<ܪ=K =>>@>i->g0j>D6P>>K= u={X== a>J>==X'=B=A^W<=~>)$>n=={X=bZ=+=A^W=k}=O>|>.>%>=엑=7=O===I=h=d=QK >aB>`>V>]<>J=,=SR=> />8D>[>{>~9>f 9>@̾>,> >> >?Z>U>8i=엑={a .P>v^>!>i>G>U>J>=H>">M >>>>p>J>BB>|;o>WC>EM>F|>n><>p>q>ID= u=/+K;~ :Zd<>= >">4>J>i>>j>1y>>,>b>>*>6P>+>8>E>^}>Jw>Xf>l>>ֲ(>>~9>=kt`F|>_C>`>}8>Mn>"> |i>%>:Bf>pI>&Q>>d=>~>_˭>:Bf>.>>=>pI>̚>> >jQ0==h =kt`=I> >79>0H>==1{=Y=>#d>M >c5?>Y!>;c>>|=> >,>[Ѓ>{>>g0j>!=v=7!<7<<1q;~:Y<~=8D=Ə=Y=O=є=X'= =f===>[>b=i[=?=d=d== =>=鿗=d=+<<>==йh={X==QK=V=pS=йh>>)2>=,=QK;~:Y;=/+K=d=F+=$T>> >r>n>3&v>=c,>8i>==h==d=_>:Bf>M">t>E>=c,=+K<^I:d<ܪ==>Cw>'Ə>$>* >8D>K >i>we>k->F~>= =2=˛ >n>ҥ?=H??>k> =~;5p=1q=h> >.>6G<>.>1(>A^W>_˭>~9>>}8>X>+x=\5=D=鿗>A^W>ܙ?o?0?>йh>,=B:Y;~ʜ=*==>>>">t>/+K>F3>b>n>b>A>z=-=;&=V>:Bf>ǟ?Z?(׍?>U>ҥ=<є:dB>%>n>+>%>u)==h=\=2>u)>^>>><>~9=ܪY>`>>W>`y={a ;:d;K;d:d9Y;~ʜ > y==|={X==H=, > 12==2=%=[= f<~:Y%>==9=~ʜ='4=C==|=鿗==o==AU=ܪ=_=_=ܪ=y6=#=O=M"=8r;~ʜ>f> 12=йh= G=V=z=={X=<>> > ==ܪ=د=_=-=> >>o=!=8D=~==%=\=n== =>=e="==!=;&=̾>=B>E>.=e= =*;d<% f>`y>>d> |i=h :d:Y;d<^W=k}=7!=]=5=\={X=SR=0!=d=l=QK==%=8D= =>%7a>A>"==+:Zd:Zd;K<є<̾><<~:d:Y;<%<%;d;Y:Y:d;1{:d:Zd:d<^I=Y=Mn=h =bZ=7!<;d:ʜ<=~=Y;5p:Y9Y;d<є=Q=~<Y<;~ :Y:Zd:Zd:Y9Y:Zd:d:d;l<%;d:d:Y:d:Y9Y:Y:Y;1{<="4===@;&=5p==Y=>=2===8D=Q<є<8r<%;l:Y:Y:Y:Y:d;K<~<~<<Y;~:d:Y:d<(X'<ܪ=Q= <ܪ=%=2=[9Y:Y:d:d:d9Y:Zd;~<(X';;K<%;K:p:Y:d;#d;Y;Y;p<%<:2;d:d9Y:Zd;5p<%<ܪ=7!=rG=M"=@=`=l=%;~ʜ:d<%<=u)=2=0N|=8r<<2<<;5p:p:Zd;p=Y===@;&="4;d:d:d<~<<%<Y;~ ;:d:Y:Y;~ <<ܪ< 5>> >=H=د==8r=:2=C={X>>=V=Sb:d;~=%= ==Y==a=f=M"=?=߂>Ǡ>>pS>>=={X={a =2===!>HM>/>Ǡ=B:ʜ:Y<8r=8D=f=f=HM= ===2=I>|>>E==O==B=0N|=D=8D:d:d<><ܪ=@=7!=Sb==H=k}=== u=|== = =V=8r<ܪ=9h=|;=.=޻=y=u=QK=/+K<$T< =='4<;:Zd<%>=r=X'<:ʜ<=/+K=p#=/={X==6P=2=d=h =B G>,>%== :p<:2=~=H1{=|;=M"={X=+K===8D<<:2<8r= f=[=d=>P>'Ə>%=<=:ʜ=ܪ=y=/+K==H= ==Rn1=5p=[pS>@> |i==l=D=k}=׌>.>%7a>5$ >9>0>=-== =|>:>|i>V>WX=O<:ʜ=Q=> |i>.P>79>n=엑===׌>>7>Mn>b>i>\>:Bf>=йh=>>es>鿗>>>==\:ʜ=8r=^>>$>/+K>==;&= u>B>* >GW>_>n>rQ>c>=c,>u)="=>&Z>.>?>H>[Ѓ=:Y:Zd< =p#=^W>K> =B=O=є=">>%>=>IT>Qܙ>Ph>?>t=y6=E=%=y6>we>ơ>ֲ(>c>* =8D;5p<2=\=={X=d===̾=-> y>z>t>>u)>b=Y==V="4=c~ =V>>]>Y!>(={X<>:Y:d;K<Y:ʜ:Y:Zd;1{;d:d:Y:Zd:Y:p<~<є<=<ܪ<;d;Y:p:Y:Zd:Y:Y;~ʜ<(X'<;K:d:Y9Y:Y:Zd:Y:Y:Y:Y:Y:Y9Y:Zd;KJ>.>=ܪ=P':d:d>>%>B=O=d=~ʜ=p#=[==O>">^>{>i>* ={X<:d l>>HM> =d=0!=3==.==>=c,>>ذ>>G=Yo>Ǡ=LZ==pS=p#=m==4= >79>~9>'>6>@=<%;Y>F|>f 9>Q4>u)=B;Y:d<> ==d<<~ <$T<<(X';~ʜ:d:d:ʜ;~<%<є=8D=|;=[=U<:ʜ:Y:ʜ;l;5p:d:Y:d;d<5p<(X';K:d;Y;<~;:d:Y:Y:Y:d:Y= f=\=s>>=׌=%=Q<5p;p;Zd;K<>>z>">==em=<2b>>>>==f=@;&==<=~=+=<є=8D=Q<7==){X=7!="4<2;5p<=5=O>>=엑=2= =bZ=/+K=8r<=[=+=8D=2 G>!<7> =c,=B>:>+>$> ==d=f=i[>>>5$ =q,>V(>`>C>,\=?=޻=6P> Tc>79>ZR>{>>:>~9>]<>+>> f>w>5??M"?Q>N>k-=:ʜ<:2==H>>EM>t>~9>c~ >,==> >:>i>>>0!>8>V>X%>(>B>a?w?BS?F3?%>> 5<%<:2=sj=>j>vG>]<>,>`y>>%7a>T>>ذ>x>$ > >%>`>.P>G>Sv?%?L,?N?0>>>>:>EM>4I>Y=LZ>>$1>MO>q>j>ذ>A >>vG>Y>z>? 4?0H?6Yo?>=엑;K:dK==ä=̾=B> >,>C>Rn1>Zd>Z>IT>)$=x=c=!>pS>><>#>>=>>>==鿗=O=SR=u=2='4=}l=ǟ>>* >=[;~:Y:Zd:Zd:Zd:d:ʜ;K<u)>o=;&=@;&;5p:Zd;d==q$T==D=O=>>!>)$>i>b=== = =a=йh>!>_>d>tE>7!=<ä:Y<~="4=3=E=O=A>>4I>Ix>S.>C>%7a>=H=1{==+K=>>h3>>¥>>7>=C<~== =E=">>> >@>\>d>S.>2ݪ> =ܪ=є=2=ܪ>* >|i>U>d>>>:Bf=u;5p<ܪ=`y=a==>>2ݪ>HzG>Q>@>n=A=|==p=O>>>>Y>x><>`>3=V:Y<%=[=h ==2=V> 12>>!>r===k=)=pS= =G>L,>E>i7>>{>>9>\>J>`=B;~ :Y<Y<^W="4=Mn=`y=C=Q<>">=B==,>2L>/>pS==l= f<J>1(>2ݪ>Cw=엑==Rn1=HMk}>@>w==X'={a =7!=8r=="4=V=|;=|;=U="4<ܪr>:Bf>A#>+x=LZ=3=/+K==;&>>n>;/>IT>F|>/+K>o=Y=>=c,>c>F+>&> >=0N|:d<5p=B> l>Mn>~>>k->/=ܪ==%>>GW>{>>#>̚>?>Y8>W>,>X%> ?f?=c,?>?>=B<:2:Zd<+K=>>m))>M">E>:>Mn>=o>>Jw>b>8>^W>Mk>0E>~>7>bZ>? ?H?av?c~ ?L? >GW=:Ym>d>.>&Q>>K >> >2ݪ>g0j>>L>>ۇ>Ҷ> k>>k-> ?&?P'?hAg?i?T_?[>j="4<>=h =y6>6G<>c5?>o&>X>,> |i> >/>`]F>>>>U>>>>we>C>qm >))?6?V?Ye??Z>;o>6G<<2;#d> >Y=鿗=ϖ7=>>9>Y!>sN>>|i>>_>,>>>Y>|;o>&?Tu??+>.=D:ʜ:Zd;|>)>>>>=鿗==y=)=O>-O>we>>F3=,> l=A=̾>===H=bZ=bZ=a7= =O>'>2ݪ>+>b=)>.>GJ>SH>E>([>= u==d==>?>3>~>>o&> |i=QK:Y:Y<^I=:2===>޻>8i>aB>I>l>~9>WX>,SR>o=׌==I>.P>P>ӵ>~>o>>X%=4:ʜ:Y<:2=7!=M"==r>>GW>y >P>K>{4>kt`>9>)=엑=F+=\5>G>q>?d+? >T>=J;Zd;1{==u=E=m>>;c>i->B>>d>Y!>,>o=ܪ=D=LZ>A>>?e`? 4>>=є:d:YM">96>S.>Z>G>* >u=O=!=0!=2>>:>uq>%>b>s>C=:Zd:Zd<~=8r=h = G=̾=> >>=H= u==y==n=p#=>>uhK>>>Ph=O<2:Y:dB===%;5p:Y;1{;d;d<~<~;Y:Zd:d=+=!>>>==4=Q;~ :ʜ:d;Y:d:Y;d9>Ix>G>3&v> 12=йh=e>`>>S>ݩ>M">o=8D:d:Y 12>S.>|>4>oW>5$ =I=X'=Y>u)>=>u~>N>>̚>`>av>;>y>?$8?D6P?C?c>t=">q>G>q>f>U>Y=~ > >>=>{>>4> >>)>!>)>z=>r?݅?N:?e?fC?N:? f>F|=:Y>i>>z>l>Sb>>8r>%>Y!>>q>>>cQ>>Cw>>!?C?Uj?kt`?k?WZ?>i-=/+K9Y<%=l=))>:Bf>j>x@D>`>1y>o>E>">R>|>k>?>>U>V>:>\>w?b?>?[Q?\+?C>>79J>%>=#= u=AU> Y8>.P>OMk>p>>%>>nLZ>:Bf>޻>-v>N?-?"q?$o0?9>=̾;~ʜ:Y;Zd |i>pS>n>&>t>E=;&=k=E>E>H>X>`>S.=Z;;~;5p;Y:ʜ:ʜ:ʜ:ʜ:d:d:Zd:ʜ<><o>> Y8==!= =h =Rn1=QK==>r>5$ >/> l====˛ =>>:>Z>f>Y!>8i>)==&v=={X=>=>,\>D> P>I>%=;Zd:Zd<5p=1q=.==>>E>y >%>>>nLZ>)=Z==׌>+0!>HM>B?=H>>q>pۈ=<~<~="4=y=>>*>]<>>̚>V>q><>Mn> =G=Դ=>K u>db?M?Z?8>F>=<5p;Y<ܪ=h =I=>ҥ>O>a>>>M">vG>@>=-==t`>F~>?D?HM?݅>{>=));ʜ<~= f=~=c=>&>Qܙ>oW>z=>hg>A^W>pS=V=2={X=>z>>_?b>;o>˿s>f={X:ʜ:Y;d==rG={X=د> >n>&>%====l=l=h =p>* >4>0!>->pI>= f:Zd:dJ>%==8D;d:Y;d<<ܪ<=<ܪ`y>>pS==0!="4;;Y:ʜ;~ <^W=7!=l==}l=`y=5p>>">==YAU8r>~=g=E=h <ʜ"_h>,SR>M"=O=h >(>* >=B=!=AU>;/>>t>>Mn=є< :Y<~=\=->8>d>n>R>=2===I>">F~>vG>3>3>rG>@̾>">V(>? ?&Z?#>;o>oW=;~ >T_>z>3>u~>:Bf==!=AU>z>K u>>/>!>=>>>}>\b>G??5=?Q8?Ph?->I> l<><:2= >>J>}8>B>o&>9>b=O>E>0H>f 9>޻>t>6P>> > >i->ҥ??>?X#?X?;>]>><+K;Zd=7!=|>!>K >ZR>EM> G=I=˛ >>+>Xf>^>>uM> >>kt`>C >x@D>_?#d?D?D?">><(X':Y>>%>=йh=N|==O> 12>+>IT>j>{>>t>S.>$1>B>>~9>ӵ??% >ͽ>Mn= :ʜ:Y<(X'=$===M"==H=h =rG==h=i[=> Y8>> =I={X=f==o>1(>_>]<>(=D;1{;?==O={X=|;=8D= a=HM=7!=k}=->'>=y6=)<ä:Y:Y;K<^W===.=D=> y>.P>H>V(>G>,>Ǡ=J=Cw=8r==!>>o&>>N>b>=n;d;~<ܪ=bZ=v=_>>9>k+>j>>^>b>0>8r===?> |i>{>>2>LZ>>>X%=<,:ʜ<2=`y=I=>>Q4>:>>>>{>>A>Y=AU==D>+>_h>? B0? 4>g>3=7޻>F3>{>>>>k+>6G<>= u=q=̾>* >̚>j? /? {4>>=د< :d<=h ==t`>>>HzG>i->o&>`y>9> = u={X=/=k}>>{>>zG>%>N>4>R%e= G;5p:d<=V==O>Ǡ>>>>%=V==l=bZ=8D=*=޻>)>pI>y>o>\=<=:Zd:Zd<:2=.=`y=M"={X={X=.=Jw=[<>|=='4;d:Y;~<=8D=V=`y=D=@<;K:Zd<===E=V=$T=O=/<7;Zd<(X'==p#=k}===׌=c=޻=l=%=B>)2>@̾>&=|=5p;~:ʜ<=>>* >2ݪ> G==}l<7=3=pS=>B>%>=c,>=>*>=AU>w>j>'>h&>I>}8=V=:Y;~=/+K=̾>>C>M>8D> l={X=^I= = u> y>7>aB>~9>~9>bZ>5$ >>EY>>b@?Q?a>׌>EM=:ʜ:ʜ="4=>pS>=c,>GJ>5$ > =I=y==> >ID>y >>>sj>A>!>N>D?_C?R ?v>>hg=;5p:Y<= =>%>">=y=d= =SR=>pS>;c>a7>ycu>uhK>V>(> >* >|i>Ѓ?9?O{>Z>;c=rG:d:d<;= =c=O= ===h =y==y6> />%>5l>1(>pS==!=йh>&>y >q>ذ>V=ܪ=:Y:ʜ> =O=l<>:Zd;5p< <8r<#d;d:ʜ:Y:Y:d:Y:Zd;d>i>#d>i>=w==QK="4=){X=h =>n>K >ID>@=c=){X:d:Y;d<$T={a =?=Z>>:Bf>Y!>c5?>Tk>2ݪ> l===h =rG=!>&Z> > P> >>J=;K;~<$T=~=>|>+0!>V>x@D>>n>F3>pS=йh=d== =߂>Y!>pw>b>؋W>>A^W=d;d:d">K u>k->sj>av>9> f=̾=%=rG=8r=I>^}>?>>cQ>{X>@̾=%;5p;d== =>`y>%->;/>@>1y>=D==h =7!=8D=v>-v>.>>~>z>Y=;c:p9Y<===="=N===v=n='4<$T<([>V>QK>%=>%> =0!<ܪ:d:Y?==a="4 >u)====>>[>~>c>%=|;;~ <%=A^W=q=V=~=د==;c<%=k}= =?=_> >n>n> =̾>=+K=O>">k->w>\5>+0!=f<5p:ʜ<=~====y=8D<="4===O>b>> ==?=޻=v>|>:>`>KRA> =;<1q;d==`y=B=|;=Mn=Q Y8>=h=8D<;~ >Q>u="=X'=h =~>9>9> =4 > >'Ə>==p={a ="4<2<ܪ={a =V>>=>u~>pۈ>8i=J=Y:Y;Y<=}l=v=AU> |i> G>>=߂=d=V=~<<=m=->A>z=>v{>96=J>A#>=> = <5p:d=Y=\=p#=Jw=<%:d:d<~:d:d;d<<==Q=~;~ :ʜ:Y:Y;~<===Mn= ==.<>:d;<>;~9Y:d;< ;:d:Y:Y;Y;Zd;Y:ʜ;5p;<>;K:d:Y9Y:Zd:d:d:Y:Y:ʜ;l;~ʜ;l;< <є=+=V=em=Jw=Q<8r<;d:ʜ:Zd:Zd:d;5p;#d:d:Zd:d;Y;#d;Zd;K<^I<$T="4=+=~<;~ ;~:ʜ:p:Y:Y:d;5p;Y:d:Y:Y:d:d:d;Zd<Y<%;p:d:Y:Zd:Y:d;d<%<~;Y:p:Zd:d:d:Y:Zd:ʜ;;~:d:Y:Y:d:d:Zd:Y:Y:Y:Y:Y:d:d:Y:Y:Y:d;5p;l:d:Zd9Y:Zd:Y:Y:d;5p;5p:d:Zd:Y:d;d;d;K<~<(X'<%;~:Zd:d;;~ ;;<~<:2<^W="4===@;&="4<є<%<~< ;d;~;<~<(X'<%;~:Zd:Y:d:ʜ:ʜ:ʜ;5p;d;d:ʜ:d:d:ʜ:d:Y9Y:Y:Y:Zd:Y:d<~<<%<<>;~:Y:Y:Y:Y;p<1q<^I;1{:Zd9Y:Y:Zd:Y:Zd:d;Y:ʜ:Zd:Y:Zd:Y:Y;5p;K;:d:Y:Y;5p< ;5p:Y:d;Zd;5p:d:Y;~<,<><7=<7<%<(X'< ;d;K;K;;5p:p:Zd:Y:Zd:Y:Y;Y<8r:ʜ:Zd;Zd;d;d;Zd:p:ʜ<^I;p;;<~<~<~;;K;5p:d:Y:Y:Y:Y:ʜ<5p<2;~ ;~;l;~ʜ;~ < ;K:ʜ:Y:Y:Zd:Zd:Y:Y:p:Zd9Y:Y:d;l;Zd:d:d:d:Zd:Zd;5p;d;K;Y:Y:d<~<>;d:p:Y;Y;1{;p:ʜ:Y:d<~<<є<;1{:p:ʜ:ʜ:d:Y;~< ;K:d:Zd:d:ʜ:d:d:d:ʜ;Zd;1{;;~;;~ʜ:d:Y:d;K<;;d;;p;<:2;5p:Y:d;K<><%;:d:Zd:Zd:d:ʜ;Zd;5p:d:Y:Y:ʜ<:2<=8r== f<$T<<5p;Zd:Y:Zd;Y;#d:d:Y;~<:2<~;1{:ʜ:Y:Y:Zd:Zd:Y:Y:Y:Y:Zd:Zd:Y:Y:d:d:Y:Y:p:d:Zd:Y:Zd:Y:Y:d:d:d:Y:d;K<%<%;d:d:Y:Y:Y:Y:Y:Zd;d<8r<є<<(X';#d:Y:Zd:d:d:Y:Y:d;K;Y;5p;d<%;5p:Y:Zd:d;Zd;~;5p:d:d;Y:ʜ:Y:Y:Zd:d;5p;K;~ ;1{:ʜ:Zd:Y:Y:Y:Y:Y:ʜ<~;5p:Y:Y<%=%=h =`y=Q<5p;d<1q<><1{<ܪ<$T=~<7<^I;~ʜ;Zd<%<2<=<엑;K:d:Y;5p<(X':d:Y;~ʜ;~ ;1{:p:p;K<><%;Zd:p:ʜ:d:Y:d:p:Y:d:p:Y:Y:ʜ;K;d;~ʜ:d:Y:Y:Zd:d;Y;;~ ;Y:p:Y:d;o>?==1{===(X'<~:Y<,=1q={a ={a =;c=8r<7<$T="4=V=)====~ = u=I==D<:Zd:d<^I<== 5<ܪ<:Zd:Y:Y:d;<^I< :ʜ:Y:Y:Y:d;~;K;p;~ʜ:ʜ:Zd:Y:Y;Y<><<ܪ=Q= a<ܪ;@>'="=B=/+K=B== =!=O=ܪ=D==D<$T<1{=k}=U==V=l=8r;5p<=4>>:Bf>3oB>o=={a ====ܪ>> >== =,====y==D=\=[< :Y<5p=y>|>(>"=9== = ===O=LZ=\5===="4<ܪ=8D= =I==v=p#<є:d:d=u)= =B=g==y=h =n=}l=f== === =8D< <5p<==^I=Y=d= =8D<^I:Zd;Zd=[=p#=8r=em=7!="4=@=[== f=/+K=Jw=L>=@:Zd:d<:2<==5p=8D=<8r:ʜ9Y:d;Zd:Y:Zd;d:d:d;Zd;#d:Zd:Y;5p:Zd<%<ӑb=<ܪ<5p:Zd:ʜ<(X'<8r;d:ʜ:Y:Y:ʜ;8r===rG=<є=7!=Rn1= =>`>1y>=c,>5$ >"_h>u)>b=ܪ=+K=kt`<:Y:d=$=|>,>R>EM>)=2=%=M"=d= u>J>Y!>> >{>>T>2ݪ>C> f== <7:Zd:d=+=>@>o&>f>/+K=Z== =h=>5>{>> >>dXp>:Bf> >=ܪ= <^W:Y:Y>>H>E>J=O=4=d=q=y6>&^>av>t>Y8>q>EM>>> ==!=Rn1< ;Y======Y==|;=|;=f==LZ>>9>=c,>+> =I==d=V<:d:Y<~= f=`y=sj=U=(X'=~=Y=/+K=C==?=O==̾=SR=.=^I=B<:2:d:Y;Zd<:2<<5p<=~=.<%<>:Zd9Y:Y:Zd:d:Y:Y:Y:Y:d;1{<>=7!<1{;Zd:Y">Jw>@> ==[= =E=AU>)>8D>@>+>K=0!=em=4?=Rn1=y====<2;5p=p#>>>>>f 9>=y=Q0> >4s>{>>>U>V>WX>=̾=d==s>>(>==;~ ;K=`>5$ >G>db>">V>A>pS>>5$ >hg>̚>>ۇ>a>>8i>K==ܪ>>H>n>i->/=̾=~:Y:ʜ=h >E>I>>4>~>;c>P>f>9>g>>̾>N>>z>4s=\5=|=>>V(>>~>D=_=8D:ʜ<ä=>,SR>]<>\>8i>`=LZ>>>6G<>[Ѓ>a>>y >>=>Ǡ===E=A>.>Pp>OMk>"=c="4;5p:d=.={X=y==O===!=|=ܪ=o>>u)>o=د=d=@;&=Y=X%=d=AU>>=Y=rG;K:d9Y:Y;K>EM>b>U>"=ä=5p;d;Zd">i>>J>>k+>=y<1(>> >>,>z=>pS=<ܪ`>K >:>M">E>==~ =h <pS>">%=O= <^W;~;K<ܪ=YAU=M"=d=޻=V;ʜ:p:Y:Y:Y:Zd:d:d:Y:p;K<^I<`=l==}l=/+K=~=*=p#=D> l>.>=c,>8D>* >pS>=-== k}>y >z> a>G>?=I=\=v=y6>=c,>f>y>>~>X>i->GJ>2ݪ>Y==h <>f>>x>cQ>>G>=߂=A>5$ >q>X>?s>N>>?>>em>:>=HM~ʜ>Դ>b@>#>?>o&>f>`y>>V>,>E??b?d>k> >.>u~>F~> =<<>=>T">t>݅L>>>Zd>=>`>G>A >??+> >>M">vG>Y!>2E===H\>.>>[>=_=c,=AU>z>]<>> k>>>{>>GW>/t>Cw==^=~;5p<%=V=̾>8r> l=B=?= == =h=ʜ>%>?Z>A#>.> y====[=Q;~ 9Y:Zd;<ܪ=8D=bZ=Mn=q<==.='4=em==q=l=d=l=YAU=+:ʜ;5p<=2=8D=8r<<1q >=鿗====a=>Ǡ>,>9>"_h===Mn=.=$=p#=a=+K=Ə==H=:ʜ;Y=|;>n>|i>L>SR>>3&v> > 12>n>V(> >&>x>}>>9=B==>>$>=c,>79> f=<~>Վ??vL>%>>i->fV>E>??#f?+ ?A >E>_h>U>* >-v>a7>ذ>=>;&>)>&^=y;l<ӑb>?>o>&???O> >ˉ>>k}>D>E?"h?B܇?L?">3>Y!>d> G>׌?r?Ǡ>>=<ܪ:Y{>G`??B>))>>q>q>4>ֲ??>O?Hh?9z5?>йh>>\>i->a>? y?%>{>> |i=8D;Zd:ʜ=>>j>k>>}>3>{>>>}>ذ>>?m? t?>>es>X>.P>8D>}^>4>>B>>~=LZ=7!;K>4s>A>79>$>#9>3&v>ID>k-> a> >=>SR>a>9>`y=1{=ܪ>>`>>y>|>!=Ə<7:ʜ<1q=8D=/=4={X=q==߂==j=> Y8>>=-=Ə=QK=5p=h =X'=y6>>==="4;:ʜ:d:Zd;Zd< <^I<:2;p:Zd:Y:d;Y>%>M>nLZ>f>6=B=h >>1(>nLZ>~><>hK>b>q>Xf=د=Zd=/+K=|;=h=> f=x=2=\<>:Yn>.P>;>n>0!>j??$o0?U>>G>t=4=y=D> l>5p>EM>3&v>=4<:Zd:Y >.P>8D>BS>|;o>4?z?!6?+?"g?b>>>(X'=D=d=йh>C>K >av>GW>=="4:dY>>>Luq>>`? j6?? |i>H>vG> l==k}=J>%>:Bf>KRA>9> y==~:Y:d====!==e>5$ >}^>>p>^2>i->r=0!=]=h =d=> >> y=,=|> >|=ä==Q<<̾>=<є= =E===<ܪ:p:Zd;Y;;~ <><=.=7!=GW>qm >^}>d==ǟ=y=Rn1=bZ=\>Ǡ>M>>.>>i->G>0>k}==E=D;~ <~ =>{>Ηm>> >V>ID>=1{=د>&Z>v^>?I?>#>->>`>pI>C>`==:Zd=A^W>+>? x? O?{F>{>q>@;&>>$>>˭??+T?-?,o?>zk>Z>>>;c=߂=H1{:d:p=Rn1>=c,>k?L?*g?%-? G>C>b>.P>A>BB>?&+?=,?>?+T?)>hK>&>*> a>J=j=`y;l:Y=>>>ݪ??C?6>{>^>U>%7a>>))?f?0?0??9>>> >~9>9==8D;YY!>4>T>^{>uM>jQ0>">K>>X>V>? |i? E>FO>}> >>i>?> l=HM,>_˭>^}>5$ > l==X'=>o><>~9>>>>T">.>> =y= G=Q;K;~<7=rG={X=!==8r===8D=K =[=?=>u>>==2=d=)==D<ܪ<:d:Y:ʜ<~<<;<<8r,SR>c5?>dXp>8i>Ǡ='==>>R>>>;>G> y== =f=="==엑=є=|;<< =+K>Tk>>>>N>>`>R>k->>hK?i?$o0?E>ֲ>`>Z>)$>q>B>~>>>{>Y=|;;~ʜ=HM>Y>|??"(?'(?>j>>s>q? ?]>f>4>>C?}??Ǡ>> =@:Zd=<є>* >??1̬?;w?,A?%>N>+?s?+R?Ye?p"?v?p#?X#?(3>#>n>>LZ? 8?D?Mo?7?>f 9=9<(X'=Y>>? ?%-?/=~?%7a??>F>? ?-?X ?nY?uJ?np?W?(!>%>>>{?'Ə?M+p?T_?C?>j=ä<%:d<=>K u>h>F??>}>x>Ғ>ӵ>#??8?U3?]?U)?8? >¥>'>">Mk?O?3J??Z?*V>>m))=<=;Y:Y=8r=є>,>t>>>>V>%>̚>O> ?r?r?>}>r>pI>9>;/>>>d?7=>&>?>>=.<2:d:d<ܪ=8r=c,=鿗>`y>u)>!>3>=>F3>X>|>>>f 9>(==D=>>8i>k+>K>d>t==k};~ :Zd<%<ܪ=5p=p#===-==AU=2=!===@=L><<=="4=p#==ϖ7===<$T;K:Y;d<^I<==Rn1==SR=+K=k==D=k}<2;:d:Y:Zd;~ʜ > f="=y=Q8r>z>$>2ݪ>R>>->]>>|i>3oB=?=bZ=;c=B=c,>>w====;d:Y;=QK=AU>/t>`y>pI>{>>)>db>?C?'Ə?,o?>/>2=Y=E=>79>z=>7>i->!==%:d>n>݅> >)>6P>?%?GD?Qg?Hh?%a>h>t>`=>.>4>ŢM>ڈ>>k+>=|;<~<=>0>>d=>>q>N? ?.L?O_?X%?O_?+>$T>b>f>>F|>̚>鿗>>װ>6>z=)%>av>6>w>O>U>d?i?86?D?8 k?Q>J>Y!> y> l>:Bf>)>of>x>`>u>=~<%:d=5p=>HM>9>=`>:Bf>WC>>t<>9? >><[>k->Y=D=йh>%>OMk>d>>>5$ =O=7!:ʜ;p="4=)==h=D=,>B>* >ID>_:>K u>"=2=9= =)==>n>-v>=׌=}l<5p:d<~;Zd:Y;d<1{=<7< ;K:Zd:d<:2<==Jw==[=sj=Rn1=/+K<%;~ <=p#=c,=Z=O=d=Jw<;;~ o>w> l=Q0=Y=q= =7!<5p<%= >t>|;o>>.>HzG>b==em=kt`=?>A >pI>f>`>>o>i->F3>* > =;&=em<>:Y="4> >>B??Ip>'>x@D>=د=->=> >b@?R?? |i>->1{>)>>^}>!==0N|:Y:d=8r>WX>+?!?4[?,A?>>_> >5$ >ذ?b?)?B?D?2??>v>>o>Xf>~=B;;Y=>pI>;o?+ ?@?94?>ي!>>=>X> k?M"?j>*:>>n>=M"G>_?A?/t?*#?->5>q$T>8>Pp>x? ?1?HH?Hh?65 ?{F?+>v>a>>[Ѓ>=B<>=~=e>w>S?% ?O{>$/>7>9>`>$>|;o>ѓ?@?!`?!?b>K%>ŢM>*>v^>i->(=;&=5p;~ʜ;K=l>8r>`>->>ZR>==?=O>>hS>`> >|>2>t>^>C>0>%=ä=`y>x?Q?A?`]F?hAg?Z?(׍>P=I<;:d=7!>)>uM??8?Hh?B?+ ?HM?O?"?GD?id?z=?}p?{$T>]?&Q?I?g0j?n^?b ?88>L6>=K <YX>I?(?!*?vp?&?NF?vL?Q?*V?QK?i?q?l?XV?.?I>Sv>}>?/a?V\?_p?R2?#9>$ > =bZ 5>pS>==V<;~ʜ:ʜ<1q<~;~ <%=B=X'=U=HM=~=5p=~=E=?==h Y>@>WX>\O>em>~9>E>>װ>͘>>>J=-=d==ä>>U>i>F3> l=<8r:d<2={X>">vG>>~>V>>? /?(׍?6?+ ?.>>T">=\5>8i>y>v>g>G`>a> l=bZ;1{:d=+=>aB>>D>F+>>(??5?R7?[u?R?2? >NX>79>2ݪ>4>R?#?1?>F+>G=<:d=D> |i>wx>>!>˭> >{?"??Z?Y!?a?Y?;? >?>GW>HzG>8? ?:e?Iw?4 >s>l]=Y<ܪ:Zd=){X=>ZR>?>db>S>6P>Վ?M?(׍?Hh?Qg?GD?$&d>->^>8D>@;&>G?s?.N?>]?(3>T>Xf=>_>>7=>>|i>q>))?b?ذ?.>\>>:2>`>C>`>6??u)>B>ذ>@= <~:d==k=鿗>>Y> l>>* >Mn>v{>>y >H>=i[=̾=йh>u)>G>6>">y>&==:Y:d>=Z==u):Zd:Zd;5p<<(X'<(X';;;5p;d<(X'<7=8D=a7=h =K =*<E==O==޻=h =8r;d;~ =;>HM>t>pS> >EM===8D=<є=d>`>\>w>>`>~9>\>9>z==E=@;&;d:Y=@> >E>&? ?b>ŢM>k-> ==O>/>>#?w?Y?r>7>`>><>Pp>%=h= a:Zd:ʜ=3>R>5?? s?.N?'? >q>Luq>%>$1> a>F?%7a?>ۇ>n>Q>K >|=}l;;=d>n>I?')?;Sd?3?>̙>n>.>EM>+K?,\?8?M;?N9???"M5? >K%>->k>f>=)<^I;5p= >K >@ ??*V?%-? }>>`y>([>?>?l?.>?E}?FXL?2ݪ?k}?M>>>%>W>=[<:2:Y=+> l>`>?> >ɝx>\5>*>|>>t>p? ? O?m?>>K%>ŢM>>v^>f>&=̾=8D;;d=B>>c> a>;>R>޻=,=d=>>i-> >̙>Sv>O>X>c>GW>2ݪ>%==l<:Y<~=8D==AU=ܪ=c=)===+=H1{==i[>HM>8>9>n>|=i[==N|=u)=B<^W=8r=[<ܪ<$>l><>k->96> |i=ܪ="> l>C>_C>q>A >>F|>w="=!=D=> |i>w=m==Y:ʜ<~=d>;e>I>d? Y8>>̙>޻>q>vG>`>i?BB?, ?* ?>>>q$T>OMk>gy6>?>װ>>=>S.=I<є:Y=[=>l??+ ?;Sd?2?>e>֍> ?9?B?`?k?hx?UŐ?.N?u>Sv>s>Ѹ?[?=,?IE?3A> >X= u)>D?HM?@q?O)?Kv?4r?!|? 7??8?`E?we?{?yЧ?mM?O?>>?d+?B܇?b?k.?^I?0`>;&=j=){X;1{=8r=>? ?6"?H?Fj?38? s?+'? >?>]?bZ?w?{ ?zs?n?Ph?!5>>#??Lr?id?q?gB?@>>n=sjA> ?b?$8?%?? !j?b? U?%m?K ?d ?n?j?Y!?65 ? >O>?P?2?Y?d!?X%?+ >>J=[<%;Y:Y==>@̾>k>Ϻ>ݩ>Դ>Sv>>1{>?O?+0!?U>)>^>>>:=B=h <;p:Y:Y<7=pS>|>3&v>OMk>av>k->n>jQ0>n>>R>>>ן>>ID>z>%>8D>~9>J>>6>>w= =HM 12>>> =>b>>n>r=鿗=?== =v=m>>$>pS=O=rG>>pS> >> |i>)> /=I=d=kt`===8D=n={X=AU=o=O=M">>Rn1>hg>hg>i->vG>>c> k>MG>X>9==I=I=>A^W>>A >>+x=3&v>^>>&v>q>!>Ѹ3>??#?v>m>>GW>`>>c5?>̙?a?>? >!>* ==H;d;Zd=H1{>o>v{>s>׌>6u>6u>*_?m?&?DO?N:?EƳ?$8>N>|i>=>M>?{F?Kv?V?GD?,\> = <;Zd=q$T>">o>ˉ>Xp>N>N>~?b?0*?M;?V2?M?+>>!|>U>l]>׌?1q?]L?g?Zd?&H_>=LZ<=9Y:ʜ=U> Y8>o&>SR>˿s>of>͘>!>?f?8{j?C?7jl?>>>EM>b>1{?(!?V2?a?R7?f>o=I<ܪ:Zd<엑=>,>v{>>N>12>.>)>װ?b? ?->>v^>BS>q>9>v^>_?+ ?;/?&l>>IT={X V>$1>&>>J>,>EM>b>rG>j>GW>d===߂>|>2E>q> >\>>`=g=5p:Zd:Y;~ |>">/>'=|=H1{:ʜ:Y;5p:Bf>_>K>z=̾=\>F|>V>Qܙ>C>+0!> ==={a hg> k>>Sv>>4s= u=3=a>>g>>:>h>q>uM>޻>y >M >n=y=3<:ʜ=`y>'Ə>P?M?? 4>>>}>J=O=>S.> ? G?w??Y>E>Ηm>J>%>av> a==7!:d;=5>@;&>ģ? U?w?>>k}>2ݪ>K>>:>*_?f?0?1?"? Y8> >J>>~>8i==`y;K;Y=sj>,>0!>r?b? 7>>o>%=>r>~>B??(|?(??>ֲ(>jl>E>o&>.P=,=Jw;K:Y==->i->D>!>/>>@̾=G=2=>@>)>K%? Y8?9>FO>I>>Y8>i->:2>=k=8r:ʜ;5p=V=>a7>Tk>!===kt`==>=>>>>>hg>>=>([>Y=V==7!<:2:Y;5p=====f=8D>$>)$>%=y6=є== =a7=.;~;d<~<%;d:d:d<~<>;Y:ʜ:ʜ;K4s>Mn>=c,>=O=d=pS=v=->$1>EM>UF+>EM>=엑=є=9= ===˛ =?=rG<^W:d:d=Mn>>\5>Z>>i[>~>i->4s>([>Mn>ذ>ܙ>?>q>a>X>R>2ݪ>5$ >c5?>z>{X>Y8> a=<<5p=>Tk>I?s?"? >?n>&>8>8>ӵ??1MG?Hh?HzG?5l?I>b>uM>#>>%? ?(׍?> >+x=n<#d<8r=>}l>C?$?8?6"?"?> >N??65 ?X%?f?eW;?U)?5 ?Q>>>q?#9?M+p?WC?J/?HM>!|=T=k};K9Y<%=N|>b>T???1?2x?"M5? 4>FO>?HM?x>йh>?,?U)?`]F?T_?&>> |i=em<;Y:Zd=`y>pS><>I?W?? >#>d>^{??"?C?RI?QK?AV?n>e> >{>e?"?B܇?Ph?D?>2>=|;<$T<:d<5p=M">!>4>n>ŢM>>R>>>0!>0j> >I>k+>v^>Ҷ? ?x?a>>g0j==a7<7<%:d&>A>L>>O>GJ>:Bf>4I>BS>{>>V>>t>:Bf>`>>n>]<>> P>>>av=== ab==_=Y=">> >=_==.=3=a=Y>>Y>|=I=K =A==AU=د=m=ܪ==/=bZ=A^W=@;&=q$T=SR=AU=#=ϖ7=%>1y>C>BS>@>A>L>>c5?>wx>oW>EM>=ǟ==v=->:>q>>>}>&=Ə<:d<=>pS>f 9>v^>>V>)><>><>&>Ţ>!>v{>%->> >Y!>1{?%?!5?>>%7a=em;Y:d=q=>S.>BB>>ŢM>`>>>ʜ?I? a?l>>,>_>,>A>?C?M;?YT?K ?9>4=h`y>k+>V>/>p> >w>V? ?!?*#?!?9>'>w>?>b>!?5=?`E?ka?^?+>=R>K>n > k>>>]!>K%? B0?? >鿗>>c5?>8D>Z>I?+0!?Zd?e:?W%?#>?=AU<:Zd<ä={X>>W>~9>>oW>j>>es>>1{>?>>i->0>'>4?>`??2?C?->j>U=Ə;;K=+= =o>Y>> f> |i>M">">5$ >@;&>=>,> =-=AU=>.>f>j>nU>̙>o&==*:Y:Zd;~ <$T=U===f= =/=)==X'==X'=@=M"=pS=a==>* >9>= u=A^W:d:Y;~;;~:d:d<> 12>=̾=`y=B="===7!<:d%>_>I>o&>2ݪ=AU=sj<==2=> f>Q4>>:>u~>[>=c,>n>?=є=8r<$T:d:d=HM=د>Y!>/>^W>t>>A ==p#=a>>i->>Վ>ي!>X> ><>c5?>:>==h E>{>>>ڈ>v>>5$ =1{==c,>([>o>O> >>0j>>k}>>Xf>'Ə=V=f<2:Y:d= a=>b>~>8>>:>"===2>#d>,\>Դ>~>i>@ >+K>>o&>GW>t=Դ=<:Zd:Y >j>[>z=>9=߂=5=h =k}=A>X>_h>>Z>[>a>U>79>=엑=Ə=7!<5p:Y:d<2==>%>==kt`=<ܪ=8D=:>>A^W>k->k->I >!>=AU==޻=;c;~;K<;=B==>K=AU=E=f=Rn1=q<ä<(X';~:d9Y:d;5p;K;K;5p:Y:Y:p;Zd<>=5p=sj==em="4<< ;Zd:ʜ:ʜ:ʜ:d:Zd:Zd;~ʜ<~=t`==~ʜ=*pS>k->`>^>N*:> ==0!=̾> 12>:Bf>n>>>c~ >7!>>=鿗>u>n>2L>pS==2;:Zd=){X=LZ>{>>2>N>x>/>d>;/>([>G>|i>>N>ʜ>FO>>BB>oW>R>W>Y8>db>_>>^=Y=;Y:Zd=Mn>pS>@>#? d? f>H>!>j>~9>es>Ҷ?? >?$\??=H>ͽ>ҥ>3>>!? .?C? B0>^W>4s= <2:ʜ=,> 5>[>g? "? 5>E>6P>>V>J> ??%%.?* ? ? >!>>)>`>?C?)?>3>fV=D=+ID> >d>>w>>V>~9>>>C?ғ?q? G>x>y>3>x@D>->O? G?? b>'>X%=!===>|;o>>>n>Mn>79>7!>`]F> G>`>>>>>m))>;c>,>G>|i>]>b>>`>=)=5p<2<%;Y:d=[={X=A>pS>>>o=Q0=йh=I>pS>A>X>M >.>o=йh=ǟ=鿗>>G>f>T">==8D<$Tb>>>>> 12>>"> > y="=0!= = =!> >@>[>>=c,>ID>EM>A>IT>`>{>>Ǡ>z>`y>+>K=̾>=йh>>>ݩ>m><>=g >Q4>~>>~9>y >>BB>>U>h>E>b>([> l>pS>oW>nU?*V?>t*?)>+>F3=|;:d:Y>hg>f>>><>,\>T>y>ճ]>>>{>>9>>.>G?:?Hh?V\?GJ??>|;o={X;~ʜ:Y<>=@>`>MO>w>}^>k->em>z=>pS>R>>J>M">d<>.>Y>, >-? ?@?O7?>?>l=X';Zd<~=X%=>r>0>6G<>+>(>8D>M>jQ0>y >oo>Tk>.> 5=엑> >T_>̙??%7a?>>'Ə=p#:Zd:d<=em==̾=Y==O=I=o>> > />=H=د===>>R>8>>?>=c,=<:ʜ>%==d<=:Y:d<%<%;:d:Y;Y<%<^I l===]<;~<~===Դ>>o>=o=йh==p#=~<>:Y/+K>E>3oB=\5= G=[<=Q=޻=N>4s>Vi[>V(>@>* >r==h=[=HM<~:Zd<=HM>.>G>c5?>K u>)= =){X<==\=>f>c5?>6>;>lN>C>%-> 12==\=E<:p:Y=H>9>Mn>9>E=޻=HM=Q=l=>>bZ>>>hg>:Bf>J=9==k}=8D>r>b==/+K4s>X>V>8D>====`y<=<%:Zd:Y;~<~ =rG= =l<7<;<><%=:2=d=>>=o==޻=`y= a;~ ;#d:ʜ:ʜ:d:Y;d y>u=̾=~=.<%<%=X%==O=B==O==2=N|=a==HM= ==){X< ;=H1{=y6>@;&>o&>k+>96=B===H=y= u>Y>4I>Mn>R>;/>>`>=l> >>.>===;;d=8r>>wx>q>q>~9>79>==>J>Ns>>ذ>HM>d>R>3&v>(>,>HzG>>)>~>*==8r;~:Y;l=p#>>o&>@>>t>Jw>=o=\5>,>i->!>}>>X>_>9>/+K>;/>k+>BB>&v>8>W===<8r;Zd:d:Zd=Y=T>5>mq>{>>c5?>9>=ܪ=AU>`>F|>~9>v^>Y8>j>=`>@>pS>+x>V>V>>>GW=O=ITJ>* >!> f="=SR=d=2>>3oB>GW>@>">B=AU==e>>D6P>`>IT>.==*o>>&Z>&>)=V=?=/=/=>>Qܙ>z=>Xf>Ǡ=l;:Zd<=p#=>> > >>>2ݪ>Ix>[>V >:Bf>pS==D=2>>f 9>6P>>1{>i-= )>z>>z>,>C>av>nLZ>g0j>GW>"===i[> >>?? >BB><=:d<ܪ=y=,>|> l>> />q>4?>G>V>Mn>79>޻=V=є=йh>ҥ>o>i? >~>'>=8r:Yo>r>E>>o=ܪ==d==B>R>R>͘>.>J/=<8r:d==n=bZ=p#==엑>2ݪ>K>.P="=P':d:d<><2<%;~:Zd:ʜ<~<5p<(X'<%<>;d:d:Y:d<~<^I:d:Y:d=̾=I=Cw=em<$T;K:Y;5p<=l==,=E=]K=A===d=rG=HM|==K==f=D<$T<(X';Y:Y:Zd;~ <ܪ=Mn=h =.b>=AU=Ə=bZ<=o>=A=̾=V=+=(X'={a =?=_==鿗= u=D==є=ǟ=ܪ=B>=V=k=k}<%:d:Y;5p=u)=d=ܪ=j==h=8r=+= a=`y=d==m=AU=D=>=k}={X=D= u=Q0=A=AU=pS=u)=7!====u)=D< <ܪ="4=h =k}==X'=f=`y=bZ=~ʜ=f=a=?=D=a=A^W<<~;~ʜ;#d:d:Y:Y;~ ;:d9Y:Y:Y:Zd:Y:Zd:p:d;K=Y=2=.>> =<ܪ:Y:Y<~==@;&=p#==p=O=g=A>E==йh==3=em=q$T=d=>/>S.>8i==+:Y<<$T=7!=[=f====I=s=K=i=HM=p#=QK=n=d=->3>Vi[>8D=ܪ=5p:Y:do>t>={X<;Y<2<==(X'=8D=7!= f< <2==l=a==%=7!;K:Y;Zd<%<;:d:Zd:d<:2=8r=@;&=`y=V=/+K<2;:d=){X<><%;;Y:Y:Y:d;5p;~ʜ;;~ <5p<ܪ=.=D=@;&="4<є<:d:Y:p;d<8r=@=kt`=y= =a7<є:Y:Zd;~<(X'<<<<>:ʜ:d<;Zd:Y:Y:Zd:Zd:Y:Y:Y;d<==.='4<ܪ<%;~ʜ<~;d:ʜ;l;<(X'<:d:Y;~ <:2;:d:Y:Zd:Zd:Zd;d<;;~ :d:ʜ;~;Y;5p;p<~<%;5p:d<~<%<~;:d:Y:Y:ʜ;;~ <%;~ <~<:2<<==H1{=8r=f=Mn<=8D==X'={X=8r<7=8D=V=A^W={X=޻=D<%B> > l=A=F+=q==5p=8D=d=A>==Jw:Zd:ʜ<%=p#={X=9=0!= =z==~={X=n>?> >> y=A=O={X=sj=){X=8D=+K>Y>([>=:ʜ:Y<~=~=h =~=8r={a =|;===,=엑=A==-=˛ ==8r=3<є<ܪ=}l=">|=|=:2:d:Y;~ʜ:Zd;~<5p;:Y:Y;Y<><є=~=7!=V=em=QK='4b=ܪ= <1q:Y;<ܪ=8D=vG=f=!=c,=D= =V y>J>=v<~ l>>b=:d:Y9Y:Y;#d;K;d;K<<2=~="4=~ >>`y==h =IT==s> >n>.>4I>,SR>=y6=v=3=>+0!>y >>C=є<^I:d<ܪ==B> a>,>=I==d=O> />/>F|>Y!>`>U>7!> =ϖ7=>r>.>>\>0!>2L=H1{:p<є=/=->">#d>=B=!=̾=~>>>?>U>c~ >iv>[Ѓ>9>="=c>>>t`>> >MO=:Y:Y<>=====;=V=c,=E==>z>5$ >@>F3>F~>9>= =?==>f>>I>> =8D:d<^I=0N|=8r=HM==5===йh>K>u)>>> ==6P=@=em=+=h =_>8i>Mn>"={X<(X':Zd:ʜ<~ >>`=̾=+:Zd:Zd<(X'==h = ==ǟ=LZ>Ǡ> 12==Y==l=a7==M"=;&>r>F3>b>R%e>pS=.;Zd:Y<~=8r=X%= ==O=B> >%>=йh===p#==d=ܪ>,SR>k->>{>>4s=+K;d;5p|=== =`y=V=|;==O>">dXp>F>pI>+=\;:Y;1{=\= ==2=2={X=8r=8D=Q=Y=8D=p#=0!=\5>2ݪ>ID>9==V:d:d<%<^W=$=Zd=rG=h =7!<<<(X';d:d:Y:Yo>8r=AU==%<(X';Zd:ʜ;H1{;=8D:>J>>|=h=`ypS>>=;&=B=5p<=`>>L6>_> >2ݪ=bZ:Y:Y:d;d<2=+=P'=IT=Mn=}l=a====j=-=ܪ=ǟ={X==:2=+={a =>r>!=9=l;~:Y:Zd:Y:Zd:d:ʜ;<;d;Y:Zd9Y:Zd:d:ʜ:d:d:d;~;ʜ;K:p:Y:Zd:Zd:Y:d;Zd<><ä=k}=7!=8D=;c=H1{=QK=A^W=>==I=2:ʜ:Zd;d<7=[=)={X=2=ܪ>o>>"4>P=e== G==y==>>GW>j>_>%-=I >* >C>Mn>@̾>!=\5=6P=={X=2>~>R>>D>&>y> l=){X;5pr>79>Tk>`y>Pp>/> =F+===,>k}>{>>F>װ>>>&=K :Zd>>'Ə>A^W>Ix>=c,>d==j==v=0!=^W>>pI>n >Դ>w>>t=2:ʜ<=$=z===|>>pS>>u)=-=D==3=3=:=AU>9>3>~>>`y=AU<:d< <7=;c=[={X==]=v=f=Sb=5p=*=*=8D=5=i[>$>C>6==`y;:d<%<Y<=;c=M"== G==`y>P>pS==SR=+<<%<%>.>.P>===>-->.P>=B=k}==<=<є<ä=~===h =h =K =5p=){X=+=q<$T>>Ǡ=O==bZ=q<%<= f=@;&=f=em===Y<ܪ<є >4s>;/>$=g==7!==є>?>Cw>7!>C>@̾>+x>=̾=̾>(>4>6>$ >nLZ=AUb>EM>vG>>em>, =i[==йh>pS>A>n>`>BB>>:>Qܙ>&Z>F3>t?>?.?0?,\>y=̾;K:Y>bs>.>&Q>E>GW> y=Q0>>B>x@D>> k>ǟ>>V>^>Y> >;?>2ݪ>Y!>>v^>~>F3>)> l>+0!>Z>6>^> >4>>L> a>em>NX??F3?`]F?a?Lc>? g>Qܙ=;d=Jw=>,>Y!>hg>Qܙ>%->>>%>Qܙ>}8>G>O>6>pw>>pI>@;&>d<>%?)$?N?Ph?2w>+>$ >HM> 12=ܪ=ä=ܪ> >,>IT>d>{>>a>{>>W>)$>8r> >hg>?a?J>>\5=:d:Y;5p~>w>Y>)> |i=B=I=`=޻=T> >c>pۈ>:2=Y:d:Y:Zd:p:Y:p:d;<#d<8r=A=O=X'==a7=`y=\=8r=є> l>">t=t`=y="4==X'=є=ܪ> l>* >EM>R>EM>(>=˛ =SR=9={X=I>/>{>>>\=A=@;&:d:Zd<(X'=){X=f==AU> Y8>.>Z>>~>~>Y!>,>o="==йh>d=>z>6P>->B>v>C=;Y;d=~==q=ܪ>><є>o&>>>y>k->:Bf>%=-=O=t`>9>̚>N??r>Վ>t=D;5p:d<====>:>/>`>>X>d>Y!>,>>=i[=^W=ܪ>2ݪ> >t`??>Ҷ>m))=0!:d;~<=QK=q=J> l>0H>M >X>GW>* >`y=D=+K=d=q>o>pۈ>>6u>>8>/=V:Zd:ʜ> y>K=D=d=[=n=Sb=Sb=9>.>`>3>>:2=D<8r9Y;d<:2<2=h ==g=i[=HM="4=V=Mn=8r<~:d9Y:Y<5p=h ==O=1{=Ə=:2<%:d9Y:Y:d;5p;~ <;d;Y;d<%<%;1{:Y:Y=){X=I=9>>%=))=d=8r;d:d:Y;Y<<==Q=8r<$T<$T<<%<;~;Zd=`y=O>M">,>+>=ǟ=kt`r>,>,>=AU= ="4<2<8r>pS>8r=ǟ=/=@;&:d:Y;5p<2="4=5p= a:p:dY>8i>?>* =#= =(X'=em==鿗>>2ݪ>C>BS>.>o=D=I>A>>I>>q=׌>>ID>|;o>:>k->1y=ܪ=Ə=> y>8>i->w>q>>}>Z>4I>c5?>ɝx?N?5 ?4?Y>k}=c;~ :Y<=>>j>)>y>4>Ph> => Y8>8D>l]>z>h>> >MG>w>n>? l?C?\?]*M?C>b@>,SR<2>av>0>&Q>:>MO>r>?>t>K u>>>J>ֲ(>ܙ>>>{a >}?>?K ?cq?dH=;d=V=߂>4s>b>o&>ZR>,>|=>J>C>t>>q>>2>^2>K>U>a>q?0?QK?R?5p>> <:d<==<>>n>r=y6=;&=1{=A>n>A>aB>~>j>:>g0j>8D>r>$> >-?[?J>E>=l;Zd:Y:ʜ 12>'>>=G==d=q=>:Bf>y >~>A="<2= f=5p=;c=7!=.=;c=l==|;=V="4[>)> =t`=2=޻=kt`=Rn1=Jw=p#=!>Ǡ>(>$>b=d<ܪ:Zd9Y:d>9>[Ѓ>iv>_>pS=V=l=k=d=йh>0H>:>>>pI>`=|;;:Zd<>="4=l=h=V>>?>v{>)>C>%>t>?>==;&= u>t>3>Ҷ>{>j>ˉ>`=h<>;p<=={a =!=>A >Tk>>̚>0!>>t>Qܙ>n==O=->=c,>uM>>?s?>엑>=B<:2:d<=:2=a=>%>F3>>>>>z=>A#>=V==>9>R>?O?w>*_>=K;~ ;5p<^W=`y=0!=߂>f>ID>nLZ>{>>i>C >=7==d=>>>Е>C>">>>Rn1=M":d:ʜ>@>$>==h=%==V=K =>>{>?>>^}=I<%:Zd:Y<%==QK= ={X= =pS=`y="4<=sj=O> 5>`y==;~;Y<1q;~ʜ:d:d:Y:Y;5p<=[=<;9Y:Y:d:d:Y:d:d:Y:dr>=t`=d= f;K:d:d;r>)===;c>([>%=D=h > >">u)===^W>!>vG>%>>&Z=pS2ݪ>`]F>i>Mn>=2===>r>=c,>j>F>>k+>:> G>A#>>r??>_>EY=|;:ʜ~>M>h>7=>oW>8i=))=&v=O>r>A>{>>BB>>R>y>v{>Qܙ>4>?&]?FF?DO? 8>t=ܪ<~<%=>|>F3>ycu>a>k->7===>&>WX>3>>>>8>>`y>>~?/=~?N`?N?+>q>o:ʜ=2=̾>A >GJ>V(>A>="==> >G>{>>K>>9>v^>f 9><>f> ?N?6"?65 ?R>/=AU< >w>`y= u==d==9>>=c,>[>m))>i->IT>n>>'>f>c>>N>l>96=:ʜ:Zd<(X'='4=}l=Y= =p#=Jw=P'=== =I=>o>=F+= = =^=V>">F~>F|>z=+K<1{:Y:Zd;5p<>< <<<>=ܪ=p==B="4=Q=){X= =AU> /> =_=޻<ܪ:Zd:Zd;<ܪ=D= ==> >.>Mn>]<>R>4s> =йh=d=8r=B=0!>u)>av>`>f>V(>b=rG;d; 12>8D>k->>pS>5>j>79> V=1{={X=>b>jQ0>f>>߂>P>HzG=q>Jw>:>>>g>>F3>=ܪ=D=̾>n>k}>-?% ?M>cQ>=<^I;=޻=.=> >A>{>>pS>BB>>o&>9>Ǡ= u=v=>q>ذ>? ?>cQ>~=;ʜ:Zdz>F~>i->tE>b>`=˛ =X'=f= =>kt`>>T>\>>A=:d:p>>n>r=-==[=Sb=){X==> >b>v^>|i>ID=1{<2:Y:Y<Y<==D=y==^= =Mn=8r:ʜ:Zd:Y:d=h ==,=|==7!;~:Zd;~ <є="4=A^W=QK=D=+<ܪ<5p:ʜ:d:Y;~ʜt>5$ >8D>!=\5=O>K>Ix>G>">c>ID=E">@̾>Ix>6G<>o=Ə=V=3=>>,>U>pI>sN>Y!>.>%>5>M">y?K?>$ >n=7!:p:ʜ="4=D>>:>EM>2ݪ>o====_>'>>=>j><><>jQ0>;/>>>=>A >LZ?P? >Ηm>?`=p#:d:YpS>n>%==k}==a=йh> >/>R>k+>i>K >">8r>ҥ>v{>'>Y>>^2>n=Jw:d:ʜ=8r= =2=,==f=h =C=rG=SR=K>`y>>+0!>([>==D=˛ >">[>o>>:2==:Y;5p<=2=Rn1=Mn=/+K<=<ä<==C=[===h==)=V=7!=h = =y>>=Y=p#<%<;d;Ǡ> k>.P>&> =AU=^=em=$==Sb=>>A>A>==5p:d:Y;<==t==_>>=c,>a7>lN>`y>;c>u)=O==h =h =+K>ҥ>~>8>;>vG>Y=;K;~ʜ* >Y!>}8>>y >O>f==Ə==l=׌>Mn>>&>>n>9=k};K:d >MO>o&>{>>iv>@>,\=Y==p#=}l=i[>R> >l>Ϻ>>7=y:ʜ;d=~==>b>%7a>=>EM>8D>V===h =,=0N|=>$>>V>>x@D>=$:Y;~ =Q=q$T=X'='=N==I=={a =*<ܪ>G>C> = <%;l<=Q=K ={a =rG=A^W<$T< <<2<(X':Zd;#d<(X';l:Y:Y:Y:ʜ<ܪ=q=7!=C==="4<ä<^I:d;<==V==^=h=2={X=8r=V=|;==LZ>=йh=p#<%9Y:Y<2=QK==h=<>> l=t`==d=D>8r>9>S.>8i=<=,:ʜ<,=K =E=m=j=F+=k=2<=8r={a =0!=O>>pS>>u=1{==>>GW>k->Sb> =rG<~;5p=8r=3=!===8r="4o>=I=&v=%=Ə=y6>!>=c,>-O=-=l%>">=Q0===H="4< 12>4>2ݪ> l=<=;= f=8r=?=>%>* >1(>">8r==3=2<є<=p#=߂>9>k+>i->1(=̾= f:ʜ<$T=u==AU> y>n>&>%==v=l=Y< <=kt`=2>;/>nLZ>kt`>0H=%>:Bf>7!>`y=;:d;;5p:Zd:d;d;d:Y:d;K<1q<~;5p:Y:Y:d;~ʜ;d;;d;~:ʜ:Y:Zd:ʜ;l;~;#d:d:Y:d;#d;~ʜ;Y:p:d;5p;~:ʜ:Zd:Y:Y:Y:Y:d;~ʜ;;5p:Y:d<~<<8r;d:Y:ʜ;d<;;Zd:Y:Zd<~<7=5p=8D=8r<~:d<~<5<2= a=f=sj=E<ܪ;d:Zd:Y<:2==7!=V=rG=p#===~;d:Y:Y:Y:Y:Zd:Y:Y:d:d:d:d;Zd;d;K;Y:d:Y9Y;5p<;K:Zd;~ʜ:d:Zd:Zd:Y:d<%:ʜ:Y;<^W=޻="4=;Zd9Y:Zd:Y:d;K<%;:ʜ:Y:d;Y:ʜ:Y:Y:Zd:Zd:Y:Y:d;K<;~ ;5p:Y:Y:Zd:Y:d;~ʜ;~ <2<є<=B=,="4<ӑb<(X';K;p;K<~;~ :d:ʜ<8r<>;d:d:Y:p:Y:Zd:d:Zd:ʜ;~ <~;;d;l:d:d;~;K:ʜ:Y9Y;d<1{="4=~Y>4?>* =G= G=n=~===\5>n>.>!>b=E=p#=7!=V=)=!===p#< :Y<=>,>WC>Jw>=ǟ==?=O>>)2>Q4>c5?>R>$==a=rG= =;&==>>=2=8D;~ʜJ>?>:Bf>%=D===AU>>&>H>_>M >n=AU==h = =Y>o>f>==kt``y>=O==.=d=!=O=>Y>n>=t`={X=V=Y=V==׌>K==D=@;&<(X':Zd<%=2=l=/=|;=QK===YAU=h ={a == G=0!=0!=y=2:Y:Y;~< <:ʜ:Y:d;YE===V<#d:Y<(X'<$T="4= f<:ʜ:d;~ y>5$ >IT>:> f={X<$T:d:Y;~ =[=bZ=B=p#='4<1q:Y:d<%<<ܪ=f=Y>>F3>_>G>r=q=~;Y;Y<8r=$=d=>f>-O>=د=[===={X={a <1{===޻==AU=y6=ܪ= ===l=~;~ :Zd<1{=޻=> G>r==pS=V=8D=H1{=y=O>ҥ>F3>Vi[>GJ>5$ >J> l=LZ==<ܪ:p:ʜ=.=s>GJ>~9>vG>:===f=4=׌>,>{>>>>M">u~>MO>3&v>>>K=v=*;Zd:ʜ=8D>8r>i>ذ>޻>c~ >=йh=D=>Ǡ>M>G>c>`>>>`>@>,> 12==2;Zd:d==i[>E>>d>M >Y=O=I=c,>`y>=c,>^>7a>~>>j>?>)$>=))=k<=:d9Y<%==>'Ə>,>=F+= =)=k}=> >96>[>_>C>n>:= = u==8D<>:d:Zd:p<<^W<ܪ<;d:d<=l=d= G=`y<;>=>79>~=h=%==N|=AU>>IT>b>Q>"_h=ܪ==p#==d==ܪ= u==Y:d:ʜ=h >Y>t>A >ذ>g>">E>>>A>d>>!>U>>?>=O=K> >96>Zd>V> =<2:Y;= >, >P>>jl>)>V>2E>5$ >K u>>#>b@? |i>;>8>|;o>,> >%>A#>>>2>>޻=l;1{:ʜ=p#>>y >_h>8>>T">8i>=c,>[>>>? }> >¥>~9>.> 12>>IT>`>!>a>K>2= G<:p:Y<ܪ=>"_h>Tk>[>@>>>޻>n>9>dXp>)>>ܙ>>[>E>o=O=>$\>fV>pS>BB>z>= <:d;Zd="4=^=AU==i[== =ܪ=x>.>$>C>_>Rn1>)$=y6==p#=.= u>%>7!>=>==;c 12>Ǡ=O=B<:d:Y:d >@̾>|;o>M">3>Ph>B=<<~<є=QK=f=E=={a <ܪ:d;5p=[= =h=ä=O> >IT>M">>>p> G>9=c,=5p==QK={X=s>`y=o=!=QK<%;Zd="4=a=Y=O=׌>>[Ѓ>^2>>#>߂>8>A=O=bZ=8D=[= >o>> =O=2ݪ>>U>>>ycu>HM=0!=C=5p===>`>E=̾=h <:2:ʜ%>:2>M >9> |i=E==<ܪ<ܪ=8D=M"=2==̾=M"=;Y:ʜ;~ <><=@=p#=pS=d=pS=h =$=jQ0==kt`=HM;~ :Y:Zd:d;Y;<><;:p:Y:d<%<<є<;~ʜ:d:Zd:d:d:Y:Y:ʜ<><є<ʜ<=>(>)2>t>~==Y==VY!>>>>==j={X== =>'Ə>{>>> >BB>_C>c~ >A#>* > |i=c=QK< <>=>G>J>ۇ>&>f>F3>=ǟ=AU> >>>͘>F>>y6>a><>_C>f 9>9>B=HMi-> >E>(>>o&> =>o>EM>>"? b?>ʜ>!>H>M">{>>Jw>%=X'<ܪ:Y;~ =>C>SR>ۇ>Վ>}>a7>=>>=c,>ذ>??s>1>c,>E>>bZ>9>=.<:d=){X=엑>Y!>v^>v^>f 9>(==]=˛ >)>V(>D>>>>~ʜ>S.>9>%->Ǡ=D=7!;~ <=Jw=Y> >r>=O==[=3=I=>">A#>A>+> f=V=̾>===8D<ä=.=QK=@;&= f |i>>=鿗=X'=Rn1= =~=A^W=y=d==z==Y;~ :Zd=5p=->Mn>4>4>X>A =A=->K>&>q$T>U>Y>i> a>A>= u=^W=>>5$ >2ݪ>Ǡ= <є:Y;=X'>?>3>M>5?>>>]<>S.>g0j>>?[?$? >>q>hg>2ݪ>.P>\>m>U>˿s>q>2L= <~`>6P>?r>s+> k>G>>`>\??>E>g0j>i-> G>ܪ? 4?>>K=9=@;Zd<~=v>@>1V>T>E>>!> >>$ >??q>>k+>o&>>엑??r? >t>q=p#X>k}>&>q>3>>>G>Z>??([? 8?>>wx>:>@̾>>6P>?Ǡ>(>E>=u<5:YJ>.>/t>* >/t>9>IT>k->NX>c,>T>)>^2>b>=m=o>* >n>>q>K>A= =8DK>J>/>1y>=ǟ=8r=X%===>t>* >%=̾=em<;Zd:Y;K<<<:2;~:Zd:Zd;Zd<~=Rn1==!=̾=,=>J>:2>Y!>R>)$=K=h y>>z>/+K>`>>D>T>ي!>c>K =AU=u=C=~=O>Y>n>=O=sjJ>?>G>Ix>n>>m?Q?C?M">>>n=== u>>>Y!>pۈ>UF+>=!=Y:p;Y=8D=йh>)$>M>V(>W>{>>~??$o0?>B>g>.==є=B>=`>>V>{>6G<=йh=8D:ʜ:Zd==l>`>0>4?>0H>K >0>̙?? ?> >sN>%===o>2ݪ>pۈ>[>k->,=|=+:d;~ =H1{=E==I=AU=A>,SR>hg>&Q>[>">`>pS=c=M"==c>>3&v>EM>2ݪ>E=CwE>">J=y6=@=5p<ӑb f>3>EM>EM>9>>>===|;<ܪ:d;=f>&Z>>n >>t>=̾=M"=a=g>F~>@>1{>4>^>_h>3>i->D6P>ҥ==<~ʜ<=i[>:>_?> >8>pۈ>==>=>>{??J?>1>U>9>;>Y!>=h=޻:Zd:Yb>>B?? U>Z>%>9> >pS>kt`>N?Q?$8?%?I>>׌>p>>pI>/= u=7!:d<=Դ>>ܪ?G>^>ͽ>^>5$ >Ǡ>>b>;&? ?{F?? D>,>^W>>X>`y>n==@:d;d=3>&*>>h>p>>F3>="=->.>6>1{>]>s+>>~>~>k->M >* =Q0= <:Y:Y y>96>:2>ҥ=x==M"=q=ϖ7> G>W>>~>`y>5l>HM> |i==ä======{X===="4= a=Jw=M"==m=鿗=D={X= ={a =V=){X<є<~:d:d;1{:d;#d >r==c= G====I>q>;c>8i>z=AU==`y=<є=bZ=k}=p=I=pS=B<:Y:p=K =>f 9>>>v^>U>%7a>%>>>,>LZ>O>'>[>9> =>u)>9h>f>o&>:Bf==7!;#d<=I>Ix>c>? >ֲ>>)>>>? Y8?,.?@?:2?,o>H>c>n>[Ѓ>7=>;&> ?o>Ţ>=O<ܪ:dnLZ>M?u)?C?>~>0E>i7>??.?S?`8?[cQ?D?>>A >o>?m?*?7?"q>_>=c,=l=D>Mn>?9?? >~>ӵ>1{>7? f?3C?UŐ?a7?\?GD?{F>`>>BB>ͽ?%?8 k?DO?/}>;o>l=?=;~ʜ:ʜ=p#>>zr>=>ބ>>>&v>>>q?HM?8{j?Hh?C?(!>>s>K>{>V>? ?+?f>y>V(=l=k};~ <= =G>:2>hg>sN>n>pI>rG>~9>N>̾>}? ?~>3>`>`>([>$1>Y!><>>j>ٮ>>=/<=;:Zd>Y>z>> G>&*>MO>y >h>[>!=د===y6>">R>k->S.>r={X=+<7<ä=2=QK=8D<;Y:Y;d<=K =E=> > f> f>%>2L>V>vG>oW>A^W>=H= G=== a=QK= =>b=߂=^=k};Y:Zd<>=8D=|>n>IT>Y!>U>aB>7=>&v>1><>ۈ>c,>o&> =p==s>(>k+>>`]F>=0!<7:Y:Y>^>>->> G>X>6?A?(X'??>x>E>?=鿗>#d>:>I>B>є>k->?=c~ ;Y:Y">o&>)>ذ>o>̚>j? ?&H_?29?([? !j>C>WX>Y> y>C>`>j?>鿗>>z= < <%= > >QK>{>>>wx>:> >O?u)??O>->G>:2>> l>=`>>5?>>ֲ(>^>V=l;~ :d=k}=D> >,>.>$>,>R>3>q>¥>>Y8>?>^=,=AU>>]>BB>~>V>C==8D:d;~ʜ=[=[={X=={X=?=D=LZ> |i>pS>>=H===.=k}=є>E>,>=c,>(==y>%>t==a=(X'<<=8D=X'=l>%>9>4?>==T==`y* >x>+K>8>nLZ>J=D== =د>=c,>o>a>I>>>B>c5?>=c,>'=O=rG:>@ >ʜ>E>/>hg>=|=>7!>^2>R?-?Y?NF>>a>>:>QK>pS=I=Q:Zd:Zd=%> >>j? ?Ǡ>ڈ>7>.P=B> y>c>v? ?!i?#?K>d>!>$ >G>l>+=|=7!:ʜ:Y<==o>>ڈ?d>F>W>~9>(=> |i>^}>?9??2z? >Q0>>>X>\>ҥ=="4:d<>=d>3oB>)> k>&v>>=c,>= =د>*U>>̙>ܽ>K%>> >>oo>Ns>* =鿗=3pS>=>=c,>=Q0=v=[=M"=˛ >>c>Y8>~>l>?>n>`==Y=y=8r;:Zd<^I=D=k}=0!=={a =){X<==~=H1{= G=s>>=V===8r=bZ=2<1q<~;Y:d;<>>r>=Y=q=q$T=a7==>>%>.> G=V=Ə=|;=A^W=B=[={X=v=޻=E<:Zd:Zd='4=i[>Mn>G>{X>G>b>* > 12>>>>k->>װ>;J>>v^>F~>>> |i>/t>_>nLZ>=c,=ܪ=C;d;K=>4I>S>N?[>^>s>>~9>>>i?P?4??3?o>>&v>~>av>z>?>;o? j6>N>3=s=;Zd<(X'=l>U>q?@?es?"?O{>ӵ>!>]!>C?#?J?Y?W?D? s>v>> G>a?l?-?M>Ph=%<^W:d;~ =d>:>/?9???NF>7>y>װ??)i%?N`?\?Z?Hh?m>(>{>;>͘?V?;c?J ?7?Ip>==+<~:Y:Zd=Mn=G>vG>Z>엑>>%>>pw>i>5???1q?E5?B܇?*?l>J>P>>x>?$?2?#>$T>o&=6P=;cID>> a>4>:>~9>{>>>D>#? ? >> k>{><>2ݪ>aB>>g>g>>4>* ==+>z>n>">>'>ҥ>ID>>>q>:Bf>===x>/t>d<>I>l]>)$==Jw===/=$<;d:Y:d<%=]=f==k}=l=V=5p="4=<^W<є="4=2=~< ;K:p:Y:ʜ<%>pS>'>u)>>"4>;/>U>T_>/==={a =V== u>%>n> f==7!;l:d2ݪ>`y>k->b>b>}>es> >O>K>>`y> =|=є>>V>>> G>==є=:Y:d<2={X>">pۈ>o>BB>o>>n >x? U?HM?>>->q>C> > >K u>n?@?Q?+>8>z=;K:Zd<ӑb=2>6G<>E>>>?>_h>^W>{?[?!?}>F>S>Y!>>$>z=> ?c?-?>j>@;&=<5p9Y >hg>>->>^>>Ѹ3?? i?>ܙ>>BS>'>n>o&>?HM?%?(>̾>9=9<%;K=QK=йh>n>@̾>D>8i>7!>MO>|;o>>U>=l>I>F3>)=>>9>N>x>d>׌>F> =n;#d:Y<5p=H1{=Ə=Y= u==|=I=> Y8>>pS> f=I=h==h=鿗>+0!>gy6>>}>^_>=SR<:Y;~o>?=̾=<;~ ;<ܪ===))> Y8>Y> y=Q0=2=%=`y<=;1{;d=|;> |i>\b>:>y >:Bf=엑=="4=Jw={X>>]<>>)>~>t>T">4s>=ܪ=>="4;5p:Y<1{=>U>2>̙>;&>>2ݪ=O=pS=+K> >w>]>x>>Դ>D>N>~9>U>$==ly>S>Re>`>Ə>QK>|==">3&v><>d??Ǡ>~>ͽ> >%>q>=c,>=<~ :Y:Y<ܪ=">`>>of>1{>ذ>BS===йh>0> G>D?,J?b>d>>>>av>2ݪ==M"i>o&>)>V>WX>r===> l>b>2>/>U>,> >fV>F3>* >o==QK<:2:Yt>J==E=q$T=7!=em=0!>o>C>l]>m))>Mn>(> Y8=-=Y==V<:ʜ:Y;~ =[=em=|;=[=@<<ܪ="4="4>f>>u~>==q=Y>%>Qܙ>>>>b>(>=i[=̾>>b>n>.>Y==$;~:Zd=8D>K>~9>Y>T>>>w>@>2L>U>E>`?\? ?>N>>\>=>K u>~>>i[>t>Tk==B;Y:d=p#>t>=l>K%? 7? >>H>.>6>>??0?3?#?B>I>Y>~>pS>?b?? >=>+=<:d:Y=QK> >>{??>->>k>>X?d?";?8?:?(? j6>N>>l>>&??+T?es>Ţ>Z=q="4< :Zd<%=c>IT>[>j>)>>8>,\>6>?>#? f?o?!`?>>U>|;o>g0j>5>? 4?2z? >uq>MO=?=8D8i>nLZ>>y>i->Tk>@>D6P>vG>>d>5?>0E>BB>`>+x>>@̾>:>a>۬> >3>=޻=* 12>)>Y> ===ܪ>J>F~>`>Mn>&=G==!=ܪ>>F|>c5?>Q4>r={X=;c=Y=B<8r<$T=~<ܪ;~:Zd:d;d >>@> l= u=a=|;=`y=~=ä> />>=q=@:d:Zd< =2=>pS>=c,>GW>=>8i>@̾>]<>~>>.>l]>0H==̾==l>Pp>d=>>>=`= f>O>~9>_C>y>o&>:>k>6P>װ>ͽ>>pI>*>>>F3>? l?I?>2>=YAU:ʜ:Y>em>X>v^>:>\5>,\>&v>ڈ>엑>D>>>=c,>>d=>sj>v?#1?4?!i>>A=pS;K 5>GW>pۈ>ycu>f 9>^>tE>%>>>c>>lN>0> >>lN>*:>:2=pS;1{;~ʜ=8D=> >*U>/t>"_h>>.P>E>av>qm >nLZ>V(>/> Y8=m>|>8i>>*_?E> >x> =\:d:Y<%=7!=pS===h==O=I=>|>=B=ϖ7===p=V>,>qm >>j>z={X<;Y:Y:d;5p;~ < <~;d:ʜ:Zd;~:Zd:Zd;~ <%>,>===~<:2o>%>.>* >d=> y=B=q==Y;~ Y>Y>~9>m))>2ݪ=={a =HM=a7=> G>h3>.>>>}>b>A#>(>o==l<$T:d:Y<=>,>}>%>>Ns>==[=)=>F|>N>>:>>E>^}>>=>@=엑==*;1{:Y@>i->>|;o>==o==`y=)=2>D>V>E>q>E>z=>M >1q>%==k}=HM;K;5p=7!=>&>A>7!> |i==QK='4=l=D>J>aB>6> >k+>=c,> G>=йh= =\<:ʜ;~=4?=4====7!<2<==h => />.>/>=鿗====8D<2;:Y:d<~ />+0!> ===`y=$=7!=M"=د>>%>!> l="=h=d=/= =2=|==h >q>>v^>`> G=ܪ=E=c,>>J>o><>!|>ycu>=c,>"> l>Ǡ>#d>L,>fV>D=G=C>>8>>>`>,SR>>d=>`>>Mk>T>h&>>~>F|>5>@̾>{>>T>ŢM>S>[Ѓ=ϖ7=7!<%:Y<:2=SR>:>ذ>>̾>̚>{>>F~>,SR>9>~9>!> >E>>>>R>?Z>X>>>,>ѓ>> /=Ǡ>av>>G>>a7>9>>>MO>K>̾>p>`>z>c>2ݪ>%>A>a>>L6>c,>d> Y8=8r=[<%:d9Y<=>>4s>A>;c>([> =B= u=LZ>6G<>rG>6>{>K u>==>.>;/>y>v^>>}>8i==[<$T<%:ʜ:Y:Zd<=p#==AU=_= u==a=~=8r==>> =V=l=)=/={X=> >@> /==kt`=[<~:ʜ:Y:Y:p;K<;<Y^>=H=>> > >7!>8i>#d>=|===є>J>]<>>\> V=rG;d;l==> l>, >4?>*U> >-O>C>em>{>>y >Z>/t>=йh=O>>{>>>">N>q="<ܪ;~=8D=>J>;>A>8D>.>=c,>\>>V>4>nLZ>@>==>79>??&Q?>d>%=;c:Y;Y=+=I>o>%->,> >t>.P>F3>c>t>o&>WX>2ݪ> 12=B=>4s>`>?>b@>>=C:Y:Zd<=sj==I=엑=y6=t`>8r>M">"_h>.>/+K>n>Ǡ="=2=Y> >e{>>k>s>Y!=йh=:ʜ`y>:>WX>9h==|;;d:d<1q<1{==Q=HM== f==~=@="4=@=$="4==8D==H={X=D=d=Rn1<5p:d;`>K=h=V>> |i=~=AU=?==HM<:2:Zd;d=@;&= >r>&Z>pS=s=|;<^W>>=c,>=c,>(>=G== G=QK<є;Zd;~= a=?>>> |i=є=V<<='4= => >@>?>&>o=ܪ=h=/=A^W>>t>=˛ ={X=[=D>=B=d=V<엑b=x=i[==?= ={X==Y=йh=h={a n>IT>H>&Z=o==a7=E=d=>%>;/>9>ҥ>K=ܪ="=>Ǡ>">3&v>=˛ =`yn>Mn>UF+>8i> /=Y= ==E> f>;/>V(>Mn>/+K> f=V=Z>>>>F3>_>EM>~=M"<;;d:Zd([>3oB>"4>E=2=[=em=pS=y6>&Z>=>8D>=엑===鿗>>:2>QK>;/>`y=/=Q<1q:ʜ:Y:d== G=AU=x==̾=)===>===HM=>>=йh={X= =HM=q=د> V>>Ǡ==V<ܪ<%;5p:d;Zd<ܪ=h =M"=)=rG=/+K<<<%=HM=jQ0=pS=%==H=@;&=+=7!=Mn=B=d=SR=M"=A^W<1{<>;~:d:Y:Zd<~<=[="4:Y:Y:d; =鿗=޻<:Y;~<7=q$T===h=̾=i[=> >>> ==h=HM= =I>>F3>m))>K u>b=V:ʜ;="4=)==Y=T=i[=>`>>>,>+>k}=9=Y={X=4=">, >7=>/>>,=;~ ;1{=Q=B={X=p==,=))>>>>> =m==d=d=йh>*U>_C><7>:>+=9< :Y|>?>c5?>A#=N=p#;5p:d=P'==ϖ7==O= <;5p:Y:Y:ʜ;~;~ʜ;Zd;~;d;~ ;Y:d:d;~ʜ;Y;Y:Zd:Y:ʜ;Zd;5p:ʜ:d:Y:Y:Y:Zd:d;Y:ʜ:Y:Y:Y:Y:Zd:ʜ;K;K;5p:p:d;Y:d:Y:d<~<8r;:d;Zd:Y:Zd<5p=2=f= G==Y;:d:ʜ<%< =\=a=!==X'==q$T=$:d:Y:d<><є=;c= ===l=9h=Rn1=u=f=a==I= G=Mn:ʜ:Zd:Y;Y;~ ;~ʜ;Zd;~;d;d;d;~:d:Y:d;K<>;;1{;l:ʜ:d:p:Y:Zd:Y:Y:ʜ<%;Y:ʜ;p<5pb=ܪ=f=.=`y=9=AU>==y;~:Y:Y9Y:Y;K<<$T<:p:Y;~ʜ<8r<є==Q<;:Zd:Zd;5p;K;K;l:ʜ:d:d:d:Y:p:d:p:Zd;Y<><<<>:d:d<~<~<<$T==Y<7="4=+= f<<(X'<~<^I<=[=~;~ ;K;d;:ʜ:d;p<:2<;= a=HM<엑;;;~ ;K<~<=~=~<><8r< <>;5p:Y:Y:d:d:p:Zd;d< ;K:d;Zd;K:p:Zd:d:d:Y:Y;~ʜ<%<#d;d:d:Y:Y:d:d:d:p:Zd:Y:Y:d;;ʜ;d:d:Y;Zd<(X';<><^I<<$T="4=2=$=Y<=:Y:Y;~ʜ<><<ܪ=8D=l=h = a<>:Y;K<^W=5p=\=h =K = f<:2:Zd:p<~:Y:d;:d:Y:Y:Zd:d:d:Y:Y:Zd:Y:Y:Y:Zd:Y9Y:Zd:d:Y:Y:Y:ʜ;Y:d:Y:Y:Zd:Y:Y;5p;d;d;#d:Y:Y;K:ʜ;#d;K;K;p;5p:d:d:Y:d;~ʜ:ʜ:Y;='4=D===9===={X=y=K <ܪ<%<5p=*==I= = 5=7!;d:d:d<<:d:ʜ<є=<=<;~:Zd:d:p9Y;Y8>z>= :dw>">>>%===Y=h =d>>hg>~9>GJ=<2:d<^W=8r==7!=Rn1=a7=P'="4 />n>)==:Y:Zd<%<ܪ=4?=rG=d==AU==,={X=n=){X=$=A^W=rG==LZ>&Z>=>.=t`=A^W:d;Y>8i>&==5p:p:d<% y==d<є:Y:Y;<엑=f= G={X= ="4;1{:ʜ<<1q<%;d:d:Y;Zd|>K=O=޻=@;:ʜ;5p;=Y=8D=7!= a<~ <$TB>b=ܪ=+K=rG=/+K=l=>u>=!='4:d:Zdn>+>pS=i[= =p#=d=ܪ>Y>,>=>GW>C>,>o=Y=h>u)>t>uM>t>~9=e<$T:d<==E>>9>C>0>u=l=0!=ӑb>%>79>U>o&>~9>wx>WX>+>>B>]<>U? ? h>ۇ>bZ=M":Y:d<ܪ=4>Ǡ>0>;/>+0!>|==̾=>:>C>av>{>^>>`]F>1(> f> >k->ܪ?%?%>>=p:d:Y<:2=h =>Ǡ>>=,==є=>>8D>HzG>\>hg>^>=`>= =_>6G<>>>a >1{>U= :Y:d<=V=9=I={X= =f=d==>>">f>>>J=9==d=M"=ǟ>2ݪ>>v^>]<=-<><`y=o===h =QK=a7=p#=)=O>u)>)$> =2=p#;K:d8r>>)$>A >E=Y=k===%=>>U>{>>lN>.=<8r:Y;~ <$T=Jw=~==AU>`>+>6G<>+> =i[==)=/==AU>2ݪ>>>)>R=йh>>">J=A== G=8r=`y==ǟ>* >{>>>w>GW=?>f 9>U>r=3;d:Y;<=+=l= =M"=8r=E=[<2<<<=,==د>=Q0=<$T:d:d<>)>Y=LZ={X=5p>==&v=V<$T >pS>=!=Mn<ʜ=E==,=A>u)> G>J>o=O= G=f=ǟ>$1>R>GJ>={a ;K:d=HM=>>EM>Q>9> |i==y==> >?>`>q>nLZ>T">(>`y> f>fV>̾> >_>>2ݪ=Rn1:Y;=Mn=s>5>d>oo>Xf>#9=׌=2=鿗>ҥ>F~>q>>>E>^>W>,>E>SR? ?,.?.?b> = u;5p;l=;c=>,>ZR>i->Qܙ>n=B=>Ǡ>0>Y!>>>`>;>>aB>5p>Ph>h??8?;/?>f=;:d<7=\>>.P>:Bf>* >`y==,>>&Z>GW>i->>P>>pI>A>i>* >.>?>?"?B>pS=;~ʜ:Y;d="4=a==鿗="== =v=O>8r>>0>=>G>A#>)$>="=i[>!>4>W>Ϻ>A >&^=V:Y:Y;p>$>=H= ;ʜ:Y:Y:Zd:d;~<%<^I<^I<>;<8r=+==B==@="4=Q<><=.=D=@;&<%=3=bZ=|;==H= ={X==ϖ7=Y= =8r=A^W=/+K=.=){X=7!=l=c,=g==q=A^W;K:d< <~ =Jw==@=E=ܙ>Ǡ> >.>%> y==SR=f== ==>6G<>Y!>R%e>ҥ=<:Y:Y; 5>2>U>c>WX>7!>`=AU=E=9={X=>;/>12>0!>>q>Ǡ=C:p:d>A#>i->y >k+>D>J=Q0=2={X=D>>>f>*>G`>̙>>&*=h :d;Y~>4?>WX>f 9>Xf>5l> y=ϖ7=+K==0!=B>`>>Ѹ3>Sv>N> =A^W:Y:Y;d |i>%>0H>%7a> Y8= u===p#==>+>>8>BB>`=ܪ<ä:ʜ<=+=|;=0!=ǟ="= =d=p#=8D= a=>=c,>2ݪ=o=a7;K:Y;:d:Zd==SR=>`> ===Q< :ʜ:d;5p<1q<є= = a= a=u)=~=<% > =鿗={X=8Dr> G>o==Rn1<%=.=u)=c,=Q0> y>>> l=O=d=a=>9>b>M>`y=h ;;Zd=5p=ǟ>">M>Y!>@̾>=I=8r=d=>V>96>^>u>t>Y!>.> f>@>>j??b>>(=:2:Y;=h =o>=c,>m))>{>>av>,==p=>>=c,>m))>>> >f>aB>9>`>?V?1MG?1?>=є;Y;K=Zd=s>6G<>f 9>q>[>* =V=Y=>$1>Mn>~>> >>>nLZ>C>k->uq??=,?>?.>=-;~ :d= f=> >8i>C>3oB> ==c,=t`> G>?>g0j>~>%>NX>>Mn>* >@;&>>?O{?#?$?K>=є;~<~=8D==V>?=y6=h=HM=k==$T>pS>.P>BS>S.>M>5$ >Y=t`=>:Bf>>Ϻ>Դ>A >%7a=[:Zd:Zd;<=L>=z==p#=D=7!=A^W=u=k==ǟ=i[=y=د==:=[=u)=>>+0!>.> l=;K:ʜ:d:d:Y:Y:Y:Y:Zd:d;1{;:d:Y:d<%HM>8i>EY>=c,>n=9=;&===H=|;=k=>=>k->fV>/=,=8D:d:Y;KCw>Ix>t>>x@D>Qܙ>"===d==߂>EM>E>]>h>5>ҥ=[;:d,>b>;>>:>f 9>1y>=D=v=p> 5>y >8>b>>q>EM=;;~<ܪ=bZ=X'=>>S.>{>^>{>Sb>!=LZ==d={X>>vG>U>>>>@=3:d;=B=|;==>$>C>Ph>B>!==D=pS=sj={a =6P>=c,>>/>>:> =q:Y;K<=V==D=>==;&==a7=5p=8r2L>^}>S.>pS= <~:ʜ=8D=@<%;1{:Y:Zd=V=="4<>%>)$>={X<ܪ:Zd;Zd=k}=I>>79>?>+x==%=8D=l=E=g>>79>K >Mn>9>r=Q0>Ǡ>W>̚>><[>pI=˛ <~;d=D=O>([>R>`>F|>=c= ={X=y6>>B>o&>[>o>oW>B8> >@>q>??s>ي!>B=h :Zd;~=8D=>n>ID>Y!>A>'=^W==є>E>+0!>V(>>>s>>Qܙ>.P>K >?K??>N>lN=pS:d:Y<ܪ= G=>"_h>/> ==0!==9=>@>@̾>g0j>~9>|>av>79>pS>,>z>Ҷ??(>I>A^W==H:d;p=$= G=D=I=,=Ə=z==l= ==LZ>,\>&>7>4?>=e=O=>$1>m))>>D>^=엑=:Zd9Y;1{<%=8D=bZ=Sb=/+K=<==em=)=X'====4=l=kt`==9=LZ>> /=AU==H<8r<<<;d;Zd:d;5p<=@=5p=<%:Y:Y;~ %>0>=c,>8D>=$T=h=l=QK===rG=ǟ>">M>Ix>@=̾=7!:ʜ:ʜ%>EM>m))>|>o&>IT>f=-=v=3=[=2>+0!>t> >~>{>>)=B;K:Y<= 5==!=>* >_˭>:>.>:>`y>+x==h=pS=HM=g>Y!>P>ֲ(>ܙ>5>9h=pS;d:d<=Sb=4=I> >Q4>y >>vG>L,> G=ܪ=SR=3=y=m>ZR>J>׌>I><7>5$ =B:d;p<====>$1>A#>K >?>@=V= =B=C=@;&=q>+x>l>T>~>vG>E= f:Y;K<==`y=a=˛ =>|=鿗=====~n>IT>B> f={a ;d:ʜ=[:Bf>=c,>*>Ǡ=>|>?>3>>E>?Z=Ə<:d<ܪ=޻=鿗>k}>">)="=l=7!=rG=E=2>)>5$ >Ix>K u>8D>=> >M>k}>>L>g0j=O<<5p=[=D=o>=-==h =2=bZ=4=йh>>n>5$ >5$ >d=>?=ϖ7=鿗>*U>n>M">|i>==cpS>/>&*== <:Y:d 12>>%=~=;&=.=8D<ܪ<<===ܪ>Y>Y=߂=:>@>K>A>$\==!==0N|="4==H=g>;c>nLZ>k->7!=O=;c:d:d >8>Y!>g0j>YAU>5$ >=є=5===8D={X>J>uhK>>D>hg>u=QK:d<~="4= =̾>>.>J>X%>GJ>%==SR=sj=+=+=Ə>>z=>q>>hg=;=+:d l> >&Z>J==N|=u=*A>vG>nLZ>1(=q> l=D=:d:p< ;~;Y;;;d:d;d=={a =^=v=u)=){X;K:Y;5p<>="4=P'=sj=f= =~ʜ=D=k}=Y=Jw=l=y=;c<5p:Y<%=/+K=HM=;&= u=I=m<;l<(X'= f=em= =0!=̾=Y=l=)=}l==0!=ܪ==;&=\<%9Y;~ =$=)=2=Y=E=q$T y=엑= G< :ʜ:d<^W=a7=== =;c<<<8r<:2;d;~ <:2=[=em=y=y=`y<7:ʜ:Y:d:d:Y9Y:Y:Zd;d8r== u=d=bZ>>B=={a Y>> =y={X=l=8r<1q<%=@=> >/t>,>= Ǡ> >b=ǟ=)=;c<;K;d=q=> >1y>,=B=}l;~ ;d>|==:Zd:Y;d<2=%=E=l=h =:2:d;Zd<~;~:d:Y:d;~;d;~ ;p:ʜ:Zd:Zd:d:d:d:Zd:Y:Y:Y:Y;Y;~:ʜ:Y;Zd<>:p:Y:d:d:p9Y:d<%<<==Y=<;~:Y:Zd:Zd:d<%<2== f<ܪ<:2:p:Zd<<+K==~:ʜ9Y:Zd:Y:Zd;~ ;:Y:Y;~:ʜ:Y:ʜ;;K;5p:Zd:Y:Y:d:ʜ:d:Y:Y:Zd:Y9Y:ʜ;~:ʜ:Y;Y<~<>;~ ;;Y:d:Y:Zd:ʜ:ʜ:Zd;d<:2:d:p;K<%;d:d9Y:d:ʜ:d:Y:Y:Y:Y:Y:d:d:Zd:Y:d<~b==Z=є== G=em<%;Zd:Y;~=u)=^=I=鿗=c,=/=Mn=7!=E={a ={X=y6>Y>HM>==,=={X=:> V=B=s=D=^=/=Mn<:d:Y<~=$=y==޻=|;=8D= a=@=.=h ===;&=E=k}==[=.<^W;:Y<(X'==;c==="4<ܪ=u)<<Y:d:Y:d;Zd;Y:d:Y:ʜ< %>?>f 9>`>1(=-=k=n==]>>>> ==l<;Y;5p= 5===c,=^=8r==)==h=ܪ>u)>.P>,SR> l==em=>=Jw=a=ܙ>> l=O=p#<2;~:Y<~<====P'=7!="4='4=A^W=QK=Zd=y====k}=9h< ;~ʜ:p:Y:Y:Y:Zd:Y:Zd:Zd:ʜ<%<=%=V=p#=T=Q<>:Zd:Y;Zd<~;:ʜ:Y:ʜ;K<;Y:d<~<<%<ܪ=5p= =))> >7>,>=-=;H1{:p;K>/>EM>8i> ==@<Y; l>HM> 12=1{=B<%;;K 12>`>=د=2={X=B=<~:Zd=[=l>+>+>=i==Jw=em==AU>$1>K >Z>M>9h>> |i=LZ=є=<2:Zd:p<8r=>>Sb>V >,SR=LZ==5=M"=> >MO>~9>>nLZ>M >/>> l=i[=)<~ :d:Y<5p=y> >=c,>A> === =޻=>>>]>jQ0>n>Vi[>5$ >J> l=LZ=;&=<:Zd;5p=޻=E=l> Y8=o= ==q$T=p#=M"=>[>#9>&Z>==̾>== ==;~ ;~ = a=y===y=O=){X=Y="4=em=Cw=h=є=v=/=kt`=@;&="4;d:ʜ:Zd:Y:Y;1{r>pS=r=E=f='4=@=A^W==:=`=Jw<:ʜ<=> l>2ݪ>/> f=˛ =?==I=">@>b> >>av>t=,=Ə==ä>>> G=y6=z=$1>Xf>\>8>%==A>>* >k->U>Ηm>D>?>U> /==ۇ>%>@̾>t>}^>GW=m=8D<~:Y:Y<ܪ=>%>@>IT>5$ >pS> > >J>=>d>">@ >H>/>^>==>Cw>Xf> a>HM>pۈ>)=[>Y>Ǡ=鿗==>>n>Jw>X>>/>>0H=ܪ==h>b>5$ >k->{>R>`y=[<ܪ;:d==l===m>J>:Bf>=c,>E= u=}l=;c=h =X'=>>!> l=+K=A^W<;5p:ʜq>:>79>Y==<є===H= G=u)=Jw<8r:Y:Y;1{===v=p==>>9>uhK>*>Zn>Ph> l=="4<=@= =Y=鿗=AU=^=/+K;Y;~=HM=pS=2==?=|>%>K >6>>M">_>Y=0!=V=2=`y=v=>>=̾=`y<~:d">R>mq>`>,=<==C=2=a7==> >K==QK;~ :db=LZ=̾=y=2<=Y=7!=;c=8D=%=u=<є=:d:Y<(X'=em=,> Y8>Ǡ=O= =q<̾>==H1{={X=>>/>2ݪ>&Z> =鿗=Y=d=L>2L>f>b>2ݪ=t`=d=p#=8r=>.>WX>~>>:>kt`>GW>.>=== a;5p:d="4=鿗>X%>.>2g>Z>P=O=9={X=m>8D>3> P>pw>d=>^>c>D6P>,> ===;~ :d== u>?>|;o>}8>K >="=Ə=0!=Z>2ݪ>>}>>_h>v^>n>IT>2ݪ>==v=*;~<(X'=B=A>.P>3>J==!= = =>>:Bf>av>b>GW>* >=A=ܪ=!=p#b>=V=2=d= =|;=8D<;Y:Y<(X'=HM=V=`y=7!<:2;d:d:Y;<<$T<ܪ<:2<% >7>?>* =o==sj=X%=p#=d==D=.=){X< 9Y>S.>`>=c,>==i[=O>>=>>>e>>Y!>޻==,=>>>F|>Qܙ>%==;~:Y='4=˛ >:Bf><>)>d>Mn>0>#9>$1>O>G>>>GW>pS>>4s>tE>/>s>>,=&>o&>Y8>~9>X>A^W>9>=>n>V>s+? ?l>1><>Pp>>>A^W>>>ܙ>H>Y!=Y=7!<:2:Y$\>A>?>/>(>%->* >GJ>>+> 9>5?>6>}8>([==>#d>j>>t>>A==A^W<:d;#d=~==2===y6=鿗=LZ=LZ>K>>Ph>>>a7>=1{=a=4=i[>C>ID>c5?>EM>=="4;d;Y:d:Zd:Y:ʜ;d<;d;Zd:d:Zd;5p;<, >5$ >Tk>R>.P=-=/=+<ܪ=~=l==7=̾>== f:ʜ:ʜ<==ӑb> l> >>> >Xf> a>c>>vG>* =D= =n= =AU>>8i>%7a=-=l<^I:d<є=HM=t`>>> f> />2>nLZ>?>> >:>79=={X==> 12>GJ>fV>ID>)={Xr>?>rQ>3>>R>=ǟ=d==>~>@>^}>EY>=X'<є:Y:d<=l==k=M"===~ >o>pS>>=̾=M"=p#=p#=)=ä>>%->=AU=|;<%:Y;r>u)=ܪ=޻=HMt>.>2ݪ>'Ə>`=t`=̾==:2:>k->fV>4I=))==V={a =q>>Z>4>v^>>m))>J>2L>pS=V=d=;#d;l=Sb>>aB>,\>12>Z>pS= ===I>;/>`>N|>s>5>Y8>i->HzG>,> l==@;&;~ :ʜ=7!=엑>K u>I>>M >M"= u=a=4=߂>9>Y8>^>3>o>y >S.>9>@=A==2;:Y<~=>> >8>9>=엑=v=8r=5=> >GW>pۈ>q>X>5$ >HM>8r=B==sj<2:d:Zd<2====̾=d=h =(X'=.=kt`==엑>%>'>E=O==k}=[=D<;l:Y<(X'=Q=E=Jw=$<1{:=B=p=f=QK=7!=[=d=>* >:>, >b=E= =]=a7=pS==h==:2<^I:Y< =>>Qܙ>k->Tk>&>|=ϖ7=c=_>&Z>~9>U>p>>hg> k=o=йh=>k}>A^W>R>,=D=8D<~:Y2ݪ>B>>)>iv>;c>$>J>:>7=>>>>:>4>\> >'>0>m>>>z>9== ;d<ܪ=>">{>>ذ>NX>vB>R>=>79>Y!>>v?ި?>*_>S>g0j>(>>A^W>3>U>۬>db>k-=~ =V4s>^>`>IT>:Bf>.P>%7a>9h>x>:>6u>h>8>>;/> f>>* >n>>^>>Y!=I=l>> >Ǡ>b==t`> y>H1{>>->sj>5$ ====>$>Y!>we>]<>P===|=V=+K=p#=7!=C=8r=h=>=鿗=0!=Rn1< ;p:d:Y;l<Y<^I<=Jw==i[=V===˛ =A>f>9h>;/>!=t`=^=kt`=5p=B=0!=>.=x==+:ʜ;~<==k=>">>Y>Ǡ>P>>]>nLZ>j>o>d<>(=I= ==?>>R>pۈ>R>`= G<;5p= f=+K> l>'Ə>+>z>)>(>V >^>D>pS>vG>8>K=;&=!=s>96>}>>6>79=̾=Q:Y:d<=pS=~ >w>%>=e>u)>2ݪ>Xf>oW>k->MO>n====s>5l>F>>|>3&v==Q:Y;1{='4=޻=D==&v==Y=>>u)>޻> f=ܪ==%==!>~>?>\>A^W> |i=a<;Y<8r=8r=='4=;c=kt`=[=f=)=a==}l=V=D=;c=h =d=AU=l=m=0!=+:d:d;;~ <%<>Ǡ> 12>8r==2=M"=P'<;5p:d="4=>n>B>:>%==em=u)=8D= =m>0>Y!>av>Tk>?Z>([>u)==E=h <:Y;~ʜ=P'=))>?>j>aB>1(== G=]=B=h>>f>>v^>>`y>>=>&Z> V=O= 1y>Y!>SH>)$=鿗==l=l=>J>c5?>j>3>u>O>1y>=A==8r<%:d:Y G>=l===H=8D=V= G=>.>R>U><>>|=AU=h=޻=5p<5p:Y:Yo> f=== G==QK=.;K;<2<ܪ=[=V=p#=E<= >E=Y=)=V=(X'= a=U= =k}=B=$<(X':Y;=C=>* >F|>9>Y=O===H=/=ӑb>* >f>>n>:>>=Y=E==鿗>>>>Ǡ=E=+;~ <%=l> >\>:>}8>K >ҥ=\5=O=->.>>q>̾>>>8i> l=>`>9>qm >j>k->= <=;p;=>>>WC>E>I>]<>6>>:> Tc>GJ>>I>ӵ>>>A>> l>n>Y!>>U>&Q>A=|=D<:d:ʜ=0N|=>n>IT>Pp>=c,>%7a>w==o>n>u>>>>h3>"_h==>>C>:>E>7=>9=|=V<2;5p<^I=bZ=;&>> >Ǡ===D==I> 12>C>_>GJ>z=i[=-=-=T>.>:Bf>R>=>=9=7!==;c<%;:Zd:Zd;1{<><^W<<> >Y>=,=d=rG=8D=D=Ə=> ==d=:d:ʜ<є== u>`y> l==AU=V> >+x>A^W>GW>6G<>=ܙ=0!=)=E>.>R>vG>U> y= <:2:d<ܪ=pS=m>>>o=>>n>?>W>[>EY>=LZ=c,=I=B>9>>~>.>8i=<7:Zd<>===>K=鿗=AU=>u)>&Z>96>=c,>/+K>Y=ܪ=D=E=>8D>~>>Y8>5=c>=A=O===)=p> >EM>e{>F~> ===="4:d:Zd;~<%:d:Y Y8=l==~ʜ<% y>> l==ܪ=h=y=8D<5:d:d=.=E> |i>!>HM==:=+<ܪ=$=[= u>P>96>9>* >'>=H==SR=|;<=;:d<̾>==>>=د=pS=.>:2>;/>([> =Q0= =d=l>>=йh=E=)=h = a=9== =7!<%> f=׌=4==m={a = G==ǟ==p#<є:d:Zd<7=v>%>79>3oB>)="=d=V=@;&=d>>9>R>EM>=߂=p=0!=c,=>J>* >r==[>;>=c,>">b=є= =u=E>>Qܙ>k->[>.==2==ܪ>>;/>Qܙ>:Bf>=M"=[;~ :Y>n>)=엑=D==Sb=V=>0H>IT>=c,>'=K=-=X'=T> 5>2ݪ>F3>3&v=B=޻=<1q:d:d<===Y==K=p= =Jw= f=[==O>=9=ǟ=%=`y=l==Y>`y>%>E=h=h <$T< :d;H1{;d:d:Y:d;~<~>.>8r=ۇ=?=/=p#=y=O>f>8i> =T=7!:d9Y<~=(X'=޻==^W====y6>o>P>t>r=N===)=?> 12>Mn>t>Vi[> =3<~;~====v= ===ܪ=> > >==!==.=?> 12>KRA>pI>R> = <>:Y<>= f=O=em=rG=f=d=v=D=̾=|=c,={X= =|;=h = =O>>2ݪ>=O=YAU;~:Y;K< <%=~=+=8D===<є=H1{=V=H1{=5p=+="4=[= a=q$T=N|=Y=p=|;;Y:Y<(X'=@;&=d=={X=q$T<$T;~ ;Zd<>=8r=|;=N|=|=ǟ==4=.=\=<%:p:Y;d==y=X'==P'<є;~ ;p<#d;d;<~;~;Y 12==a 5==d<$T:Y;;~ :ʜ:Y:Y:d:d:d:d:Y:ʜ;d<1q<~:d:d;~;d;Y:d:Y:Y:Y:Y:Y9Y:Zd:d:ʜ:d:Y:Y:Zd:Zd:Y:Zd:Y:Zd:Y:d:d:Zd:Zd;Y;~;Y:d:Zd:Zd:d<<1q;1{:Y:Y:d;Zd;~ <>:Y:d;엑;#d:Zd:d:d:Y:d:d:d;5p;d;;d;Y:Y:Y:Zd:d:d:Zd:Zd:d:d:d:Zd:Y:Zd:Y:Y:Zd:Y:Y:Zd:Zd:Zd:d:d:Zd:Zd:Y:p:Zd:Y:d:d:Y:d;~;p;~;Zd;Zd;5p:d:Zd:Y:Y:Y:Zd:d:d:Y:ʜ<;Zd:d:Y:d;K<%<%;K:d:Zd:Zd:Y:d:d;5p;:ʜ9Y:d;1{;K;Y:Y:Y:Zd:d;Y;<;p:d:Y:Y:Zd:Y:Zd:d:d:Y:Y:d;Y;Y;;5p:d:Y:Y:Y:Y:Y:Zd:d:ʜ:ʜ:d:Y:Y:Y:Zd:d:d:d:Y:Y:Y:Y:d:d:Zd:Y:Y:Y:Y:Zd:Zd:Y:Y:Zd:Zd:Y:Y:d:d:Zd:Y:Y:Zd:p:Zd:Y:Y:Y:Zd:Y:d;1{< <1q<~;5p:Zd:Y:Zd:d:d:Y:d;~<;~ :ʜ:d<%<<<=<1{<(X'<~;~ ;1{;Zd:d:Y;5p;엑;;K;<<~;5p;Y;d<^I<є=8r=7!=V=h =`y=Jw=.<ܪ<><1q= f=/+K<ܪ;Zd:p:d;l<~<<="4=7!===5p=[<;~ :Zd:d<%:Y<~<ܪ=+===8D=[<ܪ=~=;:d:Y;K<ܪ=){X=+==8D:d;d=~=rG=.=8r=K ="4=/+K=p#=d==I=鿗=鿗=ܪ==@=V==QK=> y>"==rG;~ʜ:Zd<>=8r=8D=8D=%==q=`y=pS===Y==h=d={a =(X'<1{==pS=ܪ===@;&:ʜ:Y:ʜ<%:Zd:Y;5p<<%<><>;;5p:Zd:d:d:Y:Y:Zd:d:d:d:Y:Y:Y:Zd:Zd:Zd:Y:Y:d:ʜ;~;;~ʜ;Y:d:Y:Y:Y9Y:Y:Zd:Y:Zd:ʜ;d<>:ʜ:Y:Y:d;Zd;~ʜ:d:Y:Y:ʜ;ʜ<(X'<:d<^I=7!=|;==QK< <=<$T<8r<~:ʜ:p;Y:ʜ:d:Zd;:ʜ:Y;5p;~:d:Y<>=2=8r=.=p#=u)E>b=_=?==H1{=[=O>%>M"=O=A^W:d;Y=/+K=SR=<=x=ܪ={X=h =V= =є=G>>Cw>$> > =ܪ== G=O>2>u>~9>=c,=є<;Y=Y=a==t`=йh==p#={a =9=̾>>>'> >,>'Ə>%=V==X'=>F3>>pS>`=-<$T:Y<^I=K =k=I=Ə==QK=h ==c,=鿗>> 12>Y> =o===y=>d=>`>lN>9h=]|> 12=йh=c~ ;Zd:Y:d;K<><(X'<%<^I<$T=3=QK=`y=V=A^W=+<=<:2<:2<1{=Q=7!==X'==йh==X'=rG=$=[=@=7!=`y=X'=V> >=?="4:d;Zd 12>%>J=O=<є;Y:Y;>>%=;&=){X:d:Y;Y<^I=[=P'=[=M"=5=V=;Y:Y;d;l;~ʜ;~ʜ;#d:d:d="4<;Zd:d;;:ʜ:d> ===V=(X'=em=Ə=йh>?>>Cw>> f=Դ={X==O>(>X%>R>)=;~:ZdpS> >u)=O= =sj=:=O> l>n>8i>GJ>F3>0> =ۇ=د>([>:>p>>K>|>z> y=˛ =M"=y==s>%>* >@>SH>OMk>8i>=Q0=))>8D>>͘>Ѹ3>>A =8D;~ʜ= a=k="=))=={X==B==O>>pS>'Ə>5l>2ݪ>Cw==J=|>>i->5>}>y>`y=%:Y<~=Y=sj=/==`y=7!==={a =\=̾=Դ=V===˛ ==.= =h> f>9>?>=><:2:Y;Zd<5p<<ӑb<^W<><%;~ ;~;Y:d:p:ʜ<><%=@=HM;~:Y:Zd;Y<^I />z>r=== =V===Jw=8r=|>J>:>3&v>=/<:d<:2<;=<є==h=> G>*>n>8r===l=Jw=V==~>=c,>i->^_> =4<:ʜ >>%===[=GJ=/+K=7!=y=t`>9>d>WX>%=<(X';Y y>, >=йh=:2;5p:d<>;~:Y:Zd<є=`y==޻=n=<~;K;~ʜ:d:Zd:ʜ<~<(X'< ;K:d:Zd;~< <>;~ :ʜ:Y9Y:ʜ;;~ʜ:d:d;d<%;;Zd:Y:Y;Zd<~;~ :d:p;d l>%=\5=!=[=~=A^W=HM==엑> >Cw>A > /=ۇ=q==o>79>_>Mn> l=l:d:d<==>>,SR>HM=ܪ=)=em= ==l>>8D>ID>ID>8D>r=Q0=>:>>>jl>x=<:Y>%->M"=ۇ=HM==d=O> |i>$>A#>Y!>X>?>>K> l>IT>?>Ҷ>>&Q>%=q<~=A^W=N|=鿗>=-===n=pS==>)>*U>:>:Bf>%7a>=ܪ=>&>ycu>`>^>oo=G=8r:p%>?>A>)=@<^I:d<<<==<ܪ<=Q<(X':Y:Y;Zd;d;~:d:d;;K:d:Y:Y:Y:Y:Y:Y:Y9Y:Y:d:d:p:Y;~<^I<8r<8rǠ>E=ۇ=q==7!=Y=8r="4=8r= u>u>=Y=|; l>)$>8D>/>r==={a =A^W=:2==ϖ7>* >Qܙ>IT>J==:Y:d>:Bf>G>?>n=))=?=[=QK=Mn= > l>V(>>\5>=c,=Y=~:Y;<є=@;&=޻=|> y>,>9>/>Y=O==l=5p=2=M">>T_>>}>9=<:Y;<$T=QK== u=ʜ> >=O==`y=q!>GW>?>o={a ;K:Y;d<="4=n==d=M"=bZ= f<<>;;5p<(X'=D=?=ܪ=˛ =<>:Zd:d<:d:Y:Y:d:Y:Y:Y:ʜ;~ ;Zd:Y:d= a=[=]="4<%;:Zd:Y:d:d9Y:d;d=y6===pS=> y>n> 12={X >P>o==m=Y=Jw===G>pS>+x>-v> G== u=">>[>:>u~>>=f:ʜ:Zd Y8>>=^W=|;=7!=p#={X=Դ>>!>8D>96>%7a>o==엑>+0!>p>ذ>>B=! >ҥ> > /=V==̾>>`>C>pI>i->&Z={XJ>)=i[=p#<>:Zd<<<7<ܪ<;K:Zd;Y<(X'<>b=AU==}l='4Ǡ>&>5$ >-->Y=AU==a7==8r=Mn=>pS><є>9> ={X<;:Y:Zd<,=u)=rG==Z>>9>F~>=c,>=y6==p#=){X=HM=l=>@>pۈ>k->1y=є=8r:Y;Zd<^W=QK=>=O> >,>8i>.>`=T==QK=BA>q>k->.P=b> |i>K=T==Jw<=<^IpS>:>4?=A=em;~:Y<~<<;d:Y:d;K<(X'<8r<+K<є<:2<:2<(X'<~;~ʜ:Zd:Y;~ʜ;<~;d;#d:d:Zd:d;K<~;~ ;5p:Y:Zd;~<%<1q<~;5p:Y:d;<8r~=_=l<(X'<=7!=k=|=׌==y=~=u)=+K=O==G===={X=ϖ7> >> =!= f:d;Y l==q=.;;d<$T===V=8D<=<^I<<<<==7!=7!=<~:Y:Zd:Y:Zd;~<><>;~ʜ:Y:Zd:d:d:Y:Y:Y:Y:Y:d;~;~:ʜ:Zd:Y:Y:ʜ;K<%<==7!=[=em=P'=+o>%> f=V===HM l>=ǟ=HM>">J=x=h=[="4<8r >0H>--=\5= >޻> 12=ܪ=d=]<=<%<~=*=?> >2E>,==sj;d;Y<=A^W=3== u=ܙ==9=Rn1<=<:2:d:d=\5=v<$T:Y;<=8r=:2=h =n=K = f<%;K:d:Y;5p<~;1{:d:Y:Y:d:ʜ;5p:ʜ:Zd:Y;5p:ʜ:Y:ʜ;~ <><(X';~ ;Y:Y:Y;5p:ʜ:Y:d;K==D={a <:Zd<<7=/+K=`y=}l=|;=X%=@<~:d:Y:p:d:ʜ:ʜ:d:Y;Y<5p;Y9Y:Y;d<:2<;Y:Y:d;5p:d:d<~<(X';d:d:Y:ʜ;d;~ ;~ʜ:Y:Zd:d:ʜ:d:Y:Y:Y:Zd:Y9Y:Y:d:d:d:Y:Y:d:d:Zd:Y:Y:Y:p:d:Y:Y:d:Zd:Y:Zd:Y:Y:Y:Zd:ʜ;~ʜ;Y:Zd:Zd:d;~<~<%;d:d:Y:Zd:Zd:Y:Y:ʜ;K<%< <5<:2;~:Zd:Y:d:d:Y:Y:d:Y:Y;~;;;l:Y:Y:d:d:Y:Y:Y:Y:Y:Y:Y:Y:d;Y:ʜ:d9Y9Y9Y:ʜ<~<%;~:d:Y:Y:ʜ<~<(X';d:d9Y:Zd;l;K;5p:Zd:Y:Y:Y:Y:Y:Zd;Y;K;~:d:Zd:Zd:Y:Y:d;~<%<~ <ܪ<ܪ= f<$T<^I;K:d:Y:d;Zd;5p:d:d:d:d:d:Y:d;1{<%<(X';K:Y:Y;Y<5p='4=<є=+<%;~ :Y:Zd;Zd;;~ :ʜ;5p<2=7!=H1{=7!;Zd;~;<>:d:Zd;p<$T=^I==h =){X<<8r<<=~=QK=f=HM===`y=7!=޻<;~:Y;5p<ܪ=`y===QK=8r;~ʜ:Y;Zd<~;Y:d:d<%<$T=/+K=(X'<є;#d:Y:Zd;Zd=sj=a=N|==0!=Y=n=8D<ܪ<:Y:d< =n=+K=={X=B=){X<$T=8r=>=`y==|=i[==є={X=u)=t=/+K<є=5p=em=p#=Rn1=%;K:d:Y;<(X';K:d:Y:Y;<><%;5p:d<><2!>.>=̾>=l===7!=l===|=4=Eb>4s>=c,>>=د=f=D=H1{=f=2=LZ>|=O=f= f<(X':p:Y>z>=H==Jw=8r==n= =ܙ=V=̾== a=8D={a =m="4<%:Zd;d<ܪ=/+K=5p=Q<$T=*===1{=йh== =8D<ܪ<~;Zd;Y:ʜ:d:p;Y<8r<~ <ܪ<%:Y9Y:Y:Y:d;Zd;:ʜ:Y:Y9Y:Y:Y:Y:Y:d:d:p:Y;Y<;;5p:Y:Zd;<1q< =B<^I;Y:Zd:p<=h =d=4=y=8D;Zd:Zd:d;K<%;l:Y:d< <2<$T<єd=>/>i=7=M"=QK=8D=rG={X=ǟ==!={a <ܪ;K:Y:Y<=QK=X'=====rG=Mn=B=`=j>2ݪ>A^W>* ==k}=X%=V=)==A> |i=y6==8D<8r:ʜ<(X'=$=l= =q=d=f=n=H1{=1q=Sb=>>n> ==z==$=5p==H==y6=ʜ==d=@;&<;~:ʜ<="4=bZ={a =m=E=2=Q<2<>= a=sj=k}=X'={X==y=Mn<=K>> l=6P=|;=){X='4=p#=SR=йh=y6= u==/+K<^I:d;5p<ܪ=p#=4=q==B=:2=<8r==7!=2;5p:Y:Y;Zd= a=em=n=H1{=[:Y:Zd<%;K:d:Zd:d:ʜ;Y:d:Zd:d;5p;d;K;~ʜ:d:d<%<ܪ=$=.=Q<ä<2=@;&={a =QK=2=Q:Y;Y;ʜ<;5p:Y:p;d<>;~ :d:Y;Y;;d:d:d<><2:ʜ:Y:d;~ʜ;1{:ʜ9Y:Zd:Y:Zd:Y:Y:Y:Zd:d;Y;;~ʜ:d:Y9Y9Y:Y:Y:Y:Y:Y:Y:d:d:Y:Y:d;5p;Zd;Y:d:Y:Zd:d:d:Y:Zd:d:Y:Y:Y:p;H1{<~<%<ӑb<:Y:Y;#d;d;~ ;K;#d:d:Zd9Y:Y:Y:Zd:Y:Y:d;K;K:d:Y:d;5p:ʜ:Zd:Y:d:d:d:Y:Y:Zd:Y:Y:Y:Y:d:ʜ:d:Y:Y:Y:d;Zd;K;K;~ʜ:d:Y:Y:Y9Y:p;Zd<~< ;;~:d:Y:Y:d;Zd;;;p:d:Y:Y:Y:d:ʜ:d:Y9Y:Y:Y:Zd:d:ʜ:d:Zd:d;K<%<%;Y:Y:Zd:ʜ:d:d<;~:d:d:d:d:Y:d;< <Y;Y:Zd:ʜ<;d:d:Y:Y:Zd:Y:d:d:ʜ;<:ʜ:Y;Y;:d:Y;~<;5p:Y:Zd:Y:Y;:Y;~ʜ={a =,<$T="4=.=̾=|=<;:Y:ʜ<1{=%=2='4<7<>:d:d;< =l=;&=̾>==c,=d={a =\= =O> l> l==5p:d:ʜ<=5p=Zd=K =@<2<8r<ܪ=8D=8r=={X=q==\=[=QK=8D=q$T==y==SR=k}:Zd:ʜ<(X'<<^W<<(X';K<<> |i>==~9Y:Y< =Q=em==p#=2:Y:Y;Y;d<~;~ ;Y:Y:Y:ʜ;p<<~<%<%;d<~<=޻===8D:d:Y:Zd:Y:d;5p;Y:Y:Y:d:d:Zd:Y;Y;d;d;5p:Zd:Y:Zd:d:Y:Y:Y:Y:Y:Zd;~<~<%;;;~;d<$T=,=P'=rG=8r=rG=8D<ܪ<8r<2=%="4<:ʜ;~ʜ<ܪ=a7=%=d= =7!=+={a =\=^W=ܙ=ǟ={X=|;="4<7=/+K=5p:d;~ʜ<=޻="4;Zd:p:Zd;l<:2<<ܪ=!=:2=8D=q:Y:d;1{<<><%;d;Y:Y;Y;d;#d:Y:Y:Y:Y:Y:Y:Y:d:d:d:Y:Y:ʜ;5p:d:Zd:Zd:d:d:p:Y9Y:Y:Y:Zd:Y:Y9Y:Y:d:Zd9Y:Y:d:Zd:Y:d;Y:d:Y:Y:d:d:Y:ʜ< <^I<:2;#d:Y:d:d;5p;;~:d:Y:Y;~<є<є<:2:d:Y;Y;K<5p;~ ;;~ <<%:Zd:ʜ;~ ;~:d:Zd:Y:Y;Y;~ <%;~ :ʜ9Y:ʜ<%<>;K:d:Y:Y:ʜ;<;~ :d:d;K<~;;Zd:Zd:Zd;~ʜ;d;~:p:d;5p:ʜ:Zd:Zd:d:d:Y:Y:Y:Zd:Y:Zd;~;d;~:d:Y:Y:Y;Y<:2<;5p:Y:Y;5p<5p;d:d:d;5p;1{;d;K;H1{:d9Y:d<~:ʜ9Y:d;~ <8r<>;5p:Zd:d;d<(X';~ :Y9Y:Y:d;d;~ ;~;1{<>< ;~ ;~ʜ:d:d;d<>;d:d:d;;Zd:Y:Zd;d<#d;K:p:Zd:Y:Y:Zd;K<5p<;~:Zd:d;~ʜ;~:d:d;Zd;Zd:d:Y:Y:Y:Y:d:d:d:Zd:Y9Y:Y:d;;K;~ʜ:d:Zd9Y:Y:Zd:d:Zd:Y:Y:Y:Zd:p:ʜ;1{<;;d:ʜ:d:Y:Y:d;~;~ʜ:Y:Y:Y:Zd:d:ʜ;~ʜ;;~ʜ:ʜ:d:d:Y:d;K;d:d:Y:Y:Y:Zd:p:Y:Zd:Y:Y:Y:Y:ʜ;5p:Zd:Y:Y:Zd:Y:Y:Zd:Y:Y:d:ʜ;Y:ʜ:p:Y:Y:Y:d:d:d:Zd:Y:d;Y;Zd;Y:d:Y:Y:Zd:d;Y:ʜ:Y:Y:d:d:d:Y:Y:Y:d:Y:Y9Y:Zd:d:d:Y:Y:d;Zd;~ʜ:d:Y:d:Y:d;5p;l:d9Y:Y:Zd:Zd:Y:Y:Zd:p:Zd:Y:Y:Y9Y:Y:Y:Y:d;Y;Zd;Y:d:Zd:Y:Y:Zd:Zd:Y:Y:d;Y;Zd;5p:d:Y:Y:Zd:Zd:Y:Zd:Y:p:Y:Y:Y:Y:Y:Zd:Zd:Y:Y:Y:Zd:Y:d;l;K;Zd:Y:Y;~ʜ<%<5p<~;Y:Y;Zd<~<(X'<~;Y:d;Zd;Y;5p:Zd:Y:Y:d:d:d:ʜ<~<1q<:d:Y;d<><~;;1{:d9Y:Zd:d9Y:Y:d;K<%<~;:ʜ:Y:Zd:d9Y:Y:d;l;;5p:d9Y:Y:Y:d:Zd:Y:d;Y:ʜ:Y:Y:Zd:Zd:Y:Y;5p;~ ;K:d:Y:d:d:Y:Y;5p;~ ;K:d:Zd:Zd:Y:d:ʜ:d:Y:Y:d:Y:d:d:Zd:Y:Y:d:d:d:d:Zd:d:d:Zd:Zd;Y;d<~<%<#d<1q<(X'<~;Zd:Zd:Y:p:Y:Y:Y:Y:Y;l<%<є<є<~:Y:Y;Y;l;Y:Y:Y;Y<;5p:Y:Y:Y:Y;Y;Y:Zd:Y:Y:Y:Y:Y:Zd:Zd:d;Y:d:Y:p;5p;d;d;~ʜ:d:Y:ʜ;d<><~:ʜ:Zd;5p;~ <><%;K:d:Zd;5p<<;Y;Zd;~ <%;p:Y:d;K;~ ;:d:Zd:Zd:d;Y;d:ʜ:p:d:d:p:Zd:ʜ;~ʜ;5p:d:Zd:d;~ :ʜ:Y;5p<%<(X';Y:Y:Y:ʜ<%:ʜ:d;~ <~:d:Zd:ʜ;~ʜ;~;Zd:ʜ:d:Zd:Zd:d:d:Y:Y:Zd:Y9Y:Y:Y:d;5p:d:Zd:Y:Y:Zd;l;~ ;K:d9Y:d;~;d;~:d:Y:Y:ʜ;d;K:d:Y:d;d< ;~ ;5p:d:Zd:Zd:p:Y:Zd:ʜ:ʜ:d:Y:Zd:ʜ;;~ʜ:ʜ:Y:Y:ʜ;;~ʜ:Zd:Y:Y:Y:Y:Zd:Y:Y:ʜ;~ ;d:d:p;5p;5p:Zd:Y9Y:Y:Zd:d;5p;l;~:ʜ:Zd:Y:Y:d;d<;~ :d:Y:d;Zd:ʜ:Y:d:ʜ:d:Y:d;K<~;K:d:ʜ< >$>&i>m9==D=,<`v<|q;l;$; `v; `v;;,;;s{v;D<$(>k>9>>J~> ==]<_z>h>?>>>!"===&6<<*Ԏ;;;s;;< `vT>?s?4~?>YX>.c=3L= O=FQ<&J >>D?>>>.$=Z=|=Lj>k#>i>W>:k>n2>!aq=v==J?SĚ>,.%>Z >n>^y>1> !=:==1<,<]<1;H;;<,;<=@m=|q==H==w==Y=*Ԏ<ػ > >(@>P> A =J==]= i<[<2@;;;M;;';> />5==?=Y=$<3<6;{v;;s;l;l;s;=q===F=Y=<<#X !>> e =====@m>1u>Ve>[m>AiL>D>=:k==L<ػ>җ>`>>s\ >-H>=Fq=or=Rx >r>?:>w9>#3=r"==6>jX>_z?X??gl?(@>To>J^> ns==P#X5B>y?1Y?o?U?Q]>mx>k>b===Z =>j'>U?2?\ ?Dc)>>]>w=0=L$>U>"?Y?!#>>+z==w=)[Y>'L>h->>~(>1>PC==R >6}> A =s=1=`=<`v<&6;D;;<; `v:;:8V'8V'9V'::<::b; `v; `v; `v:b:;:<9V'8V':{V'; `v;D[N;;';m;; ;;s;T;$; `v; `v;,;;s{v;Dh>Jp>5Q>Xk>>O > w>č>W? 5?>?j?>/?7?}?TR>?|?2y?>O>e>(>Tڛ> iA=Ͼ=;;Z.<;\::\:\:Z.<:#9.<9.<9.<9Z.<9Z.<9Z.<9Z.<9.<:Z.<:\:;#;)>n>$> ?'A?K6p??Kp?d?5z?I? >t?A>P>>_>˱*>>|>n>Wi&>2VK>'>>t=P==%=xܽ<<Ń=&18=g ==N?=T)king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rota/asp.ndft0000644000000000000000000002426211531212716024550 0ustar rootrootTop500 Asp B<40CC4H$*9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A9A:&:A:qf:W;E;YB;e;e;YB;5p;E::qf99A9A9A9A9A9A9:A:qf:qf:&99A9A9A9A9A9A9A9A9A9;~;E;&;W;p;Ǖg;Ƌ;Ƌ;͡;p;W;E;qf;A:f:W:qf:qf:W:ٺB;&;YB;e;YB;5p;&;&;&;5p;M;A;)W;5p;YB;e;qf<>=V=`=[=HV=9=6=0V=9D!>؀>*n=b/=!+=p===HV= Y< <3<\g>>>>>>phT>Zܐ>I>(===I%==q=<>>>">(5>1H>B>[>>">?o ?ٺ>>ɩ>>>[=U>+0=%=V=9D<v>o>7>K>VSY>er>~>y>%> >隂?v?-,?? q6>c>r>>^s>=)d=Gg=q=_=ӭ= >W>#O>:L>O$>Zܐ>phT>|>+>$>?ݲ> >Z'>zl>)"=,=hp=ɪ>3 >#K>.>@3>hp>C>z>ڬ.>(?>Y>r>>}>X>==To=<>8FO>l >>j>R7>">">?i>Z=J=x8=2<>>1T>$ ;=b '=R*=Gg=6=<<<9D;;W;dD;Ǖg;ٺB;;Ƌ;ٺB;ٺB;<E< <9DB>+0>>W=b/=(=== ===5=Ǖ====Ƞ=`=9D<|<Wl>׾>>>}>2>3>> R>o >>yۆ>er>Jk*>'>W>>Z>>׾=Ց=w=eK=K]=P=V=_=j\ =nB=t=x8=x8=x8==[==)><>#@>#K>(>7>P>l >.>)W>>i=< ;Ǖg;W;;;;p;<9D_=R*=X=[=`=dO<9D<<~<2jh<9D<E;ٺB;p;K;~;e;E:W:&:qf:W:W:f;&;5p;YB;YB;e;e;qf;qf;~;E;W;Ǖg<E<2jh==+==V=Wo >")>&!t>ޤ>?>c>&9===To= |<'>z>G>n>'>?>T>t0> u=.~=='>ޤ>9>`'P>?>A>C>0%=G=E=-1<|<\g<<z=}=HV=!=r=젦>>Lc>p>{R>7>[I> ?7?1r?JQ?[U?`^?Y)?FZ?)p,>F>=>=z=k=S>U>>E>Ki??'?&?3P;?B&^?U=$?mV??z?jC?L[?H>>=`=i^=*n=6%/>`W>s>[I?H??,?6 ?>:g?GX?Rs{?`^?pP#?x8?n;?V?6JG>Ca>>==t=+<̰<$J>9>>>㾛?8?$&?3D"?:?=?AX?Hc ?M?Oyo?L?@B?)p,>->Z=K=L=<9D_=n#=ޤ=\ >(f>hG>/(>>>??!?'>5L>M=HV=Q>>1T> >>)>>^>Ҽ>?>r|>Cͺ>;==׾>eN>S>5>2->c==#=}=k=+<ִ<;W;E;qf;YB;A;)W;E:ٺB:ٺB;5p;~;<E<2jh=L==C;i9g9g9g:g:g:D<;D=(=?/=)d!<;g9g9g<=: =?=J==I@+>>k=O6i;>==;:g9g9g:g;?<=3m=`~=3m<:D9g9g;{=== ::D9g9g:g:g:g:C9g9g9g9g:gV=07=#=,;=:g;g<(=w=a>M>/B3>!{=a=:D9g:g:g;g<=%O6==2=?=YY<}9g:D{=:=D<_:D:g:t<=i;> >@>b>Uǟ>`={>?C>b>W)>=ni;>->%=m==N,>:*=G=51=t:D9g:g;g;;g:D:g9g9g9g9g;3m=*==g:g9g:g:D;dt;T?:D:g9g9g9g9g:D<= :=M+=L=<ѳ;t!:g:D==s/>d>+=Y=N;g:g:t.~G>T?>KR>B=v>>> =ȃ=*:D9g:DB>^t>>aS>I@=*=;g:g:g;= =y =Z>R=yn= =N:g9g9g:g{=?=<_(:g9g:g<=>-'>^t>H> >L=Z=XT>w>{==R:C9g9g9g;g= ===:K=C<#D9g9g;n='Y=܊>+>WOw>S{>!7=:=h_<_({=07=Mv>>{y=yN=#=a=c<<<}<=1=D=U=o=4;?9g9g:C:D:t:D:g9g9g9g===_yN<}9g9g:t<=3m=u[=Z_(>>T=2<_:g9g:g<'Y=Z_(=O>>DU>Dn>&= ?e>>=n=c:g9g:C<=R>v>>KR> >>KR==K;m:g9g:t= :=>T><>,=OW=!:K:g9g9g:g<*=?=?>f=O=d!<_(9g9gf>KS>66>\>P*>q=T<ѳ;:t;?=*i\=U> >x> I==:g9g9g9g;J=,s=?=dB=y =T?<'Y9g9g;dt=c=>q$>L>P*>&==T< TP= =<_:g9g9g:g<==0= :<ѳ:D9g9g<=T?=ʎ>*z> =嘮=o=h_=(<V=G==T?s>>Q=s<:g9g9g9gT= =Y>>>Dn>!{==: ;9g9g:g<5Q==~== ==g:g9g:D<=:*=Ϩ>=嘮==T-'>@>IG>%==`~=_H=<m:g9g:g<=*=ѳ==d=%`;n9g:g<t==07>`>!:K> =U=Z_(V= =t<;3m9g9g9g;!=;D=/===T?<:g9g:t<=22=ѳ==m<:g:g޵=L=/=R;n:g9g9g;!=9=:K=J=Y=Q0*z>2b>{=<t:g9g9g:C:D;<ѳ==K=-y <;9g9g;dt= ѳ=g=/==1<}:D:g:g;?=g==2>i;>V=5> )>f=d=| <:g9g9g9g9g9g9g9g9g9g:g; O>>"=:=d<t:g9g9g9g9g9g9g9g9g9g:g޵>w>v>=T=zG<'Y9g9g9g9g9g9g9g9g9g9g:g<'Y==6=?/=<t;n:g:g;!=%O6= %=Σ==ӽ)=5=:D9g9g9g9g9g9g9g9g;dt<<ܫ=g<<:D9g9g:g{>=~=^<ѳ;3m;<<'Y<< =>>:*=̘=`~i;>F7>c >Q>-'=v<;g;<<\i<=C==~==t!>-'> =Ϩ>=VJ<<;n<=(^=>,o>u >t>/>C(.=@<:t:;?{=T==%O6;J:D;<=2>'I>u(o>>R>D=d=;?;g;nT>@>eW`>V>t==0<ѳ;J;!>R====/<*<}=d=L==;9g9g;#D<===V=[=51='Y;9g9g:g<<= 5=cV=5==;D;?9g9g9g:g9g9g9g9g9g:g<~'>8>İ=m= > v_>*>#r> =>`>$J>>*z=d!<:g9g:g;g;3m::g:g9g9g9g;m<m=h_=s=a=x = :g><>+=%=T?;t!9g9g9g:g:D:g:g:C9g9g9g:Di;>>O= =m >7>U>E2>d=x <;D;?>%>0>']> =n=<}<=w=ܫ>G~h>)3>> >u[> =)d!</<R< ==m=n=C;n9g9g:g<=a>4>(>6>+4>w=~G<ܫ<'Yc>s>9>H>Y>%`>::k=<;JB>!7>B=07=x ;!9g9g9g:g;i=R5Q=>GM>%>>T=ѳ<ѳ;t!<=T?> >qp>>?>U>">>@Y=/=R v_>-y > v_=={;J:g9g:g9g:g<t=Y=>޵=G=J=3m;?:g:t<=U>@Y>t>,>#>66>= E=3mu>"?>=a=?/;t!:C:g9g9g9g:D22>\>T?>!7=魚=:K=Q0=c<< = 5=?=>R=ܫ=<:g9g9g9g9g9g:g;t<<<};t;dt:g9g9g;=K=y-==t4==2=,=;D=N<_ d>=*=p5<ѳ:g:g</=R=L=p5=Q0= >!:K> %>{=/>'I> >4=^<:C9g;n====D=XT<;D9g9g9g9g9g9g:g= :=ʎ><>&>2b== *z=[==,s;9g:g:D;g:D:g9g9g9g9g:<===;D=0>`>!>&>=/d>&Tq>.~G>']>w=:k<_;g;3m;J<;D= :==m==<~<;? I> v_>)d!> >:*=o<t:g:D;?<<;?;3m:g:g9g9g<;D=+n=====?/ )>> =J<=_yN;g9g:g:;;n;dt:D:g9g9g9g;t!<*=R5Q=R==c9= V=?=<:D:D;g;n;;<=0=u[=c9=c;J9g9g<}=t>V>/>'I>==ѳ<<;D>S:>z3>u[>::k= f~'>7>C>951>==c+>]u>>>u>V>: => 5>=07=T;!9g9g9g:gGM>>>L>@>L=*=<<=>M>U>OW>ߙ>X>>x=07= 5i;>4 >C(.>3>d=<=9g9g:g:g >+>;>.>i;=B>>9%>Bu>Bu>M>~>{=f<ٛ>C>Sx>C(.>=X<t:g:g:g:g;t!=c=> >B>d= =t!<:g:D==07>\>ݏ>>>>NR=O==c<=(^=>-'>;?>I>;?>=>Xc>E>>S:>===3m= :==x =07>M>(> %=?=R5Q;9g:g9g9g9g:D<}=g=<;?:D9g9g9g<}==d>>-'>=E=Tq=t!=4=c<_==,=Ѳ=d==d<:g9g9g9g9g:g:g:D:g:g9g9g:g<*==*=_===\i=-y =< f^>k>GM==>%>7X>/B3>s=U=:t9g:D<t=]n==+=U=?e<_(:t9g9g:g:D:t:D:g9g;i=x>4>+-H>>>4\Y>GM=ʎ=:D:g%`>+4>%> )=<*:C9g;dt=1= =T=:=s< :g9g9g9g:C:g9g9g9g<*==> >=͝=VJ<< =9g9g<=t!==O6=h_<(:g9g9g9g9g9g:D=g=R=n= %=J {<:g9g:g<= :=!:Kd>~'><=t=qp<;D:;<'Y>V>!:K>GM==x<ѳ;dt;?V>~'>>-'=?= T>= == 5:D9g:D;;J;!;m:t:g9g9g9g;t!<*=Q0= ==\i=ٛ>#D>B=07=rܫ>@Y>o>o>;?= =;:;3m;n~'>6%>AV>3>-'=51< f;?<;D=I@=>Dn>!k>> >>@j=*<;n;n>#D>GM==T;?9g:D<_=y->`>?C>KR>@~>M=ʎ<;t!<'Y=h_> >v>f>ٻ>ۥ>D>~>V=?/<;D;iu>=̹>Jg>;>2b=<9g9g:g:D<=:K><>->=̹>.>O= >x>qD>Y>N1>j>\>Y=,!{>L>[>L> v_=nw>&>i;==t!;t9g9g<=0>F|>>D>>q$>V>== :<*==OW>&>C(.>Sx>C(.>&=m<=:g:g9g9g:g<'Y=L=2= f=dB=< f:g9g9g;=t!>+>IG> >>V>İ=5Q===0=R==T=>"#>0 >%>={;9g9g9g9g9g9g;i;>-'>%?=J<=Y=rܫ=(^=<<==>g==O6=5===Cd>8>==<*:D9g:<t=3m=:*=?=t=a< {>%>7l >.~G>-'== ѳ:D9g:t<=qp=:k=Ow=̘=t=g;3m9g9g9g9g:;n;;:D:D<;D=>:*>*>=̹>3>B== :D9g:g<==T=Σ=d=07= =:g9g:D;=;;3m:g:g;?=s=d>>*>#r> =n<:g9g9g;?=XT=n=07===c:g9g:g:D:D:g9g9g:g >g=ʎ=T?<9g9g9g9g<=:*===<:g9g9g9g9g9g9g;3m===Tq=t=K<t:9g:g>/=d=='Y;J;3m;i= =n=c;:D;<;D<}v>>w==o<_:t:g:g;= :=*><>/>6l>~'==:D9g9g:g<'Y=_yN= E=ʎ=={<t9g9g:g>!:K>*>=ܫ=t!;?:g:D<t=TP><>`~>">XD>u[>*=D<ѳ:D:g;3m=: =͝> >>=ʎ=<~:t9g:D<=> >*>3ټ>'I>R=<9g:g<*=*>-y >>,>%>}>P*= = 5;m:D<;D= :>/>'I>2ԁ>&">g=;J9g9g9g:D<ѳ==m>/>)d!>k== ;t9g9g<= E>.<>">w>;>V>V=[=a<;m'>6l>D>5 E>d=/<;D9g9g9g:g;i=(^=>{>(>޵=n=*i\:D9g< ==:*>d>k5r> >>|>/B3=~=x <5Q ?e>->?C>.<> =TP<g9g9g9g9g:DGM>C(.>M\z>, >f=/=dt<<<='Y=̘>i;>q$>==3m:D9g9g9g9g9g:g;!< f= <_<#D:g9g9g;!=T?==T=== E= =*i\w>{y=E=qps>!{>ٛ>=<:g9g:D<=;D===~G=h_<:g9g9g:C;;?;J;:t:D>%>/>޵=5 >~'>d==,==:*)d!>6>=yN=_yN<#D:g9g:g<===܊==*z<:g9g:g<}=a=5Q> ?e>d>V=2<5Q9g9g:t= :=dB> v_>`=:>n>IG>^=> =m==:9g:g =[=n<_(9g:==>%O6>eW`>t>N>==;n:g;3m=,s=ʎ><>İ><==(^;g9g9g:C;?=g==ȃ=O=n={<=9g:g<_=D> I>51>Dn>(= ==(;!;g;3m=g=>g>O>=T= :g9g9g9g:D<;D=c=qp=R=n<m;3m9g9g<'Y=R5Q=n>Q> ==d=X=rܫ<< =;:<=Q0=n== f=T=T==-y ;D9g9g:g;J<=0=`~=?/{=!=?=3m;?9g9g:g;nQ=*=n=,s+>{===<5Q:D9g9g9g9g9g9g9g:C;?<==t=,<};t!:C:g;!= :=/== =p==rܫ<:C9g9g9g9g9g9g9g9g:g;n>.<> %=<m;;dt;i<(< I>C(.>`>N>d=f;?:g:D;t!;J<==(^===D==C<:D9g9g9g9g*z>A>a>Pl*>i;=| x>-> 5=yN=K<};3m:g:g;3m<;D==]n=| =T?<5Q;:g9g9g9g9g;?<== 5<g==%=,<:D9g9g9g9g9g9g9g9g:g;?<= =(<</:D:g;i=N=D=d>s>>> ==-y ;9g9g9g9g9g9g9g9g9g;gk>q$>+4>'I>nv=J<=N f;i:g9g:C:g:g:g9g9g9g9g;< =e=d=x=x =<};t!;=(==>>%> >w==%O6;3m9g9g:g:g:g:g9g9g9g9g;t!<5Q=VJ<=:*=ѳ=t!=t<};3m:<ѳ=h_=~h>V>(> =t=<:g9g9g9g9g:g:C9g9g9g9g:g<>:> =i==c >9>S)>@j> TP=s<<<*<_<5Q<_(=-y ===s=f<5Q;g9g9g9g<==>>s>*> >k=s=-y < fKR>j>P|>C>m…>%?= 5<}<,>!{>.<>%> ==<t<*=g>d>u[>g>>`N>W>-= <}<'Y<t=R=m=E> )>s> =%=]n<;D:g9g:g:g;i=S:=>-'>>GM== >u >zS>>`>>>0 =>>=Ow=VJ<<:D:g:g:C:g<=x=>Q=!==T?C(.>>>>w>=v>>>/=OW=;m:D:g:C9g9g:t<*=i==M=h_<ܫ<(;g:t;t!='Y=>6%>\(O>Pl*>=*={=c<<t޵=[= E=;9g9g;g<t=(=(^=Nw>>-'=嘮=p5;i9g9g;dt<=-y =f=Q0-'> 5>GM=!=m;?9g9g:g<ѳ=<~=T=u[=c;9g9g9g9g:g='Y=ʎ> >>Y=Ow=M+;3m9g;i==g$=^t=;n:g9g9g>>i;=i=<_(:9g:g:g:g9g9g9g9g9g;#D>)>6l>0>=t=]n<:D:D;T?;3m:D:g9g9g9g:gٛ>8/>Es>@>'Y>T=~'>0>@Y>::k> =5=a;J:D;g;;m;g::g:g9g:C>$>> =<:D9g:g:D;g::D:g9g9g9g;==u[=%`=5==3m,> I=2=n=^td> v_>~'=E=,s >(>22>)d!>w=_=N f=(=t==5>;>|>&>>g$>/=;D< fq$>C(.>R=>F>&"=?=T=!:K=C=>%>>>O>֬3>L>d=%= :{>>']>ٛ=G=i;<:C9g:g;==:>!{>IG>YY>P*>-y ==| =R=22=U>D>>H>v>RF>c>>=Z_(ٛ>@Y>M+>>>~'=~< ;:g;3m;<5Q= Z>-'>8qD>I@>@> v_=yN=H<@j>̙>??Q>܊>>-'=<==qp=9>%>NR>\>L> = {=;m;dt;g;3m;!=J {=܊>>"#>f>f=<;?;J=YY>>)3>~>޵b>܊E>'>u >k=R=c= =Q0=ʎ> %>C>T?>C(.>= E4 >4>>*>|Z>!7==/=-y =t=(^=^=m>"#>/>"==rܫ~'>/>+4>=$=o=qp=-y =c<==a=>V=07=5<_;g:g:g9g9g:g;g;!< =;J;:9g9g;=0=== =ȃ=%`=_yN=(^= <=G=̹=C<'Y9g9g;!<_(=0=R5Q=K='Y>*>!7>R=<:C:gi;>4\Y>Es>>>as=+=g:g:g<==XT=2=*=ȃ=x=g;3m9g9g9g:g:g:C9g9g<=~>İ>>OW>L>C(.>!:K=Ow=:g9g<3m=h_=s=魚=9== ::D9g9g9g:g:g:g9g9g<'Y=>>-y >>OW>1F>=OW<9g9g;3m=3m==yN=T=d!=:9g9g9g9g9g9g:D=3m=E>c>&>= =x <(9g9g<={==={<:D9g9g9g9g;?=K==̘==T<:D9g:g>>-'=!=t<::D;g;;dt:D:g9g9g9g;?=g=]n= =T=C<;?;~'>.<>;>22>M=a=R5Q!:K>?/>KR>C(.>(>T=T<};J<;D<<}<'Y;:D:C9g:D %>8/>C>>>"=Z=`~<;<v>>q$>)d!>!7> =?<:D:g;t!;i;J;;3m:D:g9g9g<3m=-y ===/=5=^t{=Z=J=3m;9g9g:g:D:D:D:D:g9g9g9g:D>> =5Q=rܫ<_!:K>@Y>7>^=d<=< =>::k>Dn>::k>`=d=]n=c= 5=ѳ>{>P*>XD>><>w>.<=t>d>k=ʎ=T?;?9g9g;=Q0=~>/>W>fL>Z>8/>=='Y=Q0=U>1F>>Ӝ>->NQ>:>>d=a<ܫ==^t=d>GM>951>Dn>4\Y>i;= E<:g9g:t<g=Z_(=2>6%>_7>nE">d>@j>^=t=(=C=E>Y>>8 ?W? :>>ԁ>;?=^== =c>>::k>ba>oJ]>_>1 Z=07=,s;g:D;m<(= 5=T>&">P*>_7>V>2>{={<t<=>Xc>qD>3?!?e>1>*>C(.==0= :=>w>IG>t>rJ>qp>C(.>g=P*;J;m;?;?<=I>>(>9v>/B3>N==;n;i=R>,2>>z>>6>>;>'I=dB=Q0=(^=>k>@>lJ>y>k5r>=̹=~=0;!;?;t!:;3m<=t=07>R>V==h_U>>'>>>Q0>4= =h_=<~=]n=̘> 5>KR>Z>K>q$=dB<*;;t!:g:g9g:g<;D=0=T=T=0<ѳ;n:g9g:t=_yN=G>.<>Td>S)>-> I=0==]n=-y = :=f=T>x>!7>İ==a<:D:g9g9g9g:C;g;?;?;:D:g9g9g{>f=:=n=d=[db=*i\=g> I>>d=嘮=*z<:g9g:D<}=*=v===w==̹=R<;n9g9g9g:g:g:g9g:g^>0>AV>9> :=ʎ=:D9g;t!<=t!= E=%=@==C<;J:g9g:g;3m;dt:D:g:D=g=Ow>%>N f>^t>V>0Gn==C;g9g;t!==s=L>k>=%=m…*>T?>d>Z>7l >{=L;g9g:D<= Z>Q>'>^=07=<(9g9g:D;dt;:t:g:gk>B>S)>IG>']== 5:D9g9g<ѳ=/=[>w> ==< =9g9g:g:D:D:g9g9g;?==m>q$>+>">v>=D*z> >g==]n>Y>!:K>*>!7> )==c<g;Ja>.<>;?>0>GM=E=: -'>*( >2ԁ>+>-'=ʎ= :;i;is> %>=t4={y>^>V=J=4<ѳ~'>3W>22>d=<}:t;t!;n;n;i<={===)d!<(9g:g=R=>B>5a>@j>22>s=n=(^<<5Q=]n=~>::k> >>4>(>22=< {<;Dv>>O>=ȃ=<~;3m9g;n=P*=>/>W)>c >WOw>2>{=| <=c=>><>W?>>>ђ >S >~'=t!<<=0=5Q>Q>>>IG>::k>-'=m<t9g9g:D<=_yN>{>8qD>_>m…>a&>?/> =<==*>@~>s>4+??>>>C(.== <=>4>@Y>i>u >f\>7X=O=%O6:t:D;<=1=>)d!>R5Q>_>V>0>Q=i<#D<ѳ=n>@Y>Q>??R>>qD>M\z=+=4=,=t>i;>Q0>z>I>w>K> ?e=T?;?;g;m;? I>+4>;>0>=y-=:D:t=qp>>>U>*>c=>z>>.~G==_yN==> )>H>u(o>>t#4>C>޵=B;i;;3m:t;==n=> I>g==_yN< =9g9gB>> > >}>W)> =?=p5=(^=M+=E>'I>Td>c9>U>'I=0(^>M>Q0>/B3> =E==R5Q==R=h_=L>>*>s= =| <'Y:g:g9g9g9g:g;;n;#D:g9g9g9gT>V=嘮=Y=^=T?=<_<= >GM>i;=07=:*<:C9g:t<=)d!=m==x=T=Q0=<;?9g9g:g:t;:D:C:D< f=>d>1L>C(.>:{>=̘=:D9g;=g=,==܊=ӽ)==YY%>N>_7>V>1 Z==K;3m:g;?= :=~G=> TP>=yN=,*>T?>d>Z>7l >{=VJ<;dt9g;3m= :=>{y>>x==<;D9g9g:g;t!;J<g;;#D;<ܫ=̘>L>AV>R=>H>&"==)d!;9g:g<5Q=>޵>7>=yn=s*>*i\>!:K>=< f:D9g9g;=s=d>=2==[db;9g9g9g:g:g9g9g9g:g>>g=ʎ=\i>>O=07=^>7><=a={ TP>^=嘮=T<'Y:g9g9g9g:g<==1=i=K<*:t:g<=5>%?>s>']>L=J]=| <ѳ;!;?/>Q0>4>)3>g >=*zk>@>K>=̹> :=ȃ= <(<=(^=>N f>eh>ȤJ>w><>s>T=C<;<=̙> >'>1 Z>#r>T=;?9g9g:g;i=0=>&Tq>KR>W)>I>%==*i\;;J=Q0>>>>,>>=>>"#=t)d!>S:>_7>N>!{=<:g:g:t;J= :=ʎ>M>@~>KS>@Y>=5Q=c:D:D=?/> >q>G>O>#4>F>|>+==(;?>fL>s>b>2ԁ=L=:D:D;g;<=x=>k>)p> 5>=/<9g9g=g=>Xc>>FH>[3>f>,>= E=,s<=7X=$>0>^>m…>]'>.<=&=g:D:D:g:D;?=g==a==*==:9g<=5>>d>E>>~>0=Z=:K=,s<5Q<=̙>-'>?C>N f>@Y>=y >%>)p>~'=O=X=t!=c<<= x=51> >GM>^=0=)d!;g9g9g9g9g:g:;;3m:g9g9g;n=(^=D=+=*= ==[db=c >{==f@> 5>->%> I=<5Q:g9g;n<*=^t=O6==/==<ѳ;?:g9g:g;t!;J<(;?;dt;=R=j>>8qD>HBT>@Y>8=E=:D:C;D=g==T==p=Y=B;?:g9g9g:g;<'Y<;D< =;;J=(=ȃ>>>>M+>C(.>!:K=t= 5:t:g;3m<m==[> > =i=i;9g9g:g;<(<;i;;< {=y >>+4>;?>/>-'=n=R;g9g:g<=t=> Q>/=J<=a;g9g9g:D;;n;3m:g:g<=T?=:><>B>d=嘮=>*>-'=y-=)d!;?9g9g9g;t=3m= %===0;!9g9g:t<=^=t4>B>k>d=5Q=,s;dt:g9g;n=?/=a>@> >D>k5r>as= <:t:g:t='Y=>Q> ====R:D9g;g/>!{>*>f=t4=x ;i9g9g< == >>|M >>R>S >J {=07=P*;!:g<'Y=>> >+>=O=h_;n9g9g:g;< f=x= >`>#r>=:=t!;?9g9g<R=>7>>u>>>P*==x <;3m<=:K>w>0>@Y>.<> =;9g9g:g;g{> >=_=)d!:D;n=p5= >NR>D>>w>+n=yN=u[*z>*i\>951>)p>= ;?9g9g9g:g;n<=j= Z===h_d>4 >@j>%>Q= Z=C<ѳ;t;=g=n>w>M>d=5Q=t:g9g9g9g9g:g;n=J=\i;!9g9g9g:g:D::t:g9g9g:g<;D= :=k=| =Z_(= :<{>w>/=:=h_<9g9g:7> 5>GM==<:C9g;>"?>= = % I>>==g<t:D9g:g;=&Tq=?=ȃ==<9g9g:g;g;3m:D:g:g;?==d=Ϩ>=07=T=i\=8 == E=C<;D:g9g9g;J=(^=x==/=t;9g9g:D<==1====n=YY;?9g9g>-y >&=嘮=<:t9g:g=yN=dB=g$ >0Gn>%`=?=^ >>=ȃ=u[<;g9g:g I> I=T==&Tq;i:g9g9g9g9g9g9g9g:g>{=a=M=g;dt9g9g9g9g9g9g9g9g:g<Q==,{=…= E=P*<< =<'Y<_=>>2Q>N><~>=VJ<< =;?<'Y=[==L<ѳ;;i<=>>ba>|>u[>/B3=m :>c >>x>2ԁ=?<ѳ:g:g:D;<=f=~G==^=VJ<<;g9g9g9g9g9g;n===n=:K=p50>U>DU>d=?e===!:K{y>==:K=;9g9g9g9g9g9g9g9g:g<'Y< =(^=*i\=<;dt:g;J=c=?=t4>B>%>"#>==zG>!7>1>/>f=t4=x<:D:g:g:g:g:g9g9g9g9g;!= :==D====C<;;?==Tq>Q>>+>*( >İ=嘮=zGq>-'>= =m=;9g9g9g9g:C:C9g9g9g9g:t<t=/=u[=~2=YY=c=ʎ=O6=?/4>,s>=s=K>[>>F>U>[>Z_(=U< f v_>==ٛ>D>>c>ԡ>=>_7=%<_<#D<==c=>V> v_>+n>f=Z=T<;;3m;3m:D;dt=g=̙=Z> >*z=d=| dt>>>>>0=*~'> >-'=Ow=K>[>">y>@Y== =g<ѳ<<==#=:>޵=*=t<;;g:D:g9g9g9g;g<== 5=<<'Y;n:g:Ci;><= ==22,>Y>{=T= :;g9g9g;#D>!7>=O=p5;t!9g;L>)d!>q$>T=,;g9g:g<=Q0===R=+n<:g9g9g9g9g;dt=a=>-'>>-'==]n;g9g9g<=-y =,=T=#D<:g9g9g@==i\<m:g9g:gd>>İ>+=OW=0;!:g:g:C:C9g9g9g9g9g;<5Q=L=m=| =C<5Q;J;t!<}=c9=:>>-y >>>::k>#r>T=x<;n:t;g;g:D:g9g9g9g9g:g<}=K=/=:k=:k=/=VJ<%`>>OW>M+>IG>0>=y <;i;;;n;dt:D:g9g9g9g:DGM>5a>F7>C(.>+>v>= %<;g;#D;t!;;t!::g:g9g:gg>f>*>'I>-'==N f;i:g:g:D::D:D:g:g9g9g<=%`===2==YY\==*=T<:D9g9g9g:g:g:g:C9g9g9g:D{> >V=ʎ=T='Y=c==Q0==2>%>@Y>3> =xw>+-H>7X>-[>-'=Эy= =Q0=_yN=>{y>T?>է>s>f>?e>&=s=c=='Y=,s=t!=~=T>g=…= E=<~;J9g9g:g;=1=;>"#>H>W>N>-[>{=5=a={=>8qD>M>Эy>p?>J]>R>> ==Z_(=c=(^=x =ʎ>d>)">1F>%>%?=<:D:g;g< ==A=t>'I>Pl*>`=:>W>6f>=8=;D=_yN=T>^t>Ê>>?1?E>>R>+=x= == :=^=>*>Pl*>\>KS> v_=͝=;J;t!;!<==>&>@>Rv>J>*( ==m<ܫ==y->]'>X> ??S >_H>y >0=̙==c=^>{>7*>`~>m…>\>-==1>+4>']>== :<;D<=g>/B3>f>>n>->U>>== ==t!=07>,2>W>e>U>&Tq=Ϩ>= :XT>> E>>x>@j=T= ==(=*i\=>d>2ԁ>B">1L> =<<g;?:D:g9g:C<(==qp=w=0<<;3m:g;3m=Q0=G>/B3>T?>N>']=m=y =_yN=t=g{>d>=J= 5;J::D9g9g9g:g;?{>>==C<9g:g;J<*=0=Z_(=R5Q=+n<<=;i:g9g9g9g9g9g9g<t=:K> ?e>']>2ԁ>)p> TP=?<ѳ9g9g:g>AV>Q0>Dn>!:K=5Q<*9g9g:g<ѳ=f=̹=~=Ow==;9g9g9g:g:g:g9g:g==T>#D>I@>WOw>L>'I=yN<ܫ9g9gGM>: >F|><~>&=y-<9g9g9g;m=]n=ȃ=Z=…=Y=?/;9g9g9g9g9g9g9g;m=x =Z>>#r>&=~=R<;D9g9g9g<_=a=y-=U==;3m9g9g9g9g9g-'>>GM>== :;J:t:;3m;g:D:g9g9g9g<R=c=w==ѳ=_yN<;!;<t=T=>a>1L>@><~>#D==<;!;J<<(;:D:g9g9g9g:D< f=x ==͝== Z=qp<<;D"#>AV>Q>LW?>1F><=< >>OW>KS>Es>-7>4=<;i< =<;D I>"#>.~G>*>==C;?:D;3m;;?;D;3m:D:g9g:g<==Q0=D=U==={=R<'Y;n<=g$=U= > >g=d={Y=yN===-y =t=#D=XT=/> >>>d>_>-=Ϩ>=ٛ>>OW>IG>@Y> v_==ѳ=\i=h_=~G>>n>I>r>>Tq>Z=:=%O6=g= =*i\=~'=嘮>>> d=0=^t;!9g9g:D;!=p5>>4\Y>\>k^>a&>@>i;==qp=g=i>IG>M>? 8? >>5>-== :===>%>F7>S{>@j>==g:D:g;?<}=~2>/>>>f\>ui>l{>KS>GM=51=Q0=u[=_H>u >? .n?(?)"?>>dR%=Ϩ>=3m=(^=m>s>KS>s>}>nE">@Y>=Z_(</;->WOw>gs>_>@~>^=/== :=t>u[>?i?)?)?E>Ϩ>>k5r==J {=-y = >>\(O>">:*>0>S)>"=<ѳ^>0>B><0>/=9=KI>>?E?>>>>C=d=T?=)d!=D>-'>Sx>|Z>k>zB>LW?> =qp<t>d> ==:*<:t:D=(^> ѳ>w>x>0>> >u[>2b=X=^t=+n=rܫ=>/B3>]n>k^>\(O>,o==*>Pl*>y>x>M+>==s=J {====Z>"#>0>%>{=:*<;;3m:g9g9g9g:g;?<;J;m:t:g9g:C<=y =2>>i;>V=ʎ=d=J {=>s>B=ܫ=:*>?/>M+>A>q$=Ϩ>=R:g9g;1L>Z>i>^t>9>,=4:D9g;=c=y =yn>Y> ==<ѳ:D9g9g9g:D;;;dt:D;=N f>{>9>`=:>n>dR%>@Y>4=J {:D9g:D==dB> >>B>@=<=9g9g:D;t!;;g:D;3m==07>*>Pl*>^t>T?>-=5=%O6:9g:g<= >f>~'>N=2=s<9g9g:C:D:D:g9g:C >*>7*>+4>=<*:D9g9g;n=u[=Ow>{>V=5Q=rܫ< =9g9g9g9g9g9g9g:g<=d!=E">*z=yn=~==̹<;D:g9g9g<=x ==2=<_;g9g:g<=-y =qp=^t=c>d> Q=yN=R<;t!;g;;?;;g:g9g9g9g;!= ѳ=g$===C<;;g(>$̙>.<>(>=*=KGM>1L>@Y>9> 5=O={2b>-[>;?>2Q>ٛ==_yNa> >ٛ>=<;g:D;<<#D;J;g:D:g9g9g:g<}=J {=5=T=j=̙=g$<ܫ<;m<=C=y =&=[=嘮=m=)d!;9g9g:g:D;:t:D:g9g9g9g:t<=0=u[=zG=L=g<\i;:D;t!<==%O6=T=t==,s<'Y9g9g9g9g9g:g:g9g9g9g9g:D;!<ѳ= %=R;9g:g:D:g9g:C;g<;!:D9g9g<=h_=E> >O>k=@=h_=R<<ܫ==t=>.<>Y<>Z>-=E=;;?;!;!<;D=c=g=*=R= 5;!9g9g:g=c=̘>&>::k>Dn>::k>V=T=rܫ=(^='Y=>T>WOw>>>ê>O6>^2==<<<ܫ=R=>d>B> )==A;t!9g:g;!=h_>V>4 >[>ilK>^t>=̹>==9=J {=51>/B3>>M??>>>2Q==<5Q=u[=_H>']>KR>W)>Dn>`=OW{y>@~>f\>t!>k5r>HBT>==*=1=Ϩ>>[>L?9?% ?&ƺ? ѳ>+>k^==+n==n>~'>Pl*>w>">td>C>=L;?;<+n<ѳ=`~=[>/B3>Y>h%>^t>>OW> =<<5Q=>]'> ??&ƺ?(?->Ϩ>>r\=E"=Q0==X> v_>ba>/>>aS>Y<>-'=,i;>3ټ>C>=J>L=yN=<~;n;=>2ԁ>Tq>? O?>!>h>KR= =a=t=?>>[>|>>66>U>d={k>><=9= {>g >>W?>Σ>>w>GM==g$=t=h_=t4>9>g >u(o>eW`>5a=?=(^<;J:t:D:g;g<*=x =5==M+<ѳ:9g9g< ==%`>^>Es>qp>u(o>M\z>GM=yN=t=C= ==>>*>;>-7> I=t<;dt;g:g9g9g9g:D;?;i;g:D:g9g9g:g<_=n=>d>d=m=Ɉ=i;=C= <~'> >==<:g9g;<=4==?==:*=]n= :<;9g9g:g;g;3m:D:g;#D= =>>@>N>C(.> =J<= ::D9g;?====̘=:=嘮=dB=w22>\(O>k5r>_>;?>%?=Q0;g:C;i=,s=OW>>-'>O=d=޵>::k>`>oJ]>fL>@> D=_yN;dt:g;=3m=Ѳ>d> v_>8> =*>Pl*>^t>T?>.<=[=: ;:g:g= =>>k>\9>=<9g9g:D;t!;;g:g:D >)p>6%>+4>d=/=;:C9g<'Y=ѳ=> )> =t= <#D9g9g9g:g:g:g9g9g:t=R==:>=yn=Y=Q0<=;g9g9g9g<=TP==n==:t9g9g9g9g9g:<t=22=qp=a= :<;:g9g9g>d>=O=,<;n;<;D<}2b>>==:K< ;J;Jd>GM>i;=5=<;t!;{=d=Y=?/;?:C:D;<(<;?;3m:g:g9g9g;J= =x =t=t={=t<=;;3m;J>%>)p>w=>!7>*>8>Q=t=L>u[>>>4>.~G=n<;n;dt;J='Y=51=~>%?=魚=<_(:C:g;n=)d!=;>!:K>C>Pl*>C(.> =a=M+<<t=Q0=>qp>>ߺ>>ƙ>>={<;J==U>-'>2Q>?/>,s>=x;!9g9g;g<'Y=Q0=>+n>Q0>]'>Rv>-==rܫ<>m0>N1?k?>>o>@=<ܫ{>9>a&>m…>\i>,2=J<<ܫ:D:D;? v_>Dn>S)>G~h>%==O%;?;n=rܫ>M>>0?4? D>?>]>F|==/<=>w>L>u >>qp>AV>T=,s;;;?<(<_=>>%>0>'I>=>~W>Y>}B>>>x>*( =s=4<=g$>k>C(.>pI>|M >m…>?C==)d!;;n;t!;<(==y =T>/===C;9g9g+>/>>R>-'>KS>k==*i\<= =s>!7>P*>^t>O%>!7= 5>@Y>C(.>'I>޵==u[=R<B>%>Q==Z_(;:g:g9g9g9g9g:C:t;m;g:g9g9g:g D>-'> TP==T<=:g9g:<= :=k=R= =f=+n< <};3m9g:g;3m;t!::g:tw>+4>:X>.<>i;==g:g:g;<_=u[==Эy=ʎ=:K=4!:K>Es>UE>J>']==)d!;g:g;?=c=I=:>v>>=:=rܫ<'Y:g9g9g:D;%>KS>Y܊>P*>+-H=…=;D;:g;g==:k>+>N>=d=x<9g9g:g;<<'Y;J;<=c=ȃ>GM>;?>HBT>>>=:=!:K;?:g:D<*=~G>>>d==:*< =9g9g9g:D;;n;3m:D;3m<ѳ==J]>a>!7>&==s=,;n:g9g;?=p5=Ϩ>=Z=yn=y-=J {;t!9g9g9g:g:g:C9g9g;3m<5Q= =ȃ=9=d=D=3m<ѳ;3m:g9g9gV=yN=^>@~>L>*=t=Q0<'Y:g9g:g<'Y=Q0== E==(^;?9g9g:t<==>`>!{>:==`~>g >m0>>Z>4 =ʎ=%`;:g;n=YY=E> >'>{= E=R:g9g:g;<=> I>&>/B3>#r> =a<ѳ:g:g)">2b>>>Y>l>f=x w>-[>9v>'I>V={;9g9g:D;<_=s>{>>)d!>k>T=^->>0>H>>p> )==M>@j>N>>OW>-'=?>>i;>=Ϩ>=VJ<;9g9g<=a>2b>u[>>,>>C(.=t4=<;<ѳ=D>-'>;?>I@>8/>d=<9g:g:g:D;?"#>V>a&>?>=T=S:<ѳ;;?=*i\= >>(>==C:t9g:g9g9g:g;<ѳ==;D= :<}:g9g9g:g*z>v>=:=51=x <<;:D;?=R5Q=ȃ==d= w>a>d=L=R<=:g9g;gg> v_>+n>!{>4=o<_:D9g;3m<=M+====g>#D>.<>%> I==;dt:C:<=p5===db=I=g:g9g:g;3m;?;J;n;dt;?<=R=?>~'> v_>GM==s<;:g:g;!=K===E={=[=n=p5d>L> ==dt<ѳ:g9g:g<'Y=C====;?9g9g:D޵>8qD>L>-=2==;g:g:D<_==E=魚=ʎ=| <}9g9g:D >?C>Q0>0>g=D=c;n:g:D==n=d>=:=%`>']>=t=:*T=?==Q0<;D9g9g:g;?<===(^= V=Z=j=`~<=:g9g:g;<==VJ<=8<:g9g:g:t;g:D:g:D<===̘==E=n=J {<=:g9g9g:D<= ==C=*i\<:C9g9g:g:g:C9g9g;<=C==o=?=| =<;D:g9g9g9g:DT=9=n=)d!<;D:D9g9g9g9g9g9g:g$̙>@~>.~G>=\i;J;;t<(< =<<=B=s=YY= <;D:C9g9g9g<t=:*=̘=t=%== :^>P*>td>g >'I=2 >Q0>u[>j#>+=51<9g9g:g:t%>Es>;?> TP=/<9g9g9g:g<(=c=s==^t<ܫ;J:D:g:g9g9g9g9g;?<==N<*<;D;:D:g:g< ==L=>T=O=I=g;g:g:g9g:g:t >>> d=E=T>%>%>=…=s<;=:g9g9g9g9g9g9g9g;J=(=x ==/= =3m<;t!;dtd>> 5>'=a=,<ѳ:D9g9g9g:g:g9g9g9g9g;i==p5=a===1<;dt:D< ==&Tq==> => =p=='Y;i:g9g9g9g9g9g9g9g9g;g<='Y=f=t!=K=<3m:D:g;g<==C==~=~==?/*z=t4=n=g=-y =c= :=T?=>">Dn>g$>\(O>%= E<ܫi;> %>=!==M+== :=zG=t4>Rv>>i\>Tq>k> v_=g>"#>ٛ>{=o=-y <*<=p5>d> >>R>ȤJ>̙>Py=n<<w><> =ȃ=K<\i:D:D;t!:t;J=I@=> >a>=E"=~'<ܫ<;D<=(^>>>d>+>L>g>U=ʎ>q$>=d=S:S)>C><>Ѝ>I>+n=I<><>:*=OW=&Tq<;D;?;n;g:D:g;dt<5Q=h_=t=x=Z_( I>N f>u[>nE">7X=:=R5Q<>v>=Эy={< f><> I=ȃ=:g9g:g<'Y=g=3m=)d!<;9g9g9g;n=p5=>-'>ٛ>d=Ow=,s:g9g<==a=[db=;9g9g9g9g:=?/=͝> >'>/=n=:g9g9g;=g=Q0=M+<;:g9g9g=:*<t:g9g:C>>w=G=*=?/g>>->, >M=t4=t">+4>?C>>OW>(> == ;!;g:D:D:D:g:g9g9g9g:D I>']>8/>6>#r>g='>q$>L>w=:=^t</:g:g:C:g:g:g:g9g9g:g<(==T=:K=̙===C<;n:D;!=c= :=0=E"=07==| <:t9g9g9g9g:g:C9g9g9g9g:D/>7l >.> d==GM>"?>M>޵=OW=g=_yN=g$=t=>C>>I>Z>>"==>1F>AV>: >f=07=t=f=s=>'I>w>ŵA>/>>>">/=I@/>k>%>GM=07=T<=:g:g;n;t= :=y->İ><~>L>C>%=t4==3m=C=>KR>n>$??9>R%>ݏ>&=/ v_>C(.>N>>>-'=2=g;J;n<'Y< >->@Y>7>==^t<*<=#>IG>>? ? >}>̙>)p=i;+>T?>_7>M> v_== :d>L>L>{==,;!;=M+>!7>S >1]>>lK>!>o>-'=| <t<=?/=d>!:K>J {>W)>Dn>= E= Jg>nv>>R>TP>8/==A<<t%?>'I>2ԁ>% ==~2<<'Y< =;g:g9g9g;n)p>KR>E2> =嘮= = <<g===R;?;g:t9g9g9g:g;3m;?;i;;dt:D9g9g=*=O6=c;9g9g;t!<==)d!=!:K=<<;9g9g9g9g9g9gM>%>&=T=p5;?9g:g;!<m=a== =><;:g9g9g9g9g9g9g9g<=>-'>2Q>@Y>1L>O=O6< =9g:g<=*i\=5=U=Y=>;?>EA>::k>u=^>+4>7l >*> )=/<'Y9g9g9g:D=%O6==E=ӽ)==;g9g9g9g9g9g9g;=UE=T>^>İ>w==Z_(;i:g9g9g<ѳ=v=s=s={<:D9g9g<;D=Z_(=2=ʎ=51={<;3m9g9g:g*z>O>^=[==(^<::g:g:g:g9g9g9g9g;i=g=]n= =T=C >!7>/>->V=5==>/>@j>@Y>)d!>=Y=R</;?;?;?;::g9g9g9g;dt<====O===c<'Y<;D=?/=ʎ>d>+4>=̹>::k>$̙>{=t<;?;;;?;;g:D:C9g9g;#D~'>"?> v_>^=*=K;!:g:D:t;3m;g:D:g:g9g:gg=T=OW={=?/=;D=?/=_yN=m>>4\Y>Z>Xc>*=̘ I>']>2>*>=:=TP=rܫ=rܫ=?> >^2>>>>8>R5Q=ʎ=<<_=c=m=Σ>޵> )=G==;dt9g9g:D;=3m=t>!{>F7>W)>N f>.<>/=y =x =T=>9>> ?b?N>0>>'I===g==x =>ٛ>::k>C(.>0> =)d!>Q>a&>Y<>: >=~G=Q0=Z_(=E>a&>Y??? Z? >">WOw=s= ==:K>Y>@Y>fL>p>^t>.<=a=)d!<;J>C(.>V>M>->{=<=,=y->bM>L?K!?!kF?"`-?9>2>\=0=c=g=>nv>P*>vn>,>r\>AV>@=\i<t<<=Q>!{>0>+n>-'=ʎ=(^< =;?=:*>::k>,>/??)>$>>7=/=c<_=> >Es>p5>|M >lJ>=̹=t4=Q0<<<;D;J;?<=s=>g==ʎ=e{>i>]>ƙ>]>>gs> )==$̙>P*>]n>L>q$=n=w>F|>nq>m…>AV>w=51=UE=<B>$̙>GM==dt > =07=s=R5Q=g )>-'> =*=]nO>.~G>>OW>.~G>"=n<9g9g:D<t=N f=O6=y-=_==(^<=;9g9g:g:D:D:g:g;3m== >&Tq>KS>Y>L>%=<*9g9g:D<=x=>==ʎ=a<'Y:g9g9g:g;g;3m:D:g;=0=E">+4>R>_7>S{>+4=<:g9g:g< {=D=yn>^><=*=Rq$>AV>NR>AV>k=ʎ<5Q:D9g9g TP> I== </9g9g9g:g:g:g9g:g>q$>)d!>/>=x<:9g9g:D=;D=/=07=*=?=?/;n9g9g9g9g9g9g:g<=^=d=E"=;=?=t<'Y:D9g9g9g< ==C=a=t=^t<t:D9g:gV===~'> v_>> ==K >!7>.~G>+>B==x <;J;<'Y<'Y;i;3m:g:g9g9g;3mk>8>*>']>-'==\i=%==| =g< =; >N>'==< ;3m:g:;;n;g::g:g9g:g)p>Q>T?>)p= f ?e>$̙>.<>%><=n=w=C=1=T=…>H>>l>>f>Sx=ʎ<ܫf> )=t4=n=:g9g:D;=-y =i>!:K>Dn>T?>I>*>V= %=K=C=̙>"#>İ>א>r?E>޵b>U>)d!=x< {<=T?=a>>>>F7>2ԁ>Y=*>Q>`=:>WOw>6f> )=#=&Tq==X>H>Ê>1?}??f>">\=@=<=>^>C(.>k^>u[>cψ>2Q== :;?;?>Dn>V>L>,2>=<<=o>KR>qD? ?Ȥ?s?a>U>a&==<5Q=?>a>W)>~W>+>w>I@>=XT޵>%O6>2>+>==;;3m={>'I>i> ??k>j>9><~= {=*< f=>^>N>w>;q>u(o>C(.>,=T?<ѳ===Z_(<:g9g=R=[>Y>>>`>s>g>h%>w==*>Xc>g >V>']=Ϩ>=c )>@~>f\>gs>@>^=j=a=,<<ѳ=T?=07>L>+>q$=[=w >=嘮=n=Z_(=g<<'Y;n</=3m==%==Y>~'><=T=x <=9g9g:g>0 >@Y>1L>=<5Q:g9g;3m<=m…= E=:=̘=D=?/<;:g9g9g:D;;;3m:t;?=*i\=>'I>M>Zv>N>(=9=(:g9g;t!==:K=:> >=T=| , >Sx>`~>U>-=?= ::t:g:t=R=/>+>~'>-'==tq$>B">P*>C(.> 5=:= ;:g:g<=o>>-'>i;=[=xQ>>)p>>=/===ʎ=[db;9g9g9g9g9g9g9g:t<_=d=:=E"=yN==0<;dt:g9g9g=[==qp<t;3m;g;n;t;?;dt:g9g9g9g:g<;D= :=x =d==M+<;:g;< {==d>k>> ==dQ> )>=T= <:t:t;< =< =;:t:g9g9g:g<}=6=d=y =n==(^<;g;#D<;D= 5==Ϩ>==Ow=i\=(^;9g:g:D;g;;3m:D:g9g9g9g;?<=\i=R==Z_(=g޵> >%O6> =t<:g9g9g9g:g<=g= :<ܫ<(9g9g9gd>İ>(==T= <*<<=>>f>nv>C>rJ>%=<ѳ;3m:D;===n=*==t!d>->;?>.<>==F^t>y >Ӝ>ؖ>>K!> I=[db<;D;n<*=2> )>&Tq>->=07=R5Q;3m9g9g;3m;?= :=ʎ>L><0>I@>?/>/= =^t<w>TP>P>^>W> >eh>/=D<;!=C=Z>-7>T?>^t>KS>= E<ѳ:D:t;i<= =51>'>0>@>4\Y>GM=5Q=0;?;dt=?/>O>>x> ?66>!>>5a=51<_*z>@Y>h%>td>a&>0==;;;!;!~'>!:K>&>T=5lJ>w>2>X>L>)3>=n=6f>a>nq>]u>-y =Ow=;?;?;;;$̙>y>F>>>;=O=,u>@>P*>@Y>=Tq<ѳ;dt;:g:g:C:D>4 >7>=E"=='Y<ѳ< =;<_=> I>İ>=ʎ= :;3m:g:g9g9g9g9g:g:D:g9g9g:C=T=> =>T==ag> >+4>!:K>k=?<:g9g;<t=C=%`==2= = ѳİ>::k>Es>;?>=ȃ=:9g;3m< f=R=0==?=~=: ;?:C9g9g:g;dt;i;!;?;<= 5=Σ>>@~>KS>@>%`=*=;:g:<*=/=?> >=T=p5;9g9g:g;g;;?;;;!== E>c>-[>;?>.<>=J=c;?:g:g<}=ѳ=>>+=d=e;9g9g:g:t;3m:D:g;g<}=qp=T>w>GM>d=嘮=<ܫ;:g9g;=0==a=;=y =:D9g9g:g:g9g9g9g;g<=h_= ==dB=Y=(^<ѳ;g:g9g9g;J=0=R=R=3m<'Y9g9g9g9g:D<;D<_=t=<m<;?:D9g9g9g:Dv>>0 >@Y>q$=Ɉ='Y;?9g9g9g;?==/=x=e<:D9g9g:g<'Y=^t=Ѳ> >d>޵=/=+nS{>>N>~W>%==;3m:g;dt=0==>==x<ѳ9g9g:g:t<ѳ==?>x>L>-'==x  %>>Q>O>Ȥ>Y=…=UE<(:D޵> >)p>=yN=0:D9g9g:D;t!<==x =a>d>>d=~=t!<9g9g;=>!:K>>>X>P|>\i==qp<\i:<t=y >O>1F>@Y>,2>+=zG;n:g:g:D;3m<=*= Z=>g=T= E=%O6:t9g9g;J=R><>a>է>}>f>/=n=T?>+>9v>'I>=qp;:C:g:g:g;3m>Dn>P*>-7>T=:K=;!:D;3m=g=>^>`>w=ȃ=R:g9g:g9g9g:g:D;J<=f>^>q=:=x <:C9g:D<B> >GM=~=t<5Q:D9g:D<;D= :==~G=?=Z_(&>%O6>ٛ= ==g;dt:g:D<=22=O6=@=n=RY>B>"=嘮=d<;:g:g;== %=n=~=<t9g9g:g:D:D:g:g:D<= :=M=E== ==^t<;g:g9g:C">R=J=;g:g:D:D:D:g;dt<=B>1>)d!>Q=w;?9g9g:g:g:B>3ټ>,s>޵=T;t9g9g9g;g-'>w=ʎ=!:K;g9g9g:D Q> =m==rܫ<;9g9g9g9g9g9g9g9g;g<=8=rܫ=x =K<m<:g:g;=g=a=n>޵>=Z=:k=Q0>.<>'I>{=w<;D;?</<+n;J;n<'Y<_= :=<(;dt9g9g9g:g<*=d=*=L=E=D=VJ<=<*< f==y >ٛ>a>P\>">KR=~=*;J;?<(</<=;D==n=O=,s<\i:g9g9g:g:g:D<_=%`==G=$==Q0?C>)3>>>rJ>k=,<(:t;<=c==:= =n=x <;dt:g:g;g:g:D<=T==a=5Q=s= :<'Y;t!:D>>o>I>U>"> =;?9g:g;m==n==[=5Q= >hg>D>H>Uǟ>/=K;3m9g9g:D`>;?>3ټ>d=DT>d>i;>f=+=| <;:g9g9g9g9g9g9g9g;J=g=_yN=/==Z_(=g<g:g:t<=| =Ow>>>k>O=嘮=<;:g9g9g9g9g9g9g:g >GM>&><=܊=,g>+=07=o=&Tq;J:g9g9g9g9g:g9g9g9g9g;n<̹=;D=x =| =R5Q=<#D:D:g:D/>~'>O=Ow=;D;J;<<;:D:D< =<=GM>XT>66>~>L=m=* TP>B>d==n=f=3m=-y =~2>T>\> >>>>H=dB<5Q<;D޵=嘮= %=g;3m9g:g;dt;#D-'>>&>V= Z=C=2b>>>>܊>;>z>{=!:K;J<(==D>Q>ٛ>"?>-'=E=J { =>~'>'=?=<mi;>>)t>>> >}>/='Y;g;t!<_=> >'I>0> v_==m…<ѳ<(;!<(;;<=*z=:=d=魚==8`>7>>>KB>Qqe=yN=g;dt:t<==O=>/>(>==M+<(<'Y<;?;dt:g;gGM>cL>>>YY>d==<=;m;3m;=c=>V> ==D= ѳ<'Y;?;?:D:g9g9g:g;v>>q$>=2=M{=$=<:g9g:D<'Y<=t=N<;?:g9g9g9g9g9g;?=e=~>d>GM> =ʎ=c:g9g:D<}=)d!=t!=j=<(:g9g9g9g9g9g9g9g;!=T=:>>L>==)d!:g9g9g:g<ѳ=R5Q=i;=ѳ=?/<;D:g9g9g9g9g9g9g;=R5Q=:> I>>=n= ::D9g9g9g<'Y=;D==R=22<'Y:g9g9g9g:g<=d=Ѳ=嘮=Σ=<:9g9g:D<=;D=A<ܫ;:g9g9g;g< f=R5Q=T=a=g;J:D9g9g9g;3m%?>>>g==h_<t;:g:C:g:g9g9g9g:g'>>q$>d==>ٛ>M><=E=u[<=;#D:g:g:g:g:g:C9g9g:D<ѳ=?/==2=2==Fq>/=魚=Tq=;m:g9g9g:g:g:g:g9g9g:g< ===a==x=p5=~'>->+> )==<:;;m;t!:D;<ѳ<*T> )>g=d=t=k=T?=J {=x =:>)d!>x>b>a>y> 5=m<;D<(<'Y`>'> v_> =ȃ=g=M+=?/=>w>x>mP>{>`n>c>x>=(^7>> =y-=/;:C:g;;<*=>>#D>1>+>-'=:=x = :==>%>L>`n>*>>>w>!:K=<;D<=: =E> :>;?>C(.>.~G>v>=<=;n;m<;D<(<==O>>(>!7> )=̹=*i\<=$̙>w>֋>!>hw>ٛ<>>%=<'Y;?=<~=>%>L>W)>C(.>u=n<w> =;=m<ѳ:t:g=> =>>qD>z>2> >66>^=p5<'Y;= =ȃ>>C(.>P*>>OW>=5<ܫ/B3>@>L>KB> >-=ʎ=<;D;?!{>-y >k==dt<<(< =;3m:D9g9g:g<<<</;g:g9g9g:D=0=>>;>8qD>=*=VJ<<t<(;n;gw>~'> )=ʎ=0;m9g9g;m<̹=DU=T=w='Y<;n:g9g9g9g9g:g9g9g:g<ѳ=>*z>"?>, > v_=2={;n9g9g;?=N=d===T<;g9g9g9g:g:g:g9g:g )>(>2Q>&>=;?9g9g9g;n=*i\=o=:=Ϩ>=5=:9g9g9g:g:C9g9g:gٛ>%>&==rܫ;!:g9g9g:D=c=:K==ʎ==g:D9g9g9g9g9g9g9g;g= 5=/=>v>=yn= E= 5<g:D9g9g9gg>V=n==;!:D:g:g:g:g9g9g9g:gg>O>d===3m<;D;g:D::t:D:g:g9g9g:D<t=C=x==i\=/= 5> =T=o= :;?:D:g:D::D:g:g9g9g:g<ѳ=3m=====/=(^w>&">&>:*=?e;!:C:g:g:g:C;t!<<===g=C=)d!= :=3m=>M>i>m>nv>u[>/={;!;t!;3m;n>%>f>R=OW=i='Y= =XT=>cψ>R>>l*>L>x>T=#D;!;n<==>B>>=U=c:D9g:g;;>#r>0>)p>'=Σ=b< <=T?>>>̹5>>I>E>M>!:K=/<#D;=(^=>%`>@Y>I@>3W> I=M>(>!{> =?=*<;D;=0>>>Σ>>>=>א>>%=<;D;n=: =>+>S)>]'>J>M=<<R<>^> =T={n>b>Ӝ>֬3>qD>>d=T>"#>KS>WOw>C>B=n%>xyn>~>>66>,2=Σ=(^f>)d!>5 E>%==w<;?;i:t:g9g9g:g>2>1 Z>~'=5Q=a<;J;g:D<}=x=L>g=07=/d>>w=E=]n<#D9g:C;J<=a=x=/=;DR>%>.~G>#r>޵=x >)p>4>)d!> =M %>']>=~=<=:D9g9g;dt=3m= E=yN==n=:D9g9g9g:g:C9g9g:C;i=)d!=/=>{y==D=;D<};3m:C9g9gB>N>]n>6%=:=`~<;D:g9g:g<ѳ=v=2=/==<:D9g9g9g9g:t<_==d=*=*=<ܫ;:g9g:g= x=a>A>I>x>l:>=n޵==,<'Y9g9g9g:g:g;3m<==̘==+=^F7>>>nq>ٛ=X=g;t!9g;=R5Q=:>Y>s>%?=o<:g9g:g:g:g:D"#>Z_(>g$>>>%?=f>^==?<:g9g:g:g9g:C:t-'>B>{= E=0<;D:g9g9g< ==S:=dB===M+;9g9g:g9g9g9g9g:g;dt;;dt:g9g9g<(=)d!==51=/=ѳ='Y<}:9g9g9g9g;J=c=M+="?{=p==M+=G==_yN<(:D9g9g:D<}=-y =x =f=g;#D9g9g9g:g:g:g:g:D</==t=d=?=u=n=J {<:9g9g:g<= :=f=XT<_:D9g9g:g9g9g:g;Q==a= :<:g9g9g;=g=`~=qp=%O6<;D9g9g9g:g;?<5Q=C=c9=,s<=:g9g;==O6=:>{=yN=5='Y<;D:g9g9g;J==T=ѳ=VJ<<ѳ9g9g9g9g:g;t!>&">!7>{=<:C:g:C9g:g;t!<=<<;m:C9g9g9g9g:g'I>N>Jg>q$=n'I>Pl*>L> v_=n<ܫ:g9g;dt<_=N f=a=*<};3m:g:g:g:g:g9g9g;dt<ѳ< {<t;?:g9g9g9g )>)d!>%>+====d=<:D9g9g9g9g9g9g9g9g;dt<t= :=J {=J {=<ѳ;3m9g9g9g;<=qp=:K=y ==A<;3m9g9g9g9g9g9g9g9g:g<">&>%O6>%?=T;?:g:g:D:g:g:<'Y<<'Y;3m9g9g9g9g<#D=?/=t==/=k=<m I>HBT>t!>s>C=='Y;dt:g:g:D;i==qp=,=C<:9g9g9g:g:g:g!:K>u[>S >>s>=:*<:g:g:D<=g=OW=== 5;J:g:g:g;#D:D:g;i=*== Z==YY v_>x>>է>t>f=<9g9g:g<m==*==/=Hf>M\z>z>w>G~h>{=Z_(;9g9g:g<={==ȃ=?=(^w>*>(> = v_>C(.>C>/=51 :>gs>>8>nE">&=T;t:g:g:D<t=qp= Z=/=x=;dt9g9g9g:D:g:t<==̘=07=t=o=Q0<_<t<;D9>>>R>w>@==J<={<\i:D:g:D;;g;g;?>>M>>CY>@=ʎ >"== %<;;dt;;;3m:g;g<*=w=M===0<;D:D9g9g:=w>&>o>>>q!>L=v>=*==<;?;;n;dt:D9g9g:D$̙>J>IG>!7=:='Y;:g9g9g<=Z_(=X==y =4<`~;T?:t;3m:g9g9g9g:g:C9g9g9g9g<#D=VJ<=n=O=07==)d!;J:g9g9g9g9g;!=c=A=t<;3m:g9g:g9g9g9g9g9g:g~'>951>>OW> := >WOw>H>Q>gs><=x ;:g9g:g<=| ==?=ѳ<ܫ:D9g9g9g:D:g:D<=R==嘮==d!=?/<'> >>>>;?=+=yN=T<+n:g:g:g;t!:D:D<}=f=?=E=ʎ= :=c<;g:g;n=d>)d!>>O6>>8><0=ʎ< f:g9g;?=p5=;>w>2b>{=I<;3m:;dt;:t:g;g<={==x=3md>`=:>)3>>k5r>=D<=:g9g;g=+n=n>>w=~= %<;g;#D;;g:D9g9g:D>@Y>@>f=Ϩ>=*i\;:g9g9g<;D=h_=n=T==K<;D:D:D:t:g9g9g9g:g:C9g9g9g<;D=[db=OW=L=9=y =*i\<:g9g9g9g9g<= :=T?=(^<:9g9g:C9g9g9g:g<}= :=I@=0<;:g9g9g9g9g;<'Y<(;g9g9g9g:g;?<;D<'Y;:g9g9g9g:g:g:g9g9g:D;!>d=9=L;9g9g;gN=t4=t7>>=^=;9g9g;?==s=zG= 5<(9g9g9g9g9g:g>f>*z==;?9g9g9g<=,s==t=_yN<ѳ9g9g9g9g9g9g9g;<t<ܫ<;9g9g;!=C=D=>{=E=R< f;dt9g9g;>=ʎ=3m;n9g9g:g:D:g9g9g9g9g:t<;D<=>8>{=^<ѳ:g9g;<;D>%`>=d>V==C</9g9g:D<'YGM> :=~=T</9g9g:D;i;J:D9g9g9g9g9g9g9g;i<=g< f<;D;;;:D:t'>3ټ>8/>B=?< :D:gO>3ټ>7>B=~= ѳ:D9g9g:D>GM==<t:g9g:Cw>d==_yN;J9g9g:D<(<:9g9g9g9g;<< >'I>+4>^=o<*:g9g9g:g<ѳ==<:D9g9g9g:g9g9g9g;3mq>(>+4>^=<m:D9g9g;g<=?/=J {<m;9g9g9g:g:g9g9g9g9g;g;?;:g9g9g;g=C=E>w>d==m<ѳ:g9g9g:gT=@=H<#D:g9g9g;iT= {=Z_( TP==5<_:D9g9g:D<;D<ܫ=t=R>ٛ>d=y-=!:K;dt9g9g:D >{=2=c;g9g9g9g:g;i<= := :<;n9g9g:g;n<;Dw>>=y-=3m;:g9g;n<=,s=[db=4<;3m9g9g9g;?=;D=/=_H=yn=ȃ=Z_( TP>::k>T?>C(.>d=t<:g9g9g:g<(== =O6= %=YY>I@>i>\(O>!:K=51<_:9g9g:D<#D=*=====c;n9g9g9g;?=3m=5===?/<t;3m:g:D<=Q0=:>+4>M>C(.>-'=n<:D9g9g:g;?<ܫ=x ==Tq=T=;9g9g9g;<m=;D=4=<:C9g9g:gw> =Σ=L;!:g9g9g:g:D<=R=VJ<=a=&Tq4>%>3ټ>#D=5=| <=:D9g9g:g<(= ѳ=x =t==-y > =嘮=d<<(<<=a=yN>!:K>W)>pI>`=:>%=/=R;:g:g;#D<=VJ<==0=ʎ=/='Y;i9g9g9g9g;g===>=== %>c9>>u[>;?=yN=0<;3m:t;n >C>gs>^t>(=%=< =;dt;3m;> >8===k>k>']>~'=E=KM>C(.>Y>F7>=/< f;J;dt:D;g<=VJ<=2=5Q=̘=D=0<g:g9g9g9g:gM>M\z>i*>Zv>!7=j=cT>->L>B">~'== <\i<(;J;!<=Q0=2==T=/=a<=:g9g9g;?= =YY=_yN=(^O>d= =zG<;J;;;n;!<*=h_=s=#=,= ;?9g9g9g;n<< f<=;3m9g9g:gs>M> I==;J;n;g:t;g<=c==o=={<ܫ;t!9g9g9g9g<=*i\=^==,= :<;D:g:D<;D= 5=:K=>~'>!{>s=:=?/^>=@=J {<ѳ<;DR>===M+O>d=m==| %?>/=Z=ʎ=:*<ܫ;:g:D<==h_=o= E=/=qp= :<t;!;m;;i;J;J >R=E=T<5Q;i:D:C:D;;?;m:t:g9g9g:g >>&==<;t!:g:g;3m;!<;D<(;=:g9g9g:gk>L>2b=_={=Z=o=t<;t!;?<=R=| =Эy> TP>`>GM>v>=@=p5<;:D;v>> >V==g< g>+4>G>@Y>==#= : >!7>q$= == 5<t4>@>ba>W)>*> ==R5Q<t< = > =E= =c<<<;D<<t<=3m=OW>=m=T=n=,s>Q0>Es>!7>=Ɉ=e^>= =8=C&>V>^=!= E=C<};;J=;D===嘮=dB=Y=0<*-'>'=:==g<;3m:D;;J<;J;3m:C9g9g:D<t=^t= =͝=/=R=N>+4>'I> )== ;i:D:t;?>'I>!{>%?=5<*;:g:g;n<+n I>{=n=;D;!:g9g9g:g;;?;m;g:g9g9g;g<=t=R5Q=C=R޵>{=O== :<3m;g:t;>ٛ>-'=E=J {*z>%>>OW>4>=a=,>C>@~>'==%O6<<==qp=:>q$>W)>z>p>?C><=51=?/8>IG>D>=51=YY=%>q>>>Pl*>==| =g<=g=y >v>>> %==d=>M=:=d=,s<-'>^>>w>B">= =/=<t=(=J>^>&>$̙>=m=Z_(=<_< <*<<}!:K>Dn>@~>#D> =ʎ=rܫ<*^><==O6=N f= ѳ<<;!;J;:;tR=G=ʎ==(=d=K;9g9g9g:g;>>{=Σ=zG<*<(;;3m;;J< =;?:D9g9g9g:gR>>=Z=*=g;!;3m;dt;i<;Dk>`>~'=O=d{>T=*= <<;t!;;?<#D<=g==gQ>>d=ȃ=(^{>%>@Y>::k>=:=_yN>@Y>9v>Y== :<<=g=_yN=̘>%`>W> >v->@> =d!=<tGM>@j>?C>'==Q0=g<= x=XT=>$̙>rZ>>D>W)>=ʎ=`~T>s>c=Ow=t!<ܫ<t<t<=g=>>2b=yN=R='Y<-'>^t>q>~>Es>-'=:=x =g<=&Tq=OW> =>>GM=i=:K=8= x<<m$̙>HBT>@j>%O6>=OW=UE<<t=R==07> =>=E==3m=R<*g> ===n=x <ܫ<'Y<<=3m=t== =d=J {==y =6;!9g9g9g:g;g<'Y> x=嘮=| >i;=Z=};J9g9g9g:g;<=DU=s=0<'Y9g9g:g:g:g9g9g9g;=c==5r===1;3m9g:C:D<'Y==)d!=g;9g9g9g9g9g9g:g<=I@=t==i >q$>>V=I= ѳ<;;?;!-'>w=@=H->UE>P*>"?=a=h_i;>^=*=v= <=<<==,>%?>@Y>nE">h%>22=== , >Xc>S)>'I=Z==<<ѳ= =ѳ=:=_H===Q0 Q>#r>"?>^=i=<m=/<:g9g9g:g;?<=d=s=: >w==M>ٛ>== :<;D;g;?<}=g=J {=h_=C<<#D:D:g:g:g:g9g9g:g<t=;D=T?= 5d>i;=[=Y=(^ = =5< ;3m9g9g: ?e>q$>2b=ʎ=1;?9g9g:w>= E= :;D9g9g:g;J>==<;?;J<<=:*=2>, >G=>8qD> = > >">^=T=)d!>pI>>|>Dn=07=;D;n9g9g;g>k> ==3m<ѳ<;D<ѳ='Y=d>8qD>g>a>m>`> ?e=u[;!9g9g;dt<=t!=~==5Q=:K=;D9g9g9g9g:g===~>=07=D=*i\/>i>:*>>K=G=R5Q;9g:C;gq$>@j>;?>=<*:D9g9g:g;f>^>=ʎ=I@;?9g9g:g:g:C9g9g:D;J<\i+>>޵=ȃ=?/;?9g9g9g:g:g9g9g:g;dt;?;?;g9g9g9g;?=)d!===?=J<=<_(:t9g9g9g9g9g9g9g9g:g:g:g9g9g9g:g<==0= =a=| =;:g9g9g9g9g9g9g9g:g;-'>-'==<*;J;!<;D<==>>.~G>"#>T==;n9g9g:Df>7>::k> =07=dtV>?/>|Z>8>4>Q>k=T<}:g:g;===*=07==/=g;3m9g9g9g;g=3m=O>)p>J>O%>6l> =5==(=C=X>%`>u >U>(>Q>8>1=dB=;n;#D>O> = =<t:g9g9g:g=g=:> v_>C(.>KS>6f>^==7X=c=8=2>!:K>|>s>">$:>>L=O='Y<;?<ѳ=_yN=+> >&>>==;#D9g9g9g;?=R>{>#D>.<> v_>Q=n=(^<< ={> >g$>k>>Q>>;?=@=c<(;JV>>d==^=R:t9g9g9g<===嘮>%?==ʎ= < f;;i< f=>f>k5r>#>>WOw> = <;;g;iQ>k>%`>T=a{>(>=̘=WOw<#D9g9g9g:C9g9g9g:g;{> >޵=ʎ=Q0<:g9g9g:g9g9g9g:D;i >%`>f> =~=>?C>P*>@>~'=ȃ=B<'Y9g9g;g'I>C>F|>-[>=== =[db=n>&>\>t>%`>>n>GM=Tq=,;;g<;D=1==> )>%?=͝=a<;D:g9g9g;n=^t>{>3ټ>WOw>]n>DU>=n=VJ<=?/=R=*>4>><>i}>&>F>N=t=M+<<;D~'>$̙> 5> == =;:g9g:D= :=嘮>*>Q0>Z>F7>as=ҷ={=C=T=yN>9>(>> >Ԣ>i\>h%>={<ܫ<=(==>q$>.~G>+4>~'=i=a<:g9g9g<=s>(>/>@~>.~G>d=ʎ=g$= =+n=>ٛ> >M>>~>k>V=Z=c9<_<== =>>'Y>%>'=E=\i<(:g9g9g9g<= Z>\>>=07=Tq=0>">m0>XD>u(o> ==c<(<} > =O== ;3m9g:g<==X==̙=I@<;D:g:g;3m== >>3ټ>4>u=y-=,s-'>-'==n=c>7l >Ci}>1F>w=51=(^<(:C9g:D<=F=s=*=D=Q0ٛ>4\Y>7> v_==< ==a=@>L>R=>@>>>Xc> =x< ;J;<;D=)d!= Z=!> >޵=%=qp%>F7>L>4>(==C=0=:*=07>.<>{>U>>>>7*=ʎ=L< f<<=R=嘮>>#r>> ==)d!;:C9g:g>@Y>I@>5a>i;=n=a=1==>-y >@>n>>>i>P*=*=x ===(^==2>>.<>+4>=a=qp >-[>!7>R=J=J {=g=+n=:K>i;>g$>>d>y >m>@=a=i= :=(='Y=^=07>>']>%>=T=c9v>>޵===g<(k>hg>?e>H>^2>=o=(^<ܫ>Y=_H=o=;9g9g>"#>&>w=~=;D>M><=0=p5<t;g:g9g:g;<ܫ=\i=g=h_=;9g9g9g9g:D===>-'>2b>=2= 5g>*>P*>^t>L>V=dB=)d!f>f> >d=:=h_<<5Q=Z_(=n>-'>F7>z>)3>E>N f>g=| = <<ѳ<=R5Q=~=m>^> =*=M>>d=i= < <*=J {= E>^>G~h>aS>0>w>g >-'=5=6=c=g==T=:> )>>B>=~=)d!;?:C9g9g9g< f=Tq=d> ?e>T=ʎ=| < {'I>h%>>޵>S)>w==9= :=c==t!=>>-'>== E=*;?:g9g:g===n=n=:K=;D!7>C>C(.> =a=x ==g<ܫ=g=&Tq===5== {=<:D9g9g;3m< f=I@=m…=?/<;g9g9g:D<=,s= =O==Ѳ==c==:> )>w=d=:K=<(;g;3m:D:D;?<=VJ<==| = 5 => v_>(>GM=~=XT/> >.~G>"#==^= )>M>~'=Z==< <<v>>V==-y <:D:C:g;g;?<;!;g:g9g9g:g;dt>=d=y-=T<;?::D;<=R5Q==T=5< f<;g:g;m<==&Tq=:K=>^> =a=:*= <}Y> v_> 5>d==t=c<'Y;;O>=p=D=: <a>.<>-7>GM=[=~G=-y <;!<;D=g=?=:>T=t=={='Y< { ѳ> > v_>i;=Z=/=J {<<;D<ѳ== Z=!>%?==U=N=I@g==yN=n=)d!>>'=O=d!=F<;:g:g;g;n;::g9g9g;3m==D> =>İ>Y=@=: <ѳ;!<;D=g=>>*( >BdB>>OW>=Ow=a<;?:t;<;D<>>%>`=07={">@>Z_(>S)>+==_yN I>`>=Ow=s< )>;?>Sx>Jg>!7=ҷ='Y;J:D:t<>.~G>%>=<;3m:D:;?g=07=?=;i;dt:t:D:t;<(<;D<;n:g9g9g9g:==_=Z_(<<#D<ѳ==J {==d> >>>w=*=?= 5"?>>>6%>-'=n=;D<<==g=E>>@Y>Xc>T?>4\Y>=ӽ)={<ܫ<ѳ<==R=/=嘮==i=t=;!:D:g >Ci}>m…>k5r>>>k==: =(=A=D> >;>x>Y>D>f>*=m=Tq=C===> >+n>/B3>İ=O=x >I@>u[>u[>IG>d==x =;D=h_=> =>KԢ>Z>ݏ>>~><~> =n=t!=(^=XT= >+n>W)>\>;?> ==^t=<_=%O6=Q0== >%>NR>P*>*( =m=2=qp=C=p5=D=T>7l >k>C>>oJ]>8qD>d=+=zG=/=qp=>0>^t>f\>B">'=ʎ=:*=;D==(=0=VJ<==ǟ> > =?=={=(^==?/=T=*> =>C(.>k5r>a&>AV>">R=J=T?=c=22=n>>>OW>C(.>)">=n==*O>GM>-'>*z=5Q=/=> >{=ӽ)=x=0<t<:g;;?<(<;D<<t<ѳV==t="?>;>4>GM===<;3m;< =&>)p>k=Z= =!{>\(O>u[>nq>F|>=?= <;D< =*( >?C>/><==3m<<ѳ=K=>::k>u[>>>^t>ٛ=y <ܫ<<'Y<=c=!:K=c!{>4>*> =y =;D<<=K=>2ԁ>p>f> >U>=^<(;n;J>a>O=t==%O6&>L>cL>Xc>+=yN='Y;?:D;t!<;DGM>%>=*=h_ => =yn=s=T=k>2>)d!> ?e=='Y<=R=WOw=5=嘮>>7*>K>Dn>*> I=y-=f<_<t<t=R=/=n=d=dB=TL>`=:>I>">Q0> ==K=F=R=>f>W)>4>C>>wt4>2ԁ>k=2=YY=*=!:K=>>!{>']>d=ʎ=0;J:D;g==]n=E>;>?e>>r>>4 =*=5=g=Tq>>=̹>>>Эy>,">>cψ>%`=9==x =>>Dn>q!>u[>P*>==<<=^t==yN>>>>R>R>(>Ci}>g=?= :=>{>C(.>!k>>˴>>l>}>.<>{=dB==*>)p>u(o>nv>>|>5= =d=Z_(=C=R==dB>ٛ>s_H>N>>u[>(===:*=:K=a>)p>8>@>A>>R>u[>2> ?e=y-=:K=yN>0>|Z>V>>)3>C>g= E==x =x ====>f>F7>F|>!{=~= =u[=C=qp=n>Q>Sx>>>9>>UE>%====*>>\>>>u >.~G=2==~2=^t=c= 5='Y=C= :=ʎ=E=51=:*=: < f<t<_=<~=/=>7l >^t>\(O>C(.>%> =y-=x =0=_yN=>&>@>IG>-[> =@=g=<ܫ;m<<//>g= ==_yN=g{y>==<*;g:g:D;J<=?/=x==m<9g9g9g:g:g:D:D:g9g9g9g<t=>v>>0>@Y>%==R:D9g;g-'>@>N>3=~=&Tq:D9g;dt ==?{>)d!>6%> v_=J<=:D9g:t;!<=g=E=[==<(9g9g9g9g9g9g9g9g9g;g==s=yn>/= =a<5Q:g9g:C;#D;<=p5=M==g:g9g9g:g;!==}=d=zG=c;?9g9g9g:C:g;<;D<(:g9g9g9g:g;i<<<;?9g9g9g9g9g9g9g9g9g9g:g:D:g9g9g9g9g9g9g9g9g9g9g9g9g:C:g:g:g9g9g9g9g9g9g9g9g:C;dt;J;J;:g:C9g9g9g9g9g:C:g:D;g;;:g9g9g9g;g*>Dn>@>q$===>$̙>&=E"==<ѳ, >k5r>|>}>V>B=='I>;>.<>w=?=R5Q< f<=a=G>J>I>O>>n>'I=n=c$̙>7>-[>w=dB=Z_(Dn>66><>o>g$>q$=y < f;!w>>GM==o=;D<%>]n>ui>j#>>OW=2=`~<;D;t!;<}>!7>0>%O6>Q=<;n::D;<%?= =n=rܫ]n> >O?+>^>s>I>)d!=t4===n>ٛ>`=:>> >k5r>q$= Z=0== =d==>`=:>̙>">>,>hg>-'==~=d>>gs> ?Q?%;?F>a>է>@>=T=>{>Dn>{y>>Y>>Qqe>=Tq==g= Z==>7l >8>>>>Es>R=Ɉ=n=OW>*z>P*>R> ? %?>{>t>E2>s= =ȃ> >NR>8>R>d>L>cL>=ʎ=n=O6=?=?==d>;?>nq>oJ]>@> TP=~h==a=R=>&>k>> >>Z>pO>4\Y> =ʎ==07>0 >z3>w>>>L>w=ȃ== %=XT=XT=K=p5=J=t4==:==XT v_>oJ]>O>>fL>;>:=;==w=/>V>3>b>nE">M>as==5=h_=J {>>>T==T=*=g=&Tq=:*=T> )>>=Ow==3m<<'Y9g:g:g;3m< =<<ѳV===;?:;3m;! >5 E>C(.>*=J]=_yN<(:D;<===ʎ=i=51=0:D9g9g:g;;J;!;i;:D:g9g:D=)d!=a>2Q>ilK>u[>\i>=d<(:g;?<=dt=͝> I>-'>/= <9g9g:g;t!;?;J;?;:D:g9g9g;g=7X=!>@j>u[>">kv>(=#<:g;?-'>/>=Ϩ><9g9g9g:D;g;#D;g:D:g9g9g9g:D=R=%>*>]'>k^>R=>~'=;J:C;*z>>k=<9g9g9g9g9g9g9g9g9g9g:C!:K>+4>=5Q=0:t9g:g;n~'>-y >)d!>w=n=I@<<(;?<(<>޵==T=gM>V>qp>i>@> ==x<-'> >==n=3m8qD>u[>>@>\>==-'>!{>M>V=2=B<<=<~=;>3ټ>qp>k>>V>2b=5<*<'Y޵>-'>^==s=%O6<ѳGM>KS>c9>XT>,o=$=^t<};;?s> >~'=9=| k>,=J<==3m<<=<(<<=&Tq={===T=*i\*>I@>@>~'= E='Y<<_=J {==m>&>Q>l:>c9>4>%?==C=== ѳ=,s==ʎ=E=?={<:g9g9g<(<=?>(>xyn>>>o>==x =h_=:K=>/>u[>>v>w>1>A=2=5=`~=I@=YY= > >&>(>d=n= 5;J;;?= 5=M+=yN>P*>>>2>Q>S{>{=dB=n= {>>WOw>f>z?]>>>g> ==D=d=51>>N>xyn>| >UP>=5=)d!= ѳ====07>U>k>>>>`>d==OW=*>>b>B3>?$@?:>r>X>951>=ʎ=?= >9> >>F>Z>@Y===/=:*=== {>+4>>̙>O6>)3>@Y>V=U==>>M+>zS>?4?>֬3>d>>>w=d=y->k>C(.>;>>Tq>-'>S{> ==y ===s==>->a&>dR%>7l >=:k=g=M+=T=>M>>>N1>җG>D>lJ>->=dB==L>*>m…>m>b>@>@~>R=n==?=^t=R5Q=;D=VJ<==嘮===ѳ=?/']>u(o>8>Z>eW`>4>d=Σ=:*={=>T>+4>V>_7>@j><=E= %=rܫ=VJ<>k> v_>-'=[==a=c==;D==>R>>{=%==3mv>>i;>V==t;:D;3m</>F|>UP>=>{y=<;D:g;<==(^==̘=O==1;9g9g;B>u[>">k5r>(=~G >i;>{=n>P*>,>>u[>1F=51<;D:g;?<=T= >>ٛ>^=y-<5Q9g9g:D;;!;J;n:D:C9g9g;t!=-y =07>7>i>u[>\i>=;?:g;gg>w= =<ѳ9g9g:g:D:g:g9g9g9g:D >+-H>3ټ>=T=(^:D9g:g;<ѳ=J {====-y ;dt9g9g9g9g9g9g9g:g;<=:*=ȃ=:= =P*<'Y9g9g9g:g;<ѳ<<;?9g9g9g:C:g;g<=c= 5<ܫ<:g9g9g:g:g9g9g9g9g9g9g9g9g9g:g:t;3m:D9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g:g:g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g:g;g;g:D:g:g9g9g9g9g9g9g:g:D;dt;;dt:t:g:g9g9g9g:g;?T==y-=p5<* >9>1L>==<~<t<<w>@>Z>S{>+n=E"=zG<5Q{=~==T=w>?/>W>N>']==w<*>/>']>v>=y =-y <t<;J< =>q$>GM==p5<< =<;D< f=K=>g>#D><~>4 >=@=T?<_<<_(<_=g=K=:*==| =;!9g9g9g;g;3m= :>g>Ci}>nE">k5r>8=_=| =(^==Z_(=/><>DU>/>}>g>p>==DU=c=c=*=w=== =:=g<;g:D;3m< %>u(o>l>-'>td> v_=Ɉ=t=| =t= >)p>66>>`n>FH>,>W)>==a=R5Q==yN>ٛ>:X>;>=E=R5Q>y>~>> >,s=L==x==9>1 Z>>>n>.>>u[>V=*=t=x=>-'>F7>m…>qp>L>O==w=M+=P*=={=,=>L>>޵>XT>~'==t=w==n> >>s>lK>a>>m…>q$===*=Ϩ>>>S{>z3>>]u> 5=== ==x =_yN=5==2>$̙>'I>w=ʎ===4==(^==>T?>>>[>Q>HBT>=:===J>w>: >_>g$>DU>~'=*==| =x = =g<^>KS>nq>gs>B">&=07==DU=O%=I=%>Y>#r>(>~'=?=D=p5=(^= ;;m;;?<ѳ== := <^>d===g= =T==R;T?:g:D;i<ѳ==3m=+n<<:D9g9g; >1>@>)p==x ;!:g;dt<;D=R={==y =,+4>^t>kv>Pl*>~'=<'Y:g;g<=J {== =?=ȃ=[db;?9g:g;?<ѳ<<:K7*>i>u(o>Y>`=ѳ;D:g;dtV=yN=;!9g9g;g< =!7>N>XT>=J>f=DU:g9g:Da> %>R=d> =t==<^> ?e=d=R=t<B>=O=o'I>M+>HBT>k=:=<~<>=J>;?>2b==p5= :< ==p5=@> >o>(>Z>^>-'=̙=<<5Q==~2==嘮==?=]n<t;?;n;<}<;D<=M>7>@Y>@>M=Ow===?/=c= 5=p5=E>3>U>>q$>Y>(=d=rܫ==*=h_=dB>*z>>= ==4a>M>{=51=w=<'I>|Z>>W>td>'==:*=3m=?/=R=E>d>!:K>!:K>Y=͝=zG==g<_<<=;J =>I@>rZ>m…>C(.>-'=%=w= :=1=g=s>g>-'>-'>T=/=p5= : >%>%>i;=a==c<==T?==y-=yN=i=T==(^ =>>g=X=/;:g:D;<==K=B=g<;D:D9g:g;i<ѳ<<<:D9g:g<=>Q>$I>->=T=C;n:g:D</=g=^t=d=d=Q0<:D9g:g;<} >*>2Q>=5Q=:D9g:D<;D= =p5===p5a>>=<9g9g:g;i<*=3m=x =}=0>==/<m<;;?>)d!>+n>d=n=C<< =@> v_>#r><==a<> )=…=y =;D I> ===t!<\i;t!;3m;3m;?<5=>\>>w=~h=I@<;D:g9g9g:g;i<_(=?/=S:=;9g9g9g>~'>T= %>@>dR%>V>= Z<:D9g9g:Dw>'==/< <;i<'Y< {=i;>>Z>rJ>t!>2=*=(^;3m9g9g:D{>@Y>g >Z> 5=?=c:D9g9g:D<=g=f=d=/=*i\<9g9g9g9g:D޵>>s==_yN<}9g9g:g;T?M>==p5;?9g:g;g;?;:g9g9g:D;?<;D-'>Q>d==_yN;n9g:g;dt;m;t!:g9g9g:g;g;n;:D9g9g:g<t=| =Ϩ>>{> =~==R:g9g9g:g:D:g9g9g9g9g:g:g:g9g9g9g:g;J=(=g==n=n=K<(9g9g9g9g9g9g9g9g9g9g9g9g9g:D;?<==3m= :<t;9g9g9g9g:g:C9g9g9g9g9g9g9g:g;C<'Y I>8>*> =<m;;J;!<==]n=Ow>>->#r>Q==;=9g9g:D<==;D===M=w<*:g9g9g9g:t=B= >)p>DU>F|>, >=T<<< =_yN=嘮>: >>>ѳ>Y܊> I=R/>8/>Y>^t>D>~'==/=c=4=?>>zG>>>f>u>>OW== ѳ;3m:D{>"> ?e=0=Z_(;!:g9g9g:D='Y=5>->T?>\i>F7>&==F==C=n>#r>>>6>ƙ>̙>W=嘮=4;?;<=j=%> TP>>-'=p=d>2>@Y>-> =~=?/d>td>>>qD>>C(.=*= :;;nV>O>=嘮==>'> ==yN=t=<)p>z>>Y>a&>d=<=:D:t;i<=k=j==yN=2=?/;!9g9g9g:D<=~2=2=/=t=,s>']>!:K>@=<*:t9g9g:g;<='Y=rܫ=t!=%O6-'>>x=5=*z >%>.<>%> I=o(>%>->"#>{y=O6<t:D:D;;!;?:D9g9g9g;3m</2b>M>==qp;J:g:C:D;3m:t:g9g9g9g9g:g;g;;:D9g9g:D > ?e==*zw> =&= :=g;T?9g9g:D'I>B">C(.>)d!==T<<=g=qp=嘮>*>cψ>rJ>t!>?C>{=`>Pl*>nq>r\>Y>%=Ѳ=R5Q=;D=| =d>+4>@>R>C>>>H=07=DU<(;<==>>f>~'=T=g%>`>{>+>u(o>AV>==T=?>%?>Z_(>̙> >q>>H>Z>İ=<_(<==*=> >+4>>>3ټ>GM=%=(^;n:g:g;?=a>&>Y<> >f>u[>HBT>= =R=?>>gs>>>m> >җG>W>&= E= :<*=C=s>-'>7>Jg>C(.>%=d=w<'Y:g9g:D==5>6l>c >p>`=:>4>==a=T=O>Jg>ݏ>Ӝ>>8>s>x>M=O6=c )>-7>@>;> 5=:=u[<:g9g9g;t!={>޵>+n>>>1 Z>=嘮=*z<= =>">td>9>T>>>T?=?=XTd>>>{y=OW=&Tq;dt9g9g9g;!=p5=E>\>g==D=c;?;3m<= > TP>L>u[>r\>@>{=| <;;n;!<=Q0===E==J {<'Y9g9g:g</=&Tq=R==}=R;?:g9g9gi;>>=p=<:g:g:D;dt:t:g9g9g:D >"#>-[>%> )=<5Q:t:D;;i;n:g9g9g:D )>#r>,s>"> =y >>d=={>==?=g<;?<'Yİ>%>as>޵=51=*i\;?9g9g:<=K==D=R=(;t!9g9g<'Y=,>>1L>N>P*>3ټ> I=/===DU=>d>K>66>> >Zv>x==;t!:D<'Y=;D=?=> ?e==~= 5;dt9g9g:g"?>\(O>zG>~>g$>1F=J]=R=t!=Y>>I@>E>v>Σ>&>zS>fL>=R>$>1L>*>d=?=g;3m:g:D<t=>-[>m…>>>>Rv>=~=5=ȃ>>u(o>L>M>m> >ؖ>+>*=n=C= =qp=܊>*>C(.>V>O%>.<>V= !{>g >>x>|>XT>`=ҷ==U>GM> >>??>hW>>@Y=={=?/=ѳ=>'I>Q0>cL>]u>@Y>O=y <:t:g:D=3m>>Ci}>qT>~W>o>F7>s=̘=I=>>a&><>G>P>t4>>>1 Z==rܫ=J {==yN>q$>F7>Y<>UE>7>(=nd>;?>M>C(.>%>{=̙=(^=0=?>k>> E>Σ>1]>n>s>w=t=-y =t=F=>޵>%>7l >22>as=07=| <;D:g9g9g9g<\i=x=yn>'>'>=dB=<~&>f>?e>>`~>== :>%?=i=d > =_==< =;3m;#D;3m;n{y>Q==R5Q<9g9g:g:g:C9g9g:Dw>GM>'=07=R<ѳ:g9g:g:D:D9g9g:Dw>B>d=嘮= <=:g:g:g:D:g9g9g:g;J<=c=!:K= <t;?:D:D;<=a=/=!>=[=?=7X;:C9g9g:g9g9g9g9g:;!<= > ==<;;?~'> v_>==~G= :;n9g9g:g%>@>@>'I==<m==M+=>'>D>u(o>>|M >J {>=n=g;:D;!='Y==>k=G=:k=)d!;n9g9g:g<ѳ=?>u>KS>kv>nq>V>$̙==| =i=n>/>B">:*>>Y>u>>Rv==g<_<ѳ=(=>{> >.~G>)d!>d=/=c;:C:D/>\(O>~>g>q!>@>v>==t=ȃ>>f\>> >>j> >)3>==]n=(^=}=T>>@j>T?>M+>->{=<=:D:g;=%?>-'>Sx>z3>g>u(o>F>===>-'>l{>=>>> >[3>V>.~G=0==qp=/=_H>'I>P*>a&>\i>?/>i;=2<_;3m:g:g=g=a>/B3>^t>m…>_>951>Y== ==Z>L>>5Q>P>8>ƙ>(>']=ʎ=R={==>>D>XT>T?>7X>w=>*( >?C>4> %=[== :==x>d>q!>>>>>a&> =5=_yN=R5Q=u[=>>%>6%>2>as=:=> =Z=2=!:K< =;n I>M+>y>y>Q0>-'= =?/=<= =B=D=L>/>==<_:D9g:C<;D=3m==Tq== 5<:g9g9g<'Y=K=n>>/=9=t=t<< =;!;J<'Yk=!=Y=i<ѳ:g9g9g9g;dt<=*i\=L= 5<:g9g9g;?==̹=n> => %>> ==3m#r>Es>Sx>BdB>`=E=a#D>@Y>AV>)p>{== :=== >"#>^t>>+>'>k5r>M=51=3m> I>a>=O=x<:9g:C;=^t= >->Q0>WOw>@j>B= {=s=Z_(=O6>V>: >@>^>~>X>>M+=T==: =t=R5Q=>>%>5 E>/B3>İ=T=XT<#D:g:g:g= =E>#r>Jg>V>C(.>=a=:*=e=5=[>8/>>>1]>ƙ>>g$> =d!=x =g$==%>>1>C>@>%==<:D9g9g;?=>>+4>=̹>/B3>s==,=0=qp=>ٛ>t>@>>>@>Y>/=̙=~2={===ȃ>Y>*>>OW>951> 5=!=<ѳ:D9g9g9g<t=Tq>{>>-'= =51=8+-H>y>S >>ui>*===[db=VJ<=qp=%`=t>>q$>> ===;D;J:g9g9g:g>6%><~> v_=07===0= =R==-y = =Y=&===Z_(<}:g9g9g;dt<=1=Z_(=0<;g9g9g9g:D<*=T=T===p5=R<ѳ >^>Q=T=Q0 I> I==?=c;!ٛ>;?>D>2ԁ>w=='Y<ѳ<'Y;?;i<*=rܫ=X=:=@==;J:g9g9g:gi;>>+==N f<t<=VJ<=>{y>1 Z>^t>u[>i>2ԁ=p=T==g<*<=_yN=*=!> =>=T=<_;n:g9g9g;?=XT=Ϩ>> >d>*z=ʎ=t!f>/>gs>>~>KR> )==UE=: =-y =I@=ѳ=:>{y>>===/<:D9g9g9g<ѳ==E=~=07=OW=p5<*a>Jg>nE">i>>>=D=_yN=M+=M+=c9=ѳ=ʎ>{>d>w==O6=;!:D9g:g-'>.~G>1 Z>==g=C=0=22=J {=h_== f=:=嘮==h_= >=07=D=< Q>T=U=]n<<<_<_<= :=XT===n==*<ѳ;t;T?:g9g:g;t!v>> =[=i}=x < ===B==N=-y =^t=R=51=>>i;>V= {= = x<(<ѳ<=g=m…==5Q=̘=~G= =L=>v>=Z=ȃ=O=t<<5Q=c=8=ѳ= {=t====a=N< f<*=c=1=Z_(=o=~2=| =f=C=3m=?/=L=\i=s=T=x==@=:= f=/=,=c<<*=c=?/=== f=Σ==x=J {<ܫ<Q><==i\=,;J;R>~'>=!==Z_(8>-[> v_==j<ѳ<T>&>>>5a>=ӽ)=g$'I>;?>, >v>=s<ܫ >9>Q>H>"#=a=]n<;J;iGM>)p>q$=yn==c<<;DR>0>IG>@Y>`==(^*z===VJ<= :>)p> 5=2=<;!;?<޵=?==)d!<=v>>,=ʎ=u[<*>a> %>==T=a<*/>8qD>3W>B=Эy=]n<_<==rܫ=_> >22>O%>NR>4>~'==i;= :<>?C>bM>dR%>@>w==R5Q= :=C==…>->h%>+>>a&>, >g=2=g$='Y='Y=d>>%>->V===0<5Q^>C(.>m…>pI>N>&=d===a=| =>{>@>޵>+>>x>>>^=@===h_==>$̙>P*>YY>>>=@==0==;D=g=m=~>'I>M+>Rv>3ټ>(=ʎ==T=x==t4>/>|M >2b>ѳ>l:>951>d=d==T==?>, >Y<>dR%>HBT>= =:K=XT='Y='Y=a===O>i;>~'>/=%===rܫ=g=5=ȃ><>@>eW`>]n>@> >=n= =h_=*z=ʎ>>>>HBT>1>=Ow=t=;D=c<=c=8=c9===M===t!=XT=B=-y =3m=XT=T==07>(>>d>޵=:=x=3m= :=22===Ow> >u>d=Z=2=]n<*<};<;D<===R5Q<;n:D9g:g;3m;dt;dt;g;3m;;;;n;3m:g:g:g:g;n >a>=2=n=:*= :<'Y:D:g:g:::g9g9g<'Y=x =>!{>/B3>!:K=!=u[<>Dn>^t>W>2ԁ>R= Z=?/<;?;?ٛ>M+>_>Q0>"#=ȃ=)d!<*T>@>y>?e>/>cL>!7= {=C'I>]n>q>cL>3ټ=:=p5= =g=x> TP>W>>u>c>u[>-=+=0<<ѳ<ܫ=*i\=I@=3m=g>O%>eW`>Y>+4=t=T=*=R=R>v>>Q0>P\>i;>d>l:>!7==%>=J>0 >d=={=)d!=(=T=:>0>h%>~2>r\>C>޵=p5<t< =<;D ?e>g=Эy==^t=(^= :=qp=>^>/>@>1 Z>w=n=4>F|>>x? eG>>U>m>S{>L=m=yN> =>Q0>>&>>g>w> v_===/==i\=~h> =>@j>o>u(o>Rv>=Z=/=:K=2=i>&>}>l>[3>s>V>u[>@~>-'===:>2>">q$>>>a&>&=:=a=x =+n=f=R=n= > I>>Q=+=:K=t!=VJ<=rܫ=t=0>&>`~>E>>a&>?C>ٛ=O==Y=Tq>{>=J>oJ]>~>c >.<>{=~G=J {=c<<<==T?={=g=| =R5Q=*<w>>:>R=T=%`=J {= :=,s==07>~'> >>{= =F<;9g:D;;J >-'>T=<_;!;;<<=_yN=Tq=:k=< 9g9g9g:g;;;t!:D9g9g >3>AV>*i\=*=;dt:D; ==G=<3m9g9g9g:g;3m;;:D9g9g:g<ѳ=?>>C(.>T?>=J>/=VJ<;:g;<=3m=n> I>a>(= {< 9g9g9g9g:g::D:g9g9g9g<=T>>->?C>)d!=[=a;i:C;>g=<5Q9g9g9g9g9g9g9g9g9g:t== E>{>>{=?=,s;3m9g:g;T=yN=== >4\Y>0>GM=嘮=?=: {y>0>AV>1L> I== ::k>s>>\>_7> =ӽ)=rܫ<*, >a&>u(o>ga>7l =5=x ==&Tq= E>L>r\>W>$>>Q>L>=,=<_(=c=9=R5Q=8=g<;D:D9g9g:D= ==>@~>u(o>I>z3>O%>==C=UE=ʎ>.>>)T>>>]>^t> ?e=m==g=1=s= =u[=,s2Q>k^>rJ>u[>J> =n=VJ<=a=ȃ>+4>>5>>g>m>S{=G=R5Q<<5Q=+n=x =R={=4<;n9g9g:D<=>-'>F7>^t>UE>, ==?=XT=Z_(=/>B>c9>8>w>>vn>)p= E=2b>'I>!7> I=̘=D=M+=L=5=>->^b>qp>ba>0 =_=J {<tk>{=O==p5=DU=Q0=I=0> I>>&>a==g=<tk> ?e=yn==/= :>>==ʎ=%?=<<\i;?<<=]n=/==C<;3m9g:gİ>)p>$̙> ==g=J {=f==51=>i;>+4>@~>>OW>)d!>c=d=R='Y=,<=R==dB=d==nv=;9g9g;i= :=ʎ>)d!>gs>>E>Y<>=n===51>V>+-H>`>>V>!k>~>@>-'=:=^=h_=YY=*=>%`>%>~'= =f<9g:C=R=:*>^>k5r>r>~>~>>i>-'=̘=OW=07>%>j#>>>P>>>>;>== E=n>N>W>|>>k5r>'I=s=(<'Y'I>(>ȤJ>g>lK>I>u>?C>/=*> =>@>)3>G?\?/$?-ʯ?*z>L>k5r>(> )=d>>^t>>,>51>,>u[>~'==Q0=?/==:>->> >>[>֬3>P|>Pl*>-'=m>^>D>W>?1 Z?<0?: p?&>,">+>@Y>`>d>2ԁ>H>c>uY>>;>F>BdB=:====_H>>>>Y>N1>_>>@~>=n>/>/B3>>g?/x?:?7 ?Q>9%>k>D>L>-'>=J>d>)t>ψ>>>>XT> =E=ȃ==i=m>7l >Z>O6>9>>S:>~'=L=@=t>c>^t>`N? T?*W? >X>q$>pI>6>>>$J>y>>> >L>>KR> =Σ=/=a===嘮>M>>>@>%>4=̘=== :=̘>-'>n>>s>Ê>>u[>AV>B=?==!>4>E>̙><>k>qp>%O6==5=>+>M>S)>Dn>(> =:=M={=^= >$̙>S:>a&>L>$̙=d== 5>>=T==;t:g9g:g:g:D;;i;J;?;:D:g9g9g:C;t!w>B> ?e=n=^t<<=)d!>\>k5r>Q>GM=D< =>i;>g=n">^t>o>m>>H=yN=;!<ѳ='Y=> >,2>: >*>=\i9g9g9g:D;<(GM>m…>c>~>d>Y<==;?<ѳ=(^=51>>;>Jg><~>-'=:D9g:C:D;g;i<(;i;3m:g9g9g;g=;D>>T?>I>d>>C(.=t= :;?R>+n>-> I=*z:D9g9g9g:g:g:D:D:g9g9g:g&>IG>Z>Dn>s=< f:D;<ѳ= := E>*z>-'> =ȃ=9g9g9g9g9g9g9g9g9g;3m=(=o=!>==OW=;D;9g:C;g<<*=p5=M==R:D9g9g:C;D<*=J {=u[=\i=;?9g9g:g:D;3m;;g:g9g9g9g9g9g9g9g9g:D;< =;:g9g9g9g9g:g9g9g9g9g:g:g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g:g;g;i;?;3m:g9g9g9g9g9g9g9g9g9g:g:g:g9g9g:g;<<*<5Q<=;:D:g9g9g:g;3m;i<3m<t<*<<<:g9g9g:D$J>;?>4>&=嘮=t=&Tq']>7l >)">g==<C(.>~>d>:*>i>'Y=J<=g$<*<(<=g= <ܫ<;9g9g:D<5Q=>%>Y>l{>^t>/=?=/=*=-y =~>'Y>>>-H>>>XT>==c=R=+n=]n=p5=Q0= ::k>o >>v->KS>w=~G=T?=t!=܊>@>>s>U>> >nq>===t=VJ<==^=,=: <;g9g9g;3m==;>22>k5r> >u >KS>d==a=m=i>=̹> >f>>=>V>d> =s<ܫ==L===g=?/<;9g9g:>KԢ>b>Y܊>2Q>==XT=p5=>!{>ui>>>>I>::k=%=%`<<==XT=t!=_yN=*<t;9g:gq$>2Q>->~'===A=K=O6>*z>;>nE">>r\>@>Q=rܫ<<;D{>-'>O=~= E=qp=-y =;D=:*=E>w>%>.<>k=?=<<ѳ<;D;i;?</<t<_<<g==͝=c=<~='Y=A=T= E=L>>=:= E=h_>v>=5=j=,=,s=,s=i=ѳ=2=&>*z>(> =07=*=m…=<<%>?/>7*>İ=Ow=ѳ=Q0=f=M=>T>L>>OW>P*>H>+4> =ʎ==: = 5==C==_(==i==,s;i9g;==J<>=J>">>a>z>)"==M=*=Ϩ>>>C(.> >*>&>2>m>P*>=Ow===R=n>d>/>951>$==ٛ>I>N>֋>Ow>>>%O6=?=;> >?C>E>L>S?!k?,>>%`>F|>=07=ʎ=>'I>qp>>S >">;D=a=3m<<t==T>?C>>X?ll?>>>Y܊>~'>>>]'>k>?0_?[3>66>3>-'> ?e>&">w>O6>ê>R>>>(=T==T=a>{>HBT>>%? D? I>S>W>lJ>!7>d> >cL>s??=Zo?Gc?F7?56>>>2b>P*>%>f>N>XD>7>q>NQ>><>_7>4=5Q=+=>R>.~G>a>ђ >i>t4>z>>W)>&> >x>M>3? #?;p?F?E"P?3>>-'>WOw>*>!{>W)>|>*>?>>e>u[>Q==Z==>w>W)>f>>OW>̙>qp>"#>T=yN=t4>!7>q>Y?+9?6%?3h?>f>@>HBT>>>>>x>>L>>>>Q>gs>GM=!=07=_==Ϩ>>>1 Z>^2>a>@Y>-'=a=Tq=d==p>.~G>E>˓S>->>]>` >V>%O6>޵=07>d>T?>]>X>>>` >;?>{==/=C=Z_(=w==y-===d=Y=qp===<~=~'=嘮> v_>]'> >z3>a>?C>GM=07=m=t=51> ?e>@Y>td>">l>;?> I=:k=h_=0;<<<_=3m=rܫ=w=Q0= :<<;?<;D< =p5= =07> I>d>=yN=y =| =0==C=s=07>>f>~'===B><~>IG>22>{y=?=t<<=R=f=y =E== E=(^;g9g9g:D;?i;>_yN>?e>^>@>I@==K޵>>'I>=;= 9g9g;dt<'Y<t<*<_;?>` >>i\>*>{G>={<=<_=qp=~>!{>F>T?>B">a=/:9g;3m<<ѳ< f<_HBT>c>>d>O6>q>%=/<+4>VJ<>b>S)>%=;?9g:g;< =.~G>>KB> >w>u(o>~'=w>C>Sx>C(.>Q=y ;9g:g:D:t;dt;t!:t:g9g9g9g;n=<~= >G>z3>k>t!>7=a= 5;?</<*=qp=嘮>GM>%>L=*=;D:g9g9g9g9g9g9g9g9g9g:ٛ>'I>=*=| <'Y9g:g;?<==1=D=n==C;9g9g9g:g;g^> >as>=?=\i< f;J;g;3m;;t;n:D9g9g9g;t=1=> =>~'> =%={<m<=<t=<~=E>-y >h%>>x>Q0>= E=)d!< >3>F|>;?>~'==p5=R=c=5>>nq>]>:K>F>H>C(.=_H=f< <= 5=M+=[db=: 8>N>ba>WOw>-== %=0=L=>0>R>̙>>R>7>\>v>=| = ==I@={=g=p5=<}:D9g9g:t<=n>f>N f>cL>Y<>1>޵=I=;D=Z_(=@>.<>I>A>y >Y>CY>U=m=g$< ==;D=w==k=<}:9g9g:D>5a>L>C>$̙=~=%`=(^=3m=>İ>e>>C>S >w>+=s= 5GM>)d!>%>d=:=| == =g=>*>\(O>n>_>.<=嘮=h_^><=?==3m>f>w==_yN<,== Z=YYk>4>.<>=s=p5===u[=~G=L>-'>->@>8qD>==?=XT=(^=(^=&Tq=Q0=?=*= =Ϩ>=/= :;9g:D.~G>x>>c>qp>=s===dB> >: >w2> %><>i\>Z>@>f=51===g=%?=OW>4>$̙>+4>M=?=Td>{G>B3>΂\>ë>>66>f==d>k>4\Y>66>>E"?~'?,>c>V>;?>/=0=dB=>>_7>>>qp>-=d=;D0>>֋>yn>>ۅ >I>Sx>-'>4>&>W)>>臸?/)?;?:J?+9>ؖ>w>(> )>>%`>gs>}>>>>>q$=J=R==a=>=̹>`->D??k>澑>>fL>>d>*>]u>Cz??:X?F(?EA?5>>>Dn>f>u>AV>>>>>x>>Q>k=E=d>>{>&Tq>> {>> >0>F>P*>>R>'>IG>ݏ??9v?EA?Dn?3w>8>8>N f>"#>ٛ>KԢ>>ď_>>G>a>>i>B===~=t4>4>IG>>(>l>KB>i>f=G=ǟ=:>!:K>>ՆP?)"?4J?2?>>~2>@>>d>3>>F>ٻ>>U>I>\(O>s=G=Z=s==@=>(>S:>XT>7>^=E=?===!>2ԁ>E>!>s>>&>>N>q$==>Y>HBT>t> >>9>">0=2=ʎ=i}=M+=_yN=u[=ѳ=J==07===p5==c=R5Q= %=5>+n>i*>Ȅ>66>a&>9v>-'=yN=D=a=~>/>4 >g$>u[>`>1 Z>/=51=t!=C;<'Y<(<_=0=qp=x =XT=&Tq<_<ѳ޵>7>~'> ==T=/=Z_(=t==L=#=07>d>>===K<;n9g:g:D;{=*==Q0q$>L>Y܊>C(.>2b==&Tq<t>nq>c>W>Q>WOw>f=p5/>>&">~'=ӽ)=:g9g:DHBT>m>>>$>@>#r=^<t"#>EA>Py>?C>=d;g9g:g<<=g== V>W>=>l>H>#>-[=<<ܫ==t4>, >T?>^t>LW?>q$=2;n9g;?>Q>r>>>z3>`=w>@j>N f>>OW>-'=t;#D9g:g;#D;n;;n;dt:D:g9g9g:<>UP>g>?e>y>=̹=a= ;<<=g=$>~'>>-'=E= ::g9g9g9g9g9g9g9g9g9g:g;3m<'Y<=>{>"#>-y >ٛ=嘮=e;?9g:g;<t=?/=5==:K=+n;n9g9g:g;g;?<'Y<=I@=a=?=:*= 5;J9g9g:C:D;?f>.~G>F|>@Y>ٛ==_yN<<;J<;D<ѳ<>-'><=yN=i;=*;?>u(o>>w>Xc>= Z=t<<<_== :=gٛ>*>"#> ==a<===>w>Z>>a>O>u[>-y =%=J {<_<==: =DU=&Tqq$>.~G>(>^=ʎ=rܫ=g==>w>W>:*>s>Y>q>'I=@=F<_-'>"#>8>v>==VJ<4>l:>>u >F|> ==<<< f=g=<_(^> =*=5= >+><0>+4>v>=y =><5Q2b>d===/>-'>^=07=5=C=R====(^=x =D= =?=h_<:t9g9g:g=<~> )>F|>l>i>;?=[=/=,s='Y==*>-'>Dn>~>CY>d>`>~'==rܫ=J {=XT=_yN=x=*>> ==51=0;?:C9g<;D<= {>C(.>w>>i\>E>KR=G==̙=*>2b>T?>b>^>>V>>x>==t==Tq=J]>'I>Q0>WOw>;?>=D=4>u[>]>FH>o>>/>'I==a>>, >\>L?Y?.,?,?P\>o>LW?> TP==ʎ=>0>u[>S >>4>DU>T=t=\i=L=/=OW>d>rJ>X>>db>>>;?> )=>>2ԁ>>H?,?8`?6?'>&>n>"#>=G>`>_7>b>>>^> >$̙=====:>{>[>>¥>ŵA>M> >(>{= =O>%O6>/>F?*?5Ê?4?L>>qp>+4> >g>!7>k5r>k>OW>@>>>9v>=J<=E=Ϩ>= {=͝>u>f\>>>|M >::k>%?=̘==> >Y<>>=?3?b>>ٛ>YY>!{>,=>>S{>m><>>Y>66>.<==0=͝=/===51>> >'I>-'= = Z=T=VJ<==>ٛ>u[>>>qD> :>h%>-[>=ʎ==魚> 5>^2>?e>>I>M+>=Σ===R==#D=C==2=:k=D=,=J {=c=g=(^=s=> :>M+>i>b>Ci}>8=t4=y =rܫ=qp==i>-'>2>@>/B3>=T==-y =:D;;!<}<=-y =C=1=<_Y> ==51=h_= ѳ<5Qg==%=a=< =:D9g:g:g;#D;J<`~>8qD>DU>1 Z> O=o=(>V>>Q>{>@=_H=Q0 >^=yn= %<:g9g;g<====*=/B3>g>>ݏ>]>l:>-'=w<}<5Q=p5=̘>d>)p>/B3>=L='Y:g9g:t?C>>A>Y>>u[>B=h_<(<*=x =>a>3ټ>?C>*>V=VJ<:g:g;i<)d!>y>>|>>Y<>{=;t!<ѳ=J {=~> =>%O6>, > %==!:K9g9g:g;;J;?;g:D9g9g9g:g;?<={>>>>k5r>u(o>Y>==07=i;>~'>g=<:g9g:g;T?!7>6%>.<>=dB=<~s>AV>XO>P*>(5=:= =N-'>@>V>KS>$̙=嘮==q$>.<>%O6>= E=_yN= <<ѳ<}{>`><==T=g>4\Y>/B3>d==6<5Q;>f>eW`>9= =d=P*=;D=x =OW> I>Ci}> >q$>>y>!:K=U=C= :=)d!=C=O=E>v>>w===(^</;3m:<(<=m…>2b>kv>> >u[>(=yN=n=^=Tq=>+>/>>܊E>>>h%>d=={=x ==魚>8>@Y>DU>,2>+=5=&Tq<*<t=C=1=>~'>r\>u>rj>g>;?>T=n=#==>=̹>u>E?]?;>>:*>*( =*==?= f>~'>F|>q>x>\i>%=a=^=XT=I@=g=t!=}=t4>I@>V>/>fL>%=07=2=x==E>.~G>>+>8 >>>">*z>/= =dB= = >>UE> >k>nE">4\Y>Q=~G== =x =_yN=K=>>+4>7l >/=T==T=C=R5Q=^>-'>n>̙>s>3>>c > v_=:===Ϩ>>-'>@>i>u(o>Z>)p=T=^=T=x == ѳ== 5===:=:k==h_=t*>nE">>>a&>+4>޵= =w=T==>>0>>OW>)p> )==| =-y =c;;J<<=g=C=a=Z_(=3m=(<GM>.<>, >GM=_H=?=-y <==\i=M=Ϩ>=>f=d=y-== :>V>d=yN=Tk>J {>W>C(.>B==<\i<=g=g$=n=ȃ=== :<(:C9g:t޵>EA>u[>66>k5r>/B3=~=(^<;D<=,s=t=J<>T>{=Ow=x <;D9g9g:Dw>S)>>>r>2Q=E=g;?<ѳ=: =#=> ?e> =?=D<;D9g:C;?V>>OW>h_>qp>U>=5<;D:D<====T=G=%=f;?9g9g:g;t!;?;:D9g9g9g:D<(<=R5Q=y->d>,2>/B3>GM=%=:D9g:t<ѳ=)d!=,=I=n=<_(:D9g9g9g9g9g9g9g;/> v_>== d>==/=M+= ѳ<=c=L=M= >@Y>nE">m…>?/>4==,<<==qp==T= ===;!;g:D;:t;g='Y=E>>B>{==| =!:K<==: =y >~'>a>D>#>a&>k==XT=R==T?= Z=…> I>w= =dB=a=a=O6=h_=c<>\>>>^t> =yN=T=/=0=T=>{>-'>B> =?==R<ѳg>;>`=:>^>>OW>'=ȃ=a= =+n={==Z> ><==n=t!<(>%>']>-'==D={>(>޵=ʎ=w<ٛ>%>B=*=:*<*</<3m< f=: =g==d=O%>">*>=a=qp<(;<R-'>u>{==c;?:D;g<t=-y =x ===)d!<;D9g9g:g:D:D9g9g9g:D;?k=*=I=N<;n;!<== =n==/=='Y/=?=n=%O6<;D;JQ== =3m;dt9g;n<_=?/=XT=0{=07=D<5Q9g9g:g;g;?;:g9g9g:g:t:t:g9g:g==<9g9g:g;C;m;t!:g9g9g9g:g:g9g9g9g:D >f>>=s 5>@Y>0 >= %<_(:9g9g:D>+>->GM=:=3mq$>k^>>g>C==Z_(;!9g9g; =>%>+>==^t<t<}<=!:K=>22>aS>>-'>bM> D=*z >>R=U=XT<t<'Y 5>m…>j>/>Jg=[=p5<9g:g;D<=Q0=Tq=U==w<ѳ:C9g9g9g9g;!=DU==:=== 5#D>Dn>;?> )==:t9g9g:t<<5Q=N f= =x =c;?9g9g9g9g:g;J= ѳ=_yN=p5=,s<ѳ;g:g9g:<ѳ=?/== {=:k=T=g;9g9g:g:D;d>GM>d= =p5;i:C;g;J<'Y;J:9g9g;dt > >)d!>/>{= TP>!{>)">%`= =< =:g;t!<;D<>GM>=E=C:t9g:g;D;J;?;#D:C9g9g9g9g9g:g:D:D:g9g9g;n<=\i==t=T=E=<:g9g9g:C:D:D:D:g:C9g9g9g9g9g9g9g9g9g:D;!<=: ===T=#Dٛ>1F>1>=_(=;D>2Q>Sx>H>ٛ=%=B;J9g9g;=c>@>^b>a&>F|>==(=g= 5=>>Y<>>+>eh>aS>&Tq=~<:t:D =m=/=R:g9g9g9g;?=>GM>R>u(o>y>d>/B3==dt=;D=qp=>/B3>m>>F>K>y >i>{=h_<'Y;?GM>%O6>as==<;D:g9g:g;=w>^>K>rZ>z3>gs>7=2==R5Q=m=%>A>f>΂\>>0>)t>g>^==<<;D=R=>V>!:K>/>)">w= )p>V>a>R>'I=Z==*i\=T?=>+-H>(>~>uY>ؖ>>oJ]>{={<>'I>!:K> =<_:D9g9g9g;3m=M+=5> v_>/B3>&>=̘=_yN<<_(=h_=>S{>u>>Y>:*>+=51=(;i;i >v>=Ow=zG=<_;;3m<ѳ=qp=[>->S:>Jg>ٛ=s=*i\;J:g:D;g<;D=c=*z=y =̙=k<:g9g9g:g<(==T==_yN >V==N f< =:g:D;dt;;g:g9g:g;!<==<;!:g9g9g:g<t=D>/> >+-H>!7>:*=n>4\Y>@>2ԁ>= {=;?<<t<<;J:g9g9g:g</ٛ>6%>@Y>1L>7=n<ܫ;;J<<<ѳ;!:g9g9g9g:C;nw>% >+4> v_>޵=t>>V=n=+n;g9g9g:g;g;dt:t:D:g:g9g9g9g9g:g:g:g9g9g9g;3m>>>f=<m;i;n;?d>!{>%`>=T=(^;n9g9g;t!< f=qp== E==;9g9g< ==R>>>>Y<>Z_(>@>i;==<ܫ= :=R>T>@j>;q>S >8>dR%>Q==,;:g> I=m=/=:D9g9g:g<t=>-y >gs>@>/>td>@Y>T=*z=a==>@>է>>>[>>s_H>^= >']>3>*>=n<:D9g:D;>z>>nv>:*>`~>M=dB=t= >i;>vG>a>,??,>܊E>>3ټ= {=1 >G~h>Y>P*>, =d=M+;?:g:D.>u[>>S >>i>%=n==Y>B>f>@>?"?i>E"><>K==p5=*==p>+-H>UP>g$>^t>>> =='>WOw>>:*>>XO>q$=T=a=D>>nq>v>J]?e?%?>0>>;?=0=[db= 5={=~>!:K>Jg>\>V>4>v>== 5>P*>`>W)>2ԁ>=51=C=R5Q=>+>m>L>>Ow>;>~>c= :=c<=-y =>>'I>::k>2ԁ>&=_(=Q0;?:C9g9g:g< {=J>w> v_>/>w=E=p5<ѳ<;D=*=>*>z>է>'>l:>`=y =RR>g=:=T<:g9g9g:< =a=ʎ=E=51=p5<:9g:Dd>d=L=<_;n:g:g:D; >=ȃ=]n<;D:g:g;#D;3m:D9g9g9g:D޵>q$>)p>!:K> ?e=B>1F>?/>2Q>a= f= :;!<(<<t>22>?C>0>=ȃ=(;?;i<\i<ѳ )>!:K>)p>q$>޵=/<:D:D;<(;J;dt:g9g9g9g9g:g;#D<(<<,> =2==0;9g9g:g:D::D:g:g:g9g9g9g:g;dt;;n:t:g9g9g;g</<=^t=/==#=h_<;g9g9g9g:g;3m;?;i;t!:g9g9g:g;^>!7>!{>w=y-=(^<;D<f>(>>OW>22>B=yN=a<#D9g9g;<===*=/=f7>F>dt>g >KS>M=dB=-y =*=c9=dB>&>`~>O>>f>>.<=O=4<(;t!<ѳ=T=>O>`>==i;J:g9g:t<_=>6%>r\>o>x> >M>Y=Y==51>^>\;>`->Эy>}>>>Z> 5=m=>=̹>LW?>C(.>!:K==%O6;:g;dtC>g>>>>nq>'I==*=;>%>Z> {>?? >E">=>P*=?=*z=J {= %>޵>5a>_>qT>i>F7>=<ѳ:t;g<ѳ= f>;?>>XD>C>'>v->2ԁ==s=i>)p>O>א? ?`??E>~>hg>=I=T=>^>C(.>n>~W>u[>WOw> v_=<m;g:D;=>>dt>>>>hg>-7==2=J>7>g>?0?XD?CY>>>Y==8=,= Z>v>>;?>cL>u >n>Pl*> %=/=g;3m:g:g<ѳ=̘>,2>^t>q>g$>Dn>L=:=x =x =:>@Y>*>0>07>a>=>m>%=s=qp=XT=R=E>V>@>T?>N f>/B3>=<ѳ:g9g9g:g=c=Ow>`>.<>-y >&=_H=ѳ< f<ѳ=C=9>@Y>>>{>4>7l =;=_yN=< ==zG=*>Y>M>GM>{==;#D9g9g;===嘮=p=5Q= O>'I>(>^=n=C<ѳ;?;?;! )>~'>c==<ѳ:D:D;t!;;#D:g9g9g;dt<t=(^=p5=}=a= :<;g;3m<= x=Tq>V>>&>/>*z=<5Q;t!;3m;?;!;:D9g9g;dt<=&Tq=i=| =a=t<ѳ;;޵>>%>>\=? >-'> )==rܫf>İ>>{== :<'Y;!+>$̙>22>*>d=%=K;!9g9g:D<=w====\i<\i9g9g9g:g<=x> >7>U>V>;>d=o== :=j=>&>W>>>>nq>#D=Ϩ>=0<;<>B>d= =rܫ</:g9g:t< f=Y>&>`>>g>nq>;>Q===:k>w>S)>m0>¥>>{>L>{>B=o=(^<_=C=@>>7>H>@> 5=yN=3m;:g;g<=ʎ>0 >t!>d>m>>]n>ٛ=Ϩ>==T> v_>~W>>,? ?\>>>@==ѳ=h_=?>{>2>\>n>g >Dn>=?']>n>>> >g$>'I=:=~=E> >P\>ȤJ>?"?>.>>Xc>===n>^>@j>k5r>z3>u >V> 5==R;:g:=A> >Pl*>}>> >YY>"?=07==> >nq>;>E"?e?>>>?>KS==n==j> =>9>a&>s>m…>NR>==R;t!:C9g< ==i\>as>L>`~>XT>::k>=U=`~=\i=dB>*>w>V>ۅ >>'>4> v_=ȃ==g=s=a>ٛ>@Y>Rv>L>.<>=<:D9g9g:g<=>d>#>$J>-'=9=}*>~2>g>a>}>.~G=t=T=-y =(^=J {=:*=E>Y>>B>V== :;t!9g9g;g==M=Эy=yN=n=T<:t9g:g>k> > =n=`~V=Z=51=22;i:g9g:C:g:g9g9g:D==/< ;g9g9g9g9g9g9g9g9g9g:g;3m Q>-'> =a=a~'>+-H>+n>~'=T=dtf>/>\(O>oJ]>c >4 >g=>3ټ>Td>Xc>@Y>-'=:k=J {==̹=t=p>->u(o>}>7>>>>=:=}=<= ==> %>*>#D> = =;3m:C:g<=g> >C(.>i>q!>\i>+4=5===/> >KS>XD>zt>א>җG> Z>{G><==w=Q0==J<>&>?C>P*>HBT>)"=G=| =J>g$>s>a&>6%>R=2=:*=>/>P*>KB>a>;>hW>">ѳ>%=:=t=x=~G=>&>M+>^t>Xc>::k> =<;3m:g:gk>KS>\>Q0>-7>=~G=qp==>1>(>>O>F>f>f>=Σ= %=t==> v_>C>W)>Py>1> ?e=%`<:t9g9g:g== >k>0 >->=_==c==>{>U>W><>>S >T?>R=o=g=g= :=y-> >%>4 >/B3>GM==g$޵>=:=n=<'Y;<ѳ=T=>;?>g$>k5r>D>d==qp=/=-y =J {=zG= =:>/>{=5Q=g<:D9g9g:CV=yN==CB> 5>:=?=t=g;m:D:g:C;?=c==/==-y <;D:C9g9g:g;= :=>>~'>>%?=~=6T>)p>T?>g$>Y<>+n===,<ѳ<#D> v_>%>x=9= <=g=w=>'>H>>c>d>c9>&=T=f='Y=c=(^=D=T>>&>=== ѳ;i:D:g9g>%>GM=!==#D=c=u[=>d>M> >F>w>~W>+4====h_=f=,==> :>'I>!7><==;D*z>>^=07=:K=%O6<ܫ=3m=t=d>/>vn>c>>oJ]>&==={=,=i;= E=p>>!:K>%`>v>=̹=1{>6>_>a&>@Y><= E={=_yN=p5===y-=~> >==:*i;>a>=Y=u[=*i\== 5=0=J {=qp= %==n={<;?:C9g9g:D<;Dg=:= Z=C<;?;;g:D;?<=0=a=K=g<'Y;g:D:g:g:g<;D=*i\==T=n=D=T?<;;<ܫ=a=o=?>>>2b==x=<x>%> 5>/==F== :==0=]n=?e== f===?/f>>İ>{==T?=(^=;D=N f=h_=T=nv==== :=0<;J;dt:g9g:g:D;n<==*i\=޵>d>g=2<;J;n;T=yn==zG=R<=<g;?;i<<;;g:C9g9g:g;t!==/>>> =~h="?<ѳw>=0=x <_==~G=<< ?e>T=OW=C<<;D )===C<<'Y;?;m<==: ==x =0=g =>8> >w=ʎ=w=cGM>/>1L>k= =/=a=(<>$J>)d!>==M=VJ<=)d!=3m=p5=Tq=>%O6>A>AV>'I>===?/=8=VJ<==ʎ>/>>=t=:K=f=d>~'>v>=0==x =^t=g$==y =:>&>3W>2Q>k>@==D=]n=f===嘮>>ٛ>=!=51=T=(^== =C={= := Z=ȃ=Ϩ>=/== =w=dt=`~=x =d==:> >d>===T=K=Z_(=,=O6=d>>> )=07==qp=c\>T=Ow=y =x =;:D9g:g:g:g9g9g9g:g>,2>L=07=Z_(V>"#>7>1F>GM=a=i;=>Dn>WOw>F|>V= E=g<f>N>g$>_7>9>== :<k>Rv>e>WOw>(=d=9< <=5=T>+4>d>z3>r\>F|>=s=cw>@Y>U>H>k=ȃ=\i= :%>\>td>h%>;D>V=>)d!> >=?=f=,s==?/=~>>=J>Pl*>C(.>=y-=(^2b>>-'== )>'> )== E=a=>%>!7> TP==P*==R=*i\=h_==G>>;>@>.~G><=:==0<_<<ѳ=3m=%`=51==h_<;!:g:D>B>h%>k5r>F|>i;=2=C==N f==!>->gs>>I>h%>5 E>w==*z=I@=-y ={=J<>>>^=0=qp<ܫ<'Y;?= :==*>)d!>nq>>CY>{G>=J===g$=m=>>`>7>n>> >^>s=O====>,s>]u>i>L>GM==XT=g.<>y>b>>>M+>^===%`=Ow>#D>|Z><>;p>ƙ>>w>->==n=E>&>_7>>> >@~>T=5=L=*=w== >ٛ>\(O>k>{y>r\>::k>=s=D=o=J<>`>u[><>̹5>¥>f>qp>.<> d== f=魚>$>l>O>6V>o>P*>w=~=x =L=Z_(=s=~=>>AV>KR>2Q>d=܊== :==T>T>@Y>>>>66>N f> v_>T= f==:>-'>Rv>|>=>x>@> =X=e=0==C=T=:K=n==d=yN=?==%?=m…=h_= =y =d>(>N>M>6>k>%?=ȃ===5=&>M>B">R=>@>=L=x=c/>>w==5= :> =:=Y<;dt::t;D<=/=:K==n=22;9g9g:g;g;g:g9g9g;dt=*i\=ʎ>w>B>v>= E=:D:C:t;i<t=_yN=n==:=T><== Z=c:9g:g;mY>~'>v>=51= 5>%>9>3ټ>ٛ=O==R5Q<ѳ;t!:D:t;g;t!:D9g9g9g:g< f= >ٛ>J {>Z>IG>ٛ= E=(<==^>,>::k>n>@> >Z>=={AV>u[>I>y>K>/=x =t=)d!=>>k^>-'>>>k>C(.==g=RV>Q0>g>>>_7>==Q0=M+=>*>,>>>O6>>S:>@=m= ѳ==3m=t!=g=w=3m<;9g9g:D<_(=>@j>x>H>66>W)>-'==qp=b=n>%>{m>}>>i>?e>C=嘮=Z_(<=g=C====,=LGM>P*>h%>^t>2ԁ>T=y =m=h_=>-'>Z>o>S >>k^>=n=c+>%><=Ϩ>=5=T=qp=O6=>*( >WOw>i>Y<>+n= =R5Q< f<<<*=c=(^=(^=({>V=yN=~G=:*=| ={= %=d> I>>%>=p=*=*i\<_<=07==n=x=x =zG=T==~=> >w>/= ==VJ<=c<5Q<\i;;3m<<<>-'>> Q=9==?/=,<};;dt<}= :=VJ<=R5Q=-'>#r> v_> =Ϩ>==k=x ==Y=ʎ>v>>%O6><~>@Y>.<><=*==4=,<ѳ<=J {=?=D=y =| <m;=9g9gk>UE>w>w>Qqe>~'=n===D=>>G>z>TP> >u[>C(.>GM=9==n=L==a>-'>>d=5Q=]n >UE>]>)>d>M>a&>===ȃ>O>N f>t>(>Эy>Σ>]>I>>>d=a=?=_> I>HBT>w>>ba>%=n=k>">qD>O>2>OW>(>=J>T=Ϩ>=?>'I>z3> >1?"p?0x>>d!>i>)p>=Z>>P*>>Ѝ>>>s>2b==,s=== >%>>V>M>6>L>V>Pl*>^=>>.~G>o>א?)?4l?2b7?>>aS>@~>>'>+-H>Y>[>P>>@>>@=yN=t===07>GM>qp>y>>Эy>l>>@> TP=:=>"#>g>uY?)"?3?1? >;>>B> v_>7>2>>X>2>lK>)>>Xc>==O6=m=*=2>.<>Y>>>j>W)>&=07= f=;> >N f><>M ?Ȥ?>E>>k^>2Q>x> >q$>q!>>;p>z>r>|>L>{===u[==J=>>::k>@j>+>=O=y =t=D=ʎ>w>`=:>ݏ>>>>n>;D>=d=E=[>/B3>66>>>f>t>%=O=,=J { >AV>I@>=>!{> =0=s= =a=L>%>R>c >Q0>)d!==d<mR>-'>=嘮=c<;:g9g:C:D:D;dt;m;?;?;;dt:D9g9g9g:D;t<ѳd>9v>D>.~G>=:*== =*z;i9g9g:g;g<'Y>OW>n>| >f>*=n<>)d!>%`=?=229g9g9g:g;<;D>KR>~2>>u[>;=O= x;!<=(=>R>+n><~>.<> =:t9g9g:D;?<<(;:g9g9g:g<=d>1 Z>g >u[>a&>*=+=c;n v_>.>%>%?=:9g9g:g:::g9g9g9g<#D=>{>*>+>=̙<:g;>*z=n= 9g9g9g9g9g9g9g:D< f=:*=*=O==2=)d!;t!9g:g;{y>W)> >8>H>`~>İ=?=VJ<={=07>C>>>>>k>q!>İ=n=0==3m=k=T=qp=(^<;t!9g9g;=M+>>h%>8>>>v>+4=@= =>{>\(O>>'>>>p>"> 5=n=3m=-y =h_=x=?==i=<(9g9g;t!=9> TP>]n>` >է>>td>+=E==#>{>W)>V>v>8>>>w>=x= :=*=k===s=zG=<;D:g9g:t=,=5Q>5>p>>}>V>L=*==/=>::k>U>><>Y>>N=07=N f<*<=?/==s=:*=^t=R<'Y:g:g>7>Q>J>)">=dB===%>İ>VJ<>>>q>Y܊>=x=d> v_>q$>===D=I=51>> >@Y>K>8qD>'=~=C<</>i;>w=yn=Y=d=R=^=y => =>>>=d==XT=R< fT>>> ==2===s= Z=*>g>>#r>!:K>==~G=K= < >1 Z>M>IG>)d!>{=D=x=M=*=O> >*i\>Q0>g >b>IG>$̙>,==s=<~= :=M+= =?>===K<9g9gG~h>{y>s>>?e>C(.>{=OW==a>a>KS>P\>̙>v>l>>k^>+4>*z=ȃ=Tq==a> 5>I@>Sx>;>d=?'I>O>ê>9>j>ȤJ>XD>>>g=*>>C(.> >'>B? v_?%`>>-H>fL>)d!> =[>v>>@>U>q$>O6>>]u>v>=dt<ѳ<==t4>L> >?? ?o>(o>>u[> >Y>!:K>fL> >hw?4}?B8?A. ?0W>6>-'>Pl*>)">ٛ>>OW>D>X>܊>>K>>IG=:=T=rܫ=><>Z>>8 ?+?&? v>ƙ>k>/B3>>)">o >qD?&g?C?Mu?KR?<0?9>>k^>?/>2>g >̙>??>m>ʎ>E>=͝=U=m>^>Ci}>>c??4>>ټ>u[>(>>q$>]n>?&?CH?Lɉ?I,?:J>Y> >q>B>951>n>>g?d?4? >ٻ>>'I=t4==Z>f>>rZ>>a>P>X>x>@>d=m> >/B3>S >^?3F?@*?;??)>;p>>^t>2>'I>UE>f>א?? >2>R>>%=!=~=J=0=p>>Q>@>I>g$>/B3>v>=%=~=*>>Es>>臸? Z?>>w>k^>6%><> > 5>u(o>R>җG>D>Σ>>]n>^==y =;D=s=a=J=?> I>^>{=:=?=qp=UE={==m>.<>u[>8>>y=Z>S{>'>v>=E=:k=E>ٛ>e>m>|>8>`>=*=n=!:K;-'>V>>{=E=n={=J {=o=T><>, >=̹>0>~'==f<ѳ;9g:D;t!;!<ѳ<<5Q<<ѳ< =;3m:g:g;<= :=a=====g=x =UE=!:K<<=K==yN=yn=07=:k=VJ<'>9v>F7>1 Z> )= E=a=,s= :=&Tq=u[==yN=L=Y=: ;#D9g9g:D;s>a&>>c>f>P*>=T=&Tq=(^=h_=/> >%>.~G> v_==(^9g9g:g:t< =<@>>O6>4>q$>>%=/=c=%O6= =07>(>Q>_7>P*>"#=:k;n9g:g:<gN f>l>s>>zS>?e>0=y =R==g=>4 >`>pO>a&>4 =<=9g9g:g;dt2Q>>>Y>%`>|M >!:K=<'Y>T?>cL>V>*=dKS>Y>:*>z3>C(.>V=p5{>'I>8/>+4> I==;#D9g9g9g9g:g:g9g9g9g:g<'Y=x =Z>q$>.<>!7>+=I<:g;+>V=t=~G=qp<;9g9g9g:C:g9g9g:g =>2b>/==(^<<q$>P*>g$>_>;>Y==VJ<<ѳ;;<k>N>_>Py>!{=ȃ=L==C=dB> >rZ>>ݏ>L>Z>IG>޵== ѳ<<= :=*i\=<;?:g9g;3m=%O6>>L>rJ>?e>g>XT>-'=n=a==>T?>>>V>>,>~W>q$==?/=)d!=S:=T==| =1>a&>)3>>>td>*=Ϩ>===s>w>nq>O6>s>K>g> >>+==Q0=J {=}=s=o=/=rܫ=;!9g9g;m=XT> >Z>Z>><>s>-y =a=t=>>i>|>>>y->7>k>!:K=̙=*i\=3m={=:K==?={=c<:C9g;t!=/=>;>td>f>rJ>Z>=i==O6=>J {>c> >qD>&>>_>g=rܫ<m==K=/===]n=g<(:C9g:D>@j>Y<>Sx>2>w===x=J<>>e>d>!k>8>k5r>==>->+n>a=?=n=T=,=>%?>']>JL>W)>B>=dB=?/d>M>B>+=ʎ=Y=u[=T==> )>`>f>d=嘮=/=0<< ?e>%`>q$>i;=Z=51= ={== Z=J<>R> :>!7>k><=yN==8=(<ܫ<<=p5=n=_= E=:*=c;m9g:g<=?>i;>C(.>ba>_7>:X> I=s===OW=>>=̹>g$>{G>t!>P*>!:K====e=XT==E> >i;> ?e=:=zGq>]n>>L>>>]'>w=Σ=ȃ=2>)d!>g$>W>>F>v>>m>.<>/=5Q=?=n>+>3ټ>a&>k^>Q0>q$=y-=:D:D=I@=>951>f>>>2>ޔ>>V>>/>q$>_7>>ՆP??2ԁ?2b7?>s>w2>/B3>>>B>Y<>է>[>>>w2>=k>h%>V??!:K?#$? T>>[>3m>f>::k>>u??B=?L:?Jg?=?i>r>^t>2Q>'I>T?>>>J>8 >M>,>ga=m=I=>{>~'>w>6? ?)d!?*( ?]>>XD>DU>'Y>@>> ?3gr?M+?aR?]'?G?,"/>`N>|M >L>C(.>}>>S?~'?3?>N1>>(=[=?>d>&>^>X>!?rj?/?f>,">>;>>0>|M >?3?Lw?^b?[?F?(>/>">R=>J>@>>RF? Z?)? %>E">eh>@>^> > >>-[>Q>">t>g>>%`>W>> >B>N>R???4?H?F#?6>>>p>AV>7*>n>Ѝ>?s?G?>D>ٛ>=>w>R==d>v>>+4>qp>2b>>>I@>=07=Ѳ=J]>`>oJ]>C? F?,s?'>>n>>HBT> v_>x>3>:*>~>\>I>M>@>y>q$=Z=;==/= E=i> =>%`>!:K>==J==g==i>GM>^2>>+>r>8>k^>8qD>-'=?=5Q=>0>66>>2>q$>\>1=[=5=,<{>>4 >8qD>(>=07=51==v== >>C>UP>F|>%===,=*===R=f=22==0===0>f>^> Q= = >'>=E=x=XT=3m=(^=-y =k=/=?== := :;i9g9g9g9g:D;n<<}<t<t>>n>{>f\>.<=07==H=;D=e=#=9> >w=[=@Y>x>̙>R>k> >&"=*=K=R5Q=a=>q$>@>J>7l >w=g:D9g; >td>>>>>ٛ>S)==J {=VJ<= Z>^>C(.>k^>u[>ga>7l =9>>>]>Σ>>>`=:=:=J {=C=m>>Q0>y>޵>u[>I>f<_9g:D;?ilK>P|>v>_>>u>JL=E=3m=*=>v>>@>k^>x>k5r>>=!<9g9g:g;#D;i<;D(>~W>>>x>nE">&=/<_(<=8=T>B>?C>M+>@~>B=n;9g9g9g9g:g:D::g9g9g:D;J=R=>>Jg>Z>EA>&=ʎ=c;g; ===M=:t9g9g:t;!<ѳ==-y =cw>4>L>C(.> =:== ѳ<(;dt;;!<'Y;J;g9g9g9g:g&>6l>)d!>k=5=(^=,='Y=>-'>]'>>> >y>0=t=c9< f<<*=(= :=<ѳ;g9g9g:D<_=ʎ>'I>Zv>nE">`~>2ԁ=Z==C=x =L>C(.>>Ѝ>qD>,>>k5r>'==%O6===̹=rܫ=m=a=@Y>t!>>{m>S)>:=~={=>>`=:>L>`N>ǟ>_>p>{>/==?/=1=k=d=%`==K<;g9g9g9g;=0=_H>?C>td>I>~W>W)>=Ɉ=,=5>>\i>}>qD>İ>>O6>z>a==(^='Y=a=^=*=x=R5Q< f;n9g9g;3m= ѳ=Ϩ>>']>Z_(>q!>i>C>==rܫ==07>>>o> >=>+>">Qqe==k=g=g=0=qp=,=qp=*i\ >2Q>IG>C>(>*z=~G=M+=S:= >>UE>>>>XT>d=s=~'>']>$̙>'=_(==)d!=(^=ѳ=>GM>7X>B">.<>v>=?=<<}<;D >>d=~= E=_yN= :=&Tq=zG==Z> >===_yN7>> I=yN=5=C= 5=VJ<===07> >c>=9==Z_(=c=g< <_(==w==?== =;n9g9g;=t!>>9>WOw>T?>-[==n=p5=h_=s=J<>>.<>Xc>n>cL>::k>w=̘=x=k=f=h_=a=:> >>%?= f=rܫP*>>R>M>>Pl*>{=J==?>!:K>^t>2b>;>ؖ>FH>M>qp>=魚=~=2=~=>)d!>T?>]u>Es>&=s=c;#D:g=%`=s>)p>>FH>!>>>F>q$>KR>>g>>Y>+>5Q?ӽ?2b7?2A?+>>k^>!{>=Z>d>I@>=>>>6V>i>=5= Y<>qD>G? ?*?ӝ>ȃ>f>.~G>>4>}RF>l?V?@?Jg?I?<&? TP>>R>'I>/>D>>D>ߺ>lK>֋>Y>YY=m= Z=>V>d>j>¥??"?$@? >`n>>@j>%>>OW>k>R?1?J?]'?Z?F?,>X>s_H>@>8qD>o >^>? [??0>0>t>%==[>O>~'>Rv><>.??>hw>L>k>6l>L>->x>ƙ?1 Z?I1?[?X?E(>y=Z>G=>@Y>xyn>)>)?!k? f ?E>Bu>|>>OW>'>>w>d>%>|>'>>D>ŵA>>R>> I>>N>Tq??;?Fw?Eŕ?5@>>f>hg>::k>->`~>ݏ> ???&>{>>7>d> )==!>޵>%O6>e>>c>}RF>C(.>i;=07=*=>>s_H>51?*z?)d!?!>q>p>zB>@>&>">,2> >d>܊>$>א>>n>as=t4=嘮=N=?= E=E>>`>q$>d=07=/====2=>>gs>+>i\>,>>ga>0>w=yN=Ɉ=[>)p>t>>D>+>t>+4=Z=̙=<t< =(^=a===OW=n===p5=3m= 5=R5Q=:*=Ɉ>>->C(.>@j>+>d=u=D=x =a=a=>&>>OW>L>@Y> ==s=R<:g;dt< =<=(=3m=<~=(^=(<ܫ<<ѳ<>"> =$==;g:g9g:g:D;<#D=yN=̘=/=t;n9g9g9g:C:t;?<'Y~'>k>==/=C== :=3m=T=y =ʎ=̘==M+<:g9g9g9g:g;m<\i I>KS>|M >+>s><~=2==6=-y =h_=~G=07> >^=!=<(:g9g:g<<=R="?=)d!=<5QM+>>R>>)T>k>.<==M+=K==…> v_>@>F|>1F> ={;g9g9g:D<\i> >M>ŵA>w>OW>>\(O=?=Q0=]n=̹>i;>C>i>s>`=:>.~G=:<;D9g:D<;D<5Q=t=B=K=0=<;:g:D=p5>f>H>d>̹5>[3>X>.>gs=~=J {=UE=n>GM>Q0>u[>@>pO>@=i>u[> >>7>;>>NR=Ow=!:K=(^=D> )>@>gs>t#4>a&>1F=t7>k>L>I>>r\>`=xu>9>Dn>3>w=x;3m9g9g:g:g:g;;3m:D:g:</'I>U>`>I>=_{= =t<ѳ9g9g9g9g:g:g:g:g:t;<=< f=(^==͝=a=ʎ=:*< f:D9g9g:g;m D>u>c==a={=?==L<*<<=h_=9>+>_>u[>l:>@> ?e=M=>.<>$̙>==T?==,s= >as>k^>>f>>>6%=yN=VJ<<<==*i\=: = :<;n9g9g9g:DO>9>LW?>A>/= ==1=dt=J<>2ԁ> >>>u>>S:>V=,===)d!=]n=m…=K=<:g9g9g9g:D<=>-'>>OW>Q>H>%=d==3m=h_=E>0 >>>H>)T>t>L==T==g=(^=XT=h_=J {=<;D:g9g9g:g<ѳ=>/>,2>@j>;?>L=07== :=*i\= >&>dR%>>>m>qp>&Tq=@=R5Q<7>%>!{>=+=f<<=rܫ=*>)p>W>i*>Xc>'I=yN=| =(^><=?=#= :<\iO>>=_=Z_(=g<<}<;D<(;!<+n<<>+4>'I> =T=Z_(v>>!7>1 Z>)p>Y===0=*i\=?/=K=zG===07=T=i\=,s;J9g:g;=d> >i>>)3>k5r>%`=Y==x = >>/B3>r\>C><>-H>Z>;?=d=?=*z== :=ȃ> I>'I>0>!7>{=/>k5r>I>!>L><>>/==:>޵>0> > >??&> U>>>OW>{=̘== >&>YY>>?e>u[>::k=[=T!:K>>Ϩ>>_H>n>z>̙>Y>>v>>L>U>>臸?0_?>.?=Zo?/1>ߙ>>+4> TP>g>ٛ>`=:>+>>>>k>+=d== =T=>->>܊??@>>=>n>#D>d>/>`~>f??<&?H!?GMm?::k?/>w>M\z> v_>GM>?/>> >>%>F>Y>_>^=yN=:=m>Q> v_>Q>s>g>?>ђ >>^2>> )>>R>j? T?:\?F#?F?6l>>>W)>'I>%`>F>>">>8 >> E>w>q$>==~=G>{y>F7>է>Q>qD>ݏ>y>+4>==m>->>9F?+n?7*?56?#>@>>F|>%`>>1L>">L>2>$>֬3>>l:>M==d==ʎ=E>>/B3>]'>hg>M> 5==@==ʎ> )>Q0>>>*>!>U>E>Xc>"#>g=>c>J>8>=>>[>)3>@>=Σ=s=_yN=x ====:>>=T==n==| =M=>'>P*>/>u>E>z3>G~h>=*===ȃ><>@Y>t#4>>td>C(.>'=@=T=VJ<<<V>#r>7*>1>*>T==f=&Tq=(^=i=51>{>>&">/> ѳ=:={Q=n=̘= <:9g9g:g:D;t!;!>7> )=n==<_3W>e>rZ>\>*=魚=| ==c=B=M=%=T=O=U=Z_(<}:g9g:3ټ>I>f>r> >qp>k==,s=-y ===d>d>%>)p>B=ӽ)=:9g9g;dt<t=c=1=I@=<~=>g >L>%>0><>w>@=*=0=Q0=>޵>+>L>Sx>?>i;==;t!9g9g;3m<ѳ=R=)d!==̹=1=(^>u(o>)T>~>ê>>>IG=:==J {=> I>6%>Y>`>M+>L=y ;n9g:g< =>^2>><>>I>:*>-=y <===G>&>H>Q>?C>=d:9g:D;?<<'Y<;J;:D:D;<ѳ=%O6=>']>qp>>7>>O%>V=8;?<=J {= >{>>$̙>x=E=9g9g9g:g:C:g:D:D:g:;!<= :=u[=5Q>GM>::k>A>)"==T<(:g;gs>!>Q==*=<ѳ;;g;g;?;!;n:g9g9g:C;g<={=n=;==M=C >Pl*>eW`>Y܊>/B3==%?= >@=ʎ==%O6V>>>q!>g>y>P*>-'==;DQ>"> =;==*i\<=R=:*>T><0>nq>66>u[>L>d= Z=I@<_<v>>g=E===(<ѳ8>KR>]'>P*>%=嘮===(^>ٛ>d=E==0<<tGM>3ټ>0>d= E=J {< =g=J {=D=9>>Dn>fL>^t>.<=O=g===-y =C=| =X=07=2=魚==0;J:g9g;;=T?>i;>^t>>Q>i>===R==>+>w>>ê>>f>Q>==g$=w===@>^>->951>'>=D= <;=,==>2Q>d>>> :>]'>d=E=_=>>\i>>?3?>> >4=Z= E=o=Σ>>I@>v>>i>0=Z=Y=,s=g===@>>>s>(>;>7>t!> =_H=Ϩ>=~>>q!>X??-?-?9>>\>~'=L=:>g>3ټ>x>+>q$>">a&>&=ʎ=a==~G==dB>!:K>,>U>Tq>nv>_7>GM= =U= {>i;>gs>?D?+M?*ۦ?@>Ѝ>`>q$==a> I>@>I>{>M>F>u[>)p== ==Tq===?>2>k^>x>\>']==n==Tq=!>C>W>l*>,c>~>,">>KR>:=嘮=͝=2>->qp>:>>1>gs>!:K=O=o=̙=p5=qp=T=/=>O>><=a=/=Y=t!==>GM>g$>>Ѝ>>>]->!:K=O=2=?=ȃ> ><~>l>~>k^>;D>=m=}=fٛ>M>gs>c >C(.>ٛ= ===C=L==Y>>!:K>->"#> =ʎ=x <<:D;t!;J<}==;D=XT=T?=J {=: =(^====YY=:k>g><>-'>{=dB=Z_(< f< >+>::k>+>=J=7X<*<5Q=c=a=/= ==w=g<g:C9g:D>G~h>w>|>oJ]>;>V==(=c=]n======h_<:g9g;3m<ѳ=R=*==<;D:g9g9g9g<(= Z>)p>x>XD>>>`=:>=/==(^=:*=̘>v>>Q> %> = E< f:g9g:t7> >|>q$>>gs>x=x^>#r>']>s=<9g:g;J<'I>o><>-'>+>IG==: <;D{>~'>L>=2<t9g9g:g;;J;?;3m:g:g9g:g;?<=(^=>>7l >^t>dt>F7>i;=5>w==<:g9g:g;i<*=1=a=h_=&Tq )>g=ʎ=x = x<ѳ;i;dt;3m;T?;3m:D9g9g9g9g:g;x>!7>=m=i\=C<_-'> 5>GM==n=R5Q=<ѳ޵=[==m='Y O=~=N f<*>+4>M=?=n=p5='Y==x >>IG>8>R>M>>Q0>=={=p5=5=…>>8/>C>3W>2b=Σ=t!= =<_(=07=?==C=R<_(=(^=>1L>u[>w>>t!>::k>/=y =\i=]n=x=O>d>)d!>3ټ>'Y> I=dB=[db<ܫ>@~>]n>\(O>?C>7==`~= =(^=e==> >> =i==/>`>`> I=̘=[db=[=ȃ=g= >)d!>q$>=51=K<ܫ< f= =Q0=====Z_(< f;9g:g< =>C(.>Pl*><0><= f=^t<(>Q0>Y<>@>s==3m<< f=C=t=n=Ow=0=I= :;dt9g9g;g<ٛ>;>@>%= ==< f<O>O=yn=i\=;?:D;=<t=)d!=u[=*z=w=<9g9g9g9g9g9g9g:D{y>i;>+=U=@j<#D;dt;t!;JV>!{>+n>== I>'I>.~G>8==>Q>q$>d=:=h_<ѳ<<t= =h_==d=a=˓S=t=&Tq<'Y:D9g9g9g:g:D;!<=R=<_(<ѳ<'Y;n:t:D< ==Z_(==Z>==<_;;V=yn=y-=Z_(;J9g9g;nv>>>/=Ϩ>=XT;9g:C O>d>޵=y-=0:D:gT>\=嘮=<ܫ:C9g9g;<*=: =VJ<=/<;3m9g9g:;J >*z==c>~'>w==T;!9g9g:<=_yN===T=c;?9g:g;?<(< f>u> =E=\i;t!9g9g:g => ==%=:D9g;==T?=i=<~<;t!9g9g:D;?>=0=m<}9g9g:t I>'> ==x < =9g9g;g< =t!= %=s=T=;i9g9g;^>>R=̘=R5Q;g9g9g:<*=a=a==| =;J9g9g;g<<}>{y=Z=2= ::D9g<'Y==^t=h_=6<;3m9g9g:g;g;J;J;:g9g9g<(=K===t=Y=zG<ѳ9g9g:g<<V= =n=c:g9g:D<=: =| ==N f<*;3m9g9g:g;dt;?;?;g:g9g9gf>&>Q>=< {;n;;GM>4>+>=/d>)d!>,o>İ=:=0<;DB>`>+>}>@~=5=f<(9g:g;m<_=t!===Y=0;9g9g9g9g9g{y>%>, >`==f<,s>\>>>\> =:*^>GM> =%=f>gs>Z>|>C=Z=qp</:g:g;i!7>A>4> ?e=:K=R;3m9g:g;dt )>-'> I=E=a<:t;!+>>#^>=~=>L>$J>GM=Z=m;J:D;J<ѳ<<<(:D9g9g9g:g;dt;?;;g9g:g<'Y=*==Z>d>~'> = f=22:D9g:D;J>-y >,o>~'=Ϩ>='Y<;J;!<ѳ=VJ<=嘮>(>IG>@j>=͝=1;?9g9g;t!<_= =?=ȃ=n=3m;9g9g9g9g;=rܫ> >;>Y܊>]'>C(.>-'=Y<< f==^t=>KS>>I>> >$̙=51<ܫ;:D<\i=VJ<=s>> )=m= <ܫ:g9g9g9g;D=>2b>N>rZ>w>a>.~G==T?='Y=YY=n>%O6>)3>'>0>W?>>cψ>V=h_&>%>= =~2;?:C9g:g;t!=a> >IG>qp>z3>i>::k>@=R=?/=qp=>8/>>>hW>ܪ> >rJ>w==<+>%O6>2>)p>=n<:g:g9g:g+n>Xc>f\>V>,o==x='Y=J {= Z>%>d>>զ>l*>Q>k^>=x <ѳ %>*>"?>{y=D<:g9g9g9g;dt=a=2>&Tq>7>->=J<=p5P*>S >>3>H>'I== ;J;J<=8=51>Q>^> =E=c9<9g9g9g9g<'Y=m=yN>>*z= ==;i;t!<=T=>.<>R=>IG>t=n=/;!:g:D;===T?V> %>%>>g=<>.~G>::k>-[>=n= <3m<t<=<GM>0>;?>, >d=<_;i >!:K>)">>T=TP<;D:D;<;D<ѳ<=<;3m:g9g9g9g9g9g:g;dt;;;g9g9g9g:D<\i==d=T>q>>V=n=3m;9g9g:D;;t;?;t!;g:D:g9g9g9g9g:g:g:g:g9g9g:g;?<= 5=:*=/====g;9g9g:g;dt;J<;D<;D;i:D9g9g9g9g:g:t;t!;g:g9g9g:g;!2b>==s<;g;3m;g>>&>==;3m9g9g;t!<*=x = Z=~=5=0;i9g9g9g;i=x >4>5a>S)>T?>9> =<*<< =\i=>0>vn>8>?e>^t>GM={> O=m=*=:D9g9g:g']>a&>>@>oJ]>;==rܫ=?/=| =ʎ>.~G>8>D>җG>>>nE"><=g >'I>4\Y>*> =4 >u[>>H>>_7>&===>>k>>g?]>>ٻ> >2=ȃ=0<ܫ=a=a>!7>Jg>Z>Py>+4=:=)d!;g:g:D<'Y= >,o>ui>8>S >)3>k5r>']=Ow==2>c> >Э>?? >q>7>H= =h_= 5==>->Xc>i>_>>OW> =x <:D:g;t!=Z_(>i;>Y>|>?e>;q>\;>"=T=x= %>V>gs>f>V?k?ll>>`->8/=Ϩ>=Z_(=%O6=~2=嘮>%>Na>_7>WOw>4>+=x <:g9g:g%O6>UE>gs>]'>=J>=̹=C=J {=D>*( >>zt>ٛ<>F>>}>==c< =7X=2> I>+n>>OW>4\Y>=ҷ=+n;:g9g9g:g= =0>u>*( >'I>x==~2<<;D=!:K=*>, >{G>N>>m6>=n= >=Эy=p5-'>=嘮=x<;n:g:g:D;<t=-y =rܫ=a= <:C9g:g<;D=&Tq=x = =YY<ܫ;!:g9g9g:Df=G=n=a<=;D;?<(;J;t!:g9g9g:D<;D`>%O6>>f=y =<'Y-'>->8qD>-y >-'=ȃ=/~'>.<>8qD>+4>O== <( >q$>&>ٛ= =a<=;g;t!<>{> =2==8;?9g9g:D;t!;m;;3m:t:g9g9g9g9g:D;3m;;:D9g9g;<=c=| =y =J=y ={< ;g9g9g:g:t;?<;D>ٛ>ٛ>v>= E= x;?;n<f>1>-[>s=:=C;i9g9g;=< =I=~h=E=/=w<ѳ:g9g9g:gw>@Y>\>^b>C>x= Z=c=,=22=> )>P*>)3>V>>z3>+=Эy=!:K;!;dt>>i;= =a;t9g9g:D<=ȃ>.<>l:>>o>z3>HBT>v>=x=t!==>KS>f>>M>>~>>=o= :<=3m=̘> :>?C>M>C(.> v_=:=c;3m:g;#D<=i>@Y>>2b>+>>m…>%=:=̙=>GM>\>2>?? >07>>O>==g=C= :>f>8qD>a&>r\>i>DU>c=<;D:D;g7*>Y>է>C>i;>w>4 = ==ʎ>>Z>{?k%?f?w>>o>h%>f==T= E>d>EA>o>T>w>WOw>L=2<;3m:D;=x >Q>fL>o>m>?e>l{>0===2>d> >ŵA>RF?l?>>>Y====2> >>>g$>v->pO>P*>&=~G0>cL>u[>m…>L>8=E=rܫ=i=5Q>>>%`>K>lK>>=>>%=n=p5=VJ<=?e=~>k>C(.>V>P*>.~G>V=,"?>::k>7*>!:K>T=B">TP>̙>|>{y>8qD==_yN=g<==*z=i>d>f>GM>Q=#<m:D9g9g;!=a=%>{>=L== ѳ;n9g;3m=*=n>O>, >,2>d=n=J {<=;?;?< =<== :==^=s=]n<;g9g9g:gv>>> =~= >!7>>=?<;i;!Q>>!{>==M<;;n<<;D< =;dt:g9g9g9g:D<<_(=(^=;D= 5 =>>v>=0=a<;D:g:g;3m;n;::g9g9g9g9g:C;3m<;D<<5Q<;!:D9g:D;!<=;D==˓S==@==,;t!9g9g9g:g:g:g:g:g:g9g9g9g9g:t;?<'Yd>d==5<;;g<GM>)p>$̙> =s=*i\;9g9g:D<={=51=ʎ= E=m…<ѳ:g9g9g:gT>->KR>L>1L>=t<<_=4=> I>F7>">-'><>i>!:K=ȃ=*<;<;D=a=J<><>>^==h_<9g9g:D<t=n>8>Y>y> >i>4 =Z==c9==>@>>j>d>K>>y>B=='Y>8>I@>@Y>k=d=*;:g:t<ѳ=51>*>nq>Q>Y>f>Z>=n==>-'>r\>> U??a>>#>@j===a=>{>2ԁ>^2>nq>g >C(.>^=d"#>l>)3>CY> >g$>'I==o=U>B>66>2>?J? C> >L>Z>{=n==Y>">C(.>l>|M >u >U>= E<;dt:D:t=,s> =>Q0> >>66>\;>%=嘮==D>R>i>>?¦?D>a>>N=== %=Y> )>;D>c9>u(o>n>N f>= Z<*;3m:g:C<= > v_>R>g >^t>@>u==VJ<=C=>*( >(>>db>Y>`N>>!:K==R=,==>L>AV>T?>L>-[>= B>,s>+4>&=?=<<==*>.~G>>V>>{>2Q=;=m='Y=&Tq=L=s=yN>">>B=2==;g9g9g;m=5==:=t4=:=x<_;3m9g:g<=y > >%O6>']>^==a<5QT==X=: <R:g:g::t:g9g9g9g:D >=E=/<:D9g9g9g;?==,===;i9g:g;J=+n=>Y>!:K>!:K>w==;D >Of>g$>]'>1L>V=i;<;:D;dt=g==9==*=~G=*;9g9g:g<=_yN=!>*>KR>P*>7*>Y=i\=t==m=Ѳ>f>h%>>i\>>>@~==| =ٛ>)d!>!{>R=<_(:D:g:g;?=^t>g>=̹>cL>lJ>W>(=嘮=g=\i=:K=t4>>>">>> >d>~>GM=D=rܫ=K=T=:> :>?C>O%>F7>&"==^t;!:g:g:= :=E">7>d>q!>`>6%>=̙=u[=5=[>Es>>W?>r>>">8>)d!=Ow===i\=!>']>N f>^>WOw>6%>v>=<}::g:Ck>L>^t>T?>/B3>v>=^=R5Q=x =͝>-[>8>>ض>F>N>U>"?=Ѳ=t== Z=> >DU>WOw>P*>/B3>\=<}:D9g9g:D=-y =:>">8>3>=5=R=<=T>>W)>>><> >Y܊> ==T=T=t=ȃ> >&>5 E>.~G>~'=%=C;J:g9g9g9g<'Y=g=嘮> >^== =(^<'Y;3m/>C(.>p>td>N f>-'=51=p5=%O6=)d!=K=T==O>/>=ʎ=qp<t:D9g9g:g{>v>=嘮==I@< f<}<<<=(=K=u[=\i= w>&>=:= %=;:D:g9g;= =,==:*=-y <>w=Z==;!<'Y= ѳ== >k>KR>c >Y<>-= =^=<<<'Y= = :=E=_H===-y <g:g9g:g:g>q$>d=d=qp<>@Y>}>m>TP>i>=ʎ=qp=*= ѳ==*z=d> TP>GM>==>!{>B=5==(<_(=J {=n>>I@> >f>>|>4\Y=_=s=a=a=T==t4>GM>%> v_>{y== :;!:D9g9g:g*z>>O==5= :<=c==L>/>z3>nv>>w>.<===x =T=i;= E=5>2b> v_>ٛ>g=o=c;i:D9g9g9g;=B=U=[=yn=Ϩ>=R=R>@Y>i>l:>I@>=~={=VJ<=h_= ===yn> >{=+=u[`>q$> =={='Y= ==22=R5Q=x =%`=2=?=c9< f;:C9g9g;g<==,s=c<;n:C9g9g:g<=K===~'=Q0=g{=!=Y=rܫ<;t;:D:D;O> 5>&=m=y =: ~'>+>)d!>d==m…= :== :=0=]n== Z==~=== : > 5>!:K><==qp=)d!=3m=K=m…==i;==_= =g=(<\i;:t9g9g9g:g;n<="?=;D=<_<=<(<({>4==5=A==(^=I@=a=v=}=R=d=,=0=x <ѳ;dt:D:;!=g=| = =%==n={='Y =>> Q=~=< =;;n<===$>R>g=:=D=(^<*<w>>=*=0<t{>-'>=yN=:*= :< >{=/=)d!<>==_yN<_<>w==D=(^T>>/>=T= =XT<_(w>']>, >L===/< f v_>@Y>AV>)">v>=s=T=*i\=c==3m==%=O=yN=Tq=XT=c>.<>7l >#D=m=n=c9=%O6= :=K=Tq>>/B3>V>V>6%>w=̘==h_=h_=T==9>-'>/>-'==s=L<m<==_yN= %=>@>>!7>=L==T=Q0=C=h_=n=>'I>L>I@>*> =%=/==/=/=dB>{>!:K>-y > >==lJ= <_==<~={= %=?=n==Ow==Y={=VJ<=<~=R5Q==>{> %>>^=5=OW==qp=m==/=!>>!:K>>T= E=XT<ܫ<<ѳ<=!:K=?/=P*=^t=rܫ=x =p5=g$=XT=0= ѳ=g= :=Z_(=t==:=Ϩ>==:*=J {='Y=: =h_==ʎ= >>{=E=^=<<+n;g<'Y<=<<R>+=9==}=R<(:D:g:g:g:g9g9g9g:D<=>>%>2Q>#D==h_<ѳ;!<;D==Tq>޵>&Tq><~>7*>ٛ=L==&Tq<ѳ<(;?;!<;!;:g9g9g;gas>M+>^t>NR> v_== >T?>k^>c >=̹> ==n=,s< f$̙>Y>l>^t>.<=a=I@=R0>k5r>rJ>u[>Jg>^==(^<ܫ=g=%O6=M+=WOw=3m=-'>F7>\>Pl*>$̙=:=j=(^==K=>*>a>w>l:>>>{==c<_= ѳ==̹=p5=w=XT=tٛ>0>(> ==x =C==Q0=n>>@>T?>F7>=y-=0< f~'> v_>==T<ܫ TP>> =?= =a=:>*>+4>:=J<=u[== = 5=R5Q=:K=!>!7>A>I@>7*> :=Z=Tq=C=g<t>F|>qp>u[>WOw>%`=n=VJ<=t=;D=^=:>0>n>#>x>u[>@Y>=Ow==i=Z_(=^=嘮>&>%>-'=:=`~<*< =;=c==…>+>u[>x>&>>L>v>=D=a=s=51>a>h%>F>f>>>nE">%>Q=ʎ= =>Q>::k>m6>x>\> =n=C<<}=L=y =~>2Q>\>f>v_>(>^2>=ȃ=i;==0>']>>>>uY>&>+>7>^=E"=O=p>$J>nq>-'>|>j>Q>/=N='Y==a=n=> 5>hg>>>|>Jg>d= {==D=5Q>q$>*z>~>Bu>c>y >,>9v>==>,>.>~W>>> >g$>==M+=(^=I@==/=>(>T?>^t>F|>M= ===M=>*z>U>f>><>>\i>&Tq>q=9=:=>q$>ga>>>)3>Xc>-'==;D=Q> ==Σ==I=rܫ=`~=| =2>>BdB>n>i>G~h>%>v>=Эy====>, >\>nq>[#>-==R>{=a==g=I@=-y =R5Q=Tq=d>B>$J>>*z== :</;3m:g;;?;!<<;D=5= 5'>&> ==;D<}<;J<<=Q0= =0=Y=k<+n9g9g:g;g;;;g:g9g9g9g;?=i=:>ٛ>&Tq>==`~<'Y;3m;<+n<=,=E==*=̙<_9g9g:g;;3m:g9g9g9g;=8=ʎ><>>^=E=]n;J:g:;J=:===:D9g:g;C>ٛ>=n='Y >)d!>>>::k>/=i=2=M+<;g:D:;dt;3m:D9g9g:t!:K>Q>a&>Q0> v_=T=c<=g=>+>?C>td>P\>{>]u> =Ow={<5QJL>}>>rJ>R5Q> O=T='Y=22=> 5>q!><>>>>Ci}=== >XT>>m>?e>g >=n=^t=`~=>.~G>E>U>o>]>c>Sx>== :=N=Q0=====KHBT>Y>>+>^t>=*=~2=x =ʎ>+-H>66>KB>>`->)3>Dn=嘮=g$= ==a=ѳ=M=I=c9=c<;D:g:g8>Xc>p>g$>>>===zG=J>B>_>>>>nE"> 5=o=<5Q=g=C=m==T=Q0=<'Y:g9g9g;dt==5Q>>3ټ>.<>nv=a=n=={==>-y >\(O>m…>]'>-y ==T? > =T=/=t=*z=T=M=:> )> >(>`=i=/='Y >w>=yN=?=K=R{>=p===T=| =*z====E>f>i;>>===3m<ܫ:>'I>']>=9==| =| ===Y>{>#r>>>B">0>~'=*=/=;D=g<ѳ<t=I@===n=x <ܫ;g9g9gk>V>}>>^t> 5=*==,= %=*>i;>Es>}>m>m>\>K>V=*=D=| =h_==:>>!:K>=5Q=XT I>UP>>>/>s>rZ>===> >Jg>z2>>c>)>>>C>=J]=̘=:>i;>Rv>">U>o>-y =s=(;!;!=j=ʎ>*>E>e>2>c>>~>I,>{==>$̙>|M >?9?+?(>>F>u[>0>7> ?e>u>Y>W>w>)t>Ѝ>>ٛ===c<=?=>%>Z>=>lK>${>>#>_7>i;=*=>.<>Z>'?-V?8`?5Ê?!Z>;>x>HBT>&">>4 >>l>܊E>臸>j>>T?==,=a=/=L>&>x >>F>ٻ>_>!k>N>w==>%>o>L?.~G?8@?5a?k>G>>M+>)p>8>@~>>dB>>^>x> E>nq>/=̙=i;==+>{>7*>v>>̙>>a>k5r>!7=O=Ϩ>=;><>\i>? TP?+?%_>${>>vn><0>>>)d!>>L>l>Fi>Ow>>a&>==R=a=t==>#D>KS>W)>@Y>= = =5==*>B>x>>P>>ݏ>~>B"> :>{=07>>AV>t><>>>:*>5a=a=p5=)d!<(=c=P*===51=O=*==/==a=3m=-y =h_=/>>7l >^t>_>JL>(> =i=~G==n>{>: >m…>>n>>> =<_<'Y:g;u>"#>>޵=n=R;?:g9g:g:D;;;!<#DQ> )>T=ȃ=x=T?=-y =<=,=C=T=g=3m<;D9g9g9g:t;!s>KS>XT>C(.>=dB=]n='Y=c==[db==[>=?= >Pl*>@>4>w2>@=~=_yN==R=*i\=a=m>!:K>.<>"#==`~:g9g9g:g;i<ѳ>^t>>>>P*>=lJ>1F>C(.>7*>=?;?9g9g;dt<'YC(.>u[> >s_H>>==XT>)d!>;?>.<>w=;?9g:g:t;n;n:t9g9g9g9g^>8qD>K>;?>:=n=R;g;? >B>d=i=?/:g9g9g9g9g9g9g;3m===>g==ȃ=XT;i9g:g;! > =?=J==R;:C9g9g:C:C9g9g9g:g`>%>~'=d=?/<t<} >N f>e>^2>;>w==h_<t;;dt;;J;?;3m:g9g9g:t<m=0>.<>a&>s>ba>/B3=O=?/=c=C=n>s>k^>>KB>V>E>B">==<t<<m=c=g<t;?:C9g;=*i\>>]u>Z>E>D>g$>ٛ=̙=`~==!>KR>><>>>q$>s_H>B=n=(^=c=0=h_=T=rܫ=,s<;9g9g;=Q0>>n>i;>}><>~W>1 Z=͝=:*=>v>>bM>P|>~> {>H>>޵>q$=n=3m=*i\=p5==I= %=v=c<3m:C9g;dt=3m>d>c9>>+>1>y>0==M=s>/>]'>>v>s>>>y>7===&Tq=w=5==D=g=&Tq>>vn>v>>|>]u>q$=O=/=D=T>@Y>#>Tq>&>>>P*=07=T?<==P*=:*= %=x=rܫ=<>@Y>YY>S{>/B3> = {===0>`>Z>>w>>]'>-'==R>']>%>-'=07= =x=Y=51>>">C(.>P*>>OW>==C TP>B>>g====Y==> >>%`>=Z==N f=g<{>GM>M>d=T=T=====ʎ>>~'>!{> v_>'=…=i\=C= >0Gn>P*>P*>/B3> ====M==%>޵>%>P*>h_>g$>M+>%>{=X=u[=?/==[db=51=[>=[= =Q0<#D9g9g<ѳ=x >Q>C(.> >`->̙>8>P*>v>== =Ow>>D>Ȅ>>> >q$>r\>.~G>v>=%=2==T>&>Q0>\i>C(.>-'=n<:g:g=3m=>%>d>7>>>΂\>>IG>*z=> =>?C>>??']?$>>,>n>.<>>>O>I@>>,>>>l:>w=fK><>!??]>Ϩ>">|>$> )>/>b>{? ?6?D?C?3F>>>>Y<>0>%O6>Dn>>>/>p?>>s>Y܊=E=c9=VJ<=i> >Z>51>W??3?4>FH>>4 >x>']>pI>D?+Ѝ?EA?Rؖ?O?B"?L>>u[>I@>?C>nq>>??6V? >O>>GM=j= E=>>Es>g>}? u? ƚ>˴>OW>>, >>>`>`N?,y?EA?R?O%?A. ?>~G>{G>M+>A>w2>>I?/?&?L>臸>/>/B3=*=Ow=07>޵> 5>zG>F>j>>L>b>P*>-'>> >6l>??7 ?Cn?Bt?0 >'>>g$>>OW>.~G>_> > ? ƚ?V? B>db>a>, =07=*= E=*=> >`~>#>>~2>C(.>d=O==db><>W)>> ?!J?\> >̙>u[>>> %>d>)p>|>Kb>Bu>.>X>>u(o>==5=0=w=s=ʎ>V><>ٛ>=_===zG===dB> =>C>?e>8>ٛ>>]n>+><==ȃ= >*( >zG>KB>>k>z3>-=yN=h_=; > 5>%>M>=9=*==_yN==:>>AV>Sx>Es>$̙=_H=T<t;:g;g;? >=J<=<t:D9g9g:g:D:D;3m;m;t;J;?;g:g9g9g9g;=<=*=Z_(=h_=h_=^t=^t=VJ<=-y =<_= :=rܫ=/=o= :=J {<ѳ:D9g9g9g9g:g:g:D;;n;?;:D9g9g;=t==E=魚=;===w=Z_(=0==*i\=v===:*=J {<=:g9g9g9g9g:g:D;>f>H>V>A>==N=t!=XT=R5Q= =51==?=y-=J {;g9g9g:g;"#>t!>-'>>TP>a&>B= Z=t!=i=R=n> >)d!>22>$=~=;D9g9g9g:D< =<=(= 5=<5Q<:g9gT?>N>7>>9>Q><0=Ϩ>=^t=a==[>, >W)>dR%>UP>'I=;!9g9g:D<(<=c=(^=t<_a&>@> >>]>'>F=n=L=C=>><~>gs>u[>i>>OW=_H<9g:C;gEA>z2>zS><>>>22=@=*i\= :=w= >.<>\(O>l:>^t>2=L<9g9g:C;dt<w>\(O>4>(>+>S)>d=< >0>B>6%>-'=O6;9g9g:g;g;dt:D9g9g9g:g>*( ><~>-[>d=~=g:D;/==<*9g9g9g:C9g9g9g9g:<=J {=O6=n=~=R >=t=y =fw>GM> I=OW=$I<%>W)>m…>d>?C>w=/=J {<\i;g;;J</;J;3m:g9g9g:D"#>U>g >W)>&==C=*=a= f>'I>x>V>̙>q$>#>Jg>g=< <<*=(=%`= >Sx>@>>q>^t>B==qp=>*z>\>>qD>s>M>9>rJ>L==3m==?/=x =R=zG=07>gs>8>~>>x>.<=0=d=>-'>u[>5>r>:>+>> >*=51=L=6=u[= %=n=s=w= ѳ<:g9g;=T?>d>`>>a>O>xyn>1L==8=>i;>qp>3> >>@>]>> ==)d!=)d!=w===O6== :@>x>>@>`>$̙==t=o>g>Rv>S >=>>1<>|>ba>޵=x < ==L== %==h_= ѳ~'>G~h>`~>Z>::k>i;=͝=ѳ=Y=_(>$̙>k^>>>c>nq>8=n= 5>22>0>as== =g==/>*z>*>P*>\i>HBT>==?/-'> 5>> I=ӽ)=t=x =| =?=t> >ٛ>q$>i;===(^<5Q >q$>">~'==n=={====:>*z>>!:K>f> TP===0=Rd>@>`>`>@Y>^=ʎ=M== E=>>951>g >|M >u[>R>"===T=e=_yN==a>(>u>== <9g9g%?>WOw>>>@>>g >i;=Ϩ>=n=[>$J>a>a>>Ow>E>>">1F> ==y-=0> >>OW>k5r>u >\(O>%=:= :;g:D=C=>1F>>2?a?>,C>>_>>{>>[>M>ǟ?#4m?4}?3ټ? v_>+>>7l >GM>(>q$>`~>>>>R>>!:K=<޵>e>(.?EC?$z?&? #>Ow>c>8/>M>51>>`N?$j?D ?P*?Nr?A?C>n>i>=̹>/>Z>>χ>*?%?>p?>>x>f==TP=>>u[>Σ?8@?*?+9?+>>/>%`>KS>%>@Y>:*>[3?5a?Qqe?e?cψ?KԢ?0_>^>k>V>M+>">v>!?8?(?>>Z>/B3==a><>>_>?E?L? ? >җG>>@j>s>0 >66>v?5a?Py?d?bhW?J {?.>7>>Z>S:>U>?4?)?,o?&>}c>>M> >޵> >>0><>@>>>Ow>Tq>i>!7>w>L>W>?%'?C$?M+?K! ?>y>K>@Y>u[>>S?G?(?*>.>]>F7> >=a=d> >5 E> >>U>>^>q$= = =>!:K>\>r??1?/1?>>4>N>'Y>V>>>w>h6> ?>>ƙ>?e>'Y=E"=Ѳ==:K==?>-'>*>1L> >k=:==/=?=?>#D>t#4>:K>;>>;>vn>?C>a==a>k>@>>Q>><>>C>{=={<ѳ=g=9=T==͝=:=_=5=T=DU='Y=N f===͝>w>.~G>H>HBT>1L>===M=,=?=yn>-7>Z>m?>]u>5a> =n=RO>>=m==c;=:g:C:D;3m;<'Y<<t<'>>^=07=y =,=f=R5Q=P*=T=n=ȃ=ʎ==1<(9g9g9g9g9g:D;<'Y<t<*<_ TP>KԢ>| >>r\>?C>=~G=,=w===$> >d==tRv>2b>Ѝ>d> >>9v=yN===n=>!:K>C(.>M+>;?>d=/:D9g;g<'Y< f= 5=K=Q0=3m=g&>g>Xe>>a>>>f>/=:*=*z=>>HBT>o >z>k5r><~=07!{>` >ԁ>ë>>@>I>rZ> =R=x =n>Q>W)>~>q>{m>P*> =R9g:g;d>y>]>>@>>%`>[#=m=rܫ=J {=D>w>G>r\> >qp>C>{<ܫ9g:g;g<g<ѳ< f9v>H>q$>g>@>z3>']=OW==,=_yN= f>/>F|>W)>F>/=̹;!9g9g:C;t!<'>W>g$>S)>$̙= =1;?<g<_(=XT=n>>-'> =ȃ=R9g9g:g;g;:t:g:g:D;m~'>@Y>Sx>HBT>"#=?=d=g;?:D:t;;!;:D9g9g:g޵>+>>OW>-y >v>=%`= 5= =M+=OW>>g$>(>|><>}>1F=9=_yN<>-y >`>t!>ga>9v==ѳ=Q0==>N>>]>>>k>m…>d==t=g=&Tq=]n=t!=WOw=cDn>y>H>66>W>B=51=T=>w>k5r>:K>o>>n>M>@>=s=9= 5=VJ<===R=I@<;9g9g9g;dt=(^=~>C(.>x>U>">\i>%`=ʎ=*z=i\> >f\>>>>>Y>~>GM=5=&Tq==VJ<=====WOw<_;?9g9g:t==0>*>`~>u[>nq>I,>u=@=zG=^=>Es>t>>>Ѝ>2b>UE==qp<w>7>N>IG>,2> ?e= =T?=XT=>&>]n>v>>>Z>^t>-'=:K=<:K<t<ܫ=t=-y =-y =>*>'I>N===+n='Y=Y=魚>>?/>IG>4 >Y=i\=<<= >GM>-'>Q==p5= :==u[= =i>(>d==J=Z_(<_<t<ѳ>>Y=t==N f=*=F=,==07>>^>=a==M+=R<V>2>T?>Rv>->==t!=a==+> >,2>W)>lJ>b>;?>^=̘==dt=a=qp=s=yN> >-'> )== F|>>i\>>>UP>k===>k>\(O>nv>X>U>>7>u > 5=?==51=ȃ>>/>\>h%>Rv>!7=E=*i\;g:D= :=*>"#>-'>>>>S>ٻ>I>Rv>=2>>W)>>Эy??3F?3F?>>u >'I><>+>~'>P*>>p>&>>x>L==c<=m=?>S{>qD>2???9> f>Q>0 >>22>}RF>?}?B8?M?Lɉ?@j?>g>]n>.<>%>L>>">臸>NQ>hW>F>k^>=y ==>w>f\>n?Z?&#v?(?g>#>a>E2>!7><~>>?2?Mk?c,C?aR?I'?0s>i}>\>IG>@>u(o>[>q?X?G?>ߙ>>-[==07>w><>Q0>>I?!k?e?]>L>TP>?C>k>.<>~>G?2?L?af?^g?HR?.,>V>g>P*>D>}> >!?n?)?ӽ>>]>F>d>> )>>(>>C>⩥>}>a>>c > >w>GM>Xc>n?!?@j?Jmq?Hb?:J?$>Y>r\>@>22>g >^>g?S ?8?S>M>>AV>">=L=t4> >->td>>C>>YY>=2==m>%>>¥?1?.B?,s?|>qD>>F7>q$>-'>0>>>$>=>;>D>g>$̙=!=yN=s==n=07>'>)">/B3> 5>== =s=ȃ=>,2>zG>>l>>>t!>8qD>==*>T>3>g>>Gn>>>>OW>V==R<=c=K==~G= f=:=n=n==x =_yN=,=?=yN>GM>@>W>S)>7l >~'=07= ==p5==?>%>Q0>a&>U>.~G> ==c<:D;?޵>V= = E=R=Q0= :=c=I@=O6=:>O>&>>==*;:D:g:D;dt;J<}<< f<<<}>>$̙>GM===rܫ=DU=;D=T?=:*=/=E=T=51=e<:g9g9g9g:g;<;D>XT>E>>|M >F|> )==w=e= =/=>>d=~=t<ѳ:g:g;i<<m='Y=;D=0=c{>]'>6V>>X>H>>@Y=L=R=,==>"#>AV>IG>2ԁ> I={:D9g:g<(<==I@=_yN=T?=(^#D>:*>>+>[3>ŵA> >l:> I===>~'>HBT>l>u[>cL>1=J<<;D9g:g;J->(>'> >2>+>Ѝ>u[>^=/=T=*>>V>z3>g>u(o>Dn=<9g;dt<+n<= ѳ= 5=!:K=c<;!;#D;?=m…>ٛ> >>ƙ>+>>P|>^t= =a=R5Q= E>d>Es>n>xyn>h%>::k=*<ѳ9g:g:t;<;DH>3>̙>R>8> >']= E=g=g=x =J<>%`>@j>N f>>OW>2b=5;t!9g9g9g:g;<\i<}<'Y;;?2ԁ>a&>nE">W)>!7=E=;n;J<5Q=h_=>> ==<9g9g:D;?<;i;D;?<;D'>>-'=07= :=<\i;:C:g:D;3m:D:g9g9g:g;g=g=O6=5>=T=o=46%>i>~W>r\>Dn> ==/=<;D;n< =<ѳ%O6>3>'I>v>=~G=K==Z_(=ʎ>&Tq>u[>b>5>|>aS>::k=a=XT< f<<=='Y= <;g9g9g9g:D<t=>>@Y>S{>F7> =&==?/=T=>@Y>?e>O6>>> >V>{== ѳ< f=c=I@=\i=;D< <:g9g9g9g:D>B">WOw>M>(=_H=a=C=| =$>>OW>>r>[>>>Q0==T=R< f==J {=^t=J {=c<};g9g9g:g =>0>Es>@Y>=:==/=?/=>!7>nE">">|>S >u[>*=ʎ=La>)">%>d=0=h_<5Q1L>`>q>_>.<=$=m=<t>'>c=[=n=*>>=ʎ=a< T=[=ȃ=| <*< =<R<*=h_==d=E= =c9<_(<ѳT=9=y =K<<<==,=Z_(=:K==͝==g= 5< f<<<*<_(=c=Z_(====a<*;9g9g9g<= >^>']>$̙> =/=]n<_<=%O6=:*=ȃ>>!:K>/B3>'I><=={=!:K=!:K=6=Q0==51=L=== =M+</9g:g;?=>>_>4>?e>j>f=={=i=>{>/>rZ>>7>i\>>@Y==D=/=ѳ=5=:>>/B3>>>-7>Y==R;#D:g<ѳ==>`=:>>>>h> > =a=˓S>{>0>Y>=>E"?|? %>E">>Es>=E=*=E">q$>`>>>;q>I@>=s<_Q>c>l*> >> >>`=:>~'>f>>W)>>?1?@j?@Y?1>>)3>4>> D>>eW`>>&>@> >(>;?=嘮=x=zG=5Q=>(>}>?N?H>q>>x>%>^>q$>dt>?1??4?Jl?I?=̹?E>eh>Y<>'>>@j>>>A.>˴>hW>ԁ>t#4>~'=_(=ʎ= >Q>q$>)3>&>${>>>ض>9>l:>!:K> >u>Y>??>R?IG?H2?;?? =>$>a&>-> v_>Jg>>R>?*z>>-i>H>'Y>T==p=> TP>M\z>>v>T>>q>>>^=>+>7l >>?.B?;p?:J?,>ٻ>>Pl*>!{>2b>3ټ>>>>NQ>R%>>>"?= =07==%=>c>@Y>nq>z3>bM>2ԁ><=~==i>>_>>Y? ?>ǟ>>c >(>v>=>d>Q>b>>L>>&>T?>=̘=Y=g$= ==Y=O>d>a> =07=ȃ=n=/==;>>`~>>q$>f>>UE>q$==== {>i;>M> >>>Y>=ǟ==UE>1L>HBT>AV>'I> =n=| =+n=&Tq=g$=> d>)">7*>->~'=*=<T==J<=5=K<<%`<=*=R=>Q> )>/==M<;3m:g:g:D:t;=&=%=5=;n9g9g9g:g;g;Jd>GM>^=嘮==;D=c=c=)d!=u[=?=j==?=K<:g9g9g9g:g;>@Y>nq>z>d>1F=2=a=J {=6=c9=D=:=d=Z=s=XTB>>r>5>>{G>)p=+=qp=h_==yN>'>']>*>a=:=:D9g9g:D>u[>̙>>ê>>b>P*==w=T=Y>{y>.<>O%>V>@>-'=;#D9g:D<;D<5Q==1=3m=t>">>ď_>g>>>XT=G=^t=x =n>^>;>]n>e>Q0> v_=2;:g;d>nq>>f>><>>?C=%==: =n>{>+4>N>W)>B>~'=M:t9g:g;t!;?<4> >>/><>\>w={<\i<=f=n> >#r>*>Q= ='Y9g9g9g9g:g;t!<<;D</<'Y<"#>F7>NR>3> = %<:g;<=C=/===51=Q0;9g:D;?<<L>*> v_>==(^+4>[>nq>a&>6>=TP=(<>޵=ȃ=| =/<m=)d!=D><>H>zG>U>>W)>==3m<t<>> TP==x=(^=,=%O6=5> I>F7>w>P\>~W>S)>s= =;D I>*z=d=R='I>V>g$>XT>+4=T=== :<<;D>$̙>=嘮=d=)d!<5Qd>*>)d!> d==Bٛ>Dn>c >^t>0Gn=~= =(= ѳ=(^=L=R==> >= {=h_>S{> > >i> 5====>Q>/B3>w>eh>V>V>q$>\(O> ?e==qp=| =a=:>N>8>Es>3ټ>i;==3m)d!>` >R>]>C>cL>-'=0= =T>GM>`>>?c]?M+>}B> >C(.>{=T==:>7>O%>V>o>y>C(.>=D=3m<ܫ=T= =n>51>X>f>>Tq>}RF>(=d==a>q$>u[>X? Z.?/1?/s.?o>>m…>q$=Z=J<>޵>5a>>>>>u >']=O= :=T==n=>!:K>aS> >M>>m…>!7=T==%>>p>m?)?-V?-V? T>qD>qp>']>{= > >AV> >i\>l>^>>::k=yn===D===>>>v>>n>9> =:= Z=>g>R=>>Ow?@?>ض>>W>V=?==>.~G>y>KB>>8>~W>/B3====rܫ=T==51=>>+-H>>=:==^=t=͝>$̙>u[>>>>C>l>*i\===/=> >C>{>` >>P*>=n={=a<=R=3m=p5=:K=+== f=:k===x =T==*>)d!>_>y>u >U>%=T==K=<~=p5=OW> >->@>3ټ>B=9=<md>!:K>/> =5Q=zG4>\=a==c;?:D9g:g;g;i">/>@Y>/B3>i;=ʎ=i=N= =(^=u[=?===rܫd>S{>w>>w>C(.> )=̙=I@=8={==a>T===b7l >>|>>2b>k^>q$=J=T?=XT=M=E> I>>k> =F|>#>>">>t!> v_==)d!=J {=5=>>']>)p>=*<m9g9g;4>}>N>6V>j>WOw> TP=T<= ==%>v>>>L> =51d>Dn>k^>r>U>ٛ=T{><>~'>V==c;3m:C:D<'Y=g=VJ<=T=T=3m ?e>-'> =O=:*=<t;?:D:g:D:D:g9g9g9g:g<= ѳ=c9=,=h_=%O6<Q>/>+4>"#>v>==Q0<5Q;!;3m;3m;t!;dt;g:g9g9g9g9g:g<(=c=x =x=T=4>)p> v_>= =VJ<{>w>f=Σ== 5<<'Y;?;;g;C;?<(<R;:g9g9g:gT>=ʎ=x =/== =?/=x=>g>)d!>L>Py>.~G>V==<=_H=OW=S:&>0>Q=i=ѳ=VJ<=C=h_=y =>0>v->>>>::k=[=x == ==C=n=>>%>>{=y =v>>951>I>0> =51=| =I@=VJ<=>Y>R> >,>>>_7>İ=~=_yN=I@=/=>7>4 >Es>;?>&==x <ܫ%>6%>']>k=?=T=0==R> >V>nv>&>>>a&>f=%=T=a=a=*>%`>AV>Td>F7>"#=:=:*=V>d>{y=i=Y=t!='Y=R=R5Q=[>@j>">C>+>g>I@>d=/=a=K= =5Q>>1F>C>951>GM=={<m&>P*>nE">m…>N>=;=qp= ==: =t=嘮>i;>k>~'===,ss>)d!>(>~'=9=x <{==:=t=6>!:K>->#r> I=ʎ=~2= 5== 5=a=nv=#==XT<;dt9g:g;m%O6>N f>YY>C(.>\9=t=:*=-y ==R5Q=a==Ϩ>==t=;9g9g;22>\>eW`>KS>=J<=u[=c=R=Z_(=?=ʎ=a=Ow=n=;3m9g9g:D;< =;?;#D:g9g9g9g:t<;D=R= =?>%>G~h>LW?>/>=y =t<>&>&>=Y=F-'>>-'=嘮=<}:D:D;?=g=:*=y-=Y=Ϩ>==(^;i:C9g9g9g:g;?<=dt=R=| =K= ѳ<d>.~G>;?>*> = Z<_;;J<=K==O>޵==̘=| <:D9g:g:g;dt<#D==p5==x=k= :<ѳ;D;t!<;D='Y= {>İ>951>@j>.<>= =,<( >{=d=R<;3m:g:C:D;^>)d!>.~G>L=_H=<;t>d=2==(;m;dt<<t=c={=n=:k==T=;!:g9g9g9g:g;<R<<ܫ=g<5Q==y-==3m< f<<_=3m=w==w= 5 Q>Q=y-=M+;!9g9g:D<=h_=== =<:g9g9g:g;#D<;DV> ѳ>T=/='Y;t!:g:g;<5Q=T=51=ʎ=OW=?e<:9g9g9g9g:g;C޵>>+==R5Q;?9g9g:g<ѳ=VJ<=s=y ==(^;J9g9g:D;!</>w>g==-y ;g9g9g:D<t=a=̙= = %=?/<;D9g9g9g:D;<<5Q< >g=%=a;i9g9g;g>>d==x ;?9g9g;=g=m=n==i;= 5;?9g9g:g;!<<>~'>`>"=;=_yN;9g9g;C<_=x ====,s<9g9g:g;t<ѳ<<t<:D9g:C<5Q=5=:> TP>^>T=51=:g9g:g>^>=={<'Y9g:g<==T=:K=5=x <_:t9g9g;gV>İ>f>-'=:= <(9g:g > %> 5>-'=嘮=x ;?9g9g< ==#D=d====0<R9g:g;D>-'>>v>=@=;D;3m9g:D<=M+===p5<m;9g9g:D;?<<R;:g9g9g =>{=+=h_<9g:g>>w=a=w;J9g:g<ѳ=VJ<=?==J=t=)d!;!9g9g;g޵>B>>^=;=dt;?9g:g">'>g=n=1;3m9g9g;dt<ܫ=i===_yN<_(;t!9g9g:C;#D;;;g:g9g9g<'Y=n==?=p=*=?e<:g9g;m/=n=51=*i\;#D9g:g/> I==51=&Tq;g9g9g<#D=(^===n=D=| =;9g9g:g;;i;:D9g9g9g==?=:D9g;3m< f=Q0==| =3m<:D9g9g:g:D:D:g9g9g;= 5=s=ȃ= f==_yN>=͝=]n;J:g:g:D;t!<;D=XT=;> >/==g$<ѳ:g9g9g:g;id>-'==5<;t!;t!;?<`~==E>)">L>AV>=Y=;dt9g9g;#D^>:>*z==c;J;<'Y>Es>n>a&>(=;=C;9g:g;/=Z==<#D;n;J<t=a=t4>2ԁ>XT>L>L=n=*;t!9g:g;+>>d=E={<t:g9g9g:D;i><>=n=4;?;4><=m=:k= :;3m:D< =<ѳ<t<};J:D9g9g9g9g9g9g:g:t:D:g9g:g<=g=T==ܫ==a=i;>=_H=<ѳ:t:D;g;?T>&>İ==M< f:t9g9g:D>8/>;>!7=:=T?<;D<>`~>I> >I@>= ,s>Q>XT>@j>=<<=g=K=p>Z_(>C>=>> >3W=̘=;;t!<=Z_(=>v>>> ?e==c:D9g9g9g:D=R=yN>*i\>Sx>^t>KS> 5=0=3m<_==T>^>v>H>V>~>%`>N=魚=;D<g;i<=~2= >>>x=魚=`~;9g9g9g:gN>>OW>KS>>>Q=ӽ)=Q0<̹<=s>>d>> E>Gn>>>OW=*= :;J;J >B>d=a=Z_(;9g9g9g9g:=(^=T>~'>%>q$>v>=:k=)d!'I>ui>(>)3>\(O> =ѳ<t;3m;<;D=c=== =嘮==:t9g9g9g9g<(=h_=̘==~=ʎ={-'>*>"#>T=*=,;dt9g:g;<(=g=h_=D=| =c;?9g9g9g:g<=]n===m…<5Q;t!9g9g;==x =s= =7X>^>R=d={a>/>:=d=x<<;D<=g<m{>>q$>s=:=>>4=ʎ=C;n:g;<'YV=:=}<ѳ:g9g9g:D<=?/=d===c;n9g9g9g;#D==͝>B>.<>.~G>=E=*i\< =;!k>?C>a&>\i>/B3= =h_ I>@Y>_>eW`>L>M=*=<*==| >{>_>@>&>s>>@Y=&=+n<;n<ѳ=T=魚>>q$>==T?;n9g9g:g;?=>B>VJ<>z3>{>n>?C>={=(^=_yN=51>1F>a>^>D>#>>>~'=d>0>@j>5a>x=<t:g:C:g;=p5>>V>~>K!>x>M+>==N f=u[=:>KR>O6>O>>${>W?>>%== :`>@>Py>EA>#r==;g:g:g:D==Z>=J>k5r>x>l:>D-i>==?/=P*=y->::k>C>̘>>c>>?e>t=:K=c<_=>=U>>7*>F>@~>8=:= ;#D:g9g:g;!=/>-'>?/>R>IG>*>%?=t=g<_=>">nq>̙>>>@>Sx=07=VJ<>']>>*z=5>q$>k> =@=C<'Y;t!<>U>{G>u[>D-i>= T=yn==dt>^>=Ow= < f~'>k><= =/a>8>s=O=^<;! )>O>/=̘=T?<(:D;dt;!<;D<;D;i;g:g:g9g9g9g9g:g;dt;?;i;t!:g9g9g:g</<_=_yN==_(=07=5Q=t=R;g9g9g:g;3m;n;;dt;3m:D:g9g9g9g:g:D:D:g:g9g9g;<}= ==a==?=x=\i<*;3m9g9g:g:t;?O>O=d= %f>8/>::k> =07=VJ<<\ias>\i>Q>y>L>"=t<;t!:D;?=0=OW=> === :;dt9g9g:g< == >d>F|>k5r>o>Xc>%=+=)d!= =I@=y >GM>}>>L>)t>q$>^t>k=u[<R>%>22>)d!> I=5<ѳ:g9g:g<=t>L>_>>4>z3>L>Y=t=R5Q=R= >M>O6>T>T>>>>+4=Y=6=R=Z_(=i>!:K>I@>Y<>P*>*=魚='Y;:g:D;?=,> :>`~>k>j> >\(O>f=U=x =O=>dt>>g??> >I>AV=T=qp=?/=:*=>.<>Xc>ilK>_>=>=m…;!:D:g:t= :>\>HBT>u[>]>y>T>8=ʎ=h_=rܫ=9>Py>>>G>>ҷ>>4=ʎ=f=I@=:*=?>'I>P*>`=:>WOw>4 >{=g$< =:g:g:g<;D=>>L>`~>Y>;?>=m= :=R=5>L>E>>;p>> >xyn>d=a='Y= :=\i=>w>->@~>5a>=̘=t;:g9g9g:D= 5=Ow>>+4>*>B==u['I>r\>>>k^>= E= :<ѳ< >k=%=a,>GM>B=Z=D=;!:t:t;</g>(>=5Q=zG>Y>g=ʎ=dt<};;?<'Y<'Y;i;g:g9g9g9g9g:g; =>{y=a=<:D9g9g:g^>%>'Y>=ʎ=*i\< =< =>N>oJ]>i>@~>v>=d<;:D;g=c==>=Z== 5;n9g9g:g;t=T?=2>1F>V>\(O>C(.><== <=C=>i;>l:>P|>>h>u>Q0=2=u[@> >.<>%>{y=<:D9g:g;?=p5>Y>Jg>s>z3>h_>951==,=9==>>>w>,">hW>>T>>$̙=J=M+==a=E>L>C(.>UE>KS>'I=L=3m;:g:g;dt==̹>{y>KR>u[>">u(o>J>==]n= =L>Q0>>2>>T> >>::k===g$=a=t4>+n>T?>d>\(O>9>=w<:D:g:g22>dR%>u >j07>Dn>N=51=DU=R5Q=̘>>>>΂\>>t>>S >.~G=̘=T=u[=M=?>%>KS>\>T>1L>=p5<:D9g9g;?=>d><~>Q>KS>.<> =5=<= >>t>9>zt>o>j>oJ]>c=s=M+=C=| =y->Y>+n>;>2>B=ʎ=*;n:g9g9g:g=g=dB>(> > >d=5Q=S:>a>R>>c >%`=~=;D >=ʎ=\i>=2=o=-y ==:*=;?:g:g:D:D:g9g9g9g9g9g:g;3m{>{=E= !:K>;?>2ԁ><=Ϩ>=K=/= )>%>)d!><=E=L4 >z>w>t>k5r> v_=y-=;D<t<'Y>-'> =Ow=p5L>?T>G>2ԁ>^== < f=I@= Z>-'>n>>>(>w>Z_(>/= :=*i\= =-y =>*z>%O6>22>+>"==;3m:C:g:g<=>>B">Q>AV>L=O=XT=g=C=2>k>|>]>ȤJ>ŵA>p>w2>~'= E=h_=XT=T= {>>22>C>=̹>%`=E=,s;m:g9g9g;=T>>/>Ci}>;D>L=L=p5>qT>̙>~>D>{>nE">i;==qp=i=:*=@>^>-y >>>4 >GM=̘="?;m:g9g9g:g= ѳ=>-'>&>%O6>d=%=J {7l >I>|>>/>@Y===?/=B=rܫ=Y=>-'>>==t<*;g:g9g9g<'Y=s=5Q>,>=9=<;g9g;3m=?/=…>->V>XO>4 >=/=(^#r>>OW>7*>B=:=rܫ<<;g;dt<=UE=i\=n= ={<_(;3m9g9g9g9g;=%O6= =T>= = %=;n;n&>U>u[>t!>K>d=2=: <{=!=:k=C<'Y:g9g9g9g:g<_==[> >T=n=K%>k5r>:*>4>g$>!{==rܫ=&Tq==: =g=@>޵>d> I==w<=;g:g9g9g9g<'Y=T=>{==ʎ=p5GM>Y<>>,>^t>k=ȃ=rܫ=3m=;D=b=^==m> >= f=a*>Q0>U>2ԁ>*z=?==̹==&Tq=L={==ʎ= =Эy== ;J:g9g9g:g>-'>T==Cw> =嘮== 5f>>ٛ>/=*=M+<<>B>\= =I@<=g=c=)d!=K=dt=,=O=x = := =R<=;;3m;3m;R=Z=s<5Q >^>g=Ϩ>=d=*<ѳ;J;n;m7>ٛ> =ȃ=g$=<">)d!>+4>İ=J==L=g<T>>%>~'=a==22<m< f===L>>=̹>>> =G==p5=-y =22=XT==Y>{>d>k==w=R< >x>=̘==R5Q===!:K===>x>0>/B3>B=?==x =J {=`~=*z=n=>-'>>==a= :< >(==̘==R5Q=/=Q0=T=n=&>Y>GM>O=*=x= Q=[=n=g$<;t;:g;;!<R;J< =i;>>^== :<'Y;n;?d> v_>%`>R=n=T=Rv>>0Gn>C(.>2> )=x< >2ԁ>KR>B"> 5=嘮=:*=<<<<_<ܫ<^>>>Q>B">a==< f>Jg>`~>UE>*=:= =<*<_=t=?/=I@=(^*>@>2ԁ>^==3m=-'>AV>W>Jg>=*=[db<<==4=e=o=K=c<t;9g9g:D>&>-'=t==L=%`<==M=>"#>22>'I>޵==R<t<<=)d!=R5Q=Z_(=;D=<;n:g9g;n=c=:K=:=%=={=J {=$I===| ==m> I===-y <k>>>v>=/=DU<_< >']>.~G>!7> ==ʎ=,=c<t<<'Y<m=_yN=g=qp=<};dt:g:C޵>+-H>S)>Z_(>@Y>^=D=%O6< f2b>L>t!>xyn>\(O>*( >{==v=0=%O6=a=51>{>w=G=#=~'>UP>@>:*>s>4=07=T===T=yn>B">:*>>>.n>S{>=yN= Z==/=E>>N>\>@j>w=x=>cψ>d>E>|>G~h>=?=XT=N f=>^>c9>>i}>T>q$>m…> ==Ϩ>==ҷ>d>P*>|>)3>zG>:X=9=R5Q<<>KS>}RF>f>o >51==Tq=x =u[=> >bG>>ǿ>j>L>g$>!>V==+=>V>`>3> > >S:>4= >>>Jg>4\Y>"=ȃ==p5=e===>2>>I>KB>>@j>=嘮=n=~=%>^>M\z>">> >F7>= <<ѳ'I>Q0>P*>0>-'==== ==yN>k>K>\>L>"#=yN=Kd>>~'= ={y>i;>k==ed>>O=t=rܫ<ѳ;J;J<<ѳ=I@= =E= {=<9g9g:g;g;:g9g9g9g9g:t=*=51>>w>=ʎ=S:< =:D:t;mv>==<_< =;;!<=Y=>-'>"?>q$> ===c<(:D:g:g:D:D:g9g9g:<=s>>5a>F7>3ټ> )=x#r>T?>k^>b>>OW> I= =3m->cL>u >g >3ټ==;D== =s> TP>R> >">x>k^>%O6=ʎ=Q0<<<=='Y=<_(<;D:D9g9g;g<=>=J>s>>xyn>J>R=g=-y =+n=Y>GM>k5r>'>F>W>~>/=͝=O%<ܫ<ܫ=.~G=h_={=f=-y < f;?9g9g:g+4>fL>z>n>AV>%?=a=T?==̹=D>s>bM><>>>t>%==-y v>>=>UP>KS>#D===h_=?/=>V>@>u[>k>| >KS>={<ܫ<t<5Q=,s=p5=T=rܫ=B< <:g9g9g:g<=Tq> >k>&>\=n=(=h_=B=| =͝>~'>>OW>M+>>OW>-'=~G=c<=<\i<= >>=y-=i< ff>>~'>f==*z=Q0=C=J {=R5Q=| =n>{y> 5>'Y>M>{=/=p5=<=;i;J=g=t!=^=g=8<t:9g9g<;D=: =OW><>4 >\i>a>C(.>"=2=XT==̹=VJ<=ѳ=>8>U>xyn>}RF>a&>0> =n=T=;D=(^=u[=dB>> I=p=D= :;J:g:g<=R=_H>0 >|>k>ݏ>>W)>/==]n=,=*> v_>p>>;>>ݏ>u[>-[>k=%=2=/=>.~G>a&>nE">Py>=d I>^b>>Э>G>h>>.~G=E=a=̙>޵>Rv>>D? 8?>>q$>Z_(>q$>=d>>6%>I>>i\>\9>gs>*z=3m<=^>nE">[>Эy>F>j>է>C=~= E=T>d>m…>??/1?-'j?>>zG>2>B>(>q$>i>r>>d>>>7l =i\=<=T=?>%?>Sx>f>>-i><>o>5 E=O=~=n> TP>g >ƺ|??0s?-ʯ?>l>z3>6>`>d>%>x><>Ow>/>>,>V=O=M+='Y=a=?=>f>m…>>6V>?e>U>i;=ȃ=Tq==*>::k>̙>J]?? =>4 >>]'>&">w>g><>a&>>ȤJ>)>7>>L=n=J {= :=R=^t=t=:>-'>5a>C(.>.<> =ȃ=d={=T=D>k>Xc>P|>>>]>e>*>=a=ʎ=嘮>)p>}>>s>q$>z3>%== <;?"#>HBT>KS>1F>==/=:*=rܫ=:*=t>)d!>Z>n>]n>.<=G=p5w>`>s==<;3m:g9g:g:D:D;3m;n;?;!;J;m:t:g9g9g:D<gQ=?==%`=u[=F=<<==3m=3m<_;9g9g9g:D;is>::k>Dn>1 Z>d==,=DU=t==(^===O=Y=YY;?9g:g;@Y>n>x>c9>0Gn=p=| =*=c==p5=*>w>>d=5Q=#D:g9g:C;n*z>KR>zG>>s_H>@Y>{=w<*<= :=T=5>8>-y >">{=;3m9g:t<(/B3>a&>p>\>-[=:=KGM>']>k==T;dt9g:D;;n:9g9g9g9g<=R>T>%O6>3>(> )=2<:D;<==t=D=> )>g=s= ::g9g9g:g9g9g9g:D<5Q==ʎ= ==='Y;g9g:g;?<t=(^=:*=y =5=;D;t9g9g9g9g9g9g;n<=%O6=K=0<*;9g9g:D;i>d>T==g<;D<'Y^>0>D>?C>q$=:=/=<(:D:g:D;3m;g:g9g9g:D<t=D>>DU>WOw>Es>=n=<_(= :=:K>Y>M>">>{y>g$>"#=*=]n<ѳ<g@j>u[>I>y>Jg>=| =,s=]n=>.<>g>P|>R>O6>>P*==T<{>S)>I>8>>c >&==`~=T=>Dn>w>>qD>d>>cL>=,=F7> >> >_7>`=:k={== >@Y>ѳ>d!>>7>]>Xc=t4=e<<=J {=R=t=^=m…=!{>\>u(o>k^>AV><=~=,={=ȃ>%>u >a>>w>>-=51=<<=(^=u[=R==XT= %>@Y>::k>=Z=~G=| =c9=I>>?C>nE"> >oJ]>>OW=d=S:>u><>+=ʎ=x=qp=^t==Σ>w>)d!>1F>!:K==^=,<<'Y;t<<ѳ<5Q=g >==={=a=]n=x =o= >*z> ==G=n=| =R<<;D;;#D;> >=*=/=qp=_yN=h_=w=t=ʎ=> > I=d=Y=t!=<ѳ;;T?;&>0>2Q>=…=={=p5=| ==n>>'I>C(.>F7>/>d=E=:*=(^<<=c=i;=˓S= =+=M= :;9g9g$̙>g$>)3>Y>x>1L=t= :===yN>>Z>>q$>P|>>U>ٛ=嘮=o===a=̘>d>0>>>']==/^>ilK>>R>FH>>Q>+4=Ow=y =Ϩ>>>a&>>E?66?>֋>>T?>>{=*>>)d!>r>l>C>>L=嘮=;?;J=rܫ=>%>է>{>>2>Bu>7>h%>=T=m>7X>>א?+Ѝ?8P?6?(>զ>Q>C(.> >~'>*>u[>>a>܊>ȤJ>@>::k=?=<=o=*>/B3>>D? ?>>u>\>ٛ=[> >F7>q$? D?:?Fy-?E?5a>P>P|>`=:>4 >)d!>N>>l*>P?)>=>ŵA>>=T=u[=n=?>#r>8>̘>9f>t4>܊E>>m…>~'=T>޵>;>q$??;O?Fy-?Es?5 E>~>i>fL>::k>,2>WOw>>ޔ? ?b?v>>>m>=y = %= E=Ow> >T?>f>o>U><>>7X==5Q=>ٛ>/>?.~G?9?6f?# >><>P*>)d!>>@>>R>RF? O>>>>a===m=O6=*>^>C(.>u[>">i>/==/=#= E=:>;?>>ݰ'?p>RF>W?>+>\i>']>=m>7>g$>>Σ> >Σ>,>^t>{=R=J {<=(^=v==> )>'>=0==p5=J {=]n=t=:>.<>w>m>8>v->B">İ=_H=n=Tq=U>a>b>O>V> >gs>q$=~=<ѳ;g;!<==k=x=/===f=)d!<ܫ<ѳ<=<=t!=D=~>><> I=嘮=T==Z_(=/=J {=51>">22>C>::k>=Ow=C<:D:g:t;n<(<<5Q<_{===\i<;D:g9g9g:g:D:D;g;;?;?;:t:g9g9g:D<;D<m=*i\=B=K=C=L=B= :=ȃ=2=x=x =XT=)d!==(=DU=a=VJ<= ;!9g9g9g9g9g9g:g;<'Y'>2Q>@Y>.<>d=E=/=m=]n=?/=_yN===?=xa>_>U>t>66>NR>O=X=g=rܫ={=?=07>>ٛ>w=UAV>Q>A>Y>>~>-=%=rܫ=g$=:*= f>a>=J>Jg>;>-'=;g9g:g;<ѳ===N>c>><>r>>8qD=E=Q0=J {==yN>%>P*>^>Qqe>&=ʎ2Q>@>>>C>u[>'=_= :==^t=>ٛ>Dn>V>I@> =<;D9g9g:<R<<ѳ<'Y:D9g9g:D=1>>C>u[>g>qp>?C>k={ v_>.~G>%>=R;g9g:g;;?;dt9g9g9g:g<=n= >>%>>@=s<:g;3m<===D=5Q=Z=a=M<9g9g:g:D:g9g9g9g:D,=a=/-'>::k>N f>C(.> 5=07=d=;n:g:g:;t!;:g9g9g:g>8>J {>9>^==<m=4=2>>\>>0>(>r\>)"=:=R5Q7*>m6>~>q>@j>T=m=3m={=9>@>d>>>[>W>]'>*z= <ܫ<=g=3m=VJ<=A=R<`~:D9g9g:D==>L>66>)3>+>]u>İ=o=f=d>>Y<>C>f>">>eh>u >O=^= <=-y ={===I@<5Q;?9g9g:D==…>Dn>|M >>>]u>M==x =a=>T?>W>>>>>l:> =<ܫ<_=<~= ====_yN=<:g9g:g<=D>&">_7>u[>n>Es>O==w=,=O>4\Y>E>>>D>>@j=E=0<{>.<>F|>@j>$J>==a=R5Q=>d>N> > >@>Na>:*=| <d> >q$>=E=d=J {=3m=%?=J<>>2ԁ>@Y>+4>=t<ܫ<<;D<<;D<<5Q=g=g<<:D9g9g:D==~>g>>=Z==qp=3m=0=h_=~G=嘮>{y> = =/=XT<*>i;>/=J<=s=[db=: =J {=p5=5=:>> O>==n=M+<_< >>>@Y>"#=[==rܫ=^t=| == >-'>8/>R5Q>O>>0 >w== =1===n=Y=t4>=~=dB=VJ<</:g9g<;D=3m=i>.<>z3>Q>>>AV=Z=?=x=51>%?>4 >y>L>>L>>_7>f===?==T>!:K>IG>V>@Y>= E<_:t:D=(=>-'>>>D>>@>>@~=Z=@=>0>w>>n?$?%;>><>bM>"?>{y=>w>>>f>q$>>>gs> =x <}<;D==>2Q>̙>%? ?>>OW>Y>=m><>XT>P|>?6?DZ?DN?4>>L>S{>)d!>>>OW>>>=:>6>2>Ѝ>Y=Ow=XT=<~=+=>C>>NQ?L?/?:>̹5>>-7> )>>gs>?)d!?E?Sk?Q[?Ci}? Z> >td>@j>5 E>b>̙>? ?~?>O>>GM==n=*>*z>3ټ>>Bu?EC? =>>>@>&>v>>>[db>?*?E?S?Py?B֌?f>>x>DU>:X>l{>>T?V?%;?+>lK>>/B3=a=̘=yN=>GM>pO><>ؖ>O>>`>>Pl*>^=…>g>7*>ٛ?\?6q?Dn?CH?22>>KB>c >3ټ>'I>T?>>&? ?6V? )3> >V>, =9=ȃ==ȃ=O>8>_>> >">Jg>d=E=dB=E>w>`~>>2?$I?f>:>>u >5a>~'> >!7>|Z> E>Bu>T>Bu> >zB>=~==3m=x =5=ʎ>*z>%`>%>~'=O=Y=x==/=Ɉ>-'>Z>1>> >>^t>%>=J<=~=a>(>z3>q$>>>">0 ==h_= :<>5 E>3ټ>>*z=Ϩ>=D=u[=?/=| =d>>IG>[>N f>)d!=2=:*<;?:D;< ?e>>w==t< f:D:g:g:D;3m;< => D= =5Q=D={=]n=C=22=[db=x=Y=Y=T<m;t!9g9g9g9g9g:g:D;m4>cψ>oJ]>YY>+n===g=u[=w==dB=嘮=:=n=C;9g9g:C;g<<= ѳ==c<;i9g9g=g=yN>@Y>>q$>@>t>u[>*=Ow=c== %=>>'I>/>s=07=!:K9g9g:g;t!d>r\>ݏ>>>>>S{>Q=== =>>->U>`~>P*>!7=/;9g:C;3mİ> >^>V>ȤJ>`N>>]'>k= =t!=~G> >>>g >td>d>6%=<}9g9g:g;?<==*= :<</:D:g=>k>g >>>>>m>F|=?=XT=<~=d=yn>/B3>Z>i>Z>-=O'I>u[>2b>C>8>bM>Q=Y^>1 Z>@j>2>d= %;3m9g9g:C;<}<>?/>M+>;?>=s=g;g;<=C=o=O>/=yn=~G<9g9g:D;!<;D;!;g:g:g;3m;J< f=i= =ʎ=T=*z>%>3ټ>)d!> )=~=J {>!7>=J<=VJ<<*<*=)d!=?> )>KS>>I>+>\i>== :<;t!;tİ>F7>Y<>KR>q$=@=Q0==p5=J<>22>f>>M> >>Jg=E"=a+4>`~>u(o>h%>=>==I@== >N>><>u>>>fL>v>= =g<=c=S:=qp=YY=*i\>`=:>u >k5r>@> =?=Q0= =Z>J {>m>>X>>~>^t>g=zG<_<==c9=| =i=+n<;n9g9g:g<ѳ=>>F|>^t>V>.~G>g==<~=Z_(=˓S>,s>|M >w>eh>>>5 E=͝=3m!7>7*>0>=*=== :=c=>/>@j>rZ>66>r\>@Y=2=w<_(< >>B>=dB=_yN ?e>%>->f=?={ >=db=='Y<<= :=:*=ȃ=T= =:=x= ѳV>v>=_H=Y=~2=c<*<5= 5=T=?=9=5=yN==a=<t<ѳ<<t<ܫ=K=== %=_yN>, >,s>-'=:= =(^=(=5=TP=*><>)p>@~>8qD>ٛ===C= :=!:K=3m=| =Y=ܫ>= =n=Z_(<'Y9g9g;n<5Q= >q$>hg>>>z>,s=:==k=n>>0>t>>[>>d>L>=y-=t==n=>&>@Y>KS>8>=OW=;3m:D< f=p5>g>kv>~G> >ض>><>-[= ==>/>\><>J]?? >(o>Y>Uǟ><=d=嘮>+>->u[>> >>[db> ==<!:K>V>?ӝ?EC>>}>qp>=>7>V>>?3h?C?CH?3>>>-'>EA>f><>->y>>>5Q>X>>>L==m=VJ<=̘=?>0> >lK??>>H>q>'I> >ٛ>e>y?%`?C?O?N?BdB?f>o>i>3ټ>)d!>Rv>>{?F? ><>>{y>GM==%=:>{>'I>>j>? >}>>{m>#D>/>2b>Z>M?k?C?OwC?M?A_?V><>pI>;?>,s>Z>Z>k? TP?? I>i>m0>, =E"=J<==>>`~> >@>Σ>qD>">KR>c=E">\>951>>?3?B=?A_?1^>w>\(O>*>f>C(.>է>ҷ? v? ƚ?F>P>c>)p=?=:=/==:>>U>aS>Q>x>Dn>i;=t=y-=db>'>d>R>e?Ao?,>}>5>nq>.<>^>Q>GM>i*>> >>E>2>m…>-'=U=i\=R5Q==D=ʎ>g>>$̙>~'=G= {==t==d>>c9>nv>3>O6>>\>!:K==ȃ=n=5Q>%`>i>u>>6V>u[>*==w=0<\i<*=*=`~==~=n==5==u[=Q0=e=R=?>:*>-y >Dn>@>%>==d=K=%O6=p5= {>B>@Y>Q0>C>"#==<<:D;n<3m:*>>Y=?=:K I>i;>v>===]n=0='Y=22=qp===*==#D<9g9g9g9g9g:D;n<+n<t< fq>@>nq>y>a&>/=m=̙=t!=]n=qp=8== =07==C;?9g9g:;J<ѳ<==t=I@>TP>̙>>%`>|Z>-[=O==T==:>^>%>+4>&=;=c9g9g;g<<==3m=5=<5Q<(:g:D=h_>>{>g>T>s>Kb>~>V>{== =*>>->Q0>Z_(>F|>&=:D9g:<g<=c=,s=0=!{> >Xe>ƙ>̘>OW>>`~>/=T=x =:k><>=J>a&>l>Z>+n=;i9g:g;t!'>r\>5>;>>Gn>>H=07=J {=?/=>T>.<>UP>`>P*>"?=Y;?9g:C:D;J4\Y>>+>f>CY>f\>GM=s<>+>7*>'I>޵=x :g9g9g:g<<< >G>S)>=J>=51<:D;n ===Q0<;i:g9g9g9g:g9g9g9g9g:<t=| ===i}=p5<_( >N>a&>T?>']==f<;m:g:D;?;!;:D9g9g:g;=;D=E>>>-'=yN=x =<_=3m=>7>[>>>>h%>L=X= 5g>(>: >-[> ==J {==XT=ʎ>(>w>>>|>޵>7X=O=Q0k>+4>@Y>2ԁ>-'=U=]n=c=J {=>&Tq>ui>>>>@>2ԁ=d=I@L>.<>'I><==Kd>T?>|>d>f>Y<><== :<ѳ>>-'=~=i\=as>DU>U>C(.>=n=B<Q==+=T{> === :<=?=0 > =yN=ѳ=c޵>d> )==M=/<< f==*=Z_(=*=ʎ=a=:=?=&Tq;?9g9g:g;=C=:>-[>XT>^t>951=====h_=ʎ>>C>y>>x>g$>/=+=s=H=^t=T=m=>>']>==5< f::g<'Y<5Q=o>)d!>>>o>W>Y܊>===@>~'>W)>2b>">>…>-i>o>*=嘮===ʎ> )>>>nq>|M >g$>0=O=w<t< ==4={=魚>ba>>F>>>-'>>OW= =̘=>1F>+>?0?2r?2?>Э>u[> >T=?> O>?C>>>mP>I>\>"#=ȃ=^t=*=^=:k>+>x>~>>>>>Y<>^=嘮>>@Y>>0?2A?A?A_?2b7>,>>C(.>> I>!7>n>9>K>ޔ>a>r>V>k==t==d>{>_>M>Эy>p>>>P*>^=t=>4>w>0?1?@j?@~?1\>>s>L>ٛ>Y>(>{>2>D>>ޔ>,>qp>=Σ=D==Ϩ>=E">)d!>>>^>>qp>)p===>>~2>~??0_?0W?">ê>|>::k>d=>>d>Tq>>>>Cz>g$>=ʎ=*==n==>(>V>c9>P*>']>{=ȃ==>T>Dn>>9%>,C>,C>>`>>L>=嘮=n=…>.<> >^>>>)3>>= =5===Q0==Tq=>v>>d>=a=n=D=d=5=OW> TP>J>>>>y>@>(=ʎ=i;=k==[>1L>k^>">ui>C>O==1=<g<ѳ v_>5a>0>==?=C<_<==t=i>>)">!><=%=]n,==%== =y-=,=&Tq=,'I>S{>^t>HBT>q$= =R=?/=)d!=I@=R=~G=s=T=D=;n9g9g;dt<<(<5Q<<_.<>{>>>>a&>M==qp=]n=:*=Y=yn>d>==<=9g9g; >`~>>~G>;>]>Z>;?==t!=u[=^=>>1F>9>%O6=d=3m9g9g;t!<;D>o>>F(>>>>A==VJ<=a=y =>#D>AV>J>4 > d={:g9g:D;f>Z_(>>p>Q>U>,>)p=J=(=&Tq==>>3ټ>>>*i\>{=^t:g9g:g:D;m%>i>>>rJ>C(.= =T?<#D<=8=n=T>>> =~<9g9g9g:g;J<t-'>.<>3ټ>/=:=| <(:g;3mw>>=:=| =<;:C:g:g:g:g9g9g9g;3mM>C(.>UP>F>=J<=j1L>a&>u(o>gs>=̹>k==;!:D;<<;D<#D;:D9g9g9g9g;= ==>=:==C</B3>_yN>qp>cψ>9>g=i;=<;;i<;D~'>>>M+>?C>=+=_yN<5Q<#D;;t<<}<t<<=<:t9g9g9g<(=K==ʎ=n=^= ;J;;?<ѳ=XT=˓S> >'>*z=U=dt<ܫ<=<'Y;!;?;?<'Y+>{==c9{>8>2Q>/B3>:=ʎ=B<<(>N f>Y>51==x=,s='Y={=0>>L>E>>KB> >;==w= 5=5=h_=>{>!:K>->"?>=2=<R:tVJ<>t>S >66>==O=%`=g=>{>;?>q>l >>澑>zt>Z>,o=a=a=:*=s=>+4>_yN>rZ>^>-=_H=== =>n>>>(>Z>=n=t=>4>Pl*>6V>#?d?:>%>D>V>d=ʎ==*>B>Y>>W>x>Z>==c9=%O6=rܫ==/=m>U>d>է>;>P>=ȃ=M==>N f>ٛ>?i?ۅ>8>>\(O>=T=/=T>q$>h>>eh>>rZ>%=Ow==h_=qp=,==Ѳ> 5>V>gs>T?>(>T=/=ѳ=ѳ=E>2ԁ>?e>/>ߺ>>>ѳ>AV> I===>>T?>>>>f\>q$=͝=zG=_yN='Y=H=~2=#=嘮>> v_>B= =Ɉ=:K=,=T=s>d>\i>>>r>t>Xc>GM=Эy==b==~>%>\>u[>i*>;?>{y=='Y=ca>KR>g$>c >C(.>B=̘=a=V>+4>%> = {=R5Q<ѳ<;D:D;n<;D<=)d!=qp= =,=T={=h_=M+=1="?=R5Q=2>Q>-'>i;===J {<;J<(<= :===t4== {=&>%>>V==]n=c=g=c=?/=| ==t!= :T>9v>g$>s_H>\(O>+4===J {=)d!=VJ<=ѳ=51=%=ȃ==c;n9g9g;dt<+n%>m…>>1> >Q0>'=2=YY=C=,=51=>v>>{y=9=T<(9g9g;#D<2ԁ>|M >է>>)3>Y<>=̙=0=-y = =>>>s>V=<\i9g9g:g;;?;!<(< =;?;3m:D;g%>gs>>>z3>?C==k => =J=<(9g:C:g:D;g;J<;i;?{>0>T?>XT><=D<;n<'Y==| ==Эy=*=i\=%`:9g9g9g:t<g/>==Y<5Q:t:g:D;?*z=[= =e= =d>>-'===&Tq<;g:g9g:g:g:g:g:g9g9g9g:g<=R=YY=t!=L=gw>>i;=$== 5d>*>/B3>=07=x =d=Tq=R5Q=R<_=%O6==>B>M+>x>66>a&>(=a=C<=<ѳ=,=T=Ow> >>-'==D= ;J:D;;!<}=*i\=>-'>">=嘮==0<ܫ=(==:>.~G>vn>İ>>H>KS>==<=1=>{> >0>*>=̘=[db<t;?Y>>x==?=K<ܫ7>~>V>f>:*>P*>i;==-y =c=C=> >)p>>>3>İ=;=t!>=Ϩ>==XT=R)">h%>4>>p>7X>{==c=g= 5==yn>f>.<>'I>w=Ɉ=S:< >::k>XO>Y>?C>-'==!:K<=<<=?/=%=>d> )===R;;n:g;t!<v>>ٛ>> I==9<;D;g;?</<t=R5Q=n=@==5=3m>>O=!=51=zG=<_=g=*i\=dt=x =\i= ѳ<:g9g9g:g;;J;;#D:g9g9g9g9g;=c=51>>1F>>>+n>Y= f=R=,s==&Tq=rܫ=%`===a<:g9g9g:g;g;?;n:t:g9g9g9g9g:t v_>C(.>K>1>w==t!=c<_=(^==== E=,<:C9g:g:t:D:g9g9g9g9g:D<#D~'>0>3ټ>k=p==<t<=R=h_=5==?=_yN TP> ==^=-y I>>(=a=,*z>!{>-y >"#>=i\<:D:D;n==D= =2==ʎ=}<ѳ:g9g9g:g;n<}=(=_yN===[db= <>)p>2Q>%>=d!<:;g<= 5=o=嘮>V==Ϩ>=޵>L>%O6><==zG<'Y:D;<R==ѳ=ȃ= =db= =XT > ?e=07= %<~:D:g:t;?<ѳ=0==I=s=qp >{=ʎ=_yN</9g9g:g<t=p5==U== <_:D9g9g9g:g;n >T==1;9g9g:D<={==@=OW===;3m9g9g9g9g:D;?<ѳ=R='Y=t<5Q<(:g9g9g:g;J=N==yN=J]=0=<t:g9g9g:D{><>f==XT;i9g9g;3m>*z>>{=s=-y ;g9g;g<=rܫ=o=51==C=t4=OW=3m;t!9g:g;!= ѳ=x = %==p5< f:D9g9g;g;!<;D<;g:g9g9g9g:g^><> =J<=_yN;n9g:g>İ> =:=L;#D9g9g;J==:*= E=?==1;9g9g:g;mv>> )= ==g:g9g:D<ѳ=B==x=t!=;n9g9g:g:t;?<(;?:D9g9g;J=C==ӽ)=E==M+<R9g9g:Dq=G==3m;dt9g:D-'>GM>=Ow=]n;n9g;g<=m…==ʎ===-y ;9g:g;n*z>GM>ٛ>c==XT;9g:g<=VJ<==y-=U=5=,s;?9g9g;t!d>i;>{=OW=:D9g9g;?=R=w===rܫ<_;9g9g:g;t!;m;dt:g9g9g<=h_=s==?=ʎ=T<ѳ:g:g;i< f==*<*;i:g9g9g:g:g9g9g:g<t=VJ<===a<;#D9g9g:g;t!;:D9g9g9g9g9g9g9g9g9g:g;J<<<'Y;3m:g9g9g9g9g9g9g9g9g9g9g9g9g9g9g:g:D:g:g9g9g9g9g9g9g:C:C9g9g9g9g9g9g9g:g9g9g9g9g9g9g9g9g9g9g9g9g9g:C:g9g9g9g9g:g:g:D:D:g9g9g9g9g9g9g9g:g;g;g:g9g9g9g9g9g9g9g9g9g:C:D;t!;;;t!:g9g9g9g9g9g:D<'Yw>>q=ʎ=?/;t!9g;g=g= =51= f==='Y;?9g9g;nT>-'>> = f=C;9g:D<5Q={= = {=n=t=;9g9g;3m</<\i<;#D9g9g9g TP>w==*= ::9g9g<;D=+n==D==fg>q===c:9g:DV==y-=XT==3m;?:g:g:D;<=/=>>i;== <ѳ:g9g9g:g;m<t=t=8=R;?9g9g9g<=?/=̙=OW=Tq=C<;D:D:C:g;t!<=/=*>>v>=%=k*z>=yN={<'Y:D:t;t!;t<=><>'I>#^>/==;dt9g9g:D<= :==a=qpGM>k>=n=c;m;g;?>KR>t#4>l:>::k==p5<(:g:g;<=rܫ=X=ʎ=m=I@;?9g9g9g9g9g<'Y=T=> %>%>=嘮=p5q$>l>>>W>d===嘮=Ϩ>=d> %>-'=07= <;n;a>^2>">| >H>/={<:g:D;?/>@==h_']>EA>@Y>== :;g9g:g;dt<\i='Y==#===t;9g9g9g;t!===s=dB=ѳ=R;9g9g:g==<#D<'Y<t-'>=T=x>!:K>%>=ȃ=;!< >M>u[>qp>@j>=&>>>DU>/> = :F7>>@>{>>3ټ== ;?;{y>-'> ==ʎ=*;dt9g9g9g:g<=/>>C(.>Q0>@>&=Ɉ= :{>g$>q$>v>>W>Q0==+n<;D<(-'>q$>=:=k;?:C9g9g:gw>2ԁ>D-i>::k>&=E=;DYY>g>o>f>>C(.=~= :<'Y<w>>i;==_yN;?:C9g9g9g;dt=C=a>a>'I>"?>Y=n="?;J;t!<=/>'>p>.n>>a&>B=<;;<;D=*===m=5r=y = ;3m9g9g9g:C<(=x=>>=i=/>4 >/>O==;:g:g;#DV>{=:=p5(>(>'I>Y==;!:g:g:gw>)d!>->&=;=;D<;Dq$>m…>>o>a>=s D== E=c;n9g9g9g:D<=+> >F|>Q>>>-'=2<m<<=^t>>dt>>>,>>V==R5Q<>%>= =,%O6>P*>]'>N f>%==K~'>">]>!>s>zS>td>d=T/>&">3ټ>+-H>w=<t:D:g9g:g>@>S{>F|>&"=d=qp<(<ѳ=n>d>ui>Tq>j>>>gs> =qp<*<==>> 5>-y >%> =<:D:g9g9g;m=h_=yn>!{>3W>.~G>GM==R5Q<#D;=g=a>@>4>>|>g>3ټ=5Q=*>> TP=J<=]n<:g9g9g:gi;>=~=I< ;g9g;g=a>{>3>V>T?>,o==u[R> v_>>/= Z=c<(:D:g:g<=;D==/=?=UE<ѳ:D9g9g9g:g<ѳ=R=[>a>> =:k=;?;!<==>~'>]n>g>66>W)>-'==g<;dt;m===?>f=d== :;i:g9g9g:g<=>d>0>=̹>)p>*z=<<;D< f=]n=>Sx>7>>>>KS=d=]nx>!:K>=i=-'>;>I,>;>GM=ʎ=t<>qp>̙>>v>q$>i>== ѳ<_==:K>{>!{>/>'I> )=O6<:D:g9g9g;!=R>>.<>@j>8/>M==C<;DR>c9>>L>h>V>_> =T= =,=)d!=:K=>>)p>!:K>=<:D:g9g9g;3m=3m=T>~'>'I>%>d= {=)d!;?:D2ԁ>~>է>S >|M >1=J<=8<<==zG= {>%?>d> ?e=*=T?<'Y:g9g9g:g<t=Y=>>v>==i;, >N>N>+4==,>=%=T< {;?:D9g9g:D<=[db= =p5=</:g9g9g:g;i==s=Ow= =?=S:<:g:<+n=g=| =*>)p>M+>KR>'Y==| >^>Q= E=c;dt;3m v_>j>o>>g$> =n=0v>=2=OW=22<(:g9g9g9g;3m=&Tq=>w>>==}7*> >>>;q>;?==a=g<==t!= f> >7>w==h_ ?e>GM>-'=[= :<;3m;3m< f=n>->y>>>z3>2ԁ=~=]n=g<_= :=| = {>f>d> =0=T?<'Y:g9g9g9g:C<=x=>v>>q=yN=R<:K:D9g;n=T>^>KR>r\>td>P*>u= =Y>']>'I>=%=P*<ѳ;J;!<\i<̹=)d!=w==p5=<(:D9g9g:g<;D==m…=qp=)d!<:t9g:C<ѳ=x = E==5=;D<};g:D:g:D;<<}<ѳ I> )==t=<'Y;#D:g9g:t<=22=e=K=<(:g9g9g9g:g<= :==={=;t!9g:g;< f=]n=͝>GM>7*>7>ٛ=i=x <*<#D;;<==,s=x=^==C<:D9g9g9g9g9g;= :=a= E=Tq=Z_(+4>Q0>S)>1L>{==c<&">J {>M+>->Q== <<<5Q==w=i\==n=\i<:t:g9g9g:D<:K=^t=t==f<*;9g9g:C<ѳ=O6> I>%>(>-'=*=[db<Q=ӽ)=R=<'Y;?;;J>{=t=5=C<;i;;?w> TP=*==N f< f<\i*z>{=d=/=C=m=<5Q;J;D;n<;D=)d!=>{>'> TP=yN==0<>u> =n=d>q$>=?= :=(^ ?e=== )>>d==x <=嘮= %=g=T=/=x =޵>ٛ>!:K>d=ȃ=J {<<'Y;J<==0=>>0>9>$>{==[db<_ %>C(.>O>>6l> =a=c<ѳ I>C(.>n>qp>NR>V=Ow=d=C=="?=x =͝>d>M> I== :%>T?>`>H>==7X<5Q<=3m=dB>8>g$>x> >l>)d!=?=I=| =g$=g=Y>>>OW>L>6> =:*<;?;~'>@Y>M+>6><=Y=C=<=C=n>ٛ>gs>>j>g >#r=?=o=g=T==J<>q$>P*>a&>N>as=/<;?;<'Y<*=0=(=t>d>`>^=E==-y =g>7l >d>`>8/>=+===\i=_yN= =>s>@>S)>B>=51<_;n;t!;g'>-'>=ȃ===3m===*i\=a=07>L>)d!> 5>{=x<::g:g:;n;!<==(^=*i\=c>">Q=GM>(>!:K>/= E=YY%>51>'I=m={>Dn>Z>P*>%=a=zG<*< =;?*z>2>G=>::k>d=D= ѳ<<:K=0= f>'I>^2>t#4>f>6=!=x %>;>.<> )=?=(^<ܫ<=,s=ȃ>!7>W)>k^>]'>-y =a=J {<<<}==4=M+=<~=>GM>= ==4=R ѳ>1>D>7l >d=:K<<;i{y>-'>=OW='Y )> v_>%>=ʎ=_yN=g<i;>/>;?>'I> ==h_<<= >8>gs>r>V>M= E=1<5Q>ba>4>>t#4>7>/=:k=m=H=K==>V>%O6>d=51=;J;g;g>l{>-'>>:*>M+=m=g= = =D> I>]u>> >>>nq> =T=OW=D== >9>n>}RF>a&>q$=M<;n;?<*=qp=Ϩ>>%O6>~2>KB>̙>S >a&>d==3m=3m=y >k>Ȅ>>>}B>>>7l > I=~=ʎ=> >n> >>2b>\=2=t<(;!>fL>m>>:*>P*>/==I@=Q0=o>M>> {>>q>9%>>::k> ==*=:>, >>>>ݏ>w>İ=t!<\i<<t=-y == >)d!>\>l:>Sx>/==t!=-y =3m=R>+>a&>> {>ď_>5>i>"?==ȃ=/= f> %>oJ]>>O6>1>l>7=T<\i;?;J<===E> >> =0=R=,s<>^t>>+>_>%=2=/=:*=x =^=>7>td>+>u >>=G=I@;J:t:g;n<;Dd>-'>\=̘=t=M+=<*= ==>%O6>4\Y>*( > =n<:t:g9g:g:D;dt<<t<*<<t>>w==~G=zG=3m=>7*>A>.~G>c=s=dt= :<< f&>AV>N><~>a=ʎ=3m<<g=!=2=g9g9g:C;t!;J;!;:g9g9gR>)p>6%>)d!> )=<ܫ<g</Q=T==:C9g:g:D::g9g9g:===G> I>g==YY;?:g:D;{>d> ==='Yw>`>== :<>@>V>Jg>!7=t=zG<;:D:D;t!;i;?;t!:g9g9g:g;J=t!> =>6l>Jg>;?>d=s=g<<5Q=u[=>AV>y>>">UE>d= %=g;J;<B>Jg>_7>R>$̙=ʎ=?/=g=R==>w>[>Q>>Y>m6>8=Y= <'Y<(<= :=3m=-y =R<=;dt9g9g;?={>w>@>W>L>!:K=Ϩ>=a=c==> )>U>>E>>cψ>İ=<< =<'Y<_=22=WOw=P*=!:K<;?:g9g9g;3m==>q$>4>-7>(==n= :=,=a= >1F>gs>z3>m…>;=Z=Hw> I==?=XT=<==^> >-y >>OW>,2>=={==t=;J;3m:D:D;<'Y<=<4> =*=^=M+=<m<_<ܫ===O> >d>{=ȃ=| =$̙>Fy->O%>1L>V==4=c= =J {= Z> >>>cL>i>M+>f===0==c=n=Y=>=$=5=c;?:D: >nq>s>w>>I==R=0=K=>i;>\i>>~G>>|>g$>=_====?>%O6>T?>`>D>= G>>>L>Ѝ>E>$̙==t!=g=魚>@><>`n?[u?*z>ض>>P*>=[=yN=>*( >w>>,>W>_=t4=<(<#D=4=5= >XT>>,">>51>c>9v=E=?e=> >^t> ? Z.?.;>s>+4>(>{>s>XT>>s>P>><>/B3=<@>a>>~>n>>*=ȃ=:*==>\>??/1?-?>u>u[>.<>d>޵>GM>i>d!>Ӝ>G>>O6>Q=ȃ= <=,s= =_>-'>cL>w>>>P*>=5=t!==ʎ>6%>>?i;? >ܪ>>Y>%`>V=嘮> ?e>T?>f>X>ՆP>X>%`>I@==<*<=(^=}=y->d>4>C>.<>==\i=0=<~=>+>\(O>>>>>g$>!7==y-=n=ȃ>/>w>P|>7>>|M >!{=i\<5Q<;D;n0>WOw>Xc>6%>d==5=a=,s=^t=͝>$̙>Z>r>_7>-=E"=L<#D:D:g;g;?<}=g=4=Q0=3m=< >&>=5==<:D9g9g:g:D;3m;< >-'> ==L===]n=)d!==g= :=3m=*i\<̹;3m9g9g9g;g<#D<ѳ<ѳ<'Y;#D9g;=XT=嘮>*>T>^t>I@> v_=:=#=p5=?/=(^=C==i}=*=m=3m;#D9g:g;?<ѳ< {< {<ѳ;?:C9g<=x>x>Z>> >y>F|>=n=VJ<=4=B=,=*> >~'> ==g9g9g:g;i<as>gs>Q>>I>T?>-'=O6===3m=x=5>>)d!>=~=h_:g9g9g;dt<;D<t< D>L>y>޵>p>?/>=T>$̙>==h_:g9g:g;t!<<;D;?:g9g9g9g<ѳ= Z>-'>::k>F|>4>-'=_<ܫ;3m;t<=0==[> >V=/=R:g:g;t!;;3m9g9g9g;g<ܫ=t=܊=[=嘮==:D9g:g;?<=?/==2==4;?9g9g:D;g:D9g9g9g;<= :=?/=&Tqv>>-'> d== = x;!:g9g9g9g9g9g9g9g9g;dt\>d>V==>P*>dt>W>+-H=嘮=t!{>->@>0> ==s=g<==> )>UP>>>>g >&=Tq=;J;3m;!<t-'>C>Y<>L> v_==A<= :=Tq>>p>է>>>Q>-[=T=*^>@>WOw>KR> =:=a=R==#>>k5r>O>>>x>'I== <'Y;$̙>;?>0>=ȃ=h_=<=T>޵>Es>{>>>Pl*> )=Tg>~'>=yn==N f~'>?C>N>?C>-'=<<(;;i޵> ==4=;J;;;n;t<>===K=(<*^>>V==p5<_{>, >U>\;>@~>=:K=?/=c='Y=:*=9> v_>WOw>y>z3>Y>!:K=嘮==;D='Y=F==>O>> =̘=XT<;D;g:t)d!>">>Y>s>\>=t=]n==>+>{m>zS>@>˳>>z3>(=d=?=o=>>6%>j#>x>^t> =/Q>[>>Σ>ԁ>>>4=d= := E>d>`>9> ?(>??(>><>eW`> >{=p> I>;D>>>@>Tq>| >=| <<=zG= >v>>p>%>(O>M>>V>N=d=n=s>M> >I?*H?7?6?)d!>ԁ>4>>>~'> > v_>n>R>զ>9>>,>M=ʎ=0==d=:k>Q>Xc>>R>Ѳ>D>-'>@Y=嘮=̙=:k>s> >ђ ?+9?8P?7 ?)">֋>#>A>>>%>~>;>x> >/>f>nE"==rܫ=VJ<===>!7>|M >8>O6>x>gs>~'=OW=^=#=>Z_(>d? ?+M?*?;>>u(o>,s> =>>hg>M>c>}>ض>y>c ==w=C=(^=rܫ==>>N f>]n>DU>~'=@=/=g$=T=>/>,>>j>ԁ>,>E>7> I=T=?=a>.~G>:*><>>h>>5a=Ϩ>=3m<T=a==T=?/= :=!:K=f=y->k>\;>> >Z_(>#D=[= E==Q0=g=07>5 E>s>q>x>B>:*=O<;!:D;? > ====T=/<5Q<=<_==07>>(> >==c;g:g:g:t;;<<<*<< >)p>1F>"#> ?e=ʎ=Y=^t=;D=(^=<~=g$=%?==*i\<9g9g9g:g;i<ѳ<<<};9g9g>UE>>k>rZ>@Y> I= E=zG=XT=\i==?=:==J<=x ;9g9g;g<;D<==,=J>I>|>P|>l>m…>#r= {=qp=VJ<=x =>T>>']>&==*9g9g9g;G=>)3>>>C>y>*==DU=<~=u[=>w>-><~>-y > =g:g9g9g:g;i<<_<ܫ<;:g9g<;D=>.<>z3>է>C>>a>V=o=g==C=n>>&>2ԁ>'Y>=,:g9g9g:D<<< f<ѳ;9g9g;3m=3m>T>;>gs>td>\>*=07=0;t >> =%=t9g9g;w>u> ѳ=d=^t;n9g:D<<=p5=y =U=2=R5Q;?9g9g:t<=07=n=0<=;9g9g9g9g9g9g9g9g:D>@~>R>C(.>=y-=0i;>q$>-'=:=Q0<<==,= > >G~h>}>>|>V>^=d<5;:D;']>::k>+4>==c<=c=/>~'>dt>>>E>s_H>"#==</;<;D< f=g<_<;:C9g9g9g;?=p5=>'>;>.~G>=='Y<==t>-'>_yN>)3>u>>m…> 5==c~'>'I>>g=o='Y<<=`~=>>OW>p>">u >C>+=m<<< =<t<= =<̹> = =a= <>0>@>/B3> )=?<ܫT=J<=a= :<}<;Dٛ>?C>Dn>&Tq==}=<= ==>f>N f>l>k^>D>-'=n=\i=c= :==̹=d=> ><> )=:=p5B>kv>>>:*>C=:==C==>+4>u[>U>>>̙>l>=:=5===G>'I>WOw>g$>P*>=U= :<;?=c=u[=>@j>>>>>>']===51>>\i>s>??!>->>\i>~'===>)d!>w2>F>>|>k5r>w=<WOw>>Эy>א>u9>>@==̙=>M>w>?3?4J?4J?$ZO>΂\>g>2><>>2b>W)>F>ƙ>F>s>\9>@~=d=^t=1=x==07>B">>3>#>>>4= =:K=̹>2b>w>"?!?4?4?#eh>Ќ>>:X>d>V>GM>g >f>>;>)>R>]n===qp=/=̙=%>GM>k5r>է>>TP>\>==Y==>XT>Y>I?#?"p>8 >=>nq>%>g= > ?e>P*>L>G>z>1]>ݏ>Sx=Z==a=;D=x ==J<>>Ci}>T?>@~>=Ϩ>==x ==>!:K>@>>+>a><>">2ԁ>=@=D=ʎ>L>u[>ݏ>Gn>>@>*=5Q=L=<===̹===07== =*==n=C=R5Q=,=Ϩ>>%O6>dt>g>66>^2>%==d!=n=)d!=h_=5Q>%>_>w>h%>6%>g=Q>x>-'==={=<ѳ<;D<=w=_(>> v_>&>,==;n:D:g;#D;==yN==K<:g9g:g:g:D;3m;<===dt=<_< f<_==;D=[db=Q0=<\i:g9g9g9g9g9g:g:D;<'Yd>/B3>;?>']> =U=| =3m=*=!:K=J {=rܫ=R==*i\<'Y:g9g9g:g;3m<<<`>\>>o>v->@j> I=y =a=A=[db=x=/=*=Z=ʎ=_yN;9g9g:g;Dn>:*>>r>>p>#D=~h=_yN=K=| =>>&> >=͝<9g9g:g;S:>>O6>H>f>|M >+-H=ȃ=9=3m=T=ȃ>>)d!>2Q>#D=Z=Q09g9g9g:D;t<<_<ܫ<;?:g:g<=ҷ>;>g>rj>f>m>e>&=?f> >*>==J {:g9g9g:D >F7>p>x>`~>*= =;?g>>Q= E<5Q9g:g;!<<ܫ<<+n;;<<*==?>>&> )=ʎ=C;dt9g:g;i<_=a====*;dt9g:g;?<B>"#>İ=L=T!:K>Pl*>cL>V>'I=i=VJ<<;g9g:g;dt;m;t!:g9g9g9g;D= :==> >Q==-y ;>nq>>ui>Es>v>=x<_;:D;</>O>v>=ȃ=T?<<<=g$=!>7*>k5r>}RF>p>AV>/=<;!;<(<<t<<\i;t:D9g9g:D=g==>q===M+<ѳ<'Y`>F7>Xc>IG>=:=Ld>&>w=:=a>^==:*<>!7>951>6%>=yN=p5<<=%>]'>k5r>IG>== :<ܫ=C=U>>IG>aS>/>>P\>@==D=;D=?/=t!=*>>']>3ټ>%>=y = ѳ;J; ?e>g >g>>j>N>==XT=Y=>6%>I>f>/>魚>ê>D>5 E==n=t=/>{>7*>p>g>oJ]>1F=O=,~'>>O6>y>C>m…>GM= E=}=> >N>C>0?+?@>!>zS>^t>s==T=>%`>k^>C>zS>}>nq>B=:k=?/=R=^t=*z=>w>i>>q$>>`~>~'==}=a=[>N>>m??@>>>R>d>==dB=>']>Y>Y>>>q>)p=E=p5=8=Q0=| =?=07>0>k5r>z3>ga>1F>T=̙=rܫ= =̘>1F>>~>#>>1]>>IG><=ʎ==>a>k5r>>>>}RF>%=Эy=^t=0=c=;D=m== > >-> 5>{=_==a=p5=> >\> >>M>S >_7>=:=c=WOw= =L>22>v->>">KS>w=n=<ܫ>I@>i>f>C(.>=y-=p5=R<<==>)">@Y>2ԁ>s=d=VJ<&>!:K>==D=C=R<_==%O6=F=Z_(=;D>@~>k5r>td>Y<>(=T===3m= :=1=u[=5=OW=OW=ѳ=g:g9g9g9g:D;<+>s>>2b>q>Qqe>d===̹=(^=]n=?=>g>==R<g9g9g:D;<::k>>a>>ѳ>\>== :==a= =_H>'>~'>/=&>kv>[>>\>C(.>{=lJ<< f=1=:K= > >^==Tq<t9g9g9g:g;!<t<<ѳ;!;n<g.>UP>[#>@>O=o>*z=yN=^-'>q$>=*=:*=<;D:D9g9g9g:g9g9g9g9g9g;v>>)p>;?>->^==3m<:t9g:g:D:D:D:D:g9g9g9g;g<=a=#===C<ѳ;J<3m*z>'Y>6>+-H>Y==3m<=;g:D:D;dt;n;?;J;?;3m:C9g9g:g<;D=22=d=Tq=i;=3m> >B>w=i=<{=ӽ)=T<5Q<;D<<*=x =%>>/>S{>WOw>9v> )=<<< ===u[<;3m:g;<(<*= =>,s>@~>(=t4==<= 5=>>4 >x> >>H>IG>f=:*= ===)d!==5>>+n> >*z==-y d>IG>^t>IG>==C=g='Y=n>d>WOw>u>qD>>>t>!{=ʎ=e=22=_yN=Y>>@>XO>IG>/=9=T<5Q<;D<==?/=> I>?T>T?>AV>=ʎ=h_=c==x>^>_7>M>>L>3>w>'I==T=C=a=Ɉ>>Rv>nE">_7>-=Z==>+4> >=*=rܫ=t=c=n=>KR>?e>|>">w>Z>=T=XT==0=>d>@j>^t>R5Q>%=…=*z<*<{=T== %=p5=-y =c='Y= >k>]'>\>\>_7>&Tq==rܫ<`>.~G>'I> =n=8B>0>/B3>= =| <;;n;<==>,==˓S=| =>'I>/> v_>*z=?=h_=0>Y<>a&>H> %== = 5< ==f== E= Z=<:g9g:g:D;g;3m;g:D:g9g9g:D )>AV>k5r>o>T?> =O=qp=< f= :=T==%=+=D=c:D9g9g:g:g:D;t!;:t:g:g;<=rܫ=>.<>T?>Xc><~>w==c>8> 5> ==3m<;g;g<;D=R=m…===K<ѳ:g9g;3m<;D<ѳR=Z=~G=;3m9g:g;dt<==<~== =o=| <;?:g9g9g:g;3mi;>1L>>>*> =D->Z>e>M+> =Ow=*i\;J;<#D=*==G>> =嘮==;n:g;g;i<==x ==07=~=n=Q0/>;?>cL>l>S{>#D= =K<'Y< ={>>c=T=̙=c;i:D;dt;!<== ѳ=x ==:=ȃ=s=_yN=,s>P*>U>=J>=dB=c;?;J;!q>g==<;:t:D;<'Y<*=K=Y=̙=5==Z_(=*< f<;D;?<=>>']>*>B=a=k<:D:t;3m<=,s=#=ʎ=Ɉ=:K=0<;D:D:g9g:D;==%?=8<5Q<\i޵> >=*==R5Q<<ѳ<<=*i\=C=&Tqi;>~'>v>=*==1> =:==XTq>i;> =a=T<'Y9g9g9g >x>=yN=w;J9g9g:C=̘=i\=;D< =:C9g9g:g;<}= =Q0=w=p5=22> ==m= ::D9g9g:g;J=&Tq=^= Z==R=R;m:C9g9g:g;dt<'Y<5Q=)d!=UE=M+=*<5Q{=:=~G=c:D9g:gk=?=<:g9g:g<=c=T=D=O6=,=;dt9g9g:C;3m<(>k=:=n=R:D9g;t!<_=rܫ=n=dB=/=:*=g:D9g9g:C;n4> =!==:g9g:D<=[db===m=%?< :D9g9g;C< =<;:g9g9g>=*=? O> = =<:D9g9g9g:D<;D== 5v>> >q$>=Tq<:D9g9g:g;dt<t=(^=R5Q= 5=/=zG<:g9g9g:t<*=5>%?>ٛ>GM=m=^>=*=ѳ<*;:g9g9g:D<t=22=a=-y <ѳ:t9g9g9g9g;==n=魚==J<=<;;;?#>F|>Dn>!{=yN=6;!:g:C:g;J=t=:*=?==c;n:g9g9g9g;=(^=OW>> >Q=51=;n:D:t<;D=Z_(>>B>i>fL>>OW>=qp<:D:g:t >޵= {=M+;t:g:C<R=h_>>>>`=:>\i>3ټ>V=a;J:g:g;gL>2>.~G>2b=@= :;dt9g9g:g;?<ܫ=]n=T=]n>%>%> == :<'Y:D:g:g;<=u[=d=x =;!:g9g9g9g;===~>/=:=/<_;;?<<t=`~>>@Y>gs>g$>@Y> ?e=<ѳ;:g:D >> d=Ѳ=R5Q;!:t;dt<ѳ=>M>a&>E> >^2>=n>s>^==T<;D:g:g&>\i>0>}RF>W)>L=D<t;t!:;>=*=m…<'Y9g9g;=^t>T>2>T?>Q>.<=m=w<'Y:g:g;3m=ʎ=%`=N;t!9g9g>-'==?<ܫ:9g9g:g;g\> v_>!{> = E=7*>^t>^t>;>=%?<;?:D:D==:k= 5;3m:g;<==c>x>W>~2>|Z>Y>= D>޵=̘=XT;?9g9g<(==>2b>Sx>v>u[>T?> :=y < f;?;t!;!->O>N>.<>V=>=m=n=;dt9g9g:g;+>=a=x=<'Y:t9g9g:g~'>3ټ>7X>as=t=Z_(<t;n:g:g;J==p5=:*=u[=c<;D:D9g9g9g9g</=: =#=dB==a<;D9g9g:D<'Y=T?=T>->S:>T?>3>k=<;J;g;<=4===x=-y +>N>P*>0>=:*>+>,o>B=Ow=K<'Y:t:D;g{>k=yN=d=g<:D:g9g:D<;D<5Q=R<_>>*z= E= 5<;D;dt:g:D;<=(=%O6=x>İ>޵=2=<;3m:D:t;J<==<_(<'Y:t:C9g9g9g;n<==c<;dt9g9g9g9g;dt=&Tq=Y=>Q=d=,<;:D:g:D;=g===a=g<'Y:D:g9g9g9g:g;;i;:9g9g9g9g:g:g:g9g9g9g:g:g;3m<<ܫ=rܫ=n=== :{> =07=ѳ<>2b>T==K(>:>=n=(w>'I>%><=~h=h_> ===c >"?> 5>*z=?=VJ<<<<;D >V==c;:g:D;g;i >Q=̘===<\i;;J<====07>== E=N;t!:g:g:g:D;g<3m=g=J {=a=M+=<< =;3m:g:D;!g=T= Z=C<;:g:C:g;3m;;n;3m:g9g9g:D<=: =51=;=y-=qp<;?;;g;!==>+>-'> = {=Z_(T>>%?=dB=3m>>==A<5Q>"#>*>B===<`~;?;?-'>5>B">+=2=T=4>a&>gs>C>-'==_yN=<>'==*>HBT>V>?C>=O=,<>_>:*>#>gs>$J===22==3m=>>.<>@>*==XT;?:g;<<=?/=X>d>6l>C>->{=| <*<;D<;D=R=I>İ>d> >O>h%> = =:*=3m= 5=N f=>-'>C(.>Y>C>-'=<'Y:g;g;^>a> ==BQ>=J>i>i>>> O=~=YY=R< =t=>v>>6%>L>;D>d=t`>`>{=/=h_<'>!{>==h_;i9g9g9g:g:D;n<=N=0=!:KV=5=y-==22<<t<;;!<_=(^=cv>===zG=<<;D;?;?<=H= =w=;g9g:g:D:D:g9g:g=*==D="?<;D;m;:D;n<=VJ<=:*=T=c;9g9g9g9g9g9g;t= 5=:*=?=i;=6<;D:g9g9g9g;3m<ѳ=*=XT=?/<:9g9g9g9g:gT=07=Tq=&Tq>(>%`=Z=,<;:g9g:C:t;;?;t!:g9g9g:g%?==5=g>-[>@j>1L><=<;n:g:C;<'I>;>-7>=t^>ٛ>O=J<=T?<;D:D:g:D;i<(<*T=Ow==-y <_<(<(;<;D=M+=ȃ>>^>T=~=M+<t;?:D:D;J>.<>::k>#^=5== :%>R>Zv>?/>d=n=T?/>fL>u(o>Zv>s=:k=;D#>s>s>m0>;q>>>=y =_yN=: =^t= > )>/>@>)d!=:=B;J:t;i@>@j>|M >>qp>/B3=%=9<L>b>l>51>KB>`>GM=:==m==>.~G>k^>>i>'Y= Z<:;<== :=g=>.~G>i>w>_7>"?==<ѳ<ѳ=: =>T?>F>>C>v_>eW`>Q=E=t===>C(.>g>>>aS>C(.= =g;g;< = >.>@Y>*==u[1 Z>q>A>>:*>B"> ==w=M+=u[=Ow>22>u[>4>y>;=yN=;g:D;g<(<=9=~G== =J<==7>a&>d>?C><=T=g$=R<*=R=> O>@Y>WOw>Dn>=<:D:C:C:D;>{=E==3m{>-'>=Ow=^t<:g9g9g:g:g:D;n<;D<= I>>v>= ==x =(^(>, >4>%> =n=u[=t<ܫ-'>6>@>-7>w=dB=;D<<<< f=XT= Z==~=m…<(9g9g:D;m;?;t!:g9g9g<=R=>q$>'I>`=G=<<< =<'Y<=XT==ʎ=OW=u[<;D9g9g:g:;3m:D9g9g:D<ܫ=*=yN=d=a=D= ѳ:t:C:g;3m == E=(^'I>::k>+>4=t<_;9g9g9g:D;t!;g::g9g9g:g{=魚=t=g<;D;D;>@>V>F|>ٛ==;!:g9g:D;?=:=I=d>;>P*>A>GM=?= ;?:g:g;>*>q$==<;dt:D:t;t<ѳ<<g>=a==3m<_<</<#D<ܫ===>">x>=n=M+<ѳ;?;g;?<t=6===:*=,s~'>951>Dn>-[>T==(^/>::k>f\>nq>O%>&=%=a< < {= =t!=>޵>w==Tq= ;J;3m;>;D>u[>aS>l{>+=͝=VJ<=;?>>̙>>E>U>==| =YY=g=ʎ>>A>V>>> ==<;g;J<=H=̙>k>Q0> >>|>AV=_=\i< I>ga>>Σ>=>,>rJ>*=E"=i\===n>>@>66>>">=J=d=c;?;!>>z3>R>s>1F=͝=,s<>q!>>֬3>z>X>>/=[==Y=> >W)>>>>>Z>=Q0<;<}=R=UE=/>i;>@j>S{>=̹> )=:*<<}<=*i\=>R>>>>F>fL>=Ϩ>===f==>Dn>>>Q>Pl*>T=VJ<<;;<}<_=VJ<=:k=m> )=d=?=(^<~'>\i>aS>+>cL>%= =='Y<m=*=>>S)>nE">[#>%=̘=;:D:g;g< =<=*i\={=/=p5=!:Kg> v_> > ==dB=k=g^>q$>==:*<:D9g:g:D;g;<3m )>']>->k>g==T='Y=g->V>]'>DU>=~==%O6=Q>9>a&>j>Q>#D==h_=,=07=5Q=*z<3m9g9g:g;g<<;D;J:D9g9g:g==:>!{>G=>Pl*>::k>=OW=R<;D'>> I==C;:g:D;?<=L=/==?=;D;?9g9g:g;?<'Y;t:D9g9g9g:g<\i=0=d=:K=R= :;9g9g9g:g;L>, > ==:*< f;9g9g:g:g:g:g9g9g:g>5a>J>>OW>N=51=< =:g9g:g;#D;n;:t:g9g9g:g<ѳ=s==yN=ȃ=<;i;dt;<t=a> >0>C>7>== <g:D:g;3m;J<'Y<(;:t9g9g9g>!{>İ=?=<t;;3m;g;?> D=…=#= ;!;3m;g;<=6=:*=?=x=C<;C:D;<;Dk>!:K>+4>GM=E=qp=>/B3>XT>_7>@j>= E=)d!*z=?=o=)d!#D>\i>n>T?>t==,s<ܫ==T=…>1F>}>>>Q>M> =Y=M+='Y=^t=>>,2>@Y>+>V=d<;?;?5 E>v-> >o>/B3=:=: >Z>i>ê>ɩ>>w>'I=܊=d=k===yN>'I>gs>,>m?>*( =Ϩ>=3m<3m< =<=&Tq=T=+>'I>e>w>`>&Tq=n= 5<t<=w> >g$>>>Ϩ>>=>@>-[==t=rܫ=ѳ=>;>>O>P\>Es=yn=p5<}<'Y<==g=C=5>/>0 >C>/B3>*z==<ѳM+>m>[>Gn>&>b>&==v=3m=_yN=>*>rZ>>{m>=J=T=i=07==CB>\i>|>>b>&==| = x<< =R>/>;?>W)>Es>GM==(^;J;dt:D;n</ I>']>'I>d==f<;J;;?=c=>{>>w=a=^>*>0>q$>V==]n=R<5Q< f<_(=c=3m=;D=,;n9g9g9g:g;;!<;t;g9g9g;?=i>>3ټ>\>a>HBT> %==w=c<<_==u[=?= Z=^=:g9g9g:g;n<(<#D;i:D9g9g;?=zG> >@j>i>o>UE>#D=t=VJ<*>Pl*>W)>>OW>= <ܫ<#D<;D<t= 5===5Q=~=a;!9g9g;3m<;DGM> %> =~h=(^;t!:g:;?<=J {=Y=?=:*=;9g9g;t!Q>w>޵==M+<=;t!9g9g9g9g9g9g:D<ѳ=3m=R==qp< ;i:D:t;<=rܫ= >u>%O6>=[=(<_;?:g9g9g:C:g:C:g9g9g9g:D<ѳ=C=c=:K==< =:D;g;-'> >GM=5=<5Q;J:t:g:D;g;#D;;g:D:C9g:g<==T=s=| =c;t:g:g:t;<_=/=>+=[=*=22-'>-[>2ԁ>q$=:=p5<ѳ;;?<\i=g=| =51=*=U== :<:D:;!<t=t=d=07>ٛ>*i\>=yN=]n<>N>z3>|>f>-[==Q0<<%?>> ?e=Эy=,< f;n;dt<3m>1F>G=>3ټ> I=1L>{G>>U>d>UP>d=5=(^<==ѳ= >%><~>+4>/=2='Y<;n+4>@>.~G>=<_<;D<ѳ=<~=yN>>>f>A>>>]n>x= Z=: ===>:*>9v>V>Dn>~'=ʎ=Ld>>==w< <}<}=R= E>)d!>s>>>l>rJ>A>\=ѳ=c+n>F|>::k>'=U=3m<;;n<<t=c=| =OW=Ow=n=Y=K=R<;?>a&>cψ>C>= = : >f>u=T=t<_;;g:g;3m;i<===Q0=qp=_yN=A==<N>>=o=-y </:D:g:g>GM> )=T=^=!:K<L>Q0>4>w=2=<B>3ټ>9> =d=T<;J;t>==d<:t:g:g;3mR=:=5<_:D9g:C;g<;D= =rܫ===Q0<;:g:g:D;n2b>2ԁ>@Y>+n>=N<ѳ::;<t=Z_(==+=ȃ=5=3m=魚=5=;J:t<= ==>>1L>]u>i>Q> =%=;J;m;?<*==O>T=[=ȃ=T<*;dt:g;3m;!<= :=d=t>*z=[==(^R>@~>hg>rZ>Xc>%=i=-y <'Y;i;?<*==E"> )>=Ow=Y<;:D;g;i->Td>Z>@>=/=g;i;n;dtV==@=m >&>*>~'=d=a<:g:g:g;====y-=t=!:K;t:g:g9g:g;3m<<=t=C==̹=&Tq=( >w>T=U={=c<<<>GM>{y=ȃ=p5<ܫq> ==07=s={=O==&Tq;3m9g9g9g;dt<=a==d=XT<;3m9g9g9g:g;i;>M>O==| ;!9g9g9g;g= ѳ=x===d=t;i:g9g9g:D;?<=%`=p5===0İ> 5>=07=g<R9g9g9g;g==c=D=OW==&Tq;!:C9g:g:D;<ѳ= :=h_==T=?/<_<;D:t:C:g<#D=h_=><>-'>f=U=;D;g9g9g9g:gw>w==x<:g9g9g9g:D<'Y<d>=[=/=<'Y:D9g9g:Dw>%>']>d=s='Y<:D9g9g;3mw>%>%>d=U= 5;:g9g9g:D<'Y<_=>d=Z= %<*:D9g9g:g;3mO>i;=~=?=R;!:D9g:g;3m<;Dd>'=~=<;:g9g9g:D;J<ѳ<=n=H<=;g:g9g9g:D;D<#D<;D;J;dt:g9g9g:g;g;i;n:g9g9g:C;3m=qp >w===;:g:g:D;J=c=:*===*;!9g9g:;<'Y<=R5Q==yN=L=T=Kw><=嘮==;:g:g:D<;D=3m==ʎ==^t<;D9g9g:g:g;t!<=c===2=/= <:D9g9g;g<=h_=j=07=嘮==a<;g:C9g:g;!= := :=OW==VJ<===(^x>M> ==N f<'Y:D:g:D<= =T==rܫ<;?:C:g;n >>{=i\=c<-'>6%>;>s=?={> =07=<;?;3m:D;?==n>&>@Y>@j>!7=d=<;m;;?k=O=<*:g9g:D:D;v>>%O6>%>^=@=N f==D=;D=<g>$J>+4>GM=={<;3m:D;#D )>N>==%O6$>N>V>8/> ==g;i;m;i{>=yn=<*;!;:D;==>.~G>[db>`>@>= E=<(;?;ic>g==;g9g:D:D;?>A>Es>)d!>T=<;?;t!;t!<={=> = ==N;#D9g9g9g:g;d>-'==I=<g:D:g:g;J===̘=n=%?<5Q:9g9g9g9g:g;#D<(<ѳ<tV===XT>q$>'I>=yN=h_<;D:D:g:D<'Y=(=zG=a= =)d!=*=t= < v_>HBT>Rv>7X>=< f;n;g;dt<=a==Ow===g;:C:t;n,o>V>]'>A_>=>@j>F|>, >g=x<ѳ;::Di;>>==;:g:g9g;gQ>*z=魚=o==̹Y>>=~=;9g9g:g;dt>,2>4>!=yn=T<;D:g:g:g;==T==%`=qp=g;n:g:g:D;>7>@>)p>{=>%>+>=yN=XT;i:g:C9g;g<*=| =o==| =g;9g9g9g:g:D;nf=a=x<*:D9g9g9g:g*z>w>Q=OW= 5;g9g9g9g:g<;D= :=`~=h_=/ >-'>/=U=)d!;3m9g9g9g:g=嘮=<_:g9g9g9g:g;!< =C=T?=&Tq<:g9g9g9g9g:g;dt<'Y<==,>V=*=m<;g9g9g9g:g;g<(<;D</;?:D9g9g;t!<=0=]n=5<;dt9g9g:Dk>=͝=rܫ<}:g9g9g9g:D;;?;?;dt:g9g9g:t<}=='Y= *z>= f=}޵=m=ʎ=p5=g@==?= x;dt:g9g9g9g;t!<(=g<*z=07==;3m9g9g9g9g;<t=g=g<;9g9g:g9g:D;{> TP>+=d=T<:g9g9g:g;g;J ?e>@=̘=p5> Q>V=͝=w<t:D9g:g;g<<t<**z==s=XT<;D:g9g9g:g;==M<*:g9g9g:g;g;:D9g9g9g9g9g9g:g;n+>v>==ʎ= > >T=Эy=d=c;?:g9g;g<=c=-y = :<t;t!9g9g:g:g;J<*=<~=T==f=<#D;J;!;i<=R=| ==E==[=t=?=| =;!:D:g;3m<}== 5= :<;i:g9g9g9g;g{>=[=~=F{>>V>w=a=<_;#D9g:g;k>> %>=9=t=c;i:g:g;J=g=N f=h_=?/<_;J:g9g:g:g;?<==C=M+= :<=;i<<#D;J<'Y= ѳ=x = E=:> => ===g=< =::D;!v>> TP=yn=/=(^;!:g9g9g;3mf>k> >d=i=| >k> >d=O=/<;:g:g >w===p5<;?:D;gO>>T=~=;D<#D:g9g9g;i<_=(^=-y = <t;?:g9g9g:g;g;?d>>=OW=J {Q> ѳ>+=d=m<}:g9g9g9g:D;?<;DR>T==p5{> )>{= f=x <=:g9g9g:g;>~'>=07=N<:g9g9g:g;nv>>'> )=a=R<t:g9g9g9g:D;?{> =m=ȃ=m…<}:g9g:g;n<} >-'> = =>w>=d={{=…=/=C<#D:g9g:g;t<=g=c=< f )>B>O==/<_;9g9g:D;;:D9g9g9g:g;d>>~'=?=%?<;9g:g;3m;;:g9g9g9g:g;g>d>v>==J {<#D:g9g9g:D;;t!:g9g9g9g:g;g;i>&>=L=<;g9g9g;<v>>-y >A>4>'= E=;n9g:D<<'>>>S:>C(.>=J=;:g;dtv>>->@j>1 Z> =s<:D9g:<<(<ѳ;J:g9g9g:C:D;3m;!^>V>d=:=C;?:g9g:g; TP>>=0=/< f:D:g:g;J<=<ܫ&>,2>->> ?e==T?<'Y:g:D</==rܫ==C<t:9g9g:D;?<==3m==>\=~==R=1= :==c==%>d>.<>F7>EA>3W>L=O=<;t!;T?<t=\i=y ==:K=C>/>C(.>Dn>7>q$>T=i\= :<(;?<*=}=T=*=?=<_(;t!9g:g:D=U==N f====0==E> =>/>+4>->'I>x=?= %=c<;D<<=f=i\=dB=2=T<;:g:g9g;<*=XT===R=C<m< {<<=g=w=51=嘮>*z>^>'><=[=?=a< f<;?<}==b==g=P*GM>']>ٛ=J]=,GM>G=>\i>Jg>`=(>^t>s>_7>&=<_:D:C;<=R=<*;J:g9g9g:C:t;< v_>Pl*>cL>N>=~G<=:g:g;g<=k>']>2ԁ>!7=d=g$;?:g9g:g<*z==5<;dt9g9g9g;t!>=Z=~=VJ<<\i:g:g;g<==;D=>+==5=| =F= =,=UE=>> >5 E>7X>%> I=~=)d!;J:D;?=,=x ==s=`~<=:g9g9g:D TP>>GM>g==g=Q0=*=&Tq===J>%>Td>t>s>T?>)">V=<;?V=d=t! >`>>=~==P*=*i\=L=~G>>>>u[> >>s>@>s=ʎ=K<=<=x =yN>>k><== 5;:g;dt;J >k=i=D=w=J {=(^=e=?>R>;>td>>4>r\>Es>==p5< {<_=T=>~'>!{>=E=p5"#>R5Q>k^>k5r>W>3ټ>d=ȃ=XT<޵>d>==t! ?e> >1L>4\Y>+>~'=*== :<t4> >V=E= %=B<*T>=07=t=<(;t!:;3m<'Y==R5Q=^t=i;>>"=ʎ=,s;t!9g9g;m<tx>AV>T?>?C> TP=<'Y9g9g:D(>[>n>V>=5!{>P*>_7>Es>^=<9g9g:t =>'I>/B3>= =?/;n:g9g:g<<<_<{= =^<;3m:C9g:g;n<V>>>=̘=t!<t::D;> > 5><=E==T=0=(^==yN>B>>OW>Xc>WOw>;>B=Ѳ=]n<ѳ;?>;?>;>#r=2===;D=Q0=> I>AV>| >>>u[>@Y>^=/=0<=,=~'=ܫ>M>&">=j= ;:D;DM>3ټ>6>==/=g=A=h_=U>>`=:>>g>>>\>!:K= =T=g=1=*>d>951>L>3>%?={>~'>>=*=D=x =3m=u[=>-'>]'>>|>>ѳ>`=:>%=07===C= >d>::k>N f>9v> TP==;i;dt;>;>v->=> >u(o>IG>İ=5Q=qp= =&Tq=*=G>>-y >q$=m=n= :;J:D:g;-'>7>Pl*>Q0>@> v_= =='Y<<=VJ<==:>==͝=Y= :;J:g9g:C;<ѳ >~'>>=*==Q0/><===: <>ٛ>$̙>-'=5Q=L<<'Y;J<(<=VJ<=t=5=s< {;3m9g9g9g9g:D;<;D<<*=g=g=g=g==qp=n> >%>/B3>%`=9=R5Q<};J;n;i>$̙>=+=0<;dt:D;3m<'Y=*===TT=a=d< f;:g9g9g:D<;D= :=J {= ;9g9g:g;g;m;!;!;;3m;g;?=x ٛ>&>-'=dB= ѳ:D9g;<<_<*c>1L>@~>%O6=yN=-y ;g9g:C;w>,2>2ԁ>M=*=%O6;9g9g:g;<>s==:K > )=~=?=VJ<<ѳ::g;3m<ѳ= :=Q0=?/<;?9g9g9g:g<<=Q0=~h>>(>)d!>=== =0=!:K==>~'>;?>W>Xc>7l >=ȃ=VJ<#D>C(.>HBT>/> )=̘==B=K= Z> >AV>|M >>>y>@~>=2=;D<===>8>*>B=5Q==̹<#D;3m;as>>OW>B">,s> =+==C=\i=>B>`=:>O>O6>̙>>_7> ==| ==C=>>>OW>Q>;> ==;i;n;m<=22==>~'>\9>w====;D=_yN=>-'>]n>>Z>>>a&>!7=O=T==VJ<=>-'>>>Q>>>d=?=;D<'Y;3m:g;?<=DU=N=OW=@=Y==d=dt=(^=h_=>޵>;?>u[>>Q>u[>Dn>d=?=R5Q=R=3m=y >V> >.<> v_>==4< =:g9g:g;J>4>N>P*>;>GM=== <=R=zG==[>/==̘==;?9g9g:g;t!;J<'Y<< =/>-'>-'>/=E=^=^>>/=n=N f >%>.<>==h_<*i;>2Q>@>(=yn=t!>(>6%> v_==^t>>{==<:D:g:g;3m<=h_=i;=f<ѳ:g9g9g:g;g;;J<(;i;t!:D:D;J<_=Z_(=/===,s<=;t!9g9g9g9g:D==&Tq;J9g9g;g< =<;?:g9g9g:D;n</<>>޵=n==R5Q=g%`>22>2Q>=d==<;D;dt;>+4>0>=!=D=====O>%O6>Y>z3>{G>Y<>$̙==*z=R>d>= Z=t;!:t:;m<(=3m=> =>%>+4>M==U==*i\=+n=̙>q>>>w>8>>}>B">^==1<= =/=>8>,2>==/<;;g:t< =<_=w=ʎ>> >=E==*z=/=;D=>>: >u >>>{G>C(.>w==-y < f='Y=o= > 5>-7>f==s=;?:D:g:< =<=C=d=n=o==x=a="?=M+=?=07>q$>Pl*>nq>q!>W)>']==| = =<=t= %=>w><> =5Q== ;:g9g9g:g;<<< =c=(^=(^=c=g=1=O=n>T>M>.<>0>8==?=<<<=w= E=O==%=n=rܫ< f:9g9g9g:g:D;dt;<#D+=07=Y=*i\-'>> )=n=C<<'Y;?;iV>/>'I>=̘=Q0<B> >==A<;t;dt;g;!=+n==̘=o= :;9g9g9g;3m;!=t=~'= {>V=T=5=!:K{>=t=~G=R=,s<<=J {= Z=>>;?>;?>q$=~=5=<:;t!{=嘮=J==R5Q<<=rܫ=>^>::k>Y<>\>@~>==0<=;?<>3ټ>UE>Xc>>OW>=n=*<=<'Y<=rܫ=_=5>T=a==C<ѳ:t:g:g:D;3m;!<=8=rܫ=T={=a=*i\=g=t={==Z>>.>1F>k=!=<*>޵===*<;D;<d>^=?=o=%O6;t:D:g:<t=?/=R=~'=| ='Y<;t!9g9g9g:D; > I=嘮=?=c;m;g;3m<=(=| =?==:*=;D<;:g9g9g:g:g;dt<>{=y-=a<}:g9g9g:g;m<=g<_ )>{=ʎ=| <;3m9g9g:D;!<_=)d!=(^<5Q;?:g9g9g9g9g:D<<=)d!=22=c<t;!;dt:g9g9g;t=R5Q=OW===/=zG^>=:=,<:t9g9g:g<2b>']>%`=2=D=;?9g9g;3m<=C=/=T=<;D:D:C9g9g9g:g<==u[=:K=#=zG<<'Y;n:D:g;dt==~h>>%>>Q=y =*i\<;D:D:g;?<_=u[=i\=n=rܫ >4=n=%`=)d!w> ==yN=^=;9g9g:D<;D< =(^=<t;n:g:g9g9g9g:D>(>!{>==3m>(>"#>=X=K<=;3m:D;!=R====͝== :;!:D:g9g9g:g;<==(^=T===a< <(:t:g9g:g> ==s=3m<;m;g;!<_=w==n==*<#D:D9g9g9g:g:g;R= =ʎ=qp>i;><==aQ><>=yN=x<:D9g9g:g;t!< >> )== <:C9g:g;-'>><==̙<:D9g9g:g;g<;D<>~'>d=O=/ >d>{y=J<={>L>=p=< f:g9g9g;3m I>> ==^V===,s;?9g9g:g;?<<ܫ==g> >=ȃ=_yNV==:k=K{=[=j=h_>>==a=<;D:g9g:g:D:g9g9g9g9g:t> v_>&===<:g9g:D;g;#D:g9g9g:C;t!{>O> )=d=f<ѳ;t!9g9g:D;;:g9g9g9g:g;t!<<=<<5Q<<;D;g:C:g;dt<=zG=j=i=̘==g;?:g9g9g:g;;dt:D:g9g9g9g9g9g:g;dt;J<<'Y<'Y;J;#D:g9g9g:D>V=!=:=5=;D<;3m9g:g<< =(^=޵===f<;t!9g9g9g:g:D:g:g9g9g;==x =M==k=<;n:g;?=>,>%>;>1F>-'==;D>T?>nq>dt>5 E==x <;3m;3m<;D+n>e>Y>ui>C(.>g=u[<;;/>Sx>m…>`~>.~G==8<:D;{>']>: >-[> =̙<*;#D:g:g;i<=<<;D;g:g9g9g9g9g:g;dt;! =2==J {<\i:D9g9g:D;J >~'>a>^=:=D=c;:g:g;J>f=a==L=c<_=g=qp=ʎ>>)d!>@~>@Y>+4>-'=~=| <:t:D<'Y='Y=i;=== ;m9g9g:C;<;D=(^==>w> =p=X=| =K=+n=DU==[> >DU>]n>Z>C>%>+=y =;!; ?e>v>=:=51==x =XT=v=D>V>%>I@>Z>W>F|>+-H> =Y=?/<<<=d=E=O=Ow==R;dt9g:C:g;J===Σ==07=̘=?= =p5=M+=t!==Z>B>1 Z>@Y>>>22>q$>+= E=3m<ѳd>GM>&>x>v>=E=R=gO>>=~=<;3m9g9g:D< =%>]n>v->k^>;?==qp > =d=51=rܫ=g<ѳ=L> >Zv><>%`><>r\>k=>^>Q=={=g<=>`>qp>;>">5>g>)d!=,==y =B-'>c >E>> >s>`=:*7>nq>;q>u(o>>=T=0;m:D; ѳ>+4>;>+4> Q=?<5Q;3m:g:g;?%?=p= =\i<=:D9g9g:D<\i<m= := v>>L>)d!>'I>`>{= =N;:D< ====*=x=C<\i:g9g9g:C;<=m=~>-'>"?> 5><=5Q==K==C=>v>>0>Xc>r\>rZ>UE>,2>{=<;<=]n==T=2=0=a;J9g9g:D<'YV>%>>>>OW>$J>==x =Q0= =i>%>b>>>I>>>Zv>!==a>#D>0>=T='Y;C:C:t<'Y<_=>%?>'I>@j>C(.>*( >v>=U=s=T=I=>6%>">Y>j>%>>x>;?>v>=:K= 5=3m=T>GM>F|>[>C(.>d=<=:D;3m< =<===_H>M>.~G>0>k>,=ȃ=?=ѳ= >{>3>,>̙>qD>>>z3>A>d==K=WOw=Ɉ> %>M+>`>KR>İ=~=g;t!;3m;k>>>v>=a==/=R=n=T> >_7>d>;>u>>fL>2ԁ> D==B=J {=2> O>.~G>A>.<> )==;:D:g< ====ʎ=9=a==:K=R=u[=R5Q=g=ȃ>v>>*>T?>h%>g$>Xc>;>==== :={=ʎ>/>> =J<=%?<_;t!:C9g:gg>> >$̙>k>^= =5=3m<>ٛ> I==;D<ѳ;!;?;!<_=a===p5<;J:g9g9g:g:D;g;?;t;J<;D<=<t<<5Q==| =Ɉ> >!{>'I>=:=J {<'Y;t!;3m;?<=f=:K=~G==(;?:g9g9g9g:C:D;3m;;?<;D<ѳx>&> =̹=*;n:g:g:t=i==qp<t:D9g9g9g:D<#D<m='Y<;!:g9g9g9g:D;n<<'Y;J;n;<<< ==0= :<;:C9g9g9g9g:g;g:D9g9g9g:g:D;;:D:g:g:C:g;g;;;;dt:g9g9g9g9g:g:C9g9g9g9g9g9g:g:C:g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g9g:g:D:D:D:g9g9g9g9g:g;;;?;g:g9g9g9g:<<<<>.~G>%O6>{=t<5Q:g9g;n<<<_<ѳ;?:g9g:g;?= =/=>>{y=Z=~=T=*< f=-y =T>@Y>}>>I>Of>%?=a;J:g;n<*=<~=a=I@=g<:g9g:g;3m<}=DU=~h>Y> v_>!7>-'=…==a='Y=:K>!7>\>>>d!>>+n=?<ѳ;n<==,s=T=x=zG= :<'Y:g9g:< =<=Z_(=Ѳ>-'>(^>*>M=2= =a=;D=>::k>>L>¥>>7>>=<;!>ٛ>>d=t=c= 5==dB>0 >>Cz>>2>>+=~'>^t>.n>C>>\> )=XT;?;g<(<_=;D=a=R5Q= "?>M+>\>J> %=j=R;:g:D<'Y==?/=M+=)d!d>B> =d=x <:t:g9g;t! >~'>7> =O=:*<:D:D-'>%>$̙>-'=07=/=g=F=u[=n> =>+4>Pl*>eW`>`>DU> =:=T<ѳ;J<_==Ϩ>= =yn= {=[db;J9g9g:g>C(.>a&>g >N>!:K==n===2>1F>q>>n>]>(>a&>%=a=k<=WOw=%>2b>4>AV>)d!=…=: ;n:g;<t=B=E>%>`=:>>>v>B">w===U>~'>^>f>{>>>}B>>>T?><=U={=?>{y>C(.>{m>o>w>4 =5Q=g;;?$̙>a>H>>Q>K>=d=o=T>q$>y>>G?? Z.>ٻ>I>qp>*=5==>>i>u>`-> >g$>d=<t>DU>p>{m>dt>22>=:=2=yN>>ui>>>? #?>=>#>u[>0==2=̘> 5>m…>g>̙>V>nq>&=~G=g&>51>@>->-'=p=dB=Tq= f>">P*>ٛ>>> >&>d>bM>%=:=:K= E>w>KS>|>8>I>N>c=?<_;!:D{>R=[=*==x===> v_>c >CY>>|>>m…>;D>^=n=T==Ϩ>>>@>T?>Dn>q$=嘮=/>AV>WOw>W>H>.<>^=:=Y=K=I@=g=T=t4> >q=a==R5Q<}:g9g:D</ =>-'>>=Z=?=:*=N f=(^==(^=J {=w=x=:K=%`=g=*i\2b>B> = f= =0==*=,s=C=k== =f=<>8/>A>-y >=?=*i\<=g=c=a=?==?=t=0<ѳ;?:D:C9g9g:g; >;?>eW`>p>XO>!7=ȃ= 5=qpB>M>{>E>nq>/=Ow=v>>i;>,=s<:g9g9g9g:D;?w>@Y>qp> >dR%>&Tq=y-<5Q;;m@>d>{=5>;?>Jg>0 >=>&>GM=a=fv>> )===a=R5Q= :=R5Q=5>>OW>zG>Q> >@Y=yN=:g9g;dt<*=K=zG=h_=*<ѳ:D9g:g;n<=B=>d>']>*>M>=n==a= Z>"#>\>>>Y>@>=w;:g>5>9>%> =@===t!=d>=̹>>c>Э>qD>H>,s==<#D;dt<t=A=^=^==Q0<t:D9g9g:g;J<ѳ=g=Z_(=ȃ>-'>+>-y >`==n=R5Q=;D= f>7*> >M>v>o>> 5=g<;dt<==%O6=T=a==?/<;g9g9g:g;t<=<_=8==魚>Y>w=G=X=CV>c >>Q>TP>W)>*z=Q0;i:;!<=C=w=rܫ=-y <;i:g9g9g:g;t!<'Y<=(=XT=t=51== :=(^<'Y:D;#D=22=9>%>P*>]n>HBT>L=/=g;:D:t<;D=R=L=a=F=">~'> ==_yN\>>>q$>'=L=< ;;3m<=J {=%`= E=o={V>->L>Py>;D>=*==T=t=a>B>A>l>޵>>`=:>0>=?=c<t= 5=y =>-'>x>=, >kv>Z><>aS>UE>=a==ȃ>>LW?>>>>>>Y>;>==g$=:K>g>1L>`>q!>WOw>=<5Q;i;?<=m= >Dn>>k>">>\>3ټ>=dB=嘮>)">Y>>W??s>>>td>*=yn=?=a>%>q>>>V>l:>-'=x<_(<ѳ==m=>@>H>7>>>>>OW>R=ʎ= >2Q>1>?"??1?.Q?H>>>D>^=yN>g>@j>TP>,>(.>f>m>;?==YY<*<=M+=̘>!{>k^>>>m>i>*=m=Ɉ=t4>.<>m>֬3??.?*y>m>>d>J>=yN>k>C(.>8>>s>U>S >C(.=G=*>\>oJ]>\i>/>w=yN==> %>t#4>2>?>> >̙>|Z>6%>+=U=$>*>u[>>i\>> >.<==h_<:t<==~'=>^>GM>d=~=̘=n=t=>>4>f>I>51>>f>g>N f>=d=5=>>6%>i>|M >n>@j>"= = :;?9g:g<==[db=x=t=R=qp=a=C=3m=| =ʎ> )>2ԁ>a&>w>u[>`~>@Y>a=t=:K=x =%?==t4>~'>#r>> =ҷ=<*:D9g9g:g;t!<'Y{>GM>&Tq>'I>>=Ϩ>==rܫ=Z_(=_yN=}== Z=n==D=:K=^t >Y>T=ʎ=x=a=Q0=]n=f=a=c9=u[=,=ѳ===w=&Tq<:D9g9g9g9g:C:D;;3m;g;dt:D:<=]n=ȃ>v>>>GM> =E==a=Q0=h_={=~2=T==R=g=h_=)d!k>7l >>OW>)p> ?e=/=rܫ=K=_yN={=d=n=/==t=XT=g<};i:t9g9g:C;#Dd>@>g$>r>\>*( =t=w=-y =3m=^t=:K=:=d=!=+=T(>k5r>>է>U>R=> =T= =R=: =y =>GM> 5>d=/<;dt:g9g9g9g:g;?<==3m=I@=N f=?/= 5==C=s>Q>8/>>*>>>hg>-'= >->@>-== ::D9g9g9g9g;g,2>y>>eh>XD>a&><=k{>-y >C>2Q>{=!:K:D9g9g9g;3m >F7>66>>y=Z>6==c;?;dt<;D==/>w>!:K>:=<:g9g9g:D;!&Tq>::k>&=={<t:g9g:D;J==Y==:K= :D9g9g:D;?<'Y==x<_(:D9g:DV>M+>a&>KR>=RGM>>d====a=a><>V>ѳ>C>>P*==:g9g;g<5=a===;D>, >.>>,=T=R=f=X> >u[>KB>M>8>n>g=3m;g:g;J==t!===C<;3m9g9g:C;i<<_=3m=>^>'I>)p>~'=:=5=J {=(^= E> v_>nq>W>?>~'>^2==C;?:g;i<>(=O=y =3m<<=R><>HBT>x>E>oJ]>-=Ϩ>=t;J:D;=<= :=XT=a=: <N>3W>?C>'I>Q=/<*;J:D:D;!< f=+n=UE=J {=T=a=s=!:K<ѳ;?:t:D;<ѳ==J {=J {=<\i:g9g9g9g:g;gf>R=07= =x=N f=g==,==> >>-'>*z==<_;?;3m<=c=u[=x=x=VJ<<;3m:g9g9g<=,=D>{>3ټ>W>_7>KR> 5=!= =x ==E>>:{>dR%>Y>|M >Y܊>'I==?=+nd>-'= =n=(;J:D:t<_=h_=t>1 Z>u(o>>b>t>gs>%==~G=n>">IG>Z><>ȤJ>n>> >;?>{y=?==O6>{>2Q>cL>u >^2>!7=ȃ=(^{>L>j>̙><> >` >Es> =@=>'I>|M >>>?? #>M>Cz>u[>.~G>=ȃ=07>'>t>|>>f>u >L=/=(^<5Q==:*=G>D>j>^>>>>M+>w=%=[>3ټ>m>ҷ?1?/1?, ?$>">ѳ>KR>O=*>v>>C(.>8>c>X>a>>C==*z= ѳ >q>C>r>V>z>6%>R=͝=!>0>>Σ?3?,"/?(>>>>LW?>d=> >EA>(>Ê>@>>~>L>R= %=R)p>cL>y>j>?C>=07==>L>r\>]>&?>n>Эy>>{m>1F=m=y-=O>->x>L>>eh> >3ټ=t4=g<:D;<=M+=> )>`>>===D=ȃ>>951>@>,>>d>%`>66>Dn>w=n==~> I>;?>k^>0>s_H>C>==&Tq;?9g9g:D<=g=e==R=T=w=Z_(=R5Q=i;=>(>2ԁ>_>u >s>\>4\Y>=ȃ==p5=ѳ=>\>&>%>*> =Ow=<:g9g9g:;Jf>GM>&Tq>'I>>{=dB=g=K=J {=qp===n==˓S=OW==J {<}:g9g9g9g:g:D;g;n;n;t!;dt<'Y= :==%>{>i;>-'>k=͝=x=R5Q=9=Q0=i=| =R=d=s===a= <'Y:g9g9g9g:D;;;J;n;3m:g:<=p5=d>d> >!:K>=嘮==`~=J {=a=T=:*=d===:*=h_=t'I>C(.>IG>3ټ>i;=ȃ=| =L=`~==5=51==n=I=_yNa>L>u(o>~2>h%>3ټ==g=;D=?/=rܫ==>>4=L=<;:D:g9g9g:C;<=*=M+=_yN=[db=8= 0>w>b>f>>^t>O=d=*==R5Q=/> >'I>1F> v_= =;g9g9g9g:C;?{>AV>>>Gn>{>w>M=%`=GM>Fy->\(O>H>i;=e;3m9g9g9g9g;g6f>U>9>>>u >~'=<<==O6>x>J>ba>Q0>=zG;t!9g9g9g;<ѳ== :=*==< f<5Q=3m=/>-'>^t>>rj>Q>L==J {']>@>.~G==:D9g9g;d>AV>WOw>@>d=:K=;:g:t<;D=XT===yN=x ;i9g9g:C;<;D<<=>>==>@~>S:>9v>=^t<9g9g;i<ܫ=,s=,s=gw>i;>V=ʎ=^=R5Q=(^=w= >+>a&>u[>Z>a=a<:g9g:g<+n==?/=B=c<(;3m9g9g;<<<=| =9>^>O= ==k=c=g=t!=Z>->\>m…>Py>-'=5<_;t!9g:g<<_=0=C='YGM>9v>@j>'I=[=}<5Q;?:g:g;? )>w=Z==!:K 5>@j>I@>2ԁ>=̘==(^=,s=d!=i>>5a>P*>N>.<> =Ɉ=| =R<<=)d!=?=E==/=qp>\>>[>>Q0>7=Ϩ>==~'=_H>)p>e>>>>>]n>!{=:=8=R5Q=n= {>s>>OW>N f>::k>=n=<=2Q>{G> >>+>z3>0===>-'>W>a>8>Bu>&>>>\(O>q$= ==>w>M\z>E>E>>S)>=/=<*=c=T=>,s>x>>)T>}>>951>%?=OW=d> 5>td>>]??%?>N1>R>{>4>==>#r>r\>>-H>Z>@>*=T=a=>Q0>>>>cL>']=2=U=_(>k>q>>z>>^>)>>?>z3>1==dB= >'I>u(o>f>>)T>>/=={<d>@j>Z>P*>+>===:>'>P*>>qD>>w>mP>1>Z_(>İ=ʎ==͝>GM>UP>><>t>`>f=:=M+<:t;q>=ܫ=*==D=n>>%>^t>>>+>>]n> =E=:*=t!=Y=~>"#>IG>[#>N f>%=m=<*;=9g9g9g:g<;D==]n=zG=zG=rܫ=Z_(=^t==Ѳ>f>8><~>Pl*>O%>::k>~'=J<=,=%O6=(^=~2=OW=J]> I>'> =魚= E=I@<9g9g:g;g >>-'>*z=̘== :<5Q= ѳ=M+==n==/==/=k<;9g9g9g:g;dt;?;?;;g;t!*z>/===YY=R%?>~'>B>v>= f=/='Y=R==I@=rܫ=,= ==qp=,s<;?:D9g9g9g9g:&>1F>7l >%O6>/==Q0==!:K=R5Q=R=Tq= E=2=x=/ >9v>^t>gs>Q0> =Ow=h_=N==?/== f=>=_(=<t:g9g9g9g;dt<=N=DU=WOw=DU= :q$>`>?e>>">C(.==| = < =(^=5>V>!:K>,2>`=ǟ=:D9g9g;+>{m>>̙>N>]n> ==< f==Tq>-'>@j>UP>@j>=dt;n9g9g:D!7>vn>>̙>XD>[>=x <*>D>\>KR>={;?9g9g;t!<=g==c<m<*z>Jg>E>8>~2>4==<~%>>OW>,2=G=+n;#D9g9g;<}>2Q>Es>.<>޵==;:g:g;!=XT=:>T==<#D:g9g:g;<;D{> =嘮==;i:g9g9g:g;i<<<<;D;g9g9g:g;<(> =07== :-'>a>=n=T=T> > =5==qp<%>L>W)>AV>B=E===*=>>#D>P*>o >pO>NR> v_==5=: <5Q O==51=K I>@>m…>{m>k^>;?>v>=:k=p5=| =yN> 5>Y܊>)3>q$>|>c>d>']=T=%`=R5Q=_yN=?>d>;?>P*>@>~'=y-=: >;>k^>~>p>@j>d=*==:K=>22>xyn>>>qD>O6>I>A> ====:>+-H>`>y>k5r>5 E= =<<t<= ѳ=T=Ϩ>>>Dn>\(O>P*>*> )=d== >T>1L>u[>C><>d>>">>OW>/=^=| =O6=>.~G>d>{m>m…>9v>+=t=<w>>>=E"=n=I==!> 5>V>k>:> >Z>[#>=Ɉ=qp=R5Q==:>s>D>WOw>HBT>q$= =<<'Y;dt;n;! >&>J>`~>_>G>as=d=a===T=ʎ>> :> 5>s=Z=y = %;J:t:g:g:g9g;3m{>>GM>B>v>=@=g$<</^>>g=Ɉ=x <mc>(>.<>=t4=t= :<<}<=: = %==%==N f<9g9g:D<'Y&>Q>\>@>"==3m4>i;>{=o{>;>r> >^t>ٛ=OW=<~< 5>.<>q$= =0;9g9g:D<R5 E>p>Y>_7>&==*i\<t<(<=)d!=_>#r>5a>%==?/;9g9g;g<'Yİ>F|>WOw>::k>f=a=<;g:D<=> >>d=n=:t9g9g9g;g< )>>g=*=L/> I=5=2=i>x>7>{==m…>>!{>=*=s=VJ<<_< =g=t>>4 >R>T?>7>d=ʎ=h_=R<<==#D=5=a==嘮==<~<ѳ;n:D;!GM>!:K>B==y-=R=(^=: ==>$̙>R5Q>q>u[>Y<>']=d=^='Y<==:*=>d>&>d= =/<_;!;<(<=t== {>{>w> ===U=^=R5Q=qp== >"#>N f>k5r>o >T?>!7=嘮={=c==;D=Y=[>>L>=L==>->C(.>C(.>+>q=i\=< )>">@=n=f<t;n;;g;;;J >O>w=5=Y='Y%?===?/c>>=m=T?< ^><>Q= Z=M+<*<'Y;g:g;?=rܫ=>{=嘮={==i;= 5T==ʎ= <_<;?;t!:D;i<=\i=g=rܫ=<:9g9g:g;>-'>d=t4=o='Y<</;J<(4>'><=07=5= :<} >u>=Ow={ 5>/B3>$̙>=̙<_:D9g:C;<=%O6=^t=Q0=<'Y:D9g9g9g9g9g:g;J<m=_yN==h_=&Tq!:K>1L>&> =:k=)d!;t:g:D;J^>>~'>T==I@>/>GM===;g9g:g;!s>Dn>\>Pl*>$̙=yN=J {;9g:D<=?/== E=̙=K<;t!:g9g9g9g:g<#D=*=:K=d=a=_=g= 5,o>i>>v>Es>{y==<ѳ:D;?==:*=:>{>Q=y-=C,s>kv>aS>z3>JL>w=?=g<<ѳ=,s=5=>>=d=<5Q;:g:g:g:g;t!<t=_yN=m= f===(^<-'>I,>e>Y<>.~G>g==c<=<=(^==0>g> =07==<:t:g:g:g:D<<=k===p5=g<'Y;=:D;==ʎ>2b>(>#D>w== <ܫ(>B">?C>L= =^t<:g;.<>nE">4>>Y<>~'= )>=̘=J {<};n:D:g:g;<=R=>d>~'>=n=rܫ= <<_=VJ<>,>S)>TP>>f>|>.~G=ҷ=(^<;DB>3>951>ٛ==-'>>^=E=*z= :< f<=;D>{>V>CY>̙>>I>2ԁ=yN=XT<*=%`==?>!7>F|>Q0>2Q>@=t!<t;n:t;;?{>d>%?=~h=u[=,<=6l> >i;>d>e>=ʎ=Z_(==)d!=:*=ӽ)>s>3ټ>@>)p==| <;J;;?;;i<=M+===Σ=s=*i\/>;?>Y>Pl*>)d!=m=:K=(^<_==M+= :=t>Y>B> =U=K > =L==Q0< f޵==Y<}9g9g9g9g9g:g:D:D:g9g:g;J>%`>(=s= x:g9g9g9g:D;3m;n;n;3m:C9g9g;3m<;DGM>/>^== :D9g9g:g:D;t!;i;!;:D9g9g:g;dt;;:D9g9g:g<(<ܫ=T=͝>V>=07=<:g9g9g9g:g:D;;;=:g9g9g9g:g:C9g9g9g:g;J<=^t=s==,< ;9g9g9g9g9g:g:g:g9g9g9g9g9g9g:D;i<t<%>F7>F|>'I=yn=T> ==07=:K=(^*>r\>>>nE">$̙=U=c<<=h_=51>g> :>&=2=d<<;dt:g:;==?>Q>>$̙>=t=,=c<<=I@=>T?> >>d!>>C=:=VJ<<t= :=t=T>%>M+>V>6l>V=u[<;?;g;?{>!7>, >f=!=x= :<\(O>>=>>>IG=[=t!<=;D=>{>3>a>nq>T?>&=n=g<;?>>=yN=,<@Y>4>F>V>|M >-=Ow=a=(=: =a=>#^>P*>^>G=><=o=c<\i<'Y<>G=>k^>fL>;?>f==)d! 5>-[>8=5=>d==I=C< f >-'>+= E<_:C9g9g9g:g:;;m;3m:g9g;<= ==<ѳ;9g:g;i= ==o> >&>.~G>k=魚=C:D9g9g:g:t;i I>(>1L> 5==C:D9g9g:g;3m<(<<<;?:C9g9g:g;<\id>GM> =/*z>"#>)p>x=5Q=XT >K>xyn>|M >V>~'=<;J<ѳ=3m=a=> > = =< -'>> =@=XT<*>~>>C>g>0=:=)d!2b>;?>Dn>*=!=zGGM>!7>x==x 3W>q>>>>5 E=i=;D<ѳ==m=Ow>!:K>Q>`~>HBT>N=n= <'Y;?>-'> =ȃ=Q0<ѳ;n;g<t=>8>m…>>d>h%>q$==!:K:>@j>S{>@Y>i;=o=*>Q0>P*>(=?= GM>']>&==R<_</</;i;i;;?T=2=ʎ== ѳ<};?;<;D< =m=ȃ= =Ow==(^*z>w==y >)d!>=yN=1:D9g9g9g:t<(<<<ѳ;:g9g;<=c=>!:K>+>`=a=-y :g9g9g:g;3m<'Y<< =>>{=s<9g9g9g:D;{>%>->u= f=[db(>Y>`=:>;?>{==g>d= = =H<;?:t;n<R<ѳ==̹= Z=?>{=嘮==c<#D:D:g;!=(^= >2ԁ>g >k5r>@j>v>=<;;t<5Q=Z_(=J<>GM>(>`=07=<_;J;dt;J<'Y>IG>KS>%==~2<ѳ;m;<=0=ȃ>>"?>İ=07=x<_;i;;i< =<(<>7=G== ?e=m=n=e<(;;;dt;;g:t:D;> I=!=?V> =yn=?/= ==qp*z>d> TP=_=<5Q:9g9g:g;n >=yN=<_;t!9g9g:t;! >> O=9=R<(:g9g9g:g;'>>x==i\=g;T?9g9g9g:g;=5=?=R;m9g9g9g:D;J >> ==;=,<:g9g9g:g;O>>=[=<_;g9g9g:g;n{y>'> TP=嘮=t޵=Z=?=B;t9g9g9g:;!<=<<<ѳ<'Y;:g9g9g;3mg> )>{=Σ=u[<:g9g9g:D;J<}<<<=p=dB=a<=:D9g9g:C;3m;!=*=0<ѳ;dt:C9g:g:g:g9g9g9g:<=(^=_yN=UE=<;J:t:g;i=\i=~>> >M===<>1F>KS>B>=Ϩ>=T?<t;g:D;<;?:D9g9g9g;g>@>Z>Rv>%=i=Q0<=:D:D;J>->E2>>OW>=_=;!:g:g;J<(>&>=嘮=g<:t9g:g;n> ==n= 5<'Y:D9g:g/>k>,2>)d!>>=ʎ=h_<;:g;#D<=^t===T=N;9g9g:C;g<ѳ=a= =9=魚=E===f=0=?/=N=5Q> )>!7>->)d!> %> ==ӽ)==g< =:t;?=R=T==?e=-y ;!9g9g9g:Di;>&>>w===x <_<(;t!;!=g=_yN=T=f=;i9g9g9g9g;< =a== :===| =S:===c=YY==dB=yN==?=a=@=='Y<;n;g;s>#r>%`>V=D=t;i:g:g:t;;?;#D:g9g9g:<=T=n= ==/=w=R'I>_>{m>r\>B>k=<;dt;dtv>>=07==Q0<*<==a>^>Z>>8>>z>'== <<#DY>==J=p5=g<*=d>>p>|>H>r>H>22=Y= =<'Y@=9=n=K-'>`>>P|>t>x>"#=?<;4>m…>;q>u[>C(.>=_yN<:D;? >*>::k>+> d=2=(;m:g:D;J*z=~=ȃ=,<*;3m9g9g:>ٛ>M>O=O=?=g;3m:g;g<=C=T={=%O6g>>O= =s==1=,= 5==[>!{>C>Z_(>Y܊>AV> 5=?={N>(>)p>İ=Z==x =C=x =ʎ>>R>|>nv>(>x>F7>~'=n="?(>GM> ?e=51=R:D9g:g;m<ѳ=g$=> :>0>4>"?>=@==,=/=?>, >r\>V>>>>a>)p=5=~2<_{>'I>7>%=[=t!;?9g:g;t!>)d!>->>/=:==a=y =yn>-y >u(o>M>>>d>f\>/B3>{==t==/>>-y >@~>*>,=xT>2b>GM>w=Z==i\==== >`>WOw>/>c>)3>v->Pl*>%=Z=t= := :=ѳ=?>>$̙>= =u[!:K>F|>Xc>S:>@j>(5>^=Σ=rܫ<<_=K=4=yN=d=T== :;!:g9g9g9g;J==h_===| =k=R5Q=0=c==i=2= > I>>>w>T=ʎ=/=c<=g>= =x<;i::D:t<==9===| =c;i:g9g9g:g:t;;?;?;;?;J;J;J'>>T=y =R;:g:g:D<ѳ=Q0=:K= E=5=C<;D:g9g9g9g:g:D;;;i<'Yk>q=9=d-'>@j>\i>Q>%=O=XT<9g:g;?< O>>&> =:===0< =>>gs> :>9>q$>|>+n=<ܫ;;!<_=3m=L=&Tq<;9g:C;?<_(=x=2>"#>8qD>8qD>#D>=~=x =J {=E>C>b>OW>l*>=>̙>b=_H=-y <<=22=T=R=a=g;?9g9g;g*z>*>AV>B>, >== =x =2>]n>I>΂\>=:>>h>u[>޵=: >1L>2> 5>V= Z=h_=h_=T>S{>>> > {>">c9=07=c>>{=s=h_= =*=y->->>U><>>4>.~G=<;<=N=_yN=T=rܫ=(^v>>?/>nq>rJ>qT>?>T=g$<'Y:D;t!w>%>.<>!7>==)d!;i:g:g;n<*==̹=h_=Z_(=t<;n:g9g9g:tQ>==:=t=;9g9g;g<=: =rܫ=h_=(^V=2===3m<'Y:g9g;<=VJ<==x =0>&>$̙>!7>:=~==;dt:D>"#>!:K>-'=?==| =I@=/=:>-'>=J>_7>t>o >V>->=<;?<=x=Y>g>=a= <>@j>_yN>c9>M+>!:K==D==2> >B">66>>qD>,>6V>r\>0=Z=t!>=J>IG>1 Z>{=h_;?:g:t<=5=db>&>`>+>Q>{m>H>i;=ʎ=#=J<> >td>R>t?k>8 >>C>ba>=Ɉ=| =><>L>|>>>@Y= =R;t!;n<=+n=Ow>'I>k5r>Z>S >H>WOw>%`==n=[>->>? #?*Y?>g>[> >3ټ===ʎ>&>u[>>Cz>%`>qp>~'=V>WOw> >>|M >IG>`=?=͝=>+>>R? ?'Y?L>M>>">?C>=OW=T>,2>{G>>>>y>/=n{>.<>W)>c >P*>)d!> )=a=n= >>k5r>> >NQ>x>>V>oJ]>1L>V==y->>\>>b>)3>XT>d=tv>>>#r>GM>%?=====>.<>>>B3>Y>>x>G>&====> >M+>^2>KS>=i=VJ<<;D:D9g:g<ѳ=YY=y =ʎ= f=J=D=x=x =K=_yN=>>(>S)>gs>dR%>Qqe>7*>=…==a=YY==ʎ>>>g=%== ѳ;?9g9g9g:D<\i==t=c=g==c=< >>2b>c>T=ʎ=%`=dt=)d!==(^=I@=h_===p5=3m< f;9g9g9g:D;3m:t;g;iw>i;>V==u[= :=g==='Y=M+=g$=_yN=*i\<&>8qD>@j>,2>/== :<̹<==XT=5=~=:k==)d!O>@>i>td>\(O>%=͝=*޵==x< f;:g9g9g:g;3m<>W)>Y>P\>qp>4 =9= :;i<(^>>^==;dt9g9g9g9g:g;<;D<t>I>u(o>Y>fL>)d!=ʎ<>ٛ>i;==;g9g9g9g9g:g:t;?V>@Y>Jg>0>޵=g<'Y:g:g;n<==E=2=L=d<t:g9g9g9g:C;dt<<:K= <5Q;t!9g9g:g;g=G==ak>޵==~G=i= :< {=)d!=O>)d!>dR%> >q>: =:=Z_(;t9g:g!:K>7X>7>#r>q==ѳ=]n=>-[> >>>l ><>@j=< f;3m<'Y=*=T=s= =3m<:t9g:tİ>Dn>_>`=:>H> ===> ѳ>l:>=>܊E>>>$:>> =*i\ >U>oJ]>oJ]>V>*>V=T=>>I>>`>S?|> >W?><>O=E~'>F|>bM>a>H>8==D=s>a>}RF>X>M>[>%>~>@>R='Y<==c=w=i\=OW=2==g;J:g9g9g:D<;D<=;D=t=> v_>951>8/> >T=D=L=qp=m>T?>>)t>+>>>P*=ҷ<_< =<=22==O6=={=<;t!9g9g:;i<t=c=dt=D=yN>{>V=܊==q$>c9>>u> >`~>x=^<=;dt;<=K==a==;D<;?:g9g:g;#D v_>@j>M+>>>=*=L<'Y:D:g;?==p5=D=*z=R5Q<<R:g9g9g:D{>O>-'><=E"==-y <:g9g;< =h_=^===_yN<<g:g9g9g:DV>^>~'>-'>R=:=x <::g<'Y=)d!=ѳ=n==t!=g;i:C9g9g;m\>>>q=&= E=,=]n=i;=T>Y>%>@>P*>M\z>8/>GM=yN=h_İ>Fy->f\>l>Y>.<> ?e=ȃ==ʎ>^>@~>u[>S >eh>P|>)3>a&>%= =a=R= =嘮>L>2Q>;?>$̙=_H=dt<(:D:t<*=>+>F7>>C>>W>w>1F>V=Ɉ=2>0> ><>P? ב?;q>ҷ>P|>l:>#r=a=I=E>q$>]n> >nv>>I=~=5<;D<==:K>>b>C> >L> E> >[db>=?>d>W)>>=?0?::k?5a?>0>XD>S{>u=Z>^>S:>>>@>`N>2b>>OW=='Y<=t=>>g$>5>¥>R>L>>j>!:K>{>>i*>?*?=a?F#?D ?1>>zS>q>+>>%>u[>Xe>ٛ<>>X>>oJ]> =i;=c=R=T>{>N>XD>v>ê>@>S >Y<> %>{>GM>ba>?*?;??E6>^>u[>0>d>)p>z3>=>>>m>qD>x>~'==t >nq>>5><>o>2Q><=> >AV>P|>T?,?4J?1 Z? >g>1>cL>%>g>GM>_yN>\9>>{>ȃ>5>\i> ѳ=<;<ѳ=qp=嘮>%>S:>cψ>R=>)p> )=a=y-=>V>m…>>>NQ>A.>H>8>z>?C>d=yN=Z>(>m?>>k>XD>p5>(==M+V> ==*===,=t=嘮>!7>g$>(>F>t>Z>i>>>x=嘮===07>>>OW>L>@>8==<ܫ;g9g9g:g>22>F7>G=>::k>"?> ?e==2=t=x=#===嘮=~=n==Z_({y><>İ>^=Z=dB===D=x===g=T==T=f=*<ѳ;dt:D9g9g9g:g:D;dt;<(i;>!7>"#>== Z=*z=T=?e==s=ѳ===g=p5=I@= :<5Qk>->M+>T?>@Y>a=*==x =*z=s=n=U=̘=n==]n=,<t<+n;?:t:D;t!%>a&>P\>>rJ>KS> I=t=Q0=a=:*=U=yn> I> TP=5=:K= (>M>D>r>H>f>z3>%= E==&Tq==d>'>.~G>@Y>,2=m=]n>b>~>6w>>y >>3=U<<=t!=O> 5>R>hg>Y>!7=D<;D:g9g9g:g;g<;D7>W>է>d>`N>M>4>+=<t<t=C=>>V>n>a&>*= <#D9g9g9g9g:t<<== :=)d!=,s=(^==4==T>)p>u >&>>>`~> =a<(;J<ܫ=R>T>/>M+>@>={;9g9g9g9g:g;<;D<=g===Rٛ>N>a&>IG>7=n<_:t:D<(<*=| =O>==5<ѳ:g9g9g:t;!<(<*T===9>/=07=/=R=I@==dt=t>)p>cψ>|M >kv>-=%= 5:t9g:g<3m=c=F=C=c<ѳ:D9g:C;n< f==>&Tq>@>AV>, >^==o===5Q>/>>,>ê>>l>2ԁ=a&>|M >| >`=:>-[>=/=>k>>~>>hw>…>¥>"= ='Y<}==w=2=ʎ=U==;D<ѳ:t9g9g;dt<=g=K=?> >;?>W)>UE>7l >w=D=h_=>>\(O>*>Ê$>U>s>8>M+=5Q=R<'Y޵>İ>==='Y<}<=:k>!7>k5r>(>6V>8>b>~'=a >C(.>P*>@Y>&=%=M+Q>d>> ==~G=1*z>d>a>u> I=i=<5Q;n:<;D=0====T=c<:g9g9g;<=qp=>İ>.~G>4\Y>'I>w==i\==D=>~'>2Q>Sx>fL>c >Jg>$̙==d<_>=嘮=<ܫ;:g:g<=a=9>/>nq>>E> >cL>'I=2==07>>U>?e>>>51>>| >;?>v>=~G=x =>>/>V>`>G>~'==<;J=;D=>t>l:>>>H>qD>>hg> 5=m>O>KR> >??,t?)>>>>@>=07> )>@Y>>ݏ>Q>ݏ>}>"?=/=(^<=x =:>-y >>>z>a>db>;>>>>'>!7>td>?0x?=!?G ?Es?4\Y>Ϩ>>u[>3>>.<>{>Q>܊>:>ߙ>>u(o>-'=n=M+=~2=Эy>(>o>>> >%>¥>>G=>GM>*>>2?1mP?HE?[l?V)?B=?>U>x>L>+-H>L>>W?>Y??¦>>u>3ټ=L= =UE=>>u(o>>z>%>db>>>;?>-'>(>I>z?0Gn?G?X?Rؖ???!>Э>>P*>*>P*>2b>R?]?? D>t>;>@=== =Q0=d>7>>>>>7>Z>> >&>cL>?s?8N?D ?@?-V>q>[>>=J>&>8>aS>>/>3>)>s>:*>-==a@>}>>w>Q>q$>V=9>>0 >` > {?*z?Ȥ?>>>o>S)>>g>>N>O>>~>>-'>R=>c=Y<_:g:D-'>>x= =͝=~G=s=> =>@Y>P\>,>><>as>">P*>q$=m=:=>>>>gs>v->kv>AV>-'=͝=C;J9g9g:g;!=g=Q0=u[=a=J {=B=-y =%O6=e=>v>>-y >V>k^>k5r>W)>4>=T=ȃ=%=/=E=><>i;> =!=ȃ===;t!:g9g9g:D;<<;D<}<t<<=/>!:K>3W>6%>'I>= =:k=o== ==U=~h== E==I=M+w>/>G=>IG>4\Y>2b=i==I==T=s=ȃ=ʎ=T===Q0=<;!;t!:D:D;n<}<=%`='Y=<m%>Xc>x>0>l>>OW>v>=/=:K==i}=i=G>{==:==(^ I>M> >q$>">ٛ>y>+=Σ=^=t=̹=yn>:>'I>, >=a=Q0<ѳ<'Y;:D:D;i<5Q=DU=g=====rܫ=-y ==a=ҷ>%>y=Z>3>ď_>̹5>>>S{=~=m=x =>>1F>a&>u(o>a>)"=<ѳ;;g9g:g;?4> >>_(>/>{>i\>gs>4=h_=C=̙> TP>P*>/>E>?e>Y܊=2-7>I>v>܊>/>[3>>a&=m=C= :=>>Rv>o>b>>g > ">XT>f>>,">'>>=J==R->qp>>Y>F|=t<}:g9g9g9g:^>Y܊>>+>>T?>/=x <<g$>@>22>k=C;3m9g9g:D<<t<_(=g=g<*<ѳ>+4> v_=== :;i:D;ni;>;?>P*>;> =TP<:g9g;n<*='Y=*i\=~'>.<>1 Z>>f=͝==^=>L>l{>>>k>r\> =I@;3m9g;gi;>IG>i*>k5r>P*>%>,=ʎ=/>V>N>> {>܊>\z>$>G==D']>e>66>66>g$>3> ==̘=>>nq>x>H>E">0>;>g$=$J>`~>|Z>| >_>*=G==y >">j>f>[3>M>F>>XT=*=c< >>OW>Y<>Xc>::k> = =R5Q=^t=>Dn>8>=>~>=>=>-= E=<(R>ٛ>>=n=t>Sx>>[>~2>F|> =~2< {;!;<==*={=x=x=x = 5^>*>3>&>==1<;?;g;?T>R>R==n=p5< f;!;3m;?>;>Dn>4\Y>=?=n=p5===>^>'I>D-i>Xc>WOw>@Y>V==d=c<t===˓S=!==E=nv=< =;3m;g= ==>6%>x>>C>>u[>3ټ>%?==9>>N>P\>3>>qD>8>y>7> =j== E>%?>-y >U>a&>I,>=n=?/<<t=zG=y->q$>ui>Z>>w>">>z>*>>d>HBT>Y>&? ?*ۦ?(?66>e>?e>G~h>=>>@>E>>>O6> >-y =Ow=zG=;D=/=*>2Q>x>>Bu>>r>¥>է>K>~'>"#>s>qD??: p?F?E?4?aS>>rJ>@Y> v_>2ԁ>}>~G>Y>>>> > v_=̘=:*=?= >->t>n>${>Y>Z>w>C>T?>ٛ>-y >H> ?-V?F?XO?UE?C8?$j>,">w>W)>1 Z>P*>1>?,?c]? p`>N1>@>C(.>{=̙==dB>-'>x>>D>>m>>8>C>B>+>k>U?, ?EG>m>VJ<>.~G>R=>է> ?k?+? ƚ>,C>q$>L> ==0=rܫ=>6%>>qD>>e>>hg>']>>>gs>w? D?5Q@?B???.B>T>>">>OW> %>;?>E>N>}?T>>>&>>951=G=<ѳ@Y>>>>]'>']> ?e=Z> =>8/>>Э?0??>r>>>N>GM>{>B>Rv>8>]>>`>X>>Y܊><=X= :g:g;m==>O>!{>`>/=;= ==Ow>i;>C>/>̙>w>Q>>Y>F|>~'=:=*=?>İ>C(.>m…>}>q!>F|>İ=E=J {;J9g9g:D<t=?/=,==qp=^t=I@=K=d=>d>0 >Xc>nq>m…>WOw>0>w=t===~h=07> >7>GM>O==ʎ=<_:t:C9g9g9g:g;J<t<*<< fd>*>@Y>@>-[>=yN= =?=y = ==yN= =E=s==:*=3m<;3m:D:g:g:D;B>>>UP>W)>@j> %=*==Tq==y-=*=_(=yN=*= E=ѳ=K<_.~G>g >>>v->G=>d=s=Tq= =ʎ=07>f> >v>=L=̙=(^<t<'Y;:D:D;<=!:K=t!=Y=x==T?=(i;>YY>w>><>U>|>3ټ=~==:K=ȃ>{>q$>7l >@Y>*=m=w+4>g>=>K>Y>>U>]'>=^=R=dB>^>EA>x>>y>@~=5Q<;n:D9g:g;<5Q=UE==n=y ===J {=(^=| =>;D>m>s>g>>Bu> E>u >^=:*=h_= >GM>i> >k>a>td>=c;g9g9g9g:D0>t>ď_>臸>>>a>>t#4> =={=?/=>>n>W>eh>>rJ> %='Y;3m9g9g9g;dt>k5r>>R>ٻ>,>>P*= =C=R=_yN=[>L>4>>8>d>q>u >F>>w>n>İ== =<}<_=> I>C(.>a&>T?>=Y;!9g9g;g<ѳ޵>1>KR>;>-'=s=Z_(<ѳ;;i<ѳ=: ===͝=h_<'Y9g9g; =O==R;#D9g:g<( >==͝=̙==p5===9>!7>Z>s>Z>=i\g$>~>>>e>޵==̹;t!9g;#D<5Q=_yN====_yN=;J9g9g;m >@j>a&>b>F|>V==n=x=E>->>-H>U>Ѝ>I>M=:* )>@j>`>`>C(.>=ʎ=*z=v=5Q>.~G>> >>>|M >&=t#D>@>@Y>!:K==R==(=>GM>^t>Q>2b>H>P*>*z= <5Q;i;?<="?={==M= =: <t:D9g:D;<;D<==*z=> > ==_(=,<_<g<g=;D=n>!{>J>W)>AV><=̹=C> )===x =<t< =;3m;3mw>)p>1 Z>$̙>{y=ʎ=T=c=(^==$> I>ٛ>'I>(>GM=G==e=g<!7>cL>>8>U>a&>!7= ==>޵>+4>^2>#>V>>>UE>q$=O=i\=qp== {>w>,2>9>%>T=:K=0<_d>^2>է>]>>>ٛ>f>`=~=>,2>td>Tq>z>>>2>g>u[>6%> )=~=yn> >a&><>>>>c9>Q=U=x =Q0==&>!7>|M >>a>>җG>> >6l>>i;>T?>>?&d?4?4?'I>!>U>n>.~G>-'>k>XT>&>>Ѳ>^>7>a&>-'=Y==Tq=yN>q$>{m>=>T>>܊E>`N>>@>^>%`>l>?b?4T?C?Ci}?3?>@>P\>Dn> >2Q>|M > >Bu>t4>:>H>>/====>q>Y>5>G>z>ë>7>|>3>w>f>k5r><>Y?3F?B=?A_?2A>>>I>@j>>3ټ>>>6>>>>>5a=G===̹=rܫ= Z>>z3>`->d>p>>U>k>>>P*>>O?0x?0d?/!?i;>>>gs>%O6> >!:K>g$>>>ߙ>F>]>y>$̙=T=x >]u>y>n>F|>>޵=>v>>*>q>̙>P>>m>s>>td>+n==t>>51>x>C>>s>>>>=~'=,:D:t;dt> ==0=/=/=~>d>1>i><>|>b>/>[db>"#=07===E>>->Pl*>^t>Q>+-H>q=~G=,;9g9g9g:C<#D==t!= =| =g$=N f=^t=*= >Y>#r>?/>Pl*>O>>8>~'=yN=={=^= E= >{> > TP>,==D=: <3m:g9g9g9g:g:t<'Y<=R= I> v_>/B3>.~G>k>=51=g=p5=R==n=ǟ==@= ==K< f;n:g:C9g:g;3m;?w>/B3>F7>G~h>1F>i;=5Q= :==i;=o== f=*=s=̙=qp= !7>V>u >y>dR%>4\Y>= Z==a==:=[>>=T==g;!;dt:D9g:g;<==j=?e==,=C< <>Es>>i>ݏ>է>m…>!:K== == Z=:>>.<>7*>!7==h_<;D;g:g9g9g;<=?/===?==f=>nq>>8>r>a>S >C(.==T=t!=n>>@~>q!>">qp>4 =~h< {;3m9g9g;g%>I>qD>ۅ >t>ӽ)>>Zv==T=T?=s>>a&>Y>C>>k5r> =;9g9g:gk>V>qD>>8>F>>Y<=Z=j=(^=R>'>gs>>P|>&>w>=/;n9g9g:t<=)d!=t!= =zG=F= <*==>{>V>> >΂\>)t>>::k=ʎ=9G>E>'>>]n>{=;g9g9g;3m<t==I@=C=(^=gd>fL>է>8>c>[>Y=t=<;D<=m> I>@j>]n>O%>L=d<'Y9g9g;<(< =R< <)d!>@Y>.<> =J=Q0<;3m;t!\===:t9g9g9g:g<R<<<;9g9g:D;?<==8=>f> =t4==t=h_=,s=?/=o>/>-[>@j>+4=2=<ѳ:g9g:g;<== :=g<};g9g9g:D;<;D<_=:K> >#r>&>-'=t=?=m…=+n=]n=%> v_>U>i>R=>=*=;:g:D<#D<=3m=R5Q=I@=<=;3m9g9g9g;#D;iw>']>'I>=:=/=*i\==T?=T>%>U>g >P*>&=i}=3md>d=J=t=&Tq<O>2>@>+>%?==*i\<ѳ;;dt;i<=/=| ===g=J {<;g9g9g:g;g;J> =yn==h_= <;J;3m;dt/> =Z=n=,=g;!<==d=/=ʎ=J<=Ow=dB=x=F<m<ѳ;J:t;g<<<5Q<<}< =;?;n;m< =3m==m>.<>W)>a&>R=>&=T=Y==)d!=>>%`>>OW>Y>Z>@Y>&=:==h_=<_=3m==Ow=?=E=?=J {<_<<=DU=a=9>)p>nE">8>L>CY>s_H>*=嘮=(=>>2ԁ>oJ]>>>m>q$> >@>O=ӽ)=̙=#=>ٛ>J {>_>P*> ===3m= 5=| =>*z>C(.>>̙>Gn>>m>Sx>w=y-=i>!:K>gs>f>̘>>yn>>M>>@>w==p>ٛ>^2>z2>f>>qp>&== =_yN==>{>@>?e>>qD>><>^t>GM=>T>3W>޵>,>??H>1>s>>Y<>>> TP>8>I>>>d>>L> ==| =h_==Ow> v_>s_H>>>>:*>L>~'=>>4 >g>>}? #?2b>>>>R=>B=>Y>@Y>4>M>>>!k>S:>Y=~G=rܫ=!:K=L=^=>/>r>>">Z>(> I=_H>>'I>j#>@>s>M>M>ƙ>>td>+==ҷ>T>,s>q>>g>q$>g>6%=~=x=0>7*>22>k>==E=d>>@>w>W>Tq>D>>nq>,o=07==?=0>O>>>i>{m>nq>@>w=2= :<;t!;n;n<'Y=)d!==E=a=͝=m==I=ʎ>{>ٛ>::k>WOw>gs>`=:>Ci}>M=J<=| =1=i==:>d> v_>&Tq> :===)d!;J;9g9g9g9g;^>> >as> =̘=zG=g<=0=ѳ===嘮=O==a=0v>>'>"==?=e<m<=*=t!= %=2==5==-y <t;3m9g9g9g9g:D;;i>!{>!>-'===: =(='Y=g$=Y==D=a=rܫ=c<+n:g9g9g9g:g;3m<(<(<m='Y=;D=(^<ܫ{>)d!>DU>KR>4>=˓S=x =&Tq=-y =p5=*==E=:= =Z_(`>Sx>{>|>kv>2ԁ==TP=-y =(^=h_= =G>>&> d=y-=-y ;:g9g9g;3m<}=c=[db=g==k=%O6<4>|>8>>u>a&>==: ==`~=>f>J>[>HBT>:=5<t:g9g9g:DKS>>m>~>Ѝ>g>k=*=?/=c=T?= >;D>u(o> >y>@=i=R;3m9g9g:g;i< f=3m=p5=w=R5Q=<t<'Y<t=f=T>DU>>@>T>>E>==(^<='Y=>@>|Z>=>޵>N=Z=;9g9g:D!7>~>>d!>w>d> )=<%>a&>y>l>3=ʎ.<>k5r>| >a&>#r=5Q=^t<;3m;m==;> >7*>)p==_yN;!9g9g:D<<<<<'Y;n:D:>> ?e=*==;?9g:g;gd>>R=ʎ=Tg>޵===a=(< fq$>C(.>P*>?C>~'=:=qp<_==s=>%`>@>^t>a&>J>!{=~=o=T=;D= ѳ=C=D=L>==s={=q>6>bM>u(o>g$>9v>{y=2=_yN=x =yN>q$>O>>66>>|>t>g$>+4= =̹=x=?e=Y> =>-y >B">7>7=*=h_=<= :=h_=>*z>22>cψ>x>m…>B">-'=*=t=>{>22>n>>I>=>>I>F7>i;=5Q=~G=/=[>&">V>n>b>3ټ>\=x== ==c=J {==&>M>DU>]u>U>0 >=i= =n>>6%>n>CY>̙>>> >?C> I=n=o=s>+>.<>^>u[>i>;?>/=a=t=R :>-y >*>GM==̘==Ɉ>>*>XT>T>t><>>Rv>İ====/=>"?>F>X>I>!:K==i<T>{= =n=Tq=s=T=[>>2ԁ>N>Y܊>S:>9v>==VJ<=&Tq=Z_(==> >q$>%>== %<<#D<'Y;;J;?;<=Z_(== %==k=R5Q=h_==*>{>-'> %>%`>-'===0<ѳ==;D<;; > ==T=qp<<;D<<t=c=XT====a I>#^>)p>GM=:=M='Y%>Q0>\(O>>><==Q0<_(>q$>=d=Q0;J9g9g9g9g:g;?<==(^=(^=R<t;?:t;<=ѳ>>@Y>u >>_> %==^t<_>/B3>C(.>22> =x<:D9g9g9g:C;g>@Y>v->|>c9>f=n=K >8/>N>@Y>i;=<:D9g9g9g:g;!{>S)>`>@> =Y= :<#D:D:t==a> >4 >'I>T=TB>q$><= {=rܫ<;g9g9g;i=g$=T>g===g;t!9g9g9g:D;;t;;#D:g:g:g<'Y=!:K=d=:k=n=O6=e<_;J:C9g;i==I@=,sv>>=a=5=*i\<_<*<t<<'Y<=^t====̹<;J:D:D;J<}= =:*=Ow>>^>޵=Ϩ>===^>%O6>8qD>::k>!7=m=i\=WOw=3m==g=(^==͝=L==n=C<;t!;g>'> ==n=T?<m= :=?>{>!{>@Y>W)>W)>>>x=5Q==a=C=C==Ϩ>>>^>/=:=m< f;?;R>{==y =p5=(^=Z_(=Y> O>)d!>C(.>U>Pl*>6%>d==T=WOw=P*=o==07>w>2b> =Ow=T<;t;!<<==J {=x=y-=a=t=Y==]n=3m=u[=n> Q>!:K>22>::k>->B===6=%O6=: =t!==t>+> =!=/=Kd>GM>x>=Эy== :<̹<=c=Z_(=/===d==rܫ<;?;;?;n;!;J;?<;D<ܫ=&Tq=%O6= =yN=s=C*z> ?e==?=;DQ=07== :;?:g9g9g9g:g:t;n;?;?;g:D9g9g9g:g<=t!==Z==== <:t:g9g;3m===E=y-={>-'>~'> =yN=a= 5 >&>Q>===4=c ?e>-'>d== ={=(^=g<*< {=R=C=%?=:K===9T==dB=T=0=Rg>=?= =^t<5Q>c= =y-=/=!:K<> ==Z==x==̹4>O>=0=%?<;:g:g;<}>!:K>+4>k>Q=o='Y >)">2ԁ>%> I==p5<<3m;i<;D>%>ٛ>==/=<k>w>=$=/=w=cq$>.<>%> )=n=K&Tq>Y<>pO>c >3ټ=m=<t;g;J==p5==T=n=R5Q<;g:g9g9g9g9g;Dn>0>>H>\;>GM== ѳk>{=ȃ=N f<;dt:g9g:g:g;<_=x=Ѳ=J=T=y =p5=<_< {=I@>>I@> >'>>cψ> =ȃ=M+<ܫ==h_= E=>-'>~'= ==t/B3>i>>u >KR>GM=ʎ=rܫ= :==`~==> )>d>Q=51=VJ<<_>*>)d!>=O=w/B3>g$>66>z3>R5Q><=2=g;J>>==T=8=B=x =/>f>nq>V>Ѝ>>>F|=:=Kİ>,2>(> ==<*;J:D:g:D;nR>']>/B3>q$===t!=VJ<=x =Ϩ>>4\Y>>>6>>>pI>^=='Y=T=̘>>@Y>c9>i>Es> =x <;?:D;i;!<*=5> D>-7>;>*> =dB=| =A=K=n>4 ><>v>Ѳ>+>R>u >B=~G=w= %=>&>N>w>66>dt>#^=OW=*i\<<(<<;D<=rܫ=>>+n> 5>޵=X=^t=c==>>{m>,>>>a>Y<>d====Ϩ>>^>;>f\>rZ>Xc> =˓S=h_=Rw>=;=x=c<}>>~>>>e>)p=T=t=h_==n= >-'>.>>OW>+-H> ?e==k=>%>>OW>6l>f==o=J {=(=t=]n==n=?>{=d=dB= =(^T><>&> =?=g:g9g:g:D;dt;;?;;g:g9g9g;n&>0Gn>4> =:=M+;:g:D;n<>2ԁ>8/>!7=:=L;?:D;3m;! I>>/><=J=;n:D;3m;J<;D<<<<ѳ;i:g9g9g:C:g9g9g9g;3m<=t=T=D=~= =51=J {<'Y:D:g:D;g;n;?;J;!;?:D9g9g9g9g9g9g:g;?<t==Q0=R5Q=(<;D:D9g9g:g:g:g:C:C:g:g9g9g:D<<޵> === E=?/<\i;3m;J==f==*z=I@<;g9g9g:Cv>>0>P*>Rv>6%><=x>a>*z=~=^t== 5=h_=> x>Py>>F>>q>AV=d=VJ<<*=C==>-'> v_>GM==h_<t;?;g:g:D;!=&Tq=ʎ>GM>;?>B">*>/==w=p5=i;=;>9>TP>>ǟ>ԡ>}>> %=D=C=t=L>/>NR>p>td>Na> =,< f;!;dt;!<=a=>0>^t>j>Sx>$̙=嘮===>Q>[>g>܊E?>Y>T>>::k=:=i;=n> I>@j>0>W>> >M=:=M+<<(<<_=h_=ܫ>7>gs>u >`>0=2=̙=t!==>_7>s>R%??:>܊E>P|>B=07==5Q>d>Jg>Z>U>>>nq>= := :<=c==0=> >Q0>`>Q0>']=…=^=3m=: =ʎ>AV>>;p>lK>;>">>0= ==>>4>zB>W>>>d>-'=y =VJ<= := :==g=t!=> v_>1 Z>(>Y=n=K-'>o>P|>>]>S >WOw>'====i>i;>B">qp>@>l>4\Y==:K=R5Q=(^<_(===| < f;!;!=g=̹>ٛ>T?>q>i>@>=ʎ=g=J {=h_= %= {>> 5>-y > >{==m…=N=;!;i;J<}==x ==I=m=R<;;?<> =*==f= =>d>T=y <*:g9g9g9g:g;#D;n;:t9g9g9g9g;<= :=(^= <;g:g<=c===07> >@>IG>22> D=;t:C:g:D;iO>A>e>l>W)>!7=51<ѳ:g:D;?<<m=0=I@=&Tq<;T?9g9g:g<<-'>Dn>h%>oJ]>Y<>$̙=?<=:D;3m<)">K>S:>;D><=;J:g:;J<ѳ=g=?/=`~=J {=g;J9g9g:C:;dt:t:g9g9g:D>GM>q=<*:D9g:g;3m;iQ> Q=~= =)d!<3m;g<'Y==x =s=^=`~-7>S)>Y܊>@j>= Z<>ٛ>q$><=Ɉ=qp=(==I@=d>{>KS> >̙>g>E>W)>v>== :=w=n>>!:K>22>->w== ѳ%>M>W)>?C>==x =\i==͝>22>>V>/>8>^>>-y =n={=2=>->g$>>?e>q!>'I=D=$I >F>ui> >j#>51==:K=| ==>[db>2>A??1>q>y >Py=E"==:>>UP>>,>>L>s>=d=g<ѳ=(=&Tq= :>Y>P*>~W>q>u[>Dn> ==rܫ==>e>>? :?L>*>Gn>Y>=51=~>GM>^t>>>51>n>>-y ==Q0= =;D=?/=| =?>4\Y>gs>u[>fL>7l >{=t=3m=C=:>L>̙>l>2>>j>>B=Z==Ѳ> >F7>Q>,><>>g>)p==| =;D=?/=0=,s=t>>/>C>951>=̘=N f<> >R>8>>>nE">&== %==t>ٛ>Y<>>m>>T?>d==qp=?/=c= >=:=m%>fL> >rJ>W)>ٛ=Ϩ>==F=f=:K=E>-'>51>G>::k>2b==T=*=cg>2b>d=O=~G=\i<m<&> >=*=!:K:t9g9g9g:g;?=L=&Tq<;?:g;n1L>Y>ba>M+>ٛ= Z`>WOw>|M >g>q>;=>Z_(>rJ>5>u(o>?C=$<_:D:t<>=̹>c9>m…>WOw>!{=/>%O6>-y >`=O= 5:D9g9g:D;J<=(^=XT=I@=<:g9g9g:g:g9g9g9g9g:D >.<>>>)p>{=<w>'=2= =C<!:K>oJ]>>>>C==t!=(=VJ<=n=$>-'>"#>>g==t<;i:t;iM>@Y>G~h>/B3> =n=C==,s=>d>td>>K>)> >o>!:K= =T?=t=a>%`>S)>{G>">d> =Y=: <<<< =*z>,><~>h_>t>]'>*=嘮==;D=S:=>0>>{??aS>ߙ>)T>@=E=*z=X>>@>%?>*>.>>j#>i;= %=c/>C(.>s_H>\>kv>9>==0=J {=>@Y>v_>N1??k%>/>>G== ==/>v>>IG>TP>> >,>5>*==N f= ==1=?/=x = >+n>Z_(>k5r>XT>+-H==x =,= =y >,2>nv>ȤJ>>lK>@>-'>1F=*===5>1 Z>66>k>>V>}RF>&=ʎ=qp=(^=0=-y =*i\===>%>5a>*> d==<;D<\i=]n>v>>b>>>L>>^2>^=?=\i=g=>w>K> >>,>M><==R5Q=&Tq==g< fx>N>r\>n>Fy->d= E=?/<= :=zG=?> >.~G>A>4 >=@=j=R< R>g=:=^=!:K<(;!<< {=K=O6= ==O=OW=Z_(<<'Y<'Y:g:g:g:D;<<ѳ<=;J:D:D;g;?;!<}=c=_yN=~2=qp=7X>>= {=*;3m9g9g9g:D<<<t+>T?>]'>F|>=s>P*>w>>lJ>6%=~2b>Sx>z3>g>p>;?=t<5Q:g:D;J3>^t>i>S)>q$=2>)d!>B=:=t:g9g:D;?<=3m=h_=VJ<= %?==n=$I<'Y;<8>S:>cψ>IG>-'==c<=GM>8>w=̘=h_ >y>V>,>>P*=[=h_<*=-y ==db>>;?>C>*i\===%O6<;!B>;>DU>/B3> ==='Y<<=VJ<= >U>KB>dB> {>~G>}>i;=< =XT=m> >DU>z3>>u(o>8/=T= =g>C>R>?C>==3m<t<=rܫ>>i*>>Ԣ>K>>">u==<m=]n=>d>XT>>S >o>Xc>d==*< {==c=3m=o> )>->>OW>,o> =Y= <(<=A=…>T?>>>P>8>a&> =x <*=0=>>Dn>Y>j>\>Pl*>w=y =(^V>d>=Ɉ=R5Q >l:>d>>nq>%=͝= 5<<_=R5Q=>ٛ>M\z>cL>V>)d!=?=:*=R< f<>4 >3ټ>İ=d=^t<ѳ;i<#D-'>"#>ٛ>T==*<ѳ^>->7>$̙==u[;!9g9g:C;?*>T?>]'>F|>İ=n-y >WOw>a&>KS>Q=y >951>C(.>->\=w;3m9g9g:<'Y==k=:*=T=)d!V> )=5=<9g9g:g;g=!==a= ;i:D;k>.<>@>(=?=v<;t!<({> =T=n=-y .<>k5r>x>WOw>-'=/<;g<<ܫ=R5Q=ȃ>'>"#>= =~G=I@<<<+n<t= =T=Ϩ>>>O>g=?=B<}:D:gAV>| >>`~>='I>@>4\Y>=ҷ=x <5Q<;D/>a&>i>@j> ==i;!>;?>0 >-'=ҷ=qp< >)p>,s>==3m;i:D:D;?=c=51> >k>>Q==)d!-'>M> =y-= :;3m9g9g:g;n<=R= 5= ѳ<;3m9g9g:D~'>k>^=ȃ=N:D9g9g:g;<= :=;D='Yq=*=<=9g9g9g:g;3m<;D<_==R<;dt9g9g:t;J<;D<;dt9g9g9g<'Y="?==/=| <_:g9g9g:g:t<R޵=m=Эy= >{=Ϩ>=zG>>d> =*=<ܫ;t!9g9g:g;</{y>=;=s<;?:C9g9g:D;</<#D;?:D9g9g9g;<= = V> >{=%=zG<=:g9g9g:g:t;?<<;D<'Y;:D9g:g< =<_(=&Tq=)d!<;!9g:g<==>4>d> I==<ܫ;t!9g9g:g:;?<'Y4>{=ǟ=ѳ< ;?:g9g9g9g:g;g;;!;J;t!:g9g9g;t!<t==<;t!9g9g:D<=| =:k=:==d!=T?=~=g<5Q:D9g9g:g:g:D;g::D:g9g9g:g;?=G=ȃ=v<t:t9g9g9g:g;3m;;J;i;:9g9g9g:D=n== :<(:g9g9g9g:g:D;g;g:D:g9g9g9g;=T=?==J {f>.~G>'I> ==M>K>ga>\>-=嘮=a<;t!;dt<'Y<<;D;3m9g9g:g;!<=Q0=/==_==^t<'>]n>x>n>?C==h_ٛ>KR>e>Z>*=~=0;J:g:t> v_>/>']>={=5=~=Z_(<:D9g:g;<<^>d>===<5Q;dt:g:g;3m<== :=3m= x I>'I>;>7*>!7> =y-=?/*z==0==p5=t=*=x=> v_>F>\i>S)>4>~'==޵==E==T=0=: = %=5>"#>KS>]'>S)>6>B=:=i;=(d>.<>>OW>1>q$> I==R=R{> >=~===J { >4 >-7>==*i\;!:g:D;<;!;3m:C9g9g9g;?==O6=>{==:=nv= 5@>rJ>>>[>^t>=t< f;;?<ѳ<*<<;D:D9g9g;dt<=h_=Ϩ>> >ٛ>&>{y=ʎ=~2==g=y >%>|Z>>w>s>>@=+=<>#D>!7>=~=i;=: =4=͝>8/>)3>&>¥>'>>S)=yN=<#D<==DU=I@=cR>GM>İ>v>=̘= =3m=C=>->|>Tq>%>[>>@=s<5Q;-'>V>:*>u>>f\>=/>C>V>G~h>q$=*=7X;J:D;dtw>s><==:K=;:C:g;?<=!:K=DU=3m=g>g=O=n=qp<:D:C;3m<=*i\=`~=VJ<=d>'I>7l >7*>']>Y==-y ;J:D;t=c=R= E=/=x= ;9g9g:g;t<=rܫ=Ow>d>!:K>#r>=_H= =t!=1=h_=n>>C>t!>4>I>gs>;> =?< f;<}=a= f>k>Y= =D%>DU>M+>7>=yN= %=qp=t=[>8qD>>>>>!k>k^>*=魚=`~Y>0>AV>->V=| ;J9g:g;<ѳ=,>T>.<>WOw>b>N f>#D==:k==> I>T?>m0>U>ۅ >χ>Ѝ>P\>B"> =:K=(^=<~=Ow>'I>\i>pO>Y>q$=/<:C:g;3m'I>P*>\i>G>!7>{==̙=> x>U>>!>Y>a>>>HBT>-'=51=]n=qp=>->cψ>vn>`~>$J=>.~G>;?>,2>=?=T===T>6%>>>>]>0>p>::k>=/=]n=h_=*>&>B">Sx>=̹>=D<t:g9g9g:D<>> =?===u[=x => >H>@>>>d>>>ٛ=?=t=(^=*i\=^=><>-'>==3m;!:g9g9g9g;?=c==2=51===,=Z_(=*= =XT=>V>8>+-H>'I>`><=嘮==J {*z> =E"=Tq=t<'Y;g;#D;<ѳ=-y =T=R=a<ܫ;?:D:g9g9g:g;g;id>'I>,s>Q==_yN<:D:D;D==x=~h==n=T v_>=J>@>)">Q={;!:g:g;?=t==>=t4= =:t9g9g9g9g:g;3m;?<#D<}a>.<>0>ٛ=9=C;t!9g9g;3m< =?=07>==/=t;3m9g9g9g:C:g;3m<<<_= =R<<_= =\i=Y=>>v>= =:*/===T<5Q:D9g9g:C:D;3m:t:g9g9g9g;= :=Y=嘮>{==:=a=0'I>d>>u >@==| >1L>.~G>=[==f=<~=U>->>=>>;>m0>KS=:= ;<< =;D=Q0=&Tqİ>@j>Y>Xc>@~>=T= %=>Y>k5r><>Y>>/>>/>d=Q0q$>N f>g$>f\>L> v_==~G= >>\>>?F>˴>;>E>ٛ=a>@>Y<>Xc>?C>~'=J<=5=y >>x>c>Bu>>}>>H>d=22M>/>.<>&=O=5=f= =m>Pl*>B>>R>~>f>W)=;<_;if>^t> >2b>>`>=/>=J>G>;?>&==a{>^>-'>^==OW=L =>i;>O>=Ѳ=x ޵>&>.<>>>>OW>*>c=ʎ=C<;#D<=f==0= f===̹<(:C9g:g<;D==?>V>"?>8/>=J>+4>'==o=?e= E>>*>\(O>>>>z3>N>GM=/=<}=3m=J>R>ٛ>>=ʎ=(^;:g:D$̙>]n>g> >|M >L>~'=5Q==T>/>ga>>L>L>H>qD>>U>'==Z_(=5>{y>;?>i>y>bG>'=n?C>K!>>>>>7>V=>Q>?/>>?G?/?+M><>>>8>T==9>1F>rJ>>>>x>L=<<DU>><>>y>o>IG>^=>w>Q0>Y?0X?3W?>?8/?!A>ԡ>W>UP>=>w>Y>6V>9%> >s>>DU=:= :7l >>Y>>Tq>/>AV>w=>(>KS>Cz?*z?3?=a?6?f>:>+>\>k=d>>_>F>İ>F>h6>>Q=07=I@<=<<*=>>a&>>+>d>`>'I>{==>->l>܊E?V[?.Q?&#v>!>>?e>M+>~'=>>DU>Q>Ѝ>D>>x>3ټ=0=(^<'Y:D< ==R5Q=嘮>%O6>N>^t>M>'I>4=ӽ)==dB> D>Z_(>r>R>G> > Z>>a>,2>\=n=*>u>NR>@>)3>>G~h>=R>>g==/==k=h_=X>d>Q> >c>#>td>N>)d!> =͝==a=y->{>>']>L=[=:K=;J:g9g9g:gM>'I>'I>%`>d=E"=dB==h_=XT=u[===s=?==u[=*i\<;m:g:g9g9g;< =;!;!g>k=:=?==3m='Y=8=J {=3m== ^>']>-7> %=n==4==(^==̹=a=R=s=/=K<>@~>fL>o>Zv>(=a=YY<_=g=1====_H=%= < f<;;dt:g:t;!<==: =C=,s=c<_<<t==*z=d>0>p>>S >>W)>^=<>%`>)p> %=07=a >HBT>>>`->>l>=x<;D>;?>Pl*>C(.>=v>>@Y>m>m0>>>a&>d=rܫ;?<==>d>?C>WOw>L>L=>M>|M >P\>q>0=5Q=g:D;dtq$>7l >->v>= <(9g9g9g9g:g;g<#D<=(=)d!=)d!=t=R=*=T=J>g> >+>GM=E=K<'Y9g:g;<=t!=ȃ=[=嘮=8< f:D9g9g:D</<==<*<ѳw>M>===;3m9g9g;3m;J<(;?:D9g9g:g >>B>*z=ʎ=x=M+=%O6=> =>M+>>6V>>d>d=R>@>Y>Xc>@~>İ=t==8>{>T?>>Σ>Bu>֬3>=>nq=:=c;dt<#D= 5=,=a==;D<;g9g9g;7l >m…>>\>k5r>;?><=E=Ow>)p>>ë??-?/>>@> =a<}>HBT>\>ѳ>>z>H>==Z>@>%`>Bu??L?XD>…>>2ԁ=g>>ui>>>o>;> I=͝=t>8/>b>Ow??'I? >0>k>'I=s<= := =/=͝==5=;D<ѳ;g9g9g;dt<==N={=ȃ>&>L>gs>eW`>F7>GM=5Q==>&>{>>ܪ>E">Bu>;>}> =0'>% >!:K> TP==a==b=:>>OW> >>>>p>3ټ=y-Y>9>_7>m…>^t>3ټ>%?=x<;:g<(= :=g==={= 5<;g9g:C;3m<(= =: =h_=T=T=t!=7X<_<<=C=s=E">> 5>'I>!:K>d==<t;#D:C;==| =s=5=T=#DT>O>/>)d!>)d!>>{=d!=(;?:D<;D=C=:K=/=/==1>!{>%>> ==9= Z==dB>{>q$>@>_>r\>oJ]>Y>1>=s<ܫ >=yn=o=;:g:g'Y>`=:>>>{>WOw>!{=G=ʎ=t4>">^t>>b>#>>`> >q>F|> =n=rܫ=/> d>1F>W)>a>KR>=?=;i;==#>-'>_>&>>>`>@>~>`>ٛ=yn>>Rv>a>uY? ?1?-?¦>Y>>F7>^=L> )>A>>j>>> >!{== <=K=>%>I>>>>>>o>;>d>%>| >s?)?CH?M+?H?7;?K!>>{m>5a>>2ԁ>>>ߙ>ܫ>/>qD>u[>"==)d!=XT=>%>j>Э>${>W>.>b> >IG>L>.~G>>?6?Q?eQ?ba?Eŕ?'zS>6>8>Pl*>.<>W)> >ؖ?k?İ? >X>w>0 =Ow=p5=3m=:K>>w>>/>>>>>#>@Y>~'>-y >>?5?Q ?e6?_X?D?#>w>m>V>0 >\>M>Ow?o?4?>x>q$>@Y=:=}=,=C=?>Pl*>F>">l*>s>q$>gs>$̙> >ٛ>n>!?)?B=?J?Fh?3F>1>>>D>!7>Dn>Q>)t>…?ӝ>x>r>t>+=d=J {<#D<t=d>>a&>m>>>k^>+4>R=a=2>3>x>? ?. ?&> >>">\i>']><>ٛ>Y<>>>X>D>>S)> =<:g:D >0>@j>0>=*= =M=>{>DU>>>>X>>q>WOw>)d!> =9=:>x>C(.>nE">}>nE">@>w== :;9g9g:D<=a==2==R=v=Q0=&Tq=8=D>Q>->Z>pI>m…>V>7l >Q>{===OW=Ϩ>=[> =>^>*z=i=o=\i<;3m:D9g9g:g;Ja>'I>)p>q$> ==dB= Z=o=o=o==n===v=S:=<(;?;:g:g:g;g<(T>!{>8qD>;>)d!>Y=0==%`=d!====y =a=p5=0=R&>M\z>q>y=Z>f\>4 >{=s=d==2=ʎ=嘮== ==w=g4>IG>H>L>I>>w>*( =̘=| ===>O>#r>*i\> :==VJ<']>y>>j>G>'>L>T?==k=a=2>>/B3>`~>u(o>eW`>.<=Ɉ<_<;?:D;3m;?>>>>ߙ>R>Y>h%>v>=a=3m=><>P*>*z>>=>`> =)d!;:D9g:g;i2Q>+>mP>d>ޔ>a>">`=:=2=7X==/> >Sx>o>a>m>m…>=;D:9g9g9g:D;J<==R5Q=qp=zG=p5=T?=K={=ʎ><>Z>C>'> >>>6l=<m0 >td>4>">Q0=m=:g9g9g9g:g;3m>Uǟ>:*>> >I@==_yN)">DU>=J>O=<R9g9g9g:g;t<== := :=R< f<= 5=T=%>d>q$>-'=a=R=g;;g<#D<==ѳ=J=2=VJ<<;D9g9g9g:g;d>ٛ>d==Y>8>L> ===T=h_=y >>S)>O>>>`> ==qp< =9g9g<= =C=C=c<ѳ:D9g:D<= :=/>`>M+>h%>h%>N f>"#==ȃ=OW> )>Z>> >V>܊>d>k^=<*:g;!=(^=I=n=?=x =R;i9g9g;JT>G~h>>8>>~>L>GM=p=d>/>>F?k?? >0>>=;D<d>_>d>>>Q>^t> =>k>I@>r>g?]?#4m?>>>M>/B3={ )>XT>>b>>q>T?>= =yn>A>f>? ??|>L>>']=T< f===dB==Ow=51== <:C9g;n1>m…>aS>">e>+=:=?=> v_>I>`N>r>NQ>%>>">Y=Z_(<t<*=K==n===/=0<:D:C;m*>C(.>@> = =T=c=Z_(=>C>)3>d!>>i\>#>>OW=0=c >?C>gs>u[>gs>>> =<_;?:D;!=c==5=/=g=;Dd>!7>*>%>-'==xV>s>">/>1L>%> =/=0)p>J>V>Jg>*> =:=o=̘> )>*>S:>u[>q>I>o >F|><==Q0<=p5=ʎ>>GM>ٛ>Y=0=Z_(<ѳ;n;g==>%?>HBT>>>>U> >P*>~'=_H> O>4\Y>u[>>a>>>L>1>f\>#=07==…>>Q>| >>u(o>9v==m< <==T>-y >p>2>4 >L>l>v>>C(.>u>%>m…>R?@?2??4?<~?,>L>)T>l{>.<>~'>)">h%>%`>> >ď_>F>Rv>޵= :=XT=n>@>F|>V>א?]?(? >>>k>+4>?C>m>/?4?P?eQ?c/?H2?,>Ӝ>X>^t>@~>]'>>Ѳ?v?]? T>2>C>;?=5==>T>G=>.>L?3??է>g>d>v>4>Jg>? ?C?g?zB?u[?]?7>>>,>u[>W>~2><> ?#^?,?*?U>>h_>=U==E>.<>C>Y?)?s? =>,C>zS>h%>, >F|>P|? D?C?g3?y-?tt?ZN?5>>>>x>XT>w> >?'?.B?+Ѝ? O>ê>u(o>ٛ=@=Q0=> >w>>>>>A.>>t>C(.>M>0>>R%?4l?Na?c4?\?Dn?%{>>>c9>AV>kv>q$>?H?# ?4>>> >]'>d=n<<5Q=M>%>>i\>qD>7>>P*> :>޵>>W>?@?1?:?5? U>N1>,>w>>> >;>66>Ѝ>Ow>V>Bu>U>I>+4=yN=C;g;g<=y >/>W>nE">^t>/> =T=Y=i>ٛ>k^>)T>>>܊>>V>q!>;>a>>d>4 >qT>>>>r\>.<==g<=:C9g:g<t=x =ȃ==5Q= Z=={=YY=I=a>ٛ>S)>>>)3>y>S{>)p>c=[=yN=*>*z>L>+4>1F>%>d= =t=c;?:t9g9g:g<R<=== x= =ga>;>Q0>R>@Y> >=9=%=%=ҷ=yN=:=O=9=@=y ==I@< f;!;?:t:D;g<<<= ѳ=c=< f8>G~h>a&>dR%>P*>(>,=Σ=s= f===07=07=:= Z=%?=C=R<{>@Y>y>(>S >>`>q$=;=T= {=a>>w>>d== Z=8<_(!7>u[>s>>dB>>է>T?>= =51=>d>,2>M+>Y>C>2b=<_<T>I@>>Э>x>>t>@>66>===t>f>_7>>u>>cL> =22w>]u>)T>2??)>8 >w>>)"=*===yN>, >g>:K>[>g>d>7l ==<;#D:g:g;!<m=f=5==51=~G=d=f=]n=n> I>U>>ٻ?;?{y>>̘>>!7=n==*>-[>>>>7>>DU=:K;?:g9g9g:D<'Y= =rܫ=a==/=R=a=UE=d=07>->o>>/>>t>>u(o> )=%?=XT=>x>o >Q>>q$>q>+=x ;dt9g9g:g<(<m=C=qp={=o=R5Q=: =J {=/=!>::k>>]>{>Ѝ>>.~G=U=C==h_=y->&>i>޵>zG>C= =Y=:D9g:C;ng=07=n=B<}:D9g9g:t<#Dw>==n=M=| =w=I>V>2>p>k>u[>6%==%O6;3m9g9g;n >@Y>]n>]u>B">M=O=n= =>@~>S >>a>V>C>?T=̙?C>z> >x>y>F7>=07=嘮>>{>j>J]?,>>>ȤJ>k==;<ѳ=a==@=y-=?=R5Q<:g9g9g:g{y>[>x>V>rj>?e>\i>L=Z=yn>2>> ???>>>=R5Q<\i<_=T=OW=J<=ӽ)=51=g=R;?9g9g:<t==,>v>>XT>` >>a>>T?>-'=ӽ)=&>->>>?)>RF>l*><>-'=qp4\Y>qp>>f>i>-y ===D>>rZ>>U>Bu>`n>>g$>T=T?<tV>/B3>KS>F|>%=07=x <5= 5=ʎ>.~G> >>Tq>>| >*==*'I>Q>`>T?>+n=~=x=<;D;g;?<*=S:=:*=a=/=K<;g9g9g9g;dt'>L>~'>=Эy=<<;;g<=-y =zG=%?=rܫ= 5<ѳ;3m9g9g:g;i<*=^t= E===_H=J<=~G=^t=c=*i\=5=> ?e>:> v_>$>`>޵=*=8<;J<'Y====:K==*i\<;t::g{>1L>Y<>hg>]'>;?>=E==/>{>!{>F7>k5r>rJ>Y>h_>@>-'==x = 5=k=J= >>s>=@=h_ >Q>d>Tq>>>>`>=>{y>0Gn>p>*>,">>>2>>gs>)d!>Q=5Q=yn>8>P*>|M >>u[>=̹>޵=s=K=(^==_H>5 E>>>D>>1~> >>S)>ٛ>&Tq>k5r>>=?1?>??=Zo?/1>)>d!>u[>;D>>.<>k5r>V>8>Ӝ>!>>]n>O=n=t= f> >Q0>7> ?Z?? >>h>y>1>@>>?2b7?M+?e&e?d!*?I?0s>>;>m…>J>a&>>?/?L? ƚ>>>K> I=ʎ=E> >Q0>>^??$)T?C>>`N>g>=̹>P*>U?+?Ao[?f ?x ?u˴?_h?;O>W>>">`>>>?&"?.,?+=? >>u[> ==J=>2>f>? Z??1>ط>>u(o>2>M>P|?,?A_?e?w?t3?[ ?8@>G>>,>_>|>>?)?/?,?ۅ>L>>'I=嘮= =>>z3>>g>>q>>XD>N> >8/>>?21uY>>i>F7>m…>Z>??&ƺ?3>G>>j>=y-= =c=> >:*>y >D>L><>\(O> > >`>^t>g>=?/)?96?5Q@?">&>zS>y=Z>;D>!:K>?/>޵><>>4+>>>>4=p=rܫ;;<\i=^>>Z>u(o>g$><0>i;=07=E=>&>n>r>;p>M>2>~>C>oJ]>3ټ>>*z>-'>>OW>w>S >>+>|M >7X>޵=x<t:g9g:C{>&>Y>@>>t>}RF>S)>%O6>v>=嘮==i>^>$̙>::k>@Y>/B3>B=:==;D:D:g:g;#D/>%O6>H>^2>]'>F|>$̙>*z=t=ʎ=%=yN=>k>v>>T==̹=x=8+>WOw>o>rZ>\>0> ?e=J<=ȃ=5Q==!>>V=?=y-=x=I@<<=<#D;!<(Y>N f>I>a>\9>>l{>'I===Эy=:>{y>~'>k>`>{y=s=K+>>>ŵA>;p>>|>^t><==y-=Z>~'>;>`~>nE">Y<>!7=51=g<=<;3m;n<t=C=x=/=ʎ=ʎ===WOw=)d!=>{>Q>F>l*>>>2>>>U>"#=U= =p>)p>u >a>>6V>y>=`~^>fL>>%? j??¦>z>+>0 =ʎ=D=O>A>>>>>&>N f=y I>\>Ѝ>%? >??9>_(>&>-=s==>DU>X>>>{>P|>^t=n2Q>X>Σ>˴?F>>H>+>a==g=>)d!>P\>{>>y>-'>C(.=*;J9g9g:gM>>9%>˓S>>b>F7=L=g=DU= =:>C(.>aS>E>I>`=:>q=:D9g:g.~G>rZ>f>u >@Y>/=O6=0<>-7>!7=07=: ;9g9g:D<'Y<<ܫ/>+=yN=O6=M+R>%>7>&== B>1F>4 >>{= {=D=t=>>WOw>>%`>c>[db>k=A;g9g:g>W)>u[>u[>Zv>)p>{=ȃ=51=~>@>է>>W?>>>::k=<:C;?=c==:K== =0<:g9g9g;i951>wt4>=>D>v->@> TP==> O>`>>Эy>0>:>>[#==c;;?>w>D>?e>u(o>;?>Q==>>_7>>G>4 >>?>V= =3m8>Y>u >s>Rv>=OW=^t=YY=><~>?e>>>>>1L=ʎ=-y <ѳ>7*>2Q>~'==: <<=g> >J>z3>>z3>I@> ===<=< ={> v_>-y >#D> =dB=u[=*z== f== :<<;n!7>HBT>W)>KS>)d!>= =Z_(={=> >!:K>;?>P*>Sx>@>q$=~=~G=a= :==| ===a=y-==,s<5Q<<=x =n=>>>V>w>̙>8>{y>M>w=y-=i>>L>>g>>>>>M\z>==n=*>q>+n>T?>c9>N>q$=9=x=_yN=P*=m=07>%>|M >>>Y>=>> >@~> I>-'>L>> {? x?-[?.?~'>:>>gs>-><>L>I@>>5>qD>y >ѳ>AV>=/==:>{y>?/>-'>&>?>B>F>>eW`> 5>*>{G>?h?;`N?I?I,?>\?Ȥ>@>>_yN>:X>G>K!> >L>>>>>951>{=ʎ=O>>=̹>>?N?i;?4>'>>pO>)d!>;>TP>:?.,?IG?bڠ?af?HE?19>U>u[>M\z>d>;>ض? ?x?+>p?>>`=:>B=a=n=魚> v_>>@>=?4>m>Ow>>`=:>%>;>.n>?.,?H?`?]"?G ?/8>>q$>rZ>IG>g$>KB>N1?ۅ?$?V[>8 >L>i>ٛ===?=嘮>UE>>K>>א>c>>@Y>Q>+>w>Kb?E?: p?F(?EV>>S)>.~G>NR>>>^? ?>܊E>q$>Q0>w=/=t=%O6=a>*z>h%>>Y>>>H>> )>>LW?>E>? 9?)?%1> >U>>Z> >d>&>g$>}>Y> >I>>u[>!=5Q=]n;J;!<;D=J {>Q>8/>T>KR>)p> I==i>\>"#>Y<>>=>>`>>I>>L><==>>)p>^t>I>>H>_>!7=yN=Q0>!7>F7>k^>0>y>_>2Q> I= f==Y= > >>+-H>-[> v_>==ev>> v_>>OW>N f>KS>3>-'=a=2==2=̘=?>{>g=Z=*=Tq=^t#D>KS>b>cψ>M>%==/=s==+==t4=G==J=T=cg>@>w>>>Ȅ>Y>=E===d=>^>İ>7>{=51=,sf>n>*>;>~>>8>F|===2=>w>0>WOw>dR%>P*>==>>>x>>N1>>u >-'=2==O>!{>lJ>'>>S >n>=Z_(N>7>Y?;q? >G>W?>)3>===>;?>)3>p>>>l>A=?<=:D9g9g;<=a==n====22==n=:>D>5>?? >P>a>.n>%`====E>@>m><>>>\9>T?=51<:g9g:C;!== =n= =I==-y = ѳ=?/=Y>!:K>` >s>臸>(o>M>>u(o> ==qp=>%>;q>ݏ><>>8>;?=>>S >>V>L>>7*=O=zG=(^=i=*>@>rJ>>v>>XT>=;g9g:g']>e>{m>h%>2ԁ>=5=&Tq<N>)p>q$==C;?9g9g:DQ==:=5=C<t;;;J>%>7X>&=2=/~'>3>8/>!:K>{==t=rܫ==07>22>s_H>k>ui>5 E=a=0;n:C:\>::k>Z_(>\(O>@>-'=ҷ==t!= %>Y>Y>t>V>>Z> )=<t;3m;m >@Y>^2>]'>@Y>d=~=t!=5=i;>^>Y>#>>>Y>w=<<(;!#D>@>?/> v_=9=| =g<=M+=5>6l>k5r>{m>k5r>4\Y= =:*=g<\i< =w> =n={R>'I>4 >'I>==\i<ܫ{>k>'>>f==Q0{>Y>d>R=;=:K=h_=!:K<_<ѳ<=c=C=Q0=3m=(<<<t<>P*>x>k>\>UP>V=ȃ=a=T=yN>GM>>>j#>4>Q>x>KR>=Z=?====嘮>d>>= =5=XT=8=: ==n> >HBT>o>̙>Gn>>nv>Z>O=Y=0>>XT>>v>>r>W?>r>xyn>;>d=yn=>s>C(.>x>>rJ>M+>2b=ȃ==/= E=>&>gs>>C>U>,">>@>-y =!>>A>Q>)t?,?+ ?-V?>܊>7>u >4>GM>%`>F7>Z>>o>F(>a>V>i;=@=n=J=嘮>GM>i>,>a>X>F>;>?e>;?> >>\i>>?'?7|]?:*?/B3>>@>>KR>%>.~G>k5r>7>a>9>ۅ >> >+4=:=51==ȃ>\>KR>w>>>,">>rJ>0>w>M>]'>>܊?&?6?7l ?,>> Z>E>C>!:K>0>rZ>> >>hW>~> >0=Z=2=x ==/>>u(o>/><>Y>>U>q$> ѳ>B>I>d>?66?%_?&? >>V>`~>%>d>>[db> >>P>,">>td>L=*=:*== :=C=/> >a> >u[>P*>!>v>=>w>.<>j>+>~>֬3>:>qD>u>c >L=[=9>>.>q>>5>|>>3=5=g= :<<;D ?e>f>>=07=ȃ=ʎ=Z>>;?>e>>c> >u >C(.>d===n=>w>->NR>[#>L>%O6=O=<t;J:g:D;dt;i<=| ==*==x=| =R==~>~'>*>@Y>HBT>@>%>{==_yN=@j=g==>v>>d>w==n=qp<:D9g9g:g;m<<<ܫ=(^=J {=?/=(^=c=c=qp=OW=t4>d> 5>)d!>%>i;=a==I@=-y =p5=?=ȃ=yN=n==?=]n<;n:g9g:g; >)d!>=̹>;>'I> =n==YY=w= %==ʎ==OW==*i\ٛ>KS>k^>q>Y܊>,s==#=rܫ=| =5==07>V=m=O=<_;:D:g:g;?<==a===t= =C>>>>KB>>a&>==x =x =5= >x>0 >>>*>V=D<;3m:g9g;dt>gs>5>T>>%>>;?= =g=i=>>C>y=Z>H>|M >Ci}=07=,s;J:g9g:g;!<5=Q0==n=n=TP=I@<_<= = Z>8>;q>@>>a>Эy> >S)=~==[db=I>&>n>>q$>>y>=| <\i:g9g9g:t<}='Y=g=:K=D==C<<}=g=>>> >>>[3>9>U=Z=| =;D=/>>u[>C>">P|>+>*=d<}:g9g9g:g;n< f=Q0===T=3mQ>Xc>>>>~>է>7=:=VJ<= ѳ=rܫ> I>\>t>M>>rZ>B=t!<'Y:g9g9g;i<ܫ=C=f=VJ<=<<< =~'>k^>a>q$>i;>]n>d== :<t=R= >q$>Y>s_H>f\>.~G= {=g;g9g:g;J ?e>1L>F7>2ԁ>d=ȃ=a>*z==t;9g:g;g=Z=/=L )>"===x=Ci;> v_>~'=07=<;:D;t!;!<t=g== 5=Rd>i;===p5= ~'>#r>GM=_H==>w>޵=̘==N<};t;;?<===f=R=R=a=;i:g9g9g:C:g:tw>)>2ԁ>&Tq> =~=-y V>-'>"?>']>>T=dB=ѳ=rܫ=C=c=c=DU=====x ='Y<_<*<_=;D=w=/> )>>>gs>xyn>l>@> TP=?=(^=R5Q= f>>=J>j07>>>>Y>'>T=Σ=2=5=*=5>~'>#D>ٛ>{=~=rܫ=0=(^=n==O>>Zv>>> >l:>(=i==n> I>@Y>u[>}>l >L>,>X>fL>)d!>/==yN>k>+>[#>u >k5r>>> ==t!=\i={=:K=>ٛ>\>)3>> >u[>3W=2=~=d> %>[>>Gn>{>D>̘>Y>,>@>=Z>Q>>R>q>>>l>']=u=:*=rܫ=g$=:*=>>AV>|M >t>>dR%>*( >{=d=:>!{>`~>>Gn> >܊>ŵA>7>y>5a>=> >!7>]'>>;>>u[>,2= ==`~=0=Q0==͝>GM>IG>f\>^t>>>u=!==ܫ>/>S{>@>f>>>7>>Jg>==J<=Z>>KR>|M >)3>p>[>&=/=Q0=(^<_==&Tq=g=d>>'I>%>s=t4===>-'>;?>`> >>+>m…>=J> ?e==t=̙=ʎ>f>%>Jg>Z>KS>"#==p5<<<'Y<V>%`>3ټ>Dn>G=>8>=?==(^==^t=D=O>>2b>~'>v>=̘={v>=E=/=c==~=,=<= > =5=/=qp<<^>!7>']>GM=ܫ=D=;D<*,s>Sx>[>@j>~'=Ϩ>=w= ѳ<5Q=c==Ϩ>>>^>V=J=0;:C9g9g:tİ>\i>>>z3>8qD=yn== 5<_==n>^>4>G=>7>^=)p>~2>>#>1>WOw>{y==&Tq<*==̘>)p>`~>u[>gs>1=t=0;J:C9g9g:D< =)"> >KB>>>Zv>=a=<ѳ=g=0>0>k^>66>u >@=5=K<:g9g9g:g;#D>Zv>> >\>;D==x >Sx>k>^2>*=*=;?9g9g9g:t<;D>J {>XT>>>=/='Y;!:D;?=!:K=d>&>->!7== <ѳ:D9g9g:D;i/=?= E=[db >-'> ===R<_;+>~'>%>&Tq>~'=T==/=| =YY=-y =,s=zG=y =y-=?==;D<<#D<#D<=g=XT=>f>q$>*> v_>q==H<=(=> =>)d!>HBT>bM>gs>R5Q>(5>\=n==t===*>k>d> I===(^<ѳ> 5>.<>'I>d=5Q=%?=&Tq=h_=yN>>DU>hg>,>>rZ>C>:=a====>k>q$>+>$̙> )=_=K>!7>/> I=:==h_==>)p>Pl*>nE">>>k5r>>OW>w=:=/== E=i>>)d!>7l >,2>d==C<Q>">Y=d=n=d=| == >(>J {>^>ga>\>@j>==#=x===> >q$>)d!>/>== :ٛ>2ԁ>@>>>*>=̘==J {=?/=p5==n=?>4> TP==n=qp<<4>İ>>==J=`~=x>&>==,= :<;;n< {=a=>{=…==(^<g:g9g9g:g;g;!<}<<*<^>->4\Y>==x='Y<=;;=R=>d>k>s=t=T<;3m9g9g9g:D;n<;D<ѳ>1 Z>::k>=_=^= x>&Tq> %=_H==<;t!9g9g9g:g:D;<>k>!7>w=Ɉ=f<t;n:D:<=o>>x>Y=5Q=h_<:9g9g9g:g:D;t!;;dt:D:g9g9g:g<==0=>Q=d=nv=R;?:g9g:g;i=)d!==Σ=n= <ܫ;?:C9g9g9g9g:g:g:g:C9g9g:g<'Y=(^=^==~G=R= :<(:g9g9g9g:C;?< f=t=cv>>İ>ٛ>-'==?=T=[db=J {=(^= :=(^=x =D=51=2=/=;J9g9g;g;?<=22==~h=E=ȃ= %=3m<ѳ;J>>0>4>)p>d=Ow==,=w=\i=L=qp==ʎ==:=n=Kw>+4>>>@~>->=J<===| =o=rܫ==*=܊==yN==a<:;3m">*>8qD>2ԁ> v_>{===s=^t=WOw=qp=x==Ϩ>=܊==̙=Q0<t;;J/>>%O6>>v>==R=T?=,s= :==C=| ====5=w= :<;J</> ==s=T=*i\= => ==̘=i;=B=d>$̙>&">~'=Z==x =?/=< =g=&Tq=h_=x= %=^=VJ<<:9g9g:g:D;iٛ>/B3>0> 5>g=dB=D=_yN=3m== :=C=T==n=?=m= ;!:g:g;=;i<}`>,2>,2>ٛ=m==x=h_=1== :=K=,=M=̙=5=T= 5<ѳ;;<<}<==C=u[=g=u[=/">ٛ>> =i=n=g=DU= <_=g=,s=qp=*z== =_yN=<{=~=*=={=C=R<> I> =a==h_=g<;D;?O>0>?C>->'=Ow===t<+n>WOw>gs>W)>,o>=y =Q0< <_(=(^={=̙==T==+n<;g:C9g:g:g;?2Q>`=:>rZ>a&>::k>^=n=| =,s= :=Q0=(=̹=yN==== :<=;:;g;m(>N>\i>N>-> =ȃ==J {=*i\=T?== E=E==0=D=_yN=<=;!<'YN>->3ټ>)p>=T==~2=,s==0=qp====/=s=rܫ=* >w>f= ==g=0<*<t<5Q=(^=s===t===L=(<<=<;D^>f>ٛ> ====']>W)>n>cL>>>^=D=B<< f=I@=a=/==M=;!:g9g9g9g9g:D>=嘮=i\=]n=)d!=J {=| =>GM>a&>w>>V>Y>5=07=m=c=0==͝>>> =0=F-'>ٛ>Y=E==Z_(=R5Q={= f>.<>I>p>> E>+>]'>=?=Z_(=T=>޵>$>@j>C(.>!{=E=?/<;D:D;!;!`>%>GM=T=n=_yN=0=J {=ȃ>0>U>>L>`N>>g$>İ=Y===5=5Q>>1F>WOw>^>@>^=n=3m<d>>===?/=g=R=> 5>s>>>>)3>S)>-'==*=?=>>&>F|>Q>;>-'=ʎ=T=)d!=m=͝=/=>@Y>t!>q>rJ>Z>+=2=2====n> >>'I>>k=n=R=C=<5Q<=c=C===:=̘==3mc>*>8/>.~G>>Q=51=w=*i\=)d!=p5=?==07=m=!=͝==_yN="?==?=XT<>q==ѳ<t:g:g:D;;t<<(;i;3m:g9g9g:C;3m;J<g;n:g9g;m==rܫ=o=>^>L>> ==X=R;;#D;?> v_>/> = E=;J;?{>> = =:*{>>B> )=Ow=g>=9== :< f=c=_yN==&>k>KS>f\>cL>Es>=ȃ=3m<= = =?=E=E==0;!:g9g9g9g9g;dt=c=>+>>> =ʎ=| =K=w=/=:>!7>m…>>+>Tq>>S)> ===/=u[=j>Q>>%O6>`==S:/>Dn>N f>22> I=OW=O==>v>>V>>@>>a>>3>,2===*=m>']>V>vG>y>S)> =t!<;?:t;?>i>u(o>^2>)p=?=y =/=_>2b>u[>v>)? K? >/>̙>Q0=n==>~'>KR>+>>q$>>T?=!=^t< f<;DAV>td>rJ>lJ>::k>޵===>'>z>$:>G??1>lK>>\i> ==d=~> %>V>>3>y>8>u[>M=2=VJ<= =-y ==J {=:>+-H>^t>nE">[>-y ==?=VJ<=p5=[>]'>^>>>[>A >>L> =~=Z>2b>C(.>|>>D>>nq>=%==\i=C='Y=(^=d>f>+4>?/>0>-'=?={=R= :=>)p>I>>u9>u>>nq>'I=Z=@=*>T>k>O%>z3>/>u[>C(.>^=ʎ=t=t!=!:K=c==I@=~G=yn>Y> = ==<(<*=rܫ=!>0>h%>>xyn>U>%== =:*==Y=?>O>)>6>+>i;=a=̙=w=J {>M>B>=d==3m< ==M+===yN===n=x=?/= =<>i;>T=y <ܫ::g:g:D;< =@>&">B">G~h>/B3>*z=T<:D;3m;J<}<<_L>F7>eW`>i>Q>=~G<t;< =<<m=$I=M+=]n=3m<*;n9g9g:t;!>I,>gs>l:>T?>f=o<< = )>.<>KS>P*>4>/=u[{>~'>GM>%?=<;n;g;J~'>-7>22>#D>\=<_,>7>~'>޵= =Q0= ѳ=%O6=x =y >>7*>qp>>>u[>?C>T=qp==p5=/=yn>w>>V==;i:D:g9g:D<#D=T?=~>>@j>F7>,2>==T==2=d>;>Q>2>Эy>qe>>>*=@=/= E>T>%>M+>dt>_>22=9=0<;:t< =<*=d>^>Q0>| >g>l>2ԁ====:>L>y>>8 ?;?>>>cL>=Ɉ=!> >^t>t>Z>>>Y=O=Q0'Y>u[>>>O>a&> :=:=:k=a>-> >-? ?1?1uY>>=>>>OW> >>ê>>>N>7==C<=M+=a=Y>+4>~2>>f>>q>%=yN==Ϩ>>->C>L?' ?2b7?2b7?%,>>>(>>7>AV>{y>d>FH>uY> {>̙>]u= =5=a=={=D>>e>x>l>>`~>k=%=:*=#>>>R??*y?*? >">>#D>:*>d>/>x>,>ê>+>> >YY> ==s==rܫ=rܫ=5Q>+n>`=:>rZ>a&>6%>v>=n=C=Z_(=>S)>7>>!>${>,">W>N>d=t4=>~'>DU>>{>>>|>2Q==Y=t=^t=: ='Y=dt=T>>'I>!:K> )=~h=_yN<ܫ==>>]n>m>>KB>4>M>-'==/=D=*>d>7l >ba>u(o>cL>4> =ʎ==| <5<<<=h_=X=t===u[=g<<*=: => >*( >@~>7>k>T=51=| =,s=C=d=y-=:> >u>d===qp=*=c;t!;3m;<;DB>3>>OW>'I=m=x < =:D:g:t;J<>T?>u[>}RF>gs>0Gn=E<5;t!;<'Y< f=(^=j=| =VJ<=,;?9g9g;<==!:K=g=̹>v->TP>m> >U>=-y ;i<<=)d!== Z==y =w<*:D9g9g:D{>@>z>>>>WOw>{y=-y <(%>^t>>>q!>9v=!7>C(.>Jg>1L>޵=e;i:D;-'>.<>;?>*i\>v>=><>B>*z=OW=UE<==Q0= :=?>.~G>r\>>nv>>L> =R=3m=:*=Σ>/>>>=T=^t<ѳ;m:D:g;dt)p>P*>W)>;>w=/=| =| == >2ԁ>#>>>r>ǟ>u>>=9==ʎ> TP>51>dR%>0>\>W>=O=gas>e>:*>>>HBT>{y==n=@>>xyn>?)?*?+?H>Ԣ>\>'=i>޵>->t>|>d>l>Tq>Y>a==R<= :=Z_(=J<>>>>f>>g>u[>'I=yN=51=yN>+4><>臸?+Ѝ?5Q@?5?-V>>>>'I>޵>7>L>>>`n>>>]>^t=d== 5=x =R=9>C(.>>ݏ>>L>g>51=?= Z=d>.>>>?.ML?6?7;?/B3>8 >F>6%>>>P*>է>>0>lK>>l>@>s=?=g===>)p>z3>a>L>S >u(o>+n==^= Z>>8>ۅ ??0?0_?x>ض>t>-> >>;?>>>`n>>><>x>=5Q====^=yn>@Y>u(o>|>u >F|>d==M+=rܫ=m>`=:>>,C??> >>_>==>>W)>S >Gn>>&> >L> = {=:K=x =]n=;D={=?> >3>+4>i;=%=h_=g= =?>&>nE">><>2>u>a&>ٛ=t== =?>a>L>|M >{y>rJ>N>7=d=%`=,= <<< {=Q0=2=i===rܫ=g<< f=,s=/>d>951>Rv>KS>+n>v>==T=-y =C=t=̘>{>M>'I>>==w= :=;;;t!;?<ѳ==h_=p5=1<*<==07=5<_;g:g9g:g;?q>={<(<< {=R5Q=y =T=07=O=o=3m;i9g:g<'Y==;D=C=t >S)>>>P|>>u(o>q$=| < =<;D<ܫ=s==p>{=t4==t!<}9g9g;3ټ>u[>>>>WOw>{y=(^;;!<=R5Q=2==~==dB=m…<}9g9g:g;i{>6f>^t>g$>P*>M=k><=O=<9g9g:g;i<=0=f=^t=t>!{>İ=07=x +>/===!:Kw>KR>}RF>>ui>=̹=[=w=*i\=x =51=T>w>-'> =˓S=_yN<;J:t:g;<'Y=A=:>ٛ>?C>C>*>=s=;D='Y=_yN=i\>>i>>΂\>)>><>0=5Q=s=/=m>'I>T?>q>q!>L>w=M= :<=;i<ѳ=,=*>-'>W)>66>>td>::k= =t==M=Z>M>Y>ܫ?G?#4m?a>">s> =s=07> 5>a&> >>]>>u[>B=O6=*0> >a>>m>i>=y-==>O>Q>Эy? f ?2b7?2?)>8>c>=>/>9>><>W?>e>=>>Y<==*z=&Tq=p5=g=J<>9>E>>A>W>w2>)p=d==>u>o>?'?3gr?4 ?+~>P>7>&=!> >;>)3>qD>ض>>F>d>zG>nv=={==O=/>!:K>oJ]>w>W>t>g$>=n=p5=d> >{>ǟ? TP?+Ѝ?,%?S >;p>E>/=07=>%>z3>M>W?>c>>>s>==d===:*=嘮>0 >f\>u[>g$>951>===: =T>G=>f>>>>d>>V>P*>R=ʎ=%> >C>)3>>>M><>DU>%?=/=:*=]n=P*=0=XT=*>-'>%>k>g==(^< )>Y>m>I>`->>T?>O=Y=:*=ѳ=ʎ><>@Y>qp>aS>x>I@>d=s==]n<ܫ{>)d!>AV>?> ==Y==̹<*==rܫ=*=> :>&>q$>=*=K<ܫ= =t$̙>G~h>Pl*>: >^= %<}:g:g:g<;D==I@=XT='Y<:D9g9g:g%>g >q>Q>~W>H=m=&Tq;t!;3m<==x =n=51=d!=p5<:g9g:tF|>+>+>>>n>`=x ;J;i<=R5Q==9=[=嘮=*=M+<9g9g;gKR>H>C>k>2b>rZ>f={;?;!R>Q=*=,<t:C9g:D-y >qp>o>>/>V>v>=)d!;g;<ѳ=C==魚>T=i=ȃ={<:g9g;g0 >Z>dt>M>Q={> I=?=a<9g9g:g;m I>5 E>KS>;D>O==<*==u[=̙=ʎ=E=n=?e=<ѳ;?:D9g;g;<ܫ==!>N>GM>=~=VJ<<>r>f>]>>`><=a=C=| =*>>q$>2Q>2Q>=J<=T=c(>R>[db>@j>i;==J {=== :> I>n> >/>J]>>>;=ʎ=| =O6=_H>)p>f\>Q>>\>A===<t<==s>d>Q0>}RF>I>qp>9=~=:*=0=Q0=>-y >V>M??6V> >>a&= =Y=T> >M>z2>R>>Y>>/B3=E=f= x=0=Q0=n>N>Z>I>Q>~W>H> =t=,s=Z_(=E>A> >e?C?3?F>>i=yn=x=/> >V>>>L>>b>O>>=d=?/=T?=a=>{>@>o>}RF>k5r>8/==<=t=n>4>+>> ?b>޵b>̙>N=嘮==̙=[>>>j>M>X>7>>H>V= %=S:=K=Q0=Q0=i\>>2ԁ>Dn>6>=OW='Y<;D<===>-'>q>̙>>L>>z3>q$= E=T?=qp=Y><>\>o>>">nE">%==g=: ==N=g=g=T=Ѳ=Z=…==K<ѳ;;?=c=_>!{>`>g>|>`>$̙==[dbM>D>[>Q>)d!=== 5=<}>İ>~'>Q==T?<;<(=,==5Q> =>:>"= =x=, >%>,2>==_yN<:g9g9g;i TP>B>i>r>Z>&=ȃ<:D:g;g<=C=ѳ=:K=ѳ=?/%>gs>H>I>T>K>=&Tq;#D;g<;D= :===T==/= 5;9g9g;<=3m=h_=f=-y <;=:g:D==>'I>k^>o>>|>P*>=(^:t;dt'>N>u[>\>i>1L=E< {:g:D<R= x=d=ʎ=9=J<=y =DUs>7l >@>*=m=t!;9g9g;g޵>2>KS>::k> =^>-'>V=/=N f*z>Q>>V>>C(.=a=;D>%>1L> >T= =\i<_(<;D<c>->7>#D===R<'Y<=0=Ɉ>+4>?e>d>> >oJ]> ?e=XT<==:*=>+>fL>z3>gs>2ԁ>V=:K='Y<>7X>C(.>.~G> ==̙=<(A>XD>'>L>>u ><=R5Q<}=R=%?=?>>>}>>g>T?>=_=C<_<_= =3m=/>>!{>-> 5=G=x<;3m;=3m=Ow>4>4>̙>>S >T=Z=1-y >m…>>y>M>-'=?=;D<_({=J]==,s<'Y:g:g<=̙>-'>S:>~W>66>]u>%`=~d>@Y>XO>Pl*>*=~=x=R^>'I>)d!>i;=͝=K>!7>>==%O6 >'I>->M==^t<9g9g:g;i<*=+n=L=+n<;n9g9g:D']>L>T?>>>d=*( >Pl*>Y>AV>-'=<;D:g:g;dt<t=DU=t==D=qp>1F>=J>']=G=lJ;g9g9g:D<;D== =s=x=VJ<<:9g:g;dt<=%= = =5=,;m:D:t;<#D<=[db==:K==h_=N<=;m;J/>/>=J<=*i\;i:D:t;<=T?=n=[==O=n=^t<ܫ4>-y >>>$̙==C;J:g:g;3m<==t4>x>~'>g==~2=gV> >(>-'=ʎ=*i\;:g:C:g<==>>B>f=s=qp>= =a< f;#D:g9g:g<=x=嘮> > ==嘮=?=!:K<'Y;:t;g;n;=;g;t!;;?;3m:C9g9g;<m=w=#=s== :<g:g9g9g:g<=qp==t==m=R5Q=i=<(:g9g9g9g;#D==C;i9g9g9g:g;?<t<_< f> >==< f;;#D;n</<'Y;:g9g9g:g;<ѳ=0===={=c-'>?C>XT>M> 5==*< =:;t!<+n v_>S:>n>a&>.~G=a=)d!;?:g:t<;D>@>Y<>N> v_=ȃ=g;g9g:D<'Y>']>f==<ѳ:g9g:g;!<,>i;>i;>=:=<*;#D:C:g;dt^>0>C>>>"#>*z=J=3m<:D:g;= =R=?=== 5;?9g9g9g:D޵=~=:=Tq=S:<_<=T=嘮>&Tq>T?>hg>\>9>=E=t!====_yN=g==,=?>)">W>l:>^t>;?>==T<_<;?<=`~==ȃ==VJ<<'Y9g9g9g:g<;D=M+== =Z==s=s=C<*< f=M+=>2b>::k>IG>>OW>s>{==p5<_<'Y<(<=3m==t=x =R;dt9g9g9g;=== Z=D=2=a=c9=c<=<\i<=qp=͝>v>>d>v>=07=U=d=,s<;i;?<'Y<==<*<g:g9g9g:C<==I@=YY=I@=(^= <GM>)d!> v_===;n:g;3m;i;!;:D9g9g:g;i===yN==5=s=T=<951>x>O>k>S)> ==x <}:t; >M>GM>޵=Y=a=R== >%O6>w>>,>i\>)3>5 E=%<;g;!<=<<;g9g9g:D<;D===a>s>%>"#>d=d=*z=3m=J {=E>7>o>~G>>qD>>J= { I>>>R==m=;D=^t=Σ>->>̙>>Ѝ>ѳ>951= Z-'>Q0>/>>>^>O=p5;?:D;?Q>>OW>M\z>@Y>=U=t;:g;#D>w>f=;=a=;:C:g;i<='Y=L=A= <};:g9g9g;3m )>#^>4>5 E>%> TP==-y <g:D;?=g= ==?==&Tq;!9g9g:C;t!<}=;D=>>> >=d==p5='Y=_yN=J>d>C>w>?e>>i>::k> ==<*;m/>^>T=2=;3m9g9g:t >G=>T?>@>`===K=:*=E">8/>E>I>>w>m0>l:>']==_yNi;>6l>HBT>2ԁ>v>=0>bM>t#4>]u>-[>g=m==n>{y>WOw>f>>/>c>>R>?C>4=='Y=N f=>.<>fL>y>cL>%=-y >`=:>qp>\>->==x=n>/>Y<>7>=>g>z>d>H>A>^=2=^t=T= >6%>nE">{>m6>+4=ʎ<:g:g:g;===ʎ>>@Y>O>>@~>M=5==T=R=>;?>> >ȤJ>a>\9>nq>0 >/==_yN=w= >q$>Jg>\>C>d=/<ѳ:g9g9g:g<t=a=p>s>>-'= =T==?/=-y =d>>Sx>:*>l>>f>4>2b=yN=i;=*i\=-y =t=>Y>-'>==;n9g9g9g;g=(=c=Y=ȃ=/==w=4<m<=R===>!7>.>'Y>-'>{=d==C<*<==f===]n=<'Y:D9g9g;<===<=g=g< I>d>Q=*=*i\;J:D:g;g<=3m=R==T= ;J:D:g9g9g:g;dt<(<<<>0>7l >$J==m<(:g:g;n=c==a===?=g;9g9g9g:g;3m< =<V>)d!>F|>L>3W> TP=Y< =9g:C;i=C=ʎ> >>d==[db;i9g9g9g9g:D;<R >;>@Y>']==a;g9g9g;=0= {> >&>-'=_=t!<9g9g9g9g:g:D;n>==s>T==3m;9g9g9g:g;D<ѳ<m= :==<*<%>_>~2>p>9=07=]n<:C:D;<;D v_>1L>.<>İ=嘮=t=R5Q=I@= f>.~G>U>=>L>> >Dn=n< f:D;?<==`>D>]n>Z>@~>-'=͝==>i;>k^><>˓>5>t>>> )=;?$̙>UP>n>k>N>q$=t=n=/>!:K>g>zt>?]>n>>m>GM=3m;!<=0=T===x =t&>H>a&>_7>AV><=0=:K=>`>z>>M> >臸>>`>>=;?<=1====Q0<_<:9g9g:g< =!7>::k>5>%`=…==w=>{>Q0>b>>̘>j>%`>U=:<;\>Q=ӽ)==3m=%O6={= f>as>[>4>>>^t>==`>3ټ>A>4>GM==T?<:g:g;!=g=]n= =,=T?=g<;D:D9g9g;dt Q>^><==OW=K{> >w> =%=x <;g:g;x>)d!>951>::k>)p>^==I@>->4\Y>(>d==~G==2=>&">WOw>>>z2>| >O>B==!:K<=0=>f> :>8>c=%=J {;J:g:g<=c=>&>WOw>I>d>\>S:>&=:==*>ٛ>cψ>%`>>g>D> >O>UP>'==qp=D> >>OW>k^>|M >ga>+=Ϩ>=t;;3m8qD>Z>>r>Y>>@>{=~=yn>;>l>?#4m?2?.Q?v>e>4>::k>޵=n=Z>;>I>,>2>g>"> v_=/<<<=3m=*>H>+>>@>>>V>d=E> >P*>i\?Z?56?C?=f?*H>>ٛ>V>=Z>~'>aBu>8>]>z>̘>>S{= =3m<@Y>S > >-i>v>2b>P*>w=;> >KS>[? ?6F(?C(.?=j?)k>>>[db>>>L>j>#>>D>[3>>_= =^t<ѳ;J<t=̙>q$>x>>5>f>{>1L>==嘮>,2>t>a?)?2ԁ?.]?;q>>` >J>=5>d>P*>>>(>ŵA>>է>@=J<=0<:D;=J {=O>3ټ>k5r>|M >k^>=J>=̘==#>{>c9>R>Y>>>>>">]'>'I>{=ȃ=&>>W>R>-'>>R5Q> =x>/>-'=Z=?==C=*i\= :>Y>Y<>j>W>>u(o>Es>!{>/==== {>4>q$>(>==<ܫ;t!9g9g9g:g<ѳ=<~=g==x =R5Q=<~=!:K<ܫ>&>#r>~'>==̹=d=_yN=P*=qp=====F<ܫ<;D;g9g:C9g:g;{=07=̹=g=)d!==/=-y =!:K=c<>'>->8==D=)d!<=c='Y=Q0=T=:*=T=4(>AV>k5r>u >`>.<==_yN6%>v->>>d>`~>=^ I>*><~>-> =nv(>P*>>5>Y>|>u[>!:K=>P*>g$>\i>, =ӽ) O>F|>f>L>̙>>nE">İ=*z;!<;D=3m=0> >V>p>g$>8/=L=g:D9g9g9g:g;g<#D >Z>f>.n>|M >>== :;g;?==> )>8qD>T?>KS> v_=^>->::k>"?=07=h_{>~'>=t=K;i9g9g9g;gY>&>d=yN===;9g9g9g:g:t;3m:D9g9g:g >>~'>T=OW=T=<~=(^=*>w>NR>>;>'>dR%>^=T<;D9g9g;<=< f<GM>Dn>]u>Z>@Y>=E==> >W>̙>Ѳ>/>z>d>o=07Q>@Y>u >H>P\>nE">;?> =Ϩ>=t>/>>U??~?Z>X>f>"#=B;?<==: =x=?=a=VJ<<;t!9g9g9g<>S)>5>E>w>>KR>=a=2>F7>q$>R%?~? ? :>4+> >7=x k>IG>>>x>w2>@Y> =͝=?>?/>V>?{y?? >9>>*=f$̙>Z>u(o>p>P*>V=0=M=OW>>>>&>z>R%>>66> )=)d!<<ѳ=)d!=====g$=(Q>.~G>+n>i;=ʎ=qp=0==>>>>̙>>3>>951=ȃ<*;n;<=Q0=x=D=M=x =%O6<t;3m9g:D;g<==I@===̘== %=: <>5a>]n>m…>_>8/>=x<>ٛ>%>!:K>==:*<;C:g;3m >>%>(5>8>*z= Z= :;J:D;!='Y=nv===x=-y >>>>v>== ===>ٛ>;>Z>nq>nE">Y܊>4\Y>:*== R> ==n=N;i:D:D<ѳ=4=>>U>>>|>Y>#r==ȃ=> v_>Z>>>ǟ>i}>>Z>K>^= E==J> >.~G>T?>_>I>L=n=&Tq<'Y;?= => =>W)>>u>ȤJ>>f>h%>f=T>d>N>a>z?"?2b7?/$? >7>>L>-'=t4>^>DU>H>>>>g>']==)d!<*=I@=>%`>k>)t>8>S>lK>s>(>@Y>Y>!:K>z3>s?+-H?E?SJ?NW?<~? F>qD>,>?T> 5>?C>K!>>x>>6>Y>66>~'=o=?/=XT=?>">>K>RF? T?>F>>NR>>-y >O>?9z?YI?j(?g0?J}?,o> >i;>WOw>::k>a&>}>ٻ? ?*?>>>>==T=7X=>B>)3>,"> ?>8 >R><>Ci}>-'>*>>J]?:J?YF>>[>?C>h>>ߙ?ۅ?#Y?;>Z>>L=yn=R<=: =Z>e>>>,C>p>>| >(>޵>a>q!>?-?E`N>/>IG>,2>R5Q>w>>? ?v>c>W>4 =;=VJ<<<=>8> >ݏ>Q>>k>=J> ?e=Эy=07>3ټ>C>澑?*i\?3F?/1?4>ŵA>>\(O>)d!>>%>e>M>C>>!>>_>Y=M<:g:D<=>%`>Py>dt>T?>&==OW===i>KR>XD>>FH>Э>Y>H>S)>'> =%=>>M>x>q>y>F|>w== ѳ;D9g9g:D<ܫ=%?=Ɉ=yN==5=,=WOw==t=^=!>.<>\>s>n>R>/B3>u>=J<=OW=OW=:=><>d>f=:==&Tq-'>#D>%>>= =Y=o=̙=D==n=D==f=3m=cٛ>2>7X>&> =5Q=?==5====5=T=,s<5Q<t<=>KS>qp>z3>gs>7>=n===n=y-=&=07=i=m=\i/>KR>o>>>>~W>.<=d=v== Z=魚>>*>4\Y>%==x <<ѳ'I> >>>΂\>3>>[>޵=x =a= E> ?e><~>pO>g>v>C(.=Z=?/>t> >>x>F>y >s_H>^=T=N f=J>u>`>Y>><>w> =| ;J;3m:C:D<<_=DU= = %=5==T=N f=I@=x=!>8qD>>>l>t>>>k^>=p5=C=51>GM>i>S >U>>g>-[=ѳ;m:g9g9g:D<<_(=7X=t!==={=Z_(=O%=T= f>&>e>q$>>1]>`N><>@j=Ѳ=*i\= 5=%`>*z>L>q>S >z2>l>=a;3m9g9g9g:g;n<=c=?/=^t=]n=K=7X=: ==ҷ>L>a>>t>j>UE>=<*< f=VJ<=/>d>D>ba>YY>*=ʎM>)>=T==<< =>8>-'=t===;9g9g:g;;t;n:g9g9g:D<;D=C=̘>d> >q$> )=͝=t=u[=rܫ=>2b>Y>>>:>gs>c=x <'Y9g9g;#D<== >V>p>nq>Q>!7=Z=n=>i;>ba>n>9F>P>X>Ê>t#4=嘮 ?e>T?>>2b>>g>P*>=:= >::k>W>>? ` ?!? A>>>#r=;D;n<}=K=/=51= == 5<'Y:g9g:g<}=!:K=>L>m…>nv>P|>k>z2>d> => >Rv>>g?`?'9?Ȥ>8 >><~=,~'>gs>^>f>>)3>Z>a= >T>Jg>ݏ>/??|=?XD>>>0=AV>{>)3>>q>1F==O6=>%>o>Y>>P>J]>s>>2b=_yN<ѳ<t=(^=d==/= Z=ѳ=J {<;3m:g;g<'Y<=(^=> I>::k>T?>N>+n=d== 5={=>IG>>[>?>]>>E=a=t<;D;i{==U=a<<ѳ=#D=2>>@Y>k^>{G>n>Es>'=n= ѳ;t:D;<=lJ=x===C<;dt9g:g:g;t > >, >)p>L=yn=?= ѳ;?:g:Dd>q$>.~G>3ټ>*>= f=T?f>?C>M+>D>*>=E=n=>v>>'>Na>td> >f>td>M+>M=*=p5=={=ʎ>>>> = f=a<<R;?=*==!>;?>">>R>r>>S)>B=>{y>1>ui>>΂\>…>>>KB>o >)p==*=>>N>x>+>r\>7X>T=O= :#r>|>>N1>E">M>9%>E>F>>!7>k^>R?,?3h?B?A?1 Z>!>i\>u[>8>*>.~G>l>>U>>ɩ>U>WOw> ==n=u[==>@>q$>D? ?e?>><>qp>*>;?>>R%?51?V3?j?hg?N f?1>X>C>i>IG>gs>|>א? V? %?~>A.>>C(.>Q=2==>HBT>2>>? %?(?q$>>D>0>3ټ>HBT>? ?F?m/??+?f;??d?N>>>dt>f>>m?)?/?,t?h>=>u[>=*==5Q>4 > >07??#4m?e>I>ټ>rܫ>+4>DU>??F?m@??}ď?e6?=!?b>7>>f>>??+9?1Ϩ>>\> 5=:=XT=>^>>L>n?H>hw>=>ٛ>L>>.<>d>?8?Wp?i?f\?I?.]>>>k^>P*>v->g>臸?4?*?$?{>>l:>-'= =̹>L>j>̹5>>q$>g$>k>T>^>Z>Q? D?5?B֌?>R?,t>>Ѝ>|M >C(.>)p>F7>v>>>M>G>S>#>>2==R5Q;dt;t!=,=Σ>;>z3>?e>,>P*>= =/=̘>L>r\>>ٻ>d>g>>8>td>>>Q> >N>@>|M >~>̙>%`>>5a= =,<:g9g:D<m=>Q>d>*z=*=I=g=R5Q=g=E>>V>޵>m>>z3>P*>'I>"=t4= => ?e>q$>2ԁ>;>+4>i;==g<_(;;3m:g:g;=<=c=3m=3m=(^= 5=(<>7>N>N f>;?>k>+=9=Σ=̘=0=yN=?=5=a==t=^t=<;!;!;;< =<>B">]u>`>M+>']>V=͝==@=:=yN== ==t=M+=< f<;?>x>m>u>>bM> =~=51===><>>^=ܫ==< {!:K>w>$>C>=>qD>+>XO> ===/=>d>/>W)>fL>S{>q$= E=<<=;i;!<=L== E===2==C=*= =>KS>>,">v> >/>>k>!:K=~==07>">l:>>L>b>u[>=x <<'Y;g;<t=?/==?= f=+=?=a=YY=?/=?>w>a&>^>? ? K?>ؖ>է>.~G=ȃ=?=!><~>x>i\>Kb>> >Pl*= )>Y܊>>0??Y?F>[3>2b>)p=n=?=Z>AV>CY>>>/>k>`=:=J<<;D:g9g9g:D2Q>>#>>=>x>>m>==i;=ӽ)>)"> >r>>R>>F|= E;i9g9g9g:gC>է>>L>>8>;?==T=h_=?=yn>A>,>>` >`~>w=,s:D9g:g#D>_7>u >a&>.<=Z=='Y==C==*>x>+>"#==a;n9g9g:g;i<(<5Q<_<5Q{> =2=Y=a-'>==?=ѳ=t!={=2> >>OW>z3>>66>C(.=Z=?/;n9g9g:D7>KS>ilK>gs>I>=07=/=>>I>>n>E>@>>M=/<}9g:DM+>E>>>">L>s=嘮=O>'I>Z>>NQ?$>hw>>>= ::D<'Y=0==m==^=;D<:g9g9g9g>l:>l>>>>dt>q$=T>Q>?C>C>#?{y?? x>hW>KB>!7=qp<;D>j>>>f>t>^2>~'=E=_>7>u>:?F? ƚ?V:>ض>a> v_=F|>66>8>d>u[>7*=07==>GM>|M > >ٻ>臸>>ԁ>x><=g$^>A>]n>Xc>2==| ==?/=J<>7*> >>y >$>>::k=J<=4<ѳ<( )>R=%=h_<<(, >Y<>lJ>`>::k> ==='Y-'>s>/>i;==D=tf>>"#>*i\>#>^=%=h_<<'Y'Y>P*>a&>Z>=>===2=>>C(.>gs>>">oJ]>J {>=yN=O=T?=*z==~>w>d>==rܫ=<\>Dn>Z>3>>s>XD>f8>q$=E">+>.<>nq>f>>>07>W?>Z>u >2> =?>%?> v_>M>x> >s>9>=s=t!=M+==O>-y >>$:>j>=>>,">>WOw>>$̙>k5r>5>?2r?B?B?2>2> >">HBT>*>8/>n>>X>O>+> >`>7=5Q=n=d> d>Jg>̙>j?E??s>>>qD>>1F>?/>>> ?3?S)?j@?h?P?4l>>>y>WOw>nE">>O? }??s>?>]>Sx>d==i> )>Q>>8 ? ?+ ?%;?*z>s>>>OW>N>i?f?D?kfm??+?g3?B֌? d>@> >n>H>?66?*W?0d?.,?]>>|>']=[=n=J>: >Y>??'?8>RF>> >22>LW?>q$?k?D?k5r??}ď?f ?AN? B>>4>nE">o>a??,?2?/x? %>֋>?e>, ==:*=:K>w>)3>;p>m? u?+>ٛ<>U>XT> v_>6l>ѳ>&?5a?T ?hg?f\?KS?1 Z>L>?>t!>U>y>^>J?G?+9?(?>Y>y>k= f===>;>>>Эy>ƙ>O6>r\>&> )>>`>R??4l?A?>.?.]>p>>{>C>+n>J>>;>$?a>[>;p><>@==T;;;> >t>P\>Y܊>f=Z=:=[>'I>ui>+>Ow>>>@>v_>u[>;?>B> I>>F> >f>i\>>:*>C(.>=<:g9g:<_(=>޵>~'>^=*=*== =>>(>]'>H>S >d>@>T?>%> ==:=9=>>+>C>L>>OW>=:==<_;n;3m:D;3m<<*=0=p5=zG=f=Q0=(^==rܫ=n>>%>F|>\>[>C>!{>f=yN==*=~=yn>/> =>{= ==s=((>T?>m…>o >Y<>/B3>v>=J<=ȃ=%= =Z>T=2===x =< I>KR>I>+>>CY>n>)p=?==%=07>>7>f>V>{y=j=3m+-H>g>>>U>¥>>cψ>d=s==d>>@>k5r>y>g$>-==>U>U>j>3?v>>]> >)d!=͝=?=>0>>>>>>+=ѳ<;!:g;3m^>k5r>>??C? j>0>KB>;?=yN=~>+>R>>f>s>>A>e=<;9g:g<(=c==dB=T=;=ʎ=̙=h_=A=> )>b>,>O?S ?*? >a>8>7l ==OW>*z>Z_(>L>>R>Э>>u[=!;?>\9>)>?4>=>>)3> v_=ȃ==>@>c>>)t>X>L>]u=%*z>Y<>D>!>> >F>Rv=m=̙=^=51>w>^t>>>a>x>as=e;T?9g9g;g<=1=f=p5=T?='Y=g< f= ==07>>OW>\>)3>>K>^=/=qp=@j=p5=Tq=>,s>F|>;D>^=:*<'Y9g9g;dt<=<= =<5Q<<;i<}= 5==…>>(=?=m=h_< <t<<= :=Z_(=,=p5=R;9g9g:D;?">1F>HBT>6%>Y=:K<:g9g9g:g;i<ѳ<$̙>AV>B">'I>/=ȃ==*=̘> :>i>L>>C>oJ]>s=u[;m9g:g<'Y=R=?/=F= :<;g9g:D<(>gs>|>;q>g$>/>޵=ȃ=>+>Q0>f>ŵA>զ>@>>P*=͝<:g;m<=c9=x=TP=x ='Y<:D9g9g;D<ѳ='Y=5>KԢ>E>-'>>;q>KR>w=+=ʎ>-'>r\>>ٻ>>>>rZ>=-y ;JN f> >-'>>66>DU>==2>d>nq>R>5Q>Bu> >s>lJ>f=XT<ѳ.<>k^> >,>`>!7=y-=a=n=嘮>G=>E> >>L>>G~h=嘮=J {-y >IG>Dn>!7==H'>V>*z>>4>]n>==+n<<<3m >*>>>2ԁ>B=a=d= 5T>g=_H=ʎ==<\i;:D;m<t=c=3m=4=(<;n:g9g;;i<==&Tq==%=07=*=+==*i\<>d> =?==J {<*<}<'Y<==4=3m=<_<ٛ>@>R=>K>, > =/=^t=s=>> v_>;?>S)>Z_(>KS>+n> =n==XT=^t= :=OW==_(=j=ѳ=<~=R<==/=n=Z>2ԁ>z3>&>̙>P|>Q>Sx>d=n=E>>Jg>aS>Tq>L>^>d>m>\;>%>==…><>+n>P*>^t>H>as====x =~=*> >u[>i\> >>O>U>>AV> =>i;>KS>m>g?"?1?2?$>Bu>̙>u[>?C>">'I>P*> >>>&>>Dn> I=%==T>v>>951>>Σ>? s?V:>N1>d!>kv>>)p>|Z>'?~'?A>`?P ?Q[?Cn?+-H>Ow>>n>IG>V> >D>,?K!>hw>Эy>S >@Y> ==a>v>>;?>>X? .n??l> >1<>w2>)d!>;>>d?1 >>|>]n>r>P|>=:?:?'? f >>@>m…>%`=E"=~h=L>!:K>>?k?? B>r>M>i>%>;?>ѳ>d?2A?PK?gs?f?O%?4l>>>Y>Y<>u(o>>A.?K?*?&d?>>x> =*===:>k^>W>Bu>>>%>ď_>>F7>&>+>z3>'?Q?A?N f?L0??4? >Ϩ>>a>`~>@Y>\>b>?p?rj?6>>M>`=:>-'=n='Y=&Tq=rܫ>GM>I>i\>'>Gn>է>Zv>k> )>>P*>է>ӽ)?*?0_?/B3?q> >>h%>+>>.>u(o>)T>̘>>z>%>>)p=i=p5;!<(<}=>`>\i>vn>l>AV>=07=t>{>%O6>_>է>qD>̘>ȤJ>Q>>W)> %>T=><>1F>m…>>~>>u >, ==VJ<f>g=~= E=t==y->/>&">M>td>5>>cL>5 E>Y=Ow=J=y-=>>#>8/>>OW>-y >O=ʎ=R5Q >!7>?C>Na>KS>2>=9==Tq==%=O>%?>q==d==;D">Jg>a&>a>L>$̙===~G=*=%=L=t4=[== =g$<_<;D;i;?޵>@Y>x>>-'>H>\>=O=2=?=E= >w>a>>\=X=(^<=<'Y;!;!<t==qp==2=?=51=={= 5==4=>k>t#4>Z>j>>@>>N>޵= = E=>^>4>_>n>[>$J==c@Y>>,">?>G>>'>\>L=T==嘮>(>u[>~>$>> > v_=%?<t;:C;#D<t=;D===Ow=Ow==d=1= =k=>UE>>M???;q>{>E>(5===~>IG>nv>Gn>>l>>Xc=ʎ<;3m9g:g;?=,=,=51=:=E=n=x=3m=R=f=>M>9>9???V:>>>']=ʎ==>Sx>6V>qD>ŵA>>j>k5r=t(>c>˓S>!>>q>>><= =:K=a>;?>ѳ>n>;>>>S:=n<:g9g:DIG>>> {>u>X>C(.=T=M=,=y > >W>)3>m0>>n>=^t;m9g9g;3m0>s>+>ui>@> ==]n=+n=Q0=5=>(>@>22> ?e=v>> d=d=s=t=p5=B=rܫ=dB>^>9v>O>>>>=i\<:g9g:g;<}<5Q<_(<ѳ;:g9g9g:D;i== >'I>HBT>IG>.<> I=ʎ=M=| =>g>IG> >>>P*>*z=p5;!:g;dt>N>n>m…>P*>==/=,=y >>nq>>̙>C>u(o>=y <*;;t<=)d!=a=| =zG=M+=RGM>S{>p>n>P*>==zG=I@=>>l{>0>i>a>rZ>==>4>T?>Q0>.<===<=Z_(>{>F7>|M > >rJ>N f>(==<ѳ<'Y>as>L= =^<;J;3m<=>d>4>HBT>>OW>=:=T=Rٛ>']>> I=̘=a<q>-'>>==_==`~=3m= :=+n=Q0=h_=a=;D=>IG>ui>E>Y>Y<> 5= f=a=T=yN>GM>?C>k^>?e>>E>\i>*>==n=~==[>d>İ> =a=̙=t!=`~=dt=?=U>R>B">>O6>>Xe>>a&>=?=*>>Z>w>>1~>>>Q>q>KԢ>8>w>Y>L>F|>y>>>N f>~'=:=n===t>a>dt>>>ٻ> >h>4>0=>{y>C(.>x>Y? D?0?2?)>P>[>>G>(>)p>Q0>x>>s>~>>^t>B=i=:k=n=>~'>k>Ѝ>>lK>]>>>@~>>>^t>F>0?-V??4?BdB?4J? t>ď_>>\>4>>>u >9>J<>${>6>9%>)3>3>T==y =>Q>Sx>>a>0>>6w>H>3ټ> ѳ>ٛ>`>L>M?.,?>?A?3F?{y>j><>V>/B3>?T>~2>Q>Sl>=>J]>G>nv>=̹>V=OW=T=R=2> 5>>o>>@>>`> > =>a>N f>>X??/!?0s?;>> >rZ>2Q>ٛ>)p>ilK>>b>N1>Ow>c> >&=yN=x= := :=6=>951>Y>> >dt>+> =>^>1F>q!>f>b> >;>@>U>ui>*> =>>;>Y>f>>>>I@>Q=ѳ= 5< =<;DL>6%>1L>`==̘==i>>@j>n>>V>]>\>P*>===*=a>>;>`~>oJ]>c >8qD>g=:*=d=dB=s===̹=2>>1 Z>Fy->Q0>F7>)d!>/==T=`~=:*=OW=p>w> :>&><=J<=zG<:D9g:g;2b>#r>+n>%>i;=a=5=Z_(=C=x ==ʎ= =t=+==XTw>*>>>=>'I> )=ȃ=:*=g$=| ==T=== =ѳ=>NR>oJ]>ui>^t>0>{=y =}=g=#==07>>Q=i=AV> >f>$>]>k^>!:K=̘= =,=Tq=>İ>8>Es>2> Q=M<̹;::D<<>qp>g>ƙ>Σ>j>b>Es=d=i;=~2=>>N>|>>/>T?>޵=T?$̙> >>0>>O>S*>a&>q===>%>z3>}>>>q>-7= %>4>>M>>ۅ >]>dt>*z=a={=y->-[>>ݏ>Q>Y><>@~=m<:t9g9g:g;J= =| ===d=J {>f8>^>>>s>>F7=07==[db=n>ٛ>o>b>>>|>(= :<ѳ:g9g:gk>y> >]>V>l:>==M+==qp=>1L>m…>|>xyn>C(.=?=-y ;m9g9g:D<}=c=7X=1=R<ѳ;?;3m;=%O6= E>d>@Y>Td>AV>L==| =gw>L>2b=Ow=WOw</9g9g:D<'Y{==D=^=M+>İ>^==T<=:D:D;t!;!<}T>ٛ>k> =:==Q0%>::k>+4> = E=<(;t!;>q$> v_> =~h=T=<}<=u[=>'>;?>->=j=C<=;J;?<#D I> I= === :^>%`>=O=?=/<t<;;?>)">3ټ>*i\>c=ȃ=4f>İ>)d!>0>%O6>===D==g=T=:*=====?/=c= ==\i=| = E> >;?>fL>x>oJ]>Es>d=?==XT=E>>@>m…>d>u>TP>l>951>O=[=yN=*=db> >&>%>>%?=y-==Z_(=Q0=T= %=E>&>Y>U>XD>>r\>.<=܊=/=y >>B>z3>P|>~>a>>q$>w>;>>R>{>O>1F>a&>z3>p>C(.>d=U=={= =5=E>>^t>>k>&> >;?===Ow> 5>`>c>;>Bu>4+>>;>d>R5Q>!:K>^>(>%>\i>>|>a>zG>.=?=s=g=rܫ=*z=51>4>I>q>]>(>pO>->Q=+=O>'>gs>S >{>0>@>֋><>>F|>M> >w>*>i>>#>>f><~=yn=t=rܫ=1=C=T=%>!:K>\(O>x>p>IG>&=5=d=~>%O6>\i>Z> >OW> >>1>^t>q$>%?=_H>,>>Xc>>> >t#4>'I=:=qp=,s >8>3ټ>f>=͝==07>>C>l>>O>>}>L>=:=/=51=ӽ)> >/B3>\(O>n>d>9>{=xV>,==/==5=ʎ>/>%>@>Q>U>C(.>$==Tq=_yN=;D=u[==a><>>']>&=[=<;m;n:D;{y>>L>`>w=a=ѳ=(^<>=p=/= ='Y<<({>w> =t4==T=>'I>+4>%`>Q= =^t=< =(^=h_=t= E=51==4%?>4>^>h%>N f>8=9=='Y=g=%O6=R=d> >-'>4==J {<'Y:D9g:g;J<=c=?/=a=t!=h_=/< {<'Y;J<}=-y =T> 5>k5r>><>q>I@>R=I=?/==0=>N>@Y>S)>C(.>İ=/= ;?:g:C;g<#D<= :=VJ<={=t!=06%>U>I>>|>j#>-'==?/=R=DU=L>4 >n>{>u[>AV=G=\i4\Y>>">>*>n>-'=n=*<ܫ=C=[>@>y> >\>S:>v>=w<:D9g9g:g;g<= :=R5Q=XT=(^<;:g:<=>M>k5r>>>)3>M>޵=<_<= 5=:>+>cψ>z3>n>=J==L<;D:g9g9g9g:C;&Tq>Y>h>N>=ʎ=?/)d!>@~>0 > =?<;dt9g9g:g;/>">{=={< {;:t;nw>>w==x =>ٛ>+4>.~G> v_> ===2==Y====*==D=`~=<ѳ<ѳf> v_>-7>$̙> =OW=22<t==OW>d>/B3>Q0>l{>td>`~>::k>-'=:=Ow===OW=嘮> >N>c=T==Q0< f+>!{>1F>+4>-'=d=}= :=v=…>']>NR>qp>>)3>w>V>!7>{=*=d==O> )>%>4 >-[>=:=vGM>)">%O6>w=d=i;=a=s>>2ԁ>Zv>w>>4>zG>M+>=[=yN=*=̘=魚>-'>1F>D>=J>= =| <_ ?e>u>-'=m===| => ?e>22>W)>k5r>s_H>j#>N>!:K==s=*=/==9>^>*i\>::k>.~G>=͝=^t<<T>%>@j>N>I>4>=a= %={=t!=/==ȃ=yn>'>>d= =s=<\id>!7>']>> ==Ϩ>=T=t<_<ܫ=*=_yN===J<===a=;D<t;;i;{>\==J=t!=g<>{>:*=Z=OW=| =<ѳ;i<gv>>%O6>+4>B===<~<<(<===t4> I>Q=_=R5Q>C(.>L>.~G>\=o=I@<<<3m=22=>GM>(>8==<ܫ;i:g9g:g:t;?k>E2>NR>/>=Y=%O6<;J 5>1F>'I>=I=;!:g9g9g:g:;<\i<<=<(:9g9g9g:D= =51>w>+>1 Z>V== d> >GM=…=:*<5Q;m:C9g9g9g9g:g;g;J;;:D9g9g9g:g<ѳ=/=>4> ===*;!:D:D;<t=t!==:=yN=?= 5d>q$>!7>V> ==i= =̙=M=g=x =T=M=?=ʎ=s=*=<~=a=%==;D<=;J TP>*( >=J>@>2ԁ>&=[=n= =n=t=ѳ==/==Z=07=y-=GM>::k>J>KR>;?>`=?=:k==Tq===?==…>{==E=a=;n;3m<;D<t==Z_(= :=D=ʎ==/=a=<=Q0=J<>&>9v>F7>AV>+4>Y=͝=?==Y==TP=?=U===5=̘=i;=Ni;>)p>1F>)p>=a= %=w=_yN=Q0=L=e=:*=n=n=Σ==i\=t!=>~'> )=a==C==g<<_==;D=w=R=?e=,=\i=<<'Y<<3m>2b>~'> I=07===*z=a=)d!=)d!=Q0=| =^=a= ==̹<:D9g9g:g;i>0>1>!{> =:=o==| =T?=\i=T== Z=?===;J9g9g:D;>)">@>@j>->=~===,=m…=t!==̙=/==Ɉ=n=`~<;t!:D;J >)">>>>>)p>=E=y =d={=_yN=h_==?=OW=+==2=T=V>>*>'I>~'=T=:k==x =C=)d!=4=h_=^=o==/=={=!:K >O> I=07===_yN='Y^>>i;>Q=%==h_=t<_= =K=p5=i=3m<5Q<:g9g9g:g;Js>F7>V>Es>$̙>g=n==C=%O6=S:=====u[=R<(:g9g9g:g;g>@Y>oJ]>w>r\>F|> :=&=/=p5=WOw=R==ӽ)=Z=p=ȃ==R<(:D:g;;?<=)d!= %=Σ=~=ȃ==,s<*<=c=Tq>^>F|>w>H>}>T?>$J=O== =}=5==?> =>(=m=y-=zG=R I>;>d>u >h%>Es>*=07=o==g=/==嘮>R>(>k==?=VJ<<m<%O6>@>H>>OW>%O6>=Ɉ==rܫ=f= ==Ɉ=07==[=E=Tq=p5= :<<_=c=C=zG=^===?=p5<ܫ;?;<={=%> Q>>Q>==y-=a=\i= := =0={==̹==ȃ===J {= =Σ==F<t{>>,2>*>&== Z=[db=<_(=-y = =M=^=J {<ѳ:D9g9g:D<=t!==_H=t4=ʎ=,===;D==2>/>;>pI>f>Y>Xc>!7=嘮=i;=DU=J {===~=07=ʎ=x <;3m9g9g9g:D;i<_=ѳ=O>7>>=dB=t!=?/=qp==T>)p>z3>> >s>E>WOw>d=*==Y==>>,2>)d!> =*<_;?:g:g;!w>.~G>::k>#r==I=i=rܫ==!>F7>s>>d>Σ>>~>']=E=D=/=5>>A>g$>n>KR>^==-'><~>HBT>0 > =̹=qp=I@=m=…>J>m0>s>ۅ >ՆP>h>I>2=?=~=Σ>g>!7>T?>|M >I>l>.<=嘮=,= 5>*i\>8qD>']>= =UE==0=͝>22>>Q>H>>k>td>+=5=y-=Ϩ>=>ٛ>Dn>l>x>dt>1F>{==x =3m=0=(^=J {=:*=d> >İ>d=07== :<==̙>>WOw>>b>CY>x>F7>-'=d==/=>v>> >>>K>?C>q$=G===VJ<=(^=)d!=H={==J<=T=嘮=X=_yN<8>@Y>M+>C>,s>d=:=%`=qp={=?=0=>^>B>-'>{=Ɉ=s=a=<~{>/=m=&= Z=w=<<=%O6= == {=:====;D= <;t==?=a޵>7>>= E=;g:;<(>-7>-[>GM=:=+n< =;?>.<>->B== )>>>T=<<(<;D<=,=c= 5=*i\='Y=<ѳ;g9g9g9g9g9g9g;J<_(=K= :=y-=yN=E=i\='Y<;;!<ѳ<< f>!{>%>İ=!== )> )=?=?=,s=R=;D==>>/B3>c >~2>z3>]'>+=…=x =*=Q0=̙=E=G==:=w>->1L>=t=^=p5=I==G>3ټ>@>g>>>s>qp>k=n=:*== >>.~G>AV>::k>=T>>OW>h%>pI>U>8=:=/=s=:>>n>y>M?q?|>܊E>>N f==y-=>>A>w>(>> >.<= =R<;D;<==t>B>`>>Z>>G>=51=~G=O>%>>? Z?*H?)?Z>>u[>s=> >+4>k5r>>>Ê>Tq>>M= %=*< f=;D=DU=:K>M>k5r>t>>4>XT>-'===s>"?>>d?ʎ?,s?+Ѝ? Z>ê>66>"?>{>O>22>u[>>> >>1>@==s=UE=x =g$=>{y>Q>{> >| >I@>w==p5=>d>z3>̹>G?y?>E">y >p> >>w>)d!>a>u>>51>y>t>AV>{=̹=d=,=p5=qp=dB>>M+>^t>M+>#D=5==%O6=R5Q=yN>C(.>է>Y>ٻ> >>>Es>d=~=>-'>6>qp>>C>m>k5r>)"==i}==dt=L=J {=}=Эy>w> %>~'===J {<==8>^>KR>">m>Z>td>@>=yN=51=?= >>(>Jg>Y܊>M+>*> D=̘==g= ѳ== =0===t=J<==lJ=g<==p5=Y>>q$>)p>#D>-'=5= E=zG=*i\=C=ѳ==:>4>d> )==/=,=A= 5;?< =<}>f>!{>O==-y ;J::;<3m>::k>Xc>]n>Dn>-'=/<;;i'I>Zv>x>|Z>f\>, =ȃ<*( >]u>{G> >gs>-[=<_<>@j>_>cL>IG>2b=Y<ѳd>%>'I>=dB<;?;? > I=t4=2=-y <#D:t</==T=t=x=S:<;dt9g:D<_(=ѳ=E===E==R O>)d!>C>Jg>7*>= E= <ѳ= :===i=Ow==: <'Y:C9g9g9g;m=*i\=dB> >k>>==rܫ=*i\=T?==͝>-'>N>>ٛ>|>?e>W)>=M=Q0=a=T> >q$>$̙>u==;D<:D:g9g;dt<=>Q>6%>^t>e>G=>x=U=N==Ɉ> >S)>V>W?>>>Эy>\9>Es=[==Ow>>@>l>I>>^2>'=x 'Y>u(o>m>է>>T?>=y-=n=…>+>>ђ ?!?/1?/)?%`>{>k>L=[>w>;>|M >P|>v>>R>>=RKR>>̙>>*>66>-y =嘮=ʎ= >DU>̙>6?0_?: p?::k?1?T>>7l >d> >YY>է>>܊>>җG>n>fL=yn= =-y =*z===>R>>p><>> >>=d=J=5>F|>i\??2Q?;`N?;I?2b7?>^>J {>M>(>^t>>^>L>O>Bu>>+>M=ȃ=nv=#=M=ʎ>4\Y>p>KB>̙>> >0Gn= =/=y->.<>V>?*8a?3gr?3W?)>><>C(.>>"#>KR><>:k>܊>/>ױm>>>!:K=*==D=s=a>%?>N>V>?e>rJ>Pl*>~'=U=t!==>w>q!>Ê>T?E?->g>o>s>'I>>>)">dt>V>>>;>+>Y<>7==?=R=qp=T?=TP>{>+4>@>3ټ>GM====(^=I@=>'>y>:K> E>>>oJ]>+n>v>== >>"#>WOw> >>f>YY> v_=[=T=/= 5=< ===%=t4=n=5Q= :=<~===m=O>&>@>V>O>>0 >= =n={==51=?><>!{>->%>w=t=5=a=?/;!;?;i==^t< >{>v>==?=;J;g:D;*>KS>S{><0>c=<t;;dt;?<t=c=8=C=t<:9g:g;?<= =c< f<:g:D.~G>kv>>?e>| >DU= =(^< =<((>R>>>|>(>i>~'=h_d>V>:*>V>>>l:>B=c9g=~=Ɉ={<=9g9g;g<'Y9v>u(o>x>>g>N f==N<'Y<t= :=,==07==E"==x <=9g9g:g;g;t!;g:g9g9g;?= =/>v>>7*>Z>`~>G=>-'=<;D;dt<<=1=ѳ=?==s=/=-y ;J9g9g9g9g9g9g9g9g;t!<t=f=>*z> =L=  TP>w===&Tq<;g>)p>KR>UP>B">&=/= ѳ<=3m=?=0=:===x TP>!{>$̙>'=:=zG= :=+n=T=> >J {>{y>>>>k5r> %==rܫ=n=?>B>.<>8qD>*>=d =>Dn>n>u[>Z> =*=d==?>k>M+>>_(?$? >lK>>^b>R=U=07>8>U>g>>է>V>1 Z=J=::k>I>>>>i>=ʎ=OW=>)d!>O>;?)?4l?5?,>5>a>%>V>s>KS>D>[>ȤJ>΂\>j>>;D=j=,s<=I@=,>{>`>><>w>>o>@= =ʎ=m>DU>? s?4J?A>`?BL?6?rj> >I><>'I>j>s>>V>˴>6>>;>==T?==:K> ?e>i>f>>{><>2b>Q0>%?=n=G>KS>Gn?>[> v_>->m…>>>yn?>i>Σ>W>1L==D==o=07>LW?>m>><>̙>Q>B===:>7l >> ?0s?9?9?1>Rv> 5>%>V>V>L>>S>lK>ƙ>>3==n==:K=n>-'>b>j>2b>#>bM> =*=T=5>~'> >¥??$ZO?$j?>u9> >.~G>-'>>,o>u[>g>^>=>!>9>t>/=E"=dB==T=_yN=>>;>P*>C(.> =_H==3m=Q0=*>0>>>ƙ>U>f>@>7> TP=07= > >+4>lJ>O>i>S >td>,o=m=dB=5=,s=c<_< ={=˓S=~==E= %=I@==t={=a>!:K>Rv>l:>g$>F7>=Z==T===>>1L>B">8/>= ==XT=?/<;?;;<=0===f=*=g==t=5=g==ܫ>k>=yN= Z=p5=g>B>v>=n=,s< =:t:D;<= :=I@=J {=>@>dt>l:>V>!{=n<_;;3m;?<==̹=T==h_=;9g9g;J<_(= 5=&Tq<<;D:D:DT>C>66>>W> >ba>=h_<'Y<<=?/=/=ʎ=T=@= :=c;dt9g9g;!İ>gs>>̙>>>>.<=s<=<ѳ= :=D=d>޵> TP>=Ow=R<:g9g;?< f= := 5=g&>k^>>>i\>P|>+>1L=5^>~'>O=t4=n=R:D9g;dt<<>N>H>6V>f>>n>GM=a<( >i;>Y=E"=O6=:D9g:g;<<+n;?:D9g9g:D<5Q=>~'>Q0>u[>}>g$>-=ȃ>>=~<:g9g9g;dt<=(^=R=D==zG=;dt9g9g:gi;>0>@Y>/B3>=>2b>V=/=DU<<=*=~2=E>%O6>m…>S >%`>>]u>=s=dt=t=E>>$J>+4> >Q==<#D;#D:g;2Q>]n>eW`>I@>==_yN=Q0==Σ>%>>y->NQ?Q>ߙ>">V== =d>-'>Es>u[>>>v>-y ==C*>w>nv>>>Y<>w==a=*>^>l:>s??1\?2b7?)d!>8>m>=嘮>><~>;q>>~>r>X> >::k=ʎ=H<=3m=rܫ=O>S)>E>zS>7>>5>1L=yN=n=ӽ)>%>>n?1?<?=?4;?|>>;>/>GM>Xc>m0>U>>6>X>51>">=i\=L===>Z>b>o>F>Y>O>AV=5==:>-y >F?K?2?>OW???5 E?S ><>IG>d>V>Y>f>΂\>O>>${>h6> >.<=܊= :==5=>@Y>>>Y>L>|>2ԁ=a=I=/>!:K>m>r?+-H?4J?5a?->>>?/>w>>@>>>M>>M>zt>>.<===s==5> >T?>aS>>|>T?>N= E=L= >4>gs>d>!?s?+>˴> E>u[>q$=m=>ٛ>cL>8>u9>>>>k^>İ=Ow=Tq=| =p5=M+= =>)p>?/>1F>2b=:=u[== 5=> >v->ݏ>51>>5>x>*=[=T==>>]'>#>a>>k^>%=嘮=D=,=c=<~'>AV>]'>Z><~>=O=c=-y =6==yN>d>,s>>>2Q>=Ow=g==c;?;n;3m;#D;m^>-'>=OW=(^;?:g:g;g<= :=K=L=<;D:C9g9g9g;dt >>OW>`>h_>R5Q>q$=̹@Y>~>>u>>_>O=f;;?<t=: =?=Ѳ==5Q=?=#D;n9g9g:g>a>>eh>]>%`>">-=5R>"> D==<:g9g:D>g >2b>,>>>I>0Gn=?O>L>2b>T==;g9g:g<IG>P\>>>>m…>=t!;?< = )>s>d=yn==;g9g:t<<ѳ<=<:D9g9g<=t>>N>ui>|M >g$>.<=̘<:g:DGM>q$>(=dB=c:g9g:D>i;> =ʎ=C<ѳ<<ѳ= :=h_=:*=ѳ=p5=R<#D:g9g9g9g:g%>^t>u >b>.<=a=Q0= :=K== f=m>==OW=_yN<>)p>.~G>==zG7> >j>,">>U>(=OW=| = %=a>`>@>\>^>@~> =D=22<;?<< {=,>>DU>t#4>{m>a>'I=0=h_=&Tq=L=> v_>>?h?>1> >gs=yn=:K=>>LW?>H>P|>>6V>n>İ=2=/<= ѳ=,s=>$̙>r>><>o>WOw>(==VJ<=*z=d>N f>;??.?0W?"O>u>?e>c== >%>t#4>r>>>>F>V>T==*=K=f=>*>z3>:>>>g$> :=2=XT=>g>dR%>L?W?0W?1?%'>>t>=n=9>#D>z>>>z>>M>ui>x= Z=a=qp=x =Tq>>`~>Z>(> >T?>d=s= 5=e=Z>W)><>G?"`-?&#v?>>z>c=~=ʎ>>`~>q$>V>Σ> >I>m6>2b=51=zG=a=h_=h_=ʎ>!{>T?>e>T?>%=a=a<=R=Y>+n>Q>>D>a>s>S >A=:=s=%`=*>, >~>q$>s>̙>o>A==:K=^t=(^='Y=c===m>i;> ==:*=g>OW>>>է>\>Dn> ?e=I=<~=;D=D>Q>.~G>a&>y>oJ]>C(.> =2=M+= :<t<GM>-y >+>==/= :İ>$̙>>g=y =t<}/>@Y>D>.<>k=x<=:g9g:g!:K>^t>66>K!>td>>== 5;dt:D< ===g=/=@==/=g;g9g9g:D@j>>2b>>d>c >-'=k;i;{=~=ȃ=u[<}9g9g:t<==N=B=?/=cC>>>C>>h%>=u[;?;?<=w=͝>g>(> ?e==<_(:g9g:D)p>k5r>:*>ѳ>66>L>V=)d!:t;dt<}=M+=T=yn>v>>{==ѳ-[>T>\>Dn>=#T>=嘮=<9g9g:g;n<=Q0=g=T=C<:D9g9g9g:g;?>GM>'==^t<t!:K>g$>V>k5r>-y =*=(^<*=c=a==>/>v>==o=h_=g%?> >'I>s=:=rܫ< f<<==51>>g>~G>~>9>u >O={=R=8==>'I>Py>`=:>IG>&=d=T=g!:K>KS>W)>?C>d==*P*>+>>x>,">>)d!===M+=T>>W)>{y>S >?e>Y<>~'=?=?/<<_=c=s=a>'I>V>ba>L>=n=0 >h%>,>>>w>0>-=>g$>>5>+>w>,2=T=a==g==H=/>-'><~>Jg>6l>^==c;*z>Xc>>s>L><>>=<==>v>>Rv>Q>+>m>nq>'I=:=^t=g ?e>~'> =*=h_<:D;g=(^=5Q>)>u[>> > >@==Q0<<==M+=E>%O6>]n>w>n>Dn>=n=*<<<<}#r>C(.>DU>)d!>=<_;;<==2>!:K>3>->i;==C<}*z==n=Q0 =>w=[== :;D9g9g9g;t!<==c<*;!:g9g;dt!:K>AV>I@>0>R=O<ѳ:g9g:gd>C(.>gs>n>W>"#=n<*:D:g;n<5Q=qp==U=/=R=R;=9g9g:D<;D<_(== <;?:C9g:D<ܫ=y >i;>F|>m…>u(o>]'>'I=Ɉ<:g:g;?< =/=n==͝=?=0<(9g9g:g;J<t+4>Q0>Y>@j>=>8>(=y-=:D9g9g:g;?==t!==x=UE<;#D9g9g:C:g9g9g:g<ѳ=K=%`=n=/= ;3m9g9g:g;<t=g=g>0> =L=C<'Y;3m;D<'Y<ܫ=rܫ= Z=͝=ʎ= Z= =%O6<;?;!-'>M+>g >KR>d=,<\i;3m;m*z>>x=m=/=rܫ=g<\i >\(O>oJ]>Q>-'=RGM>0 >->2b=Y=R=GM>AV>P*>2>T=p5<#D:D:g;t!==>x>-[>+n>-'=d={<*<'Y;m<a>> =?= 5;?:g9g;g==2>%?>a>~'=2==*i\O>>{= Z=R;g9g9g9g;<==: ='Y< f;9g9g;t!>GM>=*= x;g9g9g:g;n޵=a=<t:g9g9g9g:>!{>GM==^t<'Y:g:g;3m;i<(;?:D9g9g:g;J<==f==g=J {<_<'Y;;J<=̙>{>!:K>3W>)">{=<;D:C9g:g;<#D<(;g:g9g9g9g:D<<=c=T?=T=| =K=~'>%O6>==h_;i9g9g:C;Q==o=;dt9g9g9g;g<;D<ѳ<ѳ<;D;:g9g9g9g9g:g;</ٛ>*>!{> TP=:=< ;:g:g;g><~>M>@>/=?==<'Y:D:g;m=====;?9g9g:g;i=&Tq=:K=*=t=Ow=/=T=g;J<#D=(^=ȃ>>@Y>Q>B>k=07=:K=!:Kv>>']>2>%>{y==/=(V=L=51=/=: <5Q<;dt:t;<'Y<<(</:D9g9g;3m<= :=/=<V=07==(^>C>`=:>Rv>q$=51<_;3m:g;t!;<;:D9g9g;3m޵==ȃ=| < >K>>!k>>^t> =J {;:g;3m<#DT>d><=嘮==&Tq<_=c=>ٛ>b>X>I>}>u[>`=rܫ;=9g:t<;D<<>=J<=ѳ=%O6==+n=s>>Sx>Q>>>>c9>^=?/:9g:D'I>Xc>pO>`~>, =*~'>>x==T<:g9g:g;?g><>B> =9=x<m;n:g:t =T=n==<=c=g=~> >Q0>k5r>dR%>AV>=;=t!{>%>1L>#r>/=51=?/>c >>>>>>A> )=2=c<;D<={=?>>%O6>=yN=XT<9g9g9g:<_=>~'>Es>Y>Ci}>`=t={= =]n=>3ټ>U><>¥>qD>>a&>`=0=`~>?C>Q>>>=GM>I>\>I@>= =*z==VJ<=J<>8qD>TP>l>>>>bM>=yN=m==3m=̘>`>EA>Z>C>=<\i:g9g9g:g >->@Y>.<>=ȃ=qp=R==Tq>q$>w>>=>̙>>C(.>O=̘=| = :=(^=>>%>2ԁ> v_=嘮=K;n9g9g9g9g<(=k=Ѳ> =>>/=*=^=(^2Q>l> >l:>>OW>-'=嘮=d!=VJ<<ܫ<_=Z_(==i=嘮=dB=^t<>~'> =L=U=5=n=R<\i<'Y{>`>q$>O=:=;D;C9g9g:D<=R== =E=>,o>0>k=:=R5Q;g9g9g;#D==~>޵>> =E=VJ<;J9g9g9g:g;#D;?<c>#r>%>=ʎ=:g9g:t=*=n>>a>=嘮=x T==ʎ=_yNq>=y-=I@;J9g9g9g9g;3m >1L>L>>>d=I=g;3m:C:g:t;3m;g:g9g9g9g:t )>>=[==?/===Tq>GM>`>>3>f>w>&=x ;?9g:D;?<;Dv>>+4>@j>>> =?=s=N f=w=>J>a>>[3>@>|>VJ<=ȃ>>OW>U>Pl*>0>/=n={=M>w>aBu>3>ҷ>/>z>Gn>nq=L<:g; >0>J {>Dn>'I==%`=rܫ=>R>Xc>f>~h>O>̹5>,>\=%O>#r> 5> =J=[db=3m=,=i>.<>Y>7>>,>I>)d!=d;J:g;g<}==R5Q=_yN=B=<ѳ;n:g9g:C:<<=&Tq=x ===:=s=T?==c=`~=>k>22>b>u[>eW`>2Q=?='Y;g:g:g;!T>>L>=m=Tq=;:g:g;t!<t= 5=T?=VJ<=(^<;!:g9g9g:g;?<} >İ>`>'=?==c<:D;m>^>==2=T=M+==s>{y>-y >XT>td>qp>Uǟ>+4=2=^{==s=(;9g9g:t)p>]'>n>\>, >V=s=WOw=>T>;?>@>I>C>{>>w2>-=T==(^=rܫ=O>>@j>Q0>>OW>d=Tq-'>k5r> >7>W>nq>#D=~h=x =>&>u[>,>[?}? >db>?>eW`>=;= %=n>L>a&>Y>>>[db> =t!<};g;?<=?>%>Z>>>>>::k==a=>*>m>H?)?4;?1,?>>@>1F>=ʎ>>AV>[>>3>>>0==<(;?#r>>n>qD>>Z>951=*==d>(>է>r?+9?5@?2A? 8>>`>I>7> )=i> >Jg>>;>>D>u>@Y=ȃ=N< =;3m;J=p5>w>g$><>>>m…> v_=%==D>O>g>BT? eG?'I?e>>>i>'I>V==>0 >{G>q$><>̙>>#D=<*;g:C:D= =Σ>'I>^t>s_H>`=:>.<=~=s=A=3m=n>>OW>:>zt>)>>r>ui>3ټ>w==?=> >7X>i>~>j07>-==1;?:C9g9g;!=a=5Q>(>a> )=Ѳ==I@4 >nq>>s>G>q$>q==?=c9=Z_(==O>*z> =~==-y ;!:g9g9g9g<#D= :=c9=k=;D=c=g<*<}<( =>f==%==Y=R5Q=c<m=t=A=T?=K= 5<;t:D:g9g9g9g9g;3m;J;J;;!== :=J {<*<ѳ<< >-'>R=+=m<_(!:K>F7>S{>@>=n=< =<&>W)> >>u[>A>T=T?;?;J<_=x=~>/>->#>Q=<;D;g:g9g:g;?<t= ѳ=0=C=?/=(^=</B3>qp>>u>o>Xc>=qp;;!=c=>~'>BdB>Z_(>Q0>%=ʎ+>i>)3>>+>M>@=;D;dt;J= :=y->`>KR>e>\;>0= =g:D9g9g9g:C:t;?(>>OW>g$>t#4>YY>q$=<:g;<=#>>0>KS>Ci}>f=<:g9g9g9g9g:D<g:>M> ?e== :;n9g:t,>2b>d=yN=R5Q;J9g9g9g:g;!<<_(<_<=!=dB=| =<ܫ<_=u[=d>,s>gs>">t!>7=&=0;n9g9g:g:t;n;:t:C9g:g;n< f=>*z>+>AV>?C> ==s=w=g=07>;>>Kb>h6>>>C(.=y <'Y9g:C;<t<5Q<<;D;3m9g9g;g<ѳ=C=>(>]'>u[>r>Rv>k=ǟ=#=>>x>>A.>>${>ď_>k>*z<9g;#D<t= :=?/=)d!<_(<:D9g9g9g;i<_={=yn>>OW>td>>>gs>-[=E"==J<>->o>˓S>G? u?>ǟ>2b>~'=c:D;?<_=M+={=qp=)d!2ԁ>l:>|>0>^>$̙==?=ʎ>%>4>V>?'>> {>>= ;3m;i-'>C>^>Y<>6l>=5=h_=?> =>`~>>^>א>1]>I>[=i<;g; D>>==5=*= =p5=%> >gs>>|>d>i>ٛ=sL>9>I@>@~>8=t=\iV><>Y=2=U=a<=:D9g:g >i;> ==^<_;m:g;#D<=K=,=,=R5Q<<:D9g9g:D<=,={=J=a===:= E==a=x=>Q>>0>Es>IG>;>==~2!{>Pl*>d>W)>/B3> =~h==/>/>1F>m…>l>> >>lJ>*=?=i;=XT=x=yN>>)p>1 Z> =G=x<;?:t<ѳ=*i\=y->%>>)T>>9>>C(.>==>*i\>~2>d>ܫ?}?-'>ψ>>{m>.<>V=Ѳ=Z>&Tq>c9>>w>>Y> ==g^>>>M>)>>{m>8=:>>Q>̙? ?51?D?C?1 Z>^>>cL>(>d>$J>h%>P|>,">ܪ>>>\i=2=*z=(=c=| >*z> >>>>E">ŵA> >,s=>-'>i>(.?, ?GMm?Z?U$Z?A??>>rJ>@Y>%>DU>o>9%>>?>>K>>"#=OW=C==K=G>y>>8>t4>*>V>{y>']=>d>g$>ȤJ?.B?H2?Z?U4?A_?+>̹>,>A>)d!>N f>>=>hw??R>ٻ>+>0=ʎ=K<t<_=n>N>r>>z>̘>g>i>-'=Ɉ=Z>F>Q??:?F?C?1>,>i>.~G>ٛ>8/>rJ>>0>=>>L>R>=2=c;n<=p5>i;>r\>>Y>f>}>+4=嘮==I>>I>=? O?*?>>>~>;?>>V>>H>o>M>>F>CY>C(.=07=\i~'>H>]n>KS>=;=t=?/='Y=2>%O6>rJ>>c>Ѝ>'>dt>.<>O===ʎ> ?e>/B3>Y>k5r>Y<>)p=07=p5d>2ԁ>F|>AV>(>==*==d=Y=n=%=魚==J<==3m> >Q==*=x={=rܫ=t!={=| =h_=6=x>>w=*==w=S:=c9=u[=zG=w=R5Q=c<;;;!<;J;n;g;dt<%>KS>WOw>C(.>ٛ=܊=T=;D=T?=w====n={<&">m6>>>>\>=='Y=1=T=OW=2>GM>!7>==?/<(>\>x>>>R>=>>OW=T=-y ===:>)d!>\i>s_H>f>3=O=<(;n:g:t<;D==VJ<=R==a==J {= ==g=J {=s> 5>u[>3>7>FH>>|>S:=T=C=(^=D><>P*>k>>>i>GM=a;?:D9g:g;?<='Y=rܫ==^= =Z_(===_yN=ȃ>f>p5>̙>s>Σ>>>Jg=~=;D=0=>'>Z>>`>S >w>%= ;n:C9g9g:g;?>Dn>ѳ>>>,>">"#=n=(=!:K=>{>@>|M >.n>>`>s=R5Q;3m9g9g9g;3mk>@Y>u[>I>n>/B3==K<<_=f=T>w>;>W)>N>$̙=<:g9g9g:D;!{>^>{=dB=g$<;?<'Y<=C=a=%=[=07=v>=G==qp< f;n9g9g9g:g:C9g9g:g;<==Z> >v>==d=M+=&Tq=,s=t>f>8qD>u[>{y>~>@j==;D;?9g9g:t;!^>?C>WOw>T?>2ԁ> =D=t=>V>F7> >9%>qe>7>>L=51<;D9g9g;m<=c=c<<:g9g9g9g;dt<=L=>>>u[>>>l{>1L=Z==i>%>f>H>!?V:>S>̘>> )< 9g:t<=4=rܫ=p5=0<;:g9g9g;! )>XT>{y>]>>|>H> =ʎ=J]>::k>b>֋?[u?s? > >>k==̹;3m;t==m…=i;=d=p5=v>>T?>>> > >@>T==O>0>>>G? ?a>Ӝ> >GM=J {;i< ==g=qp=t=*==M+<<:g9g:g<.<>i>V>|Z>Y܊>=̹=x =>>td>Ѝ>[3>M>֋><>nq= =;!;%>@Y>;?>=ȃ=-y , >| >>g>F>\>+4=">KR>^t>T?>->=<_;:C:D >~'>> =;=d<;:g:g<= x=M+=`~=C=<\i:9g9g:g;#D>>/>&>%?==-y <'Y;3m;?<=_yN=/= =Z_(=R>k>f>^=*=o=x ==d>>(>I@>`~>f\>V>2> =2=DU=g==̹=:K=:====d=<;;g< f=0=y >^>P*>k>-'>.n>k^>.<===:>~'>M\z>H>>İ>İ>>.n>Q0>=T==E> >(>IG>V>@Y>-'==^tT>S{>>ƙ>Ow>̹5>R>~>%=07> >DU>O>qe?8?3F?2ԁ?4>ҷ>>\(O>%>O>M>J>H>I>qD>>4>.<=a=R=B= =n>GM>Q>ʎ>X?{y>Y>)>L>N f> >ٛ>u(o>j?'?Eǟ>)3>U>4>M+>>>?K!>>̘>d>%==d==n>#r>|>? ѳ?/?>>>^t>>'I>>Bu?8?]z?p?m?Ti?4>}>F>k^>P*>n>>?s?(^? f >>>Y>R==qp=s>>W>ۅ ? ?? .n>j>g>T?>">%>>1~?:?^?p?l?SJ?3>>L>k5r>Q>u >̙>lK?ӽ?+-H?&?> >j#>w==t=;D=:>|Z>>>hw>J]>ǟ>>1L=>>lJ>7?.~G?G^?Z#?V)?B? >h6>TP>Sx><~>^t>b>?4?C?~>lK>9>R=>Q=:*+>c>Ê>Э>>>V>(=ʎ=a>22>>?,o?6?4;?>ӽ)>C>_7>+4>&>.~G>rZ>>>M>ٻ>> >f=51= :D:D<=Y>0 >t#4>k>y>Dn> =dB=?e==>KR>2b>>F>a><>)3>Q>"> =?>>'I>a&>o>N>t>g$> 5==#D;9g9g:g< f=t=[> TP==T==XT==(^=5>T>.<>\>u >q!>Sx>+n>d=Z==~=s=_>w>8>$̙>==I=<(:D:D:g9g;t!<}<= := := =<_GM>(>)d!>ٛ>R=i===D=y =51=y-====K v_>;?>@~>+>d=J<=Y===y ==?===: <GM>S:>y>g>rZ>@> ===%`=2= f=07=yn===a<<ѳ<ѳ>Rv>>>h>̙>>::k==?e=^=?=i>`>>OW>L>;>^=^<*<ѳ<3m;g;<=,s=,=#== E=/=qp= :(>>Q>>t>΂\>]>k5r>Y=t=R=@>-'>T?>R> >x>b>d=N f@Y>u>>J]>P>>~>g>=~G=a=a>+>66>q$>>Tq>>@=~G<;D;:g:g;?<=c9==~=̹=o==1=t=}=>::k>2b>ʎ>>>g>>>s==/=魚>3>>g>>>>R5Q=@<(:g9g9g:g<==T==n===3m= :=]n=n>&>w>>E>D>Ϩ>>{>\i=m=t=a=J<>!:K>u[>\9>9>ݏ>?e>;=;m9g9g:g%>>A>>k>u[>/=?=p5=w==>6%>td>H>>S:>v>= ::g9g:g d>::k>O>>?/>~'= {=t!=c==a==:>^> >&=:=Q0;dt9g9g:g;?%>Y>r\>_7>'I=Σ=;dt9g9g:t<g>3ټ>Q0>N f>->=X==:K=:>2Q>{y>Q>̹>,><>/=s<R9g9g;<=c=<_<;D:D9g9g:D<;D= :=d>8qD>u >>>l{>0==T=%>GM>u >>t>>>v>w=[/>XT>?e> >7>I>Jg> ==~h=yN>)p>)3>#>>?f>=>̘>ѳ>=3m;t!;?<=a=ѳ==,=;D/>WOw> >u>2b>;q>C=m==ȃ>#r>v>>u9>臸>B>:>H>>O=Q0</<>3>q>k>g>a&> v_=?=]n=^>>c >A>>>>>`=:==0.<>K>Dn> =Ϩ>=)d! >nE">>KB>x>u(o>%=OW= :<;D;;?GM>@>T?>Jg>'I===<:D:g<(^>'>v>=~==;!:D:D;?O>`>a>=dB=R5Q<t<#D<#D<_(=<~=a=Z_(='Y<_<=;!;dt:D<ѳ< f=1=i\>V> v_>0>.~G>as==~G=]n=x =s>/>!{>@>Z>cL>UE>22>=n=T=F=h_=D=Ɉ==_(=OW=/=%O6< f<ѳGM>^2>>>> >@j>= E=>>HBT>>3>H>>!>m>Z> v_==n=:><>'I>Es>S{><0>=Ϩ>==I@=*i\=d=T> >^t>j>>X>ǟ>>Z>1L=> >D>>̹5? ?3w?4T?&#v>ߙ>5>lJ>7*>q$>%>M>>">>]>)3>7*== E=d=2=>!:K><>χ??(?k>2>,>]'>>8>u[>??DZ?YI?X?EA?,"/>d>>gs>Es>V>{y>~>T?9>Y>Ѳ>>1F==OW== >)p>f>/?? ?>>>>nE">>+n>:*>?5Q@?[l?pO?n?Wh?8N>NQ>]>|M >\>ui>>/?!?)?$)T?;>X>h%>-'=Ѳ=t=51>>>X? .n?*?>:>>a&>~'>)p>4>?7 ?[Y?p.?m…?V{7?6v> >9>y>Z>w>Tq>??,s?)?)>V>w>=̘=S:=a=嘮>~>>${?>>>;p>>?C> >Q>nq>)t?+M?F?Y?V3?Cn?)">>>^t>A>`>&>զ? D?:?>4+><>`> =<<=p5>)p>>qD>!>>f>_>N=L>{>>>2b>?+?51?4l? f >>>h%>.<>\9>1L>v->>җG>%>=:>>:*>(5=͝=0::0>u[>:*>>N>'=%==y->d>Py>>`N>`n>>>w>Y>!{>4=T> >.~G>m…>> %>>x>-==C;!9g9g:> ==E=5={=J {==Ϩ>>>::k>fL>~>y>\(O>/B3>=07=ȃ=dB=Ϩ>>V>ٛ>.~G>7>*>(==*i\</:D:D:D;g<;D^>']>8qD>7>%> =yN=51=d!==~=*===yN=?==c^>0>KR>M>9>GM===?=o=/=̘=ӽ)= f= E=T=<<;D<'Y;!<'Y<}<=*=R5Q=u[===v=6<ܫ<=g=a=O>&>b>+>#>\>N>==:K=y =s=t>T>v>>==<_<=^>_>Q>>>[>t>Dn=yn===̘>\>%>NR>_>M+>&=Tq<<<(;dt;J<*=R5Q=i;==y-=y-=~G=m=%`< =: =@>/B3>>~>>J>ۥ>d>u[>==#=yN>L>h%>>f>>u[>M=rܫ<=;:g:D<=*i\=x=?=0=Эy=:k=:*=(^=g=\i=嘮>F|>q$>O?T?>>>j>!{=ȃ=2=yn>?C>ѳ>-H>qD>>>Q=U<ѳ;9g:g;<=m==%=*=T=d=3m==a= >@>8>z?66?>P>W?>> 5=ʎ=?>@>IG>S >L>9%>v>q$>d=a<}:g9g9g:g/>4>Y>6>T>=:>}>r\>c=:k= =>22>4>>>Xe>է>M+=<:C9g:D6l>>>>Q>?e>2ԁ=~= %==> >P*>>>>gs>=DU:D9g9g;dt<=1=a=a=<~=k>Y>o>]n>-=t4=/=[db=VJ<== =~> >6f>+n>+={;i9g9g;<ѳ<_=<_<t<;D;?;n<;D=g=rܫ==?==s==-y @>8>-y > 5==<=:g9g9g9g:D;;J;:g9g9g:g;?=g=~>2b>-7>+>-'===x =x =2>>P*>>>Q>U>=C;3m9g9g;t!>UE>r\>p>P*>M=Ow=?=D=07><~>>>V>>>: =/;?>v>?e>>o>1===>>\i>U>=>F> {>>Z=$=;;<=22=qp=m=rܫ==̹<_<:g9g9g;g<<5Q=d>=̹>x>Q>:*>nq>-=T==>T>Xc>F>j>΂\>L>8>W==*i\q$>Z>u[>qp>M+>O==t=3m=>0>f>eh><>̙>H>6l= f= 5k>8qD>2>-'== x<;D<==k>V>@Y>s_H>aS>x>K>=?=`>+n>%>w=5Q==<;D:t:g;n<ѳ==3m=?/=t<t;g9g9g9g:D;J>= =Tq=: <<=>)d!>&">-'=====a=> >8>2ԁ>@Y>3> %=~===]n=_yN===n=5=m=8= ѳ<5Q< fO>KS> >>>l:>/B3===/=2>)">]u>Q>7>>>>Dn>GM=~=yN= = >>!7>)d!>GM=ܫ=2=T=`~=[db=5=J>>G=>1>qD>,">V>̙>y=Z> v_=5Q=>*>u[>Y>;?\9?$ZO?*z> {>u>`>/>ٛ>>22>dR%>>8>]>k5r>== E=5=*=;>B>wt4>>6>>e> {>>D>V>d>W>KB> U?22?D?Eŕ?9?M+>Э>Y>_7>>>@j>pI>ݏ>Эy>s>ޔ>> >!{=Z==51=O>>>1]>m? ?>ۅ >`->V> TP>>qp>1&>>td>N f>Z>t>>?q? u>a>>N> =̘=s=>*z>66>s>I?H>RF>զ>F>Jg> )>%`>pI>??D?X4 ?X?Eޔ>KB>m…>I@>\>nv>Σ?/?C?s>?>>^t>==_yN=_yN=>Py>zS>ӽ)>>>*>+>,2>+>2b>V>P|>yn?4J?D?D?5a? >T>Q>M+>.<>C>>[>,?/>Y>֬3>V>G~h>T=%`<_(v>>v>ݏ>>>>F7>Y=:>>0>@>Ê>Ϩ?#^?!>>>>N>>>>Z>>v>a>=>Y>u[>~'=2=;;3m;J=rܫ>>S:>n>a&>4 >v>= {=51=T>'>AV>>>>,>f>|M >::k> = =͝=d>>V>w>>H>ba>ٛ==;n9g:C;t!<t=| =0>Q=G=̘==T=i= %= >-'>0>Pl*>dt>]n>@>Q==51=/=?== >~'>'I>-> >=^>!:K>->+>L==Y=N=g=d====07=O= E=qp 5>W)>zG>,>nq>@Y> =:k==M==0=?>,=m=?=<*޵>O>>>d!>>>">2=9==t=J=p>%`>C(.>T?>@>d= % v_> >w>֋>D>R>,>`~> =Y=t=ʎ>~'>]'>x>GM>>hg>d=^t2>>+>Z>>A>> >~'=:k==嘮>3ټ>4>,> >M>>B=2<:t9g9g;<*=t!= Z=ʎ== E=T= ѳ<==j>->է>΂\>#4?>6>zt>>=OW==!>@j>>7>u>1<>C>W)=ʎ<t:D9g9g:g<'Y=1=t= ==y =~2=c<<=>i;>{G>>l>V>F>R>`>===t>->>Z>>Y>8>@Y=)d!>>>w>3>">)d!=ӽ)==x=:k> =>G>{>8>>\(O> =;D;t!9g9g;<5Q=?/=k=a=0>N f>fL>T?>']=?=a=M+=I@=x =n=>>->"==i<9g9g;V>&>::k>*>%?=`>6>6l>%`=…=n=t!=C=T=07>5a>s>+>u[>?C==C;m:g;g<<=g=g<4>?C>\>[><0> =51=x =M+=a>(>Zv> >&>8>a&>-'=t<;;m ѳ>AV>`=:>^2>=J> D=?=3m==R>>Xc>` >:>>`~>~'=Tq&">B">@Y>=d=R5Q<<;D=)d!=>1F>i>}>n>@Y>޵=O<d>Y==h_<;t!:DQ>%O6>6l>-y >==g$<_<;D;g:t;<= :=VJ<=^t=1{>d> ==n=!:K+><>=*= E==`~=R5Q=R5Q=`~=f=XT=)d!=g< f<!7>IG>^t>W>4\Y> ===c=0= Z>V> >C>h%>w>j>B">ٛ=2=E=ʎ==ʎ==07=07= f=I={=C==̹=K==M=E>L>a&>8>f>+>V>?C=:=T=s>>9v>u >k>">Эy>~>L>td>;?>GM>Y> >>'I>IG>]'>M+>!:K=d=2==R=%`= E=G>8>=>&>H>`N>*>k5r>-'==>%>qp>`->?*?)? 3>զ>>qp>=̹>#r>>8/>m…>+>i\>>k>8>=dB=:K===T>@>+>>F>̘>R>z>=Ϩ>=m>;D> >??3?6%?->t4>>>M>-y >+4>Xc>>>ӽ)>+>>ui>ٛ==i\= =I=n>-[>>>ë>>̙>n>&=a>>@Y>?e>V??3w?5a?,"/>>L>|>Dn>&>*>`>|>#>2>T>>f>"#=i==;D=0=k>:*>s>s>Gn>>>EA> =>%?>0>y>M>,?L?$ZO?>ʎ>>[db>%>>>N f>8>> {> >>t#4>-'=51=_yN<']>n>> >Rv>ٛ=07=ӽ)=yn>/>T?>D><>6>΂\>>l>Y<>==yN=G>%>gs>(>>|>@>4\Y==N f<;g;;?=g=Y>7>,2>'I>d=a= Z=y =%> >+>T?>y>:*>k>ga>1F>g==t==OW>g>)d!>N>_>UP>+n=$=T?;!:D9g:D;? TP>q$>-y >2Q>)d!>'==t=T?=+n=XT=t=͝>T>d>>*z=U=;D;J9g9g:g;i<< f<5==,s=?/=0=t=g>d>~'>d=yn= =T=(^=c=?/==n=_=U=== :<:g9g9g;n<==R=(^='Y===c=c<<t2b>!7>!{>-'=O==h_=3m=J {====̙=d=T?<;:g:g:g;i<= 5=Q0=a=dt=\i=K=*i\=g<ѳ/>.~G>P*>W)>AV>===\i=Z_(=g=:K=/=5Q=5Q= =VJ<<};:D:D;m<==[db=| =R=R=T=[db=c<$>ilK>>i;>E>P*>=X=qp=^t=R=>{>>+>=*=u[<=;:D:D<;D<==̹=zG===t=zG=<ѳQ0>XD>d>>f>K!>-== =h_=t=!>3W>k^>>r\><~==(^<#D:D:C;3mw>o>>˓S>d>s>C>Es==ѳ=| =>>d>(>>XD>ui>=<ѳ:D9g:g;3m<==3m=ѳ=o=o===*i\ >nE">M>a>T>>F>F|=?=:*=,=> v_>s>>r>f> >+-H= %D>a>X>>Gn>Q>,s=*=x =rܫ=2>-'>]n>>+>'>p>L= Q>WOw>j>>>M> =5=A==̹==~>%>Y<>qT>d>/B3=:=;9g9g;3m<==: =-y =,!:K>2ԁ>'Y>v>==K{>d>q==0;J9g9g;3m^>=ʎ=YY<'Y:D:D;dt;?</d>===~2= :<ѳ<t=]n=a>>+4>!:K>{=?=g;?;dt;;!-'>==o=Q0<;J<;D=Q0=> %>-[>#r>==*޵>-'><=yN=(===J {>ٛ>x==̙=g;?v>>~'>>>=Ow=51==y ==?=/=%`=Y={=L= :<>?C>Q0>IG>'=O=ev>>']>L>u(o>>y>T?>'I> === ==Z>R> I>T=*=5=f=3m=,s=K=_yN=5=2>/>d>~>u[>N>=?=)d!=m=Z>)d!>\i>)3>>l>>E>a&>+n>i;>>{> ?e>f>?C>S:>F|> =E"=D=qp=J {=J {=Z_(==>7l >u[>D>K!>\>=n=| =>w>C(.>\>7>>֬3>r>>Q>?C>V><>R>x>>>qp>>>Y<>=@=T=N f=(^=(^=x =:>)d!>kv>+>~>Pl*>~'=ʎ=/=ȃ>>L> >̙>#>[3>L>>w2>2>s>R>{>>L>">>(>p>%O6=*=u[=*i\<_<==8>w>C(.>`~>WOw>/> ?e==y =*>>C>u(o>>><>>k>Dn>i;= =t=L>^>@Y>u(o>> >^t>GM=X=0-'>)d!>%>O= ===> >0>V>r\>">\>a&>/B3>T===?=51=p>>IG>^b>V>+4=:=w<<(;3m;?<<=a=n=?=…= f=5=| =T=o=07>>-><0>;>)d!>d=%=R=?/= :=;D= ==2>~'>q$>x=:=x< f:t:g:g;<;D< I>"> )=!==\i=R<==^t=<-'>>(==:K=N f<<=g=+n=m…===i;=rܫ=g;?:g9g9g;3m<= =0=?/=?/=0= :<ܫ<};?;<'Y<_=h_=Y>8>AV>L>4>O=== 5<==M+=s=嘮= ==?=;!:D:g:D<<>N f> >q>pO>1L=!=t=22===>{>'I>;?>,o>=%`<_;?:g:g;3mq$>q>S >\9>)3>P*>:*=?=3m= ==̹=ʎ>!7>V>lJ>_7>-==6q$>r>u>f>>Q>== :==Q0=>->eW`>z3>oJ]>>=T=T? >LW?>|>>u[>2==qp<5Q<=B=>k>P*>g >Y<>)d!=:=-y <'Y:g9g9g9g:g;?<== 5=<;g:g9g:t= =?>>;>I>1 Z> ==V>+> ==:*v>=2==XTw>L>>=m=d=n=/=51==o==51=~= Z===C>a>=:=TP<*<R<5Q=5>V>q$>;?>Rv>XT>F7>%> ?e= =yN=Эy==s==>%?= =*= :=-y <t^>ٛ>==='Y<=3m=Ϩ>>GM>;>Z>td>y=Z>gs>>>-'=~=07=Ow==ʎ=t4>> >ٛ>+=/=Z_(>>=!==Z_(=={=:>$̙>G~h>a>u(o>u >`=:>2ԁ> =嘮=t=̘=n=̘>޵> >1L>+>=Σ=h_ =>*z=t=D=h_=?/===p>$̙>Dn>WOw>\>S:>4>^=0====== >>+4>%> TP==VJ<<;J<(GM>0>>OW>6%>"#>=Y=%?=h_=g$=t!= =n=܊>{y>><==5=*<'Y;;<;D<t<_=0= =5=t=| =C===h_=~>{>~'>&>d=d=2=L=g<<<=*=u[=?==:=U= :=C<;:;#D<T=07=OW=,= :<;!;!<== :=x ===-y <ѳ;g:g9g:g;GM>>d=a=s=<~<<<<=T=%=J]=;==*i\w>/B3>;?>"===><<3m >GM>d=O=T^>0>;>!7=[= %=<<'Y<ѳ=0=%>i;> >=E"=x=g<(:g9g9g:g:D;D&>>w=͝=f{>> =5Q=t!< f;:g9g9g9g9g:g;n<(<;:D9g9g9g9g;=?/=51=07=Z= f=I< ;:D;#D;J>-'>~'>=2= f== =n==^=~'== E====0<\i:g9g:g:T>q$>->/B3>%O6>w=a=~=51= =:K= :== Z= f== =Y=m<:D9g:D;w>, >>><~>*>w=:==y =n=5=a= %==yN=~=[=:=t=;m:g;<">,2>;?>3ټ> 5>T=51=x=d==R==N=m=Ow=T=?=Ϩ>==+n<;D;3m< =<ѳ< =(^=h_==t==f=#D/>q$>'I> v_> )=ʎ=%?=VJ<=M+=J {=?/=I@=rܫ=t=51==Ɉ=2==>>V=ʎ=,==g<5Q<<<*=N=Q0=T===w=4 I> >V=yN==D= %= =XT=R5Q=rܫ===t==L<:D9g9g:D;!<5Q=C= =x=rܫ=c-'>%>']>>\=Σ= Z===qp=rܫ=R==2=_===,s<'Y9g9g:g;g<\i==a=s===(^<;J;?<=d=> 5>2ԁ>4\Y>%O6> =d=~G=M=R=x =~2=ѳ=Tq=dB=0=Эy= E={< ;:g;<'Y< {=!:K=k=d===: << =;?T> v_>1 Z>0 > v_>*z=ȃ=:K=?e={=h_=rܫ===j=:=ӽ)=J=^=,s<ѳ;?~'>!{>>w==n=R=f=?/=-y =<~=e=x==n=n===: T> >{=E=5=p5=?/=N{> I>=:===R=R5Q=='Y=^t={=zG=Q0= x<;dt9g:g;3m>4\Y>C(.>6%>ٛ>T==%`=u[=L=h_===D=y ==*.~G>^t>rZ>a&>;>:=9=Y= =qp=(==J<=Z=!=*==&Tq>9v>h%>|M >nq>G~h>/=?=n===̙=ʎ=?> >c>޵=5Q==<}<({>-[>T?>e>Y<><~>GM=9=̙=R=R=?==魚>:*>d> == Z=dt=R<<<=0=rܫ=t==ȃ=/==R;!;g<ѳ==魚>V>2>;?>.>ٛ>=/=TP=h_=i=R==Σ=T>{>T= = Z=x =<_<_=c=C=x ======XT<;;g<}=Z_(=>T>d>d>f==2= =C==c=: ===y-=:=*= ==R5Q= <_===+=E==zG<;dt;#D;J>>>d= ==f=t==0=T==:*=DU<;t!9g9g:C;dt<ѳ=K=2=a=9=/=\i-7>_7>w2>n>HBT>`=a=M=m…=_yN=:*===嘮=ȃ={<;:C9g9g;g>a>{==C==Q0=:*=̘>q$>l{>+>>̙>?e>KS>w=~=Y===>>)p>'I> =D=< =:D:Dd>1L>;?>!7=E"===1=Q0==9>8>>\Y>>ǟ> >t#4>!7=J<==?=5>~'>>>b>k5r>K>O=Tq=<>?C>I@>/B3>R==3m=%O6=e=>;D>w>>x> f>>~2>-== =*>޵>>N>x>g>m?>1F=d==&Tq< = := :=C=>>*>7X>$̙>V=̙=*<*==?>&"> >Tq>>}>>l:>'I=?=n=*>T>`>@>i>w>g >7>4=2=x =: =0=-y =M+=ѳ=:> >7> =;=<ܫ >F|>m>8>Q>oJ]>@Y>d=*===> ?e> >>>LW?>@j>#= = E=g=T?='Y=(^=C=w=?=Σ=嘮==i\=C<ѳ< =s>.<>=̹>4\Y>!7> ?e=@==g$=zG=̙=E>T>'>>>==s=]n=3m<5Q=g==I@=| ==n=5=i=g<<g<=3m=x=ȃ=:=d=嘮=ȃ==[db====0=<;?O>s>f=X= :;?;3m;<<}'>%>']>-'=̘=(^<(;ii;>$>$̙>"=D=< =<'Y> ==~2=Ow=ӽ)===J {<;:g9g9g9g9g9g9g:g;m<;J:9g9g:D<+n d>GM>&>=i=<_*( >vn>> E>6w>V>bM>B=J==D=>d>*>?C>4 >d=tQ>>>hg>o>T?>M=n==t=>d>`> >Y?\? v>ض>C>C(.=i=dB=yN>'>>>s>t>>|Z>-==R>d>Z>>>D-i=m=s=t=>ٛ> >?{y?)"?(?k>>m…>'=t>/>)d!>eW`>XD>y >w>O6>>f==*<_=I@=N f=>%`>m…>>S >>V>Y=I=,=>>>+? #?+=?*M? >>z3> 5>T>>/B3>q>k>v>">>>B=07=d=[db={=k=> >S)>;q>>z3>C>==C=>/>l>@>>??H>%>Cz>k^>>>>'Y>]u>>Q>qD>Ѝ>>Dn>޵=:k=d=T=i=k=>>L>\i>IG>k==x ==3m=ʎ>3ټ>>qD>>a>>>AV>d=yn=>-'>3ټ>n>>>>l>+==/==[db=C=<~=u[=ȃ> >>d=?=?=/<= ѳ=>*z><0>r\>>k>i>9v>w=t=/=51=_>w>)">J {>Z>NR>-> =ʎ==T=<=g=*=x ====?=]n=g-'>ٛ>B> == ==w=(^=;D=^=ȃ=p> I>><=5=%=}=4=;;J>İ>><=y-=,s<'Y;dt;3m;>.~G>N>T?>=̹>=Y<t;i;JL>P*>n>t>[>"#=< {<;D<< =7X=~2=/=i\==T?<t:g9g:C:t;t!;#D:g9g;3m>R>q!>u >\(O>!{=< >3ټ>T?>WOw>=J> =h_<;DaS>&>>=?<;dt;>{=a=a<_;t!:g;?==_yN==u[=(^<=:D9g:g<ѳ=YY= =J<==/=p5q>!7>;?>?/>+-H> = %x>>޵==C==3m=D=ȃ>w>B"> >>է>|>IG> ==3m=R=+>/>&> 5>=Ϩ>=!:K;i:g9g9g;t!<==qp=yn>1L>\(O>a&>C(.>O==x =ѳ=>>F7>>ƙ>:>>̹5>N>;==Tq=̘>^>;?>g$>,>w>Z>d=h_<ѳ;:D<===2>'I>u >>XD>4>Q0>===a>#D>+>R?Rf?.?/B3?*>Эy>rJ>=嘮> >6l>v->>ԁ>u>>g>GM= <5QL>>.>i\>KB>rJ>'I=*==…>;D>V>8 ?/?9'?:*?1>;>/B3> I>>U>>>T>0>0>R>g =~=T=)d!= =R=_>Sx>l>i\>=>>>6l===yN>>OW>r?'?1?:ݰ?;O?2b7?;q>>Dn>İ>%>Y܊>>Э>9>E">>`N>K!>as=s=ѳ==x=s>4 >q>8>̙>C>| >*=5Q=/= E>%>>9?(?2?2(?(>ޔ>>@j>ٛ> >F|>)3>X>T>G>>F>">"===s=:*=R>>M+>> >~W>KR>d=2=T?=T>>b>>*? ? >>>nq>'I>>>']>_> >ԁ>>c>>Z>=a==T=]n=;D== >'Y>;?>->=E===3m= E>>k5r>V>[>>>>hg>(>=嘮=~>R>!7>Sx>66>>>Y܊>!:K=p=51==<d>.<>B">?C>'I>= =y ={={==?>w>!7>->%>^===XT=0;?;;< ={= == ѳ</;g;3m;?<= =(^= 5#D>B>IG>1 Z>{y=N'I>a&>>+>t#4>;D==</<>HBT>">>b>>^t>=M+>KR>@>է>+> >`~>w=?/>T=5Q=*z.<>k5r>>?e>z>@j=<_;<= :===p>{=G=͝= -7>P*>V>;D> ==i;?;g< =<=5==n=E=+==C<9g9g9g9g9g9g:D<+n=<~==i=m=Ϩ>=^t;?9g9g:D;?<= =^t= =T=?/<t:g9g:g;m<<<'Y:g9g9g9g9g:g;dt<<ѳ<(<g:g9g9g9g9g9g9g:g9g9g9g9g9g9g9g9g9g9g9g9g9g:g:D;t!;t!:D9g9g9g:g:t<<<=g<<:g9g:t<= :=a=T=u[=C<_;?9g9g:D<=L=x=2=X=D=zG= :<;D:g9g:D< f=zG=2=͝==0==T= ѳ<9g9g:t<=p5= = =5==:=y =XT<t:t9g9g9g9g9g9g9g:g<===E==Z==n==;9g9g9g:g:g:C9g9g:D;?<'Y<;g:C9g9g:g> =:=sV>%>C(.>L>::k>=n<<}= :=^=n=;===Q0{>>> I=U=Q0<ܫ==rܫ=>>@> >k>D> >_>x=M=Q0=t= >>*>2ԁ>']>{=<;t!:g9g;<==}>>AV>m…>u(o>WOw>==x =T=~G>>A_>a>c?? eG>g>>UP==2=T>`>Pl*>rJ>c>> >.~G=2=R<;g<= :=>9v>>|>>>g$>-'===d>!{>/>z?)"?4l?5 E?,>O> >L=…>d>F|>>>ŵA>̘>>a>;== :<ѳ=22=qp>T>a&>V>>>>j>;= ==?>>>ݏ? [?4?A>`?B?6?><>A>^>"#>eW`>L>>>_H>>j>k>=s=<~==s>+>i>>;>`N><> >KR=d=~G=嘮>A>i\?1?6?B=?B3?8/?ӽ>>V>ٛ>*>h%>D>ԡ>NQ?,>>>b>1F===^=/=yN>KR>m>><>̙> >=J=嘮=x=>.<>>NQ?/R?8@?9?1 Z>>s>N>k>#D>Q0>B>]>臸>˴>>s>E>3ټ=d=51==x=>d>`>>nv>o>^t>&==g$=i;>d>t#4>?@?!Z?!?66>>>.<>-'>'>)p>pO>I>2> >X>u>td>k=嘮=/==g$=;D=R>R>4 >K>>>M===+n=I@=>'>}>Tq>>)t>I>~>3W><=07=yN>>)d!>g >z2>>>r\>,2==/== :< B>@>XT>UP>;?>GM=_H==T=x =/=!>>.~G>@Y>4\Y>= =t=F=(^;?;:;gw>i;>{=:k=-y <#D;3m:; =>::k>\>c >L>=/<ܫ;;dt;!>>zG>>-'>U>Y> TP=^t<;D<-'>_>>>I>>{m>&"=<<ѳ= :==>>w>v>=a=d<:g9g:g<(<x>cL>">>>>Y>(=Yd>>-'=m= =:t9g:g;T>F7>g>>rj>>cL>d=C;? >s>d=G= Z= ::t9g:g;g;3m:D:C9g9g:g>I@>nE">ui>\>%=-'>GM>*z=n<9g9g9g;3m<==3m=d==s==;D9g9g:C<(=g=<5Q;n9g9g:g;<t==R=d==TP= 5<#D:g9g9g;d>-[>;?>+> =<<}=g=rܫ=d!=y-==̙=C >^=_H=Tq=* v_>g >>>)3>W)>w==C==ʎ> > >)d!>8=yn=<*;?:g9g;dt<#D=DU=>.~G>Z_(>a>D>d==0=*i\=w=~h>>">2>n?;>D>̙>N==/=~h>O>C(.>td>` >>u >+n=51=(^(>w>-'>>#>W)>v>=t=T=> )>`>¥??1?22?)>}>>~'=%>,>951>Y>eh>)t>s>@>E>8/=='Y<ѳ==K=>Q>'>>y >>>+4=ʎ==s> >TP>!?1?\?4}? >p>2ԁ=>-'>T?>:>>Bu>P>܊E>qD>V>-'= %=(^=rܫ=T=O>Y>b>7>>9>)3><~=;=i;=s>'I>a?Q?2ԁ?>o??4?5Q@?>2>C(.> I>a>U>C>I>…>^>>!>i;>-[=%==^==ʎ>;>{y>>Y>f>>,s=̘=zG=n>>?e>0?*W?4J?5a?-`>!>6V>;?> >d><~>o>j>>6>Bu>>Z>-y =&==x=g=R>{>P*>|>)3>66>N>^==-y =x >{>\(O>>ط??>ܫ>>r\>L=m=t4>>\>}>e> {>u9>U>jq>:=ʎ=t=_yN=J {='Y=a=07>#D>8qD>+4>^=ʎ=e===2>GM>ilK>\9>d>d>>p>(==Y=2=$> %>W)>U>S >TP>hg>!7=;==p5<_Y>1 Z>K>IG>.~G>=yN=t=1='Y==T>w>'I>8/>->O=+=rܫ= I>^===(^;i:D:g;3m<== :=J {=I@=c<#D:g9g9g:g;=<(<R;g:g:g;3m<==: =o>>51>Y܊>`>IG>=<_;dt:D;<=B=R=a=| =N;i9g9g:D<<t<t<'Y;#D:C:g;?>w><>>>WOw> I=_yN<;?<t=4=?=:=嘮=E==+n;?9g9g;3md>]->>q$>eh>Q>z3>%=a>O> =*=M>`>m>ݏ>,>|>Y>)d!=t<\i>ٛ>>g=:k=%O6;t!9g9g:t<#D<<<'Y;9g9g;t!=I@=>C>\>XD>>>dt>=_yN;;J<ܫ==>>>= =%='Y;dt9g:g:t;m;n:9g9g9gd>H>nE">u[>^t>']=n{==:=s>&>= E=,:C9g:g*z>> =Ɉ=: %O6>]'>u(o>`=:>,s==0==-y ==ȃ=Z>=[==N f<;:g9g:D;q>%>+n>7==Z_(1F>>u9>>>R>%==Z_(==O>L>@Y>Z>]n>>>=t= :<;D;3m<<ѳ=^t>>A>qT>y>_>"#=n=C==0=>ٛ>d>N1?~??AO>D>b===51>O>KR>k>*> >+>l:>=I=c>oJ]>>7>>T?>==(^=u[=07>C(.>W? #?/!?0?$ZO>D>> I=:K=d>!7>n>U>T>,">> %>T?=t4=rܫ%>w>է>>>b>=/=)d!=}=>Y>?GM?0?1?&b>>)3>-'==E> >u >>R>א>>( >s>i;=/=1=C=N f=>^>\>v>>8>aS>N>=:*=g=M+=*>KR>>?!?&D?9>j>u[><=*=n>d>Z>%`>>W?>L>>i>d=Tq=Q0=: =<~=<~= E>ٛ>N>`~>N>/=*=J {<ѳ<m=/>!:K>@>f>Y>ߺ>Y>>>=07=5==>'I>w2>f>i\>>H>>=?=:*=3m=R= >%?=%=,<ܫ->p>d>>w>>>=y =C=(^== >)d!>Z>t!>k5r>?>=5="?<^> 5>q$>d==?=(^>%`>~'=[=ٛ>9>@Y>(=m=<ѳ:g9g:g<;D= =[db=t!=F<;3m9g9g:g;i>Y>{m>>lJ>4 =a=*;:D;!===*=Ɉ=~=:*=;3m9g9g;dt@~>| >m>s>{y>[>w=a;!;m<=S:=?=T>޵==̘=| <(:C:g;n<ѳ<5Q<*AV>>nv> >I>`>i;=i;i;?<=u[=%>+>> I=*=/<:D9g;3m(>ga>>>z3>Dn=G=%O6:t;g >=a=t<m:D9g:g;;n;:g9g9g;=dt=d>+n>P*>WOw>@Y>d=<;D9g9g;<_=R===;==h_<ѳ:g9g9g9g9g9g9g;=: =Y=> =a=I<9g9g9g;n"#>k^>>m…>+4=͝=c > ==?=L<;?:g;g;J<_(=^=G>>#r>d==R5Q<ѳ;;!==2>GM>I>,>9%>f>u[>=\i>(>P*>^t>G~h>B=ȃ=_yN>F7>R=>9v> ==g<(<ѳ=x =07>IG>>܊E>g>6>S >%=T<*=3m=?>>T?>H>>>W)>i;==!:K>Q0>^t>EA>=2=c;J<t=x>>^>d>⩥>[T>>է>*=>ba>>>b>u(o>']==,s TP>3>C(.>.~G>v>=<_;3m<=| =>Jg>|>L> {>y >~2>a= +>KS>v>>>8>j#> =Y='Y^> =n=P*k>g$>>>|M >9v= =WOw<>V>r\>i>?C>k=<_(B>1>4>q$==t=;;dt<5Q==O>>+4>%> == Z=;t;:D:D:D:g9g:D< =<'Y;?;dt:D:t;g;dt<=f==E=Ow=51=g=;J:C:g+>N f>U>>>d=%`GM>> TP==:D9g9g:g;?=={= %==f8>4\Y>!:K=*=3m;!:t;g<(==T= E=̘=n=/=a< <'Y;g;dt;?<=0=t=̘=db=J=x <;n9g9g<'Y=?/=>d>N>h_>KS>=x <#D:t;t!<;D=-y =>>B>=:=Tq=8<t;?;n<<=-y ==E=07==R=;9g9g>WOw>n>N>d=zG<:D:D;J=-y =@>~'>-y >'I>Y=n=XT^>4>D>+4=Z=R5Q<:D:g;dt==T>d>']>#r> I=~=9<>==s=;:g9g:D=g=?=[>">Y==^<_;t!:D:g:D:D:D:D;g<(<;:g9g9g<g=,s==?===Q0<t:D9g9g:< f=T=U==d=̙='Y;9g9g9g9g9g9g9g9g9g:C9g9g9g9g9g9g:g<ѳ=)d!=o=w=DUd>= =n=;9g9g9g;3m<=(=3m=&Tq< f;9g9g:g;#D;;3m:g9g9g9g:C<=8==>-'>B>*z==;dt9g9g9g;g<=*i\=_yN=Q0= <'Y:g9g9g:g:D::g9g9g9g;g<_=:*=0>T>޵==<<'Y;g:g:D;< ==X=XT<'Y9g9g9g9g:D;g::g9g9g:C;3m<R">>w=n=x=)d!>q$>'=yN==<\i;g:g:g:g;!< f=R< f;t9g9g:g>=~= E=^t<<'Y;g:D:g:g;<\i<}<:D9g9g;<5Q=22=?/= =d=5 >,s>B>0 >*z=t!;9g9g:g:t;3m:t:g9g9g9g9g:D<'Y>C>\>KS>=;J9g9g9g:D;g;;g:g9g9g9g9g;g<;D<5Q=3m=I===fd>1F>H>7> )= ;n9g9g9g:g;n;!;!;::g9g9g:g:D;!<<=3m=h_=_yN= 5<<<;D I>> ==:D9g9g9g:D;? >f>&>*z=ʎ= <*;dt:g:g;J=R=m…==h_=R;t9g9g9g;dt<5==:=_H=a==B 5>Q>j#>^t>0 >==3m<;g:t<t={==J<=s=<:D9g9g9g;==?> I>>w==,<;f>D> >8>H>YY>:==h_ ==2=;3m9g9g9g;=3m=>>!:K>7=嘮=<*;? Q>L> >2b>j>^t>x=y-=qp<_(<;Dg>">{=<ܫ:D9g9g9g9g;t!=*i\=?>f>'>==f2>j>rJ>nq>7l =m=o=VJ<<_%?>'I>1F> =m= =| =*i\<;!;?<ѳ= :=\i=c9= 5T= ==;i:g9g:g:g:g:g9g9g9g:g;ٛ>K>e>Sx>=Tqw>v>=0=rܫ<*<}>T?>)3>|>c>]u>+= x9g9g9g:g;3m;dt:D:g9g9g9g:g;?<=_yN=><>>a=G=="#>nq>>>q$>xyn>~'=DU:g9g9g:D;?<;!;:D:g9g9g:g;J%?>>O= =<>a&>>q$>>e> ='Y:g9g9g:D<<ѳ<.~G>d>y>g >+=ʎ<t:g9g9g:D<'Y<<_< f<ѳ;J:D9g9g9g:g:t;i<}<_=4=s=p5=*i\u> v_>7=嘮=_yN;i:g9g9g:g;!<<< <<#D;g9g9g9g9g:g:t;m<w> v_>!{>-'=07==<'Y;;< f=N f===i;=rܫ=c<:g9g9g:g<;D=C=><>>"===g<ѳ= =s=yn>0>k5r>>I>^t>%==d=<<=a=>> ==yn==$I;J9g9g9g:g<=s>GM>W)>n>W>!7=Ow=,s<==3m=̘>)>{m> >>'>>a&>a=:=T==?/=>>@>T?>@>=̙< f;3m9g:C:D@Y>>w>>G>+=u[<=dt=d>KR>rj>Ϩ>>>A.>>>-y ===rܫ=i;>k>@>xyn>>~>@=:='Y;J:D:g:D<*=:>Dn>H>nv>>N>= <=M+=?>P*>U>2>>O>Y>` >.<>T=/==>(>Jg> >>4>NR>{=;D;!:D:g:g'I>k5r>rJ>l>2Q=*=h_<<_=51>1L>z2>)t>>R>eh>gs>=嘮=n=rܫ=d=G>->cψ>| >i>-[=E=g;t!:g9g9g<(={= >*>?/>-y >=s= :Q0>?e>>>c9> 5=Z=~=='Y=,s=D=G>ٛ>'I>==Z_(;?9g9g:g<*= =ʎ= =dB=u[= <t;?:D<#D=a=> 5>,2>L>=͝=y ==-y <<ѳ=R=h_==?=/= :;?9g:D<<<_<ѳ<'Y<;J;:t:Dv>>i;>=@=Z_(<3m:D:g:D<'Y==x =^=u[<_;:D:g:g9g9g:;J<ѳ<5Q=g2b>3ټ>@>.~G> =M<ѳ:g:g;n= =^=ܫ> >=X=R;dt:g9g9g9g:D;J<=< f<ܫ<_<<ѳ*>Pl*>Z>Dn>B=~G<:g:g<#D=h_=>>-[>%>*z=R<'Y:g9g9g9g:g;t!<(%>HBT>S:>;>Y==<'Y9g:D<}==>!7>::k>0 >d=?<:C9g9g9g:g:D;t!;!k>/>#D>O=U=:t9g:Di;>$̙>q$>T=<;D9g9g9g9g9g:D;?ٛ>+4>L=07={<ѳ:D9g9g9g9g9g9g9g9g9g9g:g;!=c=y =>w>:*=5Q=u[=< f=R=><>IG>f>2b>?e>Q=~=c:g9g9g9g:g::D:g:g9g9g:g;n<= =G>%>;?>2ԁ>==\i=%O6=h_=9>9v> ><>9%>(>>-=:D9g:g;<<(;::g9g9g:D</=R=D>w>;>T?>M+>)p==T=9=>{>S:>V>V>U>ƙ>>I@=2;n9g9g;gv>>2Q>L>DU>"#=yN=]n===d>H>>X>ǟ>`N>x>;?=D;?9g9g;g<=>&> >+=5< <=J {=_> 5>nE">>ݏ>W>k>=XT;n9g9g;g==c >M+>_7>N f> 5=><>=T=,<;dt9g9g9g;t!<ѳ=g=( >d> =yN=Y= ѳ<'Y;3m;?<*=8=a=T?=<t;n:g9g9g:g:D<>4=9==J {==22==O>/>G=>g$>i>N f>!{=07=x=(^<*==T===~=n==R;J:g9g:D;n=c=_>$̙>ga>rJ>n>:X>{===w=*>-[>u[>>>>ݏ>w>+n== Z= =t=&>>;>KS>7> =̙=c<'Y;g;>u[>ݏ>>,>>-y =n=8=>>h>i\>?ӽ? >g>>j>">T=ʎ=> >c >c>q$>u>gs>'=s=*i\>S >>R>>w>KR==dt=n>!{>>?)?6?4?as>W?>?e>::k>= >w>F7>t>c>h6>OW>>F7=J<=N f+4>]>>R>>V>KR==qp= E>/>)3>2?,?8`?5a?x>R>j>::k>-'>>>Q0>է>̹>[3>ɩ>#>Z=_H=a>>>L>g> >-==K=| >R>u(o>zt? Z?,B?'> ><>pO>$̙>=>>::k>f>>>>c>@=:=(^<#D:g:g<= {>7X>z3>?e> >EA>{=^=<_=>.~G>>~>ٻ>>Cz>y>-[> =Ow=n=>>EA>}RF> >>N> I=mٛ>+4>=嘮==&Tq<t;J= = {>)">a&>z>nq>C(.>GM=~=ʎ=M=[db=WOw==[>~'> >~'= =zG{=G=O=/=:K=| =: ==g=(^=h_==ѳ=t!=R;?:g9g9g9g9g:D;?;J;i;i<(<#D;J;n;i<===T=?=== =R5Q= < >-'> =:=*z=g<<t=J>/B3> =+4>u[>a>8>>cL>-'=<ѳ<=F= f> v_>UE>nq>e>7*=a'I>s_H>7>f>>\> =x <=<*=u[=t>*>a>{m>t!>F>=c:D9g9g9g9g:D;!<===<ܫ >D>x>+>n>.~G=Эy= :<;D<_(=p5=͝>>K>eW`>]n>1 Z=yN< f:g9g9g:g;@>"#>->M=a=_yN>'I>!7>{=m;i9g9g9g;g;!>'I>;D>+n>޵=d<:9g9g9g:g:g9g9g9g:D;!= :=Y> >8>L==5=3m=t=C=>~'>[>>f>l>a&> ?e=8:D9g9g:D;m;i;:D9g9g:C;n<=a>>?C>W>Rv>-[==x=a==Z>H>է>>I>u9>V>@Y=Y;m9g:D<<t!7>Z_(>t!>nE">I@>d==p5=?>>fL>,>΂\> >>>]'= fq$>W)>p>k5r>C(.> =Y=: =>>]n>>s>`n>b>>Q0=Ɉ<ѳ:g:g;n>/B3>KS>Dn> v_=%=%O6>0>I>>=>̙>g>%=%`w> =Ϩ>=K4>i>|M >l>::k=d=C<;D:D9g:g;!<=N=t= <;J:C9g9g9g:g:D;<=0={=w= 5>s>>=y ='Y=yN=̘=#=F >*>%>>/=Y=a<_']>@>: >=嘮=ѳ=&Tq=UE=U>^>;?>kv>>x>z>F|>-'=Эy=t={==51=>{>=L==J {<<'Y;m<V>Y>>ݏ>>zG>, = f=f=?> >M>8>~>%>>@>>^t> v_>T==>">6%>dt>zG>f\>*( ==| =c<=,=,s=>3ټ>>s>E>,">,>gs> =d=:>*>/>G? ?5@?5Q@?% >uY><>S)>#D>^>>C>4>>">qD>>>OW==g=!:K= =1=>^t>>ܪ>>>D>g>=n=07>>>|>Ϩ?8N?G,?Fy-?6f?k>>n>7l >q$>.~G>nE">>9F>>>>66>~'==M+<ܫ== >^t>>Y>@>0>>rJ>=y =a>8/>V?K!?:a?H2?F?6f?>=>p>3ټ> v_>3ټ>x>>M>Ϩ>>ȤJ>d>$̙==I@<2ԁ>C>L> >s>>Z_(>{=t=/>k>?e>܊E?.,?:J?7?)>Y>>Q> v_>>!7>ba>>̘>>܊>1<>|M >=?=R;T?;g<=yn>bM>>|>>u > v_=y-=qp=p5=5r>P*>>N1?v>?V>U>f>`>!:K>*z= >Q>.<>w>F>y >Tq>:*>;?=J<=3m<g9g9g;=_yN> >@>WOw>D>u==u[=N>IG>>W>l>vn>@>==dB=M=I=O>!{>I>\>Pl*>&=O=0;?:g9g9g;J=&Tq=D===i=<> v_>>w=…=U=s=x =WOw=a=d=U==ܫ=i=t=g;:C9g9g9g9g:g;n{>:*====22= :=*i\=J {=]n=YY=3m=,Y>,s>951>)d!> I=?=T?=='Y=C=rܫ==a==4<;?;?;?;g:D:D;?<t= =8=^t=a=C= ѳ<<'Y I>K>z3>p>u[>@>=====M+=t=E> =>>==<;?;3m:g:g;?<='Y=h_===f= :951>>r>Ѝ>>zG>%=D=*i\=={=0>f>Pl*>hg>[>)d!=<;n:D9g:g;<=(^=| =a=~'={='Y>WOw>C>>ď_>>>9=Ѳ=L=J {=?>R>I@>;q>>?e>a&>=4;dt:g9g9g:DS)>V> >s>>>2Q==VJ<=lJ=:k>O>Xc>Q>>i;>td> =p5;9g9g9g9g;g)p>">ݏ>>>F>pI>~'=5=: =p5=>/>AV>|M >j>>]n>'=-y :D9g9g;m*>fL>v>^t>%O6=Ϩ>=M+= x=?/==Ϩ>>>?C>W)>L>!:K=OW ?e==~=^t< f<}<=B=T===t4==:K>&">&=07=zG<:g9g9g:g:g:g9g9g9g:g;<_(=Tq>k>&>=_H= %=0= :=;D=> )>G=>g>>k>I=[=/:D9g9g;g;J<;?::g9g9g;g<`~={> >>OW>Xc>S{>-===`~==t>8/>?e>o>>=>d>+4= %;9g9g:t!7>]'>w2>r\>M>=n=h_=>{>V>>>χ>>>KS=ȃ<:C:g;!:K>\>u[>q!>KR>w=s=-y =,=!>N>a>>=>>W>Dn=@<:D:D;>::k>V>P*>(5=T=*i\'I>z>>g>>z3>#r=I>İ>-'==a->`~>ui>g >5 E=i=rܫ(> %>B=m==R5Q >f>%>q$> =ʎ= =)d!===R5Q=| =T=VJ<=<<=<;?;<<=-y =><>7>T?>NR>-y >{=%`= 5=C=dB>>7>hg>4>t>V>Rv>k=O=/=i\==ȃ=嘮=m=m==:K=VJ<=c< f<= 5=<~=#>(>cL>>">>>@Y=={=><>L>TP>~>>>[3>̙>p>1L>i;>V>,>>2ԁ>`>y>g >*==a=Z_(=,s=Q0=| =̘>>>>&>#> >s>vG>==>+>f>ê?%`?5?7|]?,"/>}>:K>i>6%>k> 5>F>>]>ŵA>>W>EA=d==t!=Q0=w=:>`~>L>>(o>g>L>Q> =X=…>@Y>+>?6%?GMm?G?:J?S >> >Jg>, >7X>o>>Y> >q>L>4> =%=*z= 5=#D= >^t>d>X>!>j>>>=~=07>;>~>3?8?G^?Gc?:*?nv>>>Dn>*>;?>z3>,>澑?V>>΂\>2b>0=={<<=`~>1L>|> > >h6> >b> )= =*>!7>*z>[3?,?:?8?+9>;>>c >*( >B>%>g$>ݏ>Эy>>=:>`N>> v_=D=+n;D;c9>> >>z3>']=E==̙>*z>M>ٛ>?:? >O>̙>r>(> =07>f>3ټ>>>2>y >O>L=?=a>AV>\i>L>=*===M+=]n=>'>IG>I>L>a>>M>GM=…==?= >{>.<>Zv>nq>eW`>;==a<;D:g9g9g:g;!=+n==E==d=K={>L>(>%>~'==n==w=h_=T==>v>>^>==-y ;J:g9g:g:g:D;m<#D<{>{=07=J=ѳ=\i=8=J {=qp===s=d=\i<_(;i:D:g:g:t;dt;t>-'> ?e==t=R5Q=3m=K=t!=/=R={=C<_<;C;g;3m:;dt;?`>>>I@>7>=Σ=| ==̹=M+=t!=^=̙==#=t!<*;J;;n;3m:D;>[>H>>g>O%>d=D=DU=J {=m==07>> 5>=@=t<;D;:t:C:D<;D=g=DU=T==a=| =&TqF7>"><>;>>P\>/B3=%=k=Z_(==嘮>*>ba>zG>m…>6%=:>h%>Tq>G>:>¥>C>G~h=07==g=OW>i;>\>>V>>s>`=XT;:g9g9g:gg>fL>g>>E>İ>|>Dn=嘮=D=a=5Q>>m…>>>>|>*=;m:g9g;<=p5==5==H<*>;?>m>d>>>P\>'I=y-=,==+>>WOw>?e>b>m>nq>&=UE;g9g9gCi}>|>ѳ>~>@Y=2===UE=| =2=*> >T?>l:>_>-=+<:g9g9g:D<= =)d!='Y=<ѳ;J;n;J^> 5>B=?==(^==(^=t!=t==yn> = =<_:g9g9g;g<'Y<(<t>GM>Es>\i>IG>İ= 5>;?>6%>GM=:={=,s=C=#>d>XT>)3>>Z>Y<> =YY;3m9g:g;#D<+n<t >AV>^t>Z>4\Y>=Y=1=WOw=Y>%>z3>L>>>|M > v_=/<;D:g:D;<ѳY>C(.>`=:>[>4\Y==x =g='Y=>!:K>u >V>̙>>v->=<t;t!:;n<<ܫ=N== =<<:g9g9g9g:g:t<_=>%>@j><0>GM=?=(<+n<t=>v>>J>>I>|>Q0> = )>R=ȃ=;D<'Y:t;m<m=>d>4>J>@Y>=̘=Z_(<;:g:g;#D<;DQ==:=5=J {= =u[<_ >i;>Y=5=/={=;D=(^=;D=_yN=qp=XT= :<<=/>(>@Y>=J> 5=?=}<_===*>&>@j>dR%>t!>cL>;?>2b=*=U==X=U= f=0=y-=:K=rܫ=0= =g==C=R5Q=s>f>C>f>u>w>q!>*i\==C==Z>+>n>>Y> f>a>b>`>,s>d>޵>> >V>1F>D>3> )=n==a=K=a=zG=> >p>=>8>v>C>\(O>Q=,=>a>dR%>5>V?#4m?+-H?>Эy> :>`=:>0 >>a>->`~>>9>>\>%=܊=:K={=XT=h_=>2ԁ>C>]>ٻ>>>s>^= %=%>'I>">C?Ȥ?6?::k?/>2><>z3>B>']>%>P*>(>>E>>>l{>d=n=,=&Tq= :=>-y >>Э>֬3>̘>I>ilK> =n=d>&>>s?# ?7?::k?.=>I>>u[><0> >#D>Y<>C>@>Bu>ٻ>@>|>==h_<<==g> >;q>R>`N>Gn>m>B=G==̘>>dR%>d!>?*H?+9? j>>>Q0>q$> >i;>F7>> E>̘>ƙ>u>q!>w=?=;;;J=>51>,>>>4>Y>x=ʎ=5=>޵>4\Y>>[>U>F>v>l>V>~'=Z== >k>cL>(>P|>}>@>3W=Ɉ=(^<9g9g:g< f=ʎ>>::k>-y > ==ѳ=p5==ʎ>^>22>e>;q>{>`>/B3>{=s=M=,=t=07> v_>G=>\(O>S)>*=T=(^;9g9g:g;?===*= =^=[db=!:K<==:*=%>{>>`>>k=͝= %=f=-y =3m=h_=d!=yN>> )==m=c;g9g9g:g:;t >^>{=̘=ѳ=?/=t=+n=]n=T==| =R5Q=R<'Y::g:g:g;<;D< f=c= 5= 5=*== <~'>2>>OW>+4>^=={=3m=9=_yN= =t=D=s=t!<>KR>{> >s>@~>R=/=K=<~=p5==E> )>~'> ?e==<;dt:g:g;<== x=I@=x ===f= 4>U>̙>y >>u[>!7=s=rܫ=XT==:> v_>V>m…>^t>'I=~< f;:g9g:g;?<=7X= =5=5== :V>f>j>b> >>5 E=n===> )>Q0>>l>d>d>^=<~;J:g9g9g:g<'Y=!:K==̙=Tq==)d!T?>k>9%>>v>CY>4 =T=R=Y=>>a&>>><>u[>f=rܫ;!:g9g;==qp=t=s==0<;n;i==51>+n>>>>>z3>8=~={===U>w>M>>m>` >`~>w==̹;9g:g7>wt4>q>r\>3ټ=d=*z=L=u[=Tq=~>M>I@>_>S{>!:K=<:g9g9g;dt >>=嘮=x=*=g= 5=_yN=D=51=07>@=*= % ==2=;3m9g9g:g:g:D;3m;g:g9g9g9g9g9g;=M+=O> > ==yN==;D<<==> >22>H>8/>w=Tq<t:g:C:g;;i<'Y<;;:g9g9g9g:g<;D=y >d>(>&Tq><=?=VJ<<_#D>Y>nE">]n>)d!==(^;m:D:D;<'Y<=<<ѳ>+>)">Y=m=)d!<}"?>V>k^>[>*==K-'>d= =x >/B3>C(.>7l >-'==)d! >=%=R=c>`>B>@= Z= <<=?/==>d>%>0>']>'=:=n====/= =D= =J {=*=<5Q>>A_>\>WOw>1>=u[/>-[>`>?e>u>ѳ>k5r>3ټ>>=t4==?=>>=?=51===VJ<=+n=)d!=22=0==[>;?>~>>)3>fL>q$===qp=?>*( >nE">V>>O>>ݏ>u[>9v>>^>:*>^>"?>H>f\>Z_(>)d!==I=rܫ=C='Y==x =~>T?>>D>i>~>+4=n=Q0=M>>D>D>>NQ?9>>><>N>%>-'> >>M>H>|> >u[>$=0==B=,<̹==:>P*>m>U>V>u[>#r=ȃ==> >HBT>ѳ>>yn?>lK>v>j>DU>f> >k> 5>`>2b>9>I>?e>>OW= = = :(>u[>>g>N>=n== E>R>4>y=Z>Tq>>4 >zt>>eW`> v_>==a>>S)> >|>+>>-y =~h=<~/B3>N f>B">k=:=n==i\=?>>K>}RF>l>a>>V>B=t= E=t==d>*>^t>w>td>I@>=T<};dt9g9g:g;?=Z_(=Ow>>%?=;=Tq=zG=]n==>aS>>0>@Y>6>%`=[=n=v=*i\=*=^t=X>>>.<>&>=t<t:g9g9g:D;<=22=,==qp=3m=N<=&Tq=g==:>T>==~=T=,sx>ٛ>=07=O6=VJ<= <=c=8=a=m=m=C!7>KR>WOw>A>=J<==*i\==t=XT===Z=E==<;:g:g:g;?<t=g=&Tq=C=T?=L=<ѳ;m;t!<g<=ѳ>d>XT>>> >A>=:K=K=(^=K=s>޵>+n>@>0>v>=:*<t;:g9g:g;?<ѳ=(=R5Q=zG=w=3m%>~>F>̙>>a&>-'==Z_(=J {=g=O>)d!>`=:>w2>k5r>6%=Ow=N< =:g9g9g:g;i$J>T>>9>~>e>=n=Q0=]n=t=~>::k>qp>E>{m>IG= =/<:g9g9g9g;#D<=A=| =T=S:<;J:g:g =>WOw>=>2b>E>C(.>=R=+n=R5Q= :=嘮>)">\>td>ga>2=d=;?:g9g:g<3m= ==J {=]n=;Di;>AV>UP>?C>'=~=0=,='Y=x = Z>{>#D>3m>'I>=T<ѳ:D9g9g;g==~=: <:D:D:;t!;n;;;;;t!:D9g9g9g<(=^=̘=Ϩ>=̙=L< f;?:g;g<=t=>v>= =U=XT<=;:t:D;g;;;?< >B>==<;g<3m=DU=?=2>>.<>?C>22>&>V=O=d=J<=:=ʎ=ȃ===/=T=C=<<<<t===>8>.~G>*>d=51=g<<_=>@>%>M+>w>H>Y>W)>%>==T==&=O>>Y>{=+==I@=g<<t(>@j>::k>GM=ʎ=1>@~>rZ>>k>>y>;>'>޵=5=yN= > >']>>OW>3ټ>-'=@=x =#D>>>2Q>=ʎ=h_=t=t!=܊>&>C(.>u[>i;>>>s>0> D=[=O=ȃ=T>'><~>Y>T?>*=嘮=g^>#r>k>k==T=DU=g=>B>9>]n>y>66>n>@~> I=E====ȃ>>4>Pl*>KR>#D==a{>==?=m…=I@=}=U> >!7>22><~>2Q>=E"=#==^t=M+=g$=Tq=T>`>+4>%>v>=n=(;g:g9g:C:g;g/>w> )=t4==s= :<<}<=R=t!= =$>Q=:=2=1<'Y9g9g9g:g;dt;i<;D< f==,s= :=<<==T?==n==n==C^>a> =&=5=L=<ѳ<}< f=3m==D=x=22<=;t!:C9g:g;<-'>;?>F7>.~G> =_=qp=c< == E=0*>]'>k5r>N>&=Ϩ>=w=c<_==x =:>q$>/B3>%>T=<_(;J:g9g9g:D;*>^t>l:>P*>GM=ȃ=T?< %?>+4>@>2ԁ><=5=<g:g9g9g9g:DO>;?>G=>->=D=c<ѳas>, >!:K==<*;m:g9g9g;<ѳ+>w===J {=07==%`<;D:D9g9g:g;'>>8>=d=ȃ==n=_=51= E==U=y-=51==L<;?;#D:D:D;==t=E==yN=Tq=(^>'I>7l >8>%>4=*==ȃ==o==51=yN=t4=…===;?:D:g:g;3mQ>L>.<>:X>4> === E=/==x=s=51=d> > Q=9=/=t;?:g:g:D:t>'I>'I> %>=?==R==T=rܫ=g= E=T> >R=yN==t;m9g:g:D;t!<=g=u[==t={=8= >>^===a= :=====L===魚=a=/=| <;g9g:g:D;<Q=?=n== 5<ѳ;?;<;D==u[=t==C<<:D9g9g:g;dt;?;J<R<(;:D9g9g9g9g:Dq>d>޵= f=== :<;!<<t=M+==E==x=*<ѳ;:g9g9g:g;g;D<f>w=2=dB=p5<<;D;!>d>d>{=%=t===~'= =}===== =?=/=J {w>V>GM>=͝=:*=rܫ=g=R=| =c9=n=R==Ɉ==={<:D9g9g:g;n<==Z_(=w=a=*i\<<;J<=k=E>>>7>T=51=qp=C=S:=]n=N f=;D=M+==n=y-=ȃ= = =c;9g:g;dt >\=*=/=&Tq=g=g==<=N=M+=:*=̙=n=t=i=;J:g:D;<} > I=yn=@==R=,=i=?/=C=_yN=m==I==,=;J9g9g:g:D;t>~'>~'>v>=d=5=m=qp=[db=C=C=_yN=,==51=:k=5=]n<;:g:D;dtk>>-'>\=ʎ==h_=Q0=?/=*i\=-y =Q0={=5==J=Tq={=(R>{=;=#=t!=;D= :==,==(^=^t=x==n==t!=<;?;t ѳ>i;> ===?==VJ<=#D=22=u[=ѳ====a= >'I>3ټ>(>i;=?===XT=1=^t=^= ==ȃ==m=(;!:g:g;?<>/B3>@>3ټ>ٛ>=J==R5Q=K={=:K=n= =p=~= E=h_x=d= Z=zG=K=K=x =/=/=9==?= {===(^<d>>=[=n=:*=Q0= 5=!:K=J {= =n=ʎ=yN=T=Y===;D<_<ѳ<}<==1=VJ<=s=x =XT=v>>&>8/>.<>=魚=s=x =?/='Y=R5Q====a=122>l>k> >Pl*>ٛ=yN=x=h_=a=x==yn> >=:=t!<*;?:g:g>>==!:K^>YY>^>r>KB>,><~>==T===~>>4\Y>>OW>!7=:=| L>%>i;=ʎ=I@<<==>">_>u>>̙>4>I@>w==I=D=J<>>%>KS>Y>C(.>==L<_^>İ>:*=n=C<AV>|><>>u(o><0> I=51=x=̙=0>޵>q$>@>Py>AV>k= =%?=.~G=<<==VJ<==O=Z==?= :</;3m;?=!:K=ʎ>>@j>Z>WOw>=J>=9==| =R==> > >->']>d=*==?/=N< f =>>w==ʎ==K==(^={= Z=Ow=m> ?e>=yN==XT=<><=d=?=;;t!;J\>*z=;=T<ѳ;dt;m>!7>5a>1L>M=Z==(< f=g=R5Q== ==x= <:D9g:D;i<*=T=><>d=O=t= >@>}RF>E>(>nE">)d!===B=i=Y=>>>O=d=;Dk>C>KS>-==T==K=^=&>->%?>>ђ > >s>o>B===i\=07>>Dn>j#>n>KR> I=T<;;dt>@j>n>w2>\i>=?=: =J {=d=>N>P|>2?K?>F>S >5a=a=n=:>w>;?>x>է>>ѳ>S)>V=qpg>I@>w>>j>, =5Q=H==s=嘮>Q0> >?9?>2>C>F|>{=ȃ=07>>Dn>k>P|>zS>>u[>!:K=51=VJ<=*=;D=*i\=M+=:>-y >_>m…>Uǟ>q$=y-=*i\< f= :=D>1F>>X>嘮>hW>>>>>== >d>6l>u[>>>N>qp>%=:=x=_yN=7X="?= 5==>%>3ټ>$̙>T==R >W)>i;>>@>t>[db>k=:=y-=@=Z>>Dn>rZ>|>u[>Jg>s==d=h_=c=g<= :===*=Z===YY<<d>3ټ>N f>L>22>-'====R=Y=d>-'>+>;?>0Gn>GM=9=%`=dt=22޵==8=R;!;g:D;3m<(<ѳ<d>(>->=a=Q0<;D;;< =<t<=*=)d!= ѳ']>Dn>K>0>g=p5'I>C>IG>.<==C<(;i)d!>-'=~<;3m;ng>>~'>==t;m;3mM>KR>l:>n>M+>V=n=<=(^==͝=~>{=a=>4 >;D> v_= =a=g=3m==Ѳ>%`>k5r>>>s> >h%>d=t=K=x= >>>OW>UP>R5Q>(=+= ;J:g:g<<̹=T>>R>}>g>i>)p=Ɉ=XT=p5=>>T?>j> U??W>p>>BdB=E=5=Эy>B>M+>I>|>>m>T?=魚=-y *i\>z3>է>6V> >Y<>==x =2>>|M >??/?0&?%`>R>u > =+>>.<>u(o>>>s>> >;?==*i\<_(=C=J {=>->V>6V>>>i>-'==T?=>s>|>җG?:?1[3>">=[> O>3>~>>ȤJ>5Q>s>7>`>g=s=R5Q=t!=[db=/>>g$> >l>>UE> =:*= 5=h_>,>g >?;q?$j?$z?> E>n>/>%?> >']>i>f>>]>D>>\;> )= E==p5=DU=3m=>%>Z>k^>WOw>$̙=i=_yN<_==>,o>>>n>>>D>B">d=!=5>d>::k>| >|>,>f>">8qD=Z=2=:*=0= />>^=L==%O6<<*=_yN=…>/B3>nE"> >4>k^>8/>w= ==~G=yN>w>.~G>XO>l>`=:>8qD> d=dB=/=\i/>>d>޵===T=&Tq===y-=d>^>B>d=?==R5Q=R<5Q:D:g:g:D;i< f=%O6=0= :>q$>$>=:=S: >9>Z>a&>IG>B=<*;t;!:K>Zv>|M >>k^>1L=*<;!<#D< f=?/==n=0== :=;D9g9g:g:g:g:g9g9g;?='Y=ʎ>$>]'> >g>n>2Q=͝<;?(>@Y>a>h%>N>GM=N<(;3m<< {=L=D=*=== E=VJ<<;D9g9g9g9g9g9g;=(= > >$̙>(>-'=dB<:g:g;t!<;D=g=h_=?== ==c;9g9g:D<==VJ<=?=y =zG<t:g9g9g:g:D;t>L>">-'==8;;t!<ѳ=-y =*z==/=rܫ<_(;g9g9g9g:g`>T?>>/>k5r>.<=yN= :<>-'>q=51=;?:g9g9g:D;J= :=̘>>F7>N f>/==T=g= :=v=>>q!><>z>>zt>o>!:K=n=N f=s=>*>V>rZ>t#4>L> ?e=Z_(>fL>>>~>@Y==g$=Z_(= %>f>UE>=?%??*?+~?CY>y->g =*=5=>#D>dR%> >R>Gn>7>z>-'=x <ѳ;?<5Q= :=n>>OW>>8>eh>W>p>=/=rܫ=y >B>">?*W?5 E?56?->>>-'=Ѳ>>?C>q><>>Ow>G>̙>]'=07=M+AV>>$>">f>~>!7==]n=:K>&>{y>R%?,?6-?6?/1>d>>%=>w>@>=>qD>z>>א>> >=D=R5Q=u[=_yN= %>#r>z> >f>>k5r>=5=-y =T> >u >@??/!?/?*>K>>%>> >,o>z3>-H>>O>\z>n>v>B=/=*z=qp=K=;D=Ϩ>>5>nq>\>l:>3ټ=ܫ=| ==0=d>;D>a>l*>*>X>ђ >w>Rv>=G=>'>D>#>>>>>L>==R=0=c<=c=~>d>!7>==o=3m<5Q=,=,>V>@j>g>+>>|>I>~'=:=51=n=T>i;>>OW>nE">|>w>K>=s==R5Q<tO>q$>k>O=yn===)d!=N=/=ȃ=m>~'> v_>==~G=J {<_<:g:g9g9g:DGM>3ټ>;>%==Rٛ>T?>u[>|Z>ga>.~G=d=;!;m::k>u[>t>m>+>S)>=;D<#D<<_(=_yN=/=$==?=n=h_>OW>y>>>>V>=*i\;i<'Y=g=T=̘>V> d>=a=<5Q:g9g9g:g:g:g9g9g9g:D=,=>!7>^t>>I>q!>7=J<<:;?<=h_==yn>>{==!{>C(.>Jg>/>{=_yN;3m9g:g<= =x==a=T==`~d>GM>=̘=)d!;?;<;D==XT=%?==VJ<<;=9g9g9g:g;=c=8=5Q=T==YY<;dt;n<== :>g>::k>nq> >cψ>*=:=(<=%O6==:>> ѳ===t<g:g9g9g:g;dtd>1F>;?>=;=UE<,>N>>̹5>J<>{>H>q$==0==嘮> >Jg>e>g$>B>*z=h_<t;3m:g;n )>S{>Q>+>nq>-=ȃ=3m=c=\i=5Q>/B3>f>T? Ed?%{?:*>>_==m=>GM>WOw>j>eh>i\>i>rZ>=T<;<<_=D>*>~>W>>>`~> d=/=+n=,>{>^t>^??2b7?3W?*>>o> =n=嘮>-y >{>g>s>FH>L>>V=嘮=6<= =%`=s>/B3>@>>U>u>n>u= :=(^=>>nE">l*?$E?3W?4l?+Ѝ>>TP>B=%=p>->V><> >>l*>y >u[>=Y= :=: =22=,>7>j>8>u>D>Y<> )=*z==WOw=!>Xc>?$?*ۦ?+?>ǟ>w>==>ٛ>gs>>Э> >ƙ>,>m…>d=?=N f=4=&Tq=*=>$̙>\i>nE">Z>%=E=M+&>Z>~>澑>>ƙ>E>@>*z=ʎ=/=m>1 Z>>>Q>,>?e>@Y==(=K=> )=O=== =<<=h_=>-y >o>ѳ>t>u(o>=̹><=̘==rܫ=>޵>,2>_7>w>m…>@Y>/=?=8= <'Y;!;;g<g=={=g=_yN=>>> I== E=h_w>GM>O= ==B>1F>9>#D= =<t;g:g:Dٛ>S)>u[>| >fL>.<=E=t;?;3m<'Y=g=x ==n= E= <;#D9g9g:g;3m;t!:D:g9g9g;?=Q0=?>9>u[>t>m>+>T?>v>=L<;i<=R5Q=/=>==@=x <ѳ:g9g:D;;::g9g9g;=C=T>>OW>zG>>-'>4>W> =DU;i;i< {=w=+>g>w> Q=嘮=< :D9g:g:D:D:g9g9g:g#D>_7>,>K!>t#4>;=t=g:D;3m<ѳ=VJ<==> >k= =M<:D9g9g9g9g9g9g9g;=C=L>%O6>F7>M>3ټ>v>=,;?9g9g;m< ==ȃ==yN==p5<ѳ9g9g:t=c=o=L=_H= {=h_<9g9g;m<ܫ=h_==d=a<_:t9g9g:t >1>F7>3ټ>= %<t> )=L=d< ;;=<;D=g=5>i;>l{>8>>>Y<>\=C*>.>.~G>=n=;D<:t9g:D;?<=OW>f>I@>S)>7*>޵=,<^2>f>> >Ow>>-y ==c=w=>&>^t>*z> >|Z>;D==M+F|>w>">k5r>+-H==!:K<ѳ= =n>&>>/??G?{>'>U=OW=)d!=a>>C(.>>̙><>>|>)"= E< ;!<}<=M+>{>P*>>>u[>::k=yN=;D<==~>%>w>V?*?!kF?D> >Z=J<=`~=>%?>F|>><>D>>i;>Dn=a=3m<ѳ<<==ʎ>.~G>g >u >_7>%==<g<*=n>>H>L>?g1>Y> >@Y=d=x =,=9>-7>">eh>>9>>>OW=i=C<<!7>3W>$̙===<;<;D=t!=~>Dn>>Gn>;>>cψ>==YY=3m=n> >F7>g>">Q>`~>İ==g>.<>T?>W><~>-'=:= >.<>F7>?C>==3mV==51=3m;i:g:D9g9g9g9g:C:g:g:;<+n{>>> ==K<+n:g9g9g;<ѳ===g<;D:g9g9g9g:g:g9g9g9g9g;?= :=i\> =>3ټ>WOw>]'>C>7=<_;3m:g;dt<ѳ=22==?==T?<t:D9g9g:g;g;g:g9g9g9g;=-y =̘> >Y>{>66>k^>22=yN=;n:</=(==ʎ=9=J<==?/<#D9g9g9g:D;t!;dt:g9g9g9g;3m=t=͝>$̙>^t>>>p>::k=嘮=;=:td>C(.>g$>m…>V> =OW<:g:g;J= ==E=Z=07=n={O>+>0>==M+;g9g9g:DT===,;m:t;dt;i<===)d!=<<(:9g9g9g:g:D<;D=&Tq=g==]n=g<:D9g:D;<=ѳ>k>>OW>W)>>> =<\i;?g=܊=:*< ;:g;g<t=p5=?>Q0>>q$>TP>@=Ϩ><<<t=XT=> >%>.~G>=嘮=g<_;:g:D;m<=zG=T>q$>(>s=+=C<;D:D;m==~G>>Z>f>C>Cz>l=<<g(^>\>qp>^t>(=_(=J {<\i;g;t!<g<={=>%>1>k==f#D><>> >^>m?>@=;!<=p5=07>1L>q> >y>C>*z={<;dt;<(<=)d!=n>w>M> ==A<9g:==>s>oJ]>>#>d>B=yN=$I<<=)d!=>>\(O>w2>k^>;=2=f%O6>U>_7>?/> == ;?;g<==>)d!>A>;?>u=_=c;n:D:D:D::g;dt<==c{>=*==[db<:D:C<=;D==G> TP>+=@=XT<(:g:g9g9g9g9g9g9g:D;g:D:g:g:g:g:g;n=,=qp==/==7X<;3m9g9g;n<=x =o=J=n=`~ =>k> >^= {=C"?>@Y>C>, >{=<ѳ:g9g:D<;D= :==/=x=VJ<<:9g9g9g:g:D:g9g9g9g:D<=d=2>']>D>KR>1F>{y==-'>,2>0>==WOw;i9g9g:g<=*==o=O6=| =;9g9g9g9g9g9g:g<==u[=ʎ=>g==:*d>T=?V==U=]n=0=n=9<:g9g:g;<=g<<;9g9g9g9g;g<=0=rܫ=rܫ=)d!=!= E=_yN>+-H>=:== <#D;g:g9g:D{>%>4\Y>%O6=ܫ==<#D;g:g:g;#D<ѳ=*=UE=/<=:g9g9g;?=c=m=={=c<:g9g9g>%`>(=n=N f<<g;t!:D:g:D<<<_<t;=9g9g:D<t= :=(^<B>!7>=ȃ=(:C9g9g9g9g9g9g9g9g9g9g:C;t! >*>;D>']=O=K:g9g9g9g:g:g:g9g9g9g:g;g<;D=g=a==| =c;!:g:D<;D= :=:K>T>k>*>=Ow=(^:g9g9g9g:g:D:D:g:C9g9g9g:g:;?d> ==/=A<t;:D:D;!<*=*i\=J {=(^<;m9g9g<g=L=Σ==a=<_;3m:g;t!==>2b>AV>`=:>WOw>'I==x='>%O6>~'=O=K;J:g;m=C=J>8>u[>d>4>XT><=^=L<_,>d>/==;:g9g9g9g:gٛ>/B3> ==h_@Y> >>d>^>=5=L=<<ѳ=XT=y-> d>&>d=*=%O6;dt:g9g:g<*=> >f>'=̘=3m<'Y:g:g=g=ȃ>%>^t>z>m6>2ԁ=yN=}=0\=E"=?<:g9g9g9gٛ>)d!>&==?e=8=<(;?;t!s>>d=='Y;3m9g9g9g9g9g9g9g9g9g9g:g;#D<=VJ<= E=d=n={<t;=;!7>Q>g >P*>=t;!9g9g9g:g:C:g9g9g9g:g;mT=…=i\=;n;m<=T>Q>::k>n>|>nq>+n=/<=9g9g9g:g:D:D:D:g9g9g9g:g;n<=rܫ= {=Z==<_;g;t!<=u[=?>->`>u(o>]'> v_= Z<}9g9g:g;#D;;;g:D9g9g9g:g;g;J=g=,=o==H >,2>;>']=yn=dt;?9g9g9g:g;dt;t;;i;dt:g9g9g9g9g:g:D;n<ѳ<m<=yn=G=E=5=J {V=?=o=</;dt<(==> )>0 >T?>U>->Q=y =^t=4>Qqe>>>=5<;g<ѳ=>R>F7>>>>E>4\Y=!==| =,s=)d!==07>>%O6>GM==e!:K>nq>I>qp>/B3=d= ;k>s>> {>]>̙>g >i;=%=D=rܫ=x =0>M>LW?>g >WOw>!{=n<;!::g9g;g=>*>w>o>z3>;?= =%O6;!<=>%`>{G>>U>a>>k^>i;==Tq=x =g=>'I>_>{>n>4\Y=9= :;!:D9g9g;dt=m…>s>Xc>rZ>^t>$̙==;!;?=h_>>Z>>Gn>>>?C== ==?/=M+=n>>Ci}>^t>P*> v_=n<5Q;t!:g9g:g==%> %>/>!:K==p5<;n:gİ>S)>s>gs>2ԁ====C<5Q<=dt=> )>Q>'=T=F;9g9g9g;?=#D=D=y-==;DV=O=dB=I=a=)d!< f<'Y;m<=(^=g=5== :;n9g9g;O> %>=d=XT<;D:D:g:t<==_yN=/= =+=mR>'I>3>"?=[=x <+n:g:D<=)d!=?> >>s==1;3m9g9g9g9g:g;dt<#D<ѳ<g>$̙>.<>as=a=J {;?:g;n<=p5=E>>'I>!:K==p5;9g9g9g9g:g;t!;<'Y<;;g;T?;dt;?<=R5Q=U>޵> )=…=<:D:g;J>>i;==22;dt9g9g9g:g:t;;n;;dt;3m;#D;g;!<ѳ==T=^=a<;#D9g9g;=y-=m>%>2ԁ>!:K=07=a;t9g9g9g9g:g9g9g9g9g9g:t<ѳ=,=i>޵=yn==5 E>k^>rJ>k5r>)d!=OW>>-'= =\id>S{>q>>P\>F|=嘮=c:g9g:g;dt;m;;:g9g9g9g:g;dt<=>{>>==C;J;?<_==> >H> >#>|Z>>OW=yN= :D9g9g:D;n;J;!;;g:C9g9g:g:D;i=8=Y=:= = %<:D:D>k>LW?>^2>H>u= >> ==ȃ=8*z>İ>&> )=E=i;=N f=<<*= 5=L=K= 5<5Q<};J;g:g9g:g:C;dt==U>B>.<>%>V=<*;?<==w=t>"?>WOw>,>+>f\>'=[= E==c9=a=x=51=T=9=y-= =R"#>n>>zG>>=_=&Tq<==51>`>g >KB>H>ȃ>>x>'== f==#=Ow>>7l >O%>@Y>d=Y=(<;!;g:DV>l>A>>i>^=p51L>>BT>>m> >V>KS>d=O==> >@Y>}>c>?e>V>4=x ^t>W>̙>V>n>i;=T.<>>Эy?N?v>ض>>M+>==n=Ɉ>d>Rv>)3>V>W>r\>ٛ=t<m<'Y:g:g;n=>;>%?>>H>N f>@=h_<<=M>s>u[>]>א>)> >66>'Y=ܫ=ȃ==>g>>>z3><>>Z>"=T<;g9g9g:D=22>>B>\;>Jg>B=m=&Tq<< ===ʎ>*( >q!>w>8>j>']==51=I=B=;D=51>d>: >S)>G~h>q$==?=/='Y{y>GM><>{===rܫ=<<ѳ=)d!=O6=t>{=[=<:D9g9g;t< f==<t>-'> D=Ϩ>=p5w>7>IG>4\Y>=i\=<'Y<<===yn>w>+=m<5Q:D:g9g9g9g;g<;D<_==!:K=g)p>^>pI>WOw>8=n=%>>>1F>Y= ;?9g9g9g9g:g< =<5Q=t="?=g'I>^2>nq>T?>&= =g )>3ټ>N>C>ٛ=n<(9g9g9g;dt<ѳ<= ?e>0>@>)"=yn=u[<=#r>951>.~G><=R;9g9g:g;t<ѳ= = E< f:C9g9g:D;<R<(;?;3m:t:D:g:D;?Q>%>u=J<=K;?9g9g9g:g:g9g9g9g9g:g<=f=J<>== E=#D)p>\i>pO>Z>q$= E >8>GM=07=qp<<;D<ܫ=:*>>F7>}RF>?e>|M >>=9= ::g9g9g9g:D;;i;;3m:D9g9g9g9g:gv>>f>GM=*=\i<'Y;<=T>{>@Y>u >%?>u(o>7= =!:K;3m9g9g9g:D;<<(;?;dt:g9g9g9g:C;g=3m=̘>V=yn=y =g;3m:g<(=*i\=>&>DU>XT>DU>B=v>>> )=Ϩ>=f=i\=K<=;t!< =<m=T=Ɉ>/>ٛ> 5>-'=5=2==M+=)d!=.~G=Z_(=p5=XT= :<>;>1F>d=2=;J<=,=t>!{>XT>@>>u >::k>w=T==5=t=Tq=n=5Q=Ϩ>=2=qp=c<'I>u(o>)3>g>KS>T=?/>cL>i>s>Ϩ>>c>?e>@Y>i;=[=*==嘮>d>0>M>@>O=o=0<_<<'Y;D<t=̘>W>է>̙>>td>=zG<ѳ=: =d>->>ê>hw?k>0>Tq>h%>!:K> Q=嘮=t> >>OW> >S >>_7>w=c=<;?:t< ==̘>^t>+>>>t!>=R)d!>{y>,"?]?Z>'>Y>i>f>%?=Y=Ow>>S)>>Z>>~>%= Z=%O6<ѳ:D:g;3m=t>;?>k>> >Q0>*z==R==o>>h%>>d>2>>d>>OW>v>=T= Z=>/>B>">2b>>k5r>=\>C(.>^>M+>`=n=Z_(<ܫ<̹=dt=Ow>!7>g$>8>>u[>8>=n=t=]n=[db=>>F|>ba>Z>.~G=yN=t;?:g9g;?=_yN= > ===a=<=<#D>{y>>&> )=d==s=&Tq<*<=a=>/>>"=:=)d!;9g9g9g;?<_=0=*i\=<>>=07=D=(<tV>L>^t>F|>İ=n=3m<k>~'> =Y<;3m:C9g9g9g;g>OW>vn>f>nE">-y ==Z_(<_==K=>/>1F>L>@>-'=< =:g9g9g:g>>y>q>nq>+=d=I@<=,s==ȃ>N>DU>_7>T?>#r=<;D:g9g9g;!< =3m=C=t>M+>_7>Ci}>d=̙=R I>0>H>>>-'=;9g9g9g;<=R==g<;:g:g:<\i= 5=>>>*z=/=,s޵>'>v>=jT= =<:D9g9g9g9g9g:g9g9g9g9g9g9g:D< ==:= {==</;m<'Y=c=n>q>)p>;?>'I==T<(9g9g9g9g:g:D:D:D:g9g9g9g9g;t!=Z_(= > >=y-=?/<\i;D %>KR>]u>Jg>GM=<:g9g9g:g:D;t!;;t!:t:D9g9g9g9g:t=XT=>Y>v>==,s;!:D;J=#D=U> :>D>XT>EA>GM=J<;g:g9g:g:D;g;;?;?;=:g9g9g9g9g >.~G>"= =x<;:g9g9g:g:t;n;!<g;:D9g9g9g;3m==m…=a= x<:g9g:g;=,==E=Z= =o=B<;n:g9g9g:g;g;n;?;t!:g9g9g9g:g<g >d>=~=n= =a=^t=p5=,==YY=R<<;D<;!;?;?<;D<(<==XT=Ɉ>w>!:K>%`>= %<; I>3ټ>^t>n>Y>+> ==Ow===o== E== :=^t='Y=g>G~h>i>^t>+=E=c;t<*=> >@~>">$>>q$>{>4\Y>^=[==ȃ=*=Z>(>%`>=i==!:K(>u[>.n>I>KR==0~'>`>k>̘>l>">+>Y>>q=嘮=Ϩ>=:>>N>u(o>l:>5 E==x = +>|M >8> >I@==^t< f=(^=51>s>_7>>K>ܪ>¥>+>V>B=2=:=n=[>,2>nE">#>H>Z>w=== d>Z_(>w>g >+=a=x =c=&Tq=>޵>;D>U>M> >s>y>)d!=G= {===_(>%O6>_7>rJ>z3>N>/=qp<t;9g9g9gٛ>4 >(>*z= =g$=c= ==m=%>d>;?>e>n>S{> = =O6={=,s=*i\=>>.~G>J {>Dn>/=:kq>== Z=rܫ=-y <<=w>=Y= ;g9g9g:g;<t==(^=<_<t<(;?<===i===*==w=)d!< <=;J;JY>>w=;=:*=>@Y>N>8/>^=?=DU< <*<=3m==O> ==.~G>i>x>]'>!:K=ӽ)=`~= ѳ=c=I@==t4>%>>OW>.<>=n<#D:D9g9g:g<\i=c=K=N f=t<ѳ;3m:C:g;= ѳ=*>/>lJ>|M >_>!:K=͝=L= =1=T=51><>8qD>Pl*>C(.>7=O>AV>T?>::k> )=?= <=?/=R=/>{>&Tq>;?>-y >%?=qp;J:g9g9g;<==(^= <t;9g9g:g<=*=>>^>{=?=0/=T=/<:D9g:g<#D<<<v>>-'> = {=?/;?:g9g9g:g:g:D:D:g:g:g9g9g9g<;D=T=~==x <5Q;n:g:g;!=7X=>4>> I=Ϩ>=XT<;D:D:C9g:g:g:D:D;g;t!;3m:g9g9g;g==/== 5{=~==F<(:g;<ܫ=g=ʎ> ?e>>+4>!:K> =J<= E=~G=====s=f==w> v_>=[=c>;?>gs>z3>k>>>==J<===*==ʎ= {=2==3m v_>;>.~G> ==<;<=:*=07>%>_>O>V>8>f>%>{=嘮=+=*= =Ow> >q$>Q=T=:*=<<:D9g:g<=ʎ>!:K>>>.<> ==c%>_>ѳ>>>a&>k=T=0==M==T>"#>@j>@~>GM=%=(^ >"#>`===Cnv>>>gs>vn>ba>-y =[=51= %={=_yN=Y=:> >>OW>:X>~'==;:g9g9g:g=c=?=[=T==N=F==g=_yN==E">d>> v_>d=J<==UE=<* Q>>=?=p5<\i:g9g9g<=*i\===%`==R5Q= :<*>%>~'=_= %=3m<_^>8>E2>-y >= Z=;D=,<_= =N f=51>/><> O== 5<'Y:D9g9g9g:g<((>;?>H>.<>*z=̙= 5<_= x=;D==>>%>L=yN=I@L>%>=O=t!>N> ==<g:g9g9g;g<=g= <==d=R=s=D==n==g=K=c<_(<ѳ;!;3m;3m:t:g;3m<5Q===a=͝=< {:D9g;dt<ܫ==ʎ>>7>>-'=O==n====?==M=x=x =A=<;n;g:g9g:g<ѳ=T=ʎ=*=Ow==g;:g<(=22==yn>a>-[>9>*> TP=Ɉ= = ==a==x==ʎ=dB=x=5B>+>3>$̙>{= E=:K===_yN=Q0===Ϩ>=2=~=Y=f<;3m9g9g9g9g:g<_=ѳ==_==Q0v>>>>@=*=w=a=J {='Y=='Y=:*=d>V==n=a<t:g9g9g< ==(^==t=,=?/=<<==/=OW=d=T===<~<m<> =2=U=| =c< =[=/=XTd>ٛ>=:==f= 5<>-y >G~h>>>GM=嘮=x=0===K=a==?=~=*==<'Y:t:< >3ټ>S{>Jg>%>==?/=(=!:K=x =o=> I>-'>=ȃ=VJ<<<;!<;D>2Q>0>&=ܫ=?=C=c=&Tq=w==>4>> I=Ow=| =,<(<`~<<#D{y> ===w= :ٛ>.<>']> ?e=~=C<<<='Y=m=o==?=L<<(:g9g9g;g<<=_yN=Ϩ>> ?e><=$=<;i<==h_=>%>d>> >N f> ==<_==T=s>g>İ>a=~=<ܫ;J:g:g<(<=g=M>>'I>.<>== :T>Jg>>>>>.<==VJ<=*=\i==G>$J>KR>V>;?> =c<5Q<(;?<= >->8qD>=T=0Q0>է>]>>ѳ>@j==nv=R5Q==y->R>1L>`>qp>[>&Tq=5Q=: B>!:K>d==t;J;;=c=5Q>.~G>| >>>u(o>1 Z==?=qp=*z=_>T>&Tq>R5Q>d>T?>']=a=dt=cg>->P*>N>0 >^= f=?e=J {=VJ<=5=E> >(>9v>->d=T=UE=c<_(<;D;!;J<'Y >@=ʎ=zG= <<=:t:D;3m;t!;?<<<v>><==a<;t!:D;g;?<\i<==<g>R==u[<;D:D:D;t!<g<=<ܫ=(^=C=)d!<;dt9g9g:D<(====ȃ=<*:D9g:g;dt;t{>>x==n>M+>w>w>G> =<<'Y< =w=dB=> >޵=OW=(^<'Y:D9g9g;g<'Y<ܫ=y >'>2ԁ><0> v_==,s{y>U>ٛ>0>>f>I@=T=t< f=J {=D> I>1L>WOw>^2><~>T=a1L>`~>j>M+>=ѳs>E>>07>6>s>g>d=*z=-y ==魚>$̙>bM>D>>Ȅ>Dn==: 7l >i>u(o>Y<>=D<*!7>D>ȤJ>T>\>@>{y>=_==̙=~>+4>t#4><>>S >i>~'== <<`>L>Z>AV>w=x<t;!<==u[>^>nE">R>;p>̘>^>nq>ٛ=:=5=Tq=>/>^t>>u>o>`>==B= <5Q<td>k>d==K'I>oJ]>>>n>2>====dB>+>,o>\(O>qp>c9>6%>T==: = w>>q$>=:=~=='Y==,==m>>&">/>%?==C<<;t!:D:g:D;t!<==R=< <t<;t;!<'Y<t=;D===n=a=| =6>f> =Y='Ya>22>::k>!7=$=C<'Y;g:t;!<=(^=x =:*=~2=(^GM>3W>;?>!7==&Tq;n:D;g<<_(=Q0==n=5=i<:D9g9g9g9g;g< f==>>> =<:g:g:D;? TP>']>+4>u=d=(^:t:D> O== >ba>(>N>x>%= <=< ==R=x=a>>>`=ܫ=x L>F|>P*>1==VJ< >ba>o>9F>ޔ>>| >{='YV>M+>u[> >`>ٛ=%`<ѳ::C;D>u >~>cL>#r=y #D>m>z? ? .n>}B>k>%===%O6=O>T>7>~W>C>#>a>h>w=m…KS>}RF>f>pI>.~G=n=g*( > >D? ?^>*>U>2ԁ==g=>޵>@Y>>̙><>I>I>*==c<ѳ<*>`>oJ]>W>=<;!<t==>B>">>>>ď_> >']=O=5=:K=?>*( >u >>̙>}>{G>'I==?/<<<ѳk>.<>k=嘮=p5<ѳ;n<=(^= >7X>q>U>>>C> =ʎ===T=OW> I>>OW>t#4>P\>| >KR> =5=0<L>0>/>f>===)d!=R=w=U>>!{>2>*i\> =*=C< f<ѳ:t:g:g:C:D<'Y<ܫ= {= = %=<:g9g:g;2b>.~G>4\Y> v_=?=qp<ѳ;3m:g;gQ>/>S{>Y>@>O=<t;t!:D<(<_=^t=5==i\={<_;g9g9g9g9g9g:g<\i=m>g>1F>V>\>C(.>=Y&>8qD>?/>&"==22;3m:g:g;<*=rܫ==ȃ=n= %='Y;i9g9g;J=Q0= {>{>4=a={<(9g9g9g:g<=c=| ==t=h_<5Q:t9g9g:D<t=(^=7X<ܫ;9g9g:g;?>%>s=d=)d!;3m:D<f>M+>>>xyn>'=2 D>>=嘮=i^>2ԁ>>>"==+n<;<ѳ=C=t>C(.>>͝>զ>%>z>V= <\i==OW>>@>hg>t#4>VJ<>~'=<}:D9g:D;i0 >cL>nE">S)>= > >,">1?>u>>=h_*( >oJ]>-'>>w>^2> ?e=R5Q<g:D;<#D<=Ow>8/>lJ>w>_yN> =i\<;?-'>>FH?,?`>0>>'I=Tq=,s=i=9>-[>{>F>Y>V>{m>!:K=<;?<'Y<;DL>N f>]u>D>d=<;3m<;D=qp>*z>g$><>z>;> >">=51=a=]n=>`>b>CY>>է>n>=D=gw>L>d==;D<'Y:D;= =n> 5>rZ>]>>~W>22=2=n=C= :==Z>*( >a>{m>nq>>OW==w<* I>>!{>==/=qp< f<`~=*=:K=:>x>%>k=2=a=g<;?:g:g9g9g9g;gV=yN==N;!:g9g9g:D;!<~'>/B3>4> =J]=x <;g:g:>1L>U>Z>AV>-'=<;dt:g;?<=XT=:K===,=g;t!9g9g9g9g9g:C<==>>5a>Y>_7>F7>:=5<ѳ::g;i<ܫ==~=:==D=3m<9g9g9g9g9g;=: =t>L>>>B">*==_yN;?:g9g;t!<=m…=2=ʎ===3m<9g9g<'Y=n=E> >==<(:g9g9g:g;J= =T=5==t!<;T?9g9g;t!f=:=5< f:D:g;g;!<==<~= :<;dt9g9g9g9g:g;i= 5==t=h_<;:C9g:;!>N>c >C(.> =rܫ;?;3m<'Y==R==t=E= %=c<:g9g9g:g;g==~>>=:=<;g:g;t!>i>KB>I>>AV=OW>.~G>8qD>=i=;D<:g9g:g:D<=rܫ>V>)p>3ټ>=E=*i\;t:g;?=c= E>+-H>a>s>+>>p=:< f;?<=>,>3ټ>ilK>zG>dt>'I=ȃ=g;dt9g:g;t!>0>@Y>'I=07=L<:C;?='Y=>4>>ƺ|>΂\>]>o==(^{>@>z3>> >Dn==B;:g:D;< ===ʎ>~'>$̙>==%O6;9g:t==>&> >̙>>w>@j= =R5Q<ѳ(>d>~>n>:{==3m;i:D:D;#D;t!;!==2=J<=Y=rܫ<:t9g:g"#>V>^t>::k> ==: >)p>C(.>8>= Zg=yn=/=(^;:g9g9g9g9g9g9g9g:D;g:D:D:D;g;g:D;<=C=T=T=a=,s< f;n:g:g;dt<=P*=d=/==t;?9g9g9g9g9g9g:g;3m;t!;g:D;J<==R<g>>> I=n=?/>8qD>>>&=={<ѳ:D9g:D 5>?C>BdB>+-H>={ >%>)d!><=5Q=,s;9g9g:g<==:*=n=̙=T=R;n9g9g;!=: ==$=5==h_<\i:g9g:t<t=4=x =w=3m<:D9g9g;g<t== 5/=07=ѳ<t:g:g:g;dt<ѳ= 5=R5Q=<~<3>L>,2= = :t:g:<;D=3m==ʎ=0=y =C<ѳ;#D9g9g9g:g:DL>h%>}>WOw> =;D;dt:g:t<=t!=*><>GM> ==)d!;:g9g9g:g:t>ilK>z3>S)>=K;:g:D>*>=T=x />A> =Ϩ>=3m< =:g:g;=/=J> )>><==f<9g9g9g9g:g:g;<=t= <ѳ;dt9g:g<=R5Q=?=Ow=07==R= =;J:g9g:D< {=R=̘=_H==Y= ѳ;g9g9g9g9g9g9g9g:g;dt;::g9g9g9g9g:D TP>=5=/=R;!:g9g9g:D<'Y<ܫ= 5=<;m9g9g:g<R=t=̙=p>">i;===;?9g9g;g<}==VJ<=L= <;D:g9g9g;g<=x ==d== f=zG<t:D9g9g:Dv>=d=M< f;?:t:g9g9g:g;3m<#DT>d>{=Y<;m:t:D:g9g:g;=qp<;t!:D:g:g9g:C:D;D<'Y;!:D9g9g9g;3m^>R=n=J {<>;?>1> ==x<%>B">;?>^== I>k>a=a=1<=g> I==޵= =d< {:D9g9g9g:g:g:g9g9g9g9g9g9g;'>*( >(5> ===R5Q='Y<<ѳ~'>=~G< f:D9g:g<t=>g>51>^t>_>0 =*=T=L= 5<*<==g=^t=Tq=ʎ=/=x <;3m:g9g9g:=> >!{>==c;9g:g<ѳ=T>{>::k>cψ>d>6%=07=u[=;D=<<= x=/=5Q>=d=s=g;t!:g9g9g:=b=O>O>g= Z= ;J:g:C;J=/=U>~'>4>2ԁ>==+n= R=$={== %< ;g9g9g9g9g:C:g:g9g9g9g;n<<=;:g9g9g;< f=x = E===Z_(d>+-H>.~G>=:=^=k=;D=(<=g==(^=/=<ѳ;:t:g:g9g9g;={>{>> I=<:9g:D.<>\i>g$>A> ====b="?<ܫ==a=D=~h=/=w >!7>-'=ʎ='Y;?:g:D<=| =>->_>k5r>C> =#={=K=<===>>{=~=c;:D9g9g:D=Z_(=?>d> ==3m >-[>22>=ʎ=rܫ=3m=<ѳ<;D{=2==g;3m9g9g:g<=i;== =g=*<ѳ;:g;dt<ѳ=K==ӽ)==X=]n=R<*= E=a<}:g9g9g9g9g9g9g9g9g9g< =<*=51=rܫ<:D9g9g9g9g9g9g9g9g9g9g:d>>R==D=h_=K=(^==c==g<<(d>.~G>>OW>%==O6=g=k=0==g=*=h_===R=&TqV=*=?=c;t:g:D<>.~G>>>$̙=?=t=qp=DU= <<5Q=?/=n==d=x<;D:g9g:g=/=;D >-'=m=s=YY= 5<_{===XT=J {=?/=/=<_{> :>-'=={ >!{>8>=̙= 5<<(Q==t=g<;t!:t;;;D< > = =5=: <<<;D<=C=/====s=<3m;i;;3m::;3m;t<<;9g9g:g;dt;!d>.<>, >R=R;J:g:g;޵=:=^t7l >i>gs>/=%=;i;<==x=>>>/=2= ;?:g:g:;< ==g=>T> = =s@>qp>pI>;=5=rܫ<;!!:K>/B3> 5=?=h_<;;g;3m;t!;mf>A>@j>8=yN=:*= İ>']>ٛ=?=u[\>޵=yN=D=h_< ;!;!v>==51=0<=;!;m:g:g:g:g:g;n >d==h_;9g9g:t!{>WOw>^2>-=ʎ<ѳ:C:g;<=,===Z==L<:g9g9g9g:D;?==> TP>=yn=R<}:D:g;3m<ѳ=T>+>V>)3>8>dR%> =/;:;?==>>']>1L>=T=)d!;n:g9g:g:D;= =ȃ>>GM>g=<(:D:g:D >]'><>m>hg>=,d>9v>M+>9> O==<ѳ;dt:g:g:D;3m/B3>cL>g >9===<(<==?>{>'I>>OW>->v>=^^>d=t4==T= ;i;<=e=n>g>i;> I=̘=R5Q<=;m;g:C9g:g9g9g;dtk>^=*={;i9g9g:D;J-'>M>[>0=%g=E=^t<;D:g9g:g@Y>@>?e>`>{y=c;g:g;#D>']>2b=ȃ=R:t9g9g9g:C:D<=/=> ==wD>f>?e>`=:> =VJ<>*>?C>+>Q=rܫ<:g9g9g:g:g;m=,s====+n<(9g9g9g;?= 5=/>>P*>W)>+=a=rܫ&>+4> v_=d=u[T=E= %=Q0<:D:g<R=t=?=>g==2= :;J:g9g9g9g9g9g9g:g;n;?;3m:g9g9g9g9g:t<='Y=s={=[db=,s=J<=<*;?:g9g9g;3m==T<t;g9g9g:g;t!<= :=K=C=g;!:g9g9g;n===ȃ=+=?=t;J:g9g9g:D<;D=R=;D=5< ;J9g9g;<=,s=7X<;J:g9g9g;gx>"#> =<g9g9g:g;n<=p5=t==K<}:D9g9g9g;dt===:K=t!<;g9g9g9g;<=a>>=̹>N f>&=:kV>:X>IG>!:K=X<:D9g:C;J='Y= =>w=m=<_(:D9g9g9g9g:g<#D=&Tq=e=,s<;3m9g9g:D<ѳ=?/=> I>==R<_;9g9g;#D<_=d=T>T=07=5=r2=b+=0N\>YD>\a>=>=\=t=2C<մP<'<X;x599:c:c:;Gu;2<>CsP>k>pj>T^c>.{==b=G<=X=Si<,< # >d|> > >Q> [>r2>0N\=i=t=*<59>U>Җ>G<>[E>fc>.u===C=pj= Za>T^c>9>a>d>nj>>J>fc>=2O=k%<<;5:999:c:c:;x5;cBb>X>N\>>>V>>> N==b=r2="#<C&>q>*?x??Ε>s>>>/jh=@==<';u:999:c:c:c:;Gu<# 6>:>>2O>B>q>=7>=q=\)=iK>=x5+ښ>ɯ>Y?U?$? >>>s>+ښ=\=8<,<;n:999:c:c::;GuLZ>>j>>T^c># =G=G<={E=5}>o>kL>ޛ>>L">sP>j>DWC> N=jh=`c<Δ/jh>6>_==G<={E=<ŭ95>}>FX>> [>|p2>@=Ͱ=X=>(J>=>Bb>6 >@= =N\=X=0N\<51I>hgJ>ɯ>U>P\>_=={E=-0>{E>5>T>;>>*>u>5= =g=*>fc>1k>M?C?-?3-?-?y>i>>0N\=$=X=2C>:>`c>r>o>Sv>3l0> g=Ͱ=_=k%=*<< r>?#?1N?BV_?O#,?O\)?C?.n?9>R>\a>x5=N\=8='f<մP< z>'f>)h>=֘D=V=u=֘D=>/jh>b>@>5> ><>>?><>_>-0=K>=f=u=# :>I? vn?64?N?9?Y?^)?Y`?LK?3l0? u>o>o>!+0=\=$=^=<մP>:>R$>Z >G>12O> B= =K>=,>!)>Q@>B>Đ@>M???>>c><>*L>hgJ>&=\=='f]E>Y??@8?V ?^U?\?Ry?@8?'W>5m>>^)>ѳ=@=z=r2=0N\=< Za>8Q>^>s>tl>c><ŭ> ===>(J>_>(>ԗ`?i?$?^?_G?_G?BV?>U > >>0U=q=r2=x5]E>ìM?{S?9?M>?Q$?KZa?;SA?&ff?Y>~>U>3l0==5=@=pj=<ŭ='= <,<,=_=K=X==>}>=>c>q>p>YD>54> t==$=G>>CV>j>9o>?? ?BV?be?&?*/1? մ?t>I>qN>=B=0N\=>E>?FX?0?2k?(G?>c>C>wv>1I====8=W|7=*===x5=='f=^=g==ޛ>>1I>CsP>PΕ>Gu>6>=@==G<==$>_>M>X>>#>մ>? >U?O?+?(.M?v>>vn>=C=CI]>hD>jh>ޛ>>P>}>9>ɯ>F$>{=\=b==iK>=CI=# =x5= = = N=='f=R$=8=b=q=gJ> N>b>!)>{===x5=r2=iK>=wv=g==>0N\>]E>U>"H>>>?Ar??Y>>~8>=g=,<=>>]E>t>>[E>tl>>>=ݷ=#=8=I<='f=@(>J>eIv>Sv>(=<=s=<Δ< <'=*=8<Δ=@U{=n= N=pj=iK>=I<='f=X<{>O>!)>==J=ep=x5'f>9>>>=7>6>(>==\=N\=cI=B=8=l =s=N==Ƒ$=֘D=G== >> >U>=p=q=b==k%=R$=CI=2C=0N\=5=CI=iK>=g==G>-0>ep><>K>g>>>f-j>6=K>= =^=@<$ N>L>>9>Q>o>> [>W>_>=7>/jh>U> g==(=ݷ> N>1I>M>pj>>q>w}>r>qN>eIv>D=>.u>=$=N\=cI=C==n==q=>-0>T^c>=q>>?r?U>>W>}>f> >aG>===,<,6><>>ޜ?y?`+??sP>Ṩ>>>ɯ>q>_>K>>>>>b+>t>>>>Q>>a>WC>9>^>>aG>6>==֘D=@=@=>>/b>g]> >=?V_?(?;;?BV_?=p?6?12O?+?>>9>o>B=q==Bb='<,<մP<@U{>O>? c?7v?>Ƒ?ݷ>>>}>#>t>z>>Q>ါ? ?b? մ?M?8>A>R>|>yR]>CV>(J> [=E==>>1I>gQ>H >c?Ar?6?Ry?b#?ee?b֘?`??^O?W?CI?'W>>>]E>= =r2=CI= G<<,8>G<>U ?.{?C?O\)?Ox?Eɯ?85m?$e?>]>ͱ>~>>>>ښ>:>??+ښ?/M?$e? ^>>> >o>b>==2>>)h>>?rl?+?IY}?b+?ojh?u?v?u?s?kښ?_ ?=p?>Ͱ>W>).=q==^=0N\= N<մPx5>ɯ>s?"?;>?HY ?L?DWC?9Z?)5?/>>%>Y>>>>,>P$>%? ??#e? =>5m>~>>q>=>==֘D=@=@=p><>0N\>o>I>a?(G?Ft?a?nMx?y5?~8??~?s?bd?C?'>_G>vn>0N\= =[=ep=0N\= 9>e>ޜ?a?-?22?0Y?(?1>T%>|7>Đ@>n>u>B><>ɯ>>{>Y>c>ݸ>>4>V>L>-0==q=G<=C=@=C=J=<=>8>ʓ>8>w}>O===K=U<28Q>^>p>ܚ>>p>p>H>>e>>[>ɯ>v4>]E>>>26>26>J>r>>r>Bb>}=K>==B=iK>=7m='f='f=2C=W|7=8=cI=ݷ>3l0>9>o>d? 3?9T?M??Z}?_?^)?O\)?5?/>!>j>=7==n=iK>=# <226>T^c>yR]>[>>j>qN>Si>F$>=>7>).> N=G=ŭ==N\=Ƒ$=@=b==N=r2=<ŭ<,<ŭ>Q>B>~>M?#?!?*h.?$e?>5>2O>tޜ>54==cI=k%=>O>'f>>= =|==\=ښ=N=`c=).=U=n== N_>=7>k>N>>9>>#>ep>-0==6=X=E1<,=C==> g>B>'f>==N\=X=`c='f<w>(`7>96>RA>j>>r>>>>!? ?0su?GnN?*?T?M?$?;d?.B?U8>q>ۿf>%>[>e> W>e2>GI>4> =|= =.=p=U =,=S >;>>F> ==ջ=7=%=|J=k =R8=?=.=.>0}>A>^ >z(>BR>b?!?ǥ?*?Zj??ws?kl?X?k5?#o?> >w>$>w>nќ>J >*=h===S=[b=5n=Qp=!>V>`>==M=2===U=DZ ==e=bl=H=1z="= .!e<.%<&J<Yn<<< ݷ< ݷ< ݷ<<)<*v8 >=ċ=a_)<<<;::';*V>h>2>e1>Er=R=Er\!j>u>zY>V==Q<>>!@?>`>u>F>>Ԙ>֏>>Jq=h>X?I?&?@>>>=Er=<2<<;:::::::::;Q;Q;{;Q;Q;';Q;;<'<<j8>*l>V>>>G==7q-?:y?'7?5z?-sx?>E>8==TDY>Y>h>+>̼>==Q<{;:';<=>e1>?!~?23n?))?Pk>>PV{==qh= 2<V>5>R9>$>>T=3=IL-f>? ]?$?>2>>I!=ق=qh=_<%>kڨ>>X>*=N ="z/W#>͸>>!@>Ň >Er>C=My=h=V<*l<<;{:':<'=h=

*>R>>_>I>.=D={=%<_>8>6u>=*l={=,<>=V'==x= 2ҡ>.E><>*>NJ= =h=D= 2<Er>.>b> >>[;>Er>,M=_=%"z/>ny>(>>>a>\!j>a==2=Q= RC>>$qW>AD>e1>/V>*>8???zY>>^I=_<ڨ<:':<<<ѥ=>>e1>>?x8? ? >[>P>Ks=Dw==f= 2>-f>Ks>[y>m>>R>>My?1w?5z?F?G~?0>`>F=vV'3>>ڨ?A?(_?1 ?(?h>V>E>\!j>NJ=h=TD<>9hU>X>s>W#>>9>!>>lC?P?FX?`_?h?S?%>=[<;:':<Er<.E>?x8?'?;k?Cf ??˗?2]\?h>`>~>AD==h=_<2NJ>P>?>Z>ny>>W#>I>R>{>̼?d=?B@?cu?ny?_?6u>ҡ>NJ=23n<<::<<,M>? ?*??˗?G*l?D?8? ?>*>_h=6==' 3> >5z>F>O >O>Lh+>Ks>\!j>3>3?!f?Jq?Z*B?Mc?)_>Ï=6=<<<;Q:;a>I>H??4*?;5?8?-T?h>Dw>\!j=V=="z/<>TD>?_?*,?#u>6>==_<<;:':';<<<ѥ=^I=>`>D?n?h?P??a?>y>zY>8=ق=ny= 2<<<<ڨ=Er="=_==,=G*l=^I=h=x==R=Er==h=W#==={=i;=c =sG==>*>z/>>>rg==fҡ>>>h>!@>|>3>">>Jq=V=A=: <*l 2>X>*>>zY>|V>PV{>#!=X=A=IL<ѥ<ҡ>3>N >NJ=ق==x=23n<<2P>`>/V>P>> >AD=8=h<_)<<::::;;<<<_>M>~>ͷ>G?>lC>͸>>,M=E=<k2>xMO>sG>X>.E>Er=ق====!=>NJ>P>C>~2>?NJ?f^?*?0?'?d=>Ԙ>pp==\!j<<'::':':::;;<<<Er>_>

,M>M> >[>7>8>vV'>=V> 2=X=ق==>

O>n>?>VQ?N ?8l?I^?S?Y?P3?=o?>M>ҡ=~2= R>C>_h>T>=]=\!j= 2<_)= 2=O =q=<=6>*V>R[>>3>>~>>I >u>c>>>PV{>>Ks>*>>ck?Z>F=.E>G>EH>>cVQ>ҡ=N =TD=23n=IL=h=>h>.E>sG>_>$>">VQ>>>}>>*l>>v>9hU> 2=h=!j=>>Z*B>>Ϯ? ?2&?P?k2?w'?~??}a ?k\?B@?[>sG=ق=ny= 2<>>3>[;>l> >*=]=x=Q=^I==>>RM>I>h+>V?>͸>u>P>l`>-f>NJ=ق===*l>>F>>֐? ?1 ?Kl?a_)?ny?t?z?v?ewg??˗?>Er=6==: <ѥ<2<<;::';{<<

t^>d=>">i>>TD>~>Ԙ?? h? ]?1>u>Er>`>,==<=="=h={=ҡ=>ҡ>V;>(>??2&?Cf ?Kl?R#?Z?[͎?Ks?0X>V>Er> =N =Q= 2*V>P3>P3>,M=h==i;=IL=Q={==>0>>⮙>+>!@>Ϯ>?>NJ=*l==\!j=D=23n=,==_=23n=^I=h=>8>R>Y>??1w?]?+?28?(5?>c>t^>=N =TD=_<3n<\!j<::':<.E>x>x>>l> >9hU=^I=<<2'>\!j>I>N >׋b>>>ЪW>(>F=⮙==Q= 2>*>V=_)=N <<<<Er;;;;;;<<< >M>>5>[>Ks>NJ==ny=23nh> =I==qh=?M<ڨ<2<<;::;<<<<:<:<>=z =l=Qrv=L6=Qrv=ZD=i=l=jQ=bv=ZD=ZD=ZD=V=M==ϻ=w=i=^=_ػ=i=n>=p:=l=V=5 = s=!1=3V=7D'=$=<<މ<== s=L==r"=6==I==g=d== =?==1=ǡ=i"=i"=6=Ūl=ϻ==g=s=s{v=A<<=b=El=s{v=X=;=6=HS>>Rx>D{>I%>Rx> ;>|q=D=1,=d==q==D'=d=6==;=ɗ=ɗ=ǡ=m==1=?=V=<<`v<$=-S=d==]=q>1> ns> ns> >-S>?=,X==[= ==g==?=q=?===q==#=1=@=z =J=<<`v=?=`v=g==={==ݎ=ǡ=ó=1=s{v=s{v=s{v=s{v=x=z =z =s{v=o=k=p:=wh=?==?=s{v=U_=b<[N<`v==!1=$=w<<<`v<"RN;:{V';b<;=== =1=]==]=s=6=C= 1=l====|q=1==1==1=Ԏ==l=k=A=;'>I%>>ƻ>`> ;>=?=g>M==ɗ=1==6=>> >> >6=HS=,==@=s{v=A=IN<<$<;'>'>C_>T>[>XQ>Pw>FQ>3>':>)q>I%==={v>>>.>'>(>'>">> ====s{v=3V<<<<= `v===E===!1=N;=z =1=Ūl=>-)>3]>Tdx>j6>yB>{_>t#>d>U_>FQ>'>>=?>3>ˎ>> >'>'>&6>$>ƻ>Rx>IN=]=6S=l=A >%>B>YM'>bʽ>h3>c>\>N,>:ݸ>1==V{=V{=g==>6>(>>>>====1=s{v=4<:<<>">,ws>/iv>.X>'>>]=?===nI==Ԏ===;=q=Ԏ=]===q=D{=z =I=l=V=.X<[>I%>6=;=1=s{v=.X<<;<:rv:rv:{V'< `vˎ> s=HS==$=fdN=;'<;';dN;;fdN;;:{V';rv<><=b=A=e1=x=e1=l=p:=l=W =5 ==l=IN<<<$<;<<=ƻ=5 =A=@m=$=<<`v<"RN;rv9;dN<b=ƻ=V==|=ͅ=6=_z=?=g=6=D==g= =6=;=ƻ=,=?==ػ=?>l=L=弿=[N=RN=6=l=<=l> [>6>Lݎ>Qrv>J?S><>,ws> [>@>0d>`=_z==dN=>W">$>0d>6>4R$>)8>>1=إ=X=6=W =E<<;'<<>=E=,;=0=&?===,;=U_=z =1=;> >'>Oϑ>r>>>>i>~>c>Pw>Qrv>-r>> e >Rx>>,;>FQ>T>ZH}>X_>P>A>'>[===?=ElI%>2@>]G>>|>+>H>Rc>&>>o>I>)q>b>>E> i>/=>FQ>P>U_>T>O(>E3>-r>====V= `v>">G>n>>i>>>i>!>C>bv>> e =L=>6> ;>>">'>(>(6S>'>%>>=I=X=?=D[N=l<6<<:<<6<]>.X>N;>]G>crL>a{>U_>F>0d=Ūl=D===wI=Ūl==V{==إ=ڜD=g=g=V{===6=V=<6 > e > =L=6=إ=i=jQ=n>=s{v=wh=z =z =wh=s{v=s{v=wh=l==?=z =l=?<<<<{v<<<<'<<;'<;{V':':{V'==wh=q==ܒ=Ūl==l=U_=<`v;dN99;;rv;9;$<<`v=i=i"> e >%>'>E=HS=X=?=ARx>/=>G>G>,;> ==ˎ=U_|G>0>?>8?}>!=r"=#=}b==ϻ<<;;;;{V':{V'<<`v<<><=l=E=C 1=s{v==M{=C>>Rx>> ==q=}b=HH<<$;b:{V':;{V';$:{V':{V'<"RN<<====5 =_ػ=l==M{=[=|==l=@=x=D[N=;;<<b<<;dN;V'<<<99:{V'<=l<>=,X=M'=ó=]=RN=={==ƻ=w=6S=d=>?> > ==_=Ԏ=|q=n>=7D'>`L>:ݸ>R>ZH}>T>G>3>%>I%>0d>D{=?='=v=_z>Rx>'>6>FQ>C>4>%> =ܒ=;==U_= X<<;1>&?>N;>t#>e >>>->>>jn>Q>O(>)8>> > e >-)>,ws>G>Y>a{>`>Y>G>)8>[=g==z =?<><;<<:=M=!1="RN==;'=E=2=^==6S=މ> >->[C>>(>r>?>,>E>?>p5>GMQ>'>I%> e >M>e>-r>F>Tdx>]:>]:>U_>I>/>==M{==HH=IN<<<=== `v=l<=IN==U_=IN= ==L>>C_>lHS>>;'>>>(>D>ag>|G> V===>>B>">(>.>.>,;>'>>=]==x=3V<><<< >)8>N;>_ػ>jQ>dm>YM'>FQ>-r====Ԏ==wI=ǡ=]=ܒ=I=g==g=i"==w=}b=D[N<<<<`v >[> ns=L=1=i"=ZD=ZD=fdN=l=s{v=s{v=s{v=s{v=s{v=s{v=z =l=?=}b=s{v=V="RN<<$<$;;;dN<<<$;rv:{V';dN<<$=s{v=jQ=A=<<<;{V'=?=ˎ=wI==6===l=T=6<`v;dN9;;rv;:{V':{V'<$>0>1`">g=r"==l=@m<;<"RN;:{V';<<<<l>'>J?S>Y>U >5 > e = 1=|q=N;I%>3>N;>Tdx>J>(>==}b=7D'<[N<"RN;;Qrv;:{V'9<<<;<:=6==3V=jQ=$==g>w>w>'>%>E=?==IN=El<<$;dN:{V':{V':{V':{V':{V':{V'<,;<<:= `v=d=0=N;=x= =b=g=Q=i"=i"====Qrv== X==*-=El=r,X=|q=RN=:=?=s{v=^=<==E=!1=ƻ<=U_=0==6=z =n>=[b=N;=A=A=V=s{v==s=s=C=W =!1<<b>(>2>->%>>=>Rx==[N=]=]==l> ns>>'>(6S> [> e ==M{==l=$<:<>$>GMQ>a{>t#>tʓ>h>W>A>'>'> ;=6=V{==> e >%>5M{>F>GMQ><>(>M===ˎ=V= X<<$<$< >*>Tdx>yB>W>>>z>]G>E3>>ٌ=dN=ܒ=g=?> e >!V>/=><,>5 >(>D{=?=d=@=i=E<<`v<`v<6}>:6)>]G>vmx>~>{>di>P>4=>=i"==:=={= >?> e >D{>;'>> i=h=i"=q==M6> i>2@>8 >)8>> =D{==6=6==D{=w===M{=== =q=D{=IN=U_= `v< >w>-)>n=[N=X=c=nI>4R$>C 1>5M{>=弿=g=s{v=!1<-<b;'9< >(6S>:ݸ>->Rx===[b= `vn>B>|G>B>=6=@=c=<<7D';9<b==RN=b=?=s{v=V=(<><`v<;:;<<<-<==7D'=e1=x=?=Rx>>d>E> ==V{==]=1==i=1=]=V{=h> > >(=HS= 1=g=l=N;=<<"RN;dN;dN<<{V'<`v<`v<$6>ƻ>,ws>0d>+|> > =h=ó=q= =i=`v=1==ݎ=>?>>3=Q=Ūl===W =< >>#M> >]>== ==l=x=|D====]==ǡ=Ūl===i=s{v=A<:<`v<<<$<<"RN<"RN<;V';dN<=z = ==إ=l==;=D=?=T=M=A=A=C 1=M=U_=fdN=s{v=x=l=?=}b=s{v=W =4<<֮<n>ˎ==ǡ=]=i=d< >=HS==6=P#X=<<:{V':'<b<$<<<>;9;{V';;;;dN<<b<;<;V'<<;:{V'::';<=p:=V=A=$=d="RN=El=r,X==]=,=;'=6=s{v=M=E<6==3V=M=]:=x==g==RN= =-S=}b=e1=M=5 =!1=d=!1=A=i=z ==@=@==s{v=Qrv=<<<`v<"RN<;<:{V';dN==A=jQ=p:=ZD=2<< >==[N==p:=<<9;;rv;dN;dN<<<<;rv;;;rv;b;rv;;{V';;b<<=+|==>n> => >6====M<'=N;=}b=l=Ūl=إ=މ=V{===C==ϻ<6<"RN:{V';;;:rv999:{V';;dN<$<<b<<=A=@m=i=z ==ˎ=ˎ==s{v=El<<`v;V'9:{V'9:';;rv<<<7D'<==!1=3V=4=<><;'<b;$;;rv<<=s{v=s{v=ZD=?=<><=!1=HH=gl=r,X=s{v=x=z =x=s{v=p:=s{v=wh=IN=IN=n>=s{v=z =z =s{v=o=jQ=W =N;=A=!1<{v<;<$<,;<;rv:{V':{V';fdN;;;;;;rv<=s{v=r,X=l=fdN=ZD=ZD=e1=l=l=$=0=2=$===b=!1=*-==IN%>U >h3>ag>Q>3> e =Ūl==<<<<<>Ը>iVQ>`>>>>A>wh>5B=?==*-<`v9;<b'>wh>>>>>w>>ZH}>B=Ԏ=M<;$:{V';dN< >C_>n>>6>>z>^d>0d=?=@=0<`v:{V';';b<<<8>>>-)>I%>1=_= =M<֮<:{V';;rv<<<;dN;b;b;rv;:rv;;dN<b[>>#M>> ====iv=1==s{v=U_=0=<:<<$<7D'IN==q==>> >R>]G>c>]G>O{>EV>8 >(6S>;'=L={==}b=^=@m=<:<;<;'<;'<$>g>.>3]>2>0>/iv>6>J?S>P>]G>`I>f>dm>`I>]G>Y>N;>3]>=h=]=-S=l=M=$>&n>6>={><,>C 1>O(>^>`I>(>'>)8>->/=>3>6H>0d>#M> X='==z =U_=3V=<މ<<`v<`v>]>B>>I%>-)>%>2>2=ǡ=Ūl=ǡ=Ūl=Ūl=i"==HS=g=Ūl=H=IN=F=(<<6<;'=[b=M=]:=tʓ=6=$=?=l=2<{v<6<<<{v=ƻ="RN=ƻ<<<`v= `v=w==l>G>bv>j6>b#.>Pw> =إ=X=M<މ<"RN;dN:ݸ>D{>>r>6>>#>>V>F>C=ػ=wh<:<;dN=tʓ=wh=n>=M=!1<{v<;<<;'<`v<`v<<<{v=a'=>>>|>ݣ>̳>:>֮>ʼ>y>>7=D'=A<$;<-)>>Ԏ>~>#m>С>~>,>>>RN>T=i"=W ,;>s'>0>#>>>(,>->?}>#>i>)8==<= X=!1=.X=0=!1=<{v-)>>P>>>>>>`a>vmx>'=Q=p:?>=]=ǡ=@=N;<'<T>^d>ag>Pw>(6S>;'>[>=HS=V{=wI=,=?=jQ=I=,;=l?>'>0>2@>->%>%>2>G>>;>r>V>RN>>E>Rx>>ag>8 > e =6=[==s{v=T=<<>=6=*-=U_=n>=s{v=r,X=n>=s{v==]=6> >b>">2>U >n>[>>6h>`L>6h>>|2>R>>ݣ>>iL>+>]>>X>`7>1>=>J?S> e =]=X=@=z =V=0==,;=M=n>=x=IN=IN=}b===i"> >'>5M{>I>bʽ>`v>`L>?>ws>>6>>>#>G>>(>3>Ϧ>ƥ>>>>`>`">>#>_ػ>|G=dN==w==i=A=0=3V=J=gl=s{v=s{v=s{v=s{v=}b=D{=Ūl>>"RN>2>G>c>->>>>r>>#>>>>V>`">>>>>>>:>(V>(k>1>GMQ>$=ǡ=?=X=wh=U_=0=ƻ=w=!1=7D'=A=El=HH=J=V=s{v=;'=ǡ=>>`L>7>_ػ>>>`L>RN>#>>r>>,>i>k>}b>>->>>,>w>>z>A> s=1=]=l=l=A=;'<:<:=6==V=?=,=M{={=:> =>':>;1>G>M>T?>c>p>>==1=:=ܒ=6>w>w>'>#M> ;=V{==s{v=M=0==;'<:rv;;9;b6=6=;=x=2<<`v;b:{V'<b<`v<<{v=ƻ=4=@m=4=;'<<<$<"RN;dN9:rvP>>1>>(V>>|2>R>i==[b3>:>>r>弿>>>>>(>>T==_ػ<;<'<;==Qrv=z =D{=;==]=RN==s{v=A=;'<: >RN>>> ? K??!?!>L>g>>&?=D{R>>->-??=??%DQ?e?~>MQ>RN>4==;dN;<<b<<>=3V=l==1=;==?==l=e1=8D=!1==*-=A=bv=s{v=|q=>>n>?>>>>!?6?8?n>_>(A>>`=<;;<<$<= X=@m=gl=wh=?=?=x=i=El=!1====&?=M=r,X=?=D{=> >Qrv>S>>|2>#>1>>,>`>(V>y>(6S=iv=A<$;<;dN<<$<<= ;===b=<><6<;<<6<:===ϻ=fdN=z =ˎ==V{>=6>>>)8>9>J?S>Qrv>I>%=1=@==ϻ<;b:{V';;dN<b<7D'=s{v=}b====s{v=?<<`v<;rv<g>!1>> ;=މ===]=6S=RN===p:=T=7D'=<:<<$?> > ;>==HS>>>>ws>#>>>1>D>wh>jn>U_>4>[=_===z =^=/iv=6<:==0=W =s{v=z =x=wh=l===>> i>>>)8>Lݎ>zZ>>,>>>>.>(k>>dN>n>>->V>>>]>6>>8>6h>>3> =إ=]==z =W =D[N=U_=s{v==D{=ƻ=g===> >)8>I>Y>lHS>>>`7>@>>g>>>>ќY>ݎG? ?w? K? ;?z&>!>l>މ>>0>>1>w>1>=6=d=ƻ=?=s{v=s{v== ===@==ó=>>Hn>g >s2>(>.>`7>w^>į>=>I>版>>?6???=??i? ?> >!> >ͯ>>>>C 1>-)=C==#==z =z ==@=,==?=q==މ>>=(,>]>yB>`v>?>`7>M{>1k>=>M>R>?~? ^+? K>\>!>>\>>>6>h>dx>M>>>c>'> ==g=w=?=o=jQ=r,X=x=l=====?='>I%>->F>]:>>>`7>>+>Ž>R>>弿>Z>>>M{>#>,>#>>1>{>>>>i>d> =>=Ūl=#=M=x=V=?=2=0=3V=5 =9b=<=?=F=jQ=$=@=M'=> =>'>N;>}b>i>>1>#>8>>>?}>_>Qrv>J?S>U >l>>i>1>>n>2@=_z==@=l=r,X=M=<<>[>B>"RN>4>U >lHS>p5==[=1=1=?=ǡ=?> >=ػ=H=z =P#X=0=b<<><:=l=M<<== X=IN1>> e =މ=@==ϻ<<;rv;rv;dN;dN;rv;$:{V':{V';;dN<<"RN@>#l>== = ; i>l==|D s>'>;1>6>`===3V<<,;;rv=r,X=i=El=ƻ<<l>^>>>&>iL>#m>(,>>n>==;'=7D'=>>3>ئ?W7? ??]>>?}>Rx>=<;;dN<<=A=z =1=='=HS==ǡ=q==gl=4=<<:<:>>_>:V? Z?'y?6|?;?4(A?B>Hh>(V>U_==0<b:<<==e1=s=iv=V{=?>3={v=Ը?==i=o=C 1=0=$=3V=El=W =z ==L>_>r>H>H>?=?*?8?=R?5&?/t>#>?>dm=;=?<"RN;<,;<==^=6=?=Ūl=I===M{=;'=}b=V=?=5 =A=V=s{v==g=V{>>P>>>>? !?u>?&??z&>r>RN>7=q=w<9;rv<<;'<:=7D'=n>====RN= ==n>=F="RN=d="RN=?=e1=}b==Ԏ=1,>>`I>c>>Ԏ>>>H> >M<>6)>RN>T=M'=l<-;:{V';<<,;<<==?=U_=V=N;=9b=ƻ=IN<މ==!1=N;=s{v=-S=1=1=> =g>Rx>.>O(>h3>>>z>HH> ;=|=_ػ<<=s{v=>^d>^d>Y>:>I%=V'=HS====6=Ԏ==wh=e1=HH="RN<<Rx>%>0d>8 >3]>'>'>U_>>>->D'>W>RN>?>>+>>{>C 1>[==]=1==jQ=?=!1=0=R=s{v===X==1=D=>Rx>$>)8>5M{>O(>s{v>>(k>`7>#>ws>ws>>V>?}?? ;? ?>\>>r>MQ>0>?}>>>q1>/iv>[=6=ó=d==s{v=tʓ=6=1=;====]>l>#M>I>bv>y_z>?>>w>`">>̉>&>H>>_>~?!?(?*Ԏ?)?%m?w? ?6>>>:>>D<>,>di>5M{>-)>===X=`v=ƻ===ݎ==M'=>>6H>bv>-S>Rx>e>#>:>D>y>:V>G?K? e?Ym?/t?#8?+?,e?+?)U?"?F?=? ?e5>>d>,>`L>y_z>FQ>%> ;====M=ƻ=Ԏ===[N=ǡ=b>-S>)8>YM'>{>>>RN>>>dx>r?k?p? K?gU?"?(u)??M??#?i? ?-S?~>h>ݸ+>.>|>`>WB>*Ԏ>?=b=;==ˎ===i=D{=E=1=1==Ūl>6>'>E3>XQ>s'>A>RN>>(,>>>l>h?p? K?#>;>>d>#X>=>>w>M<>MQ>(>V>i>N,>Ը>=I==nI=?=l=W =V=V=W =ZD=ZD=^=jQ=}b=g=ǡ=> >-)>2@>`I>Rx>>DQ>;>>ia>Q>С>=>1>>`v>e >>>l>H>>[>bʽ>=މ=]==`v=}b=ZD=4== X<<==0=]:=z =ˎ=ƻ=M{=V{>>Ը>(6S>5 >Pw>r,X>Rx>>,=V{=ɗ=ó=ɗ=1> i>%>.>'> ns=[N==r,X=V=A=*-=6<6<=[b<<;' ;> >=>=[=x= ;<`v<7D' =>B>X>M1V> =;=wh<>S[>h>ZH}>(6S=V{=P#X<<;$;rv<$<;dN;;;$;<< >6>O(>Rx=<><:{V':{V'9:{V';;rv<<<"RN<,;<"RN<;9<<`v==wh=D=L> e >==s{v<:{V':;;rv;:<;dN;;b<`v=6=V=?=i=?=F#M>GMQ>N,>(6S===A<'6>>>R$>į>>H>>zZ>n=-S=E>ag>3>>1,?n?`a?0?B>H>>?}>Rx> ;=?<;rv<<$<=Qrv==?=6=HS====r=$=i=5 = `v<:<<<=d=V==>>?}>-??%m?6?>8>O(=M{=,;<;{V'<"RN<==p:=D{==m>>w=L=M'=@=X=o=A=*-=!1=*-=?=V=x==g>?>|2>>O? ?'O?7?=R?5P?r>l>>]:=[N=<<"RN;rv<7D'<==l==]====ܒ==E=}b=V=;1=2=5 =N;=n>=?=1=6> >]:>>>r>>? W?*?%m?8?z>1k>>,;= =;'<:{V';rv<<;'<=A=s{v=i==X=Ԏ=1==n>=El=!1=ƻ==4=V=wh==?=i"> ns>GMQ>Hn>(>>>H>;>y>d>w^>>C 1=ǡ=^<;9:rv;<<"RN e =[N=>i>;>[>p5>s'>]G>,;=,X=1=P#X<6<9:{V':{V':{V':{V':{V';<$==A=i=z ==@==?=U_=n>=s{v=z ====p:=;1<:<`v;V':{V';:{V';Qrv;$:{V';<<,;<$<;'<;<=b=5 =A=?=5 <֮<<<<$=U_=@m=4=0=2=3V=0=!1=]>[>P>/> ;=6=='=l==i"===z =jQ=Qrv=3V= ;8>Ը>'>0d>.>'>(6S>=(,>U_>>{>>(A>>`L>>`a>[>>~>G>I%=g=:===s{v=M=0=3V=M=r,X=?=$=i=@=,==1> ns>-)> >'>]:>>i>l>`7>V>>H>>C?p?=??z>>>#m>>#>>;>6h>yB>5M{>B=?=i"=;==x=x== =====V{=>g>>wI>U_>a{>yB>>>#>?}>ƥ>M<>_>ػ>r7>&?Y?%YC?'O?% ? x?P??$>>>V{>>D<>>n>>wI>`L> =g=@= =@=g==ϻ=ǡ==V{=>[>/iv>WB>t#>>>>>ia>̉>弿>\?k??(?gU??)?*V?(?&??? T?W7>>ئ>>1>>~H)>K:>(>D{=?==d=;'=d=Ԏ=M{=wI==Ūl=V{>>%>K:>bv>yB>u>>>D'>>i>?Y? ?C??%/_?i?i?i?? ?p?n> >:V>1A>>V>i>ZH}>/=>>$='=V=@==ˎ=X====1=1==>|G>-Ƒ>?>T>}b>,>>#>6>M<>d>:V?i? ;?>>r>>̳>,>r>̉>p>>&>>Rx>IC>Ը>n==6=q=s=s{v=jQ=_ػ=ZD=ZD=W =V=W =e1=wh=D{==]=6>?>E>?>yB>[>1> p>n >w^>>̉>;>>>>i>w>6h>(k>RN>>M>Y>]=֮=]=[=D{==n>=D[N=*-=b=6<:1>>'>E3>d>>[>={=ó==6= > ns>d>'>g>=]=?=jQ=V=J=3V=<'=z ==D{=?===V{=L6=J=A=M=i=|D==@==i=$<{v<<`v$>8 >/iv> e =D=-S='>_>}b>k>9:==-S=<;<"RN7>x>>>G=L=n>%>[>s'>^>(={= `v|G>(>=g=6`>>1=]=s{v=E6>s>RN>Y>V>#>F>2@==i<<;V'<;<=A=r,X=6=1=RN=g=X=z =U_=<><<$<"RN<<<"RN<;'<މ=2>I%>k>>` >> ? >#>?S>DQ>P=Q=ZD<;:{V';dN<[N<<<<=4=p:=g>`I>|2>G>,???$?>L>{>[>;'=<;dN:<b>~>6>->?8??%DQ?>>>w>.=@=<;<-)>U_>>?>É>??>>M<>#>q=ʓ=x > ;>F>ns>`L>V>>(A>>`L>]:>3=`v=#l<$:{V'9:{V';$;rv<<$<[N<<==D{=#=ɗ=X==إ>n>>%> > ;=V{=1=n>= <;';rv:{V':{V':{V':{V'9:';<<$<<;=W =?== `v=6> [>-)> ;===l=1=ƻ=q==RN=i=x=e1=J=5 =d<<<;<$< ;>>m>DQ>H>6h>>^5>L>Pw>[>[>FQ>==b=,==|D=e1=5 == `v=!1=D[N=gl=s{v=x=}b=-S=nI=1=إ=l=6=,X> s>>:ݸ>_ػ>6>Rx>D{>D{>>`L>#>5>#C>&>ͯ>->>#>V>V>>6h>>G>=h=i"=M{=1=}b=i=e1=r,X=IN== =1====L>`>#l>'>/=>I>n>1>#>H>V>&>6)>K>>M>>8>MQ>_>[c>Y>->>GMQ> i> =HS=[N=g==?=-S=@==?=;=]=d=> e >'>5 >Bd>P>m8>>#>6>>(,>>;>>>Z?D????1>F>m>->#C>M<>ó>y>#>X>O(>(6S>I%>?=V{=;==-S=ˎ=@=1=g==l==;>3>Ը>(>0>C 1>^d>>RN>=>,>ǡ>M<>>?Y?1>l>dN> > >-> >ΪW>>>ia>#>>d>.X>`>=6=ó=g=={V'=z =z =IN=l=l=?==1===b>>Rx>%>T>>>->1>(>>>>3>:>Ƒ>n >6>>>>>?>>>>P>-)={v=V{=Ūl== =C=jQ=U_=D[N=?==ϻ=4=2=2=;1=Qrv=s{v== =g==1=6>>FQ>c>?>|G>(k>V>>>M>B>O(>]:>jQ>yB>~H)>mC>J?S>?=ǡ==@==?=s{v=U_=0=ƻ=<> >$>@m>S[>U_=;'=]=@= =q=Ūl===ܒ===Qrv=5 =2=#l=<><<<:<<$<;rv;rv;::{V';dN<<<|G>/iv>'>==?=;'=i=ϻ> >W >r,X>a{>/===?= X<$<,;0d>m8>>wh>?==i<֮<<<"RN=l=>>U >i>YM'>%=Ūl= X>&?>=إ=?< e >E3>z>R>crL> =1=o=<`v;<;<<=$=?=ZD=s{v=s{v=s{v=_ػ=?=;'<<<;<;rv;<:{V';dN<7D'=nI>>N;>D{>:>(A>ia>6>>`L>Kq=V{=s{v=IN<';$<bHn>>Ԏ>>>_>ݎ>,>i> =g=7D'<;';dN >[>,>>->m>:>̉>V>>%==A=A=E<><;<<[N0d>s2>>(V>(A>`>>6h>S[====r,X=i=I=<:<<<<-<[N<==5 =bv=z =i=== >D{>6H>[>vmx>s{v>P>=ǡ==5 <<9:{V';rv<<<<;=x==D[N=l=== =1=1==l==ϻ=<;<:{V'9;<b=== `v=<>=V=L6=M=W =i=e1=U_=;1=d=$<G>@.>1> >=_=d=6==='=1=;'=l=p:=ZD=D[N=!1<<6<<<>==&?=<=J=_ػ=tʓ=-S=M==i==;'=;= 1='=L> i>Rx>>Ը>.>E3>RN>RN>(k>>>^d>Hn>O{>]:>]G>G>"==d==D{==s{v=M=(=d=!1=?=U_=i=r,X=wh==D{=;==Ūl=d=d=V{=>1>5 >Y>yB>W7>?>i>?>(k>R$>>#>>>RN>I>H>>>>V]>%>=V{==6S==wh=ZD=T=U_=e1=s{v=wh=z =?=ˎ=ƻ=D=i"=I=މ='=h>B>;1>kL>(>>->w>>>y>`>r>D'>w^>>V>l>>|2>`L>Rx>^>'>(===M{=1=?=o=e1=]:=gl=n>=s{v=s{v=s{v=}b====Q=Q=ǡ='> >0d>a{>;<>I>RN>>X>]>C>6S>m>?>>>>>.>,>>n>>3> ;=g=Ūl= ==X=x=e1=U_=D[N=A=A=A=A=A=M=i=}b==@=@=@===b>#l>GMQ>kL>>>1>i>>dm>Y>]G>f>g >_ػ>_>`I>Y>@>='=V==M==l=n>=M=5 =!1==IN<{v<?>>3>S>iVQ>q1=Ūl===Ūl=i"=1=h===ó=@=s{v=a'=V=U_=A=*-= X<:< s>3=Ūl=6=ZD<'>={>0> =#=_ػ ;>:ݸ>Rm>E3>;'=M{=?<<<<,;'>7>(>IN=1<>D=1=?=e1>E3>Lݎ>,;=#= =M<>>0d>bv>u>Rx>{>,;=_=l=!1<;dN:{V';V'=ƻ=El=$=6>W">9>e1>?>=>qؑ>'==?=$<;< `v:< `v>&?>6H>6H>nI==]=U_=6<;rv9;<b<`v<֮=6== X<<<`v=3V<<<"RN:{V';$<<6<;<<ɗ<'<:<<6<=o=[b=?=ƻ=6<:=]==V{=M{=E=i=D{=q= ==1=?=jQ=N;=@m=&?= X<<<<<=z =|q==q==]=ǡ=>6>-r>'>':>> =މ=ǡ=]=HS=?=dN=Ūl==6=wh=o=V==ϻ=ƻ=6<:<<:=6===*-=A=ZD=s{v=x=s{v=n>=ZD=e1=wh=|q=[==إ=:=L>Rx>'>1`">0>,#>)8>(>-)=L==,X>>3=6=ǡ==s==s{v=jQ=L6=,;=ƻ= Xw>>-r>6> >n>>=>=V{=_=V{=:==D= ==x=r,X=i=U_=5 =d==<> ;>=g=1=,=1=@=]=1=nI=1=s=z =jQ=N;=A=<=*-=E<<<'<'1={v=M{=wh<<;<b<<"RN<<$<;9;dN<'<<6<<`v<;<==U_=U_=C 1=,;= X<'<=l=i=U_=0===b=;1=U_=W =D[N==IN<<<<<<6=4=!1=l<6<`v<;;<<'=HH= X<=?=E== ;=E=E=<<<`v<;rv;;dN<<=i=i=i=V=4=<6= X=*-=M=i=n>=p:=l=l=n>=p:=wh==1=#=-===='>IN> > >> =V'=މ=== =D{==-S==?=l=2<<<6<<>=6==ƻ=!1=3V=I=i=s{v=z =}b=l=== =q=Ūl=?> >=?>IN>-S>>ƻ>$>====ǡ==;== =1=]=@=$=s{v=5 =6<{v<=6==!1=2=7D'=<=9b=A=V=jQ=n>=s{v=z =6= =?==> X>>Rx> > > i> e >>[>(=Ԏ==RN= = =ˎ==i=i=|q==z =U_=w<:=s{v=s{v=l=N;=d<<<<<<މ<:=ƻ=L6=n>=}b=i=======?==@==0=0=3V=$= `v=ƻ=9b=M=W =a'=e1=n>=s{v=wh=z =wh=l=El<<=IN==!1=0=5 =9b=2=;'<<'<<;dN;$;<<><'<<<<$<:{V';<;'<<{v=A=x=$==n>=3V<:<= =d=I==RN=s{v=<:<=z ==1=ǡ=L> >=Ūl=6=4<<"RN9:';:<< ns=b==?=$<;<:{V';V'<'<`v<<6<<<;<"RN;::rv:;dN=3V=s{v==q=`v=?=s{v=r,X=z ==z =U_=$<>=l=wI==z =a'=U_=V=e1=W =A=<><>>f>8D>>IN=މ=ǡ==D'==(=?=V=<<<<6<>=6=;'=0=Qrv=s{v=6= =RN=q=q=?=====މ>6>-S>6>]>'>G>t#>>;<>|>`7>RN>D{>vmx>ZD>J?S>;G>,;>%>-)>=V{==s{v=U_=M=HH=U_=gl=s{v=z ==`v=RN==_=6=C> >Rx>I%>>&n>N;>>>>Rc>>1>H>#>>D<>w^>#>#>RN>I>[>D{>w>>j6>V]>9>-)=C===`v=i=@=;'==#==M{=Ūl=g=?> >>/iv>FQ>P>]G>~>,>6S>Y>`">1>y>w^>D'>{>>>6>>X>>RN>`L>`L>>I>D{>-S>k>N,>'=r"=1=;===]==d=ǡ=Ūl==Ūl=V{==>B>,;>I>[>ps>[>->>]>C>>>`>&>>n >|>>>>Z>(>D{>&>[>s2>`>N;>.> `v={=6S==?=|==]===]====q==i">>|G>,;>FQ>c>Rx>1>>->>>>|2>1>1>>@m>5 >/iv>0>5 ><,>=ϻ>:ݸ>.X>g>Rx=?==@=|D=z =?=6=$=i=@=@==wh=i=c=e1=gl=s{v==iv=V{=?>[>,;>U >r,X>{>s=>j6>dm>YM'>J>E3>C_=ݎ=ǡ=ǡ=ǡ=ó=d=6==ͅ=Ūl=M{=w=l=V=5 =!1=&?=9b=A=M=U_=N;=<=;'<>===D>=?=dN=މ=V{=l=p:=p:=i=V=V=n>=s{v=z =z =s{v=i=A=E<'<<"RN<"RN<6=$=M=fdN=jQ=i=U_=A=A=M=V=l=l=w=D{==s{v=i=]:=e1=W =D[N=(==w==!1==<: > >1==d=]=q=?=1==@=?=p:=a'=e1=p:=s{v=l=i=p:=x=6=X==C=]:="RN<<=]>>Y>>,>~>zZ>>n=ڜD=?==s{v=V==ϻ=2=?=U_=fdN=l=x=$=[==i"={=V=ˎ=[b=;'<6<`v<b;<;<;= X=x=V{>C_>>8>#>>>>N;>Ը=ػ=s{v=5 =<{v<֮<;<= X=$=I=s{v==M{=g=D=?=;=1=l=<[N<;<:{V';GMQ>e>ws>>y>?>>EV>6=<:-)>tʓ>>RN>1>Rx>M>(==V<"RN;9;<< ;>(>0d>'> X=ɗ=-S=?<<<;==Qrv=s{v=}b=s{v=N;==e1=?= s<;=1=ǡ=g={=d=p:=d<ٌ>%>0d>%==g=V<>>1>Rm>\>I>-)=wI=o<-)>b>&6>A>V]>\>G>=D'=i<>1>>'>-)>E>#l>.X>/=>g=6=@=5 =@=ǡ> >%>.>]=r"=V{=i"=ܒ=މ=d=]=U_<><;<$:{V':rv;dN<<7D' ns>g>!1=1= =IN=o=l=n>=W =(<'==d=d=<{v<<`v;rv;;;$;rv<<b<<"RN<>=إ=g=ǡ===jQ=M=El=T=ZD=U_=<=E<:=6=b==*-=D[N=s{v=@=-=m>A>>>N,> >?=g=V{=֮==ó===ZD=ƻ<֮1>;1>c>>Rx>,>D>`>>I>[>>>tʓ>bʽ>Qrv>/=> e ==ˎ=l=U_=I=P#X=gl=s{v===g==M'=_z> e >w>'>+|>,ws>-r>?>di>;'>>RN>>(V>V>1>ݣ>#m>#m?g?i>5>>>`>M{>V>?>[>|2>>k>9b>6=rv=1=]=]==ɗ=މ=>?>Rx>">2>Q>s'>u>>Rc>>m>y>#m>>6>h?z&? P.??`?#? ?$?? =?s2>8>Z> >~>ݎ>K>w^>#>M>>N,>'>>>[>]>-)>">&?>'>2@>D>S[>yB>;'>>m>>w>>>?=? ?'y?- ?4?8?6r?1?,M?"?=q? K?6?$?>>,X>H>ʓ>>:>3> >k>G>9:>2@>.>/iv>3]>;1>7D'>2@>5M{>={>I>jn>A>>n>H>|>P>_??,?*?.?1K0?5#?7Q?4?0?*?>>>?>Z>>>1,>>(,>>>;>>Tdx>8 >2@>.>,#>)8>->/iv>'>i>6}>>b>,ws>\?)>i>H>(k>q>>C>r7???w???[? ? ;?>~>|>>>>V>>#>X>>;>>c>3]>> > > > >8> >ˎ==b== ===>ƻ>@m>]:>D>>m>#>D>>r>>D>>> >>n>{>s'>{>?>>M>`v>}b>]:>E3>%>=i"===[==?=?=q=H=D{=l=i=Qrv=El=El=fdN===;=,X>>2@>`I>> >e >>>n>yB>yB>=g=I=I==={v>?>=L==V{=1=w=?=gl=A=3V=?=A=M=P#X=El=0==Q=?> > >6=6=V{=M'==>B>'>I%==V{=ϻ======?=z =IN==6={V'=^=,;<<<`v<;:{V'<<;=U_=>>N;>Rx>|2>>V>->>n>mC>XQ>jQ>5M{>D{={v=;=b==ó=6=ó=1==ó=g=L>=g==?=El=<<<:{V'<"RN<{v=s{v=إ>L>`L>ia>_>V'>(>,>H>Y>#>;'>Z >Ը== =,=@=1==1=ó=;=v>8>%DQ>7>:ݸ>%==?=s{v="RN<މ<`v<9<"RN<=z =h>}L>>?#?'?'y?>r7>D>;>>==6=p:=R=Qrv=l=l=@=RN=(,=Z>>;1>U_>YM'>;> e =M{=s{v=!1<<$<<~>>H>?H?/?- ?>r7>>|2>tʓ=-S=5 <==El=s{v=D{=Q> ns>.>Kq>K:>+|=L=g=VI>>ќY?{?#? !>>wI>RN>]G=L<<;dN;rv;rv;rv< >>-)>=]=s{v=z>`7>d>>1>(V>>'=M{=U_;<;dN<`v==W =ˎ=r=m=D==n>= X<<:{V'9<0d>Y>WB>8D> e ==n>=<$;rv<`v<:=3V=ZD=n>=bv=3V<<|q>]>6==IN=*-<[>3]>V]>_ػ>N,>-)==jQ<==3V=4=$= X#l>,ws>N,>s'>i> >zZ>9b==|D= s<$;{V';>Ը>_ػ>[>e1>n>[>1>yB>6=g=wh,ws>U >c>{>^>V]>a'>m8>e1>J>?==N;<6<:{V'<<<;1>2@>b#.>>W>]G>6H> >ƻ>d>-)>=1=s{v=6<`v<$:{V';<<<,;b>D>d>~>|Q}>-)=6===g=1=6=_ػ= X<<7D';V';rv;;::{V';{V';$:{V'<7D' >$>4>?>2=D{=s{v=A=!1=ƻ=;'=<'(>.> >=ó=g==@= =1=`v=z =U_=ƻw>>D<>>i>>p:>I>?>?>4>&?> == =i=!1 >'>@.>G>M>j6>i>>>>r?z&>>q> >`>w>=>?>ws>n>RN>[>s{v>,ws=dN=#=@=-S=-S=@=g==ó=I>IN>>%>AiL>]:>wh>>?>Rx>,>>(A>D>>:>W?? D? z??p?:` ?3?)?n?p?s2>r >#>Z>[>V>>V>H>g >0>-)> ;>> >I%>>(>3]>G>WB>ps>Rx>6h>>#>:>`>{>3??w?+?6n?A~>?Kq?Q?M[9?EV???S~?J?AiL?6n?.?+?)8?!V? O?K>>>>(,>r>>u>m8>[>Qrv>Qrv>YM'>ag>fdN>m8>z>`>Rx>6h>[>V>>P>ճ>h??.?AiL?P#X?Y?c?j`?m8?iA_?aQ?X_?T1?Mr?Cݣ?=:?9%?8(?6n?/?!v? e >0>ݎG>ݣ>V>DQ>I>Rx>W>k>}b>>>>C>C>i>>?>`7>V>>>-?D??6H?I?W^?`?f?kʨ?mq?iA_?bi>ʼ>(>;>>[>`v>U>}L>wh>w>zZ>n>^d>U_>R>V]>C>,>>>?}>H>??$?9:?D?J*a?N,?P?P?L?F= ?AiL??Ҙ>>?z&??p>,C>#.>>` >!>Ʀ>>>crL>Y>P>G>EV>C 1>Bi>2>"RN>Rx>-S>n>I%>=ϻ>s{v>>6h>`7>]>#m>#???n?43?gj?i? ҃? /?ˎ>>D<>W>>(A>?}>D'>,>>RN>w>W>]>6H>> X>>=V'=r"=#=HS=V{=M{==6=?==g=>1>.>n>i>|2>Y>>C>y>>Y>>D<>`">GMQ>=ϻ>>wI>Hn>YM'>c>j6>a{>Rm>?>'>=#=Ūl===?=?=?=?==}b=n>=A= X<މ<[N<6<{v=$=[b=IN=@==g>>2>L>K:>@.>8 >8 >={>G=@= =====1===1====s{v=J=<=IN<{v<<$<;$:;<=IN=;'=$=.X="RN=ƻ= X<=z =z =s{v=_ػ=M=5 =E<:<<{V'<:;{V'<<`v<6>[>`L>(A>>ئ>#>[$>{>>>`7>>Rc>m8><,> i>> >W">B>Rx> s>> >!>4><>(6S>=M{=}b=?=IN<<"RN;;dN<=A=X>.n >d>?W7?,M?<,?<,?/iv??s2>ܼ>(,>>;<>C_>I%=?=ػ==L> >[>>>5M{>_ػ>n>>qؑ>:6)==1=ZD=MN;>ws>_z?3k?S?b#.?^?P#X?7Y?e >>6>`>0d=dN=Ԏ=@==1= =i"=>1>ƻ>J>s2>i>[>>R> ns=d=W = s<<"RN;<:rv<$=!1=?>G>?W7?>bX?]9?j{?fdN?T1?7?>_>,>]=1=W =,;==ƻ=A=o=6= =Q>-S>5M{>n>`v>(>}b>=ϻ=:==4r>>?.f?Kd?WV{?P?<?!>1,>:>=D[N< ;>4>U_>Y><,> =?=P#X<<$< `v;dNp5>>]?? M?T> >.>`L>8D=D<:{V';b<7D'<=2=}b=X=>6>6==1=U_<֮s{v>n>y>R$>>Ը><,=ó=i-S> i>Rx=;=|q=<<6==@=?=U_=< e >;'>6=1=s{v=>E3>_>d>N;>E==U_:ݸ>FQ>]G>`>Rx>Rx>~H)>8 =މ=s{v<:<<;<7D'<==(=?=4=w<<;'<b;b<< [>3>1>z>D>->>>>~>9:=:=r,X<<;Qrv<"RN<<:=E=!1=ƻ<<'>\?)>>i>A>3>r,X>{>l>x>S[>=iv=El<-<<.>g_>(>>#>>X>6H>/=>.>'> i=ó=wh=lb>G>{>>>>6H>=ػ=[N=1==D{=p:=ƻ<<;;$;;:{V':;':{V';{V'<`v=;'=r,X==g>M>2>U >i>n>]:===n>=V=M=A=0=<>[>I%> ;==<;<@.>GMQ>2>M=ػ=M{=;==wI==X=`v=r,X=0<<<$<'<b<<"RN>-)>->y>V>Ƒ>->u>p5>n>{>yB>iVQ>S[>,ws>-S==l=A=ƻ=>> >[>>-r>O{>g_>wh>n>>w>(V>X>>?[? ?i>弿>H>D>m>.>(,>|>D<>l>[>^5>=V{==1=D{===d=ܒ=?> ns>(>,ws>O(>qؑ>i>`>Rc>>>`">K>>m>&? ??"??6}??EA?@֯?8?,M??!?n??-S>h>߄>r>w^>i>?>^>6H>"RN>>>$>/=>>wI>L>YM'>d>>~>|2>#>1>>ݣ>תB>F?C?,e?;?H3?VO?_?c?]9?T1?Kq?aQ?ZH}?R?HD?BO???=g?6?*??W7>>(>6)>Ԏ>>>~>j6>di>o:V>~H)>>>?>->>F>|2>n >>P>=>q?W7?!B?;G?O?^5?jn?w}?~??{?p:?f?dC?]Oq?W?P?M?Lt?Im?A?3?!? >|>(>>>DQ>>~>Rx>=>>]>>>1>>1>RN>X>` >>>>? ?*?Bx?WP?fy@?q1?{A5?~??|?A?BM?@m?7C?'?M?>:k>>(>H>|2>>[>>>>X>>}>m8>di>o:V>(>>>|>į>>,C?T?3k?FϦ?U?\i ?bʽ?fO\?f?`?Yb?S?>? [?/t?`a?1?P?"y?;?#?Y>>d>{>`">>i>Rx>n>s'>`,>Y>WB>WB>N,>4R$>#M>>`>'>ZH}>>.>>6>>r>(???)[?-3?./J?.f?,e?)?$ۘ?"y>3>m>>ݣ>d>>ͅ>į>n >X>>?>[>m8>J>0d>$>1>Rx> ns> >(=r"==X==W"= =1=h>-)>5M{>_>>1>u>(,>6>>ǡ>>>Mf>H>į>~H)>t#>s=>6>>> >(>3>dm>N,>.X>b>?=V{=]=1=]=@==`v==z =W =$>)8>Y>{>|Q}>l>fdN>a{>crL>n>}b==== 1=;=g===Q=g=]==6S==s{v=?= X= X=2=C 1=El=A=3V=d=<I%>D{>>?=g=ó===@=}b=U_=;'<6<`v=5 =tʓ===rv=V{=ڜD='=g=6>> >>A>>]G>Bd>'>Rx>=?=弿=ǡ==?=_ػ=J=N;=V=Qrv=3V= X<މ<<$<b;;rv<"RN<==}b=Ūl>-)>YM'>`v>>|2>l>|2>(k>ԣ>>ƻ>u>->(>g_>HH>+|>!1>ƻ>(>[=?={==ǡ==='=]=6=V=ƻd>X>;> > ? T? P.?`>&>1>С>{>,>6>;'>d>EV>(6S>#l>'>(>'>>I%>>6H>V]>_>Oϑ>%=g=@=V=;'<\>>L?*k?Hn?W,?Uk?HR?7C?"(k? V>1>G>RN>{_>4>>$> s>?> >%>%>)8>O(>3>`a>|G>Rx>bv>#=D=s{v=(<֮>m?g?Rw?q?~37?z?i{?Rm?7D'?>>q>wh>=M'=]=?= =V{=h> V>D{>)8>^>w>>1>,>>(=ó=s{v=<<7D';;<;'=A=6>n>?-?^_?}"??C?m?Si"?3k? i>>W =b=6=V=5 =?=fdN==w= =I>I%>L>D>#>?>>di>=?=Qrv<{v<`v<$Qrv>?*?Q?l]E?wk?mq?W^?8~S?>M<>`7== X>N;>vmx>~>`,>(6S=i"=s{v=> s>M>l?%?@m?F= ?;?!>Z>w^>Rx>[<"RN9;<<$<މ=?=?= =>>|G>==s{v(>#>#m>弿>:k>>>> `v==9<<=E=ZD=?==D{=?=Jn>]:>i>{>2@==s{v=6<$;<<`v-S>'>?>C_>'===ƻ<;dN;dN<$'>,ws>EV>`,>yB>u>S[> =Ԏ=A<;dN<<;'>'>q1>_ػ>a{>yB>[>~H)>W>==A'>U_>x>C>>kL>ZH}>]G>`I>V]>2==@=d<$:rv;Qrv<<ٌ>3]>jQ>=>[>E>wh>HH>'>!>.>==6S=c<މ<;<<'==HS>>O(>}b>Rx>>(>)8>1={=1===ˎ=e1= `v<`v;b:{V':{V'9;<;'==s{v=q=> >6>WB>f>fdN>T==?=jQ=ZD=V=N;=7D'= X<-<;:{V';$;;;{V';fdN<;= ;=gl=@==>8>]>I%> == s<6<==1=RN=,=X=x=J>!>=>=1=RN====1=6S==i= `v>DQ>>RN>i>jQ>U_>]>n>n>^d>I>&?=L==x=7D'=< `v>>/iv>GMQ>Q=>[>;Q>#>1>1>>|2>H>>C>>[9>R>D>>,>>>(V>(k>#>U >=H=g==?== =q=wI=]=6>>]>)8>N,>c>~>>`>`L>`7>#>>r>>V'? ? =?>>?6H?3?,I??43?i?? ?>>:>>#>l>1>T>(6S>Rx>>6>[>>'>0>;>IC>]G>>H>>(V>>>>弿?D??,b?:?G?S~?VO?N;?B:?:6)?S?N?H3?A?h??"|2?=?D>版>>r>>>>c>P>N,>Tdx>_ػ>fdN>j6>ps>z>?>ƻ>>6>>>Ϧ>>y??,?A*v?R?^ ?i?s1>=>>Y>|2>w>>D>yB>}b>1>[>~>|Q}>}b>>w>n5>>(,>>弿?Y?B?54?Jp?Y?e*#?nh?vX?v1?nќ?e??[?C?A!?=?\>m>{>>(V>->~>=>~>s'>s=>zZ>s'>`,>U >P>Tdx>z >Rc>Ʀ>Y>>ʼ>版?-S?$H?;?G8_?Q?Wkl?[m?ZH}?U_?L?E?`?D{?gj?A?1??n? ^+>#>օ>1k>D'>D<>H>,>X>u>\>J>@.>?>B>4>%>M> V>6>I%>=(,>o:V>]>>V>w^>>? Y?b??"y?"? [??n?&>#>(,>>g>#m>>P>>>`7>>~>W>g >G>+>b> =L=>===V{===ˎ==|q==V{>1> >FQ>vmx>[>>1>{>K>#>(,>` >`>D'>(,>c>_>c>y >>=>`v>>jQ>U_>>#>'>;'>?=V{=iv=@=6==l=l=z =l=A==;'=?=i=z =i=;=g>;'><>\>]G>U_>T>Qrv>T>]:>c=====ó=_=I=:=V{=#X=Q=:==i=s{v=?=l<<<><:<'<;<>`>> =>3=I==-=1==x=N;=<<;?> >>D{>n^>D>]G>>wI>%> ==6=ܒ=g=,=z =T=?=A=U_=Qrv=5 = `v;'>R>>,>1>RN>RN>#>Ʀ>|2>>n >>>c>FQ>'>|G>>I%> V=dN==X==V{==I=M{==V=E<֮<`v<;rv:{V':{V';V'>W>#>ʼ>???3>V'>:V>M'>D>>>`>bv>=(,>%>>>$>>Rx>>>)8>O(>\?)>O(>&6=1=]=V=WB>|>?+?HD?VO?S*L?EA?6n?%? K>ʨ>>RN>z>2@>>?>?> e >>Ը>>g><>s'>>>Rx>c> ==s{v="RN<63>?"(k?V]?s'?~r ?ytl?gJ?Q/?8 ?YX>>R9>xd$>w=V{=X=g==ݎ=6=>|q>ƻ>O(>>>>e>l>-=ǡ=s{v=<<"RN:rv;<`v=;1=Ūl>>{?3?c!?~??C?l]E?Rw?4?>M'>\=ػ=-S=U_=0=4=W =IN=D{=q=Ūl>n>6H>}b>[>,>i>iVQ>=#=U_<:<;;dN<"RN=IN=>P>?%?V?qE?z ?nh?W,?8?}?>إ>==< V>fdN>x]>^>)1=V{=wh=6<`v<;rv>>!?.?F= ?K?=? 1>Q>>1>`<:{V';<b<$<;=!1=s{v==g> >`>==x=6<{V';rv<<>=>0>>=>C>!>m>V>w>==69<<<=?=s{v==X=IN=M<މ<<"RN=6=>Rx>~>e>i>T==l=<;;$;=*-=e1===1==El>3=V{=@=5 <<$<b<`v<<'(>>(>'> e =wI=l)8> >!>,;>6H>/iv>=Ūl=s{v<<<<`v<<6<> >2@>6H>G>(6S>,> >">b==q=[bI%>6>WB>d>_>0>Rx=r"=6=1=i"=;=C=*-1>'>I>]G>bv>U =r"=b=1=D{=@==s{v=?<'<"RN:{V'>)q>2@>->|G=|D=M=<=A=D[N=?=!1<:<`v;dN:':{V'9<<_>bʽ>U_>/=>;'>>ƻ>'>)8>%>=HS===A=l>>6}>2>F>D>FQ>Qrv>>>>`7>V>>#>>#>`L>>>N,>=Ūl==o=El=8D=A=W =s{v===ƻ=;==b>?>Rx>>,;>A>]:>s2>w>,>RN>`7>V>wI>D>~>6>>>?>L>#>>(>ܼ>_>:>H>>#>->>G>=Q==?=q===l=?>3> >>/>Tdx>wh>>#>(k>V>>K>>ʨ?i?43? M?"(k?|?1>?$ۘ?% ?!??`?&?w? e>H)> >V>->>>`>g >=ϻ>.> ns> >I%>>':>'>'>,ws>9:>\>W>,>>>]>D>Ӽ>d$?i?"(k?1?=?E^?EA?=?/?&??-?-r?+R9?'?'?'y?"?6}?>1>֮>P>|>|>`L>=>h3>HH>-Ƒ>'>.>9:><,>4>/=>/=>7>Y>ns>>>>?}>H>M?D??.?9p?B??I?HD?@֯?58?-]???Ko?`a???T?>=>1A>>?}>=>>>>a{>G>,;>':>(6S>.>,ws>#M>>I%>I%>'>S[>>>|2>>D'>r>6?b?B?$H?+?0?.f?% ??`>Vf>{>{>l>>>?>M<>Mf>#>Ԏ>>i>Rx>ps>O(>.>Ը> >?>1>>l=dN=ɗ=1=M{=Ūl=D>nI>;1>bv>>?>n>y>#m>C>_>>>ئ>ܒ>m>٠>>>m>>>|>`7>RN>#>!>z>]:>G>.>>=_==q==== ==s{v=W =T=e1=|D=D{==6=>-)>kL>>->>|2>RN>->`L>>RN>;'>> >'>0>9>5M{>(> >;'> ns=L=dN=6=|==l=T=I=A=A=?=!1<<<;'<`v<<>==3V=D[N=ZD=s{v==M{=Z> ;>Rx>> `v>[>Rx>;'>=s{v=z =?=|q=@= =1=,== = =@=6=s{v=P#X= X<= X=3V=M=U_=U_=v=弿=g=6==1=-S=z =p:=M=<މ`,>I>.>b>=V{===q= =}b=N;=== `v=!1="RN=<><<`vg>Bd>^>yB>`>ns>(>`>Rx>>1>>_ػ>5M{>>=HS=dN=={====ˎ==M{=@= =s{v=<<<O(>,>6>>(>M<>ϥ>˸T>ݎ>?S>->=>>+>h3>2>D{===?=L==V{=d=6>>d>,;>'> ==?=?<:%>,>6? V?,M?5w^?2?&~}?`a? W>>>#>`v>@> e ='== 1= =6=6=g=> >6>bv>{>j6>B>-S=1=[b=<<;Qrv;dN<`v=$=6>@>Ƒ? ?=:?XќY>w>2@=Z===z ==g=]==[N=>>S[>1>>>WB>D{=|=[b:>(A?P?LJ?f?n?eT?P#X?7Q?k>\>>-)=d=bv=<=l="RN=V=s{v==D{=> >C 1>s'>-S>wh>FQ>=]=7D'<ɗ<7D';< `v>#??@֯?Yw ?^?Si?: F?>>>>w=M `v>2@>GMQ>4>[==c<>̉??1`"?3,?>>>>Y=Q;rv;<=3V=tʓ==i"=dN== =bv<>H>(,>=>(>>RN>O(==k<;<'<G>>yB>/iv=6=s{v=IN3==1=1=`v=@=@=-S=s{v=<6>?==?=e1=V=e1=i=V=?=<;';<<=d=i==?=1=6====<'<==;'=<<;<"RN9;dN=r,X=s{v=}b=?=?=X====]=M{>?r>J?S>GMQ>/iv>'>0d>A>G>G>3>`L>=i"=1=s{v=2<>==$=?=N;=a'=p:=|D==D{===V{=Q=> >I%>!V>:ݸ>\>]>FQ>.X>.X>`L>l>>(k>>->RN>>> >8>_ػ>9>M==1=tʓ=M=5 =<=U_=r,X=}b==|q=@=1==ǡ=>>I%>'>GMQ>`I>wh>>Rc>RN>(V>1>>>>Rc>w^>>>>>>6)>#>Y>>1>>n>Qrv>==m=1=6=6=D{======d='>ٌ>>2@>Rm>t#>Rx>>RN>>y>g>ͯ>:>>>]>>iL>Ȝn>̉>1V>ͅ>d>Ϧ>>V>>|2>?>Rx>k>Ը=h=Q=;=?=M{=[N=ɗ====ó='>ˎ> ><>^d>>>->`7>,>H>ݎ>>>>r>>(,>|>>->>Ž>>d>`">>M>-)>>~H)>U_>/=>I%==Q======V=?=g=g==_=L>;'>1`">U_>z>]>>>V>,>>Ϧ>6>D'>>,>6h>>Ʀ>>`7>>M>>W7>g_>S[>E>2> >w='==1=ˎ==ˎ=i==?=s{v=n>=l=s{v==g=M{=V{>>b>/iv>Q=>`>>>RN>|2>>>>ƻ>'>/=>G>Qrv>P>G>6>'>> e >=,X==6===s{v=W =J=A=A=A=3V==<<= X=.X=L6=e1=s{v==D{=|=6=L>>'>)q>)q>(>&6>%>':=@=1====]==q=[=ƻ=1==@==n>=4=>=ܒ=wI=d==z =s{v=l=U_='<{v<<-S>Rx>Ը> >|G> ;>H6>'> ====@==X==r,X=D[N=.X=5 =ZD=s{v=wh=i=4<<0>y_z>Rc>>`L>`L>>>,>~>wh>4> `v=ܒ==;'=@==ƻ= =6=x=|D=D{==:=إ=M{==N;=IN<2@>#>D'>[$>弿>ۗ>ͯ>R>iL>]>RN>di>=1,===wh=z ==@=@=ˎ==1=ڜD>Rx>$> >n= =x=!1<h3>>Q}??#^? ?>,X>>->>e=ϻ==V=(==9b=ZD=s{v=x=z ==]=>'><,>3>=ǡ=IN=!1<<"RN:{V';V'~> 1?#?1?5w^?(u)?p>ؑ>ͯ>,>;'==A<><<`v<;'<<==7D'=Qrv=s{v=g=dN>Ը>,ws>'>|q=]=l=l<;;dN:{V'U >?}?p?$4 ?'O?I%>>V>;>(>-S>>>:V>:V>M<>>>C 1=ˎq=U_:rv;V'<"RN<`v<6=;'=]:== =X=s{v=<<$<#M>~>`7>?>>G=6=?=6<"RN;<"RN<;'>=g==A<[N<:{V'<<'<'<<:{V':{V';;'9;<$<6>$>===[N=q==wh=M=<<`v ;>-S=v=d=>>-r>F>IC>FQ>C 1>9>.X>">Rx=L=إ==RN==V=<> >$>FQ>U >L>%> >1>.>Rm>lHS>t#>iVQ>[>J>3]>#M>Rx>?=={===wh=M=!1===E=*-=9b=A=?=A=M=ZD=s{v=}b== =]=;==>>>!>D>^d>o:V>_ػ>6>ƻ>> >;1>U >]G>Q=>9:>%>]>?=dN=V{=Ūl==Ԏ=@=s{v=M=$= `v= `v=;'==$=$=!1==0=A=V=l=s{v=====Ūl=>Rx>'>8 >C 1>6>"> `v>[=V{=>> > ==إ====g=1=@==tʓ=N;=!1=<><<<<>>?===1=g==n>=A=!1==!1=+|="RN=<<=w=N;=s{v=wh=jQ=3V<>6H>~H)>(>>zZ>o>[>0==?==ZD=0=<><= `v==!1=ƻ=E=0=i==?=q=]=p:=<(6S>[>;>>#>|2>>X>O(>3=s{v=5 <:GMQ>H>>r>w^>`7>>xd$>%=<><;'<,;<;b;b<,ws>>V>&>;>>m8>.=M{=U_;dN;rv<b=<=s{v===r,X=*-<6<"RN;dNbv>>6h>>GMQ>=1=7D'$>)8> e =ó=?=<;';<:{V';dN<"RN<`v<<$;{V';fdN;rv;b;:{V'<<$<<;'=l==!1=,;=*-===V=r,X=IN===C=s{v=o=i=U_=5 =b=<<<$<<;99;rv<<<7D'= X=(=?=N;=i=i=V=A=@m=n>=?=]=1=]==wh=l=ZD=M=2=b= X<<<=="RN=?=T=bv=bv=U_=A=A==A=[b=e1=V=A=$= X<<>==6<{v<<6<<>>==wI==D[N<;:;:{V';;dN<<<'<<$<[>=:=g=i=IN<<"RN:{V':{V'<<=p:=Ԏ=Ūl===o=<<{v<'<<<`va=0, =#={=}Ŋ=h|=#=!<, <0, :V:9<0, a=!<<<0, :V;IV<0, <.<4=#=f=wz=o4=0, a=UW=8=<&<9<0, ;IV;9;IV;&a=w >!=uQ==8>̞=a=={=d<%Z=z=͈=k=)T=k=D==]=w=\7=!a={=k=-|=f=w<%=!<%<9<9;9 _L>=䚭=K=`h===!=n_=!==`h>==z=ua=<]%>I">@I>_==-|=0, <<<<]==w=4>>?>(==)=>a(N>So>TY>5jN=F=)=So9>ER>\H>T>%==w=>a=R<͈<.<&=8=>R>IV>]C>SM5>h=o=ua==!= =#=h|==z>:>`>h|>Q> m==ua=<]0E>SM5>IV>.=O=-|=0, us>:"X>TY>J>=V=wz=#=9=R=d=Z&=w=!>K>R@>Uf>@m>Fd==ua=<]Z>> = =)=b= k̞>2>= =}=b=>P> =!==Q===|D=I==h|=<]=2a=y=Fd==X>=R<<<.;'l<.<&=0, =R==O=Ѻ===8= k<&<<b >0, >)[> _L=|D=9=E%=w>$>n==w=#.#>So>So>+t=#=F=2D<4<2<0, :9;&I%>TY>p>i>ER>=T=ua=0, <>[>y>ds>.#=䚭=r=!}= k=F=>a=-|=>XY>f-[>>>n >%=={=w<͈%>jd>>>>Uf> m==wz=4]=!8 p>|>5>9>TY>=?q=So=#=0, =`h==9>.#>z.>><>p>HЮ=4==0, >X>>z>n >G:>==h|=!}(N>n >G>}Ŋ>P==d=b=%=+<=So=!=1>F>^/>>_L>z>:"X=L==0, d>A>5> =|D==0, <<<<%=+<=d=>6v>TY>M~>=>=-|=8=w=w=#=d=w=!>ū>Q>Vr>D> k==y=w<=a=1=R=2D=O=!}a=^O=O=!}a=w=2=D=!=!}<%<_-|>!=9=F=8<4<.n>3ס>-> =>=w=f=#P>5jN>=n_=d=8!>D>`h>_\i>?`==K=8_>TY>ua>lx>IV>!=jN=}Ŋ=G>=>ds>>>ua>?`= =R='l==!}=So=w=!>3ס>{>U>>}?P>6=9=r=F&>jd>9>!>V>= 1==Q=wCk>>>i>]ɼ> _L==f=0, =8=h|==4>F>̞>>+c>5>So=z==2Dz>W>y >n >G:>!=<=ua=2D=!.#>y >_L>>T>*==h|=6v=8=f==O>&>v>8>sZ>B>J=a=_=2D<4<;&;d<=+<=_= >ū>?`>2D> =|D=!=>a= ?`>Xx>So>XY=䚭=x3=O=2=2=6v=q0=}=a>3ס>]ɼ>f>SM5>b =͈=}Ŋ=F> ==Ѻ==>aa=F > _L= =D=!=X>=2>>Fd=*=9=<%<]">Ko>IV>2=䚭=-|=2(>M>G>>P==d=ua=>ER>\7>SM5>=|D=wz=w<==2D==͈>P>]ɼ>>>^/> ==h|=9*>ER>]C>Uf>-=a=)=wz=>a= >]ɼ>|>o4>?=<=w=>a=.=#=UW=x3=uQ>(N>r>5>P>|>5=䚭=!=a=d=z>+<>O>ER>.=9=w=f=# k>SM5>lx>`>2D= =w=O=!}=#=O=!=>>Z`>W>9>iR>&=uQ=!=<͈ > _L==)=h|=#<_>3ס>)[>=={=0, = ==#=d==䚭>P>IV>R@>3ס>=D=h|=9=a=8=w<4<]<!<:9;.<.9>Z=!= =>aa=w<4 >=&=k=!}>?>?>=uQ=-|=K _L>!=!=)=ua=>a=_ >$>=n_==`h<<4)T>So>TY>0, =z=d=>a> >w=4=)=d= n>?>ER>=4=K=>a==!==-|=8<9> =z= 1=!=d<͈a=!<<.<2<]<4=w=d=====!=8a=b=O=a=!}=9a=b=@I= <<;V;Va=wz=-|==f=%= =_=o=L= =o=w=>a<4<2a=wz=!=y=O=wa=-|=]=h=9==x3=8<4<_<;9<{a=ua=ua=X>=w=o4=o4=>a=9<]a=C 1=2D=<&a=\7=b=O=!}a<͈a=f=>a=k=>6>Ko>P=͈=h|<%;'l;d<==f=!=9=wz=C 1= _L>HЮ>W>/=!={>")> _L==f<&;V:V<d<<=w=f==!=q0=+<=`h=0, <<]=R<.;'l<2=!=b=-|=k=ua=#(N>Vr>N>!==#<&<]!==}=Q*>r>+c>>_=0={<Ay>Y>E%==.=)T!>~>P>m>> == =<> _L>Uf>{>ds>ū==`hER>5>U>_\i=r=-|+<>TY>M~> =D=X><<, <0, <9<_P>-> _L=Qg=8<, <<<<%a=8=#=9a>"==)=%a=X>=@I=!}=!z>|> >>Zr>&5=)= <d:Va=Q=>a=dTY>>>D>:>=4=b<2;&<.=w=r=v=9==W==!=lL=h|=ua={=wz=`h=F<ѺTY>i>z>"X>5>P==ua<];9<<<=%==o=4=n_=!=D=9=o4=o4={=!==h|=%=>>>K>.$>>`=uQ=Q==o4=8=@I=f=wz=ua=Z&=2<法>]C>z.>So==x3= ka=k==Ю=8={=K<&<!a=)>Fd>X>>>r<>P==6v<4<%<4=!}=o4=w=6=O=L==ϡ=)=lL<> =a=l=f<<_;IV;IV<.=9={=4>o4>>z>=X>m>:"X=)=%=!==h|=w=I=4> >2>>B=h=w=2D<]<.>G:>>+c>>Ko=O=ua _L>+c>>7>ڤ`>S>I%=.=o4=F=4]=y=}=O>Z>>:"X>5jN>h=<==b>>.$>I>>>?`=D=8<%Z>+c>Ո>|>_*>ǁ>>F=}Ŋ=w=+<=sI==c\=z>n>(N>#> ==)=d<<, <=!}=d>ū>>>#>>>o4=!=f{>N>>'>b><>!=jd<==aus>}?P>K>$q>>>^/=uQ=f!>>>v>+c>ER=Qg=w=ww>r<>_>U>z>F=)=+<<%+t>D>U==>a̞> =n_=<=Z&P>|>z>>>=Fa=Q= m>5>>͈>M5>>ʅ> m=wz<, :9;d<2=w===!=4=!===R=-|=k=w=R=ua=0, ER>7>|D>3?-|>!>>^O=w>P> =4=I==)=T=D==w=jd=wa=>?>7>Ε+?S?>k>E>o4=]=R!>XY>(>=n_=>===D==6=d=wz=!}<;&;jd<<%<=2D=x3>9>5>=X>>>9'>>>T'=F x3>_>Z=uQ=)=x3=w=d===w=o4=F<];V<9<9<>>>}>v>jd=!=b<;d;'l<<<=d=!=6=uQ=9==F=lL=>a=`h=wz=!=!=ua=6v!}>?>h=͈=ua=wa=d=h|=`h=# _L>!}> =͈=wz=W> >.$>ޓ> >=w=d<=w=b===a>>#>> =!==4]<]<.ū>v>>o4>=v=f->7>>뮻>_*>1>z>Fd={=0, =Q=R==z>&>T>k>ds>M~>=͈={=!)T>+c>t>z>>7>SM5=V=b`h>z>&h??2>?P>z>`==Q=h|=F=&> >J>v>9>>`>*g===#=C>}?P>O>#>>|>ON>>ū==w<;d:9;d<, =w=)>]ɼ>?B?#u?$?1I>z>==E%=b==o>>=G>f-[>}?P>z.>X>>=!==0, ̞>z>?z?S>Ԝ>.$>T=Qg=%<]<:9ū>!>ߟ? ? >(>$q>]ɼ=}=d=%=ua=}=uQ> >/>M~>IV>'B2=r=z={=!}T>ޓ>͈>_*>FB>,>>SM5=8=#<, ;&;IV<9==>n >>>>b>>B=f|><>>>:>8>=k=!<!:V:9<{=0, =Ѻ>P>U>>|> =ka=h|={=!={=f=0, =99>|>>kk>P=]=8<];d > _L=L=d=#>>>==Q>==D=>a=]>>">=z=}=0, <!;d<_\7>>>t>>auQ=|D=0, a=9P>?q> >?>>e>>R@=29=Ŋ=䚭=====#==k=b=!<:9>>=X>I?2?#1? >>w=C=29>(N>6>$>==|D=|D=>=O=ϡ=#=-|=0, |>=X>??$ğ?>0>=!=%<{;V>;.>I">3ס> m=L=ϡ=Ѻ=9=!=uQ===G><4<0, ;'l<0, ?`>7>H?>? >L>{>v==w>>>)T>z=z=V==D=1=Ѻ=o==-|=8<法<0, ;lVr>v>{>z>7>>={<4z>]ɼ>x >Q=z=k=w<2;&;9;IVa=f=d=>a=w<&>Q>?=r=d=2Dz.>>b>u>2>Q=z=O==d=o4=K=O> _L>.#>M~>IV>%==D=d<4<!<X>>+c>>+c>^O=n_=w=0, <%M~>.$>T?p?O >>>!>6=&=Q=f=_=o> >N>z.>>Fd>iR>0E= ==d<&<法=4]=>^/>>ɚ>ٗ>҃>I>>!=x3=w<<K=>? c?)|?)7? >:>5=W=o4=ua=)= >$>g>x3>>_>9>SM5>Z=)=G><=9=ua=>>>&h?? >䚭>O>lx=|D=Q<w>Jt??. ?/`?rM>Ѻ>==f=h|=d=>ū>]ɼ>>>>>Ko=r=)=X>==w={>!>+c>?*??o?S>z>w=a=o4F>g>P??d?>;@>9=I=0, =4]===>->Z`>r<>m>SM5>=uQ=x3=>a= k= =h|=!>d%>E>뮻? ? o>4>>=<=f5>D>؋x>L>Òk>>=wz>_>_>!=*=&=f=F_>>8>>Ԝ>`>>Z`==0, <, ;V:9v> >>8>%=d=!<2a=wz==d=)=={=O=w!>o4>7>>+c>c9=z===.>Z=9==F<<<<d >*=*=-|=9a=d=>a=!<2;V:9;Va _L>%>$>9==`h<;IV<0, 2>HJt>I">ū=!={<%;9;&<0, #>9>>T'>=O=ua<]:V;IV;.;V;&;V;.;9:V _L> =4==0, >(>(N=r==8<2;9<8<`h>m>>t>>auQ=ϡ=8=RSo>>9'>a?S>aC>F>N=2=<>us=z=9===<=D=Qg===f=!<:9B>Ò>?H?!\&? >,>=Ѻ=!}2>*>ū>9====uQ=䚭=&=D=-|=0, >=X> ?T?#S?8>><=O='l<;& _L>+t>=G>)[> = =O=uQ=!=d=!==w=O<4<'l;&D>7>͈>?9>9>I>auQ=8=w<9;Vn>K>#=a=o=]==|D=O=ϡ=D=Fd=:<<;IV<0, Vr>>z>>->5=z=wz>T>f>A=L=-|=w<<;d:9:9<<%=#=ua=R=k={=C 1=w= =#=Q=h|=h|=E%=w=ua=y=ua=>a<<;IV:9 _L>0, >%=z=d=8a=&=9=a=uQ==!=TY>>)>>z>G>=I=Q=9=w=b=w=c\>us>!}>Ay>?>K=z=<=bTY>>>+c>ds>!=)=\7>2>o>>m>|D>?q>.#=&=>a=O=R=Jt>9>Ck>o4>>>`>)[=|=k=!}Vr>>ūR>ֵ>Ѻ>V@>>_=K=0, <ѺY>I>.?T??>6>=͈=h|=h|=&=!>ū>_>>_>w>>M=r=qA=G>=!= =ua=n_>>#>Uw?ˑ? A>!>t>~=!=o4Y>8?]?#u?%? k>Ğ>x3=O=b=`h=F=9>>Z&>Fd> >>|>ER=z=d=X>==w=y=>>1?B?2?H?;>>+c>B={=!<.;dū>v>݆? c? >L>=X>lx=#=!}=#={=Qg=z>)[>V>o4>lx>R@>F=&=_L=z>=X>法? A? 6> >"X>>=wzua>F>>>E>> _L=h|<4>b >_>=o=F=d=w _L>w>z>0>>>d>p#=uQ=Q<%<9<2=d=>T> >>|> m=lx>z>T> >z.> =w=!>2>n=4=&=d<_<2= =O=f=O=<];d:9;'l;&9>>d>!==^O<<;IV<..>A>D>P=9={ >0E>6v>_=&=wz<&:9;'l;IV;IV;IV;'l:9:V>= ==8<2;9)T>R>>P>>&=d=w qA><>$q>|D>j>->+c> _L={T>>9'>%?S>aC>c>M~=qA=RB=r==V==z==1==d=ua=wSM5>?q> >D)?>O>>SM5=)=w> m>9= =|D===o=Ѻ=V==r=#<];IV:V;dF>x3>>H>Ԝ>z>>I%=R<<9;IV;&<]=0, ==V=4=.=4=͈==d==D==6=?q=ua=<, ;'l;.K>>>K>b >@I==Q<an>2==<=f=9a=Fa=y===#=}=!=]ɼ>U>>e!>̞=F=!} > =z=|D=k=%<%<<_>ds>*>y>3ס= ==SohFB>>'1>Y>.$>p==}Ŋ=w=_=f=?q=uQ> m>>T'>TY>So>3ס>=z=q0= kn>w>)>ס>o(>K>x >=w=0, !>>q>%>V>Ʒ>v>6=d=+<=+<={=v=z>.#>]ɼ>z>v>TY>=O=!=#\7>>~>法>V>>>>X>=|D=f>+c>>G>ZP>H>>Jc\=}=#=#=wz=D=z>)[>X>>qU>lx>SM5>b =Ѻ=!=0, <=9=b=c\>c9>G >W>Ŋ>Ŋ>>T>=I=wz=!<2<;d<, =G>=O>|>>>Ѻ>ס>+c>=!<=R=So=w=o>9>(>ER>A>K=a==ua=2->>Òk>>法>^>>} =I=sI_>5>>d>z>SM5==#<]<%= k=\7===!=n_=a=uQ=={=0, <V>T>>>g>>So=o=>a̞>ER>Q>2=|D=f<͈.#>>_>x3>W==-|<̞>9=!=w=_<a=0, =!===^O>us=9=F=#<:9;.<0, _>b =z=D=Z&<];9;V;d<<9;V;IV;V<2 _L> =a==So<]:9 >9>6>Fd=D=Z&5>>>m>>2=)=%>iR>&> >>>auQ=C=h|!>a>m>O>=X>>f=O=q0(N>B>>>8>!}==Qa=!=d=T=)==r=wz={=-|==R=ua=)T>D>Ko>n=>=y=F<=h|=d=4]=!<<;V:9;.<0, =+<=wa=f=sI=h|=4]a={==x3=r=b=Fa=F=9> _L> =#=)=@Ia_> = =D={=#@I>>>_> _L=d=2<%#c>>>w>n >=1=wz=w< >>>?q>>N+=Ѻ=Q<4*>h>n>=Ѻ==>ap#>v>5>5>7>> =d=8 >>>>+c>TY=O=QB>F>_==o=k=>a<}Ŋ>>8>ס>)>b >6==Q<4X>>_>+c>9>$==_<, <%=9=UW=x3==!=n_=I=O=)=ua=!}P>ʅ>ٹ>>>>6==@I<&!>A>Q>=O=lL<ѺVr>_> >F>ua> =.=F<2;jd;Va=8=2<<<, <!>P>Jc\>b =V=da=h|=f='l<4a=X>=4]=R<]<:9<0, <.<%9>!=O=w=.>?>:"X> _L==ua= <2;&:9;V<a=0, =<͈n>>T'>:"X> _L==y=w<, <0, :9;'l<9a=Q=>a=F _L>=9=&=f= k<, <0, :V=X>=>a=w<4<2<0, ;IV<0, <Ѻ=!}=f=}Ŋ=r=f=F<]= k _L> =n_==!=0, !> m=n_==>a<<!<<]<=8=ua==d=d=k=h|=d<4<<<2<]>TY>[*>A>B=D=h|=!<< _L>=r=D=>a<]a=wz=w=d=d=R=f=<4<, a=w=>6>p>Z>h|>%=&={=<<>F>Uf>ua>`>$=O={=9<<;9:V<法a=0, =wa==9>_>6>.#>=Qg=`h<法<0, :9:9a=ua=wz=So= k<;IV;IVa=o4=ua=\7=a=0, =R=wz={=ua=UW=a==&=}==!=`h=w<%a=R<=h|=b=8=w<4a=Fa==uQ==wz=F<]a=!====F=da=0, =w=da=h|=ua=h|=:<<.;IV:9;9;IV;.<9a=X>=G>=d<法a=8='l=w=!a=Q=8=<%=>a=w=f=b=Z&=`h=Z&=a=%<<, a= <% _L>=Ѻ=F=b=<&<_b >F=n_==}Ŋ=#B=4=={=F<͈=O= 1=w=@I=d _L>#>9=uQ=F=8<%>)T>==<=So<&<0, :9;V<_ m> _L==F=#a=f=q0=`h=#<=>a=8=0, =Fa=Qg> >IV>Q>&=uQ=!=d<4<]<===R={=b=0, =0, =q0=F=Qg==d=y=2<͈<!<.;9;'l;9 >9>?q>>i>ua>==C 1=9<<a=d=z>0E>TY>So>0E>9=䚭====!=k==I> > >=&=w=8.#>>I>t>>K>]ɼ=<=w=>a=9D>><>sZ>~>G>> ==V===1>Z>:"X>c9>r>z.>J=z==8<<.a=&>>U>7>1>I>.$>B>U=#=f=w=!=8==r>TY>>b >>9>SM5>_=#=|D=D==>K>`h>w>v>?q>U>G:==ua<W> >}>>>i>*=)=X>>[>v>n >SM5>=z=ϡ=8=d==O>F>V>_><>:>m>`==y<<2M>!>>_>&=ϡ={=<]>=0=͈===r=wz=!=)=>>c9>b >]3> >>a=1=`h=0==wz=R<2<;d%>HJt>!}=9=r=9<!;jd:9;IV:9;V<<0, a={=9={=8>0, >ū==I=!=%a=#=w=w=)T=`h=f=E%=w<&<P> >P> >>P=n_==2D<4<2 _L>>>=X>o(>c> >SM5=uQ=ua=!<, a=>a=h|={=}Ŋ=d=!>x >>z>D>jN>d>r=n_=y<<2<0, ;9<]=+<=x3=D=8=={=f=>a=#=2=+<=C 1=>a=w<]<;V*g>_L>>7> >>^/=O=M<]<0, :9<!=w=C>P>f> >0=>c9==!=`h=>a= k<, ;d:9:9;'l<0, a=0, =w=8=F=>_>M~>N>=c\=ua<<%Vr>?q>'1>h5>=X>U>=d=8=9<4>Ko>o4>n>N+> m=uQ=8=F=r=wz==o> m>6v>:"X>=䚭=R=!}>>^?ˑ?&?&>>>(=D=h|=#=#=lL=>#>x3>>O>O>>x3>F>=uQ===4>=G>>+c>&>+c>xF> =d=>a5jN>.$>0?/`?A.?)>>̞=d=h|=h|=d>Fd>>>>M5>҃>;@>>>8 p>==n_>.#>>>ס>Ε+> >7>> _L==#<法>ū>V?,!?A6f?>2?#S>>+c>#=={=y=]>2>U>>,>C>>Ʒ>:>>Ko> =z>Fd>So>F>t>ɼ?? _L>O>>[*=Jt=`h>D??$?$?>>P>n=D=ua=h|=}>*>z.>>b>%>>t>P>p>"=z=!=z>ER>w>g>px??Yf>۱>E>|=&=dFd>>>ʦy>9'>V@>+c>N=!=!=+<=d=q0=>n>p>>> >8>\7>F==== 1>B>]C>&>1>r>Ŋ>W>qA>TY=D=0, Uf>_L>x3>n>(N=9=!=w<%B>_>>=uQ==-|=ua=f=y=)=a>F>+c>>V@>!>W=n_=wz=F=E%<法>D>ū==wz=wn>5jN>XY=n_==ua=w<&<a=E%=q0=Fd=w=R=o4=)T>>v>$q>>+c>Z&===C 1>P>J>=O==w=9=w=D==9=V==f=w=>|>g>%??>;>>> _L= =]ɼ>5>k>Z`> _L=&=]===!=>=L==q0=w>ɚ??,u?/`?mt>-[>>`=ϡ=lL= kf> >>e!>=9=z=====r=!=)=UWm>? c?1*?88?/C?,>>̞=䚭=h|.#>iR>hFB>5jN=a==}==d===ϡ=<=wz=9<<HJt>>??+ح?#u>>=X>f=6=#<]SM5>?q>:>!>>Y>>=f<];d<{a=wz=wz=f=8=!}=w=9<z>}?P>+c>+c>lx=4=h|<]:9:9a=X>=E%=#a=-|=qA=d=!=8<&<:V;d<!<=F>b >d%>m>T>sZ>6=1=O<a=F=9>!>!==#=-|=lL=>a=2=.=f== > > = =)=C 1n>P>,?} ?;?>> >=9=8=w==8==a>X>>+c>>K>+c>c> =W===w=|D>2>q0>0=>_>d%>6v=ϡ=h|= <<!z.>??A?TY?MF?/`>0> >B=K=lL=ua=)>̞>9>> >>>9'>>5>/=z=uQ= >/>8>.$> p>Ю>;@>d>v=={=8>M5?1*?Y?o8?jG?Mc?@~>>\7===?q=L>[*>>??h?"?l> >>z>$> _L>>>!>9'?B??rM>m>7>`h=͈=h|=9K=>?-?W?o8?lx?R2?d>E>>=8=>!>|>>ֵ? c?"%}?! ? >ӐR>.$>} >:"X>>@I>w>>x?(?:?:C?&j>7> > _L=9=.0E>^??;֔?TY?TY?;q?l>)>lx=z=)=d=#>\7>>t>? A? >4>z>>f-[>ū> _L>(N>>5>ǣ?-??*?@d?/`>f>K>=k=F<%<, <, lx>>m?? ?S>jN>_>$=I=}Ŋ=wz=<> >>>>Ю>Ʒ>I>>n >= =C=n_>N> > ??D?0?2?>>+c==wz<<<!Vr>P>>[>>>==o4=w=w=X>=&=I>C 1>z.>/>>k>+<=4===-|==䚭>@I>>6f>Ai>P>ӐR>>N+==#<]>$> k=uQ==#<%<<2<Ѻ=w=`h===O=uQ===wz=@I=w==#=lL=)=z>TY>{>h>(>(N=8=8<<:9:V;.a=)T=a==G>U>ʅ>_>c> _L=8=f=<͈<<@I>>P>Ko>b =9===k==]=O==O=<==E%= ko4>$q>O>>4>o>7>TY=!=!=#(N>>>&>x3>A==uQ=͈=> _L>!}>+<>= =)=o4=!}2>>+B?.?=? >>[*=&=wz=n >>7>>>>">us=z> >5>TY>V>?>*=6=sI=!}= k=0, =d>SM5>D?/0?Ck?Z`?_?O^?.>؋x> > =w=0, x >>=X>=X>>>.#>!=r>>=G>T>Uf>6=r==So= =!=8=&>=G>??F?c?k?]e?<>Ŋ>>&=w=!}<<9;9<4=d>;>F>>>+c>]ɼ> = ==z>>(>$> _L=|D={= +c>7?2?R?]e?TY?5H>_*>m==q0a=Ѻ>8 p>x >z.>J>=c\==)=8=|D=䚭=O=#=wz=R<<<9=)>>>?'?7?1G? >E>Uf=<=`h=h|=o4=`h=K<&=)> > >>>Jt>.$>V=} _L>6>$=uQ=d<;IV;IV;V;d<<0, <@I<0, <;&;'l;d<{a=UW=M=%a=X>=O=%<<, <0, ;9=So=!}<法a=d.#>>!>c>>c9= =wz=w>P===-|=d=.#==.=wz=> _L>->-> _L==f->>>?;?-k[?! >ɼ>>ū=}=d='l=!}=\7=d>B>|>T>>>>>ū==)=k=&=>HЮ>U>>?q>+c>f=<={=> ?(?N+?a?[?=|>ZP>m>XY==r=!=>P>_>E>\i??>n>D>+c>?==9=z>SM5> >o(>>䚭>>b><>=_L=.#<4+c>>?<~]?g|?y?|?\z+?*9>@>>!==D>>z.>)J>%?Yf?)T?)T?.>%>->} >-> m>4>0=>>px??0M?.?>>*=!=y=w<&<]<=>a=!=>>H[?9z?f-[?U??`͉?1G>ɚ>>P=o=o>n>P>>0?!\&?0?0? {>ZP>>>F>XY>SM5>ʅ>)? ,p?7@?G:?FU?4>i>>2=F=)T<4TY>#??K?c?b?K?H>D>> ==>̞>~>>;? ,p?"F?"%}? A>>.$>~>)[> >:>>;?Zr?:?L?M$ ?:? (>>5=?q=0, <法<<=R=O=w=z>5>6f?sZ?1?3ס?>'>&>O=9=w=x3=|D>%>I%>>>>24> >>5>+<=z=䚭>>`>v>>?)|?=?>2?->G>7>=9=w<]<.!>>:>>Ո>>b >IV=!=!=>a=8=wz=jN> >lx>>m>P>>\7>=|D=}==}=a>auQ>>>? ?Q>(>>ds=1=Q_>P>So>+t=z==X>!>!=L=6=_L=f=%=F=+<=wz=>n>>T>>+c>M~=|D=faa=h|=q0=`h=#=R<&<.aua>?q>>>I%>:"X=O={=!}<4<V>>R>V> =*=6===!>> _L=r=O=d=wz=0, sZ>ȍ???Ƹ>>>>===8f>7>>>?q>>!}=r=z> >5>T>[*>IV>#=ϡ=k=Q=w=!}=>HЮ>8?e???SR?S?>u?'>D>|2==r=#<4!>>t>1>1>=X> >\7>>2>?>f-[>d%>9>lx>.#===Q=d=>a=>z>j?1G?Yv^?s?z~?e!??>i>>=F=8!>>I>ʦy>>E>&>ds>)T>$>I">n >9>9>g>$=O==0, =w=@I=>_>c\?/?]e?y??v|?P0?Yf>>(=F=#xF><>b>E>.$>U>A> m> >>N>^O>\7>:"X==)=@I<_>? c?Jc\?kI?x?j ?H ? >>=uaus>v>F>+c>p>3ס=a=W==>> > _L==}=OUf>#?I?A.?O?Gr?(Q>,>v=d<=!==R=}Ŋ=r=-|=_=&==q0=_<G:>!>?>> p>=DHJt>|>f-[> =r<];'l:9;IV;V<a=>a=!}<<]<0, B>n >+c>m>>>T'=ϡ=h|= >>=9=d=h|=#!>>d>=#=C 19>{>;@>m??>ON>_>*==Z&=#=w=0, =9=!>So>+c>>v>.>`>==-|=ua=-|=Ѻ>5jN>>P>>b >\7=!=ua=[>I? ?>u?R?L?/`>҃>{> ==y=y=}>>>F>j>ǣ>m>ӐR>>>=uQ==䚭>6>>>>؋x>'>7>=#=!=!}Z>?.?X>?n?jd?O^?.>>f=n_=)=)=>Uf>>0? ?!`?"%}? A>M5>>c9> =z>F>>>7?@~?(?$?us>>n=ϡ=ua= k<<, n>?*E?W?pf?n,N?TY?#H>>> m==>Z>|>c>/?I?)?)T?.>>F>X8>d>*>+<>B>ס??18?@d?>?*>L> > _L=x3=#/>d??=&%?UD?U?>?>>}Ŋ>!=D==n_>^O>>͈????>|D>>]ɼ> =z>h>i>b??3ס?D:3?Cp?1>m>?q>==#v>I>K?$?'? _L>6f>+c>9=ϡ=k=9=>>} >.$>ON>r>/s>>!>}?P>_=!==!>Ko>7>ӐR?7?4?4?>0>>=!=w<]<.=w=a>e >K>8>J>.$>8>/=Ѻ={=8=2D=o4=)=>T>8>h>z>x3>P=z==w=}Ŋ=x3=O>P>7>>>2>0>K>D=D=M>6>D>P==&=E%Z>auQ>>+c>W>&=Qg=`ha=ua={=lL=0, aa= <Ѻ<<_\i>m>.$>>w>6=͈=ua=wUf>R>R>Z`>#=uQ==D==>!> _L=r=uQ=)={=8a=͈>R>~]?`X?ʅ? >O>c>p#=L=r=!}`h>>>>?q>>(N>!=r>#>:"X>Vr>]C>Ko>==w=b==K=-|>(N>$q? ?<~]?O?O?; =? >N>[=V=h|= a=.>w>T>ON>ūR>=X>P>_>(N>")>G>>lx>9>̞>n >3ס=L=F=b=!}=6v=d>[>ɚ?.]?UW?q?v ?b?<>px>+c==}Ŋ=F_>>Jt>ɚ>E>&>i>2D>.#>SM5>x >>R>lx>*=䚭=9=8=w=2D= >O>)?-I?Z?|??r?L? >K>!=wz=9<];l:ViR>>I>z>>Zr>ER>_>U>+<>So>d>`>D>!==`h= 9>?1I?H(?i?vn_?g|?D[>r>z=C=2DhFB>>b >W>0, =a=O=9=<> _L>F> =<=T=f=!<=>So>t?@~?@d?N?CՈ?"h>;>ER=ua<<:9<=G>=8=#=z=h=)=-|==-|=w=}==d=}Ŋ=0, =>I">v>r?2V>%>=X>`h=Ck>vn_>Y=r=ua<9:9;IV;d<0, <0, <0, a=o4=ua=X>=w<%")>6>F=uQ=!=a=>><>S>J>>>$=Qg=f=d=!<4D>z.>X8>SM5>!==ua=8=2=N>X8>̞>hFB>n=)=0, >v?K=??.>ٗ>>Ay=o==So=>k>.$>ס>>>I%>(=ϡ=.=-|=d=n_>`h>>>E>>>A=D=`h> >?*9?@K?=|?! >ɚ>>h===}Ŋ=}>us>}Ŋ>}>e>4>>>>} > m=o=D=O>2D>+c>D>e>]>k>y> >&=d=8<4<2<. >+c>>?+ح?B?B!K?)>/s>P>ER=O=w==>P>sZ>I>e??>uQ>8>I%>!}==V=L>SM5>?q>??!}?7>r>>e!=Ѻ=q0=!<]z.>?$?,u?.?:>>+c>5jN=|D=_L=-|=#> _L>>qA>,>>>9>~>>> m=O==O>:>m>? ?%J?#+?>>V@>z=!=wz=<]>>'1>7>n>>>c9== =jd=f=-|=V>%>5>>>t>v>5> qA=O=)==}=z>}Ŋ>ٹ>ٗ?[~?b>W>>M~==f m>|> >P>U>O=a=F=C 1=w==%=ua=8>>G>>lx>lx>IV>Z=6=k=h|=C 1=d==>p#>>V@>b>>c=a=k=#>0, >6> =|D=!=#<4<2=a=0, =w<<4=d=ua=<法<.<;'l<==ua=d==Qg=={=b=>a=6v=6v=Q=o4=}Ŋ==ua=`h=%<<]<<=.#=)>b >z.>>>^/>9=}=>a_>M~>N+>7=L=D=d==)==uQ==uQ=Qg=x3=h|=#5jN>>>n>ٗ>3>+c>)T=<=>a>>>m>8>P>==!=n_>>+t>3ס>&=n_=D=!=>a= k=9=f= >+c>Ԝ?C??5'1?4†?T>Ѻ>+c> m=9=F<%Uf>>5>>>>2D> _L> >ū>Ko>^O>`h>J> m=V=-|=>a==F=}Ŋ> >d??; =?TY?W?E%?>>V==%Vr>v>O>$q>>k>#>_>)[>SM5>ds>c9>J> _L==wz=#<=w=}Ŋ>!>???*?\7?cV?T{7?0>>x =)=w<, b >A>?q>>+c>^O>=z>>#>.#>G>>A>P==w=>a<<&<=h|=͈>>ϡ?-?Mg)?W?K^?'>T'>Ko=y_>Z`>auQ>;==>=6==uQ=a=r=z=W==C 1F>>۰?$?3Qg?'>!>=O#>x3>>1>8>F=r=#;IV;&<!>ū> =6=!};.;'l;jd;&<'l >+<>P==F=8 _L> =n_==>a76>sZ>T>&>!>=#=h|=!}=98 p>ua>|>P==)=jd=0, =2=8==<>E%>>x3>}Ŋ>3ס=|D=h|<|>}>>6f>.$>}?P>R=)=h|=0, =!}=2D==9>G>>I%>>>+c>Uf=4=d=y=h|={=>%>5>>>>w>.#=6=b>B>l>Ε+>'>V@>{>+<=|D={=Q=>a=d==r>hFB>m>>->?q>|>*=D=_L={=R=&>I">h>t>z>->>m=4=-|=F<%<{Uf>>D>6>.$>>==ua=>a=2D=Z&==L>N>_>T>>+c>T=<=)=!=ua==>.#>>>~]>'1>>o4=z==#<法<>n >+c>P>x3>ER=L==>a=F==!}=d=)=z>D>r>xF>Oe>=T=!=b=>a=Z&=k=#>\7>7>ޓ>>sZ>5=&={=>&> _L=Ε+=R=0, >T>So>=O==:<<]!>>d==8=h|=!O>+c>>>>ER==f9>?>F>==D=}=)=D=|D===C==!=Q=<&<%=w=>!}>]3>>K>>Ʒ>v>3ס=)=.<, <.:9<.=C 1=ϡ>A>w>} >\7>F=!=c\=Ю==r> >#==c\=x3=^O=T>l>ZP?7?"?Fd>>R=&=0, <, <0, :VD>p>>`h>===uQ=<> _L>>F=r=>=-|=>a<<a=>Q>>?(N?/?>Ԝ>b =uQ=<{;IV:V!>IV>SM5>$=a=I=D= 1=uQ=a>==uQ=d=f=w<%<<]=!}=k> > >j??!`? A>Ʒ>Fd==O==w=r=r=x3=)=6=I=jN=F=h|=w<%=>ER>>ON>r>t>>=b >n >>|>#=!a=>a=a=R=T===\7=!<]<_=!=qA=`h=!a=F=!>_>+<>&=4=.=82>.#> _L=o=!=!}=F=䚭> >=4=)=h|=#= k=!==X>=}=n_>5jN>Uf>Ko>=>=ua= <] >ū>Z==!=d>M~>=> _L=={=F!==o=.=b= <&<.a<<<=E%=%=<> _L>.#>3ס> _L==o4a=>a=O=f=ua={==ua=So=!}w>z>+c>z>G>&==#<2:9F>>c>g>>s==uQ=:<2=>D> >>ס>c>==# _L>>>>?q>`=6 >\7>>]ɼ=z=f<0, ;'l;d<0, ===uQ==o4a=.a=8=F<4=wz=-|=r=`h=wa==>F>&=z=&=#<.:V> qA==&=a=w;:t:g]:%::9:::g]:t; ;cf;8+<0$<_<u 0>J>i{>D4>E_=<^>4>BD>g> >=&<ðF;ۀ; :::9999:::g];;>>͖??!">ƺ>Tb=G=(Ĺ<[;cf:\i:%::9999:999:::g]; ;<<@<ĹV=f_=~Q>3@>Ӌ? ?>j>]>7=v<;5;%::::999:::9:::g];;<s0<=*RP=T>JL>I>?>l>>#=D<ߤ>}> 4>>Z>}>Q=<?(>eV>R>&.=={<#<~;:;:g]:::9999::g]:\i;-;<cf:::9:::%:;;W\i;<N=? =U=,C==G=+=u=lu<<y;Z:\i:%::%:g]::; ;Z;*1.>{>{>P>3>EC=#4=?<: B>Xex>=>Ӌ?Q?? {>r>=E=f_<ðF>sk>>,??>?S?Ijc?" >ݳ>~="=D4<Ĺ< ;>:g]:::::%:g]::\i;;%;:<u<:^<~u>TA;>ex>???6.?_t?r?fӽ?>?E>B>?==K;p5;Z;<< <4(a:>X>>Ӭ"?E?5JJ?Ukl?a!?P%F?4?>՝>={x=eV<Ĺ<u;>:\i::t;;O;Z;;8+;5;<0$(>>L\>??*Z?.?#?-?Y>t9>S>Q=,<ޛ>tX>R>>^> >F&>;G>>p>oO> =I:>5O>`>7>ѫ>i>D>:>RP>>5==D4<\i<<;Z;W\i;_;;<u<y<N<N<<; ;5;~Q<<%>5><=ri=Ϙv==Kt9=<C;W\i;Z;;ۀ;<u;;5;cf;cf;Z;;a;:;5<a;;<;;;<;Z:\i:\i:\i;;;;>;Z;5<><ԃ<;6:;%;:%:%:%:%:%:g]::\i;W\i;:<<><_;cf;;;8+;ۀ;5;5;ۀ;:;;;cf;W\i;:\i::%:%:%:%:%::::9:::%::\i;;6:;_;cf;p5;_;>;-;;:]::::%:%:::::::9:::%:g]:::~Q; ;%;%;;;:\i:t:::%:%::::9::::::%:g]::\i;;;;:\i:\i:\i:::::g]:%:%::9:::%:%:g]:::::::\i:\i;;;;;;:\i:\i:t:::g]:%::::::%::\i;; ;%;-;-;%;%;-;-;>;W\i;_;g];g];W\i;>;%;;:\i::g]:%:::::%:;;O;cf;;;:;;\i;\i;\i;ۀ;5<cf<u<<<;5;;;Z;_;-;::::%:::99::;;g];:;5<<*<0$<@==$=&=&="^=y=>>3R>5>#>k>\>A> ==t=,=*RP!C >qn> >N>>gH>q>>+>g>wب>5O===Y=3=<=~==2=n@==5S==z={=Kt9=&.= 0h<><>=Z=L}H==I>T>\>-?o?Fh? ,?s>>%>>b>>wT>C>-L====,=r=+:=k*= [=&=E= =!=V="^=<8+<R<V>+}? ?6?HY ?HJ?@~?.??>z>x]>>=7>'>=> >5> >'>!>=֕=܊=W\i= 9w<<<=*1>>?N?[?s?v)?v)?aKS?C?,"?>Gq>>}iZ>Ov>@:>CL>P> >^>b>Q>1.U> ==0<>?K?aC ?xL?}??vϘ?U)(?7K?>;>>>zp>oq>kx>pV>o.>[_>94>~=b<><<[;;;>;:\i:::t;;N> ?1?G?T1?h?Z???'`? :>>ɴ>A;>}>fN>R>D>9>*>=e=m=E=<@;;_;::%:::::%;>F> >o ?7??Ϙ? *s>o>Ռ>=>`>3R>t> 0=E=ا=L=c=UJJ=lu$Z>M">~>JJ>>L>H>y>Q> T=,C=(a==tޜ=;T=!< < >I>u=_=0=V=܊; :::%:99::%::\i;%;_;<;:;5< < ;5;Z;::::g]:%:9t9t:::%:g]::t:\i;; ; :\i::%:::::::::%:%:%:%:%::99:::::9king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rota/ile.ndft0000644000000000000000000005046211531212716024537 0ustar rootrootTop500 Ile B<40CCHH:i-:v:-; O;#;#; O;:-:-:v::i-: O:i-:-;/b;i-;up;vz;i-;^';/b; O:-:-:$:i-:;$:;$:-;Fg;O;;b;b;;';i-;;$; O:-:v::;$9;$:;^;';b;;;;;b;;i-;;$;:-:$:O:;$:i-:v:-:v:i-9;$:v;i-;b<<<#< O< ;p;g;;i-;Fg; O:-:$:O:;$:i-:-;i-;b;b;b;:-: O:;$;;< Ouu<;i-::;<#u >=M==2O3<;.JD> v> V>k> g==*EU< <2O3;b;O;Fg:-::;$: O:i-::$:v:v:$::i-: O;;g=Rv=>>>A> j>Ѥ>W=S=w=E>`>>T?=>b>hT>o==<;l<;g;;^';:$:O:;$: O:;$:i-::v:-; O; O; O:-:v::;$;;b< <5;=H=@[>R>j>>=>>@1=Jg=~Oa=X<;l<;v;;i-; O:v::i-:i-:i-:O:$:-;;^;#;^;:-::;$: O:-;;-<<;$x>=Ea>U>->w=L=G{u<<5;;-;;i-;#:-:v:::O::$:-;;^;/b;#; O:-:v:O: O:; O;^;'< <,v<2O3u<,v< O;OJ;;i-; O:v:O:O:O::-;Rv;A< O<;$o>l> .=a==;l<;l<#;; O:: O9;$:;;i-;$*>D*>2 n> .=v=6<ɱ .>?v>]&>L>H==]l<;=6=+==f=4o=E>>39 >R3>9> =l=^'<Ŋ<R<,v;A:-9$:i-:v;^;<<= ;=,=o=ج=1=b=w=2O3<Ŋ<;l<;$<;b;;b;p<,v>!>EI=p=L=H<9<R=cEx==i=EU=X=jB=b<==Z==d>>{u> 6}=q='=\= O=1=ev=cEx=(=E>< O>jB>y>Ȱ|>1>~>7=JD=_= /<<$h{>0?g!?/ ?',? >>V=!=C=E>=Z=>>D>Y ^>->q=]=g=;l<ܱ<<>u;v;Rv;^;^;Fg;#; O; O;^;^';^;g<;l<ܱ<<0<9==[p>eB? b???{%?r@?6q?v>\%t=El=w=<̞K/>:0>>B>d>ǻ=]=Z= <̞uq>??5?p??GƢ? {i>z=p==<ܱ<c>/.>>_R>g>T=;=|9=<~[%> ??5 ?FD?)!?>n;=OV=y1=L>R??>‘>n0=Oa=X= ;<~<*<#;b;';i-;#:-::i-:;$:i-::-; O;Rv;';v< }>]M>(?? .?9>u>$=X=H=E><;uG>=>>W>>S1=ج=jB=X<̞<[;<;l;;O;i-;:$:;$:;$::v:-;i-;$<,v<*">hc>@O>pY>"=˅j=sY3=X*>v>=>\>q==%<;<;l<5;;v;^;i-;Fg:v:i-:;$:i-:$;#;b< OP=q==,v<~<<@;;';i-;Fg; O:i-:;$:-;vz;-?K?]X%?4?%qv?5?,??>8>`>>@>f;>>t>=?=m==iٺ=>t=&X=6===/P C>/7]>]<>V>B^>v?&?+?dg?1-?E?J,0?Ok?`D>?fG?rX??_7?z^?`?Wp?R?CA?/?? H?Q6?i> >,>&>u>L>&>9===O=t=R߫=>f=!?=X<^> $>Y|><.>>$A>˟>?>>>"w>C#>q>R>m\>>>T>>!>gX>o:>Sb>,%1> 1= =Ő=̐=v=k=Ѯ= O=jS=R0== !== <;;@;Zak;Zak;Ov&;Ov&;.V;; ;@;@:ak:Ċ:V::@:Zak:Zak:Zak:Zak:@::V:ak;@;;9;Ov&;Ov&;Zak;Zak;eL;@;;;V;);Ċ;;Ċ;>;V;>;;;;;|;;;;<h(<.V i>,>K>{z>%]>NO>>hj???'i.?8x?B?:W?(/?6V?(/?z>B?~>&>>j>P;>D>)>r>>2==={=S`=66==<צ;>;h(;@;Zak;Zak;Ov&;9;@:@:Zak:@:@:@9.V9.V9.Vking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/rota/glu.ndft0000644000000000000000000055377311531212716024572 0ustar rootrootTop500 Glu B<40CCC4-- :p9>;#;#;#:#99>:p9>9p9>9p9>9p9>99>99>9p9>:#;C.;p9>; 3;<;p9>;C.;#;4*; 3:p9>:p9>:p9>:p9>99>99>;C.; 3;$;$;$;#; 3;p9>;C.; 3:p9>99>9p9>9p9>9p9>; 3;p9>;'Z;$;$;$;;;p9>; 3:p9>9p9>9p9>;#;p9>;;;; 3;p9>;p9>;C.:p9>9p9>9p9>:#;4*;R2;R2;C.;#;#;#; 399>9p9>9p9>99>99>9p9>9p9>99>:p9>:p9>9p9>9p9>:p9>:p9>99>9p9>:4*:p9>:p9>99>9p9>99>9p9>9p9>9p9>9p9>9p9>; 3;C.;4*:#99>;R2;$;t;t;$;R299>; 3;$<_N<(?<,$< ;$;C.;#;$<<7<;<%'Z;t;p9>9p9>:#;;9><%'Z<4*<#;5;a59p9>9p9>;4*;;t;t;5;; 39p9>; 3;R2;p9>;R2:#9p9>9p9>9p9>9p9>9p9>99>9p9>9p9>; 3;C.;R2;R2;#:299>; 3:#; 3;#;#; 3:p9>9p9>:4*;R2;;$;$;$;;p9>;C.;R2;C.;C.;C.;C.;4*; 3:p9>99>;R2;$;t;9>;t;t;$;'Z;<;R2;C.;4*;#;#;#; 3:#9p9>;#;;t;<< ;;t;$;$;<;#; 3:#:#:2; 3:#99>99>;R2;$;t;;;t;$;;<;R2:p9>99>9p9>9p9>99>:p9>:p9>9p9>99>;C.;;$;ʰL;$;;a5;C.;#; 399>9p9>9p9>:p9>:p9>9p9>; 3;R2;p9>;p9>;C.; 399>99>99>:4*99>9p9>9p9>99>:p9>:p9>9p9>9p9>:#:9>:p9>99>99>99>9p9>99>:p9>:p9>:p9>99>99>99>99>9p9>9p9>99>99>99>9p9>9p9>9p9>9p9>9p9>9p9>9p9>99>:#:#99>;#;;ٳ;t;ٳ;;#:#;<_N<7;<< 39p9>; 3;p9>;$;$;;R29p9>99>:4*9p9>99>:p9>99>9p9>;#;C.;#99>:p9>;C.;p9>;R2:#:p9>;C.;R2;C.:p9>9p9>:9>; 3:p9>9p9>:4*99>9p9>9p9>:p9>:p9>:p9>99>9p9>; 3;4*;R2;p9>;R2;#:299>9p9>;#;p9>;<; 3; 3;p9>;R2;#;#;$;$;$;$;;<;p9>;#9p9>99>;R2;.;9>;;9>;t;t;$;'Z;t;t;t;t;5;2;2;$;;4*9p9>:#;a5;ٳ<<7<7<,$<< ;<;t;t;t;t;t;5;5;t;t;$;p9>; 3; 3;R2;$<_N<7;t;2;R2;C.;R2;p9>;<; 3;;<;R2; 399>; 3;p9>;;9><<< 3;t;$;;p9>;a5:#:p9>:9>;#;R2;p9>;p9>;C.:#9p9>9p9>;#; 3;$;ٳ;;#;R2; 3:#:#:#99>99>:p9>:9>;4*;R2;R2;#99>9p9>; 3;R2;p9>;C.:29p9>9p9>9p9>9p9>:p9>;#;4*;4*:9>9p9>9p9>99>9p9>9p9>99>:#; 3:9>99>9p9>99>:p9>:p9>9p9>9p9>9p9>9p9>99>:#; 3:p9>9p9>:#;R2;<;#; 3;R2:p9>9p9>:#;4*;C.; 399>; 3;p9>;5<b<7<7<%'Z;t;p9>99>99>; 3;4*;C.; 3:p9>;C.;$<<]t< 3<9< 39p9>99>:p9>:p9>9p9>9p9>;4*;.<7< 3<$;R2;t<4*9p9>;C.;;5;t;$;p9>:#99>:#:2:p9>99>:p9>99>:2;R2;<;a5; 399>;R2;$;t;.;p9>99>; 3;;t< 3;9>;$; 39p9>;4*;'Z;t<_N;9>;$; 399>;#;<;$;ٳ;$;p9>99>99>:p9>;#;R2;p9>;C.:p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>:p9>:#:p9>99>;R2;<;#;;<;R2;C.; 39p9>:4*;#;R2;R2;R2;R2;C.;C.;C.< 3<<%'Z<%'Z< ;;9>;t;$;R2:p9>9p9>;#;#;<%'Z<< 3;;9>;9>;<_N< 3< 3<<;p9>;$;t;<_N;9>;ٳ;;<;p9>;<;#:9>;#;C.;p9>;;'Z;;p9>;C.:p9>9p9>;#;p9>; 3;;p9>;#99>:p9>9p9>:p9>;#;R2;p9>;p9>;C.:p9>99>:#:#99>:p9>;#;R2;p9>;4*:4*:#;R2;'Z;$; 3;4*:p9>:#;#;4*;#:#; 3;;9><%'Z<(?;<;$; 3;;ٳ;t;9>;5;;#;#;$<<7< 3;t;<<4*; 3;<_N99>;#;p9>;$;t;9>;t;$;p9>;R2; 3;9>9p9>:p9>9p9>:p9>; 3;4*;#:p9>9p9>:2; 3< 39p9>:p9>;p9>;9><7;C.;;ٳ;t;$;p9>:p9>9p9>:p9>:#99>99>;#;C.;#99>99>;p9>;2;t;5;<:p9>9p9>;a5;t<4*;C.;2<,$<]t<<; 3;<7; 3;;t<%'Z:p9>;R2;<;$;5;t;t;ٳ;<:p9>:9>;R2;C.;C.;C.;C.;C.; 39p9>:#;#:2:p9>9p9>9p9>:#:4*99>9p9>:p9>:p9>99>9p9>;%'Z;C.;#:29p9>9p9>9p9>9p9>:9>;$;$;$;#;<;p9>;p9>;C.:#9p9>9p9>9p9>:p9>; 3;4*;4*;#:#:2; 3;C.;p9>;$}d=7=.=.=D=T=^d=H=H=AN=(?== = = = = 3<{<<5=o= Q== v<= v<===&=5'=D= =b= =_N<;;9>;t;5;$;;a5;R2;<;;$;$; 3;R2;#; 3;#;p9>;:p9>; 3;C.;p9>;;$;$;<;4*:p9>99>:#:9>:#9p9>9p9>99>;C.;;5;t;$;R2:#9p9>9p9>99>99>9p9>;R2;t<;;<;<;p9>;%'Z9p9>:p9>;'Z<7<;'Z;#;5<7;t;p9>99>;#<<_N;R2;t< 3<=_N= == =<.< 3;; 3;2<4*<<<<7<<,$<7<7<7<;ٳ;p9>;4*;R2;$< <7;9>;$;'Z;ʰL;9>;R2;R2;R2;C.;#99>:p9>;p9>;5<<7<7<;t; 3;C.;#;R2;R2; 3;p9>;;;<;4*99>9p9>9p9>9p9>:2;p9>;;p9>; 3;C.;5<%'Z<7<%'Z;t;C.;R2;9p9>;t;p9><(?<<<;R2;ٳ<4*<<7;#; 3;p9>;$;p9>;R2;#:p9>9p9>99>;#;p9>;C.;#:#:p9>;#;R2;R2;C.:#99>:#:p9>9p9>:#;C.;5;;'Z;p9>;C.;C.;C.;4*:#99>:p9>; 3;4*;R2;R2;4*:#9p9>99>;4*; 3;$<_N<<< 3;;5;;5<  >)> Y4==}d=r=Ǥ=1=/=~=p9>=c=g:=Ǥ=r='Z==W==7!=T)="O=>Lz> >?==&= R=}\_=~L=?==s#=dV=g:=1==7!=7!= = =?=m=K=3$=W=g=>I===b%=Xç=Y=`Eq=[R=T=I=I=Xç=lxY==_N=1=O===^=¶e=o=~L=q)w=Xç=?m='=$7!='='='=== =r='=5'==+=?m=@]=Fg=T=dV={{== v<=r= 3<#;t;t;t;9>;;9>;t;;2;#;p9>;#:2; 3; 3; 3:p9>9p9>:#;R29p9>:2;p9>;t<,$; 3:#:p9>:p9>9p9>9p9>;#<7<<_N<=l=*Ȳ=6=-^== 3<.<~<7<,$<(?<;t; 3:#; 3<=5'=dV=?==c=H=!fu=o< a< 39p9>:#; 3<4*;t;$;$;9><=JL=Ǥ====c=@]=CT<5<9<<== 3= 3=O=<< a<<<b;$;p9>;;t<%'Z;#;<;;t;9>;t;t;t< 3<;<<< 3;p9>;#:#9p9>:p9>;#;4*;%'Z;#; 3;C.; 3;$;'Z9p9>;C.;;$;;C.:2;$<;t;;#9p9>;R29p9>;p9>;t< 3;< :9>;#< 3<7<(?<,$<,$<;9>;$;R299>:p9>;p9>;5<;ٳ;$; 3;C.:#9p9>;#;<;$;<;p9>;4*:p9>9p9>99>9p9>99>;4*;p9>;#;;p9>;%'Z:p9>9p9>9p9>9p9>99>; 3;C.;R2;C.:9>9p9>; 3;R2; 3<7<(?;;ٳ;2;t;t;t;$;#; 3;#;$;ٳ;ٳ;$;<;R2;C.;p9>;$< <7=~<{<<.<>=/=G=\==uڕ=t\=i=[R=T=Xç=f=1===z=q)w=}\_=3=_=A>7>BzW>A>3:>#=T= a=@=$=?==-t=V=y=.=[Q=ѹ=.=Ė="O=>q>-!A>WB>^>[R>I>.ť> 3=ه=.==g=.=>I=æ=ç=>Lz>Lz>>>D>#>3v>FY>R2>Xç>Rn$>>>&˿==æ=>I=.=.=¶e==.=Ҫ3=>>Lz>j> >F>'>4f>E>0&>2J|>.z> ==^==='Z====W===W=aj==m=<>>>+=6=[Q=g=1==b%=Xç=[R=b%=c=_U7=T=QA=Y=g:=~L=?= 3==\=Ȳ=¶e=A=dV=c=Xç=E.=&= Q= ==== =/=~=_N= 3=S=r==$7!=-^=E=T=b%=~=_N;C.;#;#:#:p9>:p9>:p9>; 3;R2;$;9>;C.;'Z< 99>;'Z; 3; 3<%'Z=v=g>o>=T=$=}\_=E.=CT>0&>-!A> =.==K=<<+>2>)y>=_=t\=5'=_N<$l> Y4=t=Ȳ=s#=5'=_N<'Z<7<_N<<4*;R2;<;$;t;<<<0j :p9>;%'Z;p9>;#;5< 99>;#;p9>;$<9p9>:#;R2;p9>;R29p9>;R2;;$;;C.;R2;t<79p9><<<<$<<<$<{{;<;#; 3;$<_N<;#;.<,$<'Z<==_N=_N;'Z<%'Z<$<̐9p9>;R2;t<7:p9>9p9>;#;$< <7;<;t;$;p9>; 39p9>:p9>;R2;$;t;#; 3;R2:p9>99>:2:9>:p9>:9>;R2; 3;$;$;<;C.; 3; 3;#; 3:2:2;#;R2;<;;p9>;4*:p9>:p9>;C.; 3;$<_N;t<_N<b<;;ٳ;$;#;$<_NI=-^=&='=6 a=H=M=JL==+=-^=6 a=S"O=uڕ=>*>3:>3v>*> <=(i==W==9=6=Y4=o=-t==4=D=?='Z=^=g=>b>c9>r>q>]8>=9>=X=K=K=k===Ӛl=> 3>o>D> > &>q>)j>8c>Oه>8> >Lz>w>S"O>.ť> Q=ĵ>3>#=<>ʰ>$>6>!ޒ>,m>-l>+|>-l>4f>Cj>X>qݢ><>>>j>Fg>$s/=ĵ==|>ʰ=|=|>3> 9>i>*>,m>+|>/>5R>E>Y;>o >U>Y;>QA><`>=t=m=m=g==W=.=.=Ҫ3=!> 3> &> Y4>r>!*g>/>:q>I!>b>7> &==^=={{==)==)=_N=~L=?=3=ޒ=?===W=~r>>e=3==O=c=D='=!fu='=-^=5'=-^= v<=r=r==-^=7=B>I=K=[R=s#=O=b=== Q=_N<<<_N<~<<;R2;R2;C.;R2;a5;p9>;$;t<9p9>9p9>;C.<7<=#F=@]=?m='= <<9<7;t;#;R2;4*:#;R2=D===A=T)=b=Xç='=~<<;<_N;t;$;<;#9p9>99>;.<=:>.z>>}d>6}>i=6=3=QA=9<̐<<<4*<<_N;5;;p9>;p9>;;t5R>aq>p9>>^>7s>='Z=Y=<̐;t<Kܔ>q>v>]>2˜===D= 3<<4*< 3<<b<<<7<<<.=6=T=?>#>8c>Q>P>4f>ʰ==K= 3<)>B>)=ĵ=F=lxY='<:p9>;#;R2; 3;t<7<:p9>;p9>;t;R2;ٳ<7<<= 3= 3;$; 3:p9>;R2;$< 3<%'Z< 9p9>;#;p9>; 3;p9>; 3;R2;5<%'Z<%'Z<<<<< a<9;4*9p9>;R2;t99>;p9>;t<;<~99>;C.;$<;#99>9p9>:#;#; 3:p9>:9>;R2;<;$;;a5;#:#; 3;#;C.;4*;4*;R2;<;#;;<;4*:4*:p9>;C.;<;'Z< 3I=Nq1=Wm=U=I=B>I=E.=[R==\>.M>77>8c>/=>=[Q=Ȳ===-t=3=b==V=J|=æ=¶e= =^==[Q>#?>>i>w>w>cG>C> Y=r?==d==[Q=[Q=U7=\> Y4>P>@G>r>>i>.M>>G>U>>>Im>;->}\_>XK>0&>)>B>{>\A>>O> &>#>'>0j >1ZC>0j >2J|>9F>I>\>uڕ>>^>1>pZ>J8/>'>==>?>y>?>Lz>> J>-^>0j >0j >3:><$>Jt>>\>r>XK>[a>V/ >@!>#F===m==Ҫ3=A=̐=̐=ç=> >e>o>\>)$N>2m>>G>M>P>> |=/=^=Q=w=~L==3=b==?=O=3='Z=$=&=>I=z=I>\A>}==S=?=b%=B>I=&=='=5'=>}d=5'='====,$=?m=E.=S"O=b%=}\_=)=CT=== Q=~< 3<< a<<9>= 3=6=r< 3<< 3;$;<;p9>;p9>;p9>; 3;#;$;5<<;;#:p9>:p9>:p9>9p9>:#;p9>;#:9>:p9>9p9>;=dV=}d=<=O=}d==Nq1=r<ٳ<~<;.; 3;p9>;C.:9>99>9p9>9p9>9p9>;#<=>@G>C>Rn$>E.>'=;==D= 3<<7;t;$;;<;p9>;p9>;;5<4*X|>ʰ>N>s >BzW>l==K= 3}d=Y>,>q)w>>J>ubx>=Q=!=Im=.<77>[a>u>oI>I>= =E.=; 3;C.; 3;9>3:>,m>2J|>'=V=O='<̐<7;p9>9p9>;4*;ٳ Q=^=7!=uڕ=!fu;p9>< <_N<=!fu=U=x=V='=/<;ʰL;#:p9>; 3<<~<2= ='=-^<%'Z;<9p9>9p9>;R2;$<9p9>9p9>:p9>;#;4*; 39p9>;#;#;t< < ;t; 3:#;<:#;;<<]t<9;4*;ٳ<7<<<~< 3< 3<_N;R2;2<%'Z:#9p9>;#;;t<%'Z;2;$;p9>;#9p9>:p9>;4*;<;$;4*; 399>9p9>:p9>:9>:#9p9>99>; 3;4*;R2;C.; 399>9p9>:4*; 3; 3;#;C.;p9>;<;<;R2:#9p9>9p9>:#;%'Z;R2;t;< < ;t;$;; 3;#;.< <7= = =/<{ Q>=;>i> u=U7=@==~L=~==t\=k=uڕ=?=='Z='Z==9==y=aj=>Fg>Sl>Sl>C.>*=B=>I=y=:=}=y=^='=æ=T==|==>> >)$N>5W6>cG>p9>>mh>Y;>77>r= o==Ҫ3=K=4=k=t=!> x>9>=;> >f>(?>2m>?1>R2>\>en>`>L>.ť>=.=.===Ӛl=Ҫ3=[Q=O>#>r>@G>9>>*>2J|>>>O%\>5D>8 >4*>%'Z=ڕ=˜=\=-t=?=y=^=P=?=^=.=6=/==l&> Q>@G>'>0&===Q=^=x=[R=T=Y=i=xA=t\=dV=_U7=_U7=j=O====z=¶e=ه==r=g:=Y=@]==l= 3=3= v<='= v<=#= 3=?= 3=6==(?=5'=H=Y=dV=lxY=l= 3<{<<<<9<<+<+<< 3;<; 3; 3; 3;;$;9><4*99>:#; 3:#99>; 3;p9>9p9>;p9>=T= =]=J|==[R=&;4*;#; 3:9>:p9>99>9p9>:p9>;C.< >3v>>G>0j >#?==Y=r<;#;t<7< a=(?=>MD>r>v>Y;>,m=g=oI=<I=V>3>gO>>>\>)j==V4= 3;C.:p9>:p9>; 3;R2;2<75W6>XK>i>^>6}=O=r=r<$<_N;#9p9>;R2;t2>+|>/>0=æ=Y= 3< 3;299>; 3;2)=J|==ht=;<<< 3:#;$<(?< 3:p9>;p9>;5<%'Z<]t< 3<~9p9>:4*:p9>99>9p9>9p9>;#;p9>;;;p9>; 3;;t<<(?<;9>;; 3;#<;R2;29p9>;#;$<;p9>;t<4*<7<7<7<%'Z;;$;C.99>:#;p9>;5<;t;t;$; 3;C.:#:p9>;C.;;2;R2;C.:#9p9>9p9>:p9>;#;C.9p9>9p9>99>9p9>9p9>9p9>9p9>9p9>9p9>99>:2;#;C.;#:p9>9p9>;5;.;;R2;C.;R2; 3;$;$;'Z;;;'Z;$;'Z;p9>;C.;#;#;#;4*;p9>;$<.< a<#<_N<<<_N<~> 9> ==.==oI=dV=r=uڕ=f=b%=dV={{==V==7!=Y== a=8/=^> v<>*>)$N>7=%=?=x=?=6=7= R=)==9=@=¶e=g=Ň=.="O=/>_N>r> > v<>>=.=9=z=}\_==S=o===='Z=T)=æ=æ=g=ç=>~>e=T==Ҫ3=J|==_U7=Nq1=V4=e=uڕ=oI=b%=[R=a5=uڕ==r=-t==^=}d=.=z===uڕ=U=-^==='=6 a=B>I=6 a=(?===!fu=5'=H=S"O=Xç=dV={{=?=Im=-^='==_N<<.<̐<9>=_N=O<{<<<<'Z<+<ٳ;<< <<4*;#;#;R2;<;p9>;R2;R2;C.;R2;;9><(?; 3;$;.;ٳ;5;5;ٳ;$; 3;#99>9p9>99>:9>;4*;#:#; 3;R2;t:p9>:9>;#; 3:p9>9p9>;C.= 3=E=[R=T=5'= <2< 3<(?;$;C.:#:p9>:#; 3; 3:#99>9p9>; 3;$< 3=`\=/={==S=K=r<.:p9>:9>;#;R2;p9>;$< 3<~=_N=Wm>i>5D>5D>f=æ=f=<̐9p9>:9>;R2;$< 5D>J8/>Cj>$L=>I=Wm= << ;R2; 3;< e>0j >5D>,m=!=j=<<(?;R2; 3;$<4*<9=~=6 a==.>V(===¶e=s#= <9<_N;C.:p9>;'Z<,$=p#=ç=6=s#=1ZC<̐<%'Z;<9p9>;R2;:p9>;< <]t< a=~=CT=;;R299>;R2;$;9><(?9p9>9p9>:p9>:p9>99>99>;4*;p9>;; 3;R2:#;p9>;$;t;t;5;'Z;R29p9>; 3;;9>< < 3;t;$;R299>:9>;<;5;t;9>;t;$;<;#9p9>9p9>;C.;;$;$;; 3;R2; 39p9>99>;4*;<;4*;#:*99>9p9>:p9>;#9p9>99>99>9p9>:#:#99>:p9>; 3; 3; 3;#;#; 3:p9>9p9>9p9><<#;t;$;<;;$;5;5;$;;<;<;$;;$;$;$;#; 3;p9>;'Z;9><2<<$<<<}d=E=K=T=Xç=!fu=r= 3<< a<$;<;$;'Z;#;;'Z;.< ;R2;a5;p9>;<;p9>;4*:p9>99>:p9>;4*;p9>;p9>;C.:299>99>;#;;2;R2;R2;R2;#;#;C.;R2;R2;#99>99>; 3;C.;C.; 39p9>:#;C.;<;$;9>;<;9>;5;$;;a5:#9p9>9p9>:4*; 3;4*;#:#9p9>;#9p9>9p9>:p9>; 3; 3:p9>99>;R2;t=)y=K=QA=0j = <<<7;ٳ;R299>99>:#:9>; 3;4*; 3<_N<~<{==$='Z=w=-^=o; 3;R2;$<_N9p9>9p9>;4*;$<b<~<5==[R=-t=¶e=]=-t=T=_N<9<%'Z; 399>9p9>;R2;t9p9>;C.;t:9>;$<<~<̐= =)y=B>I< a:#;R2;<;;$;#9p9>:p9>:#:#99>9p9>:#; 3;#; 399>99>:#:#:#99>9p9>9p9>; 3;#:#9p9>99>99>99>9p9>9p9>9p9>9p9>99>99>9p9>9p9>;<;<;5;<;C.;C.;R2;p9>;p9>;R2;#:2:#;#;p9>;#;$;$;$;;p9>;<;ٳ<< 3;p9>;'Z;<4*<.=o=_N<<+;t< 3<7<7< 3;< <7;'Z; 3;;$;t< 3<(?;$;p9>;C.;R2;p9>;p9>;a5;p9>;<;$;9><0j <;;$;;a5;R2;R2;a5;p9>;<;p9>;C.:#99>:p9>;#;R2;R2;C.; 3:p9>:p9>;C.;#;$;a5;R2;#; 3:#:#:2:#:p9>9p9>9p9>;#;R2;R2;#:p9>9p9>;#;R2;C.;C.;#:p9>99>99>:p9>:p9>9p9>99>;#;C.;C.; 39p9>:p9>;#;R2;p9>;R2;%'Z; 3; 3;#;#:#9p9>:#;#;#:#99>;4*;$;t;9>;t;2;#;p9>;R2;#99>9p9>:p9>:p9>9p9>; 3;<<~9p9>9p9>;C.;2<4*= 3= 39p9>:#;C.;$<(?< 3<=-^=)y= <<<<4*;ٳ;R2:p9>; 3;p9>;t:p9>9p9>;C.;$<%'Z< 3<= =(?=r= 39p9>;R2;.<%'Z< 3<̐= 3=<.<<;p9>:p9>; 3;;t<7< 3; 3:#9p9>;#;p9>;$;t< <b9p9>9p9>9p9>9p9>9p9>99>9p9>9p9>9p9>;p9>;<;R2:#:9>;C.;R2;C.;#:#:p9>;C.;t;5;;C.:#99>:p9>:#:#:p9>9p9>:p9>;R2;;$;$;$;#;#;.< ;9>;$;a5; 3:9>;#;R2;p9>;R2; 39p9>:p9>;R2;;5;t;9>;t;9>< 3< ;t;;R2;#;C.;p9>;;'Z;;R2:p9>9p9>;#;p9>;$;5;9>;<< <;5;;C.;#;C.;a5;<;;$;;R2:p9>99>; 3;C.;p9>;$;5;t;9>;p9>;#:p9>:#;%'Z;R2;p9>;<;<;R2;#99>9p9>9p9>99>99>99>:p9>;#;p9>;#;; 399>9p9>99>:9>;#;4*;4*;#:p9>9p9>99>:2:9>:p9>9p9>:p9>;#;C.:#99>9p9>9p9>99>:p9>:p9>99>9p9>9p9>:#;#;4*; 399>99>:#; 3:2:p9>99>9p9>9p9>; 3;C.;C.; 39p9>9p9>:#;4*;4*; 399>9p9>:2;%'Z;4*:9>9p9>9p9>; 3;R2;C.; 399>99>:9>:299>99>;#;p9>;p9>;C.; 399>9p9>9p9>9p9>9p9>9p9>99>;4*;$;$;'Z;p9>;C.:2:p9>:4*9p9>; 3;<<%'Z<;9>;$;<;C.:299>; 3;;99>;C.;$<99>;4*;;<7<{{:p9>;C.;;t<0j 9p9>:#;C.;<;$;t99>9p9>99>:p9>9p9>9p9>9p9>9p9>99>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>99>:#:p9>9p9>:p9>;#;#:p9>99>99>9p9>:p9>;#;#:9>9p9>9p9>; 3; 3:p9>99>; 3; 3:p9>:p9>; 3; 3:p9>9p9>99>9p9>:p9>:9>:299>99>; 3:9>99>99>;#;#:p9>:p9>;C.;4*:#9p9>; 3;C.;#:p9>:p9>;#; 3:p9>9p9>99>:29p9>9p9>9p9>99>:p9>:p9>9p9>:p9>; 3; 399>:p9>;#;#:p9>99>; 3; 3:p9>9p9>9p9>99>:p9>9p9>9p9>9p9>99>99>9p9>:p9>; 3;C.;C.; 39p9>:#;4*;R2;R2;C.; 39p9>:2;4*;C.;#; 399>9p9>:p9>:p9>:p9>9p9>9p9>9p9>9p9>9p9>99>9p9>9p9>99>99>9p9>99>99>9p9>9p9>99>:p9>:p9>9p9>9p9>9p9>9p9>9p9>:p9>:p9>:p9>:p9>:p9>:#;#;C.;C.; 3:p9>:9>;4*;C.;#; 3; 3; 3;4*;R2;R2;#9p9>9p9>;#;R2;p9>;R2;C.;#:9>; 3;#;#:9>9p9>; 3;R2;p9>;R2;C.;#:p9>99>99>99>9p9>:p9>;C.;R2;R2;4*:9>9p9>9p9>; 3;C.;C.; 3:p9>99>:2; 3:p9>9p9>9p9>9p9>9p9>:p9>;R2;;$;'Z;<;C.; 3:p9>9p9>;;<7:p9>9p9>99>;p9>;t< 3<;R2;#; 3; 3:p9>9p9>9p9>9p9>99>:p9>;C.;ٳ<;< 3<<; 3; 399>9p9>9p9>9p9>:p9>:p9>99>99>:p9>:p9>:#;C.;2<7<4*9p9>9p9>9p9>99>99>99>:p9>;R2;t;;2;$; 3;C.:p9>9p9>;4*:#;#;#:9>9p9>9p9>9p9>9p9>9p9>99>:#:#99>9p9>; 3;C.;C.;4*; 39p9>99>;4*;a5;<; 3;;<;R2;#99>;;ٳ;<< <_N;9>;t;ٳ;$;;p9>;#9p9>9p9>99>; 3;C.;p9><7;$;2;<<4*< 3< 3<<<'Z<_N<7<< 3;;;9>;t;ٳ;$;$;$;9><%'Z<;<_N< 3< 3;;ٳ< 3<4*<;;;t;;4*99>99>:9>;p9>;5<<79p9>; 3; 3;t<<%'Z<<_N;t;t;t;9>;9>;t;R2;C.;4*;#:29p9>9p9>;#; 3;.;t;5;2;$;;<;p9>;p9>;p9>99>:p9>:p9>:p9>9p9>; 3;R2;<; 3;<;R2;4*:299>9p9>9p9>:p9>;#;#;#:#9p9>9p9>9p9>9p9>9p9>9p9>9p9>99>;p9>;2;t;9>;t;t;5;;;C.9p9>;t:#;C.<= Q==!fu==CT= 3<ڕ<<.<:p9>; 3; 3< < 3=6 a=T=[R=U=I=-^=r= 3<{<ٳ<< a<<(?<]t<= =-^=CT=CT= =_N<<'Z;<;'Z;$;$;$;t< 3<7<_N; 3;#9p9>9p9>:#;C.;p9>; 3;;$;2;t<4*<~;9>< ;<;ʰL;p9>;#9p9>99>; 3;C.;C.;4*;#;C.;R2;'Z;R2;p9>;p9>;4*:p9>9p9>9p9>99>99>9p9>9p9>9p9>:p9>;#9p9>99>99>9p9>9p9>9p9>:p9>99>9p9>99>; 3;C.;C.;#99>9p9>:#;C.; 3;$;$; 3;C.9p9>; 3;C.; 3;$;t;<< <_N;t;$;R299>99><7; 3:#; 3;C.;4*;#;4*;;9><%'Z= 3= = Q== =_N<<< a<'Z;;C.;#;R2;#;9p9>99>;C.;$;9><<< 3;;t;2;$;$;:p9>; 3;#;#99>:#;R2;<; 3;<;p9>;R2;#:#9p9>9p9>9p9>9p9>:p9>; 3; 3:#99>99>:p9>9p9>:p9>:#:p9>9p9>; 3;C.;R2;#:#9p9>;#;p9>;; 3;p9>;C.:p9>; 3;p9>;;$;$;p9>; 39p9>; 3;a5; 3; 3;R299>:p9>; 3; 399>9p9>9p9>9p9>:p9>;p9>;$;2;t;t;t;t;$;p9>; 3;p9><%'Z< 3< a<̐<=_N=(?=D=K=K=H=?m=-^=!fu== =_N<<:p9>:#;R2;t< 3=b==æ=T)='Z=S=}\_=c=T=E=6 a=(?=r=_N<< 3<(?;5;t<(?<#= 3=K>#>>> <=m=y=3={{=b%=S"O=H=<=(?=CT=<.< 3=;>-l>)`\> Im=Ҫ3==/=b%=L=B>I=5'=(?==l==.==uڕ=K=-^== Q= 3=_N9p9>;#;p9>;$;5;9>;<b<7; 3;R2;p9>;<;p9>;p9>;<;'Z;ٳ;<; 3;p9>;R2;C.;C.;R2;R2;C.:p9>:p9>:2:#:p9>:p9>; 3;4*;R2; 3;#;#;C.;p9>;'Z;*;2;$;p9>:p9>9p9>9p9>99>:9>;R2;p9>;;$;<<0j <7<4*<;t;<:*99>:#:p9>9p9>:p9>;#;p9>;;$;; 3;<;'Z;<4*='=)y=-^=.=+=!fu== 3=~<9>= 3==5'=[R==>*>#F>=;>9> Y4=/=.=T)=&=`\==_N=[R=B>I=)y=-^=Fg=_U7=~L=\=W>)>)`\>U>LT>Cj>>G>4>(?>3>)> Y4>Lz=<=.===~L===?=æ=!>>=9>Q}>]>U>>L>Fg><`>0j >%ci>i>i>d>==>I=@==^=>I=A=>>2>MD>]8>8 >2J|>/=>-!A>%'Z>o>==l&==[Q=== ==$=T)=ߠ=h>o>*>7>>===Ň=æ=s=7!=q=S=CT=o=O=p9>=dV=q)w====r=J|=Ҫ3=>y>ʰ=s#=a5=T=K=D=+==9=====!fu=6 a=H=I=E.=K=c==S==x=o= =_N<<< a< 3;<;$< ;t;'Z;C.:p9>9p9>99>;#;;t< 3<< ;<;t;$;;p9>;p9>:9>;R2;p9>;a5; 3:p9>;C.; 3;$;$;;R2; 399>9p9>99>:2; 3:#9p9>; 3;<;$;$;'Z;R2:#; 3:#:p9>9p9>; 3;$;<< ;t;#;R2;%'Z;#;p9>; 399>;#;5<4*; 3;t9p9>99>;$<;;R2;<;p9>;9>9p9>; 3;C.;p9>; 3;; 3;p9>;#9p9>;C.;9>;'Z==4=ѹ==}d=^= =7=_N=e=Y=K=6 a==<<7;$;#;<%'Z< a=(?>5W6>Y;>^d>Jt>>0j >6=<=.=^===~=e=K='= 3<+<<<<1>>b>?>X|>0> |=T=]=?==o=<=`Eq=AN==<̐E.>>>N>$>U>*=l&=æ===Q==i=T=6 a==/<<=CT=T=&>">_U7>t\>>{>R2>)`\====i=[R=T=K=AN=)y=r= 3>G+u>(?>+|>==={{=K=+=r= = 3= 3=o |=b=?=b%=Fg='= 3<_N<<= 3=6 a=b%== 3=_N;<;$;t< <4*9p9>9p9>; 3;p9>;$;5;t;t;<<7;9>;t;ٳ;$;$;;2;$;p9>:29p9>:9>;R2;p9>;p9>;p9>;p9>; 3;$;t;$;$;$;ٳ;<<(?<(?<;5;p9>:#:p9>;C.;p9>;a5;C.;#;C.;<;$<<(?<7<]t<<'Z<$<9<<;;$;5;5;$;'Z;'Z;.;= 3= 3= ==r=r== 3<{<ٳ<<Y;>Kdw>>>5W6>+|>r==T=4===7!==a5=QA=T=lxY=3==>>A,>XK>)h>>>gu>4>cG>Oه>IG>G+u>E>8c>*>)=<=2=%>o>\>14>R2>>f>?/>>P>>>>x>?>>>z>b%>I >7>4f>;4>I>Y>v>>D>k???<>?W>(i>>>o> >> >ė>u>[a>P>P>Z>i>|0>>V> >;?G>亀>˾>E>?>>Q>}|>w>x3$>v>i/>U>>Be>;>A>M>[a>n>1>b>:>U>m%>^>~>v>oI>Z'>@>2m>/y>0&>-l> Y>V(>\>{>6>">.z>6}>Kdw>d>>C>> >=l&=X=ه=^= = ==#==?=?=CT='Z=ZC=m==>b>%'Z>)$N>=p9>=dV=Wm=JL=?m=(?=r= Q= 3= 3= 3= =!fu=7=K=QA=Oaj=V4=oI===)=}\_=_N=_N=~;;p9>;R2;R2;p9>;2<< 3;;$;R299>9p9>; 3;p9>;5<<7<4*<b;t;;C.;C.;p9>;$;$;$;'Z;R2:p9>9p9>;4*;<;#;%'Z;t:9>;<<<= =(?=?m=Fg=?m=!fu=~<;t; 39p9>;ٳ<~<5==6 a=S"O=Y=S"O=-^=O<7;R2;R2<7< a= 3=(?=E.=K=D=<;p9>9p9>;$;#<,$< 3<<$< 3<;C.; 3;<;$;$;p9>9p9>9p9>9p9>:4*:p9>:p9>99>:#;p9>;ʰL;<<,$<(?<;9>;$;R299>;#< 3<~=O=?m=[R=oI===?={{=dV=S"O=B>I=*Ȳ==/<.9p9>9p9>;C.0j >;4>4 >'>)==Ӛl=G='Z==_N=f=K='=~<<4*;<<,$<=r=>>Hn>'Z>ɱ>~ĵ>PQ>14>9==K=>I=^==1=U=(?=_N<+Be>>>>>>>v>D>(?> Y4==ه=>I=@=CT=ht=E.== 3=CT=U=æ>9F>e>0>>>ˠ>0>n>77>b=h==4=$===b%=D= v<=r=6 a=>>XK>>>1>wJ>o#>3>vR>8c> <=.=w=CT===oI=Xç=D='=CT==B>I=b=>H>X>lg>z>h{e>?>r=.= R=c=K=?m=5'=+=&=r=l=_N<#=_N=(?=i=>P>E=d=A=^=)=[R=6 a=r= 3;<<4*;$;t<_N<<(?<;:2;R2;;$;.;$;$;t<b<7<<%'Z<<,$.z>$s/>0> &=<=g=^=F=-t===uڕ=T==+=-^=6 a=M=mh= R=^=>i>0->>d>r>8>i>MD>8c>2>2J|>1Q>+|>+=l&=Ҫ3=]=.=> >0&>W_>,>v<>m?"?'?>w>*>,>(Z>9>>D>C>}\_>ba>P>I>PQ>b>|0>̾>D>?;?!}?H?:?%ۅ?>J>։>> >bi>>v>>b> >>>>">N?? N?7 ?GI}?P?@?,"?k? Z>'>˂~>ť>(i>˾>j>>>k>>d>>W>h?s?( ??@?Po?3?(??? ;>>S>$> >^>|>>>@G> R>>܅>d>F> >>?5?)y?4W>H>q>W>9/>>)>|B>u>x3$>w>j>Y;>MD>M>\ o>o!>>Im>2>>Ы>?4>cG>V&>Sz>M>8c> v<> &>Lz>Lz=|=:="O=̐=T>#?>>'>1Q>C.>Y>oI>z>w=c=$=w=W=Im=p9>=_U7=Wm=Nq1=E.=B>I=E=Nq1=b%=|l&=Q===:=aj=T=K=Ė=(?=)y='== =_N<<.9p9>:p9>;#;<;5<,$9p9>;#;$<(?<{{<9:4*;ٳ9p9>;<<<==K=z=-t=?=V=x=S"O=CT<9;5; 3; 3:9>:p9>:p9>;#;C.;R2;R2;C.;#99>9p9>;p9>;t<%'Z:p9>;#&S>P>b%>Y>E>0j >>o=d=G='Z=3==_U7=6 a= 3<-t>{>˾>*>o>w>JL>0j >P=B=K=æ=$=CT=dV=7=laq>{e?=w? >>>v>cG>9F>#> <=<==>I==~=S"O='= ==c=U7>PQ>>??>>&[>>X|>/=>)==Q=¶e=^==uڕ=L=(?==D=l>o>q>>Ώ8>!>L>{>S>]8>+|=r?=¶e===S==f=Nq1=-^=r==H=-t>e>[a>>>h>S>>l<>5W6>=z==b%=S"O=I=D=6 a='== 3<{= 3=-^=z=W>)y>^d> >====V4=0j =r= 3=I<<; 3;$;t<_N<%'Z<7;4*;C.;<;$;t;t;t;9><=g:=a5=Xç=K=?m=4*=)y== 3=== 3=CT==*Ȳ=6 a=M=dV=xA>U>FY>5W6>(4> =<==¶e===y==/=i=b%=g:=x==.>_N>,$>G+u>XK>>޿>>>y>en>Oaj>I!>MD>PQ>J8/>:>-!A>>e>P>,$>A>f">>>޿>??1?/?)?AG>>k>-t>\>C> >>q>;->R>|B>m>6>>dz>;?\?/?>y?a?V8?=$?#?sl>61>Ԩ>A>a>q> >;<>&>˿>1>m>>?=w?!9k?k>2>j>I>>ն>˜^> >}d>>$]>?5?(5?D?[:=?e?Sma?Cy?-{V?[B? h>j>g>?>W>(i>>J|>> >">?>˾>Ŵ??z?/j?FJ@?T0??>>Eq>@> >>&>>>x>}\_>r>t\>y>e>}>>p>??P?b>e>1>}\_>r>Y;>7>(p#>%'Z>&S>i>6>=ĵ> Y4>#>3:>@]>Oaj>d~r>~ĵ> >#>=T=aj=.=m=?=S=?=}\_=p9>=`Eq=Wm=U=[R=p9>===?=4==>^>Lz==6 a=7=5'=-^=&== 3=;#;p9>;$< 3< < 3<.<<= ==+=B>I=D=5'==)y;p9><%'Z<<{==H=oI===7!=6=a5=I=O<_N;t;C.;R2<%'Z<= 3=B>I=}\_=z==|=!=æ=r=I9p9>;#;< &>> ==W='<;$9p9>99>;$<<=_N=E= R=W>#?>)>3=Ė=?<;9p9>;#< 3<==_U7==¶e=ˠ===@];t;C.<(?<.==I=dV=k=T=<; 3;t<~<.;;p9>:p9>99>;%'Z;p9>;<; 3;<;p9>;#99>:p9>;;<<<:#9p9>99>;<<> Q>=9>Sl>P>@]>0->#=L=Ҫ3=ZC=W==t\=T=)y=_N<'Z<7;<<==7>r>->o#>">>v>I>.z>=<=W=}===[R=)y=_N< a<Ȳ=_N=T=A>J8/>P>Z?<>L>f>D>ba>7s>f=ĵ==.=&=|V=p9>=E.==o= 3=QA=m>;p>0>3?!?O> >>Im>WB>-l> ==æ=:='Z==c=B>I=r= =(?=j=|>Y>>ʿ>'i>ݰ>>o>[a>+|==4====z=[R=D=!fu= 3= 3=-^==>I >dh>|B>Q>>cG>4 >=J|=?=_U7=K=D=8 =+== 3<# >M===[Q=^==Y=6 a== 3=< 3<,$;'Z;R2;R2;<;$;ٳ;5;t;<%'ZJL><>-l>7====c=F=}d====z=t\=~L=3=y=K> &>,3>BzW>Oaj>>U>~>>lu>N?><>;4>DZ>J8/>Gg>8 >-l>>#>I>0&>I>o>>>۲Y> p?9I?*?> p>R>>dh>o>}>k >Ƥ>>><>}|>N>v>fu>.>Z?M?,$?:چ?\ϝ?P?4?"?nQ>[Q>bi>4>W>Ы>>3>>s/>˿>->>!P? -?! `?:&[?Ss?]t?aD?V ?;?"?8>h>Fp>Z>ח_>>H}>S>x>:>چ>Z>5>L??'4?@{?X?bp?JH?;?%p?>>>>">>bi> > >>>>*>>^?u?|V?,!?@N?MS??j>>>q>Fa>}|>z>Q >*>}\_>nX>c>ht>}\_>&>q">g>>Ƴ??}?A>>s#>f">Y;>Be>*>)>r>r> Y4=ĵ=t=U7=ڕ>7>,$>5W6>E>Xç>q>>D> R=.====\=x=z=s#=c=U=K=E.=I=U=i=Q=\=?==2==/=ٳ=!fu=&='='==CT= 3=~;C.;'Z< 3I=+==|l&=[R=CT<< ;R2;#;$^>3>)=n==[R= 3; 3;#<7<.==b%=$=|>#>-l>'>=ZC=AN<̐;t:p9>:4*;p9>;<=CT=Y=?=r?>i>)`\>=;=xY==o<4*:p9>:#;:p9>;$<~==3:=g:= R=CT=z=AN;;C.;p9>; 3; 3;p9>;R2:9>9p9>;p9>;t<7;C.< < 3<=~= ==S= 3< a= =>}d=b%==x=?=t\=Y=D=(?== 3<۔R<9<7;$;#;%'Z<==xY>#>I>=;> _=<=.=p#=6=s#=[R=K=-^= 3<.I>M>*>>,>n>M>/=>e=U7=c= ==}\_=[R=5'= 3{>CT>v>G>">T>o!>@>==æ=@===lxY=I=Vk>:.>˜^>>{V>>gO>5W6> u=A=$=W=o==a5=AN="V>r>Im>-t>;> >h{e>5W6> =>I=9=}\_=dV=]t=QA=7==_N<<+=_N=H=>r>V4>:T>M>I >3:> u=.=3=b%=E.=-^=$7!== =_N;R2;a5; 3;#;#;;.;<%'Z)>R=[Q=F=7!=r==b===W=)=oI=[R=Y=dV==r=y==h> Y4>>i>(Z>u>I >-l>@G> Q>D>i>)y>)$N>0>O=)w=t=|>7>/>H>k>Q>>>?&?<>>>>e>Vk>[a>oI>|0>|l&>oI>[a>PQ>Oه>\H}>r>h>f>3>? ??3?$L?>>^>0>>>>^>,>x>>,>Q> >-t>ZC>'?N??+?6?97?)u?a[>>G>i>v>F>-t>>> >q">܅>>>>5>n? ?!Hn?0L?>>(> >~ĵ>>X>>>l>~>~ĵ>>r>>">>!??[B?">>s/>7>>lg>Jt>>6>9F>C.>DZ>=9>3v>/>2J|>Cj>XK>i>~>>>ť>ǣ>˾>:>-^>=;>D=\_=A=¶e=æ=>I==?==q= =G=>?>7>(p#>3v>A>MD>Kdw==g:=b%=b%=[R=T=K=H=>}d=,$= v<====.=K=[R=mh===S=3=o<==?= 3= 3=o; 3;#:p9>; 3;R2;;t<<,$<4*<%'Z< 3;t;5<_N<4*99>;C.;;t<,$;R2;$<<]t<<ʰL<{= ='=AN=Fg=AN='=5'=_N99>;p9>;ٳ<7;4*99>;p9>;t Q>=Ҫ3==S"O=_N99>;p9>;5<7<+=r=Y=w=h>>(?>i===-^9p9>;C.;$<<$=3=Wm='Z=>>"V>7=U7=:#;p9>;ٳ:p9>;C.;t<=_N=5'=f== R=p9>=5';R2;4*:29p9>; 3;$< <7;$;R29p9>; 3<,$< 3<b<=_N==6=Fg=Fg=6 a=&= Q=_N<<$:p9>; 3 Y4>'>*> J> Q==:=q=uڕ=Y=K=7==_N<Ȳ<7;$;'Z< <$=r=e>,m>P>ba>Y>Be>,1>Lz=.= =j=dV=Xç=JL=-^= <ʰL<<4*<$==t\=A>;>b%>o!>` b>A>&S=r?=J|==j=Y=K=AN=&= 3Lz>(p#>;>Be>5W6>\=O=$=1=Xç=D=0j ='== 3<̐< 3<;<,$<_N==E=CT=/=æ=d=d=æ=V=o=U=.=r= = 3=<<$;;$;<;C.;C.;R2;#;<;$; 3;R2;4*;#;#;#;C.; 3;t<,$;C.;C.;R2;R2;C.;%'Z;R2;;ٳ;;5;ٳ;.;$;$;t<<7;$;#;#;$;5;2;$;#;'Z;$;2<<%'Z<<<7=z=w=uڕ=uڕ>-l>\=!=>I=== =y=>I=Ҫ3=Ҫ3=>I==l=l==¶e=>l>|V>+|>3>4f>dh>>W[Q>0j >6=ĵ= > Y4>">/>0->&˿> > <> Y4>>.z>=+>X|>u>Q>CT>ɱ> B>7>w;>`>;>-l>)j>2J|>E.>R3>T>I>:>5W6>9T)>I!>[a>s >&>>->g>̀>W> >>l<>J8/>4f>0j >8c>MD>X>XK>MD>@!>=9>G>Y>m>`>o>V>>N>>$>>d~r>G+u>2J|> >>&S>1ZC>5W6>3v>,m> v<>"V>0j >?>PQ>ba>y#]>X>ɱ>R>V>A>,3>=L=T=.=¶e=ˠ=+=d=aj=4=y=z==|>&>'>2m>>>M>V&>Sl=?==|l&=uڕ=mh=c=dV=f=dV=\=L=?m=-^=5'=M=k=)=-t=`\=J|=>I=g=.== = ====r= = 3=~<<.< a<<= 3= Q=r=!fu='=&=!fu=; 3;$;t;<< 3;;t;ٳ;$;$;$;5;< 3< ;;5;;C.:p9>:p9>:#;#;p9>;#;$;ٳ;ٳ;$;;p9>;<;$;t;9>;4*;<;$;t;< < < 3<<;<<< 3< 399>;R2;'Z;t<;p9>;ٳ<:2; 3;t<4*< 3I==dV=&<;<;#:9>;;9><7<= 3=8 =<=:=V=l&=t=:=uڕ= 3:p9>;p9>;5<%'Z;#;<;t<_N<==I=a5=`Eq=D= 3<<9p9>:p9>;C.;ʰL:p9>99>;C.;$;t;5;<99>9p9>:p9>; 3:2:p9>;C.;$;t;;t;$;<;#9p9>;'Z<(?<7<_N;'Z; 3; 3;t<_N<<{= 3=/=<<<<= Q=+=E.=I=D=+=r= 3<<̐<;R2;<=!fu=QA=t\=Q==)=uڕ=U=:=&=CT= 3:9>;t< 3<9>=t\==Db=¶e=T)===c=H=-^==b= 3<ٳ;p9>;C.;'Z<<=_N= v<==_N=99>;#;$<7<<<<<~9p9>99>;#;$<;9>;t;$; 3;<;'Z;ٳ;t;t;*;#;p9>;C.; 3:#99>9p9>;#;<;ٳ; 3; 3;p9>;R2;C.;R2;;$;5;ٳ;$; 3;R2;%'Z; 3; 3:#:p9>9p9>9p9>:p9>;#;p9>;R2;C.;#; 3;4*;<;ٳ;< 3< 3;t;;;p9>;R2;p9>;p9>;R2;#; 3; 3;4*;R2;R2;R2;C.;R2;;<7<_N;t;9>< <;<;5;;p9>;R2<_N<<<b<7< 3<<ٳ<;t<=O=dV=_U7=c=}\_=q=`\=]=>I=^=\==S='Z=}d=Ԋ===B={=>e=Eq=J|==)===y======^=G=K=ĵ>6>!ޒ>+|>0&>0&>(p#>6==J|==;=S=7==:=aj==%=g=J|=^=¶e=>Lz>|V>(?>0->3v>2J|>*=Q==Q=~L=w=z==r===P=\===\= =Ҫ3=>O> 9>r>e=<=w=S"O=B>I=C.=D=E.=K=Y=a5=b%=V4=Fg=-^=-^=I=dV= 3==ޒ='Z==w=r= Q=_N=_N= 3= 3= = Q== = =_N<5<.<̐<= ==(?=-^=-^=-^=-^=$7!<]t<<<<<$<<<~;;$;<4*;ٳ;'Z;<; 3;$;9><<<%'Z<b< 3;9>;ٳ;$;#;C.;<;$;;$;#;p9>;C.;#; 3; 3;#;R2; 3;'Z;'Z; 3;p9>;R2;C.;4*;#;C.;R2;R2;C.;#:299>9p9>99>:p9>:#;#;4*;C.;R2;R2;C.;#; 3; 3;#;4*;C.;t;$;p9>;#9p9>99>; 3;C.;R2;p9>;p9>;a5;R2;R2;<;;< 3;;4*;p9>;;$;ٳ;t;<(?;R2;$;t< <7<<:#;<;5<:#; 3;t<%'Z<]t<= 3=5'=b%=Im=3==Y= v<;p9>;ٳ<;C.;;t; 3;R2;$<%'Z<<<<<_N<b;R29p9>:p9>;C.;;$;$;R29p9>9p9>; 3;R2;p9>;R2;#:p9>:p9>;;9><<(?<;9>;$;R299>:2;5<;< ;$;4*;R2;t;<:#9p9>;p9>;9><̐=_N=='=-^=*Ȳ== 3=<<̐< a<9p9>;<<,$<=_N=6==(?=-^='==_N; 3;t<<<.<=/= 3= == 3;#;t<<<<:#;'Z<0j <_N<4*<7<7<4*<%'Z<< 3<_N<<,$<7<,$< ;t;;4*9p9>; 3;$< 3;;$;#;<;R2;R2;p9>;;$;t;t;2;'Z;p9>;C.:#9p9>; 3;p9>;#;4*;#:p9>99>:p9>;%'Z;p9>;;#; 3;p9>;C.;#:9>:p9>9p9>:#:p9>:p9>9p9>99>;#;p9>;<; 3;p9>;R2;#:9>:p9>:p9>99>9p9>:#;R2;;$;$;$;<;R2;#; 3; 3; 3:p9>9p9>99>;p9>;5<<(?<(?<;9>;$; 3;p9>;p9>;<;<;a5;#99>9p9>9p9>9p9>:#; 3< ;$;$;;t<4*< 3<<{= 3= 3= 3<<<I=K=c=?=b=7=)={{=]t=D= ;R2;;t<<(?<(?<< 3;t;5;'Z;;$;t<<4*<7<7<(?< ;t;$9p9>:p9>;R2;;$;$;#;p9>;R2;4*:#99>; 3;p9>;'Z;$;$;$;; 3;R2:29p9>:p9>; 3;#;#; 3; 3:p9>9p9>9p9>9p9>:p9>;#;C.;C.;#:9>99>9p9>:4*:p9>:p9>99>9p9>9p9>9p9>99>99>99>9p9>99>99>:p9>:p9>:p9>:p9>99>9p9>9p9>9p9>:p9>; 3;#;#:#; 3;#9p9>9p9>:#;#;C.;R2;C.;4*;#;R2;#;t< 3< 3;5;;p9>99>; 3;p9>;#;$;;5<_N<4*<]t< 3<< 39p9>;4*;#;5;<%'Z=<<<<%'Z; 39p9>9p9>;C.;$;9><;C.;'Z;t<%'Z<<{=CT="V= v<= <̐:9>;p9>;2< 99>;4*;<;ٳ<99>; 3;R2;$;<<79p9>; 3;p9>;'Z;$;;R2:#9p9>:p9>:#:p9>9p9>9p9>9p9>;#;a5;p9>;a5;#99>:p9>;<;5;< 3;;ٳ;;C.99>:p9>;#<:#; 3< <]t<<9<<_N;$;9p9>;C.;t<%'Z; 3; 3;p9>;#;$;5;t;t;t;9>< 3<%'Z<7<0j <;t;$;R2:p9>9p9>;4*:p9>:9>; 3; 3;#;C.;R2;<;$;5;t;t;ٳ;$;<;C.:p9>9p9>9p9>:p9>;#;R2;<;; 3;p9>;R2;C.; 399>9p9>:2;#;C.;C.;C.;#; 3:#:p9>99>9p9>:#;#;4*;#;#:#:4*99>99>9p9>99>;#;C.;R2;R2;4*; 3:p9>99>9p9>9p9>9p9>;C.;;$;$;$; 3;R2; 3:#:#:#:p9>9p9>:p9>;<;9><,$;p9>; 3;;<;#9p9>9p9>;C.;$<%'Z<{{<< a< a;'Z;ٳ;t<_N<<<<_N;t;t<<7;2:#:p9>;4*;p9>;<; 3; 3; 3;<;R2;#;C.;p9>;'Z;;ٳ;ٳ;$;$; 3;R2:p9>; 3;#;#;4*;#:p9>99>; 3;C.;R2;R2;R2;C.:29p9>9p9>:p9>:9>; 3:p9>9p9>9p9>99>99>9p9>9p9>99>:p9>99>9p9>9p9>9p9>9p9>99>9p9>9p9>9p9>99>:#:2:p9>9p9>:#:p9>;#;C.;C.;C.;C.;p9>;;$;$;$;a5;R299>9p9>;#;p9>;;'Z;;t<<7<7<(?< 3;;<:#99>;C.;#;2;9><(?:#99>;R2;$;t9p9>;C.;'Z;9><,$<]t;#;<;5<9p9>9p9>99>:9>;R2;#;2;5;2;;R2:p9>9p9>:#;4*;R2;C.; 399>9p9>9p9>99>; 3;#; 399>;#;p9>;#;$;#;p9>;C.; 3:#9p9>;#;;t;9>;9>;t;5;$;$;;R2:2:2;p9>;ٳ<_N<<< ;<;;;t;$;<; 399>;#;<;ٳ;< < <_N< 3<<<;9>;$;p9>:#99>; 3;R2;;$;ٳ;5;5;t< 3<< ;;2; 3;4*:p9>9p9>:p9>;#;C.;a5;p9>; 3;$;5;t;t;5;$;<;C.; 39p9>9p9>99>:p9>;#;R2; 3;;; 3;<;p9>;C.; 39p9>99>:9>;#;C.;C.;C.;C.;C.;#:#9p9>9p9>99>:p9>:#:2:2:#:#:p9>99>9p9>99>:p9>:p9>:p9>:p9>99>99>99>9p9>9p9>:p9>:p9>:#:p9>:p9>99>9p9>9p9>9p9>:p9>; 3;#;4*;4*;#:#99>9p9>9p9>:4*;#;R2; 3;$;$;$;;<;C.; 3:p9>:p9>:p9>:p9>9p9>99>;4*;<;*;<%'Z<;;<;;$; 3;#; 3;<;ٳ<_N<4*;p9>:#99>;$;t<%'Z<%'Z<(?<7<,$<<;#:#:#;#;a5;$;t;<_N;;t;9>;<<_N;<;9>;t;t;t;t;t;C.:p9>:4*;#;p9>;;;<;p9>;p9>;p9>;p9>;p9>;p9>;<;<; 3; 3;p9>:p9>;#;C.;C.;#:#99>9p9>9p9>99>:p9>; 3; 3; 3:#9p9>99>:#; 3:9>:4*9p9>99>99>9p9>9p9>9p9>99>:#; 3; 3:p9>9p9>9p9>99>; 3;C.;a5; 3;$;$;$; 3;R2; 3;#9p9>9p9>;C.;;ٳ;<<4*<7;$;p9>;R2:#; 3;;<7;; 399>9p9>;R2;t<4*99>:4*;R2;$<_N<7;#;p9>;$;t< <<%'Z<;;$;C.99>9p9>99>:p9>:#; 3;C.;p9>; 3;'Z;;<;C.:p9>9p9>:p9>:9>; 3:#9p9>9p9>99>99>9p9>9p9>9p9>9p9>9p9>9p9>:#;%'Z;R2;p9>;a5;C.;C.;C.;R2;C.;#:p9>:p9>;4*;p9>;;$;$;$;;;;$;'Z;<;R2:#;#;p9>;'Z;$;2;2;;$;$;;ٳ;ٳ;$; 3;C.:#9p9>;#;p9>;;$;$;$;$;$;$;$;ٳ;ٳ;$;#;p9>;%'Z:p9>9p9>9p9>:p9>;C.;p9>;<;<;<;<;<; 3;;;'Z;#; 3;p9>;C.; 399>9p9>:p9>; 3;#;#;#;4*;C.;C.;R2;R2;R2;p9>;R2;C.; 399>9p9>9p9>99>:p9>:p9>:#:#:#; 3;#;4*;#:#9p9>9p9>9p9>9p9>9p9>99>:p9>:#:2:p9>99>9p9>9p9>9p9>9p9>99>99>:4*99>9p9>9p9>9p9>9p9>9p9>9p9>99>99>99>9p9>:p9>;#;4*;#; 3:#:p9>:p9>:p9>:p9>99>99>9p9>:p9>;p9>;$;5;t;2;$; 3;p9>;R2;#; 3:p9>99>99>9p9>;$<:#9p9>;#<7< 3<<'Z<<9<< 3<<;t< ;$;#;#;$;<%'Z<7;5;ٳ;t<#<79p9>99>;#;<;$;t;< < ;<;t;$;<;R2;p9>;;$;5;t:#9p9>9p9>;#;R2;<;;$;#;p9>;R2; 399>9p9>99>:2;#;4*;#:p9>; 3;4*;C.;C.; 3:p9>9p9>99>:p9>:p9>99>9p9>9p9>9p9>99>99>99>9p9>9p9>:p9>;C.;p9>;#;$;$;$; 3;R2; 3:p9>; 399>:#;$< <79p9>;<,$<_N;;R2;#99>; 3;t;C.;9p9>;R2;t;p9>9p9>99>;C.;$< ; 3;R2;;5< <%'Z<(?<%'Z<;t;#;#9p9>9p9>:p9>:p9>; 3;4*;R2;R2;p9>;p9>;C.:29p9>9p9>9p9>9p9>9p9>9p9>:p9>:p9>9p9>:#;R2;<;<;p9>;R2;C.;#;#;#;#;4*;#; 399>;;t< < ;<;t;5;$;; 3;<;<;p9>;R2;#99>; 3;<799>; 3<(?;C.:#9p9>9p9>;R2;5<<7<7<4*<< < ;;t;*;'Z; 3;<;<;p9>;C.; 3:4*9p9>:#;p9>;t;2;t;t;5;2;2;ٳ;$;'Z; 3;p9>;C.;C.;R2;R2;C.; 3:p9>9p9>9p9>;4*; 3; 3;C.;R2;R2;p9>;p9>;<;p9>;R2;#:9>:p9>:#;#;#;#:p9>9p9>99>99>:9>;#;#;#:p9>99>9p9>9p9>99>:#:#:p9>9p9>9p9>:#; 3:9>:p9>99>9p9>9p9>9p9>:p9>99>9p9>;#;R2;p9>;R2;#:9>:p9>9p9>9p9>9p9>99>99>9p9>;#;$;9>< < 3;5;#;R2;#:#:p9>:p9>:p9>:p9>99>9p9><%'Z;C.; 3:#:2:2:p9>9p9>:p9>;#<;p9>;p9>;R2;C.;#;4*;p9>;$< 3;5;ٳ;t;<%'ZI=5'='== 3=<;ٳ;$;$;t< <7<99>:p9>; 3;C.; 3;$;t< <(?<0j <;t;$;R2;#;C.;<;$;2;$:p9>;#;R2;p9>;;$;$;#;R2:9>9p9>:p9>:p9>99>9p9>:p9>; 3;%'Z;C.;C.; 399>9p9>9p9>9p9>99>99>9p9>9p9>9p9>9p9>:9>;C.;R2;p9>;a5;R2;#:#99>9p9>9p9>; 3:p9>:p9>:p9>99>99>9p9>9p9>;4*;$<<7<7<4*<;<;2; 3;R2;4*;p9>;C.;#;#:299>9p9>;#;t;$;$;p9>;C.;#:#9p9>99>;$;4*:#9p9>; 3< 3<=_N==0j =5'=(?== 3I=1ZC== <ڕ<<<<;R2:#9p9>;#;9>< 3;p9>99>;C.;*<,$<~;p9>:p9>99>;#;p9>;.;< ;<;t;ٳ;;C.99>9p9>99>:p9>:p9>:p9>:p9>9p9>99>:p9>99>9p9>; 3;C.;C.;C.;4*;#; 3:#:p9>:#;#;#; 399>;'Z;<%'Z<4*<7<7<0j <_N;2; 3;R2;R2;p9>;R2; 39p9>; 3==_N=<< a< 3<7;9>;$;;;p9>;#9p9>9p9>;p9><< 3= = = 3=_N=~<<۔R;C.:#:#;#;'Z<7;C.;4*;a5;$<(?<;#; 3; 3;#; 3; 3;R2;#;t< <%'Z<7;R2; 3;$;$;$;.;ʰL;$;<;C.:2:p9>:p9>:#:#:p9>9p9>99>:p9>:p9>:p9>:p9>;#:#;R2;;$;$;;p9>;4*:#99>9p9>99>:p9>:p9>9p9>:p9>;;t<<;t;$;p9>;C.; 3:p9>:p9>:p9>:p9>99>9p9><%'Z<~;R2;#; 3; 3:2:p9>9p9>9p9>;<;R2;C.;C.;R2;;5<7<< 3<_NI=8/=æ=Ȳ==~L=Y=7='=!fu=!fu==CT= 3<<{=O==.=K=a5=O=V= o==Ҫ3=m=@===oI=Xç=Nq1=K=K=I=7=(?='=5'=K=`Eq=s#=?=-t=G=z=k=æ=}=^===o=|l&=f=c=dV=dV=[R=K=E.=K=Y=dV=uڕ=/==]=y=`\===3==CT==xA=e=c=dV=e=a5=QA=E.=AN=E.=K=Y=p9>= R==s#=dV=Y=U=U=Y=[R=Xç=T=K=K=K=QA=K=AN=,$=!fu==&=9F=S"O=e=uڕ= v<== = 3= 3=l= ===== v<='=#F== =_N=~= 3==(?=5'=-^<.<<< 3<~<~< 3<< a<̐<<<{;4*;R2; 3;$;'Z;<9p9>99>99>99>99>:p9>:#; 3;#;R2;<;$;;$;;C.9p9>9p9>:4*99>9p9>99>99>99>:4*:p9>:p9>:#:p9>:#;#;C.;p9>;p9>;C.:p9>9p9>9p9>; 3;#;#;#;4*;%'Z;%'Z;#; 3:#:2;#;a5;p9>;p9>;R2;#; 3:p9>99>99>99>:#;;$;$;$;'Z; 3;p9>;a5;C.;4*;R2;#;t< <%'Z<< ;9>;ٳ;#;p9>;p9>; 3<7<7<7<(?< 3;ٳ;; 3;p9>;;ٳ<0j < 3< a<̐<ʰL< a<#<_N<]t;$<%'ZI=-^== 3;#;C.;'Z<7<==U==?=y='Z==g:=T=6 a=9p9>;R2<%'Z<.==Y=r=m==s==p9>=Nq1=)y= 3:#;5I=}\_=V=@=\=uڕ=Nq1=(?= 3;p9><,$<= =6 a=Y=c=U=6 a==_N< a= 3=CT=l<<<:p9>9p9>:#;C.;p9>;<;p9>;R2;#:p9>9p9>9p9>9p9>9p9>9p9>9p9>:#; 3:9>99>; 3; 3;;<7;C.;R2;R2;C.:9>9p9>;4*99>9p9>;<{=S=-^=Nq1=_U7=Xç=@]=3<ٳ<<,$;ٳ;; 3;R2:#;R2<0j <$==3=o=S=b==Y=)y=O;#:4*:p9>;R2< <'Z= Q=T>=|=Ė== R=t\=Nq1='=O;R2;p9>;ٳ6>_N=:==V4=?m=!fu= 3<<]t<=l='=-^=-^;C.;#;#;4*;C.;<;t;t<<(?<,$<;<;5;$;p9>;4*; 3; 3; 3; 3:p9>:p9>; 3;R2;R2;#99>:p9>;59p9>:9>;t;$;; 3;p9>;C.;#; 3;#;C.;p9>;ٳI=_U7=q)w=g:=T=)y=<;5;t<4*<'Z<9>=r===K=m=-t=oI=6 a= 3A>BzW>3v>=t=J|=Im=T=:=B>I=K=T=M=<='=%'Z=-^=U=Y4=J|=<>>3:>>>gO>Cj>)$N> Y4=U7=^=9=3========>>3v>M>g,>>k >7>8>]>A>2m>%'Z> Q=I=T==|>\=l&=<=> Y4>0->M>e>>>@G>z>r>~>_U7>G+u>:q>2J|>*>>o>7>i>!*g>f>q>6>&˿>;p>U>g>4>}>>>w>[a>@>2J|>-]O>(?> v<>7> u> >7>q>V(>l=ĵ>)>(4>3v>@]>X|>v>,>>>2m>yI>{===~r==K==ѹ==Ҫ3=g=}d=J|===:>>!>2>>}d=¶e=`\=CT==uڕ=r=}\_=Ǥ==?=x=Im=Im=/=}\_=t\=mh=uڕ===>I==aj=?m=$7!==l= 3=/= 3=CT=='=+=5'=6 a=:=5'=)y=$7!='=5'=T=dV=f=V4<< 3<<<̐<<{=<<;t;t;< 3<%'Z;;$;$;2;$;5;t;t;t;ٳ;$;'Z;<;p9>; 3;$;t;t;2;;R2;#; 3;#;C.;p9>;<7<7<7<;<7<< ;9>;5;$;$;ٳ;9>< 3;<;t;t;ٳ;$;$;$;5<<̐<̐<. Y4>">">CT>>_N==6=ZC=mh=6=#=<.<&>P>i>cG>L>5W6>*>_=!=^=(?=~<+< 35W6>mh>]>~ĵ>Z>6 a>i=!=$=j<<]t< ;$;4*9p9>:4*;p9><_N#>PQ>f">X|>3v> ,===I= ;t;a599>;C.<_N<=6=b%=> ,>|V>_N=m=6=U=<̐;C.;<;R2;$;9><_N;t;$;p9>;#9p9>9p9>9p9>9p9>; 3;p9>;$;'Z;R2; 399>99>:#; 3; 3:4*;R2;t9p9><=_N=6 a=dV=?=~L=Y='<9><<%'Z;$;<;p9>;#9p9>;p9><%'Z==¶e=Eq=|=B=[Q==dV=$7!<<_N<_N;'Z;p9>;C.:p9>9p9>; 3\>i>X>>}d>.ť>)=g=Q=?m= 3<<7;ʰL;;p9>;C.;C.;$0>>:.>C>X|>14>==}\_=6 a= 3<* u>V&>(Z>>t>1>:>Lz==?=K=rE>?>R>;->rU>3:===M=(?= ?>>}d>lxY>ė>$=Ė=z=-^=l<ڕ<;5;t< _>P= 3;a5;p9>; 3;#;2<#;p9>;R2;R2;R2;<;p9>;4*;#;$= =-^=Fg=H=5'=SV&>Vk>D>+>ʰ==6=T=/y=6 a=K=Y=Y=H=+===6 a=ht=`\=>+|>E>(>}>>>~ĵ>MD>0&> =A=?=w=:=æ=.==?='Z=T)>O>>>w>"@>J|>ߠ?)?>>3>dh>}\_>a>FY>/=>%'Z>,m>5W6>:>8 >5W6>4>MD>>3>?H?K{?!d?2h?#?e+>q>/>>>>sE>b>g,>w>Q >?>*>?>b>l???-{V?1>)h>>%>CT>Im>>> > >a[>7>> >?/6??-o?=2?=@??G>>x>k >r>G>>>~ĵ>>$>>;->>C>ɱ>>Ԩ>??S?"e?#>>>k >>g>XK>T>Rn$>O%\>Kdw>M>P>P>N5#>J8/>Jt>>[a>w>>"@>ZC> >>i>T>5R>=;>ʰ=<=!=>o>#>$>\A>==)w=>{>CT>+>8 >U>kL>rU=.=`\==mh=U=K=U=c=uڕ=~L==x=/==/=x==7=`\=g=駭==%=6 a== 3<<<̐<۔R<#=_N=l===&=(?=)y='=!fu='==+=U=g:=g:=U<۔R< a<<~<~<_N< 3< 3< 3< 3< 3< 3<{{;9>< 3<%'Z<,$;t;t;9>< <7-!A>=:=x=Y=6 a=W===)y=H=dV=3=æ=|>=;>+>.z>2J|>=9>MD>U>FY>Jt>>6==/=U=5'=W=='=H=s#=>\><`>w>>"@>b> >>>>}>>A==3=Y=3:== 3=l= v<=K=="O>5W6>> >!P>>!P>ѹ>K>p>s/>>ʰ==AN=<<<< aFY>x>u?? h?~>@>>>>MD=Y= 3<<_N<7;< 30&>>ݓ>媺>>ܔ>>>C>Y>=9p9>;p9>< 3< 3=_N=U=>;4>{?>>X>pi>>>o==S"O= ;#:#;$ <==T)==L= 3< 3;t9p9>;p9>< :#;<< :p9>99>:p9>99>:p9>;<:#9p9>9p9>:p9>:p9>9p9>;$==Y=v<=====[R=/=>JZ>S^]>Oه>D>-^=|='Z=QA= 3<<;;R2;4*:p9>9p9>:p9>; 3>dz>>6>w>Kdw>f=.=dV=<ʰLR2>? ?!>~r>F>ʰ>I >r=J|=`Eq=<2)`\>}\_>v>H?b?>>CT>X|>"=.=1==+= 3\A>ba>>y? >>Z>CT>FY=B=v<=a5=-^= 3<3>g,> >wJ>j>>Oaj>=o=Gߠ== 3<< a< 3=T>5W6>i>$>Q==Fg=CT=<<7;9>;9>< 3<<;9>;5<%'Z=-^=S"O=a5=_U7=K='=<Lz>#?=U7=ZC==U= v<= 3= 3==+=-^= v<= 3<<+<2=O='=Xç==>\>CT>>Z+>2>o=k==~L=xA= R====xA=b%=`Eq==q1>*>[a>>}??r>>>(Z>w>Y>:> v<>D>d>'>+|>(?>i>0>-l>aq>,>?5?!Wr?$ ?WB?@?&D? h>چ>D>~>#>>s#>v>q>Q> >>>>j?.7?;?WB?a?aD?j?[R??@?"? >>媺>>ݓ>5>7>>dz>>dw>|?~?! `??@?]?m,?t*?rs?k?\9z?@?$?>>*>k>N>>%>N>5>>|>{?̾?(5?D?_X?m§?ug?t &?ZY?Cy?*?&>c>h>H>Fp>>)h>v>#N>ʰL>>N>G?#?'?+^?C?[vK?e?eA?$U(??3>(i>F>>F>F>>Fa>Fa>>j>>> >|>͞>??!ώ?/L?/>9/>>>i>E>5W6>5W6>=Q>@]>@!>A>@>>>;p>:>@>Q>lu>!>0>>>Ė>5W6>&S>=.==o==p#==}d=¶e=¶e==4==g=ç=ڕ>q>,$>:T>DZ>@==f=Nq1=)y== =S=W=)y=6 a=D=I=K=Nq1=U=Wm=Y=dV=/==&=J|=v<== 3<I=-^<<<>>'=!=y==[R=D=1ZC=-^=.=6 a=E=T=g:==`\=.==>0>5D>Nq1>P>>XK>&S=6==}\_=Y=Nq1=T=^d=w=3=.> Y4>5W6>]>w>>9>>ݓ>%>">O>tr?>,$=ٳ=={{=[R=T=_U7=~L=Y=T>0>w>`\>9>4??N?Ud??b>z>@>`> =@=}\_=V4=E=E=V4=1=J|>>g,>?kE?!9k?+?-0E?+?,!?*Ȳ?g?j>}U>Y=Y=Y=5'== Q=r=6 a=b%=>f>~ĵ>Q??-0E?:qm?:چ?2?,!?#7?Ud>(i>j=uڕ=r<<<9<9<=_N=*Ȳ={{=>a>?y? J?)QX?&S?yI?>`>s/>_F=<9<%'Z;$;p9>;R2;<>|B>O>8>[>Ԩ>3>>U>=;$:#9p9>;a5;<5W6>Oaj>L>4f>6=>I=a5= 3< 3:4*; 3<7<=-^=c=<=mh=S"O=(?=_N<;t9p9>:#;$;#;ٳ99>;5<<<<=-^=S"O=T=6 a= 3:p9>9p9>9p9>:#=AN==ѹ>l> ==&=p9>= v<<<4*;p9>:#:p9>9p9>;R2<<>Rn$>v>}\_>s>`>>>=c=[R=l<9;;p9>;C.;4*:9>:p9>;R2;<S>>L>F>S> >en>0j =6=}\_=#F<̐-l>y>D?k ?}?|>> >cR+>+=ߠ=s#=&<<<<7Q>l>1?'?!?]>>>{{>77=!=3=K=CT<̐< 3<<<< a3:>>??T? 9>>/>o >%ci=æ=}\_=B>I=>>D> B>? >M>~ĵ>0=F=c=+= <ڕ<+<I=?>">d>>F>1=>I=uڕ=+= 3 3>+|>0j >7<+<$ >l==s=7=b%=0j ===-^=E.=I=:== 3}d=lxY=V=>`\> >>i>?>*> <=(i==-t=?=G=m=^=-t=)=/= >ʰ>A>>0>1?,!?қ?N>(i>> >>en>E>3v>4>=9>E>D>>>;p>MD>h>Ħ? 9?&?4v?6)h?eA?T{?4v?N>l&>>˾>7>'>D>dh>ɱ>>>>˿>>P?}?0?U?f?m§?m?uDq?g"?SOZ?/?N? ?>>!P> >W>>>>?/?M?5]?Xi?k.?y???v?hi?T?2˜?m?5?G??a>>>4?nQ? -? ??%??@?[V?m?{ ???h?XҪ?<?!ޒ? vx?>>ڕ>L>߯M>ٳ>>7>??? ??,!?EZ?]G?k1?r?q?;C?&?;>Z>@>1>>~c>4>d>V>>|>>v> B>亀?m?A?&D?;ʿ?LT?K͐>>?>>.s>_U7>I>MD>Y;>\>[a>[a>Z>Y>Y>[a>gO>>܅>>7>vK> >>Wm>>>)$N=L===^=.=6=%==T=K=m=T=> >$L>5W6>I>\>h?W>dBd==|V=}\_=Nq1=)y==&=/y=E=K=T=V4=V4=[R=c=p9>=}\_= R==.=[Q= o=Ė=6 a=!fu= Q=O Y4=h=>I=\=s#=K=-^=#F==CT= 3=O=_N=_N= 3=&=E=U=a5==`\=> >s >H> v<==?=1=_U7=M=K=I=I=K=U=mh=CT=}d=xY> _>&S>A>o/>>>>>E>=.=-t==ht=ht=v===.>r>C>v>>>y>a?5? 3>>/>d>P>D=æ===uڕ=}\_=S=^=<>3v>#>?3?D?M?"?-h?5W6?.ԩ?p>>r>5D=U7==}\_=a5=^d=r=3=.>i>o!>r??,3?>}d?E*?K͐?Q#?O4_??@?# >>U>=%==V4=:=)y=0j =M=}\_= a>%'Z>]>n? @?E.==I==<2>l?0?,(?<$?>_]?9?.\? \?5>J=b%)$N>$>.>]>A>>U=t<#;C.; 3;<<$==6> Y4>Fg>l<>tN>d~r>FY>i=z=E<99>;<;$:p9>;#:9>99>; 3;$<%'Z:p9>='=z==?W=<=g=-t=Xç= 99>;a5< 3<Ȳ>3:>WB>ba>`>Oه>1_=ĵ=V=K=~r>ǣ>f>@G>1>U>!=¶e=dV=9< a<%'Z;.;t;<<i>g,>%?8 ? >L>>>T>\=:=a5=I>D>S?&?? >q>>f">-l=2=?=D= <1_>h>>?>{>l>@G>R2>e=^=dV=2J|= Q<<$<9<<>|>>,>Z>>Z'>r==T=!fu= 3<< a<<<< 3">a5>e>> ==_U7==>)$N>,1> &<.<;p9>;$;<7<_N;p9>;'Z;5< <7l&>7>>j>>'>;>!P>S?a???+?K?d3`?pfH?w?u?nI?` b?C?&??>:?N?>&j>P>a>1>?B ?S??!9k?6?Sma?e?r?z?xB(?a?J),?-{V?>]>?W>I>B>>q>e>ѹ>>o2??}?&D?:?S|e?dv?k?j=?+^??>έ?>>>>g>I> >"@>\>>F>BU>6">+>? ?^?,(?;?;a>@>L>K>o>D>2J|>9F>IG>Oaj>MD>M>JL>J8/>J8/>Oه>^>y#]>>r>y>>I>Ԩ>Ӛl>D>0>F=ç='Z=CT= ==Ė=G==.=.=æ=8/=:>> J>2m>@>PQ>X|>Q}=7!=S=uڕ=K=(?===(?=6 a=D=Fg=H=I=Nq1=Xç=c=uڕ==7!==g=8/=4=<='== 3=_N< 3<=_U7=I=*Ȳ=r= 3<<<<~< <==>I=W=t\=K=-^=!fu=r= =_N<ڕ<<<=CT=2J|=K=Xç=w==T>>s>Gߠ>=%=`\=o=\=K=H=D=?m=7=>}d=K=e=W=.=ڕ>_>9T)>k>>,>*>>D>e=.==~L=e=dV=ht=v==v<=m>&˿>PQ>x3$>>>Ӛl?3? 3>>G~>0>PQ> =æ=\==q)w=w===.> >X> >?m???,3?5R?/?қ>>D>6}=t=={{=a5=[R=ht=Q==l&>Fg>>? @?0?=` ?F`?P~?Po?@?%'Z>>V&==x=V4=:=)y=-^=K=ht=Y>ʰ>[a>*?s?-0E?@?K?P?Q2?H?2˜?S>JL=}d=I==o<<<{=6=5'=s#=.>D>g?a? J?/[?6)h?4?.z?"? 3>S=dV<<^>J>ڤ>?o>>Ԩ>>ba=ĵ<,$;4*9p9>; 3;<;<-!A>M>\>Y;>D>#=.=U<{9p9>;R2<4*<̐=!fu=[R=j=Q=|l&=Y=*Ȳ<<%'Z<<<<< 39p9>9p9>9p9>;%'Z; 3;$;;#;C.;t<]t<+==_N<<;;#<='=^d==S==U= v<<̐<4*;C.9p9>;C.;* >%ci>P===b%=:p9>:#:#; 3;p9>;tm>}\_>tN>^>D>"=Q==>}d=o< 3;t;'Z;ٳ;<<7<$= 3=QA=y> Q>A>>y>CT>w>J8/> v<=.=~=>}d= 3<$ >R2>Lz>><>$> >X|>)y=T=b=S"O=!fu=~< a< 3MD>>'Z>#N>k>y>Cj>_N=?=g:=6 a=9=o<<>X|>|>,>t>2J|=bx=S=I=W=O<50>W_>g:>X|=a5= v<:#;#;<;t<;< 3<'Z<<+;4*; 3;5<%'Zr>)> x=V=¶e=^==1=dV=_U7=k=o==|l&=c=T=Fg=H=b%=9=.=!> Y4>i>5>Q >_U7>DZ>;4>5'>)y>}=|=>$> &> <>\A>#>l>f>D>s#>o>> ?'?N>N>S>r>9>u>$>r>Y>T>Y>f">o >w>~ĵ> >:.>}?q?'?!ޒ?!Hn?;?&? >匳>7>3>>>g>q">> >\>>@>>Ԩ?AG??+?@N?ORg?K͐?A? ?+O?m> >l>D>>>=>F>;>>{V>x>W>8>4?q?"?2m?H?V?T0?*_?^N>ĵ>>g>+>>>g>@G>CT>n>g>>>>?5??Ø?,"?:qm?96">uL>> >>`>PQ>a5>s >uڕ>o >i>lu>rU>wB>> >,>^>˜^>֧&>7??>>d>E>'==K=l&>r>=;>> >9>S>b>f>/=>DZ>Z>l{ >^>Im>>\A==4=b=c=V4=b%=|l&==b=b======æ=/>O>S>i> >#=r=]t=I=(?=CT= 3= 3= 3=6=r=r=r=='=-^=D=QA=b%=|l&=====!fu== 3=_N<<;<;<< <(?I=(?=CT= 3<#<̐< a?>#=<=ZC=Im=Y=B>I=+='=== = 3= ==K==7!=æ>ʰ>/>JL>R3>>Y;># =K=F=w=V4=I=Gߠ=H=I=K=V4=w=`\={>+|>Cj>f">>>r>">>w>,m=[Q==uڕ=Wm=K=T=[R=f=?=?>{>FY>>>>B? ?}?p_>4>=>cG> u=`\=}\_=T=B>I==+=JL=[R={{=v<=>Kܔ>>u?>:?P?!?+"?,+?#?>>$s/= =Y=5'== =CT='=E=dV=Y>)>k>??.?"?)`\?+?'?>޿>r=z=r<{<<$<'Z<+<= Q=?m==>Q>>>܄??}?&?(Z>>>{{=)y<<;t;ٳ;2;t<)>U>>3>Eb>>b>tr?>,m=?;599>99>;#;#<7<=!fu=}\_=æ>>=;>f> =Ӛl==-^;$<9p9>;#;'Z;<<7:p9>;C.;$=r=H=i=?=~=a5=@]=<̐9p9>9p9>99>; 3;p9>;t<%'Z< 3<==æ=z=z=}d=3=`Eq=.= 3 J>I>e==æ=3=Y=-^= <̐<~<7<,$<;=J|=ڕ>>2>"==+=q=_U7=5'=r=_N<.<\>4*>8c> |=g==Y=6 a== 3 v<>14>+==K=6<#<̐<$;;$;<;#9p9>:p9>;C.;$<; 3;<;5< <,$<4*<;9>;.;;p9>;R2;#;9>< 3< 3;;ٳ;p9>:p9>9p9>;#; 3;ٳ;<#<<;t;ٳ;ٳ;5;t;t;5;5<.<ht>WB>A>+>>9>Y>\> ===>B>Lz>)>> J>-l><>P>]>i>r>S>CT>~ĵ>WB>;>>}d>L>MD>@!>2>/y>2m>7>AN>N5#>[a>oI>o> R>#>g>">>>fu>>aq>A>A>U>>\H}>U>G+u>A>E>MD>Yw>i>~>>_>R>q>h>W>έ?>I>>o >Cj>&S> v<>3v>@>?>5R>3>5D>;4>D>Q>g,>>>>?>l>>">^d>FY>-l> 3=Ň=}d=T>> &>>$>O> 3> Y4>q>-!A>AN>U>[a>]8>a>lu>n>ʰ=;=:==e=a5=v=)=3=\=\=3==CT==ZC=>\A>V(>>CT>7> ==ht=U=6 a=====(?=0j =-^=)y=+=5'=E=U=mh====Y===(?== =_N;R2;<;$;<,$/=|=ZC==Xç=.=r= = 3= 3= 3=O= 3= ='=T==G=>><`>O%\>I>PQ>)=T)==U=-^=r= Q=CT=r=='=6=[R==>%ۅ>@>`>>2>@G>^>J8/==S=Y=5'== 3=_N= 3=r='=D=c=?>)>Fg>{{>dh>fu>r0>>> >V(= R=?m==_N0->l<>6>>h>>D>^N>cG=i= 3< a< 3f>P>~>9>r>Fa>~ĵ>E=<;; 3;p9>;p9>;R2;p9>;p9>;$< 3<<<='=uڕ=m> >+>3v>3:>&===-^;C.:p9>;<+<<= 3= = 3<۔R< 3;2:#;p9>;$;t;<;9>;99>9p9>:#;#:29p9>;#; 3;5< <7<;<7;;:9>99>9p9>;#;<;$< == 3==== 3=o<<<4*< a;C.;#;C.;p9>;<; 3;'Z;t<9p9>9p9>9p9>99>:#;R2;$< 3<,$<7<,$< 3;t;$;<;R2; 3:#;R2; 3;$;$; 3;R2:29p9>9p9>99>9p9>9p9>:p9>; 3;C.;p9>;p9>;R2;#:#99>:p9>:p9>:p9>99>9p9>;5;2;$; 3;R2;#:p9>:#;R2;$;t< 3< ;;ٳ;#;p9>;<;$;ٳ;5;ٳ;ٳ<9<9< 3=U7=4=3=r=k=/==|V=S=S==\='Z=J|=8/=xY>>Lz=L==r?>j=;=¶e=V==Y=T=b%=}\_=O=1==x=x=o==J|=Ӛl==l&==ѹ==T===dV=K=5'=)y=0j =D=K=T=U=QA=K=T=_U7={{=r=^==^=V==W=H==+=)y== =O=_N= 3=6=r==S=CT=r=!fu=5'=QA=dV=s#=r=dV=[R=T= = 3=_N<#<<; 39p9>99>:9>;R2;;5;<<<:9>9p9>9p9>:#;R2;;ʰL;5;ٳ;ٳ;t;<<< 3:#;C.;;ٳ;9><_N;<< <7;R2;R2;$;<7}d=uڕ=T=5'=9=_N<<<_NFa>>=æ=:=_N<<ʰ>r>> Y4=Ӛl=<̐;<;$<(?9p9>9p9>9p9>9p9>:p9>; 3<0j <=_N=*Ȳ=U=w==6=z=K= <9p9>9p9>;p9><<<= =!fu=(?="V= <99>; 3;C.;R2;C.:p9>9p9>:#; 3:9>:p9>9p9>;#;C.;R2;p9>;;5;9>;t;.;<;#99>:#;t<_N< 3< <%'Z<;9p9>;#;p9>;'Z;;R2;p9>;p9>;R2;R2;;t<<%'Z<7<<;t;9><(?;$;t;t;t;ٳ;$;5;<<%'Z<4*<%'Z<<<,$<%'Z<_N;t9p9>:p9>;4*;R2;C.;4*;C.;<;2;9>;<;t;$;;p9>;R2;#:p9>:#;R2;<; 3;p9>;#99>9p9>9p9>9p9>99>:2;#;C.;%'Z; 39p9>;p9>;R2;C.; 3:p9>:p9>:p9>;#;a5;'Z;ٳ;t;t;$;;p9>;C.;C.;C.;R2;R2;R2;p9><%'Z<< ;;t;t;5;t< <7<<< 3<<<<.< a<<Ȳ<<<;t<_N< < < 3;<<<4*;p9>;<;$;t<#<(?<7;C.;#:p9>9p9>99>; 3;R2; 3;$;5;t;t;t;ٳ;C.;C.;C.;R2;p9>;p9>;R2;#:p9>9p9>:#;4*;R2;p9>;R2;R2;C.;#;#;#;4*;R2;p9>;R2;#:p9>9p9>:p9>:9>:9>:#:#; 3;; 3;p9>;R2;R2;p9>;R2;#:#9p9>9p9>:#;#;#; 3:2;C.;<<0j <b;t;$;#;<;R2;#:#99>99>;4*;<;;$;;$;t<<<<9p9>9p9>9p9>:p9>;R2;$<_N<(?<7<7:p9>:p9>; 3;R2;$<;#:p9>:p9>; 3;<;t<7< 3<.=_N=r=-^=D=D=*Ȳ= 3<_N<;2;;p9>;R2;#99>:#;<I=Fg=9F=99>9p9>9p9>;p9>< 3<<Ȳ<:p9>;C.; 3;$;5;ʰL;<:p9>9p9>; 3;C.;C.; 399>;C.;'Z;2;2;;C.:#:p9>99>99>;#;;t< < ;t;#;#9p9>:p9>:#; 3:2:p9>99>; 3; 3;t<<;9>;$;R2:#99>:p9>:p9>9p9>9p9>:2;#;#:p9>9p9>9p9>;4*;$;t;t;ٳ;;R2; 3; 3;4*;#:299>9p9>99>:p9>:#:#;#;p9>; 3;p9>;4*:#:p9>; 3;C.;#:9>9p9>99>:p9>9p9>99>:p9>:p9>9p9>9p9>:p9>:#:9>:9>:#9p9>;#;#:#9p9>9p9>:p9>;#;R2;p9>;<;<;p9>;C.:9>:p9>:p9>99>99>99>; 3;.;$;<;R2;4*;4*;R2;<;$;5;5;5;2;'Z;<;<;;;p9>;R2;a5;;$<%'Z< 3;t;$;;<; 3;$;t< 3< 3< < ;9>;t;t< <;;t;<<%'Z<<<<<<<%'Z<7;<_N< < <<(?<7;p9>;;$;;2;ٳ;5;t< <(?<7;p9>;p9>;p9>;p9>;#;ٳ;<<%'Z<4*<4*<,$<%'Z;t;t;t;2;#;R2; 3:p9>:#:2; 3; 3:9>; 3;C.;p9>;;$;ٳ;t;t;t;5;p9>;p9>;p9>;p9>;R2; 3:p9>9p9>9p9>:#;#;R2;p9>;<; 3;<;p9>:p9>:p9>:#:#:#:p9>99>99>:#; 3; 3:#:p9>9p9>9p9>9p9>9p9>9p9>9p9>:9>:p9>9p9>:p9>;p9>;C.:#:#;#;C.;#:#:p9>; 3;R2;$; 3;4*99>; 3;p9>;$;$;$;'Z;#;$;$;5;;C.:p9>:p9>;p9>;ٳ<_N<<(?<(?<%'Z<;;$;p9>; 39p9>;C.;$<<7;<;9><7:p9>; 3;<7;#;p9>;'Z;$;$;p9>99>9p9>9p9>9p9>9p9>; 3;#:#; 3;R2;p9>;C.:p9>;#;p9>;<;R2:#:p9>;C.;R2;%'Z99>99>:p9>9p9>9p9>99>:p9>99>9p9>;#; 3:p9>9p9>9p9>:p9>:#; 3;#; 3:#99>9p9>9p9>99>99>9p9>9p9>:p9>; 3;;p9>;C.:#99>99>:#;#;4*;C.;C.;#:#99>99>:p9>;#;C.;C.;C.;R2;p9>;;ٳ;$;p9>;4*:#:p9>:#;#;4*;C.;4*;#; 3:p9>:#; 3;R2;<;;'Z;$;2;5;t;*;;R2; 399>99>:#; 3; 3; 3:2:#:p9>:#;#;p9>;#;$;ٳ;5;t;t;ٳ;$; 3;C.:#9p9>9p9>9p9>99>99>99>99>99>:p9>;#;R2; 3;$;$;2;ٳ;5;;<;R2; 399>9p9>99>:p9>;#;R2;p9>; 3;;;;C.;4*; 399>9p9>:p9>; 3;%'Z;C.;C.;C.:#:p9>9p9>9p9>:p9>:p9>:#9p9>9p9>9p9>9p9>:p9>;%'Z;C.; 39p9>99>;C.; 3;#;p9>;4*:4*:#;p9>;$;.;$;<;4*99>:#;p9>;$;2;$;;C.:p9>99>;C.; 3;'Z;;p9>;#9p9>:p9>;#;C.;#:9>9p9>9p9>9p9>9p9>9p9>:p9>:p9>:p9>99>9p9>9p9>;#:#99>9p9>9p9>99>9p9>9p9>9p9>9p9>; 3;C.;R2;R2;C.;C.;4*;a5;C.:299>9p9>9p9>99>9p9>9p9>:p9>;C.;p9>; 3; 3; 3;<;<;p9>;C.:9>99>9p9>:2;C.;<;;;#;; 3;R2;#99>9p9>:#;4*;R2;p9>;<;<;p9>;p9>;#:p9>9p9>:p9>:9>;#;C.;4*;4*;#:#99>9p9>99>:p9>:#:p9>9p9>9p9>:p9>99>9p9>9p9>9p9>9p9>9p9>9p9>9p9>9p9>99>; 3;#:#9p9>99>;C.; 3;#;<;C.9p9>:#;p9>;$;5;$; 3:9>:p9>;p9>;$;5;ٳ;;#9p9>;#;<;'Z;'Z;p9>:#9p9>:9>;4*;C.:#king-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/p_a_karplus_1996/0000755000000000000000000000000011677361404025137 5ustar rootrootking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/p_a_karplus_1996/tau-general.ndft0000644000000000000000000001223311531212716030207 0ustar rootrootTau as a function of phi, psi; after P.A. Karplus (1996)44C4C4$$BBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBBBBBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBffBBBBBBBBBBBBBBBffBffBffBffBffBffBffBffBffBffBBBBBBBBBBBBBBBBBBBBBBBBBBBffBffBffBffBffBffBffBffBffBffBBBBBBBBBBBBBBBBBBBBBBBBBBBffBffBffBffBffBffBffBffBffBffBBBBBBBBBBBBffBBBBBBBBBBBBBBBffBffBffBffBffBffBffBffBffBffBBBBBBBBBBBffBffBBBBBBBBBBBBBBBffBffBffBffBffBffBffBffBffBBBBBBBBBBBBBBBBBBBBBBBBBBBBffBffBffBffBffBffBffBffBffBBBBBBBBBBBffBBBBBBBBBBBBBBBBffBffBffBffBffBffBffBffBffBffBBBBBBBBBBffBffBffBffBBBBBBBBBBBBBffBffBffBffBffBffBffBffBffBffBffBBBBBBBBBffBffBffBffBffBffBffBffBffBBBBBBBBBffBffBffBffBffBffBffBffBffBffBffBBBBBBBBffBffBffBffBffBffBffBffBffBffBffBBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/p_a_karplus_1996/tau-prepro.ndft0000644000000000000000000001223311531212716030101 0ustar rootrootTau as a function of phi, psi; after P.A. Karplus (1996)44C4C4$$BffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBffBffBffBffBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBffBffBffBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBBBffBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBBBffBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBBBBffBffBffBffBffBffBffBffBffBffBffBffBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffBffking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/p_a_karplus_1996/tau-glycine.ndft0000644000000000000000000001223311531212716030224 0ustar rootrootTau as a function of phi, psi; after P.A. Karplus (1996)44C4C4$$BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBking-2.21.120420/chiropraxis/resource/chiropraxis/rotarama/p_a_karplus_1996/tau-proline.ndft0000644000000000000000000001223311531212716030242 0ustar rootrootTau as a function of phi, psi; after P.A. Karplus (1996)44C4C4$$BߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBBBBBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBBBBBBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBBBBBBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBBBBBBBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBBBBBBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBBBBBBBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBBBBBBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBBBBBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBBBBBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBBBBBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙBߙking-2.21.120420/chiropraxis/resource/chiropraxis/sc/0000755000000000000000000000000011677361404020746 5ustar rootrootking-2.21.120420/chiropraxis/resource/chiropraxis/sc/singlesc.pdb0000644000000000000000000005111411531212712023230 0ustar rootrootATOM 1 CA ALA A 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB ALA A 1 0.530 0.001 1.426 1.00 30.00 ATOM 1 HA ALA A 1 0.341 0.916 -0.504 1.00 30.00 ATOM 1 HB1 ALA A 1 1.630 0.001 1.409 1.00 30.00 ATOM 1 HB2 ALA A 1 0.172 0.899 1.950 1.00 30.00 ATOM 1 HB3 ALA A 1 0.172 -0.897 1.951 1.00 30.00 ATOM 1 CA ARG R 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB ARG R 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG ARG R 1 0.246 1.277 2.204 1.00 30.00 ATOM 1 CD ARG R 1 0.805 1.209 3.616 1.00 30.00 ATOM 1 NE ARG R 1 0.536 2.429 4.372 1.00 30.00 ATOM 1 CZ ARG R 1 0.916 2.627 5.629 1.00 30.00 ATOM 1 NH1 ARG R 1 1.586 1.684 6.277 1.00 30.00 ATOM 1 NH2 ARG R 1 0.625 3.770 6.236 1.00 30.00 ATOM 1 HA ARG R 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 ARG R 1 0.100 -0.851 1.976 1.00 30.00 ATOM 1 HB3 ARG R 1 1.624 -0.160 1.406 1.00 30.00 ATOM 1 HG2 ARG R 1 0.684 2.136 1.675 1.00 30.00 ATOM 1 HG3 ARG R 1 -0.840 1.445 2.245 1.00 30.00 ATOM 1 HD2 ARG R 1 0.367 0.347 4.140 1.00 30.00 ATOM 1 HD3 ARG R 1 1.891 1.038 3.570 1.00 30.00 ATOM 1 HE ARG R 1 0.032 3.161 3.914 1.00 30.00 ATOM 1 HH11 ARG R 1 1.805 0.823 5.818 1.00 30.00 ATOM 1 HH12 ARG R 1 1.872 1.833 7.223 1.00 30.00 ATOM 1 HH21 ARG R 1 0.120 4.480 5.747 1.00 30.00 ATOM 1 HH22 ARG R 1 0.911 3.920 7.182 1.00 30.00 ATOM 1 CA ASN N 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB ASN N 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG ASN N 1 0.186 1.268 2.186 1.00 30.00 ATOM 1 OD1 ASN N 1 -0.124 2.295 1.582 1.00 30.00 ATOM 1 ND2 ASN N 1 0.233 1.199 3.511 1.00 30.00 ATOM 1 HA ASN N 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 ASN N 1 0.128 -0.867 1.973 1.00 30.00 ATOM 1 HB3 ASN N 1 1.629 -0.119 1.411 1.00 30.00 ATOM 1 HD21 ASN N 1 0.011 2.004 4.062 1.00 30.00 ATOM 1 HD22 ASN N 1 0.491 0.343 3.959 1.00 30.00 ATOM 1 CA ASP D 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB ASP D 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG ASP D 1 0.292 1.315 2.147 1.00 30.00 ATOM 1 OD1 ASP D 1 -0.028 2.311 1.464 1.00 30.00 ATOM 1 OD2 ASP D 1 0.418 1.349 3.389 1.00 30.00 ATOM 1 HA ASP D 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 ASP D 1 0.060 -0.813 1.999 1.00 30.00 ATOM 1 HB3 ASP D 1 1.616 -0.209 1.416 1.00 30.00 ATOM 1 CA CYS C 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB CYS C 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 SG CYS C 1 0.146 1.492 2.376 1.00 30.00 ATOM 1 HA CYS C 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 CYS C 1 0.127 -0.872 1.964 1.00 30.00 ATOM 1 HB3 CYS C 1 1.629 -0.125 1.402 1.00 30.00 ATOM 1 HG CYS C 1 0.641 1.390 3.573 1.00 30.00 ATOM 1 CA GLN Q 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB GLN Q 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG GLN Q 1 0.246 1.278 2.204 1.00 30.00 ATOM 1 CD GLN Q 1 0.790 1.240 3.618 1.00 30.00 ATOM 1 OE1 GLN Q 1 0.972 0.168 4.196 1.00 30.00 ATOM 1 NE2 GLN Q 1 1.054 2.414 4.180 1.00 30.00 ATOM 1 HA GLN Q 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 GLN Q 1 0.099 -0.850 1.977 1.00 30.00 ATOM 1 HB3 GLN Q 1 1.624 -0.161 1.406 1.00 30.00 ATOM 1 HG2 GLN Q 1 0.685 2.132 1.668 1.00 30.00 ATOM 1 HG3 GLN Q 1 -0.841 1.442 2.238 1.00 30.00 ATOM 1 HE21 GLN Q 1 1.416 2.453 5.111 1.00 30.00 ATOM 1 HE22 GLN Q 1 0.890 3.259 3.672 1.00 30.00 ATOM 1 CA GLU E 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB GLU E 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG GLU E 1 0.246 1.278 2.204 1.00 30.00 ATOM 1 CD GLU E 1 0.790 1.240 3.618 1.00 30.00 ATOM 1 OE1 GLU E 1 1.224 0.155 4.060 1.00 30.00 ATOM 1 OE2 GLU E 1 0.784 2.296 4.285 1.00 30.00 ATOM 1 HA GLU E 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 GLU E 1 0.099 -0.850 1.977 1.00 30.00 ATOM 1 HB3 GLU E 1 1.624 -0.161 1.406 1.00 30.00 ATOM 1 HG2 GLU E 1 0.685 2.132 1.668 1.00 30.00 ATOM 1 HG3 GLU E 1 -0.841 1.442 2.238 1.00 30.00 ATOM 1 CA GLY G 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 HA2 GLY G 1 0.363 0.938 -0.446 1.00 30.00 ATOM 1 HA3 GLY G 1 0.364 -0.025 1.038 1.00 30.00 ATOM 1 CA HIS H 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB HIS H 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG HIS H 1 0.205 1.241 2.202 1.00 30.00 ATOM 1 ND1 HIS H 1 0.775 2.464 1.923 1.00 30.00 ATOM 1 CD2 HIS H 1 -0.637 1.449 3.241 1.00 30.00 ATOM 1 CE1 HIS H 1 0.298 3.370 2.757 1.00 30.00 ATOM 1 NE2 HIS H 1 -0.560 2.780 3.566 1.00 30.00 ATOM 1 HA HIS H 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 HIS H 1 0.128 -0.871 1.967 1.00 30.00 ATOM 1 HB3 HIS H 1 1.629 -0.123 1.405 1.00 30.00 ATOM 1 HD1 HIS H 1 1.445 2.638 1.200 1.00 30.00 ATOM 1 HD2 HIS H 1 -1.265 0.692 3.733 1.00 30.00 ATOM 1 HE1 HIS H 1 0.571 4.436 2.775 1.00 30.00 ATOM 1 HE2 HIS H 1 -1.072 3.231 4.297 1.00 30.00 ATOM 1 CA ILE I 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB ILE I 1 0.565 -0.015 1.433 1.00 30.00 ATOM 1 CG1 ILE I 1 0.196 1.277 2.165 1.00 30.00 ATOM 1 CD1 ILE I 1 0.502 1.248 3.646 1.00 30.00 ATOM 1 CG2 ILE I 1 2.081 -0.139 1.407 1.00 30.00 ATOM 1 HA ILE I 1 0.318 0.927 -0.499 1.00 30.00 ATOM 1 HB ILE I 1 0.129 -0.878 1.957 1.00 30.00 ATOM 1 HG12 ILE I 1 0.739 2.116 1.705 1.00 30.00 ATOM 1 HG13 ILE I 1 -0.877 1.473 2.025 1.00 30.00 ATOM 1 HD11 ILE I 1 0.211 2.208 4.100 1.00 30.00 ATOM 1 HD12 ILE I 1 -0.061 0.433 4.122 1.00 30.00 ATOM 1 HD13 ILE I 1 1.580 1.086 3.795 1.00 30.00 ATOM 1 HG21 ILE I 1 2.466 -0.148 2.437 1.00 30.00 ATOM 1 HG22 ILE I 1 2.363 -1.075 0.902 1.00 30.00 ATOM 1 HG23 ILE I 1 2.509 0.715 0.863 1.00 30.00 ATOM 1 CA LEU L 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB LEU L 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG LEU L 1 0.230 1.243 2.271 1.00 30.00 ATOM 1 CD1 LEU L 1 0.711 1.057 3.702 1.00 30.00 ATOM 1 CD2 LEU L 1 0.923 2.466 1.692 1.00 30.00 ATOM 1 HA LEU L 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 LEU L 1 0.126 -0.877 1.955 1.00 30.00 ATOM 1 HB3 LEU L 1 1.627 -0.130 1.394 1.00 30.00 ATOM 1 HG LEU L 1 -0.860 1.390 2.258 1.00 30.00 ATOM 1 HD11 LEU L 1 0.481 1.961 4.286 1.00 30.00 ATOM 1 HD12 LEU L 1 0.201 0.192 4.151 1.00 30.00 ATOM 1 HD13 LEU L 1 1.797 0.885 3.705 1.00 30.00 ATOM 1 HD21 LEU L 1 0.691 3.346 2.308 1.00 30.00 ATOM 1 HD22 LEU L 1 2.010 2.303 1.683 1.00 30.00 ATOM 1 HD23 LEU L 1 0.570 2.635 0.663 1.00 30.00 ATOM 1 CA LYS K 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB LYS K 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG LYS K 1 0.246 1.277 2.204 1.00 30.00 ATOM 1 CD LYS K 1 0.805 1.209 3.616 1.00 30.00 ATOM 1 CE LYS K 1 0.516 2.486 4.387 1.00 30.00 ATOM 1 NZ LYS K 1 1.058 2.433 5.773 1.00 30.00 ATOM 1 HA LYS K 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 LYS K 1 0.100 -0.851 1.976 1.00 30.00 ATOM 1 HB3 LYS K 1 1.624 -0.160 1.406 1.00 30.00 ATOM 1 HG2 LYS K 1 0.684 2.136 1.675 1.00 30.00 ATOM 1 HG3 LYS K 1 -0.840 1.445 2.245 1.00 30.00 ATOM 1 HD2 LYS K 1 0.368 0.350 4.144 1.00 30.00 ATOM 1 HD3 LYS K 1 1.892 1.041 3.574 1.00 30.00 ATOM 1 HE2 LYS K 1 0.952 3.343 3.855 1.00 30.00 ATOM 1 HE3 LYS K 1 -0.572 2.652 4.426 1.00 30.00 ATOM 1 HZ1 LYS K 1 0.848 3.288 6.247 1.00 30.00 ATOM 1 HZ2 LYS K 1 0.642 1.668 6.265 1.00 30.00 ATOM 1 HZ3 LYS K 1 2.049 2.306 5.738 1.00 30.00 ATOM 1 CA MET M 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB MET M 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG MET M 1 0.205 1.258 2.219 1.00 30.00 ATOM 1 SD MET M 1 0.993 2.730 1.544 1.00 30.00 ATOM 1 CE MET M 1 2.708 2.414 1.953 1.00 30.00 ATOM 1 HA MET M 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 MET M 1 0.127 -0.871 1.966 1.00 30.00 ATOM 1 HB3 MET M 1 1.629 -0.125 1.404 1.00 30.00 ATOM 1 HG2 MET M 1 -0.886 1.402 2.228 1.00 30.00 ATOM 1 HG3 MET M 1 0.521 1.125 3.265 1.00 30.00 ATOM 1 HE1 MET M 1 3.331 3.247 1.596 1.00 30.00 ATOM 1 HE2 MET M 1 2.814 2.320 3.044 1.00 30.00 ATOM 1 HE3 MET M 1 3.035 1.481 1.471 1.00 30.00 ATOM 1 CA MSE M 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB MSE M 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG MSE M 1 0.205 1.258 2.219 1.00 30.00 HETATM 1 SE MSE M 1 1.047 2.831 1.498 1.00 30.00 ATOM 1 CE MSE M 1 2.865 2.414 1.975 1.00 30.00 ATOM 1 HA MSE M 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 MSE M 1 0.127 -0.871 1.966 1.00 30.00 ATOM 1 HB3 MSE M 1 1.629 -0.125 1.404 1.00 30.00 ATOM 1 HG2 MSE M 1 -0.886 1.402 2.228 1.00 30.00 ATOM 1 HG3 MSE M 1 0.521 1.125 3.265 1.00 30.00 ATOM 1 HE1 MSE M 1 3.529 3.222 1.637 1.00 30.00 ATOM 1 HE2 MSE M 1 2.943 2.309 3.067 1.00 30.00 ATOM 1 HE3 MSE M 1 3.163 1.470 1.495 1.00 30.00 ATOM 1 CA PHE F 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB PHE F 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG PHE F 1 0.205 1.245 2.204 1.00 30.00 ATOM 1 CD1 PHE F 1 1.005 2.370 2.106 1.00 30.00 ATOM 1 CD2 PHE F 1 -0.908 1.294 3.025 1.00 30.00 ATOM 1 CE1 PHE F 1 0.702 3.517 2.816 1.00 30.00 ATOM 1 CE2 PHE F 1 -1.215 2.439 3.736 1.00 30.00 ATOM 1 CZ PHE F 1 -0.409 3.551 3.631 1.00 30.00 ATOM 1 HA PHE F 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 PHE F 1 0.127 -0.871 1.967 1.00 30.00 ATOM 1 HB3 PHE F 1 1.629 -0.124 1.405 1.00 30.00 ATOM 1 HD1 PHE F 1 1.894 2.352 1.458 1.00 30.00 ATOM 1 HD2 PHE F 1 -1.556 0.410 3.113 1.00 30.00 ATOM 1 HE1 PHE F 1 1.347 4.405 2.729 1.00 30.00 ATOM 1 HE2 PHE F 1 -2.102 2.462 4.386 1.00 30.00 ATOM 1 HZ PHE F 1 -0.653 4.464 4.195 1.00 30.00 ATOM 1 CA PRO P 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB PRO P 1 0.344 -0.001 1.491 1.00 30.00 ATOM 1 CG PRO P 1 -0.847 -0.666 2.144 1.00 30.00 ATOM 1 CD PRO P 1 -2.010 -0.194 1.291 1.00 30.00 REMARK ATOM 1 NE PRO P 1 -1.384 0.013 -0.026 1.00 0.00 ATOM 1 HA PRO P 1 0.434 0.857 -0.537 1.00 30.00 ATOM 1 HB2 PRO P 1 1.273 -0.555 1.690 1.00 30.00 ATOM 1 HB3 PRO P 1 0.492 1.021 1.870 1.00 30.00 ATOM 1 HG2 PRO P 1 -0.755 -1.762 2.138 1.00 30.00 ATOM 1 HG3 PRO P 1 -0.960 -0.359 3.194 1.00 30.00 ATOM 1 HD2 PRO P 1 -2.815 -0.942 1.247 1.00 30.00 ATOM 1 HD3 PRO P 1 -2.454 0.734 1.682 1.00 30.00 ATOM 1 CA SER S 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB SER S 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 OG SER S 1 0.133 -1.167 2.128 1.00 30.00 ATOM 1 HA SER S 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 SER S 1 0.172 0.892 1.964 1.00 30.00 ATOM 1 HB3 SER S 1 1.634 0.061 1.418 1.00 30.00 ATOM 1 HG SER S 1 0.498 -1.142 3.059 1.00 30.00 ATOM 1 CA THR T 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB THR T 1 0.565 -0.015 1.433 1.00 30.00 ATOM 1 OG1 THR T 1 0.152 -1.214 2.100 1.00 30.00 ATOM 1 CG2 THR T 1 0.058 1.185 2.218 1.00 30.00 ATOM 1 HA THR T 1 0.318 0.927 -0.499 1.00 30.00 ATOM 1 HB THR T 1 1.663 0.026 1.376 1.00 30.00 ATOM 1 HG1 THR T 1 0.521 -1.224 3.030 1.00 30.00 ATOM 1 HG21 THR T 1 0.471 1.158 3.237 1.00 30.00 ATOM 1 HG22 THR T 1 0.377 2.112 1.718 1.00 30.00 ATOM 1 HG23 THR T 1 -1.039 1.154 2.267 1.00 30.00 ATOM 1 CA TRP W 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB TRP W 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG TRP W 1 0.203 1.244 2.198 1.00 30.00 ATOM 1 CD1 TRP W 1 -0.857 1.429 3.038 1.00 30.00 ATOM 1 CD2 TRP W 1 0.936 2.476 2.193 1.00 30.00 ATOM 1 NE1 TRP W 1 -0.834 2.701 3.557 1.00 30.00 ATOM 1 CE2 TRP W 1 0.261 3.363 3.053 1.00 30.00 ATOM 1 CE3 TRP W 1 2.095 2.910 1.545 1.00 30.00 ATOM 1 CZ2 TRP W 1 0.705 4.664 3.283 1.00 30.00 ATOM 1 CZ3 TRP W 1 2.536 4.200 1.772 1.00 30.00 ATOM 1 CH2 TRP W 1 1.845 5.067 2.636 1.00 30.00 ATOM 1 HA TRP W 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 TRP W 1 0.128 -0.870 1.968 1.00 30.00 ATOM 1 HB3 TRP W 1 1.629 -0.122 1.406 1.00 30.00 ATOM 1 HD1 TRP W 1 -1.620 0.671 3.265 1.00 30.00 ATOM 1 HE1 TRP W 1 -1.501 3.082 4.197 1.00 30.00 ATOM 1 HE3 TRP W 1 2.645 2.239 0.867 1.00 30.00 ATOM 1 HZ2 TRP W 1 0.164 5.342 3.958 1.00 30.00 ATOM 1 HZ3 TRP W 1 3.446 4.555 1.268 1.00 30.00 ATOM 1 HH2 TRP W 1 2.225 6.086 2.794 1.00 30.00 ATOM 1 CA TYR Y 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB TYR Y 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG TYR Y 1 0.203 1.253 2.212 1.00 30.00 ATOM 1 CD1 TYR Y 1 1.005 2.383 2.118 1.00 30.00 ATOM 1 CD2 TYR Y 1 -0.913 1.302 3.038 1.00 30.00 ATOM 1 CE1 TYR Y 1 0.709 3.531 2.825 1.00 30.00 ATOM 1 CE2 TYR Y 1 -1.225 2.441 3.752 1.00 30.00 ATOM 1 CZ TYR Y 1 -0.413 3.555 3.645 1.00 30.00 ATOM 1 OH TYR Y 1 -0.716 4.696 4.353 1.00 30.00 ATOM 1 HA TYR Y 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 TYR Y 1 0.127 -0.871 1.967 1.00 30.00 ATOM 1 HB3 TYR Y 1 1.629 -0.124 1.405 1.00 30.00 ATOM 1 HD1 TYR Y 1 1.892 2.363 1.469 1.00 30.00 ATOM 1 HD2 TYR Y 1 -1.559 0.416 3.124 1.00 30.00 ATOM 1 HE1 TYR Y 1 1.355 4.418 2.741 1.00 30.00 ATOM 1 HE2 TYR Y 1 -2.112 2.462 4.403 1.00 30.00 ATOM 1 HH TYR Y 1 -1.547 4.545 4.887 1.00 30.00 ATOM 1 CA VAL V 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 CB VAL V 1 0.565 -0.015 1.433 1.00 30.00 ATOM 1 CG1 VAL V 1 2.081 -0.139 1.407 1.00 30.00 ATOM 1 CG2 VAL V 1 0.200 1.269 2.162 1.00 30.00 ATOM 1 HA VAL V 1 0.318 0.927 -0.499 1.00 30.00 ATOM 1 HB VAL V 1 0.128 -0.879 1.956 1.00 30.00 ATOM 1 HG11 VAL V 1 2.466 -0.148 2.437 1.00 30.00 ATOM 1 HG12 VAL V 1 2.363 -1.075 0.902 1.00 30.00 ATOM 1 HG13 VAL V 1 2.509 0.715 0.863 1.00 30.00 ATOM 1 HG21 VAL V 1 0.611 1.241 3.183 1.00 30.00 ATOM 1 HG22 VAL V 1 0.619 2.130 1.621 1.00 30.00 ATOM 1 HG23 VAL V 1 -0.895 1.366 2.210 1.00 30.00 king-2.21.120420/chiropraxis/resource/chiropraxis/sc/singleres.pdb0000644000000000000000000006621711531212712023426 0ustar rootrootATOM 1 N ALA A 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA ALA A 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C ALA A 1 0.550 -1.193 -0.774 1.00 30.00 ATOM 1 O ALA A 1 0.022 -2.301 -0.683 1.00 30.00 ATOM 1 CB ALA A 1 0.530 0.001 1.426 1.00 30.00 ATOM 1 H ALA A 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA ALA A 1 0.341 0.916 -0.504 1.00 30.00 ATOM 1 HB1 ALA A 1 1.630 0.001 1.409 1.00 30.00 ATOM 1 HB2 ALA A 1 0.172 0.899 1.950 1.00 30.00 ATOM 1 HB3 ALA A 1 0.172 -0.897 1.951 1.00 30.00 ATOM 1 N ARG R 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA ARG R 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C ARG R 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O ARG R 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB ARG R 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG ARG R 1 0.246 1.277 2.204 1.00 30.00 ATOM 1 CD ARG R 1 0.805 1.209 3.616 1.00 30.00 ATOM 1 NE ARG R 1 0.536 2.429 4.372 1.00 30.00 ATOM 1 CZ ARG R 1 0.916 2.627 5.629 1.00 30.00 ATOM 1 NH1 ARG R 1 1.586 1.684 6.277 1.00 30.00 ATOM 1 NH2 ARG R 1 0.625 3.770 6.236 1.00 30.00 ATOM 1 H ARG R 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA ARG R 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 ARG R 1 0.100 -0.851 1.976 1.00 30.00 ATOM 1 HB3 ARG R 1 1.624 -0.160 1.406 1.00 30.00 ATOM 1 HG2 ARG R 1 0.684 2.136 1.675 1.00 30.00 ATOM 1 HG3 ARG R 1 -0.840 1.445 2.245 1.00 30.00 ATOM 1 HD2 ARG R 1 0.367 0.347 4.140 1.00 30.00 ATOM 1 HD3 ARG R 1 1.891 1.038 3.570 1.00 30.00 ATOM 1 HE ARG R 1 0.032 3.161 3.914 1.00 30.00 ATOM 1 HH11 ARG R 1 1.805 0.823 5.818 1.00 30.00 ATOM 1 HH12 ARG R 1 1.872 1.833 7.223 1.00 30.00 ATOM 1 HH21 ARG R 1 0.120 4.480 5.747 1.00 30.00 ATOM 1 HH22 ARG R 1 0.911 3.920 7.182 1.00 30.00 ATOM 1 N ASN N 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA ASN N 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C ASN N 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O ASN N 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB ASN N 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG ASN N 1 0.186 1.268 2.186 1.00 30.00 ATOM 1 OD1 ASN N 1 -0.124 2.295 1.582 1.00 30.00 ATOM 1 ND2 ASN N 1 0.233 1.199 3.511 1.00 30.00 ATOM 1 H ASN N 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA ASN N 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 ASN N 1 0.128 -0.867 1.973 1.00 30.00 ATOM 1 HB3 ASN N 1 1.629 -0.119 1.411 1.00 30.00 ATOM 1 HD21 ASN N 1 0.011 2.004 4.062 1.00 30.00 ATOM 1 HD22 ASN N 1 0.491 0.343 3.959 1.00 30.00 ATOM 1 N ASP D 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA ASP D 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C ASP D 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O ASP D 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB ASP D 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG ASP D 1 0.292 1.315 2.147 1.00 30.00 ATOM 1 OD1 ASP D 1 -0.028 2.311 1.464 1.00 30.00 ATOM 1 OD2 ASP D 1 0.418 1.349 3.389 1.00 30.00 ATOM 1 H ASP D 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA ASP D 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 ASP D 1 0.060 -0.813 1.999 1.00 30.00 ATOM 1 HB3 ASP D 1 1.616 -0.209 1.416 1.00 30.00 ATOM 1 N CYS C 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA CYS C 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C CYS C 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O CYS C 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB CYS C 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 SG CYS C 1 0.146 1.492 2.376 1.00 30.00 ATOM 1 H CYS C 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA CYS C 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 CYS C 1 0.127 -0.872 1.964 1.00 30.00 ATOM 1 HB3 CYS C 1 1.629 -0.125 1.402 1.00 30.00 ATOM 1 HG CYS C 1 0.641 1.390 3.573 1.00 30.00 ATOM 1 N GLN Q 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA GLN Q 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C GLN Q 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O GLN Q 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB GLN Q 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG GLN Q 1 0.246 1.278 2.204 1.00 30.00 ATOM 1 CD GLN Q 1 0.790 1.240 3.618 1.00 30.00 ATOM 1 OE1 GLN Q 1 0.972 0.168 4.196 1.00 30.00 ATOM 1 NE2 GLN Q 1 1.054 2.414 4.180 1.00 30.00 ATOM 1 H GLN Q 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA GLN Q 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 GLN Q 1 0.099 -0.850 1.977 1.00 30.00 ATOM 1 HB3 GLN Q 1 1.624 -0.161 1.406 1.00 30.00 ATOM 1 HG2 GLN Q 1 0.685 2.132 1.668 1.00 30.00 ATOM 1 HG3 GLN Q 1 -0.841 1.442 2.238 1.00 30.00 ATOM 1 HE21 GLN Q 1 1.416 2.453 5.111 1.00 30.00 ATOM 1 HE22 GLN Q 1 0.890 3.259 3.672 1.00 30.00 ATOM 1 N GLU E 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA GLU E 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C GLU E 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O GLU E 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB GLU E 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG GLU E 1 0.246 1.278 2.204 1.00 30.00 ATOM 1 CD GLU E 1 0.790 1.240 3.618 1.00 30.00 ATOM 1 OE1 GLU E 1 1.224 0.155 4.060 1.00 30.00 ATOM 1 OE2 GLU E 1 0.784 2.296 4.285 1.00 30.00 ATOM 1 H GLU E 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA GLU E 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 GLU E 1 0.099 -0.850 1.977 1.00 30.00 ATOM 1 HB3 GLU E 1 1.624 -0.161 1.406 1.00 30.00 ATOM 1 HG2 GLU E 1 0.685 2.132 1.668 1.00 30.00 ATOM 1 HG3 GLU E 1 -0.841 1.442 2.238 1.00 30.00 ATOM 1 N GLY G 1 -1.451 0.000 0.000 1.00 30.00 ATOM 1 CA GLY G 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C GLY G 1 0.580 -1.175 -0.762 1.00 30.00 ATOM 1 O GLY G 1 0.073 -2.293 -0.678 1.00 30.00 ATOM 1 H GLY G 1 -1.872 -0.808 0.412 1.00 30.00 ATOM 1 HA2 GLY G 1 0.363 0.938 -0.446 1.00 30.00 ATOM 1 HA3 GLY G 1 0.364 -0.025 1.038 1.00 30.00 ATOM 1 N HIS H 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA HIS H 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C HIS H 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O HIS H 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB HIS H 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG HIS H 1 0.205 1.241 2.202 1.00 30.00 ATOM 1 ND1 HIS H 1 0.775 2.464 1.923 1.00 30.00 ATOM 1 CD2 HIS H 1 -0.637 1.449 3.241 1.00 30.00 ATOM 1 CE1 HIS H 1 0.298 3.370 2.757 1.00 30.00 ATOM 1 NE2 HIS H 1 -0.560 2.780 3.566 1.00 30.00 ATOM 1 H HIS H 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA HIS H 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 HIS H 1 0.128 -0.871 1.967 1.00 30.00 ATOM 1 HB3 HIS H 1 1.629 -0.123 1.405 1.00 30.00 ATOM 1 HD1 HIS H 1 1.445 2.638 1.200 1.00 30.00 ATOM 1 HD2 HIS H 1 -1.265 0.692 3.733 1.00 30.00 ATOM 1 HE1 HIS H 1 0.571 4.436 2.775 1.00 30.00 ATOM 1 HE2 HIS H 1 -1.072 3.231 4.297 1.00 30.00 ATOM 1 N ILE I 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA ILE I 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C ILE I 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O ILE I 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB ILE I 1 0.565 -0.015 1.433 1.00 30.00 ATOM 1 CG1 ILE I 1 0.196 1.277 2.165 1.00 30.00 ATOM 1 CD1 ILE I 1 0.502 1.248 3.646 1.00 30.00 ATOM 1 CG2 ILE I 1 2.081 -0.139 1.407 1.00 30.00 ATOM 1 H ILE I 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA ILE I 1 0.318 0.927 -0.499 1.00 30.00 ATOM 1 HB ILE I 1 0.129 -0.878 1.957 1.00 30.00 ATOM 1 HG12 ILE I 1 0.739 2.116 1.705 1.00 30.00 ATOM 1 HG13 ILE I 1 -0.877 1.473 2.025 1.00 30.00 ATOM 1 HD11 ILE I 1 0.211 2.208 4.100 1.00 30.00 ATOM 1 HD12 ILE I 1 -0.061 0.433 4.122 1.00 30.00 ATOM 1 HD13 ILE I 1 1.580 1.086 3.795 1.00 30.00 ATOM 1 HG21 ILE I 1 2.466 -0.148 2.437 1.00 30.00 ATOM 1 HG22 ILE I 1 2.363 -1.075 0.902 1.00 30.00 ATOM 1 HG23 ILE I 1 2.509 0.715 0.863 1.00 30.00 ATOM 1 N LEU L 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA LEU L 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C LEU L 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O LEU L 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB LEU L 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG LEU L 1 0.230 1.243 2.271 1.00 30.00 ATOM 1 CD1 LEU L 1 0.711 1.057 3.702 1.00 30.00 ATOM 1 CD2 LEU L 1 0.923 2.466 1.692 1.00 30.00 ATOM 1 H LEU L 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA LEU L 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 LEU L 1 0.126 -0.877 1.955 1.00 30.00 ATOM 1 HB3 LEU L 1 1.627 -0.130 1.394 1.00 30.00 ATOM 1 HG LEU L 1 -0.860 1.390 2.258 1.00 30.00 ATOM 1 HD11 LEU L 1 0.481 1.961 4.286 1.00 30.00 ATOM 1 HD12 LEU L 1 0.201 0.192 4.151 1.00 30.00 ATOM 1 HD13 LEU L 1 1.797 0.885 3.705 1.00 30.00 ATOM 1 HD21 LEU L 1 0.691 3.346 2.308 1.00 30.00 ATOM 1 HD22 LEU L 1 2.010 2.303 1.683 1.00 30.00 ATOM 1 HD23 LEU L 1 0.570 2.635 0.663 1.00 30.00 ATOM 1 N LYS K 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA LYS K 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C LYS K 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O LYS K 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB LYS K 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG LYS K 1 0.246 1.277 2.204 1.00 30.00 ATOM 1 CD LYS K 1 0.805 1.209 3.616 1.00 30.00 ATOM 1 CE LYS K 1 0.516 2.486 4.387 1.00 30.00 ATOM 1 NZ LYS K 1 1.058 2.433 5.773 1.00 30.00 ATOM 1 H LYS K 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA LYS K 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 LYS K 1 0.100 -0.851 1.976 1.00 30.00 ATOM 1 HB3 LYS K 1 1.624 -0.160 1.406 1.00 30.00 ATOM 1 HG2 LYS K 1 0.684 2.136 1.675 1.00 30.00 ATOM 1 HG3 LYS K 1 -0.840 1.445 2.245 1.00 30.00 ATOM 1 HD2 LYS K 1 0.368 0.350 4.144 1.00 30.00 ATOM 1 HD3 LYS K 1 1.892 1.041 3.574 1.00 30.00 ATOM 1 HE2 LYS K 1 0.952 3.343 3.855 1.00 30.00 ATOM 1 HE3 LYS K 1 -0.572 2.652 4.426 1.00 30.00 ATOM 1 HZ1 LYS K 1 0.848 3.288 6.247 1.00 30.00 ATOM 1 HZ2 LYS K 1 0.642 1.668 6.265 1.00 30.00 ATOM 1 HZ3 LYS K 1 2.049 2.306 5.738 1.00 30.00 ATOM 1 N MET M 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA MET M 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C MET M 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O MET M 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB MET M 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG MET M 1 0.205 1.258 2.219 1.00 30.00 ATOM 1 SD MET M 1 0.993 2.730 1.544 1.00 30.00 ATOM 1 CE MET M 1 2.708 2.414 1.953 1.00 30.00 ATOM 1 H MET M 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA MET M 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 MET M 1 0.127 -0.871 1.966 1.00 30.00 ATOM 1 HB3 MET M 1 1.629 -0.125 1.404 1.00 30.00 ATOM 1 HG2 MET M 1 -0.886 1.402 2.228 1.00 30.00 ATOM 1 HG3 MET M 1 0.521 1.125 3.265 1.00 30.00 ATOM 1 HE1 MET M 1 3.331 3.247 1.596 1.00 30.00 ATOM 1 HE2 MET M 1 2.814 2.320 3.044 1.00 30.00 ATOM 1 HE3 MET M 1 3.035 1.481 1.471 1.00 30.00 ATOM 1 N MSE M 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA MSE M 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C MSE M 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O MSE M 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB MSE M 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG MSE M 1 0.205 1.258 2.219 1.00 30.00 HETATM 1 SE MSE M 1 1.047 2.831 1.498 1.00 30.00 ATOM 1 CE MSE M 1 2.865 2.414 1.975 1.00 30.00 ATOM 1 H MSE M 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA MSE M 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 MSE M 1 0.127 -0.871 1.966 1.00 30.00 ATOM 1 HB3 MSE M 1 1.629 -0.125 1.404 1.00 30.00 ATOM 1 HG2 MSE M 1 -0.886 1.402 2.228 1.00 30.00 ATOM 1 HG3 MSE M 1 0.521 1.125 3.265 1.00 30.00 ATOM 1 HE1 MSE M 1 3.529 3.222 1.637 1.00 30.00 ATOM 1 HE2 MSE M 1 2.943 2.309 3.067 1.00 30.00 ATOM 1 HE3 MSE M 1 3.163 1.470 1.495 1.00 30.00 ATOM 1 N PHE F 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA PHE F 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C PHE F 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O PHE F 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB PHE F 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG PHE F 1 0.205 1.245 2.204 1.00 30.00 ATOM 1 CD1 PHE F 1 1.005 2.370 2.106 1.00 30.00 ATOM 1 CD2 PHE F 1 -0.908 1.294 3.025 1.00 30.00 ATOM 1 CE1 PHE F 1 0.702 3.517 2.816 1.00 30.00 ATOM 1 CE2 PHE F 1 -1.215 2.439 3.736 1.00 30.00 ATOM 1 CZ PHE F 1 -0.409 3.551 3.631 1.00 30.00 ATOM 1 H PHE F 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA PHE F 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 PHE F 1 0.127 -0.871 1.967 1.00 30.00 ATOM 1 HB3 PHE F 1 1.629 -0.124 1.405 1.00 30.00 ATOM 1 HD1 PHE F 1 1.894 2.352 1.458 1.00 30.00 ATOM 1 HD2 PHE F 1 -1.556 0.410 3.113 1.00 30.00 ATOM 1 HE1 PHE F 1 1.347 4.405 2.729 1.00 30.00 ATOM 1 HE2 PHE F 1 -2.102 2.462 4.386 1.00 30.00 ATOM 1 HZ PHE F 1 -0.653 4.464 4.195 1.00 30.00 ATOM 1 N PRO P 1 -1.466 0.000 0.000 1.00 30.00 ATOM 1 CA PRO P 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C PRO P 1 0.566 -1.218 -0.723 1.00 30.00 ATOM 1 O PRO P 1 -0.181 -2.059 -1.222 1.00 30.00 ATOM 1 CB PRO P 1 0.344 -0.001 1.491 1.00 30.00 ATOM 1 CG PRO P 1 -0.847 -0.666 2.144 1.00 30.00 ATOM 1 CD PRO P 1 -2.010 -0.194 1.291 1.00 30.00 REMARK ATOM 1 NE PRO P 1 -1.384 0.013 -0.026 1.00 0.00 ATOM 1 HA PRO P 1 0.434 0.857 -0.537 1.00 30.00 ATOM 1 HB2 PRO P 1 1.273 -0.555 1.690 1.00 30.00 ATOM 1 HB3 PRO P 1 0.492 1.021 1.870 1.00 30.00 ATOM 1 HG2 PRO P 1 -0.755 -1.762 2.138 1.00 30.00 ATOM 1 HG3 PRO P 1 -0.960 -0.359 3.194 1.00 30.00 ATOM 1 HD2 PRO P 1 -2.815 -0.942 1.247 1.00 30.00 ATOM 1 HD3 PRO P 1 -2.454 0.734 1.682 1.00 30.00 ATOM 1 N SER S 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA SER S 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C SER S 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O SER S 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB SER S 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 OG SER S 1 0.133 -1.167 2.128 1.00 30.00 ATOM 1 H SER S 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA SER S 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 SER S 1 0.172 0.892 1.964 1.00 30.00 ATOM 1 HB3 SER S 1 1.634 0.061 1.418 1.00 30.00 ATOM 1 HG SER S 1 0.498 -1.142 3.059 1.00 30.00 ATOM 1 N THR T 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA THR T 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C THR T 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O THR T 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB THR T 1 0.565 -0.015 1.433 1.00 30.00 ATOM 1 OG1 THR T 1 0.152 -1.214 2.100 1.00 30.00 ATOM 1 CG2 THR T 1 0.058 1.185 2.218 1.00 30.00 ATOM 1 H THR T 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA THR T 1 0.318 0.927 -0.499 1.00 30.00 ATOM 1 HB THR T 1 1.663 0.026 1.376 1.00 30.00 ATOM 1 HG1 THR T 1 0.521 -1.224 3.030 1.00 30.00 ATOM 1 HG21 THR T 1 0.471 1.158 3.237 1.00 30.00 ATOM 1 HG22 THR T 1 0.377 2.112 1.718 1.00 30.00 ATOM 1 HG23 THR T 1 -1.039 1.154 2.267 1.00 30.00 ATOM 1 N TRP W 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA TRP W 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C TRP W 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O TRP W 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB TRP W 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG TRP W 1 0.203 1.244 2.198 1.00 30.00 ATOM 1 CD1 TRP W 1 -0.857 1.429 3.038 1.00 30.00 ATOM 1 CD2 TRP W 1 0.936 2.476 2.193 1.00 30.00 ATOM 1 NE1 TRP W 1 -0.834 2.701 3.557 1.00 30.00 ATOM 1 CE2 TRP W 1 0.261 3.363 3.053 1.00 30.00 ATOM 1 CE3 TRP W 1 2.095 2.910 1.545 1.00 30.00 ATOM 1 CZ2 TRP W 1 0.705 4.664 3.283 1.00 30.00 ATOM 1 CZ3 TRP W 1 2.536 4.200 1.772 1.00 30.00 ATOM 1 CH2 TRP W 1 1.845 5.067 2.636 1.00 30.00 ATOM 1 H TRP W 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA TRP W 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 TRP W 1 0.128 -0.870 1.968 1.00 30.00 ATOM 1 HB3 TRP W 1 1.629 -0.122 1.406 1.00 30.00 ATOM 1 HD1 TRP W 1 -1.620 0.671 3.265 1.00 30.00 ATOM 1 HE1 TRP W 1 -1.501 3.082 4.197 1.00 30.00 ATOM 1 HE3 TRP W 1 2.645 2.239 0.867 1.00 30.00 ATOM 1 HZ2 TRP W 1 0.164 5.342 3.958 1.00 30.00 ATOM 1 HZ3 TRP W 1 3.446 4.555 1.268 1.00 30.00 ATOM 1 HH2 TRP W 1 2.225 6.086 2.794 1.00 30.00 ATOM 1 N TYR Y 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA TYR Y 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C TYR Y 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O TYR Y 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB TYR Y 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG TYR Y 1 0.203 1.253 2.212 1.00 30.00 ATOM 1 CD1 TYR Y 1 1.005 2.383 2.118 1.00 30.00 ATOM 1 CD2 TYR Y 1 -0.913 1.302 3.038 1.00 30.00 ATOM 1 CE1 TYR Y 1 0.709 3.531 2.825 1.00 30.00 ATOM 1 CE2 TYR Y 1 -1.225 2.441 3.752 1.00 30.00 ATOM 1 CZ TYR Y 1 -0.413 3.555 3.645 1.00 30.00 ATOM 1 OH TYR Y 1 -0.716 4.696 4.353 1.00 30.00 ATOM 1 H TYR Y 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA TYR Y 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 HB2 TYR Y 1 0.127 -0.871 1.967 1.00 30.00 ATOM 1 HB3 TYR Y 1 1.629 -0.124 1.405 1.00 30.00 ATOM 1 HD1 TYR Y 1 1.892 2.363 1.469 1.00 30.00 ATOM 1 HD2 TYR Y 1 -1.559 0.416 3.124 1.00 30.00 ATOM 1 HE1 TYR Y 1 1.355 4.418 2.741 1.00 30.00 ATOM 1 HE2 TYR Y 1 -2.112 2.462 4.403 1.00 30.00 ATOM 1 HH TYR Y 1 -1.547 4.545 4.887 1.00 30.00 ATOM 1 N VAL V 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA VAL V 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C VAL V 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O VAL V 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB VAL V 1 0.565 -0.015 1.433 1.00 30.00 ATOM 1 CG1 VAL V 1 2.081 -0.139 1.407 1.00 30.00 ATOM 1 CG2 VAL V 1 0.200 1.269 2.162 1.00 30.00 ATOM 1 H VAL V 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA VAL V 1 0.318 0.927 -0.499 1.00 30.00 ATOM 1 HB VAL V 1 0.128 -0.879 1.956 1.00 30.00 ATOM 1 HG11 VAL V 1 2.466 -0.148 2.437 1.00 30.00 ATOM 1 HG12 VAL V 1 2.363 -1.075 0.902 1.00 30.00 ATOM 1 HG13 VAL V 1 2.509 0.715 0.863 1.00 30.00 ATOM 1 HG21 VAL V 1 0.611 1.241 3.183 1.00 30.00 ATOM 1 HG22 VAL V 1 0.619 2.130 1.621 1.00 30.00 ATOM 1 HG23 VAL V 1 -0.895 1.366 2.210 1.00 30.00 king-2.21.120420/chiropraxis/resource/chiropraxis/sc/singleres-v23.pdb0000644000000000000000000006621711531212712024036 0ustar rootrootATOM 1 N ALA A 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA ALA A 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C ALA A 1 0.550 -1.193 -0.774 1.00 30.00 ATOM 1 O ALA A 1 0.022 -2.301 -0.683 1.00 30.00 ATOM 1 CB ALA A 1 0.530 0.001 1.426 1.00 30.00 ATOM 1 H ALA A 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA ALA A 1 0.341 0.916 -0.504 1.00 30.00 ATOM 1 1HB ALA A 1 1.630 0.001 1.409 1.00 30.00 ATOM 1 2HB ALA A 1 0.172 0.899 1.950 1.00 30.00 ATOM 1 3HB ALA A 1 0.172 -0.897 1.951 1.00 30.00 ATOM 1 N ARG R 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA ARG R 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C ARG R 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O ARG R 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB ARG R 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG ARG R 1 0.246 1.277 2.204 1.00 30.00 ATOM 1 CD ARG R 1 0.805 1.209 3.616 1.00 30.00 ATOM 1 NE ARG R 1 0.536 2.429 4.372 1.00 30.00 ATOM 1 CZ ARG R 1 0.916 2.627 5.629 1.00 30.00 ATOM 1 NH1 ARG R 1 1.586 1.684 6.277 1.00 30.00 ATOM 1 NH2 ARG R 1 0.625 3.770 6.236 1.00 30.00 ATOM 1 H ARG R 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA ARG R 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB ARG R 1 0.100 -0.851 1.976 1.00 30.00 ATOM 1 2HB ARG R 1 1.624 -0.160 1.406 1.00 30.00 ATOM 1 1HG ARG R 1 0.684 2.136 1.675 1.00 30.00 ATOM 1 2HG ARG R 1 -0.840 1.445 2.245 1.00 30.00 ATOM 1 1HD ARG R 1 0.367 0.347 4.140 1.00 30.00 ATOM 1 2HD ARG R 1 1.891 1.038 3.570 1.00 30.00 ATOM 1 HE ARG R 1 0.032 3.161 3.914 1.00 30.00 ATOM 1 1HH1 ARG R 1 1.805 0.823 5.818 1.00 30.00 ATOM 1 2HH1 ARG R 1 1.872 1.833 7.223 1.00 30.00 ATOM 1 1HH2 ARG R 1 0.120 4.480 5.747 1.00 30.00 ATOM 1 2HH2 ARG R 1 0.911 3.920 7.182 1.00 30.00 ATOM 1 N ASN N 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA ASN N 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C ASN N 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O ASN N 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB ASN N 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG ASN N 1 0.186 1.268 2.186 1.00 30.00 ATOM 1 OD1 ASN N 1 -0.124 2.295 1.582 1.00 30.00 ATOM 1 ND2 ASN N 1 0.233 1.199 3.511 1.00 30.00 ATOM 1 H ASN N 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA ASN N 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB ASN N 1 0.128 -0.867 1.973 1.00 30.00 ATOM 1 2HB ASN N 1 1.629 -0.119 1.411 1.00 30.00 ATOM 1 1HD2 ASN N 1 0.011 2.004 4.062 1.00 30.00 ATOM 1 2HD2 ASN N 1 0.491 0.343 3.959 1.00 30.00 ATOM 1 N ASP D 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA ASP D 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C ASP D 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O ASP D 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB ASP D 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG ASP D 1 0.292 1.315 2.147 1.00 30.00 ATOM 1 OD1 ASP D 1 -0.028 2.311 1.464 1.00 30.00 ATOM 1 OD2 ASP D 1 0.418 1.349 3.389 1.00 30.00 ATOM 1 H ASP D 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA ASP D 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB ASP D 1 0.060 -0.813 1.999 1.00 30.00 ATOM 1 2HB ASP D 1 1.616 -0.209 1.416 1.00 30.00 ATOM 1 N CYS C 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA CYS C 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C CYS C 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O CYS C 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB CYS C 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 SG CYS C 1 0.146 1.492 2.376 1.00 30.00 ATOM 1 H CYS C 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA CYS C 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB CYS C 1 0.127 -0.872 1.964 1.00 30.00 ATOM 1 2HB CYS C 1 1.629 -0.125 1.402 1.00 30.00 ATOM 1 HG CYS C 1 0.641 1.390 3.573 1.00 30.00 ATOM 1 N GLN Q 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA GLN Q 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C GLN Q 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O GLN Q 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB GLN Q 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG GLN Q 1 0.246 1.278 2.204 1.00 30.00 ATOM 1 CD GLN Q 1 0.790 1.240 3.618 1.00 30.00 ATOM 1 OE1 GLN Q 1 0.972 0.168 4.196 1.00 30.00 ATOM 1 NE2 GLN Q 1 1.054 2.414 4.180 1.00 30.00 ATOM 1 H GLN Q 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA GLN Q 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB GLN Q 1 0.099 -0.850 1.977 1.00 30.00 ATOM 1 2HB GLN Q 1 1.624 -0.161 1.406 1.00 30.00 ATOM 1 1HG GLN Q 1 0.685 2.132 1.668 1.00 30.00 ATOM 1 2HG GLN Q 1 -0.841 1.442 2.238 1.00 30.00 ATOM 1 1HE2 GLN Q 1 1.416 2.453 5.111 1.00 30.00 ATOM 1 2HE2 GLN Q 1 0.890 3.259 3.672 1.00 30.00 ATOM 1 N GLU E 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA GLU E 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C GLU E 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O GLU E 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB GLU E 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG GLU E 1 0.246 1.278 2.204 1.00 30.00 ATOM 1 CD GLU E 1 0.790 1.240 3.618 1.00 30.00 ATOM 1 OE1 GLU E 1 1.224 0.155 4.060 1.00 30.00 ATOM 1 OE2 GLU E 1 0.784 2.296 4.285 1.00 30.00 ATOM 1 H GLU E 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA GLU E 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB GLU E 1 0.099 -0.850 1.977 1.00 30.00 ATOM 1 2HB GLU E 1 1.624 -0.161 1.406 1.00 30.00 ATOM 1 1HG GLU E 1 0.685 2.132 1.668 1.00 30.00 ATOM 1 2HG GLU E 1 -0.841 1.442 2.238 1.00 30.00 ATOM 1 N GLY G 1 -1.451 0.000 0.000 1.00 30.00 ATOM 1 CA GLY G 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C GLY G 1 0.580 -1.175 -0.762 1.00 30.00 ATOM 1 O GLY G 1 0.073 -2.293 -0.678 1.00 30.00 ATOM 1 H GLY G 1 -1.872 -0.808 0.412 1.00 30.00 ATOM 1 1HA GLY G 1 0.363 0.938 -0.446 1.00 30.00 ATOM 1 2HA GLY G 1 0.364 -0.025 1.038 1.00 30.00 ATOM 1 N HIS H 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA HIS H 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C HIS H 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O HIS H 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB HIS H 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG HIS H 1 0.205 1.241 2.202 1.00 30.00 ATOM 1 ND1 HIS H 1 0.775 2.464 1.923 1.00 30.00 ATOM 1 CD2 HIS H 1 -0.637 1.449 3.241 1.00 30.00 ATOM 1 CE1 HIS H 1 0.298 3.370 2.757 1.00 30.00 ATOM 1 NE2 HIS H 1 -0.560 2.780 3.566 1.00 30.00 ATOM 1 H HIS H 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA HIS H 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB HIS H 1 0.128 -0.871 1.967 1.00 30.00 ATOM 1 2HB HIS H 1 1.629 -0.123 1.405 1.00 30.00 ATOM 1 HD1 HIS H 1 1.445 2.638 1.200 1.00 30.00 ATOM 1 HD2 HIS H 1 -1.265 0.692 3.733 1.00 30.00 ATOM 1 HE1 HIS H 1 0.571 4.436 2.775 1.00 30.00 ATOM 1 HE2 HIS H 1 -1.072 3.231 4.297 1.00 30.00 ATOM 1 N ILE I 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA ILE I 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C ILE I 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O ILE I 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB ILE I 1 0.565 -0.015 1.433 1.00 30.00 ATOM 1 CG1 ILE I 1 0.196 1.277 2.165 1.00 30.00 ATOM 1 CD1 ILE I 1 0.502 1.248 3.646 1.00 30.00 ATOM 1 CG2 ILE I 1 2.081 -0.139 1.407 1.00 30.00 ATOM 1 H ILE I 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA ILE I 1 0.318 0.927 -0.499 1.00 30.00 ATOM 1 HB ILE I 1 0.129 -0.878 1.957 1.00 30.00 ATOM 1 1HG1 ILE I 1 0.739 2.116 1.705 1.00 30.00 ATOM 1 2HG1 ILE I 1 -0.877 1.473 2.025 1.00 30.00 ATOM 1 1HD1 ILE I 1 0.211 2.208 4.100 1.00 30.00 ATOM 1 2HD1 ILE I 1 -0.061 0.433 4.122 1.00 30.00 ATOM 1 3HD1 ILE I 1 1.580 1.086 3.795 1.00 30.00 ATOM 1 1HG2 ILE I 1 2.466 -0.148 2.437 1.00 30.00 ATOM 1 2HG2 ILE I 1 2.363 -1.075 0.902 1.00 30.00 ATOM 1 3HG2 ILE I 1 2.509 0.715 0.863 1.00 30.00 ATOM 1 N LEU L 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA LEU L 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C LEU L 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O LEU L 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB LEU L 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG LEU L 1 0.230 1.243 2.271 1.00 30.00 ATOM 1 CD1 LEU L 1 0.711 1.057 3.702 1.00 30.00 ATOM 1 CD2 LEU L 1 0.923 2.466 1.692 1.00 30.00 ATOM 1 H LEU L 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA LEU L 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB LEU L 1 0.126 -0.877 1.955 1.00 30.00 ATOM 1 2HB LEU L 1 1.627 -0.130 1.394 1.00 30.00 ATOM 1 HG LEU L 1 -0.860 1.390 2.258 1.00 30.00 ATOM 1 1HD1 LEU L 1 0.481 1.961 4.286 1.00 30.00 ATOM 1 2HD1 LEU L 1 0.201 0.192 4.151 1.00 30.00 ATOM 1 3HD1 LEU L 1 1.797 0.885 3.705 1.00 30.00 ATOM 1 1HD2 LEU L 1 0.691 3.346 2.308 1.00 30.00 ATOM 1 2HD2 LEU L 1 2.010 2.303 1.683 1.00 30.00 ATOM 1 3HD2 LEU L 1 0.570 2.635 0.663 1.00 30.00 ATOM 1 N LYS K 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA LYS K 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C LYS K 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O LYS K 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB LYS K 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG LYS K 1 0.246 1.277 2.204 1.00 30.00 ATOM 1 CD LYS K 1 0.805 1.209 3.616 1.00 30.00 ATOM 1 CE LYS K 1 0.516 2.486 4.387 1.00 30.00 ATOM 1 NZ LYS K 1 1.058 2.433 5.773 1.00 30.00 ATOM 1 H LYS K 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA LYS K 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB LYS K 1 0.100 -0.851 1.976 1.00 30.00 ATOM 1 2HB LYS K 1 1.624 -0.160 1.406 1.00 30.00 ATOM 1 1HG LYS K 1 0.684 2.136 1.675 1.00 30.00 ATOM 1 2HG LYS K 1 -0.840 1.445 2.245 1.00 30.00 ATOM 1 1HD LYS K 1 0.368 0.350 4.144 1.00 30.00 ATOM 1 2HD LYS K 1 1.892 1.041 3.574 1.00 30.00 ATOM 1 1HE LYS K 1 0.952 3.343 3.855 1.00 30.00 ATOM 1 2HE LYS K 1 -0.572 2.652 4.426 1.00 30.00 ATOM 1 1HZ LYS K 1 0.848 3.288 6.247 1.00 30.00 ATOM 1 2HZ LYS K 1 0.642 1.668 6.265 1.00 30.00 ATOM 1 3HZ LYS K 1 2.049 2.306 5.738 1.00 30.00 ATOM 1 N MET M 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA MET M 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C MET M 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O MET M 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB MET M 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG MET M 1 0.205 1.258 2.219 1.00 30.00 ATOM 1 SD MET M 1 0.993 2.730 1.544 1.00 30.00 ATOM 1 CE MET M 1 2.708 2.414 1.953 1.00 30.00 ATOM 1 H MET M 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA MET M 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB MET M 1 0.127 -0.871 1.966 1.00 30.00 ATOM 1 2HB MET M 1 1.629 -0.125 1.404 1.00 30.00 ATOM 1 1HG MET M 1 -0.886 1.402 2.228 1.00 30.00 ATOM 1 2HG MET M 1 0.521 1.125 3.265 1.00 30.00 ATOM 1 1HE MET M 1 3.331 3.247 1.596 1.00 30.00 ATOM 1 2HE MET M 1 2.814 2.320 3.044 1.00 30.00 ATOM 1 3HE MET M 1 3.035 1.481 1.471 1.00 30.00 ATOM 1 N MSE M 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA MSE M 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C MSE M 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O MSE M 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB MSE M 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG MSE M 1 0.205 1.258 2.219 1.00 30.00 HETATM 1 SE MSE M 1 1.047 2.831 1.498 1.00 30.00 ATOM 1 CE MSE M 1 2.865 2.414 1.975 1.00 30.00 ATOM 1 H MSE M 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA MSE M 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB MSE M 1 0.127 -0.871 1.966 1.00 30.00 ATOM 1 2HB MSE M 1 1.629 -0.125 1.404 1.00 30.00 ATOM 1 1HG MSE M 1 -0.886 1.402 2.228 1.00 30.00 ATOM 1 2HG MSE M 1 0.521 1.125 3.265 1.00 30.00 ATOM 1 1HE MSE M 1 3.529 3.222 1.637 1.00 30.00 ATOM 1 2HE MSE M 1 2.943 2.309 3.067 1.00 30.00 ATOM 1 3HE MSE M 1 3.163 1.470 1.495 1.00 30.00 ATOM 1 N PHE F 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA PHE F 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C PHE F 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O PHE F 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB PHE F 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG PHE F 1 0.205 1.245 2.204 1.00 30.00 ATOM 1 CD1 PHE F 1 1.005 2.370 2.106 1.00 30.00 ATOM 1 CD2 PHE F 1 -0.908 1.294 3.025 1.00 30.00 ATOM 1 CE1 PHE F 1 0.702 3.517 2.816 1.00 30.00 ATOM 1 CE2 PHE F 1 -1.215 2.439 3.736 1.00 30.00 ATOM 1 CZ PHE F 1 -0.409 3.551 3.631 1.00 30.00 ATOM 1 H PHE F 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA PHE F 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB PHE F 1 0.127 -0.871 1.967 1.00 30.00 ATOM 1 2HB PHE F 1 1.629 -0.124 1.405 1.00 30.00 ATOM 1 HD1 PHE F 1 1.894 2.352 1.458 1.00 30.00 ATOM 1 HD2 PHE F 1 -1.556 0.410 3.113 1.00 30.00 ATOM 1 HE1 PHE F 1 1.347 4.405 2.729 1.00 30.00 ATOM 1 HE2 PHE F 1 -2.102 2.462 4.386 1.00 30.00 ATOM 1 HZ PHE F 1 -0.653 4.464 4.195 1.00 30.00 ATOM 1 N PRO P 1 -1.466 0.000 0.000 1.00 30.00 ATOM 1 CA PRO P 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C PRO P 1 0.566 -1.218 -0.723 1.00 30.00 ATOM 1 O PRO P 1 -0.181 -2.059 -1.222 1.00 30.00 ATOM 1 CB PRO P 1 0.344 -0.001 1.491 1.00 30.00 ATOM 1 CG PRO P 1 -0.847 -0.666 2.144 1.00 30.00 ATOM 1 CD PRO P 1 -2.010 -0.194 1.291 1.00 30.00 REMARK ATOM 1 NE PRO P 1 -1.384 0.013 -0.026 1.00 0.00 ATOM 1 HA PRO P 1 0.434 0.857 -0.537 1.00 30.00 ATOM 1 1HB PRO P 1 1.273 -0.555 1.690 1.00 30.00 ATOM 1 2HB PRO P 1 0.492 1.021 1.870 1.00 30.00 ATOM 1 1HG PRO P 1 -0.755 -1.762 2.138 1.00 30.00 ATOM 1 2HG PRO P 1 -0.960 -0.359 3.194 1.00 30.00 ATOM 1 1HD PRO P 1 -2.815 -0.942 1.247 1.00 30.00 ATOM 1 2HD PRO P 1 -2.454 0.734 1.682 1.00 30.00 ATOM 1 N SER S 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA SER S 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C SER S 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O SER S 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB SER S 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 OG SER S 1 0.133 -1.167 2.128 1.00 30.00 ATOM 1 H SER S 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA SER S 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB SER S 1 0.172 0.892 1.964 1.00 30.00 ATOM 1 2HB SER S 1 1.634 0.061 1.418 1.00 30.00 ATOM 1 HG SER S 1 0.498 -1.142 3.059 1.00 30.00 ATOM 1 N THR T 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA THR T 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C THR T 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O THR T 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB THR T 1 0.565 -0.015 1.433 1.00 30.00 ATOM 1 OG1 THR T 1 0.152 -1.214 2.100 1.00 30.00 ATOM 1 CG2 THR T 1 0.058 1.185 2.218 1.00 30.00 ATOM 1 H THR T 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA THR T 1 0.318 0.927 -0.499 1.00 30.00 ATOM 1 HB THR T 1 1.663 0.026 1.376 1.00 30.00 ATOM 1 HG1 THR T 1 0.521 -1.224 3.030 1.00 30.00 ATOM 1 1HG2 THR T 1 0.471 1.158 3.237 1.00 30.00 ATOM 1 2HG2 THR T 1 0.377 2.112 1.718 1.00 30.00 ATOM 1 3HG2 THR T 1 -1.039 1.154 2.267 1.00 30.00 ATOM 1 N TRP W 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA TRP W 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C TRP W 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O TRP W 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB TRP W 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG TRP W 1 0.203 1.244 2.198 1.00 30.00 ATOM 1 CD1 TRP W 1 -0.857 1.429 3.038 1.00 30.00 ATOM 1 CD2 TRP W 1 0.936 2.476 2.193 1.00 30.00 ATOM 1 NE1 TRP W 1 -0.834 2.701 3.557 1.00 30.00 ATOM 1 CE2 TRP W 1 0.261 3.363 3.053 1.00 30.00 ATOM 1 CE3 TRP W 1 2.095 2.910 1.545 1.00 30.00 ATOM 1 CZ2 TRP W 1 0.705 4.664 3.283 1.00 30.00 ATOM 1 CZ3 TRP W 1 2.536 4.200 1.772 1.00 30.00 ATOM 1 CH2 TRP W 1 1.845 5.067 2.636 1.00 30.00 ATOM 1 H TRP W 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA TRP W 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB TRP W 1 0.128 -0.870 1.968 1.00 30.00 ATOM 1 2HB TRP W 1 1.629 -0.122 1.406 1.00 30.00 ATOM 1 HD1 TRP W 1 -1.620 0.671 3.265 1.00 30.00 ATOM 1 HE1 TRP W 1 -1.501 3.082 4.197 1.00 30.00 ATOM 1 HE3 TRP W 1 2.645 2.239 0.867 1.00 30.00 ATOM 1 HZ2 TRP W 1 0.164 5.342 3.958 1.00 30.00 ATOM 1 HZ3 TRP W 1 3.446 4.555 1.268 1.00 30.00 ATOM 1 HH2 TRP W 1 2.225 6.086 2.794 1.00 30.00 ATOM 1 N TYR Y 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA TYR Y 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C TYR Y 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O TYR Y 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB TYR Y 1 0.536 -0.000 1.433 1.00 30.00 ATOM 1 CG TYR Y 1 0.203 1.253 2.212 1.00 30.00 ATOM 1 CD1 TYR Y 1 1.005 2.383 2.118 1.00 30.00 ATOM 1 CD2 TYR Y 1 -0.913 1.302 3.038 1.00 30.00 ATOM 1 CE1 TYR Y 1 0.709 3.531 2.825 1.00 30.00 ATOM 1 CE2 TYR Y 1 -1.225 2.441 3.752 1.00 30.00 ATOM 1 CZ TYR Y 1 -0.413 3.555 3.645 1.00 30.00 ATOM 1 OH TYR Y 1 -0.716 4.696 4.353 1.00 30.00 ATOM 1 H TYR Y 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA TYR Y 1 0.336 0.917 -0.507 1.00 30.00 ATOM 1 1HB TYR Y 1 0.127 -0.871 1.967 1.00 30.00 ATOM 1 2HB TYR Y 1 1.629 -0.124 1.405 1.00 30.00 ATOM 1 HD1 TYR Y 1 1.892 2.363 1.469 1.00 30.00 ATOM 1 HD2 TYR Y 1 -1.559 0.416 3.124 1.00 30.00 ATOM 1 HE1 TYR Y 1 1.355 4.418 2.741 1.00 30.00 ATOM 1 HE2 TYR Y 1 -2.112 2.462 4.403 1.00 30.00 ATOM 1 HH TYR Y 1 -1.547 4.545 4.887 1.00 30.00 ATOM 1 N VAL V 1 -1.458 0.000 0.000 1.00 30.00 ATOM 1 CA VAL V 1 0.000 0.000 0.000 1.00 30.00 ATOM 1 C VAL V 1 0.551 -1.198 -0.766 1.00 30.00 ATOM 1 O VAL V 1 0.024 -2.306 -0.667 1.00 30.00 ATOM 1 CB VAL V 1 0.565 -0.015 1.433 1.00 30.00 ATOM 1 CG1 VAL V 1 2.081 -0.139 1.407 1.00 30.00 ATOM 1 CG2 VAL V 1 0.200 1.269 2.162 1.00 30.00 ATOM 1 H VAL V 1 -1.871 -0.808 0.419 1.00 30.00 ATOM 1 HA VAL V 1 0.318 0.927 -0.499 1.00 30.00 ATOM 1 HB VAL V 1 0.128 -0.879 1.956 1.00 30.00 ATOM 1 1HG1 VAL V 1 2.466 -0.148 2.437 1.00 30.00 ATOM 1 2HG1 VAL V 1 2.363 -1.075 0.902 1.00 30.00 ATOM 1 3HG1 VAL V 1 2.509 0.715 0.863 1.00 30.00 ATOM 1 1HG2 VAL V 1 0.611 1.241 3.183 1.00 30.00 ATOM 1 2HG2 VAL V 1 0.619 2.130 1.621 1.00 30.00 ATOM 1 3HG2 VAL V 1 -0.895 1.366 2.210 1.00 30.00 king-2.21.120420/chiropraxis/resource/chiropraxis/sc/disulf.pdb0000644000000000000000000000274411531212712022714 0ustar rootrootREMARK How did I generate this?!... (DAK 100112) ATOM 1 N CYS A 1 -1.448 0.167 -0.185 1.00 30.00 ATOM 1 CA CYS A 1 0.013 0.222 -0.140 1.00 30.00 ATOM 1 C CYS A 1 0.650 -0.927 -0.916 1.00 30.00 ATOM 1 O CYS A 1 0.207 -2.072 -0.823 1.00 30.00 ATOM 1 CB CYS A 1 0.476 0.172 1.319 1.00 30.00 ATOM 1 SG CYS A 1 -0.024 1.616 2.295 1.00 30.00 ATOM 1 H CYS A 1 -1.952 -0.584 0.239 1.00 30.00 ATOM 1 HA CYS A 1 0.331 1.143 -0.652 1.00 30.00 ATOM 1 HB2 CYS A 1 0.073 -0.737 1.789 1.00 30.00 ATOM 1 HB3 CYS A 1 1.573 0.085 1.342 1.00 30.00 ATOM 1 N CYS A 2 2.259 3.810 4.993 1.00 30.00 ATOM 1 CA CYS A 2 2.433 2.429 4.559 1.00 30.00 ATOM 1 CB CYS A 2 2.799 2.402 3.072 1.00 30.00 ATOM 1 SG CYS A 2 1.464 2.960 1.980 1.00 30.00 ATOM 1 H CYS A 2 3.047 4.395 4.800 1.00 30.00 ATOM 1 HA CYS A 2 1.455 1.974 4.778 1.00 30.00 ATOM 1 HB2 CYS A 2 3.683 3.037 2.912 1.00 30.00 ATOM 1 HB3 CYS A 2 3.085 1.377 2.794 1.00 30.00 king-2.21.120420/chiropraxis/resource/chiropraxis/sc/angles.props0000644000000000000000000002363711744305672023317 0ustar rootroot# Describes the angles used in defining rotamers, # as well as angles that describe H orientations. # Also provides a list of rotamers from the Richardsons' # Penultimate Rotamer Library (Proteins: Str Func Gen, 2000) # Modal values for the rotamer peak (rather than common- # atom values) were used whenever listed. aminoacids = "gly,ala,val,leu,ile,pro,phe,tyr,trp,ser,thr,cys,met,mse,lys,his,arg,asp,asn,gln,glu" gly.angles = "" gly.methylangles = "" gly.chis = 0 gly.rotamers = "" gly.frequencies = "" ala.angles = "" ala.methylangles = "me" ala.chis = 0 ala.me = " N , CA , CB ,1HB ; HB1" ala.rotamers = "" ala.frequencies = "" val.angles = "chi1" val.methylangles = "me1,me2" val.chis = 1 val.chi1 = " N , CA , CB , CG1" val.me1 = " CA , CB , CG1,1HG1;HG11" val.me2 = " CA , CB , CG2,1HG2;HG21" val.rotamers = "p,t,m" val.frequencies = "6%,73%,20%" val.p = 63 val.t = 175 val.m = -64 leu.angles = "chi1,chi2" leu.methylangles = "me1,me2" leu.chis = 2 leu.chi1 = " N , CA , CB , CG " leu.chi2 = " CA , CB , CG , CD1" leu.me1 = " CB , CG , CD1,1HD1;HD11" leu.me2 = " CB , CG , CD2,1HD2;HD21" leu.rotamers = "pp,tp,tt,mp,mt" leu.frequencies = "1%,29%,2%,2%,59%" leu.pp = 62 80 leu.tp = 177 63 leu.tt = -172 147 leu.mp = -85 66 leu.mt = -65 174 ile.angles = "chi1,chi2" ile.methylangles = "me1,me2" ile.chis = 2 ile.chi1 = " N , CA , CB , CG1" ile.chi2 = " CA , CB , CG1, CD1" ile.me1 = " CA , CB , CG2,1HG2;HG21" ile.me2 = " CB , CG1, CD1,1HD1;HD11" ile.rotamers = "pp,pt,tp,tt,mp,mt,mm" ile.frequencies = "1%,13%,2%,8%,1%,60%,15%" ile.pp = 62 100 ile.pt = 61 171 ile.tp = -169 66 ile.tt = -174 167 ile.mp = -65 100 ile.mt = -66 169 ile.mm = -57 -59 pro.angles = "chi1,pchi2,pchi3" pro.methylangles = "" pro.chis = 3 pro.chi1 = " N , CA , CB , CG " pro.pchi2 = " CA , CB , CG , CD " pro.pchi3 = " CB , CG , CD ,1HD ; HD2" # Should chi3 perhaps be CB-CG-CD-N?... DAK 120224 pro.rotamers = "endo,exo" pro.frequencies = "44%,43%" pro.endo = 28 -36 149 pro.exo = -28 39 86 phe.angles = "chi1,chi2" phe.methylangles = "" phe.chis = 2 phe.chi1 = " N , CA , CB , CG " phe.chi2 = " CA , CB , CG , CD1" phe.rotamers = "p90,t80,m-85,m-30,Sm30" phe.frequencies = "13%,33%,44%,9%,*" phe.p90 = 59 88 phe.t80 = 177 80 phe.m-85 = -64 -83 phe.m-30 = -64 -19 phe.Sm30 = -85 30 tyr.angles = "chi1,chi2,oh" tyr.methylangles = "" tyr.chis = 2 tyr.chi1 = " N , CA , CB , CG " tyr.chi2 = " CA , CB , CG , CD1" tyr.oh = " CE1, CZ , OH , HH " tyr.rotamers = "p90,t80,m-85,m-30,Sm30" tyr.frequencies = "13%,34%,43%,9%,*" tyr.p90 = 63 89 tyr.t80 = 176 77 tyr.m-85 = -65 -87 tyr.m-30 = -64 -42 tyr.Sm30 = -85 30 trp.angles = "chi1,chi2" trp.methylangles = "" trp.chis = 2 trp.chi1 = " N , CA , CB , CG " trp.chi2 = " CA , CB , CG , CD1" trp.rotamers = "p-90,p90,t-105,t90,m-90,m0,m95" trp.frequencies = "11%,6%,16%,18%,5%,8%,32%" trp.p-90 = 58 -87 trp.p90 = 60 92 trp.t-105 = 178 -105 trp.t90 = -178 88 trp.m-90 = -70 -87 trp.m0 = -66 -4 trp.m95 = -69 95 ser.angles = "chi1,oh" ser.methylangles = "" ser.chis = 1 ser.chi1 = " N , CA , CB , OG " ser.oh = " CA , CB , OG , HG " ser.rotamers = "p,t,m" ser.frequencies = "48%,22%,29%" ser.p = 64 ser.t = 178 ser.m = -65 thr.angles = "chi1,oh" thr.methylangles = "me" thr.chis = 1 thr.chi1 = " N , CA , CB , OG1" thr.oh = " CA , CB , OG1, HG1" thr.me = " CA , CB , CG2,1HG2;HG21" thr.rotamers = "p,t,m" thr.frequencies = "49%,7%,43%" thr.p = 59 thr.t = -171 thr.m = -61 cys.angles = "chi1,sh" cys.methylangles = "" cys.chis = 1 cys.chi1 = " N , CA , CB , SG " cys.sh = " CA , CB , SG , HG " cys.rotamers = "p,t,m" cys.frequencies = "23%,26%,50%" cys.p = 55 cys.t = -177 cys.m = -65 met.angles = "chi1,chi2,chi3" met.methylangles = "me" met.chis = 3 met.chi1 = " N , CA , CB , CG " met.chi2 = " CA , CB , CG , SD " met.chi3 = " CB , CG , SD , CE " met.me = " CG , SD , CE ,1HE ; HE1" met.rotamers = "ptp,ptm,tpp,tpt,ttp,ttt,ttm,mtp,mtt,mtm,mmp,mmt,mmm" met.frequencies = "2%,3%,5%,2%,5%,3%,7%,17%,8%,11%,3%,2%,19%" met.ptp = 68 -167 88 met.ptm = 67 174 -78 met.tpp = -177 66 75 met.tpt = 179 67 -179 met.ttp = 176 178 73 met.ttt = 180 171 174 met.ttm = -177 176 -78 met.mtp = -68 177 72 met.mtt = -67 177 -178 met.mtm = -67 -177 -76 met.mmp = -64 -63 103 met.mmt = -63 -64 180 met.mmm = -66 -60 -67 mse.angles = "chi1,chi2,chi3" mse.methylangles = "me" mse.chis = 3 mse.chi1 = " N , CA , CB , CG " mse.chi2 = " CA , CB , CG ,SE " mse.chi3 = " CB , CG ,SE , CE " mse.me = " CG ,SE , CE ,1HE ; HE1" mse.rotamers = "ptp,ptm,tpp,tpt,ttp,ttt,ttm,mtp,mtt,mtm,mmp,mmt,mmm" mse.frequencies = "2%,3%,5%,2%,5%,3%,7%,17%,8%,11%,3%,2%,19%" mse.ptp = 68 -167 88 mse.ptm = 67 174 -78 mse.tpp = -177 66 75 mse.tpt = 179 67 -179 mse.ttp = 176 178 73 mse.ttt = 180 171 174 mse.ttm = -177 176 -78 mse.mtp = -68 177 72 mse.mtt = -67 177 -178 mse.mtm = -67 -177 -76 mse.mmp = -64 -63 103 mse.mmt = -63 -64 180 mse.mmm = -66 -60 -67 lys.angles = "chi1,chi2,chi3,chi4,nh3" lys.methylangles = "" lys.chis = 4 lys.chi1 = " N , CA , CB , CG " lys.chi2 = " CA , CB , CG , CD " lys.chi3 = " CB , CG , CD , CE " lys.chi4 = " CG , CD , CE , NZ " lys.nh3 = " CD , CE , NZ ,1HZ ; HZ1" lys.rotamers = "ptpt,pttp,pttt,pttm,ptmt,tptp,tptt,tptm,ttpp,ttpt,tttp,tttt,tttm,ttmt,ttmm,mptt,mtpp,mtpt,mttp,mttt,mttm,mtmt,mtmm,mmtp,mmtt,mmtm,mmmt" lys.frequencies = "1%,1%,2%,1%,<1%,1%,3%,1%,1%,2%,4%,13%,3%,2%,<1%,<1%,1%,3%,3%,20%,5%,3%,1%,1%,6%,1%,1%" lys.ptpt = 62 180 68 180 lys.pttp = 63 -170 -177 72 lys.pttt = 63 -178 178 -179 lys.pttm = 62 180 180 -65 lys.ptmt = 62 180 -68 180 lys.tptp = 179 59 163 60 lys.tptt = 179 62 173 171 lys.tptm = -177 68 180 -65 lys.ttpp = -177 180 68 65 lys.ttpt = 180 179 78 179 lys.tttp = -177 180 171 63 lys.tttt = -177 178 179 180 lys.tttm = -177 172 178 -72 lys.ttmt = -175 -174 -69 179 lys.ttmm = -177 180 -68 -65 lys.mptt = -90 68 180 180 lys.mtpp = -69 -179 70 67 lys.mtpt = -69 164 62 -179 lys.mttp = -67 -176 174 76 lys.mttt = -67 176 179 177 lys.mttm = -67 -179 -179 -63 lys.mtmt = -70 -170 -66 -175 lys.mtmm = -70 -179 -66 -64 lys.mmtp = -62 -68 180 65 lys.mmtt = -58 -61 -177 -179 lys.mmtm = -59 -69 -176 -70 lys.mmmt = -59 -58 -75 -174 his.angles = "chi1,chi2" his.methylangles = "" his.chis = 2 his.chi1 = " N , CA , CB , CG " his.chi2 = " CA , CB , CG , ND1" his.rotamers = "p-80,p80,t-160,t-80,t60,m-70,m170,m80" his.frequencies = "9%,4%,5%,11%,16%,29%,7%,13%" his.p-80 = 60 -75 his.p80 = 61 78 his.t-160 = -178 -163 his.t-80 = -173 -81 his.t60 = -178 62 his.m-70 = -60 -69 his.m170 = -63 165 his.m80 = -66 83 arg.angles = "chi1,chi2,chi3,chi4" arg.methylangles = "" arg.chis = 4 arg.chi1 = " N , CA , CB , CG " arg.chi2 = " CA , CB , CG , CD " arg.chi3 = " CB , CG , CD , NE " arg.chi4 = " CG , CD , NE , CZ " arg.rotamers = "ptp85,ptp180,ptt85,ptt180,ptt-85,ptm180,ptm-85,tpp85,tpp180,tpt85,tpt180,ttp85,ttp180,ttp-105,ttt85,ttt180,ttt-85,ttm105,ttm180,ttm-85,mtp85,mtp180,mtp-105,mtt85,mtt180,mtt-85,mtm105,mtm180,mtm-85,mmt85,mmt180,mmt-85,mmm180,mmm-85" arg.frequencies = "<1%,1%,2%,2%,2%,1%,1%,1%,1%,2%,2%,4%,3%,1%,2%,4%,3%,1%,1%,3%,2%,5%,1%,4%,9%,6%,2%,5%,6%,1%,2%,2%,1%,2%" arg.ptp85 = 62 180 65 85 arg.ptp180 = 71 171 65 -161 arg.ptt85 = 65 -178 -179 88 arg.ptt180 = 59 176 -178 -177 arg.ptt-85 = 66 -176 -178 -83 arg.ptm180 = 62 180 -65 175 arg.ptm-85 = 62 180 -65 -85 arg.tpp85 = -178 57 57 85 arg.tpp180 = -177 65 65 -175 arg.tpt85 = 177 64 180 86 arg.tpt180 = 179 60 178 163 arg.ttp85 = -179 177 65 83 arg.ttp180 = -178 -178 65 -162 arg.ttp-105 = -177 180 65 -105 arg.ttt85 = -175 176 179 83 arg.ttt180 = -179 177 -179 170 arg.ttt-85 = -179 179 180 -86 arg.ttm105 = -178 170 -66 107 arg.ttm180 = 180 -178 -67 176 arg.ttm-85 = -175 -178 -65 -84 arg.mtp85 = -69 177 64 84 arg.mtp180 = -65 176 64 -174 arg.mtp-105 = -62 179 67 -113 arg.mtt85 = -67 178 179 83 arg.mtt180 = -67 -178 -178 174 arg.mtt-85 = -66 -177 -179 -83 arg.mtm105 = -68 -179 -65 103 arg.mtm180 = -68 173 -64 180 arg.mtm-85 = -69 -167 -63 -86 arg.mmt85 = -62 -68 180 85 arg.mmt180 = -63 -66 -179 -168 arg.mmt-85 = -60 -72 -178 -92 arg.mmm180 = -64 -74 -67 172 arg.mmm-85 = -62 -64 -61 -82 asp.angles = "chi1,chi2" asp.methylangles = "" asp.chis = 2 asp.chi1 = " N , CA , CB , CG " asp.chi2 = " CA , CB , CG , OD1" asp.rotamers = "Sp-50,p-10,p30,St-30,t0,t70,m-20,Sm-60" asp.frequencies = "?,10%,9%,?,21%,6%,51%,?" asp.Sp-50 = 62 -50 asp.p-10 = 61 -4 asp.p30 = 65 9 asp.St-30 = -170 -30 asp.t0 = -176 1 asp.t70 = -179 65 asp.m-20 = -71 -15 asp.Sm-60 = -65 -60 asn.angles = "chi1,chi2" asn.methylangles = "" asn.chis = 2 asn.chi1 = " N , CA , CB , CG " asn.chi2 = " CA , CB , CG , OD1" asn.rotamers = "Sp-50,p-10,p30,St-80,t-20,t30,m-20,m-80,m120" asn.frequencies = "?,7%,9%,?,12%,15%,39%,8%,4%" asn.Sp-50 = 62 -50 asn.p-10 = 63 -13 asn.p30 = 64 34 asn.St-80 = -174 -80 asn.t-20 = -174 -20 asn.t30 = -168 31 asn.m-20 = -71 -23 asn.m-80 = -71 -76 asn.m120 = -64 132 gln.angles = "chi1,chi2,chi3" gln.methylangles = "" gln.chis = 3 gln.chi1 = " N , CA , CB , CG " gln.chi2 = " CA , CB , CG , CD " gln.chi3 = " CB , CG , CD , OE1" gln.rotamers = "Spt-60,pt20,Spt60,pm0,tp-100,tp60,Stt-60,tt0,Stt60,mp0,Smt-60,mt-30,Smt60,mm-40,mm100" gln.frequencies = "?,4%,?,2%,2%,9%,?,16%,?,3%,?,35%,?,15%,3%" gln.Spt-60 = 62 180 -60 gln.pt20 = 64 180 20 gln.Spt60 = 62 180 60 gln.pm0 = 70 -75 0 gln.tp-100 = -177 65 -100 gln.tp60 = -175 64 60 gln.Stt-60 = -177 180 -60 gln.tt0 = -174 173 -5 gln.Stt60 = -177 180 60 gln.mp0 = -65 85 0 gln.Smt-60 = -67 180 -60 gln.mt-30 = -67 177 -25 gln.Smt60 = -67 180 60 gln.mm-40 = -66 -60 -40 gln.mm100 = -65 -65 100 glu.angles = "chi1,chi2,chi3" glu.methylangles = "" glu.chis = 3 glu.chi1 = " N , CA , CB , CG " glu.chi2 = " CA , CB , CG , CD " glu.chi3 = " CB , CG , CD , OE1" glu.rotamers = "Spt-60,pt-20,Spt60,pm0,tp10,Stt-60,tt0,Stt60,tm-20,mp0,Smt-60,mt-10,Smt60,mm-40,Smm0" glu.frequencies = "?,5%,?,2%,6%,?,24%,?,1%,6%,?,33%,?,13%,?" glu.Spt-60 = 62 180 -60 glu.pt-20 = 63 -175 -18 glu.Spt60 = 62 180 60 glu.pm0 = 71 -79 5 glu.tp10 = -177 65 13 glu.Stt-60 = -177 180 60 glu.tt0 = -177 178 2 glu.Stt60 = -177 180 60 glu.tm-20 = -177 -80 -25 glu.mp0 = -65 85 -3 glu.Smt-60 = -67 180 -60 glu.mt-10 = -67 177 -10 glu.Smt60 = -67 180 60 glu.mm-40 = -65 -58 -40 glu.Smm0 = -65 -75 0 king-2.21.120420/chiropraxis/resource/chiropraxis/buildnum.props0000644000000000000000000000007111744310052023227 0ustar rootroot#Fri, 20 Apr 2012 18:34:50 -0400 buildnum=20120420.1834 king-2.21.120420/chiropraxis/resource/chiropraxis/dezymer/0000755000000000000000000000000011677361404022020 5ustar rootrootking-2.21.120420/chiropraxis/resource/chiropraxis/dezymer/SequenceTree.help0000644000000000000000000000204611531212710025244 0ustar rootrootSequenceTree is a tool for analyzing the output of multiple protein design runs with DEZYMER, where you want to see how much overlap exists between various sets of results. It performs a simple, hierarchical clustering of protein sequences and displays the resulting tree in kinemage format. The visualization is most useful with under 1000 sequences total, so one might choose only the 100 best-scoring results from each run. Input sequences are listed in plain text, one per line, in one or more files. Contributions from different files are colored with different kinemage "aspects", so they can be selectively highlighted in Mage or KiNG: Use the ] and [ keys to cycle. SequenceTree has no command line options, except -h or -help for this message. Example: java -Xmx512m -cp chiropraxis.jar chiropraxis.dezymer.SequenceTree GBP*/S*/Rankings/Gmecs/best.seq > gbp_best.kin Contents of a sample "best.seq" file: RHFSKDKKWAWE KDSVMAHRWKAK RHFSKDKKWEAE KDFVSKKRSKAD KDSAEAHRWKAK KDGAEKKRESWW KHFASHKRWEAE ... king-2.21.120420/chiropraxis/resource/chiropraxis/dezymer/SequenceSpacer.help0000644000000000000000000000346011531212710025563 0ustar rootrootSequenceSpacer is a tool for understanding the distribution of sequences produced by one or more protein design runs in DEZYMER. It shows clusters of very similar designs graphically by dispersing points in a 3-D space, and allows easy identification of "unusual" results within the output. The resulting kinemage is most useful when limited to at most a few hundred sequences; beyond that, computation times may be long. Input sequences are listed in plain text, one per line, in one or more files. Contributions from different files are colored with different kinemage "aspects", so they can be selectively highlighted in Mage or KiNG: Use the ] and [ keys to cycle. There is also an animation provided that takes advantage of the tranparency features available only in KiNG; turn on multiple groups to see where results from different computations overlap. Clusters of points related by one mutation are identified in the text window with hyperlinked views for each. SequenceSpacer has these command line options: -h or -help This message. -tries=# Number of times to try arranging the nodes, starting from random positions. Best placement is kept. -power=#.# Controls relative weighting of sequence similarity vs. sequence distance. Default is 1.0. (experimental) -blosum Tries to use BLOSUM weights rather than just counting the number of sequence differences. (not recommended) Example: java -Xmx512m -cp chiropraxis.jar chiropraxis.dezymer.SequenceSpacer -tries=5 GBP*/S*/Rankings/Gmecs/best.seq > gbp_best.kin Contents of a sample "best.seq" file: RHFSKDKKWAWE KDSVMAHRWKAK RHFSKDKKWEAE KDFVSKKRSKAD KDSAEAHRWKAK KDGAEKKRESWW KHFASHKRWEAE ... king-2.21.120420/chiropraxis/resource/chiropraxis/version.props0000644000000000000000000000005311744305700023101 0ustar rootroot#Wed May 05 08:34:05 EDT 2004 version=1.09 king-2.21.120420/chiropraxis/src/0000755000000000000000000000000011677361404014746 5ustar rootrootking-2.21.120420/chiropraxis/src/chiropraxis/0000755000000000000000000000000011677361404017301 5ustar rootrootking-2.21.120420/chiropraxis/src/chiropraxis/mc/0000755000000000000000000000000011744306102017665 5ustar rootrootking-2.21.120420/chiropraxis/src/chiropraxis/mc/Turn.java0000644000000000000000000001361511531212724021466 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * Turn is either a tight turn or a pseudo-turn. * *

Copyright (C) 2010 by Daniel Keedy. All rights reserved. *
Begun on Tue Aug 10 2010 */ public abstract class Turn //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## public Model model; public ModelState state; public Residue r1, r2, r3; public String type; // I, I', II, II' public double hbEnergy0to3, hbEnergy0to4; // from Kabsch & Sander equation public double dihedral; // Ca(x4) or Ca(x3)+N public double phi1, psi1, phi2, psi2, phi3, psi3; public double highB; //}}} //{{{ Constructor(s) //############################################################################## public Turn() { super(); } //}}} //{{{ pickType //############################################################################## /** * Sets turn "type" based on CO directionality relative to the plane. * See AnaTax chapter on tight turns for details. */ protected void pickType(Triple co0, Triple co1, Collection points, Triple check) { // We don't necessarily know which way the normal to the four C-alphas // points. So, we use a "sanity check" normal which follows the right-hand // rule and thus points "down" if the turn is viewed with the connection at // the top and the sequence going left to right. LsqPlane plane = new LsqPlane(points); Triple normal = (Triple) plane.getNormal(); if(check.angle(normal) > 90) normal.mult(-1); // From AnaTax, Tight Turns: // // The first oxygen points nearly 90deg down from the center of the plane // in type I, nearly 90deg up in type I', slightly down in type II, and slightly // up in type II'. // // In types I and II' the second carbonyl oxygen points approximately 90deg down // from the plane, while in types II and I' it points approximately 90deg up. // // The position of the second carbonyl oxygen, then, distinguishes between // types I and II (or I' and II'), while the position of the first carbonyl // oxygen distinguishes types I vs II' (or II vs I'). For either distinction // intermediate cases should be rare, because they lie in a strongly // prohibited region of the phi,psi map. if (co0.angle(normal) < 90 && co1.angle(normal) < 90) type = "I"; // down , down else if(co0.angle(normal) > 90 && co1.angle(normal) > 90) type = "Ip"; // up , up else if(co0.angle(normal) < 90 && co1.angle(normal) > 90) type = "II"; // ~down, up else if(co0.angle(normal) > 90 && co1.angle(normal) < 90) type = "IIp"; // ~up , down else type = "unknown"; } //}}} //{{{ calcHbondEnergies [abstract] //############################################################################## /** * Calculates C=O .. H-N H-bond "energies" based on the criteria defined in * W. Kabsch and C. Sander (1983) Biopolymers, 22:2577. * The basic idea is that the H-bond is accepted if * E = 0.42*0.20*332*(1/rON + 1/rCH - 1/rOH - 1/rCN) is less than -0.5 kcal/mol. * Atom-atom distances are in Angstroms and E is in kcal/mol. * Ideal alignment allows distances up to 5.2 A (O to N); * ideal distance allows angles up to 63 degrees. */ abstract void calcHbondEnergies() throws AtomException, ResidueException; //}}} //{{{ calcHbondEnergy [abstract] //############################################################################## /** * Calculates C=O .. H-N H-bond "energy" based on the criteria defined in * W. Kabsch and C. Sander (1983) Biopolymers, 22:2577. * The basic idea is that the H-bond is accepted if * E = 0.42*0.20*332*(1/rON + 1/rCH - 1/rOH - 1/rCN) is less than -0.5 kcal/mol. * Atom-atom distances are in Angstroms and E is in kcal/mol. * Ideal alignment allows distances up to 5.2 A (O to N); * ideal distance allows angles up to 63 degrees. * @param r the Residue containing the C=O * @param s the Residue containing the N-H */ abstract double calcHbondEnergy(Residue r, Residue s) throws AtomException; //}}} //{{{ calcDihedral [abstract] //############################################################################## /** * Calculates a dihedral from the four "joint" atoms comprising this turn. */ abstract void calcDihedral() throws AtomException; //}}} //{{{ calcPhiPsis [abstract] //############################################################################## /** * Calculates phi,psi dihedrals for the residues comprising this turn. */ abstract void calcPhiPsis() throws AtomException, ResidueException; //}}} //{{{ calcHighB [abstract] //############################################################################## /** * Simply stores the highest atomic B-factor for the four residues * (or three, in the case of pseudo-turns) comprising the turn. */ abstract void calcHighB() throws AtomException; //}}} //{{{ decideType [abstract] //############################################################################## /** * Prepares atoms to geometrically check turn "type". */ abstract void decideType() throws AtomException; //}}} //{{{ toString [abstract] //############################################################################## /** * Returns a simple string representation of this turn. */ public abstract String toString(); //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/DsspHelixBuilder.java0000644000000000000000000016734011531212724023755 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * DsspHelixBuilder was modified from HelixBuilder to use an * implementation of the Kabsch & Sander DSSP algorithm instead of my heuristic * method for figuring out which residues are in a helix. * It's not a perfect replication of the DSSP algorithm for some reason; e.g., * it splits up a stretch of helical residues that are actually two kinked * helices according to DSSP into two helices. * Like HelixBuilder, this class creates Helix objects, which hold information * about alpha helices, for an input PDB file. * Specifically, it measures parameters related to the N-cap of each helix in * the file. * Note that this now contains some bug fixes (e.g. handles Pro at N2 or N3) that * the original HelixBuilder does not. * *

Copyright (C) 2007 by Daniel Keedy. All rights reserved. *
Begun on Tue Mar 30 10:45:56 EST 2004 */ public class DsspHelixBuilder //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("###.###"); //}}} //{{{ Variable definitions //############################################################################## String filename = null; ArrayList nTurns = null; ArrayList minHelices = null; ArrayList stretches = null; ArrayList helices = null; boolean doNcaps = true; boolean onlyHbNcaps = false; boolean doKin = false; boolean doPrint = true; boolean smoothAxes = false; int smoothAxesTimes = 0; boolean vectorSumAxis = false; boolean verbose = false; boolean append = false; //}}} //{{{ Constructor(s) //############################################################################## public DsspHelixBuilder() { super(); } //}}} //{{{ processModel //############################################################################## void processModel(String modelName, Model model, ModelState state) { // Create a set of Peptides and connect them up Collection peptides = createPeptides(model, state); connectPeptides(peptides); if (verbose) for (Iterator iter = peptides.iterator(); iter.hasNext(); ) System.err.println((Peptide) iter.next()); findHBonds(peptides, state); getPsiPhis(peptides, state); // Try to identify *helix* based on H-bonding pattern buildMinHelices(peptides, model); buildHelices(model, state); //System.err.println(".. done testing."); //System.exit(0); // Axis & N-cap stuff findAxes(model, state); if (smoothAxes) for (int i = 0; i < smoothAxesTimes; i ++) smoothAxes(); if (doNcaps) findNcaps(model, state); if (doKin) { if (!append) System.out.println("@kinemage {"+filename+" helices}"); sketchHbonds(System.out, peptides, state); sketchNcaps(System.out, state); sketchAxes(System.out); } //if (verbose) for(Iterator iter = peptides.iterator(); iter.hasNext(); ) //{ // Peptide pep = (Peptide) iter.next(); // if(pep.isHelix) // System.err.println(filename.substring(0,4)+" "+pep); //} } //}}} //{{{ createPeptides //############################################################################## /** * Given a model and a state, create Peptide objects for all the "complete" * peptides in the model. * These fields will be filled: nRes, cRes, midpoint */ Collection createPeptides(Model model, ModelState state) { ArrayList peptides = new ArrayList(); Residue prev = null; for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(! AminoAcid.isAminoAcid(res)) continue; try { Peptide pep = new Peptide(prev, res, state); // prev could be null // If prev is null, no distance check. if(prev == null) peptides.add(pep); // If we have two residues, make sure they're connected, // or else do two separate half-peptides. else { AtomState pepC = state.get(prev.getAtom(" C ")); AtomState pepN = state.get(res.getAtom(" N ")); if(pepC.sqDistance(pepN) < 4.0) // within 2 A of each other peptides.add(pep); else { peptides.add(new Peptide(prev, null, state)); peptides.add(new Peptide(null, res, state)); } } } catch(AtomException ex) // missing atoms? try halves. { try { peptides.add(new Peptide(prev, null, state)); } catch(AtomException ex2) {} try { peptides.add(new Peptide(null, res, state)); } catch(AtomException ex2) {} } prev = res; }//for all residues // Add last residue as a half-peptide try { peptides.add(new Peptide(prev, null, state)); } catch(AtomException ex) {} return peptides; } //}}} //{{{ connectPeptides //############################################################################## /** * Given an ordered collection of peptides, connect them on the criteria that * successive peptides must share a common residue between them. * These fields will be filled: prev, next, chain, index. * Chain and index will be indexed starting from 1, not 0. */ void connectPeptides(Collection peptides) { Peptide prev = null; int chain = 0; for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pept = (Peptide) iter.next(); if(prev != null && prev.nRes != null && pept.cRes != null && prev.nRes == pept.cRes) { // Chain is continuous prev.next = pept; pept.prev = prev; pept.chain = prev.chain; pept.index = prev.index+1; } else { // Chain is broken pept.chain = ++chain; pept.index = 1; } prev = pept; } } //}}} //{{{ findHBonds //############################################################################## /** * Maps out all the inter-peptide H-bonds based on the criteria defined in * W. Kabsch and C. Sander (1983) Biopolymers, 22:2577. * The basic idea is that the H-bond is accepted if * E = 0.42*0.20*332*(1/rON + 1/rCH - 1/rOH - 1/rCN) is less than -0.5 kcal/mol. * Atom-atom distances are in Angstroms and E is in kcal/mol. * Ideal alignment allows distances up to 5.2 A (O to N); * ideal distance allows angles up to 63 degrees. * Be careful -- it will try to pick up i to {i, i+1, i+2} "H-bonds". * Only the strongest H-bond for each N to an unbonded O is kept. * These fields will be filled: hbondN, hbondO. */ void findHBonds(Collection peptides, ModelState state) { Peptide[] pep = (Peptide[]) peptides.toArray(new Peptide[peptides.size()]); // Do carbon/oxygen lookup just once AtomState[] carbon = new AtomState[pep.length]; AtomState[] oxygen = new AtomState[pep.length]; for(int i = 0; i < pep.length; i++) { if(pep[i].cRes != null) try { carbon[i] = state.get(pep[i].cRes.getAtom(" C ")); oxygen[i] = state.get(pep[i].cRes.getAtom(" O ")); } catch(AtomException ex) {} // left as null } // For each N/H, look for bonded C/O final double maxNOdist2 = 5.2*5.2; //5.3*5.3; for(int i = 0; i < pep.length; i++) { if(pep[i].nRes != null) try { AtomState nitrogen = state.get(pep[i].nRes.getAtom(" N ")); AtomState hydrogen = state.get(pep[i].nRes.getAtom(" H ")); Peptide bestBond = null; double bestBondE = -0.5; for(int j = 0; j < pep.length; j++) { if(i == j) continue; // no intra-peptide H-bonds if(pep[i].chain == pep[j].chain && Math.abs(pep[i].index - pep[j].index) <= 2) continue; // no i to {i, i+1, i+2} H-bonds! if(carbon[j] == null || oxygen[j] == null) continue; if(nitrogen.sqDistance(oxygen[j]) > maxNOdist2) continue; double rON = oxygen[j].distance(nitrogen); double rCH = carbon[j].distance(hydrogen); double rOH = oxygen[j].distance(hydrogen); double rCN = carbon[j].distance(nitrogen); double energy = 27.9*(1/rON + 1/rCH - 1/rOH - 1/rCN); if(energy < bestBondE && pep[j].hbondO == null) { bestBond = pep[j]; bestBondE = energy; } }//for all possible partners if(bestBond != null) { pep[i].hbondN = bestBond; bestBond.hbondO = pep[i]; } } catch(AtomException ex) {} // no connections then }//for each peptide N } //}}} //{{{ getPsiPhis //############################################################################## /** * For each peptide (Ca i-1, C i-1, N i, Ca i), set the psi for the N-most * residue and the phi for the C-most residue. * This will be used to assign secondary structure below (phi,psi in helical * range). */ void getPsiPhis(Collection peptides, ModelState state) { Peptide[] pep = (Peptide[]) peptides.toArray(new Peptide[peptides.size()]); for (int i = 0; i < pep.length; i++) { if (pep[i].nRes != null && pep[i].cRes != null) try { // Get psiN AtomState N_iminus1 = state.get(pep[i].nRes.getAtom(" N ")); AtomState Ca_iminus1 = state.get(pep[i].nRes.getAtom(" CA ")); AtomState C_iminus1 = state.get(pep[i].nRes.getAtom(" C ")); AtomState N_i = state.get(pep[i].cRes.getAtom(" N ")); pep[i].psiN = new Triple().dihedral(N_iminus1, Ca_iminus1, C_iminus1, N_i); // Get phiC //AtomState C_iminus1 = state.get(pep[i].nRes.getAtom(" C ")); //AtomState N_i = state.get(pep[i].cRes.getAtom(" N ")); AtomState Ca_i = state.get(pep[i].cRes.getAtom(" CA ")); AtomState C_i = state.get(pep[i].cRes.getAtom(" C ")); pep[i].phiC = new Triple().dihedral(C_iminus1, N_i, Ca_i, C_i); } catch (AtomException ex) {} // left as null } } //}}} //{{{ CLASS: NTurn //############################################################################## public static class NTurn { // Variables int n = 0; Residue firstRes = null, lastRes = null; // Constructor public NTurn(Residue first, Residue last, int length) { firstRes = first; lastRes = last; n = length; } //{{{ [unused] public int overlap(NTurn other) { TreeSet thisResNums = new TreeSet(); thisResNums.add(firstRes.getSequenceInteger()); thisResNums.add(lastRes.getSequenceInteger()); for (int i = 0; i < n; i ++) { int resNumInBtw = firstRes.getSequenceInteger() + i; thisResNums.add(resNumInBtw); } TreeSet otherResNums = new TreeSet(); otherResNums.add(other.firstRes.getSequenceInteger()); otherResNums.add(other.lastRes.getSequenceInteger()); for (int i = 0; i < n; i ++) { int otherResNumInBtw = other.firstRes.getSequenceInteger() + i; otherResNums.add(otherResNumInBtw); } TreeSet intersection = new TreeSet(); Iterator iter = thisResNums.iterator(); while (iter.hasNext()) { int num = (Integer) iter.next(); if (otherResNums.contains(num)) // meaning it must be in both intersection.add(num); } return intersection.size(); } //}}} public String toString() { return n+"-turn from '"+firstRes+"' to '"+lastRes+"'"; } } //}}} //{{{ CLASS: MinHelix //############################################################################## public static class MinHelix { // Variables int n = 0; Residue firstRes = null, lastRes = null; // Constructor public MinHelix(Residue first, Residue last, int length) { firstRes = first; lastRes = last; n = length; } public int overlap(MinHelix other) { TreeSet thisResNums = new TreeSet(); thisResNums.add(firstRes.getSequenceInteger()); thisResNums.add(lastRes.getSequenceInteger()); for (int i = 0; i < n; i ++) { int resNumInBtw = firstRes.getSequenceInteger() + i; thisResNums.add(resNumInBtw); } TreeSet otherResNums = new TreeSet(); otherResNums.add(other.firstRes.getSequenceInteger()); otherResNums.add(other.lastRes.getSequenceInteger()); for (int i = 0; i < n; i ++) { int otherResNumInBtw = other.firstRes.getSequenceInteger() + i; otherResNums.add(otherResNumInBtw); } TreeSet intersection = new TreeSet(); Iterator iter = thisResNums.iterator(); while (iter.hasNext()) { int num = (Integer) iter.next(); if (otherResNums.contains(num)) // meaning it must be in both intersection.add(num); } return intersection.size(); } public String toString() { return "MinHelix from '"+firstRes+"' to '"+lastRes+"'"; } } //}}} //{{{ buildMinHelices //############################################################################## /** * Make Kabsch & Sander's "minimal helices," i.e. two consecutive n-turns. * These MinHelix objects can overlap, e.g. NTurns 1-4 and 2-5 form MinHelix * 1-5 and NTurns 2-5 and 3-6 form MinHelix 2-6, so MinHelix 1-5 overlaps * with MinHelix 2-6. */ void buildMinHelices(Collection peptides, Model model) { if (verbose) System.err.println("Starting buildMinHelices..."); // Start by storing n-turns (defined as Hbonded from CO of residue i to // NH of residue i+n) in an ArrayList of NTurn objects nTurns = new ArrayList(); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(pep != null) { if (verbose) System.err.println("Making n-turn(s) with '"+pep+"'..."); if (pep.hbondO != null) { Peptide pep2 = pep.hbondO; Residue first = pep.cRes; // cRes = "residue containing CO" Residue last = pep2.nRes; // nRes = "residue containing NH" if (first != null && last != null) { int length = last.getSequenceInteger() - first.getSequenceInteger(); if (length == 3 || length == 4)// || length == 5) { NTurn nTurn = new NTurn(first, last, length); if (verbose) System.err.println(".. made & added '"+nTurn+"' !"); nTurns.add(nTurn); } else if (verbose) System.err.println(".. '"+pep.cRes+"' HB's through " +"its CO to a residue "+length+" away => not making an NTurn!"); } } else if (verbose) System.err.println(".. no HB partner for '"+pep.cRes+"'" +" through its CO => not making an NTurn!"); } } // Next, make minimal helices (simply 2 consecutive n-turns) minHelices = new ArrayList(); ArrayList nTurnsForMinHelix = new ArrayList(); for (int i = 0; i < nTurns.size(); i ++) { NTurn nTurn = nTurns.get(i); if (nTurnsForMinHelix.size() == 0) { // Start a new putative minimal helix nTurnsForMinHelix.add(nTurn); } else //if (nTurnsForMinHelix.size() >= 1) { NTurn prevNTurn = nTurnsForMinHelix.get(0); if (prevNTurn.firstRes.getNext(model).equals(nTurn.firstRes)) { // These n-turns are consecutive => make a MinHelix // If n-turn1:1-4 and n-turn2:2-5, minhelix:1-5 Residue mhfr = prevNTurn.firstRes; Residue mhlr = nTurn.lastRes; // If n-turn1:1-4 and n-turn2:2-5, minhelix:2-4 //Residue mhfr = nTurn.firstRes; //Residue mhlr = prevNTurn.lastRes; int diff = mhlr.getSequenceInteger() - mhfr.getSequenceInteger(); MinHelix mh = new MinHelix(mhfr, mhlr, diff); minHelices.add(mh); } // Whether we made a MinHelix or not, start a new AL for // the next putative MinHelix nTurnsForMinHelix = new ArrayList(); nTurnsForMinHelix.add(nTurn); // b/c haven't used this n-turn yet } } if (verbose) { System.err.println("Minimal helices: "); for (MinHelix mh : minHelices) System.err.println(" "+mh); System.err.println(); } } //}}} //{{{ buildHelices //############################################################################## /** * Make Helix objects from MinHelix objects. * First, combine minimal helices into helices if they share at least one residue. * Finally, try to add additional residue(s) at the helix's N-terminus if we * think they include the Ncap. */ void buildHelices(Model model, ModelState state) { if (verbose) System.err.println("Staring buildHelices..."); // Make Helix objects for sets of overlapping MinHelix objects helices = new ArrayList(); ArrayList consecMinHelices = new ArrayList(); boolean doneConnecting = false; for (int i = 0; i < minHelices.size(); i ++) { MinHelix minHelix = minHelices.get(i); if (consecMinHelices.size() == 0) { if (verbose) System.err.println("Starting new consecMinHelices with '"+minHelix+"'"); consecMinHelices.add(minHelix); } else { MinHelix lastMinHelix = consecMinHelices.get(consecMinHelices.size()-1); if (minHelix.overlap(lastMinHelix) >= 1) { if (verbose) System.err.println("Adding '"+minHelix+"' to consecMinHelices"); consecMinHelices.add(minHelix); } else doneConnecting = true; } if (i == minHelices.size()-1) doneConnecting = true; if (doneConnecting) { // Completed set of overlapping min helices => make helix if (verbose) System.err.println("Completed AL consecMinHelices;" +" size = "+consecMinHelices.size()); TreeSet resSet = new TreeSet(); for (MinHelix consecMinHelix : consecMinHelices) { resSet.add(consecMinHelix.firstRes); Residue resInBtw = consecMinHelix.firstRes; for (int r = 0; r < consecMinHelix.n; r ++) { resInBtw = resInBtw.getNext(model); // keeps updating = good resSet.add(resInBtw); } resSet.add(consecMinHelix.lastRes); } if (verbose) { System.err.println("About to make new Helix from resSet:"); Iterator iter = resSet.iterator(); while (iter.hasNext()) System.err.println(" "+iter.next()); } Helix helix = new Helix(resSet); helices.add(helix); if (verbose) System.err.println("Added '"+helix+"' made from MinHelix set:" +"\n ("+consecMinHelices.get(0)+") to " +"("+consecMinHelices.get(consecMinHelices.size()-1)+")"); // Reset => start new set of overlapping MinHelix objects consecMinHelices = new ArrayList(); consecMinHelices.add(minHelix); // b/c haven't used this minHelix yet doneConnecting = false; } } if (verbose) System.err.println("After connecting MinHelices but before " +"adding putative N-cap residue, # helices = "+helices.size()); // Also add putative N-cap residues based on i,i+3 distance < 5.9 A as in my // original HelixBuilder. // A convenient approach: add the preceding residue to each helix iff // Ca(i)-Ca(i+3) distance < 5.9 A (N-term) for (Helix helix : helices) { try { Residue first = helix.getRes("first"); Residue prev = first.getPrev(model); Residue prev3 = first.getNext(model).getNext(model); if (prev != null && prev3 != null) { AtomState caPrev = state.get(prev.getAtom(" CA ")); AtomState caPrev3 = state.get(prev3.getAtom(" CA ")); if (caPrev != null && caPrev3 != null) { if (caPrev.distance(caPrev3) < 5.9) { // Add this residue b/c it's possibly the Ncap! ArrayList temp = new ArrayList(); temp.add(prev); // new first residue for (Residue res : helix.residues) temp.add(res); helix.residues = temp; // refer to this new object if (verbose) System.err.println("Added '"+prev+"' to '"+helix+ "' b/c Ca(i)-Ca(i+3) dist = "+df.format(caPrev.distance(caPrev3))); } } } } catch (AtomException ae) { System.err.println("Couldn't find one/both of res i-1 or i+2 for the " +"first residue of "+helix+"..."); } } } //}}} //{{{ findAxes //############################################################################## public void findAxes(Model model, ModelState state) { /** * Calculates local helical axis for each set of 4 Ca's in each Helix. * This is only one way of doing it... Can also Google some other * possibilities later. * This will be used to tabulate the angle between the local helix axis * and the normal vectors of certain peptides in the helix (e.g. Ncap, * Asn's w/in helix) to look for evidence of backrubs in a local * coordinate system. * The point is to examine under what local circumstances the backrub * occurs. */ for (Helix helix : helices) { ArrayList thisHelixAxisHeads = new ArrayList(); ArrayList thisHelixAxisTails = new ArrayList(); for (int r = 0; r < helix.residues.size()-3; r ++) // should be a sorted AL { // Take line from Ca_i to Ca_i+2 // and line from Ca_i+1 to Ca_i+3 // Line between the midpoints of those two lines points in // the direction of a local axis vector. // Find the requisite 4 Ca's Residue[] res = new Residue[4]; res[0] = helix.residues.get(r); for (int i = 0; i < 3; i ++) if (res[i].getNext(model) != null) res[i+1] = res[i].getNext(model); AtomState[] cas = new AtomState[4]; for (int i = 0; i < 4; i ++) if (res[i] != null) { try { cas[i] = state.get(res[i].getAtom(" CA ")); } catch ( driftwood.moldb2.AtomException ae) { System.err.println("Can't find CA in res "+res[i]); } } int numValidCas = 0; for (int i = 0; i < cas.length; i ++) if (cas[i] != null) numValidCas ++; if (numValidCas == 4) { // Calculate the axis Triple midpoint0to2 = new Triple().likeMidpoint( cas[0], cas[2]); Triple midpoint1to3 = new Triple().likeMidpoint( cas[1], cas[3]); Triple axisDir = new Triple().likeVector( midpoint0to2, midpoint1to3); Triple axisHead = axisDir.unit().mult(2).add(midpoint0to2); Triple axisTail = midpoint0to2; // can change to midpoint // of midpoints later... // Add the axis to this helix thisHelixAxisHeads.add(axisHead); thisHelixAxisTails.add(axisTail); } else { System.err.println("Wrong number Cas for this helical axis!"); System.err.println("Expected 4 but got "+numValidCas+"..."); } } // Finish by giving a list of axes to this helix helix.axisTails = thisHelixAxisTails; helix.axisHeads = thisHelixAxisHeads; if (verbose) { System.err.println(helix.axisTails.size()+" axis tails and "+ helix.axisHeads.size()+" axis heads in "+helix); System.err.println("Residues:"); for (int r = 0; r < helix.residues.size(); r ++) System.err.println(" "+helix.residues.get(r)); System.err.println("First residue: "+helix.getRes("first")); System.err.println("Last residue: "+helix.getRes("last")); System.err.println(); } }//for(each Helix in helices) } //}}} //{{{ smoothAxes //############################################################################## public void smoothAxes() { /** * Smooths the local helical axes for each set of 4 Ca's in each Helix * made in findAxes by averaging the direction of each with that of its * previous and next neighbors (if they exist, i.e. we aren't on the end * of the helix). * Goal: Generate a direction that is robust to weirdnesses in the local * geometry (e.g. helix turning into beta or something) but does reflect * subtle local changes in helical direction. */ for (Helix helix : helices) { for (int i = 0; i < helix.axisHeads.size(); i ++) { // Starting axis tail & head Triple tail = helix.axisTails.get(i); Triple head = helix.axisHeads.get(i); // Get adjacent residues' 4 Ca local axis heads and tails // if applicable ArrayList adjacTails = new ArrayList(); ArrayList adjacHeads = new ArrayList(); adjacTails.add(new Triple(tail)); // put in same AL b/c we'll adjacHeads.add(new Triple(head)); // avg all its contents later if (i > 0) { adjacTails.add(new Triple(helix.axisTails.get(i-1))); adjacHeads.add(new Triple(helix.axisHeads.get(i-1))); } if (i < helix.axisHeads.size()-1) { adjacTails.add(new Triple(helix.axisTails.get(i+1))); adjacHeads.add(new Triple(helix.axisHeads.get(i+1))); } // Translate to origin and average orientation with 0, 1, or 2 // adjacent axes, depending on if they exist Triple newHead = new Triple(); double x = 0, y = 0, z = 0; if (adjacTails.size() > 1 && adjacHeads.size() > 1) { for (int a = 0; a < adjacHeads.size(); a ++) { Triple adjacTail = adjacTails.get(a); Triple adjacHead = adjacHeads.get(a); Triple adjacHeadAtOrig = new Triple( adjacHead.getX()-adjacTail.getX(), adjacHead.getY()-adjacTail.getY(), adjacHead.getZ()-adjacTail.getZ()); x += adjacHeadAtOrig.getX(); y += adjacHeadAtOrig.getY(); z += adjacHeadAtOrig.getZ(); } // Average orientation newHead = new Triple(x/adjacHeads.size(), y/adjacHeads.size(), z/adjacHeads.size()); // Translate back to the helix newHead.add(tail); } // else if no adjacent residues in helix with axes, do nothing // to this local axis // Leave axisTails.get(i) alone, but update axisHeads.get(i) helix.axisHeads.set(i, newHead); } }//for(each Helix in helices) } //}}} //{{{ findNcaps //############################################################################## public void findNcaps(Model model, ModelState state) /** * We just assume the first residue in a helix is the Ncap. * This is a *very simple* Ncap-finding algorithm! * * Can alter later to incorporate Ca position relative to cylinder of * helix as in original RLab helix cap paper */ { for (Helix helix : helices) { // Find the Ncaps if (helix.ncap != null) continue; else { String hb = typeOfNcapHbond(helix.getRes("first"), model, state); if (onlyHbNcaps && !hb.equals("i+2") && !hb.equals("i+3")) { helix.ncap = null; } else { helix.ncap = new Ncap(helix.getRes("first")); if (hb.equals("i+2")) helix.ncap.hbType = "i+2"; if (hb.equals("i+3")) helix.ncap.hbType = "i+3"; } } } if (verbose) System.err.println(); for (Helix helix : helices) { if (helix.ncap != null) { // Calculate "backrub-like" distances & angles for each Ncap //if (onlyHbNcaps) helix.setNcapDistances(model, state, verbose); helix.setNcapAngles(model, state); // Set phi, psi for N-cap i, i+1, and i-1 residues helix.setNcapPhiPsis(model, state); // Set "sc length" for N-cap & N3 helix.setNcapScLengths(model); // Set residue at capping box for N-cap helix.setCappingBox(model, state, verbose); // Set "alpha" or "3-10" at N-cap helix.setTypeAtNcap(model, state, verbose); } } } //}}} //{{{ typeOfNcapHbond //############################################################################## public String typeOfNcapHbond(Residue res, Model model, ModelState state) /** * This is a simple geometric routine to determine whether a putative Ncap * residue is a Ser/Thr/Asn/Asp and makes an i+2 or i+3 Hbond or not. * Uses cutoff of 2.9A to determine whether an Hbond is there or not, which * is something we could obviously alter later, but it seems reasonable. */ { try { Residue res2 = res.getNext(model).getNext(model); Residue res3 = res2.getNext(model); Atom h2 = res2.getAtom(" H "); // doesn't exist for prolines! (" HA ") Atom h3 = res3.getAtom(" H "); Atom n2 = res2.getAtom(" N "); Atom n3 = res3.getAtom(" N "); Triple likeH2 = null; Triple likeH3 = null; Triple likeN2 = null; Triple likeN3 = null; if (h2 != null) likeH2 = new Triple(state.get(h2)); if (h3 != null) likeH3 = new Triple(state.get(h3)); if (n2 != null) likeN2 = new Triple(state.get(n2)); if (n3 != null) likeN3 = new Triple(state.get(n3)); Triple likeO0 = null; Triple likeO0_2 = null; Triple likeC0 = null; if (res.getName().equals("ASN")) { Atom o0 = res.getAtom(" OD1"); Atom c0 = res.getAtom(" CG "); if (o0 != null) likeO0 = new Triple(state.get(o0)); if (c0 != null) likeC0 = new Triple(state.get(c0)); } if (res.getName().equals("ASP")) { Atom o0 = res.getAtom(" OD1"); Atom o0_2 = res.getAtom(" OD2"); Atom c0 = res.getAtom(" CG "); if (o0 != null) likeO0 = new Triple(state.get(o0)); if (o0_2 != null) likeO0_2 = new Triple(state.get(o0_2)); if (c0 != null) likeC0 = new Triple(state.get(c0)); } if (res.getName().equals("SER")) { Atom o0 = res.getAtom(" OG "); Atom c0 = res.getAtom(" CB "); if (o0 != null) likeO0 = new Triple(state.get(o0)); if (c0 != null) likeC0 = new Triple(state.get(c0)); } if (res.getName().equals("THR")) { Atom o0 = res.getAtom(" OG1"); Atom c0 = res.getAtom(" CB "); if (o0 != null) likeO0 = new Triple(state.get(o0)); if (c0 != null) likeC0 = new Triple(state.get(c0)); } // Accept Hbond according to Kabsch & Sander criterion: // E = 0.42*0.20*332*(1/rON + 1/rCH - 1/rOH - 1/rCN) // is less than -0.5 kcal/mol. // The difference is we're now dealing with a sc-mc // Hbond, but it should work about as well (?). if (likeH2 != null && likeH3 != null && likeN2 != null && likeN3 != null && likeO0 != null && likeC0 != null) { double rON = likeO0.distance(likeN3); double rCH = likeC0.distance(likeH3); double rOH = likeO0.distance(likeH3); double rCN = likeC0.distance(likeN3); double energy3 = 27.9*(1/rON + 1/rCH - 1/rOH - 1/rCN); rON = likeO0.distance(likeN2); rCH = likeC0.distance(likeH2); rOH = likeO0.distance(likeH2); rCN = likeC0.distance(likeN2); double energy2 = 27.9*(1/rON + 1/rCH - 1/rOH - 1/rCN); if (energy2 < energy3 && energy2 < -0.5) { if (verbose) System.err.println("'"+res+"' makes an i+2 Hb"+ "\t(energy2="+df.format(energy2)+" < energy3="+df.format(energy3)+")"); return "i+2"; } if (energy3 < energy2 && energy3 < -0.5) { if (verbose) System.err.println("'"+res+"' makes an i+3 Hb"+ "\t(energy2="+df.format(energy2)+" > energy3="+df.format(energy3)+")"); return "i+3"; } } if (verbose) System.err.println("'"+res+"' isn't an H-bonding NDST ..."); return ""; } catch (AtomException ae) { // If e.g. there are disordered sidechain atoms System.err.println("Problem figuring out if "+res+" in '"+filename +"' is an Asn/Asp/Ser/Thr whose sc Hbonds to i+2 or i+3 mc and" +" is therefore an Ncap..."); return ""; } } //}}} //{{{ sketchHbonds //############################################################################## void sketchHbonds(PrintStream out, Collection peptides, ModelState state) { DecimalFormat df = new DecimalFormat("0.0###"); out.println("@group {peptides & hbonds}"); out.println("@balllist {peptides} radius= 0.1 color= green"); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(pep.isHelix) //Beta) out.println("{"+pep+"} r=0.3 "+pep.midpoint.format(df)); else out.println("{"+pep+"} "+pep.midpoint.format(df)); } out.println("@vectorlist {N hbonds} color= sky"); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(pep.hbondN != null) { try { AtomState h = state.get(pep.nRes.getAtom(" H ")); AtomState o = state.get(pep.hbondN.cRes.getAtom(" O ")); out.println("{"+pep+"}P "+h.format(df)); out.println("{"+pep.hbondN+"} "+o.format(df)); } catch(AtomException ex) {} } } out.println("@vectorlist {O hbonds} color= red"); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(pep.hbondO != null) { try { AtomState o = state.get(pep.cRes.getAtom(" O ")); AtomState h = state.get(pep.hbondO.nRes.getAtom(" H ")); out.println("{"+pep+"}P "+o.format(df)); out.println("{"+pep.hbondO+"} "+h.format(df)); } catch(AtomException ex) {} } } } //}}} //{{{ sketchNcaps //############################################################################## void sketchNcaps(PrintStream out, ModelState state) { DecimalFormat df = new DecimalFormat("0.0###"); out.println("@group {ncaps}"); out.println("@balllist {ncaps} radius= 0.3 color= hotpink"); for (Helix helix : helices) { try { if (helix.ncap != null) { AtomState ncapCa = state.get(helix.ncap.res.getAtom(" CA ")); out.println("{ncap '"+helix.toString()+"' "+ helix.ncap.hbType+" Hb, "+helix.typeAtNcap+" bb @ ncap} "+ df.format(ncapCa.getX())+" "+ df.format(ncapCa.getY())+" "+ df.format(ncapCa.getZ()) ); } } catch (driftwood.moldb2.AtomException ae) { System.err.println("Can't find atom ' CA ' in helix "+helix); } } out.println("@vectorlist {ncap normals} color= hotpink"); for (Helix helix : helices) { if (helix.ncap != null && helix.ncap.normalTail != null && helix.ncap.normalHead != null) { out.println("{helix '"+helix.toString()+"' ncap normal tail}P "+ df.format(helix.ncap.normalTail.getX())+" "+ df.format(helix.ncap.normalTail.getY())+" "+ df.format(helix.ncap.normalTail.getZ()) ); out.println("{helix '"+helix.toString()+"' ncap normal head}P "+ df.format(helix.ncap.normalHead.getX())+" "+ df.format(helix.ncap.normalHead.getY())+" "+ df.format(helix.ncap.normalHead.getZ()) ); } } } //}}} //{{{ sketchAxes //############################################################################## void sketchAxes(PrintStream out) { DecimalFormat df = new DecimalFormat("0.0###"); String title = ""; // default if (smoothAxes) title = "smoothed "; else if (vectorSumAxis) title = "vector sum "; out.println("@group {"+title+"helix axes}"); out.println("@vectorlist {"+title+"helix axes} color= peach"); if (vectorSumAxis) { for (Helix helix : helices) { if (helix.vectorSumAxisTail != null && helix.vectorSumAxisHead != null) { out.println("{helix ("+helix.toString()+") vector sum axis "+ "tail}P "+helix.vectorSumAxisTail.getX()+" "+ helix.vectorSumAxisTail.getY()+" "+ helix.vectorSumAxisTail.getZ()); out.println("{helix ("+helix.toString()+") vector sum axis "+ "head} "+helix.vectorSumAxisHead.getX()+" "+ helix.vectorSumAxisHead.getY()+" "+ helix.vectorSumAxisHead.getZ()); } } } else { for (Helix helix : helices) { if (helix.axisHeads != null && helix.axisTails != null) { for (int i = 0; i < helix.axisHeads.size(); i++) { // There should be the same number of entries in // axisHeads and axisTails, so this should be OK // to do out.println("{helix ("+helix.toString()+")"+ " res"+((int)i+1)+"-"+((int)i+2)+" "+title+ "axis tail}P "+ df.format(helix.axisTails.get(i).getX())+" "+ df.format(helix.axisTails.get(i).getY())+" "+ df.format(helix.axisTails.get(i).getZ()) ); out.println("{helix ("+helix.toString()+")"+ " res"+((int)i+1)+"-"+((int)i+2)+" "+title+ "axis head} "+ df.format(helix.axisHeads.get(i).getX())+" "+ df.format(helix.axisHeads.get(i).getY())+" "+ df.format(helix.axisHeads.get(i).getZ()) ); } } } } } //}}} //{{{ printHelices, printNcapAngles //############################################################################## public void printHelices() { // Only printing this if verbose... System.err.println("\nTotal number helices in "+filename+": "+helices.size()+"\n"); for (Helix helix : helices) { System.err.println("** "+helix.toString()); System.err.println(" "+helix.residues.size()+" residues"); for (Residue residue : helix.residues) System.err.println(" "+residue); if (doNcaps) { if (helix.ncap != null) { System.err.println(" ncap: "+helix.ncap); if (helix.ncap.planeNormalAngle != Double.NaN) System.err.println( " ncap plane normal angle: "+df.format(helix.ncap.planeNormalAngle)); System.err.println(" "+helix.typeAtNcap+" at ncap"); } } System.err.println(); } } public void printNcapAngles() { DecimalFormat df = new DecimalFormat("#.###"); if (doNcaps) { PrintStream out = System.out; out.println("file,helix,Ncap,"+ "CaCaCa_axis,CaCb_axis,"+ "Ca(i-1_i+1_i+2)_Ca(i-1_i_i+1),Ca(i-1_i+1_i+2),"+ "N3NH_Ca(i_i+1_i+2),N3NH_axis,"+ "tau(i-1),tau(i),tau(i+1),"+ "phi(i-1),psi(i-1),phi(i),psi(i),phi(i+1),psi(i+1),"+ "NcapO_N2H,NcapO_N3H,NcapCa_N3Ca,"+ "N'Ca_N3Ca,Ncap_HB_type,"+ "ncapResType,cappingBoxResType,NcapChis,N3Chis,"+ "helixTypeAtNcap,NcapHbEnergy3_10,NcapHbEnergyAlpha,NcapHbEnergySum,"); for (Helix helix : helices) { Ncap n = helix.ncap; if (n != null) { out.print(filename+","+helix+","+n+","); out.print(Double.isNaN(n.planeNormalAngle) ? "__?__," : df.format(n.planeNormalAngle) +","); out.print(Double.isNaN(n.caCbAngle) ? "__?__," : df.format(n.caCbAngle) +","); out.print(Double.isNaN(n.caPlanesAngle) ? "__?__," : df.format(n.caPlanesAngle) +","); out.print(Double.isNaN(n.caEntryAngle) ? "__?__," : df.format(n.caEntryAngle) +","); out.print(Double.isNaN(n.n3NH_precCaCaCa) ? "__?__," : df.format(n.n3NH_precCaCaCa) +","); out.print(Double.isNaN(n.n3NH_axis) ? "__?__," : df.format(n.n3NH_axis) +","); out.print(Double.isNaN(n.nprimeTau) ? "__?__," : df.format(n.nprimeTau) +","); out.print(Double.isNaN(n.tau) ? "__?__," : df.format(n.tau) +","); out.print(Double.isNaN(n.n1Tau) ? "__?__," : df.format(n.n1Tau) +","); out.print(Double.isNaN(n.nprimePhi) ? "__?__," : df.format(n.nprimePhi) +","); out.print(Double.isNaN(n.nprimePsi) ? "__?__," : df.format(n.nprimePsi) +","); out.print(Double.isNaN(n.phi) ? "__?__," : df.format(n.phi) +","); out.print(Double.isNaN(n.psi) ? "__?__," : df.format(n.psi) +","); out.print(Double.isNaN(n.n1Phi) ? "__?__," : df.format(n.n1Phi) +","); out.print(Double.isNaN(n.n1Psi) ? "__?__," : df.format(n.n1Psi) +","); out.print(Double.isNaN(n.distNcapScToN2H) ? "__?__," : df.format(n.distNcapScToN2H) +","); out.print(Double.isNaN(n.distNcapScToN3H) ? "__?__," : df.format(n.distNcapScToN3H) +","); out.print(Double.isNaN(n.distNcapCaToN3Ca) ? "__?__," : df.format(n.distNcapCaToN3Ca) +","); out.print(Double.isNaN(n.distNprimeCaToN3Ca) ? "__?__," : df.format(n.distNprimeCaToN3Ca)+","); out.print(n.hbType+","); out.print(n.res.getName()+","); out.print(n.cappingBoxResType == null ? "__?__," : n.cappingBoxResType+","); out.print(n.ncapNumChis == 999 ? "__?__," : n.ncapNumChis +","); out.print(n.n3NumChis == 999 ? "__?__," : n.n3NumChis +","); out.print(helix.typeAtNcap+","); out.print(Double.isNaN(n.hbondEnergy3_10) ? "__?__," : df.format(n.hbondEnergy3_10) +","); out.print(Double.isNaN(n.hbondEnergyAlpha) ? "__?__," : df.format(n.hbondEnergyAlpha) +","); out.print(Double.isNaN(n.hbondEnergy3_10) || Double.isNaN(n.hbondEnergyAlpha) ? "__?__," : df.format(n.hbondEnergyAlpha+n.hbondEnergy3_10)+","); out.println(); //{{{ old //// "Backrub angles" //if (Double.isNaN(n.planeNormalAngle)) out.print("__?__,"); //else out.print(df.format(n.planeNormalAngle)+","); //if (Double.isNaN(n.caCbAngle)) out.print("__?__,"); //else out.print(df.format(n.caCbAngle)+","); //if (Double.isNaN(n.caPlanesAngle)) out.print("__?__,"); //else out.print(df.format(n.caPlanesAngle)+","); //if (Double.isNaN(n.caEntryAngle)) out.print("__?__,"); //else out.print(df.format(n.caEntryAngle)+","); // //if (Double.isNaN(n.n3NH_precCaCaCa)) out.print("__?__,"); //else out.print(df.format(n.n3NH_precCaCaCa)+","); //if (Double.isNaN(n.n3NH_axis)) out.print("__?__,"); //else out.print(df.format(n.n3NH_axis)+","); // //if (Double.isNaN(n.nprimeTau)) out.print("__?__,"); //else out.print(df.format(n.nprimeTau)+","); //if (Double.isNaN(n.tau)) out.print("__?__,"); //else out.print(df.format(n.tau)+","); //if (Double.isNaN(n.n1Tau)) out.print("__?__,"); //else out.print(df.format(n.n1Tau)+","); // //// Phi, psi //if (Double.isNaN(n.nprimePhi)) out.print("__?__,"); //else out.print(df.format(n.nprimePhi)+","); //if (Double.isNaN(n.nprimePsi)) out.print("__?__,"); //else out.print(df.format(n.nprimePsi)+","); //if (Double.isNaN(n.phi)) out.print("__?__,"); //else out.print(df.format(n.phi)+","); //if (Double.isNaN(n.psi)) out.print("__?__,"); //else out.print(df.format(n.psi)+","); //if (Double.isNaN(n.n1Phi)) out.print("__?__,"); //else out.print(df.format(n.n1Phi)+","); //if (Double.isNaN(n.n1Psi)) out.print("__?__,"); //else out.print(df.format(n.n1Psi)+","); // //// N-cap H-bonding ////if (onlyHbNcaps) ////{ // if (Double.isNaN(n.distNcapScToN2H)) out.print("__?__,"); // else out.print(df.format(n.distNcapScToN2H)+","); // if (Double.isNaN(n.distNcapScToN3H)) out.print("__?__,"); // else out.print(df.format(n.distNcapScToN3H)+","); // if (Double.isNaN(n.distNcapCaToN3Ca)) out.print("__?__,"); // else out.print(df.format(n.distNcapCaToN3Ca)+","); // if (Double.isNaN(n.distNprimeCaToN3Ca)) out.print("__?__,"); // else out.print(df.format(n.distNprimeCaToN3Ca)+","); // // out.print(n.hbType+","); ////} // //// Capping box //if (n.cappingBoxResType == null) out.print(","); //else out.print(n.cappingBoxResType+","); // //// Misc //if (n.ncapNumChis == 999) out.print("__?__,"); //else out.print(n.ncapNumChis+","); //if (n.n3NumChis == 999) out.print("__?__,"); //else out.print(n.n3NumChis+","); // //out.print(helix.typeAtNcap+","); // //out.print(n.res.getName()+","); // //out.println(); //}}} } else // if (n == null) if (verbose && onlyHbNcaps) out.println(filename+","+helix+",no_HBed_NDST_Ncap!"); } } } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { // Make helices File file = new File(filename); LineNumberReader in = new LineNumberReader(new FileReader(file)); PdbReader pdbReader = new PdbReader(); CoordinateFile cf = pdbReader.read(in); Model m = cf.getFirstModel(); ModelState state = m.getState(); processModel(cf.getIdCode(), m, state); // Print output if (doPrint) { if (verbose) printHelices(); printNcapAngles(); } } public static void main(String[] args) { DsspHelixBuilder mainprog = new DsspHelixBuilder(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("DsspHelixBuilder.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'DsspHelixBuilder.help' ***\n"); else { try { streamcopy(is, System.err); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.DsspHelixBuilder"); System.err.println("Copyright (C) 2007 by Daniel Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if (filename == null) filename = arg; else System.out.println("Didn't need "+arg+"; already have file "+filename); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-kin")) { doKin = true; doPrint = false; } else if(flag.equals("-print")) { doPrint = true; } else if(flag.equals("-ncaps")) { doNcaps = true; } else if(flag.equals("-onlyhbncaps")) { doNcaps = true; onlyHbNcaps = true; } else if(flag.equals("-smoothaxes")) { smoothAxes = true; if (param != null) smoothAxesTimes = Integer.parseInt(param); else smoothAxesTimes = 1; } else if(flag.equals("-vectorsumaxis")) { vectorSumAxis = true; } else if(flag.equals("-v") || flag.equals("-verbose")) { verbose = true; } else if(flag.equals("-append")) { append = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/AltConfShearFinder.java0000644000000000000000000003517411531212724024203 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * AltConfShearFinder searches through the alternate conformations * of a crystal structure, looking for residues that appear to undergo * a shear-like conformational change. * *

Copyright (C) 2010 by Daniel A. Keedy. All rights reserved. *
Begun on Tue Sep 21 2010 */ public class AltConfShearFinder //extends ... implements ... { //{{{ Constants DecimalFormat df1 = new DecimalFormat("0.0##"); DecimalFormat df2 = new DecimalFormat("0.0"); //}}} //{{{ Variable definitions //############################################################################## boolean verbose = false; Collection inputFiles; //}}} //{{{ Constructor(s) //############################################################################## public AltConfShearFinder() { super(); inputFiles = new ArrayList(); } //}}} //{{{ searchModel //############################################################################## void searchModel(PrintStream out, String label, Model model) { //{{{ DEBUG: //System.err.println("BY VALUE"); //Collection stateC = model.getStates().values(); //ModelState[] states = (ModelState[]) stateC.toArray(new ModelState[stateC.size()]); //for(int i = 0; i < states.length; i++) //{ // for(int j = i+1; j < states.length; j++) // { // ModelState state1 = states[i]; // ModelState state2 = states[j]; // System.err.println(+i+" -> "+getStateName(state1, model) // +", "+j+" -> "+getStateName(state2, model)); // } //} // //System.err.println("BY KEY"); //for(Iterator iter1 = model.getStates().keySet().iterator(); iter1.hasNext(); ) //{ // String key1 = (String) iter1.next(); // for(Iterator iter2 = model.getStates().keySet().iterator(); iter2.hasNext(); ) // { // String key2 = (String) iter2.next(); // if(key2.equals(key1)) continue; // ModelState state1 = (ModelState) model.getStates().get(key1); // ModelState state2 = (ModelState) model.getStates().get(key2); // System.err.println(key1+" -> "+getStateName(state1, model) // +", "+key2+" -> "+getStateName(state2, model)); // } //} //System.exit(0); //}}} final double maxCaShift = 0.01; // Value ^ used for AltConfBackrubFinder: 0.01 // "less than 2% more examples at 0.1 A allowance" Collection stateC = model.getStates().values(); ModelState[] states = (ModelState[]) stateC.toArray(new ModelState[stateC.size()]); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res1 = (Residue) iter.next(); if(!AminoAcid.isAminoAcid(res1)) continue; Residue res2 = res1.getNext(model); if(res2 == null) continue; Residue res3 = res2.getNext(model); if(res3 == null) continue; Residue res4 = res3.getNext(model); if(res4 == null) continue; Atom ca1 = res1.getAtom(" CA "); Atom ca2 = res2.getAtom(" CA "); Atom ca3 = res3.getAtom(" CA "); Atom ca4 = res4.getAtom(" CA "); Atom cb2 = res2.getAtom(" CB "); Atom cb3 = res3.getAtom(" CB "); Atom o2 = res2.getAtom(" O "); // Vectors between atom pairs for max Ca & Cb moves Triple maxCaCa = new Triple(1,0,0); Triple maxCbCb2 = new Triple(1,0,0); Triple maxCbCb3 = new Triple(1,0,0); Triple maxOO2 = new Triple(1,0,0); double maxCa2Dist = 0, maxCa3Dist = 0; double maxCb2Dist = 0, maxCb3Dist = 0; double maxO2Dist = 0; int maxI = -1, maxJ = -1; // Test between all pairs of states for(int i = 0; i < states.length; i++) { for(int j = i+1; j < states.length; j++) { try { // If anchor Ca's move too far, skip this one AtomState ca1alt1 = states[i].get(ca1); AtomState ca1alt2 = states[j].get(ca1); AtomState ca4alt1 = states[i].get(ca4); AtomState ca4alt2 = states[j].get(ca4); if(ca1alt1.distance(ca1alt2) > maxCaShift || ca4alt1.distance(ca4alt2) > maxCaShift) continue; // Look for a big movement by the central Ca's AtomState ca2alt1 = states[i].get(ca2); AtomState ca2alt2 = states[j].get(ca2); AtomState ca3alt1 = states[i].get(ca3); AtomState ca3alt2 = states[j].get(ca3); double ca2dist = ca2alt1.distance(ca2alt2); double ca3dist = ca3alt1.distance(ca3alt2); if(ca2dist + ca3dist > maxCa2Dist + maxCa3Dist) { maxCa2Dist = ca2dist; maxCa3Dist = ca3dist; Triple ca1mid = new Triple().likeMidpoint(ca1alt1, ca1alt2); Triple ca4mid = new Triple().likeMidpoint(ca4alt1, ca4alt2); maxCaCa.likeVector(ca1mid, ca4mid); AtomState cb2alt1 = states[i].get(cb2); AtomState cb2alt2 = states[j].get(cb2); AtomState cb3alt1 = states[i].get(cb3); AtomState cb3alt2 = states[j].get(cb3); maxCb2Dist = cb2alt1.distance(cb2alt2); maxCb3Dist = cb3alt1.distance(cb3alt2); maxCbCb2.likeVector(cb2alt1, cb2alt2); maxCbCb3.likeVector(cb3alt1, cb3alt2); AtomState o2alt1 = states[i].get(o2); AtomState o2alt2 = states[j].get(o2); maxO2Dist = o2alt1.distance(o2alt2); maxOO2.likeVector(o2alt1, o2alt2); // Wait 'til now to claim this state combo is best so far maxI = i; maxJ = j; } } catch(AtomException ex) {} }//for j states }//for i states if(maxI == -1 || maxJ == -1) continue; // these residues may contain a Gly - no Cb if(maxCa2Dist > 0 && maxCa3Dist > 0) { // Spit out our results String alt1 = getStateName(states[maxI], model); String alt2 = getStateName(states[maxJ], model); String delim = ","; out.print(label.toLowerCase()+delim+ alt1+delim+alt2+delim+ //res1.getCNIT()+delim+res4.getCNIT()+delim+ res1.getChain()+delim+res1.getSequenceInteger()+delim+ res1.getInsertionCode()+delim+res1.getName()+delim+ res4.getChain()+delim+res4.getSequenceInteger()+delim+ res4.getInsertionCode()+delim+res4.getName()+delim+ df1.format(maxCa2Dist)+delim+ // Ca df1.format(maxCa3Dist)+delim+ df1.format(maxCb2Dist)+delim+ // Cb df1.format(maxCb3Dist)+delim+ df1.format(maxO2Dist)+delim+ // C=O df2.format(maxCaCa.angle(maxCbCb2))+delim+ // perp or || df2.format(maxCaCa.angle(maxCbCb3))+delim+ // perp or || df2.format(maxCaCa.angle(maxOO2))); // perp or || if(verbose) out.println(); // Try to interrelate C-alphas (& C=Os) using shears and backrubs ShearFit shearFit = new ShearFit(); shearFit.initData(model, res1, res2, res3, res4, alt1, alt2, "ca+o", verbose, delim); ModelState fitState = shearFit.interrelateAltConfs(10, 1.0); if(!verbose) out.println(); // Other things I've tried for ^ that are faster but maybe // more prone to local minima due to large initial changes: // 5, 10.0 // 5, 15.0 System.err.println(); } }//for each residue } //}}} //{{{ getStateName //############################################################################## /** * Finds the key in the Model's Map * for the given ModelState, or null if it isn't found. */ String getStateName(ModelState state, Model model) { Map states = model.getStates(); for(Iterator iter = states.keySet().iterator(); iter.hasNext(); ) { String key = (String) iter.next(); ModelState curr = (ModelState) states.get(key); if(curr.equals(state)) // does ModelState implement equals? return key; } return null; } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { PdbReader reader = new PdbReader(); for(Iterator files = inputFiles.iterator(); files.hasNext(); ) { File f = (File) files.next(); try { CoordinateFile cf = reader.read(f); for(Iterator models = cf.getModels().iterator(); models.hasNext(); ) { Model m = (Model) models.next(); String label = f.toString(); if(cf.getIdCode() != null) label = cf.getIdCode(); searchModel(System.out, label, m); } } catch(IOException ex) { System.err.println("IOException when processing "+f); } } } public static void main(String[] args) { AltConfShearFinder mainprog = new AltConfShearFinder(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("AltConfShearFinder.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'AltConfShearFinder.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.AltConfShearFinder"); System.err.println("Copyright (C) 2010 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here File f = new File(arg); if(f.isFile()) inputFiles.add(f); else throw new IllegalArgumentException("'"+arg+"' is not a valid file name."); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } if(flag.equals("-verbose") || flag.equals("-v")) { verbose = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/AvgStrucGenerator.java0000644000000000000000000011715011744305700024145 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.Strings; //}}} /** * AvgStrucGenerator generates an average PDB from a set of PDBs. * This is done over a local structural region. * It takes as input: * (1) a list containing central residue numbers * (2) any number of PDB files w/ "1234CH.pdb" (where C is chain) filename format * (3) indices relative to the central residue via -range=#,# (opt'l) * * Note that sequence alignment (i.e. correspondence) is handled internally, but * the input PDB files *must* already be aligned in 3-space for this to work! * * TODO: re-scale average stdevs/atom so max is 40 (to make more B-factor-ish)? * *

Copyright (C) 2008 by Daniel A. Keedy. All rights reserved. *
Begun on Mon May 13, 2008. */ public class AvgStrucGenerator //extends ... implements ... { //{{{ Constants String bbAtomsNoCb = " N , CA , C , O "; //, HA "; // Pro doesn't have ' H ' String bbAtomsCb = " N , CA , C , O , CB ";//, HA "; // Pro doesn't have ' H ' DecimalFormat df = new DecimalFormat("###.###"); //}}} //{{{ Variable definitions //############################################################################## /** Output file containing res #'s, e.g. from Helix/SheetBuilder */ File resnumFile = null; /** Simple list of supplied PDB filenames, all of which should be aligned * onto the same reference structure and each of which may potentially contain * multiple N-caps, beta aromatics, or whatever the motif of interest may be */ ArrayList pdbFilenames = null; /** Links 4-character PDB ID codes to above PDB filenames */ TreeMap pdbidsToFilenames = null; /** Identity and coords for reference model(s), which will ultimately be modified * according to the coords in localCoords and output as the average structure */ Model refModel = null; ModelState refState = null; Model refModel2 = null; ModelState refState2 = null; double[] refCoords = null; // if applicable, has beta arom THEN opp, regardless of seq order /** Ensemble of (xyz)n vectors representing coords of local model+states. * Ultimately used to calculate average coords */ ArrayList localCoords = null; /** Single (xyz)n vector representing coords of average model+state and * corresponding std dev for each coordinate */ double[] avgCoords = null; double[] stdevs = null; /** Number of structures contributing to avgCoords */ int mdlCount = 0; /** Column in anglesFile containing res #. 0-indexed */ int resnumIdx = 2; int resnum2idx = Integer.MAX_VALUE; // NOTE: code associated with this variable // doesn't really work as advertised right now! /** Residue indices relative to the N-cap (helices) or the aromatic and its * opposite residue (sheet) for inclusion in the output coordinates */ int initIdx = -2; int finalIdx = 2; /** Maximum displacement for any one atom in the alignment for which we will * still consider the superposition good enough to use that structure in the * coordinate averaging */ double distCutoff = 2; /** List of atoms considered backbone & therefore used to get average structure. * Dependent on -cb. */ String bbAtoms = bbAtomsNoCb; boolean verbose = false; //}}} //{{{ Constructor(s) //############################################################################## public AvgStrucGenerator() { super(); pdbFilenames = new ArrayList(); localCoords = new ArrayList(); } //}}} //{{{ populatePdbidMap //############################################################################## /** * Links 4-character PDB ID's to actual filenames pointing to PDB files */ public void populatePdbidMap() { pdbidsToFilenames = new TreeMap(); try { Scanner s = new Scanner(resnumFile); while (s.hasNextLine()) { // "/localspace/neo500/Hoptimize/1a8dAH.pdb:helix from A 234 ASN to A 243 THR:Ncap A 234 ASN:117.362:119.372:94.484:96.115:112.275:108.998:112.512:-61.576:146.823:-89.646:165.213:-56.85:-30.271:2.148:1.737:5.318:3.803::i+3:GLU:2:3:" String line = s.nextLine(); // Get PDB ID int dotPdbIdx = line.indexOf(".pdb"); String pdbid = line.substring(dotPdbIdx-6, dotPdbIdx-2); // Find corresponding file and make the connection for (String pdbFilename : pdbFilenames) { // "/localspace/neo500/Hoptimize/1a8dAH.pdb" String[] levels = Strings.explode(pdbFilename, '/'); String filename = levels[levels.length-1]; // "1a8dAH.pdb" String pdbidInFilename = filename.substring(0,4); // "1a8d" if (pdbid.equals(pdbidInFilename)) pdbidsToFilenames.put(pdbid,pdbFilename); } } if (verbose) { for (Iterator iter = pdbidsToFilenames.keySet().iterator(); iter.hasNext(); ) { String id = (String) iter.next(); String filename = (String) pdbidsToFilenames.get(id); System.err.println(id+" --> "+filename); } } } catch (FileNotFoundException fnfe) { System.out.flush(); System.err.println("Trouble with a file in populatePdbidMap()"); } } //}}} //{{{ getLocalCoords //############################################################################## /** * Looks through lines of a file containing res #'s of interest and ends up * populating localCoords, an ArrayList of double[]'s. Each of those double[]'s * is an array of n(xyz) vectors representing multiple atoms and residues * comprising one local structure */ public void getLocalCoords() { try { Scanner s = new Scanner(resnumFile); while (s.hasNextLine()) { try { // "/localspace/neo500/Hoptimize/1a8dAH.pdb:helix from A 234 ASN to A 243 THR:Ncap A 234 ASN:117.362:119.372:94.484:96.115:112.275:108.998:112.512:-61.576:146.823:-89.646:165.213:-56.85:-30.271:2.148:1.737:5.318:3.803::i+3:GLU:2:3:" // "/localspace/neo500/Hoptimize/1a8dAH.pdb:A 91 PHE:PHE:A 171 ILE:ILE:4:3:2:4:111.19179555930297:4.323971397633469:-33.19818538964804:129.3644904319606:-158.23870442397526:143.89442845284785:124.97723272643277:18.604961060866437:109.33519492709395:24.209048379449346:23.51539906628312:-6.456628588536039:156.768185070337:" String line = s.nextLine(); // Get PDB ID and chain int dotPdbIdx = line.indexOf(".pdb"); String pdbid = line.substring(dotPdbIdx-6, dotPdbIdx-2); String chain = line.substring(dotPdbIdx-2, dotPdbIdx-1); // Get res #(s) int resnum = getResnum(line, resnumIdx); int resnum2 = Integer.MAX_VALUE; if (resnum2idx != Integer.MAX_VALUE) resnum2 = getResnum(line, resnum2idx); // assume same chain... String fn = pdbidsToFilenames.get(pdbid); if (fn != null) { // PDB file was provided for this entry in the input list, so let's go for it if (verbose) System.err.println("Finding coords for "+resnum+" in "+pdbid); // Get existing coords of entire structure PdbReader reader = new PdbReader(); File f = new File(fn); CoordinateFile cf = reader.read(f); Iterator models = cf.getModels().iterator(); Model m = (Model) models.next(); ModelState ms = m.getState(); // Make model+coords of local region Model localModel = new Model("local model "+pdbid+" "+resnum); ModelState localState = new ModelState(); // For a 2nd segment of seq, e.g. opp beta strand: Model localModel2 = (resnum2 == Integer.MAX_VALUE ? null : new Model("local model2 "+pdbid+" "+resnum2)); ModelState localState2 = (resnum2 == Integer.MAX_VALUE ? null : new ModelState()); for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) { Residue res = (Residue) ri.next(); int currResnum = res.getSequenceInteger(); if (res != null && chain.equals(res.getChain()) && (currResnum >= resnum+initIdx && currResnum <= resnum+finalIdx)) { // Add this residue to the local model+state if (verbose) System.err.println("... found "+res); for(Iterator ai = res.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); if (bbAtoms.indexOf(a.getName()) != -1) { if (!localModel.contains(res)) localModel.add(res); // may remove res from m, but that should be OK AtomState as = ms.get(a); localState.add(as); } } } else if (res != null && chain.equals(res.getChain()) && resnum2 != Integer.MAX_VALUE && (currResnum >= resnum2+initIdx && currResnum <= resnum2+finalIdx)) { // Add this residue to the local model+state if (verbose) System.err.println("... found "+res); for(Iterator ai = res.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); if (bbAtoms.indexOf(a.getName()) != -1) { if (!localModel2.contains(res)) localModel2.add(res); // may remove res from m, but that should be OK AtomState as = ms.get(a); localState2.add(as); } } } } // Do something with new local state if (refModel == null && refState == null) { // This is the new reference local state refModel = localModel; refState = localState; if (resnum2idx != Integer.MAX_VALUE) { refModel2 = localModel2; refState2 = localState2; } setRefCoords(); if (verbose) System.err.println("Setting "+localModel+ (resnum2idx != Integer.MAX_VALUE ? " and "+localModel2 : "") +" as reference"); } else { // Add this local state's coords to the growing list of n(xyz) vectors addToLocalCoords(localModel, localState, localModel2, localState2); } } } catch (ResidueException re) { System.err.println("Trouble with a residue in getLocalCoords()..."); } catch (AtomException ae) { System.err.println("Trouble with an atom in getLocalCoords()..."); } }// done w/ this local motif } catch (IOException ioe) { System.err.println("Trouble with I/O in getLocalCoords()..."); } } //}}} //{{{ getResnum //############################################################################## /** * Extracts residue # integer from a line of Helix-/SheetBuilder text output. */ public int getResnum(String line, int thisResnumIdx) { try { // "Ncap A 234 ASN", "Ncap A 19A ASN", "Ncap A 1069 ASP", etc. // "A 91 PHE" , "A 60 PHE" , "A 578 TYR" , etc. String[] tokens = Strings.explode(line, ':'); String token = tokens[thisResnumIdx]; int resnum = Integer.MAX_VALUE; String resnumString = null; if (token.startsWith("Ncap")) { // helix: "Ncap A 234 ASN" //resnumString = token.substring(token.length()-8, token.length()-4).trim(); resnumString = token.substring(6, token.length()-3).trim(); } else { // sheet: "A 91 PHE" resnumString = token.substring(1, token.length()-3).trim(); } try { resnum = Integer.parseInt(resnumString); } catch (NumberFormatException nfex) { resnum = Integer.parseInt(resnumString.substring(0,resnumString.length()-1)); } return resnum; } catch (NumberFormatException nfe) { System.err.println("Trouble with a number in getLocalCoords()..."); } return Integer.MAX_VALUE; } //}}} //{{{ addToLocalCoords //############################################################################## /** * For given local model+state, finds atoms corresponding to those in the * previously determined reference local model+state, then adds the new atoms' * coordinates to a growing list of n(xyz) vectors. Hopefully, the xyz triplets * will be added in the same atom-by-atom order each time this method is run * (i.e. for different local model+states vs. the same reference), which will * be necessary for making an average local structure! */ public void addToLocalCoords(Model localModel, ModelState localState, Model localModel2, ModelState localState2) { try { //{{{ Align residues by sequence // For now we just take all residues as they appear in the file, // without regard to chain IDs, etc. Alignment align = Alignment.needlemanWunsch(refModel.getResidues().toArray(), localModel.getResidues().toArray(), new SimpleResAligner()); if (verbose) { System.err.println("Residue alignments:"); for (int i = 0; i < align.a.length; i++) System.err.println(" "+align.a[i]+" <==> "+align.b[i]); } Alignment align2 = null; if (localModel2 != null && localState2 != null) { align2 = Alignment.needlemanWunsch(refModel2.getResidues().toArray(), localModel2.getResidues().toArray(), new SimpleResAligner()); if (verbose) { System.err.println("Residue2 alignments:"); for (int i = 0; i < align2.a.length; i++) System.err.println(" "+align2.a[i]+" <==> "+align2.b[i]); } } // Make sure the seq alignment(s) was/were "successful"... boolean alnmtsOK = true; for(int i = 0, len = align.a.length; i < len; i++) if (align.a[i] == null || align.b[i] == null) alnmtsOK = false; if (align2 != null) for(int i = 0, len = align2.a.length; i < len; i++) if (align2.a[i] == null || align2.b[i] == null) alnmtsOK = false; //}}} if (alnmtsOK) { ArrayList coords = new ArrayList(); //{{{ Add coords for stretch #1 for(int i = 0, len = align.a.length; i < len; i++) { Residue localRes = (Residue) align.b[i]; for(Iterator ai = localRes.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); if (bbAtoms.indexOf(a.getName()) != -1) { AtomState as = localState.get(a); coords.add(as.getX()); coords.add(as.getY()); coords.add(as.getZ()); } } } //}}} //{{{ Add coords for stretch #2 (opt'l) // Note that these coords will come after stretch #1's coords, // regardless of sequence! if (align2 != null) { for(int i = 0, len = align2.a.length; i < len; i++) { Residue localRes = (Residue) align2.a[i]; // Make ref xyz vector and store it for(Iterator ai = localRes.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); if (bbAtoms.indexOf(a.getName()) != -1) { AtomState as = localState2.get(a); coords.add(as.getX()); coords.add(as.getY()); coords.add(as.getZ()); } } } } //}}} double[] coordsArray = new double[coords.size()]; for (int j = 0; j < coords.size(); j++) coordsArray[j] = coords.get(j); localCoords.add(coordsArray); } else if(verbose) System.err.println("... bad alnmt => not using these coords for avg struc"); if(verbose) System.err.println(); } catch (AtomException ae) { System.err.println("Trouble with an atom in addToLocalCoords()..."); } } //}}} //{{{ setRefCoords //############################################################################## /** * Very similar to addToLocalCoords, but simply makes and stores an n(xyz) * vector for the reference model+state for later use */ public void setRefCoords() { try { //{{{ Align residues by sequence // For now we just take all residues as they appear in the file, // without regard to chain IDs, etc. Alignment align = Alignment.needlemanWunsch(refModel.getResidues().toArray(), refModel.getResidues().toArray(), new SimpleResAligner()); if (verbose) { System.err.println("setRefCoords residue alignments:"); for (int i = 0; i < align.a.length; i++) System.err.println(" "+align.a[i]+" <==> "+align.b[i]); } Alignment align2 = null; if (refModel2 != null) { align2 = Alignment.needlemanWunsch(refModel2.getResidues().toArray(), refModel2.getResidues().toArray(), new SimpleResAligner()); if (verbose) { System.err.println("setRefCoords residue2 alignments:"); for (int i = 0; i < align2.a.length; i++) System.err.println(" "+align2.a[i]+" <==> "+align2.b[i]); } } // Make sure the seq alignment(s) was/were "successful"... boolean alnmtsOK = true; for(int i = 0, len = align.a.length; i < len; i++) if (align.a[i] == null || align.b[i] == null) alnmtsOK = false; if (align2 != null) for(int i = 0, len = align2.a.length; i < len; i++) if (align2.a[i] == null || align2.b[i] == null) alnmtsOK = false; //}}} if (alnmtsOK) { ArrayList coords = new ArrayList(); //{{{ Add coords for stretch #1 for(int i = 0, len = align.a.length; i < len; i++) { Residue refRes = (Residue) align.a[i]; // Make ref xyz vector and store it for(Iterator ai = refRes.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); if (bbAtoms.indexOf(a.getName()) != -1) { AtomState as = refState.get(a); coords.add(as.getX()); coords.add(as.getY()); coords.add(as.getZ()); } } } //}}} //{{{ Add coords for stretch #2 (opt'l) // Note that these coords will come after stretch #1's coords, // regardless of sequence! if (align2 != null) { for(int i = 0, len = align2.a.length; i < len; i++) { Residue refRes = (Residue) align2.a[i]; // Make ref xyz vector and store it for(Iterator ai = refRes.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); if (bbAtoms.indexOf(a.getName()) != -1) { AtomState as = refState2.get(a); coords.add(as.getX()); coords.add(as.getY()); coords.add(as.getZ()); } } } } //}}} // Add coords for local residues' atoms to growing ensemble of n(xyz) vectors refCoords = new double[coords.size()]; for (int i = 0; i < coords.size(); i++) refCoords[i] = coords.get(i); } else if(verbose) System.err.println("... bad alnmt during setRefCoords"); if(verbose) System.err.println(); } catch (AtomException ae) { System.err.println("Trouble with an atom in setRefCoords..."); } } //}}} //{{{ averageCoords //############################################################################## /** * The first time this method is called (recognized b/c avgCoords is null), * it averages the coordinates of structures that are not incomplete from * localCoords. The second time it's run, it re-averages after eliminating * structures that have at least one atoms that's too far from its previously * determined average position */ public void averageCoords() { System.err.println("localCoords.size() "+localCoords.size()); System.err.println("pdbFilenames.size() "+pdbFilenames.size()); System.err.println("equal? "+(localCoords.size() == pdbFilenames.size())); //System.exit(1); // Get sums and counts for calc'ing averages int numXYZs = 3 * (Strings.explode(bbAtoms,',')).length * (finalIdx-initIdx+1); if (resnum2idx != Integer.MAX_VALUE) numXYZs *= 2; double[] sums = new double[numXYZs]; for (int i = 0; i < numXYZs; i++) sums[i] = 0.0; mdlCount = 0; TreeSet idxsToKeep = new TreeSet(); for (int i = 0; i < localCoords.size(); i++) { // x1 y1 z1 x2 y2 z2 ... double[] nXYZvector = localCoords.get(i); if (nXYZvector.length == numXYZs && !tooFarAway(nXYZvector)) { // Acceptable contributor to avg struc idxsToKeep.add(i); for (int j = 0; j < nXYZvector.length; j++) sums[j] = sums[j] + nXYZvector[j]; mdlCount++; if (verbose) { System.err.print("contrib struc "+mdlCount); if (avgCoords == null) System.err.print(": "); else System.err.print(" (close enough): "); for (int j = 0; j < nXYZvector.length; j++) System.err.print(df.format(nXYZvector[j])+","); System.err.println(); } } else System.err.println(nXYZvector+" too far away or not right length ("+ nXYZvector.length+" instead of "+numXYZs+")"); } ArrayList tempLocalCoords = new ArrayList(); for (int i = 0; i < localCoords.size(); i++) { if (idxsToKeep.contains(i)) tempLocalCoords.add(localCoords.get(i)); } localCoords = tempLocalCoords; System.err.println("# contributors to average structure: "+mdlCount); // Average the coordinates avgCoords = new double[numXYZs]; for (int i = 0; i < numXYZs; i++) avgCoords[i] = sums[i] / (1.0*mdlCount); if (verbose) { System.err.println("# entries per n(xyz) vector: "+avgCoords.length); System.err.print("avg coords: "); for (int i = 0; i < avgCoords.length; i++) { if (i%3 == 0) System.err.print(df.format(avgCoords[i])+" "); else System.err.print(df.format(avgCoords[i])+", "); } System.err.println(); } // Also get standard deviations of coordinates stdevs = new double[numXYZs]; for (int i = 0; i < numXYZs; i++) stdevs[i] = 0.0; mdlCount = 0; for (double[] nXYZvector : localCoords) { // x1 y1 z1 x2 y2 z2 ... if (nXYZvector.length == numXYZs) { for (int i = 0; i < nXYZvector.length; i++) stdevs[i] = stdevs[i] + Math.pow(nXYZvector[i]-avgCoords[i], 2); mdlCount++; } } for (int i = 0; i < numXYZs; i++) stdevs[i] = Math.sqrt(stdevs[i] / (1.0*mdlCount)); } //}}} //{{{ tooFarAway //############################################################################## /** * Tells if a potentially contributing structure in the form of an n(xyz) * vector is too far away from the main ensemble (defined as 2 Angstroms * [formerly 2sigmas] in Cartesian space for any one of the bb heavy atoms * in the current *average* coords). * If avgCoords not yet defined, eliminates this n(xyz) vector if any of its * atoms are more than 2 Angstroms from the *reference* n(xyz) vector; this * eliminates input PDBs that are very poorly aligned and off in space some- * where. */ public boolean tooFarAway(double[] nXYZvector) { //{{{ [unused] //if (avgCoords == null || stdevs == null) //{ // if (verbose) System.err.println("1st averageCoords run => " // +"can't say whether "+nXYZvector+" is too far from avg"); // return false; //} //}}} if (avgCoords == null) { for (int i = 0; i < nXYZvector.length; i++) { if (Math.abs(nXYZvector[i]-refCoords[i]) > distCutoff) { if (verbose) System.err.println(df.format(nXYZvector[i]) +" too far away from ref: "+df.format(refCoords[i])); return true; } } if (verbose) System.err.println(nXYZvector+" not too far from ref"); return false; } else { for (int i = 0; i < nXYZvector.length; i++) { if (Math.abs(nXYZvector[i]-avgCoords[i]) > 2)//Math.abs(2*stdevs[i])) { if (verbose) System.err.println(df.format(nXYZvector[i]) +" too far away from avg: "+df.format(avgCoords[i])); return true; } } if (verbose) System.err.println(nXYZvector+" not too far from avg"); return false; } } //}}} //{{{ printAvgStruc //############################################################################## /** * The method name says it all! */ public void printAvgStruc() { try { // Make new average model+state (containing only certaina atom types) Model avgModel = new Model("avg model"); ModelState avgState = new ModelState(); int count = 0; for(Iterator ri = refModel.getResidues().iterator(); ri.hasNext(); ) { Residue res = (Residue) ri.next(); for(Iterator ai = res.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); if (bbAtoms.indexOf(a.getName()) != -1) { AtomState as = refState.get(a); double pseudoB = 0; as.setX(avgCoords[count]); pseudoB += stdevs[count]; count++; as.setY(avgCoords[count]); pseudoB += stdevs[count]; count++; as.setZ(avgCoords[count]); pseudoB += stdevs[count]; count++; // average (of x,y,&z) stdev for this atom -- rough estimate of confidence in its position pseudoB /= 3.0; as.setTempFactor(pseudoB); as.setOccupancy(1.0); if (!avgModel.contains(res)) avgModel.add(res); // may remove res from refModel, but that should be OK avgState.add(as); } } } // Print out new average model+state as a PDB if (verbose) System.err.println("Printing average structure..."); System.out.println("USER MOD "+mdlCount+" contributing structures"); PdbWriter pdbWriter = new PdbWriter(System.out); pdbWriter.writeResidues(avgModel.getResidues(), avgState); pdbWriter.close(); } catch (ResidueException re) { System.err.println("Trouble with a residue in printAvgStruc()..."); } catch (AtomException ae) { System.err.println("Trouble with an atom in printAvgStruc()..."); } } //}}} //{{{ CLASS: SimpleResAligner //############################################################################## static class SimpleResAligner implements Alignment.Scorer { // High is good, low is bad. public double score(Object a, Object b) { Residue r = (Residue) a; Residue s = (Residue) b; if(r == null || s == null) return -1; // gap else if(r.getName().equals(s.getName())) return 2; // match else return 0; // mismatch } public double open_gap(Object a) { return extend_gap(a); } public double extend_gap(Object a) { return score(a, null); } } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { if (resnumFile == null) { System.err.println("Need a file supplying res #'s!"); System.exit(0); } populatePdbidMap(); getLocalCoords(); // 1) let all structures with correct # atoms contribute (if <= 2 Ang from ref) averageCoords(); //// 2) eliminate structures too far from ^avg and re-calculate //averageCoords(); printAvgStruc(); } public static void main(String[] args) { AvgStrucGenerator mainprog = new AvgStrucGenerator(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("AvgStrucGenerator.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'AvgStrucGenerator.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.AvgStrucGenerator"); System.err.println("Copyright (C) 2008 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if (resnumFile == null) resnumFile = new File(arg); else pdbFilenames.add(arg); //else throw new IllegalArgumentException("Error handling file "+arg+"!"); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } if(flag.equals("-verbose") || flag.equals("-v")) { verbose = true; } else if(flag.equals("-range")) { Scanner s = new Scanner(param).useDelimiter(","); int idx1 = 999, idx2 = 999; while (s.hasNext()) { String token = s.next(); int tokenInt = Integer.parseInt(token); if (idx1 == 999) idx1 = tokenInt; else if (idx2 == 999) idx2 = tokenInt; else System.err.println("Wrong format: should be -range=#,#"); } if (idx1 != 999 && idx2 != 999) { initIdx = idx1; finalIdx = idx2; } else System.err.println("Wrong format: should be -range=#,#"); } else if(flag.equals("-residx")) { try { resnumIdx = Integer.parseInt(param); } catch (NumberFormatException nfe) { System.err.println("Couldn't parse "+param+" as an integer for resnumIdx"); } } else if(flag.equals("-res2idx")) { try { resnum2idx = Integer.parseInt(param); } catch (NumberFormatException nfe) { System.err.println("Couldn't parse "+param+" as an integer for resnum2idx"); } System.err.println("Warning: -res2idx=# doesn't work quite right!"); } else if(flag.equals("-distcutoff")) { try { distCutoff = Double.parseDouble(param); } catch (NumberFormatException nfe) { System.err.println("Couldn't parse "+param+" as a double for distCutoff"); } } else if(flag.equals("-cb")) { bbAtoms = bbAtomsCb; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/Peptide.java0000644000000000000000000000577711531212724022142 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * Peptide is a data structure for building up beta-sheet descriptions. * At the moment, all fields are public and written to directly. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Tue Mar 30 10:45:56 EST 2004 */ public class Peptide //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## /** Residues before and after this peptide. One may be null. */ public Residue cRes, nRes; /** The midpoint of the two C-alphas at the ends of this peptide. Never null. */ public Triple midpoint; /** The peptides before and after this one in a connected chain. May be null. */ public Peptide prev = null, next = null; /** The peptides to which this one is H-bonded thru its N and O atoms. May be null. */ public Peptide hbondN = null, hbondO = null; /** Whether or not this peptide can be considered to be in a beta sheet. */ public boolean isBeta = false; /** Whether this strand is parallel to its two H-bonded neighbors. */ public boolean isParallelN = false, isParallelO = false; /** Whether or not this peptide can be considered to be in an alpha helix. */ public boolean isHelix = false; /** The index of this chain, and the index of this peptide within it. -1 by default. */ int chain = -1, index = -1; /** Psi of the 1st ("N-ward") residue and phi of the second ("C-ward") residue. * Careful! This convention is opposite to that of cRes vs. nRes! */ double psiN = Double.NaN, phiC = Double.NaN; //}}} //{{{ Constructor(s) //############################################################################## /** * @throws AtomException if cRes or nRes is not null and missing a C-alpha */ public Peptide(Residue cRes, Residue nRes, ModelState state) throws AtomException { super(); this.nRes = nRes; this.cRes = cRes; if(cRes == null) midpoint = new Triple(state.get(nRes.getAtom(" N "))); else if(nRes == null) midpoint = new Triple(state.get(cRes.getAtom(" C "))); else { AtomState nca = state.get(nRes.getAtom(" CA ")); AtomState cca = state.get(cRes.getAtom(" CA ")); midpoint = new Triple().likeMidpoint(nca, cca); } } //}}} //{{{ toString //############################################################################## public String toString() { return "peptide from "+cRes+" to "+nRes; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/Suppose.java0000644000000000000000000010323411531212724022171 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * Suppose generates kinemages with lots of information * that is helpful for superimposing two protein structures, * including a standard difference-distance map, * unsigned-sum and vector difference-distance plots, * a Lesk plot, and LSQMAN commands to transform one PDB onto the other. * *

Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
Begun on Tue Sep 9 08:48:55 EDT 2003 */ public class Suppose //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Model model1 = null; Model model2 = null; AtomState[] ca1 = null; AtomState[] ca2 = null; String[] labels = null; final int nIter = 7; Triple[][] vdd12 = null; Triple[][] vdd21 = null; double[][] vdd_w = null; double[][] usdd = null; int nResToSuperpos = -1; double fracToSuperpos = -1; File file1 = null, file2 = null; InputStream input1 = null, input2 = null; PrintStream output = System.out; //}}} //{{{ Constructor(s) //############################################################################## public Suppose() { super(); } //}}} //{{{ computeUSDD //############################################################################## /** * Calculates the (weighted) unsigned-sum difference distance * for each point in m1 against all the points in m2. * This operation *is* symmetric/commutative: usdd(m1, m2) == usdd(m2, m1) * @throws IllegalArgumentException if m1, m2, and/or w are of different lengths. */ static public double[] computeUSDD(Triple[] m1, Triple[] m2, double[] w) { // Check inputs if(m1.length != m2.length || m1.length != w.length) throw new IllegalArgumentException("Lengths of inputs must match"); // Define variables int i, j; // for iteration int len = m1.length; // number of points double diffdist; // difference in distance double weight; // weight for length, from w[] // offsets for output double[] off = new double[len]; for(i = 0; i < len; i++) off[i] = 0.0; // Iterate over all points in m1 for(i = 0; i < len; i++) { // Iterate over all points in m2 for(j = 0; j < len; j++) { diffdist = m1[i].distance(m1[j]) - m2[i].distance(m2[j]); weight = w[i] / (w[i] + w[j]); // raw weight off[i] += Math.abs(weight*diffdist); } // average movement, adjusted to be comparable to VDD mag. off[i] *= 2.5/len; } return off; } //}}} //{{{ computeVDD //############################################################################## /** * For each point i in m1, the difference in i-to-j distance between m1 and m2 * is computed and projected as a vector along the i-j bond (for all j from 1 to N); * these vectors are summed. * The sum is weighted such that the contribution of the i-to-j signal * is Wi/(Wi+Wj) for i and Wj/(Wi+Wj) for j. * All results are scaled by 3/N to give approximately correct lengths as well. * *

This algorithm requires O(N^2) time and O(N) memory. * * @param m1 the first set of points (Model 1) * @param m2 the second set of points * @param w a set of per-point weights * @throws IllegalArgumentException if m1, m2, and/or w are of different lengths. */ static public Triple[] computeVDD(Triple[] m1, Triple[] m2, double[] w) { // Check inputs if(m1.length != m2.length || m1.length != w.length) throw new IllegalArgumentException("Lengths of inputs must match"); // Define variables int i, j; // for iteration int len = m1.length; // number of points Triple t = new Triple(); // working register double diffdist; // difference in distance double weight; // weight for vector from w[] // offset vectors for output Triple[] off = new Triple[len]; for(i = 0; i < len; i++) off[i] = new Triple(0,0,0); // Iterate over all points in m1 for(i = 0; i < len; i++) { // Iterate over all points in m2 for(j = 0; j < len; j++) { diffdist = m1[i].distance(m1[j]) - m2[i].distance(m2[j]); weight = w[i] / (w[i] + w[j]); // raw weight t.likeVector(m1[i], m1[j]); // from i to j t.unit().mult(weight*diffdist); // length = weight*diffdist off[i].add(t); // sum up for point i } off[i].mult(3.0/len); // approximates correct length } return off; } //}}} //{{{ kin3dVDD //############################################################################## /** * Write out the kinemage-format points of a @vectorlist to display * the results of the VDD calculation. * This function does not write the actual @vectorlist line, but * only the point definitions following it. * @throws IllegalArgumentException if m1 and off are of different lengths. */ static public void kin3dVDD(OutputStream out, Triple[] m1, Triple[] off) { kin3dVDD(new OutputStreamWriter(out), m1, off); } static public void kin3dVDD(Writer w, Triple[] m1, Triple[] off) { PrintWriter out = new PrintWriter(w); DecimalFormat df = new DecimalFormat("0.0###"); Triple t = new Triple(); if(m1.length != off.length) throw new IllegalArgumentException("Lengths of inputs must match"); for(int i = 0; i < m1.length; i++) { t.like(m1[i]); out.print("{}P "+df.format(t.getX())+" "+df.format(t.getY())+" "+df.format(t.getZ())); t.add(off[i]); out.println("{} "+df.format(t.getX())+" "+df.format(t.getY())+" "+df.format(t.getZ())); } out.flush(); } //}}} //{{{ kin2dStdDD //############################################################################## /** * Write out the kinemage-format points of a @vectorlist to display * the results of the standard difference-distance calculation. * The result is a 3-D bar chart of vector magnitudes, with the pointIDs * taken from the toString() method of objects in m1[] and m2[]. * This function does not write the actual @vectorlist line, but * only the point definitions following it. * @throws IllegalArgumentException if m1 and off are of different lengths. */ static public void kin2dStdDD(OutputStream out, Triple[] m1, Triple[] m2, String[] labels) { kin2dStdDD(new OutputStreamWriter(out), m1, m2, labels); } static public void kin2dStdDD(Writer w, Triple[] m1, Triple[] m2, String[] labels) { PrintWriter out = new PrintWriter(w); DecimalFormat df = new DecimalFormat("0.0###"); if(m1.length != m2.length || m1.length != labels.length) throw new IllegalArgumentException("Lengths of inputs must match"); double[] levels = {-1, 0.025, 0.050, 0.075, 0.100, 0.200, 0.300, 0.600, 1.0, 1.5, 2.0, 3.5, 5.0, Double.POSITIVE_INFINITY}; String[] colors = {"gray", "purple", "blue", "sky", "cyan", "sea", "green", "lime", "yellow", "gold", "orange", "red", "hotpink"}; String color = "deadwhite"; double diffdist; for(int i = 0; i < m1.length; i++) { for(int j = 0; j < m2.length; j++) { diffdist = Math.abs(m1[i].distance(m1[j]) - m2[i].distance(m2[j])); for(int k = 0; diffdist > levels[k]; k++) color = colors[k]; out.println("{"+df.format(diffdist)+": "+labels[i]+","+labels[j]+"}P " +color+" "+df.format(i)+" "+df.format(j)+" 0.0"); } } out.flush(); } //}}} //{{{ kin1dVDD //############################################################################## /** * Write out the kinemage-format points of a @vectorlist to display * the results of the VDD calculation. * The result is bar chart of vector magnitudes, with the pointIDs * taken from the toString() method of objects in m1[]. * This function does not write the actual @vectorlist line, but * only the point definitions following it. * @throws IllegalArgumentException if m1 and off are of different lengths. */ static public void kin1dVDD(OutputStream out, String[] labels, double[] off, double zDepth) { kin1dVDD(new OutputStreamWriter(out), labels, off, zDepth); } static public void kin1dVDD(Writer w, String[] labels, double[] off, double zDepth) { PrintWriter out = new PrintWriter(w); DecimalFormat df = new DecimalFormat("0.0###"); if(labels.length != off.length) throw new IllegalArgumentException("Lengths of inputs must match"); for(int i = 0; i < labels.length; i++) { out.print("{"+labels[i]+"}P "+df.format(0.2*i)+" 0.0 "+df.format(zDepth)); out.println("{\"} "+df.format(0.2*i)+" "+df.format(off[i])+" "+df.format(zDepth)); } out.flush(); } //}}} //{{{ sortByDD, CLASS: SortItem //############################################################################## /** Container for sorting vector difference distances by magnitude */ static public class SortItem implements Comparable { public Tuple3 ca1, ca2; public double score; // either diff-dist or rmsd public String label; public SortItem(Tuple3 ca1, Tuple3 ca2, double s, String lbl) { this.ca1 = ca1; this.ca2 = ca2; score = s; label = lbl; } public int compareTo(Object o) { SortItem that = (SortItem)o; // Sort greatest to least if(this.score > that.score) return -1; else if(this.score < that.score) return 1; else return 0; } } /** * Returns an array of sorted items with the point with the greatest * vector difference distance at the front. */ static public SortItem[] sortByDD(Tuple3[] m1, Tuple3[] m2, double[] diffdist, String[] labels) { if(m1.length != m2.length || m1.length != diffdist.length) throw new IllegalArgumentException("Lengths of inputs must match"); SortItem[] toSort = new SortItem[m1.length]; for(int i = 0; i < m1.length; i++) { toSort[i] = new SortItem(m1[i], m2[i], diffdist[i], labels[i]); } Arrays.sort(toSort); return toSort; } //}}} //{{{ sortByLeskSieve //############################################################################## /** * Applies Lesk's "sieve" method for selecting an optimal set * of C-alphas to superimpose. * A least-squares fit is applied over all points, and the rmsd (=score) * and worst-fitting pair are entered as a SortItem at the front of the array. * The worst pair is then removed from the set being fit, the fit is repeated, * and the new rmsd and worst pair are entered in the second array position. * This is repeated until all points have been processed. */ static public SortItem[] sortByLeskSieve(Tuple3[] m1, Tuple3[] m2, String[] labels) { int i, len = m1.length; // We're going to screw up the order of these arrays // as we "sieve" out the worst-fitting pairs. Tuple3[] sm1 = new Tuple3[m1.length]; Tuple3[] sm2 = new Tuple3[m2.length]; String[] slabels = new String[labels.length]; for(i = 0; i < len; i++) { sm1[i] = m1[i]; sm2[i] = m2[i]; slabels[i] = labels[i]; } // More variables we'll need SortItem[] sorted = new SortItem[len]; SuperPoser sp = new SuperPoser(sm1, sm2); Triple t = new Triple(); Transform R; double rmsd, gap2, worstGap2; int worstIndex; Tuple3 mSwap; String lSwap; for( ; len > 0; len--) { sp.reset(sm1, 0, sm2, 0, len); R = sp.superpos(); rmsd = sp.calcRMSD(R); //rmsd = sp.calcRMSD(R) / Math.sqrt(len); // from Gerstein & Altman 1995 JMB: rmsd grows as square of # of atoms // Find worst-fitting pair worstIndex = -1; worstGap2 = -1; for(i = 0; i < len; i++) { R.transform(sm2[i], t); gap2 = t.sqDistance(sm1[i]); if(gap2 > worstGap2) { worstGap2 = gap2; worstIndex = i; } } // Enter worst pair at front of list sorted[ sorted.length - len ] = new SortItem( sm1[worstIndex], sm2[worstIndex], rmsd, slabels[worstIndex]); // Swap worst pair to back of list mSwap = sm1[len-1]; sm1[len-1] = sm1[worstIndex]; sm1[worstIndex] = mSwap; mSwap = sm2[len-1]; sm2[len-1] = sm2[worstIndex]; sm2[worstIndex] = mSwap; lSwap = slabels[len-1]; slabels[len-1] = slabels[worstIndex]; slabels[worstIndex] = lSwap; } return sorted; } //}}} //{{{ loadModel, loadAtomStates //############################################################################## Model loadModel(InputStream in) throws IOException { if(in == null) throw new IllegalArgumentException("Must supply two input files"); // Load model group from PDB files PdbReader pdbReader = new PdbReader(); CoordinateFile cf = pdbReader.read(in); return cf.getFirstModel(); } AtomState[] loadAtomStates(Model m) { // Extract the C-alphas Collection res = m.getResidues(); ModelState state = m.getState(); ArrayList atoms = new ArrayList(); for(Iterator iter = res.iterator(); iter.hasNext(); ) { Residue r = (Residue)iter.next(); Atom a = r.getAtom(" CA "); try { if(a != null) atoms.add(state.get(a)); } catch(AtomException ex) { ex.printStackTrace(); } } // Make them into an array AtomState[] ca = (AtomState[])atoms.toArray(new AtomState[atoms.size()]); return ca; } //}}} //{{{ makeLsqman, printRes //############################################################################## public String makeLsqman(SortItem[] sorted, int firstN) { int i; int numRes = firstN; int offset = sorted.length - numRes; Residue[] res1 = new Residue[numRes]; Residue[] res2 = new Residue[numRes]; // Put the best fraction of residues into res, // then sort them into their natural order. for(i = 0; i < numRes; i++) { res1[i] = ((AtomState)sorted[i+offset].ca1).getResidue(); res2[i] = ((AtomState)sorted[i+offset].ca2).getResidue(); } Arrays.sort(res1); Arrays.sort(res2); StringBuffer sb1 = new StringBuffer(); StringBuffer sb2 = new StringBuffer(); Residue firstRes = res1[0]; Residue lastRes = res1[0]; sb1.append(printRes(res1[0], true)); sb2.append(printRes(res2[0], true)); for(i = 1; i < numRes; i++) { if(res1[i] != lastRes.getNext(model1)) { if(lastRes != firstRes) sb1.append('-').append(printRes(lastRes, false)); sb1.append(' '); firstRes = res1[i]; sb1.append(printRes(res1[i], true)); sb2.append(' '); sb2.append(printRes(res2[i], true)); } lastRes = res1[i]; } if(lastRes != firstRes) sb1.append('-').append(printRes(lastRes, false)); return "ex m1 \""+sb1+"\" m2 \""+sb2+"\""; } static public String printRes(Residue r, boolean useChainID) { StringBuffer sb = new StringBuffer(); if(useChainID && !" ".equals(r.getChain())) sb.append(r.getChain()); sb.append(r.getSequenceNumber()); if(! " ".equals(r.getInsertionCode())) sb.append(r.getInsertionCode()); return sb.toString(); } //}}} //{{{ plotDiffDist //############################################################################## void plotDiffDist() { int i; DecimalFormat df = new DecimalFormat("0.0###"); // Kinemage 1 - the color-coded, standard difference distance plot AtomState[] sca1 = new AtomState[ca1.length]; AtomState[] sca2 = new AtomState[ca2.length]; String[] slabels = new String[labels.length]; output.println("@kinemage 1"); output.println("@title {std diff dist}"); output.println("@group {unsorted} dominant"); output.println("@subgroup {diff dist}"); output.println("@balllist {diff dist} nohighlight radius= 0.45"); kin2dStdDD(output, ca1, ca2, labels); /* SortItem[] sorted; StringBuffer lsqmanZones = new StringBuffer(); // Sorted by iterative USDD sorted = sortByDD(ca1, ca2, usdd[nIter], labels); for(i = 0; i < sorted.length; i++) { sca1[i] = (AtomState)sorted[i].ca1; sca2[i] = (AtomState)sorted[i].ca2; slabels[i] = sorted[i].label; } // Calculate RMSD for selected subset of atoms double[] w = new double[nResToSuperpos]; for(i = 0; i < w.length; i++) w[i] = 1.0; int off = sorted.length - nResToSuperpos; SuperPoser sp = new SuperPoser(sca1, off, sca2, off, nResToSuperpos); Transform R = sp.superpos(w); double rmsd = sp.calcRMSD(R, w); output.println("@group {sorted, iwusdd} dominant animate"); output.println("@subgroup {diff dist}"); output.println("@balllist {diff dist} nohighlight radius= 0.45"); kin2dStdDD(output, sca1, sca2, slabels); lsqmanZones.append("Ca RMSD for IWUSDD = "+df.format(rmsd)+"\n"); lsqmanZones.append("Selection covers "+nResToSuperpos+" residues (" +Math.round(100.0*nResToSuperpos/ca1.length)+"%)\n"); lsqmanZones.append(makeLsqman(sorted, nResToSuperpos)+"\n\n\n"); output.println("@text"); output.println("LSQMAN script:"); output.println("chain_mode original"); output.println("hydrogens keep"); output.println("hetatm keep"); output.println("atom_types ca"); output.println("read m1 "+file1); output.println("read m2 "+file2); output.println("### 'ex' line from below goes here ###"); output.println("apply_operator m1 m2"); output.println("write m2 superpos"+file2+"\n\n\n"); output.println(lsqmanZones.toString()); */ } //}}} //{{{ plotMagnitudes //############################################################################## void plotMagnitudes() { int i; // Kinemage 2 - the bar chart of vector magnitudes output.println("@kinemage 2"); output.println("@title {per-res DD}"); for(i = 0; i < nIter; i++) { output.println("@group {rd "+i+"} dominant animate"); output.println("@subgroup {iterative-weighted}"); output.println("@vectorlist {vdd-average (1->2, 2->1)} off master= {vector} color= red"); kin1dVDD(output, labels, vdd_w[i+1], (i+1)/10.0); output.println("@vectorlist {2.5*av unsigned sum} master= {unsigned sum} color= yellow"); kin1dVDD(output, labels, usdd[i+1], -(i+1)/10.0); } } //}}} //{{{ plotVectors3D //############################################################################## void plotVectors3D() { int i; // Kinemage 3 - the 3-D plot of vectors on structures output.println("@kinemage 3"); output.println("@title {vector DD}"); for(i = 0; i < nIter; i++) { output.println("@group {rd "+i+"} dominant animate"); output.println("@subgroup {iterative-weighted}"); output.println("@vectorlist {1->2} color= magenta master= {1->2}"); kin3dVDD(output, ca1, vdd12[i]); output.println("@vectorlist {2->1} color= magenta master= {2->1}"); kin3dVDD(output, ca2, vdd21[i]); } } //}}} //{{{ plotLesk //############################################################################## void plotLesk() { int i, len = ca1.length; DecimalFormat df = new DecimalFormat("0.0###"); // Perform the Lesk sieve and IWUSDD sort SortItem[] sortedL = sortByLeskSieve(ca1, ca2, labels); SortItem[] sortedD = sortByDD(ca1, ca2, usdd[nIter], labels); AtomState[] sca1 = new AtomState[len]; AtomState[] sca2 = new AtomState[len]; String[] slabels = new String[len]; for(i = 0; i < len; i++) { sca1[i] = (AtomState)sortedD[i].ca1; sca2[i] = (AtomState)sortedD[i].ca2; slabels[i] = sortedD[i].label; } // Calculate RMSD for selected subset of atoms // We'll use these in a minute to get rmsd for all IWUSDD subsets int off = len - nResToSuperpos; SuperPoser sp = new SuperPoser(sca1, off, sca2, off, nResToSuperpos); Transform R = sp.superpos(); double rmsd = sp.calcRMSD(R); // Kinemage 4 - the Lesk plot of RMSD vs. # of residues included output.println("@kinemage 4"); output.println("@title {Lesk plot}"); output.println("@text"); output.println("LSQMAN script:"); output.println("chain_mode original"); output.println("hydrogens keep"); output.println("hetatm keep"); output.println("atom_types ca"); output.println("read m1 "+file1); output.println("read m2 "+file2); output.println("### 'ex' line from below goes here ###"); output.println("apply_operator m1 m2"); output.println("write m2 superpos"+file2); output.println(); output.println(); output.println("Ca RMSD for Lesk's sieve = " +df.format(sortedL[sortedL.length-nResToSuperpos].score)); output.println("Selection covers "+nResToSuperpos+" residues (" +Math.round(100.0*nResToSuperpos/ca1.length)+"%)"); output.println(makeLsqman(sortedL, nResToSuperpos)); output.println(); output.println(); output.println("Ca RMSD for IWUSDD = "+df.format(rmsd)); output.println("Selection covers "+nResToSuperpos+" residues (" +Math.round(100.0*nResToSuperpos/ca1.length)+"%)"); output.println(makeLsqman(sortedD, nResToSuperpos)); /* Output of all atoms and RMSDs for Lesk's sieve * / for(i = 0 ; i < len; i++) { SortItem si = sortedL[i]; output.println("rmsd "+df.format(si.score)+" for "+(len-i)+" res; worst="+si.label); } /* Output of all atoms and RMSDs for Lesk's sieve */ // Figure horizontal spacing to give square plot double hspace = sortedL[0].score / len; output.println("@vectorlist {IWUSDD vs. rmsd} color= sky"); for(i = 0; i < len; i++) { sp.reset(sca1, i, sca2, i, len-i); R = sp.superpos(); rmsd = sp.calcRMSD(R); SortItem si = sortedD[i]; output.println("{rmsd "+df.format(rmsd)+" for "+(len-i)+" res; worst="+si.label+"} " +df.format((len-i-1)*hspace)+" "+df.format(rmsd)+" 0.0"); } output.println("@vectorlist {Lesk plot} color= sea"); for(i = 0; i < len; i++) { SortItem si = sortedL[i]; output.println("{rmsd "+df.format(si.score)+" for "+(len-i)+" res; worst="+si.label+"} " +df.format((len-i-1)*hspace)+" "+df.format(si.score)+" 0.0"); } // Simple axes output.println("@vectorlist {axes} color= white"); output.println("{} 0 0 0 {} "+df.format(i*hspace)+" 0 0 {} " +df.format(i*hspace)+" "+df.format(sortedL[0].score)+" 0"); } //}}} //{{{ initData //############################################################################## void initData() throws IOException { // Make arrays of C-alphas from input PDB files model1 = loadModel(input1); ca1 = loadAtomStates(model1); model2 = loadModel(input2); ca2 = loadAtomStates(model2); if(ca1.length != ca2.length) throw new IllegalArgumentException("Selections must have same number of C-alphas"); // Get residue names out int i, j; labels = new String[ca1.length]; for(i = 0; i < ca1.length; i++) labels[i] = ca1[i].getResidue().toString(); // Calculate iterative rounds of both vector diff dists // starting from a flat initial weighting. vdd12 = new Triple[nIter][]; vdd21 = new Triple[nIter][]; vdd_w = new double[nIter+1][ca1.length]; // weights for(i = 0; i < vdd_w[0].length; i++) vdd_w[0][i] = 1.0; // all start at 1 for(i = 0; i < nIter; i++) { // Compute vdd vdd12[i] = computeVDD(ca1, ca2, vdd_w[i]); vdd21[i] = computeVDD(ca2, ca1, vdd_w[i]); // Compute a new set of weights from the average length of vdd12 and vdd21 for(j = 0; j < vdd_w[i+1].length; j++) vdd_w[i+1][j] = (vdd12[i][j].mag() + vdd21[i][j].mag()) / 2.0; } // Calculate the same thing for the unsigned-sum diff dist usdd = new double[nIter+1][ca1.length]; // weights for(i = 0; i < usdd[0].length; i++) usdd[0][i] = 1.0; // all start at 1 for(i = 0; i < nIter; i++) { usdd[i+1] = computeUSDD(ca1, ca2, usdd[i]); } // Establish number of residues to be used for superpositioning if(fracToSuperpos > 0) { if(fracToSuperpos > 1 && fracToSuperpos <= 100) // specified as a percentage nResToSuperpos = (int)Math.round(fracToSuperpos/100.0 * ca1.length); else if(fracToSuperpos <= 1) // specified as a fraction nResToSuperpos = (int)Math.round(fracToSuperpos * ca1.length); } if(nResToSuperpos < 3) nResToSuperpos = ca1.length; //(int)Math.round(0.666667*ca1.length); } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { initData(); plotDiffDist(); plotMagnitudes(); plotVectors3D(); plotLesk(); try { input1.close(); } catch(IOException ex) {} try { input2.close(); } catch(IOException ex) {} output.close(); } public static void main(String[] args) { Suppose mainprog = new Suppose(); try { mainprog.showHelp(false); mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } catch(IOException ex) { ex.printStackTrace(); System.err.println(); System.err.println("*** I/O error: "+ex.getMessage()); System.exit(2); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("Suppose.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'Suppose.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.Suppose"); System.err.println("Copyright (C) 2003 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here File f = new File(arg); try { if(f.exists()) { if(input1 == null) { file1 = f; input1 = new BufferedInputStream(new FileInputStream(f)); } else if(input2 == null) { file2 = f; input2 = new BufferedInputStream(new FileInputStream(f)); } else output = new PrintStream(new BufferedOutputStream(new FileOutputStream(f))); } else if(input1 != null && input2 != null) output = new PrintStream(new BufferedOutputStream(new FileOutputStream(f))); else System.err.println("*** WARNING: file '"+f+"' was not found"); } catch(IOException ex) { ex.printStackTrace(); System.err.println("*** WARNING: file '"+f+"' was not found"); } } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-n")) { try { nResToSuperpos = Integer.parseInt(param); } catch(NumberFormatException ex) { System.err.println("*** '"+param+"' is not a number"); } } else if(flag.equals("-f")) { try { fracToSuperpos = Double.parseDouble(param); } catch(NumberFormatException ex) { System.err.println("*** '"+param+"' is not a number"); } } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} //{{{ empty //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/SupKitchen.java0000644000000000000000000022442311744305700022617 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; import java.awt.*; import java.awt.event.*; import java.io.*; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.r3.*; import driftwood.moldb2.*; import driftwood.util.*; import molikin.logic.*; import molikin.Quickin; import Jama.Matrix; import Jama.SingularValueDecomposition; //}}} /** * SupKitchen "cooks up" superpositions (*groan*) of related protein * structures and analyzes the resulting ensembles via principal components. * * It tries to construct ensembles intelligently when the sequences are different, * there are insertion loops in the reference and/or some of the other models, etc. * * A lot of this code comes from Ian's chiropraxis.mc.SubImpose. * * TODO: regularize bb after distortion * keep rmsds w/in a certain radius of sup chain for -nosplit option (???) * *

Copyright (C) 2009 by Daniel A. Keedy. All rights reserved. *
Begun on Thu June 25 2009 */ public class SupKitchen //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("###0.00"); DecimalFormat df2 = new DecimalFormat("###0.0"); DecimalFormat df3 = new DecimalFormat("#0.00"); public final String SELECT_CA = "(atom_CA_)"; public final String SELECT_BB_HEAVY = "(atom_CA_|atom_N__|atom_C__|atom_O__)"; public final String SELECT_BB_HEAVY_H = "(atom_CA_|atom_N__|atom_C__|atom_O__|atom_H__)"; public final String SELECT_BB_HEAVY_CB = "(atom_CA_|atom_N__|atom_C__|atom_O__|atom_CB_)"; public final String SELECT_BB_HEAVY_CB_H = "(atom_CA_|atom_N__|atom_C__|atom_O__|atom_CB_|atom_H__)"; //}}} //{{{ Variable definitions //############################################################################## /* Input */ boolean verbose = false; String mdlFilename; // could be for mdls dir or mdls file File mdlDir; File mdlFile; String refFilename; File refFile; String title; String superimpose = SELECT_BB_HEAVY_H; boolean distort = true; /** Max acceptable RMSD, effected by simple yes-or-no after sup. */ double rmsdMax = -1; /** Max acceptable RMSD, achieved by Lesk sieve process. Overrides rmsdMax. */ double rmsdLesk = 5.0; /* Ensemble Creation */ /** If true, we split up all models by chain. * Required for PCA b/c allows formation of a square matrix of superpositions * (some models may have lots of structure surrounding them whereas some may not). * Applies only to models; just one chain is taken from the ref regardless of this * option so models will all superpose onto the same ref chain. */ boolean splitChains = true; /** Holds models with however-many chains are present from the ref structure. */ CoordinateFile refCoordFile; /** Holds models with >=1 chains (depending on user's options) from other structures. * Could contain just one CoordinateFile with multiple Models if NMR-like structure. */ CoordinateFile[] mdlCoordFiles; /** Holds models from the ref structure and the other structures. */ CoordinateFile ensemCoordFile; /** Map of Model -> "2XN" (rows X cols) AtomState array, which comes from a * sequence alignment of model to ref. Coords in array[0]s should already be * superposed onto ref; array[1]s *are* static ref. */ Map ensemAtoms; /** RMSD of each model to ref (after Lesk if applicable). */ Map rmsds; /** Intersection of ref atoms from all model-to-ref atom alignments. * If any atoms were Lesk-sieved, they're ALREADY GONE from this set. */ HashSet intersection; /** Number of entries in intersection. Rows in U matrix. */ int nAtoms; /** Number of models in ensemble, including ref. Columns in U matrix. */ int mEnsem; /** Maximum number of models in ensemble, including ref. Capped to avoid ridiculous runtimes. */ int maxEnsemSize = 50; /* Principal Component Analysis */ /** Selected AtomStates from ref, listed in the same order as the coordinates * of the first column in U matrix. This guy is 1/3 the length of the first * column of U because it's by atom, not by x,y,z. Purpose: a way to get back * to the atom world from the PCA world in order to write out (a) PC-transformed * structure(s). */ ArrayList pcaAtoms; /** Holds models based on the ref structure, but transformed according to * principal components of selected atoms of the ensemble. */ CoordinateFile pcaCoordFile; /** Scaling factor for motion along PCs. */ double scale = 1.0; /** Choice of PCs to vector-sum. 1 to n. */ int[] pcChoice; /** ... */ int roundsOfMinimization = 0; /* Output */ boolean kinOut = true; boolean append = false; /** Backbone color for non-ref models. */ String color; /** Specifies how coords will be displayed in kin form. Default: -lots with Calphas. */ Logic[] logicList; /** Specifies directory where ensemble PDBs will be written. Alternative to * output kinemage or multi-MODEL, single PDB file. */ String pdbsDirname; //}}} //{{{ Constructor(s) //############################################################################## public SupKitchen() { super(); prepLogic(); } //}}} //{{{ prepLogic //############################################################################## public void prepLogic() { BallAndStickLogic logic = new BallAndStickLogic(); logic.doProtein = true; logic.doNucleic = true; logic.doHets = true; logic.doMetals = true; logic.doWater = true; logic.doVirtualBB = true; logic.doMainchain = true; logic.doSidechains = true; logic.doHydrogens = true; logic.doDisulfides = true; logic.doBallsOnCarbon = false; logic.doBallsOnAtoms = false; logic.colorBy = BallAndStickLogic.COLOR_BY_MC_SC; logicList = new Logic[1]; logicList[0] = logic; } //}}} //{{{ get/set... //############################################################################## public String getTitle() { return title; } public double getRmsdLesk() { return rmsdLesk; } public CoordinateFile getEnsemCoordFile() { return ensemCoordFile; } public CoordinateFile getPcaCoordFile() { return pcaCoordFile; } public double getScale() { return scale; } public int getMaxEnsemSize() { return maxEnsemSize; } public void setRefFilename(String n) { refFilename = n; } public void setMdlFilename(String n) { mdlFilename = n; } public void setSuperimpose(String s) { superimpose = s; } public void setRmsdLesk(double l) { rmsdLesk = l; } public void setScale(double s) { scale = s; } public void setMaxEnsemSize(int i) { maxEnsemSize = i; } public void setDistort(boolean d) { distort = d; } public void setVerbose(boolean v) { verbose = v; } //}}} /* Ensemble Creation */ //{{{ makeSup //############################################################################## /** Reads input files and superposes entire ensemble. */ public void makeSup() throws IOException { // Models if(mdlFilename == null) throw new IllegalArgumentException( "*** Must provide models dir or file!"); File mf = new File(mdlFilename); if(mf.isDirectory()) readMdlDir( mf, splitChains); else readMdlFile(mf, splitChains); // Ref if(refFilename == null) pickAdHocRefFile(); else refFile = new File(refFilename); readRefFile(refFile); Model refModel = refCoordFile.getFirstModel(); if(refModel.getChainIDs().size() > 1) throw new IllegalArgumentException( "*** Ref (model 1 from "+refFile+") has > 1 chain .. sup will be bad .. exiting!"); String[] parts = Strings.explode(refCoordFile.getFile().getName(), '/'); String basename = parts[parts.length-1]; //String refChId = (String) refModel.getChainIDs().iterator().next(); refModel.getState().setName(basename.substring(0,basename.indexOf(".pdb")));//+refChId); // Title String refChID = (String) refCoordFile.getFirstModel().getChainIDs().iterator().next(); if(refChID.equals(" ")) refChID = "_"; String r = refFile.getName().replaceAll(".pdb", "")+refChID; String m = (mdlFile != null ? mdlFile.getName() : mdlDir.getName()).replaceAll(".pdb", ""); title = m+"."+r; System.err.println("Making \""+title+"\""); // Initial combination into superposed ensemble int ensemModelCount = 0; refModel.setName(""+ensemModelCount); ensemCoordFile = new CoordinateFile(); ensemCoordFile.setIdCode(title); ensemCoordFile.add(refModel); ensemAtoms = new HashMap(); rmsds = new HashMap(); System.err.println("rmsd\tn_atoms\tselection\tmodel"); for(int i = 0; i < mdlCoordFiles.length; i++) { CoordinateFile mdlCoordFile = (CoordinateFile) mdlCoordFiles[i]; if(mdlCoordFile.getModels().size() != 0) { // Skip if from same PDB as ref, implying either ref chain duplicate // or totally unrelated protein that would screw up superposition. String mFilename = mdlCoordFile.getFile().getName(); String rFilename = refCoordFile.getFile().getName(); if(mFilename.equals(rFilename)) { System.err.println("Skipping additional model from ref file: "+rFilename); continue; } Iterator mItr; for(mItr = mdlCoordFile.getModels().iterator(); mItr.hasNext() && ensemModelCount < maxEnsemSize-1; ) // -1 b/c we've already added ref { Model ensemModel = (Model) mItr.next(); parts = Strings.explode(mdlCoordFile.getFile().getName(), '/'); basename = parts[parts.length-1]; String mName = basename.substring(0,basename.indexOf(".pdb")); //if(splitChains) mName += (String) ensemModel.getChainIDs().iterator().next(); ensemModel.getState().setName(mName); if(refDupl(ensemModel, refModel)) { System.err.println("Model "+ensemModel.getState().getName()+" "+ensemModel+ " is duplicate of ref "+refModel.getState().getName()+" "+refModel+ " .. leaving out"); continue; } try { AtomState[][] atoms = sup(ensemModel, refModel, mdlCoordFile); // Lesk happens here (if at all) if(atoms == null) continue; // error or rmsd too high ensemModelCount++; ensemModel.setName(""+ensemModelCount); ensemCoordFile.add(ensemModel); ensemAtoms.put(ensemModel, atoms); } catch(IllegalArgumentException ex) { System.err.println(ex.getMessage()); } }//model if(mItr.hasNext() && ensemModelCount == maxEnsemSize-1) { System.err.println("Ensemble has reached max size ("+maxEnsemSize+" members) - skipping the rest!"); break; } } else System.err.println("Skipping: "+mdlCoordFile+" because no models found"); }//coord file if(ensemAtoms.keySet().size() == 0) { System.err.println("No models left after superposition & trimming/pruning!"); //System.exit(1); throw new IOException("No models left after superposition & trimming/pruning!"); } mEnsem = ensemAtoms.keySet().size() + 1; // to include the ref intersect(); if(splitChains) trimEnsem(); System.err.println("M = "+mEnsem+"\tmodels"); // cols System.err.println("N = "+nAtoms+"\tatoms"); // rows/3 if(nAtoms == 0) { System.err.println("Everything was trimmed! Try a more similar set of structures."); System.exit(1); } } //}}} //{{{ splitChains, chainIsProt //############################################################################## /** Divvies up the input CoordinateFile into single-chain CoordinateFiles. */ public Collection splitChains(CoordinateFile orig) { Collection chains = new ArrayList(); for(Iterator mItr = orig.getModels().iterator(); mItr.hasNext(); ) { Model model = (Model) mItr.next(); for(Iterator cItr = model.getChainIDs().iterator(); cItr.hasNext(); ) { String chainID = (String) cItr.next(); Model clone = (Model) model.clone(); for(Iterator rItr = model.getResidues().iterator(); rItr.hasNext(); ) { Residue res = (Residue) rItr.next(); if(!res.getChain().equals(chainID) && clone.contains(res)) { try { clone.remove(res); } catch(ResidueException ex) { System.err.println("*** Error removing "+res+" from new chain"+chainID+" model!"); } } // else probably wanna keep this residue b/c in right chain }//residue CoordinateFile cf = new CoordinateFile(); cf.add(clone); chains.add(cf); }//chain }//model return chains; } /** * Decides the given chain is protein if it has more amino acid residues than anything else. * @param chain a single-model, single-chain CoordinateFile */ public boolean chainIsProt(CoordinateFile chain) { final String aaNames = "GLY:ALA:VAL:PHE:PRO:MET:MSE:ILE:LEU:ASP:GLU:LYS:ARG:SER:THR:TYR:HIS:CYS:ASN:GLN:TRP"; int countProt = 0; int countOth = 0; for(Iterator rItr = chain.getFirstModel().getResidues().iterator(); rItr.hasNext(); ) { Residue r = (Residue) rItr.next(); if(aaNames.indexOf(r.getName()) != -1) countProt++; else countOth++; } //if(countProt > countOth && countProt >= 30) return true; // try to avoid short, bound peptides if(countProt > countOth) return true; return false; } //}}} //{{{ pickAdHocRefFile //############################################################################## /** * Assuming ref file not provided, gets one from the provided models, * be they in a directory or a single multi-model file. */ public void pickAdHocRefFile() { // Find a resonable ref file if(mdlFile != null) refFile = mdlFile; else /*if(mdlDir != null)*/ { File[] children = mdlDir.listFiles(); if(children != null) { for(int i = 0; i < children.length; i++) { File f = children[i]; if(f.getName().indexOf(".pdb") != -1) { refFile = f; if(verbose) System.err.println("Picked "+f+" as ad hoc ref"); break; } }//child } } } //}}} //{{{ refDupl //############################################################################## /** * Tells whether provided model is equivalent to ref model and thus should be * removed to avoid double-counting. Important when ref was chosen ad hoc. * Assumes that if all atoms in m can find some atom in r * with exactly the same coordinates, m and r are the same. * @param mdl is the model * @param ref is the reference structure */ public boolean refDupl(Model mdl, Model ref) { // mdl ArrayList mdlAtSt = new ArrayList(); ModelState mdlSt = mdl.getState(); for(Iterator rItr = mdl.getResidues().iterator(); rItr.hasNext(); ) { Residue r = (Residue) rItr.next(); for(Iterator aItr = r.getAtoms().iterator(); aItr.hasNext(); ) { Atom a = (Atom) aItr.next(); try { AtomState s = mdlSt.get(a); mdlAtSt.add(s); } catch(AtomException ex) { System.err.println("Can't find state for "+a+"!"); } } } // ref ArrayList refAtSt = new ArrayList(); ModelState refSt = ref.getState(); for(Iterator rItr = ref.getResidues().iterator(); rItr.hasNext(); ) { Residue r = (Residue) rItr.next(); for(Iterator aItr = r.getAtoms().iterator(); aItr.hasNext(); ) { Atom a = (Atom) aItr.next(); try { AtomState s = refSt.get(a); refAtSt.add(s); } catch(AtomException ex) { System.err.println("Can't find state for "+a+"!"); } } } for(AtomState m : mdlAtSt) { boolean matchExists = false; for(AtomState r : refAtSt) { if(m.equals(r)) { matchExists = true; break; } } if(!matchExists) return false; // at least one atom doesn't match } return true; } //}}} //{{{ sup //############################################################################## /** * Superposes 1 (mobile) onto 2 (ref). * Mostly stolen directly from Ian's chiropraxis.mc.SubImpose. */ public AtomState[][] sup(Model m1, Model m2, CoordinateFile cf1) throws IllegalArgumentException { if(verbose) System.err.println("\nSuperposing model"+m1+" ("+SubImpose.getChains(m1, null).size()+ " chains) onto model"+m2+" ("+SubImpose.getChains(m2, null).size()+" chains)"); ModelState s1 = m1.getState(); ModelState s2 = m2.getState(); // Sequence-based residue alignment Alignment align = Alignment.alignChains(SubImpose.getChains(m1, null), SubImpose.getChains(m2, null), new Alignment.NeedlemanWunsch(), new SubImpose.SimpleResAligner()); // This ^ method rejects residue alignments with lots of gaps, e.g. when the // ref is shorter, resulting in lots of nulls. That leads to problems. // Here's an alternative alignment method that accepts such imperfect residue alignments: if(align.a.length == 0) align = Alignment.needlemanWunsch(m1.getResidues().toArray(), m2.getResidues().toArray(), new SubImpose.SimpleResAligner()); if(verbose) { System.err.println("Residue alignments:"); for(int i = 0; i < align.a.length; i++) System.err.println(" "+align.a[i]+" <==> "+align.b[i]); System.err.println(); } // One single structural superposition of all chains of 1 onto all chains of 2 try { AtomState[][] atoms = this.getAtomsForSelection( m1.getResidues(), s1, m2.getResidues(), s2, superimpose, align, cf1); if(verbose) { System.err.println("Atom alignments:"); for(int i = 0; i < atoms[0].length; i++) System.err.println(" "+atoms[0][i]+" <==> "+atoms[1][i]); System.err.println(); } if(atoms[0].length < 3) throw new IllegalArgumentException( "Can't superimpose on less than 3 atoms!"); SuperPoser superpos = new SuperPoser(atoms[1], atoms[0]); Transform R = new Transform(); // identity, defaults to no superposition R = superpos.superpos(); ArrayList sieved = null; // remember ref atoms sieved below, if any, for later if(rmsdLesk >= 0) { // Eliminate selected atoms one-by-one until RMSD <= cutoff (default: 1A) sieved = new ArrayList(); int sieveCount = 0; System.err.println(df.format(superpos.calcRMSD(R))+"\t" +atoms[0].length+"\t[Lesk's sieve start]"); while(superpos.calcRMSD(R) > rmsdLesk) { sieveCount++; SubImpose.sortByLeskSieve(atoms[0], atoms[1]); // messes up order! int len = atoms[0].length - 1; // new length after we drop worst-fitting atom pair sieved.add(atoms[1][len]); // ref AtomState[][] newAtoms = new AtomState[2][len]; for(int i = 0; i < 2; i++) for(int j = 0; j < len; j++) newAtoms[i][j] = atoms[i][j]; atoms = newAtoms; if(atoms[0].length < 3) throw new IllegalArgumentException( "Can't achieve target rmsd of "+rmsdLesk+"A .. would have to trim to < 3 atoms!"); superpos.reset(atoms[1], atoms[0]); R = superpos.superpos(); rmsds.put(m1, superpos.calcRMSD(R)); System.err.println(df.format(superpos.calcRMSD(R))+"\t" +atoms[0].length+"\t[Lesk's sieve #"+sieveCount+"]"); } } else { if(rmsdMax >= 0 && superpos.calcRMSD(R) > rmsdMax) // RMSD too high { System.err.println(df.format(superpos.calcRMSD(R))+"\t" +atoms[0].length+"\t"+superimpose+"\t"+m1.getState().getName()+"\t"+" rmsd>"+rmsdMax+"A - skip"); return null; } else // RMSD OK { rmsds.put(m1, superpos.calcRMSD(R)); System.err.println(df.format(superpos.calcRMSD(R))+"\t" +atoms[0].length+"\t"+superimpose+"\t"+m1.getState().getName()); } } // Transform model 1 so transformed coords will be used in the future for(Iterator iter = Model.extractOrderedStatesByName(m1).iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); R.transform(as); } // Return remaining selected atoms in original order AtomState[][] origAtoms = this.getAtomsForSelection( m1.getResidues(), s1, m2.getResidues(), s2, superimpose, align, cf1); // for PCA later if(sieved == null || sieved.size() == 0) return origAtoms; int newLen = origAtoms[0].length - sieved.size(); AtomState[][] newAtoms = new AtomState[2][newLen]; for(int i = 0; i < 2; i++) for(int j = 0; j < newAtoms[0].length; j++) if(!sieved.contains(origAtoms[i][j])) // i.e. "if we didn't sieve this atom pair" newAtoms[i][j] = origAtoms[i][j]; return newAtoms; } catch(ParseException ex) { System.err.println("*** Error parsing atom selection: '"+superimpose+ "' for superposing model: "+m1+" onto ref: "+m2); } return null; } //}}} //{{{ getAtomsForSelection //############################################################################## /** * Apply the given selection to res1/s1, then find the corresponding atoms in res2/s2. * Return as a 2xN array of matched AtomStates, no nulls. * Stolen directly from Ian's chiropraxis.mc.SubImpose. */ AtomState[][] getAtomsForSelection(Collection res1, ModelState s1, Collection res2, ModelState s2, String selection, Alignment align, CoordinateFile cf1) throws ParseException { // Get selected atom states from model 1 Selection sel = Selection.fromString(selection); Collection allStates1 = Model.extractOrderedStatesByName(res1, Collections.singleton(s1)); sel.init(allStates1, cf1); Collection selStates1 = new ArrayList(); for(Iterator iter = allStates1.iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); if(sel.select(as)) selStates1.add(as); } // Set up residue correspondences Map map1to2 = new HashMap(); for(int i = 0; i < align.a.length; i++) { if(align.a[i] != null) map1to2.put(align.a[i], align.b[i]); // b[i] may be null } // Get corresponding states from model 2 Collection selStates2 = new ArrayList(); int matched = 0; for(Iterator iter = selStates1.iterator(); iter.hasNext(); ) { AtomState as1 = (AtomState) iter.next(); AtomState as2 = null; Residue r = (Residue) map1to2.get( as1.getResidue() ); if(r != null) { Atom a = r.getAtom( as1.getName() ); if(a != null) { try { as2 = s2.get(a); matched++; } catch(AtomException ex) { ex.printStackTrace(); } } } selStates2.add(as2); // as2 could still be null } if(selStates1.size() != selStates2.size() || matched > selStates1.size()) throw new RuntimeException("logical error; sel1="+selStates1.size()+", sel2="+selStates2.size()+", matched="+matched); // Arrange data into nice arrays for convenience AtomState[][] ret = new AtomState[2][matched]; Iterator iter1 = selStates1.iterator(); Iterator iter2 = selStates2.iterator(); int idx = 0; while(iter1.hasNext()) { AtomState as1 = (AtomState) iter1.next(); AtomState as2 = (AtomState) iter2.next(); if(as2 == null) continue; ret[0][idx] = as1; ret[1][idx] = as2; idx++; } if(idx != matched) throw new RuntimeException("logical error; idx="+idx+", matched="+matched); return ret; } //}}} //{{{ intersect //############################################################################## /** Finds intersection: ref atoms included in all model-ref alignments */ public void intersect() { HashSet union = new HashSet(); for(Iterator mItr = ensemAtoms.keySet().iterator(); mItr.hasNext(); ) { Model model = (Model) mItr.next(); AtomState[][] atoms = (AtomState[][]) ensemAtoms.get(model); for(int i = 0; i < atoms[1].length; i++) { //System.err.println("adding "+atoms[1][i]+" to union"); union.add(atoms[1][i]); } } HashSet toRm = new HashSet(); intersection = union; for(Iterator iItr = intersection.iterator(); iItr.hasNext(); ) { AtomState iRefAtomSt = (AtomState) iItr.next(); boolean inAllModels = true; // default: keep in intersection for(Iterator mItr = ensemAtoms.keySet().iterator(); mItr.hasNext(); ) { Model model = (Model) mItr.next(); AtomState[][] atoms = (AtomState[][]) ensemAtoms.get(model); boolean inThisModel = false; for(int i = 0; i < atoms[1].length; i++) { AtomState mRefAtomSt = atoms[1][i]; if(mRefAtomSt != null && mRefAtomSt.equals(iRefAtomSt)) { inThisModel = true; break; } } if(!inThisModel) // made it thru whole for loop w/o finding in model inAllModels = false; // b/c it's not in *this* model } if(!inAllModels) toRm.add(iRefAtomSt); } for(Iterator rmItr = toRm.iterator(); rmItr.hasNext(); ) { AtomState iRefAtomSt = (AtomState) rmItr.next(); //System.err.println("rm'ing "+iRefAtomSt+" from intersection"); intersection.remove(iRefAtomSt); } nAtoms = intersection.size(); if(verbose) { System.err.println("\nintersection ("+nAtoms+" atoms):"); ArrayList inter = new ArrayList(); for(Iterator iItr = intersection.iterator(); iItr.hasNext(); ) System.err.println(" "+(AtomState)iItr.next()); } } //}}} //{{{ trimEnsem //############################################################################## /** * For each ensemble member: * - drops residues with *zero* selected atoms in intersection * - drops selected atoms (for PCA later) not in intersection * Implicitly reflects Lesk sieve b/c sieved atoms aren't in intersection. */ public void trimEnsem() { System.err.println("Trimming ensemble..."); for(Iterator mItr = ensemAtoms.keySet().iterator(); mItr.hasNext(); ) { Model ensemModel = (Model) mItr.next(); AtomState[][] atoms = (AtomState[][]) ensemAtoms.get(ensemModel); atoms = trimAlignment(atoms, ensemModel); ensemAtoms.put(ensemModel, atoms); if(verbose) { System.err.println("\npost-trim alignment:"); for(int i = 0; i < atoms[0].length; i++) System.err.println(" "+atoms[0][i]+" <==> "+atoms[1][i]); } AtomState[] mdlIntrsctn = atoms[0]; // atoms from this model corresponding to ref-based intersection Model newEnsemModel = trimModel(ensemModel, mdlIntrsctn); ensemCoordFile.replace(ensemModel, newEnsemModel); if(verbose) { System.err.println("\npost-trim residues:"); for(Iterator rItr = newEnsemModel.getResidues().iterator(); rItr.hasNext(); ) System.err.println(" "+(Residue)rItr.next()); } } } //}}} //{{{ trimAlignment //############################################################################## /** * If the given model contains any seleced atoms *not* in the intersection, * this method drops them (so they won't be used for PCA later). */ public AtomState[][] trimAlignment(AtomState[][] atoms, Model model) { // I had trouble thinking through what this method should do // for some reason, so here's some pseudo-code that may help: // // for(sel_atom_in_mdl) // for(int_atom) // if(int_atom matches sel_atom_in_mdl) // mark sel_atom_in_mdl as "in int" // if(sel_atom_in_mdl "in int") // keep this sel_atom_in_mdl ModelState state = model.getState(); TreeSet toKeep = new TreeSet(); // indices for(int i = 0; i < atoms[1].length; i++) { AtomState enAtm = atoms[1][i]; boolean inIn = false; for(Iterator iItr = intersection.iterator(); iItr.hasNext(); ) { AtomState inAtm = (AtomState) iItr.next(); if(inAtm.equals(enAtm)) inIn = true; } if(inIn) toKeep.add(i); //else System.err.println(enAtm+" NOT in intersection!"); } AtomState[][] newAtoms = new AtomState[2][toKeep.size()]; int count = 0; for(Iterator aiItr = toKeep.iterator(); aiItr.hasNext(); ) { int ai = (Integer) aiItr.next(); newAtoms[0][count] = atoms[0][ai]; newAtoms[1][count] = atoms[1][ai]; count++; } return newAtoms; } //}}} //{{{ trimModel //############################################################################## /** * If a residue has any atoms in the intersection, it's kept. * Otherwise, it's dropped, and its coordinates won't be in any output PDB. * Note: This probably leaves a lot of residues with only some atoms to be used for PCA. */ public Model trimModel(Model model, AtomState[] intrsctn) { TreeSet toKeep = new TreeSet(); for(int i = 0; i < intrsctn.length; i++) { Atom a = intrsctn[i].getAtom(); Residue r = a.getResidue(); toKeep.add(r); // this residue has at least one atom in intersection - keep } TreeSet toRm = new TreeSet(); for(Iterator rItr = model.getResidues().iterator(); rItr.hasNext(); ) { Residue r = (Residue) rItr.next(); boolean wannaKeep = false; for(Iterator kItr = toKeep.iterator(); kItr.hasNext(); ) { Residue k = (Residue) kItr.next(); if(k.getCNIT().equals(r.getCNIT())) { wannaKeep = true; break; } } if(!wannaKeep) toRm.add(r); } for(Iterator rItr = toRm.iterator(); rItr.hasNext(); ) { Residue r = (Residue) rItr.next(); try { model.remove(r); } catch(ResidueException ex) { System.err.println("*** Error removing "+r+" from model "+model); } } return model; } //}}} /* Principal Component Analysis */ //{{{ doPca //############################################################################## /** * Prepares square X matrix comprising ensemble for PCA, performs PCA on it, and * creates a set of "models" representing movements along an average of some subset of PCs. */ public void doPca() { System.err.println("Starting PCA on PCs "+Strings.arrayInParens(pcChoice)); // Prep for SVD double[][] xArray = buildX(); Matrix x = new Matrix(xArray); if(verbose) { System.err.print("Input X matrix:"); x.print(new PrintWriter(System.err, true), new DecimalFormat("#.####"), 1); } // Do SVD // X = USV^T (S = sigma, V^T = V transpose) if(verbose) System.err.println("Doing SVD now"); SingularValueDecomposition svd = new SingularValueDecomposition(x); Matrix u = svd.getU(); // columns = principal componenents Matrix s = svd.getS(); // diagonal elements = singular values (weights) if(verbose) { System.err.print("SVD output U Matrix:"); u.print(new PrintWriter(System.err, true), new DecimalFormat("#.####"), 1); System.err.print("SVD output S matrix:"); s.print(new PrintWriter(System.err, true), new DecimalFormat("#.####"), 1); } // Take weighted vector sum (i.e. weighted average x,y,z) of desired PCs if(Double.isNaN(scale)) scale = 1.0; // default: x1.0 scaling double[] avgPc = avgPc(u, s); // Build a set of true copies of the ref model, // with the atoms originally used for superposition // moved according to the averaged PC in increments. pcaCoordFile = new CoordinateFile(); pcaCoordFile.setIdCode(title+"_PCA"); double maxFrac = 1.0; int step = 1 ; int steps = 10 ; System.err.println("Distorting ensemble via weighted-average PC..."); for(double frac = -1*maxFrac; frac <= maxFrac; frac += (2*maxFrac)/steps) { if(verbose) System.err.print(" moving along weighted-average PC x "+df2.format(frac)); try { Model model = applyPcToRefModel(avgPc, frac, step); if(model != null) pcaCoordFile.add(model); } catch(IOException ex) { System.err.println("*** Error opening ref file: "+refFile.getName()+"!"); } if(verbose) System.err.println(" .. done"); step++; } } //}}} //{{{ buildX //############################################################################## /** Portrays ensemble in the guise of an N x M (rows x columns) 2-D array. */ public double[][] buildX() { if(verbose) System.err.println("Building X matrix for PCA"); double[][] xArray = new double[3*nAtoms][mEnsem]; int mCount = 0; // Ref (just once) Iterator mItr1 = ensemAtoms.keySet().iterator(); if(mItr1.hasNext()) { Model ref = (Model) mItr1.next(); // doesn't matter which we pick here - will use ref half of alnmt if(verbose) System.err.println("Adding to X : ref model"+ref); AtomState[][] atoms = (AtomState[][]) ensemAtoms.get(ref); pcaAtoms = new ArrayList(); // so later, we'll know which coord in X belongs to which atom ArrayList coords = new ArrayList(); // one 1x3N "sample" (ensemble member) for(int n = 0; n < atoms[0].length; n++) { if(coords.size() < (3*nAtoms)-2 && atoms[0][n] != null && atoms[1][n] != null) { AtomState refState = atoms[1][n]; Atom refAtom = refState.getAtom(); pcaAtoms.add(refState); coords.add( atoms[1][n].getX() ); coords.add( atoms[1][n].getY() ); coords.add( atoms[1][n].getZ() ); } } // go up to coords.size() instead of nAtoms*3 here b/c // coords.size() could be < nAtoms*3 given Gly w/ bb+Cb option for(int n = 0; n < coords.size(); n++) xArray[n][mCount] = coords.get(n); // m = cols = samples; n = rows = atoms mCount++; /*if(verbose) { System.err.print("ref ensem X matrix entry: "); for(int n = 0; n < coords.size(); n++) System.err.print(coords.get(n)+" "); System.err.println(" .. "+coords.size()/3+" atoms"); }*/ } // Models (loop) for(Iterator mItr2 = ensemAtoms.keySet().iterator(); mItr2.hasNext(); ) { Model model = (Model) mItr2.next(); if(verbose) System.err.println("Adding to X : ensem model"+model); AtomState[][] atoms = (AtomState[][]) ensemAtoms.get(model); ArrayList coords = new ArrayList(); // one 1x3N "sample" (ensemble member) for(int n = 0; n < atoms[0].length; n++) { if(coords.size() < (3*nAtoms)-2 && atoms[0][n] != null && atoms[1][n] != null) { AtomState refState = atoms[1][n]; Atom refAtom = refState.getAtom(); coords.add( atoms[0][n].getX() ); coords.add( atoms[0][n].getY() ); coords.add( atoms[0][n].getZ() ); } } // go up to coords.size() instead of nAtoms*3 here b/c // coords.size() could be < nAtoms*3 given Gly w/ bb+Cb option for(int n = 0; n < coords.size(); n++) xArray[n][mCount] = coords.get(n); // n = rows = atoms; m = cols = samples mCount++; /*if(verbose) { System.err.print("mdl ensem X matrix entry: "); for(int n = 0; n < coords.size(); n++) System.err.print(coords.get(n)+" "); System.err.println(" .. "+coords.size()/3+" atoms"); }*/ } // Substract ensemble average coordinates from all members. // B Qian, A Ortiz, D Baker (2004) PNAS - "Improvement..." // calls this a "coordinate displacement vector" or CDV. if(verbose) System.err.println("Making displacement vectors for X matrix"); for(int n = 0; n < 3*nAtoms; n++) { // Columns first this time, because we want an average // for a specific x, y, or z value across the ensemble. double avgVal = 0; for(int m = 0; m < mEnsem; m++) avgVal += xArray[n][m]; avgVal /= mEnsem; for(int m = 0; m < mEnsem; m++) xArray[n][m] = xArray[n][m] - avgVal; } return xArray; } //}}} //{{{ avgPc //############################################################################## /** Calculates vector avg of the user's choice of PC(s) and scales it (opt'l). */ public double[] avgPc(Matrix u, Matrix s) { double[] avgPc = new double[pcaAtoms.size()+2]; for(int n = 0; n < pcaAtoms.size(); n++) { // Add all desired PCs to this PC vector double avgX = 0, avgY = 0, avgZ = 0; for(int p = 0; p < pcChoice.length; p++) { int pcIdx = pcChoice[p]-1; // B Qian, A Ortiz, D Baker (2004) PNAS - "Improvement..." // defines a PC as the U matrix times the S matrix, like so: avgX += u.get(n , pcIdx) * s.get(pcIdx, pcIdx) * scale; avgY += u.get(n+1, pcIdx) * s.get(pcIdx, pcIdx) * scale; avgZ += u.get(n+2, pcIdx) * s.get(pcIdx, pcIdx) * scale; } avgPc[n ] = avgX / pcChoice.length; avgPc[n+1] = avgY / pcChoice.length; avgPc[n+2] = avgZ / pcChoice.length; } return avgPc; } //}}} //{{{ applyPcToRefModel //############################################################################## /** * Applies the user's choice of principal component(s) to *all* atoms -- i.e. not * just the user's selected atoms -- to a fresh copy of the original ref model. */ public Model applyPcToRefModel(double[] avgPc, double frac, int step) throws IOException { // Trim to intersection - implicitly pulls out the single ref chain we orig'ly chose AtomState[] refIntrsctn = new AtomState[intersection.size()]; int count = 0; for(Iterator inItr = intersection.iterator(); inItr.hasNext(); ) { refIntrsctn[count] = (AtomState) inItr.next(); count++; } CoordinateFile cf1 = readPdb(refFile); CoordinateFile cf2 = readPdb(refFile); Model m1 = trimModel(cf1.getFirstModel(), refIntrsctn); // PC-distorted - becomes ref for sup Model m2 = trimModel(cf2.getFirstModel(), refIntrsctn); // rigid ref - becomes mobile for sup m1.setName(""+step); m2.setName(""+step); // Apply PC to 1 for(int i = 0; i < pcaAtoms.size(); i++) { AtomState as = (AtomState) pcaAtoms.get(i); Triple dxyz = new Triple(frac * avgPc[i ], frac * avgPc[i+1], frac * avgPc[i+2]); m1 = applyPcToAtom(m1, as, dxyz); // directly modifies m1 } if(distort) return m1; // if we wanted PC-distorted ref model, we're done // Transform *all* of now-mobile model (2) according to PC motions of // the subset of selected atoms. Code modified from sup() method. ModelState s1 = m1.getState(); ModelState s2 = m2.getState(); Alignment align = Alignment.alignChains(SubImpose.getChains(m1, null), SubImpose.getChains(m2, null), new Alignment.NeedlemanWunsch(), new SubImpose.SimpleResAligner()); try { AtomState[][] atoms = this.getAtomsForSelection( m1.getResidues(), s1, m2.getResidues(), s2, superimpose, align, cf1); SuperPoser superpos = new SuperPoser(atoms[0], atoms[1]); // swapped [1],[0] -> [0],[1] Transform R = new Transform(); // identity, defaults to no superposition R = superpos.superpos(); // Transform 2 (was 1 in sup()!) so transformed coords will be used in the future for(Iterator iter = Model.extractOrderedStatesByName(m2).iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); R.transform(as); } return m2; } catch(ParseException ex) { System.err.println("*** Error parsing atom selection: '"+superimpose+ "' for superposing model: "+m2+" onto ref: "+m1); } return null; } //}}} //{{{ applyPcToAtom //############################################################################## /** Applies the given translation to the given selected atom, then returns the model. */ public Model applyPcToAtom(Model m, AtomState as, Triple dxyz) { Atom a = (Atom) as.getAtom(); String an = a.getName(); Residue r = (Residue) a.getResidue(); int rt = r.getSequenceInteger(); String rn = r.getName(); String c = r.getChain(); // Find the atom in the provided ref clone ('m') // corresponding to the PCA-modified atom ('a') ModelState ms = (ModelState) m.getState(); for(Iterator rIter = m.getResidues().iterator(); rIter.hasNext(); ) { Residue res = (Residue) rIter.next(); if(res.getSequenceInteger() == rt && res.getName().equals(rn) && res.getChain().equals(c)) { // right residue for(Iterator aIter = res.getAtoms().iterator(); aIter.hasNext(); ) { Atom atom = (Atom) aIter.next(); if(atom.getName().equals(an)) { // right atom try { AtomState atomState = ms.get(atom); atomState.setX( atomState.getX() + dxyz.getX() ); atomState.setY( atomState.getY() + dxyz.getY() ); atomState.setZ( atomState.getZ() + dxyz.getZ() ); } catch(AtomException ex) { System.err.println("*** Error extracting coords for "+atom+"!"); } } }//atom }//residue } return m; } //}}} //{{{ minimizeBackbone //############################################################################## void minimizeBackbone() { System.err.println("\n*** Backbone minimization not yet implemented! ***\n"); System.exit(1); /* for(Iterator mIter = pcaCoordFile.getModels().iterator(); mIter.hasNext(); ) { Model m = (Model) mIter.next(); ArrayList points = int len = points.size() - 3; // Create E terms and store in same order as points bondTerms = new ArrayList(); angleTerms = new ArrayList(); for(Iterator rIter = model.getResidues().iterator(); rIter.hasNext(); ) { Residue r = (Residue) rIter.next(); for(ATOM) { } } StateManager stateMan = new StateManager( (MutableTuple3[])points.toArray(new MutableTuple3[points.size()]), len); stateMan.setBondTerms(bondTerms, 1); stateMan.setAngleTerms(angleTerms, 1); GradientMinimizer minimizer = new GradientMinimizer(stateMan); int steps = 0; boolean done = false; while(!done) { done = !minimizer.step(); steps++; System.err.println("after step "+steps+":"); System.err.println(" delta energy: "+minimizer.getEnergy+" ("+minimizer.getFracDeltaEnergy*100+"%)"); System.err.println(" > new energy: "+minimizer.getDeltaEnergy); } } */ } //}}} /* I/O, Odds 'n' Ends */ //{{{ readMdlDir/File, readPdb //############################################################################## /** Reads through several PDB files containing models from a directory. */ public void readMdlDir(File mf, boolean splitChains) { mdlDir = mf; mdlFile = null; File[] children = mdlDir.listFiles(); int numFilesToRead = children.length; if(children != null) { ArrayList cfs = new ArrayList(); for(int i = 0; i < numFilesToRead; i++) { File f = children[i]; if(f.getName().indexOf(".pdb") != -1) { try { CoordinateFile inputCoordFile = readPdb(f); if(splitChains) // each input chain => separate mdl coord file { for(Iterator cfi = splitChains(inputCoordFile).iterator(); cfi.hasNext(); ) { CoordinateFile cf = (CoordinateFile) cfi.next(); if(chainIsProt(cf)) { cf.setFile(f); cfs.add(cf); } } } else // all input chains kept in their original mdl coord file { inputCoordFile.setFile(f); cfs.add(inputCoordFile); } System.err.println("Extracted model coords from " + inputCoordFile.getFile().getName()); } catch(IOException ex) { System.err.println("*** Error reading model .pdb:" + f.getName() + "!"); } } else System.err.println("Ignoring non-.pdb file: " + f.getName()); } mdlCoordFiles = new CoordinateFile[cfs.size()]; for(int i = 0; i < cfs.size(); i++) mdlCoordFiles[i] = (CoordinateFile) cfs.get(i); } else System.err.println("Nothing in selected models dir: " + mdlDir); } /** Reads one NMR-like PDB file containing models. */ public void readMdlFile(File mf, boolean splitChains) { mdlDir = null; mdlFile = mf; if(mdlFile.getName().indexOf(".pdb") != -1) { try { ArrayList cfs = new ArrayList(); CoordinateFile inputCoordFile = readPdb(mdlFile); System.err.println("Found "+inputCoordFile.getModels().size()+" models in "+inputCoordFile.toString()); if(splitChains) // each input chain => separate mdl coord file { for(Iterator cfi = splitChains(inputCoordFile).iterator(); cfi.hasNext(); ) { CoordinateFile cf = (CoordinateFile) cfi.next(); if(chainIsProt(cf)) { cf.setFile(mdlFile); cfs.add(cf); } } } else // all input chains kept in their original mdl coord file { inputCoordFile.setFile(mdlFile); cfs.add(inputCoordFile); } mdlCoordFiles = new CoordinateFile[cfs.size()]; for(int i = 0; i < cfs.size(); i++) mdlCoordFiles[i] = (CoordinateFile) cfs.get(i); // could have just 1 System.err.println("Extracted model coords from " + inputCoordFile.getFile().getName()); } catch(IOException ex) { System.err.println("*** Error reading models .pdb:" + mdlFile.getName() + "!"); } } else System.err.println("Selected models file not a .pdb: " + mdlFile.toString()); } static public CoordinateFile readPdb(File f) throws IOException { PdbReader pdbReader = new PdbReader(); CoordinateFile coordFile = pdbReader.read(f); return coordFile; } //}}} //{{{ readRefFile, pickRefChain //############################################################################## /** Reads in ref file and chooses a chain. */ public void readRefFile(File refFile) { if(refFile.getName().indexOf(".pdb") != -1) { try { CoordinateFile inputCoordFile = readPdb(refFile); System.err.println("Extracted ref coords from " + inputCoordFile.getFile().getName()); // Take just one chain, so models will all sup to same chain. refCoordFile = pickRefChain(inputCoordFile); refCoordFile.setFile(refFile); } catch(IOException ex) { System.err.println("*** Error reading ref .pdb: " + refFile.getName() + "!"); } } else System.err.println("Selected ref file not a .pdb: " + refFile.toString()); } /** Picks which chain in ref file we will superimpose onto. */ public CoordinateFile pickRefChain(CoordinateFile inputCoordFile) { ArrayList chains = (ArrayList) splitChains(inputCoordFile); if(chains.size() == 0) throw new IllegalArgumentException("No chains found in ref file "+refFile+"!"); CoordinateFile retCh = null; String retChId = null; // Try and pick a "common" (protein) chain, not just one at random. for(int i = 0; i < chains.size(); i++) { CoordinateFile chain = chains.get(i); if(chainIsProt(chain)) { String chainID = (String) chain.getFirstModel().getChainIDs().iterator().next(); if(chainID.equals(" ")) { retCh = chain; retChId = chainID; } if(chainID.equals("A")) { retCh = chain; retChId = chainID; } if(chainID.equals("_")) { retCh = chain; retChId = chainID; } } } if(retCh == null) { // Resort to random (protein) chain for(int i = 0; i < chains.size(); i++) { CoordinateFile chain = chains.get(i); String chainID = (String) chain.getFirstModel().getChainIDs().iterator().next(); if(chainIsProt(chain)) { retCh = chain; retChId = chainID; } } } // Return if(retCh != null) { System.err.print("Using chain '"+retChId+"' from ref "+inputCoordFile.getFile().getName()); if(chains.size() > 1) System.err.print(" - there was/were "+(chains.size()-1)+" other(s)"); System.err.println(); return retCh; } throw new IllegalArgumentException("*** Error: Ref file contains no protein chains - aborting!"); } //}}} //{{{ writeKin //############################################################################## /** * Writes kinemage of ensemble to desired output (e.g. System.out). */ public PrintWriter writeKin(PrintWriter out, CoordinateFile cf, String name) { if(!append) out.println("@kinemage {"+name+"}"); out.println("@onewidth"); //double[] rmsdBins = getRmsdBins(cf); //String[] rmsdMstrs = getRmsdMasters(rmsdBins); //for(String rmsdMstr : rmsdMstrs) out.println("@master {"+rmsdMstr+"}"); String mMstr = "models"; out.println("@master {"+mMstr+"}"); //String rMstr = "sup ref: "+refCoordFile.getFirstModel().getState().getName(); String rMstr = "ref model"; out.println("@master {"+rMstr+"}"); Logic logic = logicList[0]; for(Iterator mItr = cf.getModels().iterator(); mItr.hasNext(); ) { Model m = (Model) mItr.next(); if(append && m.getName().equals("0")) continue; // skip ref if appending String mName = m.getName(); if(m.getState().getName().indexOf("null") == -1) // true for ensem; false for PCA mName += " "+m.getState().getName()+((String)m.getChainIDs().iterator().next()); if(m.getName().equals("0")) { out.println("@group {"+mName+"} dominant master= {"+rMstr+"}"); } else { //int rmsdMstrIdx = getRmsdMasterIdx(m, rmsdBins); //String rmsdMstr = (rmsdMstrIdx != -1 ? rmsdMstrs[rmsdMstrIdx] : "rmsd ???"); out.println("@group {"+mName+"} dominant animate master= {"+mMstr+"}");//master= {"+rmsdMstr+"}"); } for(Iterator cItr = m.getChainIDs().iterator(); cItr.hasNext(); ) { String c = (String) cItr.next(); String c2 = (c.equals(" ") ? "_" : c); out.println("@subgroup {chain"+c+"} dominant master= {chain"+c2+"}"); String col = null; if(m.getName().equals("0")) col = "yellowtint"; else col = (color != null ? color : "white"); // model: user choice or white logic.printKinemage(out, m, m.getChain(c), mName, col); } } out.flush(); return out; } //}}} //{{{ writePdb(s) //############################################################################## /** * Writes a single, multi-MODEL PDB holding entire ensemble. */ public void writePdb(PrintStream ps, CoordinateFile cf) { PrintWriter out = new PrintWriter(ps); PdbWriter pdbWriter = new PdbWriter(out); pdbWriter.writeCoordinateFile(cf, new HashMap()); out.flush(); pdbWriter.close(); } /** * Makes a new "ensemble directory" and writes into it a separate PDB * for each superposed ensemble member. * Intended for cmdline mode, not for KiNG tool. */ public void writePdbs(CoordinateFile cf) { // Make sure output directory exists. If not, make it. File pdbsDir = new File(pdbsDirname); if(!pdbsDir.exists()) { boolean success = (new File(pdbsDirname).mkdir()); if(success) System.err.println("Created "+pdbsDirname+"/"); else { System.err.println("ERROR: Couldn't create output PDBs directory: "+pdbsDirname+"/"); System.exit(1); } } // Write separate PDB file for each ensemble member for(Iterator mItr = cf.getModels().iterator(); mItr.hasNext(); ) { Model m = (Model) mItr.next(); if(refCoordFile.getFile().getName().indexOf(m.getState().getName()) != -1) { System.err.println("Skipping model from ref file: "+m.getState().getName()); continue; } CoordinateFile c = new CoordinateFile(); c.add(m); String pdbFilename = pdbsDirname + "/" + m.getState().getName() + "_" + m.getName() + ".pdb"; File pdbFile = new File(pdbFilename); try { System.err.println("Writing to "+pdbFilename); PrintWriter out = new PrintWriter(pdbFile); PdbWriter pdbWriter = new PdbWriter(out); pdbWriter.writeCoordinateFile(c, new HashMap()); out.flush(); pdbWriter.close(); } catch(FileNotFoundException ex) { System.err.println("Error writing ensemble PDBs to "+pdbFilename); } catch(IOException ex) { System.err.println("Error writing ensemble PDBs to "+pdbFilename); } } } //}}} //{{{ getRmsdBins, getRmsdMasters, getRmsdMasterIdx //############################################################################## int bins = 5; /** Puts model RMSDs into equally spaced bins. */ public double[] getRmsdBins(CoordinateFile cf) { ArrayList rmsdList = new ArrayList(); for(Iterator mItr = cf.getModels().iterator(); mItr.hasNext(); ) { Model m = (Model) mItr.next(); if(!rmsds.keySet().contains(m)) continue; rmsdList.add((Double) rmsds.get(m)); } Collections.sort(rmsdList); double range = rmsdList.get(rmsdList.size()-1) - rmsdList.get(0); double step = range / bins; double[] rmsdBins = new double[bins*2]; double rmsd = rmsdList.get(0); for(int i = 0; i < bins; i++) { rmsdBins[2*i] = rmsd; rmsd += step; rmsdBins[2*i+1] = rmsd; } return rmsdBins; } /** * Makes masters corresponding to equally spaced RMSD bins * so user can easily turn subsets of models on/off. */ public String[] getRmsdMasters(double[] rmsdBins) { String[] rmsdMstrs = new String[bins]; for(int i = 0; i < bins; i++) { double rmsdLo = rmsdBins[2*i]; double rmsdHi = rmsdBins[2*i+1]; rmsdMstrs[i] = "rmsd "+df3.format(rmsdLo)+"-"+df3.format(rmsdHi); } return rmsdMstrs; } /** * Finds master for this model's RMSD bin. * @return index in rmsdMstrs */ public int getRmsdMasterIdx(Model m, double[] rmsdBins) { if(!rmsds.keySet().contains(m)) { System.err.println("*** Error: Can't find rmsd for "+m.getState().getName()); return -1; } double rmsd = (Double) rmsds.get(m); for(int i = 0; i < bins-1; i++) { double rmsdLo = rmsdBins[2*i]; double rmsdHi = rmsdBins[2*i+1]; if(rmsd >= rmsdLo && rmsd <= rmsdHi) return i; } if(rmsd >= rmsdBins[2*(bins-1)]) return bins-1; System.err.println("*** Error: Can't find rmsd MASTER for "+m.getState().getName()); return -1; } //}}} //{{{ parsePcChoice //############################################################################## /** Figures out indices of desired PCs from a string. */ public void parsePcChoice(String pcChoiceString) { ArrayList pcChoiceAL = new ArrayList(); // pcChoiceString: "1,2-5,33" or "1-10" or "1" for(String range : Strings.explode(pcChoiceString, ',')) // "1-3" or "1" { String[] ends = Strings.explode(range, '-'); if(ends.length == 1) // "1" { try { int num = Integer.parseInt(ends[0]); pcChoiceAL.add(num); } catch(NumberFormatException ex) { System.err.println("*** Can't parse PC range: '"+range+"'"); } } else if(ends.length == 2) // "1-3" { try { int beg = Integer.parseInt(ends[0]); int end = Integer.parseInt(ends[1]); for(int num = beg; num <= end; num++) pcChoiceAL.add(num); } catch(NumberFormatException ex) { System.err.println("*** Can't parse PC range: '"+range+"'"); } } else throw new IllegalArgumentException("*** Can't parse PC choice: '"+pcChoice+"'"); } pcChoice = new int[pcChoiceAL.size()]; for(int i = 0; i < pcChoiceAL.size(); i++) pcChoice[i] = pcChoiceAL.get(i); // modifies global variable - nothing to return } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException, ParseException { System.err.println("The SupKitchen is busy preparing your order..."); if(append && !kinOut && pdbsDirname == null) { System.err.println("Assuming that -append implies -kin"); kinOut = true; } if(!splitChains) { System.err.println("Not splitting models into chains precludes PCA!"); pcChoice = null; } else { System.err.println("Splitting models into chains, so also trimming ensemble to consensus alignment"); } // RMSD trimming if(rmsdLesk >= 0) { System.err.println("Trimming to "+rmsdLesk+" rmsd w/ Lesk sieve"); if(rmsdMax >= 0) { rmsdMax = -1; System.err.println("(Ignoring straight "+rmsdMax+" rmsd cutoff)"); } } else if(rmsdMax >= 0) System.err.println("Using straight "+rmsdMax+" rmsd cutoff"); else System.err.println("No trimming/pruning regardless of rmsd"); System.err.println("Output: "+(kinOut ? "kin" : (pdbsDirname == null ? "PDB" : "PDBs"))); System.err.println("PCA: "+(pcChoice == null ? "off (just superposition)" : "on!")); try { makeSup(); } catch(IOException ex) { System.err.println(ex.getMessage()); System.exit(1); } if(pcChoice == null) // not doing PCA { if(kinOut) writeKin(new PrintWriter(System.out), ensemCoordFile, title); else if(pdbsDirname != null) writePdbs(ensemCoordFile); else writePdb(System.out, ensemCoordFile); System.err.println("... Your steaming-hot sup is served!"); } else { doPca(); if(roundsOfMinimization > 0) minimizeBackbone(); if(kinOut) writeKin(new PrintWriter(System.out), pcaCoordFile, title); else if(pdbsDirname != null) writePdbs(ensemCoordFile); else writePdb(System.out, pcaCoordFile); System.err.println("... Your steaming-hot sup (w/ a side of PCA) is served!"); } } public static void main(String[] args) { SupKitchen mainprog = new SupKitchen(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } catch(Exception ex) { ex.printStackTrace(); System.exit(2); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("SupKitchen.help"); if(is == null) { System.err.println("*** Unable to locate help information in 'SupKitchen.help' ***"); System.err.println("\n*** Usage: SupKitchen models_dir|multimodel_pdb [ref_pdb] ***\n"); } else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.SupKitchen"); System.err.println("Copyright (C) 2009 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if(mdlFilename == null) mdlFilename = arg; else if(refFilename == null) refFilename = arg; else throw new IllegalArgumentException("too many arguments!"); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-v")) { verbose = true; } else if(flag.equals("-append")) { append = true; } else if(flag.equals("-color")) { color = param; } else if(flag.equals("-kin")) { kinOut = true; } else if(flag.equals("-pdb")) { kinOut = false; } else if(flag.equals("-pdbs")) { kinOut = false; pdbsDirname = param; } else if(flag.equals("-nosplit")) { splitChains = false; } else if(flag.equals("-pc")) { parsePcChoice(param); // sets global var pcChoice } else if(flag.equals("-scale")) { try { scale = Double.parseDouble(param); } catch(NumberFormatException ex) { System.err.println("*** Error formatting "+param+" as double for scale!"); } } else if(flag.equals("-min")) { try { roundsOfMinimization = Integer.parseInt(param); } catch(NumberFormatException ex) { throw new IllegalArgumentException(param+" isn't a number!"); } } else if(flag.equals("-maxensemsize") || flag.equals("-maxm")) { try { maxEnsemSize = Integer.parseInt(param); } catch(NumberFormatException ex) { throw new IllegalArgumentException(param+" isn't a number!"); } } else if(flag.equals("-rmsdmax")) { try { rmsdMax = Double.parseDouble(param); } catch(NumberFormatException ex) { throw new IllegalArgumentException(param+" isn't a number!"); } } else if(flag.equals("-normsdmax")) { rmsdMax = -1; } else if(flag.equals("-lesk")) { try { rmsdLesk = Double.parseDouble(param); } catch(NumberFormatException ex) { throw new IllegalArgumentException(param+" isn't a number!"); } } else if(flag.equals("-nolesk")) { rmsdLesk = -1; } else if(flag.equals("-ca")) { superimpose = SELECT_CA; } else if(flag.equals("-bbheavy")) { superimpose = SELECT_BB_HEAVY; } else if(flag.equals("-bbheavyh")) { superimpose = SELECT_BB_HEAVY_H; } else if(flag.equals("-bbheavycb")) { superimpose = SELECT_BB_HEAVY_CB; } else if(flag.equals("-bbheavycbh")) { superimpose = SELECT_BB_HEAVY_CB_H; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/SubImpose.java0000644000000000000000000013312111744305700022442 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.Strings; import chiropraxis.sc.SidechainAngles2; //}}} /** * SubImpose is a tool for superimposing proteins based on a * carefully specified subset of atoms, * and calculating RMSD on a (possibly different) set of atoms. * It's also a play on words for "superimpose" and "subset". * *

    *
  1. If -super or -super1 is specified, those atoms from structure 1 are used to superimpose it onto the corresponding atoms from structure 2.
  2. *
  3. If -super2 is specified, those atoms from structure 2 will correspond to the atoms from structure 1 specified by -super1.
  4. *
  5. If -sieve is specified, those atoms are cut down to the specified fraction (0,1] by Lesk's sieve.
  6. *
  7. If -kin is specified, a kinemage is written showing the the atom correspondences.
  8. *
  9. If -pdb is specified, the new coordinates for structure 1 are written to file.
  10. *
  11. If -rms is specified, those atoms from structure 1 and the corresponding ones from structure 2 are used to compute RMSD.
  12. *
* *

Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
Begun on Thu Aug 30 15:23:09 PDT 2007 */ public class SubImpose //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("0.0###"); DecimalFormat df2 = new DecimalFormat("#0.0##"); DecimalFormat df3 = new DecimalFormat("0.0###"); //}}} //{{{ CLASS: SimpleResAligner //############################################################################## public static class SimpleResAligner implements Alignment.Scorer { // High is good, low is bad. public double score(Object a, Object b) { Residue r = (Residue) a; Residue s = (Residue) b; if(r.getName().equals(s.getName())) return 4; // match else return -1; // mismatch } public double open_gap(Object a) { return -8; } public double extend_gap(Object a) { return -2; } } //}}} //{{{ CLASS: SimpleNonWaterResAligner //############################################################################## /** * Extends SimpleResAligner by penalizing water-anything residue pairings, * which in my experience often screwed up alignments and thereby prevented * superpositions that were anywhere close to reasonable. - DAK 090824 */ public static class SimpleNonWaterResAligner extends SimpleResAligner { // High is good, low is bad. public double score(Object a, Object b) { Residue r = (Residue) a; Residue s = (Residue) b; if(r.getName().equals("HOH") || s.getName().equals("HOH")) return -1; // penalize water-anything pairing if(r.getName().equals(s.getName())) return 4; // match else return -1; // mismatch } public double open_gap(Object a) { return -8; } public double extend_gap(Object a) { return -2; } } //}}} //{{{ CLASS: StructureBasedAligner //############################################################################## static class StructureBasedAligner implements Alignment.Scorer { public boolean atomsAreEquivalant(AtomState s, AtomState t) { if(s.getName().equals(t.getName())) return true; if(s.getName().equals(" H ") && t.getName().equals(" CD ") // Xaa, Pro || s.getName().equals(" HA ") && t.getName().equals(" HA2") // Xaa, Gly || s.getName().equals(" HA ") && t.getName().equals("1HA ") // Xaa, Gly || s.getName().equals(" CB ") && t.getName().equals(" HA3") // Xaa, Gly || s.getName().equals(" CB ") && t.getName().equals("2HA ")) // Xaa, Gly return true; if(s.getName().equals(" CD ") && t.getName().equals(" H ") // Pro, Xaa || s.getName().equals(" HA2") && t.getName().equals(" HA ") // Gly, Xaa || s.getName().equals("1HA ") && t.getName().equals(" HA ") // Gly, Xaa || s.getName().equals(" HA3") && t.getName().equals(" CB ") // Gly, Xaa || s.getName().equals("2HA ") && t.getName().equals(" CB ")) // Gly, Xaa return true; return false; } // High is good, low is bad. public double score(Object a, Object b) { AtomState s = (AtomState) a; AtomState t = (AtomState) b; if(s == null || t == null) return -1; // gap if(!atomsAreEquivalant(s, t)) return 0; // mismatch, even accounting for quasi-structurally-equivalent atom names else if(s.distance(t) > 2) return 0; // far away else if(s.distance(t) <= 2 && s.distance(t) > 1) return 1; // in the neighborhood else if(s.distance(t) <= 1 && s.distance(t) > 0.5) return 2; // close else if(s.distance(t) <= 0.5) return 3; // very close else { System.err.println("Not sure how to score "+s+" vs. "+t+"!"); return 0; } } public double open_gap(Object a) { return extend_gap(a); } public double extend_gap(Object a) { return score(a, null); } } //}}} //{{{ Variable definitions //############################################################################## boolean verbose = false; boolean showDists = false; boolean showTransform = false; boolean fix180flips = true; String structIn1 = null, structIn2 = null; String kinOut = null, pdbOut = null; boolean kinStdOut = false, pdbStdOut = false; String superimpose1 = null; // describes atoms in structure 1 for superimposing onto structure 2 String superimpose2 = null; // describes atoms in structure 2 which will match up with those // in structure 1 described in superimpose1 - DAK String chainIDs1 = null; // single-character chain IDs from structure 1 to be used in sequence alignment String chainIDs2 = null; // single-character chain IDs from structure 2 to be used in sequence alignment String alignFilename = null; // manual sequence alignment input: chain1,resnum1,chain2,resnum2 per line Collection rmsd = new ArrayList(); // selection strings to do rmsd over double leskSieve = Double.NaN; double rmsdCutoff = Double.NaN; // above which PDB is not written out double rmsdGoal = Double.NaN; // iterative Lesk sieve until this rmsd is reached boolean shuffle = false; CoordinateFile coord1 = null, coord2 = null; Model m1 = null, m2 = null; ModelState s1 = null, s2 = null; Alignment align = null; AtomState[][] atoms = null; Transform R = null; int lenAtomsUsed = 0; //}}} //{{{ Constructor(s) //############################################################################## public SubImpose() { super(); } //}}} //{{{ fix180rotations //############################################################################## /** * For symmetric residues in res1 where the symmetric chi angle differs by * more than 90 degrees from the corresponding residue in res2, * rotate by 180 degrees to remove an rmsd that comes only from atom naming. * @return a new version of s1 with flips incorporated */ ModelState fix180rotations(ModelState s1, ModelState s2, Alignment align) throws IOException { DecimalFormat df = new DecimalFormat("0.0"); SidechainAngles2 sc = new SidechainAngles2(); for(int i = 0, len = align.a.length; i < len; i++) { if(align.a[i] == null || align.b[i] == null) continue; Residue r1 = (Residue) align.a[i]; Residue r2 = (Residue) align.b[i]; if(!r1.getName().equals(r2.getName())) continue; // sequence mismatch String whichAngle = null; if("PHE".equals(r1.getName())) whichAngle = "chi2"; else if("TYR".equals(r1.getName())) whichAngle = "chi2"; else if("ASP".equals(r1.getName())) whichAngle = "chi2"; else if("GLU".equals(r1.getName())) whichAngle = "chi3"; else continue; // This could potentially also be a problem for Arg "chi5" if you // had a nonstandard rotamer library somewhere that messed up the // NH1/NH2 naming convention, but for now we won't worry about it. // FYI, NH1 is cis to CD, and NH2 is trans to CD: // -- CD NH1 // \ / // NE -- CZ // \ // NH2 try { // Calculate both chi angles on [0,360) double a1 = sc.measureAngle(whichAngle, r1, s1) % 360; if(a1 < 0) a1 += 360; double a2 = sc.measureAngle(whichAngle, r2, s2) % 360; if(a2 < 0) a2 += 360; // Calculate difference on [0,180] double diff = Math.abs(a1 - a2); if(diff > 180) diff = 360 - diff; // If greater than 90, flip r1 if(diff > 90) { s1 = sc.setAngle(whichAngle, r1, s1, (a1 - 180)); if(verbose) System.err.println("Flipped "+whichAngle+" for "+r1+"; "+df.format(a1)+" - "+df.format(a2)+" = "+df.format(diff)+"; "+df.format(a1)+" --> "+df.format(sc.measureAngle(whichAngle, r1, s1))); } } catch(AtomException ex) { System.err.println("Unable to flip "+whichAngle+" for "+r1+": "+ex.getMessage()); } } return s1.createCollapsed(); } //}}} //{{{ readAlignmentFile //############################################################################## private void readAlignmentFile() throws IOException { ArrayList aList = new ArrayList(); ArrayList bList = new ArrayList(); FileInputStream fstream = new FileInputStream(alignFilename); // Get the object of DataInputStream DataInputStream in = new DataInputStream(fstream); BufferedReader br = new BufferedReader(new InputStreamReader(in)); // Read file line by line String line = null; while((line = br.readLine()) != null) { String chain1 = null, chain2 = null; int resnum1 = Integer.MIN_VALUE, resnum2 = Integer.MIN_VALUE; try { // Read line if(line.equals("")) continue; // ignore blank lines String[] parts = Strings.explode(line, ','); if(parts.length != 4 && parts.length != 2) throw new IllegalArgumentException( "Format for user-provided alignment file: "+ "chain1,resnum1,chain2,resnum2 per line"); resnum1 = Integer.parseInt(parts[1]); resnum2 = Integer.parseInt(parts[3]); if(parts.length == 4) { chain1 = parts[0]; chain2 = parts[2]; } if(chain1 == null || chain1.length() > 2 || chain2 == null || chain2.length() > 2) throw new IllegalArgumentException( "Format for user-provided alignment file: "+ "chain1,resnum1,chain2,resnum2 per line"); // Find matching residues Residue r1 = null, r2 = null; for(Iterator iter = m1.getResidues().iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); if(parts.length == 4) { // Respect chain IDs if(chain1 != null && r.getChain().equals(chain1) && resnum1 != Integer.MIN_VALUE && r.getSequenceInteger() == resnum1) { r1 = r; break; } } else //if(parts.length == 2) { // Ignore chain IDs if(resnum1 != Integer.MIN_VALUE && r.getSequenceInteger() == resnum1) { r1 = r; break; } } } for(Iterator iter = m2.getResidues().iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); if(parts.length == 4) { // Respect chain IDs if(chain2 != null && r.getChain().equals(chain2) && resnum2 != Integer.MIN_VALUE && r.getSequenceInteger() == resnum2) { r2 = r; break; } } else //if(parts.length == 2) { // Ignore chain IDs if(resnum2 != Integer.MIN_VALUE && r.getSequenceInteger() == resnum2) { r2 = r; break; } } } // Add to alignment if(r1 != null && r2 != null) { aList.add(r1); bList.add(r2); //System.err.println("Added "+r1+" <==> "+r2+" to manual alignment"); } else throw new IllegalArgumentException( "Can't find residues corresponding to "+line+"!"); } catch(NumberFormatException ex) { System.err.println("Can't parse number in "+line+"!"); } } Object[] a = new Residue[aList.size()]; Object[] b = new Residue[bList.size()]; for(int i = 0; i < aList.size(); i++) a[i] = aList.get(i); for(int i = 0; i < bList.size(); i++) b[i] = bList.get(i); if(a.length != b.length) throw new IllegalArgumentException( "Different lengths for 2 sides of manual alignment!"); align.a = a; align.b = b; } //}}} //{{{ getChains //############################################################################## /** Convenience function. */ public static Collection getChains(Model m) { return getChains(m, null); } /** * If chainIDs is not null, the user has specified which chains will be used * for sequence alignment, e.g. when multiple copies are present in a crystal * lattice or something. Independent of and preceding actual choice of atoms * atoms for superposition. */ public static Collection getChains(Model m, String chainIDs) { Collection chains = new ArrayList(); for(Iterator iter = m.getChainIDs().iterator(); iter.hasNext(); ) { String chainID = (String) iter.next(); if(chainIDs != null && chainIDs.indexOf(chainID) == -1) continue; // only use chains of interest chains.add( m.getChain(chainID) ); } return chains; } //}}} //{{{ getAtomsForSelection //############################################################################## /** * Apply the given selection to res1/s1, then find the corresponding atoms in res2/s2. * If a second selection is given, instead apply that to res2/s2 * to find what the user thinks should be the corresponding atoms. * return as a 2xN array of matched AtomStates, no nulls. */ public static AtomState[][] getAtomsForSelection(Collection res1, ModelState s1, Collection res2, ModelState s2, String selection1, String selection2, Alignment alignment, CoordinateFile cf1, CoordinateFile cf2) throws ParseException { // Get selected atom states from model 1 Selection sel = Selection.fromString(selection1); Collection allStates1 = Model.extractOrderedStatesByName(res1, Collections.singleton(s1)); sel.init(allStates1, cf1); Collection selStates1 = new ArrayList(); for(Iterator iter = allStates1.iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); if(sel.select(as)) selStates1.add(as); } int matched = 0; Collection selStates2 = new ArrayList(); if(selection2 != null) { // Residue correspondences given by flag // Get selected atom states from model 2 Selection sel2 = Selection.fromString(selection2); Collection allStates2 = Model.extractOrderedStatesByName(res2, Collections.singleton(s2)); sel2.init(allStates2, cf2); for(Iterator iter2 = allStates2.iterator(); iter2.hasNext(); ) { AtomState as2 = (AtomState) iter2.next(); if(sel2.select(as2)) { selStates2.add(as2); matched++; } } } else { // Residue correspondences set up algorithmically, as Ian originally intended Map map1to2 = new HashMap(); for(int i = 0; i < alignment.a.length; i++) { if(alignment.a[i] != null) map1to2.put(alignment.a[i], alignment.b[i]); // b[i] may be null } // Get corresponding states from model 2 for(Iterator iter = selStates1.iterator(); iter.hasNext(); ) { AtomState as1 = (AtomState) iter.next(); AtomState as2 = null; Residue r = (Residue) map1to2.get( as1.getResidue() ); if(r != null) { Atom a = r.getAtom( as1.getName() ); if(a != null) { try { as2 = s2.get(a); matched++; } catch(AtomException ex) { ex.printStackTrace(); } } } selStates2.add(as2); // as2 could still be null } } if(selStates1.size() != selStates2.size() || matched > selStates1.size()) throw new RuntimeException("logical error; sel1="+selStates1.size()+", sel2="+selStates2.size()+", matched="+matched); // Arrange data into nice arrays for convenience AtomState[][] ret = new AtomState[2][matched]; Iterator iter1 = selStates1.iterator(); Iterator iter2 = selStates2.iterator(); int idx = 0; while(iter1.hasNext()) { AtomState as1 = (AtomState) iter1.next(); AtomState as2 = (AtomState) iter2.next(); if(as2 == null) continue; ret[0][idx] = as1; ret[1][idx] = as2; idx++; } if(idx != matched) throw new RuntimeException("logical error; idx="+idx+", matched="+matched); return ret; } //}}} //{{{ permuteAtoms //############################################################################## /** * Try all possible permutations of selected atoms from structure 1 * vs. all possible permutations of selected atoms from structure 2. * Preserve N->C sequence order to avoid unmeaningful superpositions, * so in effect only permute atoms within the same residue. * If this method is not used, it is assumed that the atoms were read * in the proper order in both structures and are thus paired correctly. * This often works fine if the same number of atoms is selected per residue, * but may fail if more or fewer atoms are selected from specific residues. **/ AtomState[][] permuteAtoms() { double best_rmsd = Double.POSITIVE_INFINITY; int max = atoms[0].length; // == atoms[1].length int[] x = new int[max], best_x = null; int[] y = new int[max], best_y = null; for(int i = 0; i < max; i++) { x[i] = i; // mercurial indices to atoms from mobile structure y[i] = i; // mercurial indices to atoms from static structure } int tried = 0; while(true) // that x has more permutations for mobile atoms { AtomState[] atoms0 = new AtomState[max]; for(int i = 0; i < max; i++) atoms0[i] = atoms[0][x[i]]; if(validPermutation(atoms0)) { while(true) // that y has more permutations for static atoms { AtomState[] atoms1 = new AtomState[max]; for(int i = 0; i < max; i++) atoms1[i] = atoms[1][y[i]]; if(validPermutation(atoms1)) { tried++; SuperPoser superpos = new SuperPoser(atoms1, atoms0); R = superpos.superpos(); double rmsd = superpos.calcRMSD(R); if(rmsd < best_rmsd) { best_rmsd = rmsd; best_x = (int[]) x.clone(); best_y = (int[]) y.clone(); } } if(!next_permutation(y)) break; // from inner } }//inner: static if(!next_permutation(x)) break; // from outer }//outer: mobile if(verbose) System.err.println("Tried "+tried+" permutation(s); "+ "best rmsd: "+df.format(best_rmsd)); // Construct the final array AtomState[][] bestAtoms = new AtomState[ 2 ][ max ]; for(int i = 0; i < max; i++) { bestAtoms[0][i] = atoms[ 0 ] [ best_x[i] ]; // mobile (permuted) bestAtoms[1][i] = atoms[ 1 ] [ best_y[i] ]; // static (permuted) } return bestAtoms; } /** * Makes sure that the supplied array of atoms is "valid" * by checking that all pairs of consecutive atoms are in sequence order. */ private boolean validPermutation(AtomState[] a) { for(int j = 0; j < a.length-1; j++) { Residue r1 = a[j ].getAtom().getResidue(); Residue r2 = a[j+1].getAtom().getResidue(); if(r1.getSequenceInteger() > r2.getSequenceInteger()) return false; } return true; // apparently in sequence order } //}}} //{{{ next_permutation, reverse //############################################################################## /** * Borrowed from the C++ STL via a nice blog entry: * http://marknelson.us/2002/03/01/next-permutation * Called repeatedly with a sequence of integers initially in ascending order, * will generate all permutations in lexicographical order, returning false * when no more remain. */ private static boolean next_permutation(int[] x) { if(x.length <= 1) return false; int i = x.length - 1; while(true) { int ii = i--; if(x[i] < x[ii]) { int j = x.length; while(!(x[i] < x[--j])); int swap = x[i]; x[i] = x[j]; x[j] = swap; reverse(x, ii, x.length); return true; } if(i == 0) { reverse(x, 0, x.length); return false; } } } private static void reverse(int[] x, int start_inc, int end_exc) { int i = start_inc, j = end_exc-1; while(i < j) { int swap = x[i]; x[i] = x[j]; x[j] = swap; i++; j--; } } //}}} //{{{ sortByLeskSieve //############################################################################## /** * Applies Lesk's "sieve" method for selecting an optimal set * of C-alphas to superimpose. * A least-squares fit is applied over all points, and the rmsd (=score) * and worst-fitting pair are entered as a SortItem at the front of the array. * The worst pair is then removed from the set being fit, the fit is repeated, * and the new rmsd and worst pair are entered in the second array position. * This is repeated until all points have been processed. * * It appears this was described in * AM Lesk (1991) "Protein Architecture: A Practical Guide", IRL Press, Oxford. * It may have also been described in * Lesk and Chothia (1984) J Mol Biol 174, 175-191. * * THESE ARRAYS ARE SORTED IN PLACE (probabably in O(n**2) time). */ public static void sortByLeskSieve(Tuple3[] sm1, Tuple3[] sm2) { int i, len = sm1.length; // We're going to screw up the order of these arrays // as we "sieve" out the worst-fitting pairs. // More variables we'll need SuperPoser sp = new SuperPoser(sm1, sm2); Triple t = new Triple(); Transform R; double rmsd, gap2, worstGap2; int worstIndex; Tuple3 mSwap; for( ; len > 0; len--) { sp.reset(sm1, 0, sm2, 0, len); R = sp.superpos(); rmsd = sp.calcRMSD(R); //rmsd = sp.calcRMSD(R) / Math.sqrt(len); // from Gerstein & Altman 1995 JMB: rmsd grows as square of # of atoms // Find worst-fitting pair worstIndex = -1; worstGap2 = -1; for(i = 0; i < len; i++) { R.transform(sm2[i], t); gap2 = t.sqDistance(sm1[i]); if(gap2 > worstGap2) { worstGap2 = gap2; worstIndex = i; } } // Swap worst pair to back of list mSwap = sm1[len-1]; sm1[len-1] = sm1[worstIndex]; sm1[worstIndex] = mSwap; mSwap = sm2[len-1]; sm2[len-1] = sm2[worstIndex]; sm2[worstIndex] = mSwap; } } //}}} //{{{ writeKin, writePdb //############################################################################## void writeKin() throws IOException { PrintStream out = null; if(this.kinOut != null) out = new PrintStream(new BufferedOutputStream(new FileOutputStream(this.kinOut))); else out = new PrintStream(System.out); if(out == null) throw new IOException("*** Error writing kinemage!"); out.println("@kinemage"); out.println("@group {correspondances} dominant"); out.println("@vectorlist {pairs} color= green"); for(int i = 0; i < lenAtomsUsed; i++) { AtomState a1 = atoms[0][i], a2 = atoms[1][i]; out.println("{"+a1+"}P "+df3.format(a1.getX())+" "+df3.format(a1.getY())+" "+df3.format(a1.getZ())); out.println("{"+a2+"}L "+df3.format(a2.getX())+" "+df3.format(a2.getY())+" "+df3.format(a2.getZ())); } out.close(); } public void writePdb() throws IOException { PdbWriter pdbWriter = null; if(pdbOut != null) pdbWriter = new PdbWriter(new File(pdbOut)); else pdbWriter = new PdbWriter(System.out); if(pdbWriter == null) throw new IOException("*** Error writing PDB!"); pdbWriter.writeCoordinateFile(coord1); pdbWriter.close(); } //}}} //{{{ rms //############################################################################## double rms(AtomState[] a, AtomState[] b) { double rmsd = 0.0; int len = a.length; Triple t = new Triple(); for(int i = 0; i < len; i++) { t.likeDiff(a[i], b[i]); rmsd += t.mag2(); } return Math.sqrt(rmsd / len); } //}}} //{{{ doSuperposition //############################################################################## public void doSuperposition() throws IOException, ParseException { // Decide which atom selection to use if(superimpose1 == null) { superimpose1 = "atom_CA_"; if(verbose) System.err.print("No -super flag; using sequence-aligned CAs"); if(!Double.isNaN(rmsdGoal)) // iterative sieve until rmsd goal is reached { if(verbose) System.err.println(" (sieve to "+rmsdGoal+"A rmsd)"); if(!Double.isNaN(leskSieve)) System.err.println( "Using -rmsdgoal="+rmsdGoal+" instead of -sieve="+leskSieve); } else // single sieve; default if not user-defined { if(Double.isNaN(leskSieve)) if(verbose) System.err.println(" (no sieve)"); else if(verbose) System.err.println(" (best "+leskSieve*100+"%)"); } } if(alignFilename != null && superimpose2 != null) { System.err.print("Ignoring -super2 flag because alignment file provided"); superimpose2 = null; } // Align residues by sequence // With first approach, alignments can't cross chain boundaries. // As many chains as possible are aligned, without doubling up. if(chainIDs1 != null) System.err.println("Using subset of structure 1 chains: "+chainIDs1); if(chainIDs2 != null) System.err.println("Using subset of structure 2 chains: "+chainIDs2); align = Alignment.alignChains(getChains(m1, chainIDs1), getChains(m2, chainIDs2), new Alignment.NeedlemanWunsch(), new SimpleNonWaterResAligner()); if(align.a.length == 0) { System.err.println("No good chain-to-chain alignment; using chain-break-crossing method"); // The multiple chain alignment method above may have rejected ALL alignments // because none of them is great. // This can even happen for one chain vs. one chain when they don't match well. // So, just align all residues without regard to chain IDs. // This was originally the default in the code before Ian added the multiple // chain alignment method above; we'll use it now because it will actually // return *something* despite its imperfections. -DAK 110129 align = Alignment.needlemanWunsch(m1.getResidues().toArray(), m2.getResidues().toArray(), new SimpleNonWaterResAligner()); } if(alignFilename != null) { // Hijack Alignment object & replace with user-supplied alignment try { readAlignmentFile(); } catch(IOException ex) { System.err.println("Error reading alignment file: "+alignFilename+"!" +" Using default automatic sequence alignment"); } } if(verbose) { System.err.println("Residue alignments:"); for(int i = 0; i < align.a.length; i++) System.err.println(" "+align.a[i]+" <==> "+align.b[i]); System.err.println(); } // Fix 180 degree rotations of symmetric sidechains, which give spurious rmsds. if(fix180flips) s1 = fix180rotations(s1, s2, align); // If -super, do superimposition of s1 on s2. R = new Transform(); // identity, defaults to no superposition atoms = getAtomsForSelection(m1.getResidues(), s1, m2.getResidues(), s2, superimpose1, superimpose2, align, coord1, coord2); if(shuffle) { System.err.println("Shuffling intra-residue atoms"); permuteAtoms(); } if(verbose) { System.err.println("Atom alignments:"); for(int i = 0; i < atoms[0].length; i++) System.err.println(" "+atoms[0][i]+" <==> "+atoms[1][i]); System.err.println(); } if(atoms[0].length < 3) throw new IllegalArgumentException("Can't superimpose on less than 3 atoms!"); // struct2 is the reference point; struct1 should move. SuperPoser superpos = new SuperPoser(atoms[1], atoms[0]); R = superpos.superpos(); System.err.println("rmsd\tn_atoms\tselection"); System.err.println(df.format(superpos.calcRMSD(R))+"\t"+atoms[0].length+"\t"+superimpose1); lenAtomsUsed = atoms[0].length; if(!Double.isNaN(rmsdGoal)) { // Eliminate selected atoms one-by-one until rmsd <= goal int sieveCount = 0; while(superpos.calcRMSD(R) > rmsdGoal) { sieveCount++; sortByLeskSieve(atoms[0], atoms[1]); int len = atoms[0].length - 1; // new length after we drop worst-fitting atom pair AtomState[][] newAtoms = new AtomState[2][len]; for(int i = 0; i < 2; i++) for(int j = 0; j < len; j++) newAtoms[i][j] = atoms[i][j]; atoms = newAtoms; if(atoms[0].length < 3) throw new IllegalArgumentException( "Can't achieve rmsd goal of "+rmsdGoal+"A .. would have to trim to < 3 atoms!"); superpos.reset(atoms[1], atoms[0]); R = superpos.superpos(); } System.err.println(df.format(superpos.calcRMSD(R))+"\t"+atoms[0].length +"\t"+superimpose1+" [sieve #"+sieveCount+"]"); } else if(!Double.isNaN(leskSieve)) { int len = (int) Math.round( leskSieve * atoms[0].length ); if(len < 3) System.err.println("WARNING: too few atoms for Lesk's sieve at "+df.format(leskSieve)); else { lenAtomsUsed = len; sortByLeskSieve(atoms[0], atoms[1]); superpos.reset(atoms[1], 0, atoms[0], 0, len); // only use the len best R = superpos.superpos(); System.err.println(df.format(superpos.calcRMSD(R))+"\t"+len +"\t"+superimpose1+" [sieve = "+df.format(leskSieve)+"]"); } } // Transform model 1 so transformed coords will be used in the future. for(Iterator iter = Model.extractOrderedStatesByName(m1).iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); R.transform(as); } // Make sure RMSD does not exceed our threshold (if applicable) if(!Double.isNaN(rmsdCutoff)) { if(superpos.calcRMSD(R) > rmsdCutoff) { System.err.println("No further output b/c RMSD="+ df.format(superpos.calcRMSD(R))+" > cutoff="+rmsdCutoff); atoms = null; // signal to Main() return; } else System.err.println("Proceeding with output b/c RMSD="+ df.format(superpos.calcRMSD(R))+" <= cutoff="+rmsdCutoff); } } //}}} //{{{ doRmsd //############################################################################## public void doRmsd() throws ParseException { for(Iterator iter = rmsd.iterator(); iter.hasNext(); ) { String rmsd_sel = (String) iter.next(); atoms = getAtomsForSelection(m1.getResidues(), s1, m2.getResidues(), s2, rmsd_sel, null, align, coord1, coord2); if(verbose) { System.err.println("Atom alignments:"); for(int i = 0; i < atoms[0].length; i++) System.err.println(" "+atoms[0][i]+" <==> "+atoms[1][i]); System.err.println(); } //! Ack! Can't use superpos.calcRMSD() b/c it translates everything to the origin! //! // struct2 is the reference point, struct1 should move. //! // (nothing's really moving here so it doesn't matter). //! SuperPoser superpos = new SuperPoser(atoms[1], atoms[0]); //! // Don't recalculate, use our old transform! //! //R = superpos.superpos(); //! // Oops, no, use an identity transform -- coords already moved! //! System.out.println(df.format(superpos.calcRMSD(new Transform()))+"\t"+atoms[0].length+"\t"+rmsd_sel); System.out.println(df.format(rms(atoms[1], atoms[0]))+"\t"+atoms[0].length+"\t"+rmsd_sel); } } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException, ParseException { // Read in structures, get arrays of residues. if(structIn1 == null || structIn2 == null) throw new IllegalArgumentException("must provide two structures"); PdbReader pdbReader = new PdbReader(); coord1 = pdbReader.read(new File(structIn1)); coord2 = pdbReader.read(new File(structIn2)); m1 = coord1.getFirstModel(); m2 = coord2.getFirstModel(); s1 = m1.getState(); s2 = m2.getState(); // Superpose structure 2 onto structure 1 regardless of other options doSuperposition(); if(atoms == null) { // If user wants PDB output but isn't using -pdb=outfile, // warn them about what might happen if(!showTransform && !showDists && rmsd.isEmpty() && kinOut == null && !kinStdOut && pdbOut == null) System.err.println( "WARNING: You'll still get empty files if you use 'subimpose > outfile'!" +"\nUse 'subimpose -pdb=outfile' to be safe!"); return; } // If -t, print the transform if(showTransform) System.out.println("Transformation matrix (premult, Rx -> x'):\n"+R); // If -d, print distances between atoms from selection else if(showDists) for(int i = 0; i < atoms[0].length; i++) System.out.println(atoms[0][i].getAtom()+","+atoms[1][i].getAtom()+"," +df2.format(Triple.distance(atoms[0][i], atoms[1][i]))); // If -rms, do RMSD calculations over different sets of atoms else if(!rmsd.isEmpty()) doRmsd(); // If -kin, write kinemage showing atoms for superposition else if(kinOut != null || kinStdOut) writeKin(); // If no other output specified, write superimposed PDB file //else if(atoms != null) // we already had an if(atoms == null) clause above else writePdb(); // WARNING: You'll still get empty files if you use "subimpose > outfile"! // Use "subimpose -pdb=outfile" to be safe! } public static void main(String[] args) { SubImpose mainprog = new SubImpose(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } catch(Exception ex) { ex.printStackTrace(); System.exit(2); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("SubImpose.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'SubImpose.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.SubImpose"); System.err.println("Copyright (C) 2007 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if(structIn1 == null) structIn1 = arg; else if(structIn2 == null) structIn2 = arg; else throw new IllegalArgumentException("too many arguments!"); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-v")) verbose = true; else if(flag.equals("-t")) showTransform = true; else if(flag.equals("-d")) showDists = true; else if(flag.equals("-noscflip")) fix180flips = false; else if(flag.equals("-chains1") || flag.equals("-chain1") || flag.equals("-chains") || flag.equals("-chain")) chainIDs1 = param; else if(flag.equals("-chains2") || flag.equals("-chain2")) chainIDs2 = param; else if(flag.equals("-super1") || flag.equals("-super")) superimpose1 = param; else if(flag.equals("-super2")) superimpose2 = param; else if(flag.equals("-pdb")) { if(param == null) pdbStdOut = true; else pdbOut = param; } else if(flag.equals("-kin")) { if(param == null) kinStdOut = true; else kinOut = param; } else if(flag.equals("-rms")) { if(param == null) throw new IllegalArgumentException("-rms must be followed by a number!"); rmsd.add(param); } else if(flag.equals("-sieve")) { try { leskSieve = Double.parseDouble(param); } catch(NumberFormatException ex) { throw new IllegalArgumentException(param+" isn't a number!"); } if(leskSieve <= 0 || leskSieve > 1) throw new IllegalArgumentException("value for -sieve out of range (0,1]"); } else if(flag.equals("-rmsdgoal") || flag.equals("-rmsdtarget")) { try { rmsdGoal = Double.parseDouble(param); } catch(NumberFormatException ex) { throw new IllegalArgumentException(param+" isn't a number!"); } if(Double.isNaN(rmsdGoal) || rmsdGoal < 0) System.err.println("Problem with "+param+" as param for -rmsdgoal"); } else if(flag.equals("-rmsdcutoff") || flag.equals("-rmsdmax")) { try { rmsdCutoff = Double.parseDouble(param); } catch(NumberFormatException ex) { throw new IllegalArgumentException(param+" isn't a number!"); } if(Double.isNaN(rmsdCutoff) || rmsdCutoff < 0) System.err.println("Problem with "+param+" as param for -rmsdcutoff"); } else if(flag.equals("-align")) { alignFilename = param; } else if(flag.equals("-shuffle")) { shuffle = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/BackrubPioneer.java0000644000000000000000000003625511571452342023444 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.Strings; //}}} /** * BackrubPioneer is the backrub companion to ShearPioneer. * *

Copyright (C) 2010 by Daniel A. Keedy. All rights reserved. *
Begun on Wed Dec. 15, 2010 */ public class BackrubPioneer extends ShearPioneer { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public BackrubPioneer() { super(); } //}}} //{{{ doMoveSeries //############################################################################## /** * Performs a series of backrubs of varying magnitudes, and prints out * some type of kinemage (Rama streaks or local backbone structures). */ void doMoveSeries(Model model, ModelState state, Residue res, String label) { System.out.println("@group {brb"+resnum+"-"+(resnum+2)+label +" ep"+df5.format(epsilon)+"} animate dominant"); Residue res1 = res; Residue res2 = res1.getNext(model); Residue res3 = res2.getNext(model); if(res1 == null || res2 == null || res3 == null) { System.err.println("Oops, missing residues somewhere in here: "+resnum+"-"+(resnum+2)); System.exit(0); } ArrayList residues = new ArrayList(); residues.add(res1); residues.add(res2); residues.add(res3); Residue[] resArray = residues.toArray(new Residue[residues.size()]); ArrayList movedRegions = new ArrayList(); for(double theta = -1.0 * maxTheta; theta <= maxTheta; theta += thetaSpacing) { try { // Primary backrub ModelState newState = CaRotation.makeConformation(residues, state, theta, false); // Counter-rotations to restore O1 and O2 double pepRot1 = calcPepRot(state, newState, res1, res2, theta); double pepRot2 = calcPepRot(state, newState, res2, res3, theta); double[] thetas = new double[] { pepRot1, pepRot2 }; boolean[] idealizeSC = new boolean[] { false, false, false }; newState = CaShear.twistPeptides(resArray, newState, thetas, idealizeSC); // Store data for output double[] rots = new double[3]; rots[0] = theta; rots[1] = pepRot1; rots[2] = pepRot2; double[] phipsi = new double[4]; phipsi[0] = AminoAcid.getPhi(model, res1, newState); phipsi[1] = AminoAcid.getPsi(model, res1, newState); phipsi[2] = AminoAcid.getPhi(model, res3, newState); phipsi[3] = AminoAcid.getPsi(model, res3, newState); boolean badTau = AminoAcid.getTauDeviation(res1, newState) > maxTauDev || AminoAcid.getTauDeviation(res2, newState) > maxTauDev || AminoAcid.getTauDeviation(res3, newState) > maxTauDev; BackrubbedRegion s = new BackrubbedRegion(resArray, newState, rots, phipsi, badTau); movedRegions.add(s); } catch(AtomException ex) { System.err.println("Can't perform "+df.format(theta)+" degree backrub!"); } catch(ResidueException ex) { System.err.println("Can't get phi/psi after "+df.format(theta)+" degree backrub!"); } } // Kinemage if(outputMode == STREAKS) { printStreaks(movedRegions); } else if(outputMode == STRUCTS) { printStructs(movedRegions, model); } else System.err.println("Cannot compute! Bad output mode: "+outputMode); } //}}} //{{{ printStreaks //############################################################################## /** * Prints two streaks of phi/psi points, one for each end of a backrub series, * in kinemage format. */ void printStreaks(ArrayList movedRegions) { System.out.println("@balllist {backrub i} radius= 0.3 master= {backrub i}"); for(int i = 0; i < movedRegions.size(); i++) { BackrubbedRegion s = (BackrubbedRegion) movedRegions.get(i); System.out.println("{i " +s.res1.getName().toLowerCase().trim()+s.res1.getSequenceInteger() +" "+df.format(s.theta)+","+df.format(s.pepRot1)+","+df.format(s.pepRot2) +" ep="+df2.format(epsilon)+" ("+df.format(s.phi1)+","+df.format(s.psi1)+")}" +(s.badTau ? "hotpink " : "peachtint ") +df4.format(s.phi1)+" "+df4.format(s.psi1)); // actual coordinates } System.out.println("@balllist {backrub i+2} radius= 0.3 master= {backrub i+2}"); for(int i = 0; i < movedRegions.size(); i++) { BackrubbedRegion s = (BackrubbedRegion) movedRegions.get(i); System.out.println("{i+3 " +s.res3.getName().toLowerCase().trim()+s.res3.getSequenceInteger() +" "+df.format(s.theta)+","+df.format(s.pepRot1)+","+df.format(s.pepRot2) +" ep="+df2.format(epsilon)+" ("+df.format(s.phi3)+","+df.format(s.psi3)+")}" +(s.badTau ? "hotpink " : "peachtint ") +df4.format(s.phi3)+" "+df4.format(s.psi3)); // actual coordinates } } //}}} //{{{ printStructs //############################################################################## /** * Prints a series of local backbone structures resulting from backrubs of varying * magnitudes in kinemage format. */ void printStructs(ArrayList movedRegions, Model model) { for(int i = 0; i < movedRegions.size(); i++) { BackrubbedRegion s = (BackrubbedRegion) movedRegions.get(i); if(pdbOut) { PdbWriter writer = new PdbWriter(System.out); System.out.println("MODEL "+((i+1) < 10 ? " " : "")+(i+1)); writer.writeResidues(model.getResidues(), s.state); } else { Atom ca1 = s.res1.getAtom(" CA "); Atom c1 = s.res1.getAtom(" C "); Atom o1 = s.res1.getAtom(" O "); Atom n2 = s.res2.getAtom(" N "); Atom ca2 = s.res2.getAtom(" CA "); Atom c2 = s.res2.getAtom(" C "); Atom o2 = s.res2.getAtom(" O "); Atom n3 = s.res3.getAtom(" N "); Atom ca3 = s.res3.getAtom(" CA "); try { AtomState ca1s = s.state.get(ca1); AtomState c1s = s.state.get(c1); AtomState o1s = s.state.get(o1); AtomState n2s = s.state.get(n2); AtomState ca2s = s.state.get(ca2); AtomState c2s = s.state.get(c2); AtomState o2s = s.state.get(o2); AtomState n3s = s.state.get(n3); AtomState ca3s = s.state.get(ca3); System.out.println("@vectorlist {"+s.toString() +" "+df.format(s.theta)+","+df.format(s.pepRot1)+","+df.format(s.pepRot2) +"} width= 2 color= "+(s.badTau ? "hotpink" : "peachtint")); printAtomCoords(ca1s, s.res1+" 'CA'", true); printAtomCoords(c1s, s.res1+" 'C'" , false); printAtomCoords(o1s, s.res1+" 'O'" , false); printAtomCoords(c1s, s.res1+" 'C'" , true); printAtomCoords(n2s, s.res2+" 'N'" , false); printAtomCoords(ca2s, s.res2+" 'CA'", false); printAtomCoords(c2s, s.res2+" 'C'" , false); printAtomCoords(o2s, s.res2+" 'O'" , false); printAtomCoords(c2s, s.res2+" 'C'" , true); printAtomCoords(n3s, s.res3+" 'N'" , false); printAtomCoords(ca3s, s.res3+" 'CA'", false); } catch(AtomException ex) { System.err.println("Error printing structures for "+s); } } } } //}}} //{{{ CLASS: BackrubbedRegion //############################################################################## /** * Embodies a local backrubbed structure and several useful aspects of its geometry. */ public class BackrubbedRegion //extends ... implements ... { protected Residue res1, res2, res3; protected ModelState state; protected double theta, pepRot1, pepRot2; protected double phi1, psi1, phi3, psi3; protected boolean badTau; // XX-TODO: || Rama outlier! public BackrubbedRegion(Residue[] r, ModelState s, double[] rots, double[] pp, boolean bt) { super(); res1 = r[0]; res2 = r[1]; res3 = r[2]; state = s; theta = rots[0]; pepRot1 = rots[1]; pepRot2 = rots[2]; phi1 = pp[0]; psi1 = pp[1]; phi3 = pp[2]; psi3 = pp[3]; badTau = bt; } public String toString() { return res1.getName().toLowerCase().trim()+res1.getSequenceInteger()+"-"+ res3.getName().toLowerCase().trim()+res3.getSequenceInteger(); } } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { if(filename == null) { if(useIdealHelix) { if(verbose) System.err.println("Using ideal helix"); } else { System.err.println("Using ideal helix (no input file provided)"); useIdealHelix = true; } } if(filename != null && !Double.isNaN(phipsiRange)) { System.err.println("Grid of initial phi,psi requires using ideal helix (-alpha)!"); System.exit(0); } if(!Double.isNaN(minEpsilon) && !Double.isNaN(maxEpsilon) && !Double.isNaN(phipsiRange)) { System.err.println("Can't use -epsilon=#,# AND -phipsirange=#, silly goose!"); System.exit(0); } if(resnum == Integer.MAX_VALUE) { System.err.println("Need a residue number! Use -res=i (for i to i+2 backrub)"); System.exit(0); } if(phipsiRange > 15) { System.err.println("Init phi,psi range of "+df3.format(phipsiRange)+" too big! Using 15"); phipsiRange = 15; } if(phipsiRange > 0 && outputMode == STRUCTS && !pdbOut) { System.err.println("Warning: Exact kin coords w/ altered init phi/psi are not" +" meaningful w.r.t. original coords!"); } try { PdbReader reader = new PdbReader(); CoordinateFile cf = null; if(filename != null) cf = reader.read(new File(filename)); else cf = reader.read(this.getClass().getResourceAsStream("idealpolyala12-alpha.pdb")); Model m = cf.getFirstModel(); processModel(m); } catch(IOException ioe) { System.err.println("Trouble parsing file!"); } } public static void main(String[] args) { BackrubPioneer mainprog = new BackrubPioneer(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("BackrubPioneer.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'BackrubPioneer.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.BackrubPioneer"); System.err.println("Copyright (C) 2010 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/VariableRegions.java0000644000000000000000000012004111531212724023602 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * VariableRegions searches through the alternate conformation loops * of a crystal structure, outputting the Ca-Ca distance and phi,psi for each * residue between the hinge points. * * It can also do the same for two provided PDB files, e.g. from the Donald lab's * BD backbone-DEE protein design algorithm (the '-hinges' option is on by default * in this mode). * * Alternative output modes: kinemage (default) or text/csv * *

Copyright (C) 2007 by Daniel A. Keedy. All rights reserved. *
Begun on Mon Feb. 11, 2007. */ public class VariableRegions //extends ... implements ... { //{{{ Constants PrintStream out = System.out; DecimalFormat df = new DecimalFormat("#.###"); DecimalFormat df2 = new DecimalFormat("#.#"); DecimalFormat df3 = new DecimalFormat("###.#"); //}}} //{{{ Variable definitions //############################################################################## String filename1 = null; String filename2 = null; String label1 = null; String label2 = null; String delim = ","; boolean verbose = false; boolean doKin = true; boolean absVal = false; boolean allRes = false; boolean hinges = true; double dCaMin = 0.1; double dCaScale = Double.NaN; // for text and kin double dPhiPsiScale = Double.NaN; // for kin only double[] maxAbsMvmts = null; //}}} //{{{ Constructor(s) //############################################################################## public VariableRegions() { super(); } //}}} //{{{ CLASS: SimpleResAligner //############################################################################## static class SimpleResAligner implements Alignment.Scorer { // High is good, low is bad. public double score(Object a, Object b) { Residue r = (Residue) a; Residue s = (Residue) b; if(r == null || s == null) return -1; // gap else if(r.getName().equals(s.getName())) return 2; // match else return 0; // mismatch } public double open_gap(Object a) { return extend_gap(a); } public double extend_gap(Object a) { return score(a, null); } } //}}} //{{{ searchOneModel //############################################################################## /** * For evaluating variability in alternate conformation regions within a * single PDB file. */ void searchOneModel(Model model) { if(verbose) System.err.println("Looking for variable regions in "+filename1); ModelState state1 = model.getState("A"); ModelState state2 = model.getState("B"); if(state2 != null) { // Get residues that move TreeMap moved = new TreeMap(); TreeMap ca2s = new TreeMap(); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(res != null) { Residue prev = res.getPrev(model); Residue next = res.getNext(model); try { Atom ca = res.getAtom(" CA "); AtomState ca1 = state1.get(ca); AtomState ca2 = state2.get(ca); double caTravel = Triple.distance(ca1, ca2); double dPhi = Double.NaN, dPsi = Double.NaN; if(prev != null && next != null) { double phi1 = calcPhi(prev, res, state1); double phi2 = calcPhi(prev, res, state2); double psi1 = calcPsi(res, next, state1); double psi2 = calcPsi(res, next, state2); dPhi = angleDiff(phi1, phi2); dPsi = angleDiff(psi1, psi2); } if(hinges || (!Double.isNaN(dPhi) && dPhi != 0) || (!Double.isNaN(dPsi) && dPsi != 0) || caTravel != 0) { // This residue moved, or we ultimately want just "hinge" residues and will // excise the ones in between in the next step double[] movements = new double[3]; movements[0] = dPhi; movements[1] = dPsi; movements[2] = caTravel; moved.put(res, movements); ca2s.put(res, ca2); } } catch (AtomException ae) { } } } //for each residue if(hinges) { // Changes the contents of the 'moved' Residue->movement mapping so that // only Ca-Ca arrows will be drawn for residues in the midst of "hinged: loops & // only dphi,psi fans will be drawn for residues on the ends of those loops. doHinges(model, moved); } printOneModelResults(model, state1, moved, ca2s); } else System.err.println("No altB ModelState for Model "+model+"..."); } //}}} //{{{ printOneModelResults //############################################################################## void printOneModelResults(Model model, ModelState state1, TreeMap moved, TreeMap ca2s) { // Find maxima of d(phi), d(psi) and d(Ca) for normalization purposes maxAbsMvmts = new double[3]; maxAbsMvmts[0] = 0; maxAbsMvmts[1] = 0; maxAbsMvmts[2] = 0; for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(res != null && moves(res, moved)) { // Something moved double[] mvmts = moved.get(res); if(Math.abs(mvmts[0]) > maxAbsMvmts[0]) maxAbsMvmts[0] = Math.abs(mvmts[0]); // d(phi) if(Math.abs(mvmts[1]) > maxAbsMvmts[1]) maxAbsMvmts[1] = Math.abs(mvmts[1]); // d(psi) if(Math.abs(mvmts[2]) > maxAbsMvmts[2]) maxAbsMvmts[2] = Math.abs(mvmts[2]); // d(Ca) } } if(verbose) { System.err.println("Max d(phi): "+df2.format(maxAbsMvmts[0])); System.err.println("Max d(phi): "+df2.format(maxAbsMvmts[1])); System.err.println("Max d(Ca) : "+df2.format(maxAbsMvmts[2])); } if(doKin) out.println("@group {var-reg} dominant"); else out.println("label:model:chain:res_type:res_num:dPhi:dPsi:dCa"); // Output (kin or text) for residues that move for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(verbose) System.err.println("seeing if "+res+" moved..."); if(res != null && moves(res, moved)) { // Something moved double[] mvmts = moved.get(res); double dPhi = mvmts[0]; double dPsi = mvmts[1]; double caTravel = mvmts[2]; if(doKin) { if(dPhi == Double.POSITIVE_INFINITY && dPsi == Double.POSITIVE_INFINITY) { // Draw arrows, not phi/psi fans doKinForRes(res, state1, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY, new Triple(ca2s.get(res))); } else if(caTravel == Double.POSITIVE_INFINITY) { // Draw phi/psi fans, not arrows doKinForRes(res, state1, dPhi, dPsi, null); } else { // (default) doKinForRes(res, state1, dPhi, dPsi, new Triple(ca2s.get(res))); } } else if( allRes || (!Double.isNaN(dPhi) && !Double.isNaN(dPsi) && (dPhi != 0 || dPsi != 0 || caTravel != 0)) ) { // Either something changed and is therefore worth printing // or we want to print stats for all residues regardless of // whether anything changed. out.print(label1+delim+model+delim+res.getChain()+delim+ res.getName()+delim+res.getSequenceInteger()+delim); if(!Double.isNaN(dPhi)) out.print(df.format(dPhi)+delim); else out.print("__?__"+delim); if(!Double.isNaN(dPsi)) out.print(df.format(dPsi)+delim); else out.print("__?__"+delim); if(!Double.isNaN(caTravel)) out.println(df.format(caTravel)); else out.print("__?__"); } } } //for each residue } //}}} //{{{ searchTwoModels //############################################################################## /** * For evaluating variability in corresponding regions between two related * PDB files, e.g. from the flexible backbone DEE ("BD") algorithm. */ void searchTwoModels(Model model1, Model model2) { if(verbose) System.err.println("Looking for variable regions between "+filename1+" and "+filename2+"..."); // Align residues by sequence // For now we just take all residues as they appear in the file, without regard to chain IDs, etc. Alignment align = Alignment.needlemanWunsch(model1.getResidues().toArray(), model2.getResidues().toArray(), new SimpleResAligner()); if(verbose) { System.err.println("Residue alignments:"); for(int i = 0; i < align.a.length; i++) System.err.println(" "+align.a[i]+" <==> "+align.b[i]); System.err.println(); } ModelState state1 = model1.getState(); ModelState state2 = model2.getState(); // Get residues that move TreeMap moved = new TreeMap(); TreeMap ca2s = new TreeMap(); for(int i = 0, len = align.a.length; i < len; i++) { if(align.a[i] == null || align.b[i] == null) continue; Residue res1 = (Residue) align.a[i]; Residue res2 = (Residue) align.b[i]; if(!res1.getName().equals(res2.getName())) continue; // sequence mismatch if(verbose) System.err.println("Comparing "+res1+" to "+res2+"..."); Residue prev1 = res1.getPrev(model1); Residue next1 = res1.getNext(model1); Residue prev2 = res2.getPrev(model2); Residue next2 = res2.getNext(model2); try { Atom calpha1 = res1.getAtom(" CA "); Atom calpha2 = res2.getAtom(" CA "); AtomState ca1 = state1.get(calpha1); AtomState ca2 = state2.get(calpha2); double caTravel = Triple.distance(ca1, ca2); if(verbose) System.err.println("Dist ("+ca1.getX()+","+ca1.getY()+","+ca1.getZ() +") to ("+ca2.getX()+","+ca2.getY()+","+ca2.getZ()+") = "+caTravel+" (caTravel)"); double phi1 = Double.NaN, psi1 = Double.NaN; if(prev1 != null && next1 != null) { phi1 = calcPhi(prev1, res1, state1); psi1 = calcPsi(res1, next1, state1); } double phi2 = Double.NaN, psi2 = Double.NaN; if(prev2 != null && next2 != null) { phi2 = calcPhi(prev2, res2, state2); psi2 = calcPsi(res2, next2, state2); } double dPhi = Double.NaN, dPsi = Double.NaN; if(!Double.isNaN(phi1) && !Double.isNaN(psi1) && !Double.isNaN(phi2) && !Double.isNaN(psi2)) { dPhi = angleDiff(phi1, phi2); dPsi = angleDiff(psi1, psi2); } if(hinges || !Double.isNaN(dPhi) || !Double.isNaN(dPsi) || caTravel != 0) { // This residue moved, or we ultimately want just "hinge" residues // and will excise the ones in between in the next step. double[] movements = new double[3]; movements[0] = dPhi; movements[1] = dPsi; movements[2] = caTravel; moved.put(res1, movements); ca2s.put(res1, ca2); } } catch (AtomException ae) { } } //for each residue pair in alignment if(hinges) { // Changes the contents of the 'moved' Residue->movement mapping so that // only Ca-Ca arrows will be drawn for residues in the midst of "hinged: loops & // only dphi,psi fans will be drawn for residues on the ends of those loops. doHinges(model1, moved); } printTwoModelsResults(model1, model2, state1, moved, ca2s, align); } //}}} //{{{ printTwoModelsResults //############################################################################## void printTwoModelsResults(Model model1, Model model2, ModelState state1, TreeMap moved, TreeMap ca2s, Alignment align) { // Find maxima of d(phi), d(psi) and d(Ca) for normalization purposes maxAbsMvmts = new double[3]; maxAbsMvmts[0] = 0; maxAbsMvmts[1] = 0; maxAbsMvmts[2] = 0; for(int i = 0, len = align.a.length; i < len; i++) { if(align.a[i] == null || align.b[i] == null) continue; Residue res1 = (Residue) align.a[i]; Residue res2 = (Residue) align.b[i]; if(res1 != null && moves(res1, moved)) // DO want moves method here, not caMovesEnough (that was determined earlier) { // Something moved ENOUGH double[] mvmts = moved.get(res1); if(Math.abs(mvmts[0]) > maxAbsMvmts[0]) maxAbsMvmts[0] = Math.abs(mvmts[0]); // d(phi) if(Math.abs(mvmts[1]) > maxAbsMvmts[1]) maxAbsMvmts[1] = Math.abs(mvmts[1]); // d(psi) if(Math.abs(mvmts[2]) > maxAbsMvmts[2]) maxAbsMvmts[2] = Math.abs(mvmts[2]); // d(Ca) } } if(verbose) { System.err.println("Max d(phi): "+df2.format(maxAbsMvmts[0])); System.err.println("Max d(phi): "+df2.format(maxAbsMvmts[1])); System.err.println("Max d(Ca) : "+df2.format(maxAbsMvmts[2])); } if(doKin) out.println("@group {var-reg} dominant"); else out.println("label1:label2:model1:model2:chain1:chain2:res_type1:res_type2:res_num1:res_num2:dPhi:dPsi:dCa"); // Output (kin or text) for residues that move for(int i = 0, len = align.a.length; i < len; i++) { if(align.a[i] == null || align.b[i] == null) continue; Residue res1 = (Residue) align.a[i]; Residue res2 = (Residue) align.b[i]; if(res1 != null && moves(res1, moved)) // DO want moves method here, not caMovesEnough (that was determined earlier) { // Something moved ENOUGH double[] mvmts = moved.get(res1); double dPhi = mvmts[0]; double dPsi = mvmts[1]; double caTravel = mvmts[2]; if(doKin) { if(dPhi == Double.POSITIVE_INFINITY && dPsi == Double.POSITIVE_INFINITY) { // Draw arrows, not phi/psi fans doKinForRes(res1, state1, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY, new Triple(ca2s.get(res1))); } else if(caTravel == Double.POSITIVE_INFINITY) { // Draw phi/psi fans, not arrows doKinForRes(res1, state1, dPhi, dPsi, null); } else { // (default) doKinForRes(res1, state1, dPhi, dPsi, new Triple(ca2s.get(res1))); } } else if( allRes || (!Double.isNaN(dPhi) && !Double.isNaN(dPsi) && (dPhi != 0 || dPsi != 0 || caTravel != 0)) ) { // Either something changed and is therefore worth printing // or we want to print stats for all residues regardless of // whether anything changed. out.print(label1+delim+label2+delim+model1+delim+model2+delim +res1.getChain()+delim+res2.getChain()+delim +res1.getName()+delim+res2.getName()+delim +res1.getSequenceInteger()+delim+res2.getSequenceInteger()+delim); if(!Double.isNaN(dPhi)) out.print(df.format(dPhi)+delim); else out.print("__?__"+delim); if(!Double.isNaN(dPsi)) out.print(df.format(dPsi)+delim); else out.print("__?__"+delim); if(!Double.isNaN(caTravel)) out.println(df.format(caTravel)); else out.print("__?__"); } } } //for each residue pair in alignment } //}}} //{{{ doHinges //############################################################################## /** Alters linked residue-movement data so that only residues in the midst * of "hinged" regions of movement are considered to move. Everything else * outside of those regions is treated as static */ TreeMap doHinges(Model model, TreeMap moved) { // Get first residue in model Residue firstRes = null; for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue testRes = (Residue) iter.next(); if(firstRes == null) firstRes = testRes; else if(testRes.getSequenceInteger() < firstRes.getSequenceInteger()) firstRes = testRes; } if(verbose) System.err.println("Found first residue: "+firstRes); // Get stretches of residues that move; keep only ends ("hinge" residues) Residue res = firstRes; ArrayList stretch = new ArrayList(); boolean endOfChain = false; while (!endOfChain) { if(res.getNext(model) != null) { Residue temp = res.getNext(model); res = temp; // Decide whether to treat as move or not boolean treatAsMove = false; //if(!Double.isNaN(dCaMin) && caMovesEnough(res, moved)) treatAsMove = true; if(caMovesEnough(res, moved)) treatAsMove = true; else if(moves(res, moved)) treatAsMove = true; if(treatAsMove) stretch.add(res); else if(stretch.size() > 0) { // End of stretch of residues that move (enough) => treat first and last as having // moved only phi/psi and residues in btw as having moved only Ca; reset stretch if(verbose) System.err.println( "Variable region from '"+stretch.get(0)+"' to '"+stretch.get(stretch.size()-1)+"'"); if(stretch.size() > 2) { double[] oldMvmts = moved.get(stretch.get(0)); double[] newMvmts = new double[3]; newMvmts[0] = oldMvmts[0]; newMvmts[1] = oldMvmts[1]; newMvmts[2] = Double.POSITIVE_INFINITY; moved.put(stretch.get(0), newMvmts); for(int i = 1; i < stretch.size()-1; i ++) { oldMvmts = moved.get(stretch.get(i)); newMvmts = new double[3]; newMvmts[0] = Double.POSITIVE_INFINITY; newMvmts[1] = Double.POSITIVE_INFINITY; newMvmts[2] = oldMvmts[2]; moved.put(stretch.get(i), newMvmts); } oldMvmts = moved.get(stretch.get(stretch.size()-1)); newMvmts = new double[3]; newMvmts[0] = oldMvmts[0]; newMvmts[1] = oldMvmts[1]; newMvmts[2] = Double.POSITIVE_INFINITY; moved.put(stretch.get(stretch.size()-1), newMvmts); } stretch = new ArrayList(); } // else if nothing yet in this stretch (size() == 0) and res doesn't move, do nothing } else endOfChain = true; } // If have stretch leading up to end of chain, treat all but first as not having moved if(stretch.size() > 0) for(int i = 1; i < stretch.size(); i ++) { double[] newMvmts = new double[3]; newMvmts[0] = 0; newMvmts[1] = 0; newMvmts[2] = 0; moved.put(stretch.get(i), newMvmts); } return moved; } //}}} //{{{ moves, caMovesEnough //############################################################################## boolean moves(Residue res, TreeMap moved) { DecimalFormat df = new DecimalFormat("#.#"); try { double[] mvmts = moved.get(res); if(!Double.isNaN(mvmts[0]) && !Double.isNaN(mvmts[1])) if(mvmts[0] != 0 || mvmts[1] != 0 || mvmts[2] != 0) { if(verbose) System.err.println("moves(): "+res+" mvmts = ("+ df.format(mvmts[0])+","+df.format(mvmts[1])+","+df.format(mvmts[2])+") => MOVES"); return true; } else { if(verbose) System.err.println("moves(): "+res+" mvmts = ("+ df.format(mvmts[0])+","+df.format(mvmts[1])+","+df.format(mvmts[2])+") ..."); return false; } } catch (NullPointerException npe) { } return false; } boolean caMovesEnough(Residue res, TreeMap moved) { DecimalFormat df = new DecimalFormat("#.###"); try { double[] mvmts = moved.get(res); if(!Double.isNaN(mvmts[2]) && mvmts[2] > dCaMin) { if(verbose) System.err.println("caMovesEnough(): "+res+"\tCa-Ca = "+ df.format(mvmts[2])+" > "+df.format(dCaMin)+") => MOVES"); return true; } else { if(verbose) System.err.println("caMovesEnough(): "+res+"\tCa-Ca = "+ df.format(mvmts[2])+" < "+df.format(dCaMin)+") ..."); return false; } } catch (NullPointerException npe) { } return false; } //}}} //{{{ calcPhi, calcPsi, angleDiff //############################################################################## double calcPhi(Residue prev, Residue res, ModelState state) { try { Atom prevC = prev.getAtom(" C "); Atom n = res.getAtom(" N "); Atom ca = res.getAtom(" CA "); Atom c = res.getAtom(" C "); AtomState prevCState = state.get(prevC); AtomState nState = state.get(n); AtomState caState = state.get(ca); AtomState cState = state.get(c); return Triple.dihedral(prevCState, nState, cState, caState); } catch (AtomException ae) { return Double.NaN; } } double calcPsi(Residue res, Residue next, ModelState state) { try { Atom n = res.getAtom(" N "); Atom ca = res.getAtom(" CA "); Atom c = res.getAtom(" C "); Atom nextN = next.getAtom(" N "); AtomState nState = state.get(n); AtomState caState = state.get(ca); AtomState cState = state.get(c); AtomState nextNState = state.get(nextN); return Triple.dihedral(nState, cState, caState, nextNState); } catch (AtomException ae) { return Double.NaN; } } /** Measures smallest difference between two angles, considering -180 to 180 * wrapping. */ double angleDiff(double init, double fin) { double diffNoWrap = fin - init; // e.g. 170 - -170 = 340 double diffWrap1 = (fin-360) - init; // e.g. -190 - -170 = -20 double diffWrap2 = fin - (init-360); // e.g. 170 - -530 = 700 double diffWrap3 = (fin-360) - (init-360); // e.g. -190 - -530 = 340 double min = diffNoWrap; if(Math.abs(diffWrap1) < Math.abs(min)) min = diffWrap1; if(Math.abs(diffWrap2) < Math.abs(min)) min = diffWrap2; if(Math.abs(diffWrap3) < Math.abs(min)) min = diffWrap3; double diff = (absVal ? Math.abs(min) : min); return diff; } //}}} //{{{ doKinForRes //############################################################################## void doKinForRes(Residue r1, ModelState s1, double dPhi, double dPsi) { doKinForRes(r1, s1, dPhi, dPsi, null); } void doKinForRes(Residue r1, ModelState s1, Triple ca2) { doKinForRes(r1, s1, Double.POSITIVE_INFINITY, Double.POSITIVE_INFINITY, ca2); } /** * Uses vector "fans" for d(phi,psi). */ void doKinForRes(Residue r1, ModelState s1, double dPhi, double dPsi, Triple ca2) { try { AtomState n1 = s1.get(r1.getAtom(" N ")); AtomState c1 = s1.get(r1.getAtom(" C ")); AtomState ca1 = s1.get(r1.getAtom(" CA ")); // d(phi) if(!Double.isNaN(dPhi) && dPhi != 0 && dPhi != Double.POSITIVE_INFINITY) { Triple axis = new Triple().likeVector(n1, ca1); for(int i = 0; i < 3; i ++) { Transform rotate = new Transform(); double rotAngle = (dPhi / maxAbsMvmts[0]) * dPhiPsiScale; // e.g. curr is 10 and max is 20 but scaling to 30 => // (10/20) = 0.5 => 0.5*30 = 15 // yields half of max possible fan size for these settings rotAngle *= (0.5*i); // for "fading"/"fan" effect rotate = rotate.likeRotation(axis, rotAngle); // OLD: rotate = rotate.likeRotation(axis, (dPhi*dPhiPsiScale) * (1.00-0.33*i)); Triple midpt = new Triple().likeMidpoint(n1, ca1); Triple fan = new Triple().likeNormal(n1, ca1, c1); rotate.transform(fan); Triple fanAtMidpt = fan.mult(1.0).add(midpt); out.print("@vectorlist {"+r1+" d(phi)} master= {d(phi) norm'd->"+df2.format(dPhiPsiScale)+"} color= "); out.print(dPhi > 0 ? "{red}" : "{blue}"); out.println(" width= "+(i+1)); out.println("{"+r1+" d(phi) = "+(dPhi>0?"+":"")+df3.format(dPhi)+" degrees "+label1+" => "+label2+"}P " +df.format(midpt.getX())+" " +df.format(midpt.getY())+" " +df.format(midpt.getZ())); out.println("{"+r1+" d(phi) = "+(dPhi>0?"+":"")+df3.format(dPhi)+" degrees "+label1+" => "+label2+"} " +df.format(fanAtMidpt.getX())+" " +df.format(fanAtMidpt.getY())+" " +df.format(fanAtMidpt.getZ())); } } // d(psi) if(!Double.isNaN(dPsi) && dPsi != 0 && dPsi != Double.POSITIVE_INFINITY) { Triple axis = new Triple().likeVector(ca1, c1); for(int i = 0; i < 3; i ++) { Transform rotate = new Transform(); double rotAngle = (dPsi / maxAbsMvmts[1]) * dPhiPsiScale; rotAngle *= (0.5*i); rotate = rotate.likeRotation(axis, rotAngle); // OLD: rotate = rotate.likeRotation(axis, (dPsi*dPhiPsiScale) * (1.00-0.33*i)); Triple midpt = new Triple().likeMidpoint(ca1, c1); Triple fan = new Triple().likeNormal(c1, n1, ca1); rotate.transform(fan); Triple fanAtMidpt = fan.mult(1.0).add(midpt); out.print("@vectorlist {"+r1+" d(psi)} master= {d(psi) norm'd->"+df2.format(dPhiPsiScale)+"} color= "); out.print(dPsi > 0 ? "{red}" : "{blue}"); out.println(" width= "+(i+1)); out.println("{"+r1+" d(psi) = "+(dPsi>0?"+":"")+df3.format(dPsi)+" degrees "+label1+" => "+label2+"}P " +df.format(midpt.getX())+" " +df.format(midpt.getY())+" " +df.format(midpt.getZ())); out.println("{"+r1+" d(psi) = "+(dPsi>0?"+":"")+df3.format(dPsi)+" degrees "+label1+" => "+label2+"} " +df.format(fanAtMidpt.getX())+" " +df.format(fanAtMidpt.getY())+" " +df.format(fanAtMidpt.getZ())); } } // d(Ca) if(ca2 != null) { double caTravel = Triple.distance(ca1, ca2); double scaledMag = (caTravel / maxAbsMvmts[2]) * dCaScale; Triple ca1ca2 = new Triple().likeVector(ca1, ca2).unit().mult(scaledMag); // OLD: Triple ca1ca2 = new Triple().likeVector(ca1, ca2).mult(dCaScale); if( !(ca1ca2.getX() == 0 && ca1ca2.getY() == 0 && ca1ca2.getZ() == 0) ) { Triple tip = new Triple().likeSum(ca1, ca1ca2); out.println("@arrowlist {"+r1+" d(Ca)} master= {d(Ca) norm'd->"+df2.format(dCaScale)+"} color= {green}"); out.println("{"+r1+" d(Ca) = "+df3.format(caTravel)+" Angstroms "+label1+" => "+label2+"}P " +df.format(ca1.getX())+" " +df.format(ca1.getY())+" " +df.format(ca1.getZ())); out.println("{"+r1+" d(Ca) = "+df3.format(caTravel)+" Angstroms "+label1+" => "+label2+"} " +df.format(tip.getX())+" " +df.format(tip.getY())+" " +df.format(tip.getZ())); } } } catch (AtomException ae) { System.err.println("Couldn't do kin for '"+r1+"'.."); } } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { if(filename1 == null && filename2 == null) { System.err.println("Need at least one filename!"); System.exit(0); } // Parameters if(doKin) { if(!hinges) dCaMin = 0.0; if(filename1 != null) { if(filename2 == null) { if(Double.isNaN(dCaScale)) dCaScale = 5; if(Double.isNaN(dPhiPsiScale)) dPhiPsiScale = 1; } else //if(filename2 != null) { if(Double.isNaN(dCaScale)) dCaScale = 10; if(Double.isNaN(dPhiPsiScale)) dPhiPsiScale = 500; } } System.err.println("Kin parameters:"); System.err.println("d(phi,psi) scale: "+ (Double.isNaN(dPhiPsiScale) ? "1 (default)" : df2.format(dPhiPsiScale)) ); System.err.println("d(Ca) scale: "+ (Double.isNaN(dCaScale) ? "1 (default)" : df2.format(dCaScale)) ); System.err.println("d(Ca) min : "+df2.format(dCaMin)); } // Main program try { // Looking for alt conf loops in one structure if(filename1 != null && filename2 == null) { PdbReader reader = new PdbReader(); File f = new File(filename1); CoordinateFile cf = reader.read(f); for(Iterator models = cf.getModels().iterator(); models.hasNext(); ) { Model m = (Model) models.next(); label1 = f.toString()+" altA"; label2 = label1+" altB"; //if(cf.getIdCode() != null) label = cf.getIdCode(); searchOneModel(m); } } // Looking for regions that vary between two structures else if(filename1 != null && filename2 != null) { PdbReader reader = new PdbReader(); File f1 = new File(filename1); File f2 = new File(filename2); CoordinateFile cf1 = reader.read(f1); CoordinateFile cf2 = reader.read(f2); Model m1 = cf1.getFirstModel(); Model m2 = cf2.getFirstModel(); label1 = f1.toString(); label2 = f2.toString(); searchTwoModels(m1, m2); } } catch (IOException ioe) { System.err.println("Trouble parsing files!"); } } public static void main(String[] args) { VariableRegions mainprog = new VariableRegions(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("VariableRegions.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'VariableRegions.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.VariableRegions"); System.err.println("Copyright (C) 2007 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if(filename1 == null) filename1 = arg; else if(filename2 == null) filename2 = arg; else throw new IllegalArgumentException("Only need 1 or 2 files!"); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } if(flag.equals("-verbose") || flag.equals("-v")) { verbose = true; } else if(flag.equals("-kin")) { doKin = true; } else if(flag.equals("-nokin") || flag.equals("-csv")) { doKin = false; } else if(flag.equals("-delim")) { delim = param; } else if(flag.equals("-absval") || flag.equals("-abs")) { absVal = true; } else if(flag.equals("-allres") || flag.equals("-all")) { allRes = true; } else if(flag.equals("-hinges")) { hinges = true; } else if(flag.equals("-nohinges")) { hinges = false; } else if(flag.equals("-dcamin")) { try { dCaMin = Double.parseDouble(param); } catch (NumberFormatException nfe) { System.err.println("Can't parse "+param+" as a double!"); }; } else if(flag.equals("-dcascale")) { try { dCaScale = Double.parseDouble(param); } catch (NumberFormatException nfe) { System.err.println("Can't parse "+param+" as a double!"); }; } else if(flag.equals("-dphipsiscale")) { try { dPhiPsiScale = Double.parseDouble(param); } catch (NumberFormatException nfe) { System.err.println("Can't parse "+param+" as a double!"); }; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/SheetAxes2.java0000644000000000000000000000660111531212724022506 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * SheetAxes2 is a data structure for describing a local * (residue specific) Cartesian coordinate system on a beta sheet, * relative to the strand direction and sheet normal vectors. * It works on a pair of planes, each defined using the central strand and one * of its neighbors, instead of a single plane defined by the central strand and * both its neighboring strands at once. * *

Known bugs/problems: *

    *
  • Need a better H-bond potential: this one lets the C and N interact well
  • *
  • For cross-strand neighbors, along and across numbers don't correlate b/c * the parallel / antiparallel relationship should affect the sign of the angle!
  • *
* *

Copyright (C) 2007 by Daniel A. Keedy. All rights reserved. */ public class SheetAxes2 //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## /** The unit vector sum of the "concavified" normal1, normal2. Kinda * temporary -- i.e., not part of the coord system defined here. */ public Triple normal; /** The pseudo-X axis, along the strand from N-term to C-term. */ public Triple strand; /** The pseudo-Z axis. Equals strand x btwCentroids. */ public Triple zAxis; /** The pseudo-Y axis, similar to the vector btw the two planes' centroids. * Equals zAxis x strand. */ public Triple cross; /** Angular deviation of the CaCb vector from the across-strand concavity vector, * in degrees. * This angle indicates whether CaCb points toward the concave or convex side * of the sheet i.t.o. the plane-centroid-to-plane-centroid axis (i.e. the * strands could be completely straight, but rotated relative to each other * like a barrel). > 90: convex, < 90: concave. */ public double cacb_acrossConcavity; //}}} //{{{ Constructor(s) //############################################################################## public SheetAxes2(Triple normalSum, Triple btwCentroids, Tuple3 strandNtoC, Tuple3 fromCaToCb) { super(); this.normal = normalSum; // kinda temporary this.strand = new Triple(strandNtoC).unit(); this.zAxis = new Triple().likeCross(strand, btwCentroids).unit(); this.cross = new Triple().likeCross(zAxis, strand).unit(); // similar to btwCentroids // Note: working in 2D pseudo-YZ plane from here on! double normalDotCross = cross.dot(normal); double normalDotZ = zAxis.dot(normal); Triple normalInYZ = new Triple(0, normalDotCross, normalDotZ); // ^^ the across-strand "concavity vector" double cacbDotCross = cross.dot(fromCaToCb); double cacbDotZ = zAxis.dot(fromCaToCb); Triple cacbInYZ = new Triple(0, cacbDotCross, cacbDotZ); cacb_acrossConcavity = normalInYZ.angle(cacbInYZ); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/BackboneMoveFinder2.java0000644000000000000000000005415211744305700024307 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * BackboneMoveFinder2 makes some measurements on a whole bunch of MODELs * in hopes of finding places that move like a backrub or shear. * * It's based on Ian's BackrubFinder2 class. * *

Copyright (C) 2011 by Daniel A. Keedy. All rights reserved. *
Begun on Thu Jan 13 2011 */ public class BackboneMoveFinder2 //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("0.0##"); static final String BACKRUB = "backrub"; static final String SHEAR = "shear"; //}}} //{{{ Variable definitions //############################################################################## boolean verbose = false; double rmsdLimit = 0.05; // Angstroms double backrubAngleLimit = 20.0; // degrees double shearAngleLimit = 4.0; // degrees double shearDistLimit = 0.3; // Angstroms /*double shearProjLimit = 0.0; // Angstroms*/ String moveType = BACKRUB; boolean pairwise = true; //}}} //{{{ Constructor(s) //############################################################################## public BackboneMoveFinder2() { super(); } //}}} //{{{ getCalphas //############################################################################## AtomState[][] getCalphas(Collection models) { AtomState[][] calphas = new AtomState[models.size()][0]; int i = 0; for(Iterator mi = models.iterator(); mi.hasNext(); i++) { Model m = (Model) mi.next(); ModelState state = m.getState(); ArrayList cas = new ArrayList(); for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); Atom a = r.getAtom(" CA "); if(a == null) continue; try { cas.add( state.get(a) ); } catch(AtomException ex) { ex.printStackTrace(); } } calphas[i] = (AtomState[]) cas.toArray(calphas[i]); } return calphas; } //}}} //{{{ printBackrubPairs //############################################################################## void printBackrubPairs(PrintStream out, AtomState[][] cas) { out.println("residue,ref_model,mobile_model,Ca_rmsd(1245),backrub_angle"); int numModels = cas.length; if(numModels == 0) return; for(int k = 2; k < cas[0].length - 2; k++) { for(int i = 0; i < numModels; i++) { for(int j = i+1; j < numModels; j++) { // Reference, Mobile, Weights; don't use center Ca Triple[] r = {new Triple(cas[i][k-2]), new Triple(cas[i][k-1]), new Triple(cas[i][k+1]), new Triple(cas[i][k+2])}; Triple[] m = {new Triple(cas[j][k-2]), new Triple(cas[j][k-1]), new Triple(cas[j][k+1]), new Triple(cas[j][k+2])}; SuperPoser p = new SuperPoser(r, m); Transform T = p.superpos(); double rmsd = p.calcRMSD(T); for(int n = 0; n < m.length; n++) T.transform(m[n]); Triple ca2 = new Triple().likeMidpoint(r[1], m[1]); Triple ca3r = cas[i][k], ca3m = new Triple(cas[j][k]); T.transform(ca3m); Triple ca4 = new Triple().likeMidpoint(r[2], m[2]); double backrubAngle = Triple.dihedral(ca3r, ca2, ca4, ca3m); if(rmsd <= rmsdLimit && Math.abs(backrubAngle) >= backrubAngleLimit) out.println(cas[i][k].getResidue()+","+(i+1)+","+(j+1)+","+df.format(rmsd)+","+df.format(backrubAngle)); } } }//per window } //}}} //{{{ printBackrubStats //############################################################################## void printBackrubStats(PrintStream out, AtomState[][] cas) { out.println("residue,dist24,dist24sd,theta124,theta124sd,theta245,theta245sd,phi1245,phi1245len,phi1245sd," +"phi1243,phi1243len,phi1243sd,phi3245,phi3245len,phi3245sd"); int numModels = cas.length; if(numModels == 0) return; int numRes = cas[0].length; if(numRes == 0) return; double[] dist13 = new double[numModels]; double[] dist24 = new double[numModels]; double[] dist35 = new double[numModels]; double[] dist14 = new double[numModels]; double[] dist25 = new double[numModels]; double[] dist15 = new double[numModels]; double[] theta124 = new double[numModels]; double[] theta245 = new double[numModels]; double[] phi1245 = new double[numModels]; double[] phi1243 = new double[numModels]; double[] phi3245 = new double[numModels]; for(int i = 2; i < numRes - 2; i++) { for(int j = 0; j < numModels; j++) { AtomState c1 = cas[j][i-2]; AtomState c2 = cas[j][i-1]; AtomState c3 = cas[j][i ]; AtomState c4 = cas[j][i+1]; AtomState c5 = cas[j][i+2]; dist13[j] = c1.distance(c3); dist24[j] = c2.distance(c4); dist35[j] = c3.distance(c5); dist14[j] = c1.distance(c4); dist25[j] = c2.distance(c5); dist15[j] = c1.distance(c5); theta124[j] = Triple.angle(c1, c2, c4); theta245[j] = Triple.angle(c2, c4, c5); phi1245[j] = Triple.dihedral(c1, c2, c4, c5); phi1243[j] = Triple.dihedral(c1, c2, c4, c3); phi3245[j] = Triple.dihedral(c3, c2, c4, c5); } out.print("\""+cas[0][i].getResidue()); //out.print("\",\""+df.format(mean(dist13))+"\",\""+df.format(stddev(dist13))); out.print("\",\""+df.format(mean(dist24))+"\",\""+df.format(stddev(dist24))); //out.print("\",\""+df.format(mean(dist35))+"\",\""+df.format(stddev(dist35))); //out.print("\",\""+df.format(mean(dist14))+"\",\""+df.format(stddev(dist14))); //out.print("\",\""+df.format(mean(dist25))+"\",\""+df.format(stddev(dist25))); //out.print("\",\""+df.format(mean(dist15))+"\",\""+df.format(stddev(dist15))); out.print("\",\""+df.format(mean(theta124))+"\",\""+df.format(stddev(theta124))); out.print("\",\""+df.format(mean(theta245))+"\",\""+df.format(stddev(theta245))); out.print("\",\""+df.format(circ_mean(phi1245))+"\",\""+df.format(circ_len(phi1245))+"\",\""+df.format(circ_stddev(phi1245))); out.print("\",\""+df.format(circ_mean(phi1243))+"\",\""+df.format(circ_len(phi1243))+"\",\""+df.format(circ_stddev(phi1243))); out.print("\",\""+df.format(circ_mean(phi3245))+"\",\""+df.format(circ_len(phi3245))+"\",\""+df.format(circ_stddev(phi3245))); out.println("\""); } } //}}} //{{{ printShearPairs //############################################################################## void printShearPairs(PrintStream out, AtomState[][] cas) { out.println("residue,ref_model,mobile_model,Ca_rmsd(1256),shear_angle,shear_dist"); int numModels = cas.length; if(numModels == 0) return; for(int k = 2; k < cas[0].length - 3; k++) { for(int i = 0; i < numModels; i++) { for(int j = i+1; j < numModels; j++) { // Intuitive numbering: 1 2 3 4 5 6 // k-relative numbering: k-2 k-1 k k+1 k+2 k+3 // Don't use center 2 C-alphas: ^ ^ Triple[] r = {new Triple(cas[i][k-2]), new Triple(cas[i][k-1]), new Triple(cas[i][k+2]), new Triple(cas[i][k+3])}; Triple[] m = {new Triple(cas[j][k-2]), new Triple(cas[j][k-1]), new Triple(cas[j][k+2]), new Triple(cas[j][k+3])}; SuperPoser p = new SuperPoser(r, m); Transform T = p.superpos(); double rmsd = p.calcRMSD(T); for(int n = 0; n < m.length; n++) T.transform(m[n]); // Break down into the two in-plane rotations used in the KiNG shear tool // (Ca3 rotates in Ca2-3-4 plane, Ca4 rotates in Ca3-4-5 plane); // report on the maximum deviation from planarity for those two dihedrals Triple ca3r = cas[i][k], ca3m = new Triple(cas[j][k]); Triple ca4r = cas[i][k+1], ca4m = new Triple(cas[j][k+1]); T.transform(ca3m); T.transform(ca4m); Triple ca2 = new Triple().likeMidpoint(r[1], m[1]); Triple ca3 = new Triple().likeMidpoint(ca3r, ca3m); Triple ca4 = new Triple().likeMidpoint(ca4r, ca4m); Triple ca5 = new Triple().likeMidpoint(r[2], m[2]); double shearAngle3 = Triple.dihedral(ca3r, ca2, ca4, ca3m); double shearAngle4 = Triple.dihedral(ca4r, ca3, ca5, ca4m); double shearAngle = shearAngle3; if(Math.abs(shearAngle4) > Math.abs(shearAngle3)) shearAngle = shearAngle4; // Also make sure both central Ca's actually moved significantly double shearDist3 = Triple.distance(ca3r, ca3m); double shearDist4 = Triple.distance(ca4r, ca4m); double shearDist = Math.min(shearDist3, shearDist4); if(rmsd <= rmsdLimit && Math.abs(shearAngle) < shearAngleLimit && shearDist > shearDistLimit) out.println(cas[i][k].getResidue()+","+(i+1)+","+(j+1)+","+df.format(rmsd) +","+df.format(shearAngle)+","+df.format(shearDist)); /* Doesn't work: picks up large but non-parallel motions, e.g. at hairpins // Project 3->3' + 4->4' onto 3---->4 Triple ca3r = cas[i][k], ca3m = new Triple(cas[j][k]); Triple ca4r = cas[i][k+1], ca4m = new Triple(cas[j][k+1]); T.transform(ca3m); T.transform(ca4m); Triple ca3 = new Triple().likeVector(ca3r, ca3m); Triple ca4 = new Triple().likeVector(ca4r, ca4m); Triple ca34 = new Triple().likeVector(ca3r, ca4r); double shearProj = (ca3.add(ca4)).dot(ca34) / ca34.mag(); if(rmsd <= rmsdLimit && shearProj > shearProjLimit) out.println(cas[i][k].getResidue()+","+(i+1)+","+(j+1)+","+df.format(rmsd)+","+df.format(shearProj));*/ } } } } //}}} //{{{ printShearStats //############################################################################## void printShearStats(PrintStream out, AtomState[][] cas) { out.println("residue,dist25,dist25sd,dist16,dist16sd,theta126,theta126sd,theta256,theta256sd,phi1256,phi1256len,phi1256sd," +"dist24,dist24sd,dist35,dist35sd,theta234,theta234sd,theta345,theta345sd,phi3254,phi3254len,phi3254sd"); int numModels = cas.length; if(numModels == 0) return; int numRes = cas[0].length; if(numRes == 0) return; // Geometry that should have low variation double[] dist25 = new double[numModels]; double[] dist16 = new double[numModels]; double[] theta126 = new double[numModels]; double[] theta256 = new double[numModels]; double[] phi1256 = new double[numModels]; // Geometry that should have higher variation double[] dist24 = new double[numModels]; double[] dist35 = new double[numModels]; double[] theta234 = new double[numModels]; double[] theta345 = new double[numModels]; double[] phi3254 = new double[numModels]; // ??? for(int i = 2; i < numRes - 3; i++) { for(int j = 0; j < numModels; j++) { AtomState c1 = cas[j][i-2]; AtomState c2 = cas[j][i-1]; AtomState c3 = cas[j][i ]; AtomState c4 = cas[j][i+1]; AtomState c5 = cas[j][i+2]; AtomState c6 = cas[j][i+3]; dist25[j] = c2.distance(c5); dist16[j] = c1.distance(c6); theta126[j] = Triple.angle(c1, c2, c6); theta256[j] = Triple.angle(c2, c5, c6); phi1256[j] = Triple.dihedral(c1, c2, c5, c6); dist24[j] = c2.distance(c4); dist35[j] = c3.distance(c5); theta234[j] = Triple.angle(c2, c3, c4); theta345[j] = Triple.angle(c3, c4, c5); phi3254[j] = Triple.dihedral(c3, c2, c5, c4); } out.print(cas[0][i].getResidue()); out.print(","+df.format(mean(dist25))+","+df.format(stddev(dist25))); out.print(","+df.format(mean(dist16))+","+df.format(stddev(dist16))); out.print(","+df.format(mean(theta126))+","+df.format(stddev(theta126))); out.print(","+df.format(mean(theta256))+","+df.format(stddev(theta256))); out.print(","+df.format(circ_mean(phi1256))+","+df.format(circ_len(phi1256))+","+df.format(circ_stddev(phi1256))); out.print(","+df.format(mean(dist24))+","+df.format(stddev(dist24))); out.print(","+df.format(mean(dist35))+","+df.format(stddev(dist35))); out.print(","+df.format(mean(theta234))+","+df.format(stddev(theta234))); out.print(","+df.format(mean(theta345))+","+df.format(stddev(theta345))); out.print(","+df.format(circ_mean(phi3254))+","+df.format(circ_len(phi3254))+","+df.format(circ_stddev(phi3254))); out.println(); } } //}}} //{{{ mean, stddev //############################################################################## double mean(double[] x) { double sum = 0; for(int i = 0; i < x.length; i++) sum += x[i]; return sum / x.length; } double stddev(double[] x) { double mean = mean(x); double sum2 = 0; for(int i = 0; i < x.length; i++) { double dev = mean - x[i]; sum2 += dev*dev; } return Math.sqrt(sum2 / x.length); } //}}} //{{{ circ_mean, circ_len, circ_stddev //############################################################################## /** Given an array of angles (in degrees), computes the ANGLE of the vector average (in degrees). */ double circ_mean(double[] t) { double sx = 0, sy = 0; for(int i = 0; i < t.length; i++) { sx += Math.cos( Math.toRadians(t[i]) ); sy += Math.sin( Math.toRadians(t[i]) ); } return Math.toDegrees( Math.atan2(sy/t.length, sx/t.length) ); } /** Given an array of angles (in degrees), computes the LENGTH of the vector average (0.0 - 1.0). */ double circ_len(double[] t) { double sx = 0, sy = 0; for(int i = 0; i < t.length; i++) { sx += Math.cos( Math.toRadians(t[i]) ); sy += Math.sin( Math.toRadians(t[i]) ); } sx /= t.length; sy /= t.length; return Math.sqrt(sx*sx + sy*sy); } /** Given an array of angles (in degrees), computes the angular standard deviation (in degrees). */ double circ_stddev(double[] t) { double mean = circ_mean(t); double a, sa = 0; for(int i = 0; i < t.length; i++) { a = Math.abs(mean - t[i]) % 360.0; if(a > 180.0) a = 360.0 - a; sa += a*a; } return Math.sqrt(sa / t.length); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { if(verbose) System.err.println("Mode: "+moveType+" "+(pairwise ? "pairs" : "stats")); PdbReader pdbReader = new PdbReader(); CoordinateFile cfile = pdbReader.read(System.in); AtomState[][] cas = getCalphas(cfile.getModels()); if(moveType == BACKRUB) { if(pairwise) printBackrubPairs(System.out, cas); else printBackrubStats(System.out, cas); } else if(moveType == SHEAR) { if(pairwise) printShearPairs(System.out, cas); else printShearStats(System.out, cas); } } public static void main(String[] args) { BackboneMoveFinder2 mainprog = new BackboneMoveFinder2(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("BackboneMoveFinder2.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'BackboneMoveFinder2.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.BackboneMoveFinder2"); System.err.println("Copyright (C) 2011 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-verbose") || flag.equals("-v")) { verbose = true; } else if(flag.equals("-backrub") || flag.equals("-backrubs")) { moveType = BACKRUB; } else if(flag.equals("-shear") || flag.equals("-shears")) { moveType = SHEAR; } else if(flag.equals("-pairs")) { pairwise = true; } else if(flag.equals("-stats")) { pairwise = false; } else if(flag.equals("-rmsd")) { rmsdLimit = Double.parseDouble(param); } else if(flag.equals("-backrubangle")) { backrubAngleLimit = Double.parseDouble(param); } /*else if(flag.equals("-shearproj")) { shearProjLimit = Double.parseDouble(param); }*/ else if(flag.equals("-shearangle")) { shearAngleLimit = Double.parseDouble(param); } else if(flag.equals("-sheardistance") || flag.equals("-sheardist")) { shearDistLimit = Double.parseDouble(param); } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/AnisoOxygenSearch.java0000644000000000000000000002772511531212724024136 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.isosurface.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * AnisoOxygenSearch has not yet been documented. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Mon Jun 7 16:32:10 EDT 2004 */ public class AnisoOxygenSearch //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## File pdbFile = null; File mapFile = null; boolean textOutput = true; boolean shearTest = false; //}}} //{{{ Constructor(s) //############################################################################## public AnisoOxygenSearch() { super(); } //}}} //{{{ searchModel //############################################################################## void searchModel(PrintStream out, String fileLabel, Model model, ModelState state, CrystalVertexSource map) { final double minDensity = 2.0 * map.sigma; // at current O position final double envDensity = 1.2 * map.sigma; // ED for "envelope" we're examining final int numSamples = 64; // number of samples taken around the envelope Builder builder = new Builder(); DecimalFormat df = new DecimalFormat("0.0000"); DecimalFormat df2 = new DecimalFormat("0.00"); if(textOutput) { if(shearTest) out.println("#file:model:chain1:resnum1:inscode1:restype1:chain4:resnum4:inscode4:restype4:ox2_bfactor:angle:ellipse_ratio"); else out.println("#file:model:residue:ox_bfactor:angle:ellipse_ratio"); } else { out.println("@kinemage 1"); out.println("@group {O-rings} dominant"); } for(Iterator ri = model.getResidues().iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); try { // find oxygen atom AtomState ox = state.get(r.getAtom(" O ")); // create search plane AtomState c = state.get(r.getAtom(" C ")); AtomState ca1 = state.get(r.getAtom(" CA ")); AtomState ca2 = state.get(r.getNext(model).getAtom(" CA ")); // project Ca-Ca vector onto search plane (project onto normal and subtract) Triple caca = new Triple().likeVector(ca1, ca2); // Ca---Ca Triple vert = new Triple().likeVector(c, ox).unit(); // C----O vert.mult(caca.dot(vert)); // length of CaCa in C-O direction caca.sub(vert); // remove C-O component // check center density double oxDensity = map.evaluateAtPoint(ox.getX(), ox.getY(), ox.getZ()); if(Double.isNaN(oxDensity) || oxDensity < minDensity) { if(textOutput) out.println(fileLabel+":"+model+":"+r.getCNIT()+":bad_density:bad_density"); continue; // skip this oxygen } // find envelope points ArrayList envelope = new ArrayList(); for(double i = 0; i < numSamples; i++) { // unit vector perpendicular to C--O Triple inplane = builder.construct4(ca1, c, ox, 1, 90, 360*i/numSamples); inplane.sub(ox); // to get to vector form envelope.add( findBelow(envDensity, map, ox, inplane) ); } // calculate principle axes PrincipleAxes pca = new PrincipleAxes(envelope); Tuple3[] axes = pca.getAxes(); double[] lengths = pca.getLengths(); // print axis ratio and orientation double orientation = caca.angle(axes[0]); if(orientation > 90) orientation = 180 - orientation; // correct for arbitrary sign double ellipseRatio = lengths[0] / lengths[1]; if(textOutput) { if(shearTest) { Residue r1 = r.getPrev(model); Residue r4 = r.getNext(model).getNext(model); if(r1 == null || r4 == null) continue; out.println(fileLabel.toLowerCase()+":"+model+":" //+r.getChain()+":"+r.getSequenceInteger()+":"+r.getInsertionCode()+":"+r.getName()+":" +r1.getChain()+":"+r1.getSequenceInteger()+":"+r1.getInsertionCode()+":"+r1.getName()+":" +r4.getChain()+":"+r4.getSequenceInteger()+":"+r4.getInsertionCode()+":"+r4.getName()+":" +df2.format(ox.getTempFactor())+":"+df.format(orientation)+":"+df.format(ellipseRatio)); } else out.println(fileLabel.toLowerCase()+":"+model+":"+r.getCNIT()+":"+df2.format(ox.getTempFactor())+":"+df.format(orientation)+":"+df.format(ellipseRatio)); } else { // print kinemage info out.println("@vectorlist {"+fileLabel+":"+model+":"+r.getCNIT()+"} color= orange"); for(Iterator iter = envelope.iterator(); iter.hasNext(); ) { Triple t = (Triple) iter.next(); out.println("{} "+t.format(df)); } } } catch(Exception ex) // Atom, NullPtr { //out.println(fileLabel+":"+model+":"+r.getCNIT()+":missing_atom:missing_atom"); //ex.printStackTrace(); } } } //}}} //{{{ findBelow //############################################################################## Triple findBelow(double target, CrystalVertexSource map, Tuple3 startPt, Tuple3 dirVect) { final double stepSize = 0.025; // should be good enough for gov't work Triple searchPath = new Triple(); double density, searchDist = 0; do { searchDist += stepSize; searchPath.like(dirVect).unit().mult(searchDist); searchPath.add(startPt); density = map.evaluateAtPoint(searchPath.getX(), searchPath.getY(), searchPath.getZ()); } while(density > target); return searchPath; } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { PdbReader reader = new PdbReader(); CoordinateFile cf = reader.read(pdbFile); Model m = (Model) cf.getFirstModel(); ModelState state = m.getState(); String label = pdbFile.toString(); if(cf.getIdCode() != null) label = cf.getIdCode(); InputStream is = new BufferedInputStream(new FileInputStream(mapFile)); CrystalVertexSource map = new OMapVertexSource(is); is.close(); searchModel(System.out, label, m, state, map); } public static void main(String[] args) { AnisoOxygenSearch mainprog = new AnisoOxygenSearch(); try { mainprog.parseArguments(args); if(mainprog.pdbFile == null || mainprog.mapFile == null) throw new IllegalArgumentException("Must specify both a PDB file and an O map"); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } catch(Exception ex) { ex.printStackTrace(); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("AnisoOxygenSearch.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'AnisoOxygenSearch.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.AnisoOxygenSearch"); System.err.println("Copyright (C) 2004 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { if(pdbFile == null) pdbFile = new File(arg); else if(mapFile == null) mapFile = new File(arg); else throw new IllegalArgumentException("Unneccessary parameter '"+arg+"'"); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } if(flag.equals("-shear") || flag.equals("-s")) { shearTest = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/BackrubFinder.java0000644000000000000000000002633211531212724023237 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * BackrubFinder makes some measurements on a whole bunch of MODELs * in hopes of finding places that move in Backrub-like ways. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Mon Dec 5 14:27:25 EST 2005 */ public class BackrubFinder //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("0.0##"); //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public BackrubFinder() { super(); } //}}} //{{{ getCalphas //############################################################################## AtomState[][] getCalphas(Collection models) { AtomState[][] calphas = new AtomState[models.size()][0]; int i = 0; for(Iterator mi = models.iterator(); mi.hasNext(); i++) { Model m = (Model) mi.next(); ModelState state = m.getState(); ArrayList cas = new ArrayList(); for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); Atom a = r.getAtom(" CA "); if(a == null) continue; try { cas.add( state.get(a) ); } catch(AtomException ex) { ex.printStackTrace(); } } calphas[i] = (AtomState[]) cas.toArray(calphas[i]); } return calphas; } //}}} //{{{ printStats //############################################################################## void printStats(PrintStream out, AtomState[][] cas) { //out.println("Residue,dist13,sd,dist24,sd,dist35,sd,dist14,sd,dist25,sd,dist15,sd,theta124,sd,theta245,sd,phi1245,len,sd"); out.println("Residue,dist24,sd,theta124,sd,theta245,sd,phi1245,len,sd,phi1243,len,sd,phi3245,len,sd"); int numModels = cas.length; if(numModels == 0) return; int numRes = cas[0].length; if(numRes == 0) return; double[] dist13 = new double[numModels]; double[] dist24 = new double[numModels]; double[] dist35 = new double[numModels]; double[] dist14 = new double[numModels]; double[] dist25 = new double[numModels]; double[] dist15 = new double[numModels]; double[] theta124 = new double[numModels]; double[] theta245 = new double[numModels]; double[] phi1245 = new double[numModels]; double[] phi1243 = new double[numModels]; double[] phi3245 = new double[numModels]; for(int i = 2; i < numRes - 2; i++) { for(int j = 0; j < numModels; j++) { AtomState c1 = cas[j][i-2]; AtomState c2 = cas[j][i-1]; AtomState c3 = cas[j][i ]; AtomState c4 = cas[j][i+1]; AtomState c5 = cas[j][i+2]; dist13[j] = c1.distance(c3); dist24[j] = c2.distance(c4); dist35[j] = c3.distance(c5); dist14[j] = c1.distance(c4); dist25[j] = c2.distance(c5); dist15[j] = c1.distance(c5); theta124[j] = Triple.angle(c1, c2, c4); theta245[j] = Triple.angle(c2, c4, c5); phi1245[j] = Triple.dihedral(c1, c2, c4, c5); phi1243[j] = Triple.dihedral(c1, c2, c4, c3); phi3245[j] = Triple.dihedral(c3, c2, c4, c5); } out.print("\""+cas[0][i].getResidue()); //out.print("\",\""+df.format(mean(dist13))+"\",\""+df.format(stddev(dist13))); out.print("\",\""+df.format(mean(dist24))+"\",\""+df.format(stddev(dist24))); //out.print("\",\""+df.format(mean(dist35))+"\",\""+df.format(stddev(dist35))); //out.print("\",\""+df.format(mean(dist14))+"\",\""+df.format(stddev(dist14))); //out.print("\",\""+df.format(mean(dist25))+"\",\""+df.format(stddev(dist25))); //out.print("\",\""+df.format(mean(dist15))+"\",\""+df.format(stddev(dist15))); out.print("\",\""+df.format(mean(theta124))+"\",\""+df.format(stddev(theta124))); out.print("\",\""+df.format(mean(theta245))+"\",\""+df.format(stddev(theta245))); out.print("\",\""+df.format(circ_mean(phi1245))+"\",\""+df.format(circ_len(phi1245))+"\",\""+df.format(circ_stddev(phi1245))); out.print("\",\""+df.format(circ_mean(phi1243))+"\",\""+df.format(circ_len(phi1243))+"\",\""+df.format(circ_stddev(phi1243))); out.print("\",\""+df.format(circ_mean(phi3245))+"\",\""+df.format(circ_len(phi3245))+"\",\""+df.format(circ_stddev(phi3245))); out.println("\""); } } //}}} //{{{ mean, stddev //############################################################################## double mean(double[] x) { double sum = 0; for(int i = 0; i < x.length; i++) sum += x[i]; return sum / x.length; } double stddev(double[] x) { double mean = mean(x); double sum2 = 0; for(int i = 0; i < x.length; i++) { double dev = mean - x[i]; sum2 += dev*dev; } return Math.sqrt(sum2 / x.length); } //}}} //{{{ circ_mean, circ_len, circ_stddev //############################################################################## /** Given an array of angles (in degrees), computes the ANGLE of the vector average (in degrees). */ double circ_mean(double[] t) { double sx = 0, sy = 0; for(int i = 0; i < t.length; i++) { sx += Math.cos( Math.toRadians(t[i]) ); sy += Math.sin( Math.toRadians(t[i]) ); } return Math.toDegrees( Math.atan2(sy/t.length, sx/t.length) ); } /** Given an array of angles (in degrees), computes the LENGTH of the vector average (0.0 - 1.0). */ double circ_len(double[] t) { double sx = 0, sy = 0; for(int i = 0; i < t.length; i++) { sx += Math.cos( Math.toRadians(t[i]) ); sy += Math.sin( Math.toRadians(t[i]) ); } sx /= t.length; sy /= t.length; return Math.sqrt(sx*sx + sy*sy); } /** Given an array of angles (in degrees), computes the angular standard deviation (in degrees). */ double circ_stddev(double[] t) { double mean = circ_mean(t); double a, sa = 0; for(int i = 0; i < t.length; i++) { a = Math.abs(mean - t[i]) % 360.0; if(a > 180.0) a = 360.0 - a; sa += a*a; } return Math.sqrt(sa / t.length); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { PdbReader pdbReader = new PdbReader(); CoordinateFile cfile = pdbReader.read(System.in); AtomState[][] cas = getCalphas(cfile.getModels()); printStats(System.out, cas); } public static void main(String[] args) { BackrubFinder mainprog = new BackrubFinder(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("BackrubFinder.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'BackrubFinder.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.BackrubFinder"); System.err.println("Copyright (C) 2005 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/BackrubRama.java0000644000000000000000000011401611531212724022705 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.Strings; //}}} /** * BackrubRama performs a series of backrubs on designated * residues in a provided PDB structure and outputs the i-1 and i+1 phi,psi * values in kinemage format for Ramachandran visualization. * *

Copyright (C) 2008 by Daniel A. Keedy. All rights reserved. *
Begun on Mon Feb. 11, 2007. */ public class BackrubRama //extends ... implements ... { //{{{ Constants PrintStream out = System.out; DecimalFormat df = new DecimalFormat("###.#"); DecimalFormat df2 = new DecimalFormat("#"); //}}} //{{{ Variable definitions //############################################################################## String filename = null; boolean verbose = false; boolean doStructKin = false; String group = null; int resnum = Integer.MAX_VALUE; /** Initial and final phi(i-1),psi(i-1),phi(i),psi(i),phi(i+1),psi(i-1). */ double[] initPhiPsi = null; double[] finalPhiPsi = null; String alphaOrBeta = "alpha"; double closeCutoff = Double.NaN; // automatically turned on if finalPhiPsi != null boolean noCloseCutoff = false; // ... unless this option is provided /** Maximum tau deviation for i+/-1 residues (5.5 in BRDEE paper). */ double maxTauDev = 5.5; /** Maximum primary backrub rotation angle in each direction. */ double maxTheta13 = 15.0; /** Spacing between sample points on theta13 trajectory. */ double thetaSpacing = 1.0; /** Fraction of rotation that would most closely restore position of O(i). */ double epsilon = 0.7; //}}} //{{{ Constructor(s) //############################################################################## public BackrubRama() { super(); } //}}} //{{{ doBackrubs //############################################################################## /** * Do backrubs for all desired residues in the model and store phi,psi values. */ void doBackrubs(Model model) { if (!doStructKin && initPhiPsi != null) { out.println("@group {init phi,psi} dominant master= {all}"); out.println("@balllist {init i-1 phi,psi} radius= 2.5 color= greentint master= {i-1}"); out.println("{init i-1 phi,psi} "+df.format(initPhiPsi[0])+" " +df.format(initPhiPsi[1])+" 0"); out.println("@balllist {init i+1 phi,psi} radius= 2.5 color= peachtint master= {i+1}"); if (initPhiPsi.length == 4) out.println("{init i+1 phi,psi} "+df.format(initPhiPsi[2])+" " +df.format(initPhiPsi[3])+" 0"); else if (initPhiPsi.length == 6) out.println("{init i+1 phi,psi} "+df.format(initPhiPsi[4])+" " +df.format(initPhiPsi[5])+" 0"); } if (!doStructKin && finalPhiPsi != null) { out.println("@group {final phi,psi} dominant master= {all}"); out.println("@balllist {final i-1 phi,psi} radius= 2.5 color= green master= {i-1}"); out.println("{final i-1 phi,psi} "+df.format(finalPhiPsi[0])+" " +df.format(finalPhiPsi[1])+" 0"); out.println("@balllist {final i+1 phi,psi} radius= 2.5 color= peach master= {i+1}"); out.println("{final i+1 phi,psi} "+df.format(finalPhiPsi[2])+" " +df.format(finalPhiPsi[3])+" 0"); } for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if (finalPhiPsi != null) epsilon = 0.0; if (res.getSequenceInteger() == resnum) { if (finalPhiPsi != null) { // Final "target" phi,psi provided => try range of epsilons to hit it for (epsilon = 0; epsilon <= 1.0; epsilon += 0.1) { ModelState state = model.getState(); double[] phipsi = backrubSeries(model, state, res); //System.err.println("*** phipsi = "+phipsi); if (!doStructKin && phipsi != null) printStreaks(res, phipsi); } } else { // We're not shooting for a final "target" phi,psi ModelState state = model.getState(); double[] phipsi = backrubSeries(model, state, res); if (!doStructKin && phipsi != null) printStreaks(res, phipsi); } } } //for each residue } //}}} //{{{ backrubSeries //############################################################################## /** * Rotate a dipeptide by a series of primary and secondary backrub angles and * returns the phi,psi values traced out. */ double[] backrubSeries(Model model, ModelState state, Residue res) { if (doStructKin) out.println("@group {e="+df.format(epsilon)+" y13=["+ -1*maxTheta13+","+maxTheta13+"] "+res+"} dominant animate master= {all}"); ArrayList phipsi = new ArrayList(); try { Residue prev = res.getPrev(model); Residue next = res.getNext(model); if (initPhiPsi != null) { state = setPhiPsi(prev, model, state, "phi", initPhiPsi[0]); state = setPhiPsi(prev, model, state, "psi", initPhiPsi[1]); if (initPhiPsi.length == 6) { state = setPhiPsi( res, model, state, "phi", initPhiPsi[2]); state = setPhiPsi( res, model, state, "psi", initPhiPsi[3]); state = setPhiPsi(next, model, state, "phi", initPhiPsi[4]); state = setPhiPsi(next, model, state, "psi", initPhiPsi[5]); } else if (initPhiPsi.length == 4) { state = setPhiPsi(next, model, state, "phi", initPhiPsi[2]); state = setPhiPsi(next, model, state, "psi", initPhiPsi[3]); } } Atom prevCaAtom = prev.getAtom(" CA "); Atom nextCaAtom = next.getAtom(" CA "); AtomState prevCa = state.get(prevCaAtom); AtomState nextCa = state.get(nextCaAtom); double origPrevTau = Triple.angle(state.get(prev.getAtom(" N ")), state.get(prev.getAtom(" CA ")), state.get(prev.getAtom(" C "))); double origThisTau = Triple.angle(state.get( res.getAtom(" N ")), state.get( res.getAtom(" CA ")), state.get( res.getAtom(" C "))); double origNextTau = Triple.angle(state.get(next.getAtom(" N ")), state.get(next.getAtom(" CA ")), state.get(next.getAtom(" C "))); for (double y = -1.0*maxTheta13; y <= maxTheta13; y += thetaSpacing) { if (verbose) System.err.println("Primary rot: "+df.format(y)); // Prepare relevant atoms // i-2: C i : C // i-1: N, Ca, C i+1: N, Ca, C // i : N i+2: N Residue prevPrev = prev.getPrev(model); Residue nextNext = next.getNext(model); Triple likePrevPrevC = new Triple(state.get(prevPrev.getAtom(" C "))); Triple likePrevN = new Triple(state.get( prev.getAtom(" N "))); Triple likePrevCa = new Triple(state.get( prev.getAtom(" CA "))); Triple likePrevC = new Triple(state.get( prev.getAtom(" C "))); Triple likePrevO = new Triple(state.get( prev.getAtom(" O "))); Triple likeThisN = new Triple(state.get( res.getAtom(" N "))); Triple likeThisCa = new Triple(state.get( res.getAtom(" CA "))); Triple likeThisC = new Triple(state.get( res.getAtom(" C "))); Triple likeThisO = new Triple(state.get( res.getAtom(" O "))); Triple likeNextN = new Triple(state.get( next.getAtom(" N "))); Triple likeNextCa = new Triple(state.get( next.getAtom(" CA "))); Triple likeNextC = new Triple(state.get( next.getAtom(" C "))); Triple likeNextNextN = new Triple(state.get(nextNext.getAtom(" N "))); // Primary rotation of relevant atoms likePrevC = rotate(prevCa, nextCa, y, likePrevC); likePrevO = rotate(prevCa, nextCa, y, likePrevO); likeThisN = rotate(prevCa, nextCa, y, likeThisN); likeThisCa = rotate(prevCa, nextCa, y, likeThisCa); likeThisC = rotate(prevCa, nextCa, y, likeThisC); likeThisO = rotate(prevCa, nextCa, y, likeThisO); likeNextN = rotate(prevCa, nextCa, y, likeNextN); // Secondary counter-rotations of relevant atoms Triple origPrevO = state.get(prev.getAtom(" O ")); Triple origThisO = state.get( res.getAtom(" O ")); double y12 = 0, y23 = 0; if (epsilon != 0.0) { // i-1 to i double dist = Double.POSITIVE_INFINITY; for (double i = 0; Math.abs(i) <= Math.abs(y); i += thetaSpacing) { double y12test = (y > 0 ? -1.0*i : i); // want *counter* rotation Triple rotatedO = rotate(prevCa, likeThisCa, y12test, new Triple(likePrevO)); if (Triple.distance(rotatedO, origPrevO) < dist) { dist = Triple.distance(rotatedO, origPrevO); y12 = y12test; } } //y12 = calcCounterRot(prevCa, likeThisCa, state.get(prev.getAtom(" O ")), likePrevO, y); y12 *= epsilon; if (verbose) System.err.println("Secondary rot i-1: "+df.format(y12)+ " (dist = "+dist+")"); likePrevC = rotate(prevCa, likeThisCa, y12, likePrevC); likePrevO = rotate(prevCa, likeThisCa, y12, likePrevO); likeThisN = rotate(prevCa, likeThisCa, y12, likeThisN); // i to i+1 dist = Double.POSITIVE_INFINITY; for (double i = 0; Math.abs(i) <= Math.abs(y); i += thetaSpacing) { double y23test = (y > 0 ? -1.0*i : i); // want *counter* rotation Triple rotatedO = rotate(likeThisCa, nextCa, y23test, new Triple(likeThisO)); if (Triple.distance(rotatedO, origThisO) < dist) { dist = Triple.distance(rotatedO, origThisO); y23 = y23test; } } //y23 = calcCounterRot(likeThisCa, nextCa, state.get(res.getAtom(" O ")), likeThisO, y); y23 *= epsilon; if (verbose) System.err.println("Secondary rot i+1: "+df.format(y23)+ " (dist = "+dist+")"); likeThisC = rotate(likeThisCa, nextCa, y23, likeThisC); likeThisO = rotate(likeThisCa, nextCa, y23, likeThisO); likeNextN = rotate(likeThisCa, nextCa, y23, likeNextN); } double prevTau = Triple.angle(likePrevN, likePrevCa, likePrevC); double thisTau = Triple.angle(likeThisN, likeThisCa, likeThisC); double nextTau = Triple.angle(likeNextN, likeNextCa, likeNextC); if (doStructKin) { // Print structural kinemage for this residue if (verbose) System.err.println("Testing tau for br("+df.format(y)+", " +df.format(y12)+", "+df.format(y23)+") for '"+prev+"' and '"+next+"' ..."); if (tauInRange(prevTau, origPrevTau) && tauInRange(nextTau, origNextTau)) { String sign = (y > 0 ? "+" : ""); out.println("@vectorlist {"+res+" br: "+sign+y+","+y12+","+y23+ "} width= 2 color= peachtint"); printAtomCoords(likePrevN, prev+" ' N '", true); printAtomCoords(likePrevCa, prev+" ' CA '", false); printAtomCoords(likePrevC, prev+" ' C '", false); printAtomCoords(likePrevO, prev+" ' O '", false); printAtomCoords(likePrevC, prev+" ' C '", true); printAtomCoords(likeThisN, res +" ' N '", false); printAtomCoords(likeThisCa, res +" ' CA '", false); printAtomCoords(likeThisC, res +" ' C '", false); printAtomCoords(likeThisO, res +" ' O '", false); printAtomCoords(likeThisC, res +" ' C '", true); printAtomCoords(likeNextN, next+" ' N '", false); printAtomCoords(likeNextCa, next+" ' CA '", false); printAtomCoords(likeNextC, next+" ' C '", false); } } else { // Calculate and store new i+/-1 phi,psi and relevant backrub angles if (verbose) System.err.println("Testing tau for br("+df.format(y)+", " +df.format(y12)+", "+df.format(y23)+") for '"+prev+"' and '"+next+"' ..."); if (tauInRange(prevTau, origPrevTau) && tauInRange(thisTau, origThisTau) && tauInRange(nextTau, origNextTau)) { // i-1 double prevPhi = Triple.dihedral(likePrevPrevC, likePrevN, likePrevCa, likePrevC); double prevPsi = Triple.dihedral(likePrevN, likePrevCa, likePrevC, likeThisN); phipsi.add(prevPhi); phipsi.add(prevPsi); // i+1 double nextPhi = Triple.dihedral(likeThisC, likeNextN, likeNextCa, likeNextC); double nextPsi = Triple.dihedral(likeNextN, likeNextCa, likeNextC, likeNextNextN); phipsi.add(nextPhi); phipsi.add(nextPsi); // y13,12,23 phipsi.add(y ); phipsi.add(y12); phipsi.add(y23); } } } } catch (AtomException ae) { System.err.println("Trouble with backrub series for "+res); } if (!doStructKin) { double[] phipsiArray = new double[phipsi.size()]; for (int i = 0; i < phipsi.size(); i ++) phipsiArray[i] = phipsi.get(i); if (finalPhiPsi == null || noCloseCutoff || (closeEnoughToFinal(phipsiArray))) return phipsiArray; else return null; } return null; } //}}} //{{{ printStreaks //############################################################################## /** * Prints phi,psi points traced out by a backrub in kinemage format. */ void printStreaks(Residue res, double[] phipsi) { if (verbose) System.err.println("phipsi.length = "+phipsi.length); out.println("@group {"+(group == null ? "e="+df.format(epsilon)+" "+res+" streaks" : group) +"} dominant animate master= {all}"); // i-1 ("prev") out.println("@subgroup {"+res+" i-1 streak} master= {i-1}"); out.println("@balllist {"+res+" i-1 streak} radius= 0.3"); for (int i = 0; i < phipsi.length; i += 7) { double prevPhi = phipsi[i ]; double prevPsi = phipsi[i+1]; double nextPhi = phipsi[i+2]; double nextPsi = phipsi[i+3]; int y13 = (int) phipsi[i+4]; int y12 = (int) phipsi[i+5]; int y23 = (int) phipsi[i+6]; out.print("{"+res+" i-1 phi,psi=(" +df.format(prevPhi)+", "+df.format(prevPsi)+", " +df.format(nextPhi)+", "+df.format(nextPsi) +") y13,y12,y23=("+df2.format(y13)+" "+df2.format(y12)+" "+df2.format(y23) +") e="+df.format(epsilon)+"} "); out.println(df.format(prevPhi)+" " +df.format(prevPsi)+" 0.000"); } // i+1 ("next") out.println("@subgroup {"+res+" i+1 streak} master= {i+1}"); out.println("@balllist {"+res+" i+1 streak} radius= 0.3"); for (int i = 0; i < phipsi.length; i += 7) { double prevPhi = phipsi[i ]; double prevPsi = phipsi[i+1]; double nextPhi = phipsi[i+2]; double nextPsi = phipsi[i+3]; int y13 = (int) phipsi[i+4]; int y12 = (int) phipsi[i+5]; int y23 = (int) phipsi[i+6]; out.print("{"+res+" i+1 phi,psi=(" +df.format(prevPhi)+", "+df.format(prevPsi)+", " +df.format(nextPhi)+", "+df.format(nextPsi) +") y13,y12,y23=("+df2.format(y13)+" "+df2.format(y12)+" "+df2.format(y23) +") e="+df.format(epsilon)+"} "); out.println(df.format(nextPhi)+" " +df.format(nextPsi)+" 0.000"); } } //}}} //{{{ rotate, tauInRange, closeEnoughToFinal //############################################################################## /** Implement a rotation of the last point by the given angle (in degrees) * around an axis defined by the first two points. */ Triple rotate(Triple axisTail, Triple axisHead, double y, Triple coords) { Triple axis = new Triple().likeVector(axisTail, axisHead); // br: prevCa, nextCa Transform rot = new Transform(); rot = rot.likeRotation(axis, y); Triple axisTailToCoords = new Triple().likeVector(axisTail, coords); rot.transform(axisTailToCoords); Triple newCoords = new Triple().likeSum(axisTail, axisTailToCoords); return newCoords; } /** Tells if a given tau is acceptable by either (1) being within ideal +/- * the maximum allowable deviation or (2) starting outside (1) but not getting * any worse. */ boolean tauInRange(double currTau, double origTau) { if (currTau > (111-maxTauDev) && currTau < (111+maxTauDev)) { if (verbose) System.err.println(" Tau ("+df.format(currTau)+") in ideal range"); return true; } else if (currTau > (111+maxTauDev) && currTau < origTau) { if (verbose) System.err.println(" Tau ("+df.format(currTau)+") above ideal range" +" but < orig ("+df.format(origTau)+")"); return true; } else if (currTau < (111-maxTauDev) && currTau > origTau) { if (verbose) System.err.println(" Tau ("+df.format(currTau)+") below ideal range" +" but > orig ("+df.format(origTau)+")"); return true; } else { if (verbose) System.err.println(" Tau ("+df.format(currTau)+") unacceptable (orig: "+ df.format(origTau)+")"); return false; } } /** Decides whether or not a given backrub trajectory lands close enough to * the desired "target" conformation in phi,psi space. It must come close to * both the target i-1 and i+1 phi,psi. If a final "target" conformation is * not supplied, this will always return true by default. */ public boolean closeEnoughToFinal(double[] phipsi) { if (finalPhiPsi == null) return true; double finalPrevPhi = finalPhiPsi[0]; double finalPrevPsi = finalPhiPsi[1]; double finalNextPhi = finalPhiPsi[2]; double finalNextPsi = finalPhiPsi[3]; double prevClosest = Double.POSITIVE_INFINITY; double nextClosest = Double.POSITIVE_INFINITY; for (int i = 0; i < phipsi.length; i += 7) { double prevPhi = phipsi[i ]; double prevPsi = phipsi[i+1]; double nextPhi = phipsi[i+2]; double nextPsi = phipsi[i+3]; // TODO: MAKE THIS HANDLE DIHEDRAL WRAPPING! double prevDist = Math.sqrt( Math.pow(prevPhi-finalPrevPhi,2) + Math.pow(prevPsi-finalPrevPsi,2) ); double nextDist = Math.sqrt( Math.pow(nextPhi-finalNextPhi,2) + Math.pow(nextPsi-finalNextPsi,2) ); if (prevDist < prevClosest && nextDist < nextClosest) { prevClosest = prevDist; nextClosest = nextDist; } } if (verbose) System.err.println("prevClosest = "+prevClosest); if (verbose) System.err.println("nextClosest = "+nextClosest); if (verbose) { if (prevClosest < closeCutoff && nextClosest < closeCutoff) System.err.println("Close enough: "+prevClosest+" & "+nextClosest); else System.err.println("*** Not close enough: "+prevClosest+" & "+nextClosest); } if (prevClosest < closeCutoff && nextClosest < closeCutoff) return true; return false; } //}}} //{{{ setPhiPsi, printAtomCoords //############################################################################## /** Returns a new ModelState with the correct phi,psi for the given residue. */ public ModelState setPhiPsi(Residue res, Model model, ModelState state, String phiOrPsi, double endAngle) throws AtomException { Residue prev = res.getPrev(model); Residue next = res.getNext(model); //Residue prevPrev = null; //Residue nextNext = null; //if (phiOrPsi.equals("phi")) nextNext = next.getNext(model); //if (phiOrPsi.equals("psi")) prevPrev = prev.getPrev(model); // //ArrayList allAtoms = new ArrayList(); //if (prevPrev != null) for (Iterator iter = prevPrev.getAtoms().iterator(); iter.hasNext(); ) // allAtoms.add((Atom)iter.next()); //for (Iterator iter = prev.getAtoms().iterator(); iter.hasNext(); ) // allAtoms.add((Atom)iter.next()); //for (Iterator iter = res.getAtoms().iterator(); iter.hasNext(); ) // allAtoms.add((Atom)iter.next()); //for (Iterator iter = next.getAtoms().iterator(); iter.hasNext(); ) // allAtoms.add((Atom)iter.next()); //if (nextNext != null) for (Iterator iter = nextNext.getAtoms().iterator(); iter.hasNext(); ) // allAtoms.add((Atom)iter.next()); ArrayList allAtoms = new ArrayList(); for (Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue currRes = (Residue)iter.next(); if (currRes != null) for (Iterator iter2 = currRes.getAtoms().iterator(); iter2.hasNext(); ) allAtoms.add((Atom)iter2.next()); } AtomState a1 = null, a2 = null, a3 = null, a4 = null; if (phiOrPsi.equals("phi")) { a1 = state.get(prev.getAtom(" C ")); a2 = state.get( res.getAtom(" N ")); a3 = state.get( res.getAtom(" CA ")); a4 = state.get( res.getAtom(" C ")); } else if (phiOrPsi.equals("psi")) { a1 = state.get( res.getAtom(" N ")); a2 = state.get( res.getAtom(" CA ")); a3 = state.get( res.getAtom(" C ")); a4 = state.get(next.getAtom(" N ")); } double startAngle = Triple.dihedral(a1, a2, a3, a4); double dTheta = endAngle - startAngle; Transform rot = new Transform(); rot.likeRotation(a2, a3, dTheta); ModelState ms = new ModelState(state); int resnum = res.getSequenceInteger(); for(Iterator iter = allAtoms.iterator(); iter.hasNext(); ) { Atom atom = (Atom)iter.next(); a1 = state.get(atom); a2 = (AtomState)a1.clone(); int thisResnum = atom.getResidue().getSequenceInteger(); // 0 5 10 15 20 25 String order = " H , N , CA , HA , C , O "; int idx = order.indexOf(atom.getName()); if ((thisResnum == resnum && phiOrPsi.equals("phi") && idx >= 10) || (thisResnum == resnum && phiOrPsi.equals("psi") && idx >= 20) || (thisResnum > resnum)) { if (verbose) System.err.println("Rotating "+atom+" for "+phiOrPsi+" on "+res); rot.transform(a2); ms.add(a2); } } return ms; } /** Prints a point's coordinates in kinemage form with the given point ID. */ void printAtomCoords(Triple coords, String label, boolean p) { out.print("{"+label+"}"); if (p) out.print("P "); else out.print(" "); out.println(df.format(coords.getX())+","+df.format(coords.getY())+","+df.format(coords.getZ())); } //}}} //{{{ calcCounterRot (UNUSED) //############################################################################## /** Find the proper rotation angle around an axis formed by the first two * points to return the given oxygen epsilon (0 to 1) of the way to its * original position. */ double calcCounterRot(Triple tail, Triple head, Triple origO, Triple currO, double primAngle) { // 1) Project currO onto tail->head to get center of rotation circle Triple tailToHead = new Triple().likeVector(tail, head); Triple tailToCurrO = new Triple().likeVector(tail, currO); double scalarProjOntoAxis = (tailToCurrO.mag()) * Math.cos((tailToHead.angle(tailToCurrO))); if (scalarProjOntoAxis < 0) scalarProjOntoAxis *= -1; Triple tailToCenter = tailToHead.unit().mult(scalarProjOntoAxis); Triple center = new Triple(tail).add(tailToCenter); Triple tailCopy = new Triple(tail); // 2) Subtract center from all points (make it the origin) tail = new Triple().likeVector(center, tail); head = new Triple().likeVector(center, head); origO = new Triple().likeVector(center, origO); currO = new Triple().likeVector(center, currO); center = new Triple().likeVector(center, center); // now at (0,0,0) // 3) Project origO onto plane of circle (project onto normal and subtract) Triple normal = head.unit(); // same vector as Triple.normal(3 pts in circle) double scalarProjOntoNormal = (origO.mag()) * Math.cos((normal.angle(origO))); if (scalarProjOntoNormal < 0) scalarProjOntoNormal *= -1; System.err.println("scalarProjOntoNormal = "+scalarProjOntoNormal); normal.mult(scalarProjOntoNormal); Triple origOproj = new Triple(origO).sub(normal); printAtomCoords(new Triple().likeSum(tailCopy, origOproj), "origOproj", false); // 4) Calculate rotation angle and modify by epsilon for desired result double angle = -1.0 * epsilon * Triple.angle(currO, center, origOproj); System.err.println("angle b4 mod = "+angle); if (Math.abs(angle) > Math.abs(primAngle)) { // Counter-rotation bigger than primary rotation -- don't want that, // so reduce counter-rotation magnitude to that of primary rotation // but preserve relative signs double sign = ( (angle * primAngle > 0) ? 1.0 : -1.0); angle = sign * primAngle; } return angle; } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { if (filename == null && finalPhiPsi == null) { System.err.println("Need a filename or -to=#,#,#,#!"); System.exit(0); } if (filename == null && finalPhiPsi != null) { resnum = 3; // b/c using resource PDB file } if (resnum == Integer.MAX_VALUE) { System.err.println("Need a residue number! (use -res=#)"); System.exit(0); } if (finalPhiPsi != null && Double.isNaN(closeCutoff) && !noCloseCutoff) { closeCutoff = 30.0; System.err.println("No -close=# cutoff for approaching target "+ "was provided => using "+df2.format(closeCutoff)+" degrees"); } try { PdbReader reader = new PdbReader(); CoordinateFile cf = null; if (filename != null) { File f = new File(filename); cf = reader.read(f); } else { if (alphaOrBeta.equals("alpha")) cf = reader.read(this.getClass().getResourceAsStream("idealpolyala12-alpha.pdb")); else if (alphaOrBeta.equals("beta")) cf = reader.read(this.getClass().getResourceAsStream("idealpolyala12-beta.pdb")); } Iterator models = cf.getModels().iterator(); models.hasNext(); Model m = (Model) models.next(); doBackrubs(m); } catch (IOException ioe) { System.err.println("Trouble parsing file!"); } } public static void main(String[] args) { BackrubRama mainprog = new BackrubRama(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("BackrubRama.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'BackrubRama.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.BackrubRama"); System.err.println("Copyright (C) 2008 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if (filename == null) filename = arg; else throw new IllegalArgumentException("Only need 1 file!"); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-verbose") || flag.equals("-v")) { verbose = true; } else if(flag.equals("-structurekin") || flag.equals("-struct")) { doStructKin = true; } else if(flag.equals("-res")) { try { resnum = Integer.parseInt(param); } catch (NumberFormatException nfe) { System.err.println("Can't format "+param+" as an integer for resnum!"); } } else if(flag.equals("-theta13") || flag.equals("-theta")) { try { maxTheta13 = Double.parseDouble(param); } catch (NumberFormatException nfe) { System.err.println("Can't format "+param+" as a double for theta13!"); } } else if(flag.equals("-epsilon") || flag.equals("-e")) { try { epsilon = Double.parseDouble(param); } catch (NumberFormatException nfe) { System.err.println("Can't format "+param+" as a double for epsilon!"); } } else if (flag.equals("-maxtaudev")) { try { maxTauDev = Double.parseDouble(param); } catch (NumberFormatException nfe) { System.err.println("Can't format "+param+" as a double for maxTauDev!"); } } else if (flag.equals("-from")) { try { String[] parts = Strings.explode(param, ',', false, true); if (parts.length == 4 || parts.length == 6) { initPhiPsi = new double[parts.length]; for (int i = 0; i < parts.length; i++) initPhiPsi[i] = Double.parseDouble(parts[i]); } else System.err.println("-from=#,#,#,# should have exactly 4 "+ "(phi/psi i-1,i+1) or 6 (phi/psi i-1,i,i+1) values"); } catch (NumberFormatException nfe) { System.err.println("Can't format "+param+" as doubles for initPhiPsi!"); } } else if (flag.equals("-to")) { try { String[] parts = Strings.explode(param, ',', false, true); if (parts.length == 4) { finalPhiPsi = new double[4]; for (int i = 0; i < parts.length; i++) finalPhiPsi[i] = Double.parseDouble(parts[i]); } else System.err.println( "-to=#,#,#,# should have exactly 4 values (phi/psi i-1,i+1)"); } catch (NumberFormatException nfe) { System.err.println("Can't format "+param+" as doubles for finalPhiPsi!"); } } else if (flag.equals("-alpha")) { alphaOrBeta = "alpha"; } else if (flag.equals("-beta")) { alphaOrBeta = "beta"; } else if (flag.equals("-close")) { try { closeCutoff = Double.parseDouble(param); } catch (NumberFormatException nfe) { System.err.println("Can't format "+param+" as a double for closeCutoff!"); } } else if (flag.equals("-noclose")) { noCloseCutoff = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/Helix.java0000644000000000000000000007214611531212724021613 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * Helix is a class evolved from Ian's Peptide. * HelixBuilder makes an array of these then does alignments and whatnot to them.. * At the moment, all fields are public and written to directly. * *

Copyright (C) 2007 by Daniel Keedy. All rights reserved. *
Begun on Tue Mar 30 10:45:56 EST 2004 */ public class Helix //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("###.###"); //}}} //{{{ Variable definitions //############################################################################## /** Residues in this helix. Inherently contains chain and resnum info. */ public ArrayList residues; /** PDB code for the structure this helix is in */ public String pdb; /** Ncap object with various measurements contained within. */ public Ncap ncap; /** Tail position (i.e. beginning of vector) of the 4-Ca helix axis * starting at each residue. */ public ArrayList axisTails; /** Head position (i.e. end of vector) of the 4-Ca helix axis starting * at each residue. */ public ArrayList axisHeads; /** Tail position (i.e. beginning of vector) of the vector sum version of * the 4-Ca helix axis starting at each residue. */ public Triple vectorSumAxisTail; /** Head position (i.e. end of vector) of the vector sum version of * the 4-Ca helix axis starting at each residue. */ public Triple vectorSumAxisHead; /** Type of helix, either alpha or 3-10. Depends on H-bonding at N-cap, so * only completed if N-cap is not null. */ public String typeAtNcap; // Don't need separate ArrayList smoothAxisTails/Heads b/c // we'll just modify axisTails/Heads if we do that option //}}} //{{{ Constructor(s) //############################################################################## public Helix(TreeSet residuesSet) { super(); Iterator iter = residuesSet.iterator(); residues = new ArrayList(); while (iter.hasNext()) residues.add( (Residue)iter.next() ); Collections.sort(residues); ncap = null; axisTails = null; axisHeads = null; vectorSumAxisTail = null; vectorSumAxisHead = null; typeAtNcap = "(unknown)"; } //}}} //{{{ setNcapDistances //############################################################################## public void setNcapDistances(Model model, ModelState state, boolean verbose) { try { String name = ncap.res.getName(); if (name.equals("SER") || name.equals("THR") || name.equals("ASN") || name.equals("ASP")) { // First, get AtomStates to use for distance calculations Residue res = ncap.res; Residue res2 = res.getNext(model).getNext(model); Residue res3 = res2.getNext(model); Residue resminus1 = res.getPrev(model); Triple likeH2 = new Triple(state.get(res2.getAtom(" H "))); Triple likeH3 = new Triple(state.get(res3.getAtom(" H "))); Triple scAtom = null; Triple scAtom2 = null; // for ASP b/c two poss HB'ing atoms if (name.equals("SER")) scAtom = new Triple(state.get(res.getAtom(" OG "))); if (name.equals("THR")) scAtom = new Triple(state.get(res.getAtom(" OG1"))); if (name.equals("ASN")) scAtom = new Triple(state.get(res.getAtom(" OD1"))); if (name.equals("ASP")) { scAtom = new Triple(state.get(res.getAtom(" OD1"))); scAtom2 = new Triple(state.get(res.getAtom(" OD2"))); } Triple likeNcapCa = new Triple(state.get(res.getAtom(" CA "))); Triple likeN3Ca = new Triple(state.get(res3.getAtom(" CA "))); Triple likeNprimeCa = new Triple(state.get(resminus1.getAtom(" CA "))); //if (verbose) //{ // System.err.println("likeNcapCa: '"+likeNcapCa+"'"); // System.err.println("likeN3Ca: '"+likeN3Ca+"'"); // System.err.println("likeNprimeCa: '"+likeNprimeCa+"'"); //} // Set distNcapScToN2H double dist = Triple.distance(scAtom, likeH2); if (scAtom2 != null) { double altDist = Triple.distance(scAtom2, likeH2); if (altDist < dist) dist = altDist; } ncap.distNcapScToN2H = dist; // Set distNcapScToN3H dist = Triple.distance(scAtom, likeH3); if (scAtom2 != null) { double altDist = Triple.distance(scAtom2, likeH3); if (altDist < dist) dist = altDist; } ncap.distNcapScToN3H = dist; // Set distNcapCaToN3Ca dist = Triple.distance(likeNcapCa, likeN3Ca); ncap.distNcapCaToN3Ca = dist; // Set distNprimeCaToN3Ca dist = Triple.distance(likeNcapCa, likeNprimeCa); ncap.distNprimeCaToN3Ca = dist; } } catch (driftwood.moldb2.AtomException ae) { System.err.println("Problem calculating distances at "+ncap+"..."); } } //}}} //{{{ setNcapAngles //############################################################################## public void setNcapAngles(Model model, ModelState state) { try { Residue res = ncap.res; // One option is angle between the local helix axis for the N-cap residue // and the normal to the plane formed by Ca(i,i-1,i+1). AtomState ca = state.get(res.getAtom(" CA ")); Triple tail = axisTails.get(0); Triple head = axisHeads.get(0); Triple axisAtOrigin = new Triple(head.getX()-tail.getX(), head.getY()-tail.getY(), head.getZ()-tail.getZ() ); if (res.getPrev(model) != null && res.getNext(model) != null) { // this angle defined AtomState prevCa = state.get(res.getPrev(model).getAtom(" CA ")); AtomState nextCa = state.get(res.getNext(model).getAtom(" CA ")); Triple normal = new Triple().likeNormal(prevCa, ca, nextCa); ncap.normalTail = ca; ncap.normalHead = new Triple(ca.getX()+normal.getX(), ca.getY()+normal.getY(), ca.getZ()+normal.getZ()); // OK to mess with normal directly now ncap.planeNormalAngle = normal.angle(axisAtOrigin); } // else (default in Ncap constructor: Double.NaN) // A second option is the angle between the N-cap Ca_Cb vector // and the local helix axis Triple likeCa = new Triple(ca); // same coords as ca above but different object if (!res.getName().equals("GLY")) { Triple likeCb = new Triple(state.get(res.getAtom(" CB "))); Triple caCbAtOrigin = new Triple().likeVector(likeCa, likeCb); ncap.caCbAngle = caCbAtOrigin.angle(axisAtOrigin); } // else (default in Ncap constructor: Double.NaN) // Another two measures involve Ca's so we'll do them together. // (1) The first is another option to describe the backrub state // that ignores my artificial local helix axes and defines // the backrub as the angle between the Ca(i-1,i+1,i+2) and // Ca(i-1,i,i+1) planes: first = reference, second = backrub. // (2) The second is the angle btw the virtual bonds Ca(i-1,i+1) // and Ca(i+1,i+2), which was visually observed to potentially be // different for short Ser/Thr vs. long Asn/Asp Ncaps. if (res.getPrev(model) != null && res.getNext(model) != null) { Residue resNext = res.getNext(model); Residue resPrev = res.getPrev(model); if (resNext.getNext(model) != null) { Residue resNext2 = resNext.getNext(model); Triple likeCaPrev = new Triple(state.get(resPrev.getAtom(" CA "))); likeCa = new Triple(state.get(res.getAtom(" CA "))); Triple likeCaNext = new Triple(state.get(resNext.getAtom(" CA "))); Triple likeCaNext2 = new Triple(state.get(resNext2.getAtom(" CA "))); // (1) caPlanesAngle Triple norm1 = new Triple().likeNormal(likeCaPrev, likeCa, likeCaNext); Triple norm2 = new Triple().likeNormal(likeCaPrev, likeCaNext, likeCaNext2); ncap.caPlanesAngle = norm1.angle(norm2); // (2) caEntryAngle ncap.caEntryAngle = new Triple().angle( likeCaPrev, likeCaNext, likeCaNext2); } } // Another set of measures is the tau angles (N-Ca-C) for i, i-1, i+1. // They may be strained if a backrub occurs Triple likeN = new Triple(state.get(res.getAtom(" N "))); likeCa = new Triple(state.get(res.getAtom(" CA "))); Triple likeC = new Triple(state.get(res.getAtom(" C "))); ncap.tau = Triple.angle(likeN, likeCa, likeC); if (res.getPrev(model) != null) { likeN = new Triple(state.get(res.getPrev(model).getAtom(" N "))); likeCa = new Triple(state.get(res.getPrev(model).getAtom(" CA "))); likeC = new Triple(state.get(res.getPrev(model).getAtom(" C "))); ncap.nprimeTau = Triple.angle(likeN, likeCa, likeC); } if (res.getNext(model) != null) { likeN = new Triple(state.get(res.getNext(model).getAtom(" N "))); likeCa = new Triple(state.get(res.getNext(model).getAtom(" CA "))); likeC = new Triple(state.get(res.getNext(model).getAtom(" C "))); ncap.n1Tau = Triple.angle(likeN, likeCa, likeC); } // These measures look at N3's N-H vector to see if it points in // different directions based on the N-cap Hbond type. // We'll use two different "references." likeCa = new Triple(state.get(res.getAtom(" CA "))); if (res.getNext(model) != null) { Residue res1 = res.getNext(model); Triple likeCa1 = new Triple(state.get(res1.getAtom(" CA "))); if (res1.getNext(model) != null) { Residue res2 = res1.getNext(model); Triple likeCa2 = new Triple(state.get(res2.getAtom(" CA "))); if (res2.getNext(model) != null) { Residue res3 = res2.getNext(model); if (!res3.getName().equals("PRO")) { Triple likeN3N = new Triple(state.get(res3.getAtom(" N "))); Triple likeN3H = new Triple(state.get(res3.getAtom(" H "))); Triple n3NH = new Triple().likeVector(likeN3N, likeN3H); // n3NH_precCaCaCA if (!res.getName().equals("GLY")) { Triple norm = new Triple().likeNormal(likeCa, likeCa1, likeCa2); ncap.n3NH_precCaCaCa = n3NH.angle(norm); } // n3NH_axis ncap.n3NH_axis = n3NH.angle(axisAtOrigin); } } } } } catch (driftwood.moldb2.AtomException ae) { System.err.println("Problem calculating N-cap angles..."); } } //}}} //{{{ setNcapPhiPsis //############################################################################## public void setNcapPhiPsis(Model model, ModelState state) { try { // Phi, psi for N-cap residue Triple likeCa = new Triple(state.get(ncap.res.getAtom(" CA "))); Triple likeN = new Triple(state.get(ncap.res.getAtom(" N "))); Triple likeC = new Triple(state.get(ncap.res.getAtom(" C "))); if (ncap.res.getPrev(model) != null) // phi defined { Triple likePrevC = new Triple(state.get(ncap.res.getPrev(model).getAtom(" C "))); ncap.phi = Triple.dihedral(likePrevC, likeN, likeCa, likeC); } if (ncap.res.getNext(model) != null) // psi defined { Triple likeNextN = new Triple(state.get(ncap.res.getNext(model).getAtom(" N "))); ncap.psi = Triple.dihedral(likeN, likeCa, likeC, likeNextN); } // Phi, psi for N-cap i+1 residue ("N1") if (ncap.res.getNext(model) != null) { Residue n1 = ncap.res.getNext(model); Triple likeN1Ca = new Triple(state.get(n1.getAtom(" CA "))); Triple likeN1N = new Triple(state.get(n1.getAtom(" N "))); Triple likeN1C = new Triple(state.get(n1.getAtom(" C "))); ncap.n1Phi = Triple.dihedral(likeC, likeN1N, likeN1Ca, likeN1C); if (n1.getNext(model) != null) // psi defined { Triple likeN2N = new Triple(state.get(n1.getNext(model).getAtom(" N "))); ncap.n1Psi = Triple.dihedral(likeN1N, likeN1Ca, likeN1C, likeN2N); } } // Phi, psi for N-cap i-1 residue ("N'") if (ncap.res.getPrev(model) != null) { Residue nprime = ncap.res.getPrev(model); Triple likeNprimeCa = new Triple(state.get(nprime.getAtom(" CA "))); Triple likeNprimeN = new Triple(state.get(nprime.getAtom(" N "))); Triple likeNprimeC = new Triple(state.get(nprime.getAtom(" C "))); if (nprime.getPrev(model) != null) // phi defined { Triple likendoubleprimeC = new Triple(state.get( nprime.getPrev(model).getAtom(" C "))); ncap.nprimePhi = Triple.dihedral(likendoubleprimeC, likeNprimeN, likeNprimeCa, likeNprimeC); } ncap.nprimePsi = Triple.dihedral(likeNprimeN, likeNprimeCa, likeNprimeC, likeN); } } catch (driftwood.moldb2.AtomException ae) { System.err.println("Problem calculating ncap i, i-1, and i+1 phi & psi..."); } } //}}} //{{{ setNcapScLengths //############################################################################## public void setNcapScLengths(Model model) { TreeSet zeroChis = new TreeSet(); zeroChis.add("GLY"); zeroChis.add("ALA"); TreeSet oneChi = new TreeSet(); oneChi.add("CYS"); oneChi.add("SER"); oneChi.add("VAL"); oneChi.add("THR"); oneChi.add("PRO"); oneChi.add("PHE"); oneChi.add("TYR"); TreeSet twoChis = new TreeSet(); twoChis.add("TRP"); twoChis.add("HIS"); twoChis.add("LEU"); twoChis.add("ILE"); twoChis.add("ASP"); twoChis.add("ASN"); TreeSet threeChis = new TreeSet(); threeChis.add("GLU"); threeChis.add("GLN"); threeChis.add("MET"); TreeSet fourChis = new TreeSet(); fourChis.add("LYS"); fourChis.add("ARG"); Residue n3 = ncap.res.getNext(model).getNext(model).getNext(model); String n3ResType = n3.getName(); String ncapResType = ncap.res.getName(); //if (verbose) System.err.println("ncapResType: '"+ncapResType+ // "'...\tn3ResType: '"+n3ResType+"'..."); // Ncap if (ncap != null) { if (zeroChis.contains(ncapResType)) ncap.ncapNumChis = 0; // shouldn't happen if (oneChi.contains(ncapResType)) ncap.ncapNumChis = 1; if (twoChis.contains(ncapResType)) ncap.ncapNumChis = 2; if (threeChis.contains(ncapResType)) ncap.ncapNumChis = 3; // shouldn't happen if (fourChis.contains(ncapResType)) ncap.ncapNumChis = 4; // shouldn't happen } // N3 if (n3 != null) { if (zeroChis.contains(n3ResType)) ncap.n3NumChis = 0; if (oneChi.contains(n3ResType)) ncap.n3NumChis = 1; if (twoChis.contains(n3ResType)) ncap.n3NumChis = 2; if (threeChis.contains(n3ResType)) ncap.n3NumChis = 3; if (fourChis.contains(n3ResType)) ncap.n3NumChis = 4; } } //}}} //{{{ setTypeAtNcap //############################################################################## /** * Sets type to "alpha" or "3-10" depending on the mc H-bonding at the N-cap. * If the 3_10 H-bond exists and the alpha one does not, we'llcall it 3_10. * If the alpha one exists and the 3_10 one does not, we'll call it alpha. * If they both exist and it's close (w/in "0.5 kcal/mol"), it's 3_10. * If they both exist and it's not close, it's both/ambiguous. * If neither exists, it's neither. * * As in HelixBuilder.findHBonds, H-bonds are based on the criteria defined in * W. Kabsch and C. Sander (1983) Biopolymers, 22:2577. * The basic idea is that the H-bond is accepted if * E = 0.42*0.20*332*(1/rON + 1/rCH - 1/rOH - 1/rCN) is less than -0.5 kcal/mol. * Atom-atom distances are in Angstroms and E is in kcal/mol. * Ideal alignment allows distances up to 5.2 A (O to N); * ideal distance allows angles up to 63 degrees. * Be careful -- it will try to pick up i to {i, i+1, i+2} "H-bonds". */ public void setTypeAtNcap(Model model, ModelState state, boolean verbose) { try { if (ncap == null) System.err.println("N-cap null for "+toString()+ " => not setting helix type (alpha vs. 3-10) at N-cap"); else { Residue res3 = ncap.res.getNext(model).getNext(model).getNext(model); AtomState carbon0 = state.get(ncap.res.getAtom(" C ")); AtomState oxygen0 = state.get(ncap.res.getAtom(" O ")); AtomState nitrogen3 = state.get(res3.getAtom(" N ")); AtomState hydrogen3 = state.get(res3.getAtom(" H ")); AtomState nitrogen4 = state.get(res3.getNext(model).getAtom(" N ")); AtomState hydrogen4 = state.get(res3.getNext(model).getAtom(" H ")); // 3-10 (i to i+3) double rON = oxygen0.distance(nitrogen3); double rCH = carbon0.distance(hydrogen3); double rOH = oxygen0.distance(hydrogen3); double rCN = carbon0.distance(nitrogen3); ncap.hbondEnergy3_10 = 27.9*(1/rON + 1/rCH - 1/rOH - 1/rCN); // alpha (i to i+4) rON = oxygen0.distance(nitrogen4); rCH = carbon0.distance(hydrogen4); rOH = oxygen0.distance(hydrogen4); rCN = carbon0.distance(nitrogen4); ncap.hbondEnergyAlpha = 27.9*(1/rON + 1/rCH - 1/rOH - 1/rCN); // default: typeAtNcap = "(unknown)" double en = -0.5; if (ncap.hbondEnergy3_10 < en && ncap.hbondEnergyAlpha > en) typeAtNcap = "3_10"; if (ncap.hbondEnergyAlpha < en && ncap.hbondEnergy3_10 > en) typeAtNcap = "alpha"; if (ncap.hbondEnergyAlpha > en && ncap.hbondEnergy3_10 > en) typeAtNcap = "neither"; if (ncap.hbondEnergy3_10 < en && ncap.hbondEnergyAlpha < en) { if (Math.abs(ncap.hbondEnergyAlpha)-Math.abs(ncap.hbondEnergy3_10) < Math.abs(en)) typeAtNcap = "3_10"; else typeAtNcap = "both/ambiguous"; //if (Math.abs(ncap.hbondEnergyAlpha) - Math.abs(ncap.hbondEnergy3_10) < Math.abs(0.5*en)) // typeAtNcap = "ambiguous"; //else if (ncap.hbondEnergy3_10 < ncap.hbondEnergyAlpha) typeAtNcap = "3_10 (iffy)"; //else if (ncap.hbondEnergyAlpha < ncap.hbondEnergy3_10 ) typeAtNcap = "alpha (iffy)"; } if (verbose) System.err.println(ncap+" is "+typeAtNcap+" E(3_10)=" +df.format(ncap.hbondEnergy3_10)+", E(alpha)="+df.format(ncap.hbondEnergyAlpha)); } } catch (AtomException ae) { System.err.println("Trouble w/ H-bonding for alpha vs. 3-10 at "+ncap); } } //}}} //{{{ setCappingBox //############################################################################## public void setCappingBox(Model model, ModelState state, boolean verbose) /** * This is a simple geometric routine akin to HelixBuilder.typeOfNcapHbond. * For a given valid N cap, if residue N3 exists, it documents what aa type * it is and whether or not it's a Gln/Glu that makes a "capping box" * hydrogen bond. * These two values are stored as fields in the Ncap class. */ { try { Residue res0 = ncap.res; if (res0.getNext(model) != null) { Residue res1 = res0.getNext(model); if (res1.getNext(model) != null) { Residue res2 = res1.getNext(model); if (res2.getNext(model) != null) { // Set res3 Residue res3 = res2.getNext(model); ncap.res3 = res3; // Get potentially Hbonded capping box sc3 & mc0 coordinates Atom h0 = res0.getAtom(" H "); Atom n0 = res0.getAtom(" N "); Triple likeH0 = null; Triple likeN0 = null; if (h0 != null) likeH0 = new Triple(state.get(h0)); if (n0 != null) likeN0 = new Triple(state.get(n0)); Triple likeO3 = null; Triple likeO3_2 = null; Triple likeC3 = null; if (res3.getName().equals("GLN")) { Atom o3 = res3.getAtom(" OE1"); Atom c3 = res3.getAtom(" CD "); if (o3 != null) likeO3 = new Triple(state.get(o3)); if (c3 != null) likeC3 = new Triple(state.get(c3)); } if (res3.getName().equals("GLU")) { Atom o3 = res3.getAtom(" OE1"); Atom o3_2 = res3.getAtom(" OE2"); Atom c3 = res3.getAtom(" CD "); if (o3 != null) likeO3 = new Triple(state.get(o3)); if (o3_2 != null) likeO3_2 = new Triple(state.get(o3_2)); if (c3 != null) likeC3 = new Triple(state.get(c3)); } if (res3.getName().equals("ASN")) { Atom o3 = res3.getAtom(" OD1"); Atom c3 = res3.getAtom(" CG "); if (o3 != null) likeO3 = new Triple(state.get(o3)); if (c3 != null) likeC3 = new Triple(state.get(c3)); } if (res3.getName().equals("ASP")) { Atom o3 = res3.getAtom(" OD1"); Atom o3_2 = res3.getAtom(" OD2"); Atom c3 = res3.getAtom(" CG "); if (o3 != null) likeO3 = new Triple(state.get(o3)); if (o3_2 != null) likeO3_2 = new Triple(state.get(o3_2)); if (c3 != null) likeC3 = new Triple(state.get(c3)); } if (res3.getName().equals("SER")) { Atom o3 = res3.getAtom(" OG "); Atom c3 = res3.getAtom(" CB "); if (o3 != null) likeO3 = new Triple(state.get(o3)); if (c3 != null) likeC3 = new Triple(state.get(c3)); } if (res3.getName().equals("THR")) { Atom o3 = res3.getAtom(" OG1"); Atom c3 = res3.getAtom(" CB "); if (o3 != null) likeO3 = new Triple(state.get(o3)); if (c3 != null) likeC3 = new Triple(state.get(c3)); } // Accept Hbond according to Kabsch & Sander criterion: // E = 0.42*0.20*332*(1/rON + 1/rCH - 1/rOH - 1/rCN) // is less than -0.5 kcal/mol. // The difference is we're now dealing with a sc-mc // Hbond, but it should work about as well (?). if (likeH0 != null && likeN0 != null && likeO3 != null && likeC3 != null) { double rON = likeO3.distance(likeN0); double rCH = likeC3.distance(likeH0); double rOH = likeO3.distance(likeH0); double rCN = likeC3.distance(likeN0); double energy = 27.9*(1/rON + 1/rCH - 1/rOH - 1/rCN); if (likeO3_2 != null) { double rON_2 = likeO3_2.distance(likeN0); double rOH_2 = likeO3_2.distance(likeH0); double energy2 = 27.9*(1/rON_2 + 1/rCH - 1/rOH_2 - 1/rCN); if (energy2 < energy) energy = energy2; } if (energy < -0.5) { ncap.cappingBoxResType = res3.getName(); if (verbose) System.err.println("'"+res3+"' makes capping " +"box Hb to '"+res0+"'\t(energy="+df.format(energy)+")"); } } else if (verbose) System.err.println("No EQNDST capping box for "+toString()); } } } } catch (AtomException ae) { System.err.println("Trouble looking for capping box in '"+toString()+"'"); } } //}}} //{{{ getRes //############################################################################## public Residue getRes(String firstOrLast) { Residue resToReturn = residues.get(0); if (firstOrLast.equals("first")) { for (Residue res : residues) { if (res.getSequenceInteger() < resToReturn.getSequenceInteger()) resToReturn = res; } } else if (firstOrLast.equals("last")) { for (Residue res : residues) { if (res.getSequenceInteger() > resToReturn.getSequenceInteger()) resToReturn = res; } } return resToReturn; } //}}} //{{{ toString //############################################################################## public String toString() { return "helix from "+getRes("first")+" to "+getRes("last"); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/ShearPioneer.java0000644000000000000000000007746011571452342023140 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.Strings; //}}} /** * ShearPioneer explores the effects of different shear motions * in real space and Ramachandran space, focusing on helical structure. * *

Copyright (C) 2010 by Daniel A. Keedy. All rights reserved. *
Begun on Thu Dec. 9, 2010 */ public class ShearPioneer //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("0"); DecimalFormat df2 = new DecimalFormat("0.#"); DecimalFormat df3 = new DecimalFormat("#"); DecimalFormat df4 = new DecimalFormat("#.##"); DecimalFormat df5 = new DecimalFormat("0.0"); String STREAKS = "phi/psi streaks kin"; String STRUCTS = "local structures kin"; //}}} //{{{ Variable definitions //############################################################################## boolean verbose = false; /** Kinemage style to output: either phi/psi streaks (STREAKS, default) * or actual local structures (STRUCTS). */ String outputMode = STREAKS; /** If true and output mode is STRUCTS, print in PDB instead of kin format. */ boolean pdbOut = false; String filename = null; // mututally boolean useIdealHelix = false; // exclusive /** Residue number i for i to i+4 shears (or i to i+3 backrubs when inherited). */ int resnum = Integer.MAX_VALUE; /** Extent of deviation (in degrees) for phi and psi relative to ideal * helix resource PDB file. NaN means the original phi,psi will be used. */ double phipsiRange = Double.NaN; /** Spacing of deviation (in degrees) for phi and psi relative to ideal * helix resource PDB file. */ double phipsiSpacing = 1.0; /** Maximum tau deviation for all mobile residues (5.5 in BRDEE paper). */ double maxTauDev = 5.5; /** Maximum primary shear rotation angle in each direction. */ double maxTheta = 15.0; /** Spacing in degrees between sample points on main shear trajectory. */ double thetaSpacing = 1.0; /** Fraction of rotations that would most closely restore positions of * flanking oxygens. */ double epsilon = 0.7; /** If both are NaN, iterate through epsilon values from min to max, ignoring * the default epsilon value. Alternative to non-NaN initial phi,psi range. */ double minEpsilon = Double.NaN; double maxEpsilon = Double.NaN; //}}} //{{{ Constructor(s) //############################################################################## public ShearPioneer() { super(); } //}}} //{{{ processModel //############################################################################## /** * Sets up to do a series of moves, with varying initial phi,psi and/or * epsilon restoration values for the first and last oxygens. */ void processModel(Model model) { System.out.println("@kinemage {"+resnum+"-"+(resnum+3)+" shear " +(outputMode == STREAKS ? "streaks" : "structs")+"}"); Residue res = findResidue(model); ModelState state = model.getState(); if(!Double.isNaN(phipsiRange)) { // Try a grid of near-alpha helices in ideal geomtry double origPhi = -60; // hard-coded double origPsi = -40; // for now... double minPhi = origPhi - phipsiRange; double maxPhi = origPhi + phipsiRange; double minPsi = origPsi - phipsiRange; double maxPsi = origPsi + phipsiRange; boolean reverse = true; for(double initPhi = minPhi; initPhi <= maxPhi; initPhi += phipsiSpacing) { reverse = !reverse; for(double initPsi = minPsi; initPsi <= maxPsi; initPsi += phipsiSpacing) { // Reorder grid traversal to produce a pleasant snake-like pattern double trueInitPsi = initPsi; if(reverse) trueInitPsi = maxPsi - (initPsi - minPsi); // Alter state then do shears ModelState initState = initalizePhiPsi(model, state, initPhi, trueInitPsi); String label = " ("+df.format(initPhi)+","+df.format(trueInitPsi)+")"; doMoveSeries(model, initState, res, label); } } } else if(!Double.isNaN(minEpsilon) && !Double.isNaN(maxEpsilon)) { // Try a range of epsilon values on a single input model for(double e = minEpsilon; e <= maxEpsilon; e += 0.1) { epsilon = e; // global doMoveSeries(model, state, res); } } else { // Just use the single input model System.out.println("@group {"+resnum+"-"+(resnum+3) +" ep="+df2.format(epsilon)+"} animate dominant"); doMoveSeries(model, state, res); } } //}}} //{{{ findResidue //############################################################################## /** * Finds the user's requested residue (based on residue number) * and does some simple checks before proceeding. */ Residue findResidue(Model model) { Residue res = null; for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); if(r.getSequenceInteger() == resnum) { res = r; break; } } if(res == null) { System.err.println("D'oh! Can't find residue # "+resnum); System.exit(0); } if(res.getPrev(model) == null) { System.err.println("D'oh! Need a residue preceding "+res); System.exit(0); } if(res.getNext(model) == null) { System.err.println("D'oh! Need a residue following "+res); System.exit(0); } return res; } //}}} //{{{ initalizePhiPsi //############################################################################## /** * Directly alters the given ModelState by setting phi/psi to the given values * for every residue (except maybe the ends). */ ModelState initalizePhiPsi(Model model, ModelState state, double initPhi, double initPsi) { ModelState initState = new ModelState(state); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); //initState = setPhiOrPsi(res, model, state, "phi", initPhi); initState = setPhiOrPsi(res, model, initState, "phi", initPhi); initState = setPhiOrPsi(res, model, initState, "psi", initPsi); } return initState; } //}}} //{{{ setPhiOrPsi //############################################################################## /** * Directly modifies the given ModelState by setting phi or psi to the given value * for the given residue. */ ModelState setPhiOrPsi(Residue res, Model model, ModelState state, String phiOrPsi, double endAngle) { Residue prev = res.getPrev(model); Residue next = res.getNext(model); if(prev == null && phiOrPsi.equals("phi")) { if(verbose) System.err.println("Setting "+phiOrPsi+" for "+res+" ... ERROR: no previous residue!"); return state; } else if(next == null && phiOrPsi.equals("psi")) { if(verbose) System.err.println("Setting "+phiOrPsi+" for "+res+" ... ERROR: no next residue!"); return state; } ArrayList allAtoms = new ArrayList(); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue currRes = (Residue) iter.next(); if(currRes != null) for(Iterator iter2 = currRes.getAtoms().iterator(); iter2.hasNext(); ) allAtoms.add((Atom)iter2.next()); } AtomState a1 = null, a2 = null, a3 = null, a4 = null; try { if(phiOrPsi.equals("phi")) { a1 = state.get(prev.getAtom(" C ")); a2 = state.get( res.getAtom(" N ")); a3 = state.get( res.getAtom(" CA ")); a4 = state.get( res.getAtom(" C ")); } else if(phiOrPsi.equals("psi")) { a1 = state.get( res.getAtom(" N ")); a2 = state.get( res.getAtom(" CA ")); a3 = state.get( res.getAtom(" C ")); a4 = state.get(next.getAtom(" N ")); } double startAngle = Triple.dihedral(a1, a2, a3, a4); double dTheta = endAngle - startAngle; Transform rot = new Transform(); rot.likeRotation(a2, a3, dTheta); ModelState newState = new ModelState(state); for(Iterator iter = allAtoms.iterator(); iter.hasNext(); ) { Atom atom = (Atom) iter.next(); a1 = state.get(atom); a2 = (AtomState) a1.clone(); int targResnum = res.getSequenceInteger(); int thisResnum = atom.getResidue().getSequenceInteger(); // 0 5 10 15 20 25 String order = " H , N , CA , HA , C , O "; int idx = order.indexOf(atom.getName()); if((thisResnum > targResnum) || (thisResnum == targResnum && phiOrPsi.equals("phi") && idx >= 10) || (thisResnum == targResnum && phiOrPsi.equals("psi") && idx >= 20)) { // This atom should be affected by the current phi or psi rotation rot.transform(a2); newState.add(a2); } } if(verbose) System.err.println("Setting "+phiOrPsi+" for "+res+" ... done"); return newState; } catch(AtomException ex) { if(verbose) System.err.println("Setting "+phiOrPsi+" for "+res+" ... ERROR: missing necessary atoms!"); return state; } } //}}} //{{{ doMoveSeries //############################################################################## void doMoveSeries(Model model, ModelState state, Residue res) { doMoveSeries(model, state, res, ""); } /** * Performs a series of shears of varying magnitudes, and prints out * some type of kinemage (Rama streaks or local backbone structures). */ void doMoveSeries(Model model, ModelState state, Residue res, String label) { System.out.println("@group {shr"+resnum+"-"+(resnum+3)+label +" ep"+df5.format(epsilon)+"} animate dominant"); Residue res1 = res; Residue res2 = res1.getNext(model); Residue res3 = res2.getNext(model); Residue res4 = res3.getNext(model); if(res1 == null || res2 == null || res3 == null || res4 == null) { System.err.println("Oops, missing residues somewhere in here: "+resnum+"-"+(resnum+3)); System.exit(0); } ArrayList residues = new ArrayList(); residues.add(res1); residues.add(res2); residues.add(res3); residues.add(res4); Residue[] resArray = residues.toArray(new Residue[residues.size()]); ArrayList movedRegions = new ArrayList(); for(double theta = -1.0 * maxTheta; theta <= maxTheta; theta += thetaSpacing) { try { // Primary shear ModelState newState = CaShear.makeConformation(residues, state, theta, false); // Counter-rotations to restore O1 and O3 double pepRot1 = calcPepRot(state, newState, res1, res2, theta); double pepRot3 = calcPepRot(state, newState, res3, res4, theta); double[] thetas = new double[] { pepRot1, 0, pepRot3 }; boolean[] idealizeSC = new boolean[] { false, false, false, false }; newState = CaShear.twistPeptides(resArray, newState, thetas, idealizeSC); // Store data for output double[] rots = new double[3]; rots[0] = theta; rots[1] = pepRot1; rots[2] = pepRot3; double[] phipsi = new double[4]; phipsi[0] = AminoAcid.getPhi(model, res1, newState); phipsi[1] = AminoAcid.getPsi(model, res1, newState); phipsi[2] = AminoAcid.getPhi(model, res4, newState); phipsi[3] = AminoAcid.getPsi(model, res4, newState); boolean badTau = AminoAcid.getTauDeviation(res1, newState) > maxTauDev || AminoAcid.getTauDeviation(res2, newState) > maxTauDev || AminoAcid.getTauDeviation(res3, newState) > maxTauDev || AminoAcid.getTauDeviation(res4, newState) > maxTauDev; ShearedRegion s = new ShearedRegion(resArray, newState, rots, phipsi, badTau); movedRegions.add(s); } catch(AtomException ex) { System.err.println("Can't perform "+df.format(theta)+" degree shear!"); } catch(ResidueException ex) { System.err.println("Can't get phi/psi after "+df.format(theta)+" degree shear!"); } } // Kinemage if(outputMode == STREAKS) { printStreaks(movedRegions); } else if(outputMode == STRUCTS) { printStructs(movedRegions, model); } else System.err.println("Cannot compute! Bad output mode: "+outputMode); } //}}} //{{{ calcPepRot //############################################################################## /** * Calculates the best peptide rotation for restoring the C=O position of * the given peptide, less than or equal to the given theta, and returns * that rotation angle multiplied by epsilon. */ double calcPepRot(ModelState oldState, ModelState newState, Residue r1, Residue r2, double theta) { if(epsilon == 0) return 0; try { Atom calpha1 = r1.getAtom(" CA "); Atom calpha2 = r2.getAtom(" CA "); Atom oxygen = r1.getAtom(" O "); AtomState newCa1 = newState.get(calpha1); // for axis AtomState newCa2 = newState.get(calpha2); // for axis AtomState newO = newState.get(oxygen); // will get moved AtomState oldO = oldState.get(oxygen); // for reference only double bestRot = 0; double bestDist = Double.POSITIVE_INFINITY; double min = -1.5 * Math.abs(theta); double max = 1.5 * Math.abs(theta); for(double rot = min; rot < max; rot += 0.1) { Triple rotO = rotate(newCa1, newCa2, rot, new Triple(newO)); double dist = Triple.distance(rotO, oldO); if(dist < bestDist) { bestDist = dist; bestRot = rot; } } return bestRot * epsilon; } catch(AtomException ex) { System.err.println("Error calculating peptide rotation for "+r1+" to "+r2); return Double.NaN; } } //}}} //{{{ rotate //############################################################################## /** * Rotates the last point by the given angle (in degrees) * around an axis defined by the first two points. */ Triple rotate(Triple axisTail, Triple axisHead, double y, Triple coords) { Triple axis = new Triple().likeVector(axisTail, axisHead); // br: prevCa, nextCa Transform rot = new Transform(); rot = rot.likeRotation(axis, y); Triple axisTailToCoords = new Triple().likeVector(axisTail, coords); rot.transform(axisTailToCoords); Triple newCoords = new Triple().likeSum(axisTail, axisTailToCoords); return newCoords; } //}}} //{{{ printStreaks //############################################################################## /** * Prints two streaks of phi/psi points, one for each end of a shear series, * in kinemage format. */ void printStreaks(ArrayList movedRegions) { System.out.println("@balllist {shear i} radius= 0.3 master= {shear i}"); for(int i = 0; i < movedRegions.size(); i++) { ShearedRegion s = (ShearedRegion) movedRegions.get(i); System.out.println("{i " +s.res1.getName().toLowerCase().trim()+s.res1.getSequenceInteger() +" "+df.format(s.theta)+","+df.format(s.pepRot1)+","+df.format(s.pepRot3) +" ep="+df2.format(epsilon)+" ("+df.format(s.phi1)+","+df.format(s.psi1)+")}" +(s.badTau ? "hotpink " : "peachtint ") +df4.format(s.phi1)+" "+df4.format(s.psi1)); // actual coordinates } System.out.println("@balllist {shear i+3} radius= 0.3 master= {shear i+3}"); for(int i = 0; i < movedRegions.size(); i++) { ShearedRegion s = (ShearedRegion) movedRegions.get(i); System.out.println("{i+3 " +s.res4.getName().toLowerCase().trim()+s.res4.getSequenceInteger() +" "+df.format(s.theta)+","+df.format(s.pepRot1)+","+df.format(s.pepRot3) +" ep="+df2.format(epsilon)+" ("+df.format(s.phi4)+","+df.format(s.psi4)+")}" +(s.badTau ? "hotpink " : "peachtint ") +df4.format(s.phi4)+" "+df4.format(s.psi4)); // actual coordinates } } //}}} //{{{ printStructs //############################################################################## /** * Prints a series of local backbone structures resulting from shears of varying * magnitudes in kinemage format. */ void printStructs(ArrayList movedRegions, Model model) { for(int i = 0; i < movedRegions.size(); i++) { ShearedRegion s = (ShearedRegion) movedRegions.get(i); if(pdbOut) { PdbWriter writer = new PdbWriter(System.out); System.out.println("MODEL "+((i+1) < 10 ? " " : "")+(i+1)); writer.writeResidues(model.getResidues(), s.state); } else { Atom ca1 = s.res1.getAtom(" CA "); Atom c1 = s.res1.getAtom(" C "); Atom o1 = s.res1.getAtom(" O "); Atom n2 = s.res2.getAtom(" N "); Atom ca2 = s.res2.getAtom(" CA "); Atom c2 = s.res2.getAtom(" C "); Atom o2 = s.res2.getAtom(" O "); Atom n3 = s.res3.getAtom(" N "); Atom ca3 = s.res3.getAtom(" CA "); Atom c3 = s.res3.getAtom(" C "); Atom o3 = s.res3.getAtom(" O "); Atom n4 = s.res4.getAtom(" N "); Atom ca4 = s.res4.getAtom(" CA "); try { AtomState ca1s = s.state.get(ca1); AtomState c1s = s.state.get(c1); AtomState o1s = s.state.get(o1); AtomState n2s = s.state.get(n2); AtomState ca2s = s.state.get(ca2); AtomState c2s = s.state.get(c2); AtomState o2s = s.state.get(o2); AtomState n3s = s.state.get(n3); AtomState ca3s = s.state.get(ca3); AtomState c3s = s.state.get(c3); AtomState o3s = s.state.get(o3); AtomState n4s = s.state.get(n4); AtomState ca4s = s.state.get(ca4); System.out.println("@vectorlist {"+s.toString() +" "+df.format(s.theta)+","+df.format(s.pepRot1)+","+df.format(s.pepRot3) +"} width= 2 color= "+(s.badTau ? "hotpink" : "peachtint")); printAtomCoords(ca1s, s.res1+" 'CA'", true); printAtomCoords(c1s, s.res1+" 'C'" , false); printAtomCoords(o1s, s.res1+" 'O'" , false); printAtomCoords(c1s, s.res1+" 'C'" , true); printAtomCoords(n2s, s.res2+" 'N'" , false); printAtomCoords(ca2s, s.res2+" 'CA'", false); printAtomCoords(c2s, s.res2+" 'C'" , false); printAtomCoords(o2s, s.res2+" 'O'" , false); printAtomCoords(c2s, s.res2+" 'C'" , true); printAtomCoords(n3s, s.res3+" 'N'" , false); printAtomCoords(ca3s, s.res3+" 'CA'", false); printAtomCoords(c3s, s.res3+" 'C'" , false); printAtomCoords(o3s, s.res3+" 'O'" , false); printAtomCoords(c3s, s.res3+" 'C'" , true); printAtomCoords(n4s, s.res4+" 'N'" , false); printAtomCoords(ca4s, s.res4+" 'CA'", false); } catch(AtomException ex) { System.err.println("Error printing structures for "+s); } } } } //}}} //{{{ printAtomCoords //############################################################################## /** * Prints a point's coordinates in kinemage form with the given point ID. */ void printAtomCoords(Triple coords, String label, boolean p) { System.out.print("{"+label+"}"); if(p) System.out.print("P "); else System.out.print(" "); System.out.println( df4.format(coords.getX())+","+ df4.format(coords.getY())+","+ df4.format(coords.getZ())); } //}}} //{{{ CLASS: ShearedRegion //############################################################################## /** * Embodies a local sheared structure and several useful aspects of its geometry. */ public class ShearedRegion //extends ... implements ... { protected Residue res1, res2, res3, res4; protected ModelState state; protected double theta, pepRot1, pepRot3; protected double phi1, psi1, phi4, psi4; protected boolean badTau; // XX-TODO: || Rama outlier! public ShearedRegion(Residue[] r, ModelState s, double[] rots, double[] pp, boolean bt) { super(); res1 = r[0]; res2 = r[1]; res3 = r[2]; res4 = r[3]; state = s; theta = rots[0]; pepRot1 = rots[1]; pepRot3 = rots[2]; phi1 = pp[0]; psi1 = pp[1]; phi4 = pp[2]; psi4 = pp[3]; badTau = bt; } public String toString() { return res1.getName().toLowerCase().trim()+res1.getSequenceInteger()+"-"+ res4.getName().toLowerCase().trim()+res4.getSequenceInteger(); } } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { if(filename == null) { if(useIdealHelix) { if(verbose) System.err.println("Using ideal helix"); } else { System.err.println("Using ideal helix (no input file provided)"); useIdealHelix = true; } } if(filename != null && !Double.isNaN(phipsiRange)) { System.err.println("Grid of initial phi,psi requires using ideal helix (-alpha)!"); System.exit(0); } if(!Double.isNaN(minEpsilon) && !Double.isNaN(maxEpsilon) && !Double.isNaN(phipsiRange)) { System.err.println("Can't use -epsilon=#,# AND -phipsirange=#, silly goose!"); System.exit(0); } if(resnum == Integer.MAX_VALUE) { System.err.println("Need a residue number! Use -res=i (for i to i+4 shear)"); System.exit(0); } if(phipsiRange > 15) { System.err.println("Init phi,psi range of "+df3.format(phipsiRange)+" too big! Using 15"); phipsiRange = 15; } if(phipsiRange > 0 && outputMode == STRUCTS && !pdbOut) { System.err.println("Warning: Exact kin coords w/ altered init phi/psi are not" +" meaningful w.r.t. original coords!"); } try { PdbReader reader = new PdbReader(); CoordinateFile cf = null; if(filename != null) cf = reader.read(new File(filename)); else cf = reader.read(this.getClass().getResourceAsStream("idealpolyala12-alpha.pdb")); Model m = cf.getFirstModel(); processModel(m); } catch(IOException ioe) { System.err.println("Trouble parsing file!"); } } public static void main(String[] args) { ShearPioneer mainprog = new ShearPioneer(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("ShearPioneer.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'ShearPioneer.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.ShearPioneer"); System.err.println("Copyright (C) 2010 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if(filename == null) filename = arg; else throw new IllegalArgumentException("Only need 1 file!"); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-verbose") || flag.equals("-v")) { verbose = true; } else if(flag.equals("-structs") || flag.equals("-struct")) { outputMode = STRUCTS; } else if(flag.equals("-res")) { try { resnum = Integer.parseInt(param); } catch(NumberFormatException nfe) { System.err.println("Can't format "+param+" as an integer for resnum!"); } } else if(flag.equals("-theta")) { try { maxTheta = Double.parseDouble(param); } catch(NumberFormatException nfe) { System.err.println("Can't format "+param+" as a double for maxTheta!"); } } else if(flag.equals("-epsilon") || flag.equals("-e")) { try { String[] parts = Strings.explode(param, ','); if(parts.length > 2) { System.err.println("Sorry, should be -epsilon=# or -epsilon=#,#"); } else if(parts.length == 2) { minEpsilon = Double.parseDouble(parts[0]); maxEpsilon = Double.parseDouble(parts[1]); } else { epsilon = Double.parseDouble(param); } } catch(NumberFormatException nfe) { System.err.println("Can't format "+param+" as (a) double(s) for epsilon!"); } } else if(flag.equals("-maxtaudev")) { try { maxTauDev = Double.parseDouble(param); } catch(NumberFormatException nfe) { System.err.println("Can't format "+param+" as a double for maxTauDev!"); } } else if(flag.equals("-phipsirange") || flag.equals("-initrange")) { try { phipsiRange = Double.parseDouble(param); } catch(NumberFormatException nfe) { System.err.println("Can't format "+param+" as doubles for phipsiRange!"); } } else if(flag.equals("-alpha")) { useIdealHelix = true; } else if(flag.equals("-pdbout")) { pdbOut = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/BackboneMoveFinder.java0000644000000000000000000005563211571452342024234 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * BackboneMoveFinder makes some measurements on a whole bunch of MODELs * in hopes of finding places that move like a backrub, shear, peptide flip, or smear. * * This variant works on pairs of models, doing local superpositions and then * calculating an RMSD (is there a stable "base" structure?) and an angle of * rotation for the move type in question. * * It's based on Ian's BackrubFinder2 class. * *

Copyright (C) 2011 by Daniel A. Keedy. All rights reserved. *
Begun on Thu Jan 13 2011 */ public class BackboneMoveFinder //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("0.0##"); static final String BACKRUB = "Backrubs"; static final String SHEAR = "Shears"; static final String PEPFLIP = "Peptide flips"; static final String SMEAR = "Diagonal smears"; //}}} //{{{ Variable definitions //############################################################################## double rmsdLimit = 0.10; // Angstroms double backrubAngleLimit = 10.0; // degrees double shearAngleLimit = 5.0; // degrees double shearDistanceLimit = 0.30; // Angstroms (0.33A <- 5deg shear in ideal helix) String moveType = BACKRUB; boolean pairwise = true; //}}} //{{{ Constructor(s) //############################################################################## public BackboneMoveFinder() { super(); } //}}} //{{{ getCalphas //############################################################################## AtomState[][] getCalphas(Collection models) { AtomState[][] calphas = new AtomState[models.size()][0]; int i = 0; for(Iterator mi = models.iterator(); mi.hasNext(); i++) { Model m = (Model) mi.next(); ModelState state = m.getState(); ArrayList cas = new ArrayList(); for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); Atom a = r.getAtom(" CA "); if(a == null) continue; try { cas.add( state.get(a) ); } catch(AtomException ex) { ex.printStackTrace(); } } calphas[i] = (AtomState[]) cas.toArray(calphas[i]); } return calphas; } //}}} //{{{ getCbetas //############################################################################## AtomState[][] getCbetas(Collection models) { AtomState[][] cbetas = new AtomState[models.size()][0]; int i = 0; for(Iterator mi = models.iterator(); mi.hasNext(); i++) { Model m = (Model) mi.next(); ModelState state = m.getState(); ArrayList cbs = new ArrayList(); for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); Atom a = r.getAtom(" CB "); if(a == null) a = r.getAtom("2HA "); if(a == null) continue; try { cbs.add( state.get(a) ); } catch(AtomException ex) { ex.printStackTrace(); } } cbetas[i] = (AtomState[]) cbs.toArray(cbetas[i]); } return cbetas; } //}}} //{{{ getOxygens //############################################################################## AtomState[][] getOxygens(Collection models) { AtomState[][] oxygens = new AtomState[models.size()][0]; int i = 0; for(Iterator mi = models.iterator(); mi.hasNext(); i++) { Model m = (Model) mi.next(); ModelState state = m.getState(); ArrayList os = new ArrayList(); for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); Atom a = r.getAtom(" O "); if(a == null) continue; try { os.add( state.get(a) ); } catch(AtomException ex) { ex.printStackTrace(); } } oxygens[i] = (AtomState[]) os.toArray(oxygens[i]); } return oxygens; } //}}} //{{{ printBackrubPairs //############################################################################## /** * Does pairwise analysis of backrubs for all models vs. all models at each window. */ void printBackrubPairs(PrintStream out, AtomState[][] cas) { out.println("residue,ref_model,mobile_model,Ca_rmsd(1245),backrub_angle"); int numModels = cas.length; if(numModels == 0) return; for(int k = 2; k < cas[0].length - 2; k++) { for(int i = 0; i < numModels; i++) { for(int j = i+1; j < numModels; j++) { // Reference, Mobile, Weights; don't use center Ca Triple[] r = {new Triple(cas[i][k-2]), new Triple(cas[i][k-1]), new Triple(cas[i][k+1]), new Triple(cas[i][k+2])}; Triple[] m = {new Triple(cas[j][k-2]), new Triple(cas[j][k-1]), new Triple(cas[j][k+1]), new Triple(cas[j][k+2])}; SuperPoser p = new SuperPoser(r, m); Transform T = p.superpos(); double rmsd = p.calcRMSD(T); for(int n = 0; n < m.length; n++) T.transform(m[n]); Triple ca2 = new Triple().likeMidpoint(r[1], m[1]); Triple ca3r = cas[i][k], ca3m = new Triple(cas[j][k]); T.transform(ca3m); Triple ca4 = new Triple().likeMidpoint(r[2], m[2]); double backrubAngle = Triple.dihedral(ca3r, ca2, ca4, ca3m); if(rmsd <= rmsdLimit && Math.abs(backrubAngle) >= backrubAngleLimit) out.println(cas[i][k].getResidue()+","+(i+1)+","+(j+1)+","+df.format(rmsd)+","+df.format(backrubAngle)); } } }//per window } //}}} //{{{ printShearPairs //############################################################################## /** * Does pairwise analysis of shears for all models vs. all models at each window. */ void printShearPairs(PrintStream out, AtomState[][] cas, AtomState[][] os) { //out.println("residue,ref_model,mobile_model,Ca_rmsd(1256),shear_angle(3243p),shear_angle(4354p),shear_angle_sum"); out.println("residue,ref_model,mobile_model,Ca_rmsd(1256),shear_angle(O3Ca3Ca4O3p),O3_dist"); int numModels = cas.length; if(numModels == 0) return; for(int k = 2; k < cas[0].length - 3; k++) { for(int i = 0; i < numModels; i++) { for(int j = i+1; j < numModels; j++) { // Intuitive numbering: 1 2 3 4 5 6 // k-relative numbering: k-2 k-1 k k+1 k+2 k+3 // Don't use center 2 C-alphas: ^ ^ Triple[] r = {new Triple(cas[i][k-2]), new Triple(cas[i][k-1]), new Triple(cas[i][k+2]), new Triple(cas[i][k+3])}; Triple[] m = {new Triple(cas[j][k-2]), new Triple(cas[j][k-1]), new Triple(cas[j][k+2]), new Triple(cas[j][k+3])}; SuperPoser p = new SuperPoser(r, m); Transform T = p.superpos(); double rmsd = p.calcRMSD(T); for(int n = 0; n < m.length; n++) T.transform(m[n]); /* // Look at 3243' & 4354', i.e. dihedrals to direct neighbors // Abs(sum) should be substantial if both shear angles are in same direction Triple ca2 = new Triple().likeMidpoint(r[1], m[1]); Triple ca3r = cas[i][k], ca3m = new Triple(cas[j][k]); T.transform(ca3m); Triple ca4r = cas[i][k+1], ca4m = new Triple(cas[j][k+1]); T.transform(ca4m); Triple ca5 = new Triple().likeMidpoint(r[3], m[3]); double shearAngle3243p = Triple.dihedral(ca3r, ca2, ca4r, ca3m); double shearAngle4354p = Triple.dihedral(ca4r, ca3r, ca5, ca4m); double shearAngleSum = shearAngle3243p + shearAngle4354p; */ Triple ca3r = cas[i][k]; Triple ca4r = cas[i][k+1]; Triple o3r = os[i][k], o3m = new Triple(os[j][k]); T.transform(o3m); double shearAngle = Triple.dihedral(o3r, ca3r, ca4r, o3m); double shearDistance = Triple.distance(o3r, o3m); if(rmsd <= rmsdLimit && Math.abs(shearAngle) < shearAngleLimit && shearDistance > shearDistanceLimit) out.println(cas[i][k].getResidue()+","+(i+1)+","+(j+1)+","+df.format(rmsd)+","+ df.format(shearAngle)+","+df.format(shearDistance)); } } } } //}}} //{{{ printPepFlipPairs [not yet implemented] //############################################################################## /** * Does pairwise analysis of peptide flips for all models vs. all models at each window. */ void printPepFlipPairs(PrintStream out, AtomState[][] cas) { System.err.println("NOT YET IMPLEMENTED"); System.exit(0); } //}}} //{{{ printSmearPairs [not yet implemented] //############################################################################## /** * Does pairwise analysis of diagonal smears for all models vs. all models at each window. */ void printSmearPairs(PrintStream out, AtomState[][] cas) { System.err.println("NOT YET IMPLEMENTED"); System.exit(0); } //}}} //{{{ printBackrubStats //############################################################################## /** * Does statistical analysis of backrubs across the set of models at each window. */ void printBackrubStats(PrintStream out, AtomState[][] cas) { //out.println("Residue,dist13,sd,dist24,sd,dist35,sd,dist14,sd,dist25,sd,dist15,sd,theta124,sd,theta245,sd,phi1245,len,sd"); out.println("Residue,dist24,sd,theta124,sd,theta245,sd,phi1245,len,sd,phi1243,len,sd,phi3245,len,sd"); int numModels = cas.length; if(numModels == 0) return; int numRes = cas[0].length; if(numRes == 0) return; double[] dist13 = new double[numModels]; double[] dist24 = new double[numModels]; double[] dist35 = new double[numModels]; double[] dist14 = new double[numModels]; double[] dist25 = new double[numModels]; double[] dist15 = new double[numModels]; double[] theta124 = new double[numModels]; double[] theta245 = new double[numModels]; double[] phi1245 = new double[numModels]; double[] phi1243 = new double[numModels]; double[] phi3245 = new double[numModels]; for(int i = 2; i < numRes - 2; i++) { for(int j = 0; j < numModels; j++) { AtomState c1 = cas[j][i-2]; AtomState c2 = cas[j][i-1]; AtomState c3 = cas[j][i ]; AtomState c4 = cas[j][i+1]; AtomState c5 = cas[j][i+2]; dist13[j] = c1.distance(c3); dist24[j] = c2.distance(c4); dist35[j] = c3.distance(c5); dist14[j] = c1.distance(c4); dist25[j] = c2.distance(c5); dist15[j] = c1.distance(c5); theta124[j] = Triple.angle(c1, c2, c4); theta245[j] = Triple.angle(c2, c4, c5); phi1245[j] = Triple.dihedral(c1, c2, c4, c5); phi1243[j] = Triple.dihedral(c1, c2, c4, c3); phi3245[j] = Triple.dihedral(c3, c2, c4, c5); } out.print("\""+cas[0][i].getResidue()); //out.print("\",\""+df.format(mean(dist13))+"\",\""+df.format(stddev(dist13))); out.print("\",\""+df.format(mean(dist24))+"\",\""+df.format(stddev(dist24))); //out.print("\",\""+df.format(mean(dist35))+"\",\""+df.format(stddev(dist35))); //out.print("\",\""+df.format(mean(dist14))+"\",\""+df.format(stddev(dist14))); //out.print("\",\""+df.format(mean(dist25))+"\",\""+df.format(stddev(dist25))); //out.print("\",\""+df.format(mean(dist15))+"\",\""+df.format(stddev(dist15))); out.print("\",\""+df.format(mean(theta124))+"\",\""+df.format(stddev(theta124))); out.print("\",\""+df.format(mean(theta245))+"\",\""+df.format(stddev(theta245))); out.print("\",\""+df.format(circ_mean(phi1245))+"\",\""+df.format(circ_len(phi1245))+"\",\""+df.format(circ_stddev(phi1245))); out.print("\",\""+df.format(circ_mean(phi1243))+"\",\""+df.format(circ_len(phi1243))+"\",\""+df.format(circ_stddev(phi1243))); out.print("\",\""+df.format(circ_mean(phi3245))+"\",\""+df.format(circ_len(phi3245))+"\",\""+df.format(circ_stddev(phi3245))); out.println("\""); } } //}}} //{{{ printShearStats [not yet implemented] //############################################################################## /** * Does statistical analysis of shears across the set of models at each window. */ void printShearStats(PrintStream out, AtomState[][] cas, AtomState[][] os) { System.err.println("NOT YET IMPLEMENTED"); System.exit(0); } //}}} //{{{ printPepFlipStats [not yet implemented] //############################################################################## /** * Does statistical analysis of peptide flips across the set of models at each window. */ void printPepFlipStats(PrintStream out, AtomState[][] cas) { System.err.println("NOT YET IMPLEMENTED"); System.exit(0); } //}}} //{{{ printSmearStats [not yet implemented] //############################################################################## /** * Does statistical analysis of diagonal smears across the set of models at each window. */ void printSmearStats(PrintStream out, AtomState[][] cas) { System.err.println("NOT YET IMPLEMENTED"); System.exit(0); } //}}} //{{{ mean, stddev //############################################################################## double mean(double[] x) { double sum = 0; for(int i = 0; i < x.length; i++) sum += x[i]; return sum / x.length; } double stddev(double[] x) { double mean = mean(x); double sum2 = 0; for(int i = 0; i < x.length; i++) { double dev = mean - x[i]; sum2 += dev*dev; } return Math.sqrt(sum2 / x.length); } //}}} //{{{ circ_mean, circ_len, circ_stddev //############################################################################## /** Given an array of angles (in degrees), computes the ANGLE of the vector average (in degrees). */ double circ_mean(double[] t) { double sx = 0, sy = 0; for(int i = 0; i < t.length; i++) { sx += Math.cos( Math.toRadians(t[i]) ); sy += Math.sin( Math.toRadians(t[i]) ); } return Math.toDegrees( Math.atan2(sy/t.length, sx/t.length) ); } /** Given an array of angles (in degrees), computes the LENGTH of the vector average (0.0 - 1.0). */ double circ_len(double[] t) { double sx = 0, sy = 0; for(int i = 0; i < t.length; i++) { sx += Math.cos( Math.toRadians(t[i]) ); sy += Math.sin( Math.toRadians(t[i]) ); } sx /= t.length; sy /= t.length; return Math.sqrt(sx*sx + sy*sy); } /** Given an array of angles (in degrees), computes the angular standard deviation (in degrees). */ double circ_stddev(double[] t) { double mean = circ_mean(t); double a, sa = 0; for(int i = 0; i < t.length; i++) { a = Math.abs(mean - t[i]) % 360.0; if(a > 180.0) a = 360.0 - a; sa += a*a; } return Math.sqrt(sa / t.length); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { System.err.println("Friendly reminder: Be sure you used \"command < file.pdb\" for input!"); System.err.println("Mode: "+moveType+" "+(pairwise ? "(all-against-all pairwise model comparisons)" : "(full-ensemble per-residue stats)")); PdbReader pdbReader = new PdbReader(); CoordinateFile cfile = pdbReader.read(System.in); AtomState[][] cas = getCalphas(cfile.getModels()); if(moveType == BACKRUB) { if(pairwise) printBackrubPairs(System.out, cas); else printBackrubStats(System.out, cas); } else if(moveType == SHEAR) { AtomState[][] os = getOxygens(cfile.getModels()); if(pairwise) printShearPairs(System.out, cas, os); else printShearStats(System.out, cas, os); } else if(moveType == PEPFLIP) { if(pairwise) printPepFlipPairs(System.out, cas); else printPepFlipStats(System.out, cas); } else if(moveType == SMEAR) { if(pairwise) printSmearPairs(System.out, cas); else printSmearStats(System.out, cas); } } public static void main(String[] args) { BackboneMoveFinder mainprog = new BackboneMoveFinder(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("BackboneMoveFinder.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'BackboneMoveFinder.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.BackboneMoveFinder"); System.err.println("Copyright (C) 2011 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-backrub") || flag.equals("-backrubs")) { moveType = BACKRUB; } else if(flag.equals("-shear") || flag.equals("-shears")) { moveType = SHEAR; } else if(flag.equals("-flip") || flag.equals("-flips")) { moveType = PEPFLIP; } else if(flag.equals("-smear") || flag.equals("-smears")) { moveType = SMEAR; } else if(flag.equals("-pairs")) { pairwise = true; } else if(flag.equals("-stats")) { pairwise = false; } else if(flag.equals("-rmsd")) { rmsdLimit = Double.parseDouble(param); } else if(flag.equals("-backrubangle")) { backrubAngleLimit = Double.parseDouble(param); } else if(flag.equals("-shearangle")) { shearAngleLimit = Double.parseDouble(param); } else if(flag.equals("-sheardistance") || flag.equals("-sheardist")) { shearDistanceLimit = Double.parseDouble(param); } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/TurnFinder.java0000644000000000000000000003014211531212724022610 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * TurnFinder finds tight turns or pseudo-turns in a PDB file * and prints simple information about them. * *

Copyright (C) 2010 by Daniel Keedy. All rights reserved. *
Begun on Tue Aug 10 2010 */ public class TurnFinder //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("0.0##"); //}}} //{{{ Variable definitions //############################################################################## ArrayList inputList = new ArrayList(); boolean pseudo = false; //}}} //{{{ Constructor(s) //############################################################################## public TurnFinder() { super(); } //}}} //{{{ findTightTurns //############################################################################## /** * Finds and stores tight turns, defined as in {@link TightTurn}. */ public Collection findTightTurns(Model model, ModelState state) { Collection turns = new ArrayList(); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { // Make sure all four residues are present Residue r0 = (Residue) iter.next(); if(r0 == null) continue; Residue r1 = r0.getNext(model); if(r1 == null) continue; Residue r2 = r1.getNext(model); if(r2 == null) continue; Residue r3 = r2.getNext(model); if(r3 == null) continue; try { Turn turn = new TightTurn(model, state, r0, r1, r2, r3); if(turn.hbEnergy0to3 < -0.5 && turn.hbEnergy0to4 >= -0.5 && Math.abs(turn.dihedral) < 60) { // NB: If an H-bond from 1 to 4 exists, that's // basically a helix N-cap, not a beta turn! turns.add(turn); System.err.println("Added "+turn); } else turn = null; // to avoid memory leak (?) } catch(AtomException ex) {} // missing atoms, or no H-bond catch(ResidueException ex) {} } return turns; } //}}} //{{{ findPseudoTurns //############################################################################## /** * Finds and stores pseudo-turns, defined as in {@link PseudoTurn}. */ public Collection findPseudoTurns(Model model, ModelState state) { Collection turns = new ArrayList(); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { // Make sure all three residues are present Residue r1 = (Residue) iter.next(); if(r1 == null) continue; Residue r2 = r1.getNext(model); if(r2 == null) continue; Residue r3 = r2.getNext(model); if(r3 == null) continue; if(!r1.getName().equals("ASN") && !r1.getName().equals("ASP")) continue; try { Turn turn = new PseudoTurn(model, state, r1, r2, r3); if(turn.hbEnergy0to3 < -0.5 && turn.hbEnergy0to4 >= -0.5 && Math.abs(turn.dihedral) < 60) { // NB: If an H-bond from 1 to 4 exists, that's // basically a helix N-cap, not a beta turn! turns.add(turn); System.err.println("Added "+turn); } else turn = null; // to avoid memory leak (?) } catch(AtomException ex) {} // missing atoms, or no H-bond catch(ResidueException ex) {} } return turns; } //}}} //{{{ printTightTurns //############################################################################## public void printTightTurns(Collection turns, Model model, ModelState state, String fileName) { System.err.println("Found "+turns.size()+" tight turns in "+fileName); for(Iterator ti = turns.iterator(); ti.hasNext(); ) { TightTurn t = (TightTurn) ti.next(); System.out.println( fileName+":"+ t.r0.getChain()+":"+t.r0.getSequenceNumber().trim()+":"+t.r0.getInsertionCode()+":"+t.r0.getName()+":"+ t.r1.getChain()+":"+t.r1.getSequenceNumber().trim()+":"+t.r1.getInsertionCode()+":"+t.r1.getName()+":"+ t.r2.getChain()+":"+t.r2.getSequenceNumber().trim()+":"+t.r2.getInsertionCode()+":"+t.r2.getName()+":"+ t.r3.getChain()+":"+t.r3.getSequenceNumber().trim()+":"+t.r3.getInsertionCode()+":"+t.r3.getName()+":"+ AminoAcid.isCisPeptide(model, t.r0, state)+":"+ AminoAcid.isCisPeptide(model, t.r1, state)+":"+ AminoAcid.isCisPeptide(model, t.r2, state)+":"+ AminoAcid.isCisPeptide(model, t.r3, state)+":"+ t.type+":"+ df.format(t.hbEnergy0to3)+":"+ df.format(t.hbEnergy0to4)+":"+ df.format(t.dihedral)+":"+ df.format(t.phi0)+":"+ df.format(t.psi0)+":"+ df.format(t.phi1)+":"+ df.format(t.psi1)+":"+ df.format(t.phi2)+":"+ df.format(t.psi2)+":"+ df.format(t.phi3)+":"+ df.format(t.psi3)+":"+ df.format(t.highB) ); } } //}}} //{{{ printPseudoTurns //############################################################################## public void printPseudoTurns(Collection turns, Model model, ModelState state, String fileName) { System.err.println("Found "+turns.size()+" pseudo-turns in "+fileName); for(Iterator ti = turns.iterator(); ti.hasNext(); ) { PseudoTurn t = (PseudoTurn) ti.next(); System.out.println( fileName+":"+ t.r1.getChain()+":"+t.r1.getSequenceNumber().trim()+":"+t.r1.getInsertionCode()+":"+t.r1.getName()+":"+ t.r2.getChain()+":"+t.r2.getSequenceNumber().trim()+":"+t.r2.getInsertionCode()+":"+t.r2.getName()+":"+ t.r3.getChain()+":"+t.r3.getSequenceNumber().trim()+":"+t.r3.getInsertionCode()+":"+t.r3.getName()+":"+ AminoAcid.isCisPeptide(model, t.r1, state)+":"+ AminoAcid.isCisPeptide(model, t.r2, state)+":"+ AminoAcid.isCisPeptide(model, t.r3, state)+":"+ t.type+":"+ df.format(t.hbEnergy0to3)+":"+ df.format(t.hbEnergy0to4)+":"+ df.format(t.dihedral)+":"+ df.format(t.phi1)+":"+ df.format(t.psi1)+":"+ df.format(t.phi2)+":"+ df.format(t.psi2)+":"+ df.format(t.phi3)+":"+ df.format(t.psi3)+":"+ df.format(t.highB) ); } } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { PdbReader reader = new PdbReader(); for(Iterator iter = inputList.iterator(); iter.hasNext(); ) { String fileName = (String) iter.next(); try { CoordinateFile cf = reader.read(new File(fileName)); Model model = cf.getFirstModel(); ModelState state = model.getState(); if(pseudo) // pseudo-turns (sc/mc-swapped) { Collection turns = findPseudoTurns(model, state); printPseudoTurns(turns, model, state, fileName); } else // regular tight turns { Collection turns = findTightTurns(model, state); printTightTurns(turns, model, state, fileName); } } catch(IOException ex) { ex.printStackTrace(); System.err.println("Error reading "+fileName); } } } public static void main(String[] args) { TurnFinder mainprog = new TurnFinder(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("TurnFinder.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'TurnFinder.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.TurnFinder"); System.err.println("Copyright (C) 2010 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here inputList.add(arg); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-pseudo")) { pseudo = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/ShearFit.java0000644000000000000000000004154311744305700022247 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import chiropraxis.rotarama.*; //}}} /** * ShearFit applies shear moves and Backrub-like hinges to minize * Ca-RMSD between two four-residue segments, e.g. alternate conformations, * preferably at least somewhat helical. * *

Copyright (C) 2010 by Daniel A. Keedy. All rights reserved. *
Begun on Tue Sep 21 2010 */ public class ShearFit //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("0.000"); DecimalFormat df2 = new DecimalFormat("0.0"); //}}} //{{{ Variable definitions //############################################################################## Builder builder; Model model = null; ModelState state1 = null; ModelState state2 = null; ArrayList res = null; AtomState[] atoms1 = null; AtomState[] atoms2 = null; String whichAtoms = "ca+o"; Ramachandran rama = null; TauByPhiPsi tauscorer = null; double bestShear = 0; double bestBackrub1 = 0; double bestBackrub2 = 0; double bestPepRot1 = 0; double bestPepRot2 = 0; double bestPepRot3 = 0; boolean idealizeSC = false; boolean verbose = false; String delim = ","; //}}} //{{{ Constructor(s) //############################################################################## public ShearFit() { super(); builder = new Builder(); // force loading of data tables that will be used later try { rama = Ramachandran.getInstance(); } catch(IOException ex) {} try { tauscorer = TauByPhiPsi.getInstance(); } catch(IOException ex) {} } //}}} //{{{ initData //############################################################################## void initData(Model m, Residue r1, Residue r2, Residue r3, Residue r4, String alt1, String alt2, String wa, boolean v, String d) { verbose = v; delim = d; // Prep alt conf states model = m; state1 = (ModelState) model.getStates().get(alt1); state2 = (ModelState) model.getStates().get(alt2); res = new ArrayList(); res.add(r1); res.add(r2); res.add(r3); res.add(r4); // Make arrays of atoms for RMSD calculations (default: C-alphas + 3 central C=O oxygens) whichAtoms = wa; atoms1 = loadAtomStates(state1, new Residue[] {r1, r2, r3, r4}); // will be overwritten atoms2 = loadAtomStates(state2, new Residue[] {r1, r2, r3, r4}); if(atoms1.length != atoms2.length) throw new IllegalArgumentException("Selections must have same number of atoms"); } //}}} //{{{ loadAtomStates //############################################################################## AtomState[] loadAtomStates(ModelState state, Residue[] residues) { if(state == null) throw new IllegalArgumentException("Must supply ModelState"); if(!whichAtoms.equals("ca") && !whichAtoms.equals("ca+o")) throw new IllegalArgumentException("Unrecognized atom selection: "+whichAtoms); // Identify atoms ArrayList atoms = new ArrayList(); for(int i = 0; i < residues.length; i++) { Residue r = residues[i]; atoms.add(r.getAtom(" CA ")); /*if(whichAtoms.equals("ca+o") && (i == 1 || i == 2)) atoms.add(r.getAtom(" O ")); // add central 2 C=O oxygens*/ if(whichAtoms.equals("ca+o") && (i == 0 || i == 1 || i == 2)) atoms.add(r.getAtom(" O ")); // add central 3 C=O oxygens } // Extract their states ArrayList states = new ArrayList(); for(int i = 0; i < atoms.size(); i++) { try { Atom a = (Atom) atoms.get(i); if(a != null) states.add(state.get(a)); } catch(AtomException ex) { ex.printStackTrace(); } // should never happen } // Make them into an array AtomState[] ret = (AtomState[])states.toArray(new AtomState[states.size()]); return ret; } //}}} //{{{ interrelateAltConfs //############################################################################## /** * Tries a shear then backrubs then peptide rotations * one or more times successively in order to * relate the two ModelStates stored in this class * at the four residues stored in this class. */ ModelState interrelateAltConfs(int numTrials, double maxTheta) { ModelState bestState = null; if(verbose) System.err.print("Original "); double origRmsd = calcRmsd(atoms1, atoms2); if(verbose) System.err.println(df.format(origRmsd)+" 0 0,0 0,0,0"); else System.out.print(delim+df.format(origRmsd)); if(verbose) System.err.print("Brub+Peps "); bestState = runTrials(numTrials, maxTheta, false, true, true); if(verbose) System.err.print("Shear+Peps "); bestState = runTrials(numTrials, maxTheta, true, false, true); if(verbose) System.err.print("Shear+Brub "); bestState = runTrials(numTrials, maxTheta, true, true, false); if(verbose) System.err.print("Shear+Brub+Peps "); bestState = runTrials(numTrials, maxTheta, true, true, true); if(verbose) System.err.println(); return bestState; } //}}} //{{{ runTrials //############################################################################## ModelState runTrials(int numTrials, double maxTheta, boolean doShear, boolean doBackrubs, boolean doPepRots) { // Reset stats ModelState bestState = null; double bestRmsd = Double.POSITIVE_INFINITY; bestShear = 0; bestBackrub1 = 0; bestBackrub2 = 0; bestPepRot1 = 0; bestPepRot2 = 0; bestPepRot3 = 0; // Start trials ModelState trialState = state1.createCollapsed(); // only 1st trial -- changed after that for(int i = 0; i < numTrials; i++) { if(doShear) { trialState = findBestShear(trialState, maxTheta); } if(doBackrubs) { trialState = findBestBackrub(trialState, maxTheta, "first"); trialState = findBestBackrub(trialState, maxTheta, "second"); } if(doPepRots) { trialState = findBestPeptideRotation(trialState, maxTheta, "first"); trialState = findBestPeptideRotation(trialState, maxTheta, "second"); trialState = findBestPeptideRotation(trialState, maxTheta, "third"); } atoms1 = loadAtomStates(trialState, (Residue[]) res.toArray(new Residue[res.size()])); double rmsd = calcRmsd(atoms1, atoms2); if(bestState == null || rmsd < bestRmsd) { bestState = trialState; bestRmsd = rmsd; } } // Report results if(verbose) System.err.println( df.format(bestRmsd)+" "+ df2.format(bestShear)+" "+ df2.format(bestBackrub1)+delim+df2.format(bestBackrub2)+" "+ df2.format(bestPepRot1)+delim+df2.format(bestPepRot2)+delim+df2.format(bestPepRot3)); //else System.out.print(delim+ // df.format(bestRmsd)+delim+ // df.format(bestShear)+delim+ // df.format(bestBackrub1)+delim+df.format(bestBackrub2)+delim+ // df.format(bestPepRot1)+delim+df.format(bestPepRot2)+delim+df.format(bestPepRot3)); else System.out.print(delim+df.format(bestRmsd)); return bestState; } //}}} //{{{ findBestShear //############################################################################## /** * Finds best shear in terms of C-alpha + C=O RMSD * that doesn't violate Ramachandran and tau considerations */ ModelState findBestShear(ModelState trialState, double maxTheta) { ModelState bestState = trialState.createCollapsed(); ModelState newState = null; double bestRmsd = Double.POSITIVE_INFINITY; double bestTheta = 0; // addition to global best theta for(double theta = -1 * maxTheta; theta < maxTheta; theta += 0.1) { try { // Do the shear ArrayList residues = res; newState = CaShear.makeConformation(residues, trialState, theta, idealizeSC); // Decide whether to keep atoms1 = loadAtomStates(newState, new Residue[] {res.get(0), res.get(1), res.get(2), res.get(3)}); double rmsd = calcRmsd(atoms1, atoms2); if(geometryIsValid(newState) && rmsd < bestRmsd) { bestRmsd = rmsd; bestTheta = theta; bestState = newState; } } catch(AtomException ex) {} } //if(verbose) System.err.print(" best shear " // +(bestTheta > 0 ? " +" : " ")+df.format(bestTheta)); bestShear += bestTheta; //if(verbose) System.err.println(" -> "+df.format(bestShear)); return bestState; } //}}} //{{{ findBestBackrub //############################################################################## /** * Finds best backrub (singular) in terms of C-alpha + C=O RMSD * that doesn't violate Ramachandran and tau considerations */ ModelState findBestBackrub(ModelState trialState, double maxTheta, String which) { ModelState bestState = trialState.createCollapsed(); ModelState newState = null; double bestRmsd = Double.POSITIVE_INFINITY; double bestTheta = 0; // addition to global best theta for(double theta = -1 * maxTheta; theta < maxTheta; theta += 0.1) { try { // Do the backrub ArrayList residues = new ArrayList(); if(which.equals("first")) // residues 1-2-3 { residues.add(res.get(0)); residues.add(res.get(1)); residues.add(res.get(2)); } else //if(which.equals("second")) // residues 2-3-4 { residues.add(res.get(1)); residues.add(res.get(2)); residues.add(res.get(3)); } newState = CaRotation.makeConformation(residues, trialState, theta, idealizeSC); // Decide whether to keep atoms1 = loadAtomStates(newState, new Residue[] {res.get(0), res.get(1), res.get(2), res.get(3)}); double rmsd = calcRmsd(atoms1, atoms2); if(geometryIsValid(newState) && rmsd < bestRmsd) { bestRmsd = rmsd; bestTheta = theta; bestState = newState; } } catch(AtomException ex) {} } //if(verbose) System.err.print(" best backrub " // +(which.equals("first") ? "(1-3)" : "(2-4)") // +(bestTheta > 0 ? " +" : " ")+df.format(bestTheta)+" -> "); if(which.equals("first")) { bestBackrub1 += bestTheta; //if(verbose) System.err.println(df.format(bestBackrub1)); } else //if(which.equals("second")) { bestBackrub2 += bestTheta; //if(verbose) System.err.println(df.format(bestBackrub2)); } return bestState; } //}}} //{{{ findBestPeptideRotation //############################################################################## /** * Finds best peptide rotation in terms of C-alpha + C=O RMSD * that doesn't violate Ramachandran and tau considerations */ ModelState findBestPeptideRotation(ModelState trialState, double maxTheta, String which) { ModelState bestState = trialState.createCollapsed(); ModelState newState = null; double bestRmsd /*bestDist*/ = Double.POSITIVE_INFINITY; double bestTheta = 0; // addition to global best theta for(double theta = -1 * maxTheta; theta < maxTheta; theta += 0.1) { try { // Do the peptide rotation Atom o = null; Residue[] residues = new Residue[2]; if(which.equals("first")) // residues 1-2 { residues[0] = res.get(0); residues[1] = res.get(1); o = res.get(0).getAtom(" O "); } else if(which.equals("second")) // residues 2-3 { residues[0] = res.get(1); residues[1] = res.get(2); o = res.get(1).getAtom(" O "); } else //if(which.equals("third")) // residues 3-4 { residues[0] = res.get(2); residues[1] = res.get(3); o = res.get(2).getAtom(" O "); } double[] thetas = new double[] {theta}; boolean[] idealizeSCs = new boolean[] {idealizeSC, idealizeSC}; newState = CaRotation.twistPeptides(residues, trialState, thetas, idealizeSCs); // Decide whether to keep /*AtomState o1 = newState.get(o); AtomState o2 = state2.get(o); double dist = o1.distance(o2); if(geometryIsValid(newState) && dist < bestDist)*/ atoms1 = loadAtomStates(newState, new Residue[] {res.get(0), res.get(1), res.get(2), res.get(3)}); double rmsd = calcRmsd(atoms1, atoms2); if(geometryIsValid(newState) && rmsd < bestRmsd) { /*bestDist = dist;*/ bestRmsd = rmsd; bestTheta = theta; bestState = newState; } } catch(AtomException ex) {} } //if(verbose) System.err.print(" best pep rot " // +(which.equals("first") ? "(1-2)" : (which.equals("second") ? "(2-3)" : "(3-4)")) // +(bestTheta > 0 ? " +" : " ")+df.format(bestTheta)+" -> "); if(which.equals("first")) { bestPepRot1 += bestTheta; //if(verbose) System.err.println(df.format(bestPepRot1)); } else if(which.equals("second")) { bestPepRot2 += bestTheta; //if(verbose) System.err.println(df.format(bestPepRot2)); } else //if(which.equals("third")) { bestPepRot3 += bestTheta; //if(verbose) System.err.println(df.format(bestPepRot3)); } return bestState; } //}}} //{{{ geometryIsValid //############################################################################## /** Checks for Ramachandran or tau problems */ boolean geometryIsValid(ModelState state) { if(rama.isOutlier(model, res.get(0), state) || rama.isOutlier(model, res.get(1), state) || rama.isOutlier(model, res.get(2), state) || rama.isOutlier(model, res.get(3), state)) return false; try { // Allow 5.5 degree tau deviations like in the BRDEE paper, // not just 3.0 like in the BACKRUB tool in KiNG if(Math.abs(AminoAcid.getTauDeviation(res.get(0), state)) >= 5.5 || Math.abs(AminoAcid.getTauDeviation(res.get(1), state)) >= 5.5 || Math.abs(AminoAcid.getTauDeviation(res.get(2), state)) >= 5.5 || Math.abs(AminoAcid.getTauDeviation(res.get(3), state)) >= 5.5) return false; } catch(AtomException ex) { return false; } return true; } //}}} //{{{ calcRmsd //############################################################################## double calcRmsd(Triple[] t1, Triple[] t2) { double r = 0; for(int i = 0; i < t1.length; i++) r += t1[i].sqDistance(t2[i]); r = Math.sqrt(r / t1.length); return r; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/BackrubFinder2.java0000644000000000000000000004064111531212724023320 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * BackrubFinder2 makes some measurements on a whole bunch of MODELs * in hopes of finding places that move in Backrub-like ways. * * This variant works on pairs of models, doing local superpositions and then * calculating an RMSD (is there a stable "base" structure?) and an angle of * rotation for the central C-alpha (the major Backrub angle). * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Mon Dec 5 14:27:25 EST 2005 */ public class BackrubFinder2 //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("0.0##"); //}}} //{{{ Variable definitions //############################################################################## double rmsdLimit = 0.10; // Angstroms double backrubAngleLimit = 10.0; // degrees //}}} //{{{ Constructor(s) //############################################################################## public BackrubFinder2() { super(); } //}}} //{{{ getCalphas //############################################################################## AtomState[][] getCalphas(Collection models) { AtomState[][] calphas = new AtomState[models.size()][0]; int i = 0; for(Iterator mi = models.iterator(); mi.hasNext(); i++) { Model m = (Model) mi.next(); ModelState state = m.getState(); ArrayList cas = new ArrayList(); for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); Atom a = r.getAtom(" CA "); if(a == null) continue; try { cas.add( state.get(a) ); } catch(AtomException ex) { ex.printStackTrace(); } } calphas[i] = (AtomState[]) cas.toArray(calphas[i]); } return calphas; } //}}} //{{{ getCbetas //############################################################################## AtomState[][] getCbetas(Collection models) { AtomState[][] cbetas = new AtomState[models.size()][0]; int i = 0; for(Iterator mi = models.iterator(); mi.hasNext(); i++) { Model m = (Model) mi.next(); ModelState state = m.getState(); ArrayList cbs = new ArrayList(); for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); Atom a = r.getAtom(" CB "); if(a == null) a = r.getAtom("2HA "); if(a == null) continue; try { cbs.add( state.get(a) ); } catch(AtomException ex) { ex.printStackTrace(); } } cbetas[i] = (AtomState[]) cbs.toArray(cbetas[i]); } return cbetas; } //}}} //{{{ printStats //############################################################################## void printStats(PrintStream out, AtomState[][] cas) { //out.println("Residue,dist13,sd,dist24,sd,dist35,sd,dist14,sd,dist25,sd,dist15,sd,theta124,sd,theta245,sd,phi1245,len,sd"); out.println("Residue,dist24,sd,theta124,sd,theta245,sd,phi1245,len,sd,phi1243,len,sd,phi3245,len,sd"); int numModels = cas.length; if(numModels == 0) return; int numRes = cas[0].length; if(numRes == 0) return; double[] dist13 = new double[numModels]; double[] dist24 = new double[numModels]; double[] dist35 = new double[numModels]; double[] dist14 = new double[numModels]; double[] dist25 = new double[numModels]; double[] dist15 = new double[numModels]; double[] theta124 = new double[numModels]; double[] theta245 = new double[numModels]; double[] phi1245 = new double[numModels]; double[] phi1243 = new double[numModels]; double[] phi3245 = new double[numModels]; for(int i = 2; i < numRes - 2; i++) { for(int j = 0; j < numModels; j++) { AtomState c1 = cas[j][i-2]; AtomState c2 = cas[j][i-1]; AtomState c3 = cas[j][i ]; AtomState c4 = cas[j][i+1]; AtomState c5 = cas[j][i+2]; dist13[j] = c1.distance(c3); dist24[j] = c2.distance(c4); dist35[j] = c3.distance(c5); dist14[j] = c1.distance(c4); dist25[j] = c2.distance(c5); dist15[j] = c1.distance(c5); theta124[j] = Triple.angle(c1, c2, c4); theta245[j] = Triple.angle(c2, c4, c5); phi1245[j] = Triple.dihedral(c1, c2, c4, c5); phi1243[j] = Triple.dihedral(c1, c2, c4, c3); phi3245[j] = Triple.dihedral(c3, c2, c4, c5); } out.print("\""+cas[0][i].getResidue()); //out.print("\",\""+df.format(mean(dist13))+"\",\""+df.format(stddev(dist13))); out.print("\",\""+df.format(mean(dist24))+"\",\""+df.format(stddev(dist24))); //out.print("\",\""+df.format(mean(dist35))+"\",\""+df.format(stddev(dist35))); //out.print("\",\""+df.format(mean(dist14))+"\",\""+df.format(stddev(dist14))); //out.print("\",\""+df.format(mean(dist25))+"\",\""+df.format(stddev(dist25))); //out.print("\",\""+df.format(mean(dist15))+"\",\""+df.format(stddev(dist15))); out.print("\",\""+df.format(mean(theta124))+"\",\""+df.format(stddev(theta124))); out.print("\",\""+df.format(mean(theta245))+"\",\""+df.format(stddev(theta245))); out.print("\",\""+df.format(circ_mean(phi1245))+"\",\""+df.format(circ_len(phi1245))+"\",\""+df.format(circ_stddev(phi1245))); out.print("\",\""+df.format(circ_mean(phi1243))+"\",\""+df.format(circ_len(phi1243))+"\",\""+df.format(circ_stddev(phi1243))); out.print("\",\""+df.format(circ_mean(phi3245))+"\",\""+df.format(circ_len(phi3245))+"\",\""+df.format(circ_stddev(phi3245))); out.println("\""); } } //}}} //{{{ printStats2 //############################################################################## void printStats2(PrintStream out, int resIndex, AtomState[][] cas) { out.println("residue,ref_model,mobile_model,Ca_rmsd(1245),backrub_angle"); int numModels = cas.length; if(numModels == 0) return; for(int k = 2; k < cas[0].length - 2; k++) //int k = resIndex; for(int i = 0; i < numModels; i++) for(int j = i+1; j < numModels; j++) { // Reference, Mobile, Weights; don't use center Ca Triple[] r = {new Triple(cas[i][k-2]), new Triple(cas[i][k-1]), new Triple(cas[i][k+1]), new Triple(cas[i][k+2])}; Triple[] m = {new Triple(cas[j][k-2]), new Triple(cas[j][k-1]), new Triple(cas[j][k+1]), new Triple(cas[j][k+2])}; SuperPoser p = new SuperPoser(r, m); Transform T = p.superpos(); double rmsd = p.calcRMSD(T); for(int n = 0; n < m.length; n++) T.transform(m[n]); Triple ca2 = new Triple().likeMidpoint(r[1], m[1]); Triple ca3r = cas[i][k], ca3m = new Triple(cas[j][k]); T.transform(ca3m); Triple ca4 = new Triple().likeMidpoint(r[2], m[2]); double backrubAngle = Triple.dihedral(ca3r, ca2, ca4, ca3m); if(rmsd <= rmsdLimit && Math.abs(backrubAngle) >= backrubAngleLimit) out.println(cas[i][k].getResidue()+","+(i+1)+","+(j+1)+","+df.format(rmsd)+","+df.format(backrubAngle)); } } //}}} //{{{ printStats3 //############################################################################## /** * This version uses both C-alphas and C-betas, but I'm not sure it's any better than just CAs. */ void printStats3(PrintStream out, int resIndex, AtomState[][] cas, AtomState[][] cbs) { out.println("residue,ref_model,mobile_model,CaCb_rmsd(1245),backrub_angle"); int numModels = cas.length; if(numModels == 0) return; for(int k = 2; k < cas[0].length - 2; k++) //int k = resIndex; for(int i = 0; i < numModels; i++) for(int j = i+1; j < numModels; j++) { // Reference, Mobile, Weights; don't use center Ca Triple[] r = {new Triple(cas[i][k-2]), new Triple(cas[i][k-1]), new Triple(cas[i][k+1]), new Triple(cas[i][k+2]), new Triple(cbs[i][k-2]), new Triple(cbs[i][k-1]), new Triple(cbs[i][k+1]), new Triple(cbs[i][k+2])}; Triple[] m = {new Triple(cas[j][k-2]), new Triple(cas[j][k-1]), new Triple(cas[j][k+1]), new Triple(cas[j][k+2]), new Triple(cbs[j][k-2]), new Triple(cbs[j][k-1]), new Triple(cbs[j][k+1]), new Triple(cbs[j][k+2])}; SuperPoser p = new SuperPoser(r, m); Transform T = p.superpos(); double rmsd = p.calcRMSD(T); for(int n = 0; n < m.length; n++) T.transform(m[n]); Triple ca2 = new Triple().likeMidpoint(r[1], m[1]); Triple ca3r = cas[i][k], ca3m = new Triple(cas[j][k]); T.transform(ca3m); Triple ca4 = new Triple().likeMidpoint(r[2], m[2]); double backrubAngle = Triple.dihedral(ca3r, ca2, ca4, ca3m); if(rmsd <= rmsdLimit && Math.abs(backrubAngle) >= backrubAngleLimit) out.println(cas[i][k].getResidue()+","+(i+1)+","+(j+1)+","+df.format(rmsd)+","+df.format(backrubAngle)); } } //}}} //{{{ mean, stddev //############################################################################## double mean(double[] x) { double sum = 0; for(int i = 0; i < x.length; i++) sum += x[i]; return sum / x.length; } double stddev(double[] x) { double mean = mean(x); double sum2 = 0; for(int i = 0; i < x.length; i++) { double dev = mean - x[i]; sum2 += dev*dev; } return Math.sqrt(sum2 / x.length); } //}}} //{{{ circ_mean, circ_len, circ_stddev //############################################################################## /** Given an array of angles (in degrees), computes the ANGLE of the vector average (in degrees). */ double circ_mean(double[] t) { double sx = 0, sy = 0; for(int i = 0; i < t.length; i++) { sx += Math.cos( Math.toRadians(t[i]) ); sy += Math.sin( Math.toRadians(t[i]) ); } return Math.toDegrees( Math.atan2(sy/t.length, sx/t.length) ); } /** Given an array of angles (in degrees), computes the LENGTH of the vector average (0.0 - 1.0). */ double circ_len(double[] t) { double sx = 0, sy = 0; for(int i = 0; i < t.length; i++) { sx += Math.cos( Math.toRadians(t[i]) ); sy += Math.sin( Math.toRadians(t[i]) ); } sx /= t.length; sy /= t.length; return Math.sqrt(sx*sx + sy*sy); } /** Given an array of angles (in degrees), computes the angular standard deviation (in degrees). */ double circ_stddev(double[] t) { double mean = circ_mean(t); double a, sa = 0; for(int i = 0; i < t.length; i++) { a = Math.abs(mean - t[i]) % 360.0; if(a > 180.0) a = 360.0 - a; sa += a*a; } return Math.sqrt(sa / t.length); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { PdbReader pdbReader = new PdbReader(); CoordinateFile cfile = pdbReader.read(System.in); AtomState[][] cas = getCalphas(cfile.getModels()); //AtomState[][] cbs = getCbetas(cfile.getModels()); //printStats(System.out, cas); printStats2(System.out, 61-1, cas); //printStats3(System.out, 61-1, cas, cbs); } public static void main(String[] args) { BackrubFinder2 mainprog = new BackrubFinder2(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("BackrubFinder2.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'BackrubFinder2.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.BackrubFinder2"); System.err.println("Copyright (C) 2005 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-rmsd")) this.rmsdLimit = Double.parseDouble(param); else if(flag.equals("-angle")) this.backrubAngleLimit = Double.parseDouble(param); else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/AlignChains.java0000644000000000000000000002536411531212724022722 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * AlignChains takes several chains in a PDB file and aligns them * each on top of the first. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Tue Oct 25 09:32:27 EDT 2005 */ public class AlignChains //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## String fileName = null; String refChainID = null; Collection mobChainIDs = new ArrayList(); //}}} //{{{ Constructor(s) //############################################################################## public AlignChains() { super(); } //}}} //{{{ optimizeAlignment, extractCAs //############################################################################## /** * Finds the optimal ungapped C-alpha superposition * between two sets of contiguous residues, which may or may not * be of the same length. */ public Transform optimizeAlignment(Collection refChain, Collection mobChain, ModelState state) { AtomState[] ref = extractCAs(refChain, state); AtomState[] mob = extractCAs(mobChain, state); int len = Math.min(ref.length, mob.length); int maxoff = Math.max(ref.length, mob.length) - len; Transform bestR = null; double bestRMSD = Double.POSITIVE_INFINITY; DecimalFormat df = new DecimalFormat("0.000"); for(int i = 0; i <= maxoff; i++) { int ref_i = (ref.length == len ? 0 : i); int mob_i = (mob.length == len ? 0 : i); SuperPoser sp = new SuperPoser(ref, ref_i, mob, mob_i, len); Transform R = sp.superpos(); double rmsd = sp.calcRMSD(R); if(rmsd < bestRMSD) { bestR = R; bestRMSD = rmsd; } } System.err.println("Best Ca RMSD: "+df.format(bestRMSD)); return bestR; } AtomState[] extractCAs(Collection residues, ModelState state) { Collection cas = new ArrayList(); for(Iterator iter = residues.iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); try { cas.add(state.get(r.getAtom(" CA "))); } catch(AtomException ex) {} } return (AtomState[]) cas.toArray(new AtomState[cas.size()]); } //}}} //{{{ extractOrderedStatesByName //############################################################################## /** * Extracts all the uniquely named AtomStates for the given model, in the * order of Residues and Atoms given. */ static public Collection extractOrderedStatesByName(Collection residues, Collection modelStates) { ModelState[] states = (ModelState[]) modelStates.toArray(new ModelState[modelStates.size()]); Set usedNames = new HashSet(); // to avoid duplicates ArrayList atomStates = new ArrayList(); for(Iterator ri = residues.iterator(); ri.hasNext(); ) { Residue res = (Residue)ri.next(); for(Iterator ai = res.getAtoms().iterator(); ai.hasNext(); ) { Atom atom = (Atom)ai.next(); for(int i = 0; i < states.length; i++) { try { AtomState as = states[i].get(atom); // We want to make sure every atom output has a unique PDB name. // We're not worried so much about duplicating coordinates (old code). // Name requirement is important for dealing with alt confs, // where a single atom (' ') may move in A but not B -- // this led to two ATOM entries with different coords but the same name. String aName = as.getAtom().toString()+as.getAltConf(); //if(!usedNames.contains(as)) -- for comparison by XYZ coords if(!usedNames.contains(aName)) { //usedNames.add(as); -- for comparison by XYZ coords usedNames.add(aName); atomStates.add(as); } } catch(AtomException ex) {} // no state } }//for each atom }// for each residue return atomStates; } //}}} //{{{ alignChains //############################################################################## /** Alters coordinates of mobChains to superimpose them on refChain. */ public void alignChains(CoordinateFile coordFile, String refChain, Collection mobChains) { for(Iterator mi = coordFile.getModels().iterator(); mi.hasNext(); ) { Model m = (Model) mi.next(); Collection allAtomStates = extractOrderedStatesByName(m.getResidues(), m.getStates().values()); AtomState[] atomStates = (AtomState[]) allAtomStates.toArray(new AtomState[allAtomStates.size()]); for(Iterator ci = mobChains.iterator(); ci.hasNext(); ) { String mobChain = (String) ci.next(); Collection ref = m.getChain(refChain); Collection mob = m.getChain(mobChain); if(ref == null || mob == null) continue; Transform R = optimizeAlignment(ref, mob, m.getState()); Set mobSet = new CheapSet(mob); for(int i = 0; i< atomStates.length; i++) if(mobSet.contains(atomStates[i].getResidue())) R.transform(atomStates[i]); } } } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { if(fileName == null) throw new IllegalArgumentException("No PDB specified"); if(refChainID == null) throw new IllegalArgumentException("No reference chain"); if(mobChainIDs.size() < 1) throw new IllegalArgumentException("No mobile chain(s)"); CoordinateFile cfile = new PdbReader().read(new File(fileName)); alignChains(cfile, refChainID, mobChainIDs); new PdbWriter(System.out).writeCoordinateFile(cfile, new HashMap()); } public static void main(String[] args) { AlignChains mainprog = new AlignChains(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("AlignChains.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'AlignChains.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.AlignChains"); System.err.println("Copyright (C) 2005 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if(fileName == null) fileName = arg; else if(refChainID == null) refChainID = arg; else mobChainIDs.add(arg); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/CaShear.java0000644000000000000000000002366011744305700022050 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.Strings; import driftwood.util.SoftLog; import chiropraxis.sc.*; //}}} /** * CaShear is like IWD's CaRotation, but it * "shears" atoms between two C-alphas instead of rotating them. * *

Copyright (C) 2010 by Daniel A. Keedy. All rights reserved. *
Begun on Fri Jul 30 2010 */ public class CaShear extends CaRotation { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public CaShear() { super(); } //}}} //{{{ makeConformation //################################################################################################## /** * Rotates a collection of residues (as from * {@link #makeMobileGroup(Model, Residue, Residue)}) * by theta degrees around the axis through the * C-alphas of the terminal residues. * @throws AtomException if either one of the terminal residues * is missing a C-alpha, or if the state is missing a state definition * for any of the mobile atoms. */ public static ModelState makeConformation(Collection residues, ModelState state, double theta1, boolean idealizeSC) throws AtomException { if(residues.size() != 4) throw new AtomException("Need 4 residues for makeConformation(..)!"); // Find first, second, third, and fourth residue in the collection Residue res1 = null, res2 = null, res3 = null, res4 = null; Iterator iter = residues.iterator(); while(iter.hasNext()) { Residue curr = (Residue)iter.next(); if (res1 == null) res1 = curr; else if(res2 == null) res2 = curr; else if(res3 == null) res3 = curr; else if(res4 == null) res4 = curr; } if(res1 == null || res2 == null || res3 == null || res4 == null) throw new AtomException("First, second, third, or fourth residue is missing!"); // Find atoms to rotate around Atom ca1, ca2, ca3, ca4; ca1 = res1.getAtom(" CA "); ca2 = res2.getAtom(" CA "); ca3 = res3.getAtom(" CA "); ca4 = res4.getAtom(" CA "); if(ca1 == null || ca2 == null || ca3 == null || ca4 == null) throw new AtomException("C-alpha is missing from "+res1+", "+res2+", "+res3+", or "+res4); Atom c2, o2; c2 = res2.getAtom(" C "); o2 = res2.getAtom(" O "); if(c2 == null || o2 == null) throw new AtomException("Carbonyl is missing from "+res2); // Split up atoms into three groups, one per peptide Atom[] atoms = getMobileAtoms(residues); ArrayList p1 = new ArrayList(); ArrayList p2 = new ArrayList(); ArrayList p3 = new ArrayList(); for(int i = 0; i < atoms.length; i++) { Atom a = atoms[i]; Residue r = a.getResidue(); if(r.equals(res1)) p1.add(a); else if(r.equals(res2)) { if(a.getName().equals(" C ") || a.getName().equals(" O ")) p2.add(a); else p1.add(a); } else if(r.equals(res3)) { if(a.getName().equals(" N ") || a.getName().equals(" H ")) p2.add(a); else p3.add(a); } else p3.add(a); } Atom[] pep1 = (Atom[]) p1.toArray(new Atom[p1.size()]); Atom[] pep2 = (Atom[]) p2.toArray(new Atom[p2.size()]); Atom[] pep3 = (Atom[]) p3.toArray(new Atom[p3.size()]); // Define first rotation axis, before anything has moved: // first CA -> normal to plane of first, second, and third CAs Triple normal123 = new Triple().likeNormal(state.get(ca1), state.get(ca2), state.get(ca3)); normal123.add(state.get(ca1)); // Do first rotation Transform rot1 = new Transform().likeRotation(state.get(ca1), normal123, theta1); ModelState rv1 = transformAtoms(rot1, pep1, state); // Define second rotation axis, now that (first and) second CAs have moved: // fourth CA -> normal to plane of second, third, and fourth CAs Triple normal234 = new Triple().likeNormal(rv1.get(ca2), rv1.get(ca3), rv1.get(ca4)); normal234.add(rv1.get(ca4)); // Find second rotation that best preserves original distance between second and third CAs // Try up to 1.5x the first rotation in 0.1 degree increments double distOrig = Triple.distance(state.get(ca2), state.get(ca3)); double distBest = Double.POSITIVE_INFINITY; double distDiffBest = Double.POSITIVE_INFINITY; double theta2 = 0; double max = Math.min(Math.abs(theta1), Math.abs(Math.abs(theta1)-360)); //for(double t = -2*max; t < 2*max; t += 0.1) for(double t = -1.5*max; t < 1.5*max; t += 0.1) { // Try a second rotation Transform rot2 = new Transform().likeRotation(rv1.get(ca4), normal234, t); ModelState rv2 = transformAtoms(rot2, pep3, rv1); // See how close second and third CAs are double distCurr = Triple.distance(rv2.get(ca2), rv2.get(ca3)); double distDiff = Math.abs(distCurr - distOrig); if(distDiff < distDiffBest) { distBest = distCurr; distDiffBest = distDiff; theta2 = t; } } // Do best second rotation Transform rot2 = new Transform().likeRotation(rv1.get(ca4), normal234, theta2); ModelState rv2 = transformAtoms(rot2, pep3, rv1); // "Plug in" middle peptide AtomState[] ca23orig = new AtomState[] {state.get(ca2), state.get(ca3)}; AtomState[] ca23movd = new AtomState[] {rv2.get(ca2), rv2.get(ca3)}; SuperPoser poser = new SuperPoser(ca23movd, ca23orig); Transform sup = poser.superpos(); ModelState rv3 = transformAtoms(sup, pep2, rv2); ModelState rv4 = rv3; /*{{{ Aborted manual middle peptide rotation // I thought about manually rotating the middle peptide // to make sure its C=O is as near as possible to its original direction, // but in practice SuperPoser.superpos() seems to do just fine with 2 points. // Middle peptide rotations will probably be tried anyway, // either manually in KiNG or systematically in some automated refit program. Triple origCO = state.get(o2).sub(state.get(c2)); double angleBest = Double.POSITIVE_INFINITY; double theta3 = 0; for(double t = -15.0; t < 15.0; t += 0.1) { // Try a middle peptide rotation Transform rot3 = new Transform().likeRotation(rv3.get(ca2), rv3.get(ca3), t); ModelState rv4 = transformAtoms(rot3, pep2, rv3); // See how close middle C=O direction is to its original direction Triple movdCO = rv4.get(o2).sub(rv4.get(c2)); double angleCurr = origCO.angle(movdCO); if(angleCurr < angleBest) { angleBest = angleCurr; theta3 = t; } } // Do best middle peptide rotation theta3 = Math.round(theta3 * 10) / 10; // so we stay at 0.0 for no shear Transform rot3 = new Transform().likeRotation(rv3.get(ca2), rv3.get(ca3), theta3); ModelState rv4 = transformAtoms(rot3, pep2, rv3); }}}*/ // Fix the sidechains if(idealizeSC && sidechainIdealizer != null) { rv4 = sidechainIdealizer.idealizeSidechain(res1, rv4); rv4 = sidechainIdealizer.idealizeSidechain(res2, rv4); rv4 = sidechainIdealizer.idealizeSidechain(res3, rv4); rv4 = sidechainIdealizer.idealizeSidechain(res4, rv4); } return rv4.createCollapsed(state); } //}}} //{{{ getMobileAtoms //################################################################################################## static Atom[] getMobileAtoms(Collection residues) { ArrayList atoms = new ArrayList(); Iterator iter = residues.iterator(); Residue r = (Residue)iter.next(); // Add the first residue, C and O only for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom)ai.next(); String an = a.getName(); if(an.equals(" C ") || an.equals(" O ")) atoms.add(a); } // Add all atoms for the rest of residues except the last r = (Residue)iter.next(); while(iter.hasNext()) { for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom)ai.next(); atoms.add(a); } r = (Residue)iter.next(); } // Add last residue, N and H only for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom)ai.next(); String an = a.getName(); if(an.equals(" N ") || an.equals(" H ")) atoms.add(a); } return (Atom[])atoms.toArray(new Atom[atoms.size()]); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/Ncap.java0000644000000000000000000001116011531212724021410 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * Ncap is a class evolved from Helix which came from Ian's Peptide. * A Helix object can have an Ncap, which holds information about the residue * type and angles related to possible backrubs. * At the moment, all fields are public and written to directly. * *

Copyright (C) 2007 by Daniel Keedy. All rights reserved. *
Begun on Sun Nov 11, 2007 */ public class Ncap //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## /** Residues in the N-cap and capping box positions for this helix. */ public Residue res, res3; /** Angle between plane of N-cap Ca(i,i-1,i+1) and local helix axis. */ public double planeNormalAngle; /** Angle between N-cap Ca_Cb vector and local helix axis. */ public double caCbAngle; /** Angle between Ca(i-1,i+1,i+2) and Ca(i-1,i,i+1) planes */ public double caPlanesAngle; /** Angle btw Ca(i-1,i+1) & Ca(i+1,i+2) virtual bonds; diff for ST vs. ND? */ public double caEntryAngle; /** Angles btw N3's N_H vector and (1) Ca(i,i+1,i+2) vector and (2) local * helix axis. */ public double n3NH_precCaCaCa, n3NH_axis; /** N-cap i-1,i,i+1 residues' tau angles. May be strained if a backrub * occurs. */ public double nprimeTau, tau, n1Tau; /** N-cap i-1,i,i+1 residues' phi, psi dihedrals. i+/-1 angles may be better * indicators of a backrub b/c they actually cause the change during KiNG's * backrub tool.*/ public double nprimePhi, nprimePsi, phi, psi, n1Phi, n1Psi; /** Distances that may vary between N-cap types (e.g. i+2 vs. i+3) or * indicate where a residue is an N-cap vs. just continuation of a helix. * For the first two, the atoms involved depend on the sc type. */ double distNcapScToN2H, distNcapScToN3H, distNcapCaToN3Ca, distNprimeCaToN3Ca; /** Tells whether N-cap H-bonds to "i+2" or "i+3" NH. Default: "(unknown)" */ public String hbType; /** Residue type of capping box, iff its sc makes an Hbond to i's NH */ String cappingBoxResType; /** Number of chi angles (a measure of sidechain length) for two potentially * important residues for this N-cap. */ int ncapNumChis, n3NumChis; /** Tail position (i.e. beg. of vector) of the normal to the N-cap plane */ public Triple normalTail; /** Head position (i.e. end of vector) of the normal to the N-cap plane */ public Triple normalHead; /** Kabsch & Sander "energies" used in the determination.of Helix.typeAtNcap */ public double hbondEnergy3_10, hbondEnergyAlpha; //}}} //{{{ Constructor(s) //############################################################################## public Ncap(Residue residue) { super(); res = residue; res3 = null; planeNormalAngle = Double.NaN; caCbAngle = Double.NaN; caPlanesAngle = Double.NaN; caEntryAngle = Double.NaN; distNcapScToN2H = Double.NaN; distNcapScToN3H = Double.NaN; distNcapCaToN3Ca = Double.NaN; distNprimeCaToN3Ca = Double.NaN; n3NH_precCaCaCa = Double.NaN; n3NH_axis = Double.NaN; nprimeTau = Double.NaN; tau = Double.NaN; n1Tau = Double.NaN; nprimePhi = Double.NaN; nprimePsi = Double.NaN; phi = Double.NaN; psi = Double.NaN; n1Phi = Double.NaN; n1Psi = Double.NaN; hbType = "(unknown)"; cappingBoxResType = "(none/unknown)"; ncapNumChis = 999; n3NumChis = 999; normalTail = null; normalHead = null; hbondEnergy3_10 = Double.NaN; hbondEnergyAlpha = Double.NaN; } //}}} //{{{ toString //############################################################################## public String toString() { return res.toString();//.getName();//"Ncap "+res; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/SheetBuilder.java0000644000000000000000000017056011531212724023120 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.Strings; //}}} /** * SheetBuilder has not yet been documented. * *

Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
Begun on Tue Mar 30 10:45:56 EST 2004 */ public class SheetBuilder //extends ... implements ... { //{{{ Constants String aaNames = "ALA,ARG,ASN,ASP,CYS,GLU,GLN,GLY,HIS,ILE,LEU,LYS,MET,PHE,PRO,SER,THR,TRP,TYR,VAL"; String aromNames = "PHE,TYR"; DecimalFormat df = new DecimalFormat("0.0##"); //}}} //{{{ Variable definitions //############################################################################## String filename = null; boolean verbose = false; boolean doBetaAroms = false; boolean doKin = true; TreeSet oppNames = null; ArrayList betaAroms = null; //}}} //{{{ Constructor(s) //############################################################################## public SheetBuilder() { super(); } //}}} //{{{ processModel //############################################################################## void processModel(String modelName, Model model, ModelState state) { if(verbose) System.err.println("Processing "+modelName+"["+model+"]"); // Create a set of Peptides and connect them up Collection peptides = createPeptides(model, state); connectPeptides(peptides); findHBonds(peptides, state); // Try to identify sheet based on H-bonding pattern assignSecStruct(peptides); // all Peptide data has now been filled in! // Map each residue to a beta-sheet plane // and a normal to that plane, if possible. // Returns a Map Map normals1 = calcSheetNormals1(peptides, model, state); // Flesh the normals out into a local coordinate system // and measure the Ca-Cb's angle to the normal. Map angles1 = measureSheetAngles1(peptides, normals1, state); // Similar to Ian's normals & angles above, but // instead of assigning one plane to a strand plus both its neighbor strands, // now we assign a pair of planes to each strand: one for each neighbor strand. // Returns a Map Map normals2 = calcSheetNormals2(peptides, model, state); // Measure concavity vs. convexity in the "across-strand" direction. Map angles2 = measureSheetAngles2(peptides, normals2, state); // Similar to the above two methods, but // now the pair of planes is spaced *along* the central strand // rather than *across* the three strands. // Returns a Map Map normals3 = calcSheetNormals3(peptides, model, state); // Measure concavity vs. convexity in the "along-strand" direction. Map angles3 = measureSheetAngles3(peptides, normals3, state); if(doBetaAroms) { // This is the stuff Daniel Keedy and Ed Triplett came up with // for a local system for an aromatic residue in a plus (p) rotamer // across from a given residue type in a beta sheet. // If the -betaarom flag is used, we'll hijack Ian's earlier code // to decide which peptides in this model deserve beta status, // then launch into our own stuff. addBetaAroms(peptides, modelName, model, state); } if(doKin) { System.out.println("@kinemage {"+modelName+" sheets}"); sketchHbonds(System.out, peptides, state); System.out.println("@group {normals}"); sketchNormals1(System.out, normals1, state); sketchNormals2(System.out, normals2, state); sketchNormals3(System.out, normals3, state); //sketchPlanes(System.out, angles1, state); //sketchLocalAxes(System.out, angles1, state); if(doBetaAroms) sketchBetaAroms(System.out, state, angles2, angles3); } else { // Print csv-formatted stats if(doBetaAroms) printBetaAromStats(System.out, angles1, angles2, angles3); else { // Default if not -kin and not -betaarom: // complete the standard sheet stats output. printNeighborAngles2(System.out, modelName, peptides, angles2); printNeighborAngles3(System.out, modelName, peptides, angles3); } } } //}}} //{{{ createPeptides //############################################################################## /** * Given a model and a state, create Peptide objects for all the "complete" * peptides in the model. * These fields will be filled: nRes, cRes, midpoint */ Collection createPeptides(Model model, ModelState state) { ArrayList peptides = new ArrayList(); Residue prev = null; for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(! AminoAcid.isAminoAcid(res)) continue; try { Peptide pep = new Peptide(prev, res, state); // prev could be null // If prev is null, no distance check. if(prev == null) peptides.add(pep); // If we have two residues, make sure they're connected, // or else do two separate half-peptides. else { AtomState pepC = state.get(prev.getAtom(" C ")); AtomState pepN = state.get(res.getAtom(" N ")); if(pepC.sqDistance(pepN) < 4.0) // within 2 A of each other peptides.add(pep); else { peptides.add(new Peptide(prev, null, state)); peptides.add(new Peptide(null, res, state)); } } } catch(AtomException ex) // missing atoms? try halves. { try { peptides.add(new Peptide(prev, null, state)); } catch(AtomException ex2) {} try { peptides.add(new Peptide(null, res, state)); } catch(AtomException ex2) {} } prev = res; }//for all residues // Add last residue as a half-peptide try { peptides.add(new Peptide(prev, null, state)); } catch(AtomException ex) {} return peptides; } //}}} //{{{ connectPeptides //############################################################################## /** * Given an ordered collection of peptides, connect them on the criteria that * successive peptides must share a common residue between them. * These fields will be filled: prev, next, chain, index. * Chain and index will be indexed starting from 1, not 0. */ void connectPeptides(Collection peptides) { Peptide prev = null; int chain = 0; for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pept = (Peptide) iter.next(); if(prev != null && prev.nRes != null && pept.cRes != null && prev.nRes == pept.cRes) { // Chain is continuous prev.next = pept; pept.prev = prev; pept.chain = prev.chain; pept.index = prev.index+1; } else { // Chain is broken pept.chain = ++chain; pept.index = 1; } prev = pept; } } //}}} //{{{ findHBonds //############################################################################## /** * Maps out all the inter-peptide H-bonds based on the criteria defined in * W. Kabsch and C. Sander (1983) Biopolymers, 22:2577. * The basic idea is that the H-bond is accepted if * E = 0.42*0.20*332*(1/rON + 1/rCH - 1/rOH - 1/rCN) is less than -0.5 kcal/mol. * Atom-atom distances are in Angstroms and E is in kcal/mol. * Ideal alignment allows distances up to 5.2 A (O to N); * ideal distance allows angles up to 63 degrees. * Be careful -- it will try to pick up i to {i, i+1, i+2} "H-bonds". * Only the strongest H-bond for each N to an unbonded O is kept. * These fields will be filled: hbondN, hbondO. */ void findHBonds(Collection peptides, ModelState state) { Peptide[] pep = (Peptide[]) peptides.toArray(new Peptide[peptides.size()]); // Do carbon/oxygen lookup just once AtomState[] carbon = new AtomState[pep.length]; AtomState[] oxygen = new AtomState[pep.length]; for(int i = 0; i < pep.length; i++) { if(pep[i].cRes != null) try { carbon[i] = state.get(pep[i].cRes.getAtom(" C ")); oxygen[i] = state.get(pep[i].cRes.getAtom(" O ")); } catch(AtomException ex) {} // left as null } // For each N/H, look for bonded C/O final double maxNOdist2 = 5.3*5.3; for(int i = 0; i < pep.length; i++) { if(pep[i].nRes != null) try { AtomState nitrogen = state.get(pep[i].nRes.getAtom(" N ")); AtomState hydrogen = state.get(pep[i].nRes.getAtom(" H ")); Peptide bestBond = null; double bestBondE = -0.5; for(int j = 0; j < pep.length; j++) { if(i == j) continue; // no intra-peptide H-bonds if(pep[i].chain == pep[j].chain && Math.abs(pep[i].index - pep[j].index) <= 2) continue; // no i to {i, i+1, i+2} H-bonds! if(carbon[j] == null || oxygen[j] == null) continue; if(nitrogen.sqDistance(oxygen[j]) > maxNOdist2) continue; double rON = oxygen[j].distance(nitrogen); double rCH = carbon[j].distance(hydrogen); double rOH = oxygen[j].distance(hydrogen); double rCN = carbon[j].distance(nitrogen); double energy = 27.9*(1/rON + 1/rCH - 1/rOH - 1/rCN); if(energy < bestBondE && pep[j].hbondO == null) { bestBond = pep[j]; bestBondE = energy; } }//for all possible partners if(bestBond != null) { pep[i].hbondN = bestBond; bestBond.hbondO = pep[i]; } } catch(AtomException ex) {} // no connections then }//for each peptide N } //}}} //{{{ assignSecStruct //############################################################################## /** * Given a collection of Peptides, we attempt to flag some of them as being * part of a beta sheet. *

If they're antiparallel and beta, and the nitrogen of peptide n is * H-bonded to the oxygen of peptide m, then one of the following is true:

    *
  • n+1's O is H-bonded to m-1's N
  • *
  • n-1's O is H-bonded to m+1's N
  • *
*

If they're parallel and beta, and the nitrogen of peptide n is * H-bonded to the oxygen of peptide m, then one of the following is true:

    *
  • n+1's O is H-bonded to m+1's N
  • *
  • n-1's O is H-bonded to m-1's N
  • *
* However, it must ALSO be true that |n-m| is greater than 5 OR that * n and m are in different chains to avoid picking up helices here. * These fields will be filled: isBeta, isParallelN, isParallelO */ void assignSecStruct(Collection peptides) { for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pepN = (Peptide) iter.next(); Peptide pepM = pepN.hbondN; if(pepM != null) { // Antiparallel? if(pepN.next != null && pepM.prev != null && pepN.next.hbondO == pepM.prev) { pepN.isBeta = pepM.isBeta = true; pepN.isParallelN = pepM.isParallelO = false; } else if(pepN.prev != null && pepM.next != null && pepN.prev.hbondO == pepM.next) { pepN.isBeta = pepM.isBeta = true; pepN.isParallelN = pepM.isParallelO = false; } // Parallel? else if(pepN.chain != pepM.chain || Math.abs(pepN.index - pepM.index) > 5) { if(pepN.next != null && pepM.next != null && pepN.next.hbondO == pepM.next) { pepN.isBeta = pepM.isBeta = true; pepN.isParallelN = pepM.isParallelO = true; } else if(pepN.prev != null && pepM.prev != null && pepN.prev.hbondO == pepM.prev) { pepN.isBeta = pepM.isBeta = true; pepN.isParallelN = pepM.isParallelO = true; } } } } } //}}} //{{{ calcSheetNormals1 //############################################################################## /** * Returns a Map<Residue, Triple> that maps each Residue in model * that falls in a "reasonable" part of the beta sheet to a Triple * representing the normal vector of the beta sheet at that Residue's C-alpha. * The normal is the normal of a plane least-squares fit through * six nearby peptide centers: the ones before and after this residue in * the strand, and their two (each) H-bonding partners, all of which * must be present and classified as being in beta sheet. */ Map calcSheetNormals1(Collection peptides, Model model, ModelState state) { // Allow mapping from residues to the peptides that hold them. Map cPeptides = new HashMap(), nPeptides = new HashMap(); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide p = (Peptide) iter.next(); if(p.cRes != null) cPeptides.put(p.cRes, p); if(p.nRes != null) nPeptides.put(p.nRes, p); } Map normals = new HashMap(); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); Peptide cPep = (Peptide) cPeptides.get(res); Peptide nPep = (Peptide) nPeptides.get(res); if(cPep != null && cPep.hbondN != null && cPep.hbondO != null && nPep != null && nPep.hbondN != null && nPep.hbondO != null && cPep.isBeta && cPep.hbondN.isBeta && cPep.hbondO.isBeta && nPep.isBeta && nPep.hbondN.isBeta && nPep.hbondO.isBeta) { Collection guidePts = new ArrayList(); guidePts.add(cPep.hbondN.midpoint); guidePts.add(cPep.midpoint); guidePts.add(cPep.hbondO.midpoint); guidePts.add(nPep.hbondN.midpoint); guidePts.add(nPep.midpoint); guidePts.add(nPep.hbondO.midpoint); LsqPlane lsqPlane = new LsqPlane(guidePts); Triple normal = new Triple(lsqPlane.getNormal()); normals.put(res, normal); // Try to make it point the same way as Ca-Cb try { AtomState ca = state.get(res.getAtom(" CA ")); AtomState cb = state.get(res.getAtom(" CB ")); Triple cacb = new Triple(cb).sub(ca); if(cacb.dot(normal) < 0) normal.neg(); } catch(AtomException ex) {} // oh well (e.g. Gly) } } return normals; } //}}} //{{{ calcSheetNormals2 //############################################################################## /** * Returns a Map<Residue, Triple[]> that maps each Residue in the model * that falls in a "reasonable" part of the beta sheet to a Triple[] * containing the following:
    *
  1. the unit vector sum of the normals of two planes, * each defined by a dipeptide on the central strand * and a dipeptide on one of the adjacent strands
  2. *
  3. a vector pointing from the centroid of one of those planes * to the centroid of the other plane
* This only works if there's a strand on both sides! * Note that before their summation and unit-vector-ification, the two normals * have been inverted if necessary so that they both point toward the central * strand. However, this *hasn't* been done to the C&alpha-C&beta vector! * This way, the normals' unit sum forms a local "concavity vector", that * can then be compared with the C&alpha-C&beta vector once the requisite * projections are performed (happens within SheetAxes2). */ Map calcSheetNormals2(Collection peptides, Model model, ModelState state) { // Allow mapping from residues to the peptides that hold them. Map cPeptides = new HashMap(), nPeptides = new HashMap(); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide p = (Peptide) iter.next(); if(p.cRes != null) cPeptides.put(p.cRes, p); if(p.nRes != null) nPeptides.put(p.nRes, p); } Map normals = new HashMap(); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); Peptide cPep = (Peptide) cPeptides.get(res); Peptide nPep = (Peptide) nPeptides.get(res); if(cPep != null && cPep.hbondN != null && cPep.hbondO != null && nPep != null && nPep.hbondN != null && nPep.hbondO != null && cPep.isBeta && cPep.hbondN.isBeta && cPep.hbondO.isBeta && nPep.isBeta && nPep.hbondN.isBeta && nPep.hbondO.isBeta) { // Normal 1: thru central residue's CO // ("Opposite" strand for plus aromatics) Collection guidePts1 = new ArrayList(); guidePts1.add(cPep.midpoint); guidePts1.add(nPep.midpoint); guidePts1.add(cPep.hbondO.midpoint); guidePts1.add(nPep.hbondN.midpoint); LsqPlane lsqPlane1 = new LsqPlane(guidePts1); Triple normal1 = new Triple(lsqPlane1.getNormal()); Triple anchor1 = new Triple(lsqPlane1.getAnchor()); // Normal 2: thru central residue's NH Collection guidePts2 = new ArrayList(); guidePts2.add(cPep.midpoint); guidePts2.add(nPep.midpoint); guidePts2.add(cPep.hbondN.midpoint); guidePts2.add(nPep.hbondO.midpoint); LsqPlane lsqPlane2 = new LsqPlane(guidePts2); Triple normal2 = new Triple(lsqPlane2.getNormal()); Triple anchor2 = new Triple(lsqPlane2.getAnchor()); // Try to make both normals point toward the middle strand Triple anchor1to2 = new Triple().likeVector(anchor1, anchor2); Triple anchor2to1 = new Triple().likeVector(anchor2, anchor1); if(normal1.dot(anchor1to2) < 0) normal1.neg(); if(normal2.dot(anchor2to1) < 0) normal2.neg(); if(normal1.angle(normal2) < 90) { // ...res... \ ...res... / <= bad normals // / \ instead of / \ <= planes // \ / <= good normals // Now that the two side-planes' normals are pointing toward the // central strand (as above), we know that their vector sum // indicates the *concave* direction of the local beta sheet! Triple[] vectors = new Triple[2]; vectors[0] = new Triple().likeSum(normal1, normal2).unit(); vectors[1] = new Triple(anchor2).sub(anchor1); normals.put(res, vectors); } } } return normals; } //}}} //{{{ calcSheetNormals3 //############################################################################## /** * Returns a Map<Residue, Triple[]> that maps each Residue in the model * that falls in a "reasonable" part of the beta sheet to a Triple[] * containing the following:
    *
  1. the unit vector sum of the normals of two planes, * one defined by the most and second-most N-ward peptides * (relative to the central strand) of the two adjacent strands, * and the other defined by the most and second-most C-ward peptides * (relative to the central strand) of the two adjacent strands
  2. *
  3. a vector pointing from the former plane's centroid * to the latter plane's centroid
  4. *
  5. a normal to the central four peptides' plane (not counting the * central strand), to serve at an approximation to the local * along-strand coordinate system
* Note that before their summation and unit-vector-ification, the two normals * have been inverted if necessary so that they both point toward the central * strand. However, this *hasn't* been done to the C&alpha-C&beta vector! * This way, the normals' unit sum forms a local "concavity vector", that * can then be compared with the C&alpha-C&beta vector once the requisite * projections are performed (happens within SheetAxes3). */ Map calcSheetNormals3(Collection peptides, Model model, ModelState state) { // Allow mapping from residues to the peptides that hold them. Map cPeptides = new HashMap(), nPeptides = new HashMap(); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide p = (Peptide) iter.next(); if(p.cRes != null) cPeptides.put(p.cRes, p); if(p.nRes != null) nPeptides.put(p.nRes, p); } Map normals = new HashMap(); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); Peptide cPep = (Peptide) cPeptides.get(res); Peptide nPep = (Peptide) nPeptides.get(res); if(cPep != null && cPep.hbondN != null && cPep.hbondO != null && nPep != null && nPep.hbondN != null && nPep.hbondO != null && cPep.isBeta && cPep.hbondN.isBeta && cPep.hbondO.isBeta && nPep.isBeta && nPep.hbondN.isBeta && nPep.hbondO.isBeta) { // Figure out which peptide relative to each of the (c,n)Pep.hbond(N,O) // is closest to the central Calpha and therefore should be used. // This just depends on whether we're in || or anti-|| sheet. Peptide nPepHbNNeighbor = null, nPepHbONeighbor = null, cPepHbNNeighbor = null, cPepHbONeighbor = null; if(nPep.isParallelN) nPepHbNNeighbor = nPep.hbondN.prev; else nPepHbNNeighbor = nPep.hbondN.next; // anti-|| if(nPep.isParallelO) nPepHbONeighbor = nPep.hbondO.prev; else nPepHbONeighbor = nPep.hbondO.next; // anti-|| if(cPep.isParallelN) cPepHbNNeighbor = cPep.hbondN.next; else cPepHbNNeighbor = cPep.hbondN.prev; // anti-|| if(cPep.isParallelO) cPepHbONeighbor = cPep.hbondO.next; else cPepHbONeighbor = cPep.hbondO.prev; // anti-|| if(nPepHbNNeighbor != null && nPepHbONeighbor != null && cPepHbNNeighbor != null && cPepHbONeighbor != null && nPepHbNNeighbor.isBeta && nPepHbONeighbor.isBeta && cPepHbNNeighbor.isBeta && cPepHbONeighbor.isBeta) { // Normal 1: N-ward on central strand Collection guidePts1 = new ArrayList(); guidePts1.add(nPep.hbondN.midpoint); guidePts1.add(nPep.hbondO.midpoint); guidePts1.add(nPepHbNNeighbor.midpoint); guidePts1.add(nPepHbONeighbor.midpoint); LsqPlane lsqPlane1 = new LsqPlane(guidePts1); Triple normal1 = new Triple(lsqPlane1.getNormal()); Triple anchor1 = new Triple(lsqPlane1.getAnchor()); // Normal 2: C-ward on central strand Collection guidePts2 = new ArrayList(); guidePts2.add(cPep.hbondN.midpoint); guidePts2.add(cPep.hbondO.midpoint); guidePts2.add(cPepHbNNeighbor.midpoint); guidePts2.add(cPepHbONeighbor.midpoint); LsqPlane lsqPlane2 = new LsqPlane(guidePts2); Triple normal2 = new Triple(lsqPlane2.getNormal()); Triple anchor2 = new Triple(lsqPlane2.getAnchor()); // Try to make both normals point in the general direction of // the central residue Triple anchor1to2 = new Triple().likeVector(anchor1, anchor2); Triple anchor2to1 = new Triple().likeVector(anchor2, anchor1); if(normal1.dot(anchor1to2) < 0) normal1.neg(); if(normal2.dot(anchor2to1) < 0) normal2.neg(); // Make an approximation to the Z axis in order to define the // coordinate plane. Its up-or-down direction is irrelevant // since CaCb and the normals' sum will be defined in the same // coord system, i.e. relative to zAxis, so comparisons btw // them are valid. Collection guidePts3 = new ArrayList(); guidePts3.add(nPep.hbondN.midpoint); guidePts3.add(nPep.hbondO.midpoint); guidePts3.add(cPep.hbondN.midpoint); guidePts3.add(cPep.hbondO.midpoint); LsqPlane lsqPlane3 = new LsqPlane(guidePts3); if(normal1.angle(normal2) < 90) { // Now that the two side-planes' normals are pointing toward the // central residue, we know that their vector sum indicates the // *concave* direction of the local beta sheet! Triple[] vectors = new Triple[3]; vectors[0] = new Triple().likeSum(normal1, normal2).unit(); vectors[1] = new Triple(anchor2).sub(anchor1); vectors[2] = new Triple(lsqPlane3.getNormal()); // the approx Z axis normals.put(res, vectors); } } } } return normals; } //}}} //{{{ measureSheetAngles1 //############################################################################## /** Returns a map of Residues to SheetAxes */ Map measureSheetAngles1(Collection peptides, Map normals, ModelState state) { // Allow mapping from residues to the peptides that hold them. Map cPeptides = new HashMap(), nPeptides = new HashMap(); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide p = (Peptide) iter.next(); if(p.cRes != null) cPeptides.put(p.cRes, p); if(p.nRes != null) nPeptides.put(p.nRes, p); } Map angles = new HashMap(); for(Iterator iter = normals.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); Triple normal = (Triple) normals.get(res); Peptide cPep = (Peptide) cPeptides.get(res); Peptide nPep = (Peptide) nPeptides.get(res); if(cPep == null || nPep == null) continue; Triple n2c = new Triple(cPep.midpoint).sub(nPep.midpoint); try { AtomState ca = state.get(res.getAtom(" CA ")); AtomState cb = state.get(res.getAtom(" CB ")); Triple cacb = new Triple(cb).sub(ca); SheetAxes axes = new SheetAxes(normal, n2c, cacb); angles.put(res, axes); } catch(AtomException ex) {} } return angles; } //}}} //{{{ measureSheetAngles2 //############################################################################## /** Returns a map of Residues to SheetAxes2 */ Map measureSheetAngles2(Collection peptides, Map normals2, ModelState state) { // Allow mapping from residues to the peptides that hold them. Map cPeptides = new HashMap(), nPeptides = new HashMap(); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide p = (Peptide) iter.next(); if(p.cRes != null) cPeptides.put(p.cRes, p); if(p.nRes != null) nPeptides.put(p.nRes, p); } Map angles2 = new HashMap(); for(Iterator iter = normals2.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); Triple[] vectors = (Triple[]) normals2.get(res); Peptide cPep = (Peptide) cPeptides.get(res); Peptide nPep = (Peptide) nPeptides.get(res); if(cPep == null || nPep == null) continue; Triple n2c = new Triple(cPep.midpoint).sub(nPep.midpoint); try { AtomState ca = state.get(res.getAtom(" CA ")); AtomState cb = state.get(res.getAtom(" CB ")); Triple cacb = new Triple(cb).sub(ca); SheetAxes2 axes2 = new SheetAxes2(vectors[0], vectors[1], n2c, cacb); angles2.put(res, axes2); } catch(AtomException ex) {} } return angles2; } //}}} //{{{ measureSheetAngles3 //############################################################################## /** Returns a map of Residues to SheetAxes3 */ Map measureSheetAngles3(Collection peptides, Map normals3, ModelState state) { // Allow mapping from residues to the peptides that hold them. Map cPeptides = new HashMap(), nPeptides = new HashMap(); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide p = (Peptide) iter.next(); if(p.cRes != null) cPeptides.put(p.cRes, p); if(p.nRes != null) nPeptides.put(p.nRes, p); } Map angles3 = new HashMap(); for(Iterator iter = normals3.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); Triple[] vectors = (Triple[]) normals3.get(res); Peptide cPep = (Peptide) cPeptides.get(res); Peptide nPep = (Peptide) nPeptides.get(res); if(cPep == null || nPep == null) continue; Triple n2c = new Triple(cPep.midpoint).sub(nPep.midpoint); try { AtomState ca = state.get(res.getAtom(" CA ")); AtomState cb = state.get(res.getAtom(" CB ")); Triple cacb = new Triple(cb).sub(ca); SheetAxes3 axes3 = new SheetAxes3(vectors[0], vectors[1], vectors[2], cacb); angles3.put(res, axes3); } catch(AtomException ex) {} } return angles3; } //}}} //{{{ addBetaAroms //############################################################################## /** * Finds "beta aromatics": Phe/Tyr in a beta strand with an Xaa residue * on the adjacent beta strand (in the aromatic's CO H-bonding direction). * These strands can be either anti-parallel or (less common?) parallel. * In the case of anti-parallel strands where the aromatic has a plus-chi1 rotamer, * we're dealing with Daniel Keedy & Ed Triplett's backrub-related examples. */ void addBetaAroms(Collection peptides, String modelName, Model model, ModelState state) { if(verbose) System.err.println("Adding beta aromatics"); betaAroms = new ArrayList(); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { // We're arbitrarily going for peptides with the aromatic on // its CO-containing residue (i.e. earlier in sequence), // not its N-containing residue (i.e. later in sequence). // Aromatic Peptide pepM = (Peptide) iter.next(); if(pepM == null) continue; if(!pepM.isBeta || pepM.prev == null || !pepM.prev.isBeta) continue; // prev pep has arom NH if(pepM.cRes == null) continue; Residue aromRes = pepM.cRes; if(aromNames.indexOf(aromRes.getName()) == -1) continue; // Opposite Peptide pepN = pepM.hbondO; if(pepN == null) continue; Residue oppRes = null; if(!pepM.isParallelO) // anti-parallel { if(!pepN.isBeta || pepN.next == null || !pepN.next.isBeta) continue; oppRes = pepN.nRes; } else // parallel { if(!pepN.isBeta || pepN.prev == null || !pepN.prev.isBeta) continue; oppRes = pepN.cRes; } if(oppRes == null) continue; if(!oppNames.contains(oppRes.getName())) continue; BetaArom ba = new BetaArom(aromRes, oppRes, pepM.isParallelO, peptides, model, modelName); try { ba.calcGeometry(); betaAroms.add(ba); if(verbose) System.err.println(".. Added "+ba); } catch(AtomException ex) // really a beta arom, but necessary atom(s) missing { System.err.println("Error creating "+ba); } catch(NullPointerException ex) // really a beta arom, but necessary atom(s) missing { System.err.println("Error creating "+ba); } } if(verbose) System.err.println("Beta aromatics found: "+betaAroms.size()); } //}}} //{{{ sketchHbonds //############################################################################## void sketchHbonds(PrintStream out, Collection peptides, ModelState state) { out.println("@group {peptides & hbonds}"); out.println("@balllist {peptides} radius= 0.1 color= green"); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(pep.isBeta) out.println("{"+pep+"} r=0.3 "+pep.midpoint.format(df)); else { // If using -betaaroms flag, we're only interested in aromatics // in beta regions and don't even wanna print non-beta peptides if(!doBetaAroms) out.println("{"+pep+"} "+pep.midpoint.format(df)); } } out.println("@vectorlist {N hbonds} color= sky"); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(pep.hbondN != null) { if(pep.isBeta || !doBetaAroms) // Again, if -betaaroms, we're picky { try { AtomState h = state.get(pep.nRes.getAtom(" H ")); AtomState o = state.get(pep.hbondN.cRes.getAtom(" O ")); out.println("{"+pep+"}P "+h.format(df)); out.println("{"+pep.hbondN+"} "+o.format(df)); } catch(AtomException ex) {} } } } out.println("@vectorlist {O hbonds} color= red"); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(pep.hbondO != null) { if(pep.isBeta || !doBetaAroms) // Again, if -betaaroms, we're picky { try { AtomState o = state.get(pep.cRes.getAtom(" O ")); AtomState h = state.get(pep.hbondO.nRes.getAtom(" H ")); out.println("{"+pep+"}P "+o.format(df)); out.println("{"+pep.hbondO+"} "+h.format(df)); } catch(AtomException ex) {} } } } } //}}} //{{{ sketchBetaAroms //############################################################################## void sketchBetaAroms(PrintStream out, ModelState state, Map angles2, Map angles3) { out.println("@group {beta aroms}"); out.println("@balllist {Calphas} radius= 0.3 color= hotpink"); for(BetaArom ba : betaAroms) { try { AtomState ca = state.get(ba.aromRes.getAtom(" CA ")); out.println("{"+ba+"} "+ca.format(df)); } catch(AtomException ex) { System.err.println("Error sketching CA ball for "+ba); } } out.println("@vectorlist {cross-sheet} color= yellow off"); for(BetaArom ba : betaAroms) { try { for(Iterator iter = angles2.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(res.equals(ba.aromRes)) { AtomState ca = state.get(ba.aromRes.getAtom(" CA ")); SheetAxes2 axes2 = (SheetAxes2) angles2.get(res); Triple caPlusNormal12 = new Triple().likeSum(ca, axes2.normal.mult(2)); out.println("{normal1+2 unit vector}P "+ca.format(df)); out.println("{normal1+2 unit vector} "+caPlusNormal12.format(df)); Triple caPlusStrand = new Triple().likeSum(ca, axes2.strand.mult(2)); out.println("{strand}P "+ca.format(df)); out.println("{strand} "+caPlusStrand.format(df)); Triple caPlusZAxis = new Triple().likeSum(ca, axes2.zAxis.mult(2)); out.println("{zAxis}P "+ca.format(df)); out.println("{zAxis} "+caPlusZAxis.format(df)); Triple caPlusCross = new Triple().likeSum(ca, axes2.cross.mult(2)); out.println("{cross}P "+ca.format(df)); out.println("{cross} "+caPlusCross.format(df)); } } } catch(AtomException ex) { System.err.println("Error sketching SheetAxes2 vectors for "+ba); } } out.println("@vectorlist {along-sheet} color= sky off"); for(BetaArom ba : betaAroms) { try { for(Iterator iter = angles3.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(res.equals(ba.aromRes)) { AtomState ca = state.get(ba.aromRes.getAtom(" CA ")); SheetAxes3 axes3 = (SheetAxes3) angles3.get(res); Triple caPlusNormal12 = new Triple().likeSum(ca, axes3.normal.mult(2)); out.println("{normal1+2 unit vector}P "+ca.format(df)); out.println("{normal1+2 unit vector} "+caPlusNormal12.format(df)); Triple caPlusStrand = new Triple().likeSum(ca, axes3.strand.mult(2)); out.println("{strand}P "+ca.format(df)); out.println("{strand} "+caPlusStrand.format(df)); Triple caPlusZAxis = new Triple().likeSum(ca, axes3.zAxis.mult(2)); out.println("{zAxis}P "+ca.format(df)); out.println("{zAxis} "+caPlusZAxis.format(df)); Triple caPlusCross = new Triple().likeSum(ca, axes3.cross.mult(2)); out.println("{cross}P "+ca.format(df)); out.println("{cross} "+caPlusCross.format(df)); } } } catch(AtomException ex) { System.err.println("Error sketching SheetAxes3 vectors for "+ba); } } } //}}} //{{{ sketchNormals1 //############################################################################## /** Sketches normals to 6-Calpha planes. */ void sketchNormals1(PrintStream out, Map normals, ModelState state) { out.println("@arrowlist {6-Calpha} color= magenta radius= 0.25 off"); for(Iterator iter = normals.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); Triple normal = (Triple) normals.get(res); try { AtomState ca = state.get(res.getAtom(" CA ")); Triple tip = new Triple(normal).add(ca); out.println("{"+res+"}P "+ca.format(df)); out.println("{normal: "+tip.format(df)+"} "+tip.format(df)); } catch(AtomException ex) { ex.printStackTrace(); } } } //}}} //{{{ sketchNormals2 //############################################################################## /** * Sketches normals to 4-Calpha planes on either side of central strand. * Shows cross-sheet concavity. */ void sketchNormals2(PrintStream out, Map normals, ModelState state) { out.println("@arrowlist {cross-sheet} color= lilac radius= 0.25"); for(Iterator iter = normals.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); Triple[] vectors = (Triple[]) normals.get(res); Triple normal = vectors[0]; try { AtomState ca = state.get(res.getAtom(" CA ")); Triple tip = new Triple(normal).add(ca); out.println("{"+res+"}P "+ca.format(df)); out.println("{cross-sheet normal: "+tip.format(df)+"} "+tip.format(df)); } catch(AtomException ex) { ex.printStackTrace(); } /*Triple anchor1PlusNormal1 = new Triple().likeSum(anchor1, new Triple(normal1).mult(2)); Triple anchor2PlusNormal2 = new Triple().likeSum(anchor2, new Triple(normal2).mult(2)); out.println("{"+res+" cross-sheet normal}P "+anchor1.format(df)); out.println("{"+res+" cross-sheet normal} " +anchor1PlusNormal1.format(df)); out.println("{"+res+" cross-sheet normal}P "+anchor2.format(df)); out.println("{"+res+" cross-sheet normal} " +anchor2PlusNormal2.format(df));*/ } } //}}} //{{{ sketchNormals3 //############################################################################## /** * Sketches normals to 4-Calpha planes in either direction along central strand. * Shows along-sheet concavity. */ void sketchNormals3(PrintStream out, Map normals, ModelState state) { out.println("@arrowlist {along-sheet} color= pink radius= 0.25"); for(Iterator iter = normals.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); Triple[] vectors = (Triple[]) normals.get(res); Triple normal = vectors[0]; try { AtomState ca = state.get(res.getAtom(" CA ")); Triple tip = new Triple(normal).add(ca); out.println("{"+res+"}P "+ca.format(df)); out.println("{along-sheet normal: "+tip.format(df)+"} "+tip.format(df)); } catch(AtomException ex) { ex.printStackTrace(); } /*Triple anchor1PlusNormal1 = new Triple().likeSum(anchor1, new Triple(normal1).mult(2)); Triple anchor2PlusNormal2 = new Triple().likeSum(anchor2, new Triple(normal2).mult(2)); out.println("{"+res+" along-sheet normal}P "+anchor1.format(df)); out.println("{"+res+" along-sheet normal} " +anchor1PlusNormal1.format(df)); out.println("{"+res+" along-sheet normal}P "+anchor2.format(df)); out.println("{"+res+" along-sheet normal} " +anchor2PlusNormal2.format(df));*/ } } //}}} //{{{ sketchLocalAxes //############################################################################## void sketchLocalAxes(PrintStream out, Map angles, ModelState state) { out.println("@group {local axes}"); out.println("@vectorlist {axes} color= brown"); for(Iterator iter = angles.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); SheetAxes axes = (SheetAxes) angles.get(res); try { AtomState ca = state.get(res.getAtom(" CA ")); Triple tip = new Triple(axes.strand).add(ca); out.println("{"+res+"}P "+ca.format(df)); out.println("{strand}red "+tip.format(df)); tip.like(axes.cross).add(ca); out.println("{"+res+"}P "+ca.format(df)); out.println("{cross}green "+tip.format(df)); tip.like(axes.normal).add(ca); out.println("{"+res+"}P "+ca.format(df)); out.println("{normal}blue "+tip.format(df)); } catch(AtomException ex) { ex.printStackTrace(); } } out.println("@labellist {angles} color= peach"); for(Iterator iter = angles.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); SheetAxes axes = (SheetAxes) angles.get(res); try { AtomState ca = state.get(res.getAtom(" CA ")); Triple tip = new Triple(axes.strand).add(ca); out.println("{strand: "+df.format(axes.angleAlong)+"}red "+tip.format(df)); tip.like(axes.cross).add(ca); out.println("{cross: "+df.format(axes.angleAcross)+"}green "+tip.format(df)); tip.like(axes.normal).add(ca); out.println("{normal: "+df.format(axes.angleNormal)+"}blue "+tip.format(df)); } catch(AtomException ex) { ex.printStackTrace(); } } } //}}} //{{{ sketchPlanes //############################################################################## void sketchPlanes(PrintStream out, Map angles, ModelState state) { Transform xform = new Transform(); // It's important that we visit the residues in order. ArrayList residues = new ArrayList(angles.keySet()); Collections.sort(residues); for(Iterator iter = residues.iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); SheetAxes axes = (SheetAxes) angles.get(res); out.println("@group {"+res.getCNIT()+"} animate dominant"); out.println("@vectorlist {axes} color= brown"); try { AtomState ca = state.get(res.getAtom(" CA ")); Triple tip = new Triple(); for(int i = 0; i < 360; i+=5) { tip.like(axes.strand).mult(5); xform.likeRotation(axes.normal, i); xform.transformVector(tip); tip.add(ca); out.println("{"+res+"}P "+ca.format(df)); out.println("{plane} "+tip.format(df)); } } catch(AtomException ex) { ex.printStackTrace(); } } } //}}} //{{{ printNeighborAngles2 //############################################################################## /** Prints along-sheet-oriented stats. */ void printNeighborAngles2(PrintStream out, String modelName, Collection peptides, Map angles) { // Allow mapping from residues to the peptides that hold them. Map cPeptides = new HashMap(), nPeptides = new HashMap(); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide p = (Peptide) iter.next(); if(p.cRes != null) cPeptides.put(p.cRes, p); if(p.nRes != null) nPeptides.put(p.nRes, p); } out.println("residue,normal,across,along,next-neighbor?,normal,across,along"); for(Iterator iter = angles.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); SheetAxes axes = (SheetAxes) angles.get(res); out.print(res.getCNIT()+","+df.format(axes.angleNormal)+","+df.format(axes.angleAcross)+","+df.format(axes.angleAlong)); Peptide pep = (Peptide) cPeptides.get(res); SheetAxes next = (SheetAxes) angles.get(pep.nRes); if(pep.nRes != null && next != null) out.print(","+pep.nRes.getCNIT()+","+df.format(next.angleNormal)+","+df.format(next.angleAcross)+","+df.format(next.angleAlong)); out.println(); } } //}}} //{{{ printNeighborAngles3 //############################################################################## /** Prints cross-sheet-oriented stats. */ void printNeighborAngles3(PrintStream out, String modelName, Collection peptides, Map angles) { // Allow mapping from residues to the peptides that hold them. Map cPeptides = new HashMap(), nPeptides = new HashMap(); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide p = (Peptide) iter.next(); if(p.cRes != null) cPeptides.put(p.cRes, p); if(p.nRes != null) nPeptides.put(p.nRes, p); } for(Iterator iter = angles.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); SheetAxes axes = (SheetAxes) angles.get(res); out.print(modelName+","+res.getCNIT()+","+df.format(axes.angleNormal)+","+df.format(axes.angleAcross)+","+df.format(axes.angleAlong)); Peptide pep = (Peptide) nPeptides.get(res); if(pep.hbondN != null) // has a cross-strand neighbor { Residue nextRes; if(pep.isParallelN) nextRes = pep.hbondN.nRes; else nextRes = pep.hbondN.cRes; SheetAxes next = (SheetAxes) angles.get(nextRes); if(nextRes != null && next != null) out.print(","+nextRes.getCNIT()+","+df.format(next.angleNormal)+","+df.format(next.angleAcross)+","+df.format(next.angleAlong)); } out.println(); } } //}}} //{{{ printBetaAromStats //############################################################################## void printBetaAromStats(PrintStream out, Map angles1, Map angles2, Map angles3) { out.println( "model,arom_res,arom_restype,opp_res,opp_restype,"+ "parallel,chi1,chi2,arom_maxB,opp_maxB,"+ "arom_edge,opp_edge,"+ "arom_betaN,arom_betaC,opp_betaN,opp_betaC,"+ "Caa,Cgba,Cbaa,"+ "Nward_Caaaa,Cward_Caaaa,Nward_cross_Caaaa,Cward_cross_Caaaa,"+ "aromCaaa,oppCaaa,"+ "fray,tilt,"+ "phi_i-1,psi_i-1,phi_i,psi_i,phi_i+1,psi_i+1,"+ "tau_i-1,tau,tau_i+1,"+ "Cab_6CaNormal,Cab_acrossConcav,Cab_alongConcav"); for(BetaArom ba : betaAroms) { // BetaArom angles out.print(ba.modelName+ ","+ba.aromRes+ ","+ba.aromRes.getName()+ ","+ba.oppRes+ ","+ba.oppRes.getName()+ ","+ba.parallel+ ","+df.format(ba.chi1)+ ","+df.format(ba.chi2)+ ","+df.format(ba.aromMaxB)+ ","+df.format(ba.oppMaxB)+ ","+ba.aromEdge+ ","+ba.oppEdge+ ","+ba.aromNumBetaResN+ ","+ba.aromNumBetaResC+ ","+ba.oppNumBetaResN+ ","+ba.oppNumBetaResC+ ","+df.format(ba.cacaDist)+ ","+df.format(ba.cgcbcaAngle)+ ","+df.format(ba.cbcacaAngle)+ ","+df.format(ba.nwardTwist)+ ","+df.format(ba.cwardTwist)+ ","+df.format(ba.nwardCrossTwist)+ ","+df.format(ba.cwardCrossTwist)+ ","+df.format(ba.aromCaAngle)+ ","+df.format(ba.oppCaAngle)+ ","+df.format(ba.fray)+ ","+df.format(ba.tilt)+ ","+df.format(ba.aromPrevPhi)+ ","+df.format(ba.aromPrevPsi)+ ","+df.format(ba.aromPhi)+ ","+df.format(ba.aromPsi)+ ","+df.format(ba.aromNextPhi)+ ","+df.format(ba.aromNextPsi)+ ","+df.format(ba.aromPrevTau)+ ","+df.format(ba.aromTau)+ ","+df.format(ba.aromNextTau)); // 6-Calpha normals: SheetAxes angles for(Iterator iter = angles1.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(res.equals(ba.aromRes)) { SheetAxes axes = (SheetAxes) angles1.get(res); out.print(","+df.format(axes.angleNormal)); } } // Across-strand SheetAxes2 angle(s) for(Iterator iter = angles2.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(res.equals(ba.aromRes)) { SheetAxes2 axes2 = (SheetAxes2) angles2.get(res); out.print(","+df.format(axes2.cacb_acrossConcavity)); } } // Along-strand SheetAxes3 angle(s) for(Iterator iter = angles3.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(res.equals(ba.aromRes)) { SheetAxes3 axes3 = (SheetAxes3) angles3.get(res); out.print(","+df.format(axes3.cacb_alongConcavity)); } } out.println(); } } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { CoordinateFile cf = new PdbReader().read(new File(filename)); Model m = cf.getFirstModel(); ModelState state = m.getState(); processModel(cf.getIdCode().toLowerCase(), m, state); } public static void main(String[] args) { SheetBuilder mainprog = new SheetBuilder(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) // If no specified res types on opposite strand, allow all of 'em if(oppNames == null) { oppNames = new TreeSet(); Scanner s = new Scanner(aaNames).useDelimiter(","); while(s.hasNext()) oppNames.add(s.next()); } } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("SheetBuilder.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'SheetBuilder.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.SheetBuilder"); System.err.println("Copyright (C) 2004 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if(filename == null) filename = arg; else System.out.println("Didn't need "+arg+"; already have file "+filename); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-betaarom")) { doBetaAroms = true; } else if(flag.equals("-oppres") || flag.equals("-opp")) { if(oppNames == null) oppNames = new TreeSet(); String[] types = Strings.explode(param, ','); for(String type : types) oppNames.add(type); } else if(flag.equals("-kin")) { doKin = true; } else if(flag.equals("-csv")) { doKin = false; } else if(flag.equals("-verbose") || flag.equals("-v")) { verbose = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/HelixBuilder.java0000644000000000000000000015717211531212724023125 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * HelixBuilder is a class that creates Helix objects, which hold * information about alpha helices, for an input PDB file. * Specifically, it measures parameters related to the N cap of each helix in * the file. * *

Copyright (C) 2007 by Daniel Keedy. All rights reserved. *
Begun on Tue Mar 30 10:45:56 EST 2004 */ public class HelixBuilder //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("###.###"); //}}} //{{{ Variable definitions //############################################################################## String filename = null; ArrayList helices = new ArrayList(); boolean doNcaps = false; boolean onlyHbNcaps = false; boolean doKin = false; boolean doPrint = true; boolean smoothAxes = false; int smoothAxesTimes = 0; boolean verbose = false; boolean append = false; //}}} //{{{ Constructor(s) //############################################################################## public HelixBuilder() { super(); } //}}} //{{{ processModel //############################################################################## void processModel(String modelName, Model model, ModelState state) { // Create a set of Peptides and connect them up Collection peptides = createPeptides(model, state); connectPeptides(peptides); findHBonds(peptides, state); getPsiPhis(peptides, state); // Try to identify *helix* based on H-bonding pattern assignSecStruct(peptides); assignLeftoverSecStruct(peptides); addHelices(peptides, model, state); // all Peptide data has now been filled in! findAxes(model, state); if (smoothAxes) for (int i = 0; i < smoothAxesTimes; i ++) smoothAxes(); if (doNcaps) findNcaps(model, state); if (doKin) { if (!append) System.out.println("@kinemage {"+filename+" helices}"); sketchHbonds(System.out, peptides, state); sketchNcaps(System.out, state); sketchAxes(System.out); } //if (verbose) for(Iterator iter = peptides.iterator(); iter.hasNext(); ) //{ // Peptide pep = (Peptide) iter.next(); // if(pep.isHelix) System.err.println(filename.substring(0,4)+" "+pep); //} } //}}} //{{{ createPeptides //############################################################################## /** * Given a model and a state, create Peptide objects for all the "complete" * peptides in the model. * These fields will be filled: nRes, cRes, midpoint */ Collection createPeptides(Model model, ModelState state) { ArrayList peptides = new ArrayList(); Residue prev = null; for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(! AminoAcid.isAminoAcid(res)) continue; try { Peptide pep = new Peptide(prev, res, state); // prev could be null // If prev is null, no distance check. if(prev == null) peptides.add(pep); // If we have two residues, make sure they're connected, // or else do two separate half-peptides. else { AtomState pepC = state.get(prev.getAtom(" C ")); AtomState pepN = state.get(res.getAtom(" N ")); if(pepC.sqDistance(pepN) < 4.0) // within 2 A of each other peptides.add(pep); else { peptides.add(new Peptide(prev, null, state)); peptides.add(new Peptide(null, res, state)); } } } catch(AtomException ex) // missing atoms? try halves. { try { peptides.add(new Peptide(prev, null, state)); } catch(AtomException ex2) {} try { peptides.add(new Peptide(null, res, state)); } catch(AtomException ex2) {} } prev = res; }//for all residues // Add last residue as a half-peptide try { peptides.add(new Peptide(prev, null, state)); } catch(AtomException ex) {} return peptides; } //}}} //{{{ connectPeptides //############################################################################## /** * Given an ordered collection of peptides, connect them on the criteria that * successive peptides must share a common residue between them. * These fields will be filled: prev, next, chain, index. * Chain and index will be indexed starting from 1, not 0. */ void connectPeptides(Collection peptides) { Peptide prev = null; int chain = 0; for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pept = (Peptide) iter.next(); if(prev != null && prev.nRes != null && pept.cRes != null && prev.nRes == pept.cRes) { // Chain is continuous prev.next = pept; pept.prev = prev; pept.chain = prev.chain; pept.index = prev.index+1; } else { // Chain is broken pept.chain = ++chain; pept.index = 1; } prev = pept; } } //}}} //{{{ findHBonds //############################################################################## /** * Maps out all the inter-peptide H-bonds based on the criteria defined in * W. Kabsch and C. Sander (1983) Biopolymers, 22:2577. * The basic idea is that the H-bond is accepted if * E = 0.42*0.20*332*(1/rON + 1/rCH - 1/rOH - 1/rCN) is less than -0.5 kcal/mol. * Atom-atom distances are in Angstroms and E is in kcal/mol. * Ideal alignment allows distances up to 5.2 A (O to N); * ideal distance allows angles up to 63 degrees. * Be careful -- it will try to pick up i to {i, i+1, i+2} "H-bonds". * Only the strongest H-bond for each N to an unbonded O is kept. * These fields will be filled: hbondN, hbondO. */ void findHBonds(Collection peptides, ModelState state) { Peptide[] pep = (Peptide[]) peptides.toArray(new Peptide[peptides.size()]); // Do carbon/oxygen lookup just once AtomState[] carbon = new AtomState[pep.length]; AtomState[] oxygen = new AtomState[pep.length]; for(int i = 0; i < pep.length; i++) { if(pep[i].cRes != null) try { carbon[i] = state.get(pep[i].cRes.getAtom(" C ")); oxygen[i] = state.get(pep[i].cRes.getAtom(" O ")); } catch(AtomException ex) {} // left as null } // For each N/H, look for bonded C/O final double maxNOdist2 = 5.3*5.3; for(int i = 0; i < pep.length; i++) { if(pep[i].nRes != null) try { AtomState nitrogen = state.get(pep[i].nRes.getAtom(" N ")); AtomState hydrogen = state.get(pep[i].nRes.getAtom(" H ")); Peptide bestBond = null; double bestBondE = -0.5; for(int j = 0; j < pep.length; j++) { if(i == j) continue; // no intra-peptide H-bonds if(pep[i].chain == pep[j].chain && Math.abs(pep[i].index - pep[j].index) <= 2) continue; // no i to {i, i+1, i+2} H-bonds! if(carbon[j] == null || oxygen[j] == null) continue; if(nitrogen.sqDistance(oxygen[j]) > maxNOdist2) continue; double rON = oxygen[j].distance(nitrogen); double rCH = carbon[j].distance(hydrogen); double rOH = oxygen[j].distance(hydrogen); double rCN = carbon[j].distance(nitrogen); double energy = 27.9*(1/rON + 1/rCH - 1/rOH - 1/rCN); if(energy < bestBondE && pep[j].hbondO == null) { bestBond = pep[j]; bestBondE = energy; } }//for all possible partners if(bestBond != null) { pep[i].hbondN = bestBond; bestBond.hbondO = pep[i]; } } catch(AtomException ex) {} // no connections then }//for each peptide N } //}}} //{{{ getPsiPhis //############################################################################## /** * For each peptide (Ca i-1, C i-1, N i, Ca i), set the psi for the N-most * residue and the phi for the C-most residue. * This will be used to assign secondary structure below (phi,psi in helical * range). */ void getPsiPhis(Collection peptides, ModelState state) { Peptide[] pep = (Peptide[]) peptides.toArray(new Peptide[peptides.size()]); for (int i = 0; i < pep.length; i++) { if (pep[i].nRes != null && pep[i].cRes != null) try { // Get psiN AtomState N_iminus1 = state.get(pep[i].nRes.getAtom(" N ")); AtomState Ca_iminus1 = state.get(pep[i].nRes.getAtom(" CA ")); AtomState C_iminus1 = state.get(pep[i].nRes.getAtom(" C ")); AtomState N_i = state.get(pep[i].cRes.getAtom(" N ")); pep[i].psiN = new Triple().dihedral(N_iminus1, Ca_iminus1, C_iminus1, N_i); // Get phiC //AtomState C_iminus1 = state.get(pep[i].nRes.getAtom(" C ")); //AtomState N_i = state.get(pep[i].cRes.getAtom(" N ")); AtomState Ca_i = state.get(pep[i].cRes.getAtom(" CA ")); AtomState C_i = state.get(pep[i].cRes.getAtom(" C ")); pep[i].phiC = new Triple().dihedral(C_iminus1, N_i, Ca_i, C_i); if (verbose) { System.err.println("**"+pep[i]); System.err.println("psiN: "+pep[i].psiN+", phiC: "+pep[i].phiC); System.err.println(); } } catch (AtomException ex) {} // left as null } } //}}} //{{{ assignSecStruct //############################################################################## /** * We'll use Ian's infrastructure for SheetBuilder, but since we *are* * looking for helices, we'll take only take peptides for which either * (1) pep's cRes N is H-bonded to resi-4's O and pep's cRes phi is in helical range * or * (2) pep's nRes O is H-bonded to resi+4's N and pep's nRes psi is in helical range * * Note that the phi & psi cutoffs used above are very approximate and were taken * from a simple visual inspection of the general case Rama plot in the 2003 Ca * geom paper. */ void assignSecStruct(Collection peptides) { // First run-through for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(pep != null) { if (verbose) System.err.println(pep+" "+pep.phiC+" "+pep.psiN); if(pep.next != null && pep.prev != null && pep.nRes != null && pep.cRes != null) { boolean hbForward = false, hbBackward = false; // Peptide's C=O makes an HB forward (beg or mid) if (pep.hbondO != null && pep.hbondO.nRes != null) { int seqNumDiff = ((pep.hbondO).nRes).getSequenceInteger() - (pep.nRes).getSequenceInteger(); if (seqNumDiff == 3) hbForward = true; } // Peptide's N-H makes an HB backwards (mid or end) if (pep.hbondN != null && pep.hbondN.nRes != null) { int seqNumDiff = (pep.nRes).getSequenceInteger() - ((pep.hbondN).nRes).getSequenceInteger(); if (seqNumDiff == 3) hbBackward = true; //alter to allow for C caps? } if ( (pep.phiC > -180 && pep.phiC < 0 && hbForward) || (pep.psiN > -90 && pep.psiN < 45 && hbBackward) ) pep.isHelix = true; } } } } //}}} //{{{ assignLeftoverSecStruct //############################################################################## void assignLeftoverSecStruct(Collection peptides) { // Second run-through to catch residues on ends that either make an HB // *or* are in the proper phiC or psiN range. // Not as stringent here: make it either/or so we pick up those iffy // ones on the ends or in between two stretches labeled as helical in // assignSecStruct (i.e. "w/in" a helix) ArrayList pepsToMakeHelical = new ArrayList(); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(pep != null) { if(pep.next != null && pep.prev != null && pep.nRes != null && pep.cRes != null) { boolean hbForward = false, hbBackward = false; // Peptide's C=O makes an HB forward (beg or mid) if (pep.hbondO != null && pep.hbondO.nRes != null) { int seqNumDiff = ((pep.hbondO).cRes).getSequenceInteger() - (pep.cRes).getSequenceInteger(); // Was nRes to nRes, but this works equally well and // makes more sense looking at the helix b/c pep.cRes // is the one whose CO H-bonds to the N-H of the // capping box. if (seqNumDiff == 3) hbForward = true; } // Peptide's N-H makes an HB backwards (mid or end) if (pep.hbondN != null && pep.hbondN.nRes != null) { int seqNumDiff = (pep.nRes).getSequenceInteger() - ((pep.hbondN).nRes).getSequenceInteger(); // Note that pep.nRes's NH HB's to the CO of // pep.hbondN and that residue difference is 4, but // we look at the N-containing res of that target // peptide, not the C-containing res, so 3 is the // correct target if (seqNumDiff == 3) hbBackward = true; //alter to allow for C caps? } // Requirements: // (res on one half of peptide is helical) && // ((res on other half of peptide has phi/psi in right range) || // (N/C on other half of peptide makes backward/forward HB, // respectively, to a helical peptide)) // Possibilities: // (1) cRes is helical and psi helical or N HB's backward to helical peptide // (2) nRes is helical and phi helical or C HB's forward to helical peptide boolean nResIsHelical = false, cResIsHelical = false, rightPsiN = false, rightPhiC = false, makesNwardHBtoHelicalPeptide = false, makesCwardHBtoHelicalPeptide = false; for(Iterator iter2 = peptides.iterator(); iter2.hasNext(); ) { Peptide pep2 = (Peptide) iter2.next(); if(pep2 != null) { if (pep2.isHelix && pep2.cRes.equals(pep.nRes)) nResIsHelical = true; if (pep2.isHelix && pep2.nRes.equals(pep.cRes)) cResIsHelical = true; } } if (pep.psiN > -90 && pep.psiN < 45) rightPsiN = true; if (pep.phiC > -180 && pep.phiC < 0) rightPhiC = true; if (hbBackward && pep.hbondN.isHelix) makesNwardHBtoHelicalPeptide = true; if (hbForward && pep.hbondO.isHelix) makesCwardHBtoHelicalPeptide = true; // I was using the commented out version here until I // realized I had confused nRes and cRes. // All that changes is cResIsHelical becomes nResIsHelical // and vice versa. //if ((nResIsHelical && (rightPsiN || makesNwardHBtoHelicalPeptide)) || // (cResIsHelical && (rightPhiC || makesCwardHBtoHelicalPeptide))) if ((cResIsHelical && (rightPsiN || makesNwardHBtoHelicalPeptide)) || (nResIsHelical && (rightPhiC || makesCwardHBtoHelicalPeptide))) pepsToMakeHelical.add(pep); } } } for (Peptide pep : pepsToMakeHelical) pep.isHelix = true; } //}}} //{{{ addHelices //############################################################################## void addHelices(Collection peptides, Model model, ModelState state) { // *Note* I think the current implementation of this method makes sense // despite the notes below. We want to look at the cRes (containing C so // furthest N-ward in a peptide) vs. i+3 at N termini/beginnings and we // want to look at the nRes (containing N so furthest C-ward in a peptide) // vs. i-3 at C termini/ends. This is because we're interested in pruning // the most "extreme" residues of a set of helical peptides containing // potentially helical residues. //{{{ old, wrong notes // *Note* There's still some cRes vs. nRes confusion here! // It's been changed in addHelices2, but that new method may work // better, e.g. for 3_10 helices (?), or worse in certain cases, so // we'll leave this one just in case. // The problem: should we really be looking at the nRes Ca(i,i-3) distance // at helix C-termini and the cRes Ca(i,i+3) distance at N-termini? // What's here seems to work well for now, so we won't mess with it // just yet... //}}} // Start by finding overall first and last residues in the sequence to // avoid null pointer errors near the ends Residue firstRes = null, lastRes = null; for (Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue currRes = (Residue) iter.next(); if (firstRes == null) firstRes = currRes; if (lastRes == null) lastRes = currRes; if (currRes.getSequenceInteger() < firstRes.getSequenceInteger()) firstRes = currRes; if (currRes.getSequenceInteger() > lastRes.getSequenceInteger()) lastRes = currRes; } TreeSet thisHelixsResidues = new TreeSet(); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if (pep.isHelix) { // Decide which Residues from the Peptides are helical. // Simultaneously catch residues on ends that meet the // requirements in the assignSecStruc methods but upon // visual inspection are way too far from the helix. // A convenient filter: eliminate residues from helix if // Ca i to i+3 > 6.0A (N-term) or Ca i to i-3 > 6.0A (C-term). // Look at cRes of peptide if worried about end of sequence if (pep.cRes != null && pep.cRes.getSequenceInteger() <= lastRes.getSequenceInteger() - 3) { try { Residue iplus3 = pep.cRes.getNext(model).getNext(model). getNext(model); AtomState ca = state.get(pep.cRes.getAtom(" CA ")); AtomState ca_iplus3 = state.get(iplus3.getAtom(" CA ")); if (ca != null && ca_iplus3 != null && ca.distance(ca_iplus3) < 6) { if (verbose) { System.err.println("Looking at "+pep); System.err.println(" Did add pep.cRes "+pep.cRes+ " to a helix\tCa-Ca(i+3) dist "+ df.format(ca.distance(ca_iplus3))); } thisHelixsResidues.add(pep.cRes); } else { if (verbose) { System.err.println("Looking at pep.cRes "+pep); System.err.println(" *Didn't* add residue "+ pep.cRes+" to a helix\tCa-Ca(i+3) dist "+ df.format(ca.distance(ca_iplus3))); } } } catch (AtomException ae) { System.err.println("Couldn't find res i+3 for res "+pep.cRes); Residue iplus3 = null; } } // Look at nRes of peptide if worried about beginning of sequence if (pep.nRes != null && pep.nRes.getSequenceInteger() >= firstRes.getSequenceInteger() + 3) { try { Residue iminus3 = pep.nRes.getPrev(model).getPrev(model). getPrev(model); AtomState ca = state.get(pep.nRes.getAtom(" CA ")); AtomState ca_iminus3 = state.get(iminus3.getAtom(" CA ")); if (ca != null && ca_iminus3 != null && ca.distance(ca_iminus3) < 6) { if (verbose) { System.err.println("Looking at peptide "+pep); System.err.println(" Did add pep.nRes "+ pep.nRes+" to a helix\tCa-Ca(i-3) dist "+ df.format(ca.distance(ca_iminus3))); } thisHelixsResidues.add(pep.nRes); } else { if (verbose) { System.err.println("Looking at peptide "+pep); System.err.println(" *Didn't* add pep.nRes "+pep.nRes+ " to a helix\tCa-Ca(i-3) dist "+ df.format(ca.distance(ca_iminus3))); } } } catch (AtomException ae) { System.err.println("Couldn't find res i-3 for res "+pep.nRes); Residue iminus3 = null; } } // If done with a stretch of helical peptides if (!pep.next.isHelix || pep.next == null || pep.cRes == null) { // If at least 5 residues, we're good to go. // Make this helix, add it to the list, and reset this // helix-making process Iterator it = thisHelixsResidues.iterator(); ArrayList r = new ArrayList(); while (it.hasNext()) r.add( (Residue)it.next() ); Collections.sort(r); if (thisHelixsResidues.size() >= 5) { Helix thisHelix = new Helix(thisHelixsResidues); helices.add(thisHelix); thisHelixsResidues = new TreeSet(); if (verbose) System.err.println("Making helix starting at '" +r.get(0)+"'"+" b/c size is "+r.size()+"\n"); } else { // Reset this helix-making process w/out making a helix thisHelixsResidues = new TreeSet(); if (verbose) System.err.println("Only "+r.size()+" residues in "+ "this helix"+" starting at '"+r.get(0)+"', so not making it..."); } } } } } //}}} //{{{ findAxes //############################################################################## public void findAxes(Model model, ModelState state) { /** * Calculates local helical axis for each set of 4 Ca's in each Helix. * This is only one way of doing it... Can also Google some other * possibilities later. * This will be used to tabulate the angle between the local helix axis * and the normal vectors of certain peptides in the helix (e.g. Ncap, * Asn's w/in helix) to look for evidence of backrubs in a local * coordinate system. * The point is to examine under what local circumstances the backrub * occurs. */ for (Helix helix : helices) { ArrayList thisHelixAxisHeads = new ArrayList(); ArrayList thisHelixAxisTails = new ArrayList(); for (int r = 0; r < helix.residues.size()-3; r ++) // should be a sorted AL { // Take line from Ca_i to Ca_i+2 // and line from Ca_i+1 to Ca_i+3 // Line between the midpoints of those two lines points in // the direction of a local axis vector. // Find the requisite 4 Ca's Residue[] res = new Residue[4]; res[0] = helix.residues.get(r); for (int i = 0; i < 3; i ++) if (res[i].getNext(model) != null) res[i+1] = res[i].getNext(model); AtomState[] cas = new AtomState[4]; for (int i = 0; i < 4; i ++) if (res[i] != null) { try { cas[i] = state.get(res[i].getAtom(" CA ")); } catch ( driftwood.moldb2.AtomException ae) { System.err.println("Can't find CA in res "+res[i]); } } int numValidCas = 0; for (int i = 0; i < cas.length; i ++) if (cas[i] != null) numValidCas ++; if (numValidCas == 4) { // Calculate the axis Triple midpoint0to2 = new Triple().likeMidpoint( cas[0], cas[2]); Triple midpoint1to3 = new Triple().likeMidpoint( cas[1], cas[3]); Triple axisDir = new Triple().likeVector( midpoint0to2, midpoint1to3); Triple axisHead = axisDir.unit().mult(2).add(midpoint0to2); Triple axisTail = midpoint0to2; // can change to midpoint // of midpoints later... // Add the axis to this helix thisHelixAxisHeads.add(axisHead); thisHelixAxisTails.add(axisTail); } else { System.err.println("Wrong number Cas for this helical axis!"); System.err.println("Expected 4 but got "+numValidCas+"..."); } } // Finish by giving a list of axes to this helix helix.axisTails = thisHelixAxisTails; helix.axisHeads = thisHelixAxisHeads; if (verbose) { System.err.println(helix.axisTails.size()+" axis tails and "+ helix.axisHeads.size()+" axis heads in "+helix); System.err.println("Residues:"); for (int r = 0; r < helix.residues.size(); r ++) System.err.println(" "+helix.residues.get(r)); System.err.println("First residue: "+helix.getRes("first")); System.err.println("Last residue: "+helix.getRes("last")); System.err.println(); } }//for(each Helix in helices) } //}}} //{{{ smoothAxes //############################################################################## public void smoothAxes() { /** * Smooths the local helical axes for each set of 4 Ca's in each Helix * made in findAxes by averaging the direction of each with that of its * previous and next neighbors (if they exist, i.e. we aren't on the end * of the helix). * Goal: Generate a direction that is robust to weirdnesses in the local * geometry (e.g. helix turning into beta or something) but does reflect * subtle local changes in helical direction. */ for (Helix helix : helices) { for (int i = 0; i < helix.axisHeads.size(); i ++) { // Starting axis tail & head Triple tail = helix.axisTails.get(i); Triple head = helix.axisHeads.get(i); // Get adjacent residues' 4 Ca local axis heads and tails // if applicable ArrayList adjacTails = new ArrayList(); ArrayList adjacHeads = new ArrayList(); adjacTails.add(new Triple(tail)); // put in same AL b/c we'll adjacHeads.add(new Triple(head)); // avg all its contents later if (i > 0) { adjacTails.add(new Triple(helix.axisTails.get(i-1))); adjacHeads.add(new Triple(helix.axisHeads.get(i-1))); } if (i < helix.axisHeads.size()-1) { adjacTails.add(new Triple(helix.axisTails.get(i+1))); adjacHeads.add(new Triple(helix.axisHeads.get(i+1))); } // Translate to origin and average orientation with 0, 1, or 2 // adjacent axes, depending on if they exist Triple newHead = new Triple(); double x = 0, y = 0, z = 0; if (adjacTails.size() > 1 && adjacHeads.size() > 1) { for (int a = 0; a < adjacHeads.size(); a ++) { Triple adjacTail = adjacTails.get(a); Triple adjacHead = adjacHeads.get(a); Triple adjacHeadAtOrig = new Triple( adjacHead.getX()-adjacTail.getX(), adjacHead.getY()-adjacTail.getY(), adjacHead.getZ()-adjacTail.getZ()); x += adjacHeadAtOrig.getX(); y += adjacHeadAtOrig.getY(); z += adjacHeadAtOrig.getZ(); } // Average orientation newHead = new Triple(x/adjacHeads.size(), y/adjacHeads.size(), z/adjacHeads.size()); // Translate back to the helix newHead.add(tail); } // else if no adjacent residues in helix with axes, do nothing // to this local axis // Leave axisTails.get(i) alone, but update axisHeads.get(i) helix.axisHeads.set(i, newHead); } }//for(each Helix in helices) } //}}} //{{{ findNcaps //############################################################################## public void findNcaps(Model model, ModelState state) /** * We just assume the first residue in a helix is the Ncap. * This is a *very simple* Ncap-finding algorithm! * * Can alter later to incorporate Ca position relative to cylinder of * helix as in original RLab helix cap paper */ { for (Helix helix : helices) { // Find the Ncaps if (helix.ncap != null) continue; else { String hbondTo = ncapMakesHb(helix.getRes("first"), model, state); if (onlyHbNcaps && !hbondTo.equals("i+2") && !hbondTo.equals("i+3")) helix.ncap = null; else { helix.ncap = new Ncap(helix.getRes("first")); if (hbondTo.equals("i+2")) helix.ncap.hbType = "i+2"; if (hbondTo.equals("i+3")) helix.ncap.hbType = "i+3"; } } if (helix.ncap != null) { // Calculate "backrub-like" distances & angles for each Ncap //if (onlyHbNcaps) helix.setNcapDistances(model, state, verbose); helix.setNcapAngles(model, state); // Set phi, psi for Ncap i, i+1, and i-1 residues helix.setNcapPhiPsis(model, state); // Set "sc length" for Ncap & N3 helix.setNcapScLengths(model); // Set "alpha" or "3-10" at N-cap helix.setTypeAtNcap(model, state, verbose); } } } //}}} //{{{ ncapMakesHb //############################################################################## public String ncapMakesHb(Residue res, Model model, ModelState state) /** * This is a simple geometric routine to determine whether a putative Ncap * residue is a Ser/Thr/Asn/Asp and makes an i+2 or i+3 Hbond or not. * Uses cutoff of 2.9A to determine whether an Hbond is there or not, which * is something we could obviously alter later, but it seems reasonable. */ { try { Residue res2 = res.getNext(model).getNext(model); Residue res3 = res2.getNext(model); Triple likeH2 = new Triple(state.get(res2.getAtom(" H "))); Triple likeH3 = new Triple(state.get(res3.getAtom(" H "))); // Ser if (res.getName().equals("SER")) { Triple likeOG = new Triple(state.get(res.getAtom(" OG "))); double dist2 = Triple.distance(likeOG, likeH2); double dist3 = Triple.distance(likeOG, likeH3); if (verbose) System.err.println("N-cap "+res+" makes an Hb with distance " +df.format(dist2)+" or "+df.format(dist3)); if (dist2 < 2.9 && dist2 < dist3) return "i+2"; if (dist3 < 2.9 && dist3 < dist2) return "i+3"; } // Thr if (res.getName().equals("THR")) { Triple likeOG1 = new Triple(state.get(res.getAtom(" OG1"))); double dist2 = Triple.distance(likeOG1, likeH2); double dist3 = Triple.distance(likeOG1, likeH3); if (verbose) System.err.println("N-cap "+res+" makes an Hb with distance " +df.format(dist2)+" or "+df.format(dist3)); if (dist2 < 2.9 && dist2 < dist3) return "i+2"; if (dist3 < 2.9 && dist3 < dist2) return "i+3"; } // Asn if (res.getName().equals("ASN")) { Triple likeOD1 = new Triple(state.get(res.getAtom(" OD1"))); double dist2 = Triple.distance(likeOD1, likeH2); double dist3 = Triple.distance(likeOD1, likeH3); if (verbose) System.err.println("N-cap "+res+" makes an Hb with distance " +df.format(dist2)+" or "+df.format(dist3)); if (dist2 < 2.9 && dist2 < dist3) return "i+2"; if (dist3 < 2.9 && dist3 < dist2) return "i+3"; } // Asp if (res.getName().equals("ASP")) { Triple likeOD1 = new Triple(state.get(res.getAtom(" OD1"))); double od1Dist2 = Triple.distance(likeOD1, likeH2); double od1Dist3 = Triple.distance(likeOD1, likeH3); Triple likeOD2 = new Triple(state.get(res.getAtom(" OD2"))); double od2Dist2 = Triple.distance(likeOD2, likeH2); double od2Dist3 = Triple.distance(likeOD2, likeH3); if (verbose) System.err.println("N-cap "+res+" makes an Hb with distance " +df.format(od1Dist2)+", "+df.format(od1Dist3)+", " +df.format(od2Dist2)+", or "+df.format(od2Dist3)); if ((od1Dist2 < 2.9 && od1Dist2 < od1Dist3 && od1Dist2 < od2Dist3) || (od2Dist2 < 2.9 && od2Dist2 < od1Dist3 && od2Dist2 < od2Dist3)) return "i+2"; if ((od1Dist3 < 2.9 && od1Dist3 < od1Dist2 && od1Dist3 < od2Dist2) || (od2Dist3 < 2.9 && od2Dist3 < od1Dist2 && od2Dist3 < od2Dist2)) return "i+3"; } return ""; } catch (AtomException ae) { System.err.println("Problem figuring out if "+res+" is an Asn/Asp/Ser/Thr"+ " whose sc Hbonds to i+2 or i+3 mc and is therefore an Ncap..."); return ""; } } //}}} //{{{ sketchHbonds //############################################################################## void sketchHbonds(PrintStream out, Collection peptides, ModelState state) { DecimalFormat df = new DecimalFormat("0.0###"); out.println("@group {peptides & hbonds}"); out.println("@balllist {peptides} radius= 0.1 color= green"); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(pep.isHelix) //Beta) out.println("{"+pep+"} r=0.3 "+pep.midpoint.format(df)); else out.println("{"+pep+"} "+pep.midpoint.format(df)); } out.println("@vectorlist {N hbonds} color= sky"); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(pep.hbondN != null) { try { AtomState h = state.get(pep.nRes.getAtom(" H ")); AtomState o = state.get(pep.hbondN.cRes.getAtom(" O ")); out.println("{"+pep+"}P "+h.format(df)); out.println("{"+pep.hbondN+"} "+o.format(df)); } catch(AtomException ex) {} } } out.println("@vectorlist {O hbonds} color= red"); for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(pep.hbondO != null) { try { AtomState o = state.get(pep.cRes.getAtom(" O ")); AtomState h = state.get(pep.hbondO.nRes.getAtom(" H ")); out.println("{"+pep+"}P "+o.format(df)); out.println("{"+pep.hbondO+"} "+h.format(df)); } catch(AtomException ex) {} } } } //}}} //{{{ sketchNcaps //############################################################################## void sketchNcaps(PrintStream out, ModelState state) { DecimalFormat df = new DecimalFormat("0.0###"); out.println("@group {ncaps}"); out.println("@balllist {ncaps} radius= 0.3 color= hotpink"); for (Helix helix : helices) { try { if (helix.ncap != null) { AtomState ncapCa = state.get(helix.ncap.res.getAtom(" CA ")); out.println("{helix '"+helix.toString()+"' ncap} "+ df.format(ncapCa.getX())+" "+ df.format(ncapCa.getY())+" "+ df.format(ncapCa.getZ()) ); } } catch (driftwood.moldb2.AtomException ae) { System.err.println("Can't find atom ' CA ' in helix "+helix); } } out.println("@vectorlist {ncap normals} color= hotpink"); for (Helix helix : helices) { if (helix.ncap != null && helix.ncap.normalTail != null && helix.ncap.normalHead != null) { out.println("{helix '"+helix.toString()+"' ncap normal tail}P "+ df.format(helix.ncap.normalTail.getX())+" "+ df.format(helix.ncap.normalTail.getY())+" "+ df.format(helix.ncap.normalTail.getZ()) ); out.println("{helix '"+helix.toString()+"' ncap normal head}P "+ df.format(helix.ncap.normalHead.getX())+" "+ df.format(helix.ncap.normalHead.getY())+" "+ df.format(helix.ncap.normalHead.getZ()) ); } } } //}}} //{{{ sketchAxes //############################################################################## void sketchAxes(PrintStream out) { DecimalFormat df = new DecimalFormat("0.0###"); String title = ""; // default if (smoothAxes) title = "smoothed "; out.println("@group {"+title+"helix axes}"); out.println("@vectorlist {"+title+"helix axes} color= peach"); for (Helix helix : helices) { if (helix.axisHeads != null && helix.axisTails != null) { for (int i = 0; i < helix.axisHeads.size(); i++) { // There should be the same number of entries in // axisHeads and axisTails, so this should be OK // to do out.println("{helix ("+helix.toString()+")"+ " res"+((int)i+1)+"-"+((int)i+2)+" "+title+ "axis tail}P "+ df.format(helix.axisTails.get(i).getX())+" "+ df.format(helix.axisTails.get(i).getY())+" "+ df.format(helix.axisTails.get(i).getZ()) ); out.println("{helix ("+helix.toString()+")"+ " res"+((int)i+1)+"-"+((int)i+2)+" "+title+ "axis head} "+ df.format(helix.axisHeads.get(i).getX())+" "+ df.format(helix.axisHeads.get(i).getY())+" "+ df.format(helix.axisHeads.get(i).getZ()) ); } } } } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { // Make helices File file = new File(filename); LineNumberReader in = new LineNumberReader(new FileReader(file)); PdbReader pdbReader = new PdbReader(); CoordinateFile cf = pdbReader.read(in); Model m = cf.getFirstModel(); ModelState state = m.getState(); processModel(cf.getIdCode(), m, state); // Print output if (doPrint) { if (verbose) printHelices(); printNcapAngles(); } } public static void main(String[] args) { HelixBuilder mainprog = new HelixBuilder(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ printHelices, printNcapAngles //############################################################################## public void printHelices() { // Only printing this if verbose... System.err.println("\nTotal number helices in "+filename+": "+helices.size()+"\n"); for (Helix helix : helices) { System.err.println("** "+helix.toString()); System.err.println(" "+helix.residues.size()+" residues"); for (Residue residue : helix.residues) System.err.println(" "+residue); if (doNcaps) { if (helix.ncap != null) { System.err.println(" ncap: "+helix.ncap); if (helix.ncap.planeNormalAngle != Double.NaN) System.err.println( " ncap plane normal angle: "+df.format(helix.ncap.planeNormalAngle)); System.err.println(" "+helix.typeAtNcap+" at ncap"); } } System.err.println(); } } public void printNcapAngles() { DecimalFormat df = new DecimalFormat("#.###"); if (doNcaps) { System.out.print("file,helix,ncap,"+ "ca(i-1)_ca(i)_ca(i+1)-local_helix_axis_angle,ca(i)_cb(i)-local_helix_axis_angle,"+ "i-1_phi,i-1_psi,i_phi,i_psi,i+1_phi,i+1_psi,"); //if (onlyHbNcaps) System.out.print("ncapHbType,"+ "distNcapScToN2H,distNcapScToN3H,distNcapCaToN3Ca,distNprimeCaToN3Ca,"); System.out.println("ncapNumChis,n3NumChis,helixTypeAtNcap,ncapResType"); for (Helix helix : helices) { if (helix.ncap != null) { System.out.print(filename+","+helix+","+helix.ncap+","); if (Double.isNaN(helix.ncap.planeNormalAngle)) System.out.print("__?__,"); else System.out.print(df.format(helix.ncap.planeNormalAngle)+","); if (Double.isNaN(helix.ncap.caCbAngle)) System.out.print("__?__,"); else System.out.print(df.format(helix.ncap.caCbAngle)+","); if (Double.isNaN(helix.ncap.nprimePhi)) System.out.print("__?__,"); else System.out.print(df.format(helix.ncap.nprimePhi)+","); if (Double.isNaN(helix.ncap.nprimePsi)) System.out.print("__?__,"); else System.out.print(df.format(helix.ncap.nprimePsi)+","); if (Double.isNaN(helix.ncap.phi)) System.out.print("__?__,"); else System.out.print(df.format(helix.ncap.phi)+","); if (Double.isNaN(helix.ncap.psi)) System.out.print("__?__,"); else System.out.print(df.format(helix.ncap.psi)+","); if (Double.isNaN(helix.ncap.n1Phi)) System.out.print("__?__,"); else System.out.print(df.format(helix.ncap.n1Phi)+","); if (Double.isNaN(helix.ncap.n1Psi)) System.out.print("__?__,"); else System.out.print(df.format(helix.ncap.n1Psi)+","); //if (onlyHbNcaps) //{ System.out.print(helix.ncap.hbType+","); if (Double.isNaN(helix.ncap.distNcapScToN2H)) System.out.print("__?__,"); else System.out.print(df.format(helix.ncap.distNcapScToN2H)+","); if (Double.isNaN(helix.ncap.distNcapScToN3H)) System.out.print("__?__,"); else System.out.print(df.format(helix.ncap.distNcapScToN3H)+","); if (Double.isNaN(helix.ncap.distNcapCaToN3Ca)) System.out.print("__?__,"); else System.out.print(df.format(helix.ncap.distNcapCaToN3Ca)+","); if (Double.isNaN(helix.ncap.distNprimeCaToN3Ca)) System.out.print("__?__,"); else System.out.print(df.format(helix.ncap.distNprimeCaToN3Ca)+","); //} if (helix.ncap.ncapNumChis == 999) System.out.print("__?__,"); else System.out.print(helix.ncap.ncapNumChis+","); if (helix.ncap.n3NumChis == 999) System.out.print("__?__,"); else System.out.print(helix.ncap.n3NumChis+","); System.out.print(helix.typeAtNcap+","); System.out.print(helix.ncap.res.getName()+","); System.out.println(); } //else // helix.ncap == null // if (verbose && onlyHbNcaps) // System.err.println(filename+","+helix+",no_hb_ncap,,,,"); } } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("HelixBuilder.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'HelixBuilder.help' ***\n"); else { try { streamcopy(is, System.err); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.HelixBuilder"); System.err.println("Copyright (C) 2007 by Daniel Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if (filename == null) filename = arg; else System.out.println("Didn't need "+arg+"; already have file "+filename); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-kin")) { doKin = true; doPrint = false; } else if(flag.equals("-print")) { doPrint = true; } else if(flag.equals("-ncaps")) { doNcaps = true; } else if(flag.equals("-onlyhbncaps")) { doNcaps = true; onlyHbNcaps = true; } else if(flag.equals("-smoothaxes")) { smoothAxes = true; if (param != null) smoothAxesTimes = Integer.parseInt(param); else smoothAxesTimes = 1; } else if(flag.equals("-v") || flag.equals("-verbose")) { verbose = true; } else if(flag.equals("-append")) { append = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/PeptideFlipFinder.java0000644000000000000000000002356311531212724024076 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * PeptideFlipFinder has not yet been documented. * *

Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
Begun on Mon Jan 3 15:44:04 EST 2005 */ public class PeptideFlipFinder //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## ArrayList inputList = new ArrayList(); //}}} //{{{ Constructor(s) //############################################################################## public PeptideFlipFinder() { super(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ findPeptideFlips //############################################################################## /** * Finds peptide flips defined as alternate conformations / states, and returns those residues. * A flip has C--O vectors offset by at least 90 degrees. */ public Collection findPeptideFlips(Model model, ModelState[] states) { Collection flips = new ArrayList(); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); Atom c = r.getAtom(" C "); Atom o = r.getAtom(" O "); if(c == null || o == null) continue; // Calculate O--C vector for each state ArrayList vectors = new ArrayList(); for(int i = 0; i < states.length; i++) { // In A/B cases, _ will probably be missing states! try { vectors.add(new Triple().like( states[i].get(o) ).sub( states[i].get(c) )); } catch(AtomException ex) {} } // Compare all pairs of vectors in this residue COMPARE: for(int i = 0; i < vectors.size(); i++) { for(int j = i+1; j < vectors.size(); j++) { if(((Triple)vectors.get(i)).angle((Triple)vectors.get(j)) >= 90.0) { flips.add(r); break COMPARE; } } } } return flips; } //}}} //{{{ findPeptideFlips2 //############################################################################## /** * Finds peptide flips defined as alternate conformations / states, and returns those residues. * A flip has oxygens rotated at least 90 degrees around the Ca--Ca vector. */ public Collection findPeptideFlips2(Model model, ModelState[] states) { Collection flips = new ArrayList(); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); Residue r2 = r.getNext(model); if(r2 == null) continue; // Average pos of first CA Triple ca1 = new Triple(); int caCount = 0; for(int i = 0; i < states.length; i++) { try { ca1.add( states[i].get(r.getAtom(" CA ")) ); caCount++; } catch(AtomException ex) {} } if(caCount == 0) continue; ca1.div(caCount); // Average pos of second CA Triple ca2 = new Triple(); caCount = 0; for(int i = 0; i < states.length; i++) { try { ca2.add( states[i].get(r2.getAtom(" CA ")) ); caCount++; } catch(AtomException ex) {} } if(caCount == 0) continue; ca2.div(caCount); // Find O's for each state ArrayList ohs = new ArrayList(); for(int i = 0; i < states.length; i++) { // In A/B cases, _ will probably be missing states! try { ohs.add( states[i].get(r.getAtom(" O ")) ); } catch(AtomException ex) {} } // Compare all pairs of O's in this residue around Ca--Ca axis COMPARE: for(int i = 0; i < ohs.size(); i++) { for(int j = i+1; j < ohs.size(); j++) { Tuple3 oi = (Tuple3) ohs.get(i); Tuple3 oj = (Tuple3) ohs.get(j); if(Math.abs(Triple.dihedral(oi, ca1, ca2, oj)) >= 90.0) { flips.add(r); break COMPARE; } } } } return flips; } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { PdbReader reader = new PdbReader(); for(Iterator iter = inputList.iterator(); iter.hasNext(); ) { String fileName = (String) iter.next(); try { CoordinateFile cf = reader.read(new File(fileName)); Model model = cf.getFirstModel(); Collection stateClcn = model.getStates().values(); ModelState[] states = (ModelState[]) stateClcn.toArray(new ModelState[stateClcn.size()]); Collection flipRes = findPeptideFlips(model, states); for(Iterator fi = flipRes.iterator(); fi.hasNext(); ) { Residue r = (Residue) fi.next(); System.out.println(fileName+" : "+r); } } catch(IOException ex) { ex.printStackTrace(); System.err.println("Error reading "+fileName); } } } public static void main(String[] args) { PeptideFlipFinder mainprog = new PeptideFlipFinder(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("PeptideFlipFinder.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'PeptideFlipFinder.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.PeptideFlipFinder"); System.err.println("Copyright (C) 2005 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here inputList.add(arg); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/TightTurn.java0000644000000000000000000001745311531212724022472 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * TightTurn is a tight turn (i.e. beta turn), * defined as four residues in-plane, with the first * residue's CO H-bonded to the fourth residue's NH. * *

Copyright (C) 2010 by Daniel Keedy. All rights reserved. *
Begun on Tue Aug 10 2010 */ public class TightTurn extends Turn { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## public Residue r0; public double phi0, psi0; //}}} //{{{ Constructor(s) //############################################################################## /** * @param r0 the first of four residues in the tight turn, with its mainchain * CO oxygen in an H-bond to the fourth residue @ @param r3 the fourth of four residue in the tight turn, with its mainchain * NH hydrogen in an H-bond to the first residue */ public TightTurn(Model model, ModelState state, Residue r0, Residue r1, Residue r2, Residue r3) throws AtomException, ResidueException { this.model = model; this.state = state; this.r0 = r0; this.r1 = r1; this.r2 = r2; this.r3 = r3; calcHbondEnergies(); calcDihedral(); calcPhiPsis(); calcHighB(); decideType(); } //}}} //{{{ calcHbondEnergies //############################################################################## /** * Calculates C=O .. H-N H-bond "energies" based on the criteria defined in * W. Kabsch and C. Sander (1983) Biopolymers, 22:2577. * The basic idea is that the H-bond is accepted if * E = 0.42*0.20*332*(1/rON + 1/rCH - 1/rOH - 1/rCN) is less than -0.5 kcal/mol. * Atom-atom distances are in Angstroms and E is in kcal/mol. * Ideal alignment allows distances up to 5.2 A (O to N); * ideal distance allows angles up to 63 degrees. */ protected void calcHbondEnergies() throws AtomException, ResidueException { Residue r4 = r3.getNext(model); if(r4 == null) throw new ResidueException( "Need residue after "+r3+"to complete turn!"); this.hbEnergy0to3 = calcHbondEnergy(r0, r3); this.hbEnergy0to4 = calcHbondEnergy(r0, r4); } //}}} //{{{ calcHbondEnergy //############################################################################## /** * Calculates C=O .. H-N H-bond "energy" based on the criteria defined in * W. Kabsch and C. Sander (1983) Biopolymers, 22:2577. * The basic idea is that the H-bond is accepted if * E = 0.42*0.20*332*(1/rON + 1/rCH - 1/rOH - 1/rCN) is less than -0.5 kcal/mol. * Atom-atom distances are in Angstroms and E is in kcal/mol. * Ideal alignment allows distances up to 5.2 A (O to N); * ideal distance allows angles up to 63 degrees. * @param r the Residue containing the C=O * @param s the Residue containing the N-H */ protected double calcHbondEnergy(Residue r, Residue s) throws AtomException { Atom c = r.getAtom(" C "); Atom o = r.getAtom(" O "); Atom n = s.getAtom(" N "); Atom h = s.getAtom(" H "); AtomState cs = state.get(c); AtomState os = state.get(o); AtomState ns = state.get(n); AtomState hs = state.get(h); double rON = os.distance(ns); double rCH = cs.distance(hs); double rOH = os.distance(hs); double rCN = cs.distance(ns); return 27.9*(1/rON + 1/rCH - 1/rOH - 1/rCN); } //}}} //{{{ calcDihedral //############################################################################## /** * Calculates a dihedral from the four "joint" atoms comprising the turn. * In the case of tight turns, they are four C-alphas. */ protected void calcDihedral() throws AtomException { Atom ca0 = r0.getAtom(" CA "); Atom ca1 = r1.getAtom(" CA "); Atom ca2 = r2.getAtom(" CA "); Atom ca3 = r3.getAtom(" CA "); if(ca0 == null || ca1 == null || ca2 == null || ca3 == null) throw new AtomException("Can't find all 4 C-alphas!"); AtomState ca0s = state.get(ca0); AtomState ca1s = state.get(ca1); AtomState ca2s = state.get(ca2); AtomState ca3s = state.get(ca3); dihedral = Triple.dihedral(ca0s, ca1s, ca2s, ca3s); } //}}} //{{{ calcPhiPsis //############################################################################## /** * Calculates phi,psi dihedrals for the residues comprising this turn. */ protected void calcPhiPsis() throws AtomException, ResidueException { phi0 = AminoAcid.getPhi(model, r0, state); psi0 = AminoAcid.getPsi(model, r0, state); phi1 = AminoAcid.getPhi(model, r1, state); psi1 = AminoAcid.getPsi(model, r1, state); phi2 = AminoAcid.getPhi(model, r2, state); psi2 = AminoAcid.getPsi(model, r2, state); phi3 = AminoAcid.getPhi(model, r3, state); psi3 = AminoAcid.getPsi(model, r3, state); } //}}} //{{{ calcHighB //############################################################################## /** * Simply stores the highest atomic B-factor for the four residues * comprising the turn. */ protected void calcHighB() throws AtomException { highB = Double.NEGATIVE_INFINITY; Residue[] residues = new Residue[] {r0, r1, r2, r3}; for(Residue r : residues) { for(Iterator iter = r.getAtoms().iterator(); iter.hasNext(); ) { Atom a = (Atom) iter.next(); AtomState as = state.get(a); if(as.getTempFactor() > highB) highB = as.getTempFactor(); } } } //}}} //{{{ decideType //############################################################################## /** * Prepares atoms to geometrically check turn "type". */ protected void decideType() throws AtomException { // C-alphas for plane Atom ca0 = r0.getAtom(" CA "); Atom ca1 = r1.getAtom(" CA "); Atom ca2 = r2.getAtom(" CA "); Atom ca3 = r3.getAtom(" CA "); if(ca0 == null || ca1 == null || ca2 == null || ca3 == null) throw new AtomException("Can't find all atoms needed to determine type!"); AtomState ca0s = state.get(ca0); AtomState ca1s = state.get(ca1); AtomState ca2s = state.get(ca2); AtomState ca3s = state.get(ca3); Collection points = new ArrayList(); points.add(ca0s); points.add(ca1s); points.add(ca2s); points.add(ca3s); Triple check = new Triple().likeNormal(ca0s, ca1s, ca2s); // Carbonyls Atom c0 = r0.getAtom(" C "); Atom o0 = r0.getAtom(" O "); Atom c1 = r1.getAtom(" C "); Atom o1 = r1.getAtom(" O "); AtomState c0s = state.get(c0); AtomState o0s = state.get(o0); AtomState c1s = state.get(c1); AtomState o1s = state.get(o1); if(c0 == null || o0 == null || c1 == null || o1 == null) throw new AtomException("Can't find all atoms needed to determine type!"); Triple co0 = new Triple().likeVector(c0s, o0s); Triple co1 = new Triple().likeVector(c1s, o1s); pickType(co0, co1, points, check); // parent method in Turn } //}}} //{{{ toString //############################################################################## public String toString() { return "type "+type+" tight turn from "+r0+" to "+r3; } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/SheetAxes3.java0000644000000000000000000000670711531212724022516 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * SheetAxes3 is a data structure for describing a local * (residue specific) Cartesian coordinate system on a beta sheet, * relative to the strand direction and sheet normal vectors. * It works on a pair of planes, but (difference from SheetAxes2) it deals with * along- instead of across-strand planes. * *

Known bugs/problems: *

    *
  • Need a better H-bond potential: this one lets the C and N interact well
  • *
  • For cross-strand neighbors, along and across numbers don't correlate b/c * the parallel / antiparallel relationship should affect the sign of the angle!
  • *
* *

Copyright (C) 2007 by Daniel A. Keedy. All rights reserved. */ public class SheetAxes3 //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## /** The unit vector sum of the "concavified" normal1, normal2. Kinda * temporary -- i.e., not part of the coord system defined here. */ public Triple normal; /** The pseudo-X axis, roughly along the strand from N-term to C-term. */ public Triple strand; /** The pseudo-Y axis, roughly cross-strand. */ public Triple cross; /** The pseudo-Z axis. Equals along x cross. Its up-or-down direction is * irrelevant since CaCb and the normals' sum will be defined in the same * coord system, i.e. relative to zAxis, so comparisons btw them are valid. */ public Triple zAxis; /** Angular deviation of the CaCb vector from the along-strand concavity vector, * in degrees. * This angle indicates whether CaCb points toward the concave or convex side * of the sheet i.t.o. the Nward-plane-centroid-to-Cward-plane-centroid axis * (i.e. the strands could be perfectly lined up from a profile view but could * themselves "bend"). * > 90: convex, < 90: concave. */ public double cacb_alongConcavity; //}}} //{{{ Constructor(s) //############################################################################## public SheetAxes3(Triple normalSum, Triple btwCentroids, Tuple3 closeToZAxis, Tuple3 fromCaToCb) { super(); this.normal = normalSum; // kinda temporary this.strand = new Triple(btwCentroids).unit(); this.cross = new Triple().likeCross(closeToZAxis, strand).unit(); this.zAxis = new Triple().likeCross(strand, cross).unit(); // similar to closeToZAxis // Note: working in 2D pseudo-XZ plane from here on! double normalDotStrand = strand.dot(normal); double normalDotZ = zAxis.dot(normal); Triple normalInXZ = new Triple(normalDotStrand, 0, normalDotZ); // ^^ the along-strand "concavity vector" double cacbDotStrand = strand.dot(fromCaToCb); double cacbDotZ = zAxis.dot(fromCaToCb); Triple cacbInXZ = new Triple(cacbDotStrand, 0, cacbDotZ); cacb_alongConcavity = normalInXZ.angle(cacbInXZ); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/BetaArom.java0000644000000000000000000003634511531212724022235 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * BetaArom defines an aromatic residue in beta sheet and the * opposite residue on the adjacent strand (in the direction of the aromatic's CO). * The aromatic is "hovering" over the opposite residue, which may be causing the * aromatic to backrub forward or backward if it's a Gly or something else, respectively. * The strands can be either anti-parallel or (less common?) parallel. * SheetBuilder makes an array of these if given the right flag (-betaarom). * The class derives from DAK's Helix, which derives from IWD's Peptide. * *

Copyright (C) 2007 by Daniel Keedy. All rights reserved. *
Begun on Tue Mar 30 10:45:56 EST 2004 */ public class BetaArom //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## /** Name of the structure this sheet is in */ public String modelName; /** Model this sheet is in */ public Model model; /** The aromatic residue which may be backrubbed */ public Residue aromRes; /** The residue on the opposite strand which may be causing the aromatic * to backrub */ public Residue oppRes; /** Whether or not opposite strand is parallel to aromatic strand */ boolean parallel; /** Chi1 & chi2 of arom(i) */ public double chi1, chi2; /** Max B-factor for heavy atoms in aromatic residue (mc+sc) */ public double aromMaxB; /** Max B-factor for heavy atoms in opposite residue (mc+sc) */ public double oppMaxB; /** Number of fully beta residues (i.e. both peptides of which the residue * is a part must be beta according to SheetBuilder) on each end of arom & * opp residues */ public int aromNumBetaResN, aromNumBetaResC, oppNumBetaResN, oppNumBetaResC; /** If the aromatic strand is an edge strand */ public boolean aromEdge; /** If the opposite strand (in the direction of the aromatic's CO) is an edge strand */ public boolean oppEdge; /** Distance from Ca(i,arom)-Ca(i,opp) */ public double cacaDist; /** Angle from Cb(i,arom)-Ca(i,arom)-Ca(i,opp) */ public double cbcacaAngle; /** Beta "twist" of 4 Calphas N-ward of 2 central residues (inclusive) */ public double nwardTwist; /** Beta "twist" of 4 Calphas C-ward of 2 central residues (inclusive) */ public double cwardTwist; /** Beta "twist" of 2 Calphas N-ward of aromatic (inclusive) * and 2 Calphas C-ward of opposite (inclusive) */ public double nwardCrossTwist; /** Beta "twist" of 2 Calphas C-ward of aromatic (inclusive) * and 2 Calphas N-ward of opposite (inclusive) */ public double cwardCrossTwist; /** "Fray" of strands: how much they're pulling apart, as viewed from Ca(arom)->Ca(opp) */ public double fray; /** "Tilt": angle between Ca(arom)(i-1,i,i+1)-Ca(opp)(i-1,i,i+1): /...\ or \.../ */ public double tilt; /** Aromatic strand simple angle from Ca(i-1)-Ca(i)-Ca(i+1) */ public double aromCaAngle; /** Opposite strand simple angle from Ca(i-1)-Ca(i)-Ca(i+1) */ public double oppCaAngle; /** Phi,psi of arom(i-1,i,i+1) */ public double aromPrevPhi, aromPrevPsi, aromPhi, aromPsi, aromNextPhi, aromNextPsi; /** Tau (N-Ca-C) angle of aromatic, aromatic i-1, & aromatic i+1 */ public double aromPrevTau, aromTau, aromNextTau; /** Angle from Ca(i,arom)-Cb(i,arom)-Cg(i,arom) */ public double cgcbcaAngle; //}}} //{{{ Constructor(s) //############################################################################## public BetaArom(Residue aromRes, Residue oppRes, boolean parallel, Collection peptides, Model model, String modelName) { super(); this.modelName = modelName; this.model = model; this.aromRes = aromRes; this.oppRes = oppRes; this.parallel = parallel; this.aromMaxB = maxB(aromRes, model); this.oppMaxB = maxB(oppRes , model); this.aromNumBetaResN = numNward(aromRes, model, peptides); this.aromNumBetaResC = numCward(aromRes, model, peptides); this.oppNumBetaResN = numNward(oppRes , model, peptides); this.oppNumBetaResC = numCward(oppRes , model, peptides); this.aromEdge = isEdgeStrand(aromRes, peptides); this.oppEdge = isEdgeStrand(oppRes , peptides); } //}}} //{{{ maxB //############################################################################## double maxB(Residue res, Model model) { double maxB = Double.NEGATIVE_INFINITY; ModelState state = model.getState(); for(Iterator iter = res.getAtoms().iterator(); iter.hasNext(); ) { try { Atom a = (Atom) iter.next(); AtomState as = state.get(a); double b = as.getTempFactor(); if(b > maxB) maxB = b; } catch(AtomException ex) { System.err.println("Error getting max B-factor for "+res); } } return maxB; } //}}} //{{{ num(N/C)ward, isBeta //############################################################################## /** * Determines number of residue N-ward in sequence of res * that are in the same beta strand. */ int numNward(Residue res, Model model, Collection peptides) { int numN = 0; boolean endOfStrand = false; Residue currRes = res; while(!endOfStrand) { if(currRes.getPrev(model) != null) { currRes = currRes.getPrev(model); if(!isBeta(currRes, model, peptides)) endOfStrand = true; else numN += 1; } else endOfStrand = true; } return numN; } /** * Determines number of residue C-ward in sequence of res * that are in the same beta strand. */ int numCward(Residue res, Model model, Collection peptides) { int numC = 0; boolean endOfStrand = false; Residue currRes = res; while(!endOfStrand) { if(currRes.getNext(model) != null) { currRes = currRes.getNext(model); if(!isBeta(currRes, model, peptides)) endOfStrand = true; else numC += 1; } else endOfStrand = true; } return numC; } /** * Decides res is beta if both the peptides containing it are beta. */ boolean isBeta(Residue res, Model model, Collection peptides) { Peptide nPep = null; // peptide N-ward to this residue; also contains this residue's N-H Peptide cPep = null; // peptide C-ward to this residue; also contains this residue's C=O for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(res.equals(pep.nRes)) nPep = pep; if(res.equals(pep.cRes)) cPep = pep; } if(nPep == null || cPep == null) return false; if(nPep.isBeta && cPep.isBeta) return true; return false; } //}}} //{{{ isEdgeStrand //############################################################################## /** * Determines whether or not the given beta residue is on an edge strand. * A backbone-backbone H-bond by either the exposed CO or NH * is basically enough to say it's not a true edge locally, * even though the H-bond recipient may itself not be a "strand". */ boolean isEdgeStrand(Residue res, Collection peptides) { Peptide nPep = null; // peptide N-ward to this residue; also contains this residue's N-H Peptide cPep = null; // peptide C-ward to this residue; also contains this residue's C=O for(Iterator iter = peptides.iterator(); iter.hasNext(); ) { Peptide pep = (Peptide) iter.next(); if(res.equals(pep.nRes)) nPep = pep; if(res.equals(pep.cRes)) cPep = pep; } if(nPep.hbondO != null || cPep.hbondN != null) return false; return true; // no bb-bb H-bond at all } //}}} //{{{ calcGeometry //############################################################################## public void calcGeometry() throws AtomException, NullPointerException { ModelState state = model.getState(); // Aromatic's Ca(i-1), Ca(i), Ca(i+1), and Cb(i) ArrayList aromCoords = new ArrayList(); aromCoords.add(state.get(aromRes.getPrev(model).getAtom(" CA "))); aromCoords.add(state.get(aromRes.getAtom(" CA "))); aromCoords.add(state.get(aromRes.getNext(model).getAtom(" CA "))); aromCoords.add(state.get(aromRes.getAtom(" CB "))); // Opposite residue's Ca(i-1), Ca(i), Ca(i+1), and Cb(i) ArrayList oppCoords = new ArrayList(); oppCoords.add(state.get(oppRes.getPrev(model).getAtom(" CA "))); oppCoords.add(state.get(oppRes.getAtom(" CA "))); oppCoords.add(state.get(oppRes.getNext(model).getAtom(" CA "))); if(oppRes.getName().equals("GLY")) oppCoords.add(null); else oppCoords.add(state.get(oppRes.getAtom(" CB "))); // Distance from Ca(i,arom)-Ca(i,opp) Triple caArom = state.get(aromRes.getAtom(" CA ")); Triple caOpp = state.get(oppRes.getAtom(" CA ")); cacaDist = Triple.distance(caArom, caOpp); // Ed's angle between Cb(arom)-Ca(arom)-Ca(opp) Triple cbArom = state.get(aromRes.getAtom(" CB ")); cbcacaAngle = Triple.angle(cbArom, caArom, caOpp); // Angle between Ca(i+1,arom)-Ca(i,arom)-Ca(i+1,arom) Triple caAromPlus1 = state.get(aromRes.getNext(model).getAtom(" CA ")); Triple caAromMinus1 = state.get(aromRes.getPrev(model).getAtom(" CA ")); aromCaAngle = Triple.angle(caAromPlus1, caArom, caAromMinus1); // Angle between Ca(i+1,opp)-Ca(i,opp)-Ca(i+1,opp) Triple caOppPlus1 = state.get(oppRes.getNext(model).getAtom(" CA ")); Triple caOppMinus1 = state.get(oppRes.getPrev(model).getAtom(" CA ")); oppCaAngle = Triple.angle(caOppPlus1, caOpp, caOppMinus1); // Initially assume anti-parallel for following dihedrals ... // Beta "twist" of 4 Calphas N-ward of 2 central residues (inclusive) // Dihedral from Ca(i-1,arom)-Ca(i,arom)-Ca(i,opp)-Ca(i+1,opp) nwardTwist = Triple.dihedral(caAromMinus1, caArom, caOpp, caOppPlus1); // Beta "twist" of 4 Calphas C-ward of 2 central residues (inclusive) // Dihedral from Ca(i+1,arom)-Ca(i,arom)-Ca(i,opp)-Ca(i-1,opp) cwardTwist = Triple.dihedral(caAromPlus1, caArom, caOpp, caOppMinus1); // Beta "twist" of 2 Calphas N-ward of aromatic (inclusive) // and 2 Calphas C-ward of opposite (inclusive) // Dihedral from Ca(i-1,arom)-Ca(i,arom)-Ca(i,opp)-Ca(i-1,opp) nwardCrossTwist = Triple.dihedral(caAromMinus1, caArom, caOpp, caOppMinus1); // Beta "twist" of 2 Calphas C-ward of aromatic (inclusive) // and 2 Calphas N-ward of opposite (inclusive) // Dihedral from Ca(i+1,arom)-Ca(i,arom)-Ca(i,opp)-Ca(i+1,opp) cwardCrossTwist = Triple.dihedral(caAromPlus1, caArom, caOpp, caOppPlus1); // ... but swap variable values if opposite strand reversed if(parallel) { double justasec; justasec = nwardTwist; nwardTwist = nwardCrossTwist; nwardCrossTwist = justasec; justasec = cwardTwist; cwardTwist = cwardCrossTwist; cwardCrossTwist = justasec; } // "Fray" of strands: how much they're pulling apart, as viewed from Ca(arom)->Ca(opp). // If the first term is high, the strand "pull apart" at one of the ends // However, some of that is because of different pleating (Ca-Ca-Ca angle) // in the two strands, so the second, correction term subtracts that out. // In other words, it's how much the strands would be pulling apart relative // to each other if their CaCaCa angles were dead equal. fray = Math.abs(cwardTwist - nwardTwist) - Math.abs(aromCaAngle - oppCaAngle); // "Tilt": angle between Ca(arom)(i-1,i,i+1) & Ca(opp)(i-1,i,i+1) planes, // i.e. /...\ or \.../ Triple normArom = new Triple().likeNormal(caAromMinus1, caArom, caAromPlus1); Triple normOpp = new Triple().likeNormal(caOppMinus1, caOpp, caOppPlus1); tilt = normArom.angle(normOpp); // Phi,psi of arom(i-1,i,i+1) Triple cAromPrevPrev = state.get(aromRes.getPrev(model).getPrev(model).getAtom(" C ")); Triple nAromPrev = state.get(aromRes.getPrev(model).getAtom(" N ")); Triple caAromPrev = state.get(aromRes.getPrev(model).getAtom(" CA ")); Triple cAromPrev = state.get(aromRes.getPrev(model).getAtom(" C ")); Triple nArom = state.get(aromRes.getAtom(" N ")); Triple cArom = state.get(aromRes.getAtom(" C ")); Triple nAromNext = state.get(aromRes.getNext(model).getAtom(" N ")); Triple caAromNext = state.get(aromRes.getNext(model).getAtom(" CA ")); Triple cAromNext = state.get(aromRes.getNext(model).getAtom(" C ")); Triple nAromNextNext = state.get(aromRes.getNext(model).getNext(model).getAtom(" N ")); aromPrevPhi = Triple.dihedral(cAromPrevPrev, nAromPrev , caAromPrev, cAromPrev ); aromPrevPsi = Triple.dihedral(nAromPrev , caAromPrev, cAromPrev , nArom ); aromPhi = Triple.dihedral(cAromPrev , nArom , caArom , cArom ); aromPsi = Triple.dihedral(nArom , caArom , cArom , nAromNext ); aromNextPhi = Triple.dihedral(cArom , nAromNext , caAromNext, cAromNext ); aromNextPsi = Triple.dihedral(nAromNext , caAromNext, cAromNext , nAromNextNext); // Chi1,chi2 of aromatic residue Triple cdArom = state.get(aromRes.getAtom(" CD1")); Triple cgArom = state.get(aromRes.getAtom(" CG ")); chi1 = Triple.dihedral(nArom , caArom, cbArom, cgArom); chi2 = Triple.dihedral(caArom, cbArom, cgArom, cdArom); // Tau angle of aromatic residue aromPrevTau = Triple.angle(nAromPrev, caAromPrev, cAromPrev); aromTau = Triple.angle(nArom, caArom, cArom ); aromNextTau = Triple.angle(nAromNext, caAromNext, cAromNext); // Angle between Cg(i,arom)-Cb(i,arom)-Ca(i,arom) cgcbcaAngle = Triple.angle(cgArom, cbArom, caArom); } //}}} //{{{ toString //############################################################################## public String toString() { return "aromatic "+aromRes+" across from "+oppRes+" from "+modelName; } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/SidechainMainchainSwapper.java0000644000000000000000000007510511571452342025607 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; import driftwood.moldb2.*; import driftwood.r3.*; import chiropraxis.mc.SubImpose; import molikin.logic.BallAndStickLogic; //}}} /** * SidechainMainchainSwapper finds places where two otherwise * similar models deviate, the sidechain of one performing a similar structural * role as the mainchain of the other. * * TODO: try all rotamers to get best possible scmc+mcsc rmsd * use SpatialBin somehow to make method more generic wrt aa type * separate out a "SidechainMainchainSwap" class -- goulash! * *

Begun on Mon Mar 1 2010 *

Copyright (C) 2010 by Daniel Keedy. All rights reserved. */ public class SidechainMainchainSwapper //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("0.0###"); DecimalFormat df2 = new DecimalFormat("0.0"); double[] sieves = new double[] { 1.00, 0.95, 0.90, 0.85, 0.80, 0.75 }; double mcRadius = Double.POSITIVE_INFINITY; //15; double scRadius = 5; static final String MC_PREV = "mainchain N-ward"; static final String MC_NEXT = "mainchain C-ward"; static final String SC = "sidechain"; //}}} //{{{ Variable definitions //############################################################################## String structIn1 = null, structIn2 = null; // straight from cmdline String title1 = null, title2 = null; // prettied up CoordinateFile coord1 = null, coord2 = null; BallAndStickLogic bsl = null; Model m1min = null; // globally accessible; min of swapped, not regular //}}} //{{{ Constructor(s) //############################################################################## public SidechainMainchainSwapper() { super(); } //}}} //{{{ compareModels //############################################################################## public void compareModels(Model m1, Model m2, Alignment align) { System.err.println( "mdl1\t"+(title1.length() > 7 ? "\t" : "")+ "mdl2\t"+(title2.length() > 7 ? "\t" : "")+ "rmsdglb\tres1\tres2\trmsdnrm\trmsdswp\tswapped"); globalKinemage(m2, align, "peach", "sky"); for(int i = 0; i < align.b.length; i++) { Residue r1 = (Residue) align.a[i]; Residue r2 = (Residue) align.b[i]; if(r1 != null && r2 != null) { if(r1.getName().equals("ARG") || r1.getName().equals("LYS") || r1.getName().equals("MET") || r1.getName().equals("GLN") || r1.getName().equals("GLU") || r1.getName().equals("ASN") || r1.getName().equals("ASP")) { double rmsd = compareResidues(r1, r2, m1, m2, align); if(!Double.isNaN(rmsd)) { // local kinemage using the global Calpha superposition that // produced the lowest local sidechain-mainchain-swapped rmsd, // which must also be less than the lowest non-swapped rmsd localSwapKinemage(r1, m1min, "white", "cyan", rmsd); } } } }//residue } //}}} //{{{ compareResidues //############################################################################## public double compareResidues(Residue r1, Residue r2, Model m1, Model m2, Alignment align) { double rmsdGlbMin = Double.POSITIVE_INFINITY; double rmsdLocNormMin = Double.POSITIVE_INFINITY; // regular mc-mc, mc-mc, sc-sc pairing double rmsdLocSwapMin = Double.POSITIVE_INFINITY; // 1 of 2 possible swapped pairings m1min = null; try { for(double sieve : sieves) { Model m1new = (Model) m1.clone(); // retain original coordinates // global Calpha superposition double rmsdGlb = globalSup(m1new, m2, align, sieve); if(rmsdGlb < rmsdGlbMin) rmsdGlbMin = rmsdGlb; // local Calpha co-centering, then local rmsds of sc/mc in various combinations double[] rmsdLocs = localCoCenter(r1, r2, m1new, m2); double rmsdLocNorm = rmsdLocs[0]; double rmsdLocSwap = Math.min(rmsdLocs[1], rmsdLocs[2]); if(rmsdLocNorm < rmsdLocNormMin) rmsdLocNormMin = rmsdLocNorm; if(rmsdLocSwap < rmsdLocSwapMin) { rmsdLocSwapMin = rmsdLocSwap; m1min = m1new; } }//sieve } catch(ParseException ex) {} //{ if(verbose) System.err.println("parsing error w/ global sup"); } catch(AtomException ex) {} //{ if(verbose) System.err.println("atom error w/ global sup OR local rmsd"); } boolean swapped = (rmsdLocSwapMin < rmsdLocNormMin); System.err.println(title1+"\t"+title2+"\t"+df.format(rmsdGlbMin) +"\t"+r1.nickname()+"\t"+r2.nickname()+"\t"+df.format(rmsdLocNormMin) +"\t"+df.format(rmsdLocSwapMin)+"\t"+(swapped ? "YES!" : "no")); if(swapped) return rmsdLocSwapMin; return Double.NaN; } //}}} //{{{ globalSup //############################################################################## public double globalSup(Model m1, Model m2, Alignment align, double sieve) throws AtomException, ParseException { ModelState s1 = m1.getState(); ModelState s2 = m2.getState(); AtomState[][] atoms = SubImpose.getAtomsForSelection( m1.getResidues(), s1, m2.getResidues(), s2, "atom_CA_", null, align, coord1, coord2); if(atoms[0].length < 3) throw new IllegalArgumentException( "Can't superimpose on less than 3 atoms!"); SuperPoser superpos = new SuperPoser(atoms[1], atoms[0]); Transform R = new Transform(); // identity, defaults to no superposition R = superpos.superpos(); // Lesk sieve int lenAtomsUsed = atoms[0].length; int len = (int) Math.round( sieve * atoms[0].length ); if(len < 3) System.err.println( "WARNING: too few atoms for Lesk's sieve at "+df.format(sieve)); else { lenAtomsUsed = len; SubImpose.sortByLeskSieve(atoms[0], atoms[1]); superpos.reset(atoms[1], 0, atoms[0], 0, len); // only use the len best R = superpos.superpos(); } // Transform model 1 so transformed coords will be used in the future. for(Iterator iter = Model.extractOrderedStatesByName(m1).iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); R.transform(as); } return superpos.calcRMSD(R); } //}}} //{{{ globalKinemage //############################################################################## public void globalKinemage(Model m, Alignment align, String mcColor, String scColor) { System.out.println("@kinemage {"+title1+"."+title2+"}"); System.out.println("@master {sc ?= mc}"); System.out.println("@group {"+title2+"} dominant"); Set residues = new TreeSet(); for(Iterator iter = m.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(res != null) residues.add(res); } bsl.width = 3; bsl.scColor = scColor; bsl.printKinemage(new PrintWriter(System.out), m, residues, title2, mcColor); } //}}} //{{{ localSwapKinemage //############################################################################## public void localSwapKinemage(Residue r, Model m, String mcColor, String scColor, double rmsd) { System.out.println("@group {"+r.nickname()+" "+df2.format(rmsd) +"} dominant animate master= {"+title1+"} master= {"+r.nickname()+"}"); bsl.scColor = scColor; bsl.width = -1; // i.e. use default width ModelState s = m.getState(); // mainchain Set residues = new TreeSet(); for(Iterator iter = m.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); try { if(res != null && residuesAreClose(res, r, m, s, mcRadius, false)) residues.add(res); } catch(AtomException ex) { ex.printStackTrace(); } } bsl.doSidechains = false; bsl.doMainchain = true; bsl.printKinemage(new PrintWriter(System.out), m, residues, title1, mcColor); // sidechains residues = new TreeSet(); for(Iterator iter = m.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); try { if(res != null && residuesAreClose(res, r, m, s, scRadius, true)) residues.add(res); } catch(AtomException ex) { ex.printStackTrace(); } } bsl.doSidechains = true; bsl.doMainchain = false; bsl.printKinemage(new PrintWriter(System.out), m, residues, title1, mcColor); // site of interest System.out.println("@balllist {sc ?= mc} radius= 0.55 color= green master= {sc ?= mc}"); try { AtomState ca = s.get(r.getAtom(" CA ")); System.out.println("{"+r+" sc ?= mc} "+ca.getX()+" "+ca.getY()+" "+ca.getZ()); } catch(AtomException ex) { System.err.println("error drawing sc ?= mc ball for "+r); } } //}}} //{{{ residuesAreClose //############################################################################## /** * Returns true if any atom in the first residue is within * the specified distance of any atom in the second residue. * May be restricted to distances between sidechain atoms. */ public boolean residuesAreClose(Residue r1, Residue r2, Model m, ModelState s, double distance, boolean onlySidechains) throws AtomException { for(Iterator iter1 = r1.getAtoms().iterator(); iter1.hasNext(); ) { AtomState a1 = s.get( (Atom) iter1.next() ); if(onlySidechains && isMainchain(a1.getName())) continue; for(Iterator iter2 = r2.getAtoms().iterator(); iter2.hasNext(); ) { AtomState a2 = s.get( (Atom) iter2.next() ); if(onlySidechains && isMainchain(a2.getName())) continue; if(a1.distance(a2) < distance) return true; } } return false; } private boolean isMainchain(String atomName) { if(atomName.equals(" N ") || atomName.equals(" CA ") || atomName.equals(" C ") || atomName.equals(" O ")) return true; return false; } //}}} //{{{ localCoCenter //############################################################################## /** * There are 6 possible rmsd calculations at a Calpha junction due to its 3 * outgoing units: mc(i-1), mc(i+1), sc. * However, 3 of these pair mainchain units going in opposite directions, * which implies bad enough global superposition that a sidechain-mainchain * swap might not be meaningful, so here we return only the remaining 3:

    *
  • mc(i-1)_mc(i-1) mc(i+1)_mc(i+1) sc_sc
  • *
  • mc(i-1)_mc(i-1) mc(i+1)_sc sc_mc(i+1)
  • *
  • mc(i-1)_sc mc(i+1)_mc(i+1) sc_mc(i-1)
  • * where x_y means atoms x from the first (mobile) residue will be compared * to atoms y from the second (reference) residue. */ public double[] localCoCenter(Residue r1, Residue r2, Model m1, Model m2) throws AtomException { // translate mobile CA (1) to reference CA (2) ("co-center") ModelState s1 = m1.getState(); ModelState s2 = m2.getState(); AtomState ca1 = s1.get(r1.getAtom(" CA ")); AtomState ca2 = s2.get(r2.getAtom(" CA ")); Triple xlate = new Triple(ca2).sub(ca1); for(Iterator iter = Model.extractOrderedStatesByName(m1).iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); as.add(xlate); } // local rmsds double[] rmsds = new double[] { 0, 0, 0 }; // normal: mc(i-1)_mc(i-1) mc(i+1)_mc(i+1) sc_sc rmsds[0] += calcLocalRmsd(r1, r2, m1, m2, MC_PREV, MC_PREV); rmsds[0] += calcLocalRmsd(r1, r2, m1, m2, MC_NEXT, MC_NEXT); //rmsds[0] += calcLocalRmsd(r1, r2, m1, m2, SC , SC ); //rmsds[0] /= 3.0; rmsds[0] /= 2.0; // entering a sc-mc swap "bubble": mc(i-1)_mc(i-1) mc(i+1)_sc sc_mc(i+1) rmsds[1] += calcLocalRmsd(r1, r2, m1, m2, MC_PREV, MC_PREV); rmsds[1] += calcLocalRmsd(r1, r2, m1, m2, MC_NEXT, SC ); rmsds[1] += calcLocalRmsd(r1, r2, m1, m2, SC , MC_NEXT); rmsds[1] /= 3.0; // exiting a sc-mc swap "bubble": mc(i-1)_sc mc(i+1)_mc(i+1) sc_mc(i-1) rmsds[2] += calcLocalRmsd(r1, r2, m1, m2, MC_PREV, SC ); rmsds[2] += calcLocalRmsd(r1, r2, m1, m2, MC_NEXT, MC_NEXT); rmsds[2] += calcLocalRmsd(r1, r2, m1, m2, SC , MC_PREV); rmsds[2] /= 3.0; return rmsds; } //}}} //{{{ calcLocalRmsd //############################################################################## public double calcLocalRmsd(Residue r1, Residue r2, Model m1, Model m2, String sel1, String sel2) throws AtomException { // get correct atoms Triple[] atoms1 = null, atoms2 = null, atoms1flip = null, atoms2flip = null; atoms1 = getLocalAtoms(r1, m1, sel1, false); atoms2 = getLocalAtoms(r2, m2, sel2, false); if(sel1.equals(SC) && isFlippable(r1)) atoms1flip = getLocalAtoms(r1, m1, sel1, true); if(sel2.equals(SC) && isFlippable(r2)) atoms2flip = getLocalAtoms(r2, m2, sel2, true); if(atoms1 == null || atoms2 == null) { System.err.println("not enough atoms for co-center then rmsd of "+r1+" onto "+r2); return Double.NaN; } // rmsds w/o any relative rotation; flip (F) or no flip (n) double rmsd_nn = Double.POSITIVE_INFINITY; double rmsd_Fn = Double.POSITIVE_INFINITY; double rmsd_nF = Double.POSITIVE_INFINITY; double rmsd_FF = Double.POSITIVE_INFINITY; rmsd_nn = rmsd(atoms1, atoms2); if(atoms1flip != null) rmsd_Fn = rmsd(atoms1flip, atoms2); if(atoms2flip != null) rmsd_nF = rmsd(atoms1, atoms2flip); if(atoms1flip != null && atoms2flip != null) rmsd_FF = rmsd(atoms1flip, atoms2flip); return Math.min(rmsd_nn, Math.min(rmsd_Fn, Math.min(rmsd_nF, rmsd_FF))); // exhale... } private boolean isFlippable(Residue r) { if(r.getName().equals("ARG") || r.getName().equals("GLN") || r.getName().equals("GLU") || r.getName().equals("ASN") || r.getName().equals("ASP")) return true; return false; } private double rmsd(Triple[] atoms1, Triple[] atoms2) { if(atoms1.length != atoms2.length) return Double.NaN; double rmsd = 0; for(int i = 0; i < atoms2.length; i++) rmsd += Triple.sqDistance(atoms2[i], atoms1[i]); rmsd = Math.sqrt(rmsd); return rmsd; } //}}} //{{{ getLocalAtoms //############################################################################## public Triple[] getLocalAtoms(Residue r0, Model m, String sel, boolean flip) throws AtomException { ModelState s = m.getState(); Triple[] atoms = null; //{{{ sc if(sel.equals(SC)) { if(r0.getName().equals("ARG")) atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" CB "))), new Triple(s.get(r0.getAtom(" CG "))), new Triple(s.get(r0.getAtom(" CD "))), new Triple(s.get(r0.getAtom(" NE "))), new Triple(s.get(r0.getAtom(" CZ "))), new Triple(s.get(r0.getAtom(" NH1"))), new Triple(s.get(r0.getAtom(" NH2"))) }; else if(r0.getName().equals("LYS")) atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" CB "))), new Triple(s.get(r0.getAtom(" CG "))), new Triple(s.get(r0.getAtom(" CD "))), new Triple(s.get(r0.getAtom(" CE "))), new Triple(s.get(r0.getAtom(" NZ "))) }; else if(r0.getName().equals("MET")) atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" CB "))), new Triple(s.get(r0.getAtom(" CG "))), new Triple(s.get(r0.getAtom(" SD "))), new Triple(s.get(r0.getAtom(" CE "))) }; else if(r0.getName().equals("GLN")) atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" CB "))), new Triple(s.get(r0.getAtom(" CG "))), new Triple(s.get(r0.getAtom(" CD "))), new Triple(s.get(r0.getAtom(" OE1"))), new Triple(s.get(r0.getAtom(" NE2"))) }; else if(r0.getName().equals("GLU")) atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" CB "))), new Triple(s.get(r0.getAtom(" CG "))), new Triple(s.get(r0.getAtom(" CD "))), new Triple(s.get(r0.getAtom(" OE1"))), new Triple(s.get(r0.getAtom(" OE2"))) }; else if(r0.getName().equals("ASN")) atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" CB "))), new Triple(s.get(r0.getAtom(" CG "))), new Triple(s.get(r0.getAtom(" OD1"))), new Triple(s.get(r0.getAtom(" ND2"))) }; else if(r0.getName().equals("ASP")) atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" CB "))), new Triple(s.get(r0.getAtom(" CG "))), new Triple(s.get(r0.getAtom(" OD1"))), new Triple(s.get(r0.getAtom(" OD2"))) }; if(flip) { Triple[] atomsFlip = new Triple[atoms.length]; for(int i = 0; i < atoms.length-2; i++) atomsFlip[i] = atoms[i]; atomsFlip[atoms.length-2] = atoms[atoms.length-1]; // "flip" end atomsFlip[atoms.length-1] = atoms[atoms.length-2]; // of sidechain atoms = atomsFlip; } } //}}} //{{{ mc- else if(sel.equals(MC_PREV)) { Residue r1 = null, r2 = null; r1 = r0.getPrev(m); if(r1 == null) return null; if(r0.getName().equals("ARG") || r0.getName().equals("LYS")) { r2 = r1.getPrev(m); if(r2 == null) return null; } if(r0.getName().equals("ARG")) { atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" N "))), new Triple(s.get(r1.getAtom(" C "))), new Triple(s.get(r1.getAtom(" CA "))), new Triple(s.get(r1.getAtom(" N "))), new Triple(s.get(r2.getAtom(" C "))), new Triple(s.get(r2.getAtom(" O "))), new Triple(s.get(r2.getAtom(" CA "))) }; } else if(r0.getName().equals("LYS")) { atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" N "))), new Triple(s.get(r1.getAtom(" C "))), new Triple(s.get(r1.getAtom(" CA "))), new Triple(s.get(r1.getAtom(" N "))), new Triple(s.get(r2.getAtom(" C "))) }; } else if(r0.getName().equals("MET")) { atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" N "))), new Triple(s.get(r1.getAtom(" C "))), new Triple(s.get(r1.getAtom(" CA "))), new Triple(s.get(r1.getAtom(" N "))) }; } else if(r0.getName().equals("GLN") || r0.getName().equals("GLU")) { // branch point is Calpha, so compromise on a superposition point Triple midCbetaHalpha = new Triple().likeMidpoint( new Triple(s.get(r1.getAtom(r1.getName().equals("GLY") ? " HA3" : " CB "))), new Triple(s.get(r1.getAtom(r1.getName().equals("GLY") ? " HA2" : " HA ")))); atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" N "))), new Triple(s.get(r1.getAtom(" C "))), new Triple(s.get(r1.getAtom(" CA "))), new Triple(s.get(r1.getAtom(" N "))), midCbetaHalpha }; } else if(r0.getName().equals("ASN") || r0.getName().equals("ASP")) { atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" N "))), new Triple(s.get(r1.getAtom(" C "))), new Triple(s.get(r1.getAtom(" O "))), new Triple(s.get(r1.getAtom(" CA "))) }; } } //}}} //{{{ mc+ else if(sel.equals(MC_NEXT)) { Residue r1 = null, r2 = null; r1 = r0.getNext(m); if(r1 == null) return null; if(r0.getName().equals("ARG") || r0.getName().equals("LYS")) { r2 = r1.getNext(m); if(r2 == null) return null; } if(r0.getName().equals("ARG")) { atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" C "))), new Triple(s.get(r1.getAtom(" N "))), new Triple(s.get(r1.getAtom(" CA "))), new Triple(s.get(r1.getAtom(" C "))), new Triple(s.get(r2.getAtom(" N "))), new Triple(s.get(r2.getAtom(r1.getName().equals("PRO") ? " CD " : " H "))), new Triple(s.get(r2.getAtom(" CA "))) }; } else if(r0.getName().equals("LYS")) { atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" C "))), new Triple(s.get(r1.getAtom(" N "))), new Triple(s.get(r1.getAtom(" CA "))), new Triple(s.get(r1.getAtom(" C "))), new Triple(s.get(r2.getAtom(" N "))) }; } else if(r0.getName().equals("MET")) { atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" C "))), new Triple(s.get(r1.getAtom(" N "))), new Triple(s.get(r1.getAtom(" CA "))), new Triple(s.get(r1.getAtom(" C "))) }; } else if(r0.getName().equals("GLN") || r0.getName().equals("GLU")) { // branch point is Calpha, so compromise on a superposition point Triple midCbetaHalpha = new Triple().likeMidpoint( new Triple(s.get(r1.getAtom(r1.getName().equals("GLY") ? " HA3" : " CB "))), new Triple(s.get(r1.getAtom(r1.getName().equals("GLY") ? " HA2" : " HA ")))); atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" C "))), new Triple(s.get(r1.getAtom(" N "))), new Triple(s.get(r1.getAtom(" CA "))), new Triple(s.get(r1.getAtom(" C "))), midCbetaHalpha }; } else if(r0.getName().equals("ASN") || r0.getName().equals("ASP")) { atoms = new Triple[] { new Triple(s.get(r0.getAtom(" CA "))), new Triple(s.get(r0.getAtom(" C "))), new Triple(s.get(r1.getAtom(" N "))), new Triple(s.get(r1.getAtom(r1.getName().equals("PRO") ? " CD " : " H "))), new Triple(s.get(r1.getAtom(" CA "))) }; } } //}}} //{{{ else else { System.err.println("unrecognized atom selection: "+sel); return null; } //}}} return atoms; } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { if(structIn1 == null || structIn2 == null) throw new IllegalArgumentException("must provide two structures"); PdbReader pdbReader = new PdbReader(); File file1 = new File(structIn1); File file2 = new File(structIn2); title1 = file1.getName().replace(".pdb", ""); title2 = file2.getName().replace(".pdb", ""); title1 = title1.substring(0, Math.min(title1.length(), 10)); title2 = title2.substring(0, Math.min(title2.length(), 10)); this.coord1 = pdbReader.read(file1); this.coord2 = pdbReader.read(file2); Model m1 = coord1.getFirstModel(); Model m2 = coord2.getFirstModel(); m1.getState().setName(title1); m2.getState().setName(title2); Collection chains1 = SubImpose.getChains(m1); Collection chains2 = SubImpose.getChains(m2); Alignment align = Alignment.alignChains(chains1, chains2, new Alignment.NeedlemanWunsch(), new SubImpose.SimpleNonWaterResAligner()); bsl = new BallAndStickLogic(); bsl.doProtein = true; bsl.doMainchain = true; bsl.doSidechains = true; bsl.doHydrogens = true; compareModels(m1, m2, align); } public static void main(String[] args) { SidechainMainchainSwapper mainprog = new SidechainMainchainSwapper(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("SidechainMainchainSwapper.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'SidechainMainchainSwapper.help' ***\n"); else { try { streamcopy(is, System.err); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("cmdline.SidechainMainchainSwapper"); System.err.println("Copyright (C) 2010 by Daniel Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if(structIn1 == null) structIn1 = arg; else if(structIn2 == null) structIn2 = arg; else throw new IllegalArgumentException("too many arguments!"); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/PhiPsiRotation.java0000644000000000000000000002161111531212724023445 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.SoftLog; import chiropraxis.sc.*; //}}} /** * PhiPsiRotation is a simple implementation of something that * allows one to refit a structure by tweaking phi,psi. * * The user chooses whether to rotate the rest of the mainchain in the * upstream or downstream direction (either is clearly a very gross movement). * * This class is based off Ian's CaRotation ("CAiRO") class. * *

    Copyright (C) 2009 by Daniel A. Keedy. All rights reserved. *
    Begun on Sun Jan 19 2009 */ public class PhiPsiRotation //extends ... implements ... { //{{{ Constants static SidechainIdealizer sidechainIdealizer = null; static { try { sidechainIdealizer = new SidechainIdealizer(); } catch(IOException ex) { ex.printStackTrace(); } } //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PhiPsiRotation() { super(); } //}}} //{{{ makeMobileGroup //################################################################################################## /** * Returns a Collection of the residues from r * either to the beginning or end of the mainchain, inclusive * or plus or minus a certain number of residues, inclusive. */ public static Collection makeMobileGroup(Model model, Residue r, boolean upstream, int numRes) { Collection residues = new ArrayList(); residues.add(r); if(upstream) { Residue prev; if(numRes == Integer.MAX_VALUE) for(prev = r.getPrev(model); prev != null; prev = prev.getPrev(model)) residues.add(prev); else // specific # residues for(prev = r.getPrev(model); prev != null && residues.size() < numRes; prev = prev.getPrev(model)) residues.add(prev); } else // downstream (default) { Residue next; if(numRes == Integer.MAX_VALUE) for(next = r.getNext(model); next != null; next = next.getNext(model)) residues.add(next); else // specific # residues for(next = r.getNext(model); next != null && residues.size() < numRes; next = next.getNext(model)) residues.add(next); } return residues; } //}}} //{{{ makeConformation //################################################################################################## /** * Rotates a collection of residues by theta degrees * around either phi or psi. * @throws AtomException if the state is missing a state definition * for any of the mobile atoms. */ public static ModelState makeConformation(Collection residues, ModelState state, double theta, boolean phi, boolean upstream, int numRes, boolean idealizeSC) throws AtomException { // Find first and last residue in the collection Residue first, last; Iterator iter = residues.iterator(); first = last = (Residue)iter.next(); while(iter.hasNext()) last = (Residue)iter.next(); // Find atoms to rotate around Atom atom1 = null, atom2 = null; if ( upstream && phi) { atom1 = first.getAtom(" N "); atom2 = first.getAtom(" CA "); } else if ( upstream && !phi) { atom1 = first.getAtom(" CA "); atom2 = first.getAtom(" C "); } else if (!upstream && phi) { atom1 = first.getAtom(" N "); atom2 = first.getAtom(" CA "); } else if (!upstream && !phi) { atom1 = first.getAtom(" CA "); atom2 = first.getAtom(" C "); } if( upstream && phi && (atom1 == null || atom2 == null)) throw new AtomException("N or CA missing from "+last); if( upstream && !phi && (atom1 == null || atom2 == null)) throw new AtomException("CA or C missing from "+last); if(!upstream && phi && (atom1 == null || atom2 == null)) throw new AtomException("N or CA missing from "+first); if(!upstream && !phi && (atom1 == null || atom2 == null)) throw new AtomException("CA or C missing from "+first); // Do the rotation Atom[] atoms = getMobileAtoms(residues, phi, upstream, numRes); Transform rot = new Transform().likeRotation(state.get(atom1), state.get(atom2), theta); ModelState rv = transformAtoms(rot, atoms, state); // Idealize central sidechain (opt'l) if(idealizeSC) rv = sidechainIdealizer.idealizeSidechain(first, rv); return rv.createCollapsed(state); } //}}} //{{{ getMobileAtoms //################################################################################################## static Atom[] getMobileAtoms(Collection residues, boolean phi, boolean upstream, int numRes) { ArrayList atoms = new ArrayList(); Iterator iter = residues.iterator(); Residue r = (Residue)iter.next(); if(!upstream && phi) { // Add the first-in-sequence (first-in-array) mobile residue, C and O only for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom)ai.next(); String an = a.getName(); if(an.equals(" C ") || an.equals(" O ")) atoms.add(a); } } else if(upstream && phi) { // Add the last-in-sequence (first-in-array) mobile residue, H only for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom)ai.next(); String an = a.getName(); if(an.equals(" H ")) atoms.add(a); } } else if(upstream && !phi) { // Add the last-in-sequence (first-in-array) mobile residue, N and H only for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom)ai.next(); String an = a.getName(); if(an.equals(" N ") || an.equals(" H ")) atoms.add(a); } } else //if(!upstream && !phi) { // Add the first-in-sequence (first-in-array) mobile residue, O only for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom)ai.next(); String an = a.getName(); if(an.equals(" O ")) atoms.add(a); } } // Add all atoms for the rest of residues int resCount = 1; while(iter.hasNext()) { if(resCount >= numRes) break; r = (Residue)iter.next(); for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom)ai.next(); atoms.add(a); } resCount++; } return (Atom[])atoms.toArray(new Atom[atoms.size()]); } //}}} //{{{ transformAtoms //################################################################################################## /** Applies a Transform to all the Atoms in the given array */ static ModelState transformAtoms(Transform t, Atom[] atoms, ModelState state) { ModelState rv = new ModelState(state); for(int i = 0; i < atoms.length; i++) { // Named atom may be missing a state in the // case of alternate conformations where // some sets are incomplete (eg more A's than B's). try { AtomState origState = state.get(atoms[i]); AtomState newState = (AtomState)origState.clone(); rv.add(newState); t.transform(newState); } catch(AtomException ex) { SoftLog.err.println(ex.getMessage()); } } return rv; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/PseudoTurn.java0000644000000000000000000002167511531212724022653 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * PseudoTurn is a pseudo-turn (i.e. Asx turn), * defined as three residues in-plane, with the first Asn/Asp * residue's sidechain OD1/2 H-bonded to the fourth residue's NH. * *

    Copyright (C) 2010 by Daniel Keedy. All rights reserved. *
    Begun on Tue Aug 10 2010 */ public class PseudoTurn extends Turn { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //public Residue r0; <-- sc of r1 fills this role //public double phi0, psi0; <-- n/a for pseudo-turns //}}} //{{{ Constructor(s) //############################################################################## /** * @param r1 the Asn/Asp residue with its sidechain OD1 oxygen serving the * role of the mainchain CO oxygen in a normal tight turn @ @param r3 the fourth of four residue in the tight turn, with its mainchain * NH hydrogen in an H-bond to the first residue */ public PseudoTurn(Model model, ModelState state, Residue r1, Residue r2, Residue r3) throws AtomException, ResidueException { this.model = model; this.state = state; this.r1 = r1; this.r2 = r2; this.r3 = r3; calcHbondEnergies(); calcDihedral(); calcPhiPsis(); calcHighB(); decideType(); } //}}} //{{{ calcHbondEnergies //############################################################################## /** * Calculates C=O .. H-N H-bond "energies" based on the criteria defined in * W. Kabsch and C. Sander (1983) Biopolymers, 22:2577. * The basic idea is that the H-bond is accepted if * E = 0.42*0.20*332*(1/rON + 1/rCH - 1/rOH - 1/rCN) is less than -0.5 kcal/mol. * Atom-atom distances are in Angstroms and E is in kcal/mol. * Ideal alignment allows distances up to 5.2 A (O to N); * ideal distance allows angles up to 63 degrees. */ protected void calcHbondEnergies() throws AtomException, ResidueException { Residue r4 = r3.getNext(model); if(r4 == null) throw new ResidueException( "Need residue after "+r3+"to complete turn!"); // Will use sidechain CO of residue 1, which is like // mainchain CO of residue 0 for tight turns this.hbEnergy0to3 = calcHbondEnergy(r1, r3); this.hbEnergy0to4 = calcHbondEnergy(r1, r4); } //}}} //{{{ calcHbondEnergy //############################################################################## /** * Calculates C=O .. H-N H-bond "energy" based on the criteria defined in * W. Kabsch and C. Sander (1983) Biopolymers, 22:2577. * The basic idea is that the H-bond is accepted if * E = 0.42*0.20*332*(1/rON + 1/rCH - 1/rOH - 1/rCN) is less than -0.5 kcal/mol. * Atom-atom distances are in Angstroms and E is in kcal/mol. * Ideal alignment allows distances up to 5.2 A (O to N); * ideal distance allows angles up to 63 degrees. * @param r the Residue containing the C=O * @param s the Residue containing the N-H */ protected double calcHbondEnergy(Residue r, Residue s) throws AtomException { Atom c = r.getAtom(" CG "); Atom o = r.getAtom(" OD1"); Atom n = s.getAtom(" N "); Atom h = s.getAtom(" H "); if(r.getName().equals("ASP")) { // We guessed OD1 before, but OD2 could be closer for Asp // (Not a problem for Asn) Atom oAlt = r.getAtom(" OD2"); double dist = Triple.distance(state.get(o) , state.get(h)); double distAlt = Triple.distance(state.get(oAlt), state.get(h)); if(distAlt < dist) o = oAlt; } AtomState cs = state.get(c); AtomState os = state.get(o); AtomState ns = state.get(n); AtomState hs = state.get(h); double rON = os.distance(ns); double rCH = cs.distance(hs); double rOH = os.distance(hs); double rCN = cs.distance(ns); return 27.9*(1/rON + 1/rCH - 1/rOH - 1/rCN); } //}}} //{{{ calcDihedral //############################################################################## /** * Calculates a dihedral from the four "joint" atoms comprising the turn. * In the case of pseudo-turns, they are the first Asx residue's ND2 atom * and three C-alphas, from the Asx and its two subsequent neighbors. */ protected void calcDihedral() throws AtomException { Atom c1 = r1.getAtom(" CG "); Atom ca1 = r1.getAtom(" CA "); Atom ca2 = r2.getAtom(" CA "); Atom ca3 = r3.getAtom(" CA "); if(c1 == null || ca1 == null || ca2 == null || ca3 == null) throw new AtomException("Can't find Asx CG and/or 3 C-alphas!"); AtomState c1s = state.get(c1); AtomState ca1s = state.get(ca1); AtomState ca2s = state.get(ca2); AtomState ca3s = state.get(ca3); dihedral = Triple.dihedral(c1s, ca1s, ca2s, ca3s); } //}}} //{{{ calcPhiPsis //############################################################################## /** * Calculates phi,psi dihedrals for the residues comprising this turn. */ protected void calcPhiPsis() throws AtomException, ResidueException { phi1 = AminoAcid.getPhi(model, r1, state); psi1 = AminoAcid.getPsi(model, r1, state); phi2 = AminoAcid.getPhi(model, r2, state); psi2 = AminoAcid.getPsi(model, r2, state); phi3 = AminoAcid.getPhi(model, r3, state); psi3 = AminoAcid.getPsi(model, r3, state); } //}}} //{{{ calcHighB //############################################################################## /** * Simply stores the highest atomic B-factor for the three residues * comprising the turn. */ protected void calcHighB() throws AtomException { highB = Double.NEGATIVE_INFINITY; Residue[] residues = new Residue[] {r1, r2, r3}; for(Residue r : residues) { for(Iterator iter = r.getAtoms().iterator(); iter.hasNext(); ) { Atom a = (Atom) iter.next(); AtomState as = state.get(a); if(as.getTempFactor() > highB) highB = as.getTempFactor(); } } } //}}} //{{{ decideType //############################################################################## /** * Prepares atoms to geometrically check turn "type". */ protected void decideType() throws AtomException { // Atom names here are kept analogous to tight turns -- // they don't reflect actual numbering for pseudo-turns! // C-alphas for plane Atom ca0 = r1.getAtom(r1.getName().equals("ASN") ? " ND2" : " OD2"); Atom ca1 = r1.getAtom(" CA "); Atom ca2 = r2.getAtom(" CA "); Atom ca3 = r3.getAtom(" CA "); if(ca0 == null || ca1 == null || ca2 == null || ca3 == null) throw new AtomException("Can't find all atoms needed to determine type!"); AtomState ca0s = state.get(ca0); AtomState ca1s = state.get(ca1); AtomState ca2s = state.get(ca2); AtomState ca3s = state.get(ca3); Collection points = new ArrayList(); points.add(ca0s); points.add(ca1s); points.add(ca2s); points.add(ca3s); Triple check = new Triple().likeNormal(ca0s, ca1s, ca2s); // Carbonyls Atom c0 = r1.getAtom(" CG "); Atom o0 = r1.getAtom(" OD1"); Atom c1 = r1.getAtom(" C "); Atom o1 = r1.getAtom(" O "); if(c0 == null || o0 == null || c1 == null || o1 == null) throw new AtomException("Can't find all atoms needed to determine type!"); AtomState c0s = state.get(c0); AtomState o0s = state.get(o0); AtomState c1s = state.get(c1); AtomState o1s = state.get(o1); // Swap OD1/OD2 for Asp if we guessed wrong earlier if(r1.getName().equals("ASP")) { Atom o0Alt = r1.getAtom(" OD2"); if(o0Alt == null) return; AtomState o0sAlt = state.get(o0Alt); double dist = Triple.distance(o0s , ca3s); double distAlt = Triple.distance(o0sAlt, ca3s); if(distAlt < dist) o0s = o0sAlt; } Triple co0 = new Triple().likeVector(c0s, o0s); Triple co1 = new Triple().likeVector(c1s, o1s); pickType(co0, co1, points, check); // parent method in Turn } //}}} //{{{ toString //############################################################################## public String toString() { return "type "+type+" pseudo-turn from "+r1+" to "+r3; } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/AvgStrucGenerator2.java0000644000000000000000000004407411744305700024233 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.Strings; //}}} /** * AvgStrucGenerator2 builds on AvgStrucGenerator. * Here the input PDBs are local and pre-superposed rather than * full structures in their original coordinate frame. * Conveniently, they can be in fragments that may even be N->C in one example * and C->N in another. The key is a separate structure-based alignment for * each fragment. * *

    Copyright (C) 2010 by Daniel A. Keedy. All rights reserved. *
    Begun on Wed July 14, 2010. */ public class AvgStrucGenerator2 //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("###.###"); //}}} //{{{ Variable definitions //############################################################################## boolean verbose = false; ArrayList files; Triple[][] original; Triple[] averaged; double[] pseudoBs; File refFile; Model refModel; Range[] refRanges; HashMap refIndices; // reference range => index of row in original /** Maximum displacement for any one atom in the alignment for which we will * still consider the superposition good enough to use that structure in the * coordinate averaging */ double maxDist = 2; //}}} //{{{ Constructor(s) //############################################################################## public AvgStrucGenerator2() { super(); files = new ArrayList(); } //}}} //{{{ getCoords //############################################################################## public void getCoords() { PdbReader reader = new PdbReader(); for(int e = 0; e < files.size(); e++) { File file = files.get(e); if(file.isDirectory()) throw new IllegalArgumentException( file+" is a directory, not a PDB!"); try { CoordinateFile structure = reader.read(file); Model model = structure.getFirstModel(); Range[] ranges = getRanges(model); if(refFile == null) { refFile = file; getRefCoords(file, model, ranges, e); } else { getOtherCoords(file, model, ranges, e); } } catch(IOException ex) { System.err.println("Error reading "+file+"!"); } catch(AtomException ex) { System.err.println("Error getting atoms from "+file+"!"); } } if(verbose) { System.err.println("Original coordinates:"); for(int a = 0; a < original.length; a++) { for(int e = 0; e < original[a].length; e++) { System.err.print(" "+original[a][e]); } System.err.println(""); } } } //}}} //{{{ getRefCoords //############################################################################## public void getRefCoords(File file, Model model, Range[] ranges, int e) throws AtomException { // Define reference refModel = model; refRanges = ranges; int rows = refModel.getResidues().size() * 5; // atoms int cols = files.size(); // examples original = new Triple[rows][cols]; refIndices = new HashMap(); // Store each atom's coordinates, // keeping track of which Range points to which atoms int x = 0; for(Range range : refRanges) { refIndices.put(range, x); AtomState[] atoms = range.getAtoms(); for(int a = 0; a < atoms.length; a++) { original[x+a][e] = new Triple(atoms[a]); } x += range.getAtoms().length; // For the user's records: System.err.println("Chose "+file+" as 'reference structure'"); } } //}}} //{{{ getOtherCoords //############################################################################## public void getOtherCoords(File file, Model model, Range[] ranges, int e) throws AtomException { for(Range range : ranges) { // Find the reference range this range corresponds to double bestScore = Double.NEGATIVE_INFINITY; Range bestRefRange = null; for(Range refRange : refRanges) { // Align residues by atomic structure Alignment align = Alignment.needlemanWunsch( refRange.getAtoms(), range.getAtoms(), new StructureBasedAligner()); double score = align.score(new StructureBasedAligner()); if(verbose) { System.err.println("Score = "+score+" for atom alignment:"); for(int j = 0; j < align.a.length; j++) System.err.println(" "+align.a[j]+" <==> "+align.b[j]); } if(score > bestScore) { bestScore = score; bestRefRange = refRange; } } if(bestScore == 0) throw new IllegalArgumentException( "*** Can't use "+file+" because best structure-based alignment score is 0! "+ "Structure not pre-superposed? ***"); if(verbose) System.err.println(range+" goes with... "+"\n"+bestRefRange+"\n"); // Store coordinates int x = refIndices.get(bestRefRange); // row/atom it starts on ("offset") AtomState[] atoms = range.getAtoms(); for(int a = 0; a < atoms.length; a++) { original[x+a][e] = new Triple(atoms[a]); } // For the user's records: System.err.println("Used "+file+" for average structure"); } } //}}} //{{{ getRanges //############################################################################## public Range[] getRanges(Model m) { ArrayList ranges = new ArrayList(); ArrayList range = new ArrayList(); for(Iterator rIter = m.getResidues().iterator(); rIter.hasNext(); ) { Residue r = (Residue) rIter.next(); if(r.getPrev(m) == null || !r.getChain().equals(r.getPrev(m).getChain()) || (r.getSequenceInteger() - r.getPrev(m).getSequenceInteger()) > 1) { // Store completed range & start new one if(range.size() > 0) ranges.add(new Range(m, range)); range = new ArrayList(); range.add(r); } else { // Continue current range range.add(r); } } // Store completed final range if(range.size() > 0) ranges.add(new Range(m, range)); Range[] ret = new Range[ranges.size()]; for(int i = 0; i < ranges.size(); i++) ret[i] = ranges.get(i); return ret; } //}}} //{{{ CLASS: Range //############################################################################## static class Range { final String bbAtoms = " N , H , CA , C , O "; // Pro doesn't have ' H ' public Model model; public Residue[] residues; // probably in sequence order public Range(Model m, ArrayList list) { model = m; residues = new Residue[list.size()]; for(int i = 0; i < list.size(); i++) residues[i] = list.get(i); } public AtomState[] getAtoms() throws AtomException { ModelState state = model.getState(); ArrayList atoms = new ArrayList(); for(int i = 0; i < residues.length; i++) { for(Iterator aIter = residues[i].getAtoms().iterator(); aIter.hasNext(); ) { Atom a = (Atom) aIter.next(); if(bbAtoms.indexOf(a.getName()) != -1) atoms.add(state.get(a)); } } AtomState[] ret = new AtomState[atoms.size()]; for(int i = 0; i < atoms.size(); i++) ret[i] = atoms.get(i); return ret; } public String toString() { if(residues == null || residues.length == 0) return "empty range"; else { String name = "'"; for(int i = 0; i < residues.length; i++) name += residues[i].nickname()+(i < residues.length-1 ? "-" : "'"); return name; } //return "'"+residues[0]+"' to '"+residues[residues.length-1]+"'"; } } //}}} //{{{ CLASS: StructureBasedAligner //############################################################################## static class StructureBasedAligner implements Alignment.Scorer { // High is good, low is bad. public double score(Object a, Object b) { AtomState s = (AtomState) a; AtomState t = (AtomState) b; if(s == null || t == null) return -1; // gap else if(!s.getAtom().getName().equals(t.getAtom().getName())) return 0; // mismatch else if(s.distance(t) > 2) return 0; // far away else if(s.distance(t) <= 2 && s.distance(t) > 1) return 1; // in the neighborhood else if(s.distance(t) <= 1 && s.distance(t) > 0.5) return 2; // close else if(s.distance(t) <= 0.5) return 3; // very close else { System.err.println("Not sure how to score "+s+" vs. "+t+"!"); return 0; } } public double open_gap(Object a) { return extend_gap(a); } public double extend_gap(Object a) { return score(a, null); } } //}}} //{{{ averageCoords //############################################################################## public void averageCoords() { averaged = new Triple[original.length]; pseudoBs = new double[original.length]; for(int a = 0; a < original.length; a++) { // average averaged[a] = new Triple(0,0,0); int count = 0; for(int e = 0; e < original[a].length; e++) { if(original[a][e] != null) { averaged[a].add(original[a][e]); count++; } } averaged[a].div(1.0*count); // standard deviation (for pseudo-B) pseudoBs[a] = 0; for(int e = 0; e < original[a].length; e++) { if(original[a][e] != null) pseudoBs[a] += Math.pow(Triple.distance(averaged[a], original[a][e]), 2); } pseudoBs[a] = Math.sqrt(pseudoBs[a]/(1.0*count)) * 100; } } //}}} //{{{ printAvgStruc //############################################################################## public void printAvgStruc() { try { // Make new average model+state Model avgModel = new Model("avg model"); ModelState avgState = new ModelState(); int count = 0; // Enumerate atoms in order, change their coords to averaged coords, // and add them and their residues to the new average model+state for(Range range : refRanges) { int x = refIndices.get(range); // offset AtomState[] atoms = range.getAtoms(); for(int a = 0; a < atoms.length; a++) { AtomState atom = atoms[a]; atom.setX(averaged[x+a].getX()); atom.setY(averaged[x+a].getY()); atom.setZ(averaged[x+a].getZ()); atom.setTempFactor(pseudoBs[a]); atom.setOccupancy(1.0); Residue res = atom.getAtom().getResidue(); if(!avgModel.contains(res)) avgModel.add(res); avgState.add(atom); } } // Print out new average model+state as a PDB if(verbose) System.err.println("Printing average structure..."); System.out.println("USER MOD "+files.size()+" contributing structures"); PdbWriter pdbWriter = new PdbWriter(System.out); pdbWriter.writeResidues(avgModel.getResidues(), avgState); pdbWriter.close(); } catch(ResidueException ex) { System.err.println("Error adding a residue to average structure!"); } catch(AtomException ex) { System.err.println("Error adding an atom to average structure!"); } } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { if(files.isEmpty()) throw new IllegalArgumentException("Must supply at least two input PDBs!"); getCoords(); averageCoords(); // XX-TODO: make recursive w/ maxDist (?) printAvgStruc(); } public static void main(String[] args) { AvgStrucGenerator2 mainprog = new AvgStrucGenerator2(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("AvgStrucGenerator2.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'AvgStrucGenerator2.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.AvgStrucGenerator2"); System.err.println("Copyright (C) 2008 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { File file = new File(arg); if(file != null) files.add(file); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } if(flag.equals("-verbose") || flag.equals("-v")) { verbose = true; } else if(flag.equals("-distcutoff") || flag.equals("-maxdist")) { try { maxDist = Double.parseDouble(param); } catch(NumberFormatException ex) { System.err.println("Couldn't parse "+param+" as a double for maxDist"); } } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/AvgStrucGenerator3.java0000644000000000000000000005234511744305700024234 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.ParseException; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.Strings; //}}} /** * AvgStrucGenerator3 is a rethink on generating an average model. * It seems to work much better than my two previous versions: * the geometry is pretty realistic, as opposed to being distorted. * The input PDBs are local motifs of the same length, but not necessarily * pre-superimposed. Conveniently, they can be in fragments that may even be * N->C in one example and C->N in another. The key is a separate structure- * based alignment for each fragment. * *

    Copyright (C) 2011 by Daniel A. Keedy. All rights reserved. *
    Begun on Wed July 21, 2011. */ public class AvgStrucGenerator3 //extends ... implements ... { //{{{ CLASS: StructureBasedAligner //############################################################################## static class StructureBasedAligner implements Alignment.Scorer { public boolean atomsAreEquivalant(AtomState s, AtomState t) { if(s.getName().equals(t.getName())) return true; if(s.getName().equals(" H ") && t.getName().equals(" CD ") // Xaa, Pro || s.getName().equals(" HA ") && t.getName().equals(" HA2") // Xaa, Gly || s.getName().equals(" HA ") && t.getName().equals("1HA ") // Xaa, Gly || s.getName().equals(" CB ") && t.getName().equals(" HA3") // Xaa, Gly || s.getName().equals(" CB ") && t.getName().equals("2HA ")) // Xaa, Gly return true; if(s.getName().equals(" CD ") && t.getName().equals(" H ") // Pro, Xaa || s.getName().equals(" HA2") && t.getName().equals(" HA ") // Gly, Xaa || s.getName().equals("1HA ") && t.getName().equals(" HA ") // Gly, Xaa || s.getName().equals(" HA3") && t.getName().equals(" CB ") // Gly, Xaa || s.getName().equals("2HA ") && t.getName().equals(" CB ")) // Gly, Xaa return true; return false; } // High is good, low is bad. public double score(Object a, Object b) { AtomState s = (AtomState) a; AtomState t = (AtomState) b; if(s == null || t == null) return -1; // gap if(!atomsAreEquivalant(s, t)) return 0; // mismatch, even accounting for quasi-structurally-equivalent atom names else if(s.distance(t) > 2) return 0; // far away else if(s.distance(t) <= 2 && s.distance(t) > 1) return 1; // in the neighborhood else if(s.distance(t) <= 1 && s.distance(t) > 0.5) return 2; // close else if(s.distance(t) <= 0.5) return 3; // very close else { System.err.println("Not sure how to score "+s+" vs. "+t+"!"); return 0; } } public double open_gap(Object a) { return extend_gap(a); } public double extend_gap(Object a) { return score(a, null); } } //}}} //{{{ CLASS: Range //############################################################################## static class Range { // Pro doesn't have ' H ', so use ' CD ' instead; see below. // Gly doesn't have ' CB ', so use ' HA3' or '2HA ' instead; see below. // Gly doesn't have ' HA ', so use ' HA2' or '1HA ' instead; see below. // The averaging will be over all atoms structurally close to the // reference atom, so having one of these quasi-matches, even in the // reference structure, ought to be just fiiine. final String bbAtoms = " N , H , CA , CB , HA3,2HA , HA , HA2,1HA , C , O "; // sorting order: 1111 2222 3333 44444444444444 55555555555555 6666 7777 public File file; public Model model; public Residue[] residues; // in order of lines in PDB file, so almost always in sequence order public Range(Model m, ArrayList list, File f) { file = f; model = m; residues = new Residue[list.size()]; for(int i = 0; i < list.size(); i++) residues[i] = list.get(i); } public AtomState[] getAtoms() throws AtomException { ModelState state = model.getState(); ArrayList atoms = new ArrayList(); for(int i = 0; i < residues.length; i++) { /*ORDER BY LINES IN PDB FILE: for(Iterator aIter = residues[i].getAtoms().iterator(); aIter.hasNext(); ) { Atom a = (Atom) aIter.next(); if((bbAtoms.indexOf(a.getName()) != -1) || (a.getResidue().getName().equals("PRO") && a.getName().equals(" CD "))) atoms.add(state.get(a)); }ORDER BY STRUCTURAL SEQUENTIALITY:*/ String[] bbAtomNames = Strings.explode(bbAtoms, ','); for(int j = 0; j < bbAtomNames.length; j++) { for(Iterator aIter = residues[i].getAtoms().iterator(); aIter.hasNext(); ) { Atom a = (Atom) aIter.next(); if((a.getName().equals(bbAtomNames[j])) || (j == 1 && a.getName().equals(" CD ") && a.getResidue().getName().equals("PRO"))) atoms.add(state.get(a)); } } } AtomState[] ret = new AtomState[atoms.size()]; for(int i = 0; i < atoms.size(); i++) ret[i] = atoms.get(i); return ret; } public String toString() { if(residues == null || residues.length == 0) return "'empty range'"; else { String name = "'"; for(int i = 0; i < residues.length; i++) name += residues[i].nickname()+(i < residues.length-1 ? "-" : ""); name += (file != null ? " "+file.getName()+"'" : " ??file??'"); return name; } } } //}}} //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## boolean verbose = false; ArrayList files; int maxNumFiles = 555; HashMap atomMap; // each ref atom -> list of corresponding atoms /** If not NaN, iteratively re-average until we converge on a "stable" average structure */ double minRmsf = Double.NaN; /** Naively start by using first model or user-recommended model as reference, * then adjust by using closest to average model as reference. */ int refIndex = 0; //}}} //{{{ Constructor(s) //############################################################################## public AvgStrucGenerator3() { super(); } //}}} //{{{ readCoordinates //############################################################################## public void readCoordinates() { PdbReader reader = new PdbReader(); // Reference (just for internal bookkeeping -- user need never know) Range[] refRanges = null; File file = files.get(0); try { CoordinateFile structure = reader.read(file); Model model = structure.getFirstModel(); refRanges = getRanges(model, file); } catch(IOException ex) { System.err.println("Error reading "+file+"!"); } // Everything that'll get averaged, including the "reference" structure atomMap = new HashMap(); for(int i = 0; i < files.size(); i++) { file = files.get(i); try { CoordinateFile structure = reader.read(file); Model model = structure.getFirstModel(); Range[] ranges = getRanges(model, file); alignRanges(ranges, refRanges); } catch(IOException ex) { System.err.println("Error reading "+file+"!"); } catch(AtomException ex) { System.err.println("Error getting atoms from "+file+"!"); } } } //}}} //{{{ getRanges //############################################################################## public Range[] getRanges(Model m, File f) { ArrayList ranges = new ArrayList(); ArrayList range = new ArrayList(); for(Iterator rIter = m.getResidues().iterator(); rIter.hasNext(); ) { Residue r = (Residue) rIter.next(); if(r.getPrev(m) == null || !r.getChain().equals(r.getPrev(m).getChain()) || (r.getSequenceInteger() - r.getPrev(m).getSequenceInteger()) > 1) { // Store completed range & start new one if(range.size() > 0) ranges.add(new Range(m, range, f)); range = new ArrayList(); range.add(r); } else { // Continue current range range.add(r); } } // Store completed final range if(range.size() > 0) ranges.add(new Range(m, range, f)); Range[] ret = new Range[ranges.size()]; for(int i = 0; i < ranges.size(); i++) ret[i] = ranges.get(i); return ret; } //}}} //{{{ alignRanges //############################################################################## public void alignRanges(Range[] ranges, Range[] refRanges) throws AtomException { for(Range range : ranges) { // Find the reference range this range corresponds to double bestScore = 0; Range bestRefRange = null; Alignment bestAlign = null; for(Range refRange : refRanges) { try { // Align residues by atomic structure Alignment align = Alignment.needlemanWunsch( range.getAtoms(), refRange.getAtoms(), new StructureBasedAligner()); double score = align.score(new StructureBasedAligner()); if(score > bestScore) { bestScore = score; bestRefRange = refRange; bestAlign = align; } } catch(AtomException ex) { System.err.println("Error aligning "+range+" to "+refRange+"!"); } } if(bestScore == 0) throw new IllegalArgumentException( "*** Can't use "+range+" because best structure-based"+ " alignment score is 0! Structure not pre-superposed? ***"); if(verbose) { System.err.println(range+" goes with... "+"\n"+bestRefRange); System.err.println("Best atom alignment (score = "+bestScore+"):"); for(int i = 0; i < bestAlign.a.length; i++) { System.err.println(" "+bestAlign.a[i]+" <==> "+bestAlign.b[i]); //AtomState asA = (AtomState) bestAlign.a[i]; // oth, may be null //AtomState asB = (AtomState) bestAlign.b[i]; // ref, never null //Atom aA = (asA != null ? asA.getAtom() : null); //Atom aB = (asB != null ? asB.getAtom() : null); //System.err.println(" "+aA+" <==> "+aB); } } // Store coordinates for(int i = 0; i < bestAlign.a.length; i++) { AtomState othAtom = (AtomState) bestAlign.a[i]; AtomState refAtom = (AtomState) bestAlign.b[i]; AtomState[] othAtoms = ( atomMap.keySet().contains(refAtom) ? atomMap.get(refAtom) : // retrieve new AtomState[0]); // initialize int len = othAtoms.length; AtomState[] othAtomsPlus1 = new AtomState[len+1]; System.arraycopy(othAtoms, 0, othAtomsPlus1, 0, len); othAtomsPlus1[len] = othAtom; atomMap.put(refAtom, othAtomsPlus1); } // For the user's records: System.err.println("Using "+range+" for averaging"); if(verbose) System.err.println(); } } //}}} //{{{ averageCoordinates //############################################################################## public void averageCoordinates() { // Make new average model & state Model avgModel = new Model("avg model"); ModelState avgState = new ModelState(); int serial = 1; // Create the average atoms for(Iterator iter = atomMap.keySet().iterator(); iter.hasNext(); ) { AtomState refAtom = (AtomState) iter.next(); AtomState[] othAtoms = atomMap.get(refAtom); // Sanity check if(verbose) { System.err.println("Contributors for "+refAtom+":"); for(int i = 0; i < othAtoms.length; i++) if(othAtoms[i] != null) System.err.println(" "+othAtoms[i]); System.err.println(); } // Average int countNotNull = 0; Triple avgAtom = new Triple(); for(int i = 0; i < othAtoms.length; i++) { if(othAtoms[i] != null) { avgAtom.add(othAtoms[i]); countNotNull++; } } avgAtom.div((double) countNotNull); // Standard deviation (for pseudo-B) double pseudoB = 0; for(int i = 0; i < othAtoms.length; i++) { if(othAtoms[i] != null) { pseudoB += Math.pow(Triple.distance(avgAtom, othAtoms[i]), 2); } } pseudoB = Math.sqrt(pseudoB / ((double) countNotNull)) * 100; // Store for average structure refAtom.like(avgAtom); refAtom.setTempFactor(pseudoB); refAtom.setOccupancy(1.0); Residue res = refAtom.getResidue(); try { if(!avgModel.contains(res)) avgModel.add(res); avgState.add(refAtom); } catch(ResidueException ex) { System.err.println("Error adding "+res+" to average model!"); } catch(AtomException ex) { System.err.println("Error adding "+refAtom+" to average model state!"); } /*// Store as alanine for average structure -- DOESN'T WORK! String newName = refAtom.getName(); if(newName.equals(" CD ")) newName = " H "; if(newName.equals(" HA2") || newName.equals("1HA ")) newName = " HA "; if(newName.equals(" HA3") || newName.equals("2HA ")) newName = " CB "; Atom newAtom = new Atom(newName); AtomState newAS = new AtomState(newAtom, ""+serial); serial++; Residue res = refAtom.getResidue(); Residue newRes = new Residue(res, res.getChain(), res.getSegment(), res.getSequenceNumber(), res.getInsertionCode(), "ALA"); try { if(!avgModel.contains(newRes)) avgModel.add(newRes); // else, hopefully I'm pointing to the right object with newRes... newRes.add(newAtom); avgState.add(newAS); } catch(ResidueException ex) { System.err.println("Error adding "+res+" to average model!"); } catch(AtomException ex) { System.err.println("Error adding "+refAtom+" to average model state!"); }*/ } // Print the average structure if(verbose) System.err.println("Printing average structure..."); System.out.println("USER MOD "+files.size()+" contributing structures"); PdbWriter pdbWriter = new PdbWriter(System.out); pdbWriter.writeResidues(avgModel.getResidues(), avgState); pdbWriter.close(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { if(files.size() < 2) throw new IllegalArgumentException( "Only "+files.size()+" files -- need at least 2 to average!"); readCoordinates(); averageCoordinates(); } public static void main(String[] args) { AvgStrucGenerator3 mainprog = new AvgStrucGenerator3(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("AvgStrucGenerator3.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'AvgStrucGenerator3.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.AvgStrucGenerator3"); System.err.println("Copyright (C) 2011 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { File file = new File(arg); if(file != null) { if(files == null) files = new ArrayList(); // start if(files.size() < maxNumFiles) files.add(file); // continue } } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } if(flag.equals("-verbose") || flag.equals("-v")) { verbose = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/CaRotation.java0000644000000000000000000002132611531212724022577 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.SoftLog; import chiropraxis.sc.*; //}}} /** * CaRotation ("CAiRO") is the first and simplest * implementation of something that allows one to refit a structure * by rotating atoms around any axis conecting two C-alphas. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Fri May 30 11:28:15 EDT 2003 */ public class CaRotation //extends ... implements ... { //{{{ Constants static SidechainIdealizer sidechainIdealizer = null; static { try { sidechainIdealizer = new SidechainIdealizer(); } catch(IOException ex) { ex.printStackTrace(); } } //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public CaRotation() { super(); } //}}} //{{{ makeMobileGroup //################################################################################################## /** * Returns a Collection of the residues between r1 and r2, inclusive. * The order of r1 and r2 doesn't matter. * @throws IllegalArgumentException if no path can be found * that connects r1 and r2. */ public static Collection makeMobileGroup(Model model, Residue r1, Residue r2) { // who's on first? Residue first, last; if(r1.compareTo(r2) < 0) { first = r1; last = r2; } else { first = r2; last = r1; } Collection residues = new ArrayList(); residues.add(first); Residue next; for(next = first.getNext(model); next != null && !next.equals(last); next = next.getNext(model)) { residues.add(next); } if(next == null) throw new IllegalArgumentException("Cannot connect residues "+first+" and "+last); residues.add(last); return residues; } //}}} //{{{ makeConformation //################################################################################################## /** * Rotates a collection of residues (as from * {@link #makeMobileGroup(Model, Residue, Residue)}) * by theta degrees around the axis through the * C-alphas of the terminal residues. * @throws AtomException if either one of the terminal residues * is missing a C-alpha, or if the state is missing a state definition * for any of the mobile atoms. */ public static ModelState makeConformation(Collection residues, ModelState state, double theta, boolean idealizeSC) throws AtomException { // Find first and last residue in the collection Residue first, last; Iterator iter = residues.iterator(); first = last = (Residue)iter.next(); while(iter.hasNext()) last = (Residue)iter.next(); // Find atoms to rotate around Atom firstCA, lastCA; firstCA = first.getAtom(" CA "); lastCA = last.getAtom(" CA "); if(firstCA == null || lastCA == null) throw new AtomException("C-alpha is missing from "+first+" or "+last); // Do the rotation Atom[] atoms = getMobileAtoms(residues); Transform rot = new Transform().likeRotation(state.get(firstCA), state.get(lastCA), theta); ModelState rv = transformAtoms(rot, atoms, state); // Fix the sidechains if(idealizeSC && sidechainIdealizer != null) { rv = sidechainIdealizer.idealizeSidechain(first, rv); rv = sidechainIdealizer.idealizeSidechain(last, rv); } return rv.createCollapsed(state); } //}}} //{{{ twistPeptides //################################################################################################## /** * A more efficient way of doing lots of i to i+1 rotations along a chain. * @param residues an array of length L * @param thetas an array of length >= (L-1) * @throws AtomException if any of the residues * is missing a C-alpha, or if the state is missing a state definition * for any of the mobile atoms. */ public static ModelState twistPeptides(Residue[] residues, ModelState state, double[] thetas, boolean[] idealizeSC) throws AtomException { ArrayList atomList = new ArrayList(); Transform rot = new Transform(); ModelState rv = new ModelState(state); for(int i = 0; i < residues.length - 1; i++) { if(thetas[i] != 0) { atomList.clear(); Atom a; a = residues[i ].getAtom(" C "); if(a != null) atomList.add(a); a = residues[i ].getAtom(" O "); if(a != null) atomList.add(a); a = residues[i+1].getAtom(" N "); if(a != null) atomList.add(a); a = residues[i+1].getAtom(" H "); if(a != null) atomList.add(a); // Find atoms to rotate around Atom firstCA = residues[i ].getAtom(" CA "); Atom lastCA = residues[i+1].getAtom(" CA "); if(firstCA == null || lastCA == null) throw new AtomException("C-alpha is missing from "+residues[i]+" or "+residues[i+1]); // Do the rotation Atom[] atoms = (Atom[])atomList.toArray(new Atom[atomList.size()]); rot.likeRotation(rv.get(firstCA), rv.get(lastCA), thetas[i]); rv = transformAtoms(rot, atoms, rv); // keep stacking them up } } // Fix the sidechains for(int i = 0; i < residues.length; i++) { if(idealizeSC[i] && sidechainIdealizer != null) rv = sidechainIdealizer.idealizeSidechain(residues[i], rv); } return rv.createCollapsed(state); } //}}} //{{{ getMobileAtoms //################################################################################################## static Atom[] getMobileAtoms(Collection residues) { ArrayList atoms = new ArrayList(); Iterator iter = residues.iterator(); Residue r = (Residue)iter.next(); // Add the first residue, C and O only for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom)ai.next(); String an = a.getName(); if(an.equals(" C ") || an.equals(" O ")) atoms.add(a); } // Add all atoms for the rest of residues except the last r = (Residue)iter.next(); while(iter.hasNext()) { for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom)ai.next(); atoms.add(a); } r = (Residue)iter.next(); } // Add last residue, N and H only for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom)ai.next(); String an = a.getName(); if(an.equals(" N ") || an.equals(" H ")) atoms.add(a); } return (Atom[])atoms.toArray(new Atom[atoms.size()]); } //}}} //{{{ transformAtoms //################################################################################################## /** Applies a Transform to all the Atoms in the given array */ static ModelState transformAtoms(Transform t, Atom[] atoms, ModelState state) { ModelState rv = new ModelState(state); for(int i = 0; i < atoms.length; i++) { // Named atom may be missing a state in the // case of alternate conformations where // some sets are incomplete (eg more A's than B's). try { AtomState origState = state.get(atoms[i]); AtomState newState = (AtomState)origState.clone(); rv.add(newState); t.transform(newState); } catch(AtomException ex) { SoftLog.err.println(ex.getMessage()); } } return rv; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/HingeFit.java0000644000000000000000000003374011531212724022234 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * HingeFit applies Backrub-like hinges to * minize Ca-RMSD between two loops. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Tue Sep 9 08:48:55 EDT 2003 */ public class HingeFit //extends ... implements ... { //{{{ Constants static final Triple X_AXIS = new Triple(1, 0, 0); static final Triple Y_AXIS = new Triple(0, 1, 0); static final Triple Z_AXIS = new Triple(0, 0, 1); static final Triple ORIGIN = new Triple(0, 0, 0); //}}} //{{{ Variable definitions //############################################################################## Builder builder; AtomState[] ca1 = null; AtomState[] ca2 = null; Triple[] tmp1 = null; Triple[] tmp2 = null; String[] labels = null; File file1 = null, file2 = null; InputStream input1 = null, input2 = null; PrintStream output = System.out; int numTries = 25; //}}} //{{{ Constructor(s) //############################################################################## public HingeFit() { super(); builder = new Builder(); } //}}} //{{{ initData, loadAtomStates //############################################################################## void initData() throws IOException { // Make arrays of C-alphas from input PDB files ca1 = loadAtomStates(input1); ca2 = loadAtomStates(input2); if(ca1.length != ca2.length) throw new IllegalArgumentException("Selections must have same number of C-alphas"); // Allocate a scratch space tmp1 = new Triple[ ca1.length ]; tmp2 = new Triple[ ca1.length ]; for(int i = 0; i < ca1.length; i++) { tmp1[i] = new Triple(); tmp2[i] = new Triple(); } // Get residue names out labels = new String[ca1.length]; for(int i = 0; i < ca1.length; i++) labels[i] = ca1[i].getResidue().toString(); } AtomState[] loadAtomStates(InputStream in) throws IOException { if(in == null) throw new IllegalArgumentException("Must supply two input files"); // Load model group from PDB files PdbReader pdbReader = new PdbReader(); CoordinateFile cf = pdbReader.read(in); Model m = cf.getFirstModel(); // Extract the C-alphas Collection res = m.getResidues(); ModelState state = m.getState(); ArrayList atoms = new ArrayList(); for(Iterator iter = res.iterator(); iter.hasNext(); ) { Residue r = (Residue)iter.next(); Atom a = r.getAtom(" CA "); try { if(a != null) atoms.add(state.get(a)); } catch(AtomException ex) { ex.printStackTrace(); } // should never happen } // Make them into an array AtomState[] ca = (AtomState[])atoms.toArray(new AtomState[atoms.size()]); return ca; } //}}} //{{{ calcRMSD, transform //############################################################################## double calcRMSD(Triple[] t1, Triple[] t2) { double r = 0; for(int i = 0; i < t1.length; i++) r += t1[i].sqDistance(t2[i]); r = Math.sqrt(r / t1.length); return r; } void transform(Triple[] from, Triple[] to, Transform t) { for(int i = 0; i < from.length; i++) t.transform(from[i], to[i]); } void transform(Triple[] from, Triple[] to, int first, int last, Transform t) { for(int i = first; i <= last; i++) t.transform(from[i], to[i]); } //}}} //{{{ bestFitZ //############################################################################## /** * Finds the angle of rotation around Z * that minimizes the RMSD between ref and mob. */ double bestFitZ(Triple[] ref, Triple[] mob, int i, int j) { Triple[] tmp = new Triple[ mob.length ]; for(int k = 0; k < tmp.length; k++) tmp[k] = new Triple(mob[k]); double startRMSD = calcRMSD(ref, mob); double rmsd1, rmsd2, r; double angle, bestAngle = 0; Transform t = new Transform(); r = startRMSD; angle = 0; while(true) { rmsd1 = r; angle += 0.05; t.likeRotation(Z_AXIS, angle); transform(mob, tmp, i, j, t); r = calcRMSD(ref, tmp); if(r > rmsd1) break; else bestAngle = angle; } r = startRMSD; angle = 0; while(true) { rmsd2 = r; angle -= 0.05; t.likeRotation(Z_AXIS, angle); transform(mob, tmp, i, j, t); r = calcRMSD(ref, tmp); if(r > rmsd2) break; else if(r < rmsd1) bestAngle = angle; } return bestAngle; } //}}} //{{{ findBestHinge //############################################################################## double findBestHinge() { DecimalFormat df = new DecimalFormat("0.0000"); int i, j, best_i = 0, best_j = 0; double startRMSD = calcRMSD(ca1, ca2); double bestTheta = Double.NaN, bestRMSD = startRMSD; for(i = 0; i < ca2.length; i++) { for(j = i+2; j < ca2.length; j++) { // Translate so that our axis of rotation matches the Z axis // Third point is arbitrary -- we just needed something to use. // This is no longer really necessary -- bestFitZ could rotate // around the i-j axis directly. Transform t = builder.dock3on3(ORIGIN, Z_AXIS, X_AXIS, ca2[i], ca2[j], ca2[i+1]); transform(ca1, tmp1, t); transform(ca2, tmp2, t); // Rotate object2 to best fit object1 double theta = bestFitZ(tmp1, tmp2, i, j); t.likeRotation(Z_AXIS, theta); transform(tmp2, tmp2, i, j, t); // Compare RMSDs double rmsd = calcRMSD(tmp1, tmp2); if(rmsd < bestRMSD) { bestRMSD = rmsd; best_i = i; best_j = j; bestTheta = theta; } } } // Apply the best hinge to our original data Transform t = new Transform().likeRotation(ca2[best_i], ca2[best_j], bestTheta); transform(ca2, ca2, best_i, best_j, t); System.err.println("Most advantageous rotation: "+df.format(bestTheta)+" degrees between " +labels[best_i]+" and "+labels[best_j]); System.err.println("RMSD (before) = "+df.format(startRMSD)+"; RMSD (after) = "+df.format(bestRMSD) +"; diff = "+df.format(bestRMSD-startRMSD)); //System.err.println("Actual final RMSD = "+df.format( calcRMSD(ca1, ca2) )); return bestRMSD; } //}}} //{{{ drawCa1, drawCa2, drawCaTrace //############################################################################## void drawCa1() { System.out.println("@group {ref CAs} dominant"); System.out.println("@vectorlist {C-alpha trace} color= white"); drawCaTrace(ca1); } void drawCa2() { System.out.println("@group {mobile CAs} dominant animate"); System.out.println("@vectorlist {C-alpha trace} color= yellowtint"); drawCaTrace(ca2); } void drawCaTrace(AtomState[] as) { DecimalFormat df = new DecimalFormat("0.0####"); for(int i = 0; i < as.length; i++) { System.out.println("{"+as[i]+"} "+df.format(as[i].getX())+" " +df.format(as[i].getY())+" "+df.format(as[i].getZ())); } } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { // Sets up ca1, ca2, tmp1, tmp2, and labels initData(); System.out.println("@kinemage 1"); drawCa1(); drawCa2(); // Find 10 best hinges for(int k = 0; k < numTries; k++) { findBestHinge(); System.err.println(); drawCa2(); } try { input1.close(); } catch(IOException ex) {} try { input2.close(); } catch(IOException ex) {} output.close(); } public static void main(String[] args) { HingeFit mainprog = new HingeFit(); try { mainprog.showHelp(false); mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } catch(IOException ex) { ex.printStackTrace(); System.err.println(); System.err.println("*** I/O error: "+ex.getMessage()); System.exit(2); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("HingeFit.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'HingeFit.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.HingeFit"); System.err.println("Copyright (C) 2003 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here File f = new File(arg); try { if(f.exists()) { if(input1 == null) { file1 = f; input1 = new BufferedInputStream(new FileInputStream(f)); } else if(input2 == null) { file2 = f; input2 = new BufferedInputStream(new FileInputStream(f)); } else output = new PrintStream(new BufferedOutputStream(new FileOutputStream(f))); } else if(input1 != null && input2 != null) output = new PrintStream(new BufferedOutputStream(new FileOutputStream(f))); else System.err.println("*** WARNING: file '"+f+"' was not found"); } catch(IOException ex) { ex.printStackTrace(); System.err.println("*** WARNING: file '"+f+"' was not found"); } } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-tries")) { try { numTries = Integer.parseInt(param); } catch(NumberFormatException ex) {} } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} //{{{ empty //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/AltConfBackrubFinder.java0000644000000000000000000002135111531212724024502 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; //}}} /** * AltConfBackrubFinder searches through the alternate conformations * of a crystal structure, looking for residues that appear to undergo * a Backrub-like conformational change. * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Thu Apr 29 11:08:49 EDT 2004 */ public class AltConfBackrubFinder //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Collection inputFiles; //}}} //{{{ Constructor(s) //############################################################################## public AltConfBackrubFinder() { super(); inputFiles = new ArrayList(); } //}}} //{{{ searchModel //############################################################################## void searchModel(PrintStream out, String label, Model model) { DecimalFormat df = new DecimalFormat("0.0####"); final double maxCaShift = 0.01; // less than 2% more examples at 0.1 A allowance Collection stateC = model.getStates().values(); ModelState[] states = (ModelState[]) stateC.toArray(new ModelState[stateC.size()]); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); Residue prev = res.getPrev(model); Residue next = res.getNext(model); if(prev == null || next == null) continue; Atom thisCb = res.getAtom(" CB "); Atom prevCa = prev.getAtom(" CA "); Atom nextCa = next.getAtom(" CA "); // vectors between atom pairs for max Cb move Triple maxCaCa = new Triple(1,0,0), maxCbCb = new Triple(1,0,0); double maxCbTravel = 0; // Test between all pairs of states for(int i = 0; i < states.length; i++) { for(int j = i+1; j < states.length; j++) { try { AtomState prevCa1 = states[i].get(prevCa); AtomState prevCa2 = states[j].get(prevCa); AtomState nextCa1 = states[i].get(nextCa); AtomState nextCa2 = states[j].get(nextCa); // If Ca's move too far, skip this one. if(prevCa1.distance(prevCa2) > maxCaShift || nextCa1.distance(nextCa2) > maxCaShift) continue; // Otherwise, test the Cb distance AtomState thisCb1 = states[i].get(thisCb); AtomState thisCb2 = states[j].get(thisCb); double cbdist = thisCb1.distance(thisCb2); if(cbdist > maxCbTravel) { maxCbTravel = cbdist; Triple prevCaMid = new Triple().likeMidpoint(prevCa1, prevCa2); Triple nextCaMid = new Triple().likeMidpoint(nextCa1, nextCa2); maxCaCa.likeVector(prevCaMid, nextCaMid); maxCbCb.likeVector(thisCb1, thisCb2); } } catch(AtomException ex) {} }//for j states }//for i states if(maxCbTravel > 0) out.println(label+":"+model+":"+res.getCNIT()+":"+df.format(maxCbTravel)+":"+df.format(maxCaCa.angle(maxCbCb))); }//for each residue } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { PdbReader reader = new PdbReader(); for(Iterator files = inputFiles.iterator(); files.hasNext(); ) { File f = (File) files.next(); try { CoordinateFile cf = reader.read(f); for(Iterator models = cf.getModels().iterator(); models.hasNext(); ) { Model m = (Model) models.next(); String label = f.toString(); if(cf.getIdCode() != null) label = cf.getIdCode(); searchModel(System.out, label, m); } } catch(IOException ex) { System.err.println("IOException when processing "+f); } } } public static void main(String[] args) { AltConfBackrubFinder mainprog = new AltConfBackrubFinder(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("AltConfBackrubFinder.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'AltConfBackrubFinder.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.mc.AltConfBackrubFinder"); System.err.println("Copyright (C) 2004 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here File f = new File(arg); if(f.isFile()) inputFiles.add(f); else throw new IllegalArgumentException("'"+arg+"' is not a valid file name."); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/mc/SheetAxes.java0000644000000000000000000000504711531212724022427 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.mc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * SheetAxes is a data structure for describing a local * (residue specific) Cartesian coordinate system on a beta sheet, * relative to the strand direction and sheet normal vectors. * *

    Known bugs/problems: *

      *
    • Need a better H-bond potential: this one lets the C and N interact well
    • *
    • For cross-strand neighbors, along and across numbers don't correlate b/c * the parallel / antiparallel relationship should affect the sign of the angle!
    • *
    * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Wed Mar 31 17:38:10 EST 2004 */ public class SheetAxes //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## /** The pseudo-X axis, along the strand from N-term to C-term. Equals cross x normal. */ public Triple strand; /** The pseudo-Y axis, across the strands. Equals normal x CaCb. */ public Triple cross; /** The pseudo-Z axis, the least-squares-fit sheet normal. */ public Triple normal; /** Projections of the Ca->Cb vector onto the axes (dot product). */ double dotStrand, dotCross, dotNormal; /** Angular deviation of the Ca-Cb vector from the sheet normal, in degrees. */ public double angleAlong, angleAcross, angleNormal; //}}} //{{{ Constructor(s) //############################################################################## public SheetAxes(Tuple3 sheetNormal, Tuple3 strandNtoC, Tuple3 fromCaToCb) { super(); this.normal = new Triple(sheetNormal).unit(); this.cross = new Triple().likeCross(normal, strandNtoC).unit(); this.strand = new Triple().likeCross(cross, normal).unit(); // similar to strandNtoC dotStrand = strand.dot(fromCaToCb); dotCross = cross.dot(fromCaToCb); dotNormal = normal.dot(fromCaToCb); angleNormal = normal.angle(fromCaToCb); angleAlong = Math.toDegrees(Math.atan2(dotStrand, dotNormal)); angleAcross = Math.toDegrees(Math.atan2(dotCross, dotNormal)); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/0000755000000000000000000000000011744306102021277 5ustar rootrootking-2.21.120420/chiropraxis/src/chiropraxis/kingtools/ModelingTool.java0000644000000000000000000000771211531212732024544 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.*; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * ModelingTool provides a few small conveniences * for tools that work with the model manager. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Fri Sep 19 15:27:08 EDT 2003 */ abstract public class ModelingTool extends BasicTool { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## /** The model manager */ protected ModelManager2 modelman; //}}} //{{{ Constructor(s) //############################################################################## /** * @throws RuntimeException if the ModelManager2 plugin cannot be found */ public ModelingTool(ToolBox tb) { super(tb); modelman = null; Collection plugins = parent.getPluginList(); for(Iterator iter = plugins.iterator(); iter.hasNext(); ) { Plugin plugin = (Plugin)iter.next(); //if(ModelManager2.class.equals(plugin.getClass())) if(plugin instanceof ModelManager2) modelman = (ModelManager2)plugin; } if(modelman == null) throw new RuntimeException("Model manager plugin not loaded"); } //}}} //{{{ getHelpURL //################################################################################################## /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } //}}} //{{{ getResidueNearest //############################################################################## /** * Returns the residue with an atom nearest to the given point. * The model must be specified so that we can make sure the * AtomState we find isn't a "stray"; a state that doesn't match * a real residue in the model. This situation can arise when we * make mutations, for example. * @return null if the residue is not found */ public Residue getResidueNearest(Model m, ModelState s, double x, double y, double z) { Triple t = new Triple(x, y, z); double min2 = Double.MAX_VALUE; AtomState closest = null; s = s.createCollapsed(); // make sure we'll iterate through all points for(Iterator iter = s.getLocalStateMap().values().iterator(); iter.hasNext(); ) { AtomState a = (AtomState)iter.next(); double d = t.sqDistance(a); if(m.contains(a.getResidue()) && d < min2) { min2 = d; closest = a; } } if(closest == null) return null; else return closest.getResidue(); } //}}} //{{{ getDependencies //################################################################################################## /** * All modelling tools are dependent on the ModelManager2 plugin. */ static public Collection getDependencies() { Collection superDep = BasicTool.getDependencies(); ArrayList dep = new ArrayList(superDep); dep.add(ModelManager2.class.getName()); return dep; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/ShearTool.java0000644000000000000000000000643511531212732024051 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.SoftLog; import chiropraxis.mc.*; import chiropraxis.rotarama.*; //}}} /** * ShearTool is an implementation of the "shear" move * described for helices in Davis/Richardson 2006 and more generally in * Smith/Kortemme 2008. * *

    Copyright (C) 2010 by Daniel A. Keedy. All rights reserved. *
    Begun on Fri Jul 30 2010 */ public class ShearTool extends ModelingTool { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public ShearTool(ToolBox tb) { super(tb); } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return null; } public String getHelpAnchor() { return "#shear-tool"; } public String toString() { return "Shear tool"; } //}}} //{{{ start/stop/reset //################################################################################################## public void start() { super.start(); // force loading of data tables that will be used later try { Ramachandran.getInstance(); } catch(IOException ex) {} try { TauByPhiPsi.getInstance(); } catch(IOException ex) {} // Bring up model manager modelman.onShowDialog(null); // Helpful hint for users: this.services.setID("Ctrl-click, option-click, or middle-click the residue to shear"); kCanvas.repaint(); // to make it show up! } //}}} //{{{ c_click //################################################################################################## /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { if(p == null) { } else { Model model = modelman.getModel(); ModelState state = modelman.getMoltenState(); Residue ctrRes = this.getResidueNearest(model, state, p.getX(), p.getY(), p.getZ()); try { new ShearWindow(kMain, ctrRes, modelman); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), ctrRes+"doesn't have enough neighbors in the same chain.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/ScRotTool.java0000644000000000000000000000606311531212732024036 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import chiropraxis.rotarama.*; import chiropraxis.sc.*; import driftwood.moldb2.*; import driftwood.util.SoftLog; //}}} /** * ScRotTool has not yet been documented. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Wed Sep 24 13:29:16 EDT 2003 */ public class ScRotTool extends ModelingTool { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Residue targetRes = null; //}}} //{{{ Constructor(s) //############################################################################## public ScRotTool(ToolBox tb) { super(tb); } //}}} //{{{ start/stop/reset //################################################################################################## public void start() { super.start(); // force loading of data tables that will be used later try { Rotamer.getInstance(); } catch(IOException ex) {} // Bring up model manager modelman.onShowDialog(null); // Helpful hint for users: this.services.setID("Ctrl-click, option-click, or middle-click a residue to rotate it"); kCanvas.repaint(); // to make it show up! } //}}} //{{{ c_click //############################################################################## /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { if(p != null) { ModelState state = modelman.getMoltenState(); targetRes = this.getResidueNearest(modelman.getModel(), state, p.getX(), p.getY(), p.getZ()); try { new SidechainRotator(kMain, targetRes, modelman); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return "#scrot-tool"; } public String toString() { return "Sidechain rotator"; } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/FastModelOpen.java0000644000000000000000000000606011531212732024643 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.util.*; //}}} /** * FastModelOpen is a helper component for the ModelManager. * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Wed Jul 7 12:01:44 EDT 2004 */ public class FastModelOpen implements MouseListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## ModelManager2 client; public FatJList list; File basedir = null; //}}} //{{{ Constructor(s) //############################################################################## public FastModelOpen(ModelManager2 client) { super(); this.client = client; list = new FatJList(0, 10); list.addMouseListener(this); } //}}} //{{{ updateList //############################################################################## public void updateList(File basedir, javax.swing.filechooser.FileFilter filter) { File[] files = basedir.listFiles(); if(files == null) return; this.basedir = basedir; ArrayList okFiles = new ArrayList(); for(int i = 0; i < files.length; i++) { File f = files[i]; if(f.isFile() && !f.isDirectory() && filter.accept(f)) okFiles.add(f.getName()); } //System.err.println("Files approved by FastModelOpen:"); //System.err.println(okFiles); this.list.setListData(okFiles.toArray()); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Mouse listeners //################################################################################################## public void mouseClicked(MouseEvent ev) { if(ev.getClickCount() == 2 && basedir != null) { int index = list.locationToIndex(ev.getPoint()); if(index != -1) { String filename = list.getModel().getElementAt(index).toString(); File file = new File(basedir, filename); if(file.exists()) { try { client.openPDB(file); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } } } } public void mouseEntered(MouseEvent ev) {} public void mouseExited(MouseEvent ev) {} public void mousePressed(MouseEvent ev) {} public void mouseReleased(MouseEvent ev) {} //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/ExpectedNoePanel.java0000644000000000000000000001511211531212732025324 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * ExpectedNoePanel provides a GUI interface to * Brian Coggin's noe-display program. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Tue Sep 23 11:03:07 EDT 2003 */ public class ExpectedNoePanel extends TablePane implements ActionListener, ChangeListener { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.0###"); static final String DEFAULT_MAX_LENGTH = "4.5"; //}}} //{{{ Variable definitions //############################################################################## KingMain kMain; ModelManager2 modelman; BgKinRunner noePlotter = null; //JTextField tfDisplaySel; AttentiveComboBox cmDisplaySel; JTextField tfMaxLength; JCheckBox cbShowAll; //}}} //{{{ Constructor(s) //############################################################################## public ExpectedNoePanel(KingMain kmain, ModelManager2 modelman) { super(); this.kMain = kmain; this.modelman = modelman; buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { TablePane cp = this; //tfDisplaySel = new AttentiveTextField("{molten}"); //tfDisplaySel.addActionListener(this); cmDisplaySel = new AttentiveComboBox( new Object[] { "{molten}", "within 5 of {viewcenter}", "all", "viol" }); //cmDisplaySel.setEditable(true); -- redundant cmDisplaySel.addActionListener(this); tfMaxLength = new AttentiveTextField(DEFAULT_MAX_LENGTH); tfMaxLength.addActionListener(this); cbShowAll = new JCheckBox("Show all predicted NOEs", true); cbShowAll.addActionListener(this); JButton bnSimulate = new JButton(new ReflectiveAction("Simulate experiment(s)...", null, this, "onSimulateExperiment")); cp.save().weights(0,1).addCell(new JLabel("Display:")).restore(); //cp.save().hfill(true).addCell(tfDisplaySel).restore(); cp.save().hfill(true).addCell(cmDisplaySel).restore(); cp.newRow(); cp.save().weights(0,1).addCell(new JLabel("Max length:")).restore(); cp.save().hfill(true).addCell(tfMaxLength).restore(); cp.newRow(); // Not implemented yet... //cp.save().hfill(true).addCell(bnSimulate,2,1).restore(); //cp.newRow(); cp.addCell(cbShowAll,2,1); refreshGUI(); } //}}} //{{{ refreshGUI, onUpdateVis //################################################################################################## /** One stop shopping to ensure the GUI reflects the current conditions. */ public void refreshGUI() { if(modelman.noeFile == null) { cbShowAll.setEnabled(false); cbShowAll.setSelected(true); } else cbShowAll.setEnabled(true); } //}}} //{{{ getNoePlotter, visualizeNOEs //############################################################################## BgKinRunner getNoePlotter() { Kinemage kin = kMain.getKinemage(); if(kin != null && (noePlotter == null || !noePlotter.getKinemage().equals(kin))) { if(noePlotter != null) noePlotter.terminate(); // clean up the old one // Incomplete command line, will be completed in a moment noePlotter = new BgKinRunner(kMain, kin, ""); } return noePlotter; } /** noeFile may be null, if the user hasn't loaded one yet. */ public void visualizeNOEs(Collection residues, File noeFile, String noeFormat) { try { String all = (cbShowAll.isSelected() ? "a" : ""); String len = getMaxLength(); tfMaxLength.setText(len); String filepath; if(noeFile == null) { filepath = ""; all = "a"; } else filepath = "'"+noeFile.getCanonicalPath()+"'"; BgKinRunner np = getNoePlotter(); String noeCmd = " -t -g 'Expected NOEs' -f " +" -n "+noeFormat +" -e"+all+"n "+len+" '"+getDisplaySelection()+"'" +" '{pdbfile}' "+filepath; String noeExe = noePlotter.findProgram("noe-display"); noePlotter.setCommand(noeExe+noeCmd); // now complete cmd line np.requestRun(residues, modelman.getMoltenState(), modelman.getFrozenPDB()); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } //}}} //{{{ getDisplaySelection, getMaxLength //############################################################################## String getDisplaySelection() { //return tfDisplaySel.getText(); return cmDisplaySel.getText(); } String getMaxLength() { try { double len = Double.parseDouble(tfMaxLength.getText()); if(len < 1.0) len = 1.0; if(len > 20.0) len = 20.0; return df.format(len); } catch(NumberFormatException ex) { return DEFAULT_MAX_LENGTH; } } //}}} //{{{ actionPerformed, stateChanged //############################################################################## public void actionPerformed(ActionEvent ev) { modelman.requestStateRefresh(); } public void stateChanged(ChangeEvent ev) { modelman.requestStateRefresh(); } //}}} //{{{ onSimulateExperiment //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSimulateExperiment(ActionEvent ev) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "This feature has not been implemented yet.", "Sorry!", JOptionPane.ERROR_MESSAGE); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/SswingRunner.java0000644000000000000000000001631111531212732024607 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.MessageFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.moldb2.*; import driftwood.util.*; import driftwood.data.*; import driftwood.util.ReflectiveRunnable; //}}} /** * SswingRunner runs SSWING as a background job and then creates * a UI to potentially modify the result, using a SidechainSswing window. * *

    Each instance of this class creates a background thread, which dies off * when SSWING is finished running. * *

    This class is based on BgKinRunnner, so the structure is a little weird * because this task is a little different. Copy and paste was the quick answer though... * *

    Copyright (C) 2004 by XXX. All rights reserved. *
    Begun on Mon Jun 23 12:16:40 EDT 2004 */ public class SswingRunner implements Runnable { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; ModelManager2 modelman; Residue targetRes; /** The command string. Not really a template; already in final form. */ volatile String cmdTemplate = null; /** Controls how much error logging goes on. Set at create time from KingPrefs. */ final boolean dumpCmdLine, dumpStdErr, dumpStdOut; /** Controls how long background jobs can live, in msec. */ final int helperTimeout; /* sidechain chi angles */ double[] angles = new double[5]; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public SswingRunner(KingMain kmain, ModelManager2 modelman, Residue targetRes, String cmd) { if(kmain == null || modelman == null || targetRes == null || cmd == null) throw new NullPointerException("Null parameters are not allowed."); this.kMain = kmain; this.modelman = modelman; this.targetRes = targetRes; this.cmdTemplate = cmd; dumpCmdLine = kMain.getPrefs().getBoolean("showHelperCommand"); dumpStdErr = kMain.getPrefs().getBoolean("showHelperErrors"); dumpStdOut = kMain.getPrefs().getBoolean("showHelperOutput"); helperTimeout = kMain.getPrefs().getInt("helperTimeout") * 1000; Thread thread = new Thread(this); thread.setDaemon(true); thread.start(); } //}}} //{{{ run //################################################################################################## public void run() { try { runCommand(cmdTemplate); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } // update the UI from the GUI thread SwingUtilities.invokeLater(new ReflectiveRunnable(this, "cmdFinished")); } //}}} //{{{ runCommand //################################################################################################## /** This is where the background thread does its work. */ void runCommand(String cmdLine) throws IOException { // This class doesn't need or support placeholders if(dumpCmdLine) SoftLog.err.println(cmdLine); // print cmd line for debugging String[] cmdTokens = Strings.tokenizeCommandLine(cmdLine); // waiting for sswing process to finish Process proc = null; try { proc = Runtime.getRuntime().exec(cmdTokens); proc.waitFor(); } catch (IOException e1) { System.out.println("can't create process:" +e1); } catch (InterruptedException ex) { System.out.println("process can't wait:" +ex); } // initialize the chi angles for (int i=0; iHingeTool is an implementation of "C-alpha hinges," * a rotation around an axis connecting any two C-alphas. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Mon Jun 2 15:59:18 EDT 2003 */ public class HingeTool extends ModelingTool implements Remodeler, ChangeListener { //{{{ Constants static final DecimalFormat df1 = new DecimalFormat("+0.0;-0.0"); static final DecimalFormat df0 = new DecimalFormat("0"); static final Color normalColor = new Color(0f, 0f, 0f); static final Color alertColor = new Color(0.6f, 0f, 0f); //}}} //{{{ Variable definitions //################################################################################################## Residue anchor1, anchor2; PeptideTwister2 twister = null; KList anchorList; Ramachandran rama = null; TauByPhiPsi tauscorer = null; //GUI JPanel tabwrapper; JTabbedPane tabpane; TablePane toolpane; AngleDial hingeDial; JLabel[] headerLabels, res1Labels, res2Labels; JCheckBox cbIdealizeSC; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public HingeTool(ToolBox tb) { super(tb); anchor1 = anchor2 = null; anchorList = new KList(KList.BALL); buildGUI(); } //}}} //{{{ buildGUI //################################################################################################## private void buildGUI() { hingeDial = new AngleDial(); hingeDial.addChangeListener(this); JButton btnRelease = new JButton(new ReflectiveAction("Release", null, this, "onReleaseResidues")); headerLabels = new JLabel[] { new JLabel("Residue"), new JLabel("Tau dev"), new JLabel("Karplus"), new JLabel("Ramachdrn"), new JLabel("phi,psi") }; res1Labels = new JLabel[] { new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel() }; res2Labels = new JLabel[] { new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel() }; cbIdealizeSC = new JCheckBox(new ReflectiveAction("Idealize end sidechains", null, this, "onToggleIdealSC")); cbIdealizeSC.setSelected(true); toolpane = new TablePane(); toolpane.startSubtable(); // this way, contents aren't stretched toolpane.save().hfill(true).vfill(true).addCell(hingeDial).restore(); toolpane.save().center().middle(); toolpane.addCell(btnRelease); toolpane.restore(); toolpane.newRow(); toolpane.addCell(cbIdealizeSC, 2, 1); toolpane.newRow(); toolpane.save().hfill(true).startSubtable(2,1); toolpane.hfill(true).insets(1,3,1,3); for(int i = 0; i < headerLabels.length; i++) { toolpane.add(headerLabels[i]); toolpane.add(res1Labels[i]); toolpane.add(res2Labels[i]); toolpane.newRow(); } toolpane.endSubtable().restore(); toolpane.endSubtable(); // this way, contents aren't stretched tabpane = new JTabbedPane(); tabpane.addTab("Hinges", toolpane); // Prevents the background from showing through tabwrapper = new JPanel(new BorderLayout()); tabwrapper.add(tabpane); } //}}} //{{{ initDialog, buildMenus //################################################################################################## protected void initDialog() { super.initDialog(); buildMenus(); dialog.pack(); } private void buildMenus() { JMenuBar menubar = new JMenuBar(); JMenu menu, submenu; JMenuItem item; menu = new JMenu("Help"); menu.setMnemonic(KeyEvent.VK_H); menubar.add(menu); menu.add(this.getHelpMenuItem()); dialog.setJMenuBar(menubar); } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return tabwrapper; } public String getHelpAnchor() { return "#hinges-tool"; } public String toString() { return "C-alpha hinges"; } //}}} //{{{ start/stop/reset //################################################################################################## public void start() { super.start(); // force loading of data tables that will be used later try { rama = Ramachandran.getInstance(); } catch(IOException ex) {} try { tauscorer = TauByPhiPsi.getInstance(); } catch(IOException ex) {} anchorList.setColor( KPalette.peach ); // Bring up model manager modelman.onShowDialog(null); // Helpful hint for users: this.services.setID("Ctrl-click, option-click, or middle-click the two hinge endpoints"); kCanvas.repaint(); // to make it show up! } //}}} //{{{ c_click, markAnchor, wheel, c_wheel //################################################################################################## /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { if(p == null || (anchor1 != null && anchor2 != null)) { onReleaseResidues(null); } else if(p != null) { ModelState state = modelman.getMoltenState(); Residue newRes = this.getResidueNearest(modelman.getModel(), state, p.getX(), p.getY(), p.getZ()); if(anchor1 == null) { anchor1 = newRes; markAnchor(newRes, state); updateLabels(); } else if(anchor2 == null) { anchor2 = newRes; markAnchor(newRes, state); //updateLabels(); -- done by grabResidues() grabResidues(); } } } /** Creates a new ball to mark the position of an anchor residue */ void markAnchor(Residue res, ModelState state) { Atom ca = res.getAtom(" CA "); if(ca == null) return; try { AtomState cas = state.get(ca); BallPoint mark = new BallPoint("C-alpha axis endpoint"); mark.r0 = 0.3f; mark.setX(cas.getX()); mark.setY(cas.getY()); mark.setZ(cas.getZ()); anchorList.add(mark); kCanvas.repaint(); } catch(AtomException ex) { ex.printStackTrace(); } } public void wheel(int rotation, MouseEvent ev) { hingeDial.setDegrees(hingeDial.getDegrees()-rotation); } public void c_wheel(int rotation, MouseEvent ev) { super.wheel(rotation, ev); } //}}} //{{{ stateChanged, updateModelState, onToggleIdealSC //################################################################################################## // ev may be null! public void stateChanged(ChangeEvent ev) { modelman.requestStateRefresh(); // will call this.updateModelState() updateLabels(); if(twister != null) twister.updateLabels(); kCanvas.repaint(); } public ModelState updateModelState(ModelState before) { try { Collection residues = CaRotation.makeMobileGroup(modelman.getModel(), anchor1, anchor2); ModelState after = CaRotation.makeConformation( residues, before, hingeDial.getDegrees(), cbIdealizeSC.isSelected()); if(twister != null) after = twister.updateConformation(after); return after; } catch(AtomException ex) { ex.printStackTrace(); return before; } } // target of reflection public void onToggleIdealSC(ActionEvent ev) { stateChanged(null); } //}}} //{{{ updateLabels //################################################################################################## void updateLabels() { updateLabels(anchor1, res1Labels); updateLabels(anchor2, res2Labels); } void updateLabels(Residue r, JLabel[] l) { // Make color normal again for(int i = 0; i < l.length; i++) l[i].setForeground(normalColor); if(r == null) { for(int i = 0; i < l.length; i++) l[i].setText(""); } else { l[0].setText(r.toString()); Model model = modelman.getModel(); ModelState modelState = modelman.getMoltenState(); try { double taudev = AminoAcid.getTauDeviation(r, modelState); l[1].setText(df1.format(taudev)); if(Math.abs(taudev) >= 3.0) l[1].setForeground(alertColor); } catch(AtomException ex) { l[1].setText("-?-"); } try { double phi = AminoAcid.getPhi(model, r, modelState); double psi = AminoAcid.getPsi(model, r, modelState); l[4].setText(df0.format(phi)+" , "+df0.format(psi)); if(rama == null) l[3].setText("[no data]"); else if(rama.isOutlier(model, r, modelState)) { l[3].setText("OUTLIER"); l[3].setForeground(alertColor); } else if(rama.rawScore(model, r, modelState) > 0.02) l[3].setText("favored"); else l[3].setText("allowed"); if(tauscorer == null) l[2].setText("[no data]"); else { double taudev = tauscorer.getTauDeviation(model, r, modelState); l[2].setText(df1.format(taudev)); if(Math.abs(taudev) >= 3.0) l[2].setForeground(alertColor); } } catch(AtomException ex) { l[2].setText("-?-"); l[3].setText("[no phi,psi]"); l[4].setText("? , ?"); } catch(ResidueException ex) { l[2].setText("-?-"); l[3].setText("[no phi,psi]"); l[4].setText("? , ?"); } } dialog.pack(); } //}}} //{{{ grabResidues //################################################################################################## /** Responsible for checking residues out from the ModelManager */ void grabResidues() { if(anchor1 == null || anchor2 == null) return; hingeDial.setDegrees(0); // no rotation to start with // put anchors in logical order if(anchor1.compareTo(anchor2) > 0) { Residue swap = anchor1; anchor1 = anchor2; anchor2 = swap; } try { Collection residues = CaRotation.makeMobileGroup(modelman.getModel(), anchor1, anchor2); modelman.registerTool(this, residues); // Insert new tab twister = new PeptideTwister2(this, residues); Dimension d = twister.getPreferredSize(); if(d.getWidth() <= 500) tabpane.insertTab("Peptides", null, twister, null, 1); else { JScrollPane twistScroll = new JScrollPane(twister, JScrollPane.VERTICAL_SCROLLBAR_NEVER, JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED); d.setSize(500, d.getHeight()+50); twistScroll.setPreferredSize(d); tabpane.insertTab("Peptides", null, twistScroll, null, 1); } } catch(IllegalArgumentException ex) { // Couldn't connect, so start over JOptionPane.showMessageDialog(kMain.getTopWindow(), anchor1+" and "+anchor2+"\nare not part of the same chain.\nPlease try again.", "Sorry!", JOptionPane.ERROR_MESSAGE); anchor1 = anchor2 = null; anchorList.clear(); } stateChanged(null); } //}}} //{{{ onReleaseResidues //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** * Checks residues back into the ModelManager, * nulls the anchors and repaints the graphics. * @param ev is ignored, may be null. */ public void onReleaseResidues(ActionEvent ev) { if(anchor1 == null || anchor2 == null) { anchor1 = anchor2 = null; anchorList.clear(); updateLabels(); kCanvas.repaint(); return; } int reply = JOptionPane.showConfirmDialog(kMain.getTopWindow(), "Do you want to keep the changes\nyou've made to these residues?", "Keep changes?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if(reply == JOptionPane.CANCEL_OPTION) return; if(reply == JOptionPane.YES_OPTION) modelman.requestStateChange(this); // will call this.updateModelState() else // == JOptionPane.NO_OPTION modelman.unregisterTool(this); anchor1 = anchor2 = null; anchorList.clear(); tabpane.removeTabAt(1); twister = null; updateLabels(); kCanvas.repaint(); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/ModelPlotter.java0000644000000000000000000003431411531212732024560 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import king.points.*; import king.io.*; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.util.*; import driftwood.data.*; import molikin.logic.*; import molikin.*; //}}} /** * ModelPlotter is capable of taking molecular * structures from driftwood.moldb2 and rendering them as * kinemage entities. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Thu Mar 20 16:12:43 EST 2003 */ public class ModelPlotter { //{{{ Constants static final DecimalFormat df2 = new DecimalFormat("0.00"); //}}} //{{{ Variable definitions //################################################################################################## Props scProps; VectorPoint prev = null; KList listCa = null; KList listMc = null; KList listMcH = null; KList listSc = null; KList listScH = null; public KPaint mainColor = KPalette.defaultColor; public KPaint sideColor = KPalette.defaultColor; public KPaint hyColor = KPalette.defaultColor; public int modelWidth = 2; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public ModelPlotter() { // Load side chain connectivity database scProps = new Props(); try { InputStream is = getClass().getResourceAsStream("sc-connect.props"); if(is != null) { scProps.load(is); is.close(); } else SoftLog.err.println("Couldn't find sc-connect.props"); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } //}}} //{{{ plotAminoAcids //################################################################################################## /** * Creates a plot of the given protein residues (backbone and sidechain) * @param residues a Collection of Residues to plot. If this is large, * it should probably be a Set, for performance reasons. * @param state the conformation that should be plotted */ public void plotAminoAcids(Model model, Collection residues, ModelState state) { if(listCa == null || listMc == null || listMcH == null || listSc == null || listScH == null) createLists(); clearLists(); StreamTank kinData = new StreamTank(); PrintWriter out = new PrintWriter(new OutputStreamWriter(kinData)); BallAndStickLogic bsl = Quickin.getLotsLogic(false); out.println("@kinemage 1"); bsl.printKinemage(out, model, Collections.singletonList(state), new UberSet(residues), "", mainColor.toString()); out.flush(); kinData.close(); KinfileParser parser = new KinfileParser(); LineNumberReader lnr = new LineNumberReader(new InputStreamReader(kinData.getInputStream())); try { parser.parse(lnr); ArrayList kins = new ArrayList(parser.getKinemages()); for (Kinemage kin : kins) { KIterator lists = KIterator.allLists(kin); for (KList l : lists) { KIterator points = KIterator.allPoints(l); if (l.getName().endsWith("mc")) { moveAllPoints(listMc, points); } else if (l.getName().endsWith("mcH")) { moveAllPoints(listMcH, points); } else if (l.getName().endsWith("sc")) { moveAllPoints(listSc, points); } else if (l.getName().endsWith("scH")) { moveAllPoints(listScH, points); } } } lnr.close(); } catch (IOException ie) { //I don't think this should ever happen... System.out.println("IOException in streamtank in ModelPlotter?"); } parser = null; kinData = null; // For each residue, draw mainchain, then draw sidechain. // for(Iterator iter = residues.iterator(); iter.hasNext(); ) // { // Residue r = (Residue)iter.next(); // Residue next = r.getNext(model); // next along the chain // // // Heavy atom backbone trace // plotString(r, state, scProps.getString("aminoacid.mc", ""), listMc); // // Hydrogen backbone trace // plotString(r, state, scProps.getString("aminoacid.hy", ""), listMcH); // // // Heavy atom sidechain trace // String tlc = r.getName().toLowerCase(); // plotString(r, state, scProps.getString(tlc+".sc", ""), listSc); // // Hydrogen sidechain trace // plotString(r, state, scProps.getString(tlc+".hy", ""), listScH); // // // Connect the backbone between residues as necessary // if(next != null && residues.contains(next)) // { // Atom C, N; // C = r.getAtom(" C "); // N = next.getAtom(" N "); // if(C != null && N != null) // { // try { // plotAtom(state.get(C), false, listMc); // plotAtom(state.get(N), true, listMc); // } catch(AtomException ex) { SoftLog.err.println(ex.getMessage()); } // } // // Atom Ca1, Ca2; // Ca1 = r.getAtom(" CA "); // Ca2 = next.getAtom(" CA "); // if(Ca1 != null && Ca2 != null) // { // try { // plotAtom(state.get(Ca1), false, listCa); // plotAtom(state.get(Ca2), true, listCa); // } catch(AtomException ex) { SoftLog.err.println(ex.getMessage()); } // } // } // }//for(each residue) // // prev = null; //avoid memory leaks } //}}} //{{{ buildKinObject /** for building a Kinemage object from a model and collection of residues **/ public static Kinemage buildKinObject(Model model, Collection residues, ModelState state) { StreamTank kinData = new StreamTank(); PrintWriter out = new PrintWriter(new OutputStreamWriter(kinData)); BallAndStickLogic bsl = Quickin.getLotsLogic(false); out.println("@kinemage 1"); bsl.printKinemage(out, model, Collections.singletonList(state), new UberSet(residues), "", "grey"); out.flush(); kinData.close(); KinfileParser parser = new KinfileParser(); LineNumberReader lnr = new LineNumberReader(new InputStreamReader(kinData.getInputStream())); Kinemage outKin = null; try { parser.parse(lnr); ArrayList kins = new ArrayList(parser.getKinemages()); outKin = kins.get(0); lnr.close(); } catch (IOException ie) { //I don't think this should ever happen... System.out.println("IOException in streamtank in Quickin?"); ie.printStackTrace(); } parser = null; kinData = null; return outKin; } //}}} //{{{ moveAllPoints public void moveAllPoints(KList listTo, KIterator points) { for (KPoint p : points) { listTo.add(p); } } //}}} //{{{ plotString //################################################################################################## /** * Syntax for connectivity strings is "aaaa,bbbb,cccc;dddd,eeee" * where commas separate 4-character atom IDs and semi-colons * denote breaks in the chain (like P in kinemage format). */ void plotString(Residue res, ModelState state, String connect, KList drawList) { String token; StringTokenizer tokenizer = new StringTokenizer(connect, ",;", true); boolean lineto = false; Atom atom; while(tokenizer.hasMoreTokens()) { token = tokenizer.nextToken(); if(token.equals(",")) {} //ignore else if(token.equals(";")) lineto = false; //break chain else //draw line: { atom = res.getAtom(token); if(atom == null) lineto = false; // break chain else { try { plotAtom(state.get(atom), lineto, drawList); // plot atom lineto = true; } catch(AtomException ex) { SoftLog.err.println(ex.getMessage()); lineto = false; } } } }// while(more tokens) } //}}} //{{{ plotAtom //################################################################################################## void plotAtom(AtomState atomState, boolean lineto, KList list) { Residue r = atomState.getResidue(); String name = ( atomState.getName() +atomState.getAltConf() +r.getName() +" "+r.getChain()+" " +r.getSequenceNumber() +r.getInsertionCode() ).toLowerCase() +(atomState.getOccupancy() < 1 ? " "+df2.format(atomState.getOccupancy()) : "") +(atomState.getTempFactor() > 1 ? " B"+df2.format(atomState.getTempFactor()) : ""); if(!lineto) prev = null; VectorPoint p = new VectorPoint(name, prev); p.setX(atomState.getX()); p.setY(atomState.getY()); p.setZ(atomState.getZ()); list.add(p); prev = p; } //}}} //{{{ createLists //################################################################################################## /** * Creates the lists used by this plotter. * Lists are created only once -- if called again, * it will reconfigure them, but it will not create * new instances */ public void createLists() { // Added "refit" prefix to master names b/c otherwise these lists // may be switched off unexpectedly when inserted into a kinemage // where the existing masters are already off. if(listCa == null) { listCa = new KList(KList.VECTOR); listCa.setName("Calphas"); listCa.addMaster("refit Calphas"); // matches Prekin 6.25 listCa.setOn(false); } if(listMc == null) { listMc = new KList(KList.VECTOR); listMc.setName("mc"); listMc.addMaster("refit mainchain"); // matches Prekin 6.25 } if(listMcH == null) { listMcH = new KList(KList.VECTOR); listMcH.setName("mcH"); listMcH.addMaster("refit mainchain"); // matches Prekin 6.25 listMcH.addMaster("refit H"); // matches Prekin 6.25 } if(listSc == null) { listSc = new KList(KList.VECTOR); listSc.setName("sc"); listSc.addMaster("refit sidechains"); // matches Prekin 6.25 } if(listScH == null) { listScH = new KList(KList.VECTOR); listScH.setName("scH"); listScH.addMaster("refit sidechains"); // matches Prekin 6.25 listScH.addMaster("refit H"); // matches Prekin 6.25 } listCa.setWidth(modelWidth); listCa.setColor(mainColor); listMc.setWidth(modelWidth); listMc.setColor(mainColor); listMcH.setWidth(modelWidth); listMcH.setColor(hyColor); listSc.setWidth(modelWidth); listSc.setColor(sideColor); listScH.setWidth(modelWidth); listScH.setColor(hyColor); } //}}} //{{{ createGroup, createSubgroup //################################################################################################## /** * Creates a (dominant) group that owns this plotter's lists. * Unlike createLists, a new object is created every time. */ public KGroup createGroup(String name) { if(listCa == null || listMc == null || listMcH == null || listSc == null || listScH == null) createLists(); KGroup group = new KGroup(); group.setName(name); group.setDominant(true); KGroup subMc = new KGroup("mainchain"); group.add(subMc); KGroup subSc = new KGroup("sidechain"); group.add(subSc); subMc.add(listMc); subMc.add(listMcH); subMc.add(listCa); subSc.add(listSc); subSc.add(listScH); return group; } /** * Creates a (dominant) subgroup that owns this plotter's lists. * Unlike createLists, a new object is created every time. */ public KGroup createSubgroup(String name) { if(listMc == null || listMcH == null || listSc == null || listScH == null) createLists(); KGroup subgroup = new KGroup(); subgroup.setName(name); subgroup.setDominant(true); subgroup.add(listMc); subgroup.add(listMcH); subgroup.add(listCa); subgroup.add(listSc); subgroup.add(listScH); return subgroup; } //}}} //{{{ clearLists, setHOn //################################################################################################## /** Wipes the contents of the lists */ public void clearLists() { if(listCa != null) listCa.clear(); if(listMc != null) listMc.clear(); if(listMcH != null) listMcH.clear(); if(listSc != null) listSc.clear(); if(listScH != null) listScH.clear(); } /** Turns the hydrogens on or off */ public void setHOn(boolean on) { if(listMcH != null) listMcH.setOn(on); if(listScH != null) listScH.setOn(on); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/SidechainRotator.java0000644000000000000000000003671411744305702025424 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import chiropraxis.sc.*; import chiropraxis.rotarama.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.util.SoftLog; //}}} /** * SidechainRotator is a GUI for repositioning a sidechain * based on its dihedral angles (chi1, chi2, etc). * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Thu May 8 15:36:11 EDT 2003 */ public class SidechainRotator implements Remodeler, ChangeListener, ListSelectionListener, WindowListener { //{{{ Constants static final DecimalFormat df1 = new DecimalFormat("0.0"); //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; Residue targetRes; ModelManager2 modelman; SidechainAngles2 scAngles; Rotamer rotamer; SidechainIdealizer scIdealizer = null; SidechainsLtoD scFlipper = null; Window dialog; JCheckBox cbIdealize; JCheckBox useDaa; JList rotamerList; AngleDial[] dials; JLabel rotaQuality; /** Marker for logical multi-dial update */ boolean isUpdating = false; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @throws IllegalArgumentException if the residue code isn't recognized * @throws IOException if the needed resource(s) can't be loaded from the JAR file * @throws NoSuchElementException if the resource is missing a required entry */ public SidechainRotator(KingMain kMain, Residue target, ModelManager2 mm) throws IOException { this.kMain = kMain; this.targetRes = target; this.modelman = mm; this.scAngles = new SidechainAngles2(); this.rotamer = Rotamer.getInstance(); this.scFlipper = new SidechainsLtoD(); try { scIdealizer = new SidechainIdealizer(); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } buildGUI(kMain.getTopWindow()); modelman.registerTool(this, Collections.singleton(targetRes)); } //}}} //{{{ buildGUI //################################################################################################## private void buildGUI(Frame frame) { // Dials TablePane dialPane = new TablePane(); String[] angleNames = scAngles.nameAllAngles(targetRes); if(angleNames == null) throw new IllegalArgumentException("Bad residue code '"+targetRes.getName()+"' isn't recognized"); double[] angleVals = scAngles.measureAllAngles(targetRes, modelman.getMoltenState()); dials = new AngleDial[angleNames.length]; for(int i = 0; i < angleNames.length; i++) { dialPane.add(new JLabel(angleNames[i])); dials[i] = new AngleDial(); dials[i].setOrigDegrees(angleVals[i]); dials[i].setDegrees(angleVals[i]); dials[i].addChangeListener(this); dialPane.add(dials[i]); dialPane.newRow(); } // Top-level pane JPanel twistPane = new JPanel(new BorderLayout()); twistPane.add(dialPane, BorderLayout.WEST); // Rotamer list RotamerDef[] rotamers = scAngles.getAllRotamers(targetRes); if(rotamers == null) throw new IllegalArgumentException("Bad residue code '"+targetRes.getName()+"' isn't recognized"); RotamerDef origRotamer = new RotamerDef(); origRotamer.rotamerName = "original"; origRotamer.chiAngles = scAngles.measureChiAngles(targetRes, modelman.getMoltenState()); RotamerDef[] rotamers2 = new RotamerDef[ rotamers.length+1 ]; System.arraycopy(rotamers, 0, rotamers2, 1, rotamers.length); rotamers2[0] = origRotamer; rotamerList = new JList(rotamers2); rotamerList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); rotamerList.setSelectionModel(new ReclickListSelectionModel(rotamerList)); rotamerList.addListSelectionListener(this); // Rotamer quality readout rotaQuality = new JLabel(); rotaQuality.setToolTipText("Quality assessment for the current side-chain conformation"); setFeedback(); TablePane rotamerPane = new TablePane(); rotamerPane.hfill(true).vfill(true).weights(1,1).addCell(new JScrollPane(rotamerList)); rotamerPane.newRow().weights(1,0).add(rotaQuality); twistPane.add(rotamerPane, BorderLayout.CENTER); // Other controls TablePane optionPane = new TablePane(); cbIdealize = new JCheckBox(new ReflectiveAction("Idealize sidechain", null, this, "onIdealizeOnOff")); if(scIdealizer != null) cbIdealize.setSelected(true); else cbIdealize.setEnabled(false); optionPane.addCell(cbIdealize); useDaa = new JCheckBox(new ReflectiveAction("Use D-amino acid", null, this, "onDaminoAcid")); useDaa.setSelected(false); optionPane.addCell(useDaa); twistPane.add(optionPane, BorderLayout.NORTH); JButton btnRelease = new JButton(new ReflectiveAction("Finished", null, this, "onReleaseResidue")); JButton btnBackrub = new JButton(new ReflectiveAction("BACKRUB", null, this, "onBackrub")); JButton btnMethyls = new JButton(new ReflectiveAction("Methyls", null, this, "onMethyls")); TablePane2 btnPane = new TablePane2(); btnPane.addCell(btnRelease); btnPane.addCell(btnBackrub); btnPane.addCell(btnMethyls); twistPane.add(btnPane, BorderLayout.SOUTH); // Assemble the dialog if (kMain.getPrefs().getBoolean("minimizableTools")) { JFrame fm = new JFrame(targetRes.toString()+" rotator"); fm.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); fm.setContentPane(twistPane); dialog = fm; } else { JDialog dial = new JDialog(frame, targetRes.toString()+" rotator", false); dial.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dial.setContentPane(twistPane); dialog = dial; } dialog.addWindowListener(this); dialog.pack(); dialog.setVisible(true); } //}}} //{{{ onReleaseResidue, onBackrub, onMethyls, onIdealizeOnOff, onDaminoAcid //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** * Checks residues back into the ModelManager. * @param ev is ignored, may be null. */ public void onReleaseResidue(ActionEvent ev) { int reply = JOptionPane.showConfirmDialog(dialog, "Do you want to keep the changes\nyou've made to this residue?", "Keep changes?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if(reply == JOptionPane.CANCEL_OPTION) return; if(reply == JOptionPane.YES_OPTION) { modelman.requestStateChange(this); // will call this.updateModelState() modelman.addUserMod("Refit sidechain of "+targetRes); } else // == JOptionPane.NO_OPTION modelman.unregisterTool(this); dialog.dispose(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onBackrub(ActionEvent ev) { try { new BackrubWindow(kMain, targetRes, modelman); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), targetRes+" doesn't have neighbors in the same chain.\n", "Sorry!", JOptionPane.ERROR_MESSAGE); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onMethyls(ActionEvent ev) { try { new MethylRotator(kMain, targetRes, modelman); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), targetRes+" doesn't have methyl groups in its sidechain.\n", "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Can't load needed resource(s) from the JAR file for "+targetRes+"\n", "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onIdealizeOnOff(ActionEvent ev) { stateChanged(null); } public void onDaminoAcid(ActionEvent ev) { Object[] options = {"Absolutely", "No, that's unnatural"}; int reply = JOptionPane.showOptionDialog(dialog, "Are you sure you want to change the\nchirality (L vs. D) of this residue?", "Change chirality?", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, options, options[1]); if(reply == JOptionPane.YES_OPTION) { stateChanged(null); } else // == JOptionPane.NO_OPTION { useDaa.setSelected(!useDaa.isSelected()); // cancel checkbox selection } } //}}} //{{{ isUpdating //################################################################################################## /** * Implements a means of updating several dials at once * while maintaining getValueIsAdjusting() == true. * This is useful to us in e.g. setAllAngles(). */ public boolean isUpdating() { return isUpdating; } public void isUpdating(boolean b) { isUpdating = b; } //}}} //{{{ stateChanged, valueChanged, getValueIsAdjusting //################################################################################################## /** Gets called when the dials move. */ public void stateChanged(ChangeEvent ev) { // This keeps us from running Probe N times when a rotamer with // N angles is selected from the list! (Maybe?) if(!isUpdating()) modelman.requestStateRefresh(); setFeedback(); // otherwise, we evaluate the old conformation } /* Gets called when a new rotamer is picked from the list */ public void valueChanged(ListSelectionEvent ev) { RotamerDef def = (RotamerDef)rotamerList.getSelectedValue(); if(def != null) initSomeAngles(def.chiAngles); // else there is no current selection } /** Returns true if any of the dials is currently being updated */ public boolean getValueIsAdjusting() { if(isUpdating()) return true; for(int i = 0; i < dials.length; i++) { if(dials[i].getValueIsAdjusting()) return true; } return false; } //}}} //{{{ get/set/initAllAngles, initSomeAngles //################################################################################################## /** (measured in degrees) */ public double[] getAllAngles() { double[] angles = new double[dials.length]; for(int i = 0; i < dials.length; i++) angles[i] = dials[i].getDegrees(); return angles; } /** (measured in degrees) */ public void setAllAngles(double[] angles) { if(angles.length < dials.length) throw new IllegalArgumentException("Not enough angles provided!"); isUpdating(true); for(int i = 0; i < dials.length; i++) dials[i].setDegrees(angles[i]); isUpdating(false); stateChanged(new ChangeEvent(this)); } /** (measured in degrees) */ public void initAllAngles(double[] angles) { if(angles.length < dials.length) throw new IllegalArgumentException("Not enough angles provided!"); initSomeAngles(angles); } /** Doesn't check to make sure there are enough angles to set all dials */ public void initSomeAngles(double[] angles) { int len = Math.min(angles.length, dials.length); isUpdating(true); for(int i = 0; i < len; i++) { dials[i].setOrigDegrees(angles[i]); dials[i].setDegrees(angles[i]); } isUpdating(false); stateChanged(new ChangeEvent(this)); } //}}} //{{{ setFeedback //################################################################################################## /** * Sets the string that will be displayed as feedback * on the quality of the currently selected rotamer. */ public void setFeedback() { //rotaQuality.setText("-???-"); try { double score = rotamer.evaluate(targetRes, modelman.getMoltenState()) * 100.0; String eval; if(score > 20) eval = "Excellent"; else if(score > 10) eval = "Good"; else if(score > 2) eval = "Fair"; else if(score > 1) eval = "Poor"; else eval = "OUTLIER"; rotaQuality.setText(eval+" ("+df1.format(score)+"%)"); } catch(IllegalArgumentException ex) { rotaQuality.setText("-"); } } //}}} //{{{ updateModelState //################################################################################################## /** * Allows this tool to modify the geometry of the current model. * This function is called by the model manager at two times: *

      *
    1. When this tool is registered and someone requests * that the molten model be updated
    2. *
    3. When this tool requests that the model be permanently changed.
    4. *
    * Tools are absolutely not permitted to modify s: all changes * should be done in a new ModelState which should be returned * from this function. */ public ModelState updateModelState(ModelState s) { ModelState ret = s; if(scIdealizer != null && cbIdealize.isSelected()) ret = scIdealizer.idealizeSidechain(targetRes, s); if (useDaa.isSelected()) { try { ret = scFlipper.changeSidechainLtoD(targetRes, s); } catch (AtomException ae) { ae.printStackTrace(SoftLog.err); ret = s; } } ret = scAngles.setAllAngles(targetRes, ret, this.getAllAngles()); return ret; } //}}} //{{{ Dialog window listeners //################################################################################################## public void windowActivated(WindowEvent ev) {} public void windowClosed(WindowEvent ev) {} public void windowClosing(WindowEvent ev) { onReleaseResidue(null); } public void windowDeactivated(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowOpened(WindowEvent ev) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/PeptideTwister2.java0000644000000000000000000001321711531212732025203 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.moldb2.*; import chiropraxis.mc.*; //}}} /** * PeptideTwister2 is an interface that allows one * to adjust many different peptide orientations at once, * so as to minimize tau deviation along the length of some chain. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Wed Jul 2 11:42:51 EDT 2003 */ public class PeptideTwister2 extends JPanel implements ActionListener { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## HingeTool parent; TablePane mainPanel; JCheckBox enableDials; Residue[] residues; AngleDial[] resDials; JLabel[][] resLabels; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PeptideTwister2(HingeTool parent, Collection res) { super(new BorderLayout()); this.parent = parent; this.residues = (Residue[])res.toArray(new Residue[res.size()]); buildGUI(); } //}}} //{{{ buildGUI //################################################################################################## private void buildGUI() { resDials = new AngleDial[ residues.length-1 ]; resLabels = new JLabel[ residues.length ][ 5 ]; mainPanel = new TablePane(); mainPanel.weights(0,0).add(makeHeaderLabels()); mainPanel.weights(1,1).hfill(true).vfill(true).startSubtable().center(); for(int i = 0; i < resLabels.length; i++) { Box box = Box.createVerticalBox(); for(int j = 0; j < resLabels[i].length; j++) { resLabels[i][j] = new JLabel("?"); resLabels[i][j].setAlignmentX(0.5f); box.add(resLabels[i][j]); } mainPanel.add(box); } mainPanel.endSubtable(); mainPanel.newRow().skip(); mainPanel.startSubtable().center(); mainPanel.add(mainPanel.strut(46, 92)); // a hack! for(int i = 0; i < resDials.length; i++) { resDials[i] = new AngleDial(); resDials[i].setAlignmentX(0); resDials[i].addChangeListener(parent); mainPanel.add(resDials[i]); } mainPanel.add(mainPanel.strut(46, 92)); // a hack! mainPanel.endSubtable(); enableDials = new JCheckBox("Enable peptide rotation and sidechain idealization", false); enableDials.addActionListener(this); this.add(mainPanel, BorderLayout.CENTER); this.add(enableDials, BorderLayout.NORTH); updateLabels(); updateEnabledState(); } private Component makeHeaderLabels() { JLabel[] headerLabels = new JLabel[] { new JLabel("Residue"), new JLabel("Tau dev"), new JLabel("Karplus"), new JLabel("Ramachdrn"), new JLabel("phi,psi") }; Box box = Box.createVerticalBox(); for(int i = 0; i < headerLabels.length; i++) { headerLabels[i].setAlignmentX(0); box.add(headerLabels[i]); } return box; } //}}} //{{{ updateLabels //################################################################################################## void updateLabels() { for(int i = 0; i < residues.length; i++) { parent.updateLabels(residues[i], resLabels[i]); } } //}}} //{{{ updateConformation //################################################################################################## ModelState updateConformation(ModelState startState) { if(enableDials.isSelected()) { double[] angles = new double[resDials.length]; for(int i = 0; i < resDials.length; i++) angles[i] = resDials[i].getDegrees(); boolean[] idealizeSC = new boolean[residues.length]; Arrays.fill(idealizeSC, true); if(!parent.cbIdealizeSC.isSelected()) idealizeSC[0] = idealizeSC[idealizeSC.length-1] = false; try { return CaRotation.twistPeptides(residues, startState, angles, idealizeSC); } catch(AtomException ex) { ex.printStackTrace(); return startState; } } else return startState; } //}}} //{{{ actionPerformed, updateEnabledState //################################################################################################## /** Catches the enable/disable event */ public void actionPerformed(ActionEvent ev) { updateEnabledState(); parent.stateChanged(new ChangeEvent(this)); } void updateEnabledState() { final boolean enable = enableDials.isSelected(); for(int i = 0; i < resLabels.length; i++) for(int j = 0; j < resLabels[i].length; j++) resLabels[i][j].setEnabled(enable); for(int i = 0; i < resDials.length; i++) resDials[i].setEnabled(enable); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/Remodeler.java0000644000000000000000000000221311531212732024055 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * Remodeler is anything capable of working with the model manager. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Wed Sep 24 12:51:30 EDT 2003 */ public interface Remodeler //extends ... implements ... { /** * Allows this tool to modify the geometry of the current model. * This function is called by the model manager at two times: *

      *
    1. When this tool is registered and someone requests * that the molten model be updated
    2. *
    3. When this tool requests that the model be permanently changed.
    4. *
    * Tools are absolutely not permitted to modify s: all changes * should be done in a new ModelState which should be returned * from this function. */ public ModelState updateModelState(ModelState s); }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/BackrubWindow.java0000644000000000000000000003266511531212732024716 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import king.points.BallPoint; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.SoftLog; import chiropraxis.mc.*; import chiropraxis.rotarama.*; //}}} /** * BackrubWindow is an implementation of the BACKRUB algorithm * for small changes to the protein mainchain. * As such, it is a specialization of the HingeTool. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Mon Jun 2 15:59:18 EDT 2003 */ public class BackrubWindow implements Remodeler, ChangeListener, WindowListener { //{{{ Constants static final DecimalFormat df1 = new DecimalFormat("+0.0;-0.0"); static final DecimalFormat df0 = new DecimalFormat("0"); static final Color normalColor = new Color(0f, 0f, 0f); static final Color alertColor = new Color(0.6f, 0f, 0f); //}}} //{{{ Variable definitions //################################################################################################## // Things that used to be supplied by BasicTool as a superclass: KingMain kMain; KinCanvas kCanvas; ModelManager2 modelman; Window dialog; Residue anchor1, ctrRes, anchor2; KList anchorList; Ramachandran rama = null; TauByPhiPsi tauscorer = null; //GUI TablePane2 toolpane; AngleDial hingeDial, pept1Dial, pept2Dial; JLabel[] headerLabels, res1Labels, res2Labels, res3Labels; JCheckBox cbIdealizeSC; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @throws IllegalArgumentException if the residue code isn't recognized */ public BackrubWindow(KingMain kMain, Residue target, ModelManager2 mm) { this.kMain = kMain; this.kCanvas = kMain.getCanvas(); this.modelman = mm; this.ctrRes = target; this.anchorList = new KList(KList.BALL); anchorList.setColor( KPalette.peach ); buildGUI(kMain.getTopWindow()); // force loading of data tables that will be used later try { rama = Ramachandran.getInstance(); } catch(IOException ex) {} try { tauscorer = TauByPhiPsi.getInstance(); } catch(IOException ex) {} Model model = modelman.getModel(); ModelState state = modelman.getMoltenState(); this.anchor1 = ctrRes.getPrev(model); this.anchor2 = ctrRes.getNext(model); if(anchor1 != null && anchor2 != null) { markAnchor(anchor1, state); markAnchor(anchor2, state); //updateLabels(); -- done by stateChanged() // May also throw IAEx: Collection residues = CaRotation.makeMobileGroup(modelman.getModel(), anchor1, anchor2); modelman.registerTool(this, residues); stateChanged(null); } else { dialog.dispose(); throw new IllegalArgumentException("Can't find neighbor residues for "+target); } } //}}} //{{{ buildGUI //################################################################################################## private void buildGUI(Frame frame) { hingeDial = new AngleDial(); hingeDial.addChangeListener(this); pept1Dial = new AngleDial(); pept1Dial.addChangeListener(this); pept2Dial = new AngleDial(); pept2Dial.addChangeListener(this); JButton btnRelease = new JButton(new ReflectiveAction("Finished", null, this, "onReleaseResidues")); JButton btnRotamer = new JButton(new ReflectiveAction("Rotate sidechain", null, this, "onRotateSidechain")); headerLabels = new JLabel[] { new JLabel("Residue"), new JLabel("Tau dev"), new JLabel("Karplus"), new JLabel("Ramachdrn"), new JLabel("phi,psi") }; res1Labels = new JLabel[] { new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel() }; res2Labels = new JLabel[] { new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel() }; res3Labels = new JLabel[] { new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel() }; cbIdealizeSC = new JCheckBox(new ReflectiveAction("Idealize sidechains", null, this, "onToggleIdealSC")); cbIdealizeSC.setSelected(false); // 25 Oct 06: changed by mandate from JSR toolpane = new TablePane2(); toolpane.skip(); toolpane.addCell(pept1Dial); toolpane.addCell(hingeDial); toolpane.addCell(pept2Dial); toolpane.newRow(); for(int i = 0; i < headerLabels.length; i++) { if(i == 2) continue; // skip Karplus' phi/psi-dependent tau deviation toolpane.add(headerLabels[i]); toolpane.add(res1Labels[i]); toolpane.add(res2Labels[i]); toolpane.add(res3Labels[i]); toolpane.newRow(); } toolpane.newRow(); toolpane.addCell(TablePane2.strut(0,10)); toolpane.newRow(); toolpane.startSubtable(4,1); toolpane.addCell(btnRelease); toolpane.addCell(cbIdealizeSC); toolpane.addCell(btnRotamer); toolpane.endSubtable(); /*JMenuBar menubar = new JMenuBar(); JMenu menu, submenu; JMenuItem item; menu = new JMenu("Help"); menu.setMnemonic(KeyEvent.VK_H); menubar.add(menu); menu.add(this.getHelpMenuItem());*/ // Assemble the dialog if (kMain.getPrefs().getBoolean("minimizableTools")) { JFrame fm = new JFrame("BACKRUB: "+ctrRes.toString()); fm.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); fm.setContentPane(toolpane); dialog = fm; } else { JDialog dial = new JDialog(frame, "BACKRUB: "+ctrRes.toString(), false); dial.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dial.setContentPane(toolpane); dialog = dial; } dialog.addWindowListener(this); //dialog.setJMenuBar(menubar); dialog.pack(); dialog.setVisible(true); } //}}} //{{{ markAnchor //################################################################################################## /** Creates a new ball to mark the position of an anchor residue */ void markAnchor(Residue res, ModelState state) { Atom ca = res.getAtom(" CA "); if(ca == null) return; try { AtomState cas = state.get(ca); BallPoint mark = new BallPoint("C-alpha axis endpoint"); mark.r0 = 0.3f; mark.setX(cas.getX()); mark.setY(cas.getY()); mark.setZ(cas.getZ()); anchorList.add(mark); kCanvas.repaint(); } catch(AtomException ex) { ex.printStackTrace(); } } //}}} //{{{ stateChanged, updateModelState, onToggleIdealSC //################################################################################################## // ev may be null! public void stateChanged(ChangeEvent ev) { modelman.requestStateRefresh(); // will call this.updateModelState() updateLabels(); kCanvas.repaint(); } public ModelState updateModelState(ModelState before) { try { Collection residues = CaRotation.makeMobileGroup(modelman.getModel(), anchor1, anchor2); boolean idealize = cbIdealizeSC.isSelected(); // Major rotation ModelState after = CaRotation.makeConformation( residues, before, hingeDial.getDegrees(), idealize); // Peptide rotations Residue[] res = (Residue[]) residues.toArray(new Residue[residues.size()]); double[] angles = new double[] { pept1Dial.getDegrees(), pept2Dial.getDegrees() }; boolean[] idealizeSC = new boolean[] { idealize, idealize, idealize }; //System.err.println(res.length+" "+angles.length+" "+idealizeSC.length); after = CaRotation.twistPeptides(res, after, angles, idealizeSC); return after; } catch(AtomException ex) { ex.printStackTrace(); return before; } } // target of reflection public void onToggleIdealSC(ActionEvent ev) { stateChanged(null); } //}}} //{{{ updateLabels //################################################################################################## void updateLabels() { updateLabels(anchor1, res1Labels); updateLabels(ctrRes, res2Labels); updateLabels(anchor2, res3Labels); } void updateLabels(Residue r, JLabel[] l) { // Make color normal again for(int i = 0; i < l.length; i++) l[i].setForeground(normalColor); if(r == null) { for(int i = 0; i < l.length; i++) l[i].setText(""); } else { l[0].setText(r.toString()); Model model = modelman.getModel(); ModelState modelState = modelman.getMoltenState(); try { double taudev = AminoAcid.getTauDeviation(r, modelState); l[1].setText(df1.format(taudev)); if(Math.abs(taudev) >= 3.0) l[1].setForeground(alertColor); } catch(AtomException ex) { l[1].setText("-?-"); } try { double phi = AminoAcid.getPhi(model, r, modelState); double psi = AminoAcid.getPsi(model, r, modelState); l[4].setText(df0.format(phi)+" , "+df0.format(psi)); if(rama == null) l[3].setText("[no data]"); else if(rama.isOutlier(model, r, modelState)) { l[3].setText("OUTLIER"); l[3].setForeground(alertColor); } else if(rama.rawScore(model, r, modelState) > 0.02) l[3].setText("favored"); else l[3].setText("allowed"); if(tauscorer == null) l[2].setText("[no data]"); else { double taudev = tauscorer.getTauDeviation(model, r, modelState); l[2].setText(df1.format(taudev)); if(Math.abs(taudev) >= 3.0) l[2].setForeground(alertColor); } } catch(AtomException ex) { l[2].setText("-?-"); l[3].setText("[no phi,psi]"); l[4].setText("? , ?"); } catch(ResidueException ex) { l[2].setText("-?-"); l[3].setText("[no phi,psi]"); l[4].setText("? , ?"); } } dialog.pack(); } //}}} //{{{ onReleaseResidues //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** * Checks residues back into the ModelManager, * nulls the anchors and repaints the graphics. * @param ev is ignored, may be null. */ public void onReleaseResidues(ActionEvent ev) { int reply = JOptionPane.showConfirmDialog(kMain.getTopWindow(), "Do you want to keep the changes\nyou've made to these residues?", "Keep changes?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if(reply == JOptionPane.CANCEL_OPTION) return; if(reply == JOptionPane.YES_OPTION) { modelman.requestStateChange(this); // will call this.updateModelState() modelman.addUserMod("Refit backbone of "+ctrRes); } else // == JOptionPane.NO_OPTION modelman.unregisterTool(this); dialog.dispose(); kCanvas.repaint(); } //}}} //{{{ onRotateSidechain //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** * Launches a SidechainRotator window for this residue. * @param ev is ignored, may be null. */ public void onRotateSidechain(ActionEvent ev) { try { new SidechainRotator(kMain, ctrRes, modelman); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } //}}} //{{{ Dialog window listeners //################################################################################################## public void windowActivated(WindowEvent ev) {} public void windowClosed(WindowEvent ev) {} public void windowClosing(WindowEvent ev) { onReleaseResidues(null); } public void windowDeactivated(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowOpened(WindowEvent ev) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/ModelManager2.java0000644000000000000000000014456211744305702024600 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import java.util.List; // means all refs to "List" are this import driftwood.data.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * ModelManager2 is a plugin that manages a macromolecular * model for use by other tools that would like to update it. * It takes care of drawing the new model to the graphics, controlling * updates, and writing out the modified portions. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Thu Mar 20 16:12:43 EST 2003 */ public class ModelManager2 extends Plugin { //{{{ Constants //}}} //{{{ CLASS: ModelStatePair //################################################################################################## /** Used for undoing model and (possibly) state changes. */ static class ModelStatePair { Model model; // Model we're working on String stateLabel; // Corresponds to one of the ModelStates stored in model File asPDB; // A cache for a PDB representation of said ModelState public ModelStatePair(Model m, String sLabel) { model = m; stateLabel = sLabel; asPDB = null; } public Model getModel() { return model; } public String getAltConf() { return stateLabel; } public ModelState getState() { return model.getState(stateLabel); } public File getPDB() { if(asPDB == null) { try { asPDB = File.createTempFile("king", ".pdb"); PdbWriter writer = new PdbWriter(asPDB); writer.writeResidues(model.getResidues(), this.getState()); writer.close(); asPDB.deleteOnExit(); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } return asPDB; } } //}}} //{{{ Variable definitions //################################################################################################## // These are all for last file opened/saved, for comparison when modified version is saved File srcfile = null; // only used to display name to user CoordinateFile srccoordfile = null; // so we can write ALL models, though we just edited one Model srcmodel = null; // replace this w/ our new one when we write //ModelState srcstate = null; // used to see what changed; deprecated LinkedList stateList = null; // Stack, used for undos ModelState moltenState = null; File moltenPDB = null; Collection registeredTools; Map moltenRes; // Map> Set allMoltenRes; BgKinRunner probePlotter = null; File noeFile = null; String noeFormat = "xplor"; NoePanel noePanel; ExpectedNoePanel expNoePanel; SuffixFileFilter pdbFilter, rotFilter, noeFilter; JFileChooser openChooser, saveChooser, noeChooser; FastModelOpen fastModelOpen; JCheckBox cbUseSegID; boolean changedSinceSave = false; JDialog dialog; JLabel lblFileName; JLabel lblNumMolten; JMenuItem miUndo; JCheckBox cbShowProbe, cbShowNOEs, cbShowExpNOEs; AttentiveTextField tfProbeCmd; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public ModelManager2(ToolBox tb) { super(tb); stateList = new LinkedList(); registeredTools = new ArrayList(); moltenRes = new HashMap(); allMoltenRes = new HashSet(); buildFileChoosers(); buildDialog(); } //}}} //{{{ buildFileChoosers //################################################################################################## /** Constructs the Open and Save file choosers */ private void buildFileChoosers() { pdbFilter = new SuffixFileFilter("Protein Data Bank (PDB) files"); pdbFilter.addSuffix(".pdb"); rotFilter = new SuffixFileFilter("Rotated-coordinate files"); rotFilter.addSuffix(".rot"); noeFilter = new SuffixFileFilter("NOE files"); noeFilter.addSuffix(".noe"); noeFilter.addSuffix(".tbl"); // xplor noeFilter.addSuffix(".list"); // aria noeFilter.addSuffix(".upl"); // dyana String currdir = System.getProperty("user.dir"); openChooser = new JFileChooser(); openChooser.addChoosableFileFilter(pdbFilter); openChooser.setFileFilter(pdbFilter); if(currdir != null) openChooser.setCurrentDirectory(new File(currdir)); cbUseSegID = new JCheckBox("Use SegID to define chains", false); openChooser.setAccessory(cbUseSegID); // can't set PDB file yet b/c kinemage not loaded saveChooser = new JFileChooser(); //XXX-??? saveChooser.addChoosableFileFilter(rotFilter); saveChooser.setFileFilter(rotFilter); if(currdir != null) saveChooser.setCurrentDirectory(new File(currdir)); noeChooser = new JFileChooser(); noeChooser.addChoosableFileFilter(noeFilter); noeChooser.setFileFilter(noeFilter); if(currdir != null) noeChooser.setCurrentDirectory(new File(currdir)); } //}}} //{{{ buildDialog //################################################################################################## private void buildDialog() { lblFileName = new JLabel(); lblNumMolten = new JLabel(); Action visUpdate = new ReflectiveAction("Update visualizations", null, this, "onUpdateVis"); cbShowProbe = new JCheckBox("Probe dots", false); cbShowProbe.addActionListener(visUpdate); tfProbeCmd = new AttentiveTextField("", 25); tfProbeCmd.addActionListener(new ReflectiveAction("edit-probe-cmd", null, this, "onEditProbeCmd")); // Button is the same as hitting Return on text field; added for JSR JButton bnRunProbe = new JButton(">"); bnRunProbe.addActionListener(new ReflectiveAction("edit-probe-cmd", null, this, "onEditProbeCmd")); TablePane2 probePane = new TablePane2(); probePane.hfill(true).addCell(tfProbeCmd).weights(0,0).addCell(bnRunProbe); FoldingBox probeBox = new FoldingBox(cbShowProbe, probePane); probeBox.setAutoPack(true); probeBox.setIndent(10); cbShowNOEs = new JCheckBox("NOEs", false); cbShowNOEs.addActionListener(visUpdate); noePanel = new NoePanel(kMain, this); FoldingBox noeBox = new FoldingBox(cbShowNOEs, noePanel); noeBox.setAutoPack(true); noeBox.setIndent(10); cbShowExpNOEs = new JCheckBox("Expected NOEs", false); cbShowExpNOEs.addActionListener(visUpdate); expNoePanel = new ExpectedNoePanel(kMain, this); FoldingBox expNoeBox = new FoldingBox(cbShowExpNOEs, expNoePanel); expNoeBox.setAutoPack(true); expNoeBox.setIndent(10); JCheckBox cbFastOpen = new JCheckBox("Fast model open", false); fastModelOpen = new FastModelOpen(this); //fastModelOpen.list.setVisibleRowCount(-1); //fastModelOpen.list.setLayoutOrientation(JList.VERTICAL_WRAP); FoldingBox fbFastOpen = new FoldingBox(cbFastOpen, new JScrollPane(fastModelOpen.list)); fbFastOpen.setAutoPack(true); fbFastOpen.setIndent(10); TablePane cp = new TablePane(); cp.insets(2).weights(1,0.1); cp.addCell(lblFileName); cp.newRow(); cp.addCell(lblNumMolten); cp.newRow(); cp.addCell(cbFastOpen); cp.newRow(); cp.save().hfill(true).vfill(true).weights(1,1).addCell(fbFastOpen).restore(); cp.newRow().addCell(cp.strut(0,2)).newRow(); //spacer cp.addCell(cbShowProbe); cp.newRow(); cp.save().hfill(true).vfill(true).addCell(probeBox).restore(); cp.newRow(); cp.addCell(cbShowNOEs); cp.newRow(); cp.save().hfill(true).vfill(true).addCell(noeBox).restore(); cp.newRow(); cp.addCell(cbShowExpNOEs); cp.newRow(); cp.save().hfill(true).vfill(true).addCell(expNoeBox).restore(); dialog = new JDialog(kMain.getTopWindow(), this.toString(), false); // not modal dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialog.setContentPane(cp); dialog.setJMenuBar(buildMenus()); refreshGUI(); } //}}} //{{{ buildMenus //################################################################################################## private JMenuBar buildMenus() { JMenuBar menubar = new JMenuBar(); JMenu menu, submenu; JMenuItem item; menu = new JMenu("File"); menu.setMnemonic(KeyEvent.VK_F); menubar.add(menu); item = new JMenuItem(new ReflectiveAction("Open PDB file...", null, this, "onOpenPDB")); item.setMnemonic(KeyEvent.VK_O); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, KingMain.MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Open NOE file...", null, this, "onOpenNOE")); item.setMnemonic(KeyEvent.VK_N); //item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, UIMenus.MENU_ACCEL_MASK)); menu.add(item); menu.addSeparator(); item = new JMenuItem(new ReflectiveAction("Save PDB file...", null, this, "onSaveFullPDB")); item.setMnemonic(KeyEvent.VK_S); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, KingMain.MENU_ACCEL_MASK)); menu.add(item); menu = new JMenu("Edit"); menu.setMnemonic(KeyEvent.VK_E); menubar.add(menu); item = new JMenuItem(new ReflectiveAction("Choose alt conf...", null, this, "onChooseAltConf")); //item.setMnemonic(KeyEvent.VK_O); //item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, UIMenus.MENU_ACCEL_MASK)); menu.add(item); item = new JMenuItem(new ReflectiveAction("Create new alt conf...", null, this, "onCreateAltConf")); //item.setMnemonic(KeyEvent.VK_O); //item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_O, UIMenus.MENU_ACCEL_MASK)); menu.add(item); menu.addSeparator(); miUndo = item = new JMenuItem(new ReflectiveAction("Undo last change", null, this, "onUndo")); item.setMnemonic(KeyEvent.VK_U); item.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_Z, KingMain.MENU_ACCEL_MASK)); menu.add(item); menu = new JMenu("Help"); menu.setMnemonic(KeyEvent.VK_H); menubar.add(menu); menu.add(this.getHelpMenuItem()); return menubar; } //}}} //{{{ refreshGUI, onUpdateVis //################################################################################################## /** One stop shopping to ensure the GUI reflects the current conditions. */ protected void refreshGUI() { if(srcfile != null) { String fileLbl = "File: "+srcfile.getName(); String alt = getAltConf(); if(!alt.equals(" ")) fileLbl = fileLbl+" ["+alt+"]"; lblFileName.setText(fileLbl); } else lblFileName.setText("File not loaded"); lblNumMolten.setText("Residues checked out: "+allMoltenRes.size()); miUndo.setEnabled( stateList.size() > 1 ); cbShowNOEs.setEnabled( noeFile != null ); //cbShowExpNOEs.setEnabled( noeFile != null ); expNoePanel.refreshGUI(); dialog.pack(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUpdateVis(ActionEvent ev) { if(ev != null) { // If dots were just turned on/off, turn them on/off in the display, too. if(ev.getSource() == cbShowProbe) { this.getProbePlotter().setLastGroupOn(cbShowProbe.isSelected()); kCanvas.repaint(); } // If NOEs were just turned on/off, turn them on/off in the display, too. if(ev.getSource() == cbShowNOEs) { noePanel.getNoePlotter().setLastGroupOn(cbShowNOEs.isSelected()); kCanvas.repaint(); } // If expected NOEs were just turned on/off, turn them on/off in the display, too. if(ev.getSource() == cbShowExpNOEs) { expNoePanel.getNoePlotter().setLastGroupOn(cbShowExpNOEs.isSelected()); kCanvas.repaint(); } } refreshGUI(); requestStateRefresh(); } //}}} //{{{ onOpenPDB //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onOpenPDB(ActionEvent ev) { // Make sure we don't have any residues checked out right now if(isMolten()) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Can't open a new model while some residues are checked out for modification.", "Sorry!", JOptionPane.ERROR_MESSAGE); return; } // Ask about saving the old one (if it's been modified) askSavePDB(); // If a @pdbfile was specified, try to pre-select that // TODO-XXX: this assumes kin was opened from current dir! Kinemage kin = kMain.getKinemage(); if(kin != null && kin.atPdbfile != null) { File f = new File(kin.atPdbfile); if(f.exists()) { // setSelectedFile() doesn't do this prior to 1.4.1 openChooser.setCurrentDirectory(f); openChooser.setSelectedFile(f); } } // Open the new file String currdir = System.getProperty("user.dir"); if(currdir != null) openChooser.setCurrentDirectory(new File(currdir)); if(JFileChooser.APPROVE_OPTION == openChooser.showOpenDialog(kMain.getTopWindow())) { try { File f = openChooser.getSelectedFile(); if(f != null && f.exists()) openPDB(f); System.setProperty("user.dir", f.getAbsolutePath()); } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An I/O error occurred while loading the file:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ openPDB //################################################################################################## protected void openPDB(File f) throws IOException { srcfile = f; PdbReader pdbr = new PdbReader(); pdbr.setUseSegID(cbUseSegID.isSelected()); srccoordfile = pdbr.read(srcfile); changedSinceSave = false; // Let user select model Model m; Collection models = srccoordfile.getModels(); if(models.size() == 1) m = srccoordfile.getFirstModel(); else { Object[] choices = models.toArray(); m = (Model)JOptionPane.showInputDialog(kMain.getTopWindow(), "This file has multiple models. Please choose one:", "Choose model", JOptionPane.PLAIN_MESSAGE, null, choices, choices[0]); if(m == null) m = srccoordfile.getFirstModel(); } // Let user select alt conf (iff there's more than one) String altLabel = askAltConf(m, "This file has alternate conformations. Please choose one:"); // so we know when we go to save the file srcmodel = m; stateList.clear(); // can't undo loading a new file, b/c we overwrite srcfile and friends setModelAndState(m, altLabel); fastModelOpen.updateList(srcfile.getParentFile(), pdbFilter); refreshGUI(); } //}}} //{{{ askAltConf //################################################################################################## /** Helper method to ask user which alt conf to use **/ String askAltConf(Model m, String question) { ArrayList states = new ArrayList(m.getStates().keySet()); if(states.size() == 1) return (String) states.get(0); else { states.remove(" "); // all letters treat this as parent Object[] choices = states.toArray(); String c = (String)JOptionPane.showInputDialog(kMain.getTopWindow(), question, "Choose alt. conf.", JOptionPane.PLAIN_MESSAGE, null, choices, choices[0]); if(c == null) return (String) states.get(0); else return c; } } //}}} //{{{ onChooseAltConf, onCreateAltConf //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onChooseAltConf(ActionEvent ev) { Model m = this.getModel(); if(m == null) return; // Let user select alt conf (iff there's more than one) String altLabel = askAltConf(m, "This file has alternate conformations. Please choose one:"); setModelAndState(m, altLabel); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onCreateAltConf(ActionEvent ev) { Model m = this.getModel(); if(m == null) return; // Let user select alt conf (iff there's more than one) String oldAlt = askAltConf(m, "Choose a state to base your new alternate conformation on:"); // Let the user specify a new alt conf ID String newAlt = (String) JOptionPane.showInputDialog(kMain.getTopWindow(), "What label should be used for the new alternate? (e.g. 'X')", "Name alt. conf.", JOptionPane.PLAIN_MESSAGE); if(newAlt == null) return; Model newModel = (Model) m.clone(); HashMap newStates = new HashMap(newModel.getStates()); newStates.put(newAlt, new ModelState(m.getState(oldAlt))); newModel.setStates(newStates); setModelAndState(newModel, newAlt); addUserMod("Created alternate conformation '"+newAlt+"'"); } //}}} //{{{ askSavePDB, onSaveFullPDB //################################################################################################## /** Asks the user if s/he wants to keep the changes made to all residues. */ void askSavePDB() { // We can save even if there are some residues checked out, // but we should warn that those changes won't be saved. if( isMolten() && JOptionPane.NO_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "Some changes have not been committed and won't be saved. Save anyway?", "Save model?", JOptionPane.YES_NO_OPTION)) return; if( changedSinceSave && JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "Save any changes made to the current model?", "Save model?", JOptionPane.YES_NO_OPTION)) onSaveFullPDB(null); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSaveFullPDB(ActionEvent ev) { saveChooser.resetChoosableFileFilters(); saveChooser.setFileFilter(pdbFilter); String currdir = System.getProperty("user.dir"); if(currdir != null) saveChooser.setCurrentDirectory(new File(currdir)); // Ganked auto-versioning code from KinfileIO File f = srcfile; String name = f.getName(); if(name.endsWith(".pdb")) { if(name.length() > 6 && name.charAt(name.length()-6) == '.') { String prefix = name.substring(0, name.length()-6); char version = name.charAt(name.length()-5); if('0' <= version && version < '9') name = prefix+"."+(++version)+".pdb"; else if(version == '9') name = prefix+".a.pdb"; else if('a' <= version && version < 'z') name = prefix+"."+(++version)+".pdb"; else name = prefix+"."+version+".1.pdb"; } else { String prefix = name.substring(0, name.length()-4); name = prefix+".1.pdb"; } } // Older code keeps changing directory out from under us!! //saveChooser.setSelectedFile(new File(openChooser.getCurrentDirectory(), name)); saveChooser.setSelectedFile(new File(name)); savePDB(true); System.setProperty("user.dir", f.getAbsolutePath()); } //}}} //{{{ savePDB //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void savePDB(boolean wholeThing) { if(JFileChooser.APPROVE_OPTION == saveChooser.showSaveDialog(kMain.getTopWindow())) { File f = saveChooser.getSelectedFile(); if(!f.exists() || JOptionPane.YES_OPTION == JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION)) { try { PdbWriter pdbWriter = new PdbWriter(f); if(wholeThing) { Model m = this.getModel(); // It's too hard to scan the model and decide what's changed, // so now we just rely on tools calling addUserMod() //for(Iterator iter = moves.iterator(); iter.hasNext(); ) // srccoordfile.addHeader(CoordinateFile.SECTION_USER_MOD, iter.next().toString()); // Sync up the atom-by-atom labels with the global scheme adjustAltConfLabels(m); // Make relative occupancies sensible for all atoms, // including the ones we've remodeled adjustOccupancies(m); // Replace the model we started from with the current model srccoordfile.replace(srcmodel, m); pdbWriter.writeCoordinateFile(srccoordfile); srcfile = f; srcmodel = m; changedSinceSave = false; refreshGUI(); } else { throw new IOException("Partial save not supported"); } pdbWriter.close(); } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "An error occurred while saving the file.", "Sorry!", JOptionPane.ERROR_MESSAGE); ex.printStackTrace(SoftLog.err); } } } } //}}} //{{{ adjustAltConfLabels //################################################################################################## /** * Given a Model, we traverse its ModelStates, looking for AtomStates whose alts don't match. * E.g., an AtomState with alt conf 'A' hiding in ModelState 'B'. * This is done in a smart way, so that if that AtomState were also in ModelState 'A', it is unaffected. * However, if one AtomState has the exact same coordinates as another AtomState with an alt conf, * it is treated as an alternative and gets an alt label. * We also look for AtomStates with alt conf ' ' that look like they were "stranded", * in ModelStates with alt conf other than ' ', e.g. by a backrub at a residue with only sidechain alts. */ void adjustAltConfLabels(Model m) { CheapSet allAS = new CheapSet(new IdentityHashFunction()); // Necessary due to Java roundoff error; otherwise seemingly identical atom // positions will be off by e.g. 0.0009 (i.e. beyond PDB format precision) double precision = 1000; for(Iterator msi = m.getStates().keySet().iterator(); msi.hasNext(); ) { String altLabel = (String) msi.next(); ModelState state = (ModelState) m.getStates().get(altLabel); for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); // Skip hets, because it seems OK to allow e.g. only 'B' // for a water that's only compatible with 'B' of an adjacent sidechain. // It's no good to just label it ' ' and lower its occupancy // because then Probe thinks other alts can still clash with it. if(a.isHet()) continue; try { AtomState as = state.get(a); AtomState asp = (AtomState) as.clone(); asp.setXYZ( Math.round(as.getX()*precision)/precision, Math.round(as.getY()*precision)/precision, Math.round(as.getZ()*precision)/precision); // If we haven't seen this before, set its alt ID if(allAS.add(asp)) { as.setAltConf(altLabel); } else { // If we have seen this before, we might still wanna set its alt ID // if the appearance of it we've seen is an alt conf. // This avoids having e.g. a shared CB atom for a split sidechain // where the first appearance in 'A' gets labeled 'A' // but the second appearance in 'B' doesn't get labeled 'B' // (because the coordinates are identical, // although the "full" AtomState objects may not be) // and thus the corresponding 'B' ('B' + ' ') conformer lacks a CB. AtomState as2 = (AtomState) allAS.get(asp); if(!as2.getAltConf().equals(" ")) as.setAltConf(altLabel); } } catch(AtomException ex) {} } } } for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); //if(a.isHet()) continue; -- doesn't apply here (?) for(Iterator msi1 = m.getStates().keySet().iterator(); msi1.hasNext(); ) { String altLabel1 = (String) msi1.next(); if(altLabel1.equals(" ")) continue; for(Iterator msi2 = m.getStates().keySet().iterator(); msi2.hasNext(); ) { String altLabel2 = (String) msi2.next(); if(altLabel2.equals(" ")) continue; ModelState state1 = (ModelState) m.getStates().get(altLabel1); ModelState state2 = (ModelState) m.getStates().get(altLabel2); try { AtomState as1 = state1.get(a); AtomState as2 = state2.get(a); AtomState as1p = (AtomState) as1.clone(); AtomState as2p = (AtomState) as2.clone(); as1p.setXYZ( Math.round(as1.getX()*precision)/precision, Math.round(as1.getY()*precision)/precision, Math.round(as1.getZ()*precision)/precision); as2p.setXYZ( Math.round(as2.getX()*precision)/precision, Math.round(as2.getY()*precision)/precision, Math.round(as2.getZ()*precision)/precision); if(!as1p.equals(as2p)) { if(as1.getAltConf().equals(" ") && !as2.getAltConf().equals(" ")) { as1.setAltConf(altLabel1); } else if(!as1.getAltConf().equals(" ") && as2.getAltConf().equals(" ")) { as2.setAltConf(altLabel2); } } } catch(AtomException ex) {} } } } } } //}}} //{{{ adjustOccupancies //################################################################################################## /** * Given a Model, we traverse its Atoms, looking for Atoms with multiple * alt conf AtomStates with full occupancy. * Then we divvy up full occupancy evenly across those AtomStates * and make sure the AtomState for ModelState ' ' is null. */ void adjustOccupancies(Model m) { for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); CheapSet fullOccAS = new CheapSet(new IdentityHashFunction()); for(Iterator msi = m.getStates().keySet().iterator(); msi.hasNext(); ) { String altLabel = (String) msi.next(); ModelState state = (ModelState) m.getStates().get(altLabel); try { AtomState as = state.get(a); if(!as.getAltConf().equals(" ") && as.getOccupancy() == 1.0) fullOccAS.add(as); } catch(AtomException ex) {} } if(fullOccAS.size() > 0) { // Multiple states for this atom with full occupancy! // Need to split it up; evenly is simplest: // 0.5-0.5, 0.34-0.33-0.33, 0.25-0.25-0.25-0.25 (that's enough) for(Iterator iter = fullOccAS.iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); double newOcc = 1.0 / fullOccAS.size(); double precision = 100; if(as.getAltConf().equals("A")) newOcc = Math.ceil(newOcc * precision) / precision; else newOcc = Math.floor(newOcc * precision) / precision; as.setOccupancy(newOcc); } // Make sure ModelState ' ' is empty for this Atom ModelState state = (ModelState) m.getStates().get(" "); try { AtomState as = state.get(a); //state.addOverwrite(null); as = null; // does this work?! } catch(AtomException ex) {} } } } } //}}} //{{{ addUserMod //################################################################################################## /** * It's just too damn hard to figure out all the ways a model might have changed. * So now tools are responsible for calling this function AFTER they change something. * Right now, it doesn't get undone when we undo, but it might in the future. * We could add that capability by storing these in the ModelStatePair class instead, * and then insert them just before saving the file. */ public void addUserMod(String msg) { if(!msg.startsWith("USER ")) msg = "USER MOD "+msg; srccoordfile.addHeader(CoordinateFile.SECTION_USER_MOD, msg); } //}}} //{{{ getModel, getAltConf, getFrozen{State, PDB} //################################################################################################## /** * Returns the Model currently in use. * If no Model is loaded, the user will be prompted to select one. * Please DO NOT cache this value as it may change. * @throws IllegalStateException if the user refuses to load a model */ public Model getModel() { return getMSP().getModel(); } /** * Returns the identifying label for the alternate conformation currently in use. * If no Model is loaded, the user will be prompted to select one. * Please DO NOT cache this value as it may change. * @throws IllegalStateException if the user refuses to load a model */ public String getAltConf() { return getMSP().getAltConf(); } /** * Returns the ModelState currently in use -- the last committed change. * This state will not reflect "molten" updates that are outstanding. * If no Model is loaded, the user will be prompted to select one. * Please DO NOT cache this value as it may change. * @throws IllegalStateException if the user refuses to load a model */ public ModelState getFrozenState() { return getMSP().getState(); } /** * Returns a PDB of the ModelState currently in use -- the last committed change. * This file will not reflect "molten" updates that are outstanding. * If no Model is loaded, the user will be prompted to select one. * Please DO NOT cache this value as it may change. * @throws IllegalStateException if the user refuses to load a model */ public File getFrozenPDB() { return getMSP().getPDB(); } protected ModelStatePair getMSP() { if(stateList.size() < 1) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "This tool requires an active model\nloaded in the Model Manager plugin.\nPlease load one now.", "Please load a model", JOptionPane.INFORMATION_MESSAGE); onOpenPDB(null); } if(stateList.size() < 1) throw new IllegalStateException("Cannot procede without a model loaded!"); ModelStatePair msp = (ModelStatePair)stateList.getLast(); return msp; } //}}} //{{{ getMolten{State, PDB} //################################################################################################## /** * Retrieves the current state including molten changes. */ public ModelState getMoltenState() { if(moltenState == null) requestStateRefresh(); return moltenState; } /** Returns a FRAGMENT of a PDB file representing molten changes only. */ public File getMoltenPDB() { if(moltenPDB == null) { try { moltenPDB = File.createTempFile("king", ".pdb"); PdbWriter writer = new PdbWriter(moltenPDB); writer.writeResidues(allMoltenRes, getMoltenState()); writer.close(); moltenPDB.deleteOnExit(); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } return moltenPDB; } //}}} //{{{ requestStateRefresh, requestStateChange //################################################################################################## /** * Causes all currently registered tools to be polled, * in the order they were registered, for outstanding ("molten") * changes to the model. * All active visualizations will subsequently be updated. */ public void requestStateRefresh() { // Update model state moltenPDB = null; ModelState frozen = getFrozenState(); moltenState = frozen; for(Iterator iter = registeredTools.iterator(); iter.hasNext(); ) { moltenState = ((Remodeler)iter.next()).updateModelState(moltenState); } moltenState = moltenState.createCollapsed(frozen); // Update visualizations visualizeMoltenModel(); if(cbShowProbe.isSelected()) visualizeProbeDots(); if(cbShowNOEs.isSelected()) visualizeNOEs(); if(cbShowExpNOEs.isSelected()) visualizeExpectedNOEs(); kCanvas.repaint(); } /** * Causes the state changes from the named tool to be * incorporated into the static ("frozen") state * of the model. * As a side effect, the tool is unregistered, and the model updated. */ public void requestStateChange(Remodeler tool) { ModelState s = tool.updateModelState( getFrozenState() ); s = s.createCollapsed(); // reduce lookup time in the future // Every permanent change generates a new Model, so that it can // hold the new set of ModelStates (only one of them has changed). // It costs more memory, but not a LOT more, and seems cleaner than other approaches. Model newModel = (Model) this.getModel().clone(); HashMap newStates = new HashMap(newModel.getStates()); newStates.put(this.getAltConf(), s); newModel.setStates(newStates); ModelStatePair msp = new ModelStatePair(newModel, this.getAltConf()); stateList.addLast(msp); changedSinceSave = true; visualizeFrozenModel(); // not done for every refresh unregisterTool(tool); // -> requestStateRefresh(); // -> refreshGUI(); // make sure Undo item is up-to-date } //}}} //{{{ set/replaceModelAndState, isMolten //################################################################################################## /** * Used in place of requestStateChange for a tool to (eg) make a mutation, * changing both the Model and the ModelState. * @throws IllegalStateException if isMolten() == true */ public void replaceModelAndState(Model m, ModelState s) { if(isMolten()) throw new IllegalStateException("Cannot install new model while old model is molten"); // Every permanent change generates a new Model, so that it can // hold the new set of ModelStates (only one of them has changed). // It costs more memory, but not a LOT more, and seems cleaner than other approaches. Model newModel = (Model) m.clone(); HashMap newStates = new HashMap(newModel.getStates()); newStates.put(this.getAltConf(), s); newModel.setStates(newStates); setModelAndState(newModel, this.getAltConf()); changedSinceSave = true; } /** * Installs a new Model and/or changes which alt conf we're working on. * This is the atomic way of changing the frozen state, and can be undone. * The visualizations are updated automatically. */ public void setModelAndState(Model m, String altLabel) { ModelStatePair msp = new ModelStatePair(m, altLabel); stateList.addLast(msp); visualizeFrozenModel(); // not done for every refresh requestStateRefresh(); refreshGUI(); // make sure Undo item is up-to-date } public boolean isMolten() { return allMoltenRes.size() > 0; } //}}} //{{{ unregisterTool, registerTool //################################################################################################## /** * Removes the tool from the list of active tools, * without committing any molten changes to the model. * The model and visualizations are updated automatically. */ public void unregisterTool(Remodeler tool) { registeredTools.remove(tool); moltenRes.remove(tool); allMoltenRes.clear(); for(Iterator iter = moltenRes.values().iterator(); iter.hasNext(); ) { allMoltenRes.addAll( (Collection)iter.next() ); } refreshGUI(); requestStateRefresh(); } /** * Adds the tool to the list of active tools, * marking it as working on the residues in targetRes. * The model and visualizations are updated automatically. */ public void registerTool(Remodeler tool, Collection targetRes) { registeredTools.add(tool); moltenRes.put(tool, targetRes); allMoltenRes.addAll(targetRes); refreshGUI(); requestStateRefresh(); } //}}} //{{{ onUndo, undoChange //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onUndo(ActionEvent ev) { if(!undoChange()) JOptionPane.showMessageDialog(kMain.getTopWindow(), "No changes to undo.", "Sorry!", JOptionPane.ERROR_MESSAGE); } /** * Undoes the last change committed to the model, if possible. * The model and visualizations are updated automatically. * @return true iff the last change could be undone. */ public boolean undoChange() { if(stateList.size() < 2) return false; stateList.removeLast(); visualizeFrozenModel(); // not done for every refresh requestStateRefresh(); refreshGUI(); // make sure Undo item is up-to-date return true; } //}}} //{{{ getPlotter //################################################################################################## /** * Returns the plotter associated with the current kinemage. * If one does not exist, it is created and its data are inserted * into the kinemage. * * This way, a new group is inserted into every kinemage that's * used with this tool, and that group is tracked without * being referenced from this object, thereby avoiding memory leaks. */ ModelPlotter getPlotter(String name, KPaint mcColor, KPaint scColor, int width) { Kinemage kin = kMain.getKinemage(); if(kin == null) return new ModelPlotter(); // dummy object String key = "king.ModelManager2."+name; ModelPlotter plotter = (ModelPlotter)kin.metadata.get(key); if(plotter == null) { plotter = new ModelPlotter(); plotter.mainColor = mcColor; plotter.sideColor = scColor; plotter.hyColor = KPalette.gray; plotter.modelWidth = width; KGroup group = plotter.createGroup(name); kin.add(group); kin.metadata.put(key, plotter); } return plotter; } //}}} //{{{ visualize{Molten, Frozen}Model //################################################################################################## void visualizeMoltenModel() { ModelState state = getMoltenState(); ModelPlotter plotter = getPlotter("molten model", KPalette.peachtint, KPalette.orange, 5); plotter.plotAminoAcids(getModel(), allMoltenRes, state); } void visualizeFrozenModel() { Collection allRes = getModel().getResidues(); ModelState state = getFrozenState(); ModelPlotter plotter = getPlotter("frozen model", KPalette.yellowtint, KPalette.sky, 2); plotter.plotAminoAcids(getModel(), allRes, state); } //}}} //{{{ getProbePlotter, visualizeProbeDots, onEditProbeCmd //################################################################################################## BgKinRunner getProbePlotter() { // Set up to plot Probe dots Kinemage kin = kMain.getKinemage(); if(kin != null && (probePlotter == null || !probePlotter.getKinemage().equals(kin))) { if(probePlotter != null) probePlotter.terminate(); // clean up the old one // -drop is very important, or else the unselected atoms from file1 // (waters, the residues we're excluding because they're in file2) // will interfere with (obstruct) the dots between file1 and file2 atoms. // Incomplete, will be completed in a moment String probeCmd = " -quiet -kin -drop -mc -both -stdbonds '(file1 " +"within {bbradius} of {bbcenter} not water not({molten})),file2' 'file2' '{pdbfile}' -"; probePlotter = new BgKinRunner(kMain, kin, probeCmd); String probeExe = probePlotter.findProgram("probe"); probePlotter.setCommand(probeExe+probeCmd); // now complete cmd line tfProbeCmd.setText(probePlotter.getCommand()); } return probePlotter; } void visualizeProbeDots() { BgKinRunner pp = getProbePlotter(); pp.requestRun(allMoltenRes, getMoltenState(), getFrozenPDB()); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onEditProbeCmd(ActionEvent ev) { /*BgKinRunner pp = getProbePlotter(); if(pp.editCommand(kMain.getTopWindow())) requestStateRefresh();*/ this.getProbePlotter().setCommand(tfProbeCmd.getText()); requestStateRefresh(); } //}}} //{{{ onOpenNOE, visualizeNOEs, visualizeExpectedNOEs //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onOpenNOE(ActionEvent ev) { // Open the new file String currdir = System.getProperty("user.dir"); if(currdir != null) noeChooser.setCurrentDirectory(new File(currdir)); if(JFileChooser.APPROVE_OPTION == noeChooser.showOpenDialog(kMain.getTopWindow())) { File f = noeChooser.getSelectedFile(); if(f != null && f.exists()) { Object[] choices = {"xplor", "dyana", "aria"}; String defaultChoice = "xplor"; String filename = f.getName().toLowerCase(); if(filename.endsWith(".upl")) defaultChoice = "dyana"; else if(filename.endsWith(".list")) defaultChoice = "aria"; String choice = (String)JOptionPane.showInputDialog(kMain.getTopWindow(), "What format are these NOEs in?", "Choose format", JOptionPane.PLAIN_MESSAGE, null, choices, defaultChoice); if(choice != null) noeFormat = choice; noeFile = f; refreshGUI(); System.setProperty("user.dir", f.getAbsolutePath()); } } } void visualizeNOEs() { noePanel.visualizeNOEs(allMoltenRes, noeFile, noeFormat); } void visualizeExpectedNOEs() { expNoePanel.visualizeNOEs(allMoltenRes, noeFile, noeFormat); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ getToolsMenuItem, onShowDialog //################################################################################################## /** * Creates a new JMenuItem to be displayed in the Tools menu, * which will allow the user to access function(s) associated * with this Plugin. * * Only one JMenuItem may be returned, but it could be a JMenu * that contained several functionalities under it. * * The Plugin may return null to indicate that it has no * associated menu item. */ public JMenuItem getToolsMenuItem() { return new JMenuItem(new ReflectiveAction(this.toString(), null, this, "onShowDialog")); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onShowDialog(ActionEvent ev) { if(! dialog.isVisible() ) { Container mw = kMain.getContentContainer(); dialog.pack(); Point loc = mw.getLocation(); loc.x += mw.getWidth() - dialog.getWidth(); loc.y += mw.getHeight() - dialog.getHeight(); dialog.setLocation(loc); dialog.setVisible(true); } if(stateList == null || stateList.size() < 1) onOpenPDB(null); } //}}} //{{{ getHelpAnchor, toString, isAppletSafe //################################################################################################## public String getHelpAnchor() { return "#modelman-plugin"; } public String toString() { return "Model manager"; } /** This plugin is not applet-safe because it invokes other processes and loads files. */ static public boolean isAppletSafe() { return false; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/SswingResultFrame.java0000644000000000000000000000627211531212732025574 0ustar rootrootpackage chiropraxis.kingtools; import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.text.*; import java.util.*; import java.io.FileReader; import java.io.*; public class SswingResultFrame extends JFrame { String myFileName=""; JTextArea textArea = new JTextArea(); String[] items=new String[500]; // XXX This should be an ArrayList or something double[] angles=new double[5]; SidechainSswing sidechainSswing; public SswingResultFrame(String openFileName, SidechainSswing sidechainSswing) { this.sidechainSswing = sidechainSswing; for (int i=0; iScMutTool allows users to mutate * sidechains in a protein model. * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Mon Jan 12 09:58:34 EST 2004 */ public class ScMutTool extends ModelingTool implements ItemListener { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## SidechainIdealizer idealizer = null; String[] resChoices = null; boolean usePdbv3 = true; //}}} //{{{ Constructor(s) //############################################################################## public ScMutTool(ToolBox tb) { super(tb); try { idealizer = new SidechainIdealizer(); Collection c = idealizer.getResidueTypes(); resChoices = (String[]) c.toArray(new String[c.size()]); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } //}}} //{{{ start/stop/reset //################################################################################################## public void start() { super.start(); if(idealizer == null) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Library of ideal amino acids could not be loaded.", "Missing data resource", JOptionPane.ERROR_MESSAGE); parent.activateDefaultTool(); return; } // Bring up model manager modelman.onShowDialog(null); // Helpful hint for users: this.services.setID("Ctrl-click, option-click, or middle-click a residue to mutate it"); kCanvas.repaint(); // to make it show up! } //}}} //{{{ c_click //############################################################################## /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { if(p != null) { if(modelman.isMolten()) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Residues cannot be mutated while the model is being resculpted.\n" +"Please release all mobile groups and then try again.", "Cannot mutate molten model", JOptionPane.ERROR_MESSAGE); return; } Model model = modelman.getModel(); ModelState state = modelman.getFrozenState(); Residue orig = this.getResidueNearest(model, state, p.getX(), p.getY(), p.getZ()); if(orig != null) askMutateResidue(model, orig, state); } } //}}} //{{{ makeOptionPane private String makeOptionPane(Residue orig) { JOptionPane pane = new JOptionPane("Mutate this sidechain to what?", JOptionPane.QUESTION_MESSAGE, JOptionPane.OK_CANCEL_OPTION, null); pane.setSelectionValues(resChoices); pane.setInitialSelectionValue(orig.getName()); JDialog dialog = pane.createDialog(kMain.getTopWindow(), "Choose mutation"); pane.selectInitialValue(); JCheckBox usePdbv2Box = new JCheckBox("Use PDB v2.3 (old) format"); usePdbv2Box.setPreferredSize(new Dimension(300, 30)); // I arrived at these values through usePdbv2Box.setMaximumSize(new Dimension(300, 30)); // a lot of trial and error just usePdbv2Box.setAlignmentX((float)0.5); // to get the check box right. usePdbv3 = true; usePdbv2Box.addItemListener(this); pane.add(usePdbv2Box); //System.out.println(usePdbv2Box.getPreferredSize()); //System.out.println(usePdbv2Box.getMaximumSize()); //System.out.println(usePdbv2Box.getAlignmentX()); dialog.setVisible(true); return (String)pane.getInputValue(); } //}}} //{{{ itemStateChanged public void itemStateChanged(ItemEvent e) { if (e.getStateChange() == ItemEvent.DESELECTED) { usePdbv3 = true; } else { usePdbv3 = false; } } //}}} //{{{ askMutateResidue //############################################################################## void askMutateResidue(Model model, Residue orig, ModelState origState) { try { //String choice = (String) JOptionPane.showInputDialog(kMain.getTopWindow(), // "Mutate this sidechain to what?", // "Choose mutation", // JOptionPane.QUESTION_MESSAGE, null, // resChoices, orig.getName()); String choice = makeOptionPane(orig); if((choice == null)||(choice.equals(JOptionPane.UNINITIALIZED_VALUE))) return; // user canceled operation // Create the mutated sidechain ModelState newState = new ModelState(origState); Residue newRes = idealizer.makeIdealResidue(orig.getChain(), orig.getSegment(), orig.getSequenceNumber(), orig.getInsertionCode(), choice, newState, usePdbv3); // Align it on the old backbone newState = idealizer.dockResidue(newRes, newState, orig, origState); // Deal with His protonation states if(choice.equals("HIS")) { choice = (String) JOptionPane.showInputDialog(kMain.getTopWindow(), "Choose protonation state:", "Choose protonation state", JOptionPane.QUESTION_MESSAGE, null, new String[] {"ND1 and NE2", "ND1 only", "NE2 only"}, "ND1 and NE2"); if("ND1 only".equals(choice)) newRes.remove(newRes.getAtom(" HE2")); else if("NE2 only".equals(choice)) newRes.remove(newRes.getAtom(" HD1")); } // Create the mutated model Model newModel = (Model) model.clone(); newModel.replace(orig, newRes); // Remove any unnecessary AtomStates from the model newState = newState.createForModel(newModel); // Insert the mutated model into the model manager modelman.replaceModelAndState(newModel, newState); // Make a note in the headers modelman.addUserMod("Mutated "+orig+" to "+newRes); // Set it up for rotation try { new SidechainRotator(kMain, newRes, modelman); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } catch(ResidueException ex) { ex.printStackTrace(SoftLog.err); } catch(AtomException ex) { ex.printStackTrace(SoftLog.err); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return "#scmut-tool"; } public String toString() { return "Sidechain mutator"; } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/SupKitchenTool.java0000644000000000000000000006476111531212732025072 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import king.points.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.*; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.util.*; import chiropraxis.mc.SupKitchen; //}}} /** * SupKitchenTool is a graphical front-end for mc.SupKitchen. * *

    Copyright (C) 2009 by Daniel A. Keedy. All rights reserved. *
    Begun on Thu May 14 2009 */ public class SupKitchenTool extends BasicTool { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## TablePane2 pane; JCheckBox cbVerbose; // for debugging JTextField tfRefFile; JRadioButton rbMdlDir; JTextField tfMdlDir; JRadioButton rbMdlFile; // e.g. NMR JTextField tfMdlFile; // e.g. NMR JTextField tfMaxEnsemSize; JCheckBox cbSplitChains; JRadioButton rbBbAtmsCa; JRadioButton rbBbAtmsAllHvy; JRadioButton rbBbAtmsAllHvyCb; JTextField tfLesk; JCheckBox cbKinEnsem; JTextField tfPcChoice; JTextField tfPcScale; JRadioButton rbDistort; JRadioButton rbRigidXform; JCheckBox cbKinPca; /** Does all the under-the-hood work of superposition & PCA. */ SupKitchen kitchen; //}}} //{{{ Constructor(s) //############################################################################## public SupKitchenTool(ToolBox tb) { super(tb); kitchen = new SupKitchen(); buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { // INPUT JLabel labInputHeader = new JLabel("*** INPUT ***"); cbVerbose = new JCheckBox("Spit extra messages to stderr (for debugging)", false); rbMdlDir = new JRadioButton("Models directory: ", true ); rbMdlFile = new JRadioButton("Models NMR file: " , false); JLabel labRef = new JLabel(" Reference file (opt'l): "); ButtonGroup btnGrpMdlSrc = new ButtonGroup(); btnGrpMdlSrc.add(rbMdlDir); btnGrpMdlSrc.add(rbMdlFile); tfMdlDir = new JTextField("none selected"); tfMdlFile = new JTextField("none selected"); tfRefFile = new JTextField("none selected"); tfMdlDir.setEditable(false); tfMdlFile.setEditable(false); tfRefFile.setEditable(false); JButton btnSetMdlDir = new JButton(new ReflectiveAction( "Choose...", null, this, "onSetMdlDir")); JButton btnSetMdlFile = new JButton(new ReflectiveAction( "Choose...", null, this, "onSetMdlFile")); JButton btnSetRefFile = new JButton(new ReflectiveAction( "Choose...", null, this, "onSetRefFile")); btnSetMdlDir.setEnabled(true); btnSetMdlFile.setEnabled(true); btnSetRefFile.setEnabled(true); JLabel labMaxEnsemSize1 = new JLabel("Max ensem size: "); tfMaxEnsemSize = new JTextField(""+kitchen.getMaxEnsemSize()); JLabel labMaxEnsemSize2 = new JLabel(" "); JLabel labBreak1 = new JLabel("======================================"); // ENSEMBLE JLabel labSupHeader = new JLabel("*** ENSEMBLE SUPERPOSITION ***"); cbSplitChains = new JCheckBox("Split input into chains", true); JLabel labBbAtms = new JLabel("Atoms for superposition:"); rbBbAtmsCa = new JRadioButton("Calphas only" , false); rbBbAtmsAllHvy = new JRadioButton("All bb heavy atoms" , true); rbBbAtmsAllHvyCb = new JRadioButton("All bb heavy atoms + Cbetas", false); ButtonGroup btnGrpBbAtms = new ButtonGroup(); btnGrpBbAtms.add(rbBbAtmsCa); btnGrpBbAtms.add(rbBbAtmsAllHvy); btnGrpBbAtms.add(rbBbAtmsAllHvyCb); JLabel labLesk1 = new JLabel("Trim w/ Lesk sieve to max RMSD:"); tfLesk = new JTextField(""+kitchen.getRmsdLesk()); tfLesk.setEditable(true); JLabel labLesk2 = new JLabel("(-1 = no trimming)"); JButton btnSup = new JButton(new ReflectiveAction( "Superpose! Yay!!", null, this, "onSup")); cbKinEnsem = new JCheckBox("kin", true); JButton btnSaveEnsemPdb = new JButton(new ReflectiveAction( "Save ensemble PDB", null, this, "onSaveEnsemPdb")); JLabel labBreak2 = new JLabel("======================================"); // PRINCIPAL COMPONENT ANALYSIS JLabel labPcaHeader1 = new JLabel("*** PRINCIPAL COMPONENT ANALYSIS ***"); JLabel labPcaHeader2 = new JLabel("How does your ensemble \"like to move\"?"); JLabel labPcChoice = new JLabel("Weighted avg of PCs: "); tfPcChoice = new JTextField("1-3"); tfPcChoice.setEditable(true); JLabel labPcScale = new JLabel(" x"); tfPcScale = new JTextField("1.0"); tfPcScale.setEditable(true); rbRigidXform = new JRadioButton("Rigid xform onto PC-distorted bb", true ); rbDistort = new JRadioButton("Allow PCs to distort bb geom" , false); ButtonGroup btnGrpDistortOrRigidXform = new ButtonGroup(); btnGrpDistortOrRigidXform.add(rbDistort); btnGrpDistortOrRigidXform.add(rbRigidXform); JButton btnPca = new JButton(new ReflectiveAction( "Do PCA! Yay!!", null, this, "onPca")); cbKinPca = new JCheckBox("kin" , true); JButton btnSavePcaPdb = new JButton(new ReflectiveAction( "Save PCA-transformed PDB", null, this, "onSavePcaPdb")); // -------------------------------------------------------------------- // INPUT pane = new TablePane2().top().weights(10, 1); pane.newRow(); pane.startSubtable(1, 1).hfill(true).memorize(); // header pane.add(labInputHeader); pane.endSubtable(); pane.newRow(); pane.add(cbVerbose); pane.newRow(); pane.startSubtable(1, 1).hfill(true).memorize(); // input: models pane.add(rbMdlDir); pane.add(tfMdlDir); pane.add(btnSetMdlDir); pane.newRow(); pane.add(rbMdlFile); pane.add(tfMdlFile); pane.add(btnSetMdlFile); pane.endSubtable(); pane.newRow(); pane.startSubtable(1, 1).hfill(true).memorize(); // input: ref (opt'l) pane.add(labRef); pane.add(tfRefFile); pane.add(btnSetRefFile); pane.endSubtable(); pane.newRow(); pane.startSubtable(1, 1).hfill(true).memorize(); // max ensem size pane.add(labMaxEnsemSize1); pane.add(tfMaxEnsemSize); pane.add(labMaxEnsemSize2); pane.endSubtable(); pane.newRow(); // ENSEMBLE pane.add(labBreak1); pane.newRow(); pane.startSubtable(1, 1).hfill(true).memorize(); // header pane.add(labSupHeader); pane.endSubtable(); pane.newRow(); pane.add(cbSplitChains); pane.newRow(); pane.startSubtable(1, 1).hfill(true).memorize(); // which bb atoms pane.add(labBbAtms); pane.newRow(); pane.add(rbBbAtmsCa); pane.newRow(); pane.add(rbBbAtmsAllHvy); pane.newRow(); pane.add(rbBbAtmsAllHvyCb); pane.endSubtable(); pane.newRow(); pane.startSubtable(1, 1).hfill(true).memorize(); // sup output pane.add(labLesk1); pane.add(tfLesk); pane.add(labLesk2); pane.endSubtable(); pane.newRow(); pane.startSubtable(1, 1).hfill(true).memorize(); // sup output pane.add(btnSup); pane.add(cbKinEnsem); pane.newRow(); pane.add(btnSaveEnsemPdb); pane.endSubtable(); pane.newRow(); // PRINCIPAL COMPONENT ANALYSIS pane.add(labBreak2); pane.newRow(); pane.startSubtable(1, 1).hfill(true).memorize(); // header pane.add(labPcaHeader1); pane.newRow(); pane.add(labPcaHeader2); pane.endSubtable(); pane.newRow(); pane.startSubtable(1, 1).hfill(true).memorize(); // choice of PCs + scaling pane.add(labPcChoice); pane.add(tfPcChoice); pane.add(labPcScale); pane.add(tfPcScale); pane.endSubtable(); pane.newRow(); pane.startSubtable(1, 1).hfill(true).memorize(); // distort vs. rigid pane.add(rbRigidXform); pane.newRow(); pane.add(rbDistort); pane.endSubtable(); pane.newRow(); pane.startSubtable(1, 1).hfill(true).memorize(); // PCA output pane.add(btnPca); pane.add(cbKinPca); pane.newRow(); pane.add(btnSavePcaPdb); pane.endSubtable(); } //}}} //{{{ onSetMdlDir //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** Divvies provided directory into an array of CoordinateFiles. */ public void onSetMdlDir(ActionEvent ev) { // Make file chooser. Will throw an exception if we're running as an applet (?) TablePane acc = new TablePane(); JFileChooser fileChooser = new JFileChooser(); String currDir = System.getProperty("user.dir"); if(currDir != null) fileChooser.setCurrentDirectory(new File(currDir)); fileChooser.setAccessory(acc); fileChooser.setDialogTitle("Choose directory of model PDB files"); fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY); if(JFileChooser.APPROVE_OPTION == fileChooser.showOpenDialog(kMain.getTopWindow())) { File mdlDir = fileChooser.getSelectedFile(); try { tfMdlDir.setText(mdlDir.getName()); rbMdlDir.setSelected(true); tfMdlFile.setText("none selected"); rbMdlFile.setSelected(false); System.err.println("Set models dir: " + mdlDir.getName()); kitchen.setMdlFilename(mdlDir.getPath()); System.setProperty("user.dir", mdlDir.getParentFile().getAbsolutePath()); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong file format was chosen, or file is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); System.err.println("*** Error opening models dir:" + mdlDir.getName() + "!"); } } } //}}} //{{{ onSetMdlFile //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** Divvies provided file (usually multi-model, e.g. NMR) into an array * containing one CoordinateFile. Alternative to onSetMdlDir(). */ public void onSetMdlFile(ActionEvent ev) { // Make file chooser. Will throw an exception if we're running as an applet (?) TablePane acc = new TablePane(); JFileChooser fileChooser = new JFileChooser(); String currDir = System.getProperty("user.dir"); if(currDir != null) fileChooser.setCurrentDirectory(new File(currDir)); fileChooser.setAccessory(acc); fileChooser.setDialogTitle("Choose models PDB file"); if(JFileChooser.APPROVE_OPTION == fileChooser.showOpenDialog(kMain.getTopWindow())) { File mdlFile = fileChooser.getSelectedFile(); try { tfMdlFile.setText(mdlFile.getName()); rbMdlFile.setSelected(true); tfMdlDir.setText("none selected"); rbMdlDir.setSelected(false); System.err.println("Set models file: " + mdlFile.getName()); kitchen.setMdlFilename(mdlFile.getPath()); System.setProperty("user.dir", mdlFile.getAbsolutePath()); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong file format was chosen, or file is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); System.err.println("*** Error opening models file: " + mdlFile.getName() + "!"); } } } //}}} //{{{ onSetRefFile //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSetRefFile(ActionEvent ev) { // Make file chooser. Will throw an exception if we're running as an applet (?) TablePane acc = new TablePane(); JFileChooser fileChooser = new JFileChooser(); String currDir = System.getProperty("user.dir"); if(currDir != null) fileChooser.setCurrentDirectory(new File(currDir)); fileChooser.setAccessory(acc); fileChooser.setDialogTitle("Choose reference PDB file"); if(JFileChooser.APPROVE_OPTION == fileChooser.showOpenDialog(kMain.getTopWindow())) { File refFile = fileChooser.getSelectedFile(); try { tfRefFile.setText(refFile.getName()); System.err.println("Set ref file: " + refFile.getName()); kitchen.setRefFilename(refFile.getPath()); System.setProperty("user.dir", refFile.getAbsolutePath()); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong file format was chosen, or file is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); System.err.println("*** Error opening ref file: " + refFile.getName() + "!"); } } } //}}} //{{{ onSup //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSup(ActionEvent ev) { JOptionPane.showMessageDialog(pane, "Just a warning before your (slow) calculation gets started...", "Sup Kitchen Tool is currently in the \"alpha test\" stage!", JOptionPane.WARNING_MESSAGE); if(tfMdlDir.getText().equals("none selected") && tfMdlFile.getText().equals("none selected")) { String error = "No models directory/file specified yet -- can't superpose!"; JOptionPane.showMessageDialog(null, error, error, JOptionPane.ERROR_MESSAGE); return; } kitchen.setVerbose(cbVerbose.isSelected()); if(rbBbAtmsCa.isSelected()) kitchen.setSuperimpose(kitchen.SELECT_CA); else if(rbBbAtmsAllHvy.isSelected()) kitchen.setSuperimpose(kitchen.SELECT_BB_HEAVY); else /*if(rbBbAtmsAllHvyCb.isSelected())*/ kitchen.setSuperimpose(kitchen.SELECT_BB_HEAVY_CB); try { double leskSieve = Double.parseDouble(tfLesk.getText()); kitchen.setRmsdLesk(leskSieve); } catch(NumberFormatException ex) { System.err.println("*** Error: Can't parse "+tfLesk.getText()+" as double for Lesk rmsd!"); System.err.println("*** Simply using default: "+kitchen.getRmsdLesk()+"..."); } try { int maxEnsemSize = Integer.parseInt(tfMaxEnsemSize.getText()); kitchen.setMaxEnsemSize(maxEnsemSize); } catch(NumberFormatException ex) { System.err.println("*** Error: Can't parse "+tfMaxEnsemSize.getText()+" as integer for max ensem size!"); System.err.println("*** Simply using default: "+kitchen.getMaxEnsemSize()+"..."); } try { kitchen.makeSup(); if(cbKinEnsem.isSelected()) visEnsem(kitchen.getEnsemCoordFile(), kitchen.getTitle()); } catch(IOException ex) { JOptionPane.showMessageDialog(kMain.getCanvas(), ex.getMessage()); } } //}}} //{{{ onPca //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onPca(ActionEvent ev) { JOptionPane.showMessageDialog(pane, "Just a warning before your (slow) calculation gets started...", "Sup Kitchen Tool is currently in the \"alpha test\" stage!", JOptionPane.WARNING_MESSAGE); if(kitchen.getEnsemCoordFile() == null) { JOptionPane.showMessageDialog(null, "No ensemble constructed yet -- can't do PCA!", "No ensemble constructed yet -- can't do PCA!", JOptionPane.ERROR_MESSAGE); return; } kitchen.setVerbose(cbVerbose.isSelected()); if(rbBbAtmsCa.isSelected()) kitchen.setSuperimpose(kitchen.SELECT_CA); else if(rbBbAtmsAllHvy.isSelected()) kitchen.setSuperimpose(kitchen.SELECT_BB_HEAVY); else /*if(rbBbAtmsAllHvyCb.isSelected())*/ kitchen.setSuperimpose(kitchen.SELECT_BB_HEAVY_CB); try { double scale = Double.parseDouble(tfPcScale.getText()); kitchen.setScale(scale); } catch(NumberFormatException ex) { System.err.println("*** Error: Can't format "+tfPcScale.getText()+" as double for scale!"); System.err.println("*** Simply using default: "+kitchen.getScale()+"..."); } kitchen.parsePcChoice(tfPcChoice.getText()); kitchen.setDistort(rbDistort.isSelected()); kitchen.doPca(); if(cbKinPca.isSelected()) visEnsem(kitchen.getPcaCoordFile(), kitchen.getTitle()+"_PCA"); } //}}} //{{{ onSaveEnsemPdb //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSaveEnsemPdb(ActionEvent ev) { if(kitchen.getEnsemCoordFile() == null) { String error = "No ensemble constructed yet -- can't save!"; JOptionPane.showMessageDialog(null, error, error, JOptionPane.ERROR_MESSAGE); return; } // Make file chooser. Will throw an exception if we're running as an applet (?) TablePane acc = new TablePane(); JFileChooser fileChooser = new JFileChooser(); fileChooser.setAccessory(acc); fileChooser.setDialogTitle("Save ensemble PDB file"); String currDir = System.getProperty("user.dir"); if(currDir != null) fileChooser.setCurrentDirectory(new File(currDir)); SuffixFileFilter fileFilter = new SuffixFileFilter("PDB files (*.pdb)"); fileFilter.addSuffix(".pdb"); fileChooser.addChoosableFileFilter(fileFilter); fileChooser.setFileFilter(fileFilter); File suggestedFile = new File(kitchen.getTitle()+".pdb"); fileChooser.setSelectedFile(suggestedFile); if(JFileChooser.APPROVE_OPTION == fileChooser.showSaveDialog(kMain.getTopWindow())) { try { File f = fileChooser.getSelectedFile(); if( !f.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { System.err.println("Writing PDB: " + f.getName() + "..."); try { PrintStream ps = new PrintStream(f); kitchen.writePdb(ps, kitchen.getEnsemCoordFile()); System.err.println("Done writing PDB to " + f.getName()); } catch(FileNotFoundException ex) { String error = "Error writing to "+f.getName()+"!"; System.err.println(error); JOptionPane.showMessageDialog(null, error, error, JOptionPane.ERROR_MESSAGE); } } } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong file format was chosen, or file is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); System.err.println("*** Error writing ensemble to PDB!"); } } } //}}} //{{{ onSavePcaPdb //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onSavePcaPdb(ActionEvent ev) { if(kitchen.getPcaCoordFile() == null) { String error = "PCA \"ensemble\" not constructed yet -- can't save!"; JOptionPane.showMessageDialog(null, error, error, JOptionPane.ERROR_MESSAGE); return; } // Make file chooser. Will throw an exception if we're running as an applet (?) TablePane acc = new TablePane(); JFileChooser fileChooser = new JFileChooser(); fileChooser.setAccessory(acc); fileChooser.setDialogTitle("Save PCA-transformed reference PDB file"); String currDir = System.getProperty("user.dir"); if(currDir != null) fileChooser.setCurrentDirectory(new File(currDir)); SuffixFileFilter fileFilter = new SuffixFileFilter("PDB files (*.pdb)"); fileFilter.addSuffix(".pdb"); fileChooser.addChoosableFileFilter(fileFilter); fileChooser.setFileFilter(fileFilter); File suggestedFile = new File(kitchen.getTitle()+"_PCA.pdb"); fileChooser.setSelectedFile(suggestedFile); if(JFileChooser.APPROVE_OPTION == fileChooser.showSaveDialog(kMain.getTopWindow())) { try { File f = fileChooser.getSelectedFile(); if( !f.exists() || JOptionPane.showConfirmDialog(kMain.getTopWindow(), "This file exists -- do you want to overwrite it?", "Overwrite file?", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION ) { System.err.println("Writing PDB: " + f.getName() + "..."); try { PrintStream ps = new PrintStream(f); kitchen.writePdb(ps, kitchen.getPcaCoordFile()); System.err.println("Done writing PDB to " + f.getName()); } catch(FileNotFoundException ex) { String error = "Error writing to "+f.getName()+"!"; System.err.println(error); JOptionPane.showMessageDialog(null, error, error, JOptionPane.ERROR_MESSAGE); } } } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), "Wrong file format was chosen, or file is corrupt:\n"+ex.getMessage(), "Sorry!", JOptionPane.ERROR_MESSAGE); System.err.println("*** Error writing ensemble to PDB!"); } } } //}}} //{{{ visEnsem //############################################################################## /** * Prints either superposed ensemble or PCA "ensemble" to graphics window. * We're basically emulating molikin.kingplugin.QuickinPlugin.buildKinemage(). */ public void visEnsem(CoordinateFile coordFile, String name) { // Get kin data in form of one of Ian's "StreamTank"s StreamTank kinData = new StreamTank(); PrintWriter out = new PrintWriter(new OutputStreamWriter(kinData)); kitchen.writeKin(out, coordFile, name); kinData.close(); // Write out to a new kinemage in the graphics window. Kinemage newKin = new Kinemage(name); kMain.getKinIO().loadStream(kinData.getInputStream(), kinData.size(), newKin); kMain.getStable().append(Arrays.asList(new Kinemage[] {newKin})); } //}}} //{{{ xx_click() functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); } /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); } //}}} //{{{ getToolPanel, getHelpURL/Anchor, toString //############################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return pane; } /** Returns the URL of a web page explaining use of this tool */ public URL getHelpURL() { URL url = getClass().getResource("/chiropraxis/kingtools/tools-manual.html"); String anchor = getHelpAnchor(); if(url != null && anchor != null) { try { url = new URL(url, anchor); } catch(MalformedURLException ex) { ex.printStackTrace(SoftLog.err); } return url; } else return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return "#supkitchen-tool"; } public String toString() { return "Sup Kitchen Tool"; } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/MethylRotator.java0000644000000000000000000003332411744305702024771 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import chiropraxis.sc.*; import chiropraxis.rotarama.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.util.SoftLog; //}}} /** * MethylRotator is a GUI for repositioning a sidechain * based on rotations of its methyl groups. * *

    Copyright (C) 2011 by Daniel A. Keedy. All rights reserved. *
    Begun on Fri Jul 1 2011 */ public class MethylRotator implements Remodeler, ChangeListener, ListSelectionListener, WindowListener { //{{{ Constants static final DecimalFormat df1 = new DecimalFormat("+0.0;-0.0"); static final DecimalFormat df0 = new DecimalFormat("0"); static final Color normalColor = new Color(0f, 0f, 0f); static final Color mediumColor = new Color(0.3f, 0f, 0f); static final Color alertColor = new Color(0.6f, 0f, 0f); //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; Residue targetRes; ModelManager2 modelman; SidechainAngles2 scAngles; Rotamer rotamer; SidechainIdealizer scIdealizer = null; SidechainsLtoD scFlipper = null; Window dialog; JCheckBox cbIdealize; JCheckBox useDaa; JList rotamerList; AngleDial[] dials; JLabel[] labels; /** Marker for logical multi-dial update */ boolean isUpdating = false; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @throws IOException if the needed resource(s) can't be loaded from the JAR file * @throws IllegalArgumentException if the residue code isn't recognized */ public MethylRotator(KingMain kMain, Residue target, ModelManager2 mm) throws IOException { this.kMain = kMain; this.targetRes = target; this.modelman = mm; this.scAngles = new SidechainAngles2(); //this.rotamer = Rotamer.getInstance(); //this.scFlipper = new SidechainsLtoD(); try { this.scIdealizer = new SidechainIdealizer(); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } buildGUI(kMain.getTopWindow()); modelman.registerTool(this, Collections.singleton(targetRes)); } //}}} //{{{ buildGUI //################################################################################################## private void buildGUI(Frame frame) { // Dials TablePane dialPane = new TablePane(); String[] angleNames = scAngles.nameMethylAngles(targetRes); if(angleNames == null) throw new IllegalArgumentException("Bad residue code '"+targetRes.getName()+"' isn't recognized"); if(angleNames.length == 0) throw new IllegalArgumentException("Residue type '"+targetRes.getName()+"' doesn't have any methyls"); double[] angleVals = scAngles.measureMethylAngles(targetRes, modelman.getMoltenState()); dials = new AngleDial[angleNames.length]; for(int i = 0; i < angleNames.length; i++) { dialPane.add(new JLabel(angleNames[i])); dials[i] = new AngleDial(); dials[i].setOrigDegrees(angleVals[i]); dials[i].setDegrees(angleVals[i]); dials[i].addChangeListener(this); dialPane.add(dials[i]); dialPane.newRow(); } // Warnings for large methyl rotations (analogous to rotamer quality readout) TablePane labelPane = new TablePane(); labels = new JLabel[angleNames.length]; for(int i = 0; i < angleNames.length; i++) { labels[i] = new JLabel(); labels[i].setToolTipText("Quality assessment for the current methyl rotation"); labelPane.add(labels[i]); labelPane.newRow(); } setFeedback(); // Top-level pane JPanel twistPane = new JPanel(new BorderLayout()); twistPane.add(dialPane, BorderLayout.WEST); twistPane.add(labelPane, BorderLayout.CENTER); // Other controls TablePane optionPane = new TablePane(); cbIdealize = new JCheckBox(new ReflectiveAction("Idealize sidechain", null, this, "onIdealizeOnOff")); if(scIdealizer != null) cbIdealize.setSelected(true); else cbIdealize.setEnabled(false); optionPane.addCell(cbIdealize); twistPane.add(optionPane, BorderLayout.NORTH); JButton btnRelease = new JButton(new ReflectiveAction("Finished", null, this, "onReleaseResidue")); JButton btnRotateSc = new JButton(new ReflectiveAction("Rotate sidechain", null, this, "onRotateSidechain")); TablePane2 btnPane = new TablePane2(); btnPane.addCell(btnRelease); btnPane.addCell(btnRotateSc); twistPane.add(btnPane, BorderLayout.SOUTH); // Assemble the dialog if(kMain.getPrefs().getBoolean("minimizableTools")) { JFrame fm = new JFrame(targetRes.toString()+" methyl rotator"); fm.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); fm.setContentPane(twistPane); dialog = fm; } else { JDialog dial = new JDialog(frame, targetRes.toString()+" methyl rotator", false); dial.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dial.setContentPane(twistPane); dialog = dial; } dialog.addWindowListener(this); dialog.pack(); dialog.setVisible(true); } //}}} //{{{ onReleaseResidue, onRotateSidechain, onIdealizeOnOff //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** * Checks residues back into the ModelManager. * @param ev is ignored, may be null. */ public void onReleaseResidue(ActionEvent ev) { int reply = JOptionPane.showConfirmDialog(dialog, "Do you want to keep the changes\nyou've made to this residue?", "Keep changes?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if(reply == JOptionPane.CANCEL_OPTION) return; if(reply == JOptionPane.YES_OPTION) { modelman.requestStateChange(this); // will call this.updateModelState() modelman.addUserMod("Refit sidechain methyl(s) of "+targetRes); } else // == JOptionPane.NO_OPTION modelman.unregisterTool(this); dialog.dispose(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** * Launches a SidechainRotator window for this residue. * @param ev is ignored, may be null. */ public void onRotateSidechain(ActionEvent ev) { try { new SidechainRotator(kMain, targetRes, modelman); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onIdealizeOnOff(ActionEvent ev) { stateChanged(null); } //}}} //{{{ isUpdating //################################################################################################## /** * Implements a means of updating several dials at once * while maintaining getValueIsAdjusting() == true. * This is useful to us in e.g. setAllAngles(). */ public boolean isUpdating() { return isUpdating; } public void isUpdating(boolean b) { isUpdating = b; } //}}} //{{{ stateChanged, valueChanged, getValueIsAdjusting //################################################################################################## /** Gets called when the dials move. */ public void stateChanged(ChangeEvent ev) { // This keeps us from running Probe N times when a rotamer with // N angles is selected from the list! (Maybe?) if(!isUpdating()) modelman.requestStateRefresh(); setFeedback(); // otherwise, we evaluate the old conformation } /* Gets called when a new rotamer is picked from the list */ public void valueChanged(ListSelectionEvent ev) { RotamerDef def = (RotamerDef)rotamerList.getSelectedValue(); if(def != null) initSomeAngles(def.chiAngles); // else there is no current selection } /** Returns true if any of the dials is currently being updated */ public boolean getValueIsAdjusting() { if(isUpdating()) return true; for(int i = 0; i < dials.length; i++) { if(dials[i].getValueIsAdjusting()) return true; } return false; } //}}} //{{{ get/set/initAllAngles, initSomeAngles //################################################################################################## /** (measured in degrees) */ public double[] getAllAngles() { double[] angles = new double[dials.length]; for(int i = 0; i < dials.length; i++) angles[i] = dials[i].getDegrees(); return angles; } /** (measured in degrees) */ public void setAllAngles(double[] angles) { if(angles.length < dials.length) throw new IllegalArgumentException("Not enough angles provided!"); isUpdating(true); for(int i = 0; i < dials.length; i++) dials[i].setDegrees(angles[i]); isUpdating(false); stateChanged(new ChangeEvent(this)); } /** (measured in degrees) */ public void initAllAngles(double[] angles) { if(angles.length < dials.length) throw new IllegalArgumentException("Not enough angles provided!"); initSomeAngles(angles); } /** Doesn't check to make sure there are enough angles to set all dials */ public void initSomeAngles(double[] angles) { int len = Math.min(angles.length, dials.length); isUpdating(true); for(int i = 0; i < len; i++) { dials[i].setOrigDegrees(angles[i]); dials[i].setDegrees(angles[i]); } isUpdating(false); stateChanged(new ChangeEvent(this)); } //}}} //{{{ setFeedback //################################################################################################## /** * Sets the string that will be displayed as feedback * on the quality of the currently selected rotamer. */ public void setFeedback() { for(int i = 0; i < dials.length; i++) { double rotAngle = Math.abs(dials[i].getDegrees() - dials[i].getOrigDegrees()); if(Double.isNaN(rotAngle)) { labels[i].setText("-?-"); } else if(rotAngle > 15) { labels[i].setText("LARGE CHANGE"); labels[i].setForeground(alertColor); } else if(rotAngle > 10) { labels[i].setText("medium change"); labels[i].setForeground(alertColor); } else if(rotAngle > 5) { labels[i].setText("medium change"); labels[i].setForeground(mediumColor); } else if(rotAngle > 0) { labels[i].setText("small change"); labels[i].setForeground(normalColor); } else // rotAngle == 0 { labels[i].setText("no change"); labels[i].setForeground(normalColor); } } } //}}} //{{{ updateModelState //################################################################################################## /** * Allows this tool to modify the geometry of the current model. * This function is called by the model manager at two times: *

      *
    1. When this tool is registered and someone requests * that the molten model be updated
    2. *
    3. When this tool requests that the model be permanently changed.
    4. *
    * Tools are absolutely not permitted to modify s: all changes * should be done in a new ModelState which should be returned * from this function. */ public ModelState updateModelState(ModelState s) { ModelState ret = s; if(scIdealizer != null && cbIdealize.isSelected()) ret = scIdealizer.idealizeSidechain(targetRes, s); // Set methyl angles using "all" angles from this class (i.e. all *methyl* angles) //ret = scAngles.setAllAngles(targetRes, ret, this.getAllAngles()); ret = scAngles.setMethylAngles(targetRes, ret, this.getAllAngles()); return ret; } //}}} //{{{ Dialog window listeners //################################################################################################## public void windowActivated(WindowEvent ev) {} public void windowClosed(WindowEvent ev) {} public void windowClosing(WindowEvent ev) { onReleaseResidue(null); } public void windowDeactivated(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowOpened(WindowEvent ev) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/SswingTool.java0000644000000000000000000001576211531212732024264 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import chiropraxis.rotarama.*; import chiropraxis.sc.*; import driftwood.moldb2.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * SswingTool allows the user to run SSWING on a sidechain * to find its optimal rotamer state, using contact dots and electron density. * *

    Copyright (C) 2004 by XXX. All rights reserved. *
    Begun on July 20 13:29:16 EDT 2004 */ public class SswingTool extends ModelingTool { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## Residue targetRes; File ccp4MapFile = null; SuffixFileFilter mapFilter; JFileChooser mapChooser; JDialog dialog; JTextField sswingCmdField; //}}} //{{{ Constructor(s) //############################################################################## public SswingTool(ToolBox tb) { super(tb); buildGUI(); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { // File chooser for CCP4 maps mapFilter = new SuffixFileFilter("CCP4 electron density maps"); mapFilter.addSuffix(".ccp4"); mapFilter.addSuffix(".mbk"); mapFilter.addSuffix(".map"); mapChooser = new JFileChooser(); mapChooser.addChoosableFileFilter(mapFilter); mapChooser.setFileFilter(mapFilter); String currdir = System.getProperty("user.dir"); if(currdir != null) mapChooser.setCurrentDirectory(new File(currdir)); sswingCmdField = new JTextField(40); JButton mapBtn = new JButton(new ReflectiveAction("Choose new map...", null, this, "onChooseMap")); JButton runBtn = new JButton(new ReflectiveAction("Run Sswing", null, this, "onRunSswing")); JButton cancelBtn = new JButton(new ReflectiveAction("Don't run", null, this, "onCancel")); TablePane2 cp = new TablePane2(); cp.hfill(true).addCell(sswingCmdField, 4, 1); cp.newRow(); cp.weights(0,0).memorize(); cp.addCell(mapBtn); cp.weights(1,0).addCell(Box.createGlue()); cp.addCell(cancelBtn).addCell(runBtn); dialog = new JDialog(kMain.getTopWindow(), this.toString(), true); // modal dialog.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); dialog.setContentPane(cp); dialog.pack(); } //}}} //{{{ start/stop/reset //################################################################################################## public void start() { super.start(); // force loading of data tables that will be used later // try { Rotamer.getInstance(); } // catch(IOException ex) {} // Bring up model manager modelman.onShowDialog(null); } //}}} //{{{ c_click //############################################################################## /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { if(p != null) { ModelState state = modelman.getMoltenState(); targetRes = this.getResidueNearest(modelman.getModel(), state, p.getX(), p.getY(), p.getZ()); // Check for map file if(ccp4MapFile == null) onChooseMap(null); if(ccp4MapFile == null) return; // cancel if we have no map try { String cmd = makeSswingCmdLine(); sswingCmdField.setText(cmd); dialog.setVisible(true); // hangs here until dialog closed } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ makeSswingCmdLine //############################################################################## String makeSswingCmdLine() throws IOException { // XXX unneeded -- sswing needs auxillary scripts that have to be in the PATH too String sswingExe = SswingRunner.findProgram(kMain, "sswing"); String sswingOption = "-f -s "; if(!" ".equals(targetRes.getChain())) sswingOption = sswingOption+"-c "+targetRes.getChain(); String cmd = sswingExe+" "+sswingOption+" "+ "'"+modelman.getFrozenPDB().getCanonicalPath()+"' "+ targetRes.getSequenceNumber()+" "+targetRes.getName()+" "+ "'"+ccp4MapFile.getCanonicalPath()+"'"; return cmd; } //}}} //{{{ onCancel, onRunSswing, onChooseMap //############################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onCancel(ActionEvent ev) { dialog.setVisible(false); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onRunSswing(ActionEvent ev) { dialog.setVisible(false); String cmd = sswingCmdField.getText(); System.out.println(cmd+"...\n"); SswingRunner sswingRunner = new SswingRunner(kMain, modelman, targetRes, cmd); // starts thread } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onChooseMap(ActionEvent ev) { // Open the new file if(JFileChooser.APPROVE_OPTION == mapChooser.showOpenDialog(kMain.getTopWindow())) { ccp4MapFile = mapChooser.getSelectedFile(); // Rewrite cmd line to reflect new map file name try { String cmd = makeSswingCmdLine(); sswingCmdField.setText(cmd); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return null; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return null; } public String toString() { return "Sswing"; } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/ShearWindow.java0000644000000000000000000004407011531212732024400 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import king.points.BallPoint; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.SoftLog; import chiropraxis.mc.*; import chiropraxis.rotarama.*; //}}} /** * ShearWindow is an implementation of the "shear" move * described for helices in Davis/Richardson 2006 and more generally in * Smith/Kortemme 2008. * *

    Copyright (C) 2010 by Daniel A. Keedy. All rights reserved. *
    Begun on Fri Jul 30 2010 */ public class ShearWindow implements Remodeler, ChangeListener, WindowListener { //{{{ Constants static final DecimalFormat df1 = new DecimalFormat("+0.0;-0.0"); static final DecimalFormat df0 = new DecimalFormat("0"); static final Color normalColor = new Color(0f, 0f, 0f); static final Color alertColor = new Color(0.6f, 0f, 0f); //}}} //{{{ Variable definitions //################################################################################################## // Things that used to be supplied by BasicTool as a superclass: KingMain kMain; KinCanvas kCanvas; ModelManager2 modelman; Window dialog; Residue anchor1, ctrRes1, ctrRes2, anchor2; KList anchorList; Ramachandran rama = null; TauByPhiPsi tauscorer = null; //GUI TablePane2 toolpane; AngleDial shearDial, pept1Dial, pept2Dial, pept3Dial; JLabel[] headerLabels, res1Labels, res2Labels, res3Labels, res4Labels; JCheckBox cbIdealizeSC; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @throws IllegalArgumentException if the residue code isn't recognized */ public ShearWindow(KingMain kMain, Residue target, ModelManager2 mm) { this.kMain = kMain; this.kCanvas = kMain.getCanvas(); this.modelman = mm; this.ctrRes1 = target; // arbitrary choice btw ctrRes1 & ctrRes2 this.anchorList = new KList(KList.BALL); anchorList.setColor( KPalette.peach ); // force loading of data tables that will be used later try { rama = Ramachandran.getInstance(); } catch(IOException ex) {} try { tauscorer = TauByPhiPsi.getInstance(); } catch(IOException ex) {} Model model = modelman.getModel(); ModelState state = modelman.getMoltenState(); this.anchor1 = ctrRes1.getPrev(model); this.ctrRes2 = ctrRes1.getNext(model); if(anchor1 != null && ctrRes2 != null) { this.anchor2 = ctrRes2.getNext(model); if(anchor2 != null) { //System.err.println("from "+anchor1+" to "+anchor2); buildGUI(kMain.getTopWindow()); markAnchor(anchor1, state); markAnchor(anchor2, state); //updateLabels(); -- done by stateChanged() // May also throw IAEx: Collection residues = CaShear.makeMobileGroup(modelman.getModel(), anchor1, anchor2); //System.err.println(residues.size()+" residues before register tool:"); //for(Iterator iter = residues.iterator(); iter.hasNext(); ) System.err.println((Residue)iter.next()); modelman.registerTool(this, residues); stateChanged(null); } else { dialog.dispose(); throw new IllegalArgumentException("Can't find enough neighbor residues for "+target); } } else { dialog.dispose(); throw new IllegalArgumentException("Can't find enough neighbor residues for "+target); } } //}}} //{{{ buildGUI //################################################################################################## private void buildGUI(Frame frame) { shearDial = new AngleDial(); shearDial.addChangeListener(this); pept1Dial = new AngleDial(); pept1Dial.addChangeListener(this); pept2Dial = new AngleDial(); pept2Dial.addChangeListener(this); pept3Dial = new AngleDial(); pept3Dial.addChangeListener(this); JButton btnRelease = new JButton(new ReflectiveAction("Finished", null, this, "onReleaseResidues")); JButton btnRotamer = new JButton(new ReflectiveAction("Rotate sidechain", null, this, "onRotateSidechain")); headerLabels = new JLabel[] { new JLabel("Residue"), new JLabel("Tau dev"), new JLabel("Karplus"), new JLabel("Ramachdrn"), new JLabel("phi,psi"), new JLabel("CA-C sig"), new JLabel("N-CA sig") }; res1Labels = new JLabel[] { new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel() }; res2Labels = new JLabel[] { new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel() }; res3Labels = new JLabel[] { new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel() }; res4Labels = new JLabel[] { new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel(), new JLabel() }; cbIdealizeSC = new JCheckBox(new ReflectiveAction("Idealize sidechains", null, this, "onToggleIdealSC")); cbIdealizeSC.setSelected(false); // 25 Oct 06: changed by mandate from JSR toolpane = new TablePane2(); toolpane.skip(); toolpane.skip(); toolpane.addCell(shearDial); toolpane.skip(); toolpane.skip(); toolpane.newRow(); toolpane.skip(); toolpane.skip(); toolpane.addCell(new JLabel("primary shear")); toolpane.skip(); toolpane.skip(); toolpane.newRow(); toolpane.skip(); toolpane.addCell(pept1Dial); toolpane.addCell(pept2Dial); toolpane.addCell(pept3Dial); toolpane.skip(); toolpane.newRow(); toolpane.skip(); toolpane.addCell(new JLabel("1st peptide")); toolpane.addCell(new JLabel("2nd peptide")); toolpane.addCell(new JLabel("3rd peptide")); toolpane.skip(); toolpane.newRow(); toolpane.addCell(TablePane2.strut(0,10)); toolpane.newRow(); for(int i = 0; i < headerLabels.length; i++) { /*if(i == 2) continue; // skip Karplus' phi/psi-dependent tau deviation*/ toolpane.add(headerLabels[i]); toolpane.add(res1Labels[i]); toolpane.add(res2Labels[i]); toolpane.add(res3Labels[i]); toolpane.add(res4Labels[i]); toolpane.newRow(); } toolpane.newRow(); toolpane.addCell(TablePane2.strut(0,10)); toolpane.newRow(); toolpane.startSubtable(4,1); toolpane.addCell(btnRelease); toolpane.addCell(cbIdealizeSC); toolpane.addCell(btnRotamer); toolpane.endSubtable(); // Assemble the dialog if(kMain.getPrefs().getBoolean("minimizableTools")) { JFrame fm = new JFrame("Shear: "+anchor1.toString()+" to "+anchor2.toString()); fm.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); fm.setContentPane(toolpane); dialog = fm; } else { JDialog dial = new JDialog(frame, "Shear: "+anchor1.toString()+" to "+anchor2.toString(), false); dial.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dial.setContentPane(toolpane); dialog = dial; } dialog.addWindowListener(this); dialog.pack(); dialog.setVisible(true); } //}}} //{{{ markAnchor //################################################################################################## /** Creates a new ball to mark the position of an anchor residue */ void markAnchor(Residue res, ModelState state) { Atom ca = res.getAtom(" CA "); if(ca == null) return; try { AtomState cas = state.get(ca); BallPoint mark = new BallPoint("C-alpha axis endpoint"); mark.r0 = 0.3f; mark.setX(cas.getX()); mark.setY(cas.getY()); mark.setZ(cas.getZ()); anchorList.add(mark); kCanvas.repaint(); } catch(AtomException ex) { ex.printStackTrace(); } } //}}} //{{{ stateChanged, updateModelState, onToggleIdealSC //################################################################################################## // ev may be null! public void stateChanged(ChangeEvent ev) { modelman.requestStateRefresh(); // will call this.updateModelState() updateLabels(); kCanvas.repaint(); } public ModelState updateModelState(ModelState before) { try { Collection residues = CaShear.makeMobileGroup(modelman.getModel(), anchor1, anchor2); boolean idealize = cbIdealizeSC.isSelected(); // Major rotation ModelState after = CaShear.makeConformation( residues, before, shearDial.getDegrees(), idealize); // Peptide rotations Residue[] res = (Residue[]) residues.toArray(new Residue[residues.size()]); double[] angles = new double[] { pept1Dial.getDegrees(), pept2Dial.getDegrees(), pept3Dial.getDegrees() }; boolean[] idealizeSC = new boolean[] { idealize, idealize, idealize, idealize }; after = CaShear.twistPeptides(res, after, angles, idealizeSC); return after; } catch(AtomException ex) { ex.printStackTrace(); return before; } } // target of reflection public void onToggleIdealSC(ActionEvent ev) { stateChanged(null); } //}}} //{{{ updateLabels //################################################################################################## void updateLabels() { updateLabels(anchor1, res1Labels); updateLabels(ctrRes1, res2Labels); updateLabels(ctrRes2, res3Labels); updateLabels(anchor2, res4Labels); } void updateLabels(Residue r, JLabel[] l) { // Make color normal again for(int i = 0; i < l.length; i++) l[i].setForeground(normalColor); if(r == null) { for(int i = 0; i < l.length; i++) l[i].setText(""); } else { l[0].setText(r.toString()); Model model = modelman.getModel(); ModelState modelState = modelman.getMoltenState(); // Tau dev (non-phi,psi-dependent) try { double taudev = AminoAcid.getTauDeviation(r, modelState); l[1].setText(df1.format(taudev)); if(Math.abs(taudev) >= 3.0) l[1].setForeground(alertColor); } catch(AtomException ex) { l[1].setText("-?-"); } // Phi,psi, Ramachandran, & phi,psi-dependent tau dev try { double phi = AminoAcid.getPhi(model, r, modelState); double psi = AminoAcid.getPsi(model, r, modelState); l[4].setText(df0.format(phi)+" , "+df0.format(psi)); if(rama == null) l[3].setText("[no data]"); else if(rama.isOutlier(model, r, modelState)) { l[3].setText("OUTLIER"); l[3].setForeground(alertColor); } else if(rama.rawScore(model, r, modelState) > 0.02) l[3].setText("favored"); else l[3].setText("allowed"); if(tauscorer == null) l[2].setText("[no data]"); else { double taudev = tauscorer.getTauDeviation(model, r, modelState); l[2].setText(df1.format(taudev)); if(Math.abs(taudev) >= 3.0) l[2].setForeground(alertColor); } } catch(AtomException ex) { l[2].setText("-?-"); l[3].setText("[no phi,psi]"); l[4].setText("? , ?"); } catch(ResidueException ex) { l[2].setText("-?-"); l[3].setText("[no phi,psi]"); l[4].setText("? , ?"); } // Bond length devs try { double sigmas = this.getLengthDeviation(model, r, modelState, "N--CA"); l[6].setText(df1.format(sigmas)); if(Math.abs(sigmas) >= 4.0) l[6].setForeground(alertColor); } catch(AtomException ex) { l[6].setText("-?-"); } try { double sigmas = this.getLengthDeviation(model, r, modelState, "CA--C"); l[5].setText(df1.format(sigmas)); if(Math.abs(sigmas) >= 4.0) l[5].setForeground(alertColor); } catch(AtomException ex) { l[5].setText("-?-"); } } dialog.pack(); } //}}} //{{{ getLengthDeviation //################################################################################################## /** * A dead-simple implementation of Dangle's Engh & Huber bond length values. * Separates out Gly vs. Pro vs. other properly, & returns deviation in sigmas. * Doesn't seem worth importing all of Dangle just to do this! */ double getLengthDeviation(Model model, Residue r, ModelState modelState, String whichLength) throws AtomException { // From Dangle: // // for GLY distance N--CA _N__, _CA_ ideal 1.456 0.015 // for PRO distance N--CA _N__, _CA_ ideal 1.468 0.017 // distance N--CA _N__, _CA_ ideal 1.459 0.020 // // for GLY distance CA--C _CA_, _C__ ideal 1.514 0.016 // for PRO distance CA--C _CA_, _C__ ideal 1.524 0.020 // distance CA--C _CA_, _C__ ideal 1.525 0.026 double expected, sigma, actual; if(whichLength.equals("N--CA")) { if (r.getName().equals("GLY")) { expected = 1.456; sigma = 0.015; } else if(r.getName().equals("PRO")) { expected = 1.468; sigma = 0.017; } else { expected = 1.459; sigma = 0.020; } AtomState n = modelState.get(r.getAtom(" N ")); AtomState ca = modelState.get(r.getAtom(" CA ")); actual = Triple.distance(n, ca); } else if(whichLength.equals("CA--C")) { if (r.getName().equals("GLY")) { expected = 1.514; sigma = 0.016; } else if(r.getName().equals("PRO")) { expected = 1.524; sigma = 0.020; } else { expected = 1.525; sigma = 0.026; } AtomState ca = modelState.get(r.getAtom(" CA ")); AtomState c = modelState.get(r.getAtom(" C ")); actual = Triple.distance(ca, c); } else throw new IllegalArgumentException("Invalid bond length specifier: "+whichLength); return (actual - expected) / sigma; } //}}} //{{{ onReleaseResidues //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** * Checks residues back into the ModelManager, * nulls the anchors and repaints the graphics. * @param ev is ignored, may be null. */ public void onReleaseResidues(ActionEvent ev) { int reply = JOptionPane.showConfirmDialog(kMain.getTopWindow(), "Do you want to keep the changes\nyou've made to these residues?", "Keep changes?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if(reply == JOptionPane.CANCEL_OPTION) return; if(reply == JOptionPane.YES_OPTION) { modelman.requestStateChange(this); // will call this.updateModelState() modelman.addUserMod("Refit backbone of "+anchor1.toString()+" to "+anchor2.toString()); } else // == JOptionPane.NO_OPTION modelman.unregisterTool(this); dialog.dispose(); kCanvas.repaint(); } //}}} //{{{ onRotateSidechain //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** * Launches a SidechainRotator window for this residue. * @param ev is ignored, may be null. */ public void onRotateSidechain(ActionEvent ev) { try { new SidechainRotator(kMain, ctrRes1, modelman); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } //}}} //{{{ Dialog window listeners //################################################################################################## public void windowActivated(WindowEvent ev) {} public void windowClosed(WindowEvent ev) {} public void windowClosing(WindowEvent ev) { onReleaseResidues(null); } public void windowDeactivated(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowOpened(WindowEvent ev) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/NoePanel.java0000644000000000000000000001707111531212732023650 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.data.*; import driftwood.gui.*; import driftwood.util.SoftLog; //}}} /** * NoePanel provides a GUI interface to * Brian Coggin's noe-display program. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Tue Sep 23 11:03:07 EDT 2003 */ public class NoePanel extends TablePane implements ActionListener, ChangeListener { //{{{ Constants static DecimalFormat df = new DecimalFormat("0.0###"); //}}} //{{{ Variable definitions //############################################################################## KingMain kMain; ModelManager2 modelman; BgKinRunner noePlotter = null; AttentiveComboBox cmDisplaySel; JTextField tfRescaleSel; ExpSlider slRescale; JComboBox coColorBy; JComboBox coDistCalc; JComboBox coDistCorr; JCheckBox cbEnumAmbig; JTextField tfMoreFlags; Map mapColorBy; Map mapDistCalc; Map mapDistCorr; //}}} //{{{ Constructor(s) //############################################################################## public NoePanel(KingMain kmain, ModelManager2 modelman) { super(); this.kMain = kmain; this.modelman = modelman; buildMaps(); buildGUI(); } //}}} //{{{ buildMaps //############################################################################## private void buildMaps() { mapColorBy = new UberMap(); mapColorBy.put("ratio (model dist/target dist)", "-cr"); mapColorBy.put("NOE target distance", "-cd"); mapColorBy.put("violations (model - target >= 0.5)", "-cv"); mapDistCalc = new UberMap(); mapDistCalc.put("geometric center", "-dc"); mapDistCalc.put("r^-6 summation", "-ds"); mapDistCorr = new UberMap(); mapDistCorr.put("none", ""); mapDistCorr.put("add", "+"); mapDistCorr.put("remove", "-"); } //}}} //{{{ buildGUI //############################################################################## private void buildGUI() { TablePane cp = this; slRescale = new ExpSlider(0.5, 2.0, 50); slRescale.setDouble(1.0); slRescale.setLabels(5, new DecimalFormat("0.#")); slRescale.addChangeListener(this); tfRescaleSel = new AttentiveTextField("*"); tfRescaleSel.addActionListener(this); cmDisplaySel = new AttentiveComboBox( new Object[] { "{molten}", "within 5 of {viewcenter}", "all", "viol" }); //cmDisplaySel.setEditable(true); -- redundant cmDisplaySel.addActionListener(this); coColorBy = new JComboBox(mapColorBy.keySet().toArray()); coColorBy.addActionListener(this); coDistCalc = new JComboBox(mapDistCalc.keySet().toArray()); coDistCalc.addActionListener(this); coDistCorr = new JComboBox(mapDistCorr.keySet().toArray()); coDistCorr.addActionListener(this); cbEnumAmbig = new JCheckBox("Enumerate ambiguous NOEs"); cbEnumAmbig.addActionListener(this); tfMoreFlags = new AttentiveTextField(""); tfMoreFlags.addActionListener(this); cp.save().insets(0).hfill(true).vfill(true).startSubtable(2,1); cp.save().weights(0,1).addCell(new JLabel("Color by:")).restore(); cp.save().right().addCell(coColorBy).restore(); cp.endSubtable().restore(); cp.newRow(); cp.save().weights(0,1).addCell(new JLabel("display:")).restore(); cp.save().hfill(true).addCell(cmDisplaySel).restore(); cp.newRow(); cp.addCell(cbEnumAmbig,2,1); cp.newRow(); cp.save().weights(0,1).addCell(new JLabel("rescale:")).restore(); cp.save().hfill(true).addCell(tfRescaleSel).restore(); cp.newRow(); cp.save().hfill(true).addCell(slRescale,2,1).restore(); cp.newRow(); cp.addCell(cp.strut(0,4)); cp.newRow(); cp.save().insets(0).hfill(true).vfill(true).startSubtable(2,1); cp.addCell(new JLabel("Pseudoatom distance calc:")); cp.addCell(new JLabel("Corrections:")); cp.newRow(); cp.save().hfill(true); cp.addCell(coDistCalc); cp.addCell(coDistCorr); cp.restore(); cp.endSubtable().restore(); cp.newRow(); cp.save().insets(0).hfill(true).vfill(true).startSubtable(2,1); cp.save().weights(0,1).addCell(new JLabel("More flags:")).restore(); cp.save().hfill(true).addCell(tfMoreFlags).restore(); cp.endSubtable().restore(); } //}}} //{{{ getNoePlotter, visualizeNOEs //############################################################################## BgKinRunner getNoePlotter() { Kinemage kin = kMain.getKinemage(); if(kin != null && (noePlotter == null || !noePlotter.getKinemage().equals(kin))) { if(noePlotter != null) noePlotter.terminate(); // clean up the old one // Incomplete command line, will be completed in a moment noePlotter = new BgKinRunner(kMain, kin, ""); } return noePlotter; } public void visualizeNOEs(Collection residues, File noeFile, String noeFormat) { try { BgKinRunner np = getNoePlotter(); String optColor = mapColorBy.get(coColorBy.getSelectedItem()).toString(); String optCalc = mapDistCalc.get(coDistCalc.getSelectedItem()).toString(); String optCorr = mapDistCorr.get(coDistCorr.getSelectedItem()).toString(); String optAmbig = cbEnumAmbig.isSelected() ? "-a" : ""; String optExtra = tfMoreFlags.getText(); String noeCmd = " -t -g 'Dynamic NOEs' -f "+optColor+" "+optCalc+optCorr +" -n "+noeFormat+" -s '"+getDisplaySelection()+"'" +" -r "+df.format( slRescale.getDouble() )+" '"+getRescaleSelection()+"'" +" "+optAmbig+" "+optExtra+" '{pdbfile}' '"+noeFile.getCanonicalPath()+"'"; String noeExe = noePlotter.findProgram("noe-display"); noePlotter.setCommand(noeExe+noeCmd); // now complete cmd line np.requestRun(residues, modelman.getMoltenState(), modelman.getFrozenPDB()); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } //}}} //{{{ get{Display, Rescale}Selection //############################################################################## String getDisplaySelection() { return cmDisplaySel.getText(); } String getRescaleSelection() { return tfRescaleSel.getText(); } //}}} //{{{ actionPerformed, stateChanged //############################################################################## public void actionPerformed(ActionEvent ev) { modelman.requestStateRefresh(); } public void stateChanged(ChangeEvent ev) { modelman.requestStateRefresh(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/PhiPsiTool.java0000644000000000000000000000637311531212732024204 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.SoftLog; import chiropraxis.mc.*; import chiropraxis.rotarama.*; //}}} /** * PhiPsiTool aims to provide a simple mechanism for changing * backbone phi,psi of a PDB and getting back out a modified PDB. * * It is modeled after Ian's BackrubTool class. * *

    Copyright (C) 2009 by Daniel A. Keedy. All rights reserved. *
    Begun on Sun Jan 18 2009 */ public class PhiPsiTool extends ModelingTool { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public PhiPsiTool(ToolBox tb) { super(tb); } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return null; } public String getHelpAnchor() { return "#phipsi-tool"; } public String toString() { return "Tweak phi/psi tool"; } //}}} //{{{ start/stop/reset //################################################################################################## public void start() { super.start(); // force loading of data tables that will be used later try { Ramachandran.getInstance(); } catch(IOException ex) {} // Bring up model manager modelman.onShowDialog(null); // Helpful hint for users: this.services.setID("Ctrl-click, option-click, or middle-click the residue to change phi,psi"); kCanvas.repaint(); // to make it show up! } //}}} //{{{ c_click //################################################################################################## /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { if(p == null) { } else { Model model = modelman.getModel(); ModelState state = modelman.getMoltenState(); Residue ctrRes = this.getResidueNearest(model, state, p.getX(), p.getY(), p.getZ()); try { new PhiPsiWindow(kMain, ctrRes, modelman); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), ctrRes+"doesn't have neighbors in the same chain.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/KingFoo.java0000644000000000000000000006031211531212732023477 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.*; //}}} /** * KingFoo is a cavity-detection utility based on DCR's "foo" in Mage. * It fills empty spaces with overlapping balls and then covers them in a dot surface. * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Wed Dec 8 15:35:19 EST 2004 */ public class KingFoo //extends ... implements ... { //{{{ Constants static final double MAX_ATOM_RADIUS = 2.0; /** * Offsets from (0,0,0) to neighbor spheres in an FCC lattice. * See placeFoosFCC. */ static final Triple[] FCC_OFFSETS = { // In plane, clockwise from top right: new Triple( 0, 1, 0), new Triple( 1, 0, 0), new Triple( 1,-1, 0), new Triple( 0,-1, 0), new Triple(-1, 0, 0), new Triple(-1, 1, 0), // Above the plane, clockwise from top right: new Triple( 0, 0, 1), new Triple( 0,-1, 1), new Triple(-1, 0, 1), // Below the plane, clockwise from top: new Triple( 0, 1,-1), new Triple( 1, 0,-1), new Triple( 0, 0,-1) }; static Transform makeFCCtoCartesian() { // How i affects x, y, z: double ix = 1.0; double iy = 0.0; double iz = 0.0; // How j affects x, y, z: double jx = Math.cos(Math.toRadians(60)); // 60 deg from equilateral triangle double jy = Math.sin(Math.toRadians(60)); // " double jz = 0.0; // How k affects x, y, z: double kx = Math.cos(Math.toRadians(60)); // 0.5 over to reach midpoint of underlying triangle double ky = Math.tan(Math.toRadians(30)) / 2; // Enough up to reach midpoint of underlying triangle double kz = Math.sqrt(1 - kx*kx - ky*ky); // Makes the sphere-sphere distance == 1, given the above return new Transform().likeMatrix(ix, jx, kx, iy, jy, ky, iz, jz, kz); } //}}} //{{{ Variable definitions //############################################################################## Collection atomStates; double fooRadius, touchDist; // Only foos that don't hit protein but are "close" go in fooBin, liveFoos // Foos in contact with solvent may later be removed from liveFoos but not fooBin SpatialBin atomBin, fooBin; Collection liveFoos = new LinkedList(); //}}} //{{{ Constructor(s) //############################################################################## /** * Creates a new object for calculating foos. This is somewhat resouce-hungry. * @param atomStates a Collection of AtomStates defining the environment * @param fooRadius the size of the foo balls to be placed in cavities * @param touchDist the gap size below which a foo and an atom are considered to be touching */ public KingFoo(Collection atomStates, double fooRadius, double touchDist) { super(); this.atomStates = new ArrayList(atomStates); this.fooRadius = fooRadius; this.touchDist = touchDist; // Optimum bin width is ___ times the typical search distance // Empirically, 1x and 2x are about the same (more bins vs. more points) // 1.5x seems to be a bit faster than either one (only ~10%, though) this.atomBin = new SpatialBin(1.5 * (MAX_ATOM_RADIUS+fooRadius+touchDist)); this.fooBin = new SpatialBin(1.5 * (fooRadius)); this.atomBin.addAll(this.atomStates); } //}}} //{{{ placeFoos //############################################################################## /** * Places foo balls randomly in the described bounding box, discarding those * that intersect the protein atoms. This should be called before trying to * generate a dot surface. *

    This function can be called repeatedly to cumulatively place additional foos. * @param numTrials the number of random trials to conduct * @param center the center of the bounding box * @param halfwidths the halfwidth of the bounding box in X, Y, and Z * @return the number of foos successfully placed (CUMULATIVELY) */ public int placeFoos(int numTrials, Triple center, Triple halfwidths) { double widthX = 2 * (halfwidths.getX() - fooRadius); double widthY = 2 * (halfwidths.getX() - fooRadius); double widthZ = 2 * (halfwidths.getX() - fooRadius); ArrayList hits = new ArrayList(); for(int i = 0; i < numTrials; i++) { // Create randomly positioned foo Triple foo = new Triple(center.getX() + widthX*(Math.random()-0.5), center.getY() + widthY*(Math.random()-0.5), center.getZ() + widthZ*(Math.random()-0.5)); // Coarse test to find nearby atoms hits.clear(); atomBin.findSphere(foo, MAX_ATOM_RADIUS+fooRadius+touchDist, hits); // Fine test to distinguish overlaps from contacts boolean isDead = false, isTouching = false; for(int j = 0; j < hits.size(); j++) { AtomState as = (AtomState) hits.get(j); double realDist = foo.sqDistance(as); double deadDist = getVdwRadius(as) + fooRadius; double liveDist = deadDist + touchDist; deadDist = deadDist * deadDist; // less than this is collision liveDist = liveDist * liveDist; // greater than this is not touching if(realDist < deadDist) { isDead = true; break; } else if(realDist <= liveDist) { isTouching = true; } } // Storage of successfully placed foos if(!isDead && isTouching) { fooBin.add(foo); liveFoos.add(foo); } } return liveFoos.size(); } //}}} //{{{ placeFoosWithProbe //############################################################################## /** * Uses Probe to place foo balls on the accessible surface of non-water atoms. * This should be called before trying to generate a dot surface. * @return the number of foos successfully placed */ public int placeFoosWithProbe(File pdbFile) throws IOException { DecimalFormat df = new DecimalFormat("0.0###"); String cmd = "probe -drop -add"+df.format(fooRadius)+" -r0.0 -density2.0 -u -out 'not water' '"+pdbFile+"'"; Process proc = Runtime.getRuntime().exec(Strings.tokenizeCommandLine(cmd)); ProcessTank tank = new ProcessTank(); tank.fillTank(proc); String s; LineNumberReader in = new LineNumberReader(new InputStreamReader(tank.getStdout())); while((s = in.readLine()) != null) { String[] fields = Strings.explode(s, ':'); try { Triple foo = new Triple(Double.parseDouble(fields[14]), Double.parseDouble(fields[15]), Double.parseDouble(fields[16])); fooBin.add(foo); liveFoos.add(foo); } catch(NumberFormatException ex) { ex.printStackTrace(); } } in.close(); return liveFoos.size(); } //}}} //{{{ placeFoosFCC //############################################################################## /** * Place foos on a face-centered cubic (FCC) lattice. * FCC lattices (aka cubic closest packed) are one of two closest packed * arrangements of spheres, the other one being hexagonal closest packed. * Both consist of stacked layers of spheres in a (flat) triangular lattice, * with the layers offset to settle in the divots of the layer below. * HCP uses an ABABAB pattern, while FCC uses the ABCABC pattern. * (A layers lie directly above other A layers, B above B, etc.) * FCC is higher symmetry than HCP, or so I hear. * *

    Just as grid points on a cubic lattice can be indexed with three * integers (i,j,k), so can points on a face-centered cubic lattice. * The transformation between FCC "coordinates" and Cartesian ones is a * simple affine transform (aka matrix multiplication). * The one uses here keeps (0,0,0) and (1,0,0) as themselves, and maintains * the handedness of the coordinate system. * *

    For more information, see http://www.polymorf.net/matter6.htm * and http://mathworld.wolfram.com/CubicClosePacking.html * *

    The Algorithm *
    The idea is to start with a "seed" foo, and then grow out to its * neighbors, and their neighbors, etc etc. * At any step, a foo that contacts protein is marked dead and that trail stops. * This continues for a specified number of steps. * We have to make sure not to re-visit nodes we've already been to, to keep * this from expanding exponentially. * Depth first search (DFS) is easy to implement recursively, but because we can * (and do!) follow very inefficient paths to some nodes, the foo doesn't * expand equally in all directions. * Instead, we must do Breadth First Search (BFS), which is more irritating, * but assures we reach each node for the first time in the minimal number of steps. * *

    This should be called before trying to generate a dot surface. * * @param centerCartn the desired Cartesian coordinates for the origen. * @param numSteps the numbers of steps out toward neighbors to take, * total. Stop when this hits zero. * @param freeSteps for the first N steps, don't stop exploring * just because the foo clashes. This allows us some slop in the placement * of the initial seed foo. Can be zero if you don't want any slop. * @return the number of foos successfully placed */ public int placeFoosFCC(Triple centerCartn, double gridSpacing, int numSteps, int freeSteps) { // The transform to get from (i,j,k) to Cartesian coordinates. Transform fcc2cartn = makeFCCtoCartesian(); fcc2cartn.append(new Transform().likeScale(gridSpacing)); fcc2cartn.append(new Transform().likeTranslation(centerCartn)); // All the ijk's to try as seeds in this round: Set centerFCC = new HashSet(); centerFCC.add(new Triple(0,0,0)); // origen // All the ijk indices that have been tried, for good or ill. // Don't bother trying them again. Doesn't yet include indices in centerFCC. Set triedFCC = new HashSet(); // Temporary storage for doing spatial searches List hits = new ArrayList(); // At the START of this function: // - the foos indexed by ijk's (in centerFCC) have not been tried before // and are not in triedFCC // - they may or may not overlap with atoms in the macromolecule // - they may or may not need to check their neighbors, depending on numSteps while(true) // do numSteps cycles - break is about 2/3 of the way down... { // Iterate over all "seed" points at the surface of the growing blob of foos. {{{ Triple foo = new Triple(); // reallocated only when we retain it for(Iterator iter = centerFCC.iterator(); iter.hasNext(); ) { Triple ijk = (Triple) iter.next(); triedFCC.add(ijk); // we know it wasn't already in there; see below fcc2cartn.transform(ijk, foo); // Coarse test to find nearby atoms hits.clear(); atomBin.findSphere(foo, MAX_ATOM_RADIUS+fooRadius+touchDist, hits); // Fine test to distinguish overlaps from contacts boolean isDead = false, isTouching = false; for(int j = 0; j < hits.size(); j++) { AtomState as = (AtomState) hits.get(j); double realDist = foo.sqDistance(as); double deadDist = getVdwRadius(as) + fooRadius; double liveDist = deadDist + touchDist; deadDist = deadDist * deadDist; // less than this is collision liveDist = liveDist * liveDist; // greater than this is not touching if(realDist < deadDist) { isDead = true; break; } else if(realDist <= liveDist) { isTouching = true; } } // Foo clashes with protein - abort this line of exploration. if(freeSteps <= 0 && isDead) { iter.remove(); continue; } // We only want to try surfacing foos near the protein, but other // non-dead foos still need to recruit their neighbors (see below). if(!isDead && isTouching) { fooBin.add(foo); liveFoos.add(foo); foo = new Triple(); // allocate a new one for future rounds } }//}}} end iteration over foos to try in this round // Do we have more steps? If not, we're done! if(--numSteps < 0) break; --freeSteps; // All non-dead foos now contact their neighbors, if we have more steps. {{{ Set newFCC = new HashSet(); // points to be tried in the NEXT recursion Triple neighbor = new Triple(); // reallocated only when we use it for(Iterator iter = centerFCC.iterator(); iter.hasNext(); ) { Triple ijk = (Triple) iter.next(); for(int i = 0; i < FCC_OFFSETS.length; i++) { neighbor.like(ijk).add(FCC_OFFSETS[i]); if(triedFCC.contains(neighbor)) continue; // we've been down this road before... newFCC.add(neighbor); neighbor = new Triple(); // allocate a new one for future rounds } }//}}} // Rename variables and start from the top! centerFCC = newFCC; } // end of outer while loop over numSteps rounds... return liveFoos.size(); } //}}} //{{{ removeWetFoos //############################################################################## /** * Removes any foos that are solvent accessible to water (hence "wet"). * If a 1.4A radius ball can be placed at any point on the foo surface and * not contact a protein atom, that foo is considered "wet" and will be removed. * Here's how to test that:

                            . <== potential water site 
         R_foo  R_water=1.4  .
        +-----+-------------->
                             .
                            .
    
    *

    That is, create a dot ball centered on the foo with a radius of * (R_foo + R_water). Check each of those for protein atom centers within * (R_water + R_atom_VDW). * @return the number of placed foos REMAINING after removing wet ones. */ public int removeWetFoos() { return removeWetFoos(1.4); } public int removeWetFoos(double waterRadius) { double totalRadius = fooRadius+waterRadius; // Dots projected onto foo surface will be ~ 16/A^2 // b/c surface grows as square of radius. // Should be fine for most applications. double density = 16 * (fooRadius/totalRadius) * (fooRadius/totalRadius); Collection dotSphere = new Builder().makeDotSphere(totalRadius, density); //DEBUG: System.err.println(dotSphere.size()+" wet dots tested per foo"); Triple dot = new Triple(); // avoid creating and discarding Triples ArrayList hits = new ArrayList(); for(Iterator fi = liveFoos.iterator(); fi.hasNext(); ) { Triple foo = (Triple) fi.next(); for(Iterator di = dotSphere.iterator(); di.hasNext(); ) { // Position dot on sphere surface Triple stdDot = (Triple) di.next(); dot.likeSum(foo, stdDot); // We don't care if we intersect other foos or not. // Coarse test to find nearby atoms hits.clear(); atomBin.findSphere(dot, MAX_ATOM_RADIUS+waterRadius, hits); // Fine test to distinguish overlaps from contacts boolean hitAtom = false; for(int j = 0; j < hits.size(); j++) { AtomState as = (AtomState) hits.get(j); String rName = as.getResidue().getName(); if(rName.equals("HOH") || rName.equals("H2O") || rName.equals("WAT")) continue; // don't count hits to water! double realDist = dot.sqDistance(as); double deadDist = getVdwRadius(as) + waterRadius; deadDist = deadDist * deadDist; // less than this is collision if(realDist < deadDist) { hitAtom = true; break; } } // If we didn't hit any atoms, this is a solvent-accessible dot. if(!hitAtom) { fi.remove(); break; // go on to next foo, skip remaining dots } } } return liveFoos.size(); } //}}} //{{{ surfaceFoos //############################################################################## /** * Creates a dot surface over the successfully placed foos. * placeFoos() must be called before calling this function. * @param dotDensity density of dot placement, in dots per square unit area. * @return a Collection of Triples representing the dot surface */ public Collection surfaceFoos(double dotDensity) { Collection dotSphere = new Builder().makeDotSphere(fooRadius, dotDensity); Collection dotSurface = new ArrayList(); Triple dot = new Triple(); // avoid creating and discarding Triples ArrayList hits = new ArrayList(); for(Iterator fi = liveFoos.iterator(); fi.hasNext(); ) { Triple foo = (Triple) fi.next(); for(Iterator di = dotSphere.iterator(); di.hasNext(); ) { // Position dot on sphere surface Triple stdDot = (Triple) di.next(); dot.likeSum(foo, stdDot); // Make sure this foo dot isn't inside some other foo // (Except that this dot could be inside this foo, due to roundoff) // 0.99 is b/c closely packed foos may expose so little surface // that no dots happen to fall on it -- this helps make surface smooth. hits.clear(); fooBin.findSphere(dot, 0.99*fooRadius, hits); if(hits.size() > 1 || (hits.size() == 1 && hits.get(0) == foo)) continue; // Coarse test to find nearby atoms hits.clear(); atomBin.findSphere(dot, MAX_ATOM_RADIUS+touchDist, hits); // Fine test to distinguish overlaps from contacts boolean isDead = false, isTouching = false; for(int j = 0; j < hits.size(); j++) { AtomState as = (AtomState) hits.get(j); double realDist = dot.sqDistance(as); double deadDist = getVdwRadius(as); double liveDist = deadDist + touchDist; deadDist = deadDist * deadDist; // less than this is collision (shouldn't happen) liveDist = liveDist * liveDist; // greater than this is not touching if(realDist < deadDist) { isDead = true; break; } else if(realDist <= liveDist) { isTouching = true; } } // No dot should collide with an atom, except rarely due to roundoff if(isTouching && !isDead) { dotSurface.add(dot); dot = new Triple(); // only replace "used" dots } } } return dotSurface; } //}}} //{{{ getVdwRadius //############################################################################## /** * Returns an approximate van der Waals radius for common atoms in proteins. * Based on Mike Word's Probe code (atomprops.h), but far less complete. */ double getVdwRadius(AtomState as) { final double dummyVal = 0.0; String name = as.getName(); if(Character.isLetter(name.charAt(0))) return dummyVal; else if(name.charAt(1) == 'H') return 1.17; else if(name.charAt(1) == 'C') return 1.75; else if(name.charAt(1) == 'O') return 1.40; else if(name.charAt(1) == 'N') return 1.55; else if(name.charAt(1) == 'P') return 1.80; else if(name.charAt(1) == 'S') return 1.80; else return dummyVal; } //}}} //{{{ getFoos //############################################################################## /** * Returns an unmodifiable Collection of Triples marking the centers of all * successfully placed foos (excluding any removed by removeWetFoos()). */ public Collection getFoos() { return Collections.unmodifiableCollection(liveFoos); } //}}} //{{{ empty_code_segment //############################################################################## //}}} /* //{{{ main (for testing) //############################################################################## static public void main(String[] args) throws IOException, NumberFormatException { Builder b = new Builder(); DecimalFormat df = new DecimalFormat("0.0###"); File inputFile = null; for(int i = 0; i < args.length; i++) { if(inputFile == null) inputFile = new File(args[i]); else System.err.println("Unrecognized argument "+args[i]); } final double fooRadius = 1.0; Model m = new PdbReader().read(inputFile).getFirstModel(); Collection atoms = new LinkedList(m.getState().createCollapsed().getLocalStateMap().values()); // Remove HET atoms: for(Iterator iter = atoms.iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); if(as.isHet()) iter.remove(); } long time = System.currentTimeMillis(); KingFoo kf = new KingFoo(atoms, fooRadius, fooRadius/1.0); //DEBUG: kf.placeFoosFCC(new Triple(), 2.0, 2); kf.placeFoosFCC(new Triple(81.574, 28.956, 85.759), 0.4, 40); time = System.currentTimeMillis() - time; System.err.println(kf.getFoos().size()+" foos were placed successfully in "+time+" ms"); time = System.currentTimeMillis(); kf.removeWetFoos(3.0); time = System.currentTimeMillis() - time; System.err.println(kf.getFoos().size()+" dry foos remaining after "+time+" ms"); System.out.println("@kinemage 1"); System.out.println("@group {foo cavities}"); System.out.println("@subgroup {foo cavities}"); System.out.println("@balllist {foo balls} radius= "+df.format(fooRadius)+" color= pink off nohighlight alpha= 1.0"); for(Iterator iter = kf.getFoos().iterator(); iter.hasNext(); ) System.out.println("{x} "+((Triple)iter.next()).format(df)); time = System.currentTimeMillis(); Collection dotSurface = kf.surfaceFoos(16); time = System.currentTimeMillis() - time; System.err.println(dotSurface.size()+" dots placed in "+time+" ms"); System.out.println("@dotlist {foo dots} color= gray"); for(Iterator iter = dotSurface.iterator(); iter.hasNext(); ) System.out.println("{x} "+((Triple)iter.next()).format(df)); } //}}} */ }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/BackrubTool.java0000644000000000000000000000646611531212732024364 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.SoftLog; import chiropraxis.mc.*; import chiropraxis.rotarama.*; //}}} /** * BackrubTool is an implementation of the BACKRUB algorithm * for small changes to the protein mainchain. * As such, it is a specialization of the HingeTool. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Mon Jun 2 15:59:18 EDT 2003 */ public class BackrubTool extends ModelingTool { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public BackrubTool(ToolBox tb) { super(tb); } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return null; } public String getHelpAnchor() { return "#backrub-tool"; } public String toString() { return "BACKRUB tool"; } //}}} //{{{ start/stop/reset //################################################################################################## public void start() { super.start(); // force loading of data tables that will be used later try { Ramachandran.getInstance(); } catch(IOException ex) {} try { TauByPhiPsi.getInstance(); } catch(IOException ex) {} // Bring up model manager modelman.onShowDialog(null); // Helpful hint for users: this.services.setID("Ctrl-click, option-click, or middle-click the residue to BACKRUB"); kCanvas.repaint(); // to make it show up! } //}}} //{{{ c_click //################################################################################################## /** Override this function for middle-button/control clicks */ public void c_click(int x, int y, KPoint p, MouseEvent ev) { if(p == null) { } else { Model model = modelman.getModel(); ModelState state = modelman.getMoltenState(); Residue ctrRes = this.getResidueNearest(model, state, p.getX(), p.getY(), p.getZ()); try { new BackrubWindow(kMain, ctrRes, modelman); } catch(IllegalArgumentException ex) { JOptionPane.showMessageDialog(kMain.getTopWindow(), ctrRes+"doesn't have neighbors in the same chain.", "Sorry!", JOptionPane.ERROR_MESSAGE); } } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/BgKinRunner.java0000644000000000000000000004523511531212732024336 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import king.io.*; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.text.MessageFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.*; import driftwood.util.ReflectiveRunnable; //}}} /** * BgKinRunner runs some command that produces a kinemage file * in the background and updates the current kinemage with it when it finishes. * It's designed to, e.g. run Probe and find dots between * some modified portion of the model and the original PDB. * *

    Each instance of this class creates a background thread. * Therefore, a single instance should be re-used as much as possible in order to conserve resources. * It is also a good idea to call {@link #terminate()} before discarding the object, * so that the useless thread is cleaned up rather than continuing to consume resources. * On the other hand, it may be a good idea to use one instance per * target program so that fast programs aren't held up by slow ones. * * The output of the target command is expected to be a legal kinemage * containing exactly one group. The command will receive a fragment * of a PDB file consisting of only the "molten" atoms on standard input, * and can be given the following placeholders on the command line too:

    • {pdbfile} the full path and file name for the "base" PDB file
    • {molten} a comma-separated list of residue numbers for molten residues
    • {viewcenter} the center of view for the current kinemage
    • {bbcenter} the center of the bounding box for all molten atoms
    • {bbradius} distance from the {bbcenter} that captures all molten atoms plus a 5A buffer
    * *

    Be careful -- stray instances of this class will prevent * garbage collection of their target kinemages! * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Mon Jun 23 12:16:40 EDT 2003 */ public class BgKinRunner implements Runnable { //{{{ Constants DecimalFormat df = new DecimalFormat("0.0##"); //}}} //{{{ Variable definitions //################################################################################################## KingMain kMain; /** The target kinemage that we want to put the dots into. */ Kinemage kin; /** The group that holds the dots from the most recent time we ran the command. */ volatile Kinemage newKin = null; /** The group that holds the dots from the previous time we ran the command. */ KGroup oldGroup = null; /** The drop-box for residues to be plotted. */ volatile Collection dropboxResidues = null; /** The drop-box for the state to be plotted. */ volatile ModelState dropboxState = null; /** The reference PDB file that we want to contrast with. */ volatile File dropboxPdbFile = null; /** The command string with placeholders ({pdbfile}, {molten}, etc.) intact. */ volatile String cmdTemplate = null; /** True iff the drop-box has been filled and not emptied. */ volatile boolean dropboxFull = false; /** If true, the background thread will terminate and this object will become useless. */ volatile boolean backgroundTerminate = false; /** Controls how much error logging goes on. Set at create time from KingPrefs. */ final boolean dumpCmdLine, dumpStdErr, dumpStdOut; /** Controls how long background jobs can live, in msec. */ final int helperTimeout; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public BgKinRunner(KingMain kmain, Kinemage kin, String cmd) { if(kmain == null || kin == null || cmd == null) throw new NullPointerException("Null parameters are not allowed."); this.kMain = kmain; this.kin = kin; this.cmdTemplate = cmd; dumpCmdLine = kMain.getPrefs().getBoolean("showHelperCommand"); dumpStdErr = kMain.getPrefs().getBoolean("showHelperErrors"); dumpStdOut = kMain.getPrefs().getBoolean("showHelperOutput"); helperTimeout = kMain.getPrefs().getInt("helperTimeout") * 1000; Thread thread = new Thread(this); thread.setDaemon(true); thread.start(); } //}}} //{{{ run //################################################################################################## public void run() { while(!backgroundTerminate) { //long outsideLoop = System.currentTimeMillis(); while(dropboxFull) { //long insideLoop = System.currentTimeMillis(); Collection residues; ModelState state; File pdbfile; String cmdtemp; synchronized(this) { residues = dropboxResidues; state = dropboxState; pdbfile = dropboxPdbFile; cmdtemp = cmdTemplate; dropboxFull = false; // it may get refilled while the command is running } // runCommand() shouldn't hold a lock b/c users // may want to submit an update request. try { runCommand(residues, state, pdbfile, cmdtemp); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } //System.err.println("This cycle: "+(System.currentTimeMillis() - insideLoop)+" ms"); }//while dropboxFull // update the kinemage from the GUI thread // this takes 1 - 200 ms on the Mac (yes, really -- but why?) //long endOfLoop = System.currentTimeMillis(); SwingUtilities.invokeLater(new ReflectiveRunnable(this, "updateKinemage")); //long afterInvoke = System.currentTimeMillis(); //System.err.println("invokeLater(): "+(afterInvoke-endOfLoop)+" ms"); // we have to own the lock in order to wait() synchronized(this) { //long afterSync = System.currentTimeMillis(); //System.err.println("synchronize: "+(afterSync-afterInvoke)+" ms"); //System.err.println("run() loop: "+(afterSync-outsideLoop)+" ms"); //System.err.println("----------------------------------------"); // we will be notify()'d when state changes try { this.wait(); } catch(InterruptedException ex) {} } } } //}}} //{{{ runCommand //################################################################################################## /** This is where the background thread does its work. */ void runCommand(Collection residues, ModelState state, File pdbfile, String cmdTplt) throws IOException { long time; // Make the command line in its final form. // This is very fast (1-2 ms). // Build replacement strings for placeholders StringBuffer resCommas = new StringBuffer(); for(Iterator iter = residues.iterator(); iter.hasNext(); ) { Residue res = (Residue)iter.next(); if(resCommas.length() > 0) resCommas.append(","); resCommas.append(res.getSequenceNumber()); } // can't leave it empty, and there is no "none" keyword if(resCommas.length() == 0) resCommas.append("not all"); // == none (?) float[] ctr = kMain.getView().getCenter(); String viewCtr = ctr[0]+", "+ctr[1]+", "+ctr[2]; Triple[] bbox = getBoundingBox(residues, state); // Bounding box may be NaN if residues is empty if(bbox[0].isNaN()) bbox[0].setXYZ(0,0,0); if(bbox[1].isNaN()) bbox[1].setXYZ(0,0,0); double radius = bbox[1].mag() + 5.0; // Splice in parameters and parse out command line String[] cmdKeys = { "pdbfile", "molten", "viewcenter", "bbcenter", "bbradius" }; String[] cmdParams = { pdbfile.getCanonicalPath(), resCommas.toString(), viewCtr, bbox[0].format(df, ", "), df.format(radius) }; // MessageFormat doesn't work well here so we roll our own: String cmdLine = Strings.expandVariables(cmdTplt, cmdKeys, cmdParams); if(dumpCmdLine) SoftLog.err.println(cmdLine); // print cmd line for debugging String[] cmdTokens = Strings.tokenizeCommandLine(cmdLine); //for(int i = 0; i < cmdTokens.length; i++) SoftLog.err.println(" #"+cmdTokens[i]+"#"); //System.err.println("time "+cmdLine+" < dummy.pdb > dummy.out"); // Create the PDB file fragment to be feed in on stdin. // This also very fast (~10 ms). // Build up the PDB fragment in a memory buffer // This decreases latency and may avoid deadlock... StreamTank pdbFrag = new StreamTank(); PdbWriter writer = new PdbWriter(pdbFrag); writer.writeResidues(residues, state); // Don't run the cmd if we're not goint to use the results: if(dropboxFull) return; //time = System.currentTimeMillis(); // Launch command and feed it the PDB file fragment // This is usually the lion's share of run time (>50%) Process proc = Runtime.getRuntime().exec(cmdTokens); //System.err.println("Starting proc: "+(System.currentTimeMillis()-time)+" ms"); //time = System.currentTimeMillis(); // Send PDB fragment to stdin (buffering doesn't help speed) //OutputStream stdin = new BufferedOutputStream(proc.getOutputStream(), 20000); //pdbFrag.writeTo(stdin); pdbFrag.writeTo(proc.getOutputStream()); // send EOF to let command know we're done //stdin.close(); proc.getOutputStream().close(); //System.err.println("Feeding stdout: "+(System.currentTimeMillis()-time)+" ms with "+pdbFrag.size()+" bytes"); //time = System.currentTimeMillis(); // Wait for command to finish and collect its output on stdout. // Buffer output of cmd to decrease latency and chance of deadlock? ProcessTank tank = new ProcessTank(); if(!tank.fillTank(proc, helperTimeout)) SoftLog.err.println("*** Forced termination of background process '"+cmdTokens[0]+"'!"); //System.err.println("Harvesting stdin: "+(System.currentTimeMillis()-time)+" ms"); // Don't bother with parsing if we're not goint to use the results: if(dropboxFull) return; //time = System.currentTimeMillis(); // Try to interpret what it sends back // This is also fairly slow (~100-200 ms) KinfileParser parser = new KinfileParser(); parser.parse(new LineNumberReader(new InputStreamReader(tank.getStdout()))); Collection kins = parser.getKinemages(); if(kins.size() > 0) { newKin = (Kinemage)kins.iterator().next(); if(dumpStdErr) streamcopy(tank.getStderr(), SoftLog.err); } else { newKin = null; SoftLog.err.println("*** No kinemage produced by background process '"+cmdTokens[0]+"'"); SoftLog.err.println(cmdLine); SoftLog.err.println(); streamcopy(tank.getStderr(), SoftLog.err); if(dumpStdOut) { SoftLog.err.println(); streamcopy(tank.getStdout(), SoftLog.err); } } //System.err.println("Parsing kin: "+(System.currentTimeMillis()-time)+" ms"); } // Copies src to dst until we hit EOF private static final void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ getBoundingBox //################################################################################################## /** (center, halfwidths) of bounding box for all mobile atoms */ Triple[] getBoundingBox(Collection residues, ModelState state) { ArrayList atomStates = new ArrayList(20*residues.size()); int cnt = 0; for(Iterator ri = residues.iterator(); ri.hasNext(); ) { Residue r = (Residue) ri.next(); for(Iterator ai = r.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); try { atomStates.add( state.get(a) ); cnt++; } catch(AtomException ex) {} } } Builder builder = new Builder(); Triple[] bbox = builder.makeBoundingBox(atomStates); bbox[0].add(bbox[1]).div(2); bbox[1].sub(bbox[0]); return bbox; } //}}} //{{{ updateKinemage //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** Gets called when the kinemage needs to be updated with Probe dots */ public void updateKinemage() { if(newKin != null) { Iterator iter = newKin.iterator(); if(iter.hasNext()) { KGroup newGroup = (KGroup)iter.next(); //newGroup.setDominant(true); // we don't need to see 1-->2, 2-->1 newGroup.setParent(kin); // have to make sure we know who our parent is // append kinemage creates all the masters we need if(oldGroup == null) kin.appendKinemage(newKin); else kin.replace(oldGroup, newGroup); oldGroup = newGroup; newKin = null; } // Probe may produce a kinemage with an empty @group, // but this gets pruned when read in by KiNG, // so not even an empty group is present. else if(oldGroup != null) { oldGroup.clear(); } } } //}}} //{{{ requestRun, terminate, getKinemage //################################################################################################## /** * Fills the dropbox with a request for the background thread. * @throws IllegalThreadStateException if terminate() has ever been called on this object. */ public synchronized void requestRun(Collection residues, ModelState state, File pdbfile) { if(backgroundTerminate) throw new IllegalThreadStateException("terminate() was called; worker thread is dead"); this.dropboxResidues = residues; this.dropboxState = state; this.dropboxPdbFile = pdbfile; this.dropboxFull = true; this.notifyAll(); } /** Kills off the background thread. Call after you're done with this object. */ public synchronized void terminate() { backgroundTerminate = true; this.notifyAll(); } /** Returns the kinemage this plotter was created with (not null) */ public Kinemage getKinemage() { return kin; } //}}} //{{{ findProgram //################################################################################################## /** * Attempts to find the given program name in the same directory as the king.jar file. * In this case, the entire path will be quoted to protect any whitespace inside. * If not found, it assumes the program is in the PATH. * Automatically appends ".exe" if we appear to be running under Windows. */ public String findProgram(String basename) { String os = System.getProperty("os.name").toLowerCase(); if(os.indexOf("windows") != -1) basename = basename+".exe"; // We search the directory holding the king.jar file // for 'probe' or 'probe.exe'; if not found, we just use 'probe'. File progFile = new File(kMain.getPrefs().jarFileDirectory, basename); if(progFile.exists()) { // Full path might have spaces in it (Win, Mac) try { basename = "'"+progFile.getCanonicalPath()+"'"; } catch(Throwable t) { t.printStackTrace(SoftLog.err); } } return basename; } //}}} //{{{ get/set/editCommand //################################################################################################## /** Returns the command line that was supplied at create time or since modified. */ public String getCommand() { return cmdTemplate; } /** * Gives a new value for the command to be launched. * Does not automatically re-run the background program. */ public synchronized void setCommand(String cmd) { cmdTemplate = cmd; } /** * Allows the user to edit the command via a Swing dialog box. * @return true if the user changed the command line */ public boolean editCommand(Component dlgParent) { String cmd = this.getCommand(); Object[] msg = { "{pdbfile} is the full path to the PDB file", "{molten} is a list of molten residues: 1,2,3", "{viewcenter} is the current center of view: x, y, z", "{bbcenter} is the center of the bounding box for molten atoms: x, y, z", "{bbradius} is the 'radius' of the bounding box for molten atoms: x, y, z", }; Object input = JOptionPane.showInputDialog(dlgParent, msg, "Edit command line", JOptionPane.PLAIN_MESSAGE, null, null, cmd); if(input != null && !cmd.equals(input.toString())) { this.setCommand(input.toString()); return true; } else return false; } //}}} //{{{ setLastGroupOn //################################################################################################## /** Convenience for calling setOn() on the last KGroup generated by this command runner. */ public void setLastGroupOn(boolean b) { if(oldGroup != null) oldGroup.setOn(b); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/KingFooCLI.java0000644000000000000000000002072711531212732024035 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.*; //}}} /** * KingFooCLI is the command-line interface to KingFoo. * *

    Copyright (C) 2005 by Ian W. Davis. All rights reserved. *
    Begun on Mon Apr 25 09:34:51 EDT 2005 */ public class KingFooCLI //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## InputStream pdbInput = null; boolean removeHets = true; Triple fooOrigen = null; double fooRadius = 1.0; double gridSpacing = 0.4; int steps = 10; int freeSteps = 3; boolean removeWetFoos = true; double wetFooRadius = 3.0; boolean makeDotSurface = true; double dotDensity = 16.0; //}}} //{{{ Constructor(s) //############################################################################## public KingFooCLI() { super(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { Model m = new PdbReader().read(pdbInput).getFirstModel(); Collection atoms = new LinkedList(m.getState().createCollapsed().getLocalStateMap().values()); if(removeHets) for(Iterator iter = atoms.iterator(); iter.hasNext(); ) { AtomState as = (AtomState) iter.next(); if(as.isHet()) iter.remove(); } long time = System.currentTimeMillis(); KingFoo kf = new KingFoo(atoms, fooRadius, fooRadius/1.0); kf.placeFoosFCC(fooOrigen, gridSpacing, steps, freeSteps); time = System.currentTimeMillis() - time; System.err.println(kf.getFoos().size()+" foos were placed successfully in "+time+" ms"); if(removeWetFoos) { time = System.currentTimeMillis(); kf.removeWetFoos(wetFooRadius); time = System.currentTimeMillis() - time; System.err.println(kf.getFoos().size()+" dry foos remaining after "+time+" ms"); } DecimalFormat df = new DecimalFormat("0.0###"); //System.out.println("@kinemage 1"); System.out.println("@group {foo cavities}"); System.out.println("@subgroup {foo cavities}"); System.out.println("@balllist {foo balls} radius= "+df.format(fooRadius)+" color= pink off nohighlight alpha= 1.0"); for(Iterator iter = kf.getFoos().iterator(); iter.hasNext(); ) System.out.println("{x} "+((Triple)iter.next()).format(df)); if(makeDotSurface) { time = System.currentTimeMillis(); Collection dotSurface = kf.surfaceFoos(dotDensity); time = System.currentTimeMillis() - time; System.err.println(dotSurface.size()+" dots placed in "+time+" ms"); System.out.println("@dotlist {foo dots} color= gray width= 1"); for(Iterator iter = dotSurface.iterator(); iter.hasNext(); ) System.out.println("{x} "+((Triple)iter.next()).format(df)); } } public static void main(String[] args) { KingFooCLI mainprog = new KingFooCLI(); try { mainprog.parseArguments(args); if(mainprog.fooOrigen == null) throw new IllegalArgumentException("Must specify -origen for foo."); if(mainprog.pdbInput == null) mainprog.pdbInput = System.in; mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("KingFooCLI.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'KingFooCLI.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.kingtools.KingFooCLI"); System.err.println("Copyright (C) 2005 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { if(pdbInput == null) { try { pdbInput = new BufferedInputStream(new FileInputStream(arg)); } catch(IOException ex) { throw new IllegalArgumentException("IOEx: "+ex.getMessage()); } } else throw new IllegalArgumentException("Extra argument: "+arg); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-origen")) { String[] sXYZ = param.split("\\s*[, ]\\s*"); try { fooOrigen = new Triple(Double.parseDouble(sXYZ[0]), Double.parseDouble(sXYZ[1]), Double.parseDouble(sXYZ[2])); } catch(NumberFormatException ex) { throw new IllegalArgumentException("Correct usage: -ORIGEN=#.#,#.#,#.#"); } } else if(flag.equals("-steps")) { try { steps = Integer.parseInt(param); } catch(NumberFormatException ex) { throw new IllegalArgumentException("Correct usage: -STEPS=#"); } } else if(flag.equals("-dummy_option")) { // handle option here } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/SidechainSswing.java0000644000000000000000000003024111531212732025223 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import chiropraxis.sc.*; import chiropraxis.rotarama.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.util.SoftLog; //}}} /** * SidechainSswing is a GUI for repositioning a sidechain * based on its dihedral angles (chi1, chi2, etc). * *

    Copyright (C) 2004 by Shuren Wang. All rights reserved. *
    Begun on Thu May 8 15:36:11 EDT 2004 */ public class SidechainSswing implements Remodeler, ChangeListener, ListSelectionListener, WindowListener { //{{{ Constants static final DecimalFormat df1 = new DecimalFormat("0.0"); //}}} //{{{ Variable definitions //################################################################################################## Residue targetRes; ModelManager2 modelman; SidechainAngles2 scAngles; Rotamer rotamer; SidechainIdealizer scIdealizer = null; JDialog dialog; JCheckBox cbIdealize; JList rotamerList; AngleDial[] dials; JLabel rotaQuality; /** Marker for logical multi-dial update */ boolean isUpdating = false; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @throws IllegalArgumentException if the residue code isn't recognized * @throws IOException if the needed resource(s) can't be loaded from the JAR file * @throws NoSuchElementException if the resource is missing a required entry */ public SidechainSswing(Frame frame, Residue target, ModelManager2 mm) throws IOException { this.targetRes = target; this.modelman = mm; this.scAngles = new SidechainAngles2(); this.rotamer = Rotamer.getInstance(); try { scIdealizer = new SidechainIdealizer(); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } buildGUI(frame); modelman.registerTool(this, Collections.singleton(targetRes)); } //}}} //{{{ buildGUI, getDialPanel //################################################################################################## private void buildGUI(Frame frame) { // Dials TablePane dialPane = new TablePane(); String[] angleNames = scAngles.nameAllAngles(targetRes); if(angleNames == null) throw new IllegalArgumentException("Bad residue code '"+targetRes.getName()+"' isn't recognized"); double[] angleVals = scAngles.measureAllAngles(targetRes, modelman.getMoltenState()); dials = new AngleDial[angleNames.length]; for(int i = 0; i < angleNames.length; i++) { dialPane.add(new JLabel(angleNames[i])); dials[i] = new AngleDial(); dials[i].setOrigDegrees(angleVals[i]); dials[i].setDegrees(angleVals[i]); dials[i].addChangeListener(this); dialPane.add(dials[i]); dialPane.newRow(); } // Top-level pane JPanel twistPane = new JPanel(new BorderLayout()); twistPane.add(dialPane, BorderLayout.WEST);// // Rotamer list RotamerDef[] rotamers = scAngles.getAllRotamers(targetRes); if(rotamers == null) throw new IllegalArgumentException("Bad residue code '"+targetRes.getName()+"' isn't recognized"); RotamerDef origRotamer = new RotamerDef(); origRotamer.rotamerName = "original"; origRotamer.chiAngles = scAngles.measureChiAngles(targetRes, modelman.getMoltenState()); RotamerDef[] rotamers2 = new RotamerDef[ rotamers.length+1 ]; System.arraycopy(rotamers, 0, rotamers2, 1, rotamers.length); rotamers2[0] = origRotamer; rotamerList = new JList(rotamers2); rotamerList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); rotamerList.addListSelectionListener(this); // Rotamer quality readout rotaQuality = new JLabel(); rotaQuality.setToolTipText("Quality assessment for the current side-chain conformation"); setFeedback(); TablePane rotamerPane = new TablePane(); rotamerPane.hfill(true).vfill(true).weights(1,1).addCell(new JScrollPane(rotamerList)); rotamerPane.newRow().weights(1,0).add(rotaQuality); twistPane.add(rotamerPane, BorderLayout.CENTER);// JLabel label=new JLabel("Run sswing remotely..."); label.setFont(new Font("Times-Roman", Font.ITALIC, 14)); twistPane.add(label, BorderLayout.CENTER); // Other controls cbIdealize = new JCheckBox(new ReflectiveAction("Idealize sidechain", null, this, "onIdealizeOnOff")); if(scIdealizer != null) cbIdealize.setSelected(true); else cbIdealize.setEnabled(false); twistPane.add(cbIdealize, BorderLayout.NORTH);// JButton release = new JButton(new ReflectiveAction("Release", null, this, "onReleaseResidue")); twistPane.add(release, BorderLayout.SOUTH); // Assemble the dialog dialog = new JDialog(frame, targetRes.toString(), false); dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dialog.addWindowListener(this); dialog.setContentPane(twistPane); dialog.pack(); dialog.setVisible(true); } //}}} //{{{ onReleaseResidue, onIdealizeOnOff //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** * Checks residues back into the ModelManager. * @param ev is ignored, may be null. */ public void onReleaseResidue(ActionEvent ev) { int reply = JOptionPane.showConfirmDialog(dialog,// "Do you want to keep the changes\nyou've made to this residue?",// "Keep changes?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE);// if(reply == JOptionPane.CANCEL_OPTION) return;// if(reply == JOptionPane.YES_OPTION)// modelman.requestStateChange(this); // // will call this.updateModelState() else // // == JOptionPane.NO_OPTION modelman.unregisterTool(this); dialog.dispose(); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onIdealizeOnOff(ActionEvent ev) { stateChanged(null); } //}}} //{{{ isUpdating //################################################################################################## /** * Implements a means of updating several dials at once * while maintaining getValueIsAdjusting() == true. * This is useful to us in e.g. setAllAngles(). */ public boolean isUpdating() { return isUpdating; } public void isUpdating(boolean b) { isUpdating = b; } //}}} //{{{ stateChanged, valueChanged, getValueIsAdjusting //################################################################################################## /** Gets called when the dials move. */ public void stateChanged(ChangeEvent ev) { setFeedback(); modelman.requestStateRefresh(); } /* Gets called when a new rotamer is picked from the list */ public void valueChanged(ListSelectionEvent ev) { RotamerDef def = (RotamerDef)rotamerList.getSelectedValue(); if(def == null) SoftLog.err.println("Couldn't retrieve angles for '"+targetRes.getName()+"."+rotamerList.getSelectedValue()+"'"); else initSomeAngles(def.chiAngles); } /** Returns true if any of the dials is currently being updated */ public boolean getValueIsAdjusting() { if(isUpdating()) return true; for(int i = 0; i < dials.length; i++) { if(dials[i].getValueIsAdjusting()) return true; } return false; } //}}} //{{{ get/set/initAllAngles, initSomeAngles //################################################################################################## /** (measured in degrees) */ public double[] getAllAngles() { double[] angles = new double[dials.length]; for(int i = 0; i < dials.length; i++) angles[i] = dials[i].getDegrees(); return angles; } /** (measured in degrees) */ public void setAllAngles(double[] angles) { if(angles.length < dials.length) throw new IllegalArgumentException("Not enough angles provided!"); isUpdating(true); for(int i = 0; i < dials.length; i++) dials[i].setDegrees(angles[i]); isUpdating(false); stateChanged(new ChangeEvent(this)); } /** (measured in degrees) */ public void initAllAngles(double[] angles) { if(angles.length < dials.length) throw new IllegalArgumentException("Not enough angles provided!"); initSomeAngles(angles); } /** Doesn't check to make sure there are enough angles to set all dials*/ public void initSomeAngles(double[] angles) { int len = Math.min(angles.length, dials.length); isUpdating(true); for(int i = 0; i < len; i++) { dials[i].setOrigDegrees(angles[i]); dials[i].setDegrees(angles[i]); } isUpdating(false); stateChanged(new ChangeEvent(this)); } //}}} //{{{ setFeedback //################################################################################################## /** * Sets the string that will be displayed as feedback * on the quality of the currently selected rotamer. */ public void setFeedback() { //rotaQuality.setText("-???-"); try { double score = rotamer.evaluate(targetRes, modelman.getMoltenState()) * 100.0; String eval; if(score > 20) eval = "Excellent"; else if(score > 10) eval = "Good"; else if(score > 2) eval = "Fair"; else if(score > 1) eval = "Poor"; else eval = "OUTLIER"; rotaQuality.setText(eval+" ("+df1.format(score)+"%)"); } catch(IllegalArgumentException ex) { rotaQuality.setText("-"); } } //}}} //{{{ updateModelState //################################################################################################## /** * Allows this tool to modify the geometry of the current model. * This function is called by the model manager at two times: *

      *
    1. When this tool is registered and someone requests * that the molten model be updated
    2. *
    3. When this tool requests that the model be permanently changed.
    4. *
    * Tools are absolutely not permitted to modify s: all changes * should be done in a new ModelState which should be returned * from this function. */ public ModelState updateModelState(ModelState s) { ModelState ret; if(scIdealizer != null && cbIdealize.isSelected()) ret = scIdealizer.idealizeSidechain(targetRes, s); else ret = s; ret = scAngles.setAllAngles(targetRes, ret, this.getAllAngles()); return ret; } //}}} //{{{ Dialog window listeners //################################################################################################## public void windowActivated(WindowEvent ev) {} public void windowClosed(WindowEvent ev) {} public void windowClosing(WindowEvent ev) { onReleaseResidue(null); } public void windowDeactivated(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowOpened(WindowEvent ev) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/kingtools/PhiPsiWindow.java0000644000000000000000000003241111531212732024526 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.kingtools; import king.*; import king.core.*; import king.points.BallPoint; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.SoftLog; import chiropraxis.mc.*; import chiropraxis.rotarama.*; //}}} /** * PhiPsiWindow aims to provide a simple mechanism for changing * backbone phi,psi of a PDB and getting back out a modified PDB. * * It is modeled after Ian's BackrubWindow class. * *

    Copyright (C) 2009 by Daniel A. Keedy. All rights reserved. *
    Begun on Sun Jan 18 2009 */ public class PhiPsiWindow implements Remodeler, ChangeListener, WindowListener { //{{{ Constants static final DecimalFormat df2 = new DecimalFormat("0.0"); static final DecimalFormat df1 = new DecimalFormat("+0.0;-0.0"); static final DecimalFormat df0 = new DecimalFormat("0"); static final Color normalColor = new Color(0f, 0f, 0f); static final Color alertColor = new Color(0.6f, 0f, 0f); //}}} //{{{ Variable definitions //################################################################################################## // Things that used to be supplied by BasicTool as a superclass: KingMain kMain; KinCanvas kCanvas; ModelManager2 modelman; JDialog dialog; Residue ctrRes; Ramachandran rama = null; double origPhiVal = Double.NaN, origPsiVal = Double.NaN; // GUI TablePane2 toolpane; AngleDial phiDial, psiDial; JLabel phiLabel, psiLabel, ramaLabel; JCheckBox rotRes, rotUpstream, idealizeSC; JTextField rotResNum; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @throws IllegalArgumentException if the residue code isn't recognized */ public PhiPsiWindow(KingMain kMain, Residue target, ModelManager2 mm) { this.kMain = kMain; this.kCanvas = kMain.getCanvas(); this.modelman = mm; this.ctrRes = target; buildGUI(kMain.getTopWindow()); try { initDials(); } catch (ResidueException re) { re.printStackTrace(); } catch (AtomException ae) { ae.printStackTrace(); } // force loading of data table that will be used later try { rama = Ramachandran.getInstance(); } catch(IOException ex) {} // May also throw IAEx: Collection residues = PhiPsiRotation.makeMobileGroup(modelman.getModel(), ctrRes, rotUpstream.isSelected(), parseNumRes()); modelman.registerTool(this, residues); stateChanged(null); } //}}} //{{{ buildGUI //################################################################################################## private void buildGUI(Frame frame) { phiDial = new AngleDial(); phiDial.addChangeListener(this); psiDial = new AngleDial(); psiDial.addChangeListener(this); phiLabel = new JLabel("phi"); psiLabel = new JLabel("psi"); ramaLabel = new JLabel(); rotUpstream = new JCheckBox(new ReflectiveAction("Rotate upstream", null, this, "onToggleUpstream")); rotRes = new JCheckBox(new ReflectiveAction("Number of residues:", null, this, "onToggleRotRes")); rotRes.setSelected(true); rotResNum = new JTextField("3"); rotResNum.setColumns(3); rotResNum.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { updateProtein(); // THIS CODE IS EXECUTED WHEN RETURN IS TYPED } } ); idealizeSC = new JCheckBox(new ReflectiveAction("Idealize sidechain", null, this, "onToggleIdealSC")); idealizeSC.setSelected(true); // true by default: mandate from JSR JButton btnRelease = new JButton(new ReflectiveAction("Finished", null, this, "onReleaseResidues")); JButton btnRotamer = new JButton(new ReflectiveAction("Rotate sidechain", null, this, "onRotateSidechain")); toolpane = new TablePane2(); toolpane.center(); toolpane.addCell(phiDial); toolpane.addCell(psiDial); toolpane.newRow(); toolpane.add(phiLabel); toolpane.add(psiLabel); toolpane.newRow(); toolpane.addCell(TablePane2.strut(0,10)); toolpane.newRow(); toolpane.add(ramaLabel); toolpane.newRow(); toolpane.addCell(TablePane2.strut(0,10)); toolpane.newRow(); toolpane.startSubtable(4,1); toolpane.addCell(rotUpstream); toolpane.newRow(); toolpane.addCell(rotRes); toolpane.addCell(rotResNum); toolpane.endSubtable(); toolpane.newRow(); toolpane.startSubtable(4,1); toolpane.addCell(idealizeSC); toolpane.endSubtable(); toolpane.newRow(); toolpane.startSubtable(4,1); toolpane.addCell(btnRelease); toolpane.addCell(btnRotamer); toolpane.endSubtable(); // Assemble the dialog dialog = new JDialog(frame, "Tweak phi/psi: "+ctrRes.toString(), false); dialog.setDefaultCloseOperation(JDialog.DO_NOTHING_ON_CLOSE); dialog.addWindowListener(this); dialog.setContentPane(toolpane); //dialog.setJMenuBar(menubar); dialog.pack(); dialog.setVisible(true); } //}}} //{{{ initDials //################################################################################################## /** * Set dials to starting phi,psi */ public void initDials() throws ResidueException, AtomException { if (Double.isNaN(origPhiVal)) origPhiVal = AminoAcid.getPhi(modelman.getModel(), ctrRes, modelman.getMoltenState()); if (Double.isNaN(origPsiVal)) origPsiVal = AminoAcid.getPsi(modelman.getModel(), ctrRes, modelman.getMoltenState()); phiDial.setOrigDegrees(origPhiVal); psiDial.setOrigDegrees(origPsiVal); phiDial.setDegrees(origPhiVal); psiDial.setDegrees(origPsiVal); } //}}} //{{{ stateChanged, updateModelState //################################################################################################## // ev may be null! public void stateChanged(ChangeEvent ev) { modelman.requestStateRefresh(); // will call this.updateModelState() updateLabels(); kCanvas.repaint(); } public ModelState updateModelState(ModelState before) { try { boolean idealize = idealizeSC.isSelected(); boolean upstream = rotUpstream.isSelected(); int numRes = Integer.MAX_VALUE; if(rotRes.isSelected()) numRes = Integer.parseInt(rotResNum.getText()); if(numRes == 0) return before; // don't bother trying to rotate 0 residues Collection residues = PhiPsiRotation.makeMobileGroup( modelman.getModel(), ctrRes, upstream, numRes); /*for(Iterator i = residues.iterator(); i.hasNext(); ) System.err.println( rotResNum.getText()+" res "+(upstream ? "upstream" : "downstream") +" from "+ctrRes+" includes "+(Residue)i.next());*/ ModelState after = PhiPsiRotation.makeConformation( residues, before, origPhiVal - phiDial.getDegrees(), true, upstream, numRes, idealize); after = PhiPsiRotation.makeConformation( residues, after, origPsiVal - psiDial.getDegrees(), false, upstream, numRes, idealize); return after; } catch(AtomException ex) { ex.printStackTrace(); return before; } } //}}} //{{{ parseNumRes //################################################################################################## public int parseNumRes() { try { int numRes = Integer.MAX_VALUE; if(rotRes.isSelected()) numRes = Integer.parseInt(rotResNum.getText()); return numRes; } catch(NumberFormatException ex) { String error = "*** Can't parse "+rotResNum.getText()+" as an integer number of residues!"; JOptionPane.showMessageDialog(null, error, error, JOptionPane.ERROR_MESSAGE); return Integer.MAX_VALUE; } } //}}} //{{{ onToggle___ //################################################################################################## // target of reflection public void onToggleRotRes(ActionEvent ev) { updateProtein(); } // target of reflection public void onToggleRotResNum(ActionEvent ev) { updateProtein(); } // target of reflection public void onToggleUpstream(ActionEvent ev) { updateProtein(); } // target of reflection public void onToggleIdealSC(ActionEvent ev) { stateChanged(null); } //}}} //{{{ updateProtein, updateLabels //################################################################################################## public void updateProtein() { try { initDials(); } catch (ResidueException re) { re.printStackTrace(); } catch (AtomException ae) { ae.printStackTrace(); } // new molten state modelman.unregisterTool(this); Collection residues = PhiPsiRotation.makeMobileGroup( modelman.getModel(), ctrRes, rotUpstream.isSelected(), parseNumRes()); modelman.registerTool(this, residues); stateChanged(null); } public void updateLabels() { // Make color normal again ramaLabel.setForeground(normalColor); if(ctrRes == null) ramaLabel.setText(""); else { Model model = modelman.getModel(); ModelState modelState = modelman.getMoltenState(); try { if(rama == null) ramaLabel.setText("Ramachdrn: [no data]"); else if(rama.isOutlier(model, ctrRes, modelState)) { ramaLabel.setText("Ramachdrn: OUTLIER"); ramaLabel.setForeground(alertColor); } else if(rama.rawScore(model, ctrRes, modelState) > 0.02) ramaLabel.setText("Ramachdrn: favored"); else ramaLabel.setText("Ramachdrn: allowed"); } catch(ResidueException ex) { ramaLabel.setText("Ramachdrn: [no phi,psi]"); } } dialog.pack(); } //}}} //{{{ onReleaseResidues //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** * Checks residues back into the ModelManager, * nulls the anchors and repaints the graphics. * @param ev is ignored, may be null. */ public void onReleaseResidues(ActionEvent ev) { int reply = JOptionPane.showConfirmDialog(kMain.getTopWindow(), "Do you want to keep the changes\nyou've made to these residues?", "Keep changes?", JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE); if(reply == JOptionPane.CANCEL_OPTION) return; if(reply == JOptionPane.YES_OPTION) { modelman.requestStateChange(this); // will call this.updateModelState() modelman.addUserMod("Refit backbone of "+ctrRes); } else // == JOptionPane.NO_OPTION modelman.unregisterTool(this); dialog.dispose(); kCanvas.repaint(); } //}}} //{{{ onRotateSidechain //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME /** * Launches a SidechainRotator window for this residue. * @param ev is ignored, may be null. */ public void onRotateSidechain(ActionEvent ev) { try { new SidechainRotator(kMain, ctrRes, modelman); } catch(IOException ex) { ex.printStackTrace(SoftLog.err); } } //}}} //{{{ Dialog window listeners //################################################################################################## public void windowActivated(WindowEvent ev) {} public void windowClosed(WindowEvent ev) {} public void windowClosing(WindowEvent ev) { onReleaseResidues(null); } public void windowDeactivated(WindowEvent ev) {} public void windowDeiconified(WindowEvent ev) {} public void windowIconified(WindowEvent ev) {} public void windowOpened(WindowEvent ev) {} //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/rotarama/0000755000000000000000000000000011744306102021074 5ustar rootrootking-2.21.120420/chiropraxis/src/chiropraxis/rotarama/NdftToPgm.java0000644000000000000000000001436211531212726023611 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.rotarama; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * NdftToPgm is a simple program that takes a NDFT file * on stdin and writes a (plain) Portable Gray Map (pgm) file on stdout. * The values in the table are placed on a log scale before being rendered. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Tue Dec 16 08:32:14 EST 2003 */ public class NdftToPgm //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public NdftToPgm() { super(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { DataInputStream dis; dis = new DataInputStream(new BufferedInputStream(System.in)); NDFloatTable ndft = new NDFloatTable(dis); if(ndft.getDimensions() != 2) throw new IllegalArgumentException("Must provide a 2-D NDFT"); int[] size = ndft.getBins(); int width = size[0], height = size[1]; final int MAXPIX = (1<<16) - 1; final double MAXBIN = Math.log(ndft.maxValue() + 1.0); System.out.println("P5"); System.out.println(width+" "+height); System.out.println(MAXPIX); DataOutputStream out = new DataOutputStream(System.out); int[] i = new int[2]; for(i[1] = height-1; i[1] >= 0; i[1]--) { for(i[0] = 0; i[0] < width; i[0]++) { // val should be on [0, 1] double val = Math.log(ndft.valueAt(i) + 1.0) / MAXBIN; int pix = (int)Math.round(MAXPIX * val); // check for round up/down errors if(pix > MAXPIX) pix = MAXPIX; else if(pix < 0) pix = 0; //System.out.println(pix); out.writeChar(pix); } } out.flush(); } public static void main(String[] args) { NdftToPgm mainprog = new NdftToPgm(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("NdftToPgm.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'NdftToPgm.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.rotarama.NdftToPgm"); System.err.println("Copyright (C) 2003 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/rotarama/RamaPdfWriter.java0000644000000000000000000005602211744305702024460 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.rotarama; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import java.util.List; import com.lowagie.text.*; import com.lowagie.text.pdf.*; //}}} /** * RamaPdfWriter uses the iText PDF libraries to produce a PDF * plot of the six Richardson Ramachandran plots. * *

    When run as an application, it just copies its template file to standard out. * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Fri Mar 5 11:23:43 EST 2004 */ public class RamaPdfWriter //extends ... implements ... { //{{{ Constants /** Width of the extra border around the plot Graphics */ static final float PLOT_EXTRA = 60f; /** Scale factor to make plots fit on the page */ static final float PLOT_SCALE = 165.3f / 360; // smaller plots now /*static final float PLOT_SCALE = 215.5f / 360;*/ /** Offset for positioning plots */ static final float PLOT_OFFSET = PLOT_SCALE * PLOT_EXTRA; //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public RamaPdfWriter() { super(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ createRamaPDF //############################################################################## // Post-multiplied transformation matrix: // [ x ] [ a b 0 ] [ x' ] [ x'/q ] // [ y ] * [ c d 0 ] = [ y' ] = [ y'/q ] // [ 1 ] [ e f 1 ] [ q ] [ 1 ] // Top, left, botttom, and right already include margins. // Document coordinate system has bottom left corner as (0, 0) // However, template coordinate systems have TOP left as (0, 0) // Rama plot lower left corners: // (108.3, 558.7) (351.2, 558.7) // (108.3, 357.9) (351.2, 357.9) // (108.3, 156.0) (351.2, 156.0) // These were determined by hand by DAK in Illustrator; not sure how // IWD got the old versions below (presumably by a similar strategy). /* // (62.5, 480.5) (345.0, 480.5) // (62.5, 221.5) (345.0, 221.5) */ /** * Takes a bunch of analyzed models and plots Rama plots for all of them. * @param analyses a Map< Collection<Ramalyze.RamaEval>, String > * that maps each collection of analyzed residues to a label. * All of them together are rendered as "All models" * @param structName a label identifying this structure, or null for none. * @param out a destination for the PDF file. */ public void createRamaPDF(Map analyses, String structName, OutputStream out) throws IOException { try { URL templateFile = this.getClass().getResource("rama8000/rama6-template.pdf"); /*URL templateFile = this.getClass().getResource("rama5200/rama4-template.pdf");*/ PdfReader pdfReader = new PdfReader(templateFile); Document doc = new Document(PageSize.LETTER); PdfWriter pdf = PdfWriter.getInstance(doc, out); doc.addCreator(this.getClass().getName()+" by Ian W. Davis"); // add header and footer now, before opening document doc.open(); PdfContentByte content = pdf.getDirectContent(); PdfTemplate template = pdf.getImportedPage(pdfReader, 1); doModelByModel(analyses, structName, doc, content, template); // TODO: doResidueByResidue() // Closing the document writes everything to file doc.close(); } catch(DocumentException ex) { throw new IOException("Got DocumentException when trying to generate PDF."); } } //}}} //{{{ doModelByModel //############################################################################## /** * Produces the all-models and model-by-model pages. * @param analyses a Map< Collection<Ramalyze.RamaEval>, String > * that maps each collection of analyzed residues to a label. * All of them together are rendered as "All models" * @param structName a label identifying this structure, or null for none. * @param doc the document being generated * @param content the content of the document being generated * @param template the six-square Rama page template object */ void doModelByModel(Map analyses, String structName, Document doc, PdfContentByte content, PdfTemplate template) throws DocumentException { int i = 0; PdfTemplate[] generalTemplates = new PdfTemplate[analyses.size()]; PdfTemplate[] ilevalTemplates = new PdfTemplate[analyses.size()]; PdfTemplate[] preproTemplates = new PdfTemplate[analyses.size()]; PdfTemplate[] glycineTemplates = new PdfTemplate[analyses.size()]; PdfTemplate[] transproTemplates = new PdfTemplate[analyses.size()]; PdfTemplate[] cisproTemplates = new PdfTemplate[analyses.size()]; /*PdfTemplate[] prolineTemplates = new PdfTemplate[analyses.size()];*/ for(Iterator iter = analyses.keySet().iterator(); iter.hasNext(); i++) { Collection analysis = (Collection) iter.next(); generalTemplates[i] = makeAnalysisTemplate(content, Ramalyze.RamaEval.GENERAL, analysis); ilevalTemplates[i] = makeAnalysisTemplate(content, Ramalyze.RamaEval.ILEVAL, analysis); preproTemplates[i] = makeAnalysisTemplate(content, Ramalyze.RamaEval.PREPRO, analysis); glycineTemplates[i] = makeAnalysisTemplate(content, Ramalyze.RamaEval.GLYCINE, analysis); transproTemplates[i] = makeAnalysisTemplate(content, Ramalyze.RamaEval.TRANSPRO, analysis); cisproTemplates[i] = makeAnalysisTemplate(content, Ramalyze.RamaEval.CISPRO, analysis); /*prolineTemplates[i] = makeAnalysisTemplate(content, Ramalyze.RamaEval.PROLINE, analysis);*/ } // Do all plots superimposed if(analyses.size() > 1) { doc.newPage(); content.addTemplate(template, 0, 0); for(i = 0; i < analyses.size(); i++) { content.addTemplate(generalTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 108.3f-PLOT_OFFSET, 558.7f-PLOT_OFFSET); content.addTemplate(preproTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 108.3f-PLOT_OFFSET, 357.9f-PLOT_OFFSET); content.addTemplate(transproTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 108.3f-PLOT_OFFSET, 156.0f-PLOT_OFFSET); content.addTemplate(ilevalTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 351.2f-PLOT_OFFSET, 558.7f-PLOT_OFFSET); content.addTemplate(glycineTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 351.2f-PLOT_OFFSET, 357.9f-PLOT_OFFSET); content.addTemplate(cisproTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 351.2f-PLOT_OFFSET, 156.0f-PLOT_OFFSET); /*content.addTemplate(generalTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 62.5f-PLOT_OFFSET, 480.5f-PLOT_OFFSET); content.addTemplate(glycineTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 345.0f-PLOT_OFFSET, 480.5f-PLOT_OFFSET); content.addTemplate(prolineTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 62.5f-PLOT_OFFSET, 221.5f-PLOT_OFFSET); content.addTemplate(preproTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 345.0f-PLOT_OFFSET, 221.5f-PLOT_OFFSET);*/ } // Aggregate statistics for all residues analyzed ArrayList allRes = new ArrayList(); for(Iterator iter = analyses.keySet().iterator(); iter.hasNext(); ) allRes.addAll((Collection) iter.next()); //PdfTemplate stats = plotStatistics(content, 540, 144, allRes); /*PdfTemplate stats = plotStatistics(content, 540, 130, allRes);*/ PdfTemplate stats = plotStatistics(content, 540, 80, allRes); //float scale = Math.min(540/stats.getWidth(), 144/stats.getHeight()); /*float scale = Math.min(540/stats.getWidth(), 130/stats.getHeight());*/ float scale = Math.min(540/stats.getWidth(), 80/stats.getHeight()); if(scale > 1) scale = 1; //content.addTemplate(stats, scale, 0, 0, scale, 36, 36); content.addTemplate(stats, scale, 0, 0, scale, 50, 50); if(structName != null) addPageTitle(structName+", all models", content); else addPageTitle("All models", content); } // Do each model individually i = 0; for(Iterator iter = analyses.keySet().iterator(); iter.hasNext(); i++) { Collection analysis = (Collection) iter.next(); String label = (String) analyses.get(analysis); doc.newPage(); content.addTemplate(template, 0, 0); content.addTemplate(generalTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 108.3f-PLOT_OFFSET, 558.7f-PLOT_OFFSET); content.addTemplate(preproTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 108.3f-PLOT_OFFSET, 357.9f-PLOT_OFFSET); content.addTemplate(transproTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 108.3f-PLOT_OFFSET, 156.0f-PLOT_OFFSET); content.addTemplate(ilevalTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 351.2f-PLOT_OFFSET, 558.7f-PLOT_OFFSET); content.addTemplate(glycineTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 351.2f-PLOT_OFFSET, 357.9f-PLOT_OFFSET); content.addTemplate(cisproTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 351.2f-PLOT_OFFSET, 156.0f-PLOT_OFFSET); /*content.addTemplate(generalTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 62.5f-PLOT_OFFSET, 480.5f-PLOT_OFFSET); content.addTemplate(glycineTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 345.0f-PLOT_OFFSET, 480.5f-PLOT_OFFSET); content.addTemplate(prolineTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 62.5f-PLOT_OFFSET, 221.5f-PLOT_OFFSET); content.addTemplate(preproTemplates[i], PLOT_SCALE, 0, 0, PLOT_SCALE, 345.0f-PLOT_OFFSET, 221.5f-PLOT_OFFSET);*/ //PdfTemplate stats = plotStatistics(content, 540, 144, analysis); /*PdfTemplate stats = plotStatistics(content, 540, 130, analysis);*/ PdfTemplate stats = plotStatistics(content, 80, 100, analysis); //float scale = Math.min(540/stats.getWidth(), 144/stats.getHeight()); /*float scale = Math.min(540/stats.getWidth(), 130/stats.getHeight());*/ float scale = Math.min(540/stats.getWidth(), 80/stats.getHeight()); if(scale > 1) scale = 1; //content.addTemplate(stats, scale, 0, 0, scale, 36, 36); content.addTemplate(stats, scale, 0, 0, scale, 50, 50); if(structName != null) addPageTitle(structName+", model "+label, content); else addPageTitle("Model "+label, content); } } //}}} //{{{ makeAnalysisTemplate //############################################################################## PdfTemplate makeAnalysisTemplate(PdfContentByte content, String evalType, Collection analysis) { PdfTemplate canvas = content.createTemplate(360+2*PLOT_EXTRA, 360+2*PLOT_EXTRA); Graphics2D g2 = canvas.createGraphics(canvas.getWidth(), canvas.getHeight()); g2.translate(180+PLOT_EXTRA, 180+PLOT_EXTRA); // now we can use angles from -180 to +180 naturally Color c; if(Ramalyze.RamaEval.GENERAL.equals(evalType)) c = new Color(0xcc00cc); // purple else if(Ramalyze.RamaEval.ILEVAL.equals(evalType)) c = new Color(0xff0000); // red else if(Ramalyze.RamaEval.PREPRO.equals(evalType)) c = new Color(0x3366cc); // blue else if(Ramalyze.RamaEval.GLYCINE.equals(evalType)) c = new Color(0x00cc66); // green else if(Ramalyze.RamaEval.TRANSPRO.equals(evalType)) c = new Color(0xcc6600); // orange else if(Ramalyze.RamaEval.CISPRO.equals(evalType)) c = new Color(0x999900); // gold/yellow /*else if(Ramalyze.RamaEval.PROLINE.equals(evalType)) c = new Color(0xcc6600);*/ else c = new Color(0x000000); // shouldn't ever happen this.plotAnalysis(g2, c, evalType, analysis); g2.dispose(); return canvas; } //}}} //{{{ plotAnalysis //############################################################################## /** * Plots the results of a Ramachandran analysis for one model onto * any arbitrary Graphics object. * We assume that user space for the Graphics is typical for screens, images, etc * where the top left corner is (0, 0). * angle space for the Ramachandran plot: a Residue with (phi, psi) = (-60, -40) * will be plotted at (-60, +40) on the Graphics. * @param g the Graphics to draw on * @param outColor the color to draw outliers in * @param evalType one of the Ramalyze.RamaEval type constants specifying * which type of residues should appear on this plot. One of * GENERAL, ILEVAL, PREPRO, GLYCINE, TRANSPRO, or CISPRO. * @param analysis a Collection of Ramalyze.RamaEval objects to be plotted. */ void plotAnalysis(Graphics g, Color outColor, String evalType, Collection analysis) { Color fontColor = new Color(0x000000); Color normalColor = new Color(0x333333); g.setFont(new java.awt.Font("Serif", java.awt.Font.PLAIN, 10)); for(Iterator iter = analysis.iterator(); iter.hasNext(); ) { Ramalyze.RamaEval eval = (Ramalyze.RamaEval) iter.next(); if(! evalType.equals(eval.type)) continue; if(eval.score == Ramalyze.RamaEval.OUTLIER) { g.setColor(outColor); g.drawOval((int)eval.phi-3, ((int) -eval.psi)-3, 6, 6); g.setColor(fontColor); g.drawString(eval.name, (int)eval.phi+5, ((int) -eval.psi)+3); } else { g.setColor(normalColor); g.drawOval((int)eval.phi-2, ((int) -eval.psi)-2, 4, 4); } } } //}}} //{{{ plotStatistics //############################################################################## /** * Draws textual statistics about the results of a Ramachandran analysis * for any collection of RamaEvals. * @param content the PdfContentByte object to create a template from. * @param width the available width to draw in. * @param height the available height to draw in. * @param analysis a Collection of Ramalyze.RamaEval objects to be plotted. * @return a PdfTemplate of arbitrary size. The caller is responsible for scaling * it to fit into a width x height area. */ PdfTemplate plotStatistics(PdfContentByte content, float width, float height, Collection analysis) { // Calculate the statistics int total = 0, favored = 0, allowed = 0, outlier = 0; for(Iterator iter = analysis.iterator(); iter.hasNext(); ) { Ramalyze.RamaEval eval = (Ramalyze.RamaEval) iter.next(); if(eval.score == Ramalyze.RamaEval.FAVORED) { total++; favored++; } else if(eval.score == Ramalyze.RamaEval.ALLOWED) { total++; allowed++; } else if(eval.score == Ramalyze.RamaEval.OUTLIER) { total++; outlier++; } } // Write out a collection of the strings we want to print. DecimalFormat df = new DecimalFormat("0.0"); ArrayList strings = new ArrayList(); strings.add(df.format((100.0*favored)/total)+"% ("+favored+"/"+total+") of all residues were in favored (98%) regions."); strings.add(df.format((100.0*(favored+allowed))/total)+"% ("+(favored+allowed)+"/"+total+") of all residues were in allowed (>99.8%) regions."); strings.add(""); // blank line if(outlier == 0) strings.add("There were no outliers."); else { strings.add("There were "+outlier+" outliers (phi, psi):"); for(Iterator iter = analysis.iterator(); iter.hasNext(); ) { Ramalyze.RamaEval eval = (Ramalyze.RamaEval) iter.next(); if(eval.score == Ramalyze.RamaEval.OUTLIER) strings.add(" "+eval.name+" ("+df.format(eval.phi)+", "+df.format(eval.psi)+")"); } } java.awt.Font font = new java.awt.Font("Serif", java.awt.Font.PLAIN, 10); return layoutColumns(content, width, height, font, strings); } //}}} //{{{ layoutColumns //############################################################################## /** * Draws a series of text strings in either a 1- or 2-column layout. * @param content the PdfContentByte object to create a template from. * @param width the available width to draw in. * @param height the available height to draw in. * @param font the font to do the drawing in. * @param strings a Collection of Strings to draw, one per line. * @return a PdfTemplate of arbitrary size. The caller is responsible for scaling * it to fit into a width x height area. */ PdfTemplate layoutColumns(PdfContentByte content, float width, float height, java.awt.Font font, Collection stringList) { ArrayList strings = new ArrayList(stringList); // we need these as a List later // Calculate how big all these strings will be, and whether we should use 1 column or 2. // This template won't actually be used; it's just for FontMetrics info. PdfTemplate canvas = content.createTemplate(1, 1); Graphics2D g2 = canvas.createGraphics(canvas.getWidth(), canvas.getHeight()); FontMetrics metrics = g2.getFontMetrics(font); int lineheight = metrics.getMaxAscent() + metrics.getMaxDescent() + 2; int height1 = strings.size() * lineheight; int height2 = (strings.size()+1)/2 * lineheight; int width1 = 0; for(Iterator iter = strings.iterator(); iter.hasNext(); ) width1 = Math.max(width1, metrics.stringWidth((String)iter.next())); int widthL = 0; List halfL = strings.subList(0, strings.size()/2); for(Iterator iter = halfL.iterator(); iter.hasNext(); ) widthL = Math.max(widthL, metrics.stringWidth((String)iter.next())); int widthR = 0; List halfR = strings.subList(strings.size()/2, strings.size()); for(Iterator iter = halfR.iterator(); iter.hasNext(); ) widthR = Math.max(widthR, metrics.stringWidth((String)iter.next())); int width2spacer = (int)Math.round(0.2 * (widthL+widthR)); int width2 = widthL + widthR + width2spacer; g2.dispose(); if(Math.min(width/width1, height/height1) > Math.min(width/width2, height/height2)) // One column layout { canvas = content.createTemplate(width1, height1); g2 = canvas.createGraphics(canvas.getWidth(), canvas.getHeight()); g2.setFont(font); int y = metrics.getMaxAscent(); for(Iterator iter = strings.iterator(); iter.hasNext(); y += lineheight) g2.drawString((String)iter.next(), 0, y); } // Two column layout else { canvas = content.createTemplate(width2, height2); g2 = canvas.createGraphics(canvas.getWidth(), canvas.getHeight()); g2.setFont(font); int y = metrics.getMaxAscent(); for(Iterator iter = halfL.iterator(); iter.hasNext(); y += lineheight) g2.drawString((String)iter.next(), 0, y); y = metrics.getMaxAscent(); for(Iterator iter = halfR.iterator(); iter.hasNext(); y += lineheight) g2.drawString((String)iter.next(), widthL+width2spacer, y); } g2.dispose(); return canvas; } //}}} //{{{ addPageTitle //############################################################################## /** * Centers the given string as a title on the current page. */ void addPageTitle(String title, PdfContentByte content) { Document doc = content.getPdfDocument(); PdfTemplate canvas = content.createTemplate(doc.getPageSize().getWidth(), doc.getPageSize().getHeight()); Graphics2D g2 = canvas.createGraphics(canvas.getWidth(), canvas.getHeight()); java.awt.Font font = new java.awt.Font("Serif", java.awt.Font.PLAIN, 10); FontMetrics metrics = g2.getFontMetrics(font); g2.setFont(font); g2.setColor(Color.black); int width = metrics.stringWidth(title); int height = metrics.getMaxAscent() + metrics.getMaxDescent(); int x = ((int)canvas.getWidth() - width) / 2; /*int y = 72 + height/2;*/ int y = 46 + height/2; g2.drawString(title, x, y); g2.dispose(); content.addTemplate(canvas, 0, 0); return; } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { try { // Otherwise, this will fail in a server environment! System.setProperty("java.awt.headless", "true"); // Write out our template file to standard out URL templateFile = this.getClass().getResource("rama/rama6-template.pdf"); /*URL templateFile = this.getClass().getResource("rama/rama4-template.pdf");*/ PdfReader pdfReader = new PdfReader(templateFile); Document doc = new Document(PageSize.LETTER); PdfWriter pdf = PdfWriter.getInstance(doc, System.out); doc.addCreator(this.getClass().getName()+" by Ian W. Davis"); doc.open(); PdfContentByte content = pdf.getDirectContent(); for(int i = 1; i <= pdfReader.getNumberOfPages(); i++) { doc.newPage(); PdfTemplate template = pdf.getImportedPage(pdfReader, i); // Top, left, botttom, and right already include margins. // Coordinate system has bottom left corner as (0, 0) content.addTemplate(template, 0, 0); } // Closing the document writes everything to file doc.close(); } catch(Exception ex) { ex.printStackTrace(); } } public static void main(String[] args) { RamaPdfWriter mainprog = new RamaPdfWriter(); mainprog.Main(); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/rotarama/Ramalyze.java0000644000000000000000000004513211744305702023535 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.rotarama; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.moldb2.*; //}}} /** * Ramalyze is the executable Ramachandran-analysis program * in chiropraxis.rotarama. * * Ramalyze loads and analyzes the models and calculates overall statistics, * but delegates the task of generating output files to other classes. * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Mon Mar 8 08:56:34 EST 2004 */ public class Ramalyze //extends ... implements ... { //{{{ Constants public static final Object MODE_PDF = "PDF document"; public static final Object MODE_KINPLOT = "Kinemage plot"; public static final Object MODE_KINMARKUP = "Kinemage outlier markups"; public static final Object MODE_RAW = "Raw csv output"; public static final DecimalFormat df = new DecimalFormat("#.##"); //}}} //{{{ CLASS: RamaEval //############################################################################## /** Provides an evaluation for a single residue */ public static class RamaEval { public static final String FAVORED = "Favored"; public static final String ALLOWED = "Allowed"; public static final String OUTLIER = "OUTLIER"; public static final String NOSCORE = "Not evaluated"; public static final String GENERAL = "General case"; public static final String ILEVAL = "Isoleucine or valine"; public static final String PREPRO = "Pre-proline"; public static final String GLYCINE = "Glycine"; public static final String CISPRO = "Cis proline"; public static final String TRANSPRO = "Trans proline"; public static final String NOTYPE = "Unknown type"; Residue res; String name; // starts as res.toString(), may be improved later String modelName; public float phi = 0, psi = 0; public float numscore = 0; public String score = NOSCORE; public String type = NOTYPE; public RamaEval(Residue res, String modelName) { this.res = res; this.name = res.toString(); this.modelName = modelName; } /** Equal iff Residues have the same name and same phi, psi. */ public boolean equals(Object o) { if(!(o instanceof RamaEval)) return false; RamaEval that = (RamaEval) o; //System.err.println(this.res+" ?= "+that.res); //System.err.println(this.phi+" ?= "+that.phi); //System.err.println(this.psi+" ?= "+that.psi); return (this.res.toString().equals(that.res.toString())) && (this.phi == that.phi) && (this.psi == that.psi); } public int hashCode() { return this.res.toString().hashCode(); } } //}}} //{{{ Variable definitions //############################################################################## File infile = null, outfile = null; Object mode = MODE_RAW; //}}} //{{{ Constructor(s) //############################################################################## public Ramalyze() { super(); } //}}} //{{{ improveResidueNames //############################################################################## /** * Takes a Collection of RamaEval objects and improves the residue names * by removing redundant chain IDs and/or segment IDs. */ static void improveResidueNames(Collection analysis, boolean useModelNames) { Set segIDs = new HashSet(); Set chainIDs = new HashSet(); for(Iterator iter = analysis.iterator(); iter.hasNext(); ) { RamaEval eval = (RamaEval) iter.next(); segIDs.add( eval.res.getSegment() ); chainIDs.add(eval.res.getChain()); } boolean useSegs = (segIDs.size() > 1); boolean useChains = (chainIDs.size() > 1); for(Iterator iter = analysis.iterator(); iter.hasNext(); ) { RamaEval eval = (RamaEval) iter.next(); Residue r = eval.res; StringBuffer name = new StringBuffer(); if(useModelNames) name.append("[").append(eval.modelName).append("] "); if(useChains) { if(" ".equals(r.getChain())) name.append("_ "); else name.append(r.getChain()).append(' '); } if(useSegs) name.append(r.getSegment().trim()).append(' '); name.append(r.getSequenceNumber()); if(!" ".equals(r.getInsertionCode())) name.append(r.getInsertionCode()); name.append(' '); name.append(r.getName()); eval.name = name.toString(); } } //}}} //{{{ analyzeModel //############################################################################## /** * Performs Ramachandran analysis on one Model and its associated ModelStates. * @return a Set of RamaEval objects. One object is produced for each protein * residue with a measurable phi, psi and a unique conformation. * @throws IOException if the Ramachandran evaluator cannot be loaded. */ static public Set analyzeModel(Model model, Collection modelStates) throws IOException { String protein = "GLY,ALA,VAL,LEU,ILE,PRO,PHE,TYR,TRP,SER,THR,CYS,MET,MSE,LYS,HIS,ARG,ASP,ASN,GLN,GLU"; UberSet analysis = new UberSet(); Ramachandran rama = Ramachandran.getInstance(); for(Iterator ri = model.getResidues().iterator(); ri.hasNext(); ) { Residue res = (Residue) ri.next(); if(protein.indexOf(res.getName()) == -1) continue; for(Iterator msi = modelStates.iterator(); msi.hasNext(); ) { try { ModelState ms = (ModelState) msi.next(); RamaEval eval = new RamaEval(res, model.getName()); eval.phi = (float) AminoAcid.getPhi(model, res, ms); eval.psi = (float) AminoAcid.getPsi(model, res, ms); eval.numscore = (float) rama.rawScore(model, res, ms); if(res.getName().equals("GLY")) eval.type = RamaEval.GLYCINE; else if(res.getName().equals("PRO")) { if(AminoAcid.isCisPeptide(model, res, ms)) eval.type = RamaEval.CISPRO; else eval.type = RamaEval.TRANSPRO; } else if(AminoAcid.isPrepro(model, res, ms)) eval.type = RamaEval.PREPRO; else if(res.getName().equals("ILE") || res.getName().equals("VAL")) eval.type = RamaEval.ILEVAL; else eval.type = RamaEval.GENERAL; // Favored if(eval.numscore >= Ramachandran.ALL_FAVORED) eval.score = RamaEval.FAVORED; // General else if(eval.type == RamaEval.GENERAL && eval.numscore >= Ramachandran.GENERAL_ALLOWED) eval.score = RamaEval.ALLOWED; // Cis Pro else if(eval.type == RamaEval.CISPRO && eval.numscore >= Ramachandran.CISPRO_ALLOWED) eval.score = RamaEval.ALLOWED; // Other else if(eval.type != RamaEval.GENERAL && eval.type != RamaEval.CISPRO && eval.numscore >= Ramachandran.OTHER_ALLOWED) eval.score = RamaEval.ALLOWED; // Outlier else eval.score = RamaEval.OUTLIER; analysis.add(eval); } catch(AtomException ex) {} catch(ResidueException ex) {} } } return analysis; } //}}} //{{{ runAnalysis //############################################################################## /** * @param inputPdbFile the structure to analyze in standard PDB format * @param out the destination for PDF, kinemage, whatever * @param mode one of the MODE_XXX constants from this class * @throws IOException if the Ramachandran evaluator can't be loaded, * or if the PDB file can't be read in. * @throws IllegalArgumentException if an unknown mode is requested */ static public void runAnalysis(InputStream inputPdbFile, OutputStream out, Object mode) throws IOException { runAnalysis( (new PdbReader()).read(inputPdbFile), out, mode ); } static public void runAnalysis(CoordinateFile coordFile, OutputStream out, Object mode) throws IOException { Map analyses = new UberMap(); for(Iterator iter = coordFile.getModels().iterator(); iter.hasNext(); ) { Model model = (Model) iter.next(); Collection analysis = analyzeModel(model, model.getStates().values()); if(mode == MODE_PDF || mode == MODE_KINPLOT || mode == MODE_KINMARKUP) { boolean useModelNames = (coordFile.getModels().size() > 1); improveResidueNames(analysis, useModelNames); } analyses.put(analysis, model.getName()); } String label = null; if(coordFile.getFile() != null) label = coordFile.getFile().getName(); else if(coordFile.getIdCode() != null) label = coordFile.getIdCode(); if(mode == MODE_PDF) { System.err.println("Creating PDF document..."); RamaPdfWriter writer = new RamaPdfWriter(); writer.createRamaPDF(analyses, label, out); try { out.flush(); } catch(IOException ex) {} // PdfWriter might have already closed it! } else if(mode == MODE_KINPLOT) { System.err.println("Creating kinemage plot..."); RamaKinWriter writer = new RamaKinWriter(); writer.createRamaPlotKin(analyses, label, new PrintWriter(out)); try { out.flush(); } catch(IOException ex) {} // KinWriter might have already closed it! } else if(mode == MODE_KINMARKUP) { System.err.println("Creating kinemage outlier markups..."); Model firstModel = coordFile.getFirstModel(); ModelState firstState = firstModel.getState(); Collection analysis = null; for(Iterator iter = analyses.keySet().iterator(); iter.hasNext(); ) { Collection anal = (Collection) iter.next(); String modelName = (String) analyses.get(anal); if(modelName.equals(firstModel.getName())) { analysis = anal; break; } } if(analysis == null) System.err.println("Can't find first model in " +label+" so can't draw Ca-Ca traces!"); RamaKinWriter writer = new RamaKinWriter(); writer.drawRamaOutlierCaTraces(analysis, firstModel, firstState, new PrintWriter(out)); try { out.flush(); } catch(IOException ex) {} // KinWriter might have already closed it! } else if(mode == MODE_RAW) { System.err.println("Printing raw scores & evals..."); PrintWriter out2 = new PrintWriter(out); int i = 0; out2.println("#residue:score%:phi:psi:rama_eval:rama_type"); for(Iterator iter = analyses.keySet().iterator(); iter.hasNext(); i++) // each model { Collection analysis = (Collection) iter.next(); for(Iterator iter2 = analysis.iterator(); iter2.hasNext(); ) // each residue { RamaEval eval = (RamaEval) iter2.next(); out2.println(eval.name+":"+df.format(100*eval.numscore)+":"+ df.format(eval.phi)+":"+df.format(eval.psi)+":"+eval.score+":"+eval.type); } } out2.flush(); } else throw new IllegalArgumentException("Unknown output mode: "+mode); } //}}} //{{{ getEvals //############################################################################## // Useful method for outside classes that want to use // Ramachandran scores for other purposes. -DK 100202 public HashMap getEvals(Model model) throws IOException { Collection analysis = analyzeModel(model, model.getStates().values()); HashMap evals = new HashMap(); for(Iterator iter = analysis.iterator(); iter.hasNext(); ) { RamaEval r = (RamaEval) iter.next(); evals.put(r.res, (double) r.numscore); } return evals; } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { PdbReader pdbReader = new PdbReader(); CoordinateFile coordFile; if(infile == null) coordFile = pdbReader.read(System.in); else coordFile = pdbReader.read(infile); OutputStream out; if(outfile == null) out = System.out; else out = new BufferedOutputStream(new FileOutputStream(outfile)); runAnalysis(coordFile, out, this.mode); try { out.flush(); out.close(); } catch(IOException ex) {} // PdfWriter might have already closed it! } public static void main(String[] args) { // If we fail to do this, Java will crash if this program // is run from a non-graphical (e.g. script) environment. System.setProperty("java.awt.headless", "true"); Ramalyze mainprog = new Ramalyze(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } catch(Exception ex) { ex.printStackTrace(); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("Ramalyze.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'Ramalyze.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.rotarama.Ramalyze"); System.err.println("Copyright (C) 2004 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { if(infile == null) infile = new File(arg); else if(outfile == null) outfile = new File(arg); else throw new IllegalArgumentException("Too many file names on cmd line: '"+arg+"'"); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-pdf")) { mode = MODE_PDF; } else if(flag.equals("-kinplot")) { mode = MODE_KINPLOT; } else if(flag.equals("-kinmarkup")) { mode = MODE_KINMARKUP; } else if(flag.equals("-kin")) { throw new IllegalArgumentException("-kin is no longer a valid flag; use -kinplot or -kinmarkup"); } else if(flag.equals("-raw")) { mode = MODE_RAW; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/rotarama/RamaKinWriter.java0000644000000000000000000004237311744305702024474 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.rotarama; import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import java.util.List; import com.lowagie.text.*; import com.lowagie.text.pdf.*; //}}} /** * RamaKinWriter produces kinemages using the six Top8000-derived * Richardson Ramachandran categories. * *

    It can produce either * *

    This class is essentially a modified version of code in Ian's old * hless.Ramachandran (on his thesis DVD). * *

    When run as an application, it just copies its template file to standard out. * *

    Copyright (C) 2012 by Daniel A. Keedy. All rights reserved. *
    Begun on Tue Mar 13 2012 */ public class RamaKinWriter //extends ... implements ... { //{{{ Constants static final DecimalFormat df = new DecimalFormat("0.00"); //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public RamaKinWriter() { super(); } //}}} //{{{ createRamaPlotKin //############################################################################## /** * Takes a bunch of analyzed models and plots Rama plots for all of them. * If there is more than one model, superimposes all of their Rama plots * (doing each model individually (as with PDF output) could lead to too big * of a kinemage). * @param analyses a Map< Collection<Ramalyze.RamaEval>, String > * that maps each collection of analyzed residues to a label. * All of them together are rendered as "All models" * @param structName a label identifying this structure, or null for none. * @param out a destination for the kinemage. */ public void createRamaPlotKin(Map analyses, String structName, PrintWriter out) throws IOException { out.println("@text"); out.println("Use the animate buttons or the 'a' key to cycle through the various Ramachandran plots."); out.println(); textSummary(analyses, out); // Roughly the same as in RamaPdfWriter HashMap colormap = new HashMap(); colormap.put(Ramalyze.RamaEval.GENERAL, "purple"); colormap.put(Ramalyze.RamaEval.ILEVAL, "red"); colormap.put(Ramalyze.RamaEval.PREPRO, "blue"); colormap.put(Ramalyze.RamaEval.GLYCINE, "green"); colormap.put(Ramalyze.RamaEval.TRANSPRO, "orange"); colormap.put(Ramalyze.RamaEval.CISPRO, "gold"); try { BufferedReader template = new BufferedReader(new InputStreamReader( getClass().getResourceAsStream("rama8000/rama6-template.kin"))); String line; // All data, no contours while((line = template.readLine()) != null) { if(line.startsWith("@dotlist")) break; else out.println(line); } writeAllData(analyses, colormap, out); // General while((line = template.readLine()) != null) { if(line.startsWith("@dotlist")) break; else out.println(line); } writeClass(analyses, Ramalyze.RamaEval.GENERAL, colormap.get(Ramalyze.RamaEval.GENERAL).toString(), out); // Isoleucine/valine while((line = template.readLine()) != null) { if(line.startsWith("@dotlist")) break; else out.println(line); } writeClass(analyses, Ramalyze.RamaEval.ILEVAL, colormap.get(Ramalyze.RamaEval.ILEVAL).toString(), out); // Pre-proline while((line = template.readLine()) != null) { if(line.startsWith("@dotlist")) break; else out.println(line); } writeClass(analyses, Ramalyze.RamaEval.PREPRO, colormap.get(Ramalyze.RamaEval.PREPRO).toString(), out); // Glycine while((line = template.readLine()) != null) { if(line.startsWith("@dotlist")) break; else out.println(line); } writeClass(analyses, Ramalyze.RamaEval.GLYCINE, colormap.get(Ramalyze.RamaEval.GLYCINE).toString(), out); // Trans proline while((line = template.readLine()) != null) { if(line.startsWith("@dotlist")) break; else out.println(line); } writeClass(analyses, Ramalyze.RamaEval.TRANSPRO, colormap.get(Ramalyze.RamaEval.TRANSPRO).toString(), out); // Cis proline while((line = template.readLine()) != null) { if(line.startsWith("@dotlist")) break; else out.println(line); } writeClass(analyses, Ramalyze.RamaEval.CISPRO, colormap.get(Ramalyze.RamaEval.CISPRO).toString(), out); template.close(); out.flush(); // don't use close() in case it would close System.out? } catch(IOException ex) { System.err.println("Error reading rama6-template.kin resource file!"); } } //}}} //{{{ textSummary //################################################################################################## /** * Prints textual statistics about the results of a Ramachandran analysis * for any collection of Ramalyze.RamaEvals. * Intended to be used in the kinemage @text area. * @param analyses a Map< Collection<Ramalyze.RamaEval>, String > * that maps each collection of analyzed residues to a label; * All of them together are rendered as "All models" * @param out the destination for kinemage output */ public void textSummary(Map analyses, PrintWriter out) { int total = 0, favored = 0, allowed = 0, outlier = 0, model = 1; for(Iterator iter = analyses.keySet().iterator(); iter.hasNext(); model++) { Collection analysis = (Collection) iter.next(); // Tally stats for(Iterator iter2 = analysis.iterator(); iter2.hasNext(); ) { Ramalyze.RamaEval eval = (Ramalyze.RamaEval) iter2.next(); if(eval.score == Ramalyze.RamaEval.FAVORED) { total++; favored++; } else if(eval.score == Ramalyze.RamaEval.ALLOWED) { total++; allowed++; } else if(eval.score == Ramalyze.RamaEval.OUTLIER) { total++; outlier++; } } // Report stats out.println("Model "+model+":"); out.println(df.format((100.0*favored)/total)+"% ("+favored+"/"+total+") of all residues were in favored (98%) regions."); out.println(df.format((100.0*(favored+allowed))/total)+"% ("+(favored+allowed)+"/"+total+") of all residues were in allowed (>99.8%) regions."); if(outlier == 0) out.println("There were no outliers."); else { out.println("There were "+outlier+" outliers (phi, psi):"); for(Iterator iter2 = analysis.iterator(); iter2.hasNext(); ) { Ramalyze.RamaEval eval = (Ramalyze.RamaEval) iter2.next(); if(eval.score == Ramalyze.RamaEval.OUTLIER) out.println(" "+eval.name+" ("+df.format(eval.phi)+", "+df.format(eval.psi)+")"); } } out.println(); } out.println("For more information, see Lovell, et al. (2003) Proteins: Struct Func Gen 50:437-450"); } //}}} //{{{ writeAllData //################################################################################################## /** * Writes data for all Ramachandran classes. * Outliers are colored according to the pairings in colormap. * @param analyses a Map< Collection<Ramalyze.RamaEval>, String > * that maps each collection of analyzed residues to a label; * All of them together are rendered as "All models" * @param colormap maps ramaclass Strings to Mage color Strings * @param out the destination for kinemage output */ void writeAllData(Map analyses, Map colormap, PrintWriter out) { int model = 1; for(Iterator iter = analyses.keySet().iterator(); iter.hasNext(); model++) { Collection analysis = (Collection) iter.next(); out.println("@balllist {Good data} color= white radius= 1.5 master= {Data pts} nohilite" +(analyses.size() > 1 ? " master= {Model "+model+"}" : "") +(analyses.size() > 1 && model != 1 ? " off" : "")); for(Iterator iter2 = analysis.iterator(); iter2.hasNext(); ) { Ramalyze.RamaEval eval = (Ramalyze.RamaEval) iter2.next(); if(eval.score == Ramalyze.RamaEval.FAVORED || eval.score == Ramalyze.RamaEval.ALLOWED) { out.println("{"+eval.name+"} "+df.format(eval.phi)+" "+df.format(eval.psi)+" 0.0"); } } } model = 1; for(Iterator iter = analyses.keySet().iterator(); iter.hasNext(); model++) { Collection analysis = (Collection) iter.next(); out.println("@balllist {Bad data} color= white radius= 3.0 master= {Data pts} nohilite" +(analyses.size() > 1 ? " master= {Model "+model+"}" : "") +(analyses.size() > 1 && model != 1 ? " off" : "")); StringBuffer outlierLabels = new StringBuffer("@labellist {Outlier labels} color= white master= {Outlier Lbls}" +(analyses.size() > 1 ? " master= {Model "+model+"}" : "") +(analyses.size() > 1 && model != 1 ? " off" : "")); for(Iterator iter2 = analysis.iterator(); iter2.hasNext(); ) { Ramalyze.RamaEval eval = (Ramalyze.RamaEval) iter2.next(); if(eval.score == Ramalyze.RamaEval.OUTLIER) { String color = colormap.get(eval.type).toString(); out.println("{"+eval.name+"} "+color+" "+df.format(eval.phi)+" "+df.format(eval.psi)+" 0.0"); outlierLabels.append("{"+eval.name+"} "+df.format(eval.phi+3.0)+" "+df.format(eval.psi)+" 0.0\n"); } } out.println(outlierLabels.toString()); } } //}}} //{{{ writeClass //################################################################################################## /** * Writes data for one Ramachandran class. * Outliers are colored according to the pairings in colormap. * @param analyses a Map< Collection<Ramalyze.RamaEval>, String > * that maps each collection of analyzed residues to a label; * All of them together are rendered as "All models" * @param evaltype a constant from RamaEval * @param color the color for the outlier markers (a Mage color) * @param out the destination for kinemage output */ void writeClass(Map analyses, String evaltype, String color, PrintWriter out) { int model = 1; for(Iterator iter = analyses.keySet().iterator(); iter.hasNext(); model++) { Collection analysis = (Collection) iter.next(); out.println("@balllist {Good data} color= white radius= 1.5 master= {Data pts} nohilite" +(analyses.size() > 1 ? " master= {Model "+model+"}" : "") +(analyses.size() > 1 && model != 1 ? " off" : "")); for(Iterator iter2 = analysis.iterator(); iter2.hasNext(); ) { Ramalyze.RamaEval eval = (Ramalyze.RamaEval) iter2.next(); if(eval.type == evaltype && (eval.score == Ramalyze.RamaEval.FAVORED || eval.score == Ramalyze.RamaEval.ALLOWED)) { out.println("{"+eval.name+"} "+df.format(eval.phi)+" "+df.format(eval.psi)+" 0.0"); } } } model = 1; for(Iterator iter = analyses.keySet().iterator(); iter.hasNext(); model++) { Collection analysis = (Collection) iter.next(); out.println("@balllist {Bad data} color= white radius= 3.0 master= {Data pts} nohilite" +(analyses.size() > 1 ? " master= {Model "+model+"}" : "") +(analyses.size() > 1 && model != 1 ? " off" : "")); StringBuffer outlierLabels = new StringBuffer("@labellist {Outlier labels} color= white master= {Outlier Lbls}" +(analyses.size() > 1 ? " master= {Model "+model+"}" : "") +(analyses.size() > 1 && model != 1 ? " off" : "")); for(Iterator iter2 = analysis.iterator(); iter2.hasNext(); ) { Ramalyze.RamaEval eval = (Ramalyze.RamaEval) iter2.next(); if(eval.type == evaltype && eval.score == Ramalyze.RamaEval.OUTLIER) { out.println("{"+eval.name+"} "+color+" "+df.format(eval.phi)+" "+df.format(eval.psi)+" 0.0"); outlierLabels.append("{"+eval.name+"} "+df.format(eval.phi+3.0)+" "+df.format(eval.psi)+" 0.0\n"); } } out.println(outlierLabels.toString()); } } //}}} //{{{ drawRamaOutlierCaTraces //################################################################################################## /** * Takes ONE analyzed model and draws Rama outlier markups for it. * If there was more than one model, this method typically gets passed just the first one. * @param analyses a Collection<Ramalyze.RamaEval> of analyzed residues. * @param structName a label identifying this structure, or null for none. * @param out a destination for the kinemage. */ public void drawRamaOutlierCaTraces(Collection analysis, Model model, ModelState state, PrintWriter out) { DecimalFormat df3 = new DecimalFormat("0.###"); out.println("@vectorlist {bad Rama Ca} width= 4 color= green"); for(Iterator iter2 = analysis.iterator(); iter2.hasNext(); ) { Ramalyze.RamaEval eval = (Ramalyze.RamaEval) iter2.next(); if(eval.score == Ramalyze.RamaEval.OUTLIER) { Residue res = eval.res; // Try really hard to avoid nulls Atom prevAtom = res.getPrev(model).getAtom(" CA "); Atom currAtom = res.getAtom(" CA "); Atom nextAtom = res.getNext(model).getAtom(" CA "); if(prevAtom == null) prevAtom = res.getAtom(" N "); if(nextAtom == null) nextAtom = res.getAtom(" C "); if(prevAtom == null || currAtom == null || nextAtom == null) { System.err.println("Unable to draw Ca-Ca for "+res); continue; } try { AtomState prev = state.get(prevAtom); AtomState curr = state.get(currAtom); AtomState next = state.get(nextAtom); Triple t = new Triple(); t.likeMidpoint(prev, curr); out.println("{"+res.getPrev(model)+" CA}P " +df3.format(t.getX())+" "+df3.format(t.getY())+" "+df3.format(t.getZ())); t = curr; out.println("{"+res+" CA} " +df3.format(t.getX())+" "+df3.format(t.getY())+" "+df3.format(t.getZ())); t.likeMidpoint(next, curr); out.println("{"+res.getNext(model)+" CA} " +df3.format(t.getX())+" "+df3.format(t.getY())+" "+df3.format(t.getZ())); } catch(AtomException ex) { System.err.println("Unable to draw Ca-Ca for "+res); } } } out.flush(); // don't use close() in case it would close System.out? } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { try { // Otherwise, this will fail in a server environment! System.setProperty("java.awt.headless", "true"); // Write out our template file to standard out BufferedReader template = new BufferedReader(new InputStreamReader( getClass().getResourceAsStream("rama8000/rama6-template.kin"))); String line; while((line = template.readLine()) != null) System.out.println(line); template.close(); System.out.flush(); } catch(Exception ex) { ex.printStackTrace(); } } public static void main(String[] args) { RamaKinWriter mainprog = new RamaKinWriter(); mainprog.Main(); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/rotarama/NDFloatTable.java0000644000000000000000000010406311531212726024204 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: package chiropraxis.rotarama; //import java.awt.*; import java.io.*; import java.util.*; //import javax.swing.*; /** * NDFloatTable implements an n-dimensional lookup table of floating-point values. * The table covers a "rectangular" range; i.e., each dimension d is confined to some interval [mind, maxd]. * Each dimension may optionally be "wrapped" such that mind and maxd are two ways of referring to the same thing. * On each dimension the table is subdivided into nbinsd "bins" or sample points. * Thus, it is each n-dimensional bin that has a single floating-point value. * There is no explicit "memory" of the input points; their identity merges with one (or more) bins. * The basic behavior is to simply add an input point to the bin it falls into, but various smoothing functions are available to distribute the point over multiple bins. * The class is intended for making histograms and (particularly) density traces. * *

    Using the Gaussian and cosine functions for density traces has some hang-ups, particularly if one varies the mask radii. * See the README file associated with the boundrotamers project for all the details. * *

    The various n-dimensional entities (points/vectors, bins, etc.) are represented as primitive arrays of length n. * *

    Note that no checking of points or indices is performed! * If you are not certain that a point or set of bin indices falls within the table, use contains() to check. * Submission of invalid values will result in unpredictable behavior and/or exceptions being thrown. * *

    Begun on Wed Mar 20 16:47:59 EST 2002 *
    Copyright (C) 2002 by Ian W. Davis. All rights reserved. */ public class NDFloatTable //extends ... implements ... { //{{{ Static fields /** * The number of mask radii that tallyGaussian() explores out to. * Note that at one mask radius, the value has fallen to 10% of its maximum (by definition). * But at two mask radii, the value is only 0.01% of its maximum. * At two-and-a-half, it's less than a millionth; at three, less than a billionth. */ static final float GSN_REACH = 2.5f; //}}} //{{{ Variables //################################################################################################## // The name of this table, for later reference String ourName; // Number of dimensions the table exists in int nDim; // Minimum and maximum boundaries for each of n dimensions float[] minVal, maxVal; // Number of subdivisions on each of n dimensions int[] nBins; // Whether each dimension should be wrapped around boolean[] doWrap; // Number of real points that have been tallied int realcount; // The actual storage space float[] lookupTable; // Width of each bin. Used often, nice to precalculate. float[] wBin; // Common variables used by tallyGaussian(), tallyCosine(), and their helper functions. // 'tgf' stood for Tally Gaussian Fast float tgf_a, tgf_b, tgf_b_2, tgf_mask_2; int[] tgf_start, tgf_end, tgf_curr; // must be created with new float[] tgf_pt; // only a reference to an existing point // Reusable variables for valueAt() int[] va_home; // the bin this point falls into float[] va_home_ctr; // center of the above bin (nearest) int[] va_neighbor; // 'diagonal' neighbor (most distant) int[] va_current; // bin being examined - some mix of elements from home[] and neighbor[] float[] va_contrib; // fractional contribution of neighbor[] to value at pt[] //}}} //{{{ Constructors //################################################################################################## /** * Creates a new n-dimensional lookup table of floating point numbers. * * @param name the name of this table, for later identification * @param ndim n, the number of dimensions * @param min the minimum ranges of each dimension * @param max the maximum ranges of each dimension * @param bins the number of bins in each dimension * @param wrap whether or not to wrap in each dimension */ public NDFloatTable(String name, int ndim, float[] min, float[] max, int[] bins, boolean[] wrap) { ourName = name; nDim = ndim; // Make copies of all input data minVal = new float[nDim]; System.arraycopy(min, 0, minVal, 0, nDim); maxVal = new float[nDim]; System.arraycopy(max, 0, maxVal, 0, nDim); nBins = new int[nDim]; System.arraycopy(bins, 0, nBins, 0, nDim); doWrap = new boolean[nDim]; System.arraycopy(wrap, 0, doWrap, 0, nDim); // Calculate the bin widths. wBin = new float[nDim]; for(int i = 0; i < nDim; i++) wBin[i] = (maxVal[i] - minVal[i]) / nBins[i]; // Allocate storage for the tgfXXX variables tgf_start = new int[nDim]; tgf_end = new int[nDim]; tgf_curr = new int[nDim]; // Allocate storage for the vaXXX variables va_home = new int[nDim]; va_home_ctr = new float[nDim]; va_neighbor = new int[nDim]; va_current = new int[nDim]; va_contrib = new float[nDim]; // Calculate number of entries in lookupTable int n_entries = 1; for(int i = 0; i < nDim; i++) n_entries *= nBins[i]; // Allocate table and initialize it lookupTable = new float[n_entries]; zero(); } //}}} //{{{ bin <==> index functions, wrapping //################################################################################################## // In Java, (-a) % b == -(a % b), unlike a real modulo function. // Wraps an imaginary bin number on a given dimension. int wrapbin(int bin, int dim) { // BUG!! This produces [1,nBins] for negative numbers and [0,nBins-1] for positive numbers. // if(doWrap[dim]) return ( bin < 0 ? nBins[dim] + (bin % nBins[dim]) : bin % nBins[dim] ); // Fixed 20 Jan 2006; results before this may be (very slightly) wrong. if(doWrap[dim]) { bin = bin % nBins[dim]; if(bin < 0) return bin + nBins[dim]; else return bin; } else return bin; } // Takes a set of bin numbers and produces a linear offset into lookuptable. // If no bin can be found after wrapping is applied, returns -1. int bin2index(int[] where) { int which = 0, bin, i; for(i = 0; i < nDim-1; i++) { bin = wrapbin(where[i], i); if(bin < 0 || bin >= nBins[i]) return -1; which += bin; which *= nBins[i+1]; } bin = wrapbin(where[i], i); if(bin < 0 || bin >= nBins[i]) return -1; which += bin; return which; } // Takes a set of bin numbers and produces a linear offset into lookuptable. // If no bin can be found after wrapping is applied, the edge of the table is used. int bin2index_limit(int[] where) { int which = 0, bin, i; for(i = 0; i < nDim-1; i++) { bin = Math.min(nBins[i]-1, Math.max(wrapbin(where[i], i), 0)); which += bin; which *= nBins[i+1]; } bin = Math.min(nBins[i]-1, Math.max(wrapbin(where[i], i), 0)); which += bin; return which; } // Takes an index into lookuptable and regenerates a set of bin numbers int[] index2bin(int which) { int[] where = new int[nDim]; for(int i = nDim-1; i >= 0; i--) { where[i] = which % nBins[i]; which -= where[i]; which /= nBins[i]; } return where; } //}}} //{{{ counting, get/set value //################################################################################################## /** * Sets the number of data points in a given bin. * You (probably) shouldn't ever be using this. * * @param where the bin to affect * @param value the value to place in the bin */ public void setValueAt(int[] where, float value) { lookupTable[bin2index(where)] = value; } /** * Retrieves the number of data points in a given bin. * * @param where the bin to look in * @return the number of data points in the bin */ public float valueAt(int[] where) { return lookupTable[bin2index(where)]; } /** * Retrieves the greatest number of points found in any one bin. * * @return the maximum value in the table. */ public float maxValue() { float max = lookupTable[0]; for(int i = 1; i < lookupTable.length; i++) { if(lookupTable[i] > max) max = lookupTable[i]; } return max; } /** * Retrieves the number of points in all bins. * * @return the sum across all bins */ public float totalCount() { float count = 0.0f; for(int i = 0; i < lookupTable.length; i++) count += lookupTable[i]; return count; } /** * Returns the number of points tallied by this table. * @return number of times tallyXXX() has been called since the last zero() */ public int realCount() { return realcount; } //}}} //{{{ interpolated valueAt() //################################################################################################## /** * Estimates the value of the density trace at a given position, using linear interpolation. * * This algorithm is too complex to describe fully, but it basically consults the 2n bins * nearest in space to the input point, and weights their contributions according to their distances. * *

    To get a feeling for how it works, work out a linear interpolation in one dimension * ( a...x.......b -- what is x in terms of a and b? )(trivial) * and then in two dimensions (still fairly easy -- do one dimension first, then interpolate between those results). * *

    In dimensions very near the edge of the table, no interpolation is performed in that dimension * (it would be impossible to do so, anyway, because there's no 2nd value to interpolate out to). * * @param pt the point at which the value should be estimated * @return the approximate value of the density trace at the specified point */ public float valueAt(float[] pt) { float value = 0.0f; // The value this function is calculating! int dim, bin; // loop counters for dimensions and bins int bin_stop = 1 << nDim; // max val of the bin counter whereIs(pt, va_home); // the bin this point falls into centerOf(va_home, va_home_ctr); // center of the above bin (nearest) float coeff; // product of a mix of elements from va_contrib[] and (1-va_contrib[]) // Initialize va_neighbor[] and va_contrib[] for(dim = 0; dim < nDim; dim++) { // Use min() and max() to make sure we stay inside the table limits when finding va_neighbors. // If we would step outside the table, use the va_home bin instead -- thus there is effectively // no interpolation in the specified dimension. // // Now this is done later, implicitly, by bin2index_limit() // if(pt[dim] < va_home_ctr[dim]) { va_neighbor[dim] = va_home[dim]-1; } else { va_neighbor[dim] = va_home[dim]+1; } va_contrib[dim] = (float)Math.abs( (pt[dim]-va_home_ctr[dim])/wBin[dim] ); // always on [0.0, 0.5] } // Loop over all bins // bin is used as a bit mask, with one bit per dimension // 0 means va_home, 1 means va_neighbor -- this way all 2^n va_neighbor bins are evaluated // The limit is a 30-D table, but a 2x2x...x2 table in 30-D would occupy > 4GB !!! for(bin = 0; bin < bin_stop; bin++) { coeff = 1.0f; // reset coefficient // Loop over all dimensions, checking the appropriate bit in bin for(dim = 0; dim < nDim; dim++) { // Bit is off -- elements are drawn from va_home[] and (1-va_contrib[]) if((bin & (1 << dim)) == 0) { va_current[dim] = va_home[dim]; coeff *= 1.0f - va_contrib[dim]; } // Bit is on -- elements are drawn from va_neighbor[] and va_contrib[] else { va_current[dim] = va_neighbor[dim]; coeff *= va_contrib[dim]; } } value += coeff * lookupTable[bin2index_limit(va_current)]; // calc. va_contribution of va_currently selected bin } return value; } //}}} //{{{ contains() //################################################################################################## /** * Checks if a given n-D point falls into the range covered by this table or can be wrapped to that range. * * @param pt the point to check * @return true if the points falls into the range, false otherwise */ public boolean contains(float[] pt) { for(int i = 0; i < nDim; i++) { if( !doWrap[i] && ( pt[i] < minVal[i] || pt[i] > maxVal[i] )) return false; } return true; } /** * Checks if a given n-D bin exists in this table or can be wrapped to a bin that exists in this table. * * @param bin the bin to check * @return true if the bin exists, false otherwise */ public boolean contains(int[] bin) { for(int i = 0; i < nDim; i++) { if( !doWrap[i] && ( bin[i] < 0 || bin[i] >= nBins[i] )) return false; } return true; } //}}} //{{{ whereIs(), centerOf() //################################################################################################## /** * Returns the bin indices for a given point. * A point outside the range will return an imaginary bin outside the limits of the table. * * @param pt the point to find * @return the bin indices */ public int[] whereIs(float[] pt) { int[] where = new int[nDim]; for(int i = 0; i < nDim; i++) { // min() is necessary for the case where pt[i] == max[i] where[i] = Math.min( (int)Math.floor((pt[i]-minVal[i])/wBin[i]), nBins[i] - 1); } return where; } public void whereIs(float[] pt, int[] where) { for(int i = 0; i < nDim; i++) { // min() is necessary for the case where pt[i] == max[i] where[i] = Math.min( (int)Math.floor((pt[i]-minVal[i])/wBin[i]), nBins[i] - 1); } } /** * Returns a point that represents the "center" of a specified bin. * Imaginary bins outside the table are OK; their centers will fall outside the bounds of the table, though. * * @param where the bin indices * @return the center of that bin */ public float[] centerOf(int[] where) { float[] pt = new float[nDim]; for(int i = 0; i < nDim; i++) { pt[i] = minVal[i] + wBin[i]*((float)where[i]+0.5f); } return pt; } public void centerOf(int[] where, float[] pt) { for(int i = 0; i < nDim; i++) { pt[i] = minVal[i] + wBin[i]*((float)where[i]+0.5f); } } //}}} //{{{ distance calculation, simple tally //################################################################################################## /** * Returns the distance between two points, squared. * * @param pt1 an array of coordinates representing a point in n-space. * @param pt2 ditto * * @return the sum of the squares of the differences of as many values as are present in both points. */ public static float distanceSquared(float[] pt1, float[] pt2) { int dim = Math.min(pt1.length, pt2.length); float diff, dist_2 = 0.0f; for(int i = 0; i < dim; i++) { diff = pt1[i] - pt2[i]; dist_2 += diff*diff; } return dist_2; } //################################################################################################## /** * Increments the counter for the bin that this point falls into. * * @param pt The point to tally */ public void tallySimple(float[] pt) { realcount++; lookupTable[bin2index(whereIs(pt))]++; } //}}} //{{{ Gaussians //################################################################################################## /** * Calculates the contribution of this point to neighboring bins using a Gaussian mask. * The function is scaled such that regardless of the mask radius, it encloses a total * area/volume/etc. of exactly one. Probably. Unless my math's off. Which it might be. * *

    The formula: {1/[b*sqrt(pi)]^n}*e^[ -(x/b)^2 ] * * @param pt the point to tally * @param mask the mask radius */ public void tallyGaussian(float[] pt, float mask) { tgf_b = mask / 1.5174f; // sqrt[ -ln .10 ] = 1.5147 tgf_a = 1.0f / (float)Math.pow(tgf_b * 1.7725, nDim); // sqrt(pi) = 1.7725 tallyGaussian(pt, mask, tgf_a); } //################################################################################################## /** * Calculates the contribution of this point to neighboring bins using a Gaussian mask. * *

    The general form is e^[ -(x/b)2 ], where b is calculated such that * the function falls to 10% of its maximum value at a distance of mask from the center. * *

    The maximum value will be scale, which is usually equal to 1. * * @param pt the point to tally * @param mask the mask radius * @param scale the maximum height of the function (1 is typical) */ public void tallyGaussian(float[] pt, float mask, float scale) { realcount++; // makes use of the tgfXXX public variables! tgf_pt = pt; // determine the coefficients tgf_b = mask / 1.5174f; // sqrt[ -ln .10 ] = 1.5147 tgf_b_2 = tgf_b*tgf_b; tgf_a = scale; // Other numbers we need float range = GSN_REACH*mask; // set up the limits of exploration for(int i = 0; i < nDim; i++) { // round() is the best choice, b/c the half-bin marks correspond to the point // where the function will be evaluated anyway... // Bin numbers may be negative, or too large. It will be taken care of later. tgf_start[i] = Math.round((pt[i]-minVal[i]-range)/wBin[i]); tgf_end[i] = Math.round((pt[i]-minVal[i]+range)/wBin[i]); tgf_curr[i] = tgf_start[i]; } tgfRecursiveLoop(0); } // Use recursion to loop over an unknown number of dimensions void tgfRecursiveLoop(int depth) { // Set up a loop and go down to the next level if(depth < nDim) { for(tgf_curr[depth] = tgf_start[depth]; tgf_curr[depth] <= tgf_end[depth]; tgf_curr[depth]++) { tgfRecursiveLoop(depth+1); } } // We're at the bottom -- calculate the contribution to our current position else { // Make sure this is a real bin before we get going... int i = bin2index(tgf_curr); if(i != -1) { // It's a real bin, or at least it wraps to a real bin. // Calculate a center for it. float[] bin_center = centerOf(tgf_curr); float dist_2 = distanceSquared(bin_center, tgf_pt); float gaussian = tgf_a * (float)Math.exp( -dist_2 / tgf_b_2 ); lookupTable[i] += gaussian; } } } //}}} //{{{ Cosines //################################################################################################## /** * Calculates the contribution of this point to neighboring bins using a cosine mask. * The function is scaled such that regardless of the mask radius, it encloses a constant * total area/volume/etc. * *

    The formula: (1/a^n)*f(n)*{ [cos(pi*x/a)+1] / 2 } *
    where f(n) is an unknown function that corrects the constant (but arbitrary) total area/volume/etc. * to be exactly 1.0, and is dependent only on the number of dimensions the table covers. * * * nf(n) * 11 / 2 = 0.5 * 21 / (pi - 4/pi) = 0.535230730883 * 31 / [ 4*pi/3 - 8/(pi^2) ] = 0.29601381267 * 4??? * * * @param pt the point to tally * @param mask the mask radius, a */ public void tallyCosine(float[] pt, float mask) { float scale = 1.0f / (float)Math.pow(mask, nDim); tallyCosine(pt, mask, scale); } //################################################################################################## /** * Calculates the contribution of this point to neighboring bins using a cosine mask. * This mask is very similar to the Gaussian but does actually reach zero at a finite distance. * * @param pt the point to tally * @param mask the mask radius (where the function falls to zero) * @param scale multiplier for the whole function (1 is typical) */ public void tallyCosine(float[] pt, float mask, float scale) { realcount++; // hijacks the tgfXXX public variables! tgf_pt = pt; // determine the coefficients tgf_b = mask / (float)Math.PI; // we want to sample from -pi to +pi tgf_a = scale; tgf_mask_2 = mask * mask; // set up the limits of exploration for(int i = 0; i < nDim; i++) { // round() is the best choice, b/c the half-bin marks correspond to the point // where the function will be evaluated anyway... // Bin numbers may be negative, or too large. It will be taken care of later. tgf_start[i] = Math.round((pt[i]-minVal[i]-mask)/wBin[i]); tgf_end[i] = Math.round((pt[i]-minVal[i]+mask)/wBin[i]); tgf_curr[i] = tgf_start[i]; } cosRecursiveLoop(0); } // Use recursion to loop over an unknown number of dimensions void cosRecursiveLoop(int depth) { // Set up a loop and go down to the next level if(depth < nDim) { for(tgf_curr[depth] = tgf_start[depth]; tgf_curr[depth] <= tgf_end[depth]; tgf_curr[depth]++) { cosRecursiveLoop(depth+1); } } // We're at the bottom -- calculate the contribution to our current position else { // Make sure this is a real bin before we get going... int i = bin2index(tgf_curr); if(i != -1) { // It's a real bin, or at least it wraps to a real bin. // Calculate a center for it. float[] bin_center = centerOf(tgf_curr); float dist = distanceSquared(bin_center, tgf_pt); // Doing this prevents us from inadvertently // including negative values in our sum. if(dist < tgf_mask_2) { dist = (float)Math.sqrt(dist); //float cosine = Math.max(0, tgf_a * (float)Math.cos( dist/tgf_b )); // Function varies from 0 to 2, as in published Rama/C-beta paper float cosine = tgf_a * (float)(Math.cos(dist/tgf_b) + 1.0); lookupTable[i] += cosine; } } } } //}}} //{{{ zero, scale, normalize, standardize, transformLog, fractionLessThan //################################################################################################## /** * Zeros out every bin. Good for starting over ;) */ public void zero() { realcount = 0; for(int i = 0; i < lookupTable.length; i++) lookupTable[i] = 0.0f; } /** * Scales every bin. Useful for correcting the effects of tallyXXX(). * * @param f the scaling factor to multiply by */ public void scale(float f) { for(int i = 0; i < lookupTable.length; i++) lookupTable[i] *= f; } /** * "Normalizes" the table such that the sum of all bins is equal to the number of points tallied * divided by the product of the bin width in each dimension. * In other words, it ensures each tallied point contributed (approximately) 1 unit of area/volume/etc to the trace. * This is never a problem with tallySimple(), but is inherent in tallyGaussian() and tallyCosine(). */ public void normalize() { float f = 1; for(int i = 0; i < nDim; i++) f *= wBin[i]; scale( (float)realcount / f / totalCount() ); } /** * Scales all the values of the table such that the greatest value in the table is equal to some specified value (e.g., 1.0). * * @param max the top end of the scale the table should lie on. */ public void standardize(float max) { scale( max / maxValue() ); } /** * Transforms every value v in the table on a log scale. * The mapping v --> v' is as follows: *

    v' = ln(v+1) *

    The 'plus one' keeps values of zero equal to zero. */ public void transformLog() { for(int i = 0; i < lookupTable.length; i++) lookupTable[i] = (float)Math.log(lookupTable[i] + 1.0f); } /** * Transforms the table so each (new) value reflects the fraction of entries in * samples that is less than the (old) value stored in the table. * Afterward all table values will range between 1.0 (higher density than any entry in samples) * and 0.0 (lower density than any entry in samples). * @param samples an array of density values to use for comparison. Will be sorted by this function. */ public void fractionLessThan(float[] samples) { double n, size = samples.length; Arrays.sort(samples); // so we can do binary searches for(int i = 0; i < lookupTable.length; i++) { n = Arrays.binarySearch(samples, lookupTable[i]); // weird optimization was producing negative zeros in output //if(n < 0) n = -(n+1); // calculate insertion point if(n < 0) n = Math.abs(n+1); lookupTable[i] = (float)(n / size); } } //}}} //{{{ writeBinary(), constructor-from-binary-file //################################################################################################## /** * Saves the contents of the table to a file for re-use later. * * First, the name is written out as a C-style string (one byte per character, null terminated). * Then nDim is written, then all of minVal, all of maxVal, all of nBins, and all of doWrap. Next is realcount. * Finally, all of lookupTable is written out. In theory then, any other * application can also read and use this data. Note that high bytes are * written first. Some machines and platforms may need to take this into * account. * * @param out the stream to write to. * * @throws IOException if an IO error occurs. */ public void writeBinary(DataOutputStream out) throws IOException { out.writeBytes(ourName); // length bytes out.writeByte(0); // 1 byte out.writeInt(nDim); // 4 bytes int i; for(i = 0; i < nDim; i++) out.writeFloat(minVal[i]); // ndim*4 bytes for(i = 0; i < nDim; i++) out.writeFloat(maxVal[i]); // ndim*4 bytes for(i = 0; i < nDim; i++) out.writeInt(nBins[i]); // ndim*4 bytes for(i = 0; i < nDim; i++) out.writeBoolean(doWrap[i]); // ndim*1 bytes out.writeInt(realcount); // 4 bytes for(i = 0; i < lookupTable.length; i++) out.writeFloat(lookupTable[i]); // nvals*4 bytes } /** * Recreates an n-dimensional lookup table of floating point numbers from a file. * See writeBinary() for details of the format. * * @param in The stream to read from * * @throws IOException if there is a problem reading from the stream */ public NDFloatTable(DataInputStream in) throws IOException { // Extract our name StringBuffer sb = new StringBuffer(); char c; while( (c = (char)in.readUnsignedByte()) != 0 ) sb.append(c); ourName = sb.toString(); // How many dimensions? nDim = in.readInt(); // Allocate storage for minVal, maxVal, nBins, doWrap minVal = new float[nDim]; maxVal = new float[nDim]; nBins = new int[nDim]; doWrap = new boolean[nDim]; // Read them in int i; for(i = 0; i < nDim; i++) minVal[i] = in.readFloat(); for(i = 0; i < nDim; i++) maxVal[i] = in.readFloat(); for(i = 0; i < nDim; i++) nBins[i] = in.readInt(); for(i = 0; i < nDim; i++) doWrap[i] = in.readBoolean(); // Get the number of real points realcount = in.readInt(); // Calculate the bin widths. wBin = new float[nDim]; for(i = 0; i < nDim; i++) wBin[i] = (maxVal[i] - minVal[i]) / nBins[i]; // Allocate storage for the tgfXXX variables tgf_start = new int[nDim]; tgf_end = new int[nDim]; tgf_curr = new int[nDim]; // Allocate storage for the vaXXX variables va_home = new int[nDim]; va_home_ctr = new float[nDim]; va_neighbor = new int[nDim]; va_current = new int[nDim]; va_contrib = new float[nDim]; // Calculate number of entries in lookupTable int n_entries = 1; for(i = 0; i < nDim; i++) n_entries *= nBins[i]; // Allocate table and initialize it lookupTable = new float[n_entries]; //realcount = 0; Must have been a mistake! for(i = 0; i < lookupTable.length; i++) lookupTable[i] = in.readFloat(); } //}}} //{{{ writeText() //################################################################################################## /** * Writes out a human-readable version of the data in this table. * Format is self-documenting; lines begining with a hash (#) are comments * @param ps the stream to write to */ public void writeText(PrintStream ps) { int i; ps.println("# Table name/description"); ps.println("\""+ourName+"\""); ps.println("# Number of dimensions"); ps.println(nDim); ps.println("# For each dimension, 1 to "+nDim+": lower_bound upper_bound number_of_bins wrapping"); for(i = 0; i < nDim; i++) { ps.print(minVal[i]); ps.print(" "); ps.print(maxVal[i]); ps.print(" "); ps.print(nBins[i]); ps.print(" "); ps.print(doWrap[i]); ps.println(); } ps.println("# List of table values. For each dimension, define step_size as"); ps.println("# (upper_bound - lower_bound) / number_of_bins "); ps.println("#"); ps.println("# In each dimension, sampling starts at lower_bound + (step_size/2),"); ps.println("# continues at intervals of step_size, and does not exceed upper_bound."); ps.println("# There are thus number_of_bins samples along that dimension."); ps.println("#"); ps.println("# Index for dimension 1 increases most slowly, index for dimension "+nDim); ps.println("# increases most quickly. Line breaks are arbitrary (for readability)."); ps.println("#"); ps.println("# More details from http://kinemage.biochem.duke.edu"); for(i = 0; i < lookupTable.length; ) { ps.print(lookupTable[i]); if( ++i % 6 == 0 ) ps.println(); else ps.print(" "); } } //}}} //{{{ get/set functions //################################################################################################## /** * Gets the identifier string associated with this table. * @return the name of the table */ public String getName() { return ourName; } /** * Sets the identifier string associated with this table. * param name the name of the table */ public void setName(String name) { ourName = name; } /** * Gets the number of dimensions for this table. * @return number of dimensions in the table */ public int getDimensions() { return nDim; } /** * Gets the minimum bounds for this table. * @return minimum bounds for this table */ public float[] getMinBounds() { float[] retval = new float[nDim]; System.arraycopy(minVal, 0, retval, 0, nDim); return retval; } /** * Gets the maximum bounds for this table. * @return maximum bounds for this table */ public float[] getMaxBounds() { float[] retval = new float[nDim]; System.arraycopy(maxVal, 0, retval, 0, nDim); return retval; } /** * Gets the number of bins for this table. * @return number of bins for this table */ public int[] getBins() { int[] retval = new int[nDim]; System.arraycopy(nBins, 0, retval, 0, nDim); return retval; } /** * Gets the wrapping status for this table. * @return number of bins for this table */ public boolean[] getWrap() { boolean[] retval = new boolean[nDim]; System.arraycopy(doWrap, 0, retval, 0, nDim); return retval; } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/rotarama/Rotamer.java0000644000000000000000000011102111744305702023351 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.rotarama; //import java.awt.*; //import java.awt.event.*; import java.io.*; //import java.net.*; import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import chiropraxis.sc.SidechainAngles2; import driftwood.moldb2.*; //}}} /** * Rotamer is a utility class for * evaluating rotamer quality in a protein model. * *

    Copyright (C) 2002-2003 by Ian W. Davis. All rights reserved. *
    Begun on Tue Nov 19 12:12:30 EST 2002 */ public class Rotamer //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## static private Rotamer instance = null; /** Maps 3-letter res code to NDFT: Map */ HashMap tables; /** Maps lower case 3-letter codes to Lists of NamedRot objects */ HashMap names; /** Defines geometry (how to measure chi angles, how many, etc */ SidechainAngles2 scAngles2; //}}} //{{{ getInstance, freeInstance //################################################################################################## /** * Retrieves the current Rotamer instance, or * creates it and loads the data tables from disk * if (1) this method has never been called before * or (2) this method has not been called since * freeInstance() was last called. * If creation fails due to missing resource data, * an IOException will be thrown. * @throws IOException if a Rotamer instance could not be created */ static public Rotamer getInstance() throws IOException { if(instance != null) return instance; else return (instance = new Rotamer()); } /** * Frees the internal reference to the allocated Rotamer object. * It will be GC'ed when all references to it expire. * Future calls to getInstance() will allocate a new Rotamer object. * This function allows sneaky users to have more than one Rotamer * object in memory at once. This is generally a bad idea, as they're * really big, but we won't stop you if you're sure that's what you want. */ static public void freeInstance() { instance = null; } //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @throws IOException if the needed resource(s) can't be loaded from the JAR file * @throws NoSuchElementException if the resource is missing a required entry */ private Rotamer() throws IOException { loadTablesFromJar(); loadRotamerNames(); this.scAngles2 = new SidechainAngles2(); } //}}} //{{{ dumpRotamerNames public String dumpRotamerNames() { String allRotamerNames = ""; loadRotamerNames(); Iterator keys = names.keySet().iterator(); while (keys.hasNext()) { String resName = (String) keys.next(); ArrayList rotaList = (ArrayList) names.get(resName); Iterator namedRots = rotaList.iterator(); while (namedRots.hasNext()) { NamedRot rot = (NamedRot) namedRots.next(); String bounds = Arrays.toString(rot.bounds); allRotamerNames = allRotamerNames+resName+" "+rot.getName()+"="+bounds.substring(1, bounds.length()-1)+"\n"; } } return allRotamerNames; } //}}} //{{{ loadTablesFromJar //################################################################################################## private void loadTablesFromJar() throws IOException { tables = new HashMap(30); NDFloatTable ndft; tables.put("ser", loadTable("rota500/ser.ndft")); tables.put("thr", loadTable("rota500/thr.ndft")); tables.put("cys", loadTable("rota500/cys.ndft")); tables.put("val", loadTable("rota500/val.ndft")); tables.put("pro", loadTable("rota500/pro.ndft")); tables.put("leu", loadTable("rota500/leu.ndft")); tables.put("ile", loadTable("rota500/ile.ndft")); tables.put("trp", loadTable("rota500/trp.ndft")); tables.put("asp", loadTable("rota500/asp.ndft")); tables.put("asn", loadTable("rota500/asn.ndft")); tables.put("his", loadTable("rota500/his.ndft")); ndft = loadTable("rota500/phetyr.ndft"); tables.put("phe", ndft); tables.put("tyr", ndft); ndft = loadTable("rota500/met.ndft"); tables.put("met", ndft); tables.put("mse", ndft); // seleno-Met tables.put("glu", loadTable("rota500/glu.ndft")); tables.put("gln", loadTable("rota500/gln.ndft")); tables.put("lys", loadTable("rota500/lys.ndft")); tables.put("arg", loadTable("rota500/arg.ndft")); } private NDFloatTable loadTable(String path) throws IOException { InputStream is = this.getClass().getResourceAsStream(path); if(is == null) throw new IOException("Missing resource"); DataInputStream dis = new DataInputStream(new BufferedInputStream(is)); NDFloatTable tab = new NDFloatTable(dis); dis.close(); return tab; } //}}} //{{{ loadRotamerNames //################################################################################################## private void loadRotamerNames() { // These bins are often WAY too big -- the point is to partition space first, // and use the empirical distributions to decide if it's valid or not. // Box boundaries are inclusive, so a point on the border could go either way. // In those cases, though, it really doesn't matter, so it can be arbitrary. // All boundaries are on a non-cyclic 0-360 or 0-180 grid. // Some rotamers need more than one box to account for this. // Boundaries were determined by hand by IWD while looking at kins labeled // by an automatic hill-climbing algorithm. // name min1 max1 min2 max2 ... this.names = new HashMap(); ArrayList tbl; // thr, val, ser, cys // val has weird "extra" peaks above 1%: 125-135 and 345-360 tbl = new ArrayList(); tbl.add(new NamedRot("p", new int[] {0, 120})); tbl.add(new NamedRot("t", new int[] {120, 240})); tbl.add(new NamedRot("m", new int[] {240, 360})); names.put("thr", tbl); names.put("val", tbl); names.put("ser", tbl); names.put("cys", tbl); // pro tbl = new ArrayList(); tbl.add(new NamedRot("Cg_endo", new int[] {0, 180})); tbl.add(new NamedRot("Cg_exo", new int[] {180, 360})); names.put("pro", tbl); // phe, tyr tbl = new ArrayList(); tbl.add(new NamedRot("p90", new int[] {0, 120, 0, 180})); tbl.add(new NamedRot("t80", new int[] {120, 240, 0, 180})); tbl.add(new NamedRot("m-85", new int[] {240, 360, 35, 150})); tbl.add(new NamedRot("m-30", new int[] {240, 360, 0, 35})); tbl.add(new NamedRot("m-30", new int[] {240, 360, 150, 180})); names.put("phe", tbl); names.put("tyr", tbl); // trp tbl = new ArrayList(); tbl.add(new NamedRot("p-90", new int[] {0, 120, 180, 360})); tbl.add(new NamedRot("p90", new int[] {0, 120, 0, 180})); tbl.add(new NamedRot("t-105", new int[] {120, 240, 180, 305})); tbl.add(new NamedRot("t90", new int[] {120, 240, 0, 180})); tbl.add(new NamedRot("t90", new int[] {120, 240, 305, 360})); tbl.add(new NamedRot("m-90", new int[] {240, 360, 180, 305})); tbl.add(new NamedRot("m0", new int[] {240, 360, 305, 360})); tbl.add(new NamedRot("m0", new int[] {240, 360, 0, 45})); tbl.add(new NamedRot("m95", new int[] {240, 360, 45, 180})); names.put("trp", tbl); // his tbl = new ArrayList(); tbl.add(new NamedRot("p-80", new int[] {0, 120, 180, 360})); tbl.add(new NamedRot("p80", new int[] {0, 120, 0, 180})); tbl.add(new NamedRot("t-160", new int[] {120, 240, 130, 225})); tbl.add(new NamedRot("t-80", new int[] {120, 240, 225, 360})); tbl.add(new NamedRot("t60", new int[] {120, 240, 0, 130})); tbl.add(new NamedRot("m-70", new int[] {240, 360, 225, 360})); tbl.add(new NamedRot("m-70", new int[] {240, 360, 0, 20})); tbl.add(new NamedRot("m170", new int[] {240, 360, 130, 225})); tbl.add(new NamedRot("m80", new int[] {240, 360, 20, 130})); names.put("his", tbl); // leu tbl = new ArrayList(); tbl.add(new NamedRot("pp", new int[] {0, 120, 0, 120})); tbl.add(new NamedRot("pt?", new int[] {0, 120, 120, 240})); tbl.add(new NamedRot("tp", new int[] {120, 240, 0, 120})); tbl.add(new NamedRot("tt", new int[] {120, 240, 120, 240})); tbl.add(new NamedRot("tm?", new int[] {120, 240, 240, 360})); tbl.add(new NamedRot("mp", new int[] {240, 360, 0, 120})); tbl.add(new NamedRot("mt", new int[] {240, 360, 120, 240})); tbl.add(new NamedRot("mm?", new int[] {240, 360, 240, 360})); names.put("leu", tbl); // ile tbl = new ArrayList(); tbl.add(new NamedRot("pp", new int[] {0, 120, 0, 120})); tbl.add(new NamedRot("pt", new int[] {0, 120, 120, 240})); tbl.add(new NamedRot("tp", new int[] {120, 240, 0, 120})); tbl.add(new NamedRot("tt", new int[] {120, 240, 120, 240})); tbl.add(new NamedRot("tm?", new int[] {120, 240, 240, 360})); tbl.add(new NamedRot("mp", new int[] {240, 360, 0, 120})); tbl.add(new NamedRot("mt", new int[] {240, 360, 120, 240})); tbl.add(new NamedRot("mm", new int[] {240, 360, 240, 360})); names.put("ile", tbl); // asn tbl = new ArrayList(); tbl.add(new NamedRot("p-10", new int[] {0, 120, 180, 360})); tbl.add(new NamedRot("p30", new int[] {0, 120, 0, 180})); tbl.add(new NamedRot("t-20", new int[] {120, 240, 180, 360})); tbl.add(new NamedRot("t-20", new int[] {120, 240, 0, 10})); tbl.add(new NamedRot("t30", new int[] {120, 240, 10, 180})); tbl.add(new NamedRot("m-20", new int[] {240, 360, 300, 360})); tbl.add(new NamedRot("m-20", new int[] {240, 360, 0, 40})); tbl.add(new NamedRot("m-80", new int[] {240, 360, 200, 300})); tbl.add(new NamedRot("m120", new int[] {240, 360, 40, 200})); names.put("asn", tbl); // asp tbl = new ArrayList(); tbl.add(new NamedRot("p-10", new int[] {0, 120, 90, 180})); tbl.add(new NamedRot("p30", new int[] {0, 120, 0, 90})); tbl.add(new NamedRot("t0", new int[] {120, 240, 0, 45})); tbl.add(new NamedRot("t0", new int[] {120, 240, 120, 180})); tbl.add(new NamedRot("t70", new int[] {120, 240, 45, 120})); tbl.add(new NamedRot("m-20", new int[] {240, 360, 0, 180})); names.put("asp", tbl); // gln tbl = new ArrayList(); tbl.add(new NamedRot("pt20", new int[] {0, 120, 120, 240, 0, 360})); tbl.add(new NamedRot("pm0", new int[] {0, 120, 240, 360, 0, 360})); tbl.add(new NamedRot("pp0?", new int[] {0, 120, 0, 120, 0, 360})); tbl.add(new NamedRot("tp-100", new int[] {120, 240, 0, 120, 150, 300})); tbl.add(new NamedRot("tp60", new int[] {120, 240, 0, 120, 0, 150})); tbl.add(new NamedRot("tp60", new int[] {120, 240, 0, 120, 300, 360})); tbl.add(new NamedRot("tt0", new int[] {120, 240, 120, 240, 0, 360})); tbl.add(new NamedRot("tm0?", new int[] {120, 240, 240, 360, 0, 360})); tbl.add(new NamedRot("mp0", new int[] {240, 360, 0, 120, 0, 360})); tbl.add(new NamedRot("mt-30", new int[] {240, 360, 120, 240, 0, 360})); tbl.add(new NamedRot("mm-40", new int[] {240, 360, 240, 360, 0, 60})); tbl.add(new NamedRot("mm-40", new int[] {240, 360, 240, 360, 210, 360})); tbl.add(new NamedRot("mm100", new int[] {240, 360, 240, 360, 60, 210})); names.put("gln", tbl); // glu tbl = new ArrayList(); tbl.add(new NamedRot("pp20?", new int[] {0, 120, 0, 120, 0, 180})); tbl.add(new NamedRot("pt-20", new int[] {0, 120, 120, 240, 0, 180})); tbl.add(new NamedRot("pm0", new int[] {0, 120, 240, 360, 0, 180})); tbl.add(new NamedRot("tp10", new int[] {120, 240, 0, 120, 0, 180})); tbl.add(new NamedRot("tt0", new int[] {120, 240, 120, 240, 0, 180})); tbl.add(new NamedRot("tm-20", new int[] {120, 240, 240, 360, 0, 180})); tbl.add(new NamedRot("mp0", new int[] {240, 360, 0, 120, 0, 180})); tbl.add(new NamedRot("mt-10", new int[] {240, 360, 120, 240, 0, 180})); tbl.add(new NamedRot("mm-40", new int[] {240, 360, 240, 360, 0, 180})); names.put("glu", tbl); // met (mmt and tpt maybe two peaks each) tbl = new ArrayList(); tbl.add(new NamedRot("ppp?", new int[] {0, 120, 0, 120, 0, 120})); tbl.add(new NamedRot("ptp", new int[] {0, 120, 120, 240, 0, 120})); tbl.add(new NamedRot("ptt?", new int[] {0, 120, 120, 240, 120, 240})); tbl.add(new NamedRot("ptm", new int[] {0, 120, 120, 240, 240, 360})); tbl.add(new NamedRot("pmm?", new int[] {0, 120, 240, 360, 240, 360})); tbl.add(new NamedRot("tpp", new int[] {120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("tpp", new int[] {120, 240, 0, 120, 330, 360})); tbl.add(new NamedRot("tpt", new int[] {120, 240, 0, 120, 120, 330})); tbl.add(new NamedRot("ttp", new int[] {120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("ttt", new int[] {120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("ttm", new int[] {120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("tmt?", new int[] {120, 240, 240, 360, 120, 240})); tbl.add(new NamedRot("tmm?", new int[] {120, 240, 240, 360, 240, 360})); tbl.add(new NamedRot("mpp?", new int[] {240, 360, 0, 120, 0, 120})); tbl.add(new NamedRot("mpt?", new int[] {240, 360, 0, 120, 120, 240})); tbl.add(new NamedRot("mtp", new int[] {240, 360, 120, 240, 0, 120})); tbl.add(new NamedRot("mtt", new int[] {240, 360, 120, 240, 120, 240})); tbl.add(new NamedRot("mtm", new int[] {240, 360, 120, 240, 240, 360})); tbl.add(new NamedRot("mmt", new int[] {240, 360, 240, 360, 30, 240})); tbl.add(new NamedRot("mmm", new int[] {240, 360, 240, 360, 0, 30})); tbl.add(new NamedRot("mmm", new int[] {240, 360, 240, 360, 240, 360})); names.put("met", tbl); names.put("mse", tbl); // seleno-Met // lys (kept all b/c can't see 4D peaks; some never really occur) tbl = new ArrayList(); tbl.add(new NamedRot("pppp?", new int[] {0, 120, 0, 120, 0, 120, 0, 120})); tbl.add(new NamedRot("pppt?", new int[] {0, 120, 0, 120, 0, 120, 120, 240})); tbl.add(new NamedRot("pppm?", new int[] {0, 120, 0, 120, 0, 120, 240, 360})); tbl.add(new NamedRot("pptp?", new int[] {0, 120, 0, 120, 120, 240, 0, 120})); tbl.add(new NamedRot("pptt?", new int[] {0, 120, 0, 120, 120, 240, 120, 240})); tbl.add(new NamedRot("pptm?", new int[] {0, 120, 0, 120, 120, 240, 240, 360})); tbl.add(new NamedRot("ppmp?", new int[] {0, 120, 0, 120, 240, 360, 0, 120})); tbl.add(new NamedRot("ppmt?", new int[] {0, 120, 0, 120, 240, 360, 120, 240})); tbl.add(new NamedRot("ppmm?", new int[] {0, 120, 0, 120, 240, 360, 240, 360})); tbl.add(new NamedRot("ptpp?", new int[] {0, 120, 120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("ptpt", new int[] {0, 120, 120, 240, 0, 120, 120, 240})); tbl.add(new NamedRot("ptpm?", new int[] {0, 120, 120, 240, 0, 120, 240, 360})); tbl.add(new NamedRot("pttp", new int[] {0, 120, 120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("pttt", new int[] {0, 120, 120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("pttm", new int[] {0, 120, 120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("ptmp?", new int[] {0, 120, 120, 240, 240, 360, 0, 120})); tbl.add(new NamedRot("ptmt", new int[] {0, 120, 120, 240, 240, 360, 120, 240})); tbl.add(new NamedRot("ptmm?", new int[] {0, 120, 120, 240, 240, 360, 240, 360})); tbl.add(new NamedRot("pmpp?", new int[] {0, 120, 240, 360, 0, 120, 0, 120})); tbl.add(new NamedRot("pmpt?", new int[] {0, 120, 240, 360, 0, 120, 120, 240})); tbl.add(new NamedRot("pmpm?", new int[] {0, 120, 240, 360, 0, 120, 240, 360})); tbl.add(new NamedRot("pmtp?", new int[] {0, 120, 240, 360, 120, 240, 0, 120})); tbl.add(new NamedRot("pmtt?", new int[] {0, 120, 240, 360, 120, 240, 120, 240})); tbl.add(new NamedRot("pmtm?", new int[] {0, 120, 240, 360, 120, 240, 240, 360})); tbl.add(new NamedRot("pmmp?", new int[] {0, 120, 240, 360, 240, 360, 0, 120})); tbl.add(new NamedRot("pmmt?", new int[] {0, 120, 240, 360, 240, 360, 120, 240})); tbl.add(new NamedRot("pmmm?", new int[] {0, 120, 240, 360, 240, 360, 240, 360})); tbl.add(new NamedRot("tppp?", new int[] {120, 240, 0, 120, 0, 120, 0, 120})); tbl.add(new NamedRot("tppt?", new int[] {120, 240, 0, 120, 0, 120, 120, 240})); tbl.add(new NamedRot("tppm?", new int[] {120, 240, 0, 120, 0, 120, 240, 360})); tbl.add(new NamedRot("tptp", new int[] {120, 240, 0, 120, 120, 240, 0, 120})); tbl.add(new NamedRot("tptt", new int[] {120, 240, 0, 120, 120, 240, 120, 240})); tbl.add(new NamedRot("tptm", new int[] {120, 240, 0, 120, 120, 240, 240, 360})); tbl.add(new NamedRot("tpmp?", new int[] {120, 240, 0, 120, 240, 360, 0, 120})); tbl.add(new NamedRot("tpmt?", new int[] {120, 240, 0, 120, 240, 360, 120, 240})); tbl.add(new NamedRot("tpmm?", new int[] {120, 240, 0, 120, 240, 360, 240, 360})); tbl.add(new NamedRot("ttpp", new int[] {120, 240, 120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("ttpt", new int[] {120, 240, 120, 240, 0, 120, 120, 240})); tbl.add(new NamedRot("ttpm?", new int[] {120, 240, 120, 240, 0, 120, 240, 360})); tbl.add(new NamedRot("tttp", new int[] {120, 240, 120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("tttt", new int[] {120, 240, 120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("tttm", new int[] {120, 240, 120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("ttmp?", new int[] {120, 240, 120, 240, 240, 360, 0, 120})); tbl.add(new NamedRot("ttmt", new int[] {120, 240, 120, 240, 240, 360, 120, 240})); tbl.add(new NamedRot("ttmm", new int[] {120, 240, 120, 240, 240, 360, 240, 360})); tbl.add(new NamedRot("tmpp?", new int[] {120, 240, 240, 360, 0, 120, 0, 120})); tbl.add(new NamedRot("tmpt?", new int[] {120, 240, 240, 360, 0, 120, 120, 240})); tbl.add(new NamedRot("tmpm?", new int[] {120, 240, 240, 360, 0, 120, 240, 360})); tbl.add(new NamedRot("tmtp?", new int[] {120, 240, 240, 360, 120, 240, 0, 120})); tbl.add(new NamedRot("tmtt?", new int[] {120, 240, 240, 360, 120, 240, 120, 240})); tbl.add(new NamedRot("tmtm?", new int[] {120, 240, 240, 360, 120, 240, 240, 360})); tbl.add(new NamedRot("tmmp?", new int[] {120, 240, 240, 360, 240, 360, 0, 120})); tbl.add(new NamedRot("tmmt?", new int[] {120, 240, 240, 360, 240, 360, 120, 240})); tbl.add(new NamedRot("tmmm?", new int[] {120, 240, 240, 360, 240, 360, 240, 360})); tbl.add(new NamedRot("mppp?", new int[] {240, 360, 0, 120, 0, 120, 0, 120})); tbl.add(new NamedRot("mppt?", new int[] {240, 360, 0, 120, 0, 120, 120, 240})); tbl.add(new NamedRot("mppm?", new int[] {240, 360, 0, 120, 0, 120, 240, 360})); tbl.add(new NamedRot("mptp?", new int[] {240, 360, 0, 120, 120, 240, 0, 120})); tbl.add(new NamedRot("mptt", new int[] {240, 360, 0, 120, 120, 240, 120, 240})); tbl.add(new NamedRot("mptm?", new int[] {240, 360, 0, 120, 120, 240, 240, 360})); tbl.add(new NamedRot("mpmp?", new int[] {240, 360, 0, 120, 240, 360, 0, 120})); tbl.add(new NamedRot("mpmt?", new int[] {240, 360, 0, 120, 240, 360, 120, 240})); tbl.add(new NamedRot("mpmm?", new int[] {240, 360, 0, 120, 240, 360, 240, 360})); tbl.add(new NamedRot("mtpp", new int[] {240, 360, 120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("mtpt", new int[] {240, 360, 120, 240, 0, 120, 120, 240})); tbl.add(new NamedRot("mtpm?", new int[] {240, 360, 120, 240, 0, 120, 240, 360})); tbl.add(new NamedRot("mttp", new int[] {240, 360, 120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("mttt", new int[] {240, 360, 120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("mttm", new int[] {240, 360, 120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("mtmp?", new int[] {240, 360, 120, 240, 240, 360, 0, 120})); tbl.add(new NamedRot("mtmt", new int[] {240, 360, 120, 240, 240, 360, 120, 240})); tbl.add(new NamedRot("mtmm", new int[] {240, 360, 120, 240, 240, 360, 240, 360})); tbl.add(new NamedRot("mmpp?", new int[] {240, 360, 240, 360, 0, 120, 0, 120})); tbl.add(new NamedRot("mmpt?", new int[] {240, 360, 240, 360, 0, 120, 120, 240})); tbl.add(new NamedRot("mmpm?", new int[] {240, 360, 240, 360, 0, 120, 240, 360})); tbl.add(new NamedRot("mmtp", new int[] {240, 360, 240, 360, 120, 240, 0, 120})); tbl.add(new NamedRot("mmtt", new int[] {240, 360, 240, 360, 120, 240, 120, 240})); tbl.add(new NamedRot("mmtm", new int[] {240, 360, 240, 360, 120, 240, 240, 360})); tbl.add(new NamedRot("mmmp?", new int[] {240, 360, 240, 360, 240, 360, 0, 120})); tbl.add(new NamedRot("mmmt", new int[] {240, 360, 240, 360, 240, 360, 120, 240})); tbl.add(new NamedRot("mmmm", new int[] {240, 360, 240, 360, 240, 360, 240, 360})); names.put("lys", tbl); // arg (again, some entries are dummies for peaks that never occur) tbl = new ArrayList(); tbl.add(new NamedRot("ppp_?", new int[] {0, 120, 0, 120, 0, 120, 0, 360})); tbl.add(new NamedRot("ppt_?", new int[] {0, 120, 0, 120, 120, 240, 0, 360})); tbl.add(new NamedRot("ppm_?", new int[] {0, 120, 0, 120, 240, 360, 0, 360})); tbl.add(new NamedRot("ptp85", new int[] {0, 120, 120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("ptp180", new int[] {0, 120, 120, 240, 0, 120, 120, 360})); tbl.add(new NamedRot("ptt85", new int[] {0, 120, 120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("ptt180", new int[] {0, 120, 120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("ptt-85", new int[] {0, 120, 120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("ptm85", new int[] {0, 120, 120, 240, 240, 360, 0, 120})); tbl.add(new NamedRot("ptm180", new int[] {0, 120, 120, 240, 240, 360, 120, 360})); tbl.add(new NamedRot("pmp_?", new int[] {0, 120, 240, 360, 0, 120, 0, 360})); tbl.add(new NamedRot("pmt_?", new int[] {0, 120, 240, 360, 120, 240, 0, 360})); tbl.add(new NamedRot("pmm_?", new int[] {0, 120, 240, 360, 240, 360, 0, 360})); tbl.add(new NamedRot("tpp85", new int[] {120, 240, 0, 120, 0, 120, 0, 120})); tbl.add(new NamedRot("tpp180", new int[] {120, 240, 0, 120, 0, 120, 120, 360})); tbl.add(new NamedRot("tpt85", new int[] {120, 240, 0, 120, 120, 240, 0, 120})); tbl.add(new NamedRot("tpt180", new int[] {120, 240, 0, 120, 120, 240, 120, 360})); tbl.add(new NamedRot("tpm_?", new int[] {120, 240, 0, 120, 240, 360, 0, 360})); tbl.add(new NamedRot("ttp85", new int[] {120, 240, 120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("ttp180", new int[] {120, 240, 120, 240, 0, 120, 120, 240})); tbl.add(new NamedRot("ttp-105", new int[] {120, 240, 120, 240, 0, 120, 240, 360})); tbl.add(new NamedRot("ttt85", new int[] {120, 240, 120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("ttt180", new int[] {120, 240, 120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("ttt-85", new int[] {120, 240, 120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("ttm105", new int[] {120, 240, 120, 240, 240, 360, 0, 120})); tbl.add(new NamedRot("ttm180", new int[] {120, 240, 120, 240, 240, 360, 120, 240})); tbl.add(new NamedRot("ttm-85", new int[] {120, 240, 120, 240, 240, 360, 240, 360})); tbl.add(new NamedRot("tmp_?", new int[] {120, 240, 240, 360, 0, 120, 0, 360})); tbl.add(new NamedRot("tmt_?", new int[] {120, 240, 240, 360, 120, 240, 0, 360})); tbl.add(new NamedRot("tmm_?", new int[] {120, 240, 240, 360, 240, 360, 0, 360})); tbl.add(new NamedRot("mpp_?", new int[] {240, 360, 0, 120, 0, 120, 0, 360})); tbl.add(new NamedRot("mpt_?", new int[] {240, 360, 0, 120, 120, 240, 0, 360})); tbl.add(new NamedRot("mpm_?", new int[] {240, 360, 0, 120, 240, 360, 0, 360})); tbl.add(new NamedRot("mtp85", new int[] {240, 360, 120, 240, 0, 120, 0, 120})); tbl.add(new NamedRot("mtp180", new int[] {240, 360, 120, 240, 0, 120, 120, 240})); tbl.add(new NamedRot("mtp-105", new int[] {240, 360, 120, 240, 0, 120, 240, 360})); tbl.add(new NamedRot("mtt85", new int[] {240, 360, 120, 240, 120, 240, 0, 120})); tbl.add(new NamedRot("mtt180", new int[] {240, 360, 120, 240, 120, 240, 120, 240})); tbl.add(new NamedRot("mtt-85", new int[] {240, 360, 120, 240, 120, 240, 240, 360})); tbl.add(new NamedRot("mtm105", new int[] {240, 360, 120, 240, 240, 360, 0, 120})); tbl.add(new NamedRot("mtm180", new int[] {240, 360, 120, 240, 240, 360, 120, 240})); tbl.add(new NamedRot("mtm-85", new int[] {240, 360, 120, 240, 240, 360, 240, 360})); tbl.add(new NamedRot("mmp_?", new int[] {240, 360, 240, 360, 0, 120, 0, 360})); tbl.add(new NamedRot("mmt85", new int[] {240, 360, 240, 360, 120, 240, 0, 120})); tbl.add(new NamedRot("mmt180", new int[] {240, 360, 240, 360, 120, 240, 120, 240})); tbl.add(new NamedRot("mmt-85", new int[] {240, 360, 240, 360, 120, 240, 240, 360})); tbl.add(new NamedRot("mmm180", new int[] {240, 360, 240, 360, 240, 360, 0, 240})); tbl.add(new NamedRot("mmm-85", new int[] {240, 360, 240, 360, 240, 360, 240, 360})); names.put("arg", tbl); } //}}} //{{{ CLASS: NamedRot //################################################################################################## private static class NamedRot { String name; int[] bounds; public NamedRot(String name, int[] bounds) { this.name = name; this.bounds = bounds; } // assumes input angles have already been wrapped public boolean contains(double[] ang) { for(int i = 0; i < bounds.length; i+=2) { int ii = i / 2; if(ang[ii] < bounds[i] || ang[ii] > bounds[i+1]) return false; } return true; } public String getName() { return name; } } //}}} //{{{ identify //################################################################################################## /** * Names the specified sidechain rotamer according to the conventions in the * Penultimate Rotamer Library. Returns null if the conformation can't be named. * This is ONLY meaningful if evaluate() returns >= 0.01 for the given conformation. * * @throws IllegalArgumentException if the residue type is unknown * @throws AtomException atoms or states are missing */ public String identify(Residue res, ModelState state) { return identify(res.getName(), scAngles2.measureChiAngles(res, state)); } /** * Names the specified sidechain rotamer according to the conventions in the * Penultimate Rotamer Library. Returns null if the conformation can't be named. * This is ONLY meaningful if evaluate() returns >= 0.01 for the given conformation. * * @throws IllegalArgumentException if the residue type is unknown */ public String identify(String rescode, double[] chiAngles) { rescode = rescode.toLowerCase(); for(int i = 0; i < chiAngles.length; i++) { chiAngles[i] = chiAngles[i] % 360; if(chiAngles[i] < 0) chiAngles[i] += 360; } // for these residues, the last chi angle is only 0 - 180 if("asp".equals(rescode) || "glu".equals(rescode) || "phe".equals(rescode) || "tyr".equals(rescode)) { int i = chiAngles.length - 1; chiAngles[i] = chiAngles[i] % 180; if(chiAngles[i] < 0) chiAngles[i] += 180; } Collection tbl = (Collection) names.get(rescode); if(tbl == null) throw new IllegalArgumentException("Unknown residue type"); if(chiAngles == null) throw new IllegalArgumentException("No chi angles supplied"); if("pro".equals(rescode)) { // Pro "technically" has 3 chis around the ring that get measured, // but they're highly correlated, so we use only chi1 for its // rotamer distribution, at least for now. DAK 120224 double[] newChiAngles = new double[] { chiAngles[0] }; chiAngles = newChiAngles; } //if(chiAngles.length < ndft.getDimensions()) // throw new IllegalArgumentException("Too few chi angles supplied"); for(int i = 0; i < chiAngles.length; i++) if(Double.isNaN(chiAngles[i])) throw new IllegalArgumentException("Some chi angles could not be measured"); for(Iterator iter = tbl.iterator(); iter.hasNext(); ) { NamedRot nr = (NamedRot) iter.next(); if(nr.contains(chiAngles)) return nr.getName(); } return null; } //}}} //{{{ evaluate //################################################################################################## /** * Evaluates the specified rotamer from 0.0 (worst) * to 1.0 (best). * @throws IllegalArgumentException if the residue type is unknown * @throws AtomException atoms or states are missing */ public double evaluate(Residue res, ModelState state) { return evaluate(res.getName(), scAngles2.measureChiAngles(res, state)); } /** * Evaluates the specified rotamer from 0.0 (worst) * to 1.0 (best). * @throws IllegalArgumentException if the residue type is unknown */ public double evaluate(String rescode, double[] chiAngles) { rescode = rescode.toLowerCase(); NDFloatTable ndft = (NDFloatTable)tables.get(rescode); if(ndft == null) throw new IllegalArgumentException("Unknown residue type"); if(chiAngles == null) throw new IllegalArgumentException("No chi angles supplied"); if("pro".equals(rescode)) { // Pro "technically" has 3 chis around the ring that get measured, // but they're highly correlated, so we use only chi1 for its // rotamer distribution, at least for now. DAK 120224 double[] newChiAngles = new double[] { chiAngles[0] }; chiAngles = newChiAngles; } if(chiAngles.length < ndft.getDimensions()) throw new IllegalArgumentException("Too few chi angles supplied"); for(int i = 0; i < chiAngles.length; i++) if(Double.isNaN(chiAngles[i])) throw new IllegalArgumentException("Some chi angles could not be measured"); float[] chis = new float[ chiAngles.length ]; for(int i = 0; i < chis.length; i++) chis[i] = (float)chiAngles[i]; return ndft.valueAt(chis); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/rotarama/CaspRotCor.java0000644000000000000000000003263011531212726023764 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.rotarama; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.*; import chiropraxis.mc.*; //}}} /** * CaspRotCor specializes RotCor for CASP assessment: * it requires standard CASP file nomenclature and automatically combines * model "segments" into complete models. * *

    Begun on Fri Jan 15 2010 *

    Copyright (C) 2010 by Daniel Keedy. All rights reserved. */ public class CaspRotCor extends RotCor { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## int numSegs = 0; // convenience variable - continually overwritten //}}} //{{{ Constructor(s) //############################################################################## public CaspRotCor() { super(); } //}}} //{{{ getName //############################################################################## /** * Strips prefixes and extensions from name to reach CASP format: * T0###[TS/AL]###_# * T0###[TS/AL]###_#_# */ public String getName(String filename) { // T0388TS002_1_cleanH.pdb // T0496TS283_1_1.pdb // T0999TS123_1.pdb String[] namePieces = Strings.explode(filename, '/'); String name = namePieces[namePieces.length-1]; if(name.length() < 15 || name.indexOf(".pdb") == -1) { throw new IllegalArgumentException( "Filename doesn't match CASP format! "+filename); } name = name.substring(0,14); if(name.substring(12,13).equals(".")) // T0999TS123_1.p { return name.substring(0,12); } else if(name.substring(12,13).equals("_")) { try // T0496TS283_1_1 { int segID = Integer.parseInt(name.substring(13,14)); return name; } catch(NumberFormatException ex) // T0388TS002_1_c { return name.substring(0,12); } } else throw new IllegalArgumentException( "Filename doesn't match CASP format! "+filename); } //}}} //{{{ get_ methods //############################################################################## /** Returns T0### part (target ID) of model name. */ public String getTargetID(String filename) { return getName(filename).substring(0, 5); } /** Returns TS or AL part of model name. */ public String getTSorAL(String filename) { return getName(filename).substring(5, 7); } /** Returns ### part (group ID) of model name. */ public String getGroupID(String filename) { return getName(filename).substring(7, 10); } /** Returns _# part (model ID) of model name. Does not * include possible additional _# segment ID characters. */ public String getModelID(String filename) { return getName(filename).substring(10,12); } /** Returns _# part (segment ID, after model ID) of * model name, or null if there is no segment ID. */ public String getSegmentID(String filename) { String name = getName(filename); if(name == null) return null; else if(name.length() == 14) return name.substring(12,14); else if(name.length() == 12) return null; else return null; // weird name length } //}}} //{{{ assessModels //############################################################################## /** * Performs rotcor assessment for all models individually against the target. * Overrides parent RotCor method! */ public void assessModels() { File mdlsDir = new File(mdlsDirname); String[] listing = mdlsDir.list(); if(listing == null) { System.err.println(mdlsDirname+" is an empty directory or does not exist!"); System.exit(1); } ArrayList mdlFilenames = new ArrayList(); for(int i = 0; i < listing.length; i++) mdlFilenames.add(listing[i]); Collections.sort(mdlFilenames); if(mode == RESIDUE) System.err.println("Ignoring -residue mode: supported by RotCor, not CaspRotCor"); System.out.println("Target:TargetCount:TSorAL:Group:Model:SegmentsUsed:TargetRotamers:ModelRotamers:Matches:RotCor"); // Keep track of segments we've combined into full models so we don't duplicate any. TreeSet pastSegs = new TreeSet(); for(int i = 0; i < mdlFilenames.size(); i++) // for each individual predicted model { String mdlFilename = mdlFilenames.get(i); if(mdlFilename.indexOf(".pdb") == -1) continue; // only consider PDBs if(pastSegs.contains(mdlFilename)) continue; // don't re-use segments if(getSegmentID(mdlFilename) != null) { // Start new segment TreeSet currSegs = new TreeSet(); currSegs.add(mdlFilename); pastSegs.add(mdlFilename); for(int j = 0; j < mdlFilenames.size(); j++) { if(i != j) { String othMdlFilename = mdlFilenames.get(j); if(othMdlFilename.indexOf(".pdb") != -1 && getTargetID(othMdlFilename).equals(getTargetID(mdlFilename)) && getGroupID(othMdlFilename).equals(getGroupID(mdlFilename)) && getModelID(othMdlFilename).equals(getModelID(mdlFilename))) { currSegs.add(othMdlFilename); // to combine now pastSegs.add(othMdlFilename); // so we don't re-use later } } } assessSegsModel(currSegs); } else { assessModel(mdlFilename); } } } //}}} //{{{ assessSegsModel //############################################################################## /** * Performs entire rotcor assessment for one set of CASP segments - * together comprising a full model - against the target. */ public void assessSegsModel(TreeSet segs) { Rotalyze rotalyze = new Rotalyze(); String repSeg = (String) segs.iterator().next(); // just to get target/model/groupID int mdlNumRotsSum = 0; int trgNumRotsSum = 0; int matchesSum = 0; double rotcorSum = 0.0; for(Iterator sItr = segs.iterator(); sItr.hasNext(); ) { String mdlFilename = (String) sItr.next(); try { Model mdl = extractModel(mdlsDirname+"/"+mdlFilename); if(mdl == null) continue; // Get rotamer names, then index by target residue HashMap tmpRotNames = rotalyze.getNames(mdl); HashMap mdlRotNames = alignModel(mdl, tmpRotNames); int[] tallies = tallyRotamers(mdlRotNames); mdlNumRotsSum += tallies[1]; trgNumRotsSum += tallies[0]; matchesSum += tallies[2]; rotcorSum += (double) tallies[2] / (double) tallies[0]; if(verbose) System.err.println("new rotcor: "+df.format(rotcorSum)); } catch(IOException ex) { System.err.println("Error reading file: "+mdlFilename); } } numSegs = segs.size(); int[] tallySums = new int[] {trgNumRotsSum, mdlNumRotsSum, matchesSum}; outputModel(repSeg, tallySums, rotcorSum); numSegs = 0; } //}}} //{{{ outputModel //############################################################################## /** * Outputs rotcor for a full model: already full or combined from segments. * Overrides parent method in RotCor! */ public void outputModel(String mdlFilename, int[] tallies, double rotcor) { // Target TargetCount TSorAL Group Model SegmentsUsed TargetRotamers ModelRotamers Matches RotCor System.out.println( trgName+":"+ trgCount+":"+ getTSorAL(mdlFilename)+":"+ getGroupID(mdlFilename)+":"+ getModelID(mdlFilename)+":"+ numSegs+":"+ tallies[0]+":"+ tallies[1]+":"+ tallies[2]+":"+ df.format(rotcor) ); } //}}} //{{{ main //############################################################################## public static void main(String[] args) { CaspRotCor mainprog = new CaspRotCor(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("CaspRotCor.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'CaspRotCor.help' ***\n"); else { try { streamcopy(is, System.err); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.rotarama.CaspRotCor version "+getVersion()+" build "+getBuild()); System.err.println("Copyright (C) 2010 by Daniel Keedy. All rights reserved."); } // Get version number String getVersion() { InputStream is = getClass().getClassLoader().getResourceAsStream("chiropraxis/version.props"); if(is == null) System.err.println("\n*** Unable to locate version number in 'version.props' ***\n"); else { try { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line = reader.readLine(); line = reader.readLine(); if(line != null && line.indexOf("version=") != -1) return line.substring( line.indexOf("=")+1 ); } catch(IOException ex) { ex.printStackTrace(); } } return "?.??"; } // Get build number String getBuild() { InputStream is = getClass().getClassLoader().getResourceAsStream("chiropraxis/buildnum.props"); if(is == null) System.err.println("\n*** Unable to locate build number in 'buildnum.props' ***\n"); else { try { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line = reader.readLine(); line = reader.readLine(); if(line != null && line.indexOf("buildnum=") != -1) return line.substring( line.indexOf("=")+1 ); } catch(IOException ex) { ex.printStackTrace(); } } return "yyyymmdd.????"; } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/rotarama/TauByPhiPsi.java0000644000000000000000000001354511531212726024112 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.rotarama; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * TauByPhiPsi computes an expected tau value, * or tau deviation, for a particular residue based on its * position on the Ramachandran plot (phi, psi) * and class (general, gly, pro, or pre-pro). * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Fri Jan 9 16:02:07 EST 2004 */ public class TauByPhiPsi //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## static private TauByPhiPsi instance = null; float[] phipsi = new float[2]; NDFloatTable genTable = null, glyTable = null, proTable = null, preproTable = null; //}}} //{{{ getInstance, freeInstance //################################################################################################## /** * Retrieves the current TauByPhiPsi instance, or * creates it and loads the data tables from disk * if (1) this method has never been called before * or (2) this method has not been called since * freeInstance() was last called. * If creation fails due to missing resource data, * an IOException will be thrown. * @throws IOException if a TauByPhiPsi instance could not be created */ static public TauByPhiPsi getInstance() throws IOException { if(instance != null) return instance; else return (instance = new TauByPhiPsi()); } /** * Frees the internal reference to the allocated TauByPhiPsi object. * It will be GC'ed when all references to it expire. * Future calls to getInstance() will allocate a new TauByPhiPsi object. * This function allows sneaky users to have more than one TauByPhiPsi * object in memory at once. This is generally a bad idea, as they're * really big, but we won't stop you if you're sure that's what you want. */ static public void freeInstance() { instance = null; } //}}} //{{{ Constructor(s) //############################################################################## /** * Creates a new TauByPhiPsi scorer. * @throws IOException if the required resources are not available */ private TauByPhiPsi() throws IOException { super(); InputStream sGen, sGly, sPro, sPrepro; sGen = this.getClass().getResourceAsStream("p_a_karplus_1996/tau-general.ndft"); sGly = this.getClass().getResourceAsStream("p_a_karplus_1996/tau-glycine.ndft"); sPro = this.getClass().getResourceAsStream("p_a_karplus_1996/tau-proline.ndft"); sPrepro = this.getClass().getResourceAsStream("p_a_karplus_1996/tau-prepro.ndft"); if(sGen == null || sGly == null || sPro == null || sPrepro == null) throw new IOException("Could not find required .ndft files"); DataInputStream dis; dis = new DataInputStream(new BufferedInputStream(sGen)); genTable = new NDFloatTable(dis); dis = new DataInputStream(new BufferedInputStream(sGly)); glyTable = new NDFloatTable(dis); dis = new DataInputStream(new BufferedInputStream(sPro)); proTable = new NDFloatTable(dis); dis = new DataInputStream(new BufferedInputStream(sPrepro)); preproTable = new NDFloatTable(dis); sGen.close(); sGly.close(); sPro.close(); sPrepro.close(); } //}}} //{{{ getExpectedTau //################################################################################################## /** * Returns the expected tau angle (N-CA-C) for the given residue, * given its class (general, gly, pro, pre-pro) and phi,psi. * @throws ResidueException if no angle can be calculated * for this residue. */ public double getExpectedTau(Model model, Residue res, ModelState state) throws ResidueException { double phi, psi, angle; try { phi = AminoAcid.getPhi(model, res, state); psi = AminoAcid.getPsi(model, res, state); } catch(AtomException ex) { throw new ResidueException("Can't get tau angle for "+res+": "+ex.getMessage()); } phipsi[0] = (float)phi; phipsi[1] = (float)psi; String name = res.getName(); if(name.equals("GLY")) angle = glyTable.valueAt(phipsi); else if(name.equals("PRO")) angle = proTable.valueAt(phipsi); else if(AminoAcid.isPrepro(model, res, state)) angle = preproTable.valueAt(phipsi); else angle = genTable.valueAt(phipsi); return angle; } //}}} //{{{ getTauDeviation //################################################################################################## /** * Returns the deviation of this residue's tau angle (N-CA-C) from expected, * given its class (general, gly, pro, pre-pro) and phi,psi. * @throws ResidueException if no angle can be calculated * for this residue. */ public double getTauDeviation(Model model, Residue res, ModelState state) throws ResidueException { try { double expected = getExpectedTau(model, res, state); double actual = AminoAcid.getTau(res, state); return actual - expected; } catch(AtomException ex) { throw new ResidueException("Couldn't calculate tau: "+ex.getMessage()); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/rotarama/LocalRotarama.java0000644000000000000000000004471411531212726024474 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.rotarama; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.*; import chiropraxis.mc.*; import molikin.logic.BallAndStickLogic; //}}} /** * LocalRotarama expresses local rotamer and Ramachandran * scores, with either text or kinemage output. * *

    Begun on Tue Feb 2 2010 *

    Copyright (C) 2010 by Daniel Keedy. All rights reserved. */ public class LocalRotarama //extends ... implements ... { //{{{ Constants private final static String ROTA = "rotamer"; private final static String RAMA = "Ramachandran"; private final String AVERAGES = "Average local rotarama"; private final String KINEMAGE = "Local rotarama kinemage"; private final DecimalFormat df = new DecimalFormat("#.###"); private final String aaNames = "ALA ARG ASN ASP CYS GLU GLN GLY HIS ILE" +"LEU LYS MET PHE PRO SER THR TRP TYR VAL"; //}}} //{{{ CLASS: SimpleResAligner //############################################################################## public static class SimpleResAligner implements Alignment.Scorer { // High is good, low is bad. public double score(Object a, Object b) { Residue r = (Residue) a; Residue s = (Residue) b; if(r.getName().equals(s.getName())) return 4; // match else return -1; // mismatch } public double open_gap(Object a) { return -8; } public double extend_gap(Object a) { return -2; } } //}}} //{{{ Variable definitions //############################################################################## private boolean verbose = false; private String mode = AVERAGES; private String filename, filenameRef; private Model model, modelRef; private int nPrev = 2, nNext = 2; //}}} //{{{ Constructor(s) //############################################################################## public LocalRotarama() { super(); } //}}} //{{{ printKinColoredByScore //############################################################################## private void printKinColoredByScore() throws IOException { BallAndStickLogic bsl = new BallAndStickLogic(); bsl.doProtein = true; bsl.doMainchain = true; bsl.doSidechains = true; bsl.colorBy = BallAndStickLogic.COLOR_BY_ROTARAMA; bsl.rota = getRotaScores(); bsl.rama = getRamaScores(); String title = ""; ModelState state = model.getState(); if(state != null && state.getName().length() >= 4) title += state.getName().substring(0,4).toLowerCase()+" "; if(modelRef != null) { ModelState stateRef = modelRef.getState(); if(stateRef != null && stateRef.getName().length() >= 4) title += " vs. "+stateRef.getName().substring(0,4).toLowerCase()+" "; } title += "rotarama"; System.out.println("@kinemage {"+title+"}"); System.out.println("@group {"+title+"} dominant"); Collection chains = model.getChainIDs(); for(Iterator ci = chains.iterator(); ci.hasNext(); ) { String chainID = (String) ci.next(); if(model.getChain(chainID) != null) { System.out.println("@subgroup {chain "+chainID+"} dominant"); String mcColor = "blue"; // shouldn't matter... Set residues = model.getChain(chainID); PrintWriter out = new PrintWriter(System.out); bsl.printKinemage(out, model, residues, mcColor); } }//chain } //}}} //{{{ printAverageLocalScores //############################################################################## private void printAverageLocalScores() throws IOException { // XXX-TODO: normalization vs. ref! if(modelRef != null) System.exit(1); System.out.println("res\tnearby\tscored\trota\trama\tavg"); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(aaNames.indexOf(res.getName()) == -1) continue; try { // Re-rota/ramalyzes each time, but the cost in time is only // ~20%, and it's nice and simple to have only one calcLocalScore() // method which conveniently is accessible to the outside world. int nn = new Neighborhood(res, model, nPrev, nNext).getMembers().size(); int nr = calcLocalNumScored(res, model); double ro = calcLocalScore(res, model, this.ROTA); double ra = calcLocalScore(res, model, this.RAMA); double av = 0.5 * (ro + ra); System.out.println(res+","+nn+","+nr+"," +df.format(ro)+","+df.format(ra)+","+df.format(av)); } catch(IllegalArgumentException ex) { System.err.println("bad local score type for "+res); } } } //}}} //{{{ get(Rota/Rama)Scores //############################################################################## private HashMap getRotaScores() throws IOException { HashMap rota = new Rotalyze().getEvals(model); if(modelRef == null) return rota; HashMap rotaRef = new Rotalyze().getEvals(modelRef); return normalizeScores(model, rota, modelRef, rotaRef); } private HashMap getRamaScores() throws IOException { HashMap rama = new Ramalyze().getEvals(model); if(modelRef == null) return rama; HashMap ramaRef = new Ramalyze().getEvals(modelRef); return normalizeScores(model, rama, modelRef, ramaRef); } /** * Subtracts reference scores from primary model scores so scores reflect * difference relative to reference. * Shows which areas are more or less rotameric for different models * of the same protein. */ private HashMap normalizeScores(Model m1, HashMap r1, Model m2, HashMap r2) { Alignment align = Alignment.needlemanWunsch( m1.getResidues().toArray(), m2.getResidues().toArray(), new SimpleResAligner()); if(verbose) { System.err.println("Residue alignments:"); for(int i = 0; i < align.a.length; i++) System.err.println(" "+align.a[i]+" <==> "+align.b[i]); System.err.println(); } for(int i = 0; i < align.a.length; i++) { Residue ali1 = (Residue) align.a[i], ali2 = (Residue) align.b[i]; if(ali1 == null || aaNames.indexOf(ali1.getName()) == -1 || ali1.getName().equals("GLY") || ali1.getName().equals("ALA")) continue; Residue res1 = null, res2 = null; for(Iterator iter = r1.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(res.getCNIT().equals(ali1.getCNIT())) res1 = res; } for(Iterator iter = r2.keySet().iterator(); iter.hasNext(); ) { Residue res = (Residue) iter.next(); if(res.getCNIT().equals(ali2.getCNIT())) res2 = res; } if(res1 == null || res2 == null) // can't normalize - remove residue { r1.remove(res1); } else // can actually normalize { double scoreDiff = r1.get(res1) - r2.get(res2); r1.put(res1, scoreDiff); } } return r1; } //}}} //{{{ calcLocalNumScored //############################################################################## public static int calcLocalNumScored(Residue res, Model model) throws IOException { HashMap rota = new Rotalyze().getEvals(model); HashMap rama = new Ramalyze().getEvals(model); int n = 0; for(Residue oth : new Neighborhood(res, model, 2, 2).getMembers()) if(rota.keySet().contains(oth) || rama.keySet().contains(oth)) n++; return n; } //}}} //{{{ calcLocalScore //############################################################################## /** * Calculates the average rotamer or Ramachandran percentile score for a * local region around the provided residue in the provided model. * May be called statically to retrieve rotamer or Ramachandran information * on a single residue-centered region of interest. * @param type one of the ROTA or RAMA constants defined in this class * @throws IOException if Rotalyze or Ramalyze fails to evaulate the model * @throws IllegalArgumentException if type is not one of the ROTA or RAMA * constants defined in this class */ public static double calcLocalScore(Residue res, Model model, String type) throws IOException, IllegalArgumentException { HashMap scores = null; if (type.equals(ROTA)) scores = new Rotalyze().getEvals(model); else if(type.equals(RAMA)) scores = new Ramalyze().getEvals(model); else throw new IllegalArgumentException("argument 'type' must be one " +"of the ROTA or RAMA String constants defined in LocalRotarama"); if(scores == null) // can this ever happen? { System.err.println("failed to produce "+type+" scores for "+model); return Double.NaN; } double score = 0; int n = 0; for(Residue member : new Neighborhood(res, model, 2, 2).getMembers()) { if(scores.keySet().contains(member)) { score += scores.get(member); n++; } } if(n == 0) return Double.NaN; // can't divide by 0 return score / (double) n; } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { if(filename == null) { showHelp(true); System.exit(1); } try { // Model of primary interest File file = new File(filename); if(file.isDirectory()) { System.err.println(file+" is a directory, silly goose!"); return; } CoordinateFile coords = new PdbReader().read(file); this.model = coords.getFirstModel(); String[] parts = Strings.explode(file.getName(), '/'); String filename = parts[parts.length-1]; // Reference model for "normalizing" scores of primary model (opt'l) if(filenameRef != null) { File fileRef = new File(filenameRef); if(fileRef.isDirectory()) { System.err.println(fileRef+" is a directory, silly goose!"); return; } CoordinateFile coordsRef = new PdbReader().read(fileRef); this.modelRef = coordsRef.getFirstModel(); String[] partsRef = Strings.explode(fileRef.getName(), '/'); String filenameRef = partsRef[partsRef.length-1]; } if(filenameRef == null) System.err.println(mode+" for "+filename); else System.err.println(mode+" for "+filename+" relative to "+filenameRef); try { if (mode.equals(KINEMAGE)) printKinColoredByScore(); else if(mode.equals(AVERAGES)) printAverageLocalScores(); } catch(IOException ex) { System.err.println("failed to rota/Ramalyze "+model); } } catch(IOException ex) { System.err.println("Error rotalyzing/Ramalyzing model: "+filename); } } public static void main(String[] args) { LocalRotarama mainprog = new LocalRotarama(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("LocalRotarama.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'LocalRotarama.help' ***\n"); else { try { streamcopy(is, System.err); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.rotarama.LocalRotarama version "+getVersion()+" build "+getBuild()); System.err.println("Copyright (C) 2010 by Daniel Keedy. All rights reserved."); } // Get version number String getVersion() { InputStream is = getClass().getClassLoader().getResourceAsStream("chiropraxis/version.props"); if(is == null) System.err.println("\n*** Unable to locate version number in 'version.props' ***\n"); else { try { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line = reader.readLine(); line = reader.readLine(); if(line != null && line.indexOf("version=") != -1) return line.substring( line.indexOf("=")+1 ); } catch(IOException ex) { ex.printStackTrace(); } } return "?.??"; } // Get build number String getBuild() { InputStream is = getClass().getClassLoader().getResourceAsStream("chiropraxis/buildnum.props"); if(is == null) System.err.println("\n*** Unable to locate build number in 'buildnum.props' ***\n"); else { try { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line = reader.readLine(); line = reader.readLine(); if(line != null && line.indexOf("buildnum=") != -1) return line.substring( line.indexOf("=")+1 ); } catch(IOException ex) { ex.printStackTrace(); } } return "yyyymmdd.????"; } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if(filename == null) filename = arg; else if(filenameRef == null) filenameRef = arg; else { showHelp(true); System.exit(1); } } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-verbose") || flag.equals("-v")) { verbose = true; } else if(flag.equals("-kin") || flag.equals("-k")) { mode = KINEMAGE; } else if(flag.equals("-avg") || flag.equals("-a")) { mode = AVERAGES; } else if(flag.equals("-n")) { try { String[] parts = Strings.explode(param, ','); nPrev = Integer.parseInt(parts[0]); nNext = Integer.parseInt(parts[1]); } catch(NumberFormatException ex) { System.err.println("Proper use of flag: -n=#,# "+ "(#s of residues N-ward and C-ward to include for averaging)"); } } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/rotarama/RotCor.java0000644000000000000000000007114711531212730023156 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.rotarama; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.*; import chiropraxis.mc.*; //}}} /** * RotCor compares rotamer names for multiple models vs. a single * target. It reports the rotcor score. * *

    Begun on Fri Jan 15 2010 *

    Copyright (C) 2010 by Daniel Keedy. All rights reserved. */ public class RotCor //extends ... implements ... { //{{{ Constants DecimalFormat df = new DecimalFormat("0.000"); public static final String NO_CONSENSUS_ROTNAME = "NO_CONSENSUS"; public static final String MODEL = "model-level output"; public static final String RESIDUE = "residue-level output"; //}}} //{{{ Variable definitions //############################################################################## boolean verbose = false; Object mode = MODEL; String trgFilename; // PDB file String mdlsDirname; // directory String homsDirname; // directory Model trg; String trgName; int trgCount; HashMap trgsRotNames; // only used if multiple target MODELs found HashMap trgRotNames; // (reflects consensus if multiple target MODELs found) HashMap mdlsRotNames; // only used in RESIDUE mode //}}} //{{{ Constructor(s) //############################################################################## public RotCor() { super(); } //}}} //{{{ prepTarget //############################################################################## public void prepTarget() { if(trgFilename.indexOf(".pdb") == -1) { System.err.println(trgFilename+" must be a .pdb file!"); System.exit(1); } File trgFile = new File(trgFilename); Rotalyze rotalyze = new Rotalyze(); String[] trgNamePieces = Strings.explode(trgFilename, '/'); trgName = trgNamePieces[trgNamePieces.length-1]; if(verbose) System.err.println("Rotalyzing "+trgName); trgName = trgName.substring(0, trgName.indexOf(".pdb")); try { CoordinateFile trgCoords = new PdbReader().read(trgFile); trg = trgCoords.getFirstModel(); // other methods use these residues for indexing trgCount = trgCoords.getModels().size(); if(trgCount == 1) { // Single target MODEL -- makes things simple trgRotNames = rotalyze.getNames(trg); // But still check that we're not using just one MODEL // of what should really be a multi-MODEL target for(Iterator hItr = trgCoords.getHeaders().iterator(); hItr.hasNext(); ) { String header = (String) hItr.next(); if(header.indexOf("REMARK") != -1 && header.indexOf(" - MODEL ") != -1) { // "REMARK T0474 - MODEL 20" (from CASP8) System.err.println("Warning! Header suggests target may" +" actually be multi-model: \""+header+"\""); } } } else { // Multiple target MODELs -- store rotnames across target MODELs for each residue System.err.println("Found >1 PDB-style MODELs in target ("+trgFilename+ ") -- calculating consensus rotamer at each position"); trgsRotNames = new HashMap(); for(Iterator mItr = trgCoords.getModels().iterator(); mItr.hasNext(); ) { Model currTrg = (Model) mItr.next(); trgRotNames = rotalyze.getNames(currTrg); // temporary storage storeTarget(currTrg, trgRotNames); } conductTargetConsensus(); } } catch(IOException ex) { System.err.println("Error rotalyzing target: "+trgFilename+"!"); } } //}}} //{{{ storeTarget //############################################################################## /** * Stores each target rotamer from one MODEL of a multi-MODEL target PDB. */ public void storeTarget(Model currTrg, HashMap trgRotNames) { for(Iterator iter1 = trgRotNames.keySet().iterator(); iter1.hasNext(); ) { // Rotamer we wanna store from current target MODEL Residue res = (Residue) iter1.next(); String rot = trgRotNames.get(res); // Find corresponding residue from target MODEL 1 Residue trgRes = null; for(Iterator iter2 = trg.getResidues().iterator(); iter2.hasNext(); ) { Residue tRes = (Residue) iter2.next(); if(tRes != null && tRes.getCNIT().equals(res.getCNIT())) trgRes = tRes; } if(trgRes == null) continue; // current target MODEL has extra tail or something // Add it to the arrays for this target residue String[] trgRotNamesOld = trgsRotNames.get(trgRes); String[] trgRotNamesNew; if(trgRotNamesOld != null) { trgRotNamesNew = new String[trgRotNamesOld.length+1]; for(int i = 0; i < trgRotNamesOld.length; i++) trgRotNamesNew[i] = trgRotNamesOld[i]; } else trgRotNamesNew = new String[1]; // "new" target residue trgRotNamesNew[trgRotNamesNew.length-1] = rot; // add trgsRotNames.put(trgRes, trgRotNamesNew); // re-store } } //}}} //{{{ conductTargetConsensus //############################################################################## /** * Defines consensus target rotname for each residue. * Only used if input target PDB had multiple MODELs. */ public void conductTargetConsensus() { trgRotNames = new HashMap(); for(Iterator rItr = trgsRotNames.keySet().iterator(); rItr.hasNext(); ) { Residue trgRes = (Residue) rItr.next(); String[] trgResRotNames = trgsRotNames.get(trgRes); String modalRotName = calcModalRotName(trgResRotNames); // modal rotname: most common across target MODELs double modalRotFrac = calcModalRotFrac(trgResRotNames); // how common this modal rotname is if(isConsensus(trgRes.getName(), modalRotFrac)) trgRotNames.put(trgRes, modalRotName); else trgRotNames.put(trgRes, this.NO_CONSENSUS_ROTNAME); } } //}}} //{{{ isConsensus //############################################################################## public boolean isConsensus(String aaName, double frac) { final String aa1chi = "CYS SER THR VAL PRO"; final String aa2chis = "ASN ASP HIS ILE LEU PHE TRP TYR"; final String aa3chis = "GLN GLU MET"; final String aa4chis = "ARG LYS"; if(aa1chi.indexOf(aaName) != -1 && frac >= 0.85) return true; if(aa2chis.indexOf(aaName) != -1 && frac >= 0.7 ) return true; if(aa3chis.indexOf(aaName) != -1 && frac >= 0.55) return true; if(aa4chis.indexOf(aaName) != -1 && frac >= 0.4 ) return true; return false; } //}}} //{{{ calcModalRotName //############################################################################## public String calcModalRotName(String[] names) { HashMap name_to_freq = new HashMap(); int tally = 0; for(String name : names) { if(name_to_freq.get(name) != null) { int freq = name_to_freq.get(name); name_to_freq.put(name, freq+1); } else { name_to_freq.put(name, 1); } tally++; } int maxFreq = -1; String maxName = null; for(Iterator nItr = name_to_freq.keySet().iterator(); nItr.hasNext(); ) { String name = (String) nItr.next(); int freq = name_to_freq.get(name); if(freq > maxFreq) { maxFreq = freq; maxName = name; } } return maxName; } //}}} //{{{ calcModalRotFrac //############################################################################## public double calcModalRotFrac(String[] names) { HashMap name_to_freq = new HashMap(); int tally = 0; for(String name : names) { if(name_to_freq.get(name) != null) { int freq = name_to_freq.get(name); name_to_freq.put(name, freq+1); } else { name_to_freq.put(name, 1); } tally++; } int maxFreq = -1; String maxName = null; for(Iterator nItr = name_to_freq.keySet().iterator(); nItr.hasNext(); ) { String name = (String) nItr.next(); int freq = name_to_freq.get(name); if(freq > maxFreq && !name.equals("OUTLIER")) { maxFreq = freq; maxName = name; } } return (1.0*maxFreq)/(1.0*tally); } //}}} //{{{ extractModel //############################################################################## public Model extractModel(String filename) throws IOException { File file = new File(filename); if(file.isDirectory()) return null; // skip nested directories if(verbose) System.err.println("Rotalyzing "+file); CoordinateFile coords = new PdbReader().read(file); if(coords.getModels().size() == 0) { System.err.println("Found 0 models in "+filename+" ... skipping!"); return null; } else { if(coords.getModels().size() > 1) { System.err.println("Found "+coords.getModels().size()+" models in " +filename+" ... only considering first one"); } Model mdl = coords.getFirstModel(); return mdl; } } //}}} //{{{ alignModel //############################################################################## /** * Uses sequence alignment to assign each model rotamer to a target residue. */ public HashMap alignModel(Model mdl, HashMap mdl_to_mdl) { // Align model onto target by sequence Alignment align = Alignment.alignChains( SubImpose.getChains(mdl), SubImpose.getChains(trg), new Alignment.NeedlemanWunsch(), new SubImpose.SimpleResAligner()); //if(verbose) //{ // System.err.println("Model <==> Target:"); // for(int i = 0; i < align.a.length; i++) // System.err.println(" "+align.a[i]+" <==> "+align.b[i]); // System.err.println(); //} // Assign each model rotamer to a target residue HashMap trg_to_mdl = new HashMap(); for(Iterator rItr = mdl_to_mdl.keySet().iterator(); rItr.hasNext(); ) { // Model rotamer we wanna store Residue res = (Residue) rItr.next(); String mdlRotName = mdl_to_mdl.get(res); // Find its corresponding target residue Residue trgRes = null; for(int i = 0; i < align.a.length; i++) { Residue mRes = (Residue) align.a[i]; Residue tRes = (Residue) align.b[i]; if(mRes != null && mRes.getCNIT().equals(res.getCNIT())) trgRes = tRes; } if(trgRes == null) continue; // model has extra non-target tail or something trg_to_mdl.put(trgRes, mdlRotName); } return trg_to_mdl; } //}}} //{{{ tallyRotamers //############################################################################## public int[] tallyRotamers(HashMap mdlRotNames) { int trgResTally = 0; int mdlResTally = 0; int matchTally = 0; ArrayList trgResidues = new ArrayList(); for(Iterator rItr = trgRotNames.keySet().iterator(); rItr.hasNext(); ) { Residue trgRes = (Residue) rItr.next(); trgResidues.add(trgRes); } Collections.sort(trgResidues); for(int i = 0; i < trgResidues.size(); i++) { Residue trgRes = trgResidues.get(i); String trgRotName = trgRotNames.get(trgRes); String mdlRotName = mdlRotNames.get(trgRes); if(trgRotName != null && !trgRotName.equals("OUTLIER") && !trgRotName.equals(this.NO_CONSENSUS_ROTNAME)) { trgResTally++; if(mdlRotName != null) mdlResTally++; boolean match = (mdlRotName != null && mdlRotName.equals(trgRotName)); if(match) matchTally++; if(verbose) System.err.println(trgRes+": " +(match?"":"(")+trgRotName+" "+(match?"=":"!=")+" "+mdlRotName+(match?"":")")); } } return new int[] {trgResTally, mdlResTally, matchTally}; } //}}} //{{{ assessModels //############################################################################## /** * Performs rotcor assessment for all models individually against the target. */ public void assessModels() { File mdlsDir = new File(mdlsDirname); String[] listing = mdlsDir.list(); if(listing == null) { System.err.println(mdlsDirname+" is an empty directory or does not exist!"); System.exit(1); } ArrayList mdlFilenames = new ArrayList(); for(int i = 0; i < listing.length; i++) mdlFilenames.add(listing[i]); Collections.sort(mdlFilenames); System.err.println("... "+mode); if(mode == MODEL) { System.out.println("Target:Model:TargetCount:TargetRotamers:ModelRotamers:Matches:RotCor"); // Rotalyze models one at a time for(int i = 0; i < mdlFilenames.size(); i++) { String mdlFilename = mdlFilenames.get(i); if(mdlFilename.indexOf(".pdb") == -1) continue; // only consider PDBs assessModel(mdlFilename); } } else //if(mode == RESIDUE) { // Rotalyze all models in advance mdlsRotNames = new HashMap(); for(int i = 0; i < mdlFilenames.size(); i++) { String mdlFilename = mdlFilenames.get(i); if(mdlFilename.indexOf(".pdb") == -1) continue; // only consider PDBs rotalyzeModel(mdlFilename); } System.out.println("Target:Chain:ResNum:InsCode:ResType:TargetRotamer:TargetCount:ModelCount:FracMatch"); ArrayList trgResNames = new ArrayList(); for(Iterator rItr = trgRotNames.keySet().iterator(); rItr.hasNext(); ) { trgResNames.add((Residue) rItr.next()); } Collections.sort(trgResNames); for(int i = 0; i < trgResNames.size(); i++) { Residue trgRes = trgResNames.get(i); assessResidue(trgRes); } } } //}}} //{{{ assessModel //############################################################################## /** * Performs rotcor assessment for one model against the target. */ public void assessModel(String mdlFilename) { try { Model mdl = extractModel(mdlsDirname+"/"+mdlFilename); if(mdl == null) return; // Get rotamer names, then index by target residue Rotalyze rotalyze = new Rotalyze(); HashMap tmpRotNames = rotalyze.getNames(mdl); HashMap mdlRotNames = alignModel(mdl, tmpRotNames); int[] tallies = tallyRotamers(mdlRotNames); double rotcor = (double) tallies[2] / (double) tallies[0]; outputModel(mdlFilename, tallies, rotcor); } catch(IOException ex) { System.err.println("Error reading file: "+mdlFilename); } } //}}} //{{{ outputModel //############################################################################## /** * Output for a single model. */ public void outputModel(String mdlFilename, int[] tallies, double rotcor) { // Target Model TargetCount TargetRotamers ModelRotamers Matches RotCor System.out.println( trgName+":"+ mdlFilename+":"+ trgCount+":"+ tallies[0]+":"+ tallies[1]+":"+ tallies[2]+":"+ df.format(rotcor) ); } //}}} //{{{ rotalyzeModel //############################################################################## /** * Stores rotamers for the specified model file. * Only used for RESIDUE (i.e. not MODEL) output. */ public void rotalyzeModel(String mdlFilename) { File mdlFile = new File(mdlsDirname+"/"+mdlFilename); if(mdlFile.isDirectory()) return; // skip nested directories if(verbose) System.err.println("Rotalyzing "+mdlFile); Rotalyze rotalyze = new Rotalyze(); try { CoordinateFile mdlCoords = new PdbReader().read(mdlFile); for(Iterator mItr = mdlCoords.getModels().iterator(); mItr.hasNext(); ) { Model mdl = (Model) mItr.next(); HashMap mdlRotNames = rotalyze.getNames(mdl); storeModelRotamers(mdl, mdlRotNames); } } catch(IOException ex) { System.err.println("Error rotalyzing model: "+mdlFilename+"!"); } } //}}} //{{{ storeModelRotamers //############################################################################## /** Syncs each model rotamer to a target residue and stores. */ public void storeModelRotamers(Model mdl, HashMap mdlRotNames) { // Align model onto target by sequence Alignment align = Alignment.alignChains( SubImpose.getChains(mdl), SubImpose.getChains(trg), new Alignment.NeedlemanWunsch(), new SubImpose.SimpleResAligner()); //if(verbose) //{ // System.err.println("Model <==> target residue alignments:"); // for(int i = 0; i < align.a.length; i++) // System.err.println(" "+align.a[i]+" <==> "+align.b[i]); // System.err.println(); //} for(Iterator rItr = mdlRotNames.keySet().iterator(); rItr.hasNext(); ) { // Model rotamer we wanna store Residue mdlRes = (Residue) rItr.next(); String mdlRotName = mdlRotNames.get(mdlRes); // Find its corresponding target residue Residue trgRes = null; for(int i = 0; i < align.a.length; i++) { Residue mRes = (Residue) align.a[i]; Residue tRes = (Residue) align.b[i]; if(mRes != null && mRes.getCNIT().equals(mdlRes.getCNIT())) trgRes = tRes; } if(trgRes == null) continue; // model has extra non-target tail or something // Add it to the arrays for this target residue String[] mdlRotNamesOld = mdlsRotNames.get(trgRes); String[] mdlRotNamesNew; if(mdlRotNamesOld != null) { mdlRotNamesNew = new String[mdlRotNamesOld.length+1]; for(int i = 0; i < mdlRotNamesOld.length; i++) mdlRotNamesNew[i] = mdlRotNamesOld[i]; } else { mdlRotNamesNew = new String[1]; // "new" target residue } mdlRotNamesNew[mdlRotNamesNew.length-1] = mdlRotName; // add mdlsRotNames.put(trgRes, mdlRotNamesNew); // re-store } } //}}} //{{{ assessResidue //############################################################################## /** * Determines the fraction of model rotamers that match the target rotamer * at a particular target residue. */ public void assessResidue(Residue trgRes) { String trgRotName = trgRotNames.get(trgRes); String[] mdlRotNames = mdlsRotNames.get(trgRes); int mdlNumRots; double fracMatch; if(mdlRotNames != null) { mdlNumRots = mdlRotNames.length; int matches = 0; int tally = 0; for(String mdlRotName : mdlRotNames) { if(mdlRotName.equals(trgRotName) && !trgRotName.equals("OUTLIER") && !trgRotName.equals(this.NO_CONSENSUS_ROTNAME)) matches++; tally++; } fracMatch = (1.0*matches)/(1.0*tally); } else // no model residues align to this target residue, so 0% match { mdlNumRots = 0; fracMatch = 0.0; } outputResidue(trgRes, trgRotName, mdlNumRots, fracMatch); } //}}} //{{{ outputResidue //############################################################################## /** * Outputs the fraction of model rotamers that match the target rotamer * at a particular target residue. */ public void outputResidue(Residue trgRes, String trgRotName, int mdlNumRots, double fracMatch) { // Target Chain ResNum InsCode ResType TargetRotamer TargetCount ModelCount FracMatch System.out.println( trgName+":"+ trgRes.getChain()+":"+ trgRes.getSequenceInteger()+":"+ trgRes.getInsertionCode().trim()+":"+ trgRes.getName()+":"+ trgRotName+":"+ trgCount+":"+ mdlNumRots+":"+ df.format(fracMatch) ); } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { if(trgFilename == null || mdlsDirname == null) { showHelp(true); System.exit(1); } while(mdlsDirname.endsWith("/")) { mdlsDirname = mdlsDirname.substring(0, mdlsDirname.length()-1); } prepTarget(); assessModels(); } public static void main(String[] args) { RotCor mainprog = new RotCor(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("RotCor.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'RotCor.help' ***\n"); else { try { streamcopy(is, System.err); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.rotarama.RotCor version "+getVersion()+" build "+getBuild()); System.err.println("Copyright (C) 2010 by Daniel Keedy. All rights reserved."); } // Get version number String getVersion() { InputStream is = getClass().getClassLoader().getResourceAsStream("chiropraxis/version.props"); if(is == null) System.err.println("\n*** Unable to locate version number in 'version.props' ***\n"); else { try { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line = reader.readLine(); line = reader.readLine(); if(line != null && line.indexOf("version=") != -1) return line.substring( line.indexOf("=")+1 ); } catch(IOException ex) { ex.printStackTrace(); } } return "?.??"; } // Get build number String getBuild() { InputStream is = getClass().getClassLoader().getResourceAsStream("chiropraxis/buildnum.props"); if(is == null) System.err.println("\n*** Unable to locate build number in 'buildnum.props' ***\n"); else { try { BufferedReader reader = new BufferedReader(new InputStreamReader(is)); String line = reader.readLine(); line = reader.readLine(); if(line != null && line.indexOf("buildnum=") != -1) return line.substring( line.indexOf("=")+1 ); } catch(IOException ex) { ex.printStackTrace(); } } return "yyyymmdd.????"; } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if (mdlsDirname == null) mdlsDirname = arg; else if(trgFilename == null) trgFilename = arg; else { showHelp(true); System.exit(1); } } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-verbose") || flag.equals("-v")) { verbose = true; } else if(flag.equals("-model") || flag.equals("-mdl") || flag.equals("-m")) { mode = MODEL; } else if(flag.equals("-residue") || flag.equals("-res") || flag.equals("-r")) { mode = RESIDUE; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/rotarama/Ramachandran.java0000644000000000000000000002014011744305702024320 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.rotarama; //import java.awt.*; import java.io.*; //import java.net.*; import java.text.*; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; //}}} /** * Ramachandran is a simplified version of * my hless.Ramachandran evaluator and plot generator. * This version is simply for evaluating the Ramachandran * fitness of residues programatically. * *

    Copyright (C) 2002-2003 by Ian W. Davis. All rights reserved. *
    Begun on Tue Sep 10 09:08:41 EDT 2002 */ public class Ramachandran //extends ... implements ... { //{{{ Constants public static final double ALL_FAVORED = 0.0200; // 98.00% public static final double GENERAL_ALLOWED = 0.0005; // 99.95% public static final double CISPRO_ALLOWED = 0.0020; // 99.80% public static final double OTHER_ALLOWED = 0.0010; // 99.90% /* public static final double GENERAL_ALLOWED = 0.0005; // 99.95% public static final double OTHER_ALLOWED = 0.0020; // 99.80% */ //}}} //{{{ Variable definitions //################################################################################################## static private Ramachandran instance = null; float[] phipsi = new float[2]; NDFloatTable genTable = null, ilevalTable = null, preproTable = null, glyTable = null, transproTable = null, cisproTable = null; /*proTable = null;*/ //}}} //{{{ getInstance, freeInstance //################################################################################################## /** * Retrieves the current Ramachandran instance, or * creates it and loads the data tables from disk * if (1) this method has never been called before * or (2) this method has not been called since * freeInstance() was last called. * If creation fails due to missing resource data, * an IOException will be thrown. * @throws IOException if a Ramachandran instance could not be created */ static public Ramachandran getInstance() throws IOException { if(instance != null) return instance; else return (instance = new Ramachandran()); } /** * Frees the internal reference to the allocated Ramachandran object. * It will be GC'ed when all references to it expire. * Future calls to getInstance() will allocate a new Ramachandran object. * This function allows sneaky users to have more than one Ramachandran * object in memory at once. This is generally a bad idea, as they're * really big, but we won't stop you if you're sure that's what you want. */ static public void freeInstance() { instance = null; } //}}} //{{{ Constructor(s) //################################################################################################## /** * Creates a new Ramachandran scorer. * @throws IOException if the required resources are not available */ private Ramachandran() throws IOException { InputStream sGen, sIleval, sPrepro, sGly, sCispro, sTranspro; /*, sPro;*/ sGen = this.getClass().getResourceAsStream("rama8000/general.ndft"); sIleval = this.getClass().getResourceAsStream("rama8000/ileval.ndft"); sPrepro = this.getClass().getResourceAsStream("rama8000/prepro.ndft"); sGly = this.getClass().getResourceAsStream("rama8000/glycine.ndft"); sTranspro = this.getClass().getResourceAsStream("rama8000/transpro.ndft"); sCispro = this.getClass().getResourceAsStream("rama8000/cispro.ndft"); /*sPro = this.getClass().getResourceAsStream("rama5200/proline.ndft");*/ if(sGen == null || sIleval == null || sPrepro == null || sGly == null || sTranspro == null || sCispro == null) throw new IOException("Could not find required .ndft files"); DataInputStream dis; dis = new DataInputStream(new BufferedInputStream(sGen)); genTable = new NDFloatTable(dis); dis = new DataInputStream(new BufferedInputStream(sIleval)); ilevalTable = new NDFloatTable(dis); dis = new DataInputStream(new BufferedInputStream(sPrepro)); preproTable = new NDFloatTable(dis); dis = new DataInputStream(new BufferedInputStream(sGly)); glyTable = new NDFloatTable(dis); dis = new DataInputStream(new BufferedInputStream(sTranspro)); transproTable = new NDFloatTable(dis); dis = new DataInputStream(new BufferedInputStream(sCispro)); cisproTable = new NDFloatTable(dis); /*dis = new DataInputStream(new BufferedInputStream(sPro)); proTable = new NDFloatTable(dis);*/ sGen.close(); sIleval.close(); sPrepro.close(); sGly.close(); sTranspro.close(); sCispro.close(); /*sPro.close();*/ } //}}} //{{{ rawScore //################################################################################################## /** * Returns true iff the given residue can reasonably be * scored on the Ramachandran plot and it is neither * favored nor allowed. * @throws ResidueException if no score can be calculated * for this residue. */ public double rawScore(Model model, Residue res, ModelState state) throws ResidueException { double phi, psi, score; try { phi = AminoAcid.getPhi(model, res, state); psi = AminoAcid.getPsi(model, res, state); } catch(AtomException ex) { throw new ResidueException("Can't get Ramachandran score for "+res+": "+ex.getMessage()); } phipsi[0] = (float)phi; phipsi[1] = (float)psi; String name = res.getName(); if(name.equals("GLY")) score = glyTable.valueAt(phipsi); else if(name.equals("PRO")) { if(AminoAcid.isCisPeptide(model, res, state)) score = cisproTable.valueAt(phipsi); else score = transproTable.valueAt(phipsi); } /*score = proTable.valueAt(phipsi);*/ else if(AminoAcid.isPrepro(model, res, state)) score = preproTable.valueAt(phipsi); else if(name.equals("ILE") || name.equals("VAL")) score = ilevalTable.valueAt(phipsi); else score = genTable.valueAt(phipsi); return score; } //}}} //{{{ isOutlier //################################################################################################## /** * Returns true iff the given residue can reasonably be * scored on the Ramachandran plot and it is neither * favored nor allowed. */ public boolean isOutlier(Model model, Residue res, ModelState state) { String protein = "GLY,ALA,VAL,LEU,ILE,PRO,PHE,TYR,TRP,SER,THR,CYS,MET,MSE,LYS,HIS,ARG,ASP,ASN,GLN,GLU"; String resType = res.getName(); if(protein.indexOf(resType) == -1) return false; try { double score = rawScore(model, res, state); if(resType.equals("PRO") && AminoAcid.isCisPeptide(model, res, state)) { return (score < CISPRO_ALLOWED); } else if(resType.equals("GLY") || AminoAcid.isPrepro(model, res, state) || resType.equals("ILE") || resType.equals("VAL")) { return (score < OTHER_ALLOWED); } else { return (score < GENERAL_ALLOWED); } /*if(resType.equals("GLY") || resType.equals("PRO") || AminoAcid.isPrepro(model, res, state)) { return (score < OTHER_ALLOWED); }*/ } catch(ResidueException ex) { return false; } } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/rotarama/Rotalyze.java0000644000000000000000000002626611531212730023561 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.rotarama; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import chiropraxis.sc.SidechainAngles2; //}}} /** * Rotalyze is the command-line executable for rotamer analysis. * It produces the same raw text output as the old hless.Rotamer, but with * an additional column that provides the rotamer name. * *

    Copyright (C) 2007 by Ian W. Davis. All rights reserved. *
    Begun on Tue Feb 20 16:37:54 EST 2007 */ public class Rotalyze //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## File infile = null, outfile = null; //}}} //{{{ Constructor(s) //############################################################################## public Rotalyze() { super(); } //}}} //{{{ doCsvText //############################################################################## public void doCsvText(CoordinateFile coordFile, OutputStream outputStream) throws IOException { // XXX-TODO: deal with mmCIF files, multiple models, and alt. confs. // As is, this class is hideously incomplete, but it does just enough // to satisfy MolProbity's needs right now. DecimalFormat df1 = new DecimalFormat("0.0"); PrintWriter out = new PrintWriter(outputStream); out.println("#residue:score%:chi1:chi2:chi3:chi4:rotamer"); Rotamer rotamer = Rotamer.getInstance(); SidechainAngles2 scAngles = new SidechainAngles2(); for(Iterator mi = coordFile.getModels().iterator(); mi.hasNext(); ) { Model model = (Model) mi.next(); ModelState state = model.getState(); for(Iterator ri = model.getResidues().iterator(); ri.hasNext(); ) { try { Residue res = (Residue) ri.next(); double[] chis = scAngles.measureChiAngles(res, state); double eval = rotamer.evaluate(res.getName(), chis); String rotname = "OUTLIER"; if(eval >= 0.01) rotname = rotamer.identify(res.getName(), chis); // (RMI and DAK 07/08/24) Added to fix conversion on OUTLIERs // Was -180 -> 180; now is 0 -> 360 for(int i = 0; i < chis.length; i++) { chis[i] = chis[i] % 360; if(chis[i] < 0) chis[i] += 360; } // (vbc3 080401) for these residues, the last chi is only 0 -> 180 if("ASP".equals(res.getName()) || "GLU".equals(res.getName()) || "PHE".equals(res.getName()) || "TYR".equals(res.getName())) { int i = chis.length - 1; chis[i] = chis[i] % 180; if(chis[i] < 0) chis[i] += 180; } out.print(res.getCNIT()); out.print(":"); out.print(df1.format(eval*100)); for(int i = 0; i < 4; i++) { out.print(":"); if(i < chis.length) out.print(df1.format(chis[i])); } out.print(":"); out.print(rotname); out.println(); } catch(Exception ex) {}//{ System.err.println(ex.getClass()+": "+ex.getMessage()); } } } out.flush(); } //}}} //{{{ getNames, getEvals //############################################################################## // Useful methods for outside classes that want to use // rotamer names and evaluations for other purposes. -DK public HashMap getNames(Model model) throws IOException { HashMap rotnames = new HashMap(); Rotamer rotamer = Rotamer.getInstance(); SidechainAngles2 scAngles = new SidechainAngles2(); ModelState state = model.getState(); for(Iterator ri = model.getResidues().iterator(); ri.hasNext(); ) { try { Residue res = (Residue) ri.next(); double[] chis = scAngles.measureChiAngles(res, state); double eval = rotamer.evaluate(res.getName(), chis); String rotname = "OUTLIER"; if(eval >= 0.01) rotname = rotamer.identify(res.getName(), chis); rotnames.put(res, rotname); } catch(Exception ex) {}//{ System.err.println(ex.getClass()+": "+ex.getMessage()); } } return rotnames; } public HashMap getEvals(Model model) throws IOException { HashMap evals = new HashMap(); Rotamer rotamer = Rotamer.getInstance(); SidechainAngles2 scAngles = new SidechainAngles2(); ModelState state = model.getState(); for(Iterator ri = model.getResidues().iterator(); ri.hasNext(); ) { try { Residue res = (Residue) ri.next(); double[] chis = scAngles.measureChiAngles(res, state); double eval = rotamer.evaluate(res.getName(), chis); //String rotname = "OUTLIER"; //if(eval >= 0.01) rotname = rotamer.identify(res.getName(), chis); evals.put(res, eval); } catch(Exception ex) {}//{ System.err.println(ex.getClass()+": "+ex.getMessage()); } } return evals; } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { PdbReader pdbReader = new PdbReader(); CoordinateFile coordFile; if(infile == null) coordFile = pdbReader.read(System.in); else coordFile = pdbReader.read(infile); OutputStream out; if(outfile == null) out = System.out; else out = new BufferedOutputStream(new FileOutputStream(outfile)); doCsvText(coordFile, out); try { out.flush(); out.close(); } catch(IOException ex) {} // PdfWriter might have already closed it! } public static void main(String[] args) { Rotalyze mainprog = new Rotalyze(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } catch(Exception ex) { ex.printStackTrace(); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("Rotalyze.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'Rotalyze.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.rotarama.Rotalyze"); System.err.println("Copyright (C) 2007 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { if(infile == null) infile = new File(arg); else if(outfile == null) outfile = new File(arg); else throw new IllegalArgumentException("Too many file names on cmd line: '"+arg+"'"); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-dump_rotamer_bins") || flag.equals("-dump")) { try { System.out.println(Rotamer.getInstance().dumpRotamerNames()); } catch (IOException ie) { System.out.println("Jar file is missing some resources"); } System.exit(0); } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/sc/0000755000000000000000000000000011677361404017706 5ustar rootrootking-2.21.120420/chiropraxis/src/chiropraxis/sc/RotamersForTerwilliger.java0000644000000000000000000002305311531212726025220 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.sc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.*; //}}} /** * RotamersForTerwilliger writes out our rotamer library in the * format specified by Tom Terwilliger for use in the automated structure * solution package Phenix (sp?). * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Tue May 18 16:04:53 EDT 2004 */ public class RotamersForTerwilliger //extends ... implements ... { //{{{ Constants String DUMMY_GLY_ALA = " 1 GLY ! RESIDUE ID -----------------------\n"+ " 4 ! N_ATOMS\n"+ " 1 ! N_GROUP\n"+ " 1 ! I_GROUP ---------------\n"+ " 1.46 0.00 0.00 N ! XYZ\n"+ " 0.00 0.00 0.00 CA ! XYZ\n"+ " -0.53 1.43 0.00 C ! XYZ\n"+ " 0.21 2.39 -0.13 O ! XYZ\n"+ " 2 ALA ! RESIDUE ID -----------------------\n"+ " 5 ! N_ATOMS\n"+ " 1 ! N_GROUP\n"+ " 1 ! I_GROUP ---------------\n"+ " 1.45 0.00 0.00 N ! XYZ\n"+ " 0.00 0.00 0.00 CA ! XYZ\n"+ " -0.49 1.44 0.00 C ! XYZ\n"+ " -0.61 2.07 -1.04 O ! XYZ\n"+ " -0.53 -0.77 1.20 CB ! XYZ"; //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public RotamersForTerwilliger() { super(); } //}}} //{{{ writeRotamers //############################################################################## void writeRotamers(PrintStream out) throws IOException { final String[] resList = {"GLY", "ALA", "SER", "VAL", "ILE", "LEU", "MET", "CYS", "PHE", "TYR", "LYS", "ARG", "TRP", "HIS", "GLU", "ASP", "GLN", "ASN", "PRO", "THR" }; DecimalFormat df = new DecimalFormat("0.00"); SidechainIdealizer idealizer = new SidechainIdealizer(); SidechainAngles2 scangles = new SidechainAngles2(); Builder builder = new Builder(); // Skip GLY, ALA out.println(DUMMY_GLY_ALA); for(int i = 2; i < resList.length; i++) { out.println(Strings.justifyRight(""+(i+1), 6)+" "+resList[i]+" ! RESIDUE ID -----------------------"); // Create an idealized residue of the appropriate type ModelState stateRaw = new ModelState(); // will be written into by next call Residue res = idealizer.makeIdealResidue(" ", "", Integer.toString(i+1), " ", resList[i], stateRaw); stateRaw = stateRaw.createCollapsed(); // Orient the residue correctly (transform in place) try { AtomState n = stateRaw.get(res.getAtom(" N ")); AtomState ca = stateRaw.get(res.getAtom(" CA ")); AtomState c = stateRaw.get(res.getAtom(" C ")); Transform xform = builder.dock3on3(new Triple(0,0,0), new Triple(1,0,0), new Triple(0,1,0), ca, n, c); for(Iterator iter = stateRaw.getLocalStateMap().values().iterator(); iter.hasNext(); ) xform.transform((AtomState) iter.next()); } catch(AtomException ex) { ex.printStackTrace(); } ModelState stateDock = stateRaw; // Find a list of all the heavy atoms Collection heavyAtoms = new ArrayList(); for(Iterator iter = res.getAtoms().iterator(); iter.hasNext(); ) { Atom a = (Atom) iter.next(); if(a.getName().charAt(1) != 'H') heavyAtoms.add(a); } out.println(Strings.justifyRight(""+heavyAtoms.size(), 4)+" ! N_ATOMS"); // Find a list of all the rotamers possible for this sidechain RotamerDef[] rotamers = scangles.getAllRotamers(res); out.println(Strings.justifyRight(""+rotamers.length, 4)+" ! N_GROUP"); // Create a model of each rotamer and write it out for(int j = 0; j < rotamers.length; j++) { out.println(Strings.justifyRight(""+(j+1), 4)+" ! I_GROUP --------------- "+rotamers[j].toString()); ModelState stateRot = scangles.setChiAngles(res, stateDock, rotamers[j].chiAngles); for(Iterator iter = heavyAtoms.iterator(); iter.hasNext(); ) { try { Atom a = (Atom) iter.next(); AtomState as = stateRot.get(a); out.println( Strings.justifyRight(df.format(as.getX()), 8)+ Strings.justifyRight(df.format(as.getY()), 8)+ Strings.justifyRight(df.format(as.getZ()), 8)+ " "+a.getName()+" ! XYZ" ); } catch(AtomException ex) { ex.printStackTrace(); } } } } } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() { try { writeRotamers(System.out); } catch(Exception ex) { ex.printStackTrace(); } } public static void main(String[] args) { RotamersForTerwilliger mainprog = new RotamersForTerwilliger(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("RotamersForTerwilliger.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'RotamersForTerwilliger.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.sc.RotamersForTerwilliger"); System.err.println("Copyright (C) 2004 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/sc/RotamerSampler.java0000644000000000000000000007306711531212726023512 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.sc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.Strings; //}}} /** * RotamerSampler accepts a list of chi angles and * figures of merit, and translates them into PDB-format coordinates * for one amino acid type. * * It can also prune samples such that the remaining samples are * as "spread out" as possible in terms of the position & orientation * of the sidechain's tip with respect to the residue's own backbone. * * IDEAS / TO-DO: * - include pct &/o stat as "terms" in quats' "electrostatic repulsion" "energy"? * * that's one way to fuse the R3 & bioinformatic worlds in one method * * another would be to make the quat repulsion stuff call-able from silk RotSamp * - repulse only w/in peaks? * * would be faster, but... * * would require knowledge of peaks (maybe if called by silk?) * * how to deal with edges of adjoining peaks? * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Tue Jan 6 15:33:28 EST 2004 */ public class RotamerSampler //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## // INPUT boolean verbose = false; String aaType; File inFile; /** Our "template" residue. */ Residue res; boolean allAngles = true; String group; String color; // OUTPUT /** Do "inverse rotamers": superpose sc end instead of bb. */ boolean inverse = false; /** Output input-formatted strings of remaining samples instead of PDB-format coordinates. */ boolean printSamples = false; /** Output chi values in kinemage format instead of PDB-format coordinates. */ boolean plotChis = false; /** If plotting chi values, plot chis 2,3,4 instead of chis 1,2,3. */ boolean chi234 = false; /** Output quaternion x,y,z,w in kinemage format instead of PDB-format coordinates. */ boolean plotQuats = false; /** Number of samples to keep; eliminate the rest to maximize spread in quaternion space. */ int keepCnt = Integer.MAX_VALUE; /** Fraction of samples to keep; eliminate the rest to maximize spread in quaternion space. */ double keepFrc = Double.NaN; // FOR INTERNAL USE /** Numbered residues for sampled sidechain conformers, keyed by chis. */ HashMap residues; /** States for sampled sidechain conformers, keyed by chis. */ HashMap states; /** Quaternions describing orientation of sidechain tip relative to own backbone, keyed by chis. */ HashMap quats; /** Quaternions describing orientation of sidechain tip relative to own backbone, keyed by chis. * Nothing pruned from this guy in subsequent steps. */ HashMap quatsOrig; //}}} //{{{ Constructor(s) //############################################################################## public RotamerSampler() { super(); } //}}} //{{{ buildConformers //############################################################################## /** * Builds sidechains using chis. Stores in global hash map for possible * modification and output later. */ public void buildConformers(ArrayList data) throws IOException { // Obtain template residue PdbReader pdbReader = new PdbReader(); CoordinateFile coordFile = pdbReader.read(this.getClass().getResourceAsStream("singleres.pdb")); Model model = coordFile.getFirstModel(); ModelState modelState = model.getState(); Residue res = null; for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue r = (Residue)iter.next(); if(aaType.equals(r.getName())) res = r; } if(res == null) throw new IllegalArgumentException("Couldn't find a residue called '"+aaType+"'"); SidechainAngles2 angles = new SidechainAngles2(); int nAngles = (allAngles ? angles.countAllAngles(res) : angles.countChiAngles(res)); // Determine figure of merit double maxWeight = 0; for(Iterator iter = data.iterator(); iter.hasNext(); ) { double[] vals = (double[]) iter.next(); maxWeight = Math.max(maxWeight, vals[nAngles]); } // Build & store conformers residues = new HashMap(); states = new HashMap(); int i = 1; for(Iterator iter = data.iterator(); iter.hasNext(); i++) { try { double[] vals = (double[])iter.next(); Residue tempRes = new Residue(res, " ", "", Integer.toString(i), " ", res.getName()); ModelState tempState = tempRes.cloneStates(res, modelState, new ModelState(modelState)); if(allAngles) tempState = angles.setAllAngles(tempRes, tempState, vals); else tempState = angles.setChiAngles(tempRes, tempState, vals); for(Iterator ai = tempRes.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom)ai.next(); // Makes all weights make best use of the 6.2 formatted field available to them double occ = 999.0 * vals[nAngles]/maxWeight; if(occ >= 1000.0) throw new Error("Logical error in occupancy weighting scheme"); tempState.get(a).setOccupancy(occ); } residues.put(vals, tempRes); states.put(vals, tempState); } catch(AtomException ex) { ex.printStackTrace(); } } } //}}} //{{{ calcQuats //############################################################################## /** * Maps each set of chis to a quaternion describing the relationship * between the sidechain's end and the backbone. */ public void calcQuats(ArrayList data) { String[] scEnd = null; if(aaType.equals("ASN")) scEnd = new String[] {" CG ", " OD1", " ND2"}; if(aaType.equals("GLN")) scEnd = new String[] {" CD ", " OE1", " NE2"}; if(aaType.equals("ARG")) scEnd = new String[] {" CZ ", " NH1", " NH2"}; // ... if(scEnd == null) throw new IllegalArgumentException("Unrecognized aa type: "+aaType+"!"); quats = new HashMap(); quatsOrig = new HashMap(); // for our records for(Iterator iter = data.iterator(); iter.hasNext(); ) { try { double[] vals = (double[])iter.next(); Residue tempRes = residues.get(vals); ModelState tempState = states.get(vals); Triple bb1 = null, bb2 = null, bb3 = null; Triple sc1 = null, sc2 = null, sc3 = null; for(Iterator ai = tempRes.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); AtomState as = tempState.get(a); if(a.getName().equals(" CA ")) bb1 = new Triple(as); if(a.getName().equals(" N ")) bb2 = new Triple(as); if(a.getName().equals(" C ")) bb3 = new Triple(as); if(a.getName().equals(scEnd[0])) sc1 = new Triple(as); if(a.getName().equals(scEnd[1])) sc2 = new Triple(as); if(a.getName().equals(scEnd[2])) sc3 = new Triple(as); } if(bb1 == null || bb2 == null || bb3 == null) throw new IllegalArgumentException("Can't find the 3 bb atoms in "+tempRes+"!"); if(sc1 == null || sc2 == null || sc3 == null) throw new IllegalArgumentException("Can't find the 3 sc atoms in "+tempRes+"!"); Triple[] bb = new Triple[] {bb1, bb2, bb3}; Triple[] sc = new Triple[] {sc1, sc2, sc3}; // Quaternion SuperPoser poser = new SuperPoser(bb, sc); Transform xform = poser.superpos(); Quaternion quat = new Quaternion().likeRotation(xform); quats.put(vals, quat); quatsOrig.put(vals, quat); if(inverse) // "inverse rotamers" { for(Iterator ai = tempRes.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom) ai.next(); AtomState as = tempState.get(a); xform.transform(as); } states.put(vals, tempState); // overwrite } } catch(AtomException ex) { ex.printStackTrace(); } } /*for(Iterator iter = data.iterator(); iter.hasNext(); ) { double[] vals = (double[]) iter.next(); Quaternion quat = quats.get(vals); System.out.println(Strings.arrayInParens(vals)+" " +quat.getX()+" "+quat.getY()+" "+quat.getZ()+" "+quat.getW()); } System.exit(0);*/ } //}}} //{{{ rmDuplicates, rmOneDuplicate //############################################################################## /** * Makes sure no samples yield the same quaternion, probably (always?) b/c * they have the same chi values. */ public void rmDuplicates(ArrayList data, ArrayList dataOrig) { int keep = (keepCnt != Integer.MAX_VALUE ? keepCnt : (int)Math.floor(dataOrig.size()*keepFrc)); System.err.println(data.size()+"/"+dataOrig.size()+" samples, goal: "+keep+" (orig input)"); boolean noMoreDuplicates = false; while(!noMoreDuplicates) { int duplicateIdx = rmOneDuplicate(data); if(duplicateIdx == -1) noMoreDuplicates = true; else { double[] vals = data.get(duplicateIdx); quats.remove(vals); data.remove(duplicateIdx); } } } public int rmOneDuplicate(ArrayList data) { for(int i = 0; i < data.size(); i++) { double[] vals1 = data.get(i); Quaternion quat1 = quats.get(vals1); boolean duplicate = false; for(int j = 0; j < data.size() && i != j; j++) { double[] vals2 = data.get(j); Quaternion quat2 = quats.get(vals2); if(quat2.equals(quat1)) { duplicate = true; if(verbose) System.err.println( "Removing duplicate for "+Strings.arrayInParens(vals1)); return i; } } } return -1; } //}}} //{{{ repulse //############################################################################## /** * Pretends quaternions are electrons on the surface of a sphere, and finds * sample point whose omission would most decrease "electrostatic energy". * Called recursively until we're left with the desired number of samples. * Warning: My implementation makes *NO* guarantee of avoiding local minima - * that's a significant problem!!! */ public ArrayList repulse(ArrayList data, ArrayList dataOrig) { int keep = (keepCnt != Integer.MAX_VALUE ? keepCnt : (int)Math.floor(dataOrig.size()*keepFrc)); System.err.println(data.size()+"/"+dataOrig.size()+" samples, goal: "+keep); // See if we've reached final level of recursion. if(data.size() <= keep) return data; // Find sample whose omission would most decrease "electrostatic energy". double minE = Double.POSITIVE_INFINITY; int minEidx = -1; for(int i = 0; i < data.size(); i++) { ArrayList dataOmit = new ArrayList(); // w/o sample i for(int j = 0; j < data.size(); j++) if(j != i) dataOmit.add(data.get(j)); double E = repulsion(dataOmit); if (E < minE) { minE = E; minEidx = i; } } if (minEidx == -1 || minE == Double.NEGATIVE_INFINITY) { System.err.println("Removing any sample would only increase \"energy\"!"); return data; // done } // Remove that sample double[] vals = data.get(minEidx); data.remove(minEidx); DecimalFormat df = new DecimalFormat("###.###"); if(verbose) System.err.println( "Removed "+Strings.arrayInParens(vals)+", E -> "+df.format(minE)); return repulse(data, dataOrig); } //}}} //{{{ repulsion //############################################################################## /** * Calculates "electrostatic energy" for a set of quaternions: * E = Sum_i Sum_j 1/dist(x_i,x_j)^2 */ public double repulsion(ArrayList dataOmit) { double E = 0; for(int i = 0; i < dataOmit.size(); i++) { for(int j = 0; j < dataOmit.size(); j++) { if(j != i) { double[] vals_i = dataOmit.get(i); double[] vals_j = dataOmit.get(j); Quaternion quat_i = quats.get(vals_i); Quaternion quat_j = quats.get(vals_j); if(quat_i.equals(quat_j) && verbose) System.err.println("found a duplicate: "+quat_i); // distance in quaternion space double dist = Math.sqrt( Math.pow(quat_i.getX()-quat_j.getX(), 2) + Math.pow(quat_i.getY()-quat_j.getY(), 2) + Math.pow(quat_i.getZ()-quat_j.getZ(), 2) + Math.pow(quat_i.getW()-quat_j.getW(), 2) ); double distSqrd = dist * dist; E += 1.0 / distSqrd; } } } /*System.err.println("E = "+E);*/ return E; } //}}} //{{{ printSamples //############################################################################## /** Write out Silk-output-format strings for remaining samples. * If -keep not used, should be same as input. */ public void printSamples(ArrayList data) { // Header(s?) try { LineNumberReader in = new LineNumberReader(new FileReader(inFile)); String s; while((s = in.readLine()) != null) { // # chi1:chi2:chi3:chi4:main:check if(s.startsWith("#")) System.out.println(s); } in.close(); } catch(IOException ex) { System.err.println("Error reading headers in "+inFile); } // Sample strings for(Iterator iter = data.iterator(); iter.hasNext(); ) { // 52.5:182.5:172.5:82.5:4.8326884352494234E-5:0.37011794417325267 double[] vals = (double[])iter.next(); for(int i = 0; i < vals.length-1; i++) System.out.print(vals[i]+":"); System.out.println(vals[vals.length-1]); } } //}}} //{{{ plotChis //############################################################################## /** Plot chis in kin format instead of creating rotamers PDB. */ public void plotChis(ArrayList data) { DecimalFormat df = new DecimalFormat("###.#"); if(group == null) group = aaType+" samp chis"; if(color == null) color = "blue"; System.out.println("@group {"+group+"} dominant"); System.out.println("@balllist {"+group+"} radius= 3 color= "+color); for(Iterator iter = data.iterator(); iter.hasNext(); ) { // Point ID double[] vals = (double[]) iter.next(); System.out.print("{"); for(int i = 0; i < vals.length-2; i++) System.out.print(df.format(vals[i])+", "); System.out.print("} "); // Chis as kin coords int numCoords = (vals.length-2 >= 4 ? 3 : vals.length-2); // max = 3, min = 1 for(int i = (chi234 ? 1 : 0); i < (chi234 ? numCoords+1 : numCoords); i++) System.out.print(df.format(vals[i])+" "); System.out.println(); } } //}}} //{{{ plotQuats //############################################################################## /** * Prints 4-D kinemage of quaternions describing sidechain tip position * and orientation relative to the residue's own backbone. */ public void plotQuats(ArrayList data, ArrayList dataOrig) { System.out.println("@dimensions {X} {Y} {Z} {W}"); System.out.println("@dimminmax -1 1 -1 1 -1 1 -1 1"); System.out.println("@group {axis} dominant"); System.out.println("@vectorlist {axis}"); System.out.println("{axis}P -1 -1 -1"); System.out.println("{axis} 1 -1 -1"); System.out.println("{axis} 1 1 -1"); System.out.println("{axis} -1 1 -1"); System.out.println("{axis} -1 -1 -1"); System.out.println("{axis}P -1 -1 1"); System.out.println("{axis} 1 -1 1"); System.out.println("{axis} 1 1 1"); System.out.println("{axis} -1 1 1"); System.out.println("{axis} -1 -1 1"); System.out.println("{axis}P -1 -1 -1"); System.out.println("{axis} -1 -1 1"); System.out.println("{axis}P 1 -1 -1"); System.out.println("{axis} 1 -1 1"); System.out.println("{axis}P -1 1 -1"); System.out.println("{axis} -1 1 1"); System.out.println("{axis}P 1 1 -1"); System.out.println("{axis} 1 1 1"); System.out.println("@group {"+aaType+" quats "+dataOrig.size()+"/"+dataOrig.size()+"} dominant animate"); System.out.println("@balllist {"+aaType+" quats} radius= 0.05 dimension= 4"); for(Iterator iter = dataOrig.iterator(); iter.hasNext(); ) { double[] vals = (double[]) iter.next(); Quaternion quat = quatsOrig.get(vals); System.out.println("{"+Strings.arrayInParens(vals)+"}" + (data.contains(vals) ? " " : "gray ") +quat.getX()+" "+quat.getY()+" "+quat.getZ()+" "+quat.getW()); } int keep = (keepCnt != Integer.MAX_VALUE ? keepCnt : (int)Math.floor(dataOrig.size()*keepFrc)); System.out.println("@group {"+aaType+" quats "+keep+"/"+dataOrig.size()+"} dominant animate"); System.out.println("@balllist {"+aaType+" quats} radius= 0.05 dimension= 4"); for(Iterator iter = data.iterator(); iter.hasNext(); ) { double[] vals = (double[]) iter.next(); Quaternion quat = quats.get(vals); System.out.println("{"+Strings.arrayInParens(vals)+"} " +quat.getX()+" "+quat.getY()+" "+quat.getZ()+" "+quat.getW()); } } //}}} //{{{ writePdb //############################################################################## /** Write out PDB-format coordinates for conformers. */ public void writePdb(ArrayList data) { PdbWriter pdbWriter = new PdbWriter(System.out); pdbWriter.setRenumberAtoms(true); int i = 1; for(Iterator iter = data.iterator(); iter.hasNext(); )//i++) { double[] vals = (double[])iter.next(); Residue tempRes = residues.get(vals); ModelState tempState = states.get(vals); System.out.println("MODEL "+Strings.forceRight(""+i, 4)); pdbWriter.writeResidues(Collections.singletonList(tempRes), tempState); System.out.println("ENDMDL"); i++; } System.out.flush(); pdbWriter.close(); } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException, NumberFormatException { // Check arguments if(aaType == null || inFile == null) throw new IllegalArgumentException("Not enough command line arguments - need aatype & listfile"); // Read data from list file LineNumberReader in = new LineNumberReader(new FileReader(inFile)); ArrayList data = new ArrayList(); ArrayList dataOrig = new ArrayList(); // for our records String s; int nFields = -1; while((s = in.readLine()) != null) { if(s.startsWith("#")) continue; String[] parts = Strings.explode(s, ':'); if(nFields < 0) nFields = parts.length; else if(nFields != parts.length) throw new IllegalArgumentException("Data fields are of different lengths"); double[] vals = new double[nFields]; for(int i = 0; i < nFields; i++) vals[i] = Double.parseDouble(parts[i]); data.add(vals); dataOrig.add(vals); } in.close(); if (plotChis) { plotChis(data); return; // done } buildConformers(data); if(keepCnt != Integer.MAX_VALUE || !Double.isNaN(keepFrc)) { calcQuats(data); rmDuplicates(data, dataOrig); // directly modifies data repulse(data, dataOrig); // directly modifies data } if(printSamples) printSamples(data); else if(plotQuats) plotQuats(data, dataOrig); else writePdb(data); } public static void main(String[] args) { RotamerSampler mainprog = new RotamerSampler(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } catch(Throwable ex) { ex.printStackTrace(); System.err.println(); System.err.println("*** Error: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("RotamerSampler.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'RotamerSampler.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.sc.RotamerSampler"); System.err.println("Copyright (C) 2004 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { if(aaType == null) aaType = arg.toUpperCase(); else if(inFile == null) inFile = new File(arg); else throw new IllegalArgumentException("Too many command line arguments"); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-chionly")) { allAngles = false; } else if(flag.equals("-plotchis")) { plotChis = true; } else if(flag.equals("-plotquats")) { plotQuats = true; } else if(flag.equals("-printsamples")) { printSamples = true; } else if(flag.equals("-group")) { group = param; } else if(flag.equals("-color")) { color = param; } else if(flag.equals("-chi234")) { chi234 = true; } else if(flag.equals("-keep")) { try { double keep = Double.parseDouble(param); if (keep < 0) System.err.println("D'oh! -keep="+param+" must be >= 0... Ignoring flag"); else if(keep <= 1) { System.err.println("Treating -keep="+param+" as a fraction"); keepFrc = keep; } else if(keep > 1) { System.err.println("Treating -keep="+param+" as an integer count"); keepCnt = (int)Math.floor(keep); } } catch(NumberFormatException ex) { System.err.println("*** Error: couldn't parse -keep="+param+" as a double!"); } } else if(flag.equals("-inverse")) { inverse = true; } //{{{ OLD PAIRWISE ATOM-ATOM DISTANCE R3 SAMPLING STUFF //else if(flag.equals("-fracnotpruned")) //{ // try // { // fracNotPruned = Double.parseDouble(param); // numNotPruned = Integer.MIN_VALUE; // numSelected = Integer.MIN_VALUE; // } // catch (NumberFormatException nfe) // { // System.err.println("Couldn't parse "+param+" as double for fracNotPruned"); // } //} //else if(flag.equals("-numnotpruned")) //{ // try // { // numNotPruned = Integer.parseInt(param); // fracNotPruned = Double.NaN; // numSelected = Integer.MIN_VALUE; // } // catch (NumberFormatException nfe) // { // System.err.println("Couldn't parse "+param+" as int for numNotPruned"); // } //} //else if(flag.equals("-numselected")) //{ // try // { // numSelected = Integer.parseInt(param); // numNotPruned = Integer.MIN_VALUE; // fracNotPruned = Double.NaN; // } // catch (NumberFormatException nfe) // { // System.err.println("Couldn't parse "+param+" as int for numNotPruned"); // } //} //else if(flag.equals("-notprunedout") || flag.equals("-notprunedoutfile")) //{ // notPrunedOutFile = new File(param); //} //}}} else if(flag.equals("-v") || flag.equals("-verbose")) { verbose = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/sc/SidechainsLtoD.java0000644000000000000000000003624511531212726023407 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.sc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * SidechainsLtoD is a class for converting a PDB file of all * "normal" L-amino acids into D-amino acids. * It's structured after chiropraxis.sc.SidechainIdealizer. * *

    Copyright (C) 2008 by Daniel A. Keedy. All rights reserved. *
    Begun on Mon Dec 15 2008 */ public class SidechainsLtoD //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## boolean verbose; String filename; // of PDB we want to change from L to D Model model; ArrayList residues; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public SidechainsLtoD() { // nothing to see here... } //}}} //{{{ loadPdb //################################################################################################## ModelState loadPdb() throws IOException { File file = new File(filename); FileInputStream fis = new FileInputStream(file); PdbReader pdbr = new PdbReader(); CoordinateFile cf = pdbr.read(fis); model = cf.getFirstModel(); ModelState state = model.getState(); residues = new ArrayList(); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); residues.add(r); } return state; } //}}} //{{{ changeSidechainLtoD //################################################################################################## /** * For given residue, changes sidechain from L -> D and returns a new * ModelState reflecting this change. * * You can think of this procedure as simply pointing CA-CB in the direction * of CA-HA and vice versa. However, what we're really doing is modeled * after Ian's chiropraxis.sc.SidechainIdealizer.idealizeCD(), which uses * N, CA, C to construct an ideal CB. * * Then we'll transform the rest of the sidechain accordingly, maintaining * original bond lengths and angles (except for N-CA-CB and C-CA-CB). */ public ModelState changeSidechainLtoD(Residue res, ModelState orig) throws AtomException { if (res == null) { System.err.println("Cannot recognize residue "+res+"!"); return orig; } Triple t1, t2, ideal = new Triple(); Builder build = new Builder(); ModelState modState = new ModelState(orig); // These will trigger AtomExceptions if res is missing an Atom // because it will try to retrieve the state of null. AtomState aaN = orig.get( res.getAtom(" N ") ); AtomState aaCA = orig.get( res.getAtom(" CA ") ); AtomState aaC = orig.get( res.getAtom(" C ") ); // Build an ideal D-amino acid C-beta and swing the side chain into place Atom cBeta = res.getAtom(" CB "); if(cBeta != null) { // (1) Construct ideal C-beta for D-amino acid // Changed dihedrals to match where HA is instead of CB. // Used Ian's HA values from idealizeCB(); also confirmed // by visual inspection in KiNG t1 = build.construct4(aaN, aaC, aaCA, 1.536, 110.4, -118.3); // 123.1); t2 = build.construct4(aaC, aaN, aaCA, 1.536, 110.6, 118.2); //-123.0); ideal.likeMidpoint(t1, t2); // Construct rotation to align actual and ideal AtomState aaCB = orig.get(cBeta); double theta = Triple.angle(ideal, aaCA, aaCB); //SoftLog.err.println("Angle of correction: "+theta); t1.likeNormal(ideal, aaCA, aaCB).add(aaCA); Transform xform = new Transform().likeRotation(aaCA, t1, theta); // Apply the transformation for(Iterator iter = res.getAtoms().iterator(); iter.hasNext(); ) { Atom atom = (Atom)iter.next(); String name = atom.getName(); // Transform everything that's not mainchain if( !( name.equals(" N ") || name.equals(" H ") || name.equals(" CA ") || name.equals(" HA ") || name.equals("1HA ") || name.equals("2HA ") || name.equals(" HA2") || name.equals(" HA3") || name.equals(" C ") || name.equals(" O ")) ) { // Clone the original state, move it, and insert it into our model AtomState s1 = orig.get(atom); AtomState s2 = (AtomState)s1.clone(); xform.transform(s1, s2); modState.add(s2); }//if atom is not mainchain }//for each atom in the residue // (2) Construct second rotation around chi1 to address fact that // new D-amino acid sidechain now has eclipsed chi1 // This involves symmetrizing chi1 (i.e. x1 for L -> -x1 for D), // while the rest of the sidechain dihedrals are left untouched. String r = res.getName(); Atom xGamma = res.getAtom(" CG "); if (r == "GLY" || r == "ALA") xGamma = null; else if (r == "ILE" || r == "VAL") xGamma = res.getAtom(" CG1"); else if (r == "SER") xGamma = res.getAtom(" OG "); else if (r == "THR") xGamma = res.getAtom(" OG1"); else if (r == "CYS") xGamma = res.getAtom(" SG "); if (xGamma != null) // only makes sense for residue types w/ defined chi1 { AtomState aaXG = orig.get(xGamma); AtomState newXG = modState.get(xGamma); double origChi1 = Triple.dihedral(aaN, aaCA, aaCB, aaXG ); double currChi1 = Triple.dihedral(aaN, aaCA, ideal, newXG); double goalChi1 = -1.0 * origChi1; Transform xform2 = new Transform().likeRotation(aaCA, ideal, goalChi1-currChi1); // Apply the transformation for(Iterator iter = res.getAtoms().iterator(); iter.hasNext(); ) { Atom atom = (Atom)iter.next(); String name = atom.getName(); // Transform everything that's not mainchain or CB if( !( name.equals(" N ") || name.equals(" H ") || name.equals(" CA ") || name.equals(" HA ") || name.equals("1HA ") || name.equals("2HA ") || name.equals(" HA2") || name.equals(" HA3") || name.equals(" C ") || name.equals(" O ") || name.equals(" CB ") ) ) { // Clone the original state, move it, and insert it into our model // Use add+overwrite method b/c we don't wanna leave old, eclipsed // sidechain atoms in place in addition to new, non-eclipsed ones AtomState s3 = modState.get(atom); AtomState s4 = (AtomState)s3.clone(); xform2.transform(s3, s4); modState.addOverwrite(s4); // note overwrite }//if atom is not mainchain }//for each atom in the residue }//if chi1 defined }//rebuilt C-beta + sidechain // Reconstruct alpha hydrogens // These are easier -- just compute the position and make it so! Atom hAlpha = res.getAtom(" HA "); if(hAlpha != null) { AtomState s1 = orig.get(hAlpha); AtomState s2 = (AtomState)s1.clone(); // Changed dihedrals to match where CB is instead of HA. // Used Ian's CB values from idealizeCB() t1 = build.construct4(aaN, aaC, aaCA, 1.100, 107.9, 123.1); //-118.3); t2 = build.construct4(aaC, aaN, aaCA, 1.100, 108.1, -123.0); // 118.2); s2.likeMidpoint(t1, t2).sub(aaCA).unit().mult(1.100).add(aaCA); modState.add(s2); } // Now for glycine, and then we're done // I (keedy) reversed naming convention of two HA's for L -> D change. // (Who knows if that's "proper", but hey, it made sense to me...) hAlpha = res.getAtom("1HA "); if (hAlpha == null) res.getAtom(" HA2"); if(hAlpha != null) { AtomState s1 = orig.get(hAlpha); AtomState s2 = (AtomState)s1.clone(); t1 = build.construct4(aaN, aaC, aaCA, 1.100, 109.3, 121.6); //-121.6); t2 = build.construct4(aaC, aaN, aaCA, 1.100, 109.3, -121.6); // 121.6); s2.likeMidpoint(t1, t2).sub(aaCA).unit().mult(1.100).add(aaCA); modState.add(s2); } hAlpha = res.getAtom("2HA "); if (hAlpha == null) res.getAtom(" HA3"); if(hAlpha != null) { AtomState s1 = orig.get(hAlpha); AtomState s2 = (AtomState)s1.clone(); t1 = build.construct4(aaN, aaC, aaCA, 1.100, 109.3, -121.6); // 121.6); t2 = build.construct4(aaC, aaN, aaCA, 1.100, 109.3, 121.6); //-121.6); s2.likeMidpoint(t1, t2).sub(aaCA).unit().mult(1.100).add(aaCA); modState.add(s2); } return modState; } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { if (verbose) System.err.println("Starting Main method..."); try { ModelState state = loadPdb(); // could throw exception // Change L -> D for each sidechain, continuously updating 'state' for (int i = 0; i < residues.size(); i++) { Residue res = (Residue) residues.get(i); try { state = changeSidechainLtoD(res, state); } // could throw exception catch (AtomException ae) { System.err.println("Atom exception for residue "+res); } } // Output new PDB PdbWriter pdbWriter = new PdbWriter(System.out); pdbWriter.writeResidues(residues, state); pdbWriter.close(); } catch (IOException ioe) { System.err.println("I/O exception in reading PDB file "+filename+" ... exiting!"); System.exit(0); } } public static void main(String[] args) { SidechainsLtoD mainprog = new SidechainsLtoD(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("SidechainsLtoD.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'SidechainsLtoD.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.sc.SidechainsLtoD"); System.err.println("Copyright (C) 2008 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if (filename == null) filename = arg; else System.out.println("Didn't need "+arg+"; already have file "+filename); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-verbose") || flag.equals("-v")) { verbose = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/sc/SidechainIdealizer.java0000644000000000000000000007242511531212726024272 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.sc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.SoftLog; //}}} /** * SidechainIdealizer is a class for working with * ideal geometry side chains modeled in moldb2. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Thu Mar 20 14:08:45 EST 2003 */ public class SidechainIdealizer //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## SidechainAngles2 scAngles; Map idealSidechainMap; // Map> Map idealResMap; // Map Map idealResMapv23; ModelState idealResState; ModelState idealResStatev23; Builder builder; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public SidechainIdealizer() throws IOException { builder = new Builder(); scAngles = new SidechainAngles2(); //idealSidechainMap = loadIdealSidechains(); //doesn't currently seem to be used. loadIdealResidues(); loadIdealResiduesv23(); } //}}} //{{{ loadIdealSidechains //################################################################################################## /** * Opens a PDB of ideal geometry sc from the JAR, and enters coords in the table. * Coordinates are translated so that the C-alpha is at (0,0,0). * @return Map<Residue.getName(), Map<Atom.getName(), Triple>> */ Map loadIdealSidechains() throws IOException { InputStream is = this.getClass().getResourceAsStream("singlesc.pdb"); if(is == null) throw new IOException("File not found in JAR: singlesc.pdb"); PdbReader pdbr = new PdbReader(); CoordinateFile cf = pdbr.read(is); Model m = cf.getFirstModel(); ModelState s = m.getState(); Map rmap = new HashMap(); for(Iterator ri = m.getResidues().iterator(); ri.hasNext(); ) { try { Residue res = (Residue)ri.next(); AtomState ca = s.get( res.getAtom(" CA ") ); Map amap = new HashMap(); for(Iterator ai = res.getAtoms().iterator(); ai.hasNext(); ) { Atom a = (Atom)ai.next(); AtomState as = s.get(a); amap.put(a.getName(), new Triple(as).sub(ca)); } rmap.put(res.getName(), amap); } catch(AtomException ex) { ex.printStackTrace(); } } return rmap; } //}}} //{{{ loadIdealResides, getResidueTypes //################################################################################################## void loadIdealResidues() throws IOException { InputStream is = this.getClass().getResourceAsStream("singleres.pdb"); if(is == null) throw new IOException("File not found in JAR: singleres.pdb"); PdbReader pdbr = new PdbReader(); CoordinateFile cf = pdbr.read(is); Model m = cf.getFirstModel(); idealResState = m.getState(); idealResMap = new TreeMap(); for(Iterator iter = m.getResidues().iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); idealResMap.put(r.getName(), r); } } void loadIdealResiduesv23() throws IOException { InputStream is = this.getClass().getResourceAsStream("singleres-v23.pdb"); if(is == null) throw new IOException("File not found in JAR: singleres.pdb"); PdbReader pdbr = new PdbReader(); CoordinateFile cf = pdbr.read(is); Model m = cf.getFirstModel(); idealResStatev23 = m.getState(); idealResMapv23 = new TreeMap(); for(Iterator iter = m.getResidues().iterator(); iter.hasNext(); ) { Residue r = (Residue) iter.next(); idealResMapv23.put(r.getName(), r); } } /** Returns a collection of all the amino acid codes supported by makeIdealResidue(). */ public Collection getResidueTypes() { return Collections.unmodifiableCollection( idealResMap.keySet() ); } //}}} //{{{ idealizeCB //################################################################################################## /** * Given a heavy-atom backbone (N, CA, C) * this will reconstruct the C-beta and H-alpha(s) * if they already exist. * The existing sidechain will be rotated about the C-alpha * to bring it into the correct position. * *

    The reconstruction is specific to amino acid type * in the same manner as PKINANGL.c from Prekin. * Only bond angles (not lengths) are altered. * *

    You typically want {@link #idealizeSidechain(Residue, ModelState)} * instead of this function, because it idealizes all sidechain geometry. * * @return a new state, descended from orig, which contains * new states for all non-mainchain atoms. * @throws AtomException if any of the required backbone atoms * (N, CA, C) are missing. */ public static ModelState idealizeCB(Residue res, ModelState orig) throws AtomException { Triple t1, t2, ideal = new Triple(); Builder build = new Builder(); ModelState modState = new ModelState(orig); // These will trigger AtomExceptions if res is missing an Atom // because it will try to retrieve the state of null. AtomState aaN = orig.get( res.getAtom(" N ") ); AtomState aaCA = orig.get( res.getAtom(" CA ") ); AtomState aaC = orig.get( res.getAtom(" C ") ); // Build an ideal C-beta and swing the side chain into place Atom cBeta = res.getAtom(" CB "); if(cBeta != null) { // Construct ideal C-beta t1 = build.construct4(aaN, aaC, aaCA, 1.536, 110.4, 123.1); t2 = build.construct4(aaC, aaN, aaCA, 1.536, 110.6, -123.0); // (See below for deprecated method with generic values) if(res.getName().equals("ALA")) { t1 = build.construct4(aaN, aaC, aaCA, 1.536, 110.1, 122.9); t2 = build.construct4(aaC, aaN, aaCA, 1.536, 110.6, -122.6); } else if(res.getName().equals("PRO")) { t1 = build.construct4(aaN, aaC, aaCA, 1.530, 112.2, 115.1); t2 = build.construct4(aaC, aaN, aaCA, 1.530, 103.0, -120.7); } else if(res.getName().equals("VAL") || res.getName().equals("THR") || res.getName().equals("ILE")) { t1 = build.construct4(aaN, aaC, aaCA, 1.540, 111.5, 123.4); t2 = build.construct4(aaC, aaN, aaCA, 1.540, 109.1, -122.0); } else if(res.getName().equals("GLY")) { // I guess the "CB" is the HA1 in the case of Gly t1 = build.construct4(aaN, aaC, aaCA, 1.100, 109.3, 121.6); t2 = build.construct4(aaC, aaN, aaCA, 1.100, 109.3, -121.6); } else // anything else { t1 = build.construct4(aaN, aaC, aaCA, 1.530, 110.1, 122.8); t2 = build.construct4(aaC, aaN, aaCA, 1.530, 110.5, -122.6); } ideal.likeMidpoint(t1, t2); // Construct rotation to align actual and ideal AtomState aaCB = orig.get(cBeta); double theta = Triple.angle(ideal, aaCA, aaCB); //SoftLog.err.println("Angle of correction: "+theta); t1.likeNormal(ideal, aaCA, aaCB).add(aaCA); Transform xform = new Transform().likeRotation(aaCA, t1, theta); // Apply the transformation for(Iterator iter = res.getAtoms().iterator(); iter.hasNext(); ) { Atom atom = (Atom)iter.next(); String name = atom.getName(); // Transform everything that's not mainchain if( !( name.equals(" N ") || name.equals(" H ") || name.equals(" CA ") || name.equals(" HA ") || name.equals("1HA ") || name.equals("2HA ") || name.equals(" HA2") || name.equals(" HA3") || name.equals(" C ") || name.equals(" O ")) ) { // Clone the original state, move it, and insert it into our model AtomState s1 = orig.get(atom); AtomState s2 = (AtomState)s1.clone(); xform.transform(s1, s2); modState.add(s2); }//if atom is not mainchain }//for each atom in the residue }//rebuilt C-beta // Reconstruct alpha hydrogens // These are easier -- just compute the position and make it so! Atom hAlpha = res.getAtom(" HA "); if(hAlpha != null) { AtomState s1 = orig.get(hAlpha); AtomState s2 = (AtomState)s1.clone(); t1 = build.construct4(aaN, aaC, aaCA, 1.100, 107.9, -118.3); t2 = build.construct4(aaC, aaN, aaCA, 1.100, 108.1, 118.2); s2.likeMidpoint(t1, t2).sub(aaCA).unit().mult(1.100).add(aaCA); modState.add(s2); } // Now for glycine, and then we're done hAlpha = res.getAtom("1HA "); if (hAlpha == null) res.getAtom(" HA2"); if(hAlpha != null) { AtomState s1 = orig.get(hAlpha); AtomState s2 = (AtomState)s1.clone(); t1 = build.construct4(aaN, aaC, aaCA, 1.100, 109.3, -121.6); t2 = build.construct4(aaC, aaN, aaCA, 1.100, 109.3, 121.6); s2.likeMidpoint(t1, t2).sub(aaCA).unit().mult(1.100).add(aaCA); modState.add(s2); } hAlpha = res.getAtom("2HA "); if (hAlpha == null) res.getAtom(" HA3"); if(hAlpha != null) { AtomState s1 = orig.get(hAlpha); AtomState s2 = (AtomState)s1.clone(); t1 = build.construct4(aaN, aaC, aaCA, 1.100, 109.3, 121.6); t2 = build.construct4(aaC, aaN, aaCA, 1.100, 109.3, -121.6); s2.likeMidpoint(t1, t2).sub(aaCA).unit().mult(1.100).add(aaCA); modState.add(s2); } return modState; } //}}} //{{{ idealizeCB [DEPRECATED] //################################################################################################## // /** // * Given a heavy-atom backbone (N, CA, C) // * this will reconstruct the C-beta and H-alpha(s) // * if they already exist. // * The existing sidechain will be rotated about the C-alpha // * to bring it into the correct position. // * // *

    The reconstruction is fully generic and is not // * adjusted for the type of residue under consideration. // * Only bond angles (not lengths) are altered. // * // *

    You typically want {@link #idealizeSidechain(Residue, ModelState)} // * instead of this function, because it idealizes all sidechain geometry. // * // * @return a new state, descended from orig, which contains // * new states for all non-mainchain atoms. // * @throws AtomException if any of the required backbone atoms // * (N, CA, C) are missing. // */ // public static ModelState idealizeCB(Residue res, ModelState orig) throws AtomException // { // Triple t1, t2, ideal = new Triple(); // Builder build = new Builder(); // ModelState modState = new ModelState(orig); // // // These will trigger AtomExceptions if res is missing an Atom // // because it will try to retrieve the state of null. // AtomState aaN = orig.get( res.getAtom(" N ") ); // AtomState aaCA = orig.get( res.getAtom(" CA ") ); // AtomState aaC = orig.get( res.getAtom(" C ") ); // // // Build an ideal C-beta and swing the side chain into place // Atom cBeta = res.getAtom(" CB "); // if(cBeta != null) // { // // Construct ideal C-beta // t1 = build.construct4(aaN, aaC, aaCA, 1.536, 110.4, 123.1); // t2 = build.construct4(aaC, aaN, aaCA, 1.536, 110.6, -123.0); // ideal.likeMidpoint(t1, t2); // // // Construct rotation to align actual and ideal // AtomState aaCB = orig.get(cBeta); // double theta = Triple.angle(ideal, aaCA, aaCB); // //SoftLog.err.println("Angle of correction: "+theta); // t1.likeNormal(ideal, aaCA, aaCB).add(aaCA); // Transform xform = new Transform().likeRotation(aaCA, t1, theta); // // // Apply the transformation // for(Iterator iter = res.getAtoms().iterator(); iter.hasNext(); ) // { // Atom atom = (Atom)iter.next(); // String name = atom.getName(); // // // Transform everything that's not mainchain // if( !( name.equals(" N ") || name.equals(" H ") // || name.equals(" CA ") || name.equals(" HA ") // || name.equals("1HA ") || name.equals("2HA ") // || name.equals(" HA2") || name.equals(" HA3") // || name.equals(" C ") || name.equals(" O ")) ) // { // // Clone the original state, move it, and insert it into our model // AtomState s1 = orig.get(atom); // AtomState s2 = (AtomState)s1.clone(); // xform.transform(s1, s2); // modState.add(s2); // }//if atom is not mainchain // }//for each atom in the residue // }//rebuilt C-beta // // // // Reconstruct alpha hydrogens // // These are easier -- just compute the position and make it so! // Atom hAlpha = res.getAtom(" HA "); // if(hAlpha != null) // { // AtomState s1 = orig.get(hAlpha); // AtomState s2 = (AtomState)s1.clone(); // t1 = build.construct4(aaN, aaC, aaCA, 1.100, 107.9, -118.3); // t2 = build.construct4(aaC, aaN, aaCA, 1.100, 108.1, 118.2); // s2.likeMidpoint(t1, t2).sub(aaCA).unit().mult(1.100).add(aaCA); // modState.add(s2); // } // // // Now for glycine, and then we're done // hAlpha = res.getAtom("1HA "); // if (hAlpha == null) res.getAtom(" HA2"); // if(hAlpha != null) // { // AtomState s1 = orig.get(hAlpha); // AtomState s2 = (AtomState)s1.clone(); // t1 = build.construct4(aaN, aaC, aaCA, 1.100, 109.3, -121.6); // t2 = build.construct4(aaC, aaN, aaCA, 1.100, 109.3, 121.6); // s2.likeMidpoint(t1, t2).sub(aaCA).unit().mult(1.100).add(aaCA); // modState.add(s2); // } // hAlpha = res.getAtom("2HA "); // if (hAlpha == null) res.getAtom(" HA3"); // if(hAlpha != null) // { // AtomState s1 = orig.get(hAlpha); // AtomState s2 = (AtomState)s1.clone(); // t1 = build.construct4(aaN, aaC, aaCA, 1.100, 109.3, 121.6); // t2 = build.construct4(aaC, aaN, aaCA, 1.100, 109.3, -121.6); // s2.likeMidpoint(t1, t2).sub(aaCA).unit().mult(1.100).add(aaCA); // modState.add(s2); // } // // return modState; // } //}}} //{{{ *** Dave's notes on CB idealization *** //################################################################################################## /* Idealizing the Cb:dist,angle,dihedral, ideal-tau dist, angleCAB,dihedralNCAB,angleideal dist, angleNAB,dihedralCNAB,angleideal Ala, from C: 1.536 ?, 110.1, 122.9, 111.2 (Ala)(i.e., N,C,Ca,Cb) Ala, from N: 1.536 ?, 110.6, -122.6, 111.2 (i.e., C,N,Ca,Cb) Pro, from C: 1.530 ?, 112.2, 115.1, 111.8 (Pro) Pro, from N: 1.530 ?, 103.0, -120.7, 111.8 Val, from C: 1.540 ?, 109.1, 123.4, 111.2 (Val,Thr,Ile) Val, from N: 1.540 ?, 111.5, -122.0, 111.2 Leu, from C: 1.530 ?, 110.1, 122.8, 111.2 (Leu,Met,Phe,Ser,...others) Leu, from N: 1.530 ?, 110.5, -122.6, 111.2 Gly, form C: 1.100 ?, 109.3, 121.6, 112.5 (Gly HA1) Gly, form C: 1.100 ?, 109.3, -121.6, 112.5 atom abreviation convention: N==N, A==Ca, C==C, B==Cb construct fourth point from N C Ca -- betaNCAB construct fourth point form C N Ca -- betaCNAB average: (betaNCAB + betaCNAB)/2 ==> betaxyz recompute distance of averaged beta position: adjust betaxyz to be at ideal distance, i.e. scale Ca--betaxyz distance. compute the deviation from ideal beta position: distance between original Cb position and ideal beta position. dihedral: N---CA---CBideal---CBactual (from N---Ca direction) dihedralNABB = dihedral4pt(N,Ca,Cbideal,Cborig); So dihedral is from N---Ca direction and the plane splitting Tau is at ~60 deg. The pair of computed Cb's will lie on either side of this plane. Convex side of Tau is the (-120 dihedral) side of the Cbetadeviation. As Tau gets larger, the computed Cb's get pushed across the plane from either side since the canonical N Ca Cb and C Ca Cb angles are larger than the angle to a line in the splitting plane at a given dihedral to the N C Ca plane. So prekin's ideal Cb is pushed toward the convex side of Tau, and prekin's ideal Cb has smaller N Ca Cb and C Ca Cb angles than canonical. In order to restore canonical angles, the Cb would be pushed to make the dihedral angle from the N C Ca plane larger, i.e. pushed even further toward the convex side of Tau. Concave side of Tau is the (+60 dihedral) side of the Cbetadeviation. As Tau gts smaller, the computed Cb's do not meet the plane from either side since the canonical N Ca Cb and C Ca Cb angles are smaller than the angle to a line in the splitting plane at a given dihedral to the N C Ca plane. So prekin's ideal Cb is pushed toward the cancave side of Tau, and prekin's ideal Cb has larger N Ca Cb and C Ca Cb angles than canonical. In order to restore canonical angles, the Cb would be pushed to make the dihedral angle from the N C Ca plane smaller, i.e. pushed even further toward the concave side of Tau. If refinement programs forces the angles C,Ca,Cb and N,Ca,Cb to be canonical, then the deposited coord for Cb would be offset in these ways from prekin's ideal Cbeta. Note: If N Ca C always stay in the same plane, then as Tau changes from 180 to 0 the angles N Ca Cb and C Ca Cb go from 90 to a maximum. In as much as the only difference in geometry for different Tau angles is just the simple opening angle of the simple angle Tau, then those atoms do stay in the same plane, i.e. the effective axis of the Tau angle change is perpendicular to the N Ca C plane and NOT along the Ca---Cb vector. */ //}}} //{{{ [BROKEN] idealizeSidechain //################################################################################################## /** * Idealizes all aspects of sidechain geometry (bond lengths and angles). * Dihedrals are preserved from the original model. * All heavy atoms must be present, but H's are optional. * This method will not create missing atoms, only move existing ones. * It returns start if the residue is of unknown type. * *

    Doesn't work right for Ala Hs -- randomly oriented. * / public ModelState idealizeSidechain(Residue res, ModelState start) { Map atomMap = (Map)idealSidechainMap.get(res.getName()); if(atomMap == null) // a residue we don't recognize return start; // Save initial conformation. Chis only b/c we might lack H's. double[] chis = scAngles.measureChiAngles(res, start); //DEBUG: for(int i = 0; i < chis.length; i++) SoftLog.err.println("chi"+(i+1)+"="+chis[i]); // This step corrects bond lengths and angles, // but leaves Ca-Cb oriented randomly. ModelState end = new ModelState(start); AtomState ca = start.get( res.getAtom(" CA ") ); for(Iterator iter = res.getAtoms().iterator(); iter.hasNext(); ) { Atom a = (Atom)iter.next(); Triple t = (Triple)atomMap.get(a.getName()); if(t != null) // we have coords for this atom { AtomState s1 = start.get(a); AtomState s2 = (AtomState)s1.clone(); s2.like(t).add(ca); // t has Ca at 0,0,0 end.add(s2); } } // This step corrects Ca-Cb orientation. end = idealizeCB(res, end); // Restore original orientation (chi angles) end = scAngles.setChiAngles(res, end, chis); return end; }*/ //}}} //{{{ idealizeSidechain //################################################################################################## /** * Idealizes all aspects of sidechain geometry (bond lengths and angles). * Dihedrals are preserved from the original model. * All heavy atoms must be present, but H's are optional. * This method will not create missing atoms, only move existing ones. * It also doesn't move atoms that aren't present in the idealized residues; * this caused issues with the PDB format change. * It returns start if the residue is of unknown type. */ public ModelState idealizeSidechain(Residue res, ModelState start) { Residue idealRes = (Residue) idealResMap.get(res.getName()); Residue idealResv23 = (Residue) idealResMapv23.get(res.getName()); if((idealRes == null)||(idealResv23 == null)) // a residue we don't recognize return start; // Save initial conformation. Chis only b/c we might lack H's. // Actually, we can do all angles and ignore any NaN's we get. double[] chis = scAngles.measureAllAngles(res, start); //DEBUG: for(int i = 0; i < chis.length; i++) SoftLog.err.println("chi"+(i+1)+"="+chis[i]); try { ModelState end = new ModelState(start); AtomState ca1 = start.get( res.getAtom(" CA ") ); AtomState n1 = start.get( res.getAtom(" N ") ); AtomState c1 = start.get( res.getAtom(" C ") ); AtomState ca2 = idealResState.get( idealRes.getAtom(" CA ") ); AtomState n2 = idealResState.get( idealRes.getAtom(" N ") ); AtomState c2 = idealResState.get( idealRes.getAtom(" C ") ); Transform xform = builder.dock3on3(ca1, n1, c1, ca2, n2, c2); for(Iterator iter = res.getAtoms().iterator(); iter.hasNext(); ) { try { Atom a1 = (Atom)iter.next(); String nm = a1.getName(); Atom a2 = idealRes.getAtom(nm); if(!(nm.equals(" N ") || nm.equals(" H ") || nm.equals(" C ") || nm.equals(" O "))) { AtomState s1 = start.get(a1); AtomState s2; if (a2 != null) { s2 = idealResState.get(a2); } else { s2 = idealResStatev23.get(idealResv23.getAtom(nm)); //should only be called on atoms that got changed. } AtomState s3 = (AtomState)s1.clone(); //System.out.println("moving "+s2.toString()+" onto "+s3.toString()); xform.transform(s2, s3); // transforms it into position end.add(s3); } } catch(AtomException ex) {} // no action } // Correct for non-ideal tau angle end = idealizeCB(res, end); // Restore original orientation (chi angles) end = scAngles.setAllAngles(res, end, chis); return end; } catch(AtomException ex) { return start; } } //}}} //{{{ makeIdealResidue //################################################################################################## /** * Creates an ideal geometry residue at an arbitrary position/orientation. * @param chain the chain ID. Not zero. Space (' ') is a good default. * @param segment the seg ID. Not null. Empty string ("") is a good default. * @param seqNum the number in sequence. May have any value. * @param insCode the insertion code. Not zero. Space (' ') is a good default. * @param resName one of the three letter codes returned by getResidueTypes(). * @param outputState a ModelState that will have the new AtomStates added to it. * @param doPdbv3 boolean for making a residue with Pdbv3 names (vs pdbv2.3 names) * @return the new residue of the specified type. * @throws IllegalArgumentException if aaType is not a recognized amino acid code. */ public Residue makeIdealResidue(String chain, String segment, String seqNum, String insCode, String resName, ModelState outputState, boolean doPdbv3) { // Get template Map resMap; ModelState resState; if (doPdbv3) { resMap = idealResMap; resState = idealResState; } else { resMap = idealResMapv23; resState = idealResStatev23; } if(!resMap.containsKey(resName)) throw new IllegalArgumentException("'"+resName+"' is not a known amino acid"); Residue templateRes = (Residue) resMap.get(resName); // Copy it, with a new name try { Residue newRes = new Residue(templateRes, chain, segment, seqNum, insCode, resName); newRes.cloneStates(templateRes, resState, outputState); return newRes; } catch(AtomException ex) { ex.printStackTrace(); return null; } } /** legacy version that defaults to using old (pdb v2.3) format **/ public Residue makeIdealResidue(String chain, String segment, String seqNum, String insCode, String resName, ModelState outputState) { return makeIdealResidue(chain, segment, seqNum, insCode, resName, outputState, false); } //}}} //{{{ dockResidue //################################################################################################## /** * Docks the backbone of one residue onto that of another. * All backbone atoms are adjusted to match the original exactly, * then the CB position is idealized using idealizeCB(). * Neither of the original states is modified. * @throws AtomException if the N, CA, or C atom is missing in from or to. */ public ModelState dockResidue(Residue mobRes, ModelState mob, Residue refRes, ModelState ref) throws AtomException { // Reposition all atoms Transform xform = builder.dock3on3( ref.get(refRes.getAtom(" CA ")), ref.get(refRes.getAtom(" N ")), ref.get(refRes.getAtom(" C ")), mob.get(mobRes.getAtom(" CA ")), mob.get(mobRes.getAtom(" N ")), mob.get(mobRes.getAtom(" C ")) ); ModelState out = new ModelState(mob); for(Iterator iter = mobRes.getAtoms().iterator(); iter.hasNext(); ) { Atom a = (Atom) iter.next(); AtomState s1 = mob.get(a); AtomState s2 = (AtomState) s1.clone(); out.add(s2); xform.transform(s2); } // Reposition backbone atoms out.get(mobRes.getAtom(" N ")).like(ref.get(refRes.getAtom(" N "))); out.get(mobRes.getAtom(" CA ")).like(ref.get(refRes.getAtom(" CA "))); out.get(mobRes.getAtom(" C ")).like(ref.get(refRes.getAtom(" C "))); try { out.get(mobRes.getAtom(" O ")).like(ref.get(refRes.getAtom(" O "))); } catch(AtomException ex) {} try { if(!mobRes.getName().equals("PRO") && refRes.getName().equals("PRO")) { // Pro N-CD vector scaled to N-H length (1.0 Angstroms) Triple refN = ref.get(refRes.getAtom(" N ")); Triple refH = ref.get(refRes.getAtom(" CD ")); Triple refNH = new Triple(refN).add(new Triple().likeVector(refN, refH).unit()); out.get(mobRes.getAtom(" H ")).like(refNH); } else out.get(mobRes.getAtom(" H ")).like(ref.get(refRes.getAtom(" H "))); } catch(AtomException ex) {} return idealizeCB(mobRes, out); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/sc/RotamerDef.java0000644000000000000000000000335711531212726022600 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.sc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * RotamerDef is for storing the various details associated * with a single rotameric conformation (for a particular type of side-chain). * It exists primarily as a data structure for use by SidechainAngles. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Thu May 15 12:58:31 EDT 2003 */ public class RotamerDef //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //################################################################################################## public String rotamerName; public String frequency = null; // allows for things like "<1%" public double[] chiAngles; //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor */ public RotamerDef() { } //}}} //{{{ toString //################################################################################################## public String toString() { if(frequency != null) return rotamerName+" - "+frequency; else return rotamerName; } //}}} //{{{ empty_code_segment //################################################################################################## //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/sc/DihedralPlotter.java0000644000000000000000000004562611531212726023643 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.sc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.util.Strings; //}}} /** * DihedralPlotter plots dihedrals and their associated probability * values in the same multi-dimensional space. * * Input: * - Silk pct '.data' file * - Silk RotamerSampler '.list' file - adds sampled rotamers (opt'l) * * The template for the structure of this class was roughly silk.util.RotamerSampler. * *

    Copyright (C) 2008 by Daniel A. Keedy. All rights reserved. *
    Begun on Mon Apr 14 2008 */ public class DihedralPlotter //extends ... implements ... { //{{{ Constants PrintStream o = System.out; PrintStream e = System.err; static DecimalFormat df = new DecimalFormat("###.#"); static DecimalFormat df2 = new DecimalFormat("#.#########"); //}}} //{{{ Variable definitions //############################################################################## boolean verbose = false; /** If false, @kinemage and axis are drawn */ boolean append = false; /** If provided, used for group name */ String label = null; File pctFile = null; File sampFile = null; /** Replicate points above this value in a separate list. Derived from cmdline: -cutoff=# */ float sampCutoff = Float.NaN; /** Scale probability values to min out at this floor and max out at this ceiling */ float probFlor = 0; float probCeil = 100; /** Grid points with pct below this value won't be displayed */ float probMin = (float) 0.0005; // 99.95% = general noGPpreP Rama outlier cutoff /** Includes prob at end, so #dihedrals + 1 */ int nDim = Integer.MAX_VALUE; /** Max value derived from data; used internally for normalization */ float maxProb = Float.NaN; /* int[] min = null; // actual min/max of data; will be used to int[] max = null; // shift up to a 0,360 range (does not rescale!) boolean scale = false; // actually rescales everything according to min/max */ /** Determines how axes for dihedrals are drawn; value axis is always 0 to probCeil. * Derived from cmdline: -bounds=xmin,xmax,ymin,ymax,... */ int[] bounds = null; //}}} //{{{ Constructor(s) //############################################################################## public DihedralPlotter() { super(); } //}}} //{{{ doChecks //############################################################################## public void doChecks() throws FileNotFoundException, IllegalArgumentException { // Check #1 if(pctFile == null) throw new IllegalArgumentException("*** Must specify at least one filename"); // Get facts about input data Scanner s1 = new Scanner(pctFile); while (s1.hasNextLine()) { String line = s1.nextLine(); if(!line.startsWith("#")) { // Number of dimensions String[] parts = Strings.explode(line, ' '); if(parts.length == 1) parts = Strings.explode(line, ':'); nDim = parts.length; // Max probability (for normalization) float prob = Float.parseFloat(parts[parts.length-1]); if(Float.isNaN(maxProb)) maxProb = prob; else if(prob > maxProb) maxProb = prob; } } if(verbose) e.println("Found "+(nDim-1)+" dihedral(s) plus 1 value"); // Another check if(bounds == null) { if(verbose) e.println("Didn't provide -bounds=xmin,xmax,... so using 0,360"); bounds = new int[2*(nDim-1)]; for(int i = 0; i < 2*(nDim-1); i++) { //bounds[i] = 0; //bounds[i+1] = 360; if(i%2 == 0) bounds[i] = 0; else bounds[i] = 360; } } // Last one if(nDim == Integer.MAX_VALUE) { System.err.println("*** Couldn't figure out number of dimensions! Quitting..."); System.exit(0); } // ... OK, one more if(label == null) { String f = pctFile.getName(); if(f.indexOf(".") != -1) label = f.substring(0,f.indexOf(".")); else label = f; } } //}}} //{{{ doKin //############################################################################## public void doKin() throws FileNotFoundException { if(!append) { o.println("@kinemage {"+label+"}"); doAxes(); } doHeader(); doPct(); if(sampFile != null) doSamp(); o.flush(); } //}}} //{{{ doAxes //############################################################################## public void doAxes() { o.print( "@group {axes} dominant\n"+ "@vectorlist {axes} color= white width= 1\n"); if(nDim == 2) o.print( "{ 0 "+probFlor+"}P 0 "+probFlor+"\n"+ "{ 0 "+probCeil+"} 0 "+probCeil+"\n"+ "{360 "+probCeil+"} 360 "+probCeil+"\n"+ "{360 "+probFlor+"} 360 "+probFlor+"\n"+ "{ 0 "+probFlor+"} 0 "+probFlor+"\n"); else o.print( "{ 0 0 "+probFlor+"}P 0 0 "+probFlor+"\n"+ "{ 0 360 "+probFlor+"} 0 360 "+probFlor+"\n"+ "{360 360 "+probFlor+"} 360 360 "+probFlor+"\n"+ "{360 0 "+probFlor+"} 360 0 "+probFlor+"\n"+ "{ 0 0 "+probFlor+"} 0 0 "+probFlor+"\n"+ "{ 0 0 "+probCeil+"}P 0 0 "+probCeil+"\n"+ "{ 0 360 "+probCeil+"} 0 360 "+probCeil+"\n"+ "{360 360 "+probCeil+"} 360 360 "+probCeil+"\n"+ "{360 0 "+probCeil+"} 360 0 "+probCeil+"\n"+ "{ 0 0 "+probCeil+"} 0 0 "+probCeil+"\n"+ "{ 0 0 "+probFlor+"}P 0 0 "+probFlor+"\n"+ "{ 0 0 "+probCeil+"} 0 0 "+probCeil+"\n"+ "{ 0 360 "+probFlor+"}P 0 360 "+probFlor+"\n"+ "{ 0 360 "+probCeil+"} 0 360 "+probCeil+"\n"+ "{360 360 "+probFlor+"}P 360 360 "+probFlor+"\n"+ "{360 360 "+probCeil+"} 360 360 "+probCeil+"\n"+ "{360 0 "+probFlor+"}P 360 0 "+probFlor+"\n+"+ "{360 0 "+probCeil+"} 360 0 "+probCeil+"\n"); } //}}} //{{{ doHeader //############################################################################## public void doHeader() { if(nDim == 2) o.println("@flat"); if(nDim >= 4) o.println("@1axischoice 1 2 "+nDim); o.print("@dimensions "); for(int i = 1; i < nDim; i++) o.print(" {chi"+i+"?}"); o.println(" {norm'd probability}"); o.print("@dimminmax "); for(int i = 0; i < 2*(nDim-1); i++) o.print(" "+bounds[i]);//0 360");//" "+min[i]+" "+max[i]); o.println(); o.println("@group {"+label+"} animate dominant"); } //}}} //{{{ doPct //############################################################################## public void doPct() throws FileNotFoundException { o.println("@balllist {pct} master= {pct} dimension= "+nDim); Scanner s = new Scanner(pctFile); while(s.hasNextLine()) { String line = s.nextLine(); if(!line.startsWith("#")) { String[] parts = Strings.explode(line, ' '); if(parts.length == 1) parts = Strings.explode(line, ':'); if(parts.length == 1) { System.err.println("*** Error parsing line: "+line); continue; } float[] coords = new float[parts.length]; for(int i = 0; i < parts.length; i++) coords[i] = Float.parseFloat(parts[i]); float prob = coords[coords.length-1]; if(prob >= probMin) { // Point ID o.print( "{"+df.format(coords[0]) ); for(int i = 1; i < coords.length-1; i++) o.print( ", "+df.format(coords[i]) ); o.print( ", pct="+df2.format(prob)+"} " ); // Radius float rad = prob*2; // radii scale linearly //double rad = 2 * Math.pow( (3*prob)/(4*Math.PI) , 0.333); // volumes scale linearly o.print("r="+rad+" "); // Coloring if(prob < 0.1) o.print("peachtint "); else if(prob >= 0.1 && prob < 0.2) o.print("peach "); else o.print("orange "); // Actual multi-D coordinates /* for(int i = 0; i < coords.length-1; i++) { if(scale) { double scaledCoord = ( (coords[i]-1.0*min[i]) / (1.0*max[i]-1.0*min[i]) ) * 360; coords[i] = scaledCoord; } else { // e.g. -85 from -90->90 data => -85+(0--90) = -85+90 = 5 coords[i] = coords[i] + (0 - min[i]); if(coords[i] > 360) coords[i] = coords[i] - 360; } } */ for(int i = 0; i < coords.length-1; i++) { // e.g. -85 from -90->90 data => -85+(0--90) = -85+90 = 5 coords[i] = coords[i] + (0 - bounds[2*i]); // min if(coords[i] > 360) coords[i] = coords[i] - 360; // max } for(int i = 0; i < coords.length-1; i++) o.print( df.format(coords[i])+" " ); float normProb = probCeil * (prob / maxProb); o.println( df2.format(normProb) ); } //else System.err.println(prob+" NOT >= "+probMin); } } } //}}} //{{{ doSamp //############################################################################## public void doSamp() throws FileNotFoundException { o.println("@balllist {samp} radius= 2.0 color= green master= {samp} dimension= "+nDim); Scanner s = new Scanner(sampFile); while (s.hasNextLine()) { String line = s.nextLine(); if(!line.startsWith("#")) { String[] parts = Strings.explode(line, ' '); if(parts.length == 1) parts = Strings.explode(line, ':'); if(parts.length == 1) { System.err.println("*** Error parsing line: "+line); continue; } float[] coords = new float[parts.length]; for(int i = 0; i < parts.length; i++) coords[i] = Float.parseFloat(parts[i]); float prob = coords[coords.length-1]; if(prob >= probMin) { // Point ID o.print( "{"+df.format(coords[0]) ); // skip last 2 instead of 1 columns b/c .list files report stat AND pct, not just pct for(int i = 1; i < coords.length-2; i++) o.print( ", "+df.format(coords[i]) ); o.print( ", pct="+df2.format(prob)+"} " ); // Actual multi-D coordinates /* for(int i = 0; i < coords.length-2; i++) { if(scale) { double scaledCoord = ( (coords[i]-1.0*min[i]) / (1.0*max[i]-1.0*min[i]) ) * 360; coords[i] = scaledCoord; } else { // e.g. -85 from -90->90 data => -85+(0--90) = -85+90 = 5 coords[i] = coords[i] + (0 - min[i]); if(coords[i] > 360) coords[i] = coords[i] - 360; } } */ for(int i = 0; i < coords.length-2; i++) { // e.g. -85 from -90->90 data => -85+(0--90) = -85+90 = 5 coords[i] = coords[i] + (0 - bounds[2*i]); // min if(coords[i] > 360) coords[i] = coords[i] - 360; // max } // skip last 2 instead of 1 columns b/c .list files report stat AND pct, not just pct for(int i = 0; i < coords.length-2; i++) o.print( df.format(coords[i])+" " ); float normProb = probCeil * (prob / maxProb); o.println( df2.format(normProb) ); } //else System.err.println(prob+" NOT >= "+probMin); } } } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { doChecks(); doKin(); } public static void main(String[] args) { DihedralPlotter mainprog = new DihedralPlotter(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); System.err.println("*** Error in execution: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("DihedralPlotter.help"); if(is == null) { System.err.println( "\nUsage: java DihedralPlotter fromsilk.data [fromsilk-rotasamp.list] [opts]"); System.err.println( "\n*** Unable to locate help information in 'DihedralPlotter.help' ***\n"); } else { try { streamcopy(is, o); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.sc.DihedralPlotter"); System.err.println("Copyright (C) 2008 by Daniel A. Keedy. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here if(pctFile == null) pctFile = new File(arg); else if(sampFile == null) sampFile = new File(arg); else throw new IllegalArgumentException("Too many file names: "+arg); } void interpretFlag(String flag, String param) { try { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-verbose") || flag.equals("-v")) { verbose = true; } else if(flag.equals("-label")) { label = param; } else if(flag.equals("-cutoff")) { try { sampCutoff = Float.parseFloat(param); } catch (NumberFormatException nfe) { System.err.println("Can't parse -cutoff="+param+" as a float"); } } else if(flag.equals("-bounds")) { String[] s = Strings.explode(param, ','); bounds = new int[s.length]; for(int i = 0; i < s.length; i++) bounds[i] = Integer.parseInt(s[i]); } else if(flag.equals("-append")) { append = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } catch(NumberFormatException ex) { throw new IllegalArgumentException("Non-number argument to "+flag+": '"+param+"'"); } } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/sc/DisulfSampler.java0000644000000000000000000004451311531212726023321 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.sc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.Strings; //}}} /** * DisulfSampler accepts a list of chi angles and figures * of merit for a disulfide, and translates them into PDB-format coordinates * for one amino acid type. * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Tue Jan 6 15:33:28 EST 2004 */ public class DisulfSampler extends RotamerSampler // implements ... { //{{{ Constants String aaType = "CIS"; /** Higher indices into this string are LESS remote */ public static final String REMOTENESS = "HZEDGBA "; //}}} //{{{ Variable definitions //############################################################################## File inFile = null; Residue res1 = null; // our "template" residues Residue res2 = null; // our "template" residues int nAngles = 5; String chisSupplied = "1,2,3"; boolean plotChis = false; String group = null; String color = null; //}}} //{{{ Constructor(s) //############################################################################## public DisulfSampler() { super(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ setChi, areParentAndChild //############################################################################## /** * Rotates appropriate atoms in the model disulfide coordinates to set the * given dihedral, then returns the resulting ModelState. * This method is modeled after SidechainAngles2.setAngle. */ public ModelState setChi(int chi, Residue res1, Residue res2, ModelState state, double endAngle) throws AtomException { ArrayList allAtoms = new ArrayList(); for (Iterator iter = res1.getAtoms().iterator(); iter.hasNext(); ) allAtoms.add((Atom)iter.next()); for (Iterator iter = res2.getAtoms().iterator(); iter.hasNext(); ) allAtoms.add((Atom)iter.next()); AtomState a1 = null, a2 = null, a3 = null, a4 = null; //{{{ ... set coordinates for four atoms comprising dihedral if (chi == 1) { a1 = state.get(res1.getAtom(" N ")); a2 = state.get(res1.getAtom(" CA ")); a3 = state.get(res1.getAtom(" CB ")); a4 = state.get(res1.getAtom(" SG ")); } if (chi == 2) { a1 = state.get(res1.getAtom(" CA ")); a2 = state.get(res1.getAtom(" CB ")); a3 = state.get(res1.getAtom(" SG ")); a4 = state.get(res2.getAtom(" SG ")); } if (chi == 3) { a1 = state.get(res1.getAtom(" CB ")); a2 = state.get(res1.getAtom(" SG ")); a3 = state.get(res2.getAtom(" SG ")); a4 = state.get(res2.getAtom(" CB ")); } if (chi == 4) { a1 = state.get(res1.getAtom(" SG ")); a2 = state.get(res2.getAtom(" SG ")); a3 = state.get(res2.getAtom(" CB ")); a4 = state.get(res2.getAtom(" CA ")); } if (chi == 5) { a1 = state.get(res2.getAtom(" SG ")); a2 = state.get(res2.getAtom(" CB ")); a3 = state.get(res2.getAtom(" CA ")); a4 = state.get(res2.getAtom(" N ")); } //}}} double startAngle = Triple.dihedral(a1, a2, a3, a4); double dTheta = endAngle - startAngle; Transform rot = new Transform(); rot.likeRotation(a2, a3, dTheta); ModelState ms = new ModelState(state); for(Iterator iter = allAtoms.iterator(); iter.hasNext(); ) { Atom atom = (Atom)iter.next(); a1 = state.get(atom); a2 = (AtomState)a1.clone(); if( areParentAndChild(a3.getAtom(), atom, a3.getAtom().getResidue(), atom.getResidue()) ) { //System.err.println("Rotating \t"+atom+" for chi"+chi); //Triple a2old = new Triple(a2); rot.transform(a2); //System.err.println(atom+" moved "+Triple.distance(a2, a2old)+" for chi"+chi); ms.add(a2); } //else System.err.println("Not rotating \t"+atom+" for chi"+chi); } return ms; } protected boolean areParentAndChild(Atom parent, Atom child, Residue parentRes, Residue childRes) { // See if putative 'child' atom is further than putative 'parent' atom // along the length of the disulfide residue-wise (defined as 1->2) int cn = childRes.getSequenceInteger(); int pn = parentRes.getSequenceInteger(); if (cn > pn) return true; // If in same residue, see which one is further along based on atom name // and which residue it is String p = parent.getName(); String c = child.getName(); int pi = REMOTENESS.indexOf(p.charAt(2)); int ci = REMOTENESS.indexOf(c.charAt(2)); return ( (pi > ci && (cn == 1 && pn == 1)) // parent closer AND on 1st res of SS || (pi < ci && (cn == 2 && pn == 2)) // parent farther AND on 2nd res of SS || (pi == ci && pn == cn && // OR same res AND child is an H of parent (p.charAt(3) == ' ' || p.charAt(3) == c.charAt(3)) && p.charAt(1) != 'H' && c.charAt(1) == 'H') ); } //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException, NumberFormatException { // Check arguments if(inFile == null) throw new IllegalArgumentException("Not enough command line arguments"); //if (nAngles != 3 && nAngles != 4 && nAngles != 5) // System.err.println("-chis=# must be 3, 4, or 5!"); // Obtain template residues PdbReader pdbReader = new PdbReader(); CoordinateFile coordFile = pdbReader.read(this.getClass().getResourceAsStream("disulf.pdb")); Model model = coordFile.getFirstModel(); ModelState modelState = model.getState(); for(Iterator iter = model.getResidues().iterator(); iter.hasNext(); ) { Residue r = (Residue)iter.next(); if (res1 == null) res1 = r; else if (res2 == null) res2 = r; else System.err.println("Oops, found more than two residues in the reference disulfide coordinates!"); } if(res1 == null || res2 == null) throw new IllegalArgumentException("Couldn't find enough residues in the the reference disulfide coordinates..."); // Read data from list file LineNumberReader in = new LineNumberReader(new FileReader(inFile)); ArrayList data = new ArrayList(); String s; int nFields = -1; while((s = in.readLine()) != null) { if(s.startsWith("#")) continue; String[] parts = Strings.explode(s, ':'); if(nFields < 0) nFields = parts.length; else if(nFields != parts.length) throw new IllegalArgumentException("Data fields are of different lengths"); double[] vals = new double[7];//[nFields]; for(int i = 0; i < 7; i++) vals[i] = Double.NaN; if (chisSupplied.equals("1,2,3")) { for(int i = 0; i < nFields-2; i++) vals[i] = Double.parseDouble(parts[i]); if (Double.isNaN(vals[3])) vals[3] = 290; // placeholder chi2' if (Double.isNaN(vals[4])) vals[4] = 300; // placeholder chi1' vals[5] = Double.parseDouble(parts[nFields-2]); vals[6] = Double.parseDouble(parts[nFields-1]); //System.err.println("main: "+vals[5]+"\t check: "+vals[6]); } else if (chisSupplied.equals("2,3,2") || chisSupplied.equals("2,3,2p")) { vals[0] = 300; // placeholder chi1 for(int i = 0; i < nFields-2; i++) vals[i+1] = Double.parseDouble(parts[i]); if (Double.isNaN(vals[4])) vals[4] = 300; // placeholder chi1' vals[5] = Double.parseDouble(parts[nFields-2]); vals[6] = Double.parseDouble(parts[nFields-1]); //System.err.println("main: "+vals[5]+"\t check: "+vals[6]); } data.add(vals); } in.close(); // Determine figure of merit double maxWeight = 0; for(Iterator iter = data.iterator(); iter.hasNext(); ) { double[] vals = (double[])iter.next(); maxWeight = Math.max(maxWeight, vals[5]);//[nFields-2]);//[nAngles]); } //System.err.println("maxWeight: "+maxWeight); // Output if (plotChis) { // Plot chis in kin format instead of creating rotamers PDB DecimalFormat df = new DecimalFormat("###.#"); if (group == null) group = "disulf samp chis"; if (color == null) color = "yellow"; if (chisSupplied.equals("1,2,3")) System.out.println("@1axischoice 1 2 3"); if (chisSupplied.equals("2,3,2") || chisSupplied.equals("2,3,2p")) System.out.println("@1axischoice 2 3 4"); System.out.print("@dimensions "); for (int i = 1; i <= nAngles; i ++) System.out.print(" {chi"+i+"}"); System.out.println(); System.out.print("@dimminmax "); for (int i = 1; i <= nAngles; i ++) System.out.print(" 0 360"); System.out.println(); System.out.println("@group {"+group+"} dominant"); System.out.println("@balllist {"+group+"} radius= 4 color= "+color+" dimension= "+nAngles); for(Iterator iter = data.iterator(); iter.hasNext(); ) { // Point ID double[] vals = (double[])iter.next(); System.out.print("{"); for (int i = 0; i < nAngles; i ++) System.out.print(df.format(vals[i])+", "); System.out.print("} "); // Actual x,y,z coordinates for (int i = 0; i < nAngles; i ++) System.out.print(df.format(vals[i])+" "); System.out.println(); } } else { // Create conformers PdbWriter pdbWriter = new PdbWriter(System.out); pdbWriter.setRenumberAtoms(true); int i = 1; for(Iterator iter = data.iterator(); iter.hasNext(); i++) { try { // Set dihedrals Residue tempRes1 = new Residue(res1, " ", "", Integer.toString(1), " ", res1.getName()); Residue tempRes2 = new Residue(res2, " ", "", Integer.toString(2), " ", res2.getName()); ModelState tempState = tempRes1.cloneStates(res1, modelState, new ModelState(modelState)); tempState = tempRes2.cloneStates(res2, modelState, tempState); double[] vals = (double[])iter.next(); tempState = setChi(1, tempRes1, tempRes2, new ModelState(tempState), vals[0]); tempState = setChi(2, tempRes1, tempRes2, new ModelState(tempState), vals[1]); tempState = setChi(3, tempRes1, tempRes2, new ModelState(tempState), vals[2]); tempState = setChi(4, tempRes1, tempRes2, new ModelState(tempState), vals[3]); tempState = setChi(5, tempRes1, tempRes2, new ModelState(tempState), vals[4]); // NOT WORKING RIGHT! // Set figures of merit ("pseudo-occupancies") for atoms within residues //for(Iterator ai = tempRes1.getAtoms().iterator(); ai.hasNext(); ) //{ // Atom a = (Atom)ai.next(); // double occ = 999.0 * vals[nFields-2]/maxWeight; // if(occ >= 1000.0) throw new Error("Logical error in occupancy weighting scheme"); // tempState.get(a).setOccupancy(occ); //} //for(Iterator ai = tempRes2.getAtoms().iterator(); ai.hasNext(); ) //{ // Atom a = (Atom)ai.next(); // double occ = 999.0 * vals[nFields-2]/maxWeight; // if(occ >= 1000.0) throw new Error("Logical error in occupancy weighting scheme"); // tempState.get(a).setOccupancy(occ); //} Collection tempResidues = new ArrayList(); tempResidues.add(tempRes1); tempResidues.add(tempRes2); // Write out coordinates if (i > 0 && i < 10) System.out.println("MODEL "+i); else if (i >= 10 && i < 100) System.out.println("MODEL " +i); else if (i >= 100) System.out.println("MODEL " +i); pdbWriter.writeResidues(tempResidues, tempState); System.out.println("ENDMDL"); } catch(AtomException ex) { ex.printStackTrace(); } } System.out.flush(); pdbWriter.close(); } } public static void main(String[] args) { DisulfSampler mainprog = new DisulfSampler(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } catch(Throwable ex) { ex.printStackTrace(); System.err.println(); System.err.println("*** Error: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("DisulfSampler.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'DisulfSampler.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.sc.DisulfSampler"); System.err.println("Copyright (C) 2004 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { if(inFile == null) inFile = new File(arg); else throw new IllegalArgumentException("Too many command line arguments"); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-plotchis")) { plotChis= true; } else if(flag.equals("-group")) { group = param; } else if(flag.equals("-color")) { color = param; } else if(flag.equals("-chis")) { chisSupplied = param; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/sc/SidechainAngles2.java0000644000000000000000000005057611744305700023661 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.sc; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.moldb2.*; import driftwood.r3.*; import driftwood.util.*; //}}} /** * SidechainAngles2 allows for measuring and altering * the dihedral angles in an amino acid side-chain. * All three-letter codes are handled internally in lower case, * but the appropriate conversions should be made automatically. * * This class uses driftwood.moldb2. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Thu May 8 09:52:04 EDT 2003 */ public class SidechainAngles2 //extends ... implements ... { //{{{ Constants /** Higher indices into this string are LESS remote */ public static final String REMOTENESS = "HZEDGBA "; //}}} //{{{ Variable definitions //################################################################################################## Set knownAA; // 3 letter codes for all known amino acids Map chisPerAA; // Map anglesForAA; // Map methylsForAA; // Map atomsForAngle; // Map rotamersForAA; // < code, Collection > // Used for working calculations Transform rot = new Transform(); //}}} //{{{ Constructor(s) //################################################################################################## /** * Constructor * @throws IOException if the needed resource(s) can't be loaded from the JAR file * @throws NoSuchElementException if the resource is missing a required entry */ public SidechainAngles2() throws IOException { loadData(); } //}}} //{{{ loadData //################################################################################################## /** @throws NoSuchElementException if required data is missing from resource file */ private void loadData() throws IOException { // Load all properties from file Props props = new Props(); InputStream is = this.getClass().getResourceAsStream("angles.props"); if(is == null) throw new IllegalArgumentException("Couldn't find resource in JAR file"); props.load(is); is.close(); // Create data structures chisPerAA = new UberMap(); anglesForAA = new UberMap(); methylsForAA = new UberMap(); atomsForAngle = new UberMap(); rotamersForAA = new UberMap(); // Read in list of amino acids names and iterate thru them String[] aa = Strings.explode(props.getString("aminoacids"), ','); knownAA = new UberSet(Arrays.asList(aa)); for(Iterator iter = knownAA.iterator(); iter.hasNext(); ) { String aaname = (String)iter.next(); loadAminoAcid(props, aaname); } } //}}} //{{{ loadAminoAcid //################################################################################################## private void loadAminoAcid(Props props, String aaname) { // Find number of canonical chi angles for this type Integer numChiAngles = new Integer(props.getInt(aaname+".chis")); chisPerAA.put(aaname, numChiAngles); // Find list of all mobile angles (except methyls) String[] anglelist = Strings.explode(props.getString(aaname+".angles"), ',', false, true); anglesForAA.put(aaname, anglelist); // Find list of all mobile methyl angles String[] methyllist = Strings.explode(props.getString(aaname+".methylangles"), ',', false, true); methylsForAA.put(aaname, methyllist); // Load 4-atom definition for each mobile dihedral (except methyls) for(int i = 0; i < anglelist.length; i++) { String key = aaname+"."+anglelist[i]; //System.out.print(key + ":"); //System.out.println(props.getString(key)); String[] atomlist = Strings.explode(props.getString(key), ','); atomsForAngle.put(key, atomlist); } // ... and for each mobile methyl dihedral // (should be OK to store these in the same place) for(int i = 0; i < methyllist.length; i++) { String key = aaname+"."+methyllist[i]; //System.out.print(key + ":"); //System.out.println(props.getString(key)); String[] atomlist = Strings.explode(props.getString(key), ','); atomsForAngle.put(key, atomlist); } // Load list of rotamers ArrayList rotamerDefs = new ArrayList(); String[] rotamerlist = Strings.explode(props.getString(aaname+".rotamers"), ',', false, true); String[] rotaFreq = Strings.explode(props.getString(aaname+".frequencies", ""), ',', false, true); for(int i = 0; i < rotamerlist.length; i++) { try { double[] rotamerangles = explodeDoubles(props.getString(aaname+"."+rotamerlist[i])); RotamerDef def = new RotamerDef(); def.rotamerName = rotamerlist[i]; def.frequency = (rotaFreq.length > i ? rotaFreq[i] : "?"); def.chiAngles = rotamerangles; rotamerDefs.add(def); } catch(NumberFormatException ex) { ex.printStackTrace(SoftLog.err); } } rotamersForAA.put(aaname, rotamerDefs); } //}}} //{{{ explodeDoubles //################################################################################################## double[] explodeDoubles(String s) throws NumberFormatException { String[] strings = Strings.explode(s, ' '); double[] doubles = new double[strings.length]; for(int i = 0; i < strings.length; i++) doubles[i] = Double.parseDouble(strings[i]); return doubles; } //}}} //{{{ count{Chi, All, Methyl}Angles, name{All, Methyl}Angles //################################################################################################## /** * Returns the number of chi angles for the given 3-letter residue code, * or -1 if that residue is unknown to the system */ public int countChiAngles(Residue res) { String rescode = res.getName().toLowerCase(); Integer i = (Integer)chisPerAA.get(rescode); if(i == null) return -1; else return i.intValue(); } /** * Returns the number of mobile angles for the given 3-letter residue code, * including mobile hydroxyl (Ser OH) but not methyl (Met CH3), * or -1 if that residue is unknown to the system */ public int countAllAngles(Residue res) { String rescode = res.getName().toLowerCase(); String[] angles = (String[])anglesForAA.get(rescode); if(angles == null) return -1; else return angles.length; } /** * Returns the number of methyl angles for the given 3-letter residue code * (Ala, Val[2], Leu[2], Ile[2], Met, Mse, Thr), * or -1 if that residue is unknown to the system */ public int countMethylAngles(Residue res) { String rescode = res.getName().toLowerCase(); String[] methyls = (String[])methylsForAA.get(rescode); if(methyls == null) return -1; else return methyls.length; } /** * Returns a String[] of all the named angles known for a given residue code, * including mobile hydroxyl (Ser OH) but not methyl (Met CH3), * or null if that residue is unknown. */ public String[] nameAllAngles(Residue res) { String rescode = res.getName().toLowerCase(); String[] angles = (String[])anglesForAA.get(rescode); if(angles == null) return null; else return (String[])angles.clone(); } /** * Returns a String[] of all the named methyl angles known for a given residue code, * (Ala, Val[2], Leu[2], Ile[2], Met, Mse, Thr), * or null if that residue is unknown. */ public String[] nameMethylAngles(Residue res) { String rescode = res.getName().toLowerCase(); String[] methyls = (String[])methylsForAA.get(rescode); if(methyls == null) return null; else return (String[])methyls.clone(); } //}}} //{{{ measureAngle //################################################################################################## /** * Measures the value of some named angle as a value between * -180 and +180 degrees * @throws IllegalArgumentException if operation cannot succeed * @throws AtomException if required atoms are missing */ public double measureAngle(String angleName, Residue res, ModelState state) throws AtomException { //String resDotAngle = (res.getName()+"."+angleName).toLowerCase(); //String[] atomNames = (String[])atomsForAngle.get(resDotAngle); //if(atomNames == null || atomNames.length < 4) // throw new IllegalArgumentException("Angle definition bad or not found for '"+resDotAngle+"'"); // //AtomState a1, a2, a3, a4; //a1 = state.get(res.getAtom(atomNames[0])); //a2 = state.get(res.getAtom(atomNames[1])); //a3 = state.get(res.getAtom(atomNames[2])); //a4 = state.get(res.getAtom(atomNames[3])); AtomState[] as = getAngleAtomStates(angleName, res, state); return Triple.dihedral(as[0], as[1], as[2], as[3]); } //}}} //{{{ getAngleAtomStates //################################################################################################## /** * For dealing with possible multiple names for atoms of the dihedrals (due to PDB format change). * I have put semicolon-delimited alternates for atom names in the dihedral definitions * in angles.props. * @return AtomState[] that should contain 4 AtomStates corresponding to the proper atoms. **/ public AtomState[] getAngleAtomStates(String angleName, Residue res, ModelState state) throws AtomException { String resDotAngle = (res.getName()+"."+angleName).toLowerCase(); String[] atomNames = (String[])atomsForAngle.get(resDotAngle); if (atomNames == null) { resDotAngle = (res.getName()+".p"+angleName).toLowerCase(); // for pchi angles in pro atomNames = (String[])atomsForAngle.get(resDotAngle); } if(atomNames == null || atomNames.length < 4) throw new IllegalArgumentException("Angle definition bad or not found for '"+resDotAngle+"'"); AtomState[] asArray = new AtomState[4]; for (int i = 0; i < asArray.length; i++) { String[] namelist = Strings.explode(atomNames[i], ';'); Atom testAtom = null; int j = 0; while ((testAtom == null)&&(j < namelist.length)) { //System.out.println(namelist[j]); testAtom = res.getAtom(namelist[j]); j++; } //System.out.println(testAtom.getName()); asArray[i] = state.get(testAtom); } return asArray; } //}}} //{{{ areParentAndChild //################################################################################################## protected boolean areParentAndChild(Atom parent, Atom child) { String p = parent.getName(); String c = child.getName(); if(p == null || c == null || p.length() != 4 || c.length() != 4) throw new IllegalArgumentException("Bad atom name(s)"); // for converting the shifted hydrogens in pdbv3 back to pdbv2.3 (e.g. HG11 to 1HG1) if (p.charAt(0) == 'H') p = p.substring(3) + p.substring(0,3); if (c.charAt(0) == 'H') c = c.substring(3) + c.substring(0,3); // If statements are a workaround for seleno-Met, // which by convention is a HET and has no remoteness // indicator for the selenium atom. int pi = REMOTENESS.indexOf(p.charAt(2)); if(parent.getResidue().getName().equals("MSE") && p.equals("SE ")) pi = REMOTENESS.indexOf('D'); int ci = REMOTENESS.indexOf(c.charAt(2)); if( child.getResidue().getName().equals("MSE") && c.equals("SE ")) ci = REMOTENESS.indexOf('D'); return ((pi > ci && (p.charAt(3) == ' ' || p.charAt(3) == c.charAt(3))) // parent closer AND on root or same branch || (pi == ci && (p.charAt(3) == ' ' || p.charAt(3) == c.charAt(3)) // OR child is an H of parent && p.charAt(1) != 'H' && c.charAt(1) == 'H')); } //}}} //{{{ setAngle //################################################################################################## /** * Adjusts the model such that the appropriate atoms * are rotated about the named angle axis. * Sets the angle to some absolute value in degrees. * Use measureAngle() to learn the initial value, if needed. * @return a modified ModelState (input state is not changed) * @throws IllegalArgumentException if operation cannot succeed * @throws AtomException if required atoms are missing */ public ModelState setAngle(String angleName, Residue res, ModelState state, double endAngle) throws AtomException { // Copied from measureAngle -- we need this info anyway... //String resDotAngle = (res.getName()+"."+angleName).toLowerCase(); //String[] atomNames = (String[])atomsForAngle.get(resDotAngle); //if(atomNames == null || atomNames.length < 4) // throw new IllegalArgumentException("Angle definition bad or not found for '"+resDotAngle+"'"); // //a1 = state.get(res.getAtom(atomNames[0])); //a2 = state.get(res.getAtom(atomNames[1])); //a3 = state.get(res.getAtom(atomNames[2])); //a4 = state.get(res.getAtom(atomNames[3])); AtomState[] as = getAngleAtomStates(angleName, res, state); AtomState a1, a2, a3, a4; a1 = as[0]; a2 = as[1]; a3 = as[2]; a4 = as[3]; double startAngle = Triple.dihedral(a1, a2, a3, a4); double dTheta = endAngle - startAngle; rot.likeRotation(a2, a3, dTheta); ModelState ms = new ModelState(state); for(Iterator iter = res.getAtoms().iterator(); iter.hasNext(); ) { Atom atom = (Atom)iter.next(); a1 = state.get(atom); a2 = (AtomState)a1.clone(); if( areParentAndChild(a3.getAtom(), atom) ) { rot.transform(a2); ms.add(a2); } } return ms; } //}}} //{{{ measureAllAngles, setAllAngles //################################################################################################## /** Angles that throw an AtomException (missing Atom/AtomState) are evaluated as Double.NaN */ public double[] measureAllAngles(Residue res, ModelState state) { String rescode = res.getName().toLowerCase(); String[] angles = nameAllAngles(res); if(angles == null) throw new IllegalArgumentException("Unknown residue type"); double[] values = new double[ angles.length ]; for(int i = 0; i < angles.length; i++) { try { values[i] = measureAngle(angles[i], res, state); } catch(AtomException ex) { values[i] = Double.NaN; } } return values; } /** Angles that are set to NaN are ignored. */ public ModelState setAllAngles(Residue res, ModelState state, double[] values) { String rescode = res.getName().toLowerCase(); String[] angles = nameAllAngles(res); if(angles == null) throw new IllegalArgumentException("Unknown residue type"); if(values.length < angles.length) throw new IllegalArgumentException("Not enough angles specified"); for(int i = 0; i < angles.length; i++) { if(!Double.isNaN(values[i])) { try { state = setAngle(angles[i], res, state, values[i]); } catch(IllegalArgumentException ex) { ex.printStackTrace(SoftLog.err); } catch(AtomException ex) { ex.printStackTrace(SoftLog.err); } } } return state; } //}}} //{{{ measureChiAngles, setChiAngles //################################################################################################## /** Angles that throw an AtomException (missing Atom/AtomState) are evaluated as Double.NaN */ public double[] measureChiAngles(Residue res, ModelState state) { String rescode = res.getName().toLowerCase(); int angles = countChiAngles(res); if(angles < 0) throw new IllegalArgumentException("Unknown residue type"); double[] values = new double[ angles ]; for(int i = 0; i < angles; i++) { try { values[i] = measureAngle("chi"+(i+1), res, state); } catch(AtomException ex) { values[i] = Double.NaN; } } return values; } public ModelState setChiAngles(Residue res, ModelState state, double[] values) { String rescode = res.getName().toLowerCase(); int angles = countChiAngles(res); if(angles < 0) throw new IllegalArgumentException("Unknown residue type"); if(values.length < angles) throw new IllegalArgumentException("Not enough angles specified"); for(int i = 0; i < angles; i++) { try { state = setAngle("chi"+(i+1), res, state, values[i]); } catch(IllegalArgumentException ex) { ex.printStackTrace(SoftLog.err); } catch(AtomException ex) { ex.printStackTrace(SoftLog.err); } } return state; } //}}} //{{{ measureMethylAngles, setMethylAngles //################################################################################################## /** Angles that throw an AtomException (missing Atom/AtomState) are evaluated as Double.NaN */ public double[] measureMethylAngles(Residue res, ModelState state) { String rescode = res.getName().toLowerCase(); String[] methyls = nameMethylAngles(res); if(methyls == null) throw new IllegalArgumentException("Unknown residue type"); double[] values = new double[ methyls.length ]; for(int i = 0; i < methyls.length; i++) { try { values[i] = measureAngle(methyls[i], res, state); } catch(AtomException ex) { values[i] = Double.NaN; } } return values; } /** Angles that are set to NaN are ignored. */ public ModelState setMethylAngles(Residue res, ModelState state, double[] values) { String rescode = res.getName().toLowerCase(); String[] methyls = nameMethylAngles(res); if(methyls == null) throw new IllegalArgumentException("Unknown residue type"); if(values.length < methyls.length) throw new IllegalArgumentException("Not enough methyl angles specified"); for(int i = 0; i < methyls.length; i++) { if(!Double.isNaN(values[i])) { try { state = setAngle(methyls[i], res, state, values[i]); } catch(IllegalArgumentException ex) { ex.printStackTrace(SoftLog.err); } catch(AtomException ex) { ex.printStackTrace(SoftLog.err); } } } return state; } //}}} //{{{ getAllRotamers //################################################################################################## /** * Returns an array of all the named rotamers known for a given residue code, * or null if that residue is unknown. */ public RotamerDef[] getAllRotamers(Residue res) { return getAllRotamers(res.getName()); } /** * Returns an array of all the named rotamers known for a given residue code, * or null if that residue is unknown. */ public RotamerDef[] getAllRotamers(String rescode) { rescode = rescode.toLowerCase(); Collection c = (Collection)rotamersForAA.get(rescode); if(c == null) return null; else return (RotamerDef[])c.toArray(new RotamerDef[c.size()]); } //}}} //{{{ empty_code_segment //################################################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/phenix/0000755000000000000000000000000011677361404020574 5ustar rootrootking-2.21.120420/chiropraxis/src/chiropraxis/phenix/PepLibSuper.java0000644000000000000000000001733111531212732023622 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.phenix; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; import driftwood.util.Strings; //}}} /** * PepLibSuper quick and dirty tool for superimposing peptide libraries for T. Terwilliger. * *

    Copyright (C) 2006 by Ian W. Davis. All rights reserved. *
    Begun on Sun Sep 17 15:30:34 PDT 2006 */ public class PepLibSuper //extends ... implements ... { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## //}}} //{{{ Constructor(s) //############################################################################## public PepLibSuper() { super(); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException, NumberFormatException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); PrintWriter out = new PrintWriter(new OutputStreamWriter(System.out)); DecimalFormat df = new DecimalFormat("0.000"); ArrayList pdbLines = new ArrayList(), pdbTriples = new ArrayList(); String s; Transform R = new Transform(); Builder builder = new Builder(); Triple a1 = null, a2 = null, a3 = null; while((s = in.readLine()) != null) { if(s.startsWith("ATOM 1") && a1 != null && a2 != null && a3 != null) { //R = builder.dock3on3(new Triple(0,0,0), new Triple(1.5,0,0), new Triple(0,-1.5,0), a1, a2, a3); R = builder.dock3on3(new Triple(0,0,0), new Triple(1.5,0,0), new Triple(1.5,1.5,0), a1, a2, a3); for(int i = 0; i < pdbLines.size(); i++) { Triple x = (Triple) pdbTriples.get(i); R.transform(x); } //Triple n = (Triple) pdbTriples.get(0); //Triple c = (Triple) pdbTriples.get(2); //if((Math.abs(n.getZ()) > 0.001 //|| Math.abs(c.getY()) > 0.001 //|| Math.abs(c.getZ()) > 0.001 //)) if(pdbLines.size() <= 20) // more than this implies too many alt confs! { out.println("MODEL"); for(int i = 0; i < pdbLines.size(); i++) { Triple x = (Triple) pdbTriples.get(i); out.print(pdbLines.get(i).toString().substring(0,30)); out.print(Strings.justifyRight(df.format(x.getX()), 8)); out.print(Strings.justifyRight(df.format(x.getY()), 8)); out.print(Strings.justifyRight(df.format(x.getZ()), 8)); out.print(pdbLines.get(i).toString().substring(54)); out.println(); } //out.println("TER"); out.println("ENDMDL"); } pdbLines.clear(); pdbTriples.clear(); a1 = a2 = a3 = null; } pdbLines.add(s); Triple t = new Triple(Double.parseDouble(s.substring(30,38).trim()), Double.parseDouble(s.substring(38,46).trim()), Double.parseDouble(s.substring(46,54).trim())); pdbTriples.add(t); if( s.startsWith("ATOM 2")) a1 = t; else if(s.startsWith("ATOM 3")) a2 = t; //else if(s.startsWith("ATOM 1")) else if(s.startsWith("ATOM 4")) a3 = t; } } public static void main(String[] args) { PepLibSuper mainprog = new PepLibSuper(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(Exception ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("PepLibSuper.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'PepLibSuper.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.phenix.PepLibSuper"); System.err.println("Copyright (C) 2006 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/forcefield/0000755000000000000000000000000011677361404021403 5ustar rootrootking-2.21.120420/chiropraxis/src/chiropraxis/forcefield/NonbondedTerm.java0000644000000000000000000003434111531212724024776 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.forcefield; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * NonbondedTerm uses a hash table / 3-D bins approach to * make computing non-bonded terms more efficient. This seems to be a win over * a simple all-against-all strategy for any more than a few hundred points. *

    Following in the footsteps of Sculpt, we use a Lennard-Jones-like 4-8 * potential with a standard Coulombic one in a vacuum, so * E = A/r^8 - B/r^4 + Qij/r. * The derivatives are straight-forward and based on my own calculations. * *

    The standard form for the Lennard-Jones potential is *
    A/r^12 - B/r^6 *
    where the first term is repulsive and the second is attractive. * *

    A nicer formulation uses the optimal separation r0 and the well depth e: *
    e*[(r0/r)^12 - 2*(r0/r)^6] * *

    Given e and r0, you can find A and B as follows: *
    A = e * r0^12 *
    B = 2e * r0^6 * *

    The same argument holds easily for the 4-8 potential used here. * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Wed Jul 14 10:30:12 EDT 2004 */ public class NonbondedTerm implements EnergyTerm { //{{{ Constants //}}} //{{{ CLASS: Key //############################################################################## static class Key { static final int HALF = (1 << 20); long index = -1; int hashCode = -1; public Key() {} public Key(int i, int j, int k) { set(i, j, k); } /** i, j, k must be between -HALF and HALF-1 */ public void set(int i, int j, int k) { index = ((i+HALF)) | ((j+HALF) << 21) | ((k+HALF) << 42); hashCode = (int)(index ^ (index >> 32)); } public int hashCode() { return hashCode; } public boolean equals(Object o) { return (o == null ? false : ((Key)o).index == this.index); } } //}}} //{{{ Variable definitions //############################################################################## int[] atomType; final int numTypes; double[] Aij; // vdW repulsive term double[] Bij; // vdw attractive term double[] Qij; // electrostatics: qi * qj final double cutoff, cutoff_2; int initCap; HashMap lookup; Key tmpkey; //}}} //{{{ Constructor(s) //############################################################################## /** * Creates a new NonbondedTerm with all Aij, Bij, and Qij set to zero. * @param atomType atom type codes; one per atom in the simulation. * Type codes range from 0 to N; the smaller N is, the less memory used. * @param cutoff space is divided into cubes with this edge size * @param initCap expected max number of atoms in each cube */ public NonbondedTerm(int[] atomType, double cutoff, int initCap) { super(); int maxTypeCode = 0; for(int i = 0; i < atomType.length; i++) { if(atomType[i] < 0) throw new IllegalArgumentException("Negative atom types are not allowed!"); else if(atomType[i] > maxTypeCode) maxTypeCode = atomType[i]; } this.numTypes = maxTypeCode+1; this.atomType = (int[]) atomType.clone(); this.Aij = new double[ numTypes*numTypes ]; this.Bij = new double[ numTypes*numTypes ]; this.Qij = new double[ numTypes*numTypes ]; this.cutoff = cutoff; this.cutoff_2 = cutoff*cutoff; this.initCap = initCap; this.lookup = new HashMap(); this.tmpkey = new Key(); } //}}} //{{{ setAB, get/setQ //############################################################################## public void setAB(int atomTypeI, int atomTypeJ, double aij, double bij) { int index1 = atomTypeI * numTypes + atomTypeJ; int index2 = atomTypeJ * numTypes + atomTypeI; Aij[index1] = Aij[index2] = aij; Bij[index1] = Bij[index2] = bij; } public void setQ(int atomTypeI, int atomTypeJ, double qij) { int index1 = atomTypeI * numTypes + atomTypeJ; int index2 = atomTypeJ * numTypes + atomTypeI; Qij[index1] = Qij[index2] = qij; } //}}} //{{{ buildLookupTable //############################################################################## void buildLookupTable(double[] state) { lookup.clear(); int i, j, len = 3 * (state.length / 3); // rounds down non-multiple of 3 for(i = len - 3 ; i >= 0; i -= 3) { int a, b, c; a = (int)(state[i ] / cutoff); b = (int)(state[i+1] / cutoff); c = (int)(state[i+2] / cutoff); tmpkey.set(a, b, c); int[] cell = (int[]) lookup.get(tmpkey); if(cell == null) { cell = new int[initCap]; cell[0] = i; for(j = 1; j < cell.length; j++) cell[j] = -1; lookup.put(tmpkey, cell); tmpkey = new Key(); } else if(cell[cell.length-1] != -1) { int[] newCell = new int[2*cell.length]; for(j = 0; j < cell.length; j++) newCell[j] = cell[j]; newCell[j++] = i; for( ; j < newCell.length; j++) newCell[j] = -1; lookup.put(tmpkey, newCell); tmpkey = new Key(); } else { for(j = 0; j < cell.length; j++) { if(cell[j] == -1) { cell[j] = i; break; } } } }//for each point } //}}} //{{{ eval(state) //############################################################################## public double eval(double[] state) { buildLookupTable(state); int i, p = 0, type, len = state.length; double energy = 0; for(i = 0; i < len; i += 3) { double x, y, z; x = state[i ]; y = state[i+1]; z = state[i+2]; int a, b, c; a = (int)(x / cutoff); b = (int)(y / cutoff); c = (int)(z / cutoff); type = atomType[p]; energy += evalCell(state, i, type, x, y, z, a+1, b+1, c+1); energy += evalCell(state, i, type, x, y, z, a+1, b+1, c ); energy += evalCell(state, i, type, x, y, z, a+1, b+1, c-1); energy += evalCell(state, i, type, x, y, z, a+1, b , c+1); energy += evalCell(state, i, type, x, y, z, a+1, b , c ); energy += evalCell(state, i, type, x, y, z, a+1, b , c-1); energy += evalCell(state, i, type, x, y, z, a+1, b-1, c+1); energy += evalCell(state, i, type, x, y, z, a+1, b-1, c ); energy += evalCell(state, i, type, x, y, z, a+1, b-1, c-1); energy += evalCell(state, i, type, x, y, z, a , b+1, c+1); energy += evalCell(state, i, type, x, y, z, a , b+1, c ); energy += evalCell(state, i, type, x, y, z, a , b+1, c-1); energy += evalCell(state, i, type, x, y, z, a , b , c+1); energy += evalCell(state, i, type, x, y, z, a , b , c ); energy += evalCell(state, i, type, x, y, z, a , b , c-1); energy += evalCell(state, i, type, x, y, z, a , b-1, c+1); energy += evalCell(state, i, type, x, y, z, a , b-1, c ); energy += evalCell(state, i, type, x, y, z, a , b-1, c-1); energy += evalCell(state, i, type, x, y, z, a-1, b+1, c+1); energy += evalCell(state, i, type, x, y, z, a-1, b+1, c ); energy += evalCell(state, i, type, x, y, z, a-1, b+1, c-1); energy += evalCell(state, i, type, x, y, z, a-1, b , c+1); energy += evalCell(state, i, type, x, y, z, a-1, b , c ); energy += evalCell(state, i, type, x, y, z, a-1, b , c-1); energy += evalCell(state, i, type, x, y, z, a-1, b-1, c+1); energy += evalCell(state, i, type, x, y, z, a-1, b-1, c ); energy += evalCell(state, i, type, x, y, z, a-1, b-1, c-1); p++; } return energy; } //}}} //{{{ eval(state, gradient) //############################################################################## public double eval(double[] state, double[] gradient) { buildLookupTable(state); int i, p = 0, type, len = state.length; double energy = 0; for(i = 0; i < len; i += 3) { double x, y, z; x = state[i ]; y = state[i+1]; z = state[i+2]; int a, b, c; a = (int)(x / cutoff); b = (int)(y / cutoff); c = (int)(z / cutoff); type = atomType[p]; energy += evalCell(state, gradient, i, type, x, y, z, a+1, b+1, c+1); energy += evalCell(state, gradient, i, type, x, y, z, a+1, b+1, c ); energy += evalCell(state, gradient, i, type, x, y, z, a+1, b+1, c-1); energy += evalCell(state, gradient, i, type, x, y, z, a+1, b , c+1); energy += evalCell(state, gradient, i, type, x, y, z, a+1, b , c ); energy += evalCell(state, gradient, i, type, x, y, z, a+1, b , c-1); energy += evalCell(state, gradient, i, type, x, y, z, a+1, b-1, c+1); energy += evalCell(state, gradient, i, type, x, y, z, a+1, b-1, c ); energy += evalCell(state, gradient, i, type, x, y, z, a+1, b-1, c-1); energy += evalCell(state, gradient, i, type, x, y, z, a , b+1, c+1); energy += evalCell(state, gradient, i, type, x, y, z, a , b+1, c ); energy += evalCell(state, gradient, i, type, x, y, z, a , b+1, c-1); energy += evalCell(state, gradient, i, type, x, y, z, a , b , c+1); energy += evalCell(state, gradient, i, type, x, y, z, a , b , c ); energy += evalCell(state, gradient, i, type, x, y, z, a , b , c-1); energy += evalCell(state, gradient, i, type, x, y, z, a , b-1, c+1); energy += evalCell(state, gradient, i, type, x, y, z, a , b-1, c ); energy += evalCell(state, gradient, i, type, x, y, z, a , b-1, c-1); energy += evalCell(state, gradient, i, type, x, y, z, a-1, b+1, c+1); energy += evalCell(state, gradient, i, type, x, y, z, a-1, b+1, c ); energy += evalCell(state, gradient, i, type, x, y, z, a-1, b+1, c-1); energy += evalCell(state, gradient, i, type, x, y, z, a-1, b , c+1); energy += evalCell(state, gradient, i, type, x, y, z, a-1, b , c ); energy += evalCell(state, gradient, i, type, x, y, z, a-1, b , c-1); energy += evalCell(state, gradient, i, type, x, y, z, a-1, b-1, c+1); energy += evalCell(state, gradient, i, type, x, y, z, a-1, b-1, c ); energy += evalCell(state, gradient, i, type, x, y, z, a-1, b-1, c-1); p++; } return energy; } //}}} //{{{ evalCell(state) //############################################################################## double evalCell(double[] state, int i, int type, double x, double y, double z, int a, int b, int c) { tmpkey.set(a, b, c); int[] cell = (int[]) lookup.get(tmpkey); if(cell == null) return 0; double energy = 0; for(int k = 0; k < cell.length; k++) { int j = cell[k]; if(j <= i) break; double dx, dy, dz, rij_2; dx = x - state[j ]; dy = y - state[j+1]; dz = z - state[j+2]; rij_2 = dx*dx + dy*dy + dz*dz; if(rij_2 > cutoff_2) continue; int typeIndex = type*numTypes + atomType[j/3]; double rij_4 = rij_2 * rij_2; double rij_8 = rij_4 * rij_4; energy += Aij[typeIndex]/rij_8 - Bij[typeIndex]/rij_4; // Doing electrostatics separately may save us some sqrt() evals double Q = Qij[typeIndex]; if(Q != 0) energy += Q / Math.sqrt(rij_2); } return energy; } //}}} //{{{ evalCell(state, gradient) //############################################################################## double evalCell(double[] state, double[] gradient, int i, int type, double x, double y, double z, int a, int b, int c) { tmpkey.set(a, b, c); int[] cell = (int[]) lookup.get(tmpkey); if(cell == null) return 0; double energy = 0; for(int k = 0; k < cell.length; k++) { int j = cell[k]; if(j <= i) break; double dx, dy, dz, rij_2; dx = x - state[j ]; dy = y - state[j+1]; dz = z - state[j+2]; rij_2 = dx*dx + dy*dy + dz*dz; if(rij_2 > cutoff_2) continue; int typeIndex = type*numTypes + atomType[j/3]; double rij = Math.sqrt(rij_2); double rij_4 = rij_2 * rij_2; double rij_8 = rij_4 * rij_4; double eA, eB, eQ, eABQ, dex, dey, dez; eA = Aij[typeIndex]/rij_8; eB = -Bij[typeIndex]/rij_4; eQ = Qij[typeIndex]/rij; energy += eA + eB + eQ; eABQ = (-8*eA + -4*eB - eQ) / rij_2; dex = eABQ * dx; dey = eABQ * dy; dez = eABQ * dz; gradient[i ] += dex; gradient[i+1] += dey; gradient[i+2] += dez; gradient[j ] -= dex; gradient[j+1] -= dey; gradient[j+2] -= dez; } return energy; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/forcefield/BondTerm.java0000644000000000000000000001127111531212724023747 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.forcefield; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * BondTerm is a harmonic bond-stretching term of a force field. * The energy E = k * (r - r0)^2, and * the gradient G = 2k * (r - r0) * (xa - xb) / r. * * Analytic derivatives based on my own calculations and on * Britt H. Park (2003) "Some Useful Math for Molecular Mechanics" * http://www.sciencething.org/MD.html * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Mon Jul 12 08:49:45 EDT 2004 */ public class BondTerm implements EnergyTerm { //{{{ Constants /** Endpoints are always assumed to be distinct, so there has to be * some minimum distance between them to avoid divide-by-zero errors. */ static final double MIN_R = 1e-6; //}}} //{{{ Variable definitions //############################################################################## int a, b; // indexes of the first coordinate of the two endpoints double k; // the spring constant double r0; // the target or ideal bond length //}}} //{{{ Constructor(s) //############################################################################## public BondTerm(int atomA, int atomB, double targetDist, double springConst) { super(); a = atomA * 3; b = atomB * 3; r0 = targetDist; k = springConst; } //}}} //{{{ eval //############################################################################## public double eval(double[] state, double[] gradient) { // energy double dx, dy, dz, r, dr, E; dx = state[a ] - state[b ]; // sign is correct for a, opposite for b dy = state[a+1] - state[b+1]; dz = state[a+2] - state[b+2]; r = Math.sqrt(dx*dx + dy*dy + dz*dz); if(r < MIN_R) r = MIN_R; dr = r - r0; E = k * (dr*dr); // gradient double g, gx, gy, gz; g = 2 * k * dr / r; gx = g * dx; gy = g * dy; gz = g * dz; gradient[a ] += gx; gradient[a+1] += gy; gradient[a+2] += gz; gradient[b ] -= gx; gradient[b+1] -= gy; gradient[b+2] -= gz; return E; } public double eval(double[] state) { double dx, dy, dz, r, dr; dx = state[a ] - state[b ]; dy = state[a+1] - state[b+1]; dz = state[a+2] - state[b+2]; r = Math.sqrt(dx*dx + dy*dy + dz*dz); if(r < MIN_R) r = MIN_R; dr = r - r0; return k * (dr*dr); } //}}} //{{{ empty_code_segment //############################################################################## //}}} /* //{{{ main (for testing) //############################################################################## public static void main(String[] args) { PrintStream out = System.out; double E; double[] state, grad; state = new double[] {1,0,0,-1,0,0}; grad = new double[] {0,0,0,0,0,0}; BondTerm term1a = new BondTerm(0, 1, 1, 1); E = term1a.eval(state, grad); print(out, state, E, grad); grad = new double[] {0,0,0,0,0,0}; BondTerm term1b = new BondTerm(0, 1, 2, 1); E = term1b.eval(state, grad); print(out, state, E, grad); state = new double[] {0,1,0,0,-1,0}; grad = new double[] {0,0,0,0,0,0}; BondTerm term2 = new BondTerm(0, 1, 1, 1); E = term2.eval(state, grad); print(out, state, E, grad); state = new double[] {0,0,1,0,0,-1}; grad = new double[] {0,0,0,0,0,0}; BondTerm term3 = new BondTerm(0, 1, 1, 1); E = term3.eval(state, grad); print(out, state, E, grad); state = new double[] {1, 1, 1, -1, -1, -1}; grad = new double[] {0,0,0,0,0,0}; BondTerm term4 = new BondTerm(0, 1, 1, 1); E = term4.eval(state, grad); print(out, state, E, grad); } static void print(PrintStream out, double[] state, double energy, double[] grad) { DecimalFormat df = new DecimalFormat("0.000"); out.print("State:"); for(int i = 0; i < state.length; i++) out.print(" "+df.format(state[i])); out.println(); out.println("Energy: "+df.format(energy)); out.print("Gradient:"); for(int i = 0; i < grad.length; i++) out.print(" "+df.format(grad[i])); out.println(); out.println(); } //}}} */ }//class king-2.21.120420/chiropraxis/src/chiropraxis/forcefield/RubberBandTool.java0000644000000000000000000003230111531212724025076 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.forcefield; import java.awt.*; import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; import javax.swing.*; import javax.swing.event.*; import driftwood.gui.*; import driftwood.r3.*; import driftwood.util.*; import king.*; import king.core.*; import king.points.*; import driftwood.util.ReflectiveRunnable; //}}} /** * RubberBandTool is a toy version of Sculpt for KiNG. * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Tue Jul 13 11:26:26 EDT 2004 */ public class RubberBandTool extends BasicTool implements Runnable, ChangeListener { //{{{ Constants static final KPaint[] colors = { KPalette.red, KPalette.orange, KPalette.gold, KPalette.yellow, KPalette.lime, KPalette.green, KPalette.sea, KPalette.cyan, KPalette.sky, KPalette.blue, KPalette.purple }; //}}} //{{{ Variable definitions //############################################################################## Triple endpoint0 = new Triple(0,0,0); Triple endpoint1 = new Triple(10,10,10); Triple mouseTug = new Triple(); KList rubberBand; StateManager stateMan; GradientMinimizer minimizer; Collection bondTerms, angleTerms, nbTerms, extraTerms = new HashSet(); KPoint draggedPoint = null; KPoint[] allPoints = null; volatile boolean runMin = false; TablePane2 toolPane; JCheckBox cbRunMinimizer, cbUseBonds, cbUseAngles, cbUseVDW; JSlider slBonds, slAngles, slVDW; //}}} //{{{ Constructor(s) //############################################################################## public RubberBandTool(ToolBox tb) { super(tb); this.rubberBand = makeRandomConf(100); this.stateMan = makeState(rubberBand); buildGUI(); Thread thread = new Thread(this); thread.setDaemon(true); thread.setPriority( Thread.currentThread().getPriority() - 1 ); thread.start(); } //}}} //{{{ buildGUI //############################################################################## void buildGUI() { cbRunMinimizer = new JCheckBox(new ReflectiveAction("Run minimizer", null, this, "onGuiAction")); cbUseBonds = new JCheckBox(new ReflectiveAction("Use bond terms", null, this, "onGuiAction")); cbUseAngles = new JCheckBox(new ReflectiveAction("Use angle terms", null, this, "onGuiAction")); cbUseVDW = new JCheckBox(new ReflectiveAction("Use VDW terms", null, this, "onGuiAction")); cbRunMinimizer.setSelected(runMin); cbUseBonds.setSelected(stateMan.getBondTerms().length != 0); cbUseAngles.setSelected(stateMan.getAngleTerms().length != 0); cbUseVDW.setSelected(stateMan.getNbTerms().length != 0); slBonds = new JSlider(0, 100, 100); slBonds.addChangeListener(this); slAngles = new JSlider(0, 100, 100); slAngles.addChangeListener(this); slVDW = new JSlider(0, 100, 100); slVDW.addChangeListener(this); TablePane2 cp = toolPane = new TablePane2(); cp.addCell(cbRunMinimizer).newRow(); cp.addCell(cp.strut(0,10)).newRow(); cp.addCell(cbUseBonds).hfill(true).addCell(slBonds).newRow(); cp.addCell(cbUseAngles).hfill(true).addCell(slAngles).newRow(); cp.addCell(cbUseVDW).hfill(true).addCell(slVDW).newRow(); } //}}} //{{{ makeRandomConf //############################################################################## KList makeRandomConf(int howmany) { KList list = new KList(KList.VECTOR); list.setName("rubber band"); list.setColor(KPalette.pinktint); VectorPoint prev = null; for(int i = 0; i < howmany; i++) { VectorPoint p = new VectorPoint("pt "+i, prev); p.setXYZ(10*Math.random(), 10*Math.random(), 10*Math.random()); //p.setColor(colors[colors.length*i / howmany]); list.add(p); prev = p; } return list; } //}}} //{{{ makeState //############################################################################## StateManager makeState(KList klist) { int i; ArrayList points = new ArrayList(klist.getChildren()); points.add(this.endpoint0); points.add(this.endpoint1); points.add(this.mouseTug); int len = points.size() - 3; this.bondTerms = new ArrayList(); for(i = 0; i < len-1; i++) bondTerms.add(new BondTerm(i, i+1, 1, 10)); //terms.add(new BondTerm(0, len, 0, 1)); //terms.add(new BondTerm(len-1, len+1, 0, 1)); this.angleTerms = new ArrayList(); for(i = 0; i < len-2; i++) angleTerms.add(new AngleTerm(i, i+1, i+2, 120, 10)); this.nbTerms = new ArrayList(); int[] atomTypes = new int[ points.size() ]; for(i = 0; i < len; i++) atomTypes[i] = 1; for( ; i < atomTypes.length; i++) atomTypes[i] = 0; NonbondedTerm nbTerm = new NonbondedTerm(atomTypes, 6, 20); nbTerm.setAB(1, 1, 1.0, 2.0); nbTerms.add(nbTerm); StateManager stateman = new StateManager((MutableTuple3[])points.toArray(new MutableTuple3[points.size()]), len); stateman.setBondTerms(bondTerms); stateman.setAngleTerms(angleTerms); return stateman; } //}}} //{{{ start //################################################################################################## public void start() { super.start(); Kinemage kin = kMain.getKinemage(); if(kin == null) return; KGroup group = new KGroup("RubberBand"); group.setDominant(true); KGroup subgroup = new KGroup(""); group.add(subgroup); this.rubberBand.setParent(subgroup); subgroup.add(rubberBand); kin.add(group); } //}}} //{{{ run //############################################################################## public void run() { while(true)//(!backgroundTerminate) { // We re-create the minimizer in case it hit bottom last time this.minimizer = new GradientMinimizer(stateMan); long time = System.currentTimeMillis(); int steps = 0; boolean done = false; while(runMin && !done) { synchronized(stateMan) { done = !minimizer.step(); steps++; } long elapsed = System.currentTimeMillis() - time; if(elapsed > 33) // no more than 30 updates / sec { // update the kinemage from the GUI thread //System.err.println(steps+" steps between updates"); steps = 0; SwingUtilities.invokeLater(new ReflectiveRunnable(this, "updateKinemage")); } }//while runMin //System.err.println(steps+" steps between updates"); steps = 0; SwingUtilities.invokeLater(new ReflectiveRunnable(this, "updateKinemage")); // we have to own the lock in order to wait() synchronized(this) { // we will be notify()'d when state changes try { this.wait(); } catch(InterruptedException ex) {} } } } //}}} //{{{ updateKinemage //################################################################################################## // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void updateKinemage() { synchronized(stateMan) { stateMan.getState(); } int nPoints = 0; Triple centroid = new Triple(); for(Iterator iter = rubberBand.iterator(); iter.hasNext(); nPoints++) { KPoint p = (KPoint) iter.next(); centroid.add(p); } centroid.mult( 1.0/nPoints ); for(Iterator iter = rubberBand.iterator(); iter.hasNext(); ) { KPoint p = (KPoint) iter.next(); int index = (int) Math.min(colors.length-1, 3*centroid.distance(p)); p.setColor(colors[index]); } kCanvas.repaint(); } //}}} //{{{ stateChanged, onGuiAction //############################################################################## public void stateChanged(ChangeEvent ev) { this.onGuiAction(null); } // This method is the target of reflection -- DO NOT CHANGE ITS NAME public void onGuiAction(ActionEvent ev) { synchronized(stateMan) { stateMan.setBondTerms((cbUseBonds.isSelected() ? bondTerms : Collections.EMPTY_SET), (double)slBonds.getValue() / (double)slBonds.getMaximum()); stateMan.setAngleTerms((cbUseAngles.isSelected() ? angleTerms : Collections.EMPTY_SET), (double)slAngles.getValue() / (double)slAngles.getMaximum()); stateMan.setNbTerms((cbUseVDW.isSelected() ? nbTerms : Collections.EMPTY_SET), (double)slVDW.getValue() / (double)slVDW.getMaximum()); runMin = cbRunMinimizer.isSelected(); } synchronized(this) { this.notifyAll(); } } //}}} //{{{ xx_click() functions //################################################################################################## /** Override this function for (left-button) clicks */ public void click(int x, int y, KPoint p, MouseEvent ev) { super.click(x, y, p, ev); } //}}} //{{{ xx_drag() functions //################################################################################################## /** Override this function for (left-button) drags */ public void drag(int dx, int dy, MouseEvent ev) { KView v = kMain.getView(); if(v != null && draggedPoint != null) { Dimension dim = kCanvas.getCanvasSize(); float[] center = v.getCenter(); float[] offset = v.translateRotated(ev.getX() - dim.width/2, dim.height/2 - ev.getY(), 0, Math.min(dim.width, dim.height)); mouseTug.setX(center[0]+offset[0]); mouseTug.setY(center[1]+offset[1]); mouseTug.setZ(center[2]+offset[2]); synchronized(stateMan) { stateMan.setPoint(stateMan.getIndex(mouseTug)); } //synchronized(stateMan) { stateMan.setState(); } synchronized(this) { this.notifyAll(); } } else super.drag(dx, dy, ev); } //}}} //{{{ Mouse click listners //################################################################################################## public void mousePressed(MouseEvent ev) { super.mousePressed(ev); if(kMain.getKinemage() != null) draggedPoint = kCanvas.getEngine().pickPoint(ev.getX(), ev.getY(), services.doSuperpick.isSelected()); else draggedPoint = null; // Otherwise, we just create a nonsensical warning message about stereo picking if(draggedPoint == null) allPoints = null; else { mouseTug.like(draggedPoint); int i = rubberBand.getChildren().indexOf(draggedPoint); int j = stateMan.getIndex(mouseTug); if(i != -1 && j != -1) synchronized(stateMan) { extraTerms.clear(); extraTerms.add(new BondTerm(i, j, 0, 30)); stateMan.setExtraTerms(extraTerms); } // The 0.5 allows for a little roundoff error, // both in the kinemage itself and our floating point numbers. Collection all = kCanvas.getEngine().pickAll3D( draggedPoint.getDrawX(), draggedPoint.getDrawY(), draggedPoint.getDrawZ(), services.doSuperpick.isSelected(), 0.5); allPoints = (KPoint[])all.toArray( new KPoint[all.size()] ); } } public void mouseReleased(MouseEvent ev) { // Let's keep the point around so we can Z-translate too //draggedPoint = null; synchronized(stateMan) { stateMan.setExtraTerms(Collections.EMPTY_SET); } } //}}} //{{{ getToolPanel, getHelpAnchor, toString //################################################################################################## /** Returns a component with controls and options for this tool */ protected Container getToolPanel() { return toolPane; } /** * Returns an anchor marking a place within king-manual.html * that is the help for this tool. This is called by the default * implementation of getHelpURL(). * If you override that function, you can safely ignore this one. * @return for example, "#navigate-tool" (or null) */ public String getHelpAnchor() { return null; } public String toString() { return "Rubber band toy"; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/forcefield/EnergyTerm.java0000644000000000000000000000337611531212724024325 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.forcefield; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * EnergyTerm is a generic interface for the terms of a * molecular-mechanics-style "force field" that can have first derivatives * computed (preferably analytically). * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Mon Jul 12 08:49:45 EDT 2004 */ public interface EnergyTerm //extends ... implements ... { /** * Calculates the energy contribution of this term * based on the given system state. * @param state the state of the system, as represented by a (read-only) * vector of real numbers. * @return the energy of this term, in unspecified units. */ public double eval(double[] state); /** * Calculates the energy contribution of this term * based on the given system state, as well as the gradient. * @param state the state of the system, as represented by a (read-only) * vector of real numbers. * @param gradient equal in length to state, the components * of the gradient should be added to this array. If it is [0] coming in, * the output will be exactly the gradient of this term alone. * (The "gradient" is the vector of partial first derivatives * of this term with respect to each variable of state in turn. * The negative of the gradient is the force vector.) * @return the energy of this term, in unspecified units. */ public double eval(double[] state, double[] gradient); }//class king-2.21.120420/chiropraxis/src/chiropraxis/forcefield/StateManager.java0000644000000000000000000003421611531212724024614 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.forcefield; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.r3.*; //}}} /** * StateManager keeps track of the points and energy terms * used for a molecular mechanics force field minimization. * * Before beginning the minimization call accept(). * GradientMinimizer does this for you, so you don't have to worry about it. * * This class uses IdentityHashMap, which first became available with Java 1.4. * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Mon Jul 12 13:17:42 EDT 2004 */ public class StateManager //extends ... implements ... { //{{{ Constants static final EnergyTerm[] emptyTerms = {}; //}}} //{{{ Variable definitions //############################################################################## // The 3-D points that define this system MutableTuple3[] points; // Only the first N coordinates actually move during minimization int nMobile; // The current state, and the current "test" state for line minimization double[] state, testState; /** The gradient of the function as calculated by the last call to accept(). Read only. */ public double[] gradient; // Gradients of individual components double[] gBond, gAngle, gNonbond, gExtra; // The various energy terms being used right now EnergyTerm[] bondTerms = {}; EnergyTerm[] angleTerms = {}; EnergyTerm[] nbTerms = {}; EnergyTerm[] extraTerms = {}; // Weights on all the various energy terms double wBond = 1, wAngle = 1, wNonbond = 1, wExtra = 1; // A table for looking up the index of a particular point Map indexTable; //}}} //{{{ Constructor(s) //############################################################################## public StateManager(MutableTuple3[] points, int nMobile) { super(); this.points = (MutableTuple3[]) points.clone(); this.nMobile = nMobile * 3; this.state = new double[ points.length * 3 ]; this.testState = new double[ points.length * 3 ]; this.gradient = new double[ points.length * 3 ]; this.gBond = new double[ points.length * 3 ]; this.gAngle = new double[ points.length * 3 ]; this.gNonbond = new double[ points.length * 3 ]; this.gExtra = new double[ points.length * 3 ]; this.indexTable = new IdentityHashMap(); for(int i = 0; i < points.length; i++) indexTable.put(points[i], new Integer(i)); setState(); } //}}} //{{{ get/setState //############################################################################## /** * Initializes the current state and test state to be the contents of * the current coordinates of the given array of MutableTuple3's. * This does not change the "default set" given when this object was created. * @throws IndexOutOfBoundsException if pts is longer/shorter than expected. */ public void setState(MutableTuple3[] pts) { if(pts.length != this.points.length) throw new IndexOutOfBoundsException("Must provide exactly "+points.length+" points"); for(int i = 0, ii = 0; i < pts.length; i++) { state[ii] = testState[ii] = pts[i].getX(); ii++; state[ii] = testState[ii] = pts[i].getY(); ii++; state[ii] = testState[ii] = pts[i].getZ(); ii++; } } /** * Initializes the current state and test state to be the contents of * the current coordinates of the MutableTuple3's this object was created with. */ public void setState() { this.setState(this.points); } /** * Writes the current state into the coordinates of the * given array of MutableTuple3's. * This does not change the "default set" given when this object was created. * @throws IndexOutOfBoundsException if pts is longer/shorter than expected. */ public void getState(MutableTuple3[] pts) { if(pts.length != this.points.length) throw new IndexOutOfBoundsException("Must provide exactly "+points.length+" points"); for(int i = 0, ii = 0; i < pts.length; i++) { pts[i].setX( state[ii++] ); pts[i].setY( state[ii++] ); pts[i].setZ( state[ii++] ); } } /** * Writes the current state into the coordinates of the * MutableTuple3's this object was created with. */ public void getState() { this.getState(this.points); } //}}} //{{{ get/setPoint, getIndex //############################################################################## /** Changes the coordinates of the ith point. */ public void setPoint(int i, double x, double y, double z) { int ii = i*3; state[ii ] = x; state[ii+1] = y; state[ii+2] = z; } /** Updates the coordinates of the ith point from its corresponding MutableTuple3 object. */ public void setPoint(int i) { int ii = i*3; state[ii ] = points[i].getX(); state[ii+1] = points[i].getY(); state[ii+2] = points[i].getZ(); } /** Fills in the coordinates of the ith point */ public void getPoint(int i, MutableTuple3 t) { int ii = i*3; t.setXYZ( state[ii], state[ii+1], state[ii+2] ); } /** * Retrieves the index associated with given point. * If the point is not part of this state, returns -1. * Lookup is based on strict equality, not equals(). */ public int getIndex(MutableTuple3 t) { Integer i = (Integer) indexTable.get(t); if(i == null) return -1; else return i.intValue(); } //}}} //{{{ get/setXXXTerms //############################################################################## /** Sets the bond energy terms that will be evaluated for this state. */ public void setBondTerms(Collection terms, double weight) { this.bondTerms = (EnergyTerm[]) terms.toArray(new EnergyTerm[terms.size()]); this.wBond = weight; } public void setBondTerms(Collection terms) { setBondTerms(terms, 1); } /** Returns a copy of the array of bond terms that are being evaluated for this state. */ public EnergyTerm[] getBondTerms() { return (EnergyTerm[]) bondTerms.clone(); } /** Sets the angle energy terms that will be evaluated for this state. */ public void setAngleTerms(Collection terms, double weight) { this.angleTerms = (EnergyTerm[]) terms.toArray(new EnergyTerm[terms.size()]); this.wAngle = weight; } public void setAngleTerms(Collection terms) { setAngleTerms(terms, 1); } /** Returns a copy of the array of angle terms that are being evaluated for this state. */ public EnergyTerm[] getAngleTerms() { return (EnergyTerm[]) angleTerms.clone(); } /** Sets the nonbonded energy terms that will be evaluated for this state. */ public void setNbTerms(Collection terms, double weight) { this.nbTerms = (EnergyTerm[]) terms.toArray(new EnergyTerm[terms.size()]); this.wNonbond = weight; } public void setNbTerms(Collection terms) { setNbTerms(terms, 1); } /** Returns a copy of the array of nonbonded terms that are being evaluated for this state. */ public EnergyTerm[] getNbTerms() { return (EnergyTerm[]) nbTerms.clone(); } /** Sets the extra energy terms that will be evaluated for this state. */ public void setExtraTerms(Collection terms, double weight) { this.extraTerms = (EnergyTerm[]) terms.toArray(new EnergyTerm[terms.size()]); this.wExtra = weight; } public void setExtraTerms(Collection terms) { setExtraTerms(terms, 1); } /** Returns a copy of the array of extra terms that are being evaluated for this state. */ public EnergyTerm[] getExtraTerms() { return (EnergyTerm[]) extraTerms.clone(); } //}}} //{{{ test, accept //############################################################################## /** * Evaluates this function at its current state PLUS lambda*path and returns * the energy. */ public double test(double lambda, double[] path) { for(int i = 0; i < nMobile; i++) { testState[i] = state[i] + lambda*path[i]; } // remaining terms of testState and state are the same return eval(testState); } /** * Accepts the last state submitted to test() and re-evaluates the gradient. */ public double accept() { double[] swap = state; state = testState; testState = swap; return eval(state, gradient); } /** * Combo of test() and accept() */ public double accept(double lambda, double[] path) { for(int i = 0; i < nMobile; i++) { testState[i] = state[i] + lambda*path[i]; } double[] swap = state; state = testState; testState = swap; return eval(state, gradient); } //}}} //{{{ eval(state, gradient) //############################################################################## public double eval(double[] s, double[] g) { //Arrays.fill(g, 0); double bondE = 0, angleE = 0, nonbondE = 0, extraE = 0; if(bondTerms != null && wBond != 0) { Arrays.fill(gBond, 0); for(int i = 0, end_i = bondTerms.length; i < end_i; i++) bondE += bondTerms[i].eval(s, gBond); } if(angleTerms != null && wAngle != 0) { Arrays.fill(gAngle, 0); for(int i = 0, end_i = angleTerms.length; i < end_i; i++) angleE += angleTerms[i].eval(s, gAngle); } if(nbTerms != null && wNonbond != 0) { Arrays.fill(gNonbond, 0); for(int i = 0, end_i = nbTerms.length; i < end_i; i++) nonbondE += nbTerms[i].eval(s, gNonbond); } if(extraTerms != null && wExtra != 0) { Arrays.fill(gExtra, 0); for(int i = 0, end_i = extraTerms.length; i < end_i; i++) extraE += extraTerms[i].eval(s, gExtra); } for(int i = 0, end_i = g.length; i < end_i; i++) g[i] = wBond*gBond[i] + wAngle*gAngle[i] + wNonbond*gNonbond[i] + wExtra*gExtra[i]; return wBond*bondE + wAngle*angleE + wNonbond*nonbondE + wExtra*extraE; } //}}} //{{{ eval(state) //############################################################################## public double eval(double[] s) { double bondE = 0, angleE = 0, nonbondE = 0, extraE = 0; if(bondTerms != null && wBond != 0) { for(int i = 0, end_i = bondTerms.length; i < end_i; i++) bondE += bondTerms[i].eval(s); } if(angleTerms != null && wAngle != 0) { for(int i = 0, end_i = angleTerms.length; i < end_i; i++) angleE += angleTerms[i].eval(s); } if(nbTerms != null && wNonbond != 0) { for(int i = 0, end_i = nbTerms.length; i < end_i; i++) nonbondE += nbTerms[i].eval(s); } if(extraTerms != null && wExtra != 0) { for(int i = 0, end_i = extraTerms.length; i < end_i; i++) extraE += extraTerms[i].eval(s); } return wBond*bondE + wAngle*angleE + wNonbond*nonbondE + wExtra*extraE; } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ main (for testing) //############################################################################## public static void main(String[] args) { Triple[] points = new Triple[42]; for(int i = 0; i < points.length-2; i++) points[i] = new Triple(10*Math.random(), 10*Math.random(), 10*Math.random()); points[points.length-2] = new Triple(0,0,0); points[points.length-1] = new Triple(10,10,10); ArrayList bondTerms = new ArrayList(); for(int i = 0; i < points.length-3; i++) bondTerms.add(new BondTerm(i, i+1, 1, 1)); bondTerms.add(new BondTerm(points.length-3, points.length-1, 0, 1)); bondTerms.add(new BondTerm(0, points.length-2, 0, 1)); // For faking angle restraints with distances: //for(int i = 0; i < points.length-4; i++) // terms.add(new BondTerm(i, i+2, 1.5, 1)); ArrayList angleTerms = new ArrayList(); for(int i = 0; i < points.length-4; i++) angleTerms.add(new AngleTerm(i, i+1, i+2, 120, 1)); StateManager stateman = new StateManager(points, points.length-2); stateman.setBondTerms(bondTerms); stateman.setAngleTerms(angleTerms); GradientMinimizer min = new GradientMinimizer(stateman); PrintStream out = System.out; DecimalFormat df = new DecimalFormat("0.0###"); out.println("@kinemage 1"); int j, netEvals = 0; for(j = 0; j < 100; j++) { out.println("@group {step "+j+"} animate dominant"); out.println("@vectorlist {step "+j+"}"); for(int i = 0; i < points.length-2; i++) out.println("{} "+points[i].format(df)); if(! min.step()) break; System.err.println(j+": "+min.getFuncEvals()+" evals; dE = "+df.format(100*min.getFracDeltaEnergy()) +"% ("+df.format(min.getDeltaEnergy())+"); |G| = "+df.format(min.getGradMag())); netEvals += min.getFuncEvals(); stateman.getState(); } System.err.println("Average "+(netEvals / (j+1))+" evals per step"); // long time = System.currentTimeMillis(); // for(int j = 0; j < 100000; j++) // { // if(! min.step()) break; // } // time = System.currentTimeMillis() - time; // System.err.println(time+" millis to do 100,000 CG minimization steps."); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/forcefield/GradientMinimizer.java0000644000000000000000000002763611531212724025672 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.forcefield; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * GradientMinimizer performs steepest-descent minimization or * conjugate directions (aka conjugate gradient) minimization * on a StateManager. * *

    This code tries to be a production-quality conjugate gradient minimizer, * but I have limited experience with scientific-numeric computing. * If you want something really bulletproof, the GNU Scientific Library may be better. * *

    This code is based on ideas from "Molecular Modelling" by Andrew R. Leach * and "Numerical Recipes in C", Ch 10 (http://www.library.cornell.edu/nr/bookcpdf.html). * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Tue Oct 28 07:59:57 EST 2003 */ public class GradientMinimizer //extends ... implements ... { //{{{ Constants static DecimalFormat df = new DecimalFormat("0.###E0"); static final double GOLD = (3.0-Math.sqrt(5.0))/2.0; // 0.381... static final double GOLDEN = 2.0 - GOLD; // 1.681... //}}} //{{{ Variable definitions //############################################################################## /** The energy function to be minimized. */ StateManager system; /** The energy at the end of the last step. */ double prevEnergy; /** The gradient or search vector from the previous step. */ double[] prevGrad; double prevGMag; double[] prevPath; double prevPMag; /** The energy at the end of the current step. */ double currEnergy; /** The gradient or search vector from the current step. */ double[] currGrad; double currGMag; double[] currPath; double currPMag; /** Number of steps executed. */ int nSteps = 0; /** Number of times the function has been evaluated for the last step. */ int eval = 0; /** Whether we've hit the minimum */ boolean hitBottom = false; //}}} //{{{ Constructor(s) //############################################################################## public GradientMinimizer(StateManager stateman) { super(); system = stateman; // Initialize the gradient and energy currEnergy = prevEnergy = system.accept(); prevGrad = (double[]) system.gradient.clone(); prevPath = (double[]) system.gradient.clone(); currGrad = (double[]) system.gradient.clone(); currPath = (double[]) system.gradient.clone(); currGMag = currPMag = prevGMag = prevPMag = getMagnitude(system.gradient); } //}}} //{{{ step //############################################################################## /** * Executes one step of minimization on the system. * Once the minimization is so close to complete as to be numerically * unstable, this function will return false and further calls to it will * have no effect. */ public boolean step() { if(hitBottom) return false; // Save results from previous run for this step() double[] swap; prevEnergy = currEnergy; prevGMag = currGMag; prevPMag = currPMag; swap = prevGrad; prevGrad = currGrad; currGrad = swap; swap = prevPath; prevPath = currPath; currPath = swap; // Calculate the search vector for conjugate directions. makeSearchVector(); // sets currGrad, currGMag, currPath, currPMag // Take a step against the search vector to reduce the energy. if(currGMag > 0 && currPMag > 0) doLineMinimization(); else // currG/PMag is 0 or NaN { hitBottom = true; //System.err.println("|G| = "+df.format(currGMag)+" |P| = "+df.format(currPMag)); } if(hitBottom) currGMag = 0; nSteps++; return true; } //}}} //{{{ makeSearchVector, getMagnitude //############################################################################## /** * Transforms grad into a conjugate direction if appropriate, * and returns its new magnitude. */ void makeSearchVector() { int len = system.gradient.length; System.arraycopy(system.gradient, 0, currGrad, 0, len); currGMag = getMagnitude(currGrad); if(nSteps % len != 0) { /* The Fletcher-Reeves version * / double gamma = (currGMag/prevGMag); gamma = gamma*gamma; /* The Fletcher-Reeves version */ /* The Polak-Ribiere version */ double gamma = 0; for(int i = 0; i < len; i++) gamma += (currGrad[i] - prevGrad[i]) * currGrad[i]; gamma = gamma / (prevGMag * prevGMag); /* The Polak-Ribiere version */ for(int i = 0; i < len; i++) currPath[i] = currGrad[i] + gamma*prevPath[i]; currPMag = getMagnitude(currPath); } else // steepest descent { System.arraycopy(currGrad, 0, currPath, 0, len); currPMag = currGMag; } } /** Returns the magnitude of grad */ double getMagnitude(double[] grad) { double gMag = 0.0; for(int i = 0, end_i = grad.length; i < end_i; i++) gMag += grad[i] * grad[i]; gMag = Math.sqrt(gMag); return gMag; } //}}} //{{{ doLineMinimization //############################################################################## void doLineMinimization() { final double initStep = 1e-2; // seems to be a consistently good guess final double tol = 1e-4; // no less than 3e-8 for doubles, 1e-4 for floats eval = 0; // Bracket the function on (a, b, c) double[] path = currPath; double a = 0, b, c, x, fa, fb, fc, fx; fa = this.prevEnergy; //system.test(a, path); eval++; b = initStep; // Find a smaller energy at b: while(true) { fb = system.test(-b, path); eval++; if(fb < fa) break; // good -- we found a smaller point else if(b < 1e-20) // if min is at 0, Brent won't get closer than 1e-10 anyway { // Testing |G| / (n) when n = number of variables is due to T. Schlick if(currGMag / Math.sqrt(path.length) < 1e-6*(1+Math.abs(fa)) || currGMag == prevGMag) { hitBottom = true; //System.err.println("b is too small after "+eval+" evals; |G| = "+df.format(currGMag)); return; } else // just a snag, take a small "random" step along the path { currEnergy = system.accept(); eval++; // larger steps may cause explosions! //System.err.println("Got stuck, took a small step; |G| = "+df.format(currGMag)); return; } } else b /= 8.0; // failure - try a smaller step } // Initial guess for c: c = b + (b-a)*GOLDEN; fc = system.test(-c, path); eval++; // Search for bracket by golden ratio while(fc < fb) { x = c + (c-b)*GOLDEN; fx = system.test(-x, path); eval++; a = b; b = c; c = x; fa = fb; fb = fc; fc = fx; } //if(eval > 20) System.err.print("Bracketed on "+a+" "+b+" "+c+" in "+eval+" evals."); // Brent's method. double d = 0, e = 0, u, v, w, xm, fu, fv, fw, p, q, r, tol1, tol2; x = w = v = b; fx = fw = fv = fb; b = c; // change in nomenclature: min now bracketed in (a,b) for(int i = 0; i < 100; i++) { xm = (a + b) / 2.0; // a and b started off > 0, so x will always be > 0. // This saves us some calls to Math.abs(tol1) below. tol1 = tol*x + 1e-10; tol2 = 2.0 * tol1; // If bracketing interval is smaller than twice the fractional tolerance, end. if(Math.abs(x-xm) <= (tol2 - (b-a)/2.0)) { currEnergy = system.accept(-x, path); eval++; //if(eval > 40) System.err.println("Solved to "+tol+" as "+b+" in "+eval+" evals."); return; } // Try a parabolic fit if ... ? if(Math.abs(e) > tol1) { r = (x-w) * (fx-fv); q = (x-v) * (fx-fw); p = (x-v)*q - (x-w)*r; q = 2.0 * (q-r); if(q > 0.0) p = -p; else q = -q; // Parabolic fit is not OK; do golden sections instead. if(Math.abs(p) >= Math.abs(0.5*q*e) || p <= q*(a-x) || p >= q*(b-x)) { e = (x >= xm ? a-x : b-x); d = GOLD * e; } // Parabolic fit *is* OK, use that instead of golden sections. else { e = d; d = p/q; u = x+d; if(u-a < tol2 || b-u < tol2) d = (xm-x >= 0 ? tol1 : -tol1);//(xm-x >= 0 ? Math.abs(tol1) : -Math.abs(tol1)); } } // Skip parabolic fitting; search by golden sections. else { e = (x >= xm ? a-x : b-x); d = GOLD * e; } //u = (Math.abs(d) >= tol1 ? x+d : x+(d >= 0 ? Math.abs(tol1) : -Math.abs(tol1))); // Make sure we don't take any steps smaller than our tolerance. u = (Math.abs(d) >= tol1 ? x+d : x+(d >= 0 ? tol1 : -tol1)); fu = system.test(-u, path); eval++; if(fu <= fx) { if(u >= x) a = x; else b = x; v = w; w = x; x = u; fv = fw; fw = fx; fx = fu; } else { if(u < x) a = u; else b = u; if(fu <= fw || w == x) { v = w; w = u; fv = fw; fw = fu; } else if(fu <= fv || v == x || v == w) { v = u; fv = fu; } } } System.err.println("GradientMinimizer.doLineMinimization(): Failed to minimize after 100 loops through Brent!"); currEnergy = system.accept(-x, path); eval++; return; } //}}} //{{{ get(Delta)Energy, get(Delta)GradMag, getFuncEvals //############################################################################## /** Returns the energy of the state after the last step. */ public double getEnergy() { return currEnergy; } /** Returns the change in energy after the last step. */ public double getDeltaEnergy() { return currEnergy - prevEnergy; } /** Returns the fractional change in energy after the last step. */ public double getFracDeltaEnergy() { return (currEnergy - prevEnergy) / prevEnergy; } /** Returns the gradient magnitude after the last step. */ public double getGradMag() { return currGMag; } /** Returns the change in gradient magnitude after the last step. */ public double getDeltaGradMag() { return currGMag - prevGMag; } /** Returns the number of times the function was evaluated in the last step. */ public int getFuncEvals() { return eval; } //}}} //{{{ empty_code_segment //############################################################################## //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/forcefield/AngleTerm.java0000644000000000000000000001605411531212724024117 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.forcefield; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.*; //}}} /** * AngleTerm is a harmonic bond-angle-bending term of a force field. * Following the example of T. Schlick, we evaluate an expression of cos(T) to * save calls to trigonometric and inverse trig. functions. * Thus, E = k * (cos(T) - cos(T0))^2, and the derivatives * are too complex to write out here. * * Analytic derivatives based on my own calculations and on * Britt H. Park (2003) "Some Useful Math for Molecular Mechanics" * http://www.sciencething.org/MD.html * and * Tamar Schlick (1989) * "A Recipe for Evaluating and Differentiating cos PHI Expressions" * Journal of Computational Chemistry, 10(7): 951-956. * *

    Copyright (C) 2004 by Ian W. Davis. All rights reserved. *
    Begun on Mon Jul 12 10:02:42 EDT 2004 */ public class AngleTerm implements EnergyTerm { //{{{ Constants //}}} //{{{ Variable definitions //############################################################################## int a, b, c; // indexes of the first coordinate of the points (angle a-b-c) double k; // the spring constant double cos_t0; // the target or ideal cosine bond angle //}}} //{{{ Constructor(s) //############################################################################## /** Target angle is in degrees. */ public AngleTerm(int atomA, int atomB, int atomC, double targetAngle, double springConst) { super(); a = atomA * 3; b = atomB * 3; c = atomC * 3; k = springConst; cos_t0 = Math.cos( Math.toRadians(targetAngle) ); } //}}} //{{{ eval //############################################################################## public double eval(double[] state, double[] gradient) { // Let u = a - b, v = c - b double ux, uy, uz, vx, vy, vz; ux = state[a ] - state[b ]; uy = state[a+1] - state[b+1]; uz = state[a+2] - state[b+2]; vx = state[c ] - state[b ]; vy = state[c+1] - state[b+1]; vz = state[c+2] - state[b+2]; // Numerator of cos(t): u.v -- aka N~ double numer = ux*vx + uy*vy + uz*vz; // Denominator of cos(t): sqrt[ (u.u)(v.v) ] -- aka D~ double denom2 = (ux*ux + uy*uy + uz*uz) * (vx*vx + vy*vy + vz*vz); double denom = Math.sqrt(denom2); // Value of cos(t), and the energy double cos_t, dcos_t, E; cos_t = numer / denom; dcos_t = cos_t - cos_t0; E = k * (dcos_t*dcos_t); /* // Derivatives of the u.v dot product, which go in the Numerator double dNax, dNay, dNaz, dNbx, dNby, dNbz, dNcx, dNcy, dNcz; dNax = 0*ux + 1*vx; dNcx = 1*ux + 0*vx; dNbx = -1*ux + -1*vx; // Derivatives of the lengths of u and v, which go in the Denomenator // These are the derivatives of D, not of D~ double dDax, dDay, dDaz, dDbx, dDby, dDbz, dDcx, dDcy, dDcz; dDax = 2*ux; dDcx = 2*vx; dDbx = -2*(ux) + -2*(vx); */ // Actual derivative of cos_t: // 1/D~ * [dN~/dx - dD~/dx * cos_t ] // [dN~/dx - 1/2D~ * dD/dx * cos_t ] / D~ // [dN~/dx - 1/2D~ * 2(ux) * N~/D~] / D~ // [dN~/dx - N~/(D~^2) * (ux) ] / D~ // Gradient = 2k*(cos_t - cos_t0)*dcos_t/dx double scale = 2 * k * dcos_t / denom; double uvx = (ux+vx), uvy = (uy+vy), uvz = (uz+vz); gradient[a ] += scale * (vx - numer*ux/denom2); gradient[a+1] += scale * (vy - numer*uy/denom2); gradient[a+2] += scale * (vz - numer*uz/denom2); gradient[c ] += scale * (ux - numer*vx/denom2); gradient[c+1] += scale * (uy - numer*vy/denom2); gradient[c+2] += scale * (uz - numer*vz/denom2); gradient[b ] += scale * (numer*uvx/denom2 - uvx); gradient[b+1] += scale * (numer*uvy/denom2 - uvy); gradient[b+2] += scale * (numer*uvz/denom2 - uvz); return E; } public double eval(double[] state) { // Let u = a - b, v = c - b double ux, uy, uz, vx, vy, vz; ux = state[a ] - state[b ]; uy = state[a+1] - state[b+1]; uz = state[a+2] - state[b+2]; vx = state[c ] - state[b ]; vy = state[c+1] - state[b+1]; vz = state[c+2] - state[b+2]; // Numerator of cos(t): u.v -- aka N~ double numer = ux*vx + uy*vy + uz*vz; // Denominator of cos(t): sqrt[ (u.u)(v.v) ] -- aka D~ double denom2 = (ux*ux + uy*uy + uz*uz) * (vx*vx + vy*vy + vz*vz); double denom = Math.sqrt(denom2); // Value of cos(t), and the energy double cos_t, dcos_t; cos_t = numer / denom; dcos_t = cos_t - cos_t0; return k * (dcos_t*dcos_t); } //}}} //{{{ empty_code_segment //############################################################################## //}}} /* //{{{ main (for testing) //############################################################################## public static void main(String[] args) { PrintStream out = System.out; double E; double[] state, grad; state = new double[] {1,0,0, 0,1,0, -1,0,0}; grad = new double[] {0,0,0,0,0,0,0,0,0}; AngleTerm term1a = new AngleTerm(0,1,2,120,1); E = term1a.eval(state, grad); print(out, state, E, grad); grad = new double[] {0,0,0,0,0,0,0,0,0}; AngleTerm term1b = new AngleTerm(0,1,2,90,1); E = term1b.eval(state, grad); print(out, state, E, grad); state = new double[] {0,1,0, 0,0,1, 0,-1,0}; grad = new double[] {0,0,0,0,0,0,0,0,0}; AngleTerm term2 = new AngleTerm(0,1,2,120,1); E = term2.eval(state, grad); print(out, state, E, grad); state = new double[] {0,0,1, 1,0,0, 0,0,-1}; grad = new double[] {0,0,0,0,0,0,0,0,0}; AngleTerm term3 = new AngleTerm(0,1,2,120,1); E = term3.eval(state, grad); print(out, state, E, grad); state = new double[] {1,1,1, 0,0,0, -1,-1,-1}; grad = new double[] {0,0,0,0,0,0,0,0,0}; AngleTerm term4 = new AngleTerm(0,1,2,120,1); E = term4.eval(state, grad); print(out, state, E, grad); } static void print(PrintStream out, double[] state, double energy, double[] grad) { DecimalFormat df = new DecimalFormat("0.000"); out.print("State:"); for(int i = 0; i < state.length; i++) out.print(" "+df.format(state[i])); out.println(); out.println("Energy: "+df.format(energy)); out.print("Gradient:"); for(int i = 0; i < grad.length; i++) out.print(" "+df.format(grad[i])); out.println(); out.println(); } //}}} */ }//class king-2.21.120420/chiropraxis/src/chiropraxis/dezymer/0000755000000000000000000000000011677361404020760 5ustar rootrootking-2.21.120420/chiropraxis/src/chiropraxis/dezymer/SequenceTree.java0000644000000000000000000005775111531212720024213 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.dezymer; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; //import driftwood.r3.*; //}}} /** * SequenceTree uses a hierarchical clustering approach plus the * BLOSUM 62 scoring matrix to make a tree-like graph of sequence relatedness in 2-D. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Tue Oct 28 09:39:34 EST 2003 */ public class SequenceTree //extends ... implements ... { //{{{ Constants /** Space sequences by BLOSUM distance or by 1 unit? */ static final boolean BLOSUM_SPACING = true; /** Layout in radial pattern or traditional tree pattern? */ static final boolean RADIAL_LAYOUT = true; static DecimalFormat df = new DecimalFormat("0.0####"); static final String COLOR_CODES = "ABCDEFGHIJKLM"; static final String BLOSUM_INDICES = "CSTPAGNDEQHRKMILVFYW"; static final int[][] BLOSUM_62 = { { 9 }, // Cys { -1, 4 }, { -1, 1, 5 }, { -3, -1, -1, 7 }, { 0, 1, 0, -1, 4 }, { -3, 0, -2, -2, 0, 6 }, // Gly { -3, 1, 0, -2, -2, 0, 6 }, { -3, 0, -1, -1, -2, -1, 1, 6 }, { -4, 0, -1, -1, -1, -2, 0, 2, 5 }, { -3, 0, -1, -1, -1, -2, 0, 0, 2, 5 }, { -3, -1, -2, -2, -2, -2, 1, -1, 0, 0, 8 }, // His { -3, -1, -1, -2, -1, -2, 0, -2, 0, 1, 0, 5 }, { -3, 0, -1, -1, -1, -2, 0, -1, 1, 1, -1, 2, 5}, { -1, -1, -1, -2, -1, -3, -2, -3, -2, 0, -2, -1, -1, 5 }, { -1, -1, -1, -3, -1, -4, -3, -3, -3, -3, -3, -3, -3, 1, 4 }, { -1, -2, -1, -3, -1, -4, -3, -4, -3, -2, -3, -2, -2, 2, 2, 4 }, // Leu { -1, -2, 0, -2, 0, -3, -3, -3, -2, -2, -3, -3, -2, 1, 3, 1, 4 }, { -2, -2, -2, -4, -2, -3, -3, -3, -3, -3, -1, -3, -3, 0, 0, 0, -1, 6 }, { -2, -2, -2, -3, -2, -3, -2, -3, -2, -1, 2, -2, -2, -1, -1, -1, -1, 3, 7 }, { -2, -3, -2, -4, -3, -2, -4, -4, -3, -2, -2, -3, -3, -1, -3, -2, -3, 1, 2, 11 } }; //}}} //{{{ CLASS: Sequence //############################################################################## class Sequence { Sequence child1 = null, child2 = null; String seq = null; // either seq is null or children are null, but not both SeqTracker tracker = null; BitSet flags = new BitSet(); // for marking which files this came from int index = -1; // array index for tracking blosum scores int weight = 1; // number of sequences clustered into this node int height = 0; // max number of branches below this int depth = 0; // number of nodes above this ones //double minx = -1, maxx = -1; // position on the traditional 2-D chart double minx = 0, maxx = 360; // position on the traditional 2-D chart public Sequence(String sequence) { seq = sequence; tracker = new SeqTracker(seq); } public Sequence(Sequence s1, Sequence s2) { child1 = s1; child2 = s2; weight = child1.weight + child2.weight; height = prevHeight++; flags.clear(); flags.or(child1.flags); flags.or(child2.flags); tracker = new SeqTracker(child1.tracker, child2.tracker); } public String toString() //{ return (seq == null ? weight+" sequences" : seq); } { return tracker.toString(); } /** * Depth First Search ensures we visit leaf nodes in left-to-right order * (where child1 is always left of child2). Thus we use prevX to track * the position of the last child node laid out; when finished, we also * add in the distance from the last leaf around to the first, to * facilitate radial layout later. */ public void calculatePositions() { if(child1 == null || child2 == null) { this.height = 0; } else { double midx = (minx + maxx) / 2.0; child1.minx = this.minx; child1.maxx = midx; child1.depth = this.depth+1; child1.calculatePositions(); child2.minx = midx; child2.maxx = this.maxx; child2.depth = this.depth+1; child2.calculatePositions(); this.height = Math.max(child1.height, child2.height)+1; } // Temporary, to avoid NPEx if(firstLeaf == null) prevLeaf = firstLeaf = this; /*if(child1 == null || child2 == null) { if(firstLeaf == null) { minx = maxx = prevX = 0; prevLeaf = firstLeaf = this; } else { // with BLOSUM scores, higher numbers mean more similar, not less similar! if(BLOSUM_SPACING) minx = maxx = prevX = (prevX + 1 + maxPairwiseBlosum - blosumScore(this, prevLeaf)); else minx = maxx = prevX = (prevX + 1); prevLeaf = this; } } else { child1.calculatePositions(); child2.calculatePositions(); minx = child1.minx; maxx = child2.maxx; }*/ } private double getRawX() { //if(child1 == null || child2 == null) return (minx + maxx) / 2.0; //else // return (child1.maxx + child2.minx) / 2.0; } /** Properly scaled X coordinate for drawing. */ public double getX() { double r = depth / Math.max(depth + height, 1.0); double t = Math.toRadians(getRawX()); return r * Math.cos(t); /*if(RADIAL_LAYOUT) { double r = prevHeight - height; double t = 2.0 * Math.PI * (getRawX() / prevX); return r * Math.cos(t); } else return getRawX();*/ } /** Properly scaled Y coordinate for drawing. */ public double getY() { double r = depth / Math.max(depth + height, 1.0); double t = Math.toRadians(getRawX()); return r * Math.sin(t); /*if(RADIAL_LAYOUT) { double r = prevHeight - height; double t = 2.0 * Math.PI * (getRawX() / prevX); return r * Math.sin(t); } // So we get a "square" tree: else return (double)height * (double)prevX / (double)prevHeight;*/ } } //}}} //{{{ CLASS: SeqTracker //############################################################################## /** Tracks sequence distributions for composite nodes */ static class SeqTracker { Map[] maps; public SeqTracker(SeqTracker t1, SeqTracker t2) { maps = new Map[t1.length()]; for(int i = 0; i < length(); i++) { maps[i] = new HashMap( t1.maps[i] ); // clone for(Iterator iter = t2.maps[i].entrySet().iterator(); iter.hasNext(); ) { Map.Entry e = (Map.Entry) iter.next(); String key = (String) e.getKey(); Integer v1 = (Integer) e.getValue(); Integer v2 = (Integer) maps[i].get(key); if(v2 == null) v2 = new Integer(0); maps[i].put( key, new Integer(v1.intValue() + v2.intValue()) ); } } } public SeqTracker(String seq) { maps = new Map[seq.length()]; for(int i = 0; i < length(); i++) { maps[i] = new HashMap(); maps[i].put(seq.substring(i,i+1), new Integer(1)); } } /** TODO: sort by number of hits */ public String toString() { StringBuffer buf = new StringBuffer(); for(int i = 0; i < length(); i++) { Map m = maps[i]; if(m.size() == 1) buf.append( m.keySet().iterator().next() ); else { buf.append("["); boolean first = true; for(Iterator iter = m.entrySet().iterator(); iter.hasNext(); ) { Map.Entry e = (Map.Entry) iter.next(); if(first) first = false; else buf.append(" "); buf.append(e.getKey()); buf.append(e.getValue()); } buf.append("]"); } } return buf.toString(); } public int length() { return maps.length; } } //}}} //{{{ Variable definitions //############################################################################## List inputFiles = new ArrayList(); int prevX = 0; // X position of most recently placed leaf Sequence prevLeaf = null; // identity of most recently placed leaf Sequence firstLeaf = null; // first leaf placed, at X = 0 int prevHeight = 1; // Y position of most recently placed branch int maxPairwiseBlosum = Integer.MIN_VALUE; // used for BLOSUM spacing in output //}}} //{{{ Constructor(s) //############################################################################## public SequenceTree() { super(); } //}}} //{{{ loadSequences //############################################################################## Sequence[] loadSequences(InputStream[] inp) throws IOException { Map seqs = new HashMap(); // String s; for(int k = 0; k < inp.length; k++) { LineNumberReader in = new LineNumberReader(new InputStreamReader(inp[k])); while((s = in.readLine()) != null) { if(s.length() > 0) { Sequence seq = (Sequence)seqs.get(s); if(seq == null) { seq = new Sequence(s); seqs.put(s, seq); } seq.flags.set(k); // mark it as coming from this stream } } } // Assign unique index for every unique sequence Sequence[] retVal = (Sequence[]) seqs.values().toArray( new Sequence[seqs.size()] ); for(int i = 0; i < retVal.length; i++) retVal[i].index = i; return retVal; } //}}} //{{{ blosumScore //############################################################################## /** Range is [-4, +11] per amino acid in the input. See Henikoff & Henikoff (1992) PNAS 92:10915 */ int blosumScore(Sequence seq1, Sequence seq2) { String s1 = seq1.toString(); String s2 = seq2.toString(); int result = 0, len = s1.length(); int i = 0, j = 0, k = 0; for(k = 0; k < len; k++) { try { i = BLOSUM_INDICES.indexOf(s1.charAt(k)); j = BLOSUM_INDICES.indexOf(s2.charAt(k)); if(i < 0 || j < 0) {} // do nothing; unknown AA code else if(i < j) result += BLOSUM_62[j][i]; else result += BLOSUM_62[i][j]; } catch(IndexOutOfBoundsException ex) { ex.printStackTrace(); System.err.println("i = "+i+"; j = "+j+"; k = "+k); System.err.println("Comparing "+s1+" ("+s1.length()+") and "+s2+" ("+s2.length()+")"); System.exit(1); } } return result; } //}}} //{{{ renderToKinemage //############################################################################## void renderToKinemage(Sequence top, PrintStream out) { out.println("@kinemage"); out.println("@onewidth"); out.println("@flat"); int i = 0, k = 0; for(Iterator iter = inputFiles.iterator(); iter.hasNext(); ) out.println("@"+(++i)+"aspect {"+((File)iter.next()).getName()+"}"); out.println("@group {connections}"); out.println("@subgroup {connections} nobutton"); out.println("@vectorlist {links} color= gray"); renderConnections(top, out); out.println("@group {sequences}"); out.println("@subgroup {sequences} nobutton"); //out.println("@balllist {balls} color= white radius= 0.8"); out.println("@balllist {balls} color= white radius= 0.005"); renderNodeBall(top, out); /*out.println("@labellist {labels} color= white off"); for(i = 0; i < seqs.length; i++) { out.print("{"+seqs[i].toString()+"} ("); for(k = 0; k < inputFiles.size(); k++) { if(seqs[i].flags.get(k)) out.print(COLOR_CODES.charAt( k % COLOR_CODES.length() )); else out.print("X"); } out.println(") "+df.format(seqs[i].getX())+" "+df.format(seqs[i].getY())+" "+df.format(seqs[i].getZ())); }*/ // Translucent balls, one group per file /*String[] clearColors = {"hotpink", "red", "orange", "gold", "yellow", "lime", "green"}; k = 0; for(Iterator iter = inputFiles.iterator(); iter.hasNext(); k++) { out.println("@group {"+((File)iter.next()).getName()+"} dominant animate"); double radius = 0.1 + 0.02*(k % 5); out.println("@balllist {balls} color= "+clearColors[k%clearColors.length]+" radius= "+df.format(radius)+" nohighlight alpha= 0.4"); for(i = 0; i < seqs.length; i++) { if(seqs[i].flags.get(k)) out.println("{"+seqs[i].toString()+"} "+df.format(seqs[i].getX())+" "+df.format(seqs[i].getY())+" "+df.format(seqs[i].getZ())); } }*/ } void renderNodeBall(Sequence node, PrintStream out) { double x = node.getX(), y = node.getY(); out.print("{"+node+"} ("); for(int k = 0; k < inputFiles.size(); k++) { if(node.flags.get(k)) out.print(COLOR_CODES.charAt( k % COLOR_CODES.length() )); else out.print("Z"); } out.println(") "+df.format(x)+" "+df.format(y)+" 0"); if(node.child1 != null) renderNodeBall(node.child1, out); if(node.child2 != null) renderNodeBall(node.child2, out); } void renderConnections(Sequence node, PrintStream out) { double x1 = node.getX(), y1 = node.getY(); if(node.child1 != null) { double x2 = node.child1.getX(), y2 = node.child1.getY(); out.println("{"+node+"}P "+df.format(x1)+" "+df.format(y1)+" 0"); //out.println("{"+node.child1+"} "+df.format(x2)+" "+df.format(y2)+" 0"); out.print("{"+node.child1+"} ("); for(int k = 0; k < inputFiles.size(); k++) { if(node.child1.flags.get(k)) out.print(COLOR_CODES.charAt( k % COLOR_CODES.length() )); else out.print("X"); } out.println(") "+df.format(x2)+" "+df.format(y2)+" 0"); } if(node.child2 != null) { double x2 = node.child2.getX(), y2 = node.child2.getY(); out.println("{"+node+"}P "+df.format(x1)+" "+df.format(y1)+" 0"); //out.println("{"+node.child2+"} "+df.format(x2)+" "+df.format(y2)+" 0"); out.print("{"+node.child2+"} ("); for(int k = 0; k < inputFiles.size(); k++) { if(node.child2.flags.get(k)) out.print(COLOR_CODES.charAt( k % COLOR_CODES.length() )); else out.print("X"); } out.println(") "+df.format(x2)+" "+df.format(y2)+" 0"); } if(node.child1 != null) renderConnections(node.child1, out); if(node.child2 != null) renderConnections(node.child2, out); } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { int i, j; // Load all the sequence objects from files or stdin Sequence[] seqs; if(inputFiles.isEmpty()) seqs = loadSequences(new InputStream[] {System.in}); else { InputStream[] in = new InputStream[ inputFiles.size() ]; for(i = 0; i < in.length; i++) in[i] = new FileInputStream( (File)inputFiles.get(i) ); seqs = loadSequences(in); } // TODO: check to make sure lengths all match!! // Calculate all blosum distances - highest is closest double[][] blosumDist = new double[seqs.length][seqs.length]; for(i = 0; i < seqs.length; i++) { blosumDist[i][i] = -Double.MAX_VALUE; // so we never try merging i with itself! for(j = i+1; j < seqs.length; j++) { int d = blosumScore(seqs[i], seqs[j]); blosumDist[i][j] = blosumDist[j][i] = d; // Used for layout: this.maxPairwiseBlosum = Math.max(d, maxPairwiseBlosum); } } // Iterate through, merging the nearest sequences into a cluster Sequence topNode = null; this.prevHeight = 1; while(true) { System.err.print("."); // for tracking progress // Find closest pair int bestI = -1, bestJ = -1; double bestDist = -Double.MAX_VALUE; for(i = 0; i < seqs.length; i++) { for(j = i+1; j < seqs.length; j++) { if(blosumDist[i][j] > bestDist) { bestDist = blosumDist[i][j]; bestI = i; bestJ = j; } } } if(bestDist == -Double.MAX_VALUE) break; // Merge the pair Sequence child1 = seqs[bestI]; Sequence child2 = seqs[bestJ]; topNode = new Sequence(child1, child2); seqs[bestI] = topNode; topNode.index = bestI; seqs[bestJ] = null; // Recalculate for bestI (weighted average) for(i = 0; i < seqs.length; i++) { if(i != bestI) { blosumDist[i][bestI] = blosumDist[bestI][i] = ((child1.weight * blosumDist[i][bestI]) + (child2.weight * blosumDist[i][bestJ])) / (child1.weight + child2.weight); } blosumDist[i][bestJ] = blosumDist[bestJ][i] = -Double.MAX_VALUE; // Wipe out info for bestJ } } System.err.println(); // seqs[] is now null everywhere except for topNode // blosumDist[][] is now == -Double.MAX_VALUE everywhere this.prevX = 0; topNode.calculatePositions(); // update prevX to be the total perimiter of the circle, // in case we're doing radial layout. this.prevX += (BLOSUM_SPACING ? blosumScore(firstLeaf, prevLeaf) : 1); // Write a kinemage visualization renderToKinemage(topNode, System.out); } public static void main(String[] args) { SequenceTree mainprog = new SequenceTree(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } catch(IOException ex) { ex.printStackTrace(); System.err.println(); System.err.println("*** I/O error: "+ex.getMessage()); System.exit(2); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("SequenceTree.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'SequenceTree.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.minimize.SequenceTree"); System.err.println("Copyright (C) 2003 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here inputFiles.add(new File(arg)); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/dezymer/SequenceSpacer.java0000644000000000000000000005707211531212720024525 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.dezymer; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.r3.*; import chiropraxis.forcefield.*; //}}} /** * SequenceSpacer uses pseudo-physical potentials and * numerical minimization to lay out a graph of sequence relatedness in 3-D. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Tue Oct 28 09:39:34 EST 2003 */ public class SequenceSpacer //extends ... implements ... { //{{{ Constants static DecimalFormat df = new DecimalFormat("0.0####"); static final String BLOSUM_INDICES = "CSTPAGNDEQHRKMILVFYW"; static final int[][] BLOSUM_62 = { { 9 }, // Cys { -1, 4 }, { -1, 1, 5 }, { -3, -1, -1, 7 }, { 0, 1, 0, -1, 4 }, { -3, 0, -2, -2, 0, 6 }, // Gly { -3, 1, 0, -2, -2, 0, 6 }, { -3, 0, -1, -1, -2, -1, 1, 6 }, { -4, 0, -1, -1, -1, -2, 0, 2, 5 }, { -3, 0, -1, -1, -1, -2, 0, 0, 2, 5 }, { -3, -1, -2, -2, -2, -2, 1, -1, 0, 0, 8 }, // His { -3, -1, -1, -2, -1, -2, 0, -2, 0, 1, 0, 5 }, { -3, 0, -1, -1, -1, -2, 0, -1, 1, 1, -1, 2, 5}, { -1, -1, -1, -2, -1, -3, -2, -3, -2, 0, -2, -1, -1, 5 }, { -1, -1, -1, -3, -1, -4, -3, -3, -3, -3, -3, -3, -3, 1, 4 }, { -1, -2, -1, -3, -1, -4, -3, -4, -3, -2, -3, -2, -2, 2, 2, 4 }, // Leu { -1, -2, 0, -2, 0, -3, -3, -3, -2, -2, -3, -3, -2, 1, 3, 1, 4 }, { -2, -2, -2, -4, -2, -3, -3, -3, -3, -3, -1, -3, -3, 0, 0, 0, -1, 6 }, { -2, -2, -2, -3, -2, -3, -2, -3, -2, -1, 2, -2, -2, -1, -1, -1, -1, 3, 7 }, { -2, -3, -2, -4, -3, -2, -4, -4, -3, -2, -2, -3, -3, -1, -3, -2, -3, 1, 2, 11 } }; //}}} //{{{ CLASS: Sequence //############################################################################## static class Sequence extends Triple implements Comparable { String seq; BitSet flags = new BitSet(); Collection neighbors; // other Sequences within 1 mutation of this one int degree_1; // number of neighbors int degree_2; // sum of n.degree_1 for n in neighbors public Sequence(String sequence) { super(10*Math.random(), 10*Math.random(), 10*Math.random()); seq = sequence; } public String toString() { return seq; } public void neighborGraph(Set graph) { if(graph.contains(this)) return; graph.add(this); for(Iterator iter = neighbors.iterator(); iter.hasNext(); ) ((Sequence) iter.next()).neighborGraph(graph); } public void calculateDegrees() { this.degree_1 = this.neighbors.size(); this.degree_2 = 0; for(Iterator iter = neighbors.iterator(); iter.hasNext(); ) { Sequence neighbor = (Sequence) iter.next(); degree_2 += neighbor.neighbors.size(); } } public int compareTo(Object o) { Sequence that = (Sequence) o; if(this.degree_1 != that.degree_1) return this.degree_1 - that.degree_1; else return this.degree_2 - that.degree_2; } public String printNeighborhood(Collection graph) { StringBuffer buf = new StringBuffer(); for(int i = 0; i < seq.length(); i++) { buf.append(" ").append(seq.charAt(i)); Set others = new HashSet(); for(Iterator iter = graph.iterator(); iter.hasNext(); ) others.add(new Character(((Sequence)iter.next()).seq.charAt(i))); others.remove(new Character(seq.charAt(i))); for(Iterator iter = others.iterator(); iter.hasNext(); ) buf.append(iter.next()); buf.append("\n"); } return buf.toString(); } } //}}} //{{{ CLASS: CollectionSizeComparator //############################################################################## static public class CollectionSizeComparator implements Comparator { public int compare(Object o1, Object o2) { return ((Collection)o1).size() - ((Collection)o2).size(); } } //}}} //{{{ Variable definitions //############################################################################## List inputFiles = new ArrayList(); int numTries = 5; double pow = 1.0; // controls spring fall-off boolean useBlosum = false; Sequence[] seqs; int[] mutationDist; Collection neighborGraphs; // Collection of Sets of Sequences //}}} //{{{ Constructor(s) //############################################################################## public SequenceSpacer() { super(); } //}}} //{{{ loadSequences, seqDistance //############################################################################## Sequence[] loadSequences(InputStream[] inp) throws IOException { Map seqs = new HashMap(); // String s; for(int k = 0; k < inp.length; k++) { LineNumberReader in = new LineNumberReader(new InputStreamReader(inp[k])); while((s = in.readLine()) != null) { if(s.length() > 0) { Sequence seq = (Sequence)seqs.get(s); if(seq == null) { seq = new Sequence(s); seqs.put(s, seq); } seq.flags.set(k); // mark it as coming from this stream } } } return (Sequence[]) seqs.values().toArray( new Sequence[seqs.size()] ); } /** Returns the number of point mutations to convert seq1 to seq2 */ int seqDistance(Sequence seq1, Sequence seq2) { String s1 = seq1.toString(); String s2 = seq2.toString(); int result = 0, len = s1.length(); for(int i = 0; i < len; i++) { if(s1.charAt(i) != s2.charAt(i)) result++; } return result; } //}}} //{{{ blosumDistance, blosumScore //############################################################################## /** * Returns the difference between the average maximum BLOSUM score * for 1 and 2 (i.e., the average of testing each against itself) * and the actual BLOSUM score for 1 and 2, in log-odds units. * *

    This meets the following criteria:

      *
    1. Symmetry: d(a,b) == d(b,a)
    2. *
    3. Identity: d(a,a) == d(b,b) == 0
    4. *
    */ double blosumDistance(Sequence seq1, Sequence seq2) { double mismatch = blosumScore(seq1, seq2); double identical = (blosumScore(seq1, seq1) + blosumScore(seq2, seq2)) / 2.0; return (identical - mismatch) / 7; // scales so size of balls is still OK } /** Range is [-4, +11] per amino acid in the input. See Henikoff & Henikoff (1992) PNAS 92:10915 */ int blosumScore(Sequence seq1, Sequence seq2) { String s1 = seq1.toString(); String s2 = seq2.toString(); int result = 0, len = s1.length(); int i = 0, j = 0, k = 0; for(k = 0; k < len; k++) { try { i = BLOSUM_INDICES.indexOf(s1.charAt(k)); j = BLOSUM_INDICES.indexOf(s2.charAt(k)); if(i < 0 || j < 0) {} // do nothing; unknown AA code else if(i < j) result += BLOSUM_62[j][i]; else result += BLOSUM_62[i][j]; } catch(IndexOutOfBoundsException ex) { ex.printStackTrace(); System.err.println("i = "+i+"; j = "+j+"; k = "+k); System.err.println("Comparing "+s1+" ("+s1.length()+") and "+s2+" ("+s2.length()+")"); System.exit(1); } } return result; } //}}} //{{{ createRestraints //############################################################################## /** Fills in mutationDist and returns a StateManager. */ StateManager createRestraints() { this.mutationDist = new int[ seqs.length*seqs.length ]; StateManager stateman = new StateManager(seqs, seqs.length); Collection bondTerms = new ArrayList(); for(int i = 0; i < seqs.length; i++) { mutationDist[seqs.length*i + i] = 0; for(int j = i+1; j < seqs.length; j++) { int d = seqDistance(seqs[i], seqs[j]); mutationDist[seqs.length*i + j] = d; mutationDist[seqs.length*j + i] = d; if(useBlosum) { double b = blosumDistance(seqs[i], seqs[j]); bondTerms.add(new BondTerm(i, j, b, 1.0/Math.pow(b, pow))); } else bondTerms.add(new BondTerm(i, j, d, 1.0/Math.pow(d, pow))); } } stateman.setBondTerms(bondTerms); return stateman; } //}}} //{{{ findLowestEnergy, randomizePositions //############################################################################## double findLowestEnergy(StateManager stateman) { DecimalFormat df = new DecimalFormat("0.0000E0"); double bestEnergy = Double.POSITIVE_INFINITY; Triple[] bestState = new Triple[seqs.length]; for(int i = 0; i < bestState.length; i++) bestState[i] = new Triple(); for(int k = 0; k < numTries; k++) { randomizePositions(seqs, 10.0); stateman.setState(); // sucks in coords of Sequence objects again GradientMinimizer min = new GradientMinimizer(stateman); long time = System.currentTimeMillis(); for(int i = 1; i <= 100; i++) { if(!min.step()) break; if(min.getFracDeltaEnergy() > -1e-4) break; } time = System.currentTimeMillis() - time; System.err.println(time+" ms; E = "+df.format(min.getEnergy())); if(min.getEnergy() < bestEnergy) { bestEnergy = min.getEnergy(); stateman.getState(bestState); } } stateman.setState(bestState); stateman.getState(); // read out the new coordinates into members of seqs!! System.err.println(); System.err.println("Best energy: "+df.format(bestEnergy)); return bestEnergy; } void randomizePositions(Sequence[] seqs, double boxSize) { for(int i = 0; i < seqs.length; i++) { seqs[i].setX(Math.random()*boxSize); seqs[i].setY(Math.random()*boxSize); seqs[i].setZ(Math.random()*boxSize); } } //}}} //{{{ findNeighbors, makeNeighborGraphs //############################################################################## void findNeighbors() { for(int i = 0; i < seqs.length; i++) { Collection neighbors = seqs[i].neighbors = new ArrayList(); for(int j = 0; j < seqs.length; j++) { if(mutationDist[seqs.length*i + j] == 1) neighbors.add(seqs[j]); } } // Once all neighbors are known, calculate degrees of connectedness. for(int i = 0; i < seqs.length; i++) seqs[i].calculateDegrees(); } Collection makeNeighborGraphs() { Set allSeq = new HashSet(Arrays.asList(seqs)); ArrayList graphs = new ArrayList(); // Collection of Sets of Sequences while(allSeq.size() > 0) { Sequence s = (Sequence) allSeq.iterator().next(); Set graph = new HashSet(); s.neighborGraph(graph); graphs.add(graph); allSeq.removeAll(graph); } Collections.sort(graphs, new ReverseComparator(new CollectionSizeComparator())); return graphs; } //}}} //{{{ renderLinkedViews //############################################################################## void renderLinkedViews(Sequence[] seqs, Collection neighborGraphs, PrintStream out) { final int maxViews = 10; out.println("@text"); int i = 0; for(Iterator iter = neighborGraphs.iterator(); iter.hasNext() && i < maxViews; i++) { ArrayList ng = new ArrayList((Collection) iter.next()); Collections.sort(ng, Collections.reverseOrder()); Sequence first = (Sequence) ng.get(0); out.println("*{v="+(i+2)+"}* "+ng.size()+" member cluster with "+first.degree_1+" neighbors to "+first.seq); out.println(first.printNeighborhood(ng)); } out.println("@1viewid {Overview}"); // other params auto determined on kinemage load i = 0; for(Iterator iter = neighborGraphs.iterator(); iter.hasNext() && i < maxViews; i++) { ArrayList ng = new ArrayList((Collection) iter.next()); Collections.sort(ng, Collections.reverseOrder()); Sequence first = (Sequence) ng.get(0); out.println("@"+(i+2)+"viewid {"+first.seq+"}"); out.println("@"+(i+2)+"center "+first.format(df)); out.println("@"+(i+2)+"span 4"); } } //}}} //{{{ renderToKinemage //############################################################################## void renderToKinemage(Sequence[] seqs, int[] mutationDist, PrintStream out) { final String COLOR_CODES = "MABCDEF"; out.println("@onewidth"); int i = 0, k = 0; for(Iterator iter = inputFiles.iterator(); iter.hasNext(); ) out.println("@"+(++i)+"aspect {"+((File)iter.next()).getName()+"}"); out.println("@group {sequences}"); out.println("@subgroup {sequences} nobutton"); out.println("@labellist {labels} color= white off"); for(i = 0; i < seqs.length; i++) { out.print("{"+seqs[i].toString()+"} ("); for(k = 0; k < inputFiles.size(); k++) { if(seqs[i].flags.get(k)) out.print(COLOR_CODES.charAt( k % COLOR_CODES.length() )); else out.print("X"); } out.println(") "+df.format(seqs[i].getX())+" "+df.format(seqs[i].getY())+" "+df.format(seqs[i].getZ())); } out.println("@balllist {balls} color= white radius= 0.1"); for(i = 0; i < seqs.length; i++) { out.print("{"+seqs[i].toString()+"} ("); for(k = 0; k < inputFiles.size(); k++) { if(seqs[i].flags.get(k)) out.print(COLOR_CODES.charAt( k % COLOR_CODES.length() )); else out.print("X"); } out.println(") "+df.format(seqs[i].getX())+" "+df.format(seqs[i].getY())+" "+df.format(seqs[i].getZ())); } out.println("@group {connections}"); out.println("@subgroup {connections} nobutton"); renderConnections(1, "white", seqs, mutationDist, out); renderConnections(2, "bluetint", seqs, mutationDist, out); renderConnections(3, "sky off", seqs, mutationDist, out); renderConnections(4, "blue off", seqs, mutationDist, out); renderConnections(5, "purple off", seqs, mutationDist, out); // Translucent balls, one group per file String[] clearColors = {"hotpink", "red", "orange", "gold", "yellow", "lime", "green"}; k = 0; for(Iterator iter = inputFiles.iterator(); iter.hasNext(); k++) { out.println("@group {"+((File)iter.next()).getName()+"} dominant animate"); double radius = 0.1 + 0.02*(k % 5); out.println("@balllist {balls} color= "+clearColors[k%clearColors.length]+" radius= "+df.format(radius)+" nohighlight alpha= 0.4"); for(i = 0; i < seqs.length; i++) { if(seqs[i].flags.get(k)) out.println("{"+seqs[i].toString()+"} "+df.format(seqs[i].getX())+" "+df.format(seqs[i].getY())+" "+df.format(seqs[i].getZ())); } } } //}}} //{{{ renderConnections //############################################################################## void renderConnections(int dist, String color, Sequence[] seqs, int[] mutationDist, PrintStream out) { out.println("@vectorlist {+"+dist+"} color= "+color); for(int i = 0; i < seqs.length; i++) { for(int j = i; j < seqs.length; j++) { int d = mutationDist[seqs.length*i + j]; if(d == dist) { StringBuffer aspects = new StringBuffer(inputFiles.size()+2); aspects.append("("); for(int k = 0; k < inputFiles.size(); k++) { if(seqs[i].flags.get(k) && seqs[j].flags.get(k)) aspects.append(" "); // default color else aspects.append("X"); // gray } aspects.append(")"); out.println("{"+seqs[i].toString()+"} P "+aspects+" "+seqs[i].format(df)); out.println("{"+seqs[j].toString()+"} "+aspects+" "+seqs[j].format(df)); } } } } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { // Load all the sequence objects from files or stdin if(inputFiles.isEmpty()) this.seqs = loadSequences(new InputStream[] {System.in}); else { InputStream[] in = new InputStream[ inputFiles.size() ]; for(int i = 0; i < in.length; i++) in[i] = new FileInputStream( (File)inputFiles.get(i) ); this.seqs = loadSequences(in); } // TODO: check to make sure lengths all match!! // Set up all of our harmonic restraints StateManager stateman = createRestraints(); // Run the minimization to position the sequences in R3 double bestEnergy = findLowestEnergy(stateman); // Find neighbors for all sequences findNeighbors(); // Group sequences into connected graphs (edges are point mutations) this.neighborGraphs = makeNeighborGraphs(); System.err.println(seqs.length+" sequences form "+neighborGraphs.size()+" connected graphs"); // Write a kinemage visualization System.out.println("@kinemage"); renderLinkedViews(seqs, neighborGraphs, System.out); renderToKinemage(seqs, mutationDist, System.out); } public static void main(String[] args) { SequenceSpacer mainprog = new SequenceSpacer(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } catch(IOException ex) { ex.printStackTrace(); System.err.println(); System.err.println("*** I/O error: "+ex.getMessage()); System.exit(2); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("SequenceSpacer.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'SequenceSpacer.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.minimize.SequenceSpacer"); System.err.println("Copyright (C) 2003 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here inputFiles.add(new File(arg)); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-tries")) { try { numTries = Integer.parseInt(param); } catch(NumberFormatException ex) {} } else if(flag.equals("-power")) { try { pow = Double.parseDouble(param); } catch(NumberFormatException ex) {} } else if(flag.equals("-blosum")) { useBlosum = true; } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/src/chiropraxis/dezymer/PageSpacer.java0000644000000000000000000004135411531212720023625 0ustar rootroot// (jEdit options) :folding=explicit:collapseFolds=1: //{{{ Package, imports package chiropraxis.dezymer; //import java.awt.*; //import java.awt.event.*; import java.io.*; import java.net.URL; import java.text.DecimalFormat; import java.util.*; //import java.util.regex.*; //import javax.swing.*; import driftwood.data.*; import driftwood.r3.*; import driftwood.util.Strings; import chiropraxis.forcefield.*; //}}} /** * PageSpacer uses pseudo-physical potentials and * numerical minimization to lay out a graph of sequence relatedness in 3-D. * *

    Copyright (C) 2003 by Ian W. Davis. All rights reserved. *
    Begun on Tue Oct 28 09:39:34 EST 2003 */ public class PageSpacer //extends ... implements ... { //{{{ Constants static DecimalFormat df = new DecimalFormat("0.0####"); //}}} //{{{ CLASS: Page, Link //############################################################################## static class Page extends Triple { final String name; final int index; public Page(String n, int i) { super(); name = n; index = i; } public String toString() { return name; } } static class Link { Page from; Page to; int total_hits; double frac_sess; double avg_time; public Link() {} } //}}} //{{{ Variable definitions //############################################################################## List inputFiles = new ArrayList(); int numTries = 5; double repulsion = 1.0; double pow = 1.0; // controls spring fall-off Page[] pages; Collection links; //}}} //{{{ Constructor(s) //############################################################################## public PageSpacer() { super(); } //}}} //{{{ loadLinks //############################################################################## void loadLinks(InputStream[] inp) throws IOException { this.links = new ArrayList(); Map pgs = new UberMap(); // String s; for(int k = 0; k < inp.length; k++) { LineNumberReader in = new LineNumberReader(new InputStreamReader(inp[k])); while((s = in.readLine()) != null) { String[] f = Strings.explode(s, ':'); if(s.length() > 0 && !s.startsWith("#") && f.length >= 5) { Page from = (Page) pgs.get(f[0]); if(from == null) { from = new Page(f[0], pgs.size()); pgs.put(f[0], from); } Page to = (Page) pgs.get(f[1]); if(to == null) { to = new Page(f[1], pgs.size()); pgs.put(f[1], to); } try { Link link = new Link(); link.from = from; link.to = to; link.total_hits = Integer.parseInt(f[2]); link.frac_sess = Double.parseDouble(f[3]); link.avg_time = Double.parseDouble(f[4]); links.add(link); } catch(NumberFormatException ex) { System.err.println(ex.getMessage()); } } } } this.pages = (Page[]) pgs.values().toArray(new Page[pgs.size()]); for(int i = 0; i < pages.length; i++) if(pages[i].index != i) System.err.println("Page indexes are wrong!"); } //}}} //{{{ createRestraints, scaleTime //############################################################################## /** Returns a StateManager. */ StateManager createRestraints() { StateManager stateman = new StateManager(pages, pages.length); Collection bondTerms = new ArrayList(); for(Iterator iter = links.iterator(); iter.hasNext(); ) { Link link = (Link) iter.next(); bondTerms.add(new BondTerm(link.from.index, link.to.index, scaleTime(link.avg_time), 1.0)); //bondTerms.add(new BondTerm(link.from.index, link.to.index, link.avg_time, 1.0/Math.pow(link.avg_time, pow))); } stateman.setBondTerms(bondTerms); int[] atomTypes = new int[pages.length]; // all pages are atom type 0 NonbondedTerm nbTerm = new NonbondedTerm(atomTypes, 10*60, pages.length); // eval up to 10 minutes away nbTerm.setQ(0, 0, repulsion); // repulsion on all atom0 - atom0 interactions stateman.setNbTerms(Collections.singleton(nbTerm)); return stateman; } double scaleTime(double t) { //return t; //return Math.sqrt(t); return Math.log(Math.max(1, t)); } //}}} //{{{ findLowestEnergy, randomizePositions //############################################################################## double findLowestEnergy(StateManager stateman) { DecimalFormat df = new DecimalFormat("0.0000E0"); double bestEnergy = Double.POSITIVE_INFINITY; Triple[] bestState = new Triple[pages.length]; for(int i = 0; i < bestState.length; i++) bestState[i] = new Triple(); for(int k = 0; k < numTries; k++) { randomizePositions(pages, 10.0); stateman.setState(); // sucks in coords of Page objects again GradientMinimizer min = new GradientMinimizer(stateman); long time = System.currentTimeMillis(); for(int i = 1; i <= 100; i++) { if(!min.step()) break; if(min.getFracDeltaEnergy() > -1e-4) break; } time = System.currentTimeMillis() - time; System.err.println(time+" ms; E = "+df.format(min.getEnergy())); if(min.getEnergy() < bestEnergy) { bestEnergy = min.getEnergy(); stateman.getState(bestState); } } stateman.setState(bestState); stateman.getState(); // read out the new coordinates into members of seqs!! System.err.println(); System.err.println("Best energy: "+df.format(bestEnergy)); return bestEnergy; } void randomizePositions(Page[] pgs, double boxSize) { for(int i = 0; i < pgs.length; i++) { pgs[i].setX(Math.random()*boxSize); pgs[i].setY(Math.random()*boxSize); pgs[i].setZ(Math.random()*boxSize); } } //}}} //{{{ plotPages //############################################################################## void plotPages(Page[] pages, PrintStream out) { out.println("@subgroup {pages}"); out.println("@balllist {balls} radius= 1.0 color= sea off"); for(int i = 0; i < pages.length; i++) { out.println("{"+pages[i]+"} "+pages[i].format(df)); } out.println("@labellist {labels} color= sea"); for(int i = 0; i < pages.length; i++) { out.println("{"+pages[i]+"} "+pages[i].format(df)); } } //}}} //{{{ plotLinks //############################################################################## void plotLinks(Collection links, PrintStream out) { double maxHits = 0; for(Iterator iter = links.iterator(); iter.hasNext(); ) { Link link = (Link) iter.next(); maxHits = Math.max(maxHits, link.total_hits); } //String[] linkColors = {"blue", "purple", "magenta", "hotpink", "red", "orange", "gold", "yellow", "yellowtint", "white"}; String[] linkColors = {"blue", "sky", "bluetint", "white", "peachtint", "peach", "orange"}; Triple u = new Triple(), v = new Triple(), mid = new Triple(); out.println("@subgroup {links}"); //out.println("@vectorlist {vectors}"); out.println("@arrowlist {arrows}"); for(Iterator iter = links.iterator(); iter.hasNext(); ) { Link link = (Link) iter.next(); // This should never happen, BUT... if(link.from == link.to) continue; int weight = (int) Math.ceil(7.0 * link.total_hits / maxHits); if(weight > 7) weight = 7; int color = (int) Math.floor(linkColors.length * link.frac_sess); if(color == linkColors.length) color--; u.likeVector(link.from, link.to); v.likeOrthogonal(u); v.mult(0.03 * u.mag()); if(link.from.toString().compareTo(link.to.toString()) < 0) v.neg(); mid.likeMidpoint(link.from, link.to); mid.add(v); out.print("{"+link.from+"}P "+link.from.format(df)); out.println(" {x}L width"+weight+" "+linkColors[color]+" "+mid.format(df)); out.println(" {"+link.to+"}L width"+weight+" "+linkColors[color]+" "+link.to.format(df)); } out.println("@labellist {hits} color= greentint off"); for(Iterator iter = links.iterator(); iter.hasNext(); ) { Link link = (Link) iter.next(); // This should never happen, BUT... if(link.from == link.to) continue; u.likeVector(link.from, link.to); v.likeOrthogonal(u); v.mult(0.06 * u.mag()); if(link.from.toString().compareTo(link.to.toString()) < 0) v.neg(); mid.likeMidpoint(link.from, link.to); mid.add(v); out.println("{"+link.total_hits+"} "+mid.format(df)); } out.println("@labellist {% users} color= greentint off"); for(Iterator iter = links.iterator(); iter.hasNext(); ) { Link link = (Link) iter.next(); // This should never happen, BUT... if(link.from == link.to) continue; u.likeVector(link.from, link.to); v.likeOrthogonal(u); v.mult(0.06 * u.mag()); if(link.from.toString().compareTo(link.to.toString()) < 0) v.neg(); mid.likeMidpoint(link.from, link.to); mid.add(v); out.println("{"+df.format(100 * link.frac_sess)+"%} "+mid.format(df)); } out.println("@labellist {avg. time} color= greentint off"); for(Iterator iter = links.iterator(); iter.hasNext(); ) { Link link = (Link) iter.next(); // This should never happen, BUT... if(link.from == link.to) continue; u.likeVector(link.from, link.to); v.likeOrthogonal(u); v.mult(0.06 * u.mag()); if(link.from.toString().compareTo(link.to.toString()) < 0) v.neg(); mid.likeMidpoint(link.from, link.to); mid.add(v); out.println("{"+df.format(link.avg_time)+" sec} "+mid.format(df)); } } //}}} //{{{ empty_code_segment //############################################################################## //}}} //{{{ Main, main //############################################################################## /** * Main() function for running as an application */ public void Main() throws IOException { // Load all the links from files or stdin if(inputFiles.isEmpty()) loadLinks(new InputStream[] {System.in}); else { InputStream[] in = new InputStream[ inputFiles.size() ]; for(int i = 0; i < in.length; i++) in[i] = new FileInputStream( (File)inputFiles.get(i) ); loadLinks(in); } // Set up all of our harmonic restraints StateManager stateman = createRestraints(); // Run the minimization to position the sequences in R3 double bestEnergy = findLowestEnergy(stateman); // Write a kinemage visualization System.out.println("@kinemage"); System.out.println("@perspective"); System.out.println("@onewidth"); plotPages(pages, System.out); plotLinks(links, System.out); } public static void main(String[] args) { PageSpacer mainprog = new PageSpacer(); try { mainprog.parseArguments(args); mainprog.Main(); } catch(IllegalArgumentException ex) { ex.printStackTrace(); System.err.println(); mainprog.showHelp(true); System.err.println(); System.err.println("*** Error parsing arguments: "+ex.getMessage()); System.exit(1); } catch(IOException ex) { ex.printStackTrace(); System.err.println(); System.err.println("*** I/O error: "+ex.getMessage()); System.exit(2); } } //}}} //{{{ parseArguments, showHelp //############################################################################## /** * Parse the command-line options for this program. * @param args the command-line options, as received by main() * @throws IllegalArgumentException if any argument is unrecognized, ambiguous, missing * a required parameter, has a malformed parameter, or is otherwise unacceptable. */ void parseArguments(String[] args) { String arg, flag, param; boolean interpFlags = true; for(int i = 0; i < args.length; i++) { arg = args[i]; if(!arg.startsWith("-") || !interpFlags || arg.equals("-")) { // This is probably a filename or something interpretArg(arg); } else if(arg.equals("--")) { // Stop treating things as flags once we find -- interpFlags = false; } else { // This is a flag. It may have a param after the = sign int eq = arg.indexOf('='); if(eq != -1) { flag = arg.substring(0, eq); param = arg.substring(eq+1); } else { flag = arg; param = null; } try { interpretFlag(flag, param); } catch(NullPointerException ex) { throw new IllegalArgumentException("'"+arg +"' expects to be followed by a parameter"); } } }//for(each arg in args) } // Display help information void showHelp(boolean showAll) { if(showAll) { InputStream is = getClass().getResourceAsStream("PageSpacer.help"); if(is == null) System.err.println("\n*** Unable to locate help information in 'PageSpacer.help' ***\n"); else { try { streamcopy(is, System.out); } catch(IOException ex) { ex.printStackTrace(); } } } System.err.println("chiropraxis.minimize.PageSpacer"); System.err.println("Copyright (C) 2003 by Ian W. Davis. All rights reserved."); } // Copies src to dst until we hit EOF void streamcopy(InputStream src, OutputStream dst) throws IOException { byte[] buffer = new byte[2048]; int len; while((len = src.read(buffer)) != -1) dst.write(buffer, 0, len); } //}}} //{{{ interpretArg, interpretFlag //############################################################################## void interpretArg(String arg) { // Handle files, etc. here inputFiles.add(new File(arg)); } void interpretFlag(String flag, String param) { if(flag.equals("-help") || flag.equals("-h")) { showHelp(true); System.exit(0); } else if(flag.equals("-tries")) { try { numTries = Integer.parseInt(param); } catch(NumberFormatException ex) {} } else if(flag.equals("-power")) { try { pow = Double.parseDouble(param); } catch(NumberFormatException ex) {} } else if(flag.equals("-repulsion")) { try { repulsion = Double.parseDouble(param); } catch(NumberFormatException ex) {} } else if(flag.equals("-dummy_option")) { // handle option here } else throw new IllegalArgumentException("'"+flag+"' is not recognized as a valid flag"); } //}}} }//class king-2.21.120420/chiropraxis/CHANGELOG.html0000644000000000000000000011457011744305702016336 0ustar rootrootCHANGELOG

    ==============================================================================
    ===  TO DO  ==================================================================
    ==============================================================================
        Add outline to Rama PDF instead of thumbs
        Add kinemage, raw, and stat-summary output to Ramalyze
        Add other outputs, inputs to Rotalyze
        Summary info can be preformatted, data should be parsable
        Provide both 4-in-1  PDF and 4 separate jpegs
        Allow "slop" around rota and Rama contours
        Make ModelManager support loading from/saving to URLs
        Make sidechain refitting support two naming conventions for SeMet
        Make a KiNG tool that uses the foos (KingFooTool)
        Think on defn of "wet" foos (water touches edge? center?)
        Show histogram of cluster sizes for SequenceSpacer (maybe in kin text?)
        Make USER MODs in ModelManager2 undoable by storing them in ModelStatePair
      ? How does molten state interact with replacing the Model frequently?
        Bugs:  Stuart has issues saving when using Backrub and sidechain rotator at 
        the same time.  When you open sidechain rotator from backrub, make changes,
        doesn't save changes when you close it. (Snaps back to original backrub 
        coords).  Multiple sequential backrubs open at once seems to have similar 
        issues.
        Bug: ModelManager2 frozen model kin: alt 'b' master affects alt 'a' model
        
    ==============================================================================
    ===  CHANGE LOG  =============================================================
    ==============================================================================
    
    ### 1.09 ###
    DAK
    - Rama update to use 6 (not 4) categories, with distros now from Top8000; may 
      need further tweaks, but looks to actually be working, even for PDF output!
    - Renamed resource rama & rota to reflect Top#### origins, for posterity
      (Top500 Rama is lost to history, though, at least in this code base)
    - For some reason, Rotalyze needed a tweak to remember we use chi1 only for Pro
    - Added BackboneMoveFinder2, spinoff of Ian's BackrubFinder2 but also for shears
    - Made Ramalyze "improve" residue names only for -pdf output, not -raw output, 
      to match old hless output for MolProbity
    - Added convenience method for SubImpose.getChains for null set of chain IDs
    - Added kin output to Ramalyze; matches old hless output as closely as possible
    - Made Ramalyze default to raw output (like Rotalyze) instead of old PDF output
    - Added model # masters for multi-model (e.g. NMR) PDBs in Ramalyze kin output
    - Changed -kin to -kinplot and added -kinmarkup in Ramalyze for green CA trace
      Rama outlier markups for MolP multikins
    - Updated Ramalyze help file to reflect ^
    
    ### 1.08 ### dak
    - Altered Shear/BackrubPioneer multi-epsilon behavior
    - Tweaks to SubImpose & SupKitchen stderr messaging
    - Added BackboneMoveFinder (a la BackrubFinder2) to find shears and/or backrubs
      within ensembles
    - Synced method signatures so SubImpose & ScMcSwapper play nice together
    - Added method to ModelManager2 to make relative occupancies of remodeled atoms
      sensible
    - Tried & aborted several ways of splitting ' ' into alts during backrub or 
      shear in ModelManager2; realized that IWD's "Choose alt conf" & "Create alt 
      conf" options are enough!
    - Added routine to ModelManager2.adjustAltConfLabels(..) to avoid non-het atoms 
      with only one alt (e.g. A but no B or C); non-het only b/c I think waters can
      have only one alt if they correspond only to one alt (not the other) of a sc
    - Added MethylRotator tool for aa types with methyl groups (Met, Val, Thr, etc.)
    - Added AvgStrucGenerator3, which should supercede both previous versions
    - Added option to provide manual alignment file in SubImpose
    - Aborted attempt to force middle peptide near original orientation in CaShear;
      code still there & commented out
    - Consolidated changes to ModelManager2.adjustAltConfLabels()
    - Minor change to SupKitchen in response to extra arg for SubImpose.getChains()
    
    ### 1.07 ### dak
    - Added ShearTool, etc.: prototype for (helix) shear backbone changes
    - Added Turn, TightTurn, PseudoTurn, & TurnFinder for finding tight turns &
      pseudo-turns
    - Added i,i+3 HB recognition (was just i,i+2) to differentiate helix caps vs.
      pseudo-turns
    - Fixed TightTurn sequence register bug & "regularized" turn H-bond notation
    - Added -shuffle option to SubImpose: permutes selected atoms to find best
      superposition, but retains sequence order (so permutes w/in residues)
    - Improved ShearTool geometry (each peptide now separate) & GUI
    - Added AltConfShearFinder & ShearFit (like AltConfBackrubFinder & HingeFit)
    - Added ModelManager2.repairAltConfs to address a "bug" / logic error where 
      remodeling (backrub/shear) at junction between single alt & multiple alts did 
      not extend the remodeled conformation and its alternative(s) as it "should"
    - Made CB idealization aa-specific with parameters straight from Prekin/Dangle
      [but those programs still report deviations on KiNG's "ideal" CBs - WHY?!]
    - Minor tweaks to AnisoOxygenSearch to opt'ly make output more shear-centric
    - Updated KiNG tools manual with shear tool [but PDF still needs to be made!]
    - Added bond length checks to ShearWindow
    - Added ShearPioneer and BackrubPioneer (kinda replaces for BackrubRama)
    - Replaced ideal helix/strand resource PDBs with longer 12-residue versions
    - Removed old Top5200 cis & trans Pro .ndft resource files (never used anyway)
    
    ### 1.06 ### dak
    - LocalRotarama now uses driftwood's Neighborhood and has new output options
    - Added -rmsdgoal to SubImpose: iterative Lesk sieving until rmsd goal reached
    - Added -d (show distances) output option to SubImpose
    - Fixed bug in SidechainIdealizer where docking non-Pro onto Pro (e.g. after 
      Pro->Xaa mutation) left non-planar amide H
    - Can now restrict mobile region to +/- n residues in Tweak phi/psi tool
    - Rearranged innards of SubImpose - should work basically the same
    - Moved SupKitchenTool from Structural biology to Specialty tools menu to be 
      safe for upcoming KiNG update on website
    - Added Tweak phi/psi tool entry to tools manual
    - Fixed SubImpose bug with -rmsd[max/cutoff]=# flag
    - Allowed 2nd file in LocalRotaRama; scores are then file1-file2 differences
    - Generalized SheetBuilder & BetaArom functionality (& cleaned up significantly)
    - Added AvgStrucGenerator2 for beta aroms; should be better in general
    - Improved error messages in CaspRotCor
    
    ### 1.05 ### dak
    - Added -chains1, -chains2 flags to SubImpose to restrict initial sequence
      alignment so subsequent structure superposition can be better controlled
    - Fixed some Exception-handling bugs in SupKitchen
    - Fixed PhiPsiRotation bug where C=O oxygen didn't move for psi downstream
    - Fixed RotamerCorrectness bug with "mdl(s)" field when last char is "/"
    - Re-wrote RotamerCorrectness as RotCor to make more generalizable (with 
      concurrent loss of some detail in output)
    - Wrote CaspRotCor2 (extends RotCor) to be more specific to CASP, e.g. handles 
      segment combination internally
    - Renamed CaspRotCor2 to CaspRotCor - will be distributed & users don't care 
      about the existence of previous prototypes
    - RotCor now correctly ignores OUTLIERs for output rotamer counts
    - Fixed RotCor NMR target treatment - now counts rotamers OK & recognizes Pro
    - Added warning message when D-aa button clicked in SidechainRotator as per 
      JSR's request
    - Made a SubImpose method static so usable by outside classes
    - Added SidechainMainchainSwapper class to identify places where two models 
      diverge such that the sc of one takes the same path as the mc of the other
    - Tweaks to SidechainMainchainSwapper, e.g. added Lys, Met
    - Added LocalRotarama: first take on expression of *local* model quality
    
    ### 1.04 ###
    dak
    - Added public static getRotNames & getRotEvals methods to Rotalyze so outside 
      classes, e.g. in cmdline, can get rotamer names & evaluations from a Model and
      use them for whatever purpose
    - Added RotamerCorrectness (corRot from CASP8) which uses ^
    - Tweaks to RotamerCorrectness to handle single model files vs. directories,
      multi-MODEL targets (e.g. NMR), and summary vs. per-residue output
    - Added RotamerCorrectness.help so future CASP9+ assessors can actually 
      use the program correctly
    - Added -raw documentation for Ramalyze, which I realized we never added a 
      while back
    - Added version & build # output to RotamerCorrectness help
    - Fixed -dcamin flag bug in VariableRegions
    - Incremented version to 1.04 for all RotamerCorrectness stuff
    - Fixed target ID and backbone-only bugs in RotamerCorrectness
    - Fixed model count and target count for RotamerCorrectness -summ mode
    - Added default behavior to SubImpose: best 90% of sequence-aligned CAs
    - Fixed bug in SimpleNonWaterResAligner nested class in SubImpose. Previously 
      only water-water pairs were unrewarded (0) in alignments; now water-water and 
      water-amino-acid pairs are penalized (-1). Result: better, more intuitive, 
      more protein-centric alignments!
    vbc3
    - changed modelplotter to use molikin code, mainly for RNA rotamer tool.
    - comment out adjustAltConfLabels(m); line in modelmanager (line 586); I don't 
      remember exactly why, but I think maybe due to an esoteric bug found by 
      Stuart.
    
    ### 1.03 ### dak
    - Added SupKitchenTool for "cooking up" superpositions of sets of PDB files
      and analyzing them based on PCA
    - Added molikin package import to build.xml to allow drawing kinemages to the
      screen more easily. Seems not to make chiropraxis.jar too much bigger
    - Made some methods & inner classes in SubImpose public & static so they can
      be called from SupKitchenTool, so don't have to duplicate that code
    - Some tweaks to DihedralPlotter, like scaling of balls'  radii based on value
      for visual effect
    - Added -pdbs=[dir] output & hard rmsd cutoff options to SupKitchen
    - Fixed some chain-separation bugs/problems in SupKitchen
    - Added & subtracted GUI options to & from SupKitchenTool
    - Made DihedralPlotter not plot stuff below Rama general outlier level of 
      99.95% - cleans up look of resulting kins
    - Uncommented original residue alignment method in SubImpose as alternative
      if newer, non-chain-boundary-crossing method fails (usually when ref is
      shorter than mobile?)
    - Added SubImpose.SimpleNonWaterResAligner class for eliminating the HOH-HOH
      residue pairings that annoyingly often screw up alignments & thus super-
      positions.  Makes SubImpose less generalized but hopefully much more usable!
    - Totally minor: changed variable name in @param statement in mc.SupKitchen
    
    ### 1.02 ### dak
    - Added PhiPsiTool (shows up as "Tweak phi/psi tool" in KiNG) to kingtools
    
    ### 1.01 ### dak
    - Added sc.SidechainsLtoD for making D-amino acid versions of regular L-amino
      acid PDB files
    - Minor change to forcefield.StateManager: uncommented a testing segment
    - New option in SidechainRotator for using D-amino acids.
    
    ### 1.00 ### vbc3
    - Changed RamaPdfWriter to use new iText code.
    
    ### 0.99 ### dak
    - Separated out dangle to its own package (now standalone program)
    
    ### 0.98 ### vbc3
    - Fixed bug in sidechainangles2 which prevented rotating Proline angles correctly.
    
    ### 0.97 ### (dak)
    - Added tau(arom_i-1,i,i+1) measurements to mc.SheetBuilder and mc.BetaArom
    - Added counter-rotation functionality and ability to use resource file for
      ideal alpha & beta starting coordinates to mc.BackrubRama
    - Added sc.DisulfSampler to make PDB format disulfides from Top5200 dihedrals
    - Added sc.DihedralPlotter to make multi-D kins of pct and rotasamp values
      and see where the sampled rotamers fall 
    - Added mc.AvgStrucGenerator to calc avg coords over local region for set
      of PDBs; for comparison of representatives from ensembles
    - Fixed some minor bugs in VariableRegions
    
    ### 0.96 ### (dak)
    - Added beta aromatic tau measurement to mc.SheetBuilder
    - Added -chi234 flag to sc.RotamerSampler to be used in conjunction with 
      -plotchis for 4-chi sidechains (Arg, Lys)
    - Added mc.BackrubRama class to perform backrub central and counter-rotations
      and see effects on phi,psi
    
    ### 0.95 ### (dak)
    - Completed implementation in Dangle of including hets that should be 
      considered part of chain
    - Changed style of measurement specifications in Parkinson file to PDB v3; 
      affects output header (aesthetic)
    - Changed internal treatment of RNA phosphate oxygens to handle PDB v2.3 and 
      v3 (func'l)
    - Added base-P perpendicular ('pperp') built-in measurement to Dangle
    - Set up Dangle to decide whether each RNA ribose is 2' or 3' pucker based on
      the base-phosph perp and use the appropriate mean and sigma values for a 
      subset of lengths and angles (new values aren't in yet though...)
    - Added -parcoor flag for model-by-row output for Jeremy's NMR stuff
    - Added -res=(#-# | #,#,...) flag to Dangle; applies to all output modes
    
    ### 0.94 ### (dak)
    - Put res type exceptions in Dangle that should be considered part of chain
      even if labeled as hets, e.g. selenoMet (not yet fully operational...)
    - Updated mc.VariableRegions kinemage portions to draw only the most variable 
      parts and draw fans better
    
    ### 0.93 ### (dak)
    (Lots of stuff this time!)
    - Modified mc.VariableRegions to plot kinemage fans and arrows for bb mvmts;
      maybe still some problems
    - Replaced old Top500 Rama NDFTs with Top5200 versions, including cis/trans 
      Pro files for future use
    - Put comments in Ramachandran, Ramalyze, and RamaPdfWriter to accomodate cis/
      trans Pro in the future, but currently should still run as before
    - Added -plotchis option for sc.RotamerSampler to allow visualization of sample
      points on kinNDcont kins
    
    ### 0.92 ### (dak)
    - Added mc.VariableRegions to examine relationship btw d(phi,psi) and d(Ca) for
      pairs of related structures or alt conf loops in a single structure
    - Several other additions/changes since 0.91 -- see svn log
    
    ### 0.91 ### (dak)
    - Made some changes to mc.DsspHelixBuilder to handle proline NH's and do 
      output slightly differently
    
    ### 0.90 ### (dak)
    - Added mc.DsspHelixBuilder class to complement HelixBuilder (works more akin
      to DSSP algorithm, but not exactly like it for some reason...)
    
    ### 0.89 ### (dak)
    - Modified mc.HelixBuilder, mc.Helix to accommodate new mc.Ncap class
    - Added a -super2 flag to mc.SubImpose to allow a resrange in one pdb
      to be superimposed onto another resrange from a second pdb
    
    ### 0.88 ### (dak)
    - Added some measurements to mc.HelixBuilder to puzzle out what we're actually
      detecting with the Ca(i,i+1,i-1) plane's normal to the helix axis
    - Added support for multiple rounds of local helix axis smoothing to 
      mc.HelixBuilder
    - Added HelixBuilder.help
    
    ### 0.87 ### (dak)
    - Fixed oppRes bug in mc.SheetBuilder
    - Added some measures for BetaArom to SheetBuilder
    
    ### 0.86 ### (dak)
    - Fixed some 'nRes vs. cRes' confusion in mc.HelixBuilder and mc.SheetBuilder
    
    ### 0.85 ### (dak)
    - Actually svn add'd mc.BetaArom (forgot before)
    
    ### 0.84 ### (dak)
    - Added BetaArom class to mc for analyzing aromatics in beta sheets and their
      local environs for evidence of backrubs with Ed Triplett
    - Modified mc.SheetBuilder to make BetaAroms from a pdb
    
    ### 0.83 ### (dak)
    - Added -verbose/-v flag to HelixBuilder for testing purposes
    - Added new, simple ncapAngle output too
    
    ### 0.82 ### (dak)
    - I now agree w/ all Ncaps HelixBuilder finds in 1amu (despite it reporting
      weird phiN, psiC...)
    - Does smoothed helical axes for nice backrub plane comparison!
    
    ### 0.81 ### (dak)
    - Completed a version of Ncap-finding method, but needs correct Residues in 
      Helix to be useful (not happening now...)
    - Added local helix axes to Helix and HelixBuilder
    
    ### 0.80 ### (dak)
    - Added new Helix class to fxn w/ HelixBuilder
    - Working on Ncap-finding method (incomplete...) in HelixBuilder
    
    ### 0.79 ### (dak)
    - Added new mc.HelixBuilder class a la Ian's mc.SheetBuilder
    - Will use to overlay helices, identify Ncaps, compare Asn/Asp vs. Ser/Thr
      at Ncaps to find backrubs, and use in helix cap protein design
    
    ### 0.78 ### (dak)
    - svn added Dangle.changes (didn't before...)
    
    ### 0.77 ### (dak)
    - Added -changes flag and Dangle.changes resource file
    - Added versionNumber as a variable in Dangle.java which is printed out
      for -help or -changes at bottom (will need to update manually every time
      code is changed...)
    
    ### 0.76 ### (dak)
    - Fixed small bug w/ regard to -hets flag
    - Fixed particular Measurement line in Parkinson resource file for -rna (noted
      in the file)
    
    ### 0.75 ### (dak)
    - Added -hets flag to Dangle (default: doesn't address hets)
    
    ### 0.74 ###
    - Multiple changes aimed at getting Modeling tools compatible with PDB v3 format.
    - changed SidechainAngles2.areParentandChild to try to be compatible with both v23 and v3 formats.
       Hope it still give proper behavior.
    - changed angles.props and SidechainAngles2 so dihedrals can have alternate atom names.
    - SidechainIdealizer changed to read in two different idealized residue pdbs, and use the proper one,
       depending on the input PDB.
    - ScMutTool has an option for making the mutated residue in either PDB v3 or PDB v23 format.
    - singleres.pdb and singlesc.pdb converted to pdb v3, new singleres-v23.pdb added (v23 format).
    - sc-connect.props changed to have both pdb v23 and pdb v3 connections.
    - fixed a bug in Ramalyze where "MODE_PDF" was giving an error, even when PDFs were being generated.
    
    ### 0.73 ### (dak)
    - fixed a bug that prevented running multiple PDBs with -rna or rnabb
    - added SubImpose for superimposing subsets of atoms in PDB files
    
    ### 0.72 ### (dak)
    - added -raw flag to rotarama.Ramalyze to replicate the raw data output 
      functionality in hless (was on IWD's to-do list)
    
    ### 0.71 ### (dak)
    - amended spring drawings in dangle.GeomKinSmith so ideal distance = 6 turns
      and each sigma deviation = +/- 0.25 turn
    - changed rotarama.Rotalyze so OUTLIERs are output as 0 to 360, not -180
      to 180
    
    ### 0.70 ### (dak)
    - added information about the changes below to Dangle.help
    
    ### 0.69 ### (dak)
    - added -sub flag to Dangle, which makes GeomKinSmith output be @subgroup 
      instead of @group
    - removed a print line from GeomKinSmith that I had accidentally left in for 
      debugging
    
    ### 0.68 ### (dak)
    - fixed a stupid bug I had just committed
    
    ### 0.67 ### (dak)
    - fixed bug that was messing up i-1,i dist viz's in GeomKinSmith
    - modified Dangle output methods and GeomKinSmith so DNA automatically dist-
      inguished from RNA if use -rna flag *or* rnabb SuperBuiltin; works if using
      -validate or a flag for geom dev viz's (e.g. -geomkin)
    
    ### 0.66 ### (dak)
    - changed rnabb SuperBuiltin so results are output only for RNA residues
    - involved changes in Dangle.fullOutput(), Dangle.parseArguments(), 
      Measurement.newBuiltin(), Measurement.newSuperBuiltin(), and Parser
    
    ### 0.65 ### (dak)
    - fixed handling of Measurement.Groups in GeomKinSmith so that it can handle N19
      "ambiguities" between purines and pyrimidines, so now works with RNA
    
    ### 0.64 ### (dak)
    - added GeomKinSmith.java for making kins of angle and distance outlier 
      visualizations
    - edited Dangle.java's Main method so if new geometry flags are true, 
      visualization kinemage is made
    - added some "get" methods to Measurement.Angle and .Distance
    
    ### 0.63 ### (dak)
    - fixed a bug I had just submitted in which I had accidentally deleted the 
      "# label:model:chain:number:ins:type" line at the top of Dangle.java
    
    ### 0.62 ### (dak)
    - renamed labels for pucker amplitude and pucker pseudorotation angle to be more
      concise
    
    ### 0.61 ### (dak)
    - added suitefit as new SUPERBLTN and suitefit measures as new BUILTINs
    - added new subclasses for RNA ring pucker called PuckerAng (calculates P from
      Altona et al, JACS, 1972) and PuckerAmp (calculates tau_m from Rao et al, 
      Acta Cryst, 1981)
    - keyword 'pucker' within Dangle command outputs the above two pucker measures
    
    ### 0.60 ###
    - fixed Dangle parsing error for "+" residue specifiers like "i+1"
    
    ### 0.59 ###
    - changed to Java 1.5 in compiling (needed by Dangle)
    - created dangle.XyzSpec as superclass of AtomSpec
    - implemented XyzSpec.Average and XyzSpec.IdealTetrahedral
    - removed old CbDev class and added new cbdev builtin
    - added new "planarity" measurement
    - added "vector_angle" measurement
    - added "vector()" and "normal()" functions
    - added -sigma flag
    - caught up on Dangle documentation
    
    ### 0.58 ###
    - switched Dangle to use driftwood.parser for tokenization
    - updated documentation to include "for" syntax and -protein/-rna/-dna flags
    - added new cbdev measurement to Dangle
    
    ### 0.57 ###
    - Dangle: added "rnabb" super-builtin for Jane
    - Dangle: changed default to be all builtins
    - added "maxb" and "minq" to Dangle
    - added "ideal MEAN SIGMA" syntax to distance and angle definitions.
      This will probably suffice only for very simple validation!
    - added a "for ..." prefix to measurements to aid validation scripting
    - started entering Engh and Huber parameters
    - discovered "for ..." clause needed to be able to refer to prev/next residue
    - implemented "for [i|i[+-][1-9]] [cis] RES ..."
    - added outliers-only output format
    - changed -validate output to pure colon-separated
    - added -protein, -rna, -dna flags for loading parameters
    - added slightly more helpful syntax error messages to Parser
    
    ### 0.56 ###
    - added Rotamer.identify() based on a dumb "boxes" approach for rotamer naming.
    - allowed Rotamer.identify() and .evaluate() to act on String + angles too
    - finished initial version of rotarama.Rotalyze for sc rotamer analysis in MolP
    - in Rotamer, added provision to not mark as outliers truncated sidechains
    - in BgKinRunner, made changes to bounding box, res list when 0 residues
    - added more nucleic acid builtins to dangle
    - added way to specify alternate definitions like RNA chi angles: just define
      measurements that share the same name (label).
    - added -360 flag to make Dangle dihedrals fall on 0 - 360
    
    ### 0.55 ###
    - updated KiNG plugins to work with 2.0 code changes
    - added Dangle for calculating molecular geometry on demand
    - added built-ins to grammar
    - added support for regular expression atom names
    - split res CNIT into four fields (for better mmCIF compatibility)
    - added nucleic acid built-ins
    - wrote Dangle man page
    - added -cif and -pdb flags
    - added distance check for connectivity (N--C and O3'--P)
    - added "chi" built-in for nucleic acid sidechains (two possibilities)
      There is NOT (yet) a way of specifying this case in the grammar.
    
    ### 0.54 ###
    - started on BackrubFinder2
    - updated Suppose, AlignChains, and BackrubFinder2 to new SuperPoser API
    - bug fix: SidechainRotator gave wrong rotamer evals (from prev. conformation)
    - added "update" button to Probe dots in ModelManager [requested by JSR]
    - bug fix: Probe dots cause mc, sc, H to be turned off? (in multikin)
        If the masters were already off, mc/sc/H are turned off in molten/frozen.
        This is a normal part of kinemage merging.
        We could either (1) not label the rotatable groups with those masters
        or (2) turn those masters on when we create rotatable groups.
      I opted for (1), prefixing the rotatable master names with "refit".
    - added utility for superimposing peptide libraries formatted for RESOVLE
    - updated NDFTs to match data from top500-angles and PHENIX Python code
    - backrub tool now defaults to NOT idealizing sidechains
    
    ### 0.53 ###
    - started modifying ModelManager2 to allow switching alts and defining new alts
    - it seems to basically work now, except that change logging is broken
    - improved interface: save chooser doesn't switch dirs, current alt is shown
    - started BackrubFinder
    - updated forcefield.NonbondedTerm to be configurable
    - added change logging to ModelManager2 the dumb way -- not undoable right now
    
    ### 0.52 ###
    - added "S" rotamer sample points to Phe, Tyr, Asp, Asn, Gln, and Glu.
      It *seems* that everything still works...
    - commented out timing println() statements in BgKinRunner
    - added mc.AlignChains for quick comparisons of NCS related subunits
    - adjusted for driftwood.moldb2.Model.getStates() now returning a Map
    
    ### 0.51 ###
    - added an "Overview" view to the output of SequenceSpacer
    - experimented with alternate tree layout; I think it's more useful now
    - also added sequence diversity displays to aggregate tree nodes
    - ScMutTool now launches a SidechainRotator afterwards...
    - timed all portions of BgKinRunner to see why Probe dots are slow on OS X.
      Can't find anything definitive, but stdin/stdout seems slow vs Probe alone.
      This could be the streams or could be a threading/timeslicing issue.
    
    ### 0.50 ###
    - restored mouse wheel zooming for Backrub tool
    - refactored rotarama.Ramalyze to allow stream I/O for benefit of PDB usage
    - added website and Lovell '03 citations to Ramachandran PDF template
    - changed 11 files for ModelGroup-to-CoordinateFile name change: ModelManager2,
      ScMutTool, AltConfBackrubFinder, AnisoOxygenSearch, HingeFit, Ramalyze,
      PeptideFlipFinder, SheetBuilder, Suppose, RotamerSampler, SidechainIdealizer
    
    ### 0.49 ###
    - added neighbor discovery to SequenceSpacer and hyperlinked views
    - added aspects to connections between sequences
    - added print-out of mutations to other neighbors
    - BgKinRunner converted to bounding box instead of centroid
    - fixed driftwood.gui.ReclickListSelectionModel bug that caused multiple Probe
      runs every time a user selected a rotamer from the list.
    
    ### 0.48 ###
    - modified dezymer.SequenceTree to (1) use a radial layout and (2) use BLOSUM-
      based spacing between single sequences around the perimeter.
    - added {centroid} and {radius} to BgKinRunner to support Probe within # of ...
      This makes Probe dots substantially faster, though I'm not totally sure why.
    - dezymer.SequenceSpacer now finds graphs of connected sequences, but doesn't
      do anything with them yet.
    
    ### 0.47 ###
    - implemented face-centered cubic lattice and breadth first search for KingFoo
    - added KingFooCLI as a cmd-line interface to KingFoo
    - renamed chiropraxis.minimize to the more appropriate chiropraxis.dezymer
    - added get/setState() variants to forcefield.StateManager
    - converted SequenceSpacer to use chiropraxis.forcefield implementation instead
      of its own custom minimizer. ~2x slower, but more robust and maintainable.
    
    ### 0.46 ###
    - made Backrub tool into BackrubWindow, so multiple can be open at once.
    - BackrubTool and ScRotTool windows can now launch the other for same residue.
    
    ### 0.45 ###
    - modified KingFoo to use Probe for rapid placement of foos
    - ScRotTool, ScMutTool, and HingeTool now use ptID to say "use middle click!"
    - commented out "Simulate experiments" button from NOE panel
    - added BackrubTool, derived from HingeTool and PeptideTwister2. Seems to work.
    - updated tools manual for new Backrub tool
    
    ### 0.44 ###
    - added kingtools.KingFoo
    - KingFoo works; places foos and dots in cavities of proteins
    - optimized bin size for speed of searching
    - remove solvent accessible foos
    - converted KingFoo main() to autodetect the protein volume
    - wrote mc.PeptideFlipFinder to find pep flips in Backrub alt conf library
    
    ### 0.43 ###
    - accomodated ResidueException becoming a checked exception
    - accomodated AtomException becoming a checked exception
    - changed ModelManager's alt selection to let altID be a String (CIF compat)
    - accomodated changing Residue chain and insCode to Strings (CIF)
    - accomodated converting Residue sequence number to a String (CIF)
    - after light testing and a few bug fixes, the KiNG tools *seem* to still work
    
    ### 0.42 ###
    - changed rotamer list to update even when same rotamer is picked again
    
    ### 0.41 ###
    - did a lot of work on r71 to improve the SSWING tool
    - removed unneeded GUI code, improved background thread mgmt
    - these (massive) changes became r73
    - had to edit sswing line 80 to remove $dir."/".
      This breaks compatibility with absolute file paths.
    
    ### 0.40 ###
    - recompiled to incorporate with changes to driftwood.moldb2.PdbWriter
    - changed B-factor on ideal sidechains / residues to 30 instead of zero
    - checked on Shuren's repairs to the ModelManager: only one menu was broken.
      Several unused variables were also removed.
    
    ### 0.39 ###
    - added translucent balls to the output of SequenceSpacer
    - found missing-comma bug in BLOSUM code of SequenceSpacer
    - added a scaling factor to the BLOSUM code so ball radii come out right
    - wrote minimize.SequenceTree to do another analysis of Dezymer sequences
    - added "Fast model open" to ModelManager. Some layout issues still remain.
    - created some pieces of a MM force field in chiropraxis.forcefield
    - stupid bug in AngleTerm was assigning to gradient instead of adding to it
    - fixed a bug in Brent's method of GradientMinimizer (wrong endpoint b)
    - fixed confusion between search path and gradient in GradientMinimizer
    - changed (now correct) Fletcher-Reeves algorithm to Polak-Ribiere; works better
    - added RubberBand tool for KiNG
    - implemented both simple (all-against-all) and fancy (hash table / 3-D bins)
      approaches to neighbor detection for nonbonded terms. Fancy is preferrable.
    - made some changes to line-min in GradMin to keep things from getting stuck
    - made separate categories with separate weightings for energy terms in StateMan
      The weightings do make gradient calculation somewhat less efficient, so we may
      want to remove them later if there's no real benefit or use.
    - added some GUI controls to the rubber band tool to make it more fun
    
    ### 0.38 ###
    - wrote AnisoOxygenSearch
    - modified build.xml to include all of driftwood including Jama
    
    ### 0.37 ###
    - created a LyX document for the tools
    - updated ModellingTool to use help URL from this JAR
    - recompiled kingtools b/c BasicTool.overpaintCanvas() changed signature
    
    ### 0.36 ###
    - moved all the KiNG remodelling tools into the kingtools package
    
    ### 0.35 ###
    - added SidechainAngles2.getAllRotamers(String)
    - added sc.RotamersForTerwilliger to produce rotamer files from Penultimate Lib.
    
    ### 0.34 ###
    - SidechainAngles.setAllAngles() now ignores the NaN's that can be produced
      by measureAllAngles().
    - SidechainIdealizer.idealizeSidechain() now uses all angles instead of chis.
      Hopefully, this will remove some of the remaining bugs (e.g. for prolines)
    - fixing the proline idealization bug also required redefining pchi3 using 1HD.
    
    ### 0.33 ###
    - started H-bond network analysis in beta sheet
    - allowed peptides to be incomplete
    - connected up peptides into beta-sheet network
    - calculated planes, sheet normals, and local coordinate systems
    - added visualization of planes in addition to their normal vectors
    - added parallel/antiparallel flags to Peptide
    - fixed build.xml to clean up itext.jar and jama.jar
    - added "deploy-local-mp" target to deploy to MolProbity3
    - Ramalyze now reads PDB filename from cmd line params
    - moved LsqPlane to driftwood and removed explicit Jama dependency
    - added mc.AltConfBackrubFinder to speed the search for alt-conf examples
    - fixed SidechainIdealizer.idealizeSidechain() so it doesn't leave
      Ala's hydrogens oriented randomly.
    - migrated to using version.props AND buildnum.props to simplify version control
    
    ### 0.32 ###
    - started working on RamaPdfWriter to test out how we could create multi-page
      PDF Ramachandran plots for multiple-model NMR structures.
    - added rotarama.Ramalyze and hooked it up to RamaPdfWriter
    - changed mc.CaRotation to idealize whole sidechains instead of just C-betas.
    - added jama.jar to the build process
    - gave Rama plots more sensible residues names (chain, seg ID only if needed)
    - PDF writer now collects and reuses templates for each model
    - missing hashCode() in Ramalyze.RamaEval led to duplications with alt confs
    - added summary statistics and outlier list for all models and model-by-model
    - stats are now 1 column or 2
    - model numbers appear in residue labels
    - model number and file name are now printed on each page
    - basic command line switches and help information added to Ramalyze
    - added itext.jar and jama.jar to the Manifest
      
    ### 0.31 ###
    - made CB idealization optional for CaRotation.makeConformation()
    - did the same for CaRotation.twistPeptides()
    
    ### 0.30 ###
    - fixed typo for Trp m95 rotamer (+/- problem)
    
    ### 0.29 ###
    - changed build.xml so the default target is "dist"
    
    ### 0.28 ###
    - modified sc.SidechainAngles2 to use driftwood.data instead of driftwood.gnutil
    - fixed MSE SE naming incompatibility between angle-naming code and ideal geom residues
    - fixed bug in sc.SidechainAngles2.areParentAndChild()
      It was recognized that MSE SE did not have a remoteness indicator, BUT
      there was a logical error in the code because it had never been tested.
    
    ### 0.27 ###
    - created TauByPhiPsi to evaluate tau by Ramachandran position,
      using initial data from P. A. Karplus' 1996 "Hidden Strain" paper.
    - added facilities for constructing mutations into SidechainIdealizer
      
    ### 0.26 ###
    - Changes to Ramachandran, CaRotation, and Suppose
      to accomodate changes in driftwood.moldb2 ver. 0.48
    - RotamerSampler can now create copies of the template residue and re-index them.
      A small benefit here, but it lays the foundation for mutations, etc. in KiNG.
    - bug fix: removed the mysterious N-epsilon from definitions of Pro rotamers
    - added a chi-angles/all-angles distinction to RotamerSampler
    - changed the scheme for weights in Q to make best use of the space available
    - bug-fix: using all angles read the weight from the wrong field
    
    ### 0.25 ###
    - added NdftToPgm for converting NDFTs to Portable Gray Map files.
      Can use the UNIX utility 'pnmtopng' to get a PNG file from this.
    - fixed NDFloatTable bug that zeros out realcount when reading from a NDFT file.
    - created sc.RotamerSampler for generating PDB models of sampled conformers
    
    ### 0.24 ###
    - added sequence-distance scoring based on the BLOSUM 62 matrix (-blosum)
    - added mc.HingeFit, which searches for a series of Backrub-like hinges
      that reduce RMSD between two related loops.
    - I was frustrated that I couldn't seem to find the minimum
      around the axis of rotation in an analytic way.
    - made sc.SidechainAngles2.measure{All,Chi}Angles() return Double.NaN
      for ill-defined angles instead of throwing AtomException.
    
    ### 0.23 ###
    - started minimize package to do Cartesian-space minimizations
    - built a simple harmonic potential to put "springs" between points
    - built a steepest-descent minimizer with arbitrary step length
    - optimizations (caching) in the potential function gave better than 2x speed improvement.
      This is good for dense networks (force b/t every pair) but not for sparse.
    - built a dual-purpose steepest-descent/conjugate gradient minimizer.
      It still takes arbitrary steps though, so there's less advantage from CG.
    - improved the visualization kinemage
    - added line-search option to find true minimum along each gradient/search path
    - renamed to GradientMinimizer
    - added code to check for numerical instabilities (NaN)
    - determined that box size for initial placement has no effect on outcome
    === MAJOR REORGANIZATION OF PACKAGE STRUCTURES ===
    - removed the backrub package! (no longer used by anything...)
    - removed the failed 'nmr' package; not needed since Coggins' noe-display
    - merged the cairo package into the mc package
    
    ### 0.22 ###
    - fixed typos in defining Met/Sme rotamers ttt and mmt
    
    ### 0.21 ###
    - added idealizeSidechain() to SidechainIdealizer.
    - fixed a problem in CaRotation.transformAtoms() where an AtomException
      could cause the transform to fail for all atoms.
    
    ### 0.20 ###
    - modified rotarama.Rotamer to also work with moldb2
    
    ### 0.19 ###
    - converted SidechainAngles to SidechainAngles2 (moldb to moldb2)
    
    ### 0.18 ###
    - made Lesk sieve into a sorting procedure
    - dropped correlation/dot product kinemages
    - renamed VectorDiffDist to Suppose
    - wrote help file for Suppose
    - added switches to select size of superpositioned subset
    - calculated RMSDs in-line and added IWUSDD to Lesk plot for comparison
    
    ### 0.17 ###
    - wrote VectorDiffDist
    - discovered iteration (using prev values as weights) improves signal-to-noise
    - unsigned sum of diff dists seems to work better than vectors (but no 3-D info)
    - I think all the vectors get biased towards the center-of-mass of the structure.
      So far, plots of dot products haven't been helpful in confirming this.
    - implemented Lesk's least-squares "sieving" procedure using driftwood.r3.SuperPoser
    - added Lesk plot to VectorDiffDist
    
    ### 0.16 ###
    - Fixed a bug in CaRotation.twistPeptides() that only kept the last twist
    - Checked SidechainIdealizer for the same bug; it's clean
    
    ### 0.15 ###
    - added nmr package with NoeConstraints and DyanaReader
    - started trying to test it out, but the names are all screwed up!
    
    ### 0.14 ###
    - added ability to rotate lots of peptides to CaRotation
    
    ### 0.13 ###
    - removed artificial ceiling on residue separation in CaRotation
    
    ### 0.12 ###
    - migrates Cairo over to using MolDB2
    - created sc.SidechainIdealizer to idealize C-betas in MolDB2
    - made Cairo fix the C-betas
    - changed sc.SidechainAngle to use GnuLinkedHashMap/Set classes
    
    ### 0.11 ###
    - updated Rotamer and angles.props to treat MSE (seleno-Met)
    - sc.SidechainAngles.areParentAndChild() would fail on MSE b/c SE
      has no remoteness indicator; workaround added.
      Not tested yet b/c Reduce doesn't add all the appropriate H.
    - created package 'cairo' to handle Ca-Ca rotations
    - wrote (first draft of) CaRotation for use by KiNG
    
    ### 0.10 ###
    - made Ramachandran follow the Singleton pattern (with optional workaround)
      to conserve memory without requiring explicit caching by the programmer.
    - added means to assess rotamer quality (rotarama.Rotamer)
    
    ### 0.09 ###
    - created sc.RotamerDef to simplify rotamer management
    - added frequency data to angles.props
    
    ### 0.08 ###
    - renamed packages
    - added sc.SidechainAngles for dealing with rotatable sidechains,
      and for measuring chi angles for future rotamer analysis.
    - finished describing all DoF for each side chain
    - started listing canonical rotamers from Lovell et al.
    - finished listing all rotamers
    
    ### 0.07 ###
    - changed Backrub to optimize conformations based on RMSD(tau) rather than
      worst tau. Using the worst causes insensitivity to the other taus, leading
      to random (and usually worse) conformations there!
    
    ### 0.06 ###
    - major rotation now also swings side chain of central atom (Backrub)
    - IdealSidechain now corrects the whole sidechain position when idealizing the C-beta
    - made Backrub update ("liken") sidechain atoms too
    
    ### 0.05 ###
    - added rama.Ramachandran and rama.NDFloatTable
      I think this is better than trying to build a general-purpose Ramachandran
      library function, at least for the moment.
    - rewrote NDFloatTable.valueAt() to eliminate extra memory allocations
    
    ### 0.04 ###
    - created IdealSidechain. This may belong in a different top-level package,
      but better to move it later on...
    - made some changes to the API of Backrub
    
    ### 0.03 ###
    - started in on the real Backrub class that will be used in production
    - wrote peptide-orientation optimizing routines for Backrub
    - modified TryTrio to use Backrub, got nice improvements in tau (!)
    
    ### 0.02 ###
    - created backrub.TryTrio as proof of concept
    
    ### 0.01 ###
    - started with chiropraxis.backrub.* to do simple two-peptide motion
      using three degrees of freedom in the azimuthal C-alpha trace
    
    
    king-2.21.120420/chiropraxis/doc/0000755000000000000000000000000011677361404014724 5ustar rootrootking-2.21.120420/chiropraxis/doc/tools-manual.pdf0000644000000000000000000022516011531212710020020 0ustar rootroot%PDF-1.4 3 0 obj << /Length 135 /Filter /FlateDecode >> stream x-= 0="c 6^=.Y}oZ#Q5nx~+Q]ڲAKFh з :;-C%}$=(3SXe_Pk<(!^7۟8b.gKfCmE}'endstream endobj 2 0 obj << /Type /Page /Contents 3 0 R /Resources 1 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 7 0 R >> endobj 1 0 obj << /Font << /F37 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 10 0 obj << /Length 104 /Filter /FlateDecode >> stream xs w36WԳ432SIS043742V0703425TIL525״4Ѓ]5 425cC MML tM, L Ar\!\)endstream endobj 9 0 obj << /Type /Page /Contents 10 0 R /Resources 8 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 7 0 R >> endobj 8 0 obj << /Font << /F37 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 13 0 obj << /Length 1907 /Filter /FlateDecode >> stream xXK6 Wxz1ÇDI)ӤWhȢCI_zA$>I7x:tVkl"yi7#7D d j/fĴU$QsP 5(d4!0RֶDft4 9ϓ_ygU><"f"^؟ƟL)6"2B{z4F]0fm򌢌3%ȸvMAQ%ESޒ;TQ~Xm@ߕk{W*܃[񮉶2HXF>X3{5"<ngO\5eeS\@>^FiHQ@ؔL`$fsLnCbBǫXC4شȓo06];%9KE`\QKn[9sӸvFzg?BKaw~qH.+@i3Ȁf8}?|0MG ?~hƈ>^SOB/:R%Mr(8?y(yT}&͐r :)!#qnGtQ@x֫fu[Qb$r .v\/.om<$ @'99ot6)y@;G%U'?({چx;@ZGkk+L NǨz_ 0TyM U fˁsPN5z7!\h sFGl8 wk40 F; @nH(ax=_ F.p=gR4dMɣ)C#ޑj BKČ}W?5"w!bc1a2] VG-~+G 40*Q9?*Qg}^cv I]RˤC&^zr1[ck=!cԫ+~ߘA2!M\ygPl[']۷oa, [0ClMQu}A xEE>\'::Wr HaA8ȝLy|mgi3Pӈ~DBr.4q" ::2v_Cl?}A3g){lG;.X&{? ѭ!!kK_Ћ&_NHSYtj74>&|n]QYd{p&RNwL "||9Tҋi7q8@42%d*Ye ꤅ Eq=m(Xw'գ3/i/QȀ]?PC*;eUXYHJ`?8)C߮rz,<3eLO1nzz_xg"άW^,CƫhO!$4(.Ads %W{v9t$jxzfdؼoK0vPYMj+B\d; BMfgWE͑3Y')"cX:D1N/X!Ɨ2q?ʲMg!yAR)^*nd)ĥD峸oT>8™9+J3h)x endstream endobj 12 0 obj << /Type /Page /Contents 13 0 R /Resources 11 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 7 0 R >> endobj 11 0 obj << /Font << /F66 16 0 R /F37 6 0 R /F69 19 0 R /F70 22 0 R >> /ProcSet [ /PDF /Text ] >> endobj 25 0 obj << /Length 2510 /Filter /FlateDecode >> stream xY[۶~_BDd;'MJĮhSK֛_P֔jz  9/gR01i4KD&ZD귫_~J̾i<jqFF'zy+,g )C4GZ-#72M7 Qf40$FeKo|bMv]~}Ph'0*H(B]V-@'aH+IxfR =f/E.% x^H%P89Ee(kʩ/& s\ƁkϋfŮ6ΕЖD\PwԨoۮӰ.O 5")oa$hGHHE!7i_ ygeVGD2?mGQu^UU#x,vÚtMq3E R xG<[\ tVք6ɱاB>d-*ORgB90 PoRSqTP%|E*?_Ge; S Qh5fBCL6$Hgcr`Ą4|9sEVTVݖ8仨ɌgOvq}JIST1޺lPΡp9pZ q9K<D`ġTa$F $i~h޻ŀpVd K!E~: a / =A;M:KG`mr10\G0|q/'o/*:Pcf4(*i7֐'A,vMF-D瓱TJHeL*(m5n]嚬,p9dkZ4C2~by4:feI)#or_[M[W0$uuUgj|5(>d0 Ƨ,%oW56YG7uQ4&:묁_r'A?}*ޓ+goIx+eB`* VdVwM2@& E ܮ+r|ʶ>Rx:Is`l 5 #}6#lHxmM]. B7+:ra20kg];VW;n=Aw .X(׽W 56Qqk;#eBUD&>E7 ',SP(h"NIjO pyZ~zB8jIPމ VBۿ2]ӯqWpGBꚓMƤaZee g5k;~3X1}ҍxMBtpQ5rn?$p8wp]ٳ}5 XۢI:Za!ių@0l뼸Y 0u"6 m \Ad%Sֳەkh=nʫŒlHFWxpVp9~紘!ґqX\7S`ZQ)^FY-BSK$:4b;!0[p)y;Rh)[~1"Kq~2CgeI$:xx W"Z)UЊPb`Bl*<J qؤv3f=Q?9X> endobj 23 0 obj << /Font << /F37 6 0 R /F66 16 0 R /F70 22 0 R >> /ProcSet [ /PDF /Text ] >> endobj 28 0 obj << /Length 2024 /Filter /FlateDecode >> stream xڭXK ﯘlkVse'J*9%JlNM~}Z=&vOA7>1>VYp/hpU!pFAu^3:!F'ȢM3Qn"(K)k.+F }Уi <4>eFv-;F@ FNoQ1RC39d;8r3[x"|y$ɂ:gݾ,;'zs2 w`7 }%ї2B^gg4]g_a], n|M<.<{ 8#E:E_1ڙwWoxU<&c[2'+dqC>:X{_ :BW QіrneSR&-Mǜרt;$F!R6Р2mWn&IhZ- j n =#g޵z&G,Ϊ OXC܊RwN)Yhr\%sKIV5ޙ+0SfQ㆟a2MxSXI9dyݘ׫A=)!z}?H}k'|PS՛zߠ<>KT뵅ۂ4nb1nr2}%3gJ>k|`GݒJwqlD5Gr[Ix9,jY9y]iZL㨇 3,0w;BgjF .Uihƍ ҎfhM,qe?O`V~c" {^%7Smd7Mk⦡V%01Ʃ ENw@cɭ3!U1 ́fQ#y@vTw˫ ױ2joFnn8 <줱#:RN֑N<^܄D.M 83 ac3 j|rldh癳6φå)ϝ ĉÅ4dtq%R&9xkB7(~AO?j=rV8(8_+\21ժarϳQ߃8#e0p;v_%jIc̽Tj_GՂ`zLڢ,Uxp@HTG 2!"g(;7l)DX-)+(_T!SgcD.b]nL3ݼJ5Og7`r&dsf9$.:\j}4bwzB7 *! "ʍ܋7 T;U;az~'ٲt9%CbQd7 <Dr[ eJԆ>!N?krFQGQbFQiH,(0c' |3B\ WiZg -p%OE. ߒZeJfpU3uXM+vF )tg'dcZ;4 q3>oEk^ci8L`9)l͒g|pQ)̗ZNsM$R}P P͌46δ/|V`Re@b6]& ޝeiE)Y@ҭKȒ< 1UI5564 a^&0vҸ&Px=CX .!XiRWL5o[sJjt3Y5)~l[΢e^*'=Ն t7L/8ni^nۯؼ@="@ȫ\=}oď*T3np 'xދ 5OчB5}\z/ZnK~L׿^ XYKFJH=q:oh U~+{$+;nf;F)E\a_qYq7ߞvendstream endobj 27 0 obj << /Type /Page /Contents 28 0 R /Resources 26 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 7 0 R >> endobj 26 0 obj << /Font << /F37 6 0 R /F70 22 0 R /F66 16 0 R /F14 31 0 R >> /ProcSet [ /PDF /Text ] >> endobj 34 0 obj << /Length 1311 /Filter /FlateDecode >> stream xڝWK6+*#S@%9ULNUc^({Zj;8Ӵ[~~ݭyqx+v iJ^7;VԤb\*Z%+ʪO_L8PՎC^VwK ޺0 .[xg:*3j-kḬv{^ۇ[DmHA~YIw.k.v=Grg%ս͹>VSi_ͬ8idL2t{ٔ(Lu~ϲ̌q9=yTjԻyiPGǽqg9YorF3"o'{QEgxpΚm?3Ogx8"j^&IX\BjF]&y(>S3FITMĎ!ڧl`qBy}ZDd QNciOy:áPqO:jdu{ =rWٜU3"X!cwR6"TT( ;4 Бت,1D!H 5 vK#3D*:z{A *֚3@ XBB}APxyó_rXv C>E9˰'EEDFJK(%I8SlxcO'BcK؛*\FuθW ӥ$j:4B /+Fj2 sNOS7֬2 NO~^A2<XXb(Ds&OAԚ)hW "ƮYty=zݵ_hX^ʳO~f) P`k4xH5p&K0]BqIÖ. rzsZ= 2MzS,gw}(pk~Tь:V83CմL@( :_,YqQ̀27MB YEͳvxaME eO^>~uqAf]p+PV@M% |SVO^ Piendstream endobj 33 0 obj << /Type /Page /Contents 34 0 R /Resources 32 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 7 0 R >> endobj 32 0 obj << /Font << /F14 31 0 R /F37 6 0 R /F70 22 0 R /F69 19 0 R /F66 16 0 R >> /ProcSet [ /PDF /Text ] >> endobj 37 0 obj << /Length 449 /Filter /FlateDecode >> stream xڍRMo0 1#ɑnA &n"kGqҲ;6 !ߛRPȪQ"U?~CǓW$E3OmXѪiLe5S^~8EOƭO/& J/<_QJuY:)P@@)5"n?/ hcIi7`rή !Ք N- W3d+ŤyӄN,$snaEhJh>]v9;@$E6}vL9~[jn0HdxJRϞ/XQdUaOƑEoMPld0i]#DIגK-:k%t%1fxlPY>}U#Zċ]\c/u-I R^KͮBTG]Dv<endstream endobj 36 0 obj << /Type /Page /Contents 37 0 R /Resources 35 0 R /MediaBox [0 0 595.2756 841.8898] /Parent 38 0 R >> endobj 35 0 obj << /Font << /F66 16 0 R /F37 6 0 R >> /ProcSet [ /PDF /Text ] >> endobj 30 0 obj << /Length1 750 /Length2 576 /Length3 532 /Length 1110 /Filter /FlateDecode >> stream xSU uLOJu+53Rp 44P03RUu.JM,sI,IR04Tp,MW04U002225RUp/,L(Qp)2WpM-LNSM,HZRQZZTeh\ǥrg^Z9D8&UZT tБ @'T*qJB7ܭ4'/1d<80s3s**s JKR|SRЕB盚Y.Y옗khg`l ,vˬHM ,IPHK)N楠;|`zhC,WRY`P "P*ʬP6300*B+2׼̼t#S3ĢJ.` L 2RR+R+./jQMBZ~(ZI? % q.L89WTY*Z 644S077EQ\ZTWN+2AZuZ~uKmm+\_XŪڗ7D쨛Rl:/P1dɫϾ(l=Uhd_OܗEkv-X1tލ`i_y. 1dz:un~Q?3/S}] $e~s]F1ʻ/Q?m򻳷|<ċݺ/q'}I+6EgxT.GgtvՏGU|~]Rޅ_k9:{pG d}dN<6-uBoH=cMvHzqaRK~,K̞}˛myo~v _s>.#ҭߦ{/əkܗ\m|rXϾadj|ǝR/,2p0, HIM,*M,~r}endstream endobj 31 0 obj << /Type /Font /Subtype /Type1 /Encoding 39 0 R /FirstChar 15 /LastChar 15 /Widths 40 0 R /BaseFont /DREWQH+CMSY10 /FontDescriptor 29 0 R >> endobj 29 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /DREWQH+CMSY10 /ItalicAngle -14.035 /StemV 85 /XHeight 431 /FontBBox [-29 -960 1116 775] /Flags 4 /CharSet (/bullet) /FontFile 30 0 R >> endobj 40 0 obj [500 ] endobj 39 0 obj << /Type /Encoding /Differences [ 0 /.notdef 15/bullet 16/.notdef] >> endobj 41 0 obj << /Type /Encoding /Differences [ 0 /.notdef 1/dotaccent/fi/fl/fraction/hungarumlaut/Lslash/lslash/ogonek/ring 10/.notdef 11/breve/minus 13/.notdef 14/Zcaron/zcaron/caron/dotlessi/dotlessj/ff/ffi/ffl/notequal/infinity/lessequal/greaterequal/partialdiff/summation/product/pi/grave/quotesingle/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde 127/.notdef 128/Euro/integral/quotesinglbase/florin/quotedblbase/ellipsis/dagger/daggerdbl/circumflex/perthousand/Scaron/guilsinglleft/OE/Omega/radical/approxequal 144/.notdef 147/quotedblleft/quotedblright/bullet/endash/emdash/tilde/trademark/scaron/guilsinglright/oe/Delta/lozenge/Ydieresis 160/.notdef 161/exclamdown/cent/sterling/currency/yen/brokenbar/section/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis] >> endobj 21 0 obj << /Length1 1647 /Length2 13024 /Length3 532 /Length 13907 /Filter /FlateDecode >> stream xxUp\ےJ̌d1SbY̒E3333Zi>Q'sGX@gO2;pv41gtgT޶[GN@+8fϘFNMmI[3?s:}@T gƶ6Vc gH s"H?"=qUt_ŝ ?s9h l kX88Fjdo #B 6w7w+;L >}c SӉ_0e3s#K`1>uojj_iigW8)IM?Qغ<9,L:ryMϵ@t櫍_}c/Sgn@#[#@Tj11.f :<*N-r_A <'vo{R4C]XVI/ޤyňjs2LcJEP0Ծ.ydvH?k1PAЪON)); iay] )}5U=ee~O̦ u?5PmAo.JI=q`eC`Ajk9*J/@ Eɚ*J`],o 7AVNwqu.NysQakIlәt4)ȏ*vNF8a G4,'qnݵ9wˋ] r@jG e |N^,PQGvvn-!TAPd|)4nk}UVD_""iTq`3lui4]{HMl._a++y:]L$$: z{c^wAXʌy*ŦM9(}+sdWj w:M(E(ofQK컟sZ_F-lۻ~;9LEέYd`'xQ$ESj4oTmLa,>ԗߌ[XDF`a-B0jDvxT[ kY)v/ДbV,WO Avr(kJM~e 69Vg, hRZ-% j\ݟާaDơ#ѱ\oBKAEցxSlQ%Sڻwݨ[<8XW+,y ZvKE Hov;A=L~ߍ.+)@w'zEhUófȗҁ~r_J@.BTzbK eF `r"![EC1(j҈9T22Yws趽ɡ*_צu'"9-[^zE(;!Rȣ2?VdJxwhg4RMG7߾¤ԯ<5Q}_jW`&0?:k". ErwW4NFEXo.ڦ#ҠR Yx䛓wR=^W-fF :hcp_QQZ(X(͝Af{rpiP93Z^˴ۻ'^_BJ-}MM&G3A &de\ $q\]= wnըQ#D~c!{fNb 9ZnZs$[k4xq3}>X Wy.XR1mR#}?$oPf+oQ>X˙[py !k缟u`Dې:a31-! e5igºYOm_z˨7qVۡ NDԮ8_r H:X؏tTX%cL`+ "ѽE U㨋HF! 9o/>U+tp;*:{]QMKѮ)%Qy48H:uB +gɓc#&ȶ>WRXVC獅7BcXظ| P^3u~u缼!L댸B4dqb0x yN'rH?V"NrBaGtIDrMT!t6CWOQVc^|W";6eFPv#+yw]Yr In9 2`y'Xȸ0Z'k@Vc&-3CUC<ׯ Kcwj?n;.GMݐBDzX87V95˖VV4Hj9)X~g5&A|erRצTpѰRgh5< B?C4HN"]2Zȵ|\v1؟ )aɈ >HF{9u OƐ#_BT8H D7yEHxJ}R9=Xd[~ h8{,x㱌y}v:y")8,Jac E|&HYT-vbgץ/t(tUWY?ȃ(apg뵅j#]]K5bV>+R>{ z-W%q$'s1@{ZOV-PWT?3,̦xA!,1UCTf`)7(D4;y7h3}?F&5)#+c{ʻxK&ꟅM!ݧ܌ ecF 4E8I37έ,cW'I"}gX?ˢSov{*ADA2vU ][kZOO8Q+r؜knkOX"ߧ/_| Ds6t_b!#60 K4{^oE5F[S&'FNS_O )^ݚ}Gq[+[e/b>vc59fbp19D'սB!(69p:K -oBeI!;i^a}H-o3[qY~;R :ؒV#>L5W;!*lKaLЊ%ry/G>=بcA~$[Z@zql2.N X?#iA"-%CUwQWG!͂{V/r5&unRkC{}4KMYZfCD! NE6c4>/Đk ڑ 3WTmu0O`XG+*쇧ҶDO8Ac BՕW'W5XB% ÔWcUW$AҦ9j4N.hiSUm *4ۋȩ&;y^]ʪaɹS{Q`b76|Iŭ v]YTJkt*4|й/>::پ([PNfRME!lzBA&H΀,&ɮȼ7W5)VO3!1u@+1wB`9uBZ e$=VbշՌ4:Ԁ RQdwhW6VI1c'.ف YOOF S-7ob_@ ?X 2ŗJWHgU$:nޜ0ֆ8S6@l! tNTB1stm76 n0$B!X3Uh@4M[ %F(zf{G6rpJ"ҥiXYClwzҏ;;.[tnB^H%G&-q־ZcvQ[3nf[/ + VIocc7ε:V4& t4 ;x&?[%䣼М6-P FL턇PG"2/4@.+Y2RTp%c}b8+ZUЉ7th@0 {fGAރ-B%]6?_\4-H'$jSE*e1(?F=lReMY^]M|:װ755})AX.R)O}gԪvɆ,2a]%3N(\F;f MSp=ۅ.f` u /.|lW=%NHu.KM$FjλJܱO\e2i")==6lSvك-Pm Hz7à 102-^)B-4,K/'?NVwG|mtO,xORK64مkx6KOD=ӊ;>|ZYHkQW[k$7Kr'1(w/ #Ʌ}a]jE4>V4:C=ti"Ɂ]7> 9O3ErA~M]LڵuqGjs\$K0 F |e7P!(e$׎XhSi(RGq/8z_bFVG@s-iJ3kCylr$'YNS&9_Q Rw}njسMpQ*ىH¾ 0tZY2$W /0PCv[2mj"9SNJ4*(pb )p+`h!~xD%b7h ԟ-8tkު鹥<M w$o'a%C^Z`kgHkao%. 8H8Z'ru-bȾ[nK9xf9CC5k)ǤII彇 cQƍb9^s..I)x+"b~YgAnށ* A }{]?ig1dwW] 9mߣW톏F¼9p'v{PIMe82HB)x}J0 Rc aU]5P. 4>Z8A%6uN9 "G%̚w;Js֗pC|Hͨ8XUu4=b gT͏%/AsogPYa;_Ĉ.$ku8;CW8 V|0:Ȭa^*?e-'xä5Laܯ*9ceh:!wr՟$Ĩsw{B{IFz0 LzWmׇP'XO`}PGISp$0d-2ge.RkSOt_ 4 A}pږ"hFM V2kYP@ƅ (P!x/dZO*@3K#nv<{k/Z{d\ؖkS/l%#]}% jIbA ]+ߜ$^B) ~vWfP菧m+S{ G85,s[cR^/A xхF~A Űqo&!}}/?ƹƜVPOU2$50u-0GR=/MS,4@)9; %NoY0)JC1JDeZoT9%x]r&hKosI0cK!aiA+S0(#)u0-@+>(v +G?."cH[}>>\R<3TҎ7?\WՌg*/ Ke3|U~/ |EvtBS]u%x*.UN3.̲Nf٩9qI[!\WZV~o'qs8}sɧ|EHf?~ ނQK {[&⎞?*jJ[ŖGLt-kW֟C*ULr 41\$&J_ZȺmBwYY;_e+K/ތ&Pr6kqpp " 33@ɬ1bSl#Pi:+ObRmh&x‘|dM|ג_n|r- +h\pjVv0|ٽ}.5g(Ƒ&٭U#֊GS}>./25]7Y+6-A=ʸ`r:9q"%6#2.M4T^wnr0HUgp% R_P'1fWˌunB@iɿ1]!_egAbpwf\URVoW^JI޹2$7Ԉ #QA3p4%j sV؅էuVXK=i!}'U}SQ%F| <78<;&ӝ+Ёb'bnH3%"Z!3zC*ĚeWH@g+HwpjZ!IE{NT:l'WѕNSo"t~cml pyN`@/7,L,6^\dp#,8Zf-76M|ݴ-A(Lևg<}|ֈNSzqR[S(6oZW,0wLH$ԙyVD7ŦJNI|*+_gQD{Ҹ kxAǍ^7am Kp9\{|.{Z@ s@-5c".:**jM3#dL/]|2޺36oe ɚ NjE%yI*a;6ɕ/i3!FۛD_}mN6BٷaiM&V[Cʍ⠎8USm USj(^UDz80JZ5 Cl$?唅!+ gUn-Q/{\xq|+A&y9Ul iD:Zڛy8BG-T[2 ,rT((rC^PCK'Xd˱~o?GQFrq ᡿7+1ý'z fVy&WҵmؽUK4QaLǤ?7x $T] LdCj4\D%ɦ&fH~kk9RKȝtyHk,T~^3h`,>=J.xHSQ[ aJ),}>j fIF~7 )U[WH˾T029ҕ mdę[Tn!\jƄa0Eдu74]j'VaQWJMEH{PV<,{lapT{OɏHtVQH$RuSӊ K.d!p;l8ؠy/m+u4¼d,iATCc+BIh" QAU|or%%wO=m 7LRC %{{Y'g.16 !abQtIޱ- ]t*'δ-UmFp YbHXz>ĖSfBb,,)&BL{|Q9l!,8Ȁ4 V>TAB s%y~[$M<ZrQmPMƵhE,%Ę3S\%g SQ /TRCجK)FWLѱLM !9C Bh{ ZP4hY{Df#-Nb%2*\-\:<x^k0k({+o4]_zft|djDMf%Aa]J):m!~'1=y 19v;U]0q[eiw}0s}v/ }g'jʠF(MN8ֱGed7(Hʪ;z6Cs!(0d!^>,q/54JeyU}Y:gsgF3ckl^bbw⇻[H؇,); #V?ee r%XEyGa\__tN\|C?Dz.kZem.Z^oA\@m8vA6QhO0fX`{udMr@G.I8FTme}Zj8K{bbdQ:?o9{-0i Ome:?z {Z{U U,!eM@㮞-)5&=f0t޷ ͢< &1lԱ'_yaI|sCgw1Sl $ DV%)[6-ŲoIfEy/ȷuOX˱s]~ih*4E{U{ KyU]zBOMtuSH"ELwJ.,!0O:~# ;Z~JlqT=>rN;9KwzgѾDJ$̉YNj+{e(HLErѡoܰ IޖK_` p۵Z:ã A6 rdXF{Iifh\:]D2SͰ;]9wri_Bl֮Ydpe?Si$gF#U&âf vR^x]x+~)Va(-uO ~\{Dy?ŬYػᅾze)u^؉,F~ɐAIרѠUHo?UMY]~lŊv IT?I뱾LMEa_wELJ!s"o~F቏~mv &uJN }BW*1H:.;bA#KA}R`P}$,[=/O.4[4/Z{`URp0.W ~hDVWU]d*3; NJ}>wqzfsThQ$l g͸} 1gqjcX!4Hm~EaqSDFA݅)p (L' hdkm` /endstream endobj 22 0 obj << /Type /Font /Subtype /Type1 /Encoding 41 0 R /FirstChar 34 /LastChar 122 /Widths 42 0 R /BaseFont /GWWIHE+NimbusRomNo9L-ReguItal /FontDescriptor 20 0 R >> endobj 20 0 obj << /Ascent 669 /CapHeight 669 /Descent -193 /FontName /GWWIHE+NimbusRomNo9L-ReguItal /ItalicAngle -15.5 /StemV 78 /XHeight 441 /FontBBox [-169 -270 1010 924] /Flags 4 /CharSet (/quotedbl/parenleft/parenright/comma/hyphen/period/zero/one/two/four/five/six/seven/colon/A/B/C/D/H/I/J/K/R/S/T/U/W/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/x/y/z) /FontFile 21 0 R >> endobj 42 0 obj [420 0 0 0 0 0 333 333 0 0 250 333 250 0 500 500 500 0 500 500 500 500 0 0 333 0 0 0 0 0 0 611 611 667 722 0 0 0 722 333 444 667 0 0 0 0 0 0 611 500 556 722 0 833 0 0 0 0 0 0 0 0 0 500 500 444 500 444 278 500 500 278 0 444 278 722 500 500 500 0 389 389 278 500 444 667 444 444 389 ] endobj 18 0 obj << /Length1 1612 /Length2 9029 /Length3 532 /Length 9866 /Filter /FlateDecode >> stream xueT]ݒmp].5n$H~7cWUYjZ\EI 1ICP&6fV~" 2wP%@PKX hI)LJB ع:X[@Zt e9d/j jYڀ*d2J`lPq24(X :`` -%08ځL-_\LAv\;7`` XMm sDؾ^T PGSK;(%<?-_K$b|/0/^%@2v6Ʈ/_,h 6Fhrt|yӝ /ٸWr:l̘Q_rB_r[QX  `ct3@(A/)3u" $/'?k_<3}^n@玱1v?m-m\ Gj 1 ̬--]@@KS5@%_0O\@`?/,4Td?1WʋPuWb^"?; dbp$eco1R2+_?HM!?5_? ܦN/u_ _LQ Vi)jI.6@:\JHwr:_CU sS<` Mg"$ؓ[[yvX S"OguY5w6F>> r8 P:P2MmìUwx>nM@_9·m"}3Dt4CSЈ[Nȴ: lUs- )-"qMxgScbqc|YNR ģTiHװgݎ!ն0?~nDܦfeu*ǐhsvӛ`z(G'2j횴:Rf;TSa>|{g\.3p]kIs7՗_lںW,Em 7o-f2Bb(1LӇu{R]VXenANx(y z*1[>_o9K#  /b EE޿Aѫs1mgNSx;!XǀsÐ4GlK%tC'dIN8&}2UeM>ю5ǾؿPwwG{"M6ÔU7l¼'L ttO0e!DNGC1iH{I1^.w}Q,Cbѧ,K=!l~} x_U)(r2!Ү$L?iSSq$C@7Ɏ 4lOաCNJLe=D>T {|+mGݫ[! ݢ D/ne\oy=QYM└X}g0er4ܹ͎0s p/f| 8ҲnCzy=:))T yo|0Ac.#&^<7u}'O.(V&k6%Ԍ4 |n]'{0Jxz~"yfMU}&}rlͧ!&0HӰg>N)SeGHXFUGj㥾 5X({Ĺ~CX_'DU( Tu[Nomv"\$&G&$dp,Q2bz_«hP5\JwK=~EeJ|r+\\Na|a(5MV-$%X5r>QK!uzypG*j0.oRmTRcޔ8++ډۀdAw:3[ѹǒhP8E$ֹnf57c$eW䝔 ^B5SG= ^يqc5E[zפ_(7a,Ϯ|3 jhyZ:WmNQ&woJWAn(ض&.T?s:阾NhQW.O :j7`+1ix}hn]?w3~lG_*xҴiO ױJgKǞ7ua!ǺyE㕃AgR7w9b{5HREc G8̱ͫ,ހh_{>(2Sp|l^$ A=渌`*f9 @w%l v8LX3M_dRe61ʠ]Yz(HOp9iJX W_eUVzήo:3jrr[vvkTX^BdfYN![i%xkCoʱ| 290_hv*PpO JzMgp8߮#&V1D-'rowo\Q:kU.Cz^y[ :2JRYñp2En+F>mpS&?lS_rI9 j҂WaFNζ N=XH7ͷEw<&dzH_ x,y"{fTMõEh__J0surUtsV>b[*e0eиH$1I޸FInH@\num{ ^з֙ 3Y\FTZׯVqƄyVEzrW=:[Po_6Chq\`jNKr^U\Re '߯\6Fy hcĖk \PTKq+FE6IY/qlbDʽ/H8>'`w󍀬HȾ8Y=$ɳv ! nڿuF,Rh%dX /*^Lmxw*4C܊ =ؑVf/o~&Ҡ8=Su-p>z$,=S'ka<(,uv]b [ӋW|t+]ER*;9M0J8\lQu5mDwVu9uO[D?u\ 3pXE-,7r&N뇼^, )Vj!]tyhszl.S䍔{Ff|%`ł=RY&pGjvjS!#؂jǷA!bCPW*Wi#邞(>Xžg>WKv464i*KKҚ3 o;T* y#e#,x^w(t41/n%-y]CqδKl>dog|ZIQt7o-ۉ%$IBKE bzvn$#R>> o}ܽhd\v"mH>] )DpnS sFČі) zsŻsQ}?~.>4HSBEfRo:A%䆐̮wnyZ*,td4h2:SCpģ"% :Y3V؆JoJtLqdeՒkGfA^A0TL_²=4GoS(fEc&$6w|Y'[u hYUza+WfYPbAe4]gN W wK}.DEߍ goyQ~_'PFn`v3z[8 0];NOóP׸Tz#i.#l2^ 3Dd% 0rQtnG̮?!PZ>RI~62 O3^)gg}S`$,hUVhEϡRe8z3i/OECAsѡWb:++ œv-u 0z[G}HK2e4:Bdۇ:{r(Ŋel^0Hm&*sO}+8JwOpS sLZ$,{8C(/9bX#uAtߢ dkz9{ V'޲hvK}zt(]v'x8{0i)mݴZ _ DPWl+) (?miV*䦈iԒ@$/ΡI0wħSe.J"XZtsW oU mK~8gp.j)IHۺ>‡{O D)h Ҋ9G7P<q)A-XxPc~i~G]ֱN8b&|S)W3_@İɱiSԝs;ç uymBzN(SL.؄h>^NIf6q:%YʘH& E/n1{mIp_[Odex)eYù(9gKLhPeѡ*ljC^13["#O]x"m4%*s {k|ͧgħČ pf-H}p0*##?FG+/ JIl -uJюF&#Ќ el EOBD*J`*,7kpRĔ )Fx=5>գ*&Y<ۚZfE('ml8`]ԃ @cmt;ɽ-~5 1~-=?&Dt9Vu"tئT"(k^a bYa-@$|(Vm-2+zfNhS  [$Q l/-h1PR7!~G!&t).BzJHM~Ֆ)Rޚ05㳹<{WNELFmsY7 KF ]!hId(lȇE=7bsۀK<Wi9QMؙ]="Id>7Bea%E&h&݂2FrDB΍􎠰oU9F?HEA8bD:43qc􄚠:M2?`/t P.%ugmw}LN;%Y::-E{T9Uaf2q<2NB1T돞*92~+L ;HDL10=R,h<$aH`=7-,p|h M{ ]ha+=5,K piutA"9pIڛ*JJaD"7] xdr%bKvF*?N&S!Te6[_,"GS6m>\M>|{ ?oEF94!ᢉr;ڿjOjW= *~O02{V/ )":u.wq2Q?gM=ٌ„3h%ΫWiFFzj:KsZlY`.\ 5?>/5C܏&/: m9RWqo7DkMhv=w%L7aO4-\/:wL?f=A%/|?{qB ޵-$SH7{XLcCZ"6ַE.Iǯ˞ws&}6~hԤqqœG'` 6OaMGw-†uyHX܏t%,JG }Dg(9~UNuw!Ue.je)*$NQFotpD c°C;ɔO .ՒX=m" <̤OU]/+dY1|`+:ԜUd># >besE2Z5q?r"fqgA|h ʂՍ;nRkܜOI!LR$&eѼ1Wn4?+l0n `c|O/ 4 ::4"&$uDjӫ?[VȹN0+ֳڡuVZ^OFF1V"+"/F<,˦ D}i;~W:0d$2ō %Nz'QOkܒ~ĕz=!;Ust)ƣmFg%C܇U1qj%2 er-rQϡlm:#T[>7ذuOp;lцD:b/$ *n!̵6 Bҫ*\s F੝N eȦ=|I~r|g!dTEIT3IY~f.B9>Fw˳]ױ#l/HwShq7P+s`*O@Vut+ :RCa{5DĔJDp5+,"Q|t38YSc~ ^=x,5w_7^1Žg6~a,ydp&]aX<%~G7RGp%qE5FX_勒S)9&%p1d)0UB1(O|*!;Z.j魯M??$DQж@9__JSDқ8 X=b馘<vC8Z/?vd.|rv؆1rҐޥUR@ݘy`[|Ozj%ьCjQE2qzi:3/2T.*켹at)? hT܃X(o"G `r>OaVfW6N'3#L̏Y՞~[G]} 8!Ab>+z4mKVo W&H懲XdR.XV6p5/3Ͳh(8Ƒ J0/ǹ[春0F*N= Uê H*ROe ~E-4qUÖw5e$ӧgTʱ]2kq_5I\G,ԊH̎=fn)ޅP50g)-6<+}r8}/kV ubo QAL #MDS7qAjZsy&eDBZjh~jneEia -vK.򏨕GE"8Q**ﰑcA#?L+FվeڮX m&4G F*pZcjInb2j9b% p8Jy(gKrTϡ]3fs&FB4ެLn 7<0ԋz2fl2#u3^zQ*Guަu"kVV,6ƿ22>UD/--.F7HBK^e3g=CBJs!s+e\rҬ?`j2vBlQ endstream endobj 19 0 obj << /Type /Font /Subtype /Type1 /Encoding 41 0 R /FirstChar 45 /LastChar 121 /Widths 43 0 R /BaseFont /YUPHXY+NimbusMonL-Regu /FontDescriptor 17 0 R >> endobj 17 0 obj << /Ascent 625 /CapHeight 557 /Descent -147 /FontName /YUPHXY+NimbusMonL-Regu /ItalicAngle 0 /StemV 41 /XHeight 426 /FontBBox [-12 -237 650 811] /Flags 4 /CharSet (/hyphen/period/slash/a/b/c/d/e/f/g/h/i/j/k/l/n/o/p/r/s/t/u/w/x/y) /FontFile 18 0 R >> endobj 43 0 obj [600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 0 600 600 600 600 0 600 600 600 ] endobj 15 0 obj << /Length1 1626 /Length2 13802 /Length3 532 /Length 14661 /Filter /FlateDecode >> stream xweP]&N 8 .ݝsp K wv3ݿfW.y<]u $ngL1vqR㖥-rv G3DA&3777@@AMKKO_&c|x:Y|||Yۀl? U@ 9`ja ((jIK$ [5@ kauQL8Ll%08كL,>@n& Tt{7 `hdg; >v'dhaaSsrv2qw|DUGFvPL?,v&.Cldap9Z8[w; ' [f@p9ANN0uuSF{m9X8;MY>b86E`kVlML]] w$v Q#$e9(!.F6X2F=h\l7# kӿZk5_uRF-5B 'q 7P`jdѯj@-׿[ gfb_CkT<0\6TgUw9;sx3spY٘?GBL^Eȿy3rvp|w/0b&vF1i!KmAߗ?= ai΄72%=չsศNo73`}QjAo]OJwKU C[4p75eW,'}K'?~rF:6渒~ D#=/ٷHR"O{2X%s\ #ЙƊXZ,u$\QXĠ cT\hj#}}7&kK$]fƆβ&K fRE<#PFm);r [}gF||6\a#QGcS4:韽mjv?PUA}FUY_K8 CKrU qnh萄mf=޻z3=yu;)-M̫BB{{~%+D jvא::"=L.ŸūD"]V Q}E[c)KPY^Mi$ֆ'(Bw4fnl3Mq,m}0u |PTQMyOLgFBD 0בB } nI{X5 A"!$l$*ƗH=tLVZļf|6bsjlZ% sPR)KKQw=EXIS[u8. (<~zŸ$Q>"FJۿ$ys)EsC.Zki8O6$ ֺ$P`qfV ݷvo,rզ icMRbJy3p`]vo9݆]3OF(#T =9j˻ctiii~S7htA4'/B/yʮ^˭qPNV+~A2ė,-?iq. cLM+SJ_Rh3?x>(P5.wl딸 $n>G۶9b xFj^gr~1C[^o'A|¥'} f"Fz4B]=>`pZ/pe߿=Nn+;)2" ~/~;ѿU_֥AX\p5KL%xH );[ OB<yi$:NA9BܩD*Fds=uXCz9D6i<*@.^U=mt4"jl“_/`RtWn^۟yO?t&"DR1O՛!4(q` C9x/!7rf3Tt&u0'ΐ"'lr /v/Y/W~ GIQjwߛ_ =ҡfX~uf'J⸞.v۩jJSoZlS zL _r8"BW \GGdjB!s $;Ӻm wKMY}sEt_@MuZo3hЮFL36"AseVY ]5< z"gS_4Zt`CXȅ6xlOK9_7ЃPGSE"b"!߶MTp(3D3xٖ]:Sp'd<`rHkms ڀZ5#H)CJE,xQ8HZ# ޓw tj{u,v 2_M9$U]n+5XVe|p)UQ;E[$Toֲ.nᛅtFŝj%R60Wi8S #lkOl:Cܨ61sLξSهgEv:[/Oz,05m2{$Wmt(`͠5"Rr믓mԭDq+G3A` OMLm,/OKE!`%~] VBt.~!-xӵg z*bs5,ftXm'myXř‡DG#~X#>ͿjɁ~s $vI9D;ƘlyܕfհLPq@^ƪھ gLf\K`\ H*$ >g54Aκ2t^=o-|7d[~BDaA Yy _'+hS؇@mrr'!i~;#~da3?JR2xu[aO7^" _m=G!y"CQr0đdٛ9lih [{P@F+2N;޷ É#ilvX!|yYNao [4?*|u֭;H3T?ó 5mzXiv:pulzV)"ik[~nm'RM.ہg^jCҜAlI)Fgt {f罌ܢZ(Ezӽ,hxx]+FX[%T Ǥյ"Z"C gIc"&v 75>1LI%s{HEmϰLZQi>d'Vغ}q/3 ^ٓC#Uu.Sv:ø'ռ5=Xkp\ q(x%),ޚ2[ (Ƹ 1;#!}, үڞ%z*D$,r>zjc{YDWw{z|^:Nt]K&׶*fIr6hV7r;)֨?R4 7ax.f5&]ץ^@fn 6S730Wf샞År?L`?ƔoS89MT AP C5ޘ8B=B1=I `[9PRŸt f i p^=rfwFE(?Gʃ!"~n/ZWif<{BLT 43KW ˌ`Q!8Ara0`ZiJvE}oY f ,>шU\a͢yݤY)֘&qm>PLL·귳tZ9UrƩ}LjPoݛ\q_^7Z}3H|u:jqYhP;7e0{:^]`Ѯ@Fle*yvqZ}ZD;aGVz7YC%[gR2n!2t JI.TSJus&|Q2^M"#囧XM2Kě 0^݈ke>U,$lP=:j)nϑ}T"$wڎ c\Ԙ̸&V4@B?}qe<| {p"# *!kY0Rp<ՐǮr"i\w/oS3͓>eidDMDbLo~?btUd+:kx-팖x%z=}@1e-'3M\d:ooPn~jpl֚(\(.!Z"r,,A=0Slx/ Gl"@/OˉAsws<6kBK$Q?K 1x/J>ޠ;LF#EƿͨkfRBsn›2 8Rl4A^%7 7yu|!`'[O;@20!@̮p|V/G|Qs']?+GJP)w-II$Ӳ5jJ|Ēydn}!wt7YlYs}{.qəq⩖$~rq76-RQg5kGǫߴJJGN:U=TI.hn9@d5m)'41y2N(IDVH-uݛ  k#VBتҚÃUs9!q!AId$Y7  bkD&tnJp~Frl`VɊdxm$:w w8!{_}~P*٢JޢeߞfPj'P}}'gm{ڢF _;BeM"'AF=T !ps "?#yD2ġ  @8WKֹTz<9KDo YgO s| Λ K).Bt6KݛjC$6)xLLgds'H)h2ґe,w(iޟ{xø1R :}!>sn ^'(rc3}ZVi]Yl)йklH"`լUKkD=?{4 P3t6\.qk.LĜvA0Jf 5#zv=1q'P`frIw,lv (7 73&w[y vmW?taaROؼ?]zxX,{`e~Yilv& Wp"vDvR[[g##–K :['nsRRn?UjM~Fm!l[k~Œ`q;oˎz>m5g.B1( e,nTC23 ' &`T * mqDua _/p5^?ޭSue:eR~PpYP((Th#?vG*<1`LgFPCVpZŨ$Pw54#%[QJ鴺m-zP- 6'"ڈ{G4&AM;8h)sؼoqQOT1!l_ኵ;v[=PHv~s/ak|e_ܵH9QڜxS?#j[Uc3F-I&cAP'l{fי&h`CDd@lWVy(7ՂG3v&:f}w]+њ֍PlS#"4m:yCZ!9MK!*')"fѝq9'!fE'O{2v,}눛tW>ӞMZ 18D%iMݹ޻@~(JS.|DcHA{Ю "ၲ,ytKPO>Ȇ |M eY#&"7&|w9?`h { P4()"~\~?tHތ6wp`OȺ;窖GЧ[L@quhΉLKX͸cQqg>R͈ޱ 'G8;~[s(b;X{/ckp^'覣Ƀ~bɏsp̻Ou쀇<%cm[miP7LхJuo2w9ܟ'Ǎ [D(wJ,A =3XB5t#*%LGٺcupxi` JdNw"4!yZ'S}K lfr!]˝wnʻ=D!Cym޴dErEG;,Tğϙ[B4X]Z:S/` cd_Y"tU2n@[MAr[[F tdlUaX*1 ( 0,,4ұ/{J\|nSHѳ,tfisqK_?纰4དྷy %z8P~Xұզ:yw>. b} y!J&24;@? "&ڥ;q,;*Ca'x˦OysZ( 4/&7pD杋g&)R4ۢb?78 SOۦ?+|yOҟ2QD`"l,h$r|"Qr``pYkfXGҴUG}Y?~(Be|\ +◃1gI%W4vF~oݰ4* xӹtNJTS2Rq e Lـ n M6XS%kAa+֑2~#/Fǟx`Z& ez<"%QukyENlˆ_L\x8SDIx+EU7cNaI}ϼF=44V - rI;~f-u:TGݴ72ި2j8 ݨ@ n%n,r]wwSY;fdѫެY²yXKr>9"fbC.a!Al(<E23ΞT{.A1;hա Gԫ[ 68h$? w+E`לLFjzz{u?̒Z^7983VxKϖyRסJAftٗqQE0nh[߼'OpAq_SDSx0=AJC: hfM a :1țG-~ŗ鿲b.'mﶅr6 k~|3!rUhS' P#ZCYѫ)'jW.쒯!m3X:>8 k E+b84{.>V׎>CmNYWB!=ؘ d7w₈ 6]lw*)KG2>u,I_. p[:ށ G]K>ޣlSzAVgG$W{S Fcz}$7]a޳yopz5\}h^N?JyjLɗL׭;ÀK*gr,':z0с5 ʄDab42]'WEZlX#A6:X:u,ڧ(|ws ;Xџ͓-^Λ,HsEp96v/Un閗3ų&A1<1,و[^ 71g },OD0 0`ʇLL~ìUXJ<|06r0Lowɳ} SJh$s ~ KۭiWFQ-d^(#=fp䃂W妹;$a1ҏTsYJKd .否$dwϱ%8f5 C4F1u% O[{̐Ul2b츿# =ju;1(PwmfZgv2.6!kh2PB9/ٮW<^bdZ+X,j '3 Q'l넊x0f64-PTZ(29HM:TKʹT>1'a:^:\!6eDkQƀY=҂6JځUVM``-?Uޣ&hwqEn*4{X'!a~pɦ*Χ- lʈL?g2VNqUFЭ5@PʩbqNNvW'P2lvgsKxQwu1]UY_R_5V- nY)KoDgt66 @ᶒ=oB leloGVKU}4+lzA!B!wcd6] ,:?b:.&BIٚ؄v̚twzɴmМ3/j5 %yКxPI(u1exI?x2w]{7Nsw赵\5`/Wˣ ݆O)܏gSdAU6'xׂ[Uф[;R<5@wMY*Aeݏ9!5J9Gb@nt]B\Ri60~ogͯc_ʭ_Fr_]>&0kr {u_Kkb3nE!$~++3J{'ϓi8Cǜ>q*= s'tf LCXFUYs1DZifQBعQ& thr #_V5PߧOxQ"og S;ձ6Z('KgV=r8r#"K uH1PZg-1Mw-k¦t YM$ ᇔ9ņNg³G.G|<\`Mf9^%-KM#~,lcatTwg^2 #flD5SG6^Ldџpǧj 1ܞt|0oD)+P;_&p!Ӝ;KqG2% cq5{gBxJ/ˊpi2ppwlÙ,b`a"o}؋ܶN<Ѓ]0C>m >9&rET<[pr +9BoyX@r^sMކ!7oXk?&A+4v!2.͍ 2,(,;1oye+u^ڝF8f|v =aVIR>nV>IfzEP88|h+h\s72/A?W޵*N~}Něff4aX@<3tuVh Ig1*[hޑIZT;H&A@^:/qJ8OPh gShIL"e4f<*ڴXl/_X[ΥABCq5tb3ai# fJ;!#Px:A}{CL:7, ^MÁ2 ~ӓsWJۘ)x09Mnto{akjɕIpo ŸJo៽jM%R6Z&2vC9wBzUu2%$wklh~3ܭ"n09:9Z!/]bendstream endobj 16 0 obj << /Type /Font /Subtype /Type1 /Encoding 41 0 R /FirstChar 2 /LastChar 125 /Widths 44 0 R /BaseFont /KKNOBB+NimbusRomNo9L-Medi /FontDescriptor 14 0 R >> endobj 14 0 obj << /Ascent 690 /CapHeight 690 /Descent -209 /FontName /KKNOBB+NimbusRomNo9L-Medi /ItalicAngle 0 /StemV 140 /XHeight 461 /FontBBox [-168 -341 1000 960] /Flags 4 /CharSet (/fi/ampersand/hyphen/period/slash/one/two/three/four/five/six/seven/colon/A/B/C/E/H/K/M/P/R/S/T/U/V/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/x/y/z/braceleft/braceright) /FontFile 15 0 R >> endobj 44 0 obj [556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 833 0 0 0 0 0 0 333 250 278 0 500 500 500 500 500 500 500 0 0 333 0 0 0 0 0 0 722 667 722 0 667 0 0 778 0 0 778 0 944 0 0 611 0 722 556 667 722 722 0 0 0 0 0 0 0 0 0 0 500 556 444 556 444 333 500 556 278 0 556 278 833 556 500 556 0 444 389 333 556 500 722 500 500 444 394 0 394 ] endobj 5 0 obj << /Length1 1630 /Length2 17348 /Length3 532 /Length 18278 /Filter /FlateDecode >> stream xڬctf]&ۮS*ضmmN%ضm;6z޷O}~1&؛X^ND։ kac T㔦S41s#'r41p6p2M&NNN8rJEQ; J1'@/ `jamאPɪLlM ΆFi #[w#?b _77#T{G ;0s4u';? +!{G6uN@#G {'ߨ¢@j_Kc;#J/_-dO,Co`JhakM M0 _7vݿgN@kSz8&16cgV$lML;_ gfM`lb k7$e>(o!7r+G%ZZ{.[=h >6'jft`N"`kFz -n&NFS=\/j+-l!ǿU&t+YUaQ͂ApRvFsx1q9޿ q2zoB ?2Nnu32I3:JN Q9;:%_ oqܛ.qYe;`Mk0+M ,olu_<ؗ>N1&ޛ A1L-jAz BQ`gBAQ`K٣=Qj],fJZME#` d>MN,,9 "ECJg &5A@~IAnMcQs oWυ,pNZ a=J}˱5c6-dδ>-S(k.,Ү[N) d4>Kx<`ǮʉyPu {yΚB$uTj !CQDfOD=9zY >*^^r8gB!{1ˆKծ fߠ8TO7Q 8]@tXG]yd"cP=8\"_:LORK0 q ӕM+^QQy JFưXȹŹB~2IhZn9qJ=5Qkђ]{rޗGS ~&HK>x^X DJoFZcD`V iKa8Dq>jv\V_0eGJKlv[ B4grnyr oӢXᛐIgwv&j@CU0ڑ 1ڰHx;3c%gP6tz&hd;歊Amı `x̹LWί8~}UY0j^rs ]Ta ',VE9!ݵCwqPm=,o\:y=$sqXpi7a,t'9de'1Sd,RN-iR+mH+,:'mhp$'`?߮ /2YAfT$ok{iDի;ًnS^ɠZY=X:$qWQi>;bQ圖x$w^sgnt jA ;Jhм=}`W58gT/l0a'㊊H9ipt׹Y}tӦ^s Wv^*֋wBYձIw#Glߋ^(Cʚ\SoTRhE?ۛ<\uS^tATH` kZxG85%ޝ43!RDZ<aq!ϐ )c>?H6^w#H,C3g{\Iz? K[+(;p`3JQo-G:3]4hN$L7w5!XkkR~-J~(@1kw>q&J%gA~0ZLm5y9 d52Ą^Yd1q{~p[fXMG̤QK.0aEv#}Ssd@"k%I*u8bG!L qg/"׮< +O.u |2xDؔ+0>#䑌 x.Md aRůi-BaL?5T?#T˘rX*'03f-Ö,X^EVZڛB6m*Aahx`A],z*QiAm; bT/.Ol8昆\ ?" \:zKjL憝 I_YSvJslUY4=JAS+?BXD96ڻ@lSHa"Z^f+*.ի~g(t̷aR@> ᨨg y=SbUM5 Xྥ=U5ù{_3$1ɟff$>(%M\Ƃkw<} \xWSm[Dk.;d)-;)_q=Z-IF0q22 L2+B(,NίLxu-O/9EW#.ܢkp#t|oRzs_ϲF3ݶ΄fSO1s gxM-#iLěPH4XF՚1&-T^oYjABcp hUMFI%v#]B[dYMsYrf> vǍ~Rr?ڐsu{}bǦ8l K,z]c'gf}<+p\_0݃~L)}W-1nZ5 }8mLD/C@ZɟTy'1RYU,x~u-n$i*tG?Da$ccbi?BB}P/ c,kp[N ecFf$!]y.i4Zr). b _ӰC"?&IuB ;^N a&zcQq¬Y)hȲ_ߦZ9SQ۳q0ʄ8g5~9& ٜP6[ l [ EU-zoM.,MK ?LkCPݴt:r>xEFM2 Gty嫭 ^̅xkExIX[F0J0QEq-[|-*|iX3S@q( V oFz0AWu_mlf%P[MG$PQaWsHyc/"`&^|yqMVd:h:!;VaY"b޸5~|Hw$8n5>F [#å~S/}rIπWӫWGJE ʴ;|jTCRT#hUm/(MV~vygkKx^.{InV& Ձ$( Ǡ rMx+0 7= BaKNՐ-YԲl F5lxzдRa"&6#~w&_LyV*㔝-?)"72H i>d>BECLJkԔ[p|TjAU[x./>ƒ3W!e  `?"w4)GY"v<.0ČZѵOԳc_m%"%WoðS5aJ@oy1u`#]~IԲr)F=\B#*XCT=ï, u-Q~󵂒`r^u&U1@E{ 8ũՉdЄ+呸ն*N#7"GRJnqkxQ ~sު{,!pqΟ[?Nv^AXF%c MJ.Ws&R9.Ndto@V@oCi,Jpi$rLKG+ C=Q=,;Bid2J&={ntdrᡰhEH:V_5ހ*3z+Epbt'!Uc~]|8L%?oDL_F(K}\6i,Fy N,x=eO,[Ix7QA"]3ۤSx{=m#! in*%0-+82 %jd!յPtOYAhu's+(3N*d .6va fUG >c~d\yDcb/FGC+q"/l1}r M jp?~c]# r#qUK_epx3h5Zэ=ZS=LXV|VGТDNR7wK);S`.J>&ͪ _ea.W/~z78l}vՋ 2ӴPWaa7CR蹤 7$mM9;4m"g (伏ˠKwQ6>=ӿ؅\#C"Dgw\HkG{)*Cp$)490oyurݸ"/.Ǵ#DYrķڅDQqΓ(:CYЅta.:~L;Cy8+^v50gr ,w%hR?b^Spqt(u0w(Xw(m3Q`'z?kޡZ-E-ɺzOAF B)Gr= ,m84*d.Ik LK, 'ZSk{Sxq]-2P` 5s aArշ.LQ/T$#$+2Sex Vų1ŕ) yiάtt@`P $󳨇srߴ@/6?YgOEyr m.v{wa[Y 12Ra*O\%ʆNia!Ӛ 7۫Q/i9aSn_}$k||h(M_: 0 W%_RQܵ;2bj?:'R[S39p%y J[ }$Nl.ܐz?1/ 17B9vk碉qh@MjXHW7e:BC{iwtnGHnB4?}dWBReO$uIU8@s.3RM f"Ie5hι庲9ĨYW@.`KQug9!r\,`t,a<<ۓ#/+{Njmd)O$ ©Ck k\V/}zTl g.qcl"\HE[}d z'Zw3D3&m3 dYgIIwu07 -0KTHӈ37 >A݉k0,X G)Go]VxUE_$T\<4U-Γ@#\rXχC4/er&!Zv75r}NgFY94f(tãM/wps dI{0:e}6Z~1s`)طؓ|"$ńcdw3z*`E1wZaY zܬ+mIBjG>d젡XY.UoOd Xx|sP鳁7h?h%@c'P 4@?)~LtM"_־BPZGĦ+RU)J/Ю#㛷8Mv^G:g2~F+4luCwGH{Ⱥ/#[ siP h_lh;5q-c00eҰ6 HDu&٥vC%l10Ux0i.ziF|1v&&oP4lFJJ:=ciV(Y,~ 10`,s( qk4^>6,#a 0gݴGt'[ʞ濉E##_}׊^U[g,̄(r0CCTmoAmkF${n!]/ a=~!؉A+熇5Z!w*i]hVV^i P> twhIȈ\N.S<:QPܑs`x譭) psX*UIHbg4R!^2x9]ʿů8JwʼnW$N^Ge"2kuʒ+ KA` u%xvJ昡 \PLբ;@<\hUѱ t=tU?FʟISd=U߉KKzۊ%~vcX6sxյ^ /9@l^w^۔&QS:@XjKVUU=f5nh(](/ <<>aPs8v۸ɟ(47?elHyLv֑N:Hld^q ]uQ&m^^8I' du60Rҟfsr9 GҀ:-D`: ߩ(*LEt¢J ZV;߭ Q | 5_Rf!/{o;ֻc=В:3 խLXgvD)DTe0"`tr{[etnhU(:U.HzbxgA04Z>,ߓ3~B`DOY=UԸykd/GMBI;nCtȃq@n 'XWdkPYtm宾 TVqDɟ͹{ {",)cTv n!]@8F9J'T:VeȩcD8[[>T ,q [d 9 T?\@0qU" 6Fn`O6 w2N[G0yFѣ5֊R^@S sÌcAbNxR"`e'1uCYg_kH< $2c@ʿ ,~l31!MSd=oϘj,1ʲ\gz Bv2pwmrv?H2JчzMNѬlK*zNW Z=!ðpBʊ|`s[#J)S~mQZw7'V|%lP5i;?NW;VCե]voΤ2*4\s ­GС~zr29T[1ڦ=Lu<~f FB[2#*V(uGt-U/ ^="C*^_9BnTuH!O0 >ćsg8bnP]-4/J}덭,4E] #31H"I ܽH F1ԯȄGYpjk] %.4SB4׮t{Oè)MzU9Ù984Yiu6v{t,owjkq)fI]|_(߱sI V{;$X' dMjkoc{l [ Z"#'9p9mzH eQxS_ ܈NE^/:4'u:r +̟,FD7++i gΟz=[)< l?6wPݏ =t1V;252!U`j{8&n7uIQCOcZ.prՏe(P^Wڮ0޲:*RmLTpazz ڻ/t]7W𕸻M*T*k压Tv,\ϝKbՂZvgw)9/&rxs<}# J _M[>fO+z>g(uXqP#}GRgDtcv5{tMF7Hb$ZFYnO=<#Phg+qSANIAfqs2C_ߦ YX6mibH uii ^鱦ܺc}%-w1~E_ }Sto7H1c\Xļj{~'* Q^_ޥ`2FlzWT0brŶ\|ZRw|:sZcD_$Ϗ`qZT,2 m B!}NGXz‡ * pS~B 0dݴ~v ޖv3L^ZXVwYcrcg,7Dj~L\G&ٚ 2_O7̚CeۂƆ>:R yڑ.c<`CV|&3g%٩T$YQ +􋓛LvL\7L7Nzpv  вvesK^5.MꔳͻPzLN ^iբW뼢ȝKJAP l~`oK%bW1ng] ]y@ "r줲(< i*ϢP쓕 c5N M\&c:j6ړY#%~6="E0V*/_gB;3YNÀqQʨGPT7/\F +2JqKqt9lxA L1LB{Լw.gG=0*W_ucqPђ&S^ 7Ǒ!C9|mDmWx]K~~Eۇ19'N9:؂wGKm|{OO(ɚ򒌢c6@?bv[9zOx2dSޔ3bQu)98&zgb@62.)3XYvJ.~\iͨ+̦TyQrrȤ1sDwȤ|X`@P0yz_4DYSvjHcOep֍\ђd=3Oa=Yk7T:i\ Mc<.s2\lGz &ܚo2*әJ8 'ߚ2J֎-@g5?^X$ZQLj@k^Y0D!xH9yР$J- g\y/T|nN3SHz1ds, (.ar0 sͦgȺS@ q@k2w>9M(Ųw Н[}I9rSI5 kp~J ߛGF^vs˭(6D_?}P@Zv(`taG EA5^H]y>.PʯQ9es:4=$t=v/xɗ?*>-1L%7g` W,ˋuR^xte4b|RZ% }]P6:gr7?G4 mAc^k.SR;O+'ifۻGj[k^DaL0EJURvI[ϹYilJĸ._92TU SS9OeS=R{96;rM^͓ȄŪ"԰*mp1r?us2|lX~Pz@TEoj/k7^dH`Og4CvØ:6DjD;*Ӑ2fY8]RZX/X@ωg1(2M~|yzCw/xcS > p/}`jW&De?2zOq> XuRP v%ߺ9I)cV|%2pefm;,UMA*d0σ,qj&ƃncX_Ȥ/A%f\&r;&x2,n 1 Qwl,)>'{h(Pyi/=(~p a+mI >~@n^) D@aAuEil0(x\/(9|슴6#hߋ /~k=p 2_ ̻P L- Iժ Z"YsBr<un21~lRL|77+*xPx'fYώҙWfQ'P`CTѻ_];gq8^HÜs+rշD6BOl}oljraΥ0D!{1erѐ?~_!SKX9.Uo_Em{ h.n tsos_QAPd'/KbvY\YVd+{ߚK ǚOun62/]aP8KW蟲rKQ~&I1C HO 4W301{6hMmGz&XxlS;Yƹ*ȋW+ihp {.\f)W`Ҙ"XEQ?ڡ_h٭\U*.*(ʽܳO[;kS_nKnQ\ 3)Ir.5t' `ݠp]cP Ǖ᣽2)~ׄ'6R ܉.[O&JW;:?4F0mxeTfĒE2!!ˎC,9=<>4'}T*CxglpxadZcU`K;ImP4Χ5ɏd%V\dqNfp qlO$ZozƯfzMtF+T:B^- N_ɛ1MPyv,5?INAFe+/ =W0vd=tx!}cn).kkvVj8oNofJގ'AM%ި!FC}T|l *E2'6ŸDtXm=rɜ_7 \A)I2t!I?"O1*=u Nhm(\A߁uxEMV-0 e$NB+n_иpZ: i/8zp֩^1:+-VykS7 Aqz:jl;mq * Ώ5@-S#с93fh_2#LJ{k9iAݧFFIsO2E2 9aZZ/'_Ez+x2EB˴㐜7?ΛiR& G|OLjs4p)KaPRU^TJU3>ޙ=yUcM~ԕ%p4g,KD"Pv11"Vjq4ZQ3YsJ3XLoC,cq yܵQzwX`1(M?k7endstream endobj 6 0 obj << /Type /Font /Subtype /Type1 /Encoding 41 0 R /FirstChar 2 /LastChar 150 /Widths 45 0 R /BaseFont /NVAEDF+NimbusRomNo9L-Regu /FontDescriptor 4 0 R >> endobj 4 0 obj << /Ascent 678 /CapHeight 651 /Descent -216 /FontName /NVAEDF+NimbusRomNo9L-Regu /ItalicAngle 0 /StemV 85 /XHeight 450 /FontBBox [-168 -281 1000 924] /Flags 4 /CharSet (/fi/fl/exclam/ampersand/quoteright/parenleft/parenright/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/colon/semicolon/A/B/C/D/E/F/H/I/K/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/quotedblleft/quotedblright/endash) /FontFile 5 0 R >> endobj 45 0 obj [556 556 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 333 0 0 0 0 778 333 333 333 0 564 250 333 250 278 500 500 500 500 500 500 500 500 0 0 278 278 0 0 0 0 0 722 667 667 722 611 556 0 722 333 0 722 0 889 722 722 556 0 667 556 611 722 722 944 722 722 611 0 0 0 0 0 0 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 444 444 0 500 ] endobj 7 0 obj << /Type /Pages /Count 6 /Parent 46 0 R /Kids [2 0 R 9 0 R 12 0 R 24 0 R 27 0 R 33 0 R] >> endobj 38 0 obj << /Type /Pages /Count 1 /Parent 46 0 R /Kids [36 0 R] >> endobj 46 0 obj << /Type /Pages /Count 7 /Kids [7 0 R 38 0 R] >> endobj 47 0 obj << /Type /Catalog /Pages 46 0 R >> endobj 48 0 obj << /Producer (pdfeTeX-1.21a) /Creator (TeX) /CreationDate (D:20101215172212-05'00') /PTEX.Fullbanner (This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) kpathsea version 3.5.4) >> endobj xref 0 49 0000000000 65535 f 0000000336 00000 n 0000000222 00000 n 0000000009 00000 n 0000073825 00000 n 0000055260 00000 n 0000073658 00000 n 0000074764 00000 n 0000000702 00000 n 0000000587 00000 n 0000000404 00000 n 0000002873 00000 n 0000002756 00000 n 0000000770 00000 n 0000054513 00000 n 0000039562 00000 n 0000054344 00000 n 0000039073 00000 n 0000028920 00000 n 0000038906 00000 n 0000028243 00000 n 0000014041 00000 n 0000028069 00000 n 0000005684 00000 n 0000005567 00000 n 0000002978 00000 n 0000007997 00000 n 0000007880 00000 n 0000005777 00000 n 0000011838 00000 n 0000010453 00000 n 0000011681 00000 n 0000009609 00000 n 0000009492 00000 n 0000008102 00000 n 0000010372 00000 n 0000010254 00000 n 0000009726 00000 n 0000074870 00000 n 0000012068 00000 n 0000012045 00000 n 0000012154 00000 n 0000028621 00000 n 0000039339 00000 n 0000054889 00000 n 0000074301 00000 n 0000074944 00000 n 0000075009 00000 n 0000075060 00000 n trailer << /Size 49 /Root 47 0 R /Info 48 0 R /ID [<034A7B37C006F8EA3CF00AF1241B4FAF> <034A7B37C006F8EA3CF00AF1241B4FAF>] >> startxref 75263 %%EOF king-2.21.120420/chiropraxis/doc/work/0000755000000000000000000000000011677361404015706 5ustar rootrootking-2.21.120420/chiropraxis/doc/work/tools-manual.tex0000644000000000000000000002231511531212710021026 0ustar rootroot%% LyX 1.6.1 created this file. For more info, see http://www.lyx.org/. %% Do not edit unless you really know what you are doing. \documentclass[english]{report} \usepackage{mathptmx} \usepackage{helvet} \usepackage{courier} \usepackage[T1]{fontenc} \usepackage[latin9]{inputenc} \setcounter{secnumdepth}{3} \setcounter{tocdepth}{3} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands. %% Because html converters don't know tabularnewline \providecommand{\tabularnewline}{\\} \usepackage{babel} \begin{document} \vfill{} \title{The Chiropraxis tools manual} \maketitle \vfill{} \author{Ian W. Davis} \chapter{The Tools} \section{BACKRUB Tool: Protein chiropraxis\label{backrub-tool}} The BACKRUB tool is used to adjust short segments of protein backbone without disturbing the surrounding structure. It allows you select one residue, and rotate it around the axis between its neighboring C-alphas. Using BACKRUB requires that \texttt{chiropraxis.jar} be present in the \texttt{plugins/} folder. Create a backrub by control-clicking the alpha carbon of the central residue. To use the dial control, click and drag the pointer to the desired value. For finer control you can shift-drag along an imaginary slider (this behavior is somewhat like the virtual dials in O). To reset the dial to its starting value, double click the dial face. The dial can also be adjusted from the graphics window using the mouse wheel or arrow keys; see below. The BACKRUB panel provides feedback on the geometric quality of the current model, displaying residues names, deviation of the tau angle (N-CA-C) from ideality, and the position of the residue on the Ramachandran plot (phi, psi, and favored/allowed/outlier). Deviant geometry is highlighted in red. \emph{BACKRUB is described in the following publication: I.W. Davis, W.B. Arendall III, D.C. Richardson, and J.S. Richardson (2006) \textquotedbl{}The backrub motion: How protein backbone shrugs when a sidechain dances\textquotedbl{} Structure 14, 265-274.} \subsection{Command reference} \noindent \begin{center} \begin{tabular}{|c|c|} \hline \multicolumn{2}{|c|}{Mouse clicks}\tabularnewline \hline \hline Normal & Mark and identify point; make measurement (pick)\tabularnewline \hline With Shift & Center on selected point (pickcenter)\tabularnewline \hline With Ctrl & Select residue for BACKRUB (on a C-alpha); clear current selection (elsewhere)\tabularnewline \hline With Shift+Ctrl & -\tabularnewline \hline \end{tabular} \par\end{center} \noindent \begin{center} \begin{tabular}{|c|c|} \hline \multicolumn{2}{|c|}{Mouse drags}\tabularnewline \hline \hline Normal & Rotate around X and Y axes; Z-rotate (pinwheel) near top of screen\tabularnewline \hline With Shift & Adjust zoom (up/down); Adjust clipping (left/right) \tabularnewline \hline With Ctrl & Translate in X-Y plane (flatland); Z-translate near top of screen\tabularnewline \hline With Shift+Ctrl & Rotate around Y axis only\tabularnewline \hline \end{tabular} \par\end{center} \noindent \begin{center} \begin{tabular}{|c|c|} \hline \multicolumn{2}{|c|}{Mouse wheel / Up \& Down arrow keys}\tabularnewline \hline \hline Normal & Adjust dial (angle of rotation)\tabularnewline \hline With Shift & Adjust clipping\tabularnewline \hline With Ctrl & Adjust zoom\tabularnewline \hline With Shift+Ctrl & -\tabularnewline \hline \end{tabular} \par\end{center} \section{C-alpha Hinges\label{hinges-tool}} Hinges is the generalized version of BACKRUB. It allows you to select any continuous region of backbone that joins two alpha carbons, and then rotate that segment of backbone around an axis drawn between those C-alphas. Individual peptides can also be rotated. Create a hinge by control-clicking the two alpha carbons that act as its endpoints or anchors. Regions longer than two peptides (\emph{i.e.}, what BACKRUB handles) are seldom useful in fitting structures. Thus, this tool has been largely superceded by BACKRUB. \section{Shear Tool: Helical winding plus unwinding \label{shear-tool}} The shear tool can be used to modify backbone, most commonly helix, in a manner almost completely orthogonal to the backrub. A shear shifts three peptides instead of two like a backrub, and moves the central peptide nearly parallel to the chain direction rather than perpendicular to it. Use Ctrl+Click (a.k.a. middle-click) to select a residue; it, its preceding residue, and its two following residues will become the active {}``molten'' state. Next, drag the primary shear dial for the main motion, then optionally drag the three peptide rotation dials to alleviate some strain. Functionality is generally similar to the backrub tool. \emph{Authored by Daniel Keedy} \emph{(daniel.keedy AT duke.edu)} \section{Tweak Phi/Psi: Visualizing possible backbone changes \label{phisi-tool}} The tweak phi/psi tool is useful for slightly altering the backbone dihedrals phi and psi. Use Ctrl+Click (a.k.a. middle-click) to select a residue and its adjacent region as the active {}``molten'' state. The length of the active region can be customized by entering a number of residues in the box and pressing enter. Next, drag the phi/psi dials to rotate the molten region around either the phi or psi axis. Note that this tool makes no attempt to close the resulting chain break or to alleviate the steric clashes it usually introduces, and thus should not be employed as a fitting tool. However, it can be useful for visualizing the local effects of small changes in phi/psi and simply building intuition. \emph{Authored by Daniel Keedy} \emph{(daniel.keedy AT duke.edu)} \section{Sidechain Rotator: Refitting protein models\label{scrot-tool}} The Sidechain Rotation tool is useful for doing interactive refitting of protein models in conjunction with the Hinges tool and the model manager. Use Ctrl+Click (a.k.a. middle-click) to select a sidechain to rotate, then pick from a list of predefined rotamers or set the angles by hand using the dials. The rotamericity of the current sidechain is monitored in the bottom right corner; it indicates how frequently (if ever!) the current conformation is found in well-determined structures. To use the dial control, click and drag the pointer to the desired value. For finer control you can shift-drag along an imaginary slider (this behavior is somewhat like the virtual dials in O). To reset the dial to its starting value, double click the dial face. Sidechain Rotator and the Hinges tool play well together: you can use both on the same residue(s) at the same time. It's often easiest to establish which sidechains will be rotatable before beginning to move the backbone, but it's possible to establish the moving parts in any order. \section{Sidechain Mutator: Redesigning protein models\label{scmut-tool}} The Sidechain Mutation tool is useful for doing interactive refitting of protein models in conjunction with the Hinges and Rotator tools and the model manager. Use Ctrl+Click (a.k.a. middle-click) to select a sidechain to mutate, then pick from a list of known amino acid types. If you select histidine, you will also be prompted to choose a protonation state. Sidechain Mutator plays well with the other tools, but you cannot mutate the model while any part of it is mobile ({}``molten''). Thus, it's often easiest to make mutations first, and then refit the new sequence. \section{Model Manager: Editing a macromolecular model\label{modelman-plugin}} This facility is for doing molecular modeling based on some starting model, usually a PDB file. The Model Manager handles opening and saving these files, and is required for the operation of the following tools: \begin{itemize} \item Backrub \item C-alpha hinges \item Shear \item Tweak phi/psi \item Sidechain rotator \item Sidechain mutator \end{itemize} The model manager also tracks the changes made to the model and allows near-unlimited undo. In addition, it provides access to dynamic visualizations, like Probe dots and NOE constraints. Using this feature requires that your OS can find Probe -- \emph{i.e.}, that either Probe resides in the same directory as \texttt{king.jar} and is named either \texttt{probe} or \texttt{probe.exe}; or that Probe is somewhere on your PATH and is named \texttt{probe} or \texttt{probe.exe}. The same is true of \texttt{noe-display}. There are several special symbols that can be inserted into the Probe and NOE command lines. Their meanings are as follows: \begin{description} \item [{\{pdbfile\}}] The fully-qualified name of the {}``base'' PDB file; \emph{i.e.} the one with all changes except the currently molten ones. (Those are piped in via standard input.) \item [{\{molten\}}] The list of molten residues, separated by commas: 1, 2, 3, ... \item [{\{center\}}] The coordinates of the current center of view, in real space: x, y, z. This can be used for the \texttt{within} \emph{distance} \texttt{of} \emph{x, y, z} selection statement. Note that visualizations aren't automatically updated when the center of view changes. \end{description} \chapter{Copyright \& acknowledgments} \section{Copyright} The Chiropraxis code and all its associated original resources and documentation are copyright (C) 2002-2010 by Ian W. Davis, Daniel A. Keedy, and Vincent B. Chen. \section{Revision status} This manual was last updated 1 September 2010 by DAK for Chiropraxis version 1.07. \end{document} king-2.21.120420/chiropraxis/doc/work/tools-manual.lyx0000644000000000000000000004450411531212710021046 0ustar rootroot#LyX 1.6.1 created this file. For more info see http://www.lyx.org/ \lyxformat 345 \begin_document \begin_header \textclass report \use_default_options false \language english \inputencoding auto \font_roman times \font_sans helvet \font_typewriter courier \font_default_family default \font_sc false \font_osf false \font_sf_scale 100 \font_tt_scale 100 \graphics default \paperfontsize default \spacing single \use_hyperref false \papersize default \use_geometry false \use_amsmath 1 \use_esint 0 \cite_engine basic \use_bibtopic false \paperorientation portrait \secnumdepth 3 \tocdepth 3 \paragraph_separation indent \defskip medskip \quotes_language english \papercolumns 1 \papersides 1 \paperpagestyle default \tracking_changes false \output_changes false \author "" \author "" \end_header \begin_body \begin_layout Standard \begin_inset VSpace vfill \end_inset \end_layout \begin_layout Title The Chiropraxis tools manual \end_layout \begin_layout Standard \begin_inset VSpace vfill \end_inset \end_layout \begin_layout Author Ian W. Davis \end_layout \begin_layout Chapter The Tools \end_layout \begin_layout Section BACKRUB Tool: Protein chiropraxis \begin_inset CommandInset label LatexCommand label name "backrub-tool" \end_inset \end_layout \begin_layout Standard The BACKRUB tool is used to adjust short segments of protein backbone without disturbing the surrounding structure. It allows you select one residue, and rotate it around the axis between its neighboring C-alphas. Using BACKRUB requires that \family typewriter chiropraxis.jar \family default be present in the \family typewriter plugins/ \family default folder. \end_layout \begin_layout Standard Create a backrub by control-clicking the alpha carbon of the central residue. To use the dial control, click and drag the pointer to the desired value. For finer control you can shift-drag along an imaginary slider (this behavior is somewhat like the virtual dials in O). To reset the dial to its starting value, double click the dial face. The dial can also be adjusted from the graphics window using the mouse wheel or arrow keys; see below. \end_layout \begin_layout Standard The BACKRUB panel provides feedback on the geometric quality of the current model, displaying residues names, deviation of the tau angle (N-CA-C) from ideality, and the position of the residue on the Ramachandran plot (phi, psi, and favored/allowed/outlier). Deviant geometry is highlighted in red. \end_layout \begin_layout Standard \emph on BACKRUB is described in the following publication: I.W. Davis, W.B. Arendall III, D.C. Richardson, and J.S. Richardson (2006) "The backrub motion: How protein backbone shrugs when a sidechain dances" Structure 14, 265-274. \end_layout \begin_layout Subsection Command reference \end_layout \begin_layout Standard \noindent \align center \begin_inset Tabular \begin_inset Text \begin_layout Plain Layout Mouse clicks \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Normal \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Mark and identify point; make measurement (pick) \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Shift \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Center on selected point (pickcenter) \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Ctrl \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout \family roman \series medium \shape up \size normal \emph off \bar no \noun off \color none Select \family default \series default \shape default \emph default \bar default \size default \noun default \color inherit residue for BACKRUB \color none \family roman \series medium \shape up \size normal \emph off \bar no \noun off ( \family default \series default \shape default \size default \emph default \bar default \noun default \color inherit o \family roman \series medium \shape up \size normal \emph off \bar no \noun off \color none n a C-alpha \family default \series default \shape default \size default \emph default \bar default \noun default \color inherit ); clear current selection (elsewhere) \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Shift+Ctrl \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout - \end_layout \end_inset \end_inset \end_layout \begin_layout Standard \noindent \align center \begin_inset Tabular \begin_inset Text \begin_layout Plain Layout Mouse drags \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Normal \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Rotate around X and Y axes; Z-rotate (pinwheel) near top of screen \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Shift \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Adjust zoom (up/down); Adjust clipping (left/right) \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Ctrl \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Translate in X-Y plane (flatland); Z-translate near top of screen \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Shift+Ctrl \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Rotate around Y axis only \end_layout \end_inset \end_inset \end_layout \begin_layout Standard \noindent \align center \begin_inset Tabular \begin_inset Text \begin_layout Plain Layout Mouse wheel / Up & Down arrow keys \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Normal \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Adjust dial (angle of rotation) \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Shift \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Adjust clipping \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Ctrl \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout Adjust zoom \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout With Shift+Ctrl \end_layout \end_inset \begin_inset Text \begin_layout Plain Layout - \end_layout \end_inset \end_inset \end_layout \begin_layout Section C-alpha Hinges \begin_inset CommandInset label LatexCommand label name "hinges-tool" \end_inset \end_layout \begin_layout Standard Hinges is the generalized version of BACKRUB. It allows you to select any continuous region of backbone that joins two alpha carbons, and then rotate that segment of backbone around an axis drawn between those C-alphas. Individual peptides can also be rotated. Create a hinge by control-clicking the two alpha carbons that act as its endpoints or anchors. \end_layout \begin_layout Standard Regions longer than two peptides ( \emph on i.e. \emph default , what BACKRUB handles) are seldom useful in fitting structures. Thus, this tool has been largely superceded by BACKRUB. \end_layout \begin_layout Section Shear Tool: Helical winding plus unwinding \begin_inset CommandInset label LatexCommand label name "shear-tool" \end_inset \end_layout \begin_layout Standard The shear tool can be used to modify backbone, most commonly helix, in a manner almost completely orthogonal to the backrub. A shear shifts three peptides instead of two like a backrub, and moves the central peptide nearly parallel to the chain direction rather than perpendicular to it. Use Ctrl+Click (a.k.a. middle-click) to select a residue; it, its preceding residue, and its two following residues will become the active \begin_inset Quotes eld \end_inset molten \begin_inset Quotes erd \end_inset state. Next, drag the primary shear dial for the main motion, then optionally drag the three peptide rotation dials to alleviate some strain. Functionality is generally similar to the backrub tool. \end_layout \begin_layout Standard \emph on Authored by Daniel Keedy \emph default \emph on (daniel.keedy AT duke.edu) \end_layout \begin_layout Section Tweak Phi/Psi: Visualizing possible backbone changes \begin_inset CommandInset label LatexCommand label name "phisi-tool" \end_inset \end_layout \begin_layout Standard The tweak phi/psi tool is useful for slightly altering the backbone dihedrals phi and psi. Use Ctrl+Click (a.k.a. middle-click) to select a residue and its adjacent region as the active \begin_inset Quotes eld \end_inset molten \begin_inset Quotes erd \end_inset state. The length of the active region can be customized by entering a number of residues in the box and pressing enter. Next, drag the phi/psi dials to rotate the molten region around either the phi or psi axis. Note that this tool makes no attempt to close the resulting chain break or to alleviate the steric clashes it usually introduces, and thus should not be employed as a fitting tool. However, it can be useful for visualizing the local effects of small changes in phi/psi and simply building intuition. \end_layout \begin_layout Standard \emph on Authored by Daniel Keedy \emph default \emph on (daniel.keedy AT duke.edu) \end_layout \begin_layout Section Sidechain Rotator: Refitting protein models \begin_inset CommandInset label LatexCommand label name "scrot-tool" \end_inset \end_layout \begin_layout Standard The Sidechain Rotation tool is useful for doing interactive refitting of protein models in conjunction with the Hinges tool and the model manager. Use Ctrl+Click (a.k.a. middle-click) to select a sidechain to rotate, then pick from a list of predefined rotamers or set the angles by hand using the dials. The rotamericity of the current sidechain is monitored in the bottom right corner; it indicates how frequently (if ever!) the current conformation is found in well-determined structures. \end_layout \begin_layout Standard To use the dial control, click and drag the pointer to the desired value. For finer control you can shift-drag along an imaginary slider (this behavior is somewhat like the virtual dials in O). To reset the dial to its starting value, double click the dial face. \end_layout \begin_layout Standard Sidechain Rotator and the Hinges tool play well together: you can use both on the same residue(s) at the same time. It's often easiest to establish which sidechains will be rotatable before beginning to move the backbone, but it's possible to establish the moving parts in any order. \end_layout \begin_layout Section Sidechain Mutator: Redesigning protein models \begin_inset CommandInset label LatexCommand label name "scmut-tool" \end_inset \end_layout \begin_layout Standard The Sidechain Mutation tool is useful for doing interactive refitting of protein models in conjunction with the Hinges and Rotator tools and the model manager. Use Ctrl+Click (a.k.a. middle-click) to select a sidechain to mutate, then pick from a list of known amino acid types. If you select histidine, you will also be prompted to choose a protonation state. \end_layout \begin_layout Standard Sidechain Mutator plays well with the other tools, but you cannot mutate the model while any part of it is mobile ( \begin_inset Quotes eld \end_inset molten \begin_inset Quotes erd \end_inset ). Thus, it's often easiest to make mutations first, and then refit the new sequence. \end_layout \begin_layout Section Model Manager: Editing a macromolecular model \begin_inset CommandInset label LatexCommand label name "modelman-plugin" \end_inset \end_layout \begin_layout Standard This facility is for doing molecular modeling based on some starting model, usually a PDB file. The Model Manager handles opening and saving these files, and is required for the operation of the following tools: \end_layout \begin_layout Itemize Backrub \end_layout \begin_layout Itemize C-alpha hinges \end_layout \begin_layout Itemize Shear \end_layout \begin_layout Itemize Tweak phi/psi \end_layout \begin_layout Itemize Sidechain rotator \end_layout \begin_layout Itemize Sidechain mutator \end_layout \begin_layout Standard The model manager also tracks the changes made to the model and allows near-unli mited undo. In addition, it provides access to dynamic visualizations, like Probe dots and NOE constraints. Using this feature requires that your OS can find Probe -- \emph on i.e. \emph default , that either Probe resides in the same directory as \family typewriter king.jar \family default and is named either \family typewriter probe \family default or \family typewriter probe.exe \family default ; or that Probe is somewhere on your PATH and is named \family typewriter probe \family default or \family typewriter probe.exe \family default . The same is true of \family typewriter noe-display \family default . \end_layout \begin_layout Standard There are several special symbols that can be inserted into the Probe and NOE command lines. Their meanings are as follows: \end_layout \begin_layout Description {pdbfile} The fully-qualified name of the \begin_inset Quotes eld \end_inset base \begin_inset Quotes erd \end_inset PDB file; \emph on i.e. \emph default the one with all changes except the currently molten ones. (Those are piped in via standard input.) \end_layout \begin_layout Description {molten} The list of molten residues, separated by commas: 1, 2, 3, ... \end_layout \begin_layout Description {center} The coordinates of the current center of view, in real space: x, y, z. This can be used for the \family typewriter within \family default \emph on distance \emph default \family typewriter of \family default \emph on x, y, z \emph default selection statement. Note that visualizations aren't automatically updated when the center of view changes. \end_layout \begin_layout Chapter Copyright & acknowledgments \end_layout \begin_layout Section Copyright \end_layout \begin_layout Standard The Chiropraxis code and all its associated original resources and documentation are copyright (C) 2002-2010 by Ian W. Davis, Daniel A. Keedy, and Vincent B. Chen. \end_layout \begin_layout Section Revision status \end_layout \begin_layout Standard This manual was last updated 1 September 2010 by DAK for Chiropraxis version 1.07. \end_layout \end_body \end_document